From 9a98d32366cd0c826fb33637cae89a495251ad73 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sat, 1 Jan 2022 04:18:41 -0500 Subject: [PATCH 001/594] Added GLSL version override interface and CLI This change list allows a user to override the GLSL version from the command line or through the C and C++ interfaces. This will override the override happens in ProcessDeferred() before DeduceVersionProfile() so the process should still error out if the version is insufficient for the shader code. - Added --glsl-version to CLI. - Added parameter to route glslVersion as override version to preprocessor and parse functions to C++ interface. - Updated C interface with function to override GLSL version. --- StandAlone/StandAlone.cpp | 54 +++++++++++++++++++++- glslang/CInterface/glslang_c_interface.cpp | 7 +++ glslang/Include/glslang_c_interface.h | 1 + glslang/MachineIndependent/ShaderLang.cpp | 21 ++++++--- glslang/Public/ShaderLang.h | 17 +++---- 5 files changed, 83 insertions(+), 17 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index f5ce6317f1..fe33722c8f 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -191,6 +191,9 @@ glslang::EShTargetClientVersion ClientVersion; // not valid until Client i glslang::EShTargetLanguage TargetLanguage = glslang::EShTargetNone; glslang::EShTargetLanguageVersion TargetVersion; // not valid until TargetLanguage is set +// GLSL version +int GlslVersion = 0; // GLSL version specified on CLI, overrides #version in shader source + std::vector Processes; // what should be recorded by OpModuleProcessed, or equivalent // Per descriptor-set binding base data @@ -653,6 +656,48 @@ void ProcessArguments(std::vector>& workItem lowerword == "flatten-uniform-array" || lowerword == "fua") { Options |= EOptionFlattenUniformArrays; + } else if (lowerword == "glsl-version") { + if (argc > 1) { + if (strcmp(argv[1], "100") == 0) { + GlslVersion = 100; + } else if (strcmp(argv[1], "110") == 0) { + GlslVersion = 110; + } else if (strcmp(argv[1], "120") == 0) { + GlslVersion = 120; + } else if (strcmp(argv[1], "130") == 0) { + GlslVersion = 130; + } else if (strcmp(argv[1], "140") == 0) { + GlslVersion = 140; + } else if (strcmp(argv[1], "150") == 0) { + GlslVersion = 150; + } else if (strcmp(argv[1], "300es") == 0) { + GlslVersion = 300; + } else if (strcmp(argv[1], "310es") == 0) { + GlslVersion = 310; + } else if (strcmp(argv[1], "320es") == 0) { + GlslVersion = 320; + } else if (strcmp(argv[1], "330") == 0) { + GlslVersion = 330; + } else if (strcmp(argv[1], "400") == 0) { + GlslVersion = 400; + } else if (strcmp(argv[1], "410") == 0) { + GlslVersion = 410; + } else if (strcmp(argv[1], "420") == 0) { + GlslVersion = 420; + } else if (strcmp(argv[1], "430") == 0) { + GlslVersion = 430; + } else if (strcmp(argv[1], "440") == 0) { + GlslVersion = 440; + } else if (strcmp(argv[1], "450") == 0) { + GlslVersion = 450; + } else if (strcmp(argv[1], "460") == 0) { + GlslVersion = 460; + } else + Error("--glsl-version expected one of: 100, 110, 120, 130, 140, 150,\n" + "300es, 310es, 320es, 330\n" + "400, 410, 420, 430, 440, 450, 460"); + } + bumpArg(); } else if (lowerword == "hlsl-offsets") { Options |= EOptionHlslOffsets; } else if (lowerword == "hlsl-iomap" || @@ -1317,7 +1362,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) #ifndef GLSLANG_WEB if (Options & EOptionOutputPreprocessed) { std::string str; - if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, messages, &str, includer)) { + if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, GlslVersion, false, messages, &str, includer)) { PutsIfNonEmpty(str.c_str()); } else { CompileFailed = true; @@ -1328,7 +1373,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } #endif - if (! shader->parse(&Resources, defaultVersion, false, messages, includer)) + if (! shader->parse(&Resources, defaultVersion, GlslVersion, false, messages, includer)) CompileFailed = true; program.addShader(shader); @@ -1850,6 +1895,11 @@ void usage() " -dumpfullversion | -dumpversion print bare major.minor.patchlevel\n" " --flatten-uniform-arrays | --fua flatten uniform texture/sampler arrays to\n" " scalars\n" + " --glsl-version {100 | 110 | 120 | 130 | 140 | 150 |\n" + " 300es | 310es | 320es | 330\n" + " 400 | 410 | 420 | 430 | 440 | 450 | 460}\n" + " set GLSL version, overrides #version\n" + " in shader sourcen\n" " --hlsl-offsets allow block offsets to follow HLSL rules\n" " works independently of source language\n" " --hlsl-iomap perform IO mapping in HLSL register space\n" diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index da1cd145d1..8f2b9b374c 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -57,6 +57,7 @@ static_assert(sizeof(glslang_resource_t) == sizeof(TBuiltInResource), ""); typedef struct glslang_shader_s { glslang::TShader* shader; std::string preprocessedGLSL; + int glslVersion; } glslang_shader_t; typedef struct glslang_program_s { @@ -373,7 +374,11 @@ GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int opt if (options & GLSLANG_SHADER_VULKAN_RULES_RELAXED) { shader->shader->setEnvInputVulkanRulesRelaxed(); } +} +GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version) +{ + shader->glslVersion = version; } GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) @@ -390,6 +395,7 @@ GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const gls input->default_version, c_shader_profile(input->default_profile), input->force_default_version_and_profile != 0, + shader->glslVersion, input->forward_compatible != 0, (EShMessages)c_shader_messages(input->messages), &shader->preprocessedGLSL, @@ -405,6 +411,7 @@ GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_ return shader->shader->parse( reinterpret_cast(input->resource), input->default_version, + shader->glslVersion, input->forward_compatible != 0, (EShMessages)c_shader_messages(input->messages) ); diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 14ab6acbc2..a98a7e176d 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -227,6 +227,7 @@ GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader); GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base); GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set); GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options); // glslang_shader_options_t +GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version); GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index bcf2c33ff7..434de01b42 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -813,6 +813,7 @@ bool ProcessDeferred( // set version/profile to defaultVersion/defaultProfile regardless of the #version // directive in the source code bool forceDefaultVersionAndProfile, + int overrideVersion, // overrides version specified by #verison or default version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate, // returned tree, etc. @@ -900,6 +901,9 @@ bool ProcessDeferred( version = defaultVersion; profile = defaultProfile; } + if (source == EShSourceGlsl && overrideVersion != 0) { + version = overrideVersion; + } bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage, versionNotFirst, defaultVersion, source, version, profile, spvVersion); @@ -1275,6 +1279,7 @@ bool PreprocessDeferred( int defaultVersion, // use 100 for ES environment, 110 for desktop EProfile defaultProfile, bool forceDefaultVersionAndProfile, + int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TShader::Includer& includer, @@ -1285,7 +1290,7 @@ bool PreprocessDeferred( DoPreprocessing parser(outputString); return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, false, includer, "", environment); } @@ -1314,6 +1319,7 @@ bool CompileDeferred( int defaultVersion, // use 100 for ES environment, 110 for desktop EProfile defaultProfile, bool forceDefaultVersionAndProfile, + int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate,// returned tree, etc. @@ -1324,7 +1330,7 @@ bool CompileDeferred( DoFullParse parser; return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, true, includer, sourceEntryPointName, environment); } @@ -1477,6 +1483,7 @@ int ShCompile( const TBuiltInResource* resources, int /*debugOptions*/, int defaultVersion, // use 100 for ES environment, 110 for desktop + int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages // warnings/errors/AST; things to print out ) @@ -1498,7 +1505,7 @@ int ShCompile( TIntermediate intermediate(compiler->getLanguage()); TShader::ForbidIncluder includer; bool success = CompileDeferred(compiler, shaderStrings, numStrings, inputLengths, nullptr, - "", optLevel, resources, defaultVersion, ENoProfile, false, + "", optLevel, resources, defaultVersion, ENoProfile, false, overrideVersion, forwardCompatible, messages, intermediate, includer); // @@ -1897,7 +1904,7 @@ void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlatt // // Returns true for success. // -bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, +bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, int overrideVersion, bool forwardCompatible, EShMessages messages, Includer& includer) { if (! InitThread()) @@ -1909,7 +1916,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion return CompileDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, *intermediate, includer, sourceEntryPointName, &environment); } @@ -1922,7 +1929,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion // is not an officially supported or fully working path. bool TShader::preprocess(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, - bool forceDefaultVersionAndProfile, + bool forceDefaultVersionAndProfile, int overrideVersion, bool forwardCompatible, EShMessages message, std::string* output_string, Includer& includer) @@ -1936,7 +1943,7 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources, return PreprocessDeferred(compiler, strings, numStrings, lengths, stringNames, preamble, EShOptNone, builtInResources, defaultVersion, - defaultProfile, forceDefaultVersionAndProfile, + defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, message, includer, *intermediate, output_string, &environment); } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 7e5d2cd3e5..cdd321e415 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -334,6 +334,7 @@ GLSLANG_EXPORT int ShCompile( const TBuiltInResource *resources, int debugOptions, int defaultVersion = 110, // use 100 for ES environment, overridden by #version in shader + int overrideVersion = 0, // overrides #version in GLSL shader, use 0 to disable bool forwardCompatible = false, // give errors for use of deprecated features EShMessages messages = EShMsgDefault // warnings and errors ); @@ -647,33 +648,33 @@ class TShader { GLSLANG_EXPORT bool parse( const TBuiltInResource*, int defaultVersion, EProfile defaultProfile, - bool forceDefaultVersionAndProfile, bool forwardCompatible, + bool forceDefaultVersionAndProfile, int overrideVersion, bool forwardCompatible, EShMessages, Includer&); - bool parse(const TBuiltInResource* res, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, + bool parse(const TBuiltInResource* res, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, int overrideVersion, bool forwardCompatible, EShMessages messages) { TShader::ForbidIncluder includer; - return parse(res, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, forwardCompatible, messages, includer); + return parse(res, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, includer); } // Equivalent to parse() without a default profile and without forcing defaults. - bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages) + bool parse(const TBuiltInResource* builtInResources, int defaultVersion, int overrideVersion, bool forwardCompatible, EShMessages messages) { - return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages); + return parse(builtInResources, defaultVersion, ENoProfile, false, overrideVersion, forwardCompatible, messages); } - bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages, + bool parse(const TBuiltInResource* builtInResources, int defaultVersion, int overrideVersion, bool forwardCompatible, EShMessages messages, Includer& includer) { - return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages, includer); + return parse(builtInResources, defaultVersion, ENoProfile, false, overrideVersion, forwardCompatible, messages, includer); } // NOTE: Doing just preprocessing to obtain a correct preprocessed shader string // is not an officially supported or fully working path. GLSLANG_EXPORT bool preprocess( const TBuiltInResource* builtInResources, int defaultVersion, - EProfile defaultProfile, bool forceDefaultVersionAndProfile, + EProfile defaultProfile, bool forceDefaultVersionAndProfile, int overrideVersion, bool forwardCompatible, EShMessages message, std::string* outputString, Includer& includer); From 356928a96bc557873623ab4d653d3161580ee8de Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sat, 1 Jan 2022 04:44:06 -0500 Subject: [PATCH 002/594] Updated gtests preprocess()and parse() calls with arg for new parameter --- gtests/TestFixture.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 2b057dcb0e..5cd6614d00 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -200,7 +200,7 @@ class GlslangTest : public GT { if (!entryPointName.empty()) shader->setEntryPoint(entryPointName.c_str()); return shader->parse( (resources ? resources : &glslang::DefaultTBuiltInResource), - defaultVersion, isForwardCompatible, controls); + defaultVersion, 0, isForwardCompatible, controls); } // Compiles and links the given source |code| of the given shader @@ -635,7 +635,7 @@ class GlslangTest : public GT { glslang::TShader::ForbidIncluder includer; const bool success = shader.preprocess( &glslang::DefaultTBuiltInResource, defaultVersion, defaultProfile, - forceVersionProfile, isForwardCompatible, (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), + forceVersionProfile, 0, isForwardCompatible, (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), &ppShader, includer); std::string log = shader.getInfoLog(); From 1f10dddac44af47ed45c158837669c8cae5180fc Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Sat, 1 Jan 2022 19:02:14 -0500 Subject: [PATCH 003/594] Revisions to GLSL version override - Reverted public function interface changes for C++. - Added override member variable to TShader. - Added accessor TShader::setOverrideVersion. - Reverted changes to tests. --- StandAlone/StandAlone.cpp | 6 ++++-- glslang/CInterface/glslang_c_interface.cpp | 5 +---- glslang/MachineIndependent/ShaderLang.cpp | 14 +++++++++----- glslang/Public/ShaderLang.h | 21 ++++++++++++--------- gtests/TestFixture.h | 4 ++-- 5 files changed, 28 insertions(+), 22 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index fe33722c8f..1cdb23a484 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1261,6 +1261,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setSourceEntryPoint(sourceEntryPointName); } + shader->setOverrideVersion(GlslVersion); + std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count); PreambleString = ""; @@ -1362,7 +1364,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) #ifndef GLSLANG_WEB if (Options & EOptionOutputPreprocessed) { std::string str; - if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, GlslVersion, false, messages, &str, includer)) { + if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, messages, &str, includer)) { PutsIfNonEmpty(str.c_str()); } else { CompileFailed = true; @@ -1373,7 +1375,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } #endif - if (! shader->parse(&Resources, defaultVersion, GlslVersion, false, messages, includer)) + if (! shader->parse(&Resources, defaultVersion, false, messages, includer)) CompileFailed = true; program.addShader(shader); diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 8f2b9b374c..0a515d31d7 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -57,7 +57,6 @@ static_assert(sizeof(glslang_resource_t) == sizeof(TBuiltInResource), ""); typedef struct glslang_shader_s { glslang::TShader* shader; std::string preprocessedGLSL; - int glslVersion; } glslang_shader_t; typedef struct glslang_program_s { @@ -378,7 +377,7 @@ GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int opt GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version) { - shader->glslVersion = version; + shader->shader->setOverrideVersion(version); } GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) @@ -395,7 +394,6 @@ GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const gls input->default_version, c_shader_profile(input->default_profile), input->force_default_version_and_profile != 0, - shader->glslVersion, input->forward_compatible != 0, (EShMessages)c_shader_messages(input->messages), &shader->preprocessedGLSL, @@ -411,7 +409,6 @@ GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_ return shader->shader->parse( reinterpret_cast(input->resource), input->default_version, - shader->glslVersion, input->forward_compatible != 0, (EShMessages)c_shader_messages(input->messages) ); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 434de01b42..5f61a9e38d 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1483,7 +1483,6 @@ int ShCompile( const TBuiltInResource* resources, int /*debugOptions*/, int defaultVersion, // use 100 for ES environment, 110 for desktop - int overrideVersion, // use 0 if not overriding GLSL version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages // warnings/errors/AST; things to print out ) @@ -1505,7 +1504,7 @@ int ShCompile( TIntermediate intermediate(compiler->getLanguage()); TShader::ForbidIncluder includer; bool success = CompileDeferred(compiler, shaderStrings, numStrings, inputLengths, nullptr, - "", optLevel, resources, defaultVersion, ENoProfile, false, overrideVersion, + "", optLevel, resources, defaultVersion, ENoProfile, false, 0, forwardCompatible, messages, intermediate, includer); // @@ -1766,7 +1765,7 @@ class TDeferredCompiler : public TCompiler { }; TShader::TShader(EShLanguage s) - : stage(s), lengths(nullptr), stringNames(nullptr), preamble("") + : stage(s), lengths(nullptr), stringNames(nullptr), preamble(""), overrideVersion(0) { pool = new TPoolAllocator; infoSink = new TInfoSink; @@ -1835,6 +1834,11 @@ void TShader::setUniqueId(unsigned long long id) intermediate->setUniqueId(id); } +void TShader::setOverrideVersion(int version) +{ + overrideVersion = version; +} + void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); } void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } @@ -1904,7 +1908,7 @@ void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlatt // // Returns true for success. // -bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, int overrideVersion, +bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages messages, Includer& includer) { if (! InitThread()) @@ -1929,7 +1933,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion // is not an officially supported or fully working path. bool TShader::preprocess(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, - bool forceDefaultVersionAndProfile, int overrideVersion, + bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages message, std::string* output_string, Includer& includer) diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index cdd321e415..4047975601 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -334,7 +334,6 @@ GLSLANG_EXPORT int ShCompile( const TBuiltInResource *resources, int debugOptions, int defaultVersion = 110, // use 100 for ES environment, overridden by #version in shader - int overrideVersion = 0, // overrides #version in GLSL shader, use 0 to disable bool forwardCompatible = false, // give errors for use of deprecated features EShMessages messages = EShMsgDefault // warnings and errors ); @@ -471,6 +470,7 @@ class TShader { GLSLANG_EXPORT void setSourceEntryPoint(const char* sourceEntryPointName); GLSLANG_EXPORT void addProcesses(const std::vector&); GLSLANG_EXPORT void setUniqueId(unsigned long long id); + GLSLANG_EXPORT void setOverrideVersion(int version); // IO resolver binding data: see comments in ShaderLang.cpp GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base); @@ -648,33 +648,33 @@ class TShader { GLSLANG_EXPORT bool parse( const TBuiltInResource*, int defaultVersion, EProfile defaultProfile, - bool forceDefaultVersionAndProfile, int overrideVersion, bool forwardCompatible, + bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages, Includer&); - bool parse(const TBuiltInResource* res, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, int overrideVersion, + bool parse(const TBuiltInResource* res, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages messages) { TShader::ForbidIncluder includer; - return parse(res, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, includer); + return parse(res, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, forwardCompatible, messages, includer); } // Equivalent to parse() without a default profile and without forcing defaults. - bool parse(const TBuiltInResource* builtInResources, int defaultVersion, int overrideVersion, bool forwardCompatible, EShMessages messages) + bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages) { - return parse(builtInResources, defaultVersion, ENoProfile, false, overrideVersion, forwardCompatible, messages); + return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages); } - bool parse(const TBuiltInResource* builtInResources, int defaultVersion, int overrideVersion, bool forwardCompatible, EShMessages messages, + bool parse(const TBuiltInResource* builtInResources, int defaultVersion, bool forwardCompatible, EShMessages messages, Includer& includer) { - return parse(builtInResources, defaultVersion, ENoProfile, false, overrideVersion, forwardCompatible, messages, includer); + return parse(builtInResources, defaultVersion, ENoProfile, false, forwardCompatible, messages, includer); } // NOTE: Doing just preprocessing to obtain a correct preprocessed shader string // is not an officially supported or fully working path. GLSLANG_EXPORT bool preprocess( const TBuiltInResource* builtInResources, int defaultVersion, - EProfile defaultProfile, bool forceDefaultVersionAndProfile, int overrideVersion, + EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages message, std::string* outputString, Includer& includer); @@ -707,6 +707,9 @@ class TShader { // a function in the source string can be renamed FROM this TO the name given in setEntryPoint. std::string sourceEntryPointName; + // overrides #version in shader source or default version if #version isn't present + int overrideVersion; + TEnvironment environment; friend class TProgram; diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 5cd6614d00..2b057dcb0e 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -200,7 +200,7 @@ class GlslangTest : public GT { if (!entryPointName.empty()) shader->setEntryPoint(entryPointName.c_str()); return shader->parse( (resources ? resources : &glslang::DefaultTBuiltInResource), - defaultVersion, 0, isForwardCompatible, controls); + defaultVersion, isForwardCompatible, controls); } // Compiles and links the given source |code| of the given shader @@ -635,7 +635,7 @@ class GlslangTest : public GT { glslang::TShader::ForbidIncluder includer; const bool success = shader.preprocess( &glslang::DefaultTBuiltInResource, defaultVersion, defaultProfile, - forceVersionProfile, 0, isForwardCompatible, (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), + forceVersionProfile, isForwardCompatible, (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), &ppShader, includer); std::string log = shader.getInfoLog(); From 6a3aeb73cdffe7de5fc226cbfee30ad30b218073 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Mon, 10 Jan 2022 09:43:44 -0500 Subject: [PATCH 004/594] Added initial tests for --glsl-version - Added compilation tests for shader stages using a different version at each stage. --- Test/baseResults/glsl.versionOverride.comp.out | 1 + Test/baseResults/glsl.versionOverride.frag.out | 1 + Test/baseResults/glsl.versionOverride.geom.out | 1 + Test/baseResults/glsl.versionOverride.tese.out | 1 + Test/baseResults/glsl.versionOverride.vert.out | 1 + Test/glsl.versionOverride.comp | 11 +++++++++++ Test/glsl.versionOverride.frag | 11 +++++++++++ Test/glsl.versionOverride.geom | 16 ++++++++++++++++ Test/glsl.versionOverride.tesc | 13 +++++++++++++ Test/glsl.versionOverride.tese | 13 +++++++++++++ Test/glsl.versionOverride.vert | 11 +++++++++++ Test/runtests | 16 ++++++++++++++++ 12 files changed, 96 insertions(+) create mode 100644 Test/baseResults/glsl.versionOverride.comp.out create mode 100644 Test/baseResults/glsl.versionOverride.frag.out create mode 100644 Test/baseResults/glsl.versionOverride.geom.out create mode 100644 Test/baseResults/glsl.versionOverride.tese.out create mode 100644 Test/baseResults/glsl.versionOverride.vert.out create mode 100644 Test/glsl.versionOverride.comp create mode 100644 Test/glsl.versionOverride.frag create mode 100644 Test/glsl.versionOverride.geom create mode 100644 Test/glsl.versionOverride.tesc create mode 100644 Test/glsl.versionOverride.tese create mode 100644 Test/glsl.versionOverride.vert diff --git a/Test/baseResults/glsl.versionOverride.comp.out b/Test/baseResults/glsl.versionOverride.comp.out new file mode 100644 index 0000000000..591ce4d985 --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.comp.out @@ -0,0 +1 @@ +glsl.versionOverride.comp diff --git a/Test/baseResults/glsl.versionOverride.frag.out b/Test/baseResults/glsl.versionOverride.frag.out new file mode 100644 index 0000000000..b759a47f24 --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.frag.out @@ -0,0 +1 @@ +glsl.versionOverride.frag diff --git a/Test/baseResults/glsl.versionOverride.geom.out b/Test/baseResults/glsl.versionOverride.geom.out new file mode 100644 index 0000000000..758d9d49cc --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.geom.out @@ -0,0 +1 @@ +glsl.versionOverride.geom diff --git a/Test/baseResults/glsl.versionOverride.tese.out b/Test/baseResults/glsl.versionOverride.tese.out new file mode 100644 index 0000000000..c3632e8aef --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.tese.out @@ -0,0 +1 @@ +glsl.versionOverride.tese diff --git a/Test/baseResults/glsl.versionOverride.vert.out b/Test/baseResults/glsl.versionOverride.vert.out new file mode 100644 index 0000000000..d42dc3d8cd --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.vert.out @@ -0,0 +1 @@ +glsl.versionOverride.vert diff --git a/Test/glsl.versionOverride.comp b/Test/glsl.versionOverride.comp new file mode 100644 index 0000000000..030d6e80b3 --- /dev/null +++ b/Test/glsl.versionOverride.comp @@ -0,0 +1,11 @@ +/* + +glslangValidator.exe --glsl-version 460 -V -S comp -o glsl.versionOverride.comp.out glsl.versionOverride.comp + +*/ + +#version 330 + +void main() +{ +} \ No newline at end of file diff --git a/Test/glsl.versionOverride.frag b/Test/glsl.versionOverride.frag new file mode 100644 index 0000000000..c5d3201497 --- /dev/null +++ b/Test/glsl.versionOverride.frag @@ -0,0 +1,11 @@ +/* + +glslangValidator.exe --glsl-version 420 -V -S frag -o glsl.versionOverride.frag.out glsl.versionOverride.frag + +*/ + +#version 330 + +void main() +{ +} \ No newline at end of file diff --git a/Test/glsl.versionOverride.geom b/Test/glsl.versionOverride.geom new file mode 100644 index 0000000000..d6ca4a6e79 --- /dev/null +++ b/Test/glsl.versionOverride.geom @@ -0,0 +1,16 @@ +/* + +glslangValidator.exe --glsl-version 430 -V -S geom -o glsl.versionOverride.geom.out glsl.versionOverride.geom + +*/ + +#version 330 + +layout (points) in; +layout (line_strip, max_vertices = 2) out; + +void main() { + EmitVertex(); + EmitVertex(); + EndPrimitive(); +} \ No newline at end of file diff --git a/Test/glsl.versionOverride.tesc b/Test/glsl.versionOverride.tesc new file mode 100644 index 0000000000..4157e62d1a --- /dev/null +++ b/Test/glsl.versionOverride.tesc @@ -0,0 +1,13 @@ +/* + +glslangValidator.exe --glsl-version 440 -V -S tesc -o glsl.versionOverride.tesc.out glsl.versionOverride.tesc + +*/ + +#version 330 + +layout(vertices = 3) out; + +void main() +{ +} \ No newline at end of file diff --git a/Test/glsl.versionOverride.tese b/Test/glsl.versionOverride.tese new file mode 100644 index 0000000000..cc7963497c --- /dev/null +++ b/Test/glsl.versionOverride.tese @@ -0,0 +1,13 @@ +/* + +glslangValidator.exe --glsl-version 450 -V -S tese -o glsl.versionOverride.tese.out glsl.versionOverride.tese + +*/ + +#version 330 + +layout(triangles) in; + +void main() +{ +} \ No newline at end of file diff --git a/Test/glsl.versionOverride.vert b/Test/glsl.versionOverride.vert new file mode 100644 index 0000000000..6ddbf6291e --- /dev/null +++ b/Test/glsl.versionOverride.vert @@ -0,0 +1,11 @@ +/* + +glslangValidator.exe --glsl-version 410 -V -S vert -o glsl.versionOverride.vert.out glsl.versionOverride.vert + +*/ + +#version 330 + +void main() +{ +} \ No newline at end of file diff --git a/Test/runtests b/Test/runtests index 63c3a03bb9..c7df2e0b89 100755 --- a/Test/runtests +++ b/Test/runtests @@ -298,6 +298,22 @@ diff -b $BASEDIR/hlsl.autosampledtextures.frag.out $TARGETDIR/hlsl.autosampledte run --auto-sampled-textures -H -Od -S frag glsl.autosampledtextures.frag > $TARGETDIR/glsl.autosampledtextures.frag.out diff -b $BASEDIR/glsl.autosampledtextures.frag.out $TARGETDIR/glsl.autosampledtextures.frag.out || HASERROR=1 +# Test --glsl-version +# +echo "Testing --glsl-version" +run --glsl-version 410 -V -S vert glsl.versionOverride.vert > $TARGETDIR/glsl.versionOverride.vert.out +diff -b $BASEDIR/glsl.versionOverride.vert.out $TARGETDIR/glsl.versionOverride.vert.out || HASERROR=1 +run --glsl-version 420 -V -S frag glsl.versionOverride.frag > $TARGETDIR/glsl.versionOverride.frag.out +diff -b $BASEDIR/glsl.versionOverride.frag.out $TARGETDIR/glsl.versionOverride.frag.out || HASERROR=1 +run --glsl-version 430 -V -S geom glsl.versionOverride.geom > $TARGETDIR/glsl.versionOverride.geom.out +diff -b $BASEDIR/glsl.versionOverride.geom.out $TARGETDIR/glsl.versionOverride.geom.out || HASERROR=1 +run --glsl-version 440 -V -S tesc glsl.versionOverride.tesc > $TARGETDIR/glsl.versionOverride.tesc.out +diff -b $BASEDIR/glsl.versionOverride.tesc.out $TARGETDIR/glsl.versionOverride.tesc.out || HASERROR=1 +run --glsl-version 450 -V -S tese glsl.versionOverride.tese > $TARGETDIR/glsl.versionOverride.tese.out +diff -b $BASEDIR/glsl.versionOverride.tese.out $TARGETDIR/glsl.versionOverride.tese.out || HASERROR=1 +run --glsl-version 460 -V -S comp glsl.versionOverride.comp > $TARGETDIR/glsl.versionOverride.comp.out +diff -b $BASEDIR/glsl.versionOverride.comp.out $TARGETDIR/glsl.versionOverride.comp.out || HASERROR=1 + # # Final checking # From 8f2c400a290a521b16c6f2f16ea5e3f08b48c281 Mon Sep 17 00:00:00 2001 From: Hai Nguyen Date: Mon, 10 Jan 2022 09:56:54 -0500 Subject: [PATCH 005/594] Added missing test result --- Test/baseResults/glsl.versionOverride.tesc.out | 1 + 1 file changed, 1 insertion(+) create mode 100644 Test/baseResults/glsl.versionOverride.tesc.out diff --git a/Test/baseResults/glsl.versionOverride.tesc.out b/Test/baseResults/glsl.versionOverride.tesc.out new file mode 100644 index 0000000000..4aedf0d8e7 --- /dev/null +++ b/Test/baseResults/glsl.versionOverride.tesc.out @@ -0,0 +1 @@ +glsl.versionOverride.tesc From ed5f33e6acc945318eac3d43bc401e7497c69be4 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Tue, 25 Jan 2022 13:40:07 -0700 Subject: [PATCH 006/594] Fix comment for setEnvInput() Specifically, add text to clarify dialect and dialectVersion Fixes #2872 --- glslang/Public/ShaderLang.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 7744abf025..29b75354ac 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -150,8 +150,8 @@ typedef enum { typedef enum { EShClientNone, // use when there is no client, e.g. for validation - EShClientVulkan, - EShClientOpenGL, + EShClientVulkan, // as GLSL dialect, specifies KHR_vulkan_glsl extension + EShClientOpenGL, // as GLSL dialect, specifies ARB_gl_spirv extension LAST_ELEMENT_MARKER(EShClientCount), } EShClient; @@ -518,6 +518,9 @@ class TShader { // use EShClientNone and version of 0, e.g. for validation mode. // Note 'version' does not describe the target environment, // just the version of the source dialect to compile under. + // For example, to choose the Vulkan dialect of GLSL defined by + // version 100 of the KHR_vulkan_glsl extension: lang = EShSourceGlsl, + // dialect = EShClientVulkan, and version = 100. // // See the definitions of TEnvironment, EShSource, EShLanguage, // and EShClient for choices and more detail. From 9ebd8ff6c1d2c401cff3037cd798814001c92947 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 26 Jan 2022 14:45:58 -0700 Subject: [PATCH 007/594] Add Vulkan 1.3 support Also update known goods to Vulkan 1.3 support Also re-enable SPIR-V 1.6 tests with vulkan1.3 target Also re-cache SPIRV 1.6 header which somehow regressed back to 1.5 --- SPIRV/SpvTools.cpp | 22 +- SPIRV/spirv.hpp | 209 +++++++++++++++++- StandAlone/StandAlone.cpp | 12 +- .../baseResults/hlsl.spv.1.6.discard.frag.out | 4 +- .../spv.1.6.conditionalDiscard.frag.out | 3 +- .../spv.1.6.helperInvocation.frag.out | 2 +- glslang/CInterface/glslang_c_interface.cpp | 2 + glslang/Include/glslang_c_shader_types.h | 3 +- .../MachineIndependent/localintermediate.h | 3 + glslang/Public/ShaderLang.h | 7 +- gtests/Hlsl.FromFile.cpp | 30 ++- gtests/Spv.FromFile.cpp | 34 ++- known_good.json | 4 +- 13 files changed, 261 insertions(+), 74 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index f78a791775..e8f825119a 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -68,26 +68,8 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog } case glslang::EShTargetVulkan_1_2: return spv_target_env::SPV_ENV_VULKAN_1_2; - case glslang::EShTargetUniversal: - switch (spvVersion.spv) { - case EShTargetSpv_1_0: - return spv_target_env::SPV_ENV_UNIVERSAL_1_0; - case EShTargetSpv_1_1: - return spv_target_env::SPV_ENV_UNIVERSAL_1_1; - case EShTargetSpv_1_2: - return spv_target_env::SPV_ENV_UNIVERSAL_1_2; - case EShTargetSpv_1_3: - return spv_target_env::SPV_ENV_UNIVERSAL_1_3; - case EShTargetSpv_1_4: - return spv_target_env::SPV_ENV_UNIVERSAL_1_4; - case EShTargetSpv_1_5: - return spv_target_env::SPV_ENV_UNIVERSAL_1_5; - case EShTargetSpv_1_6: - return spv_target_env::SPV_ENV_UNIVERSAL_1_6; - default: - logger->missingFunctionality("Target version for SPIRV-Tools validator"); - return spv_target_env::SPV_ENV_UNIVERSAL_1_6; - } + case glslang::EShTargetVulkan_1_3: + return spv_target_env::SPV_ENV_VULKAN_1_3; default: break; } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index c1abd2640e..a8642006a2 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -49,12 +49,12 @@ namespace spv { typedef unsigned int Id; -#define SPV_VERSION 0x10500 -#define SPV_REVISION 4 +#define SPV_VERSION 0x10600 +#define SPV_REVISION 1 static const unsigned int MagicNumber = 0x07230203; -static const unsigned int Version = 0x00010500; -static const unsigned int Revision = 4; +static const unsigned int Version = 0x00010600; +static const unsigned int Revision = 1; static const unsigned int OpCodeMask = 0xffff; static const unsigned int WordCountShift = 16; @@ -65,6 +65,7 @@ enum SourceLanguage { SourceLanguageOpenCL_C = 3, SourceLanguageOpenCL_CPP = 4, SourceLanguageHLSL = 5, + SourceLanguageCPP_for_OpenCL = 6, SourceLanguageMax = 0x7fffffff, }; @@ -352,6 +353,8 @@ enum ImageOperandsShift { ImageOperandsVolatileTexelKHRShift = 11, ImageOperandsSignExtendShift = 12, ImageOperandsZeroExtendShift = 13, + ImageOperandsNontemporalShift = 14, + ImageOperandsOffsetsShift = 16, ImageOperandsMax = 0x7fffffff, }; @@ -375,6 +378,8 @@ enum ImageOperandsMask { ImageOperandsVolatileTexelKHRMask = 0x00000800, ImageOperandsSignExtendMask = 0x00001000, ImageOperandsZeroExtendMask = 0x00002000, + ImageOperandsNontemporalMask = 0x00004000, + ImageOperandsOffsetsMask = 0x00010000, }; enum FPFastMathModeShift { @@ -491,6 +496,7 @@ enum Decoration { DecorationPerPrimitiveNV = 5271, DecorationPerViewNV = 5272, DecorationPerTaskNV = 5273, + DecorationPerVertexKHR = 5285, DecorationPerVertexNV = 5285, DecorationNonUniform = 5300, DecorationNonUniformEXT = 5300, @@ -498,6 +504,10 @@ enum Decoration { DecorationRestrictPointerEXT = 5355, DecorationAliasedPointer = 5356, DecorationAliasedPointerEXT = 5356, + DecorationBindlessSamplerNV = 5398, + DecorationBindlessImageNV = 5399, + DecorationBoundSamplerNV = 5400, + DecorationBoundImageNV = 5401, DecorationSIMTCallINTEL = 5599, DecorationReferencedIndirectlyINTEL = 5602, DecorationClobberINTEL = 5607, @@ -537,6 +547,7 @@ enum Decoration { DecorationFunctionFloatingPointModeINTEL = 6080, DecorationSingleElementVectorINTEL = 6085, DecorationVectorComputeCallableFunctionINTEL = 6087, + DecorationMediaBlockIOINTEL = 6140, DecorationMax = 0x7fffffff, }; @@ -621,7 +632,9 @@ enum BuiltIn { BuiltInLayerPerViewNV = 5279, BuiltInMeshViewCountNV = 5280, BuiltInMeshViewIndicesNV = 5281, + BuiltInBaryCoordKHR = 5286, BuiltInBaryCoordNV = 5286, + BuiltInBaryCoordNoPerspKHR = 5287, BuiltInBaryCoordNoPerspNV = 5287, BuiltInFragSizeEXT = 5292, BuiltInFragmentSizeNV = 5292, @@ -722,6 +735,7 @@ enum FunctionControlShift { FunctionControlDontInlineShift = 1, FunctionControlPureShift = 2, FunctionControlConstShift = 3, + FunctionControlOptNoneINTELShift = 16, FunctionControlMax = 0x7fffffff, }; @@ -731,6 +745,7 @@ enum FunctionControlMask { FunctionControlDontInlineMask = 0x00000002, FunctionControlPureMask = 0x00000004, FunctionControlConstMask = 0x00000008, + FunctionControlOptNoneINTELMask = 0x00010000, }; enum MemorySemanticsShift { @@ -911,6 +926,7 @@ enum Capability { CapabilityGroupNonUniformQuad = 68, CapabilityShaderLayer = 69, CapabilityShaderViewportIndex = 70, + CapabilityUniformDecoration = 71, CapabilityFragmentShadingRateKHR = 4422, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, @@ -959,6 +975,7 @@ enum Capability { CapabilityFragmentFullyCoveredEXT = 5265, CapabilityMeshShadingNV = 5266, CapabilityImageFootprintNV = 5282, + CapabilityFragmentBarycentricKHR = 5284, CapabilityFragmentBarycentricNV = 5284, CapabilityComputeDerivativeGroupQuadsNV = 5288, CapabilityFragmentDensityEXT = 5291, @@ -1005,6 +1022,7 @@ enum Capability { CapabilityFragmentShaderPixelInterlockEXT = 5378, CapabilityDemoteToHelperInvocation = 5379, CapabilityDemoteToHelperInvocationEXT = 5379, + CapabilityBindlessTextureNV = 5390, CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupImageBlockIOINTEL = 5570, @@ -1029,6 +1047,7 @@ enum Capability { CapabilityFPGAMemoryAttributesINTEL = 5824, CapabilityFPFastMathModeINTEL = 5837, CapabilityArbitraryPrecisionIntegersINTEL = 5844, + CapabilityArbitraryPrecisionFloatingPointINTEL = 5845, CapabilityUnstructuredLoopControlsINTEL = 5886, CapabilityFPGALoopControlsINTEL = 5888, CapabilityKernelAttributesINTEL = 5892, @@ -1037,14 +1056,26 @@ enum Capability { CapabilityFPGAClusterAttributesINTEL = 5904, CapabilityLoopFuseINTEL = 5906, CapabilityFPGABufferLocationINTEL = 5920, + CapabilityArbitraryPrecisionFixedPointINTEL = 5922, CapabilityUSMStorageClassesINTEL = 5935, CapabilityIOPipesINTEL = 5943, CapabilityBlockingPipesINTEL = 5945, CapabilityFPGARegINTEL = 5948, + CapabilityDotProductInputAll = 6016, + CapabilityDotProductInputAllKHR = 6016, + CapabilityDotProductInput4x8Bit = 6017, + CapabilityDotProductInput4x8BitKHR = 6017, + CapabilityDotProductInput4x8BitPacked = 6018, + CapabilityDotProductInput4x8BitPackedKHR = 6018, + CapabilityDotProduct = 6019, + CapabilityDotProductKHR = 6019, + CapabilityBitInstructions = 6025, CapabilityAtomicFloat32AddEXT = 6033, CapabilityAtomicFloat64AddEXT = 6034, CapabilityLongConstantCompositeINTEL = 6089, + CapabilityOptNoneINTEL = 6094, CapabilityAtomicFloat16AddEXT = 6095, + CapabilityDebugInfoModuleINTEL = 6114, CapabilityMax = 0x7fffffff, }; @@ -1123,6 +1154,32 @@ enum FPOperationMode { FPOperationModeMax = 0x7fffffff, }; +enum QuantizationModes { + QuantizationModesTRN = 0, + QuantizationModesTRN_ZERO = 1, + QuantizationModesRND = 2, + QuantizationModesRND_ZERO = 3, + QuantizationModesRND_INF = 4, + QuantizationModesRND_MIN_INF = 5, + QuantizationModesRND_CONV = 6, + QuantizationModesRND_CONV_ODD = 7, + QuantizationModesMax = 0x7fffffff, +}; + +enum OverflowModes { + OverflowModesWRAP = 0, + OverflowModesSAT = 1, + OverflowModesSAT_ZERO = 2, + OverflowModesSAT_SYM = 3, + OverflowModesMax = 0x7fffffff, +}; + +enum PackedVectorFormat { + PackedVectorFormatPackedVectorFormat4x8Bit = 0, + PackedVectorFormatPackedVectorFormat4x8BitKHR = 0, + PackedVectorFormatMax = 0x7fffffff, +}; + enum Op { OpNop = 0, OpUndef = 1, @@ -1480,6 +1537,18 @@ enum Op { OpConvertUToAccelerationStructureKHR = 4447, OpIgnoreIntersectionKHR = 4448, OpTerminateRayKHR = 4449, + OpSDot = 4450, + OpSDotKHR = 4450, + OpUDot = 4451, + OpUDotKHR = 4451, + OpSUDot = 4452, + OpSUDotKHR = 4452, + OpSDotAccSat = 4453, + OpSDotAccSatKHR = 4453, + OpUDotAccSat = 4454, + OpUDotAccSatKHR = 4454, + OpSUDotAccSat = 4455, + OpSUDotAccSatKHR = 4455, OpTypeRayQueryKHR = 4472, OpRayQueryInitializeKHR = 4473, OpRayQueryTerminateKHR = 4474, @@ -1518,8 +1587,16 @@ enum Op { OpCooperativeMatrixLengthNV = 5362, OpBeginInvocationInterlockEXT = 5364, OpEndInvocationInterlockEXT = 5365, + OpDemoteToHelperInvocation = 5380, OpDemoteToHelperInvocationEXT = 5380, OpIsHelperInvocationEXT = 5381, + OpConvertUToImageNV = 5391, + OpConvertUToSamplerNV = 5392, + OpConvertImageToUNV = 5393, + OpConvertSamplerToUNV = 5394, + OpConvertUToSampledImageNV = 5395, + OpConvertSampledImageToUNV = 5396, + OpSamplerImageAddressingModeNV = 5397, OpSubgroupShuffleINTEL = 5571, OpSubgroupShuffleDownINTEL = 5572, OpSubgroupShuffleUpINTEL = 5573, @@ -1544,7 +1621,7 @@ enum Op { OpUSubSatINTEL = 5596, OpIMul32x16INTEL = 5597, OpUMul32x16INTEL = 5598, - OpConstFunctionPointerINTEL = 5600, + OpConstantFunctionPointerINTEL = 5600, OpFunctionPointerCallINTEL = 5601, OpAsmTargetINTEL = 5609, OpAsmINTEL = 5610, @@ -1678,7 +1755,59 @@ enum Op { OpVariableLengthArrayINTEL = 5818, OpSaveMemoryINTEL = 5819, OpRestoreMemoryINTEL = 5820, + OpArbitraryFloatSinCosPiINTEL = 5840, + OpArbitraryFloatCastINTEL = 5841, + OpArbitraryFloatCastFromIntINTEL = 5842, + OpArbitraryFloatCastToIntINTEL = 5843, + OpArbitraryFloatAddINTEL = 5846, + OpArbitraryFloatSubINTEL = 5847, + OpArbitraryFloatMulINTEL = 5848, + OpArbitraryFloatDivINTEL = 5849, + OpArbitraryFloatGTINTEL = 5850, + OpArbitraryFloatGEINTEL = 5851, + OpArbitraryFloatLTINTEL = 5852, + OpArbitraryFloatLEINTEL = 5853, + OpArbitraryFloatEQINTEL = 5854, + OpArbitraryFloatRecipINTEL = 5855, + OpArbitraryFloatRSqrtINTEL = 5856, + OpArbitraryFloatCbrtINTEL = 5857, + OpArbitraryFloatHypotINTEL = 5858, + OpArbitraryFloatSqrtINTEL = 5859, + OpArbitraryFloatLogINTEL = 5860, + OpArbitraryFloatLog2INTEL = 5861, + OpArbitraryFloatLog10INTEL = 5862, + OpArbitraryFloatLog1pINTEL = 5863, + OpArbitraryFloatExpINTEL = 5864, + OpArbitraryFloatExp2INTEL = 5865, + OpArbitraryFloatExp10INTEL = 5866, + OpArbitraryFloatExpm1INTEL = 5867, + OpArbitraryFloatSinINTEL = 5868, + OpArbitraryFloatCosINTEL = 5869, + OpArbitraryFloatSinCosINTEL = 5870, + OpArbitraryFloatSinPiINTEL = 5871, + OpArbitraryFloatCosPiINTEL = 5872, + OpArbitraryFloatASinINTEL = 5873, + OpArbitraryFloatASinPiINTEL = 5874, + OpArbitraryFloatACosINTEL = 5875, + OpArbitraryFloatACosPiINTEL = 5876, + OpArbitraryFloatATanINTEL = 5877, + OpArbitraryFloatATanPiINTEL = 5878, + OpArbitraryFloatATan2INTEL = 5879, + OpArbitraryFloatPowINTEL = 5880, + OpArbitraryFloatPowRINTEL = 5881, + OpArbitraryFloatPowNINTEL = 5882, OpLoopControlINTEL = 5887, + OpFixedSqrtINTEL = 5923, + OpFixedRecipINTEL = 5924, + OpFixedRsqrtINTEL = 5925, + OpFixedSinINTEL = 5926, + OpFixedCosINTEL = 5927, + OpFixedSinCosINTEL = 5928, + OpFixedSinPiINTEL = 5929, + OpFixedCosPiINTEL = 5930, + OpFixedSinCosPiINTEL = 5931, + OpFixedLogINTEL = 5932, + OpFixedExpINTEL = 5933, OpPtrCastToCrossWorkgroupINTEL = 5934, OpCrossWorkgroupCastToPtrINTEL = 5938, OpReadPipeBlockingINTEL = 5946, @@ -2070,6 +2199,12 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break; case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break; + case OpSDot: *hasResult = true; *hasResultType = true; break; + case OpUDot: *hasResult = true; *hasResultType = true; break; + case OpSUDot: *hasResult = true; *hasResultType = true; break; + case OpSDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpUDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break; case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; @@ -2106,8 +2241,15 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpDemoteToHelperInvocationEXT: *hasResult = false; *hasResultType = false; break; + case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break; case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; + case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break; + case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break; + case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break; + case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break; + case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break; + case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break; + case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break; case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; @@ -2132,7 +2274,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpConstFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; + case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break; case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break; case OpAsmINTEL: *hasResult = true; *hasResultType = true; break; @@ -2264,7 +2406,59 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break; case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break; + case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break; case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; + case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break; case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break; case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break; case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; @@ -2312,3 +2506,4 @@ inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShad } // end namespace spv #endif // #ifndef spirv_HPP + diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index f5ce6317f1..72f552274d 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -767,6 +767,9 @@ void ProcessArguments(std::vector>& workItem } else if (strcmp(argv[1], "vulkan1.2") == 0) { setVulkanSpv(); ClientVersion = glslang::EShTargetVulkan_1_2; + } else if (strcmp(argv[1], "vulkan1.3") == 0) { + setVulkanSpv(); + ClientVersion = glslang::EShTargetVulkan_1_3; } else if (strcmp(argv[1], "opengl") == 0) { setOpenGlSpv(); ClientVersion = glslang::EShTargetOpenGL_450; @@ -793,7 +796,7 @@ void ProcessArguments(std::vector>& workItem TargetVersion = glslang::EShTargetSpv_1_6; } else Error("--target-env expected one of: vulkan1.0, vulkan1.1, vulkan1.2,\n" - "opengl, spirv1.0, spirv1.1, spirv1.2, spirv1.3,\n" + "vulkan1.3, opengl, spirv1.0, spirv1.1, spirv1.2, spirv1.3,\n" "spirv1.4, spirv1.5 or spirv1.6"); } bumpArg(); @@ -1019,6 +1022,10 @@ void ProcessArguments(std::vector>& workItem TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_5; break; + case glslang::EShTargetVulkan_1_3: + TargetLanguage = glslang::EShTargetSpv; + TargetVersion = glslang::EShTargetSpv_1_6; + break; case glslang::EShTargetOpenGL_450: TargetLanguage = glslang::EShTargetSpv; TargetVersion = glslang::EShTargetSpv_1_0; @@ -1934,7 +1941,7 @@ void usage() " --sep synonym for --source-entrypoint\n" " --stdin read from stdin instead of from a file;\n" " requires providing the shader stage using -S\n" - " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | opengl |\n" + " --target-env {vulkan1.0 | vulkan1.1 | vulkan1.2 | vulkan1.3 | opengl |\n" " spirv1.0 | spirv1.1 | spirv1.2 | spirv1.3 | spirv1.4 |\n" " spirv1.5 | spirv1.6}\n" " Set the execution environment that the\n" @@ -1945,6 +1952,7 @@ void usage() " * spirv1.0 under --target-env vulkan1.0\n" " * spirv1.3 under --target-env vulkan1.1\n" " * spirv1.5 under --target-env vulkan1.2\n" + " * spirv1.6 under --target-env vulkan1.3\n" " Multiple --target-env can be specified.\n" " --variable-name \n" " --vn creates a C header file that contains a\n" diff --git a/Test/baseResults/hlsl.spv.1.6.discard.frag.out b/Test/baseResults/hlsl.spv.1.6.discard.frag.out index b5cfe1704c..d5219144cd 100644 --- a/Test/baseResults/hlsl.spv.1.6.discard.frag.out +++ b/Test/baseResults/hlsl.spv.1.6.discard.frag.out @@ -1,5 +1,6 @@ hlsl.spv.1.6.discard.frag Shader version: 500 +gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: foo(f1; ( temp void) 0:2 Function Parameters: @@ -55,6 +56,7 @@ Linked fragment stage: Shader version: 500 +gl_FragCoord origin is upper left 0:? Sequence 0:2 Function Definition: foo(f1; ( temp void) 0:2 Function Parameters: @@ -114,7 +116,7 @@ Shader version: 500 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "PixelShaderFunction" 42 - ExecutionMode 4 OriginLowerLeft + ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" Name 10 "foo(f1;" diff --git a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out index d671476ceb..f538fd9310 100644 --- a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out @@ -7,7 +7,7 @@ spv.1.6.conditionalDiscard.frag 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 17 34 - ExecutionMode 4 OriginLowerLeft + ExecutionMode 4 OriginUpperLeft Source GLSL 400 Name 4 "main" Name 9 "v" @@ -17,6 +17,7 @@ spv.1.6.conditionalDiscard.frag Decorate 13(tex) DescriptorSet 0 Decorate 13(tex) Binding 0 Decorate 17(coord) Location 0 + Decorate 34(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.6.helperInvocation.frag.out b/Test/baseResults/spv.1.6.helperInvocation.frag.out index 9ba8a5c176..7df2a2ac50 100644 --- a/Test/baseResults/spv.1.6.helperInvocation.frag.out +++ b/Test/baseResults/spv.1.6.helperInvocation.frag.out @@ -7,7 +7,7 @@ spv.1.6.helperInvocation.frag 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 15 - ExecutionMode 4 OriginLowerLeft + ExecutionMode 4 OriginUpperLeft Source ESSL 310 Name 4 "main" Name 8 "gl_HelperInvocation" diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index da1cd145d1..47c72fc1a4 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -273,6 +273,8 @@ static glslang::EShTargetClientVersion c_shader_client_version(glslang_target_cl return glslang::EShTargetVulkan_1_1; case GLSLANG_TARGET_VULKAN_1_2: return glslang::EShTargetVulkan_1_2; + case GLSLANG_TARGET_VULKAN_1_3: + return glslang::EShTargetVulkan_1_3; case GLSLANG_TARGET_OPENGL_450: return glslang::EShTargetOpenGL_450; default: diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index fc80280652..df19777b0b 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -101,8 +101,9 @@ typedef enum { GLSLANG_TARGET_VULKAN_1_0 = (1 << 22), GLSLANG_TARGET_VULKAN_1_1 = (1 << 22) | (1 << 12), GLSLANG_TARGET_VULKAN_1_2 = (1 << 22) | (2 << 12), + GLSLANG_TARGET_VULKAN_1_3 = (1 << 22) | (3 << 12), GLSLANG_TARGET_OPENGL_450 = 450, - LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 4), + LAST_ELEMENT_MARKER(GLSLANG_TARGET_CLIENT_VERSION_COUNT = 5), } glslang_target_client_version_t; /* SH_TARGET_LanguageVersion counterpart */ diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 1386cb3a87..a658c09c6c 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -419,6 +419,9 @@ class TIntermediate { case EShTargetVulkan_1_2: processes.addProcess("target-env vulkan1.2"); break; + case EShTargetVulkan_1_3: + processes.addProcess("target-env vulkan1.3"); + break; default: processes.addProcess("target-env vulkanUnknown"); break; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 29b75354ac..3c0e2910d6 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -162,16 +162,13 @@ typedef enum { LAST_ELEMENT_MARKER(EShTargetCount), } EShTargetLanguage; -// TODO(greg-lunarg): Fix non-determinism problem with Universal -// https://github.com/KhronosGroup/glslang/issues/2858 - typedef enum { - EShTargetUniversal = 0, // Universal - Do not use, see comment above EShTargetVulkan_1_0 = (1 << 22), // Vulkan 1.0 EShTargetVulkan_1_1 = (1 << 22) | (1 << 12), // Vulkan 1.1 EShTargetVulkan_1_2 = (1 << 22) | (2 << 12), // Vulkan 1.2 + EShTargetVulkan_1_3 = (1 << 22) | (3 << 12), // Vulkan 1.3 EShTargetOpenGL_450 = 450, // OpenGL - LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 4), + LAST_ELEMENT_MARKER(EShTargetClientVersionCount = 5), } EShTargetClientVersion; typedef EShTargetClientVersion EshTargetClientVersion; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 6c9591056d..519be2549e 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -59,7 +59,7 @@ std::string FileNameAsCustomTestSuffix( using HlslCompileTest = GlslangTest<::testing::TestWithParam>; using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam>; -//using HlslSpv1_6CompileTest = GlslangTest<::testing::TestWithParam>; +using HlslSpv1_6CompileTest = GlslangTest<::testing::TestWithParam>; using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam>; using HlslLegalizeTest = GlslangTest<::testing::TestWithParam>; using HlslDebugTest = GlslangTest<::testing::TestWithParam>; @@ -82,14 +82,12 @@ TEST_P(HlslVulkan1_1CompileTest, FromFile) Target::BothASTAndSpv, true, GetParam().entryPoint); } -// TODO(greg-lunarg): Re-enable tests when Vulkan1.3 ClientTarget is available - -//TEST_P(HlslSpv1_6CompileTest, FromFile) -//{ -// loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, -// Source::HLSL, Semantics::Vulkan, glslang::EShTargetUniversal, glslang::EShTargetSpv_1_6, -// Target::BothASTAndSpv, true, GetParam().entryPoint); -//} +TEST_P(HlslSpv1_6CompileTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, + Target::BothASTAndSpv, true, GetParam().entryPoint); +} TEST_P(HlslCompileAndFlattenTest, FromFile) { @@ -461,13 +459,13 @@ INSTANTIATE_TEST_SUITE_P( // clang-format on // clang-format off -//INSTANTIATE_TEST_SUITE_P( -// ToSpirv, HlslSpv1_6CompileTest, -// ::testing::ValuesIn(std::vector{ -// {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"} -// }), -// FileNameAsCustomTestSuffix -//); +INSTANTIATE_TEST_SUITE_P( + ToSpirv, HlslSpv1_6CompileTest, + ::testing::ValuesIn(std::vector{ + {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"} + }), + FileNameAsCustomTestSuffix +); // clang-format on // clang-format off diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ca13b88d77..ba08226c0c 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -69,7 +69,7 @@ using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithPara using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam>; -//using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam>; +using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam>; using CompileOpenGLToSpirvTest = GlslangTest<::testing::TestWithParam>; using VulkanSemantics = GlslangTest<::testing::TestWithParam>; using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; @@ -123,14 +123,12 @@ TEST_P(CompileToSpirv14Test, FromFile) Target::Spv); } -// TODO(greg-lunarg): Re-enable tests when Vulkan1.3 ClientTarget is available - -//TEST_P(CompileToSpirv16Test, FromFile) -//{ -// loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), -// Source::GLSL, Semantics::Vulkan, glslang::EShTargetUniversal, glslang::EShTargetSpv_1_6, -// Target::Spv); -//} +TEST_P(CompileToSpirv16Test, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_6, + Target::Spv); +} // Compiling GLSL to SPIR-V under OpenGL semantics. Expected to successfully // generate SPIR-V. @@ -632,15 +630,15 @@ INSTANTIATE_TEST_SUITE_P( ); // clang-format off -//INSTANTIATE_TEST_SUITE_P( -// Glsl, CompileToSpirv16Test, -// ::testing::ValuesIn(std::vector({ -// "spv.1.6.conditionalDiscard.frag", -// "spv.1.6.helperInvocation.frag", -// "spv.1.6.specConstant.comp", -// })), -// FileNameAsCustomTestSuffix -//); +INSTANTIATE_TEST_SUITE_P( + Glsl, CompileToSpirv16Test, + ::testing::ValuesIn(std::vector({ + "spv.1.6.conditionalDiscard.frag", + "spv.1.6.helperInvocation.frag", + "spv.1.6.specConstant.comp", + })), + FileNameAsCustomTestSuffix +); // clang-format off diff --git a/known_good.json b/known_good.json index 052de57b0a..0eebc7d8b8 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "7d768812e20296c877a44ce0633d71f952fbf83c" + "commit" : "73735db943d7165d725883a1da0ad9eac79c1e34" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "eddd4dfc930f1374a70797460240a501c7d333f7" + "commit" : "b42ba6d92faf6b4938e6f22ddd186dbdacc98d78" } ] } From 69565b18843798f8d219617d7618a37499ad25fd Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 27 Jan 2022 11:39:19 -0700 Subject: [PATCH 008/594] Fix size_t to int warning --- SPIRV/SpvBuilder.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 0b0e48ab0b..36a3f09744 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -437,7 +437,7 @@ Id Builder::makeGenericType(spv::Op opcode, std::vector& opera continue; // Number mismatch, find next bool match = true; - for (size_t op = 0; match && op < operands.size(); ++op) { + for (int op = 0; match && op < (int)operands.size(); ++op) { match = (operands[op].isId ? type->getIdOperand(op) : type->getImmediateOperand(op)) == operands[op].word; } if (match) From 9448de56b320b028e6c301a6b117a166187b7f76 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 27 Jan 2022 12:23:47 -0700 Subject: [PATCH 009/594] Release 11.8.0 --- CHANGES.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index ebab4da0c7..6d3bd6d98c 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.8.0 2022-01-27 + +### Other changes +* Add support for SPIR-V 1.6 +* Add support for Vulkan 1.3 +* Add --hlsl-dx-position-w option + ## 11.7.0 2021-11-11 ### Other changes From b8338311ea58fadfc8cb41a389d857910f4d9818 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Tue, 25 Jan 2022 21:31:31 -0500 Subject: [PATCH 010/594] fix cases where symbols in the tree didn't get updated during block merging For GL_EXT_vulkan_glsl_relaxed. When merging the default uniform block, there were cases where symbols in the tree wern't updated to match the new block structure after merging blocks together. This change traverses the symbol tree and updates any references to the merged block. --- .../vk.relaxed.stagelink.0.0.vert.out | 10697 ++++++++++++++++ Test/vk.relaxed.stagelink.0.0.frag | 139 + Test/vk.relaxed.stagelink.0.0.vert | 126 + Test/vk.relaxed.stagelink.0.1.frag | 504 + Test/vk.relaxed.stagelink.0.1.vert | 242 + Test/vk.relaxed.stagelink.0.2.frag | 9 + Test/vk.relaxed.stagelink.0.2.vert | 320 + glslang/MachineIndependent/linkValidate.cpp | 73 +- gtests/VkRelaxed.FromFile.cpp | 5 +- 9 files changed, 12079 insertions(+), 36 deletions(-) create mode 100755 Test/baseResults/vk.relaxed.stagelink.0.0.vert.out create mode 100755 Test/vk.relaxed.stagelink.0.0.frag create mode 100755 Test/vk.relaxed.stagelink.0.0.vert create mode 100755 Test/vk.relaxed.stagelink.0.1.frag create mode 100755 Test/vk.relaxed.stagelink.0.1.vert create mode 100755 Test/vk.relaxed.stagelink.0.2.frag create mode 100755 Test/vk.relaxed.stagelink.0.2.vert diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out new file mode 100755 index 0000000000..bcd4e2afd5 --- /dev/null +++ b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out @@ -0,0 +1,10697 @@ +vk.relaxed.stagelink.0.0.vert +Shader version: 460 +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:15 Sequence +0:15 Sequence +0:15 Sequence +0:15 move second child to first child ( temp highp 3-component vector of float) +0:15 'texcoord' ( temp highp 3-component vector of float) +0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:15 direct index (layout( location=3) temp highp 3-component vector of float) +0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp highp 3-component vector of float) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 texCoord0: direct index for structure ( out highp 3-component vector of float) +0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:16 Constant: +0:16 2 (const int) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 'texcoord' ( temp highp 3-component vector of float) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:20 move second child to first child ( temp highp int) +0:20 instance: direct index for structure ( flat out highp int) +0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:20 Constant: +0:20 4 (const int) +0:20 Function Call: TDInstanceID( ( global highp int) +0:21 Sequence +0:21 move second child to first child ( temp highp 4-component vector of float) +0:21 'worldSpacePos' ( temp highp 4-component vector of float) +0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float) +0:21 'P' (layout( location=0) in highp 3-component vector of float) +0:22 Sequence +0:22 move second child to first child ( temp highp 3-component vector of float) +0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:23 move second child to first child ( temp highp 4-component vector of float) +0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:23 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) +0:23 Constant: +0:23 0 (const uint) +0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:23 'worldSpacePos' ( temp highp 4-component vector of float) +0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:32 Sequence +0:32 move second child to first child ( temp highp int) +0:32 'cameraIndex' ( temp highp int) +0:32 Function Call: TDCameraIndex( ( global highp int) +0:33 move second child to first child ( temp highp int) +0:33 cameraIndex: direct index for structure ( flat out highp int) +0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:33 Constant: +0:33 3 (const int) +0:33 'cameraIndex' ( temp highp int) +0:34 move second child to first child ( temp highp 3-component vector of float) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float) +0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:34 Constant: +0:34 1 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 'worldSpacePos' ( temp highp 4-component vector of float) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:35 move second child to first child ( temp highp 4-component vector of float) +0:35 color: direct index for structure ( out highp 4-component vector of float) +0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:35 Constant: +0:35 0 (const int) +0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:35 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'P' (layout( location=0) in highp 3-component vector of float) +0:? 'N' (layout( location=1) in highp 3-component vector of float) +0:? 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) + +vk.relaxed.stagelink.0.1.vert +Shader version: 460 +0:? Sequence +0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:176 Function Parameters: +0:176 'v' ( in highp 4-component vector of float) +0:176 'uv' ( in highp 3-component vector of float) +0:176 'cameraIndex' ( in highp int) +0:176 'applyPickMod' ( in bool) +0:178 Sequence +0:178 Test condition and select ( temp void) +0:178 Condition +0:178 Negate conditional ( temp bool) +0:178 Function Call: TDInstanceActive( ( global bool) +0:178 true case +0:179 Branch: Return with expression +0:179 Constant: +0:179 2.000000 +0:179 2.000000 +0:179 2.000000 +0:179 0.000000 +0:180 move second child to first child ( temp highp 4-component vector of float) +0:180 'v' ( in highp 4-component vector of float) +0:180 matrix-times-vector ( temp highp 4-component vector of float) +0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:180 Constant: +0:180 0 (const uint) +0:180 Constant: +0:180 0 (const int) +0:180 Constant: +0:180 8 (const int) +0:180 'v' ( in highp 4-component vector of float) +0:181 Branch: Return with expression +0:181 'v' ( in highp 4-component vector of float) +0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:183 Function Parameters: +0:183 'v' ( in highp 4-component vector of float) +0:183 'uv' ( in highp 3-component vector of float) +0:183 'cameraIndex' ( in highp int) +0:183 'applyPickMod' ( in bool) +0:184 Sequence +0:184 Test condition and select ( temp void) +0:184 Condition +0:184 Negate conditional ( temp bool) +0:184 Function Call: TDInstanceActive( ( global bool) +0:184 true case +0:185 Branch: Return with expression +0:185 Constant: +0:185 2.000000 +0:185 2.000000 +0:185 2.000000 +0:185 0.000000 +0:186 move second child to first child ( temp highp 4-component vector of float) +0:186 'v' ( in highp 4-component vector of float) +0:186 matrix-times-vector ( temp highp 4-component vector of float) +0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:186 Constant: +0:186 0 (const uint) +0:186 Constant: +0:186 0 (const int) +0:186 Constant: +0:186 6 (const int) +0:186 'v' ( in highp 4-component vector of float) +0:187 Branch: Return with expression +0:187 'v' ( in highp 4-component vector of float) +0:193 Function Definition: TDInstanceID( ( global highp int) +0:193 Function Parameters: +0:194 Sequence +0:194 Branch: Return with expression +0:194 add ( temp highp int) +0:194 'gl_InstanceIndex' ( in highp int InstanceIndex) +0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:194 Constant: +0:194 0 (const uint) +0:196 Function Definition: TDCameraIndex( ( global highp int) +0:196 Function Parameters: +0:197 Sequence +0:197 Branch: Return with expression +0:197 Constant: +0:197 0 (const int) +0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:199 Function Parameters: +0:200 Sequence +0:200 Branch: Return with expression +0:200 direct index (layout( location=3) temp highp 3-component vector of float) +0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:200 Constant: +0:200 0 (const int) +0:205 Function Definition: TDPickID( ( global highp int) +0:205 Function Parameters: +0:209 Sequence +0:209 Branch: Return with expression +0:209 Constant: +0:209 0 (const int) +0:212 Function Definition: iTDConvertPickId(i1; ( global highp float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 or second child into first child ( temp highp int) +0:213 'id' ( in highp int) +0:213 Constant: +0:213 1073741824 (const int) +0:214 Branch: Return with expression +0:214 intBitsToFloat ( global highp float) +0:214 'id' ( in highp int) +0:217 Function Definition: TDWritePickingValues( ( global void) +0:217 Function Parameters: +0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:224 Function Parameters: +0:224 'v' ( in highp 4-component vector of float) +0:224 'uv' ( in highp 3-component vector of float) +0:226 Sequence +0:226 Branch: Return with expression +0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:226 'v' ( in highp 4-component vector of float) +0:226 'uv' ( in highp 3-component vector of float) +0:226 Function Call: TDCameraIndex( ( global highp int) +0:226 Constant: +0:226 true (const bool) +0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float) +0:228 Function Parameters: +0:228 'v' ( in highp 3-component vector of float) +0:228 'uv' ( in highp 3-component vector of float) +0:230 Sequence +0:230 Branch: Return with expression +0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:230 Construct vec4 ( temp highp 4-component vector of float) +0:230 'v' ( in highp 3-component vector of float) +0:230 Constant: +0:230 1.000000 +0:230 'uv' ( in highp 3-component vector of float) +0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:232 Function Parameters: +0:232 'v' ( in highp 4-component vector of float) +0:234 Sequence +0:234 Branch: Return with expression +0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:234 'v' ( in highp 4-component vector of float) +0:234 Constant: +0:234 0.000000 +0:234 0.000000 +0:234 0.000000 +0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float) +0:236 Function Parameters: +0:236 'v' ( in highp 3-component vector of float) +0:238 Sequence +0:238 Branch: Return with expression +0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:238 Construct vec4 ( temp highp 4-component vector of float) +0:238 'v' ( in highp 3-component vector of float) +0:238 Constant: +0:238 1.000000 +0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float) +0:240 Function Parameters: +0:241 Sequence +0:241 Branch: Return with expression +0:241 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? Linker Objects +0:? 'P' (layout( location=0) in highp 3-component vector of float) +0:? 'N' (layout( location=1) in highp 3-component vector of float) +0:? 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D) +0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray) +0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D) +0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) + +vk.relaxed.stagelink.0.2.vert +Shader version: 460 +0:? Sequence +0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:114 Function Parameters: +0:114 'index' ( in highp int) +0:114 't' ( in highp 3-component vector of float) +0:? Sequence +0:116 Sequence +0:116 move second child to first child ( temp highp int) +0:116 'coord' ( temp highp int) +0:116 'index' ( in highp int) +0:117 Sequence +0:117 move second child to first child ( temp highp 4-component vector of float) +0:117 'samp' ( temp highp 4-component vector of float) +0:117 textureFetch ( global highp 4-component vector of float) +0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:117 'coord' ( temp highp int) +0:118 move second child to first child ( temp highp float) +0:118 direct index ( temp highp float) +0:118 'v' ( temp highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:118 direct index ( temp highp float) +0:118 't' ( in highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:119 move second child to first child ( temp highp float) +0:119 direct index ( temp highp float) +0:119 'v' ( temp highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:119 direct index ( temp highp float) +0:119 't' ( in highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:120 move second child to first child ( temp highp float) +0:120 direct index ( temp highp float) +0:120 'v' ( temp highp 3-component vector of float) +0:120 Constant: +0:120 2 (const int) +0:120 direct index ( temp highp float) +0:120 'samp' ( temp highp 4-component vector of float) +0:120 Constant: +0:120 0 (const int) +0:121 move second child to first child ( temp highp 3-component vector of float) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 't' ( in highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 'v' ( temp highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:122 Branch: Return with expression +0:122 't' ( in highp 3-component vector of float) +0:124 Function Definition: TDInstanceActive(i1; ( global bool) +0:124 Function Parameters: +0:124 'index' ( in highp int) +0:125 Sequence +0:125 subtract second child into first child ( temp highp int) +0:125 'index' ( in highp int) +0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:125 Constant: +0:125 0 (const uint) +0:127 Sequence +0:127 move second child to first child ( temp highp int) +0:127 'coord' ( temp highp int) +0:127 'index' ( in highp int) +0:128 Sequence +0:128 move second child to first child ( temp highp 4-component vector of float) +0:128 'samp' ( temp highp 4-component vector of float) +0:128 textureFetch ( global highp 4-component vector of float) +0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:128 'coord' ( temp highp int) +0:129 move second child to first child ( temp highp float) +0:129 'v' ( temp highp float) +0:129 direct index ( temp highp float) +0:129 'samp' ( temp highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:130 Branch: Return with expression +0:130 Compare Not Equal ( temp bool) +0:130 'v' ( temp highp float) +0:130 Constant: +0:130 0.000000 +0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:132 Function Parameters: +0:132 'index' ( in highp int) +0:132 'instanceActive' ( out bool) +0:133 Sequence +0:133 Sequence +0:133 move second child to first child ( temp highp int) +0:133 'origIndex' ( temp highp int) +0:133 'index' ( in highp int) +0:134 subtract second child into first child ( temp highp int) +0:134 'index' ( in highp int) +0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:134 Constant: +0:134 0 (const uint) +0:136 Sequence +0:136 move second child to first child ( temp highp int) +0:136 'coord' ( temp highp int) +0:136 'index' ( in highp int) +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 'samp' ( temp highp 4-component vector of float) +0:137 textureFetch ( global highp 4-component vector of float) +0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:137 'coord' ( temp highp int) +0:138 move second child to first child ( temp highp float) +0:138 direct index ( temp highp float) +0:138 'v' ( temp highp 3-component vector of float) +0:138 Constant: +0:138 0 (const int) +0:138 direct index ( temp highp float) +0:138 'samp' ( temp highp 4-component vector of float) +0:138 Constant: +0:138 1 (const int) +0:139 move second child to first child ( temp highp float) +0:139 direct index ( temp highp float) +0:139 'v' ( temp highp 3-component vector of float) +0:139 Constant: +0:139 1 (const int) +0:139 direct index ( temp highp float) +0:139 'samp' ( temp highp 4-component vector of float) +0:139 Constant: +0:139 2 (const int) +0:140 move second child to first child ( temp highp float) +0:140 direct index ( temp highp float) +0:140 'v' ( temp highp 3-component vector of float) +0:140 Constant: +0:140 2 (const int) +0:140 direct index ( temp highp float) +0:140 'samp' ( temp highp 4-component vector of float) +0:140 Constant: +0:140 3 (const int) +0:141 move second child to first child ( temp bool) +0:141 'instanceActive' ( out bool) +0:141 Compare Not Equal ( temp bool) +0:141 direct index ( temp highp float) +0:141 'samp' ( temp highp 4-component vector of float) +0:141 Constant: +0:141 0 (const int) +0:141 Constant: +0:141 0.000000 +0:142 Branch: Return with expression +0:142 'v' ( temp highp 3-component vector of float) +0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:144 Function Parameters: +0:144 'index' ( in highp int) +0:145 Sequence +0:145 subtract second child into first child ( temp highp int) +0:145 'index' ( in highp int) +0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:145 Constant: +0:145 0 (const uint) +0:147 Sequence +0:147 move second child to first child ( temp highp int) +0:147 'coord' ( temp highp int) +0:147 'index' ( in highp int) +0:148 Sequence +0:148 move second child to first child ( temp highp 4-component vector of float) +0:148 'samp' ( temp highp 4-component vector of float) +0:148 textureFetch ( global highp 4-component vector of float) +0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:148 'coord' ( temp highp int) +0:149 move second child to first child ( temp highp float) +0:149 direct index ( temp highp float) +0:149 'v' ( temp highp 3-component vector of float) +0:149 Constant: +0:149 0 (const int) +0:149 direct index ( temp highp float) +0:149 'samp' ( temp highp 4-component vector of float) +0:149 Constant: +0:149 1 (const int) +0:150 move second child to first child ( temp highp float) +0:150 direct index ( temp highp float) +0:150 'v' ( temp highp 3-component vector of float) +0:150 Constant: +0:150 1 (const int) +0:150 direct index ( temp highp float) +0:150 'samp' ( temp highp 4-component vector of float) +0:150 Constant: +0:150 2 (const int) +0:151 move second child to first child ( temp highp float) +0:151 direct index ( temp highp float) +0:151 'v' ( temp highp 3-component vector of float) +0:151 Constant: +0:151 2 (const int) +0:151 direct index ( temp highp float) +0:151 'samp' ( temp highp 4-component vector of float) +0:151 Constant: +0:151 3 (const int) +0:152 Branch: Return with expression +0:152 'v' ( temp highp 3-component vector of float) +0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:154 Function Parameters: +0:154 'index' ( in highp int) +0:155 Sequence +0:155 subtract second child into first child ( temp highp int) +0:155 'index' ( in highp int) +0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:155 Constant: +0:155 0 (const uint) +0:156 Sequence +0:156 move second child to first child ( temp highp 3-component vector of float) +0:156 'v' ( temp highp 3-component vector of float) +0:156 Constant: +0:156 0.000000 +0:156 0.000000 +0:156 0.000000 +0:157 Sequence +0:157 move second child to first child ( temp highp 3X3 matrix of float) +0:157 'm' ( temp highp 3X3 matrix of float) +0:157 Constant: +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:161 Branch: Return with expression +0:161 'm' ( temp highp 3X3 matrix of float) +0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:163 Function Parameters: +0:163 'index' ( in highp int) +0:164 Sequence +0:164 subtract second child into first child ( temp highp int) +0:164 'index' ( in highp int) +0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:164 Constant: +0:164 0 (const uint) +0:165 Sequence +0:165 move second child to first child ( temp highp 3-component vector of float) +0:165 'v' ( temp highp 3-component vector of float) +0:165 Constant: +0:165 1.000000 +0:165 1.000000 +0:165 1.000000 +0:166 Branch: Return with expression +0:166 'v' ( temp highp 3-component vector of float) +0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:168 Function Parameters: +0:168 'index' ( in highp int) +0:169 Sequence +0:169 subtract second child into first child ( temp highp int) +0:169 'index' ( in highp int) +0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:169 Constant: +0:169 0 (const uint) +0:170 Sequence +0:170 move second child to first child ( temp highp 3-component vector of float) +0:170 'v' ( temp highp 3-component vector of float) +0:170 Constant: +0:170 0.000000 +0:170 0.000000 +0:170 0.000000 +0:171 Branch: Return with expression +0:171 'v' ( temp highp 3-component vector of float) +0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:173 Function Parameters: +0:173 'index' ( in highp int) +0:174 Sequence +0:174 subtract second child into first child ( temp highp int) +0:174 'index' ( in highp int) +0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:174 Constant: +0:174 0 (const uint) +0:175 Sequence +0:175 move second child to first child ( temp highp 3-component vector of float) +0:175 'v' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 0.000000 +0:175 0.000000 +0:175 1.000000 +0:176 Branch: Return with expression +0:176 'v' ( temp highp 3-component vector of float) +0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:178 Function Parameters: +0:178 'index' ( in highp int) +0:179 Sequence +0:179 subtract second child into first child ( temp highp int) +0:179 'index' ( in highp int) +0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:179 Constant: +0:179 0 (const uint) +0:180 Sequence +0:180 move second child to first child ( temp highp 3-component vector of float) +0:180 'v' ( temp highp 3-component vector of float) +0:180 Constant: +0:180 0.000000 +0:180 1.000000 +0:180 0.000000 +0:181 Branch: Return with expression +0:181 'v' ( temp highp 3-component vector of float) +0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:183 Function Parameters: +0:183 'id' ( in highp int) +0:184 Sequence +0:184 Sequence +0:184 move second child to first child ( temp bool) +0:184 'instanceActive' ( temp bool) +0:184 Constant: +0:184 true (const bool) +0:185 Sequence +0:185 move second child to first child ( temp highp 3-component vector of float) +0:185 't' ( temp highp 3-component vector of float) +0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:185 'id' ( in highp int) +0:185 'instanceActive' ( temp bool) +0:186 Test condition and select ( temp void) +0:186 Condition +0:186 Negate conditional ( temp bool) +0:186 'instanceActive' ( temp bool) +0:186 true case +0:188 Sequence +0:188 Branch: Return with expression +0:188 Constant: +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:190 Sequence +0:190 move second child to first child ( temp highp 4X4 matrix of float) +0:190 'm' ( temp highp 4X4 matrix of float) +0:190 Constant: +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:192 Sequence +0:192 Sequence +0:192 move second child to first child ( temp highp 3-component vector of float) +0:192 'tt' ( temp highp 3-component vector of float) +0:192 't' ( temp highp 3-component vector of float) +0:193 add second child into first child ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 3 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 component-wise multiply ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 0 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 direct index ( temp highp float) +0:193 'tt' ( temp highp 3-component vector of float) +0:193 Constant: +0:193 0 (const int) +0:194 add second child into first child ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 3 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 component-wise multiply ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 0 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 direct index ( temp highp float) +0:194 'tt' ( temp highp 3-component vector of float) +0:194 Constant: +0:194 0 (const int) +0:195 add second child into first child ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 3 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 component-wise multiply ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 0 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 direct index ( temp highp float) +0:195 'tt' ( temp highp 3-component vector of float) +0:195 Constant: +0:195 0 (const int) +0:196 add second child into first child ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 3 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 component-wise multiply ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 0 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 direct index ( temp highp float) +0:196 'tt' ( temp highp 3-component vector of float) +0:196 Constant: +0:196 0 (const int) +0:197 add second child into first child ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 3 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 component-wise multiply ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 1 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 direct index ( temp highp float) +0:197 'tt' ( temp highp 3-component vector of float) +0:197 Constant: +0:197 1 (const int) +0:198 add second child into first child ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 3 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 component-wise multiply ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 1 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 direct index ( temp highp float) +0:198 'tt' ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1 (const int) +0:199 add second child into first child ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 3 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 component-wise multiply ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 1 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 direct index ( temp highp float) +0:199 'tt' ( temp highp 3-component vector of float) +0:199 Constant: +0:199 1 (const int) +0:200 add second child into first child ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 3 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 component-wise multiply ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 1 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 direct index ( temp highp float) +0:200 'tt' ( temp highp 3-component vector of float) +0:200 Constant: +0:200 1 (const int) +0:201 add second child into first child ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 3 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 component-wise multiply ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 2 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 direct index ( temp highp float) +0:201 'tt' ( temp highp 3-component vector of float) +0:201 Constant: +0:201 2 (const int) +0:202 add second child into first child ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 3 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 component-wise multiply ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 2 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 direct index ( temp highp float) +0:202 'tt' ( temp highp 3-component vector of float) +0:202 Constant: +0:202 2 (const int) +0:203 add second child into first child ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 3 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 component-wise multiply ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 2 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 direct index ( temp highp float) +0:203 'tt' ( temp highp 3-component vector of float) +0:203 Constant: +0:203 2 (const int) +0:204 add second child into first child ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 3 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 component-wise multiply ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 2 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 direct index ( temp highp float) +0:204 'tt' ( temp highp 3-component vector of float) +0:204 Constant: +0:204 2 (const int) +0:206 Branch: Return with expression +0:206 'm' ( temp highp 4X4 matrix of float) +0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:208 Function Parameters: +0:208 'id' ( in highp int) +0:209 Sequence +0:209 Sequence +0:209 move second child to first child ( temp highp 3X3 matrix of float) +0:209 'm' ( temp highp 3X3 matrix of float) +0:209 Constant: +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:210 Branch: Return with expression +0:210 'm' ( temp highp 3X3 matrix of float) +0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 Sequence +0:213 move second child to first child ( temp highp 3X3 matrix of float) +0:213 'm' ( temp highp 3X3 matrix of float) +0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:213 'id' ( in highp int) +0:214 Branch: Return with expression +0:214 'm' ( temp highp 3X3 matrix of float) +0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:216 Function Parameters: +0:216 'index' ( in highp int) +0:216 'curColor' ( in highp 4-component vector of float) +0:217 Sequence +0:217 subtract second child into first child ( temp highp int) +0:217 'index' ( in highp int) +0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:217 Constant: +0:217 0 (const uint) +0:219 Sequence +0:219 move second child to first child ( temp highp int) +0:219 'coord' ( temp highp int) +0:219 'index' ( in highp int) +0:220 Sequence +0:220 move second child to first child ( temp highp 4-component vector of float) +0:220 'samp' ( temp highp 4-component vector of float) +0:220 textureFetch ( global highp 4-component vector of float) +0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:220 'coord' ( temp highp int) +0:221 move second child to first child ( temp highp float) +0:221 direct index ( temp highp float) +0:221 'v' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:221 direct index ( temp highp float) +0:221 'samp' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:222 move second child to first child ( temp highp float) +0:222 direct index ( temp highp float) +0:222 'v' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:222 direct index ( temp highp float) +0:222 'samp' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:223 move second child to first child ( temp highp float) +0:223 direct index ( temp highp float) +0:223 'v' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:223 direct index ( temp highp float) +0:223 'samp' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:224 move second child to first child ( temp highp float) +0:224 direct index ( temp highp float) +0:224 'v' ( temp highp 4-component vector of float) +0:224 Constant: +0:224 3 (const int) +0:224 Constant: +0:224 1.000000 +0:225 move second child to first child ( temp highp float) +0:225 direct index ( temp highp float) +0:225 'curColor' ( in highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:225 direct index ( temp highp float) +0:225 'v' ( temp highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:227 move second child to first child ( temp highp float) +0:227 direct index ( temp highp float) +0:227 'curColor' ( in highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:227 direct index ( temp highp float) +0:227 'v' ( temp highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:229 move second child to first child ( temp highp float) +0:229 direct index ( temp highp float) +0:229 'curColor' ( in highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:229 direct index ( temp highp float) +0:229 'v' ( temp highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:231 Branch: Return with expression +0:231 'curColor' ( in highp 4-component vector of float) +0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:233 Function Parameters: +0:233 'id' ( in highp int) +0:233 'pos' ( in highp 4-component vector of float) +0:234 Sequence +0:234 move second child to first child ( temp highp 4-component vector of float) +0:234 'pos' ( in highp 4-component vector of float) +0:234 matrix-times-vector ( temp highp 4-component vector of float) +0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:234 'id' ( in highp int) +0:234 'pos' ( in highp 4-component vector of float) +0:235 Branch: Return with expression +0:235 matrix-times-vector ( temp highp 4-component vector of float) +0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:235 Constant: +0:235 0 (const uint) +0:235 Function Call: TDCameraIndex( ( global highp int) +0:235 Constant: +0:235 0 (const int) +0:235 'pos' ( in highp 4-component vector of float) +0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:238 Function Parameters: +0:238 'id' ( in highp int) +0:238 'vec' ( in highp 3-component vector of float) +0:240 Sequence +0:240 Sequence +0:240 move second child to first child ( temp highp 3X3 matrix of float) +0:240 'm' ( temp highp 3X3 matrix of float) +0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:240 'id' ( in highp int) +0:241 Branch: Return with expression +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 Construct mat3 ( temp highp 3X3 matrix of float) +0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:241 Constant: +0:241 0 (const uint) +0:241 Function Call: TDCameraIndex( ( global highp int) +0:241 Constant: +0:241 0 (const int) +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 'm' ( temp highp 3X3 matrix of float) +0:241 'vec' ( in highp 3-component vector of float) +0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:243 Function Parameters: +0:243 'id' ( in highp int) +0:243 'vec' ( in highp 3-component vector of float) +0:245 Sequence +0:245 Sequence +0:245 move second child to first child ( temp highp 3X3 matrix of float) +0:245 'm' ( temp highp 3X3 matrix of float) +0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:245 'id' ( in highp int) +0:246 Branch: Return with expression +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 Construct mat3 ( temp highp 3X3 matrix of float) +0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float) +0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:246 Constant: +0:246 0 (const uint) +0:246 Function Call: TDCameraIndex( ( global highp int) +0:246 Constant: +0:246 13 (const int) +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 'm' ( temp highp 3X3 matrix of float) +0:246 'vec' ( in highp 3-component vector of float) +0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:248 Function Parameters: +0:248 'pos' ( in highp 4-component vector of float) +0:249 Sequence +0:249 Branch: Return with expression +0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:249 Function Call: TDInstanceID( ( global highp int) +0:249 'pos' ( in highp 4-component vector of float) +0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float) +0:251 Function Parameters: +0:251 'vec' ( in highp 3-component vector of float) +0:252 Sequence +0:252 Branch: Return with expression +0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:252 Function Call: TDInstanceID( ( global highp int) +0:252 'vec' ( in highp 3-component vector of float) +0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float) +0:254 Function Parameters: +0:254 'vec' ( in highp 3-component vector of float) +0:255 Sequence +0:255 Branch: Return with expression +0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:255 Function Call: TDInstanceID( ( global highp int) +0:255 'vec' ( in highp 3-component vector of float) +0:257 Function Definition: TDInstanceActive( ( global bool) +0:257 Function Parameters: +0:257 Sequence +0:257 Branch: Return with expression +0:257 Function Call: TDInstanceActive(i1; ( global bool) +0:257 Function Call: TDInstanceID( ( global highp int) +0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float) +0:258 Function Parameters: +0:258 Sequence +0:258 Branch: Return with expression +0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:258 Function Call: TDInstanceID( ( global highp int) +0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float) +0:259 Function Parameters: +0:259 Sequence +0:259 Branch: Return with expression +0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:259 Function Call: TDInstanceID( ( global highp int) +0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float) +0:260 Function Parameters: +0:260 Sequence +0:260 Branch: Return with expression +0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:260 Function Call: TDInstanceID( ( global highp int) +0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float) +0:261 Function Parameters: +0:261 Sequence +0:261 Branch: Return with expression +0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:261 Function Call: TDInstanceID( ( global highp int) +0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float) +0:263 Function Parameters: +0:263 Sequence +0:263 Branch: Return with expression +0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:263 Function Call: TDInstanceID( ( global highp int) +0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:265 Function Parameters: +0:265 't' ( in highp 3-component vector of float) +0:266 Sequence +0:266 Branch: Return with expression +0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:266 Function Call: TDInstanceID( ( global highp int) +0:266 't' ( in highp 3-component vector of float) +0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:268 Function Parameters: +0:268 'curColor' ( in highp 4-component vector of float) +0:269 Sequence +0:269 Branch: Return with expression +0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:269 Function Call: TDInstanceID( ( global highp int) +0:269 'curColor' ( in highp 4-component vector of float) +0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:271 Function Parameters: +0:271 'pos' ( in highp 4-component vector of float) +0:271 Sequence +0:271 Branch: Return with expression +0:271 'pos' ( in highp 4-component vector of float) +0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:273 Function Parameters: +0:273 'vec' ( in highp 3-component vector of float) +0:273 Sequence +0:273 Branch: Return with expression +0:273 'vec' ( in highp 3-component vector of float) +0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float) +0:275 Function Parameters: +0:275 'oldNorm' ( in highp 3-component vector of float) +0:275 'oldTangent' ( in highp 4-component vector of float) +0:275 'deformedNorm' ( in highp 3-component vector of float) +0:276 Sequence +0:276 Branch: Return with expression +0:276 vector swizzle ( temp highp 3-component vector of float) +0:276 'oldTangent' ( in highp 4-component vector of float) +0:276 Sequence +0:276 Constant: +0:276 0 (const int) +0:276 Constant: +0:276 1 (const int) +0:276 Constant: +0:276 2 (const int) +0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float) +0:277 Function Parameters: +0:277 'index' ( in highp int) +0:278 Sequence +0:278 Branch: Return with expression +0:278 Constant: +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float) +0:280 Function Parameters: +0:280 'pos' ( in highp 4-component vector of float) +0:281 Sequence +0:281 move second child to first child ( temp highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:282 move second child to first child ( temp highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:283 Branch: Return with expression +0:283 'pos' ( in highp 4-component vector of float) +0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:286 Function Parameters: +0:286 'instanceID' ( in highp int) +0:286 'p' ( in highp 3-component vector of float) +0:287 Sequence +0:287 Sequence +0:287 move second child to first child ( temp highp 4-component vector of float) +0:287 'pos' ( temp highp 4-component vector of float) +0:287 Construct vec4 ( temp highp 4-component vector of float) +0:287 'p' ( in highp 3-component vector of float) +0:287 Constant: +0:287 1.000000 +0:288 move second child to first child ( temp highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:289 move second child to first child ( temp highp 4-component vector of float) +0:289 'pos' ( temp highp 4-component vector of float) +0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:289 'instanceID' ( in highp int) +0:289 'pos' ( temp highp 4-component vector of float) +0:290 Branch: Return with expression +0:290 'pos' ( temp highp 4-component vector of float) +0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float) +0:293 Function Parameters: +0:293 'pos' ( in highp 3-component vector of float) +0:294 Sequence +0:294 Branch: Return with expression +0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:294 Function Call: TDInstanceID( ( global highp int) +0:294 'pos' ( in highp 3-component vector of float) +0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:297 Function Parameters: +0:297 'instanceID' ( in highp int) +0:297 'vec' ( in highp 3-component vector of float) +0:298 Sequence +0:298 move second child to first child ( temp highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:299 move second child to first child ( temp highp 3-component vector of float) +0:299 'vec' ( in highp 3-component vector of float) +0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:299 'instanceID' ( in highp int) +0:299 'vec' ( in highp 3-component vector of float) +0:300 Branch: Return with expression +0:300 'vec' ( in highp 3-component vector of float) +0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float) +0:303 Function Parameters: +0:303 'vec' ( in highp 3-component vector of float) +0:304 Sequence +0:304 Branch: Return with expression +0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:304 Function Call: TDInstanceID( ( global highp int) +0:304 'vec' ( in highp 3-component vector of float) +0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:307 Function Parameters: +0:307 'instanceID' ( in highp int) +0:307 'vec' ( in highp 3-component vector of float) +0:308 Sequence +0:308 move second child to first child ( temp highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:309 move second child to first child ( temp highp 3-component vector of float) +0:309 'vec' ( in highp 3-component vector of float) +0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:309 'instanceID' ( in highp int) +0:309 'vec' ( in highp 3-component vector of float) +0:310 Branch: Return with expression +0:310 'vec' ( in highp 3-component vector of float) +0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float) +0:313 Function Parameters: +0:313 'vec' ( in highp 3-component vector of float) +0:314 Sequence +0:314 Branch: Return with expression +0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:314 Function Call: TDInstanceID( ( global highp int) +0:314 'vec' ( in highp 3-component vector of float) +0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float) +0:317 Function Parameters: +0:317 'vec' ( in highp 3-component vector of float) +0:318 Sequence +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:319 Branch: Return with expression +0:319 'vec' ( in highp 3-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) + +vk.relaxed.stagelink.0.0.frag +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:95 Function Definition: main( ( global void) +0:95 Function Parameters: +0:99 Sequence +0:99 Function Call: TDCheckDiscard( ( global void) +0:101 Sequence +0:101 move second child to first child ( temp highp 4-component vector of float) +0:101 'outcol' ( temp highp 4-component vector of float) +0:101 Constant: +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:103 Sequence +0:103 move second child to first child ( temp highp 3-component vector of float) +0:103 'texCoord0' ( temp highp 3-component vector of float) +0:103 vector swizzle ( temp highp 3-component vector of float) +0:103 texCoord0: direct index for structure ( in highp 3-component vector of float) +0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:103 Constant: +0:103 2 (const int) +0:103 Sequence +0:103 Constant: +0:103 0 (const int) +0:103 Constant: +0:103 1 (const int) +0:103 Constant: +0:103 2 (const int) +0:104 Sequence +0:104 move second child to first child ( temp highp float) +0:104 'actualTexZ' ( temp highp float) +0:104 mod ( global highp float) +0:104 Convert int to float ( temp highp float) +0:104 Convert float to int ( temp highp int) +0:104 direct index ( temp highp float) +0:104 'texCoord0' ( temp highp 3-component vector of float) +0:104 Constant: +0:104 2 (const int) +0:104 Constant: +0:104 2048.000000 +0:105 Sequence +0:105 move second child to first child ( temp highp float) +0:105 'instanceLoop' ( temp highp float) +0:105 Floor ( global highp float) +0:105 Convert int to float ( temp highp float) +0:105 divide ( temp highp int) +0:105 Convert float to int ( temp highp int) +0:105 direct index ( temp highp float) +0:105 'texCoord0' ( temp highp 3-component vector of float) +0:105 Constant: +0:105 2 (const int) +0:105 Constant: +0:105 2048 (const int) +0:106 move second child to first child ( temp highp float) +0:106 direct index ( temp highp float) +0:106 'texCoord0' ( temp highp 3-component vector of float) +0:106 Constant: +0:106 2 (const int) +0:106 'actualTexZ' ( temp highp float) +0:107 Sequence +0:107 move second child to first child ( temp highp 4-component vector of float) +0:107 'colorMapColor' ( temp highp 4-component vector of float) +0:107 texture ( global highp 4-component vector of float) +0:107 'sColorMap' ( uniform highp sampler2DArray) +0:107 vector swizzle ( temp highp 3-component vector of float) +0:107 'texCoord0' ( temp highp 3-component vector of float) +0:107 Sequence +0:107 Constant: +0:107 0 (const int) +0:107 Constant: +0:107 1 (const int) +0:107 Constant: +0:107 2 (const int) +0:109 Sequence +0:109 move second child to first child ( temp highp float) +0:109 'red' ( temp highp float) +0:109 indirect index ( temp highp float) +0:109 'colorMapColor' ( temp highp 4-component vector of float) +0:109 Convert float to int ( temp highp int) +0:109 'instanceLoop' ( temp highp float) +0:110 move second child to first child ( temp highp 4-component vector of float) +0:110 'colorMapColor' ( temp highp 4-component vector of float) +0:110 Construct vec4 ( temp highp 4-component vector of float) +0:110 'red' ( temp highp float) +0:112 add second child into first child ( temp highp 3-component vector of float) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 'outcol' ( temp highp 4-component vector of float) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:112 component-wise multiply ( temp highp 3-component vector of float) +0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float) +0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:112 Constant: +0:112 3 (const uint) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 color: direct index for structure ( in highp 4-component vector of float) +0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:112 Constant: +0:112 0 (const int) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:114 multiply second child into first child ( temp highp 4-component vector of float) +0:114 'outcol' ( temp highp 4-component vector of float) +0:114 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Sequence +0:117 move second child to first child ( temp highp float) +0:117 'alpha' ( temp highp float) +0:117 component-wise multiply ( temp highp float) +0:117 direct index ( temp highp float) +0:117 color: direct index for structure ( in highp 4-component vector of float) +0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:117 Constant: +0:117 0 (const int) +0:117 Constant: +0:117 3 (const int) +0:117 direct index ( temp highp float) +0:117 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Constant: +0:117 3 (const int) +0:120 move second child to first child ( temp highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:122 vector scale second child into first child ( temp highp 3-component vector of float) +0:122 vector swizzle ( temp highp 3-component vector of float) +0:122 'outcol' ( temp highp 4-component vector of float) +0:122 Sequence +0:122 Constant: +0:122 0 (const int) +0:122 Constant: +0:122 1 (const int) +0:122 Constant: +0:122 2 (const int) +0:122 'alpha' ( temp highp float) +0:126 Function Call: TDAlphaTest(f1; ( global void) +0:126 'alpha' ( temp highp float) +0:128 move second child to first child ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'outcol' ( temp highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:128 'alpha' ( temp highp float) +0:129 move second child to first child ( temp highp 4-component vector of float) +0:129 direct index (layout( location=0) temp highp 4-component vector of float) +0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:129 'outcol' ( temp highp 4-component vector of float) +0:135 Sequence +0:135 Sequence +0:135 move second child to first child ( temp highp int) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop with condition tested first +0:135 Loop Condition +0:135 Compare Less Than ( temp bool) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop Body +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 indirect index (layout( location=0) temp highp 4-component vector of float) +0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:137 'i' ( temp highp int) +0:137 Constant: +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:135 Loop Terminal Expression +0:135 Post-Increment ( temp highp int) +0:135 'i' ( temp highp int) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sColorMap' ( uniform highp sampler2DArray) +0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) + +vk.relaxed.stagelink.0.1.frag +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float) +0:116 Function Parameters: +0:116 'color' ( in highp 4-component vector of float) +0:116 Sequence +0:116 Branch: Return with expression +0:116 'color' ( in highp 4-component vector of float) +0:117 Function Definition: TDCheckOrderIndTrans( ( global void) +0:117 Function Parameters: +0:119 Function Definition: TDCheckDiscard( ( global void) +0:119 Function Parameters: +0:120 Sequence +0:120 Function Call: TDCheckOrderIndTrans( ( global void) +0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float) +0:122 Function Parameters: +0:122 'color' ( in highp 4-component vector of float) +0:124 Sequence +0:124 Sequence +0:124 move second child to first child ( temp highp float) +0:124 'd' ( temp highp float) +0:125 direct index ( temp highp float) +0:125 texture ( global highp 4-component vector of float) +0:124 'sTDNoiseMap' ( uniform highp sampler2D) +0:125 divide ( temp highp 2-component vector of float) +0:125 vector swizzle ( temp highp 2-component vector of float) +0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) +0:125 Sequence +0:125 Constant: +0:125 0 (const int) +0:125 Constant: +0:125 1 (const int) +0:125 Constant: +0:125 256.000000 +0:125 Constant: +0:125 0 (const int) +0:126 subtract second child into first child ( temp highp float) +0:126 'd' ( temp highp float) +0:126 Constant: +0:126 0.500000 +0:127 divide second child into first child ( temp highp float) +0:127 'd' ( temp highp float) +0:127 Constant: +0:127 256.000000 +0:128 Branch: Return with expression +0:128 Construct vec4 ( temp highp 4-component vector of float) +0:128 add ( temp highp 3-component vector of float) +0:128 vector swizzle ( temp highp 3-component vector of float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Sequence +0:128 Constant: +0:128 0 (const int) +0:128 Constant: +0:128 1 (const int) +0:128 Constant: +0:128 2 (const int) +0:128 'd' ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool) +0:130 Function Parameters: +0:130 'pos' ( in highp 3-component vector of float) +0:130 'normal' ( in highp 3-component vector of float) +0:132 Sequence +0:132 Branch: Return with expression +0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float) +0:134 Function Parameters: +0:134 'index' ( in highp int) +0:134 'lightDist' ( in highp float) +0:136 Sequence +0:136 Branch: Return with expression +0:136 Constant: +0:136 1.000000 +0:138 Function Definition: TDAlphaTest(f1; ( global void) +0:138 Function Parameters: +0:138 'alpha' ( in highp float) +0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float) +0:140 Function Parameters: +0:140 'lightIndex' ( in highp int) +0:140 'worldSpacePos' ( in highp 3-component vector of float) +0:141 Sequence +0:141 Branch: Return with expression +0:141 Constant: +0:141 0.000000 +0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float) +0:142 Function Parameters: +0:142 'lightIndex' ( in highp int) +0:142 'worldSpacePos' ( in highp 3-component vector of float) +0:142 'samples' ( in highp int) +0:142 'steps' ( in highp int) +0:143 Sequence +0:143 Branch: Return with expression +0:143 Constant: +0:143 0.000000 +0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float) +0:144 Function Parameters: +0:144 'lightIndex' ( in highp int) +0:144 'worldSpacePos' ( in highp 3-component vector of float) +0:145 Sequence +0:145 Branch: Return with expression +0:145 Constant: +0:145 0.000000 +0:146 Function Definition: TDShadow(i1;vf3; ( global highp float) +0:146 Function Parameters: +0:146 'lightIndex' ( in highp int) +0:146 'worldSpacePos' ( in highp 3-component vector of float) +0:147 Sequence +0:147 Branch: Return with expression +0:147 Constant: +0:147 0.000000 +0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float) +0:152 Function Parameters: +0:152 'bits' ( in highp uint) +0:154 Sequence +0:154 move second child to first child ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 inclusive-or ( temp highp uint) +0:154 left-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:154 right-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:155 move second child to first child ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 inclusive-or ( temp highp uint) +0:155 left-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 1431655765 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:155 right-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 2863311530 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:156 move second child to first child ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 inclusive-or ( temp highp uint) +0:156 left-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 858993459 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:156 right-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 3435973836 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:157 move second child to first child ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 inclusive-or ( temp highp uint) +0:157 left-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 252645135 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:157 right-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 4042322160 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:158 move second child to first child ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 inclusive-or ( temp highp uint) +0:158 left-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 16711935 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:158 right-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 4278255360 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:159 Branch: Return with expression +0:159 component-wise multiply ( temp highp float) +0:159 Convert uint to float ( temp highp float) +0:159 'bits' ( in highp uint) +0:159 Constant: +0:159 2.3283064365387e-10 +0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float) +0:161 Function Parameters: +0:161 'i' ( in highp uint) +0:161 'N' ( in highp uint) +0:163 Sequence +0:163 Branch: Return with expression +0:163 Construct vec2 ( temp highp 2-component vector of float) +0:163 divide ( temp highp float) +0:163 Convert uint to float ( temp highp float) +0:163 'i' ( in highp uint) +0:163 Convert uint to float ( temp highp float) +0:163 'N' ( in highp uint) +0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float) +0:163 'i' ( in highp uint) +0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float) +0:165 Function Parameters: +0:165 'Xi' ( in highp 2-component vector of float) +0:165 'roughness2' ( in highp float) +0:165 'N' ( in highp 3-component vector of float) +0:167 Sequence +0:167 Sequence +0:167 move second child to first child ( temp highp float) +0:167 'a' ( temp highp float) +0:167 'roughness2' ( in highp float) +0:168 Sequence +0:168 move second child to first child ( temp highp float) +0:168 'phi' ( temp highp float) +0:168 component-wise multiply ( temp highp float) +0:168 Constant: +0:168 6.283185 +0:168 direct index ( temp highp float) +0:168 'Xi' ( in highp 2-component vector of float) +0:168 Constant: +0:168 0 (const int) +0:169 Sequence +0:169 move second child to first child ( temp highp float) +0:169 'cosTheta' ( temp highp float) +0:169 sqrt ( global highp float) +0:169 divide ( temp highp float) +0:169 subtract ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:169 add ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 component-wise multiply ( temp highp float) +0:169 subtract ( temp highp float) +0:169 component-wise multiply ( temp highp float) +0:169 'a' ( temp highp float) +0:169 'a' ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:170 Sequence +0:170 move second child to first child ( temp highp float) +0:170 'sinTheta' ( temp highp float) +0:170 sqrt ( global highp float) +0:170 subtract ( temp highp float) +0:170 Constant: +0:170 1.000000 +0:170 component-wise multiply ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:173 move second child to first child ( temp highp float) +0:173 direct index ( temp highp float) +0:173 'H' ( temp highp 3-component vector of float) +0:173 Constant: +0:173 0 (const int) +0:173 component-wise multiply ( temp highp float) +0:173 'sinTheta' ( temp highp float) +0:173 cosine ( global highp float) +0:173 'phi' ( temp highp float) +0:174 move second child to first child ( temp highp float) +0:174 direct index ( temp highp float) +0:174 'H' ( temp highp 3-component vector of float) +0:174 Constant: +0:174 1 (const int) +0:174 component-wise multiply ( temp highp float) +0:174 'sinTheta' ( temp highp float) +0:174 sine ( global highp float) +0:174 'phi' ( temp highp float) +0:175 move second child to first child ( temp highp float) +0:175 direct index ( temp highp float) +0:175 'H' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 2 (const int) +0:175 'cosTheta' ( temp highp float) +0:177 Sequence +0:177 move second child to first child ( temp highp 3-component vector of float) +0:177 'upVector' ( temp highp 3-component vector of float) +0:177 Test condition and select ( temp highp 3-component vector of float) +0:177 Condition +0:177 Compare Less Than ( temp bool) +0:177 Absolute value ( global highp float) +0:177 direct index ( temp highp float) +0:177 'N' ( in highp 3-component vector of float) +0:177 Constant: +0:177 2 (const int) +0:177 Constant: +0:177 0.999000 +0:177 true case +0:177 Constant: +0:177 0.000000 +0:177 0.000000 +0:177 1.000000 +0:177 false case +0:177 Constant: +0:177 1.000000 +0:177 0.000000 +0:177 0.000000 +0:178 Sequence +0:178 move second child to first child ( temp highp 3-component vector of float) +0:178 'tangentX' ( temp highp 3-component vector of float) +0:178 normalize ( global highp 3-component vector of float) +0:178 cross-product ( global highp 3-component vector of float) +0:178 'upVector' ( temp highp 3-component vector of float) +0:178 'N' ( in highp 3-component vector of float) +0:179 Sequence +0:179 move second child to first child ( temp highp 3-component vector of float) +0:179 'tangentY' ( temp highp 3-component vector of float) +0:179 cross-product ( global highp 3-component vector of float) +0:179 'N' ( in highp 3-component vector of float) +0:179 'tangentX' ( temp highp 3-component vector of float) +0:182 Sequence +0:182 move second child to first child ( temp highp 3-component vector of float) +0:182 'worldResult' ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentX' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 0 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentY' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 1 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'N' ( in highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 2 (const int) +0:183 Branch: Return with expression +0:183 'worldResult' ( temp highp 3-component vector of float) +0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float) +0:185 Function Parameters: +0:185 'normal' ( in highp 3-component vector of float) +0:185 'half_vector' ( in highp 3-component vector of float) +0:185 'roughness2' ( in highp float) +0:? Sequence +0:189 Sequence +0:189 move second child to first child ( temp highp float) +0:189 'NdotH' ( temp highp float) +0:189 clamp ( global highp float) +0:189 dot-product ( global highp float) +0:189 'normal' ( in highp 3-component vector of float) +0:189 'half_vector' ( in highp 3-component vector of float) +0:189 Constant: +0:189 1.0000000000000e-06 +0:189 Constant: +0:189 1.000000 +0:191 Sequence +0:191 move second child to first child ( temp highp float) +0:191 'alpha2' ( temp highp float) +0:191 component-wise multiply ( temp highp float) +0:191 'roughness2' ( in highp float) +0:191 'roughness2' ( in highp float) +0:193 Sequence +0:193 move second child to first child ( temp highp float) +0:193 'denom' ( temp highp float) +0:193 add ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 subtract ( temp highp float) +0:193 'alpha2' ( temp highp float) +0:193 Constant: +0:193 1.000000 +0:193 Constant: +0:193 1.000000 +0:194 move second child to first child ( temp highp float) +0:194 'denom' ( temp highp float) +0:194 max ( global highp float) +0:194 Constant: +0:194 1.0000000000000e-08 +0:194 'denom' ( temp highp float) +0:195 Branch: Return with expression +0:195 divide ( temp highp float) +0:195 'alpha2' ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 Constant: +0:195 3.141593 +0:195 'denom' ( temp highp float) +0:195 'denom' ( temp highp float) +0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float) +0:197 Function Parameters: +0:197 'F0' ( in highp 3-component vector of float) +0:197 'VdotH' ( in highp float) +0:198 Sequence +0:198 Branch: Return with expression +0:198 add ( temp highp 3-component vector of float) +0:198 'F0' ( in highp 3-component vector of float) +0:198 vector-scale ( temp highp 3-component vector of float) +0:198 subtract ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1.000000 +0:198 1.000000 +0:198 1.000000 +0:198 'F0' ( in highp 3-component vector of float) +0:198 pow ( global highp float) +0:198 Constant: +0:198 2.000000 +0:198 component-wise multiply ( temp highp float) +0:198 subtract ( temp highp float) +0:198 component-wise multiply ( temp highp float) +0:198 Constant: +0:198 -5.554730 +0:198 'VdotH' ( in highp float) +0:198 Constant: +0:198 6.983160 +0:198 'VdotH' ( in highp float) +0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float) +0:201 Function Parameters: +0:201 'NdotL' ( in highp float) +0:201 'NdotV' ( in highp float) +0:201 'k' ( in highp float) +0:202 Sequence +0:202 Sequence +0:202 move second child to first child ( temp highp float) +0:202 'Gl' ( temp highp float) +0:202 divide ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 add ( temp highp float) +0:202 component-wise multiply ( temp highp float) +0:202 'NdotL' ( in highp float) +0:202 subtract ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 'k' ( in highp float) +0:202 'k' ( in highp float) +0:203 Sequence +0:203 move second child to first child ( temp highp float) +0:203 'Gv' ( temp highp float) +0:203 divide ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 add ( temp highp float) +0:203 component-wise multiply ( temp highp float) +0:203 'NdotV' ( in highp float) +0:203 subtract ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 'k' ( in highp float) +0:203 'k' ( in highp float) +0:204 Branch: Return with expression +0:204 component-wise multiply ( temp highp float) +0:204 'Gl' ( temp highp float) +0:204 'Gv' ( temp highp float) +0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:207 Function Parameters: +0:207 'index' ( in highp int) +0:207 'diffuseColor' ( in highp 3-component vector of float) +0:207 'specularColor' ( in highp 3-component vector of float) +0:207 'worldSpacePos' ( in highp 3-component vector of float) +0:207 'normal' ( in highp 3-component vector of float) +0:207 'shadowStrength' ( in highp float) +0:207 'shadowColor' ( in highp 3-component vector of float) +0:207 'camVector' ( in highp 3-component vector of float) +0:207 'roughness' ( in highp float) +0:? Sequence +0:210 Branch: Return with expression +0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:213 Function Parameters: +0:213 'diffuseContrib' ( inout highp 3-component vector of float) +0:213 'specularContrib' ( inout highp 3-component vector of float) +0:213 'shadowStrengthOut' ( inout highp float) +0:213 'index' ( in highp int) +0:213 'diffuseColor' ( in highp 3-component vector of float) +0:213 'specularColor' ( in highp 3-component vector of float) +0:213 'worldSpacePos' ( in highp 3-component vector of float) +0:213 'normal' ( in highp 3-component vector of float) +0:213 'shadowStrength' ( in highp float) +0:213 'shadowColor' ( in highp 3-component vector of float) +0:213 'camVector' ( in highp 3-component vector of float) +0:213 'roughness' ( in highp float) +0:215 Sequence +0:215 Sequence +0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'index' ( in highp int) +0:215 'diffuseColor' ( in highp 3-component vector of float) +0:215 'specularColor' ( in highp 3-component vector of float) +0:215 'worldSpacePos' ( in highp 3-component vector of float) +0:215 'normal' ( in highp 3-component vector of float) +0:215 'shadowStrength' ( in highp float) +0:215 'shadowColor' ( in highp 3-component vector of float) +0:215 'camVector' ( in highp 3-component vector of float) +0:215 'roughness' ( in highp float) +0:215 move second child to first child ( temp highp 3-component vector of float) +0:215 'diffuseContrib' ( inout highp 3-component vector of float) +0:215 diffuse: direct index for structure ( global highp 3-component vector of float) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Constant: +0:215 0 (const int) +0:216 move second child to first child ( temp highp 3-component vector of float) +0:216 'specularContrib' ( inout highp 3-component vector of float) +0:216 specular: direct index for structure ( global highp 3-component vector of float) +0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:216 Constant: +0:216 1 (const int) +0:217 move second child to first child ( temp highp float) +0:217 'shadowStrengthOut' ( inout highp float) +0:217 shadowStrength: direct index for structure ( global highp float) +0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:217 Constant: +0:217 2 (const int) +0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:220 Function Parameters: +0:220 'diffuseContrib' ( inout highp 3-component vector of float) +0:220 'specularContrib' ( inout highp 3-component vector of float) +0:220 'index' ( in highp int) +0:220 'diffuseColor' ( in highp 3-component vector of float) +0:220 'specularColor' ( in highp 3-component vector of float) +0:220 'worldSpacePos' ( in highp 3-component vector of float) +0:220 'normal' ( in highp 3-component vector of float) +0:220 'shadowStrength' ( in highp float) +0:220 'shadowColor' ( in highp 3-component vector of float) +0:220 'camVector' ( in highp 3-component vector of float) +0:220 'roughness' ( in highp float) +0:222 Sequence +0:222 Sequence +0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'index' ( in highp int) +0:222 'diffuseColor' ( in highp 3-component vector of float) +0:222 'specularColor' ( in highp 3-component vector of float) +0:222 'worldSpacePos' ( in highp 3-component vector of float) +0:222 'normal' ( in highp 3-component vector of float) +0:222 'shadowStrength' ( in highp float) +0:222 'shadowColor' ( in highp 3-component vector of float) +0:222 'camVector' ( in highp 3-component vector of float) +0:222 'roughness' ( in highp float) +0:222 move second child to first child ( temp highp 3-component vector of float) +0:222 'diffuseContrib' ( inout highp 3-component vector of float) +0:222 diffuse: direct index for structure ( global highp 3-component vector of float) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Constant: +0:222 0 (const int) +0:223 move second child to first child ( temp highp 3-component vector of float) +0:223 'specularContrib' ( inout highp 3-component vector of float) +0:223 specular: direct index for structure ( global highp 3-component vector of float) +0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:223 Constant: +0:223 1 (const int) +0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:226 Function Parameters: +0:226 'index' ( in highp int) +0:226 'diffuseColor' ( in highp 3-component vector of float) +0:226 'specularColor' ( in highp 3-component vector of float) +0:226 'normal' ( in highp 3-component vector of float) +0:226 'camVector' ( in highp 3-component vector of float) +0:226 'roughness' ( in highp float) +0:226 'ambientOcclusion' ( in highp float) +0:? Sequence +0:229 Branch: Return with expression +0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void) +0:232 Function Parameters: +0:232 'diffuseContrib' ( inout highp 3-component vector of float) +0:232 'specularContrib' ( inout highp 3-component vector of float) +0:232 'index' ( in highp int) +0:232 'diffuseColor' ( in highp 3-component vector of float) +0:232 'specularColor' ( in highp 3-component vector of float) +0:232 'normal' ( in highp 3-component vector of float) +0:232 'camVector' ( in highp 3-component vector of float) +0:232 'roughness' ( in highp float) +0:232 'ambientOcclusion' ( in highp float) +0:234 Sequence +0:234 Sequence +0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'index' ( in highp int) +0:234 'diffuseColor' ( in highp 3-component vector of float) +0:234 'specularColor' ( in highp 3-component vector of float) +0:234 'normal' ( in highp 3-component vector of float) +0:234 'camVector' ( in highp 3-component vector of float) +0:234 'roughness' ( in highp float) +0:234 'ambientOcclusion' ( in highp float) +0:235 move second child to first child ( temp highp 3-component vector of float) +0:235 'diffuseContrib' ( inout highp 3-component vector of float) +0:235 diffuse: direct index for structure ( global highp 3-component vector of float) +0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:235 Constant: +0:235 0 (const int) +0:236 move second child to first child ( temp highp 3-component vector of float) +0:236 'specularContrib' ( inout highp 3-component vector of float) +0:236 specular: direct index for structure ( global highp 3-component vector of float) +0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:236 Constant: +0:236 1 (const int) +0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:239 Function Parameters: +0:239 'index' ( in highp int) +0:239 'worldSpacePos' ( in highp 3-component vector of float) +0:239 'normal' ( in highp 3-component vector of float) +0:239 'shadowStrength' ( in highp float) +0:239 'shadowColor' ( in highp 3-component vector of float) +0:239 'camVector' ( in highp 3-component vector of float) +0:239 'shininess' ( in highp float) +0:239 'shininess2' ( in highp float) +0:? Sequence +0:242 switch +0:242 condition +0:242 'index' ( in highp int) +0:242 body +0:242 Sequence +0:244 default: +0:? Sequence +0:245 move second child to first child ( temp highp 3-component vector of float) +0:245 diffuse: direct index for structure ( global highp 3-component vector of float) +0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:245 Constant: +0:245 0 (const int) +0:245 Constant: +0:245 0.000000 +0:245 0.000000 +0:245 0.000000 +0:246 move second child to first child ( temp highp 3-component vector of float) +0:246 specular: direct index for structure ( global highp 3-component vector of float) +0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:246 Constant: +0:246 1 (const int) +0:246 Constant: +0:246 0.000000 +0:246 0.000000 +0:246 0.000000 +0:247 move second child to first child ( temp highp 3-component vector of float) +0:247 specular2: direct index for structure ( global highp 3-component vector of float) +0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:247 Constant: +0:247 2 (const int) +0:247 Constant: +0:247 0.000000 +0:247 0.000000 +0:247 0.000000 +0:248 move second child to first child ( temp highp float) +0:248 shadowStrength: direct index for structure ( global highp float) +0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:248 Constant: +0:248 3 (const int) +0:248 Constant: +0:248 0.000000 +0:249 Branch: Break +0:251 Branch: Return with expression +0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:254 Function Parameters: +0:254 'diffuseContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib2' ( inout highp 3-component vector of float) +0:254 'shadowStrengthOut' ( inout highp float) +0:254 'index' ( in highp int) +0:254 'worldSpacePos' ( in highp 3-component vector of float) +0:254 'normal' ( in highp 3-component vector of float) +0:254 'shadowStrength' ( in highp float) +0:254 'shadowColor' ( in highp 3-component vector of float) +0:254 'camVector' ( in highp 3-component vector of float) +0:254 'shininess' ( in highp float) +0:254 'shininess2' ( in highp float) +0:? Sequence +0:257 switch +0:257 condition +0:257 'index' ( in highp int) +0:257 body +0:257 Sequence +0:259 default: +0:? Sequence +0:260 move second child to first child ( temp highp 3-component vector of float) +0:260 diffuse: direct index for structure ( global highp 3-component vector of float) +0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:260 Constant: +0:260 0 (const int) +0:260 Constant: +0:260 0.000000 +0:260 0.000000 +0:260 0.000000 +0:261 move second child to first child ( temp highp 3-component vector of float) +0:261 specular: direct index for structure ( global highp 3-component vector of float) +0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:261 Constant: +0:261 1 (const int) +0:261 Constant: +0:261 0.000000 +0:261 0.000000 +0:261 0.000000 +0:262 move second child to first child ( temp highp 3-component vector of float) +0:262 specular2: direct index for structure ( global highp 3-component vector of float) +0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:262 Constant: +0:262 2 (const int) +0:262 Constant: +0:262 0.000000 +0:262 0.000000 +0:262 0.000000 +0:263 move second child to first child ( temp highp float) +0:263 shadowStrength: direct index for structure ( global highp float) +0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:263 Constant: +0:263 3 (const int) +0:263 Constant: +0:263 0.000000 +0:264 Branch: Break +0:266 move second child to first child ( temp highp 3-component vector of float) +0:266 'diffuseContrib' ( inout highp 3-component vector of float) +0:266 diffuse: direct index for structure ( global highp 3-component vector of float) +0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:266 Constant: +0:266 0 (const int) +0:267 move second child to first child ( temp highp 3-component vector of float) +0:267 'specularContrib' ( inout highp 3-component vector of float) +0:267 specular: direct index for structure ( global highp 3-component vector of float) +0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:267 Constant: +0:267 1 (const int) +0:268 move second child to first child ( temp highp 3-component vector of float) +0:268 'specularContrib2' ( inout highp 3-component vector of float) +0:268 specular2: direct index for structure ( global highp 3-component vector of float) +0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:268 Constant: +0:268 2 (const int) +0:269 move second child to first child ( temp highp float) +0:269 'shadowStrengthOut' ( inout highp float) +0:269 shadowStrength: direct index for structure ( global highp float) +0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:269 Constant: +0:269 3 (const int) +0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:272 Function Parameters: +0:272 'diffuseContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib2' ( inout highp 3-component vector of float) +0:272 'index' ( in highp int) +0:272 'worldSpacePos' ( in highp 3-component vector of float) +0:272 'normal' ( in highp 3-component vector of float) +0:272 'shadowStrength' ( in highp float) +0:272 'shadowColor' ( in highp 3-component vector of float) +0:272 'camVector' ( in highp 3-component vector of float) +0:272 'shininess' ( in highp float) +0:272 'shininess2' ( in highp float) +0:? Sequence +0:275 switch +0:275 condition +0:275 'index' ( in highp int) +0:275 body +0:275 Sequence +0:277 default: +0:? Sequence +0:278 move second child to first child ( temp highp 3-component vector of float) +0:278 diffuse: direct index for structure ( global highp 3-component vector of float) +0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:278 Constant: +0:278 0 (const int) +0:278 Constant: +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:279 move second child to first child ( temp highp 3-component vector of float) +0:279 specular: direct index for structure ( global highp 3-component vector of float) +0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:279 Constant: +0:279 1 (const int) +0:279 Constant: +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:280 move second child to first child ( temp highp 3-component vector of float) +0:280 specular2: direct index for structure ( global highp 3-component vector of float) +0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:280 Constant: +0:280 2 (const int) +0:280 Constant: +0:280 0.000000 +0:280 0.000000 +0:280 0.000000 +0:281 move second child to first child ( temp highp float) +0:281 shadowStrength: direct index for structure ( global highp float) +0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:281 Constant: +0:281 3 (const int) +0:281 Constant: +0:281 0.000000 +0:282 Branch: Break +0:284 move second child to first child ( temp highp 3-component vector of float) +0:284 'diffuseContrib' ( inout highp 3-component vector of float) +0:284 diffuse: direct index for structure ( global highp 3-component vector of float) +0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:284 Constant: +0:284 0 (const int) +0:285 move second child to first child ( temp highp 3-component vector of float) +0:285 'specularContrib' ( inout highp 3-component vector of float) +0:285 specular: direct index for structure ( global highp 3-component vector of float) +0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:285 Constant: +0:285 1 (const int) +0:286 move second child to first child ( temp highp 3-component vector of float) +0:286 'specularContrib2' ( inout highp 3-component vector of float) +0:286 specular2: direct index for structure ( global highp 3-component vector of float) +0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:286 Constant: +0:286 2 (const int) +0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:289 Function Parameters: +0:289 'diffuseContrib' ( inout highp 3-component vector of float) +0:289 'specularContrib' ( inout highp 3-component vector of float) +0:289 'index' ( in highp int) +0:289 'worldSpacePos' ( in highp 3-component vector of float) +0:289 'normal' ( in highp 3-component vector of float) +0:289 'shadowStrength' ( in highp float) +0:289 'shadowColor' ( in highp 3-component vector of float) +0:289 'camVector' ( in highp 3-component vector of float) +0:289 'shininess' ( in highp float) +0:? Sequence +0:292 switch +0:292 condition +0:292 'index' ( in highp int) +0:292 body +0:292 Sequence +0:294 default: +0:? Sequence +0:295 move second child to first child ( temp highp 3-component vector of float) +0:295 diffuse: direct index for structure ( global highp 3-component vector of float) +0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:295 Constant: +0:295 0 (const int) +0:295 Constant: +0:295 0.000000 +0:295 0.000000 +0:295 0.000000 +0:296 move second child to first child ( temp highp 3-component vector of float) +0:296 specular: direct index for structure ( global highp 3-component vector of float) +0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:296 Constant: +0:296 1 (const int) +0:296 Constant: +0:296 0.000000 +0:296 0.000000 +0:296 0.000000 +0:297 move second child to first child ( temp highp 3-component vector of float) +0:297 specular2: direct index for structure ( global highp 3-component vector of float) +0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:297 Constant: +0:297 2 (const int) +0:297 Constant: +0:297 0.000000 +0:297 0.000000 +0:297 0.000000 +0:298 move second child to first child ( temp highp float) +0:298 shadowStrength: direct index for structure ( global highp float) +0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:298 Constant: +0:298 3 (const int) +0:298 Constant: +0:298 0.000000 +0:299 Branch: Break +0:301 move second child to first child ( temp highp 3-component vector of float) +0:301 'diffuseContrib' ( inout highp 3-component vector of float) +0:301 diffuse: direct index for structure ( global highp 3-component vector of float) +0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:301 Constant: +0:301 0 (const int) +0:302 move second child to first child ( temp highp 3-component vector of float) +0:302 'specularContrib' ( inout highp 3-component vector of float) +0:302 specular: direct index for structure ( global highp 3-component vector of float) +0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:302 Constant: +0:302 1 (const int) +0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void) +0:305 Function Parameters: +0:305 'diffuseContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib2' ( inout highp 3-component vector of float) +0:305 'index' ( in highp int) +0:305 'worldSpacePos' ( in highp 3-component vector of float) +0:305 'normal' ( in highp 3-component vector of float) +0:305 'camVector' ( in highp 3-component vector of float) +0:305 'shininess' ( in highp float) +0:305 'shininess2' ( in highp float) +0:? Sequence +0:308 switch +0:308 condition +0:308 'index' ( in highp int) +0:308 body +0:308 Sequence +0:310 default: +0:? Sequence +0:311 move second child to first child ( temp highp 3-component vector of float) +0:311 diffuse: direct index for structure ( global highp 3-component vector of float) +0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:311 Constant: +0:311 0 (const int) +0:311 Constant: +0:311 0.000000 +0:311 0.000000 +0:311 0.000000 +0:312 move second child to first child ( temp highp 3-component vector of float) +0:312 specular: direct index for structure ( global highp 3-component vector of float) +0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:312 Constant: +0:312 1 (const int) +0:312 Constant: +0:312 0.000000 +0:312 0.000000 +0:312 0.000000 +0:313 move second child to first child ( temp highp 3-component vector of float) +0:313 specular2: direct index for structure ( global highp 3-component vector of float) +0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:313 Constant: +0:313 2 (const int) +0:313 Constant: +0:313 0.000000 +0:313 0.000000 +0:313 0.000000 +0:314 move second child to first child ( temp highp float) +0:314 shadowStrength: direct index for structure ( global highp float) +0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:314 Constant: +0:314 3 (const int) +0:314 Constant: +0:314 0.000000 +0:315 Branch: Break +0:317 move second child to first child ( temp highp 3-component vector of float) +0:317 'diffuseContrib' ( inout highp 3-component vector of float) +0:317 diffuse: direct index for structure ( global highp 3-component vector of float) +0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:317 Constant: +0:317 0 (const int) +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'specularContrib' ( inout highp 3-component vector of float) +0:318 specular: direct index for structure ( global highp 3-component vector of float) +0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:318 Constant: +0:318 1 (const int) +0:319 move second child to first child ( temp highp 3-component vector of float) +0:319 'specularContrib2' ( inout highp 3-component vector of float) +0:319 specular2: direct index for structure ( global highp 3-component vector of float) +0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:319 Constant: +0:319 2 (const int) +0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void) +0:322 Function Parameters: +0:322 'diffuseContrib' ( inout highp 3-component vector of float) +0:322 'specularContrib' ( inout highp 3-component vector of float) +0:322 'index' ( in highp int) +0:322 'worldSpacePos' ( in highp 3-component vector of float) +0:322 'normal' ( in highp 3-component vector of float) +0:322 'camVector' ( in highp 3-component vector of float) +0:322 'shininess' ( in highp float) +0:? Sequence +0:325 switch +0:325 condition +0:325 'index' ( in highp int) +0:325 body +0:325 Sequence +0:327 default: +0:? Sequence +0:328 move second child to first child ( temp highp 3-component vector of float) +0:328 diffuse: direct index for structure ( global highp 3-component vector of float) +0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:328 Constant: +0:328 0 (const int) +0:328 Constant: +0:328 0.000000 +0:328 0.000000 +0:328 0.000000 +0:329 move second child to first child ( temp highp 3-component vector of float) +0:329 specular: direct index for structure ( global highp 3-component vector of float) +0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:329 Constant: +0:329 1 (const int) +0:329 Constant: +0:329 0.000000 +0:329 0.000000 +0:329 0.000000 +0:330 move second child to first child ( temp highp 3-component vector of float) +0:330 specular2: direct index for structure ( global highp 3-component vector of float) +0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:330 Constant: +0:330 2 (const int) +0:330 Constant: +0:330 0.000000 +0:330 0.000000 +0:330 0.000000 +0:331 move second child to first child ( temp highp float) +0:331 shadowStrength: direct index for structure ( global highp float) +0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:331 Constant: +0:331 3 (const int) +0:331 Constant: +0:331 0.000000 +0:332 Branch: Break +0:334 move second child to first child ( temp highp 3-component vector of float) +0:334 'diffuseContrib' ( inout highp 3-component vector of float) +0:334 diffuse: direct index for structure ( global highp 3-component vector of float) +0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:334 Constant: +0:334 0 (const int) +0:335 move second child to first child ( temp highp 3-component vector of float) +0:335 'specularContrib' ( inout highp 3-component vector of float) +0:335 specular: direct index for structure ( global highp 3-component vector of float) +0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:335 Constant: +0:335 1 (const int) +0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void) +0:338 Function Parameters: +0:338 'diffuseContrib' ( inout highp 3-component vector of float) +0:338 'index' ( in highp int) +0:338 'worldSpacePos' ( in highp 3-component vector of float) +0:338 'normal' ( in highp 3-component vector of float) +0:? Sequence +0:341 switch +0:341 condition +0:341 'index' ( in highp int) +0:341 body +0:341 Sequence +0:343 default: +0:? Sequence +0:344 move second child to first child ( temp highp 3-component vector of float) +0:344 diffuse: direct index for structure ( global highp 3-component vector of float) +0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:344 Constant: +0:344 0 (const int) +0:344 Constant: +0:344 0.000000 +0:344 0.000000 +0:344 0.000000 +0:345 move second child to first child ( temp highp 3-component vector of float) +0:345 specular: direct index for structure ( global highp 3-component vector of float) +0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:345 Constant: +0:345 1 (const int) +0:345 Constant: +0:345 0.000000 +0:345 0.000000 +0:345 0.000000 +0:346 move second child to first child ( temp highp 3-component vector of float) +0:346 specular2: direct index for structure ( global highp 3-component vector of float) +0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:346 Constant: +0:346 2 (const int) +0:346 Constant: +0:346 0.000000 +0:346 0.000000 +0:346 0.000000 +0:347 move second child to first child ( temp highp float) +0:347 shadowStrength: direct index for structure ( global highp float) +0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:347 Constant: +0:347 3 (const int) +0:347 Constant: +0:347 0.000000 +0:348 Branch: Break +0:350 move second child to first child ( temp highp 3-component vector of float) +0:350 'diffuseContrib' ( inout highp 3-component vector of float) +0:350 diffuse: direct index for structure ( global highp 3-component vector of float) +0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:350 Constant: +0:350 0 (const int) +0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void) +0:353 Function Parameters: +0:353 'diffuseContrib' ( inout highp 3-component vector of float) +0:353 'index' ( in highp int) +0:353 'worldSpacePos' ( in highp 3-component vector of float) +0:353 'normal' ( in highp 3-component vector of float) +0:353 'shadowStrength' ( in highp float) +0:353 'shadowColor' ( in highp 3-component vector of float) +0:? Sequence +0:356 switch +0:356 condition +0:356 'index' ( in highp int) +0:356 body +0:356 Sequence +0:358 default: +0:? Sequence +0:359 move second child to first child ( temp highp 3-component vector of float) +0:359 diffuse: direct index for structure ( global highp 3-component vector of float) +0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:359 Constant: +0:359 0 (const int) +0:359 Constant: +0:359 0.000000 +0:359 0.000000 +0:359 0.000000 +0:360 move second child to first child ( temp highp 3-component vector of float) +0:360 specular: direct index for structure ( global highp 3-component vector of float) +0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:360 Constant: +0:360 1 (const int) +0:360 Constant: +0:360 0.000000 +0:360 0.000000 +0:360 0.000000 +0:361 move second child to first child ( temp highp 3-component vector of float) +0:361 specular2: direct index for structure ( global highp 3-component vector of float) +0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:361 Constant: +0:361 2 (const int) +0:361 Constant: +0:361 0.000000 +0:361 0.000000 +0:361 0.000000 +0:362 move second child to first child ( temp highp float) +0:362 shadowStrength: direct index for structure ( global highp float) +0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:362 Constant: +0:362 3 (const int) +0:362 Constant: +0:362 0.000000 +0:363 Branch: Break +0:365 move second child to first child ( temp highp 3-component vector of float) +0:365 'diffuseContrib' ( inout highp 3-component vector of float) +0:365 diffuse: direct index for structure ( global highp 3-component vector of float) +0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:365 Constant: +0:365 0 (const int) +0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float) +0:367 Function Parameters: +0:367 'index' ( in highp int) +0:367 'worldSpacePos' ( in highp 3-component vector of float) +0:367 'defaultColor' ( in highp 4-component vector of float) +0:368 Sequence +0:368 switch +0:368 condition +0:368 'index' ( in highp int) +0:368 body +0:368 Sequence +0:370 default: +0:? Sequence +0:370 Branch: Return with expression +0:370 'defaultColor' ( in highp 4-component vector of float) +0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:373 Function Parameters: +0:373 'color' ( in highp 4-component vector of float) +0:373 'lightingSpacePosition' ( in highp 3-component vector of float) +0:373 'cameraIndex' ( in highp int) +0:374 Sequence +0:374 switch +0:374 condition +0:374 'cameraIndex' ( in highp int) +0:374 body +0:374 Sequence +0:375 default: +0:376 case: with expression +0:376 Constant: +0:376 0 (const int) +0:? Sequence +0:378 Sequence +0:378 Branch: Return with expression +0:378 'color' ( in highp 4-component vector of float) +0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float) +0:382 Function Parameters: +0:382 'color' ( in highp 4-component vector of float) +0:382 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Sequence +0:384 Branch: Return with expression +0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:384 'color' ( in highp 4-component vector of float) +0:384 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Constant: +0:384 0 (const int) +0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:386 Function Parameters: +0:386 'index' ( in highp int) +0:386 't' ( in highp 3-component vector of float) +0:? Sequence +0:388 Sequence +0:388 move second child to first child ( temp highp int) +0:388 'coord' ( temp highp int) +0:388 'index' ( in highp int) +0:389 Sequence +0:389 move second child to first child ( temp highp 4-component vector of float) +0:389 'samp' ( temp highp 4-component vector of float) +0:389 textureFetch ( global highp 4-component vector of float) +0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:389 'coord' ( temp highp int) +0:390 move second child to first child ( temp highp float) +0:390 direct index ( temp highp float) +0:390 'v' ( temp highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:390 direct index ( temp highp float) +0:390 't' ( in highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:391 move second child to first child ( temp highp float) +0:391 direct index ( temp highp float) +0:391 'v' ( temp highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:391 direct index ( temp highp float) +0:391 't' ( in highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:392 move second child to first child ( temp highp float) +0:392 direct index ( temp highp float) +0:392 'v' ( temp highp 3-component vector of float) +0:392 Constant: +0:392 2 (const int) +0:392 direct index ( temp highp float) +0:392 'samp' ( temp highp 4-component vector of float) +0:392 Constant: +0:392 0 (const int) +0:393 move second child to first child ( temp highp 3-component vector of float) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 't' ( in highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 'v' ( temp highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:394 Branch: Return with expression +0:394 't' ( in highp 3-component vector of float) +0:396 Function Definition: TDInstanceActive(i1; ( global bool) +0:396 Function Parameters: +0:396 'index' ( in highp int) +0:397 Sequence +0:397 subtract second child into first child ( temp highp int) +0:397 'index' ( in highp int) +0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:397 Constant: +0:397 0 (const uint) +0:399 Sequence +0:399 move second child to first child ( temp highp int) +0:399 'coord' ( temp highp int) +0:399 'index' ( in highp int) +0:400 Sequence +0:400 move second child to first child ( temp highp 4-component vector of float) +0:400 'samp' ( temp highp 4-component vector of float) +0:400 textureFetch ( global highp 4-component vector of float) +0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:400 'coord' ( temp highp int) +0:401 move second child to first child ( temp highp float) +0:401 'v' ( temp highp float) +0:401 direct index ( temp highp float) +0:401 'samp' ( temp highp 4-component vector of float) +0:401 Constant: +0:401 0 (const int) +0:402 Branch: Return with expression +0:402 Compare Not Equal ( temp bool) +0:402 'v' ( temp highp float) +0:402 Constant: +0:402 0.000000 +0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:404 Function Parameters: +0:404 'index' ( in highp int) +0:404 'instanceActive' ( out bool) +0:405 Sequence +0:405 Sequence +0:405 move second child to first child ( temp highp int) +0:405 'origIndex' ( temp highp int) +0:405 'index' ( in highp int) +0:406 subtract second child into first child ( temp highp int) +0:406 'index' ( in highp int) +0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:406 Constant: +0:406 0 (const uint) +0:408 Sequence +0:408 move second child to first child ( temp highp int) +0:408 'coord' ( temp highp int) +0:408 'index' ( in highp int) +0:409 Sequence +0:409 move second child to first child ( temp highp 4-component vector of float) +0:409 'samp' ( temp highp 4-component vector of float) +0:409 textureFetch ( global highp 4-component vector of float) +0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:409 'coord' ( temp highp int) +0:410 move second child to first child ( temp highp float) +0:410 direct index ( temp highp float) +0:410 'v' ( temp highp 3-component vector of float) +0:410 Constant: +0:410 0 (const int) +0:410 direct index ( temp highp float) +0:410 'samp' ( temp highp 4-component vector of float) +0:410 Constant: +0:410 1 (const int) +0:411 move second child to first child ( temp highp float) +0:411 direct index ( temp highp float) +0:411 'v' ( temp highp 3-component vector of float) +0:411 Constant: +0:411 1 (const int) +0:411 direct index ( temp highp float) +0:411 'samp' ( temp highp 4-component vector of float) +0:411 Constant: +0:411 2 (const int) +0:412 move second child to first child ( temp highp float) +0:412 direct index ( temp highp float) +0:412 'v' ( temp highp 3-component vector of float) +0:412 Constant: +0:412 2 (const int) +0:412 direct index ( temp highp float) +0:412 'samp' ( temp highp 4-component vector of float) +0:412 Constant: +0:412 3 (const int) +0:413 move second child to first child ( temp bool) +0:413 'instanceActive' ( out bool) +0:413 Compare Not Equal ( temp bool) +0:413 direct index ( temp highp float) +0:413 'samp' ( temp highp 4-component vector of float) +0:413 Constant: +0:413 0 (const int) +0:413 Constant: +0:413 0.000000 +0:414 Branch: Return with expression +0:414 'v' ( temp highp 3-component vector of float) +0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:416 Function Parameters: +0:416 'index' ( in highp int) +0:417 Sequence +0:417 subtract second child into first child ( temp highp int) +0:417 'index' ( in highp int) +0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:417 Constant: +0:417 0 (const uint) +0:419 Sequence +0:419 move second child to first child ( temp highp int) +0:419 'coord' ( temp highp int) +0:419 'index' ( in highp int) +0:420 Sequence +0:420 move second child to first child ( temp highp 4-component vector of float) +0:420 'samp' ( temp highp 4-component vector of float) +0:420 textureFetch ( global highp 4-component vector of float) +0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:420 'coord' ( temp highp int) +0:421 move second child to first child ( temp highp float) +0:421 direct index ( temp highp float) +0:421 'v' ( temp highp 3-component vector of float) +0:421 Constant: +0:421 0 (const int) +0:421 direct index ( temp highp float) +0:421 'samp' ( temp highp 4-component vector of float) +0:421 Constant: +0:421 1 (const int) +0:422 move second child to first child ( temp highp float) +0:422 direct index ( temp highp float) +0:422 'v' ( temp highp 3-component vector of float) +0:422 Constant: +0:422 1 (const int) +0:422 direct index ( temp highp float) +0:422 'samp' ( temp highp 4-component vector of float) +0:422 Constant: +0:422 2 (const int) +0:423 move second child to first child ( temp highp float) +0:423 direct index ( temp highp float) +0:423 'v' ( temp highp 3-component vector of float) +0:423 Constant: +0:423 2 (const int) +0:423 direct index ( temp highp float) +0:423 'samp' ( temp highp 4-component vector of float) +0:423 Constant: +0:423 3 (const int) +0:424 Branch: Return with expression +0:424 'v' ( temp highp 3-component vector of float) +0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:426 Function Parameters: +0:426 'index' ( in highp int) +0:427 Sequence +0:427 subtract second child into first child ( temp highp int) +0:427 'index' ( in highp int) +0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:427 Constant: +0:427 0 (const uint) +0:428 Sequence +0:428 move second child to first child ( temp highp 3-component vector of float) +0:428 'v' ( temp highp 3-component vector of float) +0:428 Constant: +0:428 0.000000 +0:428 0.000000 +0:428 0.000000 +0:429 Sequence +0:429 move second child to first child ( temp highp 3X3 matrix of float) +0:429 'm' ( temp highp 3X3 matrix of float) +0:429 Constant: +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:433 Branch: Return with expression +0:433 'm' ( temp highp 3X3 matrix of float) +0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:435 Function Parameters: +0:435 'index' ( in highp int) +0:436 Sequence +0:436 subtract second child into first child ( temp highp int) +0:436 'index' ( in highp int) +0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:436 Constant: +0:436 0 (const uint) +0:437 Sequence +0:437 move second child to first child ( temp highp 3-component vector of float) +0:437 'v' ( temp highp 3-component vector of float) +0:437 Constant: +0:437 1.000000 +0:437 1.000000 +0:437 1.000000 +0:438 Branch: Return with expression +0:438 'v' ( temp highp 3-component vector of float) +0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:440 Function Parameters: +0:440 'index' ( in highp int) +0:441 Sequence +0:441 subtract second child into first child ( temp highp int) +0:441 'index' ( in highp int) +0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:441 Constant: +0:441 0 (const uint) +0:442 Sequence +0:442 move second child to first child ( temp highp 3-component vector of float) +0:442 'v' ( temp highp 3-component vector of float) +0:442 Constant: +0:442 0.000000 +0:442 0.000000 +0:442 0.000000 +0:443 Branch: Return with expression +0:443 'v' ( temp highp 3-component vector of float) +0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:445 Function Parameters: +0:445 'index' ( in highp int) +0:446 Sequence +0:446 subtract second child into first child ( temp highp int) +0:446 'index' ( in highp int) +0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:446 Constant: +0:446 0 (const uint) +0:447 Sequence +0:447 move second child to first child ( temp highp 3-component vector of float) +0:447 'v' ( temp highp 3-component vector of float) +0:447 Constant: +0:447 0.000000 +0:447 0.000000 +0:447 1.000000 +0:448 Branch: Return with expression +0:448 'v' ( temp highp 3-component vector of float) +0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:450 Function Parameters: +0:450 'index' ( in highp int) +0:451 Sequence +0:451 subtract second child into first child ( temp highp int) +0:451 'index' ( in highp int) +0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:451 Constant: +0:451 0 (const uint) +0:452 Sequence +0:452 move second child to first child ( temp highp 3-component vector of float) +0:452 'v' ( temp highp 3-component vector of float) +0:452 Constant: +0:452 0.000000 +0:452 1.000000 +0:452 0.000000 +0:453 Branch: Return with expression +0:453 'v' ( temp highp 3-component vector of float) +0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:455 Function Parameters: +0:455 'id' ( in highp int) +0:456 Sequence +0:456 Sequence +0:456 move second child to first child ( temp bool) +0:456 'instanceActive' ( temp bool) +0:456 Constant: +0:456 true (const bool) +0:457 Sequence +0:457 move second child to first child ( temp highp 3-component vector of float) +0:457 't' ( temp highp 3-component vector of float) +0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:457 'id' ( in highp int) +0:457 'instanceActive' ( temp bool) +0:458 Test condition and select ( temp void) +0:458 Condition +0:458 Negate conditional ( temp bool) +0:458 'instanceActive' ( temp bool) +0:458 true case +0:460 Sequence +0:460 Branch: Return with expression +0:460 Constant: +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:462 Sequence +0:462 move second child to first child ( temp highp 4X4 matrix of float) +0:462 'm' ( temp highp 4X4 matrix of float) +0:462 Constant: +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:464 Sequence +0:464 Sequence +0:464 move second child to first child ( temp highp 3-component vector of float) +0:464 'tt' ( temp highp 3-component vector of float) +0:464 't' ( temp highp 3-component vector of float) +0:465 add second child into first child ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 3 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 component-wise multiply ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 0 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 direct index ( temp highp float) +0:465 'tt' ( temp highp 3-component vector of float) +0:465 Constant: +0:465 0 (const int) +0:466 add second child into first child ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 3 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 component-wise multiply ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 0 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 direct index ( temp highp float) +0:466 'tt' ( temp highp 3-component vector of float) +0:466 Constant: +0:466 0 (const int) +0:467 add second child into first child ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 3 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 component-wise multiply ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 0 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 direct index ( temp highp float) +0:467 'tt' ( temp highp 3-component vector of float) +0:467 Constant: +0:467 0 (const int) +0:468 add second child into first child ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 3 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 component-wise multiply ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 0 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 direct index ( temp highp float) +0:468 'tt' ( temp highp 3-component vector of float) +0:468 Constant: +0:468 0 (const int) +0:469 add second child into first child ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 3 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 component-wise multiply ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 1 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 direct index ( temp highp float) +0:469 'tt' ( temp highp 3-component vector of float) +0:469 Constant: +0:469 1 (const int) +0:470 add second child into first child ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 3 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 component-wise multiply ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 1 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 direct index ( temp highp float) +0:470 'tt' ( temp highp 3-component vector of float) +0:470 Constant: +0:470 1 (const int) +0:471 add second child into first child ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 3 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 component-wise multiply ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 1 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 direct index ( temp highp float) +0:471 'tt' ( temp highp 3-component vector of float) +0:471 Constant: +0:471 1 (const int) +0:472 add second child into first child ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 3 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 component-wise multiply ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 1 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 direct index ( temp highp float) +0:472 'tt' ( temp highp 3-component vector of float) +0:472 Constant: +0:472 1 (const int) +0:473 add second child into first child ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 3 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 component-wise multiply ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 2 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 direct index ( temp highp float) +0:473 'tt' ( temp highp 3-component vector of float) +0:473 Constant: +0:473 2 (const int) +0:474 add second child into first child ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 3 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 component-wise multiply ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 2 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 direct index ( temp highp float) +0:474 'tt' ( temp highp 3-component vector of float) +0:474 Constant: +0:474 2 (const int) +0:475 add second child into first child ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 3 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 component-wise multiply ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 2 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 direct index ( temp highp float) +0:475 'tt' ( temp highp 3-component vector of float) +0:475 Constant: +0:475 2 (const int) +0:476 add second child into first child ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 3 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 component-wise multiply ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 2 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 direct index ( temp highp float) +0:476 'tt' ( temp highp 3-component vector of float) +0:476 Constant: +0:476 2 (const int) +0:478 Branch: Return with expression +0:478 'm' ( temp highp 4X4 matrix of float) +0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:480 Function Parameters: +0:480 'id' ( in highp int) +0:481 Sequence +0:481 Sequence +0:481 move second child to first child ( temp highp 3X3 matrix of float) +0:481 'm' ( temp highp 3X3 matrix of float) +0:481 Constant: +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:482 Branch: Return with expression +0:482 'm' ( temp highp 3X3 matrix of float) +0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:484 Function Parameters: +0:484 'id' ( in highp int) +0:485 Sequence +0:485 Sequence +0:485 move second child to first child ( temp highp 3X3 matrix of float) +0:485 'm' ( temp highp 3X3 matrix of float) +0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:485 'id' ( in highp int) +0:486 Branch: Return with expression +0:486 'm' ( temp highp 3X3 matrix of float) +0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:488 Function Parameters: +0:488 'index' ( in highp int) +0:488 'curColor' ( in highp 4-component vector of float) +0:489 Sequence +0:489 subtract second child into first child ( temp highp int) +0:489 'index' ( in highp int) +0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:489 Constant: +0:489 0 (const uint) +0:491 Sequence +0:491 move second child to first child ( temp highp int) +0:491 'coord' ( temp highp int) +0:491 'index' ( in highp int) +0:492 Sequence +0:492 move second child to first child ( temp highp 4-component vector of float) +0:492 'samp' ( temp highp 4-component vector of float) +0:492 textureFetch ( global highp 4-component vector of float) +0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:492 'coord' ( temp highp int) +0:493 move second child to first child ( temp highp float) +0:493 direct index ( temp highp float) +0:493 'v' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:493 direct index ( temp highp float) +0:493 'samp' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:494 move second child to first child ( temp highp float) +0:494 direct index ( temp highp float) +0:494 'v' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:494 direct index ( temp highp float) +0:494 'samp' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:495 move second child to first child ( temp highp float) +0:495 direct index ( temp highp float) +0:495 'v' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:495 direct index ( temp highp float) +0:495 'samp' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:496 move second child to first child ( temp highp float) +0:496 direct index ( temp highp float) +0:496 'v' ( temp highp 4-component vector of float) +0:496 Constant: +0:496 3 (const int) +0:496 Constant: +0:496 1.000000 +0:497 move second child to first child ( temp highp float) +0:497 direct index ( temp highp float) +0:497 'curColor' ( in highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:497 direct index ( temp highp float) +0:497 'v' ( temp highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:499 move second child to first child ( temp highp float) +0:499 direct index ( temp highp float) +0:499 'curColor' ( in highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:499 direct index ( temp highp float) +0:499 'v' ( temp highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:501 move second child to first child ( temp highp float) +0:501 direct index ( temp highp float) +0:501 'curColor' ( in highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:501 direct index ( temp highp float) +0:501 'v' ( temp highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:503 Branch: Return with expression +0:503 'curColor' ( in highp 4-component vector of float) +0:? Linker Objects +0:? 'sTDNoiseMap' ( uniform highp sampler2D) +0:? 'sTDSineLookup' ( uniform highp sampler1D) +0:? 'sTDWhite2D' ( uniform highp sampler2D) +0:? 'sTDWhite3D' ( uniform highp sampler3D) +0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray) +0:? 'sTDWhiteCube' ( uniform highp samplerCube) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@4' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@5' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) + +vk.relaxed.stagelink.0.2.frag +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:2 Function Parameters: +0:2 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Branch: Return with expression +0:4 vector swizzle ( temp highp 4-component vector of float) +0:4 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Constant: +0:4 0 (const int) +0:4 Constant: +0:4 1 (const int) +0:4 Constant: +0:4 2 (const int) +0:4 Constant: +0:4 3 (const int) +0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint) +0:6 Function Parameters: +0:6 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Branch: Return with expression +0:8 vector swizzle ( temp highp 4-component vector of uint) +0:8 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:? Linker Objects + + +Linked vertex stage: + + +Linked fragment stage: + + +Shader version: 460 +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:15 Sequence +0:15 Sequence +0:15 Sequence +0:15 move second child to first child ( temp highp 3-component vector of float) +0:15 'texcoord' ( temp highp 3-component vector of float) +0:15 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:15 direct index (layout( location=3) temp highp 3-component vector of float) +0:15 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:15 Constant: +0:15 0 (const int) +0:16 move second child to first child ( temp highp 3-component vector of float) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 texCoord0: direct index for structure ( out highp 3-component vector of float) +0:16 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:16 Constant: +0:16 2 (const int) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:16 vector swizzle ( temp highp 3-component vector of float) +0:16 'texcoord' ( temp highp 3-component vector of float) +0:16 Sequence +0:16 Constant: +0:16 0 (const int) +0:16 Constant: +0:16 1 (const int) +0:16 Constant: +0:16 2 (const int) +0:20 move second child to first child ( temp highp int) +0:20 instance: direct index for structure ( flat out highp int) +0:20 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:20 Constant: +0:20 4 (const int) +0:20 Function Call: TDInstanceID( ( global highp int) +0:21 Sequence +0:21 move second child to first child ( temp highp 4-component vector of float) +0:21 'worldSpacePos' ( temp highp 4-component vector of float) +0:21 Function Call: TDDeform(vf3; ( global highp 4-component vector of float) +0:21 'P' (layout( location=0) in highp 3-component vector of float) +0:22 Sequence +0:22 move second child to first child ( temp highp 3-component vector of float) +0:22 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:22 Function Call: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:22 Function Call: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:23 move second child to first child ( temp highp 4-component vector of float) +0:23 gl_Position: direct index for structure ( gl_Position highp 4-component vector of float Position) +0:23 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) +0:23 Constant: +0:23 0 (const uint) +0:23 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:23 'worldSpacePos' ( temp highp 4-component vector of float) +0:23 'uvUnwrapCoord' ( temp highp 3-component vector of float) +0:32 Sequence +0:32 move second child to first child ( temp highp int) +0:32 'cameraIndex' ( temp highp int) +0:32 Function Call: TDCameraIndex( ( global highp int) +0:33 move second child to first child ( temp highp int) +0:33 cameraIndex: direct index for structure ( flat out highp int) +0:33 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:33 Constant: +0:33 3 (const int) +0:33 'cameraIndex' ( temp highp int) +0:34 move second child to first child ( temp highp 3-component vector of float) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 worldSpacePos: direct index for structure ( out highp 3-component vector of float) +0:34 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:34 Constant: +0:34 1 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 vector swizzle ( temp highp 3-component vector of float) +0:34 'worldSpacePos' ( temp highp 4-component vector of float) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:35 move second child to first child ( temp highp 4-component vector of float) +0:35 color: direct index for structure ( out highp 4-component vector of float) +0:35 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:35 Constant: +0:35 0 (const int) +0:35 Function Call: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:35 'Cd' (layout( location=2) in highp 4-component vector of float) +0:176 Function Definition: iTDCamToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:176 Function Parameters: +0:176 'v' ( in highp 4-component vector of float) +0:176 'uv' ( in highp 3-component vector of float) +0:176 'cameraIndex' ( in highp int) +0:176 'applyPickMod' ( in bool) +0:178 Sequence +0:178 Test condition and select ( temp void) +0:178 Condition +0:178 Negate conditional ( temp bool) +0:178 Function Call: TDInstanceActive( ( global bool) +0:178 true case +0:179 Branch: Return with expression +0:179 Constant: +0:179 2.000000 +0:179 2.000000 +0:179 2.000000 +0:179 0.000000 +0:180 move second child to first child ( temp highp 4-component vector of float) +0:180 'v' ( in highp 4-component vector of float) +0:180 matrix-times-vector ( temp highp 4-component vector of float) +0:180 proj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:180 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:180 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:180 Constant: +0:180 0 (const uint) +0:180 Constant: +0:180 0 (const int) +0:180 Constant: +0:180 8 (const int) +0:180 'v' ( in highp 4-component vector of float) +0:181 Branch: Return with expression +0:181 'v' ( in highp 4-component vector of float) +0:183 Function Definition: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:183 Function Parameters: +0:183 'v' ( in highp 4-component vector of float) +0:183 'uv' ( in highp 3-component vector of float) +0:183 'cameraIndex' ( in highp int) +0:183 'applyPickMod' ( in bool) +0:184 Sequence +0:184 Test condition and select ( temp void) +0:184 Condition +0:184 Negate conditional ( temp bool) +0:184 Function Call: TDInstanceActive( ( global bool) +0:184 true case +0:185 Branch: Return with expression +0:185 Constant: +0:185 2.000000 +0:185 2.000000 +0:185 2.000000 +0:185 0.000000 +0:186 move second child to first child ( temp highp 4-component vector of float) +0:186 'v' ( in highp 4-component vector of float) +0:186 matrix-times-vector ( temp highp 4-component vector of float) +0:186 camProj: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:186 direct index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:186 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:186 Constant: +0:186 0 (const uint) +0:186 Constant: +0:186 0 (const int) +0:186 Constant: +0:186 6 (const int) +0:186 'v' ( in highp 4-component vector of float) +0:187 Branch: Return with expression +0:187 'v' ( in highp 4-component vector of float) +0:193 Function Definition: TDInstanceID( ( global highp int) +0:193 Function Parameters: +0:194 Sequence +0:194 Branch: Return with expression +0:194 add ( temp highp int) +0:194 'gl_InstanceIndex' ( in highp int InstanceIndex) +0:194 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:194 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:194 Constant: +0:194 0 (const uint) +0:196 Function Definition: TDCameraIndex( ( global highp int) +0:196 Function Parameters: +0:197 Sequence +0:197 Branch: Return with expression +0:197 Constant: +0:197 0 (const int) +0:199 Function Definition: TDUVUnwrapCoord( ( global highp 3-component vector of float) +0:199 Function Parameters: +0:200 Sequence +0:200 Branch: Return with expression +0:200 direct index (layout( location=3) temp highp 3-component vector of float) +0:200 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:200 Constant: +0:200 0 (const int) +0:205 Function Definition: TDPickID( ( global highp int) +0:205 Function Parameters: +0:209 Sequence +0:209 Branch: Return with expression +0:209 Constant: +0:209 0 (const int) +0:212 Function Definition: iTDConvertPickId(i1; ( global highp float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 or second child into first child ( temp highp int) +0:213 'id' ( in highp int) +0:213 Constant: +0:213 1073741824 (const int) +0:214 Branch: Return with expression +0:214 intBitsToFloat ( global highp float) +0:214 'id' ( in highp int) +0:217 Function Definition: TDWritePickingValues( ( global void) +0:217 Function Parameters: +0:224 Function Definition: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:224 Function Parameters: +0:224 'v' ( in highp 4-component vector of float) +0:224 'uv' ( in highp 3-component vector of float) +0:226 Sequence +0:226 Branch: Return with expression +0:226 Function Call: iTDWorldToProj(vf4;vf3;i1;b1; ( global highp 4-component vector of float) +0:226 'v' ( in highp 4-component vector of float) +0:226 'uv' ( in highp 3-component vector of float) +0:226 Function Call: TDCameraIndex( ( global highp int) +0:226 Constant: +0:226 true (const bool) +0:228 Function Definition: TDWorldToProj(vf3;vf3; ( global highp 4-component vector of float) +0:228 Function Parameters: +0:228 'v' ( in highp 3-component vector of float) +0:228 'uv' ( in highp 3-component vector of float) +0:230 Sequence +0:230 Branch: Return with expression +0:230 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:230 Construct vec4 ( temp highp 4-component vector of float) +0:230 'v' ( in highp 3-component vector of float) +0:230 Constant: +0:230 1.000000 +0:230 'uv' ( in highp 3-component vector of float) +0:232 Function Definition: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:232 Function Parameters: +0:232 'v' ( in highp 4-component vector of float) +0:234 Sequence +0:234 Branch: Return with expression +0:234 Function Call: TDWorldToProj(vf4;vf3; ( global highp 4-component vector of float) +0:234 'v' ( in highp 4-component vector of float) +0:234 Constant: +0:234 0.000000 +0:234 0.000000 +0:234 0.000000 +0:236 Function Definition: TDWorldToProj(vf3; ( global highp 4-component vector of float) +0:236 Function Parameters: +0:236 'v' ( in highp 3-component vector of float) +0:238 Sequence +0:238 Branch: Return with expression +0:238 Function Call: TDWorldToProj(vf4; ( global highp 4-component vector of float) +0:238 Construct vec4 ( temp highp 4-component vector of float) +0:238 'v' ( in highp 3-component vector of float) +0:238 Constant: +0:238 1.000000 +0:240 Function Definition: TDPointColor( ( global highp 4-component vector of float) +0:240 Function Parameters: +0:241 Sequence +0:241 Branch: Return with expression +0:241 'Cd' (layout( location=2) in highp 4-component vector of float) +0:114 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:114 Function Parameters: +0:114 'index' ( in highp int) +0:114 't' ( in highp 3-component vector of float) +0:? Sequence +0:116 Sequence +0:116 move second child to first child ( temp highp int) +0:116 'coord' ( temp highp int) +0:116 'index' ( in highp int) +0:117 Sequence +0:117 move second child to first child ( temp highp 4-component vector of float) +0:117 'samp' ( temp highp 4-component vector of float) +0:117 textureFetch ( global highp 4-component vector of float) +0:117 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:117 'coord' ( temp highp int) +0:118 move second child to first child ( temp highp float) +0:118 direct index ( temp highp float) +0:118 'v' ( temp highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:118 direct index ( temp highp float) +0:118 't' ( in highp 3-component vector of float) +0:118 Constant: +0:118 0 (const int) +0:119 move second child to first child ( temp highp float) +0:119 direct index ( temp highp float) +0:119 'v' ( temp highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:119 direct index ( temp highp float) +0:119 't' ( in highp 3-component vector of float) +0:119 Constant: +0:119 1 (const int) +0:120 move second child to first child ( temp highp float) +0:120 direct index ( temp highp float) +0:120 'v' ( temp highp 3-component vector of float) +0:120 Constant: +0:120 2 (const int) +0:120 direct index ( temp highp float) +0:120 'samp' ( temp highp 4-component vector of float) +0:120 Constant: +0:120 0 (const int) +0:121 move second child to first child ( temp highp 3-component vector of float) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 't' ( in highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 vector swizzle ( temp highp 3-component vector of float) +0:121 'v' ( temp highp 3-component vector of float) +0:121 Sequence +0:121 Constant: +0:121 0 (const int) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:122 Branch: Return with expression +0:122 't' ( in highp 3-component vector of float) +0:124 Function Definition: TDInstanceActive(i1; ( global bool) +0:124 Function Parameters: +0:124 'index' ( in highp int) +0:125 Sequence +0:125 subtract second child into first child ( temp highp int) +0:125 'index' ( in highp int) +0:125 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:125 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:125 Constant: +0:125 0 (const uint) +0:127 Sequence +0:127 move second child to first child ( temp highp int) +0:127 'coord' ( temp highp int) +0:127 'index' ( in highp int) +0:128 Sequence +0:128 move second child to first child ( temp highp 4-component vector of float) +0:128 'samp' ( temp highp 4-component vector of float) +0:128 textureFetch ( global highp 4-component vector of float) +0:128 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:128 'coord' ( temp highp int) +0:129 move second child to first child ( temp highp float) +0:129 'v' ( temp highp float) +0:129 direct index ( temp highp float) +0:129 'samp' ( temp highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:130 Branch: Return with expression +0:130 Compare Not Equal ( temp bool) +0:130 'v' ( temp highp float) +0:130 Constant: +0:130 0.000000 +0:132 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:132 Function Parameters: +0:132 'index' ( in highp int) +0:132 'instanceActive' ( out bool) +0:133 Sequence +0:133 Sequence +0:133 move second child to first child ( temp highp int) +0:133 'origIndex' ( temp highp int) +0:133 'index' ( in highp int) +0:134 subtract second child into first child ( temp highp int) +0:134 'index' ( in highp int) +0:134 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:134 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:134 Constant: +0:134 0 (const uint) +0:136 Sequence +0:136 move second child to first child ( temp highp int) +0:136 'coord' ( temp highp int) +0:136 'index' ( in highp int) +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 'samp' ( temp highp 4-component vector of float) +0:137 textureFetch ( global highp 4-component vector of float) +0:137 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:137 'coord' ( temp highp int) +0:138 move second child to first child ( temp highp float) +0:138 direct index ( temp highp float) +0:138 'v' ( temp highp 3-component vector of float) +0:138 Constant: +0:138 0 (const int) +0:138 direct index ( temp highp float) +0:138 'samp' ( temp highp 4-component vector of float) +0:138 Constant: +0:138 1 (const int) +0:139 move second child to first child ( temp highp float) +0:139 direct index ( temp highp float) +0:139 'v' ( temp highp 3-component vector of float) +0:139 Constant: +0:139 1 (const int) +0:139 direct index ( temp highp float) +0:139 'samp' ( temp highp 4-component vector of float) +0:139 Constant: +0:139 2 (const int) +0:140 move second child to first child ( temp highp float) +0:140 direct index ( temp highp float) +0:140 'v' ( temp highp 3-component vector of float) +0:140 Constant: +0:140 2 (const int) +0:140 direct index ( temp highp float) +0:140 'samp' ( temp highp 4-component vector of float) +0:140 Constant: +0:140 3 (const int) +0:141 move second child to first child ( temp bool) +0:141 'instanceActive' ( out bool) +0:141 Compare Not Equal ( temp bool) +0:141 direct index ( temp highp float) +0:141 'samp' ( temp highp 4-component vector of float) +0:141 Constant: +0:141 0 (const int) +0:141 Constant: +0:141 0.000000 +0:142 Branch: Return with expression +0:142 'v' ( temp highp 3-component vector of float) +0:144 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:144 Function Parameters: +0:144 'index' ( in highp int) +0:145 Sequence +0:145 subtract second child into first child ( temp highp int) +0:145 'index' ( in highp int) +0:145 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:145 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:145 Constant: +0:145 0 (const uint) +0:147 Sequence +0:147 move second child to first child ( temp highp int) +0:147 'coord' ( temp highp int) +0:147 'index' ( in highp int) +0:148 Sequence +0:148 move second child to first child ( temp highp 4-component vector of float) +0:148 'samp' ( temp highp 4-component vector of float) +0:148 textureFetch ( global highp 4-component vector of float) +0:148 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:148 'coord' ( temp highp int) +0:149 move second child to first child ( temp highp float) +0:149 direct index ( temp highp float) +0:149 'v' ( temp highp 3-component vector of float) +0:149 Constant: +0:149 0 (const int) +0:149 direct index ( temp highp float) +0:149 'samp' ( temp highp 4-component vector of float) +0:149 Constant: +0:149 1 (const int) +0:150 move second child to first child ( temp highp float) +0:150 direct index ( temp highp float) +0:150 'v' ( temp highp 3-component vector of float) +0:150 Constant: +0:150 1 (const int) +0:150 direct index ( temp highp float) +0:150 'samp' ( temp highp 4-component vector of float) +0:150 Constant: +0:150 2 (const int) +0:151 move second child to first child ( temp highp float) +0:151 direct index ( temp highp float) +0:151 'v' ( temp highp 3-component vector of float) +0:151 Constant: +0:151 2 (const int) +0:151 direct index ( temp highp float) +0:151 'samp' ( temp highp 4-component vector of float) +0:151 Constant: +0:151 3 (const int) +0:152 Branch: Return with expression +0:152 'v' ( temp highp 3-component vector of float) +0:154 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:154 Function Parameters: +0:154 'index' ( in highp int) +0:155 Sequence +0:155 subtract second child into first child ( temp highp int) +0:155 'index' ( in highp int) +0:155 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:155 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:155 Constant: +0:155 0 (const uint) +0:156 Sequence +0:156 move second child to first child ( temp highp 3-component vector of float) +0:156 'v' ( temp highp 3-component vector of float) +0:156 Constant: +0:156 0.000000 +0:156 0.000000 +0:156 0.000000 +0:157 Sequence +0:157 move second child to first child ( temp highp 3X3 matrix of float) +0:157 'm' ( temp highp 3X3 matrix of float) +0:157 Constant: +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:157 0.000000 +0:157 0.000000 +0:157 0.000000 +0:157 1.000000 +0:161 Branch: Return with expression +0:161 'm' ( temp highp 3X3 matrix of float) +0:163 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:163 Function Parameters: +0:163 'index' ( in highp int) +0:164 Sequence +0:164 subtract second child into first child ( temp highp int) +0:164 'index' ( in highp int) +0:164 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:164 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:164 Constant: +0:164 0 (const uint) +0:165 Sequence +0:165 move second child to first child ( temp highp 3-component vector of float) +0:165 'v' ( temp highp 3-component vector of float) +0:165 Constant: +0:165 1.000000 +0:165 1.000000 +0:165 1.000000 +0:166 Branch: Return with expression +0:166 'v' ( temp highp 3-component vector of float) +0:168 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:168 Function Parameters: +0:168 'index' ( in highp int) +0:169 Sequence +0:169 subtract second child into first child ( temp highp int) +0:169 'index' ( in highp int) +0:169 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:169 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:169 Constant: +0:169 0 (const uint) +0:170 Sequence +0:170 move second child to first child ( temp highp 3-component vector of float) +0:170 'v' ( temp highp 3-component vector of float) +0:170 Constant: +0:170 0.000000 +0:170 0.000000 +0:170 0.000000 +0:171 Branch: Return with expression +0:171 'v' ( temp highp 3-component vector of float) +0:173 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:173 Function Parameters: +0:173 'index' ( in highp int) +0:174 Sequence +0:174 subtract second child into first child ( temp highp int) +0:174 'index' ( in highp int) +0:174 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:174 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:174 Constant: +0:174 0 (const uint) +0:175 Sequence +0:175 move second child to first child ( temp highp 3-component vector of float) +0:175 'v' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 0.000000 +0:175 0.000000 +0:175 1.000000 +0:176 Branch: Return with expression +0:176 'v' ( temp highp 3-component vector of float) +0:178 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:178 Function Parameters: +0:178 'index' ( in highp int) +0:179 Sequence +0:179 subtract second child into first child ( temp highp int) +0:179 'index' ( in highp int) +0:179 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:179 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:179 Constant: +0:179 0 (const uint) +0:180 Sequence +0:180 move second child to first child ( temp highp 3-component vector of float) +0:180 'v' ( temp highp 3-component vector of float) +0:180 Constant: +0:180 0.000000 +0:180 1.000000 +0:180 0.000000 +0:181 Branch: Return with expression +0:181 'v' ( temp highp 3-component vector of float) +0:183 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:183 Function Parameters: +0:183 'id' ( in highp int) +0:184 Sequence +0:184 Sequence +0:184 move second child to first child ( temp bool) +0:184 'instanceActive' ( temp bool) +0:184 Constant: +0:184 true (const bool) +0:185 Sequence +0:185 move second child to first child ( temp highp 3-component vector of float) +0:185 't' ( temp highp 3-component vector of float) +0:185 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:185 'id' ( in highp int) +0:185 'instanceActive' ( temp bool) +0:186 Test condition and select ( temp void) +0:186 Condition +0:186 Negate conditional ( temp bool) +0:186 'instanceActive' ( temp bool) +0:186 true case +0:188 Sequence +0:188 Branch: Return with expression +0:188 Constant: +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:188 0.000000 +0:190 Sequence +0:190 move second child to first child ( temp highp 4X4 matrix of float) +0:190 'm' ( temp highp 4X4 matrix of float) +0:190 Constant: +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 0.000000 +0:190 1.000000 +0:192 Sequence +0:192 Sequence +0:192 move second child to first child ( temp highp 3-component vector of float) +0:192 'tt' ( temp highp 3-component vector of float) +0:192 't' ( temp highp 3-component vector of float) +0:193 add second child into first child ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 3 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 component-wise multiply ( temp highp float) +0:193 direct index ( temp highp float) +0:193 direct index ( temp highp 4-component vector of float) +0:193 'm' ( temp highp 4X4 matrix of float) +0:193 Constant: +0:193 0 (const int) +0:193 Constant: +0:193 0 (const int) +0:193 direct index ( temp highp float) +0:193 'tt' ( temp highp 3-component vector of float) +0:193 Constant: +0:193 0 (const int) +0:194 add second child into first child ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 3 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 component-wise multiply ( temp highp float) +0:194 direct index ( temp highp float) +0:194 direct index ( temp highp 4-component vector of float) +0:194 'm' ( temp highp 4X4 matrix of float) +0:194 Constant: +0:194 0 (const int) +0:194 Constant: +0:194 1 (const int) +0:194 direct index ( temp highp float) +0:194 'tt' ( temp highp 3-component vector of float) +0:194 Constant: +0:194 0 (const int) +0:195 add second child into first child ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 3 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 component-wise multiply ( temp highp float) +0:195 direct index ( temp highp float) +0:195 direct index ( temp highp 4-component vector of float) +0:195 'm' ( temp highp 4X4 matrix of float) +0:195 Constant: +0:195 0 (const int) +0:195 Constant: +0:195 2 (const int) +0:195 direct index ( temp highp float) +0:195 'tt' ( temp highp 3-component vector of float) +0:195 Constant: +0:195 0 (const int) +0:196 add second child into first child ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 3 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 component-wise multiply ( temp highp float) +0:196 direct index ( temp highp float) +0:196 direct index ( temp highp 4-component vector of float) +0:196 'm' ( temp highp 4X4 matrix of float) +0:196 Constant: +0:196 0 (const int) +0:196 Constant: +0:196 3 (const int) +0:196 direct index ( temp highp float) +0:196 'tt' ( temp highp 3-component vector of float) +0:196 Constant: +0:196 0 (const int) +0:197 add second child into first child ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 3 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 component-wise multiply ( temp highp float) +0:197 direct index ( temp highp float) +0:197 direct index ( temp highp 4-component vector of float) +0:197 'm' ( temp highp 4X4 matrix of float) +0:197 Constant: +0:197 1 (const int) +0:197 Constant: +0:197 0 (const int) +0:197 direct index ( temp highp float) +0:197 'tt' ( temp highp 3-component vector of float) +0:197 Constant: +0:197 1 (const int) +0:198 add second child into first child ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 3 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 component-wise multiply ( temp highp float) +0:198 direct index ( temp highp float) +0:198 direct index ( temp highp 4-component vector of float) +0:198 'm' ( temp highp 4X4 matrix of float) +0:198 Constant: +0:198 1 (const int) +0:198 Constant: +0:198 1 (const int) +0:198 direct index ( temp highp float) +0:198 'tt' ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1 (const int) +0:199 add second child into first child ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 3 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 component-wise multiply ( temp highp float) +0:199 direct index ( temp highp float) +0:199 direct index ( temp highp 4-component vector of float) +0:199 'm' ( temp highp 4X4 matrix of float) +0:199 Constant: +0:199 1 (const int) +0:199 Constant: +0:199 2 (const int) +0:199 direct index ( temp highp float) +0:199 'tt' ( temp highp 3-component vector of float) +0:199 Constant: +0:199 1 (const int) +0:200 add second child into first child ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 3 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 component-wise multiply ( temp highp float) +0:200 direct index ( temp highp float) +0:200 direct index ( temp highp 4-component vector of float) +0:200 'm' ( temp highp 4X4 matrix of float) +0:200 Constant: +0:200 1 (const int) +0:200 Constant: +0:200 3 (const int) +0:200 direct index ( temp highp float) +0:200 'tt' ( temp highp 3-component vector of float) +0:200 Constant: +0:200 1 (const int) +0:201 add second child into first child ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 3 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 component-wise multiply ( temp highp float) +0:201 direct index ( temp highp float) +0:201 direct index ( temp highp 4-component vector of float) +0:201 'm' ( temp highp 4X4 matrix of float) +0:201 Constant: +0:201 2 (const int) +0:201 Constant: +0:201 0 (const int) +0:201 direct index ( temp highp float) +0:201 'tt' ( temp highp 3-component vector of float) +0:201 Constant: +0:201 2 (const int) +0:202 add second child into first child ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 3 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 component-wise multiply ( temp highp float) +0:202 direct index ( temp highp float) +0:202 direct index ( temp highp 4-component vector of float) +0:202 'm' ( temp highp 4X4 matrix of float) +0:202 Constant: +0:202 2 (const int) +0:202 Constant: +0:202 1 (const int) +0:202 direct index ( temp highp float) +0:202 'tt' ( temp highp 3-component vector of float) +0:202 Constant: +0:202 2 (const int) +0:203 add second child into first child ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 3 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 component-wise multiply ( temp highp float) +0:203 direct index ( temp highp float) +0:203 direct index ( temp highp 4-component vector of float) +0:203 'm' ( temp highp 4X4 matrix of float) +0:203 Constant: +0:203 2 (const int) +0:203 Constant: +0:203 2 (const int) +0:203 direct index ( temp highp float) +0:203 'tt' ( temp highp 3-component vector of float) +0:203 Constant: +0:203 2 (const int) +0:204 add second child into first child ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 3 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 component-wise multiply ( temp highp float) +0:204 direct index ( temp highp float) +0:204 direct index ( temp highp 4-component vector of float) +0:204 'm' ( temp highp 4X4 matrix of float) +0:204 Constant: +0:204 2 (const int) +0:204 Constant: +0:204 3 (const int) +0:204 direct index ( temp highp float) +0:204 'tt' ( temp highp 3-component vector of float) +0:204 Constant: +0:204 2 (const int) +0:206 Branch: Return with expression +0:206 'm' ( temp highp 4X4 matrix of float) +0:208 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:208 Function Parameters: +0:208 'id' ( in highp int) +0:209 Sequence +0:209 Sequence +0:209 move second child to first child ( temp highp 3X3 matrix of float) +0:209 'm' ( temp highp 3X3 matrix of float) +0:209 Constant: +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:209 0.000000 +0:209 0.000000 +0:209 0.000000 +0:209 1.000000 +0:210 Branch: Return with expression +0:210 'm' ( temp highp 3X3 matrix of float) +0:212 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:212 Function Parameters: +0:212 'id' ( in highp int) +0:213 Sequence +0:213 Sequence +0:213 move second child to first child ( temp highp 3X3 matrix of float) +0:213 'm' ( temp highp 3X3 matrix of float) +0:213 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:213 'id' ( in highp int) +0:214 Branch: Return with expression +0:214 'm' ( temp highp 3X3 matrix of float) +0:216 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:216 Function Parameters: +0:216 'index' ( in highp int) +0:216 'curColor' ( in highp 4-component vector of float) +0:217 Sequence +0:217 subtract second child into first child ( temp highp int) +0:217 'index' ( in highp int) +0:217 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:217 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:217 Constant: +0:217 0 (const uint) +0:219 Sequence +0:219 move second child to first child ( temp highp int) +0:219 'coord' ( temp highp int) +0:219 'index' ( in highp int) +0:220 Sequence +0:220 move second child to first child ( temp highp 4-component vector of float) +0:220 'samp' ( temp highp 4-component vector of float) +0:220 textureFetch ( global highp 4-component vector of float) +0:220 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:220 'coord' ( temp highp int) +0:221 move second child to first child ( temp highp float) +0:221 direct index ( temp highp float) +0:221 'v' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:221 direct index ( temp highp float) +0:221 'samp' ( temp highp 4-component vector of float) +0:221 Constant: +0:221 0 (const int) +0:222 move second child to first child ( temp highp float) +0:222 direct index ( temp highp float) +0:222 'v' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:222 direct index ( temp highp float) +0:222 'samp' ( temp highp 4-component vector of float) +0:222 Constant: +0:222 1 (const int) +0:223 move second child to first child ( temp highp float) +0:223 direct index ( temp highp float) +0:223 'v' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:223 direct index ( temp highp float) +0:223 'samp' ( temp highp 4-component vector of float) +0:223 Constant: +0:223 2 (const int) +0:224 move second child to first child ( temp highp float) +0:224 direct index ( temp highp float) +0:224 'v' ( temp highp 4-component vector of float) +0:224 Constant: +0:224 3 (const int) +0:224 Constant: +0:224 1.000000 +0:225 move second child to first child ( temp highp float) +0:225 direct index ( temp highp float) +0:225 'curColor' ( in highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:225 direct index ( temp highp float) +0:225 'v' ( temp highp 4-component vector of float) +0:225 Constant: +0:225 0 (const int) +0:227 move second child to first child ( temp highp float) +0:227 direct index ( temp highp float) +0:227 'curColor' ( in highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:227 direct index ( temp highp float) +0:227 'v' ( temp highp 4-component vector of float) +0:227 Constant: +0:227 1 (const int) +0:229 move second child to first child ( temp highp float) +0:229 direct index ( temp highp float) +0:229 'curColor' ( in highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:229 direct index ( temp highp float) +0:229 'v' ( temp highp 4-component vector of float) +0:229 Constant: +0:229 2 (const int) +0:231 Branch: Return with expression +0:231 'curColor' ( in highp 4-component vector of float) +0:233 Function Definition: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:233 Function Parameters: +0:233 'id' ( in highp int) +0:233 'pos' ( in highp 4-component vector of float) +0:234 Sequence +0:234 move second child to first child ( temp highp 4-component vector of float) +0:234 'pos' ( in highp 4-component vector of float) +0:234 matrix-times-vector ( temp highp 4-component vector of float) +0:234 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:234 'id' ( in highp int) +0:234 'pos' ( in highp 4-component vector of float) +0:235 Branch: Return with expression +0:235 matrix-times-vector ( temp highp 4-component vector of float) +0:235 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:235 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:235 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:235 Constant: +0:235 0 (const uint) +0:235 Function Call: TDCameraIndex( ( global highp int) +0:235 Constant: +0:235 0 (const int) +0:235 'pos' ( in highp 4-component vector of float) +0:238 Function Definition: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:238 Function Parameters: +0:238 'id' ( in highp int) +0:238 'vec' ( in highp 3-component vector of float) +0:240 Sequence +0:240 Sequence +0:240 move second child to first child ( temp highp 3X3 matrix of float) +0:240 'm' ( temp highp 3X3 matrix of float) +0:240 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:240 'id' ( in highp int) +0:241 Branch: Return with expression +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 Construct mat3 ( temp highp 3X3 matrix of float) +0:241 world: direct index for structure (layout( column_major std140) global highp 4X4 matrix of float) +0:241 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:241 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:241 Constant: +0:241 0 (const uint) +0:241 Function Call: TDCameraIndex( ( global highp int) +0:241 Constant: +0:241 0 (const int) +0:241 matrix-times-vector ( temp highp 3-component vector of float) +0:241 'm' ( temp highp 3X3 matrix of float) +0:241 'vec' ( in highp 3-component vector of float) +0:243 Function Definition: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:243 Function Parameters: +0:243 'id' ( in highp int) +0:243 'vec' ( in highp 3-component vector of float) +0:245 Sequence +0:245 Sequence +0:245 move second child to first child ( temp highp 3X3 matrix of float) +0:245 'm' ( temp highp 3X3 matrix of float) +0:245 Function Call: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:245 'id' ( in highp int) +0:246 Branch: Return with expression +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 Construct mat3 ( temp highp 3X3 matrix of float) +0:246 worldForNormals: direct index for structure (layout( column_major std140) global highp 3X3 matrix of float) +0:246 indirect index (layout( column_major std140 offset=0) temp structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 uTDMats: direct index for structure (layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals}) +0:246 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:246 Constant: +0:246 0 (const uint) +0:246 Function Call: TDCameraIndex( ( global highp int) +0:246 Constant: +0:246 13 (const int) +0:246 matrix-times-vector ( temp highp 3-component vector of float) +0:246 'm' ( temp highp 3X3 matrix of float) +0:246 'vec' ( in highp 3-component vector of float) +0:248 Function Definition: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:248 Function Parameters: +0:248 'pos' ( in highp 4-component vector of float) +0:249 Sequence +0:249 Branch: Return with expression +0:249 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:249 Function Call: TDInstanceID( ( global highp int) +0:249 'pos' ( in highp 4-component vector of float) +0:251 Function Definition: TDInstanceDeformVec(vf3; ( global highp 3-component vector of float) +0:251 Function Parameters: +0:251 'vec' ( in highp 3-component vector of float) +0:252 Sequence +0:252 Branch: Return with expression +0:252 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:252 Function Call: TDInstanceID( ( global highp int) +0:252 'vec' ( in highp 3-component vector of float) +0:254 Function Definition: TDInstanceDeformNorm(vf3; ( global highp 3-component vector of float) +0:254 Function Parameters: +0:254 'vec' ( in highp 3-component vector of float) +0:255 Sequence +0:255 Branch: Return with expression +0:255 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:255 Function Call: TDInstanceID( ( global highp int) +0:255 'vec' ( in highp 3-component vector of float) +0:257 Function Definition: TDInstanceActive( ( global bool) +0:257 Function Parameters: +0:257 Sequence +0:257 Branch: Return with expression +0:257 Function Call: TDInstanceActive(i1; ( global bool) +0:257 Function Call: TDInstanceID( ( global highp int) +0:258 Function Definition: TDInstanceTranslate( ( global highp 3-component vector of float) +0:258 Function Parameters: +0:258 Sequence +0:258 Branch: Return with expression +0:258 Function Call: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:258 Function Call: TDInstanceID( ( global highp int) +0:259 Function Definition: TDInstanceRotateMat( ( global highp 3X3 matrix of float) +0:259 Function Parameters: +0:259 Sequence +0:259 Branch: Return with expression +0:259 Function Call: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:259 Function Call: TDInstanceID( ( global highp int) +0:260 Function Definition: TDInstanceScale( ( global highp 3-component vector of float) +0:260 Function Parameters: +0:260 Sequence +0:260 Branch: Return with expression +0:260 Function Call: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:260 Function Call: TDInstanceID( ( global highp int) +0:261 Function Definition: TDInstanceMat( ( global highp 4X4 matrix of float) +0:261 Function Parameters: +0:261 Sequence +0:261 Branch: Return with expression +0:261 Function Call: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:261 Function Call: TDInstanceID( ( global highp int) +0:263 Function Definition: TDInstanceMat3( ( global highp 3X3 matrix of float) +0:263 Function Parameters: +0:263 Sequence +0:263 Branch: Return with expression +0:263 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:263 Function Call: TDInstanceID( ( global highp int) +0:265 Function Definition: TDInstanceTexCoord(vf3; ( global highp 3-component vector of float) +0:265 Function Parameters: +0:265 't' ( in highp 3-component vector of float) +0:266 Sequence +0:266 Branch: Return with expression +0:266 Function Call: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:266 Function Call: TDInstanceID( ( global highp int) +0:266 't' ( in highp 3-component vector of float) +0:268 Function Definition: TDInstanceColor(vf4; ( global highp 4-component vector of float) +0:268 Function Parameters: +0:268 'curColor' ( in highp 4-component vector of float) +0:269 Sequence +0:269 Branch: Return with expression +0:269 Function Call: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:269 Function Call: TDInstanceID( ( global highp int) +0:269 'curColor' ( in highp 4-component vector of float) +0:271 Function Definition: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:271 Function Parameters: +0:271 'pos' ( in highp 4-component vector of float) +0:271 Sequence +0:271 Branch: Return with expression +0:271 'pos' ( in highp 4-component vector of float) +0:273 Function Definition: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:273 Function Parameters: +0:273 'vec' ( in highp 3-component vector of float) +0:273 Sequence +0:273 Branch: Return with expression +0:273 'vec' ( in highp 3-component vector of float) +0:275 Function Definition: TDFastDeformTangent(vf3;vf4;vf3; ( global highp 3-component vector of float) +0:275 Function Parameters: +0:275 'oldNorm' ( in highp 3-component vector of float) +0:275 'oldTangent' ( in highp 4-component vector of float) +0:275 'deformedNorm' ( in highp 3-component vector of float) +0:276 Sequence +0:276 Branch: Return with expression +0:276 vector swizzle ( temp highp 3-component vector of float) +0:276 'oldTangent' ( in highp 4-component vector of float) +0:276 Sequence +0:276 Constant: +0:276 0 (const int) +0:276 Constant: +0:276 1 (const int) +0:276 Constant: +0:276 2 (const int) +0:277 Function Definition: TDBoneMat(i1; ( global highp 4X4 matrix of float) +0:277 Function Parameters: +0:277 'index' ( in highp int) +0:278 Sequence +0:278 Branch: Return with expression +0:278 Constant: +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:278 1.000000 +0:280 Function Definition: TDDeform(vf4; ( global highp 4-component vector of float) +0:280 Function Parameters: +0:280 'pos' ( in highp 4-component vector of float) +0:281 Sequence +0:281 move second child to first child ( temp highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:281 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:281 'pos' ( in highp 4-component vector of float) +0:282 move second child to first child ( temp highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:282 Function Call: TDInstanceDeform(vf4; ( global highp 4-component vector of float) +0:282 'pos' ( in highp 4-component vector of float) +0:283 Branch: Return with expression +0:283 'pos' ( in highp 4-component vector of float) +0:286 Function Definition: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:286 Function Parameters: +0:286 'instanceID' ( in highp int) +0:286 'p' ( in highp 3-component vector of float) +0:287 Sequence +0:287 Sequence +0:287 move second child to first child ( temp highp 4-component vector of float) +0:287 'pos' ( temp highp 4-component vector of float) +0:287 Construct vec4 ( temp highp 4-component vector of float) +0:287 'p' ( in highp 3-component vector of float) +0:287 Constant: +0:287 1.000000 +0:288 move second child to first child ( temp highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:288 Function Call: TDSkinnedDeform(vf4; ( global highp 4-component vector of float) +0:288 'pos' ( temp highp 4-component vector of float) +0:289 move second child to first child ( temp highp 4-component vector of float) +0:289 'pos' ( temp highp 4-component vector of float) +0:289 Function Call: TDInstanceDeform(i1;vf4; ( global highp 4-component vector of float) +0:289 'instanceID' ( in highp int) +0:289 'pos' ( temp highp 4-component vector of float) +0:290 Branch: Return with expression +0:290 'pos' ( temp highp 4-component vector of float) +0:293 Function Definition: TDDeform(vf3; ( global highp 4-component vector of float) +0:293 Function Parameters: +0:293 'pos' ( in highp 3-component vector of float) +0:294 Sequence +0:294 Branch: Return with expression +0:294 Function Call: TDDeform(i1;vf3; ( global highp 4-component vector of float) +0:294 Function Call: TDInstanceID( ( global highp int) +0:294 'pos' ( in highp 3-component vector of float) +0:297 Function Definition: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:297 Function Parameters: +0:297 'instanceID' ( in highp int) +0:297 'vec' ( in highp 3-component vector of float) +0:298 Sequence +0:298 move second child to first child ( temp highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:298 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:298 'vec' ( in highp 3-component vector of float) +0:299 move second child to first child ( temp highp 3-component vector of float) +0:299 'vec' ( in highp 3-component vector of float) +0:299 Function Call: TDInstanceDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:299 'instanceID' ( in highp int) +0:299 'vec' ( in highp 3-component vector of float) +0:300 Branch: Return with expression +0:300 'vec' ( in highp 3-component vector of float) +0:303 Function Definition: TDDeformVec(vf3; ( global highp 3-component vector of float) +0:303 Function Parameters: +0:303 'vec' ( in highp 3-component vector of float) +0:304 Sequence +0:304 Branch: Return with expression +0:304 Function Call: TDDeformVec(i1;vf3; ( global highp 3-component vector of float) +0:304 Function Call: TDInstanceID( ( global highp int) +0:304 'vec' ( in highp 3-component vector of float) +0:307 Function Definition: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:307 Function Parameters: +0:307 'instanceID' ( in highp int) +0:307 'vec' ( in highp 3-component vector of float) +0:308 Sequence +0:308 move second child to first child ( temp highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:308 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:308 'vec' ( in highp 3-component vector of float) +0:309 move second child to first child ( temp highp 3-component vector of float) +0:309 'vec' ( in highp 3-component vector of float) +0:309 Function Call: TDInstanceDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:309 'instanceID' ( in highp int) +0:309 'vec' ( in highp 3-component vector of float) +0:310 Branch: Return with expression +0:310 'vec' ( in highp 3-component vector of float) +0:313 Function Definition: TDDeformNorm(vf3; ( global highp 3-component vector of float) +0:313 Function Parameters: +0:313 'vec' ( in highp 3-component vector of float) +0:314 Sequence +0:314 Branch: Return with expression +0:314 Function Call: TDDeformNorm(i1;vf3; ( global highp 3-component vector of float) +0:314 Function Call: TDInstanceID( ( global highp int) +0:314 'vec' ( in highp 3-component vector of float) +0:317 Function Definition: TDSkinnedDeformNorm(vf3; ( global highp 3-component vector of float) +0:317 Function Parameters: +0:317 'vec' ( in highp 3-component vector of float) +0:318 Sequence +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:318 Function Call: TDSkinnedDeformVec(vf3; ( global highp 3-component vector of float) +0:318 'vec' ( in highp 3-component vector of float) +0:319 Branch: Return with expression +0:319 'vec' ( in highp 3-component vector of float) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'P' (layout( location=0) in highp 3-component vector of float) +0:? 'N' (layout( location=1) in highp 3-component vector of float) +0:? 'Cd' (layout( location=2) in highp 4-component vector of float) +0:? 'uv' (layout( location=3) in 8-element array of highp 3-component vector of float) +0:? 'oVert' ( out block{ out highp 4-component vector of float color, out highp 3-component vector of float worldSpacePos, out highp 3-component vector of float texCoord0, flat out highp int cameraIndex, flat out highp int instance}) +0:? 'anon@4' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) +0:? 'gl_VertexIndex' ( in int VertexIndex) +0:? 'gl_InstanceIndex' ( in int InstanceIndex) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'mTD2DImageOutputs' (layout( rgba8) uniform 1-element array of highp image2D) +0:? 'mTD2DArrayImageOutputs' (layout( rgba8) uniform 1-element array of highp image2DArray) +0:? 'mTD3DImageOutputs' (layout( rgba8) uniform 1-element array of highp image3D) +0:? 'mTDCubeImageOutputs' (layout( rgba8) uniform 1-element array of highp imageCube) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:95 Function Definition: main( ( global void) +0:95 Function Parameters: +0:99 Sequence +0:99 Function Call: TDCheckDiscard( ( global void) +0:101 Sequence +0:101 move second child to first child ( temp highp 4-component vector of float) +0:101 'outcol' ( temp highp 4-component vector of float) +0:101 Constant: +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:101 0.000000 +0:103 Sequence +0:103 move second child to first child ( temp highp 3-component vector of float) +0:103 'texCoord0' ( temp highp 3-component vector of float) +0:103 vector swizzle ( temp highp 3-component vector of float) +0:103 texCoord0: direct index for structure ( in highp 3-component vector of float) +0:103 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:103 Constant: +0:103 2 (const int) +0:103 Sequence +0:103 Constant: +0:103 0 (const int) +0:103 Constant: +0:103 1 (const int) +0:103 Constant: +0:103 2 (const int) +0:104 Sequence +0:104 move second child to first child ( temp highp float) +0:104 'actualTexZ' ( temp highp float) +0:104 mod ( global highp float) +0:104 Convert int to float ( temp highp float) +0:104 Convert float to int ( temp highp int) +0:104 direct index ( temp highp float) +0:104 'texCoord0' ( temp highp 3-component vector of float) +0:104 Constant: +0:104 2 (const int) +0:104 Constant: +0:104 2048.000000 +0:105 Sequence +0:105 move second child to first child ( temp highp float) +0:105 'instanceLoop' ( temp highp float) +0:105 Floor ( global highp float) +0:105 Convert int to float ( temp highp float) +0:105 divide ( temp highp int) +0:105 Convert float to int ( temp highp int) +0:105 direct index ( temp highp float) +0:105 'texCoord0' ( temp highp 3-component vector of float) +0:105 Constant: +0:105 2 (const int) +0:105 Constant: +0:105 2048 (const int) +0:106 move second child to first child ( temp highp float) +0:106 direct index ( temp highp float) +0:106 'texCoord0' ( temp highp 3-component vector of float) +0:106 Constant: +0:106 2 (const int) +0:106 'actualTexZ' ( temp highp float) +0:107 Sequence +0:107 move second child to first child ( temp highp 4-component vector of float) +0:107 'colorMapColor' ( temp highp 4-component vector of float) +0:107 texture ( global highp 4-component vector of float) +0:107 'sColorMap' ( uniform highp sampler2DArray) +0:107 vector swizzle ( temp highp 3-component vector of float) +0:107 'texCoord0' ( temp highp 3-component vector of float) +0:107 Sequence +0:107 Constant: +0:107 0 (const int) +0:107 Constant: +0:107 1 (const int) +0:107 Constant: +0:107 2 (const int) +0:109 Sequence +0:109 move second child to first child ( temp highp float) +0:109 'red' ( temp highp float) +0:109 indirect index ( temp highp float) +0:109 'colorMapColor' ( temp highp 4-component vector of float) +0:109 Convert float to int ( temp highp int) +0:109 'instanceLoop' ( temp highp float) +0:110 move second child to first child ( temp highp 4-component vector of float) +0:110 'colorMapColor' ( temp highp 4-component vector of float) +0:110 Construct vec4 ( temp highp 4-component vector of float) +0:110 'red' ( temp highp float) +0:112 add second child into first child ( temp highp 3-component vector of float) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 'outcol' ( temp highp 4-component vector of float) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:112 component-wise multiply ( temp highp 3-component vector of float) +0:112 uConstant: direct index for structure ( uniform highp 3-component vector of float) +0:112 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:112 Constant: +0:112 3 (const uint) +0:112 vector swizzle ( temp highp 3-component vector of float) +0:112 color: direct index for structure ( in highp 4-component vector of float) +0:112 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:112 Constant: +0:112 0 (const int) +0:112 Sequence +0:112 Constant: +0:112 0 (const int) +0:112 Constant: +0:112 1 (const int) +0:112 Constant: +0:112 2 (const int) +0:114 multiply second child into first child ( temp highp 4-component vector of float) +0:114 'outcol' ( temp highp 4-component vector of float) +0:114 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Sequence +0:117 move second child to first child ( temp highp float) +0:117 'alpha' ( temp highp float) +0:117 component-wise multiply ( temp highp float) +0:117 direct index ( temp highp float) +0:117 color: direct index for structure ( in highp 4-component vector of float) +0:117 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:117 Constant: +0:117 0 (const int) +0:117 Constant: +0:117 3 (const int) +0:117 direct index ( temp highp float) +0:117 'colorMapColor' ( temp highp 4-component vector of float) +0:117 Constant: +0:117 3 (const int) +0:120 move second child to first child ( temp highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:120 Function Call: TDDither(vf4; ( global highp 4-component vector of float) +0:120 'outcol' ( temp highp 4-component vector of float) +0:122 vector scale second child into first child ( temp highp 3-component vector of float) +0:122 vector swizzle ( temp highp 3-component vector of float) +0:122 'outcol' ( temp highp 4-component vector of float) +0:122 Sequence +0:122 Constant: +0:122 0 (const int) +0:122 Constant: +0:122 1 (const int) +0:122 Constant: +0:122 2 (const int) +0:122 'alpha' ( temp highp float) +0:126 Function Call: TDAlphaTest(f1; ( global void) +0:126 'alpha' ( temp highp float) +0:128 move second child to first child ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'outcol' ( temp highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:128 'alpha' ( temp highp float) +0:129 move second child to first child ( temp highp 4-component vector of float) +0:129 direct index (layout( location=0) temp highp 4-component vector of float) +0:129 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:129 Constant: +0:129 0 (const int) +0:129 Function Call: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:129 'outcol' ( temp highp 4-component vector of float) +0:135 Sequence +0:135 Sequence +0:135 move second child to first child ( temp highp int) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop with condition tested first +0:135 Loop Condition +0:135 Compare Less Than ( temp bool) +0:135 'i' ( temp highp int) +0:135 Constant: +0:135 1 (const int) +0:135 Loop Body +0:137 Sequence +0:137 move second child to first child ( temp highp 4-component vector of float) +0:137 indirect index (layout( location=0) temp highp 4-component vector of float) +0:137 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:137 'i' ( temp highp int) +0:137 Constant: +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:137 0.000000 +0:135 Loop Terminal Expression +0:135 Post-Increment ( temp highp int) +0:135 'i' ( temp highp int) +0:116 Function Definition: TDColor(vf4; ( global highp 4-component vector of float) +0:116 Function Parameters: +0:116 'color' ( in highp 4-component vector of float) +0:116 Sequence +0:116 Branch: Return with expression +0:116 'color' ( in highp 4-component vector of float) +0:117 Function Definition: TDCheckOrderIndTrans( ( global void) +0:117 Function Parameters: +0:119 Function Definition: TDCheckDiscard( ( global void) +0:119 Function Parameters: +0:120 Sequence +0:120 Function Call: TDCheckOrderIndTrans( ( global void) +0:122 Function Definition: TDDither(vf4; ( global highp 4-component vector of float) +0:122 Function Parameters: +0:122 'color' ( in highp 4-component vector of float) +0:124 Sequence +0:124 Sequence +0:124 move second child to first child ( temp highp float) +0:124 'd' ( temp highp float) +0:125 direct index ( temp highp float) +0:125 texture ( global highp 4-component vector of float) +0:124 'sTDNoiseMap' ( uniform highp sampler2D) +0:125 divide ( temp highp 2-component vector of float) +0:125 vector swizzle ( temp highp 2-component vector of float) +0:125 'gl_FragCoord' ( gl_FragCoord highp 4-component vector of float FragCoord) +0:125 Sequence +0:125 Constant: +0:125 0 (const int) +0:125 Constant: +0:125 1 (const int) +0:125 Constant: +0:125 256.000000 +0:125 Constant: +0:125 0 (const int) +0:126 subtract second child into first child ( temp highp float) +0:126 'd' ( temp highp float) +0:126 Constant: +0:126 0.500000 +0:127 divide second child into first child ( temp highp float) +0:127 'd' ( temp highp float) +0:127 Constant: +0:127 256.000000 +0:128 Branch: Return with expression +0:128 Construct vec4 ( temp highp 4-component vector of float) +0:128 add ( temp highp 3-component vector of float) +0:128 vector swizzle ( temp highp 3-component vector of float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Sequence +0:128 Constant: +0:128 0 (const int) +0:128 Constant: +0:128 1 (const int) +0:128 Constant: +0:128 2 (const int) +0:128 'd' ( temp highp float) +0:128 direct index ( temp highp float) +0:128 'color' ( in highp 4-component vector of float) +0:128 Constant: +0:128 3 (const int) +0:130 Function Definition: TDFrontFacing(vf3;vf3; ( global bool) +0:130 Function Parameters: +0:130 'pos' ( in highp 3-component vector of float) +0:130 'normal' ( in highp 3-component vector of float) +0:132 Sequence +0:132 Branch: Return with expression +0:132 'gl_FrontFacing' ( gl_FrontFacing bool Face) +0:134 Function Definition: TDAttenuateLight(i1;f1; ( global highp float) +0:134 Function Parameters: +0:134 'index' ( in highp int) +0:134 'lightDist' ( in highp float) +0:136 Sequence +0:136 Branch: Return with expression +0:136 Constant: +0:136 1.000000 +0:138 Function Definition: TDAlphaTest(f1; ( global void) +0:138 Function Parameters: +0:138 'alpha' ( in highp float) +0:140 Function Definition: TDHardShadow(i1;vf3; ( global highp float) +0:140 Function Parameters: +0:140 'lightIndex' ( in highp int) +0:140 'worldSpacePos' ( in highp 3-component vector of float) +0:141 Sequence +0:141 Branch: Return with expression +0:141 Constant: +0:141 0.000000 +0:142 Function Definition: TDSoftShadow(i1;vf3;i1;i1; ( global highp float) +0:142 Function Parameters: +0:142 'lightIndex' ( in highp int) +0:142 'worldSpacePos' ( in highp 3-component vector of float) +0:142 'samples' ( in highp int) +0:142 'steps' ( in highp int) +0:143 Sequence +0:143 Branch: Return with expression +0:143 Constant: +0:143 0.000000 +0:144 Function Definition: TDSoftShadow(i1;vf3; ( global highp float) +0:144 Function Parameters: +0:144 'lightIndex' ( in highp int) +0:144 'worldSpacePos' ( in highp 3-component vector of float) +0:145 Sequence +0:145 Branch: Return with expression +0:145 Constant: +0:145 0.000000 +0:146 Function Definition: TDShadow(i1;vf3; ( global highp float) +0:146 Function Parameters: +0:146 'lightIndex' ( in highp int) +0:146 'worldSpacePos' ( in highp 3-component vector of float) +0:147 Sequence +0:147 Branch: Return with expression +0:147 Constant: +0:147 0.000000 +0:152 Function Definition: iTDRadicalInverse_VdC(u1; ( global highp float) +0:152 Function Parameters: +0:152 'bits' ( in highp uint) +0:154 Sequence +0:154 move second child to first child ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 inclusive-or ( temp highp uint) +0:154 left-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:154 right-shift ( temp highp uint) +0:154 'bits' ( in highp uint) +0:154 Constant: +0:154 16 (const uint) +0:155 move second child to first child ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 inclusive-or ( temp highp uint) +0:155 left-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 1431655765 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:155 right-shift ( temp highp uint) +0:155 bitwise and ( temp highp uint) +0:155 'bits' ( in highp uint) +0:155 Constant: +0:155 2863311530 (const uint) +0:155 Constant: +0:155 1 (const uint) +0:156 move second child to first child ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 inclusive-or ( temp highp uint) +0:156 left-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 858993459 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:156 right-shift ( temp highp uint) +0:156 bitwise and ( temp highp uint) +0:156 'bits' ( in highp uint) +0:156 Constant: +0:156 3435973836 (const uint) +0:156 Constant: +0:156 2 (const uint) +0:157 move second child to first child ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 inclusive-or ( temp highp uint) +0:157 left-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 252645135 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:157 right-shift ( temp highp uint) +0:157 bitwise and ( temp highp uint) +0:157 'bits' ( in highp uint) +0:157 Constant: +0:157 4042322160 (const uint) +0:157 Constant: +0:157 4 (const uint) +0:158 move second child to first child ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 inclusive-or ( temp highp uint) +0:158 left-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 16711935 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:158 right-shift ( temp highp uint) +0:158 bitwise and ( temp highp uint) +0:158 'bits' ( in highp uint) +0:158 Constant: +0:158 4278255360 (const uint) +0:158 Constant: +0:158 8 (const uint) +0:159 Branch: Return with expression +0:159 component-wise multiply ( temp highp float) +0:159 Convert uint to float ( temp highp float) +0:159 'bits' ( in highp uint) +0:159 Constant: +0:159 2.3283064365387e-10 +0:161 Function Definition: iTDHammersley(u1;u1; ( global highp 2-component vector of float) +0:161 Function Parameters: +0:161 'i' ( in highp uint) +0:161 'N' ( in highp uint) +0:163 Sequence +0:163 Branch: Return with expression +0:163 Construct vec2 ( temp highp 2-component vector of float) +0:163 divide ( temp highp float) +0:163 Convert uint to float ( temp highp float) +0:163 'i' ( in highp uint) +0:163 Convert uint to float ( temp highp float) +0:163 'N' ( in highp uint) +0:163 Function Call: iTDRadicalInverse_VdC(u1; ( global highp float) +0:163 'i' ( in highp uint) +0:165 Function Definition: iTDImportanceSampleGGX(vf2;f1;vf3; ( global highp 3-component vector of float) +0:165 Function Parameters: +0:165 'Xi' ( in highp 2-component vector of float) +0:165 'roughness2' ( in highp float) +0:165 'N' ( in highp 3-component vector of float) +0:167 Sequence +0:167 Sequence +0:167 move second child to first child ( temp highp float) +0:167 'a' ( temp highp float) +0:167 'roughness2' ( in highp float) +0:168 Sequence +0:168 move second child to first child ( temp highp float) +0:168 'phi' ( temp highp float) +0:168 component-wise multiply ( temp highp float) +0:168 Constant: +0:168 6.283185 +0:168 direct index ( temp highp float) +0:168 'Xi' ( in highp 2-component vector of float) +0:168 Constant: +0:168 0 (const int) +0:169 Sequence +0:169 move second child to first child ( temp highp float) +0:169 'cosTheta' ( temp highp float) +0:169 sqrt ( global highp float) +0:169 divide ( temp highp float) +0:169 subtract ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:169 add ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 component-wise multiply ( temp highp float) +0:169 subtract ( temp highp float) +0:169 component-wise multiply ( temp highp float) +0:169 'a' ( temp highp float) +0:169 'a' ( temp highp float) +0:169 Constant: +0:169 1.000000 +0:169 direct index ( temp highp float) +0:169 'Xi' ( in highp 2-component vector of float) +0:169 Constant: +0:169 1 (const int) +0:170 Sequence +0:170 move second child to first child ( temp highp float) +0:170 'sinTheta' ( temp highp float) +0:170 sqrt ( global highp float) +0:170 subtract ( temp highp float) +0:170 Constant: +0:170 1.000000 +0:170 component-wise multiply ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:170 'cosTheta' ( temp highp float) +0:173 move second child to first child ( temp highp float) +0:173 direct index ( temp highp float) +0:173 'H' ( temp highp 3-component vector of float) +0:173 Constant: +0:173 0 (const int) +0:173 component-wise multiply ( temp highp float) +0:173 'sinTheta' ( temp highp float) +0:173 cosine ( global highp float) +0:173 'phi' ( temp highp float) +0:174 move second child to first child ( temp highp float) +0:174 direct index ( temp highp float) +0:174 'H' ( temp highp 3-component vector of float) +0:174 Constant: +0:174 1 (const int) +0:174 component-wise multiply ( temp highp float) +0:174 'sinTheta' ( temp highp float) +0:174 sine ( global highp float) +0:174 'phi' ( temp highp float) +0:175 move second child to first child ( temp highp float) +0:175 direct index ( temp highp float) +0:175 'H' ( temp highp 3-component vector of float) +0:175 Constant: +0:175 2 (const int) +0:175 'cosTheta' ( temp highp float) +0:177 Sequence +0:177 move second child to first child ( temp highp 3-component vector of float) +0:177 'upVector' ( temp highp 3-component vector of float) +0:177 Test condition and select ( temp highp 3-component vector of float) +0:177 Condition +0:177 Compare Less Than ( temp bool) +0:177 Absolute value ( global highp float) +0:177 direct index ( temp highp float) +0:177 'N' ( in highp 3-component vector of float) +0:177 Constant: +0:177 2 (const int) +0:177 Constant: +0:177 0.999000 +0:177 true case +0:177 Constant: +0:177 0.000000 +0:177 0.000000 +0:177 1.000000 +0:177 false case +0:177 Constant: +0:177 1.000000 +0:177 0.000000 +0:177 0.000000 +0:178 Sequence +0:178 move second child to first child ( temp highp 3-component vector of float) +0:178 'tangentX' ( temp highp 3-component vector of float) +0:178 normalize ( global highp 3-component vector of float) +0:178 cross-product ( global highp 3-component vector of float) +0:178 'upVector' ( temp highp 3-component vector of float) +0:178 'N' ( in highp 3-component vector of float) +0:179 Sequence +0:179 move second child to first child ( temp highp 3-component vector of float) +0:179 'tangentY' ( temp highp 3-component vector of float) +0:179 cross-product ( global highp 3-component vector of float) +0:179 'N' ( in highp 3-component vector of float) +0:179 'tangentX' ( temp highp 3-component vector of float) +0:182 Sequence +0:182 move second child to first child ( temp highp 3-component vector of float) +0:182 'worldResult' ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 add ( temp highp 3-component vector of float) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentX' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 0 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'tangentY' ( temp highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 1 (const int) +0:182 vector-scale ( temp highp 3-component vector of float) +0:182 'N' ( in highp 3-component vector of float) +0:182 direct index ( temp highp float) +0:182 'H' ( temp highp 3-component vector of float) +0:182 Constant: +0:182 2 (const int) +0:183 Branch: Return with expression +0:183 'worldResult' ( temp highp 3-component vector of float) +0:185 Function Definition: iTDDistributionGGX(vf3;vf3;f1; ( global highp float) +0:185 Function Parameters: +0:185 'normal' ( in highp 3-component vector of float) +0:185 'half_vector' ( in highp 3-component vector of float) +0:185 'roughness2' ( in highp float) +0:? Sequence +0:189 Sequence +0:189 move second child to first child ( temp highp float) +0:189 'NdotH' ( temp highp float) +0:189 clamp ( global highp float) +0:189 dot-product ( global highp float) +0:189 'normal' ( in highp 3-component vector of float) +0:189 'half_vector' ( in highp 3-component vector of float) +0:189 Constant: +0:189 1.0000000000000e-06 +0:189 Constant: +0:189 1.000000 +0:191 Sequence +0:191 move second child to first child ( temp highp float) +0:191 'alpha2' ( temp highp float) +0:191 component-wise multiply ( temp highp float) +0:191 'roughness2' ( in highp float) +0:191 'roughness2' ( in highp float) +0:193 Sequence +0:193 move second child to first child ( temp highp float) +0:193 'denom' ( temp highp float) +0:193 add ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 component-wise multiply ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 'NdotH' ( temp highp float) +0:193 subtract ( temp highp float) +0:193 'alpha2' ( temp highp float) +0:193 Constant: +0:193 1.000000 +0:193 Constant: +0:193 1.000000 +0:194 move second child to first child ( temp highp float) +0:194 'denom' ( temp highp float) +0:194 max ( global highp float) +0:194 Constant: +0:194 1.0000000000000e-08 +0:194 'denom' ( temp highp float) +0:195 Branch: Return with expression +0:195 divide ( temp highp float) +0:195 'alpha2' ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 component-wise multiply ( temp highp float) +0:195 Constant: +0:195 3.141593 +0:195 'denom' ( temp highp float) +0:195 'denom' ( temp highp float) +0:197 Function Definition: iTDCalcF(vf3;f1; ( global highp 3-component vector of float) +0:197 Function Parameters: +0:197 'F0' ( in highp 3-component vector of float) +0:197 'VdotH' ( in highp float) +0:198 Sequence +0:198 Branch: Return with expression +0:198 add ( temp highp 3-component vector of float) +0:198 'F0' ( in highp 3-component vector of float) +0:198 vector-scale ( temp highp 3-component vector of float) +0:198 subtract ( temp highp 3-component vector of float) +0:198 Constant: +0:198 1.000000 +0:198 1.000000 +0:198 1.000000 +0:198 'F0' ( in highp 3-component vector of float) +0:198 pow ( global highp float) +0:198 Constant: +0:198 2.000000 +0:198 component-wise multiply ( temp highp float) +0:198 subtract ( temp highp float) +0:198 component-wise multiply ( temp highp float) +0:198 Constant: +0:198 -5.554730 +0:198 'VdotH' ( in highp float) +0:198 Constant: +0:198 6.983160 +0:198 'VdotH' ( in highp float) +0:201 Function Definition: iTDCalcG(f1;f1;f1; ( global highp float) +0:201 Function Parameters: +0:201 'NdotL' ( in highp float) +0:201 'NdotV' ( in highp float) +0:201 'k' ( in highp float) +0:202 Sequence +0:202 Sequence +0:202 move second child to first child ( temp highp float) +0:202 'Gl' ( temp highp float) +0:202 divide ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 add ( temp highp float) +0:202 component-wise multiply ( temp highp float) +0:202 'NdotL' ( in highp float) +0:202 subtract ( temp highp float) +0:202 Constant: +0:202 1.000000 +0:202 'k' ( in highp float) +0:202 'k' ( in highp float) +0:203 Sequence +0:203 move second child to first child ( temp highp float) +0:203 'Gv' ( temp highp float) +0:203 divide ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 add ( temp highp float) +0:203 component-wise multiply ( temp highp float) +0:203 'NdotV' ( in highp float) +0:203 subtract ( temp highp float) +0:203 Constant: +0:203 1.000000 +0:203 'k' ( in highp float) +0:203 'k' ( in highp float) +0:204 Branch: Return with expression +0:204 component-wise multiply ( temp highp float) +0:204 'Gl' ( temp highp float) +0:204 'Gv' ( temp highp float) +0:207 Function Definition: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:207 Function Parameters: +0:207 'index' ( in highp int) +0:207 'diffuseColor' ( in highp 3-component vector of float) +0:207 'specularColor' ( in highp 3-component vector of float) +0:207 'worldSpacePos' ( in highp 3-component vector of float) +0:207 'normal' ( in highp 3-component vector of float) +0:207 'shadowStrength' ( in highp float) +0:207 'shadowColor' ( in highp 3-component vector of float) +0:207 'camVector' ( in highp 3-component vector of float) +0:207 'roughness' ( in highp float) +0:? Sequence +0:210 Branch: Return with expression +0:210 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:213 Function Definition: TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:213 Function Parameters: +0:213 'diffuseContrib' ( inout highp 3-component vector of float) +0:213 'specularContrib' ( inout highp 3-component vector of float) +0:213 'shadowStrengthOut' ( inout highp float) +0:213 'index' ( in highp int) +0:213 'diffuseColor' ( in highp 3-component vector of float) +0:213 'specularColor' ( in highp 3-component vector of float) +0:213 'worldSpacePos' ( in highp 3-component vector of float) +0:213 'normal' ( in highp 3-component vector of float) +0:213 'shadowStrength' ( in highp float) +0:213 'shadowColor' ( in highp 3-component vector of float) +0:213 'camVector' ( in highp 3-component vector of float) +0:213 'roughness' ( in highp float) +0:215 Sequence +0:215 Sequence +0:215 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 'index' ( in highp int) +0:215 'diffuseColor' ( in highp 3-component vector of float) +0:215 'specularColor' ( in highp 3-component vector of float) +0:215 'worldSpacePos' ( in highp 3-component vector of float) +0:215 'normal' ( in highp 3-component vector of float) +0:215 'shadowStrength' ( in highp float) +0:215 'shadowColor' ( in highp 3-component vector of float) +0:215 'camVector' ( in highp 3-component vector of float) +0:215 'roughness' ( in highp float) +0:215 move second child to first child ( temp highp 3-component vector of float) +0:215 'diffuseContrib' ( inout highp 3-component vector of float) +0:215 diffuse: direct index for structure ( global highp 3-component vector of float) +0:215 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:215 Constant: +0:215 0 (const int) +0:216 move second child to first child ( temp highp 3-component vector of float) +0:216 'specularContrib' ( inout highp 3-component vector of float) +0:216 specular: direct index for structure ( global highp 3-component vector of float) +0:216 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:216 Constant: +0:216 1 (const int) +0:217 move second child to first child ( temp highp float) +0:217 'shadowStrengthOut' ( inout highp float) +0:217 shadowStrength: direct index for structure ( global highp float) +0:217 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:217 Constant: +0:217 2 (const int) +0:220 Function Definition: TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:220 Function Parameters: +0:220 'diffuseContrib' ( inout highp 3-component vector of float) +0:220 'specularContrib' ( inout highp 3-component vector of float) +0:220 'index' ( in highp int) +0:220 'diffuseColor' ( in highp 3-component vector of float) +0:220 'specularColor' ( in highp 3-component vector of float) +0:220 'worldSpacePos' ( in highp 3-component vector of float) +0:220 'normal' ( in highp 3-component vector of float) +0:220 'shadowStrength' ( in highp float) +0:220 'shadowColor' ( in highp 3-component vector of float) +0:220 'camVector' ( in highp 3-component vector of float) +0:220 'roughness' ( in highp float) +0:222 Sequence +0:222 Sequence +0:222 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Function Call: TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 'index' ( in highp int) +0:222 'diffuseColor' ( in highp 3-component vector of float) +0:222 'specularColor' ( in highp 3-component vector of float) +0:222 'worldSpacePos' ( in highp 3-component vector of float) +0:222 'normal' ( in highp 3-component vector of float) +0:222 'shadowStrength' ( in highp float) +0:222 'shadowColor' ( in highp 3-component vector of float) +0:222 'camVector' ( in highp 3-component vector of float) +0:222 'roughness' ( in highp float) +0:222 move second child to first child ( temp highp 3-component vector of float) +0:222 'diffuseContrib' ( inout highp 3-component vector of float) +0:222 diffuse: direct index for structure ( global highp 3-component vector of float) +0:222 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:222 Constant: +0:222 0 (const int) +0:223 move second child to first child ( temp highp 3-component vector of float) +0:223 'specularContrib' ( inout highp 3-component vector of float) +0:223 specular: direct index for structure ( global highp 3-component vector of float) +0:223 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:223 Constant: +0:223 1 (const int) +0:226 Function Definition: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:226 Function Parameters: +0:226 'index' ( in highp int) +0:226 'diffuseColor' ( in highp 3-component vector of float) +0:226 'specularColor' ( in highp 3-component vector of float) +0:226 'normal' ( in highp 3-component vector of float) +0:226 'camVector' ( in highp 3-component vector of float) +0:226 'roughness' ( in highp float) +0:226 'ambientOcclusion' ( in highp float) +0:? Sequence +0:229 Branch: Return with expression +0:229 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:232 Function Definition: TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1; ( global void) +0:232 Function Parameters: +0:232 'diffuseContrib' ( inout highp 3-component vector of float) +0:232 'specularContrib' ( inout highp 3-component vector of float) +0:232 'index' ( in highp int) +0:232 'diffuseColor' ( in highp 3-component vector of float) +0:232 'specularColor' ( in highp 3-component vector of float) +0:232 'normal' ( in highp 3-component vector of float) +0:232 'camVector' ( in highp 3-component vector of float) +0:232 'roughness' ( in highp float) +0:232 'ambientOcclusion' ( in highp float) +0:234 Sequence +0:234 Sequence +0:234 move second child to first child ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 Function Call: TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:234 'index' ( in highp int) +0:234 'diffuseColor' ( in highp 3-component vector of float) +0:234 'specularColor' ( in highp 3-component vector of float) +0:234 'normal' ( in highp 3-component vector of float) +0:234 'camVector' ( in highp 3-component vector of float) +0:234 'roughness' ( in highp float) +0:234 'ambientOcclusion' ( in highp float) +0:235 move second child to first child ( temp highp 3-component vector of float) +0:235 'diffuseContrib' ( inout highp 3-component vector of float) +0:235 diffuse: direct index for structure ( global highp 3-component vector of float) +0:235 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:235 Constant: +0:235 0 (const int) +0:236 move second child to first child ( temp highp 3-component vector of float) +0:236 'specularContrib' ( inout highp 3-component vector of float) +0:236 specular: direct index for structure ( global highp 3-component vector of float) +0:236 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp float shadowStrength}) +0:236 Constant: +0:236 1 (const int) +0:239 Function Definition: TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:239 Function Parameters: +0:239 'index' ( in highp int) +0:239 'worldSpacePos' ( in highp 3-component vector of float) +0:239 'normal' ( in highp 3-component vector of float) +0:239 'shadowStrength' ( in highp float) +0:239 'shadowColor' ( in highp 3-component vector of float) +0:239 'camVector' ( in highp 3-component vector of float) +0:239 'shininess' ( in highp float) +0:239 'shininess2' ( in highp float) +0:? Sequence +0:242 switch +0:242 condition +0:242 'index' ( in highp int) +0:242 body +0:242 Sequence +0:244 default: +0:? Sequence +0:245 move second child to first child ( temp highp 3-component vector of float) +0:245 diffuse: direct index for structure ( global highp 3-component vector of float) +0:245 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:245 Constant: +0:245 0 (const int) +0:245 Constant: +0:245 0.000000 +0:245 0.000000 +0:245 0.000000 +0:246 move second child to first child ( temp highp 3-component vector of float) +0:246 specular: direct index for structure ( global highp 3-component vector of float) +0:246 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:246 Constant: +0:246 1 (const int) +0:246 Constant: +0:246 0.000000 +0:246 0.000000 +0:246 0.000000 +0:247 move second child to first child ( temp highp 3-component vector of float) +0:247 specular2: direct index for structure ( global highp 3-component vector of float) +0:247 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:247 Constant: +0:247 2 (const int) +0:247 Constant: +0:247 0.000000 +0:247 0.000000 +0:247 0.000000 +0:248 move second child to first child ( temp highp float) +0:248 shadowStrength: direct index for structure ( global highp float) +0:248 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:248 Constant: +0:248 3 (const int) +0:248 Constant: +0:248 0.000000 +0:249 Branch: Break +0:251 Branch: Return with expression +0:251 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:254 Function Definition: TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:254 Function Parameters: +0:254 'diffuseContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib' ( inout highp 3-component vector of float) +0:254 'specularContrib2' ( inout highp 3-component vector of float) +0:254 'shadowStrengthOut' ( inout highp float) +0:254 'index' ( in highp int) +0:254 'worldSpacePos' ( in highp 3-component vector of float) +0:254 'normal' ( in highp 3-component vector of float) +0:254 'shadowStrength' ( in highp float) +0:254 'shadowColor' ( in highp 3-component vector of float) +0:254 'camVector' ( in highp 3-component vector of float) +0:254 'shininess' ( in highp float) +0:254 'shininess2' ( in highp float) +0:? Sequence +0:257 switch +0:257 condition +0:257 'index' ( in highp int) +0:257 body +0:257 Sequence +0:259 default: +0:? Sequence +0:260 move second child to first child ( temp highp 3-component vector of float) +0:260 diffuse: direct index for structure ( global highp 3-component vector of float) +0:260 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:260 Constant: +0:260 0 (const int) +0:260 Constant: +0:260 0.000000 +0:260 0.000000 +0:260 0.000000 +0:261 move second child to first child ( temp highp 3-component vector of float) +0:261 specular: direct index for structure ( global highp 3-component vector of float) +0:261 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:261 Constant: +0:261 1 (const int) +0:261 Constant: +0:261 0.000000 +0:261 0.000000 +0:261 0.000000 +0:262 move second child to first child ( temp highp 3-component vector of float) +0:262 specular2: direct index for structure ( global highp 3-component vector of float) +0:262 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:262 Constant: +0:262 2 (const int) +0:262 Constant: +0:262 0.000000 +0:262 0.000000 +0:262 0.000000 +0:263 move second child to first child ( temp highp float) +0:263 shadowStrength: direct index for structure ( global highp float) +0:263 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:263 Constant: +0:263 3 (const int) +0:263 Constant: +0:263 0.000000 +0:264 Branch: Break +0:266 move second child to first child ( temp highp 3-component vector of float) +0:266 'diffuseContrib' ( inout highp 3-component vector of float) +0:266 diffuse: direct index for structure ( global highp 3-component vector of float) +0:266 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:266 Constant: +0:266 0 (const int) +0:267 move second child to first child ( temp highp 3-component vector of float) +0:267 'specularContrib' ( inout highp 3-component vector of float) +0:267 specular: direct index for structure ( global highp 3-component vector of float) +0:267 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:267 Constant: +0:267 1 (const int) +0:268 move second child to first child ( temp highp 3-component vector of float) +0:268 'specularContrib2' ( inout highp 3-component vector of float) +0:268 specular2: direct index for structure ( global highp 3-component vector of float) +0:268 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:268 Constant: +0:268 2 (const int) +0:269 move second child to first child ( temp highp float) +0:269 'shadowStrengthOut' ( inout highp float) +0:269 shadowStrength: direct index for structure ( global highp float) +0:269 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:269 Constant: +0:269 3 (const int) +0:272 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1; ( global void) +0:272 Function Parameters: +0:272 'diffuseContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib' ( inout highp 3-component vector of float) +0:272 'specularContrib2' ( inout highp 3-component vector of float) +0:272 'index' ( in highp int) +0:272 'worldSpacePos' ( in highp 3-component vector of float) +0:272 'normal' ( in highp 3-component vector of float) +0:272 'shadowStrength' ( in highp float) +0:272 'shadowColor' ( in highp 3-component vector of float) +0:272 'camVector' ( in highp 3-component vector of float) +0:272 'shininess' ( in highp float) +0:272 'shininess2' ( in highp float) +0:? Sequence +0:275 switch +0:275 condition +0:275 'index' ( in highp int) +0:275 body +0:275 Sequence +0:277 default: +0:? Sequence +0:278 move second child to first child ( temp highp 3-component vector of float) +0:278 diffuse: direct index for structure ( global highp 3-component vector of float) +0:278 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:278 Constant: +0:278 0 (const int) +0:278 Constant: +0:278 0.000000 +0:278 0.000000 +0:278 0.000000 +0:279 move second child to first child ( temp highp 3-component vector of float) +0:279 specular: direct index for structure ( global highp 3-component vector of float) +0:279 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:279 Constant: +0:279 1 (const int) +0:279 Constant: +0:279 0.000000 +0:279 0.000000 +0:279 0.000000 +0:280 move second child to first child ( temp highp 3-component vector of float) +0:280 specular2: direct index for structure ( global highp 3-component vector of float) +0:280 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:280 Constant: +0:280 2 (const int) +0:280 Constant: +0:280 0.000000 +0:280 0.000000 +0:280 0.000000 +0:281 move second child to first child ( temp highp float) +0:281 shadowStrength: direct index for structure ( global highp float) +0:281 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:281 Constant: +0:281 3 (const int) +0:281 Constant: +0:281 0.000000 +0:282 Branch: Break +0:284 move second child to first child ( temp highp 3-component vector of float) +0:284 'diffuseContrib' ( inout highp 3-component vector of float) +0:284 diffuse: direct index for structure ( global highp 3-component vector of float) +0:284 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:284 Constant: +0:284 0 (const int) +0:285 move second child to first child ( temp highp 3-component vector of float) +0:285 'specularContrib' ( inout highp 3-component vector of float) +0:285 specular: direct index for structure ( global highp 3-component vector of float) +0:285 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:285 Constant: +0:285 1 (const int) +0:286 move second child to first child ( temp highp 3-component vector of float) +0:286 'specularContrib2' ( inout highp 3-component vector of float) +0:286 specular2: direct index for structure ( global highp 3-component vector of float) +0:286 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:286 Constant: +0:286 2 (const int) +0:289 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1; ( global void) +0:289 Function Parameters: +0:289 'diffuseContrib' ( inout highp 3-component vector of float) +0:289 'specularContrib' ( inout highp 3-component vector of float) +0:289 'index' ( in highp int) +0:289 'worldSpacePos' ( in highp 3-component vector of float) +0:289 'normal' ( in highp 3-component vector of float) +0:289 'shadowStrength' ( in highp float) +0:289 'shadowColor' ( in highp 3-component vector of float) +0:289 'camVector' ( in highp 3-component vector of float) +0:289 'shininess' ( in highp float) +0:? Sequence +0:292 switch +0:292 condition +0:292 'index' ( in highp int) +0:292 body +0:292 Sequence +0:294 default: +0:? Sequence +0:295 move second child to first child ( temp highp 3-component vector of float) +0:295 diffuse: direct index for structure ( global highp 3-component vector of float) +0:295 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:295 Constant: +0:295 0 (const int) +0:295 Constant: +0:295 0.000000 +0:295 0.000000 +0:295 0.000000 +0:296 move second child to first child ( temp highp 3-component vector of float) +0:296 specular: direct index for structure ( global highp 3-component vector of float) +0:296 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:296 Constant: +0:296 1 (const int) +0:296 Constant: +0:296 0.000000 +0:296 0.000000 +0:296 0.000000 +0:297 move second child to first child ( temp highp 3-component vector of float) +0:297 specular2: direct index for structure ( global highp 3-component vector of float) +0:297 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:297 Constant: +0:297 2 (const int) +0:297 Constant: +0:297 0.000000 +0:297 0.000000 +0:297 0.000000 +0:298 move second child to first child ( temp highp float) +0:298 shadowStrength: direct index for structure ( global highp float) +0:298 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:298 Constant: +0:298 3 (const int) +0:298 Constant: +0:298 0.000000 +0:299 Branch: Break +0:301 move second child to first child ( temp highp 3-component vector of float) +0:301 'diffuseContrib' ( inout highp 3-component vector of float) +0:301 diffuse: direct index for structure ( global highp 3-component vector of float) +0:301 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:301 Constant: +0:301 0 (const int) +0:302 move second child to first child ( temp highp 3-component vector of float) +0:302 'specularContrib' ( inout highp 3-component vector of float) +0:302 specular: direct index for structure ( global highp 3-component vector of float) +0:302 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:302 Constant: +0:302 1 (const int) +0:305 Function Definition: TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1; ( global void) +0:305 Function Parameters: +0:305 'diffuseContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib' ( inout highp 3-component vector of float) +0:305 'specularContrib2' ( inout highp 3-component vector of float) +0:305 'index' ( in highp int) +0:305 'worldSpacePos' ( in highp 3-component vector of float) +0:305 'normal' ( in highp 3-component vector of float) +0:305 'camVector' ( in highp 3-component vector of float) +0:305 'shininess' ( in highp float) +0:305 'shininess2' ( in highp float) +0:? Sequence +0:308 switch +0:308 condition +0:308 'index' ( in highp int) +0:308 body +0:308 Sequence +0:310 default: +0:? Sequence +0:311 move second child to first child ( temp highp 3-component vector of float) +0:311 diffuse: direct index for structure ( global highp 3-component vector of float) +0:311 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:311 Constant: +0:311 0 (const int) +0:311 Constant: +0:311 0.000000 +0:311 0.000000 +0:311 0.000000 +0:312 move second child to first child ( temp highp 3-component vector of float) +0:312 specular: direct index for structure ( global highp 3-component vector of float) +0:312 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:312 Constant: +0:312 1 (const int) +0:312 Constant: +0:312 0.000000 +0:312 0.000000 +0:312 0.000000 +0:313 move second child to first child ( temp highp 3-component vector of float) +0:313 specular2: direct index for structure ( global highp 3-component vector of float) +0:313 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:313 Constant: +0:313 2 (const int) +0:313 Constant: +0:313 0.000000 +0:313 0.000000 +0:313 0.000000 +0:314 move second child to first child ( temp highp float) +0:314 shadowStrength: direct index for structure ( global highp float) +0:314 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:314 Constant: +0:314 3 (const int) +0:314 Constant: +0:314 0.000000 +0:315 Branch: Break +0:317 move second child to first child ( temp highp 3-component vector of float) +0:317 'diffuseContrib' ( inout highp 3-component vector of float) +0:317 diffuse: direct index for structure ( global highp 3-component vector of float) +0:317 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:317 Constant: +0:317 0 (const int) +0:318 move second child to first child ( temp highp 3-component vector of float) +0:318 'specularContrib' ( inout highp 3-component vector of float) +0:318 specular: direct index for structure ( global highp 3-component vector of float) +0:318 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:318 Constant: +0:318 1 (const int) +0:319 move second child to first child ( temp highp 3-component vector of float) +0:319 'specularContrib2' ( inout highp 3-component vector of float) +0:319 specular2: direct index for structure ( global highp 3-component vector of float) +0:319 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:319 Constant: +0:319 2 (const int) +0:322 Function Definition: TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1; ( global void) +0:322 Function Parameters: +0:322 'diffuseContrib' ( inout highp 3-component vector of float) +0:322 'specularContrib' ( inout highp 3-component vector of float) +0:322 'index' ( in highp int) +0:322 'worldSpacePos' ( in highp 3-component vector of float) +0:322 'normal' ( in highp 3-component vector of float) +0:322 'camVector' ( in highp 3-component vector of float) +0:322 'shininess' ( in highp float) +0:? Sequence +0:325 switch +0:325 condition +0:325 'index' ( in highp int) +0:325 body +0:325 Sequence +0:327 default: +0:? Sequence +0:328 move second child to first child ( temp highp 3-component vector of float) +0:328 diffuse: direct index for structure ( global highp 3-component vector of float) +0:328 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:328 Constant: +0:328 0 (const int) +0:328 Constant: +0:328 0.000000 +0:328 0.000000 +0:328 0.000000 +0:329 move second child to first child ( temp highp 3-component vector of float) +0:329 specular: direct index for structure ( global highp 3-component vector of float) +0:329 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:329 Constant: +0:329 1 (const int) +0:329 Constant: +0:329 0.000000 +0:329 0.000000 +0:329 0.000000 +0:330 move second child to first child ( temp highp 3-component vector of float) +0:330 specular2: direct index for structure ( global highp 3-component vector of float) +0:330 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:330 Constant: +0:330 2 (const int) +0:330 Constant: +0:330 0.000000 +0:330 0.000000 +0:330 0.000000 +0:331 move second child to first child ( temp highp float) +0:331 shadowStrength: direct index for structure ( global highp float) +0:331 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:331 Constant: +0:331 3 (const int) +0:331 Constant: +0:331 0.000000 +0:332 Branch: Break +0:334 move second child to first child ( temp highp 3-component vector of float) +0:334 'diffuseContrib' ( inout highp 3-component vector of float) +0:334 diffuse: direct index for structure ( global highp 3-component vector of float) +0:334 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:334 Constant: +0:334 0 (const int) +0:335 move second child to first child ( temp highp 3-component vector of float) +0:335 'specularContrib' ( inout highp 3-component vector of float) +0:335 specular: direct index for structure ( global highp 3-component vector of float) +0:335 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:335 Constant: +0:335 1 (const int) +0:338 Function Definition: TDLighting(vf3;i1;vf3;vf3; ( global void) +0:338 Function Parameters: +0:338 'diffuseContrib' ( inout highp 3-component vector of float) +0:338 'index' ( in highp int) +0:338 'worldSpacePos' ( in highp 3-component vector of float) +0:338 'normal' ( in highp 3-component vector of float) +0:? Sequence +0:341 switch +0:341 condition +0:341 'index' ( in highp int) +0:341 body +0:341 Sequence +0:343 default: +0:? Sequence +0:344 move second child to first child ( temp highp 3-component vector of float) +0:344 diffuse: direct index for structure ( global highp 3-component vector of float) +0:344 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:344 Constant: +0:344 0 (const int) +0:344 Constant: +0:344 0.000000 +0:344 0.000000 +0:344 0.000000 +0:345 move second child to first child ( temp highp 3-component vector of float) +0:345 specular: direct index for structure ( global highp 3-component vector of float) +0:345 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:345 Constant: +0:345 1 (const int) +0:345 Constant: +0:345 0.000000 +0:345 0.000000 +0:345 0.000000 +0:346 move second child to first child ( temp highp 3-component vector of float) +0:346 specular2: direct index for structure ( global highp 3-component vector of float) +0:346 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:346 Constant: +0:346 2 (const int) +0:346 Constant: +0:346 0.000000 +0:346 0.000000 +0:346 0.000000 +0:347 move second child to first child ( temp highp float) +0:347 shadowStrength: direct index for structure ( global highp float) +0:347 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:347 Constant: +0:347 3 (const int) +0:347 Constant: +0:347 0.000000 +0:348 Branch: Break +0:350 move second child to first child ( temp highp 3-component vector of float) +0:350 'diffuseContrib' ( inout highp 3-component vector of float) +0:350 diffuse: direct index for structure ( global highp 3-component vector of float) +0:350 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:350 Constant: +0:350 0 (const int) +0:353 Function Definition: TDLighting(vf3;i1;vf3;vf3;f1;vf3; ( global void) +0:353 Function Parameters: +0:353 'diffuseContrib' ( inout highp 3-component vector of float) +0:353 'index' ( in highp int) +0:353 'worldSpacePos' ( in highp 3-component vector of float) +0:353 'normal' ( in highp 3-component vector of float) +0:353 'shadowStrength' ( in highp float) +0:353 'shadowColor' ( in highp 3-component vector of float) +0:? Sequence +0:356 switch +0:356 condition +0:356 'index' ( in highp int) +0:356 body +0:356 Sequence +0:358 default: +0:? Sequence +0:359 move second child to first child ( temp highp 3-component vector of float) +0:359 diffuse: direct index for structure ( global highp 3-component vector of float) +0:359 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:359 Constant: +0:359 0 (const int) +0:359 Constant: +0:359 0.000000 +0:359 0.000000 +0:359 0.000000 +0:360 move second child to first child ( temp highp 3-component vector of float) +0:360 specular: direct index for structure ( global highp 3-component vector of float) +0:360 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:360 Constant: +0:360 1 (const int) +0:360 Constant: +0:360 0.000000 +0:360 0.000000 +0:360 0.000000 +0:361 move second child to first child ( temp highp 3-component vector of float) +0:361 specular2: direct index for structure ( global highp 3-component vector of float) +0:361 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:361 Constant: +0:361 2 (const int) +0:361 Constant: +0:361 0.000000 +0:361 0.000000 +0:361 0.000000 +0:362 move second child to first child ( temp highp float) +0:362 shadowStrength: direct index for structure ( global highp float) +0:362 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:362 Constant: +0:362 3 (const int) +0:362 Constant: +0:362 0.000000 +0:363 Branch: Break +0:365 move second child to first child ( temp highp 3-component vector of float) +0:365 'diffuseContrib' ( inout highp 3-component vector of float) +0:365 diffuse: direct index for structure ( global highp 3-component vector of float) +0:365 'res' ( temp structure{ global highp 3-component vector of float diffuse, global highp 3-component vector of float specular, global highp 3-component vector of float specular2, global highp float shadowStrength}) +0:365 Constant: +0:365 0 (const int) +0:367 Function Definition: TDProjMap(i1;vf3;vf4; ( global highp 4-component vector of float) +0:367 Function Parameters: +0:367 'index' ( in highp int) +0:367 'worldSpacePos' ( in highp 3-component vector of float) +0:367 'defaultColor' ( in highp 4-component vector of float) +0:368 Sequence +0:368 switch +0:368 condition +0:368 'index' ( in highp int) +0:368 body +0:368 Sequence +0:370 default: +0:? Sequence +0:370 Branch: Return with expression +0:370 'defaultColor' ( in highp 4-component vector of float) +0:373 Function Definition: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:373 Function Parameters: +0:373 'color' ( in highp 4-component vector of float) +0:373 'lightingSpacePosition' ( in highp 3-component vector of float) +0:373 'cameraIndex' ( in highp int) +0:374 Sequence +0:374 switch +0:374 condition +0:374 'cameraIndex' ( in highp int) +0:374 body +0:374 Sequence +0:375 default: +0:376 case: with expression +0:376 Constant: +0:376 0 (const int) +0:? Sequence +0:378 Sequence +0:378 Branch: Return with expression +0:378 'color' ( in highp 4-component vector of float) +0:382 Function Definition: TDFog(vf4;vf3; ( global highp 4-component vector of float) +0:382 Function Parameters: +0:382 'color' ( in highp 4-component vector of float) +0:382 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Sequence +0:384 Branch: Return with expression +0:384 Function Call: TDFog(vf4;vf3;i1; ( global highp 4-component vector of float) +0:384 'color' ( in highp 4-component vector of float) +0:384 'lightingSpacePosition' ( in highp 3-component vector of float) +0:384 Constant: +0:384 0 (const int) +0:386 Function Definition: TDInstanceTexCoord(i1;vf3; ( global highp 3-component vector of float) +0:386 Function Parameters: +0:386 'index' ( in highp int) +0:386 't' ( in highp 3-component vector of float) +0:? Sequence +0:388 Sequence +0:388 move second child to first child ( temp highp int) +0:388 'coord' ( temp highp int) +0:388 'index' ( in highp int) +0:389 Sequence +0:389 move second child to first child ( temp highp 4-component vector of float) +0:389 'samp' ( temp highp 4-component vector of float) +0:389 textureFetch ( global highp 4-component vector of float) +0:389 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:389 'coord' ( temp highp int) +0:390 move second child to first child ( temp highp float) +0:390 direct index ( temp highp float) +0:390 'v' ( temp highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:390 direct index ( temp highp float) +0:390 't' ( in highp 3-component vector of float) +0:390 Constant: +0:390 0 (const int) +0:391 move second child to first child ( temp highp float) +0:391 direct index ( temp highp float) +0:391 'v' ( temp highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:391 direct index ( temp highp float) +0:391 't' ( in highp 3-component vector of float) +0:391 Constant: +0:391 1 (const int) +0:392 move second child to first child ( temp highp float) +0:392 direct index ( temp highp float) +0:392 'v' ( temp highp 3-component vector of float) +0:392 Constant: +0:392 2 (const int) +0:392 direct index ( temp highp float) +0:392 'samp' ( temp highp 4-component vector of float) +0:392 Constant: +0:392 0 (const int) +0:393 move second child to first child ( temp highp 3-component vector of float) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 't' ( in highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:393 vector swizzle ( temp highp 3-component vector of float) +0:393 'v' ( temp highp 3-component vector of float) +0:393 Sequence +0:393 Constant: +0:393 0 (const int) +0:393 Constant: +0:393 1 (const int) +0:393 Constant: +0:393 2 (const int) +0:394 Branch: Return with expression +0:394 't' ( in highp 3-component vector of float) +0:396 Function Definition: TDInstanceActive(i1; ( global bool) +0:396 Function Parameters: +0:396 'index' ( in highp int) +0:397 Sequence +0:397 subtract second child into first child ( temp highp int) +0:397 'index' ( in highp int) +0:397 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:397 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:397 Constant: +0:397 0 (const uint) +0:399 Sequence +0:399 move second child to first child ( temp highp int) +0:399 'coord' ( temp highp int) +0:399 'index' ( in highp int) +0:400 Sequence +0:400 move second child to first child ( temp highp 4-component vector of float) +0:400 'samp' ( temp highp 4-component vector of float) +0:400 textureFetch ( global highp 4-component vector of float) +0:400 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:400 'coord' ( temp highp int) +0:401 move second child to first child ( temp highp float) +0:401 'v' ( temp highp float) +0:401 direct index ( temp highp float) +0:401 'samp' ( temp highp 4-component vector of float) +0:401 Constant: +0:401 0 (const int) +0:402 Branch: Return with expression +0:402 Compare Not Equal ( temp bool) +0:402 'v' ( temp highp float) +0:402 Constant: +0:402 0.000000 +0:404 Function Definition: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:404 Function Parameters: +0:404 'index' ( in highp int) +0:404 'instanceActive' ( out bool) +0:405 Sequence +0:405 Sequence +0:405 move second child to first child ( temp highp int) +0:405 'origIndex' ( temp highp int) +0:405 'index' ( in highp int) +0:406 subtract second child into first child ( temp highp int) +0:406 'index' ( in highp int) +0:406 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:406 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:406 Constant: +0:406 0 (const uint) +0:408 Sequence +0:408 move second child to first child ( temp highp int) +0:408 'coord' ( temp highp int) +0:408 'index' ( in highp int) +0:409 Sequence +0:409 move second child to first child ( temp highp 4-component vector of float) +0:409 'samp' ( temp highp 4-component vector of float) +0:409 textureFetch ( global highp 4-component vector of float) +0:409 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:409 'coord' ( temp highp int) +0:410 move second child to first child ( temp highp float) +0:410 direct index ( temp highp float) +0:410 'v' ( temp highp 3-component vector of float) +0:410 Constant: +0:410 0 (const int) +0:410 direct index ( temp highp float) +0:410 'samp' ( temp highp 4-component vector of float) +0:410 Constant: +0:410 1 (const int) +0:411 move second child to first child ( temp highp float) +0:411 direct index ( temp highp float) +0:411 'v' ( temp highp 3-component vector of float) +0:411 Constant: +0:411 1 (const int) +0:411 direct index ( temp highp float) +0:411 'samp' ( temp highp 4-component vector of float) +0:411 Constant: +0:411 2 (const int) +0:412 move second child to first child ( temp highp float) +0:412 direct index ( temp highp float) +0:412 'v' ( temp highp 3-component vector of float) +0:412 Constant: +0:412 2 (const int) +0:412 direct index ( temp highp float) +0:412 'samp' ( temp highp 4-component vector of float) +0:412 Constant: +0:412 3 (const int) +0:413 move second child to first child ( temp bool) +0:413 'instanceActive' ( out bool) +0:413 Compare Not Equal ( temp bool) +0:413 direct index ( temp highp float) +0:413 'samp' ( temp highp 4-component vector of float) +0:413 Constant: +0:413 0 (const int) +0:413 Constant: +0:413 0.000000 +0:414 Branch: Return with expression +0:414 'v' ( temp highp 3-component vector of float) +0:416 Function Definition: TDInstanceTranslate(i1; ( global highp 3-component vector of float) +0:416 Function Parameters: +0:416 'index' ( in highp int) +0:417 Sequence +0:417 subtract second child into first child ( temp highp int) +0:417 'index' ( in highp int) +0:417 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:417 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:417 Constant: +0:417 0 (const uint) +0:419 Sequence +0:419 move second child to first child ( temp highp int) +0:419 'coord' ( temp highp int) +0:419 'index' ( in highp int) +0:420 Sequence +0:420 move second child to first child ( temp highp 4-component vector of float) +0:420 'samp' ( temp highp 4-component vector of float) +0:420 textureFetch ( global highp 4-component vector of float) +0:420 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:420 'coord' ( temp highp int) +0:421 move second child to first child ( temp highp float) +0:421 direct index ( temp highp float) +0:421 'v' ( temp highp 3-component vector of float) +0:421 Constant: +0:421 0 (const int) +0:421 direct index ( temp highp float) +0:421 'samp' ( temp highp 4-component vector of float) +0:421 Constant: +0:421 1 (const int) +0:422 move second child to first child ( temp highp float) +0:422 direct index ( temp highp float) +0:422 'v' ( temp highp 3-component vector of float) +0:422 Constant: +0:422 1 (const int) +0:422 direct index ( temp highp float) +0:422 'samp' ( temp highp 4-component vector of float) +0:422 Constant: +0:422 2 (const int) +0:423 move second child to first child ( temp highp float) +0:423 direct index ( temp highp float) +0:423 'v' ( temp highp 3-component vector of float) +0:423 Constant: +0:423 2 (const int) +0:423 direct index ( temp highp float) +0:423 'samp' ( temp highp 4-component vector of float) +0:423 Constant: +0:423 3 (const int) +0:424 Branch: Return with expression +0:424 'v' ( temp highp 3-component vector of float) +0:426 Function Definition: TDInstanceRotateMat(i1; ( global highp 3X3 matrix of float) +0:426 Function Parameters: +0:426 'index' ( in highp int) +0:427 Sequence +0:427 subtract second child into first child ( temp highp int) +0:427 'index' ( in highp int) +0:427 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:427 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:427 Constant: +0:427 0 (const uint) +0:428 Sequence +0:428 move second child to first child ( temp highp 3-component vector of float) +0:428 'v' ( temp highp 3-component vector of float) +0:428 Constant: +0:428 0.000000 +0:428 0.000000 +0:428 0.000000 +0:429 Sequence +0:429 move second child to first child ( temp highp 3X3 matrix of float) +0:429 'm' ( temp highp 3X3 matrix of float) +0:429 Constant: +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:429 0.000000 +0:429 0.000000 +0:429 0.000000 +0:429 1.000000 +0:433 Branch: Return with expression +0:433 'm' ( temp highp 3X3 matrix of float) +0:435 Function Definition: TDInstanceScale(i1; ( global highp 3-component vector of float) +0:435 Function Parameters: +0:435 'index' ( in highp int) +0:436 Sequence +0:436 subtract second child into first child ( temp highp int) +0:436 'index' ( in highp int) +0:436 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:436 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:436 Constant: +0:436 0 (const uint) +0:437 Sequence +0:437 move second child to first child ( temp highp 3-component vector of float) +0:437 'v' ( temp highp 3-component vector of float) +0:437 Constant: +0:437 1.000000 +0:437 1.000000 +0:437 1.000000 +0:438 Branch: Return with expression +0:438 'v' ( temp highp 3-component vector of float) +0:440 Function Definition: TDInstancePivot(i1; ( global highp 3-component vector of float) +0:440 Function Parameters: +0:440 'index' ( in highp int) +0:441 Sequence +0:441 subtract second child into first child ( temp highp int) +0:441 'index' ( in highp int) +0:441 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:441 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:441 Constant: +0:441 0 (const uint) +0:442 Sequence +0:442 move second child to first child ( temp highp 3-component vector of float) +0:442 'v' ( temp highp 3-component vector of float) +0:442 Constant: +0:442 0.000000 +0:442 0.000000 +0:442 0.000000 +0:443 Branch: Return with expression +0:443 'v' ( temp highp 3-component vector of float) +0:445 Function Definition: TDInstanceRotTo(i1; ( global highp 3-component vector of float) +0:445 Function Parameters: +0:445 'index' ( in highp int) +0:446 Sequence +0:446 subtract second child into first child ( temp highp int) +0:446 'index' ( in highp int) +0:446 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:446 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:446 Constant: +0:446 0 (const uint) +0:447 Sequence +0:447 move second child to first child ( temp highp 3-component vector of float) +0:447 'v' ( temp highp 3-component vector of float) +0:447 Constant: +0:447 0.000000 +0:447 0.000000 +0:447 1.000000 +0:448 Branch: Return with expression +0:448 'v' ( temp highp 3-component vector of float) +0:450 Function Definition: TDInstanceRotUp(i1; ( global highp 3-component vector of float) +0:450 Function Parameters: +0:450 'index' ( in highp int) +0:451 Sequence +0:451 subtract second child into first child ( temp highp int) +0:451 'index' ( in highp int) +0:451 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:451 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:451 Constant: +0:451 0 (const uint) +0:452 Sequence +0:452 move second child to first child ( temp highp 3-component vector of float) +0:452 'v' ( temp highp 3-component vector of float) +0:452 Constant: +0:452 0.000000 +0:452 1.000000 +0:452 0.000000 +0:453 Branch: Return with expression +0:453 'v' ( temp highp 3-component vector of float) +0:455 Function Definition: TDInstanceMat(i1; ( global highp 4X4 matrix of float) +0:455 Function Parameters: +0:455 'id' ( in highp int) +0:456 Sequence +0:456 Sequence +0:456 move second child to first child ( temp bool) +0:456 'instanceActive' ( temp bool) +0:456 Constant: +0:456 true (const bool) +0:457 Sequence +0:457 move second child to first child ( temp highp 3-component vector of float) +0:457 't' ( temp highp 3-component vector of float) +0:457 Function Call: iTDInstanceTranslate(i1;b1; ( global highp 3-component vector of float) +0:457 'id' ( in highp int) +0:457 'instanceActive' ( temp bool) +0:458 Test condition and select ( temp void) +0:458 Condition +0:458 Negate conditional ( temp bool) +0:458 'instanceActive' ( temp bool) +0:458 true case +0:460 Sequence +0:460 Branch: Return with expression +0:460 Constant: +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:460 0.000000 +0:462 Sequence +0:462 move second child to first child ( temp highp 4X4 matrix of float) +0:462 'm' ( temp highp 4X4 matrix of float) +0:462 Constant: +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 0.000000 +0:462 1.000000 +0:464 Sequence +0:464 Sequence +0:464 move second child to first child ( temp highp 3-component vector of float) +0:464 'tt' ( temp highp 3-component vector of float) +0:464 't' ( temp highp 3-component vector of float) +0:465 add second child into first child ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 3 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 component-wise multiply ( temp highp float) +0:465 direct index ( temp highp float) +0:465 direct index ( temp highp 4-component vector of float) +0:465 'm' ( temp highp 4X4 matrix of float) +0:465 Constant: +0:465 0 (const int) +0:465 Constant: +0:465 0 (const int) +0:465 direct index ( temp highp float) +0:465 'tt' ( temp highp 3-component vector of float) +0:465 Constant: +0:465 0 (const int) +0:466 add second child into first child ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 3 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 component-wise multiply ( temp highp float) +0:466 direct index ( temp highp float) +0:466 direct index ( temp highp 4-component vector of float) +0:466 'm' ( temp highp 4X4 matrix of float) +0:466 Constant: +0:466 0 (const int) +0:466 Constant: +0:466 1 (const int) +0:466 direct index ( temp highp float) +0:466 'tt' ( temp highp 3-component vector of float) +0:466 Constant: +0:466 0 (const int) +0:467 add second child into first child ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 3 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 component-wise multiply ( temp highp float) +0:467 direct index ( temp highp float) +0:467 direct index ( temp highp 4-component vector of float) +0:467 'm' ( temp highp 4X4 matrix of float) +0:467 Constant: +0:467 0 (const int) +0:467 Constant: +0:467 2 (const int) +0:467 direct index ( temp highp float) +0:467 'tt' ( temp highp 3-component vector of float) +0:467 Constant: +0:467 0 (const int) +0:468 add second child into first child ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 3 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 component-wise multiply ( temp highp float) +0:468 direct index ( temp highp float) +0:468 direct index ( temp highp 4-component vector of float) +0:468 'm' ( temp highp 4X4 matrix of float) +0:468 Constant: +0:468 0 (const int) +0:468 Constant: +0:468 3 (const int) +0:468 direct index ( temp highp float) +0:468 'tt' ( temp highp 3-component vector of float) +0:468 Constant: +0:468 0 (const int) +0:469 add second child into first child ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 3 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 component-wise multiply ( temp highp float) +0:469 direct index ( temp highp float) +0:469 direct index ( temp highp 4-component vector of float) +0:469 'm' ( temp highp 4X4 matrix of float) +0:469 Constant: +0:469 1 (const int) +0:469 Constant: +0:469 0 (const int) +0:469 direct index ( temp highp float) +0:469 'tt' ( temp highp 3-component vector of float) +0:469 Constant: +0:469 1 (const int) +0:470 add second child into first child ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 3 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 component-wise multiply ( temp highp float) +0:470 direct index ( temp highp float) +0:470 direct index ( temp highp 4-component vector of float) +0:470 'm' ( temp highp 4X4 matrix of float) +0:470 Constant: +0:470 1 (const int) +0:470 Constant: +0:470 1 (const int) +0:470 direct index ( temp highp float) +0:470 'tt' ( temp highp 3-component vector of float) +0:470 Constant: +0:470 1 (const int) +0:471 add second child into first child ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 3 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 component-wise multiply ( temp highp float) +0:471 direct index ( temp highp float) +0:471 direct index ( temp highp 4-component vector of float) +0:471 'm' ( temp highp 4X4 matrix of float) +0:471 Constant: +0:471 1 (const int) +0:471 Constant: +0:471 2 (const int) +0:471 direct index ( temp highp float) +0:471 'tt' ( temp highp 3-component vector of float) +0:471 Constant: +0:471 1 (const int) +0:472 add second child into first child ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 3 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 component-wise multiply ( temp highp float) +0:472 direct index ( temp highp float) +0:472 direct index ( temp highp 4-component vector of float) +0:472 'm' ( temp highp 4X4 matrix of float) +0:472 Constant: +0:472 1 (const int) +0:472 Constant: +0:472 3 (const int) +0:472 direct index ( temp highp float) +0:472 'tt' ( temp highp 3-component vector of float) +0:472 Constant: +0:472 1 (const int) +0:473 add second child into first child ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 3 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 component-wise multiply ( temp highp float) +0:473 direct index ( temp highp float) +0:473 direct index ( temp highp 4-component vector of float) +0:473 'm' ( temp highp 4X4 matrix of float) +0:473 Constant: +0:473 2 (const int) +0:473 Constant: +0:473 0 (const int) +0:473 direct index ( temp highp float) +0:473 'tt' ( temp highp 3-component vector of float) +0:473 Constant: +0:473 2 (const int) +0:474 add second child into first child ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 3 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 component-wise multiply ( temp highp float) +0:474 direct index ( temp highp float) +0:474 direct index ( temp highp 4-component vector of float) +0:474 'm' ( temp highp 4X4 matrix of float) +0:474 Constant: +0:474 2 (const int) +0:474 Constant: +0:474 1 (const int) +0:474 direct index ( temp highp float) +0:474 'tt' ( temp highp 3-component vector of float) +0:474 Constant: +0:474 2 (const int) +0:475 add second child into first child ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 3 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 component-wise multiply ( temp highp float) +0:475 direct index ( temp highp float) +0:475 direct index ( temp highp 4-component vector of float) +0:475 'm' ( temp highp 4X4 matrix of float) +0:475 Constant: +0:475 2 (const int) +0:475 Constant: +0:475 2 (const int) +0:475 direct index ( temp highp float) +0:475 'tt' ( temp highp 3-component vector of float) +0:475 Constant: +0:475 2 (const int) +0:476 add second child into first child ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 3 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 component-wise multiply ( temp highp float) +0:476 direct index ( temp highp float) +0:476 direct index ( temp highp 4-component vector of float) +0:476 'm' ( temp highp 4X4 matrix of float) +0:476 Constant: +0:476 2 (const int) +0:476 Constant: +0:476 3 (const int) +0:476 direct index ( temp highp float) +0:476 'tt' ( temp highp 3-component vector of float) +0:476 Constant: +0:476 2 (const int) +0:478 Branch: Return with expression +0:478 'm' ( temp highp 4X4 matrix of float) +0:480 Function Definition: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:480 Function Parameters: +0:480 'id' ( in highp int) +0:481 Sequence +0:481 Sequence +0:481 move second child to first child ( temp highp 3X3 matrix of float) +0:481 'm' ( temp highp 3X3 matrix of float) +0:481 Constant: +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:481 0.000000 +0:481 0.000000 +0:481 0.000000 +0:481 1.000000 +0:482 Branch: Return with expression +0:482 'm' ( temp highp 3X3 matrix of float) +0:484 Function Definition: TDInstanceMat3ForNorm(i1; ( global highp 3X3 matrix of float) +0:484 Function Parameters: +0:484 'id' ( in highp int) +0:485 Sequence +0:485 Sequence +0:485 move second child to first child ( temp highp 3X3 matrix of float) +0:485 'm' ( temp highp 3X3 matrix of float) +0:485 Function Call: TDInstanceMat3(i1; ( global highp 3X3 matrix of float) +0:485 'id' ( in highp int) +0:486 Branch: Return with expression +0:486 'm' ( temp highp 3X3 matrix of float) +0:488 Function Definition: TDInstanceColor(i1;vf4; ( global highp 4-component vector of float) +0:488 Function Parameters: +0:488 'index' ( in highp int) +0:488 'curColor' ( in highp 4-component vector of float) +0:489 Sequence +0:489 subtract second child into first child ( temp highp int) +0:489 'index' ( in highp int) +0:489 uTDInstanceIDOffset: direct index for structure ( uniform highp int) +0:489 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:489 Constant: +0:489 0 (const uint) +0:491 Sequence +0:491 move second child to first child ( temp highp int) +0:491 'coord' ( temp highp int) +0:491 'index' ( in highp int) +0:492 Sequence +0:492 move second child to first child ( temp highp 4-component vector of float) +0:492 'samp' ( temp highp 4-component vector of float) +0:492 textureFetch ( global highp 4-component vector of float) +0:492 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) +0:492 'coord' ( temp highp int) +0:493 move second child to first child ( temp highp float) +0:493 direct index ( temp highp float) +0:493 'v' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:493 direct index ( temp highp float) +0:493 'samp' ( temp highp 4-component vector of float) +0:493 Constant: +0:493 0 (const int) +0:494 move second child to first child ( temp highp float) +0:494 direct index ( temp highp float) +0:494 'v' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:494 direct index ( temp highp float) +0:494 'samp' ( temp highp 4-component vector of float) +0:494 Constant: +0:494 1 (const int) +0:495 move second child to first child ( temp highp float) +0:495 direct index ( temp highp float) +0:495 'v' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:495 direct index ( temp highp float) +0:495 'samp' ( temp highp 4-component vector of float) +0:495 Constant: +0:495 2 (const int) +0:496 move second child to first child ( temp highp float) +0:496 direct index ( temp highp float) +0:496 'v' ( temp highp 4-component vector of float) +0:496 Constant: +0:496 3 (const int) +0:496 Constant: +0:496 1.000000 +0:497 move second child to first child ( temp highp float) +0:497 direct index ( temp highp float) +0:497 'curColor' ( in highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:497 direct index ( temp highp float) +0:497 'v' ( temp highp 4-component vector of float) +0:497 Constant: +0:497 0 (const int) +0:499 move second child to first child ( temp highp float) +0:499 direct index ( temp highp float) +0:499 'curColor' ( in highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:499 direct index ( temp highp float) +0:499 'v' ( temp highp 4-component vector of float) +0:499 Constant: +0:499 1 (const int) +0:501 move second child to first child ( temp highp float) +0:501 direct index ( temp highp float) +0:501 'curColor' ( in highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:501 direct index ( temp highp float) +0:501 'v' ( temp highp 4-component vector of float) +0:501 Constant: +0:501 2 (const int) +0:503 Branch: Return with expression +0:503 'curColor' ( in highp 4-component vector of float) +0:2 Function Definition: TDOutputSwizzle(vf4; ( global highp 4-component vector of float) +0:2 Function Parameters: +0:2 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Branch: Return with expression +0:4 vector swizzle ( temp highp 4-component vector of float) +0:4 'c' ( in highp 4-component vector of float) +0:4 Sequence +0:4 Constant: +0:4 0 (const int) +0:4 Constant: +0:4 1 (const int) +0:4 Constant: +0:4 2 (const int) +0:4 Constant: +0:4 3 (const int) +0:6 Function Definition: TDOutputSwizzle(vu4; ( global highp 4-component vector of uint) +0:6 Function Parameters: +0:6 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Branch: Return with expression +0:8 vector swizzle ( temp highp 4-component vector of uint) +0:8 'c' ( in highp 4-component vector of uint) +0:8 Sequence +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:? Linker Objects +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp int uTDInstanceIDOffset, uniform highp int uTDNumInstances, uniform highp float uTDAlphaTestVal, uniform highp 3-component vector of float uConstant, uniform highp float uShadowStrength, uniform highp 3-component vector of float uShadowColor, uniform highp 4-component vector of float uDiffuseColor, uniform highp 4-component vector of float uAmbientColor}) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{layout( column_major std140) global highp 4X4 matrix of float world, layout( column_major std140) global highp 4X4 matrix of float worldInverse, layout( column_major std140) global highp 4X4 matrix of float worldCam, layout( column_major std140) global highp 4X4 matrix of float worldCamInverse, layout( column_major std140) global highp 4X4 matrix of float cam, layout( column_major std140) global highp 4X4 matrix of float camInverse, layout( column_major std140) global highp 4X4 matrix of float camProj, layout( column_major std140) global highp 4X4 matrix of float camProjInverse, layout( column_major std140) global highp 4X4 matrix of float proj, layout( column_major std140) global highp 4X4 matrix of float projInverse, layout( column_major std140) global highp 4X4 matrix of float worldCamProj, layout( column_major std140) global highp 4X4 matrix of float worldCamProjInverse, layout( column_major std140) global highp 4X4 matrix of float quadReproject, layout( column_major std140) global highp 3X3 matrix of float worldForNormals, layout( column_major std140) global highp 3X3 matrix of float camForNormals, layout( column_major std140) global highp 3X3 matrix of float worldCamForNormals} uTDMats}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float nearFar, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor, global highp int renderTOPCameraIndex} uTDCamInfos}) +0:? 'anon@3' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform structure{ global highp 4-component vector of float ambientColor, global highp 4-component vector of float nearFar, global highp 4-component vector of float viewport, global highp 4-component vector of float viewportRes, global highp 4-component vector of float fog, global highp 4-component vector of float fogColor} uTDGeneral}) +0:? 'sColorMap' ( uniform highp sampler2DArray) +0:? 'iVert' ( in block{ in highp 4-component vector of float color, in highp 3-component vector of float worldSpacePos, in highp 3-component vector of float texCoord0, flat in highp int cameraIndex, flat in highp int instance}) +0:? 'oFragColor' (layout( location=0) out 1-element array of highp 4-component vector of float) +0:? 'sTDNoiseMap' ( uniform highp sampler2D) +0:? 'sTDSineLookup' ( uniform highp sampler1D) +0:? 'sTDWhite2D' ( uniform highp sampler2D) +0:? 'sTDWhite3D' ( uniform highp sampler3D) +0:? 'sTDWhite2DArray' ( uniform highp sampler2DArray) +0:? 'sTDWhiteCube' ( uniform highp samplerCube) +0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 4-component vector of float position, global highp 3-component vector of float direction, global highp 3-component vector of float diffuse, global highp 4-component vector of float nearFar, global highp 4-component vector of float lightSize, global highp 4-component vector of float misc, global highp 4-component vector of float coneLookupScaleBias, global highp 4-component vector of float attenScaleBiasRoll, layout( column_major std140) global highp 4X4 matrix of float shadowMapMatrix, layout( column_major std140) global highp 4X4 matrix of float shadowMapCamMatrix, global highp 4-component vector of float shadowMapRes, layout( column_major std140) global highp 4X4 matrix of float projMapMatrix} uTDLights}) +0:? 'anon@2' (layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 1-element array of structure{ global highp 3-component vector of float color, layout( column_major std140) global highp 3X3 matrix of float rotate} uTDEnvLights}) +0:? 'uTDEnvLightBuffers' (layout( column_major std430) restrict readonly buffer 1-element array of block{layout( column_major std430 offset=0) restrict readonly buffer 9-element array of highp 3-component vector of float shCoeffs}) +0:? 'sTDInstanceT' (layout( binding=15) uniform highp samplerBuffer) +0:? 'sTDInstanceTexCoord' (layout( binding=16) uniform highp samplerBuffer) +0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 939 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 207 216 226 238 256 297 905 906 + Source GLSL 460 + Name 4 "main" + Name 20 "iTDCamToProj(vf4;vf3;i1;b1;" + Name 16 "v" + Name 17 "uv" + Name 18 "cameraIndex" + Name 19 "applyPickMod" + Name 26 "iTDWorldToProj(vf4;vf3;i1;b1;" + Name 22 "v" + Name 23 "uv" + Name 24 "cameraIndex" + Name 25 "applyPickMod" + Name 29 "TDInstanceID(" + Name 31 "TDCameraIndex(" + Name 34 "TDUVUnwrapCoord(" + Name 36 "TDPickID(" + Name 40 "iTDConvertPickId(i1;" + Name 39 "id" + Name 42 "TDWritePickingValues(" + Name 47 "TDWorldToProj(vf4;vf3;" + Name 45 "v" + Name 46 "uv" + Name 52 "TDWorldToProj(vf3;vf3;" + Name 50 "v" + Name 51 "uv" + Name 56 "TDWorldToProj(vf4;" + Name 55 "v" + Name 60 "TDWorldToProj(vf3;" + Name 59 "v" + Name 63 "TDPointColor(" + Name 68 "TDInstanceTexCoord(i1;vf3;" + Name 66 "index" + Name 67 "t" + Name 72 "TDInstanceActive(i1;" + Name 71 "index" + Name 77 "iTDInstanceTranslate(i1;b1;" + Name 75 "index" + Name 76 "instanceActive" + Name 81 "TDInstanceTranslate(i1;" + Name 80 "index" + Name 86 "TDInstanceRotateMat(i1;" + Name 85 "index" + Name 89 "TDInstanceScale(i1;" + Name 88 "index" + Name 92 "TDInstancePivot(i1;" + Name 91 "index" + Name 95 "TDInstanceRotTo(i1;" + Name 94 "index" + Name 98 "TDInstanceRotUp(i1;" + Name 97 "index" + Name 103 "TDInstanceMat(i1;" + Name 102 "id" + Name 106 "TDInstanceMat3(i1;" + Name 105 "id" + Name 109 "TDInstanceMat3ForNorm(i1;" + Name 108 "id" + Name 114 "TDInstanceColor(i1;vf4;" + Name 112 "index" + Name 113 "curColor" + Name 118 "TDInstanceDeform(i1;vf4;" + Name 116 "id" + Name 117 "pos" + Name 122 "TDInstanceDeformVec(i1;vf3;" + Name 120 "id" + Name 121 "vec" + Name 126 "TDInstanceDeformNorm(i1;vf3;" + Name 124 "id" + Name 125 "vec" + Name 129 "TDInstanceDeform(vf4;" + Name 128 "pos" + Name 133 "TDInstanceDeformVec(vf3;" + Name 132 "vec" + Name 136 "TDInstanceDeformNorm(vf3;" + Name 135 "vec" + Name 139 "TDInstanceActive(" + Name 141 "TDInstanceTranslate(" + Name 144 "TDInstanceRotateMat(" + Name 146 "TDInstanceScale(" + Name 149 "TDInstanceMat(" + Name 151 "TDInstanceMat3(" + Name 154 "TDInstanceTexCoord(vf3;" + Name 153 "t" + Name 157 "TDInstanceColor(vf4;" + Name 156 "curColor" + Name 160 "TDSkinnedDeform(vf4;" + Name 159 "pos" + Name 163 "TDSkinnedDeformVec(vf3;" + Name 162 "vec" + Name 169 "TDFastDeformTangent(vf3;vf4;vf3;" + Name 166 "oldNorm" + Name 167 "oldTangent" + Name 168 "deformedNorm" + Name 172 "TDBoneMat(i1;" + Name 171 "index" + Name 175 "TDDeform(vf4;" + Name 174 "pos" + Name 180 "TDDeform(i1;vf3;" + Name 178 "instanceID" + Name 179 "p" + Name 183 "TDDeform(vf3;" + Name 182 "pos" + Name 187 "TDDeformVec(i1;vf3;" + Name 185 "instanceID" + Name 186 "vec" + Name 190 "TDDeformVec(vf3;" + Name 189 "vec" + Name 194 "TDDeformNorm(i1;vf3;" + Name 192 "instanceID" + Name 193 "vec" + Name 197 "TDDeformNorm(vf3;" + Name 196 "vec" + Name 200 "TDSkinnedDeformNorm(vf3;" + Name 199 "vec" + Name 202 "texcoord" + Name 207 "uv" + Name 209 "param" + Name 214 "Vertex" + MemberName 214(Vertex) 0 "color" + MemberName 214(Vertex) 1 "worldSpacePos" + MemberName 214(Vertex) 2 "texCoord0" + MemberName 214(Vertex) 3 "cameraIndex" + MemberName 214(Vertex) 4 "instance" + Name 216 "oVert" + Name 225 "worldSpacePos" + Name 226 "P" + Name 227 "param" + Name 230 "uvUnwrapCoord" + Name 232 "param" + Name 236 "gl_PerVertex" + MemberName 236(gl_PerVertex) 0 "gl_Position" + MemberName 236(gl_PerVertex) 1 "gl_PointSize" + MemberName 236(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 236(gl_PerVertex) 3 "gl_CullDistance" + Name 238 "" + Name 239 "param" + Name 241 "param" + Name 246 "cameraIndex" + Name 256 "Cd" + Name 257 "param" + Name 269 "TDMatrix" + MemberName 269(TDMatrix) 0 "world" + MemberName 269(TDMatrix) 1 "worldInverse" + MemberName 269(TDMatrix) 2 "worldCam" + MemberName 269(TDMatrix) 3 "worldCamInverse" + MemberName 269(TDMatrix) 4 "cam" + MemberName 269(TDMatrix) 5 "camInverse" + MemberName 269(TDMatrix) 6 "camProj" + MemberName 269(TDMatrix) 7 "camProjInverse" + MemberName 269(TDMatrix) 8 "proj" + MemberName 269(TDMatrix) 9 "projInverse" + MemberName 269(TDMatrix) 10 "worldCamProj" + MemberName 269(TDMatrix) 11 "worldCamProjInverse" + MemberName 269(TDMatrix) 12 "quadReproject" + MemberName 269(TDMatrix) 13 "worldForNormals" + MemberName 269(TDMatrix) 14 "camForNormals" + MemberName 269(TDMatrix) 15 "worldCamForNormals" + Name 271 "TDMatricesBlock" + MemberName 271(TDMatricesBlock) 0 "uTDMats" + Name 273 "" + Name 297 "gl_InstanceIndex" + Name 299 "gl_DefaultUniformBlock" + MemberName 299(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset" + MemberName 299(gl_DefaultUniformBlock) 1 "uTDNumInstances" + MemberName 299(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal" + MemberName 299(gl_DefaultUniformBlock) 3 "uConstant" + MemberName 299(gl_DefaultUniformBlock) 4 "uShadowStrength" + MemberName 299(gl_DefaultUniformBlock) 5 "uShadowColor" + MemberName 299(gl_DefaultUniformBlock) 6 "uDiffuseColor" + MemberName 299(gl_DefaultUniformBlock) 7 "uAmbientColor" + Name 301 "" + Name 325 "param" + Name 327 "param" + Name 329 "param" + Name 330 "param" + Name 340 "param" + Name 341 "param" + Name 347 "param" + Name 349 "param" + Name 358 "param" + Name 365 "coord" + Name 367 "samp" + Name 371 "sTDInstanceTexCoord" + Name 376 "v" + Name 397 "coord" + Name 399 "samp" + Name 400 "sTDInstanceT" + Name 405 "v" + Name 412 "origIndex" + Name 418 "coord" + Name 420 "samp" + Name 425 "v" + Name 446 "coord" + Name 448 "samp" + Name 453 "v" + Name 470 "v" + Name 472 "m" + Name 484 "v" + Name 493 "v" + Name 501 "v" + Name 509 "v" + Name 513 "instanceActive" + Name 514 "t" + Name 515 "param" + Name 517 "param" + Name 528 "m" + Name 534 "tt" + Name 647 "m" + Name 651 "m" + Name 652 "param" + Name 662 "coord" + Name 664 "samp" + Name 665 "sTDInstanceColor" + Name 670 "v" + Name 693 "param" + Name 705 "m" + Name 706 "param" + Name 725 "m" + Name 726 "param" + Name 745 "param" + Name 746 "param" + Name 752 "param" + Name 753 "param" + Name 759 "param" + Name 760 "param" + Name 766 "param" + Name 771 "param" + Name 776 "param" + Name 781 "param" + Name 786 "param" + Name 791 "param" + Name 796 "param" + Name 797 "param" + Name 803 "param" + Name 804 "param" + Name 821 "param" + Name 824 "param" + Name 830 "pos" + Name 836 "param" + Name 839 "param" + Name 841 "param" + Name 848 "param" + Name 849 "param" + Name 854 "param" + Name 857 "param" + Name 859 "param" + Name 866 "param" + Name 867 "param" + Name 872 "param" + Name 875 "param" + Name 877 "param" + Name 884 "param" + Name 885 "param" + Name 890 "param" + Name 896 "TDCameraInfo" + MemberName 896(TDCameraInfo) 0 "nearFar" + MemberName 896(TDCameraInfo) 1 "fog" + MemberName 896(TDCameraInfo) 2 "fogColor" + MemberName 896(TDCameraInfo) 3 "renderTOPCameraIndex" + Name 898 "TDCameraInfoBlock" + MemberName 898(TDCameraInfoBlock) 0 "uTDCamInfos" + Name 900 "" + Name 901 "TDGeneral" + MemberName 901(TDGeneral) 0 "ambientColor" + MemberName 901(TDGeneral) 1 "nearFar" + MemberName 901(TDGeneral) 2 "viewport" + MemberName 901(TDGeneral) 3 "viewportRes" + MemberName 901(TDGeneral) 4 "fog" + MemberName 901(TDGeneral) 5 "fogColor" + Name 902 "TDGeneralBlock" + MemberName 902(TDGeneralBlock) 0 "uTDGeneral" + Name 904 "" + Name 905 "N" + Name 906 "gl_VertexIndex" + Name 907 "TDLight" + MemberName 907(TDLight) 0 "position" + MemberName 907(TDLight) 1 "direction" + MemberName 907(TDLight) 2 "diffuse" + MemberName 907(TDLight) 3 "nearFar" + MemberName 907(TDLight) 4 "lightSize" + MemberName 907(TDLight) 5 "misc" + MemberName 907(TDLight) 6 "coneLookupScaleBias" + MemberName 907(TDLight) 7 "attenScaleBiasRoll" + MemberName 907(TDLight) 8 "shadowMapMatrix" + MemberName 907(TDLight) 9 "shadowMapCamMatrix" + MemberName 907(TDLight) 10 "shadowMapRes" + MemberName 907(TDLight) 11 "projMapMatrix" + Name 909 "TDLightBlock" + MemberName 909(TDLightBlock) 0 "uTDLights" + Name 911 "" + Name 912 "TDEnvLight" + MemberName 912(TDEnvLight) 0 "color" + MemberName 912(TDEnvLight) 1 "rotate" + Name 914 "TDEnvLightBlock" + MemberName 914(TDEnvLightBlock) 0 "uTDEnvLights" + Name 916 "" + Name 919 "TDEnvLightBuffer" + MemberName 919(TDEnvLightBuffer) 0 "shCoeffs" + Name 922 "uTDEnvLightBuffers" + Name 926 "mTD2DImageOutputs" + Name 930 "mTD2DArrayImageOutputs" + Name 934 "mTD3DImageOutputs" + Name 938 "mTDCubeImageOutputs" + Decorate 207(uv) Location 3 + MemberDecorate 214(Vertex) 3 Flat + MemberDecorate 214(Vertex) 4 Flat + Decorate 214(Vertex) Block + Decorate 216(oVert) Location 0 + Decorate 226(P) Location 0 + MemberDecorate 236(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 236(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 236(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 236(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 236(gl_PerVertex) Block + Decorate 256(Cd) Location 2 + MemberDecorate 269(TDMatrix) 0 ColMajor + MemberDecorate 269(TDMatrix) 0 Offset 0 + MemberDecorate 269(TDMatrix) 0 MatrixStride 16 + MemberDecorate 269(TDMatrix) 1 ColMajor + MemberDecorate 269(TDMatrix) 1 Offset 64 + MemberDecorate 269(TDMatrix) 1 MatrixStride 16 + MemberDecorate 269(TDMatrix) 2 ColMajor + MemberDecorate 269(TDMatrix) 2 Offset 128 + MemberDecorate 269(TDMatrix) 2 MatrixStride 16 + MemberDecorate 269(TDMatrix) 3 ColMajor + MemberDecorate 269(TDMatrix) 3 Offset 192 + MemberDecorate 269(TDMatrix) 3 MatrixStride 16 + MemberDecorate 269(TDMatrix) 4 ColMajor + MemberDecorate 269(TDMatrix) 4 Offset 256 + MemberDecorate 269(TDMatrix) 4 MatrixStride 16 + MemberDecorate 269(TDMatrix) 5 ColMajor + MemberDecorate 269(TDMatrix) 5 Offset 320 + MemberDecorate 269(TDMatrix) 5 MatrixStride 16 + MemberDecorate 269(TDMatrix) 6 ColMajor + MemberDecorate 269(TDMatrix) 6 Offset 384 + MemberDecorate 269(TDMatrix) 6 MatrixStride 16 + MemberDecorate 269(TDMatrix) 7 ColMajor + MemberDecorate 269(TDMatrix) 7 Offset 448 + MemberDecorate 269(TDMatrix) 7 MatrixStride 16 + MemberDecorate 269(TDMatrix) 8 ColMajor + MemberDecorate 269(TDMatrix) 8 Offset 512 + MemberDecorate 269(TDMatrix) 8 MatrixStride 16 + MemberDecorate 269(TDMatrix) 9 ColMajor + MemberDecorate 269(TDMatrix) 9 Offset 576 + MemberDecorate 269(TDMatrix) 9 MatrixStride 16 + MemberDecorate 269(TDMatrix) 10 ColMajor + MemberDecorate 269(TDMatrix) 10 Offset 640 + MemberDecorate 269(TDMatrix) 10 MatrixStride 16 + MemberDecorate 269(TDMatrix) 11 ColMajor + MemberDecorate 269(TDMatrix) 11 Offset 704 + MemberDecorate 269(TDMatrix) 11 MatrixStride 16 + MemberDecorate 269(TDMatrix) 12 ColMajor + MemberDecorate 269(TDMatrix) 12 Offset 768 + MemberDecorate 269(TDMatrix) 12 MatrixStride 16 + MemberDecorate 269(TDMatrix) 13 ColMajor + MemberDecorate 269(TDMatrix) 13 Offset 832 + MemberDecorate 269(TDMatrix) 13 MatrixStride 16 + MemberDecorate 269(TDMatrix) 14 ColMajor + MemberDecorate 269(TDMatrix) 14 Offset 880 + MemberDecorate 269(TDMatrix) 14 MatrixStride 16 + MemberDecorate 269(TDMatrix) 15 ColMajor + MemberDecorate 269(TDMatrix) 15 Offset 928 + MemberDecorate 269(TDMatrix) 15 MatrixStride 16 + Decorate 270 ArrayStride 976 + MemberDecorate 271(TDMatricesBlock) 0 Offset 0 + Decorate 271(TDMatricesBlock) Block + Decorate 273 DescriptorSet 0 + Decorate 273 Binding 1 + Decorate 297(gl_InstanceIndex) BuiltIn InstanceIndex + MemberDecorate 299(gl_DefaultUniformBlock) 0 Offset 0 + MemberDecorate 299(gl_DefaultUniformBlock) 1 Offset 4 + MemberDecorate 299(gl_DefaultUniformBlock) 2 Offset 8 + MemberDecorate 299(gl_DefaultUniformBlock) 3 Offset 16 + MemberDecorate 299(gl_DefaultUniformBlock) 4 Offset 28 + MemberDecorate 299(gl_DefaultUniformBlock) 5 Offset 32 + MemberDecorate 299(gl_DefaultUniformBlock) 6 Offset 48 + MemberDecorate 299(gl_DefaultUniformBlock) 7 Offset 64 + Decorate 299(gl_DefaultUniformBlock) Block + Decorate 301 DescriptorSet 0 + Decorate 301 Binding 0 + Decorate 371(sTDInstanceTexCoord) DescriptorSet 0 + Decorate 371(sTDInstanceTexCoord) Binding 16 + Decorate 400(sTDInstanceT) DescriptorSet 0 + Decorate 400(sTDInstanceT) Binding 15 + Decorate 665(sTDInstanceColor) DescriptorSet 0 + Decorate 665(sTDInstanceColor) Binding 17 + MemberDecorate 896(TDCameraInfo) 0 Offset 0 + MemberDecorate 896(TDCameraInfo) 1 Offset 16 + MemberDecorate 896(TDCameraInfo) 2 Offset 32 + MemberDecorate 896(TDCameraInfo) 3 Offset 48 + Decorate 897 ArrayStride 64 + MemberDecorate 898(TDCameraInfoBlock) 0 Offset 0 + Decorate 898(TDCameraInfoBlock) Block + Decorate 900 DescriptorSet 0 + Decorate 900 Binding 0 + MemberDecorate 901(TDGeneral) 0 Offset 0 + MemberDecorate 901(TDGeneral) 1 Offset 16 + MemberDecorate 901(TDGeneral) 2 Offset 32 + MemberDecorate 901(TDGeneral) 3 Offset 48 + MemberDecorate 901(TDGeneral) 4 Offset 64 + MemberDecorate 901(TDGeneral) 5 Offset 80 + MemberDecorate 902(TDGeneralBlock) 0 Offset 0 + Decorate 902(TDGeneralBlock) Block + Decorate 904 DescriptorSet 0 + Decorate 904 Binding 0 + Decorate 905(N) Location 1 + Decorate 906(gl_VertexIndex) BuiltIn VertexIndex + MemberDecorate 907(TDLight) 0 Offset 0 + MemberDecorate 907(TDLight) 1 Offset 16 + MemberDecorate 907(TDLight) 2 Offset 32 + MemberDecorate 907(TDLight) 3 Offset 48 + MemberDecorate 907(TDLight) 4 Offset 64 + MemberDecorate 907(TDLight) 5 Offset 80 + MemberDecorate 907(TDLight) 6 Offset 96 + MemberDecorate 907(TDLight) 7 Offset 112 + MemberDecorate 907(TDLight) 8 ColMajor + MemberDecorate 907(TDLight) 8 Offset 128 + MemberDecorate 907(TDLight) 8 MatrixStride 16 + MemberDecorate 907(TDLight) 9 ColMajor + MemberDecorate 907(TDLight) 9 Offset 192 + MemberDecorate 907(TDLight) 9 MatrixStride 16 + MemberDecorate 907(TDLight) 10 Offset 256 + MemberDecorate 907(TDLight) 11 ColMajor + MemberDecorate 907(TDLight) 11 Offset 272 + MemberDecorate 907(TDLight) 11 MatrixStride 16 + Decorate 908 ArrayStride 336 + MemberDecorate 909(TDLightBlock) 0 Offset 0 + Decorate 909(TDLightBlock) Block + Decorate 911 DescriptorSet 0 + Decorate 911 Binding 0 + MemberDecorate 912(TDEnvLight) 0 Offset 0 + MemberDecorate 912(TDEnvLight) 1 ColMajor + MemberDecorate 912(TDEnvLight) 1 Offset 16 + MemberDecorate 912(TDEnvLight) 1 MatrixStride 16 + Decorate 913 ArrayStride 64 + MemberDecorate 914(TDEnvLightBlock) 0 Offset 0 + Decorate 914(TDEnvLightBlock) Block + Decorate 916 DescriptorSet 0 + Decorate 916 Binding 0 + Decorate 918 ArrayStride 16 + MemberDecorate 919(TDEnvLightBuffer) 0 Restrict + MemberDecorate 919(TDEnvLightBuffer) 0 NonWritable + MemberDecorate 919(TDEnvLightBuffer) 0 Offset 0 + Decorate 919(TDEnvLightBuffer) BufferBlock + Decorate 922(uTDEnvLightBuffers) DescriptorSet 0 + Decorate 922(uTDEnvLightBuffers) Binding 0 + Decorate 926(mTD2DImageOutputs) DescriptorSet 0 + Decorate 926(mTD2DImageOutputs) Binding 0 + Decorate 930(mTD2DArrayImageOutputs) DescriptorSet 0 + Decorate 930(mTD2DArrayImageOutputs) Binding 0 + Decorate 934(mTD3DImageOutputs) DescriptorSet 0 + Decorate 934(mTD3DImageOutputs) Binding 0 + Decorate 938(mTDCubeImageOutputs) DescriptorSet 0 + Decorate 938(mTDCubeImageOutputs) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeVector 6(float) 3 + 10: TypePointer Function 9(fvec3) + 11: TypeInt 32 1 + 12: TypePointer Function 11(int) + 13: TypeBool + 14: TypePointer Function 13(bool) + 15: TypeFunction 7(fvec4) 8(ptr) 10(ptr) 12(ptr) 14(ptr) + 28: TypeFunction 11(int) + 33: TypeFunction 9(fvec3) + 38: TypeFunction 6(float) 12(ptr) + 44: TypeFunction 7(fvec4) 8(ptr) 10(ptr) + 49: TypeFunction 7(fvec4) 10(ptr) 10(ptr) + 54: TypeFunction 7(fvec4) 8(ptr) + 58: TypeFunction 7(fvec4) 10(ptr) + 62: TypeFunction 7(fvec4) + 65: TypeFunction 9(fvec3) 12(ptr) 10(ptr) + 70: TypeFunction 13(bool) 12(ptr) + 74: TypeFunction 9(fvec3) 12(ptr) 14(ptr) + 79: TypeFunction 9(fvec3) 12(ptr) + 83: TypeMatrix 9(fvec3) 3 + 84: TypeFunction 83 12(ptr) + 100: TypeMatrix 7(fvec4) 4 + 101: TypeFunction 100 12(ptr) + 111: TypeFunction 7(fvec4) 12(ptr) 8(ptr) + 131: TypeFunction 9(fvec3) 10(ptr) + 138: TypeFunction 13(bool) + 143: TypeFunction 83 + 148: TypeFunction 100 + 165: TypeFunction 9(fvec3) 10(ptr) 8(ptr) 10(ptr) + 177: TypeFunction 7(fvec4) 12(ptr) 10(ptr) + 203: TypeInt 32 0 + 204: 203(int) Constant 8 + 205: TypeArray 9(fvec3) 204 + 206: TypePointer Input 205 + 207(uv): 206(ptr) Variable Input + 208: 11(int) Constant 0 + 210: TypePointer Input 9(fvec3) + 214(Vertex): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 11(int) 11(int) + 215: TypePointer Output 214(Vertex) + 216(oVert): 215(ptr) Variable Output + 217: 11(int) Constant 2 + 219: TypePointer Output 9(fvec3) + 221: 11(int) Constant 4 + 223: TypePointer Output 11(int) + 226(P): 210(ptr) Variable Input + 234: 203(int) Constant 1 + 235: TypeArray 6(float) 234 +236(gl_PerVertex): TypeStruct 7(fvec4) 6(float) 235 235 + 237: TypePointer Output 236(gl_PerVertex) + 238: 237(ptr) Variable Output + 244: TypePointer Output 7(fvec4) + 248: 11(int) Constant 3 + 251: 11(int) Constant 1 + 255: TypePointer Input 7(fvec4) + 256(Cd): 255(ptr) Variable Input + 265: 6(float) Constant 1073741824 + 266: 6(float) Constant 0 + 267: 7(fvec4) ConstantComposite 265 265 265 266 + 269(TDMatrix): TypeStruct 100 100 100 100 100 100 100 100 100 100 100 100 100 83 83 83 + 270: TypeArray 269(TDMatrix) 234 +271(TDMatricesBlock): TypeStruct 270 + 272: TypePointer Uniform 271(TDMatricesBlock) + 273: 272(ptr) Variable Uniform + 274: 11(int) Constant 8 + 275: TypePointer Uniform 100 + 288: 11(int) Constant 6 + 296: TypePointer Input 11(int) +297(gl_InstanceIndex): 296(ptr) Variable Input +299(gl_DefaultUniformBlock): TypeStruct 11(int) 11(int) 6(float) 9(fvec3) 6(float) 9(fvec3) 7(fvec4) 7(fvec4) + 300: TypePointer Uniform 299(gl_DefaultUniformBlock) + 301: 300(ptr) Variable Uniform + 302: TypePointer Uniform 11(int) + 316: 11(int) Constant 1073741824 + 324: 13(bool) ConstantTrue + 335: 6(float) Constant 1065353216 + 346: 9(fvec3) ConstantComposite 266 266 266 + 368: TypeImage 6(float) Buffer sampled format:Unknown + 369: TypeSampledImage 368 + 370: TypePointer UniformConstant 369 +371(sTDInstanceTexCoord): 370(ptr) Variable UniformConstant + 377: 203(int) Constant 0 + 378: TypePointer Function 6(float) + 387: 203(int) Constant 2 +400(sTDInstanceT): 370(ptr) Variable UniformConstant + 432: 203(int) Constant 3 + 471: TypePointer Function 83 + 473: 9(fvec3) ConstantComposite 335 266 266 + 474: 9(fvec3) ConstantComposite 266 335 266 + 475: 9(fvec3) ConstantComposite 266 266 335 + 476: 83 ConstantComposite 473 474 475 + 485: 9(fvec3) ConstantComposite 335 335 335 + 524: 7(fvec4) ConstantComposite 266 266 266 266 + 525: 100 ConstantComposite 524 524 524 524 + 527: TypePointer Function 100 + 529: 7(fvec4) ConstantComposite 335 266 266 266 + 530: 7(fvec4) ConstantComposite 266 335 266 266 + 531: 7(fvec4) ConstantComposite 266 266 335 266 + 532: 7(fvec4) ConstantComposite 266 266 266 335 + 533: 100 ConstantComposite 529 530 531 532 +665(sTDInstanceColor): 370(ptr) Variable UniformConstant + 730: 11(int) Constant 13 + 731: TypePointer Uniform 83 +896(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 11(int) + 897: TypeArray 896(TDCameraInfo) 234 +898(TDCameraInfoBlock): TypeStruct 897 + 899: TypePointer Uniform 898(TDCameraInfoBlock) + 900: 899(ptr) Variable Uniform + 901(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) +902(TDGeneralBlock): TypeStruct 901(TDGeneral) + 903: TypePointer Uniform 902(TDGeneralBlock) + 904: 903(ptr) Variable Uniform + 905(N): 210(ptr) Variable Input +906(gl_VertexIndex): 296(ptr) Variable Input + 907(TDLight): TypeStruct 7(fvec4) 9(fvec3) 9(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 100 100 7(fvec4) 100 + 908: TypeArray 907(TDLight) 234 +909(TDLightBlock): TypeStruct 908 + 910: TypePointer Uniform 909(TDLightBlock) + 911: 910(ptr) Variable Uniform + 912(TDEnvLight): TypeStruct 9(fvec3) 83 + 913: TypeArray 912(TDEnvLight) 234 +914(TDEnvLightBlock): TypeStruct 913 + 915: TypePointer Uniform 914(TDEnvLightBlock) + 916: 915(ptr) Variable Uniform + 917: 203(int) Constant 9 + 918: TypeArray 9(fvec3) 917 +919(TDEnvLightBuffer): TypeStruct 918 + 920: TypeArray 919(TDEnvLightBuffer) 234 + 921: TypePointer Uniform 920 +922(uTDEnvLightBuffers): 921(ptr) Variable Uniform + 923: TypeImage 6(float) 2D nonsampled format:Rgba8 + 924: TypeArray 923 234 + 925: TypePointer UniformConstant 924 +926(mTD2DImageOutputs): 925(ptr) Variable UniformConstant + 927: TypeImage 6(float) 2D array nonsampled format:Rgba8 + 928: TypeArray 927 234 + 929: TypePointer UniformConstant 928 +930(mTD2DArrayImageOutputs): 929(ptr) Variable UniformConstant + 931: TypeImage 6(float) 3D nonsampled format:Rgba8 + 932: TypeArray 931 234 + 933: TypePointer UniformConstant 932 +934(mTD3DImageOutputs): 933(ptr) Variable UniformConstant + 935: TypeImage 6(float) Cube nonsampled format:Rgba8 + 936: TypeArray 935 234 + 937: TypePointer UniformConstant 936 +938(mTDCubeImageOutputs): 937(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 202(texcoord): 10(ptr) Variable Function + 209(param): 10(ptr) Variable Function +225(worldSpacePos): 8(ptr) Variable Function + 227(param): 10(ptr) Variable Function +230(uvUnwrapCoord): 10(ptr) Variable Function + 232(param): 10(ptr) Variable Function + 239(param): 8(ptr) Variable Function + 241(param): 10(ptr) Variable Function +246(cameraIndex): 12(ptr) Variable Function + 257(param): 8(ptr) Variable Function + 211: 210(ptr) AccessChain 207(uv) 208 + 212: 9(fvec3) Load 211 + Store 209(param) 212 + 213: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 209(param) + Store 202(texcoord) 213 + 218: 9(fvec3) Load 202(texcoord) + 220: 219(ptr) AccessChain 216(oVert) 217 + Store 220 218 + 222: 11(int) FunctionCall 29(TDInstanceID() + 224: 223(ptr) AccessChain 216(oVert) 221 + Store 224 222 + 228: 9(fvec3) Load 226(P) + Store 227(param) 228 + 229: 7(fvec4) FunctionCall 183(TDDeform(vf3;) 227(param) + Store 225(worldSpacePos) 229 + 231: 9(fvec3) FunctionCall 34(TDUVUnwrapCoord() + Store 232(param) 231 + 233: 9(fvec3) FunctionCall 154(TDInstanceTexCoord(vf3;) 232(param) + Store 230(uvUnwrapCoord) 233 + 240: 7(fvec4) Load 225(worldSpacePos) + Store 239(param) 240 + 242: 9(fvec3) Load 230(uvUnwrapCoord) + Store 241(param) 242 + 243: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 239(param) 241(param) + 245: 244(ptr) AccessChain 238 208 + Store 245 243 + 247: 11(int) FunctionCall 31(TDCameraIndex() + Store 246(cameraIndex) 247 + 249: 11(int) Load 246(cameraIndex) + 250: 223(ptr) AccessChain 216(oVert) 248 + Store 250 249 + 252: 7(fvec4) Load 225(worldSpacePos) + 253: 9(fvec3) VectorShuffle 252 252 0 1 2 + 254: 219(ptr) AccessChain 216(oVert) 251 + Store 254 253 + 258: 7(fvec4) Load 256(Cd) + Store 257(param) 258 + 259: 7(fvec4) FunctionCall 157(TDInstanceColor(vf4;) 257(param) + 260: 244(ptr) AccessChain 216(oVert) 208 + Store 260 259 + Return + FunctionEnd +20(iTDCamToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15 + 16(v): 8(ptr) FunctionParameter + 17(uv): 10(ptr) FunctionParameter + 18(cameraIndex): 12(ptr) FunctionParameter +19(applyPickMod): 14(ptr) FunctionParameter + 21: Label + 261: 13(bool) FunctionCall 139(TDInstanceActive() + 262: 13(bool) LogicalNot 261 + SelectionMerge 264 None + BranchConditional 262 263 264 + 263: Label + ReturnValue 267 + 264: Label + 276: 275(ptr) AccessChain 273 208 208 274 + 277: 100 Load 276 + 278: 7(fvec4) Load 16(v) + 279: 7(fvec4) MatrixTimesVector 277 278 + Store 16(v) 279 + 280: 7(fvec4) Load 16(v) + ReturnValue 280 + FunctionEnd +26(iTDWorldToProj(vf4;vf3;i1;b1;): 7(fvec4) Function None 15 + 22(v): 8(ptr) FunctionParameter + 23(uv): 10(ptr) FunctionParameter + 24(cameraIndex): 12(ptr) FunctionParameter +25(applyPickMod): 14(ptr) FunctionParameter + 27: Label + 283: 13(bool) FunctionCall 139(TDInstanceActive() + 284: 13(bool) LogicalNot 283 + SelectionMerge 286 None + BranchConditional 284 285 286 + 285: Label + ReturnValue 267 + 286: Label + 289: 275(ptr) AccessChain 273 208 208 288 + 290: 100 Load 289 + 291: 7(fvec4) Load 22(v) + 292: 7(fvec4) MatrixTimesVector 290 291 + Store 22(v) 292 + 293: 7(fvec4) Load 22(v) + ReturnValue 293 + FunctionEnd +29(TDInstanceID(): 11(int) Function None 28 + 30: Label + 298: 11(int) Load 297(gl_InstanceIndex) + 303: 302(ptr) AccessChain 301 208 + 304: 11(int) Load 303 + 305: 11(int) IAdd 298 304 + ReturnValue 305 + FunctionEnd +31(TDCameraIndex(): 11(int) Function None 28 + 32: Label + ReturnValue 208 + FunctionEnd +34(TDUVUnwrapCoord(): 9(fvec3) Function None 33 + 35: Label + 310: 210(ptr) AccessChain 207(uv) 208 + 311: 9(fvec3) Load 310 + ReturnValue 311 + FunctionEnd + 36(TDPickID(): 11(int) Function None 28 + 37: Label + ReturnValue 208 + FunctionEnd +40(iTDConvertPickId(i1;): 6(float) Function None 38 + 39(id): 12(ptr) FunctionParameter + 41: Label + 317: 11(int) Load 39(id) + 318: 11(int) BitwiseOr 317 316 + Store 39(id) 318 + 319: 11(int) Load 39(id) + 320: 6(float) Bitcast 319 + ReturnValue 320 + FunctionEnd +42(TDWritePickingValues(): 2 Function None 3 + 43: Label + Return + FunctionEnd +47(TDWorldToProj(vf4;vf3;): 7(fvec4) Function None 44 + 45(v): 8(ptr) FunctionParameter + 46(uv): 10(ptr) FunctionParameter + 48: Label + 325(param): 8(ptr) Variable Function + 327(param): 10(ptr) Variable Function + 329(param): 12(ptr) Variable Function + 330(param): 14(ptr) Variable Function + 323: 11(int) FunctionCall 31(TDCameraIndex() + 326: 7(fvec4) Load 45(v) + Store 325(param) 326 + 328: 9(fvec3) Load 46(uv) + Store 327(param) 328 + Store 329(param) 323 + Store 330(param) 324 + 331: 7(fvec4) FunctionCall 26(iTDWorldToProj(vf4;vf3;i1;b1;) 325(param) 327(param) 329(param) 330(param) + ReturnValue 331 + FunctionEnd +52(TDWorldToProj(vf3;vf3;): 7(fvec4) Function None 49 + 50(v): 10(ptr) FunctionParameter + 51(uv): 10(ptr) FunctionParameter + 53: Label + 340(param): 8(ptr) Variable Function + 341(param): 10(ptr) Variable Function + 334: 9(fvec3) Load 50(v) + 336: 6(float) CompositeExtract 334 0 + 337: 6(float) CompositeExtract 334 1 + 338: 6(float) CompositeExtract 334 2 + 339: 7(fvec4) CompositeConstruct 336 337 338 335 + Store 340(param) 339 + 342: 9(fvec3) Load 51(uv) + Store 341(param) 342 + 343: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 340(param) 341(param) + ReturnValue 343 + FunctionEnd +56(TDWorldToProj(vf4;): 7(fvec4) Function None 54 + 55(v): 8(ptr) FunctionParameter + 57: Label + 347(param): 8(ptr) Variable Function + 349(param): 10(ptr) Variable Function + 348: 7(fvec4) Load 55(v) + Store 347(param) 348 + Store 349(param) 346 + 350: 7(fvec4) FunctionCall 47(TDWorldToProj(vf4;vf3;) 347(param) 349(param) + ReturnValue 350 + FunctionEnd +60(TDWorldToProj(vf3;): 7(fvec4) Function None 58 + 59(v): 10(ptr) FunctionParameter + 61: Label + 358(param): 8(ptr) Variable Function + 353: 9(fvec3) Load 59(v) + 354: 6(float) CompositeExtract 353 0 + 355: 6(float) CompositeExtract 353 1 + 356: 6(float) CompositeExtract 353 2 + 357: 7(fvec4) CompositeConstruct 354 355 356 335 + Store 358(param) 357 + 359: 7(fvec4) FunctionCall 56(TDWorldToProj(vf4;) 358(param) + ReturnValue 359 + FunctionEnd +63(TDPointColor(): 7(fvec4) Function None 62 + 64: Label + 362: 7(fvec4) Load 256(Cd) + ReturnValue 362 + FunctionEnd +68(TDInstanceTexCoord(i1;vf3;): 9(fvec3) Function None 65 + 66(index): 12(ptr) FunctionParameter + 67(t): 10(ptr) FunctionParameter + 69: Label + 365(coord): 12(ptr) Variable Function + 367(samp): 8(ptr) Variable Function + 376(v): 10(ptr) Variable Function + 366: 11(int) Load 66(index) + Store 365(coord) 366 + 372: 369 Load 371(sTDInstanceTexCoord) + 373: 11(int) Load 365(coord) + 374: 368 Image 372 + 375: 7(fvec4) ImageFetch 374 373 + Store 367(samp) 375 + 379: 378(ptr) AccessChain 67(t) 377 + 380: 6(float) Load 379 + 381: 378(ptr) AccessChain 376(v) 377 + Store 381 380 + 382: 378(ptr) AccessChain 67(t) 234 + 383: 6(float) Load 382 + 384: 378(ptr) AccessChain 376(v) 234 + Store 384 383 + 385: 378(ptr) AccessChain 367(samp) 377 + 386: 6(float) Load 385 + 388: 378(ptr) AccessChain 376(v) 387 + Store 388 386 + 389: 9(fvec3) Load 376(v) + Store 67(t) 389 + 390: 9(fvec3) Load 67(t) + ReturnValue 390 + FunctionEnd +72(TDInstanceActive(i1;): 13(bool) Function None 70 + 71(index): 12(ptr) FunctionParameter + 73: Label + 397(coord): 12(ptr) Variable Function + 399(samp): 8(ptr) Variable Function + 405(v): 378(ptr) Variable Function + 393: 302(ptr) AccessChain 301 208 + 394: 11(int) Load 393 + 395: 11(int) Load 71(index) + 396: 11(int) ISub 395 394 + Store 71(index) 396 + 398: 11(int) Load 71(index) + Store 397(coord) 398 + 401: 369 Load 400(sTDInstanceT) + 402: 11(int) Load 397(coord) + 403: 368 Image 401 + 404: 7(fvec4) ImageFetch 403 402 + Store 399(samp) 404 + 406: 378(ptr) AccessChain 399(samp) 377 + 407: 6(float) Load 406 + Store 405(v) 407 + 408: 6(float) Load 405(v) + 409: 13(bool) FUnordNotEqual 408 266 + ReturnValue 409 + FunctionEnd +77(iTDInstanceTranslate(i1;b1;): 9(fvec3) Function None 74 + 75(index): 12(ptr) FunctionParameter +76(instanceActive): 14(ptr) FunctionParameter + 78: Label + 412(origIndex): 12(ptr) Variable Function + 418(coord): 12(ptr) Variable Function + 420(samp): 8(ptr) Variable Function + 425(v): 10(ptr) Variable Function + 413: 11(int) Load 75(index) + Store 412(origIndex) 413 + 414: 302(ptr) AccessChain 301 208 + 415: 11(int) Load 414 + 416: 11(int) Load 75(index) + 417: 11(int) ISub 416 415 + Store 75(index) 417 + 419: 11(int) Load 75(index) + Store 418(coord) 419 + 421: 369 Load 400(sTDInstanceT) + 422: 11(int) Load 418(coord) + 423: 368 Image 421 + 424: 7(fvec4) ImageFetch 423 422 + Store 420(samp) 424 + 426: 378(ptr) AccessChain 420(samp) 234 + 427: 6(float) Load 426 + 428: 378(ptr) AccessChain 425(v) 377 + Store 428 427 + 429: 378(ptr) AccessChain 420(samp) 387 + 430: 6(float) Load 429 + 431: 378(ptr) AccessChain 425(v) 234 + Store 431 430 + 433: 378(ptr) AccessChain 420(samp) 432 + 434: 6(float) Load 433 + 435: 378(ptr) AccessChain 425(v) 387 + Store 435 434 + 436: 378(ptr) AccessChain 420(samp) 377 + 437: 6(float) Load 436 + 438: 13(bool) FUnordNotEqual 437 266 + Store 76(instanceActive) 438 + 439: 9(fvec3) Load 425(v) + ReturnValue 439 + FunctionEnd +81(TDInstanceTranslate(i1;): 9(fvec3) Function None 79 + 80(index): 12(ptr) FunctionParameter + 82: Label + 446(coord): 12(ptr) Variable Function + 448(samp): 8(ptr) Variable Function + 453(v): 10(ptr) Variable Function + 442: 302(ptr) AccessChain 301 208 + 443: 11(int) Load 442 + 444: 11(int) Load 80(index) + 445: 11(int) ISub 444 443 + Store 80(index) 445 + 447: 11(int) Load 80(index) + Store 446(coord) 447 + 449: 369 Load 400(sTDInstanceT) + 450: 11(int) Load 446(coord) + 451: 368 Image 449 + 452: 7(fvec4) ImageFetch 451 450 + Store 448(samp) 452 + 454: 378(ptr) AccessChain 448(samp) 234 + 455: 6(float) Load 454 + 456: 378(ptr) AccessChain 453(v) 377 + Store 456 455 + 457: 378(ptr) AccessChain 448(samp) 387 + 458: 6(float) Load 457 + 459: 378(ptr) AccessChain 453(v) 234 + Store 459 458 + 460: 378(ptr) AccessChain 448(samp) 432 + 461: 6(float) Load 460 + 462: 378(ptr) AccessChain 453(v) 387 + Store 462 461 + 463: 9(fvec3) Load 453(v) + ReturnValue 463 + FunctionEnd +86(TDInstanceRotateMat(i1;): 83 Function None 84 + 85(index): 12(ptr) FunctionParameter + 87: Label + 470(v): 10(ptr) Variable Function + 472(m): 471(ptr) Variable Function + 466: 302(ptr) AccessChain 301 208 + 467: 11(int) Load 466 + 468: 11(int) Load 85(index) + 469: 11(int) ISub 468 467 + Store 85(index) 469 + Store 470(v) 346 + Store 472(m) 476 + 477: 83 Load 472(m) + ReturnValue 477 + FunctionEnd +89(TDInstanceScale(i1;): 9(fvec3) Function None 79 + 88(index): 12(ptr) FunctionParameter + 90: Label + 484(v): 10(ptr) Variable Function + 480: 302(ptr) AccessChain 301 208 + 481: 11(int) Load 480 + 482: 11(int) Load 88(index) + 483: 11(int) ISub 482 481 + Store 88(index) 483 + Store 484(v) 485 + 486: 9(fvec3) Load 484(v) + ReturnValue 486 + FunctionEnd +92(TDInstancePivot(i1;): 9(fvec3) Function None 79 + 91(index): 12(ptr) FunctionParameter + 93: Label + 493(v): 10(ptr) Variable Function + 489: 302(ptr) AccessChain 301 208 + 490: 11(int) Load 489 + 491: 11(int) Load 91(index) + 492: 11(int) ISub 491 490 + Store 91(index) 492 + Store 493(v) 346 + 494: 9(fvec3) Load 493(v) + ReturnValue 494 + FunctionEnd +95(TDInstanceRotTo(i1;): 9(fvec3) Function None 79 + 94(index): 12(ptr) FunctionParameter + 96: Label + 501(v): 10(ptr) Variable Function + 497: 302(ptr) AccessChain 301 208 + 498: 11(int) Load 497 + 499: 11(int) Load 94(index) + 500: 11(int) ISub 499 498 + Store 94(index) 500 + Store 501(v) 475 + 502: 9(fvec3) Load 501(v) + ReturnValue 502 + FunctionEnd +98(TDInstanceRotUp(i1;): 9(fvec3) Function None 79 + 97(index): 12(ptr) FunctionParameter + 99: Label + 509(v): 10(ptr) Variable Function + 505: 302(ptr) AccessChain 301 208 + 506: 11(int) Load 505 + 507: 11(int) Load 97(index) + 508: 11(int) ISub 507 506 + Store 97(index) 508 + Store 509(v) 474 + 510: 9(fvec3) Load 509(v) + ReturnValue 510 + FunctionEnd +103(TDInstanceMat(i1;): 100 Function None 101 + 102(id): 12(ptr) FunctionParameter + 104: Label +513(instanceActive): 14(ptr) Variable Function + 514(t): 10(ptr) Variable Function + 515(param): 12(ptr) Variable Function + 517(param): 14(ptr) Variable Function + 528(m): 527(ptr) Variable Function + 534(tt): 10(ptr) Variable Function + Store 513(instanceActive) 324 + 516: 11(int) Load 102(id) + Store 515(param) 516 + 518: 9(fvec3) FunctionCall 77(iTDInstanceTranslate(i1;b1;) 515(param) 517(param) + 519: 13(bool) Load 517(param) + Store 513(instanceActive) 519 + Store 514(t) 518 + 520: 13(bool) Load 513(instanceActive) + 521: 13(bool) LogicalNot 520 + SelectionMerge 523 None + BranchConditional 521 522 523 + 522: Label + ReturnValue 525 + 523: Label + Store 528(m) 533 + 535: 9(fvec3) Load 514(t) + Store 534(tt) 535 + 536: 378(ptr) AccessChain 528(m) 208 377 + 537: 6(float) Load 536 + 538: 378(ptr) AccessChain 534(tt) 377 + 539: 6(float) Load 538 + 540: 6(float) FMul 537 539 + 541: 378(ptr) AccessChain 528(m) 248 377 + 542: 6(float) Load 541 + 543: 6(float) FAdd 542 540 + 544: 378(ptr) AccessChain 528(m) 248 377 + Store 544 543 + 545: 378(ptr) AccessChain 528(m) 208 234 + 546: 6(float) Load 545 + 547: 378(ptr) AccessChain 534(tt) 377 + 548: 6(float) Load 547 + 549: 6(float) FMul 546 548 + 550: 378(ptr) AccessChain 528(m) 248 234 + 551: 6(float) Load 550 + 552: 6(float) FAdd 551 549 + 553: 378(ptr) AccessChain 528(m) 248 234 + Store 553 552 + 554: 378(ptr) AccessChain 528(m) 208 387 + 555: 6(float) Load 554 + 556: 378(ptr) AccessChain 534(tt) 377 + 557: 6(float) Load 556 + 558: 6(float) FMul 555 557 + 559: 378(ptr) AccessChain 528(m) 248 387 + 560: 6(float) Load 559 + 561: 6(float) FAdd 560 558 + 562: 378(ptr) AccessChain 528(m) 248 387 + Store 562 561 + 563: 378(ptr) AccessChain 528(m) 208 432 + 564: 6(float) Load 563 + 565: 378(ptr) AccessChain 534(tt) 377 + 566: 6(float) Load 565 + 567: 6(float) FMul 564 566 + 568: 378(ptr) AccessChain 528(m) 248 432 + 569: 6(float) Load 568 + 570: 6(float) FAdd 569 567 + 571: 378(ptr) AccessChain 528(m) 248 432 + Store 571 570 + 572: 378(ptr) AccessChain 528(m) 251 377 + 573: 6(float) Load 572 + 574: 378(ptr) AccessChain 534(tt) 234 + 575: 6(float) Load 574 + 576: 6(float) FMul 573 575 + 577: 378(ptr) AccessChain 528(m) 248 377 + 578: 6(float) Load 577 + 579: 6(float) FAdd 578 576 + 580: 378(ptr) AccessChain 528(m) 248 377 + Store 580 579 + 581: 378(ptr) AccessChain 528(m) 251 234 + 582: 6(float) Load 581 + 583: 378(ptr) AccessChain 534(tt) 234 + 584: 6(float) Load 583 + 585: 6(float) FMul 582 584 + 586: 378(ptr) AccessChain 528(m) 248 234 + 587: 6(float) Load 586 + 588: 6(float) FAdd 587 585 + 589: 378(ptr) AccessChain 528(m) 248 234 + Store 589 588 + 590: 378(ptr) AccessChain 528(m) 251 387 + 591: 6(float) Load 590 + 592: 378(ptr) AccessChain 534(tt) 234 + 593: 6(float) Load 592 + 594: 6(float) FMul 591 593 + 595: 378(ptr) AccessChain 528(m) 248 387 + 596: 6(float) Load 595 + 597: 6(float) FAdd 596 594 + 598: 378(ptr) AccessChain 528(m) 248 387 + Store 598 597 + 599: 378(ptr) AccessChain 528(m) 251 432 + 600: 6(float) Load 599 + 601: 378(ptr) AccessChain 534(tt) 234 + 602: 6(float) Load 601 + 603: 6(float) FMul 600 602 + 604: 378(ptr) AccessChain 528(m) 248 432 + 605: 6(float) Load 604 + 606: 6(float) FAdd 605 603 + 607: 378(ptr) AccessChain 528(m) 248 432 + Store 607 606 + 608: 378(ptr) AccessChain 528(m) 217 377 + 609: 6(float) Load 608 + 610: 378(ptr) AccessChain 534(tt) 387 + 611: 6(float) Load 610 + 612: 6(float) FMul 609 611 + 613: 378(ptr) AccessChain 528(m) 248 377 + 614: 6(float) Load 613 + 615: 6(float) FAdd 614 612 + 616: 378(ptr) AccessChain 528(m) 248 377 + Store 616 615 + 617: 378(ptr) AccessChain 528(m) 217 234 + 618: 6(float) Load 617 + 619: 378(ptr) AccessChain 534(tt) 387 + 620: 6(float) Load 619 + 621: 6(float) FMul 618 620 + 622: 378(ptr) AccessChain 528(m) 248 234 + 623: 6(float) Load 622 + 624: 6(float) FAdd 623 621 + 625: 378(ptr) AccessChain 528(m) 248 234 + Store 625 624 + 626: 378(ptr) AccessChain 528(m) 217 387 + 627: 6(float) Load 626 + 628: 378(ptr) AccessChain 534(tt) 387 + 629: 6(float) Load 628 + 630: 6(float) FMul 627 629 + 631: 378(ptr) AccessChain 528(m) 248 387 + 632: 6(float) Load 631 + 633: 6(float) FAdd 632 630 + 634: 378(ptr) AccessChain 528(m) 248 387 + Store 634 633 + 635: 378(ptr) AccessChain 528(m) 217 432 + 636: 6(float) Load 635 + 637: 378(ptr) AccessChain 534(tt) 387 + 638: 6(float) Load 637 + 639: 6(float) FMul 636 638 + 640: 378(ptr) AccessChain 528(m) 248 432 + 641: 6(float) Load 640 + 642: 6(float) FAdd 641 639 + 643: 378(ptr) AccessChain 528(m) 248 432 + Store 643 642 + 644: 100 Load 528(m) + ReturnValue 644 + FunctionEnd +106(TDInstanceMat3(i1;): 83 Function None 84 + 105(id): 12(ptr) FunctionParameter + 107: Label + 647(m): 471(ptr) Variable Function + Store 647(m) 476 + 648: 83 Load 647(m) + ReturnValue 648 + FunctionEnd +109(TDInstanceMat3ForNorm(i1;): 83 Function None 84 + 108(id): 12(ptr) FunctionParameter + 110: Label + 651(m): 471(ptr) Variable Function + 652(param): 12(ptr) Variable Function + 653: 11(int) Load 108(id) + Store 652(param) 653 + 654: 83 FunctionCall 106(TDInstanceMat3(i1;) 652(param) + Store 651(m) 654 + 655: 83 Load 651(m) + ReturnValue 655 + FunctionEnd +114(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 111 + 112(index): 12(ptr) FunctionParameter + 113(curColor): 8(ptr) FunctionParameter + 115: Label + 662(coord): 12(ptr) Variable Function + 664(samp): 8(ptr) Variable Function + 670(v): 8(ptr) Variable Function + 658: 302(ptr) AccessChain 301 208 + 659: 11(int) Load 658 + 660: 11(int) Load 112(index) + 661: 11(int) ISub 660 659 + Store 112(index) 661 + 663: 11(int) Load 112(index) + Store 662(coord) 663 + 666: 369 Load 665(sTDInstanceColor) + 667: 11(int) Load 662(coord) + 668: 368 Image 666 + 669: 7(fvec4) ImageFetch 668 667 + Store 664(samp) 669 + 671: 378(ptr) AccessChain 664(samp) 377 + 672: 6(float) Load 671 + 673: 378(ptr) AccessChain 670(v) 377 + Store 673 672 + 674: 378(ptr) AccessChain 664(samp) 234 + 675: 6(float) Load 674 + 676: 378(ptr) AccessChain 670(v) 234 + Store 676 675 + 677: 378(ptr) AccessChain 664(samp) 387 + 678: 6(float) Load 677 + 679: 378(ptr) AccessChain 670(v) 387 + Store 679 678 + 680: 378(ptr) AccessChain 670(v) 432 + Store 680 335 + 681: 378(ptr) AccessChain 670(v) 377 + 682: 6(float) Load 681 + 683: 378(ptr) AccessChain 113(curColor) 377 + Store 683 682 + 684: 378(ptr) AccessChain 670(v) 234 + 685: 6(float) Load 684 + 686: 378(ptr) AccessChain 113(curColor) 234 + Store 686 685 + 687: 378(ptr) AccessChain 670(v) 387 + 688: 6(float) Load 687 + 689: 378(ptr) AccessChain 113(curColor) 387 + Store 689 688 + 690: 7(fvec4) Load 113(curColor) + ReturnValue 690 + FunctionEnd +118(TDInstanceDeform(i1;vf4;): 7(fvec4) Function None 111 + 116(id): 12(ptr) FunctionParameter + 117(pos): 8(ptr) FunctionParameter + 119: Label + 693(param): 12(ptr) Variable Function + 694: 11(int) Load 116(id) + Store 693(param) 694 + 695: 100 FunctionCall 103(TDInstanceMat(i1;) 693(param) + 696: 7(fvec4) Load 117(pos) + 697: 7(fvec4) MatrixTimesVector 695 696 + Store 117(pos) 697 + 698: 11(int) FunctionCall 31(TDCameraIndex() + 699: 275(ptr) AccessChain 273 208 698 208 + 700: 100 Load 699 + 701: 7(fvec4) Load 117(pos) + 702: 7(fvec4) MatrixTimesVector 700 701 + ReturnValue 702 + FunctionEnd +122(TDInstanceDeformVec(i1;vf3;): 9(fvec3) Function None 65 + 120(id): 12(ptr) FunctionParameter + 121(vec): 10(ptr) FunctionParameter + 123: Label + 705(m): 471(ptr) Variable Function + 706(param): 12(ptr) Variable Function + 707: 11(int) Load 120(id) + Store 706(param) 707 + 708: 83 FunctionCall 106(TDInstanceMat3(i1;) 706(param) + Store 705(m) 708 + 709: 11(int) FunctionCall 31(TDCameraIndex() + 710: 275(ptr) AccessChain 273 208 709 208 + 711: 100 Load 710 + 712: 7(fvec4) CompositeExtract 711 0 + 713: 9(fvec3) VectorShuffle 712 712 0 1 2 + 714: 7(fvec4) CompositeExtract 711 1 + 715: 9(fvec3) VectorShuffle 714 714 0 1 2 + 716: 7(fvec4) CompositeExtract 711 2 + 717: 9(fvec3) VectorShuffle 716 716 0 1 2 + 718: 83 CompositeConstruct 713 715 717 + 719: 83 Load 705(m) + 720: 9(fvec3) Load 121(vec) + 721: 9(fvec3) MatrixTimesVector 719 720 + 722: 9(fvec3) MatrixTimesVector 718 721 + ReturnValue 722 + FunctionEnd +126(TDInstanceDeformNorm(i1;vf3;): 9(fvec3) Function None 65 + 124(id): 12(ptr) FunctionParameter + 125(vec): 10(ptr) FunctionParameter + 127: Label + 725(m): 471(ptr) Variable Function + 726(param): 12(ptr) Variable Function + 727: 11(int) Load 124(id) + Store 726(param) 727 + 728: 83 FunctionCall 109(TDInstanceMat3ForNorm(i1;) 726(param) + Store 725(m) 728 + 729: 11(int) FunctionCall 31(TDCameraIndex() + 732: 731(ptr) AccessChain 273 208 729 730 + 733: 83 Load 732 + 734: 9(fvec3) CompositeExtract 733 0 + 735: 9(fvec3) CompositeExtract 733 1 + 736: 9(fvec3) CompositeExtract 733 2 + 737: 83 CompositeConstruct 734 735 736 + 738: 83 Load 725(m) + 739: 9(fvec3) Load 125(vec) + 740: 9(fvec3) MatrixTimesVector 738 739 + 741: 9(fvec3) MatrixTimesVector 737 740 + ReturnValue 741 + FunctionEnd +129(TDInstanceDeform(vf4;): 7(fvec4) Function None 54 + 128(pos): 8(ptr) FunctionParameter + 130: Label + 745(param): 12(ptr) Variable Function + 746(param): 8(ptr) Variable Function + 744: 11(int) FunctionCall 29(TDInstanceID() + Store 745(param) 744 + 747: 7(fvec4) Load 128(pos) + Store 746(param) 747 + 748: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 745(param) 746(param) + ReturnValue 748 + FunctionEnd +133(TDInstanceDeformVec(vf3;): 9(fvec3) Function None 131 + 132(vec): 10(ptr) FunctionParameter + 134: Label + 752(param): 12(ptr) Variable Function + 753(param): 10(ptr) Variable Function + 751: 11(int) FunctionCall 29(TDInstanceID() + Store 752(param) 751 + 754: 9(fvec3) Load 132(vec) + Store 753(param) 754 + 755: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 752(param) 753(param) + ReturnValue 755 + FunctionEnd +136(TDInstanceDeformNorm(vf3;): 9(fvec3) Function None 131 + 135(vec): 10(ptr) FunctionParameter + 137: Label + 759(param): 12(ptr) Variable Function + 760(param): 10(ptr) Variable Function + 758: 11(int) FunctionCall 29(TDInstanceID() + Store 759(param) 758 + 761: 9(fvec3) Load 135(vec) + Store 760(param) 761 + 762: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 759(param) 760(param) + ReturnValue 762 + FunctionEnd +139(TDInstanceActive(): 13(bool) Function None 138 + 140: Label + 766(param): 12(ptr) Variable Function + 765: 11(int) FunctionCall 29(TDInstanceID() + Store 766(param) 765 + 767: 13(bool) FunctionCall 72(TDInstanceActive(i1;) 766(param) + ReturnValue 767 + FunctionEnd +141(TDInstanceTranslate(): 9(fvec3) Function None 33 + 142: Label + 771(param): 12(ptr) Variable Function + 770: 11(int) FunctionCall 29(TDInstanceID() + Store 771(param) 770 + 772: 9(fvec3) FunctionCall 81(TDInstanceTranslate(i1;) 771(param) + ReturnValue 772 + FunctionEnd +144(TDInstanceRotateMat(): 83 Function None 143 + 145: Label + 776(param): 12(ptr) Variable Function + 775: 11(int) FunctionCall 29(TDInstanceID() + Store 776(param) 775 + 777: 83 FunctionCall 86(TDInstanceRotateMat(i1;) 776(param) + ReturnValue 777 + FunctionEnd +146(TDInstanceScale(): 9(fvec3) Function None 33 + 147: Label + 781(param): 12(ptr) Variable Function + 780: 11(int) FunctionCall 29(TDInstanceID() + Store 781(param) 780 + 782: 9(fvec3) FunctionCall 89(TDInstanceScale(i1;) 781(param) + ReturnValue 782 + FunctionEnd +149(TDInstanceMat(): 100 Function None 148 + 150: Label + 786(param): 12(ptr) Variable Function + 785: 11(int) FunctionCall 29(TDInstanceID() + Store 786(param) 785 + 787: 100 FunctionCall 103(TDInstanceMat(i1;) 786(param) + ReturnValue 787 + FunctionEnd +151(TDInstanceMat3(): 83 Function None 143 + 152: Label + 791(param): 12(ptr) Variable Function + 790: 11(int) FunctionCall 29(TDInstanceID() + Store 791(param) 790 + 792: 83 FunctionCall 106(TDInstanceMat3(i1;) 791(param) + ReturnValue 792 + FunctionEnd +154(TDInstanceTexCoord(vf3;): 9(fvec3) Function None 131 + 153(t): 10(ptr) FunctionParameter + 155: Label + 796(param): 12(ptr) Variable Function + 797(param): 10(ptr) Variable Function + 795: 11(int) FunctionCall 29(TDInstanceID() + Store 796(param) 795 + 798: 9(fvec3) Load 153(t) + Store 797(param) 798 + 799: 9(fvec3) FunctionCall 68(TDInstanceTexCoord(i1;vf3;) 796(param) 797(param) + ReturnValue 799 + FunctionEnd +157(TDInstanceColor(vf4;): 7(fvec4) Function None 54 + 156(curColor): 8(ptr) FunctionParameter + 158: Label + 803(param): 12(ptr) Variable Function + 804(param): 8(ptr) Variable Function + 802: 11(int) FunctionCall 29(TDInstanceID() + Store 803(param) 802 + 805: 7(fvec4) Load 156(curColor) + Store 804(param) 805 + 806: 7(fvec4) FunctionCall 114(TDInstanceColor(i1;vf4;) 803(param) 804(param) + ReturnValue 806 + FunctionEnd +160(TDSkinnedDeform(vf4;): 7(fvec4) Function None 54 + 159(pos): 8(ptr) FunctionParameter + 161: Label + 809: 7(fvec4) Load 159(pos) + ReturnValue 809 + FunctionEnd +163(TDSkinnedDeformVec(vf3;): 9(fvec3) Function None 131 + 162(vec): 10(ptr) FunctionParameter + 164: Label + 812: 9(fvec3) Load 162(vec) + ReturnValue 812 + FunctionEnd +169(TDFastDeformTangent(vf3;vf4;vf3;): 9(fvec3) Function None 165 + 166(oldNorm): 10(ptr) FunctionParameter + 167(oldTangent): 8(ptr) FunctionParameter +168(deformedNorm): 10(ptr) FunctionParameter + 170: Label + 815: 7(fvec4) Load 167(oldTangent) + 816: 9(fvec3) VectorShuffle 815 815 0 1 2 + ReturnValue 816 + FunctionEnd +172(TDBoneMat(i1;): 100 Function None 101 + 171(index): 12(ptr) FunctionParameter + 173: Label + ReturnValue 533 + FunctionEnd +175(TDDeform(vf4;): 7(fvec4) Function None 54 + 174(pos): 8(ptr) FunctionParameter + 176: Label + 821(param): 8(ptr) Variable Function + 824(param): 8(ptr) Variable Function + 822: 7(fvec4) Load 174(pos) + Store 821(param) 822 + 823: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 821(param) + Store 174(pos) 823 + 825: 7(fvec4) Load 174(pos) + Store 824(param) 825 + 826: 7(fvec4) FunctionCall 129(TDInstanceDeform(vf4;) 824(param) + Store 174(pos) 826 + 827: 7(fvec4) Load 174(pos) + ReturnValue 827 + FunctionEnd +180(TDDeform(i1;vf3;): 7(fvec4) Function None 177 + 178(instanceID): 12(ptr) FunctionParameter + 179(p): 10(ptr) FunctionParameter + 181: Label + 830(pos): 8(ptr) Variable Function + 836(param): 8(ptr) Variable Function + 839(param): 12(ptr) Variable Function + 841(param): 8(ptr) Variable Function + 831: 9(fvec3) Load 179(p) + 832: 6(float) CompositeExtract 831 0 + 833: 6(float) CompositeExtract 831 1 + 834: 6(float) CompositeExtract 831 2 + 835: 7(fvec4) CompositeConstruct 832 833 834 335 + Store 830(pos) 835 + 837: 7(fvec4) Load 830(pos) + Store 836(param) 837 + 838: 7(fvec4) FunctionCall 160(TDSkinnedDeform(vf4;) 836(param) + Store 830(pos) 838 + 840: 11(int) Load 178(instanceID) + Store 839(param) 840 + 842: 7(fvec4) Load 830(pos) + Store 841(param) 842 + 843: 7(fvec4) FunctionCall 118(TDInstanceDeform(i1;vf4;) 839(param) 841(param) + Store 830(pos) 843 + 844: 7(fvec4) Load 830(pos) + ReturnValue 844 + FunctionEnd +183(TDDeform(vf3;): 7(fvec4) Function None 58 + 182(pos): 10(ptr) FunctionParameter + 184: Label + 848(param): 12(ptr) Variable Function + 849(param): 10(ptr) Variable Function + 847: 11(int) FunctionCall 29(TDInstanceID() + Store 848(param) 847 + 850: 9(fvec3) Load 182(pos) + Store 849(param) 850 + 851: 7(fvec4) FunctionCall 180(TDDeform(i1;vf3;) 848(param) 849(param) + ReturnValue 851 + FunctionEnd +187(TDDeformVec(i1;vf3;): 9(fvec3) Function None 65 + 185(instanceID): 12(ptr) FunctionParameter + 186(vec): 10(ptr) FunctionParameter + 188: Label + 854(param): 10(ptr) Variable Function + 857(param): 12(ptr) Variable Function + 859(param): 10(ptr) Variable Function + 855: 9(fvec3) Load 186(vec) + Store 854(param) 855 + 856: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 854(param) + Store 186(vec) 856 + 858: 11(int) Load 185(instanceID) + Store 857(param) 858 + 860: 9(fvec3) Load 186(vec) + Store 859(param) 860 + 861: 9(fvec3) FunctionCall 122(TDInstanceDeformVec(i1;vf3;) 857(param) 859(param) + Store 186(vec) 861 + 862: 9(fvec3) Load 186(vec) + ReturnValue 862 + FunctionEnd +190(TDDeformVec(vf3;): 9(fvec3) Function None 131 + 189(vec): 10(ptr) FunctionParameter + 191: Label + 866(param): 12(ptr) Variable Function + 867(param): 10(ptr) Variable Function + 865: 11(int) FunctionCall 29(TDInstanceID() + Store 866(param) 865 + 868: 9(fvec3) Load 189(vec) + Store 867(param) 868 + 869: 9(fvec3) FunctionCall 187(TDDeformVec(i1;vf3;) 866(param) 867(param) + ReturnValue 869 + FunctionEnd +194(TDDeformNorm(i1;vf3;): 9(fvec3) Function None 65 + 192(instanceID): 12(ptr) FunctionParameter + 193(vec): 10(ptr) FunctionParameter + 195: Label + 872(param): 10(ptr) Variable Function + 875(param): 12(ptr) Variable Function + 877(param): 10(ptr) Variable Function + 873: 9(fvec3) Load 193(vec) + Store 872(param) 873 + 874: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 872(param) + Store 193(vec) 874 + 876: 11(int) Load 192(instanceID) + Store 875(param) 876 + 878: 9(fvec3) Load 193(vec) + Store 877(param) 878 + 879: 9(fvec3) FunctionCall 126(TDInstanceDeformNorm(i1;vf3;) 875(param) 877(param) + Store 193(vec) 879 + 880: 9(fvec3) Load 193(vec) + ReturnValue 880 + FunctionEnd +197(TDDeformNorm(vf3;): 9(fvec3) Function None 131 + 196(vec): 10(ptr) FunctionParameter + 198: Label + 884(param): 12(ptr) Variable Function + 885(param): 10(ptr) Variable Function + 883: 11(int) FunctionCall 29(TDInstanceID() + Store 884(param) 883 + 886: 9(fvec3) Load 196(vec) + Store 885(param) 886 + 887: 9(fvec3) FunctionCall 194(TDDeformNorm(i1;vf3;) 884(param) 885(param) + ReturnValue 887 + FunctionEnd +200(TDSkinnedDeformNorm(vf3;): 9(fvec3) Function None 131 + 199(vec): 10(ptr) FunctionParameter + 201: Label + 890(param): 10(ptr) Variable Function + 891: 9(fvec3) Load 199(vec) + Store 890(param) 891 + 892: 9(fvec3) FunctionCall 163(TDSkinnedDeformVec(vf3;) 890(param) + Store 199(vec) 892 + 893: 9(fvec3) Load 199(vec) + ReturnValue 893 + FunctionEnd +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 1297 + + Capability Shader + Capability Sampled1D + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 336 429 458 485 + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + Name 4 "main" + Name 11 "TDColor(vf4;" + Name 10 "color" + Name 13 "TDCheckOrderIndTrans(" + Name 15 "TDCheckDiscard(" + Name 18 "TDDither(vf4;" + Name 17 "color" + Name 26 "TDFrontFacing(vf3;vf3;" + Name 24 "pos" + Name 25 "normal" + Name 34 "TDAttenuateLight(i1;f1;" + Name 32 "index" + Name 33 "lightDist" + Name 38 "TDAlphaTest(f1;" + Name 37 "alpha" + Name 43 "TDHardShadow(i1;vf3;" + Name 41 "lightIndex" + Name 42 "worldSpacePos" + Name 50 "TDSoftShadow(i1;vf3;i1;i1;" + Name 46 "lightIndex" + Name 47 "worldSpacePos" + Name 48 "samples" + Name 49 "steps" + Name 54 "TDSoftShadow(i1;vf3;" + Name 52 "lightIndex" + Name 53 "worldSpacePos" + Name 58 "TDShadow(i1;vf3;" + Name 56 "lightIndex" + Name 57 "worldSpacePos" + Name 64 "iTDRadicalInverse_VdC(u1;" + Name 63 "bits" + Name 70 "iTDHammersley(u1;u1;" + Name 68 "i" + Name 69 "N" + Name 77 "iTDImportanceSampleGGX(vf2;f1;vf3;" + Name 74 "Xi" + Name 75 "roughness2" + Name 76 "N" + Name 83 "iTDDistributionGGX(vf3;vf3;f1;" + Name 80 "normal" + Name 81 "half_vector" + Name 82 "roughness2" + Name 88 "iTDCalcF(vf3;f1;" + Name 86 "F0" + Name 87 "VdotH" + Name 94 "iTDCalcG(f1;f1;f1;" + Name 91 "NdotL" + Name 92 "NdotV" + Name 93 "k" + Name 96 "TDPBRResult" + MemberName 96(TDPBRResult) 0 "diffuse" + MemberName 96(TDPBRResult) 1 "specular" + MemberName 96(TDPBRResult) 2 "shadowStrength" + Name 107 "TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;" + Name 98 "index" + Name 99 "diffuseColor" + Name 100 "specularColor" + Name 101 "worldSpacePos" + Name 102 "normal" + Name 103 "shadowStrength" + Name 104 "shadowColor" + Name 105 "camVector" + Name 106 "roughness" + Name 122 "TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;" + Name 110 "diffuseContrib" + Name 111 "specularContrib" + Name 112 "shadowStrengthOut" + Name 113 "index" + Name 114 "diffuseColor" + Name 115 "specularColor" + Name 116 "worldSpacePos" + Name 117 "normal" + Name 118 "shadowStrength" + Name 119 "shadowColor" + Name 120 "camVector" + Name 121 "roughness" + Name 136 "TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;" + Name 125 "diffuseContrib" + Name 126 "specularContrib" + Name 127 "index" + Name 128 "diffuseColor" + Name 129 "specularColor" + Name 130 "worldSpacePos" + Name 131 "normal" + Name 132 "shadowStrength" + Name 133 "shadowColor" + Name 134 "camVector" + Name 135 "roughness" + Name 146 "TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;" + Name 139 "index" + Name 140 "diffuseColor" + Name 141 "specularColor" + Name 142 "normal" + Name 143 "camVector" + Name 144 "roughness" + Name 145 "ambientOcclusion" + Name 158 "TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;" + Name 149 "diffuseContrib" + Name 150 "specularContrib" + Name 151 "index" + Name 152 "diffuseColor" + Name 153 "specularColor" + Name 154 "normal" + Name 155 "camVector" + Name 156 "roughness" + Name 157 "ambientOcclusion" + Name 160 "TDPhongResult" + MemberName 160(TDPhongResult) 0 "diffuse" + MemberName 160(TDPhongResult) 1 "specular" + MemberName 160(TDPhongResult) 2 "specular2" + MemberName 160(TDPhongResult) 3 "shadowStrength" + Name 170 "TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;" + Name 162 "index" + Name 163 "worldSpacePos" + Name 164 "normal" + Name 165 "shadowStrength" + Name 166 "shadowColor" + Name 167 "camVector" + Name 168 "shininess" + Name 169 "shininess2" + Name 185 "TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;" + Name 173 "diffuseContrib" + Name 174 "specularContrib" + Name 175 "specularContrib2" + Name 176 "shadowStrengthOut" + Name 177 "index" + Name 178 "worldSpacePos" + Name 179 "normal" + Name 180 "shadowStrength" + Name 181 "shadowColor" + Name 182 "camVector" + Name 183 "shininess" + Name 184 "shininess2" + Name 199 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;" + Name 188 "diffuseContrib" + Name 189 "specularContrib" + Name 190 "specularContrib2" + Name 191 "index" + Name 192 "worldSpacePos" + Name 193 "normal" + Name 194 "shadowStrength" + Name 195 "shadowColor" + Name 196 "camVector" + Name 197 "shininess" + Name 198 "shininess2" + Name 211 "TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;" + Name 202 "diffuseContrib" + Name 203 "specularContrib" + Name 204 "index" + Name 205 "worldSpacePos" + Name 206 "normal" + Name 207 "shadowStrength" + Name 208 "shadowColor" + Name 209 "camVector" + Name 210 "shininess" + Name 223 "TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;" + Name 214 "diffuseContrib" + Name 215 "specularContrib" + Name 216 "specularContrib2" + Name 217 "index" + Name 218 "worldSpacePos" + Name 219 "normal" + Name 220 "camVector" + Name 221 "shininess" + Name 222 "shininess2" + Name 233 "TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;" + Name 226 "diffuseContrib" + Name 227 "specularContrib" + Name 228 "index" + Name 229 "worldSpacePos" + Name 230 "normal" + Name 231 "camVector" + Name 232 "shininess" + Name 240 "TDLighting(vf3;i1;vf3;vf3;" + Name 236 "diffuseContrib" + Name 237 "index" + Name 238 "worldSpacePos" + Name 239 "normal" + Name 249 "TDLighting(vf3;i1;vf3;vf3;f1;vf3;" + Name 243 "diffuseContrib" + Name 244 "index" + Name 245 "worldSpacePos" + Name 246 "normal" + Name 247 "shadowStrength" + Name 248 "shadowColor" + Name 255 "TDProjMap(i1;vf3;vf4;" + Name 252 "index" + Name 253 "worldSpacePos" + Name 254 "defaultColor" + Name 261 "TDFog(vf4;vf3;i1;" + Name 258 "color" + Name 259 "lightingSpacePosition" + Name 260 "cameraIndex" + Name 266 "TDFog(vf4;vf3;" + Name 264 "color" + Name 265 "lightingSpacePosition" + Name 271 "TDInstanceTexCoord(i1;vf3;" + Name 269 "index" + Name 270 "t" + Name 275 "TDInstanceActive(i1;" + Name 274 "index" + Name 281 "iTDInstanceTranslate(i1;b1;" + Name 279 "index" + Name 280 "instanceActive" + Name 285 "TDInstanceTranslate(i1;" + Name 284 "index" + Name 290 "TDInstanceRotateMat(i1;" + Name 289 "index" + Name 293 "TDInstanceScale(i1;" + Name 292 "index" + Name 296 "TDInstancePivot(i1;" + Name 295 "index" + Name 299 "TDInstanceRotTo(i1;" + Name 298 "index" + Name 302 "TDInstanceRotUp(i1;" + Name 301 "index" + Name 307 "TDInstanceMat(i1;" + Name 306 "id" + Name 310 "TDInstanceMat3(i1;" + Name 309 "id" + Name 313 "TDInstanceMat3ForNorm(i1;" + Name 312 "id" + Name 318 "TDInstanceColor(i1;vf4;" + Name 316 "index" + Name 317 "curColor" + Name 321 "TDOutputSwizzle(vf4;" + Name 320 "c" + Name 327 "TDOutputSwizzle(vu4;" + Name 326 "c" + Name 330 "outcol" + Name 333 "texCoord0" + Name 334 "Vertex" + MemberName 334(Vertex) 0 "color" + MemberName 334(Vertex) 1 "worldSpacePos" + MemberName 334(Vertex) 2 "texCoord0" + MemberName 334(Vertex) 3 "cameraIndex" + MemberName 334(Vertex) 4 "instance" + Name 336 "iVert" + Name 341 "actualTexZ" + Name 349 "instanceLoop" + Name 359 "colorMapColor" + Name 363 "sColorMap" + Name 367 "red" + Name 374 "gl_DefaultUniformBlock" + MemberName 374(gl_DefaultUniformBlock) 0 "uTDInstanceIDOffset" + MemberName 374(gl_DefaultUniformBlock) 1 "uTDNumInstances" + MemberName 374(gl_DefaultUniformBlock) 2 "uTDAlphaTestVal" + MemberName 374(gl_DefaultUniformBlock) 3 "uConstant" + MemberName 374(gl_DefaultUniformBlock) 4 "uShadowStrength" + MemberName 374(gl_DefaultUniformBlock) 5 "uShadowColor" + MemberName 374(gl_DefaultUniformBlock) 6 "uDiffuseColor" + MemberName 374(gl_DefaultUniformBlock) 7 "uAmbientColor" + Name 376 "" + Name 401 "alpha" + Name 409 "param" + Name 422 "param" + Name 429 "oFragColor" + Name 430 "param" + Name 435 "i" + Name 452 "d" + Name 456 "sTDNoiseMap" + Name 458 "gl_FragCoord" + Name 485 "gl_FrontFacing" + Name 555 "param" + Name 561 "a" + Name 563 "phi" + Name 568 "cosTheta" + Name 582 "sinTheta" + Name 588 "H" + Name 601 "upVector" + Name 612 "tangentX" + Name 617 "tangentY" + Name 621 "worldResult" + Name 639 "NdotH" + Name 645 "alpha2" + Name 649 "denom" + Name 686 "Gl" + Name 694 "Gv" + Name 708 "res" + Name 712 "res" + Name 713 "param" + Name 715 "param" + Name 717 "param" + Name 719 "param" + Name 721 "param" + Name 723 "param" + Name 725 "param" + Name 727 "param" + Name 729 "param" + Name 738 "res" + Name 739 "param" + Name 741 "param" + Name 743 "param" + Name 745 "param" + Name 747 "param" + Name 749 "param" + Name 751 "param" + Name 753 "param" + Name 755 "param" + Name 762 "res" + Name 766 "res" + Name 767 "param" + Name 769 "param" + Name 771 "param" + Name 773 "param" + Name 775 "param" + Name 777 "param" + Name 779 "param" + Name 790 "res" + Name 804 "res" + Name 822 "res" + Name 838 "res" + Name 852 "res" + Name 868 "res" + Name 882 "res" + Name 894 "res" + Name 917 "param" + Name 919 "param" + Name 921 "param" + Name 925 "coord" + Name 927 "samp" + Name 931 "sTDInstanceTexCoord" + Name 936 "v" + Name 955 "coord" + Name 957 "samp" + Name 958 "sTDInstanceT" + Name 963 "v" + Name 970 "origIndex" + Name 976 "coord" + Name 978 "samp" + Name 983 "v" + Name 1003 "coord" + Name 1005 "samp" + Name 1010 "v" + Name 1027 "v" + Name 1029 "m" + Name 1039 "v" + Name 1047 "v" + Name 1055 "v" + Name 1063 "v" + Name 1067 "instanceActive" + Name 1069 "t" + Name 1070 "param" + Name 1072 "param" + Name 1082 "m" + Name 1088 "tt" + Name 1201 "m" + Name 1205 "m" + Name 1206 "param" + Name 1216 "coord" + Name 1218 "samp" + Name 1219 "sTDInstanceColor" + Name 1224 "v" + Name 1253 "TDMatrix" + MemberName 1253(TDMatrix) 0 "world" + MemberName 1253(TDMatrix) 1 "worldInverse" + MemberName 1253(TDMatrix) 2 "worldCam" + MemberName 1253(TDMatrix) 3 "worldCamInverse" + MemberName 1253(TDMatrix) 4 "cam" + MemberName 1253(TDMatrix) 5 "camInverse" + MemberName 1253(TDMatrix) 6 "camProj" + MemberName 1253(TDMatrix) 7 "camProjInverse" + MemberName 1253(TDMatrix) 8 "proj" + MemberName 1253(TDMatrix) 9 "projInverse" + MemberName 1253(TDMatrix) 10 "worldCamProj" + MemberName 1253(TDMatrix) 11 "worldCamProjInverse" + MemberName 1253(TDMatrix) 12 "quadReproject" + MemberName 1253(TDMatrix) 13 "worldForNormals" + MemberName 1253(TDMatrix) 14 "camForNormals" + MemberName 1253(TDMatrix) 15 "worldCamForNormals" + Name 1255 "TDMatricesBlock" + MemberName 1255(TDMatricesBlock) 0 "uTDMats" + Name 1257 "" + Name 1258 "TDCameraInfo" + MemberName 1258(TDCameraInfo) 0 "nearFar" + MemberName 1258(TDCameraInfo) 1 "fog" + MemberName 1258(TDCameraInfo) 2 "fogColor" + MemberName 1258(TDCameraInfo) 3 "renderTOPCameraIndex" + Name 1260 "TDCameraInfoBlock" + MemberName 1260(TDCameraInfoBlock) 0 "uTDCamInfos" + Name 1262 "" + Name 1263 "TDGeneral" + MemberName 1263(TDGeneral) 0 "ambientColor" + MemberName 1263(TDGeneral) 1 "nearFar" + MemberName 1263(TDGeneral) 2 "viewport" + MemberName 1263(TDGeneral) 3 "viewportRes" + MemberName 1263(TDGeneral) 4 "fog" + MemberName 1263(TDGeneral) 5 "fogColor" + Name 1264 "TDGeneralBlock" + MemberName 1264(TDGeneralBlock) 0 "uTDGeneral" + Name 1266 "" + Name 1270 "sTDSineLookup" + Name 1271 "sTDWhite2D" + Name 1275 "sTDWhite3D" + Name 1276 "sTDWhite2DArray" + Name 1280 "sTDWhiteCube" + Name 1281 "TDLight" + MemberName 1281(TDLight) 0 "position" + MemberName 1281(TDLight) 1 "direction" + MemberName 1281(TDLight) 2 "diffuse" + MemberName 1281(TDLight) 3 "nearFar" + MemberName 1281(TDLight) 4 "lightSize" + MemberName 1281(TDLight) 5 "misc" + MemberName 1281(TDLight) 6 "coneLookupScaleBias" + MemberName 1281(TDLight) 7 "attenScaleBiasRoll" + MemberName 1281(TDLight) 8 "shadowMapMatrix" + MemberName 1281(TDLight) 9 "shadowMapCamMatrix" + MemberName 1281(TDLight) 10 "shadowMapRes" + MemberName 1281(TDLight) 11 "projMapMatrix" + Name 1283 "TDLightBlock" + MemberName 1283(TDLightBlock) 0 "uTDLights" + Name 1285 "" + Name 1286 "TDEnvLight" + MemberName 1286(TDEnvLight) 0 "color" + MemberName 1286(TDEnvLight) 1 "rotate" + Name 1288 "TDEnvLightBlock" + MemberName 1288(TDEnvLightBlock) 0 "uTDEnvLights" + Name 1290 "" + Name 1293 "TDEnvLightBuffer" + MemberName 1293(TDEnvLightBuffer) 0 "shCoeffs" + Name 1296 "uTDEnvLightBuffers" + MemberDecorate 334(Vertex) 3 Flat + MemberDecorate 334(Vertex) 4 Flat + Decorate 334(Vertex) Block + Decorate 336(iVert) Location 0 + Decorate 363(sColorMap) DescriptorSet 0 + Decorate 363(sColorMap) Binding 2 + MemberDecorate 374(gl_DefaultUniformBlock) 0 Offset 0 + MemberDecorate 374(gl_DefaultUniformBlock) 1 Offset 4 + MemberDecorate 374(gl_DefaultUniformBlock) 2 Offset 8 + MemberDecorate 374(gl_DefaultUniformBlock) 3 Offset 16 + MemberDecorate 374(gl_DefaultUniformBlock) 4 Offset 28 + MemberDecorate 374(gl_DefaultUniformBlock) 5 Offset 32 + MemberDecorate 374(gl_DefaultUniformBlock) 6 Offset 48 + MemberDecorate 374(gl_DefaultUniformBlock) 7 Offset 64 + Decorate 374(gl_DefaultUniformBlock) Block + Decorate 376 DescriptorSet 0 + Decorate 376 Binding 0 + Decorate 429(oFragColor) Location 0 + Decorate 456(sTDNoiseMap) DescriptorSet 0 + Decorate 456(sTDNoiseMap) Binding 3 + Decorate 458(gl_FragCoord) BuiltIn FragCoord + Decorate 485(gl_FrontFacing) BuiltIn FrontFacing + Decorate 931(sTDInstanceTexCoord) DescriptorSet 0 + Decorate 931(sTDInstanceTexCoord) Binding 16 + Decorate 958(sTDInstanceT) DescriptorSet 0 + Decorate 958(sTDInstanceT) Binding 15 + Decorate 1219(sTDInstanceColor) DescriptorSet 0 + Decorate 1219(sTDInstanceColor) Binding 17 + MemberDecorate 1253(TDMatrix) 0 ColMajor + MemberDecorate 1253(TDMatrix) 0 Offset 0 + MemberDecorate 1253(TDMatrix) 0 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 1 ColMajor + MemberDecorate 1253(TDMatrix) 1 Offset 64 + MemberDecorate 1253(TDMatrix) 1 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 2 ColMajor + MemberDecorate 1253(TDMatrix) 2 Offset 128 + MemberDecorate 1253(TDMatrix) 2 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 3 ColMajor + MemberDecorate 1253(TDMatrix) 3 Offset 192 + MemberDecorate 1253(TDMatrix) 3 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 4 ColMajor + MemberDecorate 1253(TDMatrix) 4 Offset 256 + MemberDecorate 1253(TDMatrix) 4 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 5 ColMajor + MemberDecorate 1253(TDMatrix) 5 Offset 320 + MemberDecorate 1253(TDMatrix) 5 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 6 ColMajor + MemberDecorate 1253(TDMatrix) 6 Offset 384 + MemberDecorate 1253(TDMatrix) 6 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 7 ColMajor + MemberDecorate 1253(TDMatrix) 7 Offset 448 + MemberDecorate 1253(TDMatrix) 7 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 8 ColMajor + MemberDecorate 1253(TDMatrix) 8 Offset 512 + MemberDecorate 1253(TDMatrix) 8 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 9 ColMajor + MemberDecorate 1253(TDMatrix) 9 Offset 576 + MemberDecorate 1253(TDMatrix) 9 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 10 ColMajor + MemberDecorate 1253(TDMatrix) 10 Offset 640 + MemberDecorate 1253(TDMatrix) 10 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 11 ColMajor + MemberDecorate 1253(TDMatrix) 11 Offset 704 + MemberDecorate 1253(TDMatrix) 11 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 12 ColMajor + MemberDecorate 1253(TDMatrix) 12 Offset 768 + MemberDecorate 1253(TDMatrix) 12 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 13 ColMajor + MemberDecorate 1253(TDMatrix) 13 Offset 832 + MemberDecorate 1253(TDMatrix) 13 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 14 ColMajor + MemberDecorate 1253(TDMatrix) 14 Offset 880 + MemberDecorate 1253(TDMatrix) 14 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 15 ColMajor + MemberDecorate 1253(TDMatrix) 15 Offset 928 + MemberDecorate 1253(TDMatrix) 15 MatrixStride 16 + Decorate 1254 ArrayStride 976 + MemberDecorate 1255(TDMatricesBlock) 0 Offset 0 + Decorate 1255(TDMatricesBlock) Block + Decorate 1257 DescriptorSet 0 + Decorate 1257 Binding 1 + MemberDecorate 1258(TDCameraInfo) 0 Offset 0 + MemberDecorate 1258(TDCameraInfo) 1 Offset 16 + MemberDecorate 1258(TDCameraInfo) 2 Offset 32 + MemberDecorate 1258(TDCameraInfo) 3 Offset 48 + Decorate 1259 ArrayStride 64 + MemberDecorate 1260(TDCameraInfoBlock) 0 Offset 0 + Decorate 1260(TDCameraInfoBlock) Block + Decorate 1262 DescriptorSet 0 + Decorate 1262 Binding 0 + MemberDecorate 1263(TDGeneral) 0 Offset 0 + MemberDecorate 1263(TDGeneral) 1 Offset 16 + MemberDecorate 1263(TDGeneral) 2 Offset 32 + MemberDecorate 1263(TDGeneral) 3 Offset 48 + MemberDecorate 1263(TDGeneral) 4 Offset 64 + MemberDecorate 1263(TDGeneral) 5 Offset 80 + MemberDecorate 1264(TDGeneralBlock) 0 Offset 0 + Decorate 1264(TDGeneralBlock) Block + Decorate 1266 DescriptorSet 0 + Decorate 1266 Binding 0 + Decorate 1270(sTDSineLookup) DescriptorSet 0 + Decorate 1270(sTDSineLookup) Binding 0 + Decorate 1271(sTDWhite2D) DescriptorSet 0 + Decorate 1271(sTDWhite2D) Binding 0 + Decorate 1275(sTDWhite3D) DescriptorSet 0 + Decorate 1275(sTDWhite3D) Binding 0 + Decorate 1276(sTDWhite2DArray) DescriptorSet 0 + Decorate 1276(sTDWhite2DArray) Binding 0 + Decorate 1280(sTDWhiteCube) DescriptorSet 0 + Decorate 1280(sTDWhiteCube) Binding 0 + MemberDecorate 1281(TDLight) 0 Offset 0 + MemberDecorate 1281(TDLight) 1 Offset 16 + MemberDecorate 1281(TDLight) 2 Offset 32 + MemberDecorate 1281(TDLight) 3 Offset 48 + MemberDecorate 1281(TDLight) 4 Offset 64 + MemberDecorate 1281(TDLight) 5 Offset 80 + MemberDecorate 1281(TDLight) 6 Offset 96 + MemberDecorate 1281(TDLight) 7 Offset 112 + MemberDecorate 1281(TDLight) 8 ColMajor + MemberDecorate 1281(TDLight) 8 Offset 128 + MemberDecorate 1281(TDLight) 8 MatrixStride 16 + MemberDecorate 1281(TDLight) 9 ColMajor + MemberDecorate 1281(TDLight) 9 Offset 192 + MemberDecorate 1281(TDLight) 9 MatrixStride 16 + MemberDecorate 1281(TDLight) 10 Offset 256 + MemberDecorate 1281(TDLight) 11 ColMajor + MemberDecorate 1281(TDLight) 11 Offset 272 + MemberDecorate 1281(TDLight) 11 MatrixStride 16 + Decorate 1282 ArrayStride 336 + MemberDecorate 1283(TDLightBlock) 0 Offset 0 + Decorate 1283(TDLightBlock) Block + Decorate 1285 DescriptorSet 0 + Decorate 1285 Binding 0 + MemberDecorate 1286(TDEnvLight) 0 Offset 0 + MemberDecorate 1286(TDEnvLight) 1 ColMajor + MemberDecorate 1286(TDEnvLight) 1 Offset 16 + MemberDecorate 1286(TDEnvLight) 1 MatrixStride 16 + Decorate 1287 ArrayStride 64 + MemberDecorate 1288(TDEnvLightBlock) 0 Offset 0 + Decorate 1288(TDEnvLightBlock) Block + Decorate 1290 DescriptorSet 0 + Decorate 1290 Binding 0 + Decorate 1292 ArrayStride 16 + MemberDecorate 1293(TDEnvLightBuffer) 0 Restrict + MemberDecorate 1293(TDEnvLightBuffer) 0 NonWritable + MemberDecorate 1293(TDEnvLightBuffer) 0 Offset 0 + Decorate 1293(TDEnvLightBuffer) BufferBlock + Decorate 1296(uTDEnvLightBuffers) DescriptorSet 0 + Decorate 1296(uTDEnvLightBuffers) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeFunction 7(fvec4) 8(ptr) + 20: TypeVector 6(float) 3 + 21: TypePointer Function 20(fvec3) + 22: TypeBool + 23: TypeFunction 22(bool) 21(ptr) 21(ptr) + 28: TypeInt 32 1 + 29: TypePointer Function 28(int) + 30: TypePointer Function 6(float) + 31: TypeFunction 6(float) 29(ptr) 30(ptr) + 36: TypeFunction 2 30(ptr) + 40: TypeFunction 6(float) 29(ptr) 21(ptr) + 45: TypeFunction 6(float) 29(ptr) 21(ptr) 29(ptr) 29(ptr) + 60: TypeInt 32 0 + 61: TypePointer Function 60(int) + 62: TypeFunction 6(float) 61(ptr) + 66: TypeVector 6(float) 2 + 67: TypeFunction 66(fvec2) 61(ptr) 61(ptr) + 72: TypePointer Function 66(fvec2) + 73: TypeFunction 20(fvec3) 72(ptr) 30(ptr) 21(ptr) + 79: TypeFunction 6(float) 21(ptr) 21(ptr) 30(ptr) + 85: TypeFunction 20(fvec3) 21(ptr) 30(ptr) + 90: TypeFunction 6(float) 30(ptr) 30(ptr) 30(ptr) + 96(TDPBRResult): TypeStruct 20(fvec3) 20(fvec3) 6(float) + 97: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 109: TypeFunction 2 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 124: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 138: TypeFunction 96(TDPBRResult) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 148: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) +160(TDPhongResult): TypeStruct 20(fvec3) 20(fvec3) 20(fvec3) 6(float) + 161: TypeFunction 160(TDPhongResult) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 172: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 30(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 187: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 201: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) 21(ptr) 30(ptr) + 213: TypeFunction 2 21(ptr) 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) 30(ptr) + 225: TypeFunction 2 21(ptr) 21(ptr) 29(ptr) 21(ptr) 21(ptr) 21(ptr) 30(ptr) + 235: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr) + 242: TypeFunction 2 21(ptr) 29(ptr) 21(ptr) 21(ptr) 30(ptr) 21(ptr) + 251: TypeFunction 7(fvec4) 29(ptr) 21(ptr) 8(ptr) + 257: TypeFunction 7(fvec4) 8(ptr) 21(ptr) 29(ptr) + 263: TypeFunction 7(fvec4) 8(ptr) 21(ptr) + 268: TypeFunction 20(fvec3) 29(ptr) 21(ptr) + 273: TypeFunction 22(bool) 29(ptr) + 277: TypePointer Function 22(bool) + 278: TypeFunction 20(fvec3) 29(ptr) 277(ptr) + 283: TypeFunction 20(fvec3) 29(ptr) + 287: TypeMatrix 20(fvec3) 3 + 288: TypeFunction 287 29(ptr) + 304: TypeMatrix 7(fvec4) 4 + 305: TypeFunction 304 29(ptr) + 315: TypeFunction 7(fvec4) 29(ptr) 8(ptr) + 323: TypeVector 60(int) 4 + 324: TypePointer Function 323(ivec4) + 325: TypeFunction 323(ivec4) 324(ptr) + 331: 6(float) Constant 0 + 332: 7(fvec4) ConstantComposite 331 331 331 331 + 334(Vertex): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 28(int) 28(int) + 335: TypePointer Input 334(Vertex) + 336(iVert): 335(ptr) Variable Input + 337: 28(int) Constant 2 + 338: TypePointer Input 20(fvec3) + 342: 60(int) Constant 2 + 347: 6(float) Constant 1157627904 + 353: 28(int) Constant 2048 + 360: TypeImage 6(float) 2D array sampled format:Unknown + 361: TypeSampledImage 360 + 362: TypePointer UniformConstant 361 + 363(sColorMap): 362(ptr) Variable UniformConstant +374(gl_DefaultUniformBlock): TypeStruct 28(int) 28(int) 6(float) 20(fvec3) 6(float) 20(fvec3) 7(fvec4) 7(fvec4) + 375: TypePointer Uniform 374(gl_DefaultUniformBlock) + 376: 375(ptr) Variable Uniform + 377: 28(int) Constant 3 + 378: TypePointer Uniform 20(fvec3) + 381: 28(int) Constant 0 + 382: TypePointer Input 7(fvec4) + 390: 60(int) Constant 0 + 393: 60(int) Constant 1 + 402: 60(int) Constant 3 + 403: TypePointer Input 6(float) + 427: TypeArray 7(fvec4) 393 + 428: TypePointer Output 427 + 429(oFragColor): 428(ptr) Variable Output + 433: TypePointer Output 7(fvec4) + 436: 28(int) Constant 1 + 453: TypeImage 6(float) 2D sampled format:Unknown + 454: TypeSampledImage 453 + 455: TypePointer UniformConstant 454 +456(sTDNoiseMap): 455(ptr) Variable UniformConstant +458(gl_FragCoord): 382(ptr) Variable Input + 461: 6(float) Constant 1132462080 + 466: 6(float) Constant 1056964608 + 484: TypePointer Input 22(bool) +485(gl_FrontFacing): 484(ptr) Variable Input + 489: 6(float) Constant 1065353216 + 501: 60(int) Constant 16 + 507: 60(int) Constant 1431655765 + 511: 60(int) Constant 2863311530 + 516: 60(int) Constant 858993459 + 520: 60(int) Constant 3435973836 + 525: 60(int) Constant 252645135 + 527: 60(int) Constant 4 + 530: 60(int) Constant 4042322160 + 535: 60(int) Constant 16711935 + 537: 60(int) Constant 8 + 540: 60(int) Constant 4278255360 + 546: 6(float) Constant 796917760 + 564: 6(float) Constant 1086918619 + 605: 6(float) Constant 1065336439 + 607: 20(fvec3) ConstantComposite 331 331 489 + 608: 20(fvec3) ConstantComposite 489 331 331 + 609: TypeVector 22(bool) 3 + 643: 6(float) Constant 897988541 + 657: 6(float) Constant 841731191 + 661: 6(float) Constant 1078530011 + 670: 20(fvec3) ConstantComposite 489 489 489 + 673: 6(float) Constant 1073741824 + 674: 6(float) Constant 3232874585 + 677: 6(float) Constant 1088386572 + 707: TypePointer Function 96(TDPBRResult) + 789: TypePointer Function 160(TDPhongResult) + 791: 20(fvec3) ConstantComposite 331 331 331 + 928: TypeImage 6(float) Buffer sampled format:Unknown + 929: TypeSampledImage 928 + 930: TypePointer UniformConstant 929 +931(sTDInstanceTexCoord): 930(ptr) Variable UniformConstant + 950: TypePointer Uniform 28(int) +958(sTDInstanceT): 930(ptr) Variable UniformConstant + 1028: TypePointer Function 287 + 1030: 20(fvec3) ConstantComposite 331 489 331 + 1031: 287 ConstantComposite 608 1030 607 + 1068: 22(bool) ConstantTrue + 1079: 304 ConstantComposite 332 332 332 332 + 1081: TypePointer Function 304 + 1083: 7(fvec4) ConstantComposite 489 331 331 331 + 1084: 7(fvec4) ConstantComposite 331 489 331 331 + 1085: 7(fvec4) ConstantComposite 331 331 489 331 + 1086: 7(fvec4) ConstantComposite 331 331 331 489 + 1087: 304 ConstantComposite 1083 1084 1085 1086 +1219(sTDInstanceColor): 930(ptr) Variable UniformConstant + 1253(TDMatrix): TypeStruct 304 304 304 304 304 304 304 304 304 304 304 304 304 287 287 287 + 1254: TypeArray 1253(TDMatrix) 393 +1255(TDMatricesBlock): TypeStruct 1254 + 1256: TypePointer Uniform 1255(TDMatricesBlock) + 1257: 1256(ptr) Variable Uniform +1258(TDCameraInfo): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 28(int) + 1259: TypeArray 1258(TDCameraInfo) 393 +1260(TDCameraInfoBlock): TypeStruct 1259 + 1261: TypePointer Uniform 1260(TDCameraInfoBlock) + 1262: 1261(ptr) Variable Uniform + 1263(TDGeneral): TypeStruct 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) +1264(TDGeneralBlock): TypeStruct 1263(TDGeneral) + 1265: TypePointer Uniform 1264(TDGeneralBlock) + 1266: 1265(ptr) Variable Uniform + 1267: TypeImage 6(float) 1D sampled format:Unknown + 1268: TypeSampledImage 1267 + 1269: TypePointer UniformConstant 1268 +1270(sTDSineLookup): 1269(ptr) Variable UniformConstant +1271(sTDWhite2D): 455(ptr) Variable UniformConstant + 1272: TypeImage 6(float) 3D sampled format:Unknown + 1273: TypeSampledImage 1272 + 1274: TypePointer UniformConstant 1273 +1275(sTDWhite3D): 1274(ptr) Variable UniformConstant +1276(sTDWhite2DArray): 362(ptr) Variable UniformConstant + 1277: TypeImage 6(float) Cube sampled format:Unknown + 1278: TypeSampledImage 1277 + 1279: TypePointer UniformConstant 1278 +1280(sTDWhiteCube): 1279(ptr) Variable UniformConstant + 1281(TDLight): TypeStruct 7(fvec4) 20(fvec3) 20(fvec3) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 7(fvec4) 304 304 7(fvec4) 304 + 1282: TypeArray 1281(TDLight) 393 +1283(TDLightBlock): TypeStruct 1282 + 1284: TypePointer Uniform 1283(TDLightBlock) + 1285: 1284(ptr) Variable Uniform +1286(TDEnvLight): TypeStruct 20(fvec3) 287 + 1287: TypeArray 1286(TDEnvLight) 393 +1288(TDEnvLightBlock): TypeStruct 1287 + 1289: TypePointer Uniform 1288(TDEnvLightBlock) + 1290: 1289(ptr) Variable Uniform + 1291: 60(int) Constant 9 + 1292: TypeArray 20(fvec3) 1291 +1293(TDEnvLightBuffer): TypeStruct 1292 + 1294: TypeArray 1293(TDEnvLightBuffer) 393 + 1295: TypePointer Uniform 1294 +1296(uTDEnvLightBuffers): 1295(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 330(outcol): 8(ptr) Variable Function + 333(texCoord0): 21(ptr) Variable Function + 341(actualTexZ): 30(ptr) Variable Function +349(instanceLoop): 30(ptr) Variable Function +359(colorMapColor): 8(ptr) Variable Function + 367(red): 30(ptr) Variable Function + 401(alpha): 30(ptr) Variable Function + 409(param): 8(ptr) Variable Function + 422(param): 30(ptr) Variable Function + 430(param): 8(ptr) Variable Function + 435(i): 29(ptr) Variable Function + 329: 2 FunctionCall 15(TDCheckDiscard() + Store 330(outcol) 332 + 339: 338(ptr) AccessChain 336(iVert) 337 + 340: 20(fvec3) Load 339 + Store 333(texCoord0) 340 + 343: 30(ptr) AccessChain 333(texCoord0) 342 + 344: 6(float) Load 343 + 345: 28(int) ConvertFToS 344 + 346: 6(float) ConvertSToF 345 + 348: 6(float) FMod 346 347 + Store 341(actualTexZ) 348 + 350: 30(ptr) AccessChain 333(texCoord0) 342 + 351: 6(float) Load 350 + 352: 28(int) ConvertFToS 351 + 354: 28(int) SDiv 352 353 + 355: 6(float) ConvertSToF 354 + 356: 6(float) ExtInst 1(GLSL.std.450) 8(Floor) 355 + Store 349(instanceLoop) 356 + 357: 6(float) Load 341(actualTexZ) + 358: 30(ptr) AccessChain 333(texCoord0) 342 + Store 358 357 + 364: 361 Load 363(sColorMap) + 365: 20(fvec3) Load 333(texCoord0) + 366: 7(fvec4) ImageSampleImplicitLod 364 365 + Store 359(colorMapColor) 366 + 368: 6(float) Load 349(instanceLoop) + 369: 28(int) ConvertFToS 368 + 370: 30(ptr) AccessChain 359(colorMapColor) 369 + 371: 6(float) Load 370 + Store 367(red) 371 + 372: 6(float) Load 367(red) + 373: 7(fvec4) CompositeConstruct 372 372 372 372 + Store 359(colorMapColor) 373 + 379: 378(ptr) AccessChain 376 377 + 380: 20(fvec3) Load 379 + 383: 382(ptr) AccessChain 336(iVert) 381 + 384: 7(fvec4) Load 383 + 385: 20(fvec3) VectorShuffle 384 384 0 1 2 + 386: 20(fvec3) FMul 380 385 + 387: 7(fvec4) Load 330(outcol) + 388: 20(fvec3) VectorShuffle 387 387 0 1 2 + 389: 20(fvec3) FAdd 388 386 + 391: 30(ptr) AccessChain 330(outcol) 390 + 392: 6(float) CompositeExtract 389 0 + Store 391 392 + 394: 30(ptr) AccessChain 330(outcol) 393 + 395: 6(float) CompositeExtract 389 1 + Store 394 395 + 396: 30(ptr) AccessChain 330(outcol) 342 + 397: 6(float) CompositeExtract 389 2 + Store 396 397 + 398: 7(fvec4) Load 359(colorMapColor) + 399: 7(fvec4) Load 330(outcol) + 400: 7(fvec4) FMul 399 398 + Store 330(outcol) 400 + 404: 403(ptr) AccessChain 336(iVert) 381 402 + 405: 6(float) Load 404 + 406: 30(ptr) AccessChain 359(colorMapColor) 402 + 407: 6(float) Load 406 + 408: 6(float) FMul 405 407 + Store 401(alpha) 408 + 410: 7(fvec4) Load 330(outcol) + Store 409(param) 410 + 411: 7(fvec4) FunctionCall 18(TDDither(vf4;) 409(param) + Store 330(outcol) 411 + 412: 6(float) Load 401(alpha) + 413: 7(fvec4) Load 330(outcol) + 414: 20(fvec3) VectorShuffle 413 413 0 1 2 + 415: 20(fvec3) VectorTimesScalar 414 412 + 416: 30(ptr) AccessChain 330(outcol) 390 + 417: 6(float) CompositeExtract 415 0 + Store 416 417 + 418: 30(ptr) AccessChain 330(outcol) 393 + 419: 6(float) CompositeExtract 415 1 + Store 418 419 + 420: 30(ptr) AccessChain 330(outcol) 342 + 421: 6(float) CompositeExtract 415 2 + Store 420 421 + 423: 6(float) Load 401(alpha) + Store 422(param) 423 + 424: 2 FunctionCall 38(TDAlphaTest(f1;) 422(param) + 425: 6(float) Load 401(alpha) + 426: 30(ptr) AccessChain 330(outcol) 402 + Store 426 425 + 431: 7(fvec4) Load 330(outcol) + Store 430(param) 431 + 432: 7(fvec4) FunctionCall 321(TDOutputSwizzle(vf4;) 430(param) + 434: 433(ptr) AccessChain 429(oFragColor) 381 + Store 434 432 + Store 435(i) 436 + Branch 437 + 437: Label + LoopMerge 439 440 None + Branch 441 + 441: Label + 442: 28(int) Load 435(i) + 443: 22(bool) SLessThan 442 436 + BranchConditional 443 438 439 + 438: Label + 444: 28(int) Load 435(i) + 445: 433(ptr) AccessChain 429(oFragColor) 444 + Store 445 332 + Branch 440 + 440: Label + 446: 28(int) Load 435(i) + 447: 28(int) IAdd 446 436 + Store 435(i) 447 + Branch 437 + 439: Label + Return + FunctionEnd +11(TDColor(vf4;): 7(fvec4) Function None 9 + 10(color): 8(ptr) FunctionParameter + 12: Label + 448: 7(fvec4) Load 10(color) + ReturnValue 448 + FunctionEnd +13(TDCheckOrderIndTrans(): 2 Function None 3 + 14: Label + Return + FunctionEnd +15(TDCheckDiscard(): 2 Function None 3 + 16: Label + 451: 2 FunctionCall 13(TDCheckOrderIndTrans() + Return + FunctionEnd +18(TDDither(vf4;): 7(fvec4) Function None 9 + 17(color): 8(ptr) FunctionParameter + 19: Label + 452(d): 30(ptr) Variable Function + 457: 454 Load 456(sTDNoiseMap) + 459: 7(fvec4) Load 458(gl_FragCoord) + 460: 66(fvec2) VectorShuffle 459 459 0 1 + 462: 66(fvec2) CompositeConstruct 461 461 + 463: 66(fvec2) FDiv 460 462 + 464: 7(fvec4) ImageSampleImplicitLod 457 463 + 465: 6(float) CompositeExtract 464 0 + Store 452(d) 465 + 467: 6(float) Load 452(d) + 468: 6(float) FSub 467 466 + Store 452(d) 468 + 469: 6(float) Load 452(d) + 470: 6(float) FDiv 469 461 + Store 452(d) 470 + 471: 7(fvec4) Load 17(color) + 472: 20(fvec3) VectorShuffle 471 471 0 1 2 + 473: 6(float) Load 452(d) + 474: 20(fvec3) CompositeConstruct 473 473 473 + 475: 20(fvec3) FAdd 472 474 + 476: 30(ptr) AccessChain 17(color) 402 + 477: 6(float) Load 476 + 478: 6(float) CompositeExtract 475 0 + 479: 6(float) CompositeExtract 475 1 + 480: 6(float) CompositeExtract 475 2 + 481: 7(fvec4) CompositeConstruct 478 479 480 477 + ReturnValue 481 + FunctionEnd +26(TDFrontFacing(vf3;vf3;): 22(bool) Function None 23 + 24(pos): 21(ptr) FunctionParameter + 25(normal): 21(ptr) FunctionParameter + 27: Label + 486: 22(bool) Load 485(gl_FrontFacing) + ReturnValue 486 + FunctionEnd +34(TDAttenuateLight(i1;f1;): 6(float) Function None 31 + 32(index): 29(ptr) FunctionParameter + 33(lightDist): 30(ptr) FunctionParameter + 35: Label + ReturnValue 489 + FunctionEnd +38(TDAlphaTest(f1;): 2 Function None 36 + 37(alpha): 30(ptr) FunctionParameter + 39: Label + Return + FunctionEnd +43(TDHardShadow(i1;vf3;): 6(float) Function None 40 + 41(lightIndex): 29(ptr) FunctionParameter +42(worldSpacePos): 21(ptr) FunctionParameter + 44: Label + ReturnValue 331 + FunctionEnd +50(TDSoftShadow(i1;vf3;i1;i1;): 6(float) Function None 45 + 46(lightIndex): 29(ptr) FunctionParameter +47(worldSpacePos): 21(ptr) FunctionParameter + 48(samples): 29(ptr) FunctionParameter + 49(steps): 29(ptr) FunctionParameter + 51: Label + ReturnValue 331 + FunctionEnd +54(TDSoftShadow(i1;vf3;): 6(float) Function None 40 + 52(lightIndex): 29(ptr) FunctionParameter +53(worldSpacePos): 21(ptr) FunctionParameter + 55: Label + ReturnValue 331 + FunctionEnd +58(TDShadow(i1;vf3;): 6(float) Function None 40 + 56(lightIndex): 29(ptr) FunctionParameter +57(worldSpacePos): 21(ptr) FunctionParameter + 59: Label + ReturnValue 331 + FunctionEnd +64(iTDRadicalInverse_VdC(u1;): 6(float) Function None 62 + 63(bits): 61(ptr) FunctionParameter + 65: Label + 500: 60(int) Load 63(bits) + 502: 60(int) ShiftLeftLogical 500 501 + 503: 60(int) Load 63(bits) + 504: 60(int) ShiftRightLogical 503 501 + 505: 60(int) BitwiseOr 502 504 + Store 63(bits) 505 + 506: 60(int) Load 63(bits) + 508: 60(int) BitwiseAnd 506 507 + 509: 60(int) ShiftLeftLogical 508 393 + 510: 60(int) Load 63(bits) + 512: 60(int) BitwiseAnd 510 511 + 513: 60(int) ShiftRightLogical 512 393 + 514: 60(int) BitwiseOr 509 513 + Store 63(bits) 514 + 515: 60(int) Load 63(bits) + 517: 60(int) BitwiseAnd 515 516 + 518: 60(int) ShiftLeftLogical 517 342 + 519: 60(int) Load 63(bits) + 521: 60(int) BitwiseAnd 519 520 + 522: 60(int) ShiftRightLogical 521 342 + 523: 60(int) BitwiseOr 518 522 + Store 63(bits) 523 + 524: 60(int) Load 63(bits) + 526: 60(int) BitwiseAnd 524 525 + 528: 60(int) ShiftLeftLogical 526 527 + 529: 60(int) Load 63(bits) + 531: 60(int) BitwiseAnd 529 530 + 532: 60(int) ShiftRightLogical 531 527 + 533: 60(int) BitwiseOr 528 532 + Store 63(bits) 533 + 534: 60(int) Load 63(bits) + 536: 60(int) BitwiseAnd 534 535 + 538: 60(int) ShiftLeftLogical 536 537 + 539: 60(int) Load 63(bits) + 541: 60(int) BitwiseAnd 539 540 + 542: 60(int) ShiftRightLogical 541 537 + 543: 60(int) BitwiseOr 538 542 + Store 63(bits) 543 + 544: 60(int) Load 63(bits) + 545: 6(float) ConvertUToF 544 + 547: 6(float) FMul 545 546 + ReturnValue 547 + FunctionEnd +70(iTDHammersley(u1;u1;): 66(fvec2) Function None 67 + 68(i): 61(ptr) FunctionParameter + 69(N): 61(ptr) FunctionParameter + 71: Label + 555(param): 61(ptr) Variable Function + 550: 60(int) Load 68(i) + 551: 6(float) ConvertUToF 550 + 552: 60(int) Load 69(N) + 553: 6(float) ConvertUToF 552 + 554: 6(float) FDiv 551 553 + 556: 60(int) Load 68(i) + Store 555(param) 556 + 557: 6(float) FunctionCall 64(iTDRadicalInverse_VdC(u1;) 555(param) + 558: 66(fvec2) CompositeConstruct 554 557 + ReturnValue 558 + FunctionEnd +77(iTDImportanceSampleGGX(vf2;f1;vf3;): 20(fvec3) Function None 73 + 74(Xi): 72(ptr) FunctionParameter + 75(roughness2): 30(ptr) FunctionParameter + 76(N): 21(ptr) FunctionParameter + 78: Label + 561(a): 30(ptr) Variable Function + 563(phi): 30(ptr) Variable Function + 568(cosTheta): 30(ptr) Variable Function + 582(sinTheta): 30(ptr) Variable Function + 588(H): 21(ptr) Variable Function + 601(upVector): 21(ptr) Variable Function + 612(tangentX): 21(ptr) Variable Function + 617(tangentY): 21(ptr) Variable Function +621(worldResult): 21(ptr) Variable Function + 562: 6(float) Load 75(roughness2) + Store 561(a) 562 + 565: 30(ptr) AccessChain 74(Xi) 390 + 566: 6(float) Load 565 + 567: 6(float) FMul 564 566 + Store 563(phi) 567 + 569: 30(ptr) AccessChain 74(Xi) 393 + 570: 6(float) Load 569 + 571: 6(float) FSub 489 570 + 572: 6(float) Load 561(a) + 573: 6(float) Load 561(a) + 574: 6(float) FMul 572 573 + 575: 6(float) FSub 574 489 + 576: 30(ptr) AccessChain 74(Xi) 393 + 577: 6(float) Load 576 + 578: 6(float) FMul 575 577 + 579: 6(float) FAdd 489 578 + 580: 6(float) FDiv 571 579 + 581: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 580 + Store 568(cosTheta) 581 + 583: 6(float) Load 568(cosTheta) + 584: 6(float) Load 568(cosTheta) + 585: 6(float) FMul 583 584 + 586: 6(float) FSub 489 585 + 587: 6(float) ExtInst 1(GLSL.std.450) 31(Sqrt) 586 + Store 582(sinTheta) 587 + 589: 6(float) Load 582(sinTheta) + 590: 6(float) Load 563(phi) + 591: 6(float) ExtInst 1(GLSL.std.450) 14(Cos) 590 + 592: 6(float) FMul 589 591 + 593: 30(ptr) AccessChain 588(H) 390 + Store 593 592 + 594: 6(float) Load 582(sinTheta) + 595: 6(float) Load 563(phi) + 596: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 595 + 597: 6(float) FMul 594 596 + 598: 30(ptr) AccessChain 588(H) 393 + Store 598 597 + 599: 6(float) Load 568(cosTheta) + 600: 30(ptr) AccessChain 588(H) 342 + Store 600 599 + 602: 30(ptr) AccessChain 76(N) 342 + 603: 6(float) Load 602 + 604: 6(float) ExtInst 1(GLSL.std.450) 4(FAbs) 603 + 606: 22(bool) FOrdLessThan 604 605 + 610: 609(bvec3) CompositeConstruct 606 606 606 + 611: 20(fvec3) Select 610 607 608 + Store 601(upVector) 611 + 613: 20(fvec3) Load 601(upVector) + 614: 20(fvec3) Load 76(N) + 615: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 613 614 + 616: 20(fvec3) ExtInst 1(GLSL.std.450) 69(Normalize) 615 + Store 612(tangentX) 616 + 618: 20(fvec3) Load 76(N) + 619: 20(fvec3) Load 612(tangentX) + 620: 20(fvec3) ExtInst 1(GLSL.std.450) 68(Cross) 618 619 + Store 617(tangentY) 620 + 622: 20(fvec3) Load 612(tangentX) + 623: 30(ptr) AccessChain 588(H) 390 + 624: 6(float) Load 623 + 625: 20(fvec3) VectorTimesScalar 622 624 + 626: 20(fvec3) Load 617(tangentY) + 627: 30(ptr) AccessChain 588(H) 393 + 628: 6(float) Load 627 + 629: 20(fvec3) VectorTimesScalar 626 628 + 630: 20(fvec3) FAdd 625 629 + 631: 20(fvec3) Load 76(N) + 632: 30(ptr) AccessChain 588(H) 342 + 633: 6(float) Load 632 + 634: 20(fvec3) VectorTimesScalar 631 633 + 635: 20(fvec3) FAdd 630 634 + Store 621(worldResult) 635 + 636: 20(fvec3) Load 621(worldResult) + ReturnValue 636 + FunctionEnd +83(iTDDistributionGGX(vf3;vf3;f1;): 6(float) Function None 79 + 80(normal): 21(ptr) FunctionParameter + 81(half_vector): 21(ptr) FunctionParameter + 82(roughness2): 30(ptr) FunctionParameter + 84: Label + 639(NdotH): 30(ptr) Variable Function + 645(alpha2): 30(ptr) Variable Function + 649(denom): 30(ptr) Variable Function + 640: 20(fvec3) Load 80(normal) + 641: 20(fvec3) Load 81(half_vector) + 642: 6(float) Dot 640 641 + 644: 6(float) ExtInst 1(GLSL.std.450) 43(FClamp) 642 643 489 + Store 639(NdotH) 644 + 646: 6(float) Load 82(roughness2) + 647: 6(float) Load 82(roughness2) + 648: 6(float) FMul 646 647 + Store 645(alpha2) 648 + 650: 6(float) Load 639(NdotH) + 651: 6(float) Load 639(NdotH) + 652: 6(float) FMul 650 651 + 653: 6(float) Load 645(alpha2) + 654: 6(float) FSub 653 489 + 655: 6(float) FMul 652 654 + 656: 6(float) FAdd 655 489 + Store 649(denom) 656 + 658: 6(float) Load 649(denom) + 659: 6(float) ExtInst 1(GLSL.std.450) 40(FMax) 657 658 + Store 649(denom) 659 + 660: 6(float) Load 645(alpha2) + 662: 6(float) Load 649(denom) + 663: 6(float) FMul 661 662 + 664: 6(float) Load 649(denom) + 665: 6(float) FMul 663 664 + 666: 6(float) FDiv 660 665 + ReturnValue 666 + FunctionEnd +88(iTDCalcF(vf3;f1;): 20(fvec3) Function None 85 + 86(F0): 21(ptr) FunctionParameter + 87(VdotH): 30(ptr) FunctionParameter + 89: Label + 669: 20(fvec3) Load 86(F0) + 671: 20(fvec3) Load 86(F0) + 672: 20(fvec3) FSub 670 671 + 675: 6(float) Load 87(VdotH) + 676: 6(float) FMul 674 675 + 678: 6(float) FSub 676 677 + 679: 6(float) Load 87(VdotH) + 680: 6(float) FMul 678 679 + 681: 6(float) ExtInst 1(GLSL.std.450) 26(Pow) 673 680 + 682: 20(fvec3) VectorTimesScalar 672 681 + 683: 20(fvec3) FAdd 669 682 + ReturnValue 683 + FunctionEnd +94(iTDCalcG(f1;f1;f1;): 6(float) Function None 90 + 91(NdotL): 30(ptr) FunctionParameter + 92(NdotV): 30(ptr) FunctionParameter + 93(k): 30(ptr) FunctionParameter + 95: Label + 686(Gl): 30(ptr) Variable Function + 694(Gv): 30(ptr) Variable Function + 687: 6(float) Load 91(NdotL) + 688: 6(float) Load 93(k) + 689: 6(float) FSub 489 688 + 690: 6(float) FMul 687 689 + 691: 6(float) Load 93(k) + 692: 6(float) FAdd 690 691 + 693: 6(float) FDiv 489 692 + Store 686(Gl) 693 + 695: 6(float) Load 92(NdotV) + 696: 6(float) Load 93(k) + 697: 6(float) FSub 489 696 + 698: 6(float) FMul 695 697 + 699: 6(float) Load 93(k) + 700: 6(float) FAdd 698 699 + 701: 6(float) FDiv 489 700 + Store 694(Gv) 701 + 702: 6(float) Load 686(Gl) + 703: 6(float) Load 694(Gv) + 704: 6(float) FMul 702 703 + ReturnValue 704 + FunctionEnd +107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;):96(TDPBRResult) Function None 97 + 98(index): 29(ptr) FunctionParameter +99(diffuseColor): 21(ptr) FunctionParameter +100(specularColor): 21(ptr) FunctionParameter +101(worldSpacePos): 21(ptr) FunctionParameter + 102(normal): 21(ptr) FunctionParameter +103(shadowStrength): 30(ptr) FunctionParameter +104(shadowColor): 21(ptr) FunctionParameter + 105(camVector): 21(ptr) FunctionParameter + 106(roughness): 30(ptr) FunctionParameter + 108: Label + 708(res): 707(ptr) Variable Function + 709:96(TDPBRResult) Load 708(res) + ReturnValue 709 + FunctionEnd +122(TDLightingPBR(vf3;vf3;f1;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 109 +110(diffuseContrib): 21(ptr) FunctionParameter +111(specularContrib): 21(ptr) FunctionParameter +112(shadowStrengthOut): 30(ptr) FunctionParameter + 113(index): 29(ptr) FunctionParameter +114(diffuseColor): 21(ptr) FunctionParameter +115(specularColor): 21(ptr) FunctionParameter +116(worldSpacePos): 21(ptr) FunctionParameter + 117(normal): 21(ptr) FunctionParameter +118(shadowStrength): 30(ptr) FunctionParameter +119(shadowColor): 21(ptr) FunctionParameter + 120(camVector): 21(ptr) FunctionParameter + 121(roughness): 30(ptr) FunctionParameter + 123: Label + 712(res): 707(ptr) Variable Function + 713(param): 29(ptr) Variable Function + 715(param): 21(ptr) Variable Function + 717(param): 21(ptr) Variable Function + 719(param): 21(ptr) Variable Function + 721(param): 21(ptr) Variable Function + 723(param): 30(ptr) Variable Function + 725(param): 21(ptr) Variable Function + 727(param): 21(ptr) Variable Function + 729(param): 30(ptr) Variable Function + 714: 28(int) Load 113(index) + Store 713(param) 714 + 716: 20(fvec3) Load 114(diffuseColor) + Store 715(param) 716 + 718: 20(fvec3) Load 115(specularColor) + Store 717(param) 718 + 720: 20(fvec3) Load 116(worldSpacePos) + Store 719(param) 720 + 722: 20(fvec3) Load 117(normal) + Store 721(param) 722 + 724: 6(float) Load 118(shadowStrength) + Store 723(param) 724 + 726: 20(fvec3) Load 119(shadowColor) + Store 725(param) 726 + 728: 20(fvec3) Load 120(camVector) + Store 727(param) 728 + 730: 6(float) Load 121(roughness) + Store 729(param) 730 + 731:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 713(param) 715(param) 717(param) 719(param) 721(param) 723(param) 725(param) 727(param) 729(param) + Store 712(res) 731 + 732: 21(ptr) AccessChain 712(res) 381 + 733: 20(fvec3) Load 732 + Store 110(diffuseContrib) 733 + 734: 21(ptr) AccessChain 712(res) 436 + 735: 20(fvec3) Load 734 + Store 111(specularContrib) 735 + 736: 30(ptr) AccessChain 712(res) 337 + 737: 6(float) Load 736 + Store 112(shadowStrengthOut) 737 + Return + FunctionEnd +136(TDLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 124 +125(diffuseContrib): 21(ptr) FunctionParameter +126(specularContrib): 21(ptr) FunctionParameter + 127(index): 29(ptr) FunctionParameter +128(diffuseColor): 21(ptr) FunctionParameter +129(specularColor): 21(ptr) FunctionParameter +130(worldSpacePos): 21(ptr) FunctionParameter + 131(normal): 21(ptr) FunctionParameter +132(shadowStrength): 30(ptr) FunctionParameter +133(shadowColor): 21(ptr) FunctionParameter + 134(camVector): 21(ptr) FunctionParameter + 135(roughness): 30(ptr) FunctionParameter + 137: Label + 738(res): 707(ptr) Variable Function + 739(param): 29(ptr) Variable Function + 741(param): 21(ptr) Variable Function + 743(param): 21(ptr) Variable Function + 745(param): 21(ptr) Variable Function + 747(param): 21(ptr) Variable Function + 749(param): 30(ptr) Variable Function + 751(param): 21(ptr) Variable Function + 753(param): 21(ptr) Variable Function + 755(param): 30(ptr) Variable Function + 740: 28(int) Load 127(index) + Store 739(param) 740 + 742: 20(fvec3) Load 128(diffuseColor) + Store 741(param) 742 + 744: 20(fvec3) Load 129(specularColor) + Store 743(param) 744 + 746: 20(fvec3) Load 130(worldSpacePos) + Store 745(param) 746 + 748: 20(fvec3) Load 131(normal) + Store 747(param) 748 + 750: 6(float) Load 132(shadowStrength) + Store 749(param) 750 + 752: 20(fvec3) Load 133(shadowColor) + Store 751(param) 752 + 754: 20(fvec3) Load 134(camVector) + Store 753(param) 754 + 756: 6(float) Load 135(roughness) + Store 755(param) 756 + 757:96(TDPBRResult) FunctionCall 107(TDLightingPBR(i1;vf3;vf3;vf3;vf3;f1;vf3;vf3;f1;) 739(param) 741(param) 743(param) 745(param) 747(param) 749(param) 751(param) 753(param) 755(param) + Store 738(res) 757 + 758: 21(ptr) AccessChain 738(res) 381 + 759: 20(fvec3) Load 758 + Store 125(diffuseContrib) 759 + 760: 21(ptr) AccessChain 738(res) 436 + 761: 20(fvec3) Load 760 + Store 126(specularContrib) 761 + Return + FunctionEnd +146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;):96(TDPBRResult) Function None 138 + 139(index): 29(ptr) FunctionParameter +140(diffuseColor): 21(ptr) FunctionParameter +141(specularColor): 21(ptr) FunctionParameter + 142(normal): 21(ptr) FunctionParameter + 143(camVector): 21(ptr) FunctionParameter + 144(roughness): 30(ptr) FunctionParameter +145(ambientOcclusion): 30(ptr) FunctionParameter + 147: Label + 762(res): 707(ptr) Variable Function + 763:96(TDPBRResult) Load 762(res) + ReturnValue 763 + FunctionEnd +158(TDEnvLightingPBR(vf3;vf3;i1;vf3;vf3;vf3;vf3;f1;f1;): 2 Function None 148 +149(diffuseContrib): 21(ptr) FunctionParameter +150(specularContrib): 21(ptr) FunctionParameter + 151(index): 29(ptr) FunctionParameter +152(diffuseColor): 21(ptr) FunctionParameter +153(specularColor): 21(ptr) FunctionParameter + 154(normal): 21(ptr) FunctionParameter + 155(camVector): 21(ptr) FunctionParameter + 156(roughness): 30(ptr) FunctionParameter +157(ambientOcclusion): 30(ptr) FunctionParameter + 159: Label + 766(res): 707(ptr) Variable Function + 767(param): 29(ptr) Variable Function + 769(param): 21(ptr) Variable Function + 771(param): 21(ptr) Variable Function + 773(param): 21(ptr) Variable Function + 775(param): 21(ptr) Variable Function + 777(param): 30(ptr) Variable Function + 779(param): 30(ptr) Variable Function + 768: 28(int) Load 151(index) + Store 767(param) 768 + 770: 20(fvec3) Load 152(diffuseColor) + Store 769(param) 770 + 772: 20(fvec3) Load 153(specularColor) + Store 771(param) 772 + 774: 20(fvec3) Load 154(normal) + Store 773(param) 774 + 776: 20(fvec3) Load 155(camVector) + Store 775(param) 776 + 778: 6(float) Load 156(roughness) + Store 777(param) 778 + 780: 6(float) Load 157(ambientOcclusion) + Store 779(param) 780 + 781:96(TDPBRResult) FunctionCall 146(TDEnvLightingPBR(i1;vf3;vf3;vf3;vf3;f1;f1;) 767(param) 769(param) 771(param) 773(param) 775(param) 777(param) 779(param) + Store 766(res) 781 + 782: 21(ptr) AccessChain 766(res) 381 + 783: 20(fvec3) Load 782 + Store 149(diffuseContrib) 783 + 784: 21(ptr) AccessChain 766(res) 436 + 785: 20(fvec3) Load 784 + Store 150(specularContrib) 785 + Return + FunctionEnd +170(TDLighting(i1;vf3;vf3;f1;vf3;vf3;f1;f1;):160(TDPhongResult) Function None 161 + 162(index): 29(ptr) FunctionParameter +163(worldSpacePos): 21(ptr) FunctionParameter + 164(normal): 21(ptr) FunctionParameter +165(shadowStrength): 30(ptr) FunctionParameter +166(shadowColor): 21(ptr) FunctionParameter + 167(camVector): 21(ptr) FunctionParameter + 168(shininess): 30(ptr) FunctionParameter + 169(shininess2): 30(ptr) FunctionParameter + 171: Label + 790(res): 789(ptr) Variable Function + 786: 28(int) Load 162(index) + SelectionMerge 788 None + Switch 786 787 + 787: Label + 792: 21(ptr) AccessChain 790(res) 381 + Store 792 791 + 793: 21(ptr) AccessChain 790(res) 436 + Store 793 791 + 794: 21(ptr) AccessChain 790(res) 337 + Store 794 791 + 795: 30(ptr) AccessChain 790(res) 377 + Store 795 331 + Branch 788 + 788: Label + 798:160(TDPhongResult) Load 790(res) + ReturnValue 798 + FunctionEnd +185(TDLighting(vf3;vf3;vf3;f1;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 172 +173(diffuseContrib): 21(ptr) FunctionParameter +174(specularContrib): 21(ptr) FunctionParameter +175(specularContrib2): 21(ptr) FunctionParameter +176(shadowStrengthOut): 30(ptr) FunctionParameter + 177(index): 29(ptr) FunctionParameter +178(worldSpacePos): 21(ptr) FunctionParameter + 179(normal): 21(ptr) FunctionParameter +180(shadowStrength): 30(ptr) FunctionParameter +181(shadowColor): 21(ptr) FunctionParameter + 182(camVector): 21(ptr) FunctionParameter + 183(shininess): 30(ptr) FunctionParameter + 184(shininess2): 30(ptr) FunctionParameter + 186: Label + 804(res): 789(ptr) Variable Function + 801: 28(int) Load 177(index) + SelectionMerge 803 None + Switch 801 802 + 802: Label + 805: 21(ptr) AccessChain 804(res) 381 + Store 805 791 + 806: 21(ptr) AccessChain 804(res) 436 + Store 806 791 + 807: 21(ptr) AccessChain 804(res) 337 + Store 807 791 + 808: 30(ptr) AccessChain 804(res) 377 + Store 808 331 + Branch 803 + 803: Label + 811: 21(ptr) AccessChain 804(res) 381 + 812: 20(fvec3) Load 811 + Store 173(diffuseContrib) 812 + 813: 21(ptr) AccessChain 804(res) 436 + 814: 20(fvec3) Load 813 + Store 174(specularContrib) 814 + 815: 21(ptr) AccessChain 804(res) 337 + 816: 20(fvec3) Load 815 + Store 175(specularContrib2) 816 + 817: 30(ptr) AccessChain 804(res) 377 + 818: 6(float) Load 817 + Store 176(shadowStrengthOut) 818 + Return + FunctionEnd +199(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;f1;): 2 Function None 187 +188(diffuseContrib): 21(ptr) FunctionParameter +189(specularContrib): 21(ptr) FunctionParameter +190(specularContrib2): 21(ptr) FunctionParameter + 191(index): 29(ptr) FunctionParameter +192(worldSpacePos): 21(ptr) FunctionParameter + 193(normal): 21(ptr) FunctionParameter +194(shadowStrength): 30(ptr) FunctionParameter +195(shadowColor): 21(ptr) FunctionParameter + 196(camVector): 21(ptr) FunctionParameter + 197(shininess): 30(ptr) FunctionParameter + 198(shininess2): 30(ptr) FunctionParameter + 200: Label + 822(res): 789(ptr) Variable Function + 819: 28(int) Load 191(index) + SelectionMerge 821 None + Switch 819 820 + 820: Label + 823: 21(ptr) AccessChain 822(res) 381 + Store 823 791 + 824: 21(ptr) AccessChain 822(res) 436 + Store 824 791 + 825: 21(ptr) AccessChain 822(res) 337 + Store 825 791 + 826: 30(ptr) AccessChain 822(res) 377 + Store 826 331 + Branch 821 + 821: Label + 829: 21(ptr) AccessChain 822(res) 381 + 830: 20(fvec3) Load 829 + Store 188(diffuseContrib) 830 + 831: 21(ptr) AccessChain 822(res) 436 + 832: 20(fvec3) Load 831 + Store 189(specularContrib) 832 + 833: 21(ptr) AccessChain 822(res) 337 + 834: 20(fvec3) Load 833 + Store 190(specularContrib2) 834 + Return + FunctionEnd +211(TDLighting(vf3;vf3;i1;vf3;vf3;f1;vf3;vf3;f1;): 2 Function None 201 +202(diffuseContrib): 21(ptr) FunctionParameter +203(specularContrib): 21(ptr) FunctionParameter + 204(index): 29(ptr) FunctionParameter +205(worldSpacePos): 21(ptr) FunctionParameter + 206(normal): 21(ptr) FunctionParameter +207(shadowStrength): 30(ptr) FunctionParameter +208(shadowColor): 21(ptr) FunctionParameter + 209(camVector): 21(ptr) FunctionParameter + 210(shininess): 30(ptr) FunctionParameter + 212: Label + 838(res): 789(ptr) Variable Function + 835: 28(int) Load 204(index) + SelectionMerge 837 None + Switch 835 836 + 836: Label + 839: 21(ptr) AccessChain 838(res) 381 + Store 839 791 + 840: 21(ptr) AccessChain 838(res) 436 + Store 840 791 + 841: 21(ptr) AccessChain 838(res) 337 + Store 841 791 + 842: 30(ptr) AccessChain 838(res) 377 + Store 842 331 + Branch 837 + 837: Label + 845: 21(ptr) AccessChain 838(res) 381 + 846: 20(fvec3) Load 845 + Store 202(diffuseContrib) 846 + 847: 21(ptr) AccessChain 838(res) 436 + 848: 20(fvec3) Load 847 + Store 203(specularContrib) 848 + Return + FunctionEnd +223(TDLighting(vf3;vf3;vf3;i1;vf3;vf3;vf3;f1;f1;): 2 Function None 213 +214(diffuseContrib): 21(ptr) FunctionParameter +215(specularContrib): 21(ptr) FunctionParameter +216(specularContrib2): 21(ptr) FunctionParameter + 217(index): 29(ptr) FunctionParameter +218(worldSpacePos): 21(ptr) FunctionParameter + 219(normal): 21(ptr) FunctionParameter + 220(camVector): 21(ptr) FunctionParameter + 221(shininess): 30(ptr) FunctionParameter + 222(shininess2): 30(ptr) FunctionParameter + 224: Label + 852(res): 789(ptr) Variable Function + 849: 28(int) Load 217(index) + SelectionMerge 851 None + Switch 849 850 + 850: Label + 853: 21(ptr) AccessChain 852(res) 381 + Store 853 791 + 854: 21(ptr) AccessChain 852(res) 436 + Store 854 791 + 855: 21(ptr) AccessChain 852(res) 337 + Store 855 791 + 856: 30(ptr) AccessChain 852(res) 377 + Store 856 331 + Branch 851 + 851: Label + 859: 21(ptr) AccessChain 852(res) 381 + 860: 20(fvec3) Load 859 + Store 214(diffuseContrib) 860 + 861: 21(ptr) AccessChain 852(res) 436 + 862: 20(fvec3) Load 861 + Store 215(specularContrib) 862 + 863: 21(ptr) AccessChain 852(res) 337 + 864: 20(fvec3) Load 863 + Store 216(specularContrib2) 864 + Return + FunctionEnd +233(TDLighting(vf3;vf3;i1;vf3;vf3;vf3;f1;): 2 Function None 225 +226(diffuseContrib): 21(ptr) FunctionParameter +227(specularContrib): 21(ptr) FunctionParameter + 228(index): 29(ptr) FunctionParameter +229(worldSpacePos): 21(ptr) FunctionParameter + 230(normal): 21(ptr) FunctionParameter + 231(camVector): 21(ptr) FunctionParameter + 232(shininess): 30(ptr) FunctionParameter + 234: Label + 868(res): 789(ptr) Variable Function + 865: 28(int) Load 228(index) + SelectionMerge 867 None + Switch 865 866 + 866: Label + 869: 21(ptr) AccessChain 868(res) 381 + Store 869 791 + 870: 21(ptr) AccessChain 868(res) 436 + Store 870 791 + 871: 21(ptr) AccessChain 868(res) 337 + Store 871 791 + 872: 30(ptr) AccessChain 868(res) 377 + Store 872 331 + Branch 867 + 867: Label + 875: 21(ptr) AccessChain 868(res) 381 + 876: 20(fvec3) Load 875 + Store 226(diffuseContrib) 876 + 877: 21(ptr) AccessChain 868(res) 436 + 878: 20(fvec3) Load 877 + Store 227(specularContrib) 878 + Return + FunctionEnd +240(TDLighting(vf3;i1;vf3;vf3;): 2 Function None 235 +236(diffuseContrib): 21(ptr) FunctionParameter + 237(index): 29(ptr) FunctionParameter +238(worldSpacePos): 21(ptr) FunctionParameter + 239(normal): 21(ptr) FunctionParameter + 241: Label + 882(res): 789(ptr) Variable Function + 879: 28(int) Load 237(index) + SelectionMerge 881 None + Switch 879 880 + 880: Label + 883: 21(ptr) AccessChain 882(res) 381 + Store 883 791 + 884: 21(ptr) AccessChain 882(res) 436 + Store 884 791 + 885: 21(ptr) AccessChain 882(res) 337 + Store 885 791 + 886: 30(ptr) AccessChain 882(res) 377 + Store 886 331 + Branch 881 + 881: Label + 889: 21(ptr) AccessChain 882(res) 381 + 890: 20(fvec3) Load 889 + Store 236(diffuseContrib) 890 + Return + FunctionEnd +249(TDLighting(vf3;i1;vf3;vf3;f1;vf3;): 2 Function None 242 +243(diffuseContrib): 21(ptr) FunctionParameter + 244(index): 29(ptr) FunctionParameter +245(worldSpacePos): 21(ptr) FunctionParameter + 246(normal): 21(ptr) FunctionParameter +247(shadowStrength): 30(ptr) FunctionParameter +248(shadowColor): 21(ptr) FunctionParameter + 250: Label + 894(res): 789(ptr) Variable Function + 891: 28(int) Load 244(index) + SelectionMerge 893 None + Switch 891 892 + 892: Label + 895: 21(ptr) AccessChain 894(res) 381 + Store 895 791 + 896: 21(ptr) AccessChain 894(res) 436 + Store 896 791 + 897: 21(ptr) AccessChain 894(res) 337 + Store 897 791 + 898: 30(ptr) AccessChain 894(res) 377 + Store 898 331 + Branch 893 + 893: Label + 901: 21(ptr) AccessChain 894(res) 381 + 902: 20(fvec3) Load 901 + Store 243(diffuseContrib) 902 + Return + FunctionEnd +255(TDProjMap(i1;vf3;vf4;): 7(fvec4) Function None 251 + 252(index): 29(ptr) FunctionParameter +253(worldSpacePos): 21(ptr) FunctionParameter +254(defaultColor): 8(ptr) FunctionParameter + 256: Label + 903: 28(int) Load 252(index) + SelectionMerge 905 None + Switch 903 904 + 904: Label + 906: 7(fvec4) Load 254(defaultColor) + ReturnValue 906 + 905: Label + Unreachable + FunctionEnd +261(TDFog(vf4;vf3;i1;): 7(fvec4) Function None 257 + 258(color): 8(ptr) FunctionParameter +259(lightingSpacePosition): 21(ptr) FunctionParameter +260(cameraIndex): 29(ptr) FunctionParameter + 262: Label + 910: 28(int) Load 260(cameraIndex) + SelectionMerge 912 None + Switch 910 911 + case 0: 911 + 911: Label + 913: 7(fvec4) Load 258(color) + ReturnValue 913 + 912: Label + Unreachable + FunctionEnd +266(TDFog(vf4;vf3;): 7(fvec4) Function None 263 + 264(color): 8(ptr) FunctionParameter +265(lightingSpacePosition): 21(ptr) FunctionParameter + 267: Label + 917(param): 8(ptr) Variable Function + 919(param): 21(ptr) Variable Function + 921(param): 29(ptr) Variable Function + 918: 7(fvec4) Load 264(color) + Store 917(param) 918 + 920: 20(fvec3) Load 265(lightingSpacePosition) + Store 919(param) 920 + Store 921(param) 381 + 922: 7(fvec4) FunctionCall 261(TDFog(vf4;vf3;i1;) 917(param) 919(param) 921(param) + ReturnValue 922 + FunctionEnd +271(TDInstanceTexCoord(i1;vf3;): 20(fvec3) Function None 268 + 269(index): 29(ptr) FunctionParameter + 270(t): 21(ptr) FunctionParameter + 272: Label + 925(coord): 29(ptr) Variable Function + 927(samp): 8(ptr) Variable Function + 936(v): 21(ptr) Variable Function + 926: 28(int) Load 269(index) + Store 925(coord) 926 + 932: 929 Load 931(sTDInstanceTexCoord) + 933: 28(int) Load 925(coord) + 934: 928 Image 932 + 935: 7(fvec4) ImageFetch 934 933 + Store 927(samp) 935 + 937: 30(ptr) AccessChain 270(t) 390 + 938: 6(float) Load 937 + 939: 30(ptr) AccessChain 936(v) 390 + Store 939 938 + 940: 30(ptr) AccessChain 270(t) 393 + 941: 6(float) Load 940 + 942: 30(ptr) AccessChain 936(v) 393 + Store 942 941 + 943: 30(ptr) AccessChain 927(samp) 390 + 944: 6(float) Load 943 + 945: 30(ptr) AccessChain 936(v) 342 + Store 945 944 + 946: 20(fvec3) Load 936(v) + Store 270(t) 946 + 947: 20(fvec3) Load 270(t) + ReturnValue 947 + FunctionEnd +275(TDInstanceActive(i1;): 22(bool) Function None 273 + 274(index): 29(ptr) FunctionParameter + 276: Label + 955(coord): 29(ptr) Variable Function + 957(samp): 8(ptr) Variable Function + 963(v): 30(ptr) Variable Function + 951: 950(ptr) AccessChain 376 381 + 952: 28(int) Load 951 + 953: 28(int) Load 274(index) + 954: 28(int) ISub 953 952 + Store 274(index) 954 + 956: 28(int) Load 274(index) + Store 955(coord) 956 + 959: 929 Load 958(sTDInstanceT) + 960: 28(int) Load 955(coord) + 961: 928 Image 959 + 962: 7(fvec4) ImageFetch 961 960 + Store 957(samp) 962 + 964: 30(ptr) AccessChain 957(samp) 390 + 965: 6(float) Load 964 + Store 963(v) 965 + 966: 6(float) Load 963(v) + 967: 22(bool) FUnordNotEqual 966 331 + ReturnValue 967 + FunctionEnd +281(iTDInstanceTranslate(i1;b1;): 20(fvec3) Function None 278 + 279(index): 29(ptr) FunctionParameter +280(instanceActive): 277(ptr) FunctionParameter + 282: Label + 970(origIndex): 29(ptr) Variable Function + 976(coord): 29(ptr) Variable Function + 978(samp): 8(ptr) Variable Function + 983(v): 21(ptr) Variable Function + 971: 28(int) Load 279(index) + Store 970(origIndex) 971 + 972: 950(ptr) AccessChain 376 381 + 973: 28(int) Load 972 + 974: 28(int) Load 279(index) + 975: 28(int) ISub 974 973 + Store 279(index) 975 + 977: 28(int) Load 279(index) + Store 976(coord) 977 + 979: 929 Load 958(sTDInstanceT) + 980: 28(int) Load 976(coord) + 981: 928 Image 979 + 982: 7(fvec4) ImageFetch 981 980 + Store 978(samp) 982 + 984: 30(ptr) AccessChain 978(samp) 393 + 985: 6(float) Load 984 + 986: 30(ptr) AccessChain 983(v) 390 + Store 986 985 + 987: 30(ptr) AccessChain 978(samp) 342 + 988: 6(float) Load 987 + 989: 30(ptr) AccessChain 983(v) 393 + Store 989 988 + 990: 30(ptr) AccessChain 978(samp) 402 + 991: 6(float) Load 990 + 992: 30(ptr) AccessChain 983(v) 342 + Store 992 991 + 993: 30(ptr) AccessChain 978(samp) 390 + 994: 6(float) Load 993 + 995: 22(bool) FUnordNotEqual 994 331 + Store 280(instanceActive) 995 + 996: 20(fvec3) Load 983(v) + ReturnValue 996 + FunctionEnd +285(TDInstanceTranslate(i1;): 20(fvec3) Function None 283 + 284(index): 29(ptr) FunctionParameter + 286: Label + 1003(coord): 29(ptr) Variable Function + 1005(samp): 8(ptr) Variable Function + 1010(v): 21(ptr) Variable Function + 999: 950(ptr) AccessChain 376 381 + 1000: 28(int) Load 999 + 1001: 28(int) Load 284(index) + 1002: 28(int) ISub 1001 1000 + Store 284(index) 1002 + 1004: 28(int) Load 284(index) + Store 1003(coord) 1004 + 1006: 929 Load 958(sTDInstanceT) + 1007: 28(int) Load 1003(coord) + 1008: 928 Image 1006 + 1009: 7(fvec4) ImageFetch 1008 1007 + Store 1005(samp) 1009 + 1011: 30(ptr) AccessChain 1005(samp) 393 + 1012: 6(float) Load 1011 + 1013: 30(ptr) AccessChain 1010(v) 390 + Store 1013 1012 + 1014: 30(ptr) AccessChain 1005(samp) 342 + 1015: 6(float) Load 1014 + 1016: 30(ptr) AccessChain 1010(v) 393 + Store 1016 1015 + 1017: 30(ptr) AccessChain 1005(samp) 402 + 1018: 6(float) Load 1017 + 1019: 30(ptr) AccessChain 1010(v) 342 + Store 1019 1018 + 1020: 20(fvec3) Load 1010(v) + ReturnValue 1020 + FunctionEnd +290(TDInstanceRotateMat(i1;): 287 Function None 288 + 289(index): 29(ptr) FunctionParameter + 291: Label + 1027(v): 21(ptr) Variable Function + 1029(m): 1028(ptr) Variable Function + 1023: 950(ptr) AccessChain 376 381 + 1024: 28(int) Load 1023 + 1025: 28(int) Load 289(index) + 1026: 28(int) ISub 1025 1024 + Store 289(index) 1026 + Store 1027(v) 791 + Store 1029(m) 1031 + 1032: 287 Load 1029(m) + ReturnValue 1032 + FunctionEnd +293(TDInstanceScale(i1;): 20(fvec3) Function None 283 + 292(index): 29(ptr) FunctionParameter + 294: Label + 1039(v): 21(ptr) Variable Function + 1035: 950(ptr) AccessChain 376 381 + 1036: 28(int) Load 1035 + 1037: 28(int) Load 292(index) + 1038: 28(int) ISub 1037 1036 + Store 292(index) 1038 + Store 1039(v) 670 + 1040: 20(fvec3) Load 1039(v) + ReturnValue 1040 + FunctionEnd +296(TDInstancePivot(i1;): 20(fvec3) Function None 283 + 295(index): 29(ptr) FunctionParameter + 297: Label + 1047(v): 21(ptr) Variable Function + 1043: 950(ptr) AccessChain 376 381 + 1044: 28(int) Load 1043 + 1045: 28(int) Load 295(index) + 1046: 28(int) ISub 1045 1044 + Store 295(index) 1046 + Store 1047(v) 791 + 1048: 20(fvec3) Load 1047(v) + ReturnValue 1048 + FunctionEnd +299(TDInstanceRotTo(i1;): 20(fvec3) Function None 283 + 298(index): 29(ptr) FunctionParameter + 300: Label + 1055(v): 21(ptr) Variable Function + 1051: 950(ptr) AccessChain 376 381 + 1052: 28(int) Load 1051 + 1053: 28(int) Load 298(index) + 1054: 28(int) ISub 1053 1052 + Store 298(index) 1054 + Store 1055(v) 607 + 1056: 20(fvec3) Load 1055(v) + ReturnValue 1056 + FunctionEnd +302(TDInstanceRotUp(i1;): 20(fvec3) Function None 283 + 301(index): 29(ptr) FunctionParameter + 303: Label + 1063(v): 21(ptr) Variable Function + 1059: 950(ptr) AccessChain 376 381 + 1060: 28(int) Load 1059 + 1061: 28(int) Load 301(index) + 1062: 28(int) ISub 1061 1060 + Store 301(index) 1062 + Store 1063(v) 1030 + 1064: 20(fvec3) Load 1063(v) + ReturnValue 1064 + FunctionEnd +307(TDInstanceMat(i1;): 304 Function None 305 + 306(id): 29(ptr) FunctionParameter + 308: Label +1067(instanceActive): 277(ptr) Variable Function + 1069(t): 21(ptr) Variable Function + 1070(param): 29(ptr) Variable Function + 1072(param): 277(ptr) Variable Function + 1082(m): 1081(ptr) Variable Function + 1088(tt): 21(ptr) Variable Function + Store 1067(instanceActive) 1068 + 1071: 28(int) Load 306(id) + Store 1070(param) 1071 + 1073: 20(fvec3) FunctionCall 281(iTDInstanceTranslate(i1;b1;) 1070(param) 1072(param) + 1074: 22(bool) Load 1072(param) + Store 1067(instanceActive) 1074 + Store 1069(t) 1073 + 1075: 22(bool) Load 1067(instanceActive) + 1076: 22(bool) LogicalNot 1075 + SelectionMerge 1078 None + BranchConditional 1076 1077 1078 + 1077: Label + ReturnValue 1079 + 1078: Label + Store 1082(m) 1087 + 1089: 20(fvec3) Load 1069(t) + Store 1088(tt) 1089 + 1090: 30(ptr) AccessChain 1082(m) 381 390 + 1091: 6(float) Load 1090 + 1092: 30(ptr) AccessChain 1088(tt) 390 + 1093: 6(float) Load 1092 + 1094: 6(float) FMul 1091 1093 + 1095: 30(ptr) AccessChain 1082(m) 377 390 + 1096: 6(float) Load 1095 + 1097: 6(float) FAdd 1096 1094 + 1098: 30(ptr) AccessChain 1082(m) 377 390 + Store 1098 1097 + 1099: 30(ptr) AccessChain 1082(m) 381 393 + 1100: 6(float) Load 1099 + 1101: 30(ptr) AccessChain 1088(tt) 390 + 1102: 6(float) Load 1101 + 1103: 6(float) FMul 1100 1102 + 1104: 30(ptr) AccessChain 1082(m) 377 393 + 1105: 6(float) Load 1104 + 1106: 6(float) FAdd 1105 1103 + 1107: 30(ptr) AccessChain 1082(m) 377 393 + Store 1107 1106 + 1108: 30(ptr) AccessChain 1082(m) 381 342 + 1109: 6(float) Load 1108 + 1110: 30(ptr) AccessChain 1088(tt) 390 + 1111: 6(float) Load 1110 + 1112: 6(float) FMul 1109 1111 + 1113: 30(ptr) AccessChain 1082(m) 377 342 + 1114: 6(float) Load 1113 + 1115: 6(float) FAdd 1114 1112 + 1116: 30(ptr) AccessChain 1082(m) 377 342 + Store 1116 1115 + 1117: 30(ptr) AccessChain 1082(m) 381 402 + 1118: 6(float) Load 1117 + 1119: 30(ptr) AccessChain 1088(tt) 390 + 1120: 6(float) Load 1119 + 1121: 6(float) FMul 1118 1120 + 1122: 30(ptr) AccessChain 1082(m) 377 402 + 1123: 6(float) Load 1122 + 1124: 6(float) FAdd 1123 1121 + 1125: 30(ptr) AccessChain 1082(m) 377 402 + Store 1125 1124 + 1126: 30(ptr) AccessChain 1082(m) 436 390 + 1127: 6(float) Load 1126 + 1128: 30(ptr) AccessChain 1088(tt) 393 + 1129: 6(float) Load 1128 + 1130: 6(float) FMul 1127 1129 + 1131: 30(ptr) AccessChain 1082(m) 377 390 + 1132: 6(float) Load 1131 + 1133: 6(float) FAdd 1132 1130 + 1134: 30(ptr) AccessChain 1082(m) 377 390 + Store 1134 1133 + 1135: 30(ptr) AccessChain 1082(m) 436 393 + 1136: 6(float) Load 1135 + 1137: 30(ptr) AccessChain 1088(tt) 393 + 1138: 6(float) Load 1137 + 1139: 6(float) FMul 1136 1138 + 1140: 30(ptr) AccessChain 1082(m) 377 393 + 1141: 6(float) Load 1140 + 1142: 6(float) FAdd 1141 1139 + 1143: 30(ptr) AccessChain 1082(m) 377 393 + Store 1143 1142 + 1144: 30(ptr) AccessChain 1082(m) 436 342 + 1145: 6(float) Load 1144 + 1146: 30(ptr) AccessChain 1088(tt) 393 + 1147: 6(float) Load 1146 + 1148: 6(float) FMul 1145 1147 + 1149: 30(ptr) AccessChain 1082(m) 377 342 + 1150: 6(float) Load 1149 + 1151: 6(float) FAdd 1150 1148 + 1152: 30(ptr) AccessChain 1082(m) 377 342 + Store 1152 1151 + 1153: 30(ptr) AccessChain 1082(m) 436 402 + 1154: 6(float) Load 1153 + 1155: 30(ptr) AccessChain 1088(tt) 393 + 1156: 6(float) Load 1155 + 1157: 6(float) FMul 1154 1156 + 1158: 30(ptr) AccessChain 1082(m) 377 402 + 1159: 6(float) Load 1158 + 1160: 6(float) FAdd 1159 1157 + 1161: 30(ptr) AccessChain 1082(m) 377 402 + Store 1161 1160 + 1162: 30(ptr) AccessChain 1082(m) 337 390 + 1163: 6(float) Load 1162 + 1164: 30(ptr) AccessChain 1088(tt) 342 + 1165: 6(float) Load 1164 + 1166: 6(float) FMul 1163 1165 + 1167: 30(ptr) AccessChain 1082(m) 377 390 + 1168: 6(float) Load 1167 + 1169: 6(float) FAdd 1168 1166 + 1170: 30(ptr) AccessChain 1082(m) 377 390 + Store 1170 1169 + 1171: 30(ptr) AccessChain 1082(m) 337 393 + 1172: 6(float) Load 1171 + 1173: 30(ptr) AccessChain 1088(tt) 342 + 1174: 6(float) Load 1173 + 1175: 6(float) FMul 1172 1174 + 1176: 30(ptr) AccessChain 1082(m) 377 393 + 1177: 6(float) Load 1176 + 1178: 6(float) FAdd 1177 1175 + 1179: 30(ptr) AccessChain 1082(m) 377 393 + Store 1179 1178 + 1180: 30(ptr) AccessChain 1082(m) 337 342 + 1181: 6(float) Load 1180 + 1182: 30(ptr) AccessChain 1088(tt) 342 + 1183: 6(float) Load 1182 + 1184: 6(float) FMul 1181 1183 + 1185: 30(ptr) AccessChain 1082(m) 377 342 + 1186: 6(float) Load 1185 + 1187: 6(float) FAdd 1186 1184 + 1188: 30(ptr) AccessChain 1082(m) 377 342 + Store 1188 1187 + 1189: 30(ptr) AccessChain 1082(m) 337 402 + 1190: 6(float) Load 1189 + 1191: 30(ptr) AccessChain 1088(tt) 342 + 1192: 6(float) Load 1191 + 1193: 6(float) FMul 1190 1192 + 1194: 30(ptr) AccessChain 1082(m) 377 402 + 1195: 6(float) Load 1194 + 1196: 6(float) FAdd 1195 1193 + 1197: 30(ptr) AccessChain 1082(m) 377 402 + Store 1197 1196 + 1198: 304 Load 1082(m) + ReturnValue 1198 + FunctionEnd +310(TDInstanceMat3(i1;): 287 Function None 288 + 309(id): 29(ptr) FunctionParameter + 311: Label + 1201(m): 1028(ptr) Variable Function + Store 1201(m) 1031 + 1202: 287 Load 1201(m) + ReturnValue 1202 + FunctionEnd +313(TDInstanceMat3ForNorm(i1;): 287 Function None 288 + 312(id): 29(ptr) FunctionParameter + 314: Label + 1205(m): 1028(ptr) Variable Function + 1206(param): 29(ptr) Variable Function + 1207: 28(int) Load 312(id) + Store 1206(param) 1207 + 1208: 287 FunctionCall 310(TDInstanceMat3(i1;) 1206(param) + Store 1205(m) 1208 + 1209: 287 Load 1205(m) + ReturnValue 1209 + FunctionEnd +318(TDInstanceColor(i1;vf4;): 7(fvec4) Function None 315 + 316(index): 29(ptr) FunctionParameter + 317(curColor): 8(ptr) FunctionParameter + 319: Label + 1216(coord): 29(ptr) Variable Function + 1218(samp): 8(ptr) Variable Function + 1224(v): 8(ptr) Variable Function + 1212: 950(ptr) AccessChain 376 381 + 1213: 28(int) Load 1212 + 1214: 28(int) Load 316(index) + 1215: 28(int) ISub 1214 1213 + Store 316(index) 1215 + 1217: 28(int) Load 316(index) + Store 1216(coord) 1217 + 1220: 929 Load 1219(sTDInstanceColor) + 1221: 28(int) Load 1216(coord) + 1222: 928 Image 1220 + 1223: 7(fvec4) ImageFetch 1222 1221 + Store 1218(samp) 1223 + 1225: 30(ptr) AccessChain 1218(samp) 390 + 1226: 6(float) Load 1225 + 1227: 30(ptr) AccessChain 1224(v) 390 + Store 1227 1226 + 1228: 30(ptr) AccessChain 1218(samp) 393 + 1229: 6(float) Load 1228 + 1230: 30(ptr) AccessChain 1224(v) 393 + Store 1230 1229 + 1231: 30(ptr) AccessChain 1218(samp) 342 + 1232: 6(float) Load 1231 + 1233: 30(ptr) AccessChain 1224(v) 342 + Store 1233 1232 + 1234: 30(ptr) AccessChain 1224(v) 402 + Store 1234 489 + 1235: 30(ptr) AccessChain 1224(v) 390 + 1236: 6(float) Load 1235 + 1237: 30(ptr) AccessChain 317(curColor) 390 + Store 1237 1236 + 1238: 30(ptr) AccessChain 1224(v) 393 + 1239: 6(float) Load 1238 + 1240: 30(ptr) AccessChain 317(curColor) 393 + Store 1240 1239 + 1241: 30(ptr) AccessChain 1224(v) 342 + 1242: 6(float) Load 1241 + 1243: 30(ptr) AccessChain 317(curColor) 342 + Store 1243 1242 + 1244: 7(fvec4) Load 317(curColor) + ReturnValue 1244 + FunctionEnd +321(TDOutputSwizzle(vf4;): 7(fvec4) Function None 9 + 320(c): 8(ptr) FunctionParameter + 322: Label + 1247: 7(fvec4) Load 320(c) + ReturnValue 1247 + FunctionEnd +327(TDOutputSwizzle(vu4;): 323(ivec4) Function None 325 + 326(c): 324(ptr) FunctionParameter + 328: Label + 1250: 323(ivec4) Load 326(c) + ReturnValue 1250 + FunctionEnd diff --git a/Test/vk.relaxed.stagelink.0.0.frag b/Test/vk.relaxed.stagelink.0.0.frag new file mode 100755 index 0000000000..1f9f1025ec --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.0.frag @@ -0,0 +1,139 @@ +#version 460 +uniform int uTDInstanceIDOffset; +uniform int uTDNumInstances; +uniform float uTDAlphaTestVal; +#define TD_NUM_COLOR_BUFFERS 1 +#define TD_NUM_LIGHTS 0 +#define TD_NUM_SHADOWED_LIGHTS 0 +#define TD_NUM_ENV_LIGHTS 0 +#define TD_LIGHTS_ARRAY_SIZE 1 +#define TD_ENV_LIGHTS_ARRAY_SIZE 1 +#define TD_NUM_CAMERAS 1 +struct TDPhongResult +{ + vec3 diffuse; + vec3 specular; + vec3 specular2; + float shadowStrength; +}; +struct TDPBRResult +{ + vec3 diffuse; + vec3 specular; + float shadowStrength; +}; +struct TDMatrix +{ + mat4 world; + mat4 worldInverse; + mat4 worldCam; + mat4 worldCamInverse; + mat4 cam; + mat4 camInverse; + mat4 camProj; + mat4 camProjInverse; + mat4 proj; + mat4 projInverse; + mat4 worldCamProj; + mat4 worldCamProjInverse; + mat4 quadReproject; + mat3 worldForNormals; + mat3 camForNormals; + mat3 worldCamForNormals; +}; +layout(std140) uniform TDMatricesBlock { + TDMatrix uTDMats[TD_NUM_CAMERAS]; +}; +struct TDCameraInfo +{ + vec4 nearFar; + vec4 fog; + vec4 fogColor; + int renderTOPCameraIndex; +}; +layout(std140) uniform TDCameraInfoBlock { + TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS]; +}; +struct TDGeneral +{ + vec4 ambientColor; + vec4 nearFar; + vec4 viewport; + vec4 viewportRes; + vec4 fog; + vec4 fogColor; +}; +layout(std140) uniform TDGeneralBlock { + TDGeneral uTDGeneral; +}; + +void TDAlphaTest(float alpha); +vec4 TDDither(vec4 color); +vec4 TDOutputSwizzle(vec4 v); +uvec4 TDOutputSwizzle(uvec4 v); +void TDCheckOrderIndTrans(); +void TDCheckDiscard(); +uniform vec3 uConstant; +uniform float uShadowStrength; +uniform vec3 uShadowColor; +uniform vec4 uDiffuseColor; +uniform vec4 uAmbientColor; + +uniform sampler2DArray sColorMap; + +in Vertex +{ + vec4 color; + vec3 worldSpacePos; + vec3 texCoord0; + flat int cameraIndex; + flat int instance; +} iVert; + +// Output variable for the color +layout(location = 0) out vec4 oFragColor[TD_NUM_COLOR_BUFFERS]; +void main() +{ + // This allows things such as order independent transparency + // and Dual-Paraboloid rendering to work properly + TDCheckDiscard(); + + vec4 outcol = vec4(0.0, 0.0, 0.0, 0.0); + + vec3 texCoord0 = iVert.texCoord0.stp; + float actualTexZ = mod(int(texCoord0.z),2048); + float instanceLoop = floor(int(texCoord0.z)/2048); + texCoord0.z = actualTexZ; + vec4 colorMapColor = texture(sColorMap, texCoord0.stp); + + float red = colorMapColor[int(instanceLoop)]; + colorMapColor = vec4(red); + // Constant Light Contribution + outcol.rgb += uConstant * iVert.color.rgb; + + outcol *= colorMapColor; + + // Alpha Calculation + float alpha = iVert.color.a * colorMapColor.a ; + + // Dithering, does nothing if dithering is disabled + outcol = TDDither(outcol); + + outcol.rgb *= alpha; + + // Modern GL removed the implicit alpha test, so we need to apply + // it manually here. This function does nothing if alpha test is disabled. + TDAlphaTest(alpha); + + outcol.a = alpha; + oFragColor[0] = TDOutputSwizzle(outcol); + + + // TD_NUM_COLOR_BUFFERS will be set to the number of color buffers + // active in the render. By default we want to output zero to every + // buffer except the first one. + for (int i = 1; i < TD_NUM_COLOR_BUFFERS; i++) + { + oFragColor[i] = vec4(0.0); + } +} diff --git a/Test/vk.relaxed.stagelink.0.0.vert b/Test/vk.relaxed.stagelink.0.0.vert new file mode 100755 index 0000000000..7f31c377dc --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.0.vert @@ -0,0 +1,126 @@ +#version 460 +uniform int uTDInstanceIDOffset; +uniform int uTDNumInstances; +uniform float uTDAlphaTestVal; +#define TD_NUM_COLOR_BUFFERS 1 +#define TD_NUM_LIGHTS 0 +#define TD_NUM_SHADOWED_LIGHTS 0 +#define TD_NUM_ENV_LIGHTS 0 +#define TD_LIGHTS_ARRAY_SIZE 1 +#define TD_ENV_LIGHTS_ARRAY_SIZE 1 +#define TD_NUM_CAMERAS 1 +struct TDPhongResult +{ + vec3 diffuse; + vec3 specular; + vec3 specular2; + float shadowStrength; +}; +struct TDPBRResult +{ + vec3 diffuse; + vec3 specular; + float shadowStrength; +}; +struct TDMatrix +{ + mat4 world; + mat4 worldInverse; + mat4 worldCam; + mat4 worldCamInverse; + mat4 cam; + mat4 camInverse; + mat4 camProj; + mat4 camProjInverse; + mat4 proj; + mat4 projInverse; + mat4 worldCamProj; + mat4 worldCamProjInverse; + mat4 quadReproject; + mat3 worldForNormals; + mat3 camForNormals; + mat3 worldCamForNormals; +}; +layout(std140) uniform TDMatricesBlock { + TDMatrix uTDMats[TD_NUM_CAMERAS]; +}; +struct TDCameraInfo +{ + vec4 nearFar; + vec4 fog; + vec4 fogColor; + int renderTOPCameraIndex; +}; +layout(std140) uniform TDCameraInfoBlock { + TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS]; +}; +struct TDGeneral +{ + vec4 ambientColor; + vec4 nearFar; + vec4 viewport; + vec4 viewportRes; + vec4 fog; + vec4 fogColor; +}; +layout(std140) uniform TDGeneralBlock { + TDGeneral uTDGeneral; +}; +layout(location = 0) in vec3 P; +layout(location = 1) in vec3 N; +layout(location = 2) in vec4 Cd; +layout(location = 3) in vec3 uv[8]; +vec4 TDWorldToProj(vec4 v); +vec4 TDWorldToProj(vec3 v); +vec4 TDWorldToProj(vec4 v, vec3 uv); +vec4 TDWorldToProj(vec3 v, vec3 uv); +int TDInstanceID(); +int TDCameraIndex(); +vec3 TDUVUnwrapCoord(); +/*********TOUCHDEFORMPREFIX**********/ +#define TD_NUM_BONES 0 + +vec3 TDInstanceTexCoord(int instanceID, vec3 t); +vec4 TDInstanceColor(int instanceID, vec4 curColor); + +vec4 TDDeform(vec4 pos); +vec4 TDDeform(vec3 pos); +vec3 TDInstanceTexCoord(vec3 t); +vec4 TDInstanceColor(vec4 curColor); +#line 1 + +out Vertex +{ + vec4 color; + vec3 worldSpacePos; + vec3 texCoord0; + flat int cameraIndex; + flat int instance; +} oVert; + +void main() +{ + + { // Avoid duplicate variable defs + vec3 texcoord = TDInstanceTexCoord(uv[0]); + oVert.texCoord0.stp = texcoord.stp; + } + // First deform the vertex and normal + // TDDeform always returns values in world space + oVert.instance = TDInstanceID(); + vec4 worldSpacePos = TDDeform(P); + vec3 uvUnwrapCoord = TDInstanceTexCoord(TDUVUnwrapCoord()); + gl_Position = TDWorldToProj(worldSpacePos, uvUnwrapCoord); + + + // This is here to ensure we only execute lighting etc. code + // when we need it. If picking is active we don't need lighting, so + // this entire block of code will be ommited from the compile. + // The TD_PICKING_ACTIVE define will be set automatically when + // picking is active. + + int cameraIndex = TDCameraIndex(); + oVert.cameraIndex = cameraIndex; + oVert.worldSpacePos.xyz = worldSpacePos.xyz; + oVert.color = TDInstanceColor(Cd); +} diff --git a/Test/vk.relaxed.stagelink.0.1.frag b/Test/vk.relaxed.stagelink.0.1.frag new file mode 100755 index 0000000000..2a82b65d80 --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.1.frag @@ -0,0 +1,504 @@ +#version 460 +uniform sampler2D sTDNoiseMap; +uniform sampler1D sTDSineLookup; +uniform sampler2D sTDWhite2D; +uniform sampler3D sTDWhite3D; +uniform sampler2DArray sTDWhite2DArray; +uniform samplerCube sTDWhiteCube; +uniform int uTDInstanceIDOffset; +uniform int uTDNumInstances; +uniform float uTDAlphaTestVal; +#define TD_NUM_COLOR_BUFFERS 1 +#define TD_NUM_LIGHTS 0 +#define TD_NUM_SHADOWED_LIGHTS 0 +#define TD_NUM_ENV_LIGHTS 0 +#define TD_LIGHTS_ARRAY_SIZE 1 +#define TD_ENV_LIGHTS_ARRAY_SIZE 1 +#define TD_NUM_CAMERAS 1 +struct TDLight +{ + vec4 position; + vec3 direction; + vec3 diffuse; + vec4 nearFar; + vec4 lightSize; + vec4 misc; + vec4 coneLookupScaleBias; + vec4 attenScaleBiasRoll; + mat4 shadowMapMatrix; + mat4 shadowMapCamMatrix; + vec4 shadowMapRes; + mat4 projMapMatrix; +}; +struct TDEnvLight +{ + vec3 color; + mat3 rotate; +}; +layout(std140) uniform TDLightBlock +{ + TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE]; +}; +layout(std140) uniform TDEnvLightBlock +{ + TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE]; +}; +layout(std430) readonly restrict buffer TDEnvLightBuffer +{ + vec3 shCoeffs[9]; +} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE]; +struct TDPhongResult +{ + vec3 diffuse; + vec3 specular; + vec3 specular2; + float shadowStrength; +}; +struct TDPBRResult +{ + vec3 diffuse; + vec3 specular; + float shadowStrength; +}; +struct TDMatrix +{ + mat4 world; + mat4 worldInverse; + mat4 worldCam; + mat4 worldCamInverse; + mat4 cam; + mat4 camInverse; + mat4 camProj; + mat4 camProjInverse; + mat4 proj; + mat4 projInverse; + mat4 worldCamProj; + mat4 worldCamProjInverse; + mat4 quadReproject; + mat3 worldForNormals; + mat3 camForNormals; + mat3 worldCamForNormals; +}; +layout(std140) uniform TDMatricesBlock { + TDMatrix uTDMats[TD_NUM_CAMERAS]; +}; +struct TDCameraInfo +{ + vec4 nearFar; + vec4 fog; + vec4 fogColor; + int renderTOPCameraIndex; +}; +layout(std140) uniform TDCameraInfoBlock { + TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS]; +}; +struct TDGeneral +{ + vec4 ambientColor; + vec4 nearFar; + vec4 viewport; + vec4 viewportRes; + vec4 fog; + vec4 fogColor; +}; +layout(std140) uniform TDGeneralBlock { + TDGeneral uTDGeneral; +}; + +layout(binding = 15) uniform samplerBuffer sTDInstanceT; +layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord; +layout(binding = 17) uniform samplerBuffer sTDInstanceColor; +vec4 TDDither(vec4 color); +vec3 TDHSVToRGB(vec3 c); +vec3 TDRGBToHSV(vec3 c); +#define PI 3.14159265 + +vec4 TDColor(vec4 color) { return color; } +void TDCheckOrderIndTrans() { +} +void TDCheckDiscard() { + TDCheckOrderIndTrans(); +} +vec4 TDDither(vec4 color) +{ + float d = texture(sTDNoiseMap, + gl_FragCoord.xy / 256.0).r; + d -= 0.5; + d /= 256.0; + return vec4(color.rgb + d, color.a); +} +bool TDFrontFacing(vec3 pos, vec3 normal) +{ + return gl_FrontFacing; +} +float TDAttenuateLight(int index, float lightDist) +{ + return 1.0; +} +void TDAlphaTest(float alpha) { +} +float TDHardShadow(int lightIndex, vec3 worldSpacePos) +{ return 0.0; } +float TDSoftShadow(int lightIndex, vec3 worldSpacePos, int samples, int steps) +{ return 0.0; } +float TDSoftShadow(int lightIndex, vec3 worldSpacePos) +{ return 0.0; } +float TDShadow(int lightIndex, vec3 worldSpacePos) +{ return 0.0; } +vec3 TDEquirectangularToCubeMap(vec2 mapCoord); +vec2 TDCubeMapToEquirectangular(vec3 envMapCoord); +vec2 TDCubeMapToEquirectangular(vec3 envMapCoord, out float mipMapBias); +vec2 TDTexGenSphere(vec3 envMapCoord); +float iTDRadicalInverse_VdC(uint bits) +{ + bits = (bits << 16u) | (bits >> 16u); + bits = ((bits & 0x55555555u) << 1u) | ((bits & 0xAAAAAAAAu) >> 1u); + bits = ((bits & 0x33333333u) << 2u) | ((bits & 0xCCCCCCCCu) >> 2u); + bits = ((bits & 0x0F0F0F0Fu) << 4u) | ((bits & 0xF0F0F0F0u) >> 4u); + bits = ((bits & 0x00FF00FFu) << 8u) | ((bits & 0xFF00FF00u) >> 8u); + return float(bits) * 2.3283064365386963e-10; // / 0x100000000 +} +vec2 iTDHammersley(uint i, uint N) +{ + return vec2(float(i) / float(N), iTDRadicalInverse_VdC(i)); +} +vec3 iTDImportanceSampleGGX(vec2 Xi, float roughness2, vec3 N) +{ + float a = roughness2; + float phi = 2 * 3.14159265 * Xi.x; + float cosTheta = sqrt( (1 - Xi.y) / (1 + (a*a - 1) * Xi.y) ); + float sinTheta = sqrt( 1 - cosTheta * cosTheta ); + + vec3 H; + H.x = sinTheta * cos(phi); + H.y = sinTheta * sin(phi); + H.z = cosTheta; + + vec3 upVector = abs(N.z) < 0.999 ? vec3(0, 0, 1) : vec3(1, 0, 0); + vec3 tangentX = normalize(cross(upVector, N)); + vec3 tangentY = cross(N, tangentX); + + // Tangent to world space + vec3 worldResult = tangentX * H.x + tangentY * H.y + N * H.z; + return worldResult; +} +float iTDDistributionGGX(vec3 normal, vec3 half_vector, float roughness2) +{ + const float Epsilon = 0.000001; + + float NdotH = clamp(dot(normal, half_vector), Epsilon, 1.0); + + float alpha2 = roughness2 * roughness2; + + float denom = NdotH * NdotH * (alpha2 - 1.0) + 1.0; + denom = max(1e-8, denom); + return alpha2 / (PI * denom * denom); +} +vec3 iTDCalcF(vec3 F0, float VdotH) { + return F0 + (vec3(1.0) - F0) * pow(2.0, (-5.55473*VdotH - 6.98316) * VdotH); +} + +float iTDCalcG(float NdotL, float NdotV, float k) { + float Gl = 1.0 / (NdotL * (1.0 - k) + k); + float Gv = 1.0 / (NdotV * (1.0 - k) + k); + return Gl * Gv; +} +// 0 - All options +TDPBRResult TDLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness) +{ + TDPBRResult res; + return res; +} +// 0 - All options +void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,inout float shadowStrengthOut,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness) +{ + TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse; + specularContrib = res.specular; + shadowStrengthOut = res.shadowStrength; +} +// 0 - All options +void TDLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float roughness) +{ + TDPBRResult res = TDLightingPBR(index,diffuseColor,specularColor,worldSpacePos,normal,shadowStrength,shadowColor,camVector,roughness); diffuseContrib = res.diffuse; + specularContrib = res.specular; +} +// 0 - All options +TDPBRResult TDEnvLightingPBR(int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion) +{ + TDPBRResult res; + return res; +} +// 0 - All options +void TDEnvLightingPBR(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 diffuseColor,vec3 specularColor,vec3 normal,vec3 camVector,float roughness,float ambientOcclusion) +{ + TDPBRResult res = TDEnvLightingPBR(index, diffuseColor, specularColor, normal, camVector, roughness, ambientOcclusion); + diffuseContrib = res.diffuse; + specularContrib = res.specular; +} +// 0 - All options +TDPhongResult TDLighting(int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + return res; +} +// 0 - Legacy +void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,inout float shadowStrengthOut,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + diffuseContrib = res.diffuse; + specularContrib = res.specular; + specularContrib2 = res.specular2; + shadowStrengthOut = res.shadowStrength; +} +// 0 - Legacy +void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess,float shininess2) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + diffuseContrib = res.diffuse; + specularContrib = res.specular; + specularContrib2 = res.specular2; +} +// 1 - Without specular2 +void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor,vec3 camVector,float shininess) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + diffuseContrib = res.diffuse; + specularContrib = res.specular; +} +// 2 - Without shadows +void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,inout vec3 specularContrib2,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess,float shininess2) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + diffuseContrib = res.diffuse; + specularContrib = res.specular; + specularContrib2 = res.specular2; +} +// 3 - diffuse and specular only +void TDLighting(inout vec3 diffuseContrib,inout vec3 specularContrib,int index,vec3 worldSpacePos,vec3 normal,vec3 camVector,float shininess) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + diffuseContrib = res.diffuse; + specularContrib = res.specular; +} +// 4 - Diffuse only +void TDLighting(inout vec3 diffuseContrib,int index, vec3 worldSpacePos, vec3 normal) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + diffuseContrib = res.diffuse; +} +// 5 - diffuse only with shadows +void TDLighting(inout vec3 diffuseContrib,int index,vec3 worldSpacePos,vec3 normal,float shadowStrength,vec3 shadowColor) +{ + TDPhongResult res; + switch (index) + { + default: + res.diffuse = vec3(0.0); + res.specular = vec3(0.0); + res.specular2 = vec3(0.0); + res.shadowStrength = 0.0; + break; + } + diffuseContrib = res.diffuse; +} +vec4 TDProjMap(int index, vec3 worldSpacePos, vec4 defaultColor) { + switch (index) + { + default: return defaultColor; + } +} +vec4 TDFog(vec4 color, vec3 lightingSpacePosition, int cameraIndex) { + switch (cameraIndex) { + default: + case 0: + { + return color; + } + } +} +vec4 TDFog(vec4 color, vec3 lightingSpacePosition) +{ + return TDFog(color, lightingSpacePosition, 0); +} +vec3 TDInstanceTexCoord(int index, vec3 t) { + vec3 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceTexCoord, coord); + v[0] = t.s; + v[1] = t.t; + v[2] = samp[0]; + t.stp = v.stp; + return t; +} +bool TDInstanceActive(int index) { + index -= uTDInstanceIDOffset; + float v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceT, coord); + v = samp[0]; + return v != 0.0; +} +vec3 iTDInstanceTranslate(int index, out bool instanceActive) { + int origIndex = index; + index -= uTDInstanceIDOffset; + vec3 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceT, coord); + v[0] = samp[1]; + v[1] = samp[2]; + v[2] = samp[3]; + instanceActive = samp[0] != 0.0; + return v; +} +vec3 TDInstanceTranslate(int index) { + index -= uTDInstanceIDOffset; + vec3 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceT, coord); + v[0] = samp[1]; + v[1] = samp[2]; + v[2] = samp[3]; + return v; +} +mat3 TDInstanceRotateMat(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 0.0, 0.0); + mat3 m = mat3(1.0); +{ + mat3 r; +} + return m; +} +vec3 TDInstanceScale(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(1.0, 1.0, 1.0); + return v; +} +vec3 TDInstancePivot(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 0.0, 0.0); + return v; +} +vec3 TDInstanceRotTo(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 0.0, 1.0); + return v; +} +vec3 TDInstanceRotUp(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 1.0, 0.0); + return v; +} +mat4 TDInstanceMat(int id) { + bool instanceActive = true; + vec3 t = iTDInstanceTranslate(id, instanceActive); + if (!instanceActive) + { + return mat4(0.0); + } + mat4 m = mat4(1.0); + { + vec3 tt = t; + m[3][0] += m[0][0]*tt.x; + m[3][1] += m[0][1]*tt.x; + m[3][2] += m[0][2]*tt.x; + m[3][3] += m[0][3]*tt.x; + m[3][0] += m[1][0]*tt.y; + m[3][1] += m[1][1]*tt.y; + m[3][2] += m[1][2]*tt.y; + m[3][3] += m[1][3]*tt.y; + m[3][0] += m[2][0]*tt.z; + m[3][1] += m[2][1]*tt.z; + m[3][2] += m[2][2]*tt.z; + m[3][3] += m[2][3]*tt.z; + } + return m; +} +mat3 TDInstanceMat3(int id) { + mat3 m = mat3(1.0); + return m; +} +mat3 TDInstanceMat3ForNorm(int id) { + mat3 m = TDInstanceMat3(id); + return m; +} +vec4 TDInstanceColor(int index, vec4 curColor) { + index -= uTDInstanceIDOffset; + vec4 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceColor, coord); + v[0] = samp[0]; + v[1] = samp[1]; + v[2] = samp[2]; + v[3] = 1.0; + curColor[0] = v[0]; +; + curColor[1] = v[1]; +; + curColor[2] = v[2]; +; + return curColor; +} diff --git a/Test/vk.relaxed.stagelink.0.1.vert b/Test/vk.relaxed.stagelink.0.1.vert new file mode 100755 index 0000000000..3c5de986eb --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.1.vert @@ -0,0 +1,242 @@ +#version 460 +layout(location = 0) in vec3 P; +layout(location = 1) in vec3 N; +layout(location = 2) in vec4 Cd; +layout(location = 3) in vec3 uv[8]; +uniform int uTDInstanceIDOffset; +uniform int uTDNumInstances; +uniform float uTDAlphaTestVal; +#define TD_NUM_COLOR_BUFFERS 1 +#define TD_NUM_LIGHTS 0 +#define TD_NUM_SHADOWED_LIGHTS 0 +#define TD_NUM_ENV_LIGHTS 0 +#define TD_LIGHTS_ARRAY_SIZE 1 +#define TD_ENV_LIGHTS_ARRAY_SIZE 1 +#define TD_NUM_CAMERAS 1 +struct TDLight +{ + vec4 position; + vec3 direction; + vec3 diffuse; + vec4 nearFar; + vec4 lightSize; + vec4 misc; + vec4 coneLookupScaleBias; + vec4 attenScaleBiasRoll; + mat4 shadowMapMatrix; + mat4 shadowMapCamMatrix; + vec4 shadowMapRes; + mat4 projMapMatrix; +}; +struct TDEnvLight +{ + vec3 color; + mat3 rotate; +}; +layout(std140) uniform TDLightBlock +{ + TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE]; +}; +layout(std140) uniform TDEnvLightBlock +{ + TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE]; +}; +layout(std430) readonly restrict buffer TDEnvLightBuffer +{ + vec3 shCoeffs[9]; +} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE]; +struct TDPhongResult +{ + vec3 diffuse; + vec3 specular; + vec3 specular2; + float shadowStrength; +}; +struct TDPBRResult +{ + vec3 diffuse; + vec3 specular; + float shadowStrength; +}; +struct TDMatrix +{ + mat4 world; + mat4 worldInverse; + mat4 worldCam; + mat4 worldCamInverse; + mat4 cam; + mat4 camInverse; + mat4 camProj; + mat4 camProjInverse; + mat4 proj; + mat4 projInverse; + mat4 worldCamProj; + mat4 worldCamProjInverse; + mat4 quadReproject; + mat3 worldForNormals; + mat3 camForNormals; + mat3 worldCamForNormals; +}; +layout(std140) uniform TDMatricesBlock { + TDMatrix uTDMats[TD_NUM_CAMERAS]; +}; +struct TDCameraInfo +{ + vec4 nearFar; + vec4 fog; + vec4 fogColor; + int renderTOPCameraIndex; +}; +layout(std140) uniform TDCameraInfoBlock { + TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS]; +}; +struct TDGeneral +{ + vec4 ambientColor; + vec4 nearFar; + vec4 viewport; + vec4 viewportRes; + vec4 fog; + vec4 fogColor; +}; +layout(std140) uniform TDGeneralBlock { + TDGeneral uTDGeneral; +}; +layout (rgba8) uniform image2D mTD2DImageOutputs[1]; +layout (rgba8) uniform image2DArray mTD2DArrayImageOutputs[1]; +layout (rgba8) uniform image3D mTD3DImageOutputs[1]; +layout (rgba8) uniform imageCube mTDCubeImageOutputs[1]; + +mat4 TDInstanceMat(int instanceID); +mat3 TDInstanceMat3(int instanceID); +vec3 TDInstanceTranslate(int instanceID); +bool TDInstanceActive(int instanceID); +mat3 TDInstanceRotateMat(int instanceID); +vec3 TDInstanceScale(int instanceID); +vec3 TDInstanceTexCoord(int instanceID, vec3 t); +vec4 TDInstanceColor(int instanceID, vec4 curColor); +vec4 TDInstanceCustomAttrib0(int instanceID); +vec4 TDInstanceCustomAttrib1(int instanceID); +vec4 TDInstanceCustomAttrib2(int instanceID); +vec4 TDInstanceCustomAttrib3(int instanceID); +vec4 TDInstanceCustomAttrib4(int instanceID); +vec4 TDInstanceCustomAttrib5(int instanceID); +vec4 TDInstanceCustomAttrib6(int instanceID); +vec4 TDInstanceCustomAttrib7(int instanceID); +vec4 TDInstanceCustomAttrib8(int instanceID); +vec4 TDInstanceCustomAttrib9(int instanceID); +vec4 TDInstanceCustomAttrib10(int instanceID); +vec4 TDInstanceCustomAttrib11(int instanceID); +uint TDInstanceTextureIndex(int instanceIndex); +vec4 TDInstanceTexture(uint texIndex, vec3 uv); +vec4 TDInstanceTexture(uint texIndex, vec2 uv); + +vec4 TDDeform(vec4 pos); +vec4 TDDeform(vec3 pos); +vec4 TDDeform(int instanceID, vec3 pos); +vec3 TDDeformVec(vec3 v); +vec3 TDDeformVec(int instanceID, vec3 v); +vec3 TDDeformNorm(vec3 v); +vec3 TDDeformNorm(int instanceID, vec3 v); +vec4 TDSkinnedDeform(vec4 pos); +vec3 TDSkinnedDeformVec(vec3 vec); +vec3 TDSkinnedDeformNorm(vec3 vec); +vec4 TDInstanceDeform(vec4 pos); +vec3 TDInstanceDeformVec(vec3 vec); +vec3 TDInstanceDeformNorm(vec3 vec); +vec4 TDInstanceDeform(int instanceID, vec4 pos); +vec3 TDInstanceDeformVec(int instanceID, vec3 vec); +vec3 TDInstanceDeformNorm(int instanceID, vec3 vec); +vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm); +mat4 TDBoneMat(int boneIndex); +mat4 TDInstanceMat(); +mat3 TDInstanceMat3(); +vec3 TDInstanceTranslate(); +bool TDInstanceActive(); +mat3 TDInstanceRotateMat(); +vec3 TDInstanceScale(); +vec3 TDInstanceTexCoord(vec3 t); +vec4 TDInstanceColor(vec4 curColor); +vec4 TDPointColor(); +#ifdef TD_PICKING_ACTIVE +out TDPickVertex { + vec3 sopSpacePosition; + vec3 camSpacePosition; + vec3 worldSpacePosition; + vec3 sopSpaceNormal; + vec3 camSpaceNormal; + vec3 worldSpaceNormal; + vec3 uv[1]; + flat int pickId; + flat int instanceId; + vec4 color; +} oTDPickVert; +#define vTDPickVert oTDPickVert +#endif +vec4 iTDCamToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod) +{ + if (!TDInstanceActive()) + return vec4(2, 2, 2, 0); + v = uTDMats[0].proj * v; + return v; +} +vec4 iTDWorldToProj(vec4 v, vec3 uv, int cameraIndex, bool applyPickMod) { + if (!TDInstanceActive()) + return vec4(2, 2, 2, 0); + v = uTDMats[0].camProj * v; + return v; +} +vec4 TDDeform(vec4 pos); +vec4 TDDeform(vec3 pos); +vec4 TDInstanceColor(vec4 curColor); +vec3 TDInstanceTexCoord(vec3 t); +int TDInstanceID() { + return gl_InstanceID + uTDInstanceIDOffset; +} +int TDCameraIndex() { + return 0; +} +vec3 TDUVUnwrapCoord() { + return uv[0]; +} +#ifdef TD_PICKING_ACTIVE +uniform int uTDPickId; +#endif +int TDPickID() { +#ifdef TD_PICKING_ACTIVE + return uTDPickId; +#else + return 0; +#endif +} +float iTDConvertPickId(int id) { + id |= 1073741824; + return intBitsToFloat(id); +} + + void TDWritePickingValues() { +#ifdef TD_PICKING_ACTIVE + vec4 worldPos = TDDeform(P); + vec4 camPos = uTDMats[TDCameraIndex()].cam * worldPos; + oTDPickVert.pickId = TDPickID(); +#endif +} +vec4 TDWorldToProj(vec4 v, vec3 uv) +{ + return iTDWorldToProj(v, uv, TDCameraIndex(), true); +} +vec4 TDWorldToProj(vec3 v, vec3 uv) +{ + return TDWorldToProj(vec4(v, 1.0), uv); +} +vec4 TDWorldToProj(vec4 v) +{ + return TDWorldToProj(v, vec3(0.0)); +} +vec4 TDWorldToProj(vec3 v) +{ + return TDWorldToProj(vec4(v, 1.0)); +} +vec4 TDPointColor() { + return Cd; +} diff --git a/Test/vk.relaxed.stagelink.0.2.frag b/Test/vk.relaxed.stagelink.0.2.frag new file mode 100755 index 0000000000..27bd540db8 --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.2.frag @@ -0,0 +1,9 @@ +#version 460 +vec4 TDOutputSwizzle(vec4 c) +{ + return c.rgba; +} +uvec4 TDOutputSwizzle(uvec4 c) +{ + return c.rgba; +} diff --git a/Test/vk.relaxed.stagelink.0.2.vert b/Test/vk.relaxed.stagelink.0.2.vert new file mode 100755 index 0000000000..69c0b21b1a --- /dev/null +++ b/Test/vk.relaxed.stagelink.0.2.vert @@ -0,0 +1,320 @@ +#version 460 +uniform int uTDInstanceIDOffset; +uniform int uTDNumInstances; +uniform float uTDAlphaTestVal; +#define TD_NUM_COLOR_BUFFERS 1 +#define TD_NUM_LIGHTS 0 +#define TD_NUM_SHADOWED_LIGHTS 0 +#define TD_NUM_ENV_LIGHTS 0 +#define TD_LIGHTS_ARRAY_SIZE 1 +#define TD_ENV_LIGHTS_ARRAY_SIZE 1 +#define TD_NUM_CAMERAS 1 +struct TDLight +{ + vec4 position; + vec3 direction; + vec3 diffuse; + vec4 nearFar; + vec4 lightSize; + vec4 misc; + vec4 coneLookupScaleBias; + vec4 attenScaleBiasRoll; + mat4 shadowMapMatrix; + mat4 shadowMapCamMatrix; + vec4 shadowMapRes; + mat4 projMapMatrix; +}; +struct TDEnvLight +{ + vec3 color; + mat3 rotate; +}; +layout(std140) uniform TDLightBlock +{ + TDLight uTDLights[TD_LIGHTS_ARRAY_SIZE]; +}; +layout(std140) uniform TDEnvLightBlock +{ + TDEnvLight uTDEnvLights[TD_ENV_LIGHTS_ARRAY_SIZE]; +}; +layout(std430) readonly restrict buffer TDEnvLightBuffer +{ + vec3 shCoeffs[9]; +} uTDEnvLightBuffers[TD_ENV_LIGHTS_ARRAY_SIZE]; +struct TDPhongResult +{ + vec3 diffuse; + vec3 specular; + vec3 specular2; + float shadowStrength; +}; +struct TDPBRResult +{ + vec3 diffuse; + vec3 specular; + float shadowStrength; +}; +struct TDMatrix +{ + mat4 world; + mat4 worldInverse; + mat4 worldCam; + mat4 worldCamInverse; + mat4 cam; + mat4 camInverse; + mat4 camProj; + mat4 camProjInverse; + mat4 proj; + mat4 projInverse; + mat4 worldCamProj; + mat4 worldCamProjInverse; + mat4 quadReproject; + mat3 worldForNormals; + mat3 camForNormals; + mat3 worldCamForNormals; +}; +layout(std140) uniform TDMatricesBlock { + TDMatrix uTDMats[TD_NUM_CAMERAS]; +}; +struct TDCameraInfo +{ + vec4 nearFar; + vec4 fog; + vec4 fogColor; + int renderTOPCameraIndex; +}; +layout(std140) uniform TDCameraInfoBlock { + TDCameraInfo uTDCamInfos[TD_NUM_CAMERAS]; +}; +struct TDGeneral +{ + vec4 ambientColor; + vec4 nearFar; + vec4 viewport; + vec4 viewportRes; + vec4 fog; + vec4 fogColor; +}; +layout(std140) uniform TDGeneralBlock { + TDGeneral uTDGeneral; +}; + +layout(binding = 15) uniform samplerBuffer sTDInstanceT; +layout(binding = 16) uniform samplerBuffer sTDInstanceTexCoord; +layout(binding = 17) uniform samplerBuffer sTDInstanceColor; +#define TD_NUM_BONES 0 +vec4 TDWorldToProj(vec4 v); +vec4 TDWorldToProj(vec3 v); +vec4 TDWorldToProj(vec4 v, vec3 uv); +vec4 TDWorldToProj(vec3 v, vec3 uv); +int TDPickID(); +int TDInstanceID(); +int TDCameraIndex(); +vec3 TDUVUnwrapCoord(); +vec3 TDInstanceTexCoord(int index, vec3 t) { + vec3 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceTexCoord, coord); + v[0] = t.s; + v[1] = t.t; + v[2] = samp[0]; + t.stp = v.stp; + return t; +} +bool TDInstanceActive(int index) { + index -= uTDInstanceIDOffset; + float v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceT, coord); + v = samp[0]; + return v != 0.0; +} +vec3 iTDInstanceTranslate(int index, out bool instanceActive) { + int origIndex = index; + index -= uTDInstanceIDOffset; + vec3 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceT, coord); + v[0] = samp[1]; + v[1] = samp[2]; + v[2] = samp[3]; + instanceActive = samp[0] != 0.0; + return v; +} +vec3 TDInstanceTranslate(int index) { + index -= uTDInstanceIDOffset; + vec3 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceT, coord); + v[0] = samp[1]; + v[1] = samp[2]; + v[2] = samp[3]; + return v; +} +mat3 TDInstanceRotateMat(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 0.0, 0.0); + mat3 m = mat3(1.0); +{ + mat3 r; +} + return m; +} +vec3 TDInstanceScale(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(1.0, 1.0, 1.0); + return v; +} +vec3 TDInstancePivot(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 0.0, 0.0); + return v; +} +vec3 TDInstanceRotTo(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 0.0, 1.0); + return v; +} +vec3 TDInstanceRotUp(int index) { + index -= uTDInstanceIDOffset; + vec3 v = vec3(0.0, 1.0, 0.0); + return v; +} +mat4 TDInstanceMat(int id) { + bool instanceActive = true; + vec3 t = iTDInstanceTranslate(id, instanceActive); + if (!instanceActive) + { + return mat4(0.0); + } + mat4 m = mat4(1.0); + { + vec3 tt = t; + m[3][0] += m[0][0]*tt.x; + m[3][1] += m[0][1]*tt.x; + m[3][2] += m[0][2]*tt.x; + m[3][3] += m[0][3]*tt.x; + m[3][0] += m[1][0]*tt.y; + m[3][1] += m[1][1]*tt.y; + m[3][2] += m[1][2]*tt.y; + m[3][3] += m[1][3]*tt.y; + m[3][0] += m[2][0]*tt.z; + m[3][1] += m[2][1]*tt.z; + m[3][2] += m[2][2]*tt.z; + m[3][3] += m[2][3]*tt.z; + } + return m; +} +mat3 TDInstanceMat3(int id) { + mat3 m = mat3(1.0); + return m; +} +mat3 TDInstanceMat3ForNorm(int id) { + mat3 m = TDInstanceMat3(id); + return m; +} +vec4 TDInstanceColor(int index, vec4 curColor) { + index -= uTDInstanceIDOffset; + vec4 v; + int coord = index; + vec4 samp = texelFetch(sTDInstanceColor, coord); + v[0] = samp[0]; + v[1] = samp[1]; + v[2] = samp[2]; + v[3] = 1.0; + curColor[0] = v[0]; +; + curColor[1] = v[1]; +; + curColor[2] = v[2]; +; + return curColor; +} +vec4 TDInstanceDeform(int id, vec4 pos) { + pos = TDInstanceMat(id) * pos; + return uTDMats[TDCameraIndex()].world * pos; +} + +vec3 TDInstanceDeformVec(int id, vec3 vec) +{ + mat3 m = TDInstanceMat3(id); + return mat3(uTDMats[TDCameraIndex()].world) * (m * vec); +} +vec3 TDInstanceDeformNorm(int id, vec3 vec) +{ + mat3 m = TDInstanceMat3ForNorm(id); + return mat3(uTDMats[TDCameraIndex()].worldForNormals) * (m * vec); +} +vec4 TDInstanceDeform(vec4 pos) { + return TDInstanceDeform(TDInstanceID(), pos); +} +vec3 TDInstanceDeformVec(vec3 vec) { + return TDInstanceDeformVec(TDInstanceID(), vec); +} +vec3 TDInstanceDeformNorm(vec3 vec) { + return TDInstanceDeformNorm(TDInstanceID(), vec); +} +bool TDInstanceActive() { return TDInstanceActive(TDInstanceID()); } +vec3 TDInstanceTranslate() { return TDInstanceTranslate(TDInstanceID()); } +mat3 TDInstanceRotateMat() { return TDInstanceRotateMat(TDInstanceID()); } +vec3 TDInstanceScale() { return TDInstanceScale(TDInstanceID()); } +mat4 TDInstanceMat() { return TDInstanceMat(TDInstanceID()); + } +mat3 TDInstanceMat3() { return TDInstanceMat3(TDInstanceID()); +} +vec3 TDInstanceTexCoord(vec3 t) { + return TDInstanceTexCoord(TDInstanceID(), t); +} +vec4 TDInstanceColor(vec4 curColor) { + return TDInstanceColor(TDInstanceID(), curColor); +} +vec4 TDSkinnedDeform(vec4 pos) { return pos; } + +vec3 TDSkinnedDeformVec(vec3 vec) { return vec; } + +vec3 TDFastDeformTangent(vec3 oldNorm, vec4 oldTangent, vec3 deformedNorm) +{ return oldTangent.xyz; } +mat4 TDBoneMat(int index) { + return mat4(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1); +} +vec4 TDDeform(vec4 pos) { + pos = TDSkinnedDeform(pos); + pos = TDInstanceDeform(pos); + return pos; +} + +vec4 TDDeform(int instanceID, vec3 p) { + vec4 pos = vec4(p, 1.0); + pos = TDSkinnedDeform(pos); + pos = TDInstanceDeform(instanceID, pos); + return pos; +} + +vec4 TDDeform(vec3 pos) { + return TDDeform(TDInstanceID(), pos); +} + +vec3 TDDeformVec(int instanceID, vec3 vec) { + vec = TDSkinnedDeformVec(vec); + vec = TDInstanceDeformVec(instanceID, vec); + return vec; +} + +vec3 TDDeformVec(vec3 vec) { + return TDDeformVec(TDInstanceID(), vec); +} + +vec3 TDDeformNorm(int instanceID, vec3 vec) { + vec = TDSkinnedDeformVec(vec); + vec = TDInstanceDeformNorm(instanceID, vec); + return vec; +} + +vec3 TDDeformNorm(vec3 vec) { + return TDDeformNorm(TDInstanceID(), vec); +} + +vec3 TDSkinnedDeformNorm(vec3 vec) { + vec = TDSkinnedDeformVec(vec); + return vec; +} diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 620be97c97..fe376fee88 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -580,9 +580,6 @@ void TIntermediate::mergeGlobalUniformBlocks(TInfoSink& infoSink, TIntermediate& } void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* block, TIntermSymbol* unitBlock, TIntermediate* unit) { - if (block->getType() == unitBlock->getType()) { - return; - } if (block->getType().getTypeName() != unitBlock->getType().getTypeName() || block->getType().getBasicType() != unitBlock->getType().getBasicType() || @@ -629,44 +626,42 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl } } - TType unitType; - unitType.shallowCopy(unitBlock->getType()); - // update symbol node in unit tree, // and other nodes that may reference it class TMergeBlockTraverser : public TIntermTraverser { public: - TMergeBlockTraverser(const glslang::TType &type, const glslang::TType& unitType, - glslang::TIntermediate& unit, - const std::map& memberIdxUpdates) : - newType(type), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) - { } - virtual ~TMergeBlockTraverser() { } - - const glslang::TType& newType; // type with modifications - const glslang::TType& unitType; // copy of original type - glslang::TIntermediate& unit; // intermediate that is being updated - const std::map& memberIndexUpdates; - - virtual void visitSymbol(TIntermSymbol* symbol) + TMergeBlockTraverser(const TIntermSymbol* newSym) + : newSymbol(newSym), unitType(nullptr), unit(nullptr), memberIndexUpdates(nullptr) { - glslang::TType& symType = symbol->getWritableType(); + } + TMergeBlockTraverser(const TIntermSymbol* newSym, const glslang::TType* unitType, glslang::TIntermediate* unit, + const std::map* memberIdxUpdates) + : newSymbol(newSym), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) + { + } + virtual ~TMergeBlockTraverser() {} - if (symType == unitType) { - // each symbol node has a local copy of the unitType - // if merging involves changing properties that aren't shared objects - // they should be updated in all instances + const TIntermSymbol* newSymbol; + const glslang::TType* unitType; // copy of original type + glslang::TIntermediate* unit; // intermediate that is being updated + const std::map* memberIndexUpdates; - // e.g. the struct list is a ptr to an object, so it can be updated - // once, outside the traverser - //*symType.getWritableStruct() = *newType.getStruct(); + virtual void visitSymbol(TIntermSymbol* symbol) + { + if (newSymbol->getAccessName() == symbol->getAccessName() && + newSymbol->getQualifier().getBlockStorage() == symbol->getQualifier().getBlockStorage()) { + // Each symbol node may have a local copy of the block structure. + // Update those structures to match the new one post-merge + *(symbol->getWritableType().getWritableStruct()) = *(newSymbol->getType().getStruct()); } - } virtual bool visitBinary(TVisit, glslang::TIntermBinary* node) { - if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == unitType) { + if (!unit || !unitType || !memberIndexUpdates || memberIndexUpdates->empty()) + return true; + + if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == *unitType) { // this is a dereference to a member of the block since the // member list changed, need to update this to point to the // right index @@ -674,8 +669,8 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl glslang::TIntermConstantUnion* constNode = node->getRight()->getAsConstantUnion(); unsigned int memberIdx = constNode->getConstArray()[0].getUConst(); - unsigned int newIdx = memberIndexUpdates.at(memberIdx); - TIntermTyped* newConstNode = unit.addConstantUnion(newIdx, node->getRight()->getLoc()); + unsigned int newIdx = memberIndexUpdates->at(memberIdx); + TIntermTyped* newConstNode = unit->addConstantUnion(newIdx, node->getRight()->getLoc()); node->setRight(newConstNode); delete constNode; @@ -684,10 +679,20 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl } return true; } - } finalLinkTraverser(block->getType(), unitType, *unit, memberIndexUpdates); + }; + + // 'this' may have symbols that are using the old block structure, so traverse the tree to update those + // in 'visitSymbol' + TMergeBlockTraverser finalLinkTraverser(block); + getTreeRoot()->traverse(&finalLinkTraverser); - // update the tree to use the new type - unit->getTreeRoot()->traverse(&finalLinkTraverser); + // The 'unit' intermediate needs the block structures update, but also structure entry indices + // may have changed from the old block to the new one that it was merged into, so update those + // in 'visitBinary' + TType unitType; + unitType.shallowCopy(unitBlock->getType()); + TMergeBlockTraverser unitFinalLinkTraverser(block, &unitType, unit, &memberIndexUpdates); + unit->getTreeRoot()->traverse(&unitFinalLinkTraverser); // update the member list (*unitMemberList) = (*memberList); diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp index 777134d913..96cd3cf69a 100644 --- a/gtests/VkRelaxed.FromFile.cpp +++ b/gtests/VkRelaxed.FromFile.cpp @@ -107,8 +107,8 @@ bool verifyIOMapping(std::string& linkingError, glslang::TProgram& program) { auto inQualifier = in.getType()->getQualifier(); auto outQualifier = out->second->getType()->getQualifier(); success &= outQualifier.layoutLocation == inQualifier.layoutLocation; - } - else { + // These are not part of a matched interface. Other cases still need to be added. + } else if (name != "gl_FrontFacing" && name != "gl_FragCoord") { success &= false; } } @@ -293,6 +293,7 @@ INSTANTIATE_TEST_SUITE_P( ::testing::ValuesIn(std::vector({ {{"vk.relaxed.frag"}}, {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}}, + {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}}, {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}}, {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}}, {{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } }, From ca0d54d51b1fd7bedcde69cede2e1b7141501047 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 30 Dec 2021 11:56:57 -0700 Subject: [PATCH 011/594] Enhance readability of error messages for GLSL Specifically, make GLSL link error messages more specific and output only information relevant to the error. Also change type printing to more closely reflect GLSL syntax. This is the default for link error messages, but must me enabled with the new option --enhanced-msgs for compilation error messages. Also with --enhanced-msgs, only emit one error message per source line. --- StandAlone/StandAlone.cpp | 9 + Test/baseResults/150.tesc.out | 12 +- Test/baseResults/310.geom.out | 2 +- Test/baseResults/310.tesc.out | 4 +- Test/baseResults/310.tese.out | 4 +- Test/baseResults/320.geom.out | 2 +- Test/baseResults/320.tesc.out | 4 +- Test/baseResults/320.tese.out | 2 +- Test/baseResults/410.geom.out | 2 +- Test/baseResults/420.tesc.out | 2 +- Test/baseResults/450.geom.out | 2 +- Test/baseResults/enhanced.0.frag.out | 6 + Test/baseResults/enhanced.1.frag.out | 6 + Test/baseResults/enhanced.2.frag.out | 6 + Test/baseResults/enhanced.3.link.out | 8 + Test/baseResults/enhanced.4.link.out | 7 + Test/baseResults/enhanced.5.link.out | 8 + Test/baseResults/enhanced.6.link.out | 7 + Test/baseResults/enhanced.7.link.out | 7 + Test/baseResults/iomap.crossStage.2.vert.out | 5 +- Test/baseResults/iomap.crossStage.vert.out | 5 +- Test/baseResults/iomap.crossStage.vk.vert.out | 5 +- .../link.multiAnonBlocksInvalid.0.0.vert.out | 23 +- .../link.multiBlocksInvalid.0.0.vert.out | 42 +- .../link.multiBlocksValid.1.0.vert.out | 15 +- .../link.vk.differentPC.0.0.frag.out | 6 +- .../link.vk.differentPC.1.0.frag.out | 10 +- .../link.vk.multiBlocksValid.0.0.vert.out | 20 +- .../link.vk.multiBlocksValid.1.0.geom.out | 25 +- .../link.vk.pcNamingValid.0.0.vert.out | 5 +- Test/enhanced.0.frag | 9 + Test/enhanced.1.frag | 11 + Test/enhanced.2.frag | 7 + Test/enhanced.3.frag | 16 + Test/enhanced.3.vert | 22 + Test/enhanced.4.frag | 16 + Test/enhanced.4.vert | 22 + Test/enhanced.5.frag | 16 + Test/enhanced.5.vert | 22 + Test/enhanced.6.frag | 16 + Test/enhanced.6.vert | 22 + Test/enhanced.7.frag | 20 + Test/enhanced.7.vert | 27 + Test/runtests | 22 + glslang/Include/Types.h | 504 +++++++++++------- glslang/Include/glslang_c_shader_types.h | 1 + glslang/Include/intermediate.h | 2 +- .../MachineIndependent/ParseContextBase.cpp | 3 + glslang/MachineIndependent/ParseHelper.cpp | 112 ++-- glslang/MachineIndependent/ShaderLang.cpp | 3 + glslang/MachineIndependent/glslang.m4 | 6 +- glslang/MachineIndependent/glslang.y | 6 +- glslang/MachineIndependent/glslang_tab.cpp | 6 +- glslang/MachineIndependent/linkValidate.cpp | 253 +++++++-- .../MachineIndependent/localintermediate.h | 18 +- glslang/Public/ShaderLang.h | 2 + 56 files changed, 1053 insertions(+), 372 deletions(-) create mode 100644 Test/baseResults/enhanced.0.frag.out create mode 100644 Test/baseResults/enhanced.1.frag.out create mode 100644 Test/baseResults/enhanced.2.frag.out create mode 100644 Test/baseResults/enhanced.3.link.out create mode 100644 Test/baseResults/enhanced.4.link.out create mode 100644 Test/baseResults/enhanced.5.link.out create mode 100644 Test/baseResults/enhanced.6.link.out create mode 100644 Test/baseResults/enhanced.7.link.out create mode 100644 Test/enhanced.0.frag create mode 100644 Test/enhanced.1.frag create mode 100644 Test/enhanced.2.frag create mode 100644 Test/enhanced.3.frag create mode 100644 Test/enhanced.3.vert create mode 100644 Test/enhanced.4.frag create mode 100644 Test/enhanced.4.vert create mode 100644 Test/enhanced.5.frag create mode 100644 Test/enhanced.5.vert create mode 100644 Test/enhanced.6.frag create mode 100644 Test/enhanced.6.vert create mode 100644 Test/enhanced.7.frag create mode 100644 Test/enhanced.7.vert diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 72f552274d..bda4ee783a 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -178,6 +178,7 @@ const char* variableName = nullptr; bool HlslEnable16BitTypes = false; bool HlslDX9compatible = false; bool HlslDxPositionW = false; +bool EnhancedMsgs = false; bool DumpBuiltinSymbols = false; std::vector IncludeDirectoryList; @@ -665,6 +666,8 @@ void ProcessArguments(std::vector>& workItem HlslDX9compatible = true; } else if (lowerword == "hlsl-dx-position-w") { HlslDxPositionW = true; + } else if (lowerword == "enhanced-msgs") { + EnhancedMsgs = true; } else if (lowerword == "auto-sampled-textures") { autoSampledTextures = true; } else if (lowerword == "invert-y" || // synonyms @@ -1073,6 +1076,8 @@ void SetMessageOptions(EShMessages& messages) messages = (EShMessages)(messages | EShMsgHlslDX9Compatible); if (DumpBuiltinSymbols) messages = (EShMessages)(messages | EShMsgBuiltinSymbolTable); + if (EnhancedMsgs) + messages = (EShMessages)(messages | EShMsgEnhanced); } // @@ -1301,6 +1306,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (HlslDxPositionW) shader->setDxPositionW(true); + if (EnhancedMsgs) + shader->setEnhancedMsgs(); + // Set up the environment, some subsettings take precedence over earlier // ways of setting things. if (Options & EOptionSpv) { @@ -1867,6 +1875,7 @@ void usage() " --hlsl-dx-position-w W component of SV_Position in HLSL fragment\n" " shaders compatible with DirectX\n" " --invert-y | --iy invert position.Y output in vertex shader\n" + " --enhanced-msgs print more readable error messages (GLSL only)\n" " --keep-uncalled | --ku don't eliminate uncalled functions\n" " --nan-clamp favor non-NaN operand in min, max, and clamp\n" " --no-storage-format | --nsf use Unknown image format\n" diff --git a/Test/baseResults/150.tesc.out b/Test/baseResults/150.tesc.out index 535a8a6288..78b32da23c 100644 --- a/Test/baseResults/150.tesc.out +++ b/Test/baseResults/150.tesc.out @@ -627,7 +627,7 @@ ERROR: node is still EOpNull! ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb -ERROR: 0:26: 'gl_PointSize' : no such field in structure +ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out' ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' ERROR: 0:29: 'out' : type must be an array: outf ERROR: 0:43: 'vertices' : must be greater than 0 @@ -940,8 +940,9 @@ ERROR: Linking tessellation control stage: Multiple function bodies in multiple main( ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( -ERROR: Linking tessellation control stage: Types must match: - outa: " global 4-element array of int" versus " global 1-element array of int" +ERROR: Linking tessellation control and tessellation control stages: Array sizes must be compatible: + tessellation control stage: " int outa[4]" + tessellation control stage: " int outa[1]" ERROR: Linking tessellation control stage: can't handle multiple entry points per stage ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( @@ -951,8 +952,9 @@ ERROR: Linking tessellation control stage: Multiple function bodies in multiple foo( ERROR: Linking tessellation control stage: Multiple function bodies in multiple compilation units for the same signature in the same stage: main( -ERROR: Linking tessellation control stage: Types must match: - gl_out: " out 4-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 2-element array of float ClipDistance gl_ClipDistance}" versus " out 3-element array of block{ out 4-component vector of float Position gl_Position}" +ERROR: Linking tessellation control and tessellation control stages: tessellation control block member has no corresponding member in tessellation control block: + tessellation control stage: Block: gl_PerVertex, Member: gl_PointSize + tessellation control stage: Block: gl_PerVertex, Member: n/a Linked tessellation evaluation stage: diff --git a/Test/baseResults/310.geom.out b/Test/baseResults/310.geom.out index b0dabc3b20..2fa5d111c1 100644 --- a/Test/baseResults/310.geom.out +++ b/Test/baseResults/310.geom.out @@ -6,7 +6,7 @@ ERROR: 0:43: 'EmitStreamVertex' : no matching overloaded function found ERROR: 0:44: 'EndStreamPrimitive' : no matching overloaded function found ERROR: 0:47: 'gl_ClipDistance' : undeclared identifier ERROR: 0:47: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector -ERROR: 0:48: 'gl_ClipDistance' : no such field in structure +ERROR: 0:48: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:48: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:47: 'assign' : l-value required (can't modify a const) ERROR: 0:55: 'selecting output stream' : not supported with this profile: es diff --git a/Test/baseResults/310.tesc.out b/Test/baseResults/310.tesc.out index 25ce6ee937..bd4c1bdcea 100644 --- a/Test/baseResults/310.tesc.out +++ b/Test/baseResults/310.tesc.out @@ -6,12 +6,12 @@ ERROR: 0:12: 'patch' : can only use on output in tessellation-control shader ERROR: 0:26: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:27: 'gl_ClipDistance' : no such field in structure +ERROR: 0:27: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:27: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:34: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:35: 'gl_ClipDistance' : no such field in structure +ERROR: 0:35: 'gl_ClipDistance' : no such field in structure 'gl_out' ERROR: 0:35: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:35: 'assign' : l-value required (can't modify a const) ERROR: 0:41: '' : tessellation control barrier() cannot be placed within flow control diff --git a/Test/baseResults/310.tese.out b/Test/baseResults/310.tese.out index 2f23d9ba80..5eecaffa2d 100644 --- a/Test/baseResults/310.tese.out +++ b/Test/baseResults/310.tese.out @@ -10,7 +10,7 @@ ERROR: 0:26: 'barrier' : no matching overloaded function found ERROR: 0:37: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:38: 'gl_ClipDistance' : no such field in structure +ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:47: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size @@ -43,7 +43,7 @@ ERROR: 0:100: 'location' : overlapping use of location 24 ERROR: 0:103: 'location' : overlapping use of location 24 ERROR: 0:105: 'gl_TessLevelOuter' : identifiers starting with "gl_" are reserved ERROR: 0:113: 'sample' : Reserved word. -ERROR: 0:119: 'gl_PointSize' : no such field in structure +ERROR: 0:119: 'gl_PointSize' : no such field in structure 'gl_in' ERROR: 0:119: '=' : cannot convert from ' temp block{ in highp 4-component vector of float Position gl_Position}' to ' temp highp float' ERROR: 0:127: 'gl_BoundingBoxOES' : undeclared identifier ERROR: 43 compilation errors. No code generated. diff --git a/Test/baseResults/320.geom.out b/Test/baseResults/320.geom.out index f3337660b5..cdaacb91eb 100644 --- a/Test/baseResults/320.geom.out +++ b/Test/baseResults/320.geom.out @@ -6,7 +6,7 @@ ERROR: 0:33: 'EmitStreamVertex' : no matching overloaded function found ERROR: 0:34: 'EndStreamPrimitive' : no matching overloaded function found ERROR: 0:37: 'gl_ClipDistance' : undeclared identifier ERROR: 0:37: 'gl_ClipDistance' : left of '[' is not of type array, matrix, or vector -ERROR: 0:38: 'gl_ClipDistance' : no such field in structure +ERROR: 0:38: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:38: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:37: 'assign' : l-value required (can't modify a const) ERROR: 0:45: 'selecting output stream' : not supported with this profile: es diff --git a/Test/baseResults/320.tesc.out b/Test/baseResults/320.tesc.out index 6bb52b3039..67848d9b82 100644 --- a/Test/baseResults/320.tesc.out +++ b/Test/baseResults/320.tesc.out @@ -6,12 +6,12 @@ ERROR: 0:10: 'patch' : can only use on output in tessellation-control shader ERROR: 0:24: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:25: 'gl_ClipDistance' : no such field in structure +ERROR: 0:25: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:25: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:32: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:33: 'gl_ClipDistance' : no such field in structure +ERROR: 0:33: 'gl_ClipDistance' : no such field in structure 'gl_out' ERROR: 0:33: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:33: 'assign' : l-value required (can't modify a const) ERROR: 0:39: '' : tessellation control barrier() cannot be placed within flow control diff --git a/Test/baseResults/320.tese.out b/Test/baseResults/320.tese.out index 014eeb0a46..ba51b9c859 100644 --- a/Test/baseResults/320.tese.out +++ b/Test/baseResults/320.tese.out @@ -10,7 +10,7 @@ ERROR: 0:22: 'barrier' : no matching overloaded function found ERROR: 0:33: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size GL_OES_tessellation_point_size -ERROR: 0:34: 'gl_ClipDistance' : no such field in structure +ERROR: 0:34: 'gl_ClipDistance' : no such field in structure 'gl_in' ERROR: 0:34: 'expression' : left of '[' is not of type array, matrix, or vector ERROR: 0:43: 'gl_PointSize' : required extension not requested: Possible extensions include: GL_EXT_tessellation_point_size diff --git a/Test/baseResults/410.geom.out b/Test/baseResults/410.geom.out index 498da5acb2..3cc7900c08 100644 --- a/Test/baseResults/410.geom.out +++ b/Test/baseResults/410.geom.out @@ -2,7 +2,7 @@ ERROR: 0:8: 'myIn' : cannot redeclare a built-in block with a user name ERROR: 0:12: 'gl_myIn' : no declaration found for redeclaration ERROR: 0:20: 'gl_PerVertex' : can only redeclare a built-in block once, and before any use -ERROR: 0:32: 'gl_Position' : no such field in structure +ERROR: 0:32: 'gl_Position' : no such field in structure 'gl_in' ERROR: 0:32: '=' : cannot convert from ' temp block{ in float PointSize gl_PointSize}' to ' temp 4-component vector of float' ERROR: 0:33: 'gl_Position' : member of nameless block was not redeclared ERROR: 0:33: 'assign' : l-value required "gl_PerVertex" (can't modify void) diff --git a/Test/baseResults/420.tesc.out b/Test/baseResults/420.tesc.out index a1f881cb19..4410c846f2 100644 --- a/Test/baseResults/420.tesc.out +++ b/Test/baseResults/420.tesc.out @@ -2,7 +2,7 @@ ERROR: 0:7: 'vertices' : inconsistent output number of vertices for array size of gl_out ERROR: 0:11: 'vertices' : inconsistent output number of vertices for array size of a ERROR: 0:12: 'vertices' : inconsistent output number of vertices for array size of outb -ERROR: 0:26: 'gl_PointSize' : no such field in structure +ERROR: 0:26: 'gl_PointSize' : no such field in structure 'gl_out' ERROR: 0:26: 'assign' : cannot convert from ' temp float' to ' temp block{ out 4-component vector of float Position gl_Position}' ERROR: 0:29: 'out' : type must be an array: outf ERROR: 0:43: 'vertices' : must be greater than 0 diff --git a/Test/baseResults/450.geom.out b/Test/baseResults/450.geom.out index e75bf939ad..b51a674f29 100644 --- a/Test/baseResults/450.geom.out +++ b/Test/baseResults/450.geom.out @@ -1,6 +1,6 @@ 450.geom ERROR: 0:15: '[' : array index out of range '3' -ERROR: 0:15: 'gl_Position' : no such field in structure +ERROR: 0:15: 'gl_Position' : no such field in structure 'gl_in' ERROR: 0:19: 'points' : can only apply to a standalone qualifier ERROR: 3 compilation errors. No code generated. diff --git a/Test/baseResults/enhanced.0.frag.out b/Test/baseResults/enhanced.0.frag.out new file mode 100644 index 0000000000..1171bfaf0a --- /dev/null +++ b/Test/baseResults/enhanced.0.frag.out @@ -0,0 +1,6 @@ +enhanced.0.frag +ERROR: enhanced.0.frag:7: ' vec4 constructor' : not enough data provided for construction +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.1.frag.out b/Test/baseResults/enhanced.1.frag.out new file mode 100644 index 0000000000..42f5b72d62 --- /dev/null +++ b/Test/baseResults/enhanced.1.frag.out @@ -0,0 +1,6 @@ +enhanced.1.frag +ERROR: enhanced.1.frag:9: 'v2' : no such field in structure 'vVert' +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.2.frag.out b/Test/baseResults/enhanced.2.frag.out new file mode 100644 index 0000000000..a7e48de408 --- /dev/null +++ b/Test/baseResults/enhanced.2.frag.out @@ -0,0 +1,6 @@ +enhanced.2.frag +ERROR: enhanced.2.frag:5: ' vec3 constructor' : too many arguments +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.3.link.out b/Test/baseResults/enhanced.3.link.out new file mode 100644 index 0000000000..c0e6a2020c --- /dev/null +++ b/Test/baseResults/enhanced.3.link.out @@ -0,0 +1,8 @@ +enhanced.3.vert +enhanced.3.frag +ERROR: Linking vertex and fragment stages: Member names and types must match: + Block: VS_OUT + vertex stage: " vec2 TexCoords" + fragment stage: " vec2 foobar" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.4.link.out b/Test/baseResults/enhanced.4.link.out new file mode 100644 index 0000000000..2c0acf41db --- /dev/null +++ b/Test/baseResults/enhanced.4.link.out @@ -0,0 +1,7 @@ +enhanced.4.vert +enhanced.4.frag +ERROR: Linking vertex and fragment stages: Layout location qualifier must match: + vertex stage: Block: VS_OUT Instance: vs_out: "layout( location=0) out" + fragment stage: Block: VS_OUT Instance: fs_in: "layout( location=1) in" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.5.link.out b/Test/baseResults/enhanced.5.link.out new file mode 100644 index 0000000000..929cfcef0f --- /dev/null +++ b/Test/baseResults/enhanced.5.link.out @@ -0,0 +1,8 @@ +enhanced.5.vert +enhanced.5.frag +ERROR: Linking vertex and fragment stages: Member names and types must match: + Block: VS_OUT + vertex stage: " vec2 TexCoords" + fragment stage: " vec3 TexCoords" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.6.link.out b/Test/baseResults/enhanced.6.link.out new file mode 100644 index 0000000000..9962628270 --- /dev/null +++ b/Test/baseResults/enhanced.6.link.out @@ -0,0 +1,7 @@ +enhanced.6.vert +enhanced.6.frag +ERROR: Linking vertex and fragment stages: Array sizes must be compatible: + vertex stage: " VS_OUT{ vec2 TexCoords} vs_out[2]" + fragment stage: " VS_OUT{ vec2 TexCoords} fs_in[1]" + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/enhanced.7.link.out b/Test/baseResults/enhanced.7.link.out new file mode 100644 index 0000000000..a6333be94f --- /dev/null +++ b/Test/baseResults/enhanced.7.link.out @@ -0,0 +1,7 @@ +enhanced.7.vert +enhanced.7.frag +ERROR: Linking vertex and fragment stages: vertex block member has no corresponding member in fragment block: + vertex stage: Block: Vertex, Member: ii + fragment stage: Block: Vertex, Member: n/a + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/iomap.crossStage.2.vert.out b/Test/baseResults/iomap.crossStage.2.vert.out index 325c1b465a..85139cc7a3 100644 --- a/Test/baseResults/iomap.crossStage.2.vert.out +++ b/Test/baseResults/iomap.crossStage.2.vert.out @@ -207,8 +207,9 @@ Linked geometry stage: Linked fragment stage: -WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names. - blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" +WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names. + unknown stage stage: Block: crossStageBlock2 Instance: blockName1: "" + fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence diff --git a/Test/baseResults/iomap.crossStage.vert.out b/Test/baseResults/iomap.crossStage.vert.out index 5338b80750..13ff58c9c6 100644 --- a/Test/baseResults/iomap.crossStage.vert.out +++ b/Test/baseResults/iomap.crossStage.vert.out @@ -133,8 +133,9 @@ Linked vertex stage: Linked fragment stage: -WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names. - blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}" +WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names. + unknown stage stage: Block: crossStageBlock2 Instance: blockName1: "" + fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence diff --git a/Test/baseResults/iomap.crossStage.vk.vert.out b/Test/baseResults/iomap.crossStage.vk.vert.out index e137bdfc40..0a2eae8409 100644 --- a/Test/baseResults/iomap.crossStage.vk.vert.out +++ b/Test/baseResults/iomap.crossStage.vk.vert.out @@ -194,8 +194,9 @@ Linked geometry stage: Linked fragment stage: -WARNING: Linking unknown stage stage: Matched shader interfaces are using different instance names. - blockName1: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}" versus blockName2: "layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}" +WARNING: Linking unknown stage and fragment stages: Matched shader interfaces are using different instance names. + unknown stage stage: Block: crossStageBlock2 Instance: blockName1: "" + fragment stage: Block: crossStageBlock2 Instance: blockName2: "" Shader version: 460 0:? Sequence diff --git a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out index 404ae84939..c34401cba4 100644 --- a/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out +++ b/Test/baseResults/link.multiAnonBlocksInvalid.0.0.vert.out @@ -92,15 +92,20 @@ Shader version: 430 Linked vertex stage: -ERROR: Linking vertex stage: Types must match: - anon@0: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}" versus anon@1: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}" -ERROR: Linking vertex stage: Types must match: - anon@2: " out block{ out 4-component vector of float v1}" versus " out block{ out 4-component vector of float v1, out 4-component vector of float v2}" -ERROR: Linking vertex stage: Types must match: - anon@1: "layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float b}" versus anon@3: "layout( column_major shared) buffer block{layout( column_major shared) buffer 4-component vector of float a}" -ERROR: Linking vertex stage: Matched Uniform or Storage blocks must all be anonymous, or all be named: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - myName: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}" versus anon@4: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float m}" +ERROR: Linking vertex and vertex stages: vertex block member has no corresponding member in vertex block: + vertex stage: Block: Block, Member: uWorld + vertex stage: Block: Block, Member: n/a +ERROR: Linking vertex and vertex stages: vertex block member has no corresponding member in vertex block: + vertex stage: Block: Vertex, Member: v2 + vertex stage: Block: Vertex, Member: n/a +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: BufferBlock + vertex stage: " vec4 b" + vertex stage: " vec4 a" +ERROR: Linking vertex and vertex stages: Matched Uniform or Storage blocks must all be anonymous, or all be named: +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: NamedBlock Instance: myName: "" + vertex stage: Block: NamedBlock Instance: anon@4: "" Shader version: 430 ERROR: node is still EOpNull! diff --git a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out index ad609e86f1..d94debbfef 100644 --- a/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out +++ b/Test/baseResults/link.multiBlocksInvalid.0.0.vert.out @@ -89,19 +89,35 @@ Shader version: 430 Linked vertex stage: -ERROR: Linking vertex stage: Types must match: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uC: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1}" versus uColorB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}" -ERROR: Linking vertex stage: Types must match: -ERROR: Linking vertex stage: Storage qualifiers must match: -ERROR: Linking vertex stage: Layout qualification must match: - uBufC: "layout( column_major std430) buffer block{layout( column_major std430 offset=0) buffer 4-component vector of float color1}" versus uColorB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color2}" -ERROR: Linking vertex stage: Types must match: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uD: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj}" versus uDefaultB: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uWorld}" -ERROR: Linking vertex stage: Types must match: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - oV: " out block{ out 4-component vector of float v1}" versus oVert: " out block{ out 4-component vector of float v2}" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: ColorBlock + vertex stage: " vec4 color1" + vertex stage: " vec4 color2" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: ColorBlock Instance: uC: "" + vertex stage: Block: ColorBlock Instance: uColorB: "" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: ColorBlock + vertex stage: " vec4 color1" + vertex stage: " vec4 color2" +ERROR: Linking vertex and vertex stages: Storage qualifiers must match: +ERROR: Linking vertex and vertex stages: Layout packing qualifier must match: + vertex stage: Block: ColorBlock Instance: uBufC: "layout( column_major std430) buffer" + vertex stage: Block: ColorBlock Instance: uColorB: "layout( column_major std140) uniform" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: Block + vertex stage: " mat4x4 uProj" + vertex stage: " mat4x4 uWorld" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Block Instance: uD: "" + vertex stage: Block: Block Instance: uDefaultB: "" +ERROR: Linking vertex and vertex stages: Member names and types must match: + Block: Vertex + vertex stage: " vec4 v1" + vertex stage: " vec4 v2" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Vertex Instance: oV: "" + vertex stage: Block: Vertex Instance: oVert: "" Shader version: 430 0:? Sequence diff --git a/Test/baseResults/link.multiBlocksValid.1.0.vert.out b/Test/baseResults/link.multiBlocksValid.1.0.vert.out index 0015cab45b..69513f05fc 100644 --- a/Test/baseResults/link.multiBlocksValid.1.0.vert.out +++ b/Test/baseResults/link.multiBlocksValid.1.0.vert.out @@ -83,12 +83,15 @@ Shader version: 430 Linked vertex stage: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - c: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}" versus a: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4-component vector of float color1, layout( column_major std140 offset=16) uniform 4-component vector of float color2}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - a: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}" versus b: "layout( column_major std140) uniform block{layout( column_major std140 offset=0) uniform 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform 4X4 matrix of float uWorld}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - b: " out block{ out 4-component vector of float v1, out 4-component vector of float v2}" versus c: " out block{ out 4-component vector of float v1, out 4-component vector of float v2}" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: ColorBlock Instance: c: "" + vertex stage: Block: ColorBlock Instance: a: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Block Instance: a: "" + vertex stage: Block: Block Instance: b: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Vertex Instance: b: "" + vertex stage: Block: Vertex Instance: c: "" Shader version: 430 0:? Sequence diff --git a/Test/baseResults/link.vk.differentPC.0.0.frag.out b/Test/baseResults/link.vk.differentPC.0.0.frag.out index d7cfd22074..d78ba54ac6 100644 --- a/Test/baseResults/link.vk.differentPC.0.0.frag.out +++ b/Test/baseResults/link.vk.differentPC.0.0.frag.out @@ -52,8 +52,10 @@ gl_FragCoord origin is upper left Linked fragment stage: -ERROR: Linking fragment stage: Types must match: - uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale2}" +ERROR: Linking fragment and fragment stages: Member names and types must match: + Block: PushConstantBlock + fragment stage: " float scale" + fragment stage: " float scale2" Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/link.vk.differentPC.1.0.frag.out b/Test/baseResults/link.vk.differentPC.1.0.frag.out index 632f18b139..07ed124a07 100644 --- a/Test/baseResults/link.vk.differentPC.1.0.frag.out +++ b/Test/baseResults/link.vk.differentPC.1.0.frag.out @@ -52,10 +52,12 @@ gl_FragCoord origin is upper left Linked fragment stage: -ERROR: Linking fragment stage: Types must match: - uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}" -ERROR: Linking fragment stage: Types must match: - uPC: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale, layout( column_major std430 offset=36) uniform highp float scale2}" versus "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}" +ERROR: Linking fragment and fragment stages: fragment block member has no corresponding member in fragment block: + fragment stage: Block: PushConstantBlock, Member: scale2 + fragment stage: Block: PushConstantBlock, Member: n/a +ERROR: Linking fragment and fragment stages: fragment block member has no corresponding member in fragment block: + fragment stage: Block: PushConstantBlock, Member: scale2 + fragment stage: Block: PushConstantBlock, Member: n/a Shader version: 450 gl_FragCoord origin is upper left diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out index bdabab18a5..29a4df04d0 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out +++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out @@ -87,14 +87,18 @@ Shader version: 430 Linked vertex stage: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - oV: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}" versus anon@0: " out block{ out highp 4-component vector of float v1, out highp 4-component vector of float v2}" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: ColorBlock Instance: uC: "" + vertex stage: Block: ColorBlock Instance: uColor: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: BufferBlock Instance: uBuf: "" + vertex stage: Block: BufferBlock Instance: uBuffer: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: MatrixBlock Instance: uM: "" + vertex stage: Block: MatrixBlock Instance: uMatrix: "" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: Vertex Instance: oV: "" + vertex stage: Block: Vertex Instance: anon@0: "" Shader version: 430 0:? Sequence diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out index b0456a0860..4005f60157 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out +++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out @@ -131,16 +131,21 @@ output primitive = triangle_strip Linked geometry stage: -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - uC: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" versus uColor: "layout( binding=1 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4-component vector of float color1, layout( column_major std140 offset=16) uniform bool b, layout( column_major std140 offset=32) uniform highp 4-component vector of float color2, layout( column_major std140 offset=48) uniform highp 4-component vector of float color3}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - uBuf: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" versus uBuffer: "layout( binding=1 column_major std430) buffer block{layout( column_major std430 offset=0) buffer highp 4X4 matrix of float p}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - uM: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" versus uMatrix: "layout( binding=0 column_major std140) uniform block{layout( column_major std140 offset=0) uniform highp 4X4 matrix of float uProj, layout( column_major std140 offset=64) uniform highp 4X4 matrix of float uWorld}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - oV: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}" versus anon@0: "layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float val1}" -WARNING: Linking geometry stage: Matched shader interfaces are using different instance names. - iV: " in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}" versus iVV: " in 3-element array of block{ in highp 4-component vector of float v1, in highp 4-component vector of float v2}" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: ColorBlock Instance: uC: "" + geometry stage: Block: ColorBlock Instance: uColor: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: BufferBlock Instance: uBuf: "" + geometry stage: Block: BufferBlock Instance: uBuffer: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: MatrixBlock Instance: uM: "" + geometry stage: Block: MatrixBlock Instance: uMatrix: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: Vertex Instance: oV: "" + geometry stage: Block: Vertex Instance: anon@0: "" +WARNING: Linking geometry and geometry stages: Matched shader interfaces are using different instance names. + geometry stage: Block: Vertex Instance: iV: "" + geometry stage: Block: Vertex Instance: iVV: "" Shader version: 430 invocations = 1 diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out index e1d5c888e1..f84877e060 100644 --- a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out +++ b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out @@ -56,8 +56,9 @@ Shader version: 450 Linked vertex stage: -WARNING: Linking vertex stage: Matched shader interfaces are using different instance names. - a: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}" versus b: "layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4X4 matrix of float uWorld, layout( column_major std430 offset=64) uniform highp 4X4 matrix of float uProj, layout( column_major std430 offset=128) uniform highp 4-component vector of float color1, layout( column_major std430 offset=144) uniform highp 4-component vector of float color2}" +WARNING: Linking vertex and vertex stages: Matched shader interfaces are using different instance names. + vertex stage: Block: PCBlock Instance: a: "" + vertex stage: Block: PCBlock Instance: b: "" Shader version: 450 0:? Sequence diff --git a/Test/enhanced.0.frag b/Test/enhanced.0.frag new file mode 100644 index 0000000000..7a42c05372 --- /dev/null +++ b/Test/enhanced.0.frag @@ -0,0 +1,9 @@ +#version 450 + +in vec3 v; + +void main() +{ + vec4 color = vec4(v); +} + diff --git a/Test/enhanced.1.frag b/Test/enhanced.1.frag new file mode 100644 index 0000000000..9aab34d7c6 --- /dev/null +++ b/Test/enhanced.1.frag @@ -0,0 +1,11 @@ +#version 450 + +in Vertex { + vec4 v; +} vVert; + +void main() +{ + vec4 color = vec4(vVert.v2.rgb, 1.0); +} + diff --git a/Test/enhanced.2.frag b/Test/enhanced.2.frag new file mode 100644 index 0000000000..c3c194cea3 --- /dev/null +++ b/Test/enhanced.2.frag @@ -0,0 +1,7 @@ +#version 450 + +void main() +{ + vec3 color = vec3(0.0,0.0,0.0,1.0); +} + diff --git a/Test/enhanced.3.frag b/Test/enhanced.3.frag new file mode 100644 index 0000000000..1de9f4b2b8 --- /dev/null +++ b/Test/enhanced.3.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in VS_OUT +{ + vec2 foobar; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.foobar); +} + diff --git a/Test/enhanced.3.vert b/Test/enhanced.3.vert new file mode 100644 index 0000000000..043ee24612 --- /dev/null +++ b/Test/enhanced.3.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.4.frag b/Test/enhanced.4.frag new file mode 100644 index 0000000000..9c16606dae --- /dev/null +++ b/Test/enhanced.4.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 1) in VS_OUT +{ + vec2 TexCoords; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.TexCoords); +} + diff --git a/Test/enhanced.4.vert b/Test/enhanced.4.vert new file mode 100644 index 0000000000..043ee24612 --- /dev/null +++ b/Test/enhanced.4.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.5.frag b/Test/enhanced.5.frag new file mode 100644 index 0000000000..b2a51e26a5 --- /dev/null +++ b/Test/enhanced.5.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in VS_OUT +{ + vec3 TexCoords; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.TexCoords.xy); +} + diff --git a/Test/enhanced.5.vert b/Test/enhanced.5.vert new file mode 100644 index 0000000000..043ee24612 --- /dev/null +++ b/Test/enhanced.5.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.6.frag b/Test/enhanced.6.frag new file mode 100644 index 0000000000..e1cf68571d --- /dev/null +++ b/Test/enhanced.6.frag @@ -0,0 +1,16 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in VS_OUT +{ + vec2 TexCoords; +} fs_in[1]; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in[0].TexCoords); +} + diff --git a/Test/enhanced.6.vert b/Test/enhanced.6.vert new file mode 100644 index 0000000000..876a903e82 --- /dev/null +++ b/Test/enhanced.6.vert @@ -0,0 +1,22 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out VS_OUT +{ + vec2 TexCoords; +} vs_out[2]; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out[0].TexCoords = aTexCoords; +} + diff --git a/Test/enhanced.7.frag b/Test/enhanced.7.frag new file mode 100644 index 0000000000..f6e5279d27 --- /dev/null +++ b/Test/enhanced.7.frag @@ -0,0 +1,20 @@ +#version 450 core + +layout (location = 0) out vec4 FragColor; + +layout (location = 0) in Vertex +{ + vec4 color; + vec3 worldSpacePos; + vec3 worldSpaceNorm; + vec2 texCoord1; + flat int cameraIndex; +} fs_in; + +layout (binding = 1) uniform sampler2D t0; + +void main() +{ + FragColor = texture(t0, fs_in.texCoord1); +} + diff --git a/Test/enhanced.7.vert b/Test/enhanced.7.vert new file mode 100644 index 0000000000..4e70a617bd --- /dev/null +++ b/Test/enhanced.7.vert @@ -0,0 +1,27 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform anonblock { + mat4 model; + mat4 view; + mat4 projection; +} ; + +layout (location = 0) out Vertex +{ + vec4 color; + vec3 worldSpacePos; + vec3 worldSpaceNorm; + vec2 texCoord1; + flat int cameraIndex; + float ii; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(aPos, 1.0); + vs_out.texCoord1 = aTexCoords; +} + diff --git a/Test/runtests b/Test/runtests index 63c3a03bb9..9f588e281d 100755 --- a/Test/runtests +++ b/Test/runtests @@ -298,6 +298,28 @@ diff -b $BASEDIR/hlsl.autosampledtextures.frag.out $TARGETDIR/hlsl.autosampledte run --auto-sampled-textures -H -Od -S frag glsl.autosampledtextures.frag > $TARGETDIR/glsl.autosampledtextures.frag.out diff -b $BASEDIR/glsl.autosampledtextures.frag.out $TARGETDIR/glsl.autosampledtextures.frag.out || HASERROR=1 +# +# Test --enhanced-msgs +# + +echo "Testing enhanced-msgs" +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.0.frag > $TARGETDIR/enhanced.0.frag.out +diff -b $BASEDIR/enhanced.0.frag.out $TARGETDIR/enhanced.0.frag.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.1.frag > $TARGETDIR/enhanced.1.frag.out +diff -b $BASEDIR/enhanced.1.frag.out $TARGETDIR/enhanced.1.frag.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.2.frag > $TARGETDIR/enhanced.2.frag.out +diff -b $BASEDIR/enhanced.2.frag.out $TARGETDIR/enhanced.2.frag.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.3.vert enhanced.3.frag > $TARGETDIR/enhanced.3.link.out +diff -b $BASEDIR/enhanced.3.link.out $TARGETDIR/enhanced.3.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.4.vert enhanced.4.frag > $TARGETDIR/enhanced.4.link.out +diff -b $BASEDIR/enhanced.4.link.out $TARGETDIR/enhanced.4.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.5.vert enhanced.5.frag > $TARGETDIR/enhanced.5.link.out +diff -b $BASEDIR/enhanced.5.link.out $TARGETDIR/enhanced.5.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.6.vert enhanced.6.frag > $TARGETDIR/enhanced.6.link.out +diff -b $BASEDIR/enhanced.6.link.out $TARGETDIR/enhanced.6.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanced.7.frag > $TARGETDIR/enhanced.7.link.out +diff -b $BASEDIR/enhanced.7.link.out $TARGETDIR/enhanced.7.link.out || HASERROR=1 + # # Final checking # diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 6a7e61df3a..54150fbe35 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -2142,7 +2142,8 @@ class TType { const char* getPrecisionQualifierString() const { return ""; } TString getBasicTypeString() const { return ""; } #else - TString getCompleteString() const + TString getCompleteString(bool syntactic = false, bool getQualifiers = true, bool getPrecision = true, + bool getType = true, TString name = "", TString structName = "") const { TString typeString; @@ -2150,232 +2151,335 @@ class TType { const auto appendUint = [&](unsigned int u) { typeString.append(std::to_string(u).c_str()); }; const auto appendInt = [&](int i) { typeString.append(std::to_string(i).c_str()); }; - if (qualifier.hasSprivDecorate()) + if (getQualifiers) { + if (qualifier.hasSprivDecorate()) appendStr(qualifier.getSpirvDecorateQualifierString().c_str()); - if (qualifier.hasLayout()) { + if (qualifier.hasLayout()) { // To reduce noise, skip this if the only layout is an xfb_buffer // with no triggering xfb_offset. TQualifier noXfbBuffer = qualifier; noXfbBuffer.layoutXfbBuffer = TQualifier::layoutXfbBufferEnd; if (noXfbBuffer.hasLayout()) { - appendStr("layout("); - if (qualifier.hasAnyLocation()) { - appendStr(" location="); - appendUint(qualifier.layoutLocation); - if (qualifier.hasComponent()) { - appendStr(" component="); - appendUint(qualifier.layoutComponent); - } - if (qualifier.hasIndex()) { - appendStr(" index="); - appendUint(qualifier.layoutIndex); - } - } - if (qualifier.hasSet()) { - appendStr(" set="); - appendUint(qualifier.layoutSet); - } - if (qualifier.hasBinding()) { - appendStr(" binding="); - appendUint(qualifier.layoutBinding); - } - if (qualifier.hasStream()) { - appendStr(" stream="); - appendUint(qualifier.layoutStream); - } - if (qualifier.hasMatrix()) { - appendStr(" "); - appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix)); - } - if (qualifier.hasPacking()) { - appendStr(" "); - appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking)); - } - if (qualifier.hasOffset()) { - appendStr(" offset="); - appendInt(qualifier.layoutOffset); - } - if (qualifier.hasAlign()) { - appendStr(" align="); - appendInt(qualifier.layoutAlign); - } - if (qualifier.hasFormat()) { - appendStr(" "); - appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat)); - } - if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) { - appendStr(" xfb_buffer="); - appendUint(qualifier.layoutXfbBuffer); - } - if (qualifier.hasXfbOffset()) { - appendStr(" xfb_offset="); - appendUint(qualifier.layoutXfbOffset); - } - if (qualifier.hasXfbStride()) { - appendStr(" xfb_stride="); - appendUint(qualifier.layoutXfbStride); - } - if (qualifier.hasAttachment()) { - appendStr(" input_attachment_index="); - appendUint(qualifier.layoutAttachment); + appendStr("layout("); + if (qualifier.hasAnyLocation()) { + appendStr(" location="); + appendUint(qualifier.layoutLocation); + if (qualifier.hasComponent()) { + appendStr(" component="); + appendUint(qualifier.layoutComponent); } - if (qualifier.hasSpecConstantId()) { - appendStr(" constant_id="); - appendUint(qualifier.layoutSpecConstantId); + if (qualifier.hasIndex()) { + appendStr(" index="); + appendUint(qualifier.layoutIndex); } - if (qualifier.layoutPushConstant) - appendStr(" push_constant"); - if (qualifier.layoutBufferReference) - appendStr(" buffer_reference"); - if (qualifier.hasBufferReferenceAlign()) { - appendStr(" buffer_reference_align="); - appendUint(1u << qualifier.layoutBufferReferenceAlign); - } - - if (qualifier.layoutPassthrough) - appendStr(" passthrough"); - if (qualifier.layoutViewportRelative) - appendStr(" layoutViewportRelative"); - if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) { - appendStr(" layoutSecondaryViewportRelativeOffset="); - appendInt(qualifier.layoutSecondaryViewportRelativeOffset); - } - if (qualifier.layoutShaderRecord) - appendStr(" shaderRecordNV"); - - appendStr(")"); + } + if (qualifier.hasSet()) { + appendStr(" set="); + appendUint(qualifier.layoutSet); + } + if (qualifier.hasBinding()) { + appendStr(" binding="); + appendUint(qualifier.layoutBinding); + } + if (qualifier.hasStream()) { + appendStr(" stream="); + appendUint(qualifier.layoutStream); + } + if (qualifier.hasMatrix()) { + appendStr(" "); + appendStr(TQualifier::getLayoutMatrixString(qualifier.layoutMatrix)); + } + if (qualifier.hasPacking()) { + appendStr(" "); + appendStr(TQualifier::getLayoutPackingString(qualifier.layoutPacking)); + } + if (qualifier.hasOffset()) { + appendStr(" offset="); + appendInt(qualifier.layoutOffset); + } + if (qualifier.hasAlign()) { + appendStr(" align="); + appendInt(qualifier.layoutAlign); + } + if (qualifier.hasFormat()) { + appendStr(" "); + appendStr(TQualifier::getLayoutFormatString(qualifier.layoutFormat)); + } + if (qualifier.hasXfbBuffer() && qualifier.hasXfbOffset()) { + appendStr(" xfb_buffer="); + appendUint(qualifier.layoutXfbBuffer); + } + if (qualifier.hasXfbOffset()) { + appendStr(" xfb_offset="); + appendUint(qualifier.layoutXfbOffset); + } + if (qualifier.hasXfbStride()) { + appendStr(" xfb_stride="); + appendUint(qualifier.layoutXfbStride); + } + if (qualifier.hasAttachment()) { + appendStr(" input_attachment_index="); + appendUint(qualifier.layoutAttachment); + } + if (qualifier.hasSpecConstantId()) { + appendStr(" constant_id="); + appendUint(qualifier.layoutSpecConstantId); + } + if (qualifier.layoutPushConstant) + appendStr(" push_constant"); + if (qualifier.layoutBufferReference) + appendStr(" buffer_reference"); + if (qualifier.hasBufferReferenceAlign()) { + appendStr(" buffer_reference_align="); + appendUint(1u << qualifier.layoutBufferReferenceAlign); + } + + if (qualifier.layoutPassthrough) + appendStr(" passthrough"); + if (qualifier.layoutViewportRelative) + appendStr(" layoutViewportRelative"); + if (qualifier.layoutSecondaryViewportRelativeOffset != -2048) { + appendStr(" layoutSecondaryViewportRelativeOffset="); + appendInt(qualifier.layoutSecondaryViewportRelativeOffset); + } + if (qualifier.layoutShaderRecord) + appendStr(" shaderRecordNV"); + + appendStr(")"); } - } + } - if (qualifier.invariant) + if (qualifier.invariant) appendStr(" invariant"); - if (qualifier.noContraction) + if (qualifier.noContraction) appendStr(" noContraction"); - if (qualifier.centroid) + if (qualifier.centroid) appendStr(" centroid"); - if (qualifier.smooth) + if (qualifier.smooth) appendStr(" smooth"); - if (qualifier.flat) + if (qualifier.flat) appendStr(" flat"); - if (qualifier.nopersp) + if (qualifier.nopersp) appendStr(" noperspective"); - if (qualifier.explicitInterp) + if (qualifier.explicitInterp) appendStr(" __explicitInterpAMD"); - if (qualifier.pervertexNV) + if (qualifier.pervertexNV) appendStr(" pervertexNV"); - if (qualifier.perPrimitiveNV) + if (qualifier.perPrimitiveNV) appendStr(" perprimitiveNV"); - if (qualifier.perViewNV) + if (qualifier.perViewNV) appendStr(" perviewNV"); - if (qualifier.perTaskNV) + if (qualifier.perTaskNV) appendStr(" taskNV"); - if (qualifier.patch) + if (qualifier.patch) appendStr(" patch"); - if (qualifier.sample) + if (qualifier.sample) appendStr(" sample"); - if (qualifier.coherent) + if (qualifier.coherent) appendStr(" coherent"); - if (qualifier.devicecoherent) + if (qualifier.devicecoherent) appendStr(" devicecoherent"); - if (qualifier.queuefamilycoherent) + if (qualifier.queuefamilycoherent) appendStr(" queuefamilycoherent"); - if (qualifier.workgroupcoherent) + if (qualifier.workgroupcoherent) appendStr(" workgroupcoherent"); - if (qualifier.subgroupcoherent) + if (qualifier.subgroupcoherent) appendStr(" subgroupcoherent"); - if (qualifier.shadercallcoherent) + if (qualifier.shadercallcoherent) appendStr(" shadercallcoherent"); - if (qualifier.nonprivate) + if (qualifier.nonprivate) appendStr(" nonprivate"); - if (qualifier.volatil) + if (qualifier.volatil) appendStr(" volatile"); - if (qualifier.restrict) + if (qualifier.restrict) appendStr(" restrict"); - if (qualifier.readonly) + if (qualifier.readonly) appendStr(" readonly"); - if (qualifier.writeonly) + if (qualifier.writeonly) appendStr(" writeonly"); - if (qualifier.specConstant) + if (qualifier.specConstant) appendStr(" specialization-constant"); - if (qualifier.nonUniform) + if (qualifier.nonUniform) appendStr(" nonuniform"); - if (qualifier.isNullInit()) + if (qualifier.isNullInit()) appendStr(" null-init"); - if (qualifier.isSpirvByReference()) + if (qualifier.isSpirvByReference()) appendStr(" spirv_by_reference"); - if (qualifier.isSpirvLiteral()) + if (qualifier.isSpirvLiteral()) appendStr(" spirv_literal"); - appendStr(" "); - appendStr(getStorageQualifierString()); - if (isArray()) { - for(int i = 0; i < (int)arraySizes->getNumDims(); ++i) { + appendStr(" "); + appendStr(getStorageQualifierString()); + } + if (getType) { + if (syntactic) { + if (getPrecision && qualifier.precision != EpqNone) { + appendStr(" "); + appendStr(getPrecisionQualifierString()); + } + if (isVector() || isMatrix()) { + appendStr(" "); + switch (basicType) { + case EbtDouble: + appendStr("d"); + break; + case EbtInt: + appendStr("i"); + break; + case EbtUint: + appendStr("u"); + break; + case EbtBool: + appendStr("b"); + break; + case EbtFloat: + default: + break; + } + if (isVector()) { + appendStr("vec"); + appendInt(vectorSize); + } else { + appendStr("mat"); + appendInt(matrixCols); + appendStr("x"); + appendInt(matrixRows); + } + } else if (isStruct() && structure) { + appendStr(" "); + appendStr(structName.c_str()); + appendStr("{"); + bool hasHiddenMember = true; + for (size_t i = 0; i < structure->size(); ++i) { + if (!(*structure)[i].type->hiddenMember()) { + if (!hasHiddenMember) + appendStr(", "); + typeString.append((*structure)[i].type->getCompleteString(syntactic, getQualifiers, getPrecision, getType, (*structure)[i].type->getFieldName())); + hasHiddenMember = false; + } + } + appendStr("}"); + } else { + appendStr(" "); + switch (basicType) { + case EbtDouble: + appendStr("double"); + break; + case EbtInt: + appendStr("int"); + break; + case EbtUint: + appendStr("uint"); + break; + case EbtBool: + appendStr("bool"); + break; + case EbtFloat: + appendStr("float"); + break; + default: + appendStr("unexpected"); + break; + } + } + if (name.length() > 0) { + appendStr(" "); + appendStr(name.c_str()); + } + if (isArray()) { + for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) { int size = arraySizes->getDimSize(i); if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed()) - appendStr(" runtime-sized array of"); + appendStr("[]"); else { - if (size == UnsizedArraySize) { - appendStr(" unsized"); - if (i == 0) { - appendStr(" "); - appendInt(arraySizes->getImplicitSize()); - } - } else { - appendStr(" "); - appendInt(arraySizes->getDimSize(i)); + if (size == UnsizedArraySize) { + appendStr("["); + if (i == 0) + appendInt(arraySizes->getImplicitSize()); + appendStr("]"); + } + else { + appendStr("["); + appendInt(arraySizes->getDimSize(i)); + appendStr("]"); + } + } + } + } + } + else { + if (isArray()) { + for (int i = 0; i < (int)arraySizes->getNumDims(); ++i) { + int size = arraySizes->getDimSize(i); + if (size == UnsizedArraySize && i == 0 && arraySizes->isVariablyIndexed()) + appendStr(" runtime-sized array of"); + else { + if (size == UnsizedArraySize) { + appendStr(" unsized"); + if (i == 0) { + appendStr(" "); + appendInt(arraySizes->getImplicitSize()); } - appendStr("-element array of"); + } + else { + appendStr(" "); + appendInt(arraySizes->getDimSize(i)); + } + appendStr("-element array of"); } + } } - } - if (isParameterized()) { - appendStr("<"); - for(int i = 0; i < (int)typeParameters->getNumDims(); ++i) { + if (isParameterized()) { + appendStr("<"); + for (int i = 0; i < (int)typeParameters->getNumDims(); ++i) { appendInt(typeParameters->getDimSize(i)); if (i != (int)typeParameters->getNumDims() - 1) - appendStr(", "); + appendStr(", "); + } + appendStr(">"); + } + if (getPrecision && qualifier.precision != EpqNone) { + appendStr(" "); + appendStr(getPrecisionQualifierString()); + } + if (isMatrix()) { + appendStr(" "); + appendInt(matrixCols); + appendStr("X"); + appendInt(matrixRows); + appendStr(" matrix of"); + } + else if (isVector()) { + appendStr(" "); + appendInt(vectorSize); + appendStr("-component vector of"); } - appendStr(">"); - } - if (qualifier.precision != EpqNone) { - appendStr(" "); - appendStr(getPrecisionQualifierString()); - } - if (isMatrix()) { - appendStr(" "); - appendInt(matrixCols); - appendStr("X"); - appendInt(matrixRows); - appendStr(" matrix of"); - } else if (isVector()) { - appendStr(" "); - appendInt(vectorSize); - appendStr("-component vector of"); - } - - appendStr(" "); - typeString.append(getBasicTypeString()); - if (qualifier.builtIn != EbvNone) { appendStr(" "); - appendStr(getBuiltInVariableString()); - } + typeString.append(getBasicTypeString()); - // Add struct/block members - if (isStruct() && structure) { - appendStr("{"); - bool hasHiddenMember = true; - for (size_t i = 0; i < structure->size(); ++i) { - if (! (*structure)[i].type->hiddenMember()) { - if (!hasHiddenMember) - appendStr(", "); - typeString.append((*structure)[i].type->getCompleteString()); - typeString.append(" "); - typeString.append((*structure)[i].type->getFieldName()); - hasHiddenMember = false; + if (qualifier.builtIn != EbvNone) { + appendStr(" "); + appendStr(getBuiltInVariableString()); + } + + // Add struct/block members + if (isStruct() && structure) { + appendStr("{"); + bool hasHiddenMember = true; + for (size_t i = 0; i < structure->size(); ++i) { + if (!(*structure)[i].type->hiddenMember()) { + if (!hasHiddenMember) + appendStr(", "); + typeString.append((*structure)[i].type->getCompleteString()); + typeString.append(" "); + typeString.append((*structure)[i].type->getFieldName()); + hasHiddenMember = false; } + } + appendStr("}"); } - appendStr("}"); + } } return typeString; @@ -2444,10 +2548,20 @@ class TType { // type definitions, and member names to be considered the same type. // This rule applies recursively for nested or embedded types." // - bool sameStructType(const TType& right) const + // If type mismatch in structure, return member indices through lpidx and rpidx. + // If matching members for either block are exhausted, return -1 for exhausted + // block and the index of the unmatched member. Otherwise return {-1,-1}. + // + bool sameStructType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { - // TODO: Why return true when neither types are structures? + // Initialize error to general type mismatch. + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + // Most commonly, they are both nullptr, or the same pointer to the same actual structure + // TODO: Why return true when neither types are structures? if ((!isStruct() && !right.isStruct()) || (isStruct() && right.isStruct() && structure == right.structure)) return true; @@ -2464,11 +2578,17 @@ class TType { bool isGLPerVertex = *typeName == "gl_PerVertex"; // Both being nullptr was caught above, now they both have to be structures of the same number of elements - if (structure->size() != right.structure->size() && !isGLPerVertex) + if (lpidx == nullptr && + (structure->size() != right.structure->size() && !isGLPerVertex)) { return false; + } // Compare the names and types of all the members, which have to match for (size_t li = 0, ri = 0; li < structure->size() || ri < right.structure->size(); ++li, ++ri) { + if (lpidx != nullptr) { + *lpidx = static_cast(li); + *rpidx = static_cast(ri); + } if (li < structure->size() && ri < right.structure->size()) { if ((*structure)[li].type->getFieldName() == (*right.structure)[ri].type->getFieldName()) { if (*(*structure)[li].type != *(*right.structure)[ri].type) @@ -2498,11 +2618,19 @@ class TType { } // If we get here, then there should only be inconsistently declared members left } else if (li < structure->size()) { - if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) + if (!(*structure)[li].type->hiddenMember() && !isInconsistentGLPerVertexMember((*structure)[li].type->getFieldName())) { + if (lpidx != nullptr) { + *rpidx = -1; + } return false; + } } else { - if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) + if (!(*right.structure)[ri].type->hiddenMember() && !isInconsistentGLPerVertexMember((*right.structure)[ri].type->getFieldName())) { + if (lpidx != nullptr) { + *lpidx = -1; + } return false; + } } } @@ -2526,10 +2654,15 @@ class TType { return *referentType == *right.referentType; } - // See if two types match, in all aspects except arrayness - bool sameElementType(const TType& right) const + // See if two types match, in all aspects except arrayness + // If mismatch in structure members, return member indices in lpidx and rpidx. + bool sameElementType(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { - return basicType == right.basicType && sameElementShape(right); + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } + return basicType == right.basicType && sameElementShape(right, lpidx, rpidx); } // See if two type's arrayness match @@ -2563,15 +2696,20 @@ class TType { #endif // See if two type's elements match in all ways except basic type - bool sameElementShape(const TType& right) const + // If mismatch in structure members, return member indices in lpidx and rpidx. + bool sameElementShape(const TType& right, int* lpidx = nullptr, int* rpidx = nullptr) const { + if (lpidx != nullptr) { + *lpidx = -1; + *rpidx = -1; + } return sampler == right.sampler && vectorSize == right.vectorSize && matrixCols == right.matrixCols && matrixRows == right.matrixRows && vector1 == right.vector1 && isCoopMat() == right.isCoopMat() && - sameStructType(right) && + sameStructType(right, lpidx, rpidx) && sameReferenceType(right); } diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index df19777b0b..f11443f3b3 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -155,6 +155,7 @@ typedef enum { GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12), GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13), GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14), + GLSLANG_MSG_ENHANCED = (1 << 15), LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT), } glslang_messages_t; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 595bd623db..a64ed68378 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1155,7 +1155,7 @@ class TIntermTyped : public TIntermNode { virtual bool isIntegerDomain() const { return type.isIntegerDomain(); } bool isAtomic() const { return type.isAtomic(); } bool isReference() const { return type.isReference(); } - TString getCompleteString() const { return type.getCompleteString(); } + TString getCompleteString(bool enhanced = false) const { return type.getCompleteString(enhanced); } protected: TIntermTyped& operator=(const TIntermTyped&); diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 1da50d62f9..616580f993 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -74,6 +74,9 @@ void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason { if (messages & EShMsgOnlyPreprocessor) return; + // If enhanced msg readability, only print one error + if (messages & EShMsgEnhanced && numErrors > 0) + return; va_list args; va_start(args, szExtraInfoFormat); outputMessage(loc, szReason, szToken, szExtraInfoFormat, EPrefixError, args); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index fa291160cb..64e352f316 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -902,8 +902,10 @@ TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* result = intermediate.addBinaryMath(op, left, right, loc); } - if (result == nullptr) - binaryOpError(loc, str, left->getCompleteString(), right->getCompleteString()); + if (result == nullptr) { + bool enhanced = intermediate.getEnhancedMsgs(); + binaryOpError(loc, str, left->getCompleteString(enhanced), right->getCompleteString(enhanced)); + } return result; } @@ -926,8 +928,10 @@ TIntermTyped* TParseContext::handleUnaryMath(const TSourceLoc& loc, const char* if (result) return result; - else - unaryOpError(loc, str, childNode->getCompleteString()); + else { + bool enhanced = intermediate.getEnhancedMsgs(); + unaryOpError(loc, str, childNode->getCompleteString(enhanced)); + } return childNode; } @@ -953,8 +957,8 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm requireProfile(loc, ~EEsProfile, feature); profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, feature); } else if (!base->getType().isCoopMat()) { - error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString().c_str()); - + bool enhanced = intermediate.getEnhancedMsgs(); + error(loc, "does not operate on this type:", field.c_str(), base->getType().getCompleteString(enhanced).c_str()); return base; } @@ -1005,10 +1009,16 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm intermediate.addIoAccessed(field); } inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); - } else - error(loc, "no such field in structure", field.c_str(), ""); + } else { + auto baseSymbol = base; + while (baseSymbol->getAsSymbolNode() == nullptr) + baseSymbol = baseSymbol->getAsBinaryNode()->getLeft(); + TString structName; + structName.append("\'").append(baseSymbol->getAsSymbolNode()->getName().c_str()).append( "\'"); + error(loc, "no such field in structure", field.c_str(), structName.c_str()); + } } else - error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString().c_str()); + error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); // Propagate noContraction up the dereference chain if (base->getQualifier().isNoContraction()) @@ -1314,7 +1324,7 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // result = addConstructor(loc, arguments, type); if (result == nullptr) - error(loc, "cannot construct with these arguments", type.getCompleteString().c_str(), ""); + error(loc, "cannot construct with these arguments", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str(), ""); } } else { // @@ -1494,7 +1504,7 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo else error(arguments->getLoc(), " wrong operand type", "Internal Error", "built in unary operator function. Type: %s", - static_cast(arguments)->getCompleteString().c_str()); + static_cast(arguments)->getCompleteString(intermediate.getEnhancedMsgs()).c_str()); } else if (result->getAsOperator()) builtInOpCheck(loc, function, *result->getAsOperator()); @@ -2599,23 +2609,24 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan // Check that if extended types are being used that the correct extensions are enabled. if (arg0 != nullptr) { const TType& type = arg0->getType(); + bool enhanced = intermediate.getEnhancedMsgs(); switch (type.getBasicType()) { default: break; case EbtInt8: case EbtUint8: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int8, type.getCompleteString(enhanced).c_str()); break; case EbtInt16: case EbtUint16: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int16, type.getCompleteString(enhanced).c_str()); break; case EbtInt64: case EbtUint64: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_int64, type.getCompleteString(enhanced).c_str()); break; case EbtFloat16: - requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString().c_str()); + requireExtensions(loc, 1, &E_GL_EXT_shader_subgroup_extended_types_float16, type.getCompleteString(enhanced).c_str()); break; } } @@ -3198,6 +3209,12 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T break; } + TString constructorString; + if (intermediate.getEnhancedMsgs()) + constructorString.append(type.getCompleteString(true, false, false, true)).append(" constructor"); + else + constructorString.append("constructor"); + // See if it's a matrix bool constructingMatrix = false; switch (op) { @@ -3255,7 +3272,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T if (function[arg].type->isArray()) { if (function[arg].type->isUnsizedArray()) { // Can't construct from an unsized array. - error(loc, "array argument must be sized", "constructor", ""); + error(loc, "array argument must be sized", constructorString.c_str(), ""); return true; } arrayArg = true; @@ -3285,13 +3302,13 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T intArgument = true; if (type.isStruct()) { if (function[arg].type->contains16BitFloat()) { - requireFloat16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains16BitInt()) { - requireInt16Arithmetic(loc, "constructor", "can't construct structure containing 16-bit type"); + requireInt16Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 16-bit type"); } if (function[arg].type->contains8BitInt()) { - requireInt8Arithmetic(loc, "constructor", "can't construct structure containing 8-bit type"); + requireInt8Arithmetic(loc, constructorString.c_str(), "can't construct structure containing 8-bit type"); } } } @@ -3305,9 +3322,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructF16Vec3: case EOpConstructF16Vec4: if (type.isArray()) - requireFloat16Arithmetic(loc, "constructor", "16-bit arrays not supported"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireFloat16Arithmetic(loc, "constructor", "16-bit vectors only take vector types"); + requireFloat16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint16: case EOpConstructU16Vec2: @@ -3318,9 +3335,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructI16Vec3: case EOpConstructI16Vec4: if (type.isArray()) - requireInt16Arithmetic(loc, "constructor", "16-bit arrays not supported"); + requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireInt16Arithmetic(loc, "constructor", "16-bit vectors only take vector types"); + requireInt16Arithmetic(loc, constructorString.c_str(), "16-bit vectors only take vector types"); break; case EOpConstructUint8: case EOpConstructU8Vec2: @@ -3331,9 +3348,9 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructI8Vec3: case EOpConstructI8Vec4: if (type.isArray()) - requireInt8Arithmetic(loc, "constructor", "8-bit arrays not supported"); + requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit arrays not supported"); if (type.isVector() && function.getParamCount() != 1) - requireInt8Arithmetic(loc, "constructor", "8-bit vectors only take vector types"); + requireInt8Arithmetic(loc, constructorString.c_str(), "8-bit vectors only take vector types"); break; default: break; @@ -3415,7 +3432,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T if (type.isArray()) { if (function.getParamCount() == 0) { - error(loc, "array constructor must have at least one argument", "constructor", ""); + error(loc, "array constructor must have at least one argument", constructorString.c_str(), ""); return true; } @@ -3423,7 +3440,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // auto adapt the constructor type to the number of arguments type.changeOuterArraySize(function.getParamCount()); } else if (type.getOuterArraySize() != function.getParamCount()) { - error(loc, "array constructor needs one argument per array element", "constructor", ""); + error(loc, "array constructor needs one argument per array element", constructorString.c_str(), ""); return true; } @@ -3436,7 +3453,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // At least the dimensionalities have to match. if (! function[0].type->isArray() || arraySizes.getNumDims() != function[0].type->getArraySizes()->getNumDims() + 1) { - error(loc, "array constructor argument not correct type to construct array element", "constructor", ""); + error(loc, "array constructor argument not correct type to construct array element", constructorString.c_str(), ""); return true; } @@ -3453,7 +3470,7 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T } if (arrayArg && op != EOpConstructStruct && ! type.isArrayOfArrays()) { - error(loc, "constructing non-array constituent from array argument", "constructor", ""); + error(loc, "constructing non-array constituent from array argument", constructorString.c_str(), ""); return true; } @@ -3463,51 +3480,51 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // "If a matrix argument is given to a matrix constructor, // it is a compile-time error to have any other arguments." if (function.getParamCount() != 1) - error(loc, "matrix constructed from matrix can only have one argument", "constructor", ""); + error(loc, "matrix constructed from matrix can only have one argument", constructorString.c_str(), ""); return false; } if (overFull) { - error(loc, "too many arguments", "constructor", ""); + error(loc, "too many arguments", constructorString.c_str(), ""); return true; } if (op == EOpConstructStruct && ! type.isArray() && (int)type.getStruct()->size() != function.getParamCount()) { - error(loc, "Number of constructor parameters does not match the number of structure fields", "constructor", ""); + error(loc, "Number of constructor parameters does not match the number of structure fields", constructorString.c_str(), ""); return true; } if ((op != EOpConstructStruct && size != 1 && size < type.computeNumComponents()) || (op == EOpConstructStruct && size < type.computeNumComponents())) { - error(loc, "not enough data provided for construction", "constructor", ""); + error(loc, "not enough data provided for construction", constructorString.c_str(), ""); return true; } if (type.isCoopMat() && function.getParamCount() != 1) { - error(loc, "wrong number of arguments", "constructor", ""); + error(loc, "wrong number of arguments", constructorString.c_str(), ""); return true; } if (type.isCoopMat() && !(function[0].type->isScalar() || function[0].type->isCoopMat())) { - error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", "constructor", ""); + error(loc, "Cooperative matrix constructor argument must be scalar or cooperative matrix", constructorString.c_str(), ""); return true; } TIntermTyped* typed = node->getAsTyped(); if (typed == nullptr) { - error(loc, "constructor argument does not have a type", "constructor", ""); + error(loc, "constructor argument does not have a type", constructorString.c_str(), ""); return true; } if (op != EOpConstructStruct && op != EOpConstructNonuniform && typed->getBasicType() == EbtSampler) { - error(loc, "cannot convert a sampler", "constructor", ""); + error(loc, "cannot convert a sampler", constructorString.c_str(), ""); return true; } if (op != EOpConstructStruct && typed->isAtomic()) { - error(loc, "cannot convert an atomic_uint", "constructor", ""); + error(loc, "cannot convert an atomic_uint", constructorString.c_str(), ""); return true; } if (typed->getBasicType() == EbtVoid) { - error(loc, "cannot convert a void", "constructor", ""); + error(loc, "cannot convert a void", constructorString.c_str(), ""); return true; } @@ -7430,14 +7447,14 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp // Uniforms require a compile-time constant initializer if (qualifier == EvqUniform && ! initializer->getType().getQualifier().isFrontEndConstant()) { error(loc, "uniform initializers must be constant", "=", "'%s'", - variable->getType().getCompleteString().c_str()); + variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } // Global consts require a constant initializer (specialization constant is okay) if (qualifier == EvqConst && symbolTable.atGlobalLevel() && ! initializer->getType().getQualifier().isConstant()) { error(loc, "global const initializers must be constant", "=", "'%s'", - variable->getType().getCompleteString().c_str()); + variable->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); variable->getWritableType().getQualifier().makeTemporary(); return nullptr; } @@ -7500,7 +7517,7 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); TIntermTyped* initNode = intermediate.addAssign(EOpAssign, intermSymbol, initializer, loc); if (! initNode) - assignError(loc, "=", intermSymbol->getCompleteString(), initializer->getCompleteString()); + assignError(loc, "=", intermSymbol->getCompleteString(intermediate.getEnhancedMsgs()), initializer->getCompleteString(intermediate.getEnhancedMsgs())); return initNode; } @@ -7571,7 +7588,7 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const } } else if (type.isMatrix()) { if (type.getMatrixCols() != (int)initList->getSequence().size()) { - error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString().c_str()); + error(loc, "wrong number of matrix columns:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } TType vectorType(type, 0); // dereferenced type @@ -7582,20 +7599,20 @@ TIntermTyped* TParseContext::convertInitializerList(const TSourceLoc& loc, const } } else if (type.isVector()) { if (type.getVectorSize() != (int)initList->getSequence().size()) { - error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString().c_str()); + error(loc, "wrong vector size (or rows in a matrix column):", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } TBasicType destType = type.getBasicType(); for (int i = 0; i < type.getVectorSize(); ++i) { TBasicType initType = initList->getSequence()[i]->getAsTyped()->getBasicType(); if (destType != initType && !intermediate.canImplicitlyPromote(initType, destType)) { - error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString().c_str()); + error(loc, "type mismatch in initializer list", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } } } else { - error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString().c_str()); + error(loc, "unexpected initializer-list type:", "initializer list", type.getCompleteString(intermediate.getEnhancedMsgs()).c_str()); return nullptr; } @@ -8103,8 +8120,9 @@ TIntermTyped* TParseContext::constructAggregate(TIntermNode* node, const TType& { TIntermTyped* converted = intermediate.addConversion(EOpConstructStruct, type, node->getAsTyped()); if (! converted || converted->getType() != type) { + bool enhanced = intermediate.getEnhancedMsgs(); error(loc, "", "constructor", "cannot convert parameter %d from '%s' to '%s'", paramCount, - node->getAsTyped()->getType().getCompleteString().c_str(), type.getCompleteString().c_str()); + node->getAsTyped()->getType().getCompleteString(enhanced).c_str(), type.getCompleteString(enhanced).c_str()); return nullptr; } diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index bcf2c33ff7..871b9598a4 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1830,6 +1830,7 @@ void TShader::setUniqueId(unsigned long long id) void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); } +void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); } void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } #ifndef GLSLANG_WEB @@ -2049,6 +2050,8 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) firstIntermediate->getVersion(), firstIntermediate->getProfile()); intermediate[stage]->setLimits(firstIntermediate->getLimits()); + if (firstIntermediate->getEnhancedMsgs()) + intermediate[stage]->setEnhancedMsgs(); // The new TIntermediate must use the same origin as the original TIntermediates. // Otherwise linking will fail due to different coordinate systems. diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index d4cc5bc9ce..624add5a25 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -798,7 +798,7 @@ conditional_expression parseContext.rValueErrorCheck($5.loc, ":", $6); $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString()); + parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $6; } } @@ -815,7 +815,7 @@ assignment_expression parseContext.rValueErrorCheck($2.loc, "assign", $3); $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); if ($$ == 0) { - parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString()); + parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $1; } } @@ -877,7 +877,7 @@ expression parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); + parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $3; } } diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index df53eb5bd8..93c989953e 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -798,7 +798,7 @@ conditional_expression parseContext.rValueErrorCheck($5.loc, ":", $6); $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(), $6->getCompleteString()); + parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $6; } } @@ -815,7 +815,7 @@ assignment_expression parseContext.rValueErrorCheck($2.loc, "assign", $3); $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); if ($$ == 0) { - parseContext.assignError($2.loc, "assign", $1->getCompleteString(), $3->getCompleteString()); + parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $1; } } @@ -877,7 +877,7 @@ expression parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); $$ = parseContext.intermediate.addComma($1, $3, $2.loc); if ($$ == 0) { - parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(), $3->getCompleteString()); + parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); $$ = $3; } } diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 5ba6a6d495..0b216b622f 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -5878,7 +5878,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc); if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); + parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } @@ -5902,7 +5902,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.addAssign((yyvsp[-1].interm).loc, (yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) { - parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); + parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } @@ -6023,7 +6023,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); if ((yyval.interm.intermTypedNode) == 0) { - parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(), (yyvsp[0].interm.intermTypedNode)->getCompleteString()); + parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 620be97c97..f5dc9b2771 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -55,22 +55,28 @@ namespace glslang { // // Link-time error emitter. // -void TIntermediate::error(TInfoSink& infoSink, const char* message) +void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { #ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixError); - infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; + if (unitStage < EShLangCount) + infoSink.info << "Linking " << StageName(getStage()) << " and " << StageName(unitStage) << " stages: " << message << "\n"; + else + infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; #endif ++numErrors; } // Link-time warning. -void TIntermediate::warn(TInfoSink& infoSink, const char* message) +void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { #ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixWarning); - infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; + if (unitStage < EShLangCount) + infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n"; + else + infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; #endif } @@ -819,6 +825,10 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy #if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) bool crossStage = getStage() != unitStage; bool writeTypeComparison = false; + bool errorReported = false; + bool printQualifiers = false; + bool printPrecision = false; + bool printType = false; // Types have to match { @@ -850,11 +860,48 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy (symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray())); } - if (!symbol.getType().sameElementType(unitSymbol.getType()) || - !symbol.getType().sameTypeParameters(unitSymbol.getType()) || - !arraysMatch ) { + int lpidx = -1; + int rpidx = -1; + if (!symbol.getType().sameElementType(unitSymbol.getType(), &lpidx, &rpidx)) { + if (lpidx >= 0 && rpidx >= 0) { + error(infoSink, "Member names and types must match:", unitStage); + infoSink.info << " Block: " << symbol.getType().getTypeName() << "\n"; + infoSink.info << " " << StageName(getStage()) << " stage: \"" + << (*symbol.getType().getStruct())[lpidx].type->getCompleteString(true, false, false, true, + (*symbol.getType().getStruct())[lpidx].type->getFieldName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" + << (*unitSymbol.getType().getStruct())[rpidx].type->getCompleteString(true, false, false, true, + (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName()) << "\"\n"; + errorReported = true; + } else if (lpidx >= 0 && rpidx == -1) { + TString errmsg = StageName(getStage()); + errmsg.append(" block member has no corresponding member in ").append(StageName(unitStage)).append(" block:"); + error(infoSink, errmsg.c_str(), unitStage); + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: " + << (*symbol.getType().getStruct())[lpidx].type->getFieldName() << "\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: n/a \n"; + errorReported = true; + } else if (lpidx == -1 && rpidx >= 0) { + TString errmsg = StageName(unitStage); + errmsg.append(" block member has no corresponding member in ").append(StageName(getStage())).append(" block:"); + error(infoSink, errmsg.c_str(), unitStage); + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: " + << (*unitSymbol.getType().getStruct())[rpidx].type->getFieldName() << "\n"; + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: n/a \n"; + errorReported = true; + } else { + error(infoSink, "Types must match:", unitStage); + writeTypeComparison = true; + printType = true; + } + } else if (!arraysMatch) { + error(infoSink, "Array sizes must be compatible:", unitStage); + writeTypeComparison = true; + printType = true; + } else if (!symbol.getType().sameTypeParameters(unitSymbol.getType())) { + error(infoSink, "Type parameters must match:", unitStage); writeTypeComparison = true; - error(infoSink, "Types must match:"); + printType = true; } } @@ -875,13 +922,35 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy } const TQualifier& qualifier = (*symbol.getType().getStruct())[li].type->getQualifier(); const TQualifier & unitQualifier = (*unitSymbol.getType().getStruct())[ri].type->getQualifier(); - if (qualifier.layoutMatrix != unitQualifier.layoutMatrix || - qualifier.layoutOffset != unitQualifier.layoutOffset || - qualifier.layoutAlign != unitQualifier.layoutAlign || - qualifier.layoutLocation != unitQualifier.layoutLocation || - qualifier.layoutComponent != unitQualifier.layoutComponent) { - error(infoSink, "Interface block member layout qualifiers must match:"); - writeTypeComparison = true; + bool layoutQualifierError = false; + if (qualifier.layoutMatrix != unitQualifier.layoutMatrix) { + error(infoSink, "Interface block member layout matrix qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutOffset != unitQualifier.layoutOffset) { + error(infoSink, "Interface block member layout offset qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutAlign != unitQualifier.layoutAlign) { + error(infoSink, "Interface block member layout align qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutLocation != unitQualifier.layoutLocation) { + error(infoSink, "Interface block member layout location qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (qualifier.layoutComponent != unitQualifier.layoutComponent) { + error(infoSink, "Interface block member layout component qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (layoutQualifierError) { + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << ", Member: " + << (*symbol.getType().getStruct())[li].type->getFieldName() << " \"" + << (*symbol.getType().getStruct())[li].type->getCompleteString(true, true, false, false) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << ", Member: " + << (*unitSymbol.getType().getStruct())[ri].type->getFieldName() << " \"" + << (*unitSymbol.getType().getStruct())[ri].type->getCompleteString(true, true, false, false) << "\"\n"; + errorReported = true; } ++li; ++ri; @@ -895,8 +964,9 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy // Qualifiers have to (almost) match // Storage... if (!isInOut && symbol.getQualifier().storage != unitSymbol.getQualifier().storage) { - error(infoSink, "Storage qualifiers must match:"); + error(infoSink, "Storage qualifiers must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Uniform and buffer blocks must either both have an instance name, or @@ -904,33 +974,36 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy if (symbol.getQualifier().isUniformOrBuffer() && (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()))) { error(infoSink, "Matched Uniform or Storage blocks must all be anonymous," - " or all be named:"); + " or all be named:", unitStage); writeTypeComparison = true; } if (symbol.getQualifier().storage == unitSymbol.getQualifier().storage && (IsAnonymous(symbol.getName()) != IsAnonymous(unitSymbol.getName()) || (!IsAnonymous(symbol.getName()) && symbol.getName() != unitSymbol.getName()))) { - warn(infoSink, "Matched shader interfaces are using different instance names."); + warn(infoSink, "Matched shader interfaces are using different instance names.", unitStage); writeTypeComparison = true; } // Precision... if (!isInOut && symbol.getQualifier().precision != unitSymbol.getQualifier().precision) { - error(infoSink, "Precision qualifiers must match:"); + error(infoSink, "Precision qualifiers must match:", unitStage); writeTypeComparison = true; + printPrecision = true; } // Invariance... if (! crossStage && symbol.getQualifier().invariant != unitSymbol.getQualifier().invariant) { - error(infoSink, "Presence of invariant qualifier must match:"); + error(infoSink, "Presence of invariant qualifier must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Precise... if (! crossStage && symbol.getQualifier().isNoContraction() != unitSymbol.getQualifier().isNoContraction()) { - error(infoSink, "Presence of precise qualifier must match:"); + error(infoSink, "Presence of precise qualifier must match:", unitStage); writeTypeComparison = true; + printPrecision = true; } // Auxiliary and interpolation... @@ -944,57 +1017,137 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy symbol.getQualifier().isSample()!= unitSymbol.getQualifier().isSample() || symbol.getQualifier().isPatch() != unitSymbol.getQualifier().isPatch() || symbol.getQualifier().isNonPerspective() != unitSymbol.getQualifier().isNonPerspective())) { - error(infoSink, "Interpolation and auxiliary storage qualifiers must match:"); + error(infoSink, "Interpolation and auxiliary storage qualifiers must match:", unitStage); writeTypeComparison = true; + printQualifiers = true; } // Memory... - if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent || - symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent || - symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent || - symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent || - symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent || - symbol.getQualifier().shadercallcoherent!= unitSymbol.getQualifier().shadercallcoherent || - symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate || - symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil || - symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict || - symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly || - symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) { - error(infoSink, "Memory qualifiers must match:"); - writeTypeComparison = true; + bool memoryQualifierError = false; + if (symbol.getQualifier().coherent != unitSymbol.getQualifier().coherent) { + error(infoSink, "Memory coherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().devicecoherent != unitSymbol.getQualifier().devicecoherent) { + error(infoSink, "Memory devicecoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().queuefamilycoherent != unitSymbol.getQualifier().queuefamilycoherent) { + error(infoSink, "Memory queuefamilycoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().workgroupcoherent != unitSymbol.getQualifier().workgroupcoherent) { + error(infoSink, "Memory workgroupcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().subgroupcoherent != unitSymbol.getQualifier().subgroupcoherent) { + error(infoSink, "Memory subgroupcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().shadercallcoherent != unitSymbol.getQualifier().shadercallcoherent) { + error(infoSink, "Memory shadercallcoherent qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().nonprivate != unitSymbol.getQualifier().nonprivate) { + error(infoSink, "Memory nonprivate qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().volatil != unitSymbol.getQualifier().volatil) { + error(infoSink, "Memory volatil qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().restrict != unitSymbol.getQualifier().restrict) { + error(infoSink, "Memory restrict qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().readonly != unitSymbol.getQualifier().readonly) { + error(infoSink, "Memory readonly qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (symbol.getQualifier().writeonly != unitSymbol.getQualifier().writeonly) { + error(infoSink, "Memory writeonly qualifier must match:", unitStage); + memoryQualifierError = true; + } + if (memoryQualifierError) { + writeTypeComparison = true; + printQualifiers = true; } // Layouts... // TODO: 4.4 enhanced layouts: Generalize to include offset/align: current spec // requires separate user-supplied offset from actual computed offset, but // current implementation only has one offset. - if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix || - symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking || - (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) || - symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent || - symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex || - (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) || - (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset))) { - error(infoSink, "Layout qualification must match:"); + bool layoutQualifierError = false; + if (symbol.getQualifier().layoutMatrix != unitSymbol.getQualifier().layoutMatrix) { + error(infoSink, "Layout matrix qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutPacking != unitSymbol.getQualifier().layoutPacking) { + error(infoSink, "Layout packing qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasLocation() && unitSymbol.getQualifier().hasLocation() && symbol.getQualifier().layoutLocation != unitSymbol.getQualifier().layoutLocation) { + error(infoSink, "Layout location qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutComponent != unitSymbol.getQualifier().layoutComponent) { + error(infoSink, "Layout component qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().layoutIndex != unitSymbol.getQualifier().layoutIndex) { + error(infoSink, "Layout index qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasBinding() && unitSymbol.getQualifier().hasBinding() && symbol.getQualifier().layoutBinding != unitSymbol.getQualifier().layoutBinding) { + error(infoSink, "Layout binding qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (symbol.getQualifier().hasBinding() && (symbol.getQualifier().layoutOffset != unitSymbol.getQualifier().layoutOffset)) { + error(infoSink, "Layout offset qualifier must match:", unitStage); + layoutQualifierError = true; + } + if (layoutQualifierError) { writeTypeComparison = true; + printQualifiers = true; } // Initializers have to match, if both are present, and if we don't already know the types don't match - if (! writeTypeComparison) { + if (! writeTypeComparison && ! errorReported) { if (! symbol.getConstArray().empty() && ! unitSymbol.getConstArray().empty()) { if (symbol.getConstArray() != unitSymbol.getConstArray()) { - error(infoSink, "Initializers must match:"); + error(infoSink, "Initializers must match:", unitStage); infoSink.info << " " << symbol.getName() << "\n"; } } } if (writeTypeComparison) { - infoSink.info << " " << symbol.getName() << ": \"" << symbol.getType().getCompleteString() << "\" versus "; - if (symbol.getName() != unitSymbol.getName()) - infoSink.info << unitSymbol.getName() << ": "; - - infoSink.info << "\"" << unitSymbol.getType().getCompleteString() << "\"\n"; + if (symbol.getType().getBasicType() == EbtBlock && unitSymbol.getType().getBasicType() == EbtBlock && + symbol.getType().getStruct() && unitSymbol.getType().getStruct()) { + if (printType) { + infoSink.info << " " << StageName(getStage()) << " stage: \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, + printType, symbol.getName(), symbol.getType().getTypeName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, + printType, unitSymbol.getName(), unitSymbol.getType().getTypeName()) << "\"\n"; + } else { + infoSink.info << " " << StageName(getStage()) << " stage: Block: " << symbol.getType().getTypeName() << " Instance: " << symbol.getName() + << ": \"" << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: Block: " << unitSymbol.getType().getTypeName() << " Instance: " << unitSymbol.getName() + << ": \"" << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + } + } else { + if (printType) { + infoSink.info << " " << StageName(getStage()) << " stage: \"" + << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, symbol.getName()) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: \"" + << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType, unitSymbol.getName()) << "\"\n"; + } else { + infoSink.info << " " << StageName(getStage()) << " stage: " << symbol.getName() << " \"" + << symbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + infoSink.info << " " << StageName(unitStage) << " stage: " << unitSymbol.getName() << " \"" + << unitSymbol.getType().getCompleteString(true, printQualifiers, printPrecision, printType) << "\"\n"; + } + } } #endif } diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index a658c09c6c..c4d80159de 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -291,6 +291,7 @@ class TIntermediate { numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), invertY(false), dxPositionW(false), + enhancedMsgs(false), useStorageBuffer(false), invariantAll(false), nanMinMaxClamp(false), @@ -469,12 +470,18 @@ class TIntermediate { void setDxPositionW(bool dxPosW) { - dxPositionW = dxPosW; - if (dxPositionW) - processes.addProcess("dx-position-w"); + dxPositionW = dxPosW; + if (dxPositionW) + processes.addProcess("dx-position-w"); } bool getDxPositionW() const { return dxPositionW; } + void setEnhancedMsgs() + { + enhancedMsgs = true; + } + bool getEnhancedMsgs() const { return enhancedMsgs && source == EShSourceGlsl; } + #ifdef ENABLE_HLSL void setSource(EShSource s) { source = s; } EShSource getSource() const { return source; } @@ -1031,8 +1038,8 @@ class TIntermediate { protected: TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); - void error(TInfoSink& infoSink, const char*); - void warn(TInfoSink& infoSink, const char*); + void error(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount); + void warn(TInfoSink& infoSink, const char*, EShLanguage unitStage = EShLangCount); void mergeCallGraphs(TInfoSink&, TIntermediate&); void mergeModes(TInfoSink&, TIntermediate&); void mergeTrees(TInfoSink&, TIntermediate&); @@ -1086,6 +1093,7 @@ class TIntermediate { bool recursive; bool invertY; bool dxPositionW; + bool enhancedMsgs; bool useStorageBuffer; bool invariantAll; bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 3c0e2910d6..2e240255e9 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -264,6 +264,7 @@ enum EShMessages : unsigned { EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (for samplers and semantics) EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table + EShMsgEnhanced = (1 << 15), // enhanced message readability LAST_ELEMENT_MARKER(EShMsgCount), }; @@ -488,6 +489,7 @@ class TShader { GLSLANG_EXPORT void setUniformLocationBase(int base); GLSLANG_EXPORT void setInvertY(bool invert); GLSLANG_EXPORT void setDxPositionW(bool dxPosW); + GLSLANG_EXPORT void setEnhancedMsgs(); #ifdef ENABLE_HLSL GLSLANG_EXPORT void setHlslIoMapping(bool hlslIoMap); GLSLANG_EXPORT void setFlattenUniformArrays(bool flatten); From acd4425a29a98a20edb7544ccdb3d5a9ce791ce2 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 2 Feb 2022 18:37:43 -0700 Subject: [PATCH 012/594] Update spirv-tools known good Picking up some spirv-tools bug fixes --- known_good.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known_good.json b/known_good.json index 0eebc7d8b8..c2575d0a28 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "73735db943d7165d725883a1da0ad9eac79c1e34" + "commit" : "45dd184c790d6bfc78a5a74a10c37e888b1823fa" }, { "name" : "spirv-tools/external/spirv-headers", From c5072a8cabd465ac967d7012d979b6f4d4b16a8a Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Mon, 7 Feb 2022 12:15:31 -0700 Subject: [PATCH 013/594] Fix sameElementShape test of sampler There is apparently a hole in the initialization of sampler in TType so that a simple comparison which should pass might fail. Until the hole is found, also test that both types are samplers before comparing the sampler field for equality. Fixes #2875 --- glslang/Include/Types.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 54150fbe35..91fcd4eb28 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -2703,7 +2703,7 @@ class TType { *lpidx = -1; *rpidx = -1; } - return sampler == right.sampler && + return ((basicType != EbtSampler && right.basicType != EbtSampler) || sampler == right.sampler) && vectorSize == right.vectorSize && matrixCols == right.matrixCols && matrixRows == right.matrixRows && From be202ef9ba53ea7fc24143d718544c04e5f237f2 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Wed, 9 Feb 2022 18:44:22 -0500 Subject: [PATCH 014/594] avoid leaving decorations on auto-push-constants uniform blocks that are upgraded to push_constants shouldn't have set/binding etc. decorations applied to them --- glslang/MachineIndependent/iomapper.cpp | 28 ++++++++++++------------- glslang/MachineIndependent/iomapper.h | 9 ++++++++ 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index a3c53f505d..4250e92da6 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -203,11 +203,7 @@ struct TResolverUniformAdaptor { inline void operator()(std::pair& entKey) { TVarEntryInfo& ent = entKey.second; - ent.newLocation = -1; - ent.newComponent = -1; - ent.newBinding = -1; - ent.newSet = -1; - ent.newIndex = -1; + ent.clearNewAssignments(); const bool isValid = resolver.validateBinding(stage, ent); if (isValid) { resolver.resolveSet(ent.stage, ent); @@ -281,11 +277,7 @@ struct TResolverInOutAdaptor { inline void operator()(std::pair& entKey) { TVarEntryInfo& ent = entKey.second; - ent.newLocation = -1; - ent.newComponent = -1; - ent.newBinding = -1; - ent.newSet = -1; - ent.newIndex = -1; + ent.clearNewAssignments(); const bool isValid = resolver.validateInOut(ent.stage, ent); if (isValid) { resolver.resolveInOutLocation(stage, ent); @@ -1670,6 +1662,10 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { if (size <= int(autoPushConstantMaxSize)) { qualifier.setBlockStorage(EbsPushConstant); qualifier.layoutPacking = autoPushConstantBlockPacking; + // Push constants don't have set/binding etc. decorations, remove those. + qualifier.layoutSet = TQualifier::layoutSetEnd; + at->second.clearNewAssignments(); + upgraded = true; } } @@ -1677,10 +1673,14 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { // If it's been upgraded to push_constant, then remove it from the uniformVector // so it doesn't get a set/binding assigned to it. if (upgraded) { - auto at = std::find_if(uniformVector.begin(), uniformVector.end(), - [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; }); - if (at != uniformVector.end()) - uniformVector.erase(at); + while (1) { + auto at = std::find_if(uniformVector.begin(), uniformVector.end(), + [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; }); + if (at != uniformVector.end()) + uniformVector.erase(at); + else + break; + } } } for (size_t stage = 0; stage < EShLangCount; stage++) { diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index c43864e3aa..ba7bc3bbc7 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -61,6 +61,15 @@ struct TVarEntryInfo { int newComponent; int newIndex; EShLanguage stage; + + void clearNewAssignments() { + newBinding = -1; + newSet = -1; + newLocation = -1; + newComponent = -1; + newIndex = -1; + } + struct TOrderById { inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { return l.id < r.id; } }; From 25555a7f62cf10e301f110142eea49d20fac27f9 Mon Sep 17 00:00:00 2001 From: Brendan Shanks Date: Thu, 10 Feb 2022 09:24:03 -0800 Subject: [PATCH 015/594] Explicitly use Python 3 for scripts --- build_info.py | 2 +- gen_extension_headers.py | 4 ++-- update_glslang_sources.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) mode change 100644 => 100755 gen_extension_headers.py diff --git a/build_info.py b/build_info.py index 7c1998f6e0..06d613b0d9 100755 --- a/build_info.py +++ b/build_info.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2020 Google Inc. # diff --git a/gen_extension_headers.py b/gen_extension_headers.py old mode 100644 new mode 100755 index a787f9a9cb..2838c9622e --- a/gen_extension_headers.py +++ b/gen_extension_headers.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright (c) 2020 Google Inc. # @@ -95,4 +95,4 @@ def main(): generate_main(glsl_files, output_file) if __name__ == '__main__': - main() \ No newline at end of file + main() diff --git a/update_glslang_sources.py b/update_glslang_sources.py index 65be2f6a2c..20f303ba3b 100755 --- a/update_glslang_sources.py +++ b/update_glslang_sources.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 # Copyright 2017 The Glslang Authors. All rights reserved. # From 63dbacaa9431b48fb1a6fc83632095a3b4d7dfd7 Mon Sep 17 00:00:00 2001 From: David Neto Date: Wed, 16 Feb 2022 17:10:29 -0500 Subject: [PATCH 016/594] Fix Test/hlsl.namespace.frag test case Before this change, the example is rejected by DXC: $ dxc -T ps_6_0 hlsl.namespace.frag hlsl.namespace.frag:22:73: error: call to non-static member function without an object argument return N1::getVec() + N2::getVec() + N2::N3::getVec() + N2::N3::C1::getVec() * N2::gf; ~~~~~~~~~~~~^~~~~~ The call to the class member function requires an object, or we ned to make the function static. This update makes the function static. This also fixes SPIR-V validation: without this change the call to that getVec does not have enough arguments: error: line 69: OpFunctionCall Function 's parameter count does not match the argument count. %43 = OpFunctionCall %v4float %N2__N3__C1__getVec_ --- Test/baseResults/hlsl.namespace.frag.out | 97 +++++++++++------------- Test/hlsl.namespace.frag | 2 +- 2 files changed, 45 insertions(+), 54 deletions(-) diff --git a/Test/baseResults/hlsl.namespace.frag.out b/Test/baseResults/hlsl.namespace.frag.out index 5346c44a06..e224eb922f 100644 --- a/Test/baseResults/hlsl.namespace.frag.out +++ b/Test/baseResults/hlsl.namespace.frag.out @@ -17,9 +17,8 @@ gl_FragCoord origin is upper left 0:? Sequence 0:12 Branch: Return with expression 0:12 'v2' ( global 4-component vector of float) -0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float) 0:15 Function Parameters: -0:15 '@this' ( temp structure{}) 0:? Sequence 0:15 Branch: Return with expression 0:15 'v2' ( global 4-component vector of float) @@ -34,7 +33,7 @@ gl_FragCoord origin is upper left 0:22 Function Call: N2::getVec( ( temp 4-component vector of float) 0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float) 0:22 vector-scale ( temp 4-component vector of float) -0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float) 0:22 'N2::gf' ( global float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: @@ -70,9 +69,8 @@ gl_FragCoord origin is upper left 0:? Sequence 0:12 Branch: Return with expression 0:12 'v2' ( global 4-component vector of float) -0:15 Function Definition: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:15 Function Definition: N2::N3::C1::getVec( ( global 4-component vector of float) 0:15 Function Parameters: -0:15 '@this' ( temp structure{}) 0:? Sequence 0:15 Branch: Return with expression 0:15 'v2' ( global 4-component vector of float) @@ -87,7 +85,7 @@ gl_FragCoord origin is upper left 0:22 Function Call: N2::getVec( ( temp 4-component vector of float) 0:22 Function Call: N2::N3::getVec( ( temp 4-component vector of float) 0:22 vector-scale ( temp 4-component vector of float) -0:22 Function Call: N2::N3::C1::getVec( ( temp 4-component vector of float) +0:22 Function Call: N2::N3::C1::getVec( ( global 4-component vector of float) 0:22 'N2::gf' ( global float) 0:21 Function Definition: main( ( temp void) 0:21 Function Parameters: @@ -101,82 +99,75 @@ gl_FragCoord origin is upper left 0:? 'N2::gf' ( global float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 54 +// Id's are bound by 50 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 52 + EntryPoint Fragment 4 "main" 48 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" Name 9 "N1::getVec(" Name 11 "N2::getVec(" Name 13 "N2::N3::getVec(" - Name 15 "C1" - Name 19 "N2::N3::C1::getVec(" - Name 18 "@this" - Name 21 "@main(" - Name 24 "v1" - Name 28 "v2" - Name 45 "N2::gf" - Name 52 "@entryPointOutput" - Decorate 52(@entryPointOutput) Location 0 + Name 15 "N2::N3::C1::getVec(" + Name 17 "@main(" + Name 20 "v1" + Name 24 "v2" + Name 41 "N2::gf" + Name 48 "@entryPointOutput" + Decorate 48(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 7: TypeVector 6(float) 4 8: TypeFunction 7(fvec4) - 15(C1): TypeStruct - 16: TypePointer Function 15(C1) - 17: TypeFunction 7(fvec4) 16(ptr) - 23: TypePointer Private 7(fvec4) - 24(v1): 23(ptr) Variable Private - 28(v2): 23(ptr) Variable Private - 44: TypePointer Private 6(float) - 45(N2::gf): 44(ptr) Variable Private - 51: TypePointer Output 7(fvec4) -52(@entryPointOutput): 51(ptr) Variable Output + 19: TypePointer Private 7(fvec4) + 20(v1): 19(ptr) Variable Private + 24(v2): 19(ptr) Variable Private + 40: TypePointer Private 6(float) + 41(N2::gf): 40(ptr) Variable Private + 47: TypePointer Output 7(fvec4) +48(@entryPointOutput): 47(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 53: 7(fvec4) FunctionCall 21(@main() - Store 52(@entryPointOutput) 53 + 49: 7(fvec4) FunctionCall 17(@main() + Store 48(@entryPointOutput) 49 Return FunctionEnd 9(N1::getVec(): 7(fvec4) Function None 8 10: Label - 25: 7(fvec4) Load 24(v1) - ReturnValue 25 + 21: 7(fvec4) Load 20(v1) + ReturnValue 21 FunctionEnd 11(N2::getVec(): 7(fvec4) Function None 8 12: Label - 29: 7(fvec4) Load 28(v2) - ReturnValue 29 + 25: 7(fvec4) Load 24(v2) + ReturnValue 25 FunctionEnd 13(N2::N3::getVec(): 7(fvec4) Function None 8 14: Label - 32: 7(fvec4) Load 28(v2) - ReturnValue 32 + 28: 7(fvec4) Load 24(v2) + ReturnValue 28 FunctionEnd -19(N2::N3::C1::getVec(): 7(fvec4) Function None 17 - 18(@this): 16(ptr) FunctionParameter - 20: Label - 35: 7(fvec4) Load 28(v2) - ReturnValue 35 +15(N2::N3::C1::getVec(): 7(fvec4) Function None 8 + 16: Label + 31: 7(fvec4) Load 24(v2) + ReturnValue 31 FunctionEnd - 21(@main(): 7(fvec4) Function None 8 - 22: Label - 38: 7(fvec4) FunctionCall 9(N1::getVec() - 39: 7(fvec4) FunctionCall 11(N2::getVec() - 40: 7(fvec4) FAdd 38 39 - 41: 7(fvec4) FunctionCall 13(N2::N3::getVec() - 42: 7(fvec4) FAdd 40 41 - 43: 7(fvec4) FunctionCall 19(N2::N3::C1::getVec() - 46: 6(float) Load 45(N2::gf) - 47: 7(fvec4) VectorTimesScalar 43 46 - 48: 7(fvec4) FAdd 42 47 - ReturnValue 48 + 17(@main(): 7(fvec4) Function None 8 + 18: Label + 34: 7(fvec4) FunctionCall 9(N1::getVec() + 35: 7(fvec4) FunctionCall 11(N2::getVec() + 36: 7(fvec4) FAdd 34 35 + 37: 7(fvec4) FunctionCall 13(N2::N3::getVec() + 38: 7(fvec4) FAdd 36 37 + 39: 7(fvec4) FunctionCall 15(N2::N3::C1::getVec() + 42: 6(float) Load 41(N2::gf) + 43: 7(fvec4) VectorTimesScalar 39 42 + 44: 7(fvec4) FAdd 38 43 + ReturnValue 44 FunctionEnd diff --git a/Test/hlsl.namespace.frag b/Test/hlsl.namespace.frag index 76c3062d6a..d2b044586b 100644 --- a/Test/hlsl.namespace.frag +++ b/Test/hlsl.namespace.frag @@ -12,7 +12,7 @@ namespace N2 { float4 getVec() { return v2; } class C1 { - float4 getVec() { return v2; } + static float4 getVec() { return v2; } }; } } From bbe692e731fe16933d9994160917355f94c86e3a Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Fri, 18 Feb 2022 15:08:28 -0700 Subject: [PATCH 017/594] Improve error message for image/sampler functions for enhanced-msgs For recent GLSL versions, if texture2D function call appears, the error message reports an unsupported type constructor. Change message to unsupported function. Likewise for other removed texture* function calls. --- Test/baseResults/spv.textureError.frag.out | 6 ++++++ Test/runtests | 2 ++ Test/spv.textureError.frag | 10 ++++++++++ glslang/MachineIndependent/ParseHelper.cpp | 5 ++++- 4 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.textureError.frag.out create mode 100644 Test/spv.textureError.frag diff --git a/Test/baseResults/spv.textureError.frag.out b/Test/baseResults/spv.textureError.frag.out new file mode 100644 index 0000000000..d5ef59ce91 --- /dev/null +++ b/Test/baseResults/spv.textureError.frag.out @@ -0,0 +1,6 @@ +spv.textureError.frag +ERROR: spv.textureError.frag:8: 'texture*D*' : function not supported in this version; use texture() instead +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/runtests b/Test/runtests index 9f588e281d..aee6178613 100755 --- a/Test/runtests +++ b/Test/runtests @@ -319,6 +319,8 @@ run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.6.vert enhanc diff -b $BASEDIR/enhanced.6.link.out $TARGETDIR/enhanced.6.link.out || HASERROR=1 run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanced.7.frag > $TARGETDIR/enhanced.7.link.out diff -b $BASEDIR/enhanced.7.link.out $TARGETDIR/enhanced.7.link.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > $TARGETDIR/spv.textureError.frag.out +diff -b $BASEDIR/spv.textureError.frag.out $TARGETDIR/spv.textureError.frag.out || HASERROR=1 # # Final checking diff --git a/Test/spv.textureError.frag b/Test/spv.textureError.frag new file mode 100644 index 0000000000..a40ea36397 --- /dev/null +++ b/Test/spv.textureError.frag @@ -0,0 +1,10 @@ +#version 140 + +uniform sampler2D s2D; +centroid vec2 centTexCoord; + +void main() +{ + gl_FragColor = texture2D(s2D, centTexCoord); +} + diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 64e352f316..d4f3fddd8d 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2799,7 +2799,10 @@ TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPu TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { - error(loc, "cannot construct this type", type.getBasicString(), ""); + if (intermediate.getEnhancedMsgs() && type.getBasicType() == EbtSampler) + error(loc, "function not supported in this version; use texture() instead", "texture*D*", ""); + else + error(loc, "cannot construct this type", type.getBasicString(), ""); op = EOpConstructFloat; TType errorType(EbtFloat); type.shallowCopy(errorType); From 79a35ace7c000171ee3822f542e85f69219584d5 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Feb 2022 13:50:41 -0700 Subject: [PATCH 018/594] Don't do updatePrecision on float16_t operations float16_t does not take GLSL precisions and SPIR-V does not support RelaxedPrecision on float16_t. Fixes #2894 --- .../baseResults/spv.float16NoRelaxed.vert.out | 72 +++++++++++++++++++ Test/spv.float16NoRelaxed.vert | 16 +++++ glslang/MachineIndependent/Intermediate.cpp | 8 +-- gtests/Spv.FromFile.cpp | 1 + 4 files changed, 93 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/spv.float16NoRelaxed.vert.out create mode 100644 Test/spv.float16NoRelaxed.vert diff --git a/Test/baseResults/spv.float16NoRelaxed.vert.out b/Test/baseResults/spv.float16NoRelaxed.vert.out new file mode 100644 index 0000000000..8872b4637d --- /dev/null +++ b/Test/baseResults/spv.float16NoRelaxed.vert.out @@ -0,0 +1,72 @@ +spv.float16NoRelaxed.vert +// Module Version 10300 +// Generated by (magic number): 8000a +// Id's are bound by 35 + + Capability Shader + Capability Float16 + Capability GroupNonUniform + Capability GroupNonUniformVote + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 11 30 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 8 "valueNoEqual" + Name 11 "gl_SubgroupInvocationID" + Name 15 "tempRes" + Name 26 "Buffer1" + MemberName 26(Buffer1) 0 "result" + Name 28 "" + Name 30 "gl_VertexIndex" + Decorate 11(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 11(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 12 RelaxedPrecision + Decorate 25 ArrayStride 4 + MemberDecorate 26(Buffer1) 0 Offset 0 + Decorate 26(Buffer1) Block + Decorate 28 DescriptorSet 0 + Decorate 28 Binding 0 + Decorate 30(gl_VertexIndex) BuiltIn VertexIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7: TypePointer Function 6(float16_t) + 9: TypeInt 32 0 + 10: TypePointer Input 9(int) +11(gl_SubgroupInvocationID): 10(ptr) Variable Input + 14: TypePointer Function 9(int) + 17: TypeBool + 18: 9(int) Constant 3 + 20: TypeInt 32 1 + 21: 20(int) Constant 0 + 22: 20(int) Constant 16 + 25: TypeRuntimeArray 9(int) + 26(Buffer1): TypeStruct 25 + 27: TypePointer StorageBuffer 26(Buffer1) + 28: 27(ptr) Variable StorageBuffer + 29: TypePointer Input 20(int) +30(gl_VertexIndex): 29(ptr) Variable Input + 33: TypePointer StorageBuffer 9(int) + 4(main): 2 Function None 3 + 5: Label + 8(valueNoEqual): 7(ptr) Variable Function + 15(tempRes): 14(ptr) Variable Function + 12: 9(int) Load 11(gl_SubgroupInvocationID) + 13:6(float16_t) ConvertUToF 12 + Store 8(valueNoEqual) 13 + 16:6(float16_t) Load 8(valueNoEqual) + 19: 17(bool) GroupNonUniformAllEqual 18 16 + 23: 20(int) Select 19 21 22 + 24: 9(int) Bitcast 23 + Store 15(tempRes) 24 + 31: 20(int) Load 30(gl_VertexIndex) + 32: 9(int) Load 15(tempRes) + 34: 33(ptr) AccessChain 28 21 31 + Store 34 32 + Return + FunctionEnd diff --git a/Test/spv.float16NoRelaxed.vert b/Test/spv.float16NoRelaxed.vert new file mode 100644 index 0000000000..d594a1d4a5 --- /dev/null +++ b/Test/spv.float16NoRelaxed.vert @@ -0,0 +1,16 @@ +#version 450 +#extension GL_KHR_shader_subgroup_vote: enable +#extension GL_EXT_shader_subgroup_extended_types_float16 : enable +layout(set = 0, binding = 0, std430) buffer Buffer1 +{ + uint result[]; +}; + +void main (void) +{ + uint tempRes; + float16_t valueNoEqual = float16_t(gl_SubgroupInvocationID); + tempRes = subgroupAllEqual(valueNoEqual) ? 0x0 : 0x10; + result[gl_VertexIndex] = tempRes; +} + diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 6aea5b3d7c..14fd053a79 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2766,7 +2766,7 @@ void TIntermBranch::updatePrecision(TPrecisionQualifier parentPrecision) return; if (exp->getBasicType() == EbtInt || exp->getBasicType() == EbtUint || - exp->getBasicType() == EbtFloat || exp->getBasicType() == EbtFloat16) { + exp->getBasicType() == EbtFloat) { if (parentPrecision != EpqNone && exp->getQualifier().precision == EpqNone) { exp->propagatePrecision(parentPrecision); } @@ -3284,7 +3284,7 @@ bool TIntermediate::promoteUnary(TIntermUnary& node) void TIntermUnary::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || - getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + getBasicType() == EbtFloat) { if (operand->getQualifier().precision > getQualifier().precision) getQualifier().precision = operand->getQualifier().precision; } @@ -3785,7 +3785,7 @@ bool TIntermediate::promoteAggregate(TIntermAggregate& node) void TIntermAggregate::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || - getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + getBasicType() == EbtFloat) { TPrecisionQualifier maxPrecision = EpqNone; TIntermSequence operands = getSequence(); for (unsigned int i = 0; i < operands.size(); ++i) { @@ -3807,7 +3807,7 @@ void TIntermAggregate::updatePrecision() void TIntermBinary::updatePrecision() { if (getBasicType() == EbtInt || getBasicType() == EbtUint || - getBasicType() == EbtFloat || getBasicType() == EbtFloat16) { + getBasicType() == EbtFloat) { if (op == EOpRightShift || op == EOpLeftShift) { // For shifts get precision from left side only and thus no need to propagate getQualifier().precision = left->getQualifier().precision; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ba08226c0c..db4ac26830 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -528,6 +528,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.vulkan110.int16.frag", "spv.int32.frag", "spv.explicittypes.frag", + "spv.float16NoRelaxed.vert", "spv.float32.frag", "spv.float64.frag", "spv.memoryScopeSemantics.comp", From 438999d24fff668c47798288929786e4e706c270 Mon Sep 17 00:00:00 2001 From: ZhiqianXia Date: Tue, 1 Mar 2022 15:06:04 +0800 Subject: [PATCH 019/594] 1. refine the check for "origin_upper_left" and "pixel_center_integer" 2. gl_FragCoord can be used at ogl140 with extension "GL_ARB_fragment_coord_conventions". Signed-off-by: ZhiqianXia --- Test/baseResults/coord_conventions.frag.out | 255 ++++++++++++++++++++ Test/coord_conventions.frag | 36 +++ glslang/MachineIndependent/ParseHelper.cpp | 13 +- gtests/AST.FromFile.cpp | 1 + 4 files changed, 302 insertions(+), 3 deletions(-) create mode 100644 Test/baseResults/coord_conventions.frag.out create mode 100644 Test/coord_conventions.frag diff --git a/Test/baseResults/coord_conventions.frag.out b/Test/baseResults/coord_conventions.frag.out new file mode 100644 index 0000000000..656c60874c --- /dev/null +++ b/Test/baseResults/coord_conventions.frag.out @@ -0,0 +1,255 @@ +coord_conventions.frag +Shader version: 140 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_fragment_coord_conventions +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:20 Test condition and select ( temp void) +0:20 Condition +0:20 Compare Greater Than or Equal ( temp bool) +0:20 direct index ( temp float) +0:20 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 10.000000 +0:20 true case +0:21 Sequence +0:21 move second child to first child ( temp float) +0:21 direct index ( temp float) +0:21 'myColor' (layout( location=0) out 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:21 Constant: +0:21 0.800000 +0:23 Test condition and select ( temp void) +0:23 Condition +0:23 Compare Equal ( temp bool) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 trunc ( global float) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 true case +0:24 Sequence +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 'myColor' (layout( location=0) out 4-component vector of float) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0.800000 +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 Compare Equal ( temp bool) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 trunc ( global float) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 true case +0:27 Sequence +0:27 move second child to first child ( temp float) +0:27 direct index ( temp float) +0:27 'myColor' (layout( location=0) out 4-component vector of float) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 0.800000 +0:30 Sequence +0:30 move second child to first child ( temp 4-component vector of float) +0:30 'diff' ( temp 4-component vector of float) +0:30 subtract ( temp 4-component vector of float) +0:30 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:30 'i' ( smooth in 4-component vector of float) +0:31 Test condition and select ( temp void) +0:31 Condition +0:31 Compare Greater Than ( temp bool) +0:31 Absolute value ( global float) +0:31 direct index ( temp float) +0:31 'diff' ( temp 4-component vector of float) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 0.001000 +0:31 true case +0:32 move second child to first child ( temp float) +0:32 direct index ( temp float) +0:32 'myColor' (layout( location=0) out 4-component vector of float) +0:32 Constant: +0:32 2 (const int) +0:32 Constant: +0:32 0.500000 +0:33 Test condition and select ( temp void) +0:33 Condition +0:33 Compare Greater Than ( temp bool) +0:33 Absolute value ( global float) +0:33 direct index ( temp float) +0:33 'diff' ( temp 4-component vector of float) +0:33 Constant: +0:33 3 (const int) +0:33 Constant: +0:33 0.001000 +0:33 true case +0:34 move second child to first child ( temp float) +0:34 direct index ( temp float) +0:34 'myColor' (layout( location=0) out 4-component vector of float) +0:34 Constant: +0:34 3 (const int) +0:34 Constant: +0:34 0.500000 +0:? Linker Objects +0:? 'i' ( smooth in 4-component vector of float) +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + + +Linked fragment stage: + + +Shader version: 140 +Requested GL_ARB_explicit_attrib_location +Requested GL_ARB_fragment_coord_conventions +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:19 0.200000 +0:20 Test condition and select ( temp void) +0:20 Condition +0:20 Compare Greater Than or Equal ( temp bool) +0:20 direct index ( temp float) +0:20 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:20 Constant: +0:20 1 (const int) +0:20 Constant: +0:20 10.000000 +0:20 true case +0:21 Sequence +0:21 move second child to first child ( temp float) +0:21 direct index ( temp float) +0:21 'myColor' (layout( location=0) out 4-component vector of float) +0:21 Constant: +0:21 2 (const int) +0:21 Constant: +0:21 0.800000 +0:23 Test condition and select ( temp void) +0:23 Condition +0:23 Compare Equal ( temp bool) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 trunc ( global float) +0:23 direct index ( temp float) +0:23 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:23 Constant: +0:23 1 (const int) +0:23 true case +0:24 Sequence +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 'myColor' (layout( location=0) out 4-component vector of float) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0.800000 +0:26 Test condition and select ( temp void) +0:26 Condition +0:26 Compare Equal ( temp bool) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 trunc ( global float) +0:26 direct index ( temp float) +0:26 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:26 Constant: +0:26 0 (const int) +0:26 true case +0:27 Sequence +0:27 move second child to first child ( temp float) +0:27 direct index ( temp float) +0:27 'myColor' (layout( location=0) out 4-component vector of float) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 0.800000 +0:30 Sequence +0:30 move second child to first child ( temp 4-component vector of float) +0:30 'diff' ( temp 4-component vector of float) +0:30 subtract ( temp 4-component vector of float) +0:30 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:30 'i' ( smooth in 4-component vector of float) +0:31 Test condition and select ( temp void) +0:31 Condition +0:31 Compare Greater Than ( temp bool) +0:31 Absolute value ( global float) +0:31 direct index ( temp float) +0:31 'diff' ( temp 4-component vector of float) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 0.001000 +0:31 true case +0:32 move second child to first child ( temp float) +0:32 direct index ( temp float) +0:32 'myColor' (layout( location=0) out 4-component vector of float) +0:32 Constant: +0:32 2 (const int) +0:32 Constant: +0:32 0.500000 +0:33 Test condition and select ( temp void) +0:33 Condition +0:33 Compare Greater Than ( temp bool) +0:33 Absolute value ( global float) +0:33 direct index ( temp float) +0:33 'diff' ( temp 4-component vector of float) +0:33 Constant: +0:33 3 (const int) +0:33 Constant: +0:33 0.001000 +0:33 true case +0:34 move second child to first child ( temp float) +0:34 direct index ( temp float) +0:34 'myColor' (layout( location=0) out 4-component vector of float) +0:34 Constant: +0:34 3 (const int) +0:34 Constant: +0:34 0.500000 +0:? Linker Objects +0:? 'i' ( smooth in 4-component vector of float) +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + diff --git a/Test/coord_conventions.frag b/Test/coord_conventions.frag new file mode 100644 index 0000000000..4ae6060e8e --- /dev/null +++ b/Test/coord_conventions.frag @@ -0,0 +1,36 @@ +#version 140 + +#extension GL_ARB_fragment_coord_conventions: require +#extension GL_ARB_explicit_attrib_location : enable + +#ifdef GL_ES +precision mediump float; +#endif + +in vec4 i; + +layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord; +layout (location = 0) out vec4 myColor; + +const float eps=0.001; + +void main() +{ + myColor = vec4(0.2); + if (gl_FragCoord.y >= 10) { + myColor.b = 0.8; + } + if (gl_FragCoord.y == trunc(gl_FragCoord.y)) { + myColor.g = 0.8; + } + if (gl_FragCoord.x == trunc(gl_FragCoord.x)) { + myColor.r = 0.8; + } + + vec4 diff = gl_FragCoord - i; + if (abs(diff.z)>eps) + myColor.b = 0.5; + if (abs(diff.w)>eps) + myColor.a = 0.5; + +} \ No newline at end of file diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index d4f3fddd8d..508b16b081 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4611,7 +4611,7 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS if (ssoPre150 || (identifier == "gl_FragDepth" && ((nonEsRedecls && version >= 420) || esRedecls)) || - (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 150) || esRedecls)) || + (identifier == "gl_FragCoord" && ((nonEsRedecls && version >= 140) || esRedecls)) || identifier == "gl_ClipDistance" || identifier == "gl_CullDistance" || identifier == "gl_ShadingRateEXT" || @@ -5521,12 +5521,19 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } if (language == EShLangFragment) { if (id == "origin_upper_left") { - requireProfile(loc, ECoreProfile | ECompatibilityProfile, "origin_upper_left"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "origin_upper_left"); + if (profile == ENoProfile) { + profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "origin_upper_left"); + } + publicType.shaderQualifiers.originUpperLeft = true; return; } if (id == "pixel_center_integer") { - requireProfile(loc, ECoreProfile | ECompatibilityProfile, "pixel_center_integer"); + requireProfile(loc, ECoreProfile | ECompatibilityProfile | ENoProfile, "pixel_center_integer"); + if (profile == ENoProfile) { + profileRequires(loc,ECoreProfile | ECompatibilityProfile, 140, E_GL_ARB_fragment_coord_conventions, "pixel_center_integer"); + } publicType.shaderQualifiers.pixelCenterInteger = true; return; } diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index c0ced5e4a0..6270ca0df3 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -294,6 +294,7 @@ INSTANTIATE_TEST_SUITE_P( "BestMatchFunction.vert", "EndStreamPrimitive.geom", "floatBitsToInt.vert", + "coord_conventions.frag", })), FileNameAsCustomTestSuffix ); From 07f677028c990e18c3ec516ba20fa0fa695115f6 Mon Sep 17 00:00:00 2001 From: ZhiqianXia Date: Wed, 2 Mar 2022 19:54:33 +0800 Subject: [PATCH 020/594] The first redeclarations of gl_FragCoord must appear before any use of gl_FragCoord. --- Test/baseResults/150.frag.out | 3 +- Test/baseResults/gl_FragCoord.frag.out | 269 ++++++++++++++++++ Test/gl_FragCoord.frag | 31 ++ glslang/MachineIndependent/ParseHelper.cpp | 5 +- .../MachineIndependent/localintermediate.h | 6 +- gtests/AST.FromFile.cpp | 1 + 6 files changed, 311 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/gl_FragCoord.frag.out create mode 100644 Test/gl_FragCoord.frag diff --git a/Test/baseResults/150.frag.out b/Test/baseResults/150.frag.out index 066b8bb4e9..ba15b5cbf1 100644 --- a/Test/baseResults/150.frag.out +++ b/Test/baseResults/150.frag.out @@ -2,7 +2,6 @@ ERROR: 0:4: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:5: 'redeclaration' : cannot redeclare with different qualification: gl_FragCoord ERROR: 0:6: 'layout qualifier' : can only apply origin_upper_left and pixel_center_origin to gl_FragCoord -ERROR: 0:14: 'gl_FragCoord' : cannot redeclare after use ERROR: 0:50: 'gl_PerFragment' : undeclared identifier ERROR: 0:53: 'double' : Reserved word. ERROR: 0:53: 'double' : not supported for this version or the enabled extensions @@ -19,7 +18,7 @@ ERROR: 0:154: 'assign' : cannot convert from ' const float' to ' temp 2-compone ERROR: 0:155: 'textureQueryLOD' : no matching overloaded function found ERROR: 0:155: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' ERROR: 0:183: 'mix' : required extension not requested: GL_EXT_shader_integer_mix -ERROR: 18 compilation errors. No code generated. +ERROR: 17 compilation errors. No code generated. Shader version: 150 diff --git a/Test/baseResults/gl_FragCoord.frag.out b/Test/baseResults/gl_FragCoord.frag.out new file mode 100644 index 0000000000..da9e8dccde --- /dev/null +++ b/Test/baseResults/gl_FragCoord.frag.out @@ -0,0 +1,269 @@ +gl_FragCoord.frag +Shader version: 150 +Requested GL_ARB_explicit_attrib_location +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:9 Sequence +0:9 move second child to first child ( temp float) +0:9 'myGlobalVar' ( global float) +0:9 direct index ( temp float) +0:9 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:9 Constant: +0:9 0 (const int) +0:16 Function Definition: main( ( global void) +0:16 Function Parameters: +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'myColor' (layout( location=0) out 4-component vector of float) +0:17 Constant: +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:18 Test condition and select ( temp void) +0:18 Condition +0:18 Compare Greater Than or Equal ( temp bool) +0:18 direct index ( temp float) +0:18 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 10.000000 +0:18 true case +0:19 Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( temp float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0.800000 +0:21 Test condition and select ( temp void) +0:21 Condition +0:21 Compare Equal ( temp bool) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 trunc ( global float) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 true case +0:22 Sequence +0:22 move second child to first child ( temp float) +0:22 direct index ( temp float) +0:22 'myColor' (layout( location=0) out 4-component vector of float) +0:22 Constant: +0:22 1 (const int) +0:22 Constant: +0:22 0.800000 +0:24 Test condition and select ( temp void) +0:24 Condition +0:24 Compare Equal ( temp bool) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 trunc ( global float) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 true case +0:25 Sequence +0:25 move second child to first child ( temp float) +0:25 direct index ( temp float) +0:25 'myColor' (layout( location=0) out 4-component vector of float) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.800000 +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of float) +0:28 'diff' ( temp 4-component vector of float) +0:28 subtract ( temp 4-component vector of float) +0:28 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:28 'i' ( smooth in 4-component vector of float) +0:29 Test condition and select ( temp void) +0:29 Condition +0:29 Compare Greater Than ( temp bool) +0:29 Absolute value ( global float) +0:29 direct index ( temp float) +0:29 'diff' ( temp 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.001000 +0:29 true case +0:29 move second child to first child ( temp float) +0:29 direct index ( temp float) +0:29 'myColor' (layout( location=0) out 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.500000 +0:30 Test condition and select ( temp void) +0:30 Condition +0:30 Compare Greater Than ( temp bool) +0:30 Absolute value ( global float) +0:30 direct index ( temp float) +0:30 'diff' ( temp 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.001000 +0:30 true case +0:30 move second child to first child ( temp float) +0:30 direct index ( temp float) +0:30 'myColor' (layout( location=0) out 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.500000 +0:? Linker Objects +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myGlobalVar' ( global float) +0:? 'i' ( smooth in 4-component vector of float) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + + +Linked fragment stage: + + +Shader version: 150 +Requested GL_ARB_explicit_attrib_location +gl_FragCoord pixel center is integer +gl_FragCoord origin is upper left +0:? Sequence +0:9 Sequence +0:9 move second child to first child ( temp float) +0:9 'myGlobalVar' ( global float) +0:9 direct index ( temp float) +0:9 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:9 Constant: +0:9 0 (const int) +0:16 Function Definition: main( ( global void) +0:16 Function Parameters: +0:17 Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'myColor' (layout( location=0) out 4-component vector of float) +0:17 Constant: +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:17 0.200000 +0:18 Test condition and select ( temp void) +0:18 Condition +0:18 Compare Greater Than or Equal ( temp bool) +0:18 direct index ( temp float) +0:18 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:18 Constant: +0:18 1 (const int) +0:18 Constant: +0:18 10.000000 +0:18 true case +0:19 Sequence +0:19 move second child to first child ( temp float) +0:19 direct index ( temp float) +0:19 'myColor' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 2 (const int) +0:19 Constant: +0:19 0.800000 +0:21 Test condition and select ( temp void) +0:21 Condition +0:21 Compare Equal ( temp bool) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 trunc ( global float) +0:21 direct index ( temp float) +0:21 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:21 Constant: +0:21 1 (const int) +0:21 true case +0:22 Sequence +0:22 move second child to first child ( temp float) +0:22 direct index ( temp float) +0:22 'myColor' (layout( location=0) out 4-component vector of float) +0:22 Constant: +0:22 1 (const int) +0:22 Constant: +0:22 0.800000 +0:24 Test condition and select ( temp void) +0:24 Condition +0:24 Compare Equal ( temp bool) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 trunc ( global float) +0:24 direct index ( temp float) +0:24 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:24 Constant: +0:24 0 (const int) +0:24 true case +0:25 Sequence +0:25 move second child to first child ( temp float) +0:25 direct index ( temp float) +0:25 'myColor' (layout( location=0) out 4-component vector of float) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0.800000 +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of float) +0:28 'diff' ( temp 4-component vector of float) +0:28 subtract ( temp 4-component vector of float) +0:28 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:28 'i' ( smooth in 4-component vector of float) +0:29 Test condition and select ( temp void) +0:29 Condition +0:29 Compare Greater Than ( temp bool) +0:29 Absolute value ( global float) +0:29 direct index ( temp float) +0:29 'diff' ( temp 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.001000 +0:29 true case +0:29 move second child to first child ( temp float) +0:29 direct index ( temp float) +0:29 'myColor' (layout( location=0) out 4-component vector of float) +0:29 Constant: +0:29 2 (const int) +0:29 Constant: +0:29 0.500000 +0:30 Test condition and select ( temp void) +0:30 Condition +0:30 Compare Greater Than ( temp bool) +0:30 Absolute value ( global float) +0:30 direct index ( temp float) +0:30 'diff' ( temp 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.001000 +0:30 true case +0:30 move second child to first child ( temp float) +0:30 direct index ( temp float) +0:30 'myColor' (layout( location=0) out 4-component vector of float) +0:30 Constant: +0:30 3 (const int) +0:30 Constant: +0:30 0.500000 +0:? Linker Objects +0:? 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:? 'myGlobalVar' ( global float) +0:? 'i' ( smooth in 4-component vector of float) +0:? 'myColor' (layout( location=0) out 4-component vector of float) +0:? 'eps' ( const float) +0:? 0.001000 + diff --git a/Test/gl_FragCoord.frag b/Test/gl_FragCoord.frag new file mode 100644 index 0000000000..7bb17920ea --- /dev/null +++ b/Test/gl_FragCoord.frag @@ -0,0 +1,31 @@ +#version 150 core +#extension GL_ARB_explicit_attrib_location : enable + +#ifdef GL_ES +precision mediump float; +#endif + +layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord; +float myGlobalVar = gl_FragCoord.x; +layout (origin_upper_left,pixel_center_integer) in vec4 gl_FragCoord; + +in vec4 i; +layout (location = 0) out vec4 myColor; +const float eps=0.001; + +void main() { + myColor = vec4(0.2); + if (gl_FragCoord.y >= 10) { + myColor.b = 0.8; + } + if (gl_FragCoord.y == trunc(gl_FragCoord.y)) { + myColor.g = 0.8; + } + if (gl_FragCoord.x == trunc(gl_FragCoord.x)) { + myColor.r = 0.8; + } + + vec4 diff = gl_FragCoord - i; + if (abs(diff.z)>eps) myColor.b = 0.5; + if (abs(diff.w)>eps) myColor.a = 0.5; +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 508b16b081..ae89889c47 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4680,7 +4680,7 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS symbolQualifier.storage != qualifier.storage) error(loc, "cannot change qualification of", "redeclaration", symbol->getName().c_str()); } else if (identifier == "gl_FragCoord") { - if (intermediate.inIoAccessed("gl_FragCoord")) + if (!intermediate.getTexCoordRedeclared() && intermediate.inIoAccessed("gl_FragCoord")) error(loc, "cannot redeclare after use", "gl_FragCoord", ""); if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || qualifier.isMemory() || qualifier.isAuxiliary()) @@ -4690,6 +4690,9 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS if (! builtIn && (publicType.pixelCenterInteger != intermediate.getPixelCenterInteger() || publicType.originUpperLeft != intermediate.getOriginUpperLeft())) error(loc, "cannot redeclare with different qualification:", "redeclaration", symbol->getName().c_str()); + + + intermediate.setTexCoordRedeclared(); if (publicType.pixelCenterInteger) intermediate.setPixelCenterInteger(); if (publicType.originUpperLeft) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index c4d80159de..581e9aa2e4 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -309,7 +309,7 @@ class TIntermediate { useVulkanMemoryModel(false), invocations(TQualifier::layoutNotSet), vertices(TQualifier::layoutNotSet), inputPrimitive(ElgNone), outputPrimitive(ElgNone), - pixelCenterInteger(false), originUpperLeft(false), + pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), postDepthCoverage(false), depthLayout(EldNone), hlslFunctionality1(false), @@ -834,6 +834,8 @@ class TIntermediate { bool getOriginUpperLeft() const { return originUpperLeft; } void setPixelCenterInteger() { pixelCenterInteger = true; } bool getPixelCenterInteger() const { return pixelCenterInteger; } + void setTexCoordRedeclared() { texCoordBuiltinRedeclared = true; } + bool getTexCoordRedeclared() const { return texCoordBuiltinRedeclared; } void addBlendEquation(TBlendEquationShift b) { blendEquations |= (1 << b); } unsigned int getBlendEquations() const { return blendEquations; } bool setXfbBufferStride(int buffer, unsigned stride) @@ -1122,6 +1124,7 @@ class TIntermediate { TLayoutGeometry outputPrimitive; bool pixelCenterInteger; bool originUpperLeft; + bool texCoordBuiltinRedeclared; TVertexSpacing vertexSpacing; TVertexOrder vertexOrder; TInterlockOrdering interlockOrdering; @@ -1182,6 +1185,7 @@ class TIntermediate { // for callableData/callableDataIn // set of names of statically read/written I/O that might need extra checking std::set ioAccessed; + // source code of shader, useful as part of debug information std::string sourceFile; std::string sourceText; diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 6270ca0df3..1d975464f1 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -295,6 +295,7 @@ INSTANTIATE_TEST_SUITE_P( "EndStreamPrimitive.geom", "floatBitsToInt.vert", "coord_conventions.frag", + "gl_FragCoord.frag" })), FileNameAsCustomTestSuffix ); From d44871ca085f572b1d6d0a1cb25d7cd4c8f78a5d Mon Sep 17 00:00:00 2001 From: Alexey Panteleev Date: Fri, 11 Mar 2022 17:56:15 -0800 Subject: [PATCH 021/594] Escape the characters that Make considers special in the dependency files. --- StandAlone/StandAlone.cpp | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index bda4ee783a..f5dd3bb148 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1168,6 +1168,27 @@ struct ShaderCompUnit { } }; +// Writes a string into a depfile, escaping some special characters following the Makefile rules. +static void writeEscapedDepString(std::ofstream& file, const std::string& str) +{ + for (char c : str) { + switch (c) { + case ' ': + case ':': + case '#': + case '[': + case ']': + case '\\': + file << '\\'; + break; + case '$': + file << '$'; + break; + } + file << c; + } +} + // Writes a depfile similar to gcc -MMD foo.c bool writeDepFile(std::string depfile, std::vector& binaryFiles, const std::vector& sources) { @@ -1175,10 +1196,12 @@ bool writeDepFile(std::string depfile, std::vector& binaryFiles, co if (file.fail()) return false; - for (auto it = binaryFiles.begin(); it != binaryFiles.end(); it++) { - file << *it << ":"; - for (auto it = sources.begin(); it != sources.end(); it++) { - file << " " << *it; + for (auto binaryFile = binaryFiles.begin(); binaryFile != binaryFiles.end(); binaryFile++) { + writeEscapedDepString(file, *binaryFile); + file << ":"; + for (auto sourceFile = sources.begin(); sourceFile != sources.end(); sourceFile++) { + file << " "; + writeEscapedDepString(file, *sourceFile); } file << std::endl; } From e80f2f8760e489f0f8cb48f17fdab646b19abb92 Mon Sep 17 00:00:00 2001 From: Biswapriyo Nath Date: Tue, 15 Mar 2022 19:26:57 +0530 Subject: [PATCH 022/594] cmake: Install SPVRemapper runtime library This installs SPVRemapper.dll file which was missing previously. --- SPIRV/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 22f767d7dc..775466e06c 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -113,7 +113,8 @@ if(ENABLE_GLSLANG_INSTALL) if (ENABLE_SPVREMAPPER) install(TARGETS SPVRemapper EXPORT SPVRemapperTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) endif() install(TARGETS SPIRV EXPORT SPIRVTargets ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} From 610fd6edf366ae7356e13d05bb98d901fdfe8ca8 Mon Sep 17 00:00:00 2001 From: sfricke-samsung <46493288+sfricke-samsung@users.noreply.github.com> Date: Wed, 23 Mar 2022 12:42:21 -0500 Subject: [PATCH 023/594] Prevent Push Constant blocks being an array (#2904) * Prevent Push Constant blocks being an array * Add push constant array error test Co-authored-by: Greg Fischer --- Test/baseResults/vulkan.frag.out | 53 +++++++++++----------- Test/vulkan.frag | 3 ++ glslang/MachineIndependent/ParseHelper.cpp | 8 +++- 3 files changed, 36 insertions(+), 28 deletions(-) diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out index 28134aedb7..78aea82189 100644 --- a/Test/baseResults/vulkan.frag.out +++ b/Test/baseResults/vulkan.frag.out @@ -25,37 +25,38 @@ ERROR: 0:43: 'non-opaque uniforms outside a block' : not allowed when using GLSL ERROR: 0:43: 'push_constant' : can only be used with a block ERROR: 0:45: 'push_constant' : cannot declare a default, can only be used on a block ERROR: 0:46: 'binding' : cannot be used with push_constant -ERROR: 0:54: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:55: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:55: 'input_attachment_index' : can only be used with a subpass -ERROR: 0:56: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:56: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:49: 'push_constant' : Push constants blocks can't be an array ERROR: 0:57: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:57: 'subpass' : requires an input_attachment_index layout qualifier ERROR: 0:58: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:63: 'subpassLoadMS' : no matching overloaded function found -ERROR: 0:64: 'subpassLoad' : no matching overloaded function found +ERROR: 0:58: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:59: 'binding' : sampler/texture/image requires layout(binding=X) +ERROR: 0:59: 'input_attachment_index' : can only be used with a subpass +ERROR: 0:60: 'binding' : sampler/texture/image requires layout(binding=X) +ERROR: 0:60: 'subpass' : requires an input_attachment_index layout qualifier +ERROR: 0:61: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:66: 'subpassLoadMS' : no matching overloaded function found -ERROR: 0:69: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:69: 'subroutine' : feature not yet implemented -ERROR: 0:70: 'subroutine' : not allowed when generating SPIR-V -ERROR: 0:70: 'subroutine' : feature not yet implemented -ERROR: 0:72: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan -ERROR: 0:76: 'texture' : no matching overloaded function found -ERROR: 0:77: 'imageStore' : no matching overloaded function found -WARNING: 0:85: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: +ERROR: 0:67: 'subpassLoad' : no matching overloaded function found +ERROR: 0:69: 'subpassLoadMS' : no matching overloaded function found +ERROR: 0:72: 'subroutine' : not allowed when generating SPIR-V +ERROR: 0:72: 'subroutine' : feature not yet implemented +ERROR: 0:73: 'subroutine' : not allowed when generating SPIR-V +ERROR: 0:73: 'subroutine' : feature not yet implemented +ERROR: 0:75: 'non-opaque uniforms outside a block' : not allowed when using GLSL for Vulkan +ERROR: 0:79: 'texture' : no matching overloaded function found +ERROR: 0:80: 'imageStore' : no matching overloaded function found +WARNING: 0:88: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: "precision mediump int; precision highp float;" -ERROR: 0:94: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:95: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:96: ',' : sampler constructor must appear at point of use -ERROR: 0:97: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion) ERROR: 0:97: 'call argument' : sampler constructor must appear at point of use -ERROR: 0:99: 'gl_NumSamples' : undeclared identifier -ERROR: 0:104: 'noise1' : no matching overloaded function found -ERROR: 0:105: 'noise2' : no matching overloaded function found -ERROR: 0:106: 'noise3' : no matching overloaded function found -ERROR: 0:107: 'noise4' : no matching overloaded function found -ERROR: 54 compilation errors. No code generated. +ERROR: 0:98: 'call argument' : sampler constructor must appear at point of use +ERROR: 0:99: ',' : sampler constructor must appear at point of use +ERROR: 0:100: ':' : wrong operand types: no operation ':' exists that takes a left-hand operand of type ' temp sampler2D' and a right operand of type ' temp sampler2D' (or there is no acceptable conversion) +ERROR: 0:100: 'call argument' : sampler constructor must appear at point of use +ERROR: 0:102: 'gl_NumSamples' : undeclared identifier +ERROR: 0:107: 'noise1' : no matching overloaded function found +ERROR: 0:108: 'noise2' : no matching overloaded function found +ERROR: 0:109: 'noise3' : no matching overloaded function found +ERROR: 0:110: 'noise4' : no matching overloaded function found +ERROR: 55 compilation errors. No code generated. ERROR: Linking fragment stage: Only one push_constant block is allowed per stage diff --git a/Test/vulkan.frag b/Test/vulkan.frag index 25bfefeccb..6cf7ccfad3 100644 --- a/Test/vulkan.frag +++ b/Test/vulkan.frag @@ -46,6 +46,9 @@ layout(push_constant) uniform; // ERROR, needs an object layout(binding=2, push_constant) uniform pcbnd1 { // ERROR, can't have binding int a; } pcbnd1inst; +layout(push_constant) uniform pcbnd2 { // ERROR, can't be array + float a; +} pcbnd2inst[2]; layout(std430, push_constant) uniform pcb1 { int a; } pcb1inst; layout(push_constant) uniform pcb2 { int a; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index ae89889c47..496a9a134b 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -6368,8 +6368,12 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation); } - if (qualifier.isPushConstant() && type.getBasicType() != EbtBlock) - error(loc, "can only be used with a block", "push_constant", ""); + if (qualifier.isPushConstant()) { + if (type.getBasicType() != EbtBlock) + error(loc, "can only be used with a block", "push_constant", ""); + if (type.isArray()) + error(loc, "Push constants blocks can't be an array", "push_constant", ""); + } if (qualifier.hasBufferReference() && type.getBasicType() != EbtBlock) error(loc, "can only be used with a block", "buffer_reference", ""); From 0988e868f553563b2529ad9c0b3d42bd811feb6c Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 10:23:19 -0600 Subject: [PATCH 024/594] Update spirv-tools and spirv-headers known good To pick up support for spirv-opt --eliminate-dead-input-components --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index c2575d0a28..f87405e2ef 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "45dd184c790d6bfc78a5a74a10c37e888b1823fa" + "commit" : "b3c1790632737f6be2c0e1c2ea5bd844da9f17a9" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "b42ba6d92faf6b4938e6f22ddd186dbdacc98d78" + "commit" : "4995a2f2723c401eb0ea3e10c81298906bf1422b" } ] } From abbdf63cbe966817379345ab5219324b467b011e Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 12:13:59 -0600 Subject: [PATCH 025/594] Add eliminate-dead-input-components to -Os --- SPIRV/SpvTools.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index e8f825119a..8cc17cca93 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -212,6 +212,7 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); + optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); From 871e61fdf0c71af2657d5fafc32a53156cea19f5 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 16:36:48 -0600 Subject: [PATCH 026/594] Update glsl.versionOverride.comp Change original shader to version 110 --- Test/glsl.versionOverride.comp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/glsl.versionOverride.comp b/Test/glsl.versionOverride.comp index 030d6e80b3..f72663e353 100644 --- a/Test/glsl.versionOverride.comp +++ b/Test/glsl.versionOverride.comp @@ -4,8 +4,8 @@ glslangValidator.exe --glsl-version 460 -V -S comp -o glsl.versionOverride.comp. */ -#version 330 +#version 110 void main() { -} \ No newline at end of file +} From c1e8a174424a2973a4f90274f6d2dadaacf426cb Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 16:37:42 -0600 Subject: [PATCH 027/594] Update glsl.versionOverride.frag Change original shader to version 110 --- Test/glsl.versionOverride.frag | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/glsl.versionOverride.frag b/Test/glsl.versionOverride.frag index c5d3201497..126799405b 100644 --- a/Test/glsl.versionOverride.frag +++ b/Test/glsl.versionOverride.frag @@ -4,8 +4,8 @@ glslangValidator.exe --glsl-version 420 -V -S frag -o glsl.versionOverride.frag. */ -#version 330 +#version 110 void main() { -} \ No newline at end of file +} From 46edfaeec4d596db39c66c08adc272875d1288c3 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 16:39:34 -0600 Subject: [PATCH 028/594] Update glsl.versionOverride.geom Change original shader to version 110 --- Test/glsl.versionOverride.geom | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/glsl.versionOverride.geom b/Test/glsl.versionOverride.geom index d6ca4a6e79..bcfc2f22cd 100644 --- a/Test/glsl.versionOverride.geom +++ b/Test/glsl.versionOverride.geom @@ -4,7 +4,7 @@ glslangValidator.exe --glsl-version 430 -V -S geom -o glsl.versionOverride.geom. */ -#version 330 +#version 110 layout (points) in; layout (line_strip, max_vertices = 2) out; @@ -13,4 +13,4 @@ void main() { EmitVertex(); EmitVertex(); EndPrimitive(); -} \ No newline at end of file +} From 03fe69d3cb0a288137f300c6f80d1fff30797ebf Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 16:40:18 -0600 Subject: [PATCH 029/594] Update glsl.versionOverride.tesc Change original shader to version 110 --- Test/glsl.versionOverride.tesc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/glsl.versionOverride.tesc b/Test/glsl.versionOverride.tesc index 4157e62d1a..3b7b1e3c9a 100644 --- a/Test/glsl.versionOverride.tesc +++ b/Test/glsl.versionOverride.tesc @@ -4,10 +4,10 @@ glslangValidator.exe --glsl-version 440 -V -S tesc -o glsl.versionOverride.tesc. */ -#version 330 +#version 110 layout(vertices = 3) out; void main() { -} \ No newline at end of file +} From dc5b5319967aeea7b442f22c6c0b17290d8162b8 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 16:41:15 -0600 Subject: [PATCH 030/594] Update glsl.versionOverride.tese Change shader original version to 110 --- Test/glsl.versionOverride.tese | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/glsl.versionOverride.tese b/Test/glsl.versionOverride.tese index cc7963497c..e92d5a986f 100644 --- a/Test/glsl.versionOverride.tese +++ b/Test/glsl.versionOverride.tese @@ -4,10 +4,10 @@ glslangValidator.exe --glsl-version 450 -V -S tese -o glsl.versionOverride.tese. */ -#version 330 +#version 110 layout(triangles) in; void main() { -} \ No newline at end of file +} From 3c12f20bcb39740223cb25814dd3fb19bb67bc0a Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 24 Mar 2022 16:41:52 -0600 Subject: [PATCH 031/594] Update glsl.versionOverride.vert Change shader original version to 110 --- Test/glsl.versionOverride.vert | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/glsl.versionOverride.vert b/Test/glsl.versionOverride.vert index 6ddbf6291e..2d5effcd89 100644 --- a/Test/glsl.versionOverride.vert +++ b/Test/glsl.versionOverride.vert @@ -4,8 +4,8 @@ glslangValidator.exe --glsl-version 410 -V -S vert -o glsl.versionOverride.vert. */ -#version 330 +#version 110 void main() { -} \ No newline at end of file +} From b7968b7dbc554a93a27c216306c72e5970f5b133 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Fri, 25 Mar 2022 14:36:01 -0600 Subject: [PATCH 032/594] Generate Int8, Int16 and Float16 capabilities for constants Fixes #2905 --- SPIRV/GlslangToSpv.cpp | 10 ++++++++++ Test/baseResults/spv.constConstruct.vert.out | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 39941d3752..6cdf2346ab 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -9078,15 +9078,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const())); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const())); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const())); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); spvConsts.push_back(builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const())); break; case glslang::EbtInt64: @@ -9099,6 +9103,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla spvConsts.push_back(builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst())); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; #endif @@ -9127,15 +9132,19 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla break; #ifndef GLSLANG_WEB case glslang::EbtInt8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant); break; case glslang::EbtUint8: + builder.addCapability(spv::CapabilityInt8); scalar = builder.makeUint8Constant(zero ? 0 : consts[nextConst].getU8Const(), specConstant); break; case glslang::EbtInt16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeInt16Constant(zero ? 0 : consts[nextConst].getI16Const(), specConstant); break; case glslang::EbtUint16: + builder.addCapability(spv::CapabilityInt16); scalar = builder.makeUint16Constant(zero ? 0 : consts[nextConst].getU16Const(), specConstant); break; case glslang::EbtInt64: @@ -9148,6 +9157,7 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla scalar = builder.makeDoubleConstant(zero ? 0.0 : consts[nextConst].getDConst(), specConstant); break; case glslang::EbtFloat16: + builder.addCapability(spv::CapabilityFloat16); scalar = builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst(), specConstant); break; case glslang::EbtReference: diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out index db637a946f..a8d5097590 100644 --- a/Test/baseResults/spv.constConstruct.vert.out +++ b/Test/baseResults/spv.constConstruct.vert.out @@ -1,12 +1,14 @@ spv.constConstruct.vert -Validation failed // Module Version 10000 // Generated by (magic number): 8000a // Id's are bound by 150 Capability Shader + Capability Float16 Capability Float64 Capability Int64 + Capability Int16 + Capability Int8 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 4 "main" From 5a41eb318ff280d07bf3c33546bae10a5dc71013 Mon Sep 17 00:00:00 2001 From: Edoardo Luciani Date: Sat, 26 Mar 2022 15:26:46 +0000 Subject: [PATCH 033/594] Update README.md --- README.md | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1eba3c6066..48118b2943 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,15 @@ The applied stage-specific rules are based on the file extension: * `.frag` for a fragment shader * `.comp` for a compute shader -There is also a non-shader extension +For ray tracing pipeline shaders: +* `.rgen` for a ray generation shader +* `.rint` for a ray intersection shader +* `.rahit` for a ray any-hit shader +* `.rchit` for a ray closest-hit shader +* `.rmiss` for a ray miss shader +* `.rcall` for a callable shader + +There is also a non-shader extension: * `.conf` for a configuration file of limits, see usage statement for example ## Building (CMake) From b88174e6fe603bcc2c5aa88e72521b95c9763a92 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Mon, 28 Mar 2022 11:34:40 -0600 Subject: [PATCH 034/594] Improved comment for glslang_optimization_level_t --- glslang/Include/glslang_c_shader_types.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index f11443f3b3..dc9009f302 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -121,7 +121,9 @@ typedef enum { /* EShExecutable counterpart */ typedef enum { GLSLANG_EX_VERTEX_FRAGMENT, GLSLANG_EX_FRAGMENT } glslang_executable_t; -/* EShOptimizationLevel counterpart */ +// EShOptimizationLevel counterpart +// This enum is not used in the current C interface, but could be added at a later date. +// GLSLANG_OPT_NONE is the current default. typedef enum { GLSLANG_OPT_NO_GENERATION, GLSLANG_OPT_NONE, From e77298891a0e3b6648afc5fc98a2b3d8c5da912a Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 6 Apr 2022 12:00:57 -0600 Subject: [PATCH 035/594] Update spirv-tools known good --- known_good.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known_good.json b/known_good.json index f87405e2ef..2fcb76885a 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "b3c1790632737f6be2c0e1c2ea5bd844da9f17a9" + "commit" : "eed5c76a57bb965f2e1b56d1dc40b50910b5ec1d" }, { "name" : "spirv-tools/external/spirv-headers", From df4ded3f930bb95aac1ffd69acd0f8df0c1e25d6 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 6 Apr 2022 12:21:33 -0600 Subject: [PATCH 036/594] Release 11.9.0 --- CHANGES.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 6d3bd6d98c..fb0b0d11e1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.9.0 2022-04-06 + +### Other changes +* Add GLSL version override functionality +* Add eliminate-dead-input-components to -Os +* Add enhanced-msgs option +* Explicitly use Python 3 for builds + ## 11.8.0 2022-01-27 ### Other changes From de2581ed0ce958177bf3ce875df5755c092ccbe4 Mon Sep 17 00:00:00 2001 From: SpaceIm <30052553+SpaceIm@users.noreply.github.com> Date: Thu, 7 Apr 2022 21:18:27 +0200 Subject: [PATCH 037/594] fix MinGW pre compiled headers leads to "internal error in mingw32_gt_pch_use_address, at config/i386/host-mingw32.c:192: MapViewOfFileEx: Attempt to access invalid address" --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 43533c14d3..a792c46750 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,7 +107,7 @@ option(ENABLE_RTTI "Enables RTTI" OFF) option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) option(ENABLE_OPT "Enables spirv-opt capability if present" ON) -if (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") +if(MINGW OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments # which gcc rejects option(ENABLE_PCH "Enables Precompiled header" OFF) From 24e69505bd0b5689a9c6aa4df93dd15443bbd651 Mon Sep 17 00:00:00 2001 From: Gerry Fan Date: Wed, 13 Apr 2022 17:08:51 +0000 Subject: [PATCH 038/594] Change ANDROID_NDK_ROOT to ANDROID_NDK_HOME in README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 48118b2943..efe986cab2 100644 --- a/README.md +++ b/README.md @@ -169,8 +169,8 @@ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" $SOURCE For building on Android: ```bash -cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_ROOT/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_ROOT/build/cmake/android.toolchain.cmake -# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_ROOT%\prebuilt\windows-x86_64\bin\make.exe +cmake $SOURCE_DIR -G "Unix Makefiles" -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DANDROID_ABI=arm64-v8a -DCMAKE_BUILD_TYPE=Release -DANDROID_STL=c++_static -DANDROID_PLATFORM=android-24 -DCMAKE_SYSTEM_NAME=Android -DANDROID_TOOLCHAIN=clang -DANDROID_ARM_MODE=arm -DCMAKE_MAKE_PROGRAM=$ANDROID_NDK_HOME/prebuilt/linux-x86_64/bin/make -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake +# If on Windows will be -DCMAKE_MAKE_PROGRAM=%ANDROID_NDK_HOME%\prebuilt\windows-x86_64\bin\make.exe # -G is needed for building on Windows # -DANDROID_ABI can also be armeabi-v7a for 32 bit ``` From 17c8387adcc5c8bb4dfd10dbbe301347c6026dfc Mon Sep 17 00:00:00 2001 From: tellowkrinkle Date: Sat, 16 Apr 2022 20:21:41 -0500 Subject: [PATCH 039/594] Add macOS hidden files to gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index ab25cec2de..333fb76272 100644 --- a/.gitignore +++ b/.gitignore @@ -18,3 +18,7 @@ out/ third_party/ buildtools/ tools/ + +# Random OS stuff +.DS_Store +._* From f906b895ecb710a018731aebc7fbd484e707a49b Mon Sep 17 00:00:00 2001 From: Ryp Date: Thu, 21 Apr 2022 22:05:17 +0300 Subject: [PATCH 040/594] Fix WavePrefixCountBits() being off by one. It was counting bits up to the current lane included, whereas the documentation says it should be excluded. This now matches dxc's behavior as well. Fix #2929 --- Test/baseResults/hlsl.waveprefix.comp.out | 6 +++--- glslang/HLSL/hlslParseHelper.cpp | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out index cc4737ed76..e4e942cefd 100644 --- a/Test/baseResults/hlsl.waveprefix.comp.out +++ b/Test/baseResults/hlsl.waveprefix.comp.out @@ -1126,7 +1126,7 @@ local_size = (32, 16, 1) 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) -0:54 subgroupBallotInclusiveBitCount ( temp uint) +0:54 subgroupBallotExclusiveBitCount ( temp uint) 0:54 subgroupBallot ( temp 4-component vector of uint) 0:54 Compare Equal ( temp bool) 0:54 direct index ( temp uint) @@ -2289,7 +2289,7 @@ local_size = (32, 16, 1) 0:54 0 (const int) 0:54 Constant: 0:54 0 (const int) -0:54 subgroupBallotInclusiveBitCount ( temp uint) +0:54 subgroupBallotExclusiveBitCount ( temp uint) 0:54 subgroupBallot ( temp 4-component vector of uint) 0:54 Compare Equal ( temp bool) 0:54 direct index ( temp uint) @@ -2818,7 +2818,7 @@ local_size = (32, 16, 1) 390: 6(int) Load 389 392: 391(bool) IEqual 390 26 393: 13(ivec4) GroupNonUniformBallot 35 392 - 394: 6(int) GroupNonUniformBallotBitCount 35 InclusiveScan 393 + 394: 6(int) GroupNonUniformBallotBitCount 35 ExclusiveScan 393 395: 42(ptr) AccessChain 24(data) 25 386 25 26 Store 395 394 Return diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 2d0a8e926d..e9369a0f8c 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -5430,7 +5430,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& } case EOpWavePrefixCountBits: { - // Mapped to subgroupBallotInclusiveBitCount(subgroupBallot()) + // Mapped to subgroupBallotExclusiveBitCount(subgroupBallot()) // builtin // uvec4 type. @@ -5444,7 +5444,7 @@ void HlslParseContext::decomposeIntrinsic(const TSourceLoc& loc, TIntermTyped*& TType uintType(EbtUint, EvqTemporary); node = intermediate.addBuiltInFunctionCall(loc, - EOpSubgroupBallotInclusiveBitCount, true, res, uintType); + EOpSubgroupBallotExclusiveBitCount, true, res, uintType); break; } From 3015d00ee040c17a4dc39a16a30257a8c2366673 Mon Sep 17 00:00:00 2001 From: Marius Bjorge Date: Thu, 5 May 2022 12:56:04 +0200 Subject: [PATCH 041/594] Adding support for GL_EXT_ray_cull_mask --- SPIRV/GlslangToSpv.cpp | 9 + SPIRV/doc.cpp | 2 + SPIRV/spirv.hpp | 2 + .../spv.ext.AnyHitShader.rahit.out | 72 ++++--- .../spv.ext.ClosestHitShader.rchit.out | 62 +++--- .../spv.ext.IntersectShader.rint.out | 38 ++-- Test/baseResults/spv.ext.MissShader.rmiss.out | 183 ++++++++++-------- Test/spv.ext.AnyHitShader.rahit | 3 + Test/spv.ext.ClosestHitShader.rchit | 3 + Test/spv.ext.IntersectShader.rint | 2 + Test/spv.ext.MissShader.rmiss | 2 + glslang/Include/BaseTypes.h | 1 + glslang/MachineIndependent/Initialize.cpp | 5 + glslang/MachineIndependent/Versions.cpp | 2 + glslang/MachineIndependent/Versions.h | 1 + 15 files changed, 231 insertions(+), 156 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 6cdf2346ab..01f5dbced5 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1007,6 +1007,8 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInRayTminKHR; case glslang::EbvRayTmax: return spv::BuiltInRayTmaxKHR; + case glslang::EbvCullMask: + return spv::BuiltInCullMaskKHR; case glslang::EbvInstanceCustomIndex: return spv::BuiltInInstanceCustomIndexKHR; case glslang::EbvHitT: @@ -1777,6 +1779,13 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addCapability(spv::CapabilityRayTracingNV); builder.addExtension("SPV_NV_ray_tracing"); } + if (glslangIntermediate->getStage() != EShLangRayGen && glslangIntermediate->getStage() != EShLangCallable) + { + if (extensions.find("GL_EXT_ray_cull_mask") != extensions.end()) { + builder.addCapability(spv::CapabilityRayCullMaskKHR); + builder.addExtension("SPV_KHR_ray_cull_mask"); + } + } break; } case EShLangTaskNV: diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 9a569e0d7f..6b85ccd2d5 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -392,6 +392,7 @@ const char* BuiltInString(int builtIn) case BuiltInObjectRayDirectionKHR: return "ObjectRayDirectionKHR"; case BuiltInRayTminKHR: return "RayTminKHR"; case BuiltInRayTmaxKHR: return "RayTmaxKHR"; + case BuiltInCullMaskKHR: return "CullMaskKHR"; case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; @@ -925,6 +926,7 @@ const char* CapabilityString(int info) case CapabilityRayTracingNV: return "RayTracingNV"; case CapabilityRayTracingMotionBlurNV: return "RayTracingMotionBlurNV"; case CapabilityRayTracingKHR: return "RayTracingKHR"; + case CapabilityRayCullMaskKHR: return "RayCullMaskKHR"; case CapabilityRayQueryKHR: return "RayQueryKHR"; case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index a8642006a2..806b4ddce5 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -673,6 +673,7 @@ enum BuiltIn { BuiltInSMCountNV = 5375, BuiltInWarpIDNV = 5376, BuiltInSMIDNV = 5377, + BuiltInCullMaskKHR = 6021, BuiltInMax = 0x7fffffff, }; @@ -1069,6 +1070,7 @@ enum Capability { CapabilityDotProductInput4x8BitPackedKHR = 6018, CapabilityDotProduct = 6019, CapabilityDotProductKHR = 6019, + CapabilityRayCullMaskKHR = 6020, CapabilityBitInstructions = 6025, CapabilityAtomicFloat32AddEXT = 6033, CapabilityAtomicFloat64AddEXT = 6034, diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index df779bdd66..af228e28ec 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -1,15 +1,18 @@ spv.ext.AnyHitShader.rahit // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 107 +// Id's are bound by 110 Capability GroupNonUniform Capability RayTracingKHR + Capability RayCullMaskKHR + Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 98 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 87 101 Source GLSL 460 + SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" @@ -49,8 +52,10 @@ spv.ext.AnyHitShader.rahit Name 76 "gl_ObjectToWorld3x4EXT" Name 79 "v17" Name 80 "gl_WorldToObject3x4EXT" - Name 84 "incomingPayload" - Name 98 "gl_SubgroupSize" + Name 83 "v18" + Name 84 "gl_CullMaskEXT" + Name 87 "incomingPayload" + Name 101 "gl_SubgroupSize" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -69,10 +74,11 @@ spv.ext.AnyHitShader.rahit Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR - Decorate 98(gl_SubgroupSize) RelaxedPrecision - Decorate 98(gl_SubgroupSize) BuiltIn SubgroupSize - Decorate 99 RelaxedPrecision - Decorate 100 RelaxedPrecision + Decorate 84(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 101(gl_SubgroupSize) RelaxedPrecision + Decorate 101(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 102 RelaxedPrecision + Decorate 103 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -114,15 +120,16 @@ spv.ext.AnyHitShader.rahit 74: TypePointer Function 73 76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input 80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input - 83: TypePointer IncomingRayPayloadKHR 72(fvec4) -84(incomingPayload): 83(ptr) Variable IncomingRayPayloadKHR - 85: 28(float) Constant 1056964608 - 86: 72(fvec4) ConstantComposite 85 85 85 85 - 88: 16(int) Constant 1 - 89: TypeBool - 94: 6(int) Constant 0 -98(gl_SubgroupSize): 57(ptr) Variable Input - 101: TypePointer IncomingRayPayloadKHR 28(float) +84(gl_CullMaskEXT): 57(ptr) Variable Input + 86: TypePointer IncomingRayPayloadKHR 72(fvec4) +87(incomingPayload): 86(ptr) Variable IncomingRayPayloadKHR + 88: 28(float) Constant 1056964608 + 89: 72(fvec4) ConstantComposite 88 88 88 88 + 91: 16(int) Constant 1 + 92: TypeBool + 97: 6(int) Constant 0 +101(gl_SubgroupSize): 57(ptr) Variable Input + 104: TypePointer IncomingRayPayloadKHR 28(float) 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -143,6 +150,7 @@ spv.ext.AnyHitShader.rahit 69(v15): 17(ptr) Variable Function 75(v16): 74(ptr) Variable Function 79(v17): 74(ptr) Variable Function + 83(v18): 55(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -181,20 +189,22 @@ spv.ext.AnyHitShader.rahit 81: 60 Load 80(gl_WorldToObject3x4EXT) 82: 73 Transpose 81 Store 79(v17) 82 - Store 84(incomingPayload) 86 - 87: 16(int) Load 18(v2) - 90: 89(bool) IEqual 87 88 - SelectionMerge 92 None - BranchConditional 90 91 92 - 91: Label + 85: 6(int) Load 84(gl_CullMaskEXT) + Store 83(v18) 85 + Store 87(incomingPayload) 89 + 90: 16(int) Load 18(v2) + 93: 92(bool) IEqual 90 91 + SelectionMerge 95 None + BranchConditional 93 94 95 + 94: Label IgnoreIntersectionKHR - 92: Label - 99: 6(int) Load 98(gl_SubgroupSize) - 100: 28(float) ConvertUToF 99 - 102: 101(ptr) AccessChain 84(incomingPayload) 94 - 103: 28(float) Load 102 - 104: 28(float) FAdd 103 100 - 105: 101(ptr) AccessChain 84(incomingPayload) 94 - Store 105 104 + 95: Label + 102: 6(int) Load 101(gl_SubgroupSize) + 103: 28(float) ConvertUToF 102 + 105: 104(ptr) AccessChain 87(incomingPayload) 97 + 106: 28(float) Load 105 + 107: 28(float) FAdd 106 103 + 108: 104(ptr) AccessChain 87(incomingPayload) 97 + Store 108 107 TerminateRayKHR FunctionEnd diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 9a4eb288a9..1c1a9a0cf6 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -1,14 +1,17 @@ spv.ext.ClosestHitShader.rchit // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 101 +// Id's are bound by 104 Capability RayTracingKHR + Capability RayCullMaskKHR + Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 85 98 100 + EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 88 101 103 Source GLSL 460 + SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 9 "v0" @@ -47,9 +50,11 @@ spv.ext.ClosestHitShader.rchit Name 76 "gl_ObjectToWorld3x4EXT" Name 79 "v17" Name 80 "gl_WorldToObject3x4EXT" - Name 85 "accEXT" - Name 98 "incomingPayload" - Name 100 "localPayload" + Name 83 "v18" + Name 84 "gl_CullMaskEXT" + Name 88 "accEXT" + Name 101 "incomingPayload" + Name 103 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -68,8 +73,9 @@ spv.ext.ClosestHitShader.rchit Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR - Decorate 85(accEXT) DescriptorSet 0 - Decorate 85(accEXT) Binding 0 + Decorate 84(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 88(accEXT) DescriptorSet 0 + Decorate 88(accEXT) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -111,23 +117,24 @@ spv.ext.ClosestHitShader.rchit 74: TypePointer Function 73 76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input 80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input - 83: TypeAccelerationStructureKHR - 84: TypePointer UniformConstant 83 - 85(accEXT): 84(ptr) Variable UniformConstant - 87: 6(int) Constant 0 - 88: 6(int) Constant 1 - 89: 6(int) Constant 2 - 90: 6(int) Constant 3 - 91: 28(float) Constant 1056964608 - 92: 29(fvec3) ConstantComposite 91 91 91 - 93: 28(float) Constant 1065353216 - 94: 29(fvec3) ConstantComposite 93 93 93 - 95: 28(float) Constant 1061158912 - 96: 16(int) Constant 1 - 97: TypePointer IncomingRayPayloadKHR 72(fvec4) -98(incomingPayload): 97(ptr) Variable IncomingRayPayloadKHR - 99: TypePointer RayPayloadKHR 72(fvec4) -100(localPayload): 99(ptr) Variable RayPayloadKHR +84(gl_CullMaskEXT): 57(ptr) Variable Input + 86: TypeAccelerationStructureKHR + 87: TypePointer UniformConstant 86 + 88(accEXT): 87(ptr) Variable UniformConstant + 90: 6(int) Constant 0 + 91: 6(int) Constant 1 + 92: 6(int) Constant 2 + 93: 6(int) Constant 3 + 94: 28(float) Constant 1056964608 + 95: 29(fvec3) ConstantComposite 94 94 94 + 96: 28(float) Constant 1065353216 + 97: 29(fvec3) ConstantComposite 96 96 96 + 98: 28(float) Constant 1061158912 + 99: 16(int) Constant 1 + 100: TypePointer IncomingRayPayloadKHR 72(fvec4) +101(incomingPayload): 100(ptr) Variable IncomingRayPayloadKHR + 102: TypePointer RayPayloadKHR 72(fvec4) +103(localPayload): 102(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -148,6 +155,7 @@ spv.ext.ClosestHitShader.rchit 69(v15): 17(ptr) Variable Function 75(v16): 74(ptr) Variable Function 79(v17): 74(ptr) Variable Function + 83(v18): 55(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -186,7 +194,9 @@ spv.ext.ClosestHitShader.rchit 81: 60 Load 80(gl_WorldToObject3x4EXT) 82: 73 Transpose 81 Store 79(v17) 82 - 86: 83 Load 85(accEXT) - TraceRayKHR 86 87 88 89 90 87 92 91 94 95 98(incomingPayload) + 85: 6(int) Load 84(gl_CullMaskEXT) + Store 83(v18) 85 + 89: 86 Load 88(accEXT) + TraceRayKHR 89 90 91 92 93 90 95 94 97 98 101(incomingPayload) Return FunctionEnd diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out index 2d389a0c50..54b6d349e7 100644 --- a/Test/baseResults/spv.ext.IntersectShader.rint.out +++ b/Test/baseResults/spv.ext.IntersectShader.rint.out @@ -1,14 +1,17 @@ spv.ext.IntersectShader.rint // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 81 +// Id's are bound by 86 Capability RayTracingKHR + Capability RayCullMaskKHR + Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 65 69 73 + EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 65 69 75 78 Source GLSL 460 + SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" Name 9 "v0" @@ -41,7 +44,9 @@ spv.ext.IntersectShader.rint Name 65 "gl_ObjectToWorld3x4EXT" Name 68 "v14" Name 69 "gl_WorldToObject3x4EXT" - Name 73 "iAttr" + Name 73 "v15" + Name 75 "gl_CullMaskEXT" + Name 78 "iAttr" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -59,6 +64,7 @@ spv.ext.IntersectShader.rint Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR Decorate 69(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR + Decorate 75(gl_CullMaskEXT) BuiltIn CullMaskKHR 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -95,14 +101,17 @@ spv.ext.IntersectShader.rint 63: TypePointer Function 62 65(gl_ObjectToWorld3x4EXT): 55(ptr) Variable Input 69(gl_WorldToObject3x4EXT): 55(ptr) Variable Input - 72: TypePointer HitAttributeKHR 61(fvec4) - 73(iAttr): 72(ptr) Variable HitAttributeKHR - 74: 28(float) Constant 1056964608 - 75: 28(float) Constant 0 - 76: 28(float) Constant 1065353216 - 77: 61(fvec4) ConstantComposite 74 74 75 76 - 78: 6(int) Constant 1 - 79: TypeBool + 72: TypePointer Function 6(int) + 74: TypePointer Input 6(int) +75(gl_CullMaskEXT): 74(ptr) Variable Input + 77: TypePointer HitAttributeKHR 61(fvec4) + 78(iAttr): 77(ptr) Variable HitAttributeKHR + 79: 28(float) Constant 1056964608 + 80: 28(float) Constant 0 + 81: 28(float) Constant 1065353216 + 82: 61(fvec4) ConstantComposite 79 79 80 81 + 83: 6(int) Constant 1 + 84: TypeBool 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -120,6 +129,7 @@ spv.ext.IntersectShader.rint 58(v12): 53(ptr) Variable Function 64(v13): 63(ptr) Variable Function 68(v14): 63(ptr) Variable Function + 73(v15): 72(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -152,7 +162,9 @@ spv.ext.IntersectShader.rint 70: 52 Load 69(gl_WorldToObject3x4EXT) 71: 62 Transpose 70 Store 68(v14) 71 - Store 73(iAttr) 77 - 80: 79(bool) ReportIntersectionKHR 74 78 + 76: 6(int) Load 75(gl_CullMaskEXT) + Store 73(v15) 76 + Store 78(iAttr) 82 + 85: 84(bool) ReportIntersectionKHR 79 83 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out index 1acd5ae660..e4a5b88bcb 100644 --- a/Test/baseResults/spv.ext.MissShader.rmiss.out +++ b/Test/baseResults/spv.ext.MissShader.rmiss.out @@ -1,7 +1,7 @@ spv.ext.MissShader.rmiss // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 90 +// Id's are bound by 94 Capability MinLod Capability GroupNonUniform @@ -9,15 +9,18 @@ spv.ext.MissShader.rmiss Capability SubgroupBallotKHR Capability RayTracingKHR Capability ShaderSMBuiltinsNV + Capability RayCullMaskKHR + Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" Extension "SPV_KHR_shader_ballot" Extension "SPV_NV_shader_sm_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 36 51 53 58 63 74 78 85 89 + EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 37 41 56 57 62 67 78 82 89 93 Source GLSL 460 SourceExtension "GL_ARB_shader_ballot" SourceExtension "GL_ARB_sparse_texture_clamp" + SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" SourceExtension "GL_KHR_shader_subgroup_ballot" SourceExtension "GL_KHR_shader_subgroup_basic" @@ -35,37 +38,40 @@ spv.ext.MissShader.rmiss Name 29 "gl_RayTminEXT" Name 31 "v5" Name 32 "gl_RayTmaxEXT" - Name 36 "accEXT" - Name 51 "incomingPayload" - Name 53 "gl_SubGroupSizeARB" - Name 58 "gl_SubgroupEqMask" - Name 63 "gl_WarpIDNV" - Name 70 "texel" - Name 74 "s2D" - Name 78 "c2" - Name 85 "lodClamp" - Name 89 "localPayload" + Name 35 "v6" + Name 37 "gl_CullMaskEXT" + Name 41 "accEXT" + Name 56 "incomingPayload" + Name 57 "gl_SubGroupSizeARB" + Name 62 "gl_SubgroupEqMask" + Name 67 "gl_WarpIDNV" + Name 74 "texel" + Name 78 "s2D" + Name 82 "c2" + Name 89 "lodClamp" + Name 93 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR Decorate 24(gl_WorldRayDirectionEXT) BuiltIn WorldRayDirectionKHR Decorate 29(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR - Decorate 36(accEXT) DescriptorSet 0 - Decorate 36(accEXT) Binding 0 - Decorate 53(gl_SubGroupSizeARB) BuiltIn SubgroupSize - Decorate 53(gl_SubGroupSizeARB) Volatile - Decorate 53(gl_SubGroupSizeARB) Coherent - Decorate 58(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR - Decorate 58(gl_SubgroupEqMask) Volatile - Decorate 58(gl_SubgroupEqMask) Coherent - Decorate 63(gl_WarpIDNV) BuiltIn WarpIDNV - Decorate 63(gl_WarpIDNV) Volatile - Decorate 63(gl_WarpIDNV) Coherent - Decorate 74(s2D) DescriptorSet 0 - Decorate 74(s2D) Binding 1 - Decorate 78(c2) Location 2 - Decorate 85(lodClamp) Location 3 + Decorate 37(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 41(accEXT) DescriptorSet 0 + Decorate 41(accEXT) Binding 0 + Decorate 57(gl_SubGroupSizeARB) BuiltIn SubgroupSize + Decorate 57(gl_SubGroupSizeARB) Volatile + Decorate 57(gl_SubGroupSizeARB) Coherent + Decorate 62(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 62(gl_SubgroupEqMask) Volatile + Decorate 62(gl_SubgroupEqMask) Coherent + Decorate 67(gl_WarpIDNV) BuiltIn WarpIDNV + Decorate 67(gl_WarpIDNV) Volatile + Decorate 67(gl_WarpIDNV) Coherent + Decorate 78(s2D) DescriptorSet 0 + Decorate 78(s2D) Binding 1 + Decorate 82(c2) Location 2 + Decorate 89(lodClamp) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -84,44 +90,46 @@ spv.ext.MissShader.rmiss 28: TypePointer Input 16(float) 29(gl_RayTminEXT): 28(ptr) Variable Input 32(gl_RayTmaxEXT): 28(ptr) Variable Input - 34: TypeAccelerationStructureKHR - 35: TypePointer UniformConstant 34 - 36(accEXT): 35(ptr) Variable UniformConstant - 38: 6(int) Constant 0 - 39: 6(int) Constant 1 - 40: 6(int) Constant 2 - 41: 6(int) Constant 3 - 42: 16(float) Constant 1056964608 - 43: 17(fvec3) ConstantComposite 42 42 42 - 44: 16(float) Constant 1065353216 - 45: 17(fvec3) ConstantComposite 44 44 44 - 46: 16(float) Constant 1061158912 - 47: TypeInt 32 1 - 48: 47(int) Constant 1 - 49: TypeVector 16(float) 4 - 50: TypePointer IncomingRayPayloadKHR 49(fvec4) -51(incomingPayload): 50(ptr) Variable IncomingRayPayloadKHR - 52: TypePointer Input 6(int) -53(gl_SubGroupSizeARB): 52(ptr) Variable Input - 56: TypeVector 6(int) 4 - 57: TypePointer Input 56(ivec4) -58(gl_SubgroupEqMask): 57(ptr) Variable Input - 63(gl_WarpIDNV): 52(ptr) Variable Input - 67: TypePointer IncomingRayPayloadKHR 16(float) - 69: TypePointer Function 49(fvec4) - 71: TypeImage 16(float) 2D sampled format:Unknown - 72: TypeSampledImage 71 - 73: TypePointer UniformConstant 72 - 74(s2D): 73(ptr) Variable UniformConstant - 76: TypeVector 16(float) 2 - 77: TypePointer Input 76(fvec2) - 78(c2): 77(ptr) Variable Input - 82: TypeVector 47(int) 2 - 83: 47(int) Constant 5 - 84: 82(ivec2) ConstantComposite 83 83 - 85(lodClamp): 28(ptr) Variable Input - 88: TypePointer RayPayloadKHR 49(fvec4) -89(localPayload): 88(ptr) Variable RayPayloadKHR + 34: TypePointer Function 6(int) + 36: TypePointer Input 6(int) +37(gl_CullMaskEXT): 36(ptr) Variable Input + 39: TypeAccelerationStructureKHR + 40: TypePointer UniformConstant 39 + 41(accEXT): 40(ptr) Variable UniformConstant + 43: 6(int) Constant 0 + 44: 6(int) Constant 1 + 45: 6(int) Constant 2 + 46: 6(int) Constant 3 + 47: 16(float) Constant 1056964608 + 48: 17(fvec3) ConstantComposite 47 47 47 + 49: 16(float) Constant 1065353216 + 50: 17(fvec3) ConstantComposite 49 49 49 + 51: 16(float) Constant 1061158912 + 52: TypeInt 32 1 + 53: 52(int) Constant 1 + 54: TypeVector 16(float) 4 + 55: TypePointer IncomingRayPayloadKHR 54(fvec4) +56(incomingPayload): 55(ptr) Variable IncomingRayPayloadKHR +57(gl_SubGroupSizeARB): 36(ptr) Variable Input + 60: TypeVector 6(int) 4 + 61: TypePointer Input 60(ivec4) +62(gl_SubgroupEqMask): 61(ptr) Variable Input + 67(gl_WarpIDNV): 36(ptr) Variable Input + 71: TypePointer IncomingRayPayloadKHR 16(float) + 73: TypePointer Function 54(fvec4) + 75: TypeImage 16(float) 2D sampled format:Unknown + 76: TypeSampledImage 75 + 77: TypePointer UniformConstant 76 + 78(s2D): 77(ptr) Variable UniformConstant + 80: TypeVector 16(float) 2 + 81: TypePointer Input 80(fvec2) + 82(c2): 81(ptr) Variable Input + 86: TypeVector 52(int) 2 + 87: 52(int) Constant 5 + 88: 86(ivec2) ConstantComposite 87 87 + 89(lodClamp): 28(ptr) Variable Input + 92: TypePointer RayPayloadKHR 54(fvec4) +93(localPayload): 92(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -130,7 +138,8 @@ spv.ext.MissShader.rmiss 23(v3): 18(ptr) Variable Function 27(v4): 26(ptr) Variable Function 31(v5): 26(ptr) Variable Function - 70(texel): 69(ptr) Variable Function + 35(v6): 34(ptr) Variable Function + 74(texel): 73(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -143,25 +152,27 @@ spv.ext.MissShader.rmiss Store 27(v4) 30 33: 16(float) Load 32(gl_RayTmaxEXT) Store 31(v5) 33 - 37: 34 Load 36(accEXT) - TraceRayKHR 37 38 39 40 41 38 43 42 45 46 51(incomingPayload) - 54: 6(int) Load 53(gl_SubGroupSizeARB) - 55: 16(float) ConvertUToF 54 - 59: 56(ivec4) Load 58(gl_SubgroupEqMask) - 60: 49(fvec4) ConvertUToF 59 - 61: 16(float) CompositeExtract 60 0 - 62: 16(float) FAdd 55 61 - 64: 6(int) Load 63(gl_WarpIDNV) - 65: 16(float) ConvertUToF 64 - 66: 16(float) FAdd 62 65 - 68: 67(ptr) AccessChain 51(incomingPayload) 38 - Store 68 66 - 75: 72 Load 74(s2D) - 79: 76(fvec2) Load 78(c2) - 80: 76(fvec2) Load 78(c2) - 81: 76(fvec2) Load 78(c2) - 86: 16(float) Load 85(lodClamp) - 87: 49(fvec4) ImageSampleExplicitLod 75 79 Grad ConstOffset MinLod 80 81 84 86 - Store 70(texel) 87 + 38: 6(int) Load 37(gl_CullMaskEXT) + Store 35(v6) 38 + 42: 39 Load 41(accEXT) + TraceRayKHR 42 43 44 45 46 43 48 47 50 51 56(incomingPayload) + 58: 6(int) Load 57(gl_SubGroupSizeARB) + 59: 16(float) ConvertUToF 58 + 63: 60(ivec4) Load 62(gl_SubgroupEqMask) + 64: 54(fvec4) ConvertUToF 63 + 65: 16(float) CompositeExtract 64 0 + 66: 16(float) FAdd 59 65 + 68: 6(int) Load 67(gl_WarpIDNV) + 69: 16(float) ConvertUToF 68 + 70: 16(float) FAdd 66 69 + 72: 71(ptr) AccessChain 56(incomingPayload) 43 + Store 72 70 + 79: 76 Load 78(s2D) + 83: 80(fvec2) Load 82(c2) + 84: 80(fvec2) Load 82(c2) + 85: 80(fvec2) Load 82(c2) + 90: 16(float) Load 89(lodClamp) + 91: 54(fvec4) ImageSampleExplicitLod 79 83 Grad ConstOffset MinLod 84 85 88 90 + Store 74(texel) 91 Return FunctionEnd diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit index 871f8fea80..44c32d9174 100644 --- a/Test/spv.ext.AnyHitShader.rahit +++ b/Test/spv.ext.AnyHitShader.rahit @@ -1,6 +1,8 @@ #version 460 #extension GL_EXT_ray_tracing : enable #extension GL_KHR_shader_subgroup_basic : enable +#extension GL_EXT_ray_cull_mask : enable + layout(location = 1) rayPayloadInEXT vec4 incomingPayload; void main() { @@ -22,6 +24,7 @@ void main() int v15 = gl_GeometryIndexEXT; mat3x4 v16 = gl_ObjectToWorld3x4EXT; mat3x4 v17 = gl_WorldToObject3x4EXT; + uint v18 = gl_CullMaskEXT; incomingPayload = vec4(0.5f); if (v2 == 1) { ignoreIntersectionEXT; diff --git a/Test/spv.ext.ClosestHitShader.rchit b/Test/spv.ext.ClosestHitShader.rchit index 3f9bbaa0b3..8b5f848fa1 100644 --- a/Test/spv.ext.ClosestHitShader.rchit +++ b/Test/spv.ext.ClosestHitShader.rchit @@ -1,5 +1,7 @@ #version 460 #extension GL_EXT_ray_tracing : enable +#extension GL_EXT_ray_cull_mask : enable + layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadEXT vec4 localPayload; layout(location = 1) rayPayloadInEXT vec4 incomingPayload; @@ -23,5 +25,6 @@ void main() int v15 = gl_GeometryIndexEXT; mat3x4 v16 = gl_ObjectToWorld3x4EXT; mat3x4 v17 = gl_WorldToObject3x4EXT; + uint v18 = gl_CullMaskEXT; traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); } diff --git a/Test/spv.ext.IntersectShader.rint b/Test/spv.ext.IntersectShader.rint index 4933ff5eff..2138ea1a0c 100644 --- a/Test/spv.ext.IntersectShader.rint +++ b/Test/spv.ext.IntersectShader.rint @@ -1,5 +1,6 @@ #version 460 #extension GL_EXT_ray_tracing : enable +#extension GL_EXT_ray_cull_mask : enable hitAttributeEXT vec4 iAttr; void main() { @@ -18,6 +19,7 @@ void main() mat4x3 v12 = gl_WorldToObjectEXT; mat3x4 v13 = gl_ObjectToWorld3x4EXT; mat3x4 v14 = gl_WorldToObject3x4EXT; + uint v15 = gl_CullMaskEXT; iAttr = vec4(0.5f,0.5f,0.0f,1.0f); reportIntersectionEXT(0.5, 1U); } diff --git a/Test/spv.ext.MissShader.rmiss b/Test/spv.ext.MissShader.rmiss index 05311c9eef..6ab1d1abd5 100644 --- a/Test/spv.ext.MissShader.rmiss +++ b/Test/spv.ext.MissShader.rmiss @@ -5,6 +5,7 @@ #extension GL_ARB_shader_ballot : enable #extension GL_NV_shader_sm_builtins : enable #extension GL_ARB_sparse_texture_clamp: enable +#extension GL_EXT_ray_cull_mask : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadEXT vec4 localPayload; @@ -22,6 +23,7 @@ void main() vec3 v3 = gl_WorldRayDirectionEXT; float v4 = gl_RayTminEXT; float v5 = gl_RayTmaxEXT; + uint v6 = gl_CullMaskEXT; traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); incomingPayload.x = float(gl_SubGroupSizeARB) + float(gl_SubgroupEqMask) + float(gl_WarpIDNV); vec4 texel = textureGradOffsetClampARB(s2D, c2, c2, c2, ivec2(5), lodClamp); diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index c8203c2232..09177fbca2 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -263,6 +263,7 @@ enum TBuiltInVariable { EbvObjectRayDirection, EbvRayTmin, EbvRayTmax, + EbvCullMask, EbvHitT, EbvHitKind, EbvObjectToWorld, diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 03fdce9f6b..0406da67b0 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5857,6 +5857,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint gl_IncomingRayFlagsNV;" "in uint gl_IncomingRayFlagsEXT;" "in float gl_CurrentRayTimeNV;" + "in uint gl_CullMaskEXT;" "\n"; const char *hitDecls = "in uvec3 gl_LaunchIDNV;" @@ -5893,6 +5894,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint gl_IncomingRayFlagsNV;" "in uint gl_IncomingRayFlagsEXT;" "in float gl_CurrentRayTimeNV;" + "in uint gl_CullMaskEXT;" "\n"; const char *missDecls = "in uvec3 gl_LaunchIDNV;" @@ -5912,6 +5914,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint gl_IncomingRayFlagsNV;" "in uint gl_IncomingRayFlagsEXT;" "in float gl_CurrentRayTimeNV;" + "in uint gl_CullMaskEXT;" "\n"; const char *callableDecls = @@ -8743,6 +8746,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_RayTminEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_RayTmaxNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_RayTmaxEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setVariableExtensions("gl_CullMaskEXT", 1, &E_GL_EXT_ray_cull_mask); symbolTable.setVariableExtensions("gl_HitTNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_HitTEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_HitKindNV", 1, &E_GL_NV_ray_tracing); @@ -8792,6 +8796,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_RayTminEXT", EbvRayTmin, symbolTable); BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable); BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable); + BuiltInVariable("gl_CullMaskEXT", EbvCullMask, symbolTable); BuiltInVariable("gl_HitTNV", EbvHitT, symbolTable); BuiltInVariable("gl_HitTEXT", EbvHitT, symbolTable); BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable); diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 8d96e0e104..f6bf7c3a94 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -334,6 +334,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_ray_tracing] = EBhDisable; extensionBehavior[E_GL_EXT_ray_query] = EBhDisable; extensionBehavior[E_GL_EXT_ray_flags_primitive_culling] = EBhDisable; + extensionBehavior[E_GL_EXT_ray_cull_mask] = EBhDisable; extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable; extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable; @@ -505,6 +506,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_ray_tracing 1\n" "#define GL_EXT_ray_query 1\n" "#define GL_EXT_ray_flags_primitive_culling 1\n" + "#define GL_EXT_ray_cull_mask 1\n" "#define GL_EXT_spirv_intrinsics 1\n" "#define GL_AMD_shader_ballot 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 96a6e1fc52..3f7299d3cf 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -201,6 +201,7 @@ const char* const E_GL_EXT_debug_printf = "GL_EXT_debug_prin const char* const E_GL_EXT_ray_tracing = "GL_EXT_ray_tracing"; const char* const E_GL_EXT_ray_query = "GL_EXT_ray_query"; const char* const E_GL_EXT_ray_flags_primitive_culling = "GL_EXT_ray_flags_primitive_culling"; +const char* const E_GL_EXT_ray_cull_mask = "GL_EXT_ray_cull_mask"; const char* const E_GL_EXT_blend_func_extended = "GL_EXT_blend_func_extended"; const char* const E_GL_EXT_shader_implicit_conversions = "GL_EXT_shader_implicit_conversions"; const char* const E_GL_EXT_fragment_shading_rate = "GL_EXT_fragment_shading_rate"; From dab6fc8960d33788a183c3d8774071a269d1711f Mon Sep 17 00:00:00 2001 From: Marius Bjorge Date: Thu, 5 May 2022 14:03:57 +0200 Subject: [PATCH 042/594] Update spirv-tools and spirv-headers known good --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 2fcb76885a..3dd6124f91 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "eed5c76a57bb965f2e1b56d1dc40b50910b5ec1d" + "commit" : "58dc37ea6af7ec09f32f7b13ff60071e3ba2bd24" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "4995a2f2723c401eb0ea3e10c81298906bf1422b" + "commit" : "b765c355f488837ca4c77980ba69484f3ff277f5" } ] } From 521216aaaacede5a04b7f39e1e5f1d3b2b16bd78 Mon Sep 17 00:00:00 2001 From: alelenv <40001162+alelenv@users.noreply.github.com> Date: Thu, 5 May 2022 21:46:58 -0700 Subject: [PATCH 043/594] Disable layout error check for RT ops in presence of EXT_spirv_intrinsics Fixes #2935 --- glslang/MachineIndependent/ParseHelper.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 496a9a134b..613a66f400 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2327,7 +2327,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan error(loc, "argument must be compile-time constant", "payload number", "a"); else { unsigned int location = (*argp)[10]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (intermediate.checkLocationRT(0, location) < 0) + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); } break; @@ -2340,7 +2340,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan error(loc, "argument must be compile-time constant", "callable data number", ""); else { unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); - if (intermediate.checkLocationRT(1, location) < 0) + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(1, location) < 0) error(loc, "with layout(location =", "no callableDataEXT/callableDataInEXT declared", "%d)", location); } break; From b5aae6273174e776b9a15616749ebcdd49d12ab4 Mon Sep 17 00:00:00 2001 From: ahagan Date: Tue, 26 Apr 2022 23:36:57 -0400 Subject: [PATCH 044/594] Add whitelist filtering for debug comments in SPIRV-Remap. --- SPIRV/SPVRemapper.cpp | 27 +++++++++++++++++----- SPIRV/SPVRemapper.h | 7 +++++- StandAlone/spirv-remap.cpp | 46 +++++++++++++++++++++++++++++++++----- gtests/TestFixture.h | 7 +++--- 4 files changed, 72 insertions(+), 15 deletions(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index fdfbeb90cd..61937f5ba4 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -160,15 +160,30 @@ namespace spv { } // Is this an opcode we should remove when using --strip? - bool spirvbin_t::isStripOp(spv::Op opCode) const + bool spirvbin_t::isStripOp(spv::Op opCode, unsigned start) const { switch (opCode) { case spv::OpSource: case spv::OpSourceExtension: case spv::OpName: case spv::OpMemberName: - case spv::OpLine: return true; - default: return false; + case spv::OpLine : + { + const spv::Id target = asId(start + 1); + const std::string name = literalString(start + 2); + + std::vector::const_iterator it; + for (it = stripWhiteList.begin(); it < stripWhiteList.end(); it++) + { + if (name.find(*it) != std::string::npos) { + return false; + } + } + + return true; + } + default : + return false; } } @@ -372,7 +387,7 @@ namespace spv { process( [&](spv::Op opCode, unsigned start) { // remember opcodes we want to strip later - if (isStripOp(opCode)) + if (isStripOp(opCode, start)) stripInst(start); return true; }, @@ -1494,8 +1509,10 @@ namespace spv { } // remap from a memory image - void spirvbin_t::remap(std::vector& in_spv, std::uint32_t opts) + void spirvbin_t::remap(std::vector& in_spv, const std::vector& whiteListStrings, + std::uint32_t opts) { + stripWhiteList = whiteListStrings; spv.swap(in_spv); remap(opts); spv.swap(in_spv); diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index d6b9c346dd..2dfacd733b 100644 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -118,7 +118,8 @@ class spirvbin_t : public spirvbin_base_t virtual ~spirvbin_t() { } // remap on an existing binary in memory - void remap(std::vector& spv, std::uint32_t opts = DO_EVERYTHING); + void remap(std::vector& spv, const std::vector& whiteListStrings, + std::uint32_t opts = DO_EVERYTHING); // Type for error/log handler functions typedef std::function errorfn_t; @@ -180,6 +181,8 @@ class spirvbin_t : public spirvbin_base_t unsigned typeSizeInWords(spv::Id id) const; unsigned idTypeSizeInWords(spv::Id id) const; + bool isStripOp(spv::Op opCode, unsigned start) const; + spv::Id& asId(unsigned word) { return spv[word]; } const spv::Id& asId(unsigned word) const { return spv[word]; } spv::Op asOpCode(unsigned word) const { return opOpCode(spv[word]); } @@ -249,6 +252,8 @@ class spirvbin_t : public spirvbin_base_t std::vector spv; // SPIR words + std::vector stripWhiteList; + namemap_t nameMap; // ID names from OpName // Since we want to also do binary ops, we can't use std::vector. we could use diff --git a/StandAlone/spirv-remap.cpp b/StandAlone/spirv-remap.cpp index 48878c3af0..15c3ac513b 100644 --- a/StandAlone/spirv-remap.cpp +++ b/StandAlone/spirv-remap.cpp @@ -105,6 +105,32 @@ namespace { } } + // Read strings from a file + void read(std::vector& strings, const std::string& inFilename, int verbosity) + { + std::ifstream fp; + + if (verbosity > 0) + logHandler(std::string(" reading: ") + inFilename); + + strings.clear(); + fp.open(inFilename, std::fstream::in); + + if (fp.fail()) + errHandler("error opening file for read: "); + + std::string line; + while (std::getline(fp, line)) + { + // Ignore empty lines and lines starting with the comment marker '#'. + if (line.length() == 0 || line[0] == '#') { + continue; + } + + strings.push_back(line); + } + } + void write(std::vector& spv, const std::string& outFile, int verbosity) { if (outFile.empty()) @@ -144,6 +170,7 @@ namespace { << " [--dce (all|types|funcs)]" << " [--opt (all|loadstore)]" << " [--strip-all | --strip all | -s]" + << " [--strip-white-list]" << " [--do-everything]" << " --input | -i file1 [file2...] --output|-o DESTDIR" << std::endl; @@ -156,16 +183,18 @@ namespace { // grind through each SPIR in turn void execute(const std::vector& inputFile, const std::string& outputDir, - int opts, int verbosity) + const std::string& whiteListFile, int opts, int verbosity) { + std::vector whiteListStrings; + if(!whiteListFile.empty()) + read(whiteListStrings, whiteListFile, verbosity); + for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) { const std::string &filename = *it; std::vector spv; read(spv, filename, verbosity); - spv::spirvbin_t(verbosity).remap(spv, opts); - + spv::spirvbin_t(verbosity).remap(spv, whiteListStrings, opts); const std::string outfile = outputDir + path_sep_char() + basename(filename); - write(spv, outfile, verbosity); } @@ -176,6 +205,7 @@ namespace { // Parse command line options void parseCmdLine(int argc, char** argv, std::vector& inputFile, std::string& outputDir, + std::string& stripWhiteListFile, int& options, int& verbosity) { @@ -245,6 +275,9 @@ namespace { options = options | spv::spirvbin_t::STRIP; ++a; } + } else if (arg == "--strip-white-list") { + ++a; + stripWhiteListFile = argv[a++]; } else if (arg == "--dce") { // Parse comma (or colon, etc) separated list of things to dce ++a; @@ -315,6 +348,7 @@ int main(int argc, char** argv) { std::vector inputFile; std::string outputDir; + std::string whiteListFile; int opts; int verbosity; @@ -329,13 +363,13 @@ int main(int argc, char** argv) if (argc < 2) usage(argv[0]); - parseCmdLine(argc, argv, inputFile, outputDir, opts, verbosity); + parseCmdLine(argc, argv, inputFile, outputDir, whiteListFile, opts, verbosity); if (outputDir.empty()) usage(argv[0], "Output directory required"); // Main operations: read, remap, and write. - execute(inputFile, outputDir, opts, verbosity); + execute(inputFile, outputDir, whiteListFile, opts, verbosity); // If we get here, everything went OK! Nothing more to be done. } diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 2b057dcb0e..5b66dece71 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -367,11 +367,12 @@ class GlslangTest : public GT { if (success && (controls & EShMsgSpvRules)) { spv::SpvBuildLogger logger; + std::vector whiteListStrings; std::vector spirv_binary; glslang::GlslangToSpv(*program.getIntermediate(stage), spirv_binary, &logger, &options()); - spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions); + spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, whiteListStrings, remapOptions); std::ostringstream disassembly_stream; spv::Parameterize(); @@ -394,9 +395,9 @@ class GlslangTest : public GT { { if ((controls & EShMsgSpvRules)) { std::vector spirv_binary(code); // scratch copy + std::vector whiteListStrings; + spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, whiteListStrings, remapOptions); - spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, remapOptions); - std::ostringstream disassembly_stream; spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); From 67384dd18b1715a61851017763d3b3f49f07edd2 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Mon, 16 May 2022 23:03:37 -0400 Subject: [PATCH 045/594] fix structure indexing reassignment during block merging For EOpIndexDirectStruct binaries, we want to visit the left symbol (the structure) before we visit the binary, so it gets updated first. That way we are comparing the updated structure against the target 'unitType', not the original structure. --- glslang/MachineIndependent/linkValidate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 9b45570e20..7fed096b8d 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -642,7 +642,7 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl } TMergeBlockTraverser(const TIntermSymbol* newSym, const glslang::TType* unitType, glslang::TIntermediate* unit, const std::map* memberIdxUpdates) - : newSymbol(newSym), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) + : TIntermTraverser(false, true), newSymbol(newSym), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) { } virtual ~TMergeBlockTraverser() {} From ea7e64cf509ea5423165832893d4cceff09e674d Mon Sep 17 00:00:00 2001 From: David Neto Date: Thu, 19 May 2022 13:27:12 -0400 Subject: [PATCH 046/594] Remove unused variable --- SPIRV/SPVRemapper.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 61937f5ba4..28168822c6 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -169,7 +169,6 @@ namespace spv { case spv::OpMemberName: case spv::OpLine : { - const spv::Id target = asId(start + 1); const std::string name = literalString(start + 2); std::vector::const_iterator it; From df01afe7b8bc577ba5243c111bbc22c7816771e2 Mon Sep 17 00:00:00 2001 From: Sergey Kosarevsky Date: Fri, 20 May 2022 23:00:29 -0700 Subject: [PATCH 047/594] Android.mk: Add CInterface files --- Android.mk | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Android.mk b/Android.mk index c9b221f1a9..40cddb7584 100644 --- a/Android.mk +++ b/Android.mk @@ -96,6 +96,7 @@ LOCAL_MODULE:=glslang LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) LOCAL_SRC_FILES:= \ + glslang/CInterface/glslang_c_interface.cpp \ glslang/GenericCodeGen/CodeGen.cpp \ glslang/GenericCodeGen/Link.cpp \ glslang/HLSL/hlslAttributes.cpp \ @@ -149,6 +150,7 @@ $(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \ LOCAL_MODULE:=SPIRV LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) LOCAL_SRC_FILES:= \ + SPIRV/CInterface/spirv_c_interface.cpp \ SPIRV/GlslangToSpv.cpp \ SPIRV/InReadableOrder.cpp \ SPIRV/Logger.cpp \ From e3148915982e41989da1c227c7d19b3d9e959b19 Mon Sep 17 00:00:00 2001 From: Gabriele Di Bari Date: Sat, 21 May 2022 17:00:24 +0200 Subject: [PATCH 048/594] handleEntryPointAttributes add EatInstance case --- glslang/HLSL/hlslParseHelper.cpp | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index e9369a0f8c..ffa1d7a650 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -1754,6 +1754,18 @@ void HlslParseContext::handleEntryPointAttributes(const TSourceLoc& loc, const T intermediate.setLocalSize(lid, sequence[lid]->getAsConstantUnion()->getConstArray()[0].getIConst()); break; } + case EatInstance: + { + int invocations; + + if (!it->getInt(invocations)) { + error(loc, "invalid instance", "", ""); + } else { + if (!intermediate.setInvocations(invocations)) + error(loc, "cannot change previously set instance attribute", "", ""); + } + break; + } case EatMaxVertexCount: { int maxVertexCount; From 780123006938d029abfdb9bd5874f8ae5a4a6851 Mon Sep 17 00:00:00 2001 From: Sergey Kosarevsky Date: Sat, 21 May 2022 22:30:39 +0300 Subject: [PATCH 049/594] Add a new C interface example to README.md --- README.md | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) diff --git a/README.md b/README.md index efe986cab2..5e642e6908 100644 --- a/README.md +++ b/README.md @@ -429,6 +429,77 @@ ShCompile(shader, compiler) -> compiler(AST) -> In practice, `ShCompile()` takes shader strings, default version, and warning/error and other options for controlling compilation. +### C Functional Interface (new) + +This interface is located `glslang_c_interface.h` and exposes functionality similar to the C++ interface. The following snippet is a complete example showing how to compile GLSL into SPIR-V 1.5 for Vulkan 1.2. + +```cxx +std::vector compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName) +{ + const glslang_input_t input = { + .language = GLSLANG_SOURCE_GLSL, + .stage = stage, + .client = GLSLANG_CLIENT_VULKAN, + .client_version = GLSLANG_TARGET_VULKAN_1_2, + .target_language = GLSLANG_TARGET_SPV, + .target_language_version = GLSLANG_TARGET_SPV_1_5, + .code = shaderSource, + .default_version = 100, + .default_profile = GLSLANG_NO_PROFILE, + .force_default_version_and_profile = false, + .forward_compatible = false, + .messages = GLSLANG_MSG_DEFAULT_BIT, + .resource = reinterpret_cast(&glslang::DefaultTBuiltInResource), + }; + + glslang_shader_t* shader = glslang_shader_create(&input); + + if (!glslang_shader_preprocess(shader, &input)) { + printf("GLSL preprocessing failed %s\n", fileName); + printf("%s\n", glslang_shader_get_info_log(shader)); + printf("%s\n", glslang_shader_get_info_debug_log(shader)); + printf("%s\n", input.code); + glslang_shader_delete(shader); + return std::vector(); + } + + if (!glslang_shader_parse(shader, &input)) { + printf("GLSL parsing failed %s\n", fileName); + printf("%s\n", glslang_shader_get_info_log(shader)); + printf("%s\n", glslang_shader_get_info_debug_log(shader)); + printf("%s\n", glslang_shader_get_preprocessed_code(shader)); + glslang_shader_delete(shader); + return std::vector(); + } + + glslang_program_t* program = glslang_program_create(); + glslang_program_add_shader(program, shader); + + if (!glslang_program_link(program, GLSLANG_MSG_SPV_RULES_BIT | GLSLANG_MSG_VULKAN_RULES_BIT)) { + printf("GLSL linking failed %s\n", fileName); + printf("%s\n", glslang_program_get_info_log(program)); + printf("%s\n", glslang_program_get_info_debug_log(program)); + glslang_program_delete(program); + glslang_shader_delete(shader); + return std::vector(); + } + + glslang_program_SPIRV_generate(program, stage); + + std::vector outShaderModule(glslang_program_SPIRV_get_size(program)); + glslang_program_SPIRV_get(program, outShaderModule.data()); + + const char* spirv_messages = glslang_program_SPIRV_get_messages(program); + if (spirv_messages) + printf("(%s) %s\b", fileName, spirv_messages); + + glslang_program_delete(program); + glslang_shader_delete(shader); + + return outShaderModule; +} +``` + ## Basic Internal Operation * Initial lexical analysis is done by the preprocessor in From 279c28e70ac39f5460c184c40a42744149263166 Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Mon, 23 May 2022 23:05:43 -0700 Subject: [PATCH 050/594] generate OpLine before OpFunction --- SPIRV/GlslangToSpv.cpp | 4 ++++ SPIRV/SpvBuilder.h | 4 ++++ SPIRV/spvIR.h | 17 ++++++++++++++++- Test/baseResults/hlsl.pp.line2.frag.out | 2 ++ Test/baseResults/hlsl.pp.line3.frag.out | 2 ++ Test/baseResults/hlsl.pp.line4.frag.out | 2 ++ Test/baseResults/hlsl.round.dx9.frag.out | 1 + Test/baseResults/hlsl.sample.dx9.frag.out | 2 ++ Test/baseResults/hlsl.sample.dx9.vert.out | 2 ++ Test/baseResults/spv.debugInfo.1.1.frag.out | 2 ++ Test/baseResults/spv.debugInfo.frag.out | 2 ++ Test/baseResults/spv.hlslDebugInfo.frag.out | 2 ++ Test/baseResults/spv.pp.line.frag.out | 1 + 13 files changed, 42 insertions(+), 1 deletion(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 01f5dbced5..bb427b2696 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2783,6 +2783,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } else { handleFunctionEntry(node); } + if (options.generateDebugInfo) { + const auto& loc = node->getLoc(); + currentFunction->setDebugLineInfo(builder.getSourceFile(), loc.line, loc.column); + } } else { if (inEntryPoint) entryPointTerminated = true; diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index c72d9b287e..0d6bce631f 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -99,6 +99,10 @@ class Builder { stringIds[file_c_str] = strId; return strId; } + spv::Id getSourceFile() const + { + return sourceFileStringId; + } void setSourceFile(const std::string& file) { sourceFileStringId = getStringId(file); diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 5249a5ba73..948ea52c9e 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -357,6 +357,14 @@ class Function { Decoration getReturnPrecision() const { return reducedPrecisionReturn ? DecorationRelaxedPrecision : NoPrecision; } + void setDebugLineInfo(Id fileName, int line, int column) { + lineInstruction = Instruction(OpLine); + lineInstruction.addIdOperand(fileName); + lineInstruction.addImmediateOperand(line); + lineInstruction.addImmediateOperand(column); + } + bool hasDebugLineInfo() const { return lineInstruction.getOpCode() == OpLine; } + void setImplicitThis() { implicitThis = true; } bool hasImplicitThis() const { return implicitThis; } @@ -373,6 +381,11 @@ class Function { void dump(std::vector& out) const { + // OpLine + if (hasDebugLineInfo()) { + lineInstruction.dump(out); + } + // OpFunction functionInstruction.dump(out); @@ -391,6 +404,7 @@ class Function { Function& operator=(Function&); Module& parent; + Instruction lineInstruction; Instruction functionInstruction; std::vector parameterInstructions; std::vector blocks; @@ -457,7 +471,8 @@ class Module { // - the OpFunction instruction // - all the OpFunctionParameter instructions __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent) - : parent(parent), functionInstruction(id, resultType, OpFunction), implicitThis(false), + : parent(parent), lineInstruction(OpNop), + functionInstruction(id, resultType, OpFunction), implicitThis(false), reducedPrecisionReturn(false) { // OpFunction diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out index 9ccf05c16c..e831964627 100644 --- a/Test/baseResults/hlsl.pp.line2.frag.out +++ b/Test/baseResults/hlsl.pp.line2.frag.out @@ -129,6 +129,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 71(i.vTextureCoords): 70(ptr) Variable Input 74: TypePointer Output 11(fvec4) 75(@entryPointOutput.vColor): 74(ptr) Variable Output + Line 1 23 1 5(MainPs): 3 Function None 4 6: Label 69(i): 10(ptr) Variable Function @@ -144,6 +145,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Store 75(@entryPointOutput.vColor) 79 Return FunctionEnd + Line 1 23 1 15(@MainPs(struct-PS_INPUT-vf21;):12(PS_OUTPUT) Function None 13 14(i): 10(ptr) FunctionParameter 16: Label diff --git a/Test/baseResults/hlsl.pp.line3.frag.out b/Test/baseResults/hlsl.pp.line3.frag.out index d19c516cd2..0cf250ab47 100644 --- a/Test/baseResults/hlsl.pp.line3.frag.out +++ b/Test/baseResults/hlsl.pp.line3.frag.out @@ -120,6 +120,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 69(i.vTextureCoords): 68(ptr) Variable Input 72: TypePointer Output 12(fvec4) 73(@entryPointOutput.vColor): 72(ptr) Variable Output + Line 1 23 1 6(MainPs): 4 Function None 5 7: Label 67(i): 11(ptr) Variable Function @@ -135,6 +136,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Store 73(@entryPointOutput.vColor) 77 Return FunctionEnd + Line 1 23 1 16(@MainPs(struct-PS_INPUT-vf21;):13(PS_OUTPUT) Function None 14 15(i): 11(ptr) FunctionParameter 17: Label diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out index 2244588be1..f318a21389 100644 --- a/Test/baseResults/hlsl.pp.line4.frag.out +++ b/Test/baseResults/hlsl.pp.line4.frag.out @@ -112,7 +112,9 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 70(i.vTextureCoords): 69(ptr) Variable Input 73: TypePointer Output 11(fvec4) 74(@entryPointOutput.vColor): 73(ptr) Variable Output + Line 1 25 1 5(MainPs): 3 Function None 4 + NoLine 6: Label Line 17 25 0 71: 8(fvec2) Load 70(i.vTextureCoords) diff --git a/Test/baseResults/hlsl.round.dx9.frag.out b/Test/baseResults/hlsl.round.dx9.frag.out index 9333c7dcff..ecf58a7493 100644 --- a/Test/baseResults/hlsl.round.dx9.frag.out +++ b/Test/baseResults/hlsl.round.dx9.frag.out @@ -60,6 +60,7 @@ gl_FragCoord origin is upper left 6: Label Return FunctionEnd + Line 1 2 1 12(PixelShaderFunction(vf4;): 8(fvec4) Function None 10 11(input): 9(ptr) FunctionParameter 13: Label diff --git a/Test/baseResults/hlsl.sample.dx9.frag.out b/Test/baseResults/hlsl.sample.dx9.frag.out index 282455c703..2b19a2cbb0 100644 --- a/Test/baseResults/hlsl.sample.dx9.frag.out +++ b/Test/baseResults/hlsl.sample.dx9.frag.out @@ -477,6 +477,7 @@ using depth_any 128(@entryPointOutput.Color): 127(ptr) Variable Output 131: TypePointer Output 7(float) 132(@entryPointOutput.Depth): 131(ptr) Variable Output + Line 1 15 1 5(main): 3 Function None 4 6: Label 125(flattenTemp): 109(ptr) Variable Function @@ -491,6 +492,7 @@ using depth_any Store 132(@entryPointOutput.Depth) 134 Return FunctionEnd + Line 1 15 1 11(@main():9(PS_OUTPUT) Function None 10 12: Label 14(ColorOut): 13(ptr) Variable Function diff --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out index 4b718cf174..0cd98f2aa7 100644 --- a/Test/baseResults/hlsl.sample.dx9.vert.out +++ b/Test/baseResults/hlsl.sample.dx9.vert.out @@ -215,6 +215,7 @@ Shader version: 500 53: 7(float) Constant 1073741824 60: TypePointer Output 8(fvec4) 61(@entryPointOutput.Pos): 60(ptr) Variable Output + Line 1 11 1 5(main): 3 Function None 4 6: Label Line 1 11 0 @@ -223,6 +224,7 @@ Shader version: 500 Store 61(@entryPointOutput.Pos) 63 Return FunctionEnd + Line 1 11 1 11(@main():9(VS_OUTPUT) Function None 10 12: Label 14(PosOut): 13(ptr) Variable Function diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index 78044ff2cf..109dc4bd58 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -136,6 +136,7 @@ void main() 109: 7(int) Constant 1 111: TypePointer Output 10(float) 114: 10(float) Constant 1092616192 + Line 1 28 11 5(main): 3 Function None 4 6: Label 57(param): 9(ptr) Variable Function @@ -237,6 +238,7 @@ void main() 118: Label Return FunctionEnd + Line 1 16 13 14(foo(struct-S-i11;): 11(fvec4) Function None 12 13(s): 9(ptr) FunctionParameter 15: Label diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index e146398190..9091327151 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -137,6 +137,7 @@ void main() 109: 7(int) Constant 1 111: TypePointer Output 10(float) 114: 10(float) Constant 1092616192 + Line 1 28 11 5(main): 3 Function None 4 6: Label 57(param): 9(ptr) Variable Function @@ -238,6 +239,7 @@ void main() 118: Label Return FunctionEnd + Line 1 16 13 14(foo(struct-S-i11;): 11(fvec4) Function None 12 13(s): 9(ptr) FunctionParameter 15: Label diff --git a/Test/baseResults/spv.hlslDebugInfo.frag.out b/Test/baseResults/spv.hlslDebugInfo.frag.out index 40089e7b87..9ce266dbfe 100644 --- a/Test/baseResults/spv.hlslDebugInfo.frag.out +++ b/Test/baseResults/spv.hlslDebugInfo.frag.out @@ -44,6 +44,7 @@ float4 origMain() : SV_Position 13: 8(fvec4) ConstantComposite 12 12 12 12 16: TypePointer Output 8(fvec4) 17(@entryPointOutput): 16(ptr) Variable Output + Line 1 2 1 5(newMain): 3 Function None 4 6: Label Line 1 2 0 @@ -51,6 +52,7 @@ float4 origMain() : SV_Position Store 17(@entryPointOutput) 18 Return FunctionEnd + Line 1 2 1 10(@newMain(): 8(fvec4) Function None 9 11: Label Line 1 3 0 diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out index 549ae912c2..dcfa897b50 100644 --- a/Test/baseResults/spv.pp.line.frag.out +++ b/Test/baseResults/spv.pp.line.frag.out @@ -92,6 +92,7 @@ void main() 56(u): 55(ptr) Variable Input 58: TypePointer Input 7(float) 59(blend): 58(ptr) Variable Input + Line 1 11 11 5(main): 3 Function None 4 6: Label 9(blendscale): 8(ptr) Variable Function From 353ef3ac3e72dd8cf51f8bf164bc671dc2549258 Mon Sep 17 00:00:00 2001 From: Gabriele Di Bari Date: Tue, 24 May 2022 18:53:39 +0200 Subject: [PATCH 051/594] Add test for the instance param (geometry shader) --- Test/hlsl.instance.geom | 17 +++++++++++++++++ gtests/Hlsl.FromFile.cpp | 3 ++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 Test/hlsl.instance.geom diff --git a/Test/hlsl.instance.geom b/Test/hlsl.instance.geom new file mode 100644 index 0000000000..5295f3893a --- /dev/null +++ b/Test/hlsl.instance.geom @@ -0,0 +1,17 @@ +struct VertexShaderOutput +{ + float4 m_position : SV_POSITION; + float4 m_color : COLOR0; +}; + +[maxvertexcount(3)] +[instance(5)] +void GeometryShader(triangle VertexShaderOutput input[3], inout TriangleStream output, uint id : SV_GSInstanceID) +{ + [loop] + for (int i = 0; i < 3; ++i) + { + output.Append(input[i]); + } + output.RestartStrip(); +} \ No newline at end of file diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 519be2549e..d3e38bb7ff 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -434,7 +434,8 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.typedef.frag", "PixelShaderFunction"}, {"hlsl.whileLoop.frag", "PixelShaderFunction"}, {"hlsl.void.frag", "PixelShaderFunction"}, - {"hlsl.type.type.conversion.all.frag", "main"} + {"hlsl.type.type.conversion.all.frag", "main"}, + {"hlsl.instance.geom", "GeometryShader"} }), FileNameAsCustomTestSuffix ); From e28ec404a7dd1f3901865e08b9db4157c1de1360 Mon Sep 17 00:00:00 2001 From: Gabriele91 Date: Tue, 24 May 2022 20:09:20 +0200 Subject: [PATCH 052/594] Add hlsl.instance.geom output --- Test/baseResults/hlsl.instance.geom.out | 433 ++++++++++++++++++++++++ 1 file changed, 433 insertions(+) create mode 100644 Test/baseResults/hlsl.instance.geom.out diff --git a/Test/baseResults/hlsl.instance.geom.out b/Test/baseResults/hlsl.instance.geom.out new file mode 100644 index 0000000000..5fbffd9ac0 --- /dev/null +++ b/Test/baseResults/hlsl.instance.geom.out @@ -0,0 +1,433 @@ +hlsl.instance.geom +Shader version: 500 +invocations = 5 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:10 Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void) +0:10 Function Parameters: +0:10 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 'output' ( out structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 'id' ( in uint) +0:? Sequence +0:12 Sequence +0:12 move second child to first child ( temp int) +0:12 'i' ( temp int) +0:12 Constant: +0:12 0 (const int) +0:12 Loop with condition tested first: DontUnroll +0:12 Loop Condition +0:12 Compare Less Than ( temp bool) +0:12 'i' ( temp int) +0:12 Constant: +0:12 3 (const int) +0:12 Loop Body +0:? Sequence +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 indirect index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 'i' ( temp int) +0:14 move second child to first child ( temp 4-component vector of float) +0:? 'output.m_position' ( out 4-component vector of float Position) +0:14 m_position: direct index for structure ( temp 4-component vector of float) +0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 Constant: +0:14 0 (const int) +0:14 move second child to first child ( temp 4-component vector of float) +0:? 'output.m_color' (layout( location=0) out 4-component vector of float) +0:14 m_color: direct index for structure ( temp 4-component vector of float) +0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 Constant: +0:14 1 (const int) +0:14 EmitVertex ( temp void) +0:12 Loop Terminal Expression +0:12 Pre-Increment ( temp int) +0:12 'i' ( temp int) +0:16 EndPrimitive ( temp void) +0:10 Function Definition: GeometryShader( ( temp void) +0:10 Function Parameters: +0:? Sequence +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_position: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 0 (const int) +0:10 direct index ( in 4-component vector of float Position) +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:10 Constant: +0:10 0 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_color: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 direct index (layout( location=0) in 4-component vector of float) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:10 Constant: +0:10 0 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_position: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 1 (const int) +0:10 Constant: +0:10 0 (const int) +0:10 direct index ( in 4-component vector of float Position) +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:10 Constant: +0:10 1 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_color: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 1 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 direct index (layout( location=0) in 4-component vector of float) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:10 Constant: +0:10 1 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_position: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 2 (const int) +0:10 Constant: +0:10 0 (const int) +0:10 direct index ( in 4-component vector of float Position) +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:10 Constant: +0:10 2 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_color: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 2 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 direct index (layout( location=0) in 4-component vector of float) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:10 Constant: +0:10 2 (const int) +0:10 move second child to first child ( temp uint) +0:? 'id' ( temp uint) +0:? 'id' ( in uint InvocationID) +0:10 Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'output' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'id' ( temp uint) +0:? Linker Objects +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:? 'id' ( in uint InvocationID) +0:? 'output.m_position' ( out 4-component vector of float Position) +0:? 'output.m_color' (layout( location=0) out 4-component vector of float) + + +Linked geometry stage: + + +Shader version: 500 +invocations = 5 +max_vertices = 3 +input primitive = triangles +output primitive = triangle_strip +0:? Sequence +0:10 Function Definition: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void) +0:10 Function Parameters: +0:10 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 'output' ( out structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 'id' ( in uint) +0:? Sequence +0:12 Sequence +0:12 move second child to first child ( temp int) +0:12 'i' ( temp int) +0:12 Constant: +0:12 0 (const int) +0:12 Loop with condition tested first: DontUnroll +0:12 Loop Condition +0:12 Compare Less Than ( temp bool) +0:12 'i' ( temp int) +0:12 Constant: +0:12 3 (const int) +0:12 Loop Body +0:? Sequence +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 indirect index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 'input' ( in 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 'i' ( temp int) +0:14 move second child to first child ( temp 4-component vector of float) +0:? 'output.m_position' ( out 4-component vector of float Position) +0:14 m_position: direct index for structure ( temp 4-component vector of float) +0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 Constant: +0:14 0 (const int) +0:14 move second child to first child ( temp 4-component vector of float) +0:? 'output.m_color' (layout( location=0) out 4-component vector of float) +0:14 m_color: direct index for structure ( temp 4-component vector of float) +0:14 'flattenTemp' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:14 Constant: +0:14 1 (const int) +0:14 EmitVertex ( temp void) +0:12 Loop Terminal Expression +0:12 Pre-Increment ( temp int) +0:12 'i' ( temp int) +0:16 EndPrimitive ( temp void) +0:10 Function Definition: GeometryShader( ( temp void) +0:10 Function Parameters: +0:? Sequence +0:10 Sequence +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_position: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 0 (const int) +0:10 direct index ( in 4-component vector of float Position) +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:10 Constant: +0:10 0 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_color: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 0 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 direct index (layout( location=0) in 4-component vector of float) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:10 Constant: +0:10 0 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_position: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 1 (const int) +0:10 Constant: +0:10 0 (const int) +0:10 direct index ( in 4-component vector of float Position) +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:10 Constant: +0:10 1 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_color: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 1 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 direct index (layout( location=0) in 4-component vector of float) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:10 Constant: +0:10 1 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_position: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 2 (const int) +0:10 Constant: +0:10 0 (const int) +0:10 direct index ( in 4-component vector of float Position) +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:10 Constant: +0:10 2 (const int) +0:10 move second child to first child ( temp 4-component vector of float) +0:10 m_color: direct index for structure ( temp 4-component vector of float) +0:10 direct index ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:10 Constant: +0:10 2 (const int) +0:10 Constant: +0:10 1 (const int) +0:10 direct index (layout( location=0) in 4-component vector of float) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:10 Constant: +0:10 2 (const int) +0:10 move second child to first child ( temp uint) +0:? 'id' ( temp uint) +0:? 'id' ( in uint InvocationID) +0:10 Function Call: @GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1; ( temp void) +0:? 'input' ( temp 3-element array of structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'output' ( temp structure{ temp 4-component vector of float m_position, temp 4-component vector of float m_color}) +0:? 'id' ( temp uint) +0:? Linker Objects +0:? 'input.m_position' ( in 3-element array of 4-component vector of float Position) +0:? 'input.m_color' (layout( location=0) in 3-element array of 4-component vector of float) +0:? 'id' ( in uint InvocationID) +0:? 'output.m_position' ( out 4-component vector of float Position) +0:? 'output.m_color' (layout( location=0) out 4-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 86 + + Capability Geometry + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 4 "GeometryShader" 39 43 52 57 76 + ExecutionMode 4 Triangles + ExecutionMode 4 Invocations 5 + ExecutionMode 4 OutputTriangleStrip + ExecutionMode 4 OutputVertices 3 + Source HLSL 500 + Name 4 "GeometryShader" + Name 8 "VertexShaderOutput" + MemberName 8(VertexShaderOutput) 0 "m_position" + MemberName 8(VertexShaderOutput) 1 "m_color" + Name 19 "@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;" + Name 16 "input" + Name 17 "output" + Name 18 "id" + Name 23 "i" + Name 34 "flattenTemp" + Name 39 "output.m_position" + Name 43 "output.m_color" + Name 49 "input" + Name 52 "input.m_position" + Name 57 "input.m_color" + Name 74 "id" + Name 76 "id" + Name 78 "output" + Name 79 "param" + Name 81 "param" + Name 82 "param" + Decorate 39(output.m_position) BuiltIn Position + Decorate 43(output.m_color) Location 0 + Decorate 52(input.m_position) BuiltIn Position + Decorate 57(input.m_color) Location 0 + Decorate 76(id) BuiltIn InvocationId + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 +8(VertexShaderOutput): TypeStruct 7(fvec4) 7(fvec4) + 9: TypeInt 32 0 + 10: 9(int) Constant 3 + 11: TypeArray 8(VertexShaderOutput) 10 + 12: TypePointer Function 11 + 13: TypePointer Function 8(VertexShaderOutput) + 14: TypePointer Function 9(int) + 15: TypeFunction 2 12(ptr) 13(ptr) 14(ptr) + 21: TypeInt 32 1 + 22: TypePointer Function 21(int) + 24: 21(int) Constant 0 + 31: 21(int) Constant 3 + 32: TypeBool + 38: TypePointer Output 7(fvec4) +39(output.m_position): 38(ptr) Variable Output + 40: TypePointer Function 7(fvec4) +43(output.m_color): 38(ptr) Variable Output + 44: 21(int) Constant 1 + 50: TypeArray 7(fvec4) 10 + 51: TypePointer Input 50 +52(input.m_position): 51(ptr) Variable Input + 53: TypePointer Input 7(fvec4) +57(input.m_color): 51(ptr) Variable Input + 67: 21(int) Constant 2 + 75: TypePointer Input 9(int) + 76(id): 75(ptr) Variable Input +4(GeometryShader): 2 Function None 3 + 5: Label + 49(input): 12(ptr) Variable Function + 74(id): 14(ptr) Variable Function + 78(output): 13(ptr) Variable Function + 79(param): 12(ptr) Variable Function + 81(param): 13(ptr) Variable Function + 82(param): 14(ptr) Variable Function + 54: 53(ptr) AccessChain 52(input.m_position) 24 + 55: 7(fvec4) Load 54 + 56: 40(ptr) AccessChain 49(input) 24 24 + Store 56 55 + 58: 53(ptr) AccessChain 57(input.m_color) 24 + 59: 7(fvec4) Load 58 + 60: 40(ptr) AccessChain 49(input) 24 44 + Store 60 59 + 61: 53(ptr) AccessChain 52(input.m_position) 44 + 62: 7(fvec4) Load 61 + 63: 40(ptr) AccessChain 49(input) 44 24 + Store 63 62 + 64: 53(ptr) AccessChain 57(input.m_color) 44 + 65: 7(fvec4) Load 64 + 66: 40(ptr) AccessChain 49(input) 44 44 + Store 66 65 + 68: 53(ptr) AccessChain 52(input.m_position) 67 + 69: 7(fvec4) Load 68 + 70: 40(ptr) AccessChain 49(input) 67 24 + Store 70 69 + 71: 53(ptr) AccessChain 57(input.m_color) 67 + 72: 7(fvec4) Load 71 + 73: 40(ptr) AccessChain 49(input) 67 44 + Store 73 72 + 77: 9(int) Load 76(id) + Store 74(id) 77 + 80: 11 Load 49(input) + Store 79(param) 80 + 83: 9(int) Load 74(id) + Store 82(param) 83 + 84: 2 FunctionCall 19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;) 79(param) 81(param) 82(param) + 85:8(VertexShaderOutput) Load 81(param) + Store 78(output) 85 + Return + FunctionEnd +19(@GeometryShader(struct-VertexShaderOutput-vf4-vf41[3];struct-VertexShaderOutput-vf4-vf41;u1;): 2 Function None 15 + 16(input): 12(ptr) FunctionParameter + 17(output): 13(ptr) FunctionParameter + 18(id): 14(ptr) FunctionParameter + 20: Label + 23(i): 22(ptr) Variable Function + 34(flattenTemp): 13(ptr) Variable Function + Store 23(i) 24 + Branch 25 + 25: Label + LoopMerge 27 28 DontUnroll + Branch 29 + 29: Label + 30: 21(int) Load 23(i) + 33: 32(bool) SLessThan 30 31 + BranchConditional 33 26 27 + 26: Label + 35: 21(int) Load 23(i) + 36: 13(ptr) AccessChain 16(input) 35 + 37:8(VertexShaderOutput) Load 36 + Store 34(flattenTemp) 37 + 41: 40(ptr) AccessChain 34(flattenTemp) 24 + 42: 7(fvec4) Load 41 + Store 39(output.m_position) 42 + 45: 40(ptr) AccessChain 34(flattenTemp) 44 + 46: 7(fvec4) Load 45 + Store 43(output.m_color) 46 + EmitVertex + Branch 28 + 28: Label + 47: 21(int) Load 23(i) + 48: 21(int) IAdd 47 44 + Store 23(i) 48 + Branch 25 + 27: Label + EndPrimitive + Return + FunctionEnd From ebf45697be1a861ca1b7501c5f6f7a883ff71b7e Mon Sep 17 00:00:00 2001 From: stusmith <19190608+stu-s@users.noreply.github.com> Date: Fri, 13 May 2022 17:23:29 +0100 Subject: [PATCH 053/594] Add support for VK_EXT_fragment_shader_barycentric --- SPIRV/GLSL.ext.KHR.h | 3 +- SPIRV/GlslangToSpv.cpp | 15 + SPIRV/doc.cpp | 9 +- .../spv.fragmentShaderBarycentric.frag.out | 6 +- .../spv.fragmentShaderBarycentric2.frag.out | 6 +- .../spv.fragmentShaderBarycentric3.frag.out | 69 + .../spv.fragmentShaderBarycentric4.frag.out | 65 + Test/spv.fragmentShaderBarycentric3.frag | 15 + Test/spv.fragmentShaderBarycentric4.frag | 15 + glslang/Include/BaseTypes.h | 8 +- glslang/Include/Types.h | 12 +- glslang/MachineIndependent/Initialize.cpp | 10 +- glslang/MachineIndependent/ParseHelper.cpp | 8 +- glslang/MachineIndependent/Scan.cpp | 7 + glslang/MachineIndependent/Versions.cpp | 4 + glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/glslang.m4 | 10 +- glslang/MachineIndependent/glslang.y | 10 +- glslang/MachineIndependent/glslang_tab.cpp | 7087 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 13 +- glslang/MachineIndependent/linkValidate.cpp | 2 +- gtests/Spv.FromFile.cpp | 4 +- 22 files changed, 3814 insertions(+), 3565 deletions(-) create mode 100644 Test/baseResults/spv.fragmentShaderBarycentric3.frag.out create mode 100644 Test/baseResults/spv.fragmentShaderBarycentric4.frag.out create mode 100644 Test/spv.fragmentShaderBarycentric3.frag create mode 100644 Test/spv.fragmentShaderBarycentric4.frag diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 5eb3e94482..5c89480e3a 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -29,7 +29,7 @@ #define GLSLextKHR_H static const int GLSLextKHRVersion = 100; -static const int GLSLextKHRRevision = 2; +static const int GLSLextKHRRevision = 3; static const char* const E_SPV_KHR_shader_ballot = "SPV_KHR_shader_ballot"; static const char* const E_SPV_KHR_subgroup_vote = "SPV_KHR_subgroup_vote"; @@ -52,5 +52,6 @@ static const char* const E_SPV_KHR_fragment_shading_rate = "SPV_KHR_fragm static const char* const E_SPV_KHR_terminate_invocation = "SPV_KHR_terminate_invocation"; static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout"; static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow"; +static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 01f5dbced5..b5d194ac7c 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1050,6 +1050,15 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI builder.addCapability(spv::CapabilityFragmentBarycentricNV); return spv::BuiltInBaryCoordNoPerspNV; + case glslang::EbvBaryCoordEXT: + builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric); + builder.addCapability(spv::CapabilityFragmentBarycentricKHR); + return spv::BuiltInBaryCoordKHR; + case glslang::EbvBaryCoordNoPerspEXT: + builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric); + builder.addCapability(spv::CapabilityFragmentBarycentricKHR); + return spv::BuiltInBaryCoordNoPerspKHR; + // mesh shaders case glslang::EbvTaskCountNV: return spv::BuiltInTaskCountNV; @@ -8866,6 +8875,12 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addExtension(spv::E_SPV_NV_fragment_shader_barycentric); } + if (symbol->getQualifier().pervertexEXT) { + builder.addDecoration(id, spv::DecorationPerVertexKHR); + builder.addCapability(spv::CapabilityFragmentBarycentricKHR); + builder.addExtension(spv::E_SPV_KHR_fragment_shader_barycentric); + } + if (glslangIntermediate->getHlslFunctionality1() && symbol->getType().getQualifier().semanticName != nullptr) { builder.addExtension("SPV_GOOGLE_hlsl_functionality1"); builder.addDecoration(id, (spv::Decoration)spv::DecorationHlslSemanticGOOGLE, diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 6b85ccd2d5..1ba92a8798 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -305,7 +305,8 @@ const char* DecorationString(int decoration) case DecorationPerPrimitiveNV: return "PerPrimitiveNV"; case DecorationPerViewNV: return "PerViewNV"; case DecorationPerTaskNV: return "PerTaskNV"; - case DecorationPerVertexNV: return "PerVertexNV"; + + case DecorationPerVertexKHR: return "PerVertexKHR"; case DecorationNonUniformEXT: return "DecorationNonUniformEXT"; case DecorationHlslCounterBufferGOOGLE: return "DecorationHlslCounterBufferGOOGLE"; @@ -407,8 +408,8 @@ const char* BuiltInString(int builtIn) case BuiltInViewportMaskPerViewNV: return "ViewportMaskPerViewNV"; // case BuiltInFragmentSizeNV: return "FragmentSizeNV"; // superseded by BuiltInFragSizeEXT // case BuiltInInvocationsPerPixelNV: return "InvocationsPerPixelNV"; // superseded by BuiltInFragInvocationCountEXT - case BuiltInBaryCoordNV: return "BaryCoordNV"; - case BuiltInBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; + case BuiltInBaryCoordKHR: return "BaryCoordKHR"; + case BuiltInBaryCoordNoPerspKHR: return "BaryCoordNoPerspKHR"; case BuiltInFragSizeEXT: return "FragSizeEXT"; case BuiltInFragInvocationCountEXT: return "FragInvocationCountEXT"; @@ -932,7 +933,7 @@ const char* CapabilityString(int info) case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; - case CapabilityFragmentBarycentricNV: return "FragmentBarycentricNV"; + case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR"; case CapabilityMeshShadingNV: return "MeshShadingNV"; case CapabilityImageFootprintNV: return "ImageFootprintNV"; // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT diff --git a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out index 2ea8f35f87..ef800bdd01 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out @@ -4,7 +4,7 @@ spv.fragmentShaderBarycentric.frag // Id's are bound by 43 Capability Shader - Capability FragmentBarycentricNV + Capability FragmentBarycentricKHR Extension "SPV_NV_fragment_shader_barycentric" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -19,10 +19,10 @@ spv.fragmentShaderBarycentric.frag MemberName 17(vertices) 0 "attrib" Name 21 "v" Decorate 8(value) Location 1 - Decorate 11(gl_BaryCoordNV) BuiltIn BaryCoordNV + Decorate 11(gl_BaryCoordNV) BuiltIn BaryCoordKHR Decorate 17(vertices) Block Decorate 21(v) Location 0 - Decorate 21(v) PerVertexNV + Decorate 21(v) PerVertexKHR 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out index 74a349834e..c09767631f 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out @@ -4,7 +4,7 @@ spv.fragmentShaderBarycentric2.frag // Id's are bound by 42 Capability Shader - Capability FragmentBarycentricNV + Capability FragmentBarycentricKHR Extension "SPV_NV_fragment_shader_barycentric" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 @@ -17,9 +17,9 @@ spv.fragmentShaderBarycentric2.frag Name 11 "gl_BaryCoordNoPerspNV" Name 20 "vertexIDs" Decorate 8(value) Location 1 - Decorate 11(gl_BaryCoordNoPerspNV) BuiltIn BaryCoordNoPerspNV + Decorate 11(gl_BaryCoordNoPerspNV) BuiltIn BaryCoordNoPerspKHR Decorate 20(vertexIDs) Location 0 - Decorate 20(vertexIDs) PerVertexNV + Decorate 20(vertexIDs) PerVertexKHR 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out new file mode 100644 index 0000000000..7fe21b34a0 --- /dev/null +++ b/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out @@ -0,0 +1,69 @@ +spv.fragmentShaderBarycentric3.frag +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 43 + + Capability Shader + Capability FragmentBarycentricKHR + Extension "SPV_KHR_fragment_shader_barycentric" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 11 21 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_fragment_shader_barycentric" + Name 4 "main" + Name 8 "value" + Name 11 "gl_BaryCoordEXT" + Name 17 "vertices" + MemberName 17(vertices) 0 "attrib" + Name 21 "v" + Decorate 8(value) Location 1 + Decorate 11(gl_BaryCoordEXT) BuiltIn BaryCoordKHR + Decorate 17(vertices) Block + Decorate 21(v) Location 0 + Decorate 21(v) PerVertexKHR + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Output 6(float) + 8(value): 7(ptr) Variable Output + 9: TypeVector 6(float) 3 + 10: TypePointer Input 9(fvec3) +11(gl_BaryCoordEXT): 10(ptr) Variable Input + 12: TypeInt 32 0 + 13: 12(int) Constant 0 + 14: TypePointer Input 6(float) + 17(vertices): TypeStruct 6(float) + 18: 12(int) Constant 3 + 19: TypeArray 17(vertices) 18 + 20: TypePointer Input 19 + 21(v): 20(ptr) Variable Input + 22: TypeInt 32 1 + 23: 22(int) Constant 0 + 27: 12(int) Constant 1 + 30: 22(int) Constant 1 + 35: 12(int) Constant 2 + 38: 22(int) Constant 2 + 4(main): 2 Function None 3 + 5: Label + 15: 14(ptr) AccessChain 11(gl_BaryCoordEXT) 13 + 16: 6(float) Load 15 + 24: 14(ptr) AccessChain 21(v) 23 23 + 25: 6(float) Load 24 + 26: 6(float) FMul 16 25 + 28: 14(ptr) AccessChain 11(gl_BaryCoordEXT) 27 + 29: 6(float) Load 28 + 31: 14(ptr) AccessChain 21(v) 30 23 + 32: 6(float) Load 31 + 33: 6(float) FMul 29 32 + 34: 6(float) FAdd 26 33 + 36: 14(ptr) AccessChain 11(gl_BaryCoordEXT) 35 + 37: 6(float) Load 36 + 39: 14(ptr) AccessChain 21(v) 38 23 + 40: 6(float) Load 39 + 41: 6(float) FMul 37 40 + 42: 6(float) FAdd 34 41 + Store 8(value) 42 + Return + FunctionEnd diff --git a/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out new file mode 100644 index 0000000000..aaac6a4427 --- /dev/null +++ b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out @@ -0,0 +1,65 @@ +spv.fragmentShaderBarycentric4.frag +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 42 + + Capability Shader + Capability FragmentBarycentricKHR + Extension "SPV_KHR_fragment_shader_barycentric" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 11 20 + ExecutionMode 4 OriginUpperLeft + Source ESSL 320 + SourceExtension "GL_EXT_fragment_shader_barycentric" + Name 4 "main" + Name 8 "value" + Name 11 "gl_BaryCoordNoPerspEXT" + Name 20 "vertexIDs" + Decorate 8(value) Location 1 + Decorate 11(gl_BaryCoordNoPerspEXT) BuiltIn BaryCoordNoPerspKHR + Decorate 20(vertexIDs) Location 0 + Decorate 20(vertexIDs) PerVertexKHR + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Output 6(float) + 8(value): 7(ptr) Variable Output + 9: TypeVector 6(float) 3 + 10: TypePointer Input 9(fvec3) +11(gl_BaryCoordNoPerspEXT): 10(ptr) Variable Input + 12: TypeInt 32 0 + 13: 12(int) Constant 0 + 14: TypePointer Input 6(float) + 17: 12(int) Constant 3 + 18: TypeArray 6(float) 17 + 19: TypePointer Input 18 + 20(vertexIDs): 19(ptr) Variable Input + 21: TypeInt 32 1 + 22: 21(int) Constant 0 + 26: 12(int) Constant 1 + 29: 21(int) Constant 1 + 34: 12(int) Constant 2 + 37: 21(int) Constant 2 + 4(main): 2 Function None 3 + 5: Label + 15: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 13 + 16: 6(float) Load 15 + 23: 14(ptr) AccessChain 20(vertexIDs) 22 + 24: 6(float) Load 23 + 25: 6(float) FMul 16 24 + 27: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 26 + 28: 6(float) Load 27 + 30: 14(ptr) AccessChain 20(vertexIDs) 29 + 31: 6(float) Load 30 + 32: 6(float) FMul 28 31 + 33: 6(float) FAdd 25 32 + 35: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 34 + 36: 6(float) Load 35 + 38: 14(ptr) AccessChain 20(vertexIDs) 37 + 39: 6(float) Load 38 + 40: 6(float) FMul 36 39 + 41: 6(float) FAdd 33 40 + Store 8(value) 41 + Return + FunctionEnd diff --git a/Test/spv.fragmentShaderBarycentric3.frag b/Test/spv.fragmentShaderBarycentric3.frag new file mode 100644 index 0000000000..93e977eb79 --- /dev/null +++ b/Test/spv.fragmentShaderBarycentric3.frag @@ -0,0 +1,15 @@ +#version 450 +#extension GL_EXT_fragment_shader_barycentric : require + +layout(location = 0) pervertexEXT in vertices { + float attrib; + } v[]; + +layout(location = 1) out float value; + +void main () { + value = (gl_BaryCoordEXT.x * v[0].attrib + + gl_BaryCoordEXT.y * v[1].attrib + + gl_BaryCoordEXT.z * v[2].attrib); + +} diff --git a/Test/spv.fragmentShaderBarycentric4.frag b/Test/spv.fragmentShaderBarycentric4.frag new file mode 100644 index 0000000000..5b4510ecda --- /dev/null +++ b/Test/spv.fragmentShaderBarycentric4.frag @@ -0,0 +1,15 @@ +#version 320 es +#extension GL_EXT_fragment_shader_barycentric : require + +precision highp float; + +layout(location = 0) pervertexEXT in float vertexIDs[3]; + +layout(location = 1) out float value; + +void main () { + value = (gl_BaryCoordNoPerspEXT.x * vertexIDs[0] + + gl_BaryCoordNoPerspEXT.y * vertexIDs[1] + + gl_BaryCoordNoPerspEXT.z * vertexIDs[2]); + +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 09177fbca2..3eec5973b4 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -275,6 +275,8 @@ enum TBuiltInVariable { // barycentrics EbvBaryCoordNV, EbvBaryCoordNoPerspNV, + EbvBaryCoordEXT, + EbvBaryCoordNoPerspEXT, // mesh shaders EbvTaskCountNV, EbvPrimitiveCountNV, @@ -479,8 +481,10 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvWorldToObject: return "WorldToObjectNV"; case EbvCurrentRayTimeNV: return "CurrentRayTimeNV"; - case EbvBaryCoordNV: return "BaryCoordNV"; - case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspNV"; + case EbvBaryCoordEXT: + case EbvBaryCoordNV: return "BaryCoordKHR"; + case EbvBaryCoordNoPerspEXT: + case EbvBaryCoordNoPerspNV: return "BaryCoordNoPerspKHR"; case EbvTaskCountNV: return "TaskCountNV"; case EbvPrimitiveCountNV: return "PrimitiveCountNV"; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 91fcd4eb28..682d124cc9 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -552,6 +552,7 @@ class TQualifier { perViewNV = false; perTaskNV = false; #endif + pervertexEXT = false; } void clearMemory() @@ -604,7 +605,8 @@ class TQualifier { bool isNoContraction() const { return false; } void setNoContraction() { } bool isPervertexNV() const { return false; } - void setNullInit() { } + bool isPervertexEXT() const { return pervertexEXT; } + void setNullInit() {} bool isNullInit() const { return false; } void setSpirvByReference() { } bool isSpirvByReference() { return false; } @@ -615,6 +617,7 @@ class TQualifier { bool nopersp : 1; bool explicitInterp : 1; bool pervertexNV : 1; + bool pervertexEXT : 1; bool perPrimitiveNV : 1; bool perViewNV : 1; bool perTaskNV : 1; @@ -663,12 +666,13 @@ class TQualifier { } bool isAuxiliary() const { - return centroid || patch || sample || pervertexNV; + return centroid || patch || sample || pervertexNV || pervertexEXT; } bool isPatch() const { return patch; } bool isNoContraction() const { return noContraction; } void setNoContraction() { noContraction = true; } bool isPervertexNV() const { return pervertexNV; } + bool isPervertexEXT() const { return pervertexEXT; } void setNullInit() { nullInit = true; } bool isNullInit() const { return nullInit; } void setSpirvByReference() { spirvByReference = true; } @@ -856,7 +860,7 @@ class TQualifier { case EShLangTessEvaluation: return ! patch && isPipeInput(); case EShLangFragment: - return pervertexNV && isPipeInput(); + return (pervertexNV || pervertexEXT) && isPipeInput(); case EShLangMeshNV: return ! perTaskNV && isPipeOutput(); @@ -2266,6 +2270,8 @@ class TType { appendStr(" __explicitInterpAMD"); if (qualifier.pervertexNV) appendStr(" pervertexNV"); + if (qualifier.pervertexEXT) + appendStr(" pervertexEXT"); if (qualifier.perPrimitiveNV) appendStr(" perprimitiveNV"); if (qualifier.perViewNV) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 0406da67b0..b18b257525 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5571,6 +5571,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "flat in int gl_InvocationsPerPixelNV;" "in vec3 gl_BaryCoordNV;" // GL_NV_fragment_shader_barycentric "in vec3 gl_BaryCoordNoPerspNV;" + "in vec3 gl_BaryCoordEXT;" // GL_EXT_fragment_shader_barycentric + "in vec3 gl_BaryCoordNoPerspEXT;" ); if (version >= 450) @@ -5635,7 +5637,9 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangFragment].append( "in vec3 gl_BaryCoordNV;" "in vec3 gl_BaryCoordNoPerspNV;" - ); + "in vec3 gl_BaryCoordEXT;" + "in vec3 gl_BaryCoordNoPerspEXT;" + ); if (version >= 310) stageBuiltins[EShLangFragment].append( "flat in highp int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate @@ -8321,6 +8325,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_BaryCoordNoPerspNV", 1, &E_GL_NV_fragment_shader_barycentric); BuiltInVariable("gl_BaryCoordNV", EbvBaryCoordNV, symbolTable); BuiltInVariable("gl_BaryCoordNoPerspNV", EbvBaryCoordNoPerspNV, symbolTable); + symbolTable.setVariableExtensions("gl_BaryCoordEXT", 1, &E_GL_EXT_fragment_shader_barycentric); + symbolTable.setVariableExtensions("gl_BaryCoordNoPerspEXT", 1, &E_GL_EXT_fragment_shader_barycentric); + BuiltInVariable("gl_BaryCoordEXT", EbvBaryCoordEXT, symbolTable); + BuiltInVariable("gl_BaryCoordNoPerspEXT", EbvBaryCoordNoPerspEXT, symbolTable); } if ((profile != EEsProfile && version >= 450) || diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 613a66f400..45a72d9333 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -716,7 +716,7 @@ bool TParseContext::isIoResizeArray(const TType& type) const (language == EShLangTessControl && type.getQualifier().storage == EvqVaryingOut && ! type.getQualifier().patch) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && - type.getQualifier().pervertexNV) || + (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } @@ -856,7 +856,7 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS error(loc, "inconsistent output number of vertices for array size of", feature, name.c_str()); else if (language == EShLangFragment) { if (type.getOuterArraySize() > requiredSize) - error(loc, " cannot be greater than 3 for pervertexNV", feature, name.c_str()); + error(loc, " cannot be greater than 3 for pervertexEXT", feature, name.c_str()); } else if (language == EShLangMeshNV) error(loc, "inconsistent output array size of", feature, name.c_str()); @@ -3806,7 +3806,7 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble) profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output"); - if (!qualifier.flat && !qualifier.isExplicitInterpolation() && !qualifier.isPervertexNV()) { + if (!qualifier.flat && !qualifier.isExplicitInterpolation() && !qualifier.isPervertexNV() && !qualifier.isPervertexEXT()) { if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble || (publicType.userDef && ( publicType.userDef->containsBasicType(EbtInt) @@ -6069,6 +6069,8 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.layoutShaderRecord = true; if (src.pervertexNV) dst.pervertexNV = true; + if (src.pervertexEXT) + dst.pervertexEXT = true; #endif } } diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index c387aede0e..f53677f929 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -739,6 +739,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["f16subpassInputMS"] = F16SUBPASSINPUTMS; (*KeywordMap)["__explicitInterpAMD"] = EXPLICITINTERPAMD; (*KeywordMap)["pervertexNV"] = PERVERTEXNV; + (*KeywordMap)["pervertexEXT"] = PERVERTEXEXT; (*KeywordMap)["precise"] = PRECISE; (*KeywordMap)["rayPayloadNV"] = PAYLOADNV; @@ -1719,6 +1720,12 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); + case PERVERTEXEXT: + if ((!parseContext.isEsProfile() && parseContext.version >= 450) || + parseContext.extensionTurnedOn(E_GL_EXT_fragment_shader_barycentric)) + return keyword; + return identifierOrType(); + case PRECISE: if ((parseContext.isEsProfile() && (parseContext.version >= 320 || parseContext.extensionsTurnedOn(Num_AEP_gpu_shader5, AEP_gpu_shader5))) || diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index f6bf7c3a94..52c1e1ccd1 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -259,6 +259,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_subgroup_uniform_control_flow] = EBhDisable; + extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable; + // #line and #include extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable; extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable; @@ -554,6 +556,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_atomic_float 1\n" "#define GL_EXT_shader_atomic_float2 1\n" + + "#define GL_EXT_fragment_shader_barycentric 1\n" ; if (version >= 150) { diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 3f7299d3cf..c411f5b62e 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -210,6 +210,7 @@ const char* const E_GL_EXT_null_initializer = "GL_EXT_null_initi const char* const E_GL_EXT_shared_memory_block = "GL_EXT_shared_memory_block"; const char* const E_GL_EXT_subgroup_uniform_control_flow = "GL_EXT_subgroup_uniform_control_flow"; const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intrinsics"; +const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 624add5a25..3ab7a3c0a0 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -315,7 +315,7 @@ GLSLANG_WEB_EXCLUDE_ON %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV +%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV %token PRECISE GLSLANG_WEB_EXCLUDE_OFF @@ -1290,6 +1290,14 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc); $$.qualifier.pervertexNV = true; } + | PERVERTEXEXT { + parseContext.globalCheck($1.loc, "pervertexEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + $$.init($1.loc); + $$.qualifier.pervertexEXT = true; + } | PERPRIMITIVENV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perprimitiveNV"); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 93c989953e..d77c831585 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -315,7 +315,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV +%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV %token PRECISE @@ -1290,6 +1290,14 @@ interpolation_qualifier $$.init($1.loc); $$.qualifier.pervertexNV = true; } + | PERVERTEXEXT { + parseContext.globalCheck($1.loc, "pervertexEXT"); + parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + $$.init($1.loc); + $$.qualifier.pervertexEXT = true; + } | PERPRIMITIVENV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perprimitiveNV"); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 0b216b622f..4e4768eaa5 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -571,142 +571,143 @@ enum yysymbol_kind_t YYSYMBOL_SHADERCALLCOHERENT = 447, /* SHADERCALLCOHERENT */ YYSYMBOL_NOPERSPECTIVE = 448, /* NOPERSPECTIVE */ YYSYMBOL_EXPLICITINTERPAMD = 449, /* EXPLICITINTERPAMD */ - YYSYMBOL_PERVERTEXNV = 450, /* PERVERTEXNV */ - YYSYMBOL_PERPRIMITIVENV = 451, /* PERPRIMITIVENV */ - YYSYMBOL_PERVIEWNV = 452, /* PERVIEWNV */ - YYSYMBOL_PERTASKNV = 453, /* PERTASKNV */ - YYSYMBOL_PRECISE = 454, /* PRECISE */ - YYSYMBOL_YYACCEPT = 455, /* $accept */ - YYSYMBOL_variable_identifier = 456, /* variable_identifier */ - YYSYMBOL_primary_expression = 457, /* primary_expression */ - YYSYMBOL_postfix_expression = 458, /* postfix_expression */ - YYSYMBOL_integer_expression = 459, /* integer_expression */ - YYSYMBOL_function_call = 460, /* function_call */ - YYSYMBOL_function_call_or_method = 461, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 462, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 463, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 464, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 465, /* function_call_header */ - YYSYMBOL_function_identifier = 466, /* function_identifier */ - YYSYMBOL_unary_expression = 467, /* unary_expression */ - YYSYMBOL_unary_operator = 468, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 469, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 470, /* additive_expression */ - YYSYMBOL_shift_expression = 471, /* shift_expression */ - YYSYMBOL_relational_expression = 472, /* relational_expression */ - YYSYMBOL_equality_expression = 473, /* equality_expression */ - YYSYMBOL_and_expression = 474, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 475, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 476, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 477, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 478, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 479, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 480, /* conditional_expression */ - YYSYMBOL_481_1 = 481, /* $@1 */ - YYSYMBOL_assignment_expression = 482, /* assignment_expression */ - YYSYMBOL_assignment_operator = 483, /* assignment_operator */ - YYSYMBOL_expression = 484, /* expression */ - YYSYMBOL_constant_expression = 485, /* constant_expression */ - YYSYMBOL_declaration = 486, /* declaration */ - YYSYMBOL_block_structure = 487, /* block_structure */ - YYSYMBOL_488_2 = 488, /* $@2 */ - YYSYMBOL_identifier_list = 489, /* identifier_list */ - YYSYMBOL_function_prototype = 490, /* function_prototype */ - YYSYMBOL_function_declarator = 491, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 492, /* function_header_with_parameters */ - YYSYMBOL_function_header = 493, /* function_header */ - YYSYMBOL_parameter_declarator = 494, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 495, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 496, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 497, /* init_declarator_list */ - YYSYMBOL_single_declaration = 498, /* single_declaration */ - YYSYMBOL_fully_specified_type = 499, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 500, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 501, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 502, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 503, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 504, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 505, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 506, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 507, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 508, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 509, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 510, /* type_name_list */ - YYSYMBOL_type_specifier = 511, /* type_specifier */ - YYSYMBOL_array_specifier = 512, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 513, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 514, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 515, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 516, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 517, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 518, /* struct_specifier */ - YYSYMBOL_519_3 = 519, /* $@3 */ - YYSYMBOL_520_4 = 520, /* $@4 */ - YYSYMBOL_struct_declaration_list = 521, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 522, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 523, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 524, /* struct_declarator */ - YYSYMBOL_initializer = 525, /* initializer */ - YYSYMBOL_initializer_list = 526, /* initializer_list */ - YYSYMBOL_declaration_statement = 527, /* declaration_statement */ - YYSYMBOL_statement = 528, /* statement */ - YYSYMBOL_simple_statement = 529, /* simple_statement */ - YYSYMBOL_demote_statement = 530, /* demote_statement */ - YYSYMBOL_compound_statement = 531, /* compound_statement */ - YYSYMBOL_532_5 = 532, /* $@5 */ - YYSYMBOL_533_6 = 533, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 534, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 535, /* statement_scoped */ - YYSYMBOL_536_7 = 536, /* $@7 */ - YYSYMBOL_537_8 = 537, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 538, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 539, /* statement_list */ - YYSYMBOL_expression_statement = 540, /* expression_statement */ - YYSYMBOL_selection_statement = 541, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 542, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 543, /* selection_rest_statement */ - YYSYMBOL_condition = 544, /* condition */ - YYSYMBOL_switch_statement = 545, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 546, /* switch_statement_nonattributed */ - YYSYMBOL_547_9 = 547, /* $@9 */ - YYSYMBOL_switch_statement_list = 548, /* switch_statement_list */ - YYSYMBOL_case_label = 549, /* case_label */ - YYSYMBOL_iteration_statement = 550, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 551, /* iteration_statement_nonattributed */ - YYSYMBOL_552_10 = 552, /* $@10 */ - YYSYMBOL_553_11 = 553, /* $@11 */ - YYSYMBOL_554_12 = 554, /* $@12 */ - YYSYMBOL_for_init_statement = 555, /* for_init_statement */ - YYSYMBOL_conditionopt = 556, /* conditionopt */ - YYSYMBOL_for_rest_statement = 557, /* for_rest_statement */ - YYSYMBOL_jump_statement = 558, /* jump_statement */ - YYSYMBOL_translation_unit = 559, /* translation_unit */ - YYSYMBOL_external_declaration = 560, /* external_declaration */ - YYSYMBOL_function_definition = 561, /* function_definition */ - YYSYMBOL_562_13 = 562, /* $@13 */ - YYSYMBOL_attribute = 563, /* attribute */ - YYSYMBOL_attribute_list = 564, /* attribute_list */ - YYSYMBOL_single_attribute = 565, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 566, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 567, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 568, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 569, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 570, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 571, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 572, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 573, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 574, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 575, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 576, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 577, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 578, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_string_parameter_list = 579, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 580, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 581, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 582, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 583, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 584, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 585 /* spirv_instruction_qualifier_id */ + YYSYMBOL_PERVERTEXEXT = 450, /* PERVERTEXEXT */ + YYSYMBOL_PERVERTEXNV = 451, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 452, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 453, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 454, /* PERTASKNV */ + YYSYMBOL_PRECISE = 455, /* PRECISE */ + YYSYMBOL_YYACCEPT = 456, /* $accept */ + YYSYMBOL_variable_identifier = 457, /* variable_identifier */ + YYSYMBOL_primary_expression = 458, /* primary_expression */ + YYSYMBOL_postfix_expression = 459, /* postfix_expression */ + YYSYMBOL_integer_expression = 460, /* integer_expression */ + YYSYMBOL_function_call = 461, /* function_call */ + YYSYMBOL_function_call_or_method = 462, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 463, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 464, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 465, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 466, /* function_call_header */ + YYSYMBOL_function_identifier = 467, /* function_identifier */ + YYSYMBOL_unary_expression = 468, /* unary_expression */ + YYSYMBOL_unary_operator = 469, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 470, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 471, /* additive_expression */ + YYSYMBOL_shift_expression = 472, /* shift_expression */ + YYSYMBOL_relational_expression = 473, /* relational_expression */ + YYSYMBOL_equality_expression = 474, /* equality_expression */ + YYSYMBOL_and_expression = 475, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 476, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 477, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 478, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 479, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 480, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 481, /* conditional_expression */ + YYSYMBOL_482_1 = 482, /* $@1 */ + YYSYMBOL_assignment_expression = 483, /* assignment_expression */ + YYSYMBOL_assignment_operator = 484, /* assignment_operator */ + YYSYMBOL_expression = 485, /* expression */ + YYSYMBOL_constant_expression = 486, /* constant_expression */ + YYSYMBOL_declaration = 487, /* declaration */ + YYSYMBOL_block_structure = 488, /* block_structure */ + YYSYMBOL_489_2 = 489, /* $@2 */ + YYSYMBOL_identifier_list = 490, /* identifier_list */ + YYSYMBOL_function_prototype = 491, /* function_prototype */ + YYSYMBOL_function_declarator = 492, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 493, /* function_header_with_parameters */ + YYSYMBOL_function_header = 494, /* function_header */ + YYSYMBOL_parameter_declarator = 495, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 496, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 497, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 498, /* init_declarator_list */ + YYSYMBOL_single_declaration = 499, /* single_declaration */ + YYSYMBOL_fully_specified_type = 500, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 501, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 502, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 503, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 504, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 505, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 506, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 507, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 508, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 509, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 510, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 511, /* type_name_list */ + YYSYMBOL_type_specifier = 512, /* type_specifier */ + YYSYMBOL_array_specifier = 513, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 514, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 515, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 516, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 517, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 518, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 519, /* struct_specifier */ + YYSYMBOL_520_3 = 520, /* $@3 */ + YYSYMBOL_521_4 = 521, /* $@4 */ + YYSYMBOL_struct_declaration_list = 522, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 523, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 524, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 525, /* struct_declarator */ + YYSYMBOL_initializer = 526, /* initializer */ + YYSYMBOL_initializer_list = 527, /* initializer_list */ + YYSYMBOL_declaration_statement = 528, /* declaration_statement */ + YYSYMBOL_statement = 529, /* statement */ + YYSYMBOL_simple_statement = 530, /* simple_statement */ + YYSYMBOL_demote_statement = 531, /* demote_statement */ + YYSYMBOL_compound_statement = 532, /* compound_statement */ + YYSYMBOL_533_5 = 533, /* $@5 */ + YYSYMBOL_534_6 = 534, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 535, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 536, /* statement_scoped */ + YYSYMBOL_537_7 = 537, /* $@7 */ + YYSYMBOL_538_8 = 538, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 539, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 540, /* statement_list */ + YYSYMBOL_expression_statement = 541, /* expression_statement */ + YYSYMBOL_selection_statement = 542, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 543, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 544, /* selection_rest_statement */ + YYSYMBOL_condition = 545, /* condition */ + YYSYMBOL_switch_statement = 546, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 547, /* switch_statement_nonattributed */ + YYSYMBOL_548_9 = 548, /* $@9 */ + YYSYMBOL_switch_statement_list = 549, /* switch_statement_list */ + YYSYMBOL_case_label = 550, /* case_label */ + YYSYMBOL_iteration_statement = 551, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 552, /* iteration_statement_nonattributed */ + YYSYMBOL_553_10 = 553, /* $@10 */ + YYSYMBOL_554_11 = 554, /* $@11 */ + YYSYMBOL_555_12 = 555, /* $@12 */ + YYSYMBOL_for_init_statement = 556, /* for_init_statement */ + YYSYMBOL_conditionopt = 557, /* conditionopt */ + YYSYMBOL_for_rest_statement = 558, /* for_rest_statement */ + YYSYMBOL_jump_statement = 559, /* jump_statement */ + YYSYMBOL_translation_unit = 560, /* translation_unit */ + YYSYMBOL_external_declaration = 561, /* external_declaration */ + YYSYMBOL_function_definition = 562, /* function_definition */ + YYSYMBOL_563_13 = 563, /* $@13 */ + YYSYMBOL_attribute = 564, /* attribute */ + YYSYMBOL_attribute_list = 565, /* attribute_list */ + YYSYMBOL_single_attribute = 566, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 567, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 568, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 569, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 570, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 571, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 572, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 573, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 574, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 575, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 576, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 577, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 578, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 579, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_string_parameter_list = 580, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 581, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 582, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 583, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 584, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 585, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 586 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -728,7 +729,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 732 "MachineIndependent/glslang_tab.cpp" +#line 733 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1032,21 +1033,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 442 +#define YYFINAL 443 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12452 +#define YYLAST 12469 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 455 +#define YYNTOKENS 456 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 131 /* YYNRULES -- Number of rules. */ -#define YYNRULES 683 +#define YYNRULES 684 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 929 +#define YYNSTATES 930 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 709 +#define YYMAXUTOK 710 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1130,7 +1131,8 @@ static const yytype_int16 yytranslate[] = 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454 + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455 }; #if YYDEBUG @@ -1151,61 +1153,61 @@ static const yytype_int16 yyrline[] = 982, 988, 994, 1004, 1007, 1014, 1022, 1042, 1065, 1080, 1105, 1116, 1126, 1136, 1146, 1155, 1158, 1162, 1166, 1171, 1179, 1186, 1191, 1196, 1201, 1210, 1220, 1247, 1256, 1263, - 1271, 1278, 1285, 1293, 1303, 1310, 1321, 1327, 1330, 1337, - 1341, 1345, 1354, 1364, 1367, 1378, 1381, 1384, 1388, 1392, - 1397, 1401, 1404, 1409, 1413, 1418, 1427, 1431, 1436, 1442, - 1448, 1455, 1460, 1468, 1474, 1486, 1500, 1506, 1511, 1519, - 1527, 1535, 1543, 1551, 1559, 1567, 1575, 1582, 1589, 1593, - 1598, 1603, 1608, 1613, 1618, 1623, 1627, 1631, 1635, 1639, - 1645, 1656, 1663, 1666, 1675, 1680, 1690, 1695, 1703, 1707, - 1717, 1720, 1726, 1732, 1739, 1749, 1753, 1757, 1761, 1766, - 1770, 1775, 1780, 1785, 1790, 1795, 1800, 1805, 1810, 1815, - 1821, 1827, 1833, 1838, 1843, 1848, 1853, 1858, 1863, 1868, - 1873, 1878, 1883, 1888, 1894, 1901, 1906, 1911, 1916, 1921, - 1926, 1931, 1936, 1941, 1946, 1951, 1956, 1964, 1972, 1980, - 1986, 1992, 1998, 2004, 2010, 2016, 2022, 2028, 2034, 2040, - 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094, 2100, - 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154, 2160, - 2166, 2172, 2178, 2186, 2194, 2202, 2210, 2218, 2226, 2234, - 2242, 2250, 2258, 2266, 2274, 2280, 2286, 2292, 2298, 2304, - 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358, 2364, - 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418, 2424, - 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478, 2484, - 2490, 2494, 2498, 2502, 2507, 2513, 2518, 2523, 2528, 2533, - 2538, 2543, 2549, 2554, 2559, 2564, 2569, 2574, 2580, 2586, - 2592, 2598, 2604, 2610, 2616, 2622, 2628, 2634, 2640, 2646, - 2652, 2658, 2663, 2668, 2673, 2678, 2683, 2688, 2694, 2699, - 2704, 2709, 2714, 2719, 2724, 2729, 2735, 2740, 2745, 2750, - 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, - 2805, 2811, 2816, 2821, 2827, 2833, 2838, 2843, 2848, 2854, - 2859, 2864, 2869, 2875, 2880, 2885, 2890, 2896, 2901, 2906, - 2911, 2917, 2923, 2929, 2935, 2940, 2946, 2952, 2958, 2963, - 2968, 2973, 2978, 2983, 2989, 2994, 2999, 3004, 3010, 3015, - 3020, 3025, 3031, 3036, 3041, 3046, 3052, 3057, 3062, 3067, - 3073, 3078, 3083, 3088, 3094, 3099, 3104, 3109, 3115, 3120, - 3125, 3130, 3136, 3141, 3146, 3151, 3157, 3162, 3167, 3172, - 3178, 3183, 3188, 3193, 3199, 3204, 3209, 3214, 3220, 3225, - 3230, 3235, 3241, 3246, 3251, 3256, 3262, 3267, 3272, 3277, - 3283, 3288, 3293, 3298, 3303, 3308, 3313, 3318, 3323, 3328, - 3333, 3338, 3343, 3348, 3353, 3358, 3363, 3368, 3373, 3378, - 3383, 3388, 3393, 3398, 3403, 3409, 3415, 3421, 3427, 3434, - 3441, 3447, 3453, 3459, 3465, 3471, 3477, 3483, 3488, 3493, - 3509, 3514, 3519, 3527, 3527, 3538, 3538, 3548, 3551, 3564, - 3586, 3613, 3617, 3623, 3628, 3639, 3643, 3649, 3655, 3666, - 3669, 3676, 3680, 3681, 3687, 3688, 3689, 3690, 3691, 3692, - 3693, 3695, 3701, 3710, 3711, 3715, 3711, 3727, 3728, 3732, - 3732, 3739, 3739, 3753, 3756, 3764, 3772, 3783, 3784, 3788, - 3792, 3800, 3807, 3811, 3819, 3823, 3836, 3840, 3848, 3848, - 3868, 3871, 3877, 3889, 3901, 3905, 3913, 3913, 3928, 3928, - 3946, 3946, 3967, 3970, 3976, 3979, 3985, 3989, 3996, 4001, - 4006, 4013, 4016, 4020, 4025, 4029, 4039, 4043, 4052, 4055, - 4059, 4068, 4068, 4110, 4115, 4118, 4123, 4126, 4133, 4136, - 4141, 4144, 4149, 4152, 4157, 4160, 4165, 4169, 4174, 4178, - 4183, 4187, 4194, 4197, 4202, 4205, 4208, 4211, 4214, 4219, - 4228, 4239, 4244, 4252, 4256, 4261, 4265, 4270, 4274, 4279, - 4283, 4290, 4293, 4298, 4301, 4304, 4307, 4312, 4320, 4330, - 4334, 4339, 4343, 4348, 4352, 4359, 4362, 4367, 4372, 4375, - 4381, 4384, 4389, 4392 + 1271, 1278, 1285, 1293, 1301, 1311, 1318, 1329, 1335, 1338, + 1345, 1349, 1353, 1362, 1372, 1375, 1386, 1389, 1392, 1396, + 1400, 1405, 1409, 1412, 1417, 1421, 1426, 1435, 1439, 1444, + 1450, 1456, 1463, 1468, 1476, 1482, 1494, 1508, 1514, 1519, + 1527, 1535, 1543, 1551, 1559, 1567, 1575, 1583, 1590, 1597, + 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1635, 1639, 1643, + 1647, 1653, 1664, 1671, 1674, 1683, 1688, 1698, 1703, 1711, + 1715, 1725, 1728, 1734, 1740, 1747, 1757, 1761, 1765, 1769, + 1774, 1778, 1783, 1788, 1793, 1798, 1803, 1808, 1813, 1818, + 1823, 1829, 1835, 1841, 1846, 1851, 1856, 1861, 1866, 1871, + 1876, 1881, 1886, 1891, 1896, 1902, 1909, 1914, 1919, 1924, + 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964, 1972, 1980, + 1988, 1994, 2000, 2006, 2012, 2018, 2024, 2030, 2036, 2042, + 2048, 2054, 2060, 2066, 2072, 2078, 2084, 2090, 2096, 2102, + 2108, 2114, 2120, 2126, 2132, 2138, 2144, 2150, 2156, 2162, + 2168, 2174, 2180, 2186, 2194, 2202, 2210, 2218, 2226, 2234, + 2242, 2250, 2258, 2266, 2274, 2282, 2288, 2294, 2300, 2306, + 2312, 2318, 2324, 2330, 2336, 2342, 2348, 2354, 2360, 2366, + 2372, 2378, 2384, 2390, 2396, 2402, 2408, 2414, 2420, 2426, + 2432, 2438, 2444, 2450, 2456, 2462, 2468, 2474, 2480, 2486, + 2492, 2498, 2502, 2506, 2510, 2515, 2521, 2526, 2531, 2536, + 2541, 2546, 2551, 2557, 2562, 2567, 2572, 2577, 2582, 2588, + 2594, 2600, 2606, 2612, 2618, 2624, 2630, 2636, 2642, 2648, + 2654, 2660, 2666, 2671, 2676, 2681, 2686, 2691, 2696, 2702, + 2707, 2712, 2717, 2722, 2727, 2732, 2737, 2743, 2748, 2753, + 2758, 2763, 2768, 2773, 2778, 2783, 2788, 2793, 2798, 2803, + 2808, 2813, 2819, 2824, 2829, 2835, 2841, 2846, 2851, 2856, + 2862, 2867, 2872, 2877, 2883, 2888, 2893, 2898, 2904, 2909, + 2914, 2919, 2925, 2931, 2937, 2943, 2948, 2954, 2960, 2966, + 2971, 2976, 2981, 2986, 2991, 2997, 3002, 3007, 3012, 3018, + 3023, 3028, 3033, 3039, 3044, 3049, 3054, 3060, 3065, 3070, + 3075, 3081, 3086, 3091, 3096, 3102, 3107, 3112, 3117, 3123, + 3128, 3133, 3138, 3144, 3149, 3154, 3159, 3165, 3170, 3175, + 3180, 3186, 3191, 3196, 3201, 3207, 3212, 3217, 3222, 3228, + 3233, 3238, 3243, 3249, 3254, 3259, 3264, 3270, 3275, 3280, + 3285, 3291, 3296, 3301, 3306, 3311, 3316, 3321, 3326, 3331, + 3336, 3341, 3346, 3351, 3356, 3361, 3366, 3371, 3376, 3381, + 3386, 3391, 3396, 3401, 3406, 3411, 3417, 3423, 3429, 3435, + 3442, 3449, 3455, 3461, 3467, 3473, 3479, 3485, 3491, 3496, + 3501, 3517, 3522, 3527, 3535, 3535, 3546, 3546, 3556, 3559, + 3572, 3594, 3621, 3625, 3631, 3636, 3647, 3651, 3657, 3663, + 3674, 3677, 3684, 3688, 3689, 3695, 3696, 3697, 3698, 3699, + 3700, 3701, 3703, 3709, 3718, 3719, 3723, 3719, 3735, 3736, + 3740, 3740, 3747, 3747, 3761, 3764, 3772, 3780, 3791, 3792, + 3796, 3800, 3808, 3815, 3819, 3827, 3831, 3844, 3848, 3856, + 3856, 3876, 3879, 3885, 3897, 3909, 3913, 3921, 3921, 3936, + 3936, 3954, 3954, 3975, 3978, 3984, 3987, 3993, 3997, 4004, + 4009, 4014, 4021, 4024, 4028, 4033, 4037, 4047, 4051, 4060, + 4063, 4067, 4076, 4076, 4118, 4123, 4126, 4131, 4134, 4141, + 4144, 4149, 4152, 4157, 4160, 4165, 4168, 4173, 4177, 4182, + 4186, 4191, 4195, 4202, 4205, 4210, 4213, 4216, 4219, 4222, + 4227, 4236, 4247, 4252, 4260, 4264, 4269, 4273, 4278, 4282, + 4287, 4291, 4298, 4301, 4306, 4309, 4312, 4315, 4320, 4328, + 4338, 4342, 4347, 4351, 4356, 4360, 4367, 4370, 4375, 4380, + 4383, 4389, 4392, 4397, 4400 }; #endif @@ -1319,10 +1321,10 @@ static const char *const yytname[] = "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", - "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", "PERTASKNV", "PRECISE", - "$accept", "variable_identifier", "primary_expression", - "postfix_expression", "integer_expression", "function_call", - "function_call_or_method", "function_call_generic", + "PERVERTEXEXT", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", + "PERTASKNV", "PRECISE", "$accept", "variable_identifier", + "primary_expression", "postfix_expression", "integer_expression", + "function_call", "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -1429,16 +1431,16 @@ static const yytype_int16 yytoknum[] = 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709 + 705, 706, 707, 708, 709, 710 }; #endif -#define YYPACT_NINF (-859) +#define YYPACT_NINF (-865) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-570) +#define YYTABLE_NINF (-571) #define yytable_value_is_error(Yyn) \ 0 @@ -1447,99 +1449,99 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4548, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -312, -274, -244, -212, -208, - -201, -181, -169, -859, -859, -194, -859, -859, -859, -859, - -859, -285, -859, -859, -859, -859, -859, -317, -859, -859, - -859, -859, -859, -859, -132, -73, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -329, -70, - -158, -145, 7712, -221, -859, -164, -859, -859, -859, -859, - 5452, -859, -859, -859, -859, -68, -859, -859, 932, -859, - -859, 7712, -55, -859, -859, -859, 5904, -80, -154, -150, - -142, -135, -130, -80, -129, -79, 12060, -859, -45, -354, - -76, -859, -308, -859, -43, -40, 7712, -859, -859, -859, - 7712, -72, -71, -859, -265, -859, -257, -859, -859, 10761, - -39, -859, -859, -859, -35, -69, 7712, -859, -42, -38, - -37, -859, -302, -859, -235, -32, -33, -28, -27, -217, - -26, -23, -22, -21, -20, -16, -216, -29, -15, -31, - -303, -859, -13, 7712, -859, -14, -859, -214, -859, -859, - -205, 9029, -859, -279, 1384, -859, -859, -859, -859, -859, - -39, -299, -859, 9462, -275, -859, -34, -859, -137, 10761, - 10761, -859, 10761, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -248, -859, -859, -859, -3, -203, 11194, -1, - -859, 10761, -859, -859, -310, 3, -40, 1, -859, -309, - -80, -859, -30, -859, -319, 5, -128, 10761, -124, -859, - -157, -122, 10761, -120, 10, -118, -80, -859, 11627, -859, - -116, 10761, 7, -79, -859, 7712, -25, 6356, -859, 7712, - 10761, -859, -354, -859, -19, -859, -859, -78, -263, -94, - -298, -52, -18, -8, -12, 29, 28, -301, 15, 9895, - -859, 16, -859, -859, 19, 12, 17, -859, 20, 23, - 18, 10328, 24, 10761, 21, 22, 25, 27, 30, -215, - -859, -859, -117, -859, -70, 26, 34, -859, -859, -859, - -859, -859, 1836, -859, -859, -859, -859, -859, -859, -859, - -859, -859, 5000, 3, 9462, -264, 8163, -859, -859, 9462, - 7712, -859, -11, -859, -859, -859, -195, -859, -859, 10761, - -6, -859, -859, 10761, 37, -859, -859, -859, 10761, -859, - -859, -859, -322, -859, -859, -192, 35, -859, -859, -859, - -859, -859, -859, -179, -859, -178, -859, -859, -177, 32, - -859, -859, -859, -859, -175, -859, -174, -859, -167, 36, - -859, -166, 38, -165, 35, -859, -163, -859, 45, 46, - -859, -859, -25, -39, -115, -859, -859, -859, 6808, -859, - -859, -859, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, - 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, 10761, - 10761, -859, -859, -859, 51, -859, 2288, -859, -859, -859, - 2288, -859, 10761, -859, -859, -88, 10761, -63, -859, -859, - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, 10761, 10761, -859, -859, -859, -859, - -859, -859, -859, 9462, -859, -859, -108, -859, 7260, -859, - -859, 52, 53, -859, -859, -859, -859, -859, -138, -136, - -859, -304, -859, -319, -859, -319, -859, 10761, 10761, -859, - -157, -859, -157, -859, 10761, 10761, -859, 65, 10, -859, - 11627, -859, 10761, -859, -859, -86, 3, -25, -859, -859, - -859, -859, -859, -78, -78, -263, -263, -94, -94, -94, - -94, -298, -298, -52, -18, -8, -12, 29, 28, 10761, - -859, 2288, 4096, 31, 3644, -156, -859, -155, -859, -859, - -859, -859, -859, 8596, -859, -859, -859, 66, -859, 39, - -859, -153, -859, -151, -859, -148, -859, -146, -859, -144, - -143, -859, -859, -859, -61, 64, 53, 40, 72, 74, - -859, -859, 4096, 75, -859, -859, -859, -859, -859, -859, - -859, -859, -859, -859, -859, 10761, -859, 71, 2740, 10761, - -859, 73, 81, 41, 80, 3192, -859, 83, -859, 9462, - -859, -859, -859, -141, 10761, 2740, 75, -859, -859, 2288, - -859, 78, 53, -859, -859, 2288, 86, -859, -859 + 4557, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -306, -260, -237, -110, -102, + -100, -83, -77, -865, -865, -301, -865, -865, -865, -865, + -865, -106, -865, -865, -865, -865, -865, -309, -865, -865, + -865, -865, -865, -865, -66, -54, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -328, + -116, -50, -55, 7728, -245, -865, -82, -865, -865, -865, + -865, 5463, -865, -865, -865, -865, -63, -865, -865, 933, + -865, -865, 7728, -57, -865, -865, -865, 5916, -80, -334, + -251, -157, -149, -141, -80, -140, -78, 12077, -865, -47, + -351, -76, -865, -269, -865, -45, -41, 7728, -865, -865, + -865, 7728, -74, -73, -865, -263, -865, -224, -865, -865, + 10778, -38, -865, -865, -865, -36, -69, 7728, -865, -42, + -40, -37, -865, -271, -865, -256, -33, -34, -30, -28, + -202, -27, -24, -23, -22, -21, -17, -199, -10, -15, + -29, -303, -865, -14, 7728, -865, -11, -865, -195, -865, + -865, -194, 9046, -865, -268, 1386, -865, -865, -865, -865, + -865, -38, -304, -865, 9479, -248, -865, -35, -865, -133, + 10778, 10778, -865, 10778, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -274, -865, -865, -865, -6, -187, 11211, + 3, -865, 10778, -865, -865, -297, -2, -41, 4, -865, + -310, -80, -865, -31, -865, -321, 6, -130, 10778, -129, + -865, -166, -128, 10778, -124, 7, -122, -80, -865, 11644, + -865, -120, 10778, 10, -78, -865, 7728, -26, 6369, -865, + 7728, 10778, -865, -351, -865, -20, -865, -865, -79, -217, + -200, -299, -56, -13, -9, -3, 21, 26, -307, 15, + 9912, -865, 14, -865, -865, 20, 12, 13, -865, 24, + 25, 16, 10345, 27, 10778, 23, 18, 19, 22, 28, + -222, -865, -865, -132, -865, -116, 33, 35, -865, -865, + -865, -865, -865, 1839, -865, -865, -865, -865, -865, -865, + -865, -865, -865, 5010, -2, 9479, -225, 8180, -865, -865, + 9479, 7728, -865, 8, -865, -865, -865, -184, -865, -865, + 10778, 29, -865, -865, 10778, 38, -865, -865, -865, 10778, + -865, -865, -865, -312, -865, -865, -183, 31, -865, -865, + -865, -865, -865, -865, -182, -865, -180, -865, -865, -179, + 34, -865, -865, -865, -865, -175, -865, -172, -865, -171, + 39, -865, -167, 40, -163, 31, -865, -160, -865, 44, + 48, -865, -865, -26, -38, -121, -865, -865, -865, 6822, + -865, -865, -865, 10778, 10778, 10778, 10778, 10778, 10778, 10778, + 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, + 10778, 10778, -865, -865, -865, 53, -865, 2292, -865, -865, + -865, 2292, -865, 10778, -865, -865, -119, 10778, -198, -865, + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, 10778, 10778, -865, -865, -865, + -865, -865, -865, -865, 9479, -865, -865, -174, -865, 7275, + -865, -865, 61, 59, -865, -865, -865, -865, -865, -254, + -142, -865, -308, -865, -321, -865, -321, -865, 10778, 10778, + -865, -166, -865, -166, -865, 10778, 10778, -865, 37, 7, + -865, 11644, -865, 10778, -865, -865, -92, -2, -26, -865, + -865, -865, -865, -865, -79, -79, -217, -217, -200, -200, + -200, -200, -299, -299, -56, -13, -9, -3, 21, 26, + 10778, -865, 2292, 4104, 30, 3651, -159, -865, -158, -865, + -865, -865, -865, -865, 8613, -865, -865, -865, 71, -865, + -12, -865, -156, -865, -155, -865, -148, -865, -147, -865, + -145, -144, -865, -865, -865, -65, 67, 59, 41, 72, + 75, -865, -865, 4104, 76, -865, -865, -865, -865, -865, + -865, -865, -865, -865, -865, -865, 10778, -865, 74, 2745, + 10778, -865, 66, 80, 36, 81, 3198, -865, 82, -865, + 9479, -865, -865, -865, -143, 10778, 2745, 76, -865, -865, + 2292, -865, 78, 59, -865, -865, 2292, 84, -865, -865 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1547,137 +1549,137 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 166, 219, 217, 218, 216, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 220, 221, 222, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 345, 346, 347, 348, 349, 350, 351, 371, 372, 373, - 374, 375, 376, 377, 386, 399, 400, 387, 388, 390, - 389, 391, 392, 393, 394, 395, 396, 397, 398, 174, - 175, 245, 246, 244, 247, 254, 255, 252, 253, 250, - 251, 248, 249, 277, 278, 279, 289, 290, 291, 274, - 275, 276, 286, 287, 288, 271, 272, 273, 283, 284, - 285, 268, 269, 270, 280, 281, 282, 256, 257, 258, - 292, 293, 294, 259, 260, 261, 304, 305, 306, 262, - 263, 264, 316, 317, 318, 265, 266, 267, 328, 329, - 330, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 331, 332, - 333, 334, 335, 336, 337, 338, 339, 343, 340, 341, - 342, 524, 525, 526, 355, 356, 379, 382, 344, 353, - 354, 370, 352, 401, 402, 405, 406, 407, 409, 410, - 411, 413, 414, 415, 417, 418, 514, 515, 378, 380, - 381, 357, 358, 359, 403, 360, 364, 365, 368, 408, - 412, 416, 361, 362, 366, 367, 404, 363, 369, 448, - 450, 451, 452, 454, 455, 456, 458, 459, 460, 462, - 463, 464, 466, 467, 468, 470, 471, 472, 474, 475, - 476, 478, 479, 480, 482, 483, 484, 486, 487, 488, - 490, 491, 449, 453, 457, 461, 465, 473, 477, 481, - 469, 485, 489, 492, 493, 494, 495, 496, 497, 498, - 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, - 509, 510, 511, 512, 513, 383, 384, 385, 419, 428, - 430, 424, 429, 431, 432, 434, 435, 436, 438, 439, - 440, 442, 443, 444, 446, 447, 420, 421, 422, 433, - 423, 425, 426, 427, 437, 441, 445, 516, 517, 520, - 521, 522, 523, 518, 519, 0, 0, 0, 0, 0, - 0, 0, 0, 164, 165, 0, 620, 137, 530, 531, - 532, 0, 529, 170, 168, 169, 167, 0, 215, 171, - 172, 173, 139, 138, 0, 199, 180, 182, 178, 184, - 186, 181, 183, 179, 185, 187, 176, 177, 201, 188, - 195, 196, 197, 198, 189, 190, 191, 192, 193, 194, - 140, 141, 142, 143, 144, 145, 152, 619, 0, 621, - 0, 114, 113, 0, 125, 130, 159, 158, 156, 160, - 0, 153, 155, 161, 135, 211, 157, 528, 0, 616, - 618, 0, 0, 162, 163, 527, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 535, 0, 0, - 0, 99, 0, 94, 0, 109, 0, 121, 115, 123, - 0, 124, 0, 97, 131, 102, 0, 154, 136, 0, - 204, 210, 1, 617, 0, 0, 0, 96, 0, 0, - 0, 628, 0, 680, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 626, - 0, 624, 0, 0, 533, 149, 151, 0, 147, 202, - 0, 0, 100, 0, 0, 622, 110, 116, 120, 122, - 118, 126, 117, 0, 132, 105, 0, 103, 0, 0, - 0, 9, 0, 43, 42, 44, 41, 5, 6, 7, - 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, - 3, 18, 37, 20, 25, 26, 0, 0, 30, 0, - 213, 0, 36, 34, 0, 205, 111, 0, 95, 0, - 0, 678, 0, 636, 0, 0, 0, 0, 0, 653, - 0, 0, 0, 0, 0, 0, 0, 673, 0, 651, - 0, 0, 0, 0, 98, 0, 0, 0, 537, 0, - 0, 146, 0, 200, 0, 206, 45, 49, 52, 55, - 60, 63, 65, 67, 69, 71, 73, 75, 0, 0, - 101, 564, 573, 577, 0, 0, 0, 598, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 45, - 78, 91, 0, 551, 0, 161, 135, 554, 575, 553, - 561, 552, 0, 555, 556, 579, 557, 586, 558, 559, - 594, 560, 0, 119, 0, 127, 0, 545, 134, 0, - 0, 107, 0, 104, 38, 39, 0, 22, 23, 0, - 0, 28, 27, 0, 215, 31, 33, 40, 0, 212, - 112, 682, 0, 683, 629, 0, 0, 681, 648, 644, - 645, 646, 647, 0, 642, 0, 93, 649, 0, 0, - 663, 664, 665, 666, 0, 661, 0, 667, 0, 0, - 669, 0, 0, 0, 2, 677, 0, 675, 0, 0, - 623, 625, 0, 543, 0, 541, 536, 538, 0, 150, - 148, 203, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 167, 220, 218, 219, 217, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 221, 222, 223, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 346, 347, 348, 349, 350, 351, 352, 372, 373, 374, + 375, 376, 377, 378, 387, 400, 401, 388, 389, 391, + 390, 392, 393, 394, 395, 396, 397, 398, 399, 175, + 176, 246, 247, 245, 248, 255, 256, 253, 254, 251, + 252, 249, 250, 278, 279, 280, 290, 291, 292, 275, + 276, 277, 287, 288, 289, 272, 273, 274, 284, 285, + 286, 269, 270, 271, 281, 282, 283, 257, 258, 259, + 293, 294, 295, 260, 261, 262, 305, 306, 307, 263, + 264, 265, 317, 318, 319, 266, 267, 268, 329, 330, + 331, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 332, 333, + 334, 335, 336, 337, 338, 339, 340, 344, 341, 342, + 343, 525, 526, 527, 356, 357, 380, 383, 345, 354, + 355, 371, 353, 402, 403, 406, 407, 408, 410, 411, + 412, 414, 415, 416, 418, 419, 515, 516, 379, 381, + 382, 358, 359, 360, 404, 361, 365, 366, 369, 409, + 413, 417, 362, 363, 367, 368, 405, 364, 370, 449, + 451, 452, 453, 455, 456, 457, 459, 460, 461, 463, + 464, 465, 467, 468, 469, 471, 472, 473, 475, 476, + 477, 479, 480, 481, 483, 484, 485, 487, 488, 489, + 491, 492, 450, 454, 458, 462, 466, 474, 478, 482, + 470, 486, 490, 493, 494, 495, 496, 497, 498, 499, + 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, + 510, 511, 512, 513, 514, 384, 385, 386, 420, 429, + 431, 425, 430, 432, 433, 435, 436, 437, 439, 440, + 441, 443, 444, 445, 447, 448, 421, 422, 423, 434, + 424, 426, 427, 428, 438, 442, 446, 517, 518, 521, + 522, 523, 524, 519, 520, 0, 0, 0, 0, 0, + 0, 0, 0, 165, 166, 0, 621, 137, 531, 532, + 533, 0, 530, 171, 169, 170, 168, 0, 216, 172, + 173, 174, 139, 138, 0, 200, 181, 183, 179, 185, + 187, 182, 184, 180, 186, 188, 177, 178, 202, 189, + 196, 197, 198, 199, 190, 191, 192, 193, 194, 195, + 140, 141, 143, 142, 144, 145, 146, 153, 620, 0, + 622, 0, 114, 113, 0, 125, 130, 160, 159, 157, + 161, 0, 154, 156, 162, 135, 212, 158, 529, 0, + 617, 619, 0, 0, 163, 164, 528, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, + 0, 0, 99, 0, 94, 0, 109, 0, 121, 115, + 123, 0, 124, 0, 97, 131, 102, 0, 155, 136, + 0, 205, 211, 1, 618, 0, 0, 0, 96, 0, + 0, 0, 629, 0, 681, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 627, 0, 625, 0, 0, 534, 150, 152, 0, 148, + 203, 0, 0, 100, 0, 0, 623, 110, 116, 120, + 122, 118, 126, 117, 0, 132, 105, 0, 103, 0, + 0, 0, 9, 0, 43, 42, 44, 41, 5, 6, + 7, 8, 2, 16, 14, 15, 17, 10, 11, 12, + 13, 3, 18, 37, 20, 25, 26, 0, 0, 30, + 0, 214, 0, 36, 34, 0, 206, 111, 0, 95, + 0, 0, 679, 0, 637, 0, 0, 0, 0, 0, + 654, 0, 0, 0, 0, 0, 0, 0, 674, 0, + 652, 0, 0, 0, 0, 98, 0, 0, 0, 538, + 0, 0, 147, 0, 201, 0, 207, 45, 49, 52, + 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, + 0, 101, 565, 574, 578, 0, 0, 0, 599, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 207, 208, 0, 563, 0, 596, 609, 608, - 0, 600, 0, 612, 610, 0, 0, 0, 593, 613, - 614, 615, 562, 81, 82, 84, 83, 86, 87, 88, - 89, 90, 85, 80, 0, 0, 578, 574, 576, 580, - 587, 595, 129, 0, 548, 549, 0, 133, 0, 108, - 4, 0, 24, 21, 32, 214, 632, 634, 0, 0, - 679, 0, 638, 0, 637, 0, 640, 0, 0, 655, - 0, 654, 0, 657, 0, 0, 659, 0, 0, 674, - 0, 671, 0, 652, 627, 0, 544, 0, 539, 534, - 46, 47, 48, 51, 50, 53, 54, 58, 59, 56, - 57, 61, 62, 64, 66, 68, 70, 72, 74, 0, - 209, 565, 0, 0, 0, 0, 611, 0, 592, 79, - 92, 128, 546, 0, 106, 19, 630, 0, 631, 0, - 643, 0, 650, 0, 662, 0, 668, 0, 670, 0, - 0, 676, 540, 542, 0, 0, 584, 0, 0, 0, - 603, 602, 605, 571, 588, 547, 550, 633, 635, 639, - 641, 656, 658, 660, 672, 0, 566, 0, 0, 0, - 604, 0, 0, 583, 0, 0, 581, 0, 77, 0, - 568, 597, 567, 0, 606, 0, 571, 570, 572, 590, - 585, 0, 607, 601, 582, 591, 0, 599, 589 + 45, 78, 91, 0, 552, 0, 162, 135, 555, 576, + 554, 562, 553, 0, 556, 557, 580, 558, 587, 559, + 560, 595, 561, 0, 119, 0, 127, 0, 546, 134, + 0, 0, 107, 0, 104, 38, 39, 0, 22, 23, + 0, 0, 28, 27, 0, 216, 31, 33, 40, 0, + 213, 112, 683, 0, 684, 630, 0, 0, 682, 649, + 645, 646, 647, 648, 0, 643, 0, 93, 650, 0, + 0, 664, 665, 666, 667, 0, 662, 0, 668, 0, + 0, 670, 0, 0, 0, 2, 678, 0, 676, 0, + 0, 624, 626, 0, 544, 0, 542, 537, 539, 0, + 151, 149, 204, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 76, 208, 209, 0, 564, 0, 597, 610, + 609, 0, 601, 0, 613, 611, 0, 0, 0, 594, + 614, 615, 616, 563, 81, 82, 84, 83, 86, 87, + 88, 89, 90, 85, 80, 0, 0, 579, 575, 577, + 581, 588, 596, 129, 0, 549, 550, 0, 133, 0, + 108, 4, 0, 24, 21, 32, 215, 633, 635, 0, + 0, 680, 0, 639, 0, 638, 0, 641, 0, 0, + 656, 0, 655, 0, 658, 0, 0, 660, 0, 0, + 675, 0, 672, 0, 653, 628, 0, 545, 0, 540, + 535, 46, 47, 48, 51, 50, 53, 54, 58, 59, + 56, 57, 61, 62, 64, 66, 68, 70, 72, 74, + 0, 210, 566, 0, 0, 0, 0, 612, 0, 593, + 79, 92, 128, 547, 0, 106, 19, 631, 0, 632, + 0, 644, 0, 651, 0, 663, 0, 669, 0, 671, + 0, 0, 677, 541, 543, 0, 0, 585, 0, 0, + 0, 604, 603, 606, 572, 589, 548, 551, 634, 636, + 640, 642, 657, 659, 661, 673, 0, 567, 0, 0, + 0, 605, 0, 0, 584, 0, 0, 582, 0, 77, + 0, 569, 598, 568, 0, 607, 0, 572, 571, 573, + 591, 586, 0, 608, 602, 583, 592, 0, 600, 590 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -859, -859, -859, -859, -859, -859, -859, -859, -859, -859, - -859, -859, -209, -859, -418, -417, -602, -421, -291, -284, - -286, -283, -281, -287, -859, -473, -859, -490, -859, -497, - -520, 13, -859, -859, -859, 14, -394, -859, -859, 33, - 42, 44, -859, -859, -395, -859, -859, -859, -859, -121, - -859, -381, -369, -859, 9, -859, 0, -424, -859, -859, - -859, -859, 113, -859, -859, -859, -545, -549, -252, -365, - -617, -859, -391, -618, -858, -859, -450, -859, -859, -459, - -458, -859, -859, 43, -721, -387, -859, -173, -859, -422, - -859, -170, -859, -859, -859, -859, -168, -859, -859, -859, - -859, -859, -859, -859, -859, 67, -859, -859, 2, -859, - -97, -300, -386, -859, -859, -859, -326, -323, -327, -859, - -859, -330, -325, -328, -332, -859, -331, -334, -859, -390, - -530 + -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, + -865, -865, -211, -865, -423, -422, -501, -426, -287, -286, + -285, -284, -288, -282, -865, -475, -865, -490, -865, -497, + -525, 11, -865, -865, -865, 5, -385, -865, -865, 32, + 42, 45, -865, -865, -399, -865, -865, -865, -865, -127, + -865, -382, -367, -865, 9, -865, 0, -425, -865, -865, + -865, -865, 119, -865, -865, -865, -544, -549, -252, -366, + -622, -865, -391, -611, -864, -865, -452, -865, -865, -461, + -460, -865, -865, 43, -716, -387, -865, -173, -865, -424, + -865, -169, -865, -865, -865, -865, -168, -865, -865, -865, + -865, -865, -865, -865, -865, 63, -865, -865, 2, -865, + -98, -272, -448, -865, -865, -865, -329, -324, -327, -865, + -865, -332, -326, -333, -331, -865, -330, -336, -865, -392, + -529 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 520, 521, 522, 781, 523, 524, 525, 526, 527, - 528, 529, 609, 531, 577, 578, 579, 580, 581, 582, - 583, 584, 585, 586, 587, 610, 839, 611, 764, 612, - 695, 613, 378, 640, 498, 614, 380, 381, 382, 427, - 428, 429, 383, 384, 385, 386, 387, 388, 477, 478, - 389, 390, 391, 392, 532, 480, 533, 483, 440, 441, - 534, 395, 396, 397, 569, 473, 567, 568, 704, 705, - 638, 776, 617, 618, 619, 620, 621, 736, 875, 911, - 903, 904, 905, 912, 622, 623, 624, 625, 906, 878, - 626, 627, 907, 926, 628, 629, 630, 842, 740, 844, - 882, 901, 902, 631, 398, 399, 400, 424, 632, 470, - 471, 450, 451, 788, 789, 402, 673, 674, 678, 403, - 404, 684, 685, 688, 691, 405, 696, 697, 406, 452, - 453 + -1, 521, 522, 523, 782, 524, 525, 526, 527, 528, + 529, 530, 610, 532, 578, 579, 580, 581, 582, 583, + 584, 585, 586, 587, 588, 611, 840, 612, 765, 613, + 696, 614, 379, 641, 499, 615, 381, 382, 383, 428, + 429, 430, 384, 385, 386, 387, 388, 389, 478, 479, + 390, 391, 392, 393, 533, 481, 534, 484, 441, 442, + 535, 396, 397, 398, 570, 474, 568, 569, 705, 706, + 639, 777, 618, 619, 620, 621, 622, 737, 876, 912, + 904, 905, 906, 913, 623, 624, 625, 626, 907, 879, + 627, 628, 908, 927, 629, 630, 631, 843, 741, 845, + 883, 902, 903, 632, 399, 400, 401, 425, 633, 471, + 472, 451, 452, 789, 790, 403, 674, 675, 679, 404, + 405, 685, 686, 689, 692, 406, 697, 698, 407, 453, + 454 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1685,190 +1687,145 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 394, 430, 401, 637, 768, 646, 445, 444, 588, 393, - 494, 445, 667, 377, 379, 841, 535, 772, 707, 775, - 446, 437, 777, 466, 708, 446, 786, 677, 667, 668, - 421, 475, 687, 719, 720, 730, 417, 407, 655, 661, - 910, 699, 662, 481, 661, 430, 658, 918, 541, 562, - 709, 482, 481, 563, 542, 476, 422, 910, 659, 634, - 787, 437, 669, 670, 671, 672, 633, 635, 418, 721, - 722, 731, 589, 663, 676, 408, 589, 437, 663, 676, - 590, 647, 648, 639, 492, 676, 481, 589, 676, 328, - 329, 330, 565, 493, 773, 778, 495, 676, 715, 496, - 716, -35, 497, 649, 745, 409, 747, 650, 456, 458, - 460, 462, 464, 465, 468, 543, 734, 827, 828, 829, - 830, 544, 843, 753, 754, 755, 756, 757, 758, 759, - 760, 761, 762, 549, 557, 432, 571, 410, 433, 550, - 558, 411, 572, 763, 637, 573, 637, 652, 412, 637, - 665, 574, 782, 653, 664, 780, 851, 415, 790, 707, - 664, 765, 664, 784, 542, 664, 693, 664, 413, 664, - 664, 792, 794, 796, 664, 799, 801, 793, 795, 797, - 414, 800, 802, 803, 806, 809, 565, 811, 565, 804, - 807, 810, 425, 812, 883, 884, 437, 889, 925, 890, - 765, 765, 891, 793, 892, 797, 893, 894, 800, 921, - 804, 426, 807, 812, 856, 765, 858, 419, 857, 642, - 859, 434, 643, 768, 680, 681, 682, 683, 454, 707, - 530, 455, 457, 717, 718, 455, 886, 445, 444, 765, - 459, 817, 766, 455, 818, 845, 852, 461, 853, 847, - 455, 446, 463, 467, 675, 455, 455, 455, 679, 565, - 686, 455, 689, 455, 692, 455, 698, 455, 765, 455, - 817, 846, 576, 872, 849, 850, 420, 862, 677, 816, - 667, 723, 724, 637, 866, 687, 712, 713, 714, 423, - 644, 645, 920, 765, 848, 765, 895, 823, 824, 439, - 825, 826, 831, 832, 447, 449, 469, 768, 474, 479, - 484, 325, 481, 490, 491, 536, 537, 538, 561, 540, - 539, 559, 657, 546, 676, 676, 545, 565, 547, 548, - 551, 676, 676, 552, 553, 554, 555, 676, 576, 676, - 556, 560, 874, 576, 570, 876, 564, 651, 656, 576, - 492, 641, 576, 725, 589, 666, 662, 727, 690, 700, - 703, 576, 726, 637, 728, 729, 711, 732, 737, 741, - 735, 738, 742, 746, 779, -36, 739, 743, 748, 783, - 576, 749, 431, -34, 750, 876, 751, -29, 798, 752, - 438, 393, 805, 791, 808, 813, 814, 565, 394, 393, - 401, 394, 913, 840, 855, 908, 394, 393, 401, 765, - 393, 377, 379, 868, 887, 393, 472, 922, 896, 637, - 448, 888, 898, 899, 879, 897, 431, 486, -569, 909, - 431, 915, 914, 591, 833, 393, 919, 927, 916, 393, - 928, 835, 834, 838, 416, 836, 438, 877, 837, 785, - 815, 710, 873, 880, 917, 393, 923, 881, 924, 769, - 900, 446, 770, 488, 771, 443, 701, 485, 487, 861, - 860, 863, 865, 566, 489, 864, 869, 867, 871, 870, - 0, 0, 393, 0, 616, 0, 0, 877, 0, 0, - 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, - 0, 446, 0, 820, 821, 822, 576, 576, 576, 576, - 576, 576, 576, 576, 576, 576, 576, 576, 576, 576, - 576, 576, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 660, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 702, 0, 566, 0, 566, - 0, 0, 0, 0, 393, 0, 393, 0, 393, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 576, 576, - 0, 0, 0, 0, 0, 576, 576, 0, 0, 0, - 0, 576, 0, 576, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, - 0, 615, 394, 0, 0, 0, 0, 0, 0, 0, - 566, 393, 0, 0, 0, 0, 0, 0, 0, 393, + 395, 431, 402, 446, 638, 380, 647, 589, 446, 394, + 495, 378, 769, 773, 668, 776, 536, 445, 778, 708, + 447, 842, 467, 678, 438, 447, 709, 669, 688, 731, + 668, 422, 720, 721, 476, 911, 787, 700, 662, 656, + 662, 663, 919, 408, 418, 431, 710, 482, 455, 563, + 416, 456, 911, 564, 635, 648, 649, 423, 477, 659, + 670, 671, 672, 673, 438, 732, 634, 636, 722, 723, + 788, 660, 664, 677, 664, -35, 419, 650, 677, 542, + 438, 651, 482, 590, 677, 543, 493, 677, 482, 409, + 483, 591, 566, 665, 544, 494, 677, 779, 857, 665, + 545, 665, 858, 590, 665, 746, 665, 748, 665, 665, + 640, 433, 410, 665, 434, 735, 754, 755, 756, 757, + 758, 759, 760, 761, 762, 763, 590, 718, 719, 496, + 844, 458, 497, 774, 456, 498, 764, 457, 459, 461, + 463, 465, 466, 469, 716, 638, 717, 638, 550, 666, + 638, 558, 852, 783, 551, 572, 574, 559, 766, 849, + 708, 573, 575, 653, 785, 694, 781, 791, 793, 654, + 795, 797, 766, 543, 794, 800, 796, 798, 802, 804, + 853, 801, 854, 807, 803, 805, 566, 810, 566, 808, + 812, 884, 885, 811, 890, 891, 813, 766, 766, 438, + 794, 798, 892, 893, 926, 894, 895, 922, 801, 805, + 859, 808, 813, 766, 860, 681, 682, 683, 684, 828, + 829, 830, 831, 643, 766, 460, 644, 767, 456, 531, + 708, 769, 887, 462, 446, 818, 456, 766, 819, 411, + 847, 464, 468, 424, 456, 456, 846, 412, 445, 413, + 848, 447, 676, 680, 687, 456, 456, 456, 690, 566, + 693, 456, 699, 456, 818, 456, 414, 873, 328, 329, + 330, 577, 415, 863, 678, 850, 851, 724, 725, 817, + 867, 688, 668, 420, 638, 713, 714, 715, 921, 645, + 646, 766, 896, 824, 825, 421, 826, 827, 832, 833, + 426, 427, 448, 435, 440, 450, 475, 470, 485, 480, + 325, 491, 492, 482, 537, 769, 538, 539, 540, 541, + 562, 658, 547, 677, 677, 546, 548, 566, 549, 552, + 677, 677, 553, 554, 555, 556, 677, 577, 677, 557, + 560, 561, 577, 875, 652, 565, 877, 571, 577, 590, + 642, 577, 657, 493, 667, 691, 729, 663, 726, 704, + 577, 727, 701, 730, 638, 712, 728, 733, 736, 738, + 889, 739, 740, 742, 743, 744, 747, 750, 751, 577, + 749, 752, -36, 432, -34, 869, 877, 753, -29, 792, + 799, 439, 394, 780, 814, 806, 809, 566, 815, 395, + 394, 402, 395, 914, 380, 841, 909, 395, 394, 402, + 378, 394, 449, 856, 784, 766, 394, 473, 923, 888, + 638, 897, 899, 880, 900, 915, 898, 432, 487, -570, + 916, 432, 910, 917, 592, 920, 394, 928, 929, 834, + 394, 835, 838, 836, 878, 837, 711, 439, 786, 839, + 417, 816, 874, 918, 881, 924, 394, 925, 882, 901, + 770, 447, 444, 489, 771, 772, 702, 862, 486, 488, + 861, 866, 864, 868, 567, 865, 490, 872, 870, 0, + 0, 871, 0, 394, 878, 617, 0, 0, 0, 0, + 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, + 0, 447, 821, 822, 823, 577, 577, 577, 577, 577, + 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, + 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 703, 0, 567, 0, + 567, 0, 0, 0, 0, 394, 0, 394, 0, 394, + 0, 0, 0, 0, 0, 0, 0, 577, 577, 0, + 0, 0, 0, 0, 577, 577, 0, 0, 0, 0, + 577, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 395, 0, 0, 0, 0, 0, 0, + 0, 567, 394, 0, 0, 0, 0, 0, 0, 0, + 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, - 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 616, 0, 0, 0, - 616, 0, 0, 0, 0, 615, 0, 0, 0, 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, + 0, 0, 0, 0, 0, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 566, 0, - 0, 0, 0, 0, 0, 0, 0, 393, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 617, 0, 0, + 0, 617, 0, 0, 0, 0, 616, 0, 0, 0, + 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, + 0, 0, 0, 0, 0, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 616, 616, 0, 616, 0, 401, 0, 0, 0, - 615, 615, 0, 615, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 617, 617, 0, 617, 0, 402, 0, 0, + 0, 616, 616, 0, 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 0, 0, 0, 0, 0, 0, 0, - 0, 615, 0, 0, 0, 0, 0, 0, 616, 0, - 0, 0, 0, 0, 0, 616, 0, 615, 0, 0, - 0, 0, 0, 0, 615, 616, 0, 0, 0, 616, - 0, 0, 0, 0, 615, 616, 0, 0, 615, 0, - 0, 0, 442, 0, 615, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, + 0, 0, 616, 0, 0, 0, 0, 0, 0, 617, + 0, 0, 0, 0, 0, 0, 617, 0, 616, 0, + 0, 0, 0, 0, 0, 616, 617, 0, 0, 0, + 617, 0, 0, 0, 0, 616, 617, 0, 0, 616, + 0, 0, 0, 443, 0, 616, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, - 0, 326, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, + 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 332, + 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 501, 502, 0, 325, 0, 591, 592, 0, - 0, 0, 0, 593, 503, 504, 505, 506, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, - 330, 331, 0, 0, 0, 507, 508, 509, 510, 511, - 332, 333, 334, 335, 336, 337, 338, 594, 595, 596, - 597, 0, 598, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 339, 340, 341, 342, 343, 344, 512, 513, - 514, 515, 516, 517, 518, 519, 345, 608, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 1, + 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, + 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -1901,110 +1858,65 @@ static const yytype_int16 yytable[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, + 322, 323, 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 501, 502, 0, 325, 0, 591, - 767, 0, 0, 0, 0, 593, 503, 504, 505, 506, + 0, 0, 0, 0, 502, 503, 0, 325, 0, 592, + 593, 0, 0, 0, 0, 594, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, - 328, 329, 330, 331, 0, 0, 0, 507, 508, 509, - 510, 511, 332, 333, 334, 335, 336, 337, 338, 594, - 595, 596, 597, 0, 598, 599, 600, 601, 602, 603, - 604, 605, 606, 607, 339, 340, 341, 342, 343, 344, - 512, 513, 514, 515, 516, 517, 518, 519, 345, 608, + 328, 329, 330, 331, 0, 0, 0, 508, 509, 510, + 511, 512, 332, 333, 334, 335, 336, 337, 338, 595, + 596, 597, 598, 0, 599, 600, 601, 602, 603, 604, + 605, 606, 607, 608, 339, 340, 341, 342, 343, 344, + 513, 514, 515, 516, 517, 518, 519, 520, 345, 609, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 499, 500, 0, + 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 501, 502, 0, 325, - 0, 591, 0, 0, 0, 0, 0, 593, 503, 504, - 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 328, 329, 330, 331, 0, 0, 0, 507, - 508, 509, 510, 511, 332, 333, 334, 335, 336, 337, - 338, 594, 595, 596, 597, 0, 598, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 339, 340, 341, 342, - 343, 344, 512, 513, 514, 515, 516, 517, 518, 519, - 345, 608, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 499, - 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 501, 502, - 0, 325, 0, 484, 0, 0, 0, 0, 0, 593, - 503, 504, 505, 506, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, - 0, 507, 508, 509, 510, 511, 332, 333, 334, 335, - 336, 337, 338, 594, 595, 596, 597, 0, 598, 599, - 600, 601, 602, 603, 604, 605, 606, 607, 339, 340, - 341, 342, 343, 344, 512, 513, 514, 515, 516, 517, - 518, 519, 345, 608, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, + 0, 0, 0, 0, 0, 0, 0, 502, 503, 0, + 325, 0, 592, 768, 0, 0, 0, 0, 594, 504, + 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 327, 328, 329, 330, 331, 0, 0, 0, + 508, 509, 510, 511, 512, 332, 333, 334, 335, 336, + 337, 338, 595, 596, 597, 598, 0, 599, 600, 601, + 602, 603, 604, 605, 606, 607, 608, 339, 340, 341, + 342, 343, 344, 513, 514, 515, 516, 517, 518, 519, + 520, 345, 609, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -2037,110 +1949,65 @@ static const yytype_int16 yytable[] = 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, + 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 501, 502, 0, 325, 0, 0, 0, 0, 0, 0, - 0, 593, 503, 504, 505, 506, 0, 0, 0, 0, + 502, 503, 0, 325, 0, 592, 0, 0, 0, 0, + 0, 594, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, - 0, 0, 0, 507, 508, 509, 510, 511, 332, 333, - 334, 335, 336, 337, 338, 594, 595, 596, 597, 0, - 598, 599, 600, 601, 602, 603, 604, 605, 606, 607, - 339, 340, 341, 342, 343, 344, 512, 513, 514, 515, - 516, 517, 518, 519, 345, 608, 346, 347, 348, 349, + 0, 0, 0, 508, 509, 510, 511, 512, 332, 333, + 334, 335, 336, 337, 338, 595, 596, 597, 598, 0, + 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, + 339, 340, 341, 342, 343, 344, 513, 514, 515, 516, + 517, 518, 519, 520, 345, 609, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 499, 500, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 501, 502, 0, 325, 0, 0, 0, 0, - 0, 0, 0, 593, 503, 504, 505, 506, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, - 330, 331, 0, 0, 0, 507, 508, 509, 510, 511, - 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 339, 340, 341, 342, 343, 344, 512, 513, - 514, 515, 516, 517, 518, 519, 345, 0, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 0, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 499, 500, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 501, 502, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 503, 504, 505, 506, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, - 328, 329, 330, 0, 0, 0, 0, 507, 508, 509, - 510, 511, 332, 333, 334, 335, 336, 337, 338, 0, + 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, - 512, 513, 514, 515, 516, 517, 518, 519, 345, 0, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 0, 0, 502, 503, 0, 325, 0, 485, 0, + 0, 0, 0, 0, 594, 504, 505, 506, 507, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 508, 509, 510, 511, + 512, 332, 333, 334, 335, 336, 337, 338, 595, 596, + 597, 598, 0, 599, 600, 601, 602, 603, 604, 605, + 606, 607, 608, 339, 340, 341, 342, 343, 344, 513, + 514, 515, 516, 517, 518, 519, 520, 345, 609, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -2172,20 +2039,156 @@ static const yytype_int16 yytable[] = 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, + 320, 321, 322, 323, 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 325, - 0, 0, 0, 0, 0, 0, 0, 326, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 328, 329, 330, 331, 0, 0, 0, 0, - 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 339, 340, 341, 342, - 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, - 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, + 0, 0, 0, 0, 0, 0, 502, 503, 0, 325, + 0, 0, 0, 0, 0, 0, 0, 594, 504, 505, + 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 327, 328, 329, 330, 331, 0, 0, 0, 508, + 509, 510, 511, 512, 332, 333, 334, 335, 336, 337, + 338, 595, 596, 597, 598, 0, 599, 600, 601, 602, + 603, 604, 605, 606, 607, 608, 339, 340, 341, 342, + 343, 344, 513, 514, 515, 516, 517, 518, 519, 520, + 345, 609, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, + 374, 375, 376, 377, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, + 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, + 503, 0, 325, 0, 0, 0, 0, 0, 0, 0, + 594, 504, 505, 506, 507, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 327, 328, 329, 330, 331, 0, + 0, 0, 508, 509, 510, 511, 512, 332, 333, 334, + 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, + 340, 341, 342, 343, 344, 513, 514, 515, 516, 517, + 518, 519, 520, 345, 0, 346, 347, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 0, 318, 319, 320, 321, 322, 323, + 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 504, 505, 506, 507, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, + 330, 0, 0, 0, 0, 508, 509, 510, 511, 512, + 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 339, 340, 341, 342, 343, 344, 513, 514, + 515, 516, 517, 518, 519, 520, 345, 0, 346, 347, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, + 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, + 0, 0, 0, 332, 333, 334, 335, 336, 337, 338, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 339, 340, 341, 342, 343, + 344, 0, 0, 0, 0, 0, 0, 0, 0, 345, + 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2224,103 +2227,58 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 594, 0, 0, 597, 0, 598, 599, - 0, 0, 602, 0, 0, 0, 0, 0, 339, 340, + 336, 337, 338, 595, 0, 0, 598, 0, 599, 600, + 0, 0, 603, 0, 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, + 372, 373, 374, 375, 376, 377, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 435, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 436, 332, 333, - 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, + 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, + 0, 0, 0, 0, 0, 0, 0, 0, 437, 332, + 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 0, 0, 0, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, - 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 339, 340, 341, 342, 343, 344, 0, 0, - 0, 0, 0, 0, 0, 0, 345, 0, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 1, + 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, + 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -2355,8 +2313,8 @@ static const yytype_int16 yytable[] = 312, 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 706, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, 338, 0, @@ -2366,7 +2324,143 @@ static const yytype_int16 yytable[] = 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 0, 318, + 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 707, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, + 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 339, 340, 341, + 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, + 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 820, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, + 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 855, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -2401,7 +2495,7 @@ static const yytype_int16 yytable[] = 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 819, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, @@ -2411,13 +2505,13 @@ static const yytype_int16 yytable[] = 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 1, 2, 3, 4, 5, 6, 7, + 374, 375, 376, 377, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, @@ -2443,65 +2537,18 @@ static const yytype_int16 yytable[] = 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 854, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, - 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 321, 0, 0, 0, 0, 0, 500, + 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 502, 503, + 0, 0, 0, 637, 775, 0, 0, 0, 0, 0, + 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 508, 509, 510, 511, 512, 332, 0, 0, 0, + 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 2, 3, 4, + 0, 0, 0, 0, 513, 514, 515, 516, 517, 518, + 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -2534,16 +2581,16 @@ static const yytype_int16 yytable[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, - 0, 0, 499, 500, 0, 0, 0, 0, 0, 0, + 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 501, 502, 0, 0, 0, 636, 774, 0, 0, - 0, 0, 0, 503, 504, 505, 506, 0, 0, 0, + 0, 502, 503, 0, 0, 0, 637, 886, 0, 0, + 0, 0, 0, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 507, 508, 509, 510, 511, 332, + 0, 0, 0, 0, 508, 509, 510, 511, 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, - 515, 516, 517, 518, 519, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 513, 514, 515, + 516, 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, @@ -2577,16 +2624,16 @@ static const yytype_int16 yytable[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 0, 0, 0, 499, 500, 0, 0, 0, + 0, 0, 0, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 501, 502, 0, 0, 0, 636, - 885, 0, 0, 0, 0, 0, 503, 504, 505, 506, + 0, 0, 0, 0, 502, 503, 0, 0, 576, 0, + 0, 0, 0, 0, 0, 0, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 507, 508, 509, - 510, 511, 332, 0, 0, 0, 0, 337, 338, 0, + 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, + 511, 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 512, 513, 514, 515, 516, 517, 518, 519, 0, 0, + 513, 514, 515, 516, 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, @@ -2620,17 +2667,17 @@ static const yytype_int16 yytable[] = 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 0, 0, 0, 499, 500, + 0, 0, 321, 0, 0, 0, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 501, 502, 0, - 0, 575, 0, 0, 0, 0, 0, 0, 0, 503, - 504, 505, 506, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 502, 503, 0, + 0, 0, 637, 0, 0, 0, 0, 0, 0, 504, + 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 507, 508, 509, 510, 511, 332, 0, 0, 0, 0, + 508, 509, 510, 511, 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 512, 513, 514, 515, 516, 517, 518, - 519, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 513, 514, 515, 516, 517, 518, 519, + 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, @@ -2664,16 +2711,16 @@ static const yytype_int16 yytable[] = 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, - 0, 499, 500, 0, 0, 0, 0, 0, 0, 0, + 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 501, 502, 0, 0, 0, 636, 0, 0, 0, 0, - 0, 0, 503, 504, 505, 506, 0, 0, 0, 0, + 502, 503, 0, 0, 734, 0, 0, 0, 0, 0, + 0, 0, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 507, 508, 509, 510, 511, 332, 0, + 0, 0, 0, 508, 509, 510, 511, 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 516, 517, 518, 519, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 513, 514, 515, 516, + 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, @@ -2707,16 +2754,16 @@ static const yytype_int16 yytable[] = 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, - 0, 0, 0, 0, 499, 500, 0, 0, 0, 0, + 0, 0, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 501, 502, 0, 0, 733, 0, 0, - 0, 0, 0, 0, 0, 503, 504, 505, 506, 0, + 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 745, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 507, 508, 509, 510, - 511, 332, 0, 0, 0, 0, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, + 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, - 513, 514, 515, 516, 517, 518, 519, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, @@ -2750,16 +2797,16 @@ static const yytype_int16 yytable[] = 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 0, 0, 0, 499, 500, 0, + 0, 321, 0, 0, 0, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 501, 502, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 744, 503, 504, - 505, 506, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 507, - 508, 509, 510, 511, 332, 0, 0, 0, 0, 337, + 0, 0, 0, 0, 0, 0, 502, 503, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, + 509, 510, 511, 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 512, 513, 514, 515, 516, 517, 518, 519, + 0, 0, 513, 514, 515, 516, 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, @@ -2794,16 +2841,16 @@ static const yytype_int16 yytable[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, - 499, 500, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 501, - 502, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 503, 504, 505, 506, 0, 0, 0, 0, 0, + 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 507, 508, 509, 510, 511, 332, 0, 0, - 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, + 0, 0, 508, 509, 510, 511, 512, 332, 0, 0, + 0, 0, 337, 655, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, - 517, 518, 519, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 513, 514, 515, 516, 517, + 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, @@ -2837,16 +2884,16 @@ static const yytype_int16 yytable[] = 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 0, 0, 0, 499, 500, 0, 0, 0, 0, 0, + 0, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 501, 502, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 503, 504, 505, 506, 0, 0, + 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 507, 508, 509, 510, 511, - 332, 0, 0, 0, 0, 337, 654, 0, 0, 0, + 0, 0, 0, 0, 0, 508, 509, 510, 511, 695, + 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, - 514, 515, 516, 517, 518, 519, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 513, 514, + 515, 516, 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, @@ -2880,245 +2927,156 @@ static const yytype_int16 yytable[] = 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, - 321, 0, 0, 0, 0, 0, 499, 500, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 501, 502, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 503, 504, 505, - 506, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 507, 508, - 509, 510, 694, 332, 0, 0, 0, 0, 337, 338, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 516, 517, 518, 519, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 0, 0, 0, 321, 0, 0, 0, 0, 0, 0, + 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, - 0, 337, 338 + 0, 0, 0, 332, 0, 0, 0, 0, 337, 338 }; static const yytype_int16 yycheck[] = { - 0, 382, 0, 493, 622, 502, 401, 401, 481, 0, - 434, 406, 542, 0, 0, 736, 440, 634, 567, 636, - 401, 390, 639, 413, 569, 406, 348, 547, 558, 348, - 359, 385, 552, 331, 332, 336, 353, 349, 528, 348, - 898, 561, 351, 351, 348, 426, 356, 905, 350, 352, - 570, 359, 351, 356, 356, 409, 385, 915, 368, 358, - 382, 430, 381, 382, 383, 384, 490, 491, 385, 367, - 368, 372, 351, 382, 547, 349, 351, 446, 382, 552, - 359, 329, 330, 358, 349, 558, 351, 351, 561, 374, - 375, 376, 473, 358, 358, 640, 353, 570, 361, 356, - 363, 349, 359, 351, 601, 349, 603, 355, 408, 409, - 410, 411, 412, 413, 414, 350, 589, 719, 720, 721, - 722, 356, 740, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 350, 350, 356, 350, 349, 359, 356, - 356, 349, 356, 358, 634, 350, 636, 350, 349, 639, - 540, 356, 649, 356, 540, 350, 773, 351, 350, 708, - 546, 356, 548, 653, 356, 551, 556, 553, 349, 555, - 556, 350, 350, 350, 560, 350, 350, 356, 356, 356, - 349, 356, 356, 350, 350, 350, 567, 350, 569, 356, - 356, 356, 350, 356, 350, 350, 565, 350, 919, 350, - 356, 356, 350, 356, 350, 356, 350, 350, 356, 350, - 356, 356, 356, 356, 352, 356, 352, 349, 356, 356, - 356, 385, 359, 841, 381, 382, 383, 384, 382, 778, - 439, 385, 382, 327, 328, 385, 853, 632, 632, 356, - 382, 356, 359, 385, 359, 742, 354, 382, 356, 746, - 385, 632, 382, 382, 382, 385, 385, 385, 382, 640, - 382, 385, 382, 385, 382, 385, 382, 385, 356, 385, - 356, 359, 481, 359, 764, 765, 349, 797, 798, 703, - 810, 333, 334, 773, 804, 805, 364, 365, 366, 359, - 499, 500, 909, 356, 357, 356, 357, 715, 716, 367, - 717, 718, 723, 724, 359, 385, 385, 925, 353, 385, - 353, 351, 351, 385, 385, 350, 385, 359, 349, 356, - 358, 350, 531, 356, 797, 798, 358, 708, 356, 356, - 356, 804, 805, 356, 356, 356, 356, 810, 547, 812, - 356, 356, 839, 552, 358, 842, 359, 350, 349, 558, - 349, 385, 561, 371, 351, 385, 351, 369, 348, 352, - 385, 570, 370, 853, 335, 337, 385, 352, 349, 349, - 354, 359, 349, 349, 385, 349, 359, 359, 357, 385, - 589, 359, 382, 349, 359, 882, 359, 350, 356, 359, - 390, 382, 356, 358, 356, 350, 350, 778, 398, 390, - 398, 401, 899, 352, 352, 895, 406, 398, 406, 356, - 401, 398, 398, 348, 348, 406, 416, 914, 354, 909, - 406, 382, 350, 349, 393, 385, 426, 425, 353, 358, - 430, 350, 359, 353, 725, 426, 353, 359, 397, 430, - 354, 727, 726, 730, 331, 728, 446, 842, 729, 658, - 702, 572, 817, 844, 904, 446, 915, 844, 916, 632, - 882, 842, 632, 430, 632, 398, 563, 424, 426, 795, - 793, 798, 802, 473, 430, 800, 808, 805, 812, 810, - -1, -1, 473, -1, 484, -1, -1, 882, -1, -1, - -1, -1, -1, 484, -1, -1, -1, -1, -1, -1, - -1, 882, -1, 712, 713, 714, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 536, -1, + 0, 383, 0, 402, 494, 0, 503, 482, 407, 0, + 435, 0, 623, 635, 543, 637, 441, 402, 640, 568, + 402, 737, 414, 548, 391, 407, 570, 348, 553, 336, + 559, 359, 331, 332, 385, 899, 348, 562, 348, 529, + 348, 351, 906, 349, 353, 427, 571, 351, 382, 352, + 351, 385, 916, 356, 358, 329, 330, 385, 409, 356, + 381, 382, 383, 384, 431, 372, 491, 492, 367, 368, + 382, 368, 382, 548, 382, 349, 385, 351, 553, 350, + 447, 355, 351, 351, 559, 356, 349, 562, 351, 349, + 359, 359, 474, 541, 350, 358, 571, 641, 352, 547, + 356, 549, 356, 351, 552, 602, 554, 604, 556, 557, + 358, 356, 349, 561, 359, 590, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 351, 327, 328, 353, + 741, 382, 356, 358, 385, 359, 358, 409, 410, 411, + 412, 413, 414, 415, 361, 635, 363, 637, 350, 541, + 640, 350, 774, 650, 356, 350, 350, 356, 356, 357, + 709, 356, 356, 350, 654, 557, 350, 350, 350, 356, + 350, 350, 356, 356, 356, 350, 356, 356, 350, 350, + 354, 356, 356, 350, 356, 356, 568, 350, 570, 356, + 350, 350, 350, 356, 350, 350, 356, 356, 356, 566, + 356, 356, 350, 350, 920, 350, 350, 350, 356, 356, + 352, 356, 356, 356, 356, 381, 382, 383, 384, 720, + 721, 722, 723, 356, 356, 382, 359, 359, 385, 440, + 779, 842, 854, 382, 633, 356, 385, 356, 359, 349, + 359, 382, 382, 359, 385, 385, 743, 349, 633, 349, + 747, 633, 382, 382, 382, 385, 385, 385, 382, 641, + 382, 385, 382, 385, 356, 385, 349, 359, 374, 375, + 376, 482, 349, 798, 799, 765, 766, 333, 334, 704, + 805, 806, 811, 349, 774, 364, 365, 366, 910, 500, + 501, 356, 357, 716, 717, 349, 718, 719, 724, 725, + 350, 356, 359, 385, 367, 385, 353, 385, 353, 385, + 351, 385, 385, 351, 350, 926, 385, 359, 358, 356, + 349, 532, 356, 798, 799, 358, 356, 709, 356, 356, + 805, 806, 356, 356, 356, 356, 811, 548, 813, 356, + 350, 356, 553, 840, 350, 359, 843, 358, 559, 351, + 385, 562, 349, 349, 385, 348, 335, 351, 371, 385, + 571, 370, 352, 337, 854, 385, 369, 352, 354, 349, + 382, 359, 359, 349, 349, 359, 349, 359, 359, 590, + 357, 359, 349, 383, 349, 348, 883, 359, 350, 358, + 356, 391, 383, 385, 350, 356, 356, 779, 350, 399, + 391, 399, 402, 900, 399, 352, 896, 407, 399, 407, + 399, 402, 407, 352, 385, 356, 407, 417, 915, 348, + 910, 354, 350, 393, 349, 359, 385, 427, 426, 353, + 350, 431, 358, 397, 353, 353, 427, 359, 354, 726, + 431, 727, 730, 728, 843, 729, 573, 447, 659, 731, + 331, 703, 818, 905, 845, 916, 447, 917, 845, 883, + 633, 843, 399, 431, 633, 633, 564, 796, 425, 427, + 794, 803, 799, 806, 474, 801, 431, 813, 809, -1, + -1, 811, -1, 474, 883, 485, -1, -1, -1, -1, + -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, + -1, 883, 713, 714, 715, 716, 717, 718, 719, 720, + 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, + 731, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 537, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 565, -1, 567, -1, 569, - -1, -1, -1, -1, 565, -1, 567, -1, 569, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 797, 798, - -1, -1, -1, -1, -1, 804, 805, -1, -1, -1, - -1, 810, -1, 812, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 566, -1, 568, -1, + 570, -1, -1, -1, -1, 566, -1, 568, -1, 570, + -1, -1, -1, -1, -1, -1, -1, 798, 799, -1, + -1, -1, -1, -1, 805, 806, -1, -1, -1, -1, + 811, -1, 813, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 622, -1, -1, -1, -1, -1, -1, -1, - -1, 622, 632, -1, -1, -1, -1, -1, -1, -1, - 640, 632, -1, -1, -1, -1, -1, -1, -1, 640, + -1, -1, -1, 623, -1, -1, -1, -1, -1, -1, + -1, -1, 623, 633, -1, -1, -1, -1, -1, -1, + -1, 641, 633, -1, -1, -1, -1, -1, -1, -1, + 641, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 709, + -1, -1, -1, -1, -1, -1, -1, -1, 709, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 708, -1, - -1, -1, -1, -1, -1, -1, -1, 708, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 737, -1, -1, + -1, 741, -1, -1, -1, -1, 737, -1, -1, -1, + 741, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 736, -1, -1, -1, - 740, -1, -1, -1, -1, 736, -1, -1, -1, 740, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 779, + -1, -1, -1, -1, -1, -1, -1, -1, 779, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 778, -1, - -1, -1, -1, -1, -1, -1, -1, 778, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 842, 843, -1, 845, -1, 845, -1, -1, + -1, 842, 843, -1, 845, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 841, 842, -1, 844, -1, 844, -1, -1, -1, - 841, 842, -1, 844, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 883, -1, -1, -1, -1, -1, -1, + -1, -1, 883, -1, -1, -1, -1, -1, -1, 899, + -1, -1, -1, -1, -1, -1, 906, -1, 899, -1, + -1, -1, -1, -1, -1, 906, 916, -1, -1, -1, + 920, -1, -1, -1, -1, 916, 926, -1, -1, 920, + -1, -1, -1, 0, -1, 926, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 882, -1, -1, -1, -1, -1, -1, -1, - -1, 882, -1, -1, -1, -1, -1, -1, 898, -1, - -1, -1, -1, -1, -1, 905, -1, 898, -1, -1, - -1, -1, -1, -1, 905, 915, -1, -1, -1, 919, - -1, -1, -1, -1, 915, 925, -1, -1, 919, -1, - -1, -1, 0, -1, 925, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 351, -1, -1, -1, -1, -1, -1, - -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, - -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, + -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, + 377, -1, -1, -1, -1, -1, -1, -1, -1, 386, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, 351, -1, 353, 354, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, - 376, 377, -1, -1, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, -1, 398, 399, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, + -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, + -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -3164,97 +3122,52 @@ static const yytype_int16 yycheck[] = 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, + 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 348, 349, -1, 351, - -1, 353, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, 377, -1, -1, -1, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, -1, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, - 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, 351, -1, 353, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, - -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, + 351, -1, 353, 354, -1, -1, -1, -1, 359, 360, + 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 373, 374, 375, 376, 377, -1, -1, -1, + 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, -1, 398, 399, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -3289,7 +3202,7 @@ static const yytype_int16 yycheck[] = 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, 351, -1, -1, -1, -1, -1, -1, + 348, 349, -1, 351, -1, 353, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, 385, 386, 387, @@ -3299,7 +3212,143 @@ static const yytype_int16 yycheck[] = 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, + 448, 449, 450, 451, 452, 453, 454, 455, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, 351, -1, 353, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, -1, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 348, 349, -1, 351, + -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 373, 374, 375, 376, 377, -1, -1, -1, 381, + 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, -1, 398, 399, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, + 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, + 349, -1, 351, -1, -1, -1, -1, -1, -1, -1, + 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, + -1, -1, 381, 382, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, -1, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -3331,111 +3380,66 @@ static const yytype_int16 yycheck[] = 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 316, -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, 351, -1, -1, -1, -1, - -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, + -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, - 376, 377, -1, -1, -1, 381, 382, 383, 384, 385, + 376, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, 320, 321, 322, 323, - 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 348, 349, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, -1, -1, -1, -1, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, -1, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, -1, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 351, -1, + -1, -1, -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 351, - -1, -1, -1, -1, -1, -1, -1, 359, -1, -1, + 373, 374, 375, 376, 377, -1, -1, -1, -1, -1, + -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, 377, -1, -1, -1, -1, - -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, - 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, - 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, - 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, + -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, + 413, -1, -1, -1, -1, -1, -1, -1, -1, 422, + -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3472,15 +3476,151 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, 393, -1, -1, 396, -1, 398, 399, - -1, -1, 402, -1, -1, -1, -1, -1, 408, 409, - 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, - -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, 393, -1, -1, 396, -1, 398, 399, + -1, -1, 402, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, + -1, -1, -1, -1, -1, -1, -1, -1, 385, 386, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, + -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, -1, -1, -1, 320, 321, 322, 323, + 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 351, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, + 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, + -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, -1, -1, -1, 320, + 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 373, 374, 375, 376, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, + 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, + 411, 412, 413, -1, -1, -1, -1, -1, -1, -1, + -1, 422, -1, 424, 425, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -3515,108 +3655,63 @@ static const yytype_int16 yycheck[] = -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, 385, 386, 387, + -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, 320, 321, 322, 323, 324, 325, - 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 351, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, - 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 408, 409, 410, 411, 412, 413, -1, -1, - -1, -1, -1, -1, -1, -1, 422, -1, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, 320, 321, 322, 323, - 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, + 448, 449, 450, 451, 452, 453, 454, 455, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, 320, 321, 322, 323, 324, + 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, - -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 3, 4, 5, 6, 7, 8, 9, 10, 11, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -3651,7 +3746,7 @@ static const yytype_int16 yycheck[] = 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, @@ -3661,97 +3756,50 @@ static const yytype_int16 yycheck[] = 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 3, 4, 5, 6, 7, 8, 9, + 452, 453, 454, 455, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, - 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, - -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, -1, -1, 353, 354, -1, -1, -1, -1, -1, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, + -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, + -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, - -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 4, 5, 6, + -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3829,8 +3877,8 @@ static const yytype_int16 yycheck[] = 314, 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 348, 349, -1, -1, -1, 353, - 354, -1, -1, -1, -1, -1, 360, 361, 362, 363, + -1, -1, -1, -1, 348, 349, -1, -1, 352, -1, + -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, @@ -3873,7 +3921,7 @@ static const yytype_int16 yycheck[] = -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - -1, 352, -1, -1, -1, -1, -1, -1, -1, 360, + -1, -1, 353, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, @@ -3916,7 +3964,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, -1, -1, 353, -1, -1, -1, -1, + 348, 349, -1, -1, 352, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, @@ -3959,8 +4007,8 @@ static const yytype_int16 yycheck[] = 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, -1, 352, -1, -1, - -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, + -1, -1, -1, 348, 349, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, -1, @@ -4003,7 +4051,7 @@ static const yytype_int16 yycheck[] = -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, + -1, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, @@ -4130,57 +4178,13 @@ static const yytype_int16 yycheck[] = 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, - 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, - 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 436, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, -1, -1, 323, -1, -1, -1, -1, -1, -1, + 323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, -1, -1, -1, - -1, 391, 392 + -1, -1, -1, 386, -1, -1, -1, -1, 391, 392 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4224,136 +4228,136 @@ static const yytype_int16 yystos[] = 409, 410, 411, 412, 413, 422, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 486, 487, 490, - 491, 492, 493, 497, 498, 499, 500, 501, 502, 505, - 506, 507, 508, 509, 511, 516, 517, 518, 559, 560, - 561, 563, 570, 574, 575, 580, 583, 349, 349, 349, - 349, 349, 349, 349, 349, 351, 517, 353, 385, 349, - 349, 359, 385, 359, 562, 350, 356, 494, 495, 496, - 506, 511, 356, 359, 385, 359, 385, 507, 511, 367, - 513, 514, 0, 560, 491, 499, 506, 359, 490, 385, - 566, 567, 584, 585, 382, 385, 566, 382, 566, 382, - 566, 382, 566, 382, 566, 566, 584, 382, 566, 385, - 564, 565, 511, 520, 353, 385, 409, 503, 504, 385, - 510, 351, 359, 512, 353, 538, 563, 495, 494, 496, - 385, 385, 349, 358, 512, 353, 356, 359, 489, 329, - 330, 348, 349, 360, 361, 362, 363, 381, 382, 383, - 384, 385, 414, 415, 416, 417, 418, 419, 420, 421, - 456, 457, 458, 460, 461, 462, 463, 464, 465, 466, - 467, 468, 509, 511, 515, 512, 350, 385, 359, 358, - 356, 350, 356, 350, 356, 358, 356, 356, 356, 350, - 356, 356, 356, 356, 356, 356, 356, 350, 356, 350, - 356, 349, 352, 356, 359, 506, 511, 521, 522, 519, - 358, 350, 356, 350, 356, 352, 467, 469, 470, 471, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 351, - 359, 353, 354, 359, 393, 394, 395, 396, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 423, 467, - 480, 482, 484, 486, 490, 509, 511, 527, 528, 529, - 530, 531, 539, 540, 541, 542, 545, 546, 549, 550, - 551, 558, 563, 512, 358, 512, 353, 482, 525, 358, - 488, 385, 356, 359, 467, 467, 484, 329, 330, 351, - 355, 350, 350, 356, 392, 482, 349, 467, 356, 368, - 563, 348, 351, 382, 567, 584, 385, 585, 348, 381, - 382, 383, 384, 571, 572, 382, 480, 485, 573, 382, - 381, 382, 383, 384, 576, 577, 382, 485, 578, 382, - 348, 579, 382, 584, 385, 485, 581, 582, 382, 485, - 352, 565, 511, 385, 523, 524, 354, 522, 521, 485, - 504, 385, 364, 365, 366, 361, 363, 327, 328, 331, - 332, 367, 368, 333, 334, 371, 370, 369, 335, 337, - 336, 372, 352, 352, 480, 354, 532, 349, 359, 359, - 553, 349, 349, 359, 359, 484, 349, 484, 357, 359, - 359, 359, 359, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 358, 483, 356, 359, 354, 528, 542, - 546, 551, 525, 358, 354, 525, 526, 525, 521, 385, - 350, 459, 484, 385, 482, 467, 348, 382, 568, 569, - 350, 358, 350, 356, 350, 356, 350, 356, 356, 350, - 356, 350, 356, 350, 356, 356, 350, 356, 356, 350, - 356, 350, 356, 350, 350, 523, 512, 356, 359, 354, - 467, 467, 467, 469, 469, 470, 470, 471, 471, 471, - 471, 472, 472, 473, 474, 475, 476, 477, 478, 481, - 352, 539, 552, 528, 554, 484, 359, 484, 357, 482, - 482, 525, 354, 356, 354, 352, 352, 356, 352, 356, - 572, 571, 485, 573, 577, 576, 485, 578, 348, 579, - 581, 582, 359, 524, 484, 533, 484, 499, 544, 393, - 527, 540, 555, 350, 350, 354, 525, 348, 382, 350, - 350, 350, 350, 350, 350, 357, 354, 385, 350, 349, - 544, 556, 557, 535, 536, 537, 543, 547, 482, 358, - 529, 534, 538, 484, 359, 350, 397, 531, 529, 353, - 525, 350, 484, 534, 535, 539, 548, 359, 354 + 448, 449, 450, 451, 452, 453, 454, 455, 487, 488, + 491, 492, 493, 494, 498, 499, 500, 501, 502, 503, + 506, 507, 508, 509, 510, 512, 517, 518, 519, 560, + 561, 562, 564, 571, 575, 576, 581, 584, 349, 349, + 349, 349, 349, 349, 349, 349, 351, 518, 353, 385, + 349, 349, 359, 385, 359, 563, 350, 356, 495, 496, + 497, 507, 512, 356, 359, 385, 359, 385, 508, 512, + 367, 514, 515, 0, 561, 492, 500, 507, 359, 491, + 385, 567, 568, 585, 586, 382, 385, 567, 382, 567, + 382, 567, 382, 567, 382, 567, 567, 585, 382, 567, + 385, 565, 566, 512, 521, 353, 385, 409, 504, 505, + 385, 511, 351, 359, 513, 353, 539, 564, 496, 495, + 497, 385, 385, 349, 358, 513, 353, 356, 359, 490, + 329, 330, 348, 349, 360, 361, 362, 363, 381, 382, + 383, 384, 385, 414, 415, 416, 417, 418, 419, 420, + 421, 457, 458, 459, 461, 462, 463, 464, 465, 466, + 467, 468, 469, 510, 512, 516, 513, 350, 385, 359, + 358, 356, 350, 356, 350, 356, 358, 356, 356, 356, + 350, 356, 356, 356, 356, 356, 356, 356, 350, 356, + 350, 356, 349, 352, 356, 359, 507, 512, 522, 523, + 520, 358, 350, 356, 350, 356, 352, 468, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, + 351, 359, 353, 354, 359, 393, 394, 395, 396, 398, + 399, 400, 401, 402, 403, 404, 405, 406, 407, 423, + 468, 481, 483, 485, 487, 491, 510, 512, 528, 529, + 530, 531, 532, 540, 541, 542, 543, 546, 547, 550, + 551, 552, 559, 564, 513, 358, 513, 353, 483, 526, + 358, 489, 385, 356, 359, 468, 468, 485, 329, 330, + 351, 355, 350, 350, 356, 392, 483, 349, 468, 356, + 368, 564, 348, 351, 382, 568, 585, 385, 586, 348, + 381, 382, 383, 384, 572, 573, 382, 481, 486, 574, + 382, 381, 382, 383, 384, 577, 578, 382, 486, 579, + 382, 348, 580, 382, 585, 385, 486, 582, 583, 382, + 486, 352, 566, 512, 385, 524, 525, 354, 523, 522, + 486, 505, 385, 364, 365, 366, 361, 363, 327, 328, + 331, 332, 367, 368, 333, 334, 371, 370, 369, 335, + 337, 336, 372, 352, 352, 481, 354, 533, 349, 359, + 359, 554, 349, 349, 359, 359, 485, 349, 485, 357, + 359, 359, 359, 359, 338, 339, 340, 341, 342, 343, + 344, 345, 346, 347, 358, 484, 356, 359, 354, 529, + 543, 547, 552, 526, 358, 354, 526, 527, 526, 522, + 385, 350, 460, 485, 385, 483, 468, 348, 382, 569, + 570, 350, 358, 350, 356, 350, 356, 350, 356, 356, + 350, 356, 350, 356, 350, 356, 356, 350, 356, 356, + 350, 356, 350, 356, 350, 350, 524, 513, 356, 359, + 354, 468, 468, 468, 470, 470, 471, 471, 472, 472, + 472, 472, 473, 473, 474, 475, 476, 477, 478, 479, + 482, 352, 540, 553, 529, 555, 485, 359, 485, 357, + 483, 483, 526, 354, 356, 354, 352, 352, 356, 352, + 356, 573, 572, 486, 574, 578, 577, 486, 579, 348, + 580, 582, 583, 359, 525, 485, 534, 485, 500, 545, + 393, 528, 541, 556, 350, 350, 354, 526, 348, 382, + 350, 350, 350, 350, 350, 350, 357, 354, 385, 350, + 349, 545, 557, 558, 536, 537, 538, 544, 548, 483, + 358, 530, 535, 539, 485, 359, 350, 397, 532, 530, + 353, 526, 350, 485, 535, 536, 540, 549, 359, 354 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 455, 456, 457, 457, 457, 457, 457, 457, 457, - 457, 457, 457, 457, 457, 457, 457, 457, 458, 458, - 458, 458, 458, 458, 459, 460, 461, 462, 462, 463, - 463, 464, 464, 465, 466, 466, 466, 467, 467, 467, - 467, 468, 468, 468, 468, 469, 469, 469, 469, 470, - 470, 470, 471, 471, 471, 472, 472, 472, 472, 472, - 473, 473, 473, 474, 474, 475, 475, 476, 476, 477, - 477, 478, 478, 479, 479, 480, 481, 480, 482, 482, - 483, 483, 483, 483, 483, 483, 483, 483, 483, 483, - 483, 484, 484, 485, 486, 486, 486, 486, 486, 486, - 486, 486, 486, 486, 486, 488, 487, 489, 489, 490, - 490, 490, 490, 491, 491, 492, 492, 493, 494, 494, - 495, 495, 495, 495, 496, 497, 497, 497, 497, 497, - 498, 498, 498, 498, 498, 499, 499, 500, 501, 501, - 501, 501, 501, 501, 501, 501, 502, 503, 503, 504, - 504, 504, 505, 506, 506, 507, 507, 507, 507, 507, - 507, 507, 507, 507, 507, 507, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 508, 508, 508, 508, - 508, 509, 510, 510, 511, 511, 512, 512, 512, 512, - 513, 513, 514, 515, 515, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 516, 516, - 517, 517, 517, 519, 518, 520, 518, 521, 521, 522, - 522, 523, 523, 524, 524, 525, 525, 525, 525, 526, - 526, 527, 528, 528, 529, 529, 529, 529, 529, 529, - 529, 529, 530, 531, 532, 533, 531, 534, 534, 536, - 535, 537, 535, 538, 538, 539, 539, 540, 540, 541, - 541, 542, 543, 543, 544, 544, 545, 545, 547, 546, - 548, 548, 549, 549, 550, 550, 552, 551, 553, 551, - 554, 551, 555, 555, 556, 556, 557, 557, 558, 558, - 558, 558, 558, 558, 558, 558, 559, 559, 560, 560, - 560, 562, 561, 563, 564, 564, 565, 565, 566, 566, - 567, 567, 568, 568, 569, 569, 570, 570, 570, 570, - 570, 570, 571, 571, 572, 572, 572, 572, 572, 573, - 573, 574, 574, 575, 575, 575, 575, 575, 575, 575, - 575, 576, 576, 577, 577, 577, 577, 578, 578, 579, - 579, 580, 580, 580, 580, 581, 581, 582, 583, 583, - 584, 584, 585, 585 + 0, 456, 457, 458, 458, 458, 458, 458, 458, 458, + 458, 458, 458, 458, 458, 458, 458, 458, 459, 459, + 459, 459, 459, 459, 460, 461, 462, 463, 463, 464, + 464, 465, 465, 466, 467, 467, 467, 468, 468, 468, + 468, 469, 469, 469, 469, 470, 470, 470, 470, 471, + 471, 471, 472, 472, 472, 473, 473, 473, 473, 473, + 474, 474, 474, 475, 475, 476, 476, 477, 477, 478, + 478, 479, 479, 480, 480, 481, 482, 481, 483, 483, + 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, + 484, 485, 485, 486, 487, 487, 487, 487, 487, 487, + 487, 487, 487, 487, 487, 489, 488, 490, 490, 491, + 491, 491, 491, 492, 492, 493, 493, 494, 495, 495, + 496, 496, 496, 496, 497, 498, 498, 498, 498, 498, + 499, 499, 499, 499, 499, 500, 500, 501, 502, 502, + 502, 502, 502, 502, 502, 502, 502, 503, 504, 504, + 505, 505, 505, 506, 507, 507, 508, 508, 508, 508, + 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, + 509, 509, 510, 511, 511, 512, 512, 513, 513, 513, + 513, 514, 514, 515, 516, 516, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 518, 518, 518, 520, 519, 521, 519, 522, 522, + 523, 523, 524, 524, 525, 525, 526, 526, 526, 526, + 527, 527, 528, 529, 529, 530, 530, 530, 530, 530, + 530, 530, 530, 531, 532, 533, 534, 532, 535, 535, + 537, 536, 538, 536, 539, 539, 540, 540, 541, 541, + 542, 542, 543, 544, 544, 545, 545, 546, 546, 548, + 547, 549, 549, 550, 550, 551, 551, 553, 552, 554, + 552, 555, 552, 556, 556, 557, 557, 558, 558, 559, + 559, 559, 559, 559, 559, 559, 559, 560, 560, 561, + 561, 561, 563, 562, 564, 565, 565, 566, 566, 567, + 567, 568, 568, 569, 569, 570, 570, 571, 571, 571, + 571, 571, 571, 572, 572, 573, 573, 573, 573, 573, + 574, 574, 575, 575, 576, 576, 576, 576, 576, 576, + 576, 576, 577, 577, 578, 578, 578, 578, 579, 579, + 580, 580, 581, 581, 581, 581, 582, 582, 583, 584, + 584, 585, 585, 586, 586 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4373,14 +4377,14 @@ static const yytype_int8 yyr2[] = 3, 3, 4, 1, 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, 3, 1, - 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, + 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 4, 1, 1, 3, 2, 3, 2, 3, 3, 4, - 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, + 1, 4, 1, 1, 3, 2, 3, 2, 3, 3, + 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4412,22 +4416,22 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 0, 6, 0, 5, 1, 2, 3, - 4, 1, 3, 1, 2, 1, 3, 4, 2, 1, - 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 2, 2, 0, 0, 5, 1, 1, 0, - 2, 0, 2, 2, 3, 1, 2, 1, 2, 1, - 2, 5, 3, 1, 1, 4, 1, 2, 0, 8, - 0, 1, 3, 2, 1, 2, 0, 6, 0, 8, - 0, 7, 1, 1, 1, 0, 2, 3, 2, 2, - 2, 3, 2, 2, 2, 2, 1, 2, 1, 1, - 1, 0, 3, 5, 1, 3, 1, 4, 1, 3, - 5, 5, 1, 3, 1, 3, 4, 6, 6, 8, - 6, 8, 1, 3, 1, 1, 1, 1, 1, 1, - 3, 4, 6, 4, 6, 6, 8, 6, 8, 6, - 8, 1, 3, 1, 1, 1, 1, 1, 3, 1, - 3, 6, 8, 4, 6, 1, 3, 1, 4, 6, - 1, 3, 3, 3 + 1, 1, 1, 1, 0, 6, 0, 5, 1, 2, + 3, 4, 1, 3, 1, 2, 1, 3, 4, 2, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 0, 0, 5, 1, 1, + 0, 2, 0, 2, 2, 3, 1, 2, 1, 2, + 1, 2, 5, 3, 1, 1, 4, 1, 2, 0, + 8, 0, 1, 3, 2, 1, 2, 0, 6, 0, + 8, 0, 7, 1, 1, 1, 0, 2, 3, 2, + 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, + 1, 1, 0, 3, 5, 1, 3, 1, 4, 1, + 3, 5, 5, 1, 3, 1, 3, 4, 6, 6, + 8, 6, 8, 1, 3, 1, 1, 1, 1, 1, + 1, 3, 4, 6, 4, 6, 6, 8, 6, 8, + 6, 8, 1, 3, 1, 1, 1, 1, 1, 3, + 1, 3, 6, 8, 4, 6, 1, 3, 1, 4, + 6, 1, 3, 3, 3 }; @@ -5177,7 +5181,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5181 "MachineIndependent/glslang_tab.cpp" +#line 5185 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ @@ -5185,7 +5189,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5189 "MachineIndependent/glslang_tab.cpp" +#line 5193 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ @@ -5195,7 +5199,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5199 "MachineIndependent/glslang_tab.cpp" +#line 5203 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ @@ -5203,7 +5207,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5207 "MachineIndependent/glslang_tab.cpp" +#line 5211 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ @@ -5211,7 +5215,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5215 "MachineIndependent/glslang_tab.cpp" +#line 5219 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ @@ -5220,7 +5224,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5224 "MachineIndependent/glslang_tab.cpp" +#line 5228 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ @@ -5228,7 +5232,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5232 "MachineIndependent/glslang_tab.cpp" +#line 5236 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ @@ -5236,7 +5240,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5240 "MachineIndependent/glslang_tab.cpp" +#line 5244 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ @@ -5245,7 +5249,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5249 "MachineIndependent/glslang_tab.cpp" +#line 5253 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ @@ -5254,7 +5258,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5258 "MachineIndependent/glslang_tab.cpp" +#line 5262 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ @@ -5263,7 +5267,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5267 "MachineIndependent/glslang_tab.cpp" +#line 5271 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ @@ -5272,7 +5276,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5276 "MachineIndependent/glslang_tab.cpp" +#line 5280 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ @@ -5281,7 +5285,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5285 "MachineIndependent/glslang_tab.cpp" +#line 5289 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ @@ -5290,7 +5294,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5294 "MachineIndependent/glslang_tab.cpp" +#line 5298 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ @@ -5301,7 +5305,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5305 "MachineIndependent/glslang_tab.cpp" +#line 5309 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ @@ -5310,7 +5314,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5314 "MachineIndependent/glslang_tab.cpp" +#line 5318 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ @@ -5318,7 +5322,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5322 "MachineIndependent/glslang_tab.cpp" +#line 5326 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ @@ -5326,7 +5330,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5330 "MachineIndependent/glslang_tab.cpp" +#line 5334 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ @@ -5334,7 +5338,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5338 "MachineIndependent/glslang_tab.cpp" +#line 5342 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ @@ -5342,7 +5346,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5346 "MachineIndependent/glslang_tab.cpp" +#line 5350 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ @@ -5352,7 +5356,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5356 "MachineIndependent/glslang_tab.cpp" +#line 5360 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ @@ -5362,7 +5366,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5366 "MachineIndependent/glslang_tab.cpp" +#line 5370 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ @@ -5371,7 +5375,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5375 "MachineIndependent/glslang_tab.cpp" +#line 5379 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ @@ -5380,7 +5384,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5384 "MachineIndependent/glslang_tab.cpp" +#line 5388 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ @@ -5388,7 +5392,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5392 "MachineIndependent/glslang_tab.cpp" +#line 5396 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ @@ -5397,7 +5401,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5401 "MachineIndependent/glslang_tab.cpp" +#line 5405 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ @@ -5406,7 +5410,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5410 "MachineIndependent/glslang_tab.cpp" +#line 5414 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ @@ -5414,7 +5418,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5418 "MachineIndependent/glslang_tab.cpp" +#line 5422 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ @@ -5422,7 +5426,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5426 "MachineIndependent/glslang_tab.cpp" +#line 5430 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ @@ -5434,7 +5438,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5438 "MachineIndependent/glslang_tab.cpp" +#line 5442 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ @@ -5446,7 +5450,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5450 "MachineIndependent/glslang_tab.cpp" +#line 5454 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ @@ -5454,7 +5458,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5458 "MachineIndependent/glslang_tab.cpp" +#line 5462 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ @@ -5464,7 +5468,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5468 "MachineIndependent/glslang_tab.cpp" +#line 5472 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ @@ -5496,7 +5500,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5500 "MachineIndependent/glslang_tab.cpp" +#line 5504 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ @@ -5506,7 +5510,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5510 "MachineIndependent/glslang_tab.cpp" +#line 5514 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ @@ -5517,7 +5521,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5521 "MachineIndependent/glslang_tab.cpp" +#line 5525 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ @@ -5526,7 +5530,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5530 "MachineIndependent/glslang_tab.cpp" +#line 5534 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ @@ -5535,7 +5539,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5539 "MachineIndependent/glslang_tab.cpp" +#line 5543 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ @@ -5556,38 +5560,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5560 "MachineIndependent/glslang_tab.cpp" +#line 5564 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ #line 627 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5566 "MachineIndependent/glslang_tab.cpp" +#line 5570 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ #line 628 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5572 "MachineIndependent/glslang_tab.cpp" +#line 5576 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ #line 629 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5578 "MachineIndependent/glslang_tab.cpp" +#line 5582 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ #line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5585 "MachineIndependent/glslang_tab.cpp" +#line 5589 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ #line 636 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5591 "MachineIndependent/glslang_tab.cpp" +#line 5595 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ @@ -5597,7 +5601,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5601 "MachineIndependent/glslang_tab.cpp" +#line 5605 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ @@ -5607,7 +5611,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5611 "MachineIndependent/glslang_tab.cpp" +#line 5615 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ @@ -5618,13 +5622,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5622 "MachineIndependent/glslang_tab.cpp" +#line 5626 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ #line 656 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5628 "MachineIndependent/glslang_tab.cpp" +#line 5632 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ @@ -5634,7 +5638,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5638 "MachineIndependent/glslang_tab.cpp" +#line 5642 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ @@ -5644,13 +5648,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5648 "MachineIndependent/glslang_tab.cpp" +#line 5652 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ #line 670 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5654 "MachineIndependent/glslang_tab.cpp" +#line 5658 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ @@ -5661,7 +5665,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5665 "MachineIndependent/glslang_tab.cpp" +#line 5669 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ @@ -5672,13 +5676,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5676 "MachineIndependent/glslang_tab.cpp" +#line 5680 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ #line 686 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5682 "MachineIndependent/glslang_tab.cpp" +#line 5686 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ @@ -5688,7 +5692,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5692 "MachineIndependent/glslang_tab.cpp" +#line 5696 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ @@ -5698,7 +5702,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5702 "MachineIndependent/glslang_tab.cpp" +#line 5706 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ @@ -5708,7 +5712,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5712 "MachineIndependent/glslang_tab.cpp" +#line 5716 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ @@ -5718,13 +5722,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5722 "MachineIndependent/glslang_tab.cpp" +#line 5726 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ #line 710 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5728 "MachineIndependent/glslang_tab.cpp" +#line 5732 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ @@ -5738,7 +5742,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5742 "MachineIndependent/glslang_tab.cpp" +#line 5746 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ @@ -5752,13 +5756,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5756 "MachineIndependent/glslang_tab.cpp" +#line 5760 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ #line 732 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5762 "MachineIndependent/glslang_tab.cpp" +#line 5766 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ @@ -5769,13 +5773,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5773 "MachineIndependent/glslang_tab.cpp" +#line 5777 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ #line 742 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5779 "MachineIndependent/glslang_tab.cpp" +#line 5783 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ @@ -5786,13 +5790,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5790 "MachineIndependent/glslang_tab.cpp" +#line 5794 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ #line 752 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5796 "MachineIndependent/glslang_tab.cpp" +#line 5800 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ @@ -5803,13 +5807,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5807 "MachineIndependent/glslang_tab.cpp" +#line 5811 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ #line 762 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5813 "MachineIndependent/glslang_tab.cpp" +#line 5817 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ @@ -5819,13 +5823,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5823 "MachineIndependent/glslang_tab.cpp" +#line 5827 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ #line 771 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5829 "MachineIndependent/glslang_tab.cpp" +#line 5833 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ @@ -5835,13 +5839,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5839 "MachineIndependent/glslang_tab.cpp" +#line 5843 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ #line 780 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5845 "MachineIndependent/glslang_tab.cpp" +#line 5849 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ @@ -5851,13 +5855,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5855 "MachineIndependent/glslang_tab.cpp" +#line 5859 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ #line 789 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5861 "MachineIndependent/glslang_tab.cpp" +#line 5865 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ @@ -5865,7 +5869,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { ++parseContext.controlFlowNestingLevel; } -#line 5869 "MachineIndependent/glslang_tab.cpp" +#line 5873 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ @@ -5882,13 +5886,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5886 "MachineIndependent/glslang_tab.cpp" +#line 5890 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ #line 808 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5892 "MachineIndependent/glslang_tab.cpp" +#line 5896 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ @@ -5906,7 +5910,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5910 "MachineIndependent/glslang_tab.cpp" +#line 5914 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ @@ -5915,7 +5919,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5919 "MachineIndependent/glslang_tab.cpp" +#line 5923 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ @@ -5924,7 +5928,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5928 "MachineIndependent/glslang_tab.cpp" +#line 5932 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ @@ -5933,7 +5937,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5937 "MachineIndependent/glslang_tab.cpp" +#line 5941 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ @@ -5943,7 +5947,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5947 "MachineIndependent/glslang_tab.cpp" +#line 5951 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ @@ -5952,7 +5956,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5956 "MachineIndependent/glslang_tab.cpp" +#line 5960 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ @@ -5961,7 +5965,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5965 "MachineIndependent/glslang_tab.cpp" +#line 5969 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ @@ -5970,7 +5974,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 5974 "MachineIndependent/glslang_tab.cpp" +#line 5978 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ @@ -5979,7 +5983,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 5983 "MachineIndependent/glslang_tab.cpp" +#line 5987 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ @@ -5988,7 +5992,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 5992 "MachineIndependent/glslang_tab.cpp" +#line 5996 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ @@ -5997,7 +6001,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6001 "MachineIndependent/glslang_tab.cpp" +#line 6005 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ @@ -6006,7 +6010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6010 "MachineIndependent/glslang_tab.cpp" +#line 6014 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ @@ -6014,7 +6018,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6018 "MachineIndependent/glslang_tab.cpp" +#line 6022 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ @@ -6027,7 +6031,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6031 "MachineIndependent/glslang_tab.cpp" +#line 6035 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ @@ -6036,7 +6040,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6040 "MachineIndependent/glslang_tab.cpp" +#line 6044 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ @@ -6046,7 +6050,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6050 "MachineIndependent/glslang_tab.cpp" +#line 6054 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ @@ -6058,7 +6062,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6062 "MachineIndependent/glslang_tab.cpp" +#line 6066 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ @@ -6068,7 +6072,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6072 "MachineIndependent/glslang_tab.cpp" +#line 6076 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ @@ -6078,7 +6082,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6082 "MachineIndependent/glslang_tab.cpp" +#line 6086 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ @@ -6090,7 +6094,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6094 "MachineIndependent/glslang_tab.cpp" +#line 6098 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ @@ -6099,7 +6103,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6103 "MachineIndependent/glslang_tab.cpp" +#line 6107 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ @@ -6108,7 +6112,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6112 "MachineIndependent/glslang_tab.cpp" +#line 6116 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ @@ -6117,7 +6121,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6121 "MachineIndependent/glslang_tab.cpp" +#line 6125 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ @@ -6127,7 +6131,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6131 "MachineIndependent/glslang_tab.cpp" +#line 6135 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ @@ -6137,7 +6141,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6141 "MachineIndependent/glslang_tab.cpp" +#line 6145 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ @@ -6148,13 +6152,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6152 "MachineIndependent/glslang_tab.cpp" +#line 6156 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ #line 956 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6158 "MachineIndependent/glslang_tab.cpp" +#line 6162 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ @@ -6168,7 +6172,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6172 "MachineIndependent/glslang_tab.cpp" +#line 6176 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ @@ -6177,7 +6181,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6181 "MachineIndependent/glslang_tab.cpp" +#line 6185 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ @@ -6186,7 +6190,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6190 "MachineIndependent/glslang_tab.cpp" +#line 6194 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ @@ -6195,7 +6199,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6199 "MachineIndependent/glslang_tab.cpp" +#line 6203 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ @@ -6206,7 +6210,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6210 "MachineIndependent/glslang_tab.cpp" +#line 6214 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ @@ -6217,7 +6221,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6221 "MachineIndependent/glslang_tab.cpp" +#line 6225 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ @@ -6229,7 +6233,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6233 "MachineIndependent/glslang_tab.cpp" +#line 6237 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ @@ -6237,7 +6241,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6241 "MachineIndependent/glslang_tab.cpp" +#line 6245 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ @@ -6245,7 +6249,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6249 "MachineIndependent/glslang_tab.cpp" +#line 6253 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ @@ -6258,7 +6262,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6262 "MachineIndependent/glslang_tab.cpp" +#line 6266 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ @@ -6280,7 +6284,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6284 "MachineIndependent/glslang_tab.cpp" +#line 6288 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ @@ -6304,7 +6308,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6308 "MachineIndependent/glslang_tab.cpp" +#line 6312 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ @@ -6324,7 +6328,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6328 "MachineIndependent/glslang_tab.cpp" +#line 6332 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ @@ -6348,7 +6352,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6352 "MachineIndependent/glslang_tab.cpp" +#line 6356 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ @@ -6364,7 +6368,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6368 "MachineIndependent/glslang_tab.cpp" +#line 6372 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ @@ -6376,7 +6380,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6380 "MachineIndependent/glslang_tab.cpp" +#line 6384 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ @@ -6391,7 +6395,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6395 "MachineIndependent/glslang_tab.cpp" +#line 6399 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ @@ -6403,7 +6407,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6407 "MachineIndependent/glslang_tab.cpp" +#line 6411 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ @@ -6414,7 +6418,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6418 "MachineIndependent/glslang_tab.cpp" +#line 6422 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ @@ -6422,7 +6426,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 6426 "MachineIndependent/glslang_tab.cpp" +#line 6430 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ @@ -6431,7 +6435,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6435 "MachineIndependent/glslang_tab.cpp" +#line 6439 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ @@ -6440,7 +6444,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6444 "MachineIndependent/glslang_tab.cpp" +#line 6448 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ @@ -6450,7 +6454,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6454 "MachineIndependent/glslang_tab.cpp" +#line 6458 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ @@ -6460,7 +6464,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6464 "MachineIndependent/glslang_tab.cpp" +#line 6468 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ @@ -6472,7 +6476,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6476 "MachineIndependent/glslang_tab.cpp" +#line 6480 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ @@ -6482,7 +6486,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6486 "MachineIndependent/glslang_tab.cpp" +#line 6490 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ @@ -6492,7 +6496,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6496 "MachineIndependent/glslang_tab.cpp" +#line 6500 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ @@ -6502,7 +6506,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6506 "MachineIndependent/glslang_tab.cpp" +#line 6510 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -6512,7 +6516,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6516 "MachineIndependent/glslang_tab.cpp" +#line 6520 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ @@ -6527,7 +6531,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 6531 "MachineIndependent/glslang_tab.cpp" +#line 6535 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ @@ -6556,7 +6560,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6560 "MachineIndependent/glslang_tab.cpp" +#line 6564 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ @@ -6567,7 +6571,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6571 "MachineIndependent/glslang_tab.cpp" +#line 6575 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ @@ -6579,7 +6583,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6583 "MachineIndependent/glslang_tab.cpp" +#line 6587 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ @@ -6591,7 +6595,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6595 "MachineIndependent/glslang_tab.cpp" +#line 6599 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ @@ -6603,7 +6607,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6607 "MachineIndependent/glslang_tab.cpp" +#line 6611 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ @@ -6615,7 +6619,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6619 "MachineIndependent/glslang_tab.cpp" +#line 6623 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ @@ -6628,11 +6632,24 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6632 "MachineIndependent/glslang_tab.cpp" +#line 6636 "MachineIndependent/glslang_tab.cpp" break; - case 143: /* interpolation_qualifier: PERPRIMITIVENV */ + case 143: /* interpolation_qualifier: PERVERTEXEXT */ #line 1293 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECompatibilityProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.pervertexEXT = true; + } +#line 6649 "MachineIndependent/glslang_tab.cpp" + break; + + case 144: /* interpolation_qualifier: PERPRIMITIVENV */ +#line 1301 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6643,11 +6660,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6647 "MachineIndependent/glslang_tab.cpp" +#line 6664 "MachineIndependent/glslang_tab.cpp" break; - case 144: /* interpolation_qualifier: PERVIEWNV */ -#line 1303 "MachineIndependent/glslang.y" + case 145: /* interpolation_qualifier: PERVIEWNV */ +#line 1311 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6655,11 +6672,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6659 "MachineIndependent/glslang_tab.cpp" +#line 6676 "MachineIndependent/glslang_tab.cpp" break; - case 145: /* interpolation_qualifier: PERTASKNV */ -#line 1310 "MachineIndependent/glslang.y" + case 146: /* interpolation_qualifier: PERTASKNV */ +#line 1318 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6667,84 +6684,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6671 "MachineIndependent/glslang_tab.cpp" +#line 6688 "MachineIndependent/glslang_tab.cpp" break; - case 146: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1321 "MachineIndependent/glslang.y" + case 147: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ +#line 1329 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6679 "MachineIndependent/glslang_tab.cpp" +#line 6696 "MachineIndependent/glslang_tab.cpp" break; - case 147: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1327 "MachineIndependent/glslang.y" + case 148: /* layout_qualifier_id_list: layout_qualifier_id */ +#line 1335 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6687 "MachineIndependent/glslang_tab.cpp" +#line 6704 "MachineIndependent/glslang_tab.cpp" break; - case 148: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1330 "MachineIndependent/glslang.y" + case 149: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ +#line 1338 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6697 "MachineIndependent/glslang_tab.cpp" +#line 6714 "MachineIndependent/glslang_tab.cpp" break; - case 149: /* layout_qualifier_id: IDENTIFIER */ -#line 1337 "MachineIndependent/glslang.y" + case 150: /* layout_qualifier_id: IDENTIFIER */ +#line 1345 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6706 "MachineIndependent/glslang_tab.cpp" +#line 6723 "MachineIndependent/glslang_tab.cpp" break; - case 150: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1341 "MachineIndependent/glslang.y" + case 151: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ +#line 1349 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6715 "MachineIndependent/glslang_tab.cpp" +#line 6732 "MachineIndependent/glslang_tab.cpp" break; - case 151: /* layout_qualifier_id: SHARED */ -#line 1345 "MachineIndependent/glslang.y" + case 152: /* layout_qualifier_id: SHARED */ +#line 1353 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6725 "MachineIndependent/glslang_tab.cpp" +#line 6742 "MachineIndependent/glslang_tab.cpp" break; - case 152: /* precise_qualifier: PRECISE */ -#line 1354 "MachineIndependent/glslang.y" + case 153: /* precise_qualifier: PRECISE */ +#line 1362 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6736 "MachineIndependent/glslang_tab.cpp" +#line 6753 "MachineIndependent/glslang_tab.cpp" break; - case 153: /* type_qualifier: single_type_qualifier */ -#line 1364 "MachineIndependent/glslang.y" + case 154: /* type_qualifier: single_type_qualifier */ +#line 1372 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6744 "MachineIndependent/glslang_tab.cpp" +#line 6761 "MachineIndependent/glslang_tab.cpp" break; - case 154: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1367 "MachineIndependent/glslang.y" + case 155: /* type_qualifier: type_qualifier single_type_qualifier */ +#line 1375 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6753,151 +6770,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6757 "MachineIndependent/glslang_tab.cpp" +#line 6774 "MachineIndependent/glslang_tab.cpp" break; - case 155: /* single_type_qualifier: storage_qualifier */ -#line 1378 "MachineIndependent/glslang.y" + case 156: /* single_type_qualifier: storage_qualifier */ +#line 1386 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6765 "MachineIndependent/glslang_tab.cpp" +#line 6782 "MachineIndependent/glslang_tab.cpp" break; - case 156: /* single_type_qualifier: layout_qualifier */ -#line 1381 "MachineIndependent/glslang.y" + case 157: /* single_type_qualifier: layout_qualifier */ +#line 1389 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6773 "MachineIndependent/glslang_tab.cpp" +#line 6790 "MachineIndependent/glslang_tab.cpp" break; - case 157: /* single_type_qualifier: precision_qualifier */ -#line 1384 "MachineIndependent/glslang.y" + case 158: /* single_type_qualifier: precision_qualifier */ +#line 1392 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6782 "MachineIndependent/glslang_tab.cpp" +#line 6799 "MachineIndependent/glslang_tab.cpp" break; - case 158: /* single_type_qualifier: interpolation_qualifier */ -#line 1388 "MachineIndependent/glslang.y" + case 159: /* single_type_qualifier: interpolation_qualifier */ +#line 1396 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6791 "MachineIndependent/glslang_tab.cpp" +#line 6808 "MachineIndependent/glslang_tab.cpp" break; - case 159: /* single_type_qualifier: invariant_qualifier */ -#line 1392 "MachineIndependent/glslang.y" + case 160: /* single_type_qualifier: invariant_qualifier */ +#line 1400 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6800 "MachineIndependent/glslang_tab.cpp" +#line 6817 "MachineIndependent/glslang_tab.cpp" break; - case 160: /* single_type_qualifier: precise_qualifier */ -#line 1397 "MachineIndependent/glslang.y" + case 161: /* single_type_qualifier: precise_qualifier */ +#line 1405 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6809 "MachineIndependent/glslang_tab.cpp" +#line 6826 "MachineIndependent/glslang_tab.cpp" break; - case 161: /* single_type_qualifier: non_uniform_qualifier */ -#line 1401 "MachineIndependent/glslang.y" + case 162: /* single_type_qualifier: non_uniform_qualifier */ +#line 1409 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6817 "MachineIndependent/glslang_tab.cpp" +#line 6834 "MachineIndependent/glslang_tab.cpp" break; - case 162: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1404 "MachineIndependent/glslang.y" + case 163: /* single_type_qualifier: spirv_storage_class_qualifier */ +#line 1412 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6827 "MachineIndependent/glslang_tab.cpp" +#line 6844 "MachineIndependent/glslang_tab.cpp" break; - case 163: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1409 "MachineIndependent/glslang.y" + case 164: /* single_type_qualifier: spirv_decorate_qualifier */ +#line 1417 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6836 "MachineIndependent/glslang_tab.cpp" +#line 6853 "MachineIndependent/glslang_tab.cpp" break; - case 164: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1413 "MachineIndependent/glslang.y" + case 165: /* single_type_qualifier: SPIRV_BY_REFERENCE */ +#line 1421 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6846 "MachineIndependent/glslang_tab.cpp" +#line 6863 "MachineIndependent/glslang_tab.cpp" break; - case 165: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1418 "MachineIndependent/glslang.y" + case 166: /* single_type_qualifier: SPIRV_LITERAL */ +#line 1426 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6856 "MachineIndependent/glslang_tab.cpp" +#line 6873 "MachineIndependent/glslang_tab.cpp" break; - case 166: /* storage_qualifier: CONST */ -#line 1427 "MachineIndependent/glslang.y" + case 167: /* storage_qualifier: CONST */ +#line 1435 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6865 "MachineIndependent/glslang_tab.cpp" +#line 6882 "MachineIndependent/glslang_tab.cpp" break; - case 167: /* storage_qualifier: INOUT */ -#line 1431 "MachineIndependent/glslang.y" + case 168: /* storage_qualifier: INOUT */ +#line 1439 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6875 "MachineIndependent/glslang_tab.cpp" +#line 6892 "MachineIndependent/glslang_tab.cpp" break; - case 168: /* storage_qualifier: IN */ -#line 1436 "MachineIndependent/glslang.y" + case 169: /* storage_qualifier: IN */ +#line 1444 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6886 "MachineIndependent/glslang_tab.cpp" +#line 6903 "MachineIndependent/glslang_tab.cpp" break; - case 169: /* storage_qualifier: OUT */ -#line 1442 "MachineIndependent/glslang.y" + case 170: /* storage_qualifier: OUT */ +#line 1450 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6897 "MachineIndependent/glslang_tab.cpp" +#line 6914 "MachineIndependent/glslang_tab.cpp" break; - case 170: /* storage_qualifier: CENTROID */ -#line 1448 "MachineIndependent/glslang.y" + case 171: /* storage_qualifier: CENTROID */ +#line 1456 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6905,21 +6922,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6909 "MachineIndependent/glslang_tab.cpp" +#line 6926 "MachineIndependent/glslang_tab.cpp" break; - case 171: /* storage_qualifier: UNIFORM */ -#line 1455 "MachineIndependent/glslang.y" + case 172: /* storage_qualifier: UNIFORM */ +#line 1463 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6919 "MachineIndependent/glslang_tab.cpp" +#line 6936 "MachineIndependent/glslang_tab.cpp" break; - case 172: /* storage_qualifier: SHARED */ -#line 1460 "MachineIndependent/glslang.y" + case 173: /* storage_qualifier: SHARED */ +#line 1468 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -6928,21 +6945,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6932 "MachineIndependent/glslang_tab.cpp" +#line 6949 "MachineIndependent/glslang_tab.cpp" break; - case 173: /* storage_qualifier: BUFFER */ -#line 1468 "MachineIndependent/glslang.y" + case 174: /* storage_qualifier: BUFFER */ +#line 1476 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 6942 "MachineIndependent/glslang_tab.cpp" +#line 6959 "MachineIndependent/glslang_tab.cpp" break; - case 174: /* storage_qualifier: ATTRIBUTE */ -#line 1474 "MachineIndependent/glslang.y" + case 175: /* storage_qualifier: ATTRIBUTE */ +#line 1482 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -6955,11 +6972,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6959 "MachineIndependent/glslang_tab.cpp" +#line 6976 "MachineIndependent/glslang_tab.cpp" break; - case 175: /* storage_qualifier: VARYING */ -#line 1486 "MachineIndependent/glslang.y" + case 176: /* storage_qualifier: VARYING */ +#line 1494 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -6974,32 +6991,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6978 "MachineIndependent/glslang_tab.cpp" +#line 6995 "MachineIndependent/glslang_tab.cpp" break; - case 176: /* storage_qualifier: PATCH */ -#line 1500 "MachineIndependent/glslang.y" + case 177: /* storage_qualifier: PATCH */ +#line 1508 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 6989 "MachineIndependent/glslang_tab.cpp" +#line 7006 "MachineIndependent/glslang_tab.cpp" break; - case 177: /* storage_qualifier: SAMPLE */ -#line 1506 "MachineIndependent/glslang.y" + case 178: /* storage_qualifier: SAMPLE */ +#line 1514 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 6999 "MachineIndependent/glslang_tab.cpp" +#line 7016 "MachineIndependent/glslang_tab.cpp" break; - case 178: /* storage_qualifier: HITATTRNV */ -#line 1511 "MachineIndependent/glslang.y" + case 179: /* storage_qualifier: HITATTRNV */ +#line 1519 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7008,11 +7025,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7012 "MachineIndependent/glslang_tab.cpp" +#line 7029 "MachineIndependent/glslang_tab.cpp" break; - case 179: /* storage_qualifier: HITATTREXT */ -#line 1519 "MachineIndependent/glslang.y" + case 180: /* storage_qualifier: HITATTREXT */ +#line 1527 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7021,11 +7038,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7025 "MachineIndependent/glslang_tab.cpp" +#line 7042 "MachineIndependent/glslang_tab.cpp" break; - case 180: /* storage_qualifier: PAYLOADNV */ -#line 1527 "MachineIndependent/glslang.y" + case 181: /* storage_qualifier: PAYLOADNV */ +#line 1535 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7034,11 +7051,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7038 "MachineIndependent/glslang_tab.cpp" +#line 7055 "MachineIndependent/glslang_tab.cpp" break; - case 181: /* storage_qualifier: PAYLOADEXT */ -#line 1535 "MachineIndependent/glslang.y" + case 182: /* storage_qualifier: PAYLOADEXT */ +#line 1543 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7047,11 +7064,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7051 "MachineIndependent/glslang_tab.cpp" +#line 7068 "MachineIndependent/glslang_tab.cpp" break; - case 182: /* storage_qualifier: PAYLOADINNV */ -#line 1543 "MachineIndependent/glslang.y" + case 183: /* storage_qualifier: PAYLOADINNV */ +#line 1551 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7060,11 +7077,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7064 "MachineIndependent/glslang_tab.cpp" +#line 7081 "MachineIndependent/glslang_tab.cpp" break; - case 183: /* storage_qualifier: PAYLOADINEXT */ -#line 1551 "MachineIndependent/glslang.y" + case 184: /* storage_qualifier: PAYLOADINEXT */ +#line 1559 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7073,11 +7090,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7077 "MachineIndependent/glslang_tab.cpp" +#line 7094 "MachineIndependent/glslang_tab.cpp" break; - case 184: /* storage_qualifier: CALLDATANV */ -#line 1559 "MachineIndependent/glslang.y" + case 185: /* storage_qualifier: CALLDATANV */ +#line 1567 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7086,11 +7103,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7090 "MachineIndependent/glslang_tab.cpp" +#line 7107 "MachineIndependent/glslang_tab.cpp" break; - case 185: /* storage_qualifier: CALLDATAEXT */ -#line 1567 "MachineIndependent/glslang.y" + case 186: /* storage_qualifier: CALLDATAEXT */ +#line 1575 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7099,11 +7116,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7103 "MachineIndependent/glslang_tab.cpp" +#line 7120 "MachineIndependent/glslang_tab.cpp" break; - case 186: /* storage_qualifier: CALLDATAINNV */ -#line 1575 "MachineIndependent/glslang.y" + case 187: /* storage_qualifier: CALLDATAINNV */ +#line 1583 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7111,11 +7128,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7115 "MachineIndependent/glslang_tab.cpp" +#line 7132 "MachineIndependent/glslang_tab.cpp" break; - case 187: /* storage_qualifier: CALLDATAINEXT */ -#line 1582 "MachineIndependent/glslang.y" + case 188: /* storage_qualifier: CALLDATAINEXT */ +#line 1590 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7123,175 +7140,175 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7127 "MachineIndependent/glslang_tab.cpp" +#line 7144 "MachineIndependent/glslang_tab.cpp" break; - case 188: /* storage_qualifier: COHERENT */ -#line 1589 "MachineIndependent/glslang.y" + case 189: /* storage_qualifier: COHERENT */ +#line 1597 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7136 "MachineIndependent/glslang_tab.cpp" +#line 7153 "MachineIndependent/glslang_tab.cpp" break; - case 189: /* storage_qualifier: DEVICECOHERENT */ -#line 1593 "MachineIndependent/glslang.y" + case 190: /* storage_qualifier: DEVICECOHERENT */ +#line 1601 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7146 "MachineIndependent/glslang_tab.cpp" +#line 7163 "MachineIndependent/glslang_tab.cpp" break; - case 190: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1598 "MachineIndependent/glslang.y" + case 191: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1606 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7156 "MachineIndependent/glslang_tab.cpp" +#line 7173 "MachineIndependent/glslang_tab.cpp" break; - case 191: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1603 "MachineIndependent/glslang.y" + case 192: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1611 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7166 "MachineIndependent/glslang_tab.cpp" +#line 7183 "MachineIndependent/glslang_tab.cpp" break; - case 192: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1608 "MachineIndependent/glslang.y" + case 193: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1616 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7176 "MachineIndependent/glslang_tab.cpp" +#line 7193 "MachineIndependent/glslang_tab.cpp" break; - case 193: /* storage_qualifier: NONPRIVATE */ -#line 1613 "MachineIndependent/glslang.y" + case 194: /* storage_qualifier: NONPRIVATE */ +#line 1621 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7186 "MachineIndependent/glslang_tab.cpp" +#line 7203 "MachineIndependent/glslang_tab.cpp" break; - case 194: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1618 "MachineIndependent/glslang.y" + case 195: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1626 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7196 "MachineIndependent/glslang_tab.cpp" +#line 7213 "MachineIndependent/glslang_tab.cpp" break; - case 195: /* storage_qualifier: VOLATILE */ -#line 1623 "MachineIndependent/glslang.y" + case 196: /* storage_qualifier: VOLATILE */ +#line 1631 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7205 "MachineIndependent/glslang_tab.cpp" +#line 7222 "MachineIndependent/glslang_tab.cpp" break; - case 196: /* storage_qualifier: RESTRICT */ -#line 1627 "MachineIndependent/glslang.y" + case 197: /* storage_qualifier: RESTRICT */ +#line 1635 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7214 "MachineIndependent/glslang_tab.cpp" +#line 7231 "MachineIndependent/glslang_tab.cpp" break; - case 197: /* storage_qualifier: READONLY */ -#line 1631 "MachineIndependent/glslang.y" + case 198: /* storage_qualifier: READONLY */ +#line 1639 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7223 "MachineIndependent/glslang_tab.cpp" +#line 7240 "MachineIndependent/glslang_tab.cpp" break; - case 198: /* storage_qualifier: WRITEONLY */ -#line 1635 "MachineIndependent/glslang.y" + case 199: /* storage_qualifier: WRITEONLY */ +#line 1643 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7232 "MachineIndependent/glslang_tab.cpp" +#line 7249 "MachineIndependent/glslang_tab.cpp" break; - case 199: /* storage_qualifier: SUBROUTINE */ -#line 1639 "MachineIndependent/glslang.y" + case 200: /* storage_qualifier: SUBROUTINE */ +#line 1647 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7243 "MachineIndependent/glslang_tab.cpp" +#line 7260 "MachineIndependent/glslang_tab.cpp" break; - case 200: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1645 "MachineIndependent/glslang.y" + case 201: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1653 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7254 "MachineIndependent/glslang_tab.cpp" +#line 7271 "MachineIndependent/glslang_tab.cpp" break; - case 201: /* non_uniform_qualifier: NONUNIFORM */ -#line 1656 "MachineIndependent/glslang.y" + case 202: /* non_uniform_qualifier: NONUNIFORM */ +#line 1664 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7263 "MachineIndependent/glslang_tab.cpp" +#line 7280 "MachineIndependent/glslang_tab.cpp" break; - case 202: /* type_name_list: IDENTIFIER */ -#line 1663 "MachineIndependent/glslang.y" + case 203: /* type_name_list: IDENTIFIER */ +#line 1671 "MachineIndependent/glslang.y" { // TODO } -#line 7271 "MachineIndependent/glslang_tab.cpp" +#line 7288 "MachineIndependent/glslang_tab.cpp" break; - case 203: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1666 "MachineIndependent/glslang.y" + case 204: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1674 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7281 "MachineIndependent/glslang_tab.cpp" +#line 7298 "MachineIndependent/glslang_tab.cpp" break; - case 204: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1675 "MachineIndependent/glslang.y" + case 205: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1683 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 7291 "MachineIndependent/glslang_tab.cpp" +#line 7308 "MachineIndependent/glslang_tab.cpp" break; - case 205: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1680 "MachineIndependent/glslang.y" + case 206: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1688 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7299,21 +7316,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 7303 "MachineIndependent/glslang_tab.cpp" +#line 7320 "MachineIndependent/glslang_tab.cpp" break; - case 206: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1690 "MachineIndependent/glslang.y" + case 207: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1698 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7313 "MachineIndependent/glslang_tab.cpp" +#line 7330 "MachineIndependent/glslang_tab.cpp" break; - case 207: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1695 "MachineIndependent/glslang.y" + case 208: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1703 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7322,20 +7339,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7326 "MachineIndependent/glslang_tab.cpp" +#line 7343 "MachineIndependent/glslang_tab.cpp" break; - case 208: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1703 "MachineIndependent/glslang.y" + case 209: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1711 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7335 "MachineIndependent/glslang_tab.cpp" +#line 7352 "MachineIndependent/glslang_tab.cpp" break; - case 209: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1707 "MachineIndependent/glslang.y" + case 210: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1715 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7343,35 +7360,35 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7347 "MachineIndependent/glslang_tab.cpp" +#line 7364 "MachineIndependent/glslang_tab.cpp" break; - case 210: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1717 "MachineIndependent/glslang.y" + case 211: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1725 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7355 "MachineIndependent/glslang_tab.cpp" +#line 7372 "MachineIndependent/glslang_tab.cpp" break; - case 211: /* type_parameter_specifier_opt: %empty */ -#line 1720 "MachineIndependent/glslang.y" + case 212: /* type_parameter_specifier_opt: %empty */ +#line 1728 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7363 "MachineIndependent/glslang_tab.cpp" +#line 7380 "MachineIndependent/glslang_tab.cpp" break; - case 212: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1726 "MachineIndependent/glslang.y" + case 213: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1734 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7371 "MachineIndependent/glslang_tab.cpp" +#line 7388 "MachineIndependent/glslang_tab.cpp" break; - case 213: /* type_parameter_specifier_list: unary_expression */ -#line 1732 "MachineIndependent/glslang.y" + case 214: /* type_parameter_specifier_list: unary_expression */ +#line 1740 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TArraySizes; @@ -7379,11 +7396,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7383 "MachineIndependent/glslang_tab.cpp" +#line 7400 "MachineIndependent/glslang_tab.cpp" break; - case 214: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1739 "MachineIndependent/glslang.y" + case 215: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1747 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7391,300 +7408,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7395 "MachineIndependent/glslang_tab.cpp" +#line 7412 "MachineIndependent/glslang_tab.cpp" break; - case 215: /* type_specifier_nonarray: VOID */ -#line 1749 "MachineIndependent/glslang.y" + case 216: /* type_specifier_nonarray: VOID */ +#line 1757 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7404 "MachineIndependent/glslang_tab.cpp" +#line 7421 "MachineIndependent/glslang_tab.cpp" break; - case 216: /* type_specifier_nonarray: FLOAT */ -#line 1753 "MachineIndependent/glslang.y" + case 217: /* type_specifier_nonarray: FLOAT */ +#line 1761 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7413 "MachineIndependent/glslang_tab.cpp" +#line 7430 "MachineIndependent/glslang_tab.cpp" break; - case 217: /* type_specifier_nonarray: INT */ -#line 1757 "MachineIndependent/glslang.y" + case 218: /* type_specifier_nonarray: INT */ +#line 1765 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7422 "MachineIndependent/glslang_tab.cpp" +#line 7439 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_specifier_nonarray: UINT */ -#line 1761 "MachineIndependent/glslang.y" + case 219: /* type_specifier_nonarray: UINT */ +#line 1769 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7432 "MachineIndependent/glslang_tab.cpp" +#line 7449 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_specifier_nonarray: BOOL */ -#line 1766 "MachineIndependent/glslang.y" + case 220: /* type_specifier_nonarray: BOOL */ +#line 1774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7441 "MachineIndependent/glslang_tab.cpp" +#line 7458 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_specifier_nonarray: VEC2 */ -#line 1770 "MachineIndependent/glslang.y" + case 221: /* type_specifier_nonarray: VEC2 */ +#line 1778 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7451 "MachineIndependent/glslang_tab.cpp" +#line 7468 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_specifier_nonarray: VEC3 */ -#line 1775 "MachineIndependent/glslang.y" + case 222: /* type_specifier_nonarray: VEC3 */ +#line 1783 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7461 "MachineIndependent/glslang_tab.cpp" +#line 7478 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_specifier_nonarray: VEC4 */ -#line 1780 "MachineIndependent/glslang.y" + case 223: /* type_specifier_nonarray: VEC4 */ +#line 1788 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7471 "MachineIndependent/glslang_tab.cpp" +#line 7488 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: BVEC2 */ -#line 1785 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: BVEC2 */ +#line 1793 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7481 "MachineIndependent/glslang_tab.cpp" +#line 7498 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: BVEC3 */ -#line 1790 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: BVEC3 */ +#line 1798 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7491 "MachineIndependent/glslang_tab.cpp" +#line 7508 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: BVEC4 */ -#line 1795 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: BVEC4 */ +#line 1803 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7501 "MachineIndependent/glslang_tab.cpp" +#line 7518 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: IVEC2 */ -#line 1800 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: IVEC2 */ +#line 1808 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7511 "MachineIndependent/glslang_tab.cpp" +#line 7528 "MachineIndependent/glslang_tab.cpp" break; - case 227: /* type_specifier_nonarray: IVEC3 */ -#line 1805 "MachineIndependent/glslang.y" + case 228: /* type_specifier_nonarray: IVEC3 */ +#line 1813 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7521 "MachineIndependent/glslang_tab.cpp" +#line 7538 "MachineIndependent/glslang_tab.cpp" break; - case 228: /* type_specifier_nonarray: IVEC4 */ -#line 1810 "MachineIndependent/glslang.y" + case 229: /* type_specifier_nonarray: IVEC4 */ +#line 1818 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7531 "MachineIndependent/glslang_tab.cpp" +#line 7548 "MachineIndependent/glslang_tab.cpp" break; - case 229: /* type_specifier_nonarray: UVEC2 */ -#line 1815 "MachineIndependent/glslang.y" + case 230: /* type_specifier_nonarray: UVEC2 */ +#line 1823 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7542 "MachineIndependent/glslang_tab.cpp" +#line 7559 "MachineIndependent/glslang_tab.cpp" break; - case 230: /* type_specifier_nonarray: UVEC3 */ -#line 1821 "MachineIndependent/glslang.y" + case 231: /* type_specifier_nonarray: UVEC3 */ +#line 1829 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7553 "MachineIndependent/glslang_tab.cpp" +#line 7570 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: UVEC4 */ -#line 1827 "MachineIndependent/glslang.y" + case 232: /* type_specifier_nonarray: UVEC4 */ +#line 1835 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7564 "MachineIndependent/glslang_tab.cpp" +#line 7581 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: MAT2 */ -#line 1833 "MachineIndependent/glslang.y" + case 233: /* type_specifier_nonarray: MAT2 */ +#line 1841 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7574 "MachineIndependent/glslang_tab.cpp" +#line 7591 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: MAT3 */ -#line 1838 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: MAT3 */ +#line 1846 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7584 "MachineIndependent/glslang_tab.cpp" +#line 7601 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: MAT4 */ -#line 1843 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: MAT4 */ +#line 1851 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7594 "MachineIndependent/glslang_tab.cpp" +#line 7611 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: MAT2X2 */ -#line 1848 "MachineIndependent/glslang.y" + case 236: /* type_specifier_nonarray: MAT2X2 */ +#line 1856 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7604 "MachineIndependent/glslang_tab.cpp" +#line 7621 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: MAT2X3 */ -#line 1853 "MachineIndependent/glslang.y" + case 237: /* type_specifier_nonarray: MAT2X3 */ +#line 1861 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7614 "MachineIndependent/glslang_tab.cpp" +#line 7631 "MachineIndependent/glslang_tab.cpp" break; - case 237: /* type_specifier_nonarray: MAT2X4 */ -#line 1858 "MachineIndependent/glslang.y" + case 238: /* type_specifier_nonarray: MAT2X4 */ +#line 1866 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7624 "MachineIndependent/glslang_tab.cpp" +#line 7641 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: MAT3X2 */ -#line 1863 "MachineIndependent/glslang.y" + case 239: /* type_specifier_nonarray: MAT3X2 */ +#line 1871 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7634 "MachineIndependent/glslang_tab.cpp" +#line 7651 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: MAT3X3 */ -#line 1868 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: MAT3X3 */ +#line 1876 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7644 "MachineIndependent/glslang_tab.cpp" +#line 7661 "MachineIndependent/glslang_tab.cpp" break; - case 240: /* type_specifier_nonarray: MAT3X4 */ -#line 1873 "MachineIndependent/glslang.y" + case 241: /* type_specifier_nonarray: MAT3X4 */ +#line 1881 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7654 "MachineIndependent/glslang_tab.cpp" +#line 7671 "MachineIndependent/glslang_tab.cpp" break; - case 241: /* type_specifier_nonarray: MAT4X2 */ -#line 1878 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT4X2 */ +#line 1886 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7664 "MachineIndependent/glslang_tab.cpp" +#line 7681 "MachineIndependent/glslang_tab.cpp" break; - case 242: /* type_specifier_nonarray: MAT4X3 */ -#line 1883 "MachineIndependent/glslang.y" + case 243: /* type_specifier_nonarray: MAT4X3 */ +#line 1891 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7674 "MachineIndependent/glslang_tab.cpp" +#line 7691 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT4X4 */ -#line 1888 "MachineIndependent/glslang.y" + case 244: /* type_specifier_nonarray: MAT4X4 */ +#line 1896 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7684 "MachineIndependent/glslang_tab.cpp" +#line 7701 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: DOUBLE */ -#line 1894 "MachineIndependent/glslang.y" + case 245: /* type_specifier_nonarray: DOUBLE */ +#line 1902 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7692,121 +7709,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7696 "MachineIndependent/glslang_tab.cpp" +#line 7713 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: FLOAT16_T */ -#line 1901 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: FLOAT16_T */ +#line 1909 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7706 "MachineIndependent/glslang_tab.cpp" +#line 7723 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: FLOAT32_T */ -#line 1906 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: FLOAT32_T */ +#line 1914 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7716 "MachineIndependent/glslang_tab.cpp" +#line 7733 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: FLOAT64_T */ -#line 1911 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: FLOAT64_T */ +#line 1919 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7726 "MachineIndependent/glslang_tab.cpp" +#line 7743 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: INT8_T */ -#line 1916 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: INT8_T */ +#line 1924 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7736 "MachineIndependent/glslang_tab.cpp" +#line 7753 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: UINT8_T */ -#line 1921 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: UINT8_T */ +#line 1929 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7746 "MachineIndependent/glslang_tab.cpp" +#line 7763 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: INT16_T */ -#line 1926 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: INT16_T */ +#line 1934 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7756 "MachineIndependent/glslang_tab.cpp" +#line 7773 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: UINT16_T */ -#line 1931 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: UINT16_T */ +#line 1939 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7766 "MachineIndependent/glslang_tab.cpp" +#line 7783 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: INT32_T */ -#line 1936 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: INT32_T */ +#line 1944 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7776 "MachineIndependent/glslang_tab.cpp" +#line 7793 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: UINT32_T */ -#line 1941 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: UINT32_T */ +#line 1949 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7786 "MachineIndependent/glslang_tab.cpp" +#line 7803 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: INT64_T */ -#line 1946 "MachineIndependent/glslang.y" + case 255: /* type_specifier_nonarray: INT64_T */ +#line 1954 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7796 "MachineIndependent/glslang_tab.cpp" +#line 7813 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: UINT64_T */ -#line 1951 "MachineIndependent/glslang.y" + case 256: /* type_specifier_nonarray: UINT64_T */ +#line 1959 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7806 "MachineIndependent/glslang_tab.cpp" +#line 7823 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: DVEC2 */ -#line 1956 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: DVEC2 */ +#line 1964 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7815,11 +7832,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7819 "MachineIndependent/glslang_tab.cpp" +#line 7836 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: DVEC3 */ -#line 1964 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: DVEC3 */ +#line 1972 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7828,11 +7845,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7832 "MachineIndependent/glslang_tab.cpp" +#line 7849 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: DVEC4 */ -#line 1972 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: DVEC4 */ +#line 1980 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7841,374 +7858,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7845 "MachineIndependent/glslang_tab.cpp" +#line 7862 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: F16VEC2 */ -#line 1980 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: F16VEC2 */ +#line 1988 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7856 "MachineIndependent/glslang_tab.cpp" +#line 7873 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: F16VEC3 */ -#line 1986 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: F16VEC3 */ +#line 1994 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7867 "MachineIndependent/glslang_tab.cpp" +#line 7884 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: F16VEC4 */ -#line 1992 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: F16VEC4 */ +#line 2000 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7878 "MachineIndependent/glslang_tab.cpp" +#line 7895 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: F32VEC2 */ -#line 1998 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: F32VEC2 */ +#line 2006 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7889 "MachineIndependent/glslang_tab.cpp" +#line 7906 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: F32VEC3 */ -#line 2004 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: F32VEC3 */ +#line 2012 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7900 "MachineIndependent/glslang_tab.cpp" +#line 7917 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: F32VEC4 */ -#line 2010 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: F32VEC4 */ +#line 2018 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7911 "MachineIndependent/glslang_tab.cpp" +#line 7928 "MachineIndependent/glslang_tab.cpp" break; - case 265: /* type_specifier_nonarray: F64VEC2 */ -#line 2016 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: F64VEC2 */ +#line 2024 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7922 "MachineIndependent/glslang_tab.cpp" +#line 7939 "MachineIndependent/glslang_tab.cpp" break; - case 266: /* type_specifier_nonarray: F64VEC3 */ -#line 2022 "MachineIndependent/glslang.y" + case 267: /* type_specifier_nonarray: F64VEC3 */ +#line 2030 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7933 "MachineIndependent/glslang_tab.cpp" +#line 7950 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: F64VEC4 */ -#line 2028 "MachineIndependent/glslang.y" + case 268: /* type_specifier_nonarray: F64VEC4 */ +#line 2036 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7944 "MachineIndependent/glslang_tab.cpp" +#line 7961 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: I8VEC2 */ -#line 2034 "MachineIndependent/glslang.y" + case 269: /* type_specifier_nonarray: I8VEC2 */ +#line 2042 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 7955 "MachineIndependent/glslang_tab.cpp" +#line 7972 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: I8VEC3 */ -#line 2040 "MachineIndependent/glslang.y" + case 270: /* type_specifier_nonarray: I8VEC3 */ +#line 2048 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 7966 "MachineIndependent/glslang_tab.cpp" +#line 7983 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: I8VEC4 */ -#line 2046 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: I8VEC4 */ +#line 2054 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 7977 "MachineIndependent/glslang_tab.cpp" +#line 7994 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: I16VEC2 */ -#line 2052 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: I16VEC2 */ +#line 2060 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 7988 "MachineIndependent/glslang_tab.cpp" +#line 8005 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: I16VEC3 */ -#line 2058 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: I16VEC3 */ +#line 2066 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 7999 "MachineIndependent/glslang_tab.cpp" +#line 8016 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: I16VEC4 */ -#line 2064 "MachineIndependent/glslang.y" + case 274: /* type_specifier_nonarray: I16VEC4 */ +#line 2072 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8010 "MachineIndependent/glslang_tab.cpp" +#line 8027 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: I32VEC2 */ -#line 2070 "MachineIndependent/glslang.y" + case 275: /* type_specifier_nonarray: I32VEC2 */ +#line 2078 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8021 "MachineIndependent/glslang_tab.cpp" +#line 8038 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: I32VEC3 */ -#line 2076 "MachineIndependent/glslang.y" + case 276: /* type_specifier_nonarray: I32VEC3 */ +#line 2084 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8032 "MachineIndependent/glslang_tab.cpp" +#line 8049 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: I32VEC4 */ -#line 2082 "MachineIndependent/glslang.y" + case 277: /* type_specifier_nonarray: I32VEC4 */ +#line 2090 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8043 "MachineIndependent/glslang_tab.cpp" +#line 8060 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: I64VEC2 */ -#line 2088 "MachineIndependent/glslang.y" + case 278: /* type_specifier_nonarray: I64VEC2 */ +#line 2096 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8054 "MachineIndependent/glslang_tab.cpp" +#line 8071 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: I64VEC3 */ -#line 2094 "MachineIndependent/glslang.y" + case 279: /* type_specifier_nonarray: I64VEC3 */ +#line 2102 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8065 "MachineIndependent/glslang_tab.cpp" +#line 8082 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: I64VEC4 */ -#line 2100 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: I64VEC4 */ +#line 2108 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8076 "MachineIndependent/glslang_tab.cpp" +#line 8093 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: U8VEC2 */ -#line 2106 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: U8VEC2 */ +#line 2114 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8087 "MachineIndependent/glslang_tab.cpp" +#line 8104 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: U8VEC3 */ -#line 2112 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: U8VEC3 */ +#line 2120 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8098 "MachineIndependent/glslang_tab.cpp" +#line 8115 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: U8VEC4 */ -#line 2118 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: U8VEC4 */ +#line 2126 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8109 "MachineIndependent/glslang_tab.cpp" +#line 8126 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: U16VEC2 */ -#line 2124 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: U16VEC2 */ +#line 2132 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8120 "MachineIndependent/glslang_tab.cpp" +#line 8137 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: U16VEC3 */ -#line 2130 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: U16VEC3 */ +#line 2138 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8131 "MachineIndependent/glslang_tab.cpp" +#line 8148 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: U16VEC4 */ -#line 2136 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: U16VEC4 */ +#line 2144 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8142 "MachineIndependent/glslang_tab.cpp" +#line 8159 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: U32VEC2 */ -#line 2142 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: U32VEC2 */ +#line 2150 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8153 "MachineIndependent/glslang_tab.cpp" +#line 8170 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: U32VEC3 */ -#line 2148 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: U32VEC3 */ +#line 2156 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8164 "MachineIndependent/glslang_tab.cpp" +#line 8181 "MachineIndependent/glslang_tab.cpp" break; - case 288: /* type_specifier_nonarray: U32VEC4 */ -#line 2154 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: U32VEC4 */ +#line 2162 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8175 "MachineIndependent/glslang_tab.cpp" +#line 8192 "MachineIndependent/glslang_tab.cpp" break; - case 289: /* type_specifier_nonarray: U64VEC2 */ -#line 2160 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: U64VEC2 */ +#line 2168 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8186 "MachineIndependent/glslang_tab.cpp" +#line 8203 "MachineIndependent/glslang_tab.cpp" break; - case 290: /* type_specifier_nonarray: U64VEC3 */ -#line 2166 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: U64VEC3 */ +#line 2174 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8197 "MachineIndependent/glslang_tab.cpp" +#line 8214 "MachineIndependent/glslang_tab.cpp" break; - case 291: /* type_specifier_nonarray: U64VEC4 */ -#line 2172 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: U64VEC4 */ +#line 2180 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8208 "MachineIndependent/glslang_tab.cpp" +#line 8225 "MachineIndependent/glslang_tab.cpp" break; - case 292: /* type_specifier_nonarray: DMAT2 */ -#line 2178 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: DMAT2 */ +#line 2186 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8217,11 +8234,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8221 "MachineIndependent/glslang_tab.cpp" +#line 8238 "MachineIndependent/glslang_tab.cpp" break; - case 293: /* type_specifier_nonarray: DMAT3 */ -#line 2186 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: DMAT3 */ +#line 2194 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8230,11 +8247,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8234 "MachineIndependent/glslang_tab.cpp" +#line 8251 "MachineIndependent/glslang_tab.cpp" break; - case 294: /* type_specifier_nonarray: DMAT4 */ -#line 2194 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: DMAT4 */ +#line 2202 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8243,11 +8260,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8247 "MachineIndependent/glslang_tab.cpp" +#line 8264 "MachineIndependent/glslang_tab.cpp" break; - case 295: /* type_specifier_nonarray: DMAT2X2 */ -#line 2202 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: DMAT2X2 */ +#line 2210 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8256,11 +8273,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8260 "MachineIndependent/glslang_tab.cpp" +#line 8277 "MachineIndependent/glslang_tab.cpp" break; - case 296: /* type_specifier_nonarray: DMAT2X3 */ -#line 2210 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: DMAT2X3 */ +#line 2218 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8269,11 +8286,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8273 "MachineIndependent/glslang_tab.cpp" +#line 8290 "MachineIndependent/glslang_tab.cpp" break; - case 297: /* type_specifier_nonarray: DMAT2X4 */ -#line 2218 "MachineIndependent/glslang.y" + case 298: /* type_specifier_nonarray: DMAT2X4 */ +#line 2226 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8282,11 +8299,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8286 "MachineIndependent/glslang_tab.cpp" +#line 8303 "MachineIndependent/glslang_tab.cpp" break; - case 298: /* type_specifier_nonarray: DMAT3X2 */ -#line 2226 "MachineIndependent/glslang.y" + case 299: /* type_specifier_nonarray: DMAT3X2 */ +#line 2234 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8295,11 +8312,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8299 "MachineIndependent/glslang_tab.cpp" +#line 8316 "MachineIndependent/glslang_tab.cpp" break; - case 299: /* type_specifier_nonarray: DMAT3X3 */ -#line 2234 "MachineIndependent/glslang.y" + case 300: /* type_specifier_nonarray: DMAT3X3 */ +#line 2242 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8308,11 +8325,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8312 "MachineIndependent/glslang_tab.cpp" +#line 8329 "MachineIndependent/glslang_tab.cpp" break; - case 300: /* type_specifier_nonarray: DMAT3X4 */ -#line 2242 "MachineIndependent/glslang.y" + case 301: /* type_specifier_nonarray: DMAT3X4 */ +#line 2250 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8321,11 +8338,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8325 "MachineIndependent/glslang_tab.cpp" +#line 8342 "MachineIndependent/glslang_tab.cpp" break; - case 301: /* type_specifier_nonarray: DMAT4X2 */ -#line 2250 "MachineIndependent/glslang.y" + case 302: /* type_specifier_nonarray: DMAT4X2 */ +#line 2258 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8334,11 +8351,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8338 "MachineIndependent/glslang_tab.cpp" +#line 8355 "MachineIndependent/glslang_tab.cpp" break; - case 302: /* type_specifier_nonarray: DMAT4X3 */ -#line 2258 "MachineIndependent/glslang.y" + case 303: /* type_specifier_nonarray: DMAT4X3 */ +#line 2266 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8347,11 +8364,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8351 "MachineIndependent/glslang_tab.cpp" +#line 8368 "MachineIndependent/glslang_tab.cpp" break; - case 303: /* type_specifier_nonarray: DMAT4X4 */ -#line 2266 "MachineIndependent/glslang.y" + case 304: /* type_specifier_nonarray: DMAT4X4 */ +#line 2274 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8360,2228 +8377,2228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8364 "MachineIndependent/glslang_tab.cpp" +#line 8381 "MachineIndependent/glslang_tab.cpp" break; - case 304: /* type_specifier_nonarray: F16MAT2 */ -#line 2274 "MachineIndependent/glslang.y" + case 305: /* type_specifier_nonarray: F16MAT2 */ +#line 2282 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8375 "MachineIndependent/glslang_tab.cpp" +#line 8392 "MachineIndependent/glslang_tab.cpp" break; - case 305: /* type_specifier_nonarray: F16MAT3 */ -#line 2280 "MachineIndependent/glslang.y" + case 306: /* type_specifier_nonarray: F16MAT3 */ +#line 2288 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8386 "MachineIndependent/glslang_tab.cpp" +#line 8403 "MachineIndependent/glslang_tab.cpp" break; - case 306: /* type_specifier_nonarray: F16MAT4 */ -#line 2286 "MachineIndependent/glslang.y" + case 307: /* type_specifier_nonarray: F16MAT4 */ +#line 2294 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8397 "MachineIndependent/glslang_tab.cpp" +#line 8414 "MachineIndependent/glslang_tab.cpp" break; - case 307: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2292 "MachineIndependent/glslang.y" + case 308: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2300 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8408 "MachineIndependent/glslang_tab.cpp" +#line 8425 "MachineIndependent/glslang_tab.cpp" break; - case 308: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2298 "MachineIndependent/glslang.y" + case 309: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2306 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8419 "MachineIndependent/glslang_tab.cpp" +#line 8436 "MachineIndependent/glslang_tab.cpp" break; - case 309: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2304 "MachineIndependent/glslang.y" + case 310: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2312 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8430 "MachineIndependent/glslang_tab.cpp" +#line 8447 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2310 "MachineIndependent/glslang.y" + case 311: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2318 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8441 "MachineIndependent/glslang_tab.cpp" +#line 8458 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2316 "MachineIndependent/glslang.y" + case 312: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2324 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8452 "MachineIndependent/glslang_tab.cpp" +#line 8469 "MachineIndependent/glslang_tab.cpp" break; - case 312: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2322 "MachineIndependent/glslang.y" + case 313: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2330 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8463 "MachineIndependent/glslang_tab.cpp" +#line 8480 "MachineIndependent/glslang_tab.cpp" break; - case 313: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2328 "MachineIndependent/glslang.y" + case 314: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2336 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8474 "MachineIndependent/glslang_tab.cpp" +#line 8491 "MachineIndependent/glslang_tab.cpp" break; - case 314: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2334 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2342 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8485 "MachineIndependent/glslang_tab.cpp" +#line 8502 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2340 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2348 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8496 "MachineIndependent/glslang_tab.cpp" +#line 8513 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: F32MAT2 */ -#line 2346 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: F32MAT2 */ +#line 2354 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8507 "MachineIndependent/glslang_tab.cpp" +#line 8524 "MachineIndependent/glslang_tab.cpp" break; - case 317: /* type_specifier_nonarray: F32MAT3 */ -#line 2352 "MachineIndependent/glslang.y" + case 318: /* type_specifier_nonarray: F32MAT3 */ +#line 2360 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8518 "MachineIndependent/glslang_tab.cpp" +#line 8535 "MachineIndependent/glslang_tab.cpp" break; - case 318: /* type_specifier_nonarray: F32MAT4 */ -#line 2358 "MachineIndependent/glslang.y" + case 319: /* type_specifier_nonarray: F32MAT4 */ +#line 2366 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8529 "MachineIndependent/glslang_tab.cpp" +#line 8546 "MachineIndependent/glslang_tab.cpp" break; - case 319: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2364 "MachineIndependent/glslang.y" + case 320: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2372 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8540 "MachineIndependent/glslang_tab.cpp" +#line 8557 "MachineIndependent/glslang_tab.cpp" break; - case 320: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2370 "MachineIndependent/glslang.y" + case 321: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2378 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8551 "MachineIndependent/glslang_tab.cpp" +#line 8568 "MachineIndependent/glslang_tab.cpp" break; - case 321: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2376 "MachineIndependent/glslang.y" + case 322: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2384 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8562 "MachineIndependent/glslang_tab.cpp" +#line 8579 "MachineIndependent/glslang_tab.cpp" break; - case 322: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2382 "MachineIndependent/glslang.y" + case 323: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2390 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8573 "MachineIndependent/glslang_tab.cpp" +#line 8590 "MachineIndependent/glslang_tab.cpp" break; - case 323: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2388 "MachineIndependent/glslang.y" + case 324: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2396 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8584 "MachineIndependent/glslang_tab.cpp" +#line 8601 "MachineIndependent/glslang_tab.cpp" break; - case 324: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2394 "MachineIndependent/glslang.y" + case 325: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2402 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8595 "MachineIndependent/glslang_tab.cpp" +#line 8612 "MachineIndependent/glslang_tab.cpp" break; - case 325: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2400 "MachineIndependent/glslang.y" + case 326: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2408 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8606 "MachineIndependent/glslang_tab.cpp" +#line 8623 "MachineIndependent/glslang_tab.cpp" break; - case 326: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2406 "MachineIndependent/glslang.y" + case 327: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2414 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8617 "MachineIndependent/glslang_tab.cpp" +#line 8634 "MachineIndependent/glslang_tab.cpp" break; - case 327: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2412 "MachineIndependent/glslang.y" + case 328: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2420 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8628 "MachineIndependent/glslang_tab.cpp" +#line 8645 "MachineIndependent/glslang_tab.cpp" break; - case 328: /* type_specifier_nonarray: F64MAT2 */ -#line 2418 "MachineIndependent/glslang.y" + case 329: /* type_specifier_nonarray: F64MAT2 */ +#line 2426 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8639 "MachineIndependent/glslang_tab.cpp" +#line 8656 "MachineIndependent/glslang_tab.cpp" break; - case 329: /* type_specifier_nonarray: F64MAT3 */ -#line 2424 "MachineIndependent/glslang.y" + case 330: /* type_specifier_nonarray: F64MAT3 */ +#line 2432 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8650 "MachineIndependent/glslang_tab.cpp" +#line 8667 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F64MAT4 */ -#line 2430 "MachineIndependent/glslang.y" + case 331: /* type_specifier_nonarray: F64MAT4 */ +#line 2438 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8661 "MachineIndependent/glslang_tab.cpp" +#line 8678 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2436 "MachineIndependent/glslang.y" + case 332: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2444 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8672 "MachineIndependent/glslang_tab.cpp" +#line 8689 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2442 "MachineIndependent/glslang.y" + case 333: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2450 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8683 "MachineIndependent/glslang_tab.cpp" +#line 8700 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2448 "MachineIndependent/glslang.y" + case 334: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2456 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8694 "MachineIndependent/glslang_tab.cpp" +#line 8711 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2454 "MachineIndependent/glslang.y" + case 335: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2462 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8705 "MachineIndependent/glslang_tab.cpp" +#line 8722 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2460 "MachineIndependent/glslang.y" + case 336: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2468 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8716 "MachineIndependent/glslang_tab.cpp" +#line 8733 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2466 "MachineIndependent/glslang.y" + case 337: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2474 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8727 "MachineIndependent/glslang_tab.cpp" +#line 8744 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2472 "MachineIndependent/glslang.y" + case 338: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2480 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8738 "MachineIndependent/glslang_tab.cpp" +#line 8755 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2478 "MachineIndependent/glslang.y" + case 339: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2486 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8749 "MachineIndependent/glslang_tab.cpp" +#line 8766 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2484 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2492 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8760 "MachineIndependent/glslang_tab.cpp" +#line 8777 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2490 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2498 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8769 "MachineIndependent/glslang_tab.cpp" +#line 8786 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2494 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2502 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8778 "MachineIndependent/glslang_tab.cpp" +#line 8795 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2498 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2506 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8787 "MachineIndependent/glslang_tab.cpp" +#line 8804 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2502 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2510 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8797 "MachineIndependent/glslang_tab.cpp" +#line 8814 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: SAMPLER1D */ -#line 2507 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: SAMPLER1D */ +#line 2515 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8807 "MachineIndependent/glslang_tab.cpp" +#line 8824 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: SAMPLER2D */ -#line 2513 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: SAMPLER2D */ +#line 2521 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8817 "MachineIndependent/glslang_tab.cpp" +#line 8834 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: SAMPLER3D */ -#line 2518 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: SAMPLER3D */ +#line 2526 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8827 "MachineIndependent/glslang_tab.cpp" +#line 8844 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2523 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2531 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8837 "MachineIndependent/glslang_tab.cpp" +#line 8854 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2528 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2536 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8847 "MachineIndependent/glslang_tab.cpp" +#line 8864 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2533 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2541 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8857 "MachineIndependent/glslang_tab.cpp" +#line 8874 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2538 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2546 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8867 "MachineIndependent/glslang_tab.cpp" +#line 8884 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2543 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2551 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8877 "MachineIndependent/glslang_tab.cpp" +#line 8894 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2549 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2557 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 8887 "MachineIndependent/glslang_tab.cpp" +#line 8904 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2554 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2562 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 8897 "MachineIndependent/glslang_tab.cpp" +#line 8914 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2559 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2567 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8907 "MachineIndependent/glslang_tab.cpp" +#line 8924 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2564 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2572 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 8917 "MachineIndependent/glslang_tab.cpp" +#line 8934 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2569 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2577 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 8927 "MachineIndependent/glslang_tab.cpp" +#line 8944 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2574 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2582 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 8938 "MachineIndependent/glslang_tab.cpp" +#line 8955 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2580 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2588 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 8949 "MachineIndependent/glslang_tab.cpp" +#line 8966 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2586 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2594 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 8960 "MachineIndependent/glslang_tab.cpp" +#line 8977 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2592 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2600 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 8971 "MachineIndependent/glslang_tab.cpp" +#line 8988 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2598 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2606 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 8982 "MachineIndependent/glslang_tab.cpp" +#line 8999 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2604 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2612 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 8993 "MachineIndependent/glslang_tab.cpp" +#line 9010 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2610 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2618 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9004 "MachineIndependent/glslang_tab.cpp" +#line 9021 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2616 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2624 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9015 "MachineIndependent/glslang_tab.cpp" +#line 9032 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2622 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2630 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9026 "MachineIndependent/glslang_tab.cpp" +#line 9043 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2628 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2636 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9037 "MachineIndependent/glslang_tab.cpp" +#line 9054 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2634 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2642 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9048 "MachineIndependent/glslang_tab.cpp" +#line 9065 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2640 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2648 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9059 "MachineIndependent/glslang_tab.cpp" +#line 9076 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2646 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2654 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9070 "MachineIndependent/glslang_tab.cpp" +#line 9087 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2652 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2660 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9080 "MachineIndependent/glslang_tab.cpp" +#line 9097 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2658 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2666 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9090 "MachineIndependent/glslang_tab.cpp" +#line 9107 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2663 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2671 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9100 "MachineIndependent/glslang_tab.cpp" +#line 9117 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2668 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2676 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9110 "MachineIndependent/glslang_tab.cpp" +#line 9127 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2673 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2681 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9120 "MachineIndependent/glslang_tab.cpp" +#line 9137 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: USAMPLER2D */ -#line 2678 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: USAMPLER2D */ +#line 2686 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9130 "MachineIndependent/glslang_tab.cpp" +#line 9147 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: USAMPLER3D */ -#line 2683 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: USAMPLER3D */ +#line 2691 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9140 "MachineIndependent/glslang_tab.cpp" +#line 9157 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2688 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2696 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9150 "MachineIndependent/glslang_tab.cpp" +#line 9167 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2694 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2702 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9160 "MachineIndependent/glslang_tab.cpp" +#line 9177 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2699 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2707 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9170 "MachineIndependent/glslang_tab.cpp" +#line 9187 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: USAMPLER1D */ -#line 2704 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: USAMPLER1D */ +#line 2712 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9180 "MachineIndependent/glslang_tab.cpp" +#line 9197 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2709 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2717 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9190 "MachineIndependent/glslang_tab.cpp" +#line 9207 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2714 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2722 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9200 "MachineIndependent/glslang_tab.cpp" +#line 9217 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2719 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2727 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9210 "MachineIndependent/glslang_tab.cpp" +#line 9227 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2724 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2732 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9220 "MachineIndependent/glslang_tab.cpp" +#line 9237 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2729 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2737 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9230 "MachineIndependent/glslang_tab.cpp" +#line 9247 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2735 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2743 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9240 "MachineIndependent/glslang_tab.cpp" +#line 9257 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: TEXTURE2D */ -#line 2740 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: TEXTURE2D */ +#line 2748 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9250 "MachineIndependent/glslang_tab.cpp" +#line 9267 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: TEXTURE3D */ -#line 2745 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: TEXTURE3D */ +#line 2753 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9260 "MachineIndependent/glslang_tab.cpp" +#line 9277 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2750 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2758 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9270 "MachineIndependent/glslang_tab.cpp" +#line 9287 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2755 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2763 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9280 "MachineIndependent/glslang_tab.cpp" +#line 9297 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2760 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2768 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9290 "MachineIndependent/glslang_tab.cpp" +#line 9307 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2765 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2773 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9300 "MachineIndependent/glslang_tab.cpp" +#line 9317 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2770 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2778 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9310 "MachineIndependent/glslang_tab.cpp" +#line 9327 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2775 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2783 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9320 "MachineIndependent/glslang_tab.cpp" +#line 9337 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2780 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2788 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9330 "MachineIndependent/glslang_tab.cpp" +#line 9347 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2785 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2793 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9340 "MachineIndependent/glslang_tab.cpp" +#line 9357 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2790 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2798 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9350 "MachineIndependent/glslang_tab.cpp" +#line 9367 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2795 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2803 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9360 "MachineIndependent/glslang_tab.cpp" +#line 9377 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: SAMPLER */ -#line 2800 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: SAMPLER */ +#line 2808 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9370 "MachineIndependent/glslang_tab.cpp" +#line 9387 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2805 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2813 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9380 "MachineIndependent/glslang_tab.cpp" +#line 9397 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2811 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2819 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9390 "MachineIndependent/glslang_tab.cpp" +#line 9407 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2816 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2824 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9400 "MachineIndependent/glslang_tab.cpp" +#line 9417 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2821 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2829 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9411 "MachineIndependent/glslang_tab.cpp" +#line 9428 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2827 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2835 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9422 "MachineIndependent/glslang_tab.cpp" +#line 9439 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2833 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2841 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9432 "MachineIndependent/glslang_tab.cpp" +#line 9449 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2838 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2846 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9442 "MachineIndependent/glslang_tab.cpp" +#line 9459 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2843 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2851 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9452 "MachineIndependent/glslang_tab.cpp" +#line 9469 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2848 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2856 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9463 "MachineIndependent/glslang_tab.cpp" +#line 9480 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2854 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2862 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9473 "MachineIndependent/glslang_tab.cpp" +#line 9490 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2859 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2867 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9483 "MachineIndependent/glslang_tab.cpp" +#line 9500 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2864 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2872 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9493 "MachineIndependent/glslang_tab.cpp" +#line 9510 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2869 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2877 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9504 "MachineIndependent/glslang_tab.cpp" +#line 9521 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2875 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9514 "MachineIndependent/glslang_tab.cpp" +#line 9531 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2880 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9524 "MachineIndependent/glslang_tab.cpp" +#line 9541 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2885 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2893 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9534 "MachineIndependent/glslang_tab.cpp" +#line 9551 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2890 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2898 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9545 "MachineIndependent/glslang_tab.cpp" +#line 9562 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2896 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9555 "MachineIndependent/glslang_tab.cpp" +#line 9572 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2901 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9565 "MachineIndependent/glslang_tab.cpp" +#line 9582 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: TEXTURE1D */ -#line 2906 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: TEXTURE1D */ +#line 2914 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9575 "MachineIndependent/glslang_tab.cpp" +#line 9592 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2911 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2919 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9586 "MachineIndependent/glslang_tab.cpp" +#line 9603 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2917 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2925 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9597 "MachineIndependent/glslang_tab.cpp" +#line 9614 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2923 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2931 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9608 "MachineIndependent/glslang_tab.cpp" +#line 9625 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2929 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2937 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9619 "MachineIndependent/glslang_tab.cpp" +#line 9636 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2935 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2943 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9629 "MachineIndependent/glslang_tab.cpp" +#line 9646 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2940 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2948 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9640 "MachineIndependent/glslang_tab.cpp" +#line 9657 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2946 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2954 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9651 "MachineIndependent/glslang_tab.cpp" +#line 9668 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2952 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 2960 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9662 "MachineIndependent/glslang_tab.cpp" +#line 9679 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2958 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: ITEXTURE1D */ +#line 2966 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9672 "MachineIndependent/glslang_tab.cpp" +#line 9689 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2963 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 2971 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9682 "MachineIndependent/glslang_tab.cpp" +#line 9699 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2968 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: UTEXTURE1D */ +#line 2976 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9692 "MachineIndependent/glslang_tab.cpp" +#line 9709 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2973 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 2981 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9702 "MachineIndependent/glslang_tab.cpp" +#line 9719 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 2978 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 2986 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9712 "MachineIndependent/glslang_tab.cpp" +#line 9729 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 2983 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 2991 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9723 "MachineIndependent/glslang_tab.cpp" +#line 9740 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 2989 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 2997 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9733 "MachineIndependent/glslang_tab.cpp" +#line 9750 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 2994 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 3002 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9743 "MachineIndependent/glslang_tab.cpp" +#line 9760 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 2999 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 3007 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9753 "MachineIndependent/glslang_tab.cpp" +#line 9770 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3004 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3012 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9764 "MachineIndependent/glslang_tab.cpp" +#line 9781 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3010 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3018 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9774 "MachineIndependent/glslang_tab.cpp" +#line 9791 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3015 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3023 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9784 "MachineIndependent/glslang_tab.cpp" +#line 9801 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3020 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3028 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9794 "MachineIndependent/glslang_tab.cpp" +#line 9811 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3025 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3033 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9805 "MachineIndependent/glslang_tab.cpp" +#line 9822 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3031 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3039 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9815 "MachineIndependent/glslang_tab.cpp" +#line 9832 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3036 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3044 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9825 "MachineIndependent/glslang_tab.cpp" +#line 9842 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3041 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3049 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9835 "MachineIndependent/glslang_tab.cpp" +#line 9852 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3046 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3054 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9846 "MachineIndependent/glslang_tab.cpp" +#line 9863 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3052 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3060 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9856 "MachineIndependent/glslang_tab.cpp" +#line 9873 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3057 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3065 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9866 "MachineIndependent/glslang_tab.cpp" +#line 9883 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: IMAGE1D */ -#line 3062 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: IMAGE1D */ +#line 3070 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9876 "MachineIndependent/glslang_tab.cpp" +#line 9893 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3067 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3075 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 9887 "MachineIndependent/glslang_tab.cpp" +#line 9904 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: IIMAGE1D */ -#line 3073 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: IIMAGE1D */ +#line 3081 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 9897 "MachineIndependent/glslang_tab.cpp" +#line 9914 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: UIMAGE1D */ -#line 3078 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: UIMAGE1D */ +#line 3086 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9907 "MachineIndependent/glslang_tab.cpp" +#line 9924 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: IMAGE2D */ -#line 3083 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: IMAGE2D */ +#line 3091 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 9917 "MachineIndependent/glslang_tab.cpp" +#line 9934 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3088 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3096 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 9928 "MachineIndependent/glslang_tab.cpp" +#line 9945 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: IIMAGE2D */ -#line 3094 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: IIMAGE2D */ +#line 3102 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 9938 "MachineIndependent/glslang_tab.cpp" +#line 9955 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: UIMAGE2D */ -#line 3099 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: UIMAGE2D */ +#line 3107 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 9948 "MachineIndependent/glslang_tab.cpp" +#line 9965 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: IMAGE3D */ -#line 3104 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: IMAGE3D */ +#line 3112 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 9958 "MachineIndependent/glslang_tab.cpp" +#line 9975 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3109 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3117 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 9969 "MachineIndependent/glslang_tab.cpp" +#line 9986 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: IIMAGE3D */ -#line 3115 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: IIMAGE3D */ +#line 3123 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 9979 "MachineIndependent/glslang_tab.cpp" +#line 9996 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: UIMAGE3D */ -#line 3120 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: UIMAGE3D */ +#line 3128 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 9989 "MachineIndependent/glslang_tab.cpp" +#line 10006 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3125 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3133 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 9999 "MachineIndependent/glslang_tab.cpp" +#line 10016 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3130 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3138 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10010 "MachineIndependent/glslang_tab.cpp" +#line 10027 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3136 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3144 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10020 "MachineIndependent/glslang_tab.cpp" +#line 10037 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3141 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3149 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10030 "MachineIndependent/glslang_tab.cpp" +#line 10047 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: IMAGECUBE */ -#line 3146 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: IMAGECUBE */ +#line 3154 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10040 "MachineIndependent/glslang_tab.cpp" +#line 10057 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3151 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3159 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10051 "MachineIndependent/glslang_tab.cpp" +#line 10068 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3157 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3165 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10061 "MachineIndependent/glslang_tab.cpp" +#line 10078 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3162 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3170 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10071 "MachineIndependent/glslang_tab.cpp" +#line 10088 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3167 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3175 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10081 "MachineIndependent/glslang_tab.cpp" +#line 10098 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3172 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3180 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10092 "MachineIndependent/glslang_tab.cpp" +#line 10109 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3178 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3186 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10102 "MachineIndependent/glslang_tab.cpp" +#line 10119 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3183 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3191 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10112 "MachineIndependent/glslang_tab.cpp" +#line 10129 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3188 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3196 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10122 "MachineIndependent/glslang_tab.cpp" +#line 10139 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3193 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3201 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10133 "MachineIndependent/glslang_tab.cpp" +#line 10150 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3199 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3207 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10143 "MachineIndependent/glslang_tab.cpp" +#line 10160 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3204 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3212 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10153 "MachineIndependent/glslang_tab.cpp" +#line 10170 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3209 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3217 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10163 "MachineIndependent/glslang_tab.cpp" +#line 10180 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3214 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3222 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10174 "MachineIndependent/glslang_tab.cpp" +#line 10191 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3220 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3228 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10184 "MachineIndependent/glslang_tab.cpp" +#line 10201 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3225 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3233 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10194 "MachineIndependent/glslang_tab.cpp" +#line 10211 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3230 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3238 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10204 "MachineIndependent/glslang_tab.cpp" +#line 10221 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3235 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3243 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10215 "MachineIndependent/glslang_tab.cpp" +#line 10232 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3241 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3249 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10225 "MachineIndependent/glslang_tab.cpp" +#line 10242 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3246 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3254 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10235 "MachineIndependent/glslang_tab.cpp" +#line 10252 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3251 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3259 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10245 "MachineIndependent/glslang_tab.cpp" +#line 10262 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3256 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3264 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10256 "MachineIndependent/glslang_tab.cpp" +#line 10273 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3262 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3270 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10266 "MachineIndependent/glslang_tab.cpp" +#line 10283 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3267 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3275 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10276 "MachineIndependent/glslang_tab.cpp" +#line 10293 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3272 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3280 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10286 "MachineIndependent/glslang_tab.cpp" +#line 10303 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3277 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3285 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10297 "MachineIndependent/glslang_tab.cpp" +#line 10314 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3283 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3291 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10307 "MachineIndependent/glslang_tab.cpp" +#line 10324 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3288 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10317 "MachineIndependent/glslang_tab.cpp" +#line 10334 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3293 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10327 "MachineIndependent/glslang_tab.cpp" +#line 10344 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3298 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10337 "MachineIndependent/glslang_tab.cpp" +#line 10354 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3303 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3311 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10347 "MachineIndependent/glslang_tab.cpp" +#line 10364 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3308 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3316 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10357 "MachineIndependent/glslang_tab.cpp" +#line 10374 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3313 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3321 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10367 "MachineIndependent/glslang_tab.cpp" +#line 10384 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3318 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3326 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10377 "MachineIndependent/glslang_tab.cpp" +#line 10394 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3323 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3331 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10387 "MachineIndependent/glslang_tab.cpp" +#line 10404 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3328 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3336 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10397 "MachineIndependent/glslang_tab.cpp" +#line 10414 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3333 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3341 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10407 "MachineIndependent/glslang_tab.cpp" +#line 10424 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3338 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3346 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10417 "MachineIndependent/glslang_tab.cpp" +#line 10434 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3343 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3351 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10427 "MachineIndependent/glslang_tab.cpp" +#line 10444 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3348 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3356 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10437 "MachineIndependent/glslang_tab.cpp" +#line 10454 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3353 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3361 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10447 "MachineIndependent/glslang_tab.cpp" +#line 10464 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3358 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3366 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10457 "MachineIndependent/glslang_tab.cpp" +#line 10474 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3363 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3371 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10467 "MachineIndependent/glslang_tab.cpp" +#line 10484 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3368 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3376 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10477 "MachineIndependent/glslang_tab.cpp" +#line 10494 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3373 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3381 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10487 "MachineIndependent/glslang_tab.cpp" +#line 10504 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3378 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3386 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10497 "MachineIndependent/glslang_tab.cpp" +#line 10514 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3383 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3391 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10507 "MachineIndependent/glslang_tab.cpp" +#line 10524 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3388 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3396 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10517 "MachineIndependent/glslang_tab.cpp" +#line 10534 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3393 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3401 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10527 "MachineIndependent/glslang_tab.cpp" +#line 10544 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3398 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3406 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10537 "MachineIndependent/glslang_tab.cpp" +#line 10554 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3403 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3411 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10548 "MachineIndependent/glslang_tab.cpp" +#line 10565 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3409 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3417 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10559 "MachineIndependent/glslang_tab.cpp" +#line 10576 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3415 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3423 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10570 "MachineIndependent/glslang_tab.cpp" +#line 10587 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3421 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3429 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10581 "MachineIndependent/glslang_tab.cpp" +#line 10598 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3427 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3435 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10589,11 +10606,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10593 "MachineIndependent/glslang_tab.cpp" +#line 10610 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3434 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3442 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10601,107 +10618,107 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10605 "MachineIndependent/glslang_tab.cpp" +#line 10622 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3441 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3449 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10616 "MachineIndependent/glslang_tab.cpp" +#line 10633 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3447 "MachineIndependent/glslang.y" + case 522: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3455 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10627 "MachineIndependent/glslang_tab.cpp" +#line 10644 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3453 "MachineIndependent/glslang.y" + case 523: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3461 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10638 "MachineIndependent/glslang_tab.cpp" +#line 10655 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3459 "MachineIndependent/glslang.y" + case 524: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3467 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10649 "MachineIndependent/glslang_tab.cpp" +#line 10666 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3465 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3473 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 10660 "MachineIndependent/glslang_tab.cpp" +#line 10677 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3471 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3479 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 10671 "MachineIndependent/glslang_tab.cpp" +#line 10688 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3477 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3485 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10682 "MachineIndependent/glslang_tab.cpp" +#line 10699 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3483 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3491 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10691 "MachineIndependent/glslang_tab.cpp" +#line 10708 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: struct_specifier */ -#line 3488 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: struct_specifier */ +#line 3496 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10701 "MachineIndependent/glslang_tab.cpp" +#line 10718 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: TYPE_NAME */ -#line 3493 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: TYPE_NAME */ +#line 3501 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10715,47 +10732,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10719 "MachineIndependent/glslang_tab.cpp" +#line 10736 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* precision_qualifier: HIGH_PRECISION */ -#line 3509 "MachineIndependent/glslang.y" + case 531: /* precision_qualifier: HIGH_PRECISION */ +#line 3517 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10729 "MachineIndependent/glslang_tab.cpp" +#line 10746 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3514 "MachineIndependent/glslang.y" + case 532: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3522 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10739 "MachineIndependent/glslang_tab.cpp" +#line 10756 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* precision_qualifier: LOW_PRECISION */ -#line 3519 "MachineIndependent/glslang.y" + case 533: /* precision_qualifier: LOW_PRECISION */ +#line 3527 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10749 "MachineIndependent/glslang_tab.cpp" +#line 10766 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* $@3: %empty */ -#line 3527 "MachineIndependent/glslang.y" + case 534: /* $@3: %empty */ +#line 3535 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10755 "MachineIndependent/glslang_tab.cpp" +#line 10772 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3527 "MachineIndependent/glslang.y" + case 535: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3535 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10767,17 +10784,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10771 "MachineIndependent/glslang_tab.cpp" +#line 10788 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* $@4: %empty */ -#line 3538 "MachineIndependent/glslang.y" + case 536: /* $@4: %empty */ +#line 3546 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10777 "MachineIndependent/glslang_tab.cpp" +#line 10794 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3538 "MachineIndependent/glslang.y" + case 537: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3546 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10785,19 +10802,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10789 "MachineIndependent/glslang_tab.cpp" +#line 10806 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* struct_declaration_list: struct_declaration */ -#line 3548 "MachineIndependent/glslang.y" + case 538: /* struct_declaration_list: struct_declaration */ +#line 3556 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10797 "MachineIndependent/glslang_tab.cpp" +#line 10814 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3551 "MachineIndependent/glslang.y" + case 539: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3559 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10808,11 +10825,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10812 "MachineIndependent/glslang_tab.cpp" +#line 10829 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3564 "MachineIndependent/glslang.y" + case 540: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3572 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10835,11 +10852,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10839 "MachineIndependent/glslang_tab.cpp" +#line 10856 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3586 "MachineIndependent/glslang.y" + case 541: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3594 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10864,38 +10881,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10868 "MachineIndependent/glslang_tab.cpp" +#line 10885 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* struct_declarator_list: struct_declarator */ -#line 3613 "MachineIndependent/glslang.y" + case 542: /* struct_declarator_list: struct_declarator */ +#line 3621 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10877 "MachineIndependent/glslang_tab.cpp" +#line 10894 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3617 "MachineIndependent/glslang.y" + case 543: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3625 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10885 "MachineIndependent/glslang_tab.cpp" +#line 10902 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* struct_declarator: IDENTIFIER */ -#line 3623 "MachineIndependent/glslang.y" + case 544: /* struct_declarator: IDENTIFIER */ +#line 3631 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 10895 "MachineIndependent/glslang_tab.cpp" +#line 10912 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3628 "MachineIndependent/glslang.y" + case 545: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3636 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -10904,246 +10921,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 10908 "MachineIndependent/glslang_tab.cpp" +#line 10925 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* initializer: assignment_expression */ -#line 3639 "MachineIndependent/glslang.y" + case 546: /* initializer: assignment_expression */ +#line 3647 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10916 "MachineIndependent/glslang_tab.cpp" +#line 10933 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3643 "MachineIndependent/glslang.y" + case 547: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3651 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 10927 "MachineIndependent/glslang_tab.cpp" +#line 10944 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3649 "MachineIndependent/glslang.y" + case 548: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3657 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 10938 "MachineIndependent/glslang_tab.cpp" +#line 10955 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3655 "MachineIndependent/glslang.y" + case 549: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3663 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 10949 "MachineIndependent/glslang_tab.cpp" +#line 10966 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* initializer_list: initializer */ -#line 3666 "MachineIndependent/glslang.y" + case 550: /* initializer_list: initializer */ +#line 3674 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 10957 "MachineIndependent/glslang_tab.cpp" +#line 10974 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* initializer_list: initializer_list COMMA initializer */ -#line 3669 "MachineIndependent/glslang.y" + case 551: /* initializer_list: initializer_list COMMA initializer */ +#line 3677 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 10965 "MachineIndependent/glslang_tab.cpp" +#line 10982 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* declaration_statement: declaration */ -#line 3676 "MachineIndependent/glslang.y" + case 552: /* declaration_statement: declaration */ +#line 3684 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10971 "MachineIndependent/glslang_tab.cpp" +#line 10988 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* statement: compound_statement */ -#line 3680 "MachineIndependent/glslang.y" + case 553: /* statement: compound_statement */ +#line 3688 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10977 "MachineIndependent/glslang_tab.cpp" +#line 10994 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* statement: simple_statement */ -#line 3681 "MachineIndependent/glslang.y" + case 554: /* statement: simple_statement */ +#line 3689 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10983 "MachineIndependent/glslang_tab.cpp" +#line 11000 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* simple_statement: declaration_statement */ -#line 3687 "MachineIndependent/glslang.y" + case 555: /* simple_statement: declaration_statement */ +#line 3695 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10989 "MachineIndependent/glslang_tab.cpp" +#line 11006 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* simple_statement: expression_statement */ -#line 3688 "MachineIndependent/glslang.y" + case 556: /* simple_statement: expression_statement */ +#line 3696 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10995 "MachineIndependent/glslang_tab.cpp" +#line 11012 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* simple_statement: selection_statement */ -#line 3689 "MachineIndependent/glslang.y" + case 557: /* simple_statement: selection_statement */ +#line 3697 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11001 "MachineIndependent/glslang_tab.cpp" +#line 11018 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* simple_statement: switch_statement */ -#line 3690 "MachineIndependent/glslang.y" + case 558: /* simple_statement: switch_statement */ +#line 3698 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11007 "MachineIndependent/glslang_tab.cpp" +#line 11024 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* simple_statement: case_label */ -#line 3691 "MachineIndependent/glslang.y" + case 559: /* simple_statement: case_label */ +#line 3699 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11013 "MachineIndependent/glslang_tab.cpp" +#line 11030 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* simple_statement: iteration_statement */ -#line 3692 "MachineIndependent/glslang.y" + case 560: /* simple_statement: iteration_statement */ +#line 3700 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11019 "MachineIndependent/glslang_tab.cpp" +#line 11036 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* simple_statement: jump_statement */ -#line 3693 "MachineIndependent/glslang.y" + case 561: /* simple_statement: jump_statement */ +#line 3701 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11025 "MachineIndependent/glslang_tab.cpp" +#line 11042 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* simple_statement: demote_statement */ -#line 3695 "MachineIndependent/glslang.y" + case 562: /* simple_statement: demote_statement */ +#line 3703 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11031 "MachineIndependent/glslang_tab.cpp" +#line 11048 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* demote_statement: DEMOTE SEMICOLON */ -#line 3701 "MachineIndependent/glslang.y" + case 563: /* demote_statement: DEMOTE SEMICOLON */ +#line 3709 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11041 "MachineIndependent/glslang_tab.cpp" +#line 11058 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3710 "MachineIndependent/glslang.y" + case 564: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3718 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11047 "MachineIndependent/glslang_tab.cpp" +#line 11064 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* $@5: %empty */ -#line 3711 "MachineIndependent/glslang.y" + case 565: /* $@5: %empty */ +#line 3719 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11056 "MachineIndependent/glslang_tab.cpp" +#line 11073 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* $@6: %empty */ -#line 3715 "MachineIndependent/glslang.y" + case 566: /* $@6: %empty */ +#line 3723 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11065 "MachineIndependent/glslang_tab.cpp" +#line 11082 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3719 "MachineIndependent/glslang.y" + case 567: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3727 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11075 "MachineIndependent/glslang_tab.cpp" +#line 11092 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3727 "MachineIndependent/glslang.y" + case 568: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3735 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11081 "MachineIndependent/glslang_tab.cpp" +#line 11098 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* statement_no_new_scope: simple_statement */ -#line 3728 "MachineIndependent/glslang.y" + case 569: /* statement_no_new_scope: simple_statement */ +#line 3736 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11087 "MachineIndependent/glslang_tab.cpp" +#line 11104 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* $@7: %empty */ -#line 3732 "MachineIndependent/glslang.y" + case 570: /* $@7: %empty */ +#line 3740 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11095 "MachineIndependent/glslang_tab.cpp" +#line 11112 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* statement_scoped: $@7 compound_statement */ -#line 3735 "MachineIndependent/glslang.y" + case 571: /* statement_scoped: $@7 compound_statement */ +#line 3743 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11104 "MachineIndependent/glslang_tab.cpp" +#line 11121 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* $@8: %empty */ -#line 3739 "MachineIndependent/glslang.y" + case 572: /* $@8: %empty */ +#line 3747 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11114 "MachineIndependent/glslang_tab.cpp" +#line 11131 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* statement_scoped: $@8 simple_statement */ -#line 3744 "MachineIndependent/glslang.y" + case 573: /* statement_scoped: $@8 simple_statement */ +#line 3752 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11125 "MachineIndependent/glslang_tab.cpp" +#line 11142 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3753 "MachineIndependent/glslang.y" + case 574: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3761 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11133 "MachineIndependent/glslang_tab.cpp" +#line 11150 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3756 "MachineIndependent/glslang.y" + case 575: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3764 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11143 "MachineIndependent/glslang_tab.cpp" +#line 11160 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* statement_list: statement */ -#line 3764 "MachineIndependent/glslang.y" + case 576: /* statement_list: statement */ +#line 3772 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11152,11 +11169,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11156 "MachineIndependent/glslang_tab.cpp" +#line 11173 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* statement_list: statement_list statement */ -#line 3772 "MachineIndependent/glslang.y" + case 577: /* statement_list: statement_list statement */ +#line 3780 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11165,77 +11182,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11169 "MachineIndependent/glslang_tab.cpp" +#line 11186 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* expression_statement: SEMICOLON */ -#line 3783 "MachineIndependent/glslang.y" + case 578: /* expression_statement: SEMICOLON */ +#line 3791 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11175 "MachineIndependent/glslang_tab.cpp" +#line 11192 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* expression_statement: expression SEMICOLON */ -#line 3784 "MachineIndependent/glslang.y" + case 579: /* expression_statement: expression SEMICOLON */ +#line 3792 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11181 "MachineIndependent/glslang_tab.cpp" +#line 11198 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* selection_statement: selection_statement_nonattributed */ -#line 3788 "MachineIndependent/glslang.y" + case 580: /* selection_statement: selection_statement_nonattributed */ +#line 3796 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11189 "MachineIndependent/glslang_tab.cpp" +#line 11206 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3792 "MachineIndependent/glslang.y" + case 581: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3800 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11199 "MachineIndependent/glslang_tab.cpp" +#line 11216 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3800 "MachineIndependent/glslang.y" + case 582: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3808 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11208 "MachineIndependent/glslang_tab.cpp" +#line 11225 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3807 "MachineIndependent/glslang.y" + case 583: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3815 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11217 "MachineIndependent/glslang_tab.cpp" +#line 11234 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* selection_rest_statement: statement_scoped */ -#line 3811 "MachineIndependent/glslang.y" + case 584: /* selection_rest_statement: statement_scoped */ +#line 3819 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11226 "MachineIndependent/glslang_tab.cpp" +#line 11243 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* condition: expression */ -#line 3819 "MachineIndependent/glslang.y" + case 585: /* condition: expression */ +#line 3827 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11235 "MachineIndependent/glslang_tab.cpp" +#line 11252 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3823 "MachineIndependent/glslang.y" + case 586: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3831 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11246,29 +11263,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11250 "MachineIndependent/glslang_tab.cpp" +#line 11267 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* switch_statement: switch_statement_nonattributed */ -#line 3836 "MachineIndependent/glslang.y" + case 587: /* switch_statement: switch_statement_nonattributed */ +#line 3844 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11258 "MachineIndependent/glslang_tab.cpp" +#line 11275 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3840 "MachineIndependent/glslang.y" + case 588: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3848 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11268 "MachineIndependent/glslang_tab.cpp" +#line 11285 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* $@9: %empty */ -#line 3848 "MachineIndependent/glslang.y" + case 589: /* $@9: %empty */ +#line 3856 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11277,11 +11294,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11281 "MachineIndependent/glslang_tab.cpp" +#line 11298 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3856 "MachineIndependent/glslang.y" + case 590: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3864 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11291,27 +11308,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11295 "MachineIndependent/glslang_tab.cpp" +#line 11312 "MachineIndependent/glslang_tab.cpp" break; - case 590: /* switch_statement_list: %empty */ -#line 3868 "MachineIndependent/glslang.y" + case 591: /* switch_statement_list: %empty */ +#line 3876 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11303 "MachineIndependent/glslang_tab.cpp" +#line 11320 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* switch_statement_list: statement_list */ -#line 3871 "MachineIndependent/glslang.y" + case 592: /* switch_statement_list: statement_list */ +#line 3879 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11311 "MachineIndependent/glslang_tab.cpp" +#line 11328 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* case_label: CASE expression COLON */ -#line 3877 "MachineIndependent/glslang.y" + case 593: /* case_label: CASE expression COLON */ +#line 3885 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11324,11 +11341,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11328 "MachineIndependent/glslang_tab.cpp" +#line 11345 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* case_label: DEFAULT COLON */ -#line 3889 "MachineIndependent/glslang.y" + case 594: /* case_label: DEFAULT COLON */ +#line 3897 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11338,29 +11355,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11342 "MachineIndependent/glslang_tab.cpp" +#line 11359 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* iteration_statement: iteration_statement_nonattributed */ -#line 3901 "MachineIndependent/glslang.y" + case 595: /* iteration_statement: iteration_statement_nonattributed */ +#line 3909 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11350 "MachineIndependent/glslang_tab.cpp" +#line 11367 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3905 "MachineIndependent/glslang.y" + case 596: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3913 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11360 "MachineIndependent/glslang_tab.cpp" +#line 11377 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* $@10: %empty */ -#line 3913 "MachineIndependent/glslang.y" + case 597: /* $@10: %empty */ +#line 3921 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11369,11 +11386,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11373 "MachineIndependent/glslang_tab.cpp" +#line 11390 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3921 "MachineIndependent/glslang.y" + case 598: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3929 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11381,22 +11398,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11385 "MachineIndependent/glslang_tab.cpp" +#line 11402 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* $@11: %empty */ -#line 3928 "MachineIndependent/glslang.y" + case 599: /* $@11: %empty */ +#line 3936 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11396 "MachineIndependent/glslang_tab.cpp" +#line 11413 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3934 "MachineIndependent/glslang.y" + case 600: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3942 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11409,22 +11426,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11413 "MachineIndependent/glslang_tab.cpp" +#line 11430 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* $@12: %empty */ -#line 3946 "MachineIndependent/glslang.y" + case 601: /* $@12: %empty */ +#line 3954 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11424 "MachineIndependent/glslang_tab.cpp" +#line 11441 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3952 "MachineIndependent/glslang.y" + case 602: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 3960 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11437,81 +11454,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11441 "MachineIndependent/glslang_tab.cpp" +#line 11458 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* for_init_statement: expression_statement */ -#line 3967 "MachineIndependent/glslang.y" + case 603: /* for_init_statement: expression_statement */ +#line 3975 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11449 "MachineIndependent/glslang_tab.cpp" +#line 11466 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* for_init_statement: declaration_statement */ -#line 3970 "MachineIndependent/glslang.y" + case 604: /* for_init_statement: declaration_statement */ +#line 3978 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11457 "MachineIndependent/glslang_tab.cpp" +#line 11474 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* conditionopt: condition */ -#line 3976 "MachineIndependent/glslang.y" + case 605: /* conditionopt: condition */ +#line 3984 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11465 "MachineIndependent/glslang_tab.cpp" +#line 11482 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* conditionopt: %empty */ -#line 3979 "MachineIndependent/glslang.y" + case 606: /* conditionopt: %empty */ +#line 3987 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11473 "MachineIndependent/glslang_tab.cpp" +#line 11490 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* for_rest_statement: conditionopt SEMICOLON */ -#line 3985 "MachineIndependent/glslang.y" + case 607: /* for_rest_statement: conditionopt SEMICOLON */ +#line 3993 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11482 "MachineIndependent/glslang_tab.cpp" +#line 11499 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 3989 "MachineIndependent/glslang.y" + case 608: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 3997 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11491 "MachineIndependent/glslang_tab.cpp" +#line 11508 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* jump_statement: CONTINUE SEMICOLON */ -#line 3996 "MachineIndependent/glslang.y" + case 609: /* jump_statement: CONTINUE SEMICOLON */ +#line 4004 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11501 "MachineIndependent/glslang_tab.cpp" +#line 11518 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* jump_statement: BREAK SEMICOLON */ -#line 4001 "MachineIndependent/glslang.y" + case 610: /* jump_statement: BREAK SEMICOLON */ +#line 4009 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11511 "MachineIndependent/glslang_tab.cpp" +#line 11528 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* jump_statement: RETURN SEMICOLON */ -#line 4006 "MachineIndependent/glslang.y" + case 611: /* jump_statement: RETURN SEMICOLON */ +#line 4014 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11519,101 +11536,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11523 "MachineIndependent/glslang_tab.cpp" +#line 11540 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* jump_statement: RETURN expression SEMICOLON */ -#line 4013 "MachineIndependent/glslang.y" + case 612: /* jump_statement: RETURN expression SEMICOLON */ +#line 4021 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11531 "MachineIndependent/glslang_tab.cpp" +#line 11548 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* jump_statement: DISCARD SEMICOLON */ -#line 4016 "MachineIndependent/glslang.y" + case 613: /* jump_statement: DISCARD SEMICOLON */ +#line 4024 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11540 "MachineIndependent/glslang_tab.cpp" +#line 11557 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4020 "MachineIndependent/glslang.y" + case 614: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4028 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11549 "MachineIndependent/glslang_tab.cpp" +#line 11566 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4025 "MachineIndependent/glslang.y" + case 615: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4033 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11558 "MachineIndependent/glslang_tab.cpp" +#line 11575 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4029 "MachineIndependent/glslang.y" + case 616: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4037 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11567 "MachineIndependent/glslang_tab.cpp" +#line 11584 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* translation_unit: external_declaration */ -#line 4039 "MachineIndependent/glslang.y" + case 617: /* translation_unit: external_declaration */ +#line 4047 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11576 "MachineIndependent/glslang_tab.cpp" +#line 11593 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* translation_unit: translation_unit external_declaration */ -#line 4043 "MachineIndependent/glslang.y" + case 618: /* translation_unit: translation_unit external_declaration */ +#line 4051 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11587 "MachineIndependent/glslang_tab.cpp" +#line 11604 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* external_declaration: function_definition */ -#line 4052 "MachineIndependent/glslang.y" + case 619: /* external_declaration: function_definition */ +#line 4060 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11595 "MachineIndependent/glslang_tab.cpp" +#line 11612 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* external_declaration: declaration */ -#line 4055 "MachineIndependent/glslang.y" + case 620: /* external_declaration: declaration */ +#line 4063 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11603 "MachineIndependent/glslang_tab.cpp" +#line 11620 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* external_declaration: SEMICOLON */ -#line 4059 "MachineIndependent/glslang.y" + case 621: /* external_declaration: SEMICOLON */ +#line 4067 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11613 "MachineIndependent/glslang_tab.cpp" +#line 11630 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* $@13: %empty */ -#line 4068 "MachineIndependent/glslang.y" + case 622: /* $@13: %empty */ +#line 4076 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11626,11 +11643,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11630 "MachineIndependent/glslang_tab.cpp" +#line 11647 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4080 "MachineIndependent/glslang.y" + case 623: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4088 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11657,228 +11674,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11661 "MachineIndependent/glslang_tab.cpp" +#line 11678 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4110 "MachineIndependent/glslang.y" + case 624: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4118 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11669 "MachineIndependent/glslang_tab.cpp" +#line 11686 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* attribute_list: single_attribute */ -#line 4115 "MachineIndependent/glslang.y" + case 625: /* attribute_list: single_attribute */ +#line 4123 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11677 "MachineIndependent/glslang_tab.cpp" +#line 11694 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4118 "MachineIndependent/glslang.y" + case 626: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4126 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11685 "MachineIndependent/glslang_tab.cpp" +#line 11702 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* single_attribute: IDENTIFIER */ -#line 4123 "MachineIndependent/glslang.y" + case 627: /* single_attribute: IDENTIFIER */ +#line 4131 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11693 "MachineIndependent/glslang_tab.cpp" +#line 11710 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4126 "MachineIndependent/glslang.y" + case 628: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4134 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11701 "MachineIndependent/glslang_tab.cpp" +#line 11718 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4133 "MachineIndependent/glslang.y" + case 629: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4141 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11709 "MachineIndependent/glslang_tab.cpp" +#line 11726 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4136 "MachineIndependent/glslang.y" + case 630: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4144 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11717 "MachineIndependent/glslang_tab.cpp" +#line 11734 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4141 "MachineIndependent/glslang.y" + case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4149 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11725 "MachineIndependent/glslang_tab.cpp" +#line 11742 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4144 "MachineIndependent/glslang.y" + case 632: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4152 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11733 "MachineIndependent/glslang_tab.cpp" +#line 11750 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* spirv_extension_list: STRING_LITERAL */ -#line 4149 "MachineIndependent/glslang.y" + case 633: /* spirv_extension_list: STRING_LITERAL */ +#line 4157 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11741 "MachineIndependent/glslang_tab.cpp" +#line 11758 "MachineIndependent/glslang_tab.cpp" break; - case 633: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4152 "MachineIndependent/glslang.y" + case 634: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4160 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11749 "MachineIndependent/glslang_tab.cpp" +#line 11766 "MachineIndependent/glslang_tab.cpp" break; - case 634: /* spirv_capability_list: INTCONSTANT */ -#line 4157 "MachineIndependent/glslang.y" + case 635: /* spirv_capability_list: INTCONSTANT */ +#line 4165 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11757 "MachineIndependent/glslang_tab.cpp" +#line 11774 "MachineIndependent/glslang_tab.cpp" break; - case 635: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4160 "MachineIndependent/glslang.y" + case 636: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4168 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11765 "MachineIndependent/glslang_tab.cpp" +#line 11782 "MachineIndependent/glslang_tab.cpp" break; - case 636: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4165 "MachineIndependent/glslang.y" + case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4173 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11774 "MachineIndependent/glslang_tab.cpp" +#line 11791 "MachineIndependent/glslang_tab.cpp" break; - case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4169 "MachineIndependent/glslang.y" + case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4177 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11784 "MachineIndependent/glslang_tab.cpp" +#line 11801 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4174 "MachineIndependent/glslang.y" + case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4182 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11793 "MachineIndependent/glslang_tab.cpp" +#line 11810 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4178 "MachineIndependent/glslang.y" + case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4186 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11803 "MachineIndependent/glslang_tab.cpp" +#line 11820 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4183 "MachineIndependent/glslang.y" + case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4191 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11812 "MachineIndependent/glslang_tab.cpp" +#line 11829 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4187 "MachineIndependent/glslang.y" + case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4195 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11822 "MachineIndependent/glslang_tab.cpp" +#line 11839 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4194 "MachineIndependent/glslang.y" + case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4202 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 11830 "MachineIndependent/glslang_tab.cpp" +#line 11847 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4197 "MachineIndependent/glslang.y" + case 644: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4205 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11838 "MachineIndependent/glslang_tab.cpp" +#line 11855 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4202 "MachineIndependent/glslang.y" + case 645: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4210 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 11846 "MachineIndependent/glslang_tab.cpp" +#line 11863 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4205 "MachineIndependent/glslang.y" + case 646: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4213 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 11854 "MachineIndependent/glslang_tab.cpp" +#line 11871 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4208 "MachineIndependent/glslang.y" + case 647: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4216 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 11862 "MachineIndependent/glslang_tab.cpp" +#line 11879 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4211 "MachineIndependent/glslang.y" + case 648: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4219 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 11870 "MachineIndependent/glslang_tab.cpp" +#line 11887 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4214 "MachineIndependent/glslang.y" + case 649: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4222 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 11878 "MachineIndependent/glslang_tab.cpp" +#line 11895 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4219 "MachineIndependent/glslang.y" + case 650: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4227 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11888,11 +11905,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 11892 "MachineIndependent/glslang_tab.cpp" +#line 11909 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4228 "MachineIndependent/glslang.y" + case 651: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4236 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11902,156 +11919,156 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11906 "MachineIndependent/glslang_tab.cpp" +#line 11923 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4239 "MachineIndependent/glslang.y" + case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4247 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11916 "MachineIndependent/glslang_tab.cpp" +#line 11933 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4244 "MachineIndependent/glslang.y" + case 653: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4252 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11927 "MachineIndependent/glslang_tab.cpp" +#line 11944 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4252 "MachineIndependent/glslang.y" + case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4260 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11936 "MachineIndependent/glslang_tab.cpp" +#line 11953 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4256 "MachineIndependent/glslang.y" + case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4264 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11946 "MachineIndependent/glslang_tab.cpp" +#line 11963 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4261 "MachineIndependent/glslang.y" + case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4269 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11955 "MachineIndependent/glslang_tab.cpp" +#line 11972 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4265 "MachineIndependent/glslang.y" + case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4273 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11965 "MachineIndependent/glslang_tab.cpp" +#line 11982 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4270 "MachineIndependent/glslang.y" + case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4278 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11974 "MachineIndependent/glslang_tab.cpp" +#line 11991 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4274 "MachineIndependent/glslang.y" + case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4282 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11984 "MachineIndependent/glslang_tab.cpp" +#line 12001 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4279 "MachineIndependent/glslang.y" + case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4287 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11993 "MachineIndependent/glslang_tab.cpp" +#line 12010 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4283 "MachineIndependent/glslang.y" + case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4291 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12003 "MachineIndependent/glslang_tab.cpp" +#line 12020 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4290 "MachineIndependent/glslang.y" + case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4298 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12011 "MachineIndependent/glslang_tab.cpp" +#line 12028 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4293 "MachineIndependent/glslang.y" + case 663: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4301 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12019 "MachineIndependent/glslang_tab.cpp" +#line 12036 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4298 "MachineIndependent/glslang.y" + case 664: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4306 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12027 "MachineIndependent/glslang_tab.cpp" +#line 12044 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4301 "MachineIndependent/glslang.y" + case 665: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4309 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12035 "MachineIndependent/glslang_tab.cpp" +#line 12052 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4304 "MachineIndependent/glslang.y" + case 666: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4312 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12043 "MachineIndependent/glslang_tab.cpp" +#line 12060 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4307 "MachineIndependent/glslang.y" + case 667: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4315 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12051 "MachineIndependent/glslang_tab.cpp" +#line 12068 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_decorate_id_parameter_list: constant_expression */ -#line 4312 "MachineIndependent/glslang.y" + case 668: /* spirv_decorate_id_parameter_list: constant_expression */ +#line 4320 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12060,11 +12077,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12064 "MachineIndependent/glslang_tab.cpp" +#line 12081 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ -#line 4320 "MachineIndependent/glslang.y" + case 669: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ +#line 4328 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12073,139 +12090,139 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12077 "MachineIndependent/glslang_tab.cpp" +#line 12094 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4330 "MachineIndependent/glslang.y" + case 670: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4338 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12086 "MachineIndependent/glslang_tab.cpp" +#line 12103 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4334 "MachineIndependent/glslang.y" + case 671: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4342 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12094 "MachineIndependent/glslang_tab.cpp" +#line 12111 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4339 "MachineIndependent/glslang.y" + case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4347 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12103 "MachineIndependent/glslang_tab.cpp" +#line 12120 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4343 "MachineIndependent/glslang.y" + case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4351 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12113 "MachineIndependent/glslang_tab.cpp" +#line 12130 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4348 "MachineIndependent/glslang.y" + case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4356 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12122 "MachineIndependent/glslang_tab.cpp" +#line 12139 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4352 "MachineIndependent/glslang.y" + case 675: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4360 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12132 "MachineIndependent/glslang_tab.cpp" +#line 12149 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4359 "MachineIndependent/glslang.y" + case 676: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4367 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12140 "MachineIndependent/glslang_tab.cpp" +#line 12157 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4362 "MachineIndependent/glslang.y" + case 677: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4370 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12148 "MachineIndependent/glslang_tab.cpp" +#line 12165 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_type_parameter: constant_expression */ -#line 4367 "MachineIndependent/glslang.y" + case 678: /* spirv_type_parameter: constant_expression */ +#line 4375 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12156 "MachineIndependent/glslang_tab.cpp" +#line 12173 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4372 "MachineIndependent/glslang.y" + case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4380 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12164 "MachineIndependent/glslang_tab.cpp" +#line 12181 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4375 "MachineIndependent/glslang.y" + case 680: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4383 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12173 "MachineIndependent/glslang_tab.cpp" +#line 12190 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4381 "MachineIndependent/glslang.y" + case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4389 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12181 "MachineIndependent/glslang_tab.cpp" +#line 12198 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4384 "MachineIndependent/glslang.y" + case 682: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4392 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12189 "MachineIndependent/glslang_tab.cpp" +#line 12206 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4389 "MachineIndependent/glslang.y" + case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4397 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12197 "MachineIndependent/glslang_tab.cpp" +#line 12214 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4392 "MachineIndependent/glslang.y" + case 684: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4400 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12205 "MachineIndependent/glslang_tab.cpp" +#line 12222 "MachineIndependent/glslang_tab.cpp" break; -#line 12209 "MachineIndependent/glslang_tab.cpp" +#line 12226 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12430,5 +12447,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4397 "MachineIndependent/glslang.y" +#line 4405 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 596a10e6d9..a6871b319b 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -501,11 +501,12 @@ extern int yydebug; SHADERCALLCOHERENT = 702, /* SHADERCALLCOHERENT */ NOPERSPECTIVE = 703, /* NOPERSPECTIVE */ EXPLICITINTERPAMD = 704, /* EXPLICITINTERPAMD */ - PERVERTEXNV = 705, /* PERVERTEXNV */ - PERPRIMITIVENV = 706, /* PERPRIMITIVENV */ - PERVIEWNV = 707, /* PERVIEWNV */ - PERTASKNV = 708, /* PERTASKNV */ - PRECISE = 709 /* PRECISE */ + PERVERTEXEXT = 705, /* PERVERTEXEXT */ + PERVERTEXNV = 706, /* PERVERTEXNV */ + PERPRIMITIVENV = 707, /* PERPRIMITIVENV */ + PERVIEWNV = 708, /* PERVIEWNV */ + PERTASKNV = 709, /* PERTASKNV */ + PRECISE = 710 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -553,7 +554,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 557 "MachineIndependent/glslang_tab.cpp.h" +#line 558 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 7fed096b8d..6e60155aaf 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -2337,7 +2337,7 @@ bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { ! type.getQualifier().patch) || (language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && - type.getQualifier().pervertexNV) || + (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index db4ac26830..f8bed532cf 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -484,7 +484,9 @@ INSTANTIATE_TEST_SUITE_P( "spv.smBuiltins.frag", "spv.builtin.PrimitiveShadingRateEXT.vert", "spv.builtin.ShadingRateEXT.frag", - "spv.atomicAdd.bufferReference.comp" + "spv.atomicAdd.bufferReference.comp", + "spv.fragmentShaderBarycentric3.frag", + "spv.fragmentShaderBarycentric4.frag", })), FileNameAsCustomTestSuffix ); From 25e97a5b06c6bac9db7b924257d023648652ee5c Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Tue, 24 May 2022 13:31:03 -0600 Subject: [PATCH 054/594] Fix build for clang + mingw32-make Fixes #2951 --- CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a792c46750..6a43f6ff25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -191,7 +191,11 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) # Error if there's symbols that are not found at link time. # add_link_options() was added in CMake 3.13 - if using an earlier # version don't set this - it should be caught by presubmits anyway. - add_link_options("-Wl,-undefined,error") + if (WIN32) + add_link_options("-Wl,--no-undefined") + else() + add_link_options("-Wl,-undefined,error") + endif() endif() elseif(MSVC) if(NOT ENABLE_RTTI) From b6df89b470ab3286a63214d0fc21f5ba7fab0a6c Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Mon, 30 May 2022 23:08:50 -0700 Subject: [PATCH 055/594] use unique_ptr to avoid calling deleted move ctor --- SPIRV/spvIR.h | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 948ea52c9e..ddccd26bdf 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -358,12 +358,12 @@ class Function { { return reducedPrecisionReturn ? DecorationRelaxedPrecision : NoPrecision; } void setDebugLineInfo(Id fileName, int line, int column) { - lineInstruction = Instruction(OpLine); - lineInstruction.addIdOperand(fileName); - lineInstruction.addImmediateOperand(line); - lineInstruction.addImmediateOperand(column); + lineInstruction = std::make_unique(OpLine); + lineInstruction->addIdOperand(fileName); + lineInstruction->addImmediateOperand(line); + lineInstruction->addImmediateOperand(column); } - bool hasDebugLineInfo() const { return lineInstruction.getOpCode() == OpLine; } + bool hasDebugLineInfo() const { return lineInstruction != nullptr; } void setImplicitThis() { implicitThis = true; } bool hasImplicitThis() const { return implicitThis; } @@ -382,8 +382,8 @@ class Function { void dump(std::vector& out) const { // OpLine - if (hasDebugLineInfo()) { - lineInstruction.dump(out); + if (lineInstruction != nullptr) { + lineInstruction->dump(out); } // OpFunction @@ -404,7 +404,7 @@ class Function { Function& operator=(Function&); Module& parent; - Instruction lineInstruction; + std::unique_ptr lineInstruction; Instruction functionInstruction; std::vector parameterInstructions; std::vector blocks; @@ -471,7 +471,7 @@ class Module { // - the OpFunction instruction // - all the OpFunctionParameter instructions __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent) - : parent(parent), lineInstruction(OpNop), + : parent(parent), lineInstruction(nullptr), functionInstruction(id, resultType, OpFunction), implicitThis(false), reducedPrecisionReturn(false) { From 61d244145ddfc783f44c24c6abf0fe2f5f28254c Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Tue, 31 May 2022 10:40:25 -0700 Subject: [PATCH 056/594] avoid using make_unique for c++11 compatibility --- SPIRV/spvIR.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index ddccd26bdf..57e7d378b9 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -358,7 +358,7 @@ class Function { { return reducedPrecisionReturn ? DecorationRelaxedPrecision : NoPrecision; } void setDebugLineInfo(Id fileName, int line, int column) { - lineInstruction = std::make_unique(OpLine); + lineInstruction = std::unique_ptr{new Instruction(OpLine)}; lineInstruction->addIdOperand(fileName); lineInstruction->addImmediateOperand(line); lineInstruction->addImmediateOperand(column); From 6cdae46314e2df1f3a1ee543f20f98d522547d49 Mon Sep 17 00:00:00 2001 From: Andrea Faulds Date: Wed, 1 Jun 2022 10:43:13 +0200 Subject: [PATCH 057/594] Avoid duplicate BuiltIn variables for ray tracing matrices (fix #2921) Fixes an issue where invalid SPIR-V was generated when gl_ObjectToWorldEXT and gl_ObjectToWorld3x4EXT, or gl_WorldToObjectEXT and gl_WorldToObject3x4EXT, were used in the same shader. The SPIR-V specification requires that there be at most one OpVariable decorated with a given BuiltIn value. --- SPIRV/GlslangToSpv.cpp | 26 +++++ .../spv.ext.AnyHitShader.rahit.out | 98 +++++++++---------- .../spv.ext.ClosestHitShader.rchit.out | 86 ++++++++-------- .../spv.ext.IntersectShader.rint.out | 66 ++++++------- 4 files changed, 142 insertions(+), 134 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index e17411d686..63547692b7 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -260,6 +260,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { std::unordered_map extBuiltinMap; std::unordered_map symbolValues; + std::unordered_map builtInVariableIds; std::unordered_set rValueParameters; // set of formal function parameters passed as rValues, // rather than a pointer std::unordered_map functionMap; @@ -8750,7 +8751,32 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // it was not found, create it spv::BuiltIn builtIn = TranslateBuiltInDecoration(symbol->getQualifier().builtIn, false); auto forcedType = getForcedType(symbol->getQualifier().builtIn, symbol->getType()); + + // There are pairs of symbols that map to the same SPIR-V built-in: + // gl_ObjectToWorldEXT and gl_ObjectToWorld3x4EXT, and gl_WorldToObjectEXT + // and gl_WorldToObject3x4EXT. SPIR-V forbids having two OpVariables + // with the same BuiltIn in the same storage class, so we must re-use one. + const bool mayNeedToReuseBuiltIn = + builtIn == spv::BuiltInObjectToWorldKHR || + builtIn == spv::BuiltInWorldToObjectKHR; + + if (mayNeedToReuseBuiltIn) { + auto iter = builtInVariableIds.find(uint32_t(builtIn)); + if (builtInVariableIds.end() != iter) { + id = iter->second; + symbolValues[symbol->getId()] = id; + if (forcedType.second != spv::NoType) + forceType[id] = forcedType.second; + return id; + } + } + id = createSpvVariable(symbol, forcedType.first); + + if (mayNeedToReuseBuiltIn) { + builtInVariableIds.insert({uint32_t(builtIn), id}); + } + symbolValues[symbol->getId()] = id; if (forcedType.second != spv::NoType) forceType[id] = forcedType.second; diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index af228e28ec..0a6db643bd 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -1,7 +1,7 @@ spv.ext.AnyHitShader.rahit // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 110 +// Id's are bound by 108 Capability GroupNonUniform Capability RayTracingKHR @@ -10,7 +10,7 @@ spv.ext.AnyHitShader.rahit Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 87 101 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 85 99 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" @@ -49,13 +49,11 @@ spv.ext.AnyHitShader.rahit Name 69 "v15" Name 70 "gl_GeometryIndexEXT" Name 75 "v16" - Name 76 "gl_ObjectToWorld3x4EXT" - Name 79 "v17" - Name 80 "gl_WorldToObject3x4EXT" - Name 83 "v18" - Name 84 "gl_CullMaskEXT" - Name 87 "incomingPayload" - Name 101 "gl_SubgroupSize" + Name 78 "v17" + Name 81 "v18" + Name 82 "gl_CullMaskEXT" + Name 85 "incomingPayload" + Name 99 "gl_SubgroupSize" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -72,13 +70,11 @@ spv.ext.AnyHitShader.rahit Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR - Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR - Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR - Decorate 84(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 101(gl_SubgroupSize) RelaxedPrecision - Decorate 101(gl_SubgroupSize) BuiltIn SubgroupSize - Decorate 102 RelaxedPrecision - Decorate 103 RelaxedPrecision + Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 99(gl_SubgroupSize) RelaxedPrecision + Decorate 99(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 100 RelaxedPrecision + Decorate 101 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -118,18 +114,16 @@ spv.ext.AnyHitShader.rahit 72: TypeVector 28(float) 4 73: TypeMatrix 72(fvec4) 3 74: TypePointer Function 73 -76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input -80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input -84(gl_CullMaskEXT): 57(ptr) Variable Input - 86: TypePointer IncomingRayPayloadKHR 72(fvec4) -87(incomingPayload): 86(ptr) Variable IncomingRayPayloadKHR - 88: 28(float) Constant 1056964608 - 89: 72(fvec4) ConstantComposite 88 88 88 88 - 91: 16(int) Constant 1 - 92: TypeBool - 97: 6(int) Constant 0 -101(gl_SubgroupSize): 57(ptr) Variable Input - 104: TypePointer IncomingRayPayloadKHR 28(float) +82(gl_CullMaskEXT): 57(ptr) Variable Input + 84: TypePointer IncomingRayPayloadKHR 72(fvec4) +85(incomingPayload): 84(ptr) Variable IncomingRayPayloadKHR + 86: 28(float) Constant 1056964608 + 87: 72(fvec4) ConstantComposite 86 86 86 86 + 89: 16(int) Constant 1 + 90: TypeBool + 95: 6(int) Constant 0 +99(gl_SubgroupSize): 57(ptr) Variable Input + 102: TypePointer IncomingRayPayloadKHR 28(float) 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -149,8 +143,8 @@ spv.ext.AnyHitShader.rahit 66(v14): 61(ptr) Variable Function 69(v15): 17(ptr) Variable Function 75(v16): 74(ptr) Variable Function - 79(v17): 74(ptr) Variable Function - 83(v18): 55(ptr) Variable Function + 78(v17): 74(ptr) Variable Function + 81(v18): 55(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -183,28 +177,28 @@ spv.ext.AnyHitShader.rahit Store 66(v14) 68 71: 16(int) Load 70(gl_GeometryIndexEXT) Store 69(v15) 71 - 77: 60 Load 76(gl_ObjectToWorld3x4EXT) - 78: 73 Transpose 77 - Store 75(v16) 78 - 81: 60 Load 80(gl_WorldToObject3x4EXT) - 82: 73 Transpose 81 - Store 79(v17) 82 - 85: 6(int) Load 84(gl_CullMaskEXT) - Store 83(v18) 85 - Store 87(incomingPayload) 89 - 90: 16(int) Load 18(v2) - 93: 92(bool) IEqual 90 91 - SelectionMerge 95 None - BranchConditional 93 94 95 - 94: Label + 76: 60 Load 64(gl_ObjectToWorldEXT) + 77: 73 Transpose 76 + Store 75(v16) 77 + 79: 60 Load 67(gl_WorldToObjectEXT) + 80: 73 Transpose 79 + Store 78(v17) 80 + 83: 6(int) Load 82(gl_CullMaskEXT) + Store 81(v18) 83 + Store 85(incomingPayload) 87 + 88: 16(int) Load 18(v2) + 91: 90(bool) IEqual 88 89 + SelectionMerge 93 None + BranchConditional 91 92 93 + 92: Label IgnoreIntersectionKHR - 95: Label - 102: 6(int) Load 101(gl_SubgroupSize) - 103: 28(float) ConvertUToF 102 - 105: 104(ptr) AccessChain 87(incomingPayload) 97 - 106: 28(float) Load 105 - 107: 28(float) FAdd 106 103 - 108: 104(ptr) AccessChain 87(incomingPayload) 97 - Store 108 107 + 93: Label + 100: 6(int) Load 99(gl_SubgroupSize) + 101: 28(float) ConvertUToF 100 + 103: 102(ptr) AccessChain 85(incomingPayload) 95 + 104: 28(float) Load 103 + 105: 28(float) FAdd 104 101 + 106: 102(ptr) AccessChain 85(incomingPayload) 95 + Store 106 105 TerminateRayKHR FunctionEnd diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 1c1a9a0cf6..4a7178e9c2 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -1,7 +1,7 @@ spv.ext.ClosestHitShader.rchit // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 104 +// Id's are bound by 102 Capability RayTracingKHR Capability RayCullMaskKHR @@ -9,7 +9,7 @@ spv.ext.ClosestHitShader.rchit Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 76 80 84 88 101 103 + EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 86 99 101 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" @@ -47,14 +47,12 @@ spv.ext.ClosestHitShader.rchit Name 69 "v15" Name 70 "gl_GeometryIndexEXT" Name 75 "v16" - Name 76 "gl_ObjectToWorld3x4EXT" - Name 79 "v17" - Name 80 "gl_WorldToObject3x4EXT" - Name 83 "v18" - Name 84 "gl_CullMaskEXT" - Name 88 "accEXT" - Name 101 "incomingPayload" - Name 103 "localPayload" + Name 78 "v17" + Name 81 "v18" + Name 82 "gl_CullMaskEXT" + Name 86 "accEXT" + Name 99 "incomingPayload" + Name 101 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -71,11 +69,9 @@ spv.ext.ClosestHitShader.rchit Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR - Decorate 76(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR - Decorate 80(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR - Decorate 84(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 88(accEXT) DescriptorSet 0 - Decorate 88(accEXT) Binding 0 + Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 86(accEXT) DescriptorSet 0 + Decorate 86(accEXT) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -115,26 +111,24 @@ spv.ext.ClosestHitShader.rchit 72: TypeVector 28(float) 4 73: TypeMatrix 72(fvec4) 3 74: TypePointer Function 73 -76(gl_ObjectToWorld3x4EXT): 63(ptr) Variable Input -80(gl_WorldToObject3x4EXT): 63(ptr) Variable Input -84(gl_CullMaskEXT): 57(ptr) Variable Input - 86: TypeAccelerationStructureKHR - 87: TypePointer UniformConstant 86 - 88(accEXT): 87(ptr) Variable UniformConstant - 90: 6(int) Constant 0 - 91: 6(int) Constant 1 - 92: 6(int) Constant 2 - 93: 6(int) Constant 3 - 94: 28(float) Constant 1056964608 +82(gl_CullMaskEXT): 57(ptr) Variable Input + 84: TypeAccelerationStructureKHR + 85: TypePointer UniformConstant 84 + 86(accEXT): 85(ptr) Variable UniformConstant + 88: 6(int) Constant 0 + 89: 6(int) Constant 1 + 90: 6(int) Constant 2 + 91: 6(int) Constant 3 + 92: 28(float) Constant 1056964608 + 93: 29(fvec3) ConstantComposite 92 92 92 + 94: 28(float) Constant 1065353216 95: 29(fvec3) ConstantComposite 94 94 94 - 96: 28(float) Constant 1065353216 - 97: 29(fvec3) ConstantComposite 96 96 96 - 98: 28(float) Constant 1061158912 - 99: 16(int) Constant 1 - 100: TypePointer IncomingRayPayloadKHR 72(fvec4) -101(incomingPayload): 100(ptr) Variable IncomingRayPayloadKHR - 102: TypePointer RayPayloadKHR 72(fvec4) -103(localPayload): 102(ptr) Variable RayPayloadKHR + 96: 28(float) Constant 1061158912 + 97: 16(int) Constant 1 + 98: TypePointer IncomingRayPayloadKHR 72(fvec4) +99(incomingPayload): 98(ptr) Variable IncomingRayPayloadKHR + 100: TypePointer RayPayloadKHR 72(fvec4) +101(localPayload): 100(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -154,8 +148,8 @@ spv.ext.ClosestHitShader.rchit 66(v14): 61(ptr) Variable Function 69(v15): 17(ptr) Variable Function 75(v16): 74(ptr) Variable Function - 79(v17): 74(ptr) Variable Function - 83(v18): 55(ptr) Variable Function + 78(v17): 74(ptr) Variable Function + 81(v18): 55(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -188,15 +182,15 @@ spv.ext.ClosestHitShader.rchit Store 66(v14) 68 71: 16(int) Load 70(gl_GeometryIndexEXT) Store 69(v15) 71 - 77: 60 Load 76(gl_ObjectToWorld3x4EXT) - 78: 73 Transpose 77 - Store 75(v16) 78 - 81: 60 Load 80(gl_WorldToObject3x4EXT) - 82: 73 Transpose 81 - Store 79(v17) 82 - 85: 6(int) Load 84(gl_CullMaskEXT) - Store 83(v18) 85 - 89: 86 Load 88(accEXT) - TraceRayKHR 89 90 91 92 93 90 95 94 97 98 101(incomingPayload) + 76: 60 Load 64(gl_ObjectToWorldEXT) + 77: 73 Transpose 76 + Store 75(v16) 77 + 79: 60 Load 67(gl_WorldToObjectEXT) + 80: 73 Transpose 79 + Store 78(v17) 80 + 83: 6(int) Load 82(gl_CullMaskEXT) + Store 81(v18) 83 + 87: 84 Load 86(accEXT) + TraceRayKHR 87 88 89 90 91 88 93 92 95 96 99(incomingPayload) Return FunctionEnd diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out index 54b6d349e7..dcceea4897 100644 --- a/Test/baseResults/spv.ext.IntersectShader.rint.out +++ b/Test/baseResults/spv.ext.IntersectShader.rint.out @@ -1,7 +1,7 @@ spv.ext.IntersectShader.rint // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 86 +// Id's are bound by 84 Capability RayTracingKHR Capability RayCullMaskKHR @@ -9,7 +9,7 @@ spv.ext.IntersectShader.rint Extension "SPV_KHR_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 65 69 75 78 + EntryPoint IntersectionKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 56 59 73 76 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" @@ -41,12 +41,10 @@ spv.ext.IntersectShader.rint Name 58 "v12" Name 59 "gl_WorldToObjectEXT" Name 64 "v13" - Name 65 "gl_ObjectToWorld3x4EXT" - Name 68 "v14" - Name 69 "gl_WorldToObject3x4EXT" - Name 73 "v15" - Name 75 "gl_CullMaskEXT" - Name 78 "iAttr" + Name 67 "v14" + Name 71 "v15" + Name 73 "gl_CullMaskEXT" + Name 76 "iAttr" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -62,9 +60,7 @@ spv.ext.IntersectShader.rint Decorate 50(gl_RayTmaxEXT) Coherent Decorate 56(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR Decorate 59(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR - Decorate 65(gl_ObjectToWorld3x4EXT) BuiltIn ObjectToWorldKHR - Decorate 69(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR - Decorate 75(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 73(gl_CullMaskEXT) BuiltIn CullMaskKHR 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -99,19 +95,17 @@ spv.ext.IntersectShader.rint 61: TypeVector 28(float) 4 62: TypeMatrix 61(fvec4) 3 63: TypePointer Function 62 -65(gl_ObjectToWorld3x4EXT): 55(ptr) Variable Input -69(gl_WorldToObject3x4EXT): 55(ptr) Variable Input - 72: TypePointer Function 6(int) - 74: TypePointer Input 6(int) -75(gl_CullMaskEXT): 74(ptr) Variable Input - 77: TypePointer HitAttributeKHR 61(fvec4) - 78(iAttr): 77(ptr) Variable HitAttributeKHR - 79: 28(float) Constant 1056964608 - 80: 28(float) Constant 0 - 81: 28(float) Constant 1065353216 - 82: 61(fvec4) ConstantComposite 79 79 80 81 - 83: 6(int) Constant 1 - 84: TypeBool + 70: TypePointer Function 6(int) + 72: TypePointer Input 6(int) +73(gl_CullMaskEXT): 72(ptr) Variable Input + 75: TypePointer HitAttributeKHR 61(fvec4) + 76(iAttr): 75(ptr) Variable HitAttributeKHR + 77: 28(float) Constant 1056964608 + 78: 28(float) Constant 0 + 79: 28(float) Constant 1065353216 + 80: 61(fvec4) ConstantComposite 77 77 78 79 + 81: 6(int) Constant 1 + 82: TypeBool 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -128,8 +122,8 @@ spv.ext.IntersectShader.rint 54(v11): 53(ptr) Variable Function 58(v12): 53(ptr) Variable Function 64(v13): 63(ptr) Variable Function - 68(v14): 63(ptr) Variable Function - 73(v15): 72(ptr) Variable Function + 67(v14): 63(ptr) Variable Function + 71(v15): 70(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -156,15 +150,15 @@ spv.ext.IntersectShader.rint Store 54(v11) 57 60: 52 Load 59(gl_WorldToObjectEXT) Store 58(v12) 60 - 66: 52 Load 65(gl_ObjectToWorld3x4EXT) - 67: 62 Transpose 66 - Store 64(v13) 67 - 70: 52 Load 69(gl_WorldToObject3x4EXT) - 71: 62 Transpose 70 - Store 68(v14) 71 - 76: 6(int) Load 75(gl_CullMaskEXT) - Store 73(v15) 76 - Store 78(iAttr) 82 - 85: 84(bool) ReportIntersectionKHR 79 83 + 65: 52 Load 56(gl_ObjectToWorldEXT) + 66: 62 Transpose 65 + Store 64(v13) 66 + 68: 52 Load 59(gl_WorldToObjectEXT) + 69: 62 Transpose 68 + Store 67(v14) 69 + 74: 6(int) Load 73(gl_CullMaskEXT) + Store 71(v15) 74 + Store 76(iAttr) 80 + 83: 82(bool) ReportIntersectionKHR 77 81 Return FunctionEnd From 9e2b914722b7a2021b8f4397f75137470ae19530 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 1 Jun 2022 16:40:29 -0600 Subject: [PATCH 058/594] Restore legacy interface for remap() Fixes ABI breakage caused by #2933 --- SPIRV/SPVRemapper.cpp | 9 +++++++++ SPIRV/SPVRemapper.h | 3 +++ 2 files changed, 12 insertions(+) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 28168822c6..6aca8cbcf0 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -1517,6 +1517,15 @@ namespace spv { spv.swap(in_spv); } + // remap from a memory image - legacy interface without white list + void spirvbin_t::remap(std::vector& in_spv, std::uint32_t opts) + { + stripWhiteList.clear(); + spv.swap(in_spv); + remap(opts); + spv.swap(in_spv); + } + } // namespace SPV #endif // defined (use_cpp11) diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index 2dfacd733b..d21694635a 100644 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -121,6 +121,9 @@ class spirvbin_t : public spirvbin_base_t void remap(std::vector& spv, const std::vector& whiteListStrings, std::uint32_t opts = DO_EVERYTHING); + // remap on an existing binary in memory - legacy interface without white list + void remap(std::vector& spv, std::uint32_t opts = DO_EVERYTHING); + // Type for error/log handler functions typedef std::function errorfn_t; typedef std::function logfn_t; From 3f369d4a16be25fd4beebba7c161e18c10afdbef Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 2 Jun 2022 11:51:07 -0600 Subject: [PATCH 059/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 3dd6124f91..df2a50815c 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "58dc37ea6af7ec09f32f7b13ff60071e3ba2bd24" + "commit" : "b930e734ea198b7aabbbf04ee1562cf6f57962f0" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "b765c355f488837ca4c77980ba69484f3ff277f5" + "commit" : "5a121866927a16ab9d49bed4788b532c7fcea766" } ] } From c411e58d7876de9e5171ff16aa915d4daced8e18 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 2 Jun 2022 17:34:26 -0600 Subject: [PATCH 060/594] Release 11.10.0 --- CHANGES.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index fb0b0d11e1..eee07aaf7f 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.10.0 2022-06-02 + +### Other changes +* Generate OpLine before OpFunction +* Add support for VK_EXT_fragment_shader_barycentric +* Add whitelist filtering for debug comments in SPIRV-Remap +* Add support for GL_EXT_ray_cull_mask + ## 11.9.0 2022-04-06 ### Other changes From ea024d2bfcdfcdeeb47dab61f6a4f4dfd1082a9e Mon Sep 17 00:00:00 2001 From: James0124 Date: Tue, 7 Jun 2022 01:13:21 +0900 Subject: [PATCH 061/594] CInterface: Add OpSource support. Add interface for `TIntermediate::addSourceText` and `TIntermediate::setSourceFile`. --- SPIRV/CInterface/spirv_c_interface.cpp | 18 +++++++++++++++--- glslang/CInterface/glslang_c_interface.cpp | 11 +++++++++++ glslang/Include/glslang_c_interface.h | 13 +++++++++++++ 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index a0790f48f1..d9312bbbdb 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -36,6 +36,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "SPIRV/Logger.h" #include "SPIRV/SpvTools.h" +static_assert(sizeof(glslang_spv_options_t) == sizeof(glslang::SpvOptions), ""); + typedef struct glslang_program_s { glslang::TProgram* program; std::vector spirv; @@ -81,13 +83,23 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage) { + glslang_spv_options_t spv_options; + spv_options.generate_debug_info = false; + spv_options.strip_debug_info = false; + spv_options.disable_optimizer = true; + spv_options.optimize_size = false; + spv_options.disassemble = false; + spv_options.validate = true; + + glslang_program_SPIRV_generate_with_options(program, stage, &spv_options); +} + +GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options) { spv::SpvBuildLogger logger; - glslang::SpvOptions spvOptions; - spvOptions.validate = true; const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); - glslang::GlslangToSpv(*intermediate, program->spirv, &logger, &spvOptions); + glslang::GlslangToSpv(*intermediate, program->spirv, &logger, reinterpret_cast(spv_options)); program->loggerMessages = logger.getAllMessages(); } diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 53892bc5d2..0e691a1f7c 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -38,6 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "glslang/Include/ResourceLimits.h" #include "glslang/MachineIndependent/Versions.h" +#include "glslang/MachineIndependent/localintermediate.h" static_assert(int(GLSLANG_STAGE_COUNT) == EShLangCount, ""); static_assert(int(GLSLANG_STAGE_MASK_COUNT) == EShLanguageMaskCount, ""); @@ -455,6 +456,16 @@ GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages return (int)program->program->link((EShMessages)messages); } +GLSLANG_EXPORT void glslang_program_add_source_text(glslang_program_t* program, glslang_stage_t stage, const char* text, size_t len) { + glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); + intermediate->addSourceText(text, len); +} + +GLSLANG_EXPORT void glslang_program_set_source_file(glslang_program_t* program, glslang_stage_t stage, const char* file) { + glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); + intermediate->setSourceFile(file); +} + GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program) { return (int)program->program->mapIO(); diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index a98a7e176d..9e5909ce88 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -199,6 +199,16 @@ typedef struct glsl_include_callbacks_s { glsl_free_include_result_func free_include_result; } glsl_include_callbacks_t; +/* SpvOptions counterpart */ +typedef struct glslang_spv_options_s { + bool generate_debug_info; + bool strip_debug_info; + bool disable_optimizer; + bool optimize_size; + bool disassemble; + bool validate; +} glslang_spv_options_t; + #ifdef __cplusplus extern "C" { #endif @@ -238,8 +248,11 @@ GLSLANG_EXPORT glslang_program_t* glslang_program_create(); GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program); GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader); GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t +GLSLANG_EXPORT void glslang_program_add_source_text(glslang_program_t* program, glslang_stage_t stage, const char* text, size_t len); +GLSLANG_EXPORT void glslang_program_set_source_file(glslang_program_t* program, glslang_stage_t stage, const char* file); GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program); GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage); +GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options); GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program); GLSLANG_EXPORT void glslang_program_SPIRV_get(glslang_program_t* program, unsigned int*); GLSLANG_EXPORT unsigned int* glslang_program_SPIRV_get_ptr(glslang_program_t* program); From c1ae2f33b5bc22ec013c57c716b6ef438619edb0 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Tue, 21 Jun 2022 17:33:57 -0600 Subject: [PATCH 062/594] Do not generate samplerBuffer for spirv1.6 and beyond This type was removed from spirv1.6. If samplerBuffer is specified in GLSL, generate textureBuffer. If samplerBuffer type is constructed, just return the buffer. Fixes #2956 --- SPIRV/GlslangToSpv.cpp | 20 +++++-- .../spv.1.6.samplerBuffer.frag.out | 43 +++++++++++++++ Test/baseResults/spv.1.6.separate.frag.out | 52 +++++++++++++++++++ Test/spv.1.6.samplerBuffer.frag | 11 ++++ Test/spv.1.6.separate.frag | 14 +++++ gtests/Spv.FromFile.cpp | 2 + 6 files changed, 137 insertions(+), 5 deletions(-) create mode 100644 Test/baseResults/spv.1.6.samplerBuffer.frag.out create mode 100644 Test/baseResults/spv.1.6.separate.frag.out create mode 100644 Test/spv.1.6.samplerBuffer.frag create mode 100644 Test/spv.1.6.separate.frag diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 63547692b7..3c869bc96b 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2936,9 +2936,17 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt std::vector arguments; translateArguments(*node, arguments, lvalueCoherentFlags); spv::Id constructed; - if (node->getOp() == glslang::EOpConstructTextureSampler) - constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments); - else if (node->getOp() == glslang::EOpConstructStruct || + if (node->getOp() == glslang::EOpConstructTextureSampler) { + const glslang::TType& texType = node->getSequence()[0]->getAsTyped()->getType(); + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6 && + texType.getSampler().isBuffer()) { + // SamplerBuffer is not supported in spirv1.6 so + // `samplerBuffer(textureBuffer, sampler)` is a no-op + // and textureBuffer is the result going forward + constructed = arguments[0]; + } else + constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments); + } else if (node->getOp() == glslang::EOpConstructStruct || node->getOp() == glslang::EOpConstructCooperativeMatrix || node->getType().isArray()) { std::vector constituents; @@ -4173,8 +4181,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.isShadow(), sampler.isArrayed(), sampler.isMultiSample(), sampler.isImageClass() ? 2 : 1, TranslateImageFormat(type)); - if (sampler.isCombined()) { - // already has both image and sampler, make the combined type + if (sampler.isCombined() && + (!sampler.isBuffer() || glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6)) { + // Already has both image and sampler, make the combined type. Only combine sampler to + // buffer if before SPIR-V 1.6. spvType = builder.makeSampledImageType(spvType); } } diff --git a/Test/baseResults/spv.1.6.samplerBuffer.frag.out b/Test/baseResults/spv.1.6.samplerBuffer.frag.out new file mode 100644 index 0000000000..8a0275f940 --- /dev/null +++ b/Test/baseResults/spv.1.6.samplerBuffer.frag.out @@ -0,0 +1,43 @@ +spv.1.6.samplerBuffer.frag +// Module Version 10600 +// Generated by (magic number): 8000a +// Id's are bound by 23 + + Capability Shader + Capability SampledBuffer + Capability ImageQuery + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 13 + ExecutionMode 4 OriginUpperLeft + Source GLSL 140 + Name 4 "main" + Name 9 "o" + Name 13 "sampB" + Decorate 9(o) Location 0 + Decorate 13(sampB) DescriptorSet 0 + Decorate 13(sampB) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(o): 8(ptr) Variable Output + 10: TypeInt 32 1 + 11: TypeImage 10(int) Buffer sampled format:Unknown + 12: TypePointer UniformConstant 11 + 13(sampB): 12(ptr) Variable UniformConstant + 17: 6(float) Constant 1120403456 + 19: TypeInt 32 0 + 20: 19(int) Constant 3 + 21: TypePointer Output 6(float) + 4(main): 2 Function None 3 + 5: Label + 14: 11 Load 13(sampB) + 15: 10(int) ImageQuerySize 14 + 16: 6(float) ConvertSToF 15 + 18: 6(float) FDiv 16 17 + 22: 21(ptr) AccessChain 9(o) 20 + Store 22 18 + Return + FunctionEnd diff --git a/Test/baseResults/spv.1.6.separate.frag.out b/Test/baseResults/spv.1.6.separate.frag.out new file mode 100644 index 0000000000..e15655e1cd --- /dev/null +++ b/Test/baseResults/spv.1.6.separate.frag.out @@ -0,0 +1,52 @@ +spv.1.6.separate.frag +// Module Version 10600 +// Generated by (magic number): 8000a +// Id's are bound by 27 + + Capability Shader + Capability SampledBuffer + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 13 18 24 + ExecutionMode 4 OriginUpperLeft + Source GLSL 400 + Name 4 "main" + Name 9 "texBuffer" + Name 13 "s" + Name 18 "itexBuffer" + Name 24 "utexBuffer" + Decorate 9(texBuffer) DescriptorSet 0 + Decorate 9(texBuffer) Binding 1 + Decorate 13(s) DescriptorSet 0 + Decorate 13(s) Binding 0 + Decorate 18(itexBuffer) DescriptorSet 0 + Decorate 18(itexBuffer) Binding 2 + Decorate 24(utexBuffer) DescriptorSet 0 + Decorate 24(utexBuffer) Binding 3 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeImage 6(float) Buffer sampled format:Unknown + 8: TypePointer UniformConstant 7 + 9(texBuffer): 8(ptr) Variable UniformConstant + 11: TypeSampler + 12: TypePointer UniformConstant 11 + 13(s): 12(ptr) Variable UniformConstant + 15: TypeInt 32 1 + 16: TypeImage 15(int) Buffer sampled format:Unknown + 17: TypePointer UniformConstant 16 + 18(itexBuffer): 17(ptr) Variable UniformConstant + 21: TypeInt 32 0 + 22: TypeImage 21(int) Buffer sampled format:Unknown + 23: TypePointer UniformConstant 22 + 24(utexBuffer): 23(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 10: 7 Load 9(texBuffer) + 14: 11 Load 13(s) + 19: 16 Load 18(itexBuffer) + 20: 11 Load 13(s) + 25: 22 Load 24(utexBuffer) + 26: 11 Load 13(s) + Return + FunctionEnd diff --git a/Test/spv.1.6.samplerBuffer.frag b/Test/spv.1.6.samplerBuffer.frag new file mode 100644 index 0000000000..d12ff3df84 --- /dev/null +++ b/Test/spv.1.6.samplerBuffer.frag @@ -0,0 +1,11 @@ +#version 140 + +out vec4 o; + +uniform isamplerBuffer sampB; + +void main() +{ + o.w = float(textureSize(sampB)) / 100.0; +} + diff --git a/Test/spv.1.6.separate.frag b/Test/spv.1.6.separate.frag new file mode 100644 index 0000000000..3e51be4820 --- /dev/null +++ b/Test/spv.1.6.separate.frag @@ -0,0 +1,14 @@ +#version 400 + +uniform sampler s; + +uniform textureBuffer texBuffer; +uniform itextureBuffer itexBuffer; +uniform utextureBuffer utexBuffer; + +void main() +{ + samplerBuffer (texBuffer, s); + isamplerBuffer (itexBuffer, s); + usamplerBuffer (utexBuffer, s); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index f8bed532cf..300d6642fd 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -639,6 +639,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.1.6.conditionalDiscard.frag", "spv.1.6.helperInvocation.frag", "spv.1.6.specConstant.comp", + "spv.1.6.samplerBuffer.frag", + "spv.1.6.separate.frag", })), FileNameAsCustomTestSuffix ); From 8e5f1ac954d0edf83092f5d4a97bb99fd8076c5c Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Thu, 7 Jul 2022 11:40:02 -0600 Subject: [PATCH 063/594] Fix getEnhancedMsgs to work when HLSL not enabled Fixes #2969 --- glslang/MachineIndependent/localintermediate.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 581e9aa2e4..d3e86f9e1e 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -480,7 +480,7 @@ class TIntermediate { { enhancedMsgs = true; } - bool getEnhancedMsgs() const { return enhancedMsgs && source == EShSourceGlsl; } + bool getEnhancedMsgs() const { return enhancedMsgs && getSource() == EShSourceGlsl; } #ifdef ENABLE_HLSL void setSource(EShSource s) { source = s; } From 6fdf03e4d1a6c2e9e0d8c69b122ff433cfe82225 Mon Sep 17 00:00:00 2001 From: Niklas Haas Date: Tue, 12 Jul 2022 16:59:22 +0200 Subject: [PATCH 064/594] Fix version check macros These were defined backwards to the usual convention. #if GLSLANG_VERSION_GREATER_THAN(11, 10, 0) This reads as "if glslang version is greater than 11.10.0" to any reasonable sane programmer, and should therefore expand to "glslang_version > macro_argument". Yet the check it references was actually written as "macro_argument > glslang_version", thus expressing the completely opposite condition of "if glslang version is *less than* 11.10.0". This is definitely backwards and extremely, dangerously surprising behavior to any programmer familiar with such version macros. I'm not sure if anybody actually ever used them. I certainly didn't, on account of them being backwards. I could not find a single reference to them on GitHub (other than in copies of this header) - every project I found just used the GLSLANG_VERSION_MAJOR etc. macros directly. --- build_info.h.tmpl | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/build_info.h.tmpl b/build_info.h.tmpl index 5b5e9e62c7..60cb5bbeae 100644 --- a/build_info.h.tmpl +++ b/build_info.h.tmpl @@ -40,23 +40,23 @@ #define GLSLANG_VERSION_FLAVOR "@flavor@" #define GLSLANG_VERSION_GREATER_THAN(major, minor, patch) \ - (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ - (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ - ((patch) > GLSLANG_VERSION_PATCH))))) + ((GLSLANG_VERSION_MAJOR) > (major) || ((major) == GLSLANG_VERSION_MAJOR && \ + ((GLSLANG_VERSION_MINOR) > (minor) || ((minor) == GLSLANG_VERSION_MINOR && \ + (GLSLANG_VERSION_PATCH) > (patch))))) #define GLSLANG_VERSION_GREATER_OR_EQUAL_TO(major, minor, patch) \ - (((major) > GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ - (((minor) > GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ - ((patch) >= GLSLANG_VERSION_PATCH))))) + ((GLSLANG_VERSION_MAJOR) > (major) || ((major) == GLSLANG_VERSION_MAJOR && \ + ((GLSLANG_VERSION_MINOR) > (minor) || ((minor) == GLSLANG_VERSION_MINOR && \ + (GLSLANG_VERSION_PATCH >= (patch)))))) #define GLSLANG_VERSION_LESS_THAN(major, minor, patch) \ - (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ - (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ - ((patch) < GLSLANG_VERSION_PATCH))))) + ((GLSLANG_VERSION_MAJOR) < (major) || ((major) == GLSLANG_VERSION_MAJOR && \ + ((GLSLANG_VERSION_MINOR) < (minor) || ((minor) == GLSLANG_VERSION_MINOR && \ + (GLSLANG_VERSION_PATCH) < (patch))))) #define GLSLANG_VERSION_LESS_OR_EQUAL_TO(major, minor, patch) \ - (((major) < GLSLANG_VERSION_MAJOR) || ((major) == GLSLANG_VERSION_MAJOR && \ - (((minor) < GLSLANG_VERSION_MINOR) || ((minor) == GLSLANG_VERSION_MINOR && \ - ((patch) <= GLSLANG_VERSION_PATCH))))) + ((GLSLANG_VERSION_MAJOR) < (major) || ((major) == GLSLANG_VERSION_MAJOR && \ + ((GLSLANG_VERSION_MINOR) < (minor) || ((minor) == GLSLANG_VERSION_MINOR && \ + (GLSLANG_VERSION_PATCH <= (patch)))))) #endif // GLSLANG_BUILD_INFO From 8bdc3d4d31aaecf5d48d101eca51ae9df2a1c5f8 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 14 Jul 2022 11:44:52 -0600 Subject: [PATCH 065/594] Emit Int64Atomics for imageAtomicStore This covers a corner case wherein imageAtomicStore is used exclusively. The proxy type for imageAtomicStore is inferred from the image type. Fix #2975. --- SPIRV/GlslangToSpv.cpp | 4 +- Test/baseResults/spv.imageAtomic64.comp.out | 58 +++++++++++++++++++++ Test/spv.imageAtomic64.comp | 12 +++++ gtests/Spv.FromFile.cpp | 1 + 4 files changed, 74 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.imageAtomic64.comp.out create mode 100644 Test/spv.imageAtomic64.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 3c869bc96b..b61a6420aa 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -5581,10 +5581,12 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO operands.push_back(sample); spv::Id resultTypeId; + glslang::TBasicType typeProxy = node->getBasicType(); // imageAtomicStore has a void return type so base the pointer type on // the type of the value operand. if (node->getOp() == glslang::EOpImageAtomicStore) { resultTypeId = builder.makePointer(spv::StorageClassImage, builder.getTypeId(*opIt)); + typeProxy = node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType().getSampler().type; } else { resultTypeId = builder.makePointer(spv::StorageClassImage, resultType()); } @@ -5598,7 +5600,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO for (; opIt != arguments.end(); ++opIt) operands.push_back(*opIt); - return createAtomicOperation(node->getOp(), precision, resultType(), operands, node->getBasicType(), + return createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy, lvalueCoherentFlags); } } diff --git a/Test/baseResults/spv.imageAtomic64.comp.out b/Test/baseResults/spv.imageAtomic64.comp.out new file mode 100644 index 0000000000..0b1a0939c7 --- /dev/null +++ b/Test/baseResults/spv.imageAtomic64.comp.out @@ -0,0 +1,58 @@ +spv.imageAtomic64.comp +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 28 + + Capability Shader + Capability Int64 + Capability Int64Atomics + Capability Int64ImageEXT + Extension "SPV_EXT_shader_image_int64" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_image_int64" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 9 "z" + Name 14 "ssbo" + MemberName 14(ssbo) 0 "y" + Name 16 "" + Decorate 9(z) DescriptorSet 0 + Decorate 9(z) Binding 1 + MemberDecorate 14(ssbo) 0 Offset 0 + Decorate 14(ssbo) BufferBlock + Decorate 16 DescriptorSet 0 + Decorate 16 Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 64 0 + 7: TypeImage 6(int64_t) 2D nonsampled format:R64ui + 8: TypePointer UniformConstant 7 + 9(z): 8(ptr) Variable UniformConstant + 10: TypeInt 32 1 + 11: TypeVector 10(int) 2 + 12: 10(int) Constant 1 + 13: 11(ivec2) ConstantComposite 12 12 + 14(ssbo): TypeStruct 6(int64_t) + 15: TypePointer Uniform 14(ssbo) + 16: 15(ptr) Variable Uniform + 17: 10(int) Constant 0 + 18: TypePointer Uniform 6(int64_t) + 21: 10(int) Constant 2048 + 22: TypeInt 32 0 + 23: 22(int) Constant 0 + 24: TypePointer Image 6(int64_t) + 26: 22(int) Constant 1 + 27: 22(int) Constant 2048 + 4(main): 2 Function None 3 + 5: Label + 19: 18(ptr) AccessChain 16 17 + 20: 6(int64_t) Load 19 + 25: 24(ptr) ImageTexelPointer 9(z) 13 23 + AtomicStore 25 12 27 20 + Return + FunctionEnd diff --git a/Test/spv.imageAtomic64.comp b/Test/spv.imageAtomic64.comp new file mode 100644 index 0000000000..f09abf777e --- /dev/null +++ b/Test/spv.imageAtomic64.comp @@ -0,0 +1,12 @@ +#version 450 +#extension GL_EXT_shader_explicit_arithmetic_types_int64 : enable +#extension GL_EXT_shader_image_int64 : enable +#extension GL_KHR_memory_scope_semantics : enable + +layout(set = 0, binding = 0) buffer ssbo { uint64_t y; }; +layout(set = 0, binding = 1, r64ui) uniform u64image2D z; + +void main() { + // Test imageAtomicStore exclusively. Do NOT add other atomic operations to this test. + imageAtomicStore(z, ivec2(1, 1), y, gl_ScopeDevice, gl_StorageSemanticsImage, gl_SemanticsRelaxed); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 300d6642fd..571025685c 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -444,6 +444,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.textureBuffer.vert", "spv.image.frag", "spv.imageAtomic64.frag", + "spv.imageAtomic64.comp", "spv.types.frag", "spv.uint.frag", "spv.uniformArray.frag", From 070863af690bcc160da6e49d913f5d2e45bf095c Mon Sep 17 00:00:00 2001 From: dwang102 Date: Fri, 15 Jul 2022 14:36:03 +0800 Subject: [PATCH 066/594] Add SPV_AMD_shader_early_and_late_fragment_tests --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 23 ++++++++++ SPIRV/doc.cpp | 44 ++++++++++--------- SPIRV/spirv.hpp | 7 +++ .../spv.earlyAndlateFragmentTests.frag.out | 41 +++++++++++++++++ .../spv.shaderStencilExport.frag.out | 1 + Test/spv.earlyAndlateFragmentTests.frag | 12 +++++ glslang/Include/BaseTypes.h | 2 + glslang/Include/Types.h | 35 +++++++++++++++ glslang/MachineIndependent/Initialize.cpp | 1 + glslang/MachineIndependent/ParseHelper.cpp | 44 ++++++++++++++++++- glslang/MachineIndependent/Versions.cpp | 1 + glslang/MachineIndependent/Versions.h | 1 + .../MachineIndependent/localintermediate.h | 18 +++++++- 14 files changed, 208 insertions(+), 23 deletions(-) create mode 100644 Test/baseResults/spv.earlyAndlateFragmentTests.frag.out create mode 100644 Test/spv.earlyAndlateFragmentTests.frag diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 5c89480e3a..d5c670f0e1 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -53,5 +53,6 @@ static const char* const E_SPV_KHR_terminate_invocation = "SPV_KHR_termi static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout"; static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow"; static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric"; +static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 3c869bc96b..307ee28e3e 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1623,6 +1623,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, if (glslangIntermediate->getEarlyFragmentTests()) builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyFragmentTests); + if (glslangIntermediate->getEarlyAndLateFragmentTestsAMD()) + { + builder.addExecutionMode(shaderEntry, spv::ExecutionModeEarlyAndLateFragmentTestsAMD); + builder.addExtension(spv::E_SPV_AMD_shader_early_and_late_fragment_tests); + } + if (glslangIntermediate->getPostDepthCoverage()) { builder.addCapability(spv::CapabilitySampleMaskPostDepthCoverage); builder.addExecutionMode(shaderEntry, spv::ExecutionModePostDepthCoverage); @@ -1632,6 +1638,9 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, if (glslangIntermediate->isDepthReplacing()) builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing); + if (glslangIntermediate->isStencilReplacing()) + builder.addExecutionMode(shaderEntry, spv::ExecutionModeStencilRefReplacingEXT); + #ifndef GLSLANG_WEB switch(glslangIntermediate->getDepth()) { @@ -1640,6 +1649,20 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, case glslang::EldUnchanged: mode = spv::ExecutionModeDepthUnchanged; break; default: mode = spv::ExecutionModeMax; break; } + + if (mode != spv::ExecutionModeMax) + builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); + + switch (glslangIntermediate->getStencil()) { + case glslang::ElsRefUnchangedFrontAMD: mode = spv::ExecutionModeStencilRefUnchangedFrontAMD; break; + case glslang::ElsRefGreaterFrontAMD: mode = spv::ExecutionModeStencilRefGreaterFrontAMD; break; + case glslang::ElsRefLessFrontAMD: mode = spv::ExecutionModeStencilRefLessFrontAMD; break; + case glslang::ElsRefUnchangedBackAMD: mode = spv::ExecutionModeStencilRefUnchangedBackAMD; break; + case glslang::ElsRefGreaterBackAMD: mode = spv::ExecutionModeStencilRefGreaterBackAMD; break; + case glslang::ElsRefLessBackAMD: mode = spv::ExecutionModeStencilRefLessBackAMD; break; + default: mode = spv::ExecutionModeMax; break; + } + if (mode != spv::ExecutionModeMax) builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); switch (glslangIntermediate->getInterlockOrdering()) { diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 1ba92a8798..9cc26541dc 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -173,28 +173,32 @@ const char* ExecutionModeString(int mode) case 31: return "ContractionOff"; case 32: return "Bad"; - case ExecutionModeInitializer: return "Initializer"; - case ExecutionModeFinalizer: return "Finalizer"; - case ExecutionModeSubgroupSize: return "SubgroupSize"; - case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; - case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; - case ExecutionModeLocalSizeId: return "LocalSizeId"; - case ExecutionModeLocalSizeHintId: return "LocalSizeHintId"; - - case ExecutionModePostDepthCoverage: return "PostDepthCoverage"; - case ExecutionModeDenormPreserve: return "DenormPreserve"; - case ExecutionModeDenormFlushToZero: return "DenormFlushToZero"; - case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; - case ExecutionModeRoundingModeRTE: return "RoundingModeRTE"; - case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ"; - case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT"; + case ExecutionModeInitializer: return "Initializer"; + case ExecutionModeFinalizer: return "Finalizer"; + case ExecutionModeSubgroupSize: return "SubgroupSize"; + case ExecutionModeSubgroupsPerWorkgroup: return "SubgroupsPerWorkgroup"; + case ExecutionModeSubgroupsPerWorkgroupId: return "SubgroupsPerWorkgroupId"; + case ExecutionModeLocalSizeId: return "LocalSizeId"; + case ExecutionModeLocalSizeHintId: return "LocalSizeHintId"; + + case ExecutionModePostDepthCoverage: return "PostDepthCoverage"; + case ExecutionModeDenormPreserve: return "DenormPreserve"; + case ExecutionModeDenormFlushToZero: return "DenormFlushToZero"; + case ExecutionModeSignedZeroInfNanPreserve: return "SignedZeroInfNanPreserve"; + case ExecutionModeRoundingModeRTE: return "RoundingModeRTE"; + case ExecutionModeRoundingModeRTZ: return "RoundingModeRTZ"; + case ExecutionModeEarlyAndLateFragmentTestsAMD: return "EarlyAndLateFragmentTestsAMD"; + case ExecutionModeStencilRefUnchangedFrontAMD: return "StencilRefUnchangedFrontAMD"; + case ExecutionModeStencilRefLessFrontAMD: return "StencilRefLessFrontAMD"; + case ExecutionModeStencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD"; + case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT"; case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow"; - case ExecutionModeOutputLinesNV: return "OutputLinesNV"; - case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; - case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV"; - case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; - case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; + case ExecutionModeOutputLinesNV: return "OutputLinesNV"; + case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; + case ExecutionModeOutputTrianglesNV: return "OutputTrianglesNV"; + case ExecutionModeDerivativeGroupQuadsNV: return "DerivativeGroupQuadsNV"; + case ExecutionModeDerivativeGroupLinearNV: return "DerivativeGroupLinearNV"; case ExecutionModePixelInterlockOrderedEXT: return "PixelInterlockOrderedEXT"; case ExecutionModePixelInterlockUnorderedEXT: return "PixelInterlockUnorderedEXT"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 806b4ddce5..9afd8a90be 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -158,7 +158,14 @@ enum ExecutionMode { ExecutionModeSignedZeroInfNanPreserve = 4461, ExecutionModeRoundingModeRTE = 4462, ExecutionModeRoundingModeRTZ = 4463, + ExecutionModeEarlyAndLateFragmentTestsAMD = 5017, ExecutionModeStencilRefReplacingEXT = 5027, + ExecutionModeStencilRefUnchangedFrontAMD = 5079, + ExecutionModeStencilRefGreaterFrontAMD = 5080, + ExecutionModeStencilRefLessFrontAMD = 5081, + ExecutionModeStencilRefUnchangedBackAMD = 5082, + ExecutionModeStencilRefGreaterBackAMD = 5083, + ExecutionModeStencilRefLessBackAMD = 5084, ExecutionModeOutputLinesNV = 5269, ExecutionModeOutputPrimitivesNV = 5270, ExecutionModeDerivativeGroupQuadsNV = 5289, diff --git a/Test/baseResults/spv.earlyAndlateFragmentTests.frag.out b/Test/baseResults/spv.earlyAndlateFragmentTests.frag.out new file mode 100644 index 0000000000..e5b9a4273a --- /dev/null +++ b/Test/baseResults/spv.earlyAndlateFragmentTests.frag.out @@ -0,0 +1,41 @@ +spv.earlyAndlateFragmentTests.frag +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 16 + + Capability Shader + Extension "SPV_AMD_shader_early_and_late_fragment_tests" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 11 + ExecutionMode 4 OriginUpperLeft + ExecutionMode 4 EarlyAndLateFragmentTestsAMD + ExecutionMode 4 DepthReplacing + ExecutionMode 4 DepthLess + Source GLSL 450 + SourceExtension "GL_ARB_fragment_shader_interlock" + SourceExtension "GL_ARB_shader_stencil_export" + SourceExtension "GL_EXT_fragment_shading_rate" + Name 4 "main" + Name 8 "gl_FragDepth" + Name 11 "instanceIndex" + Decorate 8(gl_FragDepth) BuiltIn FragDepth + Decorate 11(instanceIndex) Flat + Decorate 11(instanceIndex) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Output 6(float) + 8(gl_FragDepth): 7(ptr) Variable Output + 9: TypeInt 32 1 + 10: TypePointer Input 9(int) +11(instanceIndex): 10(ptr) Variable Input + 14: 6(float) Constant 1117913088 + 4(main): 2 Function None 3 + 5: Label + 12: 9(int) Load 11(instanceIndex) + 13: 6(float) ConvertSToF 12 + 15: 6(float) FDiv 13 14 + Store 8(gl_FragDepth) 15 + Return + FunctionEnd diff --git a/Test/baseResults/spv.shaderStencilExport.frag.out b/Test/baseResults/spv.shaderStencilExport.frag.out index f73349c920..9bb217898f 100644 --- a/Test/baseResults/spv.shaderStencilExport.frag.out +++ b/Test/baseResults/spv.shaderStencilExport.frag.out @@ -10,6 +10,7 @@ spv.shaderStencilExport.frag MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 8 ExecutionMode 4 OriginUpperLeft + ExecutionMode 4 StencilRefReplacingEXT Source GLSL 450 SourceExtension "GL_ARB_shader_stencil_export" Name 4 "main" diff --git a/Test/spv.earlyAndlateFragmentTests.frag b/Test/spv.earlyAndlateFragmentTests.frag new file mode 100644 index 0000000000..ef3b4af60a --- /dev/null +++ b/Test/spv.earlyAndlateFragmentTests.frag @@ -0,0 +1,12 @@ +#version 450 core +#extension GL_EXT_fragment_shading_rate : enable +#extension GL_ARB_shader_stencil_export : enable +#extension GL_ARB_fragment_shader_interlock : enable +#extension GL_AMD_shader_early_and_late_fragment_tests : enable +layout(location = 0) flat in int instanceIndex; +layout(early_and_late_fragment_tests_amd) in; +layout(depth_less) out float gl_FragDepth; +void main() +{ + gl_FragDepth = float(instanceIndex) / float(81); +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 3eec5973b4..6a429fd441 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -128,6 +128,7 @@ enum TStorageQualifier { // built-ins written by fragment shader EvqFragColor, EvqFragDepth, + EvqFragStencil, // end of list EvqLast @@ -353,6 +354,7 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqPointCoord: return "gl_PointCoord"; break; case EvqFragColor: return "fragColor"; break; case EvqFragDepth: return "gl_FragDepth"; break; + case EvqFragStencil: return "gl_FragStencilRefARB"; break; case EvqPayload: return "rayPayloadNV"; break; case EvqPayloadIn: return "rayPayloadInNV"; break; case EvqHitAttr: return "hitAttributeNV"; break; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 682d124cc9..93909a30b9 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -443,6 +443,18 @@ enum TLayoutDepth { EldCount }; +enum TLayoutStencil { + ElsNone, + ElsRefUnchangedFrontAMD, + ElsRefGreaterFrontAMD, + ElsRefLessFrontAMD, + ElsRefUnchangedBackAMD, + ElsRefGreaterBackAMD, + ElsRefLessBackAMD, + + ElsCount +}; + enum TBlendEquationShift { // No 'EBlendNone': // These are used as bit-shift amounts. A mask of such shifts will have type 'int', @@ -705,6 +717,7 @@ class TQualifier { case EvqVaryingOut: case EvqFragColor: case EvqFragDepth: + case EvqFragStencil: return true; default: return false; @@ -772,6 +785,7 @@ class TQualifier { case EvqVaryingOut: case EvqFragColor: case EvqFragDepth: + case EvqFragStencil: return true; default: return false; @@ -1239,6 +1253,18 @@ class TQualifier { default: return "none"; } } + static const char* getLayoutStencilString(TLayoutStencil s) + { + switch (s) { + case ElsRefUnchangedFrontAMD: return "stencil_ref_unchanged_front_amd"; + case ElsRefGreaterFrontAMD: return "stencil_ref_greater_front_amd"; + case ElsRefLessFrontAMD: return "stencil_ref_less_front_amd"; + case ElsRefUnchangedBackAMD: return "stencil_ref_unchanged_back_amd"; + case ElsRefGreaterBackAMD: return "stencil_ref_greater_back_amd"; + case ElsRefLessBackAMD: return "stencil_ref_less_back_amd"; + default: return "none"; + } + } static const char* getBlendEquationString(TBlendEquationShift e) { switch (e) { @@ -1336,7 +1362,9 @@ struct TShaderQualifiers { #ifndef GLSLANG_WEB bool earlyFragmentTests; // fragment input bool postDepthCoverage; // fragment input + bool earlyAndLateFragmentTestsAMD; //fragment input TLayoutDepth layoutDepth; + TLayoutStencil layoutStencil; bool blendEquation; // true if any blend equation was specified int numViews; // multiview extenstions TInterlockOrdering interlockOrdering; @@ -1346,6 +1374,7 @@ struct TShaderQualifiers { int primitives; // mesh shader "max_primitives"DerivativeGroupLinear; // true if layout derivative_group_linearNV set bool layoutPrimitiveCulling; // true if layout primitive_culling set TLayoutDepth getDepth() const { return layoutDepth; } + TLayoutStencil getStencil() const { return layoutStencil; } #else TLayoutDepth getDepth() const { return EldNone; } #endif @@ -1371,8 +1400,10 @@ struct TShaderQualifiers { localSizeSpecId[2] = TQualifier::layoutNotSet; #ifndef GLSLANG_WEB earlyFragmentTests = false; + earlyAndLateFragmentTestsAMD = false; postDepthCoverage = false; layoutDepth = EldNone; + layoutStencil = ElsNone; blendEquation = false; numViews = TQualifier::layoutNotSet; layoutOverrideCoverage = false; @@ -1424,10 +1455,14 @@ struct TShaderQualifiers { #ifndef GLSLANG_WEB if (src.earlyFragmentTests) earlyFragmentTests = true; + if (src.earlyAndLateFragmentTestsAMD) + earlyAndLateFragmentTestsAMD = true; if (src.postDepthCoverage) postDepthCoverage = true; if (src.layoutDepth) layoutDepth = src.layoutDepth; + if (src.layoutStencil) + layoutStencil = src.layoutStencil; if (src.blendEquation) blendEquation = src.blendEquation; if (src.numViews != TQualifier::layoutNotSet) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index b18b257525..ff3db7cd0f 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -8065,6 +8065,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable); #ifndef GLSLANG_WEB SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable); + SpecialQualifier("gl_FragStencilRefARB", EvqFragStencil, EbvFragStencilRef, symbolTable); SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable); BuiltInVariable("gl_ClipDistance", EbvClipDistance, symbolTable); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 45a72d9333..143d62142e 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2988,6 +2988,12 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt if (isEsProfile() && intermediate.getEarlyFragmentTests()) message = "can't modify gl_FragDepth if using early_fragment_tests"; break; + case EvqFragStencil: + intermediate.setStencilReplacing(); + // "In addition, it is an error to statically write to gl_FragDepth in the fragment shader." + if (isEsProfile() && intermediate.getEarlyFragmentTests()) + message = "can't modify EvqFragStencil if using early_fragment_tests"; + break; default: break; @@ -4709,10 +4715,22 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS if (! intermediate.setDepth(publicType.layoutDepth)) error(loc, "all redeclarations must use the same depth layout on", "redeclaration", symbol->getName().c_str()); } + } else if (identifier == "gl_FragStencilRefARB") { + if (qualifier.nopersp != symbolQualifier.nopersp || qualifier.flat != symbolQualifier.flat || + qualifier.isMemory() || qualifier.isAuxiliary()) + error(loc, "can only change layout qualification of", "redeclaration", symbol->getName().c_str()); + if (qualifier.storage != EvqVaryingOut) + error(loc, "cannot change output storage qualification of", "redeclaration", symbol->getName().c_str()); + if (publicType.layoutStencil != ElsNone) { + if (intermediate.inIoAccessed("gl_FragStencilRefARB")) + error(loc, "cannot redeclare after use", "gl_FragStencilRefARB", ""); + if (!intermediate.setStencil(publicType.layoutStencil)) + error(loc, "all redeclarations must use the same stencil layout on", "redeclaration", + symbol->getName().c_str()); + } } else if ( - identifier == "gl_PrimitiveIndicesNV" || - identifier == "gl_FragStencilRefARB") { + identifier == "gl_PrimitiveIndicesNV") { if (qualifier.hasLayout()) error(loc, "cannot apply layout qualifier to", "redeclaration", symbol->getName().c_str()); if (qualifier.storage != EvqVaryingOut) @@ -5546,6 +5564,12 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi publicType.shaderQualifiers.earlyFragmentTests = true; return; } + if (id == "early_and_late_fragment_tests_amd") { + profileRequires(loc, ENoProfile | ECoreProfile | ECompatibilityProfile, 420, E_GL_AMD_shader_early_and_late_fragment_tests, "early_and_late_fragment_tests_amd"); + profileRequires(loc, EEsProfile, 310, nullptr, "early_and_late_fragment_tests_amd"); + publicType.shaderQualifiers.earlyAndLateFragmentTestsAMD = true; + return; + } if (id == "post_depth_coverage") { requireExtensions(loc, Num_post_depth_coverageEXTs, post_depth_coverageEXTs, "post depth coverage"); if (extensionTurnedOn(E_GL_ARB_post_depth_coverage)) { @@ -5562,6 +5586,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } } + for (TLayoutStencil stencil = (TLayoutStencil)(ElsNone + 1); stencil < ElsCount; stencil = (TLayoutStencil)(stencil+1)) { + if (id == TQualifier::getLayoutStencilString(stencil)) { + requireProfile(loc, ECoreProfile | ECompatibilityProfile, "stencil layout qualifier"); + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 420, nullptr, "stencil layout qualifier"); + publicType.shaderQualifiers.layoutStencil = stencil; + return; + } + } for (TInterlockOrdering order = (TInterlockOrdering)(EioNone + 1); order < EioCount; order = (TInterlockOrdering)(order+1)) { if (id == TQualifier::getInterlockOrderingString(order)) { requireProfile(loc, ECoreProfile | ECompatibilityProfile, "fragment shader interlock layout qualifier"); @@ -7259,6 +7291,8 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden error(loc, "can only apply origin_upper_left and pixel_center_origin to gl_FragCoord", "layout qualifier", ""); if (identifier != "gl_FragDepth" && publicType.shaderQualifiers.getDepth() != EldNone) error(loc, "can only apply depth layout to gl_FragDepth", "layout qualifier", ""); + if (identifier != "gl_FragStencilRefARB" && publicType.shaderQualifiers.getStencil() != ElsNone) + error(loc, "can only apply depth layout to gl_FragStencilRefARB", "layout qualifier", ""); // Check for redeclaration of built-ins and/or attempting to declare a reserved name TSymbol* symbol = redeclareBuiltinVariable(loc, identifier, type.getQualifier(), publicType.shaderQualifiers); @@ -9091,6 +9125,12 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con else error(loc, "can only apply to 'in'", "early_fragment_tests", ""); } + if (publicType.shaderQualifiers.earlyAndLateFragmentTestsAMD) { + if (publicType.qualifier.storage == EvqVaryingIn) + intermediate.setEarlyAndLateFragmentTestsAMD(); + else + error(loc, "can only apply to 'in'", "early_and_late_fragment_tests_amd", ""); + } if (publicType.shaderQualifiers.postDepthCoverage) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setPostDepthCoverage(); diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 52c1e1ccd1..e24d5c5451 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -275,6 +275,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_AMD_shader_image_load_store_lod] = EBhDisable; extensionBehavior[E_GL_AMD_shader_fragment_mask] = EBhDisable; extensionBehavior[E_GL_AMD_gpu_shader_half_float_fetch] = EBhDisable; + extensionBehavior[E_GL_AMD_shader_early_and_late_fragment_tests] = EBhDisable; extensionBehavior[E_GL_INTEL_shader_integer_functions2] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index c411f5b62e..6817cff2ed 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -238,6 +238,7 @@ const char* const E_GL_AMD_gpu_shader_int16 = "GL_AMD_gpu_sh const char* const E_GL_AMD_shader_image_load_store_lod = "GL_AMD_shader_image_load_store_lod"; const char* const E_GL_AMD_shader_fragment_mask = "GL_AMD_shader_fragment_mask"; const char* const E_GL_AMD_gpu_shader_half_float_fetch = "GL_AMD_gpu_shader_half_float_fetch"; +const char* const E_GL_AMD_shader_early_and_late_fragment_tests = "GL_AMD_shader_early_and_late_fragment_tests"; const char* const E_GL_INTEL_shader_integer_functions2 = "GL_INTEL_shader_integer_functions2"; diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index d3e86f9e1e..ddeaa3530e 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -296,6 +296,7 @@ class TIntermediate { invariantAll(false), nanMinMaxClamp(false), depthReplacing(false), + stencilReplacing(false), uniqueId(0), globalUniformBlockName(""), atomicCounterBlockName(""), @@ -311,7 +312,7 @@ class TIntermediate { inputPrimitive(ElgNone), outputPrimitive(ElgNone), pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), - postDepthCoverage(false), depthLayout(EldNone), + postDepthCoverage(false), earlyAndLateFragmentTestsAMD(false), depthLayout(EldNone), stencilLayout(ElsNone), hlslFunctionality1(false), blendEquations(0), xfbMode(false), multiStream(false), layoutOverrideCoverage(false), @@ -587,6 +588,8 @@ class TIntermediate { bool isInvariantAll() const { return invariantAll; } void setDepthReplacing() { depthReplacing = true; } bool isDepthReplacing() const { return depthReplacing; } + void setStencilReplacing() { stencilReplacing = true; } + bool isStencilReplacing() const { return stencilReplacing; } bool setLocalSize(int dim, int size) { if (localSizeNotDefault[dim]) @@ -821,7 +824,9 @@ class TIntermediate { void setPostDepthCoverage() { postDepthCoverage = true; } bool getPostDepthCoverage() const { return postDepthCoverage; } void setEarlyFragmentTests() { earlyFragmentTests = true; } + void setEarlyAndLateFragmentTestsAMD() { earlyAndLateFragmentTestsAMD = true; } bool getEarlyFragmentTests() const { return earlyFragmentTests; } + bool getEarlyAndLateFragmentTestsAMD() const { return earlyAndLateFragmentTestsAMD; } bool setDepth(TLayoutDepth d) { if (depthLayout != EldNone) @@ -829,7 +834,15 @@ class TIntermediate { depthLayout = d; return true; } + bool setStencil(TLayoutStencil s) + { + if (stencilLayout != ElsNone) + return stencilLayout == s; + stencilLayout = s; + return true; + } TLayoutDepth getDepth() const { return depthLayout; } + TLayoutStencil getStencil() const { return stencilLayout; } void setOriginUpperLeft() { originUpperLeft = true; } bool getOriginUpperLeft() const { return originUpperLeft; } void setPixelCenterInteger() { pixelCenterInteger = true; } @@ -1100,6 +1113,7 @@ class TIntermediate { bool invariantAll; bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN bool depthReplacing; + bool stencilReplacing; int localSize[3]; bool localSizeNotDefault[3]; int localSizeSpecId[3]; @@ -1131,7 +1145,9 @@ class TIntermediate { bool pointMode; bool earlyFragmentTests; bool postDepthCoverage; + bool earlyAndLateFragmentTestsAMD; TLayoutDepth depthLayout; + TLayoutStencil stencilLayout; bool hlslFunctionality1; int blendEquations; // an 'or'ing of masks of shifts of TBlendEquationShift bool xfbMode; From 374c124025b2d08257d09625a54c2231163386e6 Mon Sep 17 00:00:00 2001 From: Thomas Aven Date: Wed, 13 Jul 2022 08:25:57 +0200 Subject: [PATCH 067/594] Make GL_KHR_ray_query provide EOpConstructAccStruct Previously, GL_KHR_ray_tracing was a required extension to generate OpConvertUToAccelerationStructureKHR conversion instructions from uint64 and uvec2. However, both GL_KHR_ray_tracing and GL_KHR_ray_query should provide this construction. Change-Id: I6564c127fd28d9b527d334958a5adc168f5cdd9a --- ...onvertUToAccelerationStructureKHR.comp.out | 51 +++++++++++++++++++ ...-OpConvertUToAccelerationStructureKHR.comp | 15 ++++++ glslang/MachineIndependent/ParseHelper.cpp | 4 +- glslang/MachineIndependent/Versions.h | 4 ++ gtests/Spv.FromFile.cpp | 1 + 5 files changed, 73 insertions(+), 2 deletions(-) create mode 100644 Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out create mode 100644 Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp diff --git a/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out new file mode 100644 index 0000000000..44e89699bd --- /dev/null +++ b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out @@ -0,0 +1,51 @@ +rayQuery-OpConvertUToAccelerationStructureKHR.comp +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 28 + + Capability Shader + Capability RayQueryKHR + Extension "SPV_KHR_ray_query" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_ray_query" + Name 4 "main" + Name 8 "rayQuery" + Name 11 "params" + MemberName 11(params) 0 "tlas" + Name 13 "" + MemberDecorate 11(params) 0 Offset 0 + Decorate 11(params) Block + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeRayQueryKHR + 7: TypePointer Private 6 + 8(rayQuery): 7(ptr) Variable Private + 9: TypeInt 32 0 + 10: TypeVector 9(int) 2 + 11(params): TypeStruct 10(ivec2) + 12: TypePointer PushConstant 11(params) + 13: 12(ptr) Variable PushConstant + 14: TypeInt 32 1 + 15: 14(int) Constant 0 + 16: TypePointer PushConstant 10(ivec2) + 19: TypeAccelerationStructureKHR + 21: 9(int) Constant 0 + 22: TypeFloat 32 + 23: TypeVector 22(float) 3 + 24: 22(float) Constant 0 + 25: 23(fvec3) ConstantComposite 24 24 24 + 26: 22(float) Constant 1065353216 + 27: 23(fvec3) ConstantComposite 26 26 26 + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 13 15 + 18: 10(ivec2) Load 17 + 20: 19 ConvertUToAccelerationStructureKHR 18 + RayQueryInitializeKHR 8(rayQuery) 20 21 21 25 24 27 26 + RayQueryTerminateKHR 8(rayQuery) + Return + FunctionEnd diff --git a/Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp b/Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp new file mode 100644 index 0000000000..673f9b0b7e --- /dev/null +++ b/Test/rayQuery-OpConvertUToAccelerationStructureKHR.comp @@ -0,0 +1,15 @@ +#version 460 + +#extension GL_EXT_ray_query : enable + +layout(push_constant, std140) uniform params +{ + uvec2 tlas; +}; + +void main() +{ + rayQueryEXT rayQuery; + rayQueryInitializeEXT(rayQuery, accelerationStructureEXT(tlas), 0, 0, vec3(0.0), 0.0, vec3(1.0), 1.0); + rayQueryTerminateEXT(rayQuery); +} \ No newline at end of file diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 45a72d9333..272707ac63 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -8095,12 +8095,12 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructAccStruct: if ((node->getType().isScalar() && node->getType().getBasicType() == EbtUint64)) { // construct acceleration structure from uint64 - requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uint64_t conversion to acclerationStructureEXT"); + requireExtensions(loc, Num_ray_tracing_EXTs, ray_tracing_EXTs, "uint64_t conversion to acclerationStructureEXT"); return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUint64ToAccStruct, true, node, type); } else if (node->getType().isVector() && node->getType().getBasicType() == EbtUint && node->getVectorSize() == 2) { // construct acceleration structure from uint64 - requireExtensions(loc, 1, &E_GL_EXT_ray_tracing, "uvec2 conversion to accelerationStructureEXT"); + requireExtensions(loc, Num_ray_tracing_EXTs, ray_tracing_EXTs, "uvec2 conversion to accelerationStructureEXT"); return intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvUvec2ToAccStruct, true, node, type); } else diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index c411f5b62e..bb5d9bccd9 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -217,6 +217,10 @@ const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_s const char* const post_depth_coverageEXTs[] = { E_GL_ARB_post_depth_coverage, E_GL_EXT_post_depth_coverage }; const int Num_post_depth_coverageEXTs = sizeof(post_depth_coverageEXTs) / sizeof(post_depth_coverageEXTs[0]); +// Array of extensions to cover both extensions providing ray tracing capabilities. +const char* const ray_tracing_EXTs[] = { E_GL_EXT_ray_query, E_GL_EXT_ray_tracing }; +const int Num_ray_tracing_EXTs = sizeof(ray_tracing_EXTs) / sizeof(ray_tracing_EXTs[0]); + // OVR extensions const char* const E_GL_OVR_multiview = "GL_OVR_multiview"; const char* const E_GL_OVR_multiview2 = "GL_OVR_multiview2"; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 300d6642fd..b21f299270 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -258,6 +258,7 @@ INSTANTIATE_TEST_SUITE_P( "rayQuery-initialization.Error.comp", "rayQuery-global.rgen", "rayQuery-types.comp", + "rayQuery-OpConvertUToAccelerationStructureKHR.comp", "spv.set.vert", "spv.double.comp", "spv.100ops.frag", From 7f784c81e9e6e65bfb6df0d5074062f7baf99f4c Mon Sep 17 00:00:00 2001 From: sean <43609023+spnda@users.noreply.github.com> Date: Mon, 25 Jul 2022 17:54:20 +0200 Subject: [PATCH 068/594] Fix: Properly include all headers in deployments --- .github/workflows/continuous_deployment.yml | 46 +++++++++++---------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 86f439db8a..6df647bd53 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -77,17 +77,18 @@ jobs: zip ${ARCHIVE} \ bin/glslangValidator \ include/glslang/* \ - lib/libGenericCodeGen${SUFFIX}.a \ - lib/libglslang${SUFFIX}.a \ - lib/libglslang-default-resource-limits${SUFFIX}.a \ - lib/libHLSL${SUFFIX}.a \ - lib/libMachineIndependent${SUFFIX}.a \ - lib/libOGLCompiler${SUFFIX}.a \ - lib/libOSDependent${SUFFIX}.a \ - lib/libSPIRV${SUFFIX}.a \ - lib/libSPVRemapper${SUFFIX}.a \ - lib/libSPIRV-Tools${SUFFIX}.a \ - lib/libSPIRV-Tools-opt${SUFFIX}.a + include/glslang/**/* \ + lib/libGenericCodeGen.a \ + lib/libglslang.a \ + lib/libglslang-default-resource-limits.a \ + lib/libHLSL.a \ + lib/libMachineIndependent.a \ + lib/libOGLCompiler.a \ + lib/libOSDependent.a \ + lib/libSPIRV.a \ + lib/libSPVRemapper.a \ + lib/libSPIRV-Tools.a \ + lib/libSPIRV-Tools-opt.a - name: Deploy if: ${{ matrix.compiler.cc == 'clang' }} env: @@ -147,17 +148,18 @@ jobs: zip ${ARCHIVE} \ bin/glslangValidator \ include/glslang/* \ - lib/libGenericCodeGen${SUFFIX}.a \ - lib/libglslang${SUFFIX}.a \ - lib/libglslang-default-resource-limits${SUFFIX}.a \ - lib/libHLSL${SUFFIX}.a \ - lib/libMachineIndependent${SUFFIX}.a \ - lib/libOGLCompiler${SUFFIX}.a \ - lib/libOSDependent${SUFFIX}.a \ - lib/libSPIRV${SUFFIX}.a \ - lib/libSPVRemapper${SUFFIX}.a \ - lib/libSPIRV-Tools${SUFFIX}.a \ - lib/libSPIRV-Tools-opt${SUFFIX}.a + include/glslang/**/* \ + lib/libGenericCodeGen.a \ + lib/libglslang.a \ + lib/libglslang-default-resource-limits.a \ + lib/libHLSL.a \ + lib/libMachineIndependent.a \ + lib/libOGLCompiler.a \ + lib/libOSDependent.a \ + lib/libSPIRV.a \ + lib/libSPVRemapper.a \ + lib/libSPIRV-Tools.a \ + lib/libSPIRV-Tools-opt.a - name: Deploy env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip From 738c09e31bfce56d51d40a41f941539da83502f8 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Mon, 25 Jul 2022 17:00:48 -0600 Subject: [PATCH 069/594] Update release description Fix #2978. --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index bf8c572603..b08c47b9d3 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -98,7 +98,7 @@ deploy: auth_token: secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6 release: master-tot - description: "Continuous build of the latest master branch by Appveyor and Travis CI" + description: "Continuous build of the latest master branch by Appveyor and Github" artifact: artifacts-zip draft: false prerelease: false From 6a2b45c3cdac3d7d2ea8c565468221aca86cfb82 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Mon, 25 Jul 2022 17:01:47 -0600 Subject: [PATCH 070/594] Replace tabs with spaces This file was accidentally using mixed tabs and spaces. --- .github/workflows/deploy.js | 92 ++++++++++++++++++------------------- 1 file changed, 46 insertions(+), 46 deletions(-) diff --git a/.github/workflows/deploy.js b/.github/workflows/deploy.js index 82ebb1bd9e..9f8d24249c 100644 --- a/.github/workflows/deploy.js +++ b/.github/workflows/deploy.js @@ -1,73 +1,73 @@ module.exports = async ({github, context, core}) => { try { - await github.rest.git.updateRef({ - owner: context.repo.owner, - repo: context.repo.repo, - ref: 'tags/master-tot', - sha: context.sha - }) + await github.rest.git.updateRef({ + owner: context.repo.owner, + repo: context.repo.repo, + ref: 'tags/master-tot', + sha: context.sha + }) } catch (error) { - core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`) + core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`) } let release try { - release = await github.rest.repos.getReleaseByTag({ - owner: context.repo.owner, - repo: context.repo.repo, - tag: 'master-tot' - }) + release = await github.rest.repos.getReleaseByTag({ + owner: context.repo.owner, + repo: context.repo.repo, + tag: 'master-tot' + }) } catch (error) { - core.setFailed(`get the master release; ${error.name}; ${error.message}`) + core.setFailed(`get the master release; ${error.name}; ${error.message}`) } try { - await github.rest.repos.updateRelease({ - owner: context.repo.owner, - repo: context.repo.repo, - release_id: release.data.id - }) + await github.rest.repos.updateRelease({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id + }) } catch (error) { - core.setFailed(`update the master release; ${error.name}; ${error.message}`) + core.setFailed(`update the master release; ${error.name}; ${error.message}`) } let release_assets try { - release_assets = await github.rest.repos.listReleaseAssets({ - owner: context.repo.owner, - repo: context.repo.repo, - release_id: release.data.id - }) + release_assets = await github.rest.repos.listReleaseAssets({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id + }) } catch (error) { - core.setFailed(`list release assets; ${error.name}; ${error.message}`) + core.setFailed(`list release assets; ${error.name}; ${error.message}`) } const { ARCHIVE } = process.env for (const release_asset of release_assets.data) { - if (release_asset.name === `${ ARCHIVE }`) { - try { - await github.rest.repos.deleteReleaseAsset({ - owner: context.repo.owner, - repo: context.repo.repo, - asset_id: release_asset.id - }) - } catch (error) { - core.setFailed(`delete ${ ARCHIVE }; ${error.name}; ${error.message}`) - } - } + if (release_asset.name === `${ ARCHIVE }`) { + try { + await github.rest.repos.deleteReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + asset_id: release_asset.id + }) + } catch (error) { + core.setFailed(`delete ${ ARCHIVE }; ${error.name}; ${error.message}`) + } + } } try { - const asset_path = `./build/install/${ ARCHIVE }` - const fs = require("fs") - await github.rest.repos.uploadReleaseAsset({ - owner: context.repo.owner, - repo: context.repo.repo, - release_id: release.data.id, - name: `${ ARCHIVE }`, - data: fs.readFileSync(asset_path) - }) + const asset_path = `./build/install/${ ARCHIVE }` + const fs = require("fs") + await github.rest.repos.uploadReleaseAsset({ + owner: context.repo.owner, + repo: context.repo.repo, + release_id: release.data.id, + name: `${ ARCHIVE }`, + data: fs.readFileSync(asset_path) + }) } catch (error) { - core.setFailed(`upload ${ ARCHIVE }; ${error.name}; ${error.message}`) + core.setFailed(`upload ${ ARCHIVE }; ${error.name}; ${error.message}`) } } From 457d11ebd86c089f00a934e579f9c4dc76921e71 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 27 Jul 2022 17:12:24 -0600 Subject: [PATCH 071/594] Update MacOS runner Per https://github.com/actions/virtual-environments/issues/5583 Fix #2984 --- .github/workflows/continuous_deployment.yml | 2 +- .github/workflows/continuous_integration.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 6df647bd53..c375ac4505 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -104,7 +104,7 @@ jobs: strategy: fail-fast: false matrix: - os: [{genus: macos-10.15, family: osx}] + os: [{genus: macos-11, family: osx}] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index feec0dc227..7c36c68843 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -64,7 +64,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-10.15] + os: [macos-11] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: From b43848f0ca053444e43f4c280f4a25acff50ad90 Mon Sep 17 00:00:00 2001 From: sean <43609023+spnda@users.noreply.github.com> Date: Sat, 30 Jul 2022 06:10:47 +0200 Subject: [PATCH 072/594] Fix: Build arm64 binaries for macOS --- .github/workflows/continuous_deployment.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index c375ac4505..9b8f9a6538 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -106,6 +106,7 @@ jobs: matrix: os: [{genus: macos-11, family: osx}] compiler: [{cc: clang, cxx: clang++}] + arch: [x86_64, arm64] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v2 @@ -133,7 +134,7 @@ jobs: CXX: ${{matrix.compiler.cxx}} run: | mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. + cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install -DCMAKE_OSX_ARCHITECTURES=${{matrix.arch}} .. make -j4 install - name: Test run: | @@ -142,7 +143,7 @@ jobs: cd ../Test && ./runtests - name: Zip env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.arch}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ @@ -162,7 +163,7 @@ jobs: lib/libSPIRV-Tools-opt.a - name: Deploy env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.arch}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@v5 with: script: | From f28022c9f99bec57043c7a4f53f3b361558bfa42 Mon Sep 17 00:00:00 2001 From: David Neto Date: Tue, 2 Aug 2022 20:07:01 -0400 Subject: [PATCH 073/594] Avoid double-free in functions cloned for vulkan relaxed mode (#2987) * Avoid double-free in functions cloned for vulkan relaxed mode When rewriting function calls atomicCounterIncrement and atoicCounterDecrement, clone the parameters so that the TParameter 'type' field is cloned. This avoids double-free when both the original and transformed functions are deleted by the parser. Fixes a ubsan failure. --- glslang/MachineIndependent/ParseHelper.cpp | 10 ++++++---- glslang/MachineIndependent/SymbolTable.cpp | 2 +- glslang/MachineIndependent/SymbolTable.h | 3 ++- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 6f41bfa071..e6e3db8bc3 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7035,12 +7035,14 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T TFunction realFunc(&name, function->getType()); + // Use copyParam to avoid shared ownership of the 'type' field + // of the parameter. for (int i = 0; i < function->getParamCount(); ++i) { - realFunc.addParameter((*function)[i]); + realFunc.addParameter(TParameter().copyParam((*function)[i])); } TParameter tmpP = { 0, &uintType }; - realFunc.addParameter(tmpP); + realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true)); result = handleFunctionCall(loc, &realFunc, arguments); @@ -7053,11 +7055,11 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T TFunction realFunc(&name, function->getType()); for (int i = 0; i < function->getParamCount(); ++i) { - realFunc.addParameter((*function)[i]); + realFunc.addParameter(TParameter().copyParam((*function)[i])); } TParameter tmpP = { 0, &uintType }; - realFunc.addParameter(tmpP); + realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true)); result = handleFunctionCall(loc, &realFunc, arguments); diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index a3ffa0c467..2f1b5ac3cb 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -383,7 +383,7 @@ TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf) for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) { TParameter param; parameters.push_back(param); - parameters.back().copyParam(copyOf.parameters[i]); + (void)parameters.back().copyParam(copyOf.parameters[i]); } extensions = nullptr; diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 31312ecbaa..2e570bb3bc 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -224,7 +224,7 @@ struct TParameter { TString *name; TType* type; TIntermTyped* defaultValue; - void copyParam(const TParameter& param) + TParameter& copyParam(const TParameter& param) { if (param.name) name = NewPoolTString(param.name->c_str()); @@ -232,6 +232,7 @@ struct TParameter { name = 0; type = param.type->clone(); defaultValue = param.defaultValue; + return *this; } TBuiltInVariable getDeclaredBuiltIn() const { return type->getQualifier().declaredBuiltIn; } }; From fb64704060ffbd7048f25a07518c55639726c025 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?MACHIZAUD=20Andr=C3=A9a?= Date: Wed, 3 Aug 2022 02:16:03 +0200 Subject: [PATCH 074/594] Add unified `glslang` CMake config collecting `glslang-targets` targets (#2989) --- CMakeLists.txt | 36 ++++++++++++++ OGLCompilersDLL/CMakeLists.txt | 17 +++++-- SPIRV/CMakeLists.txt | 45 +++++++++-------- StandAlone/CMakeLists.txt | 56 +++++++++++++++------- glslang/CMakeLists.txt | 34 ++++++++----- glslang/OSDependent/Unix/CMakeLists.txt | 16 +++++-- glslang/OSDependent/Windows/CMakeLists.txt | 16 +++++-- gtests/CMakeLists.txt | 16 +++++-- hlsl/CMakeLists.txt | 22 +++++---- 9 files changed, 187 insertions(+), 71 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6a43f6ff25..ddbc6e80e7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -50,6 +50,7 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Adhere to GNU filesystem layout conventions include(GNUInstallDirs) +include(CMakePackageConfigHelpers) # Needed for CMAKE_DEPENDENT_OPTION macro include(CMakeDependentOption) @@ -367,3 +368,38 @@ if(ENABLE_CTEST AND BUILD_TESTING) COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) endif() + +if(ENABLE_GLSLANG_INSTALL) + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[ + @PACKAGE_INIT@ + include("@PACKAGE_PATH_EXPORT_TARGETS@") + ]=]) + + set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake") + configure_package_config_file( + "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" + "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" + PATH_VARS + PATH_EXPORT_TARGETS + INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME} + ) + + write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" + VERSION ${GLSLANG_VERSION} + COMPATIBILITY SameMajorVersion + ) + + install( + EXPORT glslang-targets + NAMESPACE "glslang::" + DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" + ) + + install( + FILES + "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" + "${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" + DESTINATION + "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" + ) +endif() \ No newline at end of file diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index 0b007d45c6..8c0e2ba5c7 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -42,7 +42,18 @@ if(WIN32) endif(WIN32) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OGLCompiler EXPORT OGLCompilerTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OGLCompilerTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(TARGETS OGLCompiler EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" " + message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::OGLCompiler) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(OGLCompiler ALIAS glslang::OGLCompiler) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif(ENABLE_GLSLANG_INSTALL) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 775466e06c..c26e310da7 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -109,31 +109,36 @@ if(WIN32) endif() if(ENABLE_GLSLANG_INSTALL) - if(BUILD_SHARED_LIBS) - if (ENABLE_SPVREMAPPER) - install(TARGETS SPVRemapper EXPORT SPVRemapperTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - endif() - install(TARGETS SPIRV EXPORT SPIRVTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - else() - if (ENABLE_SPVREMAPPER) - install(TARGETS SPVRemapper EXPORT SPVRemapperTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - install(TARGETS SPIRV EXPORT SPIRVTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + if (ENABLE_SPVREMAPPER) + install(TARGETS SPVRemapper EXPORT glslang-targets) endif() + install(TARGETS SPIRV EXPORT glslang-targets) + + # Backward compatibility if (ENABLE_SPVREMAPPER) - install(EXPORT SPVRemapperTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" " + message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::SPVRemapper) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(SPVRemapper ALIAS glslang::SPVRemapper) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() - install(EXPORT SPIRVTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" " + message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::SPIRV) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(SPIRV ALIAS glslang::SPIRV) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif() diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 2b163e7f55..027575047f 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -104,24 +104,48 @@ if(WIN32) endif() if(ENABLE_GLSLANG_INSTALL) - install(TARGETS glslangValidator EXPORT glslangValidatorTargets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(EXPORT glslangValidatorTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(TARGETS glslangValidator EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" " + message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::glslangValidator) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(glslangValidator ALIAS glslang::glslangValidator) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) if(ENABLE_SPVREMAPPER) - install(TARGETS spirv-remap EXPORT spirv-remapTargets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(EXPORT spirv-remapTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - endif() + install(TARGETS spirv-remap EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" " + message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::spirv-remap) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() - if(BUILD_SHARED_LIBS) - install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - else() - install(TARGETS glslang-default-resource-limits EXPORT glslang-default-resource-limitsTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) + add_library(spirv-remap ALIAS glslang::spirv-remap) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() - install(EXPORT glslang-default-resource-limitsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + + install(TARGETS glslang-default-resource-limits EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" " + message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::glslang-default-resource-limits) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif() diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index d0394c865e..45c9813a88 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -200,19 +200,27 @@ endif() # install ################################################################################ if(ENABLE_GLSLANG_INSTALL) - if(BUILD_SHARED_LIBS) - install(TARGETS glslang - EXPORT glslangTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - else() - install(TARGETS glslang MachineIndependent GenericCodeGen - EXPORT glslangTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - - install(EXPORT glslangTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(TARGETS glslang EXPORT glslang-targets) + install(TARGETS MachineIndependent EXPORT glslang-targets) + install(TARGETS GenericCodeGen EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" " + message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::glslang) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + if(${BUILD_SHARED_LIBS}) + add_library(glslang ALIAS glslang::glslang) + else() + add_library(glslang ALIAS glslang::glslang) + add_library(MachineIndependent ALIAS glslang::MachineIndependent) + add_library(GenericCodeGen ALIAS glslang::GenericCodeGen) + endif() + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) set(ALL_HEADERS ${GLSLANG_HEADERS} diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index d521da170a..96ae216040 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -53,7 +53,17 @@ else() endif() if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OSDependent EXPORT OSDependentTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(TARGETS OSDependent EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" " + message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::OSDependent) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(OSDependent ALIAS glslang::OSDependent) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 21d603e72c..548984470f 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -48,7 +48,17 @@ if(WIN32) endif() if(ENABLE_GLSLANG_INSTALL) - install(TARGETS OSDependent EXPORT OSDependentTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - install(EXPORT OSDependentTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(TARGETS OSDependent EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" " + message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::OSDependent) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(OSDependent ALIAS glslang::OSDependent) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index c8f02828cd..dd555ecca3 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -69,9 +69,19 @@ if(BUILD_TESTING) set_property(TARGET glslangtests PROPERTY FOLDER tests) glslang_set_link_args(glslangtests) if(ENABLE_GLSLANG_INSTALL) - install(TARGETS glslangtests EXPORT glslangtestsTargets - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - install(EXPORT glslangtestsTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(TARGETS glslangtests EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" " + message(WARNING \"Using `glslangtestsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::glslangtests) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(glslangtests ALIAS glslang::glslangtests) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 7d5bc152ac..4616cfe01c 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -46,14 +46,16 @@ if(WIN32 AND BUILD_SHARED_LIBS) endif() if(ENABLE_GLSLANG_INSTALL) - if(BUILD_SHARED_LIBS) - install(TARGETS HLSL EXPORT HLSLTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} - LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} - RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) - else() - install(TARGETS HLSL EXPORT HLSLTargets - ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}) - endif() - install(EXPORT HLSLTargets DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(TARGETS HLSL EXPORT glslang-targets) + + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/HLSLTargets.cmake" " + message(WARNING \"Using `HLSLTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::HLSL) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(HLSL ALIAS glslang::HLSL) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/HLSLTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() From d8b64c2713e8879d563632408e0918fe50f86dcb Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Wed, 3 Aug 2022 12:39:23 -0600 Subject: [PATCH 075/594] Revert "Fix: Build arm64 binaries for macOS" --- .github/workflows/continuous_deployment.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 9b8f9a6538..c375ac4505 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -106,7 +106,6 @@ jobs: matrix: os: [{genus: macos-11, family: osx}] compiler: [{cc: clang, cxx: clang++}] - arch: [x86_64, arm64] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v2 @@ -134,7 +133,7 @@ jobs: CXX: ${{matrix.compiler.cxx}} run: | mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install -DCMAKE_OSX_ARCHITECTURES=${{matrix.arch}} .. + cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. make -j4 install - name: Test run: | @@ -143,7 +142,7 @@ jobs: cd ../Test && ./runtests - name: Zip env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.arch}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ @@ -163,7 +162,7 @@ jobs: lib/libSPIRV-Tools-opt.a - name: Deploy env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.arch}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@v5 with: script: | From 5326d151b2a2aad2e59d9b390271c9fa4e5b36c1 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 10 Aug 2022 12:29:15 -0600 Subject: [PATCH 076/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index df2a50815c..1a3202d035 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "b930e734ea198b7aabbbf04ee1562cf6f57962f0" + "commit" : "5e61ea2098220059e89523f1f47b0bcd8c33b89a" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "5a121866927a16ab9d49bed4788b532c7fcea766" + "commit" : "b2a156e1c0434bc8c99aaebba1c7be98be7ac580" } ] } From 6079f49dea54358e4d256b0228afae919112d228 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 10 Aug 2022 15:49:20 -0600 Subject: [PATCH 077/594] Update CHANGES for release 11.11.0 --- CHANGES.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index eee07aaf7f..292147c3c9 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.11.0 2022-08-11 + +### Other changes +* Add OpSource support to C interface +* Deprecate samplerBuffer for spirv1.6 and later +* Add support for SPV_AMD_shader_early_and_late_fragment_tests + ## 11.10.0 2022-06-02 ### Other changes From 56e19ed8cea9098eacc7fee722e06559a4b806b7 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Fri, 12 Aug 2022 10:29:31 -0600 Subject: [PATCH 078/594] Update cmake minimum required version --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ddbc6e80e7..a01168603a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,7 +33,7 @@ # increase to 3.1 once all major distributions # include a version of CMake >= 3.1 -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.14.0) if (POLICY CMP0048) cmake_policy(SET CMP0048 NEW) endif() From 1b32fc8eb242f264f2bedb384d3f3e359f3cdd1d Mon Sep 17 00:00:00 2001 From: Andrea Pappacoda Date: Thu, 25 Aug 2022 23:15:14 +0200 Subject: [PATCH 079/594] build: install glslang-config.cmake to libdir MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As glslang ships architecture dependant files, the Config file should be installed to libdir, not datadir. See https://github.com/KhronosGroup/glslang/pull/2989#discussion_r955367103 for more details. Here's the diff between the install tree before and after this patch: $ diff <(tree install-datadir) <(tree install) 1c1 < install-datadir --- > install 74,99c74,98 < ├── lib < │   ├── cmake < │   │   ├── glslang-default-resource-limitsTargets.cmake < │   │   ├── glslangTargets.cmake < │   │   ├── glslangValidatorTargets.cmake < │   │   ├── HLSLTargets.cmake < │   │   ├── OGLCompilerTargets.cmake < │   │   ├── OSDependentTargets.cmake < │   │   ├── spirv-remapTargets.cmake < │   │   ├── SPIRVTargets.cmake < │   │   └── SPVRemapperTargets.cmake < │   ├── libGenericCodeGen.a < │   ├── libglslang.a < │   ├── libglslang-default-resource-limits.a < │   ├── libHLSL.a < │   ├── libMachineIndependent.a < │   ├── libOGLCompiler.a < │   ├── libOSDependent.a < │   ├── libSPIRV.a < │   └── libSPVRemapper.a < └── share < └── glslang < ├── glslang-config.cmake < ├── glslang-config-version.cmake < ├── glslang-targets.cmake < └── glslang-targets-debug.cmake --- > └── lib > ├── cmake > │   ├── glslang-default-resource-limitsTargets.cmake > │   ├── glslangTargets.cmake > │   ├── glslangValidatorTargets.cmake > │   ├── HLSLTargets.cmake > │   ├── OGLCompilerTargets.cmake > │   ├── OSDependentTargets.cmake > │   ├── spirv-remapTargets.cmake > │   ├── SPIRVTargets.cmake > │   └── SPVRemapperTargets.cmake > ├── glslang > │   ├── glslang-config.cmake > │   ├── glslang-config-version.cmake > │   ├── glslang-targets.cmake > │   └── glslang-targets-debug.cmake > ├── libGenericCodeGen.a > ├── libglslang.a > ├── libglslang-default-resource-limits.a > ├── libHLSL.a > ├── libMachineIndependent.a > ├── libOGLCompiler.a > ├── libOSDependent.a > ├── libSPIRV.a > └── libSPVRemapper.a 101c100 < 15 directories, 83 files --- > 14 directories, 83 files --- CMakeLists.txt | 8 ++++---- OGLCompilersDLL/CMakeLists.txt | 2 +- SPIRV/CMakeLists.txt | 4 ++-- StandAlone/CMakeLists.txt | 6 +++--- glslang/CMakeLists.txt | 2 +- glslang/OSDependent/Unix/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 2 +- gtests/CMakeLists.txt | 2 +- hlsl/CMakeLists.txt | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a01168603a..b7fe3d7752 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -375,13 +375,13 @@ if(ENABLE_GLSLANG_INSTALL) include("@PACKAGE_PATH_EXPORT_TARGETS@") ]=]) - set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake") + set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake") configure_package_config_file( "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" PATH_VARS PATH_EXPORT_TARGETS - INSTALL_DESTINATION ${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME} + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME} ) write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" @@ -392,7 +392,7 @@ if(ENABLE_GLSLANG_INSTALL) install( EXPORT glslang-targets NAMESPACE "glslang::" - DESTINATION "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}" ) install( @@ -400,6 +400,6 @@ if(ENABLE_GLSLANG_INSTALL) "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" DESTINATION - "${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}" + "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}" ) endif() \ No newline at end of file diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index 8c0e2ba5c7..841b3e2c6b 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -49,7 +49,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OGLCompiler) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OGLCompiler ALIAS glslang::OGLCompiler) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index c26e310da7..6724417f40 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -121,7 +121,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::SPVRemapper) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(SPVRemapper ALIAS glslang::SPVRemapper) @@ -133,7 +133,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::SPIRV) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(SPIRV ALIAS glslang::SPIRV) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 027575047f..d54a1df8c0 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -111,7 +111,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslangValidator) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslangValidator ALIAS glslang::glslangValidator) @@ -126,7 +126,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::spirv-remap) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(spirv-remap ALIAS glslang::spirv-remap) @@ -141,7 +141,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslang-default-resource-limits) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 45c9813a88..f63e8fc328 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -209,7 +209,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslang) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() if(${BUILD_SHARED_LIBS}) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 96ae216040..ec1eda4a37 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -60,7 +60,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OSDependent) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OSDependent ALIAS glslang::OSDependent) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 548984470f..6048bb872d 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -55,7 +55,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OSDependent) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OSDependent ALIAS glslang::OSDependent) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index dd555ecca3..8dff7ede02 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -76,7 +76,7 @@ if(BUILD_TESTING) message(WARNING \"Using `glslangtestsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslangtests) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslangtests ALIAS glslang::glslangtests) diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 4616cfe01c..b34df3aeaf 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -52,7 +52,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `HLSLTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::HLSL) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_DATADIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(HLSL ALIAS glslang::HLSL) From cc86f0d13f9a703b38d91b8512b8fe9e7aad0d79 Mon Sep 17 00:00:00 2001 From: Harlen Date: Fri, 26 Aug 2022 13:26:56 -0300 Subject: [PATCH 080/594] Fix strict aliasing violation --- SPIRV/GlslangToSpv.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 75fff35656..bff57bcde0 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1338,7 +1338,9 @@ void TGlslangToSpvTraverser::TranslateLiterals(const glslang::TVectorgetBasicType() == glslang::EbtFloat) { float floatValue = static_cast(constant->getConstArray()[0].getDConst()); - unsigned literal = *reinterpret_cast(&floatValue); + unsigned literal; + static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)"); + memcpy(&literal, &floatValue, sizeof(literal)); literals.push_back(literal); } else if (constant->getBasicType() == glslang::EbtInt) { unsigned literal = constant->getConstArray()[0].getIConst(); @@ -4247,7 +4249,9 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty if (typeParam.constant->isLiteral()) { if (typeParam.constant->getBasicType() == glslang::EbtFloat) { float floatValue = static_cast(typeParam.constant->getConstArray()[0].getDConst()); - unsigned literal = *reinterpret_cast(&floatValue); + unsigned literal; + static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)"); + memcpy(&literal, &floatValue, sizeof(literal)); operands.push_back({false, literal}); } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); From 30d9aa5c54fddb99bbaf9cdd069555d07b1d8c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pedro=20J=2E=20Est=C3=A9banez?= Date: Thu, 11 Aug 2022 13:50:39 +0200 Subject: [PATCH 081/594] Remove the unused OS_CleanupThreadData --- glslang/OSDependent/Unix/ossource.cpp | 46 --------------------------- glslang/OSDependent/osinclude.h | 2 -- 2 files changed, 48 deletions(-) diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index 81da99c2c4..b98df9348d 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -56,52 +56,6 @@ namespace glslang { // Thread cleanup // -// -// Wrapper for Linux call to DetachThread. This is required as pthread_cleanup_push() expects -// the cleanup routine to return void. -// -static void DetachThreadLinux(void *) -{ - DetachThread(); -} - -// -// Registers cleanup handler, sets cancel type and state, and executes the thread specific -// cleanup handler. This function will be called in the Standalone.cpp for regression -// testing. When OpenGL applications are run with the driver code, Linux OS does the -// thread cleanup. -// -void OS_CleanupThreadData(void) -{ -#if defined(__ANDROID__) || defined(__Fuchsia__) - DetachThreadLinux(NULL); -#else - int old_cancel_state, old_cancel_type; - void *cleanupArg = NULL; - - // - // Set thread cancel state and push cleanup handler. - // - pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, &old_cancel_state); - pthread_cleanup_push(DetachThreadLinux, (void *) cleanupArg); - - // - // Put the thread in deferred cancellation mode. - // - pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED, &old_cancel_type); - - // - // Pop cleanup handler and execute it prior to unregistering the cleanup handler. - // - pthread_cleanup_pop(1); - - // - // Restore the thread's previous cancellation mode. - // - pthread_setcanceltype(old_cancel_state, NULL); -#endif -} - // // Thread Local Storage Operations // diff --git a/glslang/OSDependent/osinclude.h b/glslang/OSDependent/osinclude.h index 218abe4f23..fcfeff2cc4 100644 --- a/glslang/OSDependent/osinclude.h +++ b/glslang/OSDependent/osinclude.h @@ -54,8 +54,6 @@ void ReleaseGlobalLock(); typedef unsigned int (*TThreadEntrypoint)(void*); -void OS_CleanupThreadData(void); - void OS_DumpMemoryCounters(); } // end namespace glslang From 7a914ce9261dd591ec793df42b5aba11d6c02848 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 9 Dec 2021 16:26:48 -0700 Subject: [PATCH 082/594] Implement NonSemantic.Shader.DebugInfo.100 See https://github.com/KhronosGroup/SPIRV-Registry. --- BUILD.bazel | 2 + BUILD.gn | 1 + SPIRV/CInterface/spirv_c_interface.cpp | 2 + SPIRV/CMakeLists.txt | 3 +- SPIRV/GlslangToSpv.cpp | 120 +- SPIRV/NonSemanticShaderDebugInfo100.h | 171 +++ SPIRV/SpvBuilder.cpp | 755 ++++++++++- SPIRV/SpvBuilder.h | 102 +- SPIRV/SpvTools.h | 16 +- SPIRV/spvIR.h | 1 + StandAlone/StandAlone.cpp | 29 +- Test/baseResults/spv.debugInfo.1.1.frag.out | 2 + Test/baseResults/spv.debugInfo.frag.out | 2 + Test/baseResults/spv.debuginfo.glsl.comp.out | 1085 ++++++++++++++++ Test/baseResults/spv.debuginfo.glsl.frag.out | 949 ++++++++++++++ Test/baseResults/spv.debuginfo.glsl.geom.out | 333 +++++ Test/baseResults/spv.debuginfo.glsl.tesc.out | 622 ++++++++++ Test/baseResults/spv.debuginfo.glsl.tese.out | 421 +++++++ Test/baseResults/spv.debuginfo.glsl.vert.out | 487 ++++++++ Test/baseResults/spv.debuginfo.hlsl.comp.out | 1103 +++++++++++++++++ Test/baseResults/spv.debuginfo.hlsl.frag.out | 1003 +++++++++++++++ Test/baseResults/spv.debuginfo.hlsl.geom.out | 459 +++++++ Test/baseResults/spv.debuginfo.hlsl.tesc.out | 812 ++++++++++++ Test/baseResults/spv.debuginfo.hlsl.tese.out | 589 +++++++++ Test/baseResults/spv.debuginfo.hlsl.vert.out | 580 +++++++++ Test/spv.debuginfo.glsl.comp | 177 +++ Test/spv.debuginfo.glsl.frag | 192 +++ Test/spv.debuginfo.glsl.geom | 69 ++ Test/spv.debuginfo.glsl.tesc | 140 +++ Test/spv.debuginfo.glsl.tese | 78 ++ Test/spv.debuginfo.glsl.vert | 105 ++ Test/spv.debuginfo.hlsl.comp | 184 +++ Test/spv.debuginfo.hlsl.frag | 197 +++ Test/spv.debuginfo.hlsl.geom | 79 ++ Test/spv.debuginfo.hlsl.tesc | 164 +++ Test/spv.debuginfo.hlsl.tese | 94 ++ Test/spv.debuginfo.hlsl.vert | 112 ++ glslang/HLSL/hlslGrammar.cpp | 2 +- glslang/HLSL/hlslParseHelper.cpp | 34 +- glslang/HLSL/hlslParseHelper.h | 2 + glslang/Include/glslang_c_interface.h | 2 + glslang/Include/intermediate.h | 3 + glslang/MachineIndependent/Intermediate.cpp | 4 +- glslang/MachineIndependent/ShaderLang.cpp | 1 + glslang/MachineIndependent/glslang.m4 | 2 +- glslang/MachineIndependent/glslang.y | 4 +- glslang/MachineIndependent/glslang_tab.cpp | 2 +- glslang/MachineIndependent/intermOut.cpp | 5 +- glslang/MachineIndependent/linkValidate.cpp | 1 + .../MachineIndependent/localintermediate.h | 8 + glslang/Public/ShaderLang.h | 1 + gtests/Hlsl.FromFile.cpp | 22 + gtests/Spv.FromFile.cpp | 22 + gtests/TestFixture.h | 9 +- license-checker.cfg | 1 + 55 files changed, 11272 insertions(+), 93 deletions(-) create mode 100644 SPIRV/NonSemanticShaderDebugInfo100.h create mode 100644 Test/baseResults/spv.debuginfo.glsl.comp.out create mode 100644 Test/baseResults/spv.debuginfo.glsl.frag.out create mode 100644 Test/baseResults/spv.debuginfo.glsl.geom.out create mode 100644 Test/baseResults/spv.debuginfo.glsl.tesc.out create mode 100644 Test/baseResults/spv.debuginfo.glsl.tese.out create mode 100644 Test/baseResults/spv.debuginfo.glsl.vert.out create mode 100644 Test/baseResults/spv.debuginfo.hlsl.comp.out create mode 100644 Test/baseResults/spv.debuginfo.hlsl.frag.out create mode 100644 Test/baseResults/spv.debuginfo.hlsl.geom.out create mode 100644 Test/baseResults/spv.debuginfo.hlsl.tesc.out create mode 100644 Test/baseResults/spv.debuginfo.hlsl.tese.out create mode 100644 Test/baseResults/spv.debuginfo.hlsl.vert.out create mode 100644 Test/spv.debuginfo.glsl.comp create mode 100644 Test/spv.debuginfo.glsl.frag create mode 100644 Test/spv.debuginfo.glsl.geom create mode 100644 Test/spv.debuginfo.glsl.tesc create mode 100644 Test/spv.debuginfo.glsl.tese create mode 100644 Test/spv.debuginfo.glsl.vert create mode 100644 Test/spv.debuginfo.hlsl.comp create mode 100644 Test/spv.debuginfo.hlsl.frag create mode 100644 Test/spv.debuginfo.hlsl.geom create mode 100644 Test/spv.debuginfo.hlsl.tesc create mode 100644 Test/spv.debuginfo.hlsl.tese create mode 100644 Test/spv.debuginfo.hlsl.vert diff --git a/BUILD.bazel b/BUILD.bazel index 1115b7de82..12168fae1b 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -146,6 +146,7 @@ genrule( "SPIRV/GLSL.ext.NV.h", "SPIRV/GLSL.std.450.h", "SPIRV/NonSemanticDebugPrintf.h", + "SPIRV/NonSemanticShaderDebugInfo100.h", "SPIRV/spirv.hpp", ], outs = [ @@ -155,6 +156,7 @@ genrule( "include/SPIRV/GLSL.ext.NV.h", "include/SPIRV/GLSL.std.450.h", "include/SPIRV/NonSemanticDebugPrintf.h", + "include/SPIRV/NonSemanticShaderDebugInfo100.h", "include/SPIRV/spirv.hpp", ], cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/", diff --git a/BUILD.gn b/BUILD.gn index 4dd0a55396..29328d4076 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -133,6 +133,7 @@ template("glslang_sources_common") { "SPIRV/Logger.cpp", "SPIRV/Logger.h", "SPIRV/NonSemanticDebugPrintf.h", + "SPIRV/NonSemanticShaderDebugInfo100.h", "SPIRV/SPVRemapper.cpp", "SPIRV/SPVRemapper.h", "SPIRV/SpvBuilder.cpp", diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index d9312bbbdb..5f577e1198 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -86,6 +86,8 @@ GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, g glslang_spv_options_t spv_options; spv_options.generate_debug_info = false; spv_options.strip_debug_info = false; + spv_options.emit_nonsemantic_shader_debug_info = false; + spv_options.emit_nonsemantic_shader_debug_source = false; spv_options.disable_optimizer = true; spv_options.optimize_size = false; spv_options.disassemble = false; diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 6724417f40..2408e4cce1 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -62,7 +62,8 @@ set(HEADERS disassemble.h GLSL.ext.AMD.h GLSL.ext.NV.h - NonSemanticDebugPrintf.h) + NonSemanticDebugPrintf.h + NonSemanticShaderDebugInfo100.h) set(SPVREMAP_HEADERS SPVRemapper.h diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 75fff35656..ded2663fe6 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1557,6 +1557,10 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, for (auto iItr = include_txt.begin(); iItr != include_txt.end(); ++iItr) builder.addInclude(iItr->first, iItr->second); } + + builder.setEmitNonSemanticShaderDebugInfo(options.emitNonSemanticShaderDebugInfo); + builder.setEmitNonSemanticShaderDebugSource(options.emitNonSemanticShaderDebugSource); + stdBuiltins = builder.import("GLSL.std.450"); spv::AddressingModel addressingModel = spv::AddressingModelLogical; @@ -2498,6 +2502,14 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI return false; } + // Force variable declaration - Debug Mode Only + if (node->getOp() == glslang::EOpDeclare) { + builder.clearAccessChain(); + node->getOperand()->traverse(this); + builder.clearAccessChain(); + return false; + } + // Start by evaluating the operand // Does it need a swizzle inversion? If so, evaluation is inverted; @@ -2758,32 +2770,38 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spv::Decoration precision = TranslatePrecisionDecoration(node->getOperationPrecision()); switch (node->getOp()) { + case glslang::EOpScope: case glslang::EOpSequence: { - if (preVisit) + if (visit == glslang::EvPreVisit) { ++sequenceDepth; - else - --sequenceDepth; + if (sequenceDepth == 1) { + // If this is the parent node of all the functions, we want to see them + // early, so all call points have actual SPIR-V functions to reference. + // In all cases, still let the traverser visit the children for us. + makeFunctions(node->getAsAggregate()->getSequence()); - if (sequenceDepth == 1) { - // If this is the parent node of all the functions, we want to see them - // early, so all call points have actual SPIR-V functions to reference. - // In all cases, still let the traverser visit the children for us. - makeFunctions(node->getAsAggregate()->getSequence()); + // Also, we want all globals initializers to go into the beginning of the entry point, before + // anything else gets there, so visit out of order, doing them all now. + makeGlobalInitializers(node->getAsAggregate()->getSequence()); - // Also, we want all globals initializers to go into the beginning of the entry point, before - // anything else gets there, so visit out of order, doing them all now. - makeGlobalInitializers(node->getAsAggregate()->getSequence()); + //Pre process linker objects for ray tracing stages + if (glslangIntermediate->isRayTracingStage()) + collectRayTracingLinkerObjects(); - //Pre process linker objects for ray tracing stages - if (glslangIntermediate->isRayTracingStage()) - collectRayTracingLinkerObjects(); + // Initializers are done, don't want to visit again, but functions and link objects need to be processed, + // so do them manually. + visitFunctions(node->getAsAggregate()->getSequence()); - // Initializers are done, don't want to visit again, but functions and link objects need to be processed, - // so do them manually. - visitFunctions(node->getAsAggregate()->getSequence()); - - return false; + return false; + } else { + if (node->getOp() == glslang::EOpScope) + builder.enterScope(0); + } + } else { + if (sequenceDepth > 1 && node->getOp() == glslang::EOpScope) + builder.leaveScope(); + --sequenceDepth; } return true; @@ -2812,6 +2830,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (isShaderEntryPoint(node)) { inEntryPoint = true; builder.setBuildPoint(shaderEntry->getLastBlock()); + builder.enterFunction(shaderEntry); currentFunction = shaderEntry; } else { handleFunctionEntry(node); @@ -3796,8 +3815,8 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn // by a block-ending branch. But we don't want to put any other body/test // instructions in it, since the body/test may have arbitrary instructions, // including merges of its own. - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); builder.setBuildPoint(&blocks.head); + builder.setLine(node->getLoc().line, node->getLoc().getFilename()); builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, operands); if (node->testFirst() && node->getTest()) { spv::Block& test = builder.makeNewBlock(); @@ -4016,7 +4035,7 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* initializer = builder.makeNullConstant(spvType); } - return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer); + return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer, false); } // Return type Id of the sampled type. @@ -4104,7 +4123,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty if (explicitLayout != glslang::ElpNone) spvType = builder.makeUintType(32); else - spvType = builder.makeBoolType(); + spvType = builder.makeBoolType(false); break; case glslang::EbtInt: spvType = builder.makeIntType(32); @@ -4422,14 +4441,14 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy // except sometimes for blocks std::vector > deferredForwardPointers; for (int i = 0; i < (int)glslangMembers->size(); i++) { - glslang::TType& glslangMember = *(*glslangMembers)[i].type; - if (glslangMember.hiddenMember()) { + auto& glslangMember = (*glslangMembers)[i]; + if (glslangMember.type->hiddenMember()) { ++memberDelta; if (type.getBasicType() == glslang::EbtBlock) memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1; } else { if (type.getBasicType() == glslang::EbtBlock) { - if (filterMember(glslangMember)) { + if (filterMember(*glslangMember.type)) { memberDelta++; memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = -1; continue; @@ -4437,7 +4456,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy memberRemapper[glslangTypeToIdMap[glslangMembers]][i] = i - memberDelta; } // modify just this child's view of the qualifier - glslang::TQualifier memberQualifier = glslangMember.getQualifier(); + glslang::TQualifier memberQualifier = glslangMember.type->getQualifier(); InheritQualifiers(memberQualifier, qualifier); // manually inherit location @@ -4448,25 +4467,38 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy bool lastBufferBlockMember = qualifier.storage == glslang::EvqBuffer && i == (int)glslangMembers->size() - 1; - // Make forward pointers for any pointer members, and create a list of members to - // convert to spirv types after creating the struct. - if (glslangMember.isReference()) { - if (forwardPointers.find(glslangMember.getReferentType()) == forwardPointers.end()) { - deferredForwardPointers.push_back(std::make_pair(&glslangMember, memberQualifier)); - } - spvMembers.push_back( - convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, - true)); - } else { - spvMembers.push_back( - convertGlslangToSpvType(glslangMember, explicitLayout, memberQualifier, lastBufferBlockMember, - false)); + // Make forward pointers for any pointer members. + if (glslangMember.type->isReference() && + forwardPointers.find(glslangMember.type->getReferentType()) == forwardPointers.end()) { + deferredForwardPointers.push_back(std::make_pair(glslangMember.type, memberQualifier)); + } + + // Create the member type. + auto const spvMember = convertGlslangToSpvType(*glslangMember.type, explicitLayout, memberQualifier, lastBufferBlockMember, + glslangMember.type->isReference()); + spvMembers.push_back(spvMember); + + // Update the builder with the type's location so that we can create debug types for the structure members. + // There doesn't exist a "clean" entry point for this information to be passed along to the builder so, for now, + // it is stored in the builder and consumed during the construction of composite debug types. + // TODO: This probably warrants further investigation. This approach was decided to be the least ugly of the + // quick and dirty approaches that were tried. + // Advantages of this approach: + // + Relatively clean. No direct calls into debug type system. + // + Handles nested recursive structures. + // Disadvantages of this approach: + // + Not as clean as desired. Traverser queries/sets persistent state. This is fragile. + // + Table lookup during creation of composite debug types. This really shouldn't be necessary. + if(options.emitNonSemanticShaderDebugInfo) { + builder.debugTypeLocs[spvMember].name = glslangMember.type->getFieldName().c_str(); + builder.debugTypeLocs[spvMember].line = glslangMember.loc.line; + builder.debugTypeLocs[spvMember].column = glslangMember.loc.column; } } } // Make the SPIR-V type - spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str()); + spv::Id spvType = builder.makeStructType(spvMembers, type.getTypeName().c_str(), false); if (! HasNonLayoutQualifiers(type, qualifier)) structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType; @@ -5060,6 +5092,7 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF // GLSL has copy-in/copy-out semantics. They can be handled though with a pointer to a copy. std::vector paramTypes; + std::vector paramNames; std::vector> paramDecorations; // list of decorations per parameter glslang::TIntermSequence& parameters = glslFunction->getSequence()[0]->getAsAggregate()->getSequence(); @@ -5084,10 +5117,14 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF paramTypes.push_back(typeId); } + for (auto const parameter:parameters) { + paramNames.push_back(parameter->getAsSymbolNode()->getName().c_str()); + } + spv::Block* functionBlock; spv::Function *function = builder.makeFunctionEntry(TranslatePrecisionDecoration(glslFunction->getType()), convertGlslangToSpvType(glslFunction->getType()), - glslFunction->getName().c_str(), paramTypes, + glslFunction->getName().c_str(), paramTypes, paramNames, paramDecorations, &functionBlock); if (implicitThis) function->setImplicitThis(); @@ -5177,6 +5214,7 @@ void TGlslangToSpvTraverser::handleFunctionEntry(const glslang::TIntermAggregate currentFunction = functionMap[node->getName().c_str()]; spv::Block* functionBlock = currentFunction->getEntryBlock(); builder.setBuildPoint(functionBlock); + builder.enterFunction(currentFunction); } void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& node, std::vector& arguments, diff --git a/SPIRV/NonSemanticShaderDebugInfo100.h b/SPIRV/NonSemanticShaderDebugInfo100.h new file mode 100644 index 0000000000..c52f32f809 --- /dev/null +++ b/SPIRV/NonSemanticShaderDebugInfo100.h @@ -0,0 +1,171 @@ +// Copyright (c) 2018 The Khronos Group Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and/or associated documentation files (the "Materials"), +// to deal in the Materials without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Materials, and to permit persons to whom the +// Materials are furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Materials. +// +// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// +// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS +// IN THE MATERIALS. + +#ifndef SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_ +#define SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +enum { + NonSemanticShaderDebugInfo100Version = 100, + NonSemanticShaderDebugInfo100Version_BitWidthPadding = 0x7fffffff +}; +enum { + NonSemanticShaderDebugInfo100Revision = 6, + NonSemanticShaderDebugInfo100Revision_BitWidthPadding = 0x7fffffff +}; + +enum NonSemanticShaderDebugInfo100Instructions { + NonSemanticShaderDebugInfo100DebugInfoNone = 0, + NonSemanticShaderDebugInfo100DebugCompilationUnit = 1, + NonSemanticShaderDebugInfo100DebugTypeBasic = 2, + NonSemanticShaderDebugInfo100DebugTypePointer = 3, + NonSemanticShaderDebugInfo100DebugTypeQualifier = 4, + NonSemanticShaderDebugInfo100DebugTypeArray = 5, + NonSemanticShaderDebugInfo100DebugTypeVector = 6, + NonSemanticShaderDebugInfo100DebugTypedef = 7, + NonSemanticShaderDebugInfo100DebugTypeFunction = 8, + NonSemanticShaderDebugInfo100DebugTypeEnum = 9, + NonSemanticShaderDebugInfo100DebugTypeComposite = 10, + NonSemanticShaderDebugInfo100DebugTypeMember = 11, + NonSemanticShaderDebugInfo100DebugTypeInheritance = 12, + NonSemanticShaderDebugInfo100DebugTypePtrToMember = 13, + NonSemanticShaderDebugInfo100DebugTypeTemplate = 14, + NonSemanticShaderDebugInfo100DebugTypeTemplateParameter = 15, + NonSemanticShaderDebugInfo100DebugTypeTemplateTemplateParameter = 16, + NonSemanticShaderDebugInfo100DebugTypeTemplateParameterPack = 17, + NonSemanticShaderDebugInfo100DebugGlobalVariable = 18, + NonSemanticShaderDebugInfo100DebugFunctionDeclaration = 19, + NonSemanticShaderDebugInfo100DebugFunction = 20, + NonSemanticShaderDebugInfo100DebugLexicalBlock = 21, + NonSemanticShaderDebugInfo100DebugLexicalBlockDiscriminator = 22, + NonSemanticShaderDebugInfo100DebugScope = 23, + NonSemanticShaderDebugInfo100DebugNoScope = 24, + NonSemanticShaderDebugInfo100DebugInlinedAt = 25, + NonSemanticShaderDebugInfo100DebugLocalVariable = 26, + NonSemanticShaderDebugInfo100DebugInlinedVariable = 27, + NonSemanticShaderDebugInfo100DebugDeclare = 28, + NonSemanticShaderDebugInfo100DebugValue = 29, + NonSemanticShaderDebugInfo100DebugOperation = 30, + NonSemanticShaderDebugInfo100DebugExpression = 31, + NonSemanticShaderDebugInfo100DebugMacroDef = 32, + NonSemanticShaderDebugInfo100DebugMacroUndef = 33, + NonSemanticShaderDebugInfo100DebugImportedEntity = 34, + NonSemanticShaderDebugInfo100DebugSource = 35, + NonSemanticShaderDebugInfo100DebugFunctionDefinition = 101, + NonSemanticShaderDebugInfo100DebugSourceContinued = 102, + NonSemanticShaderDebugInfo100DebugLine = 103, + NonSemanticShaderDebugInfo100DebugNoLine = 104, + NonSemanticShaderDebugInfo100DebugBuildIdentifier = 105, + NonSemanticShaderDebugInfo100DebugStoragePath = 106, + NonSemanticShaderDebugInfo100DebugEntryPoint = 107, + NonSemanticShaderDebugInfo100DebugTypeMatrix = 108, + NonSemanticShaderDebugInfo100InstructionsMax = 0x7fffffff +}; + + +enum NonSemanticShaderDebugInfo100DebugInfoFlags { + NonSemanticShaderDebugInfo100None = 0x0000, + NonSemanticShaderDebugInfo100FlagIsProtected = 0x01, + NonSemanticShaderDebugInfo100FlagIsPrivate = 0x02, + NonSemanticShaderDebugInfo100FlagIsPublic = 0x03, + NonSemanticShaderDebugInfo100FlagIsLocal = 0x04, + NonSemanticShaderDebugInfo100FlagIsDefinition = 0x08, + NonSemanticShaderDebugInfo100FlagFwdDecl = 0x10, + NonSemanticShaderDebugInfo100FlagArtificial = 0x20, + NonSemanticShaderDebugInfo100FlagExplicit = 0x40, + NonSemanticShaderDebugInfo100FlagPrototyped = 0x80, + NonSemanticShaderDebugInfo100FlagObjectPointer = 0x100, + NonSemanticShaderDebugInfo100FlagStaticMember = 0x200, + NonSemanticShaderDebugInfo100FlagIndirectVariable = 0x400, + NonSemanticShaderDebugInfo100FlagLValueReference = 0x800, + NonSemanticShaderDebugInfo100FlagRValueReference = 0x1000, + NonSemanticShaderDebugInfo100FlagIsOptimized = 0x2000, + NonSemanticShaderDebugInfo100FlagIsEnumClass = 0x4000, + NonSemanticShaderDebugInfo100FlagTypePassByValue = 0x8000, + NonSemanticShaderDebugInfo100FlagTypePassByReference = 0x10000, + NonSemanticShaderDebugInfo100FlagUnknownPhysicalLayout = 0x20000, + NonSemanticShaderDebugInfo100DebugInfoFlagsMax = 0x7fffffff +}; + +enum NonSemanticShaderDebugInfo100BuildIdentifierFlags { + NonSemanticShaderDebugInfo100IdentifierPossibleDuplicates = 0x01, + NonSemanticShaderDebugInfo100BuildIdentifierFlagsMax = 0x7fffffff +}; + +enum NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncoding { + NonSemanticShaderDebugInfo100Unspecified = 0, + NonSemanticShaderDebugInfo100Address = 1, + NonSemanticShaderDebugInfo100Boolean = 2, + NonSemanticShaderDebugInfo100Float = 3, + NonSemanticShaderDebugInfo100Signed = 4, + NonSemanticShaderDebugInfo100SignedChar = 5, + NonSemanticShaderDebugInfo100Unsigned = 6, + NonSemanticShaderDebugInfo100UnsignedChar = 7, + NonSemanticShaderDebugInfo100DebugBaseTypeAttributeEncodingMax = 0x7fffffff +}; + +enum NonSemanticShaderDebugInfo100DebugCompositeType { + NonSemanticShaderDebugInfo100Class = 0, + NonSemanticShaderDebugInfo100Structure = 1, + NonSemanticShaderDebugInfo100Union = 2, + NonSemanticShaderDebugInfo100DebugCompositeTypeMax = 0x7fffffff +}; + +enum NonSemanticShaderDebugInfo100DebugTypeQualifier { + NonSemanticShaderDebugInfo100ConstType = 0, + NonSemanticShaderDebugInfo100VolatileType = 1, + NonSemanticShaderDebugInfo100RestrictType = 2, + NonSemanticShaderDebugInfo100AtomicType = 3, + NonSemanticShaderDebugInfo100DebugTypeQualifierMax = 0x7fffffff +}; + +enum NonSemanticShaderDebugInfo100DebugOperation { + NonSemanticShaderDebugInfo100Deref = 0, + NonSemanticShaderDebugInfo100Plus = 1, + NonSemanticShaderDebugInfo100Minus = 2, + NonSemanticShaderDebugInfo100PlusUconst = 3, + NonSemanticShaderDebugInfo100BitPiece = 4, + NonSemanticShaderDebugInfo100Swap = 5, + NonSemanticShaderDebugInfo100Xderef = 6, + NonSemanticShaderDebugInfo100StackValue = 7, + NonSemanticShaderDebugInfo100Constu = 8, + NonSemanticShaderDebugInfo100Fragment = 9, + NonSemanticShaderDebugInfo100DebugOperationMax = 0x7fffffff +}; + +enum NonSemanticShaderDebugInfo100DebugImportedEntity { + NonSemanticShaderDebugInfo100ImportedModule = 0, + NonSemanticShaderDebugInfo100ImportedDeclaration = 1, + NonSemanticShaderDebugInfo100DebugImportedEntityMax = 0x7fffffff +}; + + +#ifdef __cplusplus +} +#endif + +#endif // SPIRV_UNIFIED1_NonSemanticShaderDebugInfo100_H_ diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 36a3f09744..54df992fb4 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -59,12 +59,15 @@ namespace spv { Builder::Builder(unsigned int spvVersion, unsigned int magicNumber, SpvBuildLogger* buildLogger) : spvVersion(spvVersion), - source(SourceLanguageUnknown), + sourceLang(SourceLanguageUnknown), sourceVersion(0), sourceFileStringId(NoResult), currentLine(0), currentFile(nullptr), + currentFileId(NoResult), + lastDebugScopeId(NoResult), emitOpLines(false), + emitNonSemanticShaderDebugInfo(false), addressModel(AddressingModelLogical), memoryModel(MemoryModelGLSL450), builderNumber(magicNumber), @@ -98,8 +101,12 @@ void Builder::setLine(int lineNum) { if (lineNum != 0 && lineNum != currentLine) { currentLine = lineNum; - if (emitOpLines) - addLine(sourceFileStringId, currentLine, 0); + if (emitOpLines) { + if (emitNonSemanticShaderDebugInfo) + addDebugScopeAndLine(currentFileId, currentLine, 0); + else + addLine(sourceFileStringId, currentLine, 0); + } } } @@ -118,7 +125,10 @@ void Builder::setLine(int lineNum, const char* filename) currentFile = filename; if (emitOpLines) { spv::Id strId = getStringId(filename); - addLine(strId, currentLine, 0); + if (emitNonSemanticShaderDebugInfo) + addDebugScopeAndLine(strId, currentLine, 0); + else + addLine(strId, currentLine, 0); } } } @@ -132,22 +142,49 @@ void Builder::addLine(Id fileName, int lineNum, int column) buildPoint->addInstruction(std::unique_ptr(line)); } +void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column) +{ + if (currentDebugScopeId.top() != lastDebugScopeId) { + spv::Id resultId = getUniqueId(); + Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst); + scopeInst->addIdOperand(nonSemanticShaderDebugInfo); + scopeInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugScope); + scopeInst->addIdOperand(currentDebugScopeId.top()); + buildPoint->addInstruction(std::unique_ptr(scopeInst)); + lastDebugScopeId = currentDebugScopeId.top(); + } + spv::Id resultId = getUniqueId(); + Instruction* lineInst = new Instruction(resultId, makeVoidType(), OpExtInst); + lineInst->addIdOperand(nonSemanticShaderDebugInfo); + lineInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLine); + lineInst->addIdOperand(makeDebugSource(fileName)); + lineInst->addIdOperand(makeUintConstant(lineNum)); + lineInst->addIdOperand(makeUintConstant(lineNum)); + lineInst->addIdOperand(makeUintConstant(column)); + lineInst->addIdOperand(makeUintConstant(column)); + buildPoint->addInstruction(std::unique_ptr(lineInst)); +} + // For creating new groupedTypes (will return old type if the requested one was already made). Id Builder::makeVoidType() { Instruction* type; if (groupedTypes[OpTypeVoid].size() == 0) { - type = new Instruction(getUniqueId(), NoType, OpTypeVoid); + Id typeId = getUniqueId(); + type = new Instruction(typeId, NoType, OpTypeVoid); groupedTypes[OpTypeVoid].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + // Core OpTypeVoid used for debug void type + if (emitNonSemanticShaderDebugInfo) + debugId[typeId] = typeId; } else type = groupedTypes[OpTypeVoid].back(); return type->getResultId(); } -Id Builder::makeBoolType() +Id Builder::makeBoolType(bool const compilerGenerated) { Instruction* type; if (groupedTypes[OpTypeBool].size() == 0) { @@ -158,6 +195,12 @@ Id Builder::makeBoolType() } else type = groupedTypes[OpTypeBool].back(); + if (emitNonSemanticShaderDebugInfo && !compilerGenerated) + { + auto const debugResultId = makeBoolDebugType(32); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -172,6 +215,12 @@ Id Builder::makeSamplerType() } else type = groupedTypes[OpTypeSampler].back(); + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeCompositeDebugType({}, "type.sampler", NonSemanticShaderDebugInfo100Structure, true); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -268,6 +317,12 @@ Id Builder::makeIntegerType(int width, bool hasSign) break; } + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeIntegerDebugType(width, hasSign); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -305,6 +360,12 @@ Id Builder::makeFloatType(int width) break; } + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeFloatDebugType(width); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -312,7 +373,7 @@ Id Builder::makeFloatType(int width) // See makeStructResultType() for non-decorated structs // needed as the result of some instructions, which does // check for duplicates. -Id Builder::makeStructType(const std::vector& members, const char* name) +Id Builder::makeStructType(const std::vector& members, const char* name, bool const compilerGenerated) { // Don't look for previous one, because in the general case, // structs can be duplicated except for decorations. @@ -326,6 +387,12 @@ Id Builder::makeStructType(const std::vector& members, const char* name) module.mapInstruction(type); addName(type->getResultId(), name); + if (emitNonSemanticShaderDebugInfo && !compilerGenerated) + { + auto const debugResultId = makeCompositeDebugType(members, name, NonSemanticShaderDebugInfo100Structure); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -372,6 +439,12 @@ Id Builder::makeVectorType(Id component, int size) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeVectorDebugType(component, size); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -398,6 +471,12 @@ Id Builder::makeMatrixType(Id component, int cols, int rows) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeMatrixDebugType(column, cols); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -484,6 +563,12 @@ Id Builder::makeArrayType(Id element, Id sizeId, int stride) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeArrayDebugType(element, sizeId); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -494,6 +579,12 @@ Id Builder::makeRuntimeArray(Id element) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeArrayDebugType(element, makeUintConstant(0)); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -513,11 +604,25 @@ Id Builder::makeFunctionType(Id returnType, const std::vector& paramTypes) } } if (! mismatch) + { + // If compiling HLSL, glslang will create a wrapper function around the entrypoint. Accordingly, a void(void) + // function type is created for the wrapper function. However, nonsemantic shader debug information is disabled + // while creating the HLSL wrapper. Consequently, if we encounter another void(void) function, we need to create + // the associated debug function type if it hasn't been created yet. + if(emitNonSemanticShaderDebugInfo && debugId[type->getResultId()] == 0) { + assert(sourceLang == spv::SourceLanguageHLSL); + assert(getTypeClass(returnType) == OpTypeVoid && paramTypes.size() == 0); + + Id debugTypeId = makeDebugFunctionType(returnType, {}); + debugId[type->getResultId()] = debugTypeId; + } return type->getResultId(); + } } // not found, make it - type = new Instruction(getUniqueId(), NoType, OpTypeFunction); + Id typeId = getUniqueId(); + type = new Instruction(typeId, NoType, OpTypeFunction); type->addIdOperand(returnType); for (int p = 0; p < (int)paramTypes.size(); ++p) type->addIdOperand(paramTypes[p]); @@ -525,9 +630,34 @@ Id Builder::makeFunctionType(Id returnType, const std::vector& paramTypes) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + // make debug type and map it + if (emitNonSemanticShaderDebugInfo) { + Id debugTypeId = makeDebugFunctionType(returnType, paramTypes); + debugId[typeId] = debugTypeId; + } + return type->getResultId(); } +Id Builder::makeDebugFunctionType(Id returnType, const std::vector& paramTypes) +{ + assert(debugId[returnType] != 0); + + Id typeId = getUniqueId(); + auto type = new Instruction(typeId, makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeFunction); + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); + type->addIdOperand(debugId[returnType]); + for (auto const paramType : paramTypes) { + assert(isPointerType(paramType) || isArrayType(paramType)); + type->addIdOperand(debugId[getContainedTypeId(paramType)]); + } + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + return typeId; +} + Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format) { @@ -609,6 +739,22 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo } #endif + if (emitNonSemanticShaderDebugInfo) + { + auto TypeName = [&dim]() -> char const* { + switch (dim) { + case Dim1D: return "type.1d.image"; + case Dim2D: return "type.2d.image"; + case Dim3D: return "type.3d.image"; + case DimCube: return "type.cube.image"; + default: return "type.image"; + } + }; + + auto const debugResultId = makeCompositeDebugType({}, TypeName(), NonSemanticShaderDebugInfo100Class, true); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -630,9 +776,389 @@ Id Builder::makeSampledImageType(Id imageType) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) + { + auto const debugResultId = makeCompositeDebugType({}, "type.sampled.image", NonSemanticShaderDebugInfo100Class, true); + debugId[type->getResultId()] = debugResultId; + } + + return type->getResultId(); +} + +Id Builder::makeDebugInfoNone() +{ + if (debugInfoNone != 0) + return debugInfoNone; + + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->addIdOperand(nonSemanticShaderDebugInfo); + inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugInfoNone); + + constantsTypesGlobals.push_back(std::unique_ptr(inst)); + module.mapInstruction(inst); + + debugInfoNone = inst->getResultId(); + + return debugInfoNone; +} + +Id Builder::makeBoolDebugType(int const size) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) { + type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t]; + if (type->getIdOperand(0) == getStringId("bool") && + type->getIdOperand(1) == static_cast(size) && + type->getIdOperand(2) == NonSemanticShaderDebugInfo100Boolean) + return type->getResultId(); + } + + type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); + + type->addIdOperand(getStringId("bool")); // name id + type->addIdOperand(makeUintConstant(size)); // size id + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Boolean)); // encoding id + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + +Id Builder::makeIntegerDebugType(int const width, bool const hasSign) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) { + type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t]; + if (type->getIdOperand(0) == (hasSign ? getStringId("int") : getStringId("uint")) && + type->getIdOperand(1) == static_cast(width) && + type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned)) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); + if(hasSign == true) { + type->addIdOperand(getStringId("int")); // name id + } else { + type->addIdOperand(getStringId("uint")); // name id + } + type->addIdOperand(makeUintConstant(width)); // size id + if(hasSign == true) { + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Signed)); // encoding id + } else { + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Unsigned)); // encoding id + } + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + +Id Builder::makeFloatDebugType(int const width) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) { + type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t]; + if (type->getIdOperand(0) == getStringId("float") && + type->getIdOperand(1) == static_cast(width) && + type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); + type->addIdOperand(getStringId("float")); // name id + type->addIdOperand(makeUintConstant(width)); // size id + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Float)); // encoding id + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + return type->getResultId(); } +Id Builder::makeSequentialDebugType(Id const baseType, Id const componentCount, NonSemanticShaderDebugInfo100Instructions const sequenceType) +{ + assert(sequenceType == NonSemanticShaderDebugInfo100DebugTypeArray || + sequenceType == NonSemanticShaderDebugInfo100DebugTypeVector); + + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedDebugTypes[sequenceType].size(); ++t) { + type = groupedDebugTypes[sequenceType][t]; + if (type->getIdOperand(0) == baseType && + type->getIdOperand(1) == makeUintConstant(componentCount)) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(sequenceType); + type->addIdOperand(debugId[baseType]); // base type + type->addIdOperand(componentCount); // component count + + groupedDebugTypes[sequenceType].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + +Id Builder::makeArrayDebugType(Id const baseType, Id const componentCount) +{ + return makeSequentialDebugType(baseType, componentCount, NonSemanticShaderDebugInfo100DebugTypeArray); +} + +Id Builder::makeVectorDebugType(Id const baseType, int const componentCount) +{ + return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);; +} + +Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix].size(); ++t) { + type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix][t]; + if (type->getIdOperand(0) == vectorType && + type->getIdOperand(1) == makeUintConstant(vectorCount)) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMatrix); + type->addIdOperand(debugId[vectorType]); // vector type id + type->addIdOperand(makeUintConstant(vectorCount)); // component count id + type->addIdOperand(makeBoolConstant(columnMajor)); // column-major id + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMatrix].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + +Id Builder::makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc) +{ + assert(debugId[memberType] != 0); + + Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMember); + type->addIdOperand(getStringId(debugTypeLoc.name)); // name id + type->addIdOperand(debugId[memberType]); // type id + type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives + type->addIdOperand(makeUintConstant(debugTypeLoc.line)); // line id TODO: currentLine is always zero + type->addIdOperand(makeUintConstant(debugTypeLoc.column)); // TODO: column id + type->addIdOperand(makeUintConstant(0)); // TODO: offset id + type->addIdOperand(makeUintConstant(0)); // TODO: size id + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); // flags id + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeMember].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + +// Note: To represent a source language opaque type, this instruction must have no Members operands, Size operand must be +// DebugInfoNone, and Name must start with @ to avoid clashes with user defined names. +Id Builder::makeCompositeDebugType(std::vector const& memberTypes, char const*const name, + NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType) +{ + // Create the debug member types. + std::vector memberDebugTypes; + for(auto const memberType : memberTypes) { + assert(debugTypeLocs.find(memberType) != debugTypeLocs.end()); + + memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType])); + + // TODO: Need to rethink this method of passing location information. + // debugTypeLocs.erase(memberType); + } + + // Create The structure debug type. + Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeComposite); + type->addIdOperand(getStringId(name)); // name id + type->addIdOperand(makeUintConstant(tag)); // tag id + type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives + type->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero? + type->addIdOperand(makeUintConstant(0)); // TODO: column id + type->addIdOperand(makeDebugCompilationUnit()); // scope id + if(isOpaqueType == true) { + // Prepend '@' to opaque types. + type->addIdOperand(getStringId('@' + std::string(name))); // linkage name id + type->addIdOperand(makeDebugInfoNone()); // size id + } else { + type->addIdOperand(getStringId(name)); // linkage name id + type->addIdOperand(makeUintConstant(0)); // TODO: size id + } + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); // flags id + assert(isOpaqueType == false || (isOpaqueType == true && memberDebugTypes.empty())); + for(auto const memberDebugType : memberDebugTypes) { + type->addIdOperand(memberDebugType); + } + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeComposite].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + +Id Builder::makeDebugSource(const Id fileName) { + if (debugSourceId.find(fileName) != debugSourceId.end()) + return debugSourceId[fileName]; + spv::Id resultId = getUniqueId(); + Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst); + sourceInst->addIdOperand(nonSemanticShaderDebugInfo); + sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugSource); + sourceInst->addIdOperand(fileName); + if (emitNonSemanticShaderDebugSource) { + spv::Id sourceId = 0; + if (fileName == sourceFileStringId) { + sourceId = getStringId(sourceText); + } else { + auto incItr = includeFiles.find(fileName); + assert(incItr != includeFiles.end()); + sourceId = getStringId(*incItr->second); + } + sourceInst->addIdOperand(sourceId); + } + constantsTypesGlobals.push_back(std::unique_ptr(sourceInst)); + module.mapInstruction(sourceInst); + debugSourceId[fileName] = resultId; + return resultId; +} + +Id Builder::makeDebugCompilationUnit() { + if (nonSemanticShaderCompilationUnitId != 0) + return nonSemanticShaderCompilationUnitId; + spv::Id resultId = getUniqueId(); + Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst); + sourceInst->addIdOperand(nonSemanticShaderDebugInfo); + sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugCompilationUnit); + sourceInst->addIdOperand(makeUintConstant(1)); // TODO(greg-lunarg): Get rid of magic number + sourceInst->addIdOperand(makeUintConstant(4)); // TODO(greg-lunarg): Get rid of magic number + sourceInst->addIdOperand(makeDebugSource(sourceFileStringId)); + sourceInst->addIdOperand(makeUintConstant(sourceLang)); + constantsTypesGlobals.push_back(std::unique_ptr(sourceInst)); + module.mapInstruction(sourceInst); + nonSemanticShaderCompilationUnitId = resultId; + return resultId; +} + +Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id const variable) +{ + assert(type != 0); + + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->addIdOperand(nonSemanticShaderDebugInfo); + inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugGlobalVariable); + inst->addIdOperand(getStringId(name)); // name id + inst->addIdOperand(type); // type id + inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id + inst->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero? + inst->addIdOperand(makeUintConstant(0)); // TODO: column id + inst->addIdOperand(makeDebugCompilationUnit()); // scope id + inst->addIdOperand(getStringId(name)); // linkage name id + inst->addIdOperand(variable); // variable id + inst->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsDefinition)); // flags id + + constantsTypesGlobals.push_back(std::unique_ptr(inst)); + module.mapInstruction(inst); + + return inst->getResultId(); +} + +Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber) +{ + assert(name != nullptr); + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->addIdOperand(nonSemanticShaderDebugInfo); + inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable); + inst->addIdOperand(getStringId(name)); // name id + inst->addIdOperand(type); // type id + inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id + inst->addIdOperand(makeUintConstant(currentLine)); // line id + inst->addIdOperand(makeUintConstant(0)); // TODO: column id + inst->addIdOperand(currentDebugScopeId.top()); // scope id + inst->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsLocal)); // flags id + if(argNumber != 0) { + inst->addIdOperand(makeUintConstant(argNumber)); + } + + constantsTypesGlobals.push_back(std::unique_ptr(inst)); + module.mapInstruction(inst); + + return inst->getResultId(); +} + +Id Builder::makeDebugExpression() +{ + if (debugExpression != 0) + return debugExpression; + + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->addIdOperand(nonSemanticShaderDebugInfo); + inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugExpression); + + constantsTypesGlobals.push_back(std::unique_ptr(inst)); + module.mapInstruction(inst); + + debugExpression = inst->getResultId(); + + return debugExpression; +} + +Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable) +{ + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->addIdOperand(nonSemanticShaderDebugInfo); + inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugDeclare); + inst->addIdOperand(debugLocalVariable); // debug local variable id + inst->addIdOperand(localVariable); // local variable id + inst->addIdOperand(makeDebugExpression()); // expression id + buildPoint->addInstruction(std::unique_ptr(inst)); + + return inst->getResultId(); +} + +Id Builder::makeDebugValue(Id const debugLocalVariable, Id const value) +{ + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->addIdOperand(nonSemanticShaderDebugInfo); + inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugValue); + inst->addIdOperand(debugLocalVariable); // debug local variable id + inst->addIdOperand(value); // value id + inst->addIdOperand(makeDebugExpression()); // expression id + buildPoint->addInstruction(std::unique_ptr(inst)); + + return inst->getResultId(); +} + #ifndef GLSLANG_WEB Id Builder::makeAccelerationStructureType() { @@ -920,6 +1446,17 @@ bool Builder::isSpecConstantOpCode(Op opcode) const } } +bool Builder::isRayTracingOpCode(Op opcode) const +{ + switch (opcode) { + case OpTypeAccelerationStructureKHR: + case OpTypeRayQueryKHR: + return true; + default: + return false; + } +} + Id Builder::makeNullConstant(Id typeId) { Instruction* constant; @@ -1136,6 +1673,19 @@ Id Builder::makeFpConstant(Id type, double d, bool specConstant) return NoResult; } +Id Builder::importNonSemanticShaderDebugInfoInstructions() +{ + assert(emitNonSemanticShaderDebugInfo == true); + + if(nonSemanticShaderDebugInfo == 0) + { + this->addExtension(spv::E_SPV_KHR_non_semantic_info); + nonSemanticShaderDebugInfo = this->import("NonSemantic.Shader.DebugInfo.100"); + } + + return nonSemanticShaderDebugInfo; +} + Id Builder::findCompositeConstant(Op typeClass, Id typeId, const std::vector& comps) { Instruction* constant = 0; @@ -1447,23 +1997,34 @@ Function* Builder::makeEntryPoint(const char* entryPoint) assert(! entryPointFunction); Block* entry; - std::vector params; + std::vector paramsTypes; + std::vector paramNames; std::vector> decorations; - entryPointFunction = makeFunctionEntry(NoPrecision, makeVoidType(), entryPoint, params, decorations, &entry); + auto const returnType = makeVoidType(); + + restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo; + if(sourceLang == spv::SourceLanguageHLSL) { + emitNonSemanticShaderDebugInfo = false; + } + + entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, paramsTypes, paramNames, decorations, &entry); + + emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; return entryPointFunction; } // Comments in header Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, - const std::vector& paramTypes, + const std::vector& paramTypes, const std::vector& paramNames, const std::vector>& decorations, Block **entry) { // Make the function and initial instructions in it Id typeId = makeFunctionType(returnType, paramTypes); Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size()); - Function* function = new Function(getUniqueId(), returnType, typeId, firstParamId, module); + Id funcId = getUniqueId(); + Function* function = new Function(funcId, returnType, typeId, firstParamId, module); // Set up the precisions setPrecision(function->getId(), precision); @@ -1475,11 +2036,39 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const } } + // Make the debug function instruction + if (emitNonSemanticShaderDebugInfo) { + Id nameId = getStringId(unmangleFunctionName(name)); + Id debugFuncId = makeDebugFunction(function, nameId, typeId); + debugId[funcId] = debugFuncId; + currentDebugScopeId.push(debugFuncId); + lastDebugScopeId = NoResult; + } + // CFG - if (entry) { - *entry = new Block(getUniqueId(), *function); - function->addBlock(*entry); - setBuildPoint(*entry); + assert(entry != nullptr); + *entry = new Block(getUniqueId(), *function); + function->addBlock(*entry); + setBuildPoint(*entry); + + // DebugScope and DebugLine for parameter DebugDeclares + if (emitNonSemanticShaderDebugInfo && (int)paramTypes.size() > 0) { + addDebugScopeAndLine(currentFileId, currentLine, 0); + } + + if (emitNonSemanticShaderDebugInfo) { + assert(paramTypes.size() == paramNames.size()); + for(size_t p = 0; p < paramTypes.size(); ++p) + { + auto const& paramType = paramTypes[p]; + assert(isPointerType(paramType) || isArrayType(paramType)); + assert(debugId[getContainedTypeId(paramType)] != 0); + auto const& paramName = paramNames[p]; + auto const debugLocalVariableId = createDebugLocalVariable(debugId[getContainedTypeId(paramType)], paramName, p+1); + debugId[firstParamId + p] = debugLocalVariableId; + + makeDebugDeclare(debugLocalVariableId, firstParamId + p); + } } if (name) @@ -1487,9 +2076,62 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const functions.push_back(std::unique_ptr(function)); + // Clear debug scope stack + if (emitNonSemanticShaderDebugInfo) + currentDebugScopeId.pop(); + return function; } +Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) { + assert(function != nullptr); + assert(nameId != 0); + assert(funcTypeId != 0); + assert(debugId[funcTypeId] != 0); + + Id funcId = getUniqueId(); + auto type = new Instruction(funcId, makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunction); + type->addIdOperand(nameId); + type->addIdOperand(debugId[funcTypeId]); + type->addIdOperand(makeDebugSource(currentFileId)); // Will be fixed later when true filename available + type->addIdOperand(makeUintConstant(currentLine)); // Will be fixed later when true line available + type->addIdOperand(makeUintConstant(0)); // column + type->addIdOperand(makeDebugCompilationUnit()); // scope + type->addIdOperand(nameId); // linkage name + type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); + type->addIdOperand(makeUintConstant(currentLine)); // TODO(greg-lunarg): correct scope line + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + return funcId; +} + +Id Builder::makeDebugLexicalBlock(uint32_t line) { + Id lexId = getUniqueId(); + auto lex = new Instruction(lexId, makeVoidType(), OpExtInst); + lex->addIdOperand(nonSemanticShaderDebugInfo); + lex->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLexicalBlock); + lex->addIdOperand(makeDebugSource(currentFileId)); + lex->addIdOperand(makeUintConstant(line)); + lex->addIdOperand(makeUintConstant(0)); // column + lex->addIdOperand(currentDebugScopeId.top()); // scope + constantsTypesGlobals.push_back(std::unique_ptr(lex)); + module.mapInstruction(lex); + return lexId; +} + +std::string Builder::unmangleFunctionName(std::string const& name) const +{ + assert(name.length() > 0); + + if(name.rfind('(') != std::string::npos) { + return name.substr(0, name.rfind('(')); + } else { + return name; + } +} + // Comments in header void Builder::makeReturn(bool implicit, Id retVal) { @@ -1504,6 +2146,48 @@ void Builder::makeReturn(bool implicit, Id retVal) createAndSetNoPredecessorBlock("post-return"); } +// Comments in header +void Builder::enterScope(uint32_t line) +{ + // Generate new lexical scope debug instruction + Id lexId = makeDebugLexicalBlock(line); + currentDebugScopeId.push(lexId); + lastDebugScopeId = NoResult; +} + +// Comments in header +void Builder::leaveScope() +{ + // Pop current scope from stack and clear current scope + currentDebugScopeId.pop(); + lastDebugScopeId = NoResult; +} + +// Comments in header +void Builder::enterFunction(Function const* function) +{ + // Save and disable debugInfo for HLSL entry point function. It is a wrapper + // function with no user code in it. + restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo; + if (sourceLang == spv::SourceLanguageHLSL && function == entryPointFunction) { + emitNonSemanticShaderDebugInfo = false; + } + + if (emitNonSemanticShaderDebugInfo) { + // Initialize scope state + Id funcId = function->getFuncId(); + currentDebugScopeId.push(debugId[funcId]); + // Create DebugFunctionDefinition + spv::Id resultId = getUniqueId(); + Instruction* defInst = new Instruction(resultId, makeVoidType(), OpExtInst); + defInst->addIdOperand(nonSemanticShaderDebugInfo); + defInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunctionDefinition); + defInst->addIdOperand(debugId[funcId]); + defInst->addIdOperand(funcId); + buildPoint->addInstruction(std::unique_ptr(defInst)); + } +} + // Comments in header void Builder::leaveFunction() { @@ -1519,6 +2203,12 @@ void Builder::leaveFunction() makeReturn(true, createUndefined(function.getReturnType())); } } + + // Clear function scope from debug scope stack + if (emitNonSemanticShaderDebugInfo) + currentDebugScopeId.pop(); + + emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; } // Comments in header @@ -1529,7 +2219,8 @@ void Builder::makeStatementTerminator(spv::Op opcode, const char *name) } // Comments in header -Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer) +Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer, + bool const compilerGenerated) { Id pointerType = makePointer(storageClass, type); Instruction* inst = new Instruction(getUniqueId(), pointerType, OpVariable); @@ -1541,11 +2232,27 @@ Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id t case StorageClassFunction: // Validation rules require the declaration in the entry block buildPoint->getParent().addLocalVariable(std::unique_ptr(inst)); + + if (emitNonSemanticShaderDebugInfo && !compilerGenerated) + { + auto const debugLocalVariableId = createDebugLocalVariable(debugId[type], name); + debugId[inst->getResultId()] = debugLocalVariableId; + + // TODO: Remove? + // makeDebugDeclare(debugLocalVariableId, inst->getResultId()); + } + break; default: constantsTypesGlobals.push_back(std::unique_ptr(inst)); module.mapInstruction(inst); + + if (emitNonSemanticShaderDebugInfo && !isRayTracingOpCode(getOpCode(type))) + { + auto const debugResultId = createDebugGlobalVariable(debugId[type], name, inst->getResultId()); + debugId[inst->getResultId()] = debugResultId; + } break; } @@ -1605,6 +2312,15 @@ void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAcce } buildPoint->addInstruction(std::unique_ptr(store)); + + if (emitNonSemanticShaderDebugInfo && !isGlobalVariable(lValue)) + { + if(debugId.find(lValue) != debugId.end()) + { + auto const debugLocalVariableId = debugId[lValue]; + makeDebugValue(debugLocalVariableId, rValue); + } + } } // Comments in header @@ -3271,10 +3987,10 @@ void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& te const int opSourceWordCount = 4; const int nonNullBytesPerInstruction = 4 * (maxWordCount - opSourceWordCount) - 1; - if (source != SourceLanguageUnknown) { + if (sourceLang != SourceLanguageUnknown) { // OpSource Language Version File Source Instruction sourceInst(NoResult, NoType, OpSource); - sourceInst.addImmediateOperand(source); + sourceInst.addImmediateOperand(sourceLang); sourceInst.addImmediateOperand(sourceVersion); // File operand if (fileId != NoResult) { @@ -3307,6 +4023,7 @@ void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& te // Dump an OpSource[Continued] sequence for the source and every include file void Builder::dumpSourceInstructions(std::vector& out) const { + if (emitNonSemanticShaderDebugInfo) return; dumpSourceInstructions(sourceFileStringId, sourceText, out); for (auto iItr = includeFiles.begin(); iItr != includeFiles.end(); ++iItr) dumpSourceInstructions(iItr->first, *iItr->second, out); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 0d6bce631f..8bbd5185e8 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -50,6 +50,10 @@ #include "Logger.h" #include "spirv.hpp" #include "spvIR.h" +namespace spv { + #include "GLSL.ext.KHR.h" + #include "NonSemanticShaderDebugInfo100.h" +} #include #include @@ -82,7 +86,7 @@ class Builder { void setSource(spv::SourceLanguage lang, int version) { - source = lang; + sourceLang = lang; sourceVersion = version; } spv::Id getStringId(const std::string& str) @@ -106,11 +110,25 @@ class Builder { void setSourceFile(const std::string& file) { sourceFileStringId = getStringId(file); + currentFileId = sourceFileStringId; } void setSourceText(const std::string& text) { sourceText = text; } void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); } void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); } void setEmitOpLines() { emitOpLines = true; } + void setEmitNonSemanticShaderDebugInfo(bool const emit) + { + emitNonSemanticShaderDebugInfo = emit; + + if(emit) + { + importNonSemanticShaderDebugInfoInstructions(); + } + } + void setEmitNonSemanticShaderDebugSource(bool const src) + { + emitNonSemanticShaderDebugSource = src; + } void addExtension(const char* ext) { extensions.insert(ext); } void removeExtension(const char* ext) { @@ -163,10 +181,11 @@ class Builder { void setLine(int line, const char* filename); // Low-level OpLine. See setLine() for a layered helper. void addLine(Id fileName, int line, int column); + void addDebugScopeAndLine(Id fileName, int line, int column); // For creating new types (will return old type if the requested one was already made). Id makeVoidType(); - Id makeBoolType(); + Id makeBoolType(bool const compilerGenerated = true); Id makePointer(StorageClass, Id pointee); Id makeForwardPointer(StorageClass); Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee); @@ -174,7 +193,7 @@ class Builder { Id makeIntType(int width) { return makeIntegerType(width, true); } Id makeUintType(int width) { return makeIntegerType(width, false); } Id makeFloatType(int width); - Id makeStructType(const std::vector& members, const char*); + Id makeStructType(const std::vector& members, const char* name, bool const compilerGenerated = true); Id makeStructResultType(Id type0, Id type1); Id makeVectorType(Id component, int size); Id makeMatrixType(Id component, int cols, int rows); @@ -187,6 +206,36 @@ class Builder { Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols); Id makeGenericType(spv::Op opcode, std::vector& operands); + // SPIR-V NonSemantic Shader DebugInfo Instructions + struct DebugTypeLoc { + std::string name {}; + int line {0}; + int column {0}; + }; + std::unordered_map debugTypeLocs; + Id makeDebugInfoNone(); + Id makeBoolDebugType(int const size); + Id makeIntegerDebugType(int const width, bool const hasSign); + Id makeFloatDebugType(int const width); + Id makeSequentialDebugType(Id const baseType, Id const componentCount, NonSemanticShaderDebugInfo100Instructions const sequenceType); + Id makeArrayDebugType(Id const baseType, Id const componentCount); + Id makeVectorDebugType(Id const baseType, int const componentCount); + Id makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor = true); + Id makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc); + Id makeCompositeDebugType(std::vector const& memberTypes, char const*const name, + NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false); + Id makeDebugSource(const Id fileName); + Id makeDebugCompilationUnit(); + Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable); + Id createDebugLocalVariable(Id type, char const*const name, size_t const argNumber = 0); + Id makeDebugExpression(); + Id makeDebugDeclare(Id const debugLocalVariable, Id const localVariable); + Id makeDebugValue(Id const debugLocalVariable, Id const value); + Id makeDebugFunctionType(Id returnType, const std::vector& paramTypes); + Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId); + Id makeDebugLexicalBlock(uint32_t line); + std::string unmangleFunctionName(std::string const& name) const; + // accelerationStructureNV type Id makeAccelerationStructureType(); // rayQueryEXT type @@ -261,6 +310,8 @@ class Builder { // See if a resultId is valid for use as an initializer. bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); } + bool isRayTracingOpCode(Op opcode) const; + int getScalarTypeWidth(Id typeId) const { Id scalarTypeId = getScalarTypeId(typeId); @@ -322,6 +373,8 @@ class Builder { Id makeFloat16Constant(float f16, bool specConstant = false); Id makeFpConstant(Id type, double d, bool specConstant = false); + Id importNonSemanticShaderDebugInfoInstructions(); + // Turn the array of constants into a proper spv constant of the requested type. Id makeCompositeConstant(Id type, const std::vector& comps, bool specConst = false); @@ -344,7 +397,12 @@ class Builder { void addMemberDecoration(Id, unsigned int member, Decoration, const std::vector& strings); // At the end of what block do the next create*() instructions go? - void setBuildPoint(Block* bp) { buildPoint = bp; } + // Also reset current last DebugScope and current source line to unknown + void setBuildPoint(Block* bp) { + buildPoint = bp; + lastDebugScopeId = NoResult; + currentLine = 0; + } Block* getBuildPoint() const { return buildPoint; } // Make the entry-point function. The returned pointer is only valid @@ -355,12 +413,22 @@ class Builder { // Return the function, pass back the entry. // The returned pointer is only valid for the lifetime of this builder. Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, - const std::vector& paramTypes, const std::vector>& precisions, Block **entry = 0); + const std::vector& paramTypes, const std::vector& paramNames, + const std::vector>& precisions, Block **entry = 0); // Create a return. An 'implicit' return is one not appearing in the source // code. In the case of an implicit return, no post-return block is inserted. void makeReturn(bool implicit, Id retVal = 0); + // Initialize state and generate instructions for new lexical scope + void enterScope(uint32_t line); + + // Set state and generate instructions to exit current lexical scope + void leaveScope(); + + // Prepare builder for generation of instructions for a function. + void enterFunction(Function const* function); + // Generate all the code needed to finish up a function. void leaveFunction(); @@ -369,8 +437,8 @@ class Builder { void makeStatementTerminator(spv::Op opcode, const char *name); // Create a global or function local or IO variable. - Id createVariable(Decoration precision, StorageClass, Id type, const char* name = nullptr, - Id initializer = NoResult); + Id createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name = nullptr, + Id initializer = NoResult, bool const compilerGenerated = true); // Create an intermediate with an undefined value. Id createUndefined(Id type); @@ -805,13 +873,23 @@ class Builder { const; unsigned int spvVersion; // the version of SPIR-V to emit in the header - SourceLanguage source; + SourceLanguage sourceLang; int sourceVersion; spv::Id sourceFileStringId; + spv::Id nonSemanticShaderCompilationUnitId {0}; + spv::Id nonSemanticShaderDebugInfo {0}; + spv::Id debugInfoNone {0}; + spv::Id debugExpression {0}; // Debug expression with zero operations. std::string sourceText; int currentLine; const char* currentFile; + spv::Id currentFileId; + std::stack currentDebugScopeId; + spv::Id lastDebugScopeId; bool emitOpLines; + bool emitNonSemanticShaderDebugInfo; + bool restoreNonSemanticShaderDebugInfo; + bool emitNonSemanticShaderDebugSource; std::set extensions; std::vector sourceExtensions; std::vector moduleProcesses; @@ -845,6 +923,8 @@ class Builder { std::unordered_map> groupedStructConstants; // map type opcodes to type instructions std::unordered_map> groupedTypes; + // map type opcodes to debug type instructions + std::unordered_map> groupedDebugTypes; // list of OpConstantNull instructions std::vector nullConstants; @@ -860,6 +940,12 @@ class Builder { // map from include file name ids to their contents std::map includeFiles; + // map from core id to debug id + std::map debugId; + + // map from file name string id to DebugSource id + std::unordered_map debugSourceId; + // The stream for outputting warnings and errors. SpvBuildLogger* logger; }; // end Builder class diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 3fb3cbacd3..5386048ab6 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -53,14 +53,14 @@ namespace glslang { struct SpvOptions { - SpvOptions() : generateDebugInfo(false), stripDebugInfo(false), disableOptimizer(true), - optimizeSize(false), disassemble(false), validate(false) { } - bool generateDebugInfo; - bool stripDebugInfo; - bool disableOptimizer; - bool optimizeSize; - bool disassemble; - bool validate; + bool generateDebugInfo {false}; + bool stripDebugInfo {false}; + bool disableOptimizer {true}; + bool optimizeSize {false}; + bool disassemble {false}; + bool validate {false}; + bool emitNonSemanticShaderDebugInfo {false}; + bool emitNonSemanticShaderDebugSource{ false }; }; #if ENABLE_OPT diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 57e7d378b9..09691273ab 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -349,6 +349,7 @@ class Function { const std::vector& getBlocks() const { return blocks; } void addLocalVariable(std::unique_ptr inst); Id getReturnType() const { return functionInstruction.getTypeId(); } + Id getFuncId() const { return functionInstruction.getResultId(); } void setReturnPrecision(Decoration precision) { if (precision == DecorationRelaxedPrecision) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 37282f2d01..f8894d161d 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -113,6 +113,8 @@ bool SpvToolsDisassembler = false; bool SpvToolsValidate = false; bool NaNClamp = false; bool stripDebugInfo = false; +bool emitNonSemanticShaderDebugInfo = false; +bool emitNonSemanticShaderDebugSource = false; bool beQuiet = false; bool VulkanRulesRelaxed = false; bool autoSampledTextures = false; @@ -969,11 +971,21 @@ void ProcessArguments(std::vector>& workItem case 'g': // Override previous -g or -g0 argument stripDebugInfo = false; + emitNonSemanticShaderDebugInfo = false; Options &= ~EOptionDebug; if (argv[0][2] == '0') stripDebugInfo = true; - else + else { Options |= EOptionDebug; + if (argv[0][2] == 'V') { + emitNonSemanticShaderDebugInfo = true; + if (argv[0][3] == 'S') { + emitNonSemanticShaderDebugSource = true; + } else { + emitNonSemanticShaderDebugSource = false; + } + } + } break; case 'h': usage(); @@ -1379,6 +1391,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (EnhancedMsgs) shader->setEnhancedMsgs(); + if (emitNonSemanticShaderDebugInfo) + shader->setDebugInfo(true); + // Set up the environment, some subsettings take precedence over earlier // ways of setting things. if (Options & EOptionSpv) { @@ -1470,9 +1485,15 @@ void CompileAndLinkShaderUnits(std::vector compUnits) std::vector spirv; spv::SpvBuildLogger logger; glslang::SpvOptions spvOptions; - if (Options & EOptionDebug) + if (Options & EOptionDebug) { spvOptions.generateDebugInfo = true; - else if (stripDebugInfo) + if (emitNonSemanticShaderDebugInfo) { + spvOptions.emitNonSemanticShaderDebugInfo = true; + if (emitNonSemanticShaderDebugSource) { + spvOptions.emitNonSemanticShaderDebugSource = true; + } + } + } else if (stripDebugInfo) spvOptions.stripDebugInfo = true; spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0; spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0; @@ -1906,6 +1927,8 @@ void usage() " SPV_GOOGLE_hlsl_functionality1 extension\n" " -g generate debug information\n" " -g0 strip debug information\n" + " -gV generate nonsemantic shader debug information\n" + " -gVS generate nonsemantic shader debug information with source\n" " -h print this usage message\n" " -i intermediate tree (glslang AST) is printed out\n" " -l link all input files together to form a single module\n" diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index 109dc4bd58..fbf373b88d 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -196,9 +196,11 @@ void main() Store 97(i) 18 Branch 98 98: Label + Line 1 46 0 LoopMerge 100 101 None Branch 102 102: Label + Line 1 46 0 103: 7(int) Load 97(i) 105: 37(bool) SLessThan 103 104 BranchConditional 105 99 100 diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index 9091327151..9a9e0d9419 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -197,9 +197,11 @@ void main() Store 97(i) 18 Branch 98 98: Label + Line 1 46 0 LoopMerge 100 101 None Branch 102 102: Label + Line 1 46 0 103: 7(int) Load 97(i) 105: 37(bool) SLessThan 103 104 BranchConditional 105 99 100 diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out new file mode 100644 index 0000000000..0b5e9ba2d1 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -0,0 +1,1085 @@ +spv.debuginfo.glsl.comp +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 839 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 13 "main" 117 + ExecutionMode 13 LocalSize 10 10 1 + 8: String "uint" + 14: String "main" + 17: String "" + 24: String "float" + 36: String "springForce" + 42: String "p0" + 46: String "p1" + 49: String "restDist" + 54: String "dist" + 65: String "int" + 71: String "sphereRadius" + 82: String "gravity" + 87: String "particleCount" + 90: String "UBO" + 95: String "params" + 114: String "id" + 119: String "gl_GlobalInvocationID" + 125: String "index" + 147: String "bool" + 155: String "normal" + 161: String "pinned" + 163: String "Particle" + 169: String "particleIn" + 173: String "ParticleIn" + 191: String "particleOut" + 194: String "ParticleOut" + 213: String "force" + 225: String "pos" + 234: String "vel" + 496: String "f" + 540: String "sphereDist" + 584: String "calculateNormals" + 587: String "PushConsts" + 592: String "pushConsts" + 619: String "a" + 631: String "b" + 647: String "c" + Name 13 "main" + Name 35 "springForce(vf3;vf3;f1;" + Name 32 "p0" + Name 33 "p1" + Name 34 "restDist" + Name 52 "dist" + Name 69 "UBO" + MemberName 69(UBO) 0 "deltaT" + MemberName 69(UBO) 1 "particleMass" + MemberName 69(UBO) 2 "springStiffness" + MemberName 69(UBO) 3 "damping" + MemberName 69(UBO) 4 "restDistH" + MemberName 69(UBO) 5 "restDistV" + MemberName 69(UBO) 6 "restDistD" + MemberName 69(UBO) 7 "sphereRadius" + MemberName 69(UBO) 8 "spherePos" + MemberName 69(UBO) 9 "gravity" + MemberName 69(UBO) 10 "particleCount" + Name 93 "params" + Name 112 "id" + Name 117 "gl_GlobalInvocationID" + Name 123 "index" + Name 153 "Particle" + MemberName 153(Particle) 0 "pos" + MemberName 153(Particle) 1 "vel" + MemberName 153(Particle) 2 "uv" + MemberName 153(Particle) 3 "normal" + MemberName 153(Particle) 4 "pinned" + Name 167 "ParticleIn" + MemberName 167(ParticleIn) 0 "particleIn" + Name 175 "" + Name 189 "ParticleOut" + MemberName 189(ParticleOut) 0 "particleOut" + Name 197 "" + Name 211 "force" + Name 223 "pos" + Name 232 "vel" + Name 249 "param" + Name 253 "param" + Name 255 "param" + Name 274 "param" + Name 278 "param" + Name 280 "param" + Name 303 "param" + Name 307 "param" + Name 309 "param" + Name 327 "param" + Name 331 "param" + Name 333 "param" + Name 364 "param" + Name 368 "param" + Name 370 "param" + Name 396 "param" + Name 400 "param" + Name 402 "param" + Name 436 "param" + Name 440 "param" + Name 442 "param" + Name 472 "param" + Name 476 "param" + Name 478 "param" + Name 494 "f" + Name 538 "sphereDist" + Name 582 "PushConsts" + MemberName 582(PushConsts) 0 "calculateNormals" + Name 590 "pushConsts" + Name 600 "normal" + Name 617 "a" + Name 629 "b" + Name 645 "c" + MemberDecorate 69(UBO) 0 Offset 0 + MemberDecorate 69(UBO) 1 Offset 4 + MemberDecorate 69(UBO) 2 Offset 8 + MemberDecorate 69(UBO) 3 Offset 12 + MemberDecorate 69(UBO) 4 Offset 16 + MemberDecorate 69(UBO) 5 Offset 20 + MemberDecorate 69(UBO) 6 Offset 24 + MemberDecorate 69(UBO) 7 Offset 28 + MemberDecorate 69(UBO) 8 Offset 32 + MemberDecorate 69(UBO) 9 Offset 48 + MemberDecorate 69(UBO) 10 Offset 64 + Decorate 69(UBO) Block + Decorate 93(params) DescriptorSet 0 + Decorate 93(params) Binding 2 + Decorate 117(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + MemberDecorate 153(Particle) 0 Offset 0 + MemberDecorate 153(Particle) 1 Offset 16 + MemberDecorate 153(Particle) 2 Offset 32 + MemberDecorate 153(Particle) 3 Offset 48 + MemberDecorate 153(Particle) 4 Offset 64 + Decorate 165 ArrayStride 80 + MemberDecorate 167(ParticleIn) 0 Offset 0 + Decorate 167(ParticleIn) BufferBlock + Decorate 175 DescriptorSet 0 + Decorate 175 Binding 0 + Decorate 187 ArrayStride 80 + MemberDecorate 189(ParticleOut) 0 Offset 0 + Decorate 189(ParticleOut) BufferBlock + Decorate 197 DescriptorSet 0 + Decorate 197 Binding 1 + MemberDecorate 582(PushConsts) 0 Offset 0 + Decorate 582(PushConsts) Block + Decorate 838 BuiltIn WorkgroupSize + 3: TypeVoid + 4: TypeFunction 3 + 6: TypeInt 32 0 + 9: 6(int) Constant 32 + 10: 6(int) Constant 6 + 11: 6(int) Constant 0 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 12: 6(int) Constant 3 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 19: 6(int) Constant 1 + 20: 6(int) Constant 4 + 21: 6(int) Constant 2 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 23: TypeFloat 32 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 26: TypeVector 23(float) 3 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 28: TypePointer Function 26(fvec3) + 29: TypePointer Function 23(float) + 30: TypeFunction 26(fvec3) 28(ptr) 28(ptr) 29(ptr) + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 27 27 27 25 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 36 31 16 11 11 18 36 12 11 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 42 27 16 11 11 37 20 19 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 46 27 16 11 11 37 20 21 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 37 20 12 + 55: 6(int) Constant 68 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 54 27 16 55 11 37 20 + 62: TypeVector 23(float) 4 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 64: TypeInt 32 1 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 65 9 20 11 + 67: TypeVector 64(int) 2 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 66 21 + 69(UBO): TypeStruct 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 62(fvec4) 62(fvec4) 67(ivec2) + 72: 6(int) Constant 56 + 73: 6(int) Constant 8 + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 83: 6(int) Constant 58 + 84: 6(int) Constant 7 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 63 16 83 84 11 11 12 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 63 16 83 84 11 11 12 + 88: 6(int) Constant 59 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 87 68 16 88 73 11 11 12 + 91: 6(int) Constant 69 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 90 19 16 91 11 18 90 11 12 70 74 75 76 77 78 79 80 81 85 86 + 92: TypePointer Uniform 69(UBO) + 93(params): 92(ptr) Variable Uniform + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 95 89 16 91 11 18 95 93(params) 73 + 96: 64(int) Constant 2 + 97: TypePointer Uniform 23(float) + 109: TypeVector 6(int) 3 + 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 7 12 + 111: TypePointer Function 109(ivec3) + 115: 6(int) Constant 74 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 114 110 16 115 11 15 20 + 116: TypePointer Input 109(ivec3) +117(gl_GlobalInvocationID): 116(ptr) Variable Input + 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 119 110 16 115 11 18 119 117(gl_GlobalInvocationID) 73 + 122: TypePointer Function 6(int) + 126: 6(int) Constant 76 + 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 7 16 126 11 15 20 + 129: 64(int) Constant 10 + 130: TypePointer Uniform 64(int) + 146: TypeBool + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 153(Particle): TypeStruct 62(fvec4) 62(fvec4) 62(fvec4) 62(fvec4) 23(float) + 156: 6(int) Constant 31 + 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 + 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 + 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 161 25 16 9 73 11 11 12 + 164: 6(int) Constant 81 + 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 163 19 16 164 11 18 163 11 12 154 157 158 159 160 + 165: TypeRuntimeArray 153(Particle) + 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 162 11 + 167(ParticleIn): TypeStruct 165 + 170: 6(int) Constant 36 + 171: 6(int) Constant 11 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 169 166 16 170 171 11 11 12 + 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 173 19 16 164 11 18 173 11 12 168 + 174: TypePointer Uniform 167(ParticleIn) + 175: 174(ptr) Variable Uniform + 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 172 16 164 11 18 17 175 73 + 177: 64(int) Constant 0 + 179: 64(int) Constant 4 + 182: 23(float) Constant 1065353216 + 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 187: TypeRuntimeArray 153(Particle) + 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 162 11 +189(ParticleOut): TypeStruct 187 + 192: 6(int) Constant 40 + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 191 188 16 192 171 11 11 12 + 195: 6(int) Constant 82 + 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 194 19 16 195 11 18 194 11 12 190 + 196: TypePointer Uniform 189(ParticleOut) + 197: 196(ptr) Variable Uniform + 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 193 16 195 11 18 17 197 73 + 201: TypePointer Uniform 62(fvec4) + 206: 64(int) Constant 1 + 207: 23(float) Constant 0 + 208: 62(fvec4) ConstantComposite 207 207 207 207 + 214: 6(int) Constant 88 + 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 213 27 16 214 11 15 20 + 215: 64(int) Constant 9 + 226: 6(int) Constant 90 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 225 27 16 226 11 15 20 + 235: 6(int) Constant 91 + 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 27 16 235 11 15 20 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 302: 64(int) Constant 5 + 318: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 352: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 363: 64(int) Constant 6 + 379: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 415: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 425: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 455: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 461: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 485: 64(int) Constant 3 + 497: 6(int) Constant 130 + 495: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 496 27 16 497 11 15 20 + 511: 23(float) Constant 1056964608 + 541: 6(int) Constant 135 + 539: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 540 27 16 541 11 15 20 + 546: 64(int) Constant 8 + 554: 64(int) Constant 7 + 557: 23(float) Constant 1008981770 + 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 582(PushConsts): TypeStruct 6(int) + 585: 6(int) Constant 63 + 583: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 584 7 16 585 84 11 11 12 + 588: 6(int) Constant 144 + 586: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 587 19 16 588 11 18 587 11 12 583 + 589: TypePointer PushConstant 582(PushConsts) + 590(pushConsts): 589(ptr) Variable PushConstant + 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 592 586 16 588 11 18 592 590(pushConsts) 73 + 593: TypePointer PushConstant 6(int) + 596: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 602: 6(int) Constant 145 + 601: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 27 16 602 11 15 20 + 603: 26(fvec3) ConstantComposite 207 207 207 + 607: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 613: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 620: 6(int) Constant 149 + 618: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 619 27 16 620 11 15 20 + 632: 6(int) Constant 150 + 630: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 631 27 16 632 11 15 20 + 648: 6(int) Constant 151 + 646: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 647 27 16 648 11 15 20 + 676: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 727: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 733: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 784: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 837: 6(int) Constant 10 + 838: 109(ivec3) ConstantComposite 837 837 19 + 13(main): 3 Function None 4 + 22: Label + 112(id): 111(ptr) Variable Function + 123(index): 122(ptr) Variable Function + 211(force): 28(ptr) Variable Function + 223(pos): 28(ptr) Variable Function + 232(vel): 28(ptr) Variable Function + 249(param): 28(ptr) Variable Function + 253(param): 28(ptr) Variable Function + 255(param): 29(ptr) Variable Function + 274(param): 28(ptr) Variable Function + 278(param): 28(ptr) Variable Function + 280(param): 29(ptr) Variable Function + 303(param): 28(ptr) Variable Function + 307(param): 28(ptr) Variable Function + 309(param): 29(ptr) Variable Function + 327(param): 28(ptr) Variable Function + 331(param): 28(ptr) Variable Function + 333(param): 29(ptr) Variable Function + 364(param): 28(ptr) Variable Function + 368(param): 28(ptr) Variable Function + 370(param): 29(ptr) Variable Function + 396(param): 28(ptr) Variable Function + 400(param): 28(ptr) Variable Function + 402(param): 29(ptr) Variable Function + 436(param): 28(ptr) Variable Function + 440(param): 28(ptr) Variable Function + 442(param): 29(ptr) Variable Function + 472(param): 28(ptr) Variable Function + 476(param): 28(ptr) Variable Function + 478(param): 29(ptr) Variable Function + 494(f): 28(ptr) Variable Function + 538(sphereDist): 28(ptr) Variable Function + 600(normal): 28(ptr) Variable Function + 617(a): 28(ptr) Variable Function + 629(b): 28(ptr) Variable Function + 645(c): 28(ptr) Variable Function + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 120: 109(ivec3) Load 117(gl_GlobalInvocationID) + Store 112(id) 120 + 121: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 113 120 44 + 127: 122(ptr) AccessChain 112(id) 19 + 128: 6(int) Load 127 + 131: 130(ptr) AccessChain 93(params) 129 11 + 132: 64(int) Load 131 + 133: 6(int) Bitcast 132 + 134: 6(int) IMul 128 133 + 135: 122(ptr) AccessChain 112(id) 11 + 136: 6(int) Load 135 + 137: 6(int) IAdd 134 136 + Store 123(index) 137 + 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 124 137 44 + 139: 6(int) Load 123(index) + 140: 130(ptr) AccessChain 93(params) 129 11 + 141: 64(int) Load 140 + 142: 130(ptr) AccessChain 93(params) 129 19 + 143: 64(int) Load 142 + 144: 64(int) IMul 141 143 + 145: 6(int) Bitcast 144 + 149: 146(bool) UGreaterThan 139 145 + SelectionMerge 151 None + BranchConditional 149 150 151 + 150: Label + Return + 151: Label + 178: 6(int) Load 123(index) + 180: 97(ptr) AccessChain 175 177 178 179 + 181: 23(float) Load 180 + 184: 146(bool) FOrdEqual 181 182 + SelectionMerge 186 None + BranchConditional 184 185 186 + 185: Label + 199: 6(int) Load 123(index) + 200: 6(int) Load 123(index) + 202: 201(ptr) AccessChain 197 177 200 177 + 203: 62(fvec4) Load 202 + 204: 201(ptr) AccessChain 197 177 199 177 + Store 204 203 + 205: 6(int) Load 123(index) + 209: 201(ptr) AccessChain 197 177 205 206 + Store 209 208 + Return + 186: Label + 216: 201(ptr) AccessChain 93(params) 215 + 217: 62(fvec4) Load 216 + 218: 26(fvec3) VectorShuffle 217 217 0 1 2 + 219: 97(ptr) AccessChain 93(params) 206 + 220: 23(float) Load 219 + 221: 26(fvec3) VectorTimesScalar 218 220 + Store 211(force) 221 + 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 221 44 + 227: 6(int) Load 123(index) + 228: 201(ptr) AccessChain 175 177 227 177 + 229: 62(fvec4) Load 228 + 230: 26(fvec3) VectorShuffle 229 229 0 1 2 + Store 223(pos) 230 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 224 230 44 + 236: 6(int) Load 123(index) + 237: 201(ptr) AccessChain 175 177 236 206 + 238: 62(fvec4) Load 237 + 239: 26(fvec3) VectorShuffle 238 238 0 1 2 + Store 232(vel) 239 + 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 233 239 44 + 241: 122(ptr) AccessChain 112(id) 11 + 242: 6(int) Load 241 + 244: 146(bool) UGreaterThan 242 11 + SelectionMerge 246 None + BranchConditional 244 245 246 + 245: Label + 247: 6(int) Load 123(index) + 248: 6(int) ISub 247 19 + 250: 201(ptr) AccessChain 175 177 248 177 + 251: 62(fvec4) Load 250 + 252: 26(fvec3) VectorShuffle 251 251 0 1 2 + Store 249(param) 252 + 254: 26(fvec3) Load 223(pos) + Store 253(param) 254 + 256: 97(ptr) AccessChain 93(params) 179 + 257: 23(float) Load 256 + Store 255(param) 257 + 258: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 249(param) 253(param) 255(param) + 259: 26(fvec3) Load 211(force) + 260: 26(fvec3) FAdd 259 258 + Store 211(force) 260 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 260 44 + Branch 246 + 246: Label + 262: 122(ptr) AccessChain 112(id) 11 + 263: 6(int) Load 262 + 264: 130(ptr) AccessChain 93(params) 129 11 + 265: 64(int) Load 264 + 266: 64(int) ISub 265 206 + 267: 6(int) Bitcast 266 + 269: 146(bool) ULessThan 263 267 + SelectionMerge 271 None + BranchConditional 269 270 271 + 270: Label + 272: 6(int) Load 123(index) + 273: 6(int) IAdd 272 19 + 275: 201(ptr) AccessChain 175 177 273 177 + 276: 62(fvec4) Load 275 + 277: 26(fvec3) VectorShuffle 276 276 0 1 2 + Store 274(param) 277 + 279: 26(fvec3) Load 223(pos) + Store 278(param) 279 + 281: 97(ptr) AccessChain 93(params) 179 + 282: 23(float) Load 281 + Store 280(param) 282 + 283: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 274(param) 278(param) 280(param) + 284: 26(fvec3) Load 211(force) + 285: 26(fvec3) FAdd 284 283 + Store 211(force) 285 + 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 285 44 + Branch 271 + 271: Label + 287: 122(ptr) AccessChain 112(id) 19 + 288: 6(int) Load 287 + 289: 130(ptr) AccessChain 93(params) 129 19 + 290: 64(int) Load 289 + 291: 64(int) ISub 290 206 + 292: 6(int) Bitcast 291 + 294: 146(bool) ULessThan 288 292 + SelectionMerge 296 None + BranchConditional 294 295 296 + 295: Label + 297: 6(int) Load 123(index) + 298: 130(ptr) AccessChain 93(params) 129 11 + 299: 64(int) Load 298 + 300: 6(int) Bitcast 299 + 301: 6(int) IAdd 297 300 + 304: 201(ptr) AccessChain 175 177 301 177 + 305: 62(fvec4) Load 304 + 306: 26(fvec3) VectorShuffle 305 305 0 1 2 + Store 303(param) 306 + 308: 26(fvec3) Load 223(pos) + Store 307(param) 308 + 310: 97(ptr) AccessChain 93(params) 302 + 311: 23(float) Load 310 + Store 309(param) 311 + 312: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 303(param) 307(param) 309(param) + 313: 26(fvec3) Load 211(force) + 314: 26(fvec3) FAdd 313 312 + Store 211(force) 314 + 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 314 44 + Branch 296 + 296: Label + 316: 122(ptr) AccessChain 112(id) 19 + 317: 6(int) Load 316 + 319: 146(bool) UGreaterThan 317 11 + SelectionMerge 321 None + BranchConditional 319 320 321 + 320: Label + 322: 6(int) Load 123(index) + 323: 130(ptr) AccessChain 93(params) 129 11 + 324: 64(int) Load 323 + 325: 6(int) Bitcast 324 + 326: 6(int) ISub 322 325 + 328: 201(ptr) AccessChain 175 177 326 177 + 329: 62(fvec4) Load 328 + 330: 26(fvec3) VectorShuffle 329 329 0 1 2 + Store 327(param) 330 + 332: 26(fvec3) Load 223(pos) + Store 331(param) 332 + 334: 97(ptr) AccessChain 93(params) 302 + 335: 23(float) Load 334 + Store 333(param) 335 + 336: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 327(param) 331(param) 333(param) + 337: 26(fvec3) Load 211(force) + 338: 26(fvec3) FAdd 337 336 + Store 211(force) 338 + 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 338 44 + Branch 321 + 321: Label + 340: 122(ptr) AccessChain 112(id) 11 + 341: 6(int) Load 340 + 343: 146(bool) UGreaterThan 341 11 + SelectionMerge 345 None + BranchConditional 343 344 345 + 344: Label + 346: 122(ptr) AccessChain 112(id) 19 + 347: 6(int) Load 346 + 348: 130(ptr) AccessChain 93(params) 129 19 + 349: 64(int) Load 348 + 350: 64(int) ISub 349 206 + 351: 6(int) Bitcast 350 + 353: 146(bool) ULessThan 347 351 + Branch 345 + 345: Label + 354: 146(bool) Phi 343 321 353 344 + SelectionMerge 356 None + BranchConditional 354 355 356 + 355: Label + 357: 6(int) Load 123(index) + 358: 130(ptr) AccessChain 93(params) 129 11 + 359: 64(int) Load 358 + 360: 6(int) Bitcast 359 + 361: 6(int) IAdd 357 360 + 362: 6(int) ISub 361 19 + 365: 201(ptr) AccessChain 175 177 362 177 + 366: 62(fvec4) Load 365 + 367: 26(fvec3) VectorShuffle 366 366 0 1 2 + Store 364(param) 367 + 369: 26(fvec3) Load 223(pos) + Store 368(param) 369 + 371: 97(ptr) AccessChain 93(params) 363 + 372: 23(float) Load 371 + Store 370(param) 372 + 373: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 364(param) 368(param) 370(param) + 374: 26(fvec3) Load 211(force) + 375: 26(fvec3) FAdd 374 373 + Store 211(force) 375 + 376: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 375 44 + Branch 356 + 356: Label + 377: 122(ptr) AccessChain 112(id) 11 + 378: 6(int) Load 377 + 380: 146(bool) UGreaterThan 378 11 + SelectionMerge 382 None + BranchConditional 380 381 382 + 381: Label + 383: 122(ptr) AccessChain 112(id) 19 + 384: 6(int) Load 383 + 386: 146(bool) UGreaterThan 384 11 + Branch 382 + 382: Label + 387: 146(bool) Phi 380 356 386 381 + SelectionMerge 389 None + BranchConditional 387 388 389 + 388: Label + 390: 6(int) Load 123(index) + 391: 130(ptr) AccessChain 93(params) 129 11 + 392: 64(int) Load 391 + 393: 6(int) Bitcast 392 + 394: 6(int) ISub 390 393 + 395: 6(int) ISub 394 19 + 397: 201(ptr) AccessChain 175 177 395 177 + 398: 62(fvec4) Load 397 + 399: 26(fvec3) VectorShuffle 398 398 0 1 2 + Store 396(param) 399 + 401: 26(fvec3) Load 223(pos) + Store 400(param) 401 + 403: 97(ptr) AccessChain 93(params) 363 + 404: 23(float) Load 403 + Store 402(param) 404 + 405: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 396(param) 400(param) 402(param) + 406: 26(fvec3) Load 211(force) + 407: 26(fvec3) FAdd 406 405 + Store 211(force) 407 + 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 407 44 + Branch 389 + 389: Label + 409: 122(ptr) AccessChain 112(id) 11 + 410: 6(int) Load 409 + 411: 130(ptr) AccessChain 93(params) 129 11 + 412: 64(int) Load 411 + 413: 64(int) ISub 412 206 + 414: 6(int) Bitcast 413 + 416: 146(bool) ULessThan 410 414 + SelectionMerge 418 None + BranchConditional 416 417 418 + 417: Label + 419: 122(ptr) AccessChain 112(id) 19 + 420: 6(int) Load 419 + 421: 130(ptr) AccessChain 93(params) 129 19 + 422: 64(int) Load 421 + 423: 64(int) ISub 422 206 + 424: 6(int) Bitcast 423 + 426: 146(bool) ULessThan 420 424 + Branch 418 + 418: Label + 427: 146(bool) Phi 416 389 426 417 + SelectionMerge 429 None + BranchConditional 427 428 429 + 428: Label + 430: 6(int) Load 123(index) + 431: 130(ptr) AccessChain 93(params) 129 11 + 432: 64(int) Load 431 + 433: 6(int) Bitcast 432 + 434: 6(int) IAdd 430 433 + 435: 6(int) IAdd 434 19 + 437: 201(ptr) AccessChain 175 177 435 177 + 438: 62(fvec4) Load 437 + 439: 26(fvec3) VectorShuffle 438 438 0 1 2 + Store 436(param) 439 + 441: 26(fvec3) Load 223(pos) + Store 440(param) 441 + 443: 97(ptr) AccessChain 93(params) 363 + 444: 23(float) Load 443 + Store 442(param) 444 + 445: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 436(param) 440(param) 442(param) + 446: 26(fvec3) Load 211(force) + 447: 26(fvec3) FAdd 446 445 + Store 211(force) 447 + 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 447 44 + Branch 429 + 429: Label + 449: 122(ptr) AccessChain 112(id) 11 + 450: 6(int) Load 449 + 451: 130(ptr) AccessChain 93(params) 129 11 + 452: 64(int) Load 451 + 453: 64(int) ISub 452 206 + 454: 6(int) Bitcast 453 + 456: 146(bool) ULessThan 450 454 + SelectionMerge 458 None + BranchConditional 456 457 458 + 457: Label + 459: 122(ptr) AccessChain 112(id) 19 + 460: 6(int) Load 459 + 462: 146(bool) UGreaterThan 460 11 + Branch 458 + 458: Label + 463: 146(bool) Phi 456 429 462 457 + SelectionMerge 465 None + BranchConditional 463 464 465 + 464: Label + 466: 6(int) Load 123(index) + 467: 130(ptr) AccessChain 93(params) 129 11 + 468: 64(int) Load 467 + 469: 6(int) Bitcast 468 + 470: 6(int) ISub 466 469 + 471: 6(int) IAdd 470 19 + 473: 201(ptr) AccessChain 175 177 471 177 + 474: 62(fvec4) Load 473 + 475: 26(fvec3) VectorShuffle 474 474 0 1 2 + Store 472(param) 475 + 477: 26(fvec3) Load 223(pos) + Store 476(param) 477 + 479: 97(ptr) AccessChain 93(params) 363 + 480: 23(float) Load 479 + Store 478(param) 480 + 481: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 472(param) 476(param) 478(param) + 482: 26(fvec3) Load 211(force) + 483: 26(fvec3) FAdd 482 481 + Store 211(force) 483 + 484: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 483 44 + Branch 465 + 465: Label + 486: 97(ptr) AccessChain 93(params) 485 + 487: 23(float) Load 486 + 488: 23(float) FNegate 487 + 489: 26(fvec3) Load 232(vel) + 490: 26(fvec3) VectorTimesScalar 489 488 + 491: 26(fvec3) Load 211(force) + 492: 26(fvec3) FAdd 491 490 + Store 211(force) 492 + 493: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 492 44 + 498: 26(fvec3) Load 211(force) + 499: 97(ptr) AccessChain 93(params) 206 + 500: 23(float) Load 499 + 501: 23(float) FDiv 182 500 + 502: 26(fvec3) VectorTimesScalar 498 501 + Store 494(f) 502 + 503: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 495 502 44 + 504: 6(int) Load 123(index) + 505: 26(fvec3) Load 223(pos) + 506: 26(fvec3) Load 232(vel) + 507: 97(ptr) AccessChain 93(params) 177 + 508: 23(float) Load 507 + 509: 26(fvec3) VectorTimesScalar 506 508 + 510: 26(fvec3) FAdd 505 509 + 512: 26(fvec3) Load 494(f) + 513: 26(fvec3) VectorTimesScalar 512 511 + 514: 97(ptr) AccessChain 93(params) 177 + 515: 23(float) Load 514 + 516: 26(fvec3) VectorTimesScalar 513 515 + 517: 97(ptr) AccessChain 93(params) 177 + 518: 23(float) Load 517 + 519: 26(fvec3) VectorTimesScalar 516 518 + 520: 26(fvec3) FAdd 510 519 + 521: 23(float) CompositeExtract 520 0 + 522: 23(float) CompositeExtract 520 1 + 523: 23(float) CompositeExtract 520 2 + 524: 62(fvec4) CompositeConstruct 521 522 523 182 + 525: 201(ptr) AccessChain 197 177 504 177 + Store 525 524 + 526: 6(int) Load 123(index) + 527: 26(fvec3) Load 232(vel) + 528: 26(fvec3) Load 494(f) + 529: 97(ptr) AccessChain 93(params) 177 + 530: 23(float) Load 529 + 531: 26(fvec3) VectorTimesScalar 528 530 + 532: 26(fvec3) FAdd 527 531 + 533: 23(float) CompositeExtract 532 0 + 534: 23(float) CompositeExtract 532 1 + 535: 23(float) CompositeExtract 532 2 + 536: 62(fvec4) CompositeConstruct 533 534 535 207 + 537: 201(ptr) AccessChain 197 177 526 206 + Store 537 536 + 542: 6(int) Load 123(index) + 543: 201(ptr) AccessChain 197 177 542 177 + 544: 62(fvec4) Load 543 + 545: 26(fvec3) VectorShuffle 544 544 0 1 2 + 547: 201(ptr) AccessChain 93(params) 546 + 548: 62(fvec4) Load 547 + 549: 26(fvec3) VectorShuffle 548 548 0 1 2 + 550: 26(fvec3) FSub 545 549 + Store 538(sphereDist) 550 + 551: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 539 550 44 + 552: 26(fvec3) Load 538(sphereDist) + 553: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 552 + 555: 97(ptr) AccessChain 93(params) 554 + 556: 23(float) Load 555 + 558: 23(float) FAdd 556 557 + 560: 146(bool) FOrdLessThan 553 558 + SelectionMerge 562 None + BranchConditional 560 561 562 + 561: Label + 563: 6(int) Load 123(index) + 564: 201(ptr) AccessChain 93(params) 546 + 565: 62(fvec4) Load 564 + 566: 26(fvec3) VectorShuffle 565 565 0 1 2 + 567: 26(fvec3) Load 538(sphereDist) + 568: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 567 + 569: 97(ptr) AccessChain 93(params) 554 + 570: 23(float) Load 569 + 571: 23(float) FAdd 570 557 + 572: 26(fvec3) VectorTimesScalar 568 571 + 573: 26(fvec3) FAdd 566 572 + 574: 97(ptr) AccessChain 197 177 563 177 11 + 575: 23(float) CompositeExtract 573 0 + Store 574 575 + 576: 97(ptr) AccessChain 197 177 563 177 19 + 577: 23(float) CompositeExtract 573 1 + Store 576 577 + 578: 97(ptr) AccessChain 197 177 563 177 21 + 579: 23(float) CompositeExtract 573 2 + Store 578 579 + 580: 6(int) Load 123(index) + 581: 201(ptr) AccessChain 197 177 580 206 + Store 581 208 + Branch 562 + 562: Label + 594: 593(ptr) AccessChain 590(pushConsts) 177 + 595: 6(int) Load 594 + 597: 146(bool) IEqual 595 19 + SelectionMerge 599 None + BranchConditional 597 598 599 + 598: Label + Store 600(normal) 603 + 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 603 44 + 605: 122(ptr) AccessChain 112(id) 19 + 606: 6(int) Load 605 + 608: 146(bool) UGreaterThan 606 11 + SelectionMerge 610 None + BranchConditional 608 609 610 + 609: Label + 611: 122(ptr) AccessChain 112(id) 11 + 612: 6(int) Load 611 + 614: 146(bool) UGreaterThan 612 11 + SelectionMerge 616 None + BranchConditional 614 615 616 + 615: Label + 621: 6(int) Load 123(index) + 622: 6(int) ISub 621 19 + 623: 201(ptr) AccessChain 175 177 622 177 + 624: 62(fvec4) Load 623 + 625: 26(fvec3) VectorShuffle 624 624 0 1 2 + 626: 26(fvec3) Load 223(pos) + 627: 26(fvec3) FSub 625 626 + Store 617(a) 627 + 628: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 627 44 + 633: 6(int) Load 123(index) + 634: 130(ptr) AccessChain 93(params) 129 11 + 635: 64(int) Load 634 + 636: 6(int) Bitcast 635 + 637: 6(int) ISub 633 636 + 638: 6(int) ISub 637 19 + 639: 201(ptr) AccessChain 175 177 638 177 + 640: 62(fvec4) Load 639 + 641: 26(fvec3) VectorShuffle 640 640 0 1 2 + 642: 26(fvec3) Load 223(pos) + 643: 26(fvec3) FSub 641 642 + Store 629(b) 643 + 644: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 643 44 + 649: 6(int) Load 123(index) + 650: 130(ptr) AccessChain 93(params) 129 11 + 651: 64(int) Load 650 + 652: 6(int) Bitcast 651 + 653: 6(int) ISub 649 652 + 654: 201(ptr) AccessChain 175 177 653 177 + 655: 62(fvec4) Load 654 + 656: 26(fvec3) VectorShuffle 655 655 0 1 2 + 657: 26(fvec3) Load 223(pos) + 658: 26(fvec3) FSub 656 657 + Store 645(c) 658 + 659: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 658 44 + 660: 26(fvec3) Load 617(a) + 661: 26(fvec3) Load 629(b) + 662: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 660 661 + 663: 26(fvec3) Load 629(b) + 664: 26(fvec3) Load 645(c) + 665: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 663 664 + 666: 26(fvec3) FAdd 662 665 + 667: 26(fvec3) Load 600(normal) + 668: 26(fvec3) FAdd 667 666 + Store 600(normal) 668 + 669: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 668 44 + Branch 616 + 616: Label + 670: 122(ptr) AccessChain 112(id) 11 + 671: 6(int) Load 670 + 672: 130(ptr) AccessChain 93(params) 129 11 + 673: 64(int) Load 672 + 674: 64(int) ISub 673 206 + 675: 6(int) Bitcast 674 + 677: 146(bool) ULessThan 671 675 + SelectionMerge 679 None + BranchConditional 677 678 679 + 678: Label + 680: 6(int) Load 123(index) + 681: 130(ptr) AccessChain 93(params) 129 11 + 682: 64(int) Load 681 + 683: 6(int) Bitcast 682 + 684: 6(int) ISub 680 683 + 685: 201(ptr) AccessChain 175 177 684 177 + 686: 62(fvec4) Load 685 + 687: 26(fvec3) VectorShuffle 686 686 0 1 2 + 688: 26(fvec3) Load 223(pos) + 689: 26(fvec3) FSub 687 688 + Store 617(a) 689 + 690: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 689 44 + 691: 6(int) Load 123(index) + 692: 130(ptr) AccessChain 93(params) 129 11 + 693: 64(int) Load 692 + 694: 6(int) Bitcast 693 + 695: 6(int) ISub 691 694 + 696: 6(int) IAdd 695 19 + 697: 201(ptr) AccessChain 175 177 696 177 + 698: 62(fvec4) Load 697 + 699: 26(fvec3) VectorShuffle 698 698 0 1 2 + 700: 26(fvec3) Load 223(pos) + 701: 26(fvec3) FSub 699 700 + Store 629(b) 701 + 702: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 701 44 + 703: 6(int) Load 123(index) + 704: 6(int) IAdd 703 19 + 705: 201(ptr) AccessChain 175 177 704 177 + 706: 62(fvec4) Load 705 + 707: 26(fvec3) VectorShuffle 706 706 0 1 2 + 708: 26(fvec3) Load 223(pos) + 709: 26(fvec3) FSub 707 708 + Store 645(c) 709 + 710: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 709 44 + 711: 26(fvec3) Load 617(a) + 712: 26(fvec3) Load 629(b) + 713: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 711 712 + 714: 26(fvec3) Load 629(b) + 715: 26(fvec3) Load 645(c) + 716: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 714 715 + 717: 26(fvec3) FAdd 713 716 + 718: 26(fvec3) Load 600(normal) + 719: 26(fvec3) FAdd 718 717 + Store 600(normal) 719 + 720: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 719 44 + Branch 679 + 679: Label + Branch 610 + 610: Label + 721: 122(ptr) AccessChain 112(id) 19 + 722: 6(int) Load 721 + 723: 130(ptr) AccessChain 93(params) 129 19 + 724: 64(int) Load 723 + 725: 64(int) ISub 724 206 + 726: 6(int) Bitcast 725 + 728: 146(bool) ULessThan 722 726 + SelectionMerge 730 None + BranchConditional 728 729 730 + 729: Label + 731: 122(ptr) AccessChain 112(id) 11 + 732: 6(int) Load 731 + 734: 146(bool) UGreaterThan 732 11 + SelectionMerge 736 None + BranchConditional 734 735 736 + 735: Label + 737: 6(int) Load 123(index) + 738: 130(ptr) AccessChain 93(params) 129 11 + 739: 64(int) Load 738 + 740: 6(int) Bitcast 739 + 741: 6(int) IAdd 737 740 + 742: 201(ptr) AccessChain 175 177 741 177 + 743: 62(fvec4) Load 742 + 744: 26(fvec3) VectorShuffle 743 743 0 1 2 + 745: 26(fvec3) Load 223(pos) + 746: 26(fvec3) FSub 744 745 + Store 617(a) 746 + 747: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 746 44 + 748: 6(int) Load 123(index) + 749: 130(ptr) AccessChain 93(params) 129 11 + 750: 64(int) Load 749 + 751: 6(int) Bitcast 750 + 752: 6(int) IAdd 748 751 + 753: 6(int) ISub 752 19 + 754: 201(ptr) AccessChain 175 177 753 177 + 755: 62(fvec4) Load 754 + 756: 26(fvec3) VectorShuffle 755 755 0 1 2 + 757: 26(fvec3) Load 223(pos) + 758: 26(fvec3) FSub 756 757 + Store 629(b) 758 + 759: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 758 44 + 760: 6(int) Load 123(index) + 761: 6(int) ISub 760 19 + 762: 201(ptr) AccessChain 175 177 761 177 + 763: 62(fvec4) Load 762 + 764: 26(fvec3) VectorShuffle 763 763 0 1 2 + 765: 26(fvec3) Load 223(pos) + 766: 26(fvec3) FSub 764 765 + Store 645(c) 766 + 767: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 766 44 + 768: 26(fvec3) Load 617(a) + 769: 26(fvec3) Load 629(b) + 770: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 768 769 + 771: 26(fvec3) Load 629(b) + 772: 26(fvec3) Load 645(c) + 773: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 771 772 + 774: 26(fvec3) FAdd 770 773 + 775: 26(fvec3) Load 600(normal) + 776: 26(fvec3) FAdd 775 774 + Store 600(normal) 776 + 777: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 776 44 + Branch 736 + 736: Label + 778: 122(ptr) AccessChain 112(id) 11 + 779: 6(int) Load 778 + 780: 130(ptr) AccessChain 93(params) 129 11 + 781: 64(int) Load 780 + 782: 64(int) ISub 781 206 + 783: 6(int) Bitcast 782 + 785: 146(bool) ULessThan 779 783 + SelectionMerge 787 None + BranchConditional 785 786 787 + 786: Label + 788: 6(int) Load 123(index) + 789: 6(int) IAdd 788 19 + 790: 201(ptr) AccessChain 175 177 789 177 + 791: 62(fvec4) Load 790 + 792: 26(fvec3) VectorShuffle 791 791 0 1 2 + 793: 26(fvec3) Load 223(pos) + 794: 26(fvec3) FSub 792 793 + Store 617(a) 794 + 795: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 794 44 + 796: 6(int) Load 123(index) + 797: 130(ptr) AccessChain 93(params) 129 11 + 798: 64(int) Load 797 + 799: 6(int) Bitcast 798 + 800: 6(int) IAdd 796 799 + 801: 6(int) IAdd 800 19 + 802: 201(ptr) AccessChain 175 177 801 177 + 803: 62(fvec4) Load 802 + 804: 26(fvec3) VectorShuffle 803 803 0 1 2 + 805: 26(fvec3) Load 223(pos) + 806: 26(fvec3) FSub 804 805 + Store 629(b) 806 + 807: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 806 44 + 808: 6(int) Load 123(index) + 809: 130(ptr) AccessChain 93(params) 129 11 + 810: 64(int) Load 809 + 811: 6(int) Bitcast 810 + 812: 6(int) IAdd 808 811 + 813: 201(ptr) AccessChain 175 177 812 177 + 814: 62(fvec4) Load 813 + 815: 26(fvec3) VectorShuffle 814 814 0 1 2 + 816: 26(fvec3) Load 223(pos) + 817: 26(fvec3) FSub 815 816 + Store 645(c) 817 + 818: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 817 44 + 819: 26(fvec3) Load 617(a) + 820: 26(fvec3) Load 629(b) + 821: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 819 820 + 822: 26(fvec3) Load 629(b) + 823: 26(fvec3) Load 645(c) + 824: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 822 823 + 825: 26(fvec3) FAdd 821 824 + 826: 26(fvec3) Load 600(normal) + 827: 26(fvec3) FAdd 826 825 + Store 600(normal) 827 + 828: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 827 44 + Branch 787 + 787: Label + Branch 730 + 730: Label + 829: 6(int) Load 123(index) + 830: 26(fvec3) Load 600(normal) + 831: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 830 + 832: 23(float) CompositeExtract 831 0 + 833: 23(float) CompositeExtract 831 1 + 834: 23(float) CompositeExtract 831 2 + 835: 62(fvec4) CompositeConstruct 832 833 834 207 + 836: 201(ptr) AccessChain 197 177 829 485 + Store 836 835 + Branch 599 + 599: Label + Return + FunctionEnd +35(springForce(vf3;vf3;f1;): 26(fvec3) Function None 30 + 32(p0): 28(ptr) FunctionParameter + 33(p1): 28(ptr) FunctionParameter + 34(restDist): 29(ptr) FunctionParameter + 38: Label + 52(dist): 28(ptr) Variable Function + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 37 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 41 32(p0) 44 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 45 33(p1) 44 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 34(restDist) 44 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 37 35(springForce(vf3;vf3;f1;) + 56: 26(fvec3) Load 32(p0) + 57: 26(fvec3) Load 33(p1) + 58: 26(fvec3) FSub 56 57 + Store 52(dist) 58 + 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 53 58 44 + 60: 26(fvec3) Load 52(dist) + 61: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 60 + 98: 97(ptr) AccessChain 93(params) 96 + 99: 23(float) Load 98 + 100: 26(fvec3) VectorTimesScalar 61 99 + 101: 26(fvec3) Load 52(dist) + 102: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 101 + 103: 23(float) Load 34(restDist) + 104: 23(float) FSub 102 103 + 105: 26(fvec3) VectorTimesScalar 100 104 + ReturnValue 105 + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out new file mode 100644 index 0000000000..2180f7ee2b --- /dev/null +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -0,0 +1,949 @@ +spv.debuginfo.glsl.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 716 + + Capability Shader + Capability ImageQuery + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 13 "main" 406 452 + ExecutionMode 13 OriginUpperLeft + 8: String "uint" + 14: String "main" + 17: String "" + 24: String "float" + 39: String "textureProj" + 45: String "P" + 49: String "layer" + 52: String "offset" + 59: String "filterPCF" + 65: String "sc" + 77: String "shadow" + 83: String "fragcolor" + 86: String "fragpos" + 96: String "shadowCoord" + 118: String "bool" + 132: String "dist" + 136: String "type.2d.image" + 137: String "@type.2d.image" + 141: String "type.sampled.image" + 142: String "@type.sampled.image" + 146: String "samplerShadowMap" + 182: String "int" + 189: String "texDim" + 201: String "scale" + 207: String "dx" + 219: String "dy" + 230: String "shadowFactor" + 235: String "count" + 240: String "range" + 246: String "x" + 262: String "y" + 312: String "i" + 326: String "shadowClip" + 333: String "color" + 339: String "viewMatrix" + 342: String "Light" + 348: String "lights" + 351: String "debugDisplayTarget" + 355: String "UBO" + 359: String "ubo" + 394: String "fragPos" + 403: String "samplerposition" + 408: String "inUV" + 415: String "normal" + 419: String "samplerNormal" + 427: String "albedo" + 431: String "samplerAlbedo" + 454: String "outFragColor" + 516: String "N" + 535: String "L" + 556: String "V" + 569: String "lightCosInnerAngle" + 575: String "lightCosOuterAngle" + 581: String "lightRange" + 587: String "dir" + 602: String "cosDir" + 610: String "spotEffect" + 619: String "heightAttenuation" + 627: String "NdotL" + 636: String "diff" + 643: String "R" + 652: String "NdotR" + 661: String "spec" + Name 13 "main" + Name 38 "textureProj(vf4;f1;vf2;" + Name 35 "P" + Name 36 "layer" + Name 37 "offset" + Name 58 "filterPCF(vf4;f1;" + Name 56 "sc" + Name 57 "layer" + Name 76 "shadow(vf3;vf3;" + Name 74 "fragcolor" + Name 75 "fragpos" + Name 89 "shadow" + Name 94 "shadowCoord" + Name 130 "dist" + Name 144 "samplerShadowMap" + Name 187 "texDim" + Name 199 "scale" + Name 205 "dx" + Name 217 "dy" + Name 228 "shadowFactor" + Name 233 "count" + Name 238 "range" + Name 244 "x" + Name 260 "y" + Name 285 "param" + Name 287 "param" + Name 289 "param" + Name 310 "i" + Name 324 "shadowClip" + Name 331 "Light" + MemberName 331(Light) 0 "position" + MemberName 331(Light) 1 "target" + MemberName 331(Light) 2 "color" + MemberName 331(Light) 3 "viewMatrix" + Name 345 "UBO" + MemberName 345(UBO) 0 "viewPos" + MemberName 345(UBO) 1 "lights" + MemberName 345(UBO) 2 "useShadows" + MemberName 345(UBO) 3 "debugDisplayTarget" + Name 357 "ubo" + Name 371 "shadowFactor" + Name 376 "param" + Name 378 "param" + Name 392 "fragPos" + Name 401 "samplerposition" + Name 406 "inUV" + Name 413 "normal" + Name 417 "samplerNormal" + Name 425 "albedo" + Name 429 "samplerAlbedo" + Name 452 "outFragColor" + Name 457 "param" + Name 458 "param" + Name 506 "fragcolor" + Name 514 "N" + Name 521 "i" + Name 533 "L" + Name 545 "dist" + Name 554 "V" + Name 567 "lightCosInnerAngle" + Name 573 "lightCosOuterAngle" + Name 579 "lightRange" + Name 585 "dir" + Name 600 "cosDir" + Name 608 "spotEffect" + Name 617 "heightAttenuation" + Name 625 "NdotL" + Name 634 "diff" + Name 641 "R" + Name 650 "NdotR" + Name 659 "spec" + Name 705 "param" + Name 707 "param" + Decorate 144(samplerShadowMap) DescriptorSet 0 + Decorate 144(samplerShadowMap) Binding 5 + MemberDecorate 331(Light) 0 Offset 0 + MemberDecorate 331(Light) 1 Offset 16 + MemberDecorate 331(Light) 2 Offset 32 + MemberDecorate 331(Light) 3 ColMajor + MemberDecorate 331(Light) 3 Offset 48 + MemberDecorate 331(Light) 3 MatrixStride 16 + Decorate 343 ArrayStride 112 + MemberDecorate 345(UBO) 0 Offset 0 + MemberDecorate 345(UBO) 1 Offset 16 + MemberDecorate 345(UBO) 2 Offset 352 + MemberDecorate 345(UBO) 3 Offset 356 + Decorate 345(UBO) Block + Decorate 357(ubo) DescriptorSet 0 + Decorate 357(ubo) Binding 4 + Decorate 401(samplerposition) DescriptorSet 0 + Decorate 401(samplerposition) Binding 1 + Decorate 406(inUV) Location 0 + Decorate 417(samplerNormal) DescriptorSet 0 + Decorate 417(samplerNormal) Binding 2 + Decorate 429(samplerAlbedo) DescriptorSet 0 + Decorate 429(samplerAlbedo) Binding 3 + Decorate 452(outFragColor) Location 0 + 3: TypeVoid + 4: TypeFunction 3 + 6: TypeInt 32 0 + 9: 6(int) Constant 32 + 10: 6(int) Constant 6 + 11: 6(int) Constant 0 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 12: 6(int) Constant 3 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 19: 6(int) Constant 1 + 20: 6(int) Constant 4 + 21: 6(int) Constant 2 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 23: TypeFloat 32 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 26: TypeVector 23(float) 4 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 28: TypePointer Function 26(fvec4) + 29: TypePointer Function 23(float) + 30: TypeVector 23(float) 2 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 + 32: TypePointer Function 30(fvec2) + 33: TypeFunction 23(float) 28(ptr) 29(ptr) 32(ptr) + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25 31 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 39 34 16 11 11 18 39 12 11 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 45 27 16 11 11 40 20 19 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 40 20 21 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 52 31 16 11 11 40 20 12 + 54: TypeFunction 23(float) 28(ptr) 29(ptr) + 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 59 55 16 11 11 18 59 12 11 + 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 65 27 16 11 11 60 20 19 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 60 20 21 + 69: TypeVector 23(float) 3 + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 71: TypePointer Function 69(fvec3) + 72: TypeFunction 69(fvec3) 71(ptr) 71(ptr) + 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 70 70 70 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 77 73 16 11 11 18 77 12 11 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 11 11 78 20 19 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 86 70 16 11 11 78 20 21 + 91: 6(int) Constant 59 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 25 16 91 11 40 20 + 92: 23(float) Constant 1065353216 + 97: 6(int) Constant 60 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 27 16 97 11 40 20 + 106: 23(float) Constant 1056964608 + 114: TypeBool + 117: 23(float) Constant 3212836864 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 133: 6(int) Constant 65 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 133 11 40 20 + 134: TypeImage 23(float) 2D array sampled format:Unknown + 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 136 11 16 133 11 18 137 138 12 + 139: TypeSampledImage 134 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 11 16 133 11 18 142 138 12 + 143: TypePointer UniformConstant 139 +144(samplerShadowMap): 143(ptr) Variable UniformConstant + 147: 6(int) Constant 8 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 146 140 16 133 11 18 146 144(samplerShadowMap) 147 + 162: 23(float) Constant 0 + 163: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 175: 23(float) Constant 1048576000 + 181: TypeInt 32 1 + 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 182 9 20 11 + 184: TypeVector 181(int) 2 + 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 183 21 + 186: TypePointer Function 184(ivec2) + 190: 6(int) Constant 76 + 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 189 185 16 190 11 60 20 + 192: 181(int) Constant 0 + 194: TypeVector 181(int) 3 + 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 183 12 + 202: 6(int) Constant 77 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 201 25 16 202 11 60 20 + 203: 23(float) Constant 1069547520 + 208: 6(int) Constant 78 + 206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 207 25 16 208 11 60 20 + 211: TypePointer Function 181(int) + 220: 6(int) Constant 79 + 218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 219 25 16 220 11 60 20 + 231: 6(int) Constant 81 + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 25 16 231 11 60 20 + 236: 6(int) Constant 82 + 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 235 183 16 236 11 60 20 + 241: 6(int) Constant 83 + 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 240 183 16 241 11 60 20 + 242: 181(int) Constant 1 + 247: 6(int) Constant 85 + 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 246 183 16 247 11 60 20 + 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 263: 6(int) Constant 87 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 262 183 16 263 11 60 20 + 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 313: 6(int) Constant 98 + 311: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 312 183 16 313 11 78 20 + 321: 181(int) Constant 3 + 322: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 327: 6(int) Constant 100 + 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 326 27 16 327 11 78 20 + 328: TypeMatrix 26(fvec4) 4 + 330: 114(bool) ConstantTrue + 329: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 330 + 331(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 328 + 334: 6(int) Constant 45 + 335: 6(int) Constant 7 + 332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 + 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 + 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 + 340: 6(int) Constant 46 + 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 339 329 16 340 335 11 11 12 + 341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 342 19 16 327 11 18 342 11 12 332 336 337 338 + 343: TypeArray 331(Light) 12 + 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 341 12 + 345(UBO): TypeStruct 26(fvec4) 343 181(int) 181(int) + 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 + 349: 6(int) Constant 52 + 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 348 344 16 349 147 11 11 12 + 352: 6(int) Constant 54 + 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 351 183 16 352 10 11 11 12 + 353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 351 183 16 352 10 11 11 12 + 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 355 19 16 327 11 18 355 11 12 346 347 350 353 + 356: TypePointer Uniform 345(UBO) + 357(ubo): 356(ptr) Variable Uniform + 358: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 359 354 16 327 11 18 359 357(ubo) 147 + 361: TypePointer Uniform 328 + 373: 6(int) Constant 104 + 372: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 25 16 373 11 78 20 + 395: 6(int) Constant 117 + 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 394 70 16 395 11 15 20 + 396: TypeImage 23(float) 2D sampled format:Unknown + 397: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 136 11 16 395 11 18 137 138 12 + 398: TypeSampledImage 396 + 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 11 16 395 11 18 142 138 12 + 400: TypePointer UniformConstant 398 +401(samplerposition): 400(ptr) Variable UniformConstant + 402: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 403 399 16 395 11 18 403 401(samplerposition) 147 + 405: TypePointer Input 30(fvec2) + 406(inUV): 405(ptr) Variable Input + 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 408 31 16 395 11 18 408 406(inUV) 147 + 416: 6(int) Constant 118 + 414: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 415 70 16 416 11 15 20 +417(samplerNormal): 400(ptr) Variable UniformConstant + 418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 419 399 16 416 11 18 419 417(samplerNormal) 147 + 428: 6(int) Constant 119 + 426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 427 27 16 428 11 15 20 +429(samplerAlbedo): 400(ptr) Variable UniformConstant + 430: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 431 399 16 428 11 18 431 429(samplerAlbedo) 147 + 436: TypePointer Uniform 181(int) + 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 451: TypePointer Output 26(fvec4) +452(outFragColor): 451(ptr) Variable Output + 455: 6(int) Constant 125 + 453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 454 27 16 455 11 18 454 452(outFragColor) 147 + 456: 69(fvec3) ConstantComposite 92 92 92 + 461: TypePointer Output 23(float) + 508: 6(int) Constant 145 + 507: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 508 11 15 20 + 511: 23(float) Constant 1036831949 + 517: 6(int) Constant 147 + 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 516 70 16 517 11 15 20 + 523: 6(int) Constant 149 + 522: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 312 183 16 523 11 15 20 + 531: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 536: 6(int) Constant 152 + 534: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 535 70 16 536 11 15 20 + 538: TypePointer Uniform 26(fvec4) + 547: 6(int) Constant 154 + 546: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 547 11 15 20 + 557: 6(int) Constant 158 + 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 556 70 16 557 11 15 20 + 570: 6(int) Constant 161 + 568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 569 25 16 570 11 15 20 + 571: 23(float) Constant 1064781546 + 576: 6(int) Constant 162 + 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 575 25 16 576 11 15 20 + 577: 23(float) Constant 1063781322 + 582: 6(int) Constant 163 + 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 581 25 16 582 11 15 20 + 583: 23(float) Constant 1120403456 + 588: 6(int) Constant 166 + 586: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 587 70 16 588 11 15 20 + 603: 6(int) Constant 169 + 601: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 602 25 16 603 11 15 20 + 611: 6(int) Constant 170 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 25 16 611 11 15 20 + 620: 6(int) Constant 171 + 618: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 619 25 16 620 11 15 20 + 628: 6(int) Constant 174 + 626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 627 25 16 628 11 15 20 + 637: 6(int) Constant 175 + 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 636 70 16 637 11 15 20 + 644: 6(int) Constant 178 + 642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 643 70 16 644 11 15 20 + 653: 6(int) Constant 179 + 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 652 25 16 653 11 15 20 + 662: 6(int) Constant 180 + 660: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 661 70 16 662 11 15 20 + 664: 23(float) Constant 1098907648 + 669: 23(float) Constant 1075838976 + 685: 181(int) Constant 2 + 701: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 13(main): 3 Function None 4 + 22: Label + 392(fragPos): 71(ptr) Variable Function + 413(normal): 71(ptr) Variable Function + 425(albedo): 28(ptr) Variable Function + 457(param): 71(ptr) Variable Function + 458(param): 71(ptr) Variable Function + 506(fragcolor): 71(ptr) Variable Function + 514(N): 71(ptr) Variable Function + 521(i): 211(ptr) Variable Function + 533(L): 71(ptr) Variable Function + 545(dist): 29(ptr) Variable Function + 554(V): 71(ptr) Variable Function +567(lightCosInnerAngle): 29(ptr) Variable Function +573(lightCosOuterAngle): 29(ptr) Variable Function + 579(lightRange): 29(ptr) Variable Function + 585(dir): 71(ptr) Variable Function + 600(cosDir): 29(ptr) Variable Function + 608(spotEffect): 29(ptr) Variable Function +617(heightAttenuation): 29(ptr) Variable Function + 625(NdotL): 29(ptr) Variable Function + 634(diff): 71(ptr) Variable Function + 641(R): 71(ptr) Variable Function + 650(NdotR): 29(ptr) Variable Function + 659(spec): 71(ptr) Variable Function + 705(param): 71(ptr) Variable Function + 707(param): 71(ptr) Variable Function + 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 404: 398 Load 401(samplerposition) + 409: 30(fvec2) Load 406(inUV) + 410: 26(fvec4) ImageSampleImplicitLod 404 409 + 411: 69(fvec3) VectorShuffle 410 410 0 1 2 + Store 392(fragPos) 411 + 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 393 411 47 + 420: 398 Load 417(samplerNormal) + 421: 30(fvec2) Load 406(inUV) + 422: 26(fvec4) ImageSampleImplicitLod 420 421 + 423: 69(fvec3) VectorShuffle 422 422 0 1 2 + Store 413(normal) 423 + 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 414 423 47 + 432: 398 Load 429(samplerAlbedo) + 433: 30(fvec2) Load 406(inUV) + 434: 26(fvec4) ImageSampleImplicitLod 432 433 + Store 425(albedo) 434 + 435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 426 434 47 + 437: 436(ptr) AccessChain 357(ubo) 321 + 438: 181(int) Load 437 + 440: 114(bool) SGreaterThan 438 192 + SelectionMerge 442 None + BranchConditional 440 441 442 + 441: Label + 443: 436(ptr) AccessChain 357(ubo) 321 + 444: 181(int) Load 443 + SelectionMerge 450 None + Switch 444 450 + case 1: 445 + case 2: 446 + case 3: 447 + case 4: 448 + case 5: 449 + 445: Label + Store 457(param) 456 + 459: 69(fvec3) Load 392(fragPos) + Store 458(param) 459 + 460: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 457(param) 458(param) + 462: 461(ptr) AccessChain 452(outFragColor) 11 + 463: 23(float) CompositeExtract 460 0 + Store 462 463 + 464: 461(ptr) AccessChain 452(outFragColor) 19 + 465: 23(float) CompositeExtract 460 1 + Store 464 465 + 466: 461(ptr) AccessChain 452(outFragColor) 21 + 467: 23(float) CompositeExtract 460 2 + Store 466 467 + Branch 450 + 446: Label + 469: 69(fvec3) Load 392(fragPos) + 470: 461(ptr) AccessChain 452(outFragColor) 11 + 471: 23(float) CompositeExtract 469 0 + Store 470 471 + 472: 461(ptr) AccessChain 452(outFragColor) 19 + 473: 23(float) CompositeExtract 469 1 + Store 472 473 + 474: 461(ptr) AccessChain 452(outFragColor) 21 + 475: 23(float) CompositeExtract 469 2 + Store 474 475 + Branch 450 + 447: Label + 477: 69(fvec3) Load 413(normal) + 478: 461(ptr) AccessChain 452(outFragColor) 11 + 479: 23(float) CompositeExtract 477 0 + Store 478 479 + 480: 461(ptr) AccessChain 452(outFragColor) 19 + 481: 23(float) CompositeExtract 477 1 + Store 480 481 + 482: 461(ptr) AccessChain 452(outFragColor) 21 + 483: 23(float) CompositeExtract 477 2 + Store 482 483 + Branch 450 + 448: Label + 485: 26(fvec4) Load 425(albedo) + 486: 69(fvec3) VectorShuffle 485 485 0 1 2 + 487: 461(ptr) AccessChain 452(outFragColor) 11 + 488: 23(float) CompositeExtract 486 0 + Store 487 488 + 489: 461(ptr) AccessChain 452(outFragColor) 19 + 490: 23(float) CompositeExtract 486 1 + Store 489 490 + 491: 461(ptr) AccessChain 452(outFragColor) 21 + 492: 23(float) CompositeExtract 486 2 + Store 491 492 + Branch 450 + 449: Label + 494: 26(fvec4) Load 425(albedo) + 495: 69(fvec3) VectorShuffle 494 494 3 3 3 + 496: 461(ptr) AccessChain 452(outFragColor) 11 + 497: 23(float) CompositeExtract 495 0 + Store 496 497 + 498: 461(ptr) AccessChain 452(outFragColor) 19 + 499: 23(float) CompositeExtract 495 1 + Store 498 499 + 500: 461(ptr) AccessChain 452(outFragColor) 21 + 501: 23(float) CompositeExtract 495 2 + Store 500 501 + Branch 450 + 450: Label + 504: 461(ptr) AccessChain 452(outFragColor) 12 + Store 504 92 + Return + 442: Label + 509: 26(fvec4) Load 425(albedo) + 510: 69(fvec3) VectorShuffle 509 509 0 1 2 + 512: 69(fvec3) VectorTimesScalar 510 511 + Store 506(fragcolor) 512 + 513: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 512 47 + 518: 69(fvec3) Load 413(normal) + 519: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 518 + Store 514(N) 519 + 520: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 519 47 + Store 521(i) 192 + 524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 522 192 47 + Branch 525 + 525: Label + LoopMerge 527 528 None + Branch 529 + 529: Label + 530: 181(int) Load 521(i) + 532: 114(bool) SLessThan 530 321 + BranchConditional 532 526 527 + 526: Label + 537: 181(int) Load 521(i) + 539: 538(ptr) AccessChain 357(ubo) 242 537 192 + 540: 26(fvec4) Load 539 + 541: 69(fvec3) VectorShuffle 540 540 0 1 2 + 542: 69(fvec3) Load 392(fragPos) + 543: 69(fvec3) FSub 541 542 + Store 533(L) 543 + 544: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 534 543 47 + 548: 69(fvec3) Load 533(L) + 549: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 548 + Store 545(dist) 549 + 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 546 549 47 + 551: 69(fvec3) Load 533(L) + 552: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 551 + Store 533(L) 552 + 553: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 534 552 47 + 558: 538(ptr) AccessChain 357(ubo) 192 + 559: 26(fvec4) Load 558 + 560: 69(fvec3) VectorShuffle 559 559 0 1 2 + 561: 69(fvec3) Load 392(fragPos) + 562: 69(fvec3) FSub 560 561 + Store 554(V) 562 + 563: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 555 562 47 + 564: 69(fvec3) Load 554(V) + 565: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 564 + Store 554(V) 565 + 566: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 555 565 47 + Store 567(lightCosInnerAngle) 571 + 572: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 568 571 47 + Store 573(lightCosOuterAngle) 577 + 578: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 574 577 47 + Store 579(lightRange) 583 + 584: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 580 583 47 + 589: 181(int) Load 521(i) + 590: 538(ptr) AccessChain 357(ubo) 242 589 192 + 591: 26(fvec4) Load 590 + 592: 69(fvec3) VectorShuffle 591 591 0 1 2 + 593: 181(int) Load 521(i) + 594: 538(ptr) AccessChain 357(ubo) 242 593 242 + 595: 26(fvec4) Load 594 + 596: 69(fvec3) VectorShuffle 595 595 0 1 2 + 597: 69(fvec3) FSub 592 596 + 598: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 597 + Store 585(dir) 598 + 599: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 586 598 47 + 604: 69(fvec3) Load 533(L) + 605: 69(fvec3) Load 585(dir) + 606: 23(float) Dot 604 605 + Store 600(cosDir) 606 + 607: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 606 47 + 612: 23(float) Load 573(lightCosOuterAngle) + 613: 23(float) Load 567(lightCosInnerAngle) + 614: 23(float) Load 600(cosDir) + 615: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 612 613 614 + Store 608(spotEffect) 615 + 616: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 609 615 47 + 621: 23(float) Load 579(lightRange) + 622: 23(float) Load 545(dist) + 623: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 621 162 622 + Store 617(heightAttenuation) 623 + 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 623 47 + 629: 69(fvec3) Load 514(N) + 630: 69(fvec3) Load 533(L) + 631: 23(float) Dot 629 630 + 632: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 631 + Store 625(NdotL) 632 + 633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 626 632 47 + 638: 23(float) Load 625(NdotL) + 639: 69(fvec3) CompositeConstruct 638 638 638 + Store 634(diff) 639 + 640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 635 639 47 + 645: 69(fvec3) Load 533(L) + 646: 69(fvec3) FNegate 645 + 647: 69(fvec3) Load 514(N) + 648: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 646 647 + Store 641(R) 648 + 649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 642 648 47 + 654: 69(fvec3) Load 641(R) + 655: 69(fvec3) Load 554(V) + 656: 23(float) Dot 654 655 + 657: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 656 + Store 650(NdotR) 657 + 658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 651 657 47 + 663: 23(float) Load 650(NdotR) + 665: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 663 664 + 666: 29(ptr) AccessChain 425(albedo) 12 + 667: 23(float) Load 666 + 668: 23(float) FMul 665 667 + 670: 23(float) FMul 668 669 + 671: 69(fvec3) CompositeConstruct 670 670 670 + Store 659(spec) 671 + 672: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 660 671 47 + 673: 69(fvec3) Load 634(diff) + 674: 69(fvec3) Load 659(spec) + 675: 69(fvec3) FAdd 673 674 + 676: 23(float) Load 608(spotEffect) + 677: 69(fvec3) VectorTimesScalar 675 676 + 678: 23(float) Load 617(heightAttenuation) + 679: 69(fvec3) VectorTimesScalar 677 678 + 680: 23(float) CompositeExtract 679 0 + 681: 23(float) CompositeExtract 679 1 + 682: 23(float) CompositeExtract 679 2 + 683: 69(fvec3) CompositeConstruct 680 681 682 + 684: 181(int) Load 521(i) + 686: 538(ptr) AccessChain 357(ubo) 242 684 685 + 687: 26(fvec4) Load 686 + 688: 69(fvec3) VectorShuffle 687 687 0 1 2 + 689: 69(fvec3) FMul 683 688 + 690: 26(fvec4) Load 425(albedo) + 691: 69(fvec3) VectorShuffle 690 690 0 1 2 + 692: 69(fvec3) FMul 689 691 + 693: 69(fvec3) Load 506(fragcolor) + 694: 69(fvec3) FAdd 693 692 + Store 506(fragcolor) 694 + 695: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 694 47 + Branch 528 + 528: Label + 696: 181(int) Load 521(i) + 697: 181(int) IAdd 696 242 + Store 521(i) 697 + 698: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 522 697 47 + Branch 525 + 527: Label + 699: 436(ptr) AccessChain 357(ubo) 685 + 700: 181(int) Load 699 + 702: 114(bool) SGreaterThan 700 192 + SelectionMerge 704 None + BranchConditional 702 703 704 + 703: Label + 706: 69(fvec3) Load 506(fragcolor) + Store 705(param) 706 + 708: 69(fvec3) Load 392(fragPos) + Store 707(param) 708 + 709: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 705(param) 707(param) + Store 506(fragcolor) 709 + 710: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 709 47 + Branch 704 + 704: Label + 711: 69(fvec3) Load 506(fragcolor) + 712: 23(float) CompositeExtract 711 0 + 713: 23(float) CompositeExtract 711 1 + 714: 23(float) CompositeExtract 711 2 + 715: 26(fvec4) CompositeConstruct 712 713 714 92 + Store 452(outFragColor) 715 + Return + FunctionEnd +38(textureProj(vf4;f1;vf2;): 23(float) Function None 33 + 35(P): 28(ptr) FunctionParameter + 36(layer): 29(ptr) FunctionParameter + 37(offset): 32(ptr) FunctionParameter + 41: Label + 89(shadow): 29(ptr) Variable Function + 94(shadowCoord): 28(ptr) Variable Function + 130(dist): 29(ptr) Variable Function + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 40 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 44 35(P) 47 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 36(layer) 47 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 37(offset) 47 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(textureProj(vf4;f1;vf2;) + Store 89(shadow) 92 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 90 92 47 + 98: 26(fvec4) Load 35(P) + 99: 29(ptr) AccessChain 35(P) 12 + 100: 23(float) Load 99 + 101: 26(fvec4) CompositeConstruct 100 100 100 100 + 102: 26(fvec4) FDiv 98 101 + Store 94(shadowCoord) 102 + 103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 95 102 47 + 104: 26(fvec4) Load 94(shadowCoord) + 105: 30(fvec2) VectorShuffle 104 104 0 1 + 107: 30(fvec2) VectorTimesScalar 105 106 + 108: 30(fvec2) CompositeConstruct 106 106 + 109: 30(fvec2) FAdd 107 108 + 110: 29(ptr) AccessChain 94(shadowCoord) 11 + 111: 23(float) CompositeExtract 109 0 + Store 110 111 + 112: 29(ptr) AccessChain 94(shadowCoord) 19 + 113: 23(float) CompositeExtract 109 1 + Store 112 113 + 115: 29(ptr) AccessChain 94(shadowCoord) 21 + 116: 23(float) Load 115 + 120: 114(bool) FOrdGreaterThan 116 117 + SelectionMerge 122 None + BranchConditional 120 121 122 + 121: Label + 123: 29(ptr) AccessChain 94(shadowCoord) 21 + 124: 23(float) Load 123 + 126: 114(bool) FOrdLessThan 124 92 + Branch 122 + 122: Label + 127: 114(bool) Phi 120 41 126 121 + SelectionMerge 129 None + BranchConditional 127 128 129 + 128: Label + 148: 139 Load 144(samplerShadowMap) + 149: 26(fvec4) Load 94(shadowCoord) + 150: 30(fvec2) VectorShuffle 149 149 0 1 + 151: 30(fvec2) Load 37(offset) + 152: 30(fvec2) FAdd 150 151 + 153: 23(float) Load 36(layer) + 154: 23(float) CompositeExtract 152 0 + 155: 23(float) CompositeExtract 152 1 + 156: 69(fvec3) CompositeConstruct 154 155 153 + 157: 26(fvec4) ImageSampleImplicitLod 148 156 + 158: 23(float) CompositeExtract 157 0 + Store 130(dist) 158 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 131 158 47 + 160: 29(ptr) AccessChain 94(shadowCoord) 12 + 161: 23(float) Load 160 + 164: 114(bool) FOrdGreaterThan 161 162 + SelectionMerge 166 None + BranchConditional 164 165 166 + 165: Label + 167: 23(float) Load 130(dist) + 168: 29(ptr) AccessChain 94(shadowCoord) 21 + 169: 23(float) Load 168 + 171: 114(bool) FOrdLessThan 167 169 + Branch 166 + 166: Label + 172: 114(bool) Phi 164 128 171 165 + SelectionMerge 174 None + BranchConditional 172 173 174 + 173: Label + Store 89(shadow) 175 + 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 90 175 47 + Branch 174 + 174: Label + Branch 129 + 129: Label + 177: 23(float) Load 89(shadow) + ReturnValue 177 + FunctionEnd +58(filterPCF(vf4;f1;): 23(float) Function None 54 + 56(sc): 28(ptr) FunctionParameter + 57(layer): 29(ptr) FunctionParameter + 61: Label + 187(texDim): 186(ptr) Variable Function + 199(scale): 29(ptr) Variable Function + 205(dx): 29(ptr) Variable Function + 217(dy): 29(ptr) Variable Function +228(shadowFactor): 29(ptr) Variable Function + 233(count): 211(ptr) Variable Function + 238(range): 211(ptr) Variable Function + 244(x): 211(ptr) Variable Function + 260(y): 211(ptr) Variable Function + 285(param): 28(ptr) Variable Function + 287(param): 29(ptr) Variable Function + 289(param): 32(ptr) Variable Function + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 60 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 64 56(sc) 47 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 67 57(layer) 47 + 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 60 58(filterPCF(vf4;f1;) + 191: 139 Load 144(samplerShadowMap) + 193: 134 Image 191 + 196: 194(ivec3) ImageQuerySizeLod 193 192 + 197: 184(ivec2) VectorShuffle 196 196 0 1 + Store 187(texDim) 197 + 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 188 197 47 + Store 199(scale) 203 + 204: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 200 203 47 + 209: 23(float) Load 199(scale) + 210: 23(float) FMul 209 92 + 212: 211(ptr) AccessChain 187(texDim) 11 + 213: 181(int) Load 212 + 214: 23(float) ConvertSToF 213 + 215: 23(float) FDiv 210 214 + Store 205(dx) 215 + 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 206 215 47 + 221: 23(float) Load 199(scale) + 222: 23(float) FMul 221 92 + 223: 211(ptr) AccessChain 187(texDim) 19 + 224: 181(int) Load 223 + 225: 23(float) ConvertSToF 224 + 226: 23(float) FDiv 222 225 + Store 217(dy) 226 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 218 226 47 + Store 228(shadowFactor) 162 + 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 162 47 + Store 233(count) 192 + 237: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 234 192 47 + Store 238(range) 242 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 239 242 47 + 248: 181(int) Load 238(range) + 249: 181(int) SNegate 248 + Store 244(x) 249 + 250: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 249 47 + Branch 251 + 251: Label + LoopMerge 253 254 None + Branch 255 + 255: Label + 256: 181(int) Load 244(x) + 257: 181(int) Load 238(range) + 259: 114(bool) SLessThanEqual 256 257 + BranchConditional 259 252 253 + 252: Label + 264: 181(int) Load 238(range) + 265: 181(int) SNegate 264 + Store 260(y) 265 + 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 261 265 47 + Branch 267 + 267: Label + LoopMerge 269 270 None + Branch 271 + 271: Label + 272: 181(int) Load 260(y) + 273: 181(int) Load 238(range) + 275: 114(bool) SLessThanEqual 272 273 + BranchConditional 275 268 269 + 268: Label + 276: 23(float) Load 205(dx) + 277: 181(int) Load 244(x) + 278: 23(float) ConvertSToF 277 + 279: 23(float) FMul 276 278 + 280: 23(float) Load 217(dy) + 281: 181(int) Load 260(y) + 282: 23(float) ConvertSToF 281 + 283: 23(float) FMul 280 282 + 284: 30(fvec2) CompositeConstruct 279 283 + 286: 26(fvec4) Load 56(sc) + Store 285(param) 286 + 288: 23(float) Load 57(layer) + Store 287(param) 288 + Store 289(param) 284 + 290: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 285(param) 287(param) 289(param) + 291: 23(float) Load 228(shadowFactor) + 292: 23(float) FAdd 291 290 + Store 228(shadowFactor) 292 + 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 292 47 + 294: 181(int) Load 233(count) + 295: 181(int) IAdd 294 242 + Store 233(count) 295 + 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 234 295 47 + Branch 270 + 270: Label + 297: 181(int) Load 260(y) + 298: 181(int) IAdd 297 242 + Store 260(y) 298 + 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 261 298 47 + Branch 267 + 269: Label + Branch 254 + 254: Label + 300: 181(int) Load 244(x) + 301: 181(int) IAdd 300 242 + Store 244(x) 301 + 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 301 47 + Branch 251 + 253: Label + 303: 23(float) Load 228(shadowFactor) + 304: 181(int) Load 233(count) + 305: 23(float) ConvertSToF 304 + 306: 23(float) FDiv 303 305 + ReturnValue 306 + FunctionEnd +76(shadow(vf3;vf3;): 69(fvec3) Function None 72 + 74(fragcolor): 71(ptr) FunctionParameter + 75(fragpos): 71(ptr) FunctionParameter + 79: Label + 310(i): 211(ptr) Variable Function + 324(shadowClip): 28(ptr) Variable Function +371(shadowFactor): 29(ptr) Variable Function + 376(param): 28(ptr) Variable Function + 378(param): 29(ptr) Variable Function + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 78 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 + 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 82 74(fragcolor) 47 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 85 75(fragpos) 47 + 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 78 76(shadow(vf3;vf3;) + Store 310(i) 192 + 314: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 311 192 47 + Branch 315 + 315: Label + LoopMerge 317 318 None + Branch 319 + 319: Label + 320: 181(int) Load 310(i) + 323: 114(bool) SLessThan 320 321 + BranchConditional 323 316 317 + 316: Label + 360: 181(int) Load 310(i) + 362: 361(ptr) AccessChain 357(ubo) 242 360 321 + 363: 328 Load 362 + 364: 69(fvec3) Load 75(fragpos) + 365: 23(float) CompositeExtract 364 0 + 366: 23(float) CompositeExtract 364 1 + 367: 23(float) CompositeExtract 364 2 + 368: 26(fvec4) CompositeConstruct 365 366 367 92 + 369: 26(fvec4) MatrixTimesVector 363 368 + Store 324(shadowClip) 369 + 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 325 369 47 + 374: 181(int) Load 310(i) + 375: 23(float) ConvertSToF 374 + 377: 26(fvec4) Load 324(shadowClip) + Store 376(param) 377 + Store 378(param) 375 + 379: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 376(param) 378(param) + Store 371(shadowFactor) 379 + 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 372 379 47 + 381: 23(float) Load 371(shadowFactor) + 382: 69(fvec3) Load 74(fragcolor) + 383: 69(fvec3) VectorTimesScalar 382 381 + Store 74(fragcolor) 383 + 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 82 383 47 + Branch 318 + 318: Label + 385: 181(int) Load 310(i) + 386: 181(int) IAdd 385 242 + Store 310(i) 386 + 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 311 386 47 + Branch 315 + 317: Label + 388: 69(fvec3) Load 74(fragcolor) + ReturnValue 388 + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out new file mode 100644 index 0000000000..8fa99b4e4e --- /dev/null +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -0,0 +1,333 @@ +spv.debuginfo.glsl.geom +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 232 + + Capability Geometry + Capability MultiViewport + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 13 "main" 52 85 104 112 116 145 181 189 206 216 221 225 + ExecutionMode 13 Triangles + ExecutionMode 13 Invocations 2 + ExecutionMode 13 OutputTriangleStrip + ExecutionMode 13 OutputVertices 3 + 8: String "uint" + 14: String "main" + 17: String "" + 25: String "int" + 30: String "i" + 43: String "bool" + 47: String "float" + 54: String "outNormal" + 68: String "projection" + 72: String "modelview" + 75: String "lightPos" + 78: String "UBO" + 82: String "ubo" + 87: String "gl_InvocationID" + 106: String "inNormal" + 114: String "outColor" + 118: String "inColor" + 125: String "pos" + 131: String "gl_Position" + 134: String "gl_PointSize" + 137: String "gl_CullDistance" + 141: String "gl_PerVertex" + 147: String "gl_in" + 155: String "worldPos" + 166: String "lPos" + 183: String "outLightVec" + 191: String "outViewVec" + 218: String "gl_ViewportIndex" + 223: String "gl_PrimitiveID" + 227: String "gl_PrimitiveIDIn" + SourceExtension "GL_ARB_viewport_array" + Name 13 "main" + Name 28 "i" + Name 52 "outNormal" + Name 66 "UBO" + MemberName 66(UBO) 0 "projection" + MemberName 66(UBO) 1 "modelview" + MemberName 66(UBO) 2 "lightPos" + Name 80 "ubo" + Name 85 "gl_InvocationID" + Name 104 "inNormal" + Name 112 "outColor" + Name 116 "inColor" + Name 123 "pos" + Name 129 "gl_PerVertex" + MemberName 129(gl_PerVertex) 0 "gl_Position" + MemberName 129(gl_PerVertex) 1 "gl_PointSize" + MemberName 129(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 129(gl_PerVertex) 3 "gl_CullDistance" + Name 145 "gl_in" + Name 153 "worldPos" + Name 164 "lPos" + Name 181 "outLightVec" + Name 189 "outViewVec" + Name 196 "gl_PerVertex" + MemberName 196(gl_PerVertex) 0 "gl_Position" + MemberName 196(gl_PerVertex) 1 "gl_PointSize" + MemberName 196(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 196(gl_PerVertex) 3 "gl_CullDistance" + Name 206 "" + Name 216 "gl_ViewportIndex" + Name 221 "gl_PrimitiveID" + Name 225 "gl_PrimitiveIDIn" + Decorate 52(outNormal) Location 0 + Decorate 62 ArrayStride 64 + Decorate 64 ArrayStride 64 + MemberDecorate 66(UBO) 0 ColMajor + MemberDecorate 66(UBO) 0 Offset 0 + MemberDecorate 66(UBO) 0 MatrixStride 16 + MemberDecorate 66(UBO) 1 ColMajor + MemberDecorate 66(UBO) 1 Offset 128 + MemberDecorate 66(UBO) 1 MatrixStride 16 + MemberDecorate 66(UBO) 2 Offset 256 + Decorate 66(UBO) Block + Decorate 80(ubo) DescriptorSet 0 + Decorate 80(ubo) Binding 0 + Decorate 85(gl_InvocationID) BuiltIn InvocationId + Decorate 104(inNormal) Location 0 + Decorate 112(outColor) Location 1 + Decorate 116(inColor) Location 1 + MemberDecorate 129(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 129(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 129(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 129(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 129(gl_PerVertex) Block + Decorate 181(outLightVec) Location 3 + Decorate 189(outViewVec) Location 2 + MemberDecorate 196(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 196(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 196(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 196(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 196(gl_PerVertex) Block + Decorate 216(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 221(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 225(gl_PrimitiveIDIn) BuiltIn PrimitiveId + 3: TypeVoid + 4: TypeFunction 3 + 6: TypeInt 32 0 + 9: 6(int) Constant 32 + 10: 6(int) Constant 6 + 11: 6(int) Constant 0 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 12: 6(int) Constant 3 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 19: 6(int) Constant 1 + 20: 6(int) Constant 4 + 21: 6(int) Constant 2 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 24: TypeInt 32 1 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 20 11 + 27: TypePointer Function 24(int) + 31: 6(int) Constant 49 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 30 26 16 31 11 15 20 + 32: 24(int) Constant 0 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 41: 24(int) Constant 3 + 42: TypeBool + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 43 9 21 11 + 46: TypeFloat 32 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 12 11 + 49: TypeVector 46(float) 3 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 12 + 51: TypePointer Output 49(fvec3) + 52(outNormal): 51(ptr) Variable Output + 55: 6(int) Constant 51 + 56: 6(int) Constant 8 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 54 50 16 55 11 18 54 52(outNormal) 56 + 57: TypeVector 46(float) 4 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 20 + 59: TypeMatrix 57(fvec4) 4 + 61: 42(bool) ConstantTrue + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 58 20 61 + 62: TypeArray 59 21 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21 + 64: TypeArray 59 21 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21 + 66(UBO): TypeStruct 62 64 57(fvec4) + 69: 6(int) Constant 34 + 70: 6(int) Constant 7 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 68 63 16 69 70 11 11 12 + 73: 6(int) Constant 35 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 72 65 16 73 70 11 11 12 + 76: 6(int) Constant 36 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 75 58 16 76 70 11 11 12 + 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 78 19 16 55 11 18 78 11 12 67 71 74 + 79: TypePointer Uniform 66(UBO) + 80(ubo): 79(ptr) Variable Uniform + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 77 16 55 11 18 82 80(ubo) 56 + 83: 24(int) Constant 1 + 84: TypePointer Input 24(int) +85(gl_InvocationID): 84(ptr) Variable Input + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 87 26 16 55 11 18 87 85(gl_InvocationID) 56 + 89: TypePointer Uniform 59 + 92: TypeMatrix 49(fvec3) 3 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 50 12 61 + 101: TypeArray 49(fvec3) 12 + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 50 12 + 103: TypePointer Input 101 + 104(inNormal): 103(ptr) Variable Input + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 106 102 16 55 11 18 106 104(inNormal) 56 + 108: TypePointer Input 49(fvec3) + 112(outColor): 51(ptr) Variable Output + 115: 6(int) Constant 52 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 114 50 16 115 11 18 114 112(outColor) 56 + 116(inColor): 103(ptr) Variable Input + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 118 102 16 115 11 18 118 116(inColor) 56 + 122: TypePointer Function 57(fvec4) + 126: 6(int) Constant 54 + 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 58 16 126 11 15 20 + 127: TypeArray 46(float) 19 + 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 48 19 +129(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 127 127 + 132: 6(int) Constant 23 + 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 131 58 16 21 132 11 11 12 + 135: 6(int) Constant 41 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 48 16 21 135 11 11 12 + 138: 6(int) Constant 84 + 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 21 138 11 11 12 + 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 21 138 11 11 12 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 19 16 126 11 18 141 11 12 130 133 136 139 + 142: TypeArray 129(gl_PerVertex) 12 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 140 12 + 144: TypePointer Input 142 + 145(gl_in): 144(ptr) Variable Input + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 147 143 16 126 11 18 147 145(gl_in) 56 + 149: TypePointer Input 57(fvec4) + 156: 6(int) Constant 55 + 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 58 16 156 11 15 20 + 163: TypePointer Function 49(fvec3) + 167: 6(int) Constant 57 + 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 166 50 16 167 11 15 20 + 171: 24(int) Constant 2 + 172: TypePointer Uniform 57(fvec4) +181(outLightVec): 51(ptr) Variable Output + 184: 6(int) Constant 58 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 183 50 16 184 11 18 183 181(outLightVec) 56 + 189(outViewVec): 51(ptr) Variable Output + 192: 6(int) Constant 59 + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 191 50 16 192 11 18 191 189(outViewVec) 56 +196(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 127 127 + 198: 6(int) Constant 215 + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 131 58 16 21 198 11 11 12 + 200: 6(int) Constant 233 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 48 16 21 200 11 11 12 + 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 12 70 11 11 12 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 12 70 11 11 12 + 204: 6(int) Constant 61 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 19 16 204 11 18 141 11 12 197 199 201 202 + 205: TypePointer Output 196(gl_PerVertex) + 206: 205(ptr) Variable Output + 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 203 16 204 11 18 17 206 56 + 213: TypePointer Output 57(fvec4) + 215: TypePointer Output 24(int) +216(gl_ViewportIndex): 215(ptr) Variable Output + 219: 6(int) Constant 64 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 218 26 16 219 11 18 218 216(gl_ViewportIndex) 56 +221(gl_PrimitiveID): 215(ptr) Variable Output + 224: 6(int) Constant 65 + 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 223 26 16 224 11 18 223 221(gl_PrimitiveID) 56 +225(gl_PrimitiveIDIn): 84(ptr) Variable Input + 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 227 26 16 224 11 18 227 225(gl_PrimitiveIDIn) 56 + 13(main): 3 Function None 4 + 22: Label + 28(i): 27(ptr) Variable Function + 123(pos): 122(ptr) Variable Function + 153(worldPos): 122(ptr) Variable Function + 164(lPos): 163(ptr) Variable Function + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + Store 28(i) 32 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 29 32 34 + Branch 35 + 35: Label + LoopMerge 37 38 None + Branch 39 + 39: Label + 40: 24(int) Load 28(i) + 45: 42(bool) SLessThan 40 41 + BranchConditional 45 36 37 + 36: Label + 88: 24(int) Load 85(gl_InvocationID) + 90: 89(ptr) AccessChain 80(ubo) 83 88 + 91: 59 Load 90 + 94: 57(fvec4) CompositeExtract 91 0 + 95: 49(fvec3) VectorShuffle 94 94 0 1 2 + 96: 57(fvec4) CompositeExtract 91 1 + 97: 49(fvec3) VectorShuffle 96 96 0 1 2 + 98: 57(fvec4) CompositeExtract 91 2 + 99: 49(fvec3) VectorShuffle 98 98 0 1 2 + 100: 92 CompositeConstruct 95 97 99 + 107: 24(int) Load 28(i) + 109: 108(ptr) AccessChain 104(inNormal) 107 + 110: 49(fvec3) Load 109 + 111: 49(fvec3) MatrixTimesVector 100 110 + Store 52(outNormal) 111 + 119: 24(int) Load 28(i) + 120: 108(ptr) AccessChain 116(inColor) 119 + 121: 49(fvec3) Load 120 + Store 112(outColor) 121 + 148: 24(int) Load 28(i) + 150: 149(ptr) AccessChain 145(gl_in) 148 32 + 151: 57(fvec4) Load 150 + Store 123(pos) 151 + 152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 124 151 34 + 157: 24(int) Load 85(gl_InvocationID) + 158: 89(ptr) AccessChain 80(ubo) 83 157 + 159: 59 Load 158 + 160: 57(fvec4) Load 123(pos) + 161: 57(fvec4) MatrixTimesVector 159 160 + Store 153(worldPos) 161 + 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 154 161 34 + 168: 24(int) Load 85(gl_InvocationID) + 169: 89(ptr) AccessChain 80(ubo) 83 168 + 170: 59 Load 169 + 173: 172(ptr) AccessChain 80(ubo) 171 + 174: 57(fvec4) Load 173 + 175: 57(fvec4) MatrixTimesVector 170 174 + 176: 46(float) CompositeExtract 175 0 + 177: 46(float) CompositeExtract 175 1 + 178: 46(float) CompositeExtract 175 2 + 179: 49(fvec3) CompositeConstruct 176 177 178 + Store 164(lPos) 179 + 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 165 179 34 + 185: 49(fvec3) Load 164(lPos) + 186: 57(fvec4) Load 153(worldPos) + 187: 49(fvec3) VectorShuffle 186 186 0 1 2 + 188: 49(fvec3) FSub 185 187 + Store 181(outLightVec) 188 + 193: 57(fvec4) Load 153(worldPos) + 194: 49(fvec3) VectorShuffle 193 193 0 1 2 + 195: 49(fvec3) FNegate 194 + Store 189(outViewVec) 195 + 208: 24(int) Load 85(gl_InvocationID) + 209: 89(ptr) AccessChain 80(ubo) 32 208 + 210: 59 Load 209 + 211: 57(fvec4) Load 153(worldPos) + 212: 57(fvec4) MatrixTimesVector 210 211 + 214: 213(ptr) AccessChain 206 32 + Store 214 212 + 220: 24(int) Load 85(gl_InvocationID) + Store 216(gl_ViewportIndex) 220 + 228: 24(int) Load 225(gl_PrimitiveIDIn) + Store 221(gl_PrimitiveID) 228 + EmitVertex + Branch 38 + 38: Label + 229: 24(int) Load 28(i) + 230: 24(int) IAdd 229 83 + Store 28(i) 230 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 29 230 34 + Branch 35 + 37: Label + EndPrimitive + Return + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out new file mode 100644 index 0000000000..89e6cf3081 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -0,0 +1,622 @@ +spv.debuginfo.glsl.tesc +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 460 + + Capability Tessellation + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationControl 13 "main" 231 235 261 328 338 418 430 438 450 + ExecutionMode 13 OutputVertices 4 + 8: String "uint" + 14: String "main" + 17: String "" + 24: String "float" + 34: String "screenSpaceTessFactor" + 40: String "p0" + 44: String "p1" + 47: String "bool" + 52: String "frustumCheck" + 58: String "midPoint" + 69: String "radius" + 79: String "v0" + 90: String "modelview" + 95: String "lightPos" + 98: String "frustumPlanes" + 100: String "tessellatedEdgeSize" + 105: String "viewportDim" + 109: String "UBO" + 113: String "ubo" + 115: String "int" + 126: String "clip0" + 146: String "clip1" + 211: String "pos" + 217: String "gl_Position" + 220: String "gl_PointSize" + 223: String "gl_CullDistance" + 227: String "gl_PerVertex" + 233: String "gl_in" + 237: String "gl_InvocationID" + 245: String "type.2d.image" + 247: String "@type.2d.image" + 251: String "type.sampled.image" + 252: String "@type.sampled.image" + 256: String "samplerHeight" + 263: String "inUV" + 280: String "i" + 330: String "gl_TessLevelInner" + 340: String "gl_TessLevelOuter" + 420: String "gl_out" + 432: String "outNormal" + 440: String "inNormal" + 452: String "outUV" + Name 13 "main" + Name 33 "screenSpaceTessFactor(vf4;vf4;" + Name 31 "p0" + Name 32 "p1" + Name 51 "frustumCheck(" + Name 56 "midPoint" + Name 67 "radius" + Name 77 "v0" + Name 88 "UBO" + MemberName 88(UBO) 0 "projection" + MemberName 88(UBO) 1 "modelview" + MemberName 88(UBO) 2 "lightPos" + MemberName 88(UBO) 3 "frustumPlanes" + MemberName 88(UBO) 4 "displacementFactor" + MemberName 88(UBO) 5 "tessellationFactor" + MemberName 88(UBO) 6 "viewportDim" + MemberName 88(UBO) 7 "tessellatedEdgeSize" + Name 111 "ubo" + Name 124 "clip0" + Name 144 "clip1" + Name 209 "pos" + Name 215 "gl_PerVertex" + MemberName 215(gl_PerVertex) 0 "gl_Position" + MemberName 215(gl_PerVertex) 1 "gl_PointSize" + MemberName 215(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 215(gl_PerVertex) 3 "gl_CullDistance" + Name 231 "gl_in" + Name 235 "gl_InvocationID" + Name 254 "samplerHeight" + Name 261 "inUV" + Name 278 "i" + Name 328 "gl_TessLevelInner" + Name 338 "gl_TessLevelOuter" + Name 354 "param" + Name 357 "param" + Name 362 "param" + Name 365 "param" + Name 370 "param" + Name 373 "param" + Name 378 "param" + Name 381 "param" + Name 405 "gl_PerVertex" + MemberName 405(gl_PerVertex) 0 "gl_Position" + MemberName 405(gl_PerVertex) 1 "gl_PointSize" + MemberName 405(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 405(gl_PerVertex) 3 "gl_CullDistance" + Name 418 "gl_out" + Name 430 "outNormal" + Name 438 "inNormal" + Name 450 "outUV" + Decorate 84 ArrayStride 16 + MemberDecorate 88(UBO) 0 ColMajor + MemberDecorate 88(UBO) 0 Offset 0 + MemberDecorate 88(UBO) 0 MatrixStride 16 + MemberDecorate 88(UBO) 1 ColMajor + MemberDecorate 88(UBO) 1 Offset 64 + MemberDecorate 88(UBO) 1 MatrixStride 16 + MemberDecorate 88(UBO) 2 Offset 128 + MemberDecorate 88(UBO) 3 Offset 144 + MemberDecorate 88(UBO) 4 Offset 240 + MemberDecorate 88(UBO) 5 Offset 244 + MemberDecorate 88(UBO) 6 Offset 248 + MemberDecorate 88(UBO) 7 Offset 256 + Decorate 88(UBO) Block + Decorate 111(ubo) DescriptorSet 0 + Decorate 111(ubo) Binding 0 + MemberDecorate 215(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 215(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 215(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 215(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 215(gl_PerVertex) Block + Decorate 235(gl_InvocationID) BuiltIn InvocationId + Decorate 254(samplerHeight) DescriptorSet 0 + Decorate 254(samplerHeight) Binding 1 + Decorate 261(inUV) Location 1 + Decorate 328(gl_TessLevelInner) Patch + Decorate 328(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 338(gl_TessLevelOuter) Patch + Decorate 338(gl_TessLevelOuter) BuiltIn TessLevelOuter + MemberDecorate 405(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 405(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 405(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 405(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 405(gl_PerVertex) Block + Decorate 430(outNormal) Location 0 + Decorate 438(inNormal) Location 0 + Decorate 450(outUV) Location 1 + 3: TypeVoid + 4: TypeFunction 3 + 6: TypeInt 32 0 + 9: 6(int) Constant 32 + 10: 6(int) Constant 6 + 11: 6(int) Constant 0 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 12: 6(int) Constant 3 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 19: 6(int) Constant 1 + 20: 6(int) Constant 4 + 21: 6(int) Constant 2 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 23: TypeFloat 32 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 26: TypeVector 23(float) 4 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 28: TypePointer Function 26(fvec4) + 29: TypeFunction 23(float) 28(ptr) 28(ptr) + 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 27 + 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 34 30 16 11 11 18 34 12 11 + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 40 27 16 11 11 35 20 19 + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 44 27 16 11 11 35 20 21 + 46: TypeBool + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 49: TypeFunction 46(bool) + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 48 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 52 50 16 11 11 18 52 12 11 + 59: 6(int) Constant 54 + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 58 27 16 59 11 35 20 + 60: 23(float) Constant 1056964608 + 66: TypePointer Function 23(float) + 70: 6(int) Constant 56 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 69 25 16 70 11 35 20 + 74: 23(float) Constant 1073741824 + 80: 6(int) Constant 59 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 79 27 16 80 11 35 20 + 81: TypeMatrix 26(fvec4) 4 + 83: 46(bool) ConstantTrue + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 83 + 84: TypeArray 26(fvec4) 10 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 27 10 + 86: TypeVector 23(float) 2 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 + 88(UBO): TypeStruct 81 81 26(fvec4) 84 23(float) 23(float) 86(fvec2) 23(float) + 91: 6(int) Constant 30 + 92: 6(int) Constant 7 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 82 16 91 92 11 11 12 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 82 16 91 92 11 11 12 + 96: 6(int) Constant 31 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 27 16 96 92 11 11 12 + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 98 85 16 9 92 11 11 12 + 101: 6(int) Constant 36 + 102: 6(int) Constant 8 + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12 + 103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12 + 106: 6(int) Constant 35 + 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 105 87 16 106 92 11 11 12 + 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 109 19 16 80 11 18 109 11 12 89 93 94 97 99 103 104 107 + 110: TypePointer Uniform 88(UBO) + 111(ubo): 110(ptr) Variable Uniform + 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 113 108 16 80 11 18 113 111(ubo) 102 + 114: TypeInt 32 1 + 116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 115 9 20 11 + 117: 114(int) Constant 1 + 118: TypePointer Uniform 81 + 127: 6(int) Constant 62 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 126 27 16 127 11 35 20 + 128: 114(int) Constant 0 + 133: TypeVector 23(float) 3 + 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 135: 23(float) Constant 0 + 136: 133(fvec3) ConstantComposite 135 135 135 + 147: 6(int) Constant 63 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 146 27 16 147 11 35 20 + 171: 114(int) Constant 6 + 172: TypePointer Uniform 86(fvec2) + 194: 114(int) Constant 7 + 195: TypePointer Uniform 23(float) + 199: 114(int) Constant 5 + 203: 23(float) Constant 1065353216 + 204: 23(float) Constant 1115684864 + 212: 6(int) Constant 85 + 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 211 27 16 212 11 53 20 + 213: TypeArray 23(float) 19 + 214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 19 +215(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 213 213 + 218: 6(int) Constant 1756 + 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 217 27 16 19 218 11 11 12 + 221: 6(int) Constant 1774 + 219: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 220 25 16 19 221 11 11 12 + 224: 6(int) Constant 1817 + 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 224 11 11 12 + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 224 11 11 12 + 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 227 19 16 212 11 18 227 11 12 216 219 222 225 + 228: TypeArray 215(gl_PerVertex) 9 + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 226 9 + 230: TypePointer Input 228 + 231(gl_in): 230(ptr) Variable Input + 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 233 229 16 212 11 18 233 231(gl_in) 102 + 234: TypePointer Input 114(int) +235(gl_InvocationID): 234(ptr) Variable Input + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 237 116 16 212 11 18 237 235(gl_InvocationID) 102 + 239: TypePointer Input 26(fvec4) + 243: TypeImage 23(float) 2D sampled format:Unknown + 246: 6(int) Constant 86 + 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 245 11 16 246 11 18 247 248 12 + 249: TypeSampledImage 243 + 250: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 251 11 16 246 11 18 252 248 12 + 253: TypePointer UniformConstant 249 +254(samplerHeight): 253(ptr) Variable UniformConstant + 255: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 256 250 16 246 11 18 256 254(samplerHeight) 102 + 258: TypeArray 86(fvec2) 9 + 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 87 9 + 260: TypePointer Input 258 + 261(inUV): 260(ptr) Variable Input + 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 259 16 246 11 18 263 261(inUV) 102 + 264: TypePointer Input 86(fvec2) + 269: 114(int) Constant 4 + 277: TypePointer Function 114(int) + 281: 6(int) Constant 89 + 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 280 116 16 281 11 53 20 + 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 292: 114(int) Constant 3 + 294: TypePointer Uniform 26(fvec4) + 298: 23(float) Constant 1090519040 + 300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 305: 46(bool) ConstantFalse + 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 321: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 325: TypeArray 23(float) 21 + 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 21 + 327: TypePointer Output 325 +328(gl_TessLevelInner): 327(ptr) Variable Output + 331: 6(int) Constant 104 + 329: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 330 326 16 331 11 18 330 328(gl_TessLevelInner) 102 + 332: TypePointer Output 23(float) + 335: TypeArray 23(float) 20 + 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 20 + 337: TypePointer Output 335 +338(gl_TessLevelOuter): 337(ptr) Variable Output + 341: 6(int) Constant 106 + 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 340 336 16 341 11 18 340 338(gl_TessLevelOuter) 102 + 344: 114(int) Constant 2 + 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 +405(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 213 213 + 407: 6(int) Constant 110 + 406: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 217 27 16 19 407 11 11 12 + 409: 6(int) Constant 128 + 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 220 25 16 19 409 11 11 12 + 411: 6(int) Constant 171 + 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 411 11 11 12 + 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 411 11 11 12 + 414: 6(int) Constant 137 + 413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 227 19 16 414 11 18 227 11 12 406 408 410 412 + 415: TypeArray 405(gl_PerVertex) 20 + 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 413 20 + 417: TypePointer Output 415 + 418(gl_out): 417(ptr) Variable Output + 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 420 416 16 414 11 18 420 418(gl_out) 102 + 425: TypePointer Output 26(fvec4) + 427: TypeArray 133(fvec3) 20 + 428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 134 20 + 429: TypePointer Output 427 + 430(outNormal): 429(ptr) Variable Output + 433: 6(int) Constant 138 + 431: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 432 428 16 433 11 18 432 430(outNormal) 102 + 435: TypeArray 133(fvec3) 9 + 436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 134 9 + 437: TypePointer Input 435 + 438(inNormal): 437(ptr) Variable Input + 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 440 436 16 433 11 18 440 438(inNormal) 102 + 442: TypePointer Input 133(fvec3) + 445: TypePointer Output 133(fvec3) + 447: TypeArray 86(fvec2) 20 + 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 87 20 + 449: TypePointer Output 447 + 450(outUV): 449(ptr) Variable Output + 453: 6(int) Constant 139 + 451: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 452 448 16 453 11 18 452 450(outUV) 102 + 458: TypePointer Output 86(fvec2) + 13(main): 3 Function None 4 + 22: Label + 354(param): 28(ptr) Variable Function + 357(param): 28(ptr) Variable Function + 362(param): 28(ptr) Variable Function + 365(param): 28(ptr) Variable Function + 370(param): 28(ptr) Variable Function + 373(param): 28(ptr) Variable Function + 378(param): 28(ptr) Variable Function + 381(param): 28(ptr) Variable Function + 313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 314: 114(int) Load 235(gl_InvocationID) + 316: 46(bool) IEqual 314 128 + SelectionMerge 318 None + BranchConditional 316 317 318 + 317: Label + 319: 46(bool) FunctionCall 51(frustumCheck() + 322: 46(bool) LogicalNot 319 + SelectionMerge 324 None + BranchConditional 322 323 347 + 323: Label + 333: 332(ptr) AccessChain 328(gl_TessLevelInner) 128 + Store 333 135 + 334: 332(ptr) AccessChain 328(gl_TessLevelInner) 117 + Store 334 135 + 342: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 + Store 342 135 + 343: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 + Store 343 135 + 345: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 + Store 345 135 + 346: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 + Store 346 135 + Branch 324 + 347: Label + 348: 195(ptr) AccessChain 111(ubo) 199 + 349: 23(float) Load 348 + 351: 46(bool) FOrdGreaterThan 349 135 + SelectionMerge 353 None + BranchConditional 351 352 398 + 352: Label + 355: 239(ptr) AccessChain 231(gl_in) 292 128 + 356: 26(fvec4) Load 355 + Store 354(param) 356 + 358: 239(ptr) AccessChain 231(gl_in) 128 128 + 359: 26(fvec4) Load 358 + Store 357(param) 359 + 360: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 354(param) 357(param) + 361: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 + Store 361 360 + 363: 239(ptr) AccessChain 231(gl_in) 128 128 + 364: 26(fvec4) Load 363 + Store 362(param) 364 + 366: 239(ptr) AccessChain 231(gl_in) 117 128 + 367: 26(fvec4) Load 366 + Store 365(param) 367 + 368: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 362(param) 365(param) + 369: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 + Store 369 368 + 371: 239(ptr) AccessChain 231(gl_in) 117 128 + 372: 26(fvec4) Load 371 + Store 370(param) 372 + 374: 239(ptr) AccessChain 231(gl_in) 344 128 + 375: 26(fvec4) Load 374 + Store 373(param) 375 + 376: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 370(param) 373(param) + 377: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 + Store 377 376 + 379: 239(ptr) AccessChain 231(gl_in) 344 128 + 380: 26(fvec4) Load 379 + Store 378(param) 380 + 382: 239(ptr) AccessChain 231(gl_in) 292 128 + 383: 26(fvec4) Load 382 + Store 381(param) 383 + 384: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 378(param) 381(param) + 385: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 + Store 385 384 + 386: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 + 387: 23(float) Load 386 + 388: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 + 389: 23(float) Load 388 + 390: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 387 389 60 + 391: 332(ptr) AccessChain 328(gl_TessLevelInner) 128 + Store 391 390 + 392: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 + 393: 23(float) Load 392 + 394: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 + 395: 23(float) Load 394 + 396: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 393 395 60 + 397: 332(ptr) AccessChain 328(gl_TessLevelInner) 117 + Store 397 396 + Branch 353 + 398: Label + 399: 332(ptr) AccessChain 328(gl_TessLevelInner) 128 + Store 399 203 + 400: 332(ptr) AccessChain 328(gl_TessLevelInner) 117 + Store 400 203 + 401: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 + Store 401 203 + 402: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 + Store 402 203 + 403: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 + Store 403 203 + 404: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 + Store 404 203 + Branch 353 + 353: Label + Branch 324 + 324: Label + Branch 318 + 318: Label + 421: 114(int) Load 235(gl_InvocationID) + 422: 114(int) Load 235(gl_InvocationID) + 423: 239(ptr) AccessChain 231(gl_in) 422 128 + 424: 26(fvec4) Load 423 + 426: 425(ptr) AccessChain 418(gl_out) 421 128 + Store 426 424 + 434: 114(int) Load 235(gl_InvocationID) + 441: 114(int) Load 235(gl_InvocationID) + 443: 442(ptr) AccessChain 438(inNormal) 441 + 444: 133(fvec3) Load 443 + 446: 445(ptr) AccessChain 430(outNormal) 434 + Store 446 444 + 454: 114(int) Load 235(gl_InvocationID) + 455: 114(int) Load 235(gl_InvocationID) + 456: 264(ptr) AccessChain 261(inUV) 455 + 457: 86(fvec2) Load 456 + 459: 458(ptr) AccessChain 450(outUV) 454 + Store 459 457 + Return + FunctionEnd +33(screenSpaceTessFactor(vf4;vf4;): 23(float) Function None 29 + 31(p0): 28(ptr) FunctionParameter + 32(p1): 28(ptr) FunctionParameter + 36: Label + 56(midPoint): 28(ptr) Variable Function + 67(radius): 66(ptr) Variable Function + 77(v0): 28(ptr) Variable Function + 124(clip0): 28(ptr) Variable Function + 144(clip1): 28(ptr) Variable Function + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 35 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 39 31(p0) 42 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 43 32(p1) 42 + 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 35 33(screenSpaceTessFactor(vf4;vf4;) + 61: 26(fvec4) Load 31(p0) + 62: 26(fvec4) Load 32(p1) + 63: 26(fvec4) FAdd 61 62 + 64: 26(fvec4) VectorTimesScalar 63 60 + Store 56(midPoint) 64 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 57 64 42 + 71: 26(fvec4) Load 31(p0) + 72: 26(fvec4) Load 32(p1) + 73: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 71 72 + 75: 23(float) FDiv 73 74 + Store 67(radius) 75 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 68 75 42 + 119: 118(ptr) AccessChain 111(ubo) 117 + 120: 81 Load 119 + 121: 26(fvec4) Load 56(midPoint) + 122: 26(fvec4) MatrixTimesVector 120 121 + Store 77(v0) 122 + 123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 78 122 42 + 129: 118(ptr) AccessChain 111(ubo) 128 + 130: 81 Load 129 + 131: 26(fvec4) Load 77(v0) + 132: 23(float) Load 67(radius) + 137: 23(float) CompositeExtract 136 0 + 138: 23(float) CompositeExtract 136 1 + 139: 23(float) CompositeExtract 136 2 + 140: 26(fvec4) CompositeConstruct 132 137 138 139 + 141: 26(fvec4) FSub 131 140 + 142: 26(fvec4) MatrixTimesVector 130 141 + Store 124(clip0) 142 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 125 142 42 + 148: 118(ptr) AccessChain 111(ubo) 128 + 149: 81 Load 148 + 150: 26(fvec4) Load 77(v0) + 151: 23(float) Load 67(radius) + 152: 23(float) CompositeExtract 136 0 + 153: 23(float) CompositeExtract 136 1 + 154: 23(float) CompositeExtract 136 2 + 155: 26(fvec4) CompositeConstruct 151 152 153 154 + 156: 26(fvec4) FAdd 150 155 + 157: 26(fvec4) MatrixTimesVector 149 156 + Store 144(clip1) 157 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 145 157 42 + 159: 66(ptr) AccessChain 124(clip0) 12 + 160: 23(float) Load 159 + 161: 26(fvec4) Load 124(clip0) + 162: 26(fvec4) CompositeConstruct 160 160 160 160 + 163: 26(fvec4) FDiv 161 162 + Store 124(clip0) 163 + 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 125 163 42 + 165: 66(ptr) AccessChain 144(clip1) 12 + 166: 23(float) Load 165 + 167: 26(fvec4) Load 144(clip1) + 168: 26(fvec4) CompositeConstruct 166 166 166 166 + 169: 26(fvec4) FDiv 167 168 + Store 144(clip1) 169 + 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 145 169 42 + 173: 172(ptr) AccessChain 111(ubo) 171 + 174: 86(fvec2) Load 173 + 175: 26(fvec4) Load 124(clip0) + 176: 86(fvec2) VectorShuffle 175 175 0 1 + 177: 86(fvec2) FMul 176 174 + 178: 66(ptr) AccessChain 124(clip0) 11 + 179: 23(float) CompositeExtract 177 0 + Store 178 179 + 180: 66(ptr) AccessChain 124(clip0) 19 + 181: 23(float) CompositeExtract 177 1 + Store 180 181 + 182: 172(ptr) AccessChain 111(ubo) 171 + 183: 86(fvec2) Load 182 + 184: 26(fvec4) Load 144(clip1) + 185: 86(fvec2) VectorShuffle 184 184 0 1 + 186: 86(fvec2) FMul 185 183 + 187: 66(ptr) AccessChain 144(clip1) 11 + 188: 23(float) CompositeExtract 186 0 + Store 187 188 + 189: 66(ptr) AccessChain 144(clip1) 19 + 190: 23(float) CompositeExtract 186 1 + Store 189 190 + 191: 26(fvec4) Load 124(clip0) + 192: 26(fvec4) Load 144(clip1) + 193: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 191 192 + 196: 195(ptr) AccessChain 111(ubo) 194 + 197: 23(float) Load 196 + 198: 23(float) FDiv 193 197 + 200: 195(ptr) AccessChain 111(ubo) 199 + 201: 23(float) Load 200 + 202: 23(float) FMul 198 201 + 205: 23(float) ExtInst 2(GLSL.std.450) 43(FClamp) 202 203 204 + ReturnValue 205 + FunctionEnd +51(frustumCheck(): 46(bool) Function None 49 + 54: Label + 209(pos): 28(ptr) Variable Function + 278(i): 277(ptr) Variable Function + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 53 51(frustumCheck() + 238: 114(int) Load 235(gl_InvocationID) + 240: 239(ptr) AccessChain 231(gl_in) 238 128 + 241: 26(fvec4) Load 240 + Store 209(pos) 241 + 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 210 241 42 + 257: 249 Load 254(samplerHeight) + 265: 264(ptr) AccessChain 261(inUV) 128 + 266: 86(fvec2) Load 265 + 267: 26(fvec4) ImageSampleExplicitLod 257 266 Lod 135 + 268: 23(float) CompositeExtract 267 0 + 270: 195(ptr) AccessChain 111(ubo) 269 + 271: 23(float) Load 270 + 272: 23(float) FMul 268 271 + 273: 66(ptr) AccessChain 209(pos) 19 + 274: 23(float) Load 273 + 275: 23(float) FSub 274 272 + 276: 66(ptr) AccessChain 209(pos) 19 + Store 276 275 + Store 278(i) 128 + 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 279 128 42 + Branch 283 + 283: Label + LoopMerge 285 286 None + Branch 287 + 287: Label + 288: 114(int) Load 278(i) + 290: 46(bool) SLessThan 288 171 + BranchConditional 290 284 285 + 284: Label + 291: 26(fvec4) Load 209(pos) + 293: 114(int) Load 278(i) + 295: 294(ptr) AccessChain 111(ubo) 292 293 + 296: 26(fvec4) Load 295 + 297: 23(float) Dot 291 296 + 299: 23(float) FAdd 297 298 + 301: 46(bool) FOrdLessThan 299 135 + SelectionMerge 303 None + BranchConditional 301 302 303 + 302: Label + ReturnValue 305 + 303: Label + Branch 286 + 286: Label + 307: 114(int) Load 278(i) + 308: 114(int) IAdd 307 117 + Store 278(i) 308 + 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 279 308 42 + Branch 283 + 285: Label + ReturnValue 83 + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out new file mode 100644 index 0000000000..e2b0e3ee11 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -0,0 +1,421 @@ +spv.debuginfo.glsl.tese +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 315 + + Capability Tessellation + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationEvaluation 13 "main" 37 54 80 98 124 159 267 279 286 297 303 + ExecutionMode 13 Quads + ExecutionMode 13 SpacingEqual + ExecutionMode 13 VertexOrderCw + 8: String "uint" + 14: String "main" + 17: String "" + 25: String "float" + 32: String "uv1" + 39: String "inUV" + 42: String "int" + 56: String "gl_TessCoord" + 66: String "uv2" + 82: String "outUV" + 93: String "n1" + 100: String "inNormal" + 112: String "n2" + 126: String "outNormal" + 139: String "pos1" + 145: String "gl_Position" + 148: String "gl_PointSize" + 151: String "gl_CullDistance" + 155: String "gl_PerVertex" + 161: String "gl_in" + 174: String "pos2" + 187: String "pos" + 198: String "type.2d.image" + 200: String "@type.2d.image" + 204: String "type.sampled.image" + 205: String "@type.sampled.image" + 209: String "displacementMap" + 223: String "modelview" + 228: String "lightPos" + 231: String "frustumPlanes" + 233: String "tessellatedEdgeSize" + 237: String "viewportDim" + 241: String "UBO" + 245: String "ubo" + 281: String "outViewVec" + 288: String "outLightVec" + 299: String "outWorldPos" + 305: String "outEyePos" + Name 13 "main" + Name 30 "uv1" + Name 37 "inUV" + Name 54 "gl_TessCoord" + Name 64 "uv2" + Name 80 "outUV" + Name 91 "n1" + Name 98 "inNormal" + Name 110 "n2" + Name 124 "outNormal" + Name 137 "pos1" + Name 143 "gl_PerVertex" + MemberName 143(gl_PerVertex) 0 "gl_Position" + MemberName 143(gl_PerVertex) 1 "gl_PointSize" + MemberName 143(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 143(gl_PerVertex) 3 "gl_CullDistance" + Name 159 "gl_in" + Name 172 "pos2" + Name 185 "pos" + Name 207 "displacementMap" + Name 221 "UBO" + MemberName 221(UBO) 0 "projection" + MemberName 221(UBO) 1 "modelview" + MemberName 221(UBO) 2 "lightPos" + MemberName 221(UBO) 3 "frustumPlanes" + MemberName 221(UBO) 4 "displacementFactor" + MemberName 221(UBO) 5 "tessellationFactor" + MemberName 221(UBO) 6 "viewportDim" + MemberName 221(UBO) 7 "tessellatedEdgeSize" + Name 243 "ubo" + Name 256 "gl_PerVertex" + MemberName 256(gl_PerVertex) 0 "gl_Position" + MemberName 256(gl_PerVertex) 1 "gl_PointSize" + MemberName 256(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 256(gl_PerVertex) 3 "gl_CullDistance" + Name 267 "" + Name 279 "outViewVec" + Name 286 "outLightVec" + Name 297 "outWorldPos" + Name 303 "outEyePos" + Decorate 37(inUV) Location 1 + Decorate 54(gl_TessCoord) BuiltIn TessCoord + Decorate 80(outUV) Location 1 + Decorate 98(inNormal) Location 0 + Decorate 124(outNormal) Location 0 + MemberDecorate 143(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 143(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 143(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 143(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 143(gl_PerVertex) Block + Decorate 207(displacementMap) DescriptorSet 0 + Decorate 207(displacementMap) Binding 1 + Decorate 219 ArrayStride 16 + MemberDecorate 221(UBO) 0 ColMajor + MemberDecorate 221(UBO) 0 Offset 0 + MemberDecorate 221(UBO) 0 MatrixStride 16 + MemberDecorate 221(UBO) 1 ColMajor + MemberDecorate 221(UBO) 1 Offset 64 + MemberDecorate 221(UBO) 1 MatrixStride 16 + MemberDecorate 221(UBO) 2 Offset 128 + MemberDecorate 221(UBO) 3 Offset 144 + MemberDecorate 221(UBO) 4 Offset 240 + MemberDecorate 221(UBO) 5 Offset 244 + MemberDecorate 221(UBO) 6 Offset 248 + MemberDecorate 221(UBO) 7 Offset 256 + Decorate 221(UBO) Block + Decorate 243(ubo) DescriptorSet 0 + Decorate 243(ubo) Binding 0 + MemberDecorate 256(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 256(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 256(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 256(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 256(gl_PerVertex) Block + Decorate 279(outViewVec) Location 2 + Decorate 286(outLightVec) Location 3 + Decorate 297(outWorldPos) Location 5 + Decorate 303(outEyePos) Location 4 + 3: TypeVoid + 4: TypeFunction 3 + 6: TypeInt 32 0 + 9: 6(int) Constant 32 + 10: 6(int) Constant 6 + 11: 6(int) Constant 0 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 12: 6(int) Constant 3 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 19: 6(int) Constant 1 + 20: 6(int) Constant 4 + 21: 6(int) Constant 2 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 24: TypeFloat 32 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11 + 27: TypeVector 24(float) 2 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21 + 29: TypePointer Function 27(fvec2) + 33: 6(int) Constant 56 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 32 28 16 33 11 15 20 + 34: TypeArray 27(fvec2) 9 + 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 28 9 + 36: TypePointer Input 34 + 37(inUV): 36(ptr) Variable Input + 40: 6(int) Constant 8 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 39 35 16 33 11 18 39 37(inUV) 40 + 41: TypeInt 32 1 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 42 9 20 11 + 44: 41(int) Constant 0 + 45: TypePointer Input 27(fvec2) + 48: 41(int) Constant 1 + 51: TypeVector 24(float) 3 + 52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12 + 53: TypePointer Input 51(fvec3) +54(gl_TessCoord): 53(ptr) Variable Input + 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 56 52 16 33 11 18 56 54(gl_TessCoord) 40 + 57: TypePointer Input 24(float) + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 67: 6(int) Constant 57 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 28 16 67 11 15 20 + 68: 41(int) Constant 3 + 71: 41(int) Constant 2 + 79: TypePointer Output 27(fvec2) + 80(outUV): 79(ptr) Variable Output + 83: 6(int) Constant 58 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 28 16 83 11 18 82 80(outUV) 40 + 90: TypePointer Function 51(fvec3) + 94: 6(int) Constant 60 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 93 52 16 94 11 15 20 + 95: TypeArray 51(fvec3) 9 + 96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 52 9 + 97: TypePointer Input 95 + 98(inNormal): 97(ptr) Variable Input + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 100 96 16 94 11 18 100 98(inNormal) 40 + 113: 6(int) Constant 61 + 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 112 52 16 113 11 15 20 + 123: TypePointer Output 51(fvec3) + 124(outNormal): 123(ptr) Variable Output + 127: 6(int) Constant 62 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 126 52 16 127 11 18 126 124(outNormal) 40 + 134: TypeVector 24(float) 4 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20 + 136: TypePointer Function 134(fvec4) + 140: 6(int) Constant 65 + 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 135 16 140 11 15 20 + 141: TypeArray 24(float) 19 + 142: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 +143(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 141 141 + 146: 6(int) Constant 1756 + 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 145 135 16 19 146 11 11 12 + 149: 6(int) Constant 1774 + 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 148 26 16 19 149 11 11 12 + 152: 6(int) Constant 1817 + 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 152 11 11 12 + 153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 152 11 11 12 + 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 155 19 16 140 11 18 155 11 12 144 147 150 153 + 156: TypeArray 143(gl_PerVertex) 9 + 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 154 9 + 158: TypePointer Input 156 + 159(gl_in): 158(ptr) Variable Input + 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 161 157 16 140 11 18 161 159(gl_in) 40 + 162: TypePointer Input 134(fvec4) + 175: 6(int) Constant 66 + 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 174 135 16 175 11 15 20 + 188: 6(int) Constant 67 + 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 187 135 16 188 11 15 20 + 196: TypeImage 24(float) 2D sampled format:Unknown + 199: 6(int) Constant 69 + 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 198 11 16 199 11 18 200 201 12 + 202: TypeSampledImage 196 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 204 11 16 199 11 18 205 201 12 + 206: TypePointer UniformConstant 202 +207(displacementMap): 206(ptr) Variable UniformConstant + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 209 203 16 199 11 18 209 207(displacementMap) 40 + 212: 24(float) Constant 0 + 215: TypeMatrix 134(fvec4) 4 + 217: TypeBool + 218: 217(bool) ConstantTrue + 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 135 20 218 + 219: TypeArray 134(fvec4) 10 + 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 10 + 221(UBO): TypeStruct 215 215 134(fvec4) 219 24(float) 24(float) 27(fvec2) 24(float) + 224: 6(int) Constant 30 + 225: 6(int) Constant 7 + 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12 + 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12 + 229: 6(int) Constant 31 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 228 135 16 229 225 11 11 12 + 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 231 220 16 9 225 11 11 12 + 234: 6(int) Constant 36 + 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12 + 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12 + 238: 6(int) Constant 35 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 237 28 16 238 225 11 11 12 + 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12 + 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 241 19 16 199 11 18 241 11 12 222 226 227 230 232 235 236 239 + 242: TypePointer Uniform 221(UBO) + 243(ubo): 242(ptr) Variable Uniform + 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 245 240 16 199 11 18 245 243(ubo) 40 + 246: 41(int) Constant 4 + 247: TypePointer Uniform 24(float) + 251: TypePointer Function 24(float) +256(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 141 141 + 258: 6(int) Constant 165 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 145 135 16 19 258 11 11 12 + 260: 6(int) Constant 183 + 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 148 26 16 19 260 11 11 12 + 262: 6(int) Constant 226 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 262 11 11 12 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 262 11 11 12 + 265: 6(int) Constant 71 + 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 155 19 16 265 11 18 155 11 12 257 259 261 263 + 266: TypePointer Output 256(gl_PerVertex) + 267: 266(ptr) Variable Output + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 264 16 265 11 18 17 267 40 + 269: TypePointer Uniform 215 + 277: TypePointer Output 134(fvec4) + 279(outViewVec): 123(ptr) Variable Output + 282: 6(int) Constant 74 + 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 281 52 16 282 11 18 281 279(outViewVec) 40 +286(outLightVec): 123(ptr) Variable Output + 289: 6(int) Constant 75 + 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 288 52 16 289 11 18 288 286(outLightVec) 40 + 290: TypePointer Uniform 134(fvec4) +297(outWorldPos): 123(ptr) Variable Output + 300: 6(int) Constant 76 + 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 299 52 16 300 11 18 299 297(outWorldPos) 40 + 303(outEyePos): 123(ptr) Variable Output + 306: 6(int) Constant 77 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 52 16 306 11 18 305 303(outEyePos) 40 + 13(main): 3 Function None 4 + 22: Label + 30(uv1): 29(ptr) Variable Function + 64(uv2): 29(ptr) Variable Function + 91(n1): 90(ptr) Variable Function + 110(n2): 90(ptr) Variable Function + 137(pos1): 136(ptr) Variable Function + 172(pos2): 136(ptr) Variable Function + 185(pos): 136(ptr) Variable Function + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 46: 45(ptr) AccessChain 37(inUV) 44 + 47: 27(fvec2) Load 46 + 49: 45(ptr) AccessChain 37(inUV) 48 + 50: 27(fvec2) Load 49 + 58: 57(ptr) AccessChain 54(gl_TessCoord) 11 + 59: 24(float) Load 58 + 60: 27(fvec2) CompositeConstruct 59 59 + 61: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 47 50 60 + Store 30(uv1) 61 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 31 61 63 + 69: 45(ptr) AccessChain 37(inUV) 68 + 70: 27(fvec2) Load 69 + 72: 45(ptr) AccessChain 37(inUV) 71 + 73: 27(fvec2) Load 72 + 74: 57(ptr) AccessChain 54(gl_TessCoord) 11 + 75: 24(float) Load 74 + 76: 27(fvec2) CompositeConstruct 75 75 + 77: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 70 73 76 + Store 64(uv2) 77 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 77 63 + 84: 27(fvec2) Load 30(uv1) + 85: 27(fvec2) Load 64(uv2) + 86: 57(ptr) AccessChain 54(gl_TessCoord) 19 + 87: 24(float) Load 86 + 88: 27(fvec2) CompositeConstruct 87 87 + 89: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 84 85 88 + Store 80(outUV) 89 + 101: 53(ptr) AccessChain 98(inNormal) 44 + 102: 51(fvec3) Load 101 + 103: 53(ptr) AccessChain 98(inNormal) 48 + 104: 51(fvec3) Load 103 + 105: 57(ptr) AccessChain 54(gl_TessCoord) 11 + 106: 24(float) Load 105 + 107: 51(fvec3) CompositeConstruct 106 106 106 + 108: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 102 104 107 + Store 91(n1) 108 + 109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 92 108 63 + 114: 53(ptr) AccessChain 98(inNormal) 68 + 115: 51(fvec3) Load 114 + 116: 53(ptr) AccessChain 98(inNormal) 71 + 117: 51(fvec3) Load 116 + 118: 57(ptr) AccessChain 54(gl_TessCoord) 11 + 119: 24(float) Load 118 + 120: 51(fvec3) CompositeConstruct 119 119 119 + 121: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 115 117 120 + Store 110(n2) 121 + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 111 121 63 + 128: 51(fvec3) Load 91(n1) + 129: 51(fvec3) Load 110(n2) + 130: 57(ptr) AccessChain 54(gl_TessCoord) 19 + 131: 24(float) Load 130 + 132: 51(fvec3) CompositeConstruct 131 131 131 + 133: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 128 129 132 + Store 124(outNormal) 133 + 163: 162(ptr) AccessChain 159(gl_in) 44 44 + 164: 134(fvec4) Load 163 + 165: 162(ptr) AccessChain 159(gl_in) 48 44 + 166: 134(fvec4) Load 165 + 167: 57(ptr) AccessChain 54(gl_TessCoord) 11 + 168: 24(float) Load 167 + 169: 134(fvec4) CompositeConstruct 168 168 168 168 + 170: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 164 166 169 + Store 137(pos1) 170 + 171: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 138 170 63 + 176: 162(ptr) AccessChain 159(gl_in) 68 44 + 177: 134(fvec4) Load 176 + 178: 162(ptr) AccessChain 159(gl_in) 71 44 + 179: 134(fvec4) Load 178 + 180: 57(ptr) AccessChain 54(gl_TessCoord) 11 + 181: 24(float) Load 180 + 182: 134(fvec4) CompositeConstruct 181 181 181 181 + 183: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 177 179 182 + Store 172(pos2) 183 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 173 183 63 + 189: 134(fvec4) Load 137(pos1) + 190: 134(fvec4) Load 172(pos2) + 191: 57(ptr) AccessChain 54(gl_TessCoord) 19 + 192: 24(float) Load 191 + 193: 134(fvec4) CompositeConstruct 192 192 192 192 + 194: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 189 190 193 + Store 185(pos) 194 + 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 186 194 63 + 210: 202 Load 207(displacementMap) + 211: 27(fvec2) Load 80(outUV) + 213: 134(fvec4) ImageSampleExplicitLod 210 211 Lod 212 + 214: 24(float) CompositeExtract 213 0 + 248: 247(ptr) AccessChain 243(ubo) 246 + 249: 24(float) Load 248 + 250: 24(float) FMul 214 249 + 252: 251(ptr) AccessChain 185(pos) 19 + 253: 24(float) Load 252 + 254: 24(float) FSub 253 250 + 255: 251(ptr) AccessChain 185(pos) 19 + Store 255 254 + 270: 269(ptr) AccessChain 243(ubo) 44 + 271: 215 Load 270 + 272: 269(ptr) AccessChain 243(ubo) 48 + 273: 215 Load 272 + 274: 215 MatrixTimesMatrix 271 273 + 275: 134(fvec4) Load 185(pos) + 276: 134(fvec4) MatrixTimesVector 274 275 + 278: 277(ptr) AccessChain 267 44 + Store 278 276 + 283: 134(fvec4) Load 185(pos) + 284: 51(fvec3) VectorShuffle 283 283 0 1 2 + 285: 51(fvec3) FNegate 284 + Store 279(outViewVec) 285 + 291: 290(ptr) AccessChain 243(ubo) 71 + 292: 134(fvec4) Load 291 + 293: 51(fvec3) VectorShuffle 292 292 0 1 2 + 294: 51(fvec3) Load 279(outViewVec) + 295: 51(fvec3) FAdd 293 294 + 296: 51(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 295 + Store 286(outLightVec) 296 + 301: 134(fvec4) Load 185(pos) + 302: 51(fvec3) VectorShuffle 301 301 0 1 2 + Store 297(outWorldPos) 302 + 307: 269(ptr) AccessChain 243(ubo) 48 + 308: 215 Load 307 + 309: 134(fvec4) Load 185(pos) + 310: 134(fvec4) MatrixTimesVector 308 309 + 311: 24(float) CompositeExtract 310 0 + 312: 24(float) CompositeExtract 310 1 + 313: 24(float) CompositeExtract 310 2 + 314: 51(fvec3) CompositeConstruct 311 312 313 + Store 303(outEyePos) 314 + Return + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out new file mode 100644 index 0000000000..303f314ce3 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -0,0 +1,487 @@ +spv.debuginfo.glsl.vert +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 377 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 13 "main" 30 36 40 47 55 68 248 265 270 295 309 327 362 370 + 8: String "uint" + 14: String "main" + 17: String "" + 25: String "float" + 32: String "outColor" + 38: String "inColor" + 42: String "outUV" + 49: String "inUV" + 52: String "int" + 57: String "instanceTexIndex" + 66: String "s" + 70: String "instanceRot" + 82: String "modelview" + 87: String "lightPos" + 90: String "globSpeed" + 94: String "UBO" + 98: String "ubo" + 109: String "c" + 123: String "mx" + 158: String "my" + 187: String "mz" + 202: String "rotMat" + 228: String "gRotMat" + 246: String "locPos" + 250: String "inPos" + 261: String "pos" + 267: String "instanceScale" + 272: String "instancePos" + 284: String "gl_Position" + 287: String "gl_PointSize" + 289: String "gl_CullDistance" + 292: String "gl_PerVertex" + 311: String "outNormal" + 329: String "inNormal" + 345: String "lPos" + 364: String "outLightVec" + 372: String "outViewVec" + Name 13 "main" + Name 30 "outColor" + Name 36 "inColor" + Name 40 "outUV" + Name 47 "inUV" + Name 55 "instanceTexIndex" + Name 64 "s" + Name 68 "instanceRot" + Name 80 "UBO" + MemberName 80(UBO) 0 "projection" + MemberName 80(UBO) 1 "modelview" + MemberName 80(UBO) 2 "lightPos" + MemberName 80(UBO) 3 "locSpeed" + MemberName 80(UBO) 4 "globSpeed" + Name 96 "ubo" + Name 107 "c" + Name 121 "mx" + Name 156 "my" + Name 185 "mz" + Name 200 "rotMat" + Name 226 "gRotMat" + Name 244 "locPos" + Name 248 "inPos" + Name 259 "pos" + Name 265 "instanceScale" + Name 270 "instancePos" + Name 282 "gl_PerVertex" + MemberName 282(gl_PerVertex) 0 "gl_Position" + MemberName 282(gl_PerVertex) 1 "gl_PointSize" + MemberName 282(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 282(gl_PerVertex) 3 "gl_CullDistance" + Name 295 "" + Name 309 "outNormal" + Name 327 "inNormal" + Name 343 "lPos" + Name 362 "outLightVec" + Name 370 "outViewVec" + Decorate 30(outColor) Location 1 + Decorate 36(inColor) Location 3 + Decorate 40(outUV) Location 2 + Decorate 47(inUV) Location 2 + Decorate 55(instanceTexIndex) Location 7 + Decorate 68(instanceRot) Location 5 + MemberDecorate 80(UBO) 0 ColMajor + MemberDecorate 80(UBO) 0 Offset 0 + MemberDecorate 80(UBO) 0 MatrixStride 16 + MemberDecorate 80(UBO) 1 ColMajor + MemberDecorate 80(UBO) 1 Offset 64 + MemberDecorate 80(UBO) 1 MatrixStride 16 + MemberDecorate 80(UBO) 2 Offset 128 + MemberDecorate 80(UBO) 3 Offset 144 + MemberDecorate 80(UBO) 4 Offset 148 + Decorate 80(UBO) Block + Decorate 96(ubo) DescriptorSet 0 + Decorate 96(ubo) Binding 0 + Decorate 248(inPos) Location 0 + Decorate 265(instanceScale) Location 6 + Decorate 270(instancePos) Location 4 + MemberDecorate 282(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 282(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 282(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 282(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 282(gl_PerVertex) Block + Decorate 309(outNormal) Location 0 + Decorate 327(inNormal) Location 1 + Decorate 362(outLightVec) Location 4 + Decorate 370(outViewVec) Location 3 + 3: TypeVoid + 4: TypeFunction 3 + 6: TypeInt 32 0 + 9: 6(int) Constant 32 + 10: 6(int) Constant 6 + 11: 6(int) Constant 0 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 12: 6(int) Constant 3 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 19: 6(int) Constant 1 + 20: 6(int) Constant 4 + 21: 6(int) Constant 2 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 24: TypeFloat 32 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11 + 27: TypeVector 24(float) 3 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12 + 29: TypePointer Output 27(fvec3) + 30(outColor): 29(ptr) Variable Output + 33: 6(int) Constant 56 + 34: 6(int) Constant 8 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 32 28 16 33 11 18 32 30(outColor) 34 + 35: TypePointer Input 27(fvec3) + 36(inColor): 35(ptr) Variable Input + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 38 28 16 33 11 18 38 36(inColor) 34 + 40(outUV): 29(ptr) Variable Output + 43: 6(int) Constant 57 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 42 28 16 43 11 18 42 40(outUV) 34 + 44: TypeVector 24(float) 2 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21 + 46: TypePointer Input 44(fvec2) + 47(inUV): 46(ptr) Variable Input + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 49 45 16 43 11 18 49 47(inUV) 34 + 51: TypeInt 32 1 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 52 9 20 11 + 54: TypePointer Input 51(int) +55(instanceTexIndex): 54(ptr) Variable Input + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 57 53 16 43 11 18 57 55(instanceTexIndex) 34 + 63: TypePointer Function 24(float) + 67: 6(int) Constant 62 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 26 16 67 11 15 20 + 68(instanceRot): 35(ptr) Variable Input + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 70 28 16 67 11 18 70 68(instanceRot) 34 + 71: TypePointer Input 24(float) + 74: TypeVector 24(float) 4 + 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20 + 76: TypeMatrix 74(fvec4) 4 + 78: TypeBool + 79: 78(bool) ConstantTrue + 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 75 20 79 + 80(UBO): TypeStruct 76 76 74(fvec4) 24(float) 24(float) + 83: 6(int) Constant 42 + 84: 6(int) Constant 7 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 77 16 83 84 11 11 12 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 77 16 83 84 11 11 12 + 88: 6(int) Constant 43 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 87 75 16 88 84 11 11 12 + 91: 6(int) Constant 45 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 26 16 91 34 11 11 12 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 26 16 91 34 11 11 12 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 94 19 16 67 11 18 94 11 12 81 85 86 89 92 + 95: TypePointer Uniform 80(UBO) + 96(ubo): 95(ptr) Variable Uniform + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 98 93 16 67 11 18 98 96(ubo) 34 + 99: 51(int) Constant 3 + 100: TypePointer Uniform 24(float) + 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 110: 6(int) Constant 63 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 26 16 110 11 15 20 + 118: TypeMatrix 27(fvec3) 3 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 28 12 79 + 120: TypePointer Function 118 + 124: 6(int) Constant 65 + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 123 119 16 124 11 15 20 + 125: 51(int) Constant 0 + 128: 24(float) Constant 0 + 130: TypePointer Function 27(fvec3) + 132: 51(int) Constant 1 + 138: 51(int) Constant 2 + 139: 24(float) Constant 1065353216 + 140: 27(fvec3) ConstantComposite 128 128 139 + 159: 6(int) Constant 73 + 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 158 119 16 159 11 15 20 + 164: 27(fvec3) ConstantComposite 128 139 128 + 188: 6(int) Constant 81 + 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 187 119 16 188 11 15 20 + 189: 27(fvec3) ConstantComposite 139 128 128 + 203: 6(int) Constant 85 + 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 202 119 16 203 11 15 20 + 212: 51(int) Constant 4 + 225: TypePointer Function 76 + 229: 6(int) Constant 90 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 228 77 16 229 11 15 20 + 233: TypePointer Function 74(fvec4) + 235: 74(fvec4) ConstantComposite 128 139 128 128 + 242: 74(fvec4) ConstantComposite 128 128 128 139 + 247: 6(int) Constant 95 + 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 246 75 16 247 11 15 20 + 248(inPos): 35(ptr) Variable Input + 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 250 28 16 247 11 18 250 248(inPos) 34 + 262: 6(int) Constant 96 + 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 75 16 262 11 15 20 +265(instanceScale): 71(ptr) Variable Input + 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 267 26 16 262 11 18 267 265(instanceScale) 34 +270(instancePos): 35(ptr) Variable Input + 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 272 28 16 262 11 18 272 270(instancePos) 34 + 280: TypeArray 24(float) 19 + 281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 +282(gl_PerVertex): TypeStruct 74(fvec4) 24(float) 280 280 + 285: 6(int) Constant 24 + 283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 284 75 16 19 285 11 11 12 + 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 26 16 19 83 11 11 12 + 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 289 281 16 19 203 11 11 12 + 290: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 289 281 16 19 203 11 11 12 + 293: 6(int) Constant 98 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 292 19 16 293 11 18 292 11 12 283 286 288 290 + 294: TypePointer Output 282(gl_PerVertex) + 295: 294(ptr) Variable Output + 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 291 16 293 11 18 17 295 34 + 297: TypePointer Uniform 76 + 307: TypePointer Output 74(fvec4) + 309(outNormal): 29(ptr) Variable Output + 312: 6(int) Constant 99 + 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 311 28 16 312 11 18 311 309(outNormal) 34 + 327(inNormal): 35(ptr) Variable Input + 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 329 28 16 312 11 18 329 327(inNormal) 34 + 346: 6(int) Constant 102 + 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 345 28 16 346 11 15 20 + 356: TypePointer Uniform 74(fvec4) +362(outLightVec): 29(ptr) Variable Output + 365: 6(int) Constant 103 + 363: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 364 28 16 365 11 18 364 362(outLightVec) 34 + 370(outViewVec): 29(ptr) Variable Output + 373: 6(int) Constant 104 + 371: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 372 28 16 373 11 18 372 370(outViewVec) 34 + 13(main): 3 Function None 4 + 22: Label + 64(s): 63(ptr) Variable Function + 107(c): 63(ptr) Variable Function + 121(mx): 120(ptr) Variable Function + 156(my): 120(ptr) Variable Function + 185(mz): 120(ptr) Variable Function + 200(rotMat): 120(ptr) Variable Function + 226(gRotMat): 225(ptr) Variable Function + 244(locPos): 233(ptr) Variable Function + 259(pos): 233(ptr) Variable Function + 343(lPos): 130(ptr) Variable Function + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 39: 27(fvec3) Load 36(inColor) + Store 30(outColor) 39 + 50: 44(fvec2) Load 47(inUV) + 58: 51(int) Load 55(instanceTexIndex) + 59: 24(float) ConvertSToF 58 + 60: 24(float) CompositeExtract 50 0 + 61: 24(float) CompositeExtract 50 1 + 62: 27(fvec3) CompositeConstruct 60 61 59 + Store 40(outUV) 62 + 72: 71(ptr) AccessChain 68(instanceRot) 11 + 73: 24(float) Load 72 + 101: 100(ptr) AccessChain 96(ubo) 99 + 102: 24(float) Load 101 + 103: 24(float) FAdd 73 102 + 104: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 103 + Store 64(s) 104 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 104 106 + 111: 71(ptr) AccessChain 68(instanceRot) 11 + 112: 24(float) Load 111 + 113: 100(ptr) AccessChain 96(ubo) 99 + 114: 24(float) Load 113 + 115: 24(float) FAdd 112 114 + 116: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 115 + Store 107(c) 116 + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 116 106 + 126: 24(float) Load 107(c) + 127: 24(float) Load 64(s) + 129: 27(fvec3) CompositeConstruct 126 127 128 + 131: 130(ptr) AccessChain 121(mx) 125 + Store 131 129 + 133: 24(float) Load 64(s) + 134: 24(float) FNegate 133 + 135: 24(float) Load 107(c) + 136: 27(fvec3) CompositeConstruct 134 135 128 + 137: 130(ptr) AccessChain 121(mx) 132 + Store 137 136 + 141: 130(ptr) AccessChain 121(mx) 138 + Store 141 140 + 142: 71(ptr) AccessChain 68(instanceRot) 19 + 143: 24(float) Load 142 + 144: 100(ptr) AccessChain 96(ubo) 99 + 145: 24(float) Load 144 + 146: 24(float) FAdd 143 145 + 147: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 146 + Store 64(s) 147 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 147 106 + 149: 71(ptr) AccessChain 68(instanceRot) 19 + 150: 24(float) Load 149 + 151: 100(ptr) AccessChain 96(ubo) 99 + 152: 24(float) Load 151 + 153: 24(float) FAdd 150 152 + 154: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 153 + Store 107(c) 154 + 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 154 106 + 160: 24(float) Load 107(c) + 161: 24(float) Load 64(s) + 162: 27(fvec3) CompositeConstruct 160 128 161 + 163: 130(ptr) AccessChain 156(my) 125 + Store 163 162 + 165: 130(ptr) AccessChain 156(my) 132 + Store 165 164 + 166: 24(float) Load 64(s) + 167: 24(float) FNegate 166 + 168: 24(float) Load 107(c) + 169: 27(fvec3) CompositeConstruct 167 128 168 + 170: 130(ptr) AccessChain 156(my) 138 + Store 170 169 + 171: 71(ptr) AccessChain 68(instanceRot) 21 + 172: 24(float) Load 171 + 173: 100(ptr) AccessChain 96(ubo) 99 + 174: 24(float) Load 173 + 175: 24(float) FAdd 172 174 + 176: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 175 + Store 64(s) 176 + 177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 176 106 + 178: 71(ptr) AccessChain 68(instanceRot) 21 + 179: 24(float) Load 178 + 180: 100(ptr) AccessChain 96(ubo) 99 + 181: 24(float) Load 180 + 182: 24(float) FAdd 179 181 + 183: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 182 + Store 107(c) 183 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 183 106 + 190: 130(ptr) AccessChain 185(mz) 125 + Store 190 189 + 191: 24(float) Load 107(c) + 192: 24(float) Load 64(s) + 193: 27(fvec3) CompositeConstruct 128 191 192 + 194: 130(ptr) AccessChain 185(mz) 132 + Store 194 193 + 195: 24(float) Load 64(s) + 196: 24(float) FNegate 195 + 197: 24(float) Load 107(c) + 198: 27(fvec3) CompositeConstruct 128 196 197 + 199: 130(ptr) AccessChain 185(mz) 138 + Store 199 198 + 204: 118 Load 185(mz) + 205: 118 Load 156(my) + 206: 118 MatrixTimesMatrix 204 205 + 207: 118 Load 121(mx) + 208: 118 MatrixTimesMatrix 206 207 + Store 200(rotMat) 208 + 209: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 201 208 106 + 210: 71(ptr) AccessChain 68(instanceRot) 19 + 211: 24(float) Load 210 + 213: 100(ptr) AccessChain 96(ubo) 212 + 214: 24(float) Load 213 + 215: 24(float) FAdd 211 214 + 216: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 215 + Store 64(s) 216 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 216 106 + 218: 71(ptr) AccessChain 68(instanceRot) 19 + 219: 24(float) Load 218 + 220: 100(ptr) AccessChain 96(ubo) 212 + 221: 24(float) Load 220 + 222: 24(float) FAdd 219 221 + 223: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 222 + Store 107(c) 223 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 223 106 + 230: 24(float) Load 107(c) + 231: 24(float) Load 64(s) + 232: 74(fvec4) CompositeConstruct 230 128 231 128 + 234: 233(ptr) AccessChain 226(gRotMat) 125 + Store 234 232 + 236: 233(ptr) AccessChain 226(gRotMat) 132 + Store 236 235 + 237: 24(float) Load 64(s) + 238: 24(float) FNegate 237 + 239: 24(float) Load 107(c) + 240: 74(fvec4) CompositeConstruct 238 128 239 128 + 241: 233(ptr) AccessChain 226(gRotMat) 138 + Store 241 240 + 243: 233(ptr) AccessChain 226(gRotMat) 99 + Store 243 242 + 251: 27(fvec3) Load 248(inPos) + 252: 118 Load 200(rotMat) + 253: 27(fvec3) VectorTimesMatrix 251 252 + 254: 24(float) CompositeExtract 253 0 + 255: 24(float) CompositeExtract 253 1 + 256: 24(float) CompositeExtract 253 2 + 257: 74(fvec4) CompositeConstruct 254 255 256 139 + Store 244(locPos) 257 + 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 257 106 + 263: 74(fvec4) Load 244(locPos) + 264: 27(fvec3) VectorShuffle 263 263 0 1 2 + 268: 24(float) Load 265(instanceScale) + 269: 27(fvec3) VectorTimesScalar 264 268 + 273: 27(fvec3) Load 270(instancePos) + 274: 27(fvec3) FAdd 269 273 + 275: 24(float) CompositeExtract 274 0 + 276: 24(float) CompositeExtract 274 1 + 277: 24(float) CompositeExtract 274 2 + 278: 74(fvec4) CompositeConstruct 275 276 277 139 + Store 259(pos) 278 + 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 278 106 + 298: 297(ptr) AccessChain 96(ubo) 125 + 299: 76 Load 298 + 300: 297(ptr) AccessChain 96(ubo) 132 + 301: 76 Load 300 + 302: 76 MatrixTimesMatrix 299 301 + 303: 76 Load 226(gRotMat) + 304: 76 MatrixTimesMatrix 302 303 + 305: 74(fvec4) Load 259(pos) + 306: 74(fvec4) MatrixTimesVector 304 305 + 308: 307(ptr) AccessChain 295 125 + Store 308 306 + 313: 297(ptr) AccessChain 96(ubo) 132 + 314: 76 Load 313 + 315: 76 Load 226(gRotMat) + 316: 76 MatrixTimesMatrix 314 315 + 317: 74(fvec4) CompositeExtract 316 0 + 318: 27(fvec3) VectorShuffle 317 317 0 1 2 + 319: 74(fvec4) CompositeExtract 316 1 + 320: 27(fvec3) VectorShuffle 319 319 0 1 2 + 321: 74(fvec4) CompositeExtract 316 2 + 322: 27(fvec3) VectorShuffle 321 321 0 1 2 + 323: 118 CompositeConstruct 318 320 322 + 324: 118 Load 200(rotMat) + 325: 118 ExtInst 2(GLSL.std.450) 34(MatrixInverse) 324 + 326: 118 MatrixTimesMatrix 323 325 + 330: 27(fvec3) Load 327(inNormal) + 331: 27(fvec3) MatrixTimesVector 326 330 + Store 309(outNormal) 331 + 332: 297(ptr) AccessChain 96(ubo) 132 + 333: 76 Load 332 + 334: 27(fvec3) Load 248(inPos) + 335: 27(fvec3) Load 270(instancePos) + 336: 27(fvec3) FAdd 334 335 + 337: 24(float) CompositeExtract 336 0 + 338: 24(float) CompositeExtract 336 1 + 339: 24(float) CompositeExtract 336 2 + 340: 74(fvec4) CompositeConstruct 337 338 339 139 + 341: 74(fvec4) MatrixTimesVector 333 340 + Store 259(pos) 341 + 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 341 106 + 347: 297(ptr) AccessChain 96(ubo) 132 + 348: 76 Load 347 + 349: 74(fvec4) CompositeExtract 348 0 + 350: 27(fvec3) VectorShuffle 349 349 0 1 2 + 351: 74(fvec4) CompositeExtract 348 1 + 352: 27(fvec3) VectorShuffle 351 351 0 1 2 + 353: 74(fvec4) CompositeExtract 348 2 + 354: 27(fvec3) VectorShuffle 353 353 0 1 2 + 355: 118 CompositeConstruct 350 352 354 + 357: 356(ptr) AccessChain 96(ubo) 138 + 358: 74(fvec4) Load 357 + 359: 27(fvec3) VectorShuffle 358 358 0 1 2 + 360: 27(fvec3) MatrixTimesVector 355 359 + Store 343(lPos) 360 + 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 344 360 106 + 366: 27(fvec3) Load 343(lPos) + 367: 74(fvec4) Load 259(pos) + 368: 27(fvec3) VectorShuffle 367 367 0 1 2 + 369: 27(fvec3) FSub 366 368 + Store 362(outLightVec) 369 + 374: 74(fvec4) Load 259(pos) + 375: 27(fvec3) VectorShuffle 374 374 0 1 2 + 376: 27(fvec3) FNegate 375 + Store 370(outViewVec) 376 + Return + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out new file mode 100644 index 0000000000..7315b87041 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -0,0 +1,1103 @@ +spv.debuginfo.hlsl.comp +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 855 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 5 "main" 850 + ExecutionMode 5 LocalSize 10 10 1 + 9: String "float" + 12: String "uint" + 27: String "springForce" + 30: String "" + 39: String "p0" + 43: String "p1" + 47: String "restDist" + 56: String "@main" + 62: String "id" + 67: String "dist" + 78: String "int" + 84: String "sphereRadius" + 95: String "gravity" + 100: String "particleCount" + 103: String "UBO" + 107: String "params" + 111: String "ubo" + 133: String "index" + 155: String "bool" + 163: String "normal" + 170: String "pinned" + 174: String "Particle" + 180: String "@data" + 184: String "particleIn" + 203: String "particleOut" + 222: String "force" + 234: String "pos" + 243: String "vel" + 501: String "f" + 545: String "sphereDist" + 589: String "calculateNormals" + 593: String "PushConstants" + 597: String "pushConstants" + 600: String "$Global" + 630: String "a" + 642: String "b" + 658: String "c" + Name 5 "main" + Name 26 "springForce(vf3;vf3;f1;" + Name 23 "p0" + Name 24 "p1" + Name 25 "restDist" + Name 55 "@main(vu3;" + Name 54 "id" + Name 65 "dist" + Name 82 "UBO" + MemberName 82(UBO) 0 "deltaT" + MemberName 82(UBO) 1 "particleMass" + MemberName 82(UBO) 2 "springStiffness" + MemberName 82(UBO) 3 "damping" + MemberName 82(UBO) 4 "restDistH" + MemberName 82(UBO) 5 "restDistV" + MemberName 82(UBO) 6 "restDistD" + MemberName 82(UBO) 7 "sphereRadius" + MemberName 82(UBO) 8 "spherePos" + MemberName 82(UBO) 9 "gravity" + MemberName 82(UBO) 10 "particleCount" + Name 105 "ubo" + MemberName 105(ubo) 0 "params" + Name 113 "" + Name 131 "index" + Name 161 "Particle" + MemberName 161(Particle) 0 "pos" + MemberName 161(Particle) 1 "vel" + MemberName 161(Particle) 2 "uv" + MemberName 161(Particle) 3 "normal" + MemberName 161(Particle) 4 "pinned" + Name 178 "particleIn" + MemberName 178(particleIn) 0 "@data" + Name 186 "particleIn" + Name 199 "particleOut" + MemberName 199(particleOut) 0 "@data" + Name 206 "particleOut" + Name 220 "force" + Name 232 "pos" + Name 241 "vel" + Name 258 "param" + Name 262 "param" + Name 264 "param" + Name 283 "param" + Name 287 "param" + Name 289 "param" + Name 312 "param" + Name 316 "param" + Name 318 "param" + Name 336 "param" + Name 340 "param" + Name 342 "param" + Name 372 "param" + Name 376 "param" + Name 378 "param" + Name 403 "param" + Name 407 "param" + Name 409 "param" + Name 442 "param" + Name 446 "param" + Name 448 "param" + Name 477 "param" + Name 481 "param" + Name 483 "param" + Name 499 "f" + Name 543 "sphereDist" + Name 587 "PushConstants" + MemberName 587(PushConstants) 0 "calculateNormals" + Name 595 "$Global" + MemberName 595($Global) 0 "pushConstants" + Name 602 "" + Name 611 "normal" + Name 628 "a" + Name 640 "b" + Name 656 "c" + Name 848 "id" + Name 850 "id" + Name 852 "param" + MemberDecorate 82(UBO) 0 Offset 0 + MemberDecorate 82(UBO) 1 Offset 4 + MemberDecorate 82(UBO) 2 Offset 8 + MemberDecorate 82(UBO) 3 Offset 12 + MemberDecorate 82(UBO) 4 Offset 16 + MemberDecorate 82(UBO) 5 Offset 20 + MemberDecorate 82(UBO) 6 Offset 24 + MemberDecorate 82(UBO) 7 Offset 28 + MemberDecorate 82(UBO) 8 Offset 32 + MemberDecorate 82(UBO) 9 Offset 48 + MemberDecorate 82(UBO) 10 Offset 64 + MemberDecorate 105(ubo) 0 Offset 0 + Decorate 105(ubo) Block + Decorate 113 DescriptorSet 0 + Decorate 113 Binding 2 + MemberDecorate 161(Particle) 0 Offset 0 + MemberDecorate 161(Particle) 1 Offset 16 + MemberDecorate 161(Particle) 2 Offset 32 + MemberDecorate 161(Particle) 3 Offset 48 + MemberDecorate 161(Particle) 4 Offset 64 + Decorate 176 ArrayStride 80 + MemberDecorate 178(particleIn) 0 NonWritable + MemberDecorate 178(particleIn) 0 Offset 0 + Decorate 178(particleIn) BufferBlock + Decorate 186(particleIn) DescriptorSet 0 + Decorate 186(particleIn) Binding 0 + Decorate 197 ArrayStride 80 + MemberDecorate 199(particleOut) 0 Offset 0 + Decorate 199(particleOut) BufferBlock + Decorate 206(particleOut) DescriptorSet 0 + Decorate 206(particleOut) Binding 1 + MemberDecorate 587(PushConstants) 0 Offset 0 + MemberDecorate 595($Global) 0 Offset 0 + Decorate 595($Global) Block + Decorate 602 DescriptorSet 0 + Decorate 602 Binding 3 + Decorate 850(id) BuiltIn GlobalInvocationId + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeFloat 32 + 10: TypeInt 32 0 + 13: 10(int) Constant 32 + 14: 10(int) Constant 6 + 15: 10(int) Constant 0 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 16: 10(int) Constant 3 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 17: TypeVector 7(float) 3 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 19: TypePointer Function 17(fvec3) + 20: TypePointer Function 7(float) + 21: TypeFunction 17(fvec3) 19(ptr) 19(ptr) 20(ptr) + 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 18 18 18 8 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 30 + 32: 10(int) Constant 1 + 33: 10(int) Constant 4 + 34: 10(int) Constant 5 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 32 33 29 34 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 27 22 29 15 15 31 27 16 15 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 39 18 29 15 15 28 33 32 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 44: 10(int) Constant 2 + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 43 18 29 15 15 28 33 44 + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 29 15 15 28 33 16 + 49: TypeVector 10(int) 3 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16 + 51: TypePointer Function 49(ivec3) + 52: TypeFunction 3 51(ptr) + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 3 50 + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 56 53 29 15 15 31 56 16 15 + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 62 50 29 15 15 57 33 32 + 68: 10(int) Constant 76 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 67 18 29 68 15 28 33 + 75: TypeVector 7(float) 4 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 33 + 77: TypeInt 32 1 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 78 13 33 15 + 80: TypeVector 77(int) 2 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 79 44 + 82(UBO): TypeStruct 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 75(fvec4) 75(fvec4) 80(ivec2) + 85: 10(int) Constant 48 + 86: 10(int) Constant 20 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 96: 10(int) Constant 50 + 97: 10(int) Constant 16 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 76 29 96 97 15 15 16 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 76 29 96 97 15 15 16 + 101: 10(int) Constant 51 + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 81 29 101 86 15 15 16 + 104: 10(int) Constant 77 + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 103 32 29 104 15 31 103 15 16 83 87 88 89 90 91 92 93 94 98 99 + 105(ubo): TypeStruct 82(UBO) + 108: 10(int) Constant 56 + 109: 10(int) Constant 12 + 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 107 102 29 108 109 15 15 16 + 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 111 32 29 104 15 31 111 15 16 106 + 112: TypePointer Uniform 105(ubo) + 113: 112(ptr) Variable Uniform + 115: 10(int) Constant 8 + 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 110 29 104 15 31 30 113 115 + 116: 77(int) Constant 0 + 117: 77(int) Constant 2 + 118: TypePointer Uniform 7(float) + 130: TypePointer Function 10(int) + 134: 10(int) Constant 83 + 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 133 11 29 134 15 57 33 + 137: 77(int) Constant 10 + 138: TypePointer Uniform 77(int) + 154: TypeBool + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 161(Particle): TypeStruct 75(fvec4) 75(fvec4) 75(fvec4) 75(fvec4) 7(float) + 164: 10(int) Constant 30 + 165: 10(int) Constant 15 + 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 + 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 + 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 + 171: 10(int) Constant 31 + 172: 10(int) Constant 14 + 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 8 29 171 172 15 15 16 + 175: 10(int) Constant 88 + 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 174 32 29 175 15 31 174 15 16 162 166 167 168 169 + 176: TypeRuntimeArray 161(Particle) + 177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 173 15 + 178(particleIn): TypeStruct 176 + 181: 10(int) Constant 35 + 182: 10(int) Constant 28 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 177 29 181 182 15 15 16 + 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 184 32 29 175 15 31 184 15 16 179 + 185: TypePointer Uniform 178(particleIn) + 186(particleIn): 185(ptr) Variable Uniform + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 184 183 29 175 15 31 184 186(particleIn) 115 + 189: 77(int) Constant 4 + 192: 7(float) Constant 1065353216 + 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 197: TypeRuntimeArray 161(Particle) + 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 173 15 +199(particleOut): TypeStruct 197 + 201: 10(int) Constant 37 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 198 29 201 164 15 15 16 + 204: 10(int) Constant 89 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 203 32 29 204 15 31 203 15 16 200 + 205: TypePointer Uniform 199(particleOut) +206(particleOut): 205(ptr) Variable Uniform + 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 203 202 29 204 15 31 203 206(particleOut) 115 + 210: TypePointer Uniform 75(fvec4) + 215: 77(int) Constant 1 + 216: 7(float) Constant 0 + 217: 75(fvec4) ConstantComposite 216 216 216 216 + 223: 10(int) Constant 95 + 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 222 18 29 223 15 57 33 + 224: 77(int) Constant 9 + 235: 10(int) Constant 97 + 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 18 29 235 15 57 33 + 244: 10(int) Constant 98 + 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 243 18 29 244 15 57 33 + 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 311: 77(int) Constant 5 + 327: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 351: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 371: 77(int) Constant 6 + 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 430: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 432: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 461: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 465: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 467: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 490: 77(int) Constant 3 + 502: 10(int) Constant 137 + 500: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 501 18 29 502 15 57 33 + 516: 7(float) Constant 1056964608 + 546: 10(int) Constant 142 + 544: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 545 18 29 546 15 57 33 + 551: 77(int) Constant 8 + 559: 77(int) Constant 7 + 562: 7(float) Constant 1008981770 + 564: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 +587(PushConstants): TypeStruct 10(int) + 590: 10(int) Constant 67 + 591: 10(int) Constant 23 + 588: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 589 11 29 590 591 15 15 16 + 594: 10(int) Constant 151 + 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 593 32 29 594 15 31 593 15 16 588 + 595($Global): TypeStruct 587(PushConstants) + 598: 10(int) Constant 71 + 596: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 597 592 29 598 165 15 15 16 + 599: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 600 32 29 594 15 31 600 15 16 596 + 601: TypePointer Uniform 595($Global) + 602: 601(ptr) Variable Uniform + 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 599 29 594 15 31 30 602 115 + 604: TypePointer Uniform 10(int) + 607: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 613: 10(int) Constant 152 + 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 163 18 29 613 15 57 33 + 614: 17(fvec3) ConstantComposite 216 216 216 + 618: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 631: 10(int) Constant 156 + 629: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 630 18 29 631 15 57 33 + 643: 10(int) Constant 157 + 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 642 18 29 643 15 57 33 + 659: 10(int) Constant 158 + 657: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 658 18 29 659 15 57 33 + 687: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 738: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 744: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 795: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 849: TypePointer Input 49(ivec3) + 850(id): 849(ptr) Variable Input + 5(main): 3 Function None 4 + 6: Label + 848(id): 51(ptr) Variable Function + 852(param): 51(ptr) Variable Function + 851: 49(ivec3) Load 850(id) + Store 848(id) 851 + 853: 49(ivec3) Load 848(id) + Store 852(param) 853 + 854: 3 FunctionCall 55(@main(vu3;) 852(param) + Return + FunctionEnd +26(springForce(vf3;vf3;f1;): 17(fvec3) Function None 21 + 23(p0): 19(ptr) FunctionParameter + 24(p1): 19(ptr) FunctionParameter + 25(restDist): 20(ptr) FunctionParameter + 35: Label + 65(dist): 19(ptr) Variable Function + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 28 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 38 23(p0) 41 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 42 24(p1) 41 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 25(restDist) 41 + 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 28 26(springForce(vf3;vf3;f1;) + 69: 17(fvec3) Load 23(p0) + 70: 17(fvec3) Load 24(p1) + 71: 17(fvec3) FSub 69 70 + Store 65(dist) 71 + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 66 71 41 + 73: 17(fvec3) Load 65(dist) + 74: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 73 + 119: 118(ptr) AccessChain 113 116 117 + 120: 7(float) Load 119 + 121: 17(fvec3) VectorTimesScalar 74 120 + 122: 17(fvec3) Load 65(dist) + 123: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 122 + 124: 7(float) Load 25(restDist) + 125: 7(float) FSub 123 124 + 126: 17(fvec3) VectorTimesScalar 121 125 + ReturnValue 126 + FunctionEnd + 55(@main(vu3;): 3 Function None 52 + 54(id): 51(ptr) FunctionParameter + 58: Label + 131(index): 130(ptr) Variable Function + 220(force): 19(ptr) Variable Function + 232(pos): 19(ptr) Variable Function + 241(vel): 19(ptr) Variable Function + 258(param): 19(ptr) Variable Function + 262(param): 19(ptr) Variable Function + 264(param): 20(ptr) Variable Function + 283(param): 19(ptr) Variable Function + 287(param): 19(ptr) Variable Function + 289(param): 20(ptr) Variable Function + 312(param): 19(ptr) Variable Function + 316(param): 19(ptr) Variable Function + 318(param): 20(ptr) Variable Function + 336(param): 19(ptr) Variable Function + 340(param): 19(ptr) Variable Function + 342(param): 20(ptr) Variable Function + 372(param): 19(ptr) Variable Function + 376(param): 19(ptr) Variable Function + 378(param): 20(ptr) Variable Function + 403(param): 19(ptr) Variable Function + 407(param): 19(ptr) Variable Function + 409(param): 20(ptr) Variable Function + 442(param): 19(ptr) Variable Function + 446(param): 19(ptr) Variable Function + 448(param): 20(ptr) Variable Function + 477(param): 19(ptr) Variable Function + 481(param): 19(ptr) Variable Function + 483(param): 20(ptr) Variable Function + 499(f): 19(ptr) Variable Function + 543(sphereDist): 19(ptr) Variable Function + 611(normal): 19(ptr) Variable Function + 628(a): 19(ptr) Variable Function + 640(b): 19(ptr) Variable Function + 656(c): 19(ptr) Variable Function + 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 57 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 61 54(id) 41 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 57 55(@main(vu3;) + 135: 130(ptr) AccessChain 54(id) 32 + 136: 10(int) Load 135 + 139: 138(ptr) AccessChain 113 116 137 15 + 140: 77(int) Load 139 + 141: 10(int) Bitcast 140 + 142: 10(int) IMul 136 141 + 143: 130(ptr) AccessChain 54(id) 15 + 144: 10(int) Load 143 + 145: 10(int) IAdd 142 144 + Store 131(index) 145 + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 132 145 41 + 147: 10(int) Load 131(index) + 148: 138(ptr) AccessChain 113 116 137 15 + 149: 77(int) Load 148 + 150: 138(ptr) AccessChain 113 116 137 32 + 151: 77(int) Load 150 + 152: 77(int) IMul 149 151 + 153: 10(int) Bitcast 152 + 157: 154(bool) UGreaterThan 147 153 + SelectionMerge 159 None + BranchConditional 157 158 159 + 158: Label + Return + 159: Label + 188: 10(int) Load 131(index) + 190: 118(ptr) AccessChain 186(particleIn) 116 188 189 + 191: 7(float) Load 190 + 194: 154(bool) FOrdEqual 191 192 + SelectionMerge 196 None + BranchConditional 194 195 196 + 195: Label + 208: 10(int) Load 131(index) + 209: 10(int) Load 131(index) + 211: 210(ptr) AccessChain 206(particleOut) 116 209 116 + 212: 75(fvec4) Load 211 + 213: 210(ptr) AccessChain 206(particleOut) 116 208 116 + Store 213 212 + 214: 10(int) Load 131(index) + 218: 210(ptr) AccessChain 206(particleOut) 116 214 215 + Store 218 217 + Return + 196: Label + 225: 210(ptr) AccessChain 113 116 224 + 226: 75(fvec4) Load 225 + 227: 17(fvec3) VectorShuffle 226 226 0 1 2 + 228: 118(ptr) AccessChain 113 116 215 + 229: 7(float) Load 228 + 230: 17(fvec3) VectorTimesScalar 227 229 + Store 220(force) 230 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 230 41 + 236: 10(int) Load 131(index) + 237: 210(ptr) AccessChain 186(particleIn) 116 236 116 + 238: 75(fvec4) Load 237 + 239: 17(fvec3) VectorShuffle 238 238 0 1 2 + Store 232(pos) 239 + 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 233 239 41 + 245: 10(int) Load 131(index) + 246: 210(ptr) AccessChain 186(particleIn) 116 245 215 + 247: 75(fvec4) Load 246 + 248: 17(fvec3) VectorShuffle 247 247 0 1 2 + Store 241(vel) 248 + 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 242 248 41 + 250: 130(ptr) AccessChain 54(id) 15 + 251: 10(int) Load 250 + 253: 154(bool) UGreaterThan 251 15 + SelectionMerge 255 None + BranchConditional 253 254 255 + 254: Label + 256: 10(int) Load 131(index) + 257: 10(int) ISub 256 32 + 259: 210(ptr) AccessChain 186(particleIn) 116 257 116 + 260: 75(fvec4) Load 259 + 261: 17(fvec3) VectorShuffle 260 260 0 1 2 + Store 258(param) 261 + 263: 17(fvec3) Load 232(pos) + Store 262(param) 263 + 265: 118(ptr) AccessChain 113 116 189 + 266: 7(float) Load 265 + Store 264(param) 266 + 267: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 258(param) 262(param) 264(param) + 268: 17(fvec3) Load 220(force) + 269: 17(fvec3) FAdd 268 267 + Store 220(force) 269 + 270: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 269 41 + Branch 255 + 255: Label + 271: 130(ptr) AccessChain 54(id) 15 + 272: 10(int) Load 271 + 273: 138(ptr) AccessChain 113 116 137 15 + 274: 77(int) Load 273 + 275: 77(int) ISub 274 215 + 276: 10(int) Bitcast 275 + 278: 154(bool) ULessThan 272 276 + SelectionMerge 280 None + BranchConditional 278 279 280 + 279: Label + 281: 10(int) Load 131(index) + 282: 10(int) IAdd 281 32 + 284: 210(ptr) AccessChain 186(particleIn) 116 282 116 + 285: 75(fvec4) Load 284 + 286: 17(fvec3) VectorShuffle 285 285 0 1 2 + Store 283(param) 286 + 288: 17(fvec3) Load 232(pos) + Store 287(param) 288 + 290: 118(ptr) AccessChain 113 116 189 + 291: 7(float) Load 290 + Store 289(param) 291 + 292: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 283(param) 287(param) 289(param) + 293: 17(fvec3) Load 220(force) + 294: 17(fvec3) FAdd 293 292 + Store 220(force) 294 + 295: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 294 41 + Branch 280 + 280: Label + 296: 130(ptr) AccessChain 54(id) 32 + 297: 10(int) Load 296 + 298: 138(ptr) AccessChain 113 116 137 32 + 299: 77(int) Load 298 + 300: 77(int) ISub 299 215 + 301: 10(int) Bitcast 300 + 303: 154(bool) ULessThan 297 301 + SelectionMerge 305 None + BranchConditional 303 304 305 + 304: Label + 306: 10(int) Load 131(index) + 307: 138(ptr) AccessChain 113 116 137 15 + 308: 77(int) Load 307 + 309: 10(int) Bitcast 308 + 310: 10(int) IAdd 306 309 + 313: 210(ptr) AccessChain 186(particleIn) 116 310 116 + 314: 75(fvec4) Load 313 + 315: 17(fvec3) VectorShuffle 314 314 0 1 2 + Store 312(param) 315 + 317: 17(fvec3) Load 232(pos) + Store 316(param) 317 + 319: 118(ptr) AccessChain 113 116 311 + 320: 7(float) Load 319 + Store 318(param) 320 + 321: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 312(param) 316(param) 318(param) + 322: 17(fvec3) Load 220(force) + 323: 17(fvec3) FAdd 322 321 + Store 220(force) 323 + 324: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 323 41 + Branch 305 + 305: Label + 325: 130(ptr) AccessChain 54(id) 32 + 326: 10(int) Load 325 + 328: 154(bool) UGreaterThan 326 15 + SelectionMerge 330 None + BranchConditional 328 329 330 + 329: Label + 331: 10(int) Load 131(index) + 332: 138(ptr) AccessChain 113 116 137 15 + 333: 77(int) Load 332 + 334: 10(int) Bitcast 333 + 335: 10(int) ISub 331 334 + 337: 210(ptr) AccessChain 186(particleIn) 116 335 116 + 338: 75(fvec4) Load 337 + 339: 17(fvec3) VectorShuffle 338 338 0 1 2 + Store 336(param) 339 + 341: 17(fvec3) Load 232(pos) + Store 340(param) 341 + 343: 118(ptr) AccessChain 113 116 311 + 344: 7(float) Load 343 + Store 342(param) 344 + 345: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 336(param) 340(param) 342(param) + 346: 17(fvec3) Load 220(force) + 347: 17(fvec3) FAdd 346 345 + Store 220(force) 347 + 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 347 41 + Branch 330 + 330: Label + 349: 130(ptr) AccessChain 54(id) 15 + 350: 10(int) Load 349 + 352: 154(bool) UGreaterThan 350 15 + 353: 130(ptr) AccessChain 54(id) 32 + 354: 10(int) Load 353 + 355: 138(ptr) AccessChain 113 116 137 32 + 356: 77(int) Load 355 + 357: 77(int) ISub 356 215 + 358: 10(int) Bitcast 357 + 360: 154(bool) ULessThan 354 358 + 362: 154(bool) LogicalAnd 352 360 + SelectionMerge 364 None + BranchConditional 362 363 364 + 363: Label + 365: 10(int) Load 131(index) + 366: 138(ptr) AccessChain 113 116 137 15 + 367: 77(int) Load 366 + 368: 10(int) Bitcast 367 + 369: 10(int) IAdd 365 368 + 370: 10(int) ISub 369 32 + 373: 210(ptr) AccessChain 186(particleIn) 116 370 116 + 374: 75(fvec4) Load 373 + 375: 17(fvec3) VectorShuffle 374 374 0 1 2 + Store 372(param) 375 + 377: 17(fvec3) Load 232(pos) + Store 376(param) 377 + 379: 118(ptr) AccessChain 113 116 371 + 380: 7(float) Load 379 + Store 378(param) 380 + 381: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 372(param) 376(param) 378(param) + 382: 17(fvec3) Load 220(force) + 383: 17(fvec3) FAdd 382 381 + Store 220(force) 383 + 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 383 41 + Branch 364 + 364: Label + 385: 130(ptr) AccessChain 54(id) 15 + 386: 10(int) Load 385 + 388: 154(bool) UGreaterThan 386 15 + 389: 130(ptr) AccessChain 54(id) 32 + 390: 10(int) Load 389 + 392: 154(bool) UGreaterThan 390 15 + 394: 154(bool) LogicalAnd 388 392 + SelectionMerge 396 None + BranchConditional 394 395 396 + 395: Label + 397: 10(int) Load 131(index) + 398: 138(ptr) AccessChain 113 116 137 15 + 399: 77(int) Load 398 + 400: 10(int) Bitcast 399 + 401: 10(int) ISub 397 400 + 402: 10(int) ISub 401 32 + 404: 210(ptr) AccessChain 186(particleIn) 116 402 116 + 405: 75(fvec4) Load 404 + 406: 17(fvec3) VectorShuffle 405 405 0 1 2 + Store 403(param) 406 + 408: 17(fvec3) Load 232(pos) + Store 407(param) 408 + 410: 118(ptr) AccessChain 113 116 371 + 411: 7(float) Load 410 + Store 409(param) 411 + 412: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 403(param) 407(param) 409(param) + 413: 17(fvec3) Load 220(force) + 414: 17(fvec3) FAdd 413 412 + Store 220(force) 414 + 415: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 414 41 + Branch 396 + 396: Label + 416: 130(ptr) AccessChain 54(id) 15 + 417: 10(int) Load 416 + 418: 138(ptr) AccessChain 113 116 137 15 + 419: 77(int) Load 418 + 420: 77(int) ISub 419 215 + 421: 10(int) Bitcast 420 + 423: 154(bool) ULessThan 417 421 + 424: 130(ptr) AccessChain 54(id) 32 + 425: 10(int) Load 424 + 426: 138(ptr) AccessChain 113 116 137 32 + 427: 77(int) Load 426 + 428: 77(int) ISub 427 215 + 429: 10(int) Bitcast 428 + 431: 154(bool) ULessThan 425 429 + 433: 154(bool) LogicalAnd 423 431 + SelectionMerge 435 None + BranchConditional 433 434 435 + 434: Label + 436: 10(int) Load 131(index) + 437: 138(ptr) AccessChain 113 116 137 15 + 438: 77(int) Load 437 + 439: 10(int) Bitcast 438 + 440: 10(int) IAdd 436 439 + 441: 10(int) IAdd 440 32 + 443: 210(ptr) AccessChain 186(particleIn) 116 441 116 + 444: 75(fvec4) Load 443 + 445: 17(fvec3) VectorShuffle 444 444 0 1 2 + Store 442(param) 445 + 447: 17(fvec3) Load 232(pos) + Store 446(param) 447 + 449: 118(ptr) AccessChain 113 116 371 + 450: 7(float) Load 449 + Store 448(param) 450 + 451: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 442(param) 446(param) 448(param) + 452: 17(fvec3) Load 220(force) + 453: 17(fvec3) FAdd 452 451 + Store 220(force) 453 + 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 453 41 + Branch 435 + 435: Label + 455: 130(ptr) AccessChain 54(id) 15 + 456: 10(int) Load 455 + 457: 138(ptr) AccessChain 113 116 137 15 + 458: 77(int) Load 457 + 459: 77(int) ISub 458 215 + 460: 10(int) Bitcast 459 + 462: 154(bool) ULessThan 456 460 + 463: 130(ptr) AccessChain 54(id) 32 + 464: 10(int) Load 463 + 466: 154(bool) UGreaterThan 464 15 + 468: 154(bool) LogicalAnd 462 466 + SelectionMerge 470 None + BranchConditional 468 469 470 + 469: Label + 471: 10(int) Load 131(index) + 472: 138(ptr) AccessChain 113 116 137 15 + 473: 77(int) Load 472 + 474: 10(int) Bitcast 473 + 475: 10(int) ISub 471 474 + 476: 10(int) IAdd 475 32 + 478: 210(ptr) AccessChain 186(particleIn) 116 476 116 + 479: 75(fvec4) Load 478 + 480: 17(fvec3) VectorShuffle 479 479 0 1 2 + Store 477(param) 480 + 482: 17(fvec3) Load 232(pos) + Store 481(param) 482 + 484: 118(ptr) AccessChain 113 116 371 + 485: 7(float) Load 484 + Store 483(param) 485 + 486: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 477(param) 481(param) 483(param) + 487: 17(fvec3) Load 220(force) + 488: 17(fvec3) FAdd 487 486 + Store 220(force) 488 + 489: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 488 41 + Branch 470 + 470: Label + 491: 118(ptr) AccessChain 113 116 490 + 492: 7(float) Load 491 + 493: 7(float) FNegate 492 + 494: 17(fvec3) Load 241(vel) + 495: 17(fvec3) VectorTimesScalar 494 493 + 496: 17(fvec3) Load 220(force) + 497: 17(fvec3) FAdd 496 495 + Store 220(force) 497 + 498: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 497 41 + 503: 17(fvec3) Load 220(force) + 504: 118(ptr) AccessChain 113 116 215 + 505: 7(float) Load 504 + 506: 7(float) FDiv 192 505 + 507: 17(fvec3) VectorTimesScalar 503 506 + Store 499(f) 507 + 508: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 500 507 41 + 509: 10(int) Load 131(index) + 510: 17(fvec3) Load 232(pos) + 511: 17(fvec3) Load 241(vel) + 512: 118(ptr) AccessChain 113 116 116 + 513: 7(float) Load 512 + 514: 17(fvec3) VectorTimesScalar 511 513 + 515: 17(fvec3) FAdd 510 514 + 517: 17(fvec3) Load 499(f) + 518: 17(fvec3) VectorTimesScalar 517 516 + 519: 118(ptr) AccessChain 113 116 116 + 520: 7(float) Load 519 + 521: 17(fvec3) VectorTimesScalar 518 520 + 522: 118(ptr) AccessChain 113 116 116 + 523: 7(float) Load 522 + 524: 17(fvec3) VectorTimesScalar 521 523 + 525: 17(fvec3) FAdd 515 524 + 526: 7(float) CompositeExtract 525 0 + 527: 7(float) CompositeExtract 525 1 + 528: 7(float) CompositeExtract 525 2 + 529: 75(fvec4) CompositeConstruct 526 527 528 192 + 530: 210(ptr) AccessChain 206(particleOut) 116 509 116 + Store 530 529 + 531: 10(int) Load 131(index) + 532: 17(fvec3) Load 241(vel) + 533: 17(fvec3) Load 499(f) + 534: 118(ptr) AccessChain 113 116 116 + 535: 7(float) Load 534 + 536: 17(fvec3) VectorTimesScalar 533 535 + 537: 17(fvec3) FAdd 532 536 + 538: 7(float) CompositeExtract 537 0 + 539: 7(float) CompositeExtract 537 1 + 540: 7(float) CompositeExtract 537 2 + 541: 75(fvec4) CompositeConstruct 538 539 540 216 + 542: 210(ptr) AccessChain 206(particleOut) 116 531 215 + Store 542 541 + 547: 10(int) Load 131(index) + 548: 210(ptr) AccessChain 206(particleOut) 116 547 116 + 549: 75(fvec4) Load 548 + 550: 17(fvec3) VectorShuffle 549 549 0 1 2 + 552: 210(ptr) AccessChain 113 116 551 + 553: 75(fvec4) Load 552 + 554: 17(fvec3) VectorShuffle 553 553 0 1 2 + 555: 17(fvec3) FSub 550 554 + Store 543(sphereDist) 555 + 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 544 555 41 + 557: 17(fvec3) Load 543(sphereDist) + 558: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 557 + 560: 118(ptr) AccessChain 113 116 559 + 561: 7(float) Load 560 + 563: 7(float) FAdd 561 562 + 565: 154(bool) FOrdLessThan 558 563 + SelectionMerge 567 None + BranchConditional 565 566 567 + 566: Label + 568: 10(int) Load 131(index) + 569: 210(ptr) AccessChain 113 116 551 + 570: 75(fvec4) Load 569 + 571: 17(fvec3) VectorShuffle 570 570 0 1 2 + 572: 17(fvec3) Load 543(sphereDist) + 573: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 572 + 574: 118(ptr) AccessChain 113 116 559 + 575: 7(float) Load 574 + 576: 7(float) FAdd 575 562 + 577: 17(fvec3) VectorTimesScalar 573 576 + 578: 17(fvec3) FAdd 571 577 + 579: 118(ptr) AccessChain 206(particleOut) 116 568 116 15 + 580: 7(float) CompositeExtract 578 0 + Store 579 580 + 581: 118(ptr) AccessChain 206(particleOut) 116 568 116 32 + 582: 7(float) CompositeExtract 578 1 + Store 581 582 + 583: 118(ptr) AccessChain 206(particleOut) 116 568 116 44 + 584: 7(float) CompositeExtract 578 2 + Store 583 584 + 585: 10(int) Load 131(index) + 586: 210(ptr) AccessChain 206(particleOut) 116 585 215 + Store 586 217 + Branch 567 + 567: Label + 605: 604(ptr) AccessChain 602 116 116 + 606: 10(int) Load 605 + 608: 154(bool) IEqual 606 32 + SelectionMerge 610 None + BranchConditional 608 609 610 + 609: Label + Store 611(normal) 614 + 615: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 614 41 + 616: 130(ptr) AccessChain 54(id) 32 + 617: 10(int) Load 616 + 619: 154(bool) UGreaterThan 617 15 + SelectionMerge 621 None + BranchConditional 619 620 621 + 620: Label + 622: 130(ptr) AccessChain 54(id) 15 + 623: 10(int) Load 622 + 625: 154(bool) UGreaterThan 623 15 + SelectionMerge 627 None + BranchConditional 625 626 627 + 626: Label + 632: 10(int) Load 131(index) + 633: 10(int) ISub 632 32 + 634: 210(ptr) AccessChain 186(particleIn) 116 633 116 + 635: 75(fvec4) Load 634 + 636: 17(fvec3) VectorShuffle 635 635 0 1 2 + 637: 17(fvec3) Load 232(pos) + 638: 17(fvec3) FSub 636 637 + Store 628(a) 638 + 639: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 638 41 + 644: 10(int) Load 131(index) + 645: 138(ptr) AccessChain 113 116 137 15 + 646: 77(int) Load 645 + 647: 10(int) Bitcast 646 + 648: 10(int) ISub 644 647 + 649: 10(int) ISub 648 32 + 650: 210(ptr) AccessChain 186(particleIn) 116 649 116 + 651: 75(fvec4) Load 650 + 652: 17(fvec3) VectorShuffle 651 651 0 1 2 + 653: 17(fvec3) Load 232(pos) + 654: 17(fvec3) FSub 652 653 + Store 640(b) 654 + 655: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 654 41 + 660: 10(int) Load 131(index) + 661: 138(ptr) AccessChain 113 116 137 15 + 662: 77(int) Load 661 + 663: 10(int) Bitcast 662 + 664: 10(int) ISub 660 663 + 665: 210(ptr) AccessChain 186(particleIn) 116 664 116 + 666: 75(fvec4) Load 665 + 667: 17(fvec3) VectorShuffle 666 666 0 1 2 + 668: 17(fvec3) Load 232(pos) + 669: 17(fvec3) FSub 667 668 + Store 656(c) 669 + 670: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 669 41 + 671: 17(fvec3) Load 628(a) + 672: 17(fvec3) Load 640(b) + 673: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 671 672 + 674: 17(fvec3) Load 640(b) + 675: 17(fvec3) Load 656(c) + 676: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 674 675 + 677: 17(fvec3) FAdd 673 676 + 678: 17(fvec3) Load 611(normal) + 679: 17(fvec3) FAdd 678 677 + Store 611(normal) 679 + 680: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 679 41 + Branch 627 + 627: Label + 681: 130(ptr) AccessChain 54(id) 15 + 682: 10(int) Load 681 + 683: 138(ptr) AccessChain 113 116 137 15 + 684: 77(int) Load 683 + 685: 77(int) ISub 684 215 + 686: 10(int) Bitcast 685 + 688: 154(bool) ULessThan 682 686 + SelectionMerge 690 None + BranchConditional 688 689 690 + 689: Label + 691: 10(int) Load 131(index) + 692: 138(ptr) AccessChain 113 116 137 15 + 693: 77(int) Load 692 + 694: 10(int) Bitcast 693 + 695: 10(int) ISub 691 694 + 696: 210(ptr) AccessChain 186(particleIn) 116 695 116 + 697: 75(fvec4) Load 696 + 698: 17(fvec3) VectorShuffle 697 697 0 1 2 + 699: 17(fvec3) Load 232(pos) + 700: 17(fvec3) FSub 698 699 + Store 628(a) 700 + 701: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 700 41 + 702: 10(int) Load 131(index) + 703: 138(ptr) AccessChain 113 116 137 15 + 704: 77(int) Load 703 + 705: 10(int) Bitcast 704 + 706: 10(int) ISub 702 705 + 707: 10(int) IAdd 706 32 + 708: 210(ptr) AccessChain 186(particleIn) 116 707 116 + 709: 75(fvec4) Load 708 + 710: 17(fvec3) VectorShuffle 709 709 0 1 2 + 711: 17(fvec3) Load 232(pos) + 712: 17(fvec3) FSub 710 711 + Store 640(b) 712 + 713: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 712 41 + 714: 10(int) Load 131(index) + 715: 10(int) IAdd 714 32 + 716: 210(ptr) AccessChain 186(particleIn) 116 715 116 + 717: 75(fvec4) Load 716 + 718: 17(fvec3) VectorShuffle 717 717 0 1 2 + 719: 17(fvec3) Load 232(pos) + 720: 17(fvec3) FSub 718 719 + Store 656(c) 720 + 721: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 720 41 + 722: 17(fvec3) Load 628(a) + 723: 17(fvec3) Load 640(b) + 724: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 722 723 + 725: 17(fvec3) Load 640(b) + 726: 17(fvec3) Load 656(c) + 727: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 725 726 + 728: 17(fvec3) FAdd 724 727 + 729: 17(fvec3) Load 611(normal) + 730: 17(fvec3) FAdd 729 728 + Store 611(normal) 730 + 731: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 730 41 + Branch 690 + 690: Label + Branch 621 + 621: Label + 732: 130(ptr) AccessChain 54(id) 32 + 733: 10(int) Load 732 + 734: 138(ptr) AccessChain 113 116 137 32 + 735: 77(int) Load 734 + 736: 77(int) ISub 735 215 + 737: 10(int) Bitcast 736 + 739: 154(bool) ULessThan 733 737 + SelectionMerge 741 None + BranchConditional 739 740 741 + 740: Label + 742: 130(ptr) AccessChain 54(id) 15 + 743: 10(int) Load 742 + 745: 154(bool) UGreaterThan 743 15 + SelectionMerge 747 None + BranchConditional 745 746 747 + 746: Label + 748: 10(int) Load 131(index) + 749: 138(ptr) AccessChain 113 116 137 15 + 750: 77(int) Load 749 + 751: 10(int) Bitcast 750 + 752: 10(int) IAdd 748 751 + 753: 210(ptr) AccessChain 186(particleIn) 116 752 116 + 754: 75(fvec4) Load 753 + 755: 17(fvec3) VectorShuffle 754 754 0 1 2 + 756: 17(fvec3) Load 232(pos) + 757: 17(fvec3) FSub 755 756 + Store 628(a) 757 + 758: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 757 41 + 759: 10(int) Load 131(index) + 760: 138(ptr) AccessChain 113 116 137 15 + 761: 77(int) Load 760 + 762: 10(int) Bitcast 761 + 763: 10(int) IAdd 759 762 + 764: 10(int) ISub 763 32 + 765: 210(ptr) AccessChain 186(particleIn) 116 764 116 + 766: 75(fvec4) Load 765 + 767: 17(fvec3) VectorShuffle 766 766 0 1 2 + 768: 17(fvec3) Load 232(pos) + 769: 17(fvec3) FSub 767 768 + Store 640(b) 769 + 770: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 769 41 + 771: 10(int) Load 131(index) + 772: 10(int) ISub 771 32 + 773: 210(ptr) AccessChain 186(particleIn) 116 772 116 + 774: 75(fvec4) Load 773 + 775: 17(fvec3) VectorShuffle 774 774 0 1 2 + 776: 17(fvec3) Load 232(pos) + 777: 17(fvec3) FSub 775 776 + Store 656(c) 777 + 778: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 777 41 + 779: 17(fvec3) Load 628(a) + 780: 17(fvec3) Load 640(b) + 781: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 779 780 + 782: 17(fvec3) Load 640(b) + 783: 17(fvec3) Load 656(c) + 784: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 782 783 + 785: 17(fvec3) FAdd 781 784 + 786: 17(fvec3) Load 611(normal) + 787: 17(fvec3) FAdd 786 785 + Store 611(normal) 787 + 788: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 787 41 + Branch 747 + 747: Label + 789: 130(ptr) AccessChain 54(id) 15 + 790: 10(int) Load 789 + 791: 138(ptr) AccessChain 113 116 137 15 + 792: 77(int) Load 791 + 793: 77(int) ISub 792 215 + 794: 10(int) Bitcast 793 + 796: 154(bool) ULessThan 790 794 + SelectionMerge 798 None + BranchConditional 796 797 798 + 797: Label + 799: 10(int) Load 131(index) + 800: 10(int) IAdd 799 32 + 801: 210(ptr) AccessChain 186(particleIn) 116 800 116 + 802: 75(fvec4) Load 801 + 803: 17(fvec3) VectorShuffle 802 802 0 1 2 + 804: 17(fvec3) Load 232(pos) + 805: 17(fvec3) FSub 803 804 + Store 628(a) 805 + 806: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 805 41 + 807: 10(int) Load 131(index) + 808: 138(ptr) AccessChain 113 116 137 15 + 809: 77(int) Load 808 + 810: 10(int) Bitcast 809 + 811: 10(int) IAdd 807 810 + 812: 10(int) IAdd 811 32 + 813: 210(ptr) AccessChain 186(particleIn) 116 812 116 + 814: 75(fvec4) Load 813 + 815: 17(fvec3) VectorShuffle 814 814 0 1 2 + 816: 17(fvec3) Load 232(pos) + 817: 17(fvec3) FSub 815 816 + Store 640(b) 817 + 818: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 817 41 + 819: 10(int) Load 131(index) + 820: 138(ptr) AccessChain 113 116 137 15 + 821: 77(int) Load 820 + 822: 10(int) Bitcast 821 + 823: 10(int) IAdd 819 822 + 824: 210(ptr) AccessChain 186(particleIn) 116 823 116 + 825: 75(fvec4) Load 824 + 826: 17(fvec3) VectorShuffle 825 825 0 1 2 + 827: 17(fvec3) Load 232(pos) + 828: 17(fvec3) FSub 826 827 + Store 656(c) 828 + 829: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 828 41 + 830: 17(fvec3) Load 628(a) + 831: 17(fvec3) Load 640(b) + 832: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 830 831 + 833: 17(fvec3) Load 640(b) + 834: 17(fvec3) Load 656(c) + 835: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 833 834 + 836: 17(fvec3) FAdd 832 835 + 837: 17(fvec3) Load 611(normal) + 838: 17(fvec3) FAdd 837 836 + Store 611(normal) 838 + 839: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 838 41 + Branch 798 + 798: Label + Branch 741 + 741: Label + 840: 10(int) Load 131(index) + 841: 17(fvec3) Load 611(normal) + 842: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 841 + 843: 7(float) CompositeExtract 842 0 + 844: 7(float) CompositeExtract 842 1 + 845: 7(float) CompositeExtract 842 2 + 846: 75(fvec4) CompositeConstruct 843 844 845 216 + 847: 210(ptr) AccessChain 206(particleOut) 116 840 490 + Store 847 846 + Branch 610 + 610: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out new file mode 100644 index 0000000000..679fcd5e9a --- /dev/null +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -0,0 +1,1003 @@ +spv.debuginfo.hlsl.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 759 + + Capability Shader + Capability ImageQuery + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 5 "main" 752 755 + ExecutionMode 5 OriginUpperLeft + 9: String "float" + 12: String "uint" + 32: String "textureProj" + 35: String "" + 43: String "P" + 47: String "layer" + 50: String "offset" + 57: String "filterPCF" + 63: String "sc" + 75: String "shadow" + 81: String "fragcolor" + 84: String "fragPos" + 90: String "@main" + 96: String "inUV" + 106: String "shadowCoord" + 128: String "bool" + 141: String "dist" + 145: String "type.2d.image" + 146: String "@type.2d.image" + 151: String "textureShadowMap" + 156: String "type.sampler" + 157: String "@type.sampler" + 161: String "samplerShadowMap" + 165: String "type.sampled.image" + 166: String "@type.sampled.image" + 204: String "sizeQueryTemp" + 210: String "int" + 217: String "texDim" + 230: String "elements" + 237: String "levels" + 244: String "scale" + 250: String "dx" + 261: String "dy" + 272: String "shadowFactor" + 277: String "count" + 283: String "range" + 289: String "x" + 305: String "y" + 355: String "i" + 369: String "shadowClip" + 381: String "color" + 387: String "viewMatrix" + 391: String "Light" + 397: String "lights" + 400: String "displayDebugTarget" + 405: String "UBO" + 408: String "ubo" + 450: String "textureposition" + 455: String "samplerposition" + 466: String "normal" + 470: String "textureNormal" + 475: String "samplerNormal" + 484: String "albedo" + 488: String "textureAlbedo" + 493: String "samplerAlbedo" + 552: String "N" + 571: String "L" + 592: String "V" + 605: String "lightCosInnerAngle" + 611: String "lightCosOuterAngle" + 617: String "lightRange" + 623: String "dir" + 638: String "cosDir" + 646: String "spotEffect" + 655: String "heightAttenuation" + 663: String "NdotL" + 672: String "diff" + 679: String "R" + 688: String "NdotR" + 697: String "spec" + Name 5 "main" + Name 31 "textureProj(vf4;f1;vf2;" + Name 28 "P" + Name 29 "layer" + Name 30 "offset" + Name 56 "filterPCF(vf4;f1;" + Name 54 "sc" + Name 55 "layer" + Name 74 "shadow(vf3;vf3;" + Name 72 "fragcolor" + Name 73 "fragPos" + Name 89 "@main(vf2;" + Name 88 "inUV" + Name 99 "shadow" + Name 104 "shadowCoord" + Name 139 "dist" + Name 149 "textureShadowMap" + Name 159 "samplerShadowMap" + Name 202 "sizeQueryTemp" + Name 215 "texDim" + Name 228 "elements" + Name 235 "levels" + Name 242 "scale" + Name 248 "dx" + Name 259 "dy" + Name 270 "shadowFactor" + Name 275 "count" + Name 281 "range" + Name 287 "x" + Name 303 "y" + Name 328 "param" + Name 330 "param" + Name 332 "param" + Name 353 "i" + Name 367 "shadowClip" + Name 379 "Light" + MemberName 379(Light) 0 "position" + MemberName 379(Light) 1 "target" + MemberName 379(Light) 2 "color" + MemberName 379(Light) 3 "viewMatrix" + Name 394 "UBO" + MemberName 394(UBO) 0 "viewPos" + MemberName 394(UBO) 1 "lights" + MemberName 394(UBO) 2 "useShadows" + MemberName 394(UBO) 3 "displayDebugTarget" + Name 406 "ubo" + MemberName 406(ubo) 0 "ubo" + Name 413 "" + Name 421 "shadowFactor" + Name 426 "param" + Name 428 "param" + Name 442 "fragPos" + Name 448 "textureposition" + Name 453 "samplerposition" + Name 464 "normal" + Name 468 "textureNormal" + Name 473 "samplerNormal" + Name 482 "albedo" + Name 486 "textureAlbedo" + Name 491 "samplerAlbedo" + Name 514 "fragcolor" + Name 518 "param" + Name 519 "param" + Name 550 "N" + Name 557 "i" + Name 569 "L" + Name 581 "dist" + Name 590 "V" + Name 603 "lightCosInnerAngle" + Name 609 "lightCosOuterAngle" + Name 615 "lightRange" + Name 621 "dir" + Name 636 "cosDir" + Name 644 "spotEffect" + Name 653 "heightAttenuation" + Name 661 "NdotL" + Name 670 "diff" + Name 677 "R" + Name 686 "NdotR" + Name 695 "spec" + Name 737 "param" + Name 739 "param" + Name 750 "inUV" + Name 752 "inUV" + Name 755 "@entryPointOutput" + Name 756 "param" + Decorate 149(textureShadowMap) DescriptorSet 0 + Decorate 149(textureShadowMap) Binding 5 + Decorate 159(samplerShadowMap) DescriptorSet 0 + Decorate 159(samplerShadowMap) Binding 5 + MemberDecorate 379(Light) 0 Offset 0 + MemberDecorate 379(Light) 1 Offset 16 + MemberDecorate 379(Light) 2 Offset 32 + MemberDecorate 379(Light) 3 RowMajor + MemberDecorate 379(Light) 3 Offset 48 + MemberDecorate 379(Light) 3 MatrixStride 16 + Decorate 392 ArrayStride 112 + MemberDecorate 394(UBO) 0 Offset 0 + MemberDecorate 394(UBO) 1 Offset 16 + MemberDecorate 394(UBO) 2 Offset 352 + MemberDecorate 394(UBO) 3 Offset 356 + MemberDecorate 406(ubo) 0 Offset 0 + Decorate 406(ubo) Block + Decorate 413 DescriptorSet 0 + Decorate 413 Binding 4 + Decorate 448(textureposition) DescriptorSet 0 + Decorate 448(textureposition) Binding 1 + Decorate 453(samplerposition) DescriptorSet 0 + Decorate 453(samplerposition) Binding 1 + Decorate 468(textureNormal) DescriptorSet 0 + Decorate 468(textureNormal) Binding 2 + Decorate 473(samplerNormal) DescriptorSet 0 + Decorate 473(samplerNormal) Binding 2 + Decorate 486(textureAlbedo) DescriptorSet 0 + Decorate 486(textureAlbedo) Binding 3 + Decorate 491(samplerAlbedo) DescriptorSet 0 + Decorate 491(samplerAlbedo) Binding 3 + Decorate 752(inUV) Location 0 + Decorate 755(@entryPointOutput) Location 0 + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeFloat 32 + 10: TypeInt 32 0 + 13: 10(int) Constant 32 + 14: 10(int) Constant 6 + 15: 10(int) Constant 0 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 16: 10(int) Constant 3 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 17: TypeVector 7(float) 4 + 18: 10(int) Constant 4 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18 + 20: TypePointer Function 17(fvec4) + 21: TypePointer Function 7(float) + 22: TypeVector 7(float) 2 + 23: 10(int) Constant 2 + 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 23 + 25: TypePointer Function 22(fvec2) + 26: TypeFunction 7(float) 20(ptr) 21(ptr) 25(ptr) + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 8 24 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 35 + 37: 10(int) Constant 1 + 38: 10(int) Constant 5 + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 37 18 34 38 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 32 27 34 15 15 36 32 16 15 + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 43 19 34 15 15 33 18 37 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 34 15 15 33 18 23 + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 50 24 34 15 15 33 18 16 + 52: TypeFunction 7(float) 20(ptr) 21(ptr) + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 8 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 57 53 34 15 15 36 57 16 15 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 63 19 34 15 15 58 18 37 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 34 15 15 58 18 23 + 67: TypeVector 7(float) 3 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 69: TypePointer Function 67(fvec3) + 70: TypeFunction 67(fvec3) 69(ptr) 69(ptr) + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 68 68 68 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 75 71 34 15 15 36 75 16 15 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 15 15 76 18 37 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 15 15 76 18 23 + 86: TypeFunction 17(fvec4) 25(ptr) + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 19 24 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 90 87 34 15 15 36 90 16 15 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 24 34 15 15 91 18 37 + 101: 10(int) Constant 62 + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 75 8 34 101 15 33 18 + 102: 7(float) Constant 1065353216 + 107: 10(int) Constant 63 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 106 19 34 107 15 33 18 + 116: 7(float) Constant 1056964608 + 126: 7(float) Constant 3212836864 + 127: TypeBool + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 142: 10(int) Constant 68 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 142 15 33 18 + 143: TypeImage 7(float) 2D array sampled format:Unknown + 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 145 15 34 142 15 36 146 147 16 + 148: TypePointer UniformConstant 143 +149(textureShadowMap): 148(ptr) Variable UniformConstant + 152: 10(int) Constant 8 + 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 151 144 34 142 15 36 151 149(textureShadowMap) 152 + 154: TypeSampler + 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 142 15 36 157 147 16 + 158: TypePointer UniformConstant 154 +159(samplerShadowMap): 158(ptr) Variable UniformConstant + 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 161 155 34 142 15 36 161 159(samplerShadowMap) 152 + 163: TypeSampledImage 143 + 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 165 15 34 142 15 36 166 147 16 + 181: 7(float) Constant 0 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 193: 7(float) Constant 1048576000 + 199: TypeVector 10(int) 3 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16 + 201: TypePointer Function 199(ivec3) + 205: 10(int) Constant 80 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 204 200 34 205 15 58 18 + 209: TypeInt 32 1 + 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 210 13 18 15 + 212: TypeVector 209(int) 2 + 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 211 23 + 214: TypePointer Function 212(ivec2) + 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 217 213 34 205 15 58 18 + 218: TypePointer Function 10(int) + 222: TypePointer Function 209(int) + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 211 34 205 15 58 18 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 237 211 34 205 15 58 18 + 245: 10(int) Constant 81 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 8 34 245 15 58 18 + 246: 7(float) Constant 1069547520 + 251: 10(int) Constant 82 + 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 250 8 34 251 15 58 18 + 262: 10(int) Constant 83 + 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 8 34 262 15 58 18 + 273: 10(int) Constant 85 + 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 273 15 58 18 + 278: 10(int) Constant 86 + 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 277 211 34 278 15 58 18 + 279: 209(int) Constant 0 + 284: 10(int) Constant 87 + 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 283 211 34 284 15 58 18 + 285: 209(int) Constant 1 + 290: 10(int) Constant 89 + 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 211 34 290 15 58 18 + 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 306: 10(int) Constant 91 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 305 211 34 306 15 58 18 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 356: 10(int) Constant 102 + 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 355 211 34 356 15 76 18 + 364: 209(int) Constant 3 + 365: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 370: 10(int) Constant 104 + 368: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 369 19 34 370 15 76 18 + 376: TypeMatrix 17(fvec4) 4 + 378: 127(bool) ConstantTrue + 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 378 + 379(Light): TypeStruct 17(fvec4) 17(fvec4) 17(fvec4) 376 + 382: 10(int) Constant 46 + 383: 10(int) Constant 14 + 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 + 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 + 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 + 388: 10(int) Constant 47 + 389: 10(int) Constant 21 + 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 387 377 34 388 389 15 15 16 + 390: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 391 37 34 370 15 36 391 15 16 380 384 385 386 + 392: TypeArray 379(Light) 16 + 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 390 16 + 394(UBO): TypeStruct 17(fvec4) 392 209(int) 209(int) + 395: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 + 398: 10(int) Constant 53 + 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 393 34 398 383 15 15 16 + 401: 10(int) Constant 55 + 402: 10(int) Constant 24 + 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 400 211 34 401 402 15 15 16 + 403: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 400 211 34 401 402 15 15 16 + 404: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 405 37 34 370 15 36 405 15 16 395 396 399 403 + 406(ubo): TypeStruct 394(UBO) + 409: 10(int) Constant 58 + 410: 10(int) Constant 37 + 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 408 404 34 409 410 15 15 16 + 411: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 408 37 34 370 15 36 408 15 16 407 + 412: TypePointer Uniform 406(ubo) + 413: 412(ptr) Variable Uniform + 414: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 35 411 34 370 15 36 35 413 152 + 416: TypePointer Uniform 376 + 423: 10(int) Constant 108 + 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 423 15 76 18 + 444: 10(int) Constant 121 + 443: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 444 15 91 18 + 445: TypeImage 7(float) 2D sampled format:Unknown + 446: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 145 15 34 444 15 36 146 147 16 + 447: TypePointer UniformConstant 445 +448(textureposition): 447(ptr) Variable UniformConstant + 449: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 450 446 34 444 15 36 450 448(textureposition) 152 + 452: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 444 15 36 157 147 16 +453(samplerposition): 158(ptr) Variable UniformConstant + 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 455 452 34 444 15 36 455 453(samplerposition) 152 + 457: TypeSampledImage 445 + 458: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 165 15 34 444 15 36 166 147 16 + 467: 10(int) Constant 122 + 465: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 466 68 34 467 15 91 18 +468(textureNormal): 447(ptr) Variable UniformConstant + 469: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 470 446 34 467 15 36 470 468(textureNormal) 152 + 472: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 467 15 36 157 147 16 +473(samplerNormal): 158(ptr) Variable UniformConstant + 474: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 475 472 34 467 15 36 475 473(samplerNormal) 152 + 485: 10(int) Constant 123 + 483: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 484 19 34 485 15 91 18 +486(textureAlbedo): 447(ptr) Variable UniformConstant + 487: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 488 446 34 485 15 36 488 486(textureAlbedo) 152 + 490: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 485 15 36 157 147 16 +491(samplerAlbedo): 158(ptr) Variable UniformConstant + 492: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 493 490 34 485 15 36 493 491(samplerAlbedo) 152 + 499: TypePointer Uniform 209(int) + 502: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 516: 10(int) Constant 131 + 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 516 15 91 18 + 517: 67(fvec3) ConstantComposite 102 102 102 + 547: 7(float) Constant 1036831949 + 553: 10(int) Constant 152 + 551: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 552 68 34 553 15 91 18 + 559: 10(int) Constant 154 + 558: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 355 211 34 559 15 91 18 + 567: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 572: 10(int) Constant 157 + 570: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 571 68 34 572 15 91 18 + 574: TypePointer Uniform 17(fvec4) + 583: 10(int) Constant 159 + 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 583 15 91 18 + 593: 10(int) Constant 163 + 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 592 68 34 593 15 91 18 + 606: 10(int) Constant 166 + 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 605 8 34 606 15 91 18 + 607: 7(float) Constant 1064781546 + 612: 10(int) Constant 167 + 610: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 611 8 34 612 15 91 18 + 613: 7(float) Constant 1063781322 + 618: 10(int) Constant 168 + 616: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 617 8 34 618 15 91 18 + 619: 7(float) Constant 1120403456 + 624: 10(int) Constant 171 + 622: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 623 68 34 624 15 91 18 + 639: 10(int) Constant 174 + 637: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 638 8 34 639 15 91 18 + 647: 10(int) Constant 175 + 645: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 646 8 34 647 15 91 18 + 656: 10(int) Constant 176 + 654: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 655 8 34 656 15 91 18 + 664: 10(int) Constant 179 + 662: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 663 8 34 664 15 91 18 + 673: 10(int) Constant 180 + 671: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 672 68 34 673 15 91 18 + 680: 10(int) Constant 183 + 678: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 679 68 34 680 15 91 18 + 689: 10(int) Constant 184 + 687: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 688 8 34 689 15 91 18 + 698: 10(int) Constant 185 + 696: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 697 68 34 698 15 91 18 + 700: 7(float) Constant 1098907648 + 705: 7(float) Constant 1075838976 + 717: 209(int) Constant 2 + 733: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 751: TypePointer Input 22(fvec2) + 752(inUV): 751(ptr) Variable Input + 754: TypePointer Output 17(fvec4) +755(@entryPointOutput): 754(ptr) Variable Output + 5(main): 3 Function None 4 + 6: Label + 750(inUV): 25(ptr) Variable Function + 756(param): 25(ptr) Variable Function + 753: 22(fvec2) Load 752(inUV) + Store 750(inUV) 753 + 757: 22(fvec2) Load 750(inUV) + Store 756(param) 757 + 758: 17(fvec4) FunctionCall 89(@main(vf2;) 756(param) + Store 755(@entryPointOutput) 758 + Return + FunctionEnd +31(textureProj(vf4;f1;vf2;): 7(float) Function None 26 + 28(P): 20(ptr) FunctionParameter + 29(layer): 21(ptr) FunctionParameter + 30(offset): 25(ptr) FunctionParameter + 39: Label + 99(shadow): 21(ptr) Variable Function +104(shadowCoord): 20(ptr) Variable Function + 139(dist): 21(ptr) Variable Function + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 33 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 42 28(P) 45 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 29(layer) 45 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 49 30(offset) 45 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 33 31(textureProj(vf4;f1;vf2;) + Store 99(shadow) 102 + 103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 100 102 45 + 108: 17(fvec4) Load 28(P) + 109: 21(ptr) AccessChain 28(P) 16 + 110: 7(float) Load 109 + 111: 17(fvec4) CompositeConstruct 110 110 110 110 + 112: 17(fvec4) FDiv 108 111 + Store 104(shadowCoord) 112 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 105 112 45 + 114: 17(fvec4) Load 104(shadowCoord) + 115: 22(fvec2) VectorShuffle 114 114 0 1 + 117: 22(fvec2) VectorTimesScalar 115 116 + 118: 22(fvec2) CompositeConstruct 116 116 + 119: 22(fvec2) FAdd 117 118 + 120: 21(ptr) AccessChain 104(shadowCoord) 15 + 121: 7(float) CompositeExtract 119 0 + Store 120 121 + 122: 21(ptr) AccessChain 104(shadowCoord) 37 + 123: 7(float) CompositeExtract 119 1 + Store 122 123 + 124: 21(ptr) AccessChain 104(shadowCoord) 23 + 125: 7(float) Load 124 + 130: 127(bool) FOrdGreaterThan 125 126 + 131: 21(ptr) AccessChain 104(shadowCoord) 23 + 132: 7(float) Load 131 + 134: 127(bool) FOrdLessThan 132 102 + 136: 127(bool) LogicalAnd 130 134 + SelectionMerge 138 None + BranchConditional 136 137 138 + 137: Label + 153: 143 Load 149(textureShadowMap) + 162: 154 Load 159(samplerShadowMap) + 167: 163 SampledImage 153 162 + 168: 17(fvec4) Load 104(shadowCoord) + 169: 22(fvec2) VectorShuffle 168 168 0 1 + 170: 22(fvec2) Load 30(offset) + 171: 22(fvec2) FAdd 169 170 + 172: 7(float) Load 29(layer) + 173: 7(float) CompositeExtract 171 0 + 174: 7(float) CompositeExtract 171 1 + 175: 67(fvec3) CompositeConstruct 173 174 172 + 176: 17(fvec4) ImageSampleImplicitLod 167 175 + 177: 7(float) CompositeExtract 176 0 + Store 139(dist) 177 + 178: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 140 177 45 + 179: 21(ptr) AccessChain 104(shadowCoord) 16 + 180: 7(float) Load 179 + 183: 127(bool) FOrdGreaterThan 180 181 + 184: 7(float) Load 139(dist) + 185: 21(ptr) AccessChain 104(shadowCoord) 23 + 186: 7(float) Load 185 + 188: 127(bool) FOrdLessThan 184 186 + 190: 127(bool) LogicalAnd 183 188 + SelectionMerge 192 None + BranchConditional 190 191 192 + 191: Label + Store 99(shadow) 193 + 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 100 193 45 + Branch 192 + 192: Label + Branch 138 + 138: Label + 195: 7(float) Load 99(shadow) + ReturnValue 195 + FunctionEnd +56(filterPCF(vf4;f1;): 7(float) Function None 52 + 54(sc): 20(ptr) FunctionParameter + 55(layer): 21(ptr) FunctionParameter + 59: Label +202(sizeQueryTemp): 201(ptr) Variable Function + 215(texDim): 214(ptr) Variable Function + 228(elements): 222(ptr) Variable Function + 235(levels): 222(ptr) Variable Function + 242(scale): 21(ptr) Variable Function + 248(dx): 21(ptr) Variable Function + 259(dy): 21(ptr) Variable Function +270(shadowFactor): 21(ptr) Variable Function + 275(count): 222(ptr) Variable Function + 281(range): 222(ptr) Variable Function + 287(x): 222(ptr) Variable Function + 303(y): 222(ptr) Variable Function + 328(param): 20(ptr) Variable Function + 330(param): 21(ptr) Variable Function + 332(param): 25(ptr) Variable Function + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 58 + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 + 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 62 54(sc) 45 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 55(layer) 45 + 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 58 56(filterPCF(vf4;f1;) + 206: 143 Load 149(textureShadowMap) + 207: 199(ivec3) ImageQuerySizeLod 206 15 + Store 202(sizeQueryTemp) 207 + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 203 207 45 + 219: 218(ptr) AccessChain 202(sizeQueryTemp) 15 + 220: 10(int) Load 219 + 221: 209(int) Bitcast 220 + 223: 222(ptr) AccessChain 215(texDim) 15 + Store 223 221 + 224: 218(ptr) AccessChain 202(sizeQueryTemp) 37 + 225: 10(int) Load 224 + 226: 209(int) Bitcast 225 + 227: 222(ptr) AccessChain 215(texDim) 37 + Store 227 226 + 231: 218(ptr) AccessChain 202(sizeQueryTemp) 23 + 232: 10(int) Load 231 + 233: 209(int) Bitcast 232 + Store 228(elements) 233 + 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 233 45 + 238: 143 Load 149(textureShadowMap) + 239: 10(int) ImageQueryLevels 238 + 240: 209(int) Bitcast 239 + Store 235(levels) 240 + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 236 240 45 + Store 242(scale) 246 + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 243 246 45 + 252: 7(float) Load 242(scale) + 253: 7(float) FMul 252 102 + 254: 222(ptr) AccessChain 215(texDim) 15 + 255: 209(int) Load 254 + 256: 7(float) ConvertSToF 255 + 257: 7(float) FDiv 253 256 + Store 248(dx) 257 + 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 249 257 45 + 263: 7(float) Load 242(scale) + 264: 7(float) FMul 263 102 + 265: 222(ptr) AccessChain 215(texDim) 37 + 266: 209(int) Load 265 + 267: 7(float) ConvertSToF 266 + 268: 7(float) FDiv 264 267 + Store 259(dy) 268 + 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 268 45 + Store 270(shadowFactor) 181 + 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 271 181 45 + Store 275(count) 279 + 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 276 279 45 + Store 281(range) 285 + 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 282 285 45 + 291: 209(int) Load 281(range) + 292: 209(int) SNegate 291 + Store 287(x) 292 + 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 288 292 45 + Branch 294 + 294: Label + LoopMerge 296 297 None + Branch 298 + 298: Label + 299: 209(int) Load 287(x) + 300: 209(int) Load 281(range) + 302: 127(bool) SLessThanEqual 299 300 + BranchConditional 302 295 296 + 295: Label + 307: 209(int) Load 281(range) + 308: 209(int) SNegate 307 + Store 303(y) 308 + 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 304 308 45 + Branch 310 + 310: Label + LoopMerge 312 313 None + Branch 314 + 314: Label + 315: 209(int) Load 303(y) + 316: 209(int) Load 281(range) + 318: 127(bool) SLessThanEqual 315 316 + BranchConditional 318 311 312 + 311: Label + 319: 7(float) Load 248(dx) + 320: 209(int) Load 287(x) + 321: 7(float) ConvertSToF 320 + 322: 7(float) FMul 319 321 + 323: 7(float) Load 259(dy) + 324: 209(int) Load 303(y) + 325: 7(float) ConvertSToF 324 + 326: 7(float) FMul 323 325 + 327: 22(fvec2) CompositeConstruct 322 326 + 329: 17(fvec4) Load 54(sc) + Store 328(param) 329 + 331: 7(float) Load 55(layer) + Store 330(param) 331 + Store 332(param) 327 + 333: 7(float) FunctionCall 31(textureProj(vf4;f1;vf2;) 328(param) 330(param) 332(param) + 334: 7(float) Load 270(shadowFactor) + 335: 7(float) FAdd 334 333 + Store 270(shadowFactor) 335 + 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 271 335 45 + 337: 209(int) Load 275(count) + 338: 209(int) IAdd 337 285 + Store 275(count) 338 + 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 276 338 45 + Branch 313 + 313: Label + 340: 209(int) Load 303(y) + 341: 209(int) IAdd 340 285 + Store 303(y) 341 + 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 304 341 45 + Branch 310 + 312: Label + Branch 297 + 297: Label + 343: 209(int) Load 287(x) + 344: 209(int) IAdd 343 285 + Store 287(x) 344 + 345: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 288 344 45 + Branch 294 + 296: Label + 346: 7(float) Load 270(shadowFactor) + 347: 209(int) Load 275(count) + 348: 7(float) ConvertSToF 347 + 349: 7(float) FDiv 346 348 + ReturnValue 349 + FunctionEnd +74(shadow(vf3;vf3;): 67(fvec3) Function None 70 + 72(fragcolor): 69(ptr) FunctionParameter + 73(fragPos): 69(ptr) FunctionParameter + 77: Label + 353(i): 222(ptr) Variable Function + 367(shadowClip): 20(ptr) Variable Function +421(shadowFactor): 21(ptr) Variable Function + 426(param): 20(ptr) Variable Function + 428(param): 21(ptr) Variable Function + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 72(fragcolor) 45 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 73(fragPos) 45 + 352: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(shadow(vf3;vf3;) + Store 353(i) 279 + 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 354 279 45 + Branch 358 + 358: Label + LoopMerge 360 361 None + Branch 362 + 362: Label + 363: 209(int) Load 353(i) + 366: 127(bool) SLessThan 363 364 + BranchConditional 366 359 360 + 359: Label + 371: 67(fvec3) Load 73(fragPos) + 372: 7(float) CompositeExtract 371 0 + 373: 7(float) CompositeExtract 371 1 + 374: 7(float) CompositeExtract 371 2 + 375: 17(fvec4) CompositeConstruct 372 373 374 102 + 415: 209(int) Load 353(i) + 417: 416(ptr) AccessChain 413 279 285 415 364 + 418: 376 Load 417 + 419: 17(fvec4) VectorTimesMatrix 375 418 + Store 367(shadowClip) 419 + 420: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 368 419 45 + 424: 209(int) Load 353(i) + 425: 7(float) ConvertSToF 424 + 427: 17(fvec4) Load 367(shadowClip) + Store 426(param) 427 + Store 428(param) 425 + 429: 7(float) FunctionCall 56(filterPCF(vf4;f1;) 426(param) 428(param) + Store 421(shadowFactor) 429 + 430: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 422 429 45 + 431: 7(float) Load 421(shadowFactor) + 432: 67(fvec3) Load 72(fragcolor) + 433: 67(fvec3) VectorTimesScalar 432 431 + Store 72(fragcolor) 433 + 434: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 80 433 45 + Branch 361 + 361: Label + 435: 209(int) Load 353(i) + 436: 209(int) IAdd 435 285 + Store 353(i) 436 + 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 354 436 45 + Branch 358 + 360: Label + 438: 67(fvec3) Load 72(fragcolor) + ReturnValue 438 + FunctionEnd + 89(@main(vf2;): 17(fvec4) Function None 86 + 88(inUV): 25(ptr) FunctionParameter + 92: Label + 442(fragPos): 69(ptr) Variable Function + 464(normal): 69(ptr) Variable Function + 482(albedo): 20(ptr) Variable Function + 514(fragcolor): 69(ptr) Variable Function + 518(param): 69(ptr) Variable Function + 519(param): 69(ptr) Variable Function + 550(N): 69(ptr) Variable Function + 557(i): 222(ptr) Variable Function + 569(L): 69(ptr) Variable Function + 581(dist): 21(ptr) Variable Function + 590(V): 69(ptr) Variable Function +603(lightCosInnerAngle): 21(ptr) Variable Function +609(lightCosOuterAngle): 21(ptr) Variable Function + 615(lightRange): 21(ptr) Variable Function + 621(dir): 69(ptr) Variable Function + 636(cosDir): 21(ptr) Variable Function + 644(spotEffect): 21(ptr) Variable Function +653(heightAttenuation): 21(ptr) Variable Function + 661(NdotL): 21(ptr) Variable Function + 670(diff): 69(ptr) Variable Function + 677(R): 69(ptr) Variable Function + 686(NdotR): 21(ptr) Variable Function + 695(spec): 69(ptr) Variable Function + 737(param): 69(ptr) Variable Function + 739(param): 69(ptr) Variable Function + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 91 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 95 88(inUV) 45 + 441: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 91 89(@main(vf2;) + 451: 445 Load 448(textureposition) + 456: 154 Load 453(samplerposition) + 459: 457 SampledImage 451 456 + 460: 22(fvec2) Load 88(inUV) + 461: 17(fvec4) ImageSampleImplicitLod 459 460 + 462: 67(fvec3) VectorShuffle 461 461 0 1 2 + Store 442(fragPos) 462 + 463: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 443 462 45 + 471: 445 Load 468(textureNormal) + 476: 154 Load 473(samplerNormal) + 477: 457 SampledImage 471 476 + 478: 22(fvec2) Load 88(inUV) + 479: 17(fvec4) ImageSampleImplicitLod 477 478 + 480: 67(fvec3) VectorShuffle 479 479 0 1 2 + Store 464(normal) 480 + 481: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 465 480 45 + 489: 445 Load 486(textureAlbedo) + 494: 154 Load 491(samplerAlbedo) + 495: 457 SampledImage 489 494 + 496: 22(fvec2) Load 88(inUV) + 497: 17(fvec4) ImageSampleImplicitLod 495 496 + Store 482(albedo) 497 + 498: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 483 497 45 + 500: 499(ptr) AccessChain 413 279 364 + 501: 209(int) Load 500 + 503: 127(bool) SGreaterThan 501 279 + SelectionMerge 505 None + BranchConditional 503 504 505 + 504: Label + 506: 499(ptr) AccessChain 413 279 364 + 507: 209(int) Load 506 + SelectionMerge 513 None + Switch 507 513 + case 1: 508 + case 2: 509 + case 3: 510 + case 4: 511 + case 5: 512 + 508: Label + Store 518(param) 517 + 520: 67(fvec3) Load 442(fragPos) + Store 519(param) 520 + 521: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 518(param) 519(param) + Store 514(fragcolor) 521 + 522: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 521 45 + Branch 513 + 509: Label + 524: 67(fvec3) Load 442(fragPos) + Store 514(fragcolor) 524 + 525: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 524 45 + Branch 513 + 510: Label + 527: 67(fvec3) Load 464(normal) + Store 514(fragcolor) 527 + 528: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 527 45 + Branch 513 + 511: Label + 530: 17(fvec4) Load 482(albedo) + 531: 67(fvec3) VectorShuffle 530 530 0 1 2 + Store 514(fragcolor) 531 + 532: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 531 45 + Branch 513 + 512: Label + 534: 17(fvec4) Load 482(albedo) + 535: 67(fvec3) VectorShuffle 534 534 3 3 3 + Store 514(fragcolor) 535 + 536: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 535 45 + Branch 513 + 513: Label + 539: 67(fvec3) Load 514(fragcolor) + 540: 7(float) CompositeExtract 539 0 + 541: 7(float) CompositeExtract 539 1 + 542: 7(float) CompositeExtract 539 2 + 543: 17(fvec4) CompositeConstruct 540 541 542 102 + ReturnValue 543 + 505: Label + 545: 17(fvec4) Load 482(albedo) + 546: 67(fvec3) VectorShuffle 545 545 0 1 2 + 548: 67(fvec3) VectorTimesScalar 546 547 + Store 514(fragcolor) 548 + 549: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 548 45 + 554: 67(fvec3) Load 464(normal) + 555: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 554 + Store 550(N) 555 + 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 551 555 45 + Store 557(i) 279 + 560: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 558 279 45 + Branch 561 + 561: Label + LoopMerge 563 564 None + Branch 565 + 565: Label + 566: 209(int) Load 557(i) + 568: 127(bool) SLessThan 566 364 + BranchConditional 568 562 563 + 562: Label + 573: 209(int) Load 557(i) + 575: 574(ptr) AccessChain 413 279 285 573 279 + 576: 17(fvec4) Load 575 + 577: 67(fvec3) VectorShuffle 576 576 0 1 2 + 578: 67(fvec3) Load 442(fragPos) + 579: 67(fvec3) FSub 577 578 + Store 569(L) 579 + 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 570 579 45 + 584: 67(fvec3) Load 569(L) + 585: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 584 + Store 581(dist) 585 + 586: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 582 585 45 + 587: 67(fvec3) Load 569(L) + 588: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 587 + Store 569(L) 588 + 589: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 570 588 45 + 594: 574(ptr) AccessChain 413 279 279 + 595: 17(fvec4) Load 594 + 596: 67(fvec3) VectorShuffle 595 595 0 1 2 + 597: 67(fvec3) Load 442(fragPos) + 598: 67(fvec3) FSub 596 597 + Store 590(V) 598 + 599: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 591 598 45 + 600: 67(fvec3) Load 590(V) + 601: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 600 + Store 590(V) 601 + 602: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 591 601 45 + Store 603(lightCosInnerAngle) 607 + 608: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 604 607 45 + Store 609(lightCosOuterAngle) 613 + 614: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 610 613 45 + Store 615(lightRange) 619 + 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 616 619 45 + 625: 209(int) Load 557(i) + 626: 574(ptr) AccessChain 413 279 285 625 279 + 627: 17(fvec4) Load 626 + 628: 67(fvec3) VectorShuffle 627 627 0 1 2 + 629: 209(int) Load 557(i) + 630: 574(ptr) AccessChain 413 279 285 629 285 + 631: 17(fvec4) Load 630 + 632: 67(fvec3) VectorShuffle 631 631 0 1 2 + 633: 67(fvec3) FSub 628 632 + 634: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 633 + Store 621(dir) 634 + 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 622 634 45 + 640: 67(fvec3) Load 569(L) + 641: 67(fvec3) Load 621(dir) + 642: 7(float) Dot 640 641 + Store 636(cosDir) 642 + 643: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 637 642 45 + 648: 7(float) Load 609(lightCosOuterAngle) + 649: 7(float) Load 603(lightCosInnerAngle) + 650: 7(float) Load 636(cosDir) + 651: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 648 649 650 + Store 644(spotEffect) 651 + 652: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 645 651 45 + 657: 7(float) Load 615(lightRange) + 658: 7(float) Load 581(dist) + 659: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 657 181 658 + Store 653(heightAttenuation) 659 + 660: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 654 659 45 + 665: 67(fvec3) Load 550(N) + 666: 67(fvec3) Load 569(L) + 667: 7(float) Dot 665 666 + 668: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 667 + Store 661(NdotL) 668 + 669: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 662 668 45 + 674: 7(float) Load 661(NdotL) + 675: 67(fvec3) CompositeConstruct 674 674 674 + Store 670(diff) 675 + 676: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 671 675 45 + 681: 67(fvec3) Load 569(L) + 682: 67(fvec3) FNegate 681 + 683: 67(fvec3) Load 550(N) + 684: 67(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 682 683 + Store 677(R) 684 + 685: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 678 684 45 + 690: 67(fvec3) Load 677(R) + 691: 67(fvec3) Load 590(V) + 692: 7(float) Dot 690 691 + 693: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 692 + Store 686(NdotR) 693 + 694: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 687 693 45 + 699: 7(float) Load 686(NdotR) + 701: 7(float) ExtInst 2(GLSL.std.450) 26(Pow) 699 700 + 702: 21(ptr) AccessChain 482(albedo) 16 + 703: 7(float) Load 702 + 704: 7(float) FMul 701 703 + 706: 7(float) FMul 704 705 + 707: 67(fvec3) CompositeConstruct 706 706 706 + Store 695(spec) 707 + 708: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 696 707 45 + 709: 67(fvec3) Load 670(diff) + 710: 67(fvec3) Load 695(spec) + 711: 67(fvec3) FAdd 709 710 + 712: 7(float) Load 644(spotEffect) + 713: 67(fvec3) VectorTimesScalar 711 712 + 714: 7(float) Load 653(heightAttenuation) + 715: 67(fvec3) VectorTimesScalar 713 714 + 716: 209(int) Load 557(i) + 718: 574(ptr) AccessChain 413 279 285 716 717 + 719: 17(fvec4) Load 718 + 720: 67(fvec3) VectorShuffle 719 719 0 1 2 + 721: 67(fvec3) FMul 715 720 + 722: 17(fvec4) Load 482(albedo) + 723: 67(fvec3) VectorShuffle 722 722 0 1 2 + 724: 67(fvec3) FMul 721 723 + 725: 67(fvec3) Load 514(fragcolor) + 726: 67(fvec3) FAdd 725 724 + Store 514(fragcolor) 726 + 727: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 726 45 + Branch 564 + 564: Label + 728: 209(int) Load 557(i) + 729: 209(int) IAdd 728 285 + Store 557(i) 729 + 730: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 558 729 45 + Branch 561 + 563: Label + 731: 499(ptr) AccessChain 413 279 717 + 732: 209(int) Load 731 + 734: 127(bool) SGreaterThan 732 279 + SelectionMerge 736 None + BranchConditional 734 735 736 + 735: Label + 738: 67(fvec3) Load 514(fragcolor) + Store 737(param) 738 + 740: 67(fvec3) Load 442(fragPos) + Store 739(param) 740 + 741: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 737(param) 739(param) + Store 514(fragcolor) 741 + 742: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 741 45 + Branch 736 + 736: Label + 743: 67(fvec3) Load 514(fragcolor) + 744: 7(float) CompositeExtract 743 0 + 745: 7(float) CompositeExtract 743 1 + 746: 7(float) CompositeExtract 743 2 + 747: 17(fvec4) CompositeConstruct 744 745 746 102 + ReturnValue 747 + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out new file mode 100644 index 0000000000..f629f2ce1a --- /dev/null +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -0,0 +1,459 @@ +spv.debuginfo.hlsl.geom +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 323 + + Capability Geometry + Capability MultiViewport + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Geometry 5 "main" 228 235 240 246 251 256 261 272 279 284 308 311 + ExecutionMode 5 Triangles + ExecutionMode 5 Invocations 2 + ExecutionMode 5 OutputTriangleStrip + ExecutionMode 5 OutputVertices 3 + 9: String "float" + 12: String "uint" + 24: String "Pos" + 26: String "" + 30: String "Color" + 35: String "VSOutput" + 46: String "PrimitiveID" + 51: String "LightVec" + 57: String "GSOutput" + 67: String "@main" + 73: String "input" + 77: String "outStream" + 81: String "InvocationID" + 87: String "int" + 92: String "i" + 104: String "bool" + 109: String "output" + 130: String "projection" + 134: String "modelview" + 138: String "lightPos" + 142: String "UBO" + 146: String "ubo" + 177: String "pos" + 185: String "worldPos" + 195: String "lPos" + 230: String "outStream.Pos" + 237: String "outStream.ViewportIndex" + 242: String "outStream.PrimitiveID" + 248: String "outStream.Normal" + 253: String "outStream.Color" + 258: String "outStream.ViewVec" + 263: String "outStream.LightVec" + Name 5 "main" + Name 22 "VSOutput" + MemberName 22(VSOutput) 0 "Pos" + MemberName 22(VSOutput) 1 "Normal" + MemberName 22(VSOutput) 2 "Color" + Name 42 "GSOutput" + MemberName 42(GSOutput) 0 "Pos" + MemberName 42(GSOutput) 1 "ViewportIndex" + MemberName 42(GSOutput) 2 "PrimitiveID" + MemberName 42(GSOutput) 3 "Normal" + MemberName 42(GSOutput) 4 "Color" + MemberName 42(GSOutput) 5 "ViewVec" + MemberName 42(GSOutput) 6 "LightVec" + Name 66 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" + Name 62 "input" + Name 63 "outStream" + Name 64 "InvocationID" + Name 65 "PrimitiveID" + Name 90 "i" + Name 107 "output" + Name 128 "UBO" + MemberName 128(UBO) 0 "projection" + MemberName 128(UBO) 1 "modelview" + MemberName 128(UBO) 2 "lightPos" + Name 144 "ubo" + MemberName 144(ubo) 0 "ubo" + Name 150 "" + Name 175 "pos" + Name 183 "worldPos" + Name 193 "lPos" + Name 228 "outStream.Pos" + Name 235 "outStream.ViewportIndex" + Name 240 "outStream.PrimitiveID" + Name 246 "outStream.Normal" + Name 251 "outStream.Color" + Name 256 "outStream.ViewVec" + Name 261 "outStream.LightVec" + Name 269 "input" + Name 272 "input.Pos" + Name 279 "input.Normal" + Name 284 "input.Color" + Name 306 "InvocationID" + Name 308 "InvocationID" + Name 310 "PrimitiveID" + Name 311 "PrimitiveID" + Name 313 "outStream" + Name 314 "param" + Name 316 "param" + Name 317 "param" + Name 319 "param" + Decorate 124 ArrayStride 64 + Decorate 126 ArrayStride 64 + MemberDecorate 128(UBO) 0 RowMajor + MemberDecorate 128(UBO) 0 Offset 0 + MemberDecorate 128(UBO) 0 MatrixStride 16 + MemberDecorate 128(UBO) 1 RowMajor + MemberDecorate 128(UBO) 1 Offset 128 + MemberDecorate 128(UBO) 1 MatrixStride 16 + MemberDecorate 128(UBO) 2 Offset 256 + MemberDecorate 144(ubo) 0 Offset 0 + Decorate 144(ubo) Block + Decorate 150 DescriptorSet 0 + Decorate 150 Binding 0 + Decorate 228(outStream.Pos) BuiltIn Position + Decorate 235(outStream.ViewportIndex) BuiltIn ViewportIndex + Decorate 240(outStream.PrimitiveID) BuiltIn PrimitiveId + Decorate 246(outStream.Normal) Location 0 + Decorate 251(outStream.Color) Location 1 + Decorate 256(outStream.ViewVec) Location 2 + Decorate 261(outStream.LightVec) Location 3 + Decorate 272(input.Pos) BuiltIn Position + Decorate 279(input.Normal) Location 0 + Decorate 284(input.Color) Location 1 + Decorate 308(InvocationID) BuiltIn InvocationId + Decorate 311(PrimitiveID) BuiltIn PrimitiveId + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeFloat 32 + 10: TypeInt 32 0 + 13: 10(int) Constant 32 + 14: 10(int) Constant 6 + 15: 10(int) Constant 0 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 16: 10(int) Constant 3 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 17: TypeVector 7(float) 4 + 18: 10(int) Constant 4 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18 + 20: TypeVector 7(float) 3 + 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 22(VSOutput): TypeStruct 17(fvec4) 20(fvec3) 20(fvec3) + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 26 + 27: 10(int) Constant 37 + 28: 10(int) Constant 13 + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 27 28 15 15 16 + 31: 10(int) Constant 39 + 32: 10(int) Constant 34 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16 + 36: 10(int) Constant 1 + 38: 10(int) Constant 5 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 36 18 25 38 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 35 36 25 15 15 37 35 15 16 23 29 33 + 39: TypeArray 22(VSOutput) 16 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 34 16 + 41: TypePointer Function 39 + 42(GSOutput): TypeStruct 17(fvec4) 10(int) 10(int) 20(fvec3) 20(fvec3) 20(fvec3) 20(fvec3) + 44: 10(int) Constant 44 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 44 28 15 15 16 + 47: 10(int) Constant 46 + 48: 10(int) Constant 19 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16 + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16 + 52: 10(int) Constant 50 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 + 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 57 36 25 15 15 37 57 15 16 43 45 49 50 53 54 55 + 58: TypePointer Function 42(GSOutput) + 59: TypePointer Function 10(int) + 60: TypeFunction 3 41(ptr) 58(ptr) 59(ptr) 59(ptr) + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 3 40 56 11 11 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 67 61 25 15 15 37 67 16 15 + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 73 40 25 15 15 68 18 36 + 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 78: 10(int) Constant 2 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 56 25 15 15 68 18 78 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 11 25 15 15 68 18 16 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 46 11 25 15 15 68 18 18 + 86: TypeInt 32 1 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 87 13 18 15 + 89: TypePointer Function 86(int) + 93: 10(int) Constant 57 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 92 88 25 93 15 68 18 + 94: 86(int) Constant 0 + 102: 86(int) Constant 3 + 103: TypeBool + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 104 13 78 15 + 110: 10(int) Constant 59 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 56 25 110 15 68 18 + 111: 7(float) Constant 0 + 112: 17(fvec4) ConstantComposite 111 111 111 111 + 113: 20(fvec3) ConstantComposite 111 111 111 + 114:42(GSOutput) ConstantComposite 112 15 15 113 113 113 113 + 117: 86(int) Constant 1 + 118: TypePointer Function 20(fvec3) + 121: TypeMatrix 17(fvec4) 4 + 123: 103(bool) ConstantTrue + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 123 + 124: TypeArray 121 78 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78 + 126: TypeArray 121 78 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78 + 128(UBO): TypeStruct 124 126 17(fvec4) + 131: 10(int) Constant 28 + 132: 10(int) Constant 21 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 130 125 25 131 132 15 15 16 + 135: 10(int) Constant 29 + 136: 10(int) Constant 20 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 127 25 135 136 15 15 16 + 139: 10(int) Constant 30 + 140: 10(int) Constant 17 + 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 19 25 139 140 15 15 16 + 143: 10(int) Constant 60 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 36 25 143 15 37 142 15 16 129 133 137 + 144(ubo): TypeStruct 128(UBO) + 147: 10(int) Constant 33 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 141 25 147 27 15 15 16 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 36 25 143 15 37 146 15 16 145 + 149: TypePointer Uniform 144(ubo) + 150: 149(ptr) Variable Uniform + 152: 10(int) Constant 8 + 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 26 148 25 143 15 37 26 150 152 + 154: TypePointer Uniform 121 + 157: TypeMatrix 20(fvec3) 3 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 21 16 123 + 168: 86(int) Constant 4 + 170: 86(int) Constant 2 + 174: TypePointer Function 17(fvec4) + 178: 10(int) Constant 63 + 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 177 19 25 178 15 68 18 + 186: 10(int) Constant 64 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 19 25 186 15 68 18 + 196: 10(int) Constant 66 + 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 195 21 25 196 15 68 18 + 197: TypePointer Uniform 17(fvec4) + 206: 86(int) Constant 6 + 212: 86(int) Constant 5 + 227: TypePointer Output 17(fvec4) +228(outStream.Pos): 227(ptr) Variable Output + 231: 10(int) Constant 75 + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 230 19 25 231 15 37 230 228(outStream.Pos) 152 + 234: TypePointer Output 10(int) +235(outStream.ViewportIndex): 234(ptr) Variable Output + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 237 11 25 231 15 37 237 235(outStream.ViewportIndex) 152 +240(outStream.PrimitiveID): 234(ptr) Variable Output + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 242 11 25 231 15 37 242 240(outStream.PrimitiveID) 152 + 245: TypePointer Output 20(fvec3) +246(outStream.Normal): 245(ptr) Variable Output + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 248 21 25 231 15 37 248 246(outStream.Normal) 152 +251(outStream.Color): 245(ptr) Variable Output + 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 253 21 25 231 15 37 253 251(outStream.Color) 152 +256(outStream.ViewVec): 245(ptr) Variable Output + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 258 21 25 231 15 37 258 256(outStream.ViewVec) 152 +261(outStream.LightVec): 245(ptr) Variable Output + 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 21 25 231 15 37 263 261(outStream.LightVec) 152 + 270: TypeArray 17(fvec4) 16 + 271: TypePointer Input 270 + 272(input.Pos): 271(ptr) Variable Input + 273: TypePointer Input 17(fvec4) + 277: TypeArray 20(fvec3) 16 + 278: TypePointer Input 277 +279(input.Normal): 278(ptr) Variable Input + 280: TypePointer Input 20(fvec3) +284(input.Color): 278(ptr) Variable Input + 307: TypePointer Input 10(int) +308(InvocationID): 307(ptr) Variable Input +311(PrimitiveID): 307(ptr) Variable Input + 5(main): 3 Function None 4 + 6: Label + 269(input): 41(ptr) Variable Function +306(InvocationID): 59(ptr) Variable Function +310(PrimitiveID): 59(ptr) Variable Function + 313(outStream): 58(ptr) Variable Function + 314(param): 41(ptr) Variable Function + 316(param): 58(ptr) Variable Function + 317(param): 59(ptr) Variable Function + 319(param): 59(ptr) Variable Function + 274: 273(ptr) AccessChain 272(input.Pos) 94 + 275: 17(fvec4) Load 274 + 276: 174(ptr) AccessChain 269(input) 94 94 + Store 276 275 + 281: 280(ptr) AccessChain 279(input.Normal) 94 + 282: 20(fvec3) Load 281 + 283: 118(ptr) AccessChain 269(input) 94 117 + Store 283 282 + 285: 280(ptr) AccessChain 284(input.Color) 94 + 286: 20(fvec3) Load 285 + 287: 118(ptr) AccessChain 269(input) 94 170 + Store 287 286 + 288: 273(ptr) AccessChain 272(input.Pos) 117 + 289: 17(fvec4) Load 288 + 290: 174(ptr) AccessChain 269(input) 117 94 + Store 290 289 + 291: 280(ptr) AccessChain 279(input.Normal) 117 + 292: 20(fvec3) Load 291 + 293: 118(ptr) AccessChain 269(input) 117 117 + Store 293 292 + 294: 280(ptr) AccessChain 284(input.Color) 117 + 295: 20(fvec3) Load 294 + 296: 118(ptr) AccessChain 269(input) 117 170 + Store 296 295 + 297: 273(ptr) AccessChain 272(input.Pos) 170 + 298: 17(fvec4) Load 297 + 299: 174(ptr) AccessChain 269(input) 170 94 + Store 299 298 + 300: 280(ptr) AccessChain 279(input.Normal) 170 + 301: 20(fvec3) Load 300 + 302: 118(ptr) AccessChain 269(input) 170 117 + Store 302 301 + 303: 280(ptr) AccessChain 284(input.Color) 170 + 304: 20(fvec3) Load 303 + 305: 118(ptr) AccessChain 269(input) 170 170 + Store 305 304 + 309: 10(int) Load 308(InvocationID) + Store 306(InvocationID) 309 + 312: 10(int) Load 311(PrimitiveID) + Store 310(PrimitiveID) 312 + 315: 39 Load 269(input) + Store 314(param) 315 + 318: 10(int) Load 306(InvocationID) + Store 317(param) 318 + 320: 10(int) Load 310(PrimitiveID) + Store 319(param) 320 + 321: 3 FunctionCall 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 314(param) 316(param) 317(param) 319(param) + 322:42(GSOutput) Load 316(param) + Store 313(outStream) 322 + Return + FunctionEnd +66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 3 Function None 60 + 62(input): 41(ptr) FunctionParameter + 63(outStream): 58(ptr) FunctionParameter +64(InvocationID): 59(ptr) FunctionParameter + 65(PrimitiveID): 59(ptr) FunctionParameter + 69: Label + 90(i): 89(ptr) Variable Function + 107(output): 58(ptr) Variable Function + 175(pos): 174(ptr) Variable Function + 183(worldPos): 174(ptr) Variable Function + 193(lPos): 118(ptr) Variable Function + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 68 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 25 15 15 15 15 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 72 62(input) 75 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 76 63(outStream) 75 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 64(InvocationID) 75 + 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 65(PrimitiveID) 75 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 68 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) + Store 90(i) 94 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 91 94 75 + Branch 96 + 96: Label + LoopMerge 98 99 None + Branch 100 + 100: Label + 101: 86(int) Load 90(i) + 106: 103(bool) SLessThan 101 102 + BranchConditional 106 97 98 + 97: Label + Store 107(output) 114 + 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 114 75 + 116: 86(int) Load 90(i) + 119: 118(ptr) AccessChain 62(input) 116 117 + 120: 20(fvec3) Load 119 + 153: 10(int) Load 64(InvocationID) + 155: 154(ptr) AccessChain 150 94 117 153 + 156: 121 Load 155 + 159: 17(fvec4) CompositeExtract 156 0 + 160: 20(fvec3) VectorShuffle 159 159 0 1 2 + 161: 17(fvec4) CompositeExtract 156 1 + 162: 20(fvec3) VectorShuffle 161 161 0 1 2 + 163: 17(fvec4) CompositeExtract 156 2 + 164: 20(fvec3) VectorShuffle 163 163 0 1 2 + 165: 157 CompositeConstruct 160 162 164 + 166: 20(fvec3) VectorTimesMatrix 120 165 + 167: 118(ptr) AccessChain 107(output) 102 + Store 167 166 + 169: 86(int) Load 90(i) + 171: 118(ptr) AccessChain 62(input) 169 170 + 172: 20(fvec3) Load 171 + 173: 118(ptr) AccessChain 107(output) 168 + Store 173 172 + 179: 86(int) Load 90(i) + 180: 174(ptr) AccessChain 62(input) 179 94 + 181: 17(fvec4) Load 180 + Store 175(pos) 181 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 176 181 75 + 187: 17(fvec4) Load 175(pos) + 188: 10(int) Load 64(InvocationID) + 189: 154(ptr) AccessChain 150 94 117 188 + 190: 121 Load 189 + 191: 17(fvec4) VectorTimesMatrix 187 190 + Store 183(worldPos) 191 + 192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 184 191 75 + 198: 197(ptr) AccessChain 150 94 170 + 199: 17(fvec4) Load 198 + 200: 10(int) Load 64(InvocationID) + 201: 154(ptr) AccessChain 150 94 117 200 + 202: 121 Load 201 + 203: 17(fvec4) VectorTimesMatrix 199 202 + 204: 20(fvec3) VectorShuffle 203 203 0 1 2 + Store 193(lPos) 204 + 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 194 204 75 + 207: 20(fvec3) Load 193(lPos) + 208: 17(fvec4) Load 183(worldPos) + 209: 20(fvec3) VectorShuffle 208 208 0 1 2 + 210: 20(fvec3) FSub 207 209 + 211: 118(ptr) AccessChain 107(output) 206 + Store 211 210 + 213: 17(fvec4) Load 183(worldPos) + 214: 20(fvec3) VectorShuffle 213 213 0 1 2 + 215: 20(fvec3) FNegate 214 + 216: 118(ptr) AccessChain 107(output) 212 + Store 216 215 + 217: 17(fvec4) Load 183(worldPos) + 218: 10(int) Load 64(InvocationID) + 219: 154(ptr) AccessChain 150 94 94 218 + 220: 121 Load 219 + 221: 17(fvec4) VectorTimesMatrix 217 220 + 222: 174(ptr) AccessChain 107(output) 94 + Store 222 221 + 223: 10(int) Load 64(InvocationID) + 224: 59(ptr) AccessChain 107(output) 117 + Store 224 223 + 225: 10(int) Load 65(PrimitiveID) + 226: 59(ptr) AccessChain 107(output) 170 + Store 226 225 + 232: 174(ptr) AccessChain 107(output) 94 + 233: 17(fvec4) Load 232 + Store 228(outStream.Pos) 233 + 238: 59(ptr) AccessChain 107(output) 117 + 239: 10(int) Load 238 + Store 235(outStream.ViewportIndex) 239 + 243: 59(ptr) AccessChain 107(output) 170 + 244: 10(int) Load 243 + Store 240(outStream.PrimitiveID) 244 + 249: 118(ptr) AccessChain 107(output) 102 + 250: 20(fvec3) Load 249 + Store 246(outStream.Normal) 250 + 254: 118(ptr) AccessChain 107(output) 168 + 255: 20(fvec3) Load 254 + Store 251(outStream.Color) 255 + 259: 118(ptr) AccessChain 107(output) 212 + 260: 20(fvec3) Load 259 + Store 256(outStream.ViewVec) 260 + 264: 118(ptr) AccessChain 107(output) 206 + 265: 20(fvec3) Load 264 + Store 261(outStream.LightVec) 265 + EmitVertex + Branch 99 + 99: Label + 266: 86(int) Load 90(i) + 267: 86(int) IAdd 266 117 + Store 90(i) 267 + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 91 267 75 + Branch 96 + 98: Label + EndPrimitive + Return + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out new file mode 100644 index 0000000000..c3f063117a --- /dev/null +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -0,0 +1,812 @@ +spv.debuginfo.hlsl.tesc +WARNING: 0:158: '' : attribute does not apply to entry point + +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 596 + + Capability Tessellation + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationControl 5 "main" 488 495 502 536 545 552 559 574 589 + ExecutionMode 5 OutputVertices 4 + ExecutionMode 5 Quads + ExecutionMode 5 SpacingEqual + ExecutionMode 5 VertexOrderCw + 9: String "float" + 12: String "uint" + 26: String "screenSpaceTessFactor" + 29: String "" + 37: String "p0" + 41: String "p1" + 48: String "bool" + 55: String "frustumCheck" + 61: String "Pos" + 64: String "inUV" + 73: String "Normal" + 77: String "UV" + 81: String "VSOutput" + 91: String "TessLevelOuter" + 95: String "TessLevelInner" + 98: String "ConstantsHSOutput" + 103: String "ConstantsHS" + 109: String "patch" + 120: String "HSOutput" + 126: String "@main" + 134: String "InvocationID" + 139: String "midPoint" + 150: String "radius" + 160: String "v0" + 170: String "modelview" + 175: String "lightPos" + 179: String "frustumPlanes" + 182: String "tessellatedEdgeSize" + 186: String "viewportDim" + 190: String "UBO" + 193: String "ubo" + 201: String "int" + 212: String "clip0" + 229: String "clip1" + 294: String "pos" + 300: String "type.2d.image" + 302: String "@type.2d.image" + 307: String "textureHeight" + 311: String "type.sampler" + 312: String "@type.sampler" + 316: String "samplerHeight" + 320: String "type.sampled.image" + 321: String "@type.sampled.image" + 337: String "i" + 374: String "output" + Name 5 "main" + Name 25 "screenSpaceTessFactor(vf4;vf4;" + Name 23 "p0" + Name 24 "p1" + Name 54 "frustumCheck(vf4;vf2;" + Name 52 "Pos" + Name 53 "inUV" + Name 68 "VSOutput" + MemberName 68(VSOutput) 0 "Pos" + MemberName 68(VSOutput) 1 "Normal" + MemberName 68(VSOutput) 2 "UV" + Name 89 "ConstantsHSOutput" + MemberName 89(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 89(ConstantsHSOutput) 1 "TessLevelInner" + Name 102 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" + Name 101 "patch" + Name 112 "HSOutput" + MemberName 112(HSOutput) 0 "Pos" + MemberName 112(HSOutput) 1 "Normal" + MemberName 112(HSOutput) 2 "UV" + Name 125 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" + Name 123 "patch" + Name 124 "InvocationID" + Name 137 "midPoint" + Name 148 "radius" + Name 158 "v0" + Name 168 "UBO" + MemberName 168(UBO) 0 "projection" + MemberName 168(UBO) 1 "modelview" + MemberName 168(UBO) 2 "lightPos" + MemberName 168(UBO) 3 "frustumPlanes" + MemberName 168(UBO) 4 "displacementFactor" + MemberName 168(UBO) 5 "tessellationFactor" + MemberName 168(UBO) 6 "viewportDim" + MemberName 168(UBO) 7 "tessellatedEdgeSize" + Name 191 "ubo" + MemberName 191(ubo) 0 "ubo" + Name 197 "" + Name 210 "clip0" + Name 227 "clip1" + Name 292 "pos" + Name 305 "textureHeight" + Name 314 "samplerHeight" + Name 335 "i" + Name 372 "output" + Name 381 "param" + Name 384 "param" + Name 406 "param" + Name 409 "param" + Name 414 "param" + Name 417 "param" + Name 422 "param" + Name 425 "param" + Name 430 "param" + Name 433 "param" + Name 462 "output" + Name 485 "patch" + Name 488 "patch.Pos" + Name 495 "patch.Normal" + Name 502 "patch.UV" + Name 534 "InvocationID" + Name 536 "InvocationID" + Name 538 "flattenTemp" + Name 539 "param" + Name 541 "param" + Name 545 "@entryPointOutput.Pos" + Name 552 "@entryPointOutput.Normal" + Name 559 "@entryPointOutput.UV" + Name 569 "@patchConstantResult" + Name 570 "param" + Name 574 "@patchConstantOutput.TessLevelOuter" + Name 589 "@patchConstantOutput.TessLevelInner" + Decorate 166 ArrayStride 16 + MemberDecorate 168(UBO) 0 RowMajor + MemberDecorate 168(UBO) 0 Offset 0 + MemberDecorate 168(UBO) 0 MatrixStride 16 + MemberDecorate 168(UBO) 1 RowMajor + MemberDecorate 168(UBO) 1 Offset 64 + MemberDecorate 168(UBO) 1 MatrixStride 16 + MemberDecorate 168(UBO) 2 Offset 128 + MemberDecorate 168(UBO) 3 Offset 144 + MemberDecorate 168(UBO) 4 Offset 240 + MemberDecorate 168(UBO) 5 Offset 244 + MemberDecorate 168(UBO) 6 Offset 248 + MemberDecorate 168(UBO) 7 Offset 256 + MemberDecorate 191(ubo) 0 Offset 0 + Decorate 191(ubo) Block + Decorate 197 DescriptorSet 0 + Decorate 197 Binding 0 + Decorate 305(textureHeight) DescriptorSet 0 + Decorate 305(textureHeight) Binding 1 + Decorate 314(samplerHeight) DescriptorSet 0 + Decorate 314(samplerHeight) Binding 1 + Decorate 488(patch.Pos) BuiltIn Position + Decorate 495(patch.Normal) Location 0 + Decorate 502(patch.UV) Location 1 + Decorate 536(InvocationID) BuiltIn InvocationId + Decorate 545(@entryPointOutput.Pos) BuiltIn Position + Decorate 552(@entryPointOutput.Normal) Location 0 + Decorate 559(@entryPointOutput.UV) Location 1 + Decorate 574(@patchConstantOutput.TessLevelOuter) Patch + Decorate 574(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 589(@patchConstantOutput.TessLevelInner) Patch + Decorate 589(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeFloat 32 + 10: TypeInt 32 0 + 13: 10(int) Constant 32 + 14: 10(int) Constant 6 + 15: 10(int) Constant 0 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 16: 10(int) Constant 3 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 17: TypeVector 7(float) 4 + 18: 10(int) Constant 4 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18 + 20: TypePointer Function 17(fvec4) + 21: TypeFunction 7(float) 20(ptr) 20(ptr) + 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 19 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 29 + 31: 10(int) Constant 1 + 32: 10(int) Constant 5 + 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 31 18 28 32 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 26 22 28 15 15 30 26 16 15 + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 37 19 28 15 15 27 18 31 + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 42: 10(int) Constant 2 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 41 19 28 15 15 27 18 42 + 44: TypeVector 7(float) 2 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 42 + 46: TypePointer Function 44(fvec2) + 47: TypeBool + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 50: TypeFunction 47(bool) 20(ptr) 46(ptr) + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 49 19 45 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 55 51 28 15 15 30 55 16 15 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 61 19 28 15 15 56 18 31 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 64 45 28 15 15 56 18 42 + 66: TypeVector 7(float) 3 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 68(VSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2) + 70: 10(int) Constant 44 + 71: 10(int) Constant 13 + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 70 71 15 15 16 + 74: 10(int) Constant 45 + 75: 10(int) Constant 35 + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 74 75 15 15 16 + 78: 10(int) Constant 46 + 79: 10(int) Constant 31 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 78 79 15 15 16 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 81 31 28 15 15 30 81 15 16 69 72 76 + 82: TypeArray 68(VSOutput) 18 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 80 18 + 84: TypePointer Function 82 + 85: TypeArray 7(float) 18 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 18 + 87: TypeArray 7(float) 42 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 42 +89(ConstantsHSOutput): TypeStruct 85 87 + 92: 10(int) Constant 58 + 93: 10(int) Constant 25 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 86 28 92 93 15 15 16 + 96: 10(int) Constant 59 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 88 28 96 93 15 15 16 + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 98 31 28 15 15 30 98 15 16 90 94 + 99: TypeFunction 89(ConstantsHSOutput) 84(ptr) + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 97 83 + 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 103 100 28 15 15 30 103 16 15 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 104 18 31 + 111: TypePointer Function 10(int) + 112(HSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2) + 114: 10(int) Constant 51 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 114 13 15 15 16 + 116: 10(int) Constant 52 + 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 116 75 15 15 16 + 118: 10(int) Constant 53 + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 118 79 15 15 16 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 120 31 28 15 15 30 120 15 16 113 115 117 + 121: TypeFunction 112(HSOutput) 84(ptr) 111(ptr) + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 119 83 11 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 126 122 28 15 15 30 126 16 15 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 127 18 31 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 134 11 28 15 15 127 18 42 + 140: 10(int) Constant 67 + 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 19 28 140 15 27 18 + 141: 7(float) Constant 1056964608 + 147: TypePointer Function 7(float) + 151: 10(int) Constant 69 + 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 150 8 28 151 15 27 18 + 155: 7(float) Constant 1073741824 + 161: 10(int) Constant 72 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 160 19 28 161 15 27 18 + 163: TypeMatrix 17(fvec4) 4 + 165: 47(bool) ConstantTrue + 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 165 + 166: TypeArray 17(fvec4) 14 + 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 19 14 + 168(UBO): TypeStruct 163 163 17(fvec4) 166 7(float) 7(float) 44(fvec2) 7(float) + 171: 10(int) Constant 29 + 172: 10(int) Constant 20 + 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 164 28 171 172 15 15 16 + 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 164 28 171 172 15 15 16 + 176: 10(int) Constant 30 + 177: 10(int) Constant 17 + 174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 175 19 28 176 177 15 15 16 + 180: 10(int) Constant 22 + 178: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 179 167 28 79 180 15 15 16 + 183: 10(int) Constant 27 + 181: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16 + 187: 10(int) Constant 34 + 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 186 45 28 187 172 15 15 16 + 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 190 31 28 161 15 30 190 15 16 169 173 174 178 181 184 185 188 + 191(ubo): TypeStruct 168(UBO) + 194: 10(int) Constant 37 + 192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 193 189 28 194 194 15 15 16 + 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 193 31 28 161 15 30 193 15 16 192 + 196: TypePointer Uniform 191(ubo) + 197: 196(ptr) Variable Uniform + 199: 10(int) Constant 8 + 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 29 195 28 161 15 30 29 197 199 + 200: TypeInt 32 1 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 201 13 18 15 + 203: 200(int) Constant 0 + 204: 200(int) Constant 1 + 205: TypePointer Uniform 163 + 213: 10(int) Constant 75 + 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 212 19 28 213 15 27 18 + 216: 7(float) Constant 0 + 217: 66(fvec3) ConstantComposite 216 216 216 + 230: 10(int) Constant 76 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 19 28 230 15 27 18 + 254: 200(int) Constant 6 + 255: TypePointer Uniform 44(fvec2) + 277: 200(int) Constant 7 + 278: TypePointer Uniform 7(float) + 282: 200(int) Constant 5 + 286: 7(float) Constant 1065353216 + 287: 7(float) Constant 1115684864 + 295: 10(int) Constant 98 + 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 294 19 28 295 15 56 18 + 298: TypeImage 7(float) 2D sampled format:Unknown + 301: 10(int) Constant 99 + 303: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 300 15 28 301 15 30 302 303 16 + 304: TypePointer UniformConstant 298 +305(textureHeight): 304(ptr) Variable UniformConstant + 306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 307 299 28 301 15 30 307 305(textureHeight) 199 + 309: TypeSampler + 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 311 31 28 301 15 30 312 303 16 + 313: TypePointer UniformConstant 309 +314(samplerHeight): 313(ptr) Variable UniformConstant + 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 316 310 28 301 15 30 316 314(samplerHeight) 199 + 318: TypeSampledImage 298 + 319: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 320 15 28 301 15 30 321 303 16 + 326: 200(int) Constant 4 + 334: TypePointer Function 200(int) + 338: 10(int) Constant 102 + 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 337 202 28 338 15 56 18 + 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 349: 200(int) Constant 3 + 351: TypePointer Uniform 17(fvec4) + 355: 7(float) Constant 1090519040 + 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 362: 47(bool) ConstantFalse + 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 371: TypePointer Function 89(ConstantsHSOutput) + 375: 10(int) Constant 113 + 373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 374 97 28 375 15 104 18 + 376: 85 ConstantComposite 216 216 216 216 + 377: 87 ConstantComposite 216 216 + 378:89(ConstantsHSOutput) ConstantComposite 376 377 + 380: 200(int) Constant 2 + 388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 402: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 461: TypePointer Function 112(HSOutput) + 464: 10(int) Constant 159 + 463: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 374 119 28 464 15 127 18 + 465: 17(fvec4) ConstantComposite 216 216 216 216 + 466: 44(fvec2) ConstantComposite 216 216 + 467:112(HSOutput) ConstantComposite 465 217 466 + 474: TypePointer Function 66(fvec3) + 486: TypeArray 17(fvec4) 18 + 487: TypePointer Input 486 + 488(patch.Pos): 487(ptr) Variable Input + 489: TypePointer Input 17(fvec4) + 493: TypeArray 66(fvec3) 18 + 494: TypePointer Input 493 +495(patch.Normal): 494(ptr) Variable Input + 496: TypePointer Input 66(fvec3) + 500: TypeArray 44(fvec2) 18 + 501: TypePointer Input 500 + 502(patch.UV): 501(ptr) Variable Input + 503: TypePointer Input 44(fvec2) + 535: TypePointer Input 10(int) +536(InvocationID): 535(ptr) Variable Input + 544: TypePointer Output 486 +545(@entryPointOutput.Pos): 544(ptr) Variable Output + 549: TypePointer Output 17(fvec4) + 551: TypePointer Output 493 +552(@entryPointOutput.Normal): 551(ptr) Variable Output + 556: TypePointer Output 66(fvec3) + 558: TypePointer Output 500 +559(@entryPointOutput.UV): 558(ptr) Variable Output + 563: TypePointer Output 44(fvec2) + 573: TypePointer Output 85 +574(@patchConstantOutput.TessLevelOuter): 573(ptr) Variable Output + 577: TypePointer Output 7(float) + 588: TypePointer Output 87 +589(@patchConstantOutput.TessLevelInner): 588(ptr) Variable Output + 5(main): 3 Function None 4 + 6: Label + 485(patch): 84(ptr) Variable Function +534(InvocationID): 111(ptr) Variable Function +538(flattenTemp): 461(ptr) Variable Function + 539(param): 84(ptr) Variable Function + 541(param): 111(ptr) Variable Function +569(@patchConstantResult): 371(ptr) Variable Function + 570(param): 84(ptr) Variable Function + 490: 489(ptr) AccessChain 488(patch.Pos) 203 + 491: 17(fvec4) Load 490 + 492: 20(ptr) AccessChain 485(patch) 203 203 + Store 492 491 + 497: 496(ptr) AccessChain 495(patch.Normal) 203 + 498: 66(fvec3) Load 497 + 499: 474(ptr) AccessChain 485(patch) 203 204 + Store 499 498 + 504: 503(ptr) AccessChain 502(patch.UV) 203 + 505: 44(fvec2) Load 504 + 506: 46(ptr) AccessChain 485(patch) 203 380 + Store 506 505 + 507: 489(ptr) AccessChain 488(patch.Pos) 204 + 508: 17(fvec4) Load 507 + 509: 20(ptr) AccessChain 485(patch) 204 203 + Store 509 508 + 510: 496(ptr) AccessChain 495(patch.Normal) 204 + 511: 66(fvec3) Load 510 + 512: 474(ptr) AccessChain 485(patch) 204 204 + Store 512 511 + 513: 503(ptr) AccessChain 502(patch.UV) 204 + 514: 44(fvec2) Load 513 + 515: 46(ptr) AccessChain 485(patch) 204 380 + Store 515 514 + 516: 489(ptr) AccessChain 488(patch.Pos) 380 + 517: 17(fvec4) Load 516 + 518: 20(ptr) AccessChain 485(patch) 380 203 + Store 518 517 + 519: 496(ptr) AccessChain 495(patch.Normal) 380 + 520: 66(fvec3) Load 519 + 521: 474(ptr) AccessChain 485(patch) 380 204 + Store 521 520 + 522: 503(ptr) AccessChain 502(patch.UV) 380 + 523: 44(fvec2) Load 522 + 524: 46(ptr) AccessChain 485(patch) 380 380 + Store 524 523 + 525: 489(ptr) AccessChain 488(patch.Pos) 349 + 526: 17(fvec4) Load 525 + 527: 20(ptr) AccessChain 485(patch) 349 203 + Store 527 526 + 528: 496(ptr) AccessChain 495(patch.Normal) 349 + 529: 66(fvec3) Load 528 + 530: 474(ptr) AccessChain 485(patch) 349 204 + Store 530 529 + 531: 503(ptr) AccessChain 502(patch.UV) 349 + 532: 44(fvec2) Load 531 + 533: 46(ptr) AccessChain 485(patch) 349 380 + Store 533 532 + 537: 10(int) Load 536(InvocationID) + Store 534(InvocationID) 537 + 540: 82 Load 485(patch) + Store 539(param) 540 + 542: 10(int) Load 534(InvocationID) + Store 541(param) 542 + 543:112(HSOutput) FunctionCall 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 539(param) 541(param) + Store 538(flattenTemp) 543 + 546: 10(int) Load 536(InvocationID) + 547: 20(ptr) AccessChain 538(flattenTemp) 203 + 548: 17(fvec4) Load 547 + 550: 549(ptr) AccessChain 545(@entryPointOutput.Pos) 546 + Store 550 548 + 553: 10(int) Load 536(InvocationID) + 554: 474(ptr) AccessChain 538(flattenTemp) 204 + 555: 66(fvec3) Load 554 + 557: 556(ptr) AccessChain 552(@entryPointOutput.Normal) 553 + Store 557 555 + 560: 10(int) Load 536(InvocationID) + 561: 46(ptr) AccessChain 538(flattenTemp) 380 + 562: 44(fvec2) Load 561 + 564: 563(ptr) AccessChain 559(@entryPointOutput.UV) 560 + Store 564 562 + ControlBarrier 42 18 15 + 565: 10(int) Load 536(InvocationID) + 566: 47(bool) IEqual 565 203 + SelectionMerge 568 None + BranchConditional 566 567 568 + 567: Label + 571: 82 Load 485(patch) + Store 570(param) 571 + 572:89(ConstantsHSOutput) FunctionCall 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 570(param) + Store 569(@patchConstantResult) 572 + 575: 147(ptr) AccessChain 569(@patchConstantResult) 203 203 + 576: 7(float) Load 575 + 578: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 203 + Store 578 576 + 579: 147(ptr) AccessChain 569(@patchConstantResult) 203 204 + 580: 7(float) Load 579 + 581: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 204 + Store 581 580 + 582: 147(ptr) AccessChain 569(@patchConstantResult) 203 380 + 583: 7(float) Load 582 + 584: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 380 + Store 584 583 + 585: 147(ptr) AccessChain 569(@patchConstantResult) 203 349 + 586: 7(float) Load 585 + 587: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 349 + Store 587 586 + 590: 147(ptr) AccessChain 569(@patchConstantResult) 204 203 + 591: 7(float) Load 590 + 592: 577(ptr) AccessChain 589(@patchConstantOutput.TessLevelInner) 203 + Store 592 591 + 593: 147(ptr) AccessChain 569(@patchConstantResult) 204 204 + 594: 7(float) Load 593 + 595: 577(ptr) AccessChain 589(@patchConstantOutput.TessLevelInner) 204 + Store 595 594 + Branch 568 + 568: Label + Return + FunctionEnd +25(screenSpaceTessFactor(vf4;vf4;): 7(float) Function None 21 + 23(p0): 20(ptr) FunctionParameter + 24(p1): 20(ptr) FunctionParameter + 33: Label + 137(midPoint): 20(ptr) Variable Function + 148(radius): 147(ptr) Variable Function + 158(v0): 20(ptr) Variable Function + 210(clip0): 20(ptr) Variable Function + 227(clip1): 20(ptr) Variable Function + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 27 + 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 36 23(p0) 39 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 40 24(p1) 39 + 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 27 25(screenSpaceTessFactor(vf4;vf4;) + 142: 17(fvec4) Load 23(p0) + 143: 17(fvec4) Load 24(p1) + 144: 17(fvec4) FAdd 142 143 + 145: 17(fvec4) VectorTimesScalar 144 141 + Store 137(midPoint) 145 + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 138 145 39 + 152: 17(fvec4) Load 23(p0) + 153: 17(fvec4) Load 24(p1) + 154: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 152 153 + 156: 7(float) FDiv 154 155 + Store 148(radius) 156 + 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 149 156 39 + 162: 17(fvec4) Load 137(midPoint) + 206: 205(ptr) AccessChain 197 203 204 + 207: 163 Load 206 + 208: 17(fvec4) VectorTimesMatrix 162 207 + Store 158(v0) 208 + 209: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 159 208 39 + 214: 17(fvec4) Load 158(v0) + 215: 7(float) Load 148(radius) + 218: 7(float) CompositeExtract 217 0 + 219: 7(float) CompositeExtract 217 1 + 220: 7(float) CompositeExtract 217 2 + 221: 17(fvec4) CompositeConstruct 215 218 219 220 + 222: 17(fvec4) FSub 214 221 + 223: 205(ptr) AccessChain 197 203 203 + 224: 163 Load 223 + 225: 17(fvec4) VectorTimesMatrix 222 224 + Store 210(clip0) 225 + 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 211 225 39 + 231: 17(fvec4) Load 158(v0) + 232: 7(float) Load 148(radius) + 233: 7(float) CompositeExtract 217 0 + 234: 7(float) CompositeExtract 217 1 + 235: 7(float) CompositeExtract 217 2 + 236: 17(fvec4) CompositeConstruct 232 233 234 235 + 237: 17(fvec4) FAdd 231 236 + 238: 205(ptr) AccessChain 197 203 203 + 239: 163 Load 238 + 240: 17(fvec4) VectorTimesMatrix 237 239 + Store 227(clip1) 240 + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 228 240 39 + 242: 147(ptr) AccessChain 210(clip0) 16 + 243: 7(float) Load 242 + 244: 17(fvec4) Load 210(clip0) + 245: 17(fvec4) CompositeConstruct 243 243 243 243 + 246: 17(fvec4) FDiv 244 245 + Store 210(clip0) 246 + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 211 246 39 + 248: 147(ptr) AccessChain 227(clip1) 16 + 249: 7(float) Load 248 + 250: 17(fvec4) Load 227(clip1) + 251: 17(fvec4) CompositeConstruct 249 249 249 249 + 252: 17(fvec4) FDiv 250 251 + Store 227(clip1) 252 + 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 228 252 39 + 256: 255(ptr) AccessChain 197 203 254 + 257: 44(fvec2) Load 256 + 258: 17(fvec4) Load 210(clip0) + 259: 44(fvec2) VectorShuffle 258 258 0 1 + 260: 44(fvec2) FMul 259 257 + 261: 147(ptr) AccessChain 210(clip0) 15 + 262: 7(float) CompositeExtract 260 0 + Store 261 262 + 263: 147(ptr) AccessChain 210(clip0) 31 + 264: 7(float) CompositeExtract 260 1 + Store 263 264 + 265: 255(ptr) AccessChain 197 203 254 + 266: 44(fvec2) Load 265 + 267: 17(fvec4) Load 227(clip1) + 268: 44(fvec2) VectorShuffle 267 267 0 1 + 269: 44(fvec2) FMul 268 266 + 270: 147(ptr) AccessChain 227(clip1) 15 + 271: 7(float) CompositeExtract 269 0 + Store 270 271 + 272: 147(ptr) AccessChain 227(clip1) 31 + 273: 7(float) CompositeExtract 269 1 + Store 272 273 + 274: 17(fvec4) Load 210(clip0) + 275: 17(fvec4) Load 227(clip1) + 276: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 274 275 + 279: 278(ptr) AccessChain 197 203 277 + 280: 7(float) Load 279 + 281: 7(float) FDiv 276 280 + 283: 278(ptr) AccessChain 197 203 282 + 284: 7(float) Load 283 + 285: 7(float) FMul 281 284 + 288: 7(float) ExtInst 2(GLSL.std.450) 43(FClamp) 285 286 287 + ReturnValue 288 + FunctionEnd +54(frustumCheck(vf4;vf2;): 47(bool) Function None 50 + 52(Pos): 20(ptr) FunctionParameter + 53(inUV): 46(ptr) FunctionParameter + 57: Label + 292(pos): 20(ptr) Variable Function + 335(i): 334(ptr) Variable Function + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 56 + 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 60 52(Pos) 39 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 63 53(inUV) 39 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 56 54(frustumCheck(vf4;vf2;) + 296: 17(fvec4) Load 52(Pos) + Store 292(pos) 296 + 297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 293 296 39 + 308: 298 Load 305(textureHeight) + 317: 309 Load 314(samplerHeight) + 322: 318 SampledImage 308 317 + 323: 44(fvec2) Load 53(inUV) + 324: 17(fvec4) ImageSampleExplicitLod 322 323 Lod 216 + 325: 7(float) CompositeExtract 324 0 + 327: 278(ptr) AccessChain 197 203 326 + 328: 7(float) Load 327 + 329: 7(float) FMul 325 328 + 330: 147(ptr) AccessChain 292(pos) 31 + 331: 7(float) Load 330 + 332: 7(float) FSub 331 329 + 333: 147(ptr) AccessChain 292(pos) 31 + Store 333 332 + Store 335(i) 203 + 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 336 203 39 + Branch 340 + 340: Label + LoopMerge 342 343 None + Branch 344 + 344: Label + 345: 200(int) Load 335(i) + 347: 47(bool) SLessThan 345 254 + BranchConditional 347 341 342 + 341: Label + 348: 17(fvec4) Load 292(pos) + 350: 200(int) Load 335(i) + 352: 351(ptr) AccessChain 197 203 349 350 + 353: 17(fvec4) Load 352 + 354: 7(float) Dot 348 353 + 356: 7(float) FAdd 354 355 + 358: 47(bool) FOrdLessThan 356 216 + SelectionMerge 360 None + BranchConditional 358 359 360 + 359: Label + ReturnValue 362 + 360: Label + Branch 343 + 343: Label + 364: 200(int) Load 335(i) + 365: 200(int) IAdd 364 204 + Store 335(i) 365 + 366: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 336 365 39 + Branch 340 + 342: Label + ReturnValue 165 + FunctionEnd +102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):89(ConstantsHSOutput) Function None 99 + 101(patch): 84(ptr) FunctionParameter + 105: Label + 372(output): 371(ptr) Variable Function + 381(param): 20(ptr) Variable Function + 384(param): 46(ptr) Variable Function + 406(param): 20(ptr) Variable Function + 409(param): 20(ptr) Variable Function + 414(param): 20(ptr) Variable Function + 417(param): 20(ptr) Variable Function + 422(param): 20(ptr) Variable Function + 425(param): 20(ptr) Variable Function + 430(param): 20(ptr) Variable Function + 433(param): 20(ptr) Variable Function + 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 104 + 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 + 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 101(patch) 39 + 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + Store 372(output) 378 + 379: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 373 378 39 + 382: 20(ptr) AccessChain 101(patch) 203 203 + 383: 17(fvec4) Load 382 + Store 381(param) 383 + 385: 46(ptr) AccessChain 101(patch) 203 380 + 386: 44(fvec2) Load 385 + Store 384(param) 386 + 387: 47(bool) FunctionCall 54(frustumCheck(vf4;vf2;) 381(param) 384(param) + 390: 47(bool) LogicalNot 387 + SelectionMerge 392 None + BranchConditional 390 391 399 + 391: Label + 393: 147(ptr) AccessChain 372(output) 204 203 + Store 393 216 + 394: 147(ptr) AccessChain 372(output) 204 204 + Store 394 216 + 395: 147(ptr) AccessChain 372(output) 203 203 + Store 395 216 + 396: 147(ptr) AccessChain 372(output) 203 204 + Store 396 216 + 397: 147(ptr) AccessChain 372(output) 203 380 + Store 397 216 + 398: 147(ptr) AccessChain 372(output) 203 349 + Store 398 216 + Branch 392 + 399: Label + 400: 278(ptr) AccessChain 197 203 282 + 401: 7(float) Load 400 + 403: 47(bool) FOrdGreaterThan 401 216 + SelectionMerge 405 None + BranchConditional 403 404 450 + 404: Label + 407: 20(ptr) AccessChain 101(patch) 349 203 + 408: 17(fvec4) Load 407 + Store 406(param) 408 + 410: 20(ptr) AccessChain 101(patch) 203 203 + 411: 17(fvec4) Load 410 + Store 409(param) 411 + 412: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 406(param) 409(param) + 413: 147(ptr) AccessChain 372(output) 203 203 + Store 413 412 + 415: 20(ptr) AccessChain 101(patch) 203 203 + 416: 17(fvec4) Load 415 + Store 414(param) 416 + 418: 20(ptr) AccessChain 101(patch) 204 203 + 419: 17(fvec4) Load 418 + Store 417(param) 419 + 420: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 414(param) 417(param) + 421: 147(ptr) AccessChain 372(output) 203 204 + Store 421 420 + 423: 20(ptr) AccessChain 101(patch) 204 203 + 424: 17(fvec4) Load 423 + Store 422(param) 424 + 426: 20(ptr) AccessChain 101(patch) 380 203 + 427: 17(fvec4) Load 426 + Store 425(param) 427 + 428: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 422(param) 425(param) + 429: 147(ptr) AccessChain 372(output) 203 380 + Store 429 428 + 431: 20(ptr) AccessChain 101(patch) 380 203 + 432: 17(fvec4) Load 431 + Store 430(param) 432 + 434: 20(ptr) AccessChain 101(patch) 349 203 + 435: 17(fvec4) Load 434 + Store 433(param) 435 + 436: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 430(param) 433(param) + 437: 147(ptr) AccessChain 372(output) 203 349 + Store 437 436 + 438: 147(ptr) AccessChain 372(output) 203 203 + 439: 7(float) Load 438 + 440: 147(ptr) AccessChain 372(output) 203 349 + 441: 7(float) Load 440 + 442: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 439 441 141 + 443: 147(ptr) AccessChain 372(output) 204 203 + Store 443 442 + 444: 147(ptr) AccessChain 372(output) 203 380 + 445: 7(float) Load 444 + 446: 147(ptr) AccessChain 372(output) 203 204 + 447: 7(float) Load 446 + 448: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 445 447 141 + 449: 147(ptr) AccessChain 372(output) 204 204 + Store 449 448 + Branch 405 + 450: Label + 451: 147(ptr) AccessChain 372(output) 204 203 + Store 451 286 + 452: 147(ptr) AccessChain 372(output) 204 204 + Store 452 286 + 453: 147(ptr) AccessChain 372(output) 203 203 + Store 453 286 + 454: 147(ptr) AccessChain 372(output) 203 204 + Store 454 286 + 455: 147(ptr) AccessChain 372(output) 203 380 + Store 455 286 + 456: 147(ptr) AccessChain 372(output) 203 349 + Store 456 286 + Branch 405 + 405: Label + Branch 392 + 392: Label + 457:89(ConstantsHSOutput) Load 372(output) + ReturnValue 457 + FunctionEnd +125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):112(HSOutput) Function None 121 + 123(patch): 84(ptr) FunctionParameter +124(InvocationID): 111(ptr) FunctionParameter + 128: Label + 462(output): 461(ptr) Variable Function + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 127 + 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 + 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 123(patch) 39 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 133 124(InvocationID) 39 + 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + Store 462(output) 467 + 468: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 463 467 39 + 469: 10(int) Load 124(InvocationID) + 470: 20(ptr) AccessChain 123(patch) 469 203 + 471: 17(fvec4) Load 470 + 472: 20(ptr) AccessChain 462(output) 203 + Store 472 471 + 473: 10(int) Load 124(InvocationID) + 475: 474(ptr) AccessChain 123(patch) 473 204 + 476: 66(fvec3) Load 475 + 477: 474(ptr) AccessChain 462(output) 204 + Store 477 476 + 478: 10(int) Load 124(InvocationID) + 479: 46(ptr) AccessChain 123(patch) 478 380 + 480: 44(fvec2) Load 479 + 481: 46(ptr) AccessChain 462(output) 380 + Store 481 480 + 482:112(HSOutput) Load 462(output) + ReturnValue 482 + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out new file mode 100644 index 0000000000..216dd82381 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -0,0 +1,589 @@ +spv.debuginfo.hlsl.tese +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 434 + + Capability Tessellation + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationEvaluation 5 "main" 325 340 349 358 365 371 411 415 419 422 425 428 431 + ExecutionMode 5 Quads + 9: String "float" + 12: String "uint" + 25: String "TessLevelOuter" + 27: String "" + 31: String "TessLevelInner" + 34: String "ConstantsHSOutput" + 48: String "Pos" + 51: String "Normal" + 55: String "UV" + 59: String "HSOutput" + 67: String "WorldPos" + 77: String "DSOutput" + 84: String "@main" + 90: String "input" + 94: String "TessCoord" + 97: String "patch" + 103: String "output" + 113: String "uv1" + 116: String "int" + 131: String "uv2" + 151: String "n1" + 162: String "n2" + 181: String "pos1" + 192: String "pos2" + 203: String "pos" + 214: String "type.2d.image" + 216: String "@type.2d.image" + 221: String "displacementMapTexture" + 226: String "type.sampler" + 227: String "@type.sampler" + 231: String "displacementMapSampler" + 235: String "type.sampled.image" + 236: String "@type.sampled.image" + 250: String "modelview" + 255: String "lightPos" + 259: String "frustumPlanes" + 262: String "tessellatedEdgeSize" + 266: String "viewportDim" + 270: String "UBO" + 273: String "ubo" + Name 5 "main" + Name 23 "ConstantsHSOutput" + MemberName 23(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 23(ConstantsHSOutput) 1 "TessLevelInner" + Name 46 "HSOutput" + MemberName 46(HSOutput) 0 "Pos" + MemberName 46(HSOutput) 1 "Normal" + MemberName 46(HSOutput) 2 "UV" + Name 62 "DSOutput" + MemberName 62(DSOutput) 0 "Pos" + MemberName 62(DSOutput) 1 "Normal" + MemberName 62(DSOutput) 2 "UV" + MemberName 62(DSOutput) 3 "ViewVec" + MemberName 62(DSOutput) 4 "LightVec" + MemberName 62(DSOutput) 5 "EyePos" + MemberName 62(DSOutput) 6 "WorldPos" + Name 83 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" + Name 80 "input" + Name 81 "TessCoord" + Name 82 "patch" + Name 101 "output" + Name 111 "uv1" + Name 129 "uv2" + Name 149 "n1" + Name 160 "n2" + Name 179 "pos1" + Name 190 "pos2" + Name 201 "pos" + Name 219 "displacementMapTexture" + Name 229 "displacementMapSampler" + Name 248 "UBO" + MemberName 248(UBO) 0 "projection" + MemberName 248(UBO) 1 "modelview" + MemberName 248(UBO) 2 "lightPos" + MemberName 248(UBO) 3 "frustumPlanes" + MemberName 248(UBO) 4 "displacementFactor" + MemberName 248(UBO) 5 "tessellationFactor" + MemberName 248(UBO) 6 "viewportDim" + MemberName 248(UBO) 7 "tessellatedEdgeSize" + Name 271 "ubo" + MemberName 271(ubo) 0 "ubo" + Name 276 "" + Name 323 "input" + Name 325 "input.TessLevelOuter" + Name 340 "input.TessLevelInner" + Name 347 "TessCoord" + Name 349 "TessCoord" + Name 355 "patch" + Name 358 "patch.Pos" + Name 365 "patch.Normal" + Name 371 "patch.UV" + Name 403 "flattenTemp" + Name 405 "param" + Name 407 "param" + Name 411 "@entryPointOutput.Pos" + Name 415 "@entryPointOutput.Normal" + Name 419 "@entryPointOutput.UV" + Name 422 "@entryPointOutput.ViewVec" + Name 425 "@entryPointOutput.LightVec" + Name 428 "@entryPointOutput.EyePos" + Name 431 "@entryPointOutput.WorldPos" + Decorate 219(displacementMapTexture) DescriptorSet 0 + Decorate 219(displacementMapTexture) Binding 1 + Decorate 229(displacementMapSampler) DescriptorSet 0 + Decorate 229(displacementMapSampler) Binding 1 + Decorate 246 ArrayStride 16 + MemberDecorate 248(UBO) 0 RowMajor + MemberDecorate 248(UBO) 0 Offset 0 + MemberDecorate 248(UBO) 0 MatrixStride 16 + MemberDecorate 248(UBO) 1 RowMajor + MemberDecorate 248(UBO) 1 Offset 64 + MemberDecorate 248(UBO) 1 MatrixStride 16 + MemberDecorate 248(UBO) 2 Offset 128 + MemberDecorate 248(UBO) 3 Offset 144 + MemberDecorate 248(UBO) 4 Offset 240 + MemberDecorate 248(UBO) 5 Offset 244 + MemberDecorate 248(UBO) 6 Offset 248 + MemberDecorate 248(UBO) 7 Offset 256 + MemberDecorate 271(ubo) 0 Offset 0 + Decorate 271(ubo) Block + Decorate 276 DescriptorSet 0 + Decorate 276 Binding 0 + Decorate 325(input.TessLevelOuter) Patch + Decorate 325(input.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 340(input.TessLevelInner) Patch + Decorate 340(input.TessLevelInner) BuiltIn TessLevelInner + Decorate 349(TessCoord) Patch + Decorate 349(TessCoord) BuiltIn TessCoord + Decorate 358(patch.Pos) BuiltIn Position + Decorate 365(patch.Normal) Location 0 + Decorate 371(patch.UV) Location 1 + Decorate 411(@entryPointOutput.Pos) BuiltIn Position + Decorate 415(@entryPointOutput.Normal) Location 0 + Decorate 419(@entryPointOutput.UV) Location 1 + Decorate 422(@entryPointOutput.ViewVec) Location 2 + Decorate 425(@entryPointOutput.LightVec) Location 3 + Decorate 428(@entryPointOutput.EyePos) Location 4 + Decorate 431(@entryPointOutput.WorldPos) Location 5 + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeFloat 32 + 10: TypeInt 32 0 + 13: 10(int) Constant 32 + 14: 10(int) Constant 6 + 15: 10(int) Constant 0 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 16: 10(int) Constant 3 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 17: 10(int) Constant 4 + 18: TypeArray 7(float) 17 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 17 + 20: 10(int) Constant 2 + 21: TypeArray 7(float) 20 + 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 20 +23(ConstantsHSOutput): TypeStruct 18 21 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 27 + 28: 10(int) Constant 51 + 29: 10(int) Constant 25 + 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 25 19 26 28 29 15 15 16 + 32: 10(int) Constant 52 + 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 31 22 26 32 29 15 15 16 + 35: 10(int) Constant 1 + 37: 10(int) Constant 5 + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 35 17 26 37 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 34 35 26 15 15 36 34 15 16 24 30 + 38: TypePointer Function 23(ConstantsHSOutput) + 39: TypeVector 7(float) 2 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20 + 41: TypePointer Function 39(fvec2) + 42: TypeVector 7(float) 4 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 17 + 44: TypeVector 7(float) 3 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 46(HSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) + 49: 10(int) Constant 44 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 49 13 15 15 16 + 52: 10(int) Constant 45 + 53: 10(int) Constant 35 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 45 26 52 53 15 15 16 + 56: 10(int) Constant 46 + 57: 10(int) Constant 31 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 56 57 15 15 16 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 59 35 26 15 15 36 59 15 16 47 50 54 + 60: TypeArray 46(HSOutput) 17 + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 58 17 + 62(DSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) 44(fvec3) 44(fvec3) 44(fvec3) 44(fvec3) + 64: 10(int) Constant 57 + 65: 10(int) Constant 13 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 64 65 15 15 16 + 68: 10(int) Constant 63 + 69: 10(int) Constant 37 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 + 71: 10(int) Constant 59 + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 71 57 15 15 16 + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 + 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 + 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 77 35 26 15 15 36 77 15 16 63 66 70 72 73 74 75 + 78: TypeFunction 62(DSOutput) 38(ptr) 41(ptr) 60 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 76 33 40 58 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 84 79 26 15 15 36 84 16 15 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 90 33 26 15 15 85 17 35 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 94 40 26 15 15 85 17 20 + 96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 97 58 26 15 15 85 17 16 + 100: TypePointer Function 62(DSOutput) + 104: 10(int) Constant 70 + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 103 76 26 104 15 85 17 + 105: 7(float) Constant 0 + 106: 42(fvec4) ConstantComposite 105 105 105 105 + 107: 44(fvec3) ConstantComposite 105 105 105 + 108: 39(fvec2) ConstantComposite 105 105 + 109:62(DSOutput) ConstantComposite 106 107 108 107 107 107 107 + 114: 10(int) Constant 71 + 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 113 40 26 114 15 85 17 + 115: TypeInt 32 1 + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 116 13 17 15 + 118: 115(int) Constant 0 + 119: 115(int) Constant 2 + 121: 115(int) Constant 1 + 123: TypePointer Function 7(float) + 132: 10(int) Constant 72 + 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 131 40 26 132 15 85 17 + 133: 115(int) Constant 3 + 148: TypePointer Function 44(fvec3) + 152: 10(int) Constant 75 + 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 151 45 26 152 15 85 17 + 163: 10(int) Constant 76 + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 162 45 26 163 15 85 17 + 178: TypePointer Function 42(fvec4) + 182: 10(int) Constant 80 + 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 181 43 26 182 15 85 17 + 193: 10(int) Constant 81 + 191: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 192 43 26 193 15 85 17 + 204: 10(int) Constant 82 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 203 43 26 204 15 85 17 + 212: TypeImage 7(float) 2D sampled format:Unknown + 215: 10(int) Constant 84 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 214 15 26 215 15 36 216 217 16 + 218: TypePointer UniformConstant 212 +219(displacementMapTexture): 218(ptr) Variable UniformConstant + 222: 10(int) Constant 8 + 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 221 213 26 215 15 36 221 219(displacementMapTexture) 222 + 224: TypeSampler + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 35 26 215 15 36 227 217 16 + 228: TypePointer UniformConstant 224 +229(displacementMapSampler): 228(ptr) Variable UniformConstant + 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 231 225 26 215 15 36 231 229(displacementMapSampler) 222 + 233: TypeSampledImage 212 + 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 235 15 26 215 15 36 236 217 16 + 242: TypeMatrix 42(fvec4) 4 + 244: TypeBool + 245: 244(bool) ConstantTrue + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 43 17 245 + 246: TypeArray 42(fvec4) 14 + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 43 14 + 248(UBO): TypeStruct 242 242 42(fvec4) 246 7(float) 7(float) 39(fvec2) 7(float) + 251: 10(int) Constant 29 + 252: 10(int) Constant 20 + 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16 + 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16 + 256: 10(int) Constant 30 + 257: 10(int) Constant 17 + 254: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 255 43 26 256 257 15 15 16 + 260: 10(int) Constant 22 + 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 259 247 26 57 260 15 15 16 + 263: 10(int) Constant 27 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16 + 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16 + 267: 10(int) Constant 34 + 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 266 40 26 267 252 15 15 16 + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16 + 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 270 35 26 215 15 36 270 15 16 249 253 254 258 261 264 265 268 + 271(ubo): TypeStruct 248(UBO) + 272: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 273 269 26 69 69 15 15 16 + 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 273 35 26 215 15 36 273 15 16 272 + 275: TypePointer Uniform 271(ubo) + 276: 275(ptr) Variable Uniform + 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 27 274 26 215 15 36 27 276 222 + 278: 115(int) Constant 4 + 279: TypePointer Uniform 7(float) + 288: TypePointer Uniform 242 + 300: TypePointer Uniform 42(fvec4) + 309: 115(int) Constant 6 + 313: 115(int) Constant 5 + 324: TypePointer Input 18 +325(input.TessLevelOuter): 324(ptr) Variable Input + 326: TypePointer Input 7(float) + 339: TypePointer Input 21 +340(input.TessLevelInner): 339(ptr) Variable Input + 348: TypePointer Input 44(fvec3) + 349(TessCoord): 348(ptr) Variable Input + 354: TypePointer Function 60 + 356: TypeArray 42(fvec4) 17 + 357: TypePointer Input 356 + 358(patch.Pos): 357(ptr) Variable Input + 359: TypePointer Input 42(fvec4) + 363: TypeArray 44(fvec3) 17 + 364: TypePointer Input 363 +365(patch.Normal): 364(ptr) Variable Input + 369: TypeArray 39(fvec2) 17 + 370: TypePointer Input 369 + 371(patch.UV): 370(ptr) Variable Input + 372: TypePointer Input 39(fvec2) + 410: TypePointer Output 42(fvec4) +411(@entryPointOutput.Pos): 410(ptr) Variable Output + 414: TypePointer Output 44(fvec3) +415(@entryPointOutput.Normal): 414(ptr) Variable Output + 418: TypePointer Output 39(fvec2) +419(@entryPointOutput.UV): 418(ptr) Variable Output +422(@entryPointOutput.ViewVec): 414(ptr) Variable Output +425(@entryPointOutput.LightVec): 414(ptr) Variable Output +428(@entryPointOutput.EyePos): 414(ptr) Variable Output +431(@entryPointOutput.WorldPos): 414(ptr) Variable Output + 5(main): 3 Function None 4 + 6: Label + 323(input): 38(ptr) Variable Function + 347(TessCoord): 41(ptr) Variable Function + 355(patch): 354(ptr) Variable Function +403(flattenTemp): 100(ptr) Variable Function + 405(param): 38(ptr) Variable Function + 407(param): 41(ptr) Variable Function + 327: 326(ptr) AccessChain 325(input.TessLevelOuter) 118 + 328: 7(float) Load 327 + 329: 123(ptr) AccessChain 323(input) 118 118 + Store 329 328 + 330: 326(ptr) AccessChain 325(input.TessLevelOuter) 121 + 331: 7(float) Load 330 + 332: 123(ptr) AccessChain 323(input) 118 121 + Store 332 331 + 333: 326(ptr) AccessChain 325(input.TessLevelOuter) 119 + 334: 7(float) Load 333 + 335: 123(ptr) AccessChain 323(input) 118 119 + Store 335 334 + 336: 326(ptr) AccessChain 325(input.TessLevelOuter) 133 + 337: 7(float) Load 336 + 338: 123(ptr) AccessChain 323(input) 118 133 + Store 338 337 + 341: 326(ptr) AccessChain 340(input.TessLevelInner) 118 + 342: 7(float) Load 341 + 343: 123(ptr) AccessChain 323(input) 121 118 + Store 343 342 + 344: 326(ptr) AccessChain 340(input.TessLevelInner) 121 + 345: 7(float) Load 344 + 346: 123(ptr) AccessChain 323(input) 121 121 + Store 346 345 + 350: 44(fvec3) Load 349(TessCoord) + 351: 7(float) CompositeExtract 350 0 + 352: 7(float) CompositeExtract 350 1 + 353: 39(fvec2) CompositeConstruct 351 352 + Store 347(TessCoord) 353 + 360: 359(ptr) AccessChain 358(patch.Pos) 118 + 361: 42(fvec4) Load 360 + 362: 178(ptr) AccessChain 355(patch) 118 118 + Store 362 361 + 366: 348(ptr) AccessChain 365(patch.Normal) 118 + 367: 44(fvec3) Load 366 + 368: 148(ptr) AccessChain 355(patch) 118 121 + Store 368 367 + 373: 372(ptr) AccessChain 371(patch.UV) 118 + 374: 39(fvec2) Load 373 + 375: 41(ptr) AccessChain 355(patch) 118 119 + Store 375 374 + 376: 359(ptr) AccessChain 358(patch.Pos) 121 + 377: 42(fvec4) Load 376 + 378: 178(ptr) AccessChain 355(patch) 121 118 + Store 378 377 + 379: 348(ptr) AccessChain 365(patch.Normal) 121 + 380: 44(fvec3) Load 379 + 381: 148(ptr) AccessChain 355(patch) 121 121 + Store 381 380 + 382: 372(ptr) AccessChain 371(patch.UV) 121 + 383: 39(fvec2) Load 382 + 384: 41(ptr) AccessChain 355(patch) 121 119 + Store 384 383 + 385: 359(ptr) AccessChain 358(patch.Pos) 119 + 386: 42(fvec4) Load 385 + 387: 178(ptr) AccessChain 355(patch) 119 118 + Store 387 386 + 388: 348(ptr) AccessChain 365(patch.Normal) 119 + 389: 44(fvec3) Load 388 + 390: 148(ptr) AccessChain 355(patch) 119 121 + Store 390 389 + 391: 372(ptr) AccessChain 371(patch.UV) 119 + 392: 39(fvec2) Load 391 + 393: 41(ptr) AccessChain 355(patch) 119 119 + Store 393 392 + 394: 359(ptr) AccessChain 358(patch.Pos) 133 + 395: 42(fvec4) Load 394 + 396: 178(ptr) AccessChain 355(patch) 133 118 + Store 396 395 + 397: 348(ptr) AccessChain 365(patch.Normal) 133 + 398: 44(fvec3) Load 397 + 399: 148(ptr) AccessChain 355(patch) 133 121 + Store 399 398 + 400: 372(ptr) AccessChain 371(patch.UV) 133 + 401: 39(fvec2) Load 400 + 402: 41(ptr) AccessChain 355(patch) 133 119 + Store 402 401 + 404: 60 Load 355(patch) + 406:23(ConstantsHSOutput) Load 323(input) + Store 405(param) 406 + 408: 39(fvec2) Load 347(TessCoord) + Store 407(param) 408 + 409:62(DSOutput) FunctionCall 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 405(param) 407(param) 404 + Store 403(flattenTemp) 409 + 412: 178(ptr) AccessChain 403(flattenTemp) 118 + 413: 42(fvec4) Load 412 + Store 411(@entryPointOutput.Pos) 413 + 416: 148(ptr) AccessChain 403(flattenTemp) 121 + 417: 44(fvec3) Load 416 + Store 415(@entryPointOutput.Normal) 417 + 420: 41(ptr) AccessChain 403(flattenTemp) 119 + 421: 39(fvec2) Load 420 + Store 419(@entryPointOutput.UV) 421 + 423: 148(ptr) AccessChain 403(flattenTemp) 133 + 424: 44(fvec3) Load 423 + Store 422(@entryPointOutput.ViewVec) 424 + 426: 148(ptr) AccessChain 403(flattenTemp) 278 + 427: 44(fvec3) Load 426 + Store 425(@entryPointOutput.LightVec) 427 + 429: 148(ptr) AccessChain 403(flattenTemp) 313 + 430: 44(fvec3) Load 429 + Store 428(@entryPointOutput.EyePos) 430 + 432: 148(ptr) AccessChain 403(flattenTemp) 309 + 433: 44(fvec3) Load 432 + Store 431(@entryPointOutput.WorldPos) 433 + Return + FunctionEnd +83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):62(DSOutput) Function None 78 + 80(input): 38(ptr) FunctionParameter + 81(TessCoord): 41(ptr) FunctionParameter + 82(patch): 60 FunctionParameter + 86: Label + 101(output): 100(ptr) Variable Function + 111(uv1): 41(ptr) Variable Function + 129(uv2): 41(ptr) Variable Function + 149(n1): 148(ptr) Variable Function + 160(n2): 148(ptr) Variable Function + 179(pos1): 178(ptr) Variable Function + 190(pos2): 178(ptr) Variable Function + 201(pos): 178(ptr) Variable Function + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 85 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 26 15 15 15 15 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 89 80(input) 92 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 93 81(TessCoord) 92 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 96 82(patch) 92 + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 85 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) + Store 101(output) 109 + 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 102 109 92 + 120: 39(fvec2) CompositeExtract 82(patch) 0 2 + 122: 39(fvec2) CompositeExtract 82(patch) 1 2 + 124: 123(ptr) AccessChain 81(TessCoord) 15 + 125: 7(float) Load 124 + 126: 39(fvec2) CompositeConstruct 125 125 + 127: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 120 122 126 + Store 111(uv1) 127 + 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 112 127 92 + 134: 39(fvec2) CompositeExtract 82(patch) 3 2 + 135: 39(fvec2) CompositeExtract 82(patch) 2 2 + 136: 123(ptr) AccessChain 81(TessCoord) 15 + 137: 7(float) Load 136 + 138: 39(fvec2) CompositeConstruct 137 137 + 139: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 134 135 138 + Store 129(uv2) 139 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 130 139 92 + 141: 39(fvec2) Load 111(uv1) + 142: 39(fvec2) Load 129(uv2) + 143: 123(ptr) AccessChain 81(TessCoord) 35 + 144: 7(float) Load 143 + 145: 39(fvec2) CompositeConstruct 144 144 + 146: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 141 142 145 + 147: 41(ptr) AccessChain 101(output) 119 + Store 147 146 + 153: 44(fvec3) CompositeExtract 82(patch) 0 1 + 154: 44(fvec3) CompositeExtract 82(patch) 1 1 + 155: 123(ptr) AccessChain 81(TessCoord) 15 + 156: 7(float) Load 155 + 157: 44(fvec3) CompositeConstruct 156 156 156 + 158: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 153 154 157 + Store 149(n1) 158 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 150 158 92 + 164: 44(fvec3) CompositeExtract 82(patch) 3 1 + 165: 44(fvec3) CompositeExtract 82(patch) 2 1 + 166: 123(ptr) AccessChain 81(TessCoord) 15 + 167: 7(float) Load 166 + 168: 44(fvec3) CompositeConstruct 167 167 167 + 169: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 164 165 168 + Store 160(n2) 169 + 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 161 169 92 + 171: 44(fvec3) Load 149(n1) + 172: 44(fvec3) Load 160(n2) + 173: 123(ptr) AccessChain 81(TessCoord) 35 + 174: 7(float) Load 173 + 175: 44(fvec3) CompositeConstruct 174 174 174 + 176: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 171 172 175 + 177: 148(ptr) AccessChain 101(output) 121 + Store 177 176 + 183: 42(fvec4) CompositeExtract 82(patch) 0 0 + 184: 42(fvec4) CompositeExtract 82(patch) 1 0 + 185: 123(ptr) AccessChain 81(TessCoord) 15 + 186: 7(float) Load 185 + 187: 42(fvec4) CompositeConstruct 186 186 186 186 + 188: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 183 184 187 + Store 179(pos1) 188 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 180 188 92 + 194: 42(fvec4) CompositeExtract 82(patch) 3 0 + 195: 42(fvec4) CompositeExtract 82(patch) 2 0 + 196: 123(ptr) AccessChain 81(TessCoord) 15 + 197: 7(float) Load 196 + 198: 42(fvec4) CompositeConstruct 197 197 197 197 + 199: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 194 195 198 + Store 190(pos2) 199 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 191 199 92 + 205: 42(fvec4) Load 179(pos1) + 206: 42(fvec4) Load 190(pos2) + 207: 123(ptr) AccessChain 81(TessCoord) 35 + 208: 7(float) Load 207 + 209: 42(fvec4) CompositeConstruct 208 208 208 208 + 210: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 205 206 209 + Store 201(pos) 210 + 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 202 210 92 + 223: 212 Load 219(displacementMapTexture) + 232: 224 Load 229(displacementMapSampler) + 237: 233 SampledImage 223 232 + 238: 41(ptr) AccessChain 101(output) 119 + 239: 39(fvec2) Load 238 + 240: 42(fvec4) ImageSampleExplicitLod 237 239 Lod 105 + 241: 7(float) CompositeExtract 240 0 + 280: 279(ptr) AccessChain 276 118 278 + 281: 7(float) Load 280 + 282: 7(float) FMul 241 281 + 283: 123(ptr) AccessChain 201(pos) 35 + 284: 7(float) Load 283 + 285: 7(float) FSub 284 282 + 286: 123(ptr) AccessChain 201(pos) 35 + Store 286 285 + 287: 42(fvec4) Load 201(pos) + 289: 288(ptr) AccessChain 276 118 121 + 290: 242 Load 289 + 291: 42(fvec4) VectorTimesMatrix 287 290 + 292: 288(ptr) AccessChain 276 118 118 + 293: 242 Load 292 + 294: 42(fvec4) VectorTimesMatrix 291 293 + 295: 178(ptr) AccessChain 101(output) 118 + Store 295 294 + 296: 42(fvec4) Load 201(pos) + 297: 44(fvec3) VectorShuffle 296 296 0 1 2 + 298: 44(fvec3) FNegate 297 + 299: 148(ptr) AccessChain 101(output) 133 + Store 299 298 + 301: 300(ptr) AccessChain 276 118 119 + 302: 42(fvec4) Load 301 + 303: 44(fvec3) VectorShuffle 302 302 0 1 2 + 304: 148(ptr) AccessChain 101(output) 133 + 305: 44(fvec3) Load 304 + 306: 44(fvec3) FAdd 303 305 + 307: 44(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 306 + 308: 148(ptr) AccessChain 101(output) 278 + Store 308 307 + 310: 42(fvec4) Load 201(pos) + 311: 44(fvec3) VectorShuffle 310 310 0 1 2 + 312: 148(ptr) AccessChain 101(output) 309 + Store 312 311 + 314: 42(fvec4) Load 201(pos) + 315: 288(ptr) AccessChain 276 118 121 + 316: 242 Load 315 + 317: 42(fvec4) VectorTimesMatrix 314 316 + 318: 44(fvec3) VectorShuffle 317 317 0 1 2 + 319: 148(ptr) AccessChain 101(output) 313 + Store 319 318 + 320:62(DSOutput) Load 101(output) + ReturnValue 320 + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out new file mode 100644 index 0000000000..6e1ce400d3 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -0,0 +1,580 @@ +spv.debuginfo.hlsl.vert +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 443 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 5 "main" 392 395 399 402 405 408 412 416 424 428 431 434 437 440 + 9: String "float" + 12: String "uint" + 23: String "int" + 28: String "instanceRot" + 30: String "" + 35: String "UV" + 42: String "instanceScale" + 46: String "instanceTexIndex" + 50: String "VSInput" + 59: String "Pos" + 63: String "LightVec" + 70: String "VSOutput" + 75: String "@main" + 81: String "input" + 88: String "output" + 116: String "s" + 127: String "modelview" + 132: String "lightPos" + 136: String "globSpeed" + 140: String "UBO" + 143: String "ubo" + 159: String "c" + 173: String "mx" + 202: String "my" + 230: String "mz" + 244: String "rotMat" + 270: String "gRotMat" + 289: String "locPos" + 302: String "pos" + 361: String "lPos" + Name 5 "main" + Name 26 "VSInput" + MemberName 26(VSInput) 0 "Pos" + MemberName 26(VSInput) 1 "Normal" + MemberName 26(VSInput) 2 "UV" + MemberName 26(VSInput) 3 "Color" + MemberName 26(VSInput) 4 "instancePos" + MemberName 26(VSInput) 5 "instanceRot" + MemberName 26(VSInput) 6 "instanceScale" + MemberName 26(VSInput) 7 "instanceTexIndex" + Name 57 "VSOutput" + MemberName 57(VSOutput) 0 "Pos" + MemberName 57(VSOutput) 1 "Normal" + MemberName 57(VSOutput) 2 "Color" + MemberName 57(VSOutput) 3 "UV" + MemberName 57(VSOutput) 4 "ViewVec" + MemberName 57(VSOutput) 5 "LightVec" + Name 74 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" + Name 73 "input" + Name 86 "output" + Name 114 "s" + Name 125 "UBO" + MemberName 125(UBO) 0 "projection" + MemberName 125(UBO) 1 "modelview" + MemberName 125(UBO) 2 "lightPos" + MemberName 125(UBO) 3 "locSpeed" + MemberName 125(UBO) 4 "globSpeed" + Name 141 "ubo" + MemberName 141(ubo) 0 "ubo" + Name 147 "" + Name 157 "c" + Name 171 "mx" + Name 200 "my" + Name 228 "mz" + Name 242 "rotMat" + Name 268 "gRotMat" + Name 287 "locPos" + Name 300 "pos" + Name 359 "lPos" + Name 390 "input" + Name 392 "input.Pos" + Name 395 "input.Normal" + Name 399 "input.UV" + Name 402 "input.Color" + Name 405 "input.instancePos" + Name 408 "input.instanceRot" + Name 412 "input.instanceScale" + Name 416 "input.instanceTexIndex" + Name 419 "flattenTemp" + Name 420 "param" + Name 424 "@entryPointOutput.Pos" + Name 428 "@entryPointOutput.Normal" + Name 431 "@entryPointOutput.Color" + Name 434 "@entryPointOutput.UV" + Name 437 "@entryPointOutput.ViewVec" + Name 440 "@entryPointOutput.LightVec" + MemberDecorate 125(UBO) 0 RowMajor + MemberDecorate 125(UBO) 0 Offset 0 + MemberDecorate 125(UBO) 0 MatrixStride 16 + MemberDecorate 125(UBO) 1 RowMajor + MemberDecorate 125(UBO) 1 Offset 64 + MemberDecorate 125(UBO) 1 MatrixStride 16 + MemberDecorate 125(UBO) 2 Offset 128 + MemberDecorate 125(UBO) 3 Offset 144 + MemberDecorate 125(UBO) 4 Offset 148 + MemberDecorate 141(ubo) 0 Offset 0 + Decorate 141(ubo) Block + Decorate 147 DescriptorSet 0 + Decorate 147 Binding 0 + Decorate 392(input.Pos) Location 0 + Decorate 395(input.Normal) Location 1 + Decorate 399(input.UV) Location 2 + Decorate 402(input.Color) Location 3 + Decorate 405(input.instancePos) Location 4 + Decorate 408(input.instanceRot) Location 5 + Decorate 412(input.instanceScale) Location 6 + Decorate 416(input.instanceTexIndex) Location 7 + Decorate 424(@entryPointOutput.Pos) BuiltIn Position + Decorate 428(@entryPointOutput.Normal) Location 0 + Decorate 431(@entryPointOutput.Color) Location 1 + Decorate 434(@entryPointOutput.UV) Location 2 + Decorate 437(@entryPointOutput.ViewVec) Location 3 + Decorate 440(@entryPointOutput.LightVec) Location 4 + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeFloat 32 + 10: TypeInt 32 0 + 13: 10(int) Constant 32 + 14: 10(int) Constant 6 + 15: 10(int) Constant 0 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 16: 10(int) Constant 3 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 17: TypeVector 7(float) 3 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 19: TypeVector 7(float) 2 + 20: 10(int) Constant 2 + 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20 + 22: TypeInt 32 1 + 25: 10(int) Constant 4 + 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 23 13 25 15 + 26(VSInput): TypeStruct 17(fvec3) 17(fvec3) 19(fvec2) 17(fvec3) 17(fvec3) 17(fvec3) 7(float) 22(int) + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 30 + 31: 10(int) Constant 35 + 32: 10(int) Constant 40 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 + 36: 10(int) Constant 30 + 37: 10(int) Constant 31 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 35 21 29 36 37 15 15 16 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 + 43: 10(int) Constant 36 + 44: 10(int) Constant 41 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 42 8 29 43 44 15 15 16 + 47: 10(int) Constant 37 + 48: 10(int) Constant 42 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 24 29 47 48 15 15 16 + 51: 10(int) Constant 1 + 53: 10(int) Constant 5 + 52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 51 25 29 53 + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 50 51 29 15 15 52 50 15 16 27 33 34 38 39 40 41 45 + 54: TypePointer Function 26(VSInput) + 55: TypeVector 7(float) 4 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 25 + 57(VSOutput): TypeStruct 55(fvec4) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) + 60: 10(int) Constant 53 + 61: 10(int) Constant 13 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 59 56 29 60 61 15 15 16 + 64: 10(int) Constant 58 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 70 51 29 15 15 52 70 15 16 58 62 65 66 67 68 + 71: TypeFunction 57(VSOutput) 54(ptr) + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 69 49 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 75 72 29 15 15 52 75 16 15 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 49 29 15 15 76 25 51 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 85: TypePointer Function 57(VSOutput) + 89: 10(int) Constant 63 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 88 69 29 89 15 76 25 + 90: 7(float) Constant 0 + 91: 55(fvec4) ConstantComposite 90 90 90 90 + 92: 17(fvec3) ConstantComposite 90 90 90 + 93:57(VSOutput) ConstantComposite 91 92 92 92 92 92 + 95: 22(int) Constant 2 + 96: 22(int) Constant 3 + 97: TypePointer Function 17(fvec3) + 101: TypePointer Function 19(fvec2) + 104: 22(int) Constant 7 + 105: TypePointer Function 22(int) + 113: TypePointer Function 7(float) + 117: 10(int) Constant 68 + 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 116 8 29 117 15 76 25 + 118: 22(int) Constant 5 + 121: TypeMatrix 55(fvec4) 4 + 123: TypeBool + 124: 123(bool) ConstantTrue + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 56 25 124 + 125(UBO): TypeStruct 121 121 55(fvec4) 7(float) 7(float) + 128: 10(int) Constant 43 + 129: 10(int) Constant 20 + 126: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 127 122 29 128 129 15 15 16 + 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 127 122 29 128 129 15 15 16 + 133: 10(int) Constant 44 + 134: 10(int) Constant 17 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 56 29 133 134 15 15 16 + 137: 10(int) Constant 46 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 136 8 29 137 134 15 15 16 + 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 136 8 29 137 134 15 15 16 + 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 140 51 29 117 15 52 140 15 16 126 130 131 135 138 + 141(ubo): TypeStruct 125(UBO) + 144: 10(int) Constant 49 + 142: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 143 139 29 144 47 15 15 16 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 143 51 29 117 15 52 143 15 16 142 + 146: TypePointer Uniform 141(ubo) + 147: 146(ptr) Variable Uniform + 149: 10(int) Constant 8 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 145 29 117 15 52 30 147 149 + 150: 22(int) Constant 0 + 151: TypePointer Uniform 7(float) + 160: 10(int) Constant 69 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 159 8 29 160 15 76 25 + 168: TypeMatrix 17(fvec3) 3 + 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 18 16 124 + 170: TypePointer Function 168 + 174: 10(int) Constant 71 + 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 173 169 29 174 15 76 25 + 180: 7(float) Constant 1065353216 + 203: 10(int) Constant 79 + 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 202 169 29 203 15 76 25 + 231: 10(int) Constant 87 + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 169 29 231 15 76 25 + 245: 10(int) Constant 91 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 169 29 245 15 76 25 + 254: 22(int) Constant 4 + 267: TypePointer Function 121 + 271: 10(int) Constant 96 + 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 270 122 29 271 15 76 25 + 276: TypePointer Function 55(fvec4) + 278: 22(int) Constant 1 + 279: 55(fvec4) ConstantComposite 90 180 90 90 + 285: 55(fvec4) ConstantComposite 90 90 90 180 + 290: 10(int) Constant 101 + 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 56 29 290 15 76 25 + 303: 10(int) Constant 102 + 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 302 56 29 303 15 76 25 + 306: 22(int) Constant 6 + 321: TypePointer Uniform 121 + 362: 10(int) Constant 108 + 360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 361 18 29 362 15 76 25 + 363: TypePointer Uniform 55(fvec4) + 391: TypePointer Input 17(fvec3) + 392(input.Pos): 391(ptr) Variable Input +395(input.Normal): 391(ptr) Variable Input + 398: TypePointer Input 19(fvec2) + 399(input.UV): 398(ptr) Variable Input +402(input.Color): 391(ptr) Variable Input +405(input.instancePos): 391(ptr) Variable Input +408(input.instanceRot): 391(ptr) Variable Input + 411: TypePointer Input 7(float) +412(input.instanceScale): 411(ptr) Variable Input + 415: TypePointer Input 22(int) +416(input.instanceTexIndex): 415(ptr) Variable Input + 423: TypePointer Output 55(fvec4) +424(@entryPointOutput.Pos): 423(ptr) Variable Output + 427: TypePointer Output 17(fvec3) +428(@entryPointOutput.Normal): 427(ptr) Variable Output +431(@entryPointOutput.Color): 427(ptr) Variable Output +434(@entryPointOutput.UV): 427(ptr) Variable Output +437(@entryPointOutput.ViewVec): 427(ptr) Variable Output +440(@entryPointOutput.LightVec): 427(ptr) Variable Output + 5(main): 3 Function None 4 + 6: Label + 390(input): 54(ptr) Variable Function +419(flattenTemp): 85(ptr) Variable Function + 420(param): 54(ptr) Variable Function + 393: 17(fvec3) Load 392(input.Pos) + 394: 97(ptr) AccessChain 390(input) 150 + Store 394 393 + 396: 17(fvec3) Load 395(input.Normal) + 397: 97(ptr) AccessChain 390(input) 278 + Store 397 396 + 400: 19(fvec2) Load 399(input.UV) + 401: 101(ptr) AccessChain 390(input) 95 + Store 401 400 + 403: 17(fvec3) Load 402(input.Color) + 404: 97(ptr) AccessChain 390(input) 96 + Store 404 403 + 406: 17(fvec3) Load 405(input.instancePos) + 407: 97(ptr) AccessChain 390(input) 254 + Store 407 406 + 409: 17(fvec3) Load 408(input.instanceRot) + 410: 97(ptr) AccessChain 390(input) 118 + Store 410 409 + 413: 7(float) Load 412(input.instanceScale) + 414: 113(ptr) AccessChain 390(input) 306 + Store 414 413 + 417: 22(int) Load 416(input.instanceTexIndex) + 418: 105(ptr) AccessChain 390(input) 104 + Store 418 417 + 421: 26(VSInput) Load 390(input) + Store 420(param) 421 + 422:57(VSOutput) FunctionCall 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 420(param) + Store 419(flattenTemp) 422 + 425: 276(ptr) AccessChain 419(flattenTemp) 150 + 426: 55(fvec4) Load 425 + Store 424(@entryPointOutput.Pos) 426 + 429: 97(ptr) AccessChain 419(flattenTemp) 278 + 430: 17(fvec3) Load 429 + Store 428(@entryPointOutput.Normal) 430 + 432: 97(ptr) AccessChain 419(flattenTemp) 95 + 433: 17(fvec3) Load 432 + Store 431(@entryPointOutput.Color) 433 + 435: 97(ptr) AccessChain 419(flattenTemp) 96 + 436: 17(fvec3) Load 435 + Store 434(@entryPointOutput.UV) 436 + 438: 97(ptr) AccessChain 419(flattenTemp) 254 + 439: 17(fvec3) Load 438 + Store 437(@entryPointOutput.ViewVec) 439 + 441: 97(ptr) AccessChain 419(flattenTemp) 118 + 442: 17(fvec3) Load 441 + Store 440(@entryPointOutput.LightVec) 442 + Return + FunctionEnd +74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):57(VSOutput) Function None 71 + 73(input): 54(ptr) FunctionParameter + 77: Label + 86(output): 85(ptr) Variable Function + 114(s): 113(ptr) Variable Function + 157(c): 113(ptr) Variable Function + 171(mx): 170(ptr) Variable Function + 200(my): 170(ptr) Variable Function + 228(mz): 170(ptr) Variable Function + 242(rotMat): 170(ptr) Variable Function + 268(gRotMat): 267(ptr) Variable Function + 287(locPos): 276(ptr) Variable Function + 300(pos): 276(ptr) Variable Function + 359(lPos): 97(ptr) Variable Function + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 73(input) 83 + 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) + Store 86(output) 93 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 87 93 83 + 98: 97(ptr) AccessChain 73(input) 96 + 99: 17(fvec3) Load 98 + 100: 97(ptr) AccessChain 86(output) 95 + Store 100 99 + 102: 101(ptr) AccessChain 73(input) 95 + 103: 19(fvec2) Load 102 + 106: 105(ptr) AccessChain 73(input) 104 + 107: 22(int) Load 106 + 108: 7(float) ConvertSToF 107 + 109: 7(float) CompositeExtract 103 0 + 110: 7(float) CompositeExtract 103 1 + 111: 17(fvec3) CompositeConstruct 109 110 108 + 112: 97(ptr) AccessChain 86(output) 96 + Store 112 111 + 119: 113(ptr) AccessChain 73(input) 118 15 + 120: 7(float) Load 119 + 152: 151(ptr) AccessChain 147 150 96 + 153: 7(float) Load 152 + 154: 7(float) FAdd 120 153 + 155: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 154 + Store 114(s) 155 + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 155 83 + 161: 113(ptr) AccessChain 73(input) 118 15 + 162: 7(float) Load 161 + 163: 151(ptr) AccessChain 147 150 96 + 164: 7(float) Load 163 + 165: 7(float) FAdd 162 164 + 166: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 165 + Store 157(c) 166 + 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 166 83 + 175: 7(float) Load 157(c) + 176: 7(float) Load 114(s) + 177: 7(float) FNegate 176 + 178: 7(float) Load 114(s) + 179: 7(float) Load 157(c) + 181: 17(fvec3) CompositeConstruct 175 177 90 + 182: 17(fvec3) CompositeConstruct 178 179 90 + 183: 17(fvec3) CompositeConstruct 90 90 180 + 184: 168 CompositeConstruct 181 182 183 + Store 171(mx) 184 + 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 172 184 83 + 186: 113(ptr) AccessChain 73(input) 118 51 + 187: 7(float) Load 186 + 188: 151(ptr) AccessChain 147 150 96 + 189: 7(float) Load 188 + 190: 7(float) FAdd 187 189 + 191: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 190 + Store 114(s) 191 + 192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 191 83 + 193: 113(ptr) AccessChain 73(input) 118 51 + 194: 7(float) Load 193 + 195: 151(ptr) AccessChain 147 150 96 + 196: 7(float) Load 195 + 197: 7(float) FAdd 194 196 + 198: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 197 + Store 157(c) 198 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 198 83 + 204: 7(float) Load 157(c) + 205: 7(float) Load 114(s) + 206: 7(float) FNegate 205 + 207: 7(float) Load 114(s) + 208: 7(float) Load 157(c) + 209: 17(fvec3) CompositeConstruct 204 90 206 + 210: 17(fvec3) CompositeConstruct 90 180 90 + 211: 17(fvec3) CompositeConstruct 207 90 208 + 212: 168 CompositeConstruct 209 210 211 + Store 200(my) 212 + 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 201 212 83 + 214: 113(ptr) AccessChain 73(input) 118 20 + 215: 7(float) Load 214 + 216: 151(ptr) AccessChain 147 150 96 + 217: 7(float) Load 216 + 218: 7(float) FAdd 215 217 + 219: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 218 + Store 114(s) 219 + 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 219 83 + 221: 113(ptr) AccessChain 73(input) 118 20 + 222: 7(float) Load 221 + 223: 151(ptr) AccessChain 147 150 96 + 224: 7(float) Load 223 + 225: 7(float) FAdd 222 224 + 226: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 225 + Store 157(c) 226 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 226 83 + 232: 7(float) Load 157(c) + 233: 7(float) Load 114(s) + 234: 7(float) FNegate 233 + 235: 7(float) Load 114(s) + 236: 7(float) Load 157(c) + 237: 17(fvec3) CompositeConstruct 180 90 90 + 238: 17(fvec3) CompositeConstruct 90 232 234 + 239: 17(fvec3) CompositeConstruct 90 235 236 + 240: 168 CompositeConstruct 237 238 239 + Store 228(mz) 240 + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 240 83 + 246: 168 Load 171(mx) + 247: 168 Load 200(my) + 248: 168 MatrixTimesMatrix 246 247 + 249: 168 Load 228(mz) + 250: 168 MatrixTimesMatrix 248 249 + Store 242(rotMat) 250 + 251: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 243 250 83 + 252: 113(ptr) AccessChain 73(input) 118 51 + 253: 7(float) Load 252 + 255: 151(ptr) AccessChain 147 150 254 + 256: 7(float) Load 255 + 257: 7(float) FAdd 253 256 + 258: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 257 + Store 114(s) 258 + 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 258 83 + 260: 113(ptr) AccessChain 73(input) 118 51 + 261: 7(float) Load 260 + 262: 151(ptr) AccessChain 147 150 254 + 263: 7(float) Load 262 + 264: 7(float) FAdd 261 263 + 265: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 264 + Store 157(c) 265 + 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 265 83 + 272: 7(float) Load 157(c) + 273: 7(float) Load 114(s) + 274: 7(float) FNegate 273 + 275: 55(fvec4) CompositeConstruct 272 90 274 90 + 277: 276(ptr) AccessChain 268(gRotMat) 150 + Store 277 275 + 280: 276(ptr) AccessChain 268(gRotMat) 278 + Store 280 279 + 281: 7(float) Load 114(s) + 282: 7(float) Load 157(c) + 283: 55(fvec4) CompositeConstruct 281 90 282 90 + 284: 276(ptr) AccessChain 268(gRotMat) 95 + Store 284 283 + 286: 276(ptr) AccessChain 268(gRotMat) 96 + Store 286 285 + 291: 97(ptr) AccessChain 73(input) 150 + 292: 17(fvec3) Load 291 + 293: 168 Load 242(rotMat) + 294: 17(fvec3) VectorTimesMatrix 292 293 + 295: 7(float) CompositeExtract 294 0 + 296: 7(float) CompositeExtract 294 1 + 297: 7(float) CompositeExtract 294 2 + 298: 55(fvec4) CompositeConstruct 295 296 297 180 + Store 287(locPos) 298 + 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 288 298 83 + 304: 55(fvec4) Load 287(locPos) + 305: 17(fvec3) VectorShuffle 304 304 0 1 2 + 307: 113(ptr) AccessChain 73(input) 306 + 308: 7(float) Load 307 + 309: 17(fvec3) VectorTimesScalar 305 308 + 310: 97(ptr) AccessChain 73(input) 254 + 311: 17(fvec3) Load 310 + 312: 17(fvec3) FAdd 309 311 + 313: 7(float) CompositeExtract 312 0 + 314: 7(float) CompositeExtract 312 1 + 315: 7(float) CompositeExtract 312 2 + 316: 55(fvec4) CompositeConstruct 313 314 315 180 + Store 300(pos) 316 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 301 316 83 + 318: 55(fvec4) Load 300(pos) + 319: 121 Load 268(gRotMat) + 320: 55(fvec4) VectorTimesMatrix 318 319 + 322: 321(ptr) AccessChain 147 150 278 + 323: 121 Load 322 + 324: 55(fvec4) VectorTimesMatrix 320 323 + 325: 321(ptr) AccessChain 147 150 150 + 326: 121 Load 325 + 327: 55(fvec4) VectorTimesMatrix 324 326 + 328: 276(ptr) AccessChain 86(output) 150 + Store 328 327 + 329: 97(ptr) AccessChain 73(input) 278 + 330: 17(fvec3) Load 329 + 331: 168 Load 242(rotMat) + 332: 17(fvec3) VectorTimesMatrix 330 331 + 333: 121 Load 268(gRotMat) + 334: 321(ptr) AccessChain 147 150 278 + 335: 121 Load 334 + 336: 121 MatrixTimesMatrix 333 335 + 337: 55(fvec4) CompositeExtract 336 0 + 338: 17(fvec3) VectorShuffle 337 337 0 1 2 + 339: 55(fvec4) CompositeExtract 336 1 + 340: 17(fvec3) VectorShuffle 339 339 0 1 2 + 341: 55(fvec4) CompositeExtract 336 2 + 342: 17(fvec3) VectorShuffle 341 341 0 1 2 + 343: 168 CompositeConstruct 338 340 342 + 344: 17(fvec3) VectorTimesMatrix 332 343 + 345: 97(ptr) AccessChain 86(output) 278 + Store 345 344 + 346: 97(ptr) AccessChain 73(input) 150 + 347: 17(fvec3) Load 346 + 348: 97(ptr) AccessChain 73(input) 254 + 349: 17(fvec3) Load 348 + 350: 17(fvec3) FAdd 347 349 + 351: 7(float) CompositeExtract 350 0 + 352: 7(float) CompositeExtract 350 1 + 353: 7(float) CompositeExtract 350 2 + 354: 55(fvec4) CompositeConstruct 351 352 353 180 + 355: 321(ptr) AccessChain 147 150 278 + 356: 121 Load 355 + 357: 55(fvec4) VectorTimesMatrix 354 356 + Store 300(pos) 357 + 358: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 301 357 83 + 364: 363(ptr) AccessChain 147 150 95 + 365: 55(fvec4) Load 364 + 366: 17(fvec3) VectorShuffle 365 365 0 1 2 + 367: 321(ptr) AccessChain 147 150 278 + 368: 121 Load 367 + 369: 55(fvec4) CompositeExtract 368 0 + 370: 17(fvec3) VectorShuffle 369 369 0 1 2 + 371: 55(fvec4) CompositeExtract 368 1 + 372: 17(fvec3) VectorShuffle 371 371 0 1 2 + 373: 55(fvec4) CompositeExtract 368 2 + 374: 17(fvec3) VectorShuffle 373 373 0 1 2 + 375: 168 CompositeConstruct 370 372 374 + 376: 17(fvec3) VectorTimesMatrix 366 375 + Store 359(lPos) 376 + 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 360 376 83 + 378: 17(fvec3) Load 359(lPos) + 379: 55(fvec4) Load 300(pos) + 380: 17(fvec3) VectorShuffle 379 379 0 1 2 + 381: 17(fvec3) FSub 378 380 + 382: 97(ptr) AccessChain 86(output) 118 + Store 382 381 + 383: 55(fvec4) Load 300(pos) + 384: 17(fvec3) VectorShuffle 383 383 0 1 2 + 385: 17(fvec3) FNegate 384 + 386: 97(ptr) AccessChain 86(output) 254 + Store 386 385 + 387:57(VSOutput) Load 86(output) + ReturnValue 387 + FunctionEnd diff --git a/Test/spv.debuginfo.glsl.comp b/Test/spv.debuginfo.glsl.comp new file mode 100644 index 0000000000..c37d05d723 --- /dev/null +++ b/Test/spv.debuginfo.glsl.comp @@ -0,0 +1,177 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +struct Particle { + vec4 pos; + vec4 vel; + vec4 uv; + vec4 normal; + float pinned; +}; + +layout(std430, binding = 0) buffer ParticleIn { + Particle particleIn[ ]; +}; + +layout(std430, binding = 1) buffer ParticleOut { + Particle particleOut[ ]; +}; + +// todo: use shared memory to speed up calculation + +layout (local_size_x = 10, local_size_y = 10) in; + +layout (binding = 2) uniform UBO +{ + float deltaT; + float particleMass; + float springStiffness; + float damping; + float restDistH; + float restDistV; + float restDistD; + float sphereRadius; + vec4 spherePos; + vec4 gravity; + ivec2 particleCount; +} params; + +layout (push_constant) uniform PushConsts { + uint calculateNormals; +} pushConsts; + +vec3 springForce(vec3 p0, vec3 p1, float restDist) +{ + vec3 dist = p0 - p1; + return normalize(dist) * params.springStiffness * (length(dist) - restDist); +} + +void main() +{ + uvec3 id = gl_GlobalInvocationID; + + uint index = id.y * params.particleCount.x + id.x; + if (index > params.particleCount.x * params.particleCount.y) + return; + + // Pinned? + if (particleIn[index].pinned == 1.0) { + particleOut[index].pos = particleOut[index].pos; + particleOut[index].vel = vec4(0.0); + return; + } + + // Initial force from gravity + vec3 force = params.gravity.xyz * params.particleMass; + + vec3 pos = particleIn[index].pos.xyz; + vec3 vel = particleIn[index].vel.xyz; + + // Spring forces from neighboring particles + // left + if (id.x > 0) { + force += springForce(particleIn[index-1].pos.xyz, pos, params.restDistH); + } + // right + if (id.x < params.particleCount.x - 1) { + force += springForce(particleIn[index + 1].pos.xyz, pos, params.restDistH); + } + // upper + if (id.y < params.particleCount.y - 1) { + force += springForce(particleIn[index + params.particleCount.x].pos.xyz, pos, params.restDistV); + } + // lower + if (id.y > 0) { + force += springForce(particleIn[index - params.particleCount.x].pos.xyz, pos, params.restDistV); + } + // upper-left + if ((id.x > 0) && (id.y < params.particleCount.y - 1)) { + force += springForce(particleIn[index + params.particleCount.x - 1].pos.xyz, pos, params.restDistD); + } + // lower-left + if ((id.x > 0) && (id.y > 0)) { + force += springForce(particleIn[index - params.particleCount.x - 1].pos.xyz, pos, params.restDistD); + } + // upper-right + if ((id.x < params.particleCount.x - 1) && (id.y < params.particleCount.y - 1)) { + force += springForce(particleIn[index + params.particleCount.x + 1].pos.xyz, pos, params.restDistD); + } + // lower-right + if ((id.x < params.particleCount.x - 1) && (id.y > 0)) { + force += springForce(particleIn[index - params.particleCount.x + 1].pos.xyz, pos, params.restDistD); + } + + force += (-params.damping * vel); + + // Integrate + vec3 f = force * (1.0 / params.particleMass); + particleOut[index].pos = vec4(pos + vel * params.deltaT + 0.5 * f * params.deltaT * params.deltaT, 1.0); + particleOut[index].vel = vec4(vel + f * params.deltaT, 0.0); + + // Sphere collision + vec3 sphereDist = particleOut[index].pos.xyz - params.spherePos.xyz; + if (length(sphereDist) < params.sphereRadius + 0.01) { + // If the particle is inside the sphere, push it to the outer radius + particleOut[index].pos.xyz = params.spherePos.xyz + normalize(sphereDist) * (params.sphereRadius + 0.01); + // Cancel out velocity + particleOut[index].vel = vec4(0.0); + } + + // Normals + if (pushConsts.calculateNormals == 1) { + vec3 normal = vec3(0.0); + vec3 a, b, c; + if (id.y > 0) { + if (id.x > 0) { + a = particleIn[index - 1].pos.xyz - pos; + b = particleIn[index - params.particleCount.x - 1].pos.xyz - pos; + c = particleIn[index - params.particleCount.x].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + if (id.x < params.particleCount.x - 1) { + a = particleIn[index - params.particleCount.x].pos.xyz - pos; + b = particleIn[index - params.particleCount.x + 1].pos.xyz - pos; + c = particleIn[index + 1].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + } + if (id.y < params.particleCount.y - 1) { + if (id.x > 0) { + a = particleIn[index + params.particleCount.x].pos.xyz - pos; + b = particleIn[index + params.particleCount.x - 1].pos.xyz - pos; + c = particleIn[index - 1].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + if (id.x < params.particleCount.x - 1) { + a = particleIn[index + 1].pos.xyz - pos; + b = particleIn[index + params.particleCount.x + 1].pos.xyz - pos; + c = particleIn[index + params.particleCount.x].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + } + particleOut[index].normal = vec4(normalize(normal), 0.0f); + } +} diff --git a/Test/spv.debuginfo.glsl.frag b/Test/spv.debuginfo.glsl.frag new file mode 100644 index 0000000000..bf5f622d9d --- /dev/null +++ b/Test/spv.debuginfo.glsl.frag @@ -0,0 +1,192 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +layout (binding = 1) uniform sampler2D samplerposition; +layout (binding = 2) uniform sampler2D samplerNormal; +layout (binding = 3) uniform sampler2D samplerAlbedo; +layout (binding = 5) uniform sampler2DArray samplerShadowMap; + +layout (location = 0) in vec2 inUV; + +layout (location = 0) out vec4 outFragColor; + +#define LIGHT_COUNT 3 +#define SHADOW_FACTOR 0.25 +#define AMBIENT_LIGHT 0.1 +#define USE_PCF + +struct Light +{ + vec4 position; + vec4 target; + vec4 color; + mat4 viewMatrix; +}; + +layout (binding = 4) uniform UBO +{ + vec4 viewPos; + Light lights[LIGHT_COUNT]; + int useShadows; + int debugDisplayTarget; +} ubo; + +float textureProj(vec4 P, float layer, vec2 offset) +{ + float shadow = 1.0; + vec4 shadowCoord = P / P.w; + shadowCoord.st = shadowCoord.st * 0.5 + 0.5; + + if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0) + { + float dist = texture(samplerShadowMap, vec3(shadowCoord.st + offset, layer)).r; + if (shadowCoord.w > 0.0 && dist < shadowCoord.z) + { + shadow = SHADOW_FACTOR; + } + } + return shadow; +} + +float filterPCF(vec4 sc, float layer) +{ + ivec2 texDim = textureSize(samplerShadowMap, 0).xy; + float scale = 1.5; + float dx = scale * 1.0 / float(texDim.x); + float dy = scale * 1.0 / float(texDim.y); + + float shadowFactor = 0.0; + int count = 0; + int range = 1; + + for (int x = -range; x <= range; x++) + { + for (int y = -range; y <= range; y++) + { + shadowFactor += textureProj(sc, layer, vec2(dx*x, dy*y)); + count++; + } + + } + return shadowFactor / count; +} + +vec3 shadow(vec3 fragcolor, vec3 fragpos) { + for(int i = 0; i < LIGHT_COUNT; ++i) + { + vec4 shadowClip = ubo.lights[i].viewMatrix * vec4(fragpos, 1.0); + + float shadowFactor; + #ifdef USE_PCF + shadowFactor= filterPCF(shadowClip, i); + #else + shadowFactor = textureProj(shadowClip, i, vec2(0.0)); + #endif + + fragcolor *= shadowFactor; + } + return fragcolor; +} + +void main() +{ + // Get G-Buffer values + vec3 fragPos = texture(samplerposition, inUV).rgb; + vec3 normal = texture(samplerNormal, inUV).rgb; + vec4 albedo = texture(samplerAlbedo, inUV); + + // Debug display + if (ubo.debugDisplayTarget > 0) { + switch (ubo.debugDisplayTarget) { + case 1: + outFragColor.rgb = shadow(vec3(1.0), fragPos).rgb; + break; + case 2: + outFragColor.rgb = fragPos; + break; + case 3: + outFragColor.rgb = normal; + break; + case 4: + outFragColor.rgb = albedo.rgb; + break; + case 5: + outFragColor.rgb = albedo.aaa; + break; + } + outFragColor.a = 1.0; + return; + } + + // Ambient part + vec3 fragcolor = albedo.rgb * AMBIENT_LIGHT; + + vec3 N = normalize(normal); + + for(int i = 0; i < LIGHT_COUNT; ++i) + { + // Vector to light + vec3 L = ubo.lights[i].position.xyz - fragPos; + // Distance from light to fragment position + float dist = length(L); + L = normalize(L); + + // Viewer to fragment + vec3 V = ubo.viewPos.xyz - fragPos; + V = normalize(V); + + float lightCosInnerAngle = cos(radians(15.0)); + float lightCosOuterAngle = cos(radians(25.0)); + float lightRange = 100.0; + + // Direction vector from source to target + vec3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz); + + // Dual cone spot light with smooth transition between inner and outer angle + float cosDir = dot(L, dir); + float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir); + float heightAttenuation = smoothstep(lightRange, 0.0f, dist); + + // Diffuse lighting + float NdotL = max(0.0, dot(N, L)); + vec3 diff = vec3(NdotL); + + // Specular lighting + vec3 R = reflect(-L, N); + float NdotR = max(0.0, dot(R, V)); + vec3 spec = vec3(pow(NdotR, 16.0) * albedo.a * 2.5); + + fragcolor += vec3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb; + } + + // Shadow calculations in a separate pass + if (ubo.useShadows > 0) + { + fragcolor = shadow(fragcolor, fragPos); + } + + outFragColor = vec4(fragcolor, 1.0); +} diff --git a/Test/spv.debuginfo.glsl.geom b/Test/spv.debuginfo.glsl.geom new file mode 100644 index 0000000000..756885f676 --- /dev/null +++ b/Test/spv.debuginfo.glsl.geom @@ -0,0 +1,69 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +#extension GL_ARB_viewport_array : enable + +layout (triangles, invocations = 2) in; +layout (triangle_strip, max_vertices = 3) out; + +layout (binding = 0) uniform UBO +{ + mat4 projection[2]; + mat4 modelview[2]; + vec4 lightPos; +} ubo; + +layout (location = 0) in vec3 inNormal[]; +layout (location = 1) in vec3 inColor[]; + +layout (location = 0) out vec3 outNormal; +layout (location = 1) out vec3 outColor; +layout (location = 2) out vec3 outViewVec; +layout (location = 3) out vec3 outLightVec; + +void main(void) +{ + for(int i = 0; i < gl_in.length(); i++) + { + outNormal = mat3(ubo.modelview[gl_InvocationID]) * inNormal[i]; + outColor = inColor[i]; + + vec4 pos = gl_in[i].gl_Position; + vec4 worldPos = (ubo.modelview[gl_InvocationID] * pos); + + vec3 lPos = vec3(ubo.modelview[gl_InvocationID] * ubo.lightPos); + outLightVec = lPos - worldPos.xyz; + outViewVec = -worldPos.xyz; + + gl_Position = ubo.projection[gl_InvocationID] * worldPos; + + // Set the viewport index that the vertex will be emitted to + gl_ViewportIndex = gl_InvocationID; + gl_PrimitiveID = gl_PrimitiveIDIn; + EmitVertex(); + } + EndPrimitive(); +} diff --git a/Test/spv.debuginfo.glsl.tesc b/Test/spv.debuginfo.glsl.tesc new file mode 100644 index 0000000000..41c8fe3adc --- /dev/null +++ b/Test/spv.debuginfo.glsl.tesc @@ -0,0 +1,140 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +layout(set = 0, binding = 0) uniform UBO +{ + mat4 projection; + mat4 modelview; + vec4 lightPos; + vec4 frustumPlanes[6]; + float displacementFactor; + float tessellationFactor; + vec2 viewportDim; + float tessellatedEdgeSize; +} ubo; + +layout(set = 0, binding = 1) uniform sampler2D samplerHeight; + +layout (vertices = 4) out; + +layout (location = 0) in vec3 inNormal[]; +layout (location = 1) in vec2 inUV[]; + +layout (location = 0) out vec3 outNormal[4]; +layout (location = 1) out vec2 outUV[4]; + +// Calculate the tessellation factor based on screen space +// dimensions of the edge +float screenSpaceTessFactor(vec4 p0, vec4 p1) +{ + // Calculate edge mid point + vec4 midPoint = 0.5 * (p0 + p1); + // Sphere radius as distance between the control points + float radius = distance(p0, p1) / 2.0; + + // View space + vec4 v0 = ubo.modelview * midPoint; + + // Project into clip space + vec4 clip0 = (ubo.projection * (v0 - vec4(radius, vec3(0.0)))); + vec4 clip1 = (ubo.projection * (v0 + vec4(radius, vec3(0.0)))); + + // Get normalized device coordinates + clip0 /= clip0.w; + clip1 /= clip1.w; + + // Convert to viewport coordinates + clip0.xy *= ubo.viewportDim; + clip1.xy *= ubo.viewportDim; + + // Return the tessellation factor based on the screen size + // given by the distance of the two edge control points in screen space + // and a reference (min.) tessellation size for the edge set by the application + return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0); +} + +// Checks the current's patch visibility against the frustum using a sphere check +// Sphere radius is given by the patch size +bool frustumCheck() +{ + // Fixed radius (increase if patch size is increased in example) + const float radius = 8.0f; + vec4 pos = gl_in[gl_InvocationID].gl_Position; + pos.y -= textureLod(samplerHeight, inUV[0], 0.0).r * ubo.displacementFactor; + + // Check sphere against frustum planes + for (int i = 0; i < 6; i++) { + if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0) + { + return false; + } + } + return true; +} + +void main() +{ + if (gl_InvocationID == 0) + { + if (!frustumCheck()) + { + gl_TessLevelInner[0] = 0.0; + gl_TessLevelInner[1] = 0.0; + gl_TessLevelOuter[0] = 0.0; + gl_TessLevelOuter[1] = 0.0; + gl_TessLevelOuter[2] = 0.0; + gl_TessLevelOuter[3] = 0.0; + } + else + { + if (ubo.tessellationFactor > 0.0) + { + gl_TessLevelOuter[0] = screenSpaceTessFactor(gl_in[3].gl_Position, gl_in[0].gl_Position); + gl_TessLevelOuter[1] = screenSpaceTessFactor(gl_in[0].gl_Position, gl_in[1].gl_Position); + gl_TessLevelOuter[2] = screenSpaceTessFactor(gl_in[1].gl_Position, gl_in[2].gl_Position); + gl_TessLevelOuter[3] = screenSpaceTessFactor(gl_in[2].gl_Position, gl_in[3].gl_Position); + gl_TessLevelInner[0] = mix(gl_TessLevelOuter[0], gl_TessLevelOuter[3], 0.5); + gl_TessLevelInner[1] = mix(gl_TessLevelOuter[2], gl_TessLevelOuter[1], 0.5); + } + else + { + // Tessellation factor can be set to zero by example + // to demonstrate a simple passthrough + gl_TessLevelInner[0] = 1.0; + gl_TessLevelInner[1] = 1.0; + gl_TessLevelOuter[0] = 1.0; + gl_TessLevelOuter[1] = 1.0; + gl_TessLevelOuter[2] = 1.0; + gl_TessLevelOuter[3] = 1.0; + } + } + + } + + gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; + outNormal[gl_InvocationID] = inNormal[gl_InvocationID]; + outUV[gl_InvocationID] = inUV[gl_InvocationID]; +} diff --git a/Test/spv.debuginfo.glsl.tese b/Test/spv.debuginfo.glsl.tese new file mode 100644 index 0000000000..f24ed949c4 --- /dev/null +++ b/Test/spv.debuginfo.glsl.tese @@ -0,0 +1,78 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +layout (set = 0, binding = 0) uniform UBO +{ + mat4 projection; + mat4 modelview; + vec4 lightPos; + vec4 frustumPlanes[6]; + float displacementFactor; + float tessellationFactor; + vec2 viewportDim; + float tessellatedEdgeSize; +} ubo; + +layout (set = 0, binding = 1) uniform sampler2D displacementMap; + +layout(quads, equal_spacing, cw) in; + +layout (location = 0) in vec3 inNormal[]; +layout (location = 1) in vec2 inUV[]; + +layout (location = 0) out vec3 outNormal; +layout (location = 1) out vec2 outUV; +layout (location = 2) out vec3 outViewVec; +layout (location = 3) out vec3 outLightVec; +layout (location = 4) out vec3 outEyePos; +layout (location = 5) out vec3 outWorldPos; + +void main() +{ + // Interpolate UV coordinates + vec2 uv1 = mix(inUV[0], inUV[1], gl_TessCoord.x); + vec2 uv2 = mix(inUV[3], inUV[2], gl_TessCoord.x); + outUV = mix(uv1, uv2, gl_TessCoord.y); + + vec3 n1 = mix(inNormal[0], inNormal[1], gl_TessCoord.x); + vec3 n2 = mix(inNormal[3], inNormal[2], gl_TessCoord.x); + outNormal = mix(n1, n2, gl_TessCoord.y); + + // Interpolate positions + vec4 pos1 = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x); + vec4 pos2 = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x); + vec4 pos = mix(pos1, pos2, gl_TessCoord.y); + // Displace + pos.y -= textureLod(displacementMap, outUV, 0.0).r * ubo.displacementFactor; + // Perspective projection + gl_Position = ubo.projection * ubo.modelview * pos; + + // Calculate vectors for lighting based on tessellated position + outViewVec = -pos.xyz; + outLightVec = normalize(ubo.lightPos.xyz + outViewVec); + outWorldPos = pos.xyz; + outEyePos = vec3(ubo.modelview * pos); +} diff --git a/Test/spv.debuginfo.glsl.vert b/Test/spv.debuginfo.glsl.vert new file mode 100644 index 0000000000..d922d95799 --- /dev/null +++ b/Test/spv.debuginfo.glsl.vert @@ -0,0 +1,105 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +// Vertex attributes +layout (location = 0) in vec3 inPos; +layout (location = 1) in vec3 inNormal; +layout (location = 2) in vec2 inUV; +layout (location = 3) in vec3 inColor; + +// Instanced attributes +layout (location = 4) in vec3 instancePos; +layout (location = 5) in vec3 instanceRot; +layout (location = 6) in float instanceScale; +layout (location = 7) in int instanceTexIndex; + +layout (binding = 0) uniform UBO +{ + mat4 projection; + mat4 modelview; + vec4 lightPos; + float locSpeed; + float globSpeed; +} ubo; + +layout (location = 0) out vec3 outNormal; +layout (location = 1) out vec3 outColor; +layout (location = 2) out vec3 outUV; +layout (location = 3) out vec3 outViewVec; +layout (location = 4) out vec3 outLightVec; + +void main() +{ + outColor = inColor; + outUV = vec3(inUV, instanceTexIndex); + + mat3 mx, my, mz; + + // rotate around x + float s = sin(instanceRot.x + ubo.locSpeed); + float c = cos(instanceRot.x + ubo.locSpeed); + + mx[0] = vec3(c, s, 0.0); + mx[1] = vec3(-s, c, 0.0); + mx[2] = vec3(0.0, 0.0, 1.0); + + // rotate around y + s = sin(instanceRot.y + ubo.locSpeed); + c = cos(instanceRot.y + ubo.locSpeed); + + my[0] = vec3(c, 0.0, s); + my[1] = vec3(0.0, 1.0, 0.0); + my[2] = vec3(-s, 0.0, c); + + // rot around z + s = sin(instanceRot.z + ubo.locSpeed); + c = cos(instanceRot.z + ubo.locSpeed); + + mz[0] = vec3(1.0, 0.0, 0.0); + mz[1] = vec3(0.0, c, s); + mz[2] = vec3(0.0, -s, c); + + mat3 rotMat = mz * my * mx; + + mat4 gRotMat; + s = sin(instanceRot.y + ubo.globSpeed); + c = cos(instanceRot.y + ubo.globSpeed); + gRotMat[0] = vec4(c, 0.0, s, 0.0); + gRotMat[1] = vec4(0.0, 1.0, 0.0, 0.0); + gRotMat[2] = vec4(-s, 0.0, c, 0.0); + gRotMat[3] = vec4(0.0, 0.0, 0.0, 1.0); + + vec4 locPos = vec4(inPos.xyz * rotMat, 1.0); + vec4 pos = vec4((locPos.xyz * instanceScale) + instancePos, 1.0); + + gl_Position = ubo.projection * ubo.modelview * gRotMat * pos; + outNormal = mat3(ubo.modelview * gRotMat) * inverse(rotMat) * inNormal; + + pos = ubo.modelview * vec4(inPos.xyz + instancePos, 1.0); + vec3 lPos = mat3(ubo.modelview) * ubo.lightPos.xyz; + outLightVec = lPos - pos.xyz; + outViewVec = -pos.xyz; +} diff --git a/Test/spv.debuginfo.hlsl.comp b/Test/spv.debuginfo.hlsl.comp new file mode 100644 index 0000000000..b700534e04 --- /dev/null +++ b/Test/spv.debuginfo.hlsl.comp @@ -0,0 +1,184 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Google LLC +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +struct Particle { + float4 pos; + float4 vel; + float4 uv; + float4 normal; + float pinned; +}; + +[[vk::binding(0)]] +StructuredBuffer particleIn; +[[vk::binding(1)]] +RWStructuredBuffer particleOut; + +struct UBO +{ + float deltaT; + float particleMass; + float springStiffness; + float damping; + float restDistH; + float restDistV; + float restDistD; + float sphereRadius; + float4 spherePos; + float4 gravity; + int2 particleCount; +}; + +cbuffer ubo : register(b2) +{ + UBO params; +}; + +#ifdef GLSLANG +layout ( push_constant ) cbuffer PushConstants +{ + uint calculateNormals; +} pushConstants; +#else +struct PushConstants +{ + uint calculateNormals; +}; + +[[vk::push_constant]] +PushConstants pushConstants; +#endif + +float3 springForce(float3 p0, float3 p1, float restDist) +{ + float3 dist = p0 - p1; + return normalize(dist) * params.springStiffness * (length(dist) - restDist); +} + +[numthreads(10, 10, 1)] +void main(uint3 id : SV_DispatchThreadID) +{ + uint index = id.y * params.particleCount.x + id.x; + if (index > params.particleCount.x * params.particleCount.y) + return; + + // Pinned? + if (particleIn[index].pinned == 1.0) { + particleOut[index].pos = particleOut[index].pos; + particleOut[index].vel = float4(0, 0, 0, 0); + return; + } + + // Initial force from gravity + float3 force = params.gravity.xyz * params.particleMass; + + float3 pos = particleIn[index].pos.xyz; + float3 vel = particleIn[index].vel.xyz; + + // Spring forces from neighboring particles + // left + if (id.x > 0) { + force += springForce(particleIn[index-1].pos.xyz, pos, params.restDistH); + } + // right + if (id.x < params.particleCount.x - 1) { + force += springForce(particleIn[index + 1].pos.xyz, pos, params.restDistH); + } + // upper + if (id.y < params.particleCount.y - 1) { + force += springForce(particleIn[index + params.particleCount.x].pos.xyz, pos, params.restDistV); + } + // lower + if (id.y > 0) { + force += springForce(particleIn[index - params.particleCount.x].pos.xyz, pos, params.restDistV); + } + // upper-left + if ((id.x > 0) && (id.y < params.particleCount.y - 1)) { + force += springForce(particleIn[index + params.particleCount.x - 1].pos.xyz, pos, params.restDistD); + } + // lower-left + if ((id.x > 0) && (id.y > 0)) { + force += springForce(particleIn[index - params.particleCount.x - 1].pos.xyz, pos, params.restDistD); + } + // upper-right + if ((id.x < params.particleCount.x - 1) && (id.y < params.particleCount.y - 1)) { + force += springForce(particleIn[index + params.particleCount.x + 1].pos.xyz, pos, params.restDistD); + } + // lower-right + if ((id.x < params.particleCount.x - 1) && (id.y > 0)) { + force += springForce(particleIn[index - params.particleCount.x + 1].pos.xyz, pos, params.restDistD); + } + + force += (-params.damping * vel); + + // Integrate + float3 f = force * (1.0 / params.particleMass); + particleOut[index].pos = float4(pos + vel * params.deltaT + 0.5 * f * params.deltaT * params.deltaT, 1.0); + particleOut[index].vel = float4(vel + f * params.deltaT, 0.0); + + // Sphere collision + float3 sphereDist = particleOut[index].pos.xyz - params.spherePos.xyz; + if (length(sphereDist) < params.sphereRadius + 0.01) { + // If the particle is inside the sphere, push it to the outer radius + particleOut[index].pos.xyz = params.spherePos.xyz + normalize(sphereDist) * (params.sphereRadius + 0.01); + // Cancel out velocity + particleOut[index].vel = float4(0, 0, 0, 0); + } + + // Normals + if (pushConstants.calculateNormals == 1) { + float3 normal = float3(0, 0, 0); + float3 a, b, c; + if (id.y > 0) { + if (id.x > 0) { + a = particleIn[index - 1].pos.xyz - pos; + b = particleIn[index - params.particleCount.x - 1].pos.xyz - pos; + c = particleIn[index - params.particleCount.x].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + if (id.x < params.particleCount.x - 1) { + a = particleIn[index - params.particleCount.x].pos.xyz - pos; + b = particleIn[index - params.particleCount.x + 1].pos.xyz - pos; + c = particleIn[index + 1].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + } + if (id.y < params.particleCount.y - 1) { + if (id.x > 0) { + a = particleIn[index + params.particleCount.x].pos.xyz - pos; + b = particleIn[index + params.particleCount.x - 1].pos.xyz - pos; + c = particleIn[index - 1].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + if (id.x < params.particleCount.x - 1) { + a = particleIn[index + 1].pos.xyz - pos; + b = particleIn[index + params.particleCount.x + 1].pos.xyz - pos; + c = particleIn[index + params.particleCount.x].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + } + particleOut[index].normal = float4(normalize(normal), 0.0f); + } +} diff --git a/Test/spv.debuginfo.hlsl.frag b/Test/spv.debuginfo.hlsl.frag new file mode 100644 index 0000000000..93072d4b19 --- /dev/null +++ b/Test/spv.debuginfo.hlsl.frag @@ -0,0 +1,197 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Google LLC +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +Texture2D textureposition : register(t1); +SamplerState samplerposition : register(s1); +Texture2D textureNormal : register(t2); +SamplerState samplerNormal : register(s2); +Texture2D textureAlbedo : register(t3); +SamplerState samplerAlbedo : register(s3); +// Depth from the light's point of view +//layout (binding = 5) uniform sampler2DShadow samplerShadowMap; +Texture2DArray textureShadowMap : register(t5); +SamplerState samplerShadowMap : register(s5); + +#define LIGHT_COUNT 3 +#define SHADOW_FACTOR 0.25 +#define AMBIENT_LIGHT 0.1 +#define USE_PCF + +struct Light +{ + float4 position; + float4 target; + float4 color; + float4x4 viewMatrix; +}; + +struct UBO +{ + float4 viewPos; + Light lights[LIGHT_COUNT]; + int useShadows; + int displayDebugTarget; +}; + +cbuffer ubo : register(b4) { UBO ubo; } + +float textureProj(float4 P, float layer, float2 offset) +{ + float shadow = 1.0; + float4 shadowCoord = P / P.w; + shadowCoord.xy = shadowCoord.xy * 0.5 + 0.5; + + if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0) + { + float dist = textureShadowMap.Sample(samplerShadowMap, float3(shadowCoord.xy + offset, layer)).r; + if (shadowCoord.w > 0.0 && dist < shadowCoord.z) + { + shadow = SHADOW_FACTOR; + } + } + return shadow; +} + +float filterPCF(float4 sc, float layer) +{ + int2 texDim; int elements; int levels; + textureShadowMap.GetDimensions(0, texDim.x, texDim.y, elements, levels); + float scale = 1.5; + float dx = scale * 1.0 / float(texDim.x); + float dy = scale * 1.0 / float(texDim.y); + + float shadowFactor = 0.0; + int count = 0; + int range = 1; + + for (int x = -range; x <= range; x++) + { + for (int y = -range; y <= range; y++) + { + shadowFactor += textureProj(sc, layer, float2(dx*x, dy*y)); + count++; + } + + } + return shadowFactor / count; +} + +float3 shadow(float3 fragcolor, float3 fragPos) { + for (int i = 0; i < LIGHT_COUNT; ++i) + { + float4 shadowClip = mul(ubo.lights[i].viewMatrix, float4(fragPos.xyz, 1.0)); + + float shadowFactor; + #ifdef USE_PCF + shadowFactor= filterPCF(shadowClip, i); + #else + shadowFactor = textureProj(shadowClip, i, float2(0.0, 0.0)); + #endif + + fragcolor *= shadowFactor; + } + return fragcolor; +} + +float4 main([[vk::location(0)]] float2 inUV : TEXCOORD0) : SV_TARGET +{ + // Get G-Buffer values + float3 fragPos = textureposition.Sample(samplerposition, inUV).rgb; + float3 normal = textureNormal.Sample(samplerNormal, inUV).rgb; + float4 albedo = textureAlbedo.Sample(samplerAlbedo, inUV); + + float3 fragcolor; + + // Debug display + if (ubo.displayDebugTarget > 0) { + switch (ubo.displayDebugTarget) { + case 1: + fragcolor.rgb = shadow(float3(1.0, 1.0, 1.0), fragPos); + break; + case 2: + fragcolor.rgb = fragPos; + break; + case 3: + fragcolor.rgb = normal; + break; + case 4: + fragcolor.rgb = albedo.rgb; + break; + case 5: + fragcolor.rgb = albedo.aaa; + break; + } + return float4(fragcolor, 1.0); + } + + // Ambient part + fragcolor = albedo.rgb * AMBIENT_LIGHT; + + float3 N = normalize(normal); + + for(int i = 0; i < LIGHT_COUNT; ++i) + { + // Vector to light + float3 L = ubo.lights[i].position.xyz - fragPos; + // Distance from light to fragment position + float dist = length(L); + L = normalize(L); + + // Viewer to fragment + float3 V = ubo.viewPos.xyz - fragPos; + V = normalize(V); + + float lightCosInnerAngle = cos(radians(15.0)); + float lightCosOuterAngle = cos(radians(25.0)); + float lightRange = 100.0; + + // Direction vector from source to target + float3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz); + + // Dual cone spot light with smooth transition between inner and outer angle + float cosDir = dot(L, dir); + float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir); + float heightAttenuation = smoothstep(lightRange, 0.0f, dist); + + // Diffuse lighting + float NdotL = max(0.0, dot(N, L)); + float3 diff = NdotL.xxx; + + // Specular lighting + float3 R = reflect(-L, N); + float NdotR = max(0.0, dot(R, V)); + float3 spec = (pow(NdotR, 16.0) * albedo.a * 2.5).xxx; + + fragcolor += float3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb; + } + + // Shadow calculations in a separate pass + if (ubo.useShadows > 0) + { + fragcolor = shadow(fragcolor, fragPos); + } + + return float4(fragcolor, 1); +} diff --git a/Test/spv.debuginfo.hlsl.geom b/Test/spv.debuginfo.hlsl.geom new file mode 100644 index 0000000000..71f9b7c116 --- /dev/null +++ b/Test/spv.debuginfo.hlsl.geom @@ -0,0 +1,79 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Google LLC +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +struct UBO +{ + float4x4 projection[2]; + float4x4 modelview[2]; + float4 lightPos; +}; + +cbuffer ubo : register(b0) { UBO ubo; } + +struct VSOutput +{ + float4 Pos : SV_POSITION; +[[vk::location(0)]] float3 Normal : NORMAL0; +[[vk::location(1)]] float3 Color : COLOR0; +}; + +struct GSOutput +{ + float4 Pos : SV_POSITION; + uint ViewportIndex : SV_ViewportArrayIndex; + uint PrimitiveID : SV_PrimitiveID; +[[vk::location(0)]] float3 Normal : NORMAL0; +[[vk::location(1)]] float3 Color : COLOR0; +[[vk::location(2)]] float3 ViewVec : TEXCOOR1; +[[vk::location(3)]] float3 LightVec : TEXCOOR2; +}; + +[maxvertexcount(3)] +[instance(2)] +void main(triangle VSOutput input[3], inout TriangleStream outStream, uint InvocationID : SV_GSInstanceID, uint PrimitiveID : SV_PrimitiveID) +{ + for(int i = 0; i < 3; i++) + { + GSOutput output = (GSOutput)0; + output.Normal = mul((float3x3)ubo.modelview[InvocationID], input[i].Normal); + output.Color = input[i].Color; + + float4 pos = input[i].Pos; + float4 worldPos = mul(ubo.modelview[InvocationID], pos); + + float3 lPos = mul(ubo.modelview[InvocationID], ubo.lightPos).xyz; + output.LightVec = lPos - worldPos.xyz; + output.ViewVec = -worldPos.xyz; + + output.Pos = mul(ubo.projection[InvocationID], worldPos); + + // Set the viewport index that the vertex will be emitted to + output.ViewportIndex = InvocationID; + output.PrimitiveID = PrimitiveID; + outStream.Append( output ); + } + + outStream.RestartStrip(); +} diff --git a/Test/spv.debuginfo.hlsl.tesc b/Test/spv.debuginfo.hlsl.tesc new file mode 100644 index 0000000000..ba52701584 --- /dev/null +++ b/Test/spv.debuginfo.hlsl.tesc @@ -0,0 +1,164 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Google LLC +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +struct UBO +{ + float4x4 projection; + float4x4 modelview; + float4 lightPos; + float4 frustumPlanes[6]; + float displacementFactor; + float tessellationFactor; + float2 viewportDim; + float tessellatedEdgeSize; +}; +cbuffer ubo : register(b0) { UBO ubo; }; + +Texture2D textureHeight : register(t1); +SamplerState samplerHeight : register(s1); + +struct VSOutput +{ + float4 Pos : SV_POSITION; +[[vk::location(0)]] float3 Normal : NORMAL0; +[[vk::location(1)]] float2 UV : TEXCOORD0; +}; + +struct HSOutput +{ +[[vk::location(2)]] float4 Pos : SV_POSITION; +[[vk::location(0)]] float3 Normal : NORMAL0; +[[vk::location(1)]] float2 UV : TEXCOORD0; +}; + +struct ConstantsHSOutput +{ + float TessLevelOuter[4] : SV_TessFactor; + float TessLevelInner[2] : SV_InsideTessFactor; +}; + +// Calculate the tessellation factor based on screen space +// dimensions of the edge +float screenSpaceTessFactor(float4 p0, float4 p1) +{ + // Calculate edge mid point + float4 midPoint = 0.5 * (p0 + p1); + // Sphere radius as distance between the control points + float radius = distance(p0, p1) / 2.0; + + // View space + float4 v0 = mul(ubo.modelview, midPoint); + + // Project into clip space + float4 clip0 = mul(ubo.projection, (v0 - float4(radius, float3(0.0, 0.0, 0.0)))); + float4 clip1 = mul(ubo.projection, (v0 + float4(radius, float3(0.0, 0.0, 0.0)))); + + // Get normalized device coordinates + clip0 /= clip0.w; + clip1 /= clip1.w; + + // Convert to viewport coordinates + clip0.xy *= ubo.viewportDim; + clip1.xy *= ubo.viewportDim; + + // Return the tessellation factor based on the screen size + // given by the distance of the two edge control points in screen space + // and a reference (min.) tessellation size for the edge set by the application + return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0); +} + +// Checks the current's patch visibility against the frustum using a sphere check +// Sphere radius is given by the patch size +bool frustumCheck(float4 Pos, float2 inUV) +{ + // Fixed radius (increase if patch size is increased in example) + const float radius = 8.0f; + float4 pos = Pos; + pos.y -= textureHeight.SampleLevel(samplerHeight, inUV, 0.0).r * ubo.displacementFactor; + + // Check sphere against frustum planes + for (int i = 0; i < 6; i++) { + if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0) + { + return false; + } + } + return true; +} + +ConstantsHSOutput ConstantsHS(InputPatch patch) +{ + ConstantsHSOutput output = (ConstantsHSOutput)0; + + if (!frustumCheck(patch[0].Pos, patch[0].UV)) + { + output.TessLevelInner[0] = 0.0; + output.TessLevelInner[1] = 0.0; + output.TessLevelOuter[0] = 0.0; + output.TessLevelOuter[1] = 0.0; + output.TessLevelOuter[2] = 0.0; + output.TessLevelOuter[3] = 0.0; + } + else + { + if (ubo.tessellationFactor > 0.0) + { + output.TessLevelOuter[0] = screenSpaceTessFactor(patch[3].Pos, patch[0].Pos); + output.TessLevelOuter[1] = screenSpaceTessFactor(patch[0].Pos, patch[1].Pos); + output.TessLevelOuter[2] = screenSpaceTessFactor(patch[1].Pos, patch[2].Pos); + output.TessLevelOuter[3] = screenSpaceTessFactor(patch[2].Pos, patch[3].Pos); + output.TessLevelInner[0] = lerp(output.TessLevelOuter[0], output.TessLevelOuter[3], 0.5); + output.TessLevelInner[1] = lerp(output.TessLevelOuter[2], output.TessLevelOuter[1], 0.5); + } + else + { + // Tessellation factor can be set to zero by example + // to demonstrate a simple passthrough + output.TessLevelInner[0] = 1.0; + output.TessLevelInner[1] = 1.0; + output.TessLevelOuter[0] = 1.0; + output.TessLevelOuter[1] = 1.0; + output.TessLevelOuter[2] = 1.0; + output.TessLevelOuter[3] = 1.0; + } + } + + return output; +} + +[domain("quad")] +[partitioning("integer")] +[outputtopology("triangle_cw")] +[outputcontrolpoints(4)] +[patchconstantfunc("ConstantsHS")] +[maxtessfactor(20.0f)] +HSOutput main(InputPatch patch, uint InvocationID : SV_OutputControlPointID) +{ + HSOutput output = (HSOutput)0; + output.Pos = patch[InvocationID].Pos; + output.Normal = patch[InvocationID].Normal; + output.UV = patch[InvocationID].UV; + return output; +} diff --git a/Test/spv.debuginfo.hlsl.tese b/Test/spv.debuginfo.hlsl.tese new file mode 100644 index 0000000000..e7add05bf3 --- /dev/null +++ b/Test/spv.debuginfo.hlsl.tese @@ -0,0 +1,94 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Google LLC +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +struct UBO +{ + float4x4 projection; + float4x4 modelview; + float4 lightPos; + float4 frustumPlanes[6]; + float displacementFactor; + float tessellationFactor; + float2 viewportDim; + float tessellatedEdgeSize; +}; +cbuffer ubo : register(b0) { UBO ubo; }; + +Texture2D displacementMapTexture : register(t1); +SamplerState displacementMapSampler : register(s1); + +struct HSOutput +{ +[[vk::location(2)]] float4 Pos : SV_POSITION; +[[vk::location(0)]] float3 Normal : NORMAL0; +[[vk::location(1)]] float2 UV : TEXCOORD0; +}; + +struct ConstantsHSOutput +{ + float TessLevelOuter[4] : SV_TessFactor; + float TessLevelInner[2] : SV_InsideTessFactor; +}; + +struct DSOutput +{ + float4 Pos : SV_POSITION; +[[vk::location(0)]] float3 Normal : NORMAL0; +[[vk::location(1)]] float2 UV : TEXCOORD0; +[[vk::location(2)]] float3 ViewVec : TEXCOORD1; +[[vk::location(3)]] float3 LightVec : TEXCOORD2; +[[vk::location(4)]] float3 EyePos : POSITION1; +[[vk::location(5)]] float3 WorldPos : POSITION0; +}; + +[domain("quad")] +DSOutput main(ConstantsHSOutput input, float2 TessCoord : SV_DomainLocation, const OutputPatch patch) +{ + // Interpolate UV coordinates + DSOutput output = (DSOutput)0; + float2 uv1 = lerp(patch[0].UV, patch[1].UV, TessCoord.x); + float2 uv2 = lerp(patch[3].UV, patch[2].UV, TessCoord.x); + output.UV = lerp(uv1, uv2, TessCoord.y); + + float3 n1 = lerp(patch[0].Normal, patch[1].Normal, TessCoord.x); + float3 n2 = lerp(patch[3].Normal, patch[2].Normal, TessCoord.x); + output.Normal = lerp(n1, n2, TessCoord.y); + + // Interpolate positions + float4 pos1 = lerp(patch[0].Pos, patch[1].Pos, TessCoord.x); + float4 pos2 = lerp(patch[3].Pos, patch[2].Pos, TessCoord.x); + float4 pos = lerp(pos1, pos2, TessCoord.y); + // Displace + pos.y -= displacementMapTexture.SampleLevel(displacementMapSampler, output.UV, 0.0).r * ubo.displacementFactor; + // Perspective projection + output.Pos = mul(ubo.projection, mul(ubo.modelview, pos)); + + // Calculate vectors for lighting based on tessellated position + output.ViewVec = -pos.xyz; + output.LightVec = normalize(ubo.lightPos.xyz + output.ViewVec); + output.WorldPos = pos.xyz; + output.EyePos = mul(ubo.modelview, pos).xyz; + return output; +} diff --git a/Test/spv.debuginfo.hlsl.vert b/Test/spv.debuginfo.hlsl.vert new file mode 100644 index 0000000000..7d34ef430a --- /dev/null +++ b/Test/spv.debuginfo.hlsl.vert @@ -0,0 +1,112 @@ +/* +The MIT License (MIT) + +Copyright (c) 2022 Google LLC +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +struct VSInput +{ +[[vk::location(0)]] float3 Pos : POSITION0; +[[vk::location(1)]] float3 Normal : NORMAL0; +[[vk::location(2)]] float2 UV : TEXCOORD0; +[[vk::location(3)]] float3 Color : COLOR0; + +// Instanced attributes +[[vk::location(4)]] float3 instancePos : POSITION1; +[[vk::location(5)]] float3 instanceRot : TEXCOORD1; +[[vk::location(6)]] float instanceScale : TEXCOORD2; +[[vk::location(7)]] int instanceTexIndex : TEXCOORD3; +}; + +struct UBO +{ + float4x4 projection; + float4x4 modelview; + float4 lightPos; + float locSpeed; + float globSpeed; +}; + +cbuffer ubo : register(b0) { UBO ubo; } + +struct VSOutput +{ + float4 Pos : SV_POSITION; +[[vk::location(0)]] float3 Normal : NORMAL0; +[[vk::location(1)]] float3 Color : COLOR0; +[[vk::location(2)]] float3 UV : TEXCOORD0; +[[vk::location(3)]] float3 ViewVec : TEXCOORD1; +[[vk::location(4)]] float3 LightVec : TEXCOORD2; +}; + +VSOutput main(VSInput input) +{ + VSOutput output = (VSOutput)0; + output.Color = input.Color; + output.UV = float3(input.UV, input.instanceTexIndex); + + // rotate around x + float s = sin(input.instanceRot.x + ubo.locSpeed); + float c = cos(input.instanceRot.x + ubo.locSpeed); + + float3x3 mx = { c, -s, 0.0, + s, c, 0.0, + 0.0, 0.0, 1.0 }; + + // rotate around y + s = sin(input.instanceRot.y + ubo.locSpeed); + c = cos(input.instanceRot.y + ubo.locSpeed); + + float3x3 my = { c, 0.0, -s, + 0.0, 1.0, 0.0, + s, 0.0, c }; + + // rot around z + s = sin(input.instanceRot.z + ubo.locSpeed); + c = cos(input.instanceRot.z + ubo.locSpeed); + + float3x3 mz = { 1.0, 0.0, 0.0, + 0.0, c, -s, + 0.0, s, c }; + + float3x3 rotMat = mul(mz, mul(my, mx)); + + float4x4 gRotMat; + s = sin(input.instanceRot.y + ubo.globSpeed); + c = cos(input.instanceRot.y + ubo.globSpeed); + gRotMat[0] = float4(c, 0.0, -s, 0.0); + gRotMat[1] = float4(0.0, 1.0, 0.0, 0.0); + gRotMat[2] = float4(s, 0.0, c, 0.0); + gRotMat[3] = float4(0.0, 0.0, 0.0, 1.0); + + float4 locPos = float4(mul(rotMat, input.Pos.xyz), 1.0); + float4 pos = float4((locPos.xyz * input.instanceScale) + input.instancePos, 1.0); + + output.Pos = mul(ubo.projection, mul(ubo.modelview, mul(gRotMat, pos))); + output.Normal = mul((float3x3)mul(ubo.modelview, gRotMat), mul(rotMat, input.Normal)); + + pos = mul(ubo.modelview, float4(input.Pos.xyz + input.instancePos, 1.0)); + float3 lPos = mul((float3x3)ubo.modelview, ubo.lightPos.xyz); + output.LightVec = lPos - pos.xyz; + output.ViewVec = -pos.xyz; + return output; +} diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp index bd4af922a0..a01f24035d 100644 --- a/glslang/HLSL/hlslGrammar.cpp +++ b/glslang/HLSL/hlslGrammar.cpp @@ -3428,7 +3428,7 @@ bool HlslGrammar::acceptCompoundStatement(TIntermNode*& retStatement) } } if (compoundStatement) - compoundStatement->setOperator(EOpSequence); + compoundStatement->setOperator(intermediate.getDebugInfo() ? EOpScope : EOpSequence); retStatement = compoundStatement; diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index ffa1d7a650..62e46a0934 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -2442,6 +2442,11 @@ void HlslParseContext::remapNonEntryPointIO(TFunction& function) clearUniformInputOutput(function[i].type->getQualifier()); } +TIntermNode* HlslParseContext::handleDeclare(const TSourceLoc& loc, TIntermTyped* var) +{ + return intermediate.addUnaryNode(EOpDeclare, var, loc, TType(EbtVoid)); +} + // Handle function returns, including type conversions to the function return type // if necessary. TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value) @@ -8035,11 +8040,16 @@ TIntermNode* HlslParseContext::declareVariable(const TSourceLoc& loc, const TStr if (flattenVar) flatten(*symbol->getAsVariable(), symbolTable.atGlobalLevel()); - if (initializer == nullptr) - return nullptr; + TVariable* variable = symbol->getAsVariable(); + + if (initializer == nullptr) { + if (intermediate.getDebugInfo()) + return executeDeclaration(loc, variable); + else + return nullptr; + } // Deal with initializer - TVariable* variable = symbol->getAsVariable(); if (variable == nullptr) { error(loc, "initializer requires a variable, not a member", identifier.c_str(), ""); return nullptr; @@ -8106,6 +8116,24 @@ TVariable* HlslParseContext::declareNonArray(const TSourceLoc& loc, const TStrin return nullptr; } +// Return a declaration of a temporary variable +// +// This is used to force a variable to be declared in the correct scope +// when debug information is being generated. + +TIntermNode* HlslParseContext::executeDeclaration(const TSourceLoc& loc, TVariable* variable) +{ + // + // Identifier must be of type temporary. + // + TStorageQualifier qualifier = variable->getType().getQualifier().storage; + if (qualifier != EvqTemporary) + return nullptr; + + TIntermSymbol* intermSymbol = intermediate.addSymbol(*variable, loc); + return handleDeclare(loc, intermSymbol); +} + // // Handle all types of initializers from the grammar. // diff --git a/glslang/HLSL/hlslParseHelper.h b/glslang/HLSL/hlslParseHelper.h index 8bebb0e2b2..96d85f4347 100644 --- a/glslang/HLSL/hlslParseHelper.h +++ b/glslang/HLSL/hlslParseHelper.h @@ -87,6 +87,7 @@ class HlslParseContext : public TParseContextBase { void handleFunctionBody(const TSourceLoc&, TFunction&, TIntermNode* functionBody, TIntermNode*& node); void remapEntryPointIO(TFunction& function, TVariable*& returnValue, TVector& inputs, TVector& outputs); void remapNonEntryPointIO(TFunction& function); + TIntermNode* handleDeclare(const TSourceLoc&, TIntermTyped*); TIntermNode* handleReturnValue(const TSourceLoc&, TIntermTyped*); void handleFunctionArgument(TFunction*, TIntermTyped*& arguments, TIntermTyped* newArg); TIntermTyped* handleAssign(const TSourceLoc&, TOperator, TIntermTyped* left, TIntermTyped* right); @@ -243,6 +244,7 @@ class HlslParseContext : public TParseContextBase { TIntermSymbol* makeInternalVariableNode(const TSourceLoc&, const char* name, const TType&) const; TVariable* declareNonArray(const TSourceLoc&, const TString& identifier, const TType&, bool track); void declareArray(const TSourceLoc&, const TString& identifier, const TType&, TSymbol*&, bool track); + TIntermNode* executeDeclaration(const TSourceLoc&, TVariable* variable); TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer, TIntermTyped* scalarInit); bool isScalarConstructor(const TIntermNode*); diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 9e5909ce88..5553205d1b 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -207,6 +207,8 @@ typedef struct glslang_spv_options_s { bool optimize_size; bool disassemble; bool validate; + bool emit_nonsemantic_shader_debug_info; + bool emit_nonsemantic_shader_debug_source; } glslang_spv_options_t; #ifdef __cplusplus diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index a64ed68378..e9595cd433 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -67,6 +67,7 @@ class TIntermediate; enum TOperator { EOpNull, // if in a node, should only mean a node is still being built EOpSequence, // denotes a list of statements, or parameters, etc. + EOpScope, // Used by debugging to denote a scoped list of statements EOpLinkerObjects, // for aggregate node of objects the linker may need, if not reference by the rest of the AST EOpFunctionCall, EOpFunction, // For function definition @@ -91,6 +92,8 @@ enum TOperator { EOpCopyObject, + EOpDeclare, // Used by debugging to force declaration of variable in correct scope + // (u)int* -> bool EOpConvInt8ToBool, EOpConvUint8ToBool, diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 14fd053a79..6a43ef3e84 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2733,10 +2733,10 @@ TIntermAggregate* TIntermediate::addForLoop(TIntermNode* body, TIntermNode* init TIntermAggregate* loopSequence = (initializer == nullptr || initializer->getAsAggregate() == nullptr) ? makeAggregate(initializer, loc) : initializer->getAsAggregate(); - if (loopSequence != nullptr && loopSequence->getOp() == EOpSequence) + if (loopSequence != nullptr && (loopSequence->getOp() == EOpSequence || loopSequence->getOp() == EOpScope)) loopSequence->setOp(EOpNull); loopSequence = growAggregate(loopSequence, node); - loopSequence->setOperator(EOpSequence); + loopSequence->setOperator(getDebugInfo() ? EOpScope : EOpSequence); return loopSequence; } diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index a5ba40e6d9..5b15b31341 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1839,6 +1839,7 @@ void TShader::setOverrideVersion(int version) overrideVersion = version; } +void TShader::setDebugInfo(bool debugInfo) { intermediate->setDebugInfo(debugInfo); } void TShader::setInvertY(bool invert) { intermediate->setInvertY(invert); } void TShader::setDxPositionW(bool invert) { intermediate->setDxPositionW(invert); } void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); } diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 3ab7a3c0a0..7d32548c8e 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -3726,7 +3726,7 @@ compound_statement } RIGHT_BRACE { if ($3 && $3->getAsAggregate()) - $3->getAsAggregate()->setOperator(EOpSequence); + $3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); $$ = $3; } ; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index d77c831585..8669a6ba36 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -151,7 +151,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %parse-param {glslang::TParseContext* pParseContext} %lex-param {parseContext} -%pure-parser // enable thread safety +%define api.pure // enable thread safety %expect 1 // One shift reduce conflict because of if | else %token CONST BOOL INT UINT FLOAT @@ -3726,7 +3726,7 @@ compound_statement } RIGHT_BRACE { if ($3 && $3->getAsAggregate()) - $3->getAsAggregate()->setOperator(EOpSequence); + $3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); $$ = $3; } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 4e4768eaa5..f12503f693 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -11085,7 +11085,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 3727 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) - (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } #line 11092 "MachineIndependent/glslang_tab.cpp" diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index d8a3aab5d0..808ddb2ebe 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -665,6 +665,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpConstructReference: out.debug << "Construct reference type"; break; + case EOpDeclare: out.debug << "Declare"; break; + #ifndef GLSLANG_WEB case EOpSpirvInst: out.debug << "spirv_instruction"; break; #endif @@ -692,6 +694,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node switch (node->getOp()) { case EOpSequence: out.debug << "Sequence\n"; return true; + case EOpScope: out.debug << "Scope\n"; return true; case EOpLinkerObjects: out.debug << "Linker Objects\n"; return true; case EOpComma: out.debug << "Comma"; break; case EOpFunction: out.debug << "Function Definition: " << node->getName(); break; @@ -1107,7 +1110,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node default: out.debug.message(EPrefixError, "Bad aggregation op"); } - if (node->getOp() != EOpSequence && node->getOp() != EOpParameters) + if (node->getOp() != EOpSequence && node->getOp() != EOpScope && node->getOp() != EOpParameters) out.debug << " (" << node->getCompleteString() << ")"; out.debug << "\n"; diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 6e60155aaf..72665f2d83 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -319,6 +319,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(autoMapLocations); MERGE_TRUE(invertY); MERGE_TRUE(dxPositionW); + MERGE_TRUE(debugInfo); MERGE_TRUE(flattenUniformArrays); MERGE_TRUE(useUnknownFormat); MERGE_TRUE(hlslOffsets); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index ddeaa3530e..736e7a43d2 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -292,6 +292,7 @@ class TIntermediate { invertY(false), dxPositionW(false), enhancedMsgs(false), + debugInfo(false), useStorageBuffer(false), invariantAll(false), nanMinMaxClamp(false), @@ -461,6 +462,12 @@ class TIntermediate { const std::string& getEntryPointName() const { return entryPointName; } const std::string& getEntryPointMangledName() const { return entryPointMangledName; } + void setDebugInfo(bool debuginfo) + { + debugInfo = debuginfo; + } + bool getDebugInfo() const { return debugInfo; } + void setInvertY(bool invert) { invertY = invert; @@ -1109,6 +1116,7 @@ class TIntermediate { bool invertY; bool dxPositionW; bool enhancedMsgs; + bool debugInfo; bool useStorageBuffer; bool invariantAll; bool nanMinMaxClamp; // true if desiring min/max/clamp to favor non-NaN over NaN diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index e44339db53..0fdff4fcd4 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -472,6 +472,7 @@ class TShader { GLSLANG_EXPORT void addProcesses(const std::vector&); GLSLANG_EXPORT void setUniqueId(unsigned long long id); GLSLANG_EXPORT void setOverrideVersion(int version); + GLSLANG_EXPORT void setDebugInfo(bool debugInfo); // IO resolver binding data: see comments in ShaderLang.cpp GLSLANG_EXPORT void setShiftBinding(TResourceType res, unsigned int base); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index d3e38bb7ff..5974257620 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -65,6 +65,7 @@ using HlslLegalizeTest = GlslangTest<::testing::TestWithParam>; using HlslDX9CompatibleTest = GlslangTest<::testing::TestWithParam>; using HlslLegalDebugTest = GlslangTest<::testing::TestWithParam>; +using HlslNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam>; // Compiling HLSL to pre-legalized SPIR-V under Vulkan semantics. Expected // to successfully generate both AST and SPIR-V. @@ -136,6 +137,13 @@ TEST_P(HlslLegalDebugTest, FromFile) "/baseResults/", true, true); } +TEST_P(HlslNonSemanticShaderDebugInfoTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, + Source::HLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, + Target::Spv, true, GetParam().entryPoint, "/baseResults/", false, false, true); +} + // clang-format off INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslCompileTest, @@ -527,7 +535,21 @@ INSTANTIATE_TEST_SUITE_P( }), FileNameAsCustomTestSuffix ); +// clang-format on +// clang-format off +INSTANTIATE_TEST_SUITE_P( + ToSpirv, HlslNonSemanticShaderDebugInfoTest, + ::testing::ValuesIn(std::vector{ + {"spv.debuginfo.hlsl.vert", "main"}, + {"spv.debuginfo.hlsl.frag", "main"}, + {"spv.debuginfo.hlsl.comp", "main"}, + {"spv.debuginfo.hlsl.geom", "main"}, + {"spv.debuginfo.hlsl.tesc", "main"}, + {"spv.debuginfo.hlsl.tese", "main"}, + }), + FileNameAsCustomTestSuffix +); // clang-format on } // anonymous namespace diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 5d60ccde7d..dac7e7a788 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -80,6 +80,7 @@ using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam>; using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam>; +using CompileVulkanToNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam>; // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate SPIR-V. @@ -229,6 +230,13 @@ TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile) Target::Spv); } +TEST_P(CompileVulkanToNonSemanticShaderDebugInfoTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, + Target::Spv, true, "", "/baseResults/", false, false, true); +} + // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTest, @@ -812,6 +820,7 @@ INSTANTIATE_TEST_SUITE_P( })), FileNameAsCustomTestSuffix ); + INSTANTIATE_TEST_SUITE_P( Glsl, CompileUpgradeTextureToSampledTextureAndDropSamplersTest, ::testing::ValuesIn(std::vector({ @@ -819,6 +828,19 @@ INSTANTIATE_TEST_SUITE_P( })), FileNameAsCustomTestSuffix ); + +INSTANTIATE_TEST_SUITE_P( + Glsl, CompileVulkanToNonSemanticShaderDebugInfoTest, + ::testing::ValuesIn(std::vector({ + "spv.debuginfo.glsl.vert", + "spv.debuginfo.glsl.frag", + "spv.debuginfo.glsl.comp", + "spv.debuginfo.glsl.geom", + "spv.debuginfo.glsl.tesc", + "spv.debuginfo.glsl.tese" + })), + FileNameAsCustomTestSuffix +); // clang-format on } // anonymous namespace diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 5b66dece71..d087d6ddc6 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -217,6 +217,7 @@ class GlslangTest : public GT { EShTextureSamplerTransformMode texSampTransMode = EShTexSampTransKeep, bool enableOptimizer = false, bool enableDebug = false, + bool enableNonSemanticShaderDebugInfo = false, bool automap = true) { const EShLanguage stage = GetShaderStage(GetSuffix(shaderName)); @@ -263,6 +264,8 @@ class GlslangTest : public GT { std::vector spirv_binary; options().disableOptimizer = !enableOptimizer; options().generateDebugInfo = enableDebug; + options().emitNonSemanticShaderDebugInfo = enableNonSemanticShaderDebugInfo; + options().emitNonSemanticShaderDebugSource = enableNonSemanticShaderDebugInfo; glslang::GlslangToSpv(*program.getIntermediate(stage), spirv_binary, &logger, &options()); @@ -448,7 +451,8 @@ class GlslangTest : public GT { const std::string& entryPointName="", const std::string& baseDir="/baseResults/", const bool enableOptimizer = false, - const bool enableDebug = false) + const bool enableDebug = false, + const bool enableNonSemanticShaderDebugInfo = false) { const std::string inputFname = testDir + "/" + testName; const std::string expectedOutputFname = @@ -464,7 +468,8 @@ class GlslangTest : public GT { if (enableDebug) controls = static_cast(controls | EShMsgDebugInfo); GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion, - targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug, automap); + targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug, + enableNonSemanticShaderDebugInfo, automap); // Generate the hybrid output in the way of glslangValidator. std::ostringstream stream; diff --git a/license-checker.cfg b/license-checker.cfg index 51ce2762c8..15b8f9729e 100644 --- a/license-checker.cfg +++ b/license-checker.cfg @@ -36,6 +36,7 @@ "SPIRV/GLSL.*.h", "SPIRV/NonSemanticDebugPrintf.h", + "SPIRV/NonSemanticShaderDebugInfo100.h", "SPIRV/spirv.hpp" ] } From f3cf7a452c54e095d6efa3d1cf752e0c54c747e2 Mon Sep 17 00:00:00 2001 From: Johannes Kauffmann <19662702+JohannesKauffmann@users.noreply.github.com> Date: Mon, 29 Aug 2022 23:17:53 +0000 Subject: [PATCH 083/594] Fix -Wundef warnings for MINGW_HAS_SECURE_API Since 12e27e17deb3102f1f6f08ec19caf5e32becb3f8, it was assumed that the MINGW_HAS_SECURE_API macro was unconditionally defined. This is not always the case, and GCC produces -Wundef warnings when that happens. Fix this, by first checking if MINGW_HAS_SECURE_API is defined, and if so, also check that it does not evaluate to zero. As a drive-by, place parentheses around _MSC_VER for consistency. --- glslang/Include/Common.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index 9042a1aa27..a5b41cb397 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -66,7 +66,7 @@ std::string to_string(const T& val) { } #endif -#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || MINGW_HAS_SECURE_API +#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API) #include #ifndef snprintf #define snprintf sprintf_s @@ -218,7 +218,7 @@ template T Max(const T a, const T b) { return a > b ? a : b; } // // Create a TString object from an integer. // -#if defined _MSC_VER || MINGW_HAS_SECURE_API +#if defined(_MSC_VER) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API) inline const TString String(const int i, const int base = 10) { char text[16]; // 32 bit ints are at most 10 digits in base 10 From 228c67228a181ac299df2a1c09a322dcc9bb0cdc Mon Sep 17 00:00:00 2001 From: Pankaj Mistry Date: Wed, 25 Aug 2021 13:41:32 -0700 Subject: [PATCH 084/594] GL_EXT_mesh_shader/SPV_EXT_mesh_shader implementation Added following updates to GL_EXT_mesh_shader implementation: 1. Added SPIRV and GLSL test cases 2. Added checks to ensure NV and EXT mesh shader builtins cannot be used interchangeably. 3. Updated the language name by removing the postfix "NV" to MeshShader and TaskShader. 4. Added checks for grammar checking to comply with the spec. 5. Added gl_NumWorkGroups builtin to Mesh shader 6. Fixed data type of gl_PrimitiveLineIndicesEXT and gl_PrimitiveTriangleIndicesEXT 7. Added new constants to the resources table 8. Updates to handle new storage qualifier "taskPayloadSharedEXT" 9. Updated test cases by replacing "taskEXT" with storage qualifier "taskPayloadSharedEXT" Addressed Review comments 1. Fixed instruction description used by glslang disassembly. 2. Updated OpEmitMeshTasksEXT as per spec update 3. Fixed implementation that errors out if there are more then one taskPayloadSharedEXT varjables. 4. Fixed miscellaneous error logs and removed unwanted code. SPIRV 1.6 related build failure fixes - Update SPIRV header to 1.6 - Fix conflict wiht SPIRV 1.6 change, where localSizeId is used for execution mode for mesh/task shaders Enable SPIRV generated for EXT_mesh_shader to be version 1.4 GL_EXT_mesh_shader: Add checks for atomic support and corresponding test cases --- SPIRV/CInterface/spirv_c_interface.cpp | 8 +- SPIRV/GLSL.ext.EXT.h | 1 + SPIRV/GlslangToSpv.cpp | 107 +- SPIRV/doc.cpp | 22 +- SPIRV/spirv.hpp | 33 +- StandAlone/ResourceLimits.cpp | 36 + StandAlone/StandAlone.cpp | 8 +- .../baseResults/glsl.460.subgroupEXT.mesh.out | 1039 ++ .../baseResults/glsl.460.subgroupEXT.task.out | 707 ++ Test/baseResults/spv.460.subgroupEXT.mesh.out | 448 + Test/baseResults/spv.460.subgroupEXT.task.out | 376 + .../spv.atomiAddEXT.error.mesh.out | 7 + Test/baseResults/spv.atomiAddEXT.task.out | 71 + .../spv.ext.meshShaderBuiltins.mesh.out | 273 + .../spv.ext.meshShaderRedeclBuiltins.mesh.out | 216 + .../spv.ext.meshShaderTaskMem.mesh.out | 102 + .../spv.ext.meshShaderUserDefined.mesh.out | 208 + .../spv.ext.meshTaskShader.task.out | 163 + Test/baseResults/test.conf | 9 + Test/spv.460.subgroupEXT.mesh | 164 + Test/spv.460.subgroupEXT.task | 153 + Test/spv.atomiAddEXT.error.mesh | 22 + Test/spv.atomiAddEXT.task | 27 + Test/spv.ext.meshShaderBuiltins.mesh | 74 + Test/spv.ext.meshShaderRedeclBuiltins.mesh | 75 + Test/spv.ext.meshShaderTaskMem.mesh | 41 + Test/spv.ext.meshShaderUserDefined.mesh | 59 + Test/spv.ext.meshTaskShader.task | 51 + glslang/CInterface/glslang_c_interface.cpp | 8 +- glslang/Include/BaseTypes.h | 13 + glslang/Include/ResourceLimits.h | 9 + glslang/Include/Types.h | 9 +- glslang/Include/glslang_c_interface.h | 9 + glslang/Include/glslang_c_shader_types.h | 12 +- glslang/Include/intermediate.h | 2 + glslang/MachineIndependent/Initialize.cpp | 209 +- glslang/MachineIndependent/ParseHelper.cpp | 170 +- glslang/MachineIndependent/Scan.cpp | 12 +- glslang/MachineIndependent/ShaderLang.cpp | 8 +- glslang/MachineIndependent/Versions.cpp | 27 +- glslang/MachineIndependent/Versions.h | 6 +- glslang/MachineIndependent/glslang.m4 | 27 +- glslang/MachineIndependent/glslang.y | 27 +- glslang/MachineIndependent/glslang_tab.cpp | 8331 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 6 +- glslang/MachineIndependent/intermOut.cpp | 6 +- glslang/MachineIndependent/linkValidate.cpp | 26 +- .../MachineIndependent/localintermediate.h | 4 + glslang/Public/ShaderLang.h | 12 +- gtests/Spv.FromFile.cpp | 11 + gtests/TestFixture.cpp | 4 +- known_good.json | 4 +- 52 files changed, 9102 insertions(+), 4350 deletions(-) create mode 100644 Test/baseResults/glsl.460.subgroupEXT.mesh.out create mode 100644 Test/baseResults/glsl.460.subgroupEXT.task.out create mode 100644 Test/baseResults/spv.460.subgroupEXT.mesh.out create mode 100644 Test/baseResults/spv.460.subgroupEXT.task.out create mode 100644 Test/baseResults/spv.atomiAddEXT.error.mesh.out create mode 100644 Test/baseResults/spv.atomiAddEXT.task.out create mode 100644 Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out create mode 100644 Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out create mode 100644 Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out create mode 100644 Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out create mode 100644 Test/baseResults/spv.ext.meshTaskShader.task.out create mode 100644 Test/spv.460.subgroupEXT.mesh create mode 100644 Test/spv.460.subgroupEXT.task create mode 100644 Test/spv.atomiAddEXT.error.mesh create mode 100644 Test/spv.atomiAddEXT.task create mode 100644 Test/spv.ext.meshShaderBuiltins.mesh create mode 100644 Test/spv.ext.meshShaderRedeclBuiltins.mesh create mode 100644 Test/spv.ext.meshShaderTaskMem.mesh create mode 100644 Test/spv.ext.meshShaderUserDefined.mesh create mode 100644 Test/spv.ext.meshTaskShader.task diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index d9312bbbdb..61e27e18ae 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -71,10 +71,10 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) return EShLangMiss; case GLSLANG_STAGE_CALLABLE_NV: return EShLangCallable; - case GLSLANG_STAGE_TASK_NV: - return EShLangTaskNV; - case GLSLANG_STAGE_MESH_NV: - return EShLangMeshNV; + case GLSLANG_STAGE_TASK: + return EShLangTask; + case GLSLANG_STAGE_MESH: + return EShLangMesh; default: break; } diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h index f48f1304d6..a247b4cd13 100644 --- a/SPIRV/GLSL.ext.EXT.h +++ b/SPIRV/GLSL.ext.EXT.h @@ -39,5 +39,6 @@ static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_ato static const char* const E_SPV_EXT_shader_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add"; static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max"; static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; +static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; #endif // #ifndef GLSLextEXT_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index bff57bcde0..bcfc6e80af 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -280,6 +280,9 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { // Used later for generating OpTraceKHR/OpExecuteCallableKHR std::unordered_map locationToSymbol[2]; + + // Used by Task shader while generating opearnds for OpEmitMeshTasksEXT + spv::Id taskPayloadID; }; // @@ -315,7 +318,7 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile } // Translate glslang language (stage) to SPIR-V execution model. -spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) +spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShaderEXT = false) { switch (stage) { case EShLangVertex: return spv::ExecutionModelVertex; @@ -331,8 +334,8 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage) case EShLangClosestHit: return spv::ExecutionModelClosestHitKHR; case EShLangMiss: return spv::ExecutionModelMissKHR; case EShLangCallable: return spv::ExecutionModelCallableKHR; - case EShLangTaskNV: return spv::ExecutionModelTaskNV; - case EShLangMeshNV: return spv::ExecutionModelMeshNV; + case EShLangTask: return (isMeshShaderEXT)? spv::ExecutionModelTaskEXT : spv::ExecutionModelTaskNV; + case EShLangMesh: return (isMeshShaderEXT)? spv::ExecutionModelMeshEXT: spv::ExecutionModelMeshNV; #endif default: assert(0); @@ -763,7 +766,7 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInSampleMask; case glslang::EbvLayer: - if (glslangIntermediate->getStage() == EShLangMeshNV) { + if (glslangIntermediate->getStage() == EShLangMesh) { return spv::BuiltInLayer; } if (glslangIntermediate->getStage() == EShLangGeometry || @@ -1078,6 +1081,16 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvMeshViewIndicesNV: return spv::BuiltInMeshViewIndicesNV; + // SPV_EXT_mesh_shader + case glslang::EbvPrimitivePointIndicesEXT: + return spv::BuiltInPrimitivePointIndicesEXT; + case glslang::EbvPrimitiveLineIndicesEXT: + return spv::BuiltInPrimitiveLineIndicesEXT; + case glslang::EbvPrimitiveTriangleIndicesEXT: + return spv::BuiltInPrimitiveTriangleIndicesEXT; + case glslang::EbvCullPrimitiveEXT: + return spv::BuiltInCullPrimitiveEXT; + // sm builtins case glslang::EbvWarpsPerSM: builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); @@ -1321,6 +1334,7 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqHitAttr: return spv::StorageClassHitAttributeKHR; case glslang::EvqCallableData: return spv::StorageClassCallableDataKHR; case glslang::EvqCallableDataIn: return spv::StorageClassIncomingCallableDataKHR; + case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClassTaskPayloadWorkgroupEXT; case glslang::EvqSpirvStorageClass: return static_cast(type.getQualifier().spirvStorageClass); #endif default: @@ -1466,6 +1480,8 @@ void InheritQualifiers(glslang::TQualifier& child, const glslang::TQualifier& pa child.perViewNV = true; if (parent.perTaskNV) child.perTaskNV = true; + if (parent.storage == glslang::EvqtaskPayloadSharedEXT) + child.storage = glslang::EvqtaskPayloadSharedEXT; if (parent.patch) child.patch = true; if (parent.sample) @@ -1525,9 +1541,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, inEntryPoint(false), entryPointTerminated(false), linkageOnly(false), glslangIntermediate(glslangIntermediate), nanMinMaxClamp(glslangIntermediate->getNanMinMaxClamp()), - nonSemanticDebugPrintf(0) + nonSemanticDebugPrintf(0), + taskPayloadID(0) { - spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage()); + bool isMeshShaderExt = (glslangIntermediate->getRequestedExtensions().find(glslang::E_GL_EXT_mesh_shader) != + glslangIntermediate->getRequestedExtensions().end()); + spv::ExecutionModel executionModel = TranslateExecutionModel(glslangIntermediate->getStage(), isMeshShaderExt); builder.clearAccessChain(); builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()), @@ -1803,7 +1822,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, case EShLangAnyHit: case EShLangClosestHit: case EShLangMiss: - case EShLangCallable: + case EShLangCallable: { auto& extensions = glslangIntermediate->getRequestedExtensions(); if (extensions.find("GL_NV_ray_tracing") == extensions.end()) { @@ -1823,10 +1842,15 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, } break; } - case EShLangTaskNV: - case EShLangMeshNV: - builder.addCapability(spv::CapabilityMeshShadingNV); - builder.addExtension(spv::E_SPV_NV_mesh_shader); + case EShLangTask: + case EShLangMesh: + if(isMeshShaderExt) { + builder.addCapability(spv::CapabilityMeshShadingEXT); + builder.addExtension(spv::E_SPV_EXT_mesh_shader); + } else { + builder.addCapability(spv::CapabilityMeshShadingNV); + builder.addExtension(spv::E_SPV_NV_mesh_shader); + } if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { std::vector dimConstId; for (int dim = 0; dim < 3; ++dim) { @@ -1843,7 +1867,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, glslangIntermediate->getLocalSize(1), glslangIntermediate->getLocalSize(2)); } - if (glslangIntermediate->getStage() == EShLangMeshNV) { + if (glslangIntermediate->getStage() == EShLangMesh) { builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputVertices, glslangIntermediate->getVertices()); builder.addExecutionMode(shaderEntry, spv::ExecutionModeOutputPrimitivesNV, @@ -1962,7 +1986,6 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) if (symbol->getType().getQualifier().isSpecConstant()) spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); - #ifdef ENABLE_HLSL // Skip symbol handling if it is string-typed if (symbol->getBasicType() == glslang::EbtString) @@ -1973,6 +1996,9 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) // Formal function parameters were mapped during makeFunctions(). spv::Id id = getSymbolId(symbol); + if (symbol->getType().getQualifier().isTaskPayload()) + taskPayloadID = id; // cache the taskPayloadID to be used it as operand for OpEmitMeshTasksEXT + if (builder.isPointer(id)) { if (!symbol->getType().getQualifier().isParamInput() && !symbol->getType().getQualifier().isParamOutput()) { @@ -2516,7 +2542,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI operandNode = node->getOperand()->getAsBinaryNode()->getLeft(); else operandNode = node->getOperand(); - + operandNode->traverse(this); spv::Id operand = spv::NoResult; @@ -3111,6 +3137,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpExecuteCallableNV: case glslang::EOpExecuteCallableKHR: case glslang::EOpWritePackedPrimitiveIndices4x8NV: + case glslang::EOpEmitMeshTasksEXT: + case glslang::EOpSetMeshOutputsEXT: noReturnValue = true; break; case glslang::EOpRayQueryInitialize: @@ -3505,7 +3533,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; case 1: { - OpDecorations decorations = { precision, + OpDecorations decorations = { precision, TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(node->getType().getQualifier()) }; result = createUnaryOperation( @@ -3627,7 +3655,7 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang // smear condition to vector, if necessary (AST is always scalar) // Before 1.4, smear like for mix(), starting with 1.4, keep it scalar if (glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_4 && builder.isVector(trueValue)) { - condition = builder.smearScalar(spv::NoPrecision, condition, + condition = builder.smearScalar(spv::NoPrecision, condition, builder.makeVectorType(builder.makeBoolType(), builder.getNumComponents(trueValue))); } @@ -4206,7 +4234,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeImageType(getSampledType(sampler), TranslateDimensionality(sampler), sampler.isShadow(), sampler.isArrayed(), sampler.isMultiSample(), sampler.isImageClass() ? 2 : 1, TranslateImageFormat(type)); - if (sampler.isCombined() && + if (sampler.isCombined() && (!sampler.isBuffer() || glslangIntermediate->getSpv().spv < glslang::EShTargetSpv_1_6)) { // Already has both image and sampler, make the combined type. Only combine sampler to // buffer if before SPIR-V 1.6. @@ -4396,7 +4424,7 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) extensions.find("GL_NV_stereo_view_rendering") == extensions.end()) return true; - if (glslangIntermediate->getStage() != EShLangMeshNV) { + if (glslangIntermediate->getStage() != EShLangMesh) { if (member.getFieldName() == "gl_ViewportMask" && extensions.find("GL_NV_viewport_array2") == extensions.end()) return true; @@ -5831,10 +5859,10 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO assert(builder.isStructType(resultStructType)); //resType (SPIR-V type) contains 6 elements: - //Member 0 must be a Boolean type scalar(LOD), - //Member 1 must be a vector of integer type, whose Signedness operand is 0(anchor), - //Member 2 must be a vector of integer type, whose Signedness operand is 0(offset), - //Member 3 must be a vector of integer type, whose Signedness operand is 0(mask), + //Member 0 must be a Boolean type scalar(LOD), + //Member 1 must be a vector of integer type, whose Signedness operand is 0(anchor), + //Member 2 must be a vector of integer type, whose Signedness operand is 0(offset), + //Member 3 must be a vector of integer type, whose Signedness operand is 0(mask), //Member 4 must be a scalar of integer type, whose Signedness operand is 0(lod), //Member 5 must be a scalar of integer type, whose Signedness operand is 0(granularity). std::vector members; @@ -5847,7 +5875,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO //call ImageFootprintNV spv::Id res = builder.createTextureCall(precision, resType, sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params, signExtensionMask()); - + //copy resType (SPIR-V type) to resultStructType(OpenGL type) for (int i = 0; i < 5; i++) { builder.clearAccessChain(); @@ -5900,7 +5928,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } #endif - std::vector result( 1, + std::vector result( 1, builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, noImplicitLod, params, signExtensionMask()) ); @@ -7423,7 +7451,7 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv } else { scopeId = builder.makeUintConstant(spv::ScopeDevice); } - // semantics default to relaxed + // semantics default to relaxed spv::Id semanticsId = builder.makeUintConstant(lvalueCoherentFlags.isVolatile() && glslangIntermediate->usingVulkanMemoryModel() ? spv::MemorySemanticsVolatileMask : @@ -8527,6 +8555,14 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpWritePackedPrimitiveIndices4x8NV: builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands); return 0; + case glslang::EOpEmitMeshTasksEXT: + if(taskPayloadID) + operands.push_back(taskPayloadID); + builder.createNoResultOp(spv::OpEmitMeshTasksEXT, operands); + return 0; + case glslang::EOpSetMeshOutputsEXT: + builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands); + return 0; case glslang::EOpCooperativeMatrixMulAdd: opCode = spv::OpCooperativeMatrixMulAddNV; break; @@ -9011,13 +9047,21 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // add per-primitive, per-view. per-task decorations to a struct member (member >= 0) or an object void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier& qualifier) { + bool isMeshShaderExt = (glslangIntermediate->getRequestedExtensions().find(glslang::E_GL_EXT_mesh_shader) != + glslangIntermediate->getRequestedExtensions().end()); + if (member >= 0) { if (qualifier.perPrimitiveNV) { // Need to add capability/extension for fragment shader. // Mesh shader already adds this by default. if (glslangIntermediate->getStage() == EShLangFragment) { - builder.addCapability(spv::CapabilityMeshShadingNV); - builder.addExtension(spv::E_SPV_NV_mesh_shader); + if(isMeshShaderExt) { + builder.addCapability(spv::CapabilityMeshShadingEXT); + builder.addExtension(spv::E_SPV_EXT_mesh_shader); + } else { + builder.addCapability(spv::CapabilityMeshShadingNV); + builder.addExtension(spv::E_SPV_NV_mesh_shader); + } } builder.addMemberDecoration(id, (unsigned)member, spv::DecorationPerPrimitiveNV); } @@ -9030,8 +9074,13 @@ void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const g // Need to add capability/extension for fragment shader. // Mesh shader already adds this by default. if (glslangIntermediate->getStage() == EShLangFragment) { - builder.addCapability(spv::CapabilityMeshShadingNV); - builder.addExtension(spv::E_SPV_NV_mesh_shader); + if(isMeshShaderExt) { + builder.addCapability(spv::CapabilityMeshShadingEXT); + builder.addExtension(spv::E_SPV_EXT_mesh_shader); + } else { + builder.addCapability(spv::CapabilityMeshShadingNV); + builder.addExtension(spv::E_SPV_NV_mesh_shader); + } } builder.addDecoration(id, spv::DecorationPerPrimitiveNV); } diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 9cc26541dc..b7fe3e7424 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -97,6 +97,8 @@ const char* ExecutionModelString(int model) case 6: return "Kernel"; case ExecutionModelTaskNV: return "TaskNV"; case ExecutionModelMeshNV: return "MeshNV"; + case ExecutionModelTaskEXT: return "TaskEXT"; + case ExecutionModelMeshEXT: return "MeshEXT"; default: return "Bad"; @@ -242,7 +244,7 @@ const char* StorageClassString(int StorageClass) case StorageClassIncomingCallableDataKHR: return "IncomingCallableDataKHR"; case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; - + case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; default: return "Bad"; } } @@ -433,6 +435,10 @@ const char* BuiltInString(int builtIn) case BuiltInWarpIDNV: return "WarpIDNV"; case BuiltInSMIDNV: return "SMIDNV"; case BuiltInCurrentRayTimeNV: return "CurrentRayTimeNV"; + case BuiltInPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; + case BuiltInPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; + case BuiltInPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; + case BuiltInCullPrimitiveEXT: return "CullPrimitiveEXT"; default: return "Bad"; } @@ -940,6 +946,7 @@ const char* CapabilityString(int info) case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR"; case CapabilityMeshShadingNV: return "MeshShadingNV"; case CapabilityImageFootprintNV: return "ImageFootprintNV"; + case CapabilityMeshShadingEXT: return "MeshShadingEXT"; // case CapabilityShadingRateNV: return "ShadingRateNV"; // superseded by FragmentDensityEXT case CapabilitySampleMaskOverrideCoverageNV: return "SampleMaskOverrideCoverageNV"; case CapabilityFragmentDensityEXT: return "FragmentDensityEXT"; @@ -1407,6 +1414,8 @@ const char* OpcodeString(int op) case OpGroupNonUniformPartitionNV: return "OpGroupNonUniformPartitionNV"; case OpImageSampleFootprintNV: return "OpImageSampleFootprintNV"; case OpWritePackedPrimitiveIndices4x8NV: return "OpWritePackedPrimitiveIndices4x8NV"; + case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; + case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; @@ -2981,6 +2990,17 @@ void Parameterize() InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false); + + InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'"); + InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'"); + InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false); + + InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'"); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 9afd8a90be..0e40544bda 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,19 +1,19 @@ // Copyright (c) 2014-2020 The Khronos Group Inc. -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and/or associated documentation files (the "Materials"), // to deal in the Materials without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Materials, and to permit persons to whom the // Materials are furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Materials. -// +// // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL @@ -27,7 +27,7 @@ // Enumeration tokens for SPIR-V, in various styles: // C, C++, C++11, JSON, Lua, Python, C#, D -// +// // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL @@ -36,7 +36,7 @@ // - C# will use enum classes in the Specification class located in the "Spv" namespace, // e.g.: Spv.Specification.SourceLanguage.GLSL // - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL -// +// // Some tokens act like mask values, which can be OR'd together, // while others are mutually exclusive. The mask-like ones have // "Mask" in their name, and a parallel enum that has the shift @@ -91,6 +91,8 @@ enum ExecutionModel { ExecutionModelMissNV = 5317, ExecutionModelCallableKHR = 5318, ExecutionModelCallableNV = 5318, + ExecutionModelTaskEXT = 5364, + ExecutionModelMeshEXT = 5365, ExecutionModelMax = 0x7fffffff, }; @@ -166,10 +168,13 @@ enum ExecutionMode { ExecutionModeStencilRefUnchangedBackAMD = 5082, ExecutionModeStencilRefGreaterBackAMD = 5083, ExecutionModeStencilRefLessBackAMD = 5084, + ExecutionModeOutputLinesEXT = 5269, ExecutionModeOutputLinesNV = 5269, + ExecutionModeOutputPrimitivesEXT = 5270, ExecutionModeOutputPrimitivesNV = 5270, ExecutionModeDerivativeGroupQuadsNV = 5289, ExecutionModeDerivativeGroupLinearNV = 5290, + ExecutionModeOutputTrianglesEXT = 5298, ExecutionModeOutputTrianglesNV = 5298, ExecutionModePixelInterlockOrderedEXT = 5366, ExecutionModePixelInterlockUnorderedEXT = 5367, @@ -218,6 +223,7 @@ enum StorageClass { StorageClassShaderRecordBufferNV = 5343, StorageClassPhysicalStorageBuffer = 5349, StorageClassPhysicalStorageBufferEXT = 5349, + StorageClassTaskPayloadWorkgroupEXT = 5402, StorageClassCodeSectionINTEL = 5605, StorageClassDeviceOnlyINTEL = 5936, StorageClassHostOnlyINTEL = 5937, @@ -500,6 +506,7 @@ enum Decoration { DecorationPassthroughNV = 5250, DecorationViewportRelativeNV = 5252, DecorationSecondaryViewportRelativeNV = 5256, + DecorationPerPrimitiveEXT = 5271, DecorationPerPrimitiveNV = 5271, DecorationPerViewNV = 5272, DecorationPerTaskNV = 5273, @@ -647,6 +654,10 @@ enum BuiltIn { BuiltInFragmentSizeNV = 5292, BuiltInFragInvocationCountEXT = 5293, BuiltInInvocationsPerPixelNV = 5293, + BuiltInPrimitivePointIndicesEXT = 5294, + BuiltInPrimitiveLineIndicesEXT = 5295, + BuiltInPrimitiveTriangleIndicesEXT = 5296, + BuiltInCullPrimitiveEXT = 5299, BuiltInLaunchIdKHR = 5319, BuiltInLaunchIdNV = 5319, BuiltInLaunchSizeKHR = 5320, @@ -983,7 +994,8 @@ enum Capability { CapabilityFragmentFullyCoveredEXT = 5265, CapabilityMeshShadingNV = 5266, CapabilityImageFootprintNV = 5282, - CapabilityFragmentBarycentricKHR = 5284, + CapabilityMeshShadingEXT = 5283, + CapabilityFragmentBarycentricKHR = 5284, CapabilityFragmentBarycentricNV = 5284, CapabilityComputeDerivativeGroupQuadsNV = 5288, CapabilityFragmentDensityEXT = 5291, @@ -1577,6 +1589,8 @@ enum Op { OpFragmentFetchAMD = 5012, OpReadClockKHR = 5056, OpImageSampleFootprintNV = 5283, + OpEmitMeshTasksEXT = 5294, + OpSetMeshOutputsEXT = 5295, OpGroupNonUniformPartitionNV = 5296, OpWritePackedPrimitiveIndices4x8NV = 5299, OpReportIntersectionKHR = 5334, @@ -2234,6 +2248,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; + case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break; + case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break; case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; @@ -2515,4 +2531,3 @@ inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShad } // end namespace spv #endif // #ifndef spirv_HPP - diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index 7c7f4c4e49..1a76bf62d2 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -134,6 +134,15 @@ const TBuiltInResource DefaultTBuiltInResource = { /* .maxTaskWorkGroupSizeY_NV = */ 1, /* .maxTaskWorkGroupSizeZ_NV = */ 1, /* .maxMeshViewCountNV = */ 4, + /* .maxMeshOutputVerticesEXT = */ 256, + /* .maxMeshOutputPrimitivesEXT = */ 256, + /* .maxMeshWorkGroupSizeX_EXT = */ 128, + /* .maxMeshWorkGroupSizeY_EXT = */ 128, + /* .maxMeshWorkGroupSizeZ_EXT = */ 128, + /* .maxTaskWorkGroupSizeX_EXT = */ 128, + /* .maxTaskWorkGroupSizeY_EXT = */ 128, + /* .maxTaskWorkGroupSizeZ_EXT = */ 128, + /* .maxMeshViewCountEXT = */ 4, /* .maxDualSourceDrawBuffersEXT = */ 1, /* .limits = */ { @@ -244,6 +253,15 @@ std::string GetDefaultTBuiltInResourceString() << "MaxTaskWorkGroupSizeY_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_NV << "\n" << "MaxTaskWorkGroupSizeZ_NV " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_NV << "\n" << "MaxMeshViewCountNV " << DefaultTBuiltInResource.maxMeshViewCountNV << "\n" + << "MaxMeshOutputVerticesEXT " << DefaultTBuiltInResource.maxMeshOutputVerticesEXT << "\n" + << "MaxMeshOutputPrimitivesEXT " << DefaultTBuiltInResource.maxMeshOutputPrimitivesEXT << "\n" + << "MaxMeshWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeX_EXT << "\n" + << "MaxMeshWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeY_EXT << "\n" + << "MaxMeshWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxMeshWorkGroupSizeZ_EXT << "\n" + << "MaxTaskWorkGroupSizeX_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeX_EXT << "\n" + << "MaxTaskWorkGroupSizeY_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeY_EXT << "\n" + << "MaxTaskWorkGroupSizeZ_EXT " << DefaultTBuiltInResource.maxTaskWorkGroupSizeZ_EXT << "\n" + << "MaxMeshViewCountEXT " << DefaultTBuiltInResource.maxMeshViewCountEXT << "\n" << "MaxDualSourceDrawBuffersEXT " << DefaultTBuiltInResource.maxDualSourceDrawBuffersEXT << "\n" << "nonInductiveForLoops " << DefaultTBuiltInResource.limits.nonInductiveForLoops << "\n" << "whileLoops " << DefaultTBuiltInResource.limits.whileLoops << "\n" @@ -469,6 +487,24 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) resources->maxTaskWorkGroupSizeZ_NV = value; else if (tokenStr == "MaxMeshViewCountNV") resources->maxMeshViewCountNV = value; + else if (tokenStr == "MaxMeshOutputVerticesEXT") + resources->maxMeshOutputVerticesEXT = value; + else if (tokenStr == "MaxMeshOutputPrimitivesEXT") + resources->maxMeshOutputPrimitivesEXT = value; + else if (tokenStr == "MaxMeshWorkGroupSizeX_EXT") + resources->maxMeshWorkGroupSizeX_EXT = value; + else if (tokenStr == "MaxMeshWorkGroupSizeY_EXT") + resources->maxMeshWorkGroupSizeY_EXT = value; + else if (tokenStr == "MaxMeshWorkGroupSizeZ_EXT") + resources->maxMeshWorkGroupSizeZ_EXT = value; + else if (tokenStr == "MaxTaskWorkGroupSizeX_EXT") + resources->maxTaskWorkGroupSizeX_EXT = value; + else if (tokenStr == "MaxTaskWorkGroupSizeY_EXT") + resources->maxTaskWorkGroupSizeY_EXT = value; + else if (tokenStr == "MaxTaskWorkGroupSizeZ_EXT") + resources->maxTaskWorkGroupSizeZ_EXT = value; + else if (tokenStr == "MaxMeshViewCountEXT") + resources->maxMeshViewCountEXT = value; else if (tokenStr == "nonInductiveForLoops") resources->limits.nonInductiveForLoops = (value != 0); else if (tokenStr == "whileLoops") diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 37282f2d01..38127704ad 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -293,8 +293,8 @@ const char* GetBinaryName(EShLanguage stage) case EShLangClosestHit: name = "rchit.spv"; break; case EShLangMiss: name = "rmiss.spv"; break; case EShLangCallable: name = "rcall.spv"; break; - case EShLangMeshNV: name = "mesh.spv"; break; - case EShLangTaskNV: name = "task.spv"; break; + case EShLangMesh : name = "mesh.spv"; break; + case EShLangTask : name = "task.spv"; break; default: name = "unknown"; break; } } else @@ -1780,9 +1780,9 @@ EShLanguage FindLanguage(const std::string& name, bool parseStageName) else if (stageName == "rcall") return EShLangCallable; else if (stageName == "mesh") - return EShLangMeshNV; + return EShLangMesh; else if (stageName == "task") - return EShLangTaskNV; + return EShLangTask; usage(); return EShLangVertex; diff --git a/Test/baseResults/glsl.460.subgroupEXT.mesh.out b/Test/baseResults/glsl.460.subgroupEXT.mesh.out new file mode 100644 index 0000000000..8d45106c81 --- /dev/null +++ b/Test/baseResults/glsl.460.subgroupEXT.mesh.out @@ -0,0 +1,1039 @@ +glsl.460.subgroupEXT.mesh +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 64 compilation errors. No code generated. + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +max_vertices = 81 +max_primitives = 32 +output primitive = triangles +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint SubgroupSize) +0:7 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( in uint NumSubgroups) +0:14 'gl_SubgroupID' ( in uint SubgroupID) +0:15 subgroupMemoryBarrierShared ( global void) +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Branch: Return with expression +0:77 'result' ( temp 4-component vector of float) +0:97 Function Definition: main( ( global void) +0:97 Function Parameters: +0:99 Sequence +0:99 Sequence +0:99 move second child to first child ( temp uint) +0:99 'iid' ( temp uint) +0:99 direct index ( temp uint) +0:99 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:99 Constant: +0:99 0 (const int) +0:100 Sequence +0:100 move second child to first child ( temp uint) +0:100 'gid' ( temp uint) +0:100 direct index ( temp uint) +0:100 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:100 Constant: +0:100 0 (const int) +0:101 Sequence +0:101 move second child to first child ( temp uint) +0:101 'vertexCount' ( temp uint) +0:101 Constant: +0:101 81 (const uint) +0:102 Sequence +0:102 move second child to first child ( temp uint) +0:102 'primitiveCount' ( temp uint) +0:102 Constant: +0:102 32 (const uint) +0:103 SetMeshOutputsEXT ( global void) +0:103 'vertexCount' ( temp uint) +0:103 'primitiveCount' ( temp uint) +0:105 move second child to first child ( temp 4-component vector of float) +0:105 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:105 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:105 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:105 'iid' ( temp uint) +0:105 Constant: +0:105 0 (const int) +0:105 Constant: +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:106 move second child to first child ( temp float) +0:106 gl_PointSize: direct index for structure ( out float PointSize) +0:106 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:106 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:106 'iid' ( temp uint) +0:106 Constant: +0:106 1 (const int) +0:106 Constant: +0:106 2.000000 +0:107 move second child to first child ( temp float) +0:107 direct index ( temp float ClipDistance) +0:107 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:107 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:107 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:107 'iid' ( temp uint) +0:107 Constant: +0:107 2 (const int) +0:107 Constant: +0:107 3 (const int) +0:107 Constant: +0:107 3.000000 +0:108 move second child to first child ( temp float) +0:108 direct index ( temp float CullDistance) +0:108 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:108 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:108 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:108 'iid' ( temp uint) +0:108 Constant: +0:108 3 (const int) +0:108 Constant: +0:108 2 (const int) +0:108 Constant: +0:108 4.000000 +0:110 MemoryBarrierShared ( global void) +0:110 Barrier ( global void) +0:112 move second child to first child ( temp 4-component vector of float) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 add ( temp uint) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:112 Constant: +0:112 0 (const int) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 0 (const int) +0:113 move second child to first child ( temp float) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 add ( temp uint) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const uint) +0:113 Constant: +0:113 1 (const int) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const int) +0:114 move second child to first child ( temp float) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 add ( temp uint) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 1 (const uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out unsized 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:115 move second child to first child ( temp float) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 add ( temp uint) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 1 (const uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out unsized 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:117 MemoryBarrierShared ( global void) +0:117 Barrier ( global void) +0:119 move second child to first child ( temp int) +0:119 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:119 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'iid' ( temp uint) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 6 (const int) +0:120 move second child to first child ( temp int) +0:120 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:120 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'iid' ( temp uint) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 7 (const int) +0:121 move second child to first child ( temp int) +0:121 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:121 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'iid' ( temp uint) +0:121 Constant: +0:121 2 (const int) +0:121 Constant: +0:121 8 (const int) +0:122 move second child to first child ( temp bool) +0:122 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:122 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'iid' ( temp uint) +0:122 Constant: +0:122 3 (const int) +0:122 Constant: +0:122 false (const bool) +0:124 MemoryBarrierShared ( global void) +0:124 Barrier ( global void) +0:126 move second child to first child ( temp int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 add ( temp uint) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 0 (const int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 0 (const int) +0:127 move second child to first child ( temp int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 add ( temp uint) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const uint) +0:127 Constant: +0:127 1 (const int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const int) +0:128 move second child to first child ( temp int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 add ( temp uint) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 1 (const uint) +0:128 Constant: +0:128 2 (const int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 2 (const int) +0:129 move second child to first child ( temp bool) +0:129 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:129 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 add ( temp uint) +0:129 'iid' ( temp uint) +0:129 Constant: +0:129 1 (const uint) +0:129 Constant: +0:129 3 (const int) +0:129 Constant: +0:129 false (const bool) +0:131 MemoryBarrierShared ( global void) +0:131 Barrier ( global void) +0:134 move second child to first child ( temp 3-component vector of uint) +0:134 direct index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 Constant: +0:134 0 (const int) +0:134 Constant: +0:134 1 (const uint) +0:134 1 (const uint) +0:134 1 (const uint) +0:135 move second child to first child ( temp 3-component vector of uint) +0:135 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 subtract ( temp uint) +0:135 'primitiveCount' ( temp uint) +0:135 Constant: +0:135 1 (const uint) +0:135 Constant: +0:135 2 (const uint) +0:135 2 (const uint) +0:135 2 (const uint) +0:136 move second child to first child ( temp 3-component vector of uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gid' ( temp uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 subtract ( temp uint) +0:136 'gid' ( temp uint) +0:136 Constant: +0:136 1 (const uint) +0:139 MemoryBarrierShared ( global void) +0:139 Barrier ( global void) +0:143 Function Definition: basic_works( ( global void) +0:143 Function Parameters: +0:145 Sequence +0:145 'gl_SubgroupSize' ( in uint SubgroupSize) +0:146 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:147 subgroupBarrier ( global void) +0:148 subgroupMemoryBarrier ( global void) +0:149 subgroupMemoryBarrierBuffer ( global void) +0:150 subgroupMemoryBarrierImage ( global void) +0:151 subgroupElect ( global bool) +0:152 'gl_NumSubgroups' ( in uint NumSubgroups) +0:153 'gl_SubgroupID' ( in uint SubgroupID) +0:154 subgroupMemoryBarrierShared ( global void) +0:158 Function Definition: ballot_works(vf4; ( global void) +0:158 Function Parameters: +0:158 'f4' ( in 4-component vector of float) +0:159 Sequence +0:159 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:160 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:161 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:162 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:163 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:164 subgroupBroadcast ( global 4-component vector of float) +0:164 'f4' ( in 4-component vector of float) +0:164 Constant: +0:164 0 (const uint) +0:165 subgroupBroadcastFirst ( global 4-component vector of float) +0:165 'f4' ( in 4-component vector of float) +0:166 Sequence +0:166 move second child to first child ( temp 4-component vector of uint) +0:166 'ballot' ( temp 4-component vector of uint) +0:166 subgroupBallot ( global 4-component vector of uint) +0:166 Constant: +0:166 false (const bool) +0:167 subgroupInverseBallot ( global bool) +0:167 Constant: +0:167 1 (const uint) +0:167 1 (const uint) +0:167 1 (const uint) +0:167 1 (const uint) +0:168 subgroupBallotBitExtract ( global bool) +0:168 'ballot' ( temp 4-component vector of uint) +0:168 Constant: +0:168 0 (const uint) +0:169 subgroupBallotBitCount ( global uint) +0:169 'ballot' ( temp 4-component vector of uint) +0:170 subgroupBallotInclusiveBitCount ( global uint) +0:170 'ballot' ( temp 4-component vector of uint) +0:171 subgroupBallotExclusiveBitCount ( global uint) +0:171 'ballot' ( temp 4-component vector of uint) +0:172 subgroupBallotFindLSB ( global uint) +0:172 'ballot' ( temp 4-component vector of uint) +0:173 subgroupBallotFindMSB ( global uint) +0:173 'ballot' ( temp 4-component vector of uint) +0:177 Function Definition: vote_works(vf4; ( global void) +0:177 Function Parameters: +0:177 'f4' ( in 4-component vector of float) +0:179 Sequence +0:179 subgroupAll ( global bool) +0:179 Constant: +0:179 true (const bool) +0:180 subgroupAny ( global bool) +0:180 Constant: +0:180 false (const bool) +0:181 subgroupAllEqual ( global bool) +0:181 'f4' ( in 4-component vector of float) +0:186 Function Definition: shuffle_works(vf4; ( global void) +0:186 Function Parameters: +0:186 'f4' ( in 4-component vector of float) +0:188 Sequence +0:188 subgroupShuffle ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:188 Constant: +0:188 0 (const uint) +0:189 subgroupShuffleXor ( global 4-component vector of float) +0:189 'f4' ( in 4-component vector of float) +0:189 Constant: +0:189 1 (const uint) +0:190 subgroupShuffleUp ( global 4-component vector of float) +0:190 'f4' ( in 4-component vector of float) +0:190 Constant: +0:190 1 (const uint) +0:191 subgroupShuffleDown ( global 4-component vector of float) +0:191 'f4' ( in 4-component vector of float) +0:191 Constant: +0:191 1 (const uint) +0:195 Function Definition: arith_works(vf4; ( global void) +0:195 Function Parameters: +0:195 'f4' ( in 4-component vector of float) +0:? Sequence +0:198 subgroupAdd ( global 4-component vector of float) +0:198 'f4' ( in 4-component vector of float) +0:199 subgroupMul ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:200 subgroupMin ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:201 subgroupMax ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupAnd ( global 4-component vector of uint) +0:202 'ballot' ( temp 4-component vector of uint) +0:203 subgroupOr ( global 4-component vector of uint) +0:203 'ballot' ( temp 4-component vector of uint) +0:204 subgroupXor ( global 4-component vector of uint) +0:204 'ballot' ( temp 4-component vector of uint) +0:205 subgroupInclusiveAdd ( global 4-component vector of float) +0:205 'f4' ( in 4-component vector of float) +0:206 subgroupInclusiveMul ( global 4-component vector of float) +0:206 'f4' ( in 4-component vector of float) +0:207 subgroupInclusiveMin ( global 4-component vector of float) +0:207 'f4' ( in 4-component vector of float) +0:208 subgroupInclusiveMax ( global 4-component vector of float) +0:208 'f4' ( in 4-component vector of float) +0:209 subgroupInclusiveAnd ( global 4-component vector of uint) +0:209 'ballot' ( temp 4-component vector of uint) +0:210 subgroupInclusiveOr ( global 4-component vector of uint) +0:210 'ballot' ( temp 4-component vector of uint) +0:211 subgroupInclusiveXor ( global 4-component vector of uint) +0:211 'ballot' ( temp 4-component vector of uint) +0:212 subgroupExclusiveAdd ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:213 subgroupExclusiveMul ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:214 subgroupExclusiveMin ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:215 subgroupExclusiveMax ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:216 subgroupExclusiveAnd ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:217 subgroupExclusiveOr ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:218 subgroupExclusiveXor ( global 4-component vector of uint) +0:218 'ballot' ( temp 4-component vector of uint) +0:222 Function Definition: clustered_works(vf4; ( global void) +0:222 Function Parameters: +0:222 'f4' ( in 4-component vector of float) +0:224 Sequence +0:224 Sequence +0:224 move second child to first child ( temp 4-component vector of uint) +0:224 'ballot' ( temp 4-component vector of uint) +0:224 Constant: +0:224 85 (const uint) +0:224 0 (const uint) +0:224 0 (const uint) +0:224 0 (const uint) +0:225 subgroupClusteredAdd ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:225 Constant: +0:225 2 (const uint) +0:226 subgroupClusteredMul ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:226 Constant: +0:226 2 (const uint) +0:227 subgroupClusteredMin ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:227 Constant: +0:227 2 (const uint) +0:228 subgroupClusteredMax ( global 4-component vector of float) +0:228 'f4' ( in 4-component vector of float) +0:228 Constant: +0:228 2 (const uint) +0:229 subgroupClusteredAnd ( global 4-component vector of uint) +0:229 'ballot' ( temp 4-component vector of uint) +0:229 Constant: +0:229 2 (const uint) +0:230 subgroupClusteredOr ( global 4-component vector of uint) +0:230 'ballot' ( temp 4-component vector of uint) +0:230 Constant: +0:230 2 (const uint) +0:231 subgroupClusteredXor ( global 4-component vector of uint) +0:231 'ballot' ( temp 4-component vector of uint) +0:231 Constant: +0:231 2 (const uint) +0:235 Function Definition: quad_works(vf4; ( global void) +0:235 Function Parameters: +0:235 'f4' ( in 4-component vector of float) +0:237 Sequence +0:237 subgroupQuadBroadcast ( global 4-component vector of float) +0:237 'f4' ( in 4-component vector of float) +0:237 Constant: +0:237 0 (const uint) +0:238 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:238 'f4' ( in 4-component vector of float) +0:239 subgroupQuadSwapVertical ( global 4-component vector of float) +0:239 'f4' ( in 4-component vector of float) +0:240 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:240 'f4' ( in 4-component vector of float) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out unsized 4-element array of float ClipDistance gl_ClipDistance, out unsized 3-element array of float CullDistance gl_CullDistance}) +0:? 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:? 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) + + +Linked mesh stage: + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +max_vertices = 81 +max_primitives = 32 +output primitive = triangles +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:97 Function Definition: main( ( global void) +0:97 Function Parameters: +0:99 Sequence +0:99 Sequence +0:99 move second child to first child ( temp uint) +0:99 'iid' ( temp uint) +0:99 direct index ( temp uint) +0:99 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:99 Constant: +0:99 0 (const int) +0:100 Sequence +0:100 move second child to first child ( temp uint) +0:100 'gid' ( temp uint) +0:100 direct index ( temp uint) +0:100 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:100 Constant: +0:100 0 (const int) +0:101 Sequence +0:101 move second child to first child ( temp uint) +0:101 'vertexCount' ( temp uint) +0:101 Constant: +0:101 81 (const uint) +0:102 Sequence +0:102 move second child to first child ( temp uint) +0:102 'primitiveCount' ( temp uint) +0:102 Constant: +0:102 32 (const uint) +0:103 SetMeshOutputsEXT ( global void) +0:103 'vertexCount' ( temp uint) +0:103 'primitiveCount' ( temp uint) +0:105 move second child to first child ( temp 4-component vector of float) +0:105 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:105 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:105 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:105 'iid' ( temp uint) +0:105 Constant: +0:105 0 (const int) +0:105 Constant: +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:105 1.000000 +0:106 move second child to first child ( temp float) +0:106 gl_PointSize: direct index for structure ( out float PointSize) +0:106 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:106 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:106 'iid' ( temp uint) +0:106 Constant: +0:106 1 (const int) +0:106 Constant: +0:106 2.000000 +0:107 move second child to first child ( temp float) +0:107 direct index ( temp float ClipDistance) +0:107 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:107 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:107 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:107 'iid' ( temp uint) +0:107 Constant: +0:107 2 (const int) +0:107 Constant: +0:107 3 (const int) +0:107 Constant: +0:107 3.000000 +0:108 move second child to first child ( temp float) +0:108 direct index ( temp float CullDistance) +0:108 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:108 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:108 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:108 'iid' ( temp uint) +0:108 Constant: +0:108 3 (const int) +0:108 Constant: +0:108 2 (const int) +0:108 Constant: +0:108 4.000000 +0:110 MemoryBarrierShared ( global void) +0:110 Barrier ( global void) +0:112 move second child to first child ( temp 4-component vector of float) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 add ( temp uint) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:112 Constant: +0:112 0 (const int) +0:112 gl_Position: direct index for structure ( out 4-component vector of float Position) +0:112 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:112 'iid' ( temp uint) +0:112 Constant: +0:112 0 (const int) +0:113 move second child to first child ( temp float) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 add ( temp uint) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const uint) +0:113 Constant: +0:113 1 (const int) +0:113 gl_PointSize: direct index for structure ( out float PointSize) +0:113 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:113 'iid' ( temp uint) +0:113 Constant: +0:113 1 (const int) +0:114 move second child to first child ( temp float) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 add ( temp uint) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 1 (const uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:114 direct index ( temp float ClipDistance) +0:114 gl_ClipDistance: direct index for structure ( out 4-element array of float ClipDistance) +0:114 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:114 'iid' ( temp uint) +0:114 Constant: +0:114 2 (const int) +0:114 Constant: +0:114 3 (const int) +0:115 move second child to first child ( temp float) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 add ( temp uint) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 1 (const uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:115 direct index ( temp float CullDistance) +0:115 gl_CullDistance: direct index for structure ( out 3-element array of float CullDistance) +0:115 indirect index ( temp block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:115 'iid' ( temp uint) +0:115 Constant: +0:115 3 (const int) +0:115 Constant: +0:115 2 (const int) +0:117 MemoryBarrierShared ( global void) +0:117 Barrier ( global void) +0:119 move second child to first child ( temp int) +0:119 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:119 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:119 'iid' ( temp uint) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 6 (const int) +0:120 move second child to first child ( temp int) +0:120 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:120 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:120 'iid' ( temp uint) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 7 (const int) +0:121 move second child to first child ( temp int) +0:121 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:121 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:121 'iid' ( temp uint) +0:121 Constant: +0:121 2 (const int) +0:121 Constant: +0:121 8 (const int) +0:122 move second child to first child ( temp bool) +0:122 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:122 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:122 'iid' ( temp uint) +0:122 Constant: +0:122 3 (const int) +0:122 Constant: +0:122 false (const bool) +0:124 MemoryBarrierShared ( global void) +0:124 Barrier ( global void) +0:126 move second child to first child ( temp int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 add ( temp uint) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 0 (const int) +0:126 gl_PrimitiveID: direct index for structure ( perprimitiveNV out int PrimitiveID) +0:126 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:126 'iid' ( temp uint) +0:126 Constant: +0:126 0 (const int) +0:127 move second child to first child ( temp int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 add ( temp uint) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const uint) +0:127 Constant: +0:127 1 (const int) +0:127 gl_Layer: direct index for structure ( perprimitiveNV out int Layer) +0:127 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:127 'iid' ( temp uint) +0:127 Constant: +0:127 1 (const int) +0:128 move second child to first child ( temp int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 add ( temp uint) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 1 (const uint) +0:128 Constant: +0:128 2 (const int) +0:128 gl_ViewportIndex: direct index for structure ( perprimitiveNV out int ViewportIndex) +0:128 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:128 'iid' ( temp uint) +0:128 Constant: +0:128 2 (const int) +0:129 move second child to first child ( temp bool) +0:129 gl_CullPrimitiveEXT: direct index for structure ( perprimitiveNV out bool CullPrimitiveEXT) +0:129 indirect index ( perprimitiveNV temp block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:129 add ( temp uint) +0:129 'iid' ( temp uint) +0:129 Constant: +0:129 1 (const uint) +0:129 Constant: +0:129 3 (const int) +0:129 Constant: +0:129 false (const bool) +0:131 MemoryBarrierShared ( global void) +0:131 Barrier ( global void) +0:134 move second child to first child ( temp 3-component vector of uint) +0:134 direct index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:134 Constant: +0:134 0 (const int) +0:134 Constant: +0:134 1 (const uint) +0:134 1 (const uint) +0:134 1 (const uint) +0:135 move second child to first child ( temp 3-component vector of uint) +0:135 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:135 subtract ( temp uint) +0:135 'primitiveCount' ( temp uint) +0:135 Constant: +0:135 1 (const uint) +0:135 Constant: +0:135 2 (const uint) +0:135 2 (const uint) +0:135 2 (const uint) +0:136 move second child to first child ( temp 3-component vector of uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gid' ( temp uint) +0:136 indirect index ( temp 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) +0:136 subtract ( temp uint) +0:136 'gid' ( temp uint) +0:136 Constant: +0:136 1 (const uint) +0:139 MemoryBarrierShared ( global void) +0:139 Barrier ( global void) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'gl_MeshVerticesEXT' ( out 81-element array of block{ out 4-component vector of float Position gl_Position, out float PointSize gl_PointSize, out 4-element array of float ClipDistance gl_ClipDistance, out 3-element array of float CullDistance gl_CullDistance}) +0:? 'gl_MeshPrimitivesEXT' ( perprimitiveNV out 32-element array of block{ perprimitiveNV out int PrimitiveID gl_PrimitiveID, perprimitiveNV out int Layer gl_Layer, perprimitiveNV out int ViewportIndex gl_ViewportIndex, perprimitiveNV out bool CullPrimitiveEXT gl_CullPrimitiveEXT, perprimitiveNV out int PrimitiveShadingRateKHR gl_PrimitiveShadingRateEXT}) +0:? 'gl_PrimitiveTriangleIndicesEXT' ( out 96-element array of 3-component vector of uint PrimitiveTriangleIndicesEXT) + diff --git a/Test/baseResults/glsl.460.subgroupEXT.task.out b/Test/baseResults/glsl.460.subgroupEXT.task.out new file mode 100644 index 0000000000..c756f38adc --- /dev/null +++ b/Test/baseResults/glsl.460.subgroupEXT.task.out @@ -0,0 +1,707 @@ +glsl.460.subgroupEXT.task +ERROR: 0:6: 'gl_SubgroupSize' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:7: 'gl_SubgroupInvocationID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:8: 'subgroupBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:9: 'subgroupMemoryBarrier' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:10: 'subgroupMemoryBarrierBuffer' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:11: 'subgroupMemoryBarrierImage' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:12: 'subgroupElect' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:13: 'gl_NumSubgroups' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:14: 'gl_SubgroupID' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:15: 'subgroupMemoryBarrierShared' : required extension not requested: GL_KHR_shader_subgroup_basic +ERROR: 0:17: 'subgroupAll' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:18: 'subgroupAny' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:19: 'subgroupAllEqual' : required extension not requested: GL_KHR_shader_subgroup_vote +ERROR: 0:21: 'gl_SubgroupEqMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:22: 'gl_SubgroupGeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:23: 'gl_SubgroupGtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:24: 'gl_SubgroupLeMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:25: 'gl_SubgroupLtMask' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:26: 'subgroupBroadcast' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:27: 'subgroupBroadcastFirst' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:28: 'subgroupBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:29: 'subgroupInverseBallot' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:30: 'subgroupBallotBitExtract' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:31: 'subgroupBallotBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:32: 'subgroupBallotInclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:33: 'subgroupBallotExclusiveBitCount' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:34: 'subgroupBallotFindLSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:35: 'subgroupBallotFindMSB' : required extension not requested: GL_KHR_shader_subgroup_ballot +ERROR: 0:37: 'subgroupShuffle' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:38: 'subgroupShuffleXor' : required extension not requested: GL_KHR_shader_subgroup_shuffle +ERROR: 0:39: 'subgroupShuffleUp' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:40: 'subgroupShuffleDown' : required extension not requested: GL_KHR_shader_subgroup_shuffle_relative +ERROR: 0:42: 'subgroupAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:43: 'subgroupMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:44: 'subgroupMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:45: 'subgroupMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:46: 'subgroupAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:47: 'subgroupOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:48: 'subgroupXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:49: 'subgroupInclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:50: 'subgroupInclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:51: 'subgroupInclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:52: 'subgroupInclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:53: 'subgroupInclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:54: 'subgroupInclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:55: 'subgroupInclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:56: 'subgroupExclusiveAdd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:57: 'subgroupExclusiveMul' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:58: 'subgroupExclusiveMin' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:59: 'subgroupExclusiveMax' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:60: 'subgroupExclusiveAnd' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:61: 'subgroupExclusiveOr' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:62: 'subgroupExclusiveXor' : required extension not requested: GL_KHR_shader_subgroup_arithmetic +ERROR: 0:64: 'subgroupClusteredAdd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:65: 'subgroupClusteredMul' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:66: 'subgroupClusteredMin' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:67: 'subgroupClusteredMax' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:68: 'subgroupClusteredAnd' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:69: 'subgroupClusteredOr' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:70: 'subgroupClusteredXor' : required extension not requested: GL_KHR_shader_subgroup_clustered +ERROR: 0:72: 'subgroupQuadBroadcast' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:73: 'subgroupQuadSwapHorizontal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:74: 'subgroupQuadSwapVertical' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 0:75: 'subgroupQuadSwapDiagonal' : required extension not requested: GL_KHR_shader_subgroup_quad +ERROR: 64 compilation errors. No code generated. + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:3 Function Definition: undeclared_errors(vf4; ( global 4-component vector of float) +0:3 Function Parameters: +0:3 'f4' ( in 4-component vector of float) +0:? Sequence +0:6 'gl_SubgroupSize' ( in uint SubgroupSize) +0:7 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:8 subgroupBarrier ( global void) +0:9 subgroupMemoryBarrier ( global void) +0:10 subgroupMemoryBarrierBuffer ( global void) +0:11 subgroupMemoryBarrierImage ( global void) +0:12 subgroupElect ( global bool) +0:13 'gl_NumSubgroups' ( in uint NumSubgroups) +0:14 'gl_SubgroupID' ( in uint SubgroupID) +0:15 subgroupMemoryBarrierShared ( global void) +0:17 subgroupAll ( global bool) +0:17 Constant: +0:17 true (const bool) +0:18 subgroupAny ( global bool) +0:18 Constant: +0:18 false (const bool) +0:19 subgroupAllEqual ( global bool) +0:19 'f4' ( in 4-component vector of float) +0:21 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:22 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:23 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:24 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:25 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:26 subgroupBroadcast ( global 4-component vector of float) +0:26 'f4' ( in 4-component vector of float) +0:26 Constant: +0:26 0 (const uint) +0:27 subgroupBroadcastFirst ( global 4-component vector of float) +0:27 'f4' ( in 4-component vector of float) +0:28 Sequence +0:28 move second child to first child ( temp 4-component vector of uint) +0:28 'ballot' ( temp 4-component vector of uint) +0:28 subgroupBallot ( global 4-component vector of uint) +0:28 Constant: +0:28 false (const bool) +0:29 subgroupInverseBallot ( global bool) +0:29 Constant: +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:29 1 (const uint) +0:30 subgroupBallotBitExtract ( global bool) +0:30 'ballot' ( temp 4-component vector of uint) +0:30 Constant: +0:30 0 (const uint) +0:31 subgroupBallotBitCount ( global uint) +0:31 'ballot' ( temp 4-component vector of uint) +0:32 subgroupBallotInclusiveBitCount ( global uint) +0:32 'ballot' ( temp 4-component vector of uint) +0:33 subgroupBallotExclusiveBitCount ( global uint) +0:33 'ballot' ( temp 4-component vector of uint) +0:34 subgroupBallotFindLSB ( global uint) +0:34 'ballot' ( temp 4-component vector of uint) +0:35 subgroupBallotFindMSB ( global uint) +0:35 'ballot' ( temp 4-component vector of uint) +0:37 subgroupShuffle ( global 4-component vector of float) +0:37 'f4' ( in 4-component vector of float) +0:37 Constant: +0:37 0 (const uint) +0:38 subgroupShuffleXor ( global 4-component vector of float) +0:38 'f4' ( in 4-component vector of float) +0:38 Constant: +0:38 1 (const uint) +0:39 subgroupShuffleUp ( global 4-component vector of float) +0:39 'f4' ( in 4-component vector of float) +0:39 Constant: +0:39 1 (const uint) +0:40 subgroupShuffleDown ( global 4-component vector of float) +0:40 'f4' ( in 4-component vector of float) +0:40 Constant: +0:40 1 (const uint) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'result' ( temp 4-component vector of float) +0:42 subgroupAdd ( global 4-component vector of float) +0:42 'f4' ( in 4-component vector of float) +0:43 subgroupMul ( global 4-component vector of float) +0:43 'f4' ( in 4-component vector of float) +0:44 subgroupMin ( global 4-component vector of float) +0:44 'f4' ( in 4-component vector of float) +0:45 subgroupMax ( global 4-component vector of float) +0:45 'f4' ( in 4-component vector of float) +0:46 subgroupAnd ( global 4-component vector of uint) +0:46 'ballot' ( temp 4-component vector of uint) +0:47 subgroupOr ( global 4-component vector of uint) +0:47 'ballot' ( temp 4-component vector of uint) +0:48 subgroupXor ( global 4-component vector of uint) +0:48 'ballot' ( temp 4-component vector of uint) +0:49 subgroupInclusiveAdd ( global 4-component vector of float) +0:49 'f4' ( in 4-component vector of float) +0:50 subgroupInclusiveMul ( global 4-component vector of float) +0:50 'f4' ( in 4-component vector of float) +0:51 subgroupInclusiveMin ( global 4-component vector of float) +0:51 'f4' ( in 4-component vector of float) +0:52 subgroupInclusiveMax ( global 4-component vector of float) +0:52 'f4' ( in 4-component vector of float) +0:53 subgroupInclusiveAnd ( global 4-component vector of uint) +0:53 'ballot' ( temp 4-component vector of uint) +0:54 subgroupInclusiveOr ( global 4-component vector of uint) +0:54 'ballot' ( temp 4-component vector of uint) +0:55 subgroupInclusiveXor ( global 4-component vector of uint) +0:55 'ballot' ( temp 4-component vector of uint) +0:56 subgroupExclusiveAdd ( global 4-component vector of float) +0:56 'f4' ( in 4-component vector of float) +0:57 subgroupExclusiveMul ( global 4-component vector of float) +0:57 'f4' ( in 4-component vector of float) +0:58 subgroupExclusiveMin ( global 4-component vector of float) +0:58 'f4' ( in 4-component vector of float) +0:59 subgroupExclusiveMax ( global 4-component vector of float) +0:59 'f4' ( in 4-component vector of float) +0:60 subgroupExclusiveAnd ( global 4-component vector of uint) +0:60 'ballot' ( temp 4-component vector of uint) +0:61 subgroupExclusiveOr ( global 4-component vector of uint) +0:61 'ballot' ( temp 4-component vector of uint) +0:62 subgroupExclusiveXor ( global 4-component vector of uint) +0:62 'ballot' ( temp 4-component vector of uint) +0:64 subgroupClusteredAdd ( global 4-component vector of float) +0:64 'f4' ( in 4-component vector of float) +0:64 Constant: +0:64 2 (const uint) +0:65 subgroupClusteredMul ( global 4-component vector of float) +0:65 'f4' ( in 4-component vector of float) +0:65 Constant: +0:65 2 (const uint) +0:66 subgroupClusteredMin ( global 4-component vector of float) +0:66 'f4' ( in 4-component vector of float) +0:66 Constant: +0:66 2 (const uint) +0:67 subgroupClusteredMax ( global 4-component vector of float) +0:67 'f4' ( in 4-component vector of float) +0:67 Constant: +0:67 2 (const uint) +0:68 subgroupClusteredAnd ( global 4-component vector of uint) +0:68 'ballot' ( temp 4-component vector of uint) +0:68 Constant: +0:68 2 (const uint) +0:69 subgroupClusteredOr ( global 4-component vector of uint) +0:69 'ballot' ( temp 4-component vector of uint) +0:69 Constant: +0:69 2 (const uint) +0:70 subgroupClusteredXor ( global 4-component vector of uint) +0:70 'ballot' ( temp 4-component vector of uint) +0:70 Constant: +0:70 2 (const uint) +0:72 subgroupQuadBroadcast ( global 4-component vector of float) +0:72 'f4' ( in 4-component vector of float) +0:72 Constant: +0:72 0 (const uint) +0:73 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:73 'f4' ( in 4-component vector of float) +0:74 subgroupQuadSwapVertical ( global 4-component vector of float) +0:74 'f4' ( in 4-component vector of float) +0:75 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:75 'f4' ( in 4-component vector of float) +0:77 Branch: Return with expression +0:77 'result' ( temp 4-component vector of float) +0:102 Function Definition: main( ( global void) +0:102 Function Parameters: +0:104 Sequence +0:104 Sequence +0:104 move second child to first child ( temp uint) +0:104 'iid' ( temp uint) +0:104 direct index ( temp uint) +0:104 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:104 Constant: +0:104 0 (const int) +0:105 Sequence +0:105 move second child to first child ( temp uint) +0:105 'gid' ( temp uint) +0:105 direct index ( temp uint) +0:105 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:105 Constant: +0:105 0 (const int) +0:108 Sequence +0:108 Sequence +0:108 move second child to first child ( temp uint) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 0 (const uint) +0:108 Loop with condition tested first +0:108 Loop Condition +0:108 Compare Less Than ( temp bool) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 10 (const uint) +0:108 Loop Body +0:109 Sequence +0:109 move second child to first child ( temp 4-component vector of float) +0:109 indirect index ( temp 4-component vector of float) +0:109 'mem' ( shared 10-element array of 4-component vector of float) +0:109 'i' ( temp uint) +0:109 Construct vec4 ( temp 4-component vector of float) +0:109 Convert uint to float ( temp float) +0:109 add ( temp uint) +0:109 'i' ( temp uint) +0:109 uni_value: direct index for structure (layout( column_major shared) uniform uint) +0:109 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:109 Constant: +0:109 0 (const uint) +0:108 Loop Terminal Expression +0:108 Pre-Increment ( temp uint) +0:108 'i' ( temp uint) +0:111 imageStore ( global void) +0:111 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:111 Construct ivec2 ( temp 2-component vector of int) +0:111 Convert uint to int ( temp int) +0:111 'iid' ( temp uint) +0:111 indirect index ( temp 4-component vector of float) +0:111 'mem' ( shared 10-element array of 4-component vector of float) +0:111 'gid' ( temp uint) +0:112 imageStore ( global void) +0:112 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:112 Construct ivec2 ( temp 2-component vector of int) +0:112 Convert uint to int ( temp int) +0:112 'iid' ( temp uint) +0:112 indirect index ( temp 4-component vector of float) +0:112 'mem' ( shared 10-element array of 4-component vector of float) +0:112 add ( temp uint) +0:112 'gid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:114 MemoryBarrierShared ( global void) +0:114 Barrier ( global void) +0:118 move second child to first child ( temp 2-component vector of float) +0:118 dummy: direct index for structure ( global 2-component vector of float) +0:118 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:118 Constant: +0:118 0 (const int) +0:118 Constant: +0:118 30.000000 +0:118 31.000000 +0:119 move second child to first child ( temp 2-component vector of float) +0:119 direct index ( temp 2-component vector of float) +0:119 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:119 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:119 Constant: +0:119 1 (const int) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 32.000000 +0:119 33.000000 +0:120 move second child to first child ( temp 2-component vector of float) +0:120 direct index ( temp 2-component vector of float) +0:120 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:120 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 34.000000 +0:120 35.000000 +0:121 move second child to first child ( temp 2-component vector of float) +0:121 direct index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 indirect index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 mod ( temp uint) +0:121 'gid' ( temp uint) +0:121 Constant: +0:121 2 (const uint) +0:123 MemoryBarrierShared ( global void) +0:123 Barrier ( global void) +0:126 EmitMeshTasksEXT ( global void) +0:126 Constant: +0:126 3 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:130 Function Definition: basic_works( ( global void) +0:130 Function Parameters: +0:132 Sequence +0:132 'gl_SubgroupSize' ( in uint SubgroupSize) +0:133 'gl_SubgroupInvocationID' ( in uint SubgroupInvocationID) +0:134 subgroupBarrier ( global void) +0:135 subgroupMemoryBarrier ( global void) +0:136 subgroupMemoryBarrierBuffer ( global void) +0:137 subgroupMemoryBarrierImage ( global void) +0:138 subgroupElect ( global bool) +0:139 'gl_NumSubgroups' ( in uint NumSubgroups) +0:140 'gl_SubgroupID' ( in uint SubgroupID) +0:141 subgroupMemoryBarrierShared ( global void) +0:145 Function Definition: ballot_works(vf4; ( global void) +0:145 Function Parameters: +0:145 'f4' ( in 4-component vector of float) +0:146 Sequence +0:146 'gl_SubgroupEqMask' ( in 4-component vector of uint SubgroupEqMask) +0:147 'gl_SubgroupGeMask' ( in 4-component vector of uint SubgroupGeMask) +0:148 'gl_SubgroupGtMask' ( in 4-component vector of uint SubgroupGtMask) +0:149 'gl_SubgroupLeMask' ( in 4-component vector of uint SubgroupLeMask) +0:150 'gl_SubgroupLtMask' ( in 4-component vector of uint SubgroupLtMask) +0:151 subgroupBroadcast ( global 4-component vector of float) +0:151 'f4' ( in 4-component vector of float) +0:151 Constant: +0:151 0 (const uint) +0:152 subgroupBroadcastFirst ( global 4-component vector of float) +0:152 'f4' ( in 4-component vector of float) +0:153 Sequence +0:153 move second child to first child ( temp 4-component vector of uint) +0:153 'ballot' ( temp 4-component vector of uint) +0:153 subgroupBallot ( global 4-component vector of uint) +0:153 Constant: +0:153 false (const bool) +0:154 subgroupInverseBallot ( global bool) +0:154 Constant: +0:154 1 (const uint) +0:154 1 (const uint) +0:154 1 (const uint) +0:154 1 (const uint) +0:155 subgroupBallotBitExtract ( global bool) +0:155 'ballot' ( temp 4-component vector of uint) +0:155 Constant: +0:155 0 (const uint) +0:156 subgroupBallotBitCount ( global uint) +0:156 'ballot' ( temp 4-component vector of uint) +0:157 subgroupBallotInclusiveBitCount ( global uint) +0:157 'ballot' ( temp 4-component vector of uint) +0:158 subgroupBallotExclusiveBitCount ( global uint) +0:158 'ballot' ( temp 4-component vector of uint) +0:159 subgroupBallotFindLSB ( global uint) +0:159 'ballot' ( temp 4-component vector of uint) +0:160 subgroupBallotFindMSB ( global uint) +0:160 'ballot' ( temp 4-component vector of uint) +0:164 Function Definition: vote_works(vf4; ( global void) +0:164 Function Parameters: +0:164 'f4' ( in 4-component vector of float) +0:166 Sequence +0:166 subgroupAll ( global bool) +0:166 Constant: +0:166 true (const bool) +0:167 subgroupAny ( global bool) +0:167 Constant: +0:167 false (const bool) +0:168 subgroupAllEqual ( global bool) +0:168 'f4' ( in 4-component vector of float) +0:173 Function Definition: shuffle_works(vf4; ( global void) +0:173 Function Parameters: +0:173 'f4' ( in 4-component vector of float) +0:175 Sequence +0:175 subgroupShuffle ( global 4-component vector of float) +0:175 'f4' ( in 4-component vector of float) +0:175 Constant: +0:175 0 (const uint) +0:176 subgroupShuffleXor ( global 4-component vector of float) +0:176 'f4' ( in 4-component vector of float) +0:176 Constant: +0:176 1 (const uint) +0:177 subgroupShuffleUp ( global 4-component vector of float) +0:177 'f4' ( in 4-component vector of float) +0:177 Constant: +0:177 1 (const uint) +0:178 subgroupShuffleDown ( global 4-component vector of float) +0:178 'f4' ( in 4-component vector of float) +0:178 Constant: +0:178 1 (const uint) +0:182 Function Definition: arith_works(vf4; ( global void) +0:182 Function Parameters: +0:182 'f4' ( in 4-component vector of float) +0:? Sequence +0:185 subgroupAdd ( global 4-component vector of float) +0:185 'f4' ( in 4-component vector of float) +0:186 subgroupMul ( global 4-component vector of float) +0:186 'f4' ( in 4-component vector of float) +0:187 subgroupMin ( global 4-component vector of float) +0:187 'f4' ( in 4-component vector of float) +0:188 subgroupMax ( global 4-component vector of float) +0:188 'f4' ( in 4-component vector of float) +0:189 subgroupAnd ( global 4-component vector of uint) +0:189 'ballot' ( temp 4-component vector of uint) +0:190 subgroupOr ( global 4-component vector of uint) +0:190 'ballot' ( temp 4-component vector of uint) +0:191 subgroupXor ( global 4-component vector of uint) +0:191 'ballot' ( temp 4-component vector of uint) +0:192 subgroupInclusiveAdd ( global 4-component vector of float) +0:192 'f4' ( in 4-component vector of float) +0:193 subgroupInclusiveMul ( global 4-component vector of float) +0:193 'f4' ( in 4-component vector of float) +0:194 subgroupInclusiveMin ( global 4-component vector of float) +0:194 'f4' ( in 4-component vector of float) +0:195 subgroupInclusiveMax ( global 4-component vector of float) +0:195 'f4' ( in 4-component vector of float) +0:196 subgroupInclusiveAnd ( global 4-component vector of uint) +0:196 'ballot' ( temp 4-component vector of uint) +0:197 subgroupInclusiveOr ( global 4-component vector of uint) +0:197 'ballot' ( temp 4-component vector of uint) +0:198 subgroupInclusiveXor ( global 4-component vector of uint) +0:198 'ballot' ( temp 4-component vector of uint) +0:199 subgroupExclusiveAdd ( global 4-component vector of float) +0:199 'f4' ( in 4-component vector of float) +0:200 subgroupExclusiveMul ( global 4-component vector of float) +0:200 'f4' ( in 4-component vector of float) +0:201 subgroupExclusiveMin ( global 4-component vector of float) +0:201 'f4' ( in 4-component vector of float) +0:202 subgroupExclusiveMax ( global 4-component vector of float) +0:202 'f4' ( in 4-component vector of float) +0:203 subgroupExclusiveAnd ( global 4-component vector of uint) +0:203 'ballot' ( temp 4-component vector of uint) +0:204 subgroupExclusiveOr ( global 4-component vector of uint) +0:204 'ballot' ( temp 4-component vector of uint) +0:205 subgroupExclusiveXor ( global 4-component vector of uint) +0:205 'ballot' ( temp 4-component vector of uint) +0:209 Function Definition: clustered_works(vf4; ( global void) +0:209 Function Parameters: +0:209 'f4' ( in 4-component vector of float) +0:211 Sequence +0:211 Sequence +0:211 move second child to first child ( temp 4-component vector of uint) +0:211 'ballot' ( temp 4-component vector of uint) +0:211 Constant: +0:211 85 (const uint) +0:211 0 (const uint) +0:211 0 (const uint) +0:211 0 (const uint) +0:212 subgroupClusteredAdd ( global 4-component vector of float) +0:212 'f4' ( in 4-component vector of float) +0:212 Constant: +0:212 2 (const uint) +0:213 subgroupClusteredMul ( global 4-component vector of float) +0:213 'f4' ( in 4-component vector of float) +0:213 Constant: +0:213 2 (const uint) +0:214 subgroupClusteredMin ( global 4-component vector of float) +0:214 'f4' ( in 4-component vector of float) +0:214 Constant: +0:214 2 (const uint) +0:215 subgroupClusteredMax ( global 4-component vector of float) +0:215 'f4' ( in 4-component vector of float) +0:215 Constant: +0:215 2 (const uint) +0:216 subgroupClusteredAnd ( global 4-component vector of uint) +0:216 'ballot' ( temp 4-component vector of uint) +0:216 Constant: +0:216 2 (const uint) +0:217 subgroupClusteredOr ( global 4-component vector of uint) +0:217 'ballot' ( temp 4-component vector of uint) +0:217 Constant: +0:217 2 (const uint) +0:218 subgroupClusteredXor ( global 4-component vector of uint) +0:218 'ballot' ( temp 4-component vector of uint) +0:218 Constant: +0:218 2 (const uint) +0:222 Function Definition: quad_works(vf4; ( global void) +0:222 Function Parameters: +0:222 'f4' ( in 4-component vector of float) +0:224 Sequence +0:224 subgroupQuadBroadcast ( global 4-component vector of float) +0:224 'f4' ( in 4-component vector of float) +0:224 Constant: +0:224 0 (const uint) +0:225 subgroupQuadSwapHorizontal ( global 4-component vector of float) +0:225 'f4' ( in 4-component vector of float) +0:226 subgroupQuadSwapVertical ( global 4-component vector of float) +0:226 'f4' ( in 4-component vector of float) +0:227 subgroupQuadSwapDiagonal ( global 4-component vector of float) +0:227 'f4' ( in 4-component vector of float) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:? 'mem' ( shared 10-element array of 4-component vector of float) +0:? 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) + + +Linked task stage: + + +Shader version: 460 +Requested GL_EXT_mesh_shader +Requested GL_KHR_shader_subgroup_arithmetic +Requested GL_KHR_shader_subgroup_ballot +Requested GL_KHR_shader_subgroup_basic +Requested GL_KHR_shader_subgroup_clustered +Requested GL_KHR_shader_subgroup_quad +Requested GL_KHR_shader_subgroup_shuffle +Requested GL_KHR_shader_subgroup_shuffle_relative +Requested GL_KHR_shader_subgroup_vote +local_size = (32, 1, 1) +ERROR: node is still EOpNull! +0:102 Function Definition: main( ( global void) +0:102 Function Parameters: +0:104 Sequence +0:104 Sequence +0:104 move second child to first child ( temp uint) +0:104 'iid' ( temp uint) +0:104 direct index ( temp uint) +0:104 'gl_LocalInvocationID' ( in 3-component vector of uint LocalInvocationID) +0:104 Constant: +0:104 0 (const int) +0:105 Sequence +0:105 move second child to first child ( temp uint) +0:105 'gid' ( temp uint) +0:105 direct index ( temp uint) +0:105 'gl_WorkGroupID' ( in 3-component vector of uint WorkGroupID) +0:105 Constant: +0:105 0 (const int) +0:108 Sequence +0:108 Sequence +0:108 move second child to first child ( temp uint) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 0 (const uint) +0:108 Loop with condition tested first +0:108 Loop Condition +0:108 Compare Less Than ( temp bool) +0:108 'i' ( temp uint) +0:108 Constant: +0:108 10 (const uint) +0:108 Loop Body +0:109 Sequence +0:109 move second child to first child ( temp 4-component vector of float) +0:109 indirect index ( temp 4-component vector of float) +0:109 'mem' ( shared 10-element array of 4-component vector of float) +0:109 'i' ( temp uint) +0:109 Construct vec4 ( temp 4-component vector of float) +0:109 Convert uint to float ( temp float) +0:109 add ( temp uint) +0:109 'i' ( temp uint) +0:109 uni_value: direct index for structure (layout( column_major shared) uniform uint) +0:109 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:109 Constant: +0:109 0 (const uint) +0:108 Loop Terminal Expression +0:108 Pre-Increment ( temp uint) +0:108 'i' ( temp uint) +0:111 imageStore ( global void) +0:111 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:111 Construct ivec2 ( temp 2-component vector of int) +0:111 Convert uint to int ( temp int) +0:111 'iid' ( temp uint) +0:111 indirect index ( temp 4-component vector of float) +0:111 'mem' ( shared 10-element array of 4-component vector of float) +0:111 'gid' ( temp uint) +0:112 imageStore ( global void) +0:112 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:112 Construct ivec2 ( temp 2-component vector of int) +0:112 Convert uint to int ( temp int) +0:112 'iid' ( temp uint) +0:112 indirect index ( temp 4-component vector of float) +0:112 'mem' ( shared 10-element array of 4-component vector of float) +0:112 add ( temp uint) +0:112 'gid' ( temp uint) +0:112 Constant: +0:112 1 (const uint) +0:114 MemoryBarrierShared ( global void) +0:114 Barrier ( global void) +0:118 move second child to first child ( temp 2-component vector of float) +0:118 dummy: direct index for structure ( global 2-component vector of float) +0:118 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:118 Constant: +0:118 0 (const int) +0:118 Constant: +0:118 30.000000 +0:118 31.000000 +0:119 move second child to first child ( temp 2-component vector of float) +0:119 direct index ( temp 2-component vector of float) +0:119 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:119 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:119 Constant: +0:119 1 (const int) +0:119 Constant: +0:119 0 (const int) +0:119 Constant: +0:119 32.000000 +0:119 33.000000 +0:120 move second child to first child ( temp 2-component vector of float) +0:120 direct index ( temp 2-component vector of float) +0:120 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:120 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 1 (const int) +0:120 Constant: +0:120 34.000000 +0:120 35.000000 +0:121 move second child to first child ( temp 2-component vector of float) +0:121 direct index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 Constant: +0:121 2 (const int) +0:121 indirect index ( temp 2-component vector of float) +0:121 submesh: direct index for structure ( global 3-element array of 2-component vector of float) +0:121 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) +0:121 Constant: +0:121 1 (const int) +0:121 mod ( temp uint) +0:121 'gid' ( temp uint) +0:121 Constant: +0:121 2 (const uint) +0:123 MemoryBarrierShared ( global void) +0:123 Barrier ( global void) +0:126 EmitMeshTasksEXT ( global void) +0:126 Constant: +0:126 3 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:126 Constant: +0:126 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 32 (const uint) +0:? 1 (const uint) +0:? 1 (const uint) +0:? 'uni_image' (layout( binding=0) writeonly uniform image2D) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared) uniform uint uni_value}) +0:? 'mem' ( shared 10-element array of 4-component vector of float) +0:? 'mytask' ( taskPayloadSharedEXT structure{ global 2-component vector of float dummy, global 3-element array of 2-component vector of float submesh}) + diff --git a/Test/baseResults/spv.460.subgroupEXT.mesh.out b/Test/baseResults/spv.460.subgroupEXT.mesh.out new file mode 100644 index 0000000000..350f8d8a9a --- /dev/null +++ b/Test/baseResults/spv.460.subgroupEXT.mesh.out @@ -0,0 +1,448 @@ +spv.460.subgroupEXT.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 280 + + Capability ClipDistance + Capability CullDistance + Capability GroupNonUniform + Capability GroupNonUniformVote + Capability GroupNonUniformArithmetic + Capability GroupNonUniformBallot + Capability GroupNonUniformShuffle + Capability GroupNonUniformShuffleRelative + Capability GroupNonUniformClustered + Capability GroupNonUniformQuad + Capability FragmentShadingRateKHR + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 35 41 57 109 148 162 163 168 169 172 173 174 175 176 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + SourceExtension "GL_KHR_shader_subgroup_arithmetic" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_clustered" + SourceExtension "GL_KHR_shader_subgroup_quad" + SourceExtension "GL_KHR_shader_subgroup_shuffle" + SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 6 "basic_works(" + Name 13 "ballot_works(vf4;" + Name 12 "f4" + Name 16 "vote_works(vf4;" + Name 15 "f4" + Name 19 "shuffle_works(vf4;" + Name 18 "f4" + Name 22 "arith_works(vf4;" + Name 21 "f4" + Name 25 "clustered_works(vf4;" + Name 24 "f4" + Name 28 "quad_works(vf4;" + Name 27 "f4" + Name 32 "iid" + Name 35 "gl_LocalInvocationID" + Name 40 "gid" + Name 41 "gl_WorkGroupID" + Name 44 "vertexCount" + Name 46 "primitiveCount" + Name 54 "gl_MeshPerVertexEXT" + MemberName 54(gl_MeshPerVertexEXT) 0 "gl_Position" + MemberName 54(gl_MeshPerVertexEXT) 1 "gl_PointSize" + MemberName 54(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" + MemberName 54(gl_MeshPerVertexEXT) 3 "gl_CullDistance" + Name 57 "gl_MeshVerticesEXT" + Name 106 "gl_MeshPerPrimitiveEXT" + MemberName 106(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" + MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" + MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" + MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" + MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" + Name 109 "gl_MeshPrimitivesEXT" + Name 148 "gl_PrimitiveTriangleIndicesEXT" + Name 162 "gl_SubgroupSize" + Name 163 "gl_SubgroupInvocationID" + Name 168 "gl_NumSubgroups" + Name 169 "gl_SubgroupID" + Name 172 "gl_SubgroupEqMask" + Name 173 "gl_SubgroupGeMask" + Name 174 "gl_SubgroupGtMask" + Name 175 "gl_SubgroupLeMask" + Name 176 "gl_SubgroupLtMask" + Name 182 "ballot" + Name 219 "ballot" + Name 254 "ballot" + Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position + MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize + MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance + MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance + Decorate 54(gl_MeshPerVertexEXT) Block + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR + Decorate 106(gl_MeshPerPrimitiveEXT) Block + Decorate 148(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT + Decorate 162(gl_SubgroupSize) RelaxedPrecision + Decorate 162(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 163(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 163(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 168(gl_NumSubgroups) BuiltIn NumSubgroups + Decorate 169(gl_SubgroupID) BuiltIn SubgroupId + Decorate 172(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 173(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR + Decorate 174(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 175(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 176(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR + Decorate 279 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10: TypePointer Function 9(fvec4) + 11: TypeFunction 2 10(ptr) + 30: TypeInt 32 0 + 31: TypePointer Function 30(int) + 33: TypeVector 30(int) 3 + 34: TypePointer Input 33(ivec3) +35(gl_LocalInvocationID): 34(ptr) Variable Input + 36: 30(int) Constant 0 + 37: TypePointer Input 30(int) +41(gl_WorkGroupID): 34(ptr) Variable Input + 45: 30(int) Constant 81 + 47: 30(int) Constant 32 + 50: 30(int) Constant 4 + 51: TypeArray 8(float) 50 + 52: 30(int) Constant 3 + 53: TypeArray 8(float) 52 +54(gl_MeshPerVertexEXT): TypeStruct 9(fvec4) 8(float) 51 53 + 55: TypeArray 54(gl_MeshPerVertexEXT) 45 + 56: TypePointer Output 55 +57(gl_MeshVerticesEXT): 56(ptr) Variable Output + 59: TypeInt 32 1 + 60: 59(int) Constant 0 + 61: 8(float) Constant 1065353216 + 62: 9(fvec4) ConstantComposite 61 61 61 61 + 63: TypePointer Output 9(fvec4) + 66: 59(int) Constant 1 + 67: 8(float) Constant 1073741824 + 68: TypePointer Output 8(float) + 71: 59(int) Constant 2 + 72: 59(int) Constant 3 + 73: 8(float) Constant 1077936128 + 76: 8(float) Constant 1082130432 + 78: 30(int) Constant 1 + 79: 30(int) Constant 264 + 80: 30(int) Constant 2 + 105: TypeBool +106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int) + 107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47 + 108: TypePointer Output 107 +109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output + 111: 59(int) Constant 6 + 112: TypePointer Output 59(int) + 115: 59(int) Constant 7 + 118: 59(int) Constant 8 + 121: 105(bool) ConstantFalse + 122: TypePointer Output 105(bool) + 145: 30(int) Constant 96 + 146: TypeArray 33(ivec3) 145 + 147: TypePointer Output 146 +148(gl_PrimitiveTriangleIndicesEXT): 147(ptr) Variable Output + 149: 33(ivec3) ConstantComposite 78 78 78 + 150: TypePointer Output 33(ivec3) + 154: 33(ivec3) ConstantComposite 80 80 80 +162(gl_SubgroupSize): 37(ptr) Variable Input +163(gl_SubgroupInvocationID): 37(ptr) Variable Input + 164: 30(int) Constant 3400 + 165: 30(int) Constant 72 + 166: 30(int) Constant 2056 +168(gl_NumSubgroups): 37(ptr) Variable Input +169(gl_SubgroupID): 37(ptr) Variable Input + 170: TypeVector 30(int) 4 + 171: TypePointer Input 170(ivec4) +172(gl_SubgroupEqMask): 171(ptr) Variable Input +173(gl_SubgroupGeMask): 171(ptr) Variable Input +174(gl_SubgroupGtMask): 171(ptr) Variable Input +175(gl_SubgroupLeMask): 171(ptr) Variable Input +176(gl_SubgroupLtMask): 171(ptr) Variable Input + 181: TypePointer Function 170(ivec4) + 184: 170(ivec4) ConstantComposite 78 78 78 78 + 198: 105(bool) ConstantTrue + 255: 30(int) Constant 85 + 256: 170(ivec4) ConstantComposite 255 36 36 36 + 279: 33(ivec3) ConstantComposite 47 78 78 + 4(main): 2 Function None 3 + 5: Label + 32(iid): 31(ptr) Variable Function + 40(gid): 31(ptr) Variable Function + 44(vertexCount): 31(ptr) Variable Function +46(primitiveCount): 31(ptr) Variable Function + 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36 + 39: 30(int) Load 38 + Store 32(iid) 39 + 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36 + 43: 30(int) Load 42 + Store 40(gid) 43 + Store 44(vertexCount) 45 + Store 46(primitiveCount) 47 + 48: 30(int) Load 44(vertexCount) + 49: 30(int) Load 46(primitiveCount) + SetMeshOutputsEXT 48 49 + 58: 30(int) Load 32(iid) + 64: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 58 60 + Store 64 62 + 65: 30(int) Load 32(iid) + 69: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 65 66 + Store 69 67 + 70: 30(int) Load 32(iid) + 74: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 70 71 72 + Store 74 73 + 75: 30(int) Load 32(iid) + 77: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 75 72 71 + Store 77 76 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 81: 30(int) Load 32(iid) + 82: 30(int) IAdd 81 78 + 83: 30(int) Load 32(iid) + 84: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 83 60 + 85: 9(fvec4) Load 84 + 86: 63(ptr) AccessChain 57(gl_MeshVerticesEXT) 82 60 + Store 86 85 + 87: 30(int) Load 32(iid) + 88: 30(int) IAdd 87 78 + 89: 30(int) Load 32(iid) + 90: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 89 66 + 91: 8(float) Load 90 + 92: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 88 66 + Store 92 91 + 93: 30(int) Load 32(iid) + 94: 30(int) IAdd 93 78 + 95: 30(int) Load 32(iid) + 96: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 95 71 72 + 97: 8(float) Load 96 + 98: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 94 71 72 + Store 98 97 + 99: 30(int) Load 32(iid) + 100: 30(int) IAdd 99 78 + 101: 30(int) Load 32(iid) + 102: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 101 72 71 + 103: 8(float) Load 102 + 104: 68(ptr) AccessChain 57(gl_MeshVerticesEXT) 100 72 71 + Store 104 103 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 110: 30(int) Load 32(iid) + 113: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 110 60 + Store 113 111 + 114: 30(int) Load 32(iid) + 116: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 114 66 + Store 116 115 + 117: 30(int) Load 32(iid) + 119: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 117 71 + Store 119 118 + 120: 30(int) Load 32(iid) + 123: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 120 72 + Store 123 121 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 124: 30(int) Load 32(iid) + 125: 30(int) IAdd 124 78 + 126: 30(int) Load 32(iid) + 127: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 126 60 + 128: 59(int) Load 127 + 129: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 125 60 + Store 129 128 + 130: 30(int) Load 32(iid) + 131: 30(int) IAdd 130 78 + 132: 30(int) Load 32(iid) + 133: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 132 66 + 134: 59(int) Load 133 + 135: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 131 66 + Store 135 134 + 136: 30(int) Load 32(iid) + 137: 30(int) IAdd 136 78 + 138: 30(int) Load 32(iid) + 139: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 138 71 + 140: 59(int) Load 139 + 141: 112(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 137 71 + Store 141 140 + 142: 30(int) Load 32(iid) + 143: 30(int) IAdd 142 78 + 144: 122(ptr) AccessChain 109(gl_MeshPrimitivesEXT) 143 72 + Store 144 121 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + 151: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 60 + Store 151 149 + 152: 30(int) Load 46(primitiveCount) + 153: 30(int) ISub 152 78 + 155: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 153 + Store 155 154 + 156: 30(int) Load 40(gid) + 157: 30(int) Load 40(gid) + 158: 30(int) ISub 157 78 + 159: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 158 + 160: 33(ivec3) Load 159 + 161: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 156 + Store 161 160 + MemoryBarrier 78 79 + ControlBarrier 80 80 79 + Return + FunctionEnd + 6(basic_works(): 2 Function None 3 + 7: Label + ControlBarrier 52 52 164 + MemoryBarrier 52 164 + MemoryBarrier 52 165 + MemoryBarrier 52 166 + 167: 105(bool) GroupNonUniformElect 52 + MemoryBarrier 52 79 + Return + FunctionEnd +13(ballot_works(vf4;): 2 Function None 11 + 12(f4): 10(ptr) FunctionParameter + 14: Label + 182(ballot): 181(ptr) Variable Function + 177: 9(fvec4) Load 12(f4) + 178: 9(fvec4) GroupNonUniformBroadcast 52 177 36 + 179: 9(fvec4) Load 12(f4) + 180: 9(fvec4) GroupNonUniformBroadcastFirst 52 179 + 183: 170(ivec4) GroupNonUniformBallot 52 121 + Store 182(ballot) 183 + 185: 105(bool) GroupNonUniformInverseBallot 52 184 + 186: 170(ivec4) Load 182(ballot) + 187: 105(bool) GroupNonUniformBallotBitExtract 52 186 36 + 188: 170(ivec4) Load 182(ballot) + 189: 30(int) GroupNonUniformBallotBitCount 52 Reduce 188 + 190: 170(ivec4) Load 182(ballot) + 191: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 190 + 192: 170(ivec4) Load 182(ballot) + 193: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 192 + 194: 170(ivec4) Load 182(ballot) + 195: 30(int) GroupNonUniformBallotFindLSB 52 194 + 196: 170(ivec4) Load 182(ballot) + 197: 30(int) GroupNonUniformBallotFindMSB 52 196 + Return + FunctionEnd +16(vote_works(vf4;): 2 Function None 11 + 15(f4): 10(ptr) FunctionParameter + 17: Label + 199: 105(bool) GroupNonUniformAll 52 198 + 200: 105(bool) GroupNonUniformAny 52 121 + 201: 9(fvec4) Load 15(f4) + 202: 105(bool) GroupNonUniformAllEqual 52 201 + Return + FunctionEnd +19(shuffle_works(vf4;): 2 Function None 11 + 18(f4): 10(ptr) FunctionParameter + 20: Label + 203: 9(fvec4) Load 18(f4) + 204: 9(fvec4) GroupNonUniformShuffle 52 203 36 + 205: 9(fvec4) Load 18(f4) + 206: 9(fvec4) GroupNonUniformShuffleXor 52 205 78 + 207: 9(fvec4) Load 18(f4) + 208: 9(fvec4) GroupNonUniformShuffleUp 52 207 78 + 209: 9(fvec4) Load 18(f4) + 210: 9(fvec4) GroupNonUniformShuffleDown 52 209 78 + Return + FunctionEnd +22(arith_works(vf4;): 2 Function None 11 + 21(f4): 10(ptr) FunctionParameter + 23: Label + 219(ballot): 181(ptr) Variable Function + 211: 9(fvec4) Load 21(f4) + 212: 9(fvec4) GroupNonUniformFAdd 52 Reduce 211 + 213: 9(fvec4) Load 21(f4) + 214: 9(fvec4) GroupNonUniformFMul 52 Reduce 213 + 215: 9(fvec4) Load 21(f4) + 216: 9(fvec4) GroupNonUniformFMin 52 Reduce 215 + 217: 9(fvec4) Load 21(f4) + 218: 9(fvec4) GroupNonUniformFMax 52 Reduce 217 + 220: 170(ivec4) Load 219(ballot) + 221: 170(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 220 + 222: 170(ivec4) Load 219(ballot) + 223: 170(ivec4) GroupNonUniformBitwiseOr 52 Reduce 222 + 224: 170(ivec4) Load 219(ballot) + 225: 170(ivec4) GroupNonUniformBitwiseXor 52 Reduce 224 + 226: 9(fvec4) Load 21(f4) + 227: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 226 + 228: 9(fvec4) Load 21(f4) + 229: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 228 + 230: 9(fvec4) Load 21(f4) + 231: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 230 + 232: 9(fvec4) Load 21(f4) + 233: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 232 + 234: 170(ivec4) Load 219(ballot) + 235: 170(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 234 + 236: 170(ivec4) Load 219(ballot) + 237: 170(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 236 + 238: 170(ivec4) Load 219(ballot) + 239: 170(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 238 + 240: 9(fvec4) Load 21(f4) + 241: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 240 + 242: 9(fvec4) Load 21(f4) + 243: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 242 + 244: 9(fvec4) Load 21(f4) + 245: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 244 + 246: 9(fvec4) Load 21(f4) + 247: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 246 + 248: 170(ivec4) Load 219(ballot) + 249: 170(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 248 + 250: 170(ivec4) Load 219(ballot) + 251: 170(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 250 + 252: 170(ivec4) Load 219(ballot) + 253: 170(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 252 + Return + FunctionEnd +25(clustered_works(vf4;): 2 Function None 11 + 24(f4): 10(ptr) FunctionParameter + 26: Label + 254(ballot): 181(ptr) Variable Function + Store 254(ballot) 256 + 257: 9(fvec4) Load 24(f4) + 258: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 257 80 + 259: 9(fvec4) Load 24(f4) + 260: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 259 80 + 261: 9(fvec4) Load 24(f4) + 262: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 261 80 + 263: 9(fvec4) Load 24(f4) + 264: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 263 80 + 265: 170(ivec4) Load 254(ballot) + 266: 170(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 265 80 + 267: 170(ivec4) Load 254(ballot) + 268: 170(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 267 80 + 269: 170(ivec4) Load 254(ballot) + 270: 170(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 269 80 + Return + FunctionEnd +28(quad_works(vf4;): 2 Function None 11 + 27(f4): 10(ptr) FunctionParameter + 29: Label + 271: 9(fvec4) Load 27(f4) + 272: 9(fvec4) GroupNonUniformQuadBroadcast 52 271 36 + 273: 9(fvec4) Load 27(f4) + 274: 9(fvec4) GroupNonUniformQuadSwap 52 273 36 + 275: 9(fvec4) Load 27(f4) + 276: 9(fvec4) GroupNonUniformQuadSwap 52 275 78 + 277: 9(fvec4) Load 27(f4) + 278: 9(fvec4) GroupNonUniformQuadSwap 52 277 80 + Return + FunctionEnd diff --git a/Test/baseResults/spv.460.subgroupEXT.task.out b/Test/baseResults/spv.460.subgroupEXT.task.out new file mode 100644 index 0000000000..9de82ce5c5 --- /dev/null +++ b/Test/baseResults/spv.460.subgroupEXT.task.out @@ -0,0 +1,376 @@ +spv.460.subgroupEXT.task +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 242 + + Capability StorageImageWriteWithoutFormat + Capability GroupNonUniform + Capability GroupNonUniformVote + Capability GroupNonUniformArithmetic + Capability GroupNonUniformBallot + Capability GroupNonUniformShuffle + Capability GroupNonUniformShuffleRelative + Capability GroupNonUniformClustered + Capability GroupNonUniformQuad + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 122 123 128 129 132 133 134 135 136 + ExecutionMode 4 LocalSize 32 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + SourceExtension "GL_KHR_shader_subgroup_arithmetic" + SourceExtension "GL_KHR_shader_subgroup_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_clustered" + SourceExtension "GL_KHR_shader_subgroup_quad" + SourceExtension "GL_KHR_shader_subgroup_shuffle" + SourceExtension "GL_KHR_shader_subgroup_shuffle_relative" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 6 "basic_works(" + Name 13 "ballot_works(vf4;" + Name 12 "f4" + Name 16 "vote_works(vf4;" + Name 15 "f4" + Name 19 "shuffle_works(vf4;" + Name 18 "f4" + Name 22 "arith_works(vf4;" + Name 21 "f4" + Name 25 "clustered_works(vf4;" + Name 24 "f4" + Name 28 "quad_works(vf4;" + Name 27 "f4" + Name 32 "iid" + Name 35 "gl_LocalInvocationID" + Name 40 "gid" + Name 41 "gl_WorkGroupID" + Name 44 "i" + Name 56 "mem" + Name 59 "block0" + MemberName 59(block0) 0 "uni_value" + Name 61 "" + Name 77 "uni_image" + Name 100 "Task" + MemberName 100(Task) 0 "dummy" + MemberName 100(Task) 1 "submesh" + Name 102 "mytask" + Name 122 "gl_SubgroupSize" + Name 123 "gl_SubgroupInvocationID" + Name 128 "gl_NumSubgroups" + Name 129 "gl_SubgroupID" + Name 132 "gl_SubgroupEqMask" + Name 133 "gl_SubgroupGeMask" + Name 134 "gl_SubgroupGtMask" + Name 135 "gl_SubgroupLeMask" + Name 136 "gl_SubgroupLtMask" + Name 142 "ballot" + Name 180 "ballot" + Name 215 "ballot" + Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 59(block0) 0 Offset 0 + Decorate 59(block0) Block + Decorate 61 DescriptorSet 0 + Decorate 61 Binding 1 + Decorate 77(uni_image) DescriptorSet 0 + Decorate 77(uni_image) Binding 0 + Decorate 77(uni_image) NonReadable + Decorate 122(gl_SubgroupSize) RelaxedPrecision + Decorate 122(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 123(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 123(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 128(gl_NumSubgroups) BuiltIn NumSubgroups + Decorate 129(gl_SubgroupID) BuiltIn SubgroupId + Decorate 132(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 133(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR + Decorate 134(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 135(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 136(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR + Decorate 241 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10: TypePointer Function 9(fvec4) + 11: TypeFunction 2 10(ptr) + 30: TypeInt 32 0 + 31: TypePointer Function 30(int) + 33: TypeVector 30(int) 3 + 34: TypePointer Input 33(ivec3) +35(gl_LocalInvocationID): 34(ptr) Variable Input + 36: 30(int) Constant 0 + 37: TypePointer Input 30(int) +41(gl_WorkGroupID): 34(ptr) Variable Input + 51: 30(int) Constant 10 + 52: TypeBool + 54: TypeArray 9(fvec4) 51 + 55: TypePointer Workgroup 54 + 56(mem): 55(ptr) Variable Workgroup + 59(block0): TypeStruct 30(int) + 60: TypePointer Uniform 59(block0) + 61: 60(ptr) Variable Uniform + 62: TypeInt 32 1 + 63: 62(int) Constant 0 + 64: TypePointer Uniform 30(int) + 70: TypePointer Workgroup 9(fvec4) + 73: 62(int) Constant 1 + 75: TypeImage 8(float) 2D nonsampled format:Unknown + 76: TypePointer UniformConstant 75 + 77(uni_image): 76(ptr) Variable UniformConstant + 81: TypeVector 62(int) 2 + 91: 30(int) Constant 1 + 95: 30(int) Constant 264 + 96: 30(int) Constant 2 + 97: TypeVector 8(float) 2 + 98: 30(int) Constant 3 + 99: TypeArray 97(fvec2) 98 + 100(Task): TypeStruct 97(fvec2) 99 + 101: TypePointer TaskPayloadWorkgroupEXT 100(Task) + 102(mytask): 101(ptr) Variable TaskPayloadWorkgroupEXT + 103: 8(float) Constant 1106247680 + 104: 8(float) Constant 1106771968 + 105: 97(fvec2) ConstantComposite 103 104 + 106: TypePointer TaskPayloadWorkgroupEXT 97(fvec2) + 108: 8(float) Constant 1107296256 + 109: 8(float) Constant 1107558400 + 110: 97(fvec2) ConstantComposite 108 109 + 112: 8(float) Constant 1107820544 + 113: 8(float) Constant 1108082688 + 114: 97(fvec2) ConstantComposite 112 113 + 116: 62(int) Constant 2 +122(gl_SubgroupSize): 37(ptr) Variable Input +123(gl_SubgroupInvocationID): 37(ptr) Variable Input + 124: 30(int) Constant 3400 + 125: 30(int) Constant 72 + 126: 30(int) Constant 2056 +128(gl_NumSubgroups): 37(ptr) Variable Input +129(gl_SubgroupID): 37(ptr) Variable Input + 130: TypeVector 30(int) 4 + 131: TypePointer Input 130(ivec4) +132(gl_SubgroupEqMask): 131(ptr) Variable Input +133(gl_SubgroupGeMask): 131(ptr) Variable Input +134(gl_SubgroupGtMask): 131(ptr) Variable Input +135(gl_SubgroupLeMask): 131(ptr) Variable Input +136(gl_SubgroupLtMask): 131(ptr) Variable Input + 141: TypePointer Function 130(ivec4) + 143: 52(bool) ConstantFalse + 145: 130(ivec4) ConstantComposite 91 91 91 91 + 159: 52(bool) ConstantTrue + 216: 30(int) Constant 85 + 217: 130(ivec4) ConstantComposite 216 36 36 36 + 240: 30(int) Constant 32 + 241: 33(ivec3) ConstantComposite 240 91 91 + 4(main): 2 Function None 3 + 5: Label + 32(iid): 31(ptr) Variable Function + 40(gid): 31(ptr) Variable Function + 44(i): 31(ptr) Variable Function + 38: 37(ptr) AccessChain 35(gl_LocalInvocationID) 36 + 39: 30(int) Load 38 + Store 32(iid) 39 + 42: 37(ptr) AccessChain 41(gl_WorkGroupID) 36 + 43: 30(int) Load 42 + Store 40(gid) 43 + Store 44(i) 36 + Branch 45 + 45: Label + LoopMerge 47 48 None + Branch 49 + 49: Label + 50: 30(int) Load 44(i) + 53: 52(bool) ULessThan 50 51 + BranchConditional 53 46 47 + 46: Label + 57: 30(int) Load 44(i) + 58: 30(int) Load 44(i) + 65: 64(ptr) AccessChain 61 63 + 66: 30(int) Load 65 + 67: 30(int) IAdd 58 66 + 68: 8(float) ConvertUToF 67 + 69: 9(fvec4) CompositeConstruct 68 68 68 68 + 71: 70(ptr) AccessChain 56(mem) 57 + Store 71 69 + Branch 48 + 48: Label + 72: 30(int) Load 44(i) + 74: 30(int) IAdd 72 73 + Store 44(i) 74 + Branch 45 + 47: Label + 78: 75 Load 77(uni_image) + 79: 30(int) Load 32(iid) + 80: 62(int) Bitcast 79 + 82: 81(ivec2) CompositeConstruct 80 80 + 83: 30(int) Load 40(gid) + 84: 70(ptr) AccessChain 56(mem) 83 + 85: 9(fvec4) Load 84 + ImageWrite 78 82 85 + 86: 75 Load 77(uni_image) + 87: 30(int) Load 32(iid) + 88: 62(int) Bitcast 87 + 89: 81(ivec2) CompositeConstruct 88 88 + 90: 30(int) Load 40(gid) + 92: 30(int) IAdd 90 91 + 93: 70(ptr) AccessChain 56(mem) 92 + 94: 9(fvec4) Load 93 + ImageWrite 86 89 94 + MemoryBarrier 91 95 + ControlBarrier 96 96 95 + 107: 106(ptr) AccessChain 102(mytask) 63 + Store 107 105 + 111: 106(ptr) AccessChain 102(mytask) 73 63 + Store 111 110 + 115: 106(ptr) AccessChain 102(mytask) 73 73 + Store 115 114 + 117: 30(int) Load 40(gid) + 118: 30(int) UMod 117 96 + 119: 106(ptr) AccessChain 102(mytask) 73 118 + 120: 97(fvec2) Load 119 + 121: 106(ptr) AccessChain 102(mytask) 73 116 + Store 121 120 + MemoryBarrier 91 95 + ControlBarrier 96 96 95 + EmitMeshTasksEXT 98 91 91 102(mytask) + Return + FunctionEnd + 6(basic_works(): 2 Function None 3 + 7: Label + ControlBarrier 98 98 124 + MemoryBarrier 98 124 + MemoryBarrier 98 125 + MemoryBarrier 98 126 + 127: 52(bool) GroupNonUniformElect 98 + MemoryBarrier 98 95 + Return + FunctionEnd +13(ballot_works(vf4;): 2 Function None 11 + 12(f4): 10(ptr) FunctionParameter + 14: Label + 142(ballot): 141(ptr) Variable Function + 137: 9(fvec4) Load 12(f4) + 138: 9(fvec4) GroupNonUniformBroadcast 98 137 36 + 139: 9(fvec4) Load 12(f4) + 140: 9(fvec4) GroupNonUniformBroadcastFirst 98 139 + 144: 130(ivec4) GroupNonUniformBallot 98 143 + Store 142(ballot) 144 + 146: 52(bool) GroupNonUniformInverseBallot 98 145 + 147: 130(ivec4) Load 142(ballot) + 148: 52(bool) GroupNonUniformBallotBitExtract 98 147 36 + 149: 130(ivec4) Load 142(ballot) + 150: 30(int) GroupNonUniformBallotBitCount 98 Reduce 149 + 151: 130(ivec4) Load 142(ballot) + 152: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 151 + 153: 130(ivec4) Load 142(ballot) + 154: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 153 + 155: 130(ivec4) Load 142(ballot) + 156: 30(int) GroupNonUniformBallotFindLSB 98 155 + 157: 130(ivec4) Load 142(ballot) + 158: 30(int) GroupNonUniformBallotFindMSB 98 157 + Return + FunctionEnd +16(vote_works(vf4;): 2 Function None 11 + 15(f4): 10(ptr) FunctionParameter + 17: Label + 160: 52(bool) GroupNonUniformAll 98 159 + 161: 52(bool) GroupNonUniformAny 98 143 + 162: 9(fvec4) Load 15(f4) + 163: 52(bool) GroupNonUniformAllEqual 98 162 + Return + FunctionEnd +19(shuffle_works(vf4;): 2 Function None 11 + 18(f4): 10(ptr) FunctionParameter + 20: Label + 164: 9(fvec4) Load 18(f4) + 165: 9(fvec4) GroupNonUniformShuffle 98 164 36 + 166: 9(fvec4) Load 18(f4) + 167: 9(fvec4) GroupNonUniformShuffleXor 98 166 91 + 168: 9(fvec4) Load 18(f4) + 169: 9(fvec4) GroupNonUniformShuffleUp 98 168 91 + 170: 9(fvec4) Load 18(f4) + 171: 9(fvec4) GroupNonUniformShuffleDown 98 170 91 + Return + FunctionEnd +22(arith_works(vf4;): 2 Function None 11 + 21(f4): 10(ptr) FunctionParameter + 23: Label + 180(ballot): 141(ptr) Variable Function + 172: 9(fvec4) Load 21(f4) + 173: 9(fvec4) GroupNonUniformFAdd 98 Reduce 172 + 174: 9(fvec4) Load 21(f4) + 175: 9(fvec4) GroupNonUniformFMul 98 Reduce 174 + 176: 9(fvec4) Load 21(f4) + 177: 9(fvec4) GroupNonUniformFMin 98 Reduce 176 + 178: 9(fvec4) Load 21(f4) + 179: 9(fvec4) GroupNonUniformFMax 98 Reduce 178 + 181: 130(ivec4) Load 180(ballot) + 182: 130(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 181 + 183: 130(ivec4) Load 180(ballot) + 184: 130(ivec4) GroupNonUniformBitwiseOr 98 Reduce 183 + 185: 130(ivec4) Load 180(ballot) + 186: 130(ivec4) GroupNonUniformBitwiseXor 98 Reduce 185 + 187: 9(fvec4) Load 21(f4) + 188: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 187 + 189: 9(fvec4) Load 21(f4) + 190: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 189 + 191: 9(fvec4) Load 21(f4) + 192: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 191 + 193: 9(fvec4) Load 21(f4) + 194: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 193 + 195: 130(ivec4) Load 180(ballot) + 196: 130(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 195 + 197: 130(ivec4) Load 180(ballot) + 198: 130(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 197 + 199: 130(ivec4) Load 180(ballot) + 200: 130(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 199 + 201: 9(fvec4) Load 21(f4) + 202: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 201 + 203: 9(fvec4) Load 21(f4) + 204: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 203 + 205: 9(fvec4) Load 21(f4) + 206: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 205 + 207: 9(fvec4) Load 21(f4) + 208: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 207 + 209: 130(ivec4) Load 180(ballot) + 210: 130(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 209 + 211: 130(ivec4) Load 180(ballot) + 212: 130(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 211 + 213: 130(ivec4) Load 180(ballot) + 214: 130(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 213 + Return + FunctionEnd +25(clustered_works(vf4;): 2 Function None 11 + 24(f4): 10(ptr) FunctionParameter + 26: Label + 215(ballot): 141(ptr) Variable Function + Store 215(ballot) 217 + 218: 9(fvec4) Load 24(f4) + 219: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 218 96 + 220: 9(fvec4) Load 24(f4) + 221: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 220 96 + 222: 9(fvec4) Load 24(f4) + 223: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 222 96 + 224: 9(fvec4) Load 24(f4) + 225: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 224 96 + 226: 130(ivec4) Load 215(ballot) + 227: 130(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 226 96 + 228: 130(ivec4) Load 215(ballot) + 229: 130(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 228 96 + 230: 130(ivec4) Load 215(ballot) + 231: 130(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 230 96 + Return + FunctionEnd +28(quad_works(vf4;): 2 Function None 11 + 27(f4): 10(ptr) FunctionParameter + 29: Label + 232: 9(fvec4) Load 27(f4) + 233: 9(fvec4) GroupNonUniformQuadBroadcast 98 232 36 + 234: 9(fvec4) Load 27(f4) + 235: 9(fvec4) GroupNonUniformQuadSwap 98 234 36 + 236: 9(fvec4) Load 27(f4) + 237: 9(fvec4) GroupNonUniformQuadSwap 98 236 91 + 238: 9(fvec4) Load 27(f4) + 239: 9(fvec4) GroupNonUniformQuadSwap 98 238 96 + Return + FunctionEnd diff --git a/Test/baseResults/spv.atomiAddEXT.error.mesh.out b/Test/baseResults/spv.atomiAddEXT.error.mesh.out new file mode 100644 index 0000000000..ce8f3d72d4 --- /dev/null +++ b/Test/baseResults/spv.atomiAddEXT.error.mesh.out @@ -0,0 +1,7 @@ +spv.atomiAddEXT.error.mesh +ERROR: 0:21: 'assign' : l-value required "mytask" (can't modify variable with storage qualifier taskPayloadSharedEXT in mesh shaders) +ERROR: 0:21: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. +ERROR: 2 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.atomiAddEXT.task.out b/Test/baseResults/spv.atomiAddEXT.task.out new file mode 100644 index 0000000000..4b58f15339 --- /dev/null +++ b/Test/baseResults/spv.atomiAddEXT.task.out @@ -0,0 +1,71 @@ +spv.atomiAddEXT.task +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 34 + + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TaskEXT 4 "main" 9 23 28 + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 7 "Buffer" + MemberName 7(Buffer) 0 "x" + Name 9 "" + Name 20 "structType" + MemberName 20(structType) 0 "y" + Name 21 "t2" + MemberName 21(t2) 0 "f" + Name 23 "t" + Name 26 "taskBlock" + MemberName 26(taskBlock) 0 "atom1" + Name 28 "mytask" + MemberDecorate 7(Buffer) 0 Coherent + MemberDecorate 7(Buffer) 0 Offset 0 + Decorate 7(Buffer) Block + Decorate 9 DescriptorSet 0 + Decorate 9 Binding 1 + Decorate 19 ArrayStride 4 + MemberDecorate 20(structType) 0 Offset 0 + MemberDecorate 21(t2) 0 Offset 0 + Decorate 21(t2) Block + Decorate 23(t) DescriptorSet 0 + Decorate 23(t) Binding 0 + Decorate 33 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7(Buffer): TypeStruct 6(int) + 8: TypePointer StorageBuffer 7(Buffer) + 9: 8(ptr) Variable StorageBuffer + 10: 6(int) Constant 0 + 11: TypePointer StorageBuffer 6(int) + 13: 6(int) Constant 1 + 14: TypeInt 32 0 + 15: 14(int) Constant 1 + 16: 14(int) Constant 0 + 18: 14(int) Constant 3 + 19: TypeArray 6(int) 18 + 20(structType): TypeStruct 19 + 21(t2): TypeStruct 20(structType) + 22: TypePointer StorageBuffer 21(t2) + 23(t): 22(ptr) Variable StorageBuffer + 26(taskBlock): TypeStruct 6(int) + 27: TypePointer TaskPayloadWorkgroupEXT 26(taskBlock) + 28(mytask): 27(ptr) Variable TaskPayloadWorkgroupEXT + 29: TypePointer TaskPayloadWorkgroupEXT 6(int) + 32: TypeVector 14(int) 3 + 33: 32(ivec3) ConstantComposite 15 15 15 + 4(main): 2 Function None 3 + 5: Label + 12: 11(ptr) AccessChain 9 10 + 17: 6(int) AtomicIAdd 12 15 16 13 + 24: 11(ptr) AccessChain 23(t) 10 10 13 + 25: 6(int) AtomicIAdd 24 15 16 13 + 30: 29(ptr) AccessChain 28(mytask) 10 + 31: 6(int) AtomicIAdd 30 15 16 13 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out new file mode 100644 index 0000000000..ee9c60331a --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out @@ -0,0 +1,273 @@ +spv.ext.meshShaderBuiltins.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 159 + + Capability ClipDistance + Capability CullDistance + Capability FragmentShadingRateKHR + Capability DrawParameters + Capability MultiView + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 13 19 24 41 93 135 153 156 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 460 + SourceExtension "GL_ARB_shader_draw_parameters" + SourceExtension "GL_EXT_mesh_shader" + SourceExtension "GL_EXT_multiview" + Name 4 "main" + Name 6 "testAdditionalBuiltins(" + Name 10 "iid" + Name 13 "gl_LocalInvocationID" + Name 18 "gid" + Name 19 "gl_WorkGroupID" + Name 23 "numWorkGrous" + Name 24 "gl_NumWorkGroups" + Name 26 "vertexCount" + Name 28 "primitiveCount" + Name 38 "gl_MeshPerVertexEXT" + MemberName 38(gl_MeshPerVertexEXT) 0 "gl_Position" + MemberName 38(gl_MeshPerVertexEXT) 1 "gl_PointSize" + MemberName 38(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" + MemberName 38(gl_MeshPerVertexEXT) 3 "gl_CullDistance" + Name 41 "gl_MeshVerticesEXT" + Name 90 "gl_MeshPerPrimitiveEXT" + MemberName 90(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" + MemberName 90(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" + MemberName 90(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" + MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" + MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" + Name 93 "gl_MeshPrimitivesEXT" + Name 135 "gl_PrimitiveTriangleIndicesEXT" + Name 151 "id" + Name 153 "gl_DrawIDARB" + Name 155 "viewIdx" + Name 156 "gl_ViewIndex" + Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups + MemberDecorate 38(gl_MeshPerVertexEXT) 0 BuiltIn Position + MemberDecorate 38(gl_MeshPerVertexEXT) 1 BuiltIn PointSize + MemberDecorate 38(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance + MemberDecorate 38(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance + Decorate 38(gl_MeshPerVertexEXT) Block + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR + Decorate 90(gl_MeshPerPrimitiveEXT) Block + Decorate 135(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT + Decorate 153(gl_DrawIDARB) BuiltIn DrawIndex + Decorate 156(gl_ViewIndex) BuiltIn ViewIndex + Decorate 158 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeInt 32 0 + 9: TypePointer Function 8(int) + 11: TypeVector 8(int) 3 + 12: TypePointer Input 11(ivec3) +13(gl_LocalInvocationID): 12(ptr) Variable Input + 14: 8(int) Constant 0 + 15: TypePointer Input 8(int) +19(gl_WorkGroupID): 12(ptr) Variable Input + 22: TypePointer Function 11(ivec3) +24(gl_NumWorkGroups): 12(ptr) Variable Input + 27: 8(int) Constant 81 + 29: 8(int) Constant 32 + 32: TypeFloat 32 + 33: TypeVector 32(float) 4 + 34: 8(int) Constant 4 + 35: TypeArray 32(float) 34 + 36: 8(int) Constant 3 + 37: TypeArray 32(float) 36 +38(gl_MeshPerVertexEXT): TypeStruct 33(fvec4) 32(float) 35 37 + 39: TypeArray 38(gl_MeshPerVertexEXT) 27 + 40: TypePointer Output 39 +41(gl_MeshVerticesEXT): 40(ptr) Variable Output + 43: TypeInt 32 1 + 44: 43(int) Constant 0 + 45: 32(float) Constant 1065353216 + 46: 33(fvec4) ConstantComposite 45 45 45 45 + 47: TypePointer Output 33(fvec4) + 50: 43(int) Constant 1 + 51: 32(float) Constant 1073741824 + 52: TypePointer Output 32(float) + 55: 43(int) Constant 2 + 56: 43(int) Constant 3 + 57: 32(float) Constant 1077936128 + 60: 32(float) Constant 1082130432 + 62: 8(int) Constant 1 + 63: 8(int) Constant 264 + 64: 8(int) Constant 2 + 89: TypeBool +90(gl_MeshPerPrimitiveEXT): TypeStruct 43(int) 43(int) 43(int) 89(bool) 43(int) + 91: TypeArray 90(gl_MeshPerPrimitiveEXT) 29 + 92: TypePointer Output 91 +93(gl_MeshPrimitivesEXT): 92(ptr) Variable Output + 95: 43(int) Constant 6 + 96: TypePointer Output 43(int) + 99: 43(int) Constant 7 + 102: 43(int) Constant 8 + 105: 89(bool) ConstantFalse + 106: TypePointer Output 89(bool) + 132: 8(int) Constant 96 + 133: TypeArray 11(ivec3) 132 + 134: TypePointer Output 133 +135(gl_PrimitiveTriangleIndicesEXT): 134(ptr) Variable Output + 136: 8(int) Constant 257 + 137: 11(ivec3) ConstantComposite 136 136 136 + 138: TypePointer Output 11(ivec3) + 142: 11(ivec3) ConstantComposite 64 64 64 + 150: TypePointer Function 43(int) + 152: TypePointer Input 43(int) +153(gl_DrawIDARB): 152(ptr) Variable Input +156(gl_ViewIndex): 152(ptr) Variable Input + 158: 11(ivec3) ConstantComposite 29 62 62 + 4(main): 2 Function None 3 + 5: Label + 10(iid): 9(ptr) Variable Function + 18(gid): 9(ptr) Variable Function +23(numWorkGrous): 22(ptr) Variable Function + 26(vertexCount): 9(ptr) Variable Function +28(primitiveCount): 9(ptr) Variable Function + 16: 15(ptr) AccessChain 13(gl_LocalInvocationID) 14 + 17: 8(int) Load 16 + Store 10(iid) 17 + 20: 15(ptr) AccessChain 19(gl_WorkGroupID) 14 + 21: 8(int) Load 20 + Store 18(gid) 21 + 25: 11(ivec3) Load 24(gl_NumWorkGroups) + Store 23(numWorkGrous) 25 + Store 26(vertexCount) 27 + Store 28(primitiveCount) 29 + 30: 8(int) Load 26(vertexCount) + 31: 8(int) Load 28(primitiveCount) + SetMeshOutputsEXT 30 31 + 42: 8(int) Load 10(iid) + 48: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 42 44 + Store 48 46 + 49: 8(int) Load 10(iid) + 53: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 49 50 + Store 53 51 + 54: 8(int) Load 10(iid) + 58: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 54 55 56 + Store 58 57 + 59: 8(int) Load 10(iid) + 61: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 59 56 55 + Store 61 60 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 65: 8(int) Load 10(iid) + 66: 8(int) IAdd 65 62 + 67: 8(int) Load 10(iid) + 68: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 67 44 + 69: 33(fvec4) Load 68 + 70: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 66 44 + Store 70 69 + 71: 8(int) Load 10(iid) + 72: 8(int) IAdd 71 62 + 73: 8(int) Load 10(iid) + 74: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 73 50 + 75: 32(float) Load 74 + 76: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 72 50 + Store 76 75 + 77: 8(int) Load 10(iid) + 78: 8(int) IAdd 77 62 + 79: 8(int) Load 10(iid) + 80: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 79 55 56 + 81: 32(float) Load 80 + 82: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 78 55 56 + Store 82 81 + 83: 8(int) Load 10(iid) + 84: 8(int) IAdd 83 62 + 85: 8(int) Load 10(iid) + 86: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 85 56 55 + 87: 32(float) Load 86 + 88: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 84 56 55 + Store 88 87 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 94: 8(int) Load 10(iid) + 97: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 94 44 + Store 97 95 + 98: 8(int) Load 10(iid) + 100: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 98 50 + Store 100 99 + 101: 8(int) Load 10(iid) + 103: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 101 55 + Store 103 102 + 104: 8(int) Load 10(iid) + 107: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 104 56 + Store 107 105 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 108: 8(int) Load 10(iid) + 109: 8(int) IAdd 108 62 + 110: 8(int) Load 10(iid) + 111: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 110 44 + 112: 43(int) Load 111 + 113: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 109 44 + Store 113 112 + 114: 8(int) Load 10(iid) + 115: 8(int) IAdd 114 62 + 116: 8(int) Load 10(iid) + 117: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 116 50 + 118: 43(int) Load 117 + 119: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 115 50 + Store 119 118 + 120: 8(int) Load 10(iid) + 121: 8(int) IAdd 120 62 + 122: 8(int) Load 10(iid) + 123: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 122 55 + 124: 43(int) Load 123 + 125: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 121 55 + Store 125 124 + 126: 8(int) Load 10(iid) + 127: 8(int) IAdd 126 62 + 128: 8(int) Load 10(iid) + 129: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 128 56 + 130: 89(bool) Load 129 + 131: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 127 56 + Store 131 130 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 139: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 44 + Store 139 137 + 140: 8(int) Load 28(primitiveCount) + 141: 8(int) ISub 140 62 + 143: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 141 + Store 143 142 + 144: 8(int) Load 18(gid) + 145: 8(int) Load 18(gid) + 146: 8(int) ISub 145 62 + 147: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 146 + 148: 11(ivec3) Load 147 + 149: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 144 + Store 149 148 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + Return + FunctionEnd +6(testAdditionalBuiltins(): 2 Function None 3 + 7: Label + 151(id): 150(ptr) Variable Function + 155(viewIdx): 150(ptr) Variable Function + 154: 43(int) Load 153(gl_DrawIDARB) + Store 151(id) 154 + 157: 43(int) Load 156(gl_ViewIndex) + Store 155(viewIdx) 157 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out new file mode 100644 index 0000000000..7f2bdf8d48 --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out @@ -0,0 +1,216 @@ +spv.ext.meshShaderRedeclBuiltins.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 128 + + Capability ClipDistance + Capability CullDistance + Capability FragmentShadingRateKHR + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 11 17 29 81 122 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputPoints + Source GLSL 460 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "gid" + Name 17 "gl_WorkGroupID" + Name 26 "gl_MeshPerVertexEXT" + MemberName 26(gl_MeshPerVertexEXT) 0 "gl_Position" + MemberName 26(gl_MeshPerVertexEXT) 1 "gl_PointSize" + MemberName 26(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" + MemberName 26(gl_MeshPerVertexEXT) 3 "gl_CullDistance" + Name 29 "gl_MeshVerticesEXT" + Name 78 "gl_MeshPerPrimitiveEXT" + MemberName 78(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" + MemberName 78(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" + MemberName 78(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" + MemberName 78(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" + MemberName 78(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" + Name 81 "gl_MeshPrimitivesEXT" + Name 122 "gl_PrimitivePointIndicesEXT" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 26(gl_MeshPerVertexEXT) 0 BuiltIn Position + MemberDecorate 26(gl_MeshPerVertexEXT) 1 BuiltIn PointSize + MemberDecorate 26(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance + MemberDecorate 26(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance + Decorate 26(gl_MeshPerVertexEXT) Block + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR + Decorate 78(gl_MeshPerPrimitiveEXT) Block + Decorate 122(gl_PrimitivePointIndicesEXT) BuiltIn PrimitivePointIndicesEXT + Decorate 127 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) +17(gl_WorkGroupID): 10(ptr) Variable Input + 20: 6(int) Constant 81 + 21: 6(int) Constant 32 + 22: TypeFloat 32 + 23: TypeVector 22(float) 4 + 24: 6(int) Constant 4 + 25: TypeArray 22(float) 24 +26(gl_MeshPerVertexEXT): TypeStruct 23(fvec4) 22(float) 25 25 + 27: TypeArray 26(gl_MeshPerVertexEXT) 20 + 28: TypePointer Output 27 +29(gl_MeshVerticesEXT): 28(ptr) Variable Output + 31: TypeInt 32 1 + 32: 31(int) Constant 0 + 33: 22(float) Constant 1065353216 + 34: 23(fvec4) ConstantComposite 33 33 33 33 + 35: TypePointer Output 23(fvec4) + 38: 31(int) Constant 1 + 39: 22(float) Constant 1073741824 + 40: TypePointer Output 22(float) + 43: 31(int) Constant 2 + 44: 31(int) Constant 3 + 45: 22(float) Constant 1077936128 + 48: 22(float) Constant 1082130432 + 50: 6(int) Constant 1 + 51: 6(int) Constant 264 + 52: 6(int) Constant 2 + 77: TypeBool +78(gl_MeshPerPrimitiveEXT): TypeStruct 31(int) 31(int) 31(int) 77(bool) 31(int) + 79: TypeArray 78(gl_MeshPerPrimitiveEXT) 21 + 80: TypePointer Output 79 +81(gl_MeshPrimitivesEXT): 80(ptr) Variable Output + 83: 31(int) Constant 6 + 84: TypePointer Output 31(int) + 87: 31(int) Constant 7 + 90: 31(int) Constant 8 + 93: 77(bool) ConstantFalse + 94: TypePointer Output 77(bool) + 120: TypeArray 6(int) 21 + 121: TypePointer Output 120 +122(gl_PrimitivePointIndicesEXT): 121(ptr) Variable Output + 123: TypePointer Output 6(int) + 125: 31(int) Constant 31 + 127: 9(ivec3) ConstantComposite 21 50 50 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(gid): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12 + 19: 6(int) Load 18 + Store 16(gid) 19 + SetMeshOutputsEXT 20 21 + 30: 6(int) Load 8(iid) + 36: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 30 32 + Store 36 34 + 37: 6(int) Load 8(iid) + 41: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 37 38 + Store 41 39 + 42: 6(int) Load 8(iid) + 46: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 42 43 44 + Store 46 45 + 47: 6(int) Load 8(iid) + 49: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 47 44 43 + Store 49 48 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 53: 6(int) Load 8(iid) + 54: 6(int) IAdd 53 50 + 55: 6(int) Load 8(iid) + 56: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 55 32 + 57: 23(fvec4) Load 56 + 58: 35(ptr) AccessChain 29(gl_MeshVerticesEXT) 54 32 + Store 58 57 + 59: 6(int) Load 8(iid) + 60: 6(int) IAdd 59 50 + 61: 6(int) Load 8(iid) + 62: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 61 38 + 63: 22(float) Load 62 + 64: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 60 38 + Store 64 63 + 65: 6(int) Load 8(iid) + 66: 6(int) IAdd 65 50 + 67: 6(int) Load 8(iid) + 68: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 67 43 44 + 69: 22(float) Load 68 + 70: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 66 43 44 + Store 70 69 + 71: 6(int) Load 8(iid) + 72: 6(int) IAdd 71 50 + 73: 6(int) Load 8(iid) + 74: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 73 44 43 + 75: 22(float) Load 74 + 76: 40(ptr) AccessChain 29(gl_MeshVerticesEXT) 72 44 43 + Store 76 75 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 82: 6(int) Load 8(iid) + 85: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 82 32 + Store 85 83 + 86: 6(int) Load 8(iid) + 88: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 86 38 + Store 88 87 + 89: 6(int) Load 8(iid) + 91: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 89 43 + Store 91 90 + 92: 6(int) Load 8(iid) + 95: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 92 44 + Store 95 93 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 96: 6(int) Load 8(iid) + 97: 6(int) IAdd 96 50 + 98: 6(int) Load 8(iid) + 99: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 98 32 + 100: 31(int) Load 99 + 101: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 97 32 + Store 101 100 + 102: 6(int) Load 8(iid) + 103: 6(int) IAdd 102 50 + 104: 6(int) Load 8(iid) + 105: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 104 38 + 106: 31(int) Load 105 + 107: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 103 38 + Store 107 106 + 108: 6(int) Load 8(iid) + 109: 6(int) IAdd 108 50 + 110: 6(int) Load 8(iid) + 111: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 110 43 + 112: 31(int) Load 111 + 113: 84(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 109 43 + Store 113 112 + 114: 6(int) Load 8(iid) + 115: 6(int) IAdd 114 50 + 116: 6(int) Load 8(iid) + 117: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 116 44 + 118: 77(bool) Load 117 + 119: 94(ptr) AccessChain 81(gl_MeshPrimitivesEXT) 115 44 + Store 119 118 + MemoryBarrier 50 51 + ControlBarrier 52 52 51 + 124: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 32 + Store 124 50 + 126: 123(ptr) AccessChain 122(gl_PrimitivePointIndicesEXT) 125 + Store 126 52 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out new file mode 100644 index 0000000000..79b2c65a2b --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out @@ -0,0 +1,102 @@ +spv.ext.meshShaderTaskMem.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 58 + + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 11 22 30 38 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 18 "outBlock" + MemberName 18(outBlock) 0 "gid5" + MemberName 18(outBlock) 1 "gid6" + Name 22 "myblk" + Name 28 "taskBlock" + MemberName 28(taskBlock) 0 "gid1" + MemberName 28(taskBlock) 1 "gid2" + Name 30 "mytask" + Name 36 "bufferBlock" + MemberName 36(bufferBlock) 0 "gid3" + MemberName 36(bufferBlock) 1 "gid4" + Name 38 "mybuf" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 18(outBlock) Block + Decorate 22(myblk) Location 0 + Decorate 35 ArrayStride 4 + MemberDecorate 36(bufferBlock) 0 Offset 0 + MemberDecorate 36(bufferBlock) 1 Offset 16 + Decorate 36(bufferBlock) Block + Decorate 38(mybuf) DescriptorSet 0 + Decorate 38(mybuf) Binding 0 + Decorate 57 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) + 16: TypeFloat 32 + 17: TypeVector 16(float) 4 + 18(outBlock): TypeStruct 16(float) 17(fvec4) + 19: 6(int) Constant 81 + 20: TypeArray 18(outBlock) 19 + 21: TypePointer Output 20 + 22(myblk): 21(ptr) Variable Output + 24: TypeInt 32 1 + 25: 24(int) Constant 0 + 26: 6(int) Constant 2 + 27: TypeArray 16(float) 26 + 28(taskBlock): TypeStruct 27 17(fvec4) + 29: TypePointer TaskPayloadWorkgroupEXT 28(taskBlock) + 30(mytask): 29(ptr) Variable TaskPayloadWorkgroupEXT + 31: 24(int) Constant 1 + 32: TypePointer TaskPayloadWorkgroupEXT 16(float) + 35: TypeArray 16(float) 26 + 36(bufferBlock): TypeStruct 35 17(fvec4) + 37: TypePointer StorageBuffer 36(bufferBlock) + 38(mybuf): 37(ptr) Variable StorageBuffer + 39: TypePointer StorageBuffer 16(float) + 43: TypePointer Output 16(float) + 46: TypePointer TaskPayloadWorkgroupEXT 17(fvec4) + 49: TypePointer StorageBuffer 17(fvec4) + 53: TypePointer Output 17(fvec4) + 55: 6(int) Constant 32 + 56: 6(int) Constant 1 + 57: 9(ivec3) ConstantComposite 55 56 56 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 23: 6(int) Load 8(iid) + 33: 32(ptr) AccessChain 30(mytask) 25 31 + 34: 16(float) Load 33 + 40: 39(ptr) AccessChain 38(mybuf) 25 31 + 41: 16(float) Load 40 + 42: 16(float) FAdd 34 41 + 44: 43(ptr) AccessChain 22(myblk) 23 25 + Store 44 42 + 45: 6(int) Load 8(iid) + 47: 46(ptr) AccessChain 30(mytask) 31 + 48: 17(fvec4) Load 47 + 50: 49(ptr) AccessChain 38(mybuf) 31 + 51: 17(fvec4) Load 50 + 52: 17(fvec4) FAdd 48 51 + 54: 53(ptr) AccessChain 22(myblk) 45 31 + Store 54 52 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out new file mode 100644 index 0000000000..d9d74ab92f --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out @@ -0,0 +1,208 @@ +spv.ext.meshShaderUserDefined.mesh +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 141 + + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 11 17 34 104 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 450 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "gid" + Name 17 "gl_WorkGroupID" + Name 30 "myblock" + MemberName 30(myblock) 0 "f" + MemberName 30(myblock) 1 "fArr" + MemberName 30(myblock) 2 "pos" + MemberName 30(myblock) 3 "posArr" + MemberName 30(myblock) 4 "m" + MemberName 30(myblock) 5 "mArr" + Name 34 "blk" + Name 100 "myblock2" + MemberName 100(myblock2) 0 "f" + MemberName 100(myblock2) 1 "pos" + MemberName 100(myblock2) 2 "m" + Name 104 "blk2" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 30(myblock) 0 PerPrimitiveNV + MemberDecorate 30(myblock) 1 PerPrimitiveNV + MemberDecorate 30(myblock) 2 PerPrimitiveNV + MemberDecorate 30(myblock) 3 PerPrimitiveNV + MemberDecorate 30(myblock) 4 PerPrimitiveNV + MemberDecorate 30(myblock) 5 PerPrimitiveNV + Decorate 30(myblock) Block + Decorate 34(blk) Location 0 + Decorate 100(myblock2) Block + Decorate 104(blk2) Location 20 + Decorate 140 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) +17(gl_WorkGroupID): 10(ptr) Variable Input + 20: TypeFloat 32 + 21: 6(int) Constant 4 + 22: TypeArray 20(float) 21 + 23: TypeVector 20(float) 3 + 24: TypeVector 20(float) 4 + 25: TypeArray 24(fvec4) 21 + 26: TypeMatrix 24(fvec4) 4 + 27: TypeMatrix 23(fvec3) 3 + 28: 6(int) Constant 2 + 29: TypeArray 27 28 + 30(myblock): TypeStruct 20(float) 22 23(fvec3) 25 26 29 + 31: 6(int) Constant 32 + 32: TypeArray 30(myblock) 31 + 33: TypePointer Output 32 + 34(blk): 33(ptr) Variable Output + 36: TypeInt 32 1 + 37: 36(int) Constant 0 + 38: 20(float) Constant 1093664768 + 39: TypePointer Output 20(float) + 42: 6(int) Constant 1 + 44: 36(int) Constant 1 + 52: 36(int) Constant 2 + 53: 20(float) Constant 1096810496 + 54: 20(float) Constant 1097859072 + 55: 20(float) Constant 1095761920 + 56: 23(fvec3) ConstantComposite 53 54 55 + 57: TypePointer Output 23(fvec3) + 63: 36(int) Constant 3 + 72: 6(int) Constant 3 + 77: 36(int) Constant 4 + 78: 20(float) Constant 1098907648 + 79: 24(fvec4) ConstantComposite 55 53 54 78 + 80: TypePointer Output 24(fvec4) + 85: 36(int) Constant 5 + 94: 20(float) Constant 1099431936 + 95: 20(float) Constant 1099956224 + 96: 20(float) Constant 1100480512 + 97: 23(fvec3) ConstantComposite 94 95 96 + 99: 6(int) Constant 264 + 100(myblock2): TypeStruct 20(float) 24(fvec4) 26 + 101: 6(int) Constant 81 + 102: TypeArray 100(myblock2) 101 + 103: TypePointer Output 102 + 104(blk2): 103(ptr) Variable Output + 110: 20(float) Constant 1101004800 + 114: 20(float) Constant 1101529088 + 115: 20(float) Constant 1102053376 + 116: 20(float) Constant 1102577664 + 117: 20(float) Constant 1103101952 + 118: 24(fvec4) ConstantComposite 114 115 116 117 + 130: 20(float) Constant 1105723392 + 140: 9(ivec3) ConstantComposite 31 42 42 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(gid): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12 + 19: 6(int) Load 18 + Store 16(gid) 19 + 35: 6(int) Load 8(iid) + 40: 39(ptr) AccessChain 34(blk) 35 37 + Store 40 38 + 41: 6(int) Load 8(iid) + 43: 6(int) IAdd 41 42 + 45: 6(int) Load 16(gid) + 46: 6(int) Load 8(iid) + 47: 39(ptr) AccessChain 34(blk) 46 37 + 48: 20(float) Load 47 + 49: 39(ptr) AccessChain 34(blk) 43 44 45 + Store 49 48 + 50: 6(int) Load 8(iid) + 51: 6(int) UDiv 50 28 + 58: 57(ptr) AccessChain 34(blk) 51 52 + 59: 23(fvec3) Load 58 + 60: 23(fvec3) VectorShuffle 59 56 5 3 4 + Store 58 60 + 61: 6(int) Load 8(iid) + 62: 6(int) IMul 61 28 + 64: 6(int) Load 8(iid) + 65: 6(int) UDiv 64 28 + 66: 57(ptr) AccessChain 34(blk) 65 52 + 67: 23(fvec3) Load 66 + 68: 39(ptr) AccessChain 34(blk) 62 63 44 42 + 69: 20(float) CompositeExtract 67 0 + Store 68 69 + 70: 39(ptr) AccessChain 34(blk) 62 63 44 28 + 71: 20(float) CompositeExtract 67 1 + Store 70 71 + 73: 39(ptr) AccessChain 34(blk) 62 63 44 72 + 74: 20(float) CompositeExtract 67 2 + Store 73 74 + 75: 6(int) Load 8(iid) + 76: 6(int) UDiv 75 21 + 81: 80(ptr) AccessChain 34(blk) 76 77 52 + 82: 24(fvec4) Load 81 + 83: 24(fvec4) VectorShuffle 82 79 7 6 5 4 + Store 81 83 + 84: 6(int) Load 8(iid) + 86: 6(int) Load 8(iid) + 87: 6(int) UDiv 86 21 + 88: 39(ptr) AccessChain 34(blk) 87 77 52 72 + 89: 20(float) Load 88 + 90: 39(ptr) AccessChain 34(blk) 84 85 37 44 42 + Store 90 89 + 91: 6(int) Load 8(iid) + 92: 6(int) IMul 91 21 + 93: 6(int) Load 16(gid) + 98: 57(ptr) AccessChain 34(blk) 92 85 44 93 + Store 98 97 + MemoryBarrier 42 99 + ControlBarrier 28 28 99 + 105: 6(int) Load 8(iid) + 106: 6(int) Load 8(iid) + 107: 6(int) ISub 106 42 + 108: 39(ptr) AccessChain 104(blk2) 107 37 + 109: 20(float) Load 108 + 111: 20(float) FAdd 109 110 + 112: 39(ptr) AccessChain 104(blk2) 105 37 + Store 112 111 + 113: 6(int) Load 8(iid) + 119: 80(ptr) AccessChain 104(blk2) 113 44 + Store 119 118 + 120: 6(int) Load 8(iid) + 121: 6(int) IAdd 120 42 + 122: 6(int) Load 16(gid) + 123: 6(int) Load 8(iid) + 124: 80(ptr) AccessChain 104(blk2) 123 44 + 125: 24(fvec4) Load 124 + 126: 80(ptr) AccessChain 104(blk2) 121 52 122 + Store 126 125 + 127: 6(int) Load 8(iid) + 128: 6(int) IAdd 127 42 + 129: 6(int) Load 16(gid) + 131: 39(ptr) AccessChain 104(blk2) 128 52 129 28 + Store 131 130 + 132: 6(int) Load 8(iid) + 133: 6(int) IAdd 132 28 + 134: 6(int) Load 8(iid) + 135: 6(int) IAdd 134 42 + 136: 6(int) Load 16(gid) + 137: 80(ptr) AccessChain 104(blk2) 135 52 136 + 138: 24(fvec4) Load 137 + 139: 80(ptr) AccessChain 104(blk2) 133 52 63 + Store 139 138 + MemoryBarrier 42 99 + ControlBarrier 28 28 99 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshTaskShader.task.out b/Test/baseResults/spv.ext.meshTaskShader.task.out new file mode 100644 index 0000000000..dd6796e392 --- /dev/null +++ b/Test/baseResults/spv.ext.meshTaskShader.task.out @@ -0,0 +1,163 @@ +spv.ext.meshTaskShader.task +// Module Version 10400 +// Generated by (magic number): 8000a +// Id's are bound by 102 + + Capability StorageImageWriteWithoutFormat + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TaskEXT 4 "main" 11 17 34 39 55 80 + ExecutionMode 4 LocalSize 32 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_mesh_shader" + Name 4 "main" + Name 8 "iid" + Name 11 "gl_LocalInvocationID" + Name 16 "gid" + Name 17 "gl_WorkGroupID" + Name 20 "i" + Name 34 "mem" + Name 37 "block0" + MemberName 37(block0) 0 "uni_value" + Name 39 "" + Name 55 "uni_image" + Name 78 "Task" + MemberName 78(Task) 0 "dummy" + MemberName 78(Task) 1 "submesh" + Name 80 "mytask" + Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + MemberDecorate 37(block0) 0 Offset 0 + Decorate 37(block0) Block + Decorate 39 DescriptorSet 0 + Decorate 39 Binding 1 + Decorate 55(uni_image) DescriptorSet 0 + Decorate 55(uni_image) Binding 0 + Decorate 55(uni_image) NonReadable + Decorate 101 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeVector 6(int) 3 + 10: TypePointer Input 9(ivec3) +11(gl_LocalInvocationID): 10(ptr) Variable Input + 12: 6(int) Constant 0 + 13: TypePointer Input 6(int) +17(gl_WorkGroupID): 10(ptr) Variable Input + 27: 6(int) Constant 10 + 28: TypeBool + 30: TypeFloat 32 + 31: TypeVector 30(float) 4 + 32: TypeArray 31(fvec4) 27 + 33: TypePointer Workgroup 32 + 34(mem): 33(ptr) Variable Workgroup + 37(block0): TypeStruct 6(int) + 38: TypePointer Uniform 37(block0) + 39: 38(ptr) Variable Uniform + 40: TypeInt 32 1 + 41: 40(int) Constant 0 + 42: TypePointer Uniform 6(int) + 48: TypePointer Workgroup 31(fvec4) + 51: 40(int) Constant 1 + 53: TypeImage 30(float) 2D nonsampled format:Unknown + 54: TypePointer UniformConstant 53 + 55(uni_image): 54(ptr) Variable UniformConstant + 59: TypeVector 40(int) 2 + 69: 6(int) Constant 1 + 73: 6(int) Constant 264 + 74: 6(int) Constant 2 + 75: TypeVector 30(float) 2 + 76: 6(int) Constant 3 + 77: TypeArray 75(fvec2) 76 + 78(Task): TypeStruct 75(fvec2) 77 + 79: TypePointer TaskPayloadWorkgroupEXT 78(Task) + 80(mytask): 79(ptr) Variable TaskPayloadWorkgroupEXT + 81: 30(float) Constant 1106247680 + 82: 30(float) Constant 1106771968 + 83: 75(fvec2) ConstantComposite 81 82 + 84: TypePointer TaskPayloadWorkgroupEXT 75(fvec2) + 86: 30(float) Constant 1107296256 + 87: 30(float) Constant 1107558400 + 88: 75(fvec2) ConstantComposite 86 87 + 90: 30(float) Constant 1107820544 + 91: 30(float) Constant 1108082688 + 92: 75(fvec2) ConstantComposite 90 91 + 94: 40(int) Constant 2 + 100: 6(int) Constant 32 + 101: 9(ivec3) ConstantComposite 100 69 69 + 4(main): 2 Function None 3 + 5: Label + 8(iid): 7(ptr) Variable Function + 16(gid): 7(ptr) Variable Function + 20(i): 7(ptr) Variable Function + 14: 13(ptr) AccessChain 11(gl_LocalInvocationID) 12 + 15: 6(int) Load 14 + Store 8(iid) 15 + 18: 13(ptr) AccessChain 17(gl_WorkGroupID) 12 + 19: 6(int) Load 18 + Store 16(gid) 19 + Store 20(i) 12 + Branch 21 + 21: Label + LoopMerge 23 24 None + Branch 25 + 25: Label + 26: 6(int) Load 20(i) + 29: 28(bool) ULessThan 26 27 + BranchConditional 29 22 23 + 22: Label + 35: 6(int) Load 20(i) + 36: 6(int) Load 20(i) + 43: 42(ptr) AccessChain 39 41 + 44: 6(int) Load 43 + 45: 6(int) IAdd 36 44 + 46: 30(float) ConvertUToF 45 + 47: 31(fvec4) CompositeConstruct 46 46 46 46 + 49: 48(ptr) AccessChain 34(mem) 35 + Store 49 47 + Branch 24 + 24: Label + 50: 6(int) Load 20(i) + 52: 6(int) IAdd 50 51 + Store 20(i) 52 + Branch 21 + 23: Label + 56: 53 Load 55(uni_image) + 57: 6(int) Load 8(iid) + 58: 40(int) Bitcast 57 + 60: 59(ivec2) CompositeConstruct 58 58 + 61: 6(int) Load 16(gid) + 62: 48(ptr) AccessChain 34(mem) 61 + 63: 31(fvec4) Load 62 + ImageWrite 56 60 63 + 64: 53 Load 55(uni_image) + 65: 6(int) Load 8(iid) + 66: 40(int) Bitcast 65 + 67: 59(ivec2) CompositeConstruct 66 66 + 68: 6(int) Load 16(gid) + 70: 6(int) IAdd 68 69 + 71: 48(ptr) AccessChain 34(mem) 70 + 72: 31(fvec4) Load 71 + ImageWrite 64 67 72 + MemoryBarrier 69 73 + ControlBarrier 74 74 73 + 85: 84(ptr) AccessChain 80(mytask) 41 + Store 85 83 + 89: 84(ptr) AccessChain 80(mytask) 51 41 + Store 89 88 + 93: 84(ptr) AccessChain 80(mytask) 51 51 + Store 93 92 + 95: 6(int) Load 16(gid) + 96: 6(int) UMod 95 74 + 97: 84(ptr) AccessChain 80(mytask) 51 96 + 98: 75(fvec2) Load 97 + 99: 84(ptr) AccessChain 80(mytask) 51 94 + Store 99 98 + MemoryBarrier 69 73 + ControlBarrier 74 74 73 + EmitMeshTasksEXT 76 69 69 80(mytask) + Return + FunctionEnd diff --git a/Test/baseResults/test.conf b/Test/baseResults/test.conf index 98b2a84165..e4cf409ad4 100644 --- a/Test/baseResults/test.conf +++ b/Test/baseResults/test.conf @@ -90,6 +90,15 @@ MaxTaskWorkGroupSizeX_NV 32 MaxTaskWorkGroupSizeY_NV 1 MaxTaskWorkGroupSizeZ_NV 1 MaxMeshViewCountNV 4 +MaxMeshOutputVerticesEXT 256 +MaxMeshOutputPrimitivesEXT 256 +MaxMeshWorkGroupSizeX_EXT 128 +MaxMeshWorkGroupSizeY_EXT 128 +MaxMeshWorkGroupSizeZ_EXT 128 +MaxTaskWorkGroupSizeX_EXT 128 +MaxTaskWorkGroupSizeY_EXT 128 +MaxTaskWorkGroupSizeZ_EXT 128 +MaxMeshViewCountEXT 4 MaxDualSourceDrawBuffersEXT 1 nonInductiveForLoops 1 whileLoops 1 diff --git a/Test/spv.460.subgroupEXT.mesh b/Test/spv.460.subgroupEXT.mesh new file mode 100644 index 0000000000..8ccc14e2ee --- /dev/null +++ b/Test/spv.460.subgroupEXT.mesh @@ -0,0 +1,164 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y=1, local_size_z=1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of builtins in mesh shaders: + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + uint vertexCount = MAX_VER; // vertexCount <= max_vertices + uint primitiveCount = MAX_PRIM; // primitiveCount <= max_primtives + SetMeshOutputsEXT(vertexCount, primitiveCount); + + gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0); + gl_MeshVerticesEXT[iid].gl_PointSize = 2.0; + gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position; + gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize; + gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3]; + gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesEXT[iid].gl_Layer = 7; + gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID; + gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer; + gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex; + gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = false; + + BARRIER(); + + // check bound limits + gl_PrimitiveTriangleIndicesEXT[0] = uvec3(1, 1, 1); // range is between [0, vertexCount-1] + gl_PrimitiveTriangleIndicesEXT[primitiveCount - 1] = uvec3(2, 2, 2); // array size is primitiveCount*3 for triangle + gl_PrimitiveTriangleIndicesEXT[gid] = gl_PrimitiveTriangleIndicesEXT[gid-1]; + + + BARRIER(); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); + gl_NumSubgroups; // allowed in mesh + gl_SubgroupID; // allowed in mesh + subgroupMemoryBarrierShared(); // allowed in mesh +} + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} diff --git a/Test/spv.460.subgroupEXT.task b/Test/spv.460.subgroupEXT.task new file mode 100644 index 0000000000..cffe98e3bd --- /dev/null +++ b/Test/spv.460.subgroupEXT.task @@ -0,0 +1,153 @@ +#version 460 + + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y=1, local_size_z=1) in; + +// test use of shared memory in task shaders: +layout(binding=0) writeonly uniform image2D uni_image; +uniform block0 { + uint uni_value; +}; +shared vec4 mem[10]; + +// test use of task memory in task shaders: +struct Task { + vec2 dummy; + vec2 submesh[3]; +}; + +taskPayloadSharedEXT Task mytask; +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + // 1. shared memory load and stores + for (uint i = 0; i < 10; ++i) { + mem[i] = vec4(i + uni_value); + } + imageStore(uni_image, ivec2(iid), mem[gid]); + imageStore(uni_image, ivec2(iid), mem[gid+1]); + + BARRIER(); + + // 2. task memory stores + + mytask.dummy = vec2(30.0, 31.0); + mytask.submesh[0] = vec2(32.0, 33.0); + mytask.submesh[1] = vec2(34.0, 35.0); + mytask.submesh[2] = mytask.submesh[gid%2]; + + BARRIER(); + + // 3. emit task count under uniform control flow + EmitMeshTasksEXT(3U, 1U, 1U); +} + +#extension GL_KHR_shader_subgroup_basic: enable +void basic_works (void) +{ + gl_SubgroupSize; + gl_SubgroupInvocationID; + subgroupBarrier(); + subgroupMemoryBarrier(); + subgroupMemoryBarrierBuffer(); + subgroupMemoryBarrierImage(); + subgroupElect(); + gl_NumSubgroups; // allowed in task + gl_SubgroupID; // allowed in task + subgroupMemoryBarrierShared(); // allowed in task +} + +#extension GL_KHR_shader_subgroup_ballot: enable +void ballot_works(vec4 f4) { + gl_SubgroupEqMask; + gl_SubgroupGeMask; + gl_SubgroupGtMask; + gl_SubgroupLeMask; + gl_SubgroupLtMask; + subgroupBroadcast(f4, 0); + subgroupBroadcastFirst(f4); + uvec4 ballot = subgroupBallot(false); + subgroupInverseBallot(uvec4(0x1)); + subgroupBallotBitExtract(ballot, 0); + subgroupBallotBitCount(ballot); + subgroupBallotInclusiveBitCount(ballot); + subgroupBallotExclusiveBitCount(ballot); + subgroupBallotFindLSB(ballot); + subgroupBallotFindMSB(ballot); +} + +#extension GL_KHR_shader_subgroup_vote: enable +void vote_works(vec4 f4) +{ + subgroupAll(true); + subgroupAny(false); + subgroupAllEqual(f4); +} + +#extension GL_KHR_shader_subgroup_shuffle: enable +#extension GL_KHR_shader_subgroup_shuffle_relative: enable +void shuffle_works(vec4 f4) +{ + subgroupShuffle(f4, 0); + subgroupShuffleXor(f4, 0x1); + subgroupShuffleUp(f4, 1); + subgroupShuffleDown(f4, 1); +} + +#extension GL_KHR_shader_subgroup_arithmetic: enable +void arith_works(vec4 f4) +{ + uvec4 ballot; + subgroupAdd(f4); + subgroupMul(f4); + subgroupMin(f4); + subgroupMax(f4); + subgroupAnd(ballot); + subgroupOr(ballot); + subgroupXor(ballot); + subgroupInclusiveAdd(f4); + subgroupInclusiveMul(f4); + subgroupInclusiveMin(f4); + subgroupInclusiveMax(f4); + subgroupInclusiveAnd(ballot); + subgroupInclusiveOr(ballot); + subgroupInclusiveXor(ballot); + subgroupExclusiveAdd(f4); + subgroupExclusiveMul(f4); + subgroupExclusiveMin(f4); + subgroupExclusiveMax(f4); + subgroupExclusiveAnd(ballot); + subgroupExclusiveOr(ballot); + subgroupExclusiveXor(ballot); +} + +#extension GL_KHR_shader_subgroup_clustered: enable +void clustered_works(vec4 f4) +{ + uvec4 ballot = uvec4(0x55,0,0,0); + subgroupClusteredAdd(f4, 2); + subgroupClusteredMul(f4, 2); + subgroupClusteredMin(f4, 2); + subgroupClusteredMax(f4, 2); + subgroupClusteredAnd(ballot, 2); + subgroupClusteredOr(ballot, 2); + subgroupClusteredXor(ballot, 2); +} + +#extension GL_KHR_shader_subgroup_quad: enable +void quad_works(vec4 f4) +{ + subgroupQuadBroadcast(f4, 0); + subgroupQuadSwapHorizontal(f4); + subgroupQuadSwapVertical(f4); + subgroupQuadSwapDiagonal(f4); +} + diff --git a/Test/spv.atomiAddEXT.error.mesh b/Test/spv.atomiAddEXT.error.mesh new file mode 100644 index 0000000000..5d4247db28 --- /dev/null +++ b/Test/spv.atomiAddEXT.error.mesh @@ -0,0 +1,22 @@ +#version 460 +#extension GL_EXT_mesh_shader : enable + +#define MAX_VER 81 +#define MAX_PRIM 32 + +layout(local_size_x = 1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders: +struct taskBlock { + int atom1; +}; +taskPayloadSharedEXT taskBlock mytask; + + +void main() { + atomicAdd(mytask.atom1, 1); +} \ No newline at end of file diff --git a/Test/spv.atomiAddEXT.task b/Test/spv.atomiAddEXT.task new file mode 100644 index 0000000000..703117dd9a --- /dev/null +++ b/Test/spv.atomiAddEXT.task @@ -0,0 +1,27 @@ +#version 460 +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 1) in; + +struct structType{ + int y[3]; +}; + +layout(std430) buffer t2 { + structType f; +} t; + +buffer coherent Buffer { int x; }; + +// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders: +struct taskBlock { + int atom1; +}; +taskPayloadSharedEXT taskBlock mytask; + + +void main() { + atomicAdd(x, 1); + atomicAdd(t.f.y[1], 1); + atomicAdd(mytask.atom1, 1); +} \ No newline at end of file diff --git a/Test/spv.ext.meshShaderBuiltins.mesh b/Test/spv.ext.meshShaderBuiltins.mesh new file mode 100644 index 0000000000..70a97360d7 --- /dev/null +++ b/Test/spv.ext.meshShaderBuiltins.mesh @@ -0,0 +1,74 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y=1, local_size_z=1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of builtins in mesh shaders: + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + uvec3 numWorkGrous = gl_NumWorkGroups; + uint vertexCount = MAX_VER; // vertexCount <= max_vertices + uint primitiveCount = MAX_PRIM; // primitiveCount <= max_primtives + SetMeshOutputsEXT(vertexCount, primitiveCount); + + gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0); + gl_MeshVerticesEXT[iid].gl_PointSize = 2.0; + gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position; + gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize; + gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3]; + gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesEXT[iid].gl_Layer = 7; + gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID; + gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer; + gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex; + gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT; + + BARRIER(); + + // check bound limits + gl_PrimitiveTriangleIndicesEXT[0] = uvec3(257); // should truncate 257 -> 1, range is between [0, vertexCount-1] + gl_PrimitiveTriangleIndicesEXT[primitiveCount - 1] = uvec3(2); // array size is primitiveCount*3 for triangle + gl_PrimitiveTriangleIndicesEXT[gid] = gl_PrimitiveTriangleIndicesEXT[gid-1]; + + BARRIER(); +} + +// test use of builtins enabled by other extensions +#extension GL_ARB_shader_draw_parameters : enable +#extension GL_EXT_multiview : enable + +void testAdditionalBuiltins() +{ + int id = gl_DrawIDARB; // GL_ARB_shader_draw_parameters + int viewIdx = gl_ViewIndex; // GL_EXT_multiview + +} \ No newline at end of file diff --git a/Test/spv.ext.meshShaderRedeclBuiltins.mesh b/Test/spv.ext.meshShaderRedeclBuiltins.mesh new file mode 100644 index 0000000000..8b6703450c --- /dev/null +++ b/Test/spv.ext.meshShaderRedeclBuiltins.mesh @@ -0,0 +1,75 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32, local_size_y = 1, local_size_z = 1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(points) out; + +// test use of redeclared single-view builtins in mesh shaders: + +out gl_MeshPerVertexEXT { + vec4 gl_Position; + float gl_PointSize; + float gl_ClipDistance[4]; + float gl_CullDistance[4]; +} gl_MeshVerticesEXT[MAX_VER]; // explicitly sized to MAX_VER + +perprimitiveEXT out gl_MeshPerPrimitiveEXT { + int gl_PrimitiveID; + int gl_Layer; + int gl_ViewportIndex; + bool gl_CullPrimitiveEXT; + int gl_PrimitiveShadingRateEXT; +} gl_MeshPrimitivesEXT[]; // implicitly sized to MAX_PRIM + +out uint gl_PrimitivePointIndicesEXT[MAX_PRIM]; // explicitly sized to MAX_PRIM + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + SetMeshOutputsEXT(MAX_VER, MAX_PRIM); + + gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0); + gl_MeshVerticesEXT[iid].gl_PointSize = 2.0; + gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position; + gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize; + gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3]; + gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesEXT[iid].gl_Layer = 7; + gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID; + gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer; + gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex; + gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT; + + BARRIER(); + + // check bound limits + gl_PrimitivePointIndicesEXT[0] = 1; + gl_PrimitivePointIndicesEXT[MAX_PRIM - 1] = 2; +} diff --git a/Test/spv.ext.meshShaderTaskMem.mesh b/Test/spv.ext.meshShaderTaskMem.mesh new file mode 100644 index 0000000000..c22f7670d9 --- /dev/null +++ b/Test/spv.ext.meshShaderTaskMem.mesh @@ -0,0 +1,41 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// use of storage qualifier "taskPayloadSharedEXT" in mesh shaders: +struct taskBlock { + float gid1[2]; + vec4 gid2; +}; +taskPayloadSharedEXT taskBlock mytask; + +buffer bufferBlock { + float gid3[2]; + vec4 gid4; +} mybuf; + +layout(location=0) out outBlock { + float gid5; + vec4 gid6; +} myblk[]; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + + myblk[iid].gid5 = mytask.gid1[1] + mybuf.gid3[1]; + myblk[iid].gid6 = mytask.gid2 + mybuf.gid4; +} diff --git a/Test/spv.ext.meshShaderUserDefined.mesh b/Test/spv.ext.meshShaderUserDefined.mesh new file mode 100644 index 0000000000..c8035e2b35 --- /dev/null +++ b/Test/spv.ext.meshShaderUserDefined.mesh @@ -0,0 +1,59 @@ +#version 450 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of user defined interface out blocks: + +// per-primitive block +perprimitiveEXT layout(location=0) out myblock { + float f; + float fArr[4]; + vec3 pos; + vec4 posArr[4]; + mat4 m; + mat3 mArr[2]; +} blk[]; + +// per-vertex block +layout(location=20) out myblock2 { + float f; + vec4 pos; + mat4 m; +} blk2[]; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + blk[iid].f = 11.0; + blk[iid+1].fArr[gid] = blk[iid].f; + blk[iid/2].pos.yzx = vec3(14.0, 15.0, 13.0); + blk[iid*2].posArr[1].yzw = blk[iid/2].pos; + blk[iid/4].m[2].wzyx = vec4(13.0, 14.0, 15.0, 16.0); + blk[iid].mArr[0][1][1] = blk[iid/4].m[2].w; + blk[iid*4].mArr[1][gid] = vec3(17.0, 18.0, 19.0); + + BARRIER(); + + blk2[iid].f = blk2[iid-1].f + 20.0; + blk2[iid].pos = vec4(21.0, 22.0, 23.0, 24.0); + blk2[iid+1].m[gid] = blk2[iid].pos; + blk2[iid+1].m[gid][2] = 29.0; + blk2[iid+2].m[3] = blk2[iid+1].m[gid]; + + BARRIER(); +} diff --git a/Test/spv.ext.meshTaskShader.task b/Test/spv.ext.meshTaskShader.task new file mode 100644 index 0000000000..074fb23f95 --- /dev/null +++ b/Test/spv.ext.meshTaskShader.task @@ -0,0 +1,51 @@ +#version 450 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable + +layout(local_size_x = 32) in; + +// test use of shared memory in task shaders: +layout(binding=0) writeonly uniform image2D uni_image; +uniform block0 { + uint uni_value; +}; +shared vec4 mem[10]; + +// use of storage qualifier "taskPayloadSharedEXT" in task shaders +struct Task { + vec2 dummy; + vec2 submesh[3]; +}; +taskPayloadSharedEXT Task mytask; + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + + // 1. shared memory load and stores + for (uint i = 0; i < 10; ++i) { + mem[i] = vec4(i + uni_value); + } + imageStore(uni_image, ivec2(iid), mem[gid]); + imageStore(uni_image, ivec2(iid), mem[gid+1]); + + BARRIER(); + + // 2. task memory stores + + mytask.dummy = vec2(30.0, 31.0); + mytask.submesh[0] = vec2(32.0, 33.0); + mytask.submesh[1] = vec2(34.0, 35.0); + mytask.submesh[2] = mytask.submesh[gid%2]; + + BARRIER(); + + // 3. emit task count under uniform control flow + EmitMeshTasksEXT(3U, 1U, 1U); + +} diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 0e691a1f7c..ead005c32f 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -192,10 +192,10 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) return EShLangMiss; case GLSLANG_STAGE_CALLABLE_NV: return EShLangCallable; - case GLSLANG_STAGE_TASK_NV: - return EShLangTaskNV; - case GLSLANG_STAGE_MESH_NV: - return EShLangMeshNV; + case GLSLANG_STAGE_TASK: + return EShLangTask; + case GLSLANG_STAGE_MESH: + return EShLangMesh; default: break; } diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 6a429fd441..156d98b9af 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -105,6 +105,8 @@ enum TStorageQualifier { EvqCallableData, EvqCallableDataIn, + EvqtaskPayloadSharedEXT, + // parameters EvqIn, // also, for 'in' in the grammar before we know if it's a pipeline input or an 'in' parameter EvqOut, // also, for 'out' in the grammar before we know if it's a pipeline output or an 'out' parameter @@ -287,6 +289,11 @@ enum TBuiltInVariable { EbvLayerPerViewNV, EbvMeshViewCountNV, EbvMeshViewIndicesNV, + //GL_EXT_mesh_shader + EbvPrimitivePointIndicesEXT, + EbvPrimitiveLineIndicesEXT, + EbvPrimitiveTriangleIndicesEXT, + EbvCullPrimitiveEXT, // sm builtins EbvWarpsPerSM, @@ -360,6 +367,7 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqHitAttr: return "hitAttributeNV"; break; case EvqCallableData: return "callableDataNV"; break; case EvqCallableDataIn: return "callableDataInNV"; break; + case EvqtaskPayloadSharedEXT: return "taskPayloadSharedEXT"; break; default: return "unknown qualifier"; } } @@ -496,6 +504,11 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvLayerPerViewNV: return "LayerPerViewNV"; case EbvMeshViewCountNV: return "MeshViewCountNV"; case EbvMeshViewIndicesNV: return "MeshViewIndicesNV"; + // GL_EXT_mesh_shader + case EbvPrimitivePointIndicesEXT: return "PrimitivePointIndicesEXT"; + case EbvPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; + case EbvPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; + case EbvCullPrimitiveEXT: return "CullPrimitiveEXT"; case EbvWarpsPerSM: return "WarpsPerSMNV"; case EbvSMCount: return "SMCountNV"; diff --git a/glslang/Include/ResourceLimits.h b/glslang/Include/ResourceLimits.h index b670cf163f..b36c8d6273 100644 --- a/glslang/Include/ResourceLimits.h +++ b/glslang/Include/ResourceLimits.h @@ -142,6 +142,15 @@ struct TBuiltInResource { int maxTaskWorkGroupSizeY_NV; int maxTaskWorkGroupSizeZ_NV; int maxMeshViewCountNV; + int maxMeshOutputVerticesEXT; + int maxMeshOutputPrimitivesEXT; + int maxMeshWorkGroupSizeX_EXT; + int maxMeshWorkGroupSizeY_EXT; + int maxMeshWorkGroupSizeZ_EXT; + int maxTaskWorkGroupSizeX_EXT; + int maxTaskWorkGroupSizeY_EXT; + int maxTaskWorkGroupSizeZ_EXT; + int maxMeshViewCountEXT; int maxDualSourceDrawBuffersEXT; TLimits limits; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 93909a30b9..05f90ac213 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -833,7 +833,7 @@ class TQualifier { } storage = EvqUniform; break; - case EbsStorageBuffer : + case EbsStorageBuffer : storage = EvqBuffer; break; #ifndef GLSLANG_WEB @@ -856,6 +856,7 @@ class TQualifier { bool isPerPrimitive() const { return perPrimitiveNV; } bool isPerView() const { return perViewNV; } bool isTaskMemory() const { return perTaskNV; } + bool isTaskPayload() const { return storage == EvqtaskPayloadSharedEXT; } bool isAnyPayload() const { return storage == EvqPayload || storage == EvqPayloadIn; } @@ -874,8 +875,8 @@ class TQualifier { case EShLangTessEvaluation: return ! patch && isPipeInput(); case EShLangFragment: - return (pervertexNV || pervertexEXT) && isPipeInput(); - case EShLangMeshNV: + return pervertexNV && isPipeInput(); + case EShLangMesh: return ! perTaskNV && isPipeOutput(); default: @@ -2543,7 +2544,7 @@ class TType { void setStruct(TTypeList* s) { assert(isStruct()); structure = s; } TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads void setBasicType(const TBasicType& t) { basicType = t; } - + int computeNumComponents() const { int components = 0; diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 9e5909ce88..41347c27c7 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -148,6 +148,15 @@ typedef struct glslang_resource_s { int max_task_work_group_size_y_nv; int max_task_work_group_size_z_nv; int max_mesh_view_count_nv; + int max_mesh_output_vertices_ext; + int max_mesh_output_primitives_ext; + int max_mesh_work_group_size_x_ext; + int max_mesh_work_group_size_y_ext; + int max_mesh_work_group_size_z_ext; + int max_task_work_group_size_x_ext; + int max_task_work_group_size_y_ext; + int max_task_work_group_size_z_ext; + int max_mesh_view_count_ext; int maxDualSourceDrawBuffersEXT; glslang_limits_t limits; diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index dc9009f302..cd24b94723 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -49,8 +49,10 @@ typedef enum { GLSLANG_STAGE_CLOSESTHIT_NV, GLSLANG_STAGE_MISS_NV, GLSLANG_STAGE_CALLABLE_NV, - GLSLANG_STAGE_TASK_NV, - GLSLANG_STAGE_MESH_NV, + GLSLANG_STAGE_TASK, + GLSLANG_STAGE_TASK_NV = GLSLANG_STAGE_TASK, + GLSLANG_STAGE_MESH, + GLSLANG_STAGE_MESH_NV = GLSLANG_STAGE_MESH, LAST_ELEMENT_MARKER(GLSLANG_STAGE_COUNT), } glslang_stage_t; // would be better as stage, but this is ancient now @@ -68,8 +70,10 @@ typedef enum { GLSLANG_STAGE_CLOSESTHIT_NV_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT_NV), GLSLANG_STAGE_MISS_NV_MASK = (1 << GLSLANG_STAGE_MISS_NV), GLSLANG_STAGE_CALLABLE_NV_MASK = (1 << GLSLANG_STAGE_CALLABLE_NV), - GLSLANG_STAGE_TASK_NV_MASK = (1 << GLSLANG_STAGE_TASK_NV), - GLSLANG_STAGE_MESH_NV_MASK = (1 << GLSLANG_STAGE_MESH_NV), + GLSLANG_STAGE_TASK_MASK = (1 << GLSLANG_STAGE_TASK), + GLSLANG_STAGE_TASK_NV_MASK = GLSLANG_STAGE_TASK_MASK, + GLSLANG_STAGE_MESH_MASK = (1 << GLSLANG_STAGE_MESH), + GLSLANG_STAGE_MESH_NV_MASK = GLSLANG_STAGE_MESH_MASK, LAST_ELEMENT_MARKER(GLSLANG_STAGE_MASK_COUNT), } glslang_stage_mask_t; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index a64ed68378..0c6f9fd2ed 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -934,6 +934,8 @@ enum TOperator { EOpExecuteCallableNV, EOpExecuteCallableKHR, EOpWritePackedPrimitiveIndices4x8NV, + EOpEmitMeshTasksEXT, + EOpSetMeshOutputsEXT, // // GL_EXT_ray_query operations diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index ff3db7cd0f..35681a5f55 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -2268,11 +2268,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n" ); - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void subgroupMemoryBarrierShared();" "\n" ); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "void subgroupMemoryBarrierShared();" "\n" ); @@ -4298,10 +4298,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void barrier();" ); if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void barrier();" ); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "void barrier();" ); } @@ -4326,11 +4326,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("void memoryBarrierImage();"); } if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "void memoryBarrierShared();" "void groupMemoryBarrier();" ); @@ -4655,10 +4655,21 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // Builtins for GL_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "void writePackedPrimitiveIndices4x8NV(uint, uint);" "\n"); } + // Builtins for GL_EXT_mesh_shader + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { + // Builtins for GL_EXT_mesh_shader + stageBuiltins[EShLangTask].append( + "void EmitMeshTasksEXT(uint, uint, uint);" + "\n"); + + stageBuiltins[EShLangMesh].append( + "void SetMeshOutputsEXT(uint, uint);" + "\n"); + } #endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB @@ -4855,7 +4866,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { // per-vertex attributes - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "out gl_MeshPerVertexNV {" "vec4 gl_Position;" "float gl_PointSize;" @@ -4868,7 +4879,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ); // per-primitive attributes - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "perprimitiveNV out gl_MeshPerPrimitiveNV {" "int gl_PrimitiveID;" "int gl_Layer;" @@ -4879,7 +4890,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "} gl_MeshPrimitivesNV[];" ); - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "out uint gl_PrimitiveCountNV;" "out uint gl_PrimitiveIndicesNV[];" @@ -4893,10 +4904,38 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp uvec3 gl_GlobalInvocationID;" "in highp uint gl_LocalInvocationIndex;" + "\n"); + // GL_EXT_mesh_shader + stageBuiltins[EShLangMesh].append( + "out uint gl_PrimitivePointIndicesEXT[];" + "out uvec2 gl_PrimitiveLineIndicesEXT[];" + "out uvec3 gl_PrimitiveTriangleIndicesEXT[];" + "in highp uvec3 gl_NumWorkGroups;" "\n"); - stageBuiltins[EShLangTaskNV].append( + // per-vertex attributes + stageBuiltins[EShLangMesh].append( + "out gl_MeshPerVertexEXT {" + "vec4 gl_Position;" + "float gl_PointSize;" + "float gl_ClipDistance[];" + "float gl_CullDistance[];" + "} gl_MeshVerticesEXT[];" + ); + + // per-primitive attributes + stageBuiltins[EShLangMesh].append( + "perprimitiveEXT out gl_MeshPerPrimitiveEXT {" + "int gl_PrimitiveID;" + "int gl_Layer;" + "int gl_ViewportIndex;" + "bool gl_CullPrimitiveEXT;" + "int gl_PrimitiveShadingRateEXT;" + "} gl_MeshPrimitivesEXT[];" + ); + + stageBuiltins[EShLangTask].append( "out uint gl_TaskCountNV;" "const highp uvec3 gl_WorkGroupSize = uvec3(1,1,1);" @@ -4909,27 +4948,28 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint gl_MeshViewCountNV;" "in uint gl_MeshViewIndicesNV[4];" - + "in highp uvec3 gl_NumWorkGroups;" "\n"); } if (profile != EEsProfile && version >= 450) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in int gl_DrawIDARB;" // GL_ARB_shader_draw_parameters + "in int gl_ViewIndex;" // GL_EXT_multiview "\n"); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "in highp int gl_DeviceIndex;" // GL_EXT_device_group "in int gl_DrawIDARB;" // GL_ARB_shader_draw_parameters "\n"); if (version >= 460) { - stageBuiltins[EShLangMeshNV].append( + stageBuiltins[EShLangMesh].append( "in int gl_DrawID;" "\n"); - stageBuiltins[EShLangTaskNV].append( + stageBuiltins[EShLangTask].append( "in int gl_DrawID;" "\n"); } @@ -5704,8 +5744,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangGeometry] .append(ballotDecls); stageBuiltins[EShLangCompute] .append(ballotDecls); stageBuiltins[EShLangFragment] .append(fragmentBallotDecls); - stageBuiltins[EShLangMeshNV] .append(ballotDecls); - stageBuiltins[EShLangTaskNV] .append(ballotDecls); + stageBuiltins[EShLangMesh] .append(ballotDecls); + stageBuiltins[EShLangTask] .append(ballotDecls); stageBuiltins[EShLangRayGen] .append(rtBallotDecls); stageBuiltins[EShLangIntersect] .append(rtBallotDecls); // No volatile qualifier on these builtins in any-hit @@ -5773,10 +5813,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangCompute] .append(subgroupDecls); stageBuiltins[EShLangCompute] .append(computeSubgroupDecls); stageBuiltins[EShLangFragment] .append(fragmentSubgroupDecls); - stageBuiltins[EShLangMeshNV] .append(subgroupDecls); - stageBuiltins[EShLangMeshNV] .append(computeSubgroupDecls); - stageBuiltins[EShLangTaskNV] .append(subgroupDecls); - stageBuiltins[EShLangTaskNV] .append(computeSubgroupDecls); + stageBuiltins[EShLangMesh] .append(subgroupDecls); + stageBuiltins[EShLangMesh] .append(computeSubgroupDecls); + stageBuiltins[EShLangTask] .append(subgroupDecls); + stageBuiltins[EShLangTask] .append(computeSubgroupDecls); stageBuiltins[EShLangRayGen] .append(rtSubgroupDecls); stageBuiltins[EShLangIntersect] .append(rtSubgroupDecls); // No volatile qualifier on these builtins in any-hit @@ -8883,7 +8923,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } break; - case EShLangMeshNV: + case EShLangMesh: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { // per-vertex builtins symbolTable.setVariableExtensions("gl_MeshVerticesNV", "gl_Position", 1, &E_GL_NV_mesh_shader); @@ -8927,12 +8967,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_PrimitiveIndicesNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewCountNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewIndicesNV", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); - + if (profile != EEsProfile) { + symbolTable.setVariableExtensions("gl_WorkGroupSize", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); + } BuiltInVariable("gl_PrimitiveCountNV", EbvPrimitiveCountNV, symbolTable); BuiltInVariable("gl_PrimitiveIndicesNV", EbvPrimitiveIndicesNV, symbolTable); BuiltInVariable("gl_MeshViewCountNV", EbvMeshViewCountNV, symbolTable); @@ -8950,12 +8997,54 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 1, &E_GL_NV_mesh_shader); // builtin functions - symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("barrier", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + } + symbolTable.setFunctionExtensions("writePackedPrimitiveIndices4x8NV", 1, &E_GL_NV_mesh_shader); } if (profile != EEsProfile && version >= 450) { + // GL_EXT_Mesh_shader + symbolTable.setVariableExtensions("gl_PrimitivePointIndicesEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_PrimitiveLineIndicesEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_PrimitiveTriangleIndicesEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_EXT_mesh_shader); + + BuiltInVariable("gl_PrimitivePointIndicesEXT", EbvPrimitivePointIndicesEXT, symbolTable); + BuiltInVariable("gl_PrimitiveLineIndicesEXT", EbvPrimitiveLineIndicesEXT, symbolTable); + BuiltInVariable("gl_PrimitiveTriangleIndicesEXT", EbvPrimitiveTriangleIndicesEXT, symbolTable); + BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable); + + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_Position", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_PointSize", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_ClipDistance", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshVerticesEXT", "gl_CullDistance", 1, &E_GL_EXT_mesh_shader); + + BuiltInVariable("gl_MeshVerticesEXT", "gl_Position", EbvPosition, symbolTable); + BuiltInVariable("gl_MeshVerticesEXT", "gl_PointSize", EbvPointSize, symbolTable); + BuiltInVariable("gl_MeshVerticesEXT", "gl_ClipDistance", EbvClipDistance, symbolTable); + BuiltInVariable("gl_MeshVerticesEXT", "gl_CullDistance", EbvCullDistance, symbolTable); + + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveID", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_Layer", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_ViewportIndex", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_mesh_shader); + + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveID", EbvPrimitiveId, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_Layer", EbvLayer, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_ViewportIndex", EbvViewportIndex, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", EbvCullPrimitiveEXT, symbolTable); + BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", EbvPrimitiveShadingRateKHR, symbolTable); + + symbolTable.setFunctionExtensions("SetMeshOutputsEXT", 1, &E_GL_EXT_mesh_shader); + // GL_EXT_device_group symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); @@ -8966,6 +9055,9 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if (version >= 460) { BuiltInVariable("gl_DrawID", EbvDrawId, symbolTable); } + // GL_EXT_multiview + BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); + symbolTable.setVariableExtensions("gl_ViewIndex", 1, &E_GL_EXT_multiview); // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); @@ -9035,16 +9127,24 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } break; - case EShLangTaskNV: + case EShLangTask: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setVariableExtensions("gl_TaskCountNV", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); - symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewCountNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MeshViewIndicesNV", 1, &E_GL_NV_mesh_shader); + if (profile != EEsProfile) { + symbolTable.setVariableExtensions("gl_WorkGroupSize", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setVariableExtensions("gl_WorkGroupSize", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_WorkGroupID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_GlobalInvocationID", 1, &E_GL_NV_mesh_shader); + symbolTable.setVariableExtensions("gl_LocalInvocationIndex", 1, &E_GL_NV_mesh_shader); + } BuiltInVariable("gl_TaskCountNV", EbvTaskCountNV, symbolTable); BuiltInVariable("gl_WorkGroupSize", EbvWorkGroupSize, symbolTable); @@ -9058,12 +9158,23 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_MaxTaskWorkGroupSizeNV", 1, &E_GL_NV_mesh_shader); symbolTable.setVariableExtensions("gl_MaxMeshViewCountNV", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); - symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + if (profile != EEsProfile) { + symbolTable.setFunctionExtensions("barrier", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", Num_AEP_mesh_shader, AEP_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", Num_AEP_mesh_shader, AEP_mesh_shader); + } else { + symbolTable.setFunctionExtensions("barrier", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("memoryBarrierShared", 1, &E_GL_NV_mesh_shader); + symbolTable.setFunctionExtensions("groupMemoryBarrier", 1, &E_GL_NV_mesh_shader); + } } if (profile != EEsProfile && version >= 450) { + // GL_EXT_mesh_shader + symbolTable.setFunctionExtensions("EmitMeshTasksEXT", 1, &E_GL_EXT_mesh_shader); + symbolTable.setVariableExtensions("gl_NumWorkGroups", 1, &E_GL_EXT_mesh_shader); + BuiltInVariable("gl_NumWorkGroups", EbvNumWorkGroups, symbolTable); + // GL_EXT_device_group symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); @@ -9687,17 +9798,27 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); } break; - case EShLangMeshNV: + case EShLangMesh: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.relateToOperator("writePackedPrimitiveIndices4x8NV", EOpWritePackedPrimitiveIndices4x8NV); + symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); + symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); + symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); } - // fall through - case EShLangTaskNV: + + if (profile != EEsProfile && version >= 450) { + symbolTable.relateToOperator("SetMeshOutputsEXT", EOpSetMeshOutputsEXT); + } + break; + case EShLangTask: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.relateToOperator("memoryBarrierShared", EOpMemoryBarrierShared); symbolTable.relateToOperator("groupMemoryBarrier", EOpGroupMemoryBarrier); symbolTable.relateToOperator("subgroupMemoryBarrierShared", EOpSubgroupMemoryBarrierShared); } + if (profile != EEsProfile && version >= 450) { + symbolTable.relateToOperator("EmitMeshTasksEXT", EOpEmitMeshTasksEXT); + } break; default: diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index e6e3db8bc3..e2ac43ca19 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -502,6 +502,16 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb error(loc, "cannot be used (maybe an instance name is needed)", string->c_str(), ""); variable = nullptr; } + + if (language == EShLangMesh && variable) { + TLayoutGeometry primitiveType = intermediate.getOutputPrimitive(); + if ((variable->getMangledName() == "gl_PrimitiveTriangleIndicesEXT" && primitiveType != ElgTriangles) || + (variable->getMangledName() == "gl_PrimitiveLineIndicesEXT" && primitiveType != ElgLines) || + (variable->getMangledName() == "gl_PrimitivePointIndicesEXT" && primitiveType != ElgPoints)) { + error(loc, "cannot be used (ouput primitive type mismatch)", string->c_str(), ""); + variable = nullptr; + } + } } else { if (symbol) error(loc, "variable name expected", string->c_str(), ""); @@ -717,7 +727,7 @@ bool TParseContext::isIoResizeArray(const TType& type) const ! type.getQualifier().patch) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || - (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && + (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } @@ -794,7 +804,7 @@ void TParseContext::checkIoArraysConsistency(const TSourceLoc &loc, bool tailOnl // As I/O array sizes don't change, fetch requiredSize only once, // except for mesh shaders which could have different I/O array sizes based on type qualifiers. - if (firstIteration || (language == EShLangMeshNV)) { + if (firstIteration || (language == EShLangMesh)) { requiredSize = getIoArrayImplicitSize(type.getQualifier(), &featureString); if (requiredSize == 0) break; @@ -823,10 +833,11 @@ int TParseContext::getIoArrayImplicitSize(const TQualifier &qualifier, TString * // Number of vertices for Fragment shader is always three. expectedSize = 3; str = "vertices"; - } else if (language == EShLangMeshNV) { + } else if (language == EShLangMesh) { unsigned int maxPrimitives = intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0; - if (qualifier.builtIn == EbvPrimitiveIndicesNV) { + if (qualifier.builtIn == EbvPrimitiveIndicesNV || qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT || + qualifier.builtIn == EbvPrimitiveLineIndicesEXT || qualifier.builtIn == EbvPrimitivePointIndicesEXT) { expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive()); str = "max_primitives*"; str += TQualifier::getGeometryString(intermediate.getOutputPrimitive()); @@ -858,7 +869,7 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS if (type.getOuterArraySize() > requiredSize) error(loc, " cannot be greater than 3 for pervertexEXT", feature, name.c_str()); } - else if (language == EShLangMeshNV) + else if (language == EShLangMesh) error(loc, "inconsistent output array size of", feature, name.c_str()); else assert(0); @@ -2000,18 +2011,18 @@ void TParseContext::memorySemanticsCheck(const TSourceLoc& loc, const TFunction& break; } - if ((semantics & gl_SemanticsAcquire) && + if ((semantics & gl_SemanticsAcquire) && (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore)) { error(loc, "gl_SemanticsAcquire must not be used with (image) atomic store", fnCandidate.getName().c_str(), ""); } - if ((semantics & gl_SemanticsRelease) && + if ((semantics & gl_SemanticsRelease) && (callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) { error(loc, "gl_SemanticsRelease must not be used with (image) atomic load", fnCandidate.getName().c_str(), ""); } - if ((semantics & gl_SemanticsAcquireRelease) && - (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore || + if ((semantics & gl_SemanticsAcquireRelease) && + (callNode.getOp() == EOpAtomicStore || callNode.getOp() == EOpImageAtomicStore || callNode.getOp() == EOpAtomicLoad || callNode.getOp() == EOpImageAtomicLoad)) { error(loc, "gl_SemanticsAcquireRelease must not be used with (image) atomic load/store", fnCandidate.getName().c_str(), ""); @@ -2462,7 +2473,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true , true); const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr; const TQualifier& qualifier = (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier(); - if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer) + if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer && qualifier.storage != EvqtaskPayloadSharedEXT) error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.", fnCandidate.getName().c_str(), ""); @@ -2560,7 +2571,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } if (profile != EEsProfile && version < 450) { - if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && + if ((*argp)[0]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[0]->getAsTyped()->getBasicType() != EbtDouble && (*argp)[1]->getAsTyped()->getBasicType() != EbtFloat && (*argp)[1]->getAsTyped()->getBasicType() != EbtDouble && @@ -2995,6 +3006,10 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt message = "can't modify EvqFragStencil if using early_fragment_tests"; break; + case EvqtaskPayloadSharedEXT: + if (language == EShLangMesh) + message = "can't modify variable with storage qualifier taskPayloadSharedEXT in mesh shaders"; + break; default: break; } @@ -3033,7 +3048,7 @@ void TParseContext::rValueErrorCheck(const TSourceLoc& loc, const char* op, TInt if (symNode && symNode->getQualifier().isExplicitInterpolation()) error(loc, "can't read from explicitly-interpolated object: ", op, symNode->getName().c_str()); - // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned. + // local_size_{xyz} must be assigned or specialized before gl_WorkGroupSize can be assigned. if(node->getQualifier().builtIn == EbvWorkGroupSize && !(intermediate.isLocalSizeSet() || intermediate.isLocalSizeSpecialized())) error(loc, "can't read from gl_WorkGroupSize before a fixed workgroup size has been declared", op, ""); @@ -3831,6 +3846,9 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (qualifier.isPatch() && qualifier.isInterpolation()) error(loc, "cannot use interpolation qualifiers with patch", "patch", ""); + if (qualifier.isTaskPayload() && publicType.basicType == EbtBlock) + error(loc, "taskPayloadSharedEXT variables should not be declared as interface blocks", "taskPayloadSharedEXT", ""); + if (qualifier.isTaskMemory() && publicType.basicType != EbtBlock) error(loc, "taskNV variables can be declared only as blocks", "taskNV", ""); @@ -3988,7 +4006,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons (src.workgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.subgroupcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.shadercallcoherent)) || (src.shadercallcoherent && (dst.coherent || dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent)))) { - error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed", + error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed", GetPrecisionQualifierString(src.precision), ""); } #endif @@ -4346,10 +4364,10 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua extensionsTurnedOn(Num_AEP_tessellation_shader, AEP_tessellation_shader)) return; break; - case EShLangMeshNV: + case EShLangMesh: if (qualifier.storage == EvqVaryingOut) if ((isEsProfile() && version >= 320) || - extensionTurnedOn(E_GL_NV_mesh_shader)) + extensionsTurnedOn(Num_AEP_mesh_shader, AEP_mesh_shader)) return; break; default: @@ -4633,6 +4651,9 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS identifier == "gl_SampleMask" || identifier == "gl_Layer" || identifier == "gl_PrimitiveIndicesNV" || + identifier == "gl_PrimitivePointIndicesEXT" || + identifier == "gl_PrimitiveLineIndicesEXT" || + identifier == "gl_PrimitiveTriangleIndicesEXT" || identifier == "gl_TexCoord") { // Find the existing symbol, if any. @@ -4771,7 +4792,8 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); if (blockName != "gl_PerVertex" && blockName != "gl_PerFragment" && - blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV") { + blockName != "gl_MeshPerVertexNV" && blockName != "gl_MeshPerPrimitiveNV" && + blockName != "gl_MeshPerVertexEXT" && blockName != "gl_MeshPerPrimitiveEXT") { error(loc, "cannot redeclare block: ", "block declaration", blockName.c_str()); return; } @@ -5340,11 +5362,11 @@ void TParseContext::finish() if (!isEsProfile() && version < 430) requireExtensions(getCurrentLoc(), 1, &E_GL_ARB_compute_shader, "compute shaders"); break; - case EShLangTaskNV: - requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "task shaders"); + case EShLangTask: + requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "task shaders"); break; - case EShLangMeshNV: - requireExtensions(getCurrentLoc(), 1, &E_GL_NV_mesh_shader, "mesh shaders"); + case EShLangMesh: + requireExtensions(getCurrentLoc(), Num_AEP_mesh_shader, AEP_mesh_shader, "mesh shaders"); break; default: break; @@ -5454,12 +5476,12 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi intermediate.setUsePhysicalStorageBuffer(); return; } - if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMeshNV) { + if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMesh) { if (id == TQualifier::getGeometryString(ElgTriangles)) { publicType.shaderQualifiers.geometry = ElgTriangles; return; } - if (language == EShLangGeometry || language == EShLangMeshNV) { + if (language == EShLangGeometry || language == EShLangMesh) { if (id == TQualifier::getGeometryString(ElgPoints)) { publicType.shaderQualifiers.geometry = ElgPoints; return; @@ -5737,7 +5759,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } else if (id == "location") { profileRequires(loc, EEsProfile, 300, nullptr, "location"); - const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; + const char* exts[2] = { E_GL_ARB_separate_shader_objects, E_GL_ARB_explicit_attrib_location }; // GL_ARB_explicit_uniform_location requires 330 or GL_ARB_explicit_attrib_location we do not need to add it here profileRequires(loc, ~EEsProfile, 330, 2, exts, "location"); if ((unsigned int)value >= TQualifier::layoutLocationEnd) @@ -5947,9 +5969,9 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } break; - case EShLangMeshNV: + case EShLangMesh: if (id == "max_vertices") { - requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_vertices"); + requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_vertices"); publicType.shaderQualifiers.vertices = value; if (value > resources.maxMeshOutputVerticesNV) error(loc, "too large, must be less than gl_MaxMeshOutputVerticesNV", "max_vertices", ""); @@ -5958,7 +5980,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } if (id == "max_primitives") { - requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "max_primitives"); + requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_primitives"); publicType.shaderQualifiers.primitives = value; if (value > resources.maxMeshOutputPrimitivesNV) error(loc, "too large, must be less than gl_MaxMeshOutputPrimitivesNV", "max_primitives", ""); @@ -5968,14 +5990,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } // Fall through - case EShLangTaskNV: + case EShLangTask: // Fall through #endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { #ifndef GLSLANG_WEB - if (language == EShLangMeshNV || language == EShLangTaskNV) { - requireExtensions(loc, 1, &E_GL_NV_mesh_shader, "gl_WorkGroupSize"); + if (language == EShLangMesh || language == EShLangTask) { + requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "gl_WorkGroupSize"); } else { profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); @@ -6251,6 +6273,9 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (type.getBasicType() == EbtBlock) error(loc, "cannot apply to uniform or buffer block", "location", ""); break; + case EvqtaskPayloadSharedEXT: + error(loc, "cannot apply to taskPayloadSharedEXT", "location", ""); + break; #ifndef GLSLANG_WEB case EvqPayload: case EvqPayloadIn: @@ -6612,7 +6637,7 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua error(loc, message, "local_size id", ""); } if (shaderQualifiers.vertices != TQualifier::layoutNotSet) { - if (language == EShLangGeometry || language == EShLangMeshNV) + if (language == EShLangGeometry || language == EShLangMesh) error(loc, message, "max_vertices", ""); else if (language == EShLangTessControl) error(loc, message, "vertices", ""); @@ -6624,7 +6649,7 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua if (shaderQualifiers.postDepthCoverage) error(loc, message, "post_depth_coverage", ""); if (shaderQualifiers.primitives != TQualifier::layoutNotSet) { - if (language == EShLangMeshNV) + if (language == EShLangMesh) error(loc, message, "max_primitives", ""); else assert(0); @@ -7270,6 +7295,8 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden requireInt8Arithmetic(loc, "qualifier", "(u)int8 types can only be in uniform block or buffer storage"); } + if (type.getQualifier().storage == EvqtaskPayloadSharedEXT) + intermediate.addTaskPayloadEXTCount(); if (type.getQualifier().storage == EvqShared && type.containsCoopMat()) error(loc, "qualifier", "Cooperative matrix types must not be used in shared memory", ""); @@ -8236,6 +8263,8 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con memberQualifier.perViewNV = currentBlockQualifier.perViewNV; if (currentBlockQualifier.perTaskNV) memberQualifier.perTaskNV = currentBlockQualifier.perTaskNV; + if (currentBlockQualifier.storage == EvqtaskPayloadSharedEXT) + memberQualifier.storage = EvqtaskPayloadSharedEXT; if (memberQualifier.storage == EvqSpirvStorageClass) error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), ""); if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty()) @@ -8536,23 +8565,23 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q // It is a compile-time error to have an input block in a vertex shader or an output block in a fragment shader // "Compute shaders do not permit user-defined input variables..." requireStage(loc, (EShLanguageMask)(EShLangTessControlMask|EShLangTessEvaluationMask|EShLangGeometryMask| - EShLangFragmentMask|EShLangMeshNVMask), "input block"); + EShLangFragmentMask|EShLangMeshMask), "input block"); if (language == EShLangFragment) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "fragment input block"); - } else if (language == EShLangMeshNV && ! qualifier.isTaskMemory()) { + } else if (language == EShLangMesh && ! qualifier.isTaskMemory()) { error(loc, "input blocks cannot be used in a mesh shader", "out", ""); } break; case EvqVaryingOut: profileRequires(loc, ~EEsProfile, 150, E_GL_ARB_separate_shader_objects, "output block"); requireStage(loc, (EShLanguageMask)(EShLangVertexMask|EShLangTessControlMask|EShLangTessEvaluationMask| - EShLangGeometryMask|EShLangMeshNVMask|EShLangTaskNVMask), "output block"); + EShLangGeometryMask|EShLangMeshMask|EShLangTaskMask), "output block"); // ES 310 can have a block before shader_io is turned on, so skip this test for built-ins if (language == EShLangVertex && ! parsingBuiltins) { profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, "vertex output block"); - } else if (language == EShLangMeshNV && qualifier.isTaskMemory()) { + } else if (language == EShLangMesh && qualifier.isTaskMemory()) { error(loc, "can only use on input blocks in mesh shader", "taskNV", ""); - } else if (language == EShLangTaskNV && ! qualifier.isTaskMemory()) { + } else if (language == EShLangTask && ! qualifier.isTaskMemory()) { error(loc, "output blocks cannot be used in a task shader", "out", ""); } break; @@ -8966,7 +8995,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con { #ifndef GLSLANG_WEB if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { - assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMeshNV); + assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMesh); const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; if (publicType.qualifier.storage != EvqVaryingOut) @@ -8978,7 +9007,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con checkIoArraysConsistency(loc); } if (publicType.shaderQualifiers.primitives != TQualifier::layoutNotSet) { - assert(language == EShLangMeshNV); + assert(language == EShLangMesh); const char* id = "max_primitives"; if (publicType.qualifier.storage != EvqVaryingOut) @@ -9002,7 +9031,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con case ElgTrianglesAdjacency: case ElgQuads: case ElgIsolines: - if (language == EShLangMeshNV) { + if (language == EShLangMesh) { error(loc, "cannot apply to input", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } @@ -9019,7 +9048,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con switch (publicType.shaderQualifiers.geometry) { case ElgLines: case ElgTriangles: - if (language != EShLangMeshNV) { + if (language != EShLangMesh) { error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } @@ -9075,24 +9104,56 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); } #ifndef GLSLANG_WEB - else if (language == EShLangMeshNV) { + else if (language == EShLangMesh) { switch (i) { - case 0: max = resources.maxMeshWorkGroupSizeX_NV; break; - case 1: max = resources.maxMeshWorkGroupSizeY_NV; break; - case 2: max = resources.maxMeshWorkGroupSizeZ_NV; break; + case 0: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxMeshWorkGroupSizeX_EXT : + resources.maxMeshWorkGroupSizeX_NV; + break; + case 1: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxMeshWorkGroupSizeY_EXT : + resources.maxMeshWorkGroupSizeY_NV ; + break; + case 2: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxMeshWorkGroupSizeZ_EXT : + resources.maxMeshWorkGroupSizeZ_NV ; + break; default: break; } - if (intermediate.getLocalSize(i) > (unsigned int)max) - error(loc, "too large; see gl_MaxMeshWorkGroupSizeNV", "local_size", ""); - } else if (language == EShLangTaskNV) { + if (intermediate.getLocalSize(i) > (unsigned int)max) { + TString maxsErrtring = "too large, see "; + maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? + "gl_MaxMeshWorkGroupSizeEXT" : "gl_MaxMeshWorkGroupSizeNV"); + error(loc, maxsErrtring.c_str(), "local_size", ""); + } + } else if (language == EShLangTask) { switch (i) { - case 0: max = resources.maxTaskWorkGroupSizeX_NV; break; - case 1: max = resources.maxTaskWorkGroupSizeY_NV; break; - case 2: max = resources.maxTaskWorkGroupSizeZ_NV; break; + case 0: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxTaskWorkGroupSizeX_EXT : + resources.maxTaskWorkGroupSizeX_NV; + break; + case 1: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxTaskWorkGroupSizeY_EXT: + resources.maxTaskWorkGroupSizeY_NV; + break; + case 2: + max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? + resources.maxTaskWorkGroupSizeZ_EXT: + resources.maxTaskWorkGroupSizeZ_NV; + break; default: break; } - if (intermediate.getLocalSize(i) > (unsigned int)max) - error(loc, "too large; see gl_MaxTaskWorkGroupSizeNV", "local_size", ""); + if (intermediate.getLocalSize(i) > (unsigned int)max) { + TString maxsErrtring = "too large, see "; + maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? + "gl_MaxTaskWorkGroupSizeEXT" : "gl_MaxTaskWorkGroupSizeNV"); + error(loc, maxsErrtring.c_str(), "local_size", ""); + } } #endif else { @@ -9181,7 +9242,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "can only apply to 'in'", "derivative_group_linearNV", ""); } // Check mesh out array sizes, once all the necessary out qualifiers are defined. - if ((language == EShLangMeshNV) && + if ((language == EShLangMesh) && (intermediate.getVertices() != TQualifier::layoutNotSet) && (intermediate.getPrimitives() != TQualifier::layoutNotSet) && (intermediate.getOutputPrimitive() != ElgNone)) @@ -9198,7 +9259,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con // Exit early as further checks are not valid return; } -#endif +#endif const TQualifier& qualifier = publicType.qualifier; if (qualifier.isAuxiliary() || @@ -9396,4 +9457,3 @@ const TTypeList* TParseContext::recordStructCopy(TStructRecord& record, const TT } } // end namespace glslang - diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index f53677f929..7f51173ebc 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -758,6 +758,8 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV; (*KeywordMap)["perviewNV"] = PERVIEWNV; (*KeywordMap)["taskNV"] = PERTASKNV; + (*KeywordMap)["perprimitiveEXT"] = PERPRIMITIVEEXT; + (*KeywordMap)["taskPayloadSharedEXT"] = TASKPAYLOADWORKGROUPEXT; (*KeywordMap)["fcoopmatNV"] = FCOOPMATNV; (*KeywordMap)["icoopmatNV"] = ICOOPMATNV; @@ -1740,12 +1742,18 @@ int TScanContext::tokenizeIdentifier() case PERPRIMITIVENV: case PERVIEWNV: case PERTASKNV: - if ((!parseContext.isEsProfile() && parseContext.version >= 450) || - (parseContext.isEsProfile() && parseContext.version >= 320) || + if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_NV_mesh_shader)) return keyword; return identifierOrType(); + case PERPRIMITIVEEXT: + case TASKPAYLOADWORKGROUPEXT: + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_mesh_shader)) + return keyword; + return identifierOrType(); + case FCOOPMATNV: afterType = true; if (parseContext.symbolTable.atBuiltInLevel() || diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index a5ba40e6d9..8acdb189cb 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -391,13 +391,13 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS // check for mesh if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMeshNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangMesh, source, infoSink, commonTable, symbolTables); // check for task if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) - InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTaskNV, source, + InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTask, source, infoSink, commonTable, symbolTables); #endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB @@ -650,8 +650,8 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo version = 460; } break; - case EShLangMeshNV: - case EShLangTaskNV: + case EShLangMesh: + case EShLangTask: if ((profile == EEsProfile && version < 320) || (profile != EEsProfile && version < 450)) { correct = false; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index e24d5c5451..226e946740 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -166,7 +166,8 @@ void TParseVersions::initializeExtensionBehavior() } extensionData; const extensionData exts[] = { {E_GL_EXT_ray_tracing, EShTargetSpv_1_4}, - {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4} + {E_GL_NV_ray_tracing_motion_blur, EShTargetSpv_1_4}, + {E_GL_EXT_mesh_shader, EShTargetSpv_1_4} }; for (size_t ii = 0; ii < sizeof(exts) / sizeof(exts[0]); ii++) { @@ -345,6 +346,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_terminate_invocation] = EBhDisable; extensionBehavior[E_GL_EXT_shared_memory_block] = EBhDisable; extensionBehavior[E_GL_EXT_spirv_intrinsics] = EBhDisable; + extensionBehavior[E_GL_EXT_mesh_shader] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -511,6 +513,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_ray_flags_primitive_culling 1\n" "#define GL_EXT_ray_cull_mask 1\n" "#define GL_EXT_spirv_intrinsics 1\n" + "#define GL_EXT_mesh_shader 1\n" "#define GL_AMD_shader_ballot 1\n" "#define GL_AMD_shader_trinary_minmax 1\n" @@ -641,8 +644,8 @@ void TParseVersions::getPreamble(std::string& preamble) case EShLangClosestHit: preamble += "#define GL_CLOSEST_HIT_SHADER_EXT 1 \n"; break; case EShLangMiss: preamble += "#define GL_MISS_SHADER_EXT 1 \n"; break; case EShLangCallable: preamble += "#define GL_CALLABLE_SHADER_EXT 1 \n"; break; - case EShLangTaskNV: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break; - case EShLangMeshNV: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break; + case EShLangTask: preamble += "#define GL_TASK_SHADER_NV 1 \n"; break; + case EShLangMesh: preamble += "#define GL_MESH_SHADER_NV 1 \n"; break; default: break; } } @@ -668,8 +671,8 @@ const char* StageName(EShLanguage stage) case EShLangClosestHit: return "closest-hit"; case EShLangMiss: return "miss"; case EShLangCallable: return "callable"; - case EShLangMeshNV: return "mesh"; - case EShLangTaskNV: return "task"; + case EShLangMesh: return "mesh"; + case EShLangTask: return "task"; #endif default: return "unknown stage"; } @@ -1060,10 +1063,22 @@ void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * con { // GL_NV_mesh_shader extension is only allowed in task/mesh shaders if (strcmp(extension, "GL_NV_mesh_shader") == 0) { - requireStage(loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask | EShLangFragmentMask), + requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask), "#extension GL_NV_mesh_shader"); profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_NV_mesh_shader"); profileRequires(loc, EEsProfile, 320, 0, "#extension GL_NV_mesh_shader"); + if (extensionTurnedOn(E_GL_EXT_mesh_shader)) { + error(loc, "GL_EXT_mesh_shader is already turned on, and not allowed with", "#extension", extension); + } + } + else if (strcmp(extension, "GL_EXT_mesh_shader") == 0) { + requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask), + "#extension GL_EXT_mesh_shader"); + profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_EXT_mesh_shader"); + profileRequires(loc, EEsProfile, 320, 0, "#extension GL_EXT_mesh_shader"); + if (extensionTurnedOn(E_GL_NV_mesh_shader)) { + error(loc, "GL_NV_mesh_shader is already turned on, and not allowed with", "#extension", extension); + } } } diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 68e70635f7..6ab37880fe 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -211,6 +211,7 @@ const char* const E_GL_EXT_shared_memory_block = "GL_EXT_shared_mem const char* const E_GL_EXT_subgroup_uniform_control_flow = "GL_EXT_subgroup_uniform_control_flow"; const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intrinsics"; const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric"; +const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shader"; // Arrays of extensions for the above viewportEXTs duplications @@ -288,7 +289,7 @@ const char* const E_GL_EXT_tessellation_shader = "GL_EXT_tessel const char* const E_GL_EXT_tessellation_point_size = "GL_EXT_tessellation_point_size"; const char* const E_GL_EXT_texture_buffer = "GL_EXT_texture_buffer"; const char* const E_GL_EXT_texture_cube_map_array = "GL_EXT_texture_cube_map_array"; -const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix"; +const char* const E_GL_EXT_shader_integer_mix = "GL_EXT_shader_integer_mix"; // OES matching AEP const char* const E_GL_OES_geometry_shader = "GL_OES_geometry_shader"; @@ -349,6 +350,9 @@ const int Num_AEP_texture_buffer = sizeof(AEP_texture_buffer)/sizeof(AEP_texture const char* const AEP_texture_cube_map_array[] = { E_GL_EXT_texture_cube_map_array, E_GL_OES_texture_cube_map_array }; const int Num_AEP_texture_cube_map_array = sizeof(AEP_texture_cube_map_array)/sizeof(AEP_texture_cube_map_array[0]); +const char* const AEP_mesh_shader[] = { E_GL_NV_mesh_shader, E_GL_EXT_mesh_shader }; +const int Num_AEP_mesh_shader = sizeof(AEP_mesh_shader)/sizeof(AEP_mesh_shader[0]); + } // end namespace glslang #endif // _VERSIONS_INCLUDED_ diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 3ab7a3c0a0..4fee9fea7b 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -315,7 +315,7 @@ GLSLANG_WEB_EXCLUDE_ON %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV +%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT %token PRECISE GLSLANG_WEB_EXCLUDE_OFF @@ -1301,24 +1301,34 @@ GLSLANG_WEB_EXCLUDE_ON | PERPRIMITIVENV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perprimitiveNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV"); // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. if (parseContext.language == EShLangFragment) parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); $$.init($1.loc); $$.qualifier.perPrimitiveNV = true; } + | PERPRIMITIVEEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "perprimitiveEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT"); + $$.init($1.loc); + $$.qualifier.perPrimitiveNV = true; + } | PERVIEWNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perviewNV"); - parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV"); + parseContext.requireStage($1.loc, EShLangMesh, "perviewNV"); $$.init($1.loc); $$.qualifier.perViewNV = true; } | PERTASKNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "taskNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV"); $$.init($1.loc); $$.qualifier.perTaskNV = true; } @@ -1469,7 +1479,7 @@ storage_qualifier parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); $$.init($1.loc); $$.qualifier.storage = EvqShared; } @@ -1656,6 +1666,13 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); } + | TASKPAYLOADWORKGROUPEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "taskPayloadSharedEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT "); + $$.init($1.loc); + $$.qualifier.storage = EvqtaskPayloadSharedEXT; + } GLSLANG_WEB_EXCLUDE_OFF ; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index d77c831585..b37924f0ef 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -315,7 +315,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV +%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT %token PRECISE @@ -1301,24 +1301,34 @@ interpolation_qualifier | PERPRIMITIVENV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perprimitiveNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV"); // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. if (parseContext.language == EShLangFragment) parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); $$.init($1.loc); $$.qualifier.perPrimitiveNV = true; } + | PERPRIMITIVEEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "perprimitiveEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT"); + $$.init($1.loc); + $$.qualifier.perPrimitiveNV = true; + } | PERVIEWNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "perviewNV"); - parseContext.requireStage($1.loc, EShLangMeshNV, "perviewNV"); + parseContext.requireStage($1.loc, EShLangMesh, "perviewNV"); $$.init($1.loc); $$.qualifier.perViewNV = true; } | PERTASKNV { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck($1.loc, "taskNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV"); $$.init($1.loc); $$.qualifier.perTaskNV = true; } @@ -1469,7 +1479,7 @@ storage_qualifier parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); $$.init($1.loc); $$.qualifier.storage = EvqShared; } @@ -1656,6 +1666,13 @@ storage_qualifier parseContext.unimplemented($1.loc, "subroutine"); $$.init($1.loc); } + | TASKPAYLOADWORKGROUPEXT { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck($1.loc, "taskPayloadSharedEXT"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT "); + $$.init($1.loc); + $$.qualifier.storage = EvqtaskPayloadSharedEXT; + } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 4e4768eaa5..29731bf0e0 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -576,138 +576,140 @@ enum yysymbol_kind_t YYSYMBOL_PERPRIMITIVENV = 452, /* PERPRIMITIVENV */ YYSYMBOL_PERVIEWNV = 453, /* PERVIEWNV */ YYSYMBOL_PERTASKNV = 454, /* PERTASKNV */ - YYSYMBOL_PRECISE = 455, /* PRECISE */ - YYSYMBOL_YYACCEPT = 456, /* $accept */ - YYSYMBOL_variable_identifier = 457, /* variable_identifier */ - YYSYMBOL_primary_expression = 458, /* primary_expression */ - YYSYMBOL_postfix_expression = 459, /* postfix_expression */ - YYSYMBOL_integer_expression = 460, /* integer_expression */ - YYSYMBOL_function_call = 461, /* function_call */ - YYSYMBOL_function_call_or_method = 462, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 463, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 464, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 465, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 466, /* function_call_header */ - YYSYMBOL_function_identifier = 467, /* function_identifier */ - YYSYMBOL_unary_expression = 468, /* unary_expression */ - YYSYMBOL_unary_operator = 469, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 470, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 471, /* additive_expression */ - YYSYMBOL_shift_expression = 472, /* shift_expression */ - YYSYMBOL_relational_expression = 473, /* relational_expression */ - YYSYMBOL_equality_expression = 474, /* equality_expression */ - YYSYMBOL_and_expression = 475, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 476, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 477, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 478, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 479, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 480, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 481, /* conditional_expression */ - YYSYMBOL_482_1 = 482, /* $@1 */ - YYSYMBOL_assignment_expression = 483, /* assignment_expression */ - YYSYMBOL_assignment_operator = 484, /* assignment_operator */ - YYSYMBOL_expression = 485, /* expression */ - YYSYMBOL_constant_expression = 486, /* constant_expression */ - YYSYMBOL_declaration = 487, /* declaration */ - YYSYMBOL_block_structure = 488, /* block_structure */ - YYSYMBOL_489_2 = 489, /* $@2 */ - YYSYMBOL_identifier_list = 490, /* identifier_list */ - YYSYMBOL_function_prototype = 491, /* function_prototype */ - YYSYMBOL_function_declarator = 492, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 493, /* function_header_with_parameters */ - YYSYMBOL_function_header = 494, /* function_header */ - YYSYMBOL_parameter_declarator = 495, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 496, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 497, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 498, /* init_declarator_list */ - YYSYMBOL_single_declaration = 499, /* single_declaration */ - YYSYMBOL_fully_specified_type = 500, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 501, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 502, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 503, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 504, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 505, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 506, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 507, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 508, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 509, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 510, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 511, /* type_name_list */ - YYSYMBOL_type_specifier = 512, /* type_specifier */ - YYSYMBOL_array_specifier = 513, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 514, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 515, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 516, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 517, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 518, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 519, /* struct_specifier */ - YYSYMBOL_520_3 = 520, /* $@3 */ - YYSYMBOL_521_4 = 521, /* $@4 */ - YYSYMBOL_struct_declaration_list = 522, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 523, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 524, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 525, /* struct_declarator */ - YYSYMBOL_initializer = 526, /* initializer */ - YYSYMBOL_initializer_list = 527, /* initializer_list */ - YYSYMBOL_declaration_statement = 528, /* declaration_statement */ - YYSYMBOL_statement = 529, /* statement */ - YYSYMBOL_simple_statement = 530, /* simple_statement */ - YYSYMBOL_demote_statement = 531, /* demote_statement */ - YYSYMBOL_compound_statement = 532, /* compound_statement */ - YYSYMBOL_533_5 = 533, /* $@5 */ - YYSYMBOL_534_6 = 534, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 535, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 536, /* statement_scoped */ - YYSYMBOL_537_7 = 537, /* $@7 */ - YYSYMBOL_538_8 = 538, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 539, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 540, /* statement_list */ - YYSYMBOL_expression_statement = 541, /* expression_statement */ - YYSYMBOL_selection_statement = 542, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 543, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 544, /* selection_rest_statement */ - YYSYMBOL_condition = 545, /* condition */ - YYSYMBOL_switch_statement = 546, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 547, /* switch_statement_nonattributed */ - YYSYMBOL_548_9 = 548, /* $@9 */ - YYSYMBOL_switch_statement_list = 549, /* switch_statement_list */ - YYSYMBOL_case_label = 550, /* case_label */ - YYSYMBOL_iteration_statement = 551, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 552, /* iteration_statement_nonattributed */ - YYSYMBOL_553_10 = 553, /* $@10 */ - YYSYMBOL_554_11 = 554, /* $@11 */ - YYSYMBOL_555_12 = 555, /* $@12 */ - YYSYMBOL_for_init_statement = 556, /* for_init_statement */ - YYSYMBOL_conditionopt = 557, /* conditionopt */ - YYSYMBOL_for_rest_statement = 558, /* for_rest_statement */ - YYSYMBOL_jump_statement = 559, /* jump_statement */ - YYSYMBOL_translation_unit = 560, /* translation_unit */ - YYSYMBOL_external_declaration = 561, /* external_declaration */ - YYSYMBOL_function_definition = 562, /* function_definition */ - YYSYMBOL_563_13 = 563, /* $@13 */ - YYSYMBOL_attribute = 564, /* attribute */ - YYSYMBOL_attribute_list = 565, /* attribute_list */ - YYSYMBOL_single_attribute = 566, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 567, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 568, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 569, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 570, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 571, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 572, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 573, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 574, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 575, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 576, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 577, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 578, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 579, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_string_parameter_list = 580, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 581, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 582, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 583, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 584, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 585, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 586 /* spirv_instruction_qualifier_id */ + YYSYMBOL_PERPRIMITIVEEXT = 455, /* PERPRIMITIVEEXT */ + YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 456, /* TASKPAYLOADWORKGROUPEXT */ + YYSYMBOL_PRECISE = 457, /* PRECISE */ + YYSYMBOL_YYACCEPT = 458, /* $accept */ + YYSYMBOL_variable_identifier = 459, /* variable_identifier */ + YYSYMBOL_primary_expression = 460, /* primary_expression */ + YYSYMBOL_postfix_expression = 461, /* postfix_expression */ + YYSYMBOL_integer_expression = 462, /* integer_expression */ + YYSYMBOL_function_call = 463, /* function_call */ + YYSYMBOL_function_call_or_method = 464, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 465, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 466, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 467, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 468, /* function_call_header */ + YYSYMBOL_function_identifier = 469, /* function_identifier */ + YYSYMBOL_unary_expression = 470, /* unary_expression */ + YYSYMBOL_unary_operator = 471, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 472, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 473, /* additive_expression */ + YYSYMBOL_shift_expression = 474, /* shift_expression */ + YYSYMBOL_relational_expression = 475, /* relational_expression */ + YYSYMBOL_equality_expression = 476, /* equality_expression */ + YYSYMBOL_and_expression = 477, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 478, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 479, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 480, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 481, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 482, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 483, /* conditional_expression */ + YYSYMBOL_484_1 = 484, /* $@1 */ + YYSYMBOL_assignment_expression = 485, /* assignment_expression */ + YYSYMBOL_assignment_operator = 486, /* assignment_operator */ + YYSYMBOL_expression = 487, /* expression */ + YYSYMBOL_constant_expression = 488, /* constant_expression */ + YYSYMBOL_declaration = 489, /* declaration */ + YYSYMBOL_block_structure = 490, /* block_structure */ + YYSYMBOL_491_2 = 491, /* $@2 */ + YYSYMBOL_identifier_list = 492, /* identifier_list */ + YYSYMBOL_function_prototype = 493, /* function_prototype */ + YYSYMBOL_function_declarator = 494, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 495, /* function_header_with_parameters */ + YYSYMBOL_function_header = 496, /* function_header */ + YYSYMBOL_parameter_declarator = 497, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 498, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 499, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 500, /* init_declarator_list */ + YYSYMBOL_single_declaration = 501, /* single_declaration */ + YYSYMBOL_fully_specified_type = 502, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 503, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 504, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 505, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 506, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 507, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 508, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 509, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 510, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 511, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 512, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 513, /* type_name_list */ + YYSYMBOL_type_specifier = 514, /* type_specifier */ + YYSYMBOL_array_specifier = 515, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 516, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 517, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 518, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 519, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 520, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 521, /* struct_specifier */ + YYSYMBOL_522_3 = 522, /* $@3 */ + YYSYMBOL_523_4 = 523, /* $@4 */ + YYSYMBOL_struct_declaration_list = 524, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 525, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 526, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 527, /* struct_declarator */ + YYSYMBOL_initializer = 528, /* initializer */ + YYSYMBOL_initializer_list = 529, /* initializer_list */ + YYSYMBOL_declaration_statement = 530, /* declaration_statement */ + YYSYMBOL_statement = 531, /* statement */ + YYSYMBOL_simple_statement = 532, /* simple_statement */ + YYSYMBOL_demote_statement = 533, /* demote_statement */ + YYSYMBOL_compound_statement = 534, /* compound_statement */ + YYSYMBOL_535_5 = 535, /* $@5 */ + YYSYMBOL_536_6 = 536, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 537, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 538, /* statement_scoped */ + YYSYMBOL_539_7 = 539, /* $@7 */ + YYSYMBOL_540_8 = 540, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 541, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 542, /* statement_list */ + YYSYMBOL_expression_statement = 543, /* expression_statement */ + YYSYMBOL_selection_statement = 544, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 545, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 546, /* selection_rest_statement */ + YYSYMBOL_condition = 547, /* condition */ + YYSYMBOL_switch_statement = 548, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 549, /* switch_statement_nonattributed */ + YYSYMBOL_550_9 = 550, /* $@9 */ + YYSYMBOL_switch_statement_list = 551, /* switch_statement_list */ + YYSYMBOL_case_label = 552, /* case_label */ + YYSYMBOL_iteration_statement = 553, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 554, /* iteration_statement_nonattributed */ + YYSYMBOL_555_10 = 555, /* $@10 */ + YYSYMBOL_556_11 = 556, /* $@11 */ + YYSYMBOL_557_12 = 557, /* $@12 */ + YYSYMBOL_for_init_statement = 558, /* for_init_statement */ + YYSYMBOL_conditionopt = 559, /* conditionopt */ + YYSYMBOL_for_rest_statement = 560, /* for_rest_statement */ + YYSYMBOL_jump_statement = 561, /* jump_statement */ + YYSYMBOL_translation_unit = 562, /* translation_unit */ + YYSYMBOL_external_declaration = 563, /* external_declaration */ + YYSYMBOL_function_definition = 564, /* function_definition */ + YYSYMBOL_565_13 = 565, /* $@13 */ + YYSYMBOL_attribute = 566, /* attribute */ + YYSYMBOL_attribute_list = 567, /* attribute_list */ + YYSYMBOL_single_attribute = 568, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 569, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 570, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 571, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 572, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 573, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 574, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 575, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 576, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 577, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 578, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 579, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 580, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 581, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_string_parameter_list = 582, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 583, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 584, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 585, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 586, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 587, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 588 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -729,7 +731,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 733 "MachineIndependent/glslang_tab.cpp" +#line 735 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1033,21 +1035,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 443 +#define YYFINAL 445 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12469 +#define YYLAST 12503 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 456 +#define YYNTOKENS 458 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 131 /* YYNRULES -- Number of rules. */ -#define YYNRULES 684 +#define YYNRULES 686 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 930 +#define YYNSTATES 932 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 710 +#define YYMAXUTOK 712 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1132,7 +1134,7 @@ static const yytype_int16 yytranslate[] = 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455 + 455, 456, 457 }; #if YYDEBUG @@ -1153,61 +1155,61 @@ static const yytype_int16 yyrline[] = 982, 988, 994, 1004, 1007, 1014, 1022, 1042, 1065, 1080, 1105, 1116, 1126, 1136, 1146, 1155, 1158, 1162, 1166, 1171, 1179, 1186, 1191, 1196, 1201, 1210, 1220, 1247, 1256, 1263, - 1271, 1278, 1285, 1293, 1301, 1311, 1318, 1329, 1335, 1338, - 1345, 1349, 1353, 1362, 1372, 1375, 1386, 1389, 1392, 1396, - 1400, 1405, 1409, 1412, 1417, 1421, 1426, 1435, 1439, 1444, - 1450, 1456, 1463, 1468, 1476, 1482, 1494, 1508, 1514, 1519, - 1527, 1535, 1543, 1551, 1559, 1567, 1575, 1583, 1590, 1597, - 1601, 1606, 1611, 1616, 1621, 1626, 1631, 1635, 1639, 1643, - 1647, 1653, 1664, 1671, 1674, 1683, 1688, 1698, 1703, 1711, - 1715, 1725, 1728, 1734, 1740, 1747, 1757, 1761, 1765, 1769, - 1774, 1778, 1783, 1788, 1793, 1798, 1803, 1808, 1813, 1818, - 1823, 1829, 1835, 1841, 1846, 1851, 1856, 1861, 1866, 1871, - 1876, 1881, 1886, 1891, 1896, 1902, 1909, 1914, 1919, 1924, - 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964, 1972, 1980, - 1988, 1994, 2000, 2006, 2012, 2018, 2024, 2030, 2036, 2042, - 2048, 2054, 2060, 2066, 2072, 2078, 2084, 2090, 2096, 2102, - 2108, 2114, 2120, 2126, 2132, 2138, 2144, 2150, 2156, 2162, - 2168, 2174, 2180, 2186, 2194, 2202, 2210, 2218, 2226, 2234, - 2242, 2250, 2258, 2266, 2274, 2282, 2288, 2294, 2300, 2306, - 2312, 2318, 2324, 2330, 2336, 2342, 2348, 2354, 2360, 2366, - 2372, 2378, 2384, 2390, 2396, 2402, 2408, 2414, 2420, 2426, - 2432, 2438, 2444, 2450, 2456, 2462, 2468, 2474, 2480, 2486, - 2492, 2498, 2502, 2506, 2510, 2515, 2521, 2526, 2531, 2536, - 2541, 2546, 2551, 2557, 2562, 2567, 2572, 2577, 2582, 2588, - 2594, 2600, 2606, 2612, 2618, 2624, 2630, 2636, 2642, 2648, - 2654, 2660, 2666, 2671, 2676, 2681, 2686, 2691, 2696, 2702, - 2707, 2712, 2717, 2722, 2727, 2732, 2737, 2743, 2748, 2753, - 2758, 2763, 2768, 2773, 2778, 2783, 2788, 2793, 2798, 2803, - 2808, 2813, 2819, 2824, 2829, 2835, 2841, 2846, 2851, 2856, - 2862, 2867, 2872, 2877, 2883, 2888, 2893, 2898, 2904, 2909, - 2914, 2919, 2925, 2931, 2937, 2943, 2948, 2954, 2960, 2966, - 2971, 2976, 2981, 2986, 2991, 2997, 3002, 3007, 3012, 3018, - 3023, 3028, 3033, 3039, 3044, 3049, 3054, 3060, 3065, 3070, - 3075, 3081, 3086, 3091, 3096, 3102, 3107, 3112, 3117, 3123, - 3128, 3133, 3138, 3144, 3149, 3154, 3159, 3165, 3170, 3175, - 3180, 3186, 3191, 3196, 3201, 3207, 3212, 3217, 3222, 3228, - 3233, 3238, 3243, 3249, 3254, 3259, 3264, 3270, 3275, 3280, - 3285, 3291, 3296, 3301, 3306, 3311, 3316, 3321, 3326, 3331, - 3336, 3341, 3346, 3351, 3356, 3361, 3366, 3371, 3376, 3381, - 3386, 3391, 3396, 3401, 3406, 3411, 3417, 3423, 3429, 3435, - 3442, 3449, 3455, 3461, 3467, 3473, 3479, 3485, 3491, 3496, - 3501, 3517, 3522, 3527, 3535, 3535, 3546, 3546, 3556, 3559, - 3572, 3594, 3621, 3625, 3631, 3636, 3647, 3651, 3657, 3663, - 3674, 3677, 3684, 3688, 3689, 3695, 3696, 3697, 3698, 3699, - 3700, 3701, 3703, 3709, 3718, 3719, 3723, 3719, 3735, 3736, - 3740, 3740, 3747, 3747, 3761, 3764, 3772, 3780, 3791, 3792, - 3796, 3800, 3808, 3815, 3819, 3827, 3831, 3844, 3848, 3856, - 3856, 3876, 3879, 3885, 3897, 3909, 3913, 3921, 3921, 3936, - 3936, 3954, 3954, 3975, 3978, 3984, 3987, 3993, 3997, 4004, - 4009, 4014, 4021, 4024, 4028, 4033, 4037, 4047, 4051, 4060, - 4063, 4067, 4076, 4076, 4118, 4123, 4126, 4131, 4134, 4141, - 4144, 4149, 4152, 4157, 4160, 4165, 4168, 4173, 4177, 4182, - 4186, 4191, 4195, 4202, 4205, 4210, 4213, 4216, 4219, 4222, - 4227, 4236, 4247, 4252, 4260, 4264, 4269, 4273, 4278, 4282, - 4287, 4291, 4298, 4301, 4306, 4309, 4312, 4315, 4320, 4328, - 4338, 4342, 4347, 4351, 4356, 4360, 4367, 4370, 4375, 4380, - 4383, 4389, 4392, 4397, 4400 + 1271, 1278, 1285, 1293, 1301, 1311, 1321, 1328, 1339, 1345, + 1348, 1355, 1359, 1363, 1372, 1382, 1385, 1396, 1399, 1402, + 1406, 1410, 1415, 1419, 1422, 1427, 1431, 1436, 1445, 1449, + 1454, 1460, 1466, 1473, 1478, 1486, 1492, 1504, 1518, 1524, + 1529, 1537, 1545, 1553, 1561, 1569, 1577, 1585, 1593, 1600, + 1607, 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1645, 1649, + 1653, 1657, 1663, 1669, 1681, 1688, 1691, 1700, 1705, 1715, + 1720, 1728, 1732, 1742, 1745, 1751, 1757, 1764, 1774, 1778, + 1782, 1786, 1791, 1795, 1800, 1805, 1810, 1815, 1820, 1825, + 1830, 1835, 1840, 1846, 1852, 1858, 1863, 1868, 1873, 1878, + 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1919, 1926, 1931, + 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, 1981, + 1989, 1997, 2005, 2011, 2017, 2023, 2029, 2035, 2041, 2047, + 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, 2101, 2107, + 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, 2161, 2167, + 2173, 2179, 2185, 2191, 2197, 2203, 2211, 2219, 2227, 2235, + 2243, 2251, 2259, 2267, 2275, 2283, 2291, 2299, 2305, 2311, + 2317, 2323, 2329, 2335, 2341, 2347, 2353, 2359, 2365, 2371, + 2377, 2383, 2389, 2395, 2401, 2407, 2413, 2419, 2425, 2431, + 2437, 2443, 2449, 2455, 2461, 2467, 2473, 2479, 2485, 2491, + 2497, 2503, 2509, 2515, 2519, 2523, 2527, 2532, 2538, 2543, + 2548, 2553, 2558, 2563, 2568, 2574, 2579, 2584, 2589, 2594, + 2599, 2605, 2611, 2617, 2623, 2629, 2635, 2641, 2647, 2653, + 2659, 2665, 2671, 2677, 2683, 2688, 2693, 2698, 2703, 2708, + 2713, 2719, 2724, 2729, 2734, 2739, 2744, 2749, 2754, 2760, + 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, + 2815, 2820, 2825, 2830, 2836, 2841, 2846, 2852, 2858, 2863, + 2868, 2873, 2879, 2884, 2889, 2894, 2900, 2905, 2910, 2915, + 2921, 2926, 2931, 2936, 2942, 2948, 2954, 2960, 2965, 2971, + 2977, 2983, 2988, 2993, 2998, 3003, 3008, 3014, 3019, 3024, + 3029, 3035, 3040, 3045, 3050, 3056, 3061, 3066, 3071, 3077, + 3082, 3087, 3092, 3098, 3103, 3108, 3113, 3119, 3124, 3129, + 3134, 3140, 3145, 3150, 3155, 3161, 3166, 3171, 3176, 3182, + 3187, 3192, 3197, 3203, 3208, 3213, 3218, 3224, 3229, 3234, + 3239, 3245, 3250, 3255, 3260, 3266, 3271, 3276, 3281, 3287, + 3292, 3297, 3302, 3308, 3313, 3318, 3323, 3328, 3333, 3338, + 3343, 3348, 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, + 3393, 3398, 3403, 3408, 3413, 3418, 3423, 3428, 3434, 3440, + 3446, 3452, 3459, 3466, 3472, 3478, 3484, 3490, 3496, 3502, + 3508, 3513, 3518, 3534, 3539, 3544, 3552, 3552, 3563, 3563, + 3573, 3576, 3589, 3611, 3638, 3642, 3648, 3653, 3664, 3668, + 3674, 3680, 3691, 3694, 3701, 3705, 3706, 3712, 3713, 3714, + 3715, 3716, 3717, 3718, 3720, 3726, 3735, 3736, 3740, 3736, + 3752, 3753, 3757, 3757, 3764, 3764, 3778, 3781, 3789, 3797, + 3808, 3809, 3813, 3817, 3825, 3832, 3836, 3844, 3848, 3861, + 3865, 3873, 3873, 3893, 3896, 3902, 3914, 3926, 3930, 3938, + 3938, 3953, 3953, 3971, 3971, 3992, 3995, 4001, 4004, 4010, + 4014, 4021, 4026, 4031, 4038, 4041, 4045, 4050, 4054, 4064, + 4068, 4077, 4080, 4084, 4093, 4093, 4135, 4140, 4143, 4148, + 4151, 4158, 4161, 4166, 4169, 4174, 4177, 4182, 4185, 4190, + 4194, 4199, 4203, 4208, 4212, 4219, 4222, 4227, 4230, 4233, + 4236, 4239, 4244, 4253, 4264, 4269, 4277, 4281, 4286, 4290, + 4295, 4299, 4304, 4308, 4315, 4318, 4323, 4326, 4329, 4332, + 4337, 4345, 4355, 4359, 4364, 4368, 4373, 4377, 4384, 4387, + 4392, 4397, 4400, 4406, 4409, 4414, 4417 }; #endif @@ -1322,9 +1324,10 @@ static const char *const yytname[] = "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", "PERVERTEXEXT", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", - "PERTASKNV", "PRECISE", "$accept", "variable_identifier", - "primary_expression", "postfix_expression", "integer_expression", - "function_call", "function_call_or_method", "function_call_generic", + "PERTASKNV", "PERPRIMITIVEEXT", "TASKPAYLOADWORKGROUPEXT", "PRECISE", + "$accept", "variable_identifier", "primary_expression", + "postfix_expression", "integer_expression", "function_call", + "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", "function_call_header_with_parameters", "function_call_header", "function_identifier", "unary_expression", "unary_operator", @@ -1431,16 +1434,16 @@ static const yytype_int16 yytoknum[] = 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710 + 705, 706, 707, 708, 709, 710, 711, 712 }; #endif -#define YYPACT_NINF (-865) +#define YYPACT_NINF (-813) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-571) +#define YYTABLE_NINF (-573) #define yytable_value_is_error(Yyn) \ 0 @@ -1449,99 +1452,100 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4557, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -306, -260, -237, -110, -102, - -100, -83, -77, -865, -865, -301, -865, -865, -865, -865, - -865, -106, -865, -865, -865, -865, -865, -309, -865, -865, - -865, -865, -865, -865, -66, -54, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -328, - -116, -50, -55, 7728, -245, -865, -82, -865, -865, -865, - -865, 5463, -865, -865, -865, -865, -63, -865, -865, 933, - -865, -865, 7728, -57, -865, -865, -865, 5916, -80, -334, - -251, -157, -149, -141, -80, -140, -78, 12077, -865, -47, - -351, -76, -865, -269, -865, -45, -41, 7728, -865, -865, - -865, 7728, -74, -73, -865, -263, -865, -224, -865, -865, - 10778, -38, -865, -865, -865, -36, -69, 7728, -865, -42, - -40, -37, -865, -271, -865, -256, -33, -34, -30, -28, - -202, -27, -24, -23, -22, -21, -17, -199, -10, -15, - -29, -303, -865, -14, 7728, -865, -11, -865, -195, -865, - -865, -194, 9046, -865, -268, 1386, -865, -865, -865, -865, - -865, -38, -304, -865, 9479, -248, -865, -35, -865, -133, - 10778, 10778, -865, 10778, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -274, -865, -865, -865, -6, -187, 11211, - 3, -865, 10778, -865, -865, -297, -2, -41, 4, -865, - -310, -80, -865, -31, -865, -321, 6, -130, 10778, -129, - -865, -166, -128, 10778, -124, 7, -122, -80, -865, 11644, - -865, -120, 10778, 10, -78, -865, 7728, -26, 6369, -865, - 7728, 10778, -865, -351, -865, -20, -865, -865, -79, -217, - -200, -299, -56, -13, -9, -3, 21, 26, -307, 15, - 9912, -865, 14, -865, -865, 20, 12, 13, -865, 24, - 25, 16, 10345, 27, 10778, 23, 18, 19, 22, 28, - -222, -865, -865, -132, -865, -116, 33, 35, -865, -865, - -865, -865, -865, 1839, -865, -865, -865, -865, -865, -865, - -865, -865, -865, 5010, -2, 9479, -225, 8180, -865, -865, - 9479, 7728, -865, 8, -865, -865, -865, -184, -865, -865, - 10778, 29, -865, -865, 10778, 38, -865, -865, -865, 10778, - -865, -865, -865, -312, -865, -865, -183, 31, -865, -865, - -865, -865, -865, -865, -182, -865, -180, -865, -865, -179, - 34, -865, -865, -865, -865, -175, -865, -172, -865, -171, - 39, -865, -167, 40, -163, 31, -865, -160, -865, 44, - 48, -865, -865, -26, -38, -121, -865, -865, -865, 6822, - -865, -865, -865, 10778, 10778, 10778, 10778, 10778, 10778, 10778, - 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, 10778, - 10778, 10778, -865, -865, -865, 53, -865, 2292, -865, -865, - -865, 2292, -865, 10778, -865, -865, -119, 10778, -198, -865, - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, 10778, 10778, -865, -865, -865, - -865, -865, -865, -865, 9479, -865, -865, -174, -865, 7275, - -865, -865, 61, 59, -865, -865, -865, -865, -865, -254, - -142, -865, -308, -865, -321, -865, -321, -865, 10778, 10778, - -865, -166, -865, -166, -865, 10778, 10778, -865, 37, 7, - -865, 11644, -865, 10778, -865, -865, -92, -2, -26, -865, - -865, -865, -865, -865, -79, -79, -217, -217, -200, -200, - -200, -200, -299, -299, -56, -13, -9, -3, 21, 26, - 10778, -865, 2292, 4104, 30, 3651, -159, -865, -158, -865, - -865, -865, -865, -865, 8613, -865, -865, -865, 71, -865, - -12, -865, -156, -865, -155, -865, -148, -865, -147, -865, - -145, -144, -865, -865, -865, -65, 67, 59, 41, 72, - 75, -865, -865, 4104, 76, -865, -865, -865, -865, -865, - -865, -865, -865, -865, -865, -865, 10778, -865, 74, 2745, - 10778, -865, 66, 80, 36, 81, 3198, -865, 82, -865, - 9479, -865, -865, -865, -143, 10778, 2745, 76, -865, -865, - 2292, -865, 78, 59, -865, -865, 2292, 84, -865, -865 + 4575, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -300, -272, -219, -123, -120, + -118, -105, -87, -813, -813, -317, -813, -813, -813, -813, + -813, -62, -813, -813, -813, -813, -813, -324, -813, -813, + -813, -813, -813, -813, -76, -64, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -319, -260, -133, -174, 7760, -191, -813, -166, -813, + -813, -813, -813, 5485, -813, -813, -813, -813, -61, -813, + -813, 935, -813, -813, 7760, -39, -813, -813, -813, 5940, + -50, -335, -267, -162, -152, -139, -50, -137, -46, 12111, + -813, -29, -339, -43, -813, -268, -813, -27, -6, 7760, + -813, -813, -813, 7760, -37, -36, -813, -298, -813, -237, + -813, -813, 10812, -5, -813, -813, -813, 1, -33, 7760, + -813, -4, -2, -3, -813, -236, -813, -227, -1, 3, + 4, 5, -225, 6, 10, 12, 13, 14, 17, -223, + 8, 18, 16, -304, -813, 21, 7760, -813, 19, -813, + -222, -813, -813, -207, 9080, -813, -247, 1390, -813, -813, + -813, -813, -813, -5, -270, -813, 9513, -250, -813, -22, + -813, -132, 10812, 10812, -813, 10812, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -265, -813, -813, -813, 25, + -204, 11245, 27, -813, 10812, -813, -813, -314, 30, -6, + 33, -813, -315, -50, -813, 15, -813, -325, 32, -130, + 10812, -129, -813, -146, -125, 10812, -124, 39, -119, -50, + -813, 11678, -813, -115, 10812, 36, -46, -813, 7760, 20, + 6395, -813, 7760, 10812, -813, -339, -813, 29, -813, -813, + -47, -83, -59, -288, -18, -17, 22, 26, 54, 59, + -309, 46, 9946, -813, 37, -813, -813, 50, 56, 58, + -813, 72, 74, 65, 10379, 76, 10812, 69, 68, 73, + 75, 77, -168, -813, -813, -82, -813, -260, 79, 82, + -813, -813, -813, -813, -813, 1845, -813, -813, -813, -813, + -813, -813, -813, -813, -813, 5030, 30, 9513, -241, 8214, + -813, -813, 9513, 7760, -813, 52, -813, -813, -813, -202, + -813, -813, 10812, 55, -813, -813, 10812, 85, -813, -813, + -813, 10812, -813, -813, -813, -310, -813, -813, -197, 81, + -813, -813, -813, -813, -813, -813, -195, -813, -194, -813, + -813, -190, 87, -813, -813, -813, -813, -169, -813, -167, + -813, -165, 89, -813, -158, 90, -157, 81, -813, -156, + -813, 91, 97, -813, -813, 20, -5, -77, -813, -813, + -813, 6850, -813, -813, -813, 10812, 10812, 10812, 10812, 10812, + 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, + 10812, 10812, 10812, 10812, -813, -813, -813, 96, -813, 2300, + -813, -813, -813, 2300, -813, 10812, -813, -813, -49, 10812, + -26, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, 10812, 10812, -813, + -813, -813, -813, -813, -813, -813, 9513, -813, -813, -31, + -813, 7305, -813, -813, 98, 95, -813, -813, -813, -813, + -813, -172, -134, -813, -307, -813, -325, -813, -325, -813, + 10812, 10812, -813, -146, -813, -146, -813, 10812, 10812, -813, + 104, 39, -813, 11678, -813, 10812, -813, -813, -48, 30, + 20, -813, -813, -813, -813, -813, -47, -47, -83, -83, + -59, -59, -59, -59, -288, -288, -18, -17, 22, 26, + 54, 59, 10812, -813, 2300, 4120, 60, 3665, -155, -813, + -154, -813, -813, -813, -813, -813, 8647, -813, -813, -813, + 106, -813, -15, -813, -147, -813, -145, -813, -144, -813, + -143, -813, -142, -140, -813, -813, -813, -24, 101, 95, + 71, 107, 110, -813, -813, 4120, 109, -813, -813, -813, + -813, -813, -813, -813, -813, -813, -813, -813, 10812, -813, + 102, 2755, 10812, -813, 105, 113, 70, 112, 3210, -813, + 115, -813, 9513, -813, -813, -813, -135, 10812, 2755, 109, + -813, -813, 2300, -813, 111, 95, -813, -813, 2300, 117, + -813, -813 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1549,137 +1553,138 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 167, 220, 218, 219, 217, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 221, 222, 223, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 346, 347, 348, 349, 350, 351, 352, 372, 373, 374, - 375, 376, 377, 378, 387, 400, 401, 388, 389, 391, - 390, 392, 393, 394, 395, 396, 397, 398, 399, 175, - 176, 246, 247, 245, 248, 255, 256, 253, 254, 251, - 252, 249, 250, 278, 279, 280, 290, 291, 292, 275, - 276, 277, 287, 288, 289, 272, 273, 274, 284, 285, - 286, 269, 270, 271, 281, 282, 283, 257, 258, 259, - 293, 294, 295, 260, 261, 262, 305, 306, 307, 263, - 264, 265, 317, 318, 319, 266, 267, 268, 329, 330, - 331, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 344, 341, 342, - 343, 525, 526, 527, 356, 357, 380, 383, 345, 354, - 355, 371, 353, 402, 403, 406, 407, 408, 410, 411, - 412, 414, 415, 416, 418, 419, 515, 516, 379, 381, - 382, 358, 359, 360, 404, 361, 365, 366, 369, 409, - 413, 417, 362, 363, 367, 368, 405, 364, 370, 449, - 451, 452, 453, 455, 456, 457, 459, 460, 461, 463, - 464, 465, 467, 468, 469, 471, 472, 473, 475, 476, - 477, 479, 480, 481, 483, 484, 485, 487, 488, 489, - 491, 492, 450, 454, 458, 462, 466, 474, 478, 482, - 470, 486, 490, 493, 494, 495, 496, 497, 498, 499, - 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, - 510, 511, 512, 513, 514, 384, 385, 386, 420, 429, - 431, 425, 430, 432, 433, 435, 436, 437, 439, 440, - 441, 443, 444, 445, 447, 448, 421, 422, 423, 434, - 424, 426, 427, 428, 438, 442, 446, 517, 518, 521, - 522, 523, 524, 519, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 165, 166, 0, 621, 137, 531, 532, - 533, 0, 530, 171, 169, 170, 168, 0, 216, 172, - 173, 174, 139, 138, 0, 200, 181, 183, 179, 185, - 187, 182, 184, 180, 186, 188, 177, 178, 202, 189, - 196, 197, 198, 199, 190, 191, 192, 193, 194, 195, - 140, 141, 143, 142, 144, 145, 146, 153, 620, 0, - 622, 0, 114, 113, 0, 125, 130, 160, 159, 157, - 161, 0, 154, 156, 162, 135, 212, 158, 529, 0, - 617, 619, 0, 0, 163, 164, 528, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 536, 0, - 0, 0, 99, 0, 94, 0, 109, 0, 121, 115, - 123, 0, 124, 0, 97, 131, 102, 0, 155, 136, - 0, 205, 211, 1, 618, 0, 0, 0, 96, 0, - 0, 0, 629, 0, 681, 0, 0, 0, 0, 0, + 0, 168, 222, 220, 221, 219, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 223, 224, 225, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 348, 349, 350, 351, 352, 353, 354, 374, 375, 376, + 377, 378, 379, 380, 389, 402, 403, 390, 391, 393, + 392, 394, 395, 396, 397, 398, 399, 400, 401, 176, + 177, 248, 249, 247, 250, 257, 258, 255, 256, 253, + 254, 251, 252, 280, 281, 282, 292, 293, 294, 277, + 278, 279, 289, 290, 291, 274, 275, 276, 286, 287, + 288, 271, 272, 273, 283, 284, 285, 259, 260, 261, + 295, 296, 297, 262, 263, 264, 307, 308, 309, 265, + 266, 267, 319, 320, 321, 268, 269, 270, 331, 332, + 333, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 334, 335, + 336, 337, 338, 339, 340, 341, 342, 346, 343, 344, + 345, 527, 528, 529, 358, 359, 382, 385, 347, 356, + 357, 373, 355, 404, 405, 408, 409, 410, 412, 413, + 414, 416, 417, 418, 420, 421, 517, 518, 381, 383, + 384, 360, 361, 362, 406, 363, 367, 368, 371, 411, + 415, 419, 364, 365, 369, 370, 407, 366, 372, 451, + 453, 454, 455, 457, 458, 459, 461, 462, 463, 465, + 466, 467, 469, 470, 471, 473, 474, 475, 477, 478, + 479, 481, 482, 483, 485, 486, 487, 489, 490, 491, + 493, 494, 452, 456, 460, 464, 468, 476, 480, 484, + 472, 488, 492, 495, 496, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 386, 387, 388, 422, 431, + 433, 427, 432, 434, 435, 437, 438, 439, 441, 442, + 443, 445, 446, 447, 449, 450, 423, 424, 425, 436, + 426, 428, 429, 430, 440, 444, 448, 519, 520, 523, + 524, 525, 526, 521, 522, 0, 0, 0, 0, 0, + 0, 0, 0, 166, 167, 0, 623, 137, 533, 534, + 535, 0, 532, 172, 170, 171, 169, 0, 218, 173, + 174, 175, 139, 138, 0, 201, 182, 184, 180, 186, + 188, 183, 185, 181, 187, 189, 178, 179, 204, 190, + 197, 198, 199, 200, 191, 192, 193, 194, 195, 196, + 140, 141, 143, 142, 144, 146, 147, 145, 203, 154, + 622, 0, 624, 0, 114, 113, 0, 125, 130, 161, + 160, 158, 162, 0, 155, 157, 163, 135, 214, 159, + 531, 0, 619, 621, 0, 0, 164, 165, 530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 627, 0, 625, 0, 0, 534, 150, 152, 0, 148, - 203, 0, 0, 100, 0, 0, 623, 110, 116, 120, - 122, 118, 126, 117, 0, 132, 105, 0, 103, 0, - 0, 0, 9, 0, 43, 42, 44, 41, 5, 6, - 7, 8, 2, 16, 14, 15, 17, 10, 11, 12, - 13, 3, 18, 37, 20, 25, 26, 0, 0, 30, - 0, 214, 0, 36, 34, 0, 206, 111, 0, 95, - 0, 0, 679, 0, 637, 0, 0, 0, 0, 0, - 654, 0, 0, 0, 0, 0, 0, 0, 674, 0, - 652, 0, 0, 0, 0, 98, 0, 0, 0, 538, - 0, 0, 147, 0, 201, 0, 207, 45, 49, 52, - 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, - 0, 101, 565, 574, 578, 0, 0, 0, 599, 0, + 538, 0, 0, 0, 99, 0, 94, 0, 109, 0, + 121, 115, 123, 0, 124, 0, 97, 131, 102, 0, + 156, 136, 0, 207, 213, 1, 620, 0, 0, 0, + 96, 0, 0, 0, 631, 0, 683, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 45, 78, 91, 0, 552, 0, 162, 135, 555, 576, - 554, 562, 553, 0, 556, 557, 580, 558, 587, 559, - 560, 595, 561, 0, 119, 0, 127, 0, 546, 134, - 0, 0, 107, 0, 104, 38, 39, 0, 22, 23, - 0, 0, 28, 27, 0, 216, 31, 33, 40, 0, - 213, 112, 683, 0, 684, 630, 0, 0, 682, 649, - 645, 646, 647, 648, 0, 643, 0, 93, 650, 0, - 0, 664, 665, 666, 667, 0, 662, 0, 668, 0, - 0, 670, 0, 0, 0, 2, 678, 0, 676, 0, - 0, 624, 626, 0, 544, 0, 542, 537, 539, 0, - 151, 149, 204, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 629, 0, 627, 0, 0, 536, 151, 153, + 0, 149, 205, 0, 0, 100, 0, 0, 625, 110, + 116, 120, 122, 118, 126, 117, 0, 132, 105, 0, + 103, 0, 0, 0, 9, 0, 43, 42, 44, 41, + 5, 6, 7, 8, 2, 16, 14, 15, 17, 10, + 11, 12, 13, 3, 18, 37, 20, 25, 26, 0, + 0, 30, 0, 216, 0, 36, 34, 0, 208, 111, + 0, 95, 0, 0, 681, 0, 639, 0, 0, 0, + 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, + 676, 0, 654, 0, 0, 0, 0, 98, 0, 0, + 0, 540, 0, 0, 148, 0, 202, 0, 209, 45, + 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, + 75, 0, 0, 101, 567, 576, 580, 0, 0, 0, + 601, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 45, 78, 91, 0, 554, 0, 163, 135, + 557, 578, 556, 564, 555, 0, 558, 559, 582, 560, + 589, 561, 562, 597, 563, 0, 119, 0, 127, 0, + 548, 134, 0, 0, 107, 0, 104, 38, 39, 0, + 22, 23, 0, 0, 28, 27, 0, 218, 31, 33, + 40, 0, 215, 112, 685, 0, 686, 632, 0, 0, + 684, 651, 647, 648, 649, 650, 0, 645, 0, 93, + 652, 0, 0, 666, 667, 668, 669, 0, 664, 0, + 670, 0, 0, 672, 0, 0, 0, 2, 680, 0, + 678, 0, 0, 626, 628, 0, 546, 0, 544, 539, + 541, 0, 152, 150, 206, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 208, 209, 0, 564, 0, 597, 610, - 609, 0, 601, 0, 613, 611, 0, 0, 0, 594, - 614, 615, 616, 563, 81, 82, 84, 83, 86, 87, - 88, 89, 90, 85, 80, 0, 0, 579, 575, 577, - 581, 588, 596, 129, 0, 549, 550, 0, 133, 0, - 108, 4, 0, 24, 21, 32, 215, 633, 635, 0, - 0, 680, 0, 639, 0, 638, 0, 641, 0, 0, - 656, 0, 655, 0, 658, 0, 0, 660, 0, 0, - 675, 0, 672, 0, 653, 628, 0, 545, 0, 540, - 535, 46, 47, 48, 51, 50, 53, 54, 58, 59, - 56, 57, 61, 62, 64, 66, 68, 70, 72, 74, - 0, 210, 566, 0, 0, 0, 0, 612, 0, 593, - 79, 92, 128, 547, 0, 106, 19, 631, 0, 632, - 0, 644, 0, 651, 0, 663, 0, 669, 0, 671, - 0, 0, 677, 541, 543, 0, 0, 585, 0, 0, - 0, 604, 603, 606, 572, 589, 548, 551, 634, 636, - 640, 642, 657, 659, 661, 673, 0, 567, 0, 0, - 0, 605, 0, 0, 584, 0, 0, 582, 0, 77, - 0, 569, 598, 568, 0, 607, 0, 572, 571, 573, - 591, 586, 0, 608, 602, 583, 592, 0, 600, 590 + 0, 0, 0, 0, 76, 210, 211, 0, 566, 0, + 599, 612, 611, 0, 603, 0, 615, 613, 0, 0, + 0, 596, 616, 617, 618, 565, 81, 82, 84, 83, + 86, 87, 88, 89, 90, 85, 80, 0, 0, 581, + 577, 579, 583, 590, 598, 129, 0, 551, 552, 0, + 133, 0, 108, 4, 0, 24, 21, 32, 217, 635, + 637, 0, 0, 682, 0, 641, 0, 640, 0, 643, + 0, 0, 658, 0, 657, 0, 660, 0, 0, 662, + 0, 0, 677, 0, 674, 0, 655, 630, 0, 547, + 0, 542, 537, 46, 47, 48, 51, 50, 53, 54, + 58, 59, 56, 57, 61, 62, 64, 66, 68, 70, + 72, 74, 0, 212, 568, 0, 0, 0, 0, 614, + 0, 595, 79, 92, 128, 549, 0, 106, 19, 633, + 0, 634, 0, 646, 0, 653, 0, 665, 0, 671, + 0, 673, 0, 0, 679, 543, 545, 0, 0, 587, + 0, 0, 0, 606, 605, 608, 574, 591, 550, 553, + 636, 638, 642, 644, 659, 661, 663, 675, 0, 569, + 0, 0, 0, 607, 0, 0, 586, 0, 0, 584, + 0, 77, 0, 571, 600, 570, 0, 609, 0, 574, + 573, 575, 593, 588, 0, 610, 604, 585, 594, 0, + 602, 592 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -865, -865, -865, -865, -865, -865, -865, -865, -865, -865, - -865, -865, -211, -865, -423, -422, -501, -426, -287, -286, - -285, -284, -288, -282, -865, -475, -865, -490, -865, -497, - -525, 11, -865, -865, -865, 5, -385, -865, -865, 32, - 42, 45, -865, -865, -399, -865, -865, -865, -865, -127, - -865, -382, -367, -865, 9, -865, 0, -425, -865, -865, - -865, -865, 119, -865, -865, -865, -544, -549, -252, -366, - -622, -865, -391, -611, -864, -865, -452, -865, -865, -461, - -460, -865, -865, 43, -716, -387, -865, -173, -865, -424, - -865, -169, -865, -865, -865, -865, -168, -865, -865, -865, - -865, -865, -865, -865, -865, 63, -865, -865, 2, -865, - -98, -272, -448, -865, -865, -865, -329, -324, -327, -865, - -865, -332, -326, -333, -331, -865, -330, -336, -865, -392, - -529 + -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, + -813, -813, -429, -813, -381, -380, -483, -383, -262, -257, + -261, -258, -255, -259, -813, -479, -813, -492, -813, -495, + -536, 11, -813, -813, -813, 7, -388, -813, -813, 42, + 49, 47, -813, -813, -401, -813, -813, -813, -813, -96, + -813, -384, -371, -813, 9, -813, 0, -425, -813, -813, + -813, -813, 150, -813, -813, -813, -546, -553, -217, -338, + -607, -813, -364, -619, -812, -813, -421, -813, -813, -428, + -430, -813, -813, 64, -718, -355, -813, -141, -813, -390, + -813, -138, -813, -813, -813, -813, -136, -813, -813, -813, + -813, -813, -813, -813, -813, 92, -813, -813, 2, -813, + -68, -275, -456, -813, -813, -813, -296, -293, -301, -813, + -813, -299, -295, -303, -302, -813, -306, -311, -813, -392, + -530 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 521, 522, 523, 782, 524, 525, 526, 527, 528, - 529, 530, 610, 532, 578, 579, 580, 581, 582, 583, - 584, 585, 586, 587, 588, 611, 840, 612, 765, 613, - 696, 614, 379, 641, 499, 615, 381, 382, 383, 428, - 429, 430, 384, 385, 386, 387, 388, 389, 478, 479, - 390, 391, 392, 393, 533, 481, 534, 484, 441, 442, - 535, 396, 397, 398, 570, 474, 568, 569, 705, 706, - 639, 777, 618, 619, 620, 621, 622, 737, 876, 912, - 904, 905, 906, 913, 623, 624, 625, 626, 907, 879, - 627, 628, 908, 927, 629, 630, 631, 843, 741, 845, - 883, 902, 903, 632, 399, 400, 401, 425, 633, 471, - 472, 451, 452, 789, 790, 403, 674, 675, 679, 404, - 405, 685, 686, 689, 692, 406, 697, 698, 407, 453, - 454 + -1, 523, 524, 525, 784, 526, 527, 528, 529, 530, + 531, 532, 612, 534, 580, 581, 582, 583, 584, 585, + 586, 587, 588, 589, 590, 613, 842, 614, 767, 615, + 698, 616, 381, 643, 501, 617, 383, 384, 385, 430, + 431, 432, 386, 387, 388, 389, 390, 391, 480, 481, + 392, 393, 394, 395, 535, 483, 536, 486, 443, 444, + 537, 398, 399, 400, 572, 476, 570, 571, 707, 708, + 641, 779, 620, 621, 622, 623, 624, 739, 878, 914, + 906, 907, 908, 915, 625, 626, 627, 628, 909, 881, + 629, 630, 910, 929, 631, 632, 633, 845, 743, 847, + 885, 904, 905, 634, 401, 402, 403, 427, 635, 473, + 474, 453, 454, 791, 792, 405, 676, 677, 681, 406, + 407, 687, 688, 691, 694, 408, 699, 700, 409, 455, + 456 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1687,281 +1692,191 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 395, 431, 402, 446, 638, 380, 647, 589, 446, 394, - 495, 378, 769, 773, 668, 776, 536, 445, 778, 708, - 447, 842, 467, 678, 438, 447, 709, 669, 688, 731, - 668, 422, 720, 721, 476, 911, 787, 700, 662, 656, - 662, 663, 919, 408, 418, 431, 710, 482, 455, 563, - 416, 456, 911, 564, 635, 648, 649, 423, 477, 659, - 670, 671, 672, 673, 438, 732, 634, 636, 722, 723, - 788, 660, 664, 677, 664, -35, 419, 650, 677, 542, - 438, 651, 482, 590, 677, 543, 493, 677, 482, 409, - 483, 591, 566, 665, 544, 494, 677, 779, 857, 665, - 545, 665, 858, 590, 665, 746, 665, 748, 665, 665, - 640, 433, 410, 665, 434, 735, 754, 755, 756, 757, - 758, 759, 760, 761, 762, 763, 590, 718, 719, 496, - 844, 458, 497, 774, 456, 498, 764, 457, 459, 461, - 463, 465, 466, 469, 716, 638, 717, 638, 550, 666, - 638, 558, 852, 783, 551, 572, 574, 559, 766, 849, - 708, 573, 575, 653, 785, 694, 781, 791, 793, 654, - 795, 797, 766, 543, 794, 800, 796, 798, 802, 804, - 853, 801, 854, 807, 803, 805, 566, 810, 566, 808, - 812, 884, 885, 811, 890, 891, 813, 766, 766, 438, - 794, 798, 892, 893, 926, 894, 895, 922, 801, 805, - 859, 808, 813, 766, 860, 681, 682, 683, 684, 828, - 829, 830, 831, 643, 766, 460, 644, 767, 456, 531, - 708, 769, 887, 462, 446, 818, 456, 766, 819, 411, - 847, 464, 468, 424, 456, 456, 846, 412, 445, 413, - 848, 447, 676, 680, 687, 456, 456, 456, 690, 566, - 693, 456, 699, 456, 818, 456, 414, 873, 328, 329, - 330, 577, 415, 863, 678, 850, 851, 724, 725, 817, - 867, 688, 668, 420, 638, 713, 714, 715, 921, 645, - 646, 766, 896, 824, 825, 421, 826, 827, 832, 833, - 426, 427, 448, 435, 440, 450, 475, 470, 485, 480, - 325, 491, 492, 482, 537, 769, 538, 539, 540, 541, - 562, 658, 547, 677, 677, 546, 548, 566, 549, 552, - 677, 677, 553, 554, 555, 556, 677, 577, 677, 557, - 560, 561, 577, 875, 652, 565, 877, 571, 577, 590, - 642, 577, 657, 493, 667, 691, 729, 663, 726, 704, - 577, 727, 701, 730, 638, 712, 728, 733, 736, 738, - 889, 739, 740, 742, 743, 744, 747, 750, 751, 577, - 749, 752, -36, 432, -34, 869, 877, 753, -29, 792, - 799, 439, 394, 780, 814, 806, 809, 566, 815, 395, - 394, 402, 395, 914, 380, 841, 909, 395, 394, 402, - 378, 394, 449, 856, 784, 766, 394, 473, 923, 888, - 638, 897, 899, 880, 900, 915, 898, 432, 487, -570, - 916, 432, 910, 917, 592, 920, 394, 928, 929, 834, - 394, 835, 838, 836, 878, 837, 711, 439, 786, 839, - 417, 816, 874, 918, 881, 924, 394, 925, 882, 901, - 770, 447, 444, 489, 771, 772, 702, 862, 486, 488, - 861, 866, 864, 868, 567, 865, 490, 872, 870, 0, - 0, 871, 0, 394, 878, 617, 0, 0, 0, 0, - 0, 0, 0, 0, 616, 0, 0, 0, 0, 0, - 0, 447, 821, 822, 823, 577, 577, 577, 577, 577, - 577, 577, 577, 577, 577, 577, 577, 577, 577, 577, - 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 661, + 397, 433, 404, 448, 640, 591, 771, 382, 448, 396, + 649, 380, 497, 533, 680, 670, 447, 710, 538, 690, + 449, 844, 440, 671, 469, 449, 711, 733, 702, 420, + 775, 670, 778, 664, 418, 780, 665, 712, 789, 658, + 424, 664, 661, 722, 723, 433, 478, 457, 565, 410, + 458, 495, 566, 484, 662, 579, 672, 673, 674, 675, + 496, 421, 440, 734, 650, 651, 425, 666, 636, 638, + 479, 679, 790, 647, 648, 666, 679, 411, 440, 724, + 725, 484, 679, 484, -35, 679, 652, 667, 637, 913, + 653, 485, 568, 667, 679, 667, 921, 781, 667, 426, + 667, 592, 667, 667, 592, 660, 913, 667, 642, 748, + 592, 750, 593, 737, 544, 460, 498, 776, 458, 499, + 545, 579, 500, 546, 846, 552, 579, 560, 574, 547, + 412, 553, 579, 561, 575, 579, 459, 461, 463, 465, + 467, 468, 471, 576, 579, 640, 655, 640, 783, 577, + 640, 668, 656, 793, 768, 795, 797, 785, 710, 545, + 799, 796, 798, 579, 787, 435, 800, 696, 436, 854, + 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, + 859, 802, 429, 804, 860, 806, 568, 803, 568, 805, + 766, 807, 809, 812, 814, 886, 887, 440, 810, 813, + 815, 768, 768, 892, 928, 893, 894, 895, 896, 796, + 897, 800, 803, 807, 810, 924, 815, 428, 861, 437, + 462, 768, 862, 458, 645, 771, 413, 646, 710, 414, + 464, 415, 788, 458, 448, 683, 684, 685, 686, 830, + 831, 832, 833, 466, 416, 470, 458, 447, 458, 889, + 848, 449, 678, 682, 850, 458, 458, 689, 692, 568, + 458, 458, 417, 695, 865, 680, 458, 701, 720, 721, + 458, 869, 690, 422, 768, 852, 853, 769, 718, 820, + 719, 819, 821, 670, 640, 423, 823, 824, 825, 579, + 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, + 579, 579, 579, 579, 579, 923, 442, 768, 820, 771, + 849, 875, 328, 329, 330, 726, 727, 715, 716, 717, + 450, 679, 679, 855, 477, 856, 487, 568, 679, 679, + 768, 851, 768, 898, 679, 452, 679, 826, 827, 472, + 828, 829, 482, 834, 835, 325, 484, 877, 493, 494, + 879, 539, 540, 543, 728, 541, 542, 548, 562, 549, + 550, 551, 554, 644, 640, 564, 555, 891, 556, 557, + 558, 579, 579, 559, 563, 654, 659, 573, 579, 579, + 567, 592, 495, 665, 579, 434, 579, 693, 703, 731, + 879, 738, 729, 441, 396, 730, 732, 568, 735, 740, + 669, 397, 396, 404, 397, 706, 911, 916, 382, 397, + 396, 404, 380, 396, 714, 741, 451, 742, 396, 475, + 640, 744, 925, 745, 746, 749, 751, 752, -36, 434, + 489, -34, 753, 434, 754, -29, 755, 782, 396, 794, + 786, 816, 396, 801, 880, 808, 811, 817, 843, 441, + 858, 768, 871, 882, 890, 899, 900, 901, 396, 902, + 912, 449, -572, 918, 917, 594, 836, 919, 922, 838, + 930, 931, 837, 839, 841, 491, 569, 840, 490, 713, + 492, 419, 876, 883, 880, 396, 920, 619, 818, 927, + 926, 488, 884, 446, 772, 903, 618, 773, 704, 774, + 866, 449, 864, 863, 874, 870, 868, 873, 867, 872, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 703, 0, 567, 0, - 567, 0, 0, 0, 0, 394, 0, 394, 0, 394, - 0, 0, 0, 0, 0, 0, 0, 577, 577, 0, - 0, 0, 0, 0, 577, 577, 0, 0, 0, 0, - 577, 0, 577, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 395, 0, 0, 0, 0, 0, 0, - 0, 567, 394, 0, 0, 0, 0, 0, 0, 0, - 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 705, 0, + 569, 0, 569, 0, 0, 0, 0, 396, 0, 396, + 0, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, - 0, 0, 0, 0, 0, 0, 0, 0, 394, 0, + 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 397, 0, 0, 0, 0, + 0, 0, 0, 569, 396, 0, 0, 0, 0, 0, + 0, 0, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 617, 0, 0, - 0, 617, 0, 0, 0, 0, 616, 0, 0, 0, - 616, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 567, - 0, 0, 0, 0, 0, 0, 0, 0, 394, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 619, + 0, 0, 0, 619, 0, 0, 0, 0, 618, 0, + 0, 0, 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 617, 617, 0, 617, 0, 402, 0, 0, - 0, 616, 616, 0, 616, 0, 0, 0, 0, 0, + 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, + 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 617, 0, 0, 0, 0, 0, 0, - 0, 0, 616, 0, 0, 0, 0, 0, 0, 617, - 0, 0, 0, 0, 0, 0, 617, 0, 616, 0, - 0, 0, 0, 0, 0, 616, 617, 0, 0, 0, - 617, 0, 0, 0, 0, 616, 617, 0, 0, 616, - 0, 0, 0, 443, 0, 616, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 325, 0, 0, 0, 0, 0, - 0, 0, 326, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 331, 0, 0, 0, 0, 0, 0, 0, 0, 332, - 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, + 0, 0, 0, 0, 619, 619, 0, 619, 0, 404, + 0, 0, 0, 618, 618, 0, 618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 502, 503, 0, 325, 0, 592, - 593, 0, 0, 0, 0, 594, 504, 505, 506, 507, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, - 328, 329, 330, 331, 0, 0, 0, 508, 509, 510, - 511, 512, 332, 333, 334, 335, 336, 337, 338, 595, - 596, 597, 598, 0, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 339, 340, 341, 342, 343, 344, - 513, 514, 515, 516, 517, 518, 519, 520, 345, 609, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 500, 501, + 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, + 0, 0, 0, 0, 618, 0, 0, 0, 0, 0, + 0, 619, 0, 0, 0, 0, 0, 0, 619, 0, + 618, 0, 0, 0, 0, 0, 0, 618, 619, 0, + 0, 0, 619, 0, 0, 0, 0, 618, 619, 0, + 0, 618, 0, 0, 0, 445, 0, 618, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 0, - 325, 0, 592, 768, 0, 0, 0, 0, 594, 504, - 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 328, 329, 330, 331, 0, 0, 0, - 508, 509, 510, 511, 512, 332, 333, 334, 335, 336, - 337, 338, 595, 596, 597, 598, 0, 599, 600, 601, - 602, 603, 604, 605, 606, 607, 608, 339, 340, 341, - 342, 343, 344, 513, 514, 515, 516, 517, 518, 519, - 520, 345, 609, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 502, 503, 0, 325, 0, 592, 0, 0, 0, 0, - 0, 594, 504, 505, 506, 507, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 328, 329, 330, 331, - 0, 0, 0, 508, 509, 510, 511, 512, 332, 333, - 334, 335, 336, 337, 338, 595, 596, 597, 598, 0, - 599, 600, 601, 602, 603, 604, 605, 606, 607, 608, - 339, 340, 341, 342, 343, 344, 513, 514, 515, 516, - 517, 518, 519, 520, 345, 609, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 325, 0, 594, 595, 0, 0, 0, 0, 596, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -1994,201 +1909,20 @@ static const yytype_int16 yytable[] = 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 500, 501, 0, 0, 0, 0, + 323, 324, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 502, 503, 0, 325, 0, 485, 0, - 0, 0, 0, 0, 594, 504, 505, 506, 507, 0, + 0, 0, 0, 504, 505, 0, 325, 0, 594, 770, + 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 508, 509, 510, 511, - 512, 332, 333, 334, 335, 336, 337, 338, 595, 596, - 597, 598, 0, 599, 600, 601, 602, 603, 604, 605, - 606, 607, 608, 339, 340, 341, 342, 343, 344, 513, - 514, 515, 516, 517, 518, 519, 520, 345, 609, 346, + 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 333, 334, 335, 336, 337, 338, 597, 598, + 599, 600, 0, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 339, 340, 341, 342, 343, 344, 515, + 516, 517, 518, 519, 520, 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 500, 501, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 502, 503, 0, 325, - 0, 0, 0, 0, 0, 0, 0, 594, 504, 505, - 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 328, 329, 330, 331, 0, 0, 0, 508, - 509, 510, 511, 512, 332, 333, 334, 335, 336, 337, - 338, 595, 596, 597, 598, 0, 599, 600, 601, 602, - 603, 604, 605, 606, 607, 608, 339, 340, 341, 342, - 343, 344, 513, 514, 515, 516, 517, 518, 519, 520, - 345, 609, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 0, 0, - 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, - 503, 0, 325, 0, 0, 0, 0, 0, 0, 0, - 594, 504, 505, 506, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 327, 328, 329, 330, 331, 0, - 0, 0, 508, 509, 510, 511, 512, 332, 333, 334, - 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 339, - 340, 341, 342, 343, 344, 513, 514, 515, 516, 517, - 518, 519, 520, 345, 0, 346, 347, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 0, 0, 0, 318, 319, 320, 321, 322, 323, - 324, 0, 0, 500, 501, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 504, 505, 506, 507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 327, 328, 329, - 330, 0, 0, 0, 0, 508, 509, 510, 511, 512, - 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 339, 340, 341, 342, 343, 344, 513, 514, - 515, 516, 517, 518, 519, 520, 345, 0, 346, 347, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 325, 0, - 0, 0, 0, 0, 0, 0, 326, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 327, 328, 329, 330, 331, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 333, 334, 335, 336, 337, 338, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 339, 340, 341, 342, 343, - 344, 0, 0, 0, 0, 0, 0, 0, 0, 345, - 0, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 1, 2, 3, 4, 5, 6, 7, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2219,202 +1953,21 @@ static const yytype_int16 yytable[] = 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 595, 0, 0, 598, 0, 599, 600, - 0, 0, 603, 0, 0, 0, 0, 0, 339, 340, - 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 325, 0, 594, 0, 0, 0, 0, 0, 596, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 0, 318, 319, 320, 321, 322, 323, 324, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 436, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 328, 329, 330, - 0, 0, 0, 0, 0, 0, 0, 0, 437, 332, - 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 339, 340, 341, 342, 343, 344, 0, 0, 0, - 0, 0, 0, 0, 0, 345, 0, 346, 347, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 0, 318, 319, 320, 321, - 322, 323, 324, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 325, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, - 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 332, 333, 334, 335, 336, 337, 338, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 339, 340, 341, 342, 343, 344, - 0, 0, 0, 0, 0, 0, 0, 0, 345, 0, - 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 0, 0, 0, 318, - 319, 320, 321, 322, 323, 324, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 707, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 328, 329, 330, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, - 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 339, 340, 341, - 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, - 0, 345, 0, 346, 347, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, - 0, 0, 318, 319, 320, 321, 322, 323, 324, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 820, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 328, 329, 330, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, - 0, 0, 0, 0, 345, 0, 346, 347, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 1, 2, + 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -2446,72 +1999,118 @@ static const yytype_int16 yytable[] = 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 855, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 504, 505, 0, 325, 0, 487, 0, + 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 333, 334, 335, 336, 337, 338, 597, 598, + 599, 600, 0, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 610, 339, 340, 341, 342, 343, 344, 515, + 516, 517, 518, 519, 520, 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 0, 0, 0, 318, 319, - 320, 321, 322, 323, 324, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 325, 0, 0, 0, 0, 0, 0, 0, 596, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, + 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 504, 505, 0, 325, 0, 0, 0, + 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 328, 329, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 332, 333, 334, 335, 336, 337, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 339, 340, 341, 342, - 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, - 345, 0, 346, 347, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 2, 3, 4, 5, 6, 7, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 515, + 516, 517, 518, 519, 520, 521, 522, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, @@ -2537,197 +2136,26 @@ static const yytype_int16 yytable[] = 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 0, 0, 0, 321, 0, 0, 0, 0, 0, 500, - 501, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 502, 503, - 0, 0, 0, 637, 775, 0, 0, 0, 0, 0, - 504, 505, 506, 507, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 508, 509, 510, 511, 512, 332, 0, 0, 0, - 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 513, 514, 515, 516, 517, 518, - 519, 520, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, - 0, 0, 500, 501, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 502, 503, 0, 0, 0, 637, 886, 0, 0, - 0, 0, 0, 504, 505, 506, 507, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 508, 509, 510, 511, 512, 332, - 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 513, 514, 515, - 516, 517, 518, 519, 520, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 0, 0, 0, 500, 501, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 502, 503, 0, 0, 576, 0, - 0, 0, 0, 0, 0, 0, 504, 505, 506, 507, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, - 511, 512, 332, 0, 0, 0, 0, 337, 338, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 513, 514, 515, 516, 517, 518, 519, 520, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 0, 0, 0, 500, 501, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 502, 503, 0, - 0, 0, 637, 0, 0, 0, 0, 0, 0, 504, - 505, 506, 507, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 509, 510, 511, 512, 332, 0, 0, 0, 0, - 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 513, 514, 515, 516, 517, 518, 519, - 520, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, - 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, - 0, 500, 501, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 502, 503, 0, 0, 734, 0, 0, 0, 0, 0, - 0, 0, 504, 505, 506, 507, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 508, 509, 510, 511, 512, 332, 0, - 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 513, 514, 515, 516, - 517, 518, 519, 520, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, + 521, 522, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, @@ -2753,26 +2181,1283 @@ static const yytype_int16 yytable[] = 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, - 0, 0, 0, 0, 500, 501, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 745, 504, 505, 506, 507, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, - 512, 332, 0, 0, 0, 0, 337, 338, 0, 0, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, - 514, 515, 516, 517, 518, 519, 520, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, + 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 331, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 597, 0, 0, 600, 0, 601, 602, + 0, 0, 605, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 438, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 439, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 709, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 822, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, + 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, + 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, + 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, + 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, + 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 504, 505, 0, 0, 0, 639, 777, 0, + 0, 0, 0, 0, 506, 507, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 510, 511, 512, 513, 514, + 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 515, 516, + 517, 518, 519, 520, 521, 522, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, + 321, 0, 0, 0, 0, 0, 502, 503, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, + 639, 888, 0, 0, 0, 0, 0, 506, 507, 508, + 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, + 512, 513, 514, 332, 0, 0, 0, 0, 337, 338, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 515, 516, 517, 518, 519, 520, 521, 522, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, + 0, 0, 0, 321, 0, 0, 0, 0, 0, 502, + 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, + 0, 0, 578, 0, 0, 0, 0, 0, 0, 0, + 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 510, 511, 512, 513, 514, 332, 0, 0, 0, + 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 515, 516, 517, 518, 519, 520, + 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, + 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 504, 505, 0, 0, 0, 639, 0, 0, 0, + 0, 0, 0, 506, 507, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 510, 511, 512, 513, 514, 332, + 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 515, 516, 517, + 518, 519, 520, 521, 522, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, + 0, 0, 0, 0, 0, 502, 503, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 504, 505, 0, 0, 736, 0, + 0, 0, 0, 0, 0, 0, 506, 507, 508, 509, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 510, 511, 512, + 513, 514, 332, 0, 0, 0, 0, 337, 338, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 515, 516, 517, 518, 519, 520, 521, 522, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, + 0, 0, 321, 0, 0, 0, 0, 0, 502, 503, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 504, 505, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 747, 506, + 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 510, 511, 512, 513, 514, 332, 0, 0, 0, 0, + 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 515, 516, 517, 518, 519, 520, 521, + 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, + 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, + 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 506, 507, 508, 509, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 510, 511, 512, 513, 514, 332, 0, + 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 515, 516, 517, 518, + 519, 520, 521, 522, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, + 0, 0, 0, 0, 502, 503, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 506, 507, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 510, 511, 512, 513, + 514, 332, 0, 0, 0, 0, 337, 657, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 515, + 516, 517, 518, 519, 520, 521, 522, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, + 0, 321, 0, 0, 0, 0, 0, 502, 503, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 504, 505, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, + 511, 512, 513, 697, 332, 0, 0, 0, 0, 337, + 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 515, 516, 517, 518, 519, 520, 521, 522, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, + 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 332, 0, 0, + 0, 0, 337, 338 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 385, 0, 404, 496, 484, 625, 0, 409, 0, + 505, 0, 437, 442, 550, 545, 404, 570, 443, 555, + 404, 739, 393, 348, 416, 409, 572, 336, 564, 353, + 637, 561, 639, 348, 351, 642, 351, 573, 348, 531, + 359, 348, 356, 331, 332, 429, 385, 382, 352, 349, + 385, 349, 356, 351, 368, 484, 381, 382, 383, 384, + 358, 385, 433, 372, 329, 330, 385, 382, 493, 494, + 409, 550, 382, 502, 503, 382, 555, 349, 449, 367, + 368, 351, 561, 351, 349, 564, 351, 543, 358, 901, + 355, 359, 476, 549, 573, 551, 908, 643, 554, 359, + 556, 351, 558, 559, 351, 534, 918, 563, 358, 604, + 351, 606, 359, 592, 350, 382, 353, 358, 385, 356, + 356, 550, 359, 350, 743, 350, 555, 350, 350, 356, + 349, 356, 561, 356, 356, 564, 411, 412, 413, 414, + 415, 416, 417, 350, 573, 637, 350, 639, 350, 356, + 642, 543, 356, 350, 356, 350, 350, 652, 711, 356, + 350, 356, 356, 592, 656, 356, 356, 559, 359, 776, + 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, + 352, 350, 356, 350, 356, 350, 570, 356, 572, 356, + 358, 356, 350, 350, 350, 350, 350, 568, 356, 356, + 356, 356, 356, 350, 922, 350, 350, 350, 350, 356, + 350, 356, 356, 356, 356, 350, 356, 350, 352, 385, + 382, 356, 356, 385, 356, 844, 349, 359, 781, 349, + 382, 349, 661, 385, 635, 381, 382, 383, 384, 722, + 723, 724, 725, 382, 349, 382, 385, 635, 385, 856, + 745, 635, 382, 382, 749, 385, 385, 382, 382, 643, + 385, 385, 349, 382, 800, 801, 385, 382, 327, 328, + 385, 807, 808, 349, 356, 767, 768, 359, 361, 356, + 363, 706, 359, 813, 776, 349, 715, 716, 717, 718, + 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, + 729, 730, 731, 732, 733, 912, 367, 356, 356, 928, + 359, 359, 374, 375, 376, 333, 334, 364, 365, 366, + 359, 800, 801, 354, 353, 356, 353, 711, 807, 808, + 356, 357, 356, 357, 813, 385, 815, 718, 719, 385, + 720, 721, 385, 726, 727, 351, 351, 842, 385, 385, + 845, 350, 385, 356, 371, 359, 358, 358, 350, 356, + 356, 356, 356, 385, 856, 349, 356, 382, 356, 356, + 356, 800, 801, 356, 356, 350, 349, 358, 807, 808, + 359, 351, 349, 351, 813, 385, 815, 348, 352, 335, + 885, 354, 370, 393, 385, 369, 337, 781, 352, 349, + 385, 401, 393, 401, 404, 385, 898, 902, 401, 409, + 401, 409, 401, 404, 385, 359, 409, 359, 409, 419, + 912, 349, 917, 349, 359, 349, 357, 359, 349, 429, + 428, 349, 359, 433, 359, 350, 359, 385, 429, 358, + 385, 350, 433, 356, 845, 356, 356, 350, 352, 449, + 352, 356, 348, 393, 348, 354, 385, 350, 449, 349, + 358, 845, 353, 350, 359, 353, 728, 397, 353, 730, + 359, 354, 729, 731, 733, 433, 476, 732, 429, 575, + 433, 331, 820, 847, 885, 476, 907, 487, 705, 919, + 918, 427, 847, 401, 635, 885, 487, 635, 566, 635, + 801, 885, 798, 796, 815, 808, 805, 813, 803, 811, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 539, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 568, -1, + 570, -1, 572, -1, -1, -1, -1, 568, -1, 570, + -1, 572, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 625, -1, -1, -1, -1, + -1, -1, -1, -1, 625, 635, -1, -1, -1, -1, + -1, -1, -1, 643, 635, -1, -1, -1, -1, -1, + -1, -1, 643, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 711, -1, -1, -1, -1, -1, -1, -1, -1, + 711, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 739, + -1, -1, -1, 743, -1, -1, -1, -1, 739, -1, + -1, -1, 743, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 781, -1, -1, -1, -1, -1, -1, -1, -1, + 781, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 844, 845, -1, 847, -1, 847, + -1, -1, -1, 844, 845, -1, 847, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 885, -1, -1, -1, -1, + -1, -1, -1, -1, 885, -1, -1, -1, -1, -1, + -1, 901, -1, -1, -1, -1, -1, -1, 908, -1, + 901, -1, -1, -1, -1, -1, -1, 908, 918, -1, + -1, -1, 922, -1, -1, -1, -1, 918, 928, -1, + -1, 922, -1, -1, -1, 0, -1, 928, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, + -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, 353, 354, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, 351, -1, 353, 354, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, -1, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, 353, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, 351, -1, 353, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, -1, 398, 399, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, 351, -1, -1, -1, -1, -1, -1, -1, 359, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 348, 349, -1, 351, -1, -1, -1, + -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, -1, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, + 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, + -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, 377, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, @@ -2796,423 +3481,21 @@ static const yytype_int16 yytable[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 0, 0, 0, 500, 501, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 502, 503, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, - 506, 507, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, - 509, 510, 511, 512, 332, 0, 0, 0, 0, 337, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 513, 514, 515, 516, 517, 518, 519, 520, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, - 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, - 500, 501, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 502, - 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 504, 505, 506, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 508, 509, 510, 511, 512, 332, 0, 0, - 0, 0, 337, 655, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 513, 514, 515, 516, 517, - 518, 519, 520, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 358, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 0, 0, 0, 500, 501, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 504, 505, 506, 507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 508, 509, 510, 511, 695, - 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 513, 514, - 515, 516, 517, 518, 519, 520, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, - 321, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 0, 0, 0, 0, 337, 338 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 383, 0, 402, 494, 0, 503, 482, 407, 0, - 435, 0, 623, 635, 543, 637, 441, 402, 640, 568, - 402, 737, 414, 548, 391, 407, 570, 348, 553, 336, - 559, 359, 331, 332, 385, 899, 348, 562, 348, 529, - 348, 351, 906, 349, 353, 427, 571, 351, 382, 352, - 351, 385, 916, 356, 358, 329, 330, 385, 409, 356, - 381, 382, 383, 384, 431, 372, 491, 492, 367, 368, - 382, 368, 382, 548, 382, 349, 385, 351, 553, 350, - 447, 355, 351, 351, 559, 356, 349, 562, 351, 349, - 359, 359, 474, 541, 350, 358, 571, 641, 352, 547, - 356, 549, 356, 351, 552, 602, 554, 604, 556, 557, - 358, 356, 349, 561, 359, 590, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 351, 327, 328, 353, - 741, 382, 356, 358, 385, 359, 358, 409, 410, 411, - 412, 413, 414, 415, 361, 635, 363, 637, 350, 541, - 640, 350, 774, 650, 356, 350, 350, 356, 356, 357, - 709, 356, 356, 350, 654, 557, 350, 350, 350, 356, - 350, 350, 356, 356, 356, 350, 356, 356, 350, 350, - 354, 356, 356, 350, 356, 356, 568, 350, 570, 356, - 350, 350, 350, 356, 350, 350, 356, 356, 356, 566, - 356, 356, 350, 350, 920, 350, 350, 350, 356, 356, - 352, 356, 356, 356, 356, 381, 382, 383, 384, 720, - 721, 722, 723, 356, 356, 382, 359, 359, 385, 440, - 779, 842, 854, 382, 633, 356, 385, 356, 359, 349, - 359, 382, 382, 359, 385, 385, 743, 349, 633, 349, - 747, 633, 382, 382, 382, 385, 385, 385, 382, 641, - 382, 385, 382, 385, 356, 385, 349, 359, 374, 375, - 376, 482, 349, 798, 799, 765, 766, 333, 334, 704, - 805, 806, 811, 349, 774, 364, 365, 366, 910, 500, - 501, 356, 357, 716, 717, 349, 718, 719, 724, 725, - 350, 356, 359, 385, 367, 385, 353, 385, 353, 385, - 351, 385, 385, 351, 350, 926, 385, 359, 358, 356, - 349, 532, 356, 798, 799, 358, 356, 709, 356, 356, - 805, 806, 356, 356, 356, 356, 811, 548, 813, 356, - 350, 356, 553, 840, 350, 359, 843, 358, 559, 351, - 385, 562, 349, 349, 385, 348, 335, 351, 371, 385, - 571, 370, 352, 337, 854, 385, 369, 352, 354, 349, - 382, 359, 359, 349, 349, 359, 349, 359, 359, 590, - 357, 359, 349, 383, 349, 348, 883, 359, 350, 358, - 356, 391, 383, 385, 350, 356, 356, 779, 350, 399, - 391, 399, 402, 900, 399, 352, 896, 407, 399, 407, - 399, 402, 407, 352, 385, 356, 407, 417, 915, 348, - 910, 354, 350, 393, 349, 359, 385, 427, 426, 353, - 350, 431, 358, 397, 353, 353, 427, 359, 354, 726, - 431, 727, 730, 728, 843, 729, 573, 447, 659, 731, - 331, 703, 818, 905, 845, 916, 447, 917, 845, 883, - 633, 843, 399, 431, 633, 633, 564, 796, 425, 427, - 794, 803, 799, 806, 474, 801, 431, 813, 809, -1, - -1, 811, -1, 474, 883, 485, -1, -1, -1, -1, - -1, -1, -1, -1, 485, -1, -1, -1, -1, -1, - -1, 883, 713, 714, 715, 716, 717, 718, 719, 720, - 721, 722, 723, 724, 725, 726, 727, 728, 729, 730, - 731, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 537, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 566, -1, 568, -1, - 570, -1, -1, -1, -1, 566, -1, 568, -1, 570, - -1, -1, -1, -1, -1, -1, -1, 798, 799, -1, - -1, -1, -1, -1, 805, 806, -1, -1, -1, -1, - 811, -1, 813, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 623, -1, -1, -1, -1, -1, -1, - -1, -1, 623, 633, -1, -1, -1, -1, -1, -1, - -1, 641, 633, -1, -1, -1, -1, -1, -1, -1, - 641, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 709, - -1, -1, -1, -1, -1, -1, -1, -1, 709, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 737, -1, -1, - -1, 741, -1, -1, -1, -1, 737, -1, -1, -1, - 741, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 779, - -1, -1, -1, -1, -1, -1, -1, -1, 779, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 842, 843, -1, 845, -1, 845, -1, -1, - -1, 842, 843, -1, 845, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 883, -1, -1, -1, -1, -1, -1, - -1, -1, 883, -1, -1, -1, -1, -1, -1, 899, - -1, -1, -1, -1, -1, -1, 906, -1, 899, -1, - -1, -1, -1, -1, -1, 906, 916, -1, -1, -1, - 920, -1, -1, -1, -1, 916, 926, -1, -1, 920, - -1, -1, -1, 0, -1, 926, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 351, -1, -1, -1, -1, -1, - -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - 377, -1, -1, -1, -1, -1, -1, -1, -1, 386, - 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, - -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 348, 349, -1, 351, -1, 353, - 354, -1, -1, -1, -1, 359, 360, 361, 362, 363, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, 377, -1, -1, -1, 381, 382, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, -1, 398, 399, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - 351, -1, 353, 354, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, 377, -1, -1, -1, - 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, -1, 398, 399, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, -1, - -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, 351, -1, 353, -1, -1, -1, -1, - -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, 377, - -1, -1, -1, 381, 382, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, -1, - 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 3, 4, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, 393, -1, -1, 396, -1, 398, 399, + -1, -1, 402, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -3244,202 +3527,112 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, + 315, 316, -1, -1, -1, 320, 321, 322, 323, 324, + 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, 351, -1, 353, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, -1, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, + 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, + 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, -1, -1, 329, 330, -1, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 348, 349, -1, 351, - -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, 377, -1, -1, -1, 381, - 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, -1, 398, 399, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, -1, -1, - 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, - 349, -1, 351, -1, -1, -1, -1, -1, -1, -1, - 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 373, 374, 375, 376, 377, -1, - -1, -1, 381, 382, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, -1, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, 320, 321, 322, 323, 324, 325, - 326, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, - 376, -1, -1, -1, -1, 381, 382, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, + -1, 351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, -1, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, -1, -1, -1, 320, 321, 322, 323, 324, + 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 351, -1, - -1, -1, -1, -1, -1, -1, 359, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 373, 374, 375, 376, 377, -1, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, - 413, -1, -1, -1, -1, -1, -1, -1, -1, 422, - -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 3, 4, 5, 6, 7, 8, 9, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3474,198 +3667,17 @@ static const yytype_int16 yycheck[] = 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, 393, -1, -1, 396, -1, 398, 399, - -1, -1, 402, -1, -1, -1, -1, -1, 408, 409, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 359, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 373, 374, 375, 376, - -1, -1, -1, -1, -1, -1, -1, -1, 385, 386, - 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 408, 409, 410, 411, 412, 413, -1, -1, -1, - -1, -1, -1, -1, -1, 422, -1, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, 320, 321, 322, 323, - 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 351, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 373, - 374, 375, 376, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 386, 387, 388, 389, 390, 391, 392, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 408, 409, 410, 411, 412, 413, - -1, -1, -1, -1, -1, -1, -1, -1, 422, -1, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, -1, 320, - 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 373, 374, 375, 376, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, - 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 408, 409, 410, - 411, 412, 413, -1, -1, -1, -1, -1, -1, -1, - -1, 422, -1, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 354, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 373, 374, 375, 376, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 408, 409, 410, 411, 412, 413, -1, -1, -1, -1, - -1, -1, -1, -1, 422, -1, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 3, 4, + 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -3700,63 +3712,150 @@ static const yytype_int16 yycheck[] = 315, 316, -1, -1, -1, 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 354, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 354, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, + 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, + -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, + 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, + 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, + 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, + -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, + -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 348, 349, -1, -1, -1, 353, 354, -1, + -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, + 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, -1, 320, 321, - 322, 323, 324, 325, 326, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, + 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, + 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, + 353, 354, -1, -1, -1, -1, -1, 360, 361, 362, + 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, + 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 373, 374, 375, 376, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, - 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 408, 409, 410, 411, - 412, 413, -1, -1, -1, -1, -1, -1, -1, -1, - 422, -1, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 4, 5, 6, 7, 8, 9, + -1, -1, -1, 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3791,7 +3890,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, -1, -1, 353, 354, -1, -1, -1, -1, -1, + -1, -1, 352, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, @@ -3834,7 +3933,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 348, 349, -1, -1, -1, 353, 354, -1, -1, + -1, 348, 349, -1, -1, -1, 353, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, @@ -3921,7 +4020,7 @@ static const yytype_int16 yycheck[] = -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - -1, -1, 353, -1, -1, -1, -1, -1, -1, 360, + -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, @@ -3964,7 +4063,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, -1, 352, -1, -1, -1, -1, -1, + 348, 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, @@ -4008,7 +4107,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, + -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, -1, @@ -4092,99 +4191,13 @@ static const yytype_int16 yycheck[] = 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, - 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 348, - 349, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 360, 361, 362, 363, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 381, 382, 383, 384, 385, 386, -1, -1, - -1, -1, 391, 392, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 414, 415, 416, 417, 418, - 419, 420, 421, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 436, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, - -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, - 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, - 323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 386, -1, -1, -1, -1, 391, 392 + -1, -1, -1, -1, -1, -1, -1, 386, -1, -1, + -1, -1, 391, 392 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4228,136 +4241,137 @@ static const yytype_int16 yystos[] = 409, 410, 411, 412, 413, 422, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 487, 488, - 491, 492, 493, 494, 498, 499, 500, 501, 502, 503, - 506, 507, 508, 509, 510, 512, 517, 518, 519, 560, - 561, 562, 564, 571, 575, 576, 581, 584, 349, 349, - 349, 349, 349, 349, 349, 349, 351, 518, 353, 385, - 349, 349, 359, 385, 359, 563, 350, 356, 495, 496, - 497, 507, 512, 356, 359, 385, 359, 385, 508, 512, - 367, 514, 515, 0, 561, 492, 500, 507, 359, 491, - 385, 567, 568, 585, 586, 382, 385, 567, 382, 567, - 382, 567, 382, 567, 382, 567, 567, 585, 382, 567, - 385, 565, 566, 512, 521, 353, 385, 409, 504, 505, - 385, 511, 351, 359, 513, 353, 539, 564, 496, 495, - 497, 385, 385, 349, 358, 513, 353, 356, 359, 490, - 329, 330, 348, 349, 360, 361, 362, 363, 381, 382, - 383, 384, 385, 414, 415, 416, 417, 418, 419, 420, - 421, 457, 458, 459, 461, 462, 463, 464, 465, 466, - 467, 468, 469, 510, 512, 516, 513, 350, 385, 359, - 358, 356, 350, 356, 350, 356, 358, 356, 356, 356, - 350, 356, 356, 356, 356, 356, 356, 356, 350, 356, - 350, 356, 349, 352, 356, 359, 507, 512, 522, 523, - 520, 358, 350, 356, 350, 356, 352, 468, 470, 471, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 489, 490, 493, 494, 495, 496, 500, 501, 502, 503, + 504, 505, 508, 509, 510, 511, 512, 514, 519, 520, + 521, 562, 563, 564, 566, 573, 577, 578, 583, 586, + 349, 349, 349, 349, 349, 349, 349, 349, 351, 520, + 353, 385, 349, 349, 359, 385, 359, 565, 350, 356, + 497, 498, 499, 509, 514, 356, 359, 385, 359, 385, + 510, 514, 367, 516, 517, 0, 563, 494, 502, 509, + 359, 493, 385, 569, 570, 587, 588, 382, 385, 569, + 382, 569, 382, 569, 382, 569, 382, 569, 569, 587, + 382, 569, 385, 567, 568, 514, 523, 353, 385, 409, + 506, 507, 385, 513, 351, 359, 515, 353, 541, 566, + 498, 497, 499, 385, 385, 349, 358, 515, 353, 356, + 359, 492, 329, 330, 348, 349, 360, 361, 362, 363, + 381, 382, 383, 384, 385, 414, 415, 416, 417, 418, + 419, 420, 421, 459, 460, 461, 463, 464, 465, 466, + 467, 468, 469, 470, 471, 512, 514, 518, 515, 350, + 385, 359, 358, 356, 350, 356, 350, 356, 358, 356, + 356, 356, 350, 356, 356, 356, 356, 356, 356, 356, + 350, 356, 350, 356, 349, 352, 356, 359, 509, 514, + 524, 525, 522, 358, 350, 356, 350, 356, 352, 470, 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 351, 359, 353, 354, 359, 393, 394, 395, 396, 398, - 399, 400, 401, 402, 403, 404, 405, 406, 407, 423, - 468, 481, 483, 485, 487, 491, 510, 512, 528, 529, - 530, 531, 532, 540, 541, 542, 543, 546, 547, 550, - 551, 552, 559, 564, 513, 358, 513, 353, 483, 526, - 358, 489, 385, 356, 359, 468, 468, 485, 329, 330, - 351, 355, 350, 350, 356, 392, 483, 349, 468, 356, - 368, 564, 348, 351, 382, 568, 585, 385, 586, 348, - 381, 382, 383, 384, 572, 573, 382, 481, 486, 574, - 382, 381, 382, 383, 384, 577, 578, 382, 486, 579, - 382, 348, 580, 382, 585, 385, 486, 582, 583, 382, - 486, 352, 566, 512, 385, 524, 525, 354, 523, 522, - 486, 505, 385, 364, 365, 366, 361, 363, 327, 328, - 331, 332, 367, 368, 333, 334, 371, 370, 369, 335, - 337, 336, 372, 352, 352, 481, 354, 533, 349, 359, - 359, 554, 349, 349, 359, 359, 485, 349, 485, 357, - 359, 359, 359, 359, 338, 339, 340, 341, 342, 343, - 344, 345, 346, 347, 358, 484, 356, 359, 354, 529, - 543, 547, 552, 526, 358, 354, 526, 527, 526, 522, - 385, 350, 460, 485, 385, 483, 468, 348, 382, 569, - 570, 350, 358, 350, 356, 350, 356, 350, 356, 356, - 350, 356, 350, 356, 350, 356, 356, 350, 356, 356, - 350, 356, 350, 356, 350, 350, 524, 513, 356, 359, - 354, 468, 468, 468, 470, 470, 471, 471, 472, 472, - 472, 472, 473, 473, 474, 475, 476, 477, 478, 479, - 482, 352, 540, 553, 529, 555, 485, 359, 485, 357, - 483, 483, 526, 354, 356, 354, 352, 352, 356, 352, - 356, 573, 572, 486, 574, 578, 577, 486, 579, 348, - 580, 582, 583, 359, 525, 485, 534, 485, 500, 545, - 393, 528, 541, 556, 350, 350, 354, 526, 348, 382, - 350, 350, 350, 350, 350, 350, 357, 354, 385, 350, - 349, 545, 557, 558, 536, 537, 538, 544, 548, 483, - 358, 530, 535, 539, 485, 359, 350, 397, 532, 530, - 353, 526, 350, 485, 535, 536, 540, 549, 359, 354 + 482, 483, 351, 359, 353, 354, 359, 393, 394, 395, + 396, 398, 399, 400, 401, 402, 403, 404, 405, 406, + 407, 423, 470, 483, 485, 487, 489, 493, 512, 514, + 530, 531, 532, 533, 534, 542, 543, 544, 545, 548, + 549, 552, 553, 554, 561, 566, 515, 358, 515, 353, + 485, 528, 358, 491, 385, 356, 359, 470, 470, 487, + 329, 330, 351, 355, 350, 350, 356, 392, 485, 349, + 470, 356, 368, 566, 348, 351, 382, 570, 587, 385, + 588, 348, 381, 382, 383, 384, 574, 575, 382, 483, + 488, 576, 382, 381, 382, 383, 384, 579, 580, 382, + 488, 581, 382, 348, 582, 382, 587, 385, 488, 584, + 585, 382, 488, 352, 568, 514, 385, 526, 527, 354, + 525, 524, 488, 507, 385, 364, 365, 366, 361, 363, + 327, 328, 331, 332, 367, 368, 333, 334, 371, 370, + 369, 335, 337, 336, 372, 352, 352, 483, 354, 535, + 349, 359, 359, 556, 349, 349, 359, 359, 487, 349, + 487, 357, 359, 359, 359, 359, 338, 339, 340, 341, + 342, 343, 344, 345, 346, 347, 358, 486, 356, 359, + 354, 531, 545, 549, 554, 528, 358, 354, 528, 529, + 528, 524, 385, 350, 462, 487, 385, 485, 470, 348, + 382, 571, 572, 350, 358, 350, 356, 350, 356, 350, + 356, 356, 350, 356, 350, 356, 350, 356, 356, 350, + 356, 356, 350, 356, 350, 356, 350, 350, 526, 515, + 356, 359, 354, 470, 470, 470, 472, 472, 473, 473, + 474, 474, 474, 474, 475, 475, 476, 477, 478, 479, + 480, 481, 484, 352, 542, 555, 531, 557, 487, 359, + 487, 357, 485, 485, 528, 354, 356, 354, 352, 352, + 356, 352, 356, 575, 574, 488, 576, 580, 579, 488, + 581, 348, 582, 584, 585, 359, 527, 487, 536, 487, + 502, 547, 393, 530, 543, 558, 350, 350, 354, 528, + 348, 382, 350, 350, 350, 350, 350, 350, 357, 354, + 385, 350, 349, 547, 559, 560, 538, 539, 540, 546, + 550, 485, 358, 532, 537, 541, 487, 359, 350, 397, + 534, 532, 353, 528, 350, 487, 537, 538, 542, 551, + 359, 354 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 456, 457, 458, 458, 458, 458, 458, 458, 458, - 458, 458, 458, 458, 458, 458, 458, 458, 459, 459, - 459, 459, 459, 459, 460, 461, 462, 463, 463, 464, - 464, 465, 465, 466, 467, 467, 467, 468, 468, 468, - 468, 469, 469, 469, 469, 470, 470, 470, 470, 471, - 471, 471, 472, 472, 472, 473, 473, 473, 473, 473, - 474, 474, 474, 475, 475, 476, 476, 477, 477, 478, - 478, 479, 479, 480, 480, 481, 482, 481, 483, 483, - 484, 484, 484, 484, 484, 484, 484, 484, 484, 484, - 484, 485, 485, 486, 487, 487, 487, 487, 487, 487, - 487, 487, 487, 487, 487, 489, 488, 490, 490, 491, - 491, 491, 491, 492, 492, 493, 493, 494, 495, 495, - 496, 496, 496, 496, 497, 498, 498, 498, 498, 498, - 499, 499, 499, 499, 499, 500, 500, 501, 502, 502, - 502, 502, 502, 502, 502, 502, 502, 503, 504, 504, - 505, 505, 505, 506, 507, 507, 508, 508, 508, 508, - 508, 508, 508, 508, 508, 508, 508, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 509, 509, 509, 509, 509, 509, 509, 509, - 509, 509, 510, 511, 511, 512, 512, 513, 513, 513, - 513, 514, 514, 515, 516, 516, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 518, 518, 518, 520, 519, 521, 519, 522, 522, - 523, 523, 524, 524, 525, 525, 526, 526, 526, 526, - 527, 527, 528, 529, 529, 530, 530, 530, 530, 530, - 530, 530, 530, 531, 532, 533, 534, 532, 535, 535, - 537, 536, 538, 536, 539, 539, 540, 540, 541, 541, - 542, 542, 543, 544, 544, 545, 545, 546, 546, 548, - 547, 549, 549, 550, 550, 551, 551, 553, 552, 554, - 552, 555, 552, 556, 556, 557, 557, 558, 558, 559, - 559, 559, 559, 559, 559, 559, 559, 560, 560, 561, - 561, 561, 563, 562, 564, 565, 565, 566, 566, 567, - 567, 568, 568, 569, 569, 570, 570, 571, 571, 571, - 571, 571, 571, 572, 572, 573, 573, 573, 573, 573, - 574, 574, 575, 575, 576, 576, 576, 576, 576, 576, - 576, 576, 577, 577, 578, 578, 578, 578, 579, 579, - 580, 580, 581, 581, 581, 581, 582, 582, 583, 584, - 584, 585, 585, 586, 586 + 0, 458, 459, 460, 460, 460, 460, 460, 460, 460, + 460, 460, 460, 460, 460, 460, 460, 460, 461, 461, + 461, 461, 461, 461, 462, 463, 464, 465, 465, 466, + 466, 467, 467, 468, 469, 469, 469, 470, 470, 470, + 470, 471, 471, 471, 471, 472, 472, 472, 472, 473, + 473, 473, 474, 474, 474, 475, 475, 475, 475, 475, + 476, 476, 476, 477, 477, 478, 478, 479, 479, 480, + 480, 481, 481, 482, 482, 483, 484, 483, 485, 485, + 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, + 486, 487, 487, 488, 489, 489, 489, 489, 489, 489, + 489, 489, 489, 489, 489, 491, 490, 492, 492, 493, + 493, 493, 493, 494, 494, 495, 495, 496, 497, 497, + 498, 498, 498, 498, 499, 500, 500, 500, 500, 500, + 501, 501, 501, 501, 501, 502, 502, 503, 504, 504, + 504, 504, 504, 504, 504, 504, 504, 504, 505, 506, + 506, 507, 507, 507, 508, 509, 509, 510, 510, 510, + 510, 510, 510, 510, 510, 510, 510, 510, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, + 511, 511, 511, 511, 512, 513, 513, 514, 514, 515, + 515, 515, 515, 516, 516, 517, 518, 518, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, + 519, 519, 519, 520, 520, 520, 522, 521, 523, 521, + 524, 524, 525, 525, 526, 526, 527, 527, 528, 528, + 528, 528, 529, 529, 530, 531, 531, 532, 532, 532, + 532, 532, 532, 532, 532, 533, 534, 535, 536, 534, + 537, 537, 539, 538, 540, 538, 541, 541, 542, 542, + 543, 543, 544, 544, 545, 546, 546, 547, 547, 548, + 548, 550, 549, 551, 551, 552, 552, 553, 553, 555, + 554, 556, 554, 557, 554, 558, 558, 559, 559, 560, + 560, 561, 561, 561, 561, 561, 561, 561, 561, 562, + 562, 563, 563, 563, 565, 564, 566, 567, 567, 568, + 568, 569, 569, 570, 570, 571, 571, 572, 572, 573, + 573, 573, 573, 573, 573, 574, 574, 575, 575, 575, + 575, 575, 576, 576, 577, 577, 578, 578, 578, 578, + 578, 578, 578, 578, 579, 579, 580, 580, 580, 580, + 581, 581, 582, 582, 583, 583, 583, 583, 584, 584, + 585, 586, 586, 587, 587, 588, 588 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4377,14 +4391,14 @@ static const yytype_int8 yyr2[] = 3, 3, 4, 1, 1, 2, 3, 3, 2, 3, 2, 1, 2, 1, 1, 1, 3, 4, 6, 5, 1, 2, 3, 5, 4, 1, 2, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 4, 1, 3, - 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, + 3, 1, 3, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 4, 1, 1, 3, 2, 3, 2, 3, 3, - 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, + 1, 1, 4, 1, 1, 1, 3, 2, 3, 2, + 3, 3, 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4416,22 +4430,22 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 0, 6, 0, 5, 1, 2, - 3, 4, 1, 3, 1, 2, 1, 3, 4, 2, - 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 2, 2, 0, 0, 5, 1, 1, - 0, 2, 0, 2, 2, 3, 1, 2, 1, 2, - 1, 2, 5, 3, 1, 1, 4, 1, 2, 0, - 8, 0, 1, 3, 2, 1, 2, 0, 6, 0, - 8, 0, 7, 1, 1, 1, 0, 2, 3, 2, - 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, - 1, 1, 0, 3, 5, 1, 3, 1, 4, 1, - 3, 5, 5, 1, 3, 1, 3, 4, 6, 6, - 8, 6, 8, 1, 3, 1, 1, 1, 1, 1, - 1, 3, 4, 6, 4, 6, 6, 8, 6, 8, - 6, 8, 1, 3, 1, 1, 1, 1, 1, 3, - 1, 3, 6, 8, 4, 6, 1, 3, 1, 4, - 6, 1, 3, 3, 3 + 1, 1, 1, 1, 1, 1, 0, 6, 0, 5, + 1, 2, 3, 4, 1, 3, 1, 2, 1, 3, + 4, 2, 1, 3, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 2, 2, 0, 0, 5, + 1, 1, 0, 2, 0, 2, 2, 3, 1, 2, + 1, 2, 1, 2, 5, 3, 1, 1, 4, 1, + 2, 0, 8, 0, 1, 3, 2, 1, 2, 0, + 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, + 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, + 2, 1, 1, 1, 0, 3, 5, 1, 3, 1, + 4, 1, 3, 5, 5, 1, 3, 1, 3, 4, + 6, 6, 8, 6, 8, 1, 3, 1, 1, 1, + 1, 1, 1, 3, 4, 6, 4, 6, 6, 8, + 6, 8, 6, 8, 1, 3, 1, 1, 1, 1, + 1, 3, 1, 3, 6, 8, 4, 6, 1, 3, + 1, 4, 6, 1, 3, 3, 3 }; @@ -5181,7 +5195,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5185 "MachineIndependent/glslang_tab.cpp" +#line 5199 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ @@ -5189,7 +5203,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5193 "MachineIndependent/glslang_tab.cpp" +#line 5207 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ @@ -5199,7 +5213,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5203 "MachineIndependent/glslang_tab.cpp" +#line 5217 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ @@ -5207,7 +5221,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5211 "MachineIndependent/glslang_tab.cpp" +#line 5225 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ @@ -5215,7 +5229,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5219 "MachineIndependent/glslang_tab.cpp" +#line 5233 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ @@ -5224,7 +5238,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5228 "MachineIndependent/glslang_tab.cpp" +#line 5242 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ @@ -5232,7 +5246,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5236 "MachineIndependent/glslang_tab.cpp" +#line 5250 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ @@ -5240,7 +5254,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5244 "MachineIndependent/glslang_tab.cpp" +#line 5258 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ @@ -5249,7 +5263,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5253 "MachineIndependent/glslang_tab.cpp" +#line 5267 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ @@ -5258,7 +5272,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5262 "MachineIndependent/glslang_tab.cpp" +#line 5276 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ @@ -5267,7 +5281,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5271 "MachineIndependent/glslang_tab.cpp" +#line 5285 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ @@ -5276,7 +5290,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5280 "MachineIndependent/glslang_tab.cpp" +#line 5294 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ @@ -5285,7 +5299,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5289 "MachineIndependent/glslang_tab.cpp" +#line 5303 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ @@ -5294,7 +5308,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5298 "MachineIndependent/glslang_tab.cpp" +#line 5312 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ @@ -5305,7 +5319,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5309 "MachineIndependent/glslang_tab.cpp" +#line 5323 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ @@ -5314,7 +5328,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5318 "MachineIndependent/glslang_tab.cpp" +#line 5332 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ @@ -5322,7 +5336,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5326 "MachineIndependent/glslang_tab.cpp" +#line 5340 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ @@ -5330,7 +5344,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5334 "MachineIndependent/glslang_tab.cpp" +#line 5348 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ @@ -5338,7 +5352,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5342 "MachineIndependent/glslang_tab.cpp" +#line 5356 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ @@ -5346,7 +5360,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5350 "MachineIndependent/glslang_tab.cpp" +#line 5364 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ @@ -5356,7 +5370,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5360 "MachineIndependent/glslang_tab.cpp" +#line 5374 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ @@ -5366,7 +5380,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5370 "MachineIndependent/glslang_tab.cpp" +#line 5384 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ @@ -5375,7 +5389,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5379 "MachineIndependent/glslang_tab.cpp" +#line 5393 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ @@ -5384,7 +5398,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5388 "MachineIndependent/glslang_tab.cpp" +#line 5402 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ @@ -5392,7 +5406,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5396 "MachineIndependent/glslang_tab.cpp" +#line 5410 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ @@ -5401,7 +5415,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5405 "MachineIndependent/glslang_tab.cpp" +#line 5419 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ @@ -5410,7 +5424,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5414 "MachineIndependent/glslang_tab.cpp" +#line 5428 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ @@ -5418,7 +5432,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5422 "MachineIndependent/glslang_tab.cpp" +#line 5436 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ @@ -5426,7 +5440,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5430 "MachineIndependent/glslang_tab.cpp" +#line 5444 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ @@ -5438,7 +5452,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5442 "MachineIndependent/glslang_tab.cpp" +#line 5456 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ @@ -5450,7 +5464,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5454 "MachineIndependent/glslang_tab.cpp" +#line 5468 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ @@ -5458,7 +5472,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5462 "MachineIndependent/glslang_tab.cpp" +#line 5476 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ @@ -5468,7 +5482,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5472 "MachineIndependent/glslang_tab.cpp" +#line 5486 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ @@ -5500,7 +5514,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5504 "MachineIndependent/glslang_tab.cpp" +#line 5518 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ @@ -5510,7 +5524,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5514 "MachineIndependent/glslang_tab.cpp" +#line 5528 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ @@ -5521,7 +5535,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5525 "MachineIndependent/glslang_tab.cpp" +#line 5539 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ @@ -5530,7 +5544,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5534 "MachineIndependent/glslang_tab.cpp" +#line 5548 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ @@ -5539,7 +5553,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5543 "MachineIndependent/glslang_tab.cpp" +#line 5557 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ @@ -5560,38 +5574,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5564 "MachineIndependent/glslang_tab.cpp" +#line 5578 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ #line 627 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5570 "MachineIndependent/glslang_tab.cpp" +#line 5584 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ #line 628 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5576 "MachineIndependent/glslang_tab.cpp" +#line 5590 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ #line 629 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5582 "MachineIndependent/glslang_tab.cpp" +#line 5596 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ #line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5589 "MachineIndependent/glslang_tab.cpp" +#line 5603 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ #line 636 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5595 "MachineIndependent/glslang_tab.cpp" +#line 5609 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ @@ -5601,7 +5615,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5605 "MachineIndependent/glslang_tab.cpp" +#line 5619 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ @@ -5611,7 +5625,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5615 "MachineIndependent/glslang_tab.cpp" +#line 5629 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ @@ -5622,13 +5636,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5626 "MachineIndependent/glslang_tab.cpp" +#line 5640 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ #line 656 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5632 "MachineIndependent/glslang_tab.cpp" +#line 5646 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ @@ -5638,7 +5652,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5642 "MachineIndependent/glslang_tab.cpp" +#line 5656 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ @@ -5648,13 +5662,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5652 "MachineIndependent/glslang_tab.cpp" +#line 5666 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ #line 670 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5658 "MachineIndependent/glslang_tab.cpp" +#line 5672 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ @@ -5665,7 +5679,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5669 "MachineIndependent/glslang_tab.cpp" +#line 5683 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ @@ -5676,13 +5690,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5680 "MachineIndependent/glslang_tab.cpp" +#line 5694 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ #line 686 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5686 "MachineIndependent/glslang_tab.cpp" +#line 5700 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ @@ -5692,7 +5706,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5696 "MachineIndependent/glslang_tab.cpp" +#line 5710 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ @@ -5702,7 +5716,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5706 "MachineIndependent/glslang_tab.cpp" +#line 5720 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ @@ -5712,7 +5726,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5716 "MachineIndependent/glslang_tab.cpp" +#line 5730 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ @@ -5722,13 +5736,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5726 "MachineIndependent/glslang_tab.cpp" +#line 5740 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ #line 710 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5732 "MachineIndependent/glslang_tab.cpp" +#line 5746 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ @@ -5742,7 +5756,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5746 "MachineIndependent/glslang_tab.cpp" +#line 5760 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ @@ -5756,13 +5770,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5760 "MachineIndependent/glslang_tab.cpp" +#line 5774 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ #line 732 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5766 "MachineIndependent/glslang_tab.cpp" +#line 5780 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ @@ -5773,13 +5787,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5777 "MachineIndependent/glslang_tab.cpp" +#line 5791 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ #line 742 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5783 "MachineIndependent/glslang_tab.cpp" +#line 5797 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ @@ -5790,13 +5804,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5794 "MachineIndependent/glslang_tab.cpp" +#line 5808 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ #line 752 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5800 "MachineIndependent/glslang_tab.cpp" +#line 5814 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ @@ -5807,13 +5821,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5811 "MachineIndependent/glslang_tab.cpp" +#line 5825 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ #line 762 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5817 "MachineIndependent/glslang_tab.cpp" +#line 5831 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ @@ -5823,13 +5837,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5827 "MachineIndependent/glslang_tab.cpp" +#line 5841 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ #line 771 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5833 "MachineIndependent/glslang_tab.cpp" +#line 5847 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ @@ -5839,13 +5853,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5843 "MachineIndependent/glslang_tab.cpp" +#line 5857 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ #line 780 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5849 "MachineIndependent/glslang_tab.cpp" +#line 5863 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ @@ -5855,13 +5869,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5859 "MachineIndependent/glslang_tab.cpp" +#line 5873 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ #line 789 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5865 "MachineIndependent/glslang_tab.cpp" +#line 5879 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ @@ -5869,7 +5883,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { ++parseContext.controlFlowNestingLevel; } -#line 5873 "MachineIndependent/glslang_tab.cpp" +#line 5887 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ @@ -5886,13 +5900,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5890 "MachineIndependent/glslang_tab.cpp" +#line 5904 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ #line 808 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5896 "MachineIndependent/glslang_tab.cpp" +#line 5910 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ @@ -5910,7 +5924,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5914 "MachineIndependent/glslang_tab.cpp" +#line 5928 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ @@ -5919,7 +5933,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5923 "MachineIndependent/glslang_tab.cpp" +#line 5937 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ @@ -5928,7 +5942,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5932 "MachineIndependent/glslang_tab.cpp" +#line 5946 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ @@ -5937,7 +5951,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5941 "MachineIndependent/glslang_tab.cpp" +#line 5955 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ @@ -5947,7 +5961,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5951 "MachineIndependent/glslang_tab.cpp" +#line 5965 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ @@ -5956,7 +5970,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5960 "MachineIndependent/glslang_tab.cpp" +#line 5974 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ @@ -5965,7 +5979,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5969 "MachineIndependent/glslang_tab.cpp" +#line 5983 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ @@ -5974,7 +5988,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 5978 "MachineIndependent/glslang_tab.cpp" +#line 5992 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ @@ -5983,7 +5997,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 5987 "MachineIndependent/glslang_tab.cpp" +#line 6001 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ @@ -5992,7 +6006,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 5996 "MachineIndependent/glslang_tab.cpp" +#line 6010 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ @@ -6001,7 +6015,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6005 "MachineIndependent/glslang_tab.cpp" +#line 6019 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ @@ -6010,7 +6024,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6014 "MachineIndependent/glslang_tab.cpp" +#line 6028 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ @@ -6018,7 +6032,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6022 "MachineIndependent/glslang_tab.cpp" +#line 6036 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ @@ -6031,7 +6045,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6035 "MachineIndependent/glslang_tab.cpp" +#line 6049 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ @@ -6040,7 +6054,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6044 "MachineIndependent/glslang_tab.cpp" +#line 6058 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ @@ -6050,7 +6064,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6054 "MachineIndependent/glslang_tab.cpp" +#line 6068 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ @@ -6062,7 +6076,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6066 "MachineIndependent/glslang_tab.cpp" +#line 6080 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ @@ -6072,7 +6086,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6076 "MachineIndependent/glslang_tab.cpp" +#line 6090 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ @@ -6082,7 +6096,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6086 "MachineIndependent/glslang_tab.cpp" +#line 6100 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ @@ -6094,7 +6108,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6098 "MachineIndependent/glslang_tab.cpp" +#line 6112 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ @@ -6103,7 +6117,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6107 "MachineIndependent/glslang_tab.cpp" +#line 6121 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ @@ -6112,7 +6126,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6116 "MachineIndependent/glslang_tab.cpp" +#line 6130 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ @@ -6121,7 +6135,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6125 "MachineIndependent/glslang_tab.cpp" +#line 6139 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ @@ -6131,7 +6145,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6135 "MachineIndependent/glslang_tab.cpp" +#line 6149 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ @@ -6141,7 +6155,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6145 "MachineIndependent/glslang_tab.cpp" +#line 6159 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ @@ -6152,13 +6166,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6156 "MachineIndependent/glslang_tab.cpp" +#line 6170 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ #line 956 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6162 "MachineIndependent/glslang_tab.cpp" +#line 6176 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ @@ -6172,7 +6186,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6176 "MachineIndependent/glslang_tab.cpp" +#line 6190 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ @@ -6181,7 +6195,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6185 "MachineIndependent/glslang_tab.cpp" +#line 6199 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ @@ -6190,7 +6204,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6194 "MachineIndependent/glslang_tab.cpp" +#line 6208 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ @@ -6199,7 +6213,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6203 "MachineIndependent/glslang_tab.cpp" +#line 6217 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ @@ -6210,7 +6224,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6214 "MachineIndependent/glslang_tab.cpp" +#line 6228 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ @@ -6221,7 +6235,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6225 "MachineIndependent/glslang_tab.cpp" +#line 6239 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ @@ -6233,7 +6247,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6237 "MachineIndependent/glslang_tab.cpp" +#line 6251 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ @@ -6241,7 +6255,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6245 "MachineIndependent/glslang_tab.cpp" +#line 6259 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ @@ -6249,7 +6263,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6253 "MachineIndependent/glslang_tab.cpp" +#line 6267 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ @@ -6262,7 +6276,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6266 "MachineIndependent/glslang_tab.cpp" +#line 6280 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ @@ -6284,7 +6298,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6288 "MachineIndependent/glslang_tab.cpp" +#line 6302 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ @@ -6308,7 +6322,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6312 "MachineIndependent/glslang_tab.cpp" +#line 6326 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ @@ -6328,7 +6342,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6332 "MachineIndependent/glslang_tab.cpp" +#line 6346 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ @@ -6352,7 +6366,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6356 "MachineIndependent/glslang_tab.cpp" +#line 6370 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ @@ -6368,7 +6382,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6372 "MachineIndependent/glslang_tab.cpp" +#line 6386 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ @@ -6380,7 +6394,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6384 "MachineIndependent/glslang_tab.cpp" +#line 6398 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ @@ -6395,7 +6409,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6399 "MachineIndependent/glslang_tab.cpp" +#line 6413 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ @@ -6407,7 +6421,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6411 "MachineIndependent/glslang_tab.cpp" +#line 6425 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ @@ -6418,7 +6432,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6422 "MachineIndependent/glslang_tab.cpp" +#line 6436 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ @@ -6426,7 +6440,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 6430 "MachineIndependent/glslang_tab.cpp" +#line 6444 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ @@ -6435,7 +6449,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6439 "MachineIndependent/glslang_tab.cpp" +#line 6453 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ @@ -6444,7 +6458,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6448 "MachineIndependent/glslang_tab.cpp" +#line 6462 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ @@ -6454,7 +6468,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6458 "MachineIndependent/glslang_tab.cpp" +#line 6472 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ @@ -6464,7 +6478,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6468 "MachineIndependent/glslang_tab.cpp" +#line 6482 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ @@ -6476,7 +6490,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6480 "MachineIndependent/glslang_tab.cpp" +#line 6494 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ @@ -6486,7 +6500,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6490 "MachineIndependent/glslang_tab.cpp" +#line 6504 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ @@ -6496,7 +6510,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6500 "MachineIndependent/glslang_tab.cpp" +#line 6514 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ @@ -6506,7 +6520,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6510 "MachineIndependent/glslang_tab.cpp" +#line 6524 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -6516,7 +6530,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6520 "MachineIndependent/glslang_tab.cpp" +#line 6534 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ @@ -6531,7 +6545,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 6535 "MachineIndependent/glslang_tab.cpp" +#line 6549 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ @@ -6560,7 +6574,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6564 "MachineIndependent/glslang_tab.cpp" +#line 6578 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ @@ -6571,7 +6585,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6575 "MachineIndependent/glslang_tab.cpp" +#line 6589 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ @@ -6583,7 +6597,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6587 "MachineIndependent/glslang_tab.cpp" +#line 6601 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ @@ -6595,7 +6609,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6599 "MachineIndependent/glslang_tab.cpp" +#line 6613 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ @@ -6607,7 +6621,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6611 "MachineIndependent/glslang_tab.cpp" +#line 6625 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ @@ -6619,7 +6633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6623 "MachineIndependent/glslang_tab.cpp" +#line 6637 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ @@ -6632,7 +6646,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6636 "MachineIndependent/glslang_tab.cpp" +#line 6650 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ @@ -6645,7 +6659,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6649 "MachineIndependent/glslang_tab.cpp" +#line 6663 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ @@ -6653,115 +6667,130 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshNVMask), "perprimitiveNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV"); // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. if (parseContext.language == EShLangFragment) parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6664 "MachineIndependent/glslang_tab.cpp" +#line 6678 "MachineIndependent/glslang_tab.cpp" break; - case 145: /* interpolation_qualifier: PERVIEWNV */ + case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ #line 1311 "MachineIndependent/glslang.y" + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT"); + // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. + if (parseContext.language == EShLangFragment) + parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.perPrimitiveNV = true; + } +#line 6693 "MachineIndependent/glslang_tab.cpp" + break; + + case 146: /* interpolation_qualifier: PERVIEWNV */ +#line 1321 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); - parseContext.requireStage((yyvsp[0].lex).loc, EShLangMeshNV, "perviewNV"); + parseContext.requireStage((yyvsp[0].lex).loc, EShLangMesh, "perviewNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6676 "MachineIndependent/glslang_tab.cpp" +#line 6705 "MachineIndependent/glslang_tab.cpp" break; - case 146: /* interpolation_qualifier: PERTASKNV */ -#line 1318 "MachineIndependent/glslang.y" + case 147: /* interpolation_qualifier: PERTASKNV */ +#line 1328 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskNVMask | EShLangMeshNVMask), "taskNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6688 "MachineIndependent/glslang_tab.cpp" +#line 6717 "MachineIndependent/glslang_tab.cpp" break; - case 147: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1329 "MachineIndependent/glslang.y" + case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ +#line 1339 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6696 "MachineIndependent/glslang_tab.cpp" +#line 6725 "MachineIndependent/glslang_tab.cpp" break; - case 148: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1335 "MachineIndependent/glslang.y" + case 149: /* layout_qualifier_id_list: layout_qualifier_id */ +#line 1345 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6704 "MachineIndependent/glslang_tab.cpp" +#line 6733 "MachineIndependent/glslang_tab.cpp" break; - case 149: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1338 "MachineIndependent/glslang.y" + case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ +#line 1348 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6714 "MachineIndependent/glslang_tab.cpp" +#line 6743 "MachineIndependent/glslang_tab.cpp" break; - case 150: /* layout_qualifier_id: IDENTIFIER */ -#line 1345 "MachineIndependent/glslang.y" + case 151: /* layout_qualifier_id: IDENTIFIER */ +#line 1355 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6723 "MachineIndependent/glslang_tab.cpp" +#line 6752 "MachineIndependent/glslang_tab.cpp" break; - case 151: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1349 "MachineIndependent/glslang.y" + case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ +#line 1359 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6732 "MachineIndependent/glslang_tab.cpp" +#line 6761 "MachineIndependent/glslang_tab.cpp" break; - case 152: /* layout_qualifier_id: SHARED */ -#line 1353 "MachineIndependent/glslang.y" + case 153: /* layout_qualifier_id: SHARED */ +#line 1363 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6742 "MachineIndependent/glslang_tab.cpp" +#line 6771 "MachineIndependent/glslang_tab.cpp" break; - case 153: /* precise_qualifier: PRECISE */ -#line 1362 "MachineIndependent/glslang.y" + case 154: /* precise_qualifier: PRECISE */ +#line 1372 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6753 "MachineIndependent/glslang_tab.cpp" +#line 6782 "MachineIndependent/glslang_tab.cpp" break; - case 154: /* type_qualifier: single_type_qualifier */ -#line 1372 "MachineIndependent/glslang.y" + case 155: /* type_qualifier: single_type_qualifier */ +#line 1382 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6761 "MachineIndependent/glslang_tab.cpp" +#line 6790 "MachineIndependent/glslang_tab.cpp" break; - case 155: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1375 "MachineIndependent/glslang.y" + case 156: /* type_qualifier: type_qualifier single_type_qualifier */ +#line 1385 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6770,151 +6799,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6774 "MachineIndependent/glslang_tab.cpp" +#line 6803 "MachineIndependent/glslang_tab.cpp" break; - case 156: /* single_type_qualifier: storage_qualifier */ -#line 1386 "MachineIndependent/glslang.y" + case 157: /* single_type_qualifier: storage_qualifier */ +#line 1396 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6782 "MachineIndependent/glslang_tab.cpp" +#line 6811 "MachineIndependent/glslang_tab.cpp" break; - case 157: /* single_type_qualifier: layout_qualifier */ -#line 1389 "MachineIndependent/glslang.y" + case 158: /* single_type_qualifier: layout_qualifier */ +#line 1399 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6790 "MachineIndependent/glslang_tab.cpp" +#line 6819 "MachineIndependent/glslang_tab.cpp" break; - case 158: /* single_type_qualifier: precision_qualifier */ -#line 1392 "MachineIndependent/glslang.y" + case 159: /* single_type_qualifier: precision_qualifier */ +#line 1402 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6799 "MachineIndependent/glslang_tab.cpp" +#line 6828 "MachineIndependent/glslang_tab.cpp" break; - case 159: /* single_type_qualifier: interpolation_qualifier */ -#line 1396 "MachineIndependent/glslang.y" + case 160: /* single_type_qualifier: interpolation_qualifier */ +#line 1406 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6808 "MachineIndependent/glslang_tab.cpp" +#line 6837 "MachineIndependent/glslang_tab.cpp" break; - case 160: /* single_type_qualifier: invariant_qualifier */ -#line 1400 "MachineIndependent/glslang.y" + case 161: /* single_type_qualifier: invariant_qualifier */ +#line 1410 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6817 "MachineIndependent/glslang_tab.cpp" +#line 6846 "MachineIndependent/glslang_tab.cpp" break; - case 161: /* single_type_qualifier: precise_qualifier */ -#line 1405 "MachineIndependent/glslang.y" + case 162: /* single_type_qualifier: precise_qualifier */ +#line 1415 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6826 "MachineIndependent/glslang_tab.cpp" +#line 6855 "MachineIndependent/glslang_tab.cpp" break; - case 162: /* single_type_qualifier: non_uniform_qualifier */ -#line 1409 "MachineIndependent/glslang.y" + case 163: /* single_type_qualifier: non_uniform_qualifier */ +#line 1419 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6834 "MachineIndependent/glslang_tab.cpp" +#line 6863 "MachineIndependent/glslang_tab.cpp" break; - case 163: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1412 "MachineIndependent/glslang.y" + case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ +#line 1422 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6844 "MachineIndependent/glslang_tab.cpp" +#line 6873 "MachineIndependent/glslang_tab.cpp" break; - case 164: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1417 "MachineIndependent/glslang.y" + case 165: /* single_type_qualifier: spirv_decorate_qualifier */ +#line 1427 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6853 "MachineIndependent/glslang_tab.cpp" +#line 6882 "MachineIndependent/glslang_tab.cpp" break; - case 165: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1421 "MachineIndependent/glslang.y" + case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ +#line 1431 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6863 "MachineIndependent/glslang_tab.cpp" +#line 6892 "MachineIndependent/glslang_tab.cpp" break; - case 166: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1426 "MachineIndependent/glslang.y" + case 167: /* single_type_qualifier: SPIRV_LITERAL */ +#line 1436 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6873 "MachineIndependent/glslang_tab.cpp" +#line 6902 "MachineIndependent/glslang_tab.cpp" break; - case 167: /* storage_qualifier: CONST */ -#line 1435 "MachineIndependent/glslang.y" + case 168: /* storage_qualifier: CONST */ +#line 1445 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6882 "MachineIndependent/glslang_tab.cpp" +#line 6911 "MachineIndependent/glslang_tab.cpp" break; - case 168: /* storage_qualifier: INOUT */ -#line 1439 "MachineIndependent/glslang.y" + case 169: /* storage_qualifier: INOUT */ +#line 1449 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6892 "MachineIndependent/glslang_tab.cpp" +#line 6921 "MachineIndependent/glslang_tab.cpp" break; - case 169: /* storage_qualifier: IN */ -#line 1444 "MachineIndependent/glslang.y" + case 170: /* storage_qualifier: IN */ +#line 1454 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6903 "MachineIndependent/glslang_tab.cpp" +#line 6932 "MachineIndependent/glslang_tab.cpp" break; - case 170: /* storage_qualifier: OUT */ -#line 1450 "MachineIndependent/glslang.y" + case 171: /* storage_qualifier: OUT */ +#line 1460 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6914 "MachineIndependent/glslang_tab.cpp" +#line 6943 "MachineIndependent/glslang_tab.cpp" break; - case 171: /* storage_qualifier: CENTROID */ -#line 1456 "MachineIndependent/glslang.y" + case 172: /* storage_qualifier: CENTROID */ +#line 1466 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6922,44 +6951,44 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6926 "MachineIndependent/glslang_tab.cpp" +#line 6955 "MachineIndependent/glslang_tab.cpp" break; - case 172: /* storage_qualifier: UNIFORM */ -#line 1463 "MachineIndependent/glslang.y" + case 173: /* storage_qualifier: UNIFORM */ +#line 1473 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6936 "MachineIndependent/glslang_tab.cpp" +#line 6965 "MachineIndependent/glslang_tab.cpp" break; - case 173: /* storage_qualifier: SHARED */ -#line 1468 "MachineIndependent/glslang.y" + case 174: /* storage_qualifier: SHARED */ +#line 1478 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshNVMask | EShLangTaskNVMask), "shared"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6949 "MachineIndependent/glslang_tab.cpp" +#line 6978 "MachineIndependent/glslang_tab.cpp" break; - case 174: /* storage_qualifier: BUFFER */ -#line 1476 "MachineIndependent/glslang.y" + case 175: /* storage_qualifier: BUFFER */ +#line 1486 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 6959 "MachineIndependent/glslang_tab.cpp" +#line 6988 "MachineIndependent/glslang_tab.cpp" break; - case 175: /* storage_qualifier: ATTRIBUTE */ -#line 1482 "MachineIndependent/glslang.y" + case 176: /* storage_qualifier: ATTRIBUTE */ +#line 1492 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -6972,11 +7001,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6976 "MachineIndependent/glslang_tab.cpp" +#line 7005 "MachineIndependent/glslang_tab.cpp" break; - case 176: /* storage_qualifier: VARYING */ -#line 1494 "MachineIndependent/glslang.y" + case 177: /* storage_qualifier: VARYING */ +#line 1504 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -6991,32 +7020,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 6995 "MachineIndependent/glslang_tab.cpp" +#line 7024 "MachineIndependent/glslang_tab.cpp" break; - case 177: /* storage_qualifier: PATCH */ -#line 1508 "MachineIndependent/glslang.y" + case 178: /* storage_qualifier: PATCH */ +#line 1518 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7006 "MachineIndependent/glslang_tab.cpp" +#line 7035 "MachineIndependent/glslang_tab.cpp" break; - case 178: /* storage_qualifier: SAMPLE */ -#line 1514 "MachineIndependent/glslang.y" + case 179: /* storage_qualifier: SAMPLE */ +#line 1524 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7016 "MachineIndependent/glslang_tab.cpp" +#line 7045 "MachineIndependent/glslang_tab.cpp" break; - case 179: /* storage_qualifier: HITATTRNV */ -#line 1519 "MachineIndependent/glslang.y" + case 180: /* storage_qualifier: HITATTRNV */ +#line 1529 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7025,11 +7054,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7029 "MachineIndependent/glslang_tab.cpp" +#line 7058 "MachineIndependent/glslang_tab.cpp" break; - case 180: /* storage_qualifier: HITATTREXT */ -#line 1527 "MachineIndependent/glslang.y" + case 181: /* storage_qualifier: HITATTREXT */ +#line 1537 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7038,11 +7067,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7042 "MachineIndependent/glslang_tab.cpp" +#line 7071 "MachineIndependent/glslang_tab.cpp" break; - case 181: /* storage_qualifier: PAYLOADNV */ -#line 1535 "MachineIndependent/glslang.y" + case 182: /* storage_qualifier: PAYLOADNV */ +#line 1545 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7051,11 +7080,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7055 "MachineIndependent/glslang_tab.cpp" +#line 7084 "MachineIndependent/glslang_tab.cpp" break; - case 182: /* storage_qualifier: PAYLOADEXT */ -#line 1543 "MachineIndependent/glslang.y" + case 183: /* storage_qualifier: PAYLOADEXT */ +#line 1553 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7064,11 +7093,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7068 "MachineIndependent/glslang_tab.cpp" +#line 7097 "MachineIndependent/glslang_tab.cpp" break; - case 183: /* storage_qualifier: PAYLOADINNV */ -#line 1551 "MachineIndependent/glslang.y" + case 184: /* storage_qualifier: PAYLOADINNV */ +#line 1561 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7077,11 +7106,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7081 "MachineIndependent/glslang_tab.cpp" +#line 7110 "MachineIndependent/glslang_tab.cpp" break; - case 184: /* storage_qualifier: PAYLOADINEXT */ -#line 1559 "MachineIndependent/glslang.y" + case 185: /* storage_qualifier: PAYLOADINEXT */ +#line 1569 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7090,11 +7119,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7094 "MachineIndependent/glslang_tab.cpp" +#line 7123 "MachineIndependent/glslang_tab.cpp" break; - case 185: /* storage_qualifier: CALLDATANV */ -#line 1567 "MachineIndependent/glslang.y" + case 186: /* storage_qualifier: CALLDATANV */ +#line 1577 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7103,11 +7132,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7107 "MachineIndependent/glslang_tab.cpp" +#line 7136 "MachineIndependent/glslang_tab.cpp" break; - case 186: /* storage_qualifier: CALLDATAEXT */ -#line 1575 "MachineIndependent/glslang.y" + case 187: /* storage_qualifier: CALLDATAEXT */ +#line 1585 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7116,11 +7145,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7120 "MachineIndependent/glslang_tab.cpp" +#line 7149 "MachineIndependent/glslang_tab.cpp" break; - case 187: /* storage_qualifier: CALLDATAINNV */ -#line 1583 "MachineIndependent/glslang.y" + case 188: /* storage_qualifier: CALLDATAINNV */ +#line 1593 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7128,11 +7157,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7132 "MachineIndependent/glslang_tab.cpp" +#line 7161 "MachineIndependent/glslang_tab.cpp" break; - case 188: /* storage_qualifier: CALLDATAINEXT */ -#line 1590 "MachineIndependent/glslang.y" + case 189: /* storage_qualifier: CALLDATAINEXT */ +#line 1600 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7140,175 +7169,187 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7144 "MachineIndependent/glslang_tab.cpp" +#line 7173 "MachineIndependent/glslang_tab.cpp" break; - case 189: /* storage_qualifier: COHERENT */ -#line 1597 "MachineIndependent/glslang.y" + case 190: /* storage_qualifier: COHERENT */ +#line 1607 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7153 "MachineIndependent/glslang_tab.cpp" +#line 7182 "MachineIndependent/glslang_tab.cpp" break; - case 190: /* storage_qualifier: DEVICECOHERENT */ -#line 1601 "MachineIndependent/glslang.y" + case 191: /* storage_qualifier: DEVICECOHERENT */ +#line 1611 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7163 "MachineIndependent/glslang_tab.cpp" +#line 7192 "MachineIndependent/glslang_tab.cpp" break; - case 191: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1606 "MachineIndependent/glslang.y" + case 192: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1616 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7173 "MachineIndependent/glslang_tab.cpp" +#line 7202 "MachineIndependent/glslang_tab.cpp" break; - case 192: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1611 "MachineIndependent/glslang.y" + case 193: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1621 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7183 "MachineIndependent/glslang_tab.cpp" +#line 7212 "MachineIndependent/glslang_tab.cpp" break; - case 193: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1616 "MachineIndependent/glslang.y" + case 194: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1626 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7193 "MachineIndependent/glslang_tab.cpp" +#line 7222 "MachineIndependent/glslang_tab.cpp" break; - case 194: /* storage_qualifier: NONPRIVATE */ -#line 1621 "MachineIndependent/glslang.y" + case 195: /* storage_qualifier: NONPRIVATE */ +#line 1631 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7203 "MachineIndependent/glslang_tab.cpp" +#line 7232 "MachineIndependent/glslang_tab.cpp" break; - case 195: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1626 "MachineIndependent/glslang.y" + case 196: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1636 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7213 "MachineIndependent/glslang_tab.cpp" +#line 7242 "MachineIndependent/glslang_tab.cpp" break; - case 196: /* storage_qualifier: VOLATILE */ -#line 1631 "MachineIndependent/glslang.y" + case 197: /* storage_qualifier: VOLATILE */ +#line 1641 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7222 "MachineIndependent/glslang_tab.cpp" +#line 7251 "MachineIndependent/glslang_tab.cpp" break; - case 197: /* storage_qualifier: RESTRICT */ -#line 1635 "MachineIndependent/glslang.y" + case 198: /* storage_qualifier: RESTRICT */ +#line 1645 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7231 "MachineIndependent/glslang_tab.cpp" +#line 7260 "MachineIndependent/glslang_tab.cpp" break; - case 198: /* storage_qualifier: READONLY */ -#line 1639 "MachineIndependent/glslang.y" + case 199: /* storage_qualifier: READONLY */ +#line 1649 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7240 "MachineIndependent/glslang_tab.cpp" +#line 7269 "MachineIndependent/glslang_tab.cpp" break; - case 199: /* storage_qualifier: WRITEONLY */ -#line 1643 "MachineIndependent/glslang.y" + case 200: /* storage_qualifier: WRITEONLY */ +#line 1653 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7249 "MachineIndependent/glslang_tab.cpp" +#line 7278 "MachineIndependent/glslang_tab.cpp" break; - case 200: /* storage_qualifier: SUBROUTINE */ -#line 1647 "MachineIndependent/glslang.y" + case 201: /* storage_qualifier: SUBROUTINE */ +#line 1657 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7260 "MachineIndependent/glslang_tab.cpp" +#line 7289 "MachineIndependent/glslang_tab.cpp" break; - case 201: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1653 "MachineIndependent/glslang.y" + case 202: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1663 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7271 "MachineIndependent/glslang_tab.cpp" +#line 7300 "MachineIndependent/glslang_tab.cpp" + break; + + case 203: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ +#line 1669 "MachineIndependent/glslang.y" + { + // No need for profile version or extension check. Shader stage already checks both. + parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT "); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; + } +#line 7312 "MachineIndependent/glslang_tab.cpp" break; - case 202: /* non_uniform_qualifier: NONUNIFORM */ -#line 1664 "MachineIndependent/glslang.y" + case 204: /* non_uniform_qualifier: NONUNIFORM */ +#line 1681 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7280 "MachineIndependent/glslang_tab.cpp" +#line 7321 "MachineIndependent/glslang_tab.cpp" break; - case 203: /* type_name_list: IDENTIFIER */ -#line 1671 "MachineIndependent/glslang.y" + case 205: /* type_name_list: IDENTIFIER */ +#line 1688 "MachineIndependent/glslang.y" { // TODO } -#line 7288 "MachineIndependent/glslang_tab.cpp" +#line 7329 "MachineIndependent/glslang_tab.cpp" break; - case 204: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1674 "MachineIndependent/glslang.y" + case 206: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1691 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7298 "MachineIndependent/glslang_tab.cpp" +#line 7339 "MachineIndependent/glslang_tab.cpp" break; - case 205: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1683 "MachineIndependent/glslang.y" + case 207: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1700 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 7308 "MachineIndependent/glslang_tab.cpp" +#line 7349 "MachineIndependent/glslang_tab.cpp" break; - case 206: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1688 "MachineIndependent/glslang.y" + case 208: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1705 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7316,21 +7357,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 7320 "MachineIndependent/glslang_tab.cpp" +#line 7361 "MachineIndependent/glslang_tab.cpp" break; - case 207: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1698 "MachineIndependent/glslang.y" + case 209: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1715 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7330 "MachineIndependent/glslang_tab.cpp" +#line 7371 "MachineIndependent/glslang_tab.cpp" break; - case 208: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1703 "MachineIndependent/glslang.y" + case 210: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1720 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7339,20 +7380,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7343 "MachineIndependent/glslang_tab.cpp" +#line 7384 "MachineIndependent/glslang_tab.cpp" break; - case 209: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1711 "MachineIndependent/glslang.y" + case 211: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1728 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7352 "MachineIndependent/glslang_tab.cpp" +#line 7393 "MachineIndependent/glslang_tab.cpp" break; - case 210: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1715 "MachineIndependent/glslang.y" + case 212: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1732 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7360,35 +7401,35 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7364 "MachineIndependent/glslang_tab.cpp" +#line 7405 "MachineIndependent/glslang_tab.cpp" break; - case 211: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1725 "MachineIndependent/glslang.y" + case 213: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1742 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7372 "MachineIndependent/glslang_tab.cpp" +#line 7413 "MachineIndependent/glslang_tab.cpp" break; - case 212: /* type_parameter_specifier_opt: %empty */ -#line 1728 "MachineIndependent/glslang.y" + case 214: /* type_parameter_specifier_opt: %empty */ +#line 1745 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7380 "MachineIndependent/glslang_tab.cpp" +#line 7421 "MachineIndependent/glslang_tab.cpp" break; - case 213: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1734 "MachineIndependent/glslang.y" + case 215: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1751 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7388 "MachineIndependent/glslang_tab.cpp" +#line 7429 "MachineIndependent/glslang_tab.cpp" break; - case 214: /* type_parameter_specifier_list: unary_expression */ -#line 1740 "MachineIndependent/glslang.y" + case 216: /* type_parameter_specifier_list: unary_expression */ +#line 1757 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TArraySizes; @@ -7396,11 +7437,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7400 "MachineIndependent/glslang_tab.cpp" +#line 7441 "MachineIndependent/glslang_tab.cpp" break; - case 215: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1747 "MachineIndependent/glslang.y" + case 217: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1764 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7408,300 +7449,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7412 "MachineIndependent/glslang_tab.cpp" +#line 7453 "MachineIndependent/glslang_tab.cpp" break; - case 216: /* type_specifier_nonarray: VOID */ -#line 1757 "MachineIndependent/glslang.y" + case 218: /* type_specifier_nonarray: VOID */ +#line 1774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7421 "MachineIndependent/glslang_tab.cpp" +#line 7462 "MachineIndependent/glslang_tab.cpp" break; - case 217: /* type_specifier_nonarray: FLOAT */ -#line 1761 "MachineIndependent/glslang.y" + case 219: /* type_specifier_nonarray: FLOAT */ +#line 1778 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7430 "MachineIndependent/glslang_tab.cpp" +#line 7471 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_specifier_nonarray: INT */ -#line 1765 "MachineIndependent/glslang.y" + case 220: /* type_specifier_nonarray: INT */ +#line 1782 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7439 "MachineIndependent/glslang_tab.cpp" +#line 7480 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_specifier_nonarray: UINT */ -#line 1769 "MachineIndependent/glslang.y" + case 221: /* type_specifier_nonarray: UINT */ +#line 1786 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7449 "MachineIndependent/glslang_tab.cpp" +#line 7490 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_specifier_nonarray: BOOL */ -#line 1774 "MachineIndependent/glslang.y" + case 222: /* type_specifier_nonarray: BOOL */ +#line 1791 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7458 "MachineIndependent/glslang_tab.cpp" +#line 7499 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_specifier_nonarray: VEC2 */ -#line 1778 "MachineIndependent/glslang.y" + case 223: /* type_specifier_nonarray: VEC2 */ +#line 1795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7468 "MachineIndependent/glslang_tab.cpp" +#line 7509 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_specifier_nonarray: VEC3 */ -#line 1783 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: VEC3 */ +#line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7478 "MachineIndependent/glslang_tab.cpp" +#line 7519 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: VEC4 */ -#line 1788 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: VEC4 */ +#line 1805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7488 "MachineIndependent/glslang_tab.cpp" +#line 7529 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: BVEC2 */ -#line 1793 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: BVEC2 */ +#line 1810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7498 "MachineIndependent/glslang_tab.cpp" +#line 7539 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: BVEC3 */ -#line 1798 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: BVEC3 */ +#line 1815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7508 "MachineIndependent/glslang_tab.cpp" +#line 7549 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: BVEC4 */ -#line 1803 "MachineIndependent/glslang.y" + case 228: /* type_specifier_nonarray: BVEC4 */ +#line 1820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7518 "MachineIndependent/glslang_tab.cpp" +#line 7559 "MachineIndependent/glslang_tab.cpp" break; - case 227: /* type_specifier_nonarray: IVEC2 */ -#line 1808 "MachineIndependent/glslang.y" + case 229: /* type_specifier_nonarray: IVEC2 */ +#line 1825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7528 "MachineIndependent/glslang_tab.cpp" +#line 7569 "MachineIndependent/glslang_tab.cpp" break; - case 228: /* type_specifier_nonarray: IVEC3 */ -#line 1813 "MachineIndependent/glslang.y" + case 230: /* type_specifier_nonarray: IVEC3 */ +#line 1830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7538 "MachineIndependent/glslang_tab.cpp" +#line 7579 "MachineIndependent/glslang_tab.cpp" break; - case 229: /* type_specifier_nonarray: IVEC4 */ -#line 1818 "MachineIndependent/glslang.y" + case 231: /* type_specifier_nonarray: IVEC4 */ +#line 1835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7548 "MachineIndependent/glslang_tab.cpp" +#line 7589 "MachineIndependent/glslang_tab.cpp" break; - case 230: /* type_specifier_nonarray: UVEC2 */ -#line 1823 "MachineIndependent/glslang.y" + case 232: /* type_specifier_nonarray: UVEC2 */ +#line 1840 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7559 "MachineIndependent/glslang_tab.cpp" +#line 7600 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: UVEC3 */ -#line 1829 "MachineIndependent/glslang.y" + case 233: /* type_specifier_nonarray: UVEC3 */ +#line 1846 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7570 "MachineIndependent/glslang_tab.cpp" +#line 7611 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: UVEC4 */ -#line 1835 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: UVEC4 */ +#line 1852 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7581 "MachineIndependent/glslang_tab.cpp" +#line 7622 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: MAT2 */ -#line 1841 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: MAT2 */ +#line 1858 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7591 "MachineIndependent/glslang_tab.cpp" +#line 7632 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: MAT3 */ -#line 1846 "MachineIndependent/glslang.y" + case 236: /* type_specifier_nonarray: MAT3 */ +#line 1863 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7601 "MachineIndependent/glslang_tab.cpp" +#line 7642 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: MAT4 */ -#line 1851 "MachineIndependent/glslang.y" + case 237: /* type_specifier_nonarray: MAT4 */ +#line 1868 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7611 "MachineIndependent/glslang_tab.cpp" +#line 7652 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: MAT2X2 */ -#line 1856 "MachineIndependent/glslang.y" + case 238: /* type_specifier_nonarray: MAT2X2 */ +#line 1873 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7621 "MachineIndependent/glslang_tab.cpp" +#line 7662 "MachineIndependent/glslang_tab.cpp" break; - case 237: /* type_specifier_nonarray: MAT2X3 */ -#line 1861 "MachineIndependent/glslang.y" + case 239: /* type_specifier_nonarray: MAT2X3 */ +#line 1878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7631 "MachineIndependent/glslang_tab.cpp" +#line 7672 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: MAT2X4 */ -#line 1866 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: MAT2X4 */ +#line 1883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7641 "MachineIndependent/glslang_tab.cpp" +#line 7682 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: MAT3X2 */ -#line 1871 "MachineIndependent/glslang.y" + case 241: /* type_specifier_nonarray: MAT3X2 */ +#line 1888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7651 "MachineIndependent/glslang_tab.cpp" +#line 7692 "MachineIndependent/glslang_tab.cpp" break; - case 240: /* type_specifier_nonarray: MAT3X3 */ -#line 1876 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT3X3 */ +#line 1893 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7661 "MachineIndependent/glslang_tab.cpp" +#line 7702 "MachineIndependent/glslang_tab.cpp" break; - case 241: /* type_specifier_nonarray: MAT3X4 */ -#line 1881 "MachineIndependent/glslang.y" + case 243: /* type_specifier_nonarray: MAT3X4 */ +#line 1898 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7671 "MachineIndependent/glslang_tab.cpp" +#line 7712 "MachineIndependent/glslang_tab.cpp" break; - case 242: /* type_specifier_nonarray: MAT4X2 */ -#line 1886 "MachineIndependent/glslang.y" + case 244: /* type_specifier_nonarray: MAT4X2 */ +#line 1903 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7681 "MachineIndependent/glslang_tab.cpp" +#line 7722 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT4X3 */ -#line 1891 "MachineIndependent/glslang.y" + case 245: /* type_specifier_nonarray: MAT4X3 */ +#line 1908 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7691 "MachineIndependent/glslang_tab.cpp" +#line 7732 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: MAT4X4 */ -#line 1896 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: MAT4X4 */ +#line 1913 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7701 "MachineIndependent/glslang_tab.cpp" +#line 7742 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: DOUBLE */ -#line 1902 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: DOUBLE */ +#line 1919 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7709,121 +7750,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7713 "MachineIndependent/glslang_tab.cpp" +#line 7754 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: FLOAT16_T */ -#line 1909 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: FLOAT16_T */ +#line 1926 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7723 "MachineIndependent/glslang_tab.cpp" +#line 7764 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: FLOAT32_T */ -#line 1914 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: FLOAT32_T */ +#line 1931 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7733 "MachineIndependent/glslang_tab.cpp" +#line 7774 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: FLOAT64_T */ -#line 1919 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: FLOAT64_T */ +#line 1936 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7743 "MachineIndependent/glslang_tab.cpp" +#line 7784 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: INT8_T */ -#line 1924 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: INT8_T */ +#line 1941 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7753 "MachineIndependent/glslang_tab.cpp" +#line 7794 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: UINT8_T */ -#line 1929 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: UINT8_T */ +#line 1946 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7763 "MachineIndependent/glslang_tab.cpp" +#line 7804 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: INT16_T */ -#line 1934 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: INT16_T */ +#line 1951 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7773 "MachineIndependent/glslang_tab.cpp" +#line 7814 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: UINT16_T */ -#line 1939 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: UINT16_T */ +#line 1956 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7783 "MachineIndependent/glslang_tab.cpp" +#line 7824 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: INT32_T */ -#line 1944 "MachineIndependent/glslang.y" + case 255: /* type_specifier_nonarray: INT32_T */ +#line 1961 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7793 "MachineIndependent/glslang_tab.cpp" +#line 7834 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: UINT32_T */ -#line 1949 "MachineIndependent/glslang.y" + case 256: /* type_specifier_nonarray: UINT32_T */ +#line 1966 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7803 "MachineIndependent/glslang_tab.cpp" +#line 7844 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: INT64_T */ -#line 1954 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: INT64_T */ +#line 1971 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7813 "MachineIndependent/glslang_tab.cpp" +#line 7854 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: UINT64_T */ -#line 1959 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: UINT64_T */ +#line 1976 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7823 "MachineIndependent/glslang_tab.cpp" +#line 7864 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: DVEC2 */ -#line 1964 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: DVEC2 */ +#line 1981 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7832,11 +7873,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7836 "MachineIndependent/glslang_tab.cpp" +#line 7877 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: DVEC3 */ -#line 1972 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: DVEC3 */ +#line 1989 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7845,11 +7886,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7849 "MachineIndependent/glslang_tab.cpp" +#line 7890 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: DVEC4 */ -#line 1980 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: DVEC4 */ +#line 1997 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7858,374 +7899,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7862 "MachineIndependent/glslang_tab.cpp" +#line 7903 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: F16VEC2 */ -#line 1988 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: F16VEC2 */ +#line 2005 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7873 "MachineIndependent/glslang_tab.cpp" +#line 7914 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: F16VEC3 */ -#line 1994 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: F16VEC3 */ +#line 2011 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7884 "MachineIndependent/glslang_tab.cpp" +#line 7925 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: F16VEC4 */ -#line 2000 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: F16VEC4 */ +#line 2017 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7895 "MachineIndependent/glslang_tab.cpp" +#line 7936 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: F32VEC2 */ -#line 2006 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: F32VEC2 */ +#line 2023 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7906 "MachineIndependent/glslang_tab.cpp" +#line 7947 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: F32VEC3 */ -#line 2012 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: F32VEC3 */ +#line 2029 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7917 "MachineIndependent/glslang_tab.cpp" +#line 7958 "MachineIndependent/glslang_tab.cpp" break; - case 265: /* type_specifier_nonarray: F32VEC4 */ -#line 2018 "MachineIndependent/glslang.y" + case 267: /* type_specifier_nonarray: F32VEC4 */ +#line 2035 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7928 "MachineIndependent/glslang_tab.cpp" +#line 7969 "MachineIndependent/glslang_tab.cpp" break; - case 266: /* type_specifier_nonarray: F64VEC2 */ -#line 2024 "MachineIndependent/glslang.y" + case 268: /* type_specifier_nonarray: F64VEC2 */ +#line 2041 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7939 "MachineIndependent/glslang_tab.cpp" +#line 7980 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: F64VEC3 */ -#line 2030 "MachineIndependent/glslang.y" + case 269: /* type_specifier_nonarray: F64VEC3 */ +#line 2047 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7950 "MachineIndependent/glslang_tab.cpp" +#line 7991 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: F64VEC4 */ -#line 2036 "MachineIndependent/glslang.y" + case 270: /* type_specifier_nonarray: F64VEC4 */ +#line 2053 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7961 "MachineIndependent/glslang_tab.cpp" +#line 8002 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: I8VEC2 */ -#line 2042 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: I8VEC2 */ +#line 2059 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 7972 "MachineIndependent/glslang_tab.cpp" +#line 8013 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: I8VEC3 */ -#line 2048 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: I8VEC3 */ +#line 2065 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 7983 "MachineIndependent/glslang_tab.cpp" +#line 8024 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: I8VEC4 */ -#line 2054 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: I8VEC4 */ +#line 2071 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 7994 "MachineIndependent/glslang_tab.cpp" +#line 8035 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: I16VEC2 */ -#line 2060 "MachineIndependent/glslang.y" + case 274: /* type_specifier_nonarray: I16VEC2 */ +#line 2077 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8005 "MachineIndependent/glslang_tab.cpp" +#line 8046 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: I16VEC3 */ -#line 2066 "MachineIndependent/glslang.y" + case 275: /* type_specifier_nonarray: I16VEC3 */ +#line 2083 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8016 "MachineIndependent/glslang_tab.cpp" +#line 8057 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: I16VEC4 */ -#line 2072 "MachineIndependent/glslang.y" + case 276: /* type_specifier_nonarray: I16VEC4 */ +#line 2089 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8027 "MachineIndependent/glslang_tab.cpp" +#line 8068 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: I32VEC2 */ -#line 2078 "MachineIndependent/glslang.y" + case 277: /* type_specifier_nonarray: I32VEC2 */ +#line 2095 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8038 "MachineIndependent/glslang_tab.cpp" +#line 8079 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: I32VEC3 */ -#line 2084 "MachineIndependent/glslang.y" + case 278: /* type_specifier_nonarray: I32VEC3 */ +#line 2101 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8049 "MachineIndependent/glslang_tab.cpp" +#line 8090 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: I32VEC4 */ -#line 2090 "MachineIndependent/glslang.y" + case 279: /* type_specifier_nonarray: I32VEC4 */ +#line 2107 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8060 "MachineIndependent/glslang_tab.cpp" +#line 8101 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: I64VEC2 */ -#line 2096 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: I64VEC2 */ +#line 2113 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8071 "MachineIndependent/glslang_tab.cpp" +#line 8112 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: I64VEC3 */ -#line 2102 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: I64VEC3 */ +#line 2119 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8082 "MachineIndependent/glslang_tab.cpp" +#line 8123 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: I64VEC4 */ -#line 2108 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: I64VEC4 */ +#line 2125 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8093 "MachineIndependent/glslang_tab.cpp" +#line 8134 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: U8VEC2 */ -#line 2114 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: U8VEC2 */ +#line 2131 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8104 "MachineIndependent/glslang_tab.cpp" +#line 8145 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: U8VEC3 */ -#line 2120 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: U8VEC3 */ +#line 2137 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8115 "MachineIndependent/glslang_tab.cpp" +#line 8156 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: U8VEC4 */ -#line 2126 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: U8VEC4 */ +#line 2143 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8126 "MachineIndependent/glslang_tab.cpp" +#line 8167 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: U16VEC2 */ -#line 2132 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: U16VEC2 */ +#line 2149 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8137 "MachineIndependent/glslang_tab.cpp" +#line 8178 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: U16VEC3 */ -#line 2138 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: U16VEC3 */ +#line 2155 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8148 "MachineIndependent/glslang_tab.cpp" +#line 8189 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: U16VEC4 */ -#line 2144 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: U16VEC4 */ +#line 2161 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8159 "MachineIndependent/glslang_tab.cpp" +#line 8200 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: U32VEC2 */ -#line 2150 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: U32VEC2 */ +#line 2167 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8170 "MachineIndependent/glslang_tab.cpp" +#line 8211 "MachineIndependent/glslang_tab.cpp" break; - case 288: /* type_specifier_nonarray: U32VEC3 */ -#line 2156 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: U32VEC3 */ +#line 2173 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8181 "MachineIndependent/glslang_tab.cpp" +#line 8222 "MachineIndependent/glslang_tab.cpp" break; - case 289: /* type_specifier_nonarray: U32VEC4 */ -#line 2162 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: U32VEC4 */ +#line 2179 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8192 "MachineIndependent/glslang_tab.cpp" +#line 8233 "MachineIndependent/glslang_tab.cpp" break; - case 290: /* type_specifier_nonarray: U64VEC2 */ -#line 2168 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: U64VEC2 */ +#line 2185 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8203 "MachineIndependent/glslang_tab.cpp" +#line 8244 "MachineIndependent/glslang_tab.cpp" break; - case 291: /* type_specifier_nonarray: U64VEC3 */ -#line 2174 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: U64VEC3 */ +#line 2191 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8214 "MachineIndependent/glslang_tab.cpp" +#line 8255 "MachineIndependent/glslang_tab.cpp" break; - case 292: /* type_specifier_nonarray: U64VEC4 */ -#line 2180 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: U64VEC4 */ +#line 2197 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8225 "MachineIndependent/glslang_tab.cpp" +#line 8266 "MachineIndependent/glslang_tab.cpp" break; - case 293: /* type_specifier_nonarray: DMAT2 */ -#line 2186 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: DMAT2 */ +#line 2203 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8234,11 +8275,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8238 "MachineIndependent/glslang_tab.cpp" +#line 8279 "MachineIndependent/glslang_tab.cpp" break; - case 294: /* type_specifier_nonarray: DMAT3 */ -#line 2194 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: DMAT3 */ +#line 2211 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8247,11 +8288,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8251 "MachineIndependent/glslang_tab.cpp" +#line 8292 "MachineIndependent/glslang_tab.cpp" break; - case 295: /* type_specifier_nonarray: DMAT4 */ -#line 2202 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: DMAT4 */ +#line 2219 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8260,11 +8301,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8264 "MachineIndependent/glslang_tab.cpp" +#line 8305 "MachineIndependent/glslang_tab.cpp" break; - case 296: /* type_specifier_nonarray: DMAT2X2 */ -#line 2210 "MachineIndependent/glslang.y" + case 298: /* type_specifier_nonarray: DMAT2X2 */ +#line 2227 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8273,11 +8314,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8277 "MachineIndependent/glslang_tab.cpp" +#line 8318 "MachineIndependent/glslang_tab.cpp" break; - case 297: /* type_specifier_nonarray: DMAT2X3 */ -#line 2218 "MachineIndependent/glslang.y" + case 299: /* type_specifier_nonarray: DMAT2X3 */ +#line 2235 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8286,11 +8327,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8290 "MachineIndependent/glslang_tab.cpp" +#line 8331 "MachineIndependent/glslang_tab.cpp" break; - case 298: /* type_specifier_nonarray: DMAT2X4 */ -#line 2226 "MachineIndependent/glslang.y" + case 300: /* type_specifier_nonarray: DMAT2X4 */ +#line 2243 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8299,11 +8340,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8303 "MachineIndependent/glslang_tab.cpp" +#line 8344 "MachineIndependent/glslang_tab.cpp" break; - case 299: /* type_specifier_nonarray: DMAT3X2 */ -#line 2234 "MachineIndependent/glslang.y" + case 301: /* type_specifier_nonarray: DMAT3X2 */ +#line 2251 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8312,11 +8353,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8316 "MachineIndependent/glslang_tab.cpp" +#line 8357 "MachineIndependent/glslang_tab.cpp" break; - case 300: /* type_specifier_nonarray: DMAT3X3 */ -#line 2242 "MachineIndependent/glslang.y" + case 302: /* type_specifier_nonarray: DMAT3X3 */ +#line 2259 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8325,11 +8366,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8329 "MachineIndependent/glslang_tab.cpp" +#line 8370 "MachineIndependent/glslang_tab.cpp" break; - case 301: /* type_specifier_nonarray: DMAT3X4 */ -#line 2250 "MachineIndependent/glslang.y" + case 303: /* type_specifier_nonarray: DMAT3X4 */ +#line 2267 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8338,11 +8379,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8342 "MachineIndependent/glslang_tab.cpp" +#line 8383 "MachineIndependent/glslang_tab.cpp" break; - case 302: /* type_specifier_nonarray: DMAT4X2 */ -#line 2258 "MachineIndependent/glslang.y" + case 304: /* type_specifier_nonarray: DMAT4X2 */ +#line 2275 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8351,11 +8392,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8355 "MachineIndependent/glslang_tab.cpp" +#line 8396 "MachineIndependent/glslang_tab.cpp" break; - case 303: /* type_specifier_nonarray: DMAT4X3 */ -#line 2266 "MachineIndependent/glslang.y" + case 305: /* type_specifier_nonarray: DMAT4X3 */ +#line 2283 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8364,11 +8405,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8368 "MachineIndependent/glslang_tab.cpp" +#line 8409 "MachineIndependent/glslang_tab.cpp" break; - case 304: /* type_specifier_nonarray: DMAT4X4 */ -#line 2274 "MachineIndependent/glslang.y" + case 306: /* type_specifier_nonarray: DMAT4X4 */ +#line 2291 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8377,2228 +8418,2228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8381 "MachineIndependent/glslang_tab.cpp" +#line 8422 "MachineIndependent/glslang_tab.cpp" break; - case 305: /* type_specifier_nonarray: F16MAT2 */ -#line 2282 "MachineIndependent/glslang.y" + case 307: /* type_specifier_nonarray: F16MAT2 */ +#line 2299 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8392 "MachineIndependent/glslang_tab.cpp" +#line 8433 "MachineIndependent/glslang_tab.cpp" break; - case 306: /* type_specifier_nonarray: F16MAT3 */ -#line 2288 "MachineIndependent/glslang.y" + case 308: /* type_specifier_nonarray: F16MAT3 */ +#line 2305 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8403 "MachineIndependent/glslang_tab.cpp" +#line 8444 "MachineIndependent/glslang_tab.cpp" break; - case 307: /* type_specifier_nonarray: F16MAT4 */ -#line 2294 "MachineIndependent/glslang.y" + case 309: /* type_specifier_nonarray: F16MAT4 */ +#line 2311 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8414 "MachineIndependent/glslang_tab.cpp" +#line 8455 "MachineIndependent/glslang_tab.cpp" break; - case 308: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2300 "MachineIndependent/glslang.y" + case 310: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2317 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8425 "MachineIndependent/glslang_tab.cpp" +#line 8466 "MachineIndependent/glslang_tab.cpp" break; - case 309: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2306 "MachineIndependent/glslang.y" + case 311: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2323 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8436 "MachineIndependent/glslang_tab.cpp" +#line 8477 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2312 "MachineIndependent/glslang.y" + case 312: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2329 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8447 "MachineIndependent/glslang_tab.cpp" +#line 8488 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2318 "MachineIndependent/glslang.y" + case 313: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2335 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8458 "MachineIndependent/glslang_tab.cpp" +#line 8499 "MachineIndependent/glslang_tab.cpp" break; - case 312: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2324 "MachineIndependent/glslang.y" + case 314: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2341 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8469 "MachineIndependent/glslang_tab.cpp" +#line 8510 "MachineIndependent/glslang_tab.cpp" break; - case 313: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2330 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2347 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8480 "MachineIndependent/glslang_tab.cpp" +#line 8521 "MachineIndependent/glslang_tab.cpp" break; - case 314: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2336 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2353 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8491 "MachineIndependent/glslang_tab.cpp" +#line 8532 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2342 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2359 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8502 "MachineIndependent/glslang_tab.cpp" +#line 8543 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2348 "MachineIndependent/glslang.y" + case 318: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2365 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8513 "MachineIndependent/glslang_tab.cpp" +#line 8554 "MachineIndependent/glslang_tab.cpp" break; - case 317: /* type_specifier_nonarray: F32MAT2 */ -#line 2354 "MachineIndependent/glslang.y" + case 319: /* type_specifier_nonarray: F32MAT2 */ +#line 2371 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8524 "MachineIndependent/glslang_tab.cpp" +#line 8565 "MachineIndependent/glslang_tab.cpp" break; - case 318: /* type_specifier_nonarray: F32MAT3 */ -#line 2360 "MachineIndependent/glslang.y" + case 320: /* type_specifier_nonarray: F32MAT3 */ +#line 2377 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8535 "MachineIndependent/glslang_tab.cpp" +#line 8576 "MachineIndependent/glslang_tab.cpp" break; - case 319: /* type_specifier_nonarray: F32MAT4 */ -#line 2366 "MachineIndependent/glslang.y" + case 321: /* type_specifier_nonarray: F32MAT4 */ +#line 2383 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8546 "MachineIndependent/glslang_tab.cpp" +#line 8587 "MachineIndependent/glslang_tab.cpp" break; - case 320: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2372 "MachineIndependent/glslang.y" + case 322: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2389 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8557 "MachineIndependent/glslang_tab.cpp" +#line 8598 "MachineIndependent/glslang_tab.cpp" break; - case 321: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2378 "MachineIndependent/glslang.y" + case 323: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2395 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8568 "MachineIndependent/glslang_tab.cpp" +#line 8609 "MachineIndependent/glslang_tab.cpp" break; - case 322: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2384 "MachineIndependent/glslang.y" + case 324: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2401 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8579 "MachineIndependent/glslang_tab.cpp" +#line 8620 "MachineIndependent/glslang_tab.cpp" break; - case 323: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2390 "MachineIndependent/glslang.y" + case 325: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2407 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8590 "MachineIndependent/glslang_tab.cpp" +#line 8631 "MachineIndependent/glslang_tab.cpp" break; - case 324: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2396 "MachineIndependent/glslang.y" + case 326: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2413 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8601 "MachineIndependent/glslang_tab.cpp" +#line 8642 "MachineIndependent/glslang_tab.cpp" break; - case 325: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2402 "MachineIndependent/glslang.y" + case 327: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2419 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8612 "MachineIndependent/glslang_tab.cpp" +#line 8653 "MachineIndependent/glslang_tab.cpp" break; - case 326: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2408 "MachineIndependent/glslang.y" + case 328: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2425 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8623 "MachineIndependent/glslang_tab.cpp" +#line 8664 "MachineIndependent/glslang_tab.cpp" break; - case 327: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2414 "MachineIndependent/glslang.y" + case 329: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2431 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8634 "MachineIndependent/glslang_tab.cpp" +#line 8675 "MachineIndependent/glslang_tab.cpp" break; - case 328: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2420 "MachineIndependent/glslang.y" + case 330: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2437 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8645 "MachineIndependent/glslang_tab.cpp" +#line 8686 "MachineIndependent/glslang_tab.cpp" break; - case 329: /* type_specifier_nonarray: F64MAT2 */ -#line 2426 "MachineIndependent/glslang.y" + case 331: /* type_specifier_nonarray: F64MAT2 */ +#line 2443 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8656 "MachineIndependent/glslang_tab.cpp" +#line 8697 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F64MAT3 */ -#line 2432 "MachineIndependent/glslang.y" + case 332: /* type_specifier_nonarray: F64MAT3 */ +#line 2449 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8667 "MachineIndependent/glslang_tab.cpp" +#line 8708 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F64MAT4 */ -#line 2438 "MachineIndependent/glslang.y" + case 333: /* type_specifier_nonarray: F64MAT4 */ +#line 2455 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8678 "MachineIndependent/glslang_tab.cpp" +#line 8719 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2444 "MachineIndependent/glslang.y" + case 334: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2461 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8689 "MachineIndependent/glslang_tab.cpp" +#line 8730 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2450 "MachineIndependent/glslang.y" + case 335: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2467 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8700 "MachineIndependent/glslang_tab.cpp" +#line 8741 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2456 "MachineIndependent/glslang.y" + case 336: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2473 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8711 "MachineIndependent/glslang_tab.cpp" +#line 8752 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2462 "MachineIndependent/glslang.y" + case 337: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2479 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8722 "MachineIndependent/glslang_tab.cpp" +#line 8763 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2468 "MachineIndependent/glslang.y" + case 338: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2485 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8733 "MachineIndependent/glslang_tab.cpp" +#line 8774 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2474 "MachineIndependent/glslang.y" + case 339: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2491 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8744 "MachineIndependent/glslang_tab.cpp" +#line 8785 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2480 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2497 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8755 "MachineIndependent/glslang_tab.cpp" +#line 8796 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2486 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2503 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8766 "MachineIndependent/glslang_tab.cpp" +#line 8807 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2492 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2509 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8777 "MachineIndependent/glslang_tab.cpp" +#line 8818 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2498 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2515 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8786 "MachineIndependent/glslang_tab.cpp" +#line 8827 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2502 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2519 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8795 "MachineIndependent/glslang_tab.cpp" +#line 8836 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2506 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2523 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8804 "MachineIndependent/glslang_tab.cpp" +#line 8845 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2510 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2527 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8814 "MachineIndependent/glslang_tab.cpp" +#line 8855 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: SAMPLER1D */ -#line 2515 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: SAMPLER1D */ +#line 2532 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8824 "MachineIndependent/glslang_tab.cpp" +#line 8865 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: SAMPLER2D */ -#line 2521 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: SAMPLER2D */ +#line 2538 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8834 "MachineIndependent/glslang_tab.cpp" +#line 8875 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: SAMPLER3D */ -#line 2526 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: SAMPLER3D */ +#line 2543 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8844 "MachineIndependent/glslang_tab.cpp" +#line 8885 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2531 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2548 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8854 "MachineIndependent/glslang_tab.cpp" +#line 8895 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2536 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2553 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8864 "MachineIndependent/glslang_tab.cpp" +#line 8905 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2541 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2558 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8874 "MachineIndependent/glslang_tab.cpp" +#line 8915 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2546 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2563 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8884 "MachineIndependent/glslang_tab.cpp" +#line 8925 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2551 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2568 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8894 "MachineIndependent/glslang_tab.cpp" +#line 8935 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2557 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2574 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 8904 "MachineIndependent/glslang_tab.cpp" +#line 8945 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2562 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2579 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 8914 "MachineIndependent/glslang_tab.cpp" +#line 8955 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2567 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2584 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8924 "MachineIndependent/glslang_tab.cpp" +#line 8965 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2572 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2589 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 8934 "MachineIndependent/glslang_tab.cpp" +#line 8975 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2577 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2594 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 8944 "MachineIndependent/glslang_tab.cpp" +#line 8985 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2582 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2599 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 8955 "MachineIndependent/glslang_tab.cpp" +#line 8996 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2588 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2605 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 8966 "MachineIndependent/glslang_tab.cpp" +#line 9007 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2594 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2611 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 8977 "MachineIndependent/glslang_tab.cpp" +#line 9018 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2600 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2617 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 8988 "MachineIndependent/glslang_tab.cpp" +#line 9029 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2606 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2623 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 8999 "MachineIndependent/glslang_tab.cpp" +#line 9040 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2612 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2629 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9010 "MachineIndependent/glslang_tab.cpp" +#line 9051 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2618 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2635 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9021 "MachineIndependent/glslang_tab.cpp" +#line 9062 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2624 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2641 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9032 "MachineIndependent/glslang_tab.cpp" +#line 9073 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2630 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2647 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9043 "MachineIndependent/glslang_tab.cpp" +#line 9084 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2636 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2653 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9054 "MachineIndependent/glslang_tab.cpp" +#line 9095 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2642 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2659 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9065 "MachineIndependent/glslang_tab.cpp" +#line 9106 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2648 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2665 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9076 "MachineIndependent/glslang_tab.cpp" +#line 9117 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2654 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2671 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9087 "MachineIndependent/glslang_tab.cpp" +#line 9128 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2660 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2677 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9097 "MachineIndependent/glslang_tab.cpp" +#line 9138 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2666 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2683 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9107 "MachineIndependent/glslang_tab.cpp" +#line 9148 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2671 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2688 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9117 "MachineIndependent/glslang_tab.cpp" +#line 9158 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2676 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2693 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9127 "MachineIndependent/glslang_tab.cpp" +#line 9168 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2681 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2698 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9137 "MachineIndependent/glslang_tab.cpp" +#line 9178 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: USAMPLER2D */ -#line 2686 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: USAMPLER2D */ +#line 2703 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9147 "MachineIndependent/glslang_tab.cpp" +#line 9188 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: USAMPLER3D */ -#line 2691 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: USAMPLER3D */ +#line 2708 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9157 "MachineIndependent/glslang_tab.cpp" +#line 9198 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2696 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2713 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9167 "MachineIndependent/glslang_tab.cpp" +#line 9208 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2702 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2719 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9177 "MachineIndependent/glslang_tab.cpp" +#line 9218 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2707 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2724 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9187 "MachineIndependent/glslang_tab.cpp" +#line 9228 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: USAMPLER1D */ -#line 2712 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: USAMPLER1D */ +#line 2729 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9197 "MachineIndependent/glslang_tab.cpp" +#line 9238 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2717 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2734 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9207 "MachineIndependent/glslang_tab.cpp" +#line 9248 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2722 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2739 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9217 "MachineIndependent/glslang_tab.cpp" +#line 9258 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2727 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2744 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9227 "MachineIndependent/glslang_tab.cpp" +#line 9268 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2732 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2749 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9237 "MachineIndependent/glslang_tab.cpp" +#line 9278 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2737 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2754 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9247 "MachineIndependent/glslang_tab.cpp" +#line 9288 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2743 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2760 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9257 "MachineIndependent/glslang_tab.cpp" +#line 9298 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: TEXTURE2D */ -#line 2748 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: TEXTURE2D */ +#line 2765 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9267 "MachineIndependent/glslang_tab.cpp" +#line 9308 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: TEXTURE3D */ -#line 2753 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: TEXTURE3D */ +#line 2770 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9277 "MachineIndependent/glslang_tab.cpp" +#line 9318 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2758 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2775 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9287 "MachineIndependent/glslang_tab.cpp" +#line 9328 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2763 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9297 "MachineIndependent/glslang_tab.cpp" +#line 9338 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2768 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9307 "MachineIndependent/glslang_tab.cpp" +#line 9348 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2773 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9317 "MachineIndependent/glslang_tab.cpp" +#line 9358 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2778 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9327 "MachineIndependent/glslang_tab.cpp" +#line 9368 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2783 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9337 "MachineIndependent/glslang_tab.cpp" +#line 9378 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2788 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9347 "MachineIndependent/glslang_tab.cpp" +#line 9388 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2793 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9357 "MachineIndependent/glslang_tab.cpp" +#line 9398 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2798 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9367 "MachineIndependent/glslang_tab.cpp" +#line 9408 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2803 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9377 "MachineIndependent/glslang_tab.cpp" +#line 9418 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: SAMPLER */ -#line 2808 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: SAMPLER */ +#line 2825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9387 "MachineIndependent/glslang_tab.cpp" +#line 9428 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2813 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9397 "MachineIndependent/glslang_tab.cpp" +#line 9438 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2819 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2836 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9407 "MachineIndependent/glslang_tab.cpp" +#line 9448 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2824 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2841 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9417 "MachineIndependent/glslang_tab.cpp" +#line 9458 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2829 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2846 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9428 "MachineIndependent/glslang_tab.cpp" +#line 9469 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2835 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2852 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9439 "MachineIndependent/glslang_tab.cpp" +#line 9480 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2841 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2858 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9449 "MachineIndependent/glslang_tab.cpp" +#line 9490 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2846 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2863 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9459 "MachineIndependent/glslang_tab.cpp" +#line 9500 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2851 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2868 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9469 "MachineIndependent/glslang_tab.cpp" +#line 9510 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2856 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2873 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9480 "MachineIndependent/glslang_tab.cpp" +#line 9521 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2862 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2879 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9490 "MachineIndependent/glslang_tab.cpp" +#line 9531 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2867 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2884 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9500 "MachineIndependent/glslang_tab.cpp" +#line 9541 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2872 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2889 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9510 "MachineIndependent/glslang_tab.cpp" +#line 9551 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2877 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2894 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9521 "MachineIndependent/glslang_tab.cpp" +#line 9562 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2883 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2900 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9531 "MachineIndependent/glslang_tab.cpp" +#line 9572 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2888 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2905 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9541 "MachineIndependent/glslang_tab.cpp" +#line 9582 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2893 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2910 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9551 "MachineIndependent/glslang_tab.cpp" +#line 9592 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2898 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2915 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9562 "MachineIndependent/glslang_tab.cpp" +#line 9603 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2904 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2921 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9572 "MachineIndependent/glslang_tab.cpp" +#line 9613 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2909 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2926 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9582 "MachineIndependent/glslang_tab.cpp" +#line 9623 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: TEXTURE1D */ -#line 2914 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: TEXTURE1D */ +#line 2931 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9592 "MachineIndependent/glslang_tab.cpp" +#line 9633 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2919 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2936 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9603 "MachineIndependent/glslang_tab.cpp" +#line 9644 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2925 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2942 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9614 "MachineIndependent/glslang_tab.cpp" +#line 9655 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2931 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2948 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9625 "MachineIndependent/glslang_tab.cpp" +#line 9666 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2937 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2954 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9636 "MachineIndependent/glslang_tab.cpp" +#line 9677 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2943 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2960 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9646 "MachineIndependent/glslang_tab.cpp" +#line 9687 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2948 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2965 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9657 "MachineIndependent/glslang_tab.cpp" +#line 9698 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2954 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2971 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9668 "MachineIndependent/glslang_tab.cpp" +#line 9709 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2960 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 2977 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9679 "MachineIndependent/glslang_tab.cpp" +#line 9720 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2966 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: ITEXTURE1D */ +#line 2983 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9689 "MachineIndependent/glslang_tab.cpp" +#line 9730 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2971 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 2988 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9699 "MachineIndependent/glslang_tab.cpp" +#line 9740 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2976 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: UTEXTURE1D */ +#line 2993 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9709 "MachineIndependent/glslang_tab.cpp" +#line 9750 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2981 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 2998 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9719 "MachineIndependent/glslang_tab.cpp" +#line 9760 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 2986 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 3003 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9729 "MachineIndependent/glslang_tab.cpp" +#line 9770 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 2991 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 3008 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9740 "MachineIndependent/glslang_tab.cpp" +#line 9781 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 2997 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 3014 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9750 "MachineIndependent/glslang_tab.cpp" +#line 9791 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3002 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 3019 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9760 "MachineIndependent/glslang_tab.cpp" +#line 9801 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3007 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 3024 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9770 "MachineIndependent/glslang_tab.cpp" +#line 9811 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3012 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3029 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9781 "MachineIndependent/glslang_tab.cpp" +#line 9822 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3018 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3035 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9791 "MachineIndependent/glslang_tab.cpp" +#line 9832 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3023 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3040 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9801 "MachineIndependent/glslang_tab.cpp" +#line 9842 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3028 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3045 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9811 "MachineIndependent/glslang_tab.cpp" +#line 9852 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3033 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3050 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9822 "MachineIndependent/glslang_tab.cpp" +#line 9863 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3039 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3056 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9832 "MachineIndependent/glslang_tab.cpp" +#line 9873 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3044 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3061 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9842 "MachineIndependent/glslang_tab.cpp" +#line 9883 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3049 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3066 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9852 "MachineIndependent/glslang_tab.cpp" +#line 9893 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3054 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3071 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9863 "MachineIndependent/glslang_tab.cpp" +#line 9904 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3060 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3077 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9873 "MachineIndependent/glslang_tab.cpp" +#line 9914 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3065 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3082 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9883 "MachineIndependent/glslang_tab.cpp" +#line 9924 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: IMAGE1D */ -#line 3070 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: IMAGE1D */ +#line 3087 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9893 "MachineIndependent/glslang_tab.cpp" +#line 9934 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3075 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3092 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 9904 "MachineIndependent/glslang_tab.cpp" +#line 9945 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: IIMAGE1D */ -#line 3081 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: IIMAGE1D */ +#line 3098 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 9914 "MachineIndependent/glslang_tab.cpp" +#line 9955 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: UIMAGE1D */ -#line 3086 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: UIMAGE1D */ +#line 3103 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9924 "MachineIndependent/glslang_tab.cpp" +#line 9965 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: IMAGE2D */ -#line 3091 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: IMAGE2D */ +#line 3108 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 9934 "MachineIndependent/glslang_tab.cpp" +#line 9975 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3096 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3113 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 9945 "MachineIndependent/glslang_tab.cpp" +#line 9986 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: IIMAGE2D */ -#line 3102 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: IIMAGE2D */ +#line 3119 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 9955 "MachineIndependent/glslang_tab.cpp" +#line 9996 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: UIMAGE2D */ -#line 3107 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: UIMAGE2D */ +#line 3124 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 9965 "MachineIndependent/glslang_tab.cpp" +#line 10006 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: IMAGE3D */ -#line 3112 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: IMAGE3D */ +#line 3129 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 9975 "MachineIndependent/glslang_tab.cpp" +#line 10016 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3117 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3134 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 9986 "MachineIndependent/glslang_tab.cpp" +#line 10027 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: IIMAGE3D */ -#line 3123 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: IIMAGE3D */ +#line 3140 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 9996 "MachineIndependent/glslang_tab.cpp" +#line 10037 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: UIMAGE3D */ -#line 3128 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: UIMAGE3D */ +#line 3145 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10006 "MachineIndependent/glslang_tab.cpp" +#line 10047 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3133 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3150 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10016 "MachineIndependent/glslang_tab.cpp" +#line 10057 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3138 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3155 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10027 "MachineIndependent/glslang_tab.cpp" +#line 10068 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3144 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3161 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10037 "MachineIndependent/glslang_tab.cpp" +#line 10078 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3149 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3166 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10047 "MachineIndependent/glslang_tab.cpp" +#line 10088 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: IMAGECUBE */ -#line 3154 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: IMAGECUBE */ +#line 3171 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10057 "MachineIndependent/glslang_tab.cpp" +#line 10098 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3159 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3176 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10068 "MachineIndependent/glslang_tab.cpp" +#line 10109 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3165 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3182 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10078 "MachineIndependent/glslang_tab.cpp" +#line 10119 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3170 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3187 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10088 "MachineIndependent/glslang_tab.cpp" +#line 10129 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3175 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3192 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10098 "MachineIndependent/glslang_tab.cpp" +#line 10139 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3180 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3197 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10109 "MachineIndependent/glslang_tab.cpp" +#line 10150 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3186 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3203 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10119 "MachineIndependent/glslang_tab.cpp" +#line 10160 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3191 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3208 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10129 "MachineIndependent/glslang_tab.cpp" +#line 10170 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3196 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3213 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10139 "MachineIndependent/glslang_tab.cpp" +#line 10180 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3201 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3218 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10150 "MachineIndependent/glslang_tab.cpp" +#line 10191 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3207 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3224 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10160 "MachineIndependent/glslang_tab.cpp" +#line 10201 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3212 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3229 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10170 "MachineIndependent/glslang_tab.cpp" +#line 10211 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3217 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3234 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10180 "MachineIndependent/glslang_tab.cpp" +#line 10221 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3222 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3239 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10191 "MachineIndependent/glslang_tab.cpp" +#line 10232 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3228 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3245 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10201 "MachineIndependent/glslang_tab.cpp" +#line 10242 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3233 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3250 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10211 "MachineIndependent/glslang_tab.cpp" +#line 10252 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3238 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3255 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10221 "MachineIndependent/glslang_tab.cpp" +#line 10262 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3243 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3260 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10232 "MachineIndependent/glslang_tab.cpp" +#line 10273 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3249 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3266 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10242 "MachineIndependent/glslang_tab.cpp" +#line 10283 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3254 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3271 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10252 "MachineIndependent/glslang_tab.cpp" +#line 10293 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3259 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3276 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10262 "MachineIndependent/glslang_tab.cpp" +#line 10303 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3264 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3281 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10273 "MachineIndependent/glslang_tab.cpp" +#line 10314 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3270 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3287 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10283 "MachineIndependent/glslang_tab.cpp" +#line 10324 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3275 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3292 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10293 "MachineIndependent/glslang_tab.cpp" +#line 10334 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3280 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3297 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10303 "MachineIndependent/glslang_tab.cpp" +#line 10344 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3285 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3302 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10314 "MachineIndependent/glslang_tab.cpp" +#line 10355 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3291 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3308 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10324 "MachineIndependent/glslang_tab.cpp" +#line 10365 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3296 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3313 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10334 "MachineIndependent/glslang_tab.cpp" +#line 10375 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3301 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3318 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10344 "MachineIndependent/glslang_tab.cpp" +#line 10385 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3306 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3323 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10354 "MachineIndependent/glslang_tab.cpp" +#line 10395 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3311 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3328 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10364 "MachineIndependent/glslang_tab.cpp" +#line 10405 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3316 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3333 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10374 "MachineIndependent/glslang_tab.cpp" +#line 10415 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3321 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3338 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10384 "MachineIndependent/glslang_tab.cpp" +#line 10425 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3326 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3343 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10394 "MachineIndependent/glslang_tab.cpp" +#line 10435 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3331 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3348 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10404 "MachineIndependent/glslang_tab.cpp" +#line 10445 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3336 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3353 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10414 "MachineIndependent/glslang_tab.cpp" +#line 10455 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3341 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3358 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10424 "MachineIndependent/glslang_tab.cpp" +#line 10465 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3346 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3363 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10434 "MachineIndependent/glslang_tab.cpp" +#line 10475 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3351 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3368 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10444 "MachineIndependent/glslang_tab.cpp" +#line 10485 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3356 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3373 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10454 "MachineIndependent/glslang_tab.cpp" +#line 10495 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3361 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3378 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10464 "MachineIndependent/glslang_tab.cpp" +#line 10505 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3366 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3383 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10474 "MachineIndependent/glslang_tab.cpp" +#line 10515 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3371 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3388 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10484 "MachineIndependent/glslang_tab.cpp" +#line 10525 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3376 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3393 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10494 "MachineIndependent/glslang_tab.cpp" +#line 10535 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3381 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3398 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10504 "MachineIndependent/glslang_tab.cpp" +#line 10545 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3386 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3403 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10514 "MachineIndependent/glslang_tab.cpp" +#line 10555 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3391 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3408 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10524 "MachineIndependent/glslang_tab.cpp" +#line 10565 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3396 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3413 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10534 "MachineIndependent/glslang_tab.cpp" +#line 10575 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3401 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3418 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10544 "MachineIndependent/glslang_tab.cpp" +#line 10585 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3406 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3423 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10554 "MachineIndependent/glslang_tab.cpp" +#line 10595 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3411 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3428 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10565 "MachineIndependent/glslang_tab.cpp" +#line 10606 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3417 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3434 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10576 "MachineIndependent/glslang_tab.cpp" +#line 10617 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3423 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3440 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10587 "MachineIndependent/glslang_tab.cpp" +#line 10628 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3429 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3446 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10598 "MachineIndependent/glslang_tab.cpp" +#line 10639 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3435 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3452 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10606,11 +10647,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10610 "MachineIndependent/glslang_tab.cpp" +#line 10651 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3442 "MachineIndependent/glslang.y" + case 522: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3459 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10618,107 +10659,107 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10622 "MachineIndependent/glslang_tab.cpp" +#line 10663 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3449 "MachineIndependent/glslang.y" + case 523: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3466 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10633 "MachineIndependent/glslang_tab.cpp" +#line 10674 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3455 "MachineIndependent/glslang.y" + case 524: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3472 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10644 "MachineIndependent/glslang_tab.cpp" +#line 10685 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3461 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3478 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10655 "MachineIndependent/glslang_tab.cpp" +#line 10696 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3467 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3484 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10666 "MachineIndependent/glslang_tab.cpp" +#line 10707 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3473 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3490 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 10677 "MachineIndependent/glslang_tab.cpp" +#line 10718 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3479 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3496 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 10688 "MachineIndependent/glslang_tab.cpp" +#line 10729 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3485 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3502 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10699 "MachineIndependent/glslang_tab.cpp" +#line 10740 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3491 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3508 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10708 "MachineIndependent/glslang_tab.cpp" +#line 10749 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: struct_specifier */ -#line 3496 "MachineIndependent/glslang.y" + case 531: /* type_specifier_nonarray: struct_specifier */ +#line 3513 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10718 "MachineIndependent/glslang_tab.cpp" +#line 10759 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* type_specifier_nonarray: TYPE_NAME */ -#line 3501 "MachineIndependent/glslang.y" + case 532: /* type_specifier_nonarray: TYPE_NAME */ +#line 3518 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10732,47 +10773,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10736 "MachineIndependent/glslang_tab.cpp" +#line 10777 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* precision_qualifier: HIGH_PRECISION */ -#line 3517 "MachineIndependent/glslang.y" + case 533: /* precision_qualifier: HIGH_PRECISION */ +#line 3534 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10746 "MachineIndependent/glslang_tab.cpp" +#line 10787 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3522 "MachineIndependent/glslang.y" + case 534: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3539 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10756 "MachineIndependent/glslang_tab.cpp" +#line 10797 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* precision_qualifier: LOW_PRECISION */ -#line 3527 "MachineIndependent/glslang.y" + case 535: /* precision_qualifier: LOW_PRECISION */ +#line 3544 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10766 "MachineIndependent/glslang_tab.cpp" +#line 10807 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* $@3: %empty */ -#line 3535 "MachineIndependent/glslang.y" + case 536: /* $@3: %empty */ +#line 3552 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10772 "MachineIndependent/glslang_tab.cpp" +#line 10813 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3535 "MachineIndependent/glslang.y" + case 537: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3552 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10784,17 +10825,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10788 "MachineIndependent/glslang_tab.cpp" +#line 10829 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* $@4: %empty */ -#line 3546 "MachineIndependent/glslang.y" + case 538: /* $@4: %empty */ +#line 3563 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10794 "MachineIndependent/glslang_tab.cpp" +#line 10835 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3546 "MachineIndependent/glslang.y" + case 539: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3563 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10802,19 +10843,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10806 "MachineIndependent/glslang_tab.cpp" +#line 10847 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* struct_declaration_list: struct_declaration */ -#line 3556 "MachineIndependent/glslang.y" + case 540: /* struct_declaration_list: struct_declaration */ +#line 3573 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10814 "MachineIndependent/glslang_tab.cpp" +#line 10855 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3559 "MachineIndependent/glslang.y" + case 541: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3576 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10825,11 +10866,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10829 "MachineIndependent/glslang_tab.cpp" +#line 10870 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3572 "MachineIndependent/glslang.y" + case 542: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3589 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10852,11 +10893,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10856 "MachineIndependent/glslang_tab.cpp" +#line 10897 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3594 "MachineIndependent/glslang.y" + case 543: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3611 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10881,38 +10922,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10885 "MachineIndependent/glslang_tab.cpp" +#line 10926 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* struct_declarator_list: struct_declarator */ -#line 3621 "MachineIndependent/glslang.y" + case 544: /* struct_declarator_list: struct_declarator */ +#line 3638 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10894 "MachineIndependent/glslang_tab.cpp" +#line 10935 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3625 "MachineIndependent/glslang.y" + case 545: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3642 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10902 "MachineIndependent/glslang_tab.cpp" +#line 10943 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* struct_declarator: IDENTIFIER */ -#line 3631 "MachineIndependent/glslang.y" + case 546: /* struct_declarator: IDENTIFIER */ +#line 3648 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 10912 "MachineIndependent/glslang_tab.cpp" +#line 10953 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3636 "MachineIndependent/glslang.y" + case 547: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3653 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -10921,246 +10962,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 10925 "MachineIndependent/glslang_tab.cpp" +#line 10966 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* initializer: assignment_expression */ -#line 3647 "MachineIndependent/glslang.y" + case 548: /* initializer: assignment_expression */ +#line 3664 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10933 "MachineIndependent/glslang_tab.cpp" +#line 10974 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3651 "MachineIndependent/glslang.y" + case 549: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3668 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 10944 "MachineIndependent/glslang_tab.cpp" +#line 10985 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3657 "MachineIndependent/glslang.y" + case 550: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3674 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 10955 "MachineIndependent/glslang_tab.cpp" +#line 10996 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3663 "MachineIndependent/glslang.y" + case 551: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3680 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 10966 "MachineIndependent/glslang_tab.cpp" +#line 11007 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* initializer_list: initializer */ -#line 3674 "MachineIndependent/glslang.y" + case 552: /* initializer_list: initializer */ +#line 3691 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 10974 "MachineIndependent/glslang_tab.cpp" +#line 11015 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* initializer_list: initializer_list COMMA initializer */ -#line 3677 "MachineIndependent/glslang.y" + case 553: /* initializer_list: initializer_list COMMA initializer */ +#line 3694 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 10982 "MachineIndependent/glslang_tab.cpp" +#line 11023 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* declaration_statement: declaration */ -#line 3684 "MachineIndependent/glslang.y" + case 554: /* declaration_statement: declaration */ +#line 3701 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10988 "MachineIndependent/glslang_tab.cpp" +#line 11029 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* statement: compound_statement */ -#line 3688 "MachineIndependent/glslang.y" + case 555: /* statement: compound_statement */ +#line 3705 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 10994 "MachineIndependent/glslang_tab.cpp" +#line 11035 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* statement: simple_statement */ -#line 3689 "MachineIndependent/glslang.y" + case 556: /* statement: simple_statement */ +#line 3706 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11000 "MachineIndependent/glslang_tab.cpp" +#line 11041 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* simple_statement: declaration_statement */ -#line 3695 "MachineIndependent/glslang.y" + case 557: /* simple_statement: declaration_statement */ +#line 3712 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11006 "MachineIndependent/glslang_tab.cpp" +#line 11047 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* simple_statement: expression_statement */ -#line 3696 "MachineIndependent/glslang.y" + case 558: /* simple_statement: expression_statement */ +#line 3713 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11012 "MachineIndependent/glslang_tab.cpp" +#line 11053 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* simple_statement: selection_statement */ -#line 3697 "MachineIndependent/glslang.y" + case 559: /* simple_statement: selection_statement */ +#line 3714 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11018 "MachineIndependent/glslang_tab.cpp" +#line 11059 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* simple_statement: switch_statement */ -#line 3698 "MachineIndependent/glslang.y" + case 560: /* simple_statement: switch_statement */ +#line 3715 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11024 "MachineIndependent/glslang_tab.cpp" +#line 11065 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* simple_statement: case_label */ -#line 3699 "MachineIndependent/glslang.y" + case 561: /* simple_statement: case_label */ +#line 3716 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11030 "MachineIndependent/glslang_tab.cpp" +#line 11071 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* simple_statement: iteration_statement */ -#line 3700 "MachineIndependent/glslang.y" + case 562: /* simple_statement: iteration_statement */ +#line 3717 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11036 "MachineIndependent/glslang_tab.cpp" +#line 11077 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* simple_statement: jump_statement */ -#line 3701 "MachineIndependent/glslang.y" + case 563: /* simple_statement: jump_statement */ +#line 3718 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11042 "MachineIndependent/glslang_tab.cpp" +#line 11083 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* simple_statement: demote_statement */ -#line 3703 "MachineIndependent/glslang.y" + case 564: /* simple_statement: demote_statement */ +#line 3720 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11048 "MachineIndependent/glslang_tab.cpp" +#line 11089 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* demote_statement: DEMOTE SEMICOLON */ -#line 3709 "MachineIndependent/glslang.y" + case 565: /* demote_statement: DEMOTE SEMICOLON */ +#line 3726 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11058 "MachineIndependent/glslang_tab.cpp" +#line 11099 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3718 "MachineIndependent/glslang.y" + case 566: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3735 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11064 "MachineIndependent/glslang_tab.cpp" +#line 11105 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* $@5: %empty */ -#line 3719 "MachineIndependent/glslang.y" + case 567: /* $@5: %empty */ +#line 3736 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11073 "MachineIndependent/glslang_tab.cpp" +#line 11114 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* $@6: %empty */ -#line 3723 "MachineIndependent/glslang.y" + case 568: /* $@6: %empty */ +#line 3740 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11082 "MachineIndependent/glslang_tab.cpp" +#line 11123 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3727 "MachineIndependent/glslang.y" + case 569: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3744 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11092 "MachineIndependent/glslang_tab.cpp" +#line 11133 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3735 "MachineIndependent/glslang.y" + case 570: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3752 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11098 "MachineIndependent/glslang_tab.cpp" +#line 11139 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* statement_no_new_scope: simple_statement */ -#line 3736 "MachineIndependent/glslang.y" + case 571: /* statement_no_new_scope: simple_statement */ +#line 3753 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11104 "MachineIndependent/glslang_tab.cpp" +#line 11145 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* $@7: %empty */ -#line 3740 "MachineIndependent/glslang.y" + case 572: /* $@7: %empty */ +#line 3757 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11112 "MachineIndependent/glslang_tab.cpp" +#line 11153 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* statement_scoped: $@7 compound_statement */ -#line 3743 "MachineIndependent/glslang.y" + case 573: /* statement_scoped: $@7 compound_statement */ +#line 3760 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11121 "MachineIndependent/glslang_tab.cpp" +#line 11162 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* $@8: %empty */ -#line 3747 "MachineIndependent/glslang.y" + case 574: /* $@8: %empty */ +#line 3764 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11131 "MachineIndependent/glslang_tab.cpp" +#line 11172 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* statement_scoped: $@8 simple_statement */ -#line 3752 "MachineIndependent/glslang.y" + case 575: /* statement_scoped: $@8 simple_statement */ +#line 3769 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11142 "MachineIndependent/glslang_tab.cpp" +#line 11183 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3761 "MachineIndependent/glslang.y" + case 576: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3778 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11150 "MachineIndependent/glslang_tab.cpp" +#line 11191 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3764 "MachineIndependent/glslang.y" + case 577: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3781 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11160 "MachineIndependent/glslang_tab.cpp" +#line 11201 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* statement_list: statement */ -#line 3772 "MachineIndependent/glslang.y" + case 578: /* statement_list: statement */ +#line 3789 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11169,11 +11210,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11173 "MachineIndependent/glslang_tab.cpp" +#line 11214 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* statement_list: statement_list statement */ -#line 3780 "MachineIndependent/glslang.y" + case 579: /* statement_list: statement_list statement */ +#line 3797 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11182,77 +11223,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11186 "MachineIndependent/glslang_tab.cpp" +#line 11227 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* expression_statement: SEMICOLON */ -#line 3791 "MachineIndependent/glslang.y" + case 580: /* expression_statement: SEMICOLON */ +#line 3808 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11192 "MachineIndependent/glslang_tab.cpp" +#line 11233 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* expression_statement: expression SEMICOLON */ -#line 3792 "MachineIndependent/glslang.y" + case 581: /* expression_statement: expression SEMICOLON */ +#line 3809 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11198 "MachineIndependent/glslang_tab.cpp" +#line 11239 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* selection_statement: selection_statement_nonattributed */ -#line 3796 "MachineIndependent/glslang.y" + case 582: /* selection_statement: selection_statement_nonattributed */ +#line 3813 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11206 "MachineIndependent/glslang_tab.cpp" +#line 11247 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3800 "MachineIndependent/glslang.y" + case 583: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3817 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11216 "MachineIndependent/glslang_tab.cpp" +#line 11257 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3808 "MachineIndependent/glslang.y" + case 584: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3825 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11225 "MachineIndependent/glslang_tab.cpp" +#line 11266 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3815 "MachineIndependent/glslang.y" + case 585: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3832 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11234 "MachineIndependent/glslang_tab.cpp" +#line 11275 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* selection_rest_statement: statement_scoped */ -#line 3819 "MachineIndependent/glslang.y" + case 586: /* selection_rest_statement: statement_scoped */ +#line 3836 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11243 "MachineIndependent/glslang_tab.cpp" +#line 11284 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* condition: expression */ -#line 3827 "MachineIndependent/glslang.y" + case 587: /* condition: expression */ +#line 3844 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11252 "MachineIndependent/glslang_tab.cpp" +#line 11293 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3831 "MachineIndependent/glslang.y" + case 588: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3848 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11263,29 +11304,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11267 "MachineIndependent/glslang_tab.cpp" +#line 11308 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* switch_statement: switch_statement_nonattributed */ -#line 3844 "MachineIndependent/glslang.y" + case 589: /* switch_statement: switch_statement_nonattributed */ +#line 3861 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11275 "MachineIndependent/glslang_tab.cpp" +#line 11316 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3848 "MachineIndependent/glslang.y" + case 590: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3865 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11285 "MachineIndependent/glslang_tab.cpp" +#line 11326 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* $@9: %empty */ -#line 3856 "MachineIndependent/glslang.y" + case 591: /* $@9: %empty */ +#line 3873 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11294,11 +11335,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11298 "MachineIndependent/glslang_tab.cpp" +#line 11339 "MachineIndependent/glslang_tab.cpp" break; - case 590: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3864 "MachineIndependent/glslang.y" + case 592: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3881 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11308,27 +11349,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11312 "MachineIndependent/glslang_tab.cpp" +#line 11353 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* switch_statement_list: %empty */ -#line 3876 "MachineIndependent/glslang.y" + case 593: /* switch_statement_list: %empty */ +#line 3893 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11320 "MachineIndependent/glslang_tab.cpp" +#line 11361 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* switch_statement_list: statement_list */ -#line 3879 "MachineIndependent/glslang.y" + case 594: /* switch_statement_list: statement_list */ +#line 3896 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11328 "MachineIndependent/glslang_tab.cpp" +#line 11369 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* case_label: CASE expression COLON */ -#line 3885 "MachineIndependent/glslang.y" + case 595: /* case_label: CASE expression COLON */ +#line 3902 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11341,11 +11382,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11345 "MachineIndependent/glslang_tab.cpp" +#line 11386 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* case_label: DEFAULT COLON */ -#line 3897 "MachineIndependent/glslang.y" + case 596: /* case_label: DEFAULT COLON */ +#line 3914 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11355,29 +11396,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11359 "MachineIndependent/glslang_tab.cpp" +#line 11400 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* iteration_statement: iteration_statement_nonattributed */ -#line 3909 "MachineIndependent/glslang.y" + case 597: /* iteration_statement: iteration_statement_nonattributed */ +#line 3926 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11367 "MachineIndependent/glslang_tab.cpp" +#line 11408 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3913 "MachineIndependent/glslang.y" + case 598: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3930 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11377 "MachineIndependent/glslang_tab.cpp" +#line 11418 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* $@10: %empty */ -#line 3921 "MachineIndependent/glslang.y" + case 599: /* $@10: %empty */ +#line 3938 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11386,11 +11427,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11390 "MachineIndependent/glslang_tab.cpp" +#line 11431 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3929 "MachineIndependent/glslang.y" + case 600: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3946 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11398,22 +11439,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11402 "MachineIndependent/glslang_tab.cpp" +#line 11443 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* $@11: %empty */ -#line 3936 "MachineIndependent/glslang.y" + case 601: /* $@11: %empty */ +#line 3953 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11413 "MachineIndependent/glslang_tab.cpp" +#line 11454 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3942 "MachineIndependent/glslang.y" + case 602: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3959 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11426,22 +11467,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11430 "MachineIndependent/glslang_tab.cpp" +#line 11471 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* $@12: %empty */ -#line 3954 "MachineIndependent/glslang.y" + case 603: /* $@12: %empty */ +#line 3971 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11441 "MachineIndependent/glslang_tab.cpp" +#line 11482 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3960 "MachineIndependent/glslang.y" + case 604: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 3977 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11454,81 +11495,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11458 "MachineIndependent/glslang_tab.cpp" +#line 11499 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* for_init_statement: expression_statement */ -#line 3975 "MachineIndependent/glslang.y" + case 605: /* for_init_statement: expression_statement */ +#line 3992 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11466 "MachineIndependent/glslang_tab.cpp" +#line 11507 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* for_init_statement: declaration_statement */ -#line 3978 "MachineIndependent/glslang.y" + case 606: /* for_init_statement: declaration_statement */ +#line 3995 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11474 "MachineIndependent/glslang_tab.cpp" +#line 11515 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* conditionopt: condition */ -#line 3984 "MachineIndependent/glslang.y" + case 607: /* conditionopt: condition */ +#line 4001 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11482 "MachineIndependent/glslang_tab.cpp" +#line 11523 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* conditionopt: %empty */ -#line 3987 "MachineIndependent/glslang.y" + case 608: /* conditionopt: %empty */ +#line 4004 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11490 "MachineIndependent/glslang_tab.cpp" +#line 11531 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* for_rest_statement: conditionopt SEMICOLON */ -#line 3993 "MachineIndependent/glslang.y" + case 609: /* for_rest_statement: conditionopt SEMICOLON */ +#line 4010 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11499 "MachineIndependent/glslang_tab.cpp" +#line 11540 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 3997 "MachineIndependent/glslang.y" + case 610: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 4014 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11508 "MachineIndependent/glslang_tab.cpp" +#line 11549 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* jump_statement: CONTINUE SEMICOLON */ -#line 4004 "MachineIndependent/glslang.y" + case 611: /* jump_statement: CONTINUE SEMICOLON */ +#line 4021 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11518 "MachineIndependent/glslang_tab.cpp" +#line 11559 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* jump_statement: BREAK SEMICOLON */ -#line 4009 "MachineIndependent/glslang.y" + case 612: /* jump_statement: BREAK SEMICOLON */ +#line 4026 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11528 "MachineIndependent/glslang_tab.cpp" +#line 11569 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* jump_statement: RETURN SEMICOLON */ -#line 4014 "MachineIndependent/glslang.y" + case 613: /* jump_statement: RETURN SEMICOLON */ +#line 4031 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11536,101 +11577,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11540 "MachineIndependent/glslang_tab.cpp" +#line 11581 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* jump_statement: RETURN expression SEMICOLON */ -#line 4021 "MachineIndependent/glslang.y" + case 614: /* jump_statement: RETURN expression SEMICOLON */ +#line 4038 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11548 "MachineIndependent/glslang_tab.cpp" +#line 11589 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* jump_statement: DISCARD SEMICOLON */ -#line 4024 "MachineIndependent/glslang.y" + case 615: /* jump_statement: DISCARD SEMICOLON */ +#line 4041 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11557 "MachineIndependent/glslang_tab.cpp" +#line 11598 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4028 "MachineIndependent/glslang.y" + case 616: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4045 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11566 "MachineIndependent/glslang_tab.cpp" +#line 11607 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4033 "MachineIndependent/glslang.y" + case 617: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4050 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11575 "MachineIndependent/glslang_tab.cpp" +#line 11616 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4037 "MachineIndependent/glslang.y" + case 618: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4054 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11584 "MachineIndependent/glslang_tab.cpp" +#line 11625 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* translation_unit: external_declaration */ -#line 4047 "MachineIndependent/glslang.y" + case 619: /* translation_unit: external_declaration */ +#line 4064 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11593 "MachineIndependent/glslang_tab.cpp" +#line 11634 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* translation_unit: translation_unit external_declaration */ -#line 4051 "MachineIndependent/glslang.y" + case 620: /* translation_unit: translation_unit external_declaration */ +#line 4068 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11604 "MachineIndependent/glslang_tab.cpp" +#line 11645 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* external_declaration: function_definition */ -#line 4060 "MachineIndependent/glslang.y" + case 621: /* external_declaration: function_definition */ +#line 4077 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11612 "MachineIndependent/glslang_tab.cpp" +#line 11653 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* external_declaration: declaration */ -#line 4063 "MachineIndependent/glslang.y" + case 622: /* external_declaration: declaration */ +#line 4080 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11620 "MachineIndependent/glslang_tab.cpp" +#line 11661 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* external_declaration: SEMICOLON */ -#line 4067 "MachineIndependent/glslang.y" + case 623: /* external_declaration: SEMICOLON */ +#line 4084 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11630 "MachineIndependent/glslang_tab.cpp" +#line 11671 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* $@13: %empty */ -#line 4076 "MachineIndependent/glslang.y" + case 624: /* $@13: %empty */ +#line 4093 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11643,11 +11684,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11647 "MachineIndependent/glslang_tab.cpp" +#line 11688 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4088 "MachineIndependent/glslang.y" + case 625: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4105 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11674,228 +11715,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11678 "MachineIndependent/glslang_tab.cpp" +#line 11719 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4118 "MachineIndependent/glslang.y" + case 626: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4135 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11686 "MachineIndependent/glslang_tab.cpp" +#line 11727 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* attribute_list: single_attribute */ -#line 4123 "MachineIndependent/glslang.y" + case 627: /* attribute_list: single_attribute */ +#line 4140 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11694 "MachineIndependent/glslang_tab.cpp" +#line 11735 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4126 "MachineIndependent/glslang.y" + case 628: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4143 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11702 "MachineIndependent/glslang_tab.cpp" +#line 11743 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* single_attribute: IDENTIFIER */ -#line 4131 "MachineIndependent/glslang.y" + case 629: /* single_attribute: IDENTIFIER */ +#line 4148 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11710 "MachineIndependent/glslang_tab.cpp" +#line 11751 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4134 "MachineIndependent/glslang.y" + case 630: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4151 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11718 "MachineIndependent/glslang_tab.cpp" +#line 11759 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4141 "MachineIndependent/glslang.y" + case 631: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4158 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11726 "MachineIndependent/glslang_tab.cpp" +#line 11767 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4144 "MachineIndependent/glslang.y" + case 632: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4161 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11734 "MachineIndependent/glslang_tab.cpp" +#line 11775 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4149 "MachineIndependent/glslang.y" + case 633: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4166 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11742 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4152 "MachineIndependent/glslang.y" + case 634: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4169 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11750 "MachineIndependent/glslang_tab.cpp" +#line 11791 "MachineIndependent/glslang_tab.cpp" break; - case 633: /* spirv_extension_list: STRING_LITERAL */ -#line 4157 "MachineIndependent/glslang.y" + case 635: /* spirv_extension_list: STRING_LITERAL */ +#line 4174 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11758 "MachineIndependent/glslang_tab.cpp" +#line 11799 "MachineIndependent/glslang_tab.cpp" break; - case 634: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4160 "MachineIndependent/glslang.y" + case 636: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4177 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11766 "MachineIndependent/glslang_tab.cpp" +#line 11807 "MachineIndependent/glslang_tab.cpp" break; - case 635: /* spirv_capability_list: INTCONSTANT */ -#line 4165 "MachineIndependent/glslang.y" + case 637: /* spirv_capability_list: INTCONSTANT */ +#line 4182 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11774 "MachineIndependent/glslang_tab.cpp" +#line 11815 "MachineIndependent/glslang_tab.cpp" break; - case 636: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4168 "MachineIndependent/glslang.y" + case 638: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4185 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11782 "MachineIndependent/glslang_tab.cpp" +#line 11823 "MachineIndependent/glslang_tab.cpp" break; - case 637: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4173 "MachineIndependent/glslang.y" + case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4190 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11791 "MachineIndependent/glslang_tab.cpp" +#line 11832 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4177 "MachineIndependent/glslang.y" + case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4194 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11801 "MachineIndependent/glslang_tab.cpp" +#line 11842 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4182 "MachineIndependent/glslang.y" + case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4199 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11810 "MachineIndependent/glslang_tab.cpp" +#line 11851 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4186 "MachineIndependent/glslang.y" + case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4203 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11820 "MachineIndependent/glslang_tab.cpp" +#line 11861 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4191 "MachineIndependent/glslang.y" + case 643: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4208 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11829 "MachineIndependent/glslang_tab.cpp" +#line 11870 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4195 "MachineIndependent/glslang.y" + case 644: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4212 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11839 "MachineIndependent/glslang_tab.cpp" +#line 11880 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4202 "MachineIndependent/glslang.y" + case 645: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4219 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 11847 "MachineIndependent/glslang_tab.cpp" +#line 11888 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4205 "MachineIndependent/glslang.y" + case 646: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4222 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11855 "MachineIndependent/glslang_tab.cpp" +#line 11896 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4210 "MachineIndependent/glslang.y" + case 647: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4227 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 11863 "MachineIndependent/glslang_tab.cpp" +#line 11904 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4213 "MachineIndependent/glslang.y" + case 648: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4230 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 11871 "MachineIndependent/glslang_tab.cpp" +#line 11912 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4216 "MachineIndependent/glslang.y" + case 649: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4233 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 11879 "MachineIndependent/glslang_tab.cpp" +#line 11920 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4219 "MachineIndependent/glslang.y" + case 650: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4236 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 11887 "MachineIndependent/glslang_tab.cpp" +#line 11928 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4222 "MachineIndependent/glslang.y" + case 651: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4239 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 11895 "MachineIndependent/glslang_tab.cpp" +#line 11936 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4227 "MachineIndependent/glslang.y" + case 652: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4244 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11905,11 +11946,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 11909 "MachineIndependent/glslang_tab.cpp" +#line 11950 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4236 "MachineIndependent/glslang.y" + case 653: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4253 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11919,156 +11960,156 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11923 "MachineIndependent/glslang_tab.cpp" +#line 11964 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4247 "MachineIndependent/glslang.y" + case 654: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4264 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11933 "MachineIndependent/glslang_tab.cpp" +#line 11974 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4252 "MachineIndependent/glslang.y" + case 655: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4269 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11944 "MachineIndependent/glslang_tab.cpp" +#line 11985 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4260 "MachineIndependent/glslang.y" + case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4277 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11953 "MachineIndependent/glslang_tab.cpp" +#line 11994 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4264 "MachineIndependent/glslang.y" + case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4281 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11963 "MachineIndependent/glslang_tab.cpp" +#line 12004 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4269 "MachineIndependent/glslang.y" + case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4286 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11972 "MachineIndependent/glslang_tab.cpp" +#line 12013 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4273 "MachineIndependent/glslang.y" + case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4290 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11982 "MachineIndependent/glslang_tab.cpp" +#line 12023 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4278 "MachineIndependent/glslang.y" + case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4295 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11991 "MachineIndependent/glslang_tab.cpp" +#line 12032 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4282 "MachineIndependent/glslang.y" + case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4299 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12001 "MachineIndependent/glslang_tab.cpp" +#line 12042 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4287 "MachineIndependent/glslang.y" + case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4304 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12010 "MachineIndependent/glslang_tab.cpp" +#line 12051 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4291 "MachineIndependent/glslang.y" + case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4308 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12020 "MachineIndependent/glslang_tab.cpp" +#line 12061 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4298 "MachineIndependent/glslang.y" + case 664: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4315 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12028 "MachineIndependent/glslang_tab.cpp" +#line 12069 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4301 "MachineIndependent/glslang.y" + case 665: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4318 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12036 "MachineIndependent/glslang_tab.cpp" +#line 12077 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4306 "MachineIndependent/glslang.y" + case 666: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4323 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12044 "MachineIndependent/glslang_tab.cpp" +#line 12085 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4309 "MachineIndependent/glslang.y" + case 667: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4326 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12052 "MachineIndependent/glslang_tab.cpp" +#line 12093 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4312 "MachineIndependent/glslang.y" + case 668: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4329 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12060 "MachineIndependent/glslang_tab.cpp" +#line 12101 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4315 "MachineIndependent/glslang.y" + case 669: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4332 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12068 "MachineIndependent/glslang_tab.cpp" +#line 12109 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_decorate_id_parameter_list: constant_expression */ -#line 4320 "MachineIndependent/glslang.y" + case 670: /* spirv_decorate_id_parameter_list: constant_expression */ +#line 4337 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12077,11 +12118,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12081 "MachineIndependent/glslang_tab.cpp" +#line 12122 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ -#line 4328 "MachineIndependent/glslang.y" + case 671: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ +#line 4345 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12090,139 +12131,139 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12094 "MachineIndependent/glslang_tab.cpp" +#line 12135 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4338 "MachineIndependent/glslang.y" + case 672: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4355 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12103 "MachineIndependent/glslang_tab.cpp" +#line 12144 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4342 "MachineIndependent/glslang.y" + case 673: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4359 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12111 "MachineIndependent/glslang_tab.cpp" +#line 12152 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4347 "MachineIndependent/glslang.y" + case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4364 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12120 "MachineIndependent/glslang_tab.cpp" +#line 12161 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4351 "MachineIndependent/glslang.y" + case 675: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4368 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12130 "MachineIndependent/glslang_tab.cpp" +#line 12171 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4356 "MachineIndependent/glslang.y" + case 676: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4373 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12139 "MachineIndependent/glslang_tab.cpp" +#line 12180 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4360 "MachineIndependent/glslang.y" + case 677: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4377 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12149 "MachineIndependent/glslang_tab.cpp" +#line 12190 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4367 "MachineIndependent/glslang.y" + case 678: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4384 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12157 "MachineIndependent/glslang_tab.cpp" +#line 12198 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4370 "MachineIndependent/glslang.y" + case 679: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4387 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12165 "MachineIndependent/glslang_tab.cpp" +#line 12206 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_type_parameter: constant_expression */ -#line 4375 "MachineIndependent/glslang.y" + case 680: /* spirv_type_parameter: constant_expression */ +#line 4392 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12173 "MachineIndependent/glslang_tab.cpp" +#line 12214 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4380 "MachineIndependent/glslang.y" + case 681: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4397 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12181 "MachineIndependent/glslang_tab.cpp" +#line 12222 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4383 "MachineIndependent/glslang.y" + case 682: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4400 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12190 "MachineIndependent/glslang_tab.cpp" +#line 12231 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4389 "MachineIndependent/glslang.y" + case 683: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4406 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12198 "MachineIndependent/glslang_tab.cpp" +#line 12239 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4392 "MachineIndependent/glslang.y" + case 684: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4409 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12206 "MachineIndependent/glslang_tab.cpp" +#line 12247 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4397 "MachineIndependent/glslang.y" + case 685: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4414 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12214 "MachineIndependent/glslang_tab.cpp" +#line 12255 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4400 "MachineIndependent/glslang.y" + case 686: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4417 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12222 "MachineIndependent/glslang_tab.cpp" +#line 12263 "MachineIndependent/glslang_tab.cpp" break; -#line 12226 "MachineIndependent/glslang_tab.cpp" +#line 12267 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12447,5 +12488,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4405 "MachineIndependent/glslang.y" +#line 4422 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index a6871b319b..18cef4688e 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -506,7 +506,9 @@ extern int yydebug; PERPRIMITIVENV = 707, /* PERPRIMITIVENV */ PERVIEWNV = 708, /* PERVIEWNV */ PERTASKNV = 709, /* PERTASKNV */ - PRECISE = 710 /* PRECISE */ + PERPRIMITIVEEXT = 710, /* PERPRIMITIVEEXT */ + TASKPAYLOADWORKGROUPEXT = 711, /* TASKPAYLOADWORKGROUPEXT */ + PRECISE = 712 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -554,7 +556,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 558 "MachineIndependent/glslang_tab.cpp.h" +#line 560 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index d8a3aab5d0..173a012aa3 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1068,6 +1068,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpExecuteCallableNV: out.debug << "executeCallableNV"; break; case EOpExecuteCallableKHR: out.debug << "executeCallableKHR"; break; case EOpWritePackedPrimitiveIndices4x8NV: out.debug << "writePackedPrimitiveIndices4x8NV"; break; + case EOpEmitMeshTasksEXT: out.debug << "EmitMeshTasksEXT"; break; + case EOpSetMeshOutputsEXT: out.debug << "SetMeshOutputsEXT"; break; case EOpRayQueryInitialize: out.debug << "rayQueryInitializeEXT"; break; case EOpRayQueryTerminate: out.debug << "rayQueryTerminateEXT"; break; @@ -1522,12 +1524,12 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) infoSink.debug << "interlock ordering = " << TQualifier::getInterlockOrderingString(interlockOrdering) << "\n"; break; - case EShLangMeshNV: + case EShLangMesh: infoSink.debug << "max_vertices = " << vertices << "\n"; infoSink.debug << "max_primitives = " << primitives << "\n"; infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; // Fall through - case EShLangTaskNV: + case EShLangTask: // Fall through case EShLangCompute: infoSink.debug << "local_size = (" << localSize[0] << ", " << localSize[1] << ", " << localSize[2] << ")\n"; diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 6e60155aaf..fdb2dfddac 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -120,7 +120,7 @@ void TIntermediate::mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit } // -// do error checking on the shader boundary in / out vars +// do error checking on the shader boundary in / out vars // void TIntermediate::checkStageIO(TInfoSink& infoSink, TIntermediate& unit) { if (unit.treeRoot == nullptr || treeRoot == nullptr) @@ -212,7 +212,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (vertices == TQualifier::layoutNotSet) vertices = unit.vertices; else if (unit.vertices != TQualifier::layoutNotSet && vertices != unit.vertices) { - if (language == EShLangGeometry || language == EShLangMeshNV) + if (language == EShLangGeometry || language == EShLangMesh) error(infoSink, "Contradictory layout max_vertices values"); else if (language == EShLangTessControl) error(infoSink, "Contradictory layout vertices values"); @@ -222,7 +222,7 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) if (primitives == TQualifier::layoutNotSet) primitives = unit.primitives; else if (primitives != unit.primitives) { - if (language == EShLangMeshNV) + if (language == EShLangMesh) error(infoSink, "Contradictory layout max_primitives values"); else assert(0); @@ -692,7 +692,7 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl TMergeBlockTraverser finalLinkTraverser(block); getTreeRoot()->traverse(&finalLinkTraverser); - // The 'unit' intermediate needs the block structures update, but also structure entry indices + // The 'unit' intermediate needs the block structures update, but also structure entry indices // may have changed from the old block to the new one that it was merged into, so update those // in 'visitBinary' TType unitType; @@ -1012,7 +1012,7 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy } // Auxiliary and interpolation... - // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ. + // "interpolation qualification (e.g., flat) and auxiliary qualification (e.g. centroid) may differ. // These mismatches are allowed between any pair of stages ... // those provided in the fragment shader supersede those provided in previous stages." if (!crossStage && @@ -1294,8 +1294,8 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) error(infoSink, "At least one shader must specify a layout(max_vertices = value)"); break; case EShLangFragment: - // for GL_ARB_post_depth_coverage, EarlyFragmentTest is set automatically in - // ParseHelper.cpp. So if we reach here, this must be GL_EXT_post_depth_coverage + // for GL_ARB_post_depth_coverage, EarlyFragmentTest is set automatically in + // ParseHelper.cpp. So if we reach here, this must be GL_EXT_post_depth_coverage // requiring explicit early_fragment_tests if (getPostDepthCoverage() && !getEarlyFragmentTests()) error(infoSink, "post_depth_coverage requires early_fragment_tests"); @@ -1312,7 +1312,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) if (numShaderRecordBlocks > 1) error(infoSink, "Only one shaderRecordNV buffer block is allowed per stage"); break; - case EShLangMeshNV: + case EShLangMesh: // NV_mesh_shader doesn't allow use of both single-view and per-view builtins. if (inIoAccessed("gl_Position") && inIoAccessed("gl_PositionPerViewNV")) error(infoSink, "Can only use one of gl_Position or gl_PositionPerViewNV"); @@ -1331,9 +1331,11 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) if (primitives == TQualifier::layoutNotSet) error(infoSink, "At least one shader must specify a layout(max_primitives = value)"); // fall through - case EShLangTaskNV: + case EShLangTask: if (numTaskNVBlocks > 1) error(infoSink, "Only one taskNV interface block is allowed per shader"); + if (numTaskEXTPayloads > 1) + error(infoSink, "Only single variable of type taskPayloadSharedEXT is allowed per shader"); sharedBlockCheck(infoSink); break; default: @@ -2226,7 +2228,7 @@ int TIntermediate::getScalarAlignment(const TType& type, int& size, int& stride, if (type.isVector()) { int scalarAlign = getBaseAlignmentScalar(type, size); - + size *= type.getVectorSize(); return scalarAlign; } @@ -2247,7 +2249,7 @@ int TIntermediate::getScalarAlignment(const TType& type, int& size, int& stride, assert(0); // all cases should be covered above size = 1; - return 1; + return 1; } int TIntermediate::getMemberAlignment(const TType& type, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor) @@ -2338,7 +2340,7 @@ bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { (language == EShLangTessEvaluation && type.getQualifier().storage == EvqVaryingIn) || (language == EShLangFragment && type.getQualifier().storage == EvqVaryingIn && (type.getQualifier().pervertexNV || type.getQualifier().pervertexEXT)) || - (language == EShLangMeshNV && type.getQualifier().storage == EvqVaryingOut && + (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } #endif // not GLSLANG_WEB diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index ddeaa3530e..0d4945c811 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -322,6 +322,7 @@ class TIntermediate { primitives(TQualifier::layoutNotSet), numTaskNVBlocks(0), layoutPrimitiveCulling(false), + numTaskEXTPayloads(0), autoMapBindings(false), autoMapLocations(false), flattenUniformArrays(false), @@ -639,6 +640,7 @@ class TIntermediate { int getNumPushConstants() const { return 0; } void addShaderRecordCount() { } void addTaskNVCount() { } + void addTaskPayloadEXTCount() { } void setUseVulkanMemoryModel() { } bool usingVulkanMemoryModel() const { return false; } bool usingPhysicalStorageBuffer() const { return false; } @@ -756,6 +758,7 @@ class TIntermediate { int getNumPushConstants() const { return numPushConstants; } void addShaderRecordCount() { ++numShaderRecordBlocks; } void addTaskNVCount() { ++numTaskNVBlocks; } + void addTaskPayloadEXTCount() { ++numTaskEXTPayloads; } bool setInvocations(int i) { @@ -1160,6 +1163,7 @@ class TIntermediate { int primitives; int numTaskNVBlocks; bool layoutPrimitiveCulling; + int numTaskEXTPayloads; // Base shift values std::array shiftBinding; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index e44339db53..992db213b4 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -108,8 +108,10 @@ typedef enum { EShLangMissNV = EShLangMiss, EShLangCallable, EShLangCallableNV = EShLangCallable, - EShLangTaskNV, - EShLangMeshNV, + EShLangTask, + EShLangTaskNV = EShLangTask, + EShLangMesh, + EShLangMeshNV = EShLangMesh, LAST_ELEMENT_MARKER(EShLangCount), } EShLanguage; // would be better as stage, but this is ancient now @@ -132,8 +134,10 @@ typedef enum : unsigned { EShLangMissNVMask = EShLangMissMask, EShLangCallableMask = (1 << EShLangCallable), EShLangCallableNVMask = EShLangCallableMask, - EShLangTaskNVMask = (1 << EShLangTaskNV), - EShLangMeshNVMask = (1 << EShLangMeshNV), + EShLangTaskMask = (1 << EShLangTask), + EShLangTaskNVMask = EShLangTaskMask, + EShLangMeshMask = (1 << EShLangMesh), + EShLangMeshNVMask = EShLangMeshMask, LAST_ELEMENT_MARKER(EShLanguageMaskCount), } EShLanguageMask; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 5d60ccde7d..0f3cd0c3b5 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -630,6 +630,17 @@ INSTANTIATE_TEST_SUITE_P( "spv.WorkgroupMemoryExplicitLayout.std140.comp", "spv.WorkgroupMemoryExplicitLayout.std430.comp", "spv.WorkgroupMemoryExplicitLayout.scalar.comp", + + // SPV_EXT_mesh_shader + "spv.ext.meshShaderBuiltins.mesh", + "spv.ext.meshShaderRedeclBuiltins.mesh", + "spv.ext.meshShaderTaskMem.mesh", + "spv.ext.meshShaderUserDefined.mesh", + "spv.ext.meshTaskShader.task", + "spv.atomiAddEXT.error.mesh", + "spv.atomiAddEXT.task", + "spv.460.subgroupEXT.task", + "spv.460.subgroupEXT.mesh", })), FileNameAsCustomTestSuffix ); diff --git a/gtests/TestFixture.cpp b/gtests/TestFixture.cpp index ced6fcce6e..4c935f8850 100644 --- a/gtests/TestFixture.cpp +++ b/gtests/TestFixture.cpp @@ -73,9 +73,9 @@ EShLanguage GetShaderStage(const std::string& stage) } else if (stage == "rcall") { return EShLangCallable; } else if (stage == "task") { - return EShLangTaskNV; + return EShLangTask; } else if (stage == "mesh") { - return EShLangMeshNV; + return EShLangMesh; } else { assert(0 && "Unknown shader stage"); return EShLangCount; diff --git a/known_good.json b/known_good.json index 1a3202d035..2f965750d1 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "5e61ea2098220059e89523f1f47b0bcd8c33b89a" + "commit" : "4c456f7da67c5437a6fb7d4d20d78e2a5ae2acf2" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "b2a156e1c0434bc8c99aaebba1c7be98be7ac580" + "commit" : "87d5b782bec60822aa878941e6b13c0a9a954c9b" } ] } From 86bb449e64ead734d2adb9d7390aa35b1291ec0a Mon Sep 17 00:00:00 2001 From: ichordev <15670465+ichordev@users.noreply.github.com> Date: Sat, 3 Sep 2022 02:13:55 +1000 Subject: [PATCH 085/594] Fixed a small grammatical error --- glslang/Public/ShaderLang.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index e44339db53..814b8da37e 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -301,7 +301,7 @@ typedef struct { // // ShHandle held by but opaque to the driver. It is allocated, -// managed, and de-allocated by the compiler/linker. It's contents +// managed, and de-allocated by the compiler/linker. Its contents // are defined by and used by the compiler and linker. For example, // symbol table information and object code passed from the compiler // to the linker can be stored where ShHandle points. @@ -525,7 +525,7 @@ class TShader { // See the definitions of TEnvironment, EShSource, EShLanguage, // and EShClient for choices and more detail. // - // setEnvClient: The client that will be hosting the execution, and it's version. + // setEnvClient: The client that will be hosting the execution, and its version. // Note 'version' is not the version of the languages involved, but // the version of the client environment. // Use EShClientNone and version of 0 if there is no client, e.g. From 17e0a9a5634a494becf085bd0a2a828fb73e3bce Mon Sep 17 00:00:00 2001 From: sean <43609023+spnda@users.noreply.github.com> Date: Thu, 1 Sep 2022 21:23:34 +0200 Subject: [PATCH 086/594] Fix: Remove NV suffix from C interface --- SPIRV/CInterface/spirv_c_interface.cpp | 12 ++++---- glslang/Include/glslang_c_shader_types.h | 36 ++++++++++++++++-------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index 61e27e18ae..003a4a3f1c 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -59,17 +59,17 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) return EShLangFragment; case GLSLANG_STAGE_COMPUTE: return EShLangCompute; - case GLSLANG_STAGE_RAYGEN_NV: + case GLSLANG_STAGE_RAYGEN: return EShLangRayGen; - case GLSLANG_STAGE_INTERSECT_NV: + case GLSLANG_STAGE_INTERSECT: return EShLangIntersect; - case GLSLANG_STAGE_ANYHIT_NV: + case GLSLANG_STAGE_ANYHIT: return EShLangAnyHit; - case GLSLANG_STAGE_CLOSESTHIT_NV: + case GLSLANG_STAGE_CLOSESTHIT: return EShLangClosestHit; - case GLSLANG_STAGE_MISS_NV: + case GLSLANG_STAGE_MISS: return EShLangMiss; - case GLSLANG_STAGE_CALLABLE_NV: + case GLSLANG_STAGE_CALLABLE: return EShLangCallable; case GLSLANG_STAGE_TASK: return EShLangTask; diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index cd24b94723..9bc211496c 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -43,12 +43,18 @@ typedef enum { GLSLANG_STAGE_GEOMETRY, GLSLANG_STAGE_FRAGMENT, GLSLANG_STAGE_COMPUTE, - GLSLANG_STAGE_RAYGEN_NV, - GLSLANG_STAGE_INTERSECT_NV, - GLSLANG_STAGE_ANYHIT_NV, - GLSLANG_STAGE_CLOSESTHIT_NV, - GLSLANG_STAGE_MISS_NV, - GLSLANG_STAGE_CALLABLE_NV, + GLSLANG_STAGE_RAYGEN, + GLSLANG_STAGE_RAYGEN_NV = GLSLANG_STAGE_RAYGEN, + GLSLANG_STAGE_INTERSECT, + GLSLANG_STAGE_INTERSECT_NV = GLSLANG_STAGE_INTERSECT, + GLSLANG_STAGE_ANYHIT, + GLSLANG_STAGE_ANYHIT_NV = GLSLANG_STAGE_ANYHIT, + GLSLANG_STAGE_CLOSESTHIT, + GLSLANG_STAGE_CLOSESTHIT_NV = GLSLANG_STAGE_CLOSESTHIT, + GLSLANG_STAGE_MISS, + GLSLANG_STAGE_MISS_NV = GLSLANG_STAGE_MISS, + GLSLANG_STAGE_CALLABLE, + GLSLANG_STAGE_CALLABLE_NV = GLSLANG_STAGE_CALLABLE, GLSLANG_STAGE_TASK, GLSLANG_STAGE_TASK_NV = GLSLANG_STAGE_TASK, GLSLANG_STAGE_MESH, @@ -64,12 +70,18 @@ typedef enum { GLSLANG_STAGE_GEOMETRY_MASK = (1 << GLSLANG_STAGE_GEOMETRY), GLSLANG_STAGE_FRAGMENT_MASK = (1 << GLSLANG_STAGE_FRAGMENT), GLSLANG_STAGE_COMPUTE_MASK = (1 << GLSLANG_STAGE_COMPUTE), - GLSLANG_STAGE_RAYGEN_NV_MASK = (1 << GLSLANG_STAGE_RAYGEN_NV), - GLSLANG_STAGE_INTERSECT_NV_MASK = (1 << GLSLANG_STAGE_INTERSECT_NV), - GLSLANG_STAGE_ANYHIT_NV_MASK = (1 << GLSLANG_STAGE_ANYHIT_NV), - GLSLANG_STAGE_CLOSESTHIT_NV_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT_NV), - GLSLANG_STAGE_MISS_NV_MASK = (1 << GLSLANG_STAGE_MISS_NV), - GLSLANG_STAGE_CALLABLE_NV_MASK = (1 << GLSLANG_STAGE_CALLABLE_NV), + GLSLANG_STAGE_RAYGEN_MASK = (1 << GLSLANG_STAGE_RAYGEN), + GLSLANG_STAGE_RAYGEN_NV_MASK = GLSLANG_STAGE_RAYGEN_MASK, + GLSLANG_STAGE_INTERSECT_MASK = (1 << GLSLANG_STAGE_INTERSECT), + GLSLANG_STAGE_INTERSECT_NV_MASK = GLSLANG_STAGE_INTERSECT_MASK, + GLSLANG_STAGE_ANYHIT_MASK = (1 << GLSLANG_STAGE_ANYHIT), + GLSLANG_STAGE_ANYHIT_NV_MASK = GLSLANG_STAGE_ANYHIT_MASK, + GLSLANG_STAGE_CLOSESTHIT_MASK = (1 << GLSLANG_STAGE_CLOSESTHIT), + GLSLANG_STAGE_CLOSESTHIT_NV_MASK = GLSLANG_STAGE_CLOSESTHIT_MASK, + GLSLANG_STAGE_MISS_MASK = (1 << GLSLANG_STAGE_MISS), + GLSLANG_STAGE_MISS_NV_MASK = GLSLANG_STAGE_MISS_MASK, + GLSLANG_STAGE_CALLABLE_MASK = (1 << GLSLANG_STAGE_CALLABLE), + GLSLANG_STAGE_CALLABLE_NV_MASK = GLSLANG_STAGE_CALLABLE_MASK, GLSLANG_STAGE_TASK_MASK = (1 << GLSLANG_STAGE_TASK), GLSLANG_STAGE_TASK_NV_MASK = GLSLANG_STAGE_TASK_MASK, GLSLANG_STAGE_MESH_MASK = (1 << GLSLANG_STAGE_MESH), From c52b3d507525631817814f2bd989f9d03375e1dc Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Tue, 6 Sep 2022 23:57:18 -0700 Subject: [PATCH 087/594] Fix OpLine prepending OpFunction reports wrong file when #line is present --- SPIRV/GlslangToSpv.cpp | 4 +- Test/baseResults/hlsl.pp.line2.frag.out | 4 +- Test/baseResults/hlsl.pp.line4.frag.out | 2 +- Test/baseResults/spv.pp.line.frag.out | 227 ++++++++++++++---------- Test/spv.pp.line.frag | 14 +- 5 files changed, 154 insertions(+), 97 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index bcfc6e80af..a5e2e1e46e 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2846,7 +2846,9 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } if (options.generateDebugInfo) { const auto& loc = node->getLoc(); - currentFunction->setDebugLineInfo(builder.getSourceFile(), loc.line, loc.column); + const char* sourceFileName = loc.getFilename(); + spv::Id sourceFileId = sourceFileName ? builder.getStringId(sourceFileName) : builder.getSourceFile(); + currentFunction->setDebugLineInfo(sourceFileId, loc.line, loc.column); } } else { if (inEntryPoint) diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out index e831964627..e92d7e279d 100644 --- a/Test/baseResults/hlsl.pp.line2.frag.out +++ b/Test/baseResults/hlsl.pp.line2.frag.out @@ -129,7 +129,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 71(i.vTextureCoords): 70(ptr) Variable Input 74: TypePointer Output 11(fvec4) 75(@entryPointOutput.vColor): 74(ptr) Variable Output - Line 1 23 1 + Line 17 23 1 5(MainPs): 3 Function None 4 6: Label 69(i): 10(ptr) Variable Function @@ -145,7 +145,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Store 75(@entryPointOutput.vColor) 79 Return FunctionEnd - Line 1 23 1 + Line 17 23 1 15(@MainPs(struct-PS_INPUT-vf21;):12(PS_OUTPUT) Function None 13 14(i): 10(ptr) FunctionParameter 16: Label diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out index f318a21389..a9b9664efc 100644 --- a/Test/baseResults/hlsl.pp.line4.frag.out +++ b/Test/baseResults/hlsl.pp.line4.frag.out @@ -112,7 +112,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 70(i.vTextureCoords): 69(ptr) Variable Input 73: TypePointer Output 11(fvec4) 74(@entryPointOutput.vColor): 73(ptr) Variable Output - Line 1 25 1 + Line 17 25 1 5(MainPs): 3 Function None 4 NoLine 6: Label diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out index dcfa897b50..c103b7bb8b 100644 --- a/Test/baseResults/spv.pp.line.frag.out +++ b/Test/baseResults/spv.pp.line.frag.out @@ -1,18 +1,19 @@ spv.pp.line.frag -WARNING: spv.pp.line.frag:6: varying deprecated in version 130; may be removed in future release WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed in future release +WARNING: spv.pp.line.frag:8: varying deprecated in version 130; may be removed in future release // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 65 +// Id's are bound by 84 Capability Shader Capability Sampled1D 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 5 "main" 41 53 56 59 + EntryPoint Fragment 5 "main" 60 72 75 78 ExecutionMode 5 OriginUpperLeft 1: String "spv.pp.line.frag" + 13: String "header.h" Source GLSL 140 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 @@ -21,6 +22,7 @@ WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed i // OpModuleProcessed entry-point main #line 1 #version 140 +#extension GL_GOOGLE_cpp_style_line_directive : require uniform sampler1D texSampler1D; uniform sampler2D texSampler2D; @@ -30,9 +32,20 @@ varying vec4 u; in vec2 coords2D; +#line 0 "header.h" +float myAbs(float x) { + if (x > 0) { + return x; + } + else { + return -x; + } +} + +#line 22 "spv.pp.line.frag" void main() { - float blendscale = 1.789; + float blendscale = myAbs(1.789); float bias = 2.0; float coords1D = 1.789; vec4 color = vec4(0.0, 0.0, 0.0, 0.0); @@ -46,105 +59,135 @@ void main() gl_FragColor = mix(color, u, blend * blendscale); } " + SourceExtension "GL_GOOGLE_cpp_style_line_directive" Name 5 "main" - Name 9 "blendscale" - Name 11 "bias" - Name 13 "coords1D" - Name 16 "color" - Name 22 "texSampler1D" - Name 37 "texSampler2D" - Name 41 "coords2D" - Name 53 "gl_FragColor" - Name 56 "u" - Name 59 "blend" - Decorate 22(texSampler1D) DescriptorSet 0 - Decorate 22(texSampler1D) Binding 0 - Decorate 37(texSampler2D) DescriptorSet 0 - Decorate 37(texSampler2D) Binding 1 - Decorate 41(coords2D) Location 2 - Decorate 53(gl_FragColor) Location 0 - Decorate 56(u) Location 1 - Decorate 59(blend) Location 0 + Name 11 "myAbs(f1;" + Name 10 "x" + Name 27 "blendscale" + Name 29 "param" + Name 31 "bias" + Name 33 "coords1D" + Name 36 "color" + Name 41 "texSampler1D" + Name 56 "texSampler2D" + Name 60 "coords2D" + Name 72 "gl_FragColor" + Name 75 "u" + Name 78 "blend" + Decorate 41(texSampler1D) DescriptorSet 0 + Decorate 41(texSampler1D) Binding 0 + Decorate 56(texSampler2D) DescriptorSet 0 + Decorate 56(texSampler2D) Binding 1 + Decorate 60(coords2D) Location 2 + Decorate 72(gl_FragColor) Location 0 + Decorate 75(u) Location 1 + Decorate 78(blend) Location 0 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 8: TypePointer Function 7(float) - 10: 7(float) Constant 1071971828 - 12: 7(float) Constant 1073741824 - 14: TypeVector 7(float) 4 - 15: TypePointer Function 14(fvec4) - 17: 7(float) Constant 0 - 18: 14(fvec4) ConstantComposite 17 17 17 17 - 19: TypeImage 7(float) 1D sampled format:Unknown - 20: TypeSampledImage 19 - 21: TypePointer UniformConstant 20 -22(texSampler1D): 21(ptr) Variable UniformConstant - 34: TypeImage 7(float) 2D sampled format:Unknown - 35: TypeSampledImage 34 - 36: TypePointer UniformConstant 35 -37(texSampler2D): 36(ptr) Variable UniformConstant - 39: TypeVector 7(float) 2 - 40: TypePointer Input 39(fvec2) - 41(coords2D): 40(ptr) Variable Input - 52: TypePointer Output 14(fvec4) -53(gl_FragColor): 52(ptr) Variable Output - 55: TypePointer Input 14(fvec4) - 56(u): 55(ptr) Variable Input - 58: TypePointer Input 7(float) - 59(blend): 58(ptr) Variable Input - Line 1 11 11 + 9: TypeFunction 7(float) 8(ptr) + 15: 7(float) Constant 0 + 16: TypeBool + 28: 7(float) Constant 1071971828 + 32: 7(float) Constant 1073741824 + 34: TypeVector 7(float) 4 + 35: TypePointer Function 34(fvec4) + 37: 34(fvec4) ConstantComposite 15 15 15 15 + 38: TypeImage 7(float) 1D sampled format:Unknown + 39: TypeSampledImage 38 + 40: TypePointer UniformConstant 39 +41(texSampler1D): 40(ptr) Variable UniformConstant + 53: TypeImage 7(float) 2D sampled format:Unknown + 54: TypeSampledImage 53 + 55: TypePointer UniformConstant 54 +56(texSampler2D): 55(ptr) Variable UniformConstant + 58: TypeVector 7(float) 2 + 59: TypePointer Input 58(fvec2) + 60(coords2D): 59(ptr) Variable Input + 71: TypePointer Output 34(fvec4) +72(gl_FragColor): 71(ptr) Variable Output + 74: TypePointer Input 34(fvec4) + 75(u): 74(ptr) Variable Input + 77: TypePointer Input 7(float) + 78(blend): 77(ptr) Variable Input + Line 1 23 11 5(main): 3 Function None 4 6: Label - 9(blendscale): 8(ptr) Variable Function - 11(bias): 8(ptr) Variable Function - 13(coords1D): 8(ptr) Variable Function - 16(color): 15(ptr) Variable Function - Line 1 13 0 - Store 9(blendscale) 10 - Line 1 14 0 - Store 11(bias) 12 - Line 1 15 0 - Store 13(coords1D) 10 - Line 1 16 0 - Store 16(color) 18 + 27(blendscale): 8(ptr) Variable Function + 29(param): 8(ptr) Variable Function + 31(bias): 8(ptr) Variable Function + 33(coords1D): 8(ptr) Variable Function + 36(color): 35(ptr) Variable Function + Line 1 25 0 + Store 29(param) 28 + 30: 7(float) FunctionCall 11(myAbs(f1;) 29(param) + Store 27(blendscale) 30 + Line 1 26 0 + Store 31(bias) 32 + Line 1 27 0 + Store 33(coords1D) 28 + Line 1 28 0 + Store 36(color) 37 Line 1 54 0 - 23: 20 Load 22(texSampler1D) - 24: 7(float) Load 13(coords1D) - 25: 14(fvec4) ImageSampleImplicitLod 23 24 - 26: 14(fvec4) Load 16(color) - 27: 14(fvec4) FAdd 26 25 - Store 16(color) 27 + 42: 39 Load 41(texSampler1D) + 43: 7(float) Load 33(coords1D) + 44: 34(fvec4) ImageSampleImplicitLod 42 43 + 45: 34(fvec4) Load 36(color) + 46: 34(fvec4) FAdd 45 44 + Store 36(color) 46 Line 1 55 0 - 28: 20 Load 22(texSampler1D) - 29: 7(float) Load 13(coords1D) - 30: 7(float) Load 11(bias) - 31: 14(fvec4) ImageSampleImplicitLod 28 29 Bias 30 - 32: 14(fvec4) Load 16(color) - 33: 14(fvec4) FAdd 32 31 - Store 16(color) 33 + 47: 39 Load 41(texSampler1D) + 48: 7(float) Load 33(coords1D) + 49: 7(float) Load 31(bias) + 50: 34(fvec4) ImageSampleImplicitLod 47 48 Bias 49 + 51: 34(fvec4) Load 36(color) + 52: 34(fvec4) FAdd 51 50 + Store 36(color) 52 Line 1 103 0 - 38: 35 Load 37(texSampler2D) - 42: 39(fvec2) Load 41(coords2D) - 43: 14(fvec4) ImageSampleImplicitLod 38 42 - 44: 14(fvec4) Load 16(color) - 45: 14(fvec4) FAdd 44 43 - Store 16(color) 45 + 57: 54 Load 56(texSampler2D) + 61: 58(fvec2) Load 60(coords2D) + 62: 34(fvec4) ImageSampleImplicitLod 57 61 + 63: 34(fvec4) Load 36(color) + 64: 34(fvec4) FAdd 63 62 + Store 36(color) 64 Line 1 104 0 - 46: 35 Load 37(texSampler2D) - 47: 39(fvec2) Load 41(coords2D) - 48: 7(float) Load 11(bias) - 49: 14(fvec4) ImageSampleImplicitLod 46 47 Bias 48 - 50: 14(fvec4) Load 16(color) - 51: 14(fvec4) FAdd 50 49 - Store 16(color) 51 + 65: 54 Load 56(texSampler2D) + 66: 58(fvec2) Load 60(coords2D) + 67: 7(float) Load 31(bias) + 68: 34(fvec4) ImageSampleImplicitLod 65 66 Bias 67 + 69: 34(fvec4) Load 36(color) + 70: 34(fvec4) FAdd 69 68 + Store 36(color) 70 Line 1 106 0 - 54: 14(fvec4) Load 16(color) - 57: 14(fvec4) Load 56(u) - 60: 7(float) Load 59(blend) - 61: 7(float) Load 9(blendscale) - 62: 7(float) FMul 60 61 - 63: 14(fvec4) CompositeConstruct 62 62 62 62 - 64: 14(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 54 57 63 - Store 53(gl_FragColor) 64 + 73: 34(fvec4) Load 36(color) + 76: 34(fvec4) Load 75(u) + 79: 7(float) Load 78(blend) + 80: 7(float) Load 27(blendscale) + 81: 7(float) FMul 79 80 + 82: 34(fvec4) CompositeConstruct 81 81 81 81 + 83: 34(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 73 76 82 + Store 72(gl_FragColor) 83 Return FunctionEnd + Line 13 1 20 + 11(myAbs(f1;): 7(float) Function None 9 + 10(x): 8(ptr) FunctionParameter + 12: Label + Line 13 2 0 + 14: 7(float) Load 10(x) + 17: 16(bool) FOrdGreaterThan 14 15 + SelectionMerge 19 None + BranchConditional 17 18 22 + 18: Label + Line 13 3 0 + 20: 7(float) Load 10(x) + ReturnValue 20 + 22: Label + Line 13 6 0 + 23: 7(float) Load 10(x) + 24: 7(float) FNegate 23 + ReturnValue 24 + 19: Label + Unreachable + FunctionEnd diff --git a/Test/spv.pp.line.frag b/Test/spv.pp.line.frag index 464463c343..6f4702f059 100644 --- a/Test/spv.pp.line.frag +++ b/Test/spv.pp.line.frag @@ -1,4 +1,5 @@ #version 140 +#extension GL_GOOGLE_cpp_style_line_directive : require uniform sampler1D texSampler1D; uniform sampler2D texSampler2D; @@ -8,9 +9,20 @@ varying vec4 u; in vec2 coords2D; +#line 0 "header.h" +float myAbs(float x) { + if (x > 0) { + return x; + } + else { + return -x; + } +} + +#line 22 "spv.pp.line.frag" void main() { - float blendscale = 1.789; + float blendscale = myAbs(1.789); float bias = 2.0; float coords1D = 1.789; vec4 color = vec4(0.0, 0.0, 0.0, 0.0); From 71f5f219add626a996aa7025acd1157468364e8b Mon Sep 17 00:00:00 2001 From: Pankaj Mistry Date: Thu, 8 Sep 2022 18:55:53 -0700 Subject: [PATCH 088/594] Fix for issue #3020 Make OpEmitTMeshasksEXT a terminal instructions --- SPIRV/GlslangToSpv.cpp | 2 + SPIRV/SpvBuilder.h | 2 +- Test/baseResults/spv.460.subgroupEXT.task.out | 301 +++++++++--------- .../spv.ext.meshTaskShader.task.out | 9 +- known_good.json | 2 +- 5 files changed, 158 insertions(+), 158 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index bcfc6e80af..0c119b98e3 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -8559,6 +8559,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: if(taskPayloadID) operands.push_back(taskPayloadID); builder.createNoResultOp(spv::OpEmitMeshTasksEXT, operands); + // Make it a terminating instruction in the current block + builder.createAndSetNoPredecessorBlock("post-OpEmitMeshTasksEXT"); return 0; case glslang::EOpSetMeshOutputsEXT: builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 0d6bce631f..a75d139513 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -776,6 +776,7 @@ class Builder { void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock); void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, const std::vector& operands); + void createAndSetNoPredecessorBlock(const char*); // Sets to generate opcode for specialization constants. void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; } @@ -795,7 +796,6 @@ class Builder { void remapDynamicSwizzle(); void transferAccessChainSwizzle(bool dynamic); void simplifyAccessChainSwizzle(); - void createAndSetNoPredecessorBlock(const char*); void createSelectionMerge(Block* mergeBlock, unsigned int control); void dumpSourceInstructions(std::vector&) const; void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector&) const; diff --git a/Test/baseResults/spv.460.subgroupEXT.task.out b/Test/baseResults/spv.460.subgroupEXT.task.out index 9de82ce5c5..5f692435f2 100644 --- a/Test/baseResults/spv.460.subgroupEXT.task.out +++ b/Test/baseResults/spv.460.subgroupEXT.task.out @@ -1,7 +1,7 @@ spv.460.subgroupEXT.task // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 242 +// Id's are bound by 243 Capability StorageImageWriteWithoutFormat Capability GroupNonUniform @@ -16,7 +16,7 @@ spv.460.subgroupEXT.task Extension "SPV_EXT_mesh_shader" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 122 123 128 129 132 133 134 135 136 + EntryPoint TaskEXT 4 "main" 35 41 56 61 77 102 123 124 129 130 133 134 135 136 137 ExecutionMode 4 LocalSize 32 1 1 Source GLSL 460 SourceExtension "GL_EXT_mesh_shader" @@ -56,18 +56,18 @@ spv.460.subgroupEXT.task MemberName 100(Task) 0 "dummy" MemberName 100(Task) 1 "submesh" Name 102 "mytask" - Name 122 "gl_SubgroupSize" - Name 123 "gl_SubgroupInvocationID" - Name 128 "gl_NumSubgroups" - Name 129 "gl_SubgroupID" - Name 132 "gl_SubgroupEqMask" - Name 133 "gl_SubgroupGeMask" - Name 134 "gl_SubgroupGtMask" - Name 135 "gl_SubgroupLeMask" - Name 136 "gl_SubgroupLtMask" - Name 142 "ballot" - Name 180 "ballot" - Name 215 "ballot" + Name 123 "gl_SubgroupSize" + Name 124 "gl_SubgroupInvocationID" + Name 129 "gl_NumSubgroups" + Name 130 "gl_SubgroupID" + Name 133 "gl_SubgroupEqMask" + Name 134 "gl_SubgroupGeMask" + Name 135 "gl_SubgroupGtMask" + Name 136 "gl_SubgroupLeMask" + Name 137 "gl_SubgroupLtMask" + Name 143 "ballot" + Name 181 "ballot" + Name 216 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId MemberDecorate 59(block0) 0 Offset 0 @@ -77,18 +77,18 @@ spv.460.subgroupEXT.task Decorate 77(uni_image) DescriptorSet 0 Decorate 77(uni_image) Binding 0 Decorate 77(uni_image) NonReadable - Decorate 122(gl_SubgroupSize) RelaxedPrecision - Decorate 122(gl_SubgroupSize) BuiltIn SubgroupSize - Decorate 123(gl_SubgroupInvocationID) RelaxedPrecision - Decorate 123(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId - Decorate 128(gl_NumSubgroups) BuiltIn NumSubgroups - Decorate 129(gl_SubgroupID) BuiltIn SubgroupId - Decorate 132(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR - Decorate 133(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR - Decorate 134(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR - Decorate 135(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR - Decorate 136(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR - Decorate 241 BuiltIn WorkgroupSize + Decorate 123(gl_SubgroupSize) RelaxedPrecision + Decorate 123(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 124(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 124(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 129(gl_NumSubgroups) BuiltIn NumSubgroups + Decorate 130(gl_SubgroupID) BuiltIn SubgroupId + Decorate 133(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 134(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR + Decorate 135(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 136(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 137(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR + Decorate 242 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 @@ -140,28 +140,28 @@ spv.460.subgroupEXT.task 113: 8(float) Constant 1108082688 114: 97(fvec2) ConstantComposite 112 113 116: 62(int) Constant 2 -122(gl_SubgroupSize): 37(ptr) Variable Input -123(gl_SubgroupInvocationID): 37(ptr) Variable Input - 124: 30(int) Constant 3400 - 125: 30(int) Constant 72 - 126: 30(int) Constant 2056 -128(gl_NumSubgroups): 37(ptr) Variable Input -129(gl_SubgroupID): 37(ptr) Variable Input - 130: TypeVector 30(int) 4 - 131: TypePointer Input 130(ivec4) -132(gl_SubgroupEqMask): 131(ptr) Variable Input -133(gl_SubgroupGeMask): 131(ptr) Variable Input -134(gl_SubgroupGtMask): 131(ptr) Variable Input -135(gl_SubgroupLeMask): 131(ptr) Variable Input -136(gl_SubgroupLtMask): 131(ptr) Variable Input - 141: TypePointer Function 130(ivec4) - 143: 52(bool) ConstantFalse - 145: 130(ivec4) ConstantComposite 91 91 91 91 - 159: 52(bool) ConstantTrue - 216: 30(int) Constant 85 - 217: 130(ivec4) ConstantComposite 216 36 36 36 - 240: 30(int) Constant 32 - 241: 33(ivec3) ConstantComposite 240 91 91 +123(gl_SubgroupSize): 37(ptr) Variable Input +124(gl_SubgroupInvocationID): 37(ptr) Variable Input + 125: 30(int) Constant 3400 + 126: 30(int) Constant 72 + 127: 30(int) Constant 2056 +129(gl_NumSubgroups): 37(ptr) Variable Input +130(gl_SubgroupID): 37(ptr) Variable Input + 131: TypeVector 30(int) 4 + 132: TypePointer Input 131(ivec4) +133(gl_SubgroupEqMask): 132(ptr) Variable Input +134(gl_SubgroupGeMask): 132(ptr) Variable Input +135(gl_SubgroupGtMask): 132(ptr) Variable Input +136(gl_SubgroupLeMask): 132(ptr) Variable Input +137(gl_SubgroupLtMask): 132(ptr) Variable Input + 142: TypePointer Function 131(ivec4) + 144: 52(bool) ConstantFalse + 146: 131(ivec4) ConstantComposite 91 91 91 91 + 160: 52(bool) ConstantTrue + 217: 30(int) Constant 85 + 218: 131(ivec4) ConstantComposite 217 36 36 36 + 241: 30(int) Constant 32 + 242: 33(ivec3) ConstantComposite 241 91 91 4(main): 2 Function None 3 5: Label 32(iid): 31(ptr) Variable Function @@ -233,144 +233,143 @@ spv.460.subgroupEXT.task MemoryBarrier 91 95 ControlBarrier 96 96 95 EmitMeshTasksEXT 98 91 91 102(mytask) - Return FunctionEnd 6(basic_works(): 2 Function None 3 7: Label - ControlBarrier 98 98 124 - MemoryBarrier 98 124 + ControlBarrier 98 98 125 MemoryBarrier 98 125 MemoryBarrier 98 126 - 127: 52(bool) GroupNonUniformElect 98 + MemoryBarrier 98 127 + 128: 52(bool) GroupNonUniformElect 98 MemoryBarrier 98 95 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label - 142(ballot): 141(ptr) Variable Function - 137: 9(fvec4) Load 12(f4) - 138: 9(fvec4) GroupNonUniformBroadcast 98 137 36 - 139: 9(fvec4) Load 12(f4) - 140: 9(fvec4) GroupNonUniformBroadcastFirst 98 139 - 144: 130(ivec4) GroupNonUniformBallot 98 143 - Store 142(ballot) 144 - 146: 52(bool) GroupNonUniformInverseBallot 98 145 - 147: 130(ivec4) Load 142(ballot) - 148: 52(bool) GroupNonUniformBallotBitExtract 98 147 36 - 149: 130(ivec4) Load 142(ballot) - 150: 30(int) GroupNonUniformBallotBitCount 98 Reduce 149 - 151: 130(ivec4) Load 142(ballot) - 152: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 151 - 153: 130(ivec4) Load 142(ballot) - 154: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 153 - 155: 130(ivec4) Load 142(ballot) - 156: 30(int) GroupNonUniformBallotFindLSB 98 155 - 157: 130(ivec4) Load 142(ballot) - 158: 30(int) GroupNonUniformBallotFindMSB 98 157 + 143(ballot): 142(ptr) Variable Function + 138: 9(fvec4) Load 12(f4) + 139: 9(fvec4) GroupNonUniformBroadcast 98 138 36 + 140: 9(fvec4) Load 12(f4) + 141: 9(fvec4) GroupNonUniformBroadcastFirst 98 140 + 145: 131(ivec4) GroupNonUniformBallot 98 144 + Store 143(ballot) 145 + 147: 52(bool) GroupNonUniformInverseBallot 98 146 + 148: 131(ivec4) Load 143(ballot) + 149: 52(bool) GroupNonUniformBallotBitExtract 98 148 36 + 150: 131(ivec4) Load 143(ballot) + 151: 30(int) GroupNonUniformBallotBitCount 98 Reduce 150 + 152: 131(ivec4) Load 143(ballot) + 153: 30(int) GroupNonUniformBallotBitCount 98 InclusiveScan 152 + 154: 131(ivec4) Load 143(ballot) + 155: 30(int) GroupNonUniformBallotBitCount 98 ExclusiveScan 154 + 156: 131(ivec4) Load 143(ballot) + 157: 30(int) GroupNonUniformBallotFindLSB 98 156 + 158: 131(ivec4) Load 143(ballot) + 159: 30(int) GroupNonUniformBallotFindMSB 98 158 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label - 160: 52(bool) GroupNonUniformAll 98 159 - 161: 52(bool) GroupNonUniformAny 98 143 - 162: 9(fvec4) Load 15(f4) - 163: 52(bool) GroupNonUniformAllEqual 98 162 + 161: 52(bool) GroupNonUniformAll 98 160 + 162: 52(bool) GroupNonUniformAny 98 144 + 163: 9(fvec4) Load 15(f4) + 164: 52(bool) GroupNonUniformAllEqual 98 163 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label - 164: 9(fvec4) Load 18(f4) - 165: 9(fvec4) GroupNonUniformShuffle 98 164 36 - 166: 9(fvec4) Load 18(f4) - 167: 9(fvec4) GroupNonUniformShuffleXor 98 166 91 - 168: 9(fvec4) Load 18(f4) - 169: 9(fvec4) GroupNonUniformShuffleUp 98 168 91 - 170: 9(fvec4) Load 18(f4) - 171: 9(fvec4) GroupNonUniformShuffleDown 98 170 91 + 165: 9(fvec4) Load 18(f4) + 166: 9(fvec4) GroupNonUniformShuffle 98 165 36 + 167: 9(fvec4) Load 18(f4) + 168: 9(fvec4) GroupNonUniformShuffleXor 98 167 91 + 169: 9(fvec4) Load 18(f4) + 170: 9(fvec4) GroupNonUniformShuffleUp 98 169 91 + 171: 9(fvec4) Load 18(f4) + 172: 9(fvec4) GroupNonUniformShuffleDown 98 171 91 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label - 180(ballot): 141(ptr) Variable Function - 172: 9(fvec4) Load 21(f4) - 173: 9(fvec4) GroupNonUniformFAdd 98 Reduce 172 - 174: 9(fvec4) Load 21(f4) - 175: 9(fvec4) GroupNonUniformFMul 98 Reduce 174 - 176: 9(fvec4) Load 21(f4) - 177: 9(fvec4) GroupNonUniformFMin 98 Reduce 176 - 178: 9(fvec4) Load 21(f4) - 179: 9(fvec4) GroupNonUniformFMax 98 Reduce 178 - 181: 130(ivec4) Load 180(ballot) - 182: 130(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 181 - 183: 130(ivec4) Load 180(ballot) - 184: 130(ivec4) GroupNonUniformBitwiseOr 98 Reduce 183 - 185: 130(ivec4) Load 180(ballot) - 186: 130(ivec4) GroupNonUniformBitwiseXor 98 Reduce 185 - 187: 9(fvec4) Load 21(f4) - 188: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 187 - 189: 9(fvec4) Load 21(f4) - 190: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 189 - 191: 9(fvec4) Load 21(f4) - 192: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 191 - 193: 9(fvec4) Load 21(f4) - 194: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 193 - 195: 130(ivec4) Load 180(ballot) - 196: 130(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 195 - 197: 130(ivec4) Load 180(ballot) - 198: 130(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 197 - 199: 130(ivec4) Load 180(ballot) - 200: 130(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 199 - 201: 9(fvec4) Load 21(f4) - 202: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 201 - 203: 9(fvec4) Load 21(f4) - 204: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 203 - 205: 9(fvec4) Load 21(f4) - 206: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 205 - 207: 9(fvec4) Load 21(f4) - 208: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 207 - 209: 130(ivec4) Load 180(ballot) - 210: 130(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 209 - 211: 130(ivec4) Load 180(ballot) - 212: 130(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 211 - 213: 130(ivec4) Load 180(ballot) - 214: 130(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 213 + 181(ballot): 142(ptr) Variable Function + 173: 9(fvec4) Load 21(f4) + 174: 9(fvec4) GroupNonUniformFAdd 98 Reduce 173 + 175: 9(fvec4) Load 21(f4) + 176: 9(fvec4) GroupNonUniformFMul 98 Reduce 175 + 177: 9(fvec4) Load 21(f4) + 178: 9(fvec4) GroupNonUniformFMin 98 Reduce 177 + 179: 9(fvec4) Load 21(f4) + 180: 9(fvec4) GroupNonUniformFMax 98 Reduce 179 + 182: 131(ivec4) Load 181(ballot) + 183: 131(ivec4) GroupNonUniformBitwiseAnd 98 Reduce 182 + 184: 131(ivec4) Load 181(ballot) + 185: 131(ivec4) GroupNonUniformBitwiseOr 98 Reduce 184 + 186: 131(ivec4) Load 181(ballot) + 187: 131(ivec4) GroupNonUniformBitwiseXor 98 Reduce 186 + 188: 9(fvec4) Load 21(f4) + 189: 9(fvec4) GroupNonUniformFAdd 98 InclusiveScan 188 + 190: 9(fvec4) Load 21(f4) + 191: 9(fvec4) GroupNonUniformFMul 98 InclusiveScan 190 + 192: 9(fvec4) Load 21(f4) + 193: 9(fvec4) GroupNonUniformFMin 98 InclusiveScan 192 + 194: 9(fvec4) Load 21(f4) + 195: 9(fvec4) GroupNonUniformFMax 98 InclusiveScan 194 + 196: 131(ivec4) Load 181(ballot) + 197: 131(ivec4) GroupNonUniformBitwiseAnd 98 InclusiveScan 196 + 198: 131(ivec4) Load 181(ballot) + 199: 131(ivec4) GroupNonUniformBitwiseOr 98 InclusiveScan 198 + 200: 131(ivec4) Load 181(ballot) + 201: 131(ivec4) GroupNonUniformBitwiseXor 98 InclusiveScan 200 + 202: 9(fvec4) Load 21(f4) + 203: 9(fvec4) GroupNonUniformFAdd 98 ExclusiveScan 202 + 204: 9(fvec4) Load 21(f4) + 205: 9(fvec4) GroupNonUniformFMul 98 ExclusiveScan 204 + 206: 9(fvec4) Load 21(f4) + 207: 9(fvec4) GroupNonUniformFMin 98 ExclusiveScan 206 + 208: 9(fvec4) Load 21(f4) + 209: 9(fvec4) GroupNonUniformFMax 98 ExclusiveScan 208 + 210: 131(ivec4) Load 181(ballot) + 211: 131(ivec4) GroupNonUniformBitwiseAnd 98 ExclusiveScan 210 + 212: 131(ivec4) Load 181(ballot) + 213: 131(ivec4) GroupNonUniformBitwiseOr 98 ExclusiveScan 212 + 214: 131(ivec4) Load 181(ballot) + 215: 131(ivec4) GroupNonUniformBitwiseXor 98 ExclusiveScan 214 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label - 215(ballot): 141(ptr) Variable Function - Store 215(ballot) 217 - 218: 9(fvec4) Load 24(f4) - 219: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 218 96 - 220: 9(fvec4) Load 24(f4) - 221: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 220 96 - 222: 9(fvec4) Load 24(f4) - 223: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 222 96 - 224: 9(fvec4) Load 24(f4) - 225: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 224 96 - 226: 130(ivec4) Load 215(ballot) - 227: 130(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 226 96 - 228: 130(ivec4) Load 215(ballot) - 229: 130(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 228 96 - 230: 130(ivec4) Load 215(ballot) - 231: 130(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 230 96 + 216(ballot): 142(ptr) Variable Function + Store 216(ballot) 218 + 219: 9(fvec4) Load 24(f4) + 220: 9(fvec4) GroupNonUniformFAdd 98 ClusteredReduce 219 96 + 221: 9(fvec4) Load 24(f4) + 222: 9(fvec4) GroupNonUniformFMul 98 ClusteredReduce 221 96 + 223: 9(fvec4) Load 24(f4) + 224: 9(fvec4) GroupNonUniformFMin 98 ClusteredReduce 223 96 + 225: 9(fvec4) Load 24(f4) + 226: 9(fvec4) GroupNonUniformFMax 98 ClusteredReduce 225 96 + 227: 131(ivec4) Load 216(ballot) + 228: 131(ivec4) GroupNonUniformBitwiseAnd 98 ClusteredReduce 227 96 + 229: 131(ivec4) Load 216(ballot) + 230: 131(ivec4) GroupNonUniformBitwiseOr 98 ClusteredReduce 229 96 + 231: 131(ivec4) Load 216(ballot) + 232: 131(ivec4) GroupNonUniformBitwiseXor 98 ClusteredReduce 231 96 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label - 232: 9(fvec4) Load 27(f4) - 233: 9(fvec4) GroupNonUniformQuadBroadcast 98 232 36 - 234: 9(fvec4) Load 27(f4) - 235: 9(fvec4) GroupNonUniformQuadSwap 98 234 36 - 236: 9(fvec4) Load 27(f4) - 237: 9(fvec4) GroupNonUniformQuadSwap 98 236 91 - 238: 9(fvec4) Load 27(f4) - 239: 9(fvec4) GroupNonUniformQuadSwap 98 238 96 + 233: 9(fvec4) Load 27(f4) + 234: 9(fvec4) GroupNonUniformQuadBroadcast 98 233 36 + 235: 9(fvec4) Load 27(f4) + 236: 9(fvec4) GroupNonUniformQuadSwap 98 235 36 + 237: 9(fvec4) Load 27(f4) + 238: 9(fvec4) GroupNonUniformQuadSwap 98 237 91 + 239: 9(fvec4) Load 27(f4) + 240: 9(fvec4) GroupNonUniformQuadSwap 98 239 96 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.meshTaskShader.task.out b/Test/baseResults/spv.ext.meshTaskShader.task.out index dd6796e392..fb769f0457 100644 --- a/Test/baseResults/spv.ext.meshTaskShader.task.out +++ b/Test/baseResults/spv.ext.meshTaskShader.task.out @@ -1,7 +1,7 @@ spv.ext.meshTaskShader.task // Module Version 10400 // Generated by (magic number): 8000a -// Id's are bound by 102 +// Id's are bound by 103 Capability StorageImageWriteWithoutFormat Capability MeshShadingEXT @@ -36,7 +36,7 @@ spv.ext.meshTaskShader.task Decorate 55(uni_image) DescriptorSet 0 Decorate 55(uni_image) Binding 0 Decorate 55(uni_image) NonReadable - Decorate 101 BuiltIn WorkgroupSize + Decorate 102 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -86,8 +86,8 @@ spv.ext.meshTaskShader.task 91: 30(float) Constant 1108082688 92: 75(fvec2) ConstantComposite 90 91 94: 40(int) Constant 2 - 100: 6(int) Constant 32 - 101: 9(ivec3) ConstantComposite 100 69 69 + 101: 6(int) Constant 32 + 102: 9(ivec3) ConstantComposite 101 69 69 4(main): 2 Function None 3 5: Label 8(iid): 7(ptr) Variable Function @@ -159,5 +159,4 @@ spv.ext.meshTaskShader.task MemoryBarrier 69 73 ControlBarrier 74 74 73 EmitMeshTasksEXT 76 69 69 80(mytask) - Return FunctionEnd diff --git a/known_good.json b/known_good.json index 2f965750d1..1d8d371352 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "4c456f7da67c5437a6fb7d4d20d78e2a5ae2acf2" + "commit" : "59cf5b1346d8b029add67a919f801c29ea13cc49" }, { "name" : "spirv-tools/external/spirv-headers", From cd9b971a5e2b81b73ba6815e806f2ff1c9cadaf1 Mon Sep 17 00:00:00 2001 From: Pankaj Mistry Date: Fri, 9 Sep 2022 12:48:52 -0700 Subject: [PATCH 089/594] Make a utility function for termination instructions that take input operands. Use the new utility function for generating OpEmitMeshTasksEXT. --- SPIRV/GlslangToSpv.cpp | 7 +++---- SPIRV/SpvBuilder.cpp | 16 +++++++++++++--- SPIRV/SpvBuilder.h | 6 +++++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ec11c9f934..9af024f89b 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -8594,11 +8594,10 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: builder.createNoResultOp(spv::OpWritePackedPrimitiveIndices4x8NV, operands); return 0; case glslang::EOpEmitMeshTasksEXT: - if(taskPayloadID) + if (taskPayloadID) operands.push_back(taskPayloadID); - builder.createNoResultOp(spv::OpEmitMeshTasksEXT, operands); - // Make it a terminating instruction in the current block - builder.createAndSetNoPredecessorBlock("post-OpEmitMeshTasksEXT"); + // As per SPV_EXT_mesh_shader make it a terminating instruction in the current block + builder.makeStatementTerminator(spv::OpEmitMeshTasksEXT, operands, "post-OpEmitMeshTasksEXT"); return 0; case glslang::EOpSetMeshOutputsEXT: builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 54df992fb4..743eed8604 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2206,7 +2206,7 @@ void Builder::leaveFunction() // Clear function scope from debug scope stack if (emitNonSemanticShaderDebugInfo) - currentDebugScopeId.pop(); + currentDebugScopeId.pop(); emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; } @@ -2218,6 +2218,16 @@ void Builder::makeStatementTerminator(spv::Op opcode, const char *name) createAndSetNoPredecessorBlock(name); } +// Comments in header +void Builder::makeStatementTerminator(spv::Op opcode, const std::vector& operands, const char* name) +{ + // It's assumed that the terminator instruction is always of void return type + // However in future if there is a need for non void return type, new helper + // methods can be created. + createNoResultOp(opcode, operands); + createAndSetNoPredecessorBlock(name); +} + // Comments in header Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name, Id initializer, bool const compilerGenerated) @@ -2282,7 +2292,7 @@ spv::MemoryAccessMask Builder::sanitizeMemoryAccessForStorageClass(spv::MemoryAc case spv::StorageClassPhysicalStorageBufferEXT: break; default: - memoryAccess = spv::MemoryAccessMask(memoryAccess & + memoryAccess = spv::MemoryAccessMask(memoryAccess & ~(spv::MemoryAccessMakePointerAvailableKHRMask | spv::MemoryAccessMakePointerVisibleKHRMask | spv::MemoryAccessNonPrivatePointerKHRMask)); @@ -2767,7 +2777,7 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, texArgs[numArgs++] = parameters.granularity; if (parameters.coarse != NoResult) texArgs[numArgs++] = parameters.coarse; -#endif +#endif // // Set up the optional arguments diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index d843f7aaf2..f7fdc6ad84 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -436,6 +436,10 @@ class Builder { // discard, terminate-invocation, terminateRayEXT, or ignoreIntersectionEXT void makeStatementTerminator(spv::Op opcode, const char *name); + // Create block terminator instruction for statements that have input operands + // such as OpEmitMeshTasksEXT + void makeStatementTerminator(spv::Op opcode, const std::vector& operands, const char* name); + // Create a global or function local or IO variable. Id createVariable(Decoration precision, StorageClass storageClass, Id type, const char* name = nullptr, Id initializer = NoResult, bool const compilerGenerated = true); @@ -844,7 +848,6 @@ class Builder { void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock); void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, const std::vector& operands); - void createAndSetNoPredecessorBlock(const char*); // Sets to generate opcode for specialization constants. void setToSpecConstCodeGenMode() { generatingOpCodeForSpecConst = true; } @@ -864,6 +867,7 @@ class Builder { void remapDynamicSwizzle(); void transferAccessChainSwizzle(bool dynamic); void simplifyAccessChainSwizzle(); + void createAndSetNoPredecessorBlock(const char*); void createSelectionMerge(Block* mergeBlock, unsigned int control); void dumpSourceInstructions(std::vector&) const; void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector&) const; From 50ec8ae5844fc2411743c29c3d484dcfb0135dd0 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Tue, 13 Sep 2022 15:33:16 +0200 Subject: [PATCH 090/594] cmake: Use common installation directory for cmake support files. At least on openSUSE, the usual installation location for cmake support files is ${MAKE_INSTALL_LIBDIR}/cmake/ $ find /usr/lib64 -name '*.cmake' | grep /cmake/ | wc -l 834 $ find /usr/lib64 -name '*.cmake' | grep -v /cmake/ | wc -l 8 which is also used by glslang with these changes. --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b7fe3d7752..b581c842a7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -375,13 +375,13 @@ if(ENABLE_GLSLANG_INSTALL) include("@PACKAGE_PATH_EXPORT_TARGETS@") ]=]) - set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake") + set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake") configure_package_config_file( "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" PATH_VARS PATH_EXPORT_TARGETS - INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME} + INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" @@ -392,7 +392,7 @@ if(ENABLE_GLSLANG_INSTALL) install( EXPORT glslang-targets NAMESPACE "glslang::" - DESTINATION "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) install( @@ -400,6 +400,6 @@ if(ENABLE_GLSLANG_INSTALL) "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" "${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" DESTINATION - "${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}" + "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) endif() \ No newline at end of file From 7cd519511c32d7e86d901c7ed231cb84c652d18d Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Mon, 12 Sep 2022 10:18:51 +0200 Subject: [PATCH 091/594] cmake: Do not install static libraries in shared build mode. The glslang cmake build system installs static libraries in addition to the dynamic glslang library, which are required when used in a package that uses glslang when calling find_package(). Distributions such as openSUSE (and perhaps others) use a "shared only" strategy, which conflicts with the current state of the glslang build system. The static libraries mentioned are already all included in glslang and thus not needed. With this commit, these will no longer install the associated cmake support files when glslang is built shared. --- OGLCompilersDLL/CMakeLists.txt | 4 +-- glslang/CMakeLists.txt | 42 +++++++++++++------------ glslang/OSDependent/Unix/CMakeLists.txt | 2 +- 3 files changed, 25 insertions(+), 23 deletions(-) diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index 841b3e2c6b..b44cbc73a5 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -41,7 +41,7 @@ if(WIN32) source_group("Source" FILES ${SOURCES}) endif(WIN32) -if(ENABLE_GLSLANG_INSTALL) +if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) install(TARGETS OGLCompiler EXPORT glslang-targets) # Backward compatibility @@ -56,4 +56,4 @@ if(ENABLE_GLSLANG_INSTALL) ") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif(ENABLE_GLSLANG_INSTALL) +endif() diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index f63e8fc328..72e82b4821 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -201,26 +201,28 @@ endif() ################################################################################ if(ENABLE_GLSLANG_INSTALL) install(TARGETS glslang EXPORT glslang-targets) - install(TARGETS MachineIndependent EXPORT glslang-targets) - install(TARGETS GenericCodeGen EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" " - message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::glslang) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - if(${BUILD_SHARED_LIBS}) - add_library(glslang ALIAS glslang::glslang) - else() - add_library(glslang ALIAS glslang::glslang) - add_library(MachineIndependent ALIAS glslang::MachineIndependent) - add_library(GenericCodeGen ALIAS glslang::GenericCodeGen) - endif() - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + if(NOT BUILD_SHARED_LIBS) + install(TARGETS MachineIndependent EXPORT glslang-targets) + install(TARGETS GenericCodeGen EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" " + message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::glslang) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + if(${BUILD_SHARED_LIBS}) + add_library(glslang ALIAS glslang::glslang) + else() + add_library(glslang ALIAS glslang::glslang) + add_library(MachineIndependent ALIAS glslang::MachineIndependent) + add_library(GenericCodeGen ALIAS glslang::GenericCodeGen) + endif() + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif() set(ALL_HEADERS ${GLSLANG_HEADERS} diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index ec1eda4a37..16eb939b98 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -52,7 +52,7 @@ else() target_link_libraries(OSDependent Threads::Threads) endif() -if(ENABLE_GLSLANG_INSTALL) +if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) install(TARGETS OSDependent EXPORT glslang-targets) # Backward compatibility From 7f7831c67b58bc250428d252685c62281640710f Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Fri, 16 Sep 2022 17:53:08 -0400 Subject: [PATCH 092/594] further updates to 67384dd18b1715 since we are changing the type before the visitBinary now, we need to be comparing against the new type. Previous test cases worked since the 'unitType' was a shallow copy and ended up getting updated in some cases to match the new type, but not all. --- glslang/MachineIndependent/linkValidate.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index e8ef5aefd1..acc512fd4f 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -638,18 +638,18 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl class TMergeBlockTraverser : public TIntermTraverser { public: TMergeBlockTraverser(const TIntermSymbol* newSym) - : newSymbol(newSym), unitType(nullptr), unit(nullptr), memberIndexUpdates(nullptr) + : newSymbol(newSym), newType(nullptr), unit(nullptr), memberIndexUpdates(nullptr) { } TMergeBlockTraverser(const TIntermSymbol* newSym, const glslang::TType* unitType, glslang::TIntermediate* unit, const std::map* memberIdxUpdates) - : TIntermTraverser(false, true), newSymbol(newSym), unitType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) + : TIntermTraverser(false, true), newSymbol(newSym), newType(unitType), unit(unit), memberIndexUpdates(memberIdxUpdates) { } virtual ~TMergeBlockTraverser() {} const TIntermSymbol* newSymbol; - const glslang::TType* unitType; // copy of original type + const glslang::TType* newType; // shallow copy of the new type glslang::TIntermediate* unit; // intermediate that is being updated const std::map* memberIndexUpdates; @@ -665,10 +665,10 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl virtual bool visitBinary(TVisit, glslang::TIntermBinary* node) { - if (!unit || !unitType || !memberIndexUpdates || memberIndexUpdates->empty()) + if (!unit || !newType || !memberIndexUpdates || memberIndexUpdates->empty()) return true; - if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == *unitType) { + if (node->getOp() == EOpIndexDirectStruct && node->getLeft()->getType() == *newType) { // this is a dereference to a member of the block since the // member list changed, need to update this to point to the // right index @@ -696,9 +696,9 @@ void TIntermediate::mergeBlockDefinitions(TInfoSink& infoSink, TIntermSymbol* bl // The 'unit' intermediate needs the block structures update, but also structure entry indices // may have changed from the old block to the new one that it was merged into, so update those // in 'visitBinary' - TType unitType; - unitType.shallowCopy(unitBlock->getType()); - TMergeBlockTraverser unitFinalLinkTraverser(block, &unitType, unit, &memberIndexUpdates); + TType newType; + newType.shallowCopy(block->getType()); + TMergeBlockTraverser unitFinalLinkTraverser(block, &newType, unit, &memberIndexUpdates); unit->getTreeRoot()->traverse(&unitFinalLinkTraverser); // update the member list From d4865f0b68750ab38aac267e9af363ea33e64da7 Mon Sep 17 00:00:00 2001 From: Ricardo Garcia Date: Wed, 21 Sep 2022 10:04:50 +0200 Subject: [PATCH 093/594] Make gl_SubGroupARB a flat int in Vulkan gl_SubGroupARB was being correctly declared as an Input variable in Vulkan but it was missing the Flat decoration, which made spirv-val emit the VUID-StandaloneSpirv-Flat-04744 validation error with shaders using that built-in. --- Test/baseResults/spv.subgroupSizeARB.frag.out | 34 ++++++++++++++ Test/spv.subgroupSizeARB.frag | 10 ++++ glslang/MachineIndependent/Initialize.cpp | 47 ++++++++++++++++--- gtests/Spv.FromFile.cpp | 1 + 4 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 Test/baseResults/spv.subgroupSizeARB.frag.out create mode 100644 Test/spv.subgroupSizeARB.frag diff --git a/Test/baseResults/spv.subgroupSizeARB.frag.out b/Test/baseResults/spv.subgroupSizeARB.frag.out new file mode 100644 index 0000000000..7ce781837f --- /dev/null +++ b/Test/baseResults/spv.subgroupSizeARB.frag.out @@ -0,0 +1,34 @@ +spv.subgroupSizeARB.frag +// Module Version 10000 +// Generated by (magic number): 8000a +// Id's are bound by 12 + + Capability Shader + Capability SubgroupBallotKHR + Extension "SPV_KHR_shader_ballot" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 10 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_ARB_shader_ballot" + SourceExtension "GL_KHR_shader_subgroup_basic" + Name 4 "main" + Name 8 "result" + Name 10 "gl_SubGroupSizeARB" + Decorate 8(result) Location 0 + Decorate 10(gl_SubGroupSizeARB) Flat + Decorate 10(gl_SubGroupSizeARB) BuiltIn SubgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Output 6(int) + 8(result): 7(ptr) Variable Output + 9: TypePointer Input 6(int) +10(gl_SubGroupSizeARB): 9(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 11: 6(int) Load 10(gl_SubGroupSizeARB) + Store 8(result) 11 + Return + FunctionEnd diff --git a/Test/spv.subgroupSizeARB.frag b/Test/spv.subgroupSizeARB.frag new file mode 100644 index 0000000000..45a1701db1 --- /dev/null +++ b/Test/spv.subgroupSizeARB.frag @@ -0,0 +1,10 @@ +#version 450 +#extension GL_ARB_shader_ballot : enable +#extension GL_KHR_shader_subgroup_basic : enable + +layout(location = 0) out uint result; + +void main (void) +{ + result = gl_SubGroupSizeARB; +} diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 35681a5f55..31b448adcd 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -7653,6 +7653,23 @@ static void SpecialQualifier(const char* name, TStorageQualifier qualifier, TBui symQualifier.builtIn = builtIn; } +// +// Modify the symbol's flat decoration. +// +// Safe to call even if name is not present. +// +// Originally written to transform gl_SubGroupSizeARB from uniform to fragment input in Vulkan. +// +static void ModifyFlatDecoration(const char* name, bool flat, TSymbolTable& symbolTable) +{ + TSymbol* symbol = symbolTable.find(name); + if (symbol == nullptr) + return; + + TQualifier& symQualifier = symbol->getWritableType().getQualifier(); + symQualifier.flat = flat; +} + // // To tag built-in variables with their TBuiltInVariable enum. Use this when the // normal declaration text already gets the qualifier right, and all that's needed @@ -8036,9 +8053,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0) { // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + if (language == EShLangFragment) + ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable); + } else BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); } @@ -8470,9 +8490,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0) { // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + if (language == EShLangFragment) + ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable); + } else BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); } @@ -8687,9 +8710,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0) { // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + if (language == EShLangFragment) + ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable); + } else BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); } @@ -8877,9 +8903,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0) { // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + if (language == EShLangFragment) + ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable); + } else BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); @@ -9075,9 +9104,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0) { // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + if (language == EShLangFragment) + ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable); + } else BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); } @@ -9202,9 +9234,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupLeMaskARB", EbvSubGroupLeMask, symbolTable); BuiltInVariable("gl_SubGroupLtMaskARB", EbvSubGroupLtMask, symbolTable); - if (spvVersion.vulkan > 0) + if (spvVersion.vulkan > 0) { // Treat "gl_SubGroupSizeARB" as shader input instead of uniform for Vulkan SpecialQualifier("gl_SubGroupSizeARB", EvqVaryingIn, EbvSubGroupSize, symbolTable); + if (language == EShLangFragment) + ModifyFlatDecoration("gl_SubGroupSizeARB", true, symbolTable); + } else BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); } diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ed0f5cada5..93e364d96b 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -480,6 +480,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.storageBuffer.vert", "spv.terminate.frag", "spv.subgroupUniformControlFlow.vert", + "spv.subgroupSizeARB.frag", "spv.precise.tese", "spv.precise.tesc", "spv.viewportindex.tese", From ee442785ddb0678906fe05037798818d988a6505 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Fri, 23 Sep 2022 09:17:44 -0600 Subject: [PATCH 094/594] Use DebugDeclare for local variables Previously we had decided to issue DebugValue directly in glslang. However, this was incorrect and causing issues with RenderDoc. --- SPIRV/SpvBuilder.cpp | 25 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 1498 +++++++++--------- Test/baseResults/spv.debuginfo.glsl.frag.out | 1494 +++++++++-------- Test/baseResults/spv.debuginfo.glsl.geom.out | 147 +- Test/baseResults/spv.debuginfo.glsl.tesc.out | 993 ++++++------ Test/baseResults/spv.debuginfo.glsl.tese.out | 358 ++--- Test/baseResults/spv.debuginfo.glsl.vert.out | 711 +++++---- Test/baseResults/spv.debuginfo.hlsl.comp.out | 1498 +++++++++--------- Test/baseResults/spv.debuginfo.hlsl.frag.out | 1416 ++++++++--------- Test/baseResults/spv.debuginfo.hlsl.geom.out | 245 ++- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 1125 +++++++------ Test/baseResults/spv.debuginfo.hlsl.tese.out | 260 +-- Test/baseResults/spv.debuginfo.hlsl.vert.out | 812 +++++----- 13 files changed, 5235 insertions(+), 5347 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 743eed8604..7c5ea874ba 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1146,19 +1146,6 @@ Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable return inst->getResultId(); } -Id Builder::makeDebugValue(Id const debugLocalVariable, Id const value) -{ - Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); - inst->addIdOperand(nonSemanticShaderDebugInfo); - inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugValue); - inst->addIdOperand(debugLocalVariable); // debug local variable id - inst->addIdOperand(value); // value id - inst->addIdOperand(makeDebugExpression()); // expression id - buildPoint->addInstruction(std::unique_ptr(inst)); - - return inst->getResultId(); -} - #ifndef GLSLANG_WEB Id Builder::makeAccelerationStructureType() { @@ -2248,8 +2235,7 @@ Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id t auto const debugLocalVariableId = createDebugLocalVariable(debugId[type], name); debugId[inst->getResultId()] = debugLocalVariableId; - // TODO: Remove? - // makeDebugDeclare(debugLocalVariableId, inst->getResultId()); + makeDebugDeclare(debugLocalVariableId, inst->getResultId()); } break; @@ -2322,15 +2308,6 @@ void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAcce } buildPoint->addInstruction(std::unique_ptr(store)); - - if (emitNonSemanticShaderDebugInfo && !isGlobalVariable(lValue)) - { - if(debugId.find(lValue) != debugId.end()) - { - auto const debugLocalVariableId = debugId[lValue]; - makeDebugValue(debugLocalVariableId, rValue); - } - } } // Comments in header diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 0b5e9ba2d1..aaef897bcd 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -2,14 +2,14 @@ spv.debuginfo.glsl.comp Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 839 +// Id's are bound by 817 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 13 "main" 117 + EntryPoint GLCompute 13 "main" 118 ExecutionMode 13 LocalSize 10 10 1 8: String "uint" 14: String "main" @@ -27,7 +27,7 @@ Validation failed 90: String "UBO" 95: String "params" 114: String "id" - 119: String "gl_GlobalInvocationID" + 120: String "gl_GlobalInvocationID" 125: String "index" 147: String "bool" 155: String "normal" @@ -40,14 +40,14 @@ Validation failed 213: String "force" 225: String "pos" 234: String "vel" - 496: String "f" - 540: String "sphereDist" - 584: String "calculateNormals" - 587: String "PushConsts" - 592: String "pushConsts" - 619: String "a" - 631: String "b" - 647: String "c" + 487: String "f" + 531: String "sphereDist" + 575: String "calculateNormals" + 578: String "PushConsts" + 583: String "pushConsts" + 610: String "a" + 622: String "b" + 638: String "c" Name 13 "main" Name 35 "springForce(vf3;vf3;f1;" Name 32 "p0" @@ -68,7 +68,7 @@ Validation failed MemberName 69(UBO) 10 "particleCount" Name 93 "params" Name 112 "id" - Name 117 "gl_GlobalInvocationID" + Name 118 "gl_GlobalInvocationID" Name 123 "index" Name 153 "Particle" MemberName 153(Particle) 0 "pos" @@ -88,36 +88,36 @@ Validation failed Name 249 "param" Name 253 "param" Name 255 "param" - Name 274 "param" - Name 278 "param" - Name 280 "param" - Name 303 "param" + Name 273 "param" + Name 277 "param" + Name 279 "param" + Name 301 "param" + Name 305 "param" Name 307 "param" - Name 309 "param" - Name 327 "param" - Name 331 "param" - Name 333 "param" + Name 324 "param" + Name 328 "param" + Name 330 "param" + Name 360 "param" Name 364 "param" - Name 368 "param" - Name 370 "param" - Name 396 "param" - Name 400 "param" - Name 402 "param" + Name 366 "param" + Name 391 "param" + Name 395 "param" + Name 397 "param" + Name 430 "param" + Name 434 "param" Name 436 "param" - Name 440 "param" - Name 442 "param" - Name 472 "param" - Name 476 "param" - Name 478 "param" - Name 494 "f" - Name 538 "sphereDist" - Name 582 "PushConsts" - MemberName 582(PushConsts) 0 "calculateNormals" - Name 590 "pushConsts" - Name 600 "normal" - Name 617 "a" - Name 629 "b" - Name 645 "c" + Name 465 "param" + Name 469 "param" + Name 471 "param" + Name 485 "f" + Name 529 "sphereDist" + Name 573 "PushConsts" + MemberName 573(PushConsts) 0 "calculateNormals" + Name 581 "pushConsts" + Name 591 "normal" + Name 608 "a" + Name 620 "b" + Name 636 "c" MemberDecorate 69(UBO) 0 Offset 0 MemberDecorate 69(UBO) 1 Offset 4 MemberDecorate 69(UBO) 2 Offset 8 @@ -132,7 +132,7 @@ Validation failed Decorate 69(UBO) Block Decorate 93(params) DescriptorSet 0 Decorate 93(params) Binding 2 - Decorate 117(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + Decorate 118(gl_GlobalInvocationID) BuiltIn GlobalInvocationId MemberDecorate 153(Particle) 0 Offset 0 MemberDecorate 153(Particle) 1 Offset 16 MemberDecorate 153(Particle) 2 Offset 32 @@ -148,9 +148,9 @@ Validation failed Decorate 189(ParticleOut) BufferBlock Decorate 197 DescriptorSet 0 Decorate 197 Binding 1 - MemberDecorate 582(PushConsts) 0 Offset 0 - Decorate 582(PushConsts) Block - Decorate 838 BuiltIn WorkgroupSize + MemberDecorate 573(PushConsts) 0 Offset 0 + Decorate 573(PushConsts) Block + Decorate 816 BuiltIn WorkgroupSize 3: TypeVoid 4: TypeFunction 3 6: TypeInt 32 0 @@ -216,14 +216,14 @@ Validation failed 111: TypePointer Function 109(ivec3) 115: 6(int) Constant 74 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 114 110 16 115 11 15 20 - 116: TypePointer Input 109(ivec3) -117(gl_GlobalInvocationID): 116(ptr) Variable Input - 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 119 110 16 115 11 18 119 117(gl_GlobalInvocationID) 73 + 117: TypePointer Input 109(ivec3) +118(gl_GlobalInvocationID): 117(ptr) Variable Input + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 120 110 16 115 11 18 120 118(gl_GlobalInvocationID) 73 122: TypePointer Function 6(int) 126: 6(int) Constant 76 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 7 16 126 11 15 20 - 129: 64(int) Constant 10 - 130: TypePointer Uniform 64(int) + 130: 64(int) Constant 10 + 131: TypePointer Uniform 64(int) 146: TypeBool 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 153(Particle): TypeStruct 62(fvec4) 62(fvec4) 62(fvec4) 62(fvec4) 23(float) @@ -265,62 +265,62 @@ Validation failed 208: 62(fvec4) ConstantComposite 207 207 207 207 214: 6(int) Constant 88 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 213 27 16 214 11 15 20 - 215: 64(int) Constant 9 + 216: 64(int) Constant 9 226: 6(int) Constant 90 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 225 27 16 226 11 15 20 235: 6(int) Constant 91 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 27 16 235 11 15 20 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 302: 64(int) Constant 5 - 318: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 352: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 363: 64(int) Constant 6 - 379: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 415: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 425: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 455: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 461: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 485: 64(int) Constant 3 - 497: 6(int) Constant 130 - 495: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 496 27 16 497 11 15 20 - 511: 23(float) Constant 1056964608 - 541: 6(int) Constant 135 - 539: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 540 27 16 541 11 15 20 - 546: 64(int) Constant 8 - 554: 64(int) Constant 7 - 557: 23(float) Constant 1008981770 - 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 582(PushConsts): TypeStruct 6(int) - 585: 6(int) Constant 63 - 583: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 584 7 16 585 84 11 11 12 - 588: 6(int) Constant 144 - 586: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 587 19 16 588 11 18 587 11 12 583 - 589: TypePointer PushConstant 582(PushConsts) - 590(pushConsts): 589(ptr) Variable PushConstant - 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 592 586 16 588 11 18 592 590(pushConsts) 73 - 593: TypePointer PushConstant 6(int) - 596: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 602: 6(int) Constant 145 - 601: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 27 16 602 11 15 20 - 603: 26(fvec3) ConstantComposite 207 207 207 - 607: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 613: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 620: 6(int) Constant 149 - 618: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 619 27 16 620 11 15 20 - 632: 6(int) Constant 150 - 630: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 631 27 16 632 11 15 20 - 648: 6(int) Constant 151 - 646: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 647 27 16 648 11 15 20 - 676: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 727: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 733: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 784: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 837: 6(int) Constant 10 - 838: 109(ivec3) ConstantComposite 837 837 19 + 267: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 300: 64(int) Constant 5 + 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 359: 64(int) Constant 6 + 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 477: 64(int) Constant 3 + 488: 6(int) Constant 130 + 486: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 487 27 16 488 11 15 20 + 502: 23(float) Constant 1056964608 + 532: 6(int) Constant 135 + 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 531 27 16 532 11 15 20 + 538: 64(int) Constant 8 + 545: 64(int) Constant 7 + 548: 23(float) Constant 1008981770 + 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 573(PushConsts): TypeStruct 6(int) + 576: 6(int) Constant 63 + 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 575 7 16 576 84 11 11 12 + 579: 6(int) Constant 144 + 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 578 19 16 579 11 18 578 11 12 574 + 580: TypePointer PushConstant 573(PushConsts) + 581(pushConsts): 580(ptr) Variable PushConstant + 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 583 577 16 579 11 18 583 581(pushConsts) 73 + 584: TypePointer PushConstant 6(int) + 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 593: 6(int) Constant 145 + 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 27 16 593 11 15 20 + 595: 26(fvec3) ConstantComposite 207 207 207 + 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 611: 6(int) Constant 149 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 27 16 611 11 15 20 + 623: 6(int) Constant 150 + 621: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 622 27 16 623 11 15 20 + 639: 6(int) Constant 151 + 637: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 638 27 16 639 11 15 20 + 666: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 713: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 719: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 766: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 815: 6(int) Constant 10 + 816: 109(ivec3) ConstantComposite 815 815 19 13(main): 3 Function None 4 22: Label 112(id): 111(ptr) Variable Function @@ -331,52 +331,52 @@ Validation failed 249(param): 28(ptr) Variable Function 253(param): 28(ptr) Variable Function 255(param): 29(ptr) Variable Function - 274(param): 28(ptr) Variable Function - 278(param): 28(ptr) Variable Function - 280(param): 29(ptr) Variable Function - 303(param): 28(ptr) Variable Function - 307(param): 28(ptr) Variable Function - 309(param): 29(ptr) Variable Function - 327(param): 28(ptr) Variable Function - 331(param): 28(ptr) Variable Function - 333(param): 29(ptr) Variable Function + 273(param): 28(ptr) Variable Function + 277(param): 28(ptr) Variable Function + 279(param): 29(ptr) Variable Function + 301(param): 28(ptr) Variable Function + 305(param): 28(ptr) Variable Function + 307(param): 29(ptr) Variable Function + 324(param): 28(ptr) Variable Function + 328(param): 28(ptr) Variable Function + 330(param): 29(ptr) Variable Function + 360(param): 28(ptr) Variable Function 364(param): 28(ptr) Variable Function - 368(param): 28(ptr) Variable Function - 370(param): 29(ptr) Variable Function - 396(param): 28(ptr) Variable Function - 400(param): 28(ptr) Variable Function - 402(param): 29(ptr) Variable Function - 436(param): 28(ptr) Variable Function - 440(param): 28(ptr) Variable Function - 442(param): 29(ptr) Variable Function - 472(param): 28(ptr) Variable Function - 476(param): 28(ptr) Variable Function - 478(param): 29(ptr) Variable Function - 494(f): 28(ptr) Variable Function - 538(sphereDist): 28(ptr) Variable Function - 600(normal): 28(ptr) Variable Function - 617(a): 28(ptr) Variable Function - 629(b): 28(ptr) Variable Function - 645(c): 28(ptr) Variable Function + 366(param): 29(ptr) Variable Function + 391(param): 28(ptr) Variable Function + 395(param): 28(ptr) Variable Function + 397(param): 29(ptr) Variable Function + 430(param): 28(ptr) Variable Function + 434(param): 28(ptr) Variable Function + 436(param): 29(ptr) Variable Function + 465(param): 28(ptr) Variable Function + 469(param): 28(ptr) Variable Function + 471(param): 29(ptr) Variable Function + 485(f): 28(ptr) Variable Function + 529(sphereDist): 28(ptr) Variable Function + 591(normal): 28(ptr) Variable Function + 608(a): 28(ptr) Variable Function + 620(b): 28(ptr) Variable Function + 636(c): 28(ptr) Variable Function 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 120: 109(ivec3) Load 117(gl_GlobalInvocationID) - Store 112(id) 120 - 121: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 113 120 44 - 127: 122(ptr) AccessChain 112(id) 19 - 128: 6(int) Load 127 - 131: 130(ptr) AccessChain 93(params) 129 11 - 132: 64(int) Load 131 - 133: 6(int) Bitcast 132 - 134: 6(int) IMul 128 133 - 135: 122(ptr) AccessChain 112(id) 11 - 136: 6(int) Load 135 - 137: 6(int) IAdd 134 136 - Store 123(index) 137 - 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 124 137 44 + 116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 113 112(id) 44 + 121: 109(ivec3) Load 118(gl_GlobalInvocationID) + Store 112(id) 121 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 124 123(index) 44 + 128: 122(ptr) AccessChain 112(id) 19 + 129: 6(int) Load 128 + 132: 131(ptr) AccessChain 93(params) 130 11 + 133: 64(int) Load 132 + 134: 6(int) Bitcast 133 + 135: 6(int) IMul 129 134 + 136: 122(ptr) AccessChain 112(id) 11 + 137: 6(int) Load 136 + 138: 6(int) IAdd 135 137 + Store 123(index) 138 139: 6(int) Load 123(index) - 140: 130(ptr) AccessChain 93(params) 129 11 + 140: 131(ptr) AccessChain 93(params) 130 11 141: 64(int) Load 140 - 142: 130(ptr) AccessChain 93(params) 129 19 + 142: 131(ptr) AccessChain 93(params) 130 19 143: 64(int) Load 142 144: 64(int) IMul 141 143 145: 6(int) Bitcast 144 @@ -404,26 +404,26 @@ Validation failed Store 209 208 Return 186: Label - 216: 201(ptr) AccessChain 93(params) 215 - 217: 62(fvec4) Load 216 - 218: 26(fvec3) VectorShuffle 217 217 0 1 2 - 219: 97(ptr) AccessChain 93(params) 206 - 220: 23(float) Load 219 - 221: 26(fvec3) VectorTimesScalar 218 220 - Store 211(force) 221 - 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 221 44 - 227: 6(int) Load 123(index) - 228: 201(ptr) AccessChain 175 177 227 177 - 229: 62(fvec4) Load 228 - 230: 26(fvec3) VectorShuffle 229 229 0 1 2 - Store 223(pos) 230 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 224 230 44 - 236: 6(int) Load 123(index) - 237: 201(ptr) AccessChain 175 177 236 206 - 238: 62(fvec4) Load 237 - 239: 26(fvec3) VectorShuffle 238 238 0 1 2 - Store 232(vel) 239 - 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 233 239 44 + 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 212 211(force) 44 + 217: 201(ptr) AccessChain 93(params) 216 + 218: 62(fvec4) Load 217 + 219: 26(fvec3) VectorShuffle 218 218 0 1 2 + 220: 97(ptr) AccessChain 93(params) 206 + 221: 23(float) Load 220 + 222: 26(fvec3) VectorTimesScalar 219 221 + Store 211(force) 222 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 224 223(pos) 44 + 228: 6(int) Load 123(index) + 229: 201(ptr) AccessChain 175 177 228 177 + 230: 62(fvec4) Load 229 + 231: 26(fvec3) VectorShuffle 230 230 0 1 2 + Store 223(pos) 231 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(vel) 44 + 237: 6(int) Load 123(index) + 238: 201(ptr) AccessChain 175 177 237 206 + 239: 62(fvec4) Load 238 + 240: 26(fvec3) VectorShuffle 239 239 0 1 2 + Store 232(vel) 240 241: 122(ptr) AccessChain 112(id) 11 242: 6(int) Load 241 244: 146(bool) UGreaterThan 242 11 @@ -445,613 +445,591 @@ Validation failed 259: 26(fvec3) Load 211(force) 260: 26(fvec3) FAdd 259 258 Store 211(force) 260 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 260 44 Branch 246 246: Label - 262: 122(ptr) AccessChain 112(id) 11 - 263: 6(int) Load 262 - 264: 130(ptr) AccessChain 93(params) 129 11 - 265: 64(int) Load 264 - 266: 64(int) ISub 265 206 - 267: 6(int) Bitcast 266 - 269: 146(bool) ULessThan 263 267 - SelectionMerge 271 None - BranchConditional 269 270 271 - 270: Label - 272: 6(int) Load 123(index) - 273: 6(int) IAdd 272 19 - 275: 201(ptr) AccessChain 175 177 273 177 - 276: 62(fvec4) Load 275 - 277: 26(fvec3) VectorShuffle 276 276 0 1 2 - Store 274(param) 277 - 279: 26(fvec3) Load 223(pos) - Store 278(param) 279 - 281: 97(ptr) AccessChain 93(params) 179 - 282: 23(float) Load 281 - Store 280(param) 282 - 283: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 274(param) 278(param) 280(param) - 284: 26(fvec3) Load 211(force) - 285: 26(fvec3) FAdd 284 283 - Store 211(force) 285 - 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 285 44 - Branch 271 - 271: Label - 287: 122(ptr) AccessChain 112(id) 19 - 288: 6(int) Load 287 - 289: 130(ptr) AccessChain 93(params) 129 19 - 290: 64(int) Load 289 - 291: 64(int) ISub 290 206 - 292: 6(int) Bitcast 291 - 294: 146(bool) ULessThan 288 292 - SelectionMerge 296 None - BranchConditional 294 295 296 - 295: Label - 297: 6(int) Load 123(index) - 298: 130(ptr) AccessChain 93(params) 129 11 - 299: 64(int) Load 298 - 300: 6(int) Bitcast 299 - 301: 6(int) IAdd 297 300 - 304: 201(ptr) AccessChain 175 177 301 177 - 305: 62(fvec4) Load 304 - 306: 26(fvec3) VectorShuffle 305 305 0 1 2 - Store 303(param) 306 - 308: 26(fvec3) Load 223(pos) - Store 307(param) 308 - 310: 97(ptr) AccessChain 93(params) 302 - 311: 23(float) Load 310 - Store 309(param) 311 - 312: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 303(param) 307(param) 309(param) - 313: 26(fvec3) Load 211(force) - 314: 26(fvec3) FAdd 313 312 - Store 211(force) 314 - 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 314 44 - Branch 296 - 296: Label - 316: 122(ptr) AccessChain 112(id) 19 - 317: 6(int) Load 316 - 319: 146(bool) UGreaterThan 317 11 - SelectionMerge 321 None - BranchConditional 319 320 321 - 320: Label - 322: 6(int) Load 123(index) - 323: 130(ptr) AccessChain 93(params) 129 11 - 324: 64(int) Load 323 - 325: 6(int) Bitcast 324 - 326: 6(int) ISub 322 325 - 328: 201(ptr) AccessChain 175 177 326 177 - 329: 62(fvec4) Load 328 - 330: 26(fvec3) VectorShuffle 329 329 0 1 2 - Store 327(param) 330 - 332: 26(fvec3) Load 223(pos) - Store 331(param) 332 - 334: 97(ptr) AccessChain 93(params) 302 - 335: 23(float) Load 334 - Store 333(param) 335 - 336: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 327(param) 331(param) 333(param) - 337: 26(fvec3) Load 211(force) - 338: 26(fvec3) FAdd 337 336 - Store 211(force) 338 - 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 338 44 - Branch 321 - 321: Label - 340: 122(ptr) AccessChain 112(id) 11 - 341: 6(int) Load 340 - 343: 146(bool) UGreaterThan 341 11 - SelectionMerge 345 None - BranchConditional 343 344 345 - 344: Label - 346: 122(ptr) AccessChain 112(id) 19 - 347: 6(int) Load 346 - 348: 130(ptr) AccessChain 93(params) 129 19 - 349: 64(int) Load 348 - 350: 64(int) ISub 349 206 - 351: 6(int) Bitcast 350 - 353: 146(bool) ULessThan 347 351 - Branch 345 - 345: Label - 354: 146(bool) Phi 343 321 353 344 - SelectionMerge 356 None - BranchConditional 354 355 356 - 355: Label - 357: 6(int) Load 123(index) - 358: 130(ptr) AccessChain 93(params) 129 11 - 359: 64(int) Load 358 - 360: 6(int) Bitcast 359 - 361: 6(int) IAdd 357 360 - 362: 6(int) ISub 361 19 - 365: 201(ptr) AccessChain 175 177 362 177 - 366: 62(fvec4) Load 365 - 367: 26(fvec3) VectorShuffle 366 366 0 1 2 - Store 364(param) 367 - 369: 26(fvec3) Load 223(pos) - Store 368(param) 369 - 371: 97(ptr) AccessChain 93(params) 363 - 372: 23(float) Load 371 - Store 370(param) 372 - 373: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 364(param) 368(param) 370(param) - 374: 26(fvec3) Load 211(force) - 375: 26(fvec3) FAdd 374 373 - Store 211(force) 375 - 376: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 375 44 - Branch 356 - 356: Label - 377: 122(ptr) AccessChain 112(id) 11 - 378: 6(int) Load 377 - 380: 146(bool) UGreaterThan 378 11 - SelectionMerge 382 None - BranchConditional 380 381 382 - 381: Label - 383: 122(ptr) AccessChain 112(id) 19 - 384: 6(int) Load 383 - 386: 146(bool) UGreaterThan 384 11 - Branch 382 - 382: Label - 387: 146(bool) Phi 380 356 386 381 - SelectionMerge 389 None - BranchConditional 387 388 389 - 388: Label - 390: 6(int) Load 123(index) - 391: 130(ptr) AccessChain 93(params) 129 11 - 392: 64(int) Load 391 - 393: 6(int) Bitcast 392 - 394: 6(int) ISub 390 393 - 395: 6(int) ISub 394 19 - 397: 201(ptr) AccessChain 175 177 395 177 - 398: 62(fvec4) Load 397 - 399: 26(fvec3) VectorShuffle 398 398 0 1 2 - Store 396(param) 399 - 401: 26(fvec3) Load 223(pos) - Store 400(param) 401 - 403: 97(ptr) AccessChain 93(params) 363 - 404: 23(float) Load 403 - Store 402(param) 404 - 405: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 396(param) 400(param) 402(param) - 406: 26(fvec3) Load 211(force) - 407: 26(fvec3) FAdd 406 405 - Store 211(force) 407 - 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 407 44 - Branch 389 - 389: Label - 409: 122(ptr) AccessChain 112(id) 11 - 410: 6(int) Load 409 - 411: 130(ptr) AccessChain 93(params) 129 11 - 412: 64(int) Load 411 - 413: 64(int) ISub 412 206 - 414: 6(int) Bitcast 413 - 416: 146(bool) ULessThan 410 414 - SelectionMerge 418 None - BranchConditional 416 417 418 - 417: Label - 419: 122(ptr) AccessChain 112(id) 19 - 420: 6(int) Load 419 - 421: 130(ptr) AccessChain 93(params) 129 19 - 422: 64(int) Load 421 - 423: 64(int) ISub 422 206 - 424: 6(int) Bitcast 423 - 426: 146(bool) ULessThan 420 424 - Branch 418 - 418: Label - 427: 146(bool) Phi 416 389 426 417 - SelectionMerge 429 None - BranchConditional 427 428 429 - 428: Label - 430: 6(int) Load 123(index) - 431: 130(ptr) AccessChain 93(params) 129 11 - 432: 64(int) Load 431 - 433: 6(int) Bitcast 432 - 434: 6(int) IAdd 430 433 - 435: 6(int) IAdd 434 19 - 437: 201(ptr) AccessChain 175 177 435 177 - 438: 62(fvec4) Load 437 - 439: 26(fvec3) VectorShuffle 438 438 0 1 2 - Store 436(param) 439 - 441: 26(fvec3) Load 223(pos) - Store 440(param) 441 - 443: 97(ptr) AccessChain 93(params) 363 - 444: 23(float) Load 443 - Store 442(param) 444 - 445: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 436(param) 440(param) 442(param) - 446: 26(fvec3) Load 211(force) - 447: 26(fvec3) FAdd 446 445 - Store 211(force) 447 - 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 447 44 - Branch 429 - 429: Label - 449: 122(ptr) AccessChain 112(id) 11 - 450: 6(int) Load 449 - 451: 130(ptr) AccessChain 93(params) 129 11 - 452: 64(int) Load 451 - 453: 64(int) ISub 452 206 - 454: 6(int) Bitcast 453 - 456: 146(bool) ULessThan 450 454 + 261: 122(ptr) AccessChain 112(id) 11 + 262: 6(int) Load 261 + 263: 131(ptr) AccessChain 93(params) 130 11 + 264: 64(int) Load 263 + 265: 64(int) ISub 264 206 + 266: 6(int) Bitcast 265 + 268: 146(bool) ULessThan 262 266 + SelectionMerge 270 None + BranchConditional 268 269 270 + 269: Label + 271: 6(int) Load 123(index) + 272: 6(int) IAdd 271 19 + 274: 201(ptr) AccessChain 175 177 272 177 + 275: 62(fvec4) Load 274 + 276: 26(fvec3) VectorShuffle 275 275 0 1 2 + Store 273(param) 276 + 278: 26(fvec3) Load 223(pos) + Store 277(param) 278 + 280: 97(ptr) AccessChain 93(params) 179 + 281: 23(float) Load 280 + Store 279(param) 281 + 282: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 273(param) 277(param) 279(param) + 283: 26(fvec3) Load 211(force) + 284: 26(fvec3) FAdd 283 282 + Store 211(force) 284 + Branch 270 + 270: Label + 285: 122(ptr) AccessChain 112(id) 19 + 286: 6(int) Load 285 + 287: 131(ptr) AccessChain 93(params) 130 19 + 288: 64(int) Load 287 + 289: 64(int) ISub 288 206 + 290: 6(int) Bitcast 289 + 292: 146(bool) ULessThan 286 290 + SelectionMerge 294 None + BranchConditional 292 293 294 + 293: Label + 295: 6(int) Load 123(index) + 296: 131(ptr) AccessChain 93(params) 130 11 + 297: 64(int) Load 296 + 298: 6(int) Bitcast 297 + 299: 6(int) IAdd 295 298 + 302: 201(ptr) AccessChain 175 177 299 177 + 303: 62(fvec4) Load 302 + 304: 26(fvec3) VectorShuffle 303 303 0 1 2 + Store 301(param) 304 + 306: 26(fvec3) Load 223(pos) + Store 305(param) 306 + 308: 97(ptr) AccessChain 93(params) 300 + 309: 23(float) Load 308 + Store 307(param) 309 + 310: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 301(param) 305(param) 307(param) + 311: 26(fvec3) Load 211(force) + 312: 26(fvec3) FAdd 311 310 + Store 211(force) 312 + Branch 294 + 294: Label + 313: 122(ptr) AccessChain 112(id) 19 + 314: 6(int) Load 313 + 316: 146(bool) UGreaterThan 314 11 + SelectionMerge 318 None + BranchConditional 316 317 318 + 317: Label + 319: 6(int) Load 123(index) + 320: 131(ptr) AccessChain 93(params) 130 11 + 321: 64(int) Load 320 + 322: 6(int) Bitcast 321 + 323: 6(int) ISub 319 322 + 325: 201(ptr) AccessChain 175 177 323 177 + 326: 62(fvec4) Load 325 + 327: 26(fvec3) VectorShuffle 326 326 0 1 2 + Store 324(param) 327 + 329: 26(fvec3) Load 223(pos) + Store 328(param) 329 + 331: 97(ptr) AccessChain 93(params) 300 + 332: 23(float) Load 331 + Store 330(param) 332 + 333: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 324(param) 328(param) 330(param) + 334: 26(fvec3) Load 211(force) + 335: 26(fvec3) FAdd 334 333 + Store 211(force) 335 + Branch 318 + 318: Label + 336: 122(ptr) AccessChain 112(id) 11 + 337: 6(int) Load 336 + 339: 146(bool) UGreaterThan 337 11 + SelectionMerge 341 None + BranchConditional 339 340 341 + 340: Label + 342: 122(ptr) AccessChain 112(id) 19 + 343: 6(int) Load 342 + 344: 131(ptr) AccessChain 93(params) 130 19 + 345: 64(int) Load 344 + 346: 64(int) ISub 345 206 + 347: 6(int) Bitcast 346 + 349: 146(bool) ULessThan 343 347 + Branch 341 + 341: Label + 350: 146(bool) Phi 339 318 349 340 + SelectionMerge 352 None + BranchConditional 350 351 352 + 351: Label + 353: 6(int) Load 123(index) + 354: 131(ptr) AccessChain 93(params) 130 11 + 355: 64(int) Load 354 + 356: 6(int) Bitcast 355 + 357: 6(int) IAdd 353 356 + 358: 6(int) ISub 357 19 + 361: 201(ptr) AccessChain 175 177 358 177 + 362: 62(fvec4) Load 361 + 363: 26(fvec3) VectorShuffle 362 362 0 1 2 + Store 360(param) 363 + 365: 26(fvec3) Load 223(pos) + Store 364(param) 365 + 367: 97(ptr) AccessChain 93(params) 359 + 368: 23(float) Load 367 + Store 366(param) 368 + 369: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 360(param) 364(param) 366(param) + 370: 26(fvec3) Load 211(force) + 371: 26(fvec3) FAdd 370 369 + Store 211(force) 371 + Branch 352 + 352: Label + 372: 122(ptr) AccessChain 112(id) 11 + 373: 6(int) Load 372 + 375: 146(bool) UGreaterThan 373 11 + SelectionMerge 377 None + BranchConditional 375 376 377 + 376: Label + 378: 122(ptr) AccessChain 112(id) 19 + 379: 6(int) Load 378 + 381: 146(bool) UGreaterThan 379 11 + Branch 377 + 377: Label + 382: 146(bool) Phi 375 352 381 376 + SelectionMerge 384 None + BranchConditional 382 383 384 + 383: Label + 385: 6(int) Load 123(index) + 386: 131(ptr) AccessChain 93(params) 130 11 + 387: 64(int) Load 386 + 388: 6(int) Bitcast 387 + 389: 6(int) ISub 385 388 + 390: 6(int) ISub 389 19 + 392: 201(ptr) AccessChain 175 177 390 177 + 393: 62(fvec4) Load 392 + 394: 26(fvec3) VectorShuffle 393 393 0 1 2 + Store 391(param) 394 + 396: 26(fvec3) Load 223(pos) + Store 395(param) 396 + 398: 97(ptr) AccessChain 93(params) 359 + 399: 23(float) Load 398 + Store 397(param) 399 + 400: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 391(param) 395(param) 397(param) + 401: 26(fvec3) Load 211(force) + 402: 26(fvec3) FAdd 401 400 + Store 211(force) 402 + Branch 384 + 384: Label + 403: 122(ptr) AccessChain 112(id) 11 + 404: 6(int) Load 403 + 405: 131(ptr) AccessChain 93(params) 130 11 + 406: 64(int) Load 405 + 407: 64(int) ISub 406 206 + 408: 6(int) Bitcast 407 + 410: 146(bool) ULessThan 404 408 + SelectionMerge 412 None + BranchConditional 410 411 412 + 411: Label + 413: 122(ptr) AccessChain 112(id) 19 + 414: 6(int) Load 413 + 415: 131(ptr) AccessChain 93(params) 130 19 + 416: 64(int) Load 415 + 417: 64(int) ISub 416 206 + 418: 6(int) Bitcast 417 + 420: 146(bool) ULessThan 414 418 + Branch 412 + 412: Label + 421: 146(bool) Phi 410 384 420 411 + SelectionMerge 423 None + BranchConditional 421 422 423 + 422: Label + 424: 6(int) Load 123(index) + 425: 131(ptr) AccessChain 93(params) 130 11 + 426: 64(int) Load 425 + 427: 6(int) Bitcast 426 + 428: 6(int) IAdd 424 427 + 429: 6(int) IAdd 428 19 + 431: 201(ptr) AccessChain 175 177 429 177 + 432: 62(fvec4) Load 431 + 433: 26(fvec3) VectorShuffle 432 432 0 1 2 + Store 430(param) 433 + 435: 26(fvec3) Load 223(pos) + Store 434(param) 435 + 437: 97(ptr) AccessChain 93(params) 359 + 438: 23(float) Load 437 + Store 436(param) 438 + 439: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 430(param) 434(param) 436(param) + 440: 26(fvec3) Load 211(force) + 441: 26(fvec3) FAdd 440 439 + Store 211(force) 441 + Branch 423 + 423: Label + 442: 122(ptr) AccessChain 112(id) 11 + 443: 6(int) Load 442 + 444: 131(ptr) AccessChain 93(params) 130 11 + 445: 64(int) Load 444 + 446: 64(int) ISub 445 206 + 447: 6(int) Bitcast 446 + 449: 146(bool) ULessThan 443 447 + SelectionMerge 451 None + BranchConditional 449 450 451 + 450: Label + 452: 122(ptr) AccessChain 112(id) 19 + 453: 6(int) Load 452 + 455: 146(bool) UGreaterThan 453 11 + Branch 451 + 451: Label + 456: 146(bool) Phi 449 423 455 450 SelectionMerge 458 None BranchConditional 456 457 458 457: Label - 459: 122(ptr) AccessChain 112(id) 19 - 460: 6(int) Load 459 - 462: 146(bool) UGreaterThan 460 11 + 459: 6(int) Load 123(index) + 460: 131(ptr) AccessChain 93(params) 130 11 + 461: 64(int) Load 460 + 462: 6(int) Bitcast 461 + 463: 6(int) ISub 459 462 + 464: 6(int) IAdd 463 19 + 466: 201(ptr) AccessChain 175 177 464 177 + 467: 62(fvec4) Load 466 + 468: 26(fvec3) VectorShuffle 467 467 0 1 2 + Store 465(param) 468 + 470: 26(fvec3) Load 223(pos) + Store 469(param) 470 + 472: 97(ptr) AccessChain 93(params) 359 + 473: 23(float) Load 472 + Store 471(param) 473 + 474: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 465(param) 469(param) 471(param) + 475: 26(fvec3) Load 211(force) + 476: 26(fvec3) FAdd 475 474 + Store 211(force) 476 Branch 458 458: Label - 463: 146(bool) Phi 456 429 462 457 - SelectionMerge 465 None - BranchConditional 463 464 465 - 464: Label - 466: 6(int) Load 123(index) - 467: 130(ptr) AccessChain 93(params) 129 11 - 468: 64(int) Load 467 - 469: 6(int) Bitcast 468 - 470: 6(int) ISub 466 469 - 471: 6(int) IAdd 470 19 - 473: 201(ptr) AccessChain 175 177 471 177 - 474: 62(fvec4) Load 473 - 475: 26(fvec3) VectorShuffle 474 474 0 1 2 - Store 472(param) 475 - 477: 26(fvec3) Load 223(pos) - Store 476(param) 477 - 479: 97(ptr) AccessChain 93(params) 363 - 480: 23(float) Load 479 - Store 478(param) 480 - 481: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 472(param) 476(param) 478(param) - 482: 26(fvec3) Load 211(force) - 483: 26(fvec3) FAdd 482 481 - Store 211(force) 483 - 484: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 483 44 - Branch 465 - 465: Label - 486: 97(ptr) AccessChain 93(params) 485 - 487: 23(float) Load 486 - 488: 23(float) FNegate 487 - 489: 26(fvec3) Load 232(vel) - 490: 26(fvec3) VectorTimesScalar 489 488 - 491: 26(fvec3) Load 211(force) - 492: 26(fvec3) FAdd 491 490 - Store 211(force) 492 - 493: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 212 492 44 - 498: 26(fvec3) Load 211(force) - 499: 97(ptr) AccessChain 93(params) 206 - 500: 23(float) Load 499 - 501: 23(float) FDiv 182 500 - 502: 26(fvec3) VectorTimesScalar 498 501 - Store 494(f) 502 - 503: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 495 502 44 - 504: 6(int) Load 123(index) - 505: 26(fvec3) Load 223(pos) - 506: 26(fvec3) Load 232(vel) - 507: 97(ptr) AccessChain 93(params) 177 - 508: 23(float) Load 507 - 509: 26(fvec3) VectorTimesScalar 506 508 - 510: 26(fvec3) FAdd 505 509 - 512: 26(fvec3) Load 494(f) - 513: 26(fvec3) VectorTimesScalar 512 511 - 514: 97(ptr) AccessChain 93(params) 177 - 515: 23(float) Load 514 - 516: 26(fvec3) VectorTimesScalar 513 515 - 517: 97(ptr) AccessChain 93(params) 177 - 518: 23(float) Load 517 - 519: 26(fvec3) VectorTimesScalar 516 518 - 520: 26(fvec3) FAdd 510 519 - 521: 23(float) CompositeExtract 520 0 - 522: 23(float) CompositeExtract 520 1 - 523: 23(float) CompositeExtract 520 2 - 524: 62(fvec4) CompositeConstruct 521 522 523 182 - 525: 201(ptr) AccessChain 197 177 504 177 - Store 525 524 - 526: 6(int) Load 123(index) - 527: 26(fvec3) Load 232(vel) - 528: 26(fvec3) Load 494(f) - 529: 97(ptr) AccessChain 93(params) 177 - 530: 23(float) Load 529 - 531: 26(fvec3) VectorTimesScalar 528 530 - 532: 26(fvec3) FAdd 527 531 - 533: 23(float) CompositeExtract 532 0 - 534: 23(float) CompositeExtract 532 1 - 535: 23(float) CompositeExtract 532 2 - 536: 62(fvec4) CompositeConstruct 533 534 535 207 - 537: 201(ptr) AccessChain 197 177 526 206 - Store 537 536 - 542: 6(int) Load 123(index) - 543: 201(ptr) AccessChain 197 177 542 177 - 544: 62(fvec4) Load 543 - 545: 26(fvec3) VectorShuffle 544 544 0 1 2 - 547: 201(ptr) AccessChain 93(params) 546 - 548: 62(fvec4) Load 547 - 549: 26(fvec3) VectorShuffle 548 548 0 1 2 - 550: 26(fvec3) FSub 545 549 - Store 538(sphereDist) 550 - 551: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 539 550 44 - 552: 26(fvec3) Load 538(sphereDist) - 553: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 552 - 555: 97(ptr) AccessChain 93(params) 554 - 556: 23(float) Load 555 - 558: 23(float) FAdd 556 557 - 560: 146(bool) FOrdLessThan 553 558 - SelectionMerge 562 None - BranchConditional 560 561 562 - 561: Label - 563: 6(int) Load 123(index) - 564: 201(ptr) AccessChain 93(params) 546 - 565: 62(fvec4) Load 564 - 566: 26(fvec3) VectorShuffle 565 565 0 1 2 - 567: 26(fvec3) Load 538(sphereDist) - 568: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 567 - 569: 97(ptr) AccessChain 93(params) 554 - 570: 23(float) Load 569 - 571: 23(float) FAdd 570 557 - 572: 26(fvec3) VectorTimesScalar 568 571 - 573: 26(fvec3) FAdd 566 572 - 574: 97(ptr) AccessChain 197 177 563 177 11 - 575: 23(float) CompositeExtract 573 0 - Store 574 575 - 576: 97(ptr) AccessChain 197 177 563 177 19 - 577: 23(float) CompositeExtract 573 1 - Store 576 577 - 578: 97(ptr) AccessChain 197 177 563 177 21 - 579: 23(float) CompositeExtract 573 2 - Store 578 579 - 580: 6(int) Load 123(index) - 581: 201(ptr) AccessChain 197 177 580 206 - Store 581 208 - Branch 562 - 562: Label - 594: 593(ptr) AccessChain 590(pushConsts) 177 - 595: 6(int) Load 594 - 597: 146(bool) IEqual 595 19 - SelectionMerge 599 None - BranchConditional 597 598 599 - 598: Label - Store 600(normal) 603 - 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 603 44 - 605: 122(ptr) AccessChain 112(id) 19 - 606: 6(int) Load 605 - 608: 146(bool) UGreaterThan 606 11 - SelectionMerge 610 None - BranchConditional 608 609 610 - 609: Label - 611: 122(ptr) AccessChain 112(id) 11 - 612: 6(int) Load 611 - 614: 146(bool) UGreaterThan 612 11 - SelectionMerge 616 None - BranchConditional 614 615 616 - 615: Label - 621: 6(int) Load 123(index) - 622: 6(int) ISub 621 19 - 623: 201(ptr) AccessChain 175 177 622 177 - 624: 62(fvec4) Load 623 - 625: 26(fvec3) VectorShuffle 624 624 0 1 2 - 626: 26(fvec3) Load 223(pos) - 627: 26(fvec3) FSub 625 626 - Store 617(a) 627 - 628: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 627 44 - 633: 6(int) Load 123(index) - 634: 130(ptr) AccessChain 93(params) 129 11 - 635: 64(int) Load 634 - 636: 6(int) Bitcast 635 - 637: 6(int) ISub 633 636 - 638: 6(int) ISub 637 19 - 639: 201(ptr) AccessChain 175 177 638 177 - 640: 62(fvec4) Load 639 - 641: 26(fvec3) VectorShuffle 640 640 0 1 2 - 642: 26(fvec3) Load 223(pos) - 643: 26(fvec3) FSub 641 642 - Store 629(b) 643 - 644: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 643 44 - 649: 6(int) Load 123(index) - 650: 130(ptr) AccessChain 93(params) 129 11 - 651: 64(int) Load 650 - 652: 6(int) Bitcast 651 - 653: 6(int) ISub 649 652 - 654: 201(ptr) AccessChain 175 177 653 177 - 655: 62(fvec4) Load 654 - 656: 26(fvec3) VectorShuffle 655 655 0 1 2 - 657: 26(fvec3) Load 223(pos) - 658: 26(fvec3) FSub 656 657 - Store 645(c) 658 - 659: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 658 44 - 660: 26(fvec3) Load 617(a) - 661: 26(fvec3) Load 629(b) - 662: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 660 661 - 663: 26(fvec3) Load 629(b) - 664: 26(fvec3) Load 645(c) - 665: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 663 664 - 666: 26(fvec3) FAdd 662 665 - 667: 26(fvec3) Load 600(normal) - 668: 26(fvec3) FAdd 667 666 - Store 600(normal) 668 - 669: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 668 44 - Branch 616 - 616: Label - 670: 122(ptr) AccessChain 112(id) 11 - 671: 6(int) Load 670 - 672: 130(ptr) AccessChain 93(params) 129 11 - 673: 64(int) Load 672 - 674: 64(int) ISub 673 206 - 675: 6(int) Bitcast 674 - 677: 146(bool) ULessThan 671 675 - SelectionMerge 679 None - BranchConditional 677 678 679 - 678: Label + 478: 97(ptr) AccessChain 93(params) 477 + 479: 23(float) Load 478 + 480: 23(float) FNegate 479 + 481: 26(fvec3) Load 232(vel) + 482: 26(fvec3) VectorTimesScalar 481 480 + 483: 26(fvec3) Load 211(force) + 484: 26(fvec3) FAdd 483 482 + Store 211(force) 484 + 489: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 486 485(f) 44 + 490: 26(fvec3) Load 211(force) + 491: 97(ptr) AccessChain 93(params) 206 + 492: 23(float) Load 491 + 493: 23(float) FDiv 182 492 + 494: 26(fvec3) VectorTimesScalar 490 493 + Store 485(f) 494 + 495: 6(int) Load 123(index) + 496: 26(fvec3) Load 223(pos) + 497: 26(fvec3) Load 232(vel) + 498: 97(ptr) AccessChain 93(params) 177 + 499: 23(float) Load 498 + 500: 26(fvec3) VectorTimesScalar 497 499 + 501: 26(fvec3) FAdd 496 500 + 503: 26(fvec3) Load 485(f) + 504: 26(fvec3) VectorTimesScalar 503 502 + 505: 97(ptr) AccessChain 93(params) 177 + 506: 23(float) Load 505 + 507: 26(fvec3) VectorTimesScalar 504 506 + 508: 97(ptr) AccessChain 93(params) 177 + 509: 23(float) Load 508 + 510: 26(fvec3) VectorTimesScalar 507 509 + 511: 26(fvec3) FAdd 501 510 + 512: 23(float) CompositeExtract 511 0 + 513: 23(float) CompositeExtract 511 1 + 514: 23(float) CompositeExtract 511 2 + 515: 62(fvec4) CompositeConstruct 512 513 514 182 + 516: 201(ptr) AccessChain 197 177 495 177 + Store 516 515 + 517: 6(int) Load 123(index) + 518: 26(fvec3) Load 232(vel) + 519: 26(fvec3) Load 485(f) + 520: 97(ptr) AccessChain 93(params) 177 + 521: 23(float) Load 520 + 522: 26(fvec3) VectorTimesScalar 519 521 + 523: 26(fvec3) FAdd 518 522 + 524: 23(float) CompositeExtract 523 0 + 525: 23(float) CompositeExtract 523 1 + 526: 23(float) CompositeExtract 523 2 + 527: 62(fvec4) CompositeConstruct 524 525 526 207 + 528: 201(ptr) AccessChain 197 177 517 206 + Store 528 527 + 533: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 530 529(sphereDist) 44 + 534: 6(int) Load 123(index) + 535: 201(ptr) AccessChain 197 177 534 177 + 536: 62(fvec4) Load 535 + 537: 26(fvec3) VectorShuffle 536 536 0 1 2 + 539: 201(ptr) AccessChain 93(params) 538 + 540: 62(fvec4) Load 539 + 541: 26(fvec3) VectorShuffle 540 540 0 1 2 + 542: 26(fvec3) FSub 537 541 + Store 529(sphereDist) 542 + 543: 26(fvec3) Load 529(sphereDist) + 544: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 543 + 546: 97(ptr) AccessChain 93(params) 545 + 547: 23(float) Load 546 + 549: 23(float) FAdd 547 548 + 551: 146(bool) FOrdLessThan 544 549 + SelectionMerge 553 None + BranchConditional 551 552 553 + 552: Label + 554: 6(int) Load 123(index) + 555: 201(ptr) AccessChain 93(params) 538 + 556: 62(fvec4) Load 555 + 557: 26(fvec3) VectorShuffle 556 556 0 1 2 + 558: 26(fvec3) Load 529(sphereDist) + 559: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 558 + 560: 97(ptr) AccessChain 93(params) 545 + 561: 23(float) Load 560 + 562: 23(float) FAdd 561 548 + 563: 26(fvec3) VectorTimesScalar 559 562 + 564: 26(fvec3) FAdd 557 563 + 565: 97(ptr) AccessChain 197 177 554 177 11 + 566: 23(float) CompositeExtract 564 0 + Store 565 566 + 567: 97(ptr) AccessChain 197 177 554 177 19 + 568: 23(float) CompositeExtract 564 1 + Store 567 568 + 569: 97(ptr) AccessChain 197 177 554 177 21 + 570: 23(float) CompositeExtract 564 2 + Store 569 570 + 571: 6(int) Load 123(index) + 572: 201(ptr) AccessChain 197 177 571 206 + Store 572 208 + Branch 553 + 553: Label + 585: 584(ptr) AccessChain 581(pushConsts) 177 + 586: 6(int) Load 585 + 588: 146(bool) IEqual 586 19 + SelectionMerge 590 None + BranchConditional 588 589 590 + 589: Label + 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 592 591(normal) 44 + Store 591(normal) 595 + 596: 122(ptr) AccessChain 112(id) 19 + 597: 6(int) Load 596 + 599: 146(bool) UGreaterThan 597 11 + SelectionMerge 601 None + BranchConditional 599 600 601 + 600: Label + 602: 122(ptr) AccessChain 112(id) 11 + 603: 6(int) Load 602 + 605: 146(bool) UGreaterThan 603 11 + SelectionMerge 607 None + BranchConditional 605 606 607 + 606: Label + 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(a) 44 + 613: 6(int) Load 123(index) + 614: 6(int) ISub 613 19 + 615: 201(ptr) AccessChain 175 177 614 177 + 616: 62(fvec4) Load 615 + 617: 26(fvec3) VectorShuffle 616 616 0 1 2 + 618: 26(fvec3) Load 223(pos) + 619: 26(fvec3) FSub 617 618 + Store 608(a) 619 + 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 621 620(b) 44 + 625: 6(int) Load 123(index) + 626: 131(ptr) AccessChain 93(params) 130 11 + 627: 64(int) Load 626 + 628: 6(int) Bitcast 627 + 629: 6(int) ISub 625 628 + 630: 6(int) ISub 629 19 + 631: 201(ptr) AccessChain 175 177 630 177 + 632: 62(fvec4) Load 631 + 633: 26(fvec3) VectorShuffle 632 632 0 1 2 + 634: 26(fvec3) Load 223(pos) + 635: 26(fvec3) FSub 633 634 + Store 620(b) 635 + 640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 637 636(c) 44 + 641: 6(int) Load 123(index) + 642: 131(ptr) AccessChain 93(params) 130 11 + 643: 64(int) Load 642 + 644: 6(int) Bitcast 643 + 645: 6(int) ISub 641 644 + 646: 201(ptr) AccessChain 175 177 645 177 + 647: 62(fvec4) Load 646 + 648: 26(fvec3) VectorShuffle 647 647 0 1 2 + 649: 26(fvec3) Load 223(pos) + 650: 26(fvec3) FSub 648 649 + Store 636(c) 650 + 651: 26(fvec3) Load 608(a) + 652: 26(fvec3) Load 620(b) + 653: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 651 652 + 654: 26(fvec3) Load 620(b) + 655: 26(fvec3) Load 636(c) + 656: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 654 655 + 657: 26(fvec3) FAdd 653 656 + 658: 26(fvec3) Load 591(normal) + 659: 26(fvec3) FAdd 658 657 + Store 591(normal) 659 + Branch 607 + 607: Label + 660: 122(ptr) AccessChain 112(id) 11 + 661: 6(int) Load 660 + 662: 131(ptr) AccessChain 93(params) 130 11 + 663: 64(int) Load 662 + 664: 64(int) ISub 663 206 + 665: 6(int) Bitcast 664 + 667: 146(bool) ULessThan 661 665 + SelectionMerge 669 None + BranchConditional 667 668 669 + 668: Label + 670: 6(int) Load 123(index) + 671: 131(ptr) AccessChain 93(params) 130 11 + 672: 64(int) Load 671 + 673: 6(int) Bitcast 672 + 674: 6(int) ISub 670 673 + 675: 201(ptr) AccessChain 175 177 674 177 + 676: 62(fvec4) Load 675 + 677: 26(fvec3) VectorShuffle 676 676 0 1 2 + 678: 26(fvec3) Load 223(pos) + 679: 26(fvec3) FSub 677 678 + Store 608(a) 679 680: 6(int) Load 123(index) - 681: 130(ptr) AccessChain 93(params) 129 11 + 681: 131(ptr) AccessChain 93(params) 130 11 682: 64(int) Load 681 683: 6(int) Bitcast 682 684: 6(int) ISub 680 683 - 685: 201(ptr) AccessChain 175 177 684 177 - 686: 62(fvec4) Load 685 - 687: 26(fvec3) VectorShuffle 686 686 0 1 2 - 688: 26(fvec3) Load 223(pos) - 689: 26(fvec3) FSub 687 688 - Store 617(a) 689 - 690: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 689 44 + 685: 6(int) IAdd 684 19 + 686: 201(ptr) AccessChain 175 177 685 177 + 687: 62(fvec4) Load 686 + 688: 26(fvec3) VectorShuffle 687 687 0 1 2 + 689: 26(fvec3) Load 223(pos) + 690: 26(fvec3) FSub 688 689 + Store 620(b) 690 691: 6(int) Load 123(index) - 692: 130(ptr) AccessChain 93(params) 129 11 - 693: 64(int) Load 692 - 694: 6(int) Bitcast 693 - 695: 6(int) ISub 691 694 - 696: 6(int) IAdd 695 19 - 697: 201(ptr) AccessChain 175 177 696 177 - 698: 62(fvec4) Load 697 - 699: 26(fvec3) VectorShuffle 698 698 0 1 2 - 700: 26(fvec3) Load 223(pos) - 701: 26(fvec3) FSub 699 700 - Store 629(b) 701 - 702: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 701 44 - 703: 6(int) Load 123(index) - 704: 6(int) IAdd 703 19 - 705: 201(ptr) AccessChain 175 177 704 177 - 706: 62(fvec4) Load 705 - 707: 26(fvec3) VectorShuffle 706 706 0 1 2 - 708: 26(fvec3) Load 223(pos) - 709: 26(fvec3) FSub 707 708 - Store 645(c) 709 - 710: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 709 44 - 711: 26(fvec3) Load 617(a) - 712: 26(fvec3) Load 629(b) - 713: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 711 712 - 714: 26(fvec3) Load 629(b) - 715: 26(fvec3) Load 645(c) - 716: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 714 715 - 717: 26(fvec3) FAdd 713 716 - 718: 26(fvec3) Load 600(normal) - 719: 26(fvec3) FAdd 718 717 - Store 600(normal) 719 - 720: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 719 44 - Branch 679 - 679: Label - Branch 610 - 610: Label - 721: 122(ptr) AccessChain 112(id) 19 - 722: 6(int) Load 721 - 723: 130(ptr) AccessChain 93(params) 129 19 - 724: 64(int) Load 723 - 725: 64(int) ISub 724 206 - 726: 6(int) Bitcast 725 - 728: 146(bool) ULessThan 722 726 - SelectionMerge 730 None - BranchConditional 728 729 730 - 729: Label - 731: 122(ptr) AccessChain 112(id) 11 - 732: 6(int) Load 731 - 734: 146(bool) UGreaterThan 732 11 - SelectionMerge 736 None - BranchConditional 734 735 736 - 735: Label - 737: 6(int) Load 123(index) - 738: 130(ptr) AccessChain 93(params) 129 11 - 739: 64(int) Load 738 - 740: 6(int) Bitcast 739 - 741: 6(int) IAdd 737 740 - 742: 201(ptr) AccessChain 175 177 741 177 - 743: 62(fvec4) Load 742 - 744: 26(fvec3) VectorShuffle 743 743 0 1 2 - 745: 26(fvec3) Load 223(pos) - 746: 26(fvec3) FSub 744 745 - Store 617(a) 746 - 747: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 746 44 - 748: 6(int) Load 123(index) - 749: 130(ptr) AccessChain 93(params) 129 11 - 750: 64(int) Load 749 - 751: 6(int) Bitcast 750 - 752: 6(int) IAdd 748 751 - 753: 6(int) ISub 752 19 - 754: 201(ptr) AccessChain 175 177 753 177 - 755: 62(fvec4) Load 754 - 756: 26(fvec3) VectorShuffle 755 755 0 1 2 - 757: 26(fvec3) Load 223(pos) - 758: 26(fvec3) FSub 756 757 - Store 629(b) 758 - 759: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 758 44 - 760: 6(int) Load 123(index) - 761: 6(int) ISub 760 19 - 762: 201(ptr) AccessChain 175 177 761 177 - 763: 62(fvec4) Load 762 - 764: 26(fvec3) VectorShuffle 763 763 0 1 2 - 765: 26(fvec3) Load 223(pos) - 766: 26(fvec3) FSub 764 765 - Store 645(c) 766 - 767: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 766 44 - 768: 26(fvec3) Load 617(a) - 769: 26(fvec3) Load 629(b) - 770: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 768 769 - 771: 26(fvec3) Load 629(b) - 772: 26(fvec3) Load 645(c) - 773: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 771 772 - 774: 26(fvec3) FAdd 770 773 - 775: 26(fvec3) Load 600(normal) - 776: 26(fvec3) FAdd 775 774 - Store 600(normal) 776 - 777: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 776 44 - Branch 736 - 736: Label - 778: 122(ptr) AccessChain 112(id) 11 - 779: 6(int) Load 778 - 780: 130(ptr) AccessChain 93(params) 129 11 - 781: 64(int) Load 780 - 782: 64(int) ISub 781 206 - 783: 6(int) Bitcast 782 - 785: 146(bool) ULessThan 779 783 - SelectionMerge 787 None - BranchConditional 785 786 787 - 786: Label + 692: 6(int) IAdd 691 19 + 693: 201(ptr) AccessChain 175 177 692 177 + 694: 62(fvec4) Load 693 + 695: 26(fvec3) VectorShuffle 694 694 0 1 2 + 696: 26(fvec3) Load 223(pos) + 697: 26(fvec3) FSub 695 696 + Store 636(c) 697 + 698: 26(fvec3) Load 608(a) + 699: 26(fvec3) Load 620(b) + 700: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 698 699 + 701: 26(fvec3) Load 620(b) + 702: 26(fvec3) Load 636(c) + 703: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 701 702 + 704: 26(fvec3) FAdd 700 703 + 705: 26(fvec3) Load 591(normal) + 706: 26(fvec3) FAdd 705 704 + Store 591(normal) 706 + Branch 669 + 669: Label + Branch 601 + 601: Label + 707: 122(ptr) AccessChain 112(id) 19 + 708: 6(int) Load 707 + 709: 131(ptr) AccessChain 93(params) 130 19 + 710: 64(int) Load 709 + 711: 64(int) ISub 710 206 + 712: 6(int) Bitcast 711 + 714: 146(bool) ULessThan 708 712 + SelectionMerge 716 None + BranchConditional 714 715 716 + 715: Label + 717: 122(ptr) AccessChain 112(id) 11 + 718: 6(int) Load 717 + 720: 146(bool) UGreaterThan 718 11 + SelectionMerge 722 None + BranchConditional 720 721 722 + 721: Label + 723: 6(int) Load 123(index) + 724: 131(ptr) AccessChain 93(params) 130 11 + 725: 64(int) Load 724 + 726: 6(int) Bitcast 725 + 727: 6(int) IAdd 723 726 + 728: 201(ptr) AccessChain 175 177 727 177 + 729: 62(fvec4) Load 728 + 730: 26(fvec3) VectorShuffle 729 729 0 1 2 + 731: 26(fvec3) Load 223(pos) + 732: 26(fvec3) FSub 730 731 + Store 608(a) 732 + 733: 6(int) Load 123(index) + 734: 131(ptr) AccessChain 93(params) 130 11 + 735: 64(int) Load 734 + 736: 6(int) Bitcast 735 + 737: 6(int) IAdd 733 736 + 738: 6(int) ISub 737 19 + 739: 201(ptr) AccessChain 175 177 738 177 + 740: 62(fvec4) Load 739 + 741: 26(fvec3) VectorShuffle 740 740 0 1 2 + 742: 26(fvec3) Load 223(pos) + 743: 26(fvec3) FSub 741 742 + Store 620(b) 743 + 744: 6(int) Load 123(index) + 745: 6(int) ISub 744 19 + 746: 201(ptr) AccessChain 175 177 745 177 + 747: 62(fvec4) Load 746 + 748: 26(fvec3) VectorShuffle 747 747 0 1 2 + 749: 26(fvec3) Load 223(pos) + 750: 26(fvec3) FSub 748 749 + Store 636(c) 750 + 751: 26(fvec3) Load 608(a) + 752: 26(fvec3) Load 620(b) + 753: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 751 752 + 754: 26(fvec3) Load 620(b) + 755: 26(fvec3) Load 636(c) + 756: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 754 755 + 757: 26(fvec3) FAdd 753 756 + 758: 26(fvec3) Load 591(normal) + 759: 26(fvec3) FAdd 758 757 + Store 591(normal) 759 + Branch 722 + 722: Label + 760: 122(ptr) AccessChain 112(id) 11 + 761: 6(int) Load 760 + 762: 131(ptr) AccessChain 93(params) 130 11 + 763: 64(int) Load 762 + 764: 64(int) ISub 763 206 + 765: 6(int) Bitcast 764 + 767: 146(bool) ULessThan 761 765 + SelectionMerge 769 None + BranchConditional 767 768 769 + 768: Label + 770: 6(int) Load 123(index) + 771: 6(int) IAdd 770 19 + 772: 201(ptr) AccessChain 175 177 771 177 + 773: 62(fvec4) Load 772 + 774: 26(fvec3) VectorShuffle 773 773 0 1 2 + 775: 26(fvec3) Load 223(pos) + 776: 26(fvec3) FSub 774 775 + Store 608(a) 776 + 777: 6(int) Load 123(index) + 778: 131(ptr) AccessChain 93(params) 130 11 + 779: 64(int) Load 778 + 780: 6(int) Bitcast 779 + 781: 6(int) IAdd 777 780 + 782: 6(int) IAdd 781 19 + 783: 201(ptr) AccessChain 175 177 782 177 + 784: 62(fvec4) Load 783 + 785: 26(fvec3) VectorShuffle 784 784 0 1 2 + 786: 26(fvec3) Load 223(pos) + 787: 26(fvec3) FSub 785 786 + Store 620(b) 787 788: 6(int) Load 123(index) - 789: 6(int) IAdd 788 19 - 790: 201(ptr) AccessChain 175 177 789 177 - 791: 62(fvec4) Load 790 - 792: 26(fvec3) VectorShuffle 791 791 0 1 2 - 793: 26(fvec3) Load 223(pos) - 794: 26(fvec3) FSub 792 793 - Store 617(a) 794 - 795: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 794 44 - 796: 6(int) Load 123(index) - 797: 130(ptr) AccessChain 93(params) 129 11 - 798: 64(int) Load 797 - 799: 6(int) Bitcast 798 - 800: 6(int) IAdd 796 799 - 801: 6(int) IAdd 800 19 - 802: 201(ptr) AccessChain 175 177 801 177 - 803: 62(fvec4) Load 802 - 804: 26(fvec3) VectorShuffle 803 803 0 1 2 - 805: 26(fvec3) Load 223(pos) - 806: 26(fvec3) FSub 804 805 - Store 629(b) 806 - 807: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 630 806 44 - 808: 6(int) Load 123(index) - 809: 130(ptr) AccessChain 93(params) 129 11 - 810: 64(int) Load 809 - 811: 6(int) Bitcast 810 - 812: 6(int) IAdd 808 811 - 813: 201(ptr) AccessChain 175 177 812 177 - 814: 62(fvec4) Load 813 - 815: 26(fvec3) VectorShuffle 814 814 0 1 2 - 816: 26(fvec3) Load 223(pos) - 817: 26(fvec3) FSub 815 816 - Store 645(c) 817 - 818: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 646 817 44 - 819: 26(fvec3) Load 617(a) - 820: 26(fvec3) Load 629(b) - 821: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 819 820 - 822: 26(fvec3) Load 629(b) - 823: 26(fvec3) Load 645(c) - 824: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 822 823 - 825: 26(fvec3) FAdd 821 824 - 826: 26(fvec3) Load 600(normal) - 827: 26(fvec3) FAdd 826 825 - Store 600(normal) 827 - 828: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 827 44 - Branch 787 - 787: Label - Branch 730 - 730: Label - 829: 6(int) Load 123(index) - 830: 26(fvec3) Load 600(normal) - 831: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 830 - 832: 23(float) CompositeExtract 831 0 - 833: 23(float) CompositeExtract 831 1 - 834: 23(float) CompositeExtract 831 2 - 835: 62(fvec4) CompositeConstruct 832 833 834 207 - 836: 201(ptr) AccessChain 197 177 829 485 - Store 836 835 - Branch 599 - 599: Label + 789: 131(ptr) AccessChain 93(params) 130 11 + 790: 64(int) Load 789 + 791: 6(int) Bitcast 790 + 792: 6(int) IAdd 788 791 + 793: 201(ptr) AccessChain 175 177 792 177 + 794: 62(fvec4) Load 793 + 795: 26(fvec3) VectorShuffle 794 794 0 1 2 + 796: 26(fvec3) Load 223(pos) + 797: 26(fvec3) FSub 795 796 + Store 636(c) 797 + 798: 26(fvec3) Load 608(a) + 799: 26(fvec3) Load 620(b) + 800: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 798 799 + 801: 26(fvec3) Load 620(b) + 802: 26(fvec3) Load 636(c) + 803: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 801 802 + 804: 26(fvec3) FAdd 800 803 + 805: 26(fvec3) Load 591(normal) + 806: 26(fvec3) FAdd 805 804 + Store 591(normal) 806 + Branch 769 + 769: Label + Branch 716 + 716: Label + 807: 6(int) Load 123(index) + 808: 26(fvec3) Load 591(normal) + 809: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 808 + 810: 23(float) CompositeExtract 809 0 + 811: 23(float) CompositeExtract 809 1 + 812: 23(float) CompositeExtract 809 2 + 813: 62(fvec4) CompositeConstruct 810 811 812 207 + 814: 201(ptr) AccessChain 197 177 807 477 + Store 814 813 + Branch 590 + 590: Label Return FunctionEnd 35(springForce(vf3;vf3;f1;): 26(fvec3) Function None 30 @@ -1066,11 +1044,11 @@ Validation failed 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 45 33(p1) 44 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 34(restDist) 44 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 37 35(springForce(vf3;vf3;f1;) - 56: 26(fvec3) Load 32(p0) - 57: 26(fvec3) Load 33(p1) - 58: 26(fvec3) FSub 56 57 - Store 52(dist) 58 - 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 53 58 44 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 53 52(dist) 44 + 57: 26(fvec3) Load 32(p0) + 58: 26(fvec3) Load 33(p1) + 59: 26(fvec3) FSub 57 58 + Store 52(dist) 59 60: 26(fvec3) Load 52(dist) 61: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 60 98: 97(ptr) AccessChain 93(params) 96 diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 2180f7ee2b..3b9f8cbef1 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -2,7 +2,7 @@ spv.debuginfo.glsl.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 716 +// Id's are bound by 704 Capability Shader Capability ImageQuery @@ -10,7 +10,7 @@ Validation failed 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 13 "main" 406 452 + EntryPoint Fragment 13 "main" 400 445 ExecutionMode 13 OriginUpperLeft 8: String "uint" 14: String "main" @@ -28,53 +28,53 @@ Validation failed 96: String "shadowCoord" 118: String "bool" 132: String "dist" - 136: String "type.2d.image" - 137: String "@type.2d.image" - 141: String "type.sampled.image" - 142: String "@type.sampled.image" - 146: String "samplerShadowMap" - 182: String "int" - 189: String "texDim" - 201: String "scale" - 207: String "dx" - 219: String "dy" - 230: String "shadowFactor" - 235: String "count" - 240: String "range" - 246: String "x" - 262: String "y" - 312: String "i" - 326: String "shadowClip" - 333: String "color" - 339: String "viewMatrix" - 342: String "Light" - 348: String "lights" - 351: String "debugDisplayTarget" - 355: String "UBO" - 359: String "ubo" - 394: String "fragPos" - 403: String "samplerposition" - 408: String "inUV" - 415: String "normal" - 419: String "samplerNormal" - 427: String "albedo" - 431: String "samplerAlbedo" - 454: String "outFragColor" - 516: String "N" - 535: String "L" - 556: String "V" - 569: String "lightCosInnerAngle" - 575: String "lightCosOuterAngle" - 581: String "lightRange" - 587: String "dir" - 602: String "cosDir" - 610: String "spotEffect" - 619: String "heightAttenuation" - 627: String "NdotL" - 636: String "diff" - 643: String "R" - 652: String "NdotR" - 661: String "spec" + 137: String "type.2d.image" + 138: String "@type.2d.image" + 142: String "type.sampled.image" + 143: String "@type.sampled.image" + 147: String "samplerShadowMap" + 181: String "int" + 188: String "texDim" + 200: String "scale" + 206: String "dx" + 218: String "dy" + 229: String "shadowFactor" + 234: String "count" + 239: String "range" + 245: String "x" + 261: String "y" + 307: String "i" + 321: String "shadowClip" + 329: String "color" + 335: String "viewMatrix" + 338: String "Light" + 344: String "lights" + 347: String "debugDisplayTarget" + 351: String "UBO" + 355: String "ubo" + 387: String "fragPos" + 397: String "samplerposition" + 402: String "inUV" + 408: String "normal" + 413: String "samplerNormal" + 420: String "albedo" + 425: String "samplerAlbedo" + 447: String "outFragColor" + 509: String "N" + 528: String "L" + 548: String "V" + 560: String "lightCosInnerAngle" + 566: String "lightCosOuterAngle" + 572: String "lightRange" + 578: String "dir" + 593: String "cosDir" + 601: String "spotEffect" + 610: String "heightAttenuation" + 618: String "NdotL" + 627: String "diff" + 634: String "R" + 643: String "NdotR" + 652: String "spec" Name 13 "main" Name 38 "textureProj(vf4;f1;vf2;" Name 35 "P" @@ -89,89 +89,89 @@ Validation failed Name 89 "shadow" Name 94 "shadowCoord" Name 130 "dist" - Name 144 "samplerShadowMap" - Name 187 "texDim" - Name 199 "scale" - Name 205 "dx" - Name 217 "dy" - Name 228 "shadowFactor" - Name 233 "count" - Name 238 "range" - Name 244 "x" - Name 260 "y" - Name 285 "param" - Name 287 "param" - Name 289 "param" - Name 310 "i" - Name 324 "shadowClip" - Name 331 "Light" - MemberName 331(Light) 0 "position" - MemberName 331(Light) 1 "target" - MemberName 331(Light) 2 "color" - MemberName 331(Light) 3 "viewMatrix" - Name 345 "UBO" - MemberName 345(UBO) 0 "viewPos" - MemberName 345(UBO) 1 "lights" - MemberName 345(UBO) 2 "useShadows" - MemberName 345(UBO) 3 "debugDisplayTarget" - Name 357 "ubo" - Name 371 "shadowFactor" - Name 376 "param" - Name 378 "param" - Name 392 "fragPos" - Name 401 "samplerposition" - Name 406 "inUV" - Name 413 "normal" - Name 417 "samplerNormal" - Name 425 "albedo" - Name 429 "samplerAlbedo" - Name 452 "outFragColor" - Name 457 "param" - Name 458 "param" - Name 506 "fragcolor" - Name 514 "N" - Name 521 "i" - Name 533 "L" - Name 545 "dist" - Name 554 "V" - Name 567 "lightCosInnerAngle" - Name 573 "lightCosOuterAngle" - Name 579 "lightRange" - Name 585 "dir" - Name 600 "cosDir" - Name 608 "spotEffect" - Name 617 "heightAttenuation" - Name 625 "NdotL" - Name 634 "diff" - Name 641 "R" - Name 650 "NdotR" - Name 659 "spec" - Name 705 "param" - Name 707 "param" - Decorate 144(samplerShadowMap) DescriptorSet 0 - Decorate 144(samplerShadowMap) Binding 5 - MemberDecorate 331(Light) 0 Offset 0 - MemberDecorate 331(Light) 1 Offset 16 - MemberDecorate 331(Light) 2 Offset 32 - MemberDecorate 331(Light) 3 ColMajor - MemberDecorate 331(Light) 3 Offset 48 - MemberDecorate 331(Light) 3 MatrixStride 16 - Decorate 343 ArrayStride 112 - MemberDecorate 345(UBO) 0 Offset 0 - MemberDecorate 345(UBO) 1 Offset 16 - MemberDecorate 345(UBO) 2 Offset 352 - MemberDecorate 345(UBO) 3 Offset 356 - Decorate 345(UBO) Block - Decorate 357(ubo) DescriptorSet 0 - Decorate 357(ubo) Binding 4 - Decorate 401(samplerposition) DescriptorSet 0 - Decorate 401(samplerposition) Binding 1 - Decorate 406(inUV) Location 0 - Decorate 417(samplerNormal) DescriptorSet 0 - Decorate 417(samplerNormal) Binding 2 - Decorate 429(samplerAlbedo) DescriptorSet 0 - Decorate 429(samplerAlbedo) Binding 3 - Decorate 452(outFragColor) Location 0 + Name 145 "samplerShadowMap" + Name 186 "texDim" + Name 198 "scale" + Name 204 "dx" + Name 216 "dy" + Name 227 "shadowFactor" + Name 232 "count" + Name 237 "range" + Name 243 "x" + Name 259 "y" + Name 284 "param" + Name 286 "param" + Name 288 "param" + Name 305 "i" + Name 319 "shadowClip" + Name 327 "Light" + MemberName 327(Light) 0 "position" + MemberName 327(Light) 1 "target" + MemberName 327(Light) 2 "color" + MemberName 327(Light) 3 "viewMatrix" + Name 341 "UBO" + MemberName 341(UBO) 0 "viewPos" + MemberName 341(UBO) 1 "lights" + MemberName 341(UBO) 2 "useShadows" + MemberName 341(UBO) 3 "debugDisplayTarget" + Name 353 "ubo" + Name 366 "shadowFactor" + Name 372 "param" + Name 374 "param" + Name 385 "fragPos" + Name 395 "samplerposition" + Name 400 "inUV" + Name 406 "normal" + Name 411 "samplerNormal" + Name 418 "albedo" + Name 423 "samplerAlbedo" + Name 445 "outFragColor" + Name 450 "param" + Name 451 "param" + Name 499 "fragcolor" + Name 507 "N" + Name 514 "i" + Name 526 "L" + Name 538 "dist" + Name 546 "V" + Name 558 "lightCosInnerAngle" + Name 564 "lightCosOuterAngle" + Name 570 "lightRange" + Name 576 "dir" + Name 591 "cosDir" + Name 599 "spotEffect" + Name 608 "heightAttenuation" + Name 616 "NdotL" + Name 625 "diff" + Name 632 "R" + Name 641 "NdotR" + Name 650 "spec" + Name 694 "param" + Name 696 "param" + Decorate 145(samplerShadowMap) DescriptorSet 0 + Decorate 145(samplerShadowMap) Binding 5 + MemberDecorate 327(Light) 0 Offset 0 + MemberDecorate 327(Light) 1 Offset 16 + MemberDecorate 327(Light) 2 Offset 32 + MemberDecorate 327(Light) 3 ColMajor + MemberDecorate 327(Light) 3 Offset 48 + MemberDecorate 327(Light) 3 MatrixStride 16 + Decorate 339 ArrayStride 112 + MemberDecorate 341(UBO) 0 Offset 0 + MemberDecorate 341(UBO) 1 Offset 16 + MemberDecorate 341(UBO) 2 Offset 352 + MemberDecorate 341(UBO) 3 Offset 356 + Decorate 341(UBO) Block + Decorate 353(ubo) DescriptorSet 0 + Decorate 353(ubo) Binding 4 + Decorate 395(samplerposition) DescriptorSet 0 + Decorate 395(samplerposition) Binding 1 + Decorate 400(inUV) Location 0 + Decorate 411(samplerNormal) DescriptorSet 0 + Decorate 411(samplerNormal) Binding 2 + Decorate 423(samplerAlbedo) DescriptorSet 0 + Decorate 423(samplerAlbedo) Binding 3 + Decorate 445(outFragColor) Location 0 3: TypeVoid 4: TypeFunction 3 6: TypeInt 32 0 @@ -218,7 +218,7 @@ Validation failed 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 86 70 16 11 11 78 20 21 91: 6(int) Constant 59 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 25 16 91 11 40 20 - 92: 23(float) Constant 1065353216 + 93: 23(float) Constant 1065353216 97: 6(int) Constant 60 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 27 16 97 11 40 20 106: 23(float) Constant 1056964608 @@ -228,452 +228,447 @@ Validation failed 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 133: 6(int) Constant 65 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 133 11 40 20 - 134: TypeImage 23(float) 2D array sampled format:Unknown - 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 136 11 16 133 11 18 137 138 12 - 139: TypeSampledImage 134 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 11 16 133 11 18 142 138 12 - 143: TypePointer UniformConstant 139 -144(samplerShadowMap): 143(ptr) Variable UniformConstant - 147: 6(int) Constant 8 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 146 140 16 133 11 18 146 144(samplerShadowMap) 147 + 135: TypeImage 23(float) 2D array sampled format:Unknown + 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 137 11 16 133 11 18 138 139 12 + 140: TypeSampledImage 135 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 11 16 133 11 18 143 139 12 + 144: TypePointer UniformConstant 140 +145(samplerShadowMap): 144(ptr) Variable UniformConstant + 148: 6(int) Constant 8 + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 147 141 16 133 11 18 147 145(samplerShadowMap) 148 162: 23(float) Constant 0 163: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 175: 23(float) Constant 1048576000 - 181: TypeInt 32 1 - 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 182 9 20 11 - 184: TypeVector 181(int) 2 - 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 183 21 - 186: TypePointer Function 184(ivec2) - 190: 6(int) Constant 76 - 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 189 185 16 190 11 60 20 - 192: 181(int) Constant 0 - 194: TypeVector 181(int) 3 - 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 183 12 - 202: 6(int) Constant 77 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 201 25 16 202 11 60 20 + 180: TypeInt 32 1 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 181 9 20 11 + 183: TypeVector 180(int) 2 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 182 21 + 185: TypePointer Function 183(ivec2) + 189: 6(int) Constant 76 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 188 184 16 189 11 60 20 + 192: 180(int) Constant 0 + 194: TypeVector 180(int) 3 + 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 182 12 + 201: 6(int) Constant 77 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 200 25 16 201 11 60 20 203: 23(float) Constant 1069547520 - 208: 6(int) Constant 78 - 206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 207 25 16 208 11 60 20 - 211: TypePointer Function 181(int) - 220: 6(int) Constant 79 - 218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 219 25 16 220 11 60 20 - 231: 6(int) Constant 81 - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 25 16 231 11 60 20 - 236: 6(int) Constant 82 - 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 235 183 16 236 11 60 20 - 241: 6(int) Constant 83 - 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 240 183 16 241 11 60 20 - 242: 181(int) Constant 1 - 247: 6(int) Constant 85 - 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 246 183 16 247 11 60 20 - 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 - 263: 6(int) Constant 87 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 262 183 16 263 11 60 20 - 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 - 313: 6(int) Constant 98 - 311: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 312 183 16 313 11 78 20 - 321: 181(int) Constant 3 - 322: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 - 327: 6(int) Constant 100 - 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 326 27 16 327 11 78 20 - 328: TypeMatrix 26(fvec4) 4 - 330: 114(bool) ConstantTrue - 329: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 330 - 331(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 328 - 334: 6(int) Constant 45 - 335: 6(int) Constant 7 - 332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 - 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 - 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 - 340: 6(int) Constant 46 - 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 339 329 16 340 335 11 11 12 - 341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 342 19 16 327 11 18 342 11 12 332 336 337 338 - 343: TypeArray 331(Light) 12 - 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 341 12 - 345(UBO): TypeStruct 26(fvec4) 343 181(int) 181(int) - 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 333 27 16 334 335 11 11 12 - 349: 6(int) Constant 52 - 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 348 344 16 349 147 11 11 12 - 352: 6(int) Constant 54 - 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 351 183 16 352 10 11 11 12 - 353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 351 183 16 352 10 11 11 12 - 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 355 19 16 327 11 18 355 11 12 346 347 350 353 - 356: TypePointer Uniform 345(UBO) - 357(ubo): 356(ptr) Variable Uniform - 358: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 359 354 16 327 11 18 359 357(ubo) 147 - 361: TypePointer Uniform 328 - 373: 6(int) Constant 104 - 372: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 25 16 373 11 78 20 - 395: 6(int) Constant 117 - 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 394 70 16 395 11 15 20 - 396: TypeImage 23(float) 2D sampled format:Unknown - 397: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 136 11 16 395 11 18 137 138 12 - 398: TypeSampledImage 396 - 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 11 16 395 11 18 142 138 12 - 400: TypePointer UniformConstant 398 -401(samplerposition): 400(ptr) Variable UniformConstant - 402: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 403 399 16 395 11 18 403 401(samplerposition) 147 - 405: TypePointer Input 30(fvec2) - 406(inUV): 405(ptr) Variable Input - 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 408 31 16 395 11 18 408 406(inUV) 147 - 416: 6(int) Constant 118 - 414: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 415 70 16 416 11 15 20 -417(samplerNormal): 400(ptr) Variable UniformConstant - 418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 419 399 16 416 11 18 419 417(samplerNormal) 147 - 428: 6(int) Constant 119 - 426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 427 27 16 428 11 15 20 -429(samplerAlbedo): 400(ptr) Variable UniformConstant - 430: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 431 399 16 428 11 18 431 429(samplerAlbedo) 147 - 436: TypePointer Uniform 181(int) - 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 - 451: TypePointer Output 26(fvec4) -452(outFragColor): 451(ptr) Variable Output - 455: 6(int) Constant 125 - 453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 454 27 16 455 11 18 454 452(outFragColor) 147 - 456: 69(fvec3) ConstantComposite 92 92 92 - 461: TypePointer Output 23(float) - 508: 6(int) Constant 145 - 507: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 508 11 15 20 - 511: 23(float) Constant 1036831949 - 517: 6(int) Constant 147 - 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 516 70 16 517 11 15 20 - 523: 6(int) Constant 149 - 522: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 312 183 16 523 11 15 20 - 531: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 - 536: 6(int) Constant 152 - 534: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 535 70 16 536 11 15 20 - 538: TypePointer Uniform 26(fvec4) - 547: 6(int) Constant 154 - 546: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 547 11 15 20 - 557: 6(int) Constant 158 - 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 556 70 16 557 11 15 20 - 570: 6(int) Constant 161 - 568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 569 25 16 570 11 15 20 - 571: 23(float) Constant 1064781546 - 576: 6(int) Constant 162 - 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 575 25 16 576 11 15 20 - 577: 23(float) Constant 1063781322 - 582: 6(int) Constant 163 - 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 581 25 16 582 11 15 20 - 583: 23(float) Constant 1120403456 - 588: 6(int) Constant 166 - 586: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 587 70 16 588 11 15 20 - 603: 6(int) Constant 169 - 601: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 602 25 16 603 11 15 20 - 611: 6(int) Constant 170 + 207: 6(int) Constant 78 + 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 206 25 16 207 11 60 20 + 211: TypePointer Function 180(int) + 219: 6(int) Constant 79 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 218 25 16 219 11 60 20 + 230: 6(int) Constant 81 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 25 16 230 11 60 20 + 235: 6(int) Constant 82 + 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 182 16 235 11 60 20 + 240: 6(int) Constant 83 + 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 239 182 16 240 11 60 20 + 242: 180(int) Constant 1 + 246: 6(int) Constant 85 + 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 245 182 16 246 11 60 20 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 262: 6(int) Constant 87 + 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 182 16 262 11 60 20 + 273: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 308: 6(int) Constant 98 + 306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 307 182 16 308 11 78 20 + 316: 180(int) Constant 3 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 322: 6(int) Constant 100 + 320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 321 27 16 322 11 78 20 + 324: TypeMatrix 26(fvec4) 4 + 326: 114(bool) ConstantTrue + 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 326 + 327(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 324 + 330: 6(int) Constant 45 + 331: 6(int) Constant 7 + 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 + 332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 + 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 + 336: 6(int) Constant 46 + 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 335 325 16 336 331 11 11 12 + 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 338 19 16 322 11 18 338 11 12 328 332 333 334 + 339: TypeArray 327(Light) 12 + 340: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 337 12 + 341(UBO): TypeStruct 26(fvec4) 339 180(int) 180(int) + 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 + 345: 6(int) Constant 52 + 343: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 344 340 16 345 148 11 11 12 + 348: 6(int) Constant 54 + 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 347 182 16 348 10 11 11 12 + 349: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 347 182 16 348 10 11 11 12 + 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 351 19 16 322 11 18 351 11 12 342 343 346 349 + 352: TypePointer Uniform 341(UBO) + 353(ubo): 352(ptr) Variable Uniform + 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 355 350 16 322 11 18 355 353(ubo) 148 + 357: TypePointer Uniform 324 + 368: 6(int) Constant 104 + 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 25 16 368 11 78 20 + 388: 6(int) Constant 117 + 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 387 70 16 388 11 15 20 + 390: TypeImage 23(float) 2D sampled format:Unknown + 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 137 11 16 388 11 18 138 139 12 + 392: TypeSampledImage 390 + 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 11 16 388 11 18 143 139 12 + 394: TypePointer UniformConstant 392 +395(samplerposition): 394(ptr) Variable UniformConstant + 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 397 393 16 388 11 18 397 395(samplerposition) 148 + 399: TypePointer Input 30(fvec2) + 400(inUV): 399(ptr) Variable Input + 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 402 31 16 388 11 18 402 400(inUV) 148 + 409: 6(int) Constant 118 + 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 408 70 16 409 11 15 20 +411(samplerNormal): 394(ptr) Variable UniformConstant + 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 413 393 16 409 11 18 413 411(samplerNormal) 148 + 421: 6(int) Constant 119 + 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 420 27 16 421 11 15 20 +423(samplerAlbedo): 394(ptr) Variable UniformConstant + 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 425 393 16 421 11 18 425 423(samplerAlbedo) 148 + 429: TypePointer Uniform 180(int) + 432: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 444: TypePointer Output 26(fvec4) +445(outFragColor): 444(ptr) Variable Output + 448: 6(int) Constant 125 + 446: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 447 27 16 448 11 18 447 445(outFragColor) 148 + 449: 69(fvec3) ConstantComposite 93 93 93 + 454: TypePointer Output 23(float) + 501: 6(int) Constant 145 + 500: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 501 11 15 20 + 505: 23(float) Constant 1036831949 + 510: 6(int) Constant 147 + 508: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 509 70 16 510 11 15 20 + 516: 6(int) Constant 149 + 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 307 182 16 516 11 15 20 + 524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 529: 6(int) Constant 152 + 527: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 528 70 16 529 11 15 20 + 532: TypePointer Uniform 26(fvec4) + 540: 6(int) Constant 154 + 539: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 540 11 15 20 + 549: 6(int) Constant 158 + 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 548 70 16 549 11 15 20 + 561: 6(int) Constant 161 + 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 560 25 16 561 11 15 20 + 563: 23(float) Constant 1064781546 + 567: 6(int) Constant 162 + 565: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 566 25 16 567 11 15 20 + 569: 23(float) Constant 1063781322 + 573: 6(int) Constant 163 + 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 572 25 16 573 11 15 20 + 575: 23(float) Constant 1120403456 + 579: 6(int) Constant 166 + 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 578 70 16 579 11 15 20 + 594: 6(int) Constant 169 + 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 593 25 16 594 11 15 20 + 602: 6(int) Constant 170 + 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 601 25 16 602 11 15 20 + 611: 6(int) Constant 171 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 25 16 611 11 15 20 - 620: 6(int) Constant 171 - 618: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 619 25 16 620 11 15 20 - 628: 6(int) Constant 174 - 626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 627 25 16 628 11 15 20 - 637: 6(int) Constant 175 - 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 636 70 16 637 11 15 20 - 644: 6(int) Constant 178 - 642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 643 70 16 644 11 15 20 - 653: 6(int) Constant 179 - 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 652 25 16 653 11 15 20 - 662: 6(int) Constant 180 - 660: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 661 70 16 662 11 15 20 - 664: 23(float) Constant 1098907648 - 669: 23(float) Constant 1075838976 - 685: 181(int) Constant 2 - 701: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 619: 6(int) Constant 174 + 617: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 618 25 16 619 11 15 20 + 628: 6(int) Constant 175 + 626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 627 70 16 628 11 15 20 + 635: 6(int) Constant 178 + 633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 634 70 16 635 11 15 20 + 644: 6(int) Constant 179 + 642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 643 25 16 644 11 15 20 + 653: 6(int) Constant 180 + 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 652 70 16 653 11 15 20 + 656: 23(float) Constant 1098907648 + 661: 23(float) Constant 1075838976 + 676: 180(int) Constant 2 + 690: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 13(main): 3 Function None 4 22: Label - 392(fragPos): 71(ptr) Variable Function - 413(normal): 71(ptr) Variable Function - 425(albedo): 28(ptr) Variable Function - 457(param): 71(ptr) Variable Function - 458(param): 71(ptr) Variable Function - 506(fragcolor): 71(ptr) Variable Function - 514(N): 71(ptr) Variable Function - 521(i): 211(ptr) Variable Function - 533(L): 71(ptr) Variable Function - 545(dist): 29(ptr) Variable Function - 554(V): 71(ptr) Variable Function -567(lightCosInnerAngle): 29(ptr) Variable Function -573(lightCosOuterAngle): 29(ptr) Variable Function - 579(lightRange): 29(ptr) Variable Function - 585(dir): 71(ptr) Variable Function - 600(cosDir): 29(ptr) Variable Function - 608(spotEffect): 29(ptr) Variable Function -617(heightAttenuation): 29(ptr) Variable Function - 625(NdotL): 29(ptr) Variable Function - 634(diff): 71(ptr) Variable Function - 641(R): 71(ptr) Variable Function - 650(NdotR): 29(ptr) Variable Function - 659(spec): 71(ptr) Variable Function - 705(param): 71(ptr) Variable Function - 707(param): 71(ptr) Variable Function - 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 404: 398 Load 401(samplerposition) - 409: 30(fvec2) Load 406(inUV) - 410: 26(fvec4) ImageSampleImplicitLod 404 409 - 411: 69(fvec3) VectorShuffle 410 410 0 1 2 - Store 392(fragPos) 411 - 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 393 411 47 - 420: 398 Load 417(samplerNormal) - 421: 30(fvec2) Load 406(inUV) - 422: 26(fvec4) ImageSampleImplicitLod 420 421 - 423: 69(fvec3) VectorShuffle 422 422 0 1 2 - Store 413(normal) 423 - 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 414 423 47 - 432: 398 Load 429(samplerAlbedo) - 433: 30(fvec2) Load 406(inUV) - 434: 26(fvec4) ImageSampleImplicitLod 432 433 - Store 425(albedo) 434 - 435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 426 434 47 - 437: 436(ptr) AccessChain 357(ubo) 321 - 438: 181(int) Load 437 - 440: 114(bool) SGreaterThan 438 192 - SelectionMerge 442 None - BranchConditional 440 441 442 - 441: Label - 443: 436(ptr) AccessChain 357(ubo) 321 - 444: 181(int) Load 443 - SelectionMerge 450 None - Switch 444 450 - case 1: 445 - case 2: 446 - case 3: 447 - case 4: 448 - case 5: 449 - 445: Label - Store 457(param) 456 - 459: 69(fvec3) Load 392(fragPos) - Store 458(param) 459 - 460: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 457(param) 458(param) - 462: 461(ptr) AccessChain 452(outFragColor) 11 - 463: 23(float) CompositeExtract 460 0 - Store 462 463 - 464: 461(ptr) AccessChain 452(outFragColor) 19 - 465: 23(float) CompositeExtract 460 1 - Store 464 465 - 466: 461(ptr) AccessChain 452(outFragColor) 21 - 467: 23(float) CompositeExtract 460 2 - Store 466 467 - Branch 450 - 446: Label - 469: 69(fvec3) Load 392(fragPos) - 470: 461(ptr) AccessChain 452(outFragColor) 11 - 471: 23(float) CompositeExtract 469 0 - Store 470 471 - 472: 461(ptr) AccessChain 452(outFragColor) 19 - 473: 23(float) CompositeExtract 469 1 - Store 472 473 - 474: 461(ptr) AccessChain 452(outFragColor) 21 - 475: 23(float) CompositeExtract 469 2 - Store 474 475 - Branch 450 - 447: Label - 477: 69(fvec3) Load 413(normal) - 478: 461(ptr) AccessChain 452(outFragColor) 11 - 479: 23(float) CompositeExtract 477 0 - Store 478 479 - 480: 461(ptr) AccessChain 452(outFragColor) 19 - 481: 23(float) CompositeExtract 477 1 + 385(fragPos): 71(ptr) Variable Function + 406(normal): 71(ptr) Variable Function + 418(albedo): 28(ptr) Variable Function + 450(param): 71(ptr) Variable Function + 451(param): 71(ptr) Variable Function + 499(fragcolor): 71(ptr) Variable Function + 507(N): 71(ptr) Variable Function + 514(i): 211(ptr) Variable Function + 526(L): 71(ptr) Variable Function + 538(dist): 29(ptr) Variable Function + 546(V): 71(ptr) Variable Function +558(lightCosInnerAngle): 29(ptr) Variable Function +564(lightCosOuterAngle): 29(ptr) Variable Function + 570(lightRange): 29(ptr) Variable Function + 576(dir): 71(ptr) Variable Function + 591(cosDir): 29(ptr) Variable Function + 599(spotEffect): 29(ptr) Variable Function +608(heightAttenuation): 29(ptr) Variable Function + 616(NdotL): 29(ptr) Variable Function + 625(diff): 71(ptr) Variable Function + 632(R): 71(ptr) Variable Function + 641(NdotR): 29(ptr) Variable Function + 650(spec): 71(ptr) Variable Function + 694(param): 71(ptr) Variable Function + 696(param): 71(ptr) Variable Function + 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 386 385(fragPos) 47 + 398: 392 Load 395(samplerposition) + 403: 30(fvec2) Load 400(inUV) + 404: 26(fvec4) ImageSampleImplicitLod 398 403 + 405: 69(fvec3) VectorShuffle 404 404 0 1 2 + Store 385(fragPos) 405 + 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 407 406(normal) 47 + 414: 392 Load 411(samplerNormal) + 415: 30(fvec2) Load 400(inUV) + 416: 26(fvec4) ImageSampleImplicitLod 414 415 + 417: 69(fvec3) VectorShuffle 416 416 0 1 2 + Store 406(normal) 417 + 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 419 418(albedo) 47 + 426: 392 Load 423(samplerAlbedo) + 427: 30(fvec2) Load 400(inUV) + 428: 26(fvec4) ImageSampleImplicitLod 426 427 + Store 418(albedo) 428 + 430: 429(ptr) AccessChain 353(ubo) 316 + 431: 180(int) Load 430 + 433: 114(bool) SGreaterThan 431 192 + SelectionMerge 435 None + BranchConditional 433 434 435 + 434: Label + 436: 429(ptr) AccessChain 353(ubo) 316 + 437: 180(int) Load 436 + SelectionMerge 443 None + Switch 437 443 + case 1: 438 + case 2: 439 + case 3: 440 + case 4: 441 + case 5: 442 + 438: Label + Store 450(param) 449 + 452: 69(fvec3) Load 385(fragPos) + Store 451(param) 452 + 453: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 450(param) 451(param) + 455: 454(ptr) AccessChain 445(outFragColor) 11 + 456: 23(float) CompositeExtract 453 0 + Store 455 456 + 457: 454(ptr) AccessChain 445(outFragColor) 19 + 458: 23(float) CompositeExtract 453 1 + Store 457 458 + 459: 454(ptr) AccessChain 445(outFragColor) 21 + 460: 23(float) CompositeExtract 453 2 + Store 459 460 + Branch 443 + 439: Label + 462: 69(fvec3) Load 385(fragPos) + 463: 454(ptr) AccessChain 445(outFragColor) 11 + 464: 23(float) CompositeExtract 462 0 + Store 463 464 + 465: 454(ptr) AccessChain 445(outFragColor) 19 + 466: 23(float) CompositeExtract 462 1 + Store 465 466 + 467: 454(ptr) AccessChain 445(outFragColor) 21 + 468: 23(float) CompositeExtract 462 2 + Store 467 468 + Branch 443 + 440: Label + 470: 69(fvec3) Load 406(normal) + 471: 454(ptr) AccessChain 445(outFragColor) 11 + 472: 23(float) CompositeExtract 470 0 + Store 471 472 + 473: 454(ptr) AccessChain 445(outFragColor) 19 + 474: 23(float) CompositeExtract 470 1 + Store 473 474 + 475: 454(ptr) AccessChain 445(outFragColor) 21 + 476: 23(float) CompositeExtract 470 2 + Store 475 476 + Branch 443 + 441: Label + 478: 26(fvec4) Load 418(albedo) + 479: 69(fvec3) VectorShuffle 478 478 0 1 2 + 480: 454(ptr) AccessChain 445(outFragColor) 11 + 481: 23(float) CompositeExtract 479 0 Store 480 481 - 482: 461(ptr) AccessChain 452(outFragColor) 21 - 483: 23(float) CompositeExtract 477 2 + 482: 454(ptr) AccessChain 445(outFragColor) 19 + 483: 23(float) CompositeExtract 479 1 Store 482 483 - Branch 450 - 448: Label - 485: 26(fvec4) Load 425(albedo) - 486: 69(fvec3) VectorShuffle 485 485 0 1 2 - 487: 461(ptr) AccessChain 452(outFragColor) 11 - 488: 23(float) CompositeExtract 486 0 - Store 487 488 - 489: 461(ptr) AccessChain 452(outFragColor) 19 - 490: 23(float) CompositeExtract 486 1 + 484: 454(ptr) AccessChain 445(outFragColor) 21 + 485: 23(float) CompositeExtract 479 2 + Store 484 485 + Branch 443 + 442: Label + 487: 26(fvec4) Load 418(albedo) + 488: 69(fvec3) VectorShuffle 487 487 3 3 3 + 489: 454(ptr) AccessChain 445(outFragColor) 11 + 490: 23(float) CompositeExtract 488 0 Store 489 490 - 491: 461(ptr) AccessChain 452(outFragColor) 21 - 492: 23(float) CompositeExtract 486 2 + 491: 454(ptr) AccessChain 445(outFragColor) 19 + 492: 23(float) CompositeExtract 488 1 Store 491 492 - Branch 450 - 449: Label - 494: 26(fvec4) Load 425(albedo) - 495: 69(fvec3) VectorShuffle 494 494 3 3 3 - 496: 461(ptr) AccessChain 452(outFragColor) 11 - 497: 23(float) CompositeExtract 495 0 - Store 496 497 - 498: 461(ptr) AccessChain 452(outFragColor) 19 - 499: 23(float) CompositeExtract 495 1 - Store 498 499 - 500: 461(ptr) AccessChain 452(outFragColor) 21 - 501: 23(float) CompositeExtract 495 2 - Store 500 501 - Branch 450 - 450: Label - 504: 461(ptr) AccessChain 452(outFragColor) 12 - Store 504 92 + 493: 454(ptr) AccessChain 445(outFragColor) 21 + 494: 23(float) CompositeExtract 488 2 + Store 493 494 + Branch 443 + 443: Label + 497: 454(ptr) AccessChain 445(outFragColor) 12 + Store 497 93 Return - 442: Label - 509: 26(fvec4) Load 425(albedo) - 510: 69(fvec3) VectorShuffle 509 509 0 1 2 - 512: 69(fvec3) VectorTimesScalar 510 511 - Store 506(fragcolor) 512 - 513: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 512 47 - 518: 69(fvec3) Load 413(normal) - 519: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 518 - Store 514(N) 519 - 520: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 519 47 - Store 521(i) 192 - 524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 522 192 47 - Branch 525 - 525: Label - LoopMerge 527 528 None - Branch 529 - 529: Label - 530: 181(int) Load 521(i) - 532: 114(bool) SLessThan 530 321 - BranchConditional 532 526 527 - 526: Label - 537: 181(int) Load 521(i) - 539: 538(ptr) AccessChain 357(ubo) 242 537 192 - 540: 26(fvec4) Load 539 - 541: 69(fvec3) VectorShuffle 540 540 0 1 2 - 542: 69(fvec3) Load 392(fragPos) - 543: 69(fvec3) FSub 541 542 - Store 533(L) 543 - 544: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 534 543 47 - 548: 69(fvec3) Load 533(L) - 549: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 548 - Store 545(dist) 549 - 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 546 549 47 - 551: 69(fvec3) Load 533(L) - 552: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 551 - Store 533(L) 552 - 553: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 534 552 47 - 558: 538(ptr) AccessChain 357(ubo) 192 - 559: 26(fvec4) Load 558 - 560: 69(fvec3) VectorShuffle 559 559 0 1 2 - 561: 69(fvec3) Load 392(fragPos) - 562: 69(fvec3) FSub 560 561 - Store 554(V) 562 - 563: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 555 562 47 - 564: 69(fvec3) Load 554(V) - 565: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 564 - Store 554(V) 565 - 566: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 555 565 47 - Store 567(lightCosInnerAngle) 571 - 572: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 568 571 47 - Store 573(lightCosOuterAngle) 577 - 578: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 574 577 47 - Store 579(lightRange) 583 - 584: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 580 583 47 - 589: 181(int) Load 521(i) - 590: 538(ptr) AccessChain 357(ubo) 242 589 192 - 591: 26(fvec4) Load 590 - 592: 69(fvec3) VectorShuffle 591 591 0 1 2 - 593: 181(int) Load 521(i) - 594: 538(ptr) AccessChain 357(ubo) 242 593 242 - 595: 26(fvec4) Load 594 - 596: 69(fvec3) VectorShuffle 595 595 0 1 2 - 597: 69(fvec3) FSub 592 596 - 598: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 597 - Store 585(dir) 598 - 599: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 586 598 47 - 604: 69(fvec3) Load 533(L) - 605: 69(fvec3) Load 585(dir) - 606: 23(float) Dot 604 605 - Store 600(cosDir) 606 - 607: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 601 606 47 - 612: 23(float) Load 573(lightCosOuterAngle) - 613: 23(float) Load 567(lightCosInnerAngle) - 614: 23(float) Load 600(cosDir) - 615: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 612 613 614 - Store 608(spotEffect) 615 - 616: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 609 615 47 - 621: 23(float) Load 579(lightRange) - 622: 23(float) Load 545(dist) - 623: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 621 162 622 - Store 617(heightAttenuation) 623 - 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 618 623 47 - 629: 69(fvec3) Load 514(N) - 630: 69(fvec3) Load 533(L) - 631: 23(float) Dot 629 630 - 632: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 631 - Store 625(NdotL) 632 - 633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 626 632 47 - 638: 23(float) Load 625(NdotL) - 639: 69(fvec3) CompositeConstruct 638 638 638 - Store 634(diff) 639 - 640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 635 639 47 - 645: 69(fvec3) Load 533(L) - 646: 69(fvec3) FNegate 645 - 647: 69(fvec3) Load 514(N) - 648: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 646 647 - Store 641(R) 648 - 649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 642 648 47 - 654: 69(fvec3) Load 641(R) - 655: 69(fvec3) Load 554(V) - 656: 23(float) Dot 654 655 - 657: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 656 - Store 650(NdotR) 657 - 658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 651 657 47 - 663: 23(float) Load 650(NdotR) - 665: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 663 664 - 666: 29(ptr) AccessChain 425(albedo) 12 - 667: 23(float) Load 666 - 668: 23(float) FMul 665 667 - 670: 23(float) FMul 668 669 - 671: 69(fvec3) CompositeConstruct 670 670 670 - Store 659(spec) 671 - 672: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 660 671 47 - 673: 69(fvec3) Load 634(diff) - 674: 69(fvec3) Load 659(spec) - 675: 69(fvec3) FAdd 673 674 - 676: 23(float) Load 608(spotEffect) - 677: 69(fvec3) VectorTimesScalar 675 676 - 678: 23(float) Load 617(heightAttenuation) - 679: 69(fvec3) VectorTimesScalar 677 678 - 680: 23(float) CompositeExtract 679 0 - 681: 23(float) CompositeExtract 679 1 - 682: 23(float) CompositeExtract 679 2 - 683: 69(fvec3) CompositeConstruct 680 681 682 - 684: 181(int) Load 521(i) - 686: 538(ptr) AccessChain 357(ubo) 242 684 685 - 687: 26(fvec4) Load 686 - 688: 69(fvec3) VectorShuffle 687 687 0 1 2 - 689: 69(fvec3) FMul 683 688 - 690: 26(fvec4) Load 425(albedo) - 691: 69(fvec3) VectorShuffle 690 690 0 1 2 - 692: 69(fvec3) FMul 689 691 - 693: 69(fvec3) Load 506(fragcolor) - 694: 69(fvec3) FAdd 693 692 - Store 506(fragcolor) 694 - 695: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 694 47 - Branch 528 - 528: Label - 696: 181(int) Load 521(i) - 697: 181(int) IAdd 696 242 - Store 521(i) 697 - 698: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 522 697 47 - Branch 525 - 527: Label - 699: 436(ptr) AccessChain 357(ubo) 685 - 700: 181(int) Load 699 - 702: 114(bool) SGreaterThan 700 192 - SelectionMerge 704 None - BranchConditional 702 703 704 - 703: Label - 706: 69(fvec3) Load 506(fragcolor) - Store 705(param) 706 - 708: 69(fvec3) Load 392(fragPos) - Store 707(param) 708 - 709: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 705(param) 707(param) - Store 506(fragcolor) 709 - 710: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 507 709 47 - Branch 704 - 704: Label - 711: 69(fvec3) Load 506(fragcolor) - 712: 23(float) CompositeExtract 711 0 - 713: 23(float) CompositeExtract 711 1 - 714: 23(float) CompositeExtract 711 2 - 715: 26(fvec4) CompositeConstruct 712 713 714 92 - Store 452(outFragColor) 715 + 435: Label + 502: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 500 499(fragcolor) 47 + 503: 26(fvec4) Load 418(albedo) + 504: 69(fvec3) VectorShuffle 503 503 0 1 2 + 506: 69(fvec3) VectorTimesScalar 504 505 + Store 499(fragcolor) 506 + 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 508 507(N) 47 + 512: 69(fvec3) Load 406(normal) + 513: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 512 + Store 507(N) 513 + 517: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 515 514(i) 47 + Store 514(i) 192 + Branch 518 + 518: Label + LoopMerge 520 521 None + Branch 522 + 522: Label + 523: 180(int) Load 514(i) + 525: 114(bool) SLessThan 523 316 + BranchConditional 525 519 520 + 519: Label + 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 527 526(L) 47 + 531: 180(int) Load 514(i) + 533: 532(ptr) AccessChain 353(ubo) 242 531 192 + 534: 26(fvec4) Load 533 + 535: 69(fvec3) VectorShuffle 534 534 0 1 2 + 536: 69(fvec3) Load 385(fragPos) + 537: 69(fvec3) FSub 535 536 + Store 526(L) 537 + 541: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 539 538(dist) 47 + 542: 69(fvec3) Load 526(L) + 543: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 542 + Store 538(dist) 543 + 544: 69(fvec3) Load 526(L) + 545: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544 + Store 526(L) 545 + 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 547 546(V) 47 + 551: 532(ptr) AccessChain 353(ubo) 192 + 552: 26(fvec4) Load 551 + 553: 69(fvec3) VectorShuffle 552 552 0 1 2 + 554: 69(fvec3) Load 385(fragPos) + 555: 69(fvec3) FSub 553 554 + Store 546(V) 555 + 556: 69(fvec3) Load 546(V) + 557: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 556 + Store 546(V) 557 + 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 559 558(lightCosInnerAngle) 47 + Store 558(lightCosInnerAngle) 563 + 568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 565 564(lightCosOuterAngle) 47 + Store 564(lightCosOuterAngle) 569 + 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 571 570(lightRange) 47 + Store 570(lightRange) 575 + 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 577 576(dir) 47 + 581: 180(int) Load 514(i) + 582: 532(ptr) AccessChain 353(ubo) 242 581 192 + 583: 26(fvec4) Load 582 + 584: 69(fvec3) VectorShuffle 583 583 0 1 2 + 585: 180(int) Load 514(i) + 586: 532(ptr) AccessChain 353(ubo) 242 585 242 + 587: 26(fvec4) Load 586 + 588: 69(fvec3) VectorShuffle 587 587 0 1 2 + 589: 69(fvec3) FSub 584 588 + 590: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 589 + Store 576(dir) 590 + 595: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 592 591(cosDir) 47 + 596: 69(fvec3) Load 526(L) + 597: 69(fvec3) Load 576(dir) + 598: 23(float) Dot 596 597 + Store 591(cosDir) 598 + 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 600 599(spotEffect) 47 + 604: 23(float) Load 564(lightCosOuterAngle) + 605: 23(float) Load 558(lightCosInnerAngle) + 606: 23(float) Load 591(cosDir) + 607: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 604 605 606 + Store 599(spotEffect) 607 + 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(heightAttenuation) 47 + 613: 23(float) Load 570(lightRange) + 614: 23(float) Load 538(dist) + 615: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 613 162 614 + Store 608(heightAttenuation) 615 + 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 617 616(NdotL) 47 + 621: 69(fvec3) Load 507(N) + 622: 69(fvec3) Load 526(L) + 623: 23(float) Dot 621 622 + 624: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 623 + Store 616(NdotL) 624 + 629: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 626 625(diff) 47 + 630: 23(float) Load 616(NdotL) + 631: 69(fvec3) CompositeConstruct 630 630 630 + Store 625(diff) 631 + 636: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 633 632(R) 47 + 637: 69(fvec3) Load 526(L) + 638: 69(fvec3) FNegate 637 + 639: 69(fvec3) Load 507(N) + 640: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 638 639 + Store 632(R) 640 + 645: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 642 641(NdotR) 47 + 646: 69(fvec3) Load 632(R) + 647: 69(fvec3) Load 546(V) + 648: 23(float) Dot 646 647 + 649: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 648 + Store 641(NdotR) 649 + 654: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 651 650(spec) 47 + 655: 23(float) Load 641(NdotR) + 657: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 655 656 + 658: 29(ptr) AccessChain 418(albedo) 12 + 659: 23(float) Load 658 + 660: 23(float) FMul 657 659 + 662: 23(float) FMul 660 661 + 663: 69(fvec3) CompositeConstruct 662 662 662 + Store 650(spec) 663 + 664: 69(fvec3) Load 625(diff) + 665: 69(fvec3) Load 650(spec) + 666: 69(fvec3) FAdd 664 665 + 667: 23(float) Load 599(spotEffect) + 668: 69(fvec3) VectorTimesScalar 666 667 + 669: 23(float) Load 608(heightAttenuation) + 670: 69(fvec3) VectorTimesScalar 668 669 + 671: 23(float) CompositeExtract 670 0 + 672: 23(float) CompositeExtract 670 1 + 673: 23(float) CompositeExtract 670 2 + 674: 69(fvec3) CompositeConstruct 671 672 673 + 675: 180(int) Load 514(i) + 677: 532(ptr) AccessChain 353(ubo) 242 675 676 + 678: 26(fvec4) Load 677 + 679: 69(fvec3) VectorShuffle 678 678 0 1 2 + 680: 69(fvec3) FMul 674 679 + 681: 26(fvec4) Load 418(albedo) + 682: 69(fvec3) VectorShuffle 681 681 0 1 2 + 683: 69(fvec3) FMul 680 682 + 684: 69(fvec3) Load 499(fragcolor) + 685: 69(fvec3) FAdd 684 683 + Store 499(fragcolor) 685 + Branch 521 + 521: Label + 686: 180(int) Load 514(i) + 687: 180(int) IAdd 686 242 + Store 514(i) 687 + Branch 518 + 520: Label + 688: 429(ptr) AccessChain 353(ubo) 676 + 689: 180(int) Load 688 + 691: 114(bool) SGreaterThan 689 192 + SelectionMerge 693 None + BranchConditional 691 692 693 + 692: Label + 695: 69(fvec3) Load 499(fragcolor) + Store 694(param) 695 + 697: 69(fvec3) Load 385(fragPos) + Store 696(param) 697 + 698: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 694(param) 696(param) + Store 499(fragcolor) 698 + Branch 693 + 693: Label + 699: 69(fvec3) Load 499(fragcolor) + 700: 23(float) CompositeExtract 699 0 + 701: 23(float) CompositeExtract 699 1 + 702: 23(float) CompositeExtract 699 2 + 703: 26(fvec4) CompositeConstruct 700 701 702 93 + Store 445(outFragColor) 703 Return FunctionEnd 38(textureProj(vf4;f1;vf2;): 23(float) Function None 33 @@ -690,15 +685,15 @@ Validation failed 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 36(layer) 47 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 37(offset) 47 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(textureProj(vf4;f1;vf2;) - Store 89(shadow) 92 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 90 92 47 - 98: 26(fvec4) Load 35(P) - 99: 29(ptr) AccessChain 35(P) 12 - 100: 23(float) Load 99 - 101: 26(fvec4) CompositeConstruct 100 100 100 100 - 102: 26(fvec4) FDiv 98 101 - Store 94(shadowCoord) 102 - 103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 95 102 47 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 90 89(shadow) 47 + Store 89(shadow) 93 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 95 94(shadowCoord) 47 + 99: 26(fvec4) Load 35(P) + 100: 29(ptr) AccessChain 35(P) 12 + 101: 23(float) Load 100 + 102: 26(fvec4) CompositeConstruct 101 101 101 101 + 103: 26(fvec4) FDiv 99 102 + Store 94(shadowCoord) 103 104: 26(fvec4) Load 94(shadowCoord) 105: 30(fvec2) VectorShuffle 104 104 0 1 107: 30(fvec2) VectorTimesScalar 105 106 @@ -718,26 +713,26 @@ Validation failed 121: Label 123: 29(ptr) AccessChain 94(shadowCoord) 21 124: 23(float) Load 123 - 126: 114(bool) FOrdLessThan 124 92 + 126: 114(bool) FOrdLessThan 124 93 Branch 122 122: Label 127: 114(bool) Phi 120 41 126 121 SelectionMerge 129 None BranchConditional 127 128 129 128: Label - 148: 139 Load 144(samplerShadowMap) - 149: 26(fvec4) Load 94(shadowCoord) - 150: 30(fvec2) VectorShuffle 149 149 0 1 - 151: 30(fvec2) Load 37(offset) - 152: 30(fvec2) FAdd 150 151 - 153: 23(float) Load 36(layer) - 154: 23(float) CompositeExtract 152 0 - 155: 23(float) CompositeExtract 152 1 - 156: 69(fvec3) CompositeConstruct 154 155 153 - 157: 26(fvec4) ImageSampleImplicitLod 148 156 - 158: 23(float) CompositeExtract 157 0 - Store 130(dist) 158 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 131 158 47 + 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 130(dist) 47 + 149: 140 Load 145(samplerShadowMap) + 150: 26(fvec4) Load 94(shadowCoord) + 151: 30(fvec2) VectorShuffle 150 150 0 1 + 152: 30(fvec2) Load 37(offset) + 153: 30(fvec2) FAdd 151 152 + 154: 23(float) Load 36(layer) + 155: 23(float) CompositeExtract 153 0 + 156: 23(float) CompositeExtract 153 1 + 157: 69(fvec3) CompositeConstruct 155 156 154 + 158: 26(fvec4) ImageSampleImplicitLod 149 157 + 159: 23(float) CompositeExtract 158 0 + Store 130(dist) 159 160: 29(ptr) AccessChain 94(shadowCoord) 12 161: 23(float) Load 160 164: 114(bool) FOrdGreaterThan 161 162 @@ -755,195 +750,188 @@ Validation failed BranchConditional 172 173 174 173: Label Store 89(shadow) 175 - 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 90 175 47 Branch 174 174: Label Branch 129 129: Label - 177: 23(float) Load 89(shadow) - ReturnValue 177 + 176: 23(float) Load 89(shadow) + ReturnValue 176 FunctionEnd 58(filterPCF(vf4;f1;): 23(float) Function None 54 56(sc): 28(ptr) FunctionParameter 57(layer): 29(ptr) FunctionParameter 61: Label - 187(texDim): 186(ptr) Variable Function - 199(scale): 29(ptr) Variable Function - 205(dx): 29(ptr) Variable Function - 217(dy): 29(ptr) Variable Function -228(shadowFactor): 29(ptr) Variable Function - 233(count): 211(ptr) Variable Function - 238(range): 211(ptr) Variable Function - 244(x): 211(ptr) Variable Function - 260(y): 211(ptr) Variable Function - 285(param): 28(ptr) Variable Function - 287(param): 29(ptr) Variable Function - 289(param): 32(ptr) Variable Function + 186(texDim): 185(ptr) Variable Function + 198(scale): 29(ptr) Variable Function + 204(dx): 29(ptr) Variable Function + 216(dy): 29(ptr) Variable Function +227(shadowFactor): 29(ptr) Variable Function + 232(count): 211(ptr) Variable Function + 237(range): 211(ptr) Variable Function + 243(x): 211(ptr) Variable Function + 259(y): 211(ptr) Variable Function + 284(param): 28(ptr) Variable Function + 286(param): 29(ptr) Variable Function + 288(param): 32(ptr) Variable Function 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 60 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 64 56(sc) 47 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 67 57(layer) 47 - 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 60 58(filterPCF(vf4;f1;) - 191: 139 Load 144(samplerShadowMap) - 193: 134 Image 191 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 60 58(filterPCF(vf4;f1;) + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 187 186(texDim) 47 + 191: 140 Load 145(samplerShadowMap) + 193: 135 Image 191 196: 194(ivec3) ImageQuerySizeLod 193 192 - 197: 184(ivec2) VectorShuffle 196 196 0 1 - Store 187(texDim) 197 - 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 188 197 47 - Store 199(scale) 203 - 204: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 200 203 47 - 209: 23(float) Load 199(scale) - 210: 23(float) FMul 209 92 - 212: 211(ptr) AccessChain 187(texDim) 11 - 213: 181(int) Load 212 + 197: 183(ivec2) VectorShuffle 196 196 0 1 + Store 186(texDim) 197 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 199 198(scale) 47 + Store 198(scale) 203 + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 205 204(dx) 47 + 209: 23(float) Load 198(scale) + 210: 23(float) FMul 209 93 + 212: 211(ptr) AccessChain 186(texDim) 11 + 213: 180(int) Load 212 214: 23(float) ConvertSToF 213 215: 23(float) FDiv 210 214 - Store 205(dx) 215 - 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 206 215 47 - 221: 23(float) Load 199(scale) - 222: 23(float) FMul 221 92 - 223: 211(ptr) AccessChain 187(texDim) 19 - 224: 181(int) Load 223 + Store 204(dx) 215 + 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 217 216(dy) 47 + 221: 23(float) Load 198(scale) + 222: 23(float) FMul 221 93 + 223: 211(ptr) AccessChain 186(texDim) 19 + 224: 180(int) Load 223 225: 23(float) ConvertSToF 224 226: 23(float) FDiv 222 225 - Store 217(dy) 226 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 218 226 47 - Store 228(shadowFactor) 162 - 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 162 47 - Store 233(count) 192 - 237: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 234 192 47 - Store 238(range) 242 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 239 242 47 - 248: 181(int) Load 238(range) - 249: 181(int) SNegate 248 - Store 244(x) 249 - 250: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 249 47 - Branch 251 - 251: Label - LoopMerge 253 254 None - Branch 255 - 255: Label - 256: 181(int) Load 244(x) - 257: 181(int) Load 238(range) - 259: 114(bool) SLessThanEqual 256 257 - BranchConditional 259 252 253 - 252: Label - 264: 181(int) Load 238(range) - 265: 181(int) SNegate 264 - Store 260(y) 265 - 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 261 265 47 - Branch 267 - 267: Label - LoopMerge 269 270 None - Branch 271 - 271: Label - 272: 181(int) Load 260(y) - 273: 181(int) Load 238(range) - 275: 114(bool) SLessThanEqual 272 273 - BranchConditional 275 268 269 - 268: Label - 276: 23(float) Load 205(dx) - 277: 181(int) Load 244(x) - 278: 23(float) ConvertSToF 277 - 279: 23(float) FMul 276 278 - 280: 23(float) Load 217(dy) - 281: 181(int) Load 260(y) - 282: 23(float) ConvertSToF 281 - 283: 23(float) FMul 280 282 - 284: 30(fvec2) CompositeConstruct 279 283 - 286: 26(fvec4) Load 56(sc) - Store 285(param) 286 - 288: 23(float) Load 57(layer) - Store 287(param) 288 - Store 289(param) 284 - 290: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 285(param) 287(param) 289(param) - 291: 23(float) Load 228(shadowFactor) - 292: 23(float) FAdd 291 290 - Store 228(shadowFactor) 292 - 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 292 47 - 294: 181(int) Load 233(count) - 295: 181(int) IAdd 294 242 - Store 233(count) 295 - 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 234 295 47 - Branch 270 - 270: Label - 297: 181(int) Load 260(y) - 298: 181(int) IAdd 297 242 - Store 260(y) 298 - 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 261 298 47 - Branch 267 - 269: Label - Branch 254 - 254: Label - 300: 181(int) Load 244(x) - 301: 181(int) IAdd 300 242 - Store 244(x) 301 - 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 301 47 - Branch 251 - 253: Label - 303: 23(float) Load 228(shadowFactor) - 304: 181(int) Load 233(count) - 305: 23(float) ConvertSToF 304 - 306: 23(float) FDiv 303 305 - ReturnValue 306 + Store 216(dy) 226 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 228 227(shadowFactor) 47 + Store 227(shadowFactor) 162 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(count) 47 + Store 232(count) 192 + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 238 237(range) 47 + Store 237(range) 242 + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 244 243(x) 47 + 248: 180(int) Load 237(range) + 249: 180(int) SNegate 248 + Store 243(x) 249 + Branch 250 + 250: Label + LoopMerge 252 253 None + Branch 254 + 254: Label + 255: 180(int) Load 243(x) + 256: 180(int) Load 237(range) + 258: 114(bool) SLessThanEqual 255 256 + BranchConditional 258 251 252 + 251: Label + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 260 259(y) 47 + 264: 180(int) Load 237(range) + 265: 180(int) SNegate 264 + Store 259(y) 265 + Branch 266 + 266: Label + LoopMerge 268 269 None + Branch 270 + 270: Label + 271: 180(int) Load 259(y) + 272: 180(int) Load 237(range) + 274: 114(bool) SLessThanEqual 271 272 + BranchConditional 274 267 268 + 267: Label + 275: 23(float) Load 204(dx) + 276: 180(int) Load 243(x) + 277: 23(float) ConvertSToF 276 + 278: 23(float) FMul 275 277 + 279: 23(float) Load 216(dy) + 280: 180(int) Load 259(y) + 281: 23(float) ConvertSToF 280 + 282: 23(float) FMul 279 281 + 283: 30(fvec2) CompositeConstruct 278 282 + 285: 26(fvec4) Load 56(sc) + Store 284(param) 285 + 287: 23(float) Load 57(layer) + Store 286(param) 287 + Store 288(param) 283 + 289: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 284(param) 286(param) 288(param) + 290: 23(float) Load 227(shadowFactor) + 291: 23(float) FAdd 290 289 + Store 227(shadowFactor) 291 + 292: 180(int) Load 232(count) + 293: 180(int) IAdd 292 242 + Store 232(count) 293 + Branch 269 + 269: Label + 294: 180(int) Load 259(y) + 295: 180(int) IAdd 294 242 + Store 259(y) 295 + Branch 266 + 268: Label + Branch 253 + 253: Label + 296: 180(int) Load 243(x) + 297: 180(int) IAdd 296 242 + Store 243(x) 297 + Branch 250 + 252: Label + 298: 23(float) Load 227(shadowFactor) + 299: 180(int) Load 232(count) + 300: 23(float) ConvertSToF 299 + 301: 23(float) FDiv 298 300 + ReturnValue 301 FunctionEnd 76(shadow(vf3;vf3;): 69(fvec3) Function None 72 74(fragcolor): 71(ptr) FunctionParameter 75(fragpos): 71(ptr) FunctionParameter 79: Label - 310(i): 211(ptr) Variable Function - 324(shadowClip): 28(ptr) Variable Function -371(shadowFactor): 29(ptr) Variable Function - 376(param): 28(ptr) Variable Function - 378(param): 29(ptr) Variable Function + 305(i): 211(ptr) Variable Function + 319(shadowClip): 28(ptr) Variable Function +366(shadowFactor): 29(ptr) Variable Function + 372(param): 28(ptr) Variable Function + 374(param): 29(ptr) Variable Function 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 78 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 82 74(fragcolor) 47 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 85 75(fragpos) 47 - 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 78 76(shadow(vf3;vf3;) - Store 310(i) 192 - 314: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 311 192 47 - Branch 315 - 315: Label - LoopMerge 317 318 None - Branch 319 - 319: Label - 320: 181(int) Load 310(i) - 323: 114(bool) SLessThan 320 321 - BranchConditional 323 316 317 - 316: Label - 360: 181(int) Load 310(i) - 362: 361(ptr) AccessChain 357(ubo) 242 360 321 - 363: 328 Load 362 - 364: 69(fvec3) Load 75(fragpos) - 365: 23(float) CompositeExtract 364 0 - 366: 23(float) CompositeExtract 364 1 - 367: 23(float) CompositeExtract 364 2 - 368: 26(fvec4) CompositeConstruct 365 366 367 92 - 369: 26(fvec4) MatrixTimesVector 363 368 - Store 324(shadowClip) 369 - 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 325 369 47 - 374: 181(int) Load 310(i) - 375: 23(float) ConvertSToF 374 - 377: 26(fvec4) Load 324(shadowClip) - Store 376(param) 377 - Store 378(param) 375 - 379: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 376(param) 378(param) - Store 371(shadowFactor) 379 - 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 372 379 47 - 381: 23(float) Load 371(shadowFactor) - 382: 69(fvec3) Load 74(fragcolor) - 383: 69(fvec3) VectorTimesScalar 382 381 - Store 74(fragcolor) 383 - 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 82 383 47 - Branch 318 - 318: Label - 385: 181(int) Load 310(i) - 386: 181(int) IAdd 385 242 - Store 310(i) 386 - 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 311 386 47 - Branch 315 - 317: Label - 388: 69(fvec3) Load 74(fragcolor) - ReturnValue 388 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 78 76(shadow(vf3;vf3;) + 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 306 305(i) 47 + Store 305(i) 192 + Branch 310 + 310: Label + LoopMerge 312 313 None + Branch 314 + 314: Label + 315: 180(int) Load 305(i) + 318: 114(bool) SLessThan 315 316 + BranchConditional 318 311 312 + 311: Label + 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 320 319(shadowClip) 47 + 356: 180(int) Load 305(i) + 358: 357(ptr) AccessChain 353(ubo) 242 356 316 + 359: 324 Load 358 + 360: 69(fvec3) Load 75(fragpos) + 361: 23(float) CompositeExtract 360 0 + 362: 23(float) CompositeExtract 360 1 + 363: 23(float) CompositeExtract 360 2 + 364: 26(fvec4) CompositeConstruct 361 362 363 93 + 365: 26(fvec4) MatrixTimesVector 359 364 + Store 319(shadowClip) 365 + 369: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 367 366(shadowFactor) 47 + 370: 180(int) Load 305(i) + 371: 23(float) ConvertSToF 370 + 373: 26(fvec4) Load 319(shadowClip) + Store 372(param) 373 + Store 374(param) 371 + 375: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 372(param) 374(param) + Store 366(shadowFactor) 375 + 376: 23(float) Load 366(shadowFactor) + 377: 69(fvec3) Load 74(fragcolor) + 378: 69(fvec3) VectorTimesScalar 377 376 + Store 74(fragcolor) 378 + Branch 313 + 313: Label + 379: 180(int) Load 305(i) + 380: 180(int) IAdd 379 242 + Store 305(i) 380 + Branch 310 + 312: Label + 381: 69(fvec3) Load 74(fragcolor) + ReturnValue 381 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 8fa99b4e4e..8c5733efde 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -2,7 +2,7 @@ spv.debuginfo.glsl.geom Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 232 +// Id's are bound by 231 Capability Geometry Capability MultiViewport @@ -10,7 +10,7 @@ Validation failed 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 13 "main" 52 85 104 112 116 145 181 189 206 216 221 225 + EntryPoint Geometry 13 "main" 52 85 104 112 116 146 181 189 206 216 221 225 ExecutionMode 13 Triangles ExecutionMode 13 Invocations 2 ExecutionMode 13 OutputTriangleStrip @@ -33,11 +33,11 @@ Validation failed 114: String "outColor" 118: String "inColor" 125: String "pos" - 131: String "gl_Position" - 134: String "gl_PointSize" - 137: String "gl_CullDistance" - 141: String "gl_PerVertex" - 147: String "gl_in" + 132: String "gl_Position" + 135: String "gl_PointSize" + 138: String "gl_CullDistance" + 142: String "gl_PerVertex" + 148: String "gl_in" 155: String "worldPos" 166: String "lPos" 183: String "outLightVec" @@ -59,12 +59,12 @@ Validation failed Name 112 "outColor" Name 116 "inColor" Name 123 "pos" - Name 129 "gl_PerVertex" - MemberName 129(gl_PerVertex) 0 "gl_Position" - MemberName 129(gl_PerVertex) 1 "gl_PointSize" - MemberName 129(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 129(gl_PerVertex) 3 "gl_CullDistance" - Name 145 "gl_in" + Name 130 "gl_PerVertex" + MemberName 130(gl_PerVertex) 0 "gl_Position" + MemberName 130(gl_PerVertex) 1 "gl_PointSize" + MemberName 130(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 130(gl_PerVertex) 3 "gl_CullDistance" + Name 146 "gl_in" Name 153 "worldPos" Name 164 "lPos" Name 181 "outLightVec" @@ -95,11 +95,11 @@ Validation failed Decorate 104(inNormal) Location 0 Decorate 112(outColor) Location 1 Decorate 116(inColor) Location 1 - MemberDecorate 129(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 129(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 129(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 129(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 129(gl_PerVertex) Block + MemberDecorate 130(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 130(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 130(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 130(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 130(gl_PerVertex) Block Decorate 181(outLightVec) Location 3 Decorate 189(outViewVec) Location 2 MemberDecorate 196(gl_PerVertex) 0 BuiltIn Position @@ -130,8 +130,8 @@ Validation failed 27: TypePointer Function 24(int) 31: 6(int) Constant 49 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 30 26 16 31 11 15 20 - 32: 24(int) Constant 0 - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 34: 24(int) Constant 0 41: 24(int) Constant 3 42: TypeBool 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 43 9 21 11 @@ -186,45 +186,45 @@ Validation failed 122: TypePointer Function 57(fvec4) 126: 6(int) Constant 54 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 58 16 126 11 15 20 - 127: TypeArray 46(float) 19 - 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 48 19 -129(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 127 127 - 132: 6(int) Constant 23 - 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 131 58 16 21 132 11 11 12 - 135: 6(int) Constant 41 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 48 16 21 135 11 11 12 - 138: 6(int) Constant 84 - 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 21 138 11 11 12 - 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 21 138 11 11 12 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 19 16 126 11 18 141 11 12 130 133 136 139 - 142: TypeArray 129(gl_PerVertex) 12 - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 140 12 - 144: TypePointer Input 142 - 145(gl_in): 144(ptr) Variable Input - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 147 143 16 126 11 18 147 145(gl_in) 56 - 149: TypePointer Input 57(fvec4) + 128: TypeArray 46(float) 19 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 48 19 +130(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128 + 133: 6(int) Constant 23 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 58 16 21 133 11 11 12 + 136: 6(int) Constant 41 + 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 135 48 16 21 136 11 11 12 + 139: 6(int) Constant 84 + 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 21 139 11 11 12 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 21 139 11 11 12 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 19 16 126 11 18 142 11 12 131 134 137 140 + 143: TypeArray 130(gl_PerVertex) 12 + 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 141 12 + 145: TypePointer Input 143 + 146(gl_in): 145(ptr) Variable Input + 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 148 144 16 126 11 18 148 146(gl_in) 56 + 150: TypePointer Input 57(fvec4) 156: 6(int) Constant 55 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 58 16 156 11 15 20 163: TypePointer Function 49(fvec3) 167: 6(int) Constant 57 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 166 50 16 167 11 15 20 - 171: 24(int) Constant 2 - 172: TypePointer Uniform 57(fvec4) + 172: 24(int) Constant 2 + 173: TypePointer Uniform 57(fvec4) 181(outLightVec): 51(ptr) Variable Output 184: 6(int) Constant 58 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 183 50 16 184 11 18 183 181(outLightVec) 56 189(outViewVec): 51(ptr) Variable Output 192: 6(int) Constant 59 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 191 50 16 192 11 18 191 189(outViewVec) 56 -196(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 127 127 +196(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128 198: 6(int) Constant 215 - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 131 58 16 21 198 11 11 12 + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 58 16 21 198 11 11 12 200: 6(int) Constant 233 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 48 16 21 200 11 11 12 - 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 12 70 11 11 12 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 128 16 12 70 11 11 12 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 135 48 16 21 200 11 11 12 + 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 12 70 11 11 12 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 12 70 11 11 12 204: 6(int) Constant 61 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 19 16 204 11 18 141 11 12 197 199 201 202 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 19 16 204 11 18 142 11 12 197 199 201 202 205: TypePointer Output 196(gl_PerVertex) 206: 205(ptr) Variable Output 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 203 16 204 11 18 17 206 56 @@ -245,8 +245,8 @@ Validation failed 153(worldPos): 122(ptr) Variable Function 164(lPos): 163(ptr) Variable Function 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - Store 28(i) 32 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 29 32 34 + 32: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 29 28(i) 33 + Store 28(i) 34 Branch 35 35: Label LoopMerge 37 38 None @@ -275,30 +275,30 @@ Validation failed 120: 108(ptr) AccessChain 116(inColor) 119 121: 49(fvec3) Load 120 Store 112(outColor) 121 - 148: 24(int) Load 28(i) - 150: 149(ptr) AccessChain 145(gl_in) 148 32 - 151: 57(fvec4) Load 150 - Store 123(pos) 151 - 152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 124 151 34 - 157: 24(int) Load 85(gl_InvocationID) - 158: 89(ptr) AccessChain 80(ubo) 83 157 - 159: 59 Load 158 - 160: 57(fvec4) Load 123(pos) - 161: 57(fvec4) MatrixTimesVector 159 160 - Store 153(worldPos) 161 - 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 154 161 34 - 168: 24(int) Load 85(gl_InvocationID) - 169: 89(ptr) AccessChain 80(ubo) 83 168 - 170: 59 Load 169 - 173: 172(ptr) AccessChain 80(ubo) 171 - 174: 57(fvec4) Load 173 - 175: 57(fvec4) MatrixTimesVector 170 174 - 176: 46(float) CompositeExtract 175 0 - 177: 46(float) CompositeExtract 175 1 - 178: 46(float) CompositeExtract 175 2 - 179: 49(fvec3) CompositeConstruct 176 177 178 - Store 164(lPos) 179 - 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 165 179 34 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 124 123(pos) 33 + 149: 24(int) Load 28(i) + 151: 150(ptr) AccessChain 146(gl_in) 149 34 + 152: 57(fvec4) Load 151 + Store 123(pos) 152 + 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 154 153(worldPos) 33 + 158: 24(int) Load 85(gl_InvocationID) + 159: 89(ptr) AccessChain 80(ubo) 83 158 + 160: 59 Load 159 + 161: 57(fvec4) Load 123(pos) + 162: 57(fvec4) MatrixTimesVector 160 161 + Store 153(worldPos) 162 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 165 164(lPos) 33 + 169: 24(int) Load 85(gl_InvocationID) + 170: 89(ptr) AccessChain 80(ubo) 83 169 + 171: 59 Load 170 + 174: 173(ptr) AccessChain 80(ubo) 172 + 175: 57(fvec4) Load 174 + 176: 57(fvec4) MatrixTimesVector 171 175 + 177: 46(float) CompositeExtract 176 0 + 178: 46(float) CompositeExtract 176 1 + 179: 46(float) CompositeExtract 176 2 + 180: 49(fvec3) CompositeConstruct 177 178 179 + Store 164(lPos) 180 185: 49(fvec3) Load 164(lPos) 186: 57(fvec4) Load 153(worldPos) 187: 49(fvec3) VectorShuffle 186 186 0 1 2 @@ -309,11 +309,11 @@ Validation failed 195: 49(fvec3) FNegate 194 Store 189(outViewVec) 195 208: 24(int) Load 85(gl_InvocationID) - 209: 89(ptr) AccessChain 80(ubo) 32 208 + 209: 89(ptr) AccessChain 80(ubo) 34 208 210: 59 Load 209 211: 57(fvec4) Load 153(worldPos) 212: 57(fvec4) MatrixTimesVector 210 211 - 214: 213(ptr) AccessChain 206 32 + 214: 213(ptr) AccessChain 206 34 Store 214 212 220: 24(int) Load 85(gl_InvocationID) Store 216(gl_ViewportIndex) 220 @@ -325,7 +325,6 @@ Validation failed 229: 24(int) Load 28(i) 230: 24(int) IAdd 229 83 Store 28(i) 230 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 29 230 34 Branch 35 37: Label EndPrimitive diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index 89e6cf3081..d5dca88851 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -2,14 +2,14 @@ spv.debuginfo.glsl.tesc Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 460 +// Id's are bound by 457 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 13 "main" 231 235 261 328 338 418 430 438 450 + EntryPoint TessellationControl 13 "main" 230 234 259 325 335 415 427 435 447 ExecutionMode 13 OutputVertices 4 8: String "uint" 14: String "main" @@ -23,36 +23,36 @@ Validation failed 58: String "midPoint" 69: String "radius" 79: String "v0" - 90: String "modelview" - 95: String "lightPos" - 98: String "frustumPlanes" - 100: String "tessellatedEdgeSize" - 105: String "viewportDim" - 109: String "UBO" - 113: String "ubo" - 115: String "int" + 91: String "modelview" + 96: String "lightPos" + 99: String "frustumPlanes" + 101: String "tessellatedEdgeSize" + 106: String "viewportDim" + 110: String "UBO" + 114: String "ubo" + 116: String "int" 126: String "clip0" 146: String "clip1" - 211: String "pos" - 217: String "gl_Position" - 220: String "gl_PointSize" - 223: String "gl_CullDistance" - 227: String "gl_PerVertex" - 233: String "gl_in" - 237: String "gl_InvocationID" - 245: String "type.2d.image" - 247: String "@type.2d.image" - 251: String "type.sampled.image" - 252: String "@type.sampled.image" - 256: String "samplerHeight" - 263: String "inUV" - 280: String "i" - 330: String "gl_TessLevelInner" - 340: String "gl_TessLevelOuter" - 420: String "gl_out" - 432: String "outNormal" - 440: String "inNormal" - 452: String "outUV" + 209: String "pos" + 216: String "gl_Position" + 219: String "gl_PointSize" + 222: String "gl_CullDistance" + 226: String "gl_PerVertex" + 232: String "gl_in" + 236: String "gl_InvocationID" + 243: String "type.2d.image" + 245: String "@type.2d.image" + 249: String "type.sampled.image" + 250: String "@type.sampled.image" + 254: String "samplerHeight" + 261: String "inUV" + 278: String "i" + 327: String "gl_TessLevelInner" + 337: String "gl_TessLevelOuter" + 417: String "gl_out" + 429: String "outNormal" + 437: String "inNormal" + 449: String "outUV" Name 13 "main" Name 33 "screenSpaceTessFactor(vf4;vf4;" Name 31 "p0" @@ -61,85 +61,85 @@ Validation failed Name 56 "midPoint" Name 67 "radius" Name 77 "v0" - Name 88 "UBO" - MemberName 88(UBO) 0 "projection" - MemberName 88(UBO) 1 "modelview" - MemberName 88(UBO) 2 "lightPos" - MemberName 88(UBO) 3 "frustumPlanes" - MemberName 88(UBO) 4 "displacementFactor" - MemberName 88(UBO) 5 "tessellationFactor" - MemberName 88(UBO) 6 "viewportDim" - MemberName 88(UBO) 7 "tessellatedEdgeSize" - Name 111 "ubo" + Name 89 "UBO" + MemberName 89(UBO) 0 "projection" + MemberName 89(UBO) 1 "modelview" + MemberName 89(UBO) 2 "lightPos" + MemberName 89(UBO) 3 "frustumPlanes" + MemberName 89(UBO) 4 "displacementFactor" + MemberName 89(UBO) 5 "tessellationFactor" + MemberName 89(UBO) 6 "viewportDim" + MemberName 89(UBO) 7 "tessellatedEdgeSize" + Name 112 "ubo" Name 124 "clip0" Name 144 "clip1" - Name 209 "pos" - Name 215 "gl_PerVertex" - MemberName 215(gl_PerVertex) 0 "gl_Position" - MemberName 215(gl_PerVertex) 1 "gl_PointSize" - MemberName 215(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 215(gl_PerVertex) 3 "gl_CullDistance" - Name 231 "gl_in" - Name 235 "gl_InvocationID" - Name 254 "samplerHeight" - Name 261 "inUV" - Name 278 "i" - Name 328 "gl_TessLevelInner" - Name 338 "gl_TessLevelOuter" + Name 207 "pos" + Name 214 "gl_PerVertex" + MemberName 214(gl_PerVertex) 0 "gl_Position" + MemberName 214(gl_PerVertex) 1 "gl_PointSize" + MemberName 214(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 214(gl_PerVertex) 3 "gl_CullDistance" + Name 230 "gl_in" + Name 234 "gl_InvocationID" + Name 252 "samplerHeight" + Name 259 "inUV" + Name 276 "i" + Name 325 "gl_TessLevelInner" + Name 335 "gl_TessLevelOuter" + Name 351 "param" Name 354 "param" - Name 357 "param" + Name 359 "param" Name 362 "param" - Name 365 "param" + Name 367 "param" Name 370 "param" - Name 373 "param" + Name 375 "param" Name 378 "param" - Name 381 "param" - Name 405 "gl_PerVertex" - MemberName 405(gl_PerVertex) 0 "gl_Position" - MemberName 405(gl_PerVertex) 1 "gl_PointSize" - MemberName 405(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 405(gl_PerVertex) 3 "gl_CullDistance" - Name 418 "gl_out" - Name 430 "outNormal" - Name 438 "inNormal" - Name 450 "outUV" - Decorate 84 ArrayStride 16 - MemberDecorate 88(UBO) 0 ColMajor - MemberDecorate 88(UBO) 0 Offset 0 - MemberDecorate 88(UBO) 0 MatrixStride 16 - MemberDecorate 88(UBO) 1 ColMajor - MemberDecorate 88(UBO) 1 Offset 64 - MemberDecorate 88(UBO) 1 MatrixStride 16 - MemberDecorate 88(UBO) 2 Offset 128 - MemberDecorate 88(UBO) 3 Offset 144 - MemberDecorate 88(UBO) 4 Offset 240 - MemberDecorate 88(UBO) 5 Offset 244 - MemberDecorate 88(UBO) 6 Offset 248 - MemberDecorate 88(UBO) 7 Offset 256 - Decorate 88(UBO) Block - Decorate 111(ubo) DescriptorSet 0 - Decorate 111(ubo) Binding 0 - MemberDecorate 215(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 215(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 215(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 215(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 215(gl_PerVertex) Block - Decorate 235(gl_InvocationID) BuiltIn InvocationId - Decorate 254(samplerHeight) DescriptorSet 0 - Decorate 254(samplerHeight) Binding 1 - Decorate 261(inUV) Location 1 - Decorate 328(gl_TessLevelInner) Patch - Decorate 328(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 338(gl_TessLevelOuter) Patch - Decorate 338(gl_TessLevelOuter) BuiltIn TessLevelOuter - MemberDecorate 405(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 405(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 405(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 405(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 405(gl_PerVertex) Block - Decorate 430(outNormal) Location 0 - Decorate 438(inNormal) Location 0 - Decorate 450(outUV) Location 1 + Name 402 "gl_PerVertex" + MemberName 402(gl_PerVertex) 0 "gl_Position" + MemberName 402(gl_PerVertex) 1 "gl_PointSize" + MemberName 402(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 402(gl_PerVertex) 3 "gl_CullDistance" + Name 415 "gl_out" + Name 427 "outNormal" + Name 435 "inNormal" + Name 447 "outUV" + Decorate 85 ArrayStride 16 + MemberDecorate 89(UBO) 0 ColMajor + MemberDecorate 89(UBO) 0 Offset 0 + MemberDecorate 89(UBO) 0 MatrixStride 16 + MemberDecorate 89(UBO) 1 ColMajor + MemberDecorate 89(UBO) 1 Offset 64 + MemberDecorate 89(UBO) 1 MatrixStride 16 + MemberDecorate 89(UBO) 2 Offset 128 + MemberDecorate 89(UBO) 3 Offset 144 + MemberDecorate 89(UBO) 4 Offset 240 + MemberDecorate 89(UBO) 5 Offset 244 + MemberDecorate 89(UBO) 6 Offset 248 + MemberDecorate 89(UBO) 7 Offset 256 + Decorate 89(UBO) Block + Decorate 112(ubo) DescriptorSet 0 + Decorate 112(ubo) Binding 0 + MemberDecorate 214(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 214(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 214(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 214(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 214(gl_PerVertex) Block + Decorate 234(gl_InvocationID) BuiltIn InvocationId + Decorate 252(samplerHeight) DescriptorSet 0 + Decorate 252(samplerHeight) Binding 1 + Decorate 259(inUV) Location 1 + Decorate 325(gl_TessLevelInner) Patch + Decorate 325(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 335(gl_TessLevelOuter) Patch + Decorate 335(gl_TessLevelOuter) BuiltIn TessLevelOuter + MemberDecorate 402(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 402(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 402(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 402(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 402(gl_PerVertex) Block + Decorate 427(outNormal) Location 0 + Decorate 435(inNormal) Location 0 + Decorate 447(outUV) Location 1 3: TypeVoid 4: TypeFunction 3 6: TypeInt 32 0 @@ -173,291 +173,291 @@ Validation failed 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 52 50 16 11 11 18 52 12 11 59: 6(int) Constant 54 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 58 27 16 59 11 35 20 - 60: 23(float) Constant 1056964608 + 61: 23(float) Constant 1056964608 66: TypePointer Function 23(float) 70: 6(int) Constant 56 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 69 25 16 70 11 35 20 - 74: 23(float) Constant 1073741824 + 75: 23(float) Constant 1073741824 80: 6(int) Constant 59 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 79 27 16 80 11 35 20 - 81: TypeMatrix 26(fvec4) 4 - 83: 46(bool) ConstantTrue - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 83 - 84: TypeArray 26(fvec4) 10 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 27 10 - 86: TypeVector 23(float) 2 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 - 88(UBO): TypeStruct 81 81 26(fvec4) 84 23(float) 23(float) 86(fvec2) 23(float) - 91: 6(int) Constant 30 - 92: 6(int) Constant 7 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 82 16 91 92 11 11 12 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 82 16 91 92 11 11 12 - 96: 6(int) Constant 31 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 27 16 96 92 11 11 12 - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 98 85 16 9 92 11 11 12 - 101: 6(int) Constant 36 - 102: 6(int) Constant 8 - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12 - 103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12 - 106: 6(int) Constant 35 - 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 105 87 16 106 92 11 11 12 - 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 25 16 101 102 11 11 12 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 109 19 16 80 11 18 109 11 12 89 93 94 97 99 103 104 107 - 110: TypePointer Uniform 88(UBO) - 111(ubo): 110(ptr) Variable Uniform - 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 113 108 16 80 11 18 113 111(ubo) 102 - 114: TypeInt 32 1 - 116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 115 9 20 11 - 117: 114(int) Constant 1 - 118: TypePointer Uniform 81 + 82: TypeMatrix 26(fvec4) 4 + 84: 46(bool) ConstantTrue + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 84 + 85: TypeArray 26(fvec4) 10 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 27 10 + 87: TypeVector 23(float) 2 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 + 89(UBO): TypeStruct 82 82 26(fvec4) 85 23(float) 23(float) 87(fvec2) 23(float) + 92: 6(int) Constant 30 + 93: 6(int) Constant 7 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 83 16 92 93 11 11 12 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 83 16 92 93 11 11 12 + 97: 6(int) Constant 31 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 96 27 16 97 93 11 11 12 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 99 86 16 9 93 11 11 12 + 102: 6(int) Constant 36 + 103: 6(int) Constant 8 + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12 + 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12 + 107: 6(int) Constant 35 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 106 88 16 107 93 11 11 12 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12 + 109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 110 19 16 80 11 18 110 11 12 90 94 95 98 100 104 105 108 + 111: TypePointer Uniform 89(UBO) + 112(ubo): 111(ptr) Variable Uniform + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 114 109 16 80 11 18 114 112(ubo) 103 + 115: TypeInt 32 1 + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 116 9 20 11 + 118: 115(int) Constant 1 + 119: TypePointer Uniform 82 127: 6(int) Constant 62 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 126 27 16 127 11 35 20 - 128: 114(int) Constant 0 - 133: TypeVector 23(float) 3 - 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 - 135: 23(float) Constant 0 - 136: 133(fvec3) ConstantComposite 135 135 135 + 129: 115(int) Constant 0 + 134: TypeVector 23(float) 3 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 136: 23(float) Constant 0 + 137: 134(fvec3) ConstantComposite 136 136 136 147: 6(int) Constant 63 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 146 27 16 147 11 35 20 - 171: 114(int) Constant 6 - 172: TypePointer Uniform 86(fvec2) - 194: 114(int) Constant 7 - 195: TypePointer Uniform 23(float) - 199: 114(int) Constant 5 - 203: 23(float) Constant 1065353216 - 204: 23(float) Constant 1115684864 - 212: 6(int) Constant 85 - 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 211 27 16 212 11 53 20 - 213: TypeArray 23(float) 19 - 214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 19 -215(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 213 213 - 218: 6(int) Constant 1756 - 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 217 27 16 19 218 11 11 12 - 221: 6(int) Constant 1774 - 219: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 220 25 16 19 221 11 11 12 - 224: 6(int) Constant 1817 - 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 224 11 11 12 - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 224 11 11 12 - 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 227 19 16 212 11 18 227 11 12 216 219 222 225 - 228: TypeArray 215(gl_PerVertex) 9 - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 226 9 - 230: TypePointer Input 228 - 231(gl_in): 230(ptr) Variable Input - 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 233 229 16 212 11 18 233 231(gl_in) 102 - 234: TypePointer Input 114(int) -235(gl_InvocationID): 234(ptr) Variable Input - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 237 116 16 212 11 18 237 235(gl_InvocationID) 102 - 239: TypePointer Input 26(fvec4) - 243: TypeImage 23(float) 2D sampled format:Unknown - 246: 6(int) Constant 86 - 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 245 11 16 246 11 18 247 248 12 - 249: TypeSampledImage 243 - 250: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 251 11 16 246 11 18 252 248 12 - 253: TypePointer UniformConstant 249 -254(samplerHeight): 253(ptr) Variable UniformConstant - 255: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 256 250 16 246 11 18 256 254(samplerHeight) 102 - 258: TypeArray 86(fvec2) 9 - 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 87 9 - 260: TypePointer Input 258 - 261(inUV): 260(ptr) Variable Input - 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 259 16 246 11 18 263 261(inUV) 102 - 264: TypePointer Input 86(fvec2) - 269: 114(int) Constant 4 - 277: TypePointer Function 114(int) - 281: 6(int) Constant 89 - 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 280 116 16 281 11 53 20 - 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 292: 114(int) Constant 3 - 294: TypePointer Uniform 26(fvec4) - 298: 23(float) Constant 1090519040 - 300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 305: 46(bool) ConstantFalse - 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 321: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 325: TypeArray 23(float) 21 - 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 21 - 327: TypePointer Output 325 -328(gl_TessLevelInner): 327(ptr) Variable Output - 331: 6(int) Constant 104 - 329: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 330 326 16 331 11 18 330 328(gl_TessLevelInner) 102 - 332: TypePointer Output 23(float) - 335: TypeArray 23(float) 20 - 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 20 - 337: TypePointer Output 335 -338(gl_TessLevelOuter): 337(ptr) Variable Output - 341: 6(int) Constant 106 - 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 340 336 16 341 11 18 340 338(gl_TessLevelOuter) 102 - 344: 114(int) Constant 2 - 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 -405(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 213 213 - 407: 6(int) Constant 110 - 406: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 217 27 16 19 407 11 11 12 - 409: 6(int) Constant 128 - 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 220 25 16 19 409 11 11 12 - 411: 6(int) Constant 171 - 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 411 11 11 12 - 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 214 16 19 411 11 11 12 - 414: 6(int) Constant 137 - 413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 227 19 16 414 11 18 227 11 12 406 408 410 412 - 415: TypeArray 405(gl_PerVertex) 20 - 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 413 20 - 417: TypePointer Output 415 - 418(gl_out): 417(ptr) Variable Output - 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 420 416 16 414 11 18 420 418(gl_out) 102 - 425: TypePointer Output 26(fvec4) - 427: TypeArray 133(fvec3) 20 - 428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 134 20 - 429: TypePointer Output 427 - 430(outNormal): 429(ptr) Variable Output - 433: 6(int) Constant 138 - 431: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 432 428 16 433 11 18 432 430(outNormal) 102 - 435: TypeArray 133(fvec3) 9 - 436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 134 9 - 437: TypePointer Input 435 - 438(inNormal): 437(ptr) Variable Input - 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 440 436 16 433 11 18 440 438(inNormal) 102 - 442: TypePointer Input 133(fvec3) - 445: TypePointer Output 133(fvec3) - 447: TypeArray 86(fvec2) 20 - 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 87 20 - 449: TypePointer Output 447 - 450(outUV): 449(ptr) Variable Output - 453: 6(int) Constant 139 - 451: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 452 448 16 453 11 18 452 450(outUV) 102 - 458: TypePointer Output 86(fvec2) + 169: 115(int) Constant 6 + 170: TypePointer Uniform 87(fvec2) + 192: 115(int) Constant 7 + 193: TypePointer Uniform 23(float) + 197: 115(int) Constant 5 + 201: 23(float) Constant 1065353216 + 202: 23(float) Constant 1115684864 + 210: 6(int) Constant 85 + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 209 27 16 210 11 53 20 + 212: TypeArray 23(float) 19 + 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 19 +214(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212 + 217: 6(int) Constant 1756 + 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 216 27 16 19 217 11 11 12 + 220: 6(int) Constant 1774 + 218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 219 25 16 19 220 11 11 12 + 223: 6(int) Constant 1817 + 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 223 11 11 12 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 223 11 11 12 + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 19 16 210 11 18 226 11 12 215 218 221 224 + 227: TypeArray 214(gl_PerVertex) 9 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 225 9 + 229: TypePointer Input 227 + 230(gl_in): 229(ptr) Variable Input + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 232 228 16 210 11 18 232 230(gl_in) 103 + 233: TypePointer Input 115(int) +234(gl_InvocationID): 233(ptr) Variable Input + 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 236 117 16 210 11 18 236 234(gl_InvocationID) 103 + 238: TypePointer Input 26(fvec4) + 241: TypeImage 23(float) 2D sampled format:Unknown + 244: 6(int) Constant 86 + 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 243 11 16 244 11 18 245 246 12 + 247: TypeSampledImage 241 + 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 249 11 16 244 11 18 250 246 12 + 251: TypePointer UniformConstant 247 +252(samplerHeight): 251(ptr) Variable UniformConstant + 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 254 248 16 244 11 18 254 252(samplerHeight) 103 + 256: TypeArray 87(fvec2) 9 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 88 9 + 258: TypePointer Input 256 + 259(inUV): 258(ptr) Variable Input + 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 261 257 16 244 11 18 261 259(inUV) 103 + 262: TypePointer Input 87(fvec2) + 267: 115(int) Constant 4 + 275: TypePointer Function 115(int) + 279: 6(int) Constant 89 + 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 278 117 16 279 11 53 20 + 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 290: 115(int) Constant 3 + 292: TypePointer Uniform 26(fvec4) + 296: 23(float) Constant 1090519040 + 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 303: 46(bool) ConstantFalse + 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 312: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 318: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 322: TypeArray 23(float) 21 + 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 21 + 324: TypePointer Output 322 +325(gl_TessLevelInner): 324(ptr) Variable Output + 328: 6(int) Constant 104 + 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 327 323 16 328 11 18 327 325(gl_TessLevelInner) 103 + 329: TypePointer Output 23(float) + 332: TypeArray 23(float) 20 + 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 20 + 334: TypePointer Output 332 +335(gl_TessLevelOuter): 334(ptr) Variable Output + 338: 6(int) Constant 106 + 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 337 333 16 338 11 18 337 335(gl_TessLevelOuter) 103 + 341: 115(int) Constant 2 + 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 +402(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212 + 404: 6(int) Constant 110 + 403: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 216 27 16 19 404 11 11 12 + 406: 6(int) Constant 128 + 405: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 219 25 16 19 406 11 11 12 + 408: 6(int) Constant 171 + 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 408 11 11 12 + 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 408 11 11 12 + 411: 6(int) Constant 137 + 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 19 16 411 11 18 226 11 12 403 405 407 409 + 412: TypeArray 402(gl_PerVertex) 20 + 413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 410 20 + 414: TypePointer Output 412 + 415(gl_out): 414(ptr) Variable Output + 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 417 413 16 411 11 18 417 415(gl_out) 103 + 422: TypePointer Output 26(fvec4) + 424: TypeArray 134(fvec3) 20 + 425: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 20 + 426: TypePointer Output 424 + 427(outNormal): 426(ptr) Variable Output + 430: 6(int) Constant 138 + 428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 429 425 16 430 11 18 429 427(outNormal) 103 + 432: TypeArray 134(fvec3) 9 + 433: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 9 + 434: TypePointer Input 432 + 435(inNormal): 434(ptr) Variable Input + 436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 437 433 16 430 11 18 437 435(inNormal) 103 + 439: TypePointer Input 134(fvec3) + 442: TypePointer Output 134(fvec3) + 444: TypeArray 87(fvec2) 20 + 445: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 88 20 + 446: TypePointer Output 444 + 447(outUV): 446(ptr) Variable Output + 450: 6(int) Constant 139 + 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 449 445 16 450 11 18 449 447(outUV) 103 + 455: TypePointer Output 87(fvec2) 13(main): 3 Function None 4 22: Label + 351(param): 28(ptr) Variable Function 354(param): 28(ptr) Variable Function - 357(param): 28(ptr) Variable Function + 359(param): 28(ptr) Variable Function 362(param): 28(ptr) Variable Function - 365(param): 28(ptr) Variable Function + 367(param): 28(ptr) Variable Function 370(param): 28(ptr) Variable Function - 373(param): 28(ptr) Variable Function + 375(param): 28(ptr) Variable Function 378(param): 28(ptr) Variable Function - 381(param): 28(ptr) Variable Function - 313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 314: 114(int) Load 235(gl_InvocationID) - 316: 46(bool) IEqual 314 128 - SelectionMerge 318 None - BranchConditional 316 317 318 - 317: Label - 319: 46(bool) FunctionCall 51(frustumCheck() - 322: 46(bool) LogicalNot 319 - SelectionMerge 324 None - BranchConditional 322 323 347 - 323: Label - 333: 332(ptr) AccessChain 328(gl_TessLevelInner) 128 - Store 333 135 - 334: 332(ptr) AccessChain 328(gl_TessLevelInner) 117 - Store 334 135 - 342: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 - Store 342 135 - 343: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 - Store 343 135 - 345: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 - Store 345 135 - 346: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 - Store 346 135 - Branch 324 - 347: Label - 348: 195(ptr) AccessChain 111(ubo) 199 - 349: 23(float) Load 348 - 351: 46(bool) FOrdGreaterThan 349 135 - SelectionMerge 353 None - BranchConditional 351 352 398 - 352: Label - 355: 239(ptr) AccessChain 231(gl_in) 292 128 + 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 311: 115(int) Load 234(gl_InvocationID) + 313: 46(bool) IEqual 311 129 + SelectionMerge 315 None + BranchConditional 313 314 315 + 314: Label + 316: 46(bool) FunctionCall 51(frustumCheck() + 319: 46(bool) LogicalNot 316 + SelectionMerge 321 None + BranchConditional 319 320 344 + 320: Label + 330: 329(ptr) AccessChain 325(gl_TessLevelInner) 129 + Store 330 136 + 331: 329(ptr) AccessChain 325(gl_TessLevelInner) 118 + Store 331 136 + 339: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 + Store 339 136 + 340: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 + Store 340 136 + 342: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 + Store 342 136 + 343: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 + Store 343 136 + Branch 321 + 344: Label + 345: 193(ptr) AccessChain 112(ubo) 197 + 346: 23(float) Load 345 + 348: 46(bool) FOrdGreaterThan 346 136 + SelectionMerge 350 None + BranchConditional 348 349 395 + 349: Label + 352: 238(ptr) AccessChain 230(gl_in) 290 129 + 353: 26(fvec4) Load 352 + Store 351(param) 353 + 355: 238(ptr) AccessChain 230(gl_in) 129 129 356: 26(fvec4) Load 355 Store 354(param) 356 - 358: 239(ptr) AccessChain 231(gl_in) 128 128 - 359: 26(fvec4) Load 358 - Store 357(param) 359 - 360: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 354(param) 357(param) - 361: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 - Store 361 360 - 363: 239(ptr) AccessChain 231(gl_in) 128 128 + 357: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 351(param) 354(param) + 358: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 + Store 358 357 + 360: 238(ptr) AccessChain 230(gl_in) 129 129 + 361: 26(fvec4) Load 360 + Store 359(param) 361 + 363: 238(ptr) AccessChain 230(gl_in) 118 129 364: 26(fvec4) Load 363 Store 362(param) 364 - 366: 239(ptr) AccessChain 231(gl_in) 117 128 - 367: 26(fvec4) Load 366 - Store 365(param) 367 - 368: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 362(param) 365(param) - 369: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 - Store 369 368 - 371: 239(ptr) AccessChain 231(gl_in) 117 128 + 365: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 359(param) 362(param) + 366: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 + Store 366 365 + 368: 238(ptr) AccessChain 230(gl_in) 118 129 + 369: 26(fvec4) Load 368 + Store 367(param) 369 + 371: 238(ptr) AccessChain 230(gl_in) 341 129 372: 26(fvec4) Load 371 Store 370(param) 372 - 374: 239(ptr) AccessChain 231(gl_in) 344 128 - 375: 26(fvec4) Load 374 - Store 373(param) 375 - 376: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 370(param) 373(param) - 377: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 - Store 377 376 - 379: 239(ptr) AccessChain 231(gl_in) 344 128 + 373: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 367(param) 370(param) + 374: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 + Store 374 373 + 376: 238(ptr) AccessChain 230(gl_in) 341 129 + 377: 26(fvec4) Load 376 + Store 375(param) 377 + 379: 238(ptr) AccessChain 230(gl_in) 290 129 380: 26(fvec4) Load 379 Store 378(param) 380 - 382: 239(ptr) AccessChain 231(gl_in) 292 128 - 383: 26(fvec4) Load 382 - Store 381(param) 383 - 384: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 378(param) 381(param) - 385: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 - Store 385 384 - 386: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 - 387: 23(float) Load 386 - 388: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 - 389: 23(float) Load 388 - 390: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 387 389 60 - 391: 332(ptr) AccessChain 328(gl_TessLevelInner) 128 - Store 391 390 - 392: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 - 393: 23(float) Load 392 - 394: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 - 395: 23(float) Load 394 - 396: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 393 395 60 - 397: 332(ptr) AccessChain 328(gl_TessLevelInner) 117 - Store 397 396 - Branch 353 - 398: Label - 399: 332(ptr) AccessChain 328(gl_TessLevelInner) 128 - Store 399 203 - 400: 332(ptr) AccessChain 328(gl_TessLevelInner) 117 - Store 400 203 - 401: 332(ptr) AccessChain 338(gl_TessLevelOuter) 128 - Store 401 203 - 402: 332(ptr) AccessChain 338(gl_TessLevelOuter) 117 - Store 402 203 - 403: 332(ptr) AccessChain 338(gl_TessLevelOuter) 344 - Store 403 203 - 404: 332(ptr) AccessChain 338(gl_TessLevelOuter) 292 - Store 404 203 - Branch 353 - 353: Label - Branch 324 - 324: Label - Branch 318 - 318: Label - 421: 114(int) Load 235(gl_InvocationID) - 422: 114(int) Load 235(gl_InvocationID) - 423: 239(ptr) AccessChain 231(gl_in) 422 128 - 424: 26(fvec4) Load 423 - 426: 425(ptr) AccessChain 418(gl_out) 421 128 - Store 426 424 - 434: 114(int) Load 235(gl_InvocationID) - 441: 114(int) Load 235(gl_InvocationID) - 443: 442(ptr) AccessChain 438(inNormal) 441 - 444: 133(fvec3) Load 443 - 446: 445(ptr) AccessChain 430(outNormal) 434 - Store 446 444 - 454: 114(int) Load 235(gl_InvocationID) - 455: 114(int) Load 235(gl_InvocationID) - 456: 264(ptr) AccessChain 261(inUV) 455 - 457: 86(fvec2) Load 456 - 459: 458(ptr) AccessChain 450(outUV) 454 - Store 459 457 + 381: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 375(param) 378(param) + 382: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 + Store 382 381 + 383: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 + 384: 23(float) Load 383 + 385: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 + 386: 23(float) Load 385 + 387: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 384 386 61 + 388: 329(ptr) AccessChain 325(gl_TessLevelInner) 129 + Store 388 387 + 389: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 + 390: 23(float) Load 389 + 391: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 + 392: 23(float) Load 391 + 393: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 390 392 61 + 394: 329(ptr) AccessChain 325(gl_TessLevelInner) 118 + Store 394 393 + Branch 350 + 395: Label + 396: 329(ptr) AccessChain 325(gl_TessLevelInner) 129 + Store 396 201 + 397: 329(ptr) AccessChain 325(gl_TessLevelInner) 118 + Store 397 201 + 398: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 + Store 398 201 + 399: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 + Store 399 201 + 400: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 + Store 400 201 + 401: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 + Store 401 201 + Branch 350 + 350: Label + Branch 321 + 321: Label + Branch 315 + 315: Label + 418: 115(int) Load 234(gl_InvocationID) + 419: 115(int) Load 234(gl_InvocationID) + 420: 238(ptr) AccessChain 230(gl_in) 419 129 + 421: 26(fvec4) Load 420 + 423: 422(ptr) AccessChain 415(gl_out) 418 129 + Store 423 421 + 431: 115(int) Load 234(gl_InvocationID) + 438: 115(int) Load 234(gl_InvocationID) + 440: 439(ptr) AccessChain 435(inNormal) 438 + 441: 134(fvec3) Load 440 + 443: 442(ptr) AccessChain 427(outNormal) 431 + Store 443 441 + 451: 115(int) Load 234(gl_InvocationID) + 452: 115(int) Load 234(gl_InvocationID) + 453: 262(ptr) AccessChain 259(inUV) 452 + 454: 87(fvec2) Load 453 + 456: 455(ptr) AccessChain 447(outUV) 451 + Store 456 454 Return FunctionEnd 33(screenSpaceTessFactor(vf4;vf4;): 23(float) Function None 29 @@ -474,149 +474,146 @@ Validation failed 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 39 31(p0) 42 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 43 32(p1) 42 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 35 33(screenSpaceTessFactor(vf4;vf4;) - 61: 26(fvec4) Load 31(p0) - 62: 26(fvec4) Load 32(p1) - 63: 26(fvec4) FAdd 61 62 - 64: 26(fvec4) VectorTimesScalar 63 60 - Store 56(midPoint) 64 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 57 64 42 - 71: 26(fvec4) Load 31(p0) - 72: 26(fvec4) Load 32(p1) - 73: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 71 72 - 75: 23(float) FDiv 73 74 - Store 67(radius) 75 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 68 75 42 - 119: 118(ptr) AccessChain 111(ubo) 117 - 120: 81 Load 119 - 121: 26(fvec4) Load 56(midPoint) - 122: 26(fvec4) MatrixTimesVector 120 121 - Store 77(v0) 122 - 123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 78 122 42 - 129: 118(ptr) AccessChain 111(ubo) 128 - 130: 81 Load 129 - 131: 26(fvec4) Load 77(v0) - 132: 23(float) Load 67(radius) - 137: 23(float) CompositeExtract 136 0 - 138: 23(float) CompositeExtract 136 1 - 139: 23(float) CompositeExtract 136 2 - 140: 26(fvec4) CompositeConstruct 132 137 138 139 - 141: 26(fvec4) FSub 131 140 - 142: 26(fvec4) MatrixTimesVector 130 141 - Store 124(clip0) 142 - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 125 142 42 - 148: 118(ptr) AccessChain 111(ubo) 128 - 149: 81 Load 148 - 150: 26(fvec4) Load 77(v0) - 151: 23(float) Load 67(radius) - 152: 23(float) CompositeExtract 136 0 - 153: 23(float) CompositeExtract 136 1 - 154: 23(float) CompositeExtract 136 2 - 155: 26(fvec4) CompositeConstruct 151 152 153 154 - 156: 26(fvec4) FAdd 150 155 - 157: 26(fvec4) MatrixTimesVector 149 156 - Store 144(clip1) 157 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 145 157 42 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 57 56(midPoint) 42 + 62: 26(fvec4) Load 31(p0) + 63: 26(fvec4) Load 32(p1) + 64: 26(fvec4) FAdd 62 63 + 65: 26(fvec4) VectorTimesScalar 64 61 + Store 56(midPoint) 65 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 68 67(radius) 42 + 72: 26(fvec4) Load 31(p0) + 73: 26(fvec4) Load 32(p1) + 74: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 72 73 + 76: 23(float) FDiv 74 75 + Store 67(radius) 76 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 78 77(v0) 42 + 120: 119(ptr) AccessChain 112(ubo) 118 + 121: 82 Load 120 + 122: 26(fvec4) Load 56(midPoint) + 123: 26(fvec4) MatrixTimesVector 121 122 + Store 77(v0) 123 + 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 125 124(clip0) 42 + 130: 119(ptr) AccessChain 112(ubo) 129 + 131: 82 Load 130 + 132: 26(fvec4) Load 77(v0) + 133: 23(float) Load 67(radius) + 138: 23(float) CompositeExtract 137 0 + 139: 23(float) CompositeExtract 137 1 + 140: 23(float) CompositeExtract 137 2 + 141: 26(fvec4) CompositeConstruct 133 138 139 140 + 142: 26(fvec4) FSub 132 141 + 143: 26(fvec4) MatrixTimesVector 131 142 + Store 124(clip0) 143 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 145 144(clip1) 42 + 149: 119(ptr) AccessChain 112(ubo) 129 + 150: 82 Load 149 + 151: 26(fvec4) Load 77(v0) + 152: 23(float) Load 67(radius) + 153: 23(float) CompositeExtract 137 0 + 154: 23(float) CompositeExtract 137 1 + 155: 23(float) CompositeExtract 137 2 + 156: 26(fvec4) CompositeConstruct 152 153 154 155 + 157: 26(fvec4) FAdd 151 156 + 158: 26(fvec4) MatrixTimesVector 150 157 + Store 144(clip1) 158 159: 66(ptr) AccessChain 124(clip0) 12 160: 23(float) Load 159 161: 26(fvec4) Load 124(clip0) 162: 26(fvec4) CompositeConstruct 160 160 160 160 163: 26(fvec4) FDiv 161 162 Store 124(clip0) 163 - 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 125 163 42 - 165: 66(ptr) AccessChain 144(clip1) 12 - 166: 23(float) Load 165 - 167: 26(fvec4) Load 144(clip1) - 168: 26(fvec4) CompositeConstruct 166 166 166 166 - 169: 26(fvec4) FDiv 167 168 - Store 144(clip1) 169 - 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 145 169 42 - 173: 172(ptr) AccessChain 111(ubo) 171 - 174: 86(fvec2) Load 173 - 175: 26(fvec4) Load 124(clip0) - 176: 86(fvec2) VectorShuffle 175 175 0 1 - 177: 86(fvec2) FMul 176 174 - 178: 66(ptr) AccessChain 124(clip0) 11 - 179: 23(float) CompositeExtract 177 0 + 164: 66(ptr) AccessChain 144(clip1) 12 + 165: 23(float) Load 164 + 166: 26(fvec4) Load 144(clip1) + 167: 26(fvec4) CompositeConstruct 165 165 165 165 + 168: 26(fvec4) FDiv 166 167 + Store 144(clip1) 168 + 171: 170(ptr) AccessChain 112(ubo) 169 + 172: 87(fvec2) Load 171 + 173: 26(fvec4) Load 124(clip0) + 174: 87(fvec2) VectorShuffle 173 173 0 1 + 175: 87(fvec2) FMul 174 172 + 176: 66(ptr) AccessChain 124(clip0) 11 + 177: 23(float) CompositeExtract 175 0 + Store 176 177 + 178: 66(ptr) AccessChain 124(clip0) 19 + 179: 23(float) CompositeExtract 175 1 Store 178 179 - 180: 66(ptr) AccessChain 124(clip0) 19 - 181: 23(float) CompositeExtract 177 1 - Store 180 181 - 182: 172(ptr) AccessChain 111(ubo) 171 - 183: 86(fvec2) Load 182 - 184: 26(fvec4) Load 144(clip1) - 185: 86(fvec2) VectorShuffle 184 184 0 1 - 186: 86(fvec2) FMul 185 183 - 187: 66(ptr) AccessChain 144(clip1) 11 - 188: 23(float) CompositeExtract 186 0 + 180: 170(ptr) AccessChain 112(ubo) 169 + 181: 87(fvec2) Load 180 + 182: 26(fvec4) Load 144(clip1) + 183: 87(fvec2) VectorShuffle 182 182 0 1 + 184: 87(fvec2) FMul 183 181 + 185: 66(ptr) AccessChain 144(clip1) 11 + 186: 23(float) CompositeExtract 184 0 + Store 185 186 + 187: 66(ptr) AccessChain 144(clip1) 19 + 188: 23(float) CompositeExtract 184 1 Store 187 188 - 189: 66(ptr) AccessChain 144(clip1) 19 - 190: 23(float) CompositeExtract 186 1 - Store 189 190 - 191: 26(fvec4) Load 124(clip0) - 192: 26(fvec4) Load 144(clip1) - 193: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 191 192 - 196: 195(ptr) AccessChain 111(ubo) 194 - 197: 23(float) Load 196 - 198: 23(float) FDiv 193 197 - 200: 195(ptr) AccessChain 111(ubo) 199 - 201: 23(float) Load 200 - 202: 23(float) FMul 198 201 - 205: 23(float) ExtInst 2(GLSL.std.450) 43(FClamp) 202 203 204 - ReturnValue 205 + 189: 26(fvec4) Load 124(clip0) + 190: 26(fvec4) Load 144(clip1) + 191: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 189 190 + 194: 193(ptr) AccessChain 112(ubo) 192 + 195: 23(float) Load 194 + 196: 23(float) FDiv 191 195 + 198: 193(ptr) AccessChain 112(ubo) 197 + 199: 23(float) Load 198 + 200: 23(float) FMul 196 199 + 203: 23(float) ExtInst 2(GLSL.std.450) 43(FClamp) 200 201 202 + ReturnValue 203 FunctionEnd 51(frustumCheck(): 46(bool) Function None 49 54: Label - 209(pos): 28(ptr) Variable Function - 278(i): 277(ptr) Variable Function - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 53 51(frustumCheck() - 238: 114(int) Load 235(gl_InvocationID) - 240: 239(ptr) AccessChain 231(gl_in) 238 128 - 241: 26(fvec4) Load 240 - Store 209(pos) 241 - 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 210 241 42 - 257: 249 Load 254(samplerHeight) - 265: 264(ptr) AccessChain 261(inUV) 128 - 266: 86(fvec2) Load 265 - 267: 26(fvec4) ImageSampleExplicitLod 257 266 Lod 135 - 268: 23(float) CompositeExtract 267 0 - 270: 195(ptr) AccessChain 111(ubo) 269 - 271: 23(float) Load 270 - 272: 23(float) FMul 268 271 - 273: 66(ptr) AccessChain 209(pos) 19 - 274: 23(float) Load 273 - 275: 23(float) FSub 274 272 - 276: 66(ptr) AccessChain 209(pos) 19 - Store 276 275 - Store 278(i) 128 - 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 279 128 42 - Branch 283 - 283: Label - LoopMerge 285 286 None - Branch 287 - 287: Label - 288: 114(int) Load 278(i) - 290: 46(bool) SLessThan 288 171 - BranchConditional 290 284 285 - 284: Label - 291: 26(fvec4) Load 209(pos) - 293: 114(int) Load 278(i) - 295: 294(ptr) AccessChain 111(ubo) 292 293 - 296: 26(fvec4) Load 295 - 297: 23(float) Dot 291 296 - 299: 23(float) FAdd 297 298 - 301: 46(bool) FOrdLessThan 299 135 - SelectionMerge 303 None - BranchConditional 301 302 303 - 302: Label - ReturnValue 305 - 303: Label - Branch 286 - 286: Label - 307: 114(int) Load 278(i) - 308: 114(int) IAdd 307 117 - Store 278(i) 308 - 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 279 308 42 - Branch 283 + 207(pos): 28(ptr) Variable Function + 276(i): 275(ptr) Variable Function + 206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 53 51(frustumCheck() + 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 208 207(pos) 42 + 237: 115(int) Load 234(gl_InvocationID) + 239: 238(ptr) AccessChain 230(gl_in) 237 129 + 240: 26(fvec4) Load 239 + Store 207(pos) 240 + 255: 247 Load 252(samplerHeight) + 263: 262(ptr) AccessChain 259(inUV) 129 + 264: 87(fvec2) Load 263 + 265: 26(fvec4) ImageSampleExplicitLod 255 264 Lod 136 + 266: 23(float) CompositeExtract 265 0 + 268: 193(ptr) AccessChain 112(ubo) 267 + 269: 23(float) Load 268 + 270: 23(float) FMul 266 269 + 271: 66(ptr) AccessChain 207(pos) 19 + 272: 23(float) Load 271 + 273: 23(float) FSub 272 270 + 274: 66(ptr) AccessChain 207(pos) 19 + Store 274 273 + 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 277 276(i) 42 + Store 276(i) 129 + Branch 281 + 281: Label + LoopMerge 283 284 None + Branch 285 285: Label - ReturnValue 83 + 286: 115(int) Load 276(i) + 288: 46(bool) SLessThan 286 169 + BranchConditional 288 282 283 + 282: Label + 289: 26(fvec4) Load 207(pos) + 291: 115(int) Load 276(i) + 293: 292(ptr) AccessChain 112(ubo) 290 291 + 294: 26(fvec4) Load 293 + 295: 23(float) Dot 289 294 + 297: 23(float) FAdd 295 296 + 299: 46(bool) FOrdLessThan 297 136 + SelectionMerge 301 None + BranchConditional 299 300 301 + 300: Label + ReturnValue 303 + 301: Label + Branch 284 + 284: Label + 305: 115(int) Load 276(i) + 306: 115(int) IAdd 305 118 + Store 276(i) 306 + Branch 281 + 283: Label + ReturnValue 84 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index e2b0e3ee11..696d4bf02f 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -9,7 +9,7 @@ Validation failed 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 13 "main" 37 54 80 98 124 159 267 279 286 297 303 + EntryPoint TessellationEvaluation 13 "main" 39 56 80 99 124 160 267 279 286 297 303 ExecutionMode 13 Quads ExecutionMode 13 SpacingEqual ExecutionMode 13 VertexOrderCw @@ -18,21 +18,21 @@ Validation failed 17: String "" 25: String "float" 32: String "uv1" - 39: String "inUV" - 42: String "int" - 56: String "gl_TessCoord" + 41: String "inUV" + 44: String "int" + 58: String "gl_TessCoord" 66: String "uv2" 82: String "outUV" 93: String "n1" - 100: String "inNormal" + 101: String "inNormal" 112: String "n2" 126: String "outNormal" 139: String "pos1" - 145: String "gl_Position" - 148: String "gl_PointSize" - 151: String "gl_CullDistance" - 155: String "gl_PerVertex" - 161: String "gl_in" + 146: String "gl_Position" + 149: String "gl_PointSize" + 152: String "gl_CullDistance" + 156: String "gl_PerVertex" + 162: String "gl_in" 174: String "pos2" 187: String "pos" 198: String "type.2d.image" @@ -53,21 +53,21 @@ Validation failed 305: String "outEyePos" Name 13 "main" Name 30 "uv1" - Name 37 "inUV" - Name 54 "gl_TessCoord" + Name 39 "inUV" + Name 56 "gl_TessCoord" Name 64 "uv2" Name 80 "outUV" Name 91 "n1" - Name 98 "inNormal" + Name 99 "inNormal" Name 110 "n2" Name 124 "outNormal" Name 137 "pos1" - Name 143 "gl_PerVertex" - MemberName 143(gl_PerVertex) 0 "gl_Position" - MemberName 143(gl_PerVertex) 1 "gl_PointSize" - MemberName 143(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 143(gl_PerVertex) 3 "gl_CullDistance" - Name 159 "gl_in" + Name 144 "gl_PerVertex" + MemberName 144(gl_PerVertex) 0 "gl_Position" + MemberName 144(gl_PerVertex) 1 "gl_PointSize" + MemberName 144(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 144(gl_PerVertex) 3 "gl_CullDistance" + Name 160 "gl_in" Name 172 "pos2" Name 185 "pos" Name 207 "displacementMap" @@ -91,16 +91,16 @@ Validation failed Name 286 "outLightVec" Name 297 "outWorldPos" Name 303 "outEyePos" - Decorate 37(inUV) Location 1 - Decorate 54(gl_TessCoord) BuiltIn TessCoord + Decorate 39(inUV) Location 1 + Decorate 56(gl_TessCoord) BuiltIn TessCoord Decorate 80(outUV) Location 1 - Decorate 98(inNormal) Location 0 + Decorate 99(inNormal) Location 0 Decorate 124(outNormal) Location 0 - MemberDecorate 143(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 143(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 143(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 143(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 143(gl_PerVertex) Block + MemberDecorate 144(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 144(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 144(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 144(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 144(gl_PerVertex) Block Decorate 207(displacementMap) DescriptorSet 0 Decorate 207(displacementMap) Binding 1 Decorate 219 ArrayStride 16 @@ -150,68 +150,68 @@ Validation failed 29: TypePointer Function 27(fvec2) 33: 6(int) Constant 56 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 32 28 16 33 11 15 20 - 34: TypeArray 27(fvec2) 9 - 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 28 9 - 36: TypePointer Input 34 - 37(inUV): 36(ptr) Variable Input - 40: 6(int) Constant 8 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 39 35 16 33 11 18 39 37(inUV) 40 - 41: TypeInt 32 1 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 42 9 20 11 - 44: 41(int) Constant 0 - 45: TypePointer Input 27(fvec2) - 48: 41(int) Constant 1 - 51: TypeVector 24(float) 3 - 52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12 - 53: TypePointer Input 51(fvec3) -54(gl_TessCoord): 53(ptr) Variable Input - 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 56 52 16 33 11 18 56 54(gl_TessCoord) 40 - 57: TypePointer Input 24(float) - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 36: TypeArray 27(fvec2) 9 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 28 9 + 38: TypePointer Input 36 + 39(inUV): 38(ptr) Variable Input + 42: 6(int) Constant 8 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 41 37 16 33 11 18 41 39(inUV) 42 + 43: TypeInt 32 1 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 44 9 20 11 + 46: 43(int) Constant 0 + 47: TypePointer Input 27(fvec2) + 50: 43(int) Constant 1 + 53: TypeVector 24(float) 3 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12 + 55: TypePointer Input 53(fvec3) +56(gl_TessCoord): 55(ptr) Variable Input + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 58 54 16 33 11 18 58 56(gl_TessCoord) 42 + 59: TypePointer Input 24(float) 67: 6(int) Constant 57 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 28 16 67 11 15 20 - 68: 41(int) Constant 3 - 71: 41(int) Constant 2 + 69: 43(int) Constant 3 + 72: 43(int) Constant 2 79: TypePointer Output 27(fvec2) 80(outUV): 79(ptr) Variable Output 83: 6(int) Constant 58 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 28 16 83 11 18 82 80(outUV) 40 - 90: TypePointer Function 51(fvec3) + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 28 16 83 11 18 82 80(outUV) 42 + 90: TypePointer Function 53(fvec3) 94: 6(int) Constant 60 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 93 52 16 94 11 15 20 - 95: TypeArray 51(fvec3) 9 - 96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 52 9 - 97: TypePointer Input 95 - 98(inNormal): 97(ptr) Variable Input - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 100 96 16 94 11 18 100 98(inNormal) 40 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 93 54 16 94 11 15 20 + 96: TypeArray 53(fvec3) 9 + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 54 9 + 98: TypePointer Input 96 + 99(inNormal): 98(ptr) Variable Input + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 101 97 16 94 11 18 101 99(inNormal) 42 113: 6(int) Constant 61 - 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 112 52 16 113 11 15 20 - 123: TypePointer Output 51(fvec3) + 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 112 54 16 113 11 15 20 + 123: TypePointer Output 53(fvec3) 124(outNormal): 123(ptr) Variable Output 127: 6(int) Constant 62 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 126 52 16 127 11 18 126 124(outNormal) 40 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 126 54 16 127 11 18 126 124(outNormal) 42 134: TypeVector 24(float) 4 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20 136: TypePointer Function 134(fvec4) 140: 6(int) Constant 65 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 135 16 140 11 15 20 - 141: TypeArray 24(float) 19 - 142: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 -143(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 141 141 - 146: 6(int) Constant 1756 - 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 145 135 16 19 146 11 11 12 - 149: 6(int) Constant 1774 - 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 148 26 16 19 149 11 11 12 - 152: 6(int) Constant 1817 - 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 152 11 11 12 - 153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 152 11 11 12 - 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 155 19 16 140 11 18 155 11 12 144 147 150 153 - 156: TypeArray 143(gl_PerVertex) 9 - 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 154 9 - 158: TypePointer Input 156 - 159(gl_in): 158(ptr) Variable Input - 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 161 157 16 140 11 18 161 159(gl_in) 40 - 162: TypePointer Input 134(fvec4) + 142: TypeArray 24(float) 19 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 +144(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142 + 147: 6(int) Constant 1756 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 135 16 19 147 11 11 12 + 150: 6(int) Constant 1774 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 149 26 16 19 150 11 11 12 + 153: 6(int) Constant 1817 + 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 153 11 11 12 + 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 153 11 11 12 + 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 19 16 140 11 18 156 11 12 145 148 151 154 + 157: TypeArray 144(gl_PerVertex) 9 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 155 9 + 159: TypePointer Input 157 + 160(gl_in): 159(ptr) Variable Input + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 162 158 16 140 11 18 162 160(gl_in) 42 + 163: TypePointer Input 134(fvec4) 175: 6(int) Constant 66 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 174 135 16 175 11 15 20 188: 6(int) Constant 67 @@ -224,7 +224,7 @@ Validation failed 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 204 11 16 199 11 18 205 201 12 206: TypePointer UniformConstant 202 207(displacementMap): 206(ptr) Variable UniformConstant - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 209 203 16 199 11 18 209 207(displacementMap) 40 + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 209 203 16 199 11 18 209 207(displacementMap) 42 212: 24(float) Constant 0 215: TypeMatrix 134(fvec4) 4 217: TypeBool @@ -241,46 +241,46 @@ Validation failed 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 228 135 16 229 225 11 11 12 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 231 220 16 9 225 11 11 12 234: 6(int) Constant 36 - 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12 - 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12 + 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12 + 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12 238: 6(int) Constant 35 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 237 28 16 238 225 11 11 12 - 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 40 11 11 12 + 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 241 19 16 199 11 18 241 11 12 222 226 227 230 232 235 236 239 242: TypePointer Uniform 221(UBO) 243(ubo): 242(ptr) Variable Uniform - 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 245 240 16 199 11 18 245 243(ubo) 40 - 246: 41(int) Constant 4 + 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 245 240 16 199 11 18 245 243(ubo) 42 + 246: 43(int) Constant 4 247: TypePointer Uniform 24(float) 251: TypePointer Function 24(float) -256(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 141 141 +256(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142 258: 6(int) Constant 165 - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 145 135 16 19 258 11 11 12 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 135 16 19 258 11 11 12 260: 6(int) Constant 183 - 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 148 26 16 19 260 11 11 12 + 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 149 26 16 19 260 11 11 12 262: 6(int) Constant 226 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 262 11 11 12 - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 151 142 16 19 262 11 11 12 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 262 11 11 12 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 262 11 11 12 265: 6(int) Constant 71 - 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 155 19 16 265 11 18 155 11 12 257 259 261 263 + 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 19 16 265 11 18 156 11 12 257 259 261 263 266: TypePointer Output 256(gl_PerVertex) 267: 266(ptr) Variable Output - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 264 16 265 11 18 17 267 40 + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 264 16 265 11 18 17 267 42 269: TypePointer Uniform 215 277: TypePointer Output 134(fvec4) 279(outViewVec): 123(ptr) Variable Output 282: 6(int) Constant 74 - 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 281 52 16 282 11 18 281 279(outViewVec) 40 + 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 281 54 16 282 11 18 281 279(outViewVec) 42 286(outLightVec): 123(ptr) Variable Output 289: 6(int) Constant 75 - 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 288 52 16 289 11 18 288 286(outLightVec) 40 + 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 288 54 16 289 11 18 288 286(outLightVec) 42 290: TypePointer Uniform 134(fvec4) 297(outWorldPos): 123(ptr) Variable Output 300: 6(int) Constant 76 - 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 299 52 16 300 11 18 299 297(outWorldPos) 40 + 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 299 54 16 300 11 18 299 297(outWorldPos) 42 303(outEyePos): 123(ptr) Variable Output 306: 6(int) Constant 77 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 52 16 306 11 18 305 303(outEyePos) 40 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 54 16 306 11 18 305 303(outEyePos) 42 13(main): 3 Function None 4 22: Label 30(uv1): 29(ptr) Variable Function @@ -291,88 +291,88 @@ Validation failed 172(pos2): 136(ptr) Variable Function 185(pos): 136(ptr) Variable Function 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 46: 45(ptr) AccessChain 37(inUV) 44 - 47: 27(fvec2) Load 46 - 49: 45(ptr) AccessChain 37(inUV) 48 - 50: 27(fvec2) Load 49 - 58: 57(ptr) AccessChain 54(gl_TessCoord) 11 - 59: 24(float) Load 58 - 60: 27(fvec2) CompositeConstruct 59 59 - 61: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 47 50 60 - Store 30(uv1) 61 - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 31 61 63 - 69: 45(ptr) AccessChain 37(inUV) 68 - 70: 27(fvec2) Load 69 - 72: 45(ptr) AccessChain 37(inUV) 71 - 73: 27(fvec2) Load 72 - 74: 57(ptr) AccessChain 54(gl_TessCoord) 11 - 75: 24(float) Load 74 - 76: 27(fvec2) CompositeConstruct 75 75 - 77: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 70 73 76 - Store 64(uv2) 77 - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 77 63 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 31 30(uv1) 35 + 48: 47(ptr) AccessChain 39(inUV) 46 + 49: 27(fvec2) Load 48 + 51: 47(ptr) AccessChain 39(inUV) 50 + 52: 27(fvec2) Load 51 + 60: 59(ptr) AccessChain 56(gl_TessCoord) 11 + 61: 24(float) Load 60 + 62: 27(fvec2) CompositeConstruct 61 61 + 63: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 49 52 62 + Store 30(uv1) 63 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 64(uv2) 35 + 70: 47(ptr) AccessChain 39(inUV) 69 + 71: 27(fvec2) Load 70 + 73: 47(ptr) AccessChain 39(inUV) 72 + 74: 27(fvec2) Load 73 + 75: 59(ptr) AccessChain 56(gl_TessCoord) 11 + 76: 24(float) Load 75 + 77: 27(fvec2) CompositeConstruct 76 76 + 78: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 71 74 77 + Store 64(uv2) 78 84: 27(fvec2) Load 30(uv1) 85: 27(fvec2) Load 64(uv2) - 86: 57(ptr) AccessChain 54(gl_TessCoord) 19 + 86: 59(ptr) AccessChain 56(gl_TessCoord) 19 87: 24(float) Load 86 88: 27(fvec2) CompositeConstruct 87 87 89: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 84 85 88 Store 80(outUV) 89 - 101: 53(ptr) AccessChain 98(inNormal) 44 - 102: 51(fvec3) Load 101 - 103: 53(ptr) AccessChain 98(inNormal) 48 - 104: 51(fvec3) Load 103 - 105: 57(ptr) AccessChain 54(gl_TessCoord) 11 - 106: 24(float) Load 105 - 107: 51(fvec3) CompositeConstruct 106 106 106 - 108: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 102 104 107 - Store 91(n1) 108 - 109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 92 108 63 - 114: 53(ptr) AccessChain 98(inNormal) 68 - 115: 51(fvec3) Load 114 - 116: 53(ptr) AccessChain 98(inNormal) 71 - 117: 51(fvec3) Load 116 - 118: 57(ptr) AccessChain 54(gl_TessCoord) 11 - 119: 24(float) Load 118 - 120: 51(fvec3) CompositeConstruct 119 119 119 - 121: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 115 117 120 - Store 110(n2) 121 - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 111 121 63 - 128: 51(fvec3) Load 91(n1) - 129: 51(fvec3) Load 110(n2) - 130: 57(ptr) AccessChain 54(gl_TessCoord) 19 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 92 91(n1) 35 + 102: 55(ptr) AccessChain 99(inNormal) 46 + 103: 53(fvec3) Load 102 + 104: 55(ptr) AccessChain 99(inNormal) 50 + 105: 53(fvec3) Load 104 + 106: 59(ptr) AccessChain 56(gl_TessCoord) 11 + 107: 24(float) Load 106 + 108: 53(fvec3) CompositeConstruct 107 107 107 + 109: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 103 105 108 + Store 91(n1) 109 + 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 111 110(n2) 35 + 115: 55(ptr) AccessChain 99(inNormal) 69 + 116: 53(fvec3) Load 115 + 117: 55(ptr) AccessChain 99(inNormal) 72 + 118: 53(fvec3) Load 117 + 119: 59(ptr) AccessChain 56(gl_TessCoord) 11 + 120: 24(float) Load 119 + 121: 53(fvec3) CompositeConstruct 120 120 120 + 122: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 116 118 121 + Store 110(n2) 122 + 128: 53(fvec3) Load 91(n1) + 129: 53(fvec3) Load 110(n2) + 130: 59(ptr) AccessChain 56(gl_TessCoord) 19 131: 24(float) Load 130 - 132: 51(fvec3) CompositeConstruct 131 131 131 - 133: 51(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 128 129 132 + 132: 53(fvec3) CompositeConstruct 131 131 131 + 133: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 128 129 132 Store 124(outNormal) 133 - 163: 162(ptr) AccessChain 159(gl_in) 44 44 - 164: 134(fvec4) Load 163 - 165: 162(ptr) AccessChain 159(gl_in) 48 44 - 166: 134(fvec4) Load 165 - 167: 57(ptr) AccessChain 54(gl_TessCoord) 11 - 168: 24(float) Load 167 - 169: 134(fvec4) CompositeConstruct 168 168 168 168 - 170: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 164 166 169 - Store 137(pos1) 170 - 171: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 138 170 63 - 176: 162(ptr) AccessChain 159(gl_in) 68 44 - 177: 134(fvec4) Load 176 - 178: 162(ptr) AccessChain 159(gl_in) 71 44 - 179: 134(fvec4) Load 178 - 180: 57(ptr) AccessChain 54(gl_TessCoord) 11 - 181: 24(float) Load 180 - 182: 134(fvec4) CompositeConstruct 181 181 181 181 - 183: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 177 179 182 - Store 172(pos2) 183 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 173 183 63 - 189: 134(fvec4) Load 137(pos1) - 190: 134(fvec4) Load 172(pos2) - 191: 57(ptr) AccessChain 54(gl_TessCoord) 19 - 192: 24(float) Load 191 - 193: 134(fvec4) CompositeConstruct 192 192 192 192 - 194: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 189 190 193 - Store 185(pos) 194 - 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 186 194 63 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 138 137(pos1) 35 + 164: 163(ptr) AccessChain 160(gl_in) 46 46 + 165: 134(fvec4) Load 164 + 166: 163(ptr) AccessChain 160(gl_in) 50 46 + 167: 134(fvec4) Load 166 + 168: 59(ptr) AccessChain 56(gl_TessCoord) 11 + 169: 24(float) Load 168 + 170: 134(fvec4) CompositeConstruct 169 169 169 169 + 171: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 165 167 170 + Store 137(pos1) 171 + 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 173 172(pos2) 35 + 177: 163(ptr) AccessChain 160(gl_in) 69 46 + 178: 134(fvec4) Load 177 + 179: 163(ptr) AccessChain 160(gl_in) 72 46 + 180: 134(fvec4) Load 179 + 181: 59(ptr) AccessChain 56(gl_TessCoord) 11 + 182: 24(float) Load 181 + 183: 134(fvec4) CompositeConstruct 182 182 182 182 + 184: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 178 180 183 + Store 172(pos2) 184 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 186 185(pos) 35 + 190: 134(fvec4) Load 137(pos1) + 191: 134(fvec4) Load 172(pos2) + 192: 59(ptr) AccessChain 56(gl_TessCoord) 19 + 193: 24(float) Load 192 + 194: 134(fvec4) CompositeConstruct 193 193 193 193 + 195: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 190 191 194 + Store 185(pos) 195 210: 202 Load 207(displacementMap) 211: 27(fvec2) Load 80(outUV) 213: 134(fvec4) ImageSampleExplicitLod 210 211 Lod 212 @@ -385,37 +385,37 @@ Validation failed 254: 24(float) FSub 253 250 255: 251(ptr) AccessChain 185(pos) 19 Store 255 254 - 270: 269(ptr) AccessChain 243(ubo) 44 + 270: 269(ptr) AccessChain 243(ubo) 46 271: 215 Load 270 - 272: 269(ptr) AccessChain 243(ubo) 48 + 272: 269(ptr) AccessChain 243(ubo) 50 273: 215 Load 272 274: 215 MatrixTimesMatrix 271 273 275: 134(fvec4) Load 185(pos) 276: 134(fvec4) MatrixTimesVector 274 275 - 278: 277(ptr) AccessChain 267 44 + 278: 277(ptr) AccessChain 267 46 Store 278 276 283: 134(fvec4) Load 185(pos) - 284: 51(fvec3) VectorShuffle 283 283 0 1 2 - 285: 51(fvec3) FNegate 284 + 284: 53(fvec3) VectorShuffle 283 283 0 1 2 + 285: 53(fvec3) FNegate 284 Store 279(outViewVec) 285 - 291: 290(ptr) AccessChain 243(ubo) 71 + 291: 290(ptr) AccessChain 243(ubo) 72 292: 134(fvec4) Load 291 - 293: 51(fvec3) VectorShuffle 292 292 0 1 2 - 294: 51(fvec3) Load 279(outViewVec) - 295: 51(fvec3) FAdd 293 294 - 296: 51(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 295 + 293: 53(fvec3) VectorShuffle 292 292 0 1 2 + 294: 53(fvec3) Load 279(outViewVec) + 295: 53(fvec3) FAdd 293 294 + 296: 53(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 295 Store 286(outLightVec) 296 301: 134(fvec4) Load 185(pos) - 302: 51(fvec3) VectorShuffle 301 301 0 1 2 + 302: 53(fvec3) VectorShuffle 301 301 0 1 2 Store 297(outWorldPos) 302 - 307: 269(ptr) AccessChain 243(ubo) 48 + 307: 269(ptr) AccessChain 243(ubo) 50 308: 215 Load 307 309: 134(fvec4) Load 185(pos) 310: 134(fvec4) MatrixTimesVector 308 309 311: 24(float) CompositeExtract 310 0 312: 24(float) CompositeExtract 310 1 313: 24(float) CompositeExtract 310 2 - 314: 51(fvec3) CompositeConstruct 311 312 313 + 314: 53(fvec3) CompositeConstruct 311 312 313 Store 303(outEyePos) 314 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index 303f314ce3..9a7bdd62a4 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -2,14 +2,14 @@ spv.debuginfo.glsl.vert Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 377 +// Id's are bound by 374 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 13 "main" 30 36 40 47 55 68 248 265 270 295 309 327 362 370 + EntryPoint Vertex 13 "main" 30 36 40 47 55 70 247 264 269 293 307 325 359 367 8: String "uint" 14: String "main" 17: String "" @@ -21,32 +21,32 @@ Validation failed 52: String "int" 57: String "instanceTexIndex" 66: String "s" - 70: String "instanceRot" - 82: String "modelview" - 87: String "lightPos" - 90: String "globSpeed" - 94: String "UBO" - 98: String "ubo" + 72: String "instanceRot" + 84: String "modelview" + 89: String "lightPos" + 92: String "globSpeed" + 96: String "UBO" + 100: String "ubo" 109: String "c" 123: String "mx" - 158: String "my" - 187: String "mz" - 202: String "rotMat" - 228: String "gRotMat" - 246: String "locPos" - 250: String "inPos" - 261: String "pos" - 267: String "instanceScale" - 272: String "instancePos" - 284: String "gl_Position" - 287: String "gl_PointSize" - 289: String "gl_CullDistance" - 292: String "gl_PerVertex" - 311: String "outNormal" - 329: String "inNormal" - 345: String "lPos" - 364: String "outLightVec" - 372: String "outViewVec" + 157: String "my" + 185: String "mz" + 201: String "rotMat" + 225: String "gRotMat" + 244: String "locPos" + 249: String "inPos" + 259: String "pos" + 266: String "instanceScale" + 271: String "instancePos" + 282: String "gl_Position" + 285: String "gl_PointSize" + 287: String "gl_CullDistance" + 290: String "gl_PerVertex" + 309: String "outNormal" + 327: String "inNormal" + 342: String "lPos" + 361: String "outLightVec" + 369: String "outViewVec" Name 13 "main" Name 30 "outColor" Name 36 "inColor" @@ -54,66 +54,66 @@ Validation failed Name 47 "inUV" Name 55 "instanceTexIndex" Name 64 "s" - Name 68 "instanceRot" - Name 80 "UBO" - MemberName 80(UBO) 0 "projection" - MemberName 80(UBO) 1 "modelview" - MemberName 80(UBO) 2 "lightPos" - MemberName 80(UBO) 3 "locSpeed" - MemberName 80(UBO) 4 "globSpeed" - Name 96 "ubo" + Name 70 "instanceRot" + Name 82 "UBO" + MemberName 82(UBO) 0 "projection" + MemberName 82(UBO) 1 "modelview" + MemberName 82(UBO) 2 "lightPos" + MemberName 82(UBO) 3 "locSpeed" + MemberName 82(UBO) 4 "globSpeed" + Name 98 "ubo" Name 107 "c" Name 121 "mx" - Name 156 "my" - Name 185 "mz" - Name 200 "rotMat" - Name 226 "gRotMat" - Name 244 "locPos" - Name 248 "inPos" - Name 259 "pos" - Name 265 "instanceScale" - Name 270 "instancePos" - Name 282 "gl_PerVertex" - MemberName 282(gl_PerVertex) 0 "gl_Position" - MemberName 282(gl_PerVertex) 1 "gl_PointSize" - MemberName 282(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 282(gl_PerVertex) 3 "gl_CullDistance" - Name 295 "" - Name 309 "outNormal" - Name 327 "inNormal" - Name 343 "lPos" - Name 362 "outLightVec" - Name 370 "outViewVec" + Name 155 "my" + Name 183 "mz" + Name 199 "rotMat" + Name 223 "gRotMat" + Name 242 "locPos" + Name 247 "inPos" + Name 257 "pos" + Name 264 "instanceScale" + Name 269 "instancePos" + Name 280 "gl_PerVertex" + MemberName 280(gl_PerVertex) 0 "gl_Position" + MemberName 280(gl_PerVertex) 1 "gl_PointSize" + MemberName 280(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 280(gl_PerVertex) 3 "gl_CullDistance" + Name 293 "" + Name 307 "outNormal" + Name 325 "inNormal" + Name 340 "lPos" + Name 359 "outLightVec" + Name 367 "outViewVec" Decorate 30(outColor) Location 1 Decorate 36(inColor) Location 3 Decorate 40(outUV) Location 2 Decorate 47(inUV) Location 2 Decorate 55(instanceTexIndex) Location 7 - Decorate 68(instanceRot) Location 5 - MemberDecorate 80(UBO) 0 ColMajor - MemberDecorate 80(UBO) 0 Offset 0 - MemberDecorate 80(UBO) 0 MatrixStride 16 - MemberDecorate 80(UBO) 1 ColMajor - MemberDecorate 80(UBO) 1 Offset 64 - MemberDecorate 80(UBO) 1 MatrixStride 16 - MemberDecorate 80(UBO) 2 Offset 128 - MemberDecorate 80(UBO) 3 Offset 144 - MemberDecorate 80(UBO) 4 Offset 148 - Decorate 80(UBO) Block - Decorate 96(ubo) DescriptorSet 0 - Decorate 96(ubo) Binding 0 - Decorate 248(inPos) Location 0 - Decorate 265(instanceScale) Location 6 - Decorate 270(instancePos) Location 4 - MemberDecorate 282(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 282(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 282(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 282(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 282(gl_PerVertex) Block - Decorate 309(outNormal) Location 0 - Decorate 327(inNormal) Location 1 - Decorate 362(outLightVec) Location 4 - Decorate 370(outViewVec) Location 3 + Decorate 70(instanceRot) Location 5 + MemberDecorate 82(UBO) 0 ColMajor + MemberDecorate 82(UBO) 0 Offset 0 + MemberDecorate 82(UBO) 0 MatrixStride 16 + MemberDecorate 82(UBO) 1 ColMajor + MemberDecorate 82(UBO) 1 Offset 64 + MemberDecorate 82(UBO) 1 MatrixStride 16 + MemberDecorate 82(UBO) 2 Offset 128 + MemberDecorate 82(UBO) 3 Offset 144 + MemberDecorate 82(UBO) 4 Offset 148 + Decorate 82(UBO) Block + Decorate 98(ubo) DescriptorSet 0 + Decorate 98(ubo) Binding 0 + Decorate 247(inPos) Location 0 + Decorate 264(instanceScale) Location 6 + Decorate 269(instancePos) Location 4 + MemberDecorate 280(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 280(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 280(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 280(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 280(gl_PerVertex) Block + Decorate 307(outNormal) Location 0 + Decorate 325(inNormal) Location 1 + Decorate 359(outLightVec) Location 4 + Decorate 367(outViewVec) Location 3 3: TypeVoid 4: TypeFunction 3 6: TypeInt 32 0 @@ -157,112 +157,112 @@ Validation failed 63: TypePointer Function 24(float) 67: 6(int) Constant 62 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 26 16 67 11 15 20 - 68(instanceRot): 35(ptr) Variable Input - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 70 28 16 67 11 18 70 68(instanceRot) 34 - 71: TypePointer Input 24(float) - 74: TypeVector 24(float) 4 - 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20 - 76: TypeMatrix 74(fvec4) 4 - 78: TypeBool - 79: 78(bool) ConstantTrue - 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 75 20 79 - 80(UBO): TypeStruct 76 76 74(fvec4) 24(float) 24(float) - 83: 6(int) Constant 42 - 84: 6(int) Constant 7 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 77 16 83 84 11 11 12 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 77 16 83 84 11 11 12 - 88: 6(int) Constant 43 - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 87 75 16 88 84 11 11 12 - 91: 6(int) Constant 45 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 26 16 91 34 11 11 12 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 90 26 16 91 34 11 11 12 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 94 19 16 67 11 18 94 11 12 81 85 86 89 92 - 95: TypePointer Uniform 80(UBO) - 96(ubo): 95(ptr) Variable Uniform - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 98 93 16 67 11 18 98 96(ubo) 34 - 99: 51(int) Constant 3 - 100: TypePointer Uniform 24(float) - 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 70(instanceRot): 35(ptr) Variable Input + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 72 28 16 67 11 18 72 70(instanceRot) 34 + 73: TypePointer Input 24(float) + 76: TypeVector 24(float) 4 + 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20 + 78: TypeMatrix 76(fvec4) 4 + 80: TypeBool + 81: 80(bool) ConstantTrue + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 77 20 81 + 82(UBO): TypeStruct 78 78 76(fvec4) 24(float) 24(float) + 85: 6(int) Constant 42 + 86: 6(int) Constant 7 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 79 16 85 86 11 11 12 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 79 16 85 86 11 11 12 + 90: 6(int) Constant 43 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 89 77 16 90 86 11 11 12 + 93: 6(int) Constant 45 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 92 26 16 93 34 11 11 12 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 92 26 16 93 34 11 11 12 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 96 19 16 67 11 18 96 11 12 83 87 88 91 94 + 97: TypePointer Uniform 82(UBO) + 98(ubo): 97(ptr) Variable Uniform + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 100 95 16 67 11 18 100 98(ubo) 34 + 101: 51(int) Constant 3 + 102: TypePointer Uniform 24(float) 110: 6(int) Constant 63 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 26 16 110 11 15 20 118: TypeMatrix 27(fvec3) 3 - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 28 12 79 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 28 12 81 120: TypePointer Function 118 124: 6(int) Constant 65 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 123 119 16 124 11 15 20 - 125: 51(int) Constant 0 - 128: 24(float) Constant 0 - 130: TypePointer Function 27(fvec3) - 132: 51(int) Constant 1 - 138: 51(int) Constant 2 - 139: 24(float) Constant 1065353216 - 140: 27(fvec3) ConstantComposite 128 128 139 - 159: 6(int) Constant 73 - 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 158 119 16 159 11 15 20 - 164: 27(fvec3) ConstantComposite 128 139 128 - 188: 6(int) Constant 81 - 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 187 119 16 188 11 15 20 - 189: 27(fvec3) ConstantComposite 139 128 128 - 203: 6(int) Constant 85 - 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 202 119 16 203 11 15 20 - 212: 51(int) Constant 4 - 225: TypePointer Function 76 - 229: 6(int) Constant 90 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 228 77 16 229 11 15 20 - 233: TypePointer Function 74(fvec4) - 235: 74(fvec4) ConstantComposite 128 139 128 128 - 242: 74(fvec4) ConstantComposite 128 128 128 139 - 247: 6(int) Constant 95 - 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 246 75 16 247 11 15 20 - 248(inPos): 35(ptr) Variable Input - 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 250 28 16 247 11 18 250 248(inPos) 34 - 262: 6(int) Constant 96 - 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 75 16 262 11 15 20 -265(instanceScale): 71(ptr) Variable Input - 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 267 26 16 262 11 18 267 265(instanceScale) 34 -270(instancePos): 35(ptr) Variable Input - 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 272 28 16 262 11 18 272 270(instancePos) 34 - 280: TypeArray 24(float) 19 - 281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 -282(gl_PerVertex): TypeStruct 74(fvec4) 24(float) 280 280 - 285: 6(int) Constant 24 - 283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 284 75 16 19 285 11 11 12 - 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 26 16 19 83 11 11 12 - 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 289 281 16 19 203 11 11 12 - 290: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 289 281 16 19 203 11 11 12 - 293: 6(int) Constant 98 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 292 19 16 293 11 18 292 11 12 283 286 288 290 - 294: TypePointer Output 282(gl_PerVertex) - 295: 294(ptr) Variable Output - 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 291 16 293 11 18 17 295 34 - 297: TypePointer Uniform 76 - 307: TypePointer Output 74(fvec4) - 309(outNormal): 29(ptr) Variable Output - 312: 6(int) Constant 99 - 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 311 28 16 312 11 18 311 309(outNormal) 34 - 327(inNormal): 35(ptr) Variable Input - 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 329 28 16 312 11 18 329 327(inNormal) 34 - 346: 6(int) Constant 102 - 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 345 28 16 346 11 15 20 - 356: TypePointer Uniform 74(fvec4) -362(outLightVec): 29(ptr) Variable Output - 365: 6(int) Constant 103 - 363: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 364 28 16 365 11 18 364 362(outLightVec) 34 - 370(outViewVec): 29(ptr) Variable Output - 373: 6(int) Constant 104 - 371: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 372 28 16 373 11 18 372 370(outViewVec) 34 + 126: 51(int) Constant 0 + 129: 24(float) Constant 0 + 131: TypePointer Function 27(fvec3) + 133: 51(int) Constant 1 + 139: 51(int) Constant 2 + 140: 24(float) Constant 1065353216 + 141: 27(fvec3) ConstantComposite 129 129 140 + 158: 6(int) Constant 73 + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 157 119 16 158 11 15 20 + 164: 27(fvec3) ConstantComposite 129 140 129 + 186: 6(int) Constant 81 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 119 16 186 11 15 20 + 188: 27(fvec3) ConstantComposite 140 129 129 + 202: 6(int) Constant 85 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 201 119 16 202 11 15 20 + 211: 51(int) Constant 4 + 222: TypePointer Function 78 + 226: 6(int) Constant 90 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 225 79 16 226 11 15 20 + 231: TypePointer Function 76(fvec4) + 233: 76(fvec4) ConstantComposite 129 140 129 129 + 240: 76(fvec4) ConstantComposite 129 129 129 140 + 245: 6(int) Constant 95 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 77 16 245 11 15 20 + 247(inPos): 35(ptr) Variable Input + 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 249 28 16 245 11 18 249 247(inPos) 34 + 260: 6(int) Constant 96 + 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 259 77 16 260 11 15 20 +264(instanceScale): 73(ptr) Variable Input + 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 266 26 16 260 11 18 266 264(instanceScale) 34 +269(instancePos): 35(ptr) Variable Input + 270: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 271 28 16 260 11 18 271 269(instancePos) 34 + 278: TypeArray 24(float) 19 + 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 +280(gl_PerVertex): TypeStruct 76(fvec4) 24(float) 278 278 + 283: 6(int) Constant 24 + 281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 282 77 16 19 283 11 11 12 + 284: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 285 26 16 19 85 11 11 12 + 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 279 16 19 202 11 11 12 + 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 279 16 19 202 11 11 12 + 291: 6(int) Constant 98 + 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 290 19 16 291 11 18 290 11 12 281 284 286 288 + 292: TypePointer Output 280(gl_PerVertex) + 293: 292(ptr) Variable Output + 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 289 16 291 11 18 17 293 34 + 295: TypePointer Uniform 78 + 305: TypePointer Output 76(fvec4) + 307(outNormal): 29(ptr) Variable Output + 310: 6(int) Constant 99 + 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 309 28 16 310 11 18 309 307(outNormal) 34 + 325(inNormal): 35(ptr) Variable Input + 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 327 28 16 310 11 18 327 325(inNormal) 34 + 343: 6(int) Constant 102 + 341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 342 28 16 343 11 15 20 + 354: TypePointer Uniform 76(fvec4) +359(outLightVec): 29(ptr) Variable Output + 362: 6(int) Constant 103 + 360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 361 28 16 362 11 18 361 359(outLightVec) 34 + 367(outViewVec): 29(ptr) Variable Output + 370: 6(int) Constant 104 + 368: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 369 28 16 370 11 18 369 367(outViewVec) 34 13(main): 3 Function None 4 22: Label 64(s): 63(ptr) Variable Function 107(c): 63(ptr) Variable Function 121(mx): 120(ptr) Variable Function - 156(my): 120(ptr) Variable Function - 185(mz): 120(ptr) Variable Function - 200(rotMat): 120(ptr) Variable Function - 226(gRotMat): 225(ptr) Variable Function - 244(locPos): 233(ptr) Variable Function - 259(pos): 233(ptr) Variable Function - 343(lPos): 130(ptr) Variable Function + 155(my): 120(ptr) Variable Function + 183(mz): 120(ptr) Variable Function + 199(rotMat): 120(ptr) Variable Function + 223(gRotMat): 222(ptr) Variable Function + 242(locPos): 231(ptr) Variable Function + 257(pos): 231(ptr) Variable Function + 340(lPos): 131(ptr) Variable Function 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) 39: 27(fvec3) Load 36(inColor) Store 30(outColor) 39 @@ -273,215 +273,212 @@ Validation failed 61: 24(float) CompositeExtract 50 1 62: 27(fvec3) CompositeConstruct 60 61 59 Store 40(outUV) 62 - 72: 71(ptr) AccessChain 68(instanceRot) 11 - 73: 24(float) Load 72 - 101: 100(ptr) AccessChain 96(ubo) 99 - 102: 24(float) Load 101 - 103: 24(float) FAdd 73 102 - 104: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 103 - Store 64(s) 104 - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 104 106 - 111: 71(ptr) AccessChain 68(instanceRot) 11 - 112: 24(float) Load 111 - 113: 100(ptr) AccessChain 96(ubo) 99 - 114: 24(float) Load 113 - 115: 24(float) FAdd 112 114 - 116: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 115 - Store 107(c) 116 - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 116 106 - 126: 24(float) Load 107(c) - 127: 24(float) Load 64(s) - 129: 27(fvec3) CompositeConstruct 126 127 128 - 131: 130(ptr) AccessChain 121(mx) 125 - Store 131 129 - 133: 24(float) Load 64(s) - 134: 24(float) FNegate 133 - 135: 24(float) Load 107(c) - 136: 27(fvec3) CompositeConstruct 134 135 128 - 137: 130(ptr) AccessChain 121(mx) 132 - Store 137 136 - 141: 130(ptr) AccessChain 121(mx) 138 - Store 141 140 - 142: 71(ptr) AccessChain 68(instanceRot) 19 - 143: 24(float) Load 142 - 144: 100(ptr) AccessChain 96(ubo) 99 - 145: 24(float) Load 144 - 146: 24(float) FAdd 143 145 - 147: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 146 - Store 64(s) 147 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 147 106 - 149: 71(ptr) AccessChain 68(instanceRot) 19 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 64(s) 69 + 74: 73(ptr) AccessChain 70(instanceRot) 11 + 75: 24(float) Load 74 + 103: 102(ptr) AccessChain 98(ubo) 101 + 104: 24(float) Load 103 + 105: 24(float) FAdd 75 104 + 106: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 105 + Store 64(s) 106 + 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 107(c) 69 + 112: 73(ptr) AccessChain 70(instanceRot) 11 + 113: 24(float) Load 112 + 114: 102(ptr) AccessChain 98(ubo) 101 + 115: 24(float) Load 114 + 116: 24(float) FAdd 113 115 + 117: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 116 + Store 107(c) 117 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 122 121(mx) 69 + 127: 24(float) Load 107(c) + 128: 24(float) Load 64(s) + 130: 27(fvec3) CompositeConstruct 127 128 129 + 132: 131(ptr) AccessChain 121(mx) 126 + Store 132 130 + 134: 24(float) Load 64(s) + 135: 24(float) FNegate 134 + 136: 24(float) Load 107(c) + 137: 27(fvec3) CompositeConstruct 135 136 129 + 138: 131(ptr) AccessChain 121(mx) 133 + Store 138 137 + 142: 131(ptr) AccessChain 121(mx) 139 + Store 142 141 + 143: 73(ptr) AccessChain 70(instanceRot) 19 + 144: 24(float) Load 143 + 145: 102(ptr) AccessChain 98(ubo) 101 + 146: 24(float) Load 145 + 147: 24(float) FAdd 144 146 + 148: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 147 + Store 64(s) 148 + 149: 73(ptr) AccessChain 70(instanceRot) 19 150: 24(float) Load 149 - 151: 100(ptr) AccessChain 96(ubo) 99 + 151: 102(ptr) AccessChain 98(ubo) 101 152: 24(float) Load 151 153: 24(float) FAdd 150 152 154: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 153 Store 107(c) 154 - 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 154 106 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 156 155(my) 69 160: 24(float) Load 107(c) 161: 24(float) Load 64(s) - 162: 27(fvec3) CompositeConstruct 160 128 161 - 163: 130(ptr) AccessChain 156(my) 125 + 162: 27(fvec3) CompositeConstruct 160 129 161 + 163: 131(ptr) AccessChain 155(my) 126 Store 163 162 - 165: 130(ptr) AccessChain 156(my) 132 + 165: 131(ptr) AccessChain 155(my) 133 Store 165 164 166: 24(float) Load 64(s) 167: 24(float) FNegate 166 168: 24(float) Load 107(c) - 169: 27(fvec3) CompositeConstruct 167 128 168 - 170: 130(ptr) AccessChain 156(my) 138 + 169: 27(fvec3) CompositeConstruct 167 129 168 + 170: 131(ptr) AccessChain 155(my) 139 Store 170 169 - 171: 71(ptr) AccessChain 68(instanceRot) 21 + 171: 73(ptr) AccessChain 70(instanceRot) 21 172: 24(float) Load 171 - 173: 100(ptr) AccessChain 96(ubo) 99 + 173: 102(ptr) AccessChain 98(ubo) 101 174: 24(float) Load 173 175: 24(float) FAdd 172 174 176: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 175 Store 64(s) 176 - 177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 176 106 - 178: 71(ptr) AccessChain 68(instanceRot) 21 - 179: 24(float) Load 178 - 180: 100(ptr) AccessChain 96(ubo) 99 - 181: 24(float) Load 180 - 182: 24(float) FAdd 179 181 - 183: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 182 - Store 107(c) 183 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 183 106 - 190: 130(ptr) AccessChain 185(mz) 125 - Store 190 189 - 191: 24(float) Load 107(c) - 192: 24(float) Load 64(s) - 193: 27(fvec3) CompositeConstruct 128 191 192 - 194: 130(ptr) AccessChain 185(mz) 132 - Store 194 193 - 195: 24(float) Load 64(s) - 196: 24(float) FNegate 195 - 197: 24(float) Load 107(c) - 198: 27(fvec3) CompositeConstruct 128 196 197 - 199: 130(ptr) AccessChain 185(mz) 138 - Store 199 198 - 204: 118 Load 185(mz) - 205: 118 Load 156(my) + 177: 73(ptr) AccessChain 70(instanceRot) 21 + 178: 24(float) Load 177 + 179: 102(ptr) AccessChain 98(ubo) 101 + 180: 24(float) Load 179 + 181: 24(float) FAdd 178 180 + 182: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 181 + Store 107(c) 182 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 184 183(mz) 69 + 189: 131(ptr) AccessChain 183(mz) 126 + Store 189 188 + 190: 24(float) Load 107(c) + 191: 24(float) Load 64(s) + 192: 27(fvec3) CompositeConstruct 129 190 191 + 193: 131(ptr) AccessChain 183(mz) 133 + Store 193 192 + 194: 24(float) Load 64(s) + 195: 24(float) FNegate 194 + 196: 24(float) Load 107(c) + 197: 27(fvec3) CompositeConstruct 129 195 196 + 198: 131(ptr) AccessChain 183(mz) 139 + Store 198 197 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 200 199(rotMat) 69 + 204: 118 Load 183(mz) + 205: 118 Load 155(my) 206: 118 MatrixTimesMatrix 204 205 207: 118 Load 121(mx) 208: 118 MatrixTimesMatrix 206 207 - Store 200(rotMat) 208 - 209: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 201 208 106 - 210: 71(ptr) AccessChain 68(instanceRot) 19 - 211: 24(float) Load 210 - 213: 100(ptr) AccessChain 96(ubo) 212 - 214: 24(float) Load 213 - 215: 24(float) FAdd 211 214 - 216: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 215 - Store 64(s) 216 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 65 216 106 - 218: 71(ptr) AccessChain 68(instanceRot) 19 + Store 199(rotMat) 208 + 209: 73(ptr) AccessChain 70(instanceRot) 19 + 210: 24(float) Load 209 + 212: 102(ptr) AccessChain 98(ubo) 211 + 213: 24(float) Load 212 + 214: 24(float) FAdd 210 213 + 215: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 214 + Store 64(s) 215 + 216: 73(ptr) AccessChain 70(instanceRot) 19 + 217: 24(float) Load 216 + 218: 102(ptr) AccessChain 98(ubo) 211 219: 24(float) Load 218 - 220: 100(ptr) AccessChain 96(ubo) 212 - 221: 24(float) Load 220 - 222: 24(float) FAdd 219 221 - 223: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 222 - Store 107(c) 223 - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 223 106 - 230: 24(float) Load 107(c) - 231: 24(float) Load 64(s) - 232: 74(fvec4) CompositeConstruct 230 128 231 128 - 234: 233(ptr) AccessChain 226(gRotMat) 125 - Store 234 232 - 236: 233(ptr) AccessChain 226(gRotMat) 132 - Store 236 235 - 237: 24(float) Load 64(s) - 238: 24(float) FNegate 237 - 239: 24(float) Load 107(c) - 240: 74(fvec4) CompositeConstruct 238 128 239 128 - 241: 233(ptr) AccessChain 226(gRotMat) 138 + 220: 24(float) FAdd 217 219 + 221: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 220 + Store 107(c) 221 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 224 223(gRotMat) 69 + 228: 24(float) Load 107(c) + 229: 24(float) Load 64(s) + 230: 76(fvec4) CompositeConstruct 228 129 229 129 + 232: 231(ptr) AccessChain 223(gRotMat) 126 + Store 232 230 + 234: 231(ptr) AccessChain 223(gRotMat) 133 + Store 234 233 + 235: 24(float) Load 64(s) + 236: 24(float) FNegate 235 + 237: 24(float) Load 107(c) + 238: 76(fvec4) CompositeConstruct 236 129 237 129 + 239: 231(ptr) AccessChain 223(gRotMat) 139 + Store 239 238 + 241: 231(ptr) AccessChain 223(gRotMat) 101 Store 241 240 - 243: 233(ptr) AccessChain 226(gRotMat) 99 - Store 243 242 - 251: 27(fvec3) Load 248(inPos) - 252: 118 Load 200(rotMat) - 253: 27(fvec3) VectorTimesMatrix 251 252 - 254: 24(float) CompositeExtract 253 0 - 255: 24(float) CompositeExtract 253 1 - 256: 24(float) CompositeExtract 253 2 - 257: 74(fvec4) CompositeConstruct 254 255 256 139 - Store 244(locPos) 257 - 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 245 257 106 - 263: 74(fvec4) Load 244(locPos) - 264: 27(fvec3) VectorShuffle 263 263 0 1 2 - 268: 24(float) Load 265(instanceScale) - 269: 27(fvec3) VectorTimesScalar 264 268 - 273: 27(fvec3) Load 270(instancePos) - 274: 27(fvec3) FAdd 269 273 - 275: 24(float) CompositeExtract 274 0 - 276: 24(float) CompositeExtract 274 1 - 277: 24(float) CompositeExtract 274 2 - 278: 74(fvec4) CompositeConstruct 275 276 277 139 - Store 259(pos) 278 - 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 278 106 - 298: 297(ptr) AccessChain 96(ubo) 125 - 299: 76 Load 298 - 300: 297(ptr) AccessChain 96(ubo) 132 - 301: 76 Load 300 - 302: 76 MatrixTimesMatrix 299 301 - 303: 76 Load 226(gRotMat) - 304: 76 MatrixTimesMatrix 302 303 - 305: 74(fvec4) Load 259(pos) - 306: 74(fvec4) MatrixTimesVector 304 305 - 308: 307(ptr) AccessChain 295 125 - Store 308 306 - 313: 297(ptr) AccessChain 96(ubo) 132 - 314: 76 Load 313 - 315: 76 Load 226(gRotMat) - 316: 76 MatrixTimesMatrix 314 315 - 317: 74(fvec4) CompositeExtract 316 0 + 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 243 242(locPos) 69 + 250: 27(fvec3) Load 247(inPos) + 251: 118 Load 199(rotMat) + 252: 27(fvec3) VectorTimesMatrix 250 251 + 253: 24(float) CompositeExtract 252 0 + 254: 24(float) CompositeExtract 252 1 + 255: 24(float) CompositeExtract 252 2 + 256: 76(fvec4) CompositeConstruct 253 254 255 140 + Store 242(locPos) 256 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 258 257(pos) 69 + 262: 76(fvec4) Load 242(locPos) + 263: 27(fvec3) VectorShuffle 262 262 0 1 2 + 267: 24(float) Load 264(instanceScale) + 268: 27(fvec3) VectorTimesScalar 263 267 + 272: 27(fvec3) Load 269(instancePos) + 273: 27(fvec3) FAdd 268 272 + 274: 24(float) CompositeExtract 273 0 + 275: 24(float) CompositeExtract 273 1 + 276: 24(float) CompositeExtract 273 2 + 277: 76(fvec4) CompositeConstruct 274 275 276 140 + Store 257(pos) 277 + 296: 295(ptr) AccessChain 98(ubo) 126 + 297: 78 Load 296 + 298: 295(ptr) AccessChain 98(ubo) 133 + 299: 78 Load 298 + 300: 78 MatrixTimesMatrix 297 299 + 301: 78 Load 223(gRotMat) + 302: 78 MatrixTimesMatrix 300 301 + 303: 76(fvec4) Load 257(pos) + 304: 76(fvec4) MatrixTimesVector 302 303 + 306: 305(ptr) AccessChain 293 126 + Store 306 304 + 311: 295(ptr) AccessChain 98(ubo) 133 + 312: 78 Load 311 + 313: 78 Load 223(gRotMat) + 314: 78 MatrixTimesMatrix 312 313 + 315: 76(fvec4) CompositeExtract 314 0 + 316: 27(fvec3) VectorShuffle 315 315 0 1 2 + 317: 76(fvec4) CompositeExtract 314 1 318: 27(fvec3) VectorShuffle 317 317 0 1 2 - 319: 74(fvec4) CompositeExtract 316 1 + 319: 76(fvec4) CompositeExtract 314 2 320: 27(fvec3) VectorShuffle 319 319 0 1 2 - 321: 74(fvec4) CompositeExtract 316 2 - 322: 27(fvec3) VectorShuffle 321 321 0 1 2 - 323: 118 CompositeConstruct 318 320 322 - 324: 118 Load 200(rotMat) - 325: 118 ExtInst 2(GLSL.std.450) 34(MatrixInverse) 324 - 326: 118 MatrixTimesMatrix 323 325 - 330: 27(fvec3) Load 327(inNormal) - 331: 27(fvec3) MatrixTimesVector 326 330 - Store 309(outNormal) 331 - 332: 297(ptr) AccessChain 96(ubo) 132 - 333: 76 Load 332 - 334: 27(fvec3) Load 248(inPos) - 335: 27(fvec3) Load 270(instancePos) - 336: 27(fvec3) FAdd 334 335 - 337: 24(float) CompositeExtract 336 0 - 338: 24(float) CompositeExtract 336 1 - 339: 24(float) CompositeExtract 336 2 - 340: 74(fvec4) CompositeConstruct 337 338 339 139 - 341: 74(fvec4) MatrixTimesVector 333 340 - Store 259(pos) 341 - 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 341 106 - 347: 297(ptr) AccessChain 96(ubo) 132 - 348: 76 Load 347 - 349: 74(fvec4) CompositeExtract 348 0 + 321: 118 CompositeConstruct 316 318 320 + 322: 118 Load 199(rotMat) + 323: 118 ExtInst 2(GLSL.std.450) 34(MatrixInverse) 322 + 324: 118 MatrixTimesMatrix 321 323 + 328: 27(fvec3) Load 325(inNormal) + 329: 27(fvec3) MatrixTimesVector 324 328 + Store 307(outNormal) 329 + 330: 295(ptr) AccessChain 98(ubo) 133 + 331: 78 Load 330 + 332: 27(fvec3) Load 247(inPos) + 333: 27(fvec3) Load 269(instancePos) + 334: 27(fvec3) FAdd 332 333 + 335: 24(float) CompositeExtract 334 0 + 336: 24(float) CompositeExtract 334 1 + 337: 24(float) CompositeExtract 334 2 + 338: 76(fvec4) CompositeConstruct 335 336 337 140 + 339: 76(fvec4) MatrixTimesVector 331 338 + Store 257(pos) 339 + 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 341 340(lPos) 69 + 345: 295(ptr) AccessChain 98(ubo) 133 + 346: 78 Load 345 + 347: 76(fvec4) CompositeExtract 346 0 + 348: 27(fvec3) VectorShuffle 347 347 0 1 2 + 349: 76(fvec4) CompositeExtract 346 1 350: 27(fvec3) VectorShuffle 349 349 0 1 2 - 351: 74(fvec4) CompositeExtract 348 1 + 351: 76(fvec4) CompositeExtract 346 2 352: 27(fvec3) VectorShuffle 351 351 0 1 2 - 353: 74(fvec4) CompositeExtract 348 2 - 354: 27(fvec3) VectorShuffle 353 353 0 1 2 - 355: 118 CompositeConstruct 350 352 354 - 357: 356(ptr) AccessChain 96(ubo) 138 - 358: 74(fvec4) Load 357 - 359: 27(fvec3) VectorShuffle 358 358 0 1 2 - 360: 27(fvec3) MatrixTimesVector 355 359 - Store 343(lPos) 360 - 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 344 360 106 - 366: 27(fvec3) Load 343(lPos) - 367: 74(fvec4) Load 259(pos) - 368: 27(fvec3) VectorShuffle 367 367 0 1 2 - 369: 27(fvec3) FSub 366 368 - Store 362(outLightVec) 369 - 374: 74(fvec4) Load 259(pos) - 375: 27(fvec3) VectorShuffle 374 374 0 1 2 - 376: 27(fvec3) FNegate 375 - Store 370(outViewVec) 376 + 353: 118 CompositeConstruct 348 350 352 + 355: 354(ptr) AccessChain 98(ubo) 139 + 356: 76(fvec4) Load 355 + 357: 27(fvec3) VectorShuffle 356 356 0 1 2 + 358: 27(fvec3) MatrixTimesVector 353 357 + Store 340(lPos) 358 + 363: 27(fvec3) Load 340(lPos) + 364: 76(fvec4) Load 257(pos) + 365: 27(fvec3) VectorShuffle 364 364 0 1 2 + 366: 27(fvec3) FSub 363 365 + Store 359(outLightVec) 366 + 371: 76(fvec4) Load 257(pos) + 372: 27(fvec3) VectorShuffle 371 371 0 1 2 + 373: 27(fvec3) FNegate 372 + Store 367(outViewVec) 373 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index 7315b87041..abad608ccc 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -2,14 +2,14 @@ spv.debuginfo.hlsl.comp Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 855 +// Id's are bound by 833 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 5 "main" 850 + EntryPoint GLCompute 5 "main" 828 ExecutionMode 5 LocalSize 10 10 1 9: String "float" 12: String "uint" @@ -39,15 +39,15 @@ Validation failed 222: String "force" 234: String "pos" 243: String "vel" - 501: String "f" - 545: String "sphereDist" - 589: String "calculateNormals" - 593: String "PushConstants" - 597: String "pushConstants" - 600: String "$Global" - 630: String "a" - 642: String "b" - 658: String "c" + 492: String "f" + 536: String "sphereDist" + 580: String "calculateNormals" + 584: String "PushConstants" + 588: String "pushConstants" + 591: String "$Global" + 621: String "a" + 633: String "b" + 649: String "c" Name 5 "main" Name 26 "springForce(vf3;vf3;f1;" Name 23 "p0" @@ -90,41 +90,41 @@ Validation failed Name 258 "param" Name 262 "param" Name 264 "param" - Name 283 "param" - Name 287 "param" - Name 289 "param" - Name 312 "param" + Name 282 "param" + Name 286 "param" + Name 288 "param" + Name 310 "param" + Name 314 "param" Name 316 "param" - Name 318 "param" - Name 336 "param" - Name 340 "param" - Name 342 "param" + Name 333 "param" + Name 337 "param" + Name 339 "param" + Name 368 "param" Name 372 "param" - Name 376 "param" - Name 378 "param" - Name 403 "param" - Name 407 "param" - Name 409 "param" + Name 374 "param" + Name 398 "param" + Name 402 "param" + Name 404 "param" + Name 436 "param" + Name 440 "param" Name 442 "param" - Name 446 "param" - Name 448 "param" - Name 477 "param" - Name 481 "param" - Name 483 "param" - Name 499 "f" - Name 543 "sphereDist" - Name 587 "PushConstants" - MemberName 587(PushConstants) 0 "calculateNormals" - Name 595 "$Global" - MemberName 595($Global) 0 "pushConstants" - Name 602 "" - Name 611 "normal" - Name 628 "a" - Name 640 "b" - Name 656 "c" - Name 848 "id" - Name 850 "id" - Name 852 "param" + Name 470 "param" + Name 474 "param" + Name 476 "param" + Name 490 "f" + Name 534 "sphereDist" + Name 578 "PushConstants" + MemberName 578(PushConstants) 0 "calculateNormals" + Name 586 "$Global" + MemberName 586($Global) 0 "pushConstants" + Name 593 "" + Name 602 "normal" + Name 619 "a" + Name 631 "b" + Name 647 "c" + Name 826 "id" + Name 828 "id" + Name 830 "param" MemberDecorate 82(UBO) 0 Offset 0 MemberDecorate 82(UBO) 1 Offset 4 MemberDecorate 82(UBO) 2 Offset 8 @@ -156,12 +156,12 @@ Validation failed Decorate 199(particleOut) BufferBlock Decorate 206(particleOut) DescriptorSet 0 Decorate 206(particleOut) Binding 1 - MemberDecorate 587(PushConstants) 0 Offset 0 - MemberDecorate 595($Global) 0 Offset 0 - Decorate 595($Global) Block - Decorate 602 DescriptorSet 0 - Decorate 602 Binding 3 - Decorate 850(id) BuiltIn GlobalInvocationId + MemberDecorate 578(PushConstants) 0 Offset 0 + MemberDecorate 586($Global) 0 Offset 0 + Decorate 586($Global) Block + Decorate 593 DescriptorSet 0 + Decorate 593 Binding 3 + Decorate 828(id) BuiltIn GlobalInvocationId 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 @@ -238,8 +238,8 @@ Validation failed 130: TypePointer Function 10(int) 134: 10(int) Constant 83 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 133 11 29 134 15 57 33 - 137: 77(int) Constant 10 - 138: TypePointer Uniform 77(int) + 138: 77(int) Constant 10 + 139: TypePointer Uniform 77(int) 154: TypeBool 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 161(Particle): TypeStruct 75(fvec4) 75(fvec4) 75(fvec4) 75(fvec4) 7(float) @@ -283,80 +283,80 @@ Validation failed 217: 75(fvec4) ConstantComposite 216 216 216 216 223: 10(int) Constant 95 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 222 18 29 223 15 57 33 - 224: 77(int) Constant 9 + 225: 77(int) Constant 9 235: 10(int) Constant 97 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 18 29 235 15 57 33 244: 10(int) Constant 98 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 243 18 29 244 15 57 33 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 311: 77(int) Constant 5 - 327: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 351: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 371: 77(int) Constant 6 - 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 430: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 432: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 461: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 465: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 467: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 490: 77(int) Constant 3 - 502: 10(int) Constant 137 - 500: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 501 18 29 502 15 57 33 - 516: 7(float) Constant 1056964608 - 546: 10(int) Constant 142 - 544: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 545 18 29 546 15 57 33 - 551: 77(int) Constant 8 - 559: 77(int) Constant 7 - 562: 7(float) Constant 1008981770 - 564: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 -587(PushConstants): TypeStruct 10(int) - 590: 10(int) Constant 67 - 591: 10(int) Constant 23 - 588: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 589 11 29 590 591 15 15 16 - 594: 10(int) Constant 151 - 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 593 32 29 594 15 31 593 15 16 588 - 595($Global): TypeStruct 587(PushConstants) - 598: 10(int) Constant 71 - 596: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 597 592 29 598 165 15 15 16 - 599: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 600 32 29 594 15 31 600 15 16 596 - 601: TypePointer Uniform 595($Global) - 602: 601(ptr) Variable Uniform - 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 599 29 594 15 31 30 602 115 - 604: TypePointer Uniform 10(int) - 607: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 613: 10(int) Constant 152 - 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 163 18 29 613 15 57 33 - 614: 17(fvec3) ConstantComposite 216 216 216 - 618: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 631: 10(int) Constant 156 - 629: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 630 18 29 631 15 57 33 - 643: 10(int) Constant 157 - 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 642 18 29 643 15 57 33 - 659: 10(int) Constant 158 - 657: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 658 18 29 659 15 57 33 - 687: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 738: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 744: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 795: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 849: TypePointer Input 49(ivec3) - 850(id): 849(ptr) Variable Input + 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 309: 77(int) Constant 5 + 324: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 367: 77(int) Constant 6 + 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 458: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 482: 77(int) Constant 3 + 493: 10(int) Constant 137 + 491: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 492 18 29 493 15 57 33 + 507: 7(float) Constant 1056964608 + 537: 10(int) Constant 142 + 535: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 536 18 29 537 15 57 33 + 543: 77(int) Constant 8 + 550: 77(int) Constant 7 + 553: 7(float) Constant 1008981770 + 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 +578(PushConstants): TypeStruct 10(int) + 581: 10(int) Constant 67 + 582: 10(int) Constant 23 + 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 580 11 29 581 582 15 15 16 + 585: 10(int) Constant 151 + 583: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 584 32 29 585 15 31 584 15 16 579 + 586($Global): TypeStruct 578(PushConstants) + 589: 10(int) Constant 71 + 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 588 583 29 589 165 15 15 16 + 590: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 591 32 29 585 15 31 591 15 16 587 + 592: TypePointer Uniform 586($Global) + 593: 592(ptr) Variable Uniform + 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 590 29 585 15 31 30 593 115 + 595: TypePointer Uniform 10(int) + 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 604: 10(int) Constant 152 + 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 163 18 29 604 15 57 33 + 606: 17(fvec3) ConstantComposite 216 216 216 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 615: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 622: 10(int) Constant 156 + 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 621 18 29 622 15 57 33 + 634: 10(int) Constant 157 + 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 633 18 29 634 15 57 33 + 650: 10(int) Constant 158 + 648: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 649 18 29 650 15 57 33 + 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 724: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 730: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 777: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 827: TypePointer Input 49(ivec3) + 828(id): 827(ptr) Variable Input 5(main): 3 Function None 4 6: Label - 848(id): 51(ptr) Variable Function - 852(param): 51(ptr) Variable Function - 851: 49(ivec3) Load 850(id) - Store 848(id) 851 - 853: 49(ivec3) Load 848(id) - Store 852(param) 853 - 854: 3 FunctionCall 55(@main(vu3;) 852(param) + 826(id): 51(ptr) Variable Function + 830(param): 51(ptr) Variable Function + 829: 49(ivec3) Load 828(id) + Store 826(id) 829 + 831: 49(ivec3) Load 826(id) + Store 830(param) 831 + 832: 3 FunctionCall 55(@main(vu3;) 830(param) Return FunctionEnd 26(springForce(vf3;vf3;f1;): 17(fvec3) Function None 21 @@ -371,11 +371,11 @@ Validation failed 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 42 24(p1) 41 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 25(restDist) 41 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 28 26(springForce(vf3;vf3;f1;) - 69: 17(fvec3) Load 23(p0) - 70: 17(fvec3) Load 24(p1) - 71: 17(fvec3) FSub 69 70 - Store 65(dist) 71 - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 66 71 41 + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 66 65(dist) 41 + 70: 17(fvec3) Load 23(p0) + 71: 17(fvec3) Load 24(p1) + 72: 17(fvec3) FSub 70 71 + Store 65(dist) 72 73: 17(fvec3) Load 65(dist) 74: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 73 119: 118(ptr) AccessChain 113 116 117 @@ -398,52 +398,52 @@ Validation failed 258(param): 19(ptr) Variable Function 262(param): 19(ptr) Variable Function 264(param): 20(ptr) Variable Function - 283(param): 19(ptr) Variable Function - 287(param): 19(ptr) Variable Function - 289(param): 20(ptr) Variable Function - 312(param): 19(ptr) Variable Function - 316(param): 19(ptr) Variable Function - 318(param): 20(ptr) Variable Function - 336(param): 19(ptr) Variable Function - 340(param): 19(ptr) Variable Function - 342(param): 20(ptr) Variable Function + 282(param): 19(ptr) Variable Function + 286(param): 19(ptr) Variable Function + 288(param): 20(ptr) Variable Function + 310(param): 19(ptr) Variable Function + 314(param): 19(ptr) Variable Function + 316(param): 20(ptr) Variable Function + 333(param): 19(ptr) Variable Function + 337(param): 19(ptr) Variable Function + 339(param): 20(ptr) Variable Function + 368(param): 19(ptr) Variable Function 372(param): 19(ptr) Variable Function - 376(param): 19(ptr) Variable Function - 378(param): 20(ptr) Variable Function - 403(param): 19(ptr) Variable Function - 407(param): 19(ptr) Variable Function - 409(param): 20(ptr) Variable Function - 442(param): 19(ptr) Variable Function - 446(param): 19(ptr) Variable Function - 448(param): 20(ptr) Variable Function - 477(param): 19(ptr) Variable Function - 481(param): 19(ptr) Variable Function - 483(param): 20(ptr) Variable Function - 499(f): 19(ptr) Variable Function - 543(sphereDist): 19(ptr) Variable Function - 611(normal): 19(ptr) Variable Function - 628(a): 19(ptr) Variable Function - 640(b): 19(ptr) Variable Function - 656(c): 19(ptr) Variable Function + 374(param): 20(ptr) Variable Function + 398(param): 19(ptr) Variable Function + 402(param): 19(ptr) Variable Function + 404(param): 20(ptr) Variable Function + 436(param): 19(ptr) Variable Function + 440(param): 19(ptr) Variable Function + 442(param): 20(ptr) Variable Function + 470(param): 19(ptr) Variable Function + 474(param): 19(ptr) Variable Function + 476(param): 20(ptr) Variable Function + 490(f): 19(ptr) Variable Function + 534(sphereDist): 19(ptr) Variable Function + 602(normal): 19(ptr) Variable Function + 619(a): 19(ptr) Variable Function + 631(b): 19(ptr) Variable Function + 647(c): 19(ptr) Variable Function 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 57 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 61 54(id) 41 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 57 55(@main(vu3;) - 135: 130(ptr) AccessChain 54(id) 32 - 136: 10(int) Load 135 - 139: 138(ptr) AccessChain 113 116 137 15 - 140: 77(int) Load 139 - 141: 10(int) Bitcast 140 - 142: 10(int) IMul 136 141 - 143: 130(ptr) AccessChain 54(id) 15 - 144: 10(int) Load 143 - 145: 10(int) IAdd 142 144 - Store 131(index) 145 - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 132 145 41 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 132 131(index) 41 + 136: 130(ptr) AccessChain 54(id) 32 + 137: 10(int) Load 136 + 140: 139(ptr) AccessChain 113 116 138 15 + 141: 77(int) Load 140 + 142: 10(int) Bitcast 141 + 143: 10(int) IMul 137 142 + 144: 130(ptr) AccessChain 54(id) 15 + 145: 10(int) Load 144 + 146: 10(int) IAdd 143 145 + Store 131(index) 146 147: 10(int) Load 131(index) - 148: 138(ptr) AccessChain 113 116 137 15 + 148: 139(ptr) AccessChain 113 116 138 15 149: 77(int) Load 148 - 150: 138(ptr) AccessChain 113 116 137 32 + 150: 139(ptr) AccessChain 113 116 138 32 151: 77(int) Load 150 152: 77(int) IMul 149 151 153: 10(int) Bitcast 152 @@ -471,26 +471,26 @@ Validation failed Store 218 217 Return 196: Label - 225: 210(ptr) AccessChain 113 116 224 - 226: 75(fvec4) Load 225 - 227: 17(fvec3) VectorShuffle 226 226 0 1 2 - 228: 118(ptr) AccessChain 113 116 215 - 229: 7(float) Load 228 - 230: 17(fvec3) VectorTimesScalar 227 229 - Store 220(force) 230 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 230 41 - 236: 10(int) Load 131(index) - 237: 210(ptr) AccessChain 186(particleIn) 116 236 116 - 238: 75(fvec4) Load 237 - 239: 17(fvec3) VectorShuffle 238 238 0 1 2 - Store 232(pos) 239 - 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 233 239 41 - 245: 10(int) Load 131(index) - 246: 210(ptr) AccessChain 186(particleIn) 116 245 215 - 247: 75(fvec4) Load 246 - 248: 17(fvec3) VectorShuffle 247 247 0 1 2 - Store 241(vel) 248 - 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 242 248 41 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 221 220(force) 41 + 226: 210(ptr) AccessChain 113 116 225 + 227: 75(fvec4) Load 226 + 228: 17(fvec3) VectorShuffle 227 227 0 1 2 + 229: 118(ptr) AccessChain 113 116 215 + 230: 7(float) Load 229 + 231: 17(fvec3) VectorTimesScalar 228 230 + Store 220(force) 231 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(pos) 41 + 237: 10(int) Load 131(index) + 238: 210(ptr) AccessChain 186(particleIn) 116 237 116 + 239: 75(fvec4) Load 238 + 240: 17(fvec3) VectorShuffle 239 239 0 1 2 + Store 232(pos) 240 + 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 242 241(vel) 41 + 246: 10(int) Load 131(index) + 247: 210(ptr) AccessChain 186(particleIn) 116 246 215 + 248: 75(fvec4) Load 247 + 249: 17(fvec3) VectorShuffle 248 248 0 1 2 + Store 241(vel) 249 250: 130(ptr) AccessChain 54(id) 15 251: 10(int) Load 250 253: 154(bool) UGreaterThan 251 15 @@ -512,592 +512,570 @@ Validation failed 268: 17(fvec3) Load 220(force) 269: 17(fvec3) FAdd 268 267 Store 220(force) 269 - 270: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 269 41 Branch 255 255: Label - 271: 130(ptr) AccessChain 54(id) 15 - 272: 10(int) Load 271 - 273: 138(ptr) AccessChain 113 116 137 15 - 274: 77(int) Load 273 - 275: 77(int) ISub 274 215 - 276: 10(int) Bitcast 275 - 278: 154(bool) ULessThan 272 276 - SelectionMerge 280 None - BranchConditional 278 279 280 - 279: Label - 281: 10(int) Load 131(index) - 282: 10(int) IAdd 281 32 - 284: 210(ptr) AccessChain 186(particleIn) 116 282 116 - 285: 75(fvec4) Load 284 - 286: 17(fvec3) VectorShuffle 285 285 0 1 2 - Store 283(param) 286 - 288: 17(fvec3) Load 232(pos) - Store 287(param) 288 - 290: 118(ptr) AccessChain 113 116 189 - 291: 7(float) Load 290 - Store 289(param) 291 - 292: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 283(param) 287(param) 289(param) - 293: 17(fvec3) Load 220(force) - 294: 17(fvec3) FAdd 293 292 - Store 220(force) 294 - 295: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 294 41 - Branch 280 - 280: Label - 296: 130(ptr) AccessChain 54(id) 32 - 297: 10(int) Load 296 - 298: 138(ptr) AccessChain 113 116 137 32 - 299: 77(int) Load 298 - 300: 77(int) ISub 299 215 - 301: 10(int) Bitcast 300 - 303: 154(bool) ULessThan 297 301 - SelectionMerge 305 None - BranchConditional 303 304 305 - 304: Label - 306: 10(int) Load 131(index) - 307: 138(ptr) AccessChain 113 116 137 15 - 308: 77(int) Load 307 - 309: 10(int) Bitcast 308 - 310: 10(int) IAdd 306 309 - 313: 210(ptr) AccessChain 186(particleIn) 116 310 116 - 314: 75(fvec4) Load 313 - 315: 17(fvec3) VectorShuffle 314 314 0 1 2 - Store 312(param) 315 - 317: 17(fvec3) Load 232(pos) - Store 316(param) 317 - 319: 118(ptr) AccessChain 113 116 311 - 320: 7(float) Load 319 - Store 318(param) 320 - 321: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 312(param) 316(param) 318(param) - 322: 17(fvec3) Load 220(force) - 323: 17(fvec3) FAdd 322 321 - Store 220(force) 323 - 324: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 323 41 - Branch 305 - 305: Label - 325: 130(ptr) AccessChain 54(id) 32 - 326: 10(int) Load 325 - 328: 154(bool) UGreaterThan 326 15 - SelectionMerge 330 None - BranchConditional 328 329 330 - 329: Label - 331: 10(int) Load 131(index) - 332: 138(ptr) AccessChain 113 116 137 15 - 333: 77(int) Load 332 - 334: 10(int) Bitcast 333 - 335: 10(int) ISub 331 334 - 337: 210(ptr) AccessChain 186(particleIn) 116 335 116 - 338: 75(fvec4) Load 337 - 339: 17(fvec3) VectorShuffle 338 338 0 1 2 - Store 336(param) 339 - 341: 17(fvec3) Load 232(pos) - Store 340(param) 341 - 343: 118(ptr) AccessChain 113 116 311 - 344: 7(float) Load 343 - Store 342(param) 344 - 345: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 336(param) 340(param) 342(param) - 346: 17(fvec3) Load 220(force) - 347: 17(fvec3) FAdd 346 345 - Store 220(force) 347 - 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 347 41 - Branch 330 - 330: Label - 349: 130(ptr) AccessChain 54(id) 15 + 270: 130(ptr) AccessChain 54(id) 15 + 271: 10(int) Load 270 + 272: 139(ptr) AccessChain 113 116 138 15 + 273: 77(int) Load 272 + 274: 77(int) ISub 273 215 + 275: 10(int) Bitcast 274 + 277: 154(bool) ULessThan 271 275 + SelectionMerge 279 None + BranchConditional 277 278 279 + 278: Label + 280: 10(int) Load 131(index) + 281: 10(int) IAdd 280 32 + 283: 210(ptr) AccessChain 186(particleIn) 116 281 116 + 284: 75(fvec4) Load 283 + 285: 17(fvec3) VectorShuffle 284 284 0 1 2 + Store 282(param) 285 + 287: 17(fvec3) Load 232(pos) + Store 286(param) 287 + 289: 118(ptr) AccessChain 113 116 189 + 290: 7(float) Load 289 + Store 288(param) 290 + 291: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 282(param) 286(param) 288(param) + 292: 17(fvec3) Load 220(force) + 293: 17(fvec3) FAdd 292 291 + Store 220(force) 293 + Branch 279 + 279: Label + 294: 130(ptr) AccessChain 54(id) 32 + 295: 10(int) Load 294 + 296: 139(ptr) AccessChain 113 116 138 32 + 297: 77(int) Load 296 + 298: 77(int) ISub 297 215 + 299: 10(int) Bitcast 298 + 301: 154(bool) ULessThan 295 299 + SelectionMerge 303 None + BranchConditional 301 302 303 + 302: Label + 304: 10(int) Load 131(index) + 305: 139(ptr) AccessChain 113 116 138 15 + 306: 77(int) Load 305 + 307: 10(int) Bitcast 306 + 308: 10(int) IAdd 304 307 + 311: 210(ptr) AccessChain 186(particleIn) 116 308 116 + 312: 75(fvec4) Load 311 + 313: 17(fvec3) VectorShuffle 312 312 0 1 2 + Store 310(param) 313 + 315: 17(fvec3) Load 232(pos) + Store 314(param) 315 + 317: 118(ptr) AccessChain 113 116 309 + 318: 7(float) Load 317 + Store 316(param) 318 + 319: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 310(param) 314(param) 316(param) + 320: 17(fvec3) Load 220(force) + 321: 17(fvec3) FAdd 320 319 + Store 220(force) 321 + Branch 303 + 303: Label + 322: 130(ptr) AccessChain 54(id) 32 + 323: 10(int) Load 322 + 325: 154(bool) UGreaterThan 323 15 + SelectionMerge 327 None + BranchConditional 325 326 327 + 326: Label + 328: 10(int) Load 131(index) + 329: 139(ptr) AccessChain 113 116 138 15 + 330: 77(int) Load 329 + 331: 10(int) Bitcast 330 + 332: 10(int) ISub 328 331 + 334: 210(ptr) AccessChain 186(particleIn) 116 332 116 + 335: 75(fvec4) Load 334 + 336: 17(fvec3) VectorShuffle 335 335 0 1 2 + Store 333(param) 336 + 338: 17(fvec3) Load 232(pos) + Store 337(param) 338 + 340: 118(ptr) AccessChain 113 116 309 + 341: 7(float) Load 340 + Store 339(param) 341 + 342: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 333(param) 337(param) 339(param) + 343: 17(fvec3) Load 220(force) + 344: 17(fvec3) FAdd 343 342 + Store 220(force) 344 + Branch 327 + 327: Label + 345: 130(ptr) AccessChain 54(id) 15 + 346: 10(int) Load 345 + 348: 154(bool) UGreaterThan 346 15 + 349: 130(ptr) AccessChain 54(id) 32 350: 10(int) Load 349 - 352: 154(bool) UGreaterThan 350 15 - 353: 130(ptr) AccessChain 54(id) 32 - 354: 10(int) Load 353 - 355: 138(ptr) AccessChain 113 116 137 32 - 356: 77(int) Load 355 - 357: 77(int) ISub 356 215 - 358: 10(int) Bitcast 357 - 360: 154(bool) ULessThan 354 358 - 362: 154(bool) LogicalAnd 352 360 - SelectionMerge 364 None - BranchConditional 362 363 364 - 363: Label - 365: 10(int) Load 131(index) - 366: 138(ptr) AccessChain 113 116 137 15 - 367: 77(int) Load 366 - 368: 10(int) Bitcast 367 - 369: 10(int) IAdd 365 368 - 370: 10(int) ISub 369 32 - 373: 210(ptr) AccessChain 186(particleIn) 116 370 116 - 374: 75(fvec4) Load 373 - 375: 17(fvec3) VectorShuffle 374 374 0 1 2 - Store 372(param) 375 - 377: 17(fvec3) Load 232(pos) - Store 376(param) 377 - 379: 118(ptr) AccessChain 113 116 371 - 380: 7(float) Load 379 - Store 378(param) 380 - 381: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 372(param) 376(param) 378(param) - 382: 17(fvec3) Load 220(force) - 383: 17(fvec3) FAdd 382 381 - Store 220(force) 383 - 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 383 41 - Branch 364 - 364: Label - 385: 130(ptr) AccessChain 54(id) 15 - 386: 10(int) Load 385 - 388: 154(bool) UGreaterThan 386 15 - 389: 130(ptr) AccessChain 54(id) 32 - 390: 10(int) Load 389 - 392: 154(bool) UGreaterThan 390 15 - 394: 154(bool) LogicalAnd 388 392 - SelectionMerge 396 None - BranchConditional 394 395 396 - 395: Label - 397: 10(int) Load 131(index) - 398: 138(ptr) AccessChain 113 116 137 15 - 399: 77(int) Load 398 - 400: 10(int) Bitcast 399 - 401: 10(int) ISub 397 400 - 402: 10(int) ISub 401 32 - 404: 210(ptr) AccessChain 186(particleIn) 116 402 116 - 405: 75(fvec4) Load 404 - 406: 17(fvec3) VectorShuffle 405 405 0 1 2 - Store 403(param) 406 - 408: 17(fvec3) Load 232(pos) - Store 407(param) 408 - 410: 118(ptr) AccessChain 113 116 371 - 411: 7(float) Load 410 - Store 409(param) 411 - 412: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 403(param) 407(param) 409(param) - 413: 17(fvec3) Load 220(force) - 414: 17(fvec3) FAdd 413 412 - Store 220(force) 414 - 415: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 414 41 - Branch 396 - 396: Label - 416: 130(ptr) AccessChain 54(id) 15 - 417: 10(int) Load 416 - 418: 138(ptr) AccessChain 113 116 137 15 - 419: 77(int) Load 418 - 420: 77(int) ISub 419 215 - 421: 10(int) Bitcast 420 - 423: 154(bool) ULessThan 417 421 - 424: 130(ptr) AccessChain 54(id) 32 - 425: 10(int) Load 424 - 426: 138(ptr) AccessChain 113 116 137 32 - 427: 77(int) Load 426 - 428: 77(int) ISub 427 215 - 429: 10(int) Bitcast 428 - 431: 154(bool) ULessThan 425 429 - 433: 154(bool) LogicalAnd 423 431 - SelectionMerge 435 None - BranchConditional 433 434 435 - 434: Label - 436: 10(int) Load 131(index) - 437: 138(ptr) AccessChain 113 116 137 15 - 438: 77(int) Load 437 - 439: 10(int) Bitcast 438 - 440: 10(int) IAdd 436 439 - 441: 10(int) IAdd 440 32 - 443: 210(ptr) AccessChain 186(particleIn) 116 441 116 - 444: 75(fvec4) Load 443 - 445: 17(fvec3) VectorShuffle 444 444 0 1 2 - Store 442(param) 445 - 447: 17(fvec3) Load 232(pos) - Store 446(param) 447 - 449: 118(ptr) AccessChain 113 116 371 - 450: 7(float) Load 449 - Store 448(param) 450 - 451: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 442(param) 446(param) 448(param) - 452: 17(fvec3) Load 220(force) - 453: 17(fvec3) FAdd 452 451 - Store 220(force) 453 - 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 453 41 - Branch 435 - 435: Label - 455: 130(ptr) AccessChain 54(id) 15 - 456: 10(int) Load 455 - 457: 138(ptr) AccessChain 113 116 137 15 - 458: 77(int) Load 457 - 459: 77(int) ISub 458 215 - 460: 10(int) Bitcast 459 - 462: 154(bool) ULessThan 456 460 - 463: 130(ptr) AccessChain 54(id) 32 - 464: 10(int) Load 463 - 466: 154(bool) UGreaterThan 464 15 - 468: 154(bool) LogicalAnd 462 466 - SelectionMerge 470 None - BranchConditional 468 469 470 - 469: Label - 471: 10(int) Load 131(index) - 472: 138(ptr) AccessChain 113 116 137 15 - 473: 77(int) Load 472 - 474: 10(int) Bitcast 473 - 475: 10(int) ISub 471 474 - 476: 10(int) IAdd 475 32 - 478: 210(ptr) AccessChain 186(particleIn) 116 476 116 - 479: 75(fvec4) Load 478 - 480: 17(fvec3) VectorShuffle 479 479 0 1 2 - Store 477(param) 480 - 482: 17(fvec3) Load 232(pos) - Store 481(param) 482 - 484: 118(ptr) AccessChain 113 116 371 - 485: 7(float) Load 484 - Store 483(param) 485 - 486: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 477(param) 481(param) 483(param) - 487: 17(fvec3) Load 220(force) - 488: 17(fvec3) FAdd 487 486 - Store 220(force) 488 - 489: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 488 41 - Branch 470 - 470: Label - 491: 118(ptr) AccessChain 113 116 490 - 492: 7(float) Load 491 - 493: 7(float) FNegate 492 - 494: 17(fvec3) Load 241(vel) - 495: 17(fvec3) VectorTimesScalar 494 493 - 496: 17(fvec3) Load 220(force) - 497: 17(fvec3) FAdd 496 495 - Store 220(force) 497 - 498: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 221 497 41 - 503: 17(fvec3) Load 220(force) - 504: 118(ptr) AccessChain 113 116 215 - 505: 7(float) Load 504 - 506: 7(float) FDiv 192 505 - 507: 17(fvec3) VectorTimesScalar 503 506 - Store 499(f) 507 - 508: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 500 507 41 - 509: 10(int) Load 131(index) - 510: 17(fvec3) Load 232(pos) - 511: 17(fvec3) Load 241(vel) - 512: 118(ptr) AccessChain 113 116 116 - 513: 7(float) Load 512 - 514: 17(fvec3) VectorTimesScalar 511 513 - 515: 17(fvec3) FAdd 510 514 - 517: 17(fvec3) Load 499(f) - 518: 17(fvec3) VectorTimesScalar 517 516 - 519: 118(ptr) AccessChain 113 116 116 - 520: 7(float) Load 519 - 521: 17(fvec3) VectorTimesScalar 518 520 - 522: 118(ptr) AccessChain 113 116 116 - 523: 7(float) Load 522 - 524: 17(fvec3) VectorTimesScalar 521 523 - 525: 17(fvec3) FAdd 515 524 - 526: 7(float) CompositeExtract 525 0 - 527: 7(float) CompositeExtract 525 1 - 528: 7(float) CompositeExtract 525 2 - 529: 75(fvec4) CompositeConstruct 526 527 528 192 - 530: 210(ptr) AccessChain 206(particleOut) 116 509 116 - Store 530 529 - 531: 10(int) Load 131(index) - 532: 17(fvec3) Load 241(vel) - 533: 17(fvec3) Load 499(f) - 534: 118(ptr) AccessChain 113 116 116 - 535: 7(float) Load 534 - 536: 17(fvec3) VectorTimesScalar 533 535 - 537: 17(fvec3) FAdd 532 536 - 538: 7(float) CompositeExtract 537 0 - 539: 7(float) CompositeExtract 537 1 - 540: 7(float) CompositeExtract 537 2 - 541: 75(fvec4) CompositeConstruct 538 539 540 216 - 542: 210(ptr) AccessChain 206(particleOut) 116 531 215 - Store 542 541 - 547: 10(int) Load 131(index) - 548: 210(ptr) AccessChain 206(particleOut) 116 547 116 - 549: 75(fvec4) Load 548 - 550: 17(fvec3) VectorShuffle 549 549 0 1 2 - 552: 210(ptr) AccessChain 113 116 551 - 553: 75(fvec4) Load 552 - 554: 17(fvec3) VectorShuffle 553 553 0 1 2 - 555: 17(fvec3) FSub 550 554 - Store 543(sphereDist) 555 - 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 544 555 41 - 557: 17(fvec3) Load 543(sphereDist) - 558: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 557 - 560: 118(ptr) AccessChain 113 116 559 - 561: 7(float) Load 560 - 563: 7(float) FAdd 561 562 - 565: 154(bool) FOrdLessThan 558 563 - SelectionMerge 567 None - BranchConditional 565 566 567 - 566: Label - 568: 10(int) Load 131(index) - 569: 210(ptr) AccessChain 113 116 551 - 570: 75(fvec4) Load 569 - 571: 17(fvec3) VectorShuffle 570 570 0 1 2 - 572: 17(fvec3) Load 543(sphereDist) - 573: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 572 - 574: 118(ptr) AccessChain 113 116 559 - 575: 7(float) Load 574 - 576: 7(float) FAdd 575 562 - 577: 17(fvec3) VectorTimesScalar 573 576 - 578: 17(fvec3) FAdd 571 577 - 579: 118(ptr) AccessChain 206(particleOut) 116 568 116 15 - 580: 7(float) CompositeExtract 578 0 - Store 579 580 - 581: 118(ptr) AccessChain 206(particleOut) 116 568 116 32 - 582: 7(float) CompositeExtract 578 1 - Store 581 582 - 583: 118(ptr) AccessChain 206(particleOut) 116 568 116 44 - 584: 7(float) CompositeExtract 578 2 - Store 583 584 - 585: 10(int) Load 131(index) - 586: 210(ptr) AccessChain 206(particleOut) 116 585 215 - Store 586 217 - Branch 567 - 567: Label - 605: 604(ptr) AccessChain 602 116 116 - 606: 10(int) Load 605 - 608: 154(bool) IEqual 606 32 - SelectionMerge 610 None - BranchConditional 608 609 610 - 609: Label - Store 611(normal) 614 - 615: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 614 41 - 616: 130(ptr) AccessChain 54(id) 32 - 617: 10(int) Load 616 - 619: 154(bool) UGreaterThan 617 15 - SelectionMerge 621 None - BranchConditional 619 620 621 - 620: Label - 622: 130(ptr) AccessChain 54(id) 15 - 623: 10(int) Load 622 - 625: 154(bool) UGreaterThan 623 15 - SelectionMerge 627 None - BranchConditional 625 626 627 - 626: Label - 632: 10(int) Load 131(index) - 633: 10(int) ISub 632 32 - 634: 210(ptr) AccessChain 186(particleIn) 116 633 116 - 635: 75(fvec4) Load 634 - 636: 17(fvec3) VectorShuffle 635 635 0 1 2 - 637: 17(fvec3) Load 232(pos) - 638: 17(fvec3) FSub 636 637 - Store 628(a) 638 - 639: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 638 41 - 644: 10(int) Load 131(index) - 645: 138(ptr) AccessChain 113 116 137 15 - 646: 77(int) Load 645 - 647: 10(int) Bitcast 646 - 648: 10(int) ISub 644 647 - 649: 10(int) ISub 648 32 - 650: 210(ptr) AccessChain 186(particleIn) 116 649 116 - 651: 75(fvec4) Load 650 - 652: 17(fvec3) VectorShuffle 651 651 0 1 2 - 653: 17(fvec3) Load 232(pos) - 654: 17(fvec3) FSub 652 653 - Store 640(b) 654 - 655: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 654 41 - 660: 10(int) Load 131(index) - 661: 138(ptr) AccessChain 113 116 137 15 - 662: 77(int) Load 661 - 663: 10(int) Bitcast 662 - 664: 10(int) ISub 660 663 - 665: 210(ptr) AccessChain 186(particleIn) 116 664 116 - 666: 75(fvec4) Load 665 - 667: 17(fvec3) VectorShuffle 666 666 0 1 2 - 668: 17(fvec3) Load 232(pos) - 669: 17(fvec3) FSub 667 668 - Store 656(c) 669 - 670: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 669 41 - 671: 17(fvec3) Load 628(a) - 672: 17(fvec3) Load 640(b) - 673: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 671 672 - 674: 17(fvec3) Load 640(b) - 675: 17(fvec3) Load 656(c) - 676: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 674 675 - 677: 17(fvec3) FAdd 673 676 - 678: 17(fvec3) Load 611(normal) - 679: 17(fvec3) FAdd 678 677 - Store 611(normal) 679 - 680: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 679 41 - Branch 627 - 627: Label - 681: 130(ptr) AccessChain 54(id) 15 - 682: 10(int) Load 681 - 683: 138(ptr) AccessChain 113 116 137 15 - 684: 77(int) Load 683 - 685: 77(int) ISub 684 215 - 686: 10(int) Bitcast 685 - 688: 154(bool) ULessThan 682 686 - SelectionMerge 690 None - BranchConditional 688 689 690 - 689: Label + 351: 139(ptr) AccessChain 113 116 138 32 + 352: 77(int) Load 351 + 353: 77(int) ISub 352 215 + 354: 10(int) Bitcast 353 + 356: 154(bool) ULessThan 350 354 + 358: 154(bool) LogicalAnd 348 356 + SelectionMerge 360 None + BranchConditional 358 359 360 + 359: Label + 361: 10(int) Load 131(index) + 362: 139(ptr) AccessChain 113 116 138 15 + 363: 77(int) Load 362 + 364: 10(int) Bitcast 363 + 365: 10(int) IAdd 361 364 + 366: 10(int) ISub 365 32 + 369: 210(ptr) AccessChain 186(particleIn) 116 366 116 + 370: 75(fvec4) Load 369 + 371: 17(fvec3) VectorShuffle 370 370 0 1 2 + Store 368(param) 371 + 373: 17(fvec3) Load 232(pos) + Store 372(param) 373 + 375: 118(ptr) AccessChain 113 116 367 + 376: 7(float) Load 375 + Store 374(param) 376 + 377: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 368(param) 372(param) 374(param) + 378: 17(fvec3) Load 220(force) + 379: 17(fvec3) FAdd 378 377 + Store 220(force) 379 + Branch 360 + 360: Label + 380: 130(ptr) AccessChain 54(id) 15 + 381: 10(int) Load 380 + 383: 154(bool) UGreaterThan 381 15 + 384: 130(ptr) AccessChain 54(id) 32 + 385: 10(int) Load 384 + 387: 154(bool) UGreaterThan 385 15 + 389: 154(bool) LogicalAnd 383 387 + SelectionMerge 391 None + BranchConditional 389 390 391 + 390: Label + 392: 10(int) Load 131(index) + 393: 139(ptr) AccessChain 113 116 138 15 + 394: 77(int) Load 393 + 395: 10(int) Bitcast 394 + 396: 10(int) ISub 392 395 + 397: 10(int) ISub 396 32 + 399: 210(ptr) AccessChain 186(particleIn) 116 397 116 + 400: 75(fvec4) Load 399 + 401: 17(fvec3) VectorShuffle 400 400 0 1 2 + Store 398(param) 401 + 403: 17(fvec3) Load 232(pos) + Store 402(param) 403 + 405: 118(ptr) AccessChain 113 116 367 + 406: 7(float) Load 405 + Store 404(param) 406 + 407: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 398(param) 402(param) 404(param) + 408: 17(fvec3) Load 220(force) + 409: 17(fvec3) FAdd 408 407 + Store 220(force) 409 + Branch 391 + 391: Label + 410: 130(ptr) AccessChain 54(id) 15 + 411: 10(int) Load 410 + 412: 139(ptr) AccessChain 113 116 138 15 + 413: 77(int) Load 412 + 414: 77(int) ISub 413 215 + 415: 10(int) Bitcast 414 + 417: 154(bool) ULessThan 411 415 + 418: 130(ptr) AccessChain 54(id) 32 + 419: 10(int) Load 418 + 420: 139(ptr) AccessChain 113 116 138 32 + 421: 77(int) Load 420 + 422: 77(int) ISub 421 215 + 423: 10(int) Bitcast 422 + 425: 154(bool) ULessThan 419 423 + 427: 154(bool) LogicalAnd 417 425 + SelectionMerge 429 None + BranchConditional 427 428 429 + 428: Label + 430: 10(int) Load 131(index) + 431: 139(ptr) AccessChain 113 116 138 15 + 432: 77(int) Load 431 + 433: 10(int) Bitcast 432 + 434: 10(int) IAdd 430 433 + 435: 10(int) IAdd 434 32 + 437: 210(ptr) AccessChain 186(particleIn) 116 435 116 + 438: 75(fvec4) Load 437 + 439: 17(fvec3) VectorShuffle 438 438 0 1 2 + Store 436(param) 439 + 441: 17(fvec3) Load 232(pos) + Store 440(param) 441 + 443: 118(ptr) AccessChain 113 116 367 + 444: 7(float) Load 443 + Store 442(param) 444 + 445: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 436(param) 440(param) 442(param) + 446: 17(fvec3) Load 220(force) + 447: 17(fvec3) FAdd 446 445 + Store 220(force) 447 + Branch 429 + 429: Label + 448: 130(ptr) AccessChain 54(id) 15 + 449: 10(int) Load 448 + 450: 139(ptr) AccessChain 113 116 138 15 + 451: 77(int) Load 450 + 452: 77(int) ISub 451 215 + 453: 10(int) Bitcast 452 + 455: 154(bool) ULessThan 449 453 + 456: 130(ptr) AccessChain 54(id) 32 + 457: 10(int) Load 456 + 459: 154(bool) UGreaterThan 457 15 + 461: 154(bool) LogicalAnd 455 459 + SelectionMerge 463 None + BranchConditional 461 462 463 + 462: Label + 464: 10(int) Load 131(index) + 465: 139(ptr) AccessChain 113 116 138 15 + 466: 77(int) Load 465 + 467: 10(int) Bitcast 466 + 468: 10(int) ISub 464 467 + 469: 10(int) IAdd 468 32 + 471: 210(ptr) AccessChain 186(particleIn) 116 469 116 + 472: 75(fvec4) Load 471 + 473: 17(fvec3) VectorShuffle 472 472 0 1 2 + Store 470(param) 473 + 475: 17(fvec3) Load 232(pos) + Store 474(param) 475 + 477: 118(ptr) AccessChain 113 116 367 + 478: 7(float) Load 477 + Store 476(param) 478 + 479: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 470(param) 474(param) 476(param) + 480: 17(fvec3) Load 220(force) + 481: 17(fvec3) FAdd 480 479 + Store 220(force) 481 + Branch 463 + 463: Label + 483: 118(ptr) AccessChain 113 116 482 + 484: 7(float) Load 483 + 485: 7(float) FNegate 484 + 486: 17(fvec3) Load 241(vel) + 487: 17(fvec3) VectorTimesScalar 486 485 + 488: 17(fvec3) Load 220(force) + 489: 17(fvec3) FAdd 488 487 + Store 220(force) 489 + 494: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 491 490(f) 41 + 495: 17(fvec3) Load 220(force) + 496: 118(ptr) AccessChain 113 116 215 + 497: 7(float) Load 496 + 498: 7(float) FDiv 192 497 + 499: 17(fvec3) VectorTimesScalar 495 498 + Store 490(f) 499 + 500: 10(int) Load 131(index) + 501: 17(fvec3) Load 232(pos) + 502: 17(fvec3) Load 241(vel) + 503: 118(ptr) AccessChain 113 116 116 + 504: 7(float) Load 503 + 505: 17(fvec3) VectorTimesScalar 502 504 + 506: 17(fvec3) FAdd 501 505 + 508: 17(fvec3) Load 490(f) + 509: 17(fvec3) VectorTimesScalar 508 507 + 510: 118(ptr) AccessChain 113 116 116 + 511: 7(float) Load 510 + 512: 17(fvec3) VectorTimesScalar 509 511 + 513: 118(ptr) AccessChain 113 116 116 + 514: 7(float) Load 513 + 515: 17(fvec3) VectorTimesScalar 512 514 + 516: 17(fvec3) FAdd 506 515 + 517: 7(float) CompositeExtract 516 0 + 518: 7(float) CompositeExtract 516 1 + 519: 7(float) CompositeExtract 516 2 + 520: 75(fvec4) CompositeConstruct 517 518 519 192 + 521: 210(ptr) AccessChain 206(particleOut) 116 500 116 + Store 521 520 + 522: 10(int) Load 131(index) + 523: 17(fvec3) Load 241(vel) + 524: 17(fvec3) Load 490(f) + 525: 118(ptr) AccessChain 113 116 116 + 526: 7(float) Load 525 + 527: 17(fvec3) VectorTimesScalar 524 526 + 528: 17(fvec3) FAdd 523 527 + 529: 7(float) CompositeExtract 528 0 + 530: 7(float) CompositeExtract 528 1 + 531: 7(float) CompositeExtract 528 2 + 532: 75(fvec4) CompositeConstruct 529 530 531 216 + 533: 210(ptr) AccessChain 206(particleOut) 116 522 215 + Store 533 532 + 538: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 535 534(sphereDist) 41 + 539: 10(int) Load 131(index) + 540: 210(ptr) AccessChain 206(particleOut) 116 539 116 + 541: 75(fvec4) Load 540 + 542: 17(fvec3) VectorShuffle 541 541 0 1 2 + 544: 210(ptr) AccessChain 113 116 543 + 545: 75(fvec4) Load 544 + 546: 17(fvec3) VectorShuffle 545 545 0 1 2 + 547: 17(fvec3) FSub 542 546 + Store 534(sphereDist) 547 + 548: 17(fvec3) Load 534(sphereDist) + 549: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 548 + 551: 118(ptr) AccessChain 113 116 550 + 552: 7(float) Load 551 + 554: 7(float) FAdd 552 553 + 556: 154(bool) FOrdLessThan 549 554 + SelectionMerge 558 None + BranchConditional 556 557 558 + 557: Label + 559: 10(int) Load 131(index) + 560: 210(ptr) AccessChain 113 116 543 + 561: 75(fvec4) Load 560 + 562: 17(fvec3) VectorShuffle 561 561 0 1 2 + 563: 17(fvec3) Load 534(sphereDist) + 564: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 563 + 565: 118(ptr) AccessChain 113 116 550 + 566: 7(float) Load 565 + 567: 7(float) FAdd 566 553 + 568: 17(fvec3) VectorTimesScalar 564 567 + 569: 17(fvec3) FAdd 562 568 + 570: 118(ptr) AccessChain 206(particleOut) 116 559 116 15 + 571: 7(float) CompositeExtract 569 0 + Store 570 571 + 572: 118(ptr) AccessChain 206(particleOut) 116 559 116 32 + 573: 7(float) CompositeExtract 569 1 + Store 572 573 + 574: 118(ptr) AccessChain 206(particleOut) 116 559 116 44 + 575: 7(float) CompositeExtract 569 2 + Store 574 575 + 576: 10(int) Load 131(index) + 577: 210(ptr) AccessChain 206(particleOut) 116 576 215 + Store 577 217 + Branch 558 + 558: Label + 596: 595(ptr) AccessChain 593 116 116 + 597: 10(int) Load 596 + 599: 154(bool) IEqual 597 32 + SelectionMerge 601 None + BranchConditional 599 600 601 + 600: Label + 605: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 603 602(normal) 41 + Store 602(normal) 606 + 607: 130(ptr) AccessChain 54(id) 32 + 608: 10(int) Load 607 + 610: 154(bool) UGreaterThan 608 15 + SelectionMerge 612 None + BranchConditional 610 611 612 + 611: Label + 613: 130(ptr) AccessChain 54(id) 15 + 614: 10(int) Load 613 + 616: 154(bool) UGreaterThan 614 15 + SelectionMerge 618 None + BranchConditional 616 617 618 + 617: Label + 623: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 620 619(a) 41 + 624: 10(int) Load 131(index) + 625: 10(int) ISub 624 32 + 626: 210(ptr) AccessChain 186(particleIn) 116 625 116 + 627: 75(fvec4) Load 626 + 628: 17(fvec3) VectorShuffle 627 627 0 1 2 + 629: 17(fvec3) Load 232(pos) + 630: 17(fvec3) FSub 628 629 + Store 619(a) 630 + 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 632 631(b) 41 + 636: 10(int) Load 131(index) + 637: 139(ptr) AccessChain 113 116 138 15 + 638: 77(int) Load 637 + 639: 10(int) Bitcast 638 + 640: 10(int) ISub 636 639 + 641: 10(int) ISub 640 32 + 642: 210(ptr) AccessChain 186(particleIn) 116 641 116 + 643: 75(fvec4) Load 642 + 644: 17(fvec3) VectorShuffle 643 643 0 1 2 + 645: 17(fvec3) Load 232(pos) + 646: 17(fvec3) FSub 644 645 + Store 631(b) 646 + 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 648 647(c) 41 + 652: 10(int) Load 131(index) + 653: 139(ptr) AccessChain 113 116 138 15 + 654: 77(int) Load 653 + 655: 10(int) Bitcast 654 + 656: 10(int) ISub 652 655 + 657: 210(ptr) AccessChain 186(particleIn) 116 656 116 + 658: 75(fvec4) Load 657 + 659: 17(fvec3) VectorShuffle 658 658 0 1 2 + 660: 17(fvec3) Load 232(pos) + 661: 17(fvec3) FSub 659 660 + Store 647(c) 661 + 662: 17(fvec3) Load 619(a) + 663: 17(fvec3) Load 631(b) + 664: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 662 663 + 665: 17(fvec3) Load 631(b) + 666: 17(fvec3) Load 647(c) + 667: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 665 666 + 668: 17(fvec3) FAdd 664 667 + 669: 17(fvec3) Load 602(normal) + 670: 17(fvec3) FAdd 669 668 + Store 602(normal) 670 + Branch 618 + 618: Label + 671: 130(ptr) AccessChain 54(id) 15 + 672: 10(int) Load 671 + 673: 139(ptr) AccessChain 113 116 138 15 + 674: 77(int) Load 673 + 675: 77(int) ISub 674 215 + 676: 10(int) Bitcast 675 + 678: 154(bool) ULessThan 672 676 + SelectionMerge 680 None + BranchConditional 678 679 680 + 679: Label + 681: 10(int) Load 131(index) + 682: 139(ptr) AccessChain 113 116 138 15 + 683: 77(int) Load 682 + 684: 10(int) Bitcast 683 + 685: 10(int) ISub 681 684 + 686: 210(ptr) AccessChain 186(particleIn) 116 685 116 + 687: 75(fvec4) Load 686 + 688: 17(fvec3) VectorShuffle 687 687 0 1 2 + 689: 17(fvec3) Load 232(pos) + 690: 17(fvec3) FSub 688 689 + Store 619(a) 690 691: 10(int) Load 131(index) - 692: 138(ptr) AccessChain 113 116 137 15 + 692: 139(ptr) AccessChain 113 116 138 15 693: 77(int) Load 692 694: 10(int) Bitcast 693 695: 10(int) ISub 691 694 - 696: 210(ptr) AccessChain 186(particleIn) 116 695 116 - 697: 75(fvec4) Load 696 - 698: 17(fvec3) VectorShuffle 697 697 0 1 2 - 699: 17(fvec3) Load 232(pos) - 700: 17(fvec3) FSub 698 699 - Store 628(a) 700 - 701: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 700 41 + 696: 10(int) IAdd 695 32 + 697: 210(ptr) AccessChain 186(particleIn) 116 696 116 + 698: 75(fvec4) Load 697 + 699: 17(fvec3) VectorShuffle 698 698 0 1 2 + 700: 17(fvec3) Load 232(pos) + 701: 17(fvec3) FSub 699 700 + Store 631(b) 701 702: 10(int) Load 131(index) - 703: 138(ptr) AccessChain 113 116 137 15 - 704: 77(int) Load 703 - 705: 10(int) Bitcast 704 - 706: 10(int) ISub 702 705 - 707: 10(int) IAdd 706 32 - 708: 210(ptr) AccessChain 186(particleIn) 116 707 116 - 709: 75(fvec4) Load 708 - 710: 17(fvec3) VectorShuffle 709 709 0 1 2 - 711: 17(fvec3) Load 232(pos) - 712: 17(fvec3) FSub 710 711 - Store 640(b) 712 - 713: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 712 41 - 714: 10(int) Load 131(index) - 715: 10(int) IAdd 714 32 - 716: 210(ptr) AccessChain 186(particleIn) 116 715 116 - 717: 75(fvec4) Load 716 - 718: 17(fvec3) VectorShuffle 717 717 0 1 2 - 719: 17(fvec3) Load 232(pos) - 720: 17(fvec3) FSub 718 719 - Store 656(c) 720 - 721: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 720 41 - 722: 17(fvec3) Load 628(a) - 723: 17(fvec3) Load 640(b) - 724: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 722 723 - 725: 17(fvec3) Load 640(b) - 726: 17(fvec3) Load 656(c) - 727: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 725 726 - 728: 17(fvec3) FAdd 724 727 - 729: 17(fvec3) Load 611(normal) - 730: 17(fvec3) FAdd 729 728 - Store 611(normal) 730 - 731: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 730 41 - Branch 690 - 690: Label - Branch 621 - 621: Label - 732: 130(ptr) AccessChain 54(id) 32 - 733: 10(int) Load 732 - 734: 138(ptr) AccessChain 113 116 137 32 - 735: 77(int) Load 734 - 736: 77(int) ISub 735 215 - 737: 10(int) Bitcast 736 - 739: 154(bool) ULessThan 733 737 - SelectionMerge 741 None - BranchConditional 739 740 741 - 740: Label - 742: 130(ptr) AccessChain 54(id) 15 - 743: 10(int) Load 742 - 745: 154(bool) UGreaterThan 743 15 - SelectionMerge 747 None - BranchConditional 745 746 747 - 746: Label - 748: 10(int) Load 131(index) - 749: 138(ptr) AccessChain 113 116 137 15 - 750: 77(int) Load 749 - 751: 10(int) Bitcast 750 - 752: 10(int) IAdd 748 751 - 753: 210(ptr) AccessChain 186(particleIn) 116 752 116 - 754: 75(fvec4) Load 753 - 755: 17(fvec3) VectorShuffle 754 754 0 1 2 - 756: 17(fvec3) Load 232(pos) - 757: 17(fvec3) FSub 755 756 - Store 628(a) 757 - 758: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 757 41 - 759: 10(int) Load 131(index) - 760: 138(ptr) AccessChain 113 116 137 15 - 761: 77(int) Load 760 - 762: 10(int) Bitcast 761 - 763: 10(int) IAdd 759 762 - 764: 10(int) ISub 763 32 - 765: 210(ptr) AccessChain 186(particleIn) 116 764 116 - 766: 75(fvec4) Load 765 - 767: 17(fvec3) VectorShuffle 766 766 0 1 2 - 768: 17(fvec3) Load 232(pos) - 769: 17(fvec3) FSub 767 768 - Store 640(b) 769 - 770: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 769 41 - 771: 10(int) Load 131(index) - 772: 10(int) ISub 771 32 - 773: 210(ptr) AccessChain 186(particleIn) 116 772 116 - 774: 75(fvec4) Load 773 - 775: 17(fvec3) VectorShuffle 774 774 0 1 2 - 776: 17(fvec3) Load 232(pos) - 777: 17(fvec3) FSub 775 776 - Store 656(c) 777 - 778: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 777 41 - 779: 17(fvec3) Load 628(a) - 780: 17(fvec3) Load 640(b) - 781: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 779 780 - 782: 17(fvec3) Load 640(b) - 783: 17(fvec3) Load 656(c) - 784: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 782 783 - 785: 17(fvec3) FAdd 781 784 - 786: 17(fvec3) Load 611(normal) - 787: 17(fvec3) FAdd 786 785 - Store 611(normal) 787 - 788: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 787 41 - Branch 747 - 747: Label - 789: 130(ptr) AccessChain 54(id) 15 - 790: 10(int) Load 789 - 791: 138(ptr) AccessChain 113 116 137 15 - 792: 77(int) Load 791 - 793: 77(int) ISub 792 215 - 794: 10(int) Bitcast 793 - 796: 154(bool) ULessThan 790 794 - SelectionMerge 798 None - BranchConditional 796 797 798 - 797: Label + 703: 10(int) IAdd 702 32 + 704: 210(ptr) AccessChain 186(particleIn) 116 703 116 + 705: 75(fvec4) Load 704 + 706: 17(fvec3) VectorShuffle 705 705 0 1 2 + 707: 17(fvec3) Load 232(pos) + 708: 17(fvec3) FSub 706 707 + Store 647(c) 708 + 709: 17(fvec3) Load 619(a) + 710: 17(fvec3) Load 631(b) + 711: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 709 710 + 712: 17(fvec3) Load 631(b) + 713: 17(fvec3) Load 647(c) + 714: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 712 713 + 715: 17(fvec3) FAdd 711 714 + 716: 17(fvec3) Load 602(normal) + 717: 17(fvec3) FAdd 716 715 + Store 602(normal) 717 + Branch 680 + 680: Label + Branch 612 + 612: Label + 718: 130(ptr) AccessChain 54(id) 32 + 719: 10(int) Load 718 + 720: 139(ptr) AccessChain 113 116 138 32 + 721: 77(int) Load 720 + 722: 77(int) ISub 721 215 + 723: 10(int) Bitcast 722 + 725: 154(bool) ULessThan 719 723 + SelectionMerge 727 None + BranchConditional 725 726 727 + 726: Label + 728: 130(ptr) AccessChain 54(id) 15 + 729: 10(int) Load 728 + 731: 154(bool) UGreaterThan 729 15 + SelectionMerge 733 None + BranchConditional 731 732 733 + 732: Label + 734: 10(int) Load 131(index) + 735: 139(ptr) AccessChain 113 116 138 15 + 736: 77(int) Load 735 + 737: 10(int) Bitcast 736 + 738: 10(int) IAdd 734 737 + 739: 210(ptr) AccessChain 186(particleIn) 116 738 116 + 740: 75(fvec4) Load 739 + 741: 17(fvec3) VectorShuffle 740 740 0 1 2 + 742: 17(fvec3) Load 232(pos) + 743: 17(fvec3) FSub 741 742 + Store 619(a) 743 + 744: 10(int) Load 131(index) + 745: 139(ptr) AccessChain 113 116 138 15 + 746: 77(int) Load 745 + 747: 10(int) Bitcast 746 + 748: 10(int) IAdd 744 747 + 749: 10(int) ISub 748 32 + 750: 210(ptr) AccessChain 186(particleIn) 116 749 116 + 751: 75(fvec4) Load 750 + 752: 17(fvec3) VectorShuffle 751 751 0 1 2 + 753: 17(fvec3) Load 232(pos) + 754: 17(fvec3) FSub 752 753 + Store 631(b) 754 + 755: 10(int) Load 131(index) + 756: 10(int) ISub 755 32 + 757: 210(ptr) AccessChain 186(particleIn) 116 756 116 + 758: 75(fvec4) Load 757 + 759: 17(fvec3) VectorShuffle 758 758 0 1 2 + 760: 17(fvec3) Load 232(pos) + 761: 17(fvec3) FSub 759 760 + Store 647(c) 761 + 762: 17(fvec3) Load 619(a) + 763: 17(fvec3) Load 631(b) + 764: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 762 763 + 765: 17(fvec3) Load 631(b) + 766: 17(fvec3) Load 647(c) + 767: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 765 766 + 768: 17(fvec3) FAdd 764 767 + 769: 17(fvec3) Load 602(normal) + 770: 17(fvec3) FAdd 769 768 + Store 602(normal) 770 + Branch 733 + 733: Label + 771: 130(ptr) AccessChain 54(id) 15 + 772: 10(int) Load 771 + 773: 139(ptr) AccessChain 113 116 138 15 + 774: 77(int) Load 773 + 775: 77(int) ISub 774 215 + 776: 10(int) Bitcast 775 + 778: 154(bool) ULessThan 772 776 + SelectionMerge 780 None + BranchConditional 778 779 780 + 779: Label + 781: 10(int) Load 131(index) + 782: 10(int) IAdd 781 32 + 783: 210(ptr) AccessChain 186(particleIn) 116 782 116 + 784: 75(fvec4) Load 783 + 785: 17(fvec3) VectorShuffle 784 784 0 1 2 + 786: 17(fvec3) Load 232(pos) + 787: 17(fvec3) FSub 785 786 + Store 619(a) 787 + 788: 10(int) Load 131(index) + 789: 139(ptr) AccessChain 113 116 138 15 + 790: 77(int) Load 789 + 791: 10(int) Bitcast 790 + 792: 10(int) IAdd 788 791 + 793: 10(int) IAdd 792 32 + 794: 210(ptr) AccessChain 186(particleIn) 116 793 116 + 795: 75(fvec4) Load 794 + 796: 17(fvec3) VectorShuffle 795 795 0 1 2 + 797: 17(fvec3) Load 232(pos) + 798: 17(fvec3) FSub 796 797 + Store 631(b) 798 799: 10(int) Load 131(index) - 800: 10(int) IAdd 799 32 - 801: 210(ptr) AccessChain 186(particleIn) 116 800 116 - 802: 75(fvec4) Load 801 - 803: 17(fvec3) VectorShuffle 802 802 0 1 2 - 804: 17(fvec3) Load 232(pos) - 805: 17(fvec3) FSub 803 804 - Store 628(a) 805 - 806: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 629 805 41 - 807: 10(int) Load 131(index) - 808: 138(ptr) AccessChain 113 116 137 15 - 809: 77(int) Load 808 - 810: 10(int) Bitcast 809 - 811: 10(int) IAdd 807 810 - 812: 10(int) IAdd 811 32 - 813: 210(ptr) AccessChain 186(particleIn) 116 812 116 - 814: 75(fvec4) Load 813 - 815: 17(fvec3) VectorShuffle 814 814 0 1 2 - 816: 17(fvec3) Load 232(pos) - 817: 17(fvec3) FSub 815 816 - Store 640(b) 817 - 818: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 641 817 41 - 819: 10(int) Load 131(index) - 820: 138(ptr) AccessChain 113 116 137 15 - 821: 77(int) Load 820 - 822: 10(int) Bitcast 821 - 823: 10(int) IAdd 819 822 - 824: 210(ptr) AccessChain 186(particleIn) 116 823 116 - 825: 75(fvec4) Load 824 - 826: 17(fvec3) VectorShuffle 825 825 0 1 2 - 827: 17(fvec3) Load 232(pos) - 828: 17(fvec3) FSub 826 827 - Store 656(c) 828 - 829: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 657 828 41 - 830: 17(fvec3) Load 628(a) - 831: 17(fvec3) Load 640(b) - 832: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 830 831 - 833: 17(fvec3) Load 640(b) - 834: 17(fvec3) Load 656(c) - 835: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 833 834 - 836: 17(fvec3) FAdd 832 835 - 837: 17(fvec3) Load 611(normal) - 838: 17(fvec3) FAdd 837 836 - Store 611(normal) 838 - 839: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 612 838 41 - Branch 798 - 798: Label - Branch 741 - 741: Label - 840: 10(int) Load 131(index) - 841: 17(fvec3) Load 611(normal) - 842: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 841 - 843: 7(float) CompositeExtract 842 0 - 844: 7(float) CompositeExtract 842 1 - 845: 7(float) CompositeExtract 842 2 - 846: 75(fvec4) CompositeConstruct 843 844 845 216 - 847: 210(ptr) AccessChain 206(particleOut) 116 840 490 - Store 847 846 - Branch 610 - 610: Label + 800: 139(ptr) AccessChain 113 116 138 15 + 801: 77(int) Load 800 + 802: 10(int) Bitcast 801 + 803: 10(int) IAdd 799 802 + 804: 210(ptr) AccessChain 186(particleIn) 116 803 116 + 805: 75(fvec4) Load 804 + 806: 17(fvec3) VectorShuffle 805 805 0 1 2 + 807: 17(fvec3) Load 232(pos) + 808: 17(fvec3) FSub 806 807 + Store 647(c) 808 + 809: 17(fvec3) Load 619(a) + 810: 17(fvec3) Load 631(b) + 811: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 809 810 + 812: 17(fvec3) Load 631(b) + 813: 17(fvec3) Load 647(c) + 814: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 812 813 + 815: 17(fvec3) FAdd 811 814 + 816: 17(fvec3) Load 602(normal) + 817: 17(fvec3) FAdd 816 815 + Store 602(normal) 817 + Branch 780 + 780: Label + Branch 727 + 727: Label + 818: 10(int) Load 131(index) + 819: 17(fvec3) Load 602(normal) + 820: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 819 + 821: 7(float) CompositeExtract 820 0 + 822: 7(float) CompositeExtract 820 1 + 823: 7(float) CompositeExtract 820 2 + 824: 75(fvec4) CompositeConstruct 821 822 823 216 + 825: 210(ptr) AccessChain 206(particleOut) 116 818 482 + Store 825 824 + Branch 601 + 601: Label Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 679fcd5e9a..a008da8d28 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -2,7 +2,7 @@ spv.debuginfo.hlsl.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 759 +// Id's are bound by 743 Capability Shader Capability ImageQuery @@ -10,7 +10,7 @@ Validation failed 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 5 "main" 752 755 + EntryPoint Fragment 5 "main" 736 739 ExecutionMode 5 OriginUpperLeft 9: String "float" 12: String "uint" @@ -29,17 +29,17 @@ Validation failed 106: String "shadowCoord" 128: String "bool" 141: String "dist" - 145: String "type.2d.image" - 146: String "@type.2d.image" - 151: String "textureShadowMap" - 156: String "type.sampler" - 157: String "@type.sampler" - 161: String "samplerShadowMap" - 165: String "type.sampled.image" - 166: String "@type.sampled.image" - 204: String "sizeQueryTemp" - 210: String "int" - 217: String "texDim" + 146: String "type.2d.image" + 147: String "@type.2d.image" + 152: String "textureShadowMap" + 157: String "type.sampler" + 158: String "@type.sampler" + 162: String "samplerShadowMap" + 166: String "type.sampled.image" + 167: String "@type.sampled.image" + 203: String "sizeQueryTemp" + 209: String "int" + 216: String "texDim" 230: String "elements" 237: String "levels" 244: String "scale" @@ -50,38 +50,38 @@ Validation failed 283: String "range" 289: String "x" 305: String "y" - 355: String "i" - 369: String "shadowClip" - 381: String "color" - 387: String "viewMatrix" - 391: String "Light" - 397: String "lights" - 400: String "displayDebugTarget" - 405: String "UBO" - 408: String "ubo" - 450: String "textureposition" - 455: String "samplerposition" - 466: String "normal" - 470: String "textureNormal" - 475: String "samplerNormal" - 484: String "albedo" - 488: String "textureAlbedo" - 493: String "samplerAlbedo" - 552: String "N" - 571: String "L" - 592: String "V" - 605: String "lightCosInnerAngle" - 611: String "lightCosOuterAngle" - 617: String "lightRange" - 623: String "dir" - 638: String "cosDir" - 646: String "spotEffect" - 655: String "heightAttenuation" - 663: String "NdotL" - 672: String "diff" - 679: String "R" - 688: String "NdotR" - 697: String "spec" + 351: String "i" + 365: String "shadowClip" + 378: String "color" + 384: String "viewMatrix" + 388: String "Light" + 394: String "lights" + 397: String "displayDebugTarget" + 402: String "UBO" + 405: String "ubo" + 445: String "textureposition" + 450: String "samplerposition" + 460: String "normal" + 465: String "textureNormal" + 470: String "samplerNormal" + 478: String "albedo" + 483: String "textureAlbedo" + 488: String "samplerAlbedo" + 541: String "N" + 560: String "L" + 580: String "V" + 592: String "lightCosInnerAngle" + 598: String "lightCosOuterAngle" + 604: String "lightRange" + 610: String "dir" + 625: String "cosDir" + 633: String "spotEffect" + 642: String "heightAttenuation" + 650: String "NdotL" + 659: String "diff" + 666: String "R" + 675: String "NdotR" + 684: String "spec" Name 5 "main" Name 31 "textureProj(vf4;f1;vf2;" Name 28 "P" @@ -98,10 +98,10 @@ Validation failed Name 99 "shadow" Name 104 "shadowCoord" Name 139 "dist" - Name 149 "textureShadowMap" - Name 159 "samplerShadowMap" - Name 202 "sizeQueryTemp" - Name 215 "texDim" + Name 150 "textureShadowMap" + Name 160 "samplerShadowMap" + Name 201 "sizeQueryTemp" + Name 214 "texDim" Name 228 "elements" Name 235 "levels" Name 242 "scale" @@ -115,92 +115,92 @@ Validation failed Name 328 "param" Name 330 "param" Name 332 "param" - Name 353 "i" - Name 367 "shadowClip" - Name 379 "Light" - MemberName 379(Light) 0 "position" - MemberName 379(Light) 1 "target" - MemberName 379(Light) 2 "color" - MemberName 379(Light) 3 "viewMatrix" - Name 394 "UBO" - MemberName 394(UBO) 0 "viewPos" - MemberName 394(UBO) 1 "lights" - MemberName 394(UBO) 2 "useShadows" - MemberName 394(UBO) 3 "displayDebugTarget" - Name 406 "ubo" - MemberName 406(ubo) 0 "ubo" - Name 413 "" - Name 421 "shadowFactor" - Name 426 "param" - Name 428 "param" - Name 442 "fragPos" - Name 448 "textureposition" - Name 453 "samplerposition" - Name 464 "normal" - Name 468 "textureNormal" - Name 473 "samplerNormal" - Name 482 "albedo" - Name 486 "textureAlbedo" - Name 491 "samplerAlbedo" - Name 514 "fragcolor" - Name 518 "param" - Name 519 "param" - Name 550 "N" - Name 557 "i" - Name 569 "L" - Name 581 "dist" - Name 590 "V" - Name 603 "lightCosInnerAngle" - Name 609 "lightCosOuterAngle" - Name 615 "lightRange" - Name 621 "dir" - Name 636 "cosDir" - Name 644 "spotEffect" - Name 653 "heightAttenuation" - Name 661 "NdotL" - Name 670 "diff" - Name 677 "R" - Name 686 "NdotR" - Name 695 "spec" - Name 737 "param" - Name 739 "param" - Name 750 "inUV" - Name 752 "inUV" - Name 755 "@entryPointOutput" - Name 756 "param" - Decorate 149(textureShadowMap) DescriptorSet 0 - Decorate 149(textureShadowMap) Binding 5 - Decorate 159(samplerShadowMap) DescriptorSet 0 - Decorate 159(samplerShadowMap) Binding 5 - MemberDecorate 379(Light) 0 Offset 0 - MemberDecorate 379(Light) 1 Offset 16 - MemberDecorate 379(Light) 2 Offset 32 - MemberDecorate 379(Light) 3 RowMajor - MemberDecorate 379(Light) 3 Offset 48 - MemberDecorate 379(Light) 3 MatrixStride 16 - Decorate 392 ArrayStride 112 - MemberDecorate 394(UBO) 0 Offset 0 - MemberDecorate 394(UBO) 1 Offset 16 - MemberDecorate 394(UBO) 2 Offset 352 - MemberDecorate 394(UBO) 3 Offset 356 - MemberDecorate 406(ubo) 0 Offset 0 - Decorate 406(ubo) Block - Decorate 413 DescriptorSet 0 - Decorate 413 Binding 4 - Decorate 448(textureposition) DescriptorSet 0 - Decorate 448(textureposition) Binding 1 - Decorate 453(samplerposition) DescriptorSet 0 - Decorate 453(samplerposition) Binding 1 - Decorate 468(textureNormal) DescriptorSet 0 - Decorate 468(textureNormal) Binding 2 - Decorate 473(samplerNormal) DescriptorSet 0 - Decorate 473(samplerNormal) Binding 2 - Decorate 486(textureAlbedo) DescriptorSet 0 - Decorate 486(textureAlbedo) Binding 3 - Decorate 491(samplerAlbedo) DescriptorSet 0 - Decorate 491(samplerAlbedo) Binding 3 - Decorate 752(inUV) Location 0 - Decorate 755(@entryPointOutput) Location 0 + Name 349 "i" + Name 363 "shadowClip" + Name 376 "Light" + MemberName 376(Light) 0 "position" + MemberName 376(Light) 1 "target" + MemberName 376(Light) 2 "color" + MemberName 376(Light) 3 "viewMatrix" + Name 391 "UBO" + MemberName 391(UBO) 0 "viewPos" + MemberName 391(UBO) 1 "lights" + MemberName 391(UBO) 2 "useShadows" + MemberName 391(UBO) 3 "displayDebugTarget" + Name 403 "ubo" + MemberName 403(ubo) 0 "ubo" + Name 410 "" + Name 417 "shadowFactor" + Name 423 "param" + Name 425 "param" + Name 436 "fragPos" + Name 443 "textureposition" + Name 448 "samplerposition" + Name 458 "normal" + Name 463 "textureNormal" + Name 468 "samplerNormal" + Name 476 "albedo" + Name 481 "textureAlbedo" + Name 486 "samplerAlbedo" + Name 508 "fragcolor" + Name 513 "param" + Name 514 "param" + Name 539 "N" + Name 546 "i" + Name 558 "L" + Name 570 "dist" + Name 578 "V" + Name 590 "lightCosInnerAngle" + Name 596 "lightCosOuterAngle" + Name 602 "lightRange" + Name 608 "dir" + Name 623 "cosDir" + Name 631 "spotEffect" + Name 640 "heightAttenuation" + Name 648 "NdotL" + Name 657 "diff" + Name 664 "R" + Name 673 "NdotR" + Name 682 "spec" + Name 722 "param" + Name 724 "param" + Name 734 "inUV" + Name 736 "inUV" + Name 739 "@entryPointOutput" + Name 740 "param" + Decorate 150(textureShadowMap) DescriptorSet 0 + Decorate 150(textureShadowMap) Binding 5 + Decorate 160(samplerShadowMap) DescriptorSet 0 + Decorate 160(samplerShadowMap) Binding 5 + MemberDecorate 376(Light) 0 Offset 0 + MemberDecorate 376(Light) 1 Offset 16 + MemberDecorate 376(Light) 2 Offset 32 + MemberDecorate 376(Light) 3 RowMajor + MemberDecorate 376(Light) 3 Offset 48 + MemberDecorate 376(Light) 3 MatrixStride 16 + Decorate 389 ArrayStride 112 + MemberDecorate 391(UBO) 0 Offset 0 + MemberDecorate 391(UBO) 1 Offset 16 + MemberDecorate 391(UBO) 2 Offset 352 + MemberDecorate 391(UBO) 3 Offset 356 + MemberDecorate 403(ubo) 0 Offset 0 + Decorate 403(ubo) Block + Decorate 410 DescriptorSet 0 + Decorate 410 Binding 4 + Decorate 443(textureposition) DescriptorSet 0 + Decorate 443(textureposition) Binding 1 + Decorate 448(samplerposition) DescriptorSet 0 + Decorate 448(samplerposition) Binding 1 + Decorate 463(textureNormal) DescriptorSet 0 + Decorate 463(textureNormal) Binding 2 + Decorate 468(samplerNormal) DescriptorSet 0 + Decorate 468(samplerNormal) Binding 2 + Decorate 481(textureAlbedo) DescriptorSet 0 + Decorate 481(textureAlbedo) Binding 3 + Decorate 486(samplerAlbedo) DescriptorSet 0 + Decorate 486(samplerAlbedo) Binding 3 + Decorate 736(inUV) Location 0 + Decorate 739(@entryPointOutput) Location 0 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 @@ -250,7 +250,7 @@ Validation failed 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 24 34 15 15 91 18 37 101: 10(int) Constant 62 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 75 8 34 101 15 33 18 - 102: 7(float) Constant 1065353216 + 103: 7(float) Constant 1065353216 107: 10(int) Constant 63 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 106 19 34 107 15 33 18 116: 7(float) Constant 1056964608 @@ -261,43 +261,43 @@ Validation failed 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 142: 10(int) Constant 68 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 142 15 33 18 - 143: TypeImage 7(float) 2D array sampled format:Unknown - 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 145 15 34 142 15 36 146 147 16 - 148: TypePointer UniformConstant 143 -149(textureShadowMap): 148(ptr) Variable UniformConstant - 152: 10(int) Constant 8 - 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 151 144 34 142 15 36 151 149(textureShadowMap) 152 - 154: TypeSampler - 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 142 15 36 157 147 16 - 158: TypePointer UniformConstant 154 -159(samplerShadowMap): 158(ptr) Variable UniformConstant - 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 161 155 34 142 15 36 161 159(samplerShadowMap) 152 - 163: TypeSampledImage 143 - 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 165 15 34 142 15 36 166 147 16 + 144: TypeImage 7(float) 2D array sampled format:Unknown + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 15 34 142 15 36 147 148 16 + 149: TypePointer UniformConstant 144 +150(textureShadowMap): 149(ptr) Variable UniformConstant + 153: 10(int) Constant 8 + 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 152 145 34 142 15 36 152 150(textureShadowMap) 153 + 155: TypeSampler + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 142 15 36 158 148 16 + 159: TypePointer UniformConstant 155 +160(samplerShadowMap): 159(ptr) Variable UniformConstant + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 162 156 34 142 15 36 162 160(samplerShadowMap) 153 + 164: TypeSampledImage 144 + 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 166 15 34 142 15 36 167 148 16 181: 7(float) Constant 0 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 193: 7(float) Constant 1048576000 - 199: TypeVector 10(int) 3 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16 - 201: TypePointer Function 199(ivec3) - 205: 10(int) Constant 80 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 204 200 34 205 15 58 18 - 209: TypeInt 32 1 - 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 210 13 18 15 - 212: TypeVector 209(int) 2 - 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 211 23 - 214: TypePointer Function 212(ivec2) - 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 217 213 34 205 15 58 18 + 198: TypeVector 10(int) 3 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16 + 200: TypePointer Function 198(ivec3) + 204: 10(int) Constant 80 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 203 199 34 204 15 58 18 + 208: TypeInt 32 1 + 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 209 13 18 15 + 211: TypeVector 208(int) 2 + 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 210 23 + 213: TypePointer Function 211(ivec2) + 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 216 212 34 204 15 58 18 218: TypePointer Function 10(int) - 222: TypePointer Function 209(int) - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 211 34 205 15 58 18 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 237 211 34 205 15 58 18 + 222: TypePointer Function 208(int) + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 210 34 204 15 58 18 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 237 210 34 204 15 58 18 245: 10(int) Constant 81 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 8 34 245 15 58 18 - 246: 7(float) Constant 1069547520 + 247: 7(float) Constant 1069547520 251: 10(int) Constant 82 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 250 8 34 251 15 58 18 262: 10(int) Constant 83 @@ -305,147 +305,147 @@ Validation failed 273: 10(int) Constant 85 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 273 15 58 18 278: 10(int) Constant 86 - 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 277 211 34 278 15 58 18 - 279: 209(int) Constant 0 + 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 277 210 34 278 15 58 18 + 280: 208(int) Constant 0 284: 10(int) Constant 87 - 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 283 211 34 284 15 58 18 - 285: 209(int) Constant 1 + 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 283 210 34 284 15 58 18 + 286: 208(int) Constant 1 290: 10(int) Constant 89 - 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 211 34 290 15 58 18 + 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 210 34 290 15 58 18 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 306: 10(int) Constant 91 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 305 211 34 306 15 58 18 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 305 210 34 306 15 58 18 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 356: 10(int) Constant 102 - 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 355 211 34 356 15 76 18 - 364: 209(int) Constant 3 - 365: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 370: 10(int) Constant 104 - 368: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 369 19 34 370 15 76 18 - 376: TypeMatrix 17(fvec4) 4 - 378: 127(bool) ConstantTrue - 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 378 - 379(Light): TypeStruct 17(fvec4) 17(fvec4) 17(fvec4) 376 - 382: 10(int) Constant 46 - 383: 10(int) Constant 14 - 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 - 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 - 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 - 388: 10(int) Constant 47 - 389: 10(int) Constant 21 - 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 387 377 34 388 389 15 15 16 - 390: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 391 37 34 370 15 36 391 15 16 380 384 385 386 - 392: TypeArray 379(Light) 16 - 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 390 16 - 394(UBO): TypeStruct 17(fvec4) 392 209(int) 209(int) - 395: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 381 19 34 382 383 15 15 16 - 398: 10(int) Constant 53 - 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 393 34 398 383 15 15 16 - 401: 10(int) Constant 55 - 402: 10(int) Constant 24 - 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 400 211 34 401 402 15 15 16 - 403: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 400 211 34 401 402 15 15 16 - 404: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 405 37 34 370 15 36 405 15 16 395 396 399 403 - 406(ubo): TypeStruct 394(UBO) - 409: 10(int) Constant 58 - 410: 10(int) Constant 37 - 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 408 404 34 409 410 15 15 16 - 411: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 408 37 34 370 15 36 408 15 16 407 - 412: TypePointer Uniform 406(ubo) - 413: 412(ptr) Variable Uniform - 414: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 35 411 34 370 15 36 35 413 152 - 416: TypePointer Uniform 376 - 423: 10(int) Constant 108 - 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 423 15 76 18 - 444: 10(int) Constant 121 - 443: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 444 15 91 18 - 445: TypeImage 7(float) 2D sampled format:Unknown - 446: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 145 15 34 444 15 36 146 147 16 - 447: TypePointer UniformConstant 445 -448(textureposition): 447(ptr) Variable UniformConstant - 449: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 450 446 34 444 15 36 450 448(textureposition) 152 - 452: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 444 15 36 157 147 16 -453(samplerposition): 158(ptr) Variable UniformConstant - 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 455 452 34 444 15 36 455 453(samplerposition) 152 - 457: TypeSampledImage 445 - 458: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 165 15 34 444 15 36 166 147 16 - 467: 10(int) Constant 122 - 465: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 466 68 34 467 15 91 18 -468(textureNormal): 447(ptr) Variable UniformConstant - 469: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 470 446 34 467 15 36 470 468(textureNormal) 152 - 472: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 467 15 36 157 147 16 -473(samplerNormal): 158(ptr) Variable UniformConstant - 474: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 475 472 34 467 15 36 475 473(samplerNormal) 152 - 485: 10(int) Constant 123 - 483: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 484 19 34 485 15 91 18 -486(textureAlbedo): 447(ptr) Variable UniformConstant - 487: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 488 446 34 485 15 36 488 486(textureAlbedo) 152 - 490: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 37 34 485 15 36 157 147 16 -491(samplerAlbedo): 158(ptr) Variable UniformConstant - 492: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 493 490 34 485 15 36 493 491(samplerAlbedo) 152 - 499: TypePointer Uniform 209(int) - 502: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 516: 10(int) Constant 131 - 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 516 15 91 18 - 517: 67(fvec3) ConstantComposite 102 102 102 - 547: 7(float) Constant 1036831949 - 553: 10(int) Constant 152 - 551: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 552 68 34 553 15 91 18 - 559: 10(int) Constant 154 - 558: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 355 211 34 559 15 91 18 - 567: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 572: 10(int) Constant 157 - 570: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 571 68 34 572 15 91 18 - 574: TypePointer Uniform 17(fvec4) - 583: 10(int) Constant 159 - 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 583 15 91 18 - 593: 10(int) Constant 163 - 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 592 68 34 593 15 91 18 - 606: 10(int) Constant 166 - 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 605 8 34 606 15 91 18 - 607: 7(float) Constant 1064781546 - 612: 10(int) Constant 167 - 610: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 611 8 34 612 15 91 18 - 613: 7(float) Constant 1063781322 - 618: 10(int) Constant 168 - 616: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 617 8 34 618 15 91 18 - 619: 7(float) Constant 1120403456 - 624: 10(int) Constant 171 - 622: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 623 68 34 624 15 91 18 - 639: 10(int) Constant 174 - 637: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 638 8 34 639 15 91 18 - 647: 10(int) Constant 175 - 645: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 646 8 34 647 15 91 18 - 656: 10(int) Constant 176 - 654: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 655 8 34 656 15 91 18 - 664: 10(int) Constant 179 - 662: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 663 8 34 664 15 91 18 - 673: 10(int) Constant 180 - 671: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 672 68 34 673 15 91 18 - 680: 10(int) Constant 183 - 678: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 679 68 34 680 15 91 18 - 689: 10(int) Constant 184 - 687: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 688 8 34 689 15 91 18 - 698: 10(int) Constant 185 - 696: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 697 68 34 698 15 91 18 - 700: 7(float) Constant 1098907648 - 705: 7(float) Constant 1075838976 - 717: 209(int) Constant 2 - 733: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 751: TypePointer Input 22(fvec2) - 752(inUV): 751(ptr) Variable Input - 754: TypePointer Output 17(fvec4) -755(@entryPointOutput): 754(ptr) Variable Output + 352: 10(int) Constant 102 + 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 351 210 34 352 15 76 18 + 360: 208(int) Constant 3 + 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 366: 10(int) Constant 104 + 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 365 19 34 366 15 76 18 + 373: TypeMatrix 17(fvec4) 4 + 375: 127(bool) ConstantTrue + 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 375 + 376(Light): TypeStruct 17(fvec4) 17(fvec4) 17(fvec4) 373 + 379: 10(int) Constant 46 + 380: 10(int) Constant 14 + 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 + 381: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 + 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 + 385: 10(int) Constant 47 + 386: 10(int) Constant 21 + 383: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 384 374 34 385 386 15 15 16 + 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 388 37 34 366 15 36 388 15 16 377 381 382 383 + 389: TypeArray 376(Light) 16 + 390: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 387 16 + 391(UBO): TypeStruct 17(fvec4) 389 208(int) 208(int) + 392: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 + 395: 10(int) Constant 53 + 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 394 390 34 395 380 15 15 16 + 398: 10(int) Constant 55 + 399: 10(int) Constant 24 + 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 210 34 398 399 15 15 16 + 400: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 210 34 398 399 15 15 16 + 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 402 37 34 366 15 36 402 15 16 392 393 396 400 + 403(ubo): TypeStruct 391(UBO) + 406: 10(int) Constant 58 + 407: 10(int) Constant 37 + 404: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 405 401 34 406 407 15 15 16 + 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 405 37 34 366 15 36 405 15 16 404 + 409: TypePointer Uniform 403(ubo) + 410: 409(ptr) Variable Uniform + 411: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 35 408 34 366 15 36 35 410 153 + 413: TypePointer Uniform 373 + 419: 10(int) Constant 108 + 418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 419 15 76 18 + 438: 10(int) Constant 121 + 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 438 15 91 18 + 440: TypeImage 7(float) 2D sampled format:Unknown + 441: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 15 34 438 15 36 147 148 16 + 442: TypePointer UniformConstant 440 +443(textureposition): 442(ptr) Variable UniformConstant + 444: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 445 441 34 438 15 36 445 443(textureposition) 153 + 447: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 438 15 36 158 148 16 +448(samplerposition): 159(ptr) Variable UniformConstant + 449: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 450 447 34 438 15 36 450 448(samplerposition) 153 + 452: TypeSampledImage 440 + 453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 166 15 34 438 15 36 167 148 16 + 461: 10(int) Constant 122 + 459: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 460 68 34 461 15 91 18 +463(textureNormal): 442(ptr) Variable UniformConstant + 464: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 465 441 34 461 15 36 465 463(textureNormal) 153 + 467: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 461 15 36 158 148 16 +468(samplerNormal): 159(ptr) Variable UniformConstant + 469: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 470 467 34 461 15 36 470 468(samplerNormal) 153 + 479: 10(int) Constant 123 + 477: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 478 19 34 479 15 91 18 +481(textureAlbedo): 442(ptr) Variable UniformConstant + 482: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 483 441 34 479 15 36 483 481(textureAlbedo) 153 + 485: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 479 15 36 158 148 16 +486(samplerAlbedo): 159(ptr) Variable UniformConstant + 487: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 488 485 34 479 15 36 488 486(samplerAlbedo) 153 + 493: TypePointer Uniform 208(int) + 496: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 510: 10(int) Constant 131 + 509: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 510 15 91 18 + 512: 67(fvec3) ConstantComposite 103 103 103 + 537: 7(float) Constant 1036831949 + 542: 10(int) Constant 152 + 540: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 541 68 34 542 15 91 18 + 548: 10(int) Constant 154 + 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 351 210 34 548 15 91 18 + 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 561: 10(int) Constant 157 + 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 560 68 34 561 15 91 18 + 564: TypePointer Uniform 17(fvec4) + 572: 10(int) Constant 159 + 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 572 15 91 18 + 581: 10(int) Constant 163 + 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 580 68 34 581 15 91 18 + 593: 10(int) Constant 166 + 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 592 8 34 593 15 91 18 + 595: 7(float) Constant 1064781546 + 599: 10(int) Constant 167 + 597: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 598 8 34 599 15 91 18 + 601: 7(float) Constant 1063781322 + 605: 10(int) Constant 168 + 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 604 8 34 605 15 91 18 + 607: 7(float) Constant 1120403456 + 611: 10(int) Constant 171 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 68 34 611 15 91 18 + 626: 10(int) Constant 174 + 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 625 8 34 626 15 91 18 + 634: 10(int) Constant 175 + 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 633 8 34 634 15 91 18 + 643: 10(int) Constant 176 + 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 642 8 34 643 15 91 18 + 651: 10(int) Constant 179 + 649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 650 8 34 651 15 91 18 + 660: 10(int) Constant 180 + 658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 659 68 34 660 15 91 18 + 667: 10(int) Constant 183 + 665: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 666 68 34 667 15 91 18 + 676: 10(int) Constant 184 + 674: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 675 8 34 676 15 91 18 + 685: 10(int) Constant 185 + 683: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 684 68 34 685 15 91 18 + 688: 7(float) Constant 1098907648 + 693: 7(float) Constant 1075838976 + 704: 208(int) Constant 2 + 718: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 735: TypePointer Input 22(fvec2) + 736(inUV): 735(ptr) Variable Input + 738: TypePointer Output 17(fvec4) +739(@entryPointOutput): 738(ptr) Variable Output 5(main): 3 Function None 4 6: Label - 750(inUV): 25(ptr) Variable Function - 756(param): 25(ptr) Variable Function - 753: 22(fvec2) Load 752(inUV) - Store 750(inUV) 753 - 757: 22(fvec2) Load 750(inUV) - Store 756(param) 757 - 758: 17(fvec4) FunctionCall 89(@main(vf2;) 756(param) - Store 755(@entryPointOutput) 758 + 734(inUV): 25(ptr) Variable Function + 740(param): 25(ptr) Variable Function + 737: 22(fvec2) Load 736(inUV) + Store 734(inUV) 737 + 741: 22(fvec2) Load 734(inUV) + Store 740(param) 741 + 742: 17(fvec4) FunctionCall 89(@main(vf2;) 740(param) + Store 739(@entryPointOutput) 742 Return FunctionEnd 31(textureProj(vf4;f1;vf2;): 7(float) Function None 26 @@ -462,15 +462,15 @@ Validation failed 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 29(layer) 45 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 49 30(offset) 45 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 33 31(textureProj(vf4;f1;vf2;) - Store 99(shadow) 102 - 103: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 100 102 45 - 108: 17(fvec4) Load 28(P) - 109: 21(ptr) AccessChain 28(P) 16 - 110: 7(float) Load 109 - 111: 17(fvec4) CompositeConstruct 110 110 110 110 - 112: 17(fvec4) FDiv 108 111 - Store 104(shadowCoord) 112 - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 105 112 45 + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 100 99(shadow) 45 + Store 99(shadow) 103 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 105 104(shadowCoord) 45 + 109: 17(fvec4) Load 28(P) + 110: 21(ptr) AccessChain 28(P) 16 + 111: 7(float) Load 110 + 112: 17(fvec4) CompositeConstruct 111 111 111 111 + 113: 17(fvec4) FDiv 109 112 + Store 104(shadowCoord) 113 114: 17(fvec4) Load 104(shadowCoord) 115: 22(fvec2) VectorShuffle 114 114 0 1 117: 22(fvec2) VectorTimesScalar 115 116 @@ -487,26 +487,26 @@ Validation failed 130: 127(bool) FOrdGreaterThan 125 126 131: 21(ptr) AccessChain 104(shadowCoord) 23 132: 7(float) Load 131 - 134: 127(bool) FOrdLessThan 132 102 + 134: 127(bool) FOrdLessThan 132 103 136: 127(bool) LogicalAnd 130 134 SelectionMerge 138 None BranchConditional 136 137 138 137: Label - 153: 143 Load 149(textureShadowMap) - 162: 154 Load 159(samplerShadowMap) - 167: 163 SampledImage 153 162 - 168: 17(fvec4) Load 104(shadowCoord) - 169: 22(fvec2) VectorShuffle 168 168 0 1 - 170: 22(fvec2) Load 30(offset) - 171: 22(fvec2) FAdd 169 170 - 172: 7(float) Load 29(layer) - 173: 7(float) CompositeExtract 171 0 - 174: 7(float) CompositeExtract 171 1 - 175: 67(fvec3) CompositeConstruct 173 174 172 - 176: 17(fvec4) ImageSampleImplicitLod 167 175 - 177: 7(float) CompositeExtract 176 0 - Store 139(dist) 177 - 178: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 140 177 45 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 140 139(dist) 45 + 154: 144 Load 150(textureShadowMap) + 163: 155 Load 160(samplerShadowMap) + 168: 164 SampledImage 154 163 + 169: 17(fvec4) Load 104(shadowCoord) + 170: 22(fvec2) VectorShuffle 169 169 0 1 + 171: 22(fvec2) Load 30(offset) + 172: 22(fvec2) FAdd 170 171 + 173: 7(float) Load 29(layer) + 174: 7(float) CompositeExtract 172 0 + 175: 7(float) CompositeExtract 172 1 + 176: 67(fvec3) CompositeConstruct 174 175 173 + 177: 17(fvec4) ImageSampleImplicitLod 168 176 + 178: 7(float) CompositeExtract 177 0 + Store 139(dist) 178 179: 21(ptr) AccessChain 104(shadowCoord) 16 180: 7(float) Load 179 183: 127(bool) FOrdGreaterThan 180 181 @@ -519,20 +519,19 @@ Validation failed BranchConditional 190 191 192 191: Label Store 99(shadow) 193 - 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 100 193 45 Branch 192 192: Label Branch 138 138: Label - 195: 7(float) Load 99(shadow) - ReturnValue 195 + 194: 7(float) Load 99(shadow) + ReturnValue 194 FunctionEnd 56(filterPCF(vf4;f1;): 7(float) Function None 52 54(sc): 20(ptr) FunctionParameter 55(layer): 21(ptr) FunctionParameter 59: Label -202(sizeQueryTemp): 201(ptr) Variable Function - 215(texDim): 214(ptr) Variable Function +201(sizeQueryTemp): 200(ptr) Variable Function + 214(texDim): 213(ptr) Variable Function 228(elements): 222(ptr) Variable Function 235(levels): 222(ptr) Variable Function 242(scale): 21(ptr) Variable Function @@ -550,89 +549,90 @@ Validation failed 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 62 54(sc) 45 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 55(layer) 45 - 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 58 56(filterPCF(vf4;f1;) - 206: 143 Load 149(textureShadowMap) - 207: 199(ivec3) ImageQuerySizeLod 206 15 - Store 202(sizeQueryTemp) 207 - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 203 207 45 - 219: 218(ptr) AccessChain 202(sizeQueryTemp) 15 + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 58 56(filterPCF(vf4;f1;) + 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 202 201(sizeQueryTemp) 45 + 206: 144 Load 150(textureShadowMap) + 207: 198(ivec3) ImageQuerySizeLod 206 15 + Store 201(sizeQueryTemp) 207 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 215 214(texDim) 45 + 219: 218(ptr) AccessChain 201(sizeQueryTemp) 15 220: 10(int) Load 219 - 221: 209(int) Bitcast 220 - 223: 222(ptr) AccessChain 215(texDim) 15 + 221: 208(int) Bitcast 220 + 223: 222(ptr) AccessChain 214(texDim) 15 Store 223 221 - 224: 218(ptr) AccessChain 202(sizeQueryTemp) 37 + 224: 218(ptr) AccessChain 201(sizeQueryTemp) 37 225: 10(int) Load 224 - 226: 209(int) Bitcast 225 - 227: 222(ptr) AccessChain 215(texDim) 37 + 226: 208(int) Bitcast 225 + 227: 222(ptr) AccessChain 214(texDim) 37 Store 227 226 - 231: 218(ptr) AccessChain 202(sizeQueryTemp) 23 - 232: 10(int) Load 231 - 233: 209(int) Bitcast 232 - Store 228(elements) 233 - 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 233 45 - 238: 143 Load 149(textureShadowMap) - 239: 10(int) ImageQueryLevels 238 - 240: 209(int) Bitcast 239 - Store 235(levels) 240 - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 236 240 45 - Store 242(scale) 246 - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 243 246 45 - 252: 7(float) Load 242(scale) - 253: 7(float) FMul 252 102 - 254: 222(ptr) AccessChain 215(texDim) 15 - 255: 209(int) Load 254 - 256: 7(float) ConvertSToF 255 - 257: 7(float) FDiv 253 256 - Store 248(dx) 257 - 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 249 257 45 - 263: 7(float) Load 242(scale) - 264: 7(float) FMul 263 102 - 265: 222(ptr) AccessChain 215(texDim) 37 - 266: 209(int) Load 265 - 267: 7(float) ConvertSToF 266 - 268: 7(float) FDiv 264 267 - Store 259(dy) 268 - 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 260 268 45 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 229 228(elements) 45 + 232: 218(ptr) AccessChain 201(sizeQueryTemp) 23 + 233: 10(int) Load 232 + 234: 208(int) Bitcast 233 + Store 228(elements) 234 + 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 236 235(levels) 45 + 239: 144 Load 150(textureShadowMap) + 240: 10(int) ImageQueryLevels 239 + 241: 208(int) Bitcast 240 + Store 235(levels) 241 + 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 243 242(scale) 45 + Store 242(scale) 247 + 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 249 248(dx) 45 + 253: 7(float) Load 242(scale) + 254: 7(float) FMul 253 103 + 255: 222(ptr) AccessChain 214(texDim) 15 + 256: 208(int) Load 255 + 257: 7(float) ConvertSToF 256 + 258: 7(float) FDiv 254 257 + Store 248(dx) 258 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 260 259(dy) 45 + 264: 7(float) Load 242(scale) + 265: 7(float) FMul 264 103 + 266: 222(ptr) AccessChain 214(texDim) 37 + 267: 208(int) Load 266 + 268: 7(float) ConvertSToF 267 + 269: 7(float) FDiv 265 268 + Store 259(dy) 269 + 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 271 270(shadowFactor) 45 Store 270(shadowFactor) 181 - 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 271 181 45 - Store 275(count) 279 - 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 276 279 45 - Store 281(range) 285 - 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 282 285 45 - 291: 209(int) Load 281(range) - 292: 209(int) SNegate 291 - Store 287(x) 292 - 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 288 292 45 + 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 276 275(count) 45 + Store 275(count) 280 + 285: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 282 281(range) 45 + Store 281(range) 286 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 288 287(x) 45 + 292: 208(int) Load 281(range) + 293: 208(int) SNegate 292 + Store 287(x) 293 Branch 294 294: Label LoopMerge 296 297 None Branch 298 298: Label - 299: 209(int) Load 287(x) - 300: 209(int) Load 281(range) + 299: 208(int) Load 287(x) + 300: 208(int) Load 281(range) 302: 127(bool) SLessThanEqual 299 300 BranchConditional 302 295 296 295: Label - 307: 209(int) Load 281(range) - 308: 209(int) SNegate 307 - Store 303(y) 308 - 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 304 308 45 + 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 304 303(y) 45 + 308: 208(int) Load 281(range) + 309: 208(int) SNegate 308 + Store 303(y) 309 Branch 310 310: Label LoopMerge 312 313 None Branch 314 314: Label - 315: 209(int) Load 303(y) - 316: 209(int) Load 281(range) + 315: 208(int) Load 303(y) + 316: 208(int) Load 281(range) 318: 127(bool) SLessThanEqual 315 316 BranchConditional 318 311 312 311: Label 319: 7(float) Load 248(dx) - 320: 209(int) Load 287(x) + 320: 208(int) Load 287(x) 321: 7(float) ConvertSToF 320 322: 7(float) FMul 319 321 323: 7(float) Load 259(dy) - 324: 209(int) Load 303(y) + 324: 208(int) Load 303(y) 325: 7(float) ConvertSToF 324 326: 7(float) FMul 323 325 327: 22(fvec2) CompositeConstruct 322 326 @@ -645,359 +645,343 @@ Validation failed 334: 7(float) Load 270(shadowFactor) 335: 7(float) FAdd 334 333 Store 270(shadowFactor) 335 - 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 271 335 45 - 337: 209(int) Load 275(count) - 338: 209(int) IAdd 337 285 - Store 275(count) 338 - 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 276 338 45 + 336: 208(int) Load 275(count) + 337: 208(int) IAdd 336 286 + Store 275(count) 337 Branch 313 313: Label - 340: 209(int) Load 303(y) - 341: 209(int) IAdd 340 285 - Store 303(y) 341 - 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 304 341 45 + 338: 208(int) Load 303(y) + 339: 208(int) IAdd 338 286 + Store 303(y) 339 Branch 310 312: Label Branch 297 297: Label - 343: 209(int) Load 287(x) - 344: 209(int) IAdd 343 285 - Store 287(x) 344 - 345: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 288 344 45 + 340: 208(int) Load 287(x) + 341: 208(int) IAdd 340 286 + Store 287(x) 341 Branch 294 296: Label - 346: 7(float) Load 270(shadowFactor) - 347: 209(int) Load 275(count) - 348: 7(float) ConvertSToF 347 - 349: 7(float) FDiv 346 348 - ReturnValue 349 + 342: 7(float) Load 270(shadowFactor) + 343: 208(int) Load 275(count) + 344: 7(float) ConvertSToF 343 + 345: 7(float) FDiv 342 344 + ReturnValue 345 FunctionEnd 74(shadow(vf3;vf3;): 67(fvec3) Function None 70 72(fragcolor): 69(ptr) FunctionParameter 73(fragPos): 69(ptr) FunctionParameter 77: Label - 353(i): 222(ptr) Variable Function - 367(shadowClip): 20(ptr) Variable Function -421(shadowFactor): 21(ptr) Variable Function - 426(param): 20(ptr) Variable Function - 428(param): 21(ptr) Variable Function + 349(i): 222(ptr) Variable Function + 363(shadowClip): 20(ptr) Variable Function +417(shadowFactor): 21(ptr) Variable Function + 423(param): 20(ptr) Variable Function + 425(param): 21(ptr) Variable Function 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 72(fragcolor) 45 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 73(fragPos) 45 - 352: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(shadow(vf3;vf3;) - Store 353(i) 279 - 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 354 279 45 + 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(shadow(vf3;vf3;) + 353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 350 349(i) 45 + Store 349(i) 280 + Branch 354 + 354: Label + LoopMerge 356 357 None Branch 358 358: Label - LoopMerge 360 361 None - Branch 362 - 362: Label - 363: 209(int) Load 353(i) - 366: 127(bool) SLessThan 363 364 - BranchConditional 366 359 360 - 359: Label - 371: 67(fvec3) Load 73(fragPos) - 372: 7(float) CompositeExtract 371 0 - 373: 7(float) CompositeExtract 371 1 - 374: 7(float) CompositeExtract 371 2 - 375: 17(fvec4) CompositeConstruct 372 373 374 102 - 415: 209(int) Load 353(i) - 417: 416(ptr) AccessChain 413 279 285 415 364 - 418: 376 Load 417 - 419: 17(fvec4) VectorTimesMatrix 375 418 - Store 367(shadowClip) 419 - 420: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 368 419 45 - 424: 209(int) Load 353(i) - 425: 7(float) ConvertSToF 424 - 427: 17(fvec4) Load 367(shadowClip) - Store 426(param) 427 - Store 428(param) 425 - 429: 7(float) FunctionCall 56(filterPCF(vf4;f1;) 426(param) 428(param) - Store 421(shadowFactor) 429 - 430: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 422 429 45 - 431: 7(float) Load 421(shadowFactor) - 432: 67(fvec3) Load 72(fragcolor) - 433: 67(fvec3) VectorTimesScalar 432 431 - Store 72(fragcolor) 433 - 434: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 80 433 45 - Branch 361 - 361: Label - 435: 209(int) Load 353(i) - 436: 209(int) IAdd 435 285 - Store 353(i) 436 - 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 354 436 45 - Branch 358 - 360: Label - 438: 67(fvec3) Load 72(fragcolor) - ReturnValue 438 + 359: 208(int) Load 349(i) + 362: 127(bool) SLessThan 359 360 + BranchConditional 362 355 356 + 355: Label + 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 364 363(shadowClip) 45 + 368: 67(fvec3) Load 73(fragPos) + 369: 7(float) CompositeExtract 368 0 + 370: 7(float) CompositeExtract 368 1 + 371: 7(float) CompositeExtract 368 2 + 372: 17(fvec4) CompositeConstruct 369 370 371 103 + 412: 208(int) Load 349(i) + 414: 413(ptr) AccessChain 410 280 286 412 360 + 415: 373 Load 414 + 416: 17(fvec4) VectorTimesMatrix 372 415 + Store 363(shadowClip) 416 + 420: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 418 417(shadowFactor) 45 + 421: 208(int) Load 349(i) + 422: 7(float) ConvertSToF 421 + 424: 17(fvec4) Load 363(shadowClip) + Store 423(param) 424 + Store 425(param) 422 + 426: 7(float) FunctionCall 56(filterPCF(vf4;f1;) 423(param) 425(param) + Store 417(shadowFactor) 426 + 427: 7(float) Load 417(shadowFactor) + 428: 67(fvec3) Load 72(fragcolor) + 429: 67(fvec3) VectorTimesScalar 428 427 + Store 72(fragcolor) 429 + Branch 357 + 357: Label + 430: 208(int) Load 349(i) + 431: 208(int) IAdd 430 286 + Store 349(i) 431 + Branch 354 + 356: Label + 432: 67(fvec3) Load 72(fragcolor) + ReturnValue 432 FunctionEnd 89(@main(vf2;): 17(fvec4) Function None 86 88(inUV): 25(ptr) FunctionParameter 92: Label - 442(fragPos): 69(ptr) Variable Function - 464(normal): 69(ptr) Variable Function - 482(albedo): 20(ptr) Variable Function - 514(fragcolor): 69(ptr) Variable Function - 518(param): 69(ptr) Variable Function - 519(param): 69(ptr) Variable Function - 550(N): 69(ptr) Variable Function - 557(i): 222(ptr) Variable Function - 569(L): 69(ptr) Variable Function - 581(dist): 21(ptr) Variable Function - 590(V): 69(ptr) Variable Function -603(lightCosInnerAngle): 21(ptr) Variable Function -609(lightCosOuterAngle): 21(ptr) Variable Function - 615(lightRange): 21(ptr) Variable Function - 621(dir): 69(ptr) Variable Function - 636(cosDir): 21(ptr) Variable Function - 644(spotEffect): 21(ptr) Variable Function -653(heightAttenuation): 21(ptr) Variable Function - 661(NdotL): 21(ptr) Variable Function - 670(diff): 69(ptr) Variable Function - 677(R): 69(ptr) Variable Function - 686(NdotR): 21(ptr) Variable Function - 695(spec): 69(ptr) Variable Function - 737(param): 69(ptr) Variable Function - 739(param): 69(ptr) Variable Function + 436(fragPos): 69(ptr) Variable Function + 458(normal): 69(ptr) Variable Function + 476(albedo): 20(ptr) Variable Function + 508(fragcolor): 69(ptr) Variable Function + 513(param): 69(ptr) Variable Function + 514(param): 69(ptr) Variable Function + 539(N): 69(ptr) Variable Function + 546(i): 222(ptr) Variable Function + 558(L): 69(ptr) Variable Function + 570(dist): 21(ptr) Variable Function + 578(V): 69(ptr) Variable Function +590(lightCosInnerAngle): 21(ptr) Variable Function +596(lightCosOuterAngle): 21(ptr) Variable Function + 602(lightRange): 21(ptr) Variable Function + 608(dir): 69(ptr) Variable Function + 623(cosDir): 21(ptr) Variable Function + 631(spotEffect): 21(ptr) Variable Function +640(heightAttenuation): 21(ptr) Variable Function + 648(NdotL): 21(ptr) Variable Function + 657(diff): 69(ptr) Variable Function + 664(R): 69(ptr) Variable Function + 673(NdotR): 21(ptr) Variable Function + 682(spec): 69(ptr) Variable Function + 722(param): 69(ptr) Variable Function + 724(param): 69(ptr) Variable Function 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 91 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 95 88(inUV) 45 - 441: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 91 89(@main(vf2;) - 451: 445 Load 448(textureposition) - 456: 154 Load 453(samplerposition) - 459: 457 SampledImage 451 456 - 460: 22(fvec2) Load 88(inUV) - 461: 17(fvec4) ImageSampleImplicitLod 459 460 - 462: 67(fvec3) VectorShuffle 461 461 0 1 2 - Store 442(fragPos) 462 - 463: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 443 462 45 - 471: 445 Load 468(textureNormal) - 476: 154 Load 473(samplerNormal) - 477: 457 SampledImage 471 476 - 478: 22(fvec2) Load 88(inUV) - 479: 17(fvec4) ImageSampleImplicitLod 477 478 - 480: 67(fvec3) VectorShuffle 479 479 0 1 2 - Store 464(normal) 480 - 481: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 465 480 45 - 489: 445 Load 486(textureAlbedo) - 494: 154 Load 491(samplerAlbedo) - 495: 457 SampledImage 489 494 - 496: 22(fvec2) Load 88(inUV) - 497: 17(fvec4) ImageSampleImplicitLod 495 496 - Store 482(albedo) 497 - 498: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 483 497 45 - 500: 499(ptr) AccessChain 413 279 364 - 501: 209(int) Load 500 - 503: 127(bool) SGreaterThan 501 279 - SelectionMerge 505 None - BranchConditional 503 504 505 - 504: Label - 506: 499(ptr) AccessChain 413 279 364 - 507: 209(int) Load 506 - SelectionMerge 513 None - Switch 507 513 - case 1: 508 - case 2: 509 - case 3: 510 - case 4: 511 - case 5: 512 - 508: Label - Store 518(param) 517 - 520: 67(fvec3) Load 442(fragPos) - Store 519(param) 520 - 521: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 518(param) 519(param) - Store 514(fragcolor) 521 - 522: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 521 45 - Branch 513 - 509: Label - 524: 67(fvec3) Load 442(fragPos) - Store 514(fragcolor) 524 - 525: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 524 45 - Branch 513 - 510: Label - 527: 67(fvec3) Load 464(normal) - Store 514(fragcolor) 527 - 528: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 527 45 - Branch 513 - 511: Label - 530: 17(fvec4) Load 482(albedo) - 531: 67(fvec3) VectorShuffle 530 530 0 1 2 - Store 514(fragcolor) 531 - 532: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 531 45 - Branch 513 - 512: Label - 534: 17(fvec4) Load 482(albedo) - 535: 67(fvec3) VectorShuffle 534 534 3 3 3 - Store 514(fragcolor) 535 - 536: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 535 45 - Branch 513 - 513: Label - 539: 67(fvec3) Load 514(fragcolor) - 540: 7(float) CompositeExtract 539 0 - 541: 7(float) CompositeExtract 539 1 - 542: 7(float) CompositeExtract 539 2 - 543: 17(fvec4) CompositeConstruct 540 541 542 102 - ReturnValue 543 - 505: Label - 545: 17(fvec4) Load 482(albedo) - 546: 67(fvec3) VectorShuffle 545 545 0 1 2 - 548: 67(fvec3) VectorTimesScalar 546 547 - Store 514(fragcolor) 548 - 549: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 548 45 - 554: 67(fvec3) Load 464(normal) - 555: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 554 - Store 550(N) 555 - 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 551 555 45 - Store 557(i) 279 - 560: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 558 279 45 - Branch 561 - 561: Label - LoopMerge 563 564 None - Branch 565 - 565: Label - 566: 209(int) Load 557(i) - 568: 127(bool) SLessThan 566 364 - BranchConditional 568 562 563 - 562: Label - 573: 209(int) Load 557(i) - 575: 574(ptr) AccessChain 413 279 285 573 279 - 576: 17(fvec4) Load 575 - 577: 67(fvec3) VectorShuffle 576 576 0 1 2 - 578: 67(fvec3) Load 442(fragPos) - 579: 67(fvec3) FSub 577 578 - Store 569(L) 579 - 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 570 579 45 - 584: 67(fvec3) Load 569(L) - 585: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 584 - Store 581(dist) 585 - 586: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 582 585 45 - 587: 67(fvec3) Load 569(L) - 588: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 587 - Store 569(L) 588 - 589: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 570 588 45 - 594: 574(ptr) AccessChain 413 279 279 - 595: 17(fvec4) Load 594 - 596: 67(fvec3) VectorShuffle 595 595 0 1 2 - 597: 67(fvec3) Load 442(fragPos) - 598: 67(fvec3) FSub 596 597 - Store 590(V) 598 - 599: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 591 598 45 - 600: 67(fvec3) Load 590(V) - 601: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 600 - Store 590(V) 601 - 602: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 591 601 45 - Store 603(lightCosInnerAngle) 607 - 608: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 604 607 45 - Store 609(lightCosOuterAngle) 613 - 614: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 610 613 45 - Store 615(lightRange) 619 - 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 616 619 45 - 625: 209(int) Load 557(i) - 626: 574(ptr) AccessChain 413 279 285 625 279 - 627: 17(fvec4) Load 626 - 628: 67(fvec3) VectorShuffle 627 627 0 1 2 - 629: 209(int) Load 557(i) - 630: 574(ptr) AccessChain 413 279 285 629 285 - 631: 17(fvec4) Load 630 - 632: 67(fvec3) VectorShuffle 631 631 0 1 2 - 633: 67(fvec3) FSub 628 632 - 634: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 633 - Store 621(dir) 634 - 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 622 634 45 - 640: 67(fvec3) Load 569(L) - 641: 67(fvec3) Load 621(dir) - 642: 7(float) Dot 640 641 - Store 636(cosDir) 642 - 643: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 637 642 45 - 648: 7(float) Load 609(lightCosOuterAngle) - 649: 7(float) Load 603(lightCosInnerAngle) - 650: 7(float) Load 636(cosDir) - 651: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 648 649 650 - Store 644(spotEffect) 651 - 652: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 645 651 45 - 657: 7(float) Load 615(lightRange) - 658: 7(float) Load 581(dist) - 659: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 657 181 658 - Store 653(heightAttenuation) 659 - 660: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 654 659 45 - 665: 67(fvec3) Load 550(N) - 666: 67(fvec3) Load 569(L) - 667: 7(float) Dot 665 666 - 668: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 667 - Store 661(NdotL) 668 - 669: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 662 668 45 - 674: 7(float) Load 661(NdotL) - 675: 67(fvec3) CompositeConstruct 674 674 674 - Store 670(diff) 675 - 676: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 671 675 45 - 681: 67(fvec3) Load 569(L) - 682: 67(fvec3) FNegate 681 - 683: 67(fvec3) Load 550(N) - 684: 67(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 682 683 - Store 677(R) 684 - 685: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 678 684 45 - 690: 67(fvec3) Load 677(R) - 691: 67(fvec3) Load 590(V) - 692: 7(float) Dot 690 691 - 693: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 692 - Store 686(NdotR) 693 - 694: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 687 693 45 - 699: 7(float) Load 686(NdotR) - 701: 7(float) ExtInst 2(GLSL.std.450) 26(Pow) 699 700 - 702: 21(ptr) AccessChain 482(albedo) 16 - 703: 7(float) Load 702 - 704: 7(float) FMul 701 703 - 706: 7(float) FMul 704 705 - 707: 67(fvec3) CompositeConstruct 706 706 706 - Store 695(spec) 707 - 708: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 696 707 45 - 709: 67(fvec3) Load 670(diff) - 710: 67(fvec3) Load 695(spec) - 711: 67(fvec3) FAdd 709 710 - 712: 7(float) Load 644(spotEffect) - 713: 67(fvec3) VectorTimesScalar 711 712 - 714: 7(float) Load 653(heightAttenuation) - 715: 67(fvec3) VectorTimesScalar 713 714 - 716: 209(int) Load 557(i) - 718: 574(ptr) AccessChain 413 279 285 716 717 - 719: 17(fvec4) Load 718 - 720: 67(fvec3) VectorShuffle 719 719 0 1 2 - 721: 67(fvec3) FMul 715 720 - 722: 17(fvec4) Load 482(albedo) - 723: 67(fvec3) VectorShuffle 722 722 0 1 2 - 724: 67(fvec3) FMul 721 723 - 725: 67(fvec3) Load 514(fragcolor) - 726: 67(fvec3) FAdd 725 724 - Store 514(fragcolor) 726 - 727: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 726 45 - Branch 564 - 564: Label - 728: 209(int) Load 557(i) - 729: 209(int) IAdd 728 285 - Store 557(i) 729 - 730: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 558 729 45 - Branch 561 - 563: Label - 731: 499(ptr) AccessChain 413 279 717 - 732: 209(int) Load 731 - 734: 127(bool) SGreaterThan 732 279 - SelectionMerge 736 None - BranchConditional 734 735 736 - 735: Label - 738: 67(fvec3) Load 514(fragcolor) - Store 737(param) 738 - 740: 67(fvec3) Load 442(fragPos) - Store 739(param) 740 - 741: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 737(param) 739(param) - Store 514(fragcolor) 741 - 742: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 515 741 45 - Branch 736 - 736: Label - 743: 67(fvec3) Load 514(fragcolor) - 744: 7(float) CompositeExtract 743 0 - 745: 7(float) CompositeExtract 743 1 - 746: 7(float) CompositeExtract 743 2 - 747: 17(fvec4) CompositeConstruct 744 745 746 102 - ReturnValue 747 + 435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 91 89(@main(vf2;) + 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 437 436(fragPos) 45 + 446: 440 Load 443(textureposition) + 451: 155 Load 448(samplerposition) + 454: 452 SampledImage 446 451 + 455: 22(fvec2) Load 88(inUV) + 456: 17(fvec4) ImageSampleImplicitLod 454 455 + 457: 67(fvec3) VectorShuffle 456 456 0 1 2 + Store 436(fragPos) 457 + 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 459 458(normal) 45 + 466: 440 Load 463(textureNormal) + 471: 155 Load 468(samplerNormal) + 472: 452 SampledImage 466 471 + 473: 22(fvec2) Load 88(inUV) + 474: 17(fvec4) ImageSampleImplicitLod 472 473 + 475: 67(fvec3) VectorShuffle 474 474 0 1 2 + Store 458(normal) 475 + 480: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 477 476(albedo) 45 + 484: 440 Load 481(textureAlbedo) + 489: 155 Load 486(samplerAlbedo) + 490: 452 SampledImage 484 489 + 491: 22(fvec2) Load 88(inUV) + 492: 17(fvec4) ImageSampleImplicitLod 490 491 + Store 476(albedo) 492 + 494: 493(ptr) AccessChain 410 280 360 + 495: 208(int) Load 494 + 497: 127(bool) SGreaterThan 495 280 + SelectionMerge 499 None + BranchConditional 497 498 499 + 498: Label + 500: 493(ptr) AccessChain 410 280 360 + 501: 208(int) Load 500 + SelectionMerge 507 None + Switch 501 507 + case 1: 502 + case 2: 503 + case 3: 504 + case 4: 505 + case 5: 506 + 502: Label + 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 509 508(fragcolor) 45 + Store 513(param) 512 + 515: 67(fvec3) Load 436(fragPos) + Store 514(param) 515 + 516: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 513(param) 514(param) + Store 508(fragcolor) 516 + Branch 507 + 503: Label + 518: 67(fvec3) Load 436(fragPos) + Store 508(fragcolor) 518 + Branch 507 + 504: Label + 520: 67(fvec3) Load 458(normal) + Store 508(fragcolor) 520 + Branch 507 + 505: Label + 522: 17(fvec4) Load 476(albedo) + 523: 67(fvec3) VectorShuffle 522 522 0 1 2 + Store 508(fragcolor) 523 + Branch 507 + 506: Label + 525: 17(fvec4) Load 476(albedo) + 526: 67(fvec3) VectorShuffle 525 525 3 3 3 + Store 508(fragcolor) 526 + Branch 507 + 507: Label + 529: 67(fvec3) Load 508(fragcolor) + 530: 7(float) CompositeExtract 529 0 + 531: 7(float) CompositeExtract 529 1 + 532: 7(float) CompositeExtract 529 2 + 533: 17(fvec4) CompositeConstruct 530 531 532 103 + ReturnValue 533 + 499: Label + 535: 17(fvec4) Load 476(albedo) + 536: 67(fvec3) VectorShuffle 535 535 0 1 2 + 538: 67(fvec3) VectorTimesScalar 536 537 + Store 508(fragcolor) 538 + 543: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 540 539(N) 45 + 544: 67(fvec3) Load 458(normal) + 545: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544 + Store 539(N) 545 + 549: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 547 546(i) 45 + Store 546(i) 280 + Branch 550 + 550: Label + LoopMerge 552 553 None + Branch 554 + 554: Label + 555: 208(int) Load 546(i) + 557: 127(bool) SLessThan 555 360 + BranchConditional 557 551 552 + 551: Label + 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 559 558(L) 45 + 563: 208(int) Load 546(i) + 565: 564(ptr) AccessChain 410 280 286 563 280 + 566: 17(fvec4) Load 565 + 567: 67(fvec3) VectorShuffle 566 566 0 1 2 + 568: 67(fvec3) Load 436(fragPos) + 569: 67(fvec3) FSub 567 568 + Store 558(L) 569 + 573: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 571 570(dist) 45 + 574: 67(fvec3) Load 558(L) + 575: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 574 + Store 570(dist) 575 + 576: 67(fvec3) Load 558(L) + 577: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 576 + Store 558(L) 577 + 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 579 578(V) 45 + 583: 564(ptr) AccessChain 410 280 280 + 584: 17(fvec4) Load 583 + 585: 67(fvec3) VectorShuffle 584 584 0 1 2 + 586: 67(fvec3) Load 436(fragPos) + 587: 67(fvec3) FSub 585 586 + Store 578(V) 587 + 588: 67(fvec3) Load 578(V) + 589: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 588 + Store 578(V) 589 + 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 591 590(lightCosInnerAngle) 45 + Store 590(lightCosInnerAngle) 595 + 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 597 596(lightCosOuterAngle) 45 + Store 596(lightCosOuterAngle) 601 + 606: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 603 602(lightRange) 45 + Store 602(lightRange) 607 + 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(dir) 45 + 613: 208(int) Load 546(i) + 614: 564(ptr) AccessChain 410 280 286 613 280 + 615: 17(fvec4) Load 614 + 616: 67(fvec3) VectorShuffle 615 615 0 1 2 + 617: 208(int) Load 546(i) + 618: 564(ptr) AccessChain 410 280 286 617 286 + 619: 17(fvec4) Load 618 + 620: 67(fvec3) VectorShuffle 619 619 0 1 2 + 621: 67(fvec3) FSub 616 620 + 622: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 621 + Store 608(dir) 622 + 627: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 624 623(cosDir) 45 + 628: 67(fvec3) Load 558(L) + 629: 67(fvec3) Load 608(dir) + 630: 7(float) Dot 628 629 + Store 623(cosDir) 630 + 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 632 631(spotEffect) 45 + 636: 7(float) Load 596(lightCosOuterAngle) + 637: 7(float) Load 590(lightCosInnerAngle) + 638: 7(float) Load 623(cosDir) + 639: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 636 637 638 + Store 631(spotEffect) 639 + 644: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 641 640(heightAttenuation) 45 + 645: 7(float) Load 602(lightRange) + 646: 7(float) Load 570(dist) + 647: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 645 181 646 + Store 640(heightAttenuation) 647 + 652: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 649 648(NdotL) 45 + 653: 67(fvec3) Load 539(N) + 654: 67(fvec3) Load 558(L) + 655: 7(float) Dot 653 654 + 656: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 655 + Store 648(NdotL) 656 + 661: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 658 657(diff) 45 + 662: 7(float) Load 648(NdotL) + 663: 67(fvec3) CompositeConstruct 662 662 662 + Store 657(diff) 663 + 668: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 665 664(R) 45 + 669: 67(fvec3) Load 558(L) + 670: 67(fvec3) FNegate 669 + 671: 67(fvec3) Load 539(N) + 672: 67(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 670 671 + Store 664(R) 672 + 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 674 673(NdotR) 45 + 678: 67(fvec3) Load 664(R) + 679: 67(fvec3) Load 578(V) + 680: 7(float) Dot 678 679 + 681: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 680 + Store 673(NdotR) 681 + 686: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 683 682(spec) 45 + 687: 7(float) Load 673(NdotR) + 689: 7(float) ExtInst 2(GLSL.std.450) 26(Pow) 687 688 + 690: 21(ptr) AccessChain 476(albedo) 16 + 691: 7(float) Load 690 + 692: 7(float) FMul 689 691 + 694: 7(float) FMul 692 693 + 695: 67(fvec3) CompositeConstruct 694 694 694 + Store 682(spec) 695 + 696: 67(fvec3) Load 657(diff) + 697: 67(fvec3) Load 682(spec) + 698: 67(fvec3) FAdd 696 697 + 699: 7(float) Load 631(spotEffect) + 700: 67(fvec3) VectorTimesScalar 698 699 + 701: 7(float) Load 640(heightAttenuation) + 702: 67(fvec3) VectorTimesScalar 700 701 + 703: 208(int) Load 546(i) + 705: 564(ptr) AccessChain 410 280 286 703 704 + 706: 17(fvec4) Load 705 + 707: 67(fvec3) VectorShuffle 706 706 0 1 2 + 708: 67(fvec3) FMul 702 707 + 709: 17(fvec4) Load 476(albedo) + 710: 67(fvec3) VectorShuffle 709 709 0 1 2 + 711: 67(fvec3) FMul 708 710 + 712: 67(fvec3) Load 508(fragcolor) + 713: 67(fvec3) FAdd 712 711 + Store 508(fragcolor) 713 + Branch 553 + 553: Label + 714: 208(int) Load 546(i) + 715: 208(int) IAdd 714 286 + Store 546(i) 715 + Branch 550 + 552: Label + 716: 493(ptr) AccessChain 410 280 704 + 717: 208(int) Load 716 + 719: 127(bool) SGreaterThan 717 280 + SelectionMerge 721 None + BranchConditional 719 720 721 + 720: Label + 723: 67(fvec3) Load 508(fragcolor) + Store 722(param) 723 + 725: 67(fvec3) Load 436(fragPos) + Store 724(param) 725 + 726: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 722(param) 724(param) + Store 508(fragcolor) 726 + Branch 721 + 721: Label + 727: 67(fvec3) Load 508(fragcolor) + 728: 7(float) CompositeExtract 727 0 + 729: 7(float) CompositeExtract 727 1 + 730: 7(float) CompositeExtract 727 2 + 731: 17(fvec4) CompositeConstruct 728 729 730 103 + ReturnValue 731 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index f629f2ce1a..1eb9f83b84 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -2,7 +2,7 @@ spv.debuginfo.hlsl.geom Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 323 +// Id's are bound by 322 Capability Geometry Capability MultiViewport @@ -10,7 +10,7 @@ Validation failed 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 5 "main" 228 235 240 246 251 256 261 272 279 284 308 311 + EntryPoint Geometry 5 "main" 228 235 240 246 251 256 261 271 278 283 307 310 ExecutionMode 5 Triangles ExecutionMode 5 Invocations 2 ExecutionMode 5 OutputTriangleStrip @@ -84,19 +84,19 @@ Validation failed Name 251 "outStream.Color" Name 256 "outStream.ViewVec" Name 261 "outStream.LightVec" - Name 269 "input" - Name 272 "input.Pos" - Name 279 "input.Normal" - Name 284 "input.Color" - Name 306 "InvocationID" - Name 308 "InvocationID" + Name 268 "input" + Name 271 "input.Pos" + Name 278 "input.Normal" + Name 283 "input.Color" + Name 305 "InvocationID" + Name 307 "InvocationID" + Name 309 "PrimitiveID" Name 310 "PrimitiveID" - Name 311 "PrimitiveID" - Name 313 "outStream" - Name 314 "param" + Name 312 "outStream" + Name 313 "param" + Name 315 "param" Name 316 "param" - Name 317 "param" - Name 319 "param" + Name 318 "param" Decorate 124 ArrayStride 64 Decorate 126 ArrayStride 64 MemberDecorate 128(UBO) 0 RowMajor @@ -117,11 +117,11 @@ Validation failed Decorate 251(outStream.Color) Location 1 Decorate 256(outStream.ViewVec) Location 2 Decorate 261(outStream.LightVec) Location 3 - Decorate 272(input.Pos) BuiltIn Position - Decorate 279(input.Normal) Location 0 - Decorate 284(input.Color) Location 1 - Decorate 308(InvocationID) BuiltIn InvocationId - Decorate 311(PrimitiveID) BuiltIn PrimitiveId + Decorate 271(input.Pos) BuiltIn Position + Decorate 278(input.Normal) Location 0 + Decorate 283(input.Color) Location 1 + Decorate 307(InvocationID) BuiltIn InvocationId + Decorate 310(PrimitiveID) BuiltIn PrimitiveId 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 @@ -182,16 +182,16 @@ Validation failed 89: TypePointer Function 86(int) 93: 10(int) Constant 57 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 92 88 25 93 15 68 18 - 94: 86(int) Constant 0 + 95: 86(int) Constant 0 102: 86(int) Constant 3 103: TypeBool 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 104 13 78 15 110: 10(int) Constant 59 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 56 25 110 15 68 18 - 111: 7(float) Constant 0 - 112: 17(fvec4) ConstantComposite 111 111 111 111 - 113: 20(fvec3) ConstantComposite 111 111 111 - 114:42(GSOutput) ConstantComposite 112 15 15 113 113 113 113 + 112: 7(float) Constant 0 + 113: 17(fvec4) ConstantComposite 112 112 112 112 + 114: 20(fvec3) ConstantComposite 112 112 112 + 115:42(GSOutput) ConstantComposite 113 15 15 114 114 114 114 117: 86(int) Constant 1 118: TypePointer Function 20(fvec3) 121: TypeMatrix 17(fvec4) 4 @@ -233,7 +233,7 @@ Validation failed 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 19 25 186 15 68 18 196: 10(int) Constant 66 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 195 21 25 196 15 68 18 - 197: TypePointer Uniform 17(fvec4) + 198: TypePointer Uniform 17(fvec4) 206: 86(int) Constant 6 212: 86(int) Constant 5 227: TypePointer Output 17(fvec4) @@ -254,77 +254,77 @@ Validation failed 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 258 21 25 231 15 37 258 256(outStream.ViewVec) 152 261(outStream.LightVec): 245(ptr) Variable Output 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 21 25 231 15 37 263 261(outStream.LightVec) 152 - 270: TypeArray 17(fvec4) 16 - 271: TypePointer Input 270 - 272(input.Pos): 271(ptr) Variable Input - 273: TypePointer Input 17(fvec4) - 277: TypeArray 20(fvec3) 16 - 278: TypePointer Input 277 -279(input.Normal): 278(ptr) Variable Input - 280: TypePointer Input 20(fvec3) -284(input.Color): 278(ptr) Variable Input - 307: TypePointer Input 10(int) -308(InvocationID): 307(ptr) Variable Input -311(PrimitiveID): 307(ptr) Variable Input + 269: TypeArray 17(fvec4) 16 + 270: TypePointer Input 269 + 271(input.Pos): 270(ptr) Variable Input + 272: TypePointer Input 17(fvec4) + 276: TypeArray 20(fvec3) 16 + 277: TypePointer Input 276 +278(input.Normal): 277(ptr) Variable Input + 279: TypePointer Input 20(fvec3) +283(input.Color): 277(ptr) Variable Input + 306: TypePointer Input 10(int) +307(InvocationID): 306(ptr) Variable Input +310(PrimitiveID): 306(ptr) Variable Input 5(main): 3 Function None 4 6: Label - 269(input): 41(ptr) Variable Function -306(InvocationID): 59(ptr) Variable Function -310(PrimitiveID): 59(ptr) Variable Function - 313(outStream): 58(ptr) Variable Function - 314(param): 41(ptr) Variable Function - 316(param): 58(ptr) Variable Function - 317(param): 59(ptr) Variable Function - 319(param): 59(ptr) Variable Function - 274: 273(ptr) AccessChain 272(input.Pos) 94 - 275: 17(fvec4) Load 274 - 276: 174(ptr) AccessChain 269(input) 94 94 - Store 276 275 - 281: 280(ptr) AccessChain 279(input.Normal) 94 - 282: 20(fvec3) Load 281 - 283: 118(ptr) AccessChain 269(input) 94 117 - Store 283 282 - 285: 280(ptr) AccessChain 284(input.Color) 94 - 286: 20(fvec3) Load 285 - 287: 118(ptr) AccessChain 269(input) 94 170 - Store 287 286 - 288: 273(ptr) AccessChain 272(input.Pos) 117 - 289: 17(fvec4) Load 288 - 290: 174(ptr) AccessChain 269(input) 117 94 - Store 290 289 - 291: 280(ptr) AccessChain 279(input.Normal) 117 - 292: 20(fvec3) Load 291 - 293: 118(ptr) AccessChain 269(input) 117 117 - Store 293 292 - 294: 280(ptr) AccessChain 284(input.Color) 117 - 295: 20(fvec3) Load 294 - 296: 118(ptr) AccessChain 269(input) 117 170 - Store 296 295 - 297: 273(ptr) AccessChain 272(input.Pos) 170 - 298: 17(fvec4) Load 297 - 299: 174(ptr) AccessChain 269(input) 170 94 - Store 299 298 - 300: 280(ptr) AccessChain 279(input.Normal) 170 - 301: 20(fvec3) Load 300 - 302: 118(ptr) AccessChain 269(input) 170 117 - Store 302 301 - 303: 280(ptr) AccessChain 284(input.Color) 170 - 304: 20(fvec3) Load 303 - 305: 118(ptr) AccessChain 269(input) 170 170 - Store 305 304 - 309: 10(int) Load 308(InvocationID) - Store 306(InvocationID) 309 - 312: 10(int) Load 311(PrimitiveID) - Store 310(PrimitiveID) 312 - 315: 39 Load 269(input) - Store 314(param) 315 - 318: 10(int) Load 306(InvocationID) - Store 317(param) 318 - 320: 10(int) Load 310(PrimitiveID) - Store 319(param) 320 - 321: 3 FunctionCall 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 314(param) 316(param) 317(param) 319(param) - 322:42(GSOutput) Load 316(param) - Store 313(outStream) 322 + 268(input): 41(ptr) Variable Function +305(InvocationID): 59(ptr) Variable Function +309(PrimitiveID): 59(ptr) Variable Function + 312(outStream): 58(ptr) Variable Function + 313(param): 41(ptr) Variable Function + 315(param): 58(ptr) Variable Function + 316(param): 59(ptr) Variable Function + 318(param): 59(ptr) Variable Function + 273: 272(ptr) AccessChain 271(input.Pos) 95 + 274: 17(fvec4) Load 273 + 275: 174(ptr) AccessChain 268(input) 95 95 + Store 275 274 + 280: 279(ptr) AccessChain 278(input.Normal) 95 + 281: 20(fvec3) Load 280 + 282: 118(ptr) AccessChain 268(input) 95 117 + Store 282 281 + 284: 279(ptr) AccessChain 283(input.Color) 95 + 285: 20(fvec3) Load 284 + 286: 118(ptr) AccessChain 268(input) 95 170 + Store 286 285 + 287: 272(ptr) AccessChain 271(input.Pos) 117 + 288: 17(fvec4) Load 287 + 289: 174(ptr) AccessChain 268(input) 117 95 + Store 289 288 + 290: 279(ptr) AccessChain 278(input.Normal) 117 + 291: 20(fvec3) Load 290 + 292: 118(ptr) AccessChain 268(input) 117 117 + Store 292 291 + 293: 279(ptr) AccessChain 283(input.Color) 117 + 294: 20(fvec3) Load 293 + 295: 118(ptr) AccessChain 268(input) 117 170 + Store 295 294 + 296: 272(ptr) AccessChain 271(input.Pos) 170 + 297: 17(fvec4) Load 296 + 298: 174(ptr) AccessChain 268(input) 170 95 + Store 298 297 + 299: 279(ptr) AccessChain 278(input.Normal) 170 + 300: 20(fvec3) Load 299 + 301: 118(ptr) AccessChain 268(input) 170 117 + Store 301 300 + 302: 279(ptr) AccessChain 283(input.Color) 170 + 303: 20(fvec3) Load 302 + 304: 118(ptr) AccessChain 268(input) 170 170 + Store 304 303 + 308: 10(int) Load 307(InvocationID) + Store 305(InvocationID) 308 + 311: 10(int) Load 310(PrimitiveID) + Store 309(PrimitiveID) 311 + 314: 39 Load 268(input) + Store 313(param) 314 + 317: 10(int) Load 305(InvocationID) + Store 316(param) 317 + 319: 10(int) Load 309(PrimitiveID) + Store 318(param) 319 + 320: 3 FunctionCall 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 313(param) 315(param) 316(param) 318(param) + 321:42(GSOutput) Load 315(param) + Store 312(outStream) 321 Return FunctionEnd 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 3 Function None 60 @@ -345,8 +345,8 @@ Validation failed 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 64(InvocationID) 75 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 65(PrimitiveID) 75 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 68 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) - Store 90(i) 94 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 91 94 75 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 91 90(i) 75 + Store 90(i) 95 Branch 96 96: Label LoopMerge 98 99 None @@ -356,13 +356,13 @@ Validation failed 106: 103(bool) SLessThan 101 102 BranchConditional 106 97 98 97: Label - Store 107(output) 114 - 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 108 114 75 + 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 107(output) 75 + Store 107(output) 115 116: 86(int) Load 90(i) 119: 118(ptr) AccessChain 62(input) 116 117 120: 20(fvec3) Load 119 153: 10(int) Load 64(InvocationID) - 155: 154(ptr) AccessChain 150 94 117 153 + 155: 154(ptr) AccessChain 150 95 117 153 156: 121 Load 155 159: 17(fvec4) CompositeExtract 156 0 160: 20(fvec3) VectorShuffle 159 159 0 1 2 @@ -379,27 +379,27 @@ Validation failed 172: 20(fvec3) Load 171 173: 118(ptr) AccessChain 107(output) 168 Store 173 172 - 179: 86(int) Load 90(i) - 180: 174(ptr) AccessChain 62(input) 179 94 - 181: 17(fvec4) Load 180 - Store 175(pos) 181 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 176 181 75 - 187: 17(fvec4) Load 175(pos) - 188: 10(int) Load 64(InvocationID) - 189: 154(ptr) AccessChain 150 94 117 188 - 190: 121 Load 189 - 191: 17(fvec4) VectorTimesMatrix 187 190 - Store 183(worldPos) 191 - 192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 184 191 75 - 198: 197(ptr) AccessChain 150 94 170 - 199: 17(fvec4) Load 198 - 200: 10(int) Load 64(InvocationID) - 201: 154(ptr) AccessChain 150 94 117 200 - 202: 121 Load 201 - 203: 17(fvec4) VectorTimesMatrix 199 202 - 204: 20(fvec3) VectorShuffle 203 203 0 1 2 - Store 193(lPos) 204 - 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 194 204 75 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 176 175(pos) 75 + 180: 86(int) Load 90(i) + 181: 174(ptr) AccessChain 62(input) 180 95 + 182: 17(fvec4) Load 181 + Store 175(pos) 182 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 184 183(worldPos) 75 + 188: 17(fvec4) Load 175(pos) + 189: 10(int) Load 64(InvocationID) + 190: 154(ptr) AccessChain 150 95 117 189 + 191: 121 Load 190 + 192: 17(fvec4) VectorTimesMatrix 188 191 + Store 183(worldPos) 192 + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 194 193(lPos) 75 + 199: 198(ptr) AccessChain 150 95 170 + 200: 17(fvec4) Load 199 + 201: 10(int) Load 64(InvocationID) + 202: 154(ptr) AccessChain 150 95 117 201 + 203: 121 Load 202 + 204: 17(fvec4) VectorTimesMatrix 200 203 + 205: 20(fvec3) VectorShuffle 204 204 0 1 2 + Store 193(lPos) 205 207: 20(fvec3) Load 193(lPos) 208: 17(fvec4) Load 183(worldPos) 209: 20(fvec3) VectorShuffle 208 208 0 1 2 @@ -413,10 +413,10 @@ Validation failed Store 216 215 217: 17(fvec4) Load 183(worldPos) 218: 10(int) Load 64(InvocationID) - 219: 154(ptr) AccessChain 150 94 94 218 + 219: 154(ptr) AccessChain 150 95 95 218 220: 121 Load 219 221: 17(fvec4) VectorTimesMatrix 217 220 - 222: 174(ptr) AccessChain 107(output) 94 + 222: 174(ptr) AccessChain 107(output) 95 Store 222 221 223: 10(int) Load 64(InvocationID) 224: 59(ptr) AccessChain 107(output) 117 @@ -424,7 +424,7 @@ Validation failed 225: 10(int) Load 65(PrimitiveID) 226: 59(ptr) AccessChain 107(output) 170 Store 226 225 - 232: 174(ptr) AccessChain 107(output) 94 + 232: 174(ptr) AccessChain 107(output) 95 233: 17(fvec4) Load 232 Store 228(outStream.Pos) 233 238: 59(ptr) AccessChain 107(output) 117 @@ -451,7 +451,6 @@ Validation failed 266: 86(int) Load 90(i) 267: 86(int) IAdd 266 117 Store 90(i) 267 - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 91 267 75 Branch 96 98: Label EndPrimitive diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index c3f063117a..5d0ccc6797 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -4,14 +4,14 @@ WARNING: 0:158: '' : attribute does not apply to entry point Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 596 +// Id's are bound by 593 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 5 "main" 488 495 502 536 545 552 559 574 589 + EntryPoint TessellationControl 5 "main" 485 492 499 533 542 549 556 571 586 ExecutionMode 5 OutputVertices 4 ExecutionMode 5 Quads ExecutionMode 5 SpacingEqual @@ -40,27 +40,27 @@ Validation failed 139: String "midPoint" 150: String "radius" 160: String "v0" - 170: String "modelview" - 175: String "lightPos" - 179: String "frustumPlanes" - 182: String "tessellatedEdgeSize" - 186: String "viewportDim" - 190: String "UBO" - 193: String "ubo" - 201: String "int" + 171: String "modelview" + 176: String "lightPos" + 180: String "frustumPlanes" + 183: String "tessellatedEdgeSize" + 187: String "viewportDim" + 191: String "UBO" + 194: String "ubo" + 202: String "int" 212: String "clip0" 229: String "clip1" - 294: String "pos" - 300: String "type.2d.image" - 302: String "@type.2d.image" - 307: String "textureHeight" - 311: String "type.sampler" - 312: String "@type.sampler" - 316: String "samplerHeight" - 320: String "type.sampled.image" - 321: String "@type.sampled.image" - 337: String "i" - 374: String "output" + 292: String "pos" + 298: String "type.2d.image" + 300: String "@type.2d.image" + 305: String "textureHeight" + 309: String "type.sampler" + 310: String "@type.sampler" + 314: String "samplerHeight" + 318: String "type.sampled.image" + 319: String "@type.sampled.image" + 335: String "i" + 371: String "output" Name 5 "main" Name 25 "screenSpaceTessFactor(vf4;vf4;" Name 23 "p0" @@ -87,84 +87,84 @@ Validation failed Name 137 "midPoint" Name 148 "radius" Name 158 "v0" - Name 168 "UBO" - MemberName 168(UBO) 0 "projection" - MemberName 168(UBO) 1 "modelview" - MemberName 168(UBO) 2 "lightPos" - MemberName 168(UBO) 3 "frustumPlanes" - MemberName 168(UBO) 4 "displacementFactor" - MemberName 168(UBO) 5 "tessellationFactor" - MemberName 168(UBO) 6 "viewportDim" - MemberName 168(UBO) 7 "tessellatedEdgeSize" - Name 191 "ubo" - MemberName 191(ubo) 0 "ubo" - Name 197 "" + Name 169 "UBO" + MemberName 169(UBO) 0 "projection" + MemberName 169(UBO) 1 "modelview" + MemberName 169(UBO) 2 "lightPos" + MemberName 169(UBO) 3 "frustumPlanes" + MemberName 169(UBO) 4 "displacementFactor" + MemberName 169(UBO) 5 "tessellationFactor" + MemberName 169(UBO) 6 "viewportDim" + MemberName 169(UBO) 7 "tessellatedEdgeSize" + Name 192 "ubo" + MemberName 192(ubo) 0 "ubo" + Name 198 "" Name 210 "clip0" Name 227 "clip1" - Name 292 "pos" - Name 305 "textureHeight" - Name 314 "samplerHeight" - Name 335 "i" - Name 372 "output" + Name 290 "pos" + Name 303 "textureHeight" + Name 312 "samplerHeight" + Name 333 "i" + Name 369 "output" + Name 378 "param" Name 381 "param" - Name 384 "param" + Name 403 "param" Name 406 "param" - Name 409 "param" + Name 411 "param" Name 414 "param" - Name 417 "param" + Name 419 "param" Name 422 "param" - Name 425 "param" + Name 427 "param" Name 430 "param" - Name 433 "param" - Name 462 "output" - Name 485 "patch" - Name 488 "patch.Pos" - Name 495 "patch.Normal" - Name 502 "patch.UV" - Name 534 "InvocationID" - Name 536 "InvocationID" - Name 538 "flattenTemp" - Name 539 "param" - Name 541 "param" - Name 545 "@entryPointOutput.Pos" - Name 552 "@entryPointOutput.Normal" - Name 559 "@entryPointOutput.UV" - Name 569 "@patchConstantResult" - Name 570 "param" - Name 574 "@patchConstantOutput.TessLevelOuter" - Name 589 "@patchConstantOutput.TessLevelInner" - Decorate 166 ArrayStride 16 - MemberDecorate 168(UBO) 0 RowMajor - MemberDecorate 168(UBO) 0 Offset 0 - MemberDecorate 168(UBO) 0 MatrixStride 16 - MemberDecorate 168(UBO) 1 RowMajor - MemberDecorate 168(UBO) 1 Offset 64 - MemberDecorate 168(UBO) 1 MatrixStride 16 - MemberDecorate 168(UBO) 2 Offset 128 - MemberDecorate 168(UBO) 3 Offset 144 - MemberDecorate 168(UBO) 4 Offset 240 - MemberDecorate 168(UBO) 5 Offset 244 - MemberDecorate 168(UBO) 6 Offset 248 - MemberDecorate 168(UBO) 7 Offset 256 - MemberDecorate 191(ubo) 0 Offset 0 - Decorate 191(ubo) Block - Decorate 197 DescriptorSet 0 - Decorate 197 Binding 0 - Decorate 305(textureHeight) DescriptorSet 0 - Decorate 305(textureHeight) Binding 1 - Decorate 314(samplerHeight) DescriptorSet 0 - Decorate 314(samplerHeight) Binding 1 - Decorate 488(patch.Pos) BuiltIn Position - Decorate 495(patch.Normal) Location 0 - Decorate 502(patch.UV) Location 1 - Decorate 536(InvocationID) BuiltIn InvocationId - Decorate 545(@entryPointOutput.Pos) BuiltIn Position - Decorate 552(@entryPointOutput.Normal) Location 0 - Decorate 559(@entryPointOutput.UV) Location 1 - Decorate 574(@patchConstantOutput.TessLevelOuter) Patch - Decorate 574(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 589(@patchConstantOutput.TessLevelInner) Patch - Decorate 589(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + Name 459 "output" + Name 482 "patch" + Name 485 "patch.Pos" + Name 492 "patch.Normal" + Name 499 "patch.UV" + Name 531 "InvocationID" + Name 533 "InvocationID" + Name 535 "flattenTemp" + Name 536 "param" + Name 538 "param" + Name 542 "@entryPointOutput.Pos" + Name 549 "@entryPointOutput.Normal" + Name 556 "@entryPointOutput.UV" + Name 566 "@patchConstantResult" + Name 567 "param" + Name 571 "@patchConstantOutput.TessLevelOuter" + Name 586 "@patchConstantOutput.TessLevelInner" + Decorate 167 ArrayStride 16 + MemberDecorate 169(UBO) 0 RowMajor + MemberDecorate 169(UBO) 0 Offset 0 + MemberDecorate 169(UBO) 0 MatrixStride 16 + MemberDecorate 169(UBO) 1 RowMajor + MemberDecorate 169(UBO) 1 Offset 64 + MemberDecorate 169(UBO) 1 MatrixStride 16 + MemberDecorate 169(UBO) 2 Offset 128 + MemberDecorate 169(UBO) 3 Offset 144 + MemberDecorate 169(UBO) 4 Offset 240 + MemberDecorate 169(UBO) 5 Offset 244 + MemberDecorate 169(UBO) 6 Offset 248 + MemberDecorate 169(UBO) 7 Offset 256 + MemberDecorate 192(ubo) 0 Offset 0 + Decorate 192(ubo) Block + Decorate 198 DescriptorSet 0 + Decorate 198 Binding 0 + Decorate 303(textureHeight) DescriptorSet 0 + Decorate 303(textureHeight) Binding 1 + Decorate 312(samplerHeight) DescriptorSet 0 + Decorate 312(samplerHeight) Binding 1 + Decorate 485(patch.Pos) BuiltIn Position + Decorate 492(patch.Normal) Location 0 + Decorate 499(patch.UV) Location 1 + Decorate 533(InvocationID) BuiltIn InvocationId + Decorate 542(@entryPointOutput.Pos) BuiltIn Position + Decorate 549(@entryPointOutput.Normal) Location 0 + Decorate 556(@entryPointOutput.UV) Location 1 + Decorate 571(@patchConstantOutput.TessLevelOuter) Patch + Decorate 571(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 586(@patchConstantOutput.TessLevelInner) Patch + Decorate 586(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 @@ -247,250 +247,250 @@ Validation failed 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 134 11 28 15 15 127 18 42 140: 10(int) Constant 67 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 19 28 140 15 27 18 - 141: 7(float) Constant 1056964608 + 142: 7(float) Constant 1056964608 147: TypePointer Function 7(float) 151: 10(int) Constant 69 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 150 8 28 151 15 27 18 - 155: 7(float) Constant 1073741824 + 156: 7(float) Constant 1073741824 161: 10(int) Constant 72 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 160 19 28 161 15 27 18 - 163: TypeMatrix 17(fvec4) 4 - 165: 47(bool) ConstantTrue - 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 165 - 166: TypeArray 17(fvec4) 14 - 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 19 14 - 168(UBO): TypeStruct 163 163 17(fvec4) 166 7(float) 7(float) 44(fvec2) 7(float) - 171: 10(int) Constant 29 - 172: 10(int) Constant 20 - 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 164 28 171 172 15 15 16 - 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 164 28 171 172 15 15 16 - 176: 10(int) Constant 30 - 177: 10(int) Constant 17 - 174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 175 19 28 176 177 15 15 16 - 180: 10(int) Constant 22 - 178: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 179 167 28 79 180 15 15 16 - 183: 10(int) Constant 27 - 181: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16 - 187: 10(int) Constant 34 - 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 186 45 28 187 172 15 15 16 - 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 182 8 28 75 183 15 15 16 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 190 31 28 161 15 30 190 15 16 169 173 174 178 181 184 185 188 - 191(ubo): TypeStruct 168(UBO) - 194: 10(int) Constant 37 - 192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 193 189 28 194 194 15 15 16 - 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 193 31 28 161 15 30 193 15 16 192 - 196: TypePointer Uniform 191(ubo) - 197: 196(ptr) Variable Uniform - 199: 10(int) Constant 8 - 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 29 195 28 161 15 30 29 197 199 - 200: TypeInt 32 1 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 201 13 18 15 - 203: 200(int) Constant 0 - 204: 200(int) Constant 1 - 205: TypePointer Uniform 163 + 164: TypeMatrix 17(fvec4) 4 + 166: 47(bool) ConstantTrue + 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 166 + 167: TypeArray 17(fvec4) 14 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 19 14 + 169(UBO): TypeStruct 164 164 17(fvec4) 167 7(float) 7(float) 44(fvec2) 7(float) + 172: 10(int) Constant 29 + 173: 10(int) Constant 20 + 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 171 165 28 172 173 15 15 16 + 174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 171 165 28 172 173 15 15 16 + 177: 10(int) Constant 30 + 178: 10(int) Constant 17 + 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 176 19 28 177 178 15 15 16 + 181: 10(int) Constant 22 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 168 28 79 181 15 15 16 + 184: 10(int) Constant 27 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16 + 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16 + 188: 10(int) Constant 34 + 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 187 45 28 188 173 15 15 16 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16 + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 191 31 28 161 15 30 191 15 16 170 174 175 179 182 185 186 189 + 192(ubo): TypeStruct 169(UBO) + 195: 10(int) Constant 37 + 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 194 190 28 195 195 15 15 16 + 196: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 194 31 28 161 15 30 194 15 16 193 + 197: TypePointer Uniform 192(ubo) + 198: 197(ptr) Variable Uniform + 200: 10(int) Constant 8 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 29 196 28 161 15 30 29 198 200 + 201: TypeInt 32 1 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 202 13 18 15 + 204: 201(int) Constant 0 + 205: 201(int) Constant 1 + 206: TypePointer Uniform 164 213: 10(int) Constant 75 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 212 19 28 213 15 27 18 - 216: 7(float) Constant 0 - 217: 66(fvec3) ConstantComposite 216 216 216 + 217: 7(float) Constant 0 + 218: 66(fvec3) ConstantComposite 217 217 217 230: 10(int) Constant 76 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 19 28 230 15 27 18 - 254: 200(int) Constant 6 - 255: TypePointer Uniform 44(fvec2) - 277: 200(int) Constant 7 - 278: TypePointer Uniform 7(float) - 282: 200(int) Constant 5 - 286: 7(float) Constant 1065353216 - 287: 7(float) Constant 1115684864 - 295: 10(int) Constant 98 - 293: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 294 19 28 295 15 56 18 - 298: TypeImage 7(float) 2D sampled format:Unknown - 301: 10(int) Constant 99 - 303: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 300 15 28 301 15 30 302 303 16 - 304: TypePointer UniformConstant 298 -305(textureHeight): 304(ptr) Variable UniformConstant - 306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 307 299 28 301 15 30 307 305(textureHeight) 199 - 309: TypeSampler - 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 311 31 28 301 15 30 312 303 16 - 313: TypePointer UniformConstant 309 -314(samplerHeight): 313(ptr) Variable UniformConstant - 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 316 310 28 301 15 30 316 314(samplerHeight) 199 - 318: TypeSampledImage 298 - 319: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 320 15 28 301 15 30 321 303 16 - 326: 200(int) Constant 4 - 334: TypePointer Function 200(int) - 338: 10(int) Constant 102 - 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 337 202 28 338 15 56 18 - 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 349: 200(int) Constant 3 - 351: TypePointer Uniform 17(fvec4) - 355: 7(float) Constant 1090519040 - 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 362: 47(bool) ConstantFalse - 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 371: TypePointer Function 89(ConstantsHSOutput) - 375: 10(int) Constant 113 - 373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 374 97 28 375 15 104 18 - 376: 85 ConstantComposite 216 216 216 216 - 377: 87 ConstantComposite 216 216 - 378:89(ConstantsHSOutput) ConstantComposite 376 377 - 380: 200(int) Constant 2 - 388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 402: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 461: TypePointer Function 112(HSOutput) - 464: 10(int) Constant 159 - 463: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 374 119 28 464 15 127 18 - 465: 17(fvec4) ConstantComposite 216 216 216 216 - 466: 44(fvec2) ConstantComposite 216 216 - 467:112(HSOutput) ConstantComposite 465 217 466 - 474: TypePointer Function 66(fvec3) - 486: TypeArray 17(fvec4) 18 - 487: TypePointer Input 486 - 488(patch.Pos): 487(ptr) Variable Input - 489: TypePointer Input 17(fvec4) - 493: TypeArray 66(fvec3) 18 - 494: TypePointer Input 493 -495(patch.Normal): 494(ptr) Variable Input - 496: TypePointer Input 66(fvec3) - 500: TypeArray 44(fvec2) 18 - 501: TypePointer Input 500 - 502(patch.UV): 501(ptr) Variable Input - 503: TypePointer Input 44(fvec2) - 535: TypePointer Input 10(int) -536(InvocationID): 535(ptr) Variable Input - 544: TypePointer Output 486 -545(@entryPointOutput.Pos): 544(ptr) Variable Output - 549: TypePointer Output 17(fvec4) - 551: TypePointer Output 493 -552(@entryPointOutput.Normal): 551(ptr) Variable Output - 556: TypePointer Output 66(fvec3) - 558: TypePointer Output 500 -559(@entryPointOutput.UV): 558(ptr) Variable Output - 563: TypePointer Output 44(fvec2) - 573: TypePointer Output 85 -574(@patchConstantOutput.TessLevelOuter): 573(ptr) Variable Output - 577: TypePointer Output 7(float) - 588: TypePointer Output 87 -589(@patchConstantOutput.TessLevelInner): 588(ptr) Variable Output + 252: 201(int) Constant 6 + 253: TypePointer Uniform 44(fvec2) + 275: 201(int) Constant 7 + 276: TypePointer Uniform 7(float) + 280: 201(int) Constant 5 + 284: 7(float) Constant 1065353216 + 285: 7(float) Constant 1115684864 + 293: 10(int) Constant 98 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 292 19 28 293 15 56 18 + 296: TypeImage 7(float) 2D sampled format:Unknown + 299: 10(int) Constant 99 + 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) + 297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 298 15 28 299 15 30 300 301 16 + 302: TypePointer UniformConstant 296 +303(textureHeight): 302(ptr) Variable UniformConstant + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 297 28 299 15 30 305 303(textureHeight) 200 + 307: TypeSampler + 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 309 31 28 299 15 30 310 301 16 + 311: TypePointer UniformConstant 307 +312(samplerHeight): 311(ptr) Variable UniformConstant + 313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 314 308 28 299 15 30 314 312(samplerHeight) 200 + 316: TypeSampledImage 296 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 318 15 28 299 15 30 319 301 16 + 324: 201(int) Constant 4 + 332: TypePointer Function 201(int) + 336: 10(int) Constant 102 + 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 335 203 28 336 15 56 18 + 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 347: 201(int) Constant 3 + 349: TypePointer Uniform 17(fvec4) + 353: 7(float) Constant 1090519040 + 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 360: 47(bool) ConstantFalse + 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 368: TypePointer Function 89(ConstantsHSOutput) + 372: 10(int) Constant 113 + 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 371 97 28 372 15 104 18 + 374: 85 ConstantComposite 217 217 217 217 + 375: 87 ConstantComposite 217 217 + 376:89(ConstantsHSOutput) ConstantComposite 374 375 + 377: 201(int) Constant 2 + 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 458: TypePointer Function 112(HSOutput) + 461: 10(int) Constant 159 + 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 371 119 28 461 15 127 18 + 463: 17(fvec4) ConstantComposite 217 217 217 217 + 464: 44(fvec2) ConstantComposite 217 217 + 465:112(HSOutput) ConstantComposite 463 218 464 + 471: TypePointer Function 66(fvec3) + 483: TypeArray 17(fvec4) 18 + 484: TypePointer Input 483 + 485(patch.Pos): 484(ptr) Variable Input + 486: TypePointer Input 17(fvec4) + 490: TypeArray 66(fvec3) 18 + 491: TypePointer Input 490 +492(patch.Normal): 491(ptr) Variable Input + 493: TypePointer Input 66(fvec3) + 497: TypeArray 44(fvec2) 18 + 498: TypePointer Input 497 + 499(patch.UV): 498(ptr) Variable Input + 500: TypePointer Input 44(fvec2) + 532: TypePointer Input 10(int) +533(InvocationID): 532(ptr) Variable Input + 541: TypePointer Output 483 +542(@entryPointOutput.Pos): 541(ptr) Variable Output + 546: TypePointer Output 17(fvec4) + 548: TypePointer Output 490 +549(@entryPointOutput.Normal): 548(ptr) Variable Output + 553: TypePointer Output 66(fvec3) + 555: TypePointer Output 497 +556(@entryPointOutput.UV): 555(ptr) Variable Output + 560: TypePointer Output 44(fvec2) + 570: TypePointer Output 85 +571(@patchConstantOutput.TessLevelOuter): 570(ptr) Variable Output + 574: TypePointer Output 7(float) + 585: TypePointer Output 87 +586(@patchConstantOutput.TessLevelInner): 585(ptr) Variable Output 5(main): 3 Function None 4 6: Label - 485(patch): 84(ptr) Variable Function -534(InvocationID): 111(ptr) Variable Function -538(flattenTemp): 461(ptr) Variable Function - 539(param): 84(ptr) Variable Function - 541(param): 111(ptr) Variable Function -569(@patchConstantResult): 371(ptr) Variable Function - 570(param): 84(ptr) Variable Function - 490: 489(ptr) AccessChain 488(patch.Pos) 203 - 491: 17(fvec4) Load 490 - 492: 20(ptr) AccessChain 485(patch) 203 203 - Store 492 491 - 497: 496(ptr) AccessChain 495(patch.Normal) 203 - 498: 66(fvec3) Load 497 - 499: 474(ptr) AccessChain 485(patch) 203 204 - Store 499 498 - 504: 503(ptr) AccessChain 502(patch.UV) 203 - 505: 44(fvec2) Load 504 - 506: 46(ptr) AccessChain 485(patch) 203 380 + 482(patch): 84(ptr) Variable Function +531(InvocationID): 111(ptr) Variable Function +535(flattenTemp): 458(ptr) Variable Function + 536(param): 84(ptr) Variable Function + 538(param): 111(ptr) Variable Function +566(@patchConstantResult): 368(ptr) Variable Function + 567(param): 84(ptr) Variable Function + 487: 486(ptr) AccessChain 485(patch.Pos) 204 + 488: 17(fvec4) Load 487 + 489: 20(ptr) AccessChain 482(patch) 204 204 + Store 489 488 + 494: 493(ptr) AccessChain 492(patch.Normal) 204 + 495: 66(fvec3) Load 494 + 496: 471(ptr) AccessChain 482(patch) 204 205 + Store 496 495 + 501: 500(ptr) AccessChain 499(patch.UV) 204 + 502: 44(fvec2) Load 501 + 503: 46(ptr) AccessChain 482(patch) 204 377 + Store 503 502 + 504: 486(ptr) AccessChain 485(patch.Pos) 205 + 505: 17(fvec4) Load 504 + 506: 20(ptr) AccessChain 482(patch) 205 204 Store 506 505 - 507: 489(ptr) AccessChain 488(patch.Pos) 204 - 508: 17(fvec4) Load 507 - 509: 20(ptr) AccessChain 485(patch) 204 203 + 507: 493(ptr) AccessChain 492(patch.Normal) 205 + 508: 66(fvec3) Load 507 + 509: 471(ptr) AccessChain 482(patch) 205 205 Store 509 508 - 510: 496(ptr) AccessChain 495(patch.Normal) 204 - 511: 66(fvec3) Load 510 - 512: 474(ptr) AccessChain 485(patch) 204 204 + 510: 500(ptr) AccessChain 499(patch.UV) 205 + 511: 44(fvec2) Load 510 + 512: 46(ptr) AccessChain 482(patch) 205 377 Store 512 511 - 513: 503(ptr) AccessChain 502(patch.UV) 204 - 514: 44(fvec2) Load 513 - 515: 46(ptr) AccessChain 485(patch) 204 380 + 513: 486(ptr) AccessChain 485(patch.Pos) 377 + 514: 17(fvec4) Load 513 + 515: 20(ptr) AccessChain 482(patch) 377 204 Store 515 514 - 516: 489(ptr) AccessChain 488(patch.Pos) 380 - 517: 17(fvec4) Load 516 - 518: 20(ptr) AccessChain 485(patch) 380 203 + 516: 493(ptr) AccessChain 492(patch.Normal) 377 + 517: 66(fvec3) Load 516 + 518: 471(ptr) AccessChain 482(patch) 377 205 Store 518 517 - 519: 496(ptr) AccessChain 495(patch.Normal) 380 - 520: 66(fvec3) Load 519 - 521: 474(ptr) AccessChain 485(patch) 380 204 + 519: 500(ptr) AccessChain 499(patch.UV) 377 + 520: 44(fvec2) Load 519 + 521: 46(ptr) AccessChain 482(patch) 377 377 Store 521 520 - 522: 503(ptr) AccessChain 502(patch.UV) 380 - 523: 44(fvec2) Load 522 - 524: 46(ptr) AccessChain 485(patch) 380 380 + 522: 486(ptr) AccessChain 485(patch.Pos) 347 + 523: 17(fvec4) Load 522 + 524: 20(ptr) AccessChain 482(patch) 347 204 Store 524 523 - 525: 489(ptr) AccessChain 488(patch.Pos) 349 - 526: 17(fvec4) Load 525 - 527: 20(ptr) AccessChain 485(patch) 349 203 + 525: 493(ptr) AccessChain 492(patch.Normal) 347 + 526: 66(fvec3) Load 525 + 527: 471(ptr) AccessChain 482(patch) 347 205 Store 527 526 - 528: 496(ptr) AccessChain 495(patch.Normal) 349 - 529: 66(fvec3) Load 528 - 530: 474(ptr) AccessChain 485(patch) 349 204 + 528: 500(ptr) AccessChain 499(patch.UV) 347 + 529: 44(fvec2) Load 528 + 530: 46(ptr) AccessChain 482(patch) 347 377 Store 530 529 - 531: 503(ptr) AccessChain 502(patch.UV) 349 - 532: 44(fvec2) Load 531 - 533: 46(ptr) AccessChain 485(patch) 349 380 - Store 533 532 - 537: 10(int) Load 536(InvocationID) - Store 534(InvocationID) 537 - 540: 82 Load 485(patch) - Store 539(param) 540 - 542: 10(int) Load 534(InvocationID) - Store 541(param) 542 - 543:112(HSOutput) FunctionCall 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 539(param) 541(param) - Store 538(flattenTemp) 543 - 546: 10(int) Load 536(InvocationID) - 547: 20(ptr) AccessChain 538(flattenTemp) 203 - 548: 17(fvec4) Load 547 - 550: 549(ptr) AccessChain 545(@entryPointOutput.Pos) 546 - Store 550 548 - 553: 10(int) Load 536(InvocationID) - 554: 474(ptr) AccessChain 538(flattenTemp) 204 - 555: 66(fvec3) Load 554 - 557: 556(ptr) AccessChain 552(@entryPointOutput.Normal) 553 - Store 557 555 - 560: 10(int) Load 536(InvocationID) - 561: 46(ptr) AccessChain 538(flattenTemp) 380 - 562: 44(fvec2) Load 561 - 564: 563(ptr) AccessChain 559(@entryPointOutput.UV) 560 - Store 564 562 + 534: 10(int) Load 533(InvocationID) + Store 531(InvocationID) 534 + 537: 82 Load 482(patch) + Store 536(param) 537 + 539: 10(int) Load 531(InvocationID) + Store 538(param) 539 + 540:112(HSOutput) FunctionCall 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 536(param) 538(param) + Store 535(flattenTemp) 540 + 543: 10(int) Load 533(InvocationID) + 544: 20(ptr) AccessChain 535(flattenTemp) 204 + 545: 17(fvec4) Load 544 + 547: 546(ptr) AccessChain 542(@entryPointOutput.Pos) 543 + Store 547 545 + 550: 10(int) Load 533(InvocationID) + 551: 471(ptr) AccessChain 535(flattenTemp) 205 + 552: 66(fvec3) Load 551 + 554: 553(ptr) AccessChain 549(@entryPointOutput.Normal) 550 + Store 554 552 + 557: 10(int) Load 533(InvocationID) + 558: 46(ptr) AccessChain 535(flattenTemp) 377 + 559: 44(fvec2) Load 558 + 561: 560(ptr) AccessChain 556(@entryPointOutput.UV) 557 + Store 561 559 ControlBarrier 42 18 15 - 565: 10(int) Load 536(InvocationID) - 566: 47(bool) IEqual 565 203 - SelectionMerge 568 None - BranchConditional 566 567 568 - 567: Label - 571: 82 Load 485(patch) - Store 570(param) 571 - 572:89(ConstantsHSOutput) FunctionCall 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 570(param) - Store 569(@patchConstantResult) 572 - 575: 147(ptr) AccessChain 569(@patchConstantResult) 203 203 - 576: 7(float) Load 575 - 578: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 203 - Store 578 576 - 579: 147(ptr) AccessChain 569(@patchConstantResult) 203 204 + 562: 10(int) Load 533(InvocationID) + 563: 47(bool) IEqual 562 204 + SelectionMerge 565 None + BranchConditional 563 564 565 + 564: Label + 568: 82 Load 482(patch) + Store 567(param) 568 + 569:89(ConstantsHSOutput) FunctionCall 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 567(param) + Store 566(@patchConstantResult) 569 + 572: 147(ptr) AccessChain 566(@patchConstantResult) 204 204 + 573: 7(float) Load 572 + 575: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 204 + Store 575 573 + 576: 147(ptr) AccessChain 566(@patchConstantResult) 204 205 + 577: 7(float) Load 576 + 578: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 205 + Store 578 577 + 579: 147(ptr) AccessChain 566(@patchConstantResult) 204 377 580: 7(float) Load 579 - 581: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 204 + 581: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 377 Store 581 580 - 582: 147(ptr) AccessChain 569(@patchConstantResult) 203 380 + 582: 147(ptr) AccessChain 566(@patchConstantResult) 204 347 583: 7(float) Load 582 - 584: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 380 + 584: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 347 Store 584 583 - 585: 147(ptr) AccessChain 569(@patchConstantResult) 203 349 - 586: 7(float) Load 585 - 587: 577(ptr) AccessChain 574(@patchConstantOutput.TessLevelOuter) 349 - Store 587 586 - 590: 147(ptr) AccessChain 569(@patchConstantResult) 204 203 + 587: 147(ptr) AccessChain 566(@patchConstantResult) 205 204 + 588: 7(float) Load 587 + 589: 574(ptr) AccessChain 586(@patchConstantOutput.TessLevelInner) 204 + Store 589 588 + 590: 147(ptr) AccessChain 566(@patchConstantResult) 205 205 591: 7(float) Load 590 - 592: 577(ptr) AccessChain 589(@patchConstantOutput.TessLevelInner) 203 + 592: 574(ptr) AccessChain 586(@patchConstantOutput.TessLevelInner) 205 Store 592 591 - 593: 147(ptr) AccessChain 569(@patchConstantResult) 204 204 - 594: 7(float) Load 593 - 595: 577(ptr) AccessChain 589(@patchConstantOutput.TessLevelInner) 204 - Store 595 594 - Branch 568 - 568: Label + Branch 565 + 565: Label Return FunctionEnd 25(screenSpaceTessFactor(vf4;vf4;): 7(float) Function None 21 @@ -507,306 +507,303 @@ Validation failed 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 36 23(p0) 39 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 40 24(p1) 39 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 27 25(screenSpaceTessFactor(vf4;vf4;) - 142: 17(fvec4) Load 23(p0) - 143: 17(fvec4) Load 24(p1) - 144: 17(fvec4) FAdd 142 143 - 145: 17(fvec4) VectorTimesScalar 144 141 - Store 137(midPoint) 145 - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 138 145 39 - 152: 17(fvec4) Load 23(p0) - 153: 17(fvec4) Load 24(p1) - 154: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 152 153 - 156: 7(float) FDiv 154 155 - Store 148(radius) 156 - 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 149 156 39 - 162: 17(fvec4) Load 137(midPoint) - 206: 205(ptr) AccessChain 197 203 204 - 207: 163 Load 206 - 208: 17(fvec4) VectorTimesMatrix 162 207 - Store 158(v0) 208 - 209: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 159 208 39 - 214: 17(fvec4) Load 158(v0) - 215: 7(float) Load 148(radius) - 218: 7(float) CompositeExtract 217 0 - 219: 7(float) CompositeExtract 217 1 - 220: 7(float) CompositeExtract 217 2 - 221: 17(fvec4) CompositeConstruct 215 218 219 220 - 222: 17(fvec4) FSub 214 221 - 223: 205(ptr) AccessChain 197 203 203 - 224: 163 Load 223 - 225: 17(fvec4) VectorTimesMatrix 222 224 - Store 210(clip0) 225 - 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 211 225 39 - 231: 17(fvec4) Load 158(v0) - 232: 7(float) Load 148(radius) - 233: 7(float) CompositeExtract 217 0 - 234: 7(float) CompositeExtract 217 1 - 235: 7(float) CompositeExtract 217 2 - 236: 17(fvec4) CompositeConstruct 232 233 234 235 - 237: 17(fvec4) FAdd 231 236 - 238: 205(ptr) AccessChain 197 203 203 - 239: 163 Load 238 - 240: 17(fvec4) VectorTimesMatrix 237 239 - Store 227(clip1) 240 - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 228 240 39 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 138 137(midPoint) 39 + 143: 17(fvec4) Load 23(p0) + 144: 17(fvec4) Load 24(p1) + 145: 17(fvec4) FAdd 143 144 + 146: 17(fvec4) VectorTimesScalar 145 142 + Store 137(midPoint) 146 + 152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 149 148(radius) 39 + 153: 17(fvec4) Load 23(p0) + 154: 17(fvec4) Load 24(p1) + 155: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 153 154 + 157: 7(float) FDiv 155 156 + Store 148(radius) 157 + 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 159 158(v0) 39 + 163: 17(fvec4) Load 137(midPoint) + 207: 206(ptr) AccessChain 198 204 205 + 208: 164 Load 207 + 209: 17(fvec4) VectorTimesMatrix 163 208 + Store 158(v0) 209 + 214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 211 210(clip0) 39 + 215: 17(fvec4) Load 158(v0) + 216: 7(float) Load 148(radius) + 219: 7(float) CompositeExtract 218 0 + 220: 7(float) CompositeExtract 218 1 + 221: 7(float) CompositeExtract 218 2 + 222: 17(fvec4) CompositeConstruct 216 219 220 221 + 223: 17(fvec4) FSub 215 222 + 224: 206(ptr) AccessChain 198 204 204 + 225: 164 Load 224 + 226: 17(fvec4) VectorTimesMatrix 223 225 + Store 210(clip0) 226 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 228 227(clip1) 39 + 232: 17(fvec4) Load 158(v0) + 233: 7(float) Load 148(radius) + 234: 7(float) CompositeExtract 218 0 + 235: 7(float) CompositeExtract 218 1 + 236: 7(float) CompositeExtract 218 2 + 237: 17(fvec4) CompositeConstruct 233 234 235 236 + 238: 17(fvec4) FAdd 232 237 + 239: 206(ptr) AccessChain 198 204 204 + 240: 164 Load 239 + 241: 17(fvec4) VectorTimesMatrix 238 240 + Store 227(clip1) 241 242: 147(ptr) AccessChain 210(clip0) 16 243: 7(float) Load 242 244: 17(fvec4) Load 210(clip0) 245: 17(fvec4) CompositeConstruct 243 243 243 243 246: 17(fvec4) FDiv 244 245 Store 210(clip0) 246 - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 211 246 39 - 248: 147(ptr) AccessChain 227(clip1) 16 - 249: 7(float) Load 248 - 250: 17(fvec4) Load 227(clip1) - 251: 17(fvec4) CompositeConstruct 249 249 249 249 - 252: 17(fvec4) FDiv 250 251 - Store 227(clip1) 252 - 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 228 252 39 - 256: 255(ptr) AccessChain 197 203 254 - 257: 44(fvec2) Load 256 - 258: 17(fvec4) Load 210(clip0) - 259: 44(fvec2) VectorShuffle 258 258 0 1 - 260: 44(fvec2) FMul 259 257 - 261: 147(ptr) AccessChain 210(clip0) 15 - 262: 7(float) CompositeExtract 260 0 + 247: 147(ptr) AccessChain 227(clip1) 16 + 248: 7(float) Load 247 + 249: 17(fvec4) Load 227(clip1) + 250: 17(fvec4) CompositeConstruct 248 248 248 248 + 251: 17(fvec4) FDiv 249 250 + Store 227(clip1) 251 + 254: 253(ptr) AccessChain 198 204 252 + 255: 44(fvec2) Load 254 + 256: 17(fvec4) Load 210(clip0) + 257: 44(fvec2) VectorShuffle 256 256 0 1 + 258: 44(fvec2) FMul 257 255 + 259: 147(ptr) AccessChain 210(clip0) 15 + 260: 7(float) CompositeExtract 258 0 + Store 259 260 + 261: 147(ptr) AccessChain 210(clip0) 31 + 262: 7(float) CompositeExtract 258 1 Store 261 262 - 263: 147(ptr) AccessChain 210(clip0) 31 - 264: 7(float) CompositeExtract 260 1 - Store 263 264 - 265: 255(ptr) AccessChain 197 203 254 - 266: 44(fvec2) Load 265 - 267: 17(fvec4) Load 227(clip1) - 268: 44(fvec2) VectorShuffle 267 267 0 1 - 269: 44(fvec2) FMul 268 266 - 270: 147(ptr) AccessChain 227(clip1) 15 - 271: 7(float) CompositeExtract 269 0 + 263: 253(ptr) AccessChain 198 204 252 + 264: 44(fvec2) Load 263 + 265: 17(fvec4) Load 227(clip1) + 266: 44(fvec2) VectorShuffle 265 265 0 1 + 267: 44(fvec2) FMul 266 264 + 268: 147(ptr) AccessChain 227(clip1) 15 + 269: 7(float) CompositeExtract 267 0 + Store 268 269 + 270: 147(ptr) AccessChain 227(clip1) 31 + 271: 7(float) CompositeExtract 267 1 Store 270 271 - 272: 147(ptr) AccessChain 227(clip1) 31 - 273: 7(float) CompositeExtract 269 1 - Store 272 273 - 274: 17(fvec4) Load 210(clip0) - 275: 17(fvec4) Load 227(clip1) - 276: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 274 275 - 279: 278(ptr) AccessChain 197 203 277 - 280: 7(float) Load 279 - 281: 7(float) FDiv 276 280 - 283: 278(ptr) AccessChain 197 203 282 - 284: 7(float) Load 283 - 285: 7(float) FMul 281 284 - 288: 7(float) ExtInst 2(GLSL.std.450) 43(FClamp) 285 286 287 - ReturnValue 288 + 272: 17(fvec4) Load 210(clip0) + 273: 17(fvec4) Load 227(clip1) + 274: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 272 273 + 277: 276(ptr) AccessChain 198 204 275 + 278: 7(float) Load 277 + 279: 7(float) FDiv 274 278 + 281: 276(ptr) AccessChain 198 204 280 + 282: 7(float) Load 281 + 283: 7(float) FMul 279 282 + 286: 7(float) ExtInst 2(GLSL.std.450) 43(FClamp) 283 284 285 + ReturnValue 286 FunctionEnd 54(frustumCheck(vf4;vf2;): 47(bool) Function None 50 52(Pos): 20(ptr) FunctionParameter 53(inUV): 46(ptr) FunctionParameter 57: Label - 292(pos): 20(ptr) Variable Function - 335(i): 334(ptr) Variable Function + 290(pos): 20(ptr) Variable Function + 333(i): 332(ptr) Variable Function 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 56 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 60 52(Pos) 39 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 63 53(inUV) 39 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 56 54(frustumCheck(vf4;vf2;) - 296: 17(fvec4) Load 52(Pos) - Store 292(pos) 296 - 297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 293 296 39 - 308: 298 Load 305(textureHeight) - 317: 309 Load 314(samplerHeight) - 322: 318 SampledImage 308 317 - 323: 44(fvec2) Load 53(inUV) - 324: 17(fvec4) ImageSampleExplicitLod 322 323 Lod 216 - 325: 7(float) CompositeExtract 324 0 - 327: 278(ptr) AccessChain 197 203 326 - 328: 7(float) Load 327 - 329: 7(float) FMul 325 328 - 330: 147(ptr) AccessChain 292(pos) 31 - 331: 7(float) Load 330 - 332: 7(float) FSub 331 329 - 333: 147(ptr) AccessChain 292(pos) 31 - Store 333 332 - Store 335(i) 203 - 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 336 203 39 - Branch 340 - 340: Label - LoopMerge 342 343 None - Branch 344 - 344: Label - 345: 200(int) Load 335(i) - 347: 47(bool) SLessThan 345 254 - BranchConditional 347 341 342 - 341: Label - 348: 17(fvec4) Load 292(pos) - 350: 200(int) Load 335(i) - 352: 351(ptr) AccessChain 197 203 349 350 - 353: 17(fvec4) Load 352 - 354: 7(float) Dot 348 353 - 356: 7(float) FAdd 354 355 - 358: 47(bool) FOrdLessThan 356 216 - SelectionMerge 360 None - BranchConditional 358 359 360 - 359: Label - ReturnValue 362 - 360: Label - Branch 343 - 343: Label - 364: 200(int) Load 335(i) - 365: 200(int) IAdd 364 204 - Store 335(i) 365 - 366: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 336 365 39 - Branch 340 + 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 56 54(frustumCheck(vf4;vf2;) + 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 291 290(pos) 39 + 295: 17(fvec4) Load 52(Pos) + Store 290(pos) 295 + 306: 296 Load 303(textureHeight) + 315: 307 Load 312(samplerHeight) + 320: 316 SampledImage 306 315 + 321: 44(fvec2) Load 53(inUV) + 322: 17(fvec4) ImageSampleExplicitLod 320 321 Lod 217 + 323: 7(float) CompositeExtract 322 0 + 325: 276(ptr) AccessChain 198 204 324 + 326: 7(float) Load 325 + 327: 7(float) FMul 323 326 + 328: 147(ptr) AccessChain 290(pos) 31 + 329: 7(float) Load 328 + 330: 7(float) FSub 329 327 + 331: 147(ptr) AccessChain 290(pos) 31 + Store 331 330 + 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 334 333(i) 39 + Store 333(i) 204 + Branch 338 + 338: Label + LoopMerge 340 341 None + Branch 342 342: Label - ReturnValue 165 + 343: 201(int) Load 333(i) + 345: 47(bool) SLessThan 343 252 + BranchConditional 345 339 340 + 339: Label + 346: 17(fvec4) Load 290(pos) + 348: 201(int) Load 333(i) + 350: 349(ptr) AccessChain 198 204 347 348 + 351: 17(fvec4) Load 350 + 352: 7(float) Dot 346 351 + 354: 7(float) FAdd 352 353 + 356: 47(bool) FOrdLessThan 354 217 + SelectionMerge 358 None + BranchConditional 356 357 358 + 357: Label + ReturnValue 360 + 358: Label + Branch 341 + 341: Label + 362: 201(int) Load 333(i) + 363: 201(int) IAdd 362 205 + Store 333(i) 363 + Branch 338 + 340: Label + ReturnValue 166 FunctionEnd 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):89(ConstantsHSOutput) Function None 99 101(patch): 84(ptr) FunctionParameter 105: Label - 372(output): 371(ptr) Variable Function - 381(param): 20(ptr) Variable Function - 384(param): 46(ptr) Variable Function + 369(output): 368(ptr) Variable Function + 378(param): 20(ptr) Variable Function + 381(param): 46(ptr) Variable Function + 403(param): 20(ptr) Variable Function 406(param): 20(ptr) Variable Function - 409(param): 20(ptr) Variable Function + 411(param): 20(ptr) Variable Function 414(param): 20(ptr) Variable Function - 417(param): 20(ptr) Variable Function + 419(param): 20(ptr) Variable Function 422(param): 20(ptr) Variable Function - 425(param): 20(ptr) Variable Function + 427(param): 20(ptr) Variable Function 430(param): 20(ptr) Variable Function - 433(param): 20(ptr) Variable Function 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 104 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 101(patch) 39 - 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - Store 372(output) 378 - 379: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 373 378 39 - 382: 20(ptr) AccessChain 101(patch) 203 203 - 383: 17(fvec4) Load 382 + 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 370 369(output) 39 + Store 369(output) 376 + 379: 20(ptr) AccessChain 101(patch) 204 204 + 380: 17(fvec4) Load 379 + Store 378(param) 380 + 382: 46(ptr) AccessChain 101(patch) 204 377 + 383: 44(fvec2) Load 382 Store 381(param) 383 - 385: 46(ptr) AccessChain 101(patch) 203 380 - 386: 44(fvec2) Load 385 - Store 384(param) 386 - 387: 47(bool) FunctionCall 54(frustumCheck(vf4;vf2;) 381(param) 384(param) - 390: 47(bool) LogicalNot 387 - SelectionMerge 392 None - BranchConditional 390 391 399 - 391: Label - 393: 147(ptr) AccessChain 372(output) 204 203 - Store 393 216 - 394: 147(ptr) AccessChain 372(output) 204 204 - Store 394 216 - 395: 147(ptr) AccessChain 372(output) 203 203 - Store 395 216 - 396: 147(ptr) AccessChain 372(output) 203 204 - Store 396 216 - 397: 147(ptr) AccessChain 372(output) 203 380 - Store 397 216 - 398: 147(ptr) AccessChain 372(output) 203 349 - Store 398 216 - Branch 392 - 399: Label - 400: 278(ptr) AccessChain 197 203 282 - 401: 7(float) Load 400 - 403: 47(bool) FOrdGreaterThan 401 216 - SelectionMerge 405 None - BranchConditional 403 404 450 - 404: Label - 407: 20(ptr) AccessChain 101(patch) 349 203 + 384: 47(bool) FunctionCall 54(frustumCheck(vf4;vf2;) 378(param) 381(param) + 387: 47(bool) LogicalNot 384 + SelectionMerge 389 None + BranchConditional 387 388 396 + 388: Label + 390: 147(ptr) AccessChain 369(output) 205 204 + Store 390 217 + 391: 147(ptr) AccessChain 369(output) 205 205 + Store 391 217 + 392: 147(ptr) AccessChain 369(output) 204 204 + Store 392 217 + 393: 147(ptr) AccessChain 369(output) 204 205 + Store 393 217 + 394: 147(ptr) AccessChain 369(output) 204 377 + Store 394 217 + 395: 147(ptr) AccessChain 369(output) 204 347 + Store 395 217 + Branch 389 + 396: Label + 397: 276(ptr) AccessChain 198 204 280 + 398: 7(float) Load 397 + 400: 47(bool) FOrdGreaterThan 398 217 + SelectionMerge 402 None + BranchConditional 400 401 447 + 401: Label + 404: 20(ptr) AccessChain 101(patch) 347 204 + 405: 17(fvec4) Load 404 + Store 403(param) 405 + 407: 20(ptr) AccessChain 101(patch) 204 204 408: 17(fvec4) Load 407 Store 406(param) 408 - 410: 20(ptr) AccessChain 101(patch) 203 203 - 411: 17(fvec4) Load 410 - Store 409(param) 411 - 412: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 406(param) 409(param) - 413: 147(ptr) AccessChain 372(output) 203 203 - Store 413 412 - 415: 20(ptr) AccessChain 101(patch) 203 203 + 409: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 403(param) 406(param) + 410: 147(ptr) AccessChain 369(output) 204 204 + Store 410 409 + 412: 20(ptr) AccessChain 101(patch) 204 204 + 413: 17(fvec4) Load 412 + Store 411(param) 413 + 415: 20(ptr) AccessChain 101(patch) 205 204 416: 17(fvec4) Load 415 Store 414(param) 416 - 418: 20(ptr) AccessChain 101(patch) 204 203 - 419: 17(fvec4) Load 418 - Store 417(param) 419 - 420: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 414(param) 417(param) - 421: 147(ptr) AccessChain 372(output) 203 204 - Store 421 420 - 423: 20(ptr) AccessChain 101(patch) 204 203 + 417: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 411(param) 414(param) + 418: 147(ptr) AccessChain 369(output) 204 205 + Store 418 417 + 420: 20(ptr) AccessChain 101(patch) 205 204 + 421: 17(fvec4) Load 420 + Store 419(param) 421 + 423: 20(ptr) AccessChain 101(patch) 377 204 424: 17(fvec4) Load 423 Store 422(param) 424 - 426: 20(ptr) AccessChain 101(patch) 380 203 - 427: 17(fvec4) Load 426 - Store 425(param) 427 - 428: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 422(param) 425(param) - 429: 147(ptr) AccessChain 372(output) 203 380 - Store 429 428 - 431: 20(ptr) AccessChain 101(patch) 380 203 + 425: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 419(param) 422(param) + 426: 147(ptr) AccessChain 369(output) 204 377 + Store 426 425 + 428: 20(ptr) AccessChain 101(patch) 377 204 + 429: 17(fvec4) Load 428 + Store 427(param) 429 + 431: 20(ptr) AccessChain 101(patch) 347 204 432: 17(fvec4) Load 431 Store 430(param) 432 - 434: 20(ptr) AccessChain 101(patch) 349 203 - 435: 17(fvec4) Load 434 - Store 433(param) 435 - 436: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 430(param) 433(param) - 437: 147(ptr) AccessChain 372(output) 203 349 - Store 437 436 - 438: 147(ptr) AccessChain 372(output) 203 203 - 439: 7(float) Load 438 - 440: 147(ptr) AccessChain 372(output) 203 349 - 441: 7(float) Load 440 - 442: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 439 441 141 - 443: 147(ptr) AccessChain 372(output) 204 203 - Store 443 442 - 444: 147(ptr) AccessChain 372(output) 203 380 - 445: 7(float) Load 444 - 446: 147(ptr) AccessChain 372(output) 203 204 - 447: 7(float) Load 446 - 448: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 445 447 141 - 449: 147(ptr) AccessChain 372(output) 204 204 - Store 449 448 - Branch 405 - 450: Label - 451: 147(ptr) AccessChain 372(output) 204 203 - Store 451 286 - 452: 147(ptr) AccessChain 372(output) 204 204 - Store 452 286 - 453: 147(ptr) AccessChain 372(output) 203 203 - Store 453 286 - 454: 147(ptr) AccessChain 372(output) 203 204 - Store 454 286 - 455: 147(ptr) AccessChain 372(output) 203 380 - Store 455 286 - 456: 147(ptr) AccessChain 372(output) 203 349 - Store 456 286 - Branch 405 - 405: Label - Branch 392 - 392: Label - 457:89(ConstantsHSOutput) Load 372(output) - ReturnValue 457 + 433: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 427(param) 430(param) + 434: 147(ptr) AccessChain 369(output) 204 347 + Store 434 433 + 435: 147(ptr) AccessChain 369(output) 204 204 + 436: 7(float) Load 435 + 437: 147(ptr) AccessChain 369(output) 204 347 + 438: 7(float) Load 437 + 439: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 436 438 142 + 440: 147(ptr) AccessChain 369(output) 205 204 + Store 440 439 + 441: 147(ptr) AccessChain 369(output) 204 377 + 442: 7(float) Load 441 + 443: 147(ptr) AccessChain 369(output) 204 205 + 444: 7(float) Load 443 + 445: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 442 444 142 + 446: 147(ptr) AccessChain 369(output) 205 205 + Store 446 445 + Branch 402 + 447: Label + 448: 147(ptr) AccessChain 369(output) 205 204 + Store 448 284 + 449: 147(ptr) AccessChain 369(output) 205 205 + Store 449 284 + 450: 147(ptr) AccessChain 369(output) 204 204 + Store 450 284 + 451: 147(ptr) AccessChain 369(output) 204 205 + Store 451 284 + 452: 147(ptr) AccessChain 369(output) 204 377 + Store 452 284 + 453: 147(ptr) AccessChain 369(output) 204 347 + Store 453 284 + Branch 402 + 402: Label + Branch 389 + 389: Label + 454:89(ConstantsHSOutput) Load 369(output) + ReturnValue 454 FunctionEnd 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):112(HSOutput) Function None 121 123(patch): 84(ptr) FunctionParameter 124(InvocationID): 111(ptr) FunctionParameter 128: Label - 462(output): 461(ptr) Variable Function + 459(output): 458(ptr) Variable Function 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 127 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 123(patch) 39 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 133 124(InvocationID) 39 - 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) - Store 462(output) 467 - 468: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 463 467 39 - 469: 10(int) Load 124(InvocationID) - 470: 20(ptr) AccessChain 123(patch) 469 203 - 471: 17(fvec4) Load 470 - 472: 20(ptr) AccessChain 462(output) 203 - Store 472 471 - 473: 10(int) Load 124(InvocationID) - 475: 474(ptr) AccessChain 123(patch) 473 204 - 476: 66(fvec3) Load 475 - 477: 474(ptr) AccessChain 462(output) 204 - Store 477 476 - 478: 10(int) Load 124(InvocationID) - 479: 46(ptr) AccessChain 123(patch) 478 380 - 480: 44(fvec2) Load 479 - 481: 46(ptr) AccessChain 462(output) 380 - Store 481 480 - 482:112(HSOutput) Load 462(output) - ReturnValue 482 + 457: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 460 459(output) 39 + Store 459(output) 465 + 466: 10(int) Load 124(InvocationID) + 467: 20(ptr) AccessChain 123(patch) 466 204 + 468: 17(fvec4) Load 467 + 469: 20(ptr) AccessChain 459(output) 204 + Store 469 468 + 470: 10(int) Load 124(InvocationID) + 472: 471(ptr) AccessChain 123(patch) 470 205 + 473: 66(fvec3) Load 472 + 474: 471(ptr) AccessChain 459(output) 205 + Store 474 473 + 475: 10(int) Load 124(InvocationID) + 476: 46(ptr) AccessChain 123(patch) 475 377 + 477: 44(fvec2) Load 476 + 478: 46(ptr) AccessChain 459(output) 377 + Store 478 477 + 479:112(HSOutput) Load 459(output) + ReturnValue 479 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 216dd82381..56e108653d 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -29,7 +29,7 @@ Validation failed 97: String "patch" 103: String "output" 113: String "uv1" - 116: String "int" + 117: String "int" 131: String "uv2" 151: String "n1" 162: String "n2" @@ -220,22 +220,22 @@ Validation failed 100: TypePointer Function 62(DSOutput) 104: 10(int) Constant 70 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 103 76 26 104 15 85 17 - 105: 7(float) Constant 0 - 106: 42(fvec4) ConstantComposite 105 105 105 105 - 107: 44(fvec3) ConstantComposite 105 105 105 - 108: 39(fvec2) ConstantComposite 105 105 - 109:62(DSOutput) ConstantComposite 106 107 108 107 107 107 107 + 106: 7(float) Constant 0 + 107: 42(fvec4) ConstantComposite 106 106 106 106 + 108: 44(fvec3) ConstantComposite 106 106 106 + 109: 39(fvec2) ConstantComposite 106 106 + 110:62(DSOutput) ConstantComposite 107 108 109 108 108 108 108 114: 10(int) Constant 71 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 113 40 26 114 15 85 17 - 115: TypeInt 32 1 - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 116 13 17 15 - 118: 115(int) Constant 0 - 119: 115(int) Constant 2 - 121: 115(int) Constant 1 - 123: TypePointer Function 7(float) + 116: TypeInt 32 1 + 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 117 13 17 15 + 119: 116(int) Constant 0 + 120: 116(int) Constant 2 + 122: 116(int) Constant 1 + 124: TypePointer Function 7(float) 132: 10(int) Constant 72 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 131 40 26 132 15 85 17 - 133: 115(int) Constant 3 + 134: 116(int) Constant 3 148: TypePointer Function 44(fvec3) 152: 10(int) Constant 75 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 151 45 26 152 15 85 17 @@ -292,12 +292,12 @@ Validation failed 275: TypePointer Uniform 271(ubo) 276: 275(ptr) Variable Uniform 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 27 274 26 215 15 36 27 276 222 - 278: 115(int) Constant 4 + 278: 116(int) Constant 4 279: TypePointer Uniform 7(float) 288: TypePointer Uniform 242 300: TypePointer Uniform 42(fvec4) - 309: 115(int) Constant 6 - 313: 115(int) Constant 5 + 309: 116(int) Constant 6 + 313: 116(int) Constant 5 324: TypePointer Input 18 325(input.TessLevelOuter): 324(ptr) Variable Input 326: TypePointer Input 7(float) @@ -335,82 +335,82 @@ Validation failed 403(flattenTemp): 100(ptr) Variable Function 405(param): 38(ptr) Variable Function 407(param): 41(ptr) Variable Function - 327: 326(ptr) AccessChain 325(input.TessLevelOuter) 118 + 327: 326(ptr) AccessChain 325(input.TessLevelOuter) 119 328: 7(float) Load 327 - 329: 123(ptr) AccessChain 323(input) 118 118 + 329: 124(ptr) AccessChain 323(input) 119 119 Store 329 328 - 330: 326(ptr) AccessChain 325(input.TessLevelOuter) 121 + 330: 326(ptr) AccessChain 325(input.TessLevelOuter) 122 331: 7(float) Load 330 - 332: 123(ptr) AccessChain 323(input) 118 121 + 332: 124(ptr) AccessChain 323(input) 119 122 Store 332 331 - 333: 326(ptr) AccessChain 325(input.TessLevelOuter) 119 + 333: 326(ptr) AccessChain 325(input.TessLevelOuter) 120 334: 7(float) Load 333 - 335: 123(ptr) AccessChain 323(input) 118 119 + 335: 124(ptr) AccessChain 323(input) 119 120 Store 335 334 - 336: 326(ptr) AccessChain 325(input.TessLevelOuter) 133 + 336: 326(ptr) AccessChain 325(input.TessLevelOuter) 134 337: 7(float) Load 336 - 338: 123(ptr) AccessChain 323(input) 118 133 + 338: 124(ptr) AccessChain 323(input) 119 134 Store 338 337 - 341: 326(ptr) AccessChain 340(input.TessLevelInner) 118 + 341: 326(ptr) AccessChain 340(input.TessLevelInner) 119 342: 7(float) Load 341 - 343: 123(ptr) AccessChain 323(input) 121 118 + 343: 124(ptr) AccessChain 323(input) 122 119 Store 343 342 - 344: 326(ptr) AccessChain 340(input.TessLevelInner) 121 + 344: 326(ptr) AccessChain 340(input.TessLevelInner) 122 345: 7(float) Load 344 - 346: 123(ptr) AccessChain 323(input) 121 121 + 346: 124(ptr) AccessChain 323(input) 122 122 Store 346 345 350: 44(fvec3) Load 349(TessCoord) 351: 7(float) CompositeExtract 350 0 352: 7(float) CompositeExtract 350 1 353: 39(fvec2) CompositeConstruct 351 352 Store 347(TessCoord) 353 - 360: 359(ptr) AccessChain 358(patch.Pos) 118 + 360: 359(ptr) AccessChain 358(patch.Pos) 119 361: 42(fvec4) Load 360 - 362: 178(ptr) AccessChain 355(patch) 118 118 + 362: 178(ptr) AccessChain 355(patch) 119 119 Store 362 361 - 366: 348(ptr) AccessChain 365(patch.Normal) 118 + 366: 348(ptr) AccessChain 365(patch.Normal) 119 367: 44(fvec3) Load 366 - 368: 148(ptr) AccessChain 355(patch) 118 121 + 368: 148(ptr) AccessChain 355(patch) 119 122 Store 368 367 - 373: 372(ptr) AccessChain 371(patch.UV) 118 + 373: 372(ptr) AccessChain 371(patch.UV) 119 374: 39(fvec2) Load 373 - 375: 41(ptr) AccessChain 355(patch) 118 119 + 375: 41(ptr) AccessChain 355(patch) 119 120 Store 375 374 - 376: 359(ptr) AccessChain 358(patch.Pos) 121 + 376: 359(ptr) AccessChain 358(patch.Pos) 122 377: 42(fvec4) Load 376 - 378: 178(ptr) AccessChain 355(patch) 121 118 + 378: 178(ptr) AccessChain 355(patch) 122 119 Store 378 377 - 379: 348(ptr) AccessChain 365(patch.Normal) 121 + 379: 348(ptr) AccessChain 365(patch.Normal) 122 380: 44(fvec3) Load 379 - 381: 148(ptr) AccessChain 355(patch) 121 121 + 381: 148(ptr) AccessChain 355(patch) 122 122 Store 381 380 - 382: 372(ptr) AccessChain 371(patch.UV) 121 + 382: 372(ptr) AccessChain 371(patch.UV) 122 383: 39(fvec2) Load 382 - 384: 41(ptr) AccessChain 355(patch) 121 119 + 384: 41(ptr) AccessChain 355(patch) 122 120 Store 384 383 - 385: 359(ptr) AccessChain 358(patch.Pos) 119 + 385: 359(ptr) AccessChain 358(patch.Pos) 120 386: 42(fvec4) Load 385 - 387: 178(ptr) AccessChain 355(patch) 119 118 + 387: 178(ptr) AccessChain 355(patch) 120 119 Store 387 386 - 388: 348(ptr) AccessChain 365(patch.Normal) 119 + 388: 348(ptr) AccessChain 365(patch.Normal) 120 389: 44(fvec3) Load 388 - 390: 148(ptr) AccessChain 355(patch) 119 121 + 390: 148(ptr) AccessChain 355(patch) 120 122 Store 390 389 - 391: 372(ptr) AccessChain 371(patch.UV) 119 + 391: 372(ptr) AccessChain 371(patch.UV) 120 392: 39(fvec2) Load 391 - 393: 41(ptr) AccessChain 355(patch) 119 119 + 393: 41(ptr) AccessChain 355(patch) 120 120 Store 393 392 - 394: 359(ptr) AccessChain 358(patch.Pos) 133 + 394: 359(ptr) AccessChain 358(patch.Pos) 134 395: 42(fvec4) Load 394 - 396: 178(ptr) AccessChain 355(patch) 133 118 + 396: 178(ptr) AccessChain 355(patch) 134 119 Store 396 395 - 397: 348(ptr) AccessChain 365(patch.Normal) 133 + 397: 348(ptr) AccessChain 365(patch.Normal) 134 398: 44(fvec3) Load 397 - 399: 148(ptr) AccessChain 355(patch) 133 121 + 399: 148(ptr) AccessChain 355(patch) 134 122 Store 399 398 - 400: 372(ptr) AccessChain 371(patch.UV) 133 + 400: 372(ptr) AccessChain 371(patch.UV) 134 401: 39(fvec2) Load 400 - 402: 41(ptr) AccessChain 355(patch) 133 119 + 402: 41(ptr) AccessChain 355(patch) 134 120 Store 402 401 404: 60 Load 355(patch) 406:23(ConstantsHSOutput) Load 323(input) @@ -419,16 +419,16 @@ Validation failed Store 407(param) 408 409:62(DSOutput) FunctionCall 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 405(param) 407(param) 404 Store 403(flattenTemp) 409 - 412: 178(ptr) AccessChain 403(flattenTemp) 118 + 412: 178(ptr) AccessChain 403(flattenTemp) 119 413: 42(fvec4) Load 412 Store 411(@entryPointOutput.Pos) 413 - 416: 148(ptr) AccessChain 403(flattenTemp) 121 + 416: 148(ptr) AccessChain 403(flattenTemp) 122 417: 44(fvec3) Load 416 Store 415(@entryPointOutput.Normal) 417 - 420: 41(ptr) AccessChain 403(flattenTemp) 119 + 420: 41(ptr) AccessChain 403(flattenTemp) 120 421: 39(fvec2) Load 420 Store 419(@entryPointOutput.UV) 421 - 423: 148(ptr) AccessChain 403(flattenTemp) 133 + 423: 148(ptr) AccessChain 403(flattenTemp) 134 424: 44(fvec3) Load 423 Store 422(@entryPointOutput.ViewVec) 424 426: 148(ptr) AccessChain 403(flattenTemp) 278 @@ -461,113 +461,113 @@ Validation failed 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 93 81(TessCoord) 92 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 96 82(patch) 92 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 85 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) - Store 101(output) 109 - 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 102 109 92 - 120: 39(fvec2) CompositeExtract 82(patch) 0 2 - 122: 39(fvec2) CompositeExtract 82(patch) 1 2 - 124: 123(ptr) AccessChain 81(TessCoord) 15 - 125: 7(float) Load 124 - 126: 39(fvec2) CompositeConstruct 125 125 - 127: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 120 122 126 - Store 111(uv1) 127 - 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 112 127 92 - 134: 39(fvec2) CompositeExtract 82(patch) 3 2 - 135: 39(fvec2) CompositeExtract 82(patch) 2 2 - 136: 123(ptr) AccessChain 81(TessCoord) 15 - 137: 7(float) Load 136 - 138: 39(fvec2) CompositeConstruct 137 137 - 139: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 134 135 138 - Store 129(uv2) 139 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 130 139 92 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 102 101(output) 92 + Store 101(output) 110 + 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 112 111(uv1) 92 + 121: 39(fvec2) CompositeExtract 82(patch) 0 2 + 123: 39(fvec2) CompositeExtract 82(patch) 1 2 + 125: 124(ptr) AccessChain 81(TessCoord) 15 + 126: 7(float) Load 125 + 127: 39(fvec2) CompositeConstruct 126 126 + 128: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 121 123 127 + Store 111(uv1) 128 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 130 129(uv2) 92 + 135: 39(fvec2) CompositeExtract 82(patch) 3 2 + 136: 39(fvec2) CompositeExtract 82(patch) 2 2 + 137: 124(ptr) AccessChain 81(TessCoord) 15 + 138: 7(float) Load 137 + 139: 39(fvec2) CompositeConstruct 138 138 + 140: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 135 136 139 + Store 129(uv2) 140 141: 39(fvec2) Load 111(uv1) 142: 39(fvec2) Load 129(uv2) - 143: 123(ptr) AccessChain 81(TessCoord) 35 + 143: 124(ptr) AccessChain 81(TessCoord) 35 144: 7(float) Load 143 145: 39(fvec2) CompositeConstruct 144 144 146: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 141 142 145 - 147: 41(ptr) AccessChain 101(output) 119 + 147: 41(ptr) AccessChain 101(output) 120 Store 147 146 - 153: 44(fvec3) CompositeExtract 82(patch) 0 1 - 154: 44(fvec3) CompositeExtract 82(patch) 1 1 - 155: 123(ptr) AccessChain 81(TessCoord) 15 - 156: 7(float) Load 155 - 157: 44(fvec3) CompositeConstruct 156 156 156 - 158: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 153 154 157 - Store 149(n1) 158 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 150 158 92 - 164: 44(fvec3) CompositeExtract 82(patch) 3 1 - 165: 44(fvec3) CompositeExtract 82(patch) 2 1 - 166: 123(ptr) AccessChain 81(TessCoord) 15 - 167: 7(float) Load 166 - 168: 44(fvec3) CompositeConstruct 167 167 167 - 169: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 164 165 168 - Store 160(n2) 169 - 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 161 169 92 + 153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 150 149(n1) 92 + 154: 44(fvec3) CompositeExtract 82(patch) 0 1 + 155: 44(fvec3) CompositeExtract 82(patch) 1 1 + 156: 124(ptr) AccessChain 81(TessCoord) 15 + 157: 7(float) Load 156 + 158: 44(fvec3) CompositeConstruct 157 157 157 + 159: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 154 155 158 + Store 149(n1) 159 + 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 161 160(n2) 92 + 165: 44(fvec3) CompositeExtract 82(patch) 3 1 + 166: 44(fvec3) CompositeExtract 82(patch) 2 1 + 167: 124(ptr) AccessChain 81(TessCoord) 15 + 168: 7(float) Load 167 + 169: 44(fvec3) CompositeConstruct 168 168 168 + 170: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 165 166 169 + Store 160(n2) 170 171: 44(fvec3) Load 149(n1) 172: 44(fvec3) Load 160(n2) - 173: 123(ptr) AccessChain 81(TessCoord) 35 + 173: 124(ptr) AccessChain 81(TessCoord) 35 174: 7(float) Load 173 175: 44(fvec3) CompositeConstruct 174 174 174 176: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 171 172 175 - 177: 148(ptr) AccessChain 101(output) 121 + 177: 148(ptr) AccessChain 101(output) 122 Store 177 176 - 183: 42(fvec4) CompositeExtract 82(patch) 0 0 - 184: 42(fvec4) CompositeExtract 82(patch) 1 0 - 185: 123(ptr) AccessChain 81(TessCoord) 15 - 186: 7(float) Load 185 - 187: 42(fvec4) CompositeConstruct 186 186 186 186 - 188: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 183 184 187 - Store 179(pos1) 188 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 180 188 92 - 194: 42(fvec4) CompositeExtract 82(patch) 3 0 - 195: 42(fvec4) CompositeExtract 82(patch) 2 0 - 196: 123(ptr) AccessChain 81(TessCoord) 15 - 197: 7(float) Load 196 - 198: 42(fvec4) CompositeConstruct 197 197 197 197 - 199: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 194 195 198 - Store 190(pos2) 199 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 191 199 92 - 205: 42(fvec4) Load 179(pos1) - 206: 42(fvec4) Load 190(pos2) - 207: 123(ptr) AccessChain 81(TessCoord) 35 - 208: 7(float) Load 207 - 209: 42(fvec4) CompositeConstruct 208 208 208 208 - 210: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 205 206 209 - Store 201(pos) 210 - 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 202 210 92 + 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 180 179(pos1) 92 + 184: 42(fvec4) CompositeExtract 82(patch) 0 0 + 185: 42(fvec4) CompositeExtract 82(patch) 1 0 + 186: 124(ptr) AccessChain 81(TessCoord) 15 + 187: 7(float) Load 186 + 188: 42(fvec4) CompositeConstruct 187 187 187 187 + 189: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 184 185 188 + Store 179(pos1) 189 + 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 191 190(pos2) 92 + 195: 42(fvec4) CompositeExtract 82(patch) 3 0 + 196: 42(fvec4) CompositeExtract 82(patch) 2 0 + 197: 124(ptr) AccessChain 81(TessCoord) 15 + 198: 7(float) Load 197 + 199: 42(fvec4) CompositeConstruct 198 198 198 198 + 200: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 195 196 199 + Store 190(pos2) 200 + 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 202 201(pos) 92 + 206: 42(fvec4) Load 179(pos1) + 207: 42(fvec4) Load 190(pos2) + 208: 124(ptr) AccessChain 81(TessCoord) 35 + 209: 7(float) Load 208 + 210: 42(fvec4) CompositeConstruct 209 209 209 209 + 211: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 206 207 210 + Store 201(pos) 211 223: 212 Load 219(displacementMapTexture) 232: 224 Load 229(displacementMapSampler) 237: 233 SampledImage 223 232 - 238: 41(ptr) AccessChain 101(output) 119 + 238: 41(ptr) AccessChain 101(output) 120 239: 39(fvec2) Load 238 - 240: 42(fvec4) ImageSampleExplicitLod 237 239 Lod 105 + 240: 42(fvec4) ImageSampleExplicitLod 237 239 Lod 106 241: 7(float) CompositeExtract 240 0 - 280: 279(ptr) AccessChain 276 118 278 + 280: 279(ptr) AccessChain 276 119 278 281: 7(float) Load 280 282: 7(float) FMul 241 281 - 283: 123(ptr) AccessChain 201(pos) 35 + 283: 124(ptr) AccessChain 201(pos) 35 284: 7(float) Load 283 285: 7(float) FSub 284 282 - 286: 123(ptr) AccessChain 201(pos) 35 + 286: 124(ptr) AccessChain 201(pos) 35 Store 286 285 287: 42(fvec4) Load 201(pos) - 289: 288(ptr) AccessChain 276 118 121 + 289: 288(ptr) AccessChain 276 119 122 290: 242 Load 289 291: 42(fvec4) VectorTimesMatrix 287 290 - 292: 288(ptr) AccessChain 276 118 118 + 292: 288(ptr) AccessChain 276 119 119 293: 242 Load 292 294: 42(fvec4) VectorTimesMatrix 291 293 - 295: 178(ptr) AccessChain 101(output) 118 + 295: 178(ptr) AccessChain 101(output) 119 Store 295 294 296: 42(fvec4) Load 201(pos) 297: 44(fvec3) VectorShuffle 296 296 0 1 2 298: 44(fvec3) FNegate 297 - 299: 148(ptr) AccessChain 101(output) 133 + 299: 148(ptr) AccessChain 101(output) 134 Store 299 298 - 301: 300(ptr) AccessChain 276 118 119 + 301: 300(ptr) AccessChain 276 119 120 302: 42(fvec4) Load 301 303: 44(fvec3) VectorShuffle 302 302 0 1 2 - 304: 148(ptr) AccessChain 101(output) 133 + 304: 148(ptr) AccessChain 101(output) 134 305: 44(fvec3) Load 304 306: 44(fvec3) FAdd 303 305 307: 44(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 306 @@ -578,7 +578,7 @@ Validation failed 312: 148(ptr) AccessChain 101(output) 309 Store 312 311 314: 42(fvec4) Load 201(pos) - 315: 288(ptr) AccessChain 276 118 121 + 315: 288(ptr) AccessChain 276 119 122 316: 242 Load 315 317: 42(fvec4) VectorTimesMatrix 314 316 318: 44(fvec3) VectorShuffle 317 317 0 1 2 diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 6e1ce400d3..742cc04743 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -2,14 +2,14 @@ spv.debuginfo.hlsl.vert Validation failed // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 443 +// Id's are bound by 437 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 5 "main" 392 395 399 402 405 408 412 416 424 428 431 434 437 440 + EntryPoint Vertex 5 "main" 386 389 393 396 399 402 406 410 418 422 425 428 431 434 9: String "float" 12: String "uint" 23: String "int" @@ -26,20 +26,20 @@ Validation failed 81: String "input" 88: String "output" 116: String "s" - 127: String "modelview" - 132: String "lightPos" - 136: String "globSpeed" - 140: String "UBO" - 143: String "ubo" + 128: String "modelview" + 133: String "lightPos" + 137: String "globSpeed" + 141: String "UBO" + 144: String "ubo" 159: String "c" 173: String "mx" - 202: String "my" - 230: String "mz" - 244: String "rotMat" - 270: String "gRotMat" - 289: String "locPos" - 302: String "pos" - 361: String "lPos" + 200: String "my" + 226: String "mz" + 240: String "rotMat" + 264: String "gRotMat" + 284: String "locPos" + 297: String "pos" + 355: String "lPos" Name 5 "main" Name 26 "VSInput" MemberName 26(VSInput) 0 "Pos" @@ -61,68 +61,68 @@ Validation failed Name 73 "input" Name 86 "output" Name 114 "s" - Name 125 "UBO" - MemberName 125(UBO) 0 "projection" - MemberName 125(UBO) 1 "modelview" - MemberName 125(UBO) 2 "lightPos" - MemberName 125(UBO) 3 "locSpeed" - MemberName 125(UBO) 4 "globSpeed" - Name 141 "ubo" - MemberName 141(ubo) 0 "ubo" - Name 147 "" + Name 126 "UBO" + MemberName 126(UBO) 0 "projection" + MemberName 126(UBO) 1 "modelview" + MemberName 126(UBO) 2 "lightPos" + MemberName 126(UBO) 3 "locSpeed" + MemberName 126(UBO) 4 "globSpeed" + Name 142 "ubo" + MemberName 142(ubo) 0 "ubo" + Name 148 "" Name 157 "c" Name 171 "mx" - Name 200 "my" - Name 228 "mz" - Name 242 "rotMat" - Name 268 "gRotMat" - Name 287 "locPos" - Name 300 "pos" - Name 359 "lPos" - Name 390 "input" - Name 392 "input.Pos" - Name 395 "input.Normal" - Name 399 "input.UV" - Name 402 "input.Color" - Name 405 "input.instancePos" - Name 408 "input.instanceRot" - Name 412 "input.instanceScale" - Name 416 "input.instanceTexIndex" - Name 419 "flattenTemp" - Name 420 "param" - Name 424 "@entryPointOutput.Pos" - Name 428 "@entryPointOutput.Normal" - Name 431 "@entryPointOutput.Color" - Name 434 "@entryPointOutput.UV" - Name 437 "@entryPointOutput.ViewVec" - Name 440 "@entryPointOutput.LightVec" - MemberDecorate 125(UBO) 0 RowMajor - MemberDecorate 125(UBO) 0 Offset 0 - MemberDecorate 125(UBO) 0 MatrixStride 16 - MemberDecorate 125(UBO) 1 RowMajor - MemberDecorate 125(UBO) 1 Offset 64 - MemberDecorate 125(UBO) 1 MatrixStride 16 - MemberDecorate 125(UBO) 2 Offset 128 - MemberDecorate 125(UBO) 3 Offset 144 - MemberDecorate 125(UBO) 4 Offset 148 - MemberDecorate 141(ubo) 0 Offset 0 - Decorate 141(ubo) Block - Decorate 147 DescriptorSet 0 - Decorate 147 Binding 0 - Decorate 392(input.Pos) Location 0 - Decorate 395(input.Normal) Location 1 - Decorate 399(input.UV) Location 2 - Decorate 402(input.Color) Location 3 - Decorate 405(input.instancePos) Location 4 - Decorate 408(input.instanceRot) Location 5 - Decorate 412(input.instanceScale) Location 6 - Decorate 416(input.instanceTexIndex) Location 7 - Decorate 424(@entryPointOutput.Pos) BuiltIn Position - Decorate 428(@entryPointOutput.Normal) Location 0 - Decorate 431(@entryPointOutput.Color) Location 1 - Decorate 434(@entryPointOutput.UV) Location 2 - Decorate 437(@entryPointOutput.ViewVec) Location 3 - Decorate 440(@entryPointOutput.LightVec) Location 4 + Name 198 "my" + Name 224 "mz" + Name 238 "rotMat" + Name 262 "gRotMat" + Name 282 "locPos" + Name 295 "pos" + Name 353 "lPos" + Name 384 "input" + Name 386 "input.Pos" + Name 389 "input.Normal" + Name 393 "input.UV" + Name 396 "input.Color" + Name 399 "input.instancePos" + Name 402 "input.instanceRot" + Name 406 "input.instanceScale" + Name 410 "input.instanceTexIndex" + Name 413 "flattenTemp" + Name 414 "param" + Name 418 "@entryPointOutput.Pos" + Name 422 "@entryPointOutput.Normal" + Name 425 "@entryPointOutput.Color" + Name 428 "@entryPointOutput.UV" + Name 431 "@entryPointOutput.ViewVec" + Name 434 "@entryPointOutput.LightVec" + MemberDecorate 126(UBO) 0 RowMajor + MemberDecorate 126(UBO) 0 Offset 0 + MemberDecorate 126(UBO) 0 MatrixStride 16 + MemberDecorate 126(UBO) 1 RowMajor + MemberDecorate 126(UBO) 1 Offset 64 + MemberDecorate 126(UBO) 1 MatrixStride 16 + MemberDecorate 126(UBO) 2 Offset 128 + MemberDecorate 126(UBO) 3 Offset 144 + MemberDecorate 126(UBO) 4 Offset 148 + MemberDecorate 142(ubo) 0 Offset 0 + Decorate 142(ubo) Block + Decorate 148 DescriptorSet 0 + Decorate 148 Binding 0 + Decorate 386(input.Pos) Location 0 + Decorate 389(input.Normal) Location 1 + Decorate 393(input.UV) Location 2 + Decorate 396(input.Color) Location 3 + Decorate 399(input.instancePos) Location 4 + Decorate 402(input.instanceRot) Location 5 + Decorate 406(input.instanceScale) Location 6 + Decorate 410(input.instanceTexIndex) Location 7 + Decorate 418(@entryPointOutput.Pos) BuiltIn Position + Decorate 422(@entryPointOutput.Normal) Location 0 + Decorate 425(@entryPointOutput.Color) Location 1 + Decorate 428(@entryPointOutput.UV) Location 2 + Decorate 431(@entryPointOutput.ViewVec) Location 3 + Decorate 434(@entryPointOutput.LightVec) Location 4 3: TypeVoid 4: TypeFunction 3 7: TypeFloat 32 @@ -185,10 +185,10 @@ Validation failed 85: TypePointer Function 57(VSOutput) 89: 10(int) Constant 63 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 88 69 29 89 15 76 25 - 90: 7(float) Constant 0 - 91: 55(fvec4) ConstantComposite 90 90 90 90 - 92: 17(fvec3) ConstantComposite 90 90 90 - 93:57(VSOutput) ConstantComposite 91 92 92 92 92 92 + 91: 7(float) Constant 0 + 92: 55(fvec4) ConstantComposite 91 91 91 91 + 93: 17(fvec3) ConstantComposite 91 91 91 + 94:57(VSOutput) ConstantComposite 92 93 93 93 93 93 95: 22(int) Constant 2 96: 22(int) Constant 3 97: TypePointer Function 17(fvec3) @@ -198,135 +198,135 @@ Validation failed 113: TypePointer Function 7(float) 117: 10(int) Constant 68 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 116 8 29 117 15 76 25 - 118: 22(int) Constant 5 - 121: TypeMatrix 55(fvec4) 4 - 123: TypeBool - 124: 123(bool) ConstantTrue - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 56 25 124 - 125(UBO): TypeStruct 121 121 55(fvec4) 7(float) 7(float) - 128: 10(int) Constant 43 - 129: 10(int) Constant 20 - 126: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 127 122 29 128 129 15 15 16 - 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 127 122 29 128 129 15 15 16 - 133: 10(int) Constant 44 - 134: 10(int) Constant 17 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 56 29 133 134 15 15 16 - 137: 10(int) Constant 46 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 136 8 29 137 134 15 15 16 - 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 136 8 29 137 134 15 15 16 - 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 140 51 29 117 15 52 140 15 16 126 130 131 135 138 - 141(ubo): TypeStruct 125(UBO) - 144: 10(int) Constant 49 - 142: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 143 139 29 144 47 15 15 16 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 143 51 29 117 15 52 143 15 16 142 - 146: TypePointer Uniform 141(ubo) - 147: 146(ptr) Variable Uniform - 149: 10(int) Constant 8 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 145 29 117 15 52 30 147 149 - 150: 22(int) Constant 0 - 151: TypePointer Uniform 7(float) + 119: 22(int) Constant 5 + 122: TypeMatrix 55(fvec4) 4 + 124: TypeBool + 125: 124(bool) ConstantTrue + 123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 56 25 125 + 126(UBO): TypeStruct 122 122 55(fvec4) 7(float) 7(float) + 129: 10(int) Constant 43 + 130: 10(int) Constant 20 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 128 123 29 129 130 15 15 16 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 128 123 29 129 130 15 15 16 + 134: 10(int) Constant 44 + 135: 10(int) Constant 17 + 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 133 56 29 134 135 15 15 16 + 138: 10(int) Constant 46 + 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 8 29 138 135 15 15 16 + 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 8 29 138 135 15 15 16 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 51 29 117 15 52 141 15 16 127 131 132 136 139 + 142(ubo): TypeStruct 126(UBO) + 145: 10(int) Constant 49 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 144 140 29 145 47 15 15 16 + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 144 51 29 117 15 52 144 15 16 143 + 147: TypePointer Uniform 142(ubo) + 148: 147(ptr) Variable Uniform + 150: 10(int) Constant 8 + 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 146 29 117 15 52 30 148 150 + 151: 22(int) Constant 0 + 152: TypePointer Uniform 7(float) 160: 10(int) Constant 69 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 159 8 29 160 15 76 25 168: TypeMatrix 17(fvec3) 3 - 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 18 16 124 + 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 18 16 125 170: TypePointer Function 168 174: 10(int) Constant 71 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 173 169 29 174 15 76 25 - 180: 7(float) Constant 1065353216 - 203: 10(int) Constant 79 - 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 202 169 29 203 15 76 25 - 231: 10(int) Constant 87 - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 169 29 231 15 76 25 - 245: 10(int) Constant 91 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 169 29 245 15 76 25 - 254: 22(int) Constant 4 - 267: TypePointer Function 121 - 271: 10(int) Constant 96 - 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 270 122 29 271 15 76 25 - 276: TypePointer Function 55(fvec4) - 278: 22(int) Constant 1 - 279: 55(fvec4) ConstantComposite 90 180 90 90 - 285: 55(fvec4) ConstantComposite 90 90 90 180 - 290: 10(int) Constant 101 - 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 56 29 290 15 76 25 - 303: 10(int) Constant 102 - 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 302 56 29 303 15 76 25 - 306: 22(int) Constant 6 - 321: TypePointer Uniform 121 - 362: 10(int) Constant 108 - 360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 361 18 29 362 15 76 25 - 363: TypePointer Uniform 55(fvec4) - 391: TypePointer Input 17(fvec3) - 392(input.Pos): 391(ptr) Variable Input -395(input.Normal): 391(ptr) Variable Input - 398: TypePointer Input 19(fvec2) - 399(input.UV): 398(ptr) Variable Input -402(input.Color): 391(ptr) Variable Input -405(input.instancePos): 391(ptr) Variable Input -408(input.instanceRot): 391(ptr) Variable Input - 411: TypePointer Input 7(float) -412(input.instanceScale): 411(ptr) Variable Input - 415: TypePointer Input 22(int) -416(input.instanceTexIndex): 415(ptr) Variable Input - 423: TypePointer Output 55(fvec4) -424(@entryPointOutput.Pos): 423(ptr) Variable Output - 427: TypePointer Output 17(fvec3) -428(@entryPointOutput.Normal): 427(ptr) Variable Output -431(@entryPointOutput.Color): 427(ptr) Variable Output -434(@entryPointOutput.UV): 427(ptr) Variable Output -437(@entryPointOutput.ViewVec): 427(ptr) Variable Output -440(@entryPointOutput.LightVec): 427(ptr) Variable Output + 181: 7(float) Constant 1065353216 + 201: 10(int) Constant 79 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 200 169 29 201 15 76 25 + 227: 10(int) Constant 87 + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 226 169 29 227 15 76 25 + 241: 10(int) Constant 91 + 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 240 169 29 241 15 76 25 + 250: 22(int) Constant 4 + 261: TypePointer Function 122 + 265: 10(int) Constant 96 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 264 123 29 265 15 76 25 + 271: TypePointer Function 55(fvec4) + 273: 22(int) Constant 1 + 274: 55(fvec4) ConstantComposite 91 181 91 91 + 280: 55(fvec4) ConstantComposite 91 91 91 181 + 285: 10(int) Constant 101 + 283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 284 56 29 285 15 76 25 + 298: 10(int) Constant 102 + 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 297 56 29 298 15 76 25 + 302: 22(int) Constant 6 + 316: TypePointer Uniform 122 + 356: 10(int) Constant 108 + 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 355 18 29 356 15 76 25 + 358: TypePointer Uniform 55(fvec4) + 385: TypePointer Input 17(fvec3) + 386(input.Pos): 385(ptr) Variable Input +389(input.Normal): 385(ptr) Variable Input + 392: TypePointer Input 19(fvec2) + 393(input.UV): 392(ptr) Variable Input +396(input.Color): 385(ptr) Variable Input +399(input.instancePos): 385(ptr) Variable Input +402(input.instanceRot): 385(ptr) Variable Input + 405: TypePointer Input 7(float) +406(input.instanceScale): 405(ptr) Variable Input + 409: TypePointer Input 22(int) +410(input.instanceTexIndex): 409(ptr) Variable Input + 417: TypePointer Output 55(fvec4) +418(@entryPointOutput.Pos): 417(ptr) Variable Output + 421: TypePointer Output 17(fvec3) +422(@entryPointOutput.Normal): 421(ptr) Variable Output +425(@entryPointOutput.Color): 421(ptr) Variable Output +428(@entryPointOutput.UV): 421(ptr) Variable Output +431(@entryPointOutput.ViewVec): 421(ptr) Variable Output +434(@entryPointOutput.LightVec): 421(ptr) Variable Output 5(main): 3 Function None 4 6: Label - 390(input): 54(ptr) Variable Function -419(flattenTemp): 85(ptr) Variable Function - 420(param): 54(ptr) Variable Function - 393: 17(fvec3) Load 392(input.Pos) - 394: 97(ptr) AccessChain 390(input) 150 - Store 394 393 - 396: 17(fvec3) Load 395(input.Normal) - 397: 97(ptr) AccessChain 390(input) 278 - Store 397 396 - 400: 19(fvec2) Load 399(input.UV) - 401: 101(ptr) AccessChain 390(input) 95 + 384(input): 54(ptr) Variable Function +413(flattenTemp): 85(ptr) Variable Function + 414(param): 54(ptr) Variable Function + 387: 17(fvec3) Load 386(input.Pos) + 388: 97(ptr) AccessChain 384(input) 151 + Store 388 387 + 390: 17(fvec3) Load 389(input.Normal) + 391: 97(ptr) AccessChain 384(input) 273 + Store 391 390 + 394: 19(fvec2) Load 393(input.UV) + 395: 101(ptr) AccessChain 384(input) 95 + Store 395 394 + 397: 17(fvec3) Load 396(input.Color) + 398: 97(ptr) AccessChain 384(input) 96 + Store 398 397 + 400: 17(fvec3) Load 399(input.instancePos) + 401: 97(ptr) AccessChain 384(input) 250 Store 401 400 - 403: 17(fvec3) Load 402(input.Color) - 404: 97(ptr) AccessChain 390(input) 96 + 403: 17(fvec3) Load 402(input.instanceRot) + 404: 97(ptr) AccessChain 384(input) 119 Store 404 403 - 406: 17(fvec3) Load 405(input.instancePos) - 407: 97(ptr) AccessChain 390(input) 254 - Store 407 406 - 409: 17(fvec3) Load 408(input.instanceRot) - 410: 97(ptr) AccessChain 390(input) 118 - Store 410 409 - 413: 7(float) Load 412(input.instanceScale) - 414: 113(ptr) AccessChain 390(input) 306 - Store 414 413 - 417: 22(int) Load 416(input.instanceTexIndex) - 418: 105(ptr) AccessChain 390(input) 104 - Store 418 417 - 421: 26(VSInput) Load 390(input) - Store 420(param) 421 - 422:57(VSOutput) FunctionCall 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 420(param) - Store 419(flattenTemp) 422 - 425: 276(ptr) AccessChain 419(flattenTemp) 150 - 426: 55(fvec4) Load 425 - Store 424(@entryPointOutput.Pos) 426 - 429: 97(ptr) AccessChain 419(flattenTemp) 278 + 407: 7(float) Load 406(input.instanceScale) + 408: 113(ptr) AccessChain 384(input) 302 + Store 408 407 + 411: 22(int) Load 410(input.instanceTexIndex) + 412: 105(ptr) AccessChain 384(input) 104 + Store 412 411 + 415: 26(VSInput) Load 384(input) + Store 414(param) 415 + 416:57(VSOutput) FunctionCall 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 414(param) + Store 413(flattenTemp) 416 + 419: 271(ptr) AccessChain 413(flattenTemp) 151 + 420: 55(fvec4) Load 419 + Store 418(@entryPointOutput.Pos) 420 + 423: 97(ptr) AccessChain 413(flattenTemp) 273 + 424: 17(fvec3) Load 423 + Store 422(@entryPointOutput.Normal) 424 + 426: 97(ptr) AccessChain 413(flattenTemp) 95 + 427: 17(fvec3) Load 426 + Store 425(@entryPointOutput.Color) 427 + 429: 97(ptr) AccessChain 413(flattenTemp) 96 430: 17(fvec3) Load 429 - Store 428(@entryPointOutput.Normal) 430 - 432: 97(ptr) AccessChain 419(flattenTemp) 95 + Store 428(@entryPointOutput.UV) 430 + 432: 97(ptr) AccessChain 413(flattenTemp) 250 433: 17(fvec3) Load 432 - Store 431(@entryPointOutput.Color) 433 - 435: 97(ptr) AccessChain 419(flattenTemp) 96 + Store 431(@entryPointOutput.ViewVec) 433 + 435: 97(ptr) AccessChain 413(flattenTemp) 119 436: 17(fvec3) Load 435 - Store 434(@entryPointOutput.UV) 436 - 438: 97(ptr) AccessChain 419(flattenTemp) 254 - 439: 17(fvec3) Load 438 - Store 437(@entryPointOutput.ViewVec) 439 - 441: 97(ptr) AccessChain 419(flattenTemp) 118 - 442: 17(fvec3) Load 441 - Store 440(@entryPointOutput.LightVec) 442 + Store 434(@entryPointOutput.LightVec) 436 Return FunctionEnd 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):57(VSOutput) Function None 71 @@ -336,19 +336,19 @@ Validation failed 114(s): 113(ptr) Variable Function 157(c): 113(ptr) Variable Function 171(mx): 170(ptr) Variable Function - 200(my): 170(ptr) Variable Function - 228(mz): 170(ptr) Variable Function - 242(rotMat): 170(ptr) Variable Function - 268(gRotMat): 267(ptr) Variable Function - 287(locPos): 276(ptr) Variable Function - 300(pos): 276(ptr) Variable Function - 359(lPos): 97(ptr) Variable Function + 198(my): 170(ptr) Variable Function + 224(mz): 170(ptr) Variable Function + 238(rotMat): 170(ptr) Variable Function + 262(gRotMat): 261(ptr) Variable Function + 282(locPos): 271(ptr) Variable Function + 295(pos): 271(ptr) Variable Function + 353(lPos): 97(ptr) Variable Function 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 73(input) 83 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) - Store 86(output) 93 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 87 93 83 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 87 86(output) 83 + Store 86(output) 94 98: 97(ptr) AccessChain 73(input) 96 99: 17(fvec3) Load 98 100: 97(ptr) AccessChain 86(output) 95 @@ -363,218 +363,212 @@ Validation failed 111: 17(fvec3) CompositeConstruct 109 110 108 112: 97(ptr) AccessChain 86(output) 96 Store 112 111 - 119: 113(ptr) AccessChain 73(input) 118 15 - 120: 7(float) Load 119 - 152: 151(ptr) AccessChain 147 150 96 - 153: 7(float) Load 152 - 154: 7(float) FAdd 120 153 - 155: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 154 - Store 114(s) 155 - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 155 83 - 161: 113(ptr) AccessChain 73(input) 118 15 - 162: 7(float) Load 161 - 163: 151(ptr) AccessChain 147 150 96 - 164: 7(float) Load 163 - 165: 7(float) FAdd 162 164 - 166: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 165 - Store 157(c) 166 - 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 166 83 - 175: 7(float) Load 157(c) - 176: 7(float) Load 114(s) - 177: 7(float) FNegate 176 - 178: 7(float) Load 114(s) - 179: 7(float) Load 157(c) - 181: 17(fvec3) CompositeConstruct 175 177 90 - 182: 17(fvec3) CompositeConstruct 178 179 90 - 183: 17(fvec3) CompositeConstruct 90 90 180 - 184: 168 CompositeConstruct 181 182 183 - Store 171(mx) 184 - 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 172 184 83 - 186: 113(ptr) AccessChain 73(input) 118 51 + 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 115 114(s) 83 + 120: 113(ptr) AccessChain 73(input) 119 15 + 121: 7(float) Load 120 + 153: 152(ptr) AccessChain 148 151 96 + 154: 7(float) Load 153 + 155: 7(float) FAdd 121 154 + 156: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 155 + Store 114(s) 156 + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 158 157(c) 83 + 162: 113(ptr) AccessChain 73(input) 119 15 + 163: 7(float) Load 162 + 164: 152(ptr) AccessChain 148 151 96 + 165: 7(float) Load 164 + 166: 7(float) FAdd 163 165 + 167: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 166 + Store 157(c) 167 + 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 172 171(mx) 83 + 176: 7(float) Load 157(c) + 177: 7(float) Load 114(s) + 178: 7(float) FNegate 177 + 179: 7(float) Load 114(s) + 180: 7(float) Load 157(c) + 182: 17(fvec3) CompositeConstruct 176 178 91 + 183: 17(fvec3) CompositeConstruct 179 180 91 + 184: 17(fvec3) CompositeConstruct 91 91 181 + 185: 168 CompositeConstruct 182 183 184 + Store 171(mx) 185 + 186: 113(ptr) AccessChain 73(input) 119 51 187: 7(float) Load 186 - 188: 151(ptr) AccessChain 147 150 96 + 188: 152(ptr) AccessChain 148 151 96 189: 7(float) Load 188 190: 7(float) FAdd 187 189 191: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 190 Store 114(s) 191 - 192: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 191 83 - 193: 113(ptr) AccessChain 73(input) 118 51 - 194: 7(float) Load 193 - 195: 151(ptr) AccessChain 147 150 96 - 196: 7(float) Load 195 - 197: 7(float) FAdd 194 196 - 198: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 197 - Store 157(c) 198 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 198 83 - 204: 7(float) Load 157(c) - 205: 7(float) Load 114(s) - 206: 7(float) FNegate 205 - 207: 7(float) Load 114(s) - 208: 7(float) Load 157(c) - 209: 17(fvec3) CompositeConstruct 204 90 206 - 210: 17(fvec3) CompositeConstruct 90 180 90 - 211: 17(fvec3) CompositeConstruct 207 90 208 - 212: 168 CompositeConstruct 209 210 211 - Store 200(my) 212 - 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 201 212 83 - 214: 113(ptr) AccessChain 73(input) 118 20 + 192: 113(ptr) AccessChain 73(input) 119 51 + 193: 7(float) Load 192 + 194: 152(ptr) AccessChain 148 151 96 + 195: 7(float) Load 194 + 196: 7(float) FAdd 193 195 + 197: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 196 + Store 157(c) 197 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 199 198(my) 83 + 203: 7(float) Load 157(c) + 204: 7(float) Load 114(s) + 205: 7(float) FNegate 204 + 206: 7(float) Load 114(s) + 207: 7(float) Load 157(c) + 208: 17(fvec3) CompositeConstruct 203 91 205 + 209: 17(fvec3) CompositeConstruct 91 181 91 + 210: 17(fvec3) CompositeConstruct 206 91 207 + 211: 168 CompositeConstruct 208 209 210 + Store 198(my) 211 + 212: 113(ptr) AccessChain 73(input) 119 20 + 213: 7(float) Load 212 + 214: 152(ptr) AccessChain 148 151 96 215: 7(float) Load 214 - 216: 151(ptr) AccessChain 147 150 96 - 217: 7(float) Load 216 - 218: 7(float) FAdd 215 217 - 219: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 218 - Store 114(s) 219 - 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 219 83 - 221: 113(ptr) AccessChain 73(input) 118 20 - 222: 7(float) Load 221 - 223: 151(ptr) AccessChain 147 150 96 - 224: 7(float) Load 223 - 225: 7(float) FAdd 222 224 - 226: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 225 - Store 157(c) 226 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 226 83 - 232: 7(float) Load 157(c) - 233: 7(float) Load 114(s) - 234: 7(float) FNegate 233 - 235: 7(float) Load 114(s) - 236: 7(float) Load 157(c) - 237: 17(fvec3) CompositeConstruct 180 90 90 - 238: 17(fvec3) CompositeConstruct 90 232 234 - 239: 17(fvec3) CompositeConstruct 90 235 236 - 240: 168 CompositeConstruct 237 238 239 - Store 228(mz) 240 - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 229 240 83 - 246: 168 Load 171(mx) - 247: 168 Load 200(my) - 248: 168 MatrixTimesMatrix 246 247 - 249: 168 Load 228(mz) - 250: 168 MatrixTimesMatrix 248 249 - Store 242(rotMat) 250 - 251: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 243 250 83 - 252: 113(ptr) AccessChain 73(input) 118 51 - 253: 7(float) Load 252 - 255: 151(ptr) AccessChain 147 150 254 + 216: 7(float) FAdd 213 215 + 217: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 216 + Store 114(s) 217 + 218: 113(ptr) AccessChain 73(input) 119 20 + 219: 7(float) Load 218 + 220: 152(ptr) AccessChain 148 151 96 + 221: 7(float) Load 220 + 222: 7(float) FAdd 219 221 + 223: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 222 + Store 157(c) 223 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 225 224(mz) 83 + 229: 7(float) Load 157(c) + 230: 7(float) Load 114(s) + 231: 7(float) FNegate 230 + 232: 7(float) Load 114(s) + 233: 7(float) Load 157(c) + 234: 17(fvec3) CompositeConstruct 181 91 91 + 235: 17(fvec3) CompositeConstruct 91 229 231 + 236: 17(fvec3) CompositeConstruct 91 232 233 + 237: 168 CompositeConstruct 234 235 236 + Store 224(mz) 237 + 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 239 238(rotMat) 83 + 243: 168 Load 171(mx) + 244: 168 Load 198(my) + 245: 168 MatrixTimesMatrix 243 244 + 246: 168 Load 224(mz) + 247: 168 MatrixTimesMatrix 245 246 + Store 238(rotMat) 247 + 248: 113(ptr) AccessChain 73(input) 119 51 + 249: 7(float) Load 248 + 251: 152(ptr) AccessChain 148 151 250 + 252: 7(float) Load 251 + 253: 7(float) FAdd 249 252 + 254: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 253 + Store 114(s) 254 + 255: 113(ptr) AccessChain 73(input) 119 51 256: 7(float) Load 255 - 257: 7(float) FAdd 253 256 - 258: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 257 - Store 114(s) 258 - 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 115 258 83 - 260: 113(ptr) AccessChain 73(input) 118 51 - 261: 7(float) Load 260 - 262: 151(ptr) AccessChain 147 150 254 - 263: 7(float) Load 262 - 264: 7(float) FAdd 261 263 - 265: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 264 - Store 157(c) 265 - 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 158 265 83 - 272: 7(float) Load 157(c) - 273: 7(float) Load 114(s) - 274: 7(float) FNegate 273 - 275: 55(fvec4) CompositeConstruct 272 90 274 90 - 277: 276(ptr) AccessChain 268(gRotMat) 150 - Store 277 275 - 280: 276(ptr) AccessChain 268(gRotMat) 278 - Store 280 279 - 281: 7(float) Load 114(s) - 282: 7(float) Load 157(c) - 283: 55(fvec4) CompositeConstruct 281 90 282 90 - 284: 276(ptr) AccessChain 268(gRotMat) 95 - Store 284 283 - 286: 276(ptr) AccessChain 268(gRotMat) 96 - Store 286 285 - 291: 97(ptr) AccessChain 73(input) 150 - 292: 17(fvec3) Load 291 - 293: 168 Load 242(rotMat) - 294: 17(fvec3) VectorTimesMatrix 292 293 - 295: 7(float) CompositeExtract 294 0 - 296: 7(float) CompositeExtract 294 1 - 297: 7(float) CompositeExtract 294 2 - 298: 55(fvec4) CompositeConstruct 295 296 297 180 - Store 287(locPos) 298 - 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 288 298 83 - 304: 55(fvec4) Load 287(locPos) - 305: 17(fvec3) VectorShuffle 304 304 0 1 2 - 307: 113(ptr) AccessChain 73(input) 306 - 308: 7(float) Load 307 - 309: 17(fvec3) VectorTimesScalar 305 308 - 310: 97(ptr) AccessChain 73(input) 254 - 311: 17(fvec3) Load 310 - 312: 17(fvec3) FAdd 309 311 - 313: 7(float) CompositeExtract 312 0 - 314: 7(float) CompositeExtract 312 1 - 315: 7(float) CompositeExtract 312 2 - 316: 55(fvec4) CompositeConstruct 313 314 315 180 - Store 300(pos) 316 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 301 316 83 - 318: 55(fvec4) Load 300(pos) - 319: 121 Load 268(gRotMat) - 320: 55(fvec4) VectorTimesMatrix 318 319 - 322: 321(ptr) AccessChain 147 150 278 - 323: 121 Load 322 - 324: 55(fvec4) VectorTimesMatrix 320 323 - 325: 321(ptr) AccessChain 147 150 150 - 326: 121 Load 325 - 327: 55(fvec4) VectorTimesMatrix 324 326 - 328: 276(ptr) AccessChain 86(output) 150 - Store 328 327 - 329: 97(ptr) AccessChain 73(input) 278 - 330: 17(fvec3) Load 329 - 331: 168 Load 242(rotMat) - 332: 17(fvec3) VectorTimesMatrix 330 331 - 333: 121 Load 268(gRotMat) - 334: 321(ptr) AccessChain 147 150 278 - 335: 121 Load 334 - 336: 121 MatrixTimesMatrix 333 335 - 337: 55(fvec4) CompositeExtract 336 0 - 338: 17(fvec3) VectorShuffle 337 337 0 1 2 - 339: 55(fvec4) CompositeExtract 336 1 - 340: 17(fvec3) VectorShuffle 339 339 0 1 2 - 341: 55(fvec4) CompositeExtract 336 2 - 342: 17(fvec3) VectorShuffle 341 341 0 1 2 - 343: 168 CompositeConstruct 338 340 342 - 344: 17(fvec3) VectorTimesMatrix 332 343 - 345: 97(ptr) AccessChain 86(output) 278 - Store 345 344 - 346: 97(ptr) AccessChain 73(input) 150 - 347: 17(fvec3) Load 346 - 348: 97(ptr) AccessChain 73(input) 254 - 349: 17(fvec3) Load 348 - 350: 17(fvec3) FAdd 347 349 - 351: 7(float) CompositeExtract 350 0 - 352: 7(float) CompositeExtract 350 1 - 353: 7(float) CompositeExtract 350 2 - 354: 55(fvec4) CompositeConstruct 351 352 353 180 - 355: 321(ptr) AccessChain 147 150 278 - 356: 121 Load 355 - 357: 55(fvec4) VectorTimesMatrix 354 356 - Store 300(pos) 357 - 358: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 301 357 83 - 364: 363(ptr) AccessChain 147 150 95 - 365: 55(fvec4) Load 364 - 366: 17(fvec3) VectorShuffle 365 365 0 1 2 - 367: 321(ptr) AccessChain 147 150 278 - 368: 121 Load 367 - 369: 55(fvec4) CompositeExtract 368 0 - 370: 17(fvec3) VectorShuffle 369 369 0 1 2 - 371: 55(fvec4) CompositeExtract 368 1 - 372: 17(fvec3) VectorShuffle 371 371 0 1 2 - 373: 55(fvec4) CompositeExtract 368 2 + 257: 152(ptr) AccessChain 148 151 250 + 258: 7(float) Load 257 + 259: 7(float) FAdd 256 258 + 260: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 259 + Store 157(c) 260 + 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 263 262(gRotMat) 83 + 267: 7(float) Load 157(c) + 268: 7(float) Load 114(s) + 269: 7(float) FNegate 268 + 270: 55(fvec4) CompositeConstruct 267 91 269 91 + 272: 271(ptr) AccessChain 262(gRotMat) 151 + Store 272 270 + 275: 271(ptr) AccessChain 262(gRotMat) 273 + Store 275 274 + 276: 7(float) Load 114(s) + 277: 7(float) Load 157(c) + 278: 55(fvec4) CompositeConstruct 276 91 277 91 + 279: 271(ptr) AccessChain 262(gRotMat) 95 + Store 279 278 + 281: 271(ptr) AccessChain 262(gRotMat) 96 + Store 281 280 + 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 283 282(locPos) 83 + 287: 97(ptr) AccessChain 73(input) 151 + 288: 17(fvec3) Load 287 + 289: 168 Load 238(rotMat) + 290: 17(fvec3) VectorTimesMatrix 288 289 + 291: 7(float) CompositeExtract 290 0 + 292: 7(float) CompositeExtract 290 1 + 293: 7(float) CompositeExtract 290 2 + 294: 55(fvec4) CompositeConstruct 291 292 293 181 + Store 282(locPos) 294 + 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 296 295(pos) 83 + 300: 55(fvec4) Load 282(locPos) + 301: 17(fvec3) VectorShuffle 300 300 0 1 2 + 303: 113(ptr) AccessChain 73(input) 302 + 304: 7(float) Load 303 + 305: 17(fvec3) VectorTimesScalar 301 304 + 306: 97(ptr) AccessChain 73(input) 250 + 307: 17(fvec3) Load 306 + 308: 17(fvec3) FAdd 305 307 + 309: 7(float) CompositeExtract 308 0 + 310: 7(float) CompositeExtract 308 1 + 311: 7(float) CompositeExtract 308 2 + 312: 55(fvec4) CompositeConstruct 309 310 311 181 + Store 295(pos) 312 + 313: 55(fvec4) Load 295(pos) + 314: 122 Load 262(gRotMat) + 315: 55(fvec4) VectorTimesMatrix 313 314 + 317: 316(ptr) AccessChain 148 151 273 + 318: 122 Load 317 + 319: 55(fvec4) VectorTimesMatrix 315 318 + 320: 316(ptr) AccessChain 148 151 151 + 321: 122 Load 320 + 322: 55(fvec4) VectorTimesMatrix 319 321 + 323: 271(ptr) AccessChain 86(output) 151 + Store 323 322 + 324: 97(ptr) AccessChain 73(input) 273 + 325: 17(fvec3) Load 324 + 326: 168 Load 238(rotMat) + 327: 17(fvec3) VectorTimesMatrix 325 326 + 328: 122 Load 262(gRotMat) + 329: 316(ptr) AccessChain 148 151 273 + 330: 122 Load 329 + 331: 122 MatrixTimesMatrix 328 330 + 332: 55(fvec4) CompositeExtract 331 0 + 333: 17(fvec3) VectorShuffle 332 332 0 1 2 + 334: 55(fvec4) CompositeExtract 331 1 + 335: 17(fvec3) VectorShuffle 334 334 0 1 2 + 336: 55(fvec4) CompositeExtract 331 2 + 337: 17(fvec3) VectorShuffle 336 336 0 1 2 + 338: 168 CompositeConstruct 333 335 337 + 339: 17(fvec3) VectorTimesMatrix 327 338 + 340: 97(ptr) AccessChain 86(output) 273 + Store 340 339 + 341: 97(ptr) AccessChain 73(input) 151 + 342: 17(fvec3) Load 341 + 343: 97(ptr) AccessChain 73(input) 250 + 344: 17(fvec3) Load 343 + 345: 17(fvec3) FAdd 342 344 + 346: 7(float) CompositeExtract 345 0 + 347: 7(float) CompositeExtract 345 1 + 348: 7(float) CompositeExtract 345 2 + 349: 55(fvec4) CompositeConstruct 346 347 348 181 + 350: 316(ptr) AccessChain 148 151 273 + 351: 122 Load 350 + 352: 55(fvec4) VectorTimesMatrix 349 351 + Store 295(pos) 352 + 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 354 353(lPos) 83 + 359: 358(ptr) AccessChain 148 151 95 + 360: 55(fvec4) Load 359 + 361: 17(fvec3) VectorShuffle 360 360 0 1 2 + 362: 316(ptr) AccessChain 148 151 273 + 363: 122 Load 362 + 364: 55(fvec4) CompositeExtract 363 0 + 365: 17(fvec3) VectorShuffle 364 364 0 1 2 + 366: 55(fvec4) CompositeExtract 363 1 + 367: 17(fvec3) VectorShuffle 366 366 0 1 2 + 368: 55(fvec4) CompositeExtract 363 2 + 369: 17(fvec3) VectorShuffle 368 368 0 1 2 + 370: 168 CompositeConstruct 365 367 369 + 371: 17(fvec3) VectorTimesMatrix 361 370 + Store 353(lPos) 371 + 372: 17(fvec3) Load 353(lPos) + 373: 55(fvec4) Load 295(pos) 374: 17(fvec3) VectorShuffle 373 373 0 1 2 - 375: 168 CompositeConstruct 370 372 374 - 376: 17(fvec3) VectorTimesMatrix 366 375 - Store 359(lPos) 376 - 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(Exp2) 360 376 83 - 378: 17(fvec3) Load 359(lPos) - 379: 55(fvec4) Load 300(pos) - 380: 17(fvec3) VectorShuffle 379 379 0 1 2 - 381: 17(fvec3) FSub 378 380 - 382: 97(ptr) AccessChain 86(output) 118 - Store 382 381 - 383: 55(fvec4) Load 300(pos) - 384: 17(fvec3) VectorShuffle 383 383 0 1 2 - 385: 17(fvec3) FNegate 384 - 386: 97(ptr) AccessChain 86(output) 254 - Store 386 385 - 387:57(VSOutput) Load 86(output) - ReturnValue 387 + 375: 17(fvec3) FSub 372 374 + 376: 97(ptr) AccessChain 86(output) 119 + Store 376 375 + 377: 55(fvec4) Load 295(pos) + 378: 17(fvec3) VectorShuffle 377 377 0 1 2 + 379: 17(fvec3) FNegate 378 + 380: 97(ptr) AccessChain 86(output) 250 + Store 380 379 + 381:57(VSOutput) Load 86(output) + ReturnValue 381 FunctionEnd From 559a5f1d82039c4adcc6ac8089255ed3ed1e14ad Mon Sep 17 00:00:00 2001 From: Pankaj Mistry Date: Mon, 26 Sep 2022 12:45:39 -0700 Subject: [PATCH 095/594] Fix for bug #3019 : That incorrectly removed perVertexEXT qualifier as arrayed IO This bug got introduced as part of EXT_mesh_shader changes 228c672 Also updated barycentric test cases to add coverage for multiple pervertexEXT array inputs --- .../spv.fragmentShaderBarycentric2.frag.out | 28 +++++++++++++++++-- .../spv.fragmentShaderBarycentric4.frag.out | 28 +++++++++++++++++-- Test/spv.fragmentShaderBarycentric2.frag | 6 ++++ Test/spv.fragmentShaderBarycentric4.frag | 5 ++++ glslang/Include/Types.h | 2 +- 5 files changed, 64 insertions(+), 5 deletions(-) diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out index c09767631f..23926cd7f5 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out @@ -1,14 +1,14 @@ spv.fragmentShaderBarycentric2.frag // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 42 +// Id's are bound by 62 Capability Shader Capability FragmentBarycentricKHR Extension "SPV_NV_fragment_shader_barycentric" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 8 11 20 + EntryPoint Fragment 4 "main" 8 11 20 44 ExecutionMode 4 OriginUpperLeft Source ESSL 320 SourceExtension "GL_NV_fragment_shader_barycentric" @@ -16,10 +16,13 @@ spv.fragmentShaderBarycentric2.frag Name 8 "value" Name 11 "gl_BaryCoordNoPerspNV" Name 20 "vertexIDs" + Name 44 "vertexIDs2" Decorate 8(value) Location 1 Decorate 11(gl_BaryCoordNoPerspNV) BuiltIn BaryCoordNoPerspKHR Decorate 20(vertexIDs) Location 0 Decorate 20(vertexIDs) PerVertexKHR + Decorate 44(vertexIDs2) Location 1 + Decorate 44(vertexIDs2) PerVertexKHR 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -41,6 +44,7 @@ spv.fragmentShaderBarycentric2.frag 29: 21(int) Constant 1 34: 12(int) Constant 2 37: 21(int) Constant 2 + 44(vertexIDs2): 19(ptr) Variable Input 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 13 @@ -61,5 +65,25 @@ spv.fragmentShaderBarycentric2.frag 40: 6(float) FMul 36 39 41: 6(float) FAdd 33 40 Store 8(value) 41 + 42: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 13 + 43: 6(float) Load 42 + 45: 14(ptr) AccessChain 44(vertexIDs2) 22 + 46: 6(float) Load 45 + 47: 6(float) FMul 43 46 + 48: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 26 + 49: 6(float) Load 48 + 50: 14(ptr) AccessChain 44(vertexIDs2) 29 + 51: 6(float) Load 50 + 52: 6(float) FMul 49 51 + 53: 6(float) FAdd 47 52 + 54: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspNV) 34 + 55: 6(float) Load 54 + 56: 14(ptr) AccessChain 44(vertexIDs2) 37 + 57: 6(float) Load 56 + 58: 6(float) FMul 55 57 + 59: 6(float) FAdd 53 58 + 60: 6(float) Load 8(value) + 61: 6(float) FAdd 60 59 + Store 8(value) 61 Return FunctionEnd diff --git a/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out index aaac6a4427..9218646dce 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out @@ -1,14 +1,14 @@ spv.fragmentShaderBarycentric4.frag // Module Version 10000 // Generated by (magic number): 8000a -// Id's are bound by 42 +// Id's are bound by 62 Capability Shader Capability FragmentBarycentricKHR Extension "SPV_KHR_fragment_shader_barycentric" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 8 11 20 + EntryPoint Fragment 4 "main" 8 11 20 44 ExecutionMode 4 OriginUpperLeft Source ESSL 320 SourceExtension "GL_EXT_fragment_shader_barycentric" @@ -16,10 +16,13 @@ spv.fragmentShaderBarycentric4.frag Name 8 "value" Name 11 "gl_BaryCoordNoPerspEXT" Name 20 "vertexIDs" + Name 44 "vertexIDs2" Decorate 8(value) Location 1 Decorate 11(gl_BaryCoordNoPerspEXT) BuiltIn BaryCoordNoPerspKHR Decorate 20(vertexIDs) Location 0 Decorate 20(vertexIDs) PerVertexKHR + Decorate 44(vertexIDs2) Location 1 + Decorate 44(vertexIDs2) PerVertexKHR 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -41,6 +44,7 @@ spv.fragmentShaderBarycentric4.frag 29: 21(int) Constant 1 34: 12(int) Constant 2 37: 21(int) Constant 2 + 44(vertexIDs2): 19(ptr) Variable Input 4(main): 2 Function None 3 5: Label 15: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 13 @@ -61,5 +65,25 @@ spv.fragmentShaderBarycentric4.frag 40: 6(float) FMul 36 39 41: 6(float) FAdd 33 40 Store 8(value) 41 + 42: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 13 + 43: 6(float) Load 42 + 45: 14(ptr) AccessChain 44(vertexIDs2) 22 + 46: 6(float) Load 45 + 47: 6(float) FMul 43 46 + 48: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 26 + 49: 6(float) Load 48 + 50: 14(ptr) AccessChain 44(vertexIDs2) 29 + 51: 6(float) Load 50 + 52: 6(float) FMul 49 51 + 53: 6(float) FAdd 47 52 + 54: 14(ptr) AccessChain 11(gl_BaryCoordNoPerspEXT) 34 + 55: 6(float) Load 54 + 56: 14(ptr) AccessChain 44(vertexIDs2) 37 + 57: 6(float) Load 56 + 58: 6(float) FMul 55 57 + 59: 6(float) FAdd 53 58 + 60: 6(float) Load 8(value) + 61: 6(float) FAdd 60 59 + Store 8(value) 61 Return FunctionEnd diff --git a/Test/spv.fragmentShaderBarycentric2.frag b/Test/spv.fragmentShaderBarycentric2.frag index 4682e4ef43..2db44af367 100644 --- a/Test/spv.fragmentShaderBarycentric2.frag +++ b/Test/spv.fragmentShaderBarycentric2.frag @@ -4,6 +4,8 @@ precision highp float; layout(location = 0) pervertexNV in float vertexIDs[3]; +layout(location = 1) pervertexNV in float vertexIDs2[3]; + layout(location = 1) out float value; @@ -12,4 +14,8 @@ void main () { gl_BaryCoordNoPerspNV.y * vertexIDs[1] + gl_BaryCoordNoPerspNV.z * vertexIDs[2]); + value += (gl_BaryCoordNoPerspNV.x * vertexIDs2[0] + + gl_BaryCoordNoPerspNV.y * vertexIDs2[1] + + gl_BaryCoordNoPerspNV.z * vertexIDs2[2]); + } diff --git a/Test/spv.fragmentShaderBarycentric4.frag b/Test/spv.fragmentShaderBarycentric4.frag index 5b4510ecda..fd4902f873 100644 --- a/Test/spv.fragmentShaderBarycentric4.frag +++ b/Test/spv.fragmentShaderBarycentric4.frag @@ -4,6 +4,7 @@ precision highp float; layout(location = 0) pervertexEXT in float vertexIDs[3]; +layout(location = 1) pervertexEXT in float vertexIDs2[3]; layout(location = 1) out float value; @@ -12,4 +13,8 @@ void main () { gl_BaryCoordNoPerspEXT.y * vertexIDs[1] + gl_BaryCoordNoPerspEXT.z * vertexIDs[2]); + value += (gl_BaryCoordNoPerspEXT.x * vertexIDs2[0] + + gl_BaryCoordNoPerspEXT.y * vertexIDs2[1] + + gl_BaryCoordNoPerspEXT.z * vertexIDs2[2]); + } diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 05f90ac213..a6f47e8476 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -875,7 +875,7 @@ class TQualifier { case EShLangTessEvaluation: return ! patch && isPipeInput(); case EShLangFragment: - return pervertexNV && isPipeInput(); + return (pervertexNV || pervertexEXT) && isPipeInput(); case EShLangMesh: return ! perTaskNV && isPipeOutput(); From d11c3ff315d340e5c75cf00023535c397b0b6d9e Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Wed, 28 Sep 2022 00:07:01 -0400 Subject: [PATCH 096/594] only use dead input elimination on vertex shaders It can't be safely used unilaterally on other stages, since that will result in output/input mismatches between stages. They arn't having their output variables eliminated accordingly. --- SPIRV/SpvTools.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 8cc17cca93..25299937a3 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -212,7 +212,8 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); - optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); + if (intermediate.getStage() == EShLanguage::EShLangVertex) + optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); From 1b1824f90f107c5304dd7a018efbb1dcff8a6c58 Mon Sep 17 00:00:00 2001 From: Eric Werness Date: Tue, 23 Aug 2022 15:42:32 -0700 Subject: [PATCH 097/594] GL_EXT_opacity_micromap --- Test/baseResults/spv.ext.RayGenShader.rgen.out | 3 ++- Test/spv.ext.RayGenShader.rgen | 3 ++- glslang/MachineIndependent/Initialize.cpp | 2 ++ glslang/MachineIndependent/Versions.cpp | 3 ++- glslang/MachineIndependent/Versions.h | 1 + 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out index 46f920ac55..5a34fc7eaa 100644 --- a/Test/baseResults/spv.ext.RayGenShader.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out @@ -10,6 +10,7 @@ spv.ext.RayGenShader.rgen MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 4 "main" 11 21 29 40 53 54 57 Source GLSL 460 + SourceExtension "GL_EXT_opacity_micromap" SourceExtension "GL_EXT_ray_flags_primitive_culling" SourceExtension "GL_EXT_ray_tracing" Name 4 "main" @@ -52,7 +53,7 @@ spv.ext.RayGenShader.rgen 27: TypeAccelerationStructureKHR 28: TypePointer UniformConstant 27 29(accEXT0): 28(ptr) Variable UniformConstant - 35: 6(int) Constant 768 + 35: 6(int) Constant 1792 36: TypeFloat 32 37: TypeVector 36(float) 3 38(block): TypeStruct 37(fvec3) 37(fvec3) diff --git a/Test/spv.ext.RayGenShader.rgen b/Test/spv.ext.RayGenShader.rgen index e9eb2cbb90..d342d863b5 100644 --- a/Test/spv.ext.RayGenShader.rgen +++ b/Test/spv.ext.RayGenShader.rgen @@ -1,6 +1,7 @@ #version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_flags_primitive_culling : enable +#extension GL_EXT_opacity_micromap : enable layout(binding = 0) uniform accelerationStructureEXT accEXT0; layout(binding = 1, set = 0) uniform accelerationStructureEXT accEXT1; // Unused layout(binding = 2, r32ui) shadercallcoherent uniform uimage2D imageu; @@ -18,5 +19,5 @@ void main() uint ly = gl_LaunchIDEXT.y; uint sx = gl_LaunchSizeEXT.x; uint sy = gl_LaunchSizeEXT.y; - traceRayEXT(accEXT0, lx, ly, sx, sy, gl_RayFlagsSkipTrianglesEXT | gl_RayFlagsSkipAABBEXT, origin, 0.5f, dir, 0.75f, 1); + traceRayEXT(accEXT0, lx, ly, sx, sy, gl_RayFlagsSkipTrianglesEXT | gl_RayFlagsSkipAABBEXT | gl_RayFlagsForceOpacityMicromap2StateEXT, origin, 0.5f, dir, 0.75f, 1); } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 31b448adcd..0cbb9e78f4 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5850,6 +5850,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "const uint gl_RayFlagsCullNoOpaqueEXT = 128U;" "const uint gl_RayFlagsSkipTrianglesEXT = 256U;" "const uint gl_RayFlagsSkipAABBEXT = 512U;" + "const uint gl_RayFlagsForceOpacityMicromap2StateEXT = 1024U;" "const uint gl_HitKindFrontFacingTriangleEXT = 254U;" "const uint gl_HitKindBackFacingTriangleEXT = 255U;" "\n"; @@ -8167,6 +8168,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("rayQueryGetWorldRayDirectionEXT", 1, &E_GL_EXT_ray_query); symbolTable.setVariableExtensions("gl_RayFlagsSkipAABBEXT", 1, &E_GL_EXT_ray_flags_primitive_culling); symbolTable.setVariableExtensions("gl_RayFlagsSkipTrianglesEXT", 1, &E_GL_EXT_ray_flags_primitive_culling); + symbolTable.setVariableExtensions("gl_RayFlagsForceOpacityMicromap2StateEXT", 1, &E_GL_EXT_opacity_micromap); } if ((profile != EEsProfile && version >= 130) || diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 226e946740..a5fd107535 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -342,11 +342,12 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_blend_func_extended] = EBhDisable; extensionBehavior[E_GL_EXT_shader_implicit_conversions] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_shading_rate] = EBhDisable; - extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_image_int64] = EBhDisable; extensionBehavior[E_GL_EXT_terminate_invocation] = EBhDisable; extensionBehavior[E_GL_EXT_shared_memory_block] = EBhDisable; extensionBehavior[E_GL_EXT_spirv_intrinsics] = EBhDisable; extensionBehavior[E_GL_EXT_mesh_shader] = EBhDisable; + extensionBehavior[E_GL_EXT_opacity_micromap] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 6ab37880fe..f06abdd6f0 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -212,6 +212,7 @@ const char* const E_GL_EXT_subgroup_uniform_control_flow = "GL_EXT_subgroup_u const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intrinsics"; const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric"; const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shader"; +const char* const E_GL_EXT_opacity_micromap = "GL_EXT_opacity_micromap"; // Arrays of extensions for the above viewportEXTs duplications From 573e9849be03983e929716f3849f2abb29096c96 Mon Sep 17 00:00:00 2001 From: James0124 Date: Sat, 8 Oct 2022 09:33:21 +0900 Subject: [PATCH 098/594] CInterface: Add preamble support. Add interface for `TShader::setPreamble`. --- glslang/CInterface/glslang_c_interface.cpp | 4 ++++ glslang/Include/glslang_c_interface.h | 1 + 2 files changed, 5 insertions(+) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index ead005c32f..1bb4000ac9 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -351,6 +351,10 @@ GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* in return shader; } +GLSLANG_EXPORT void glslang_shader_set_preamble(glslang_shader_t* shader, const char* s) { + shader->shader->setPreamble(s); +} + GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base) { const glslang::TResourceType res_type = glslang::TResourceType(res); diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 9e5608c5b3..f540f26d6c 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -245,6 +245,7 @@ GLSLANG_EXPORT void glslang_finalize_process(); GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input); GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader); +GLSLANG_EXPORT void glslang_shader_set_preamble(glslang_shader_t* shader, const char* s); GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base); GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set); GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options); // glslang_shader_options_t From 17b0a218779ce413e916c79fe814b30d53d87e75 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Tue, 11 Oct 2022 15:01:35 +0800 Subject: [PATCH 099/594] Fix incorrect parse message of mesh shader When GL_EXT_mesh_shader is enabled, the check of layout qualifiers 'max_vertices' and 'max_primitives' should use gl_MaxMeshOutputVerticesEXT and gl_MaxMeshOutputPrimitivesEXT. --- glslang/MachineIndependent/ParseHelper.cpp | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index e2ac43ca19..9168ea7f84 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -5973,8 +5973,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi if (id == "max_vertices") { requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_vertices"); publicType.shaderQualifiers.vertices = value; - if (value > resources.maxMeshOutputVerticesNV) - error(loc, "too large, must be less than gl_MaxMeshOutputVerticesNV", "max_vertices", ""); + int max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? resources.maxMeshOutputVerticesEXT + : resources.maxMeshOutputVerticesNV; + if (value > max) { + TString maxsErrtring = "too large, must be less than "; + maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? "gl_MaxMeshOutputVerticesEXT" + : "gl_MaxMeshOutputVerticesNV"); + error(loc, maxsErrtring.c_str(), "max_vertices", ""); + } if (nonLiteral) error(loc, "needs a literal integer", "max_vertices", ""); return; @@ -5982,8 +5988,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi if (id == "max_primitives") { requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "max_primitives"); publicType.shaderQualifiers.primitives = value; - if (value > resources.maxMeshOutputPrimitivesNV) - error(loc, "too large, must be less than gl_MaxMeshOutputPrimitivesNV", "max_primitives", ""); + int max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? resources.maxMeshOutputPrimitivesEXT + : resources.maxMeshOutputPrimitivesNV; + if (value > max) { + TString maxsErrtring = "too large, must be less than "; + maxsErrtring.append(extensionTurnedOn(E_GL_EXT_mesh_shader) ? "gl_MaxMeshOutputPrimitivesEXT" + : "gl_MaxMeshOutputPrimitivesNV"); + error(loc, maxsErrtring.c_str(), "max_primitives", ""); + } if (nonLiteral) error(loc, "needs a literal integer", "max_primitives", ""); return; From 7541f39849f9aca6f441e3650f4ac4635be0f676 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Tue, 11 Oct 2022 10:59:19 +0200 Subject: [PATCH 100/594] Convert spirv.hpp line endings to LF (Unix style) This was the only header using CRLF, the rest already uses LF. --- SPIRV/spirv.hpp | 5066 +++++++++++++++++++++++------------------------ 1 file changed, 2533 insertions(+), 2533 deletions(-) diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 0e40544bda..f85469d441 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,2533 +1,2533 @@ -// Copyright (c) 2014-2020 The Khronos Group Inc. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and/or associated documentation files (the "Materials"), -// to deal in the Materials without restriction, including without limitation -// the rights to use, copy, modify, merge, publish, distribute, sublicense, -// and/or sell copies of the Materials, and to permit persons to whom the -// Materials are furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Materials. -// -// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS -// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// -// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS -// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL -// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS -// IN THE MATERIALS. - -// This header is automatically generated by the same tool that creates -// the Binary Section of the SPIR-V specification. - -// Enumeration tokens for SPIR-V, in various styles: -// C, C++, C++11, JSON, Lua, Python, C#, D -// -// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL -// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL -// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL -// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL -// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] -// - C# will use enum classes in the Specification class located in the "Spv" namespace, -// e.g.: Spv.Specification.SourceLanguage.GLSL -// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL -// -// Some tokens act like mask values, which can be OR'd together, -// while others are mutually exclusive. The mask-like ones have -// "Mask" in their name, and a parallel enum that has the shift -// amount (1 << x) for each corresponding enumerant. - -#ifndef spirv_HPP -#define spirv_HPP - -namespace spv { - -typedef unsigned int Id; - -#define SPV_VERSION 0x10600 -#define SPV_REVISION 1 - -static const unsigned int MagicNumber = 0x07230203; -static const unsigned int Version = 0x00010600; -static const unsigned int Revision = 1; -static const unsigned int OpCodeMask = 0xffff; -static const unsigned int WordCountShift = 16; - -enum SourceLanguage { - SourceLanguageUnknown = 0, - SourceLanguageESSL = 1, - SourceLanguageGLSL = 2, - SourceLanguageOpenCL_C = 3, - SourceLanguageOpenCL_CPP = 4, - SourceLanguageHLSL = 5, - SourceLanguageCPP_for_OpenCL = 6, - SourceLanguageMax = 0x7fffffff, -}; - -enum ExecutionModel { - ExecutionModelVertex = 0, - ExecutionModelTessellationControl = 1, - ExecutionModelTessellationEvaluation = 2, - ExecutionModelGeometry = 3, - ExecutionModelFragment = 4, - ExecutionModelGLCompute = 5, - ExecutionModelKernel = 6, - ExecutionModelTaskNV = 5267, - ExecutionModelMeshNV = 5268, - ExecutionModelRayGenerationKHR = 5313, - ExecutionModelRayGenerationNV = 5313, - ExecutionModelIntersectionKHR = 5314, - ExecutionModelIntersectionNV = 5314, - ExecutionModelAnyHitKHR = 5315, - ExecutionModelAnyHitNV = 5315, - ExecutionModelClosestHitKHR = 5316, - ExecutionModelClosestHitNV = 5316, - ExecutionModelMissKHR = 5317, - ExecutionModelMissNV = 5317, - ExecutionModelCallableKHR = 5318, - ExecutionModelCallableNV = 5318, - ExecutionModelTaskEXT = 5364, - ExecutionModelMeshEXT = 5365, - ExecutionModelMax = 0x7fffffff, -}; - -enum AddressingModel { - AddressingModelLogical = 0, - AddressingModelPhysical32 = 1, - AddressingModelPhysical64 = 2, - AddressingModelPhysicalStorageBuffer64 = 5348, - AddressingModelPhysicalStorageBuffer64EXT = 5348, - AddressingModelMax = 0x7fffffff, -}; - -enum MemoryModel { - MemoryModelSimple = 0, - MemoryModelGLSL450 = 1, - MemoryModelOpenCL = 2, - MemoryModelVulkan = 3, - MemoryModelVulkanKHR = 3, - MemoryModelMax = 0x7fffffff, -}; - -enum ExecutionMode { - ExecutionModeInvocations = 0, - ExecutionModeSpacingEqual = 1, - ExecutionModeSpacingFractionalEven = 2, - ExecutionModeSpacingFractionalOdd = 3, - ExecutionModeVertexOrderCw = 4, - ExecutionModeVertexOrderCcw = 5, - ExecutionModePixelCenterInteger = 6, - ExecutionModeOriginUpperLeft = 7, - ExecutionModeOriginLowerLeft = 8, - ExecutionModeEarlyFragmentTests = 9, - ExecutionModePointMode = 10, - ExecutionModeXfb = 11, - ExecutionModeDepthReplacing = 12, - ExecutionModeDepthGreater = 14, - ExecutionModeDepthLess = 15, - ExecutionModeDepthUnchanged = 16, - ExecutionModeLocalSize = 17, - ExecutionModeLocalSizeHint = 18, - ExecutionModeInputPoints = 19, - ExecutionModeInputLines = 20, - ExecutionModeInputLinesAdjacency = 21, - ExecutionModeTriangles = 22, - ExecutionModeInputTrianglesAdjacency = 23, - ExecutionModeQuads = 24, - ExecutionModeIsolines = 25, - ExecutionModeOutputVertices = 26, - ExecutionModeOutputPoints = 27, - ExecutionModeOutputLineStrip = 28, - ExecutionModeOutputTriangleStrip = 29, - ExecutionModeVecTypeHint = 30, - ExecutionModeContractionOff = 31, - ExecutionModeInitializer = 33, - ExecutionModeFinalizer = 34, - ExecutionModeSubgroupSize = 35, - ExecutionModeSubgroupsPerWorkgroup = 36, - ExecutionModeSubgroupsPerWorkgroupId = 37, - ExecutionModeLocalSizeId = 38, - ExecutionModeLocalSizeHintId = 39, - ExecutionModeSubgroupUniformControlFlowKHR = 4421, - ExecutionModePostDepthCoverage = 4446, - ExecutionModeDenormPreserve = 4459, - ExecutionModeDenormFlushToZero = 4460, - ExecutionModeSignedZeroInfNanPreserve = 4461, - ExecutionModeRoundingModeRTE = 4462, - ExecutionModeRoundingModeRTZ = 4463, - ExecutionModeEarlyAndLateFragmentTestsAMD = 5017, - ExecutionModeStencilRefReplacingEXT = 5027, - ExecutionModeStencilRefUnchangedFrontAMD = 5079, - ExecutionModeStencilRefGreaterFrontAMD = 5080, - ExecutionModeStencilRefLessFrontAMD = 5081, - ExecutionModeStencilRefUnchangedBackAMD = 5082, - ExecutionModeStencilRefGreaterBackAMD = 5083, - ExecutionModeStencilRefLessBackAMD = 5084, - ExecutionModeOutputLinesEXT = 5269, - ExecutionModeOutputLinesNV = 5269, - ExecutionModeOutputPrimitivesEXT = 5270, - ExecutionModeOutputPrimitivesNV = 5270, - ExecutionModeDerivativeGroupQuadsNV = 5289, - ExecutionModeDerivativeGroupLinearNV = 5290, - ExecutionModeOutputTrianglesEXT = 5298, - ExecutionModeOutputTrianglesNV = 5298, - ExecutionModePixelInterlockOrderedEXT = 5366, - ExecutionModePixelInterlockUnorderedEXT = 5367, - ExecutionModeSampleInterlockOrderedEXT = 5368, - ExecutionModeSampleInterlockUnorderedEXT = 5369, - ExecutionModeShadingRateInterlockOrderedEXT = 5370, - ExecutionModeShadingRateInterlockUnorderedEXT = 5371, - ExecutionModeSharedLocalMemorySizeINTEL = 5618, - ExecutionModeRoundingModeRTPINTEL = 5620, - ExecutionModeRoundingModeRTNINTEL = 5621, - ExecutionModeFloatingPointModeALTINTEL = 5622, - ExecutionModeFloatingPointModeIEEEINTEL = 5623, - ExecutionModeMaxWorkgroupSizeINTEL = 5893, - ExecutionModeMaxWorkDimINTEL = 5894, - ExecutionModeNoGlobalOffsetINTEL = 5895, - ExecutionModeNumSIMDWorkitemsINTEL = 5896, - ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, - ExecutionModeMax = 0x7fffffff, -}; - -enum StorageClass { - StorageClassUniformConstant = 0, - StorageClassInput = 1, - StorageClassUniform = 2, - StorageClassOutput = 3, - StorageClassWorkgroup = 4, - StorageClassCrossWorkgroup = 5, - StorageClassPrivate = 6, - StorageClassFunction = 7, - StorageClassGeneric = 8, - StorageClassPushConstant = 9, - StorageClassAtomicCounter = 10, - StorageClassImage = 11, - StorageClassStorageBuffer = 12, - StorageClassCallableDataKHR = 5328, - StorageClassCallableDataNV = 5328, - StorageClassIncomingCallableDataKHR = 5329, - StorageClassIncomingCallableDataNV = 5329, - StorageClassRayPayloadKHR = 5338, - StorageClassRayPayloadNV = 5338, - StorageClassHitAttributeKHR = 5339, - StorageClassHitAttributeNV = 5339, - StorageClassIncomingRayPayloadKHR = 5342, - StorageClassIncomingRayPayloadNV = 5342, - StorageClassShaderRecordBufferKHR = 5343, - StorageClassShaderRecordBufferNV = 5343, - StorageClassPhysicalStorageBuffer = 5349, - StorageClassPhysicalStorageBufferEXT = 5349, - StorageClassTaskPayloadWorkgroupEXT = 5402, - StorageClassCodeSectionINTEL = 5605, - StorageClassDeviceOnlyINTEL = 5936, - StorageClassHostOnlyINTEL = 5937, - StorageClassMax = 0x7fffffff, -}; - -enum Dim { - Dim1D = 0, - Dim2D = 1, - Dim3D = 2, - DimCube = 3, - DimRect = 4, - DimBuffer = 5, - DimSubpassData = 6, - DimMax = 0x7fffffff, -}; - -enum SamplerAddressingMode { - SamplerAddressingModeNone = 0, - SamplerAddressingModeClampToEdge = 1, - SamplerAddressingModeClamp = 2, - SamplerAddressingModeRepeat = 3, - SamplerAddressingModeRepeatMirrored = 4, - SamplerAddressingModeMax = 0x7fffffff, -}; - -enum SamplerFilterMode { - SamplerFilterModeNearest = 0, - SamplerFilterModeLinear = 1, - SamplerFilterModeMax = 0x7fffffff, -}; - -enum ImageFormat { - ImageFormatUnknown = 0, - ImageFormatRgba32f = 1, - ImageFormatRgba16f = 2, - ImageFormatR32f = 3, - ImageFormatRgba8 = 4, - ImageFormatRgba8Snorm = 5, - ImageFormatRg32f = 6, - ImageFormatRg16f = 7, - ImageFormatR11fG11fB10f = 8, - ImageFormatR16f = 9, - ImageFormatRgba16 = 10, - ImageFormatRgb10A2 = 11, - ImageFormatRg16 = 12, - ImageFormatRg8 = 13, - ImageFormatR16 = 14, - ImageFormatR8 = 15, - ImageFormatRgba16Snorm = 16, - ImageFormatRg16Snorm = 17, - ImageFormatRg8Snorm = 18, - ImageFormatR16Snorm = 19, - ImageFormatR8Snorm = 20, - ImageFormatRgba32i = 21, - ImageFormatRgba16i = 22, - ImageFormatRgba8i = 23, - ImageFormatR32i = 24, - ImageFormatRg32i = 25, - ImageFormatRg16i = 26, - ImageFormatRg8i = 27, - ImageFormatR16i = 28, - ImageFormatR8i = 29, - ImageFormatRgba32ui = 30, - ImageFormatRgba16ui = 31, - ImageFormatRgba8ui = 32, - ImageFormatR32ui = 33, - ImageFormatRgb10a2ui = 34, - ImageFormatRg32ui = 35, - ImageFormatRg16ui = 36, - ImageFormatRg8ui = 37, - ImageFormatR16ui = 38, - ImageFormatR8ui = 39, - ImageFormatR64ui = 40, - ImageFormatR64i = 41, - ImageFormatMax = 0x7fffffff, -}; - -enum ImageChannelOrder { - ImageChannelOrderR = 0, - ImageChannelOrderA = 1, - ImageChannelOrderRG = 2, - ImageChannelOrderRA = 3, - ImageChannelOrderRGB = 4, - ImageChannelOrderRGBA = 5, - ImageChannelOrderBGRA = 6, - ImageChannelOrderARGB = 7, - ImageChannelOrderIntensity = 8, - ImageChannelOrderLuminance = 9, - ImageChannelOrderRx = 10, - ImageChannelOrderRGx = 11, - ImageChannelOrderRGBx = 12, - ImageChannelOrderDepth = 13, - ImageChannelOrderDepthStencil = 14, - ImageChannelOrdersRGB = 15, - ImageChannelOrdersRGBx = 16, - ImageChannelOrdersRGBA = 17, - ImageChannelOrdersBGRA = 18, - ImageChannelOrderABGR = 19, - ImageChannelOrderMax = 0x7fffffff, -}; - -enum ImageChannelDataType { - ImageChannelDataTypeSnormInt8 = 0, - ImageChannelDataTypeSnormInt16 = 1, - ImageChannelDataTypeUnormInt8 = 2, - ImageChannelDataTypeUnormInt16 = 3, - ImageChannelDataTypeUnormShort565 = 4, - ImageChannelDataTypeUnormShort555 = 5, - ImageChannelDataTypeUnormInt101010 = 6, - ImageChannelDataTypeSignedInt8 = 7, - ImageChannelDataTypeSignedInt16 = 8, - ImageChannelDataTypeSignedInt32 = 9, - ImageChannelDataTypeUnsignedInt8 = 10, - ImageChannelDataTypeUnsignedInt16 = 11, - ImageChannelDataTypeUnsignedInt32 = 12, - ImageChannelDataTypeHalfFloat = 13, - ImageChannelDataTypeFloat = 14, - ImageChannelDataTypeUnormInt24 = 15, - ImageChannelDataTypeUnormInt101010_2 = 16, - ImageChannelDataTypeMax = 0x7fffffff, -}; - -enum ImageOperandsShift { - ImageOperandsBiasShift = 0, - ImageOperandsLodShift = 1, - ImageOperandsGradShift = 2, - ImageOperandsConstOffsetShift = 3, - ImageOperandsOffsetShift = 4, - ImageOperandsConstOffsetsShift = 5, - ImageOperandsSampleShift = 6, - ImageOperandsMinLodShift = 7, - ImageOperandsMakeTexelAvailableShift = 8, - ImageOperandsMakeTexelAvailableKHRShift = 8, - ImageOperandsMakeTexelVisibleShift = 9, - ImageOperandsMakeTexelVisibleKHRShift = 9, - ImageOperandsNonPrivateTexelShift = 10, - ImageOperandsNonPrivateTexelKHRShift = 10, - ImageOperandsVolatileTexelShift = 11, - ImageOperandsVolatileTexelKHRShift = 11, - ImageOperandsSignExtendShift = 12, - ImageOperandsZeroExtendShift = 13, - ImageOperandsNontemporalShift = 14, - ImageOperandsOffsetsShift = 16, - ImageOperandsMax = 0x7fffffff, -}; - -enum ImageOperandsMask { - ImageOperandsMaskNone = 0, - ImageOperandsBiasMask = 0x00000001, - ImageOperandsLodMask = 0x00000002, - ImageOperandsGradMask = 0x00000004, - ImageOperandsConstOffsetMask = 0x00000008, - ImageOperandsOffsetMask = 0x00000010, - ImageOperandsConstOffsetsMask = 0x00000020, - ImageOperandsSampleMask = 0x00000040, - ImageOperandsMinLodMask = 0x00000080, - ImageOperandsMakeTexelAvailableMask = 0x00000100, - ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, - ImageOperandsMakeTexelVisibleMask = 0x00000200, - ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, - ImageOperandsNonPrivateTexelMask = 0x00000400, - ImageOperandsNonPrivateTexelKHRMask = 0x00000400, - ImageOperandsVolatileTexelMask = 0x00000800, - ImageOperandsVolatileTexelKHRMask = 0x00000800, - ImageOperandsSignExtendMask = 0x00001000, - ImageOperandsZeroExtendMask = 0x00002000, - ImageOperandsNontemporalMask = 0x00004000, - ImageOperandsOffsetsMask = 0x00010000, -}; - -enum FPFastMathModeShift { - FPFastMathModeNotNaNShift = 0, - FPFastMathModeNotInfShift = 1, - FPFastMathModeNSZShift = 2, - FPFastMathModeAllowRecipShift = 3, - FPFastMathModeFastShift = 4, - FPFastMathModeAllowContractFastINTELShift = 16, - FPFastMathModeAllowReassocINTELShift = 17, - FPFastMathModeMax = 0x7fffffff, -}; - -enum FPFastMathModeMask { - FPFastMathModeMaskNone = 0, - FPFastMathModeNotNaNMask = 0x00000001, - FPFastMathModeNotInfMask = 0x00000002, - FPFastMathModeNSZMask = 0x00000004, - FPFastMathModeAllowRecipMask = 0x00000008, - FPFastMathModeFastMask = 0x00000010, - FPFastMathModeAllowContractFastINTELMask = 0x00010000, - FPFastMathModeAllowReassocINTELMask = 0x00020000, -}; - -enum FPRoundingMode { - FPRoundingModeRTE = 0, - FPRoundingModeRTZ = 1, - FPRoundingModeRTP = 2, - FPRoundingModeRTN = 3, - FPRoundingModeMax = 0x7fffffff, -}; - -enum LinkageType { - LinkageTypeExport = 0, - LinkageTypeImport = 1, - LinkageTypeLinkOnceODR = 2, - LinkageTypeMax = 0x7fffffff, -}; - -enum AccessQualifier { - AccessQualifierReadOnly = 0, - AccessQualifierWriteOnly = 1, - AccessQualifierReadWrite = 2, - AccessQualifierMax = 0x7fffffff, -}; - -enum FunctionParameterAttribute { - FunctionParameterAttributeZext = 0, - FunctionParameterAttributeSext = 1, - FunctionParameterAttributeByVal = 2, - FunctionParameterAttributeSret = 3, - FunctionParameterAttributeNoAlias = 4, - FunctionParameterAttributeNoCapture = 5, - FunctionParameterAttributeNoWrite = 6, - FunctionParameterAttributeNoReadWrite = 7, - FunctionParameterAttributeMax = 0x7fffffff, -}; - -enum Decoration { - DecorationRelaxedPrecision = 0, - DecorationSpecId = 1, - DecorationBlock = 2, - DecorationBufferBlock = 3, - DecorationRowMajor = 4, - DecorationColMajor = 5, - DecorationArrayStride = 6, - DecorationMatrixStride = 7, - DecorationGLSLShared = 8, - DecorationGLSLPacked = 9, - DecorationCPacked = 10, - DecorationBuiltIn = 11, - DecorationNoPerspective = 13, - DecorationFlat = 14, - DecorationPatch = 15, - DecorationCentroid = 16, - DecorationSample = 17, - DecorationInvariant = 18, - DecorationRestrict = 19, - DecorationAliased = 20, - DecorationVolatile = 21, - DecorationConstant = 22, - DecorationCoherent = 23, - DecorationNonWritable = 24, - DecorationNonReadable = 25, - DecorationUniform = 26, - DecorationUniformId = 27, - DecorationSaturatedConversion = 28, - DecorationStream = 29, - DecorationLocation = 30, - DecorationComponent = 31, - DecorationIndex = 32, - DecorationBinding = 33, - DecorationDescriptorSet = 34, - DecorationOffset = 35, - DecorationXfbBuffer = 36, - DecorationXfbStride = 37, - DecorationFuncParamAttr = 38, - DecorationFPRoundingMode = 39, - DecorationFPFastMathMode = 40, - DecorationLinkageAttributes = 41, - DecorationNoContraction = 42, - DecorationInputAttachmentIndex = 43, - DecorationAlignment = 44, - DecorationMaxByteOffset = 45, - DecorationAlignmentId = 46, - DecorationMaxByteOffsetId = 47, - DecorationNoSignedWrap = 4469, - DecorationNoUnsignedWrap = 4470, - DecorationExplicitInterpAMD = 4999, - DecorationOverrideCoverageNV = 5248, - DecorationPassthroughNV = 5250, - DecorationViewportRelativeNV = 5252, - DecorationSecondaryViewportRelativeNV = 5256, - DecorationPerPrimitiveEXT = 5271, - DecorationPerPrimitiveNV = 5271, - DecorationPerViewNV = 5272, - DecorationPerTaskNV = 5273, - DecorationPerVertexKHR = 5285, - DecorationPerVertexNV = 5285, - DecorationNonUniform = 5300, - DecorationNonUniformEXT = 5300, - DecorationRestrictPointer = 5355, - DecorationRestrictPointerEXT = 5355, - DecorationAliasedPointer = 5356, - DecorationAliasedPointerEXT = 5356, - DecorationBindlessSamplerNV = 5398, - DecorationBindlessImageNV = 5399, - DecorationBoundSamplerNV = 5400, - DecorationBoundImageNV = 5401, - DecorationSIMTCallINTEL = 5599, - DecorationReferencedIndirectlyINTEL = 5602, - DecorationClobberINTEL = 5607, - DecorationSideEffectsINTEL = 5608, - DecorationVectorComputeVariableINTEL = 5624, - DecorationFuncParamIOKindINTEL = 5625, - DecorationVectorComputeFunctionINTEL = 5626, - DecorationStackCallINTEL = 5627, - DecorationGlobalVariableOffsetINTEL = 5628, - DecorationCounterBuffer = 5634, - DecorationHlslCounterBufferGOOGLE = 5634, - DecorationHlslSemanticGOOGLE = 5635, - DecorationUserSemantic = 5635, - DecorationUserTypeGOOGLE = 5636, - DecorationFunctionRoundingModeINTEL = 5822, - DecorationFunctionDenormModeINTEL = 5823, - DecorationRegisterINTEL = 5825, - DecorationMemoryINTEL = 5826, - DecorationNumbanksINTEL = 5827, - DecorationBankwidthINTEL = 5828, - DecorationMaxPrivateCopiesINTEL = 5829, - DecorationSinglepumpINTEL = 5830, - DecorationDoublepumpINTEL = 5831, - DecorationMaxReplicatesINTEL = 5832, - DecorationSimpleDualPortINTEL = 5833, - DecorationMergeINTEL = 5834, - DecorationBankBitsINTEL = 5835, - DecorationForcePow2DepthINTEL = 5836, - DecorationBurstCoalesceINTEL = 5899, - DecorationCacheSizeINTEL = 5900, - DecorationDontStaticallyCoalesceINTEL = 5901, - DecorationPrefetchINTEL = 5902, - DecorationStallEnableINTEL = 5905, - DecorationFuseLoopsInFunctionINTEL = 5907, - DecorationBufferLocationINTEL = 5921, - DecorationIOPipeStorageINTEL = 5944, - DecorationFunctionFloatingPointModeINTEL = 6080, - DecorationSingleElementVectorINTEL = 6085, - DecorationVectorComputeCallableFunctionINTEL = 6087, - DecorationMediaBlockIOINTEL = 6140, - DecorationMax = 0x7fffffff, -}; - -enum BuiltIn { - BuiltInPosition = 0, - BuiltInPointSize = 1, - BuiltInClipDistance = 3, - BuiltInCullDistance = 4, - BuiltInVertexId = 5, - BuiltInInstanceId = 6, - BuiltInPrimitiveId = 7, - BuiltInInvocationId = 8, - BuiltInLayer = 9, - BuiltInViewportIndex = 10, - BuiltInTessLevelOuter = 11, - BuiltInTessLevelInner = 12, - BuiltInTessCoord = 13, - BuiltInPatchVertices = 14, - BuiltInFragCoord = 15, - BuiltInPointCoord = 16, - BuiltInFrontFacing = 17, - BuiltInSampleId = 18, - BuiltInSamplePosition = 19, - BuiltInSampleMask = 20, - BuiltInFragDepth = 22, - BuiltInHelperInvocation = 23, - BuiltInNumWorkgroups = 24, - BuiltInWorkgroupSize = 25, - BuiltInWorkgroupId = 26, - BuiltInLocalInvocationId = 27, - BuiltInGlobalInvocationId = 28, - BuiltInLocalInvocationIndex = 29, - BuiltInWorkDim = 30, - BuiltInGlobalSize = 31, - BuiltInEnqueuedWorkgroupSize = 32, - BuiltInGlobalOffset = 33, - BuiltInGlobalLinearId = 34, - BuiltInSubgroupSize = 36, - BuiltInSubgroupMaxSize = 37, - BuiltInNumSubgroups = 38, - BuiltInNumEnqueuedSubgroups = 39, - BuiltInSubgroupId = 40, - BuiltInSubgroupLocalInvocationId = 41, - BuiltInVertexIndex = 42, - BuiltInInstanceIndex = 43, - BuiltInSubgroupEqMask = 4416, - BuiltInSubgroupEqMaskKHR = 4416, - BuiltInSubgroupGeMask = 4417, - BuiltInSubgroupGeMaskKHR = 4417, - BuiltInSubgroupGtMask = 4418, - BuiltInSubgroupGtMaskKHR = 4418, - BuiltInSubgroupLeMask = 4419, - BuiltInSubgroupLeMaskKHR = 4419, - BuiltInSubgroupLtMask = 4420, - BuiltInSubgroupLtMaskKHR = 4420, - BuiltInBaseVertex = 4424, - BuiltInBaseInstance = 4425, - BuiltInDrawIndex = 4426, - BuiltInPrimitiveShadingRateKHR = 4432, - BuiltInDeviceIndex = 4438, - BuiltInViewIndex = 4440, - BuiltInShadingRateKHR = 4444, - BuiltInBaryCoordNoPerspAMD = 4992, - BuiltInBaryCoordNoPerspCentroidAMD = 4993, - BuiltInBaryCoordNoPerspSampleAMD = 4994, - BuiltInBaryCoordSmoothAMD = 4995, - BuiltInBaryCoordSmoothCentroidAMD = 4996, - BuiltInBaryCoordSmoothSampleAMD = 4997, - BuiltInBaryCoordPullModelAMD = 4998, - BuiltInFragStencilRefEXT = 5014, - BuiltInViewportMaskNV = 5253, - BuiltInSecondaryPositionNV = 5257, - BuiltInSecondaryViewportMaskNV = 5258, - BuiltInPositionPerViewNV = 5261, - BuiltInViewportMaskPerViewNV = 5262, - BuiltInFullyCoveredEXT = 5264, - BuiltInTaskCountNV = 5274, - BuiltInPrimitiveCountNV = 5275, - BuiltInPrimitiveIndicesNV = 5276, - BuiltInClipDistancePerViewNV = 5277, - BuiltInCullDistancePerViewNV = 5278, - BuiltInLayerPerViewNV = 5279, - BuiltInMeshViewCountNV = 5280, - BuiltInMeshViewIndicesNV = 5281, - BuiltInBaryCoordKHR = 5286, - BuiltInBaryCoordNV = 5286, - BuiltInBaryCoordNoPerspKHR = 5287, - BuiltInBaryCoordNoPerspNV = 5287, - BuiltInFragSizeEXT = 5292, - BuiltInFragmentSizeNV = 5292, - BuiltInFragInvocationCountEXT = 5293, - BuiltInInvocationsPerPixelNV = 5293, - BuiltInPrimitivePointIndicesEXT = 5294, - BuiltInPrimitiveLineIndicesEXT = 5295, - BuiltInPrimitiveTriangleIndicesEXT = 5296, - BuiltInCullPrimitiveEXT = 5299, - BuiltInLaunchIdKHR = 5319, - BuiltInLaunchIdNV = 5319, - BuiltInLaunchSizeKHR = 5320, - BuiltInLaunchSizeNV = 5320, - BuiltInWorldRayOriginKHR = 5321, - BuiltInWorldRayOriginNV = 5321, - BuiltInWorldRayDirectionKHR = 5322, - BuiltInWorldRayDirectionNV = 5322, - BuiltInObjectRayOriginKHR = 5323, - BuiltInObjectRayOriginNV = 5323, - BuiltInObjectRayDirectionKHR = 5324, - BuiltInObjectRayDirectionNV = 5324, - BuiltInRayTminKHR = 5325, - BuiltInRayTminNV = 5325, - BuiltInRayTmaxKHR = 5326, - BuiltInRayTmaxNV = 5326, - BuiltInInstanceCustomIndexKHR = 5327, - BuiltInInstanceCustomIndexNV = 5327, - BuiltInObjectToWorldKHR = 5330, - BuiltInObjectToWorldNV = 5330, - BuiltInWorldToObjectKHR = 5331, - BuiltInWorldToObjectNV = 5331, - BuiltInHitTNV = 5332, - BuiltInHitKindKHR = 5333, - BuiltInHitKindNV = 5333, - BuiltInCurrentRayTimeNV = 5334, - BuiltInIncomingRayFlagsKHR = 5351, - BuiltInIncomingRayFlagsNV = 5351, - BuiltInRayGeometryIndexKHR = 5352, - BuiltInWarpsPerSMNV = 5374, - BuiltInSMCountNV = 5375, - BuiltInWarpIDNV = 5376, - BuiltInSMIDNV = 5377, - BuiltInCullMaskKHR = 6021, - BuiltInMax = 0x7fffffff, -}; - -enum SelectionControlShift { - SelectionControlFlattenShift = 0, - SelectionControlDontFlattenShift = 1, - SelectionControlMax = 0x7fffffff, -}; - -enum SelectionControlMask { - SelectionControlMaskNone = 0, - SelectionControlFlattenMask = 0x00000001, - SelectionControlDontFlattenMask = 0x00000002, -}; - -enum LoopControlShift { - LoopControlUnrollShift = 0, - LoopControlDontUnrollShift = 1, - LoopControlDependencyInfiniteShift = 2, - LoopControlDependencyLengthShift = 3, - LoopControlMinIterationsShift = 4, - LoopControlMaxIterationsShift = 5, - LoopControlIterationMultipleShift = 6, - LoopControlPeelCountShift = 7, - LoopControlPartialCountShift = 8, - LoopControlInitiationIntervalINTELShift = 16, - LoopControlMaxConcurrencyINTELShift = 17, - LoopControlDependencyArrayINTELShift = 18, - LoopControlPipelineEnableINTELShift = 19, - LoopControlLoopCoalesceINTELShift = 20, - LoopControlMaxInterleavingINTELShift = 21, - LoopControlSpeculatedIterationsINTELShift = 22, - LoopControlNoFusionINTELShift = 23, - LoopControlMax = 0x7fffffff, -}; - -enum LoopControlMask { - LoopControlMaskNone = 0, - LoopControlUnrollMask = 0x00000001, - LoopControlDontUnrollMask = 0x00000002, - LoopControlDependencyInfiniteMask = 0x00000004, - LoopControlDependencyLengthMask = 0x00000008, - LoopControlMinIterationsMask = 0x00000010, - LoopControlMaxIterationsMask = 0x00000020, - LoopControlIterationMultipleMask = 0x00000040, - LoopControlPeelCountMask = 0x00000080, - LoopControlPartialCountMask = 0x00000100, - LoopControlInitiationIntervalINTELMask = 0x00010000, - LoopControlMaxConcurrencyINTELMask = 0x00020000, - LoopControlDependencyArrayINTELMask = 0x00040000, - LoopControlPipelineEnableINTELMask = 0x00080000, - LoopControlLoopCoalesceINTELMask = 0x00100000, - LoopControlMaxInterleavingINTELMask = 0x00200000, - LoopControlSpeculatedIterationsINTELMask = 0x00400000, - LoopControlNoFusionINTELMask = 0x00800000, -}; - -enum FunctionControlShift { - FunctionControlInlineShift = 0, - FunctionControlDontInlineShift = 1, - FunctionControlPureShift = 2, - FunctionControlConstShift = 3, - FunctionControlOptNoneINTELShift = 16, - FunctionControlMax = 0x7fffffff, -}; - -enum FunctionControlMask { - FunctionControlMaskNone = 0, - FunctionControlInlineMask = 0x00000001, - FunctionControlDontInlineMask = 0x00000002, - FunctionControlPureMask = 0x00000004, - FunctionControlConstMask = 0x00000008, - FunctionControlOptNoneINTELMask = 0x00010000, -}; - -enum MemorySemanticsShift { - MemorySemanticsAcquireShift = 1, - MemorySemanticsReleaseShift = 2, - MemorySemanticsAcquireReleaseShift = 3, - MemorySemanticsSequentiallyConsistentShift = 4, - MemorySemanticsUniformMemoryShift = 6, - MemorySemanticsSubgroupMemoryShift = 7, - MemorySemanticsWorkgroupMemoryShift = 8, - MemorySemanticsCrossWorkgroupMemoryShift = 9, - MemorySemanticsAtomicCounterMemoryShift = 10, - MemorySemanticsImageMemoryShift = 11, - MemorySemanticsOutputMemoryShift = 12, - MemorySemanticsOutputMemoryKHRShift = 12, - MemorySemanticsMakeAvailableShift = 13, - MemorySemanticsMakeAvailableKHRShift = 13, - MemorySemanticsMakeVisibleShift = 14, - MemorySemanticsMakeVisibleKHRShift = 14, - MemorySemanticsVolatileShift = 15, - MemorySemanticsMax = 0x7fffffff, -}; - -enum MemorySemanticsMask { - MemorySemanticsMaskNone = 0, - MemorySemanticsAcquireMask = 0x00000002, - MemorySemanticsReleaseMask = 0x00000004, - MemorySemanticsAcquireReleaseMask = 0x00000008, - MemorySemanticsSequentiallyConsistentMask = 0x00000010, - MemorySemanticsUniformMemoryMask = 0x00000040, - MemorySemanticsSubgroupMemoryMask = 0x00000080, - MemorySemanticsWorkgroupMemoryMask = 0x00000100, - MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, - MemorySemanticsAtomicCounterMemoryMask = 0x00000400, - MemorySemanticsImageMemoryMask = 0x00000800, - MemorySemanticsOutputMemoryMask = 0x00001000, - MemorySemanticsOutputMemoryKHRMask = 0x00001000, - MemorySemanticsMakeAvailableMask = 0x00002000, - MemorySemanticsMakeAvailableKHRMask = 0x00002000, - MemorySemanticsMakeVisibleMask = 0x00004000, - MemorySemanticsMakeVisibleKHRMask = 0x00004000, - MemorySemanticsVolatileMask = 0x00008000, -}; - -enum MemoryAccessShift { - MemoryAccessVolatileShift = 0, - MemoryAccessAlignedShift = 1, - MemoryAccessNontemporalShift = 2, - MemoryAccessMakePointerAvailableShift = 3, - MemoryAccessMakePointerAvailableKHRShift = 3, - MemoryAccessMakePointerVisibleShift = 4, - MemoryAccessMakePointerVisibleKHRShift = 4, - MemoryAccessNonPrivatePointerShift = 5, - MemoryAccessNonPrivatePointerKHRShift = 5, - MemoryAccessMax = 0x7fffffff, -}; - -enum MemoryAccessMask { - MemoryAccessMaskNone = 0, - MemoryAccessVolatileMask = 0x00000001, - MemoryAccessAlignedMask = 0x00000002, - MemoryAccessNontemporalMask = 0x00000004, - MemoryAccessMakePointerAvailableMask = 0x00000008, - MemoryAccessMakePointerAvailableKHRMask = 0x00000008, - MemoryAccessMakePointerVisibleMask = 0x00000010, - MemoryAccessMakePointerVisibleKHRMask = 0x00000010, - MemoryAccessNonPrivatePointerMask = 0x00000020, - MemoryAccessNonPrivatePointerKHRMask = 0x00000020, -}; - -enum Scope { - ScopeCrossDevice = 0, - ScopeDevice = 1, - ScopeWorkgroup = 2, - ScopeSubgroup = 3, - ScopeInvocation = 4, - ScopeQueueFamily = 5, - ScopeQueueFamilyKHR = 5, - ScopeShaderCallKHR = 6, - ScopeMax = 0x7fffffff, -}; - -enum GroupOperation { - GroupOperationReduce = 0, - GroupOperationInclusiveScan = 1, - GroupOperationExclusiveScan = 2, - GroupOperationClusteredReduce = 3, - GroupOperationPartitionedReduceNV = 6, - GroupOperationPartitionedInclusiveScanNV = 7, - GroupOperationPartitionedExclusiveScanNV = 8, - GroupOperationMax = 0x7fffffff, -}; - -enum KernelEnqueueFlags { - KernelEnqueueFlagsNoWait = 0, - KernelEnqueueFlagsWaitKernel = 1, - KernelEnqueueFlagsWaitWorkGroup = 2, - KernelEnqueueFlagsMax = 0x7fffffff, -}; - -enum KernelProfilingInfoShift { - KernelProfilingInfoCmdExecTimeShift = 0, - KernelProfilingInfoMax = 0x7fffffff, -}; - -enum KernelProfilingInfoMask { - KernelProfilingInfoMaskNone = 0, - KernelProfilingInfoCmdExecTimeMask = 0x00000001, -}; - -enum Capability { - CapabilityMatrix = 0, - CapabilityShader = 1, - CapabilityGeometry = 2, - CapabilityTessellation = 3, - CapabilityAddresses = 4, - CapabilityLinkage = 5, - CapabilityKernel = 6, - CapabilityVector16 = 7, - CapabilityFloat16Buffer = 8, - CapabilityFloat16 = 9, - CapabilityFloat64 = 10, - CapabilityInt64 = 11, - CapabilityInt64Atomics = 12, - CapabilityImageBasic = 13, - CapabilityImageReadWrite = 14, - CapabilityImageMipmap = 15, - CapabilityPipes = 17, - CapabilityGroups = 18, - CapabilityDeviceEnqueue = 19, - CapabilityLiteralSampler = 20, - CapabilityAtomicStorage = 21, - CapabilityInt16 = 22, - CapabilityTessellationPointSize = 23, - CapabilityGeometryPointSize = 24, - CapabilityImageGatherExtended = 25, - CapabilityStorageImageMultisample = 27, - CapabilityUniformBufferArrayDynamicIndexing = 28, - CapabilitySampledImageArrayDynamicIndexing = 29, - CapabilityStorageBufferArrayDynamicIndexing = 30, - CapabilityStorageImageArrayDynamicIndexing = 31, - CapabilityClipDistance = 32, - CapabilityCullDistance = 33, - CapabilityImageCubeArray = 34, - CapabilitySampleRateShading = 35, - CapabilityImageRect = 36, - CapabilitySampledRect = 37, - CapabilityGenericPointer = 38, - CapabilityInt8 = 39, - CapabilityInputAttachment = 40, - CapabilitySparseResidency = 41, - CapabilityMinLod = 42, - CapabilitySampled1D = 43, - CapabilityImage1D = 44, - CapabilitySampledCubeArray = 45, - CapabilitySampledBuffer = 46, - CapabilityImageBuffer = 47, - CapabilityImageMSArray = 48, - CapabilityStorageImageExtendedFormats = 49, - CapabilityImageQuery = 50, - CapabilityDerivativeControl = 51, - CapabilityInterpolationFunction = 52, - CapabilityTransformFeedback = 53, - CapabilityGeometryStreams = 54, - CapabilityStorageImageReadWithoutFormat = 55, - CapabilityStorageImageWriteWithoutFormat = 56, - CapabilityMultiViewport = 57, - CapabilitySubgroupDispatch = 58, - CapabilityNamedBarrier = 59, - CapabilityPipeStorage = 60, - CapabilityGroupNonUniform = 61, - CapabilityGroupNonUniformVote = 62, - CapabilityGroupNonUniformArithmetic = 63, - CapabilityGroupNonUniformBallot = 64, - CapabilityGroupNonUniformShuffle = 65, - CapabilityGroupNonUniformShuffleRelative = 66, - CapabilityGroupNonUniformClustered = 67, - CapabilityGroupNonUniformQuad = 68, - CapabilityShaderLayer = 69, - CapabilityShaderViewportIndex = 70, - CapabilityUniformDecoration = 71, - CapabilityFragmentShadingRateKHR = 4422, - CapabilitySubgroupBallotKHR = 4423, - CapabilityDrawParameters = 4427, - CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428, - CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429, - CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, - CapabilitySubgroupVoteKHR = 4431, - CapabilityStorageBuffer16BitAccess = 4433, - CapabilityStorageUniformBufferBlock16 = 4433, - CapabilityStorageUniform16 = 4434, - CapabilityUniformAndStorageBuffer16BitAccess = 4434, - CapabilityStoragePushConstant16 = 4435, - CapabilityStorageInputOutput16 = 4436, - CapabilityDeviceGroup = 4437, - CapabilityMultiView = 4439, - CapabilityVariablePointersStorageBuffer = 4441, - CapabilityVariablePointers = 4442, - CapabilityAtomicStorageOps = 4445, - CapabilitySampleMaskPostDepthCoverage = 4447, - CapabilityStorageBuffer8BitAccess = 4448, - CapabilityUniformAndStorageBuffer8BitAccess = 4449, - CapabilityStoragePushConstant8 = 4450, - CapabilityDenormPreserve = 4464, - CapabilityDenormFlushToZero = 4465, - CapabilitySignedZeroInfNanPreserve = 4466, - CapabilityRoundingModeRTE = 4467, - CapabilityRoundingModeRTZ = 4468, - CapabilityRayQueryProvisionalKHR = 4471, - CapabilityRayQueryKHR = 4472, - CapabilityRayTraversalPrimitiveCullingKHR = 4478, - CapabilityRayTracingKHR = 4479, - CapabilityFloat16ImageAMD = 5008, - CapabilityImageGatherBiasLodAMD = 5009, - CapabilityFragmentMaskAMD = 5010, - CapabilityStencilExportEXT = 5013, - CapabilityImageReadWriteLodAMD = 5015, - CapabilityInt64ImageEXT = 5016, - CapabilityShaderClockKHR = 5055, - CapabilitySampleMaskOverrideCoverageNV = 5249, - CapabilityGeometryShaderPassthroughNV = 5251, - CapabilityShaderViewportIndexLayerEXT = 5254, - CapabilityShaderViewportIndexLayerNV = 5254, - CapabilityShaderViewportMaskNV = 5255, - CapabilityShaderStereoViewNV = 5259, - CapabilityPerViewAttributesNV = 5260, - CapabilityFragmentFullyCoveredEXT = 5265, - CapabilityMeshShadingNV = 5266, - CapabilityImageFootprintNV = 5282, - CapabilityMeshShadingEXT = 5283, - CapabilityFragmentBarycentricKHR = 5284, - CapabilityFragmentBarycentricNV = 5284, - CapabilityComputeDerivativeGroupQuadsNV = 5288, - CapabilityFragmentDensityEXT = 5291, - CapabilityShadingRateNV = 5291, - CapabilityGroupNonUniformPartitionedNV = 5297, - CapabilityShaderNonUniform = 5301, - CapabilityShaderNonUniformEXT = 5301, - CapabilityRuntimeDescriptorArray = 5302, - CapabilityRuntimeDescriptorArrayEXT = 5302, - CapabilityInputAttachmentArrayDynamicIndexing = 5303, - CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, - CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, - CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, - CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, - CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, - CapabilityUniformBufferArrayNonUniformIndexing = 5306, - CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, - CapabilitySampledImageArrayNonUniformIndexing = 5307, - CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, - CapabilityStorageBufferArrayNonUniformIndexing = 5308, - CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, - CapabilityStorageImageArrayNonUniformIndexing = 5309, - CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, - CapabilityInputAttachmentArrayNonUniformIndexing = 5310, - CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, - CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, - CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, - CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, - CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, - CapabilityRayTracingNV = 5340, - CapabilityRayTracingMotionBlurNV = 5341, - CapabilityVulkanMemoryModel = 5345, - CapabilityVulkanMemoryModelKHR = 5345, - CapabilityVulkanMemoryModelDeviceScope = 5346, - CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, - CapabilityPhysicalStorageBufferAddresses = 5347, - CapabilityPhysicalStorageBufferAddressesEXT = 5347, - CapabilityComputeDerivativeGroupLinearNV = 5350, - CapabilityRayTracingProvisionalKHR = 5353, - CapabilityCooperativeMatrixNV = 5357, - CapabilityFragmentShaderSampleInterlockEXT = 5363, - CapabilityFragmentShaderShadingRateInterlockEXT = 5372, - CapabilityShaderSMBuiltinsNV = 5373, - CapabilityFragmentShaderPixelInterlockEXT = 5378, - CapabilityDemoteToHelperInvocation = 5379, - CapabilityDemoteToHelperInvocationEXT = 5379, - CapabilityBindlessTextureNV = 5390, - CapabilitySubgroupShuffleINTEL = 5568, - CapabilitySubgroupBufferBlockIOINTEL = 5569, - CapabilitySubgroupImageBlockIOINTEL = 5570, - CapabilitySubgroupImageMediaBlockIOINTEL = 5579, - CapabilityRoundToInfinityINTEL = 5582, - CapabilityFloatingPointModeINTEL = 5583, - CapabilityIntegerFunctions2INTEL = 5584, - CapabilityFunctionPointersINTEL = 5603, - CapabilityIndirectReferencesINTEL = 5604, - CapabilityAsmINTEL = 5606, - CapabilityAtomicFloat32MinMaxEXT = 5612, - CapabilityAtomicFloat64MinMaxEXT = 5613, - CapabilityAtomicFloat16MinMaxEXT = 5616, - CapabilityVectorComputeINTEL = 5617, - CapabilityVectorAnyINTEL = 5619, - CapabilityExpectAssumeKHR = 5629, - CapabilitySubgroupAvcMotionEstimationINTEL = 5696, - CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697, - CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698, - CapabilityVariableLengthArrayINTEL = 5817, - CapabilityFunctionFloatControlINTEL = 5821, - CapabilityFPGAMemoryAttributesINTEL = 5824, - CapabilityFPFastMathModeINTEL = 5837, - CapabilityArbitraryPrecisionIntegersINTEL = 5844, - CapabilityArbitraryPrecisionFloatingPointINTEL = 5845, - CapabilityUnstructuredLoopControlsINTEL = 5886, - CapabilityFPGALoopControlsINTEL = 5888, - CapabilityKernelAttributesINTEL = 5892, - CapabilityFPGAKernelAttributesINTEL = 5897, - CapabilityFPGAMemoryAccessesINTEL = 5898, - CapabilityFPGAClusterAttributesINTEL = 5904, - CapabilityLoopFuseINTEL = 5906, - CapabilityFPGABufferLocationINTEL = 5920, - CapabilityArbitraryPrecisionFixedPointINTEL = 5922, - CapabilityUSMStorageClassesINTEL = 5935, - CapabilityIOPipesINTEL = 5943, - CapabilityBlockingPipesINTEL = 5945, - CapabilityFPGARegINTEL = 5948, - CapabilityDotProductInputAll = 6016, - CapabilityDotProductInputAllKHR = 6016, - CapabilityDotProductInput4x8Bit = 6017, - CapabilityDotProductInput4x8BitKHR = 6017, - CapabilityDotProductInput4x8BitPacked = 6018, - CapabilityDotProductInput4x8BitPackedKHR = 6018, - CapabilityDotProduct = 6019, - CapabilityDotProductKHR = 6019, - CapabilityRayCullMaskKHR = 6020, - CapabilityBitInstructions = 6025, - CapabilityAtomicFloat32AddEXT = 6033, - CapabilityAtomicFloat64AddEXT = 6034, - CapabilityLongConstantCompositeINTEL = 6089, - CapabilityOptNoneINTEL = 6094, - CapabilityAtomicFloat16AddEXT = 6095, - CapabilityDebugInfoModuleINTEL = 6114, - CapabilityMax = 0x7fffffff, -}; - -enum RayFlagsShift { - RayFlagsOpaqueKHRShift = 0, - RayFlagsNoOpaqueKHRShift = 1, - RayFlagsTerminateOnFirstHitKHRShift = 2, - RayFlagsSkipClosestHitShaderKHRShift = 3, - RayFlagsCullBackFacingTrianglesKHRShift = 4, - RayFlagsCullFrontFacingTrianglesKHRShift = 5, - RayFlagsCullOpaqueKHRShift = 6, - RayFlagsCullNoOpaqueKHRShift = 7, - RayFlagsSkipTrianglesKHRShift = 8, - RayFlagsSkipAABBsKHRShift = 9, - RayFlagsMax = 0x7fffffff, -}; - -enum RayFlagsMask { - RayFlagsMaskNone = 0, - RayFlagsOpaqueKHRMask = 0x00000001, - RayFlagsNoOpaqueKHRMask = 0x00000002, - RayFlagsTerminateOnFirstHitKHRMask = 0x00000004, - RayFlagsSkipClosestHitShaderKHRMask = 0x00000008, - RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010, - RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020, - RayFlagsCullOpaqueKHRMask = 0x00000040, - RayFlagsCullNoOpaqueKHRMask = 0x00000080, - RayFlagsSkipTrianglesKHRMask = 0x00000100, - RayFlagsSkipAABBsKHRMask = 0x00000200, -}; - -enum RayQueryIntersection { - RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0, - RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1, - RayQueryIntersectionMax = 0x7fffffff, -}; - -enum RayQueryCommittedIntersectionType { - RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0, - RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1, - RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2, - RayQueryCommittedIntersectionTypeMax = 0x7fffffff, -}; - -enum RayQueryCandidateIntersectionType { - RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0, - RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1, - RayQueryCandidateIntersectionTypeMax = 0x7fffffff, -}; - -enum FragmentShadingRateShift { - FragmentShadingRateVertical2PixelsShift = 0, - FragmentShadingRateVertical4PixelsShift = 1, - FragmentShadingRateHorizontal2PixelsShift = 2, - FragmentShadingRateHorizontal4PixelsShift = 3, - FragmentShadingRateMax = 0x7fffffff, -}; - -enum FragmentShadingRateMask { - FragmentShadingRateMaskNone = 0, - FragmentShadingRateVertical2PixelsMask = 0x00000001, - FragmentShadingRateVertical4PixelsMask = 0x00000002, - FragmentShadingRateHorizontal2PixelsMask = 0x00000004, - FragmentShadingRateHorizontal4PixelsMask = 0x00000008, -}; - -enum FPDenormMode { - FPDenormModePreserve = 0, - FPDenormModeFlushToZero = 1, - FPDenormModeMax = 0x7fffffff, -}; - -enum FPOperationMode { - FPOperationModeIEEE = 0, - FPOperationModeALT = 1, - FPOperationModeMax = 0x7fffffff, -}; - -enum QuantizationModes { - QuantizationModesTRN = 0, - QuantizationModesTRN_ZERO = 1, - QuantizationModesRND = 2, - QuantizationModesRND_ZERO = 3, - QuantizationModesRND_INF = 4, - QuantizationModesRND_MIN_INF = 5, - QuantizationModesRND_CONV = 6, - QuantizationModesRND_CONV_ODD = 7, - QuantizationModesMax = 0x7fffffff, -}; - -enum OverflowModes { - OverflowModesWRAP = 0, - OverflowModesSAT = 1, - OverflowModesSAT_ZERO = 2, - OverflowModesSAT_SYM = 3, - OverflowModesMax = 0x7fffffff, -}; - -enum PackedVectorFormat { - PackedVectorFormatPackedVectorFormat4x8Bit = 0, - PackedVectorFormatPackedVectorFormat4x8BitKHR = 0, - PackedVectorFormatMax = 0x7fffffff, -}; - -enum Op { - OpNop = 0, - OpUndef = 1, - OpSourceContinued = 2, - OpSource = 3, - OpSourceExtension = 4, - OpName = 5, - OpMemberName = 6, - OpString = 7, - OpLine = 8, - OpExtension = 10, - OpExtInstImport = 11, - OpExtInst = 12, - OpMemoryModel = 14, - OpEntryPoint = 15, - OpExecutionMode = 16, - OpCapability = 17, - OpTypeVoid = 19, - OpTypeBool = 20, - OpTypeInt = 21, - OpTypeFloat = 22, - OpTypeVector = 23, - OpTypeMatrix = 24, - OpTypeImage = 25, - OpTypeSampler = 26, - OpTypeSampledImage = 27, - OpTypeArray = 28, - OpTypeRuntimeArray = 29, - OpTypeStruct = 30, - OpTypeOpaque = 31, - OpTypePointer = 32, - OpTypeFunction = 33, - OpTypeEvent = 34, - OpTypeDeviceEvent = 35, - OpTypeReserveId = 36, - OpTypeQueue = 37, - OpTypePipe = 38, - OpTypeForwardPointer = 39, - OpConstantTrue = 41, - OpConstantFalse = 42, - OpConstant = 43, - OpConstantComposite = 44, - OpConstantSampler = 45, - OpConstantNull = 46, - OpSpecConstantTrue = 48, - OpSpecConstantFalse = 49, - OpSpecConstant = 50, - OpSpecConstantComposite = 51, - OpSpecConstantOp = 52, - OpFunction = 54, - OpFunctionParameter = 55, - OpFunctionEnd = 56, - OpFunctionCall = 57, - OpVariable = 59, - OpImageTexelPointer = 60, - OpLoad = 61, - OpStore = 62, - OpCopyMemory = 63, - OpCopyMemorySized = 64, - OpAccessChain = 65, - OpInBoundsAccessChain = 66, - OpPtrAccessChain = 67, - OpArrayLength = 68, - OpGenericPtrMemSemantics = 69, - OpInBoundsPtrAccessChain = 70, - OpDecorate = 71, - OpMemberDecorate = 72, - OpDecorationGroup = 73, - OpGroupDecorate = 74, - OpGroupMemberDecorate = 75, - OpVectorExtractDynamic = 77, - OpVectorInsertDynamic = 78, - OpVectorShuffle = 79, - OpCompositeConstruct = 80, - OpCompositeExtract = 81, - OpCompositeInsert = 82, - OpCopyObject = 83, - OpTranspose = 84, - OpSampledImage = 86, - OpImageSampleImplicitLod = 87, - OpImageSampleExplicitLod = 88, - OpImageSampleDrefImplicitLod = 89, - OpImageSampleDrefExplicitLod = 90, - OpImageSampleProjImplicitLod = 91, - OpImageSampleProjExplicitLod = 92, - OpImageSampleProjDrefImplicitLod = 93, - OpImageSampleProjDrefExplicitLod = 94, - OpImageFetch = 95, - OpImageGather = 96, - OpImageDrefGather = 97, - OpImageRead = 98, - OpImageWrite = 99, - OpImage = 100, - OpImageQueryFormat = 101, - OpImageQueryOrder = 102, - OpImageQuerySizeLod = 103, - OpImageQuerySize = 104, - OpImageQueryLod = 105, - OpImageQueryLevels = 106, - OpImageQuerySamples = 107, - OpConvertFToU = 109, - OpConvertFToS = 110, - OpConvertSToF = 111, - OpConvertUToF = 112, - OpUConvert = 113, - OpSConvert = 114, - OpFConvert = 115, - OpQuantizeToF16 = 116, - OpConvertPtrToU = 117, - OpSatConvertSToU = 118, - OpSatConvertUToS = 119, - OpConvertUToPtr = 120, - OpPtrCastToGeneric = 121, - OpGenericCastToPtr = 122, - OpGenericCastToPtrExplicit = 123, - OpBitcast = 124, - OpSNegate = 126, - OpFNegate = 127, - OpIAdd = 128, - OpFAdd = 129, - OpISub = 130, - OpFSub = 131, - OpIMul = 132, - OpFMul = 133, - OpUDiv = 134, - OpSDiv = 135, - OpFDiv = 136, - OpUMod = 137, - OpSRem = 138, - OpSMod = 139, - OpFRem = 140, - OpFMod = 141, - OpVectorTimesScalar = 142, - OpMatrixTimesScalar = 143, - OpVectorTimesMatrix = 144, - OpMatrixTimesVector = 145, - OpMatrixTimesMatrix = 146, - OpOuterProduct = 147, - OpDot = 148, - OpIAddCarry = 149, - OpISubBorrow = 150, - OpUMulExtended = 151, - OpSMulExtended = 152, - OpAny = 154, - OpAll = 155, - OpIsNan = 156, - OpIsInf = 157, - OpIsFinite = 158, - OpIsNormal = 159, - OpSignBitSet = 160, - OpLessOrGreater = 161, - OpOrdered = 162, - OpUnordered = 163, - OpLogicalEqual = 164, - OpLogicalNotEqual = 165, - OpLogicalOr = 166, - OpLogicalAnd = 167, - OpLogicalNot = 168, - OpSelect = 169, - OpIEqual = 170, - OpINotEqual = 171, - OpUGreaterThan = 172, - OpSGreaterThan = 173, - OpUGreaterThanEqual = 174, - OpSGreaterThanEqual = 175, - OpULessThan = 176, - OpSLessThan = 177, - OpULessThanEqual = 178, - OpSLessThanEqual = 179, - OpFOrdEqual = 180, - OpFUnordEqual = 181, - OpFOrdNotEqual = 182, - OpFUnordNotEqual = 183, - OpFOrdLessThan = 184, - OpFUnordLessThan = 185, - OpFOrdGreaterThan = 186, - OpFUnordGreaterThan = 187, - OpFOrdLessThanEqual = 188, - OpFUnordLessThanEqual = 189, - OpFOrdGreaterThanEqual = 190, - OpFUnordGreaterThanEqual = 191, - OpShiftRightLogical = 194, - OpShiftRightArithmetic = 195, - OpShiftLeftLogical = 196, - OpBitwiseOr = 197, - OpBitwiseXor = 198, - OpBitwiseAnd = 199, - OpNot = 200, - OpBitFieldInsert = 201, - OpBitFieldSExtract = 202, - OpBitFieldUExtract = 203, - OpBitReverse = 204, - OpBitCount = 205, - OpDPdx = 207, - OpDPdy = 208, - OpFwidth = 209, - OpDPdxFine = 210, - OpDPdyFine = 211, - OpFwidthFine = 212, - OpDPdxCoarse = 213, - OpDPdyCoarse = 214, - OpFwidthCoarse = 215, - OpEmitVertex = 218, - OpEndPrimitive = 219, - OpEmitStreamVertex = 220, - OpEndStreamPrimitive = 221, - OpControlBarrier = 224, - OpMemoryBarrier = 225, - OpAtomicLoad = 227, - OpAtomicStore = 228, - OpAtomicExchange = 229, - OpAtomicCompareExchange = 230, - OpAtomicCompareExchangeWeak = 231, - OpAtomicIIncrement = 232, - OpAtomicIDecrement = 233, - OpAtomicIAdd = 234, - OpAtomicISub = 235, - OpAtomicSMin = 236, - OpAtomicUMin = 237, - OpAtomicSMax = 238, - OpAtomicUMax = 239, - OpAtomicAnd = 240, - OpAtomicOr = 241, - OpAtomicXor = 242, - OpPhi = 245, - OpLoopMerge = 246, - OpSelectionMerge = 247, - OpLabel = 248, - OpBranch = 249, - OpBranchConditional = 250, - OpSwitch = 251, - OpKill = 252, - OpReturn = 253, - OpReturnValue = 254, - OpUnreachable = 255, - OpLifetimeStart = 256, - OpLifetimeStop = 257, - OpGroupAsyncCopy = 259, - OpGroupWaitEvents = 260, - OpGroupAll = 261, - OpGroupAny = 262, - OpGroupBroadcast = 263, - OpGroupIAdd = 264, - OpGroupFAdd = 265, - OpGroupFMin = 266, - OpGroupUMin = 267, - OpGroupSMin = 268, - OpGroupFMax = 269, - OpGroupUMax = 270, - OpGroupSMax = 271, - OpReadPipe = 274, - OpWritePipe = 275, - OpReservedReadPipe = 276, - OpReservedWritePipe = 277, - OpReserveReadPipePackets = 278, - OpReserveWritePipePackets = 279, - OpCommitReadPipe = 280, - OpCommitWritePipe = 281, - OpIsValidReserveId = 282, - OpGetNumPipePackets = 283, - OpGetMaxPipePackets = 284, - OpGroupReserveReadPipePackets = 285, - OpGroupReserveWritePipePackets = 286, - OpGroupCommitReadPipe = 287, - OpGroupCommitWritePipe = 288, - OpEnqueueMarker = 291, - OpEnqueueKernel = 292, - OpGetKernelNDrangeSubGroupCount = 293, - OpGetKernelNDrangeMaxSubGroupSize = 294, - OpGetKernelWorkGroupSize = 295, - OpGetKernelPreferredWorkGroupSizeMultiple = 296, - OpRetainEvent = 297, - OpReleaseEvent = 298, - OpCreateUserEvent = 299, - OpIsValidEvent = 300, - OpSetUserEventStatus = 301, - OpCaptureEventProfilingInfo = 302, - OpGetDefaultQueue = 303, - OpBuildNDRange = 304, - OpImageSparseSampleImplicitLod = 305, - OpImageSparseSampleExplicitLod = 306, - OpImageSparseSampleDrefImplicitLod = 307, - OpImageSparseSampleDrefExplicitLod = 308, - OpImageSparseSampleProjImplicitLod = 309, - OpImageSparseSampleProjExplicitLod = 310, - OpImageSparseSampleProjDrefImplicitLod = 311, - OpImageSparseSampleProjDrefExplicitLod = 312, - OpImageSparseFetch = 313, - OpImageSparseGather = 314, - OpImageSparseDrefGather = 315, - OpImageSparseTexelsResident = 316, - OpNoLine = 317, - OpAtomicFlagTestAndSet = 318, - OpAtomicFlagClear = 319, - OpImageSparseRead = 320, - OpSizeOf = 321, - OpTypePipeStorage = 322, - OpConstantPipeStorage = 323, - OpCreatePipeFromPipeStorage = 324, - OpGetKernelLocalSizeForSubgroupCount = 325, - OpGetKernelMaxNumSubgroups = 326, - OpTypeNamedBarrier = 327, - OpNamedBarrierInitialize = 328, - OpMemoryNamedBarrier = 329, - OpModuleProcessed = 330, - OpExecutionModeId = 331, - OpDecorateId = 332, - OpGroupNonUniformElect = 333, - OpGroupNonUniformAll = 334, - OpGroupNonUniformAny = 335, - OpGroupNonUniformAllEqual = 336, - OpGroupNonUniformBroadcast = 337, - OpGroupNonUniformBroadcastFirst = 338, - OpGroupNonUniformBallot = 339, - OpGroupNonUniformInverseBallot = 340, - OpGroupNonUniformBallotBitExtract = 341, - OpGroupNonUniformBallotBitCount = 342, - OpGroupNonUniformBallotFindLSB = 343, - OpGroupNonUniformBallotFindMSB = 344, - OpGroupNonUniformShuffle = 345, - OpGroupNonUniformShuffleXor = 346, - OpGroupNonUniformShuffleUp = 347, - OpGroupNonUniformShuffleDown = 348, - OpGroupNonUniformIAdd = 349, - OpGroupNonUniformFAdd = 350, - OpGroupNonUniformIMul = 351, - OpGroupNonUniformFMul = 352, - OpGroupNonUniformSMin = 353, - OpGroupNonUniformUMin = 354, - OpGroupNonUniformFMin = 355, - OpGroupNonUniformSMax = 356, - OpGroupNonUniformUMax = 357, - OpGroupNonUniformFMax = 358, - OpGroupNonUniformBitwiseAnd = 359, - OpGroupNonUniformBitwiseOr = 360, - OpGroupNonUniformBitwiseXor = 361, - OpGroupNonUniformLogicalAnd = 362, - OpGroupNonUniformLogicalOr = 363, - OpGroupNonUniformLogicalXor = 364, - OpGroupNonUniformQuadBroadcast = 365, - OpGroupNonUniformQuadSwap = 366, - OpCopyLogical = 400, - OpPtrEqual = 401, - OpPtrNotEqual = 402, - OpPtrDiff = 403, - OpTerminateInvocation = 4416, - OpSubgroupBallotKHR = 4421, - OpSubgroupFirstInvocationKHR = 4422, - OpSubgroupAllKHR = 4428, - OpSubgroupAnyKHR = 4429, - OpSubgroupAllEqualKHR = 4430, - OpSubgroupReadInvocationKHR = 4432, - OpTraceRayKHR = 4445, - OpExecuteCallableKHR = 4446, - OpConvertUToAccelerationStructureKHR = 4447, - OpIgnoreIntersectionKHR = 4448, - OpTerminateRayKHR = 4449, - OpSDot = 4450, - OpSDotKHR = 4450, - OpUDot = 4451, - OpUDotKHR = 4451, - OpSUDot = 4452, - OpSUDotKHR = 4452, - OpSDotAccSat = 4453, - OpSDotAccSatKHR = 4453, - OpUDotAccSat = 4454, - OpUDotAccSatKHR = 4454, - OpSUDotAccSat = 4455, - OpSUDotAccSatKHR = 4455, - OpTypeRayQueryKHR = 4472, - OpRayQueryInitializeKHR = 4473, - OpRayQueryTerminateKHR = 4474, - OpRayQueryGenerateIntersectionKHR = 4475, - OpRayQueryConfirmIntersectionKHR = 4476, - OpRayQueryProceedKHR = 4477, - OpRayQueryGetIntersectionTypeKHR = 4479, - OpGroupIAddNonUniformAMD = 5000, - OpGroupFAddNonUniformAMD = 5001, - OpGroupFMinNonUniformAMD = 5002, - OpGroupUMinNonUniformAMD = 5003, - OpGroupSMinNonUniformAMD = 5004, - OpGroupFMaxNonUniformAMD = 5005, - OpGroupUMaxNonUniformAMD = 5006, - OpGroupSMaxNonUniformAMD = 5007, - OpFragmentMaskFetchAMD = 5011, - OpFragmentFetchAMD = 5012, - OpReadClockKHR = 5056, - OpImageSampleFootprintNV = 5283, - OpEmitMeshTasksEXT = 5294, - OpSetMeshOutputsEXT = 5295, - OpGroupNonUniformPartitionNV = 5296, - OpWritePackedPrimitiveIndices4x8NV = 5299, - OpReportIntersectionKHR = 5334, - OpReportIntersectionNV = 5334, - OpIgnoreIntersectionNV = 5335, - OpTerminateRayNV = 5336, - OpTraceNV = 5337, - OpTraceMotionNV = 5338, - OpTraceRayMotionNV = 5339, - OpTypeAccelerationStructureKHR = 5341, - OpTypeAccelerationStructureNV = 5341, - OpExecuteCallableNV = 5344, - OpTypeCooperativeMatrixNV = 5358, - OpCooperativeMatrixLoadNV = 5359, - OpCooperativeMatrixStoreNV = 5360, - OpCooperativeMatrixMulAddNV = 5361, - OpCooperativeMatrixLengthNV = 5362, - OpBeginInvocationInterlockEXT = 5364, - OpEndInvocationInterlockEXT = 5365, - OpDemoteToHelperInvocation = 5380, - OpDemoteToHelperInvocationEXT = 5380, - OpIsHelperInvocationEXT = 5381, - OpConvertUToImageNV = 5391, - OpConvertUToSamplerNV = 5392, - OpConvertImageToUNV = 5393, - OpConvertSamplerToUNV = 5394, - OpConvertUToSampledImageNV = 5395, - OpConvertSampledImageToUNV = 5396, - OpSamplerImageAddressingModeNV = 5397, - OpSubgroupShuffleINTEL = 5571, - OpSubgroupShuffleDownINTEL = 5572, - OpSubgroupShuffleUpINTEL = 5573, - OpSubgroupShuffleXorINTEL = 5574, - OpSubgroupBlockReadINTEL = 5575, - OpSubgroupBlockWriteINTEL = 5576, - OpSubgroupImageBlockReadINTEL = 5577, - OpSubgroupImageBlockWriteINTEL = 5578, - OpSubgroupImageMediaBlockReadINTEL = 5580, - OpSubgroupImageMediaBlockWriteINTEL = 5581, - OpUCountLeadingZerosINTEL = 5585, - OpUCountTrailingZerosINTEL = 5586, - OpAbsISubINTEL = 5587, - OpAbsUSubINTEL = 5588, - OpIAddSatINTEL = 5589, - OpUAddSatINTEL = 5590, - OpIAverageINTEL = 5591, - OpUAverageINTEL = 5592, - OpIAverageRoundedINTEL = 5593, - OpUAverageRoundedINTEL = 5594, - OpISubSatINTEL = 5595, - OpUSubSatINTEL = 5596, - OpIMul32x16INTEL = 5597, - OpUMul32x16INTEL = 5598, - OpConstantFunctionPointerINTEL = 5600, - OpFunctionPointerCallINTEL = 5601, - OpAsmTargetINTEL = 5609, - OpAsmINTEL = 5610, - OpAsmCallINTEL = 5611, - OpAtomicFMinEXT = 5614, - OpAtomicFMaxEXT = 5615, - OpAssumeTrueKHR = 5630, - OpExpectKHR = 5631, - OpDecorateString = 5632, - OpDecorateStringGOOGLE = 5632, - OpMemberDecorateString = 5633, - OpMemberDecorateStringGOOGLE = 5633, - OpVmeImageINTEL = 5699, - OpTypeVmeImageINTEL = 5700, - OpTypeAvcImePayloadINTEL = 5701, - OpTypeAvcRefPayloadINTEL = 5702, - OpTypeAvcSicPayloadINTEL = 5703, - OpTypeAvcMcePayloadINTEL = 5704, - OpTypeAvcMceResultINTEL = 5705, - OpTypeAvcImeResultINTEL = 5706, - OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707, - OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708, - OpTypeAvcImeSingleReferenceStreaminINTEL = 5709, - OpTypeAvcImeDualReferenceStreaminINTEL = 5710, - OpTypeAvcRefResultINTEL = 5711, - OpTypeAvcSicResultINTEL = 5712, - OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713, - OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714, - OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715, - OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716, - OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717, - OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718, - OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719, - OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720, - OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721, - OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722, - OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723, - OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724, - OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725, - OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726, - OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727, - OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728, - OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729, - OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730, - OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731, - OpSubgroupAvcMceConvertToImePayloadINTEL = 5732, - OpSubgroupAvcMceConvertToImeResultINTEL = 5733, - OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734, - OpSubgroupAvcMceConvertToRefResultINTEL = 5735, - OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736, - OpSubgroupAvcMceConvertToSicResultINTEL = 5737, - OpSubgroupAvcMceGetMotionVectorsINTEL = 5738, - OpSubgroupAvcMceGetInterDistortionsINTEL = 5739, - OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740, - OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741, - OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742, - OpSubgroupAvcMceGetInterDirectionsINTEL = 5743, - OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744, - OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745, - OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746, - OpSubgroupAvcImeInitializeINTEL = 5747, - OpSubgroupAvcImeSetSingleReferenceINTEL = 5748, - OpSubgroupAvcImeSetDualReferenceINTEL = 5749, - OpSubgroupAvcImeRefWindowSizeINTEL = 5750, - OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751, - OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752, - OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753, - OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754, - OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755, - OpSubgroupAvcImeSetWeightedSadINTEL = 5756, - OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757, - OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759, - OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761, - OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762, - OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763, - OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764, - OpSubgroupAvcImeConvertToMceResultINTEL = 5765, - OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766, - OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767, - OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768, - OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771, - OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774, - OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775, - OpSubgroupAvcImeGetBorderReachedINTEL = 5776, - OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777, - OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778, - OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779, - OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780, - OpSubgroupAvcFmeInitializeINTEL = 5781, - OpSubgroupAvcBmeInitializeINTEL = 5782, - OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783, - OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784, - OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785, - OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786, - OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787, - OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788, - OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789, - OpSubgroupAvcRefConvertToMceResultINTEL = 5790, - OpSubgroupAvcSicInitializeINTEL = 5791, - OpSubgroupAvcSicConfigureSkcINTEL = 5792, - OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793, - OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794, - OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795, - OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796, - OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797, - OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798, - OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799, - OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800, - OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801, - OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802, - OpSubgroupAvcSicEvaluateIpeINTEL = 5803, - OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804, - OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805, - OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806, - OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807, - OpSubgroupAvcSicConvertToMceResultINTEL = 5808, - OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809, - OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810, - OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811, - OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812, - OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813, - OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, - OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, - OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, - OpVariableLengthArrayINTEL = 5818, - OpSaveMemoryINTEL = 5819, - OpRestoreMemoryINTEL = 5820, - OpArbitraryFloatSinCosPiINTEL = 5840, - OpArbitraryFloatCastINTEL = 5841, - OpArbitraryFloatCastFromIntINTEL = 5842, - OpArbitraryFloatCastToIntINTEL = 5843, - OpArbitraryFloatAddINTEL = 5846, - OpArbitraryFloatSubINTEL = 5847, - OpArbitraryFloatMulINTEL = 5848, - OpArbitraryFloatDivINTEL = 5849, - OpArbitraryFloatGTINTEL = 5850, - OpArbitraryFloatGEINTEL = 5851, - OpArbitraryFloatLTINTEL = 5852, - OpArbitraryFloatLEINTEL = 5853, - OpArbitraryFloatEQINTEL = 5854, - OpArbitraryFloatRecipINTEL = 5855, - OpArbitraryFloatRSqrtINTEL = 5856, - OpArbitraryFloatCbrtINTEL = 5857, - OpArbitraryFloatHypotINTEL = 5858, - OpArbitraryFloatSqrtINTEL = 5859, - OpArbitraryFloatLogINTEL = 5860, - OpArbitraryFloatLog2INTEL = 5861, - OpArbitraryFloatLog10INTEL = 5862, - OpArbitraryFloatLog1pINTEL = 5863, - OpArbitraryFloatExpINTEL = 5864, - OpArbitraryFloatExp2INTEL = 5865, - OpArbitraryFloatExp10INTEL = 5866, - OpArbitraryFloatExpm1INTEL = 5867, - OpArbitraryFloatSinINTEL = 5868, - OpArbitraryFloatCosINTEL = 5869, - OpArbitraryFloatSinCosINTEL = 5870, - OpArbitraryFloatSinPiINTEL = 5871, - OpArbitraryFloatCosPiINTEL = 5872, - OpArbitraryFloatASinINTEL = 5873, - OpArbitraryFloatASinPiINTEL = 5874, - OpArbitraryFloatACosINTEL = 5875, - OpArbitraryFloatACosPiINTEL = 5876, - OpArbitraryFloatATanINTEL = 5877, - OpArbitraryFloatATanPiINTEL = 5878, - OpArbitraryFloatATan2INTEL = 5879, - OpArbitraryFloatPowINTEL = 5880, - OpArbitraryFloatPowRINTEL = 5881, - OpArbitraryFloatPowNINTEL = 5882, - OpLoopControlINTEL = 5887, - OpFixedSqrtINTEL = 5923, - OpFixedRecipINTEL = 5924, - OpFixedRsqrtINTEL = 5925, - OpFixedSinINTEL = 5926, - OpFixedCosINTEL = 5927, - OpFixedSinCosINTEL = 5928, - OpFixedSinPiINTEL = 5929, - OpFixedCosPiINTEL = 5930, - OpFixedSinCosPiINTEL = 5931, - OpFixedLogINTEL = 5932, - OpFixedExpINTEL = 5933, - OpPtrCastToCrossWorkgroupINTEL = 5934, - OpCrossWorkgroupCastToPtrINTEL = 5938, - OpReadPipeBlockingINTEL = 5946, - OpWritePipeBlockingINTEL = 5947, - OpFPGARegINTEL = 5949, - OpRayQueryGetRayTMinKHR = 6016, - OpRayQueryGetRayFlagsKHR = 6017, - OpRayQueryGetIntersectionTKHR = 6018, - OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019, - OpRayQueryGetIntersectionInstanceIdKHR = 6020, - OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021, - OpRayQueryGetIntersectionGeometryIndexKHR = 6022, - OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023, - OpRayQueryGetIntersectionBarycentricsKHR = 6024, - OpRayQueryGetIntersectionFrontFaceKHR = 6025, - OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026, - OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027, - OpRayQueryGetIntersectionObjectRayOriginKHR = 6028, - OpRayQueryGetWorldRayDirectionKHR = 6029, - OpRayQueryGetWorldRayOriginKHR = 6030, - OpRayQueryGetIntersectionObjectToWorldKHR = 6031, - OpRayQueryGetIntersectionWorldToObjectKHR = 6032, - OpAtomicFAddEXT = 6035, - OpTypeBufferSurfaceINTEL = 6086, - OpTypeStructContinuedINTEL = 6090, - OpConstantCompositeContinuedINTEL = 6091, - OpSpecConstantCompositeContinuedINTEL = 6092, - OpMax = 0x7fffffff, -}; - -#ifdef SPV_ENABLE_UTILITY_CODE -inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { - *hasResult = *hasResultType = false; - switch (opcode) { - default: /* unknown opcode */ break; - case OpNop: *hasResult = false; *hasResultType = false; break; - case OpUndef: *hasResult = true; *hasResultType = true; break; - case OpSourceContinued: *hasResult = false; *hasResultType = false; break; - case OpSource: *hasResult = false; *hasResultType = false; break; - case OpSourceExtension: *hasResult = false; *hasResultType = false; break; - case OpName: *hasResult = false; *hasResultType = false; break; - case OpMemberName: *hasResult = false; *hasResultType = false; break; - case OpString: *hasResult = true; *hasResultType = false; break; - case OpLine: *hasResult = false; *hasResultType = false; break; - case OpExtension: *hasResult = false; *hasResultType = false; break; - case OpExtInstImport: *hasResult = true; *hasResultType = false; break; - case OpExtInst: *hasResult = true; *hasResultType = true; break; - case OpMemoryModel: *hasResult = false; *hasResultType = false; break; - case OpEntryPoint: *hasResult = false; *hasResultType = false; break; - case OpExecutionMode: *hasResult = false; *hasResultType = false; break; - case OpCapability: *hasResult = false; *hasResultType = false; break; - case OpTypeVoid: *hasResult = true; *hasResultType = false; break; - case OpTypeBool: *hasResult = true; *hasResultType = false; break; - case OpTypeInt: *hasResult = true; *hasResultType = false; break; - case OpTypeFloat: *hasResult = true; *hasResultType = false; break; - case OpTypeVector: *hasResult = true; *hasResultType = false; break; - case OpTypeMatrix: *hasResult = true; *hasResultType = false; break; - case OpTypeImage: *hasResult = true; *hasResultType = false; break; - case OpTypeSampler: *hasResult = true; *hasResultType = false; break; - case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break; - case OpTypeArray: *hasResult = true; *hasResultType = false; break; - case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break; - case OpTypeStruct: *hasResult = true; *hasResultType = false; break; - case OpTypeOpaque: *hasResult = true; *hasResultType = false; break; - case OpTypePointer: *hasResult = true; *hasResultType = false; break; - case OpTypeFunction: *hasResult = true; *hasResultType = false; break; - case OpTypeEvent: *hasResult = true; *hasResultType = false; break; - case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break; - case OpTypeReserveId: *hasResult = true; *hasResultType = false; break; - case OpTypeQueue: *hasResult = true; *hasResultType = false; break; - case OpTypePipe: *hasResult = true; *hasResultType = false; break; - case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break; - case OpConstantTrue: *hasResult = true; *hasResultType = true; break; - case OpConstantFalse: *hasResult = true; *hasResultType = true; break; - case OpConstant: *hasResult = true; *hasResultType = true; break; - case OpConstantComposite: *hasResult = true; *hasResultType = true; break; - case OpConstantSampler: *hasResult = true; *hasResultType = true; break; - case OpConstantNull: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break; - case OpSpecConstant: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break; - case OpFunction: *hasResult = true; *hasResultType = true; break; - case OpFunctionParameter: *hasResult = true; *hasResultType = true; break; - case OpFunctionEnd: *hasResult = false; *hasResultType = false; break; - case OpFunctionCall: *hasResult = true; *hasResultType = true; break; - case OpVariable: *hasResult = true; *hasResultType = true; break; - case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break; - case OpLoad: *hasResult = true; *hasResultType = true; break; - case OpStore: *hasResult = false; *hasResultType = false; break; - case OpCopyMemory: *hasResult = false; *hasResultType = false; break; - case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break; - case OpAccessChain: *hasResult = true; *hasResultType = true; break; - case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break; - case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break; - case OpArrayLength: *hasResult = true; *hasResultType = true; break; - case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break; - case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break; - case OpDecorate: *hasResult = false; *hasResultType = false; break; - case OpMemberDecorate: *hasResult = false; *hasResultType = false; break; - case OpDecorationGroup: *hasResult = true; *hasResultType = false; break; - case OpGroupDecorate: *hasResult = false; *hasResultType = false; break; - case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break; - case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break; - case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break; - case OpVectorShuffle: *hasResult = true; *hasResultType = true; break; - case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break; - case OpCompositeExtract: *hasResult = true; *hasResultType = true; break; - case OpCompositeInsert: *hasResult = true; *hasResultType = true; break; - case OpCopyObject: *hasResult = true; *hasResultType = true; break; - case OpTranspose: *hasResult = true; *hasResultType = true; break; - case OpSampledImage: *hasResult = true; *hasResultType = true; break; - case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageFetch: *hasResult = true; *hasResultType = true; break; - case OpImageGather: *hasResult = true; *hasResultType = true; break; - case OpImageDrefGather: *hasResult = true; *hasResultType = true; break; - case OpImageRead: *hasResult = true; *hasResultType = true; break; - case OpImageWrite: *hasResult = false; *hasResultType = false; break; - case OpImage: *hasResult = true; *hasResultType = true; break; - case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break; - case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySize: *hasResult = true; *hasResultType = true; break; - case OpImageQueryLod: *hasResult = true; *hasResultType = true; break; - case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break; - case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break; - case OpConvertFToU: *hasResult = true; *hasResultType = true; break; - case OpConvertFToS: *hasResult = true; *hasResultType = true; break; - case OpConvertSToF: *hasResult = true; *hasResultType = true; break; - case OpConvertUToF: *hasResult = true; *hasResultType = true; break; - case OpUConvert: *hasResult = true; *hasResultType = true; break; - case OpSConvert: *hasResult = true; *hasResultType = true; break; - case OpFConvert: *hasResult = true; *hasResultType = true; break; - case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break; - case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break; - case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break; - case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break; - case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break; - case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break; - case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break; - case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break; - case OpBitcast: *hasResult = true; *hasResultType = true; break; - case OpSNegate: *hasResult = true; *hasResultType = true; break; - case OpFNegate: *hasResult = true; *hasResultType = true; break; - case OpIAdd: *hasResult = true; *hasResultType = true; break; - case OpFAdd: *hasResult = true; *hasResultType = true; break; - case OpISub: *hasResult = true; *hasResultType = true; break; - case OpFSub: *hasResult = true; *hasResultType = true; break; - case OpIMul: *hasResult = true; *hasResultType = true; break; - case OpFMul: *hasResult = true; *hasResultType = true; break; - case OpUDiv: *hasResult = true; *hasResultType = true; break; - case OpSDiv: *hasResult = true; *hasResultType = true; break; - case OpFDiv: *hasResult = true; *hasResultType = true; break; - case OpUMod: *hasResult = true; *hasResultType = true; break; - case OpSRem: *hasResult = true; *hasResultType = true; break; - case OpSMod: *hasResult = true; *hasResultType = true; break; - case OpFRem: *hasResult = true; *hasResultType = true; break; - case OpFMod: *hasResult = true; *hasResultType = true; break; - case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break; - case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break; - case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break; - case OpOuterProduct: *hasResult = true; *hasResultType = true; break; - case OpDot: *hasResult = true; *hasResultType = true; break; - case OpIAddCarry: *hasResult = true; *hasResultType = true; break; - case OpISubBorrow: *hasResult = true; *hasResultType = true; break; - case OpUMulExtended: *hasResult = true; *hasResultType = true; break; - case OpSMulExtended: *hasResult = true; *hasResultType = true; break; - case OpAny: *hasResult = true; *hasResultType = true; break; - case OpAll: *hasResult = true; *hasResultType = true; break; - case OpIsNan: *hasResult = true; *hasResultType = true; break; - case OpIsInf: *hasResult = true; *hasResultType = true; break; - case OpIsFinite: *hasResult = true; *hasResultType = true; break; - case OpIsNormal: *hasResult = true; *hasResultType = true; break; - case OpSignBitSet: *hasResult = true; *hasResultType = true; break; - case OpLessOrGreater: *hasResult = true; *hasResultType = true; break; - case OpOrdered: *hasResult = true; *hasResultType = true; break; - case OpUnordered: *hasResult = true; *hasResultType = true; break; - case OpLogicalEqual: *hasResult = true; *hasResultType = true; break; - case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break; - case OpLogicalOr: *hasResult = true; *hasResultType = true; break; - case OpLogicalAnd: *hasResult = true; *hasResultType = true; break; - case OpLogicalNot: *hasResult = true; *hasResultType = true; break; - case OpSelect: *hasResult = true; *hasResultType = true; break; - case OpIEqual: *hasResult = true; *hasResultType = true; break; - case OpINotEqual: *hasResult = true; *hasResultType = true; break; - case OpUGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpSGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpULessThan: *hasResult = true; *hasResultType = true; break; - case OpSLessThan: *hasResult = true; *hasResultType = true; break; - case OpULessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break; - case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break; - case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break; - case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break; - case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break; - case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break; - case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break; - case OpBitwiseOr: *hasResult = true; *hasResultType = true; break; - case OpBitwiseXor: *hasResult = true; *hasResultType = true; break; - case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break; - case OpNot: *hasResult = true; *hasResultType = true; break; - case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break; - case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break; - case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break; - case OpBitReverse: *hasResult = true; *hasResultType = true; break; - case OpBitCount: *hasResult = true; *hasResultType = true; break; - case OpDPdx: *hasResult = true; *hasResultType = true; break; - case OpDPdy: *hasResult = true; *hasResultType = true; break; - case OpFwidth: *hasResult = true; *hasResultType = true; break; - case OpDPdxFine: *hasResult = true; *hasResultType = true; break; - case OpDPdyFine: *hasResult = true; *hasResultType = true; break; - case OpFwidthFine: *hasResult = true; *hasResultType = true; break; - case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break; - case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break; - case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break; - case OpEmitVertex: *hasResult = false; *hasResultType = false; break; - case OpEndPrimitive: *hasResult = false; *hasResultType = false; break; - case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break; - case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break; - case OpControlBarrier: *hasResult = false; *hasResultType = false; break; - case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break; - case OpAtomicLoad: *hasResult = true; *hasResultType = true; break; - case OpAtomicStore: *hasResult = false; *hasResultType = false; break; - case OpAtomicExchange: *hasResult = true; *hasResultType = true; break; - case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break; - case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break; - case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break; - case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break; - case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break; - case OpAtomicISub: *hasResult = true; *hasResultType = true; break; - case OpAtomicSMin: *hasResult = true; *hasResultType = true; break; - case OpAtomicUMin: *hasResult = true; *hasResultType = true; break; - case OpAtomicSMax: *hasResult = true; *hasResultType = true; break; - case OpAtomicUMax: *hasResult = true; *hasResultType = true; break; - case OpAtomicAnd: *hasResult = true; *hasResultType = true; break; - case OpAtomicOr: *hasResult = true; *hasResultType = true; break; - case OpAtomicXor: *hasResult = true; *hasResultType = true; break; - case OpPhi: *hasResult = true; *hasResultType = true; break; - case OpLoopMerge: *hasResult = false; *hasResultType = false; break; - case OpSelectionMerge: *hasResult = false; *hasResultType = false; break; - case OpLabel: *hasResult = true; *hasResultType = false; break; - case OpBranch: *hasResult = false; *hasResultType = false; break; - case OpBranchConditional: *hasResult = false; *hasResultType = false; break; - case OpSwitch: *hasResult = false; *hasResultType = false; break; - case OpKill: *hasResult = false; *hasResultType = false; break; - case OpReturn: *hasResult = false; *hasResultType = false; break; - case OpReturnValue: *hasResult = false; *hasResultType = false; break; - case OpUnreachable: *hasResult = false; *hasResultType = false; break; - case OpLifetimeStart: *hasResult = false; *hasResultType = false; break; - case OpLifetimeStop: *hasResult = false; *hasResultType = false; break; - case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break; - case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break; - case OpGroupAll: *hasResult = true; *hasResultType = true; break; - case OpGroupAny: *hasResult = true; *hasResultType = true; break; - case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupIAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupFAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupFMin: *hasResult = true; *hasResultType = true; break; - case OpGroupUMin: *hasResult = true; *hasResultType = true; break; - case OpGroupSMin: *hasResult = true; *hasResultType = true; break; - case OpGroupFMax: *hasResult = true; *hasResultType = true; break; - case OpGroupUMax: *hasResult = true; *hasResultType = true; break; - case OpGroupSMax: *hasResult = true; *hasResultType = true; break; - case OpReadPipe: *hasResult = true; *hasResultType = true; break; - case OpWritePipe: *hasResult = true; *hasResultType = true; break; - case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break; - case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break; - case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; - case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; - case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break; - case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break; - case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break; - case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; - case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break; - case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break; - case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break; - case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break; - case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break; - case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break; - case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break; - case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break; - case OpRetainEvent: *hasResult = false; *hasResultType = false; break; - case OpReleaseEvent: *hasResult = false; *hasResultType = false; break; - case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break; - case OpIsValidEvent: *hasResult = true; *hasResultType = true; break; - case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break; - case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break; - case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break; - case OpBuildNDRange: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; - case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break; - case OpImageSparseGather: *hasResult = true; *hasResultType = true; break; - case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break; - case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break; - case OpNoLine: *hasResult = false; *hasResultType = false; break; - case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break; - case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break; - case OpImageSparseRead: *hasResult = true; *hasResultType = true; break; - case OpSizeOf: *hasResult = true; *hasResultType = true; break; - case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break; - case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break; - case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break; - case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break; - case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break; - case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break; - case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break; - case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break; - case OpModuleProcessed: *hasResult = false; *hasResultType = false; break; - case OpExecutionModeId: *hasResult = false; *hasResultType = false; break; - case OpDecorateId: *hasResult = false; *hasResultType = false; break; - case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; - case OpCopyLogical: *hasResult = true; *hasResultType = true; break; - case OpPtrEqual: *hasResult = true; *hasResultType = true; break; - case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; - case OpPtrDiff: *hasResult = true; *hasResultType = true; break; - case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; - case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; - case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; - case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; - case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; - case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; - case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break; - case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break; - case OpSDot: *hasResult = true; *hasResultType = true; break; - case OpUDot: *hasResult = true; *hasResultType = true; break; - case OpSUDot: *hasResult = true; *hasResultType = true; break; - case OpSDotAccSat: *hasResult = true; *hasResultType = true; break; - case OpUDotAccSat: *hasResult = true; *hasResultType = true; break; - case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break; - case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; - case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break; - case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break; - case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; - case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; - case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; - case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; - case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; - case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break; - case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break; - case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; - case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; - case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; - case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; - case OpTraceNV: *hasResult = false; *hasResultType = false; break; - case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break; - case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; - case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break; - case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; - case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; - case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; - case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; - case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; - case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break; - case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; - case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break; - case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break; - case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break; - case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break; - case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break; - case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break; - case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break; - case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; - case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break; - case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break; - case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break; - case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break; - case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; - case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; - case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; - case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; - case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; - case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break; - case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break; - case OpAsmINTEL: *hasResult = true; *hasResultType = true; break; - case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break; - case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break; - case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break; - case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break; - case OpExpectKHR: *hasResult = true; *hasResultType = true; break; - case OpDecorateString: *hasResult = false; *hasResultType = false; break; - case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; - case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; - case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break; - case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; - case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; - case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; - case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break; - case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break; - case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break; - case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break; - case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; - case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break; - case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break; - case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break; - case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break; - case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; - case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; - case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break; - case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break; - case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break; - case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break; - case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break; - case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; - case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; - } -} -#endif /* SPV_ENABLE_UTILITY_CODE */ - -// Overload operator| for mask bit combining - -inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } -inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } -inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } -inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } -inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } -inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } -inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } -inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } -inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } -inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } - -} // end namespace spv - -#endif // #ifndef spirv_HPP +// Copyright (c) 2014-2020 The Khronos Group Inc. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and/or associated documentation files (the "Materials"), +// to deal in the Materials without restriction, including without limitation +// the rights to use, copy, modify, merge, publish, distribute, sublicense, +// and/or sell copies of the Materials, and to permit persons to whom the +// Materials are furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Materials. +// +// MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +// STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// +// THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +// THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +// FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS +// IN THE MATERIALS. + +// This header is automatically generated by the same tool that creates +// the Binary Section of the SPIR-V specification. + +// Enumeration tokens for SPIR-V, in various styles: +// C, C++, C++11, JSON, Lua, Python, C#, D +// +// - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL +// - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL +// - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL +// - Lua will use tables, e.g.: spv.SourceLanguage.GLSL +// - Python will use dictionaries, e.g.: spv['SourceLanguage']['GLSL'] +// - C# will use enum classes in the Specification class located in the "Spv" namespace, +// e.g.: Spv.Specification.SourceLanguage.GLSL +// - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL +// +// Some tokens act like mask values, which can be OR'd together, +// while others are mutually exclusive. The mask-like ones have +// "Mask" in their name, and a parallel enum that has the shift +// amount (1 << x) for each corresponding enumerant. + +#ifndef spirv_HPP +#define spirv_HPP + +namespace spv { + +typedef unsigned int Id; + +#define SPV_VERSION 0x10600 +#define SPV_REVISION 1 + +static const unsigned int MagicNumber = 0x07230203; +static const unsigned int Version = 0x00010600; +static const unsigned int Revision = 1; +static const unsigned int OpCodeMask = 0xffff; +static const unsigned int WordCountShift = 16; + +enum SourceLanguage { + SourceLanguageUnknown = 0, + SourceLanguageESSL = 1, + SourceLanguageGLSL = 2, + SourceLanguageOpenCL_C = 3, + SourceLanguageOpenCL_CPP = 4, + SourceLanguageHLSL = 5, + SourceLanguageCPP_for_OpenCL = 6, + SourceLanguageMax = 0x7fffffff, +}; + +enum ExecutionModel { + ExecutionModelVertex = 0, + ExecutionModelTessellationControl = 1, + ExecutionModelTessellationEvaluation = 2, + ExecutionModelGeometry = 3, + ExecutionModelFragment = 4, + ExecutionModelGLCompute = 5, + ExecutionModelKernel = 6, + ExecutionModelTaskNV = 5267, + ExecutionModelMeshNV = 5268, + ExecutionModelRayGenerationKHR = 5313, + ExecutionModelRayGenerationNV = 5313, + ExecutionModelIntersectionKHR = 5314, + ExecutionModelIntersectionNV = 5314, + ExecutionModelAnyHitKHR = 5315, + ExecutionModelAnyHitNV = 5315, + ExecutionModelClosestHitKHR = 5316, + ExecutionModelClosestHitNV = 5316, + ExecutionModelMissKHR = 5317, + ExecutionModelMissNV = 5317, + ExecutionModelCallableKHR = 5318, + ExecutionModelCallableNV = 5318, + ExecutionModelTaskEXT = 5364, + ExecutionModelMeshEXT = 5365, + ExecutionModelMax = 0x7fffffff, +}; + +enum AddressingModel { + AddressingModelLogical = 0, + AddressingModelPhysical32 = 1, + AddressingModelPhysical64 = 2, + AddressingModelPhysicalStorageBuffer64 = 5348, + AddressingModelPhysicalStorageBuffer64EXT = 5348, + AddressingModelMax = 0x7fffffff, +}; + +enum MemoryModel { + MemoryModelSimple = 0, + MemoryModelGLSL450 = 1, + MemoryModelOpenCL = 2, + MemoryModelVulkan = 3, + MemoryModelVulkanKHR = 3, + MemoryModelMax = 0x7fffffff, +}; + +enum ExecutionMode { + ExecutionModeInvocations = 0, + ExecutionModeSpacingEqual = 1, + ExecutionModeSpacingFractionalEven = 2, + ExecutionModeSpacingFractionalOdd = 3, + ExecutionModeVertexOrderCw = 4, + ExecutionModeVertexOrderCcw = 5, + ExecutionModePixelCenterInteger = 6, + ExecutionModeOriginUpperLeft = 7, + ExecutionModeOriginLowerLeft = 8, + ExecutionModeEarlyFragmentTests = 9, + ExecutionModePointMode = 10, + ExecutionModeXfb = 11, + ExecutionModeDepthReplacing = 12, + ExecutionModeDepthGreater = 14, + ExecutionModeDepthLess = 15, + ExecutionModeDepthUnchanged = 16, + ExecutionModeLocalSize = 17, + ExecutionModeLocalSizeHint = 18, + ExecutionModeInputPoints = 19, + ExecutionModeInputLines = 20, + ExecutionModeInputLinesAdjacency = 21, + ExecutionModeTriangles = 22, + ExecutionModeInputTrianglesAdjacency = 23, + ExecutionModeQuads = 24, + ExecutionModeIsolines = 25, + ExecutionModeOutputVertices = 26, + ExecutionModeOutputPoints = 27, + ExecutionModeOutputLineStrip = 28, + ExecutionModeOutputTriangleStrip = 29, + ExecutionModeVecTypeHint = 30, + ExecutionModeContractionOff = 31, + ExecutionModeInitializer = 33, + ExecutionModeFinalizer = 34, + ExecutionModeSubgroupSize = 35, + ExecutionModeSubgroupsPerWorkgroup = 36, + ExecutionModeSubgroupsPerWorkgroupId = 37, + ExecutionModeLocalSizeId = 38, + ExecutionModeLocalSizeHintId = 39, + ExecutionModeSubgroupUniformControlFlowKHR = 4421, + ExecutionModePostDepthCoverage = 4446, + ExecutionModeDenormPreserve = 4459, + ExecutionModeDenormFlushToZero = 4460, + ExecutionModeSignedZeroInfNanPreserve = 4461, + ExecutionModeRoundingModeRTE = 4462, + ExecutionModeRoundingModeRTZ = 4463, + ExecutionModeEarlyAndLateFragmentTestsAMD = 5017, + ExecutionModeStencilRefReplacingEXT = 5027, + ExecutionModeStencilRefUnchangedFrontAMD = 5079, + ExecutionModeStencilRefGreaterFrontAMD = 5080, + ExecutionModeStencilRefLessFrontAMD = 5081, + ExecutionModeStencilRefUnchangedBackAMD = 5082, + ExecutionModeStencilRefGreaterBackAMD = 5083, + ExecutionModeStencilRefLessBackAMD = 5084, + ExecutionModeOutputLinesEXT = 5269, + ExecutionModeOutputLinesNV = 5269, + ExecutionModeOutputPrimitivesEXT = 5270, + ExecutionModeOutputPrimitivesNV = 5270, + ExecutionModeDerivativeGroupQuadsNV = 5289, + ExecutionModeDerivativeGroupLinearNV = 5290, + ExecutionModeOutputTrianglesEXT = 5298, + ExecutionModeOutputTrianglesNV = 5298, + ExecutionModePixelInterlockOrderedEXT = 5366, + ExecutionModePixelInterlockUnorderedEXT = 5367, + ExecutionModeSampleInterlockOrderedEXT = 5368, + ExecutionModeSampleInterlockUnorderedEXT = 5369, + ExecutionModeShadingRateInterlockOrderedEXT = 5370, + ExecutionModeShadingRateInterlockUnorderedEXT = 5371, + ExecutionModeSharedLocalMemorySizeINTEL = 5618, + ExecutionModeRoundingModeRTPINTEL = 5620, + ExecutionModeRoundingModeRTNINTEL = 5621, + ExecutionModeFloatingPointModeALTINTEL = 5622, + ExecutionModeFloatingPointModeIEEEINTEL = 5623, + ExecutionModeMaxWorkgroupSizeINTEL = 5893, + ExecutionModeMaxWorkDimINTEL = 5894, + ExecutionModeNoGlobalOffsetINTEL = 5895, + ExecutionModeNumSIMDWorkitemsINTEL = 5896, + ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, + ExecutionModeMax = 0x7fffffff, +}; + +enum StorageClass { + StorageClassUniformConstant = 0, + StorageClassInput = 1, + StorageClassUniform = 2, + StorageClassOutput = 3, + StorageClassWorkgroup = 4, + StorageClassCrossWorkgroup = 5, + StorageClassPrivate = 6, + StorageClassFunction = 7, + StorageClassGeneric = 8, + StorageClassPushConstant = 9, + StorageClassAtomicCounter = 10, + StorageClassImage = 11, + StorageClassStorageBuffer = 12, + StorageClassCallableDataKHR = 5328, + StorageClassCallableDataNV = 5328, + StorageClassIncomingCallableDataKHR = 5329, + StorageClassIncomingCallableDataNV = 5329, + StorageClassRayPayloadKHR = 5338, + StorageClassRayPayloadNV = 5338, + StorageClassHitAttributeKHR = 5339, + StorageClassHitAttributeNV = 5339, + StorageClassIncomingRayPayloadKHR = 5342, + StorageClassIncomingRayPayloadNV = 5342, + StorageClassShaderRecordBufferKHR = 5343, + StorageClassShaderRecordBufferNV = 5343, + StorageClassPhysicalStorageBuffer = 5349, + StorageClassPhysicalStorageBufferEXT = 5349, + StorageClassTaskPayloadWorkgroupEXT = 5402, + StorageClassCodeSectionINTEL = 5605, + StorageClassDeviceOnlyINTEL = 5936, + StorageClassHostOnlyINTEL = 5937, + StorageClassMax = 0x7fffffff, +}; + +enum Dim { + Dim1D = 0, + Dim2D = 1, + Dim3D = 2, + DimCube = 3, + DimRect = 4, + DimBuffer = 5, + DimSubpassData = 6, + DimMax = 0x7fffffff, +}; + +enum SamplerAddressingMode { + SamplerAddressingModeNone = 0, + SamplerAddressingModeClampToEdge = 1, + SamplerAddressingModeClamp = 2, + SamplerAddressingModeRepeat = 3, + SamplerAddressingModeRepeatMirrored = 4, + SamplerAddressingModeMax = 0x7fffffff, +}; + +enum SamplerFilterMode { + SamplerFilterModeNearest = 0, + SamplerFilterModeLinear = 1, + SamplerFilterModeMax = 0x7fffffff, +}; + +enum ImageFormat { + ImageFormatUnknown = 0, + ImageFormatRgba32f = 1, + ImageFormatRgba16f = 2, + ImageFormatR32f = 3, + ImageFormatRgba8 = 4, + ImageFormatRgba8Snorm = 5, + ImageFormatRg32f = 6, + ImageFormatRg16f = 7, + ImageFormatR11fG11fB10f = 8, + ImageFormatR16f = 9, + ImageFormatRgba16 = 10, + ImageFormatRgb10A2 = 11, + ImageFormatRg16 = 12, + ImageFormatRg8 = 13, + ImageFormatR16 = 14, + ImageFormatR8 = 15, + ImageFormatRgba16Snorm = 16, + ImageFormatRg16Snorm = 17, + ImageFormatRg8Snorm = 18, + ImageFormatR16Snorm = 19, + ImageFormatR8Snorm = 20, + ImageFormatRgba32i = 21, + ImageFormatRgba16i = 22, + ImageFormatRgba8i = 23, + ImageFormatR32i = 24, + ImageFormatRg32i = 25, + ImageFormatRg16i = 26, + ImageFormatRg8i = 27, + ImageFormatR16i = 28, + ImageFormatR8i = 29, + ImageFormatRgba32ui = 30, + ImageFormatRgba16ui = 31, + ImageFormatRgba8ui = 32, + ImageFormatR32ui = 33, + ImageFormatRgb10a2ui = 34, + ImageFormatRg32ui = 35, + ImageFormatRg16ui = 36, + ImageFormatRg8ui = 37, + ImageFormatR16ui = 38, + ImageFormatR8ui = 39, + ImageFormatR64ui = 40, + ImageFormatR64i = 41, + ImageFormatMax = 0x7fffffff, +}; + +enum ImageChannelOrder { + ImageChannelOrderR = 0, + ImageChannelOrderA = 1, + ImageChannelOrderRG = 2, + ImageChannelOrderRA = 3, + ImageChannelOrderRGB = 4, + ImageChannelOrderRGBA = 5, + ImageChannelOrderBGRA = 6, + ImageChannelOrderARGB = 7, + ImageChannelOrderIntensity = 8, + ImageChannelOrderLuminance = 9, + ImageChannelOrderRx = 10, + ImageChannelOrderRGx = 11, + ImageChannelOrderRGBx = 12, + ImageChannelOrderDepth = 13, + ImageChannelOrderDepthStencil = 14, + ImageChannelOrdersRGB = 15, + ImageChannelOrdersRGBx = 16, + ImageChannelOrdersRGBA = 17, + ImageChannelOrdersBGRA = 18, + ImageChannelOrderABGR = 19, + ImageChannelOrderMax = 0x7fffffff, +}; + +enum ImageChannelDataType { + ImageChannelDataTypeSnormInt8 = 0, + ImageChannelDataTypeSnormInt16 = 1, + ImageChannelDataTypeUnormInt8 = 2, + ImageChannelDataTypeUnormInt16 = 3, + ImageChannelDataTypeUnormShort565 = 4, + ImageChannelDataTypeUnormShort555 = 5, + ImageChannelDataTypeUnormInt101010 = 6, + ImageChannelDataTypeSignedInt8 = 7, + ImageChannelDataTypeSignedInt16 = 8, + ImageChannelDataTypeSignedInt32 = 9, + ImageChannelDataTypeUnsignedInt8 = 10, + ImageChannelDataTypeUnsignedInt16 = 11, + ImageChannelDataTypeUnsignedInt32 = 12, + ImageChannelDataTypeHalfFloat = 13, + ImageChannelDataTypeFloat = 14, + ImageChannelDataTypeUnormInt24 = 15, + ImageChannelDataTypeUnormInt101010_2 = 16, + ImageChannelDataTypeMax = 0x7fffffff, +}; + +enum ImageOperandsShift { + ImageOperandsBiasShift = 0, + ImageOperandsLodShift = 1, + ImageOperandsGradShift = 2, + ImageOperandsConstOffsetShift = 3, + ImageOperandsOffsetShift = 4, + ImageOperandsConstOffsetsShift = 5, + ImageOperandsSampleShift = 6, + ImageOperandsMinLodShift = 7, + ImageOperandsMakeTexelAvailableShift = 8, + ImageOperandsMakeTexelAvailableKHRShift = 8, + ImageOperandsMakeTexelVisibleShift = 9, + ImageOperandsMakeTexelVisibleKHRShift = 9, + ImageOperandsNonPrivateTexelShift = 10, + ImageOperandsNonPrivateTexelKHRShift = 10, + ImageOperandsVolatileTexelShift = 11, + ImageOperandsVolatileTexelKHRShift = 11, + ImageOperandsSignExtendShift = 12, + ImageOperandsZeroExtendShift = 13, + ImageOperandsNontemporalShift = 14, + ImageOperandsOffsetsShift = 16, + ImageOperandsMax = 0x7fffffff, +}; + +enum ImageOperandsMask { + ImageOperandsMaskNone = 0, + ImageOperandsBiasMask = 0x00000001, + ImageOperandsLodMask = 0x00000002, + ImageOperandsGradMask = 0x00000004, + ImageOperandsConstOffsetMask = 0x00000008, + ImageOperandsOffsetMask = 0x00000010, + ImageOperandsConstOffsetsMask = 0x00000020, + ImageOperandsSampleMask = 0x00000040, + ImageOperandsMinLodMask = 0x00000080, + ImageOperandsMakeTexelAvailableMask = 0x00000100, + ImageOperandsMakeTexelAvailableKHRMask = 0x00000100, + ImageOperandsMakeTexelVisibleMask = 0x00000200, + ImageOperandsMakeTexelVisibleKHRMask = 0x00000200, + ImageOperandsNonPrivateTexelMask = 0x00000400, + ImageOperandsNonPrivateTexelKHRMask = 0x00000400, + ImageOperandsVolatileTexelMask = 0x00000800, + ImageOperandsVolatileTexelKHRMask = 0x00000800, + ImageOperandsSignExtendMask = 0x00001000, + ImageOperandsZeroExtendMask = 0x00002000, + ImageOperandsNontemporalMask = 0x00004000, + ImageOperandsOffsetsMask = 0x00010000, +}; + +enum FPFastMathModeShift { + FPFastMathModeNotNaNShift = 0, + FPFastMathModeNotInfShift = 1, + FPFastMathModeNSZShift = 2, + FPFastMathModeAllowRecipShift = 3, + FPFastMathModeFastShift = 4, + FPFastMathModeAllowContractFastINTELShift = 16, + FPFastMathModeAllowReassocINTELShift = 17, + FPFastMathModeMax = 0x7fffffff, +}; + +enum FPFastMathModeMask { + FPFastMathModeMaskNone = 0, + FPFastMathModeNotNaNMask = 0x00000001, + FPFastMathModeNotInfMask = 0x00000002, + FPFastMathModeNSZMask = 0x00000004, + FPFastMathModeAllowRecipMask = 0x00000008, + FPFastMathModeFastMask = 0x00000010, + FPFastMathModeAllowContractFastINTELMask = 0x00010000, + FPFastMathModeAllowReassocINTELMask = 0x00020000, +}; + +enum FPRoundingMode { + FPRoundingModeRTE = 0, + FPRoundingModeRTZ = 1, + FPRoundingModeRTP = 2, + FPRoundingModeRTN = 3, + FPRoundingModeMax = 0x7fffffff, +}; + +enum LinkageType { + LinkageTypeExport = 0, + LinkageTypeImport = 1, + LinkageTypeLinkOnceODR = 2, + LinkageTypeMax = 0x7fffffff, +}; + +enum AccessQualifier { + AccessQualifierReadOnly = 0, + AccessQualifierWriteOnly = 1, + AccessQualifierReadWrite = 2, + AccessQualifierMax = 0x7fffffff, +}; + +enum FunctionParameterAttribute { + FunctionParameterAttributeZext = 0, + FunctionParameterAttributeSext = 1, + FunctionParameterAttributeByVal = 2, + FunctionParameterAttributeSret = 3, + FunctionParameterAttributeNoAlias = 4, + FunctionParameterAttributeNoCapture = 5, + FunctionParameterAttributeNoWrite = 6, + FunctionParameterAttributeNoReadWrite = 7, + FunctionParameterAttributeMax = 0x7fffffff, +}; + +enum Decoration { + DecorationRelaxedPrecision = 0, + DecorationSpecId = 1, + DecorationBlock = 2, + DecorationBufferBlock = 3, + DecorationRowMajor = 4, + DecorationColMajor = 5, + DecorationArrayStride = 6, + DecorationMatrixStride = 7, + DecorationGLSLShared = 8, + DecorationGLSLPacked = 9, + DecorationCPacked = 10, + DecorationBuiltIn = 11, + DecorationNoPerspective = 13, + DecorationFlat = 14, + DecorationPatch = 15, + DecorationCentroid = 16, + DecorationSample = 17, + DecorationInvariant = 18, + DecorationRestrict = 19, + DecorationAliased = 20, + DecorationVolatile = 21, + DecorationConstant = 22, + DecorationCoherent = 23, + DecorationNonWritable = 24, + DecorationNonReadable = 25, + DecorationUniform = 26, + DecorationUniformId = 27, + DecorationSaturatedConversion = 28, + DecorationStream = 29, + DecorationLocation = 30, + DecorationComponent = 31, + DecorationIndex = 32, + DecorationBinding = 33, + DecorationDescriptorSet = 34, + DecorationOffset = 35, + DecorationXfbBuffer = 36, + DecorationXfbStride = 37, + DecorationFuncParamAttr = 38, + DecorationFPRoundingMode = 39, + DecorationFPFastMathMode = 40, + DecorationLinkageAttributes = 41, + DecorationNoContraction = 42, + DecorationInputAttachmentIndex = 43, + DecorationAlignment = 44, + DecorationMaxByteOffset = 45, + DecorationAlignmentId = 46, + DecorationMaxByteOffsetId = 47, + DecorationNoSignedWrap = 4469, + DecorationNoUnsignedWrap = 4470, + DecorationExplicitInterpAMD = 4999, + DecorationOverrideCoverageNV = 5248, + DecorationPassthroughNV = 5250, + DecorationViewportRelativeNV = 5252, + DecorationSecondaryViewportRelativeNV = 5256, + DecorationPerPrimitiveEXT = 5271, + DecorationPerPrimitiveNV = 5271, + DecorationPerViewNV = 5272, + DecorationPerTaskNV = 5273, + DecorationPerVertexKHR = 5285, + DecorationPerVertexNV = 5285, + DecorationNonUniform = 5300, + DecorationNonUniformEXT = 5300, + DecorationRestrictPointer = 5355, + DecorationRestrictPointerEXT = 5355, + DecorationAliasedPointer = 5356, + DecorationAliasedPointerEXT = 5356, + DecorationBindlessSamplerNV = 5398, + DecorationBindlessImageNV = 5399, + DecorationBoundSamplerNV = 5400, + DecorationBoundImageNV = 5401, + DecorationSIMTCallINTEL = 5599, + DecorationReferencedIndirectlyINTEL = 5602, + DecorationClobberINTEL = 5607, + DecorationSideEffectsINTEL = 5608, + DecorationVectorComputeVariableINTEL = 5624, + DecorationFuncParamIOKindINTEL = 5625, + DecorationVectorComputeFunctionINTEL = 5626, + DecorationStackCallINTEL = 5627, + DecorationGlobalVariableOffsetINTEL = 5628, + DecorationCounterBuffer = 5634, + DecorationHlslCounterBufferGOOGLE = 5634, + DecorationHlslSemanticGOOGLE = 5635, + DecorationUserSemantic = 5635, + DecorationUserTypeGOOGLE = 5636, + DecorationFunctionRoundingModeINTEL = 5822, + DecorationFunctionDenormModeINTEL = 5823, + DecorationRegisterINTEL = 5825, + DecorationMemoryINTEL = 5826, + DecorationNumbanksINTEL = 5827, + DecorationBankwidthINTEL = 5828, + DecorationMaxPrivateCopiesINTEL = 5829, + DecorationSinglepumpINTEL = 5830, + DecorationDoublepumpINTEL = 5831, + DecorationMaxReplicatesINTEL = 5832, + DecorationSimpleDualPortINTEL = 5833, + DecorationMergeINTEL = 5834, + DecorationBankBitsINTEL = 5835, + DecorationForcePow2DepthINTEL = 5836, + DecorationBurstCoalesceINTEL = 5899, + DecorationCacheSizeINTEL = 5900, + DecorationDontStaticallyCoalesceINTEL = 5901, + DecorationPrefetchINTEL = 5902, + DecorationStallEnableINTEL = 5905, + DecorationFuseLoopsInFunctionINTEL = 5907, + DecorationBufferLocationINTEL = 5921, + DecorationIOPipeStorageINTEL = 5944, + DecorationFunctionFloatingPointModeINTEL = 6080, + DecorationSingleElementVectorINTEL = 6085, + DecorationVectorComputeCallableFunctionINTEL = 6087, + DecorationMediaBlockIOINTEL = 6140, + DecorationMax = 0x7fffffff, +}; + +enum BuiltIn { + BuiltInPosition = 0, + BuiltInPointSize = 1, + BuiltInClipDistance = 3, + BuiltInCullDistance = 4, + BuiltInVertexId = 5, + BuiltInInstanceId = 6, + BuiltInPrimitiveId = 7, + BuiltInInvocationId = 8, + BuiltInLayer = 9, + BuiltInViewportIndex = 10, + BuiltInTessLevelOuter = 11, + BuiltInTessLevelInner = 12, + BuiltInTessCoord = 13, + BuiltInPatchVertices = 14, + BuiltInFragCoord = 15, + BuiltInPointCoord = 16, + BuiltInFrontFacing = 17, + BuiltInSampleId = 18, + BuiltInSamplePosition = 19, + BuiltInSampleMask = 20, + BuiltInFragDepth = 22, + BuiltInHelperInvocation = 23, + BuiltInNumWorkgroups = 24, + BuiltInWorkgroupSize = 25, + BuiltInWorkgroupId = 26, + BuiltInLocalInvocationId = 27, + BuiltInGlobalInvocationId = 28, + BuiltInLocalInvocationIndex = 29, + BuiltInWorkDim = 30, + BuiltInGlobalSize = 31, + BuiltInEnqueuedWorkgroupSize = 32, + BuiltInGlobalOffset = 33, + BuiltInGlobalLinearId = 34, + BuiltInSubgroupSize = 36, + BuiltInSubgroupMaxSize = 37, + BuiltInNumSubgroups = 38, + BuiltInNumEnqueuedSubgroups = 39, + BuiltInSubgroupId = 40, + BuiltInSubgroupLocalInvocationId = 41, + BuiltInVertexIndex = 42, + BuiltInInstanceIndex = 43, + BuiltInSubgroupEqMask = 4416, + BuiltInSubgroupEqMaskKHR = 4416, + BuiltInSubgroupGeMask = 4417, + BuiltInSubgroupGeMaskKHR = 4417, + BuiltInSubgroupGtMask = 4418, + BuiltInSubgroupGtMaskKHR = 4418, + BuiltInSubgroupLeMask = 4419, + BuiltInSubgroupLeMaskKHR = 4419, + BuiltInSubgroupLtMask = 4420, + BuiltInSubgroupLtMaskKHR = 4420, + BuiltInBaseVertex = 4424, + BuiltInBaseInstance = 4425, + BuiltInDrawIndex = 4426, + BuiltInPrimitiveShadingRateKHR = 4432, + BuiltInDeviceIndex = 4438, + BuiltInViewIndex = 4440, + BuiltInShadingRateKHR = 4444, + BuiltInBaryCoordNoPerspAMD = 4992, + BuiltInBaryCoordNoPerspCentroidAMD = 4993, + BuiltInBaryCoordNoPerspSampleAMD = 4994, + BuiltInBaryCoordSmoothAMD = 4995, + BuiltInBaryCoordSmoothCentroidAMD = 4996, + BuiltInBaryCoordSmoothSampleAMD = 4997, + BuiltInBaryCoordPullModelAMD = 4998, + BuiltInFragStencilRefEXT = 5014, + BuiltInViewportMaskNV = 5253, + BuiltInSecondaryPositionNV = 5257, + BuiltInSecondaryViewportMaskNV = 5258, + BuiltInPositionPerViewNV = 5261, + BuiltInViewportMaskPerViewNV = 5262, + BuiltInFullyCoveredEXT = 5264, + BuiltInTaskCountNV = 5274, + BuiltInPrimitiveCountNV = 5275, + BuiltInPrimitiveIndicesNV = 5276, + BuiltInClipDistancePerViewNV = 5277, + BuiltInCullDistancePerViewNV = 5278, + BuiltInLayerPerViewNV = 5279, + BuiltInMeshViewCountNV = 5280, + BuiltInMeshViewIndicesNV = 5281, + BuiltInBaryCoordKHR = 5286, + BuiltInBaryCoordNV = 5286, + BuiltInBaryCoordNoPerspKHR = 5287, + BuiltInBaryCoordNoPerspNV = 5287, + BuiltInFragSizeEXT = 5292, + BuiltInFragmentSizeNV = 5292, + BuiltInFragInvocationCountEXT = 5293, + BuiltInInvocationsPerPixelNV = 5293, + BuiltInPrimitivePointIndicesEXT = 5294, + BuiltInPrimitiveLineIndicesEXT = 5295, + BuiltInPrimitiveTriangleIndicesEXT = 5296, + BuiltInCullPrimitiveEXT = 5299, + BuiltInLaunchIdKHR = 5319, + BuiltInLaunchIdNV = 5319, + BuiltInLaunchSizeKHR = 5320, + BuiltInLaunchSizeNV = 5320, + BuiltInWorldRayOriginKHR = 5321, + BuiltInWorldRayOriginNV = 5321, + BuiltInWorldRayDirectionKHR = 5322, + BuiltInWorldRayDirectionNV = 5322, + BuiltInObjectRayOriginKHR = 5323, + BuiltInObjectRayOriginNV = 5323, + BuiltInObjectRayDirectionKHR = 5324, + BuiltInObjectRayDirectionNV = 5324, + BuiltInRayTminKHR = 5325, + BuiltInRayTminNV = 5325, + BuiltInRayTmaxKHR = 5326, + BuiltInRayTmaxNV = 5326, + BuiltInInstanceCustomIndexKHR = 5327, + BuiltInInstanceCustomIndexNV = 5327, + BuiltInObjectToWorldKHR = 5330, + BuiltInObjectToWorldNV = 5330, + BuiltInWorldToObjectKHR = 5331, + BuiltInWorldToObjectNV = 5331, + BuiltInHitTNV = 5332, + BuiltInHitKindKHR = 5333, + BuiltInHitKindNV = 5333, + BuiltInCurrentRayTimeNV = 5334, + BuiltInIncomingRayFlagsKHR = 5351, + BuiltInIncomingRayFlagsNV = 5351, + BuiltInRayGeometryIndexKHR = 5352, + BuiltInWarpsPerSMNV = 5374, + BuiltInSMCountNV = 5375, + BuiltInWarpIDNV = 5376, + BuiltInSMIDNV = 5377, + BuiltInCullMaskKHR = 6021, + BuiltInMax = 0x7fffffff, +}; + +enum SelectionControlShift { + SelectionControlFlattenShift = 0, + SelectionControlDontFlattenShift = 1, + SelectionControlMax = 0x7fffffff, +}; + +enum SelectionControlMask { + SelectionControlMaskNone = 0, + SelectionControlFlattenMask = 0x00000001, + SelectionControlDontFlattenMask = 0x00000002, +}; + +enum LoopControlShift { + LoopControlUnrollShift = 0, + LoopControlDontUnrollShift = 1, + LoopControlDependencyInfiniteShift = 2, + LoopControlDependencyLengthShift = 3, + LoopControlMinIterationsShift = 4, + LoopControlMaxIterationsShift = 5, + LoopControlIterationMultipleShift = 6, + LoopControlPeelCountShift = 7, + LoopControlPartialCountShift = 8, + LoopControlInitiationIntervalINTELShift = 16, + LoopControlMaxConcurrencyINTELShift = 17, + LoopControlDependencyArrayINTELShift = 18, + LoopControlPipelineEnableINTELShift = 19, + LoopControlLoopCoalesceINTELShift = 20, + LoopControlMaxInterleavingINTELShift = 21, + LoopControlSpeculatedIterationsINTELShift = 22, + LoopControlNoFusionINTELShift = 23, + LoopControlMax = 0x7fffffff, +}; + +enum LoopControlMask { + LoopControlMaskNone = 0, + LoopControlUnrollMask = 0x00000001, + LoopControlDontUnrollMask = 0x00000002, + LoopControlDependencyInfiniteMask = 0x00000004, + LoopControlDependencyLengthMask = 0x00000008, + LoopControlMinIterationsMask = 0x00000010, + LoopControlMaxIterationsMask = 0x00000020, + LoopControlIterationMultipleMask = 0x00000040, + LoopControlPeelCountMask = 0x00000080, + LoopControlPartialCountMask = 0x00000100, + LoopControlInitiationIntervalINTELMask = 0x00010000, + LoopControlMaxConcurrencyINTELMask = 0x00020000, + LoopControlDependencyArrayINTELMask = 0x00040000, + LoopControlPipelineEnableINTELMask = 0x00080000, + LoopControlLoopCoalesceINTELMask = 0x00100000, + LoopControlMaxInterleavingINTELMask = 0x00200000, + LoopControlSpeculatedIterationsINTELMask = 0x00400000, + LoopControlNoFusionINTELMask = 0x00800000, +}; + +enum FunctionControlShift { + FunctionControlInlineShift = 0, + FunctionControlDontInlineShift = 1, + FunctionControlPureShift = 2, + FunctionControlConstShift = 3, + FunctionControlOptNoneINTELShift = 16, + FunctionControlMax = 0x7fffffff, +}; + +enum FunctionControlMask { + FunctionControlMaskNone = 0, + FunctionControlInlineMask = 0x00000001, + FunctionControlDontInlineMask = 0x00000002, + FunctionControlPureMask = 0x00000004, + FunctionControlConstMask = 0x00000008, + FunctionControlOptNoneINTELMask = 0x00010000, +}; + +enum MemorySemanticsShift { + MemorySemanticsAcquireShift = 1, + MemorySemanticsReleaseShift = 2, + MemorySemanticsAcquireReleaseShift = 3, + MemorySemanticsSequentiallyConsistentShift = 4, + MemorySemanticsUniformMemoryShift = 6, + MemorySemanticsSubgroupMemoryShift = 7, + MemorySemanticsWorkgroupMemoryShift = 8, + MemorySemanticsCrossWorkgroupMemoryShift = 9, + MemorySemanticsAtomicCounterMemoryShift = 10, + MemorySemanticsImageMemoryShift = 11, + MemorySemanticsOutputMemoryShift = 12, + MemorySemanticsOutputMemoryKHRShift = 12, + MemorySemanticsMakeAvailableShift = 13, + MemorySemanticsMakeAvailableKHRShift = 13, + MemorySemanticsMakeVisibleShift = 14, + MemorySemanticsMakeVisibleKHRShift = 14, + MemorySemanticsVolatileShift = 15, + MemorySemanticsMax = 0x7fffffff, +}; + +enum MemorySemanticsMask { + MemorySemanticsMaskNone = 0, + MemorySemanticsAcquireMask = 0x00000002, + MemorySemanticsReleaseMask = 0x00000004, + MemorySemanticsAcquireReleaseMask = 0x00000008, + MemorySemanticsSequentiallyConsistentMask = 0x00000010, + MemorySemanticsUniformMemoryMask = 0x00000040, + MemorySemanticsSubgroupMemoryMask = 0x00000080, + MemorySemanticsWorkgroupMemoryMask = 0x00000100, + MemorySemanticsCrossWorkgroupMemoryMask = 0x00000200, + MemorySemanticsAtomicCounterMemoryMask = 0x00000400, + MemorySemanticsImageMemoryMask = 0x00000800, + MemorySemanticsOutputMemoryMask = 0x00001000, + MemorySemanticsOutputMemoryKHRMask = 0x00001000, + MemorySemanticsMakeAvailableMask = 0x00002000, + MemorySemanticsMakeAvailableKHRMask = 0x00002000, + MemorySemanticsMakeVisibleMask = 0x00004000, + MemorySemanticsMakeVisibleKHRMask = 0x00004000, + MemorySemanticsVolatileMask = 0x00008000, +}; + +enum MemoryAccessShift { + MemoryAccessVolatileShift = 0, + MemoryAccessAlignedShift = 1, + MemoryAccessNontemporalShift = 2, + MemoryAccessMakePointerAvailableShift = 3, + MemoryAccessMakePointerAvailableKHRShift = 3, + MemoryAccessMakePointerVisibleShift = 4, + MemoryAccessMakePointerVisibleKHRShift = 4, + MemoryAccessNonPrivatePointerShift = 5, + MemoryAccessNonPrivatePointerKHRShift = 5, + MemoryAccessMax = 0x7fffffff, +}; + +enum MemoryAccessMask { + MemoryAccessMaskNone = 0, + MemoryAccessVolatileMask = 0x00000001, + MemoryAccessAlignedMask = 0x00000002, + MemoryAccessNontemporalMask = 0x00000004, + MemoryAccessMakePointerAvailableMask = 0x00000008, + MemoryAccessMakePointerAvailableKHRMask = 0x00000008, + MemoryAccessMakePointerVisibleMask = 0x00000010, + MemoryAccessMakePointerVisibleKHRMask = 0x00000010, + MemoryAccessNonPrivatePointerMask = 0x00000020, + MemoryAccessNonPrivatePointerKHRMask = 0x00000020, +}; + +enum Scope { + ScopeCrossDevice = 0, + ScopeDevice = 1, + ScopeWorkgroup = 2, + ScopeSubgroup = 3, + ScopeInvocation = 4, + ScopeQueueFamily = 5, + ScopeQueueFamilyKHR = 5, + ScopeShaderCallKHR = 6, + ScopeMax = 0x7fffffff, +}; + +enum GroupOperation { + GroupOperationReduce = 0, + GroupOperationInclusiveScan = 1, + GroupOperationExclusiveScan = 2, + GroupOperationClusteredReduce = 3, + GroupOperationPartitionedReduceNV = 6, + GroupOperationPartitionedInclusiveScanNV = 7, + GroupOperationPartitionedExclusiveScanNV = 8, + GroupOperationMax = 0x7fffffff, +}; + +enum KernelEnqueueFlags { + KernelEnqueueFlagsNoWait = 0, + KernelEnqueueFlagsWaitKernel = 1, + KernelEnqueueFlagsWaitWorkGroup = 2, + KernelEnqueueFlagsMax = 0x7fffffff, +}; + +enum KernelProfilingInfoShift { + KernelProfilingInfoCmdExecTimeShift = 0, + KernelProfilingInfoMax = 0x7fffffff, +}; + +enum KernelProfilingInfoMask { + KernelProfilingInfoMaskNone = 0, + KernelProfilingInfoCmdExecTimeMask = 0x00000001, +}; + +enum Capability { + CapabilityMatrix = 0, + CapabilityShader = 1, + CapabilityGeometry = 2, + CapabilityTessellation = 3, + CapabilityAddresses = 4, + CapabilityLinkage = 5, + CapabilityKernel = 6, + CapabilityVector16 = 7, + CapabilityFloat16Buffer = 8, + CapabilityFloat16 = 9, + CapabilityFloat64 = 10, + CapabilityInt64 = 11, + CapabilityInt64Atomics = 12, + CapabilityImageBasic = 13, + CapabilityImageReadWrite = 14, + CapabilityImageMipmap = 15, + CapabilityPipes = 17, + CapabilityGroups = 18, + CapabilityDeviceEnqueue = 19, + CapabilityLiteralSampler = 20, + CapabilityAtomicStorage = 21, + CapabilityInt16 = 22, + CapabilityTessellationPointSize = 23, + CapabilityGeometryPointSize = 24, + CapabilityImageGatherExtended = 25, + CapabilityStorageImageMultisample = 27, + CapabilityUniformBufferArrayDynamicIndexing = 28, + CapabilitySampledImageArrayDynamicIndexing = 29, + CapabilityStorageBufferArrayDynamicIndexing = 30, + CapabilityStorageImageArrayDynamicIndexing = 31, + CapabilityClipDistance = 32, + CapabilityCullDistance = 33, + CapabilityImageCubeArray = 34, + CapabilitySampleRateShading = 35, + CapabilityImageRect = 36, + CapabilitySampledRect = 37, + CapabilityGenericPointer = 38, + CapabilityInt8 = 39, + CapabilityInputAttachment = 40, + CapabilitySparseResidency = 41, + CapabilityMinLod = 42, + CapabilitySampled1D = 43, + CapabilityImage1D = 44, + CapabilitySampledCubeArray = 45, + CapabilitySampledBuffer = 46, + CapabilityImageBuffer = 47, + CapabilityImageMSArray = 48, + CapabilityStorageImageExtendedFormats = 49, + CapabilityImageQuery = 50, + CapabilityDerivativeControl = 51, + CapabilityInterpolationFunction = 52, + CapabilityTransformFeedback = 53, + CapabilityGeometryStreams = 54, + CapabilityStorageImageReadWithoutFormat = 55, + CapabilityStorageImageWriteWithoutFormat = 56, + CapabilityMultiViewport = 57, + CapabilitySubgroupDispatch = 58, + CapabilityNamedBarrier = 59, + CapabilityPipeStorage = 60, + CapabilityGroupNonUniform = 61, + CapabilityGroupNonUniformVote = 62, + CapabilityGroupNonUniformArithmetic = 63, + CapabilityGroupNonUniformBallot = 64, + CapabilityGroupNonUniformShuffle = 65, + CapabilityGroupNonUniformShuffleRelative = 66, + CapabilityGroupNonUniformClustered = 67, + CapabilityGroupNonUniformQuad = 68, + CapabilityShaderLayer = 69, + CapabilityShaderViewportIndex = 70, + CapabilityUniformDecoration = 71, + CapabilityFragmentShadingRateKHR = 4422, + CapabilitySubgroupBallotKHR = 4423, + CapabilityDrawParameters = 4427, + CapabilityWorkgroupMemoryExplicitLayoutKHR = 4428, + CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR = 4429, + CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR = 4430, + CapabilitySubgroupVoteKHR = 4431, + CapabilityStorageBuffer16BitAccess = 4433, + CapabilityStorageUniformBufferBlock16 = 4433, + CapabilityStorageUniform16 = 4434, + CapabilityUniformAndStorageBuffer16BitAccess = 4434, + CapabilityStoragePushConstant16 = 4435, + CapabilityStorageInputOutput16 = 4436, + CapabilityDeviceGroup = 4437, + CapabilityMultiView = 4439, + CapabilityVariablePointersStorageBuffer = 4441, + CapabilityVariablePointers = 4442, + CapabilityAtomicStorageOps = 4445, + CapabilitySampleMaskPostDepthCoverage = 4447, + CapabilityStorageBuffer8BitAccess = 4448, + CapabilityUniformAndStorageBuffer8BitAccess = 4449, + CapabilityStoragePushConstant8 = 4450, + CapabilityDenormPreserve = 4464, + CapabilityDenormFlushToZero = 4465, + CapabilitySignedZeroInfNanPreserve = 4466, + CapabilityRoundingModeRTE = 4467, + CapabilityRoundingModeRTZ = 4468, + CapabilityRayQueryProvisionalKHR = 4471, + CapabilityRayQueryKHR = 4472, + CapabilityRayTraversalPrimitiveCullingKHR = 4478, + CapabilityRayTracingKHR = 4479, + CapabilityFloat16ImageAMD = 5008, + CapabilityImageGatherBiasLodAMD = 5009, + CapabilityFragmentMaskAMD = 5010, + CapabilityStencilExportEXT = 5013, + CapabilityImageReadWriteLodAMD = 5015, + CapabilityInt64ImageEXT = 5016, + CapabilityShaderClockKHR = 5055, + CapabilitySampleMaskOverrideCoverageNV = 5249, + CapabilityGeometryShaderPassthroughNV = 5251, + CapabilityShaderViewportIndexLayerEXT = 5254, + CapabilityShaderViewportIndexLayerNV = 5254, + CapabilityShaderViewportMaskNV = 5255, + CapabilityShaderStereoViewNV = 5259, + CapabilityPerViewAttributesNV = 5260, + CapabilityFragmentFullyCoveredEXT = 5265, + CapabilityMeshShadingNV = 5266, + CapabilityImageFootprintNV = 5282, + CapabilityMeshShadingEXT = 5283, + CapabilityFragmentBarycentricKHR = 5284, + CapabilityFragmentBarycentricNV = 5284, + CapabilityComputeDerivativeGroupQuadsNV = 5288, + CapabilityFragmentDensityEXT = 5291, + CapabilityShadingRateNV = 5291, + CapabilityGroupNonUniformPartitionedNV = 5297, + CapabilityShaderNonUniform = 5301, + CapabilityShaderNonUniformEXT = 5301, + CapabilityRuntimeDescriptorArray = 5302, + CapabilityRuntimeDescriptorArrayEXT = 5302, + CapabilityInputAttachmentArrayDynamicIndexing = 5303, + CapabilityInputAttachmentArrayDynamicIndexingEXT = 5303, + CapabilityUniformTexelBufferArrayDynamicIndexing = 5304, + CapabilityUniformTexelBufferArrayDynamicIndexingEXT = 5304, + CapabilityStorageTexelBufferArrayDynamicIndexing = 5305, + CapabilityStorageTexelBufferArrayDynamicIndexingEXT = 5305, + CapabilityUniformBufferArrayNonUniformIndexing = 5306, + CapabilityUniformBufferArrayNonUniformIndexingEXT = 5306, + CapabilitySampledImageArrayNonUniformIndexing = 5307, + CapabilitySampledImageArrayNonUniformIndexingEXT = 5307, + CapabilityStorageBufferArrayNonUniformIndexing = 5308, + CapabilityStorageBufferArrayNonUniformIndexingEXT = 5308, + CapabilityStorageImageArrayNonUniformIndexing = 5309, + CapabilityStorageImageArrayNonUniformIndexingEXT = 5309, + CapabilityInputAttachmentArrayNonUniformIndexing = 5310, + CapabilityInputAttachmentArrayNonUniformIndexingEXT = 5310, + CapabilityUniformTexelBufferArrayNonUniformIndexing = 5311, + CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, + CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, + CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, + CapabilityRayTracingNV = 5340, + CapabilityRayTracingMotionBlurNV = 5341, + CapabilityVulkanMemoryModel = 5345, + CapabilityVulkanMemoryModelKHR = 5345, + CapabilityVulkanMemoryModelDeviceScope = 5346, + CapabilityVulkanMemoryModelDeviceScopeKHR = 5346, + CapabilityPhysicalStorageBufferAddresses = 5347, + CapabilityPhysicalStorageBufferAddressesEXT = 5347, + CapabilityComputeDerivativeGroupLinearNV = 5350, + CapabilityRayTracingProvisionalKHR = 5353, + CapabilityCooperativeMatrixNV = 5357, + CapabilityFragmentShaderSampleInterlockEXT = 5363, + CapabilityFragmentShaderShadingRateInterlockEXT = 5372, + CapabilityShaderSMBuiltinsNV = 5373, + CapabilityFragmentShaderPixelInterlockEXT = 5378, + CapabilityDemoteToHelperInvocation = 5379, + CapabilityDemoteToHelperInvocationEXT = 5379, + CapabilityBindlessTextureNV = 5390, + CapabilitySubgroupShuffleINTEL = 5568, + CapabilitySubgroupBufferBlockIOINTEL = 5569, + CapabilitySubgroupImageBlockIOINTEL = 5570, + CapabilitySubgroupImageMediaBlockIOINTEL = 5579, + CapabilityRoundToInfinityINTEL = 5582, + CapabilityFloatingPointModeINTEL = 5583, + CapabilityIntegerFunctions2INTEL = 5584, + CapabilityFunctionPointersINTEL = 5603, + CapabilityIndirectReferencesINTEL = 5604, + CapabilityAsmINTEL = 5606, + CapabilityAtomicFloat32MinMaxEXT = 5612, + CapabilityAtomicFloat64MinMaxEXT = 5613, + CapabilityAtomicFloat16MinMaxEXT = 5616, + CapabilityVectorComputeINTEL = 5617, + CapabilityVectorAnyINTEL = 5619, + CapabilityExpectAssumeKHR = 5629, + CapabilitySubgroupAvcMotionEstimationINTEL = 5696, + CapabilitySubgroupAvcMotionEstimationIntraINTEL = 5697, + CapabilitySubgroupAvcMotionEstimationChromaINTEL = 5698, + CapabilityVariableLengthArrayINTEL = 5817, + CapabilityFunctionFloatControlINTEL = 5821, + CapabilityFPGAMemoryAttributesINTEL = 5824, + CapabilityFPFastMathModeINTEL = 5837, + CapabilityArbitraryPrecisionIntegersINTEL = 5844, + CapabilityArbitraryPrecisionFloatingPointINTEL = 5845, + CapabilityUnstructuredLoopControlsINTEL = 5886, + CapabilityFPGALoopControlsINTEL = 5888, + CapabilityKernelAttributesINTEL = 5892, + CapabilityFPGAKernelAttributesINTEL = 5897, + CapabilityFPGAMemoryAccessesINTEL = 5898, + CapabilityFPGAClusterAttributesINTEL = 5904, + CapabilityLoopFuseINTEL = 5906, + CapabilityFPGABufferLocationINTEL = 5920, + CapabilityArbitraryPrecisionFixedPointINTEL = 5922, + CapabilityUSMStorageClassesINTEL = 5935, + CapabilityIOPipesINTEL = 5943, + CapabilityBlockingPipesINTEL = 5945, + CapabilityFPGARegINTEL = 5948, + CapabilityDotProductInputAll = 6016, + CapabilityDotProductInputAllKHR = 6016, + CapabilityDotProductInput4x8Bit = 6017, + CapabilityDotProductInput4x8BitKHR = 6017, + CapabilityDotProductInput4x8BitPacked = 6018, + CapabilityDotProductInput4x8BitPackedKHR = 6018, + CapabilityDotProduct = 6019, + CapabilityDotProductKHR = 6019, + CapabilityRayCullMaskKHR = 6020, + CapabilityBitInstructions = 6025, + CapabilityAtomicFloat32AddEXT = 6033, + CapabilityAtomicFloat64AddEXT = 6034, + CapabilityLongConstantCompositeINTEL = 6089, + CapabilityOptNoneINTEL = 6094, + CapabilityAtomicFloat16AddEXT = 6095, + CapabilityDebugInfoModuleINTEL = 6114, + CapabilityMax = 0x7fffffff, +}; + +enum RayFlagsShift { + RayFlagsOpaqueKHRShift = 0, + RayFlagsNoOpaqueKHRShift = 1, + RayFlagsTerminateOnFirstHitKHRShift = 2, + RayFlagsSkipClosestHitShaderKHRShift = 3, + RayFlagsCullBackFacingTrianglesKHRShift = 4, + RayFlagsCullFrontFacingTrianglesKHRShift = 5, + RayFlagsCullOpaqueKHRShift = 6, + RayFlagsCullNoOpaqueKHRShift = 7, + RayFlagsSkipTrianglesKHRShift = 8, + RayFlagsSkipAABBsKHRShift = 9, + RayFlagsMax = 0x7fffffff, +}; + +enum RayFlagsMask { + RayFlagsMaskNone = 0, + RayFlagsOpaqueKHRMask = 0x00000001, + RayFlagsNoOpaqueKHRMask = 0x00000002, + RayFlagsTerminateOnFirstHitKHRMask = 0x00000004, + RayFlagsSkipClosestHitShaderKHRMask = 0x00000008, + RayFlagsCullBackFacingTrianglesKHRMask = 0x00000010, + RayFlagsCullFrontFacingTrianglesKHRMask = 0x00000020, + RayFlagsCullOpaqueKHRMask = 0x00000040, + RayFlagsCullNoOpaqueKHRMask = 0x00000080, + RayFlagsSkipTrianglesKHRMask = 0x00000100, + RayFlagsSkipAABBsKHRMask = 0x00000200, +}; + +enum RayQueryIntersection { + RayQueryIntersectionRayQueryCandidateIntersectionKHR = 0, + RayQueryIntersectionRayQueryCommittedIntersectionKHR = 1, + RayQueryIntersectionMax = 0x7fffffff, +}; + +enum RayQueryCommittedIntersectionType { + RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionNoneKHR = 0, + RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionTriangleKHR = 1, + RayQueryCommittedIntersectionTypeRayQueryCommittedIntersectionGeneratedKHR = 2, + RayQueryCommittedIntersectionTypeMax = 0x7fffffff, +}; + +enum RayQueryCandidateIntersectionType { + RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionTriangleKHR = 0, + RayQueryCandidateIntersectionTypeRayQueryCandidateIntersectionAABBKHR = 1, + RayQueryCandidateIntersectionTypeMax = 0x7fffffff, +}; + +enum FragmentShadingRateShift { + FragmentShadingRateVertical2PixelsShift = 0, + FragmentShadingRateVertical4PixelsShift = 1, + FragmentShadingRateHorizontal2PixelsShift = 2, + FragmentShadingRateHorizontal4PixelsShift = 3, + FragmentShadingRateMax = 0x7fffffff, +}; + +enum FragmentShadingRateMask { + FragmentShadingRateMaskNone = 0, + FragmentShadingRateVertical2PixelsMask = 0x00000001, + FragmentShadingRateVertical4PixelsMask = 0x00000002, + FragmentShadingRateHorizontal2PixelsMask = 0x00000004, + FragmentShadingRateHorizontal4PixelsMask = 0x00000008, +}; + +enum FPDenormMode { + FPDenormModePreserve = 0, + FPDenormModeFlushToZero = 1, + FPDenormModeMax = 0x7fffffff, +}; + +enum FPOperationMode { + FPOperationModeIEEE = 0, + FPOperationModeALT = 1, + FPOperationModeMax = 0x7fffffff, +}; + +enum QuantizationModes { + QuantizationModesTRN = 0, + QuantizationModesTRN_ZERO = 1, + QuantizationModesRND = 2, + QuantizationModesRND_ZERO = 3, + QuantizationModesRND_INF = 4, + QuantizationModesRND_MIN_INF = 5, + QuantizationModesRND_CONV = 6, + QuantizationModesRND_CONV_ODD = 7, + QuantizationModesMax = 0x7fffffff, +}; + +enum OverflowModes { + OverflowModesWRAP = 0, + OverflowModesSAT = 1, + OverflowModesSAT_ZERO = 2, + OverflowModesSAT_SYM = 3, + OverflowModesMax = 0x7fffffff, +}; + +enum PackedVectorFormat { + PackedVectorFormatPackedVectorFormat4x8Bit = 0, + PackedVectorFormatPackedVectorFormat4x8BitKHR = 0, + PackedVectorFormatMax = 0x7fffffff, +}; + +enum Op { + OpNop = 0, + OpUndef = 1, + OpSourceContinued = 2, + OpSource = 3, + OpSourceExtension = 4, + OpName = 5, + OpMemberName = 6, + OpString = 7, + OpLine = 8, + OpExtension = 10, + OpExtInstImport = 11, + OpExtInst = 12, + OpMemoryModel = 14, + OpEntryPoint = 15, + OpExecutionMode = 16, + OpCapability = 17, + OpTypeVoid = 19, + OpTypeBool = 20, + OpTypeInt = 21, + OpTypeFloat = 22, + OpTypeVector = 23, + OpTypeMatrix = 24, + OpTypeImage = 25, + OpTypeSampler = 26, + OpTypeSampledImage = 27, + OpTypeArray = 28, + OpTypeRuntimeArray = 29, + OpTypeStruct = 30, + OpTypeOpaque = 31, + OpTypePointer = 32, + OpTypeFunction = 33, + OpTypeEvent = 34, + OpTypeDeviceEvent = 35, + OpTypeReserveId = 36, + OpTypeQueue = 37, + OpTypePipe = 38, + OpTypeForwardPointer = 39, + OpConstantTrue = 41, + OpConstantFalse = 42, + OpConstant = 43, + OpConstantComposite = 44, + OpConstantSampler = 45, + OpConstantNull = 46, + OpSpecConstantTrue = 48, + OpSpecConstantFalse = 49, + OpSpecConstant = 50, + OpSpecConstantComposite = 51, + OpSpecConstantOp = 52, + OpFunction = 54, + OpFunctionParameter = 55, + OpFunctionEnd = 56, + OpFunctionCall = 57, + OpVariable = 59, + OpImageTexelPointer = 60, + OpLoad = 61, + OpStore = 62, + OpCopyMemory = 63, + OpCopyMemorySized = 64, + OpAccessChain = 65, + OpInBoundsAccessChain = 66, + OpPtrAccessChain = 67, + OpArrayLength = 68, + OpGenericPtrMemSemantics = 69, + OpInBoundsPtrAccessChain = 70, + OpDecorate = 71, + OpMemberDecorate = 72, + OpDecorationGroup = 73, + OpGroupDecorate = 74, + OpGroupMemberDecorate = 75, + OpVectorExtractDynamic = 77, + OpVectorInsertDynamic = 78, + OpVectorShuffle = 79, + OpCompositeConstruct = 80, + OpCompositeExtract = 81, + OpCompositeInsert = 82, + OpCopyObject = 83, + OpTranspose = 84, + OpSampledImage = 86, + OpImageSampleImplicitLod = 87, + OpImageSampleExplicitLod = 88, + OpImageSampleDrefImplicitLod = 89, + OpImageSampleDrefExplicitLod = 90, + OpImageSampleProjImplicitLod = 91, + OpImageSampleProjExplicitLod = 92, + OpImageSampleProjDrefImplicitLod = 93, + OpImageSampleProjDrefExplicitLod = 94, + OpImageFetch = 95, + OpImageGather = 96, + OpImageDrefGather = 97, + OpImageRead = 98, + OpImageWrite = 99, + OpImage = 100, + OpImageQueryFormat = 101, + OpImageQueryOrder = 102, + OpImageQuerySizeLod = 103, + OpImageQuerySize = 104, + OpImageQueryLod = 105, + OpImageQueryLevels = 106, + OpImageQuerySamples = 107, + OpConvertFToU = 109, + OpConvertFToS = 110, + OpConvertSToF = 111, + OpConvertUToF = 112, + OpUConvert = 113, + OpSConvert = 114, + OpFConvert = 115, + OpQuantizeToF16 = 116, + OpConvertPtrToU = 117, + OpSatConvertSToU = 118, + OpSatConvertUToS = 119, + OpConvertUToPtr = 120, + OpPtrCastToGeneric = 121, + OpGenericCastToPtr = 122, + OpGenericCastToPtrExplicit = 123, + OpBitcast = 124, + OpSNegate = 126, + OpFNegate = 127, + OpIAdd = 128, + OpFAdd = 129, + OpISub = 130, + OpFSub = 131, + OpIMul = 132, + OpFMul = 133, + OpUDiv = 134, + OpSDiv = 135, + OpFDiv = 136, + OpUMod = 137, + OpSRem = 138, + OpSMod = 139, + OpFRem = 140, + OpFMod = 141, + OpVectorTimesScalar = 142, + OpMatrixTimesScalar = 143, + OpVectorTimesMatrix = 144, + OpMatrixTimesVector = 145, + OpMatrixTimesMatrix = 146, + OpOuterProduct = 147, + OpDot = 148, + OpIAddCarry = 149, + OpISubBorrow = 150, + OpUMulExtended = 151, + OpSMulExtended = 152, + OpAny = 154, + OpAll = 155, + OpIsNan = 156, + OpIsInf = 157, + OpIsFinite = 158, + OpIsNormal = 159, + OpSignBitSet = 160, + OpLessOrGreater = 161, + OpOrdered = 162, + OpUnordered = 163, + OpLogicalEqual = 164, + OpLogicalNotEqual = 165, + OpLogicalOr = 166, + OpLogicalAnd = 167, + OpLogicalNot = 168, + OpSelect = 169, + OpIEqual = 170, + OpINotEqual = 171, + OpUGreaterThan = 172, + OpSGreaterThan = 173, + OpUGreaterThanEqual = 174, + OpSGreaterThanEqual = 175, + OpULessThan = 176, + OpSLessThan = 177, + OpULessThanEqual = 178, + OpSLessThanEqual = 179, + OpFOrdEqual = 180, + OpFUnordEqual = 181, + OpFOrdNotEqual = 182, + OpFUnordNotEqual = 183, + OpFOrdLessThan = 184, + OpFUnordLessThan = 185, + OpFOrdGreaterThan = 186, + OpFUnordGreaterThan = 187, + OpFOrdLessThanEqual = 188, + OpFUnordLessThanEqual = 189, + OpFOrdGreaterThanEqual = 190, + OpFUnordGreaterThanEqual = 191, + OpShiftRightLogical = 194, + OpShiftRightArithmetic = 195, + OpShiftLeftLogical = 196, + OpBitwiseOr = 197, + OpBitwiseXor = 198, + OpBitwiseAnd = 199, + OpNot = 200, + OpBitFieldInsert = 201, + OpBitFieldSExtract = 202, + OpBitFieldUExtract = 203, + OpBitReverse = 204, + OpBitCount = 205, + OpDPdx = 207, + OpDPdy = 208, + OpFwidth = 209, + OpDPdxFine = 210, + OpDPdyFine = 211, + OpFwidthFine = 212, + OpDPdxCoarse = 213, + OpDPdyCoarse = 214, + OpFwidthCoarse = 215, + OpEmitVertex = 218, + OpEndPrimitive = 219, + OpEmitStreamVertex = 220, + OpEndStreamPrimitive = 221, + OpControlBarrier = 224, + OpMemoryBarrier = 225, + OpAtomicLoad = 227, + OpAtomicStore = 228, + OpAtomicExchange = 229, + OpAtomicCompareExchange = 230, + OpAtomicCompareExchangeWeak = 231, + OpAtomicIIncrement = 232, + OpAtomicIDecrement = 233, + OpAtomicIAdd = 234, + OpAtomicISub = 235, + OpAtomicSMin = 236, + OpAtomicUMin = 237, + OpAtomicSMax = 238, + OpAtomicUMax = 239, + OpAtomicAnd = 240, + OpAtomicOr = 241, + OpAtomicXor = 242, + OpPhi = 245, + OpLoopMerge = 246, + OpSelectionMerge = 247, + OpLabel = 248, + OpBranch = 249, + OpBranchConditional = 250, + OpSwitch = 251, + OpKill = 252, + OpReturn = 253, + OpReturnValue = 254, + OpUnreachable = 255, + OpLifetimeStart = 256, + OpLifetimeStop = 257, + OpGroupAsyncCopy = 259, + OpGroupWaitEvents = 260, + OpGroupAll = 261, + OpGroupAny = 262, + OpGroupBroadcast = 263, + OpGroupIAdd = 264, + OpGroupFAdd = 265, + OpGroupFMin = 266, + OpGroupUMin = 267, + OpGroupSMin = 268, + OpGroupFMax = 269, + OpGroupUMax = 270, + OpGroupSMax = 271, + OpReadPipe = 274, + OpWritePipe = 275, + OpReservedReadPipe = 276, + OpReservedWritePipe = 277, + OpReserveReadPipePackets = 278, + OpReserveWritePipePackets = 279, + OpCommitReadPipe = 280, + OpCommitWritePipe = 281, + OpIsValidReserveId = 282, + OpGetNumPipePackets = 283, + OpGetMaxPipePackets = 284, + OpGroupReserveReadPipePackets = 285, + OpGroupReserveWritePipePackets = 286, + OpGroupCommitReadPipe = 287, + OpGroupCommitWritePipe = 288, + OpEnqueueMarker = 291, + OpEnqueueKernel = 292, + OpGetKernelNDrangeSubGroupCount = 293, + OpGetKernelNDrangeMaxSubGroupSize = 294, + OpGetKernelWorkGroupSize = 295, + OpGetKernelPreferredWorkGroupSizeMultiple = 296, + OpRetainEvent = 297, + OpReleaseEvent = 298, + OpCreateUserEvent = 299, + OpIsValidEvent = 300, + OpSetUserEventStatus = 301, + OpCaptureEventProfilingInfo = 302, + OpGetDefaultQueue = 303, + OpBuildNDRange = 304, + OpImageSparseSampleImplicitLod = 305, + OpImageSparseSampleExplicitLod = 306, + OpImageSparseSampleDrefImplicitLod = 307, + OpImageSparseSampleDrefExplicitLod = 308, + OpImageSparseSampleProjImplicitLod = 309, + OpImageSparseSampleProjExplicitLod = 310, + OpImageSparseSampleProjDrefImplicitLod = 311, + OpImageSparseSampleProjDrefExplicitLod = 312, + OpImageSparseFetch = 313, + OpImageSparseGather = 314, + OpImageSparseDrefGather = 315, + OpImageSparseTexelsResident = 316, + OpNoLine = 317, + OpAtomicFlagTestAndSet = 318, + OpAtomicFlagClear = 319, + OpImageSparseRead = 320, + OpSizeOf = 321, + OpTypePipeStorage = 322, + OpConstantPipeStorage = 323, + OpCreatePipeFromPipeStorage = 324, + OpGetKernelLocalSizeForSubgroupCount = 325, + OpGetKernelMaxNumSubgroups = 326, + OpTypeNamedBarrier = 327, + OpNamedBarrierInitialize = 328, + OpMemoryNamedBarrier = 329, + OpModuleProcessed = 330, + OpExecutionModeId = 331, + OpDecorateId = 332, + OpGroupNonUniformElect = 333, + OpGroupNonUniformAll = 334, + OpGroupNonUniformAny = 335, + OpGroupNonUniformAllEqual = 336, + OpGroupNonUniformBroadcast = 337, + OpGroupNonUniformBroadcastFirst = 338, + OpGroupNonUniformBallot = 339, + OpGroupNonUniformInverseBallot = 340, + OpGroupNonUniformBallotBitExtract = 341, + OpGroupNonUniformBallotBitCount = 342, + OpGroupNonUniformBallotFindLSB = 343, + OpGroupNonUniformBallotFindMSB = 344, + OpGroupNonUniformShuffle = 345, + OpGroupNonUniformShuffleXor = 346, + OpGroupNonUniformShuffleUp = 347, + OpGroupNonUniformShuffleDown = 348, + OpGroupNonUniformIAdd = 349, + OpGroupNonUniformFAdd = 350, + OpGroupNonUniformIMul = 351, + OpGroupNonUniformFMul = 352, + OpGroupNonUniformSMin = 353, + OpGroupNonUniformUMin = 354, + OpGroupNonUniformFMin = 355, + OpGroupNonUniformSMax = 356, + OpGroupNonUniformUMax = 357, + OpGroupNonUniformFMax = 358, + OpGroupNonUniformBitwiseAnd = 359, + OpGroupNonUniformBitwiseOr = 360, + OpGroupNonUniformBitwiseXor = 361, + OpGroupNonUniformLogicalAnd = 362, + OpGroupNonUniformLogicalOr = 363, + OpGroupNonUniformLogicalXor = 364, + OpGroupNonUniformQuadBroadcast = 365, + OpGroupNonUniformQuadSwap = 366, + OpCopyLogical = 400, + OpPtrEqual = 401, + OpPtrNotEqual = 402, + OpPtrDiff = 403, + OpTerminateInvocation = 4416, + OpSubgroupBallotKHR = 4421, + OpSubgroupFirstInvocationKHR = 4422, + OpSubgroupAllKHR = 4428, + OpSubgroupAnyKHR = 4429, + OpSubgroupAllEqualKHR = 4430, + OpSubgroupReadInvocationKHR = 4432, + OpTraceRayKHR = 4445, + OpExecuteCallableKHR = 4446, + OpConvertUToAccelerationStructureKHR = 4447, + OpIgnoreIntersectionKHR = 4448, + OpTerminateRayKHR = 4449, + OpSDot = 4450, + OpSDotKHR = 4450, + OpUDot = 4451, + OpUDotKHR = 4451, + OpSUDot = 4452, + OpSUDotKHR = 4452, + OpSDotAccSat = 4453, + OpSDotAccSatKHR = 4453, + OpUDotAccSat = 4454, + OpUDotAccSatKHR = 4454, + OpSUDotAccSat = 4455, + OpSUDotAccSatKHR = 4455, + OpTypeRayQueryKHR = 4472, + OpRayQueryInitializeKHR = 4473, + OpRayQueryTerminateKHR = 4474, + OpRayQueryGenerateIntersectionKHR = 4475, + OpRayQueryConfirmIntersectionKHR = 4476, + OpRayQueryProceedKHR = 4477, + OpRayQueryGetIntersectionTypeKHR = 4479, + OpGroupIAddNonUniformAMD = 5000, + OpGroupFAddNonUniformAMD = 5001, + OpGroupFMinNonUniformAMD = 5002, + OpGroupUMinNonUniformAMD = 5003, + OpGroupSMinNonUniformAMD = 5004, + OpGroupFMaxNonUniformAMD = 5005, + OpGroupUMaxNonUniformAMD = 5006, + OpGroupSMaxNonUniformAMD = 5007, + OpFragmentMaskFetchAMD = 5011, + OpFragmentFetchAMD = 5012, + OpReadClockKHR = 5056, + OpImageSampleFootprintNV = 5283, + OpEmitMeshTasksEXT = 5294, + OpSetMeshOutputsEXT = 5295, + OpGroupNonUniformPartitionNV = 5296, + OpWritePackedPrimitiveIndices4x8NV = 5299, + OpReportIntersectionKHR = 5334, + OpReportIntersectionNV = 5334, + OpIgnoreIntersectionNV = 5335, + OpTerminateRayNV = 5336, + OpTraceNV = 5337, + OpTraceMotionNV = 5338, + OpTraceRayMotionNV = 5339, + OpTypeAccelerationStructureKHR = 5341, + OpTypeAccelerationStructureNV = 5341, + OpExecuteCallableNV = 5344, + OpTypeCooperativeMatrixNV = 5358, + OpCooperativeMatrixLoadNV = 5359, + OpCooperativeMatrixStoreNV = 5360, + OpCooperativeMatrixMulAddNV = 5361, + OpCooperativeMatrixLengthNV = 5362, + OpBeginInvocationInterlockEXT = 5364, + OpEndInvocationInterlockEXT = 5365, + OpDemoteToHelperInvocation = 5380, + OpDemoteToHelperInvocationEXT = 5380, + OpIsHelperInvocationEXT = 5381, + OpConvertUToImageNV = 5391, + OpConvertUToSamplerNV = 5392, + OpConvertImageToUNV = 5393, + OpConvertSamplerToUNV = 5394, + OpConvertUToSampledImageNV = 5395, + OpConvertSampledImageToUNV = 5396, + OpSamplerImageAddressingModeNV = 5397, + OpSubgroupShuffleINTEL = 5571, + OpSubgroupShuffleDownINTEL = 5572, + OpSubgroupShuffleUpINTEL = 5573, + OpSubgroupShuffleXorINTEL = 5574, + OpSubgroupBlockReadINTEL = 5575, + OpSubgroupBlockWriteINTEL = 5576, + OpSubgroupImageBlockReadINTEL = 5577, + OpSubgroupImageBlockWriteINTEL = 5578, + OpSubgroupImageMediaBlockReadINTEL = 5580, + OpSubgroupImageMediaBlockWriteINTEL = 5581, + OpUCountLeadingZerosINTEL = 5585, + OpUCountTrailingZerosINTEL = 5586, + OpAbsISubINTEL = 5587, + OpAbsUSubINTEL = 5588, + OpIAddSatINTEL = 5589, + OpUAddSatINTEL = 5590, + OpIAverageINTEL = 5591, + OpUAverageINTEL = 5592, + OpIAverageRoundedINTEL = 5593, + OpUAverageRoundedINTEL = 5594, + OpISubSatINTEL = 5595, + OpUSubSatINTEL = 5596, + OpIMul32x16INTEL = 5597, + OpUMul32x16INTEL = 5598, + OpConstantFunctionPointerINTEL = 5600, + OpFunctionPointerCallINTEL = 5601, + OpAsmTargetINTEL = 5609, + OpAsmINTEL = 5610, + OpAsmCallINTEL = 5611, + OpAtomicFMinEXT = 5614, + OpAtomicFMaxEXT = 5615, + OpAssumeTrueKHR = 5630, + OpExpectKHR = 5631, + OpDecorateString = 5632, + OpDecorateStringGOOGLE = 5632, + OpMemberDecorateString = 5633, + OpMemberDecorateStringGOOGLE = 5633, + OpVmeImageINTEL = 5699, + OpTypeVmeImageINTEL = 5700, + OpTypeAvcImePayloadINTEL = 5701, + OpTypeAvcRefPayloadINTEL = 5702, + OpTypeAvcSicPayloadINTEL = 5703, + OpTypeAvcMcePayloadINTEL = 5704, + OpTypeAvcMceResultINTEL = 5705, + OpTypeAvcImeResultINTEL = 5706, + OpTypeAvcImeResultSingleReferenceStreamoutINTEL = 5707, + OpTypeAvcImeResultDualReferenceStreamoutINTEL = 5708, + OpTypeAvcImeSingleReferenceStreaminINTEL = 5709, + OpTypeAvcImeDualReferenceStreaminINTEL = 5710, + OpTypeAvcRefResultINTEL = 5711, + OpTypeAvcSicResultINTEL = 5712, + OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL = 5713, + OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL = 5714, + OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL = 5715, + OpSubgroupAvcMceSetInterShapePenaltyINTEL = 5716, + OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL = 5717, + OpSubgroupAvcMceSetInterDirectionPenaltyINTEL = 5718, + OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL = 5719, + OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL = 5720, + OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL = 5721, + OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL = 5722, + OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL = 5723, + OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL = 5724, + OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL = 5725, + OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL = 5726, + OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL = 5727, + OpSubgroupAvcMceSetAcOnlyHaarINTEL = 5728, + OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL = 5729, + OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL = 5730, + OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL = 5731, + OpSubgroupAvcMceConvertToImePayloadINTEL = 5732, + OpSubgroupAvcMceConvertToImeResultINTEL = 5733, + OpSubgroupAvcMceConvertToRefPayloadINTEL = 5734, + OpSubgroupAvcMceConvertToRefResultINTEL = 5735, + OpSubgroupAvcMceConvertToSicPayloadINTEL = 5736, + OpSubgroupAvcMceConvertToSicResultINTEL = 5737, + OpSubgroupAvcMceGetMotionVectorsINTEL = 5738, + OpSubgroupAvcMceGetInterDistortionsINTEL = 5739, + OpSubgroupAvcMceGetBestInterDistortionsINTEL = 5740, + OpSubgroupAvcMceGetInterMajorShapeINTEL = 5741, + OpSubgroupAvcMceGetInterMinorShapeINTEL = 5742, + OpSubgroupAvcMceGetInterDirectionsINTEL = 5743, + OpSubgroupAvcMceGetInterMotionVectorCountINTEL = 5744, + OpSubgroupAvcMceGetInterReferenceIdsINTEL = 5745, + OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL = 5746, + OpSubgroupAvcImeInitializeINTEL = 5747, + OpSubgroupAvcImeSetSingleReferenceINTEL = 5748, + OpSubgroupAvcImeSetDualReferenceINTEL = 5749, + OpSubgroupAvcImeRefWindowSizeINTEL = 5750, + OpSubgroupAvcImeAdjustRefOffsetINTEL = 5751, + OpSubgroupAvcImeConvertToMcePayloadINTEL = 5752, + OpSubgroupAvcImeSetMaxMotionVectorCountINTEL = 5753, + OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL = 5754, + OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL = 5755, + OpSubgroupAvcImeSetWeightedSadINTEL = 5756, + OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL = 5757, + OpSubgroupAvcImeEvaluateWithDualReferenceINTEL = 5758, + OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL = 5759, + OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL = 5760, + OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL = 5761, + OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL = 5762, + OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL = 5763, + OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL = 5764, + OpSubgroupAvcImeConvertToMceResultINTEL = 5765, + OpSubgroupAvcImeGetSingleReferenceStreaminINTEL = 5766, + OpSubgroupAvcImeGetDualReferenceStreaminINTEL = 5767, + OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL = 5768, + OpSubgroupAvcImeStripDualReferenceStreamoutINTEL = 5769, + OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL = 5770, + OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL = 5771, + OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL = 5772, + OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL = 5773, + OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL = 5774, + OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL = 5775, + OpSubgroupAvcImeGetBorderReachedINTEL = 5776, + OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL = 5777, + OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL = 5778, + OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL = 5779, + OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL = 5780, + OpSubgroupAvcFmeInitializeINTEL = 5781, + OpSubgroupAvcBmeInitializeINTEL = 5782, + OpSubgroupAvcRefConvertToMcePayloadINTEL = 5783, + OpSubgroupAvcRefSetBidirectionalMixDisableINTEL = 5784, + OpSubgroupAvcRefSetBilinearFilterEnableINTEL = 5785, + OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL = 5786, + OpSubgroupAvcRefEvaluateWithDualReferenceINTEL = 5787, + OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL = 5788, + OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL = 5789, + OpSubgroupAvcRefConvertToMceResultINTEL = 5790, + OpSubgroupAvcSicInitializeINTEL = 5791, + OpSubgroupAvcSicConfigureSkcINTEL = 5792, + OpSubgroupAvcSicConfigureIpeLumaINTEL = 5793, + OpSubgroupAvcSicConfigureIpeLumaChromaINTEL = 5794, + OpSubgroupAvcSicGetMotionVectorMaskINTEL = 5795, + OpSubgroupAvcSicConvertToMcePayloadINTEL = 5796, + OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL = 5797, + OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL = 5798, + OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL = 5799, + OpSubgroupAvcSicSetBilinearFilterEnableINTEL = 5800, + OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL = 5801, + OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL = 5802, + OpSubgroupAvcSicEvaluateIpeINTEL = 5803, + OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL = 5804, + OpSubgroupAvcSicEvaluateWithDualReferenceINTEL = 5805, + OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL = 5806, + OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL = 5807, + OpSubgroupAvcSicConvertToMceResultINTEL = 5808, + OpSubgroupAvcSicGetIpeLumaShapeINTEL = 5809, + OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL = 5810, + OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL = 5811, + OpSubgroupAvcSicGetPackedIpeLumaModesINTEL = 5812, + OpSubgroupAvcSicGetIpeChromaModeINTEL = 5813, + OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL = 5814, + OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL = 5815, + OpSubgroupAvcSicGetInterRawSadsINTEL = 5816, + OpVariableLengthArrayINTEL = 5818, + OpSaveMemoryINTEL = 5819, + OpRestoreMemoryINTEL = 5820, + OpArbitraryFloatSinCosPiINTEL = 5840, + OpArbitraryFloatCastINTEL = 5841, + OpArbitraryFloatCastFromIntINTEL = 5842, + OpArbitraryFloatCastToIntINTEL = 5843, + OpArbitraryFloatAddINTEL = 5846, + OpArbitraryFloatSubINTEL = 5847, + OpArbitraryFloatMulINTEL = 5848, + OpArbitraryFloatDivINTEL = 5849, + OpArbitraryFloatGTINTEL = 5850, + OpArbitraryFloatGEINTEL = 5851, + OpArbitraryFloatLTINTEL = 5852, + OpArbitraryFloatLEINTEL = 5853, + OpArbitraryFloatEQINTEL = 5854, + OpArbitraryFloatRecipINTEL = 5855, + OpArbitraryFloatRSqrtINTEL = 5856, + OpArbitraryFloatCbrtINTEL = 5857, + OpArbitraryFloatHypotINTEL = 5858, + OpArbitraryFloatSqrtINTEL = 5859, + OpArbitraryFloatLogINTEL = 5860, + OpArbitraryFloatLog2INTEL = 5861, + OpArbitraryFloatLog10INTEL = 5862, + OpArbitraryFloatLog1pINTEL = 5863, + OpArbitraryFloatExpINTEL = 5864, + OpArbitraryFloatExp2INTEL = 5865, + OpArbitraryFloatExp10INTEL = 5866, + OpArbitraryFloatExpm1INTEL = 5867, + OpArbitraryFloatSinINTEL = 5868, + OpArbitraryFloatCosINTEL = 5869, + OpArbitraryFloatSinCosINTEL = 5870, + OpArbitraryFloatSinPiINTEL = 5871, + OpArbitraryFloatCosPiINTEL = 5872, + OpArbitraryFloatASinINTEL = 5873, + OpArbitraryFloatASinPiINTEL = 5874, + OpArbitraryFloatACosINTEL = 5875, + OpArbitraryFloatACosPiINTEL = 5876, + OpArbitraryFloatATanINTEL = 5877, + OpArbitraryFloatATanPiINTEL = 5878, + OpArbitraryFloatATan2INTEL = 5879, + OpArbitraryFloatPowINTEL = 5880, + OpArbitraryFloatPowRINTEL = 5881, + OpArbitraryFloatPowNINTEL = 5882, + OpLoopControlINTEL = 5887, + OpFixedSqrtINTEL = 5923, + OpFixedRecipINTEL = 5924, + OpFixedRsqrtINTEL = 5925, + OpFixedSinINTEL = 5926, + OpFixedCosINTEL = 5927, + OpFixedSinCosINTEL = 5928, + OpFixedSinPiINTEL = 5929, + OpFixedCosPiINTEL = 5930, + OpFixedSinCosPiINTEL = 5931, + OpFixedLogINTEL = 5932, + OpFixedExpINTEL = 5933, + OpPtrCastToCrossWorkgroupINTEL = 5934, + OpCrossWorkgroupCastToPtrINTEL = 5938, + OpReadPipeBlockingINTEL = 5946, + OpWritePipeBlockingINTEL = 5947, + OpFPGARegINTEL = 5949, + OpRayQueryGetRayTMinKHR = 6016, + OpRayQueryGetRayFlagsKHR = 6017, + OpRayQueryGetIntersectionTKHR = 6018, + OpRayQueryGetIntersectionInstanceCustomIndexKHR = 6019, + OpRayQueryGetIntersectionInstanceIdKHR = 6020, + OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR = 6021, + OpRayQueryGetIntersectionGeometryIndexKHR = 6022, + OpRayQueryGetIntersectionPrimitiveIndexKHR = 6023, + OpRayQueryGetIntersectionBarycentricsKHR = 6024, + OpRayQueryGetIntersectionFrontFaceKHR = 6025, + OpRayQueryGetIntersectionCandidateAABBOpaqueKHR = 6026, + OpRayQueryGetIntersectionObjectRayDirectionKHR = 6027, + OpRayQueryGetIntersectionObjectRayOriginKHR = 6028, + OpRayQueryGetWorldRayDirectionKHR = 6029, + OpRayQueryGetWorldRayOriginKHR = 6030, + OpRayQueryGetIntersectionObjectToWorldKHR = 6031, + OpRayQueryGetIntersectionWorldToObjectKHR = 6032, + OpAtomicFAddEXT = 6035, + OpTypeBufferSurfaceINTEL = 6086, + OpTypeStructContinuedINTEL = 6090, + OpConstantCompositeContinuedINTEL = 6091, + OpSpecConstantCompositeContinuedINTEL = 6092, + OpMax = 0x7fffffff, +}; + +#ifdef SPV_ENABLE_UTILITY_CODE +inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { + *hasResult = *hasResultType = false; + switch (opcode) { + default: /* unknown opcode */ break; + case OpNop: *hasResult = false; *hasResultType = false; break; + case OpUndef: *hasResult = true; *hasResultType = true; break; + case OpSourceContinued: *hasResult = false; *hasResultType = false; break; + case OpSource: *hasResult = false; *hasResultType = false; break; + case OpSourceExtension: *hasResult = false; *hasResultType = false; break; + case OpName: *hasResult = false; *hasResultType = false; break; + case OpMemberName: *hasResult = false; *hasResultType = false; break; + case OpString: *hasResult = true; *hasResultType = false; break; + case OpLine: *hasResult = false; *hasResultType = false; break; + case OpExtension: *hasResult = false; *hasResultType = false; break; + case OpExtInstImport: *hasResult = true; *hasResultType = false; break; + case OpExtInst: *hasResult = true; *hasResultType = true; break; + case OpMemoryModel: *hasResult = false; *hasResultType = false; break; + case OpEntryPoint: *hasResult = false; *hasResultType = false; break; + case OpExecutionMode: *hasResult = false; *hasResultType = false; break; + case OpCapability: *hasResult = false; *hasResultType = false; break; + case OpTypeVoid: *hasResult = true; *hasResultType = false; break; + case OpTypeBool: *hasResult = true; *hasResultType = false; break; + case OpTypeInt: *hasResult = true; *hasResultType = false; break; + case OpTypeFloat: *hasResult = true; *hasResultType = false; break; + case OpTypeVector: *hasResult = true; *hasResultType = false; break; + case OpTypeMatrix: *hasResult = true; *hasResultType = false; break; + case OpTypeImage: *hasResult = true; *hasResultType = false; break; + case OpTypeSampler: *hasResult = true; *hasResultType = false; break; + case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break; + case OpTypeArray: *hasResult = true; *hasResultType = false; break; + case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break; + case OpTypeStruct: *hasResult = true; *hasResultType = false; break; + case OpTypeOpaque: *hasResult = true; *hasResultType = false; break; + case OpTypePointer: *hasResult = true; *hasResultType = false; break; + case OpTypeFunction: *hasResult = true; *hasResultType = false; break; + case OpTypeEvent: *hasResult = true; *hasResultType = false; break; + case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break; + case OpTypeReserveId: *hasResult = true; *hasResultType = false; break; + case OpTypeQueue: *hasResult = true; *hasResultType = false; break; + case OpTypePipe: *hasResult = true; *hasResultType = false; break; + case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break; + case OpConstantTrue: *hasResult = true; *hasResultType = true; break; + case OpConstantFalse: *hasResult = true; *hasResultType = true; break; + case OpConstant: *hasResult = true; *hasResultType = true; break; + case OpConstantComposite: *hasResult = true; *hasResultType = true; break; + case OpConstantSampler: *hasResult = true; *hasResultType = true; break; + case OpConstantNull: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break; + case OpSpecConstant: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break; + case OpFunction: *hasResult = true; *hasResultType = true; break; + case OpFunctionParameter: *hasResult = true; *hasResultType = true; break; + case OpFunctionEnd: *hasResult = false; *hasResultType = false; break; + case OpFunctionCall: *hasResult = true; *hasResultType = true; break; + case OpVariable: *hasResult = true; *hasResultType = true; break; + case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break; + case OpLoad: *hasResult = true; *hasResultType = true; break; + case OpStore: *hasResult = false; *hasResultType = false; break; + case OpCopyMemory: *hasResult = false; *hasResultType = false; break; + case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break; + case OpAccessChain: *hasResult = true; *hasResultType = true; break; + case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break; + case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break; + case OpArrayLength: *hasResult = true; *hasResultType = true; break; + case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break; + case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break; + case OpDecorate: *hasResult = false; *hasResultType = false; break; + case OpMemberDecorate: *hasResult = false; *hasResultType = false; break; + case OpDecorationGroup: *hasResult = true; *hasResultType = false; break; + case OpGroupDecorate: *hasResult = false; *hasResultType = false; break; + case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break; + case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break; + case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break; + case OpVectorShuffle: *hasResult = true; *hasResultType = true; break; + case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break; + case OpCompositeExtract: *hasResult = true; *hasResultType = true; break; + case OpCompositeInsert: *hasResult = true; *hasResultType = true; break; + case OpCopyObject: *hasResult = true; *hasResultType = true; break; + case OpTranspose: *hasResult = true; *hasResultType = true; break; + case OpSampledImage: *hasResult = true; *hasResultType = true; break; + case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageFetch: *hasResult = true; *hasResultType = true; break; + case OpImageGather: *hasResult = true; *hasResultType = true; break; + case OpImageDrefGather: *hasResult = true; *hasResultType = true; break; + case OpImageRead: *hasResult = true; *hasResultType = true; break; + case OpImageWrite: *hasResult = false; *hasResultType = false; break; + case OpImage: *hasResult = true; *hasResultType = true; break; + case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break; + case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break; + case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break; + case OpImageQuerySize: *hasResult = true; *hasResultType = true; break; + case OpImageQueryLod: *hasResult = true; *hasResultType = true; break; + case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break; + case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break; + case OpConvertFToU: *hasResult = true; *hasResultType = true; break; + case OpConvertFToS: *hasResult = true; *hasResultType = true; break; + case OpConvertSToF: *hasResult = true; *hasResultType = true; break; + case OpConvertUToF: *hasResult = true; *hasResultType = true; break; + case OpUConvert: *hasResult = true; *hasResultType = true; break; + case OpSConvert: *hasResult = true; *hasResultType = true; break; + case OpFConvert: *hasResult = true; *hasResultType = true; break; + case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break; + case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break; + case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break; + case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break; + case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break; + case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break; + case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break; + case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break; + case OpBitcast: *hasResult = true; *hasResultType = true; break; + case OpSNegate: *hasResult = true; *hasResultType = true; break; + case OpFNegate: *hasResult = true; *hasResultType = true; break; + case OpIAdd: *hasResult = true; *hasResultType = true; break; + case OpFAdd: *hasResult = true; *hasResultType = true; break; + case OpISub: *hasResult = true; *hasResultType = true; break; + case OpFSub: *hasResult = true; *hasResultType = true; break; + case OpIMul: *hasResult = true; *hasResultType = true; break; + case OpFMul: *hasResult = true; *hasResultType = true; break; + case OpUDiv: *hasResult = true; *hasResultType = true; break; + case OpSDiv: *hasResult = true; *hasResultType = true; break; + case OpFDiv: *hasResult = true; *hasResultType = true; break; + case OpUMod: *hasResult = true; *hasResultType = true; break; + case OpSRem: *hasResult = true; *hasResultType = true; break; + case OpSMod: *hasResult = true; *hasResultType = true; break; + case OpFRem: *hasResult = true; *hasResultType = true; break; + case OpFMod: *hasResult = true; *hasResultType = true; break; + case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break; + case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break; + case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break; + case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break; + case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break; + case OpOuterProduct: *hasResult = true; *hasResultType = true; break; + case OpDot: *hasResult = true; *hasResultType = true; break; + case OpIAddCarry: *hasResult = true; *hasResultType = true; break; + case OpISubBorrow: *hasResult = true; *hasResultType = true; break; + case OpUMulExtended: *hasResult = true; *hasResultType = true; break; + case OpSMulExtended: *hasResult = true; *hasResultType = true; break; + case OpAny: *hasResult = true; *hasResultType = true; break; + case OpAll: *hasResult = true; *hasResultType = true; break; + case OpIsNan: *hasResult = true; *hasResultType = true; break; + case OpIsInf: *hasResult = true; *hasResultType = true; break; + case OpIsFinite: *hasResult = true; *hasResultType = true; break; + case OpIsNormal: *hasResult = true; *hasResultType = true; break; + case OpSignBitSet: *hasResult = true; *hasResultType = true; break; + case OpLessOrGreater: *hasResult = true; *hasResultType = true; break; + case OpOrdered: *hasResult = true; *hasResultType = true; break; + case OpUnordered: *hasResult = true; *hasResultType = true; break; + case OpLogicalEqual: *hasResult = true; *hasResultType = true; break; + case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break; + case OpLogicalOr: *hasResult = true; *hasResultType = true; break; + case OpLogicalAnd: *hasResult = true; *hasResultType = true; break; + case OpLogicalNot: *hasResult = true; *hasResultType = true; break; + case OpSelect: *hasResult = true; *hasResultType = true; break; + case OpIEqual: *hasResult = true; *hasResultType = true; break; + case OpINotEqual: *hasResult = true; *hasResultType = true; break; + case OpUGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpSGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpULessThan: *hasResult = true; *hasResultType = true; break; + case OpSLessThan: *hasResult = true; *hasResultType = true; break; + case OpULessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break; + case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break; + case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break; + case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break; + case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break; + case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break; + case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break; + case OpBitwiseOr: *hasResult = true; *hasResultType = true; break; + case OpBitwiseXor: *hasResult = true; *hasResultType = true; break; + case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break; + case OpNot: *hasResult = true; *hasResultType = true; break; + case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break; + case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break; + case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break; + case OpBitReverse: *hasResult = true; *hasResultType = true; break; + case OpBitCount: *hasResult = true; *hasResultType = true; break; + case OpDPdx: *hasResult = true; *hasResultType = true; break; + case OpDPdy: *hasResult = true; *hasResultType = true; break; + case OpFwidth: *hasResult = true; *hasResultType = true; break; + case OpDPdxFine: *hasResult = true; *hasResultType = true; break; + case OpDPdyFine: *hasResult = true; *hasResultType = true; break; + case OpFwidthFine: *hasResult = true; *hasResultType = true; break; + case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break; + case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break; + case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break; + case OpEmitVertex: *hasResult = false; *hasResultType = false; break; + case OpEndPrimitive: *hasResult = false; *hasResultType = false; break; + case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break; + case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break; + case OpControlBarrier: *hasResult = false; *hasResultType = false; break; + case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break; + case OpAtomicLoad: *hasResult = true; *hasResultType = true; break; + case OpAtomicStore: *hasResult = false; *hasResultType = false; break; + case OpAtomicExchange: *hasResult = true; *hasResultType = true; break; + case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break; + case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break; + case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break; + case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break; + case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break; + case OpAtomicISub: *hasResult = true; *hasResultType = true; break; + case OpAtomicSMin: *hasResult = true; *hasResultType = true; break; + case OpAtomicUMin: *hasResult = true; *hasResultType = true; break; + case OpAtomicSMax: *hasResult = true; *hasResultType = true; break; + case OpAtomicUMax: *hasResult = true; *hasResultType = true; break; + case OpAtomicAnd: *hasResult = true; *hasResultType = true; break; + case OpAtomicOr: *hasResult = true; *hasResultType = true; break; + case OpAtomicXor: *hasResult = true; *hasResultType = true; break; + case OpPhi: *hasResult = true; *hasResultType = true; break; + case OpLoopMerge: *hasResult = false; *hasResultType = false; break; + case OpSelectionMerge: *hasResult = false; *hasResultType = false; break; + case OpLabel: *hasResult = true; *hasResultType = false; break; + case OpBranch: *hasResult = false; *hasResultType = false; break; + case OpBranchConditional: *hasResult = false; *hasResultType = false; break; + case OpSwitch: *hasResult = false; *hasResultType = false; break; + case OpKill: *hasResult = false; *hasResultType = false; break; + case OpReturn: *hasResult = false; *hasResultType = false; break; + case OpReturnValue: *hasResult = false; *hasResultType = false; break; + case OpUnreachable: *hasResult = false; *hasResultType = false; break; + case OpLifetimeStart: *hasResult = false; *hasResultType = false; break; + case OpLifetimeStop: *hasResult = false; *hasResultType = false; break; + case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break; + case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break; + case OpGroupAll: *hasResult = true; *hasResultType = true; break; + case OpGroupAny: *hasResult = true; *hasResultType = true; break; + case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break; + case OpGroupIAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupFAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupFMin: *hasResult = true; *hasResultType = true; break; + case OpGroupUMin: *hasResult = true; *hasResultType = true; break; + case OpGroupSMin: *hasResult = true; *hasResultType = true; break; + case OpGroupFMax: *hasResult = true; *hasResultType = true; break; + case OpGroupUMax: *hasResult = true; *hasResultType = true; break; + case OpGroupSMax: *hasResult = true; *hasResultType = true; break; + case OpReadPipe: *hasResult = true; *hasResultType = true; break; + case OpWritePipe: *hasResult = true; *hasResultType = true; break; + case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break; + case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break; + case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; + case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; + case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break; + case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break; + case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break; + case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break; + case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break; + case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break; + case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break; + case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break; + case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break; + case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break; + case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break; + case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break; + case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break; + case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break; + case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break; + case OpRetainEvent: *hasResult = false; *hasResultType = false; break; + case OpReleaseEvent: *hasResult = false; *hasResultType = false; break; + case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break; + case OpIsValidEvent: *hasResult = true; *hasResultType = true; break; + case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break; + case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break; + case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break; + case OpBuildNDRange: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break; + case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break; + case OpImageSparseGather: *hasResult = true; *hasResultType = true; break; + case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break; + case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break; + case OpNoLine: *hasResult = false; *hasResultType = false; break; + case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break; + case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break; + case OpImageSparseRead: *hasResult = true; *hasResultType = true; break; + case OpSizeOf: *hasResult = true; *hasResultType = true; break; + case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break; + case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break; + case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break; + case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break; + case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break; + case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break; + case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break; + case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break; + case OpModuleProcessed: *hasResult = false; *hasResultType = false; break; + case OpExecutionModeId: *hasResult = false; *hasResultType = false; break; + case OpDecorateId: *hasResult = false; *hasResultType = false; break; + case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; + case OpCopyLogical: *hasResult = true; *hasResultType = true; break; + case OpPtrEqual: *hasResult = true; *hasResultType = true; break; + case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; + case OpPtrDiff: *hasResult = true; *hasResultType = true; break; + case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; + case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; + case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; + case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; + case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; + case OpConvertUToAccelerationStructureKHR: *hasResult = true; *hasResultType = true; break; + case OpIgnoreIntersectionKHR: *hasResult = false; *hasResultType = false; break; + case OpTerminateRayKHR: *hasResult = false; *hasResultType = false; break; + case OpSDot: *hasResult = true; *hasResultType = true; break; + case OpUDot: *hasResult = true; *hasResultType = true; break; + case OpSUDot: *hasResult = true; *hasResultType = true; break; + case OpSDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpUDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; + case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryGenerateIntersectionKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break; + case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break; + case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; + case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; + case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; + case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; + case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break; + case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break; + case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; + case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; + case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; + case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break; + case OpTraceNV: *hasResult = false; *hasResultType = false; break; + case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break; + case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; + case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break; + case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; + case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; + case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break; + case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break; + case OpBeginInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; + case OpEndInvocationInterlockEXT: *hasResult = false; *hasResultType = false; break; + case OpDemoteToHelperInvocation: *hasResult = false; *hasResultType = false; break; + case OpIsHelperInvocationEXT: *hasResult = true; *hasResultType = true; break; + case OpConvertUToImageNV: *hasResult = true; *hasResultType = true; break; + case OpConvertUToSamplerNV: *hasResult = true; *hasResultType = true; break; + case OpConvertImageToUNV: *hasResult = true; *hasResultType = true; break; + case OpConvertSamplerToUNV: *hasResult = true; *hasResultType = true; break; + case OpConvertUToSampledImageNV: *hasResult = true; *hasResultType = true; break; + case OpConvertSampledImageToUNV: *hasResult = true; *hasResultType = true; break; + case OpSamplerImageAddressingModeNV: *hasResult = false; *hasResultType = false; break; + case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; + case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; + case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break; + case OpUCountLeadingZerosINTEL: *hasResult = true; *hasResultType = true; break; + case OpUCountTrailingZerosINTEL: *hasResult = true; *hasResultType = true; break; + case OpAbsISubINTEL: *hasResult = true; *hasResultType = true; break; + case OpAbsUSubINTEL: *hasResult = true; *hasResultType = true; break; + case OpIAddSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpUAddSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpIAverageINTEL: *hasResult = true; *hasResultType = true; break; + case OpUAverageINTEL: *hasResult = true; *hasResultType = true; break; + case OpIAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; + case OpUAverageRoundedINTEL: *hasResult = true; *hasResultType = true; break; + case OpISubSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpUSubSatINTEL: *hasResult = true; *hasResultType = true; break; + case OpIMul32x16INTEL: *hasResult = true; *hasResultType = true; break; + case OpUMul32x16INTEL: *hasResult = true; *hasResultType = true; break; + case OpConstantFunctionPointerINTEL: *hasResult = true; *hasResultType = true; break; + case OpFunctionPointerCallINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmTargetINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmINTEL: *hasResult = true; *hasResultType = true; break; + case OpAsmCallINTEL: *hasResult = true; *hasResultType = true; break; + case OpAtomicFMinEXT: *hasResult = true; *hasResultType = true; break; + case OpAtomicFMaxEXT: *hasResult = true; *hasResultType = true; break; + case OpAssumeTrueKHR: *hasResult = false; *hasResultType = false; break; + case OpExpectKHR: *hasResult = true; *hasResultType = true; break; + case OpDecorateString: *hasResult = false; *hasResultType = false; break; + case OpMemberDecorateString: *hasResult = false; *hasResultType = false; break; + case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break; + case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break; + case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break; + case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break; + case OpVariableLengthArrayINTEL: *hasResult = true; *hasResultType = true; break; + case OpSaveMemoryINTEL: *hasResult = true; *hasResultType = true; break; + case OpRestoreMemoryINTEL: *hasResult = false; *hasResultType = false; break; + case OpArbitraryFloatSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastFromIntINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCastToIntINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatAddINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSubINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatMulINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatDivINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatGTINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatGEINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLTINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLEINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatEQINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatRecipINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatRSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCbrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatHypotINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLogINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog10INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatLog1pINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExpINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExp2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExp10INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatExpm1INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatSinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatASinINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatASinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatACosINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatACosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATanINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATanPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatATan2INTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break; + case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break; + case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; + case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinCosINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedSinCosPiINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedLogINTEL: *hasResult = true; *hasResultType = true; break; + case OpFixedExpINTEL: *hasResult = true; *hasResultType = true; break; + case OpPtrCastToCrossWorkgroupINTEL: *hasResult = true; *hasResultType = true; break; + case OpCrossWorkgroupCastToPtrINTEL: *hasResult = true; *hasResultType = true; break; + case OpReadPipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; + case OpWritePipeBlockingINTEL: *hasResult = true; *hasResultType = true; break; + case OpFPGARegINTEL: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetRayTMinKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetRayFlagsKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionTKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionInstanceCustomIndexKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionInstanceIdKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionGeometryIndexKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionPrimitiveIndexKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionBarycentricsKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionFrontFaceKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionCandidateAABBOpaqueKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionObjectRayDirectionKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionObjectRayOriginKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetWorldRayDirectionKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetWorldRayOriginKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionObjectToWorldKHR: *hasResult = true; *hasResultType = true; break; + case OpRayQueryGetIntersectionWorldToObjectKHR: *hasResult = true; *hasResultType = true; break; + case OpAtomicFAddEXT: *hasResult = true; *hasResultType = true; break; + case OpTypeBufferSurfaceINTEL: *hasResult = true; *hasResultType = false; break; + case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break; + case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; + case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; + } +} +#endif /* SPV_ENABLE_UTILITY_CODE */ + +// Overload operator| for mask bit combining + +inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } +inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } +inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } +inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } +inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } +inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } +inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } +inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } +inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } +inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } + +} // end namespace spv + +#endif // #ifndef spirv_HPP From a77d26f0af88552bbda8d32bdb0c88bd701e07e5 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 12 Oct 2022 16:10:12 -0600 Subject: [PATCH 101/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 1d8d371352..5ee36a2d20 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "59cf5b1346d8b029add67a919f801c29ea13cc49" + "commit" : "eb0a36633d2acf4de82588504f951ad0f2cecacb" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "87d5b782bec60822aa878941e6b13c0a9a954c9b" + "commit" : "85a1ed200d50660786c1a88d9166e871123cce39" } ] } From 78221d619e02c6b6310c30ed8b1ec6c54ce4a861 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 12 Oct 2022 18:16:41 -0600 Subject: [PATCH 102/594] Update CHANGES for release 11.12.0 --- CHANGES.md | 11 +++ SPIRV/GlslangToSpv.cpp | 3 +- .../hlsl.aliasOpaque.frag.out | 2 +- .../hlsl.flattenOpaque.frag.out | 2 +- .../hlsl.flattenOpaqueInit.vert.out | 2 +- .../hlsl.flattenOpaqueInitMix.vert.out | 2 +- .../hlsl.flattenSubset.frag.out | 2 +- .../hlsl.flattenSubset2.frag.out | 2 +- .../hlsl.intrinsics.evalfns.frag.out | 2 +- .../hlsl.partialFlattenLocal.vert.out | 2 +- .../hlsl.partialFlattenMixed.vert.out | 2 +- Test/baseResults/compoundsuffix.frag.hlsl | 90 +++++++++---------- Test/baseResults/compoundsuffix.vert.glsl | 30 +++---- .../glsl.autosampledtextures.frag.out | 2 +- .../glsl.entryPointRename.vert.bad.out | 2 +- .../glsl.entryPointRename.vert.out | 2 +- Test/baseResults/glspv.esversion.vert.out | 2 +- Test/baseResults/glspv.version.frag.out | 2 +- Test/baseResults/hlsl.PointSize.geom.out | 2 +- Test/baseResults/hlsl.PointSize.vert.out | 2 +- Test/baseResults/hlsl.aliasOpaque.frag.out | 2 +- Test/baseResults/hlsl.amend.frag.out | 2 +- Test/baseResults/hlsl.array.flatten.frag.out | 2 +- Test/baseResults/hlsl.array.frag.out | 2 +- .../hlsl.array.implicit-size.frag.out | 2 +- Test/baseResults/hlsl.array.multidim.frag.out | 2 +- Test/baseResults/hlsl.assoc.frag.out | 2 +- .../hlsl.attribute.expression.comp.out | 2 +- Test/baseResults/hlsl.attribute.frag.out | 2 +- Test/baseResults/hlsl.attributeC11.frag.out | 2 +- .../hlsl.attributeGlobalBuffer.frag.out | 2 +- .../hlsl.autosampledtextures.frag.out | 2 +- Test/baseResults/hlsl.basic.comp.out | 2 +- Test/baseResults/hlsl.basic.geom.out | 2 +- Test/baseResults/hlsl.boolConv.vert.out | 2 +- Test/baseResults/hlsl.buffer.frag.out | 2 +- .../hlsl.calculatelod.dx10.frag.out | 2 +- .../hlsl.calculatelodunclamped.dx10.frag.out | 2 +- Test/baseResults/hlsl.cast.frag.out | 2 +- .../hlsl.cbuffer-identifier.vert.out | 2 +- Test/baseResults/hlsl.charLit.vert.out | 2 +- Test/baseResults/hlsl.clip.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-1.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-1.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-1.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-2.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-2.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-2.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-3.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-3.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-3.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-4.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-4.geom.out | 2 +- Test/baseResults/hlsl.clipdistance-4.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-5.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-5.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-6.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-6.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-7.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-7.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-8.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-8.vert.out | 2 +- Test/baseResults/hlsl.clipdistance-9.frag.out | 2 +- Test/baseResults/hlsl.clipdistance-9.vert.out | 2 +- Test/baseResults/hlsl.color.hull.tesc.out | 2 +- Test/baseResults/hlsl.comparison.vec.frag.out | 2 +- Test/baseResults/hlsl.conditional.frag.out | 2 +- Test/baseResults/hlsl.constantbuffer.frag.out | 2 +- Test/baseResults/hlsl.constructArray.vert.out | 2 +- Test/baseResults/hlsl.constructexpr.frag.out | 2 +- Test/baseResults/hlsl.constructimat.frag.out | 2 +- Test/baseResults/hlsl.coverage.frag.out | 2 +- Test/baseResults/hlsl.dashI.vert.out | 2 +- .../hlsl.deadFunctionMissingBody.vert.out | 2 +- Test/baseResults/hlsl.depthGreater.frag.out | 2 +- Test/baseResults/hlsl.depthLess.frag.out | 2 +- Test/baseResults/hlsl.discard.frag.out | 2 +- Test/baseResults/hlsl.doLoop.frag.out | 2 +- Test/baseResults/hlsl.domain.1.tese.out | 2 +- Test/baseResults/hlsl.domain.2.tese.out | 2 +- Test/baseResults/hlsl.domain.3.tese.out | 2 +- .../hlsl.earlydepthstencil.frag.out | 2 +- .../hlsl.emptystruct.init.vert.out | 2 +- .../hlsl.emptystructreturn.frag.out | 2 +- .../hlsl.emptystructreturn.vert.out | 2 +- Test/baseResults/hlsl.entry-in.frag.out | 2 +- Test/baseResults/hlsl.entry-out.frag.out | 2 +- Test/baseResults/hlsl.entry.rename.frag.out | 2 +- .../hlsl.explicitDescriptorSet-2.frag.out | 2 +- .../hlsl.explicitDescriptorSet.frag.out | 2 +- Test/baseResults/hlsl.flatten.return.frag.out | 2 +- Test/baseResults/hlsl.flattenOpaque.frag.out | 2 +- .../hlsl.flattenOpaqueInit.vert.out | 2 +- .../hlsl.flattenOpaqueInitMix.vert.out | 2 +- Test/baseResults/hlsl.flattenSubset.frag.out | 2 +- Test/baseResults/hlsl.flattenSubset2.frag.out | 2 +- Test/baseResults/hlsl.float1.frag.out | 2 +- Test/baseResults/hlsl.float4.frag.out | 2 +- Test/baseResults/hlsl.forLoop.frag.out | 2 +- .../hlsl.format.rwtexture.frag.out | 2 +- Test/baseResults/hlsl.fraggeom.frag.out | 2 +- .../hlsl.gather.array.dx10.frag.out | 2 +- .../hlsl.gather.basic.dx10.frag.out | 2 +- .../hlsl.gather.basic.dx10.vert.out | 2 +- .../hlsl.gather.offset.dx10.frag.out | 2 +- .../hlsl.gather.offsetarray.dx10.frag.out | 2 +- .../hlsl.gatherRGBA.array.dx10.frag.out | 2 +- .../hlsl.gatherRGBA.basic.dx10.frag.out | 2 +- .../hlsl.gatherRGBA.offset.dx10.frag.out | 2 +- .../hlsl.gatherRGBA.offsetarray.dx10.frag.out | 2 +- .../hlsl.gathercmpRGBA.offset.dx10.frag.out | 2 +- .../hlsl.getdimensions.dx10.frag.out | 2 +- .../hlsl.getdimensions.dx10.vert.out | 2 +- .../hlsl.getdimensions.rw.dx10.frag.out | 2 +- .../hlsl.getsampleposition.dx10.frag.out | 2 +- .../hlsl.global-const-init.frag.out | 2 +- Test/baseResults/hlsl.groupid.comp.out | 2 +- Test/baseResults/hlsl.gs-hs-mix.tesc.out | 2 +- Test/baseResults/hlsl.hlslOffset.vert.out | 2 +- Test/baseResults/hlsl.hull.1.tesc.out | 2 +- Test/baseResults/hlsl.hull.2.tesc.out | 2 +- Test/baseResults/hlsl.hull.3.tesc.out | 2 +- Test/baseResults/hlsl.hull.4.tesc.out | 2 +- Test/baseResults/hlsl.hull.6.tesc.out | 2 +- Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out | 2 +- Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out | 2 +- Test/baseResults/hlsl.hull.void.tesc.out | 2 +- .../hlsl.identifier.sample.frag.out | 2 +- Test/baseResults/hlsl.if.frag.out | 2 +- .../hlsl.imagefetch-subvec4.comp.out | 2 +- .../hlsl.imageload-subvec4.comp.out | 2 +- Test/baseResults/hlsl.implicitBool.frag.out | 2 +- Test/baseResults/hlsl.include.vert.out | 2 +- Test/baseResults/hlsl.inf.vert.out | 2 +- Test/baseResults/hlsl.init.frag.out | 2 +- Test/baseResults/hlsl.init2.frag.out | 2 +- Test/baseResults/hlsl.inoutquals.frag.out | 2 +- Test/baseResults/hlsl.instance.geom.out | 2 +- Test/baseResults/hlsl.int.dot.frag.out | 2 +- .../baseResults/hlsl.intrinsic.frexp.frag.out | 2 +- .../baseResults/hlsl.intrinsic.frexp.vert.out | 2 +- .../hlsl.intrinsics.barriers.comp.out | 2 +- Test/baseResults/hlsl.intrinsics.comp.out | 2 +- .../hlsl.intrinsics.d3dcolortoubyte4.frag.out | 2 +- .../hlsl.intrinsics.double.frag.out | 2 +- .../hlsl.intrinsics.f1632.frag.out | 2 +- .../hlsl.intrinsics.f3216.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.lit.frag.out | 2 +- .../hlsl.intrinsics.negative.comp.out | 2 +- .../hlsl.intrinsics.negative.vert.out | 2 +- .../hlsl.intrinsics.promote.down.frag.out | 2 +- .../hlsl.intrinsics.promote.frag.out | 2 +- .../hlsl.intrinsics.promote.outputs.frag.out | 2 +- Test/baseResults/hlsl.intrinsics.vert.out | 2 +- Test/baseResults/hlsl.isfinite.frag.out | 2 +- Test/baseResults/hlsl.layout.frag.out | 2 +- Test/baseResults/hlsl.layoutOverride.vert.out | 2 +- Test/baseResults/hlsl.load.2dms.dx10.frag.out | 2 +- .../baseResults/hlsl.load.array.dx10.frag.out | 2 +- .../baseResults/hlsl.load.basic.dx10.frag.out | 2 +- .../baseResults/hlsl.load.basic.dx10.vert.out | 2 +- .../hlsl.load.buffer.dx10.frag.out | 2 +- .../hlsl.load.buffer.float.dx10.frag.out | 2 +- .../hlsl.load.offset.dx10.frag.out | 2 +- .../hlsl.load.offsetarray.dx10.frag.out | 2 +- .../hlsl.load.rwbuffer.dx10.frag.out | 2 +- .../hlsl.load.rwtexture.array.dx10.frag.out | 2 +- .../hlsl.load.rwtexture.dx10.frag.out | 2 +- Test/baseResults/hlsl.logical.binary.frag.out | 2 +- .../hlsl.logical.binary.vec.frag.out | 2 +- Test/baseResults/hlsl.logical.unary.frag.out | 2 +- Test/baseResults/hlsl.logicalConvert.frag.out | 2 +- Test/baseResults/hlsl.loopattr.frag.out | 2 +- Test/baseResults/hlsl.matNx1.frag.out | 2 +- Test/baseResults/hlsl.matType.bool.frag.out | 2 +- Test/baseResults/hlsl.matType.frag.out | 2 +- Test/baseResults/hlsl.matType.int.frag.out | 2 +- Test/baseResults/hlsl.matpack-1.frag.out | 2 +- .../hlsl.matpack-pragma-global.frag.out | 2 +- Test/baseResults/hlsl.matpack-pragma.frag.out | 2 +- Test/baseResults/hlsl.matrixSwizzle.vert.out | 2 +- Test/baseResults/hlsl.matrixindex.frag.out | 2 +- Test/baseResults/hlsl.max.frag.out | 2 +- Test/baseResults/hlsl.memberFunCall.frag.out | 2 +- Test/baseResults/hlsl.mintypes.frag.out | 2 +- Test/baseResults/hlsl.mip.operator.frag.out | 2 +- Test/baseResults/hlsl.mul-truncate.frag.out | 2 +- .../hlsl.multiDescriptorSet.frag.out | 2 +- Test/baseResults/hlsl.multiEntry.vert.out | 2 +- Test/baseResults/hlsl.multiReturn.frag.out | 2 +- Test/baseResults/hlsl.namespace.frag.out | 2 +- .../hlsl.noSemantic.functionality1.comp.out | 2 +- Test/baseResults/hlsl.nonint-index.frag.out | 2 +- .../hlsl.nonstaticMemberFunction.frag.out | 2 +- .../baseResults/hlsl.numericsuffixes.frag.out | 2 +- Test/baseResults/hlsl.numthreads.comp.out | 2 +- .../baseResults/hlsl.opaque-type-bug.frag.out | 2 +- Test/baseResults/hlsl.overload.frag.out | 2 +- Test/baseResults/hlsl.params.default.frag.out | 2 +- .../hlsl.partialFlattenLocal.vert.out | 2 +- .../hlsl.partialFlattenMixed.vert.out | 2 +- Test/baseResults/hlsl.partialInit.frag.out | 2 +- Test/baseResults/hlsl.pp.line.frag.out | 2 +- Test/baseResults/hlsl.pp.line2.frag.out | 2 +- Test/baseResults/hlsl.pp.line3.frag.out | 2 +- Test/baseResults/hlsl.pp.line4.frag.out | 2 +- Test/baseResults/hlsl.pp.vert.out | 2 +- Test/baseResults/hlsl.precedence.frag.out | 2 +- Test/baseResults/hlsl.precedence2.frag.out | 2 +- Test/baseResults/hlsl.precise.frag.out | 2 +- Test/baseResults/hlsl.preprocessor.frag.out | 2 +- Test/baseResults/hlsl.printf.comp.out | 2 +- Test/baseResults/hlsl.promote.atomic.frag.out | 2 +- Test/baseResults/hlsl.promote.binary.frag.out | 2 +- Test/baseResults/hlsl.promote.vec1.frag.out | 2 +- Test/baseResults/hlsl.promotions.frag.out | 2 +- Test/baseResults/hlsl.round.dx10.frag.out | 2 +- Test/baseResults/hlsl.round.dx9.frag.out | 2 +- Test/baseResults/hlsl.rw.atomics.frag.out | 2 +- Test/baseResults/hlsl.rw.bracket.frag.out | 2 +- Test/baseResults/hlsl.rw.register.frag.out | 2 +- .../hlsl.rw.scalar.bracket.frag.out | 2 +- Test/baseResults/hlsl.rw.swizzle.frag.out | 2 +- .../baseResults/hlsl.rw.vec2.bracket.frag.out | 2 +- .../hlsl.sample.array.dx10.frag.out | 2 +- .../hlsl.sample.basic.dx10.frag.out | 2 +- Test/baseResults/hlsl.sample.dx9.frag.out | 2 +- Test/baseResults/hlsl.sample.dx9.vert.out | 2 +- .../hlsl.sample.offset.dx10.frag.out | 2 +- .../hlsl.sample.offsetarray.dx10.frag.out | 2 +- .../hlsl.sample.sub-vec4.dx10.frag.out | 2 +- .../hlsl.samplebias.array.dx10.frag.out | 2 +- .../hlsl.samplebias.basic.dx10.frag.out | 2 +- .../hlsl.samplebias.offset.dx10.frag.out | 2 +- .../hlsl.samplebias.offsetarray.dx10.frag.out | 2 +- .../hlsl.samplecmp.array.dx10.frag.out | 2 +- .../hlsl.samplecmp.basic.dx10.frag.out | 2 +- .../hlsl.samplecmp.dualmode.frag.out | 2 +- .../hlsl.samplecmp.offset.dx10.frag.out | 2 +- .../hlsl.samplecmp.offsetarray.dx10.frag.out | 2 +- ...lsl.samplecmplevelzero.array.dx10.frag.out | 2 +- ...lsl.samplecmplevelzero.basic.dx10.frag.out | 2 +- ...sl.samplecmplevelzero.offset.dx10.frag.out | 2 +- ...mplecmplevelzero.offsetarray.dx10.frag.out | 2 +- .../hlsl.samplegrad.array.dx10.frag.out | 2 +- .../hlsl.samplegrad.basic.dx10.frag.out | 2 +- .../hlsl.samplegrad.basic.dx10.vert.out | 2 +- .../hlsl.samplegrad.offset.dx10.frag.out | 2 +- .../hlsl.samplegrad.offsetarray.dx10.frag.out | 2 +- .../hlsl.samplelevel.array.dx10.frag.out | 2 +- .../hlsl.samplelevel.basic.dx10.frag.out | 2 +- .../hlsl.samplelevel.basic.dx10.vert.out | 2 +- .../hlsl.samplelevel.offset.dx10.frag.out | 2 +- ...hlsl.samplelevel.offsetarray.dx10.frag.out | 2 +- Test/baseResults/hlsl.scalar-length.frag.out | 2 +- Test/baseResults/hlsl.scalar2matrix.frag.out | 2 +- Test/baseResults/hlsl.scalarCast.vert.out | 2 +- Test/baseResults/hlsl.scope.frag.out | 2 +- Test/baseResults/hlsl.self_cast.frag.out | 2 +- Test/baseResults/hlsl.semantic-1.vert.out | 2 +- Test/baseResults/hlsl.semantic.geom.out | 2 +- Test/baseResults/hlsl.semantic.vert.out | 2 +- Test/baseResults/hlsl.semicolons.frag.out | 2 +- Test/baseResults/hlsl.shapeConv.frag.out | 2 +- Test/baseResults/hlsl.shapeConvRet.frag.out | 2 +- Test/baseResults/hlsl.sin.frag.out | 2 +- .../hlsl.singleArgIntPromo.vert.out | 2 +- Test/baseResults/hlsl.snorm.uav.comp.out | 2 +- Test/baseResults/hlsl.specConstant.frag.out | 2 +- .../baseResults/hlsl.spv.1.6.discard.frag.out | 2 +- Test/baseResults/hlsl.staticFuncInit.frag.out | 2 +- .../hlsl.staticMemberFunction.frag.out | 2 +- ...sl.store.rwbyteaddressbuffer.type.comp.out | 2 +- Test/baseResults/hlsl.string.frag.out | 2 +- Test/baseResults/hlsl.stringtoken.frag.out | 2 +- Test/baseResults/hlsl.struct.frag.out | 2 +- Test/baseResults/hlsl.struct.split-1.vert.out | 2 +- .../hlsl.struct.split.array.geom.out | 2 +- .../hlsl.struct.split.assign.frag.out | 2 +- .../hlsl.struct.split.call.vert.out | 2 +- .../hlsl.struct.split.nested.geom.out | 2 +- .../hlsl.struct.split.trivial.geom.out | 2 +- .../hlsl.struct.split.trivial.vert.out | 2 +- .../baseResults/hlsl.structIoFourWay.frag.out | 2 +- .../hlsl.structStructName.frag.out | 2 +- .../hlsl.structarray.flatten.frag.out | 2 +- .../hlsl.structarray.flatten.geom.out | 2 +- .../hlsl.structbuffer.append.fn.frag.out | 2 +- .../hlsl.structbuffer.append.frag.out | 2 +- .../hlsl.structbuffer.atomics.frag.out | 2 +- .../hlsl.structbuffer.byte.frag.out | 2 +- .../hlsl.structbuffer.coherent.frag.out | 2 +- .../hlsl.structbuffer.floatidx.comp.out | 2 +- .../baseResults/hlsl.structbuffer.fn.frag.out | 2 +- .../hlsl.structbuffer.fn2.comp.out | 2 +- Test/baseResults/hlsl.structbuffer.frag.out | 2 +- ...hlsl.structbuffer.incdec.frag.hlslfun1.out | 2 +- .../hlsl.structbuffer.incdec.frag.out | 2 +- .../baseResults/hlsl.structbuffer.rw.frag.out | 2 +- .../hlsl.structbuffer.rwbyte.frag.out | 2 +- .../hlsl.structbuffer.rwbyte2.comp.out | 2 +- Test/baseResults/hlsl.structin.vert.out | 2 +- Test/baseResults/hlsl.subpass.frag.out | 2 +- Test/baseResults/hlsl.switch.frag.out | 2 +- Test/baseResults/hlsl.swizzle.frag.out | 2 +- .../baseResults/hlsl.synthesizeInput.frag.out | 2 +- Test/baseResults/hlsl.target.frag.out | 2 +- Test/baseResults/hlsl.targetStruct1.frag.out | 2 +- Test/baseResults/hlsl.targetStruct2.frag.out | 2 +- Test/baseResults/hlsl.templatetypes.frag.out | 2 +- Test/baseResults/hlsl.texture.struct.frag.out | 2 +- .../baseResults/hlsl.texture.subvec4.frag.out | 2 +- Test/baseResults/hlsl.texturebuffer.frag.out | 2 +- Test/baseResults/hlsl.this.frag.out | 2 +- .../hlsl.tristream-append.geom.out | 2 +- Test/baseResults/hlsl.tx.bracket.frag.out | 2 +- Test/baseResults/hlsl.tx.overload.frag.out | 2 +- Test/baseResults/hlsl.type.half.frag.out | 2 +- .../baseResults/hlsl.type.identifier.frag.out | 2 +- .../hlsl.type.type.conversion.valid.frag.out | 2 +- Test/baseResults/hlsl.typeGraphCopy.vert.out | 2 +- Test/baseResults/hlsl.typedef.frag.out | 2 +- Test/baseResults/hlsl.void.frag.out | 2 +- Test/baseResults/hlsl.w-recip.frag.out | 2 +- Test/baseResults/hlsl.w-recip2.frag.out | 2 +- Test/baseResults/hlsl.wavebroadcast.comp.out | 2 +- Test/baseResults/hlsl.waveprefix.comp.out | 2 +- Test/baseResults/hlsl.wavequad.comp.out | 2 +- Test/baseResults/hlsl.wavequery.comp.out | 2 +- Test/baseResults/hlsl.wavequery.frag.out | 2 +- Test/baseResults/hlsl.wavereduction.comp.out | 2 +- Test/baseResults/hlsl.wavevote.comp.out | 2 +- Test/baseResults/hlsl.whileLoop.frag.out | 2 +- Test/baseResults/hlsl.y-negate-1.vert.out | 2 +- Test/baseResults/hlsl.y-negate-2.vert.out | 2 +- Test/baseResults/hlsl.y-negate-3.vert.out | 2 +- .../iomap.blockOutVariableIn.2.vert.out | 4 +- .../iomap.blockOutVariableIn.vert.out | 4 +- Test/baseResults/iomap.crossStage.2.vert.out | 6 +- Test/baseResults/iomap.crossStage.vert.out | 4 +- Test/baseResults/iomap.crossStage.vk.vert.out | 6 +- .../iomap.variableOutBlockIn.2.vert.out | 4 +- .../iomap.variableOutBlockIn.vert.out | 4 +- ...link.vk.inconsistentGLPerVertex.0.vert.out | 2 +- .../link.vk.matchingPC.0.0.frag.out | 2 +- .../link.vk.multiBlocksValid.0.0.vert.out | 2 +- .../link.vk.multiBlocksValid.1.0.geom.out | 2 +- .../link.vk.pcNamingValid.0.0.vert.out | 2 +- Test/baseResults/link1.vk.frag.out | 2 +- ...onvertUToAccelerationStructureKHR.comp.out | 2 +- Test/baseResults/rayQuery-allOps.comp.out | 2 +- Test/baseResults/rayQuery-allOps.frag.out | 2 +- Test/baseResults/rayQuery-allOps.rgen.out | 2 +- Test/baseResults/rayQuery-global.rgen.out | 2 +- Test/baseResults/rayQuery-initialize.rgen.out | 2 +- Test/baseResults/rayQuery-no-cse.rgen.out | 2 +- Test/baseResults/rayQuery-types.comp.out | 2 +- Test/baseResults/rayQuery.rgen.out | 2 +- Test/baseResults/remap.basic.dcefunc.frag.out | 2 +- .../remap.basic.everything.frag.out | 2 +- Test/baseResults/remap.basic.none.frag.out | 2 +- Test/baseResults/remap.basic.strip.frag.out | 2 +- ...emap.hlsl.sample.basic.everything.frag.out | 2 +- .../remap.hlsl.sample.basic.none.frag.out | 2 +- .../remap.hlsl.sample.basic.strip.frag.out | 2 +- ...map.hlsl.templatetypes.everything.frag.out | 2 +- .../remap.hlsl.templatetypes.none.frag.out | 2 +- Test/baseResults/remap.if.everything.frag.out | 2 +- Test/baseResults/remap.if.none.frag.out | 2 +- .../remap.similar_1a.everything.frag.out | 2 +- .../remap.similar_1a.none.frag.out | 2 +- .../remap.similar_1b.everything.frag.out | 2 +- .../remap.similar_1b.none.frag.out | 2 +- Test/baseResults/remap.specconst.comp.out | 2 +- .../remap.switch.everything.frag.out | 2 +- Test/baseResults/remap.switch.none.frag.out | 2 +- .../remap.uniformarray.everything.frag.out | 2 +- .../remap.uniformarray.none.frag.out | 2 +- .../spv.1.3.8bitstorage-ssbo.vert.out | 2 +- .../spv.1.3.8bitstorage-ubo.vert.out | 2 +- Test/baseResults/spv.1.3.coopmat.comp.out | 2 +- Test/baseResults/spv.1.4.LoopControl.frag.out | 2 +- Test/baseResults/spv.1.4.NonWritable.frag.out | 2 +- .../spv.1.4.OpCopyLogical.comp.out | 2 +- .../spv.1.4.OpCopyLogical.funcall.frag.out | 2 +- .../spv.1.4.OpCopyLogicalBool.comp.out | 2 +- .../baseResults/spv.1.4.OpEntryPoint.frag.out | 2 +- ...spv.1.4.OpEntryPoint.opaqueParams.vert.out | 2 +- Test/baseResults/spv.1.4.OpSelect.frag.out | 2 +- .../spv.1.4.constructComposite.comp.out | 2 +- .../spv.1.4.funcall.array.frag.out | 2 +- Test/baseResults/spv.1.4.image.frag.out | 2 +- ...4.load.bool.array.interface.block.frag.out | 2 +- .../spv.1.4.sparseTexture.frag.out | 2 +- Test/baseResults/spv.1.4.texture.frag.out | 2 +- .../spv.1.6.conditionalDiscard.frag.out | 2 +- .../spv.1.6.helperInvocation.frag.out | 2 +- .../spv.1.6.samplerBuffer.frag.out | 2 +- Test/baseResults/spv.1.6.separate.frag.out | 2 +- .../baseResults/spv.1.6.specConstant.comp.out | 2 +- Test/baseResults/spv.100ops.frag.out | 2 +- Test/baseResults/spv.130.frag.out | 2 +- Test/baseResults/spv.140.frag.out | 2 +- Test/baseResults/spv.150.geom.out | 2 +- Test/baseResults/spv.150.vert.out | 2 +- .../baseResults/spv.16bitstorage-int.frag.out | 2 +- .../spv.16bitstorage-uint.frag.out | 2 +- Test/baseResults/spv.16bitstorage.frag.out | 2 +- Test/baseResults/spv.16bitxfb.vert.out | 2 +- Test/baseResults/spv.300BuiltIns.vert.out | 2 +- Test/baseResults/spv.300layout.frag.out | 2 +- Test/baseResults/spv.300layout.vert.out | 2 +- Test/baseResults/spv.300layoutp.vert.out | 2 +- Test/baseResults/spv.310.bitcast.frag.out | 2 +- Test/baseResults/spv.310.comp.out | 2 +- .../spv.320.meshShaderUserDefined.mesh.out | 2 +- Test/baseResults/spv.330.geom.out | 2 +- Test/baseResults/spv.400.frag.nanclamp.out | 2 +- Test/baseResults/spv.400.frag.out | 2 +- Test/baseResults/spv.400.tesc.out | 2 +- Test/baseResults/spv.400.tese.out | 2 +- Test/baseResults/spv.420.geom.out | 2 +- Test/baseResults/spv.430.frag.out | 2 +- Test/baseResults/spv.430.vert.out | 2 +- Test/baseResults/spv.450.geom.out | 2 +- Test/baseResults/spv.450.noRedecl.tesc.out | 2 +- Test/baseResults/spv.450.tesc.out | 2 +- Test/baseResults/spv.460.comp.out | 2 +- Test/baseResults/spv.460.frag.out | 2 +- Test/baseResults/spv.460.subgroupEXT.mesh.out | 2 +- Test/baseResults/spv.460.subgroupEXT.task.out | 2 +- Test/baseResults/spv.460.vert.out | 2 +- .../spv.8bit-16bit-construction.frag.out | 2 +- Test/baseResults/spv.8bitstorage-int.frag.out | 2 +- .../baseResults/spv.8bitstorage-ssbo.vert.out | 2 +- Test/baseResults/spv.8bitstorage-ubo.vert.out | 2 +- .../baseResults/spv.8bitstorage-uint.frag.out | 2 +- Test/baseResults/spv.AnyHitShader.rahit.out | 2 +- .../spv.AnyHitShaderMotion.rahit.out | 2 +- Test/baseResults/spv.AofA.frag.out | 2 +- .../spv.ClosestHitShader.rchit.out | 2 +- .../spv.ClosestHitShaderMotion.rchit.out | 2 +- .../spv.GeometryShaderPassthrough.geom.out | 2 +- Test/baseResults/spv.IntersectShader.rint.out | 2 +- .../spv.IntersectShaderMotion.rint.out | 2 +- Test/baseResults/spv.MissShader.rmiss.out | 2 +- .../spv.MissShaderMotion.rmiss.out | 2 +- Test/baseResults/spv.OVR_multiview.vert.out | 2 +- Test/baseResults/spv.Operations.frag.out | 2 +- Test/baseResults/spv.RayCallable.rcall.out | 2 +- Test/baseResults/spv.RayConstants.rgen.out | 2 +- Test/baseResults/spv.RayGenShader.rgen.out | 2 +- Test/baseResults/spv.RayGenShader11.rgen.out | 2 +- .../spv.RayGenShaderArray.rgen.out | 2 +- .../spv.RayGenShaderMotion.rgen.out | 2 +- ...pMemoryExplicitLayout.16BitAccess.comp.out | 2 +- ...upMemoryExplicitLayout.8BitAccess.comp.out | 2 +- ...upMemoryExplicitLayout.MultiBlock.comp.out | 2 +- ...roupMemoryExplicitLayout.NonBlock.comp.out | 2 +- ...pMemoryExplicitLayout.SingleBlock.comp.out | 2 +- ...kgroupMemoryExplicitLayout.scalar.comp.out | 2 +- ...kgroupMemoryExplicitLayout.std140.comp.out | 2 +- ...kgroupMemoryExplicitLayout.std430.comp.out | 2 +- Test/baseResults/spv.accessChain.frag.out | 2 +- Test/baseResults/spv.aggOps.frag.out | 2 +- Test/baseResults/spv.always-discard.frag.out | 2 +- Test/baseResults/spv.always-discard2.frag.out | 2 +- .../spv.arbPostDepthCoverage.frag.out | 2 +- Test/baseResults/spv.atomiAddEXT.task.out | 2 +- Test/baseResults/spv.atomic.comp.out | 2 +- .../spv.atomicAdd.bufferReference.comp.out | 2 +- Test/baseResults/spv.atomicFloat.comp.out | 2 +- Test/baseResults/spv.atomicInt64.comp.out | 2 +- .../baseResults/spv.atomicStoreInt64.comp.out | 2 +- Test/baseResults/spv.barrier.vert.out | 2 +- Test/baseResults/spv.bitCast.frag.out | 2 +- Test/baseResults/spv.bool.vert.out | 2 +- Test/baseResults/spv.boolInBlock.frag.out | 2 +- Test/baseResults/spv.branch-return.vert.out | 2 +- .../spv.buffer.autoassign.frag.out | 2 +- Test/baseResults/spv.bufferhandle1.frag.out | 2 +- Test/baseResults/spv.bufferhandle10.frag.out | 2 +- Test/baseResults/spv.bufferhandle11.frag.out | 2 +- Test/baseResults/spv.bufferhandle12.frag.out | 2 +- Test/baseResults/spv.bufferhandle13.frag.out | 2 +- Test/baseResults/spv.bufferhandle14.frag.out | 2 +- Test/baseResults/spv.bufferhandle15.frag.out | 2 +- Test/baseResults/spv.bufferhandle16.frag.out | 2 +- Test/baseResults/spv.bufferhandle18.frag.out | 2 +- Test/baseResults/spv.bufferhandle2.frag.out | 2 +- Test/baseResults/spv.bufferhandle3.frag.out | 2 +- Test/baseResults/spv.bufferhandle4.frag.out | 2 +- Test/baseResults/spv.bufferhandle5.frag.out | 2 +- Test/baseResults/spv.bufferhandle6.frag.out | 2 +- Test/baseResults/spv.bufferhandle7.frag.out | 2 +- Test/baseResults/spv.bufferhandle8.frag.out | 2 +- Test/baseResults/spv.bufferhandle9.frag.out | 2 +- .../spv.bufferhandleUvec2.frag.out | 2 +- Test/baseResults/spv.builtInXFB.vert.out | 2 +- ...v.builtin.PrimitiveShadingRateEXT.vert.out | 2 +- .../spv.builtin.ShadingRateEXT.frag.out | 2 +- .../spv.computeShaderDerivatives.comp.out | 2 +- .../spv.computeShaderDerivatives2.comp.out | 2 +- .../spv.conditionalDemote.frag.out | 2 +- .../spv.conditionalDiscard.frag.out | 2 +- Test/baseResults/spv.constConstruct.vert.out | 2 +- Test/baseResults/spv.constStruct.vert.out | 2 +- .../spv.constructComposite.comp.out | 2 +- .../spv.controlFlowAttributes.frag.out | 2 +- Test/baseResults/spv.conversion.frag.out | 2 +- Test/baseResults/spv.coopmat.comp.out | 2 +- Test/baseResults/spv.dataOut.frag.out | 2 +- Test/baseResults/spv.dataOutIndirect.frag.out | 2 +- Test/baseResults/spv.dataOutIndirect.vert.out | 2 +- .../spv.dead-after-continue.vert.out | 2 +- .../spv.dead-after-discard.frag.out | 2 +- .../spv.dead-after-loop-break.vert.out | 2 +- .../spv.dead-after-return.vert.out | 2 +- .../spv.dead-after-switch-break.vert.out | 2 +- ...ead-complex-continue-after-return.vert.out | 2 +- ...v.dead-complex-merge-after-return.vert.out | 2 +- Test/baseResults/spv.debugInfo.1.1.frag.out | 2 +- Test/baseResults/spv.debugInfo.frag.out | 2 +- Test/baseResults/spv.debugPrintf.frag.out | 2 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 2 +- Test/baseResults/spv.debuginfo.glsl.frag.out | 2 +- Test/baseResults/spv.debuginfo.glsl.geom.out | 2 +- Test/baseResults/spv.debuginfo.glsl.tesc.out | 2 +- Test/baseResults/spv.debuginfo.glsl.tese.out | 2 +- Test/baseResults/spv.debuginfo.glsl.vert.out | 2 +- Test/baseResults/spv.debuginfo.hlsl.comp.out | 2 +- Test/baseResults/spv.debuginfo.hlsl.frag.out | 2 +- Test/baseResults/spv.debuginfo.hlsl.geom.out | 2 +- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 2 +- Test/baseResults/spv.debuginfo.hlsl.tese.out | 2 +- Test/baseResults/spv.debuginfo.hlsl.vert.out | 2 +- Test/baseResults/spv.deepRvalue.frag.out | 2 +- Test/baseResults/spv.depthOut.frag.out | 2 +- Test/baseResults/spv.depthUnchanged.frag.out | 2 +- Test/baseResults/spv.deviceGroup.frag.out | 2 +- Test/baseResults/spv.discard-dce.frag.out | 2 +- Test/baseResults/spv.do-simple.vert.out | 2 +- .../spv.do-while-continue-break.vert.out | 2 +- Test/baseResults/spv.doWhileLoop.frag.out | 2 +- Test/baseResults/spv.double.comp.out | 2 +- Test/baseResults/spv.drawParams.vert.out | 2 +- .../spv.earlyReturnDiscard.frag.out | 2 +- Test/baseResults/spv.explicittypes.frag.out | 2 +- Test/baseResults/spv.ext.AccelDecl.frag.out | 2 +- .../spv.ext.AnyHitShader.rahit.out | 2 +- .../spv.ext.ClosestHitShader.rchit.out | 2 +- ...pv.ext.ClosestHitShader_Subgroup.rchit.out | 2 +- .../spv.ext.IntersectShader.rint.out | 2 +- Test/baseResults/spv.ext.MissShader.rmiss.out | 2 +- .../baseResults/spv.ext.RayCallable.rcall.out | 2 +- .../baseResults/spv.ext.RayConstants.rgen.out | 2 +- .../spv.ext.RayGenSBTlayout.rgen.out | 2 +- .../spv.ext.RayGenSBTlayout140.rgen.out | 2 +- .../spv.ext.RayGenSBTlayout430.rgen.out | 2 +- .../spv.ext.RayGenSBTlayoutscalar.rgen.out | 2 +- .../baseResults/spv.ext.RayGenShader.rgen.out | 2 +- .../spv.ext.RayGenShader11.rgen.out | 2 +- .../spv.ext.RayGenShaderArray.rgen.out | 2 +- .../baseResults/spv.ext.RayQueryDecl.frag.out | 2 +- Test/baseResults/spv.ext.World3x4.rahit.out | 2 +- .../spv.ext.meshShaderBuiltins.mesh.out | 2 +- .../spv.ext.meshShaderRedeclBuiltins.mesh.out | 2 +- .../spv.ext.meshShaderTaskMem.mesh.out | 2 +- .../spv.ext.meshShaderUserDefined.mesh.out | 2 +- .../spv.ext.meshTaskShader.task.out | 2 +- .../spv.extPostDepthCoverage.frag.out | 2 +- Test/baseResults/spv.float16.frag.out | 2 +- Test/baseResults/spv.float16Fetch.frag.out | 2 +- .../baseResults/spv.float16NoRelaxed.vert.out | 2 +- .../spv.float16convertonlyarith.comp.out | 2 +- .../spv.float16convertonlystorage.comp.out | 2 +- Test/baseResults/spv.float32.frag.out | 2 +- Test/baseResults/spv.float64.frag.out | 2 +- Test/baseResults/spv.flowControl.frag.out | 2 +- .../spv.for-complex-condition.vert.out | 2 +- .../spv.for-continue-break.vert.out | 2 +- Test/baseResults/spv.for-nobody.vert.out | 2 +- Test/baseResults/spv.for-notest.vert.out | 2 +- Test/baseResults/spv.for-simple.vert.out | 2 +- Test/baseResults/spv.forLoop.frag.out | 2 +- Test/baseResults/spv.forwardFun.frag.out | 2 +- .../spv.fragmentDensity-es.frag.out | 2 +- Test/baseResults/spv.fragmentDensity.frag.out | 2 +- .../spv.fragmentShaderBarycentric.frag.out | 2 +- .../spv.fragmentShaderBarycentric2.frag.out | 2 +- .../spv.fragmentShaderBarycentric3.frag.out | 2 +- .../spv.fragmentShaderBarycentric4.frag.out | 2 +- Test/baseResults/spv.fsi.frag.out | 2 +- Test/baseResults/spv.fullyCovered.frag.out | 2 +- Test/baseResults/spv.funcall.array.frag.out | 2 +- Test/baseResults/spv.functionCall.frag.out | 2 +- .../spv.functionNestedOpaque.vert.out | 2 +- .../spv.functionParameterTypes.frag.out | 2 +- .../spv.functionSemantics.frag.out | 2 +- Test/baseResults/spv.glFragColor.frag.out | 2 +- .../spv.glsl.register.autoassign.frag.out | 2 +- .../spv.glsl.register.noautoassign.frag.out | 2 +- Test/baseResults/spv.hlslDebugInfo.frag.out | 2 +- Test/baseResults/spv.hlslOffsets.vert.out | 2 +- Test/baseResults/spv.image.frag.out | 2 +- Test/baseResults/spv.imageAtomic64.comp.out | 2 +- Test/baseResults/spv.imageAtomic64.frag.out | 2 +- .../spv.imageLoadStoreLod.frag.out | 2 +- Test/baseResults/spv.int16.amd.frag.out | 2 +- Test/baseResults/spv.int16.frag.out | 2 +- Test/baseResults/spv.int32.frag.out | 2 +- Test/baseResults/spv.int64.frag.out | 2 +- Test/baseResults/spv.int8.frag.out | 2 +- Test/baseResults/spv.intOps.vert.out | 2 +- Test/baseResults/spv.intcoopmat.comp.out | 2 +- Test/baseResults/spv.interpOps.frag.out | 2 +- .../spv.intrinsicsSpirvByReference.vert.out | 2 +- .../spv.intrinsicsSpirvDecorate.frag.out | 2 +- .../spv.intrinsicsSpirvExecutionMode.frag.out | 2 +- .../spv.intrinsicsSpirvInstruction.vert.out | 2 +- .../spv.intrinsicsSpirvLiteral.vert.out | 2 +- .../spv.intrinsicsSpirvStorageClass.rchit.out | 2 +- .../spv.intrinsicsSpirvType.rgen.out | 2 +- .../spv.intrinsicsSpirvTypeLocalVar.vert.out | 2 +- Test/baseResults/spv.invariantAll.vert.out | 2 +- Test/baseResults/spv.layer.tese.out | 2 +- Test/baseResults/spv.layoutNested.vert.out | 2 +- Test/baseResults/spv.length.frag.out | 2 +- ...v.load.bool.array.interface.block.frag.out | 2 +- Test/baseResults/spv.localAggregates.frag.out | 2 +- Test/baseResults/spv.loops.frag.out | 2 +- Test/baseResults/spv.loopsArtificial.frag.out | 2 +- Test/baseResults/spv.matFun.vert.out | 2 +- Test/baseResults/spv.matrix.frag.out | 2 +- Test/baseResults/spv.matrix2.frag.out | 2 +- Test/baseResults/spv.memoryQualifier.frag.out | 2 +- .../spv.memoryScopeSemantics.comp.out | 2 +- .../spv.merge-unreachable.frag.out | 2 +- .../spv.meshShaderBuiltins.mesh.out | 2 +- .../spv.meshShaderPerViewBuiltins.mesh.out | 2 +- .../spv.meshShaderPerViewUserDefined.mesh.out | 2 +- .../spv.meshShaderRedeclBuiltins.mesh.out | 2 +- ...v.meshShaderRedeclPerViewBuiltins.mesh.out | 2 +- .../spv.meshShaderSharedMem.mesh.out | 2 +- .../spv.meshShaderTaskMem.mesh.out | 2 +- .../spv.meshShaderUserDefined.mesh.out | 2 +- Test/baseResults/spv.meshTaskShader.task.out | 2 +- Test/baseResults/spv.multiStruct.comp.out | 2 +- .../spv.multiStructFuncall.frag.out | 2 +- Test/baseResults/spv.multiView.frag.out | 2 +- .../spv.multiviewPerViewAttributes.tesc.out | 2 +- .../spv.multiviewPerViewAttributes.vert.out | 2 +- Test/baseResults/spv.newTexture.frag.out | 2 +- Test/baseResults/spv.noBuiltInLoc.vert.out | 2 +- .../spv.noDeadDecorations.vert.out | 2 +- Test/baseResults/spv.noWorkgroup.comp.out | 2 +- Test/baseResults/spv.nonSquare.vert.out | 2 +- Test/baseResults/spv.nonuniform.frag.out | 2 +- Test/baseResults/spv.nonuniform2.frag.out | 2 +- Test/baseResults/spv.nonuniform3.frag.out | 2 +- Test/baseResults/spv.nonuniform4.frag.out | 2 +- Test/baseResults/spv.nonuniform5.frag.out | 2 +- Test/baseResults/spv.nullInit.comp.out | 2 +- Test/baseResults/spv.offsets.frag.out | 2 +- Test/baseResults/spv.paramMemory.420.frag.out | 2 +- Test/baseResults/spv.paramMemory.frag.out | 2 +- Test/baseResults/spv.perprimitiveNV.frag.out | 2 +- Test/baseResults/spv.pp.line.frag.out | 2 +- Test/baseResults/spv.precise.tesc.out | 2 +- Test/baseResults/spv.precise.tese.out | 2 +- Test/baseResults/spv.precision.frag.out | 2 +- Test/baseResults/spv.precisionArgs.frag.out | 2 +- .../spv.precisionNonESSamp.frag.out | 2 +- .../baseResults/spv.precisionTexture.frag.out | 2 +- Test/baseResults/spv.prepost.frag.out | 2 +- .../spv.privateVariableTypes.frag.out | 2 +- Test/baseResults/spv.pushConstant.vert.out | 2 +- .../baseResults/spv.pushConstantAnon.vert.out | 2 +- Test/baseResults/spv.qualifiers.vert.out | 2 +- Test/baseResults/spv.queryL.frag.out | 2 +- .../baseResults/spv.queueFamilyScope.comp.out | 2 +- Test/baseResults/spv.rankShift.comp.out | 2 +- .../spv.register.autoassign-2.frag.out | 2 +- .../spv.register.autoassign.frag.out | 2 +- ...spv.register.autoassign.rangetest.frag.out | 2 +- .../spv.register.noautoassign.frag.out | 2 +- .../baseResults/spv.register.subpass.frag.out | 2 +- Test/baseResults/spv.rw.autoassign.frag.out | 2 +- Test/baseResults/spv.sample.frag.out | 2 +- Test/baseResults/spv.sampleId.frag.out | 2 +- .../spv.sampleMaskOverrideCoverage.frag.out | 2 +- Test/baseResults/spv.samplePosition.frag.out | 2 +- .../spv.samplerlessTextureFunctions.frag.out | 2 +- Test/baseResults/spv.scalarlayout.frag.out | 2 +- .../spv.scalarlayoutfloat16.frag.out | 2 +- Test/baseResults/spv.separate.frag.out | 2 +- Test/baseResults/spv.set.vert.out | 2 +- Test/baseResults/spv.shaderBallot.comp.out | 2 +- Test/baseResults/spv.shaderBallotAMD.comp.out | 2 +- .../baseResults/spv.shaderDrawParams.vert.out | 2 +- .../spv.shaderFragMaskAMD.frag.out | 2 +- Test/baseResults/spv.shaderGroupVote.comp.out | 2 +- .../spv.shaderImageFootprint.frag.out | 2 +- .../spv.shaderStencilExport.frag.out | 2 +- Test/baseResults/spv.shadingRate.frag.out | 2 +- Test/baseResults/spv.shiftOps.frag.out | 2 +- Test/baseResults/spv.shortCircuit.frag.out | 2 +- .../spv.simpleFunctionCall.frag.out | 2 +- Test/baseResults/spv.simpleMat.vert.out | 2 +- Test/baseResults/spv.smBuiltins.frag.out | 2 +- Test/baseResults/spv.smBuiltins.vert.out | 2 +- Test/baseResults/spv.sparseTexture.frag.out | 2 +- .../spv.sparseTextureClamp.frag.out | 2 +- Test/baseResults/spv.specConst.vert.out | 2 +- Test/baseResults/spv.specConstant.comp.out | 2 +- .../spv.specConstant.float16.comp.out | 2 +- .../spv.specConstant.int16.comp.out | 2 +- .../spv.specConstant.int8.comp.out | 2 +- Test/baseResults/spv.specConstant.vert.out | 2 +- .../spv.specConstantComposite.vert.out | 2 +- .../spv.specConstantOperations.vert.out | 2 +- Test/baseResults/spv.specTexture.frag.out | 2 +- Test/baseResults/spv.ssbo.autoassign.frag.out | 2 +- Test/baseResults/spv.ssboAlias.frag.out | 2 +- .../spv.stereoViewRendering.tesc.out | 2 +- .../spv.stereoViewRendering.vert.out | 2 +- Test/baseResults/spv.storageBuffer.vert.out | 2 +- .../baseResults/spv.structAssignment.frag.out | 2 +- Test/baseResults/spv.structDeref.frag.out | 2 +- Test/baseResults/spv.structure.frag.out | 2 +- Test/baseResults/spv.subgroup.frag.out | 2 +- Test/baseResults/spv.subgroup.geom.out | 2 +- Test/baseResults/spv.subgroup.tesc.out | 2 +- Test/baseResults/spv.subgroup.tese.out | 2 +- Test/baseResults/spv.subgroup.vert.out | 2 +- .../spv.subgroupArithmetic.comp.out | 2 +- Test/baseResults/spv.subgroupBallot.comp.out | 2 +- Test/baseResults/spv.subgroupBasic.comp.out | 2 +- .../spv.subgroupClustered.comp.out | 2 +- ...v.subgroupExtendedTypesArithmetic.comp.out | 2 +- .../spv.subgroupExtendedTypesBallot.comp.out | 2 +- ...pv.subgroupExtendedTypesClustered.comp.out | 2 +- ....subgroupExtendedTypesPartitioned.comp.out | 2 +- .../spv.subgroupExtendedTypesQuad.comp.out | 2 +- .../spv.subgroupExtendedTypesShuffle.comp.out | 2 +- ...groupExtendedTypesShuffleRelative.comp.out | 2 +- .../spv.subgroupExtendedTypesVote.comp.out | 2 +- .../spv.subgroupPartitioned.comp.out | 2 +- Test/baseResults/spv.subgroupQuad.comp.out | 2 +- Test/baseResults/spv.subgroupShuffle.comp.out | 2 +- .../spv.subgroupShuffleRelative.comp.out | 2 +- Test/baseResults/spv.subgroupSizeARB.frag.out | 2 +- .../spv.subgroupUniformControlFlow.vert.out | 2 +- Test/baseResults/spv.subgroupVote.comp.out | 2 +- Test/baseResults/spv.subpass.frag.out | 2 +- Test/baseResults/spv.switch.frag.out | 2 +- Test/baseResults/spv.swizzle.frag.out | 2 +- .../baseResults/spv.swizzleInversion.frag.out | 2 +- Test/baseResults/spv.terminate.frag.out | 2 +- Test/baseResults/spv.test.frag.out | 2 +- Test/baseResults/spv.test.vert.out | 2 +- Test/baseResults/spv.texture.frag.out | 2 +- .../spv.texture.sampler.transform.frag.out | 2 +- Test/baseResults/spv.texture.vert.out | 2 +- Test/baseResults/spv.textureBuffer.vert.out | 2 +- .../spv.textureGatherBiasLod.frag.out | 2 +- Test/baseResults/spv.types.frag.out | 2 +- Test/baseResults/spv.uint.frag.out | 2 +- Test/baseResults/spv.uniformArray.frag.out | 2 +- .../spv.uniformInitializer.frag.out | 2 +- .../spv.uniformInitializerStruct.frag.out | 2 +- Test/baseResults/spv.unit1.frag.out | 2 +- .../spv.variableArrayIndex.frag.out | 2 +- Test/baseResults/spv.varyingArray.frag.out | 2 +- .../spv.varyingArrayIndirect.frag.out | 2 +- Test/baseResults/spv.vecMatConstruct.frag.out | 2 +- Test/baseResults/spv.viewportArray2.tesc.out | 2 +- Test/baseResults/spv.viewportArray2.vert.out | 2 +- Test/baseResults/spv.viewportindex.tese.out | 2 +- Test/baseResults/spv.voidFunction.frag.out | 2 +- Test/baseResults/spv.volatileAtomic.comp.out | 2 +- Test/baseResults/spv.vulkan110.int16.frag.out | 2 +- .../spv.vulkan110.storageBuffer.vert.out | 2 +- .../spv.while-continue-break.vert.out | 2 +- Test/baseResults/spv.while-simple.vert.out | 2 +- Test/baseResults/spv.whileLoop.frag.out | 2 +- Test/baseResults/spv.xfb.vert.out | 2 +- Test/baseResults/spv.xfb2.vert.out | 2 +- Test/baseResults/spv.xfb3.vert.out | 2 +- ...xfbOffsetOnBlockMembersAssignment.vert.out | 2 +- ...fbOffsetOnStructMembersAssignment.vert.out | 2 +- ...rlapOffsetCheckWithBlockAndMember.vert.out | 2 +- .../spv.xfbStrideJustOnce.vert.out | 2 +- .../baseResults/vk.relaxed.changeSet.vert.out | 4 +- Test/baseResults/vk.relaxed.frag.out | 2 +- Test/baseResults/vk.relaxed.link1.frag.out | 2 +- .../vk.relaxed.stagelink.0.0.vert.out | 4 +- .../baseResults/vk.relaxed.stagelink.vert.out | 4 +- Test/baseResults/vulkan.ast.vert.out | 2 +- 800 files changed, 881 insertions(+), 869 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 292147c3c9..e7b6f145c1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.12.0 2022-10-12 + +### Other changes +* Update generator version +* Add support for GL_EXT_mesh_shader +* Add support for NonSemantic.Shader.DebugInfo.100 +* Make OpEmitMeshTasksEXT a terminal instruction +* Make gl_SubGroupARB a flat in int in Vulkan +* Add support for GL_EXT_opacity_micromap +* Add preamble support to C interface + ## 11.11.0 2022-08-11 ### Other changes diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 601c872e72..ccb4602be2 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -9538,7 +9538,8 @@ int GetSpirvGeneratorVersion() // return 7; // GLSL volatile keyword maps to both SPIR-V decorations Volatile and Coherent // return 8; // switch to new dead block eliminator; use OpUnreachable // return 9; // don't include opaque function parameters in OpEntryPoint global's operand list - return 10; // Generate OpFUnordNotEqual for != comparisons + // return 10; // Generate OpFUnordNotEqual for != comparisons + return 11; // Make OpEmitMeshTasksEXT a terminal instruction } // Write SPIR-V out to a binary file diff --git a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out index 2afdb104e2..100f6d7132 100644 --- a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out +++ b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out @@ -1,6 +1,6 @@ hlsl.aliasOpaque.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out index 7bb33e6074..be1637ff61 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out +++ b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out @@ -1,6 +1,6 @@ hlsl.flattenOpaque.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 190 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out index 0e8583f9f0..18d76949be 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out +++ b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out @@ -1,6 +1,6 @@ hlsl.flattenOpaqueInit.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 139 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out index fe858efde5..914d9b5dfc 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out +++ b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out @@ -1,6 +1,6 @@ hlsl.flattenOpaqueInitMix.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out index 46d3afba6e..2be41f04db 100644 --- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out +++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out @@ -1,6 +1,6 @@ hlsl.flattenSubset.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 67 Capability Shader diff --git a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out index 408c0eac91..656ff7385b 100644 --- a/Test/baseLegalResults/hlsl.flattenSubset2.frag.out +++ b/Test/baseLegalResults/hlsl.flattenSubset2.frag.out @@ -1,6 +1,6 @@ hlsl.flattenSubset2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader diff --git a/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out b/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out index 564f0f4cf8..936df717b8 100644 --- a/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out +++ b/Test/baseLegalResults/hlsl.intrinsics.evalfns.frag.out @@ -1,6 +1,6 @@ hlsl.intrinsics.evalfns.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 274 Capability Shader diff --git a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out index f45a76881f..b664098319 100644 --- a/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out +++ b/Test/baseLegalResults/hlsl.partialFlattenLocal.vert.out @@ -1,6 +1,6 @@ hlsl.partialFlattenLocal.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 164 Capability Shader diff --git a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out index 8975ed2a02..8f3ac26faf 100644 --- a/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out +++ b/Test/baseLegalResults/hlsl.partialFlattenMixed.vert.out @@ -1,6 +1,6 @@ hlsl.partialFlattenMixed.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/compoundsuffix.frag.hlsl b/Test/baseResults/compoundsuffix.frag.hlsl index 5a62488acb..f8dcfaa808 100644 --- a/Test/baseResults/compoundsuffix.frag.hlsl +++ b/Test/baseResults/compoundsuffix.frag.hlsl @@ -1,45 +1,45 @@ -compoundsuffix.frag.hlsl -// Module Version 10000 -// Generated by (magic number): 8000a -// Id's are bound by 22 - - Capability Shader - 1: ExtInstImport "GLSL.std.450" - MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 20 - ExecutionMode 4 OriginUpperLeft - Source HLSL 500 - Name 4 "main" - Name 11 "@main(vf4;" - Name 10 "fragColor" - Name 15 "fragColor" - Name 16 "param" - Name 20 "fragColor" - Decorate 20(fragColor) Location 0 - 2: TypeVoid - 3: TypeFunction 2 - 6: TypeFloat 32 - 7: TypeVector 6(float) 4 - 8: TypePointer Function 7(fvec4) - 9: TypeFunction 2 8(ptr) - 13: 6(float) Constant 1065353216 - 14: 7(fvec4) ConstantComposite 13 13 13 13 - 19: TypePointer Output 7(fvec4) - 20(fragColor): 19(ptr) Variable Output - 4(main): 2 Function None 3 - 5: Label - 15(fragColor): 8(ptr) Variable Function - 16(param): 8(ptr) Variable Function - 17: 2 FunctionCall 11(@main(vf4;) 16(param) - 18: 7(fvec4) Load 16(param) - Store 15(fragColor) 18 - 21: 7(fvec4) Load 15(fragColor) - Store 20(fragColor) 21 - Return - FunctionEnd - 11(@main(vf4;): 2 Function None 9 - 10(fragColor): 8(ptr) FunctionParameter - 12: Label - Store 10(fragColor) 14 - Return - FunctionEnd +compoundsuffix.frag.hlsl +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 22 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 20 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 11 "@main(vf4;" + Name 10 "fragColor" + Name 15 "fragColor" + Name 16 "param" + Name 20 "fragColor" + Decorate 20(fragColor) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeFunction 2 8(ptr) + 13: 6(float) Constant 1065353216 + 14: 7(fvec4) ConstantComposite 13 13 13 13 + 19: TypePointer Output 7(fvec4) + 20(fragColor): 19(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 15(fragColor): 8(ptr) Variable Function + 16(param): 8(ptr) Variable Function + 17: 2 FunctionCall 11(@main(vf4;) 16(param) + 18: 7(fvec4) Load 16(param) + Store 15(fragColor) 18 + 21: 7(fvec4) Load 15(fragColor) + Store 20(fragColor) 21 + Return + FunctionEnd + 11(@main(vf4;): 2 Function None 9 + 10(fragColor): 8(ptr) FunctionParameter + 12: Label + Store 10(fragColor) 14 + Return + FunctionEnd diff --git a/Test/baseResults/compoundsuffix.vert.glsl b/Test/baseResults/compoundsuffix.vert.glsl index 58354a409d..8535b478a7 100644 --- a/Test/baseResults/compoundsuffix.vert.glsl +++ b/Test/baseResults/compoundsuffix.vert.glsl @@ -1,15 +1,15 @@ -compoundsuffix.vert.glsl -Shader version: 100 -0:? Sequence -0:1 Function Definition: main( ( global void) -0:1 Function Parameters: -0:3 Sequence -0:3 move second child to first child ( temp highp 4-component vector of float) -0:3 'gl_Position' ( gl_Position highp 4-component vector of float Position) -0:3 Constant: -0:3 1.000000 -0:3 1.000000 -0:3 1.000000 -0:3 1.000000 -0:? Linker Objects - +compoundsuffix.vert.glsl +Shader version: 100 +0:? Sequence +0:1 Function Definition: main( ( global void) +0:1 Function Parameters: +0:3 Sequence +0:3 move second child to first child ( temp highp 4-component vector of float) +0:3 'gl_Position' ( gl_Position highp 4-component vector of float Position) +0:3 Constant: +0:3 1.000000 +0:3 1.000000 +0:3 1.000000 +0:3 1.000000 +0:? Linker Objects + diff --git a/Test/baseResults/glsl.autosampledtextures.frag.out b/Test/baseResults/glsl.autosampledtextures.frag.out index 2183898a8f..cbbb2021f3 100644 --- a/Test/baseResults/glsl.autosampledtextures.frag.out +++ b/Test/baseResults/glsl.autosampledtextures.frag.out @@ -1,6 +1,6 @@ glsl.autosampledtextures.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/glsl.entryPointRename.vert.bad.out b/Test/baseResults/glsl.entryPointRename.vert.bad.out index ce34fbf24e..ae5de6e354 100644 --- a/Test/baseResults/glsl.entryPointRename.vert.bad.out +++ b/Test/baseResults/glsl.entryPointRename.vert.bad.out @@ -2,7 +2,7 @@ glsl.entryPointRename.vert ERROR: Source entry point must be "main" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/glsl.entryPointRename.vert.out b/Test/baseResults/glsl.entryPointRename.vert.out index 71319c9087..bc142a58be 100644 --- a/Test/baseResults/glsl.entryPointRename.vert.out +++ b/Test/baseResults/glsl.entryPointRename.vert.out @@ -1,6 +1,6 @@ glsl.entryPointRename.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/glspv.esversion.vert.out b/Test/baseResults/glspv.esversion.vert.out index 2a0932abee..dedcae9eea 100644 --- a/Test/baseResults/glspv.esversion.vert.out +++ b/Test/baseResults/glspv.esversion.vert.out @@ -1,6 +1,6 @@ glspv.esversion.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 10 Capability Shader diff --git a/Test/baseResults/glspv.version.frag.out b/Test/baseResults/glspv.version.frag.out index a90d9eb8d0..13abe1d6c3 100644 --- a/Test/baseResults/glspv.version.frag.out +++ b/Test/baseResults/glspv.version.frag.out @@ -2,7 +2,7 @@ glspv.version.frag ERROR: #version: compilation for SPIR-V does not support the compatibility profile // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 6 Capability Shader diff --git a/Test/baseResults/hlsl.PointSize.geom.out b/Test/baseResults/hlsl.PointSize.geom.out index 2b3d9544bb..c81cf5b3e8 100644 --- a/Test/baseResults/hlsl.PointSize.geom.out +++ b/Test/baseResults/hlsl.PointSize.geom.out @@ -71,7 +71,7 @@ output primitive = line_strip Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Geometry diff --git a/Test/baseResults/hlsl.PointSize.vert.out b/Test/baseResults/hlsl.PointSize.vert.out index 12a4d6465d..5d646a4889 100644 --- a/Test/baseResults/hlsl.PointSize.vert.out +++ b/Test/baseResults/hlsl.PointSize.vert.out @@ -38,7 +38,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out float PointSize) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader diff --git a/Test/baseResults/hlsl.aliasOpaque.frag.out b/Test/baseResults/hlsl.aliasOpaque.frag.out index b7c2c9e256..7bea691745 100644 --- a/Test/baseResults/hlsl.aliasOpaque.frag.out +++ b/Test/baseResults/hlsl.aliasOpaque.frag.out @@ -143,7 +143,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out index dde6e29b38..b8ac133c00 100644 --- a/Test/baseResults/hlsl.amend.frag.out +++ b/Test/baseResults/hlsl.amend.frag.out @@ -160,7 +160,7 @@ gl_FragCoord origin is upper left 0:? 'm' ( global 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index 5b99f5df44..264a716c2e 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -345,7 +345,7 @@ gl_FragCoord origin is upper left 0:? 'ps_output.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 143 Capability Shader diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out index 269177294d..eab21a6a9e 100644 --- a/Test/baseResults/hlsl.array.frag.out +++ b/Test/baseResults/hlsl.array.frag.out @@ -290,7 +290,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=1) in 3-element array of 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 126 Capability Shader diff --git a/Test/baseResults/hlsl.array.implicit-size.frag.out b/Test/baseResults/hlsl.array.implicit-size.frag.out index 566bc9d5a6..ae36cef412 100644 --- a/Test/baseResults/hlsl.array.implicit-size.frag.out +++ b/Test/baseResults/hlsl.array.implicit-size.frag.out @@ -163,7 +163,7 @@ gl_FragCoord origin is upper left 0:? 'g_mystruct' ( global 2-element array of structure{ temp int i, temp float f}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out index fa2be6590a..7b9d962185 100644 --- a/Test/baseResults/hlsl.array.multidim.frag.out +++ b/Test/baseResults/hlsl.array.multidim.frag.out @@ -134,7 +134,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.assoc.frag.out b/Test/baseResults/hlsl.assoc.frag.out index 69a631e018..018da847c0 100644 --- a/Test/baseResults/hlsl.assoc.frag.out +++ b/Test/baseResults/hlsl.assoc.frag.out @@ -132,7 +132,7 @@ gl_FragCoord origin is upper left 0:? 'a5' (layout( location=4) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 58 Capability Shader diff --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out index 90c17402fe..ee183c8d52 100644 --- a/Test/baseResults/hlsl.attribute.expression.comp.out +++ b/Test/baseResults/hlsl.attribute.expression.comp.out @@ -64,7 +64,7 @@ local_size = (4, 6, 8) 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int bound}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.attribute.frag.out b/Test/baseResults/hlsl.attribute.frag.out index 0d1f709ba2..cdc3471605 100644 --- a/Test/baseResults/hlsl.attribute.frag.out +++ b/Test/baseResults/hlsl.attribute.frag.out @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/hlsl.attributeC11.frag.out b/Test/baseResults/hlsl.attributeC11.frag.out index 1b651a3b1c..c97c300a6c 100644 --- a/Test/baseResults/hlsl.attributeC11.frag.out +++ b/Test/baseResults/hlsl.attributeC11.frag.out @@ -95,7 +95,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 51 Capability Shader diff --git a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out index 244fe7d9eb..4726ddd0fc 100644 --- a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out +++ b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out @@ -56,7 +56,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/hlsl.autosampledtextures.frag.out b/Test/baseResults/hlsl.autosampledtextures.frag.out index 559c1306a2..070af8238c 100644 --- a/Test/baseResults/hlsl.autosampledtextures.frag.out +++ b/Test/baseResults/hlsl.autosampledtextures.frag.out @@ -1,6 +1,6 @@ hlsl.autosampledtextures.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/hlsl.basic.comp.out b/Test/baseResults/hlsl.basic.comp.out index d71429cfe4..7b02d252da 100644 --- a/Test/baseResults/hlsl.basic.comp.out +++ b/Test/baseResults/hlsl.basic.comp.out @@ -64,7 +64,7 @@ local_size = (1, 1, 1) 0:? 'gti' ( in 3-component vector of int LocalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/hlsl.basic.geom.out b/Test/baseResults/hlsl.basic.geom.out index 6dea921566..ef2b5ada81 100644 --- a/Test/baseResults/hlsl.basic.geom.out +++ b/Test/baseResults/hlsl.basic.geom.out @@ -188,7 +188,7 @@ output primitive = line_strip 0:? 'OutputStream.something' (layout( location=1) out int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 68 Capability Geometry diff --git a/Test/baseResults/hlsl.boolConv.vert.out b/Test/baseResults/hlsl.boolConv.vert.out index 6a8e516427..c4e3beb82a 100644 --- a/Test/baseResults/hlsl.boolConv.vert.out +++ b/Test/baseResults/hlsl.boolConv.vert.out @@ -204,7 +204,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 04a783c310..f95b8398c9 100644 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -147,7 +147,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index d4367a0956..7d896ceafa 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 148 Capability Shader diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out index 8a4be02d70..3ce857d9a9 100644 --- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 148 Capability Shader diff --git a/Test/baseResults/hlsl.cast.frag.out b/Test/baseResults/hlsl.cast.frag.out index 3efbd5287f..ef3957c024 100644 --- a/Test/baseResults/hlsl.cast.frag.out +++ b/Test/baseResults/hlsl.cast.frag.out @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.cbuffer-identifier.vert.out b/Test/baseResults/hlsl.cbuffer-identifier.vert.out index 93f35d628c..de9deea711 100644 --- a/Test/baseResults/hlsl.cbuffer-identifier.vert.out +++ b/Test/baseResults/hlsl.cbuffer-identifier.vert.out @@ -250,7 +250,7 @@ Shader version: 500 0:? 'input.Norm' (layout( location=1) in 3-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader diff --git a/Test/baseResults/hlsl.charLit.vert.out b/Test/baseResults/hlsl.charLit.vert.out index 2151d43ce1..6bde478830 100644 --- a/Test/baseResults/hlsl.charLit.vert.out +++ b/Test/baseResults/hlsl.charLit.vert.out @@ -146,7 +146,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 58 Capability Shader diff --git a/Test/baseResults/hlsl.clip.frag.out b/Test/baseResults/hlsl.clip.frag.out index 691b20ba8b..32cbb8bb8c 100644 --- a/Test/baseResults/hlsl.clip.frag.out +++ b/Test/baseResults/hlsl.clip.frag.out @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-1.frag.out b/Test/baseResults/hlsl.clipdistance-1.frag.out index 0cfee39c83..2a8d8c9e01 100644 --- a/Test/baseResults/hlsl.clipdistance-1.frag.out +++ b/Test/baseResults/hlsl.clipdistance-1.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? 'cull' ( in 1-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-1.geom.out b/Test/baseResults/hlsl.clipdistance-1.geom.out index a9a0b82a06..744b192ab0 100644 --- a/Test/baseResults/hlsl.clipdistance-1.geom.out +++ b/Test/baseResults/hlsl.clipdistance-1.geom.out @@ -550,7 +550,7 @@ output primitive = line_strip 0:? 'OutputStream.clip' ( out 2-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 118 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-1.vert.out b/Test/baseResults/hlsl.clipdistance-1.vert.out index 41478e161e..38d956fd3e 100644 --- a/Test/baseResults/hlsl.clipdistance-1.vert.out +++ b/Test/baseResults/hlsl.clipdistance-1.vert.out @@ -108,7 +108,7 @@ Shader version: 500 0:? 'cull' ( out 1-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-2.frag.out b/Test/baseResults/hlsl.clipdistance-2.frag.out index 15a9512ad6..6725955abf 100644 --- a/Test/baseResults/hlsl.clipdistance-2.frag.out +++ b/Test/baseResults/hlsl.clipdistance-2.frag.out @@ -290,7 +290,7 @@ gl_FragCoord origin is upper left 0:? 'cull' ( in 4-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-2.geom.out b/Test/baseResults/hlsl.clipdistance-2.geom.out index bb8d1373e3..11d5b67dd2 100644 --- a/Test/baseResults/hlsl.clipdistance-2.geom.out +++ b/Test/baseResults/hlsl.clipdistance-2.geom.out @@ -724,7 +724,7 @@ output primitive = line_strip 0:? 'OutputStream.clip' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 128 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-2.vert.out b/Test/baseResults/hlsl.clipdistance-2.vert.out index 5ccbb1e92e..3778ddd5ad 100644 --- a/Test/baseResults/hlsl.clipdistance-2.vert.out +++ b/Test/baseResults/hlsl.clipdistance-2.vert.out @@ -420,7 +420,7 @@ Shader version: 500 0:? 'cull' ( out 4-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-3.frag.out b/Test/baseResults/hlsl.clipdistance-3.frag.out index 1d9f54e8f9..76525ddf85 100644 --- a/Test/baseResults/hlsl.clipdistance-3.frag.out +++ b/Test/baseResults/hlsl.clipdistance-3.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? 'cull' ( in 2-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-3.geom.out b/Test/baseResults/hlsl.clipdistance-3.geom.out index 5fa7df7202..42ce516a31 100644 --- a/Test/baseResults/hlsl.clipdistance-3.geom.out +++ b/Test/baseResults/hlsl.clipdistance-3.geom.out @@ -630,7 +630,7 @@ output primitive = line_strip 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 127 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-3.vert.out b/Test/baseResults/hlsl.clipdistance-3.vert.out index 1882a5a3a2..9cebfc5b5e 100644 --- a/Test/baseResults/hlsl.clipdistance-3.vert.out +++ b/Test/baseResults/hlsl.clipdistance-3.vert.out @@ -136,7 +136,7 @@ Shader version: 500 0:? 'cull' ( out 2-element array of float CullDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 51 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-4.frag.out b/Test/baseResults/hlsl.clipdistance-4.frag.out index 5cef56444b..f801eb2c0d 100644 --- a/Test/baseResults/hlsl.clipdistance-4.frag.out +++ b/Test/baseResults/hlsl.clipdistance-4.frag.out @@ -174,7 +174,7 @@ gl_FragCoord origin is upper left 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-4.geom.out b/Test/baseResults/hlsl.clipdistance-4.geom.out index e94230169f..8dbe89ad2f 100644 --- a/Test/baseResults/hlsl.clipdistance-4.geom.out +++ b/Test/baseResults/hlsl.clipdistance-4.geom.out @@ -612,7 +612,7 @@ output primitive = line_strip 0:? 'OutputStream.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 130 Capability Geometry diff --git a/Test/baseResults/hlsl.clipdistance-4.vert.out b/Test/baseResults/hlsl.clipdistance-4.vert.out index 8e8fe6da28..4c291a1f50 100644 --- a/Test/baseResults/hlsl.clipdistance-4.vert.out +++ b/Test/baseResults/hlsl.clipdistance-4.vert.out @@ -270,7 +270,7 @@ Shader version: 500 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-5.frag.out b/Test/baseResults/hlsl.clipdistance-5.frag.out index ab366e54af..9d9042d210 100644 --- a/Test/baseResults/hlsl.clipdistance-5.frag.out +++ b/Test/baseResults/hlsl.clipdistance-5.frag.out @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left 0:? 'v.ClipRect' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-5.vert.out b/Test/baseResults/hlsl.clipdistance-5.vert.out index 6dbe0a669e..deb6ad884a 100644 --- a/Test/baseResults/hlsl.clipdistance-5.vert.out +++ b/Test/baseResults/hlsl.clipdistance-5.vert.out @@ -318,7 +318,7 @@ Shader version: 500 0:? '@entryPointOutput.ClipRect' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-6.frag.out b/Test/baseResults/hlsl.clipdistance-6.frag.out index 770f990b8e..99798d320c 100644 --- a/Test/baseResults/hlsl.clipdistance-6.frag.out +++ b/Test/baseResults/hlsl.clipdistance-6.frag.out @@ -282,7 +282,7 @@ gl_FragCoord origin is upper left 0:? 'v.clip1' ( in 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-6.vert.out b/Test/baseResults/hlsl.clipdistance-6.vert.out index 1adbdfcadc..389f867111 100644 --- a/Test/baseResults/hlsl.clipdistance-6.vert.out +++ b/Test/baseResults/hlsl.clipdistance-6.vert.out @@ -428,7 +428,7 @@ Shader version: 500 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 86 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-7.frag.out b/Test/baseResults/hlsl.clipdistance-7.frag.out index 9f5e5193d4..9b8c655ded 100644 --- a/Test/baseResults/hlsl.clipdistance-7.frag.out +++ b/Test/baseResults/hlsl.clipdistance-7.frag.out @@ -270,7 +270,7 @@ gl_FragCoord origin is upper left 0:? 'v.clip1' ( in 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-7.vert.out b/Test/baseResults/hlsl.clipdistance-7.vert.out index 13bc844b0b..55a16c11b1 100644 --- a/Test/baseResults/hlsl.clipdistance-7.vert.out +++ b/Test/baseResults/hlsl.clipdistance-7.vert.out @@ -384,7 +384,7 @@ Shader version: 500 0:? '@entryPointOutput.clip1' ( out 8-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 81 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-8.frag.out b/Test/baseResults/hlsl.clipdistance-8.frag.out index 8f2a9c27fb..ed82cfdef0 100644 --- a/Test/baseResults/hlsl.clipdistance-8.frag.out +++ b/Test/baseResults/hlsl.clipdistance-8.frag.out @@ -186,7 +186,7 @@ gl_FragCoord origin is upper left 0:? 'v.clip1' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-8.vert.out b/Test/baseResults/hlsl.clipdistance-8.vert.out index fbc2c2a5ad..9df6618988 100644 --- a/Test/baseResults/hlsl.clipdistance-8.vert.out +++ b/Test/baseResults/hlsl.clipdistance-8.vert.out @@ -240,7 +240,7 @@ Shader version: 500 0:? '@entryPointOutput.clip1' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-9.frag.out b/Test/baseResults/hlsl.clipdistance-9.frag.out index b42727f822..9c62b34f54 100644 --- a/Test/baseResults/hlsl.clipdistance-9.frag.out +++ b/Test/baseResults/hlsl.clipdistance-9.frag.out @@ -144,7 +144,7 @@ gl_FragCoord origin is upper left 0:? 'clip0' ( in 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 68 Capability Shader diff --git a/Test/baseResults/hlsl.clipdistance-9.vert.out b/Test/baseResults/hlsl.clipdistance-9.vert.out index 7df30643ad..4e997c68a0 100644 --- a/Test/baseResults/hlsl.clipdistance-9.vert.out +++ b/Test/baseResults/hlsl.clipdistance-9.vert.out @@ -194,7 +194,7 @@ Shader version: 500 0:? 'clip0' ( out 4-element array of float ClipDistance) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 67 Capability Shader diff --git a/Test/baseResults/hlsl.color.hull.tesc.out b/Test/baseResults/hlsl.color.hull.tesc.out index e3c0a3e665..7a1f830533 100644 --- a/Test/baseResults/hlsl.color.hull.tesc.out +++ b/Test/baseResults/hlsl.color.hull.tesc.out @@ -530,7 +530,7 @@ triangle order = cw 0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 159 Capability Tessellation diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out index 9fec433834..720aea24c3 100644 --- a/Test/baseResults/hlsl.comparison.vec.frag.out +++ b/Test/baseResults/hlsl.comparison.vec.frag.out @@ -262,7 +262,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out index 99f2538c6e..e16068174d 100644 --- a/Test/baseResults/hlsl.conditional.frag.out +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -522,7 +522,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 206 Capability Shader diff --git a/Test/baseResults/hlsl.constantbuffer.frag.out b/Test/baseResults/hlsl.constantbuffer.frag.out index 12e819bc5d..78ad57705e 100644 --- a/Test/baseResults/hlsl.constantbuffer.frag.out +++ b/Test/baseResults/hlsl.constantbuffer.frag.out @@ -133,7 +133,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/hlsl.constructArray.vert.out b/Test/baseResults/hlsl.constructArray.vert.out index b070735a63..230efbc151 100644 --- a/Test/baseResults/hlsl.constructArray.vert.out +++ b/Test/baseResults/hlsl.constructArray.vert.out @@ -268,7 +268,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader diff --git a/Test/baseResults/hlsl.constructexpr.frag.out b/Test/baseResults/hlsl.constructexpr.frag.out index 7b25ae8434..367a03a3c3 100644 --- a/Test/baseResults/hlsl.constructexpr.frag.out +++ b/Test/baseResults/hlsl.constructexpr.frag.out @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/hlsl.constructimat.frag.out b/Test/baseResults/hlsl.constructimat.frag.out index a76ac6a9c0..4f49b87e59 100644 --- a/Test/baseResults/hlsl.constructimat.frag.out +++ b/Test/baseResults/hlsl.constructimat.frag.out @@ -545,7 +545,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/hlsl.coverage.frag.out b/Test/baseResults/hlsl.coverage.frag.out index 7c44e1fb24..681118fd7c 100644 --- a/Test/baseResults/hlsl.coverage.frag.out +++ b/Test/baseResults/hlsl.coverage.frag.out @@ -119,7 +119,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/hlsl.dashI.vert.out b/Test/baseResults/hlsl.dashI.vert.out index 73514438a2..ccd530af40 100644 --- a/Test/baseResults/hlsl.dashI.vert.out +++ b/Test/baseResults/hlsl.dashI.vert.out @@ -1,6 +1,6 @@ hlsl.dashI.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out index 9ca01460bb..1862266813 100644 --- a/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out +++ b/Test/baseResults/hlsl.deadFunctionMissingBody.vert.out @@ -1,6 +1,6 @@ hlsl.deadFunctionMissingBody.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/hlsl.depthGreater.frag.out b/Test/baseResults/hlsl.depthGreater.frag.out index 31a70068e1..5128a0ec47 100644 --- a/Test/baseResults/hlsl.depthGreater.frag.out +++ b/Test/baseResults/hlsl.depthGreater.frag.out @@ -50,7 +50,7 @@ using depth_greater 0:? 'depth' ( out float FragDepth) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/hlsl.depthLess.frag.out b/Test/baseResults/hlsl.depthLess.frag.out index d062c7748b..771c477ad4 100644 --- a/Test/baseResults/hlsl.depthLess.frag.out +++ b/Test/baseResults/hlsl.depthLess.frag.out @@ -42,7 +42,7 @@ using depth_less 0:? '@entryPointOutput' ( out float FragDepth) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader diff --git a/Test/baseResults/hlsl.discard.frag.out b/Test/baseResults/hlsl.discard.frag.out index 41766f6284..7a6c6f2697 100644 --- a/Test/baseResults/hlsl.discard.frag.out +++ b/Test/baseResults/hlsl.discard.frag.out @@ -108,7 +108,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.doLoop.frag.out b/Test/baseResults/hlsl.doLoop.frag.out index 0d93e8d9f3..82a96b5f55 100644 --- a/Test/baseResults/hlsl.doLoop.frag.out +++ b/Test/baseResults/hlsl.doLoop.frag.out @@ -198,7 +198,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader diff --git a/Test/baseResults/hlsl.domain.1.tese.out b/Test/baseResults/hlsl.domain.1.tese.out index 4e53e7ce65..738f7cd0e4 100644 --- a/Test/baseResults/hlsl.domain.1.tese.out +++ b/Test/baseResults/hlsl.domain.1.tese.out @@ -428,7 +428,7 @@ triangle order = none 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 125 Capability Tessellation diff --git a/Test/baseResults/hlsl.domain.2.tese.out b/Test/baseResults/hlsl.domain.2.tese.out index 05f934f19d..ddb176a0fc 100644 --- a/Test/baseResults/hlsl.domain.2.tese.out +++ b/Test/baseResults/hlsl.domain.2.tese.out @@ -426,7 +426,7 @@ triangle order = none 0:? 'pcf_data.foo' (layout( location=2) patch in float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 120 Capability Tessellation diff --git a/Test/baseResults/hlsl.domain.3.tese.out b/Test/baseResults/hlsl.domain.3.tese.out index c9b985de5f..1dc7b2fd34 100644 --- a/Test/baseResults/hlsl.domain.3.tese.out +++ b/Test/baseResults/hlsl.domain.3.tese.out @@ -358,7 +358,7 @@ triangle order = none 0:? 'pcf_data.flInsideTessFactor' ( patch in 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 116 Capability Tessellation diff --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out index 34ca0062c8..a629bdc7ee 100644 --- a/Test/baseResults/hlsl.earlydepthstencil.frag.out +++ b/Test/baseResults/hlsl.earlydepthstencil.frag.out @@ -108,7 +108,7 @@ using early_fragment_tests 0:? 'input.Position' ( in 4-component vector of float FragCoord) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.emptystruct.init.vert.out b/Test/baseResults/hlsl.emptystruct.init.vert.out index 9f5c785741..07baddfc05 100644 --- a/Test/baseResults/hlsl.emptystruct.init.vert.out +++ b/Test/baseResults/hlsl.emptystruct.init.vert.out @@ -60,7 +60,7 @@ Shader version: 500 0:? 'vertexIndex' (layout( location=0) in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/hlsl.emptystructreturn.frag.out b/Test/baseResults/hlsl.emptystructreturn.frag.out index 2a4cabebd3..de77486579 100644 --- a/Test/baseResults/hlsl.emptystructreturn.frag.out +++ b/Test/baseResults/hlsl.emptystructreturn.frag.out @@ -51,7 +51,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.emptystructreturn.vert.out b/Test/baseResults/hlsl.emptystructreturn.vert.out index ad1efa7972..22dc2cf0bd 100644 --- a/Test/baseResults/hlsl.emptystructreturn.vert.out +++ b/Test/baseResults/hlsl.emptystructreturn.vert.out @@ -49,7 +49,7 @@ Shader version: 500 Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.entry-in.frag.out b/Test/baseResults/hlsl.entry-in.frag.out index 4c322496c5..e86def4cdb 100644 --- a/Test/baseResults/hlsl.entry-in.frag.out +++ b/Test/baseResults/hlsl.entry-in.frag.out @@ -166,7 +166,7 @@ gl_FragCoord origin is upper left 0:? 'i.i2' (layout( location=1) flat in 2-component vector of int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 74 Capability Shader diff --git a/Test/baseResults/hlsl.entry-out.frag.out b/Test/baseResults/hlsl.entry-out.frag.out index a8b47e9e9f..5f162b12e2 100644 --- a/Test/baseResults/hlsl.entry-out.frag.out +++ b/Test/baseResults/hlsl.entry-out.frag.out @@ -244,7 +244,7 @@ gl_FragCoord origin is upper left 0:? 'out3.i' (layout( location=5) out 2-component vector of int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 89 Capability Shader diff --git a/Test/baseResults/hlsl.entry.rename.frag.out b/Test/baseResults/hlsl.entry.rename.frag.out index 2fd15d1ddf..d635c67a53 100644 --- a/Test/baseResults/hlsl.entry.rename.frag.out +++ b/Test/baseResults/hlsl.entry.rename.frag.out @@ -72,7 +72,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out index 3ca773fe6b..5c89f7e066 100644 --- a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out +++ b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out @@ -1,6 +1,6 @@ hlsl.explicitDescriptorSet.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out index 9ba0d93ff2..1b0e45f026 100644 --- a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out +++ b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out @@ -1,6 +1,6 @@ hlsl.explicitDescriptorSet.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.flatten.return.frag.out b/Test/baseResults/hlsl.flatten.return.frag.out index 9a51f1fceb..f27646299e 100644 --- a/Test/baseResults/hlsl.flatten.return.frag.out +++ b/Test/baseResults/hlsl.flatten.return.frag.out @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.other_struct_member3' (layout( location=3) out float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 49 Capability Shader diff --git a/Test/baseResults/hlsl.flattenOpaque.frag.out b/Test/baseResults/hlsl.flattenOpaque.frag.out index 9a29081b7c..589b1e1ff7 100644 --- a/Test/baseResults/hlsl.flattenOpaque.frag.out +++ b/Test/baseResults/hlsl.flattenOpaque.frag.out @@ -295,7 +295,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 122 Capability Shader diff --git a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out index 10e8345013..dbd6446920 100644 --- a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out +++ b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out @@ -165,7 +165,7 @@ Shader version: 500 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 82 Capability Shader diff --git a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out index c8d0b166e6..66084f677d 100644 --- a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out +++ b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out @@ -107,7 +107,7 @@ Shader version: 500 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 59 Capability Shader diff --git a/Test/baseResults/hlsl.flattenSubset.frag.out b/Test/baseResults/hlsl.flattenSubset.frag.out index 7ec229a498..65d3467760 100644 --- a/Test/baseResults/hlsl.flattenSubset.frag.out +++ b/Test/baseResults/hlsl.flattenSubset.frag.out @@ -115,7 +115,7 @@ gl_FragCoord origin is upper left 0:? 'vpos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.flattenSubset2.frag.out b/Test/baseResults/hlsl.flattenSubset2.frag.out index c319637832..c8a919328c 100644 --- a/Test/baseResults/hlsl.flattenSubset2.frag.out +++ b/Test/baseResults/hlsl.flattenSubset2.frag.out @@ -149,7 +149,7 @@ gl_FragCoord origin is upper left 0:? 'vpos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.float1.frag.out b/Test/baseResults/hlsl.float1.frag.out index 00bdea9414..65f69da47e 100644 --- a/Test/baseResults/hlsl.float1.frag.out +++ b/Test/baseResults/hlsl.float1.frag.out @@ -65,7 +65,7 @@ gl_FragCoord origin is upper left 0:? 'scalar' ( global float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out index 0dbd935a9a..5fcc3c1450 100644 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -42,7 +42,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform 4-component vector of float AmbientColor, uniform bool ff1, layout( offset=20) uniform float ff2, layout( binding=0 offset=32) uniform 4-component vector of float ff3, layout( binding=1 offset=48) uniform 4-component vector of float ff4}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/hlsl.forLoop.frag.out b/Test/baseResults/hlsl.forLoop.frag.out index 7bce346934..f1aa20b31f 100644 --- a/Test/baseResults/hlsl.forLoop.frag.out +++ b/Test/baseResults/hlsl.forLoop.frag.out @@ -510,7 +510,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 240 Capability Shader diff --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out index e6eebbf29f..3edbbb6eea 100644 --- a/Test/baseResults/hlsl.format.rwtexture.frag.out +++ b/Test/baseResults/hlsl.format.rwtexture.frag.out @@ -184,7 +184,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 160 Capability Shader diff --git a/Test/baseResults/hlsl.fraggeom.frag.out b/Test/baseResults/hlsl.fraggeom.frag.out index d86fa96919..400f530e6e 100644 --- a/Test/baseResults/hlsl.fraggeom.frag.out +++ b/Test/baseResults/hlsl.fraggeom.frag.out @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out index e39d5a2a74..13b7ebb34a 100644 --- a/Test/baseResults/hlsl.gather.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -262,7 +262,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 124 Capability Shader diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out index 99efd61455..0aa00f7412 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -258,7 +258,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 135 Capability Shader diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index 96525e0c9b..d743074e0c 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -220,7 +220,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 126 Capability Shader diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out index 59bd8da88b..9656db5712 100644 --- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -208,7 +208,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 114 Capability Shader diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out index 942bd923b3..2e6221a2a1 100644 --- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -202,7 +202,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 97 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out index 75ea03686c..904aaece92 100644 --- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -750,7 +750,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 255 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out index 886ad73784..f8fa2f4607 100644 --- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -758,7 +758,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 265 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out index b86cd222af..63cb39fcb6 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -1263,7 +1263,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 399 Capability Shader diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out index 1fa728a7f6..da83e01170 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -1255,7 +1255,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 389 Capability Shader diff --git a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out index a858f15d8f..ff834ec45c 100644 --- a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out @@ -456,7 +456,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 164 Capability Shader diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out index ba023599e7..9e1d5439c4 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out @@ -2318,7 +2318,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 550 Capability Shader diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out index 96a1cc1558..a7d27a867e 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -116,7 +116,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out index 1cce0cc03f..7af13b232b 100644 --- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out @@ -718,7 +718,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 232 Capability Shader diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out index 5c49931883..f08a91cd49 100644 --- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -580,7 +580,7 @@ using depth_any 0:? 'sample' (layout( location=0) flat in int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/hlsl.global-const-init.frag.out b/Test/baseResults/hlsl.global-const-init.frag.out index 26895bba70..0510b3e83e 100644 --- a/Test/baseResults/hlsl.global-const-init.frag.out +++ b/Test/baseResults/hlsl.global-const-init.frag.out @@ -102,7 +102,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.groupid.comp.out b/Test/baseResults/hlsl.groupid.comp.out index bf39d11a40..39c5fede0b 100644 --- a/Test/baseResults/hlsl.groupid.comp.out +++ b/Test/baseResults/hlsl.groupid.comp.out @@ -82,7 +82,7 @@ local_size = (8, 8, 1) 0:? 'vGroupId' ( in 3-component vector of uint WorkGroupID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.gs-hs-mix.tesc.out b/Test/baseResults/hlsl.gs-hs-mix.tesc.out index c9496ac1e5..5071a4745f 100644 --- a/Test/baseResults/hlsl.gs-hs-mix.tesc.out +++ b/Test/baseResults/hlsl.gs-hs-mix.tesc.out @@ -986,7 +986,7 @@ triangle order = ccw 0:? '@patchConstantOutput.NormalWS[2]' (layout( location=3) patch out 3-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 236 Capability Tessellation diff --git a/Test/baseResults/hlsl.hlslOffset.vert.out b/Test/baseResults/hlsl.hlslOffset.vert.out index 09545c88cc..0f7b09bfe9 100644 --- a/Test/baseResults/hlsl.hlslOffset.vert.out +++ b/Test/baseResults/hlsl.hlslOffset.vert.out @@ -26,7 +26,7 @@ Shader version: 500 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float m0, layout( row_major std140) uniform 3-component vector of float m4, layout( row_major std140) uniform float m16, layout( row_major std140 offset=20) uniform 3-component vector of float m20, layout( row_major std140 offset=36) uniform 3-component vector of float m36, layout( row_major std140 offset=56) uniform 2-component vector of float m56, layout( row_major std140) uniform float m64, layout( row_major std140) uniform 2-component vector of float m68, layout( row_major std140) uniform float m76, layout( row_major std140) uniform float m80, layout( row_major std140) uniform 1-element array of 2-component vector of float m96}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/hlsl.hull.1.tesc.out b/Test/baseResults/hlsl.hull.1.tesc.out index cba0f8bb24..4188942065 100644 --- a/Test/baseResults/hlsl.hull.1.tesc.out +++ b/Test/baseResults/hlsl.hull.1.tesc.out @@ -324,7 +324,7 @@ vertex spacing = equal_spacing 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 104 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.2.tesc.out b/Test/baseResults/hlsl.hull.2.tesc.out index 4e8a50c2d9..0d08b68197 100644 --- a/Test/baseResults/hlsl.hull.2.tesc.out +++ b/Test/baseResults/hlsl.hull.2.tesc.out @@ -320,7 +320,7 @@ vertex spacing = equal_spacing 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 106 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.3.tesc.out b/Test/baseResults/hlsl.hull.3.tesc.out index f40a79e49d..808edd3a8e 100644 --- a/Test/baseResults/hlsl.hull.3.tesc.out +++ b/Test/baseResults/hlsl.hull.3.tesc.out @@ -320,7 +320,7 @@ vertex spacing = equal_spacing 0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 106 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.4.tesc.out b/Test/baseResults/hlsl.hull.4.tesc.out index aa766ed481..bffc464626 100644 --- a/Test/baseResults/hlsl.hull.4.tesc.out +++ b/Test/baseResults/hlsl.hull.4.tesc.out @@ -458,7 +458,7 @@ triangle order = cw 0:? '@patchConstantOutput.fInsideTessFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 124 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.6.tesc.out b/Test/baseResults/hlsl.hull.6.tesc.out index efb6e5b1b9..b673a8c588 100644 --- a/Test/baseResults/hlsl.hull.6.tesc.out +++ b/Test/baseResults/hlsl.hull.6.tesc.out @@ -450,7 +450,7 @@ triangle order = ccw 0:? '@patchConstantOutput.Edges' ( patch out 4-element array of float TessLevelOuter) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 142 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out index 70881e9ba7..4e706c0f60 100644 --- a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out +++ b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out @@ -472,7 +472,7 @@ triangle order = cw 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 135 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out index d59e16304d..fd7cf0b641 100644 --- a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out +++ b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out @@ -490,7 +490,7 @@ triangle order = cw 0:? '@patchConstantOutput.flInFactor' ( patch out 2-element array of float TessLevelInner) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 137 Capability Tessellation diff --git a/Test/baseResults/hlsl.hull.void.tesc.out b/Test/baseResults/hlsl.hull.void.tesc.out index 224936040f..244d1fc7c3 100644 --- a/Test/baseResults/hlsl.hull.void.tesc.out +++ b/Test/baseResults/hlsl.hull.void.tesc.out @@ -184,7 +184,7 @@ triangle order = ccw 0:? 'InvocationId' ( in uint InvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 67 Capability Tessellation diff --git a/Test/baseResults/hlsl.identifier.sample.frag.out b/Test/baseResults/hlsl.identifier.sample.frag.out index e0a89aa4a4..bde7fdb8a4 100644 --- a/Test/baseResults/hlsl.identifier.sample.frag.out +++ b/Test/baseResults/hlsl.identifier.sample.frag.out @@ -86,7 +86,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/hlsl.if.frag.out b/Test/baseResults/hlsl.if.frag.out index e77c7ac37b..fafad92f6f 100644 --- a/Test/baseResults/hlsl.if.frag.out +++ b/Test/baseResults/hlsl.if.frag.out @@ -240,7 +240,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 117 Capability Shader diff --git a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out index ff201eb077..6573820d2d 100644 --- a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out +++ b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out @@ -410,7 +410,7 @@ local_size = (8, 8, 8) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 186 Capability Shader diff --git a/Test/baseResults/hlsl.imageload-subvec4.comp.out b/Test/baseResults/hlsl.imageload-subvec4.comp.out index 4d038a1958..d54075f166 100644 --- a/Test/baseResults/hlsl.imageload-subvec4.comp.out +++ b/Test/baseResults/hlsl.imageload-subvec4.comp.out @@ -266,7 +266,7 @@ local_size = (8, 8, 8) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 138 Capability Shader diff --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out index dd93b7f1e3..381e835c9a 100644 --- a/Test/baseResults/hlsl.implicitBool.frag.out +++ b/Test/baseResults/hlsl.implicitBool.frag.out @@ -332,7 +332,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 139 Capability Shader diff --git a/Test/baseResults/hlsl.include.vert.out b/Test/baseResults/hlsl.include.vert.out index f46658d294..95a5b906f5 100644 --- a/Test/baseResults/hlsl.include.vert.out +++ b/Test/baseResults/hlsl.include.vert.out @@ -1,6 +1,6 @@ ../Test/hlsl.include.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.inf.vert.out b/Test/baseResults/hlsl.inf.vert.out index bb9a18497c..50f6d56d9b 100644 --- a/Test/baseResults/hlsl.inf.vert.out +++ b/Test/baseResults/hlsl.inf.vert.out @@ -112,7 +112,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out index f604f0a096..35a89f045b 100644 --- a/Test/baseResults/hlsl.init.frag.out +++ b/Test/baseResults/hlsl.init.frag.out @@ -331,7 +331,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float a, layout( row_major std140) uniform float b, layout( row_major std140) uniform float c}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 110 Capability Shader diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out index 5039333ba0..b8b7afcdab 100644 --- a/Test/baseResults/hlsl.init2.frag.out +++ b/Test/baseResults/hlsl.init2.frag.out @@ -358,7 +358,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 112 Capability Shader diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out index 25186cb0ef..931208b9be 100644 --- a/Test/baseResults/hlsl.inoutquals.frag.out +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -214,7 +214,7 @@ using depth_any 0:? 'sampleMask' ( out 1-element array of int SampleMaskIn) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 92 Capability Shader diff --git a/Test/baseResults/hlsl.instance.geom.out b/Test/baseResults/hlsl.instance.geom.out index 5fbffd9ac0..f2299ee741 100644 --- a/Test/baseResults/hlsl.instance.geom.out +++ b/Test/baseResults/hlsl.instance.geom.out @@ -282,7 +282,7 @@ output primitive = triangle_strip 0:? 'output.m_color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 86 Capability Geometry diff --git a/Test/baseResults/hlsl.int.dot.frag.out b/Test/baseResults/hlsl.int.dot.frag.out index 3272cb4c77..5c7edbb926 100644 --- a/Test/baseResults/hlsl.int.dot.frag.out +++ b/Test/baseResults/hlsl.int.dot.frag.out @@ -224,7 +224,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsic.frexp.frag.out b/Test/baseResults/hlsl.intrinsic.frexp.frag.out index 1595a6094a..c0c9109bb1 100644 --- a/Test/baseResults/hlsl.intrinsic.frexp.frag.out +++ b/Test/baseResults/hlsl.intrinsic.frexp.frag.out @@ -190,7 +190,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsic.frexp.vert.out b/Test/baseResults/hlsl.intrinsic.frexp.vert.out index 0418ed6cd3..41bb429a78 100644 --- a/Test/baseResults/hlsl.intrinsic.frexp.vert.out +++ b/Test/baseResults/hlsl.intrinsic.frexp.vert.out @@ -113,7 +113,7 @@ Shader version: 500 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.barriers.comp.out b/Test/baseResults/hlsl.intrinsics.barriers.comp.out index abb9650f61..4dfe8e0cd2 100644 --- a/Test/baseResults/hlsl.intrinsics.barriers.comp.out +++ b/Test/baseResults/hlsl.intrinsics.barriers.comp.out @@ -40,7 +40,7 @@ local_size = (1, 1, 1) 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out index bce3d149d3..56752afbca 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -717,7 +717,7 @@ local_size = (1, 1, 1) Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 265 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out index b0eeaa9ac3..75a66d6f14 100644 --- a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out +++ b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.double.frag.out b/Test/baseResults/hlsl.intrinsics.double.frag.out index 8444e20ac9..d87fd2f398 100644 --- a/Test/baseResults/hlsl.intrinsics.double.frag.out +++ b/Test/baseResults/hlsl.intrinsics.double.frag.out @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:? 'inU1b' (layout( location=9) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 90 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.f1632.frag.out b/Test/baseResults/hlsl.intrinsics.f1632.frag.out index 90a4b989fe..52bbc4fbe3 100644 --- a/Test/baseResults/hlsl.intrinsics.f1632.frag.out +++ b/Test/baseResults/hlsl.intrinsics.f1632.frag.out @@ -270,7 +270,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 106 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.f3216.frag.out b/Test/baseResults/hlsl.intrinsics.f3216.frag.out index ddf9a70865..c9a94b8fee 100644 --- a/Test/baseResults/hlsl.intrinsics.f3216.frag.out +++ b/Test/baseResults/hlsl.intrinsics.f3216.frag.out @@ -270,7 +270,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 106 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.frag.out b/Test/baseResults/hlsl.intrinsics.frag.out index 02b1e6d12a..38857f8354 100644 --- a/Test/baseResults/hlsl.intrinsics.frag.out +++ b/Test/baseResults/hlsl.intrinsics.frag.out @@ -5659,7 +5659,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1839 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.lit.frag.out b/Test/baseResults/hlsl.intrinsics.lit.frag.out index ef5759ebb7..8307db515f 100644 --- a/Test/baseResults/hlsl.intrinsics.lit.frag.out +++ b/Test/baseResults/hlsl.intrinsics.lit.frag.out @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:? 'm' (layout( location=2) in float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.negative.comp.out b/Test/baseResults/hlsl.intrinsics.negative.comp.out index c0a543c28b..6ea121a678 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.comp.out +++ b/Test/baseResults/hlsl.intrinsics.negative.comp.out @@ -122,7 +122,7 @@ local_size = (1, 1, 1) 0:? 'inI0' (layout( location=3) in 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.negative.vert.out b/Test/baseResults/hlsl.intrinsics.negative.vert.out index f1ab582623..9044abdfac 100644 --- a/Test/baseResults/hlsl.intrinsics.negative.vert.out +++ b/Test/baseResults/hlsl.intrinsics.negative.vert.out @@ -308,7 +308,7 @@ Shader version: 500 0:? 'inI0' (layout( location=3) in 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 155 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out index bd73fae201..c68fc960df 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out @@ -104,7 +104,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out index 18fd0370e0..99176f1a4e 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out @@ -888,7 +888,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 322 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out index 1abed4c921..e0fbfe6d33 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out @@ -204,7 +204,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/hlsl.intrinsics.vert.out b/Test/baseResults/hlsl.intrinsics.vert.out index 647570c931..611ff163ea 100644 --- a/Test/baseResults/hlsl.intrinsics.vert.out +++ b/Test/baseResults/hlsl.intrinsics.vert.out @@ -2780,7 +2780,7 @@ Shader version: 500 Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1225 Capability Shader diff --git a/Test/baseResults/hlsl.isfinite.frag.out b/Test/baseResults/hlsl.isfinite.frag.out index 430ff0640e..e46e77186a 100644 --- a/Test/baseResults/hlsl.isfinite.frag.out +++ b/Test/baseResults/hlsl.isfinite.frag.out @@ -172,7 +172,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 85 Capability Shader diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index 9007e933b4..b2306d077e 100644 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -88,7 +88,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.layoutOverride.vert.out b/Test/baseResults/hlsl.layoutOverride.vert.out index a3b8960136..80c3e45603 100644 --- a/Test/baseResults/hlsl.layoutOverride.vert.out +++ b/Test/baseResults/hlsl.layoutOverride.vert.out @@ -52,7 +52,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index daa28b263d..09086cbc0c 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -336,7 +336,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 129 Capability Shader diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out index 0440779f09..96792a9537 100644 --- a/Test/baseResults/hlsl.load.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -388,7 +388,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 159 Capability Shader diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out index 2aef83db3f..b9730f37f8 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -490,7 +490,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 179 Capability Shader diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index 8b9a04f823..c387d5f9b9 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -452,7 +452,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 171 Capability Shader diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index 299bde154d..b37e3c9302 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -166,7 +166,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out index f7a530c7da..b248ed6b77 100644 --- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -172,7 +172,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 75 Capability Shader diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index 106af53912..f8d4383739 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -550,7 +550,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 205 Capability Shader diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index 04ea482774..bc5f632dbe 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -426,7 +426,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 176 Capability Shader diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out index 73a854b184..ed6f5286ce 100644 --- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out @@ -110,7 +110,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out index db105d77f6..a94da2fc09 100644 --- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out @@ -208,7 +208,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 119 Capability Shader diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out index c063e0c086..b00da802a7 100644 --- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out @@ -244,7 +244,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 132 Capability Shader diff --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out index d66eb7cd55..e6f484e43c 100644 --- a/Test/baseResults/hlsl.logical.binary.frag.out +++ b/Test/baseResults/hlsl.logical.binary.frag.out @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.logical.binary.vec.frag.out b/Test/baseResults/hlsl.logical.binary.vec.frag.out index 20f87b8a6c..986d83fdc2 100644 --- a/Test/baseResults/hlsl.logical.binary.vec.frag.out +++ b/Test/baseResults/hlsl.logical.binary.vec.frag.out @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 115 Capability Shader diff --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out index 711625dc0b..cc933bbcb3 100644 --- a/Test/baseResults/hlsl.logical.unary.frag.out +++ b/Test/baseResults/hlsl.logical.unary.frag.out @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.logicalConvert.frag.out b/Test/baseResults/hlsl.logicalConvert.frag.out index 44e1961d8c..0e7bad1894 100644 --- a/Test/baseResults/hlsl.logicalConvert.frag.out +++ b/Test/baseResults/hlsl.logicalConvert.frag.out @@ -254,7 +254,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.loopattr.frag.out b/Test/baseResults/hlsl.loopattr.frag.out index ea37109d49..2784dda9a5 100644 --- a/Test/baseResults/hlsl.loopattr.frag.out +++ b/Test/baseResults/hlsl.loopattr.frag.out @@ -136,7 +136,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.matNx1.frag.out b/Test/baseResults/hlsl.matNx1.frag.out index 48a7180be1..91b2ec3993 100644 --- a/Test/baseResults/hlsl.matNx1.frag.out +++ b/Test/baseResults/hlsl.matNx1.frag.out @@ -153,7 +153,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 77 Capability Shader diff --git a/Test/baseResults/hlsl.matType.bool.frag.out b/Test/baseResults/hlsl.matType.bool.frag.out index 500b311c4f..d7d4b7ded1 100644 --- a/Test/baseResults/hlsl.matType.bool.frag.out +++ b/Test/baseResults/hlsl.matType.bool.frag.out @@ -233,7 +233,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 130 Capability Shader diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index 1117df1df4..92d44a4618 100644 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -32,7 +32,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.matType.int.frag.out b/Test/baseResults/hlsl.matType.int.frag.out index a99bd15ffb..551d41e7a5 100644 --- a/Test/baseResults/hlsl.matType.int.frag.out +++ b/Test/baseResults/hlsl.matType.int.frag.out @@ -399,7 +399,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 232 Capability Shader diff --git a/Test/baseResults/hlsl.matpack-1.frag.out b/Test/baseResults/hlsl.matpack-1.frag.out index c480f780e5..5af6c2b578 100644 --- a/Test/baseResults/hlsl.matpack-1.frag.out +++ b/Test/baseResults/hlsl.matpack-1.frag.out @@ -100,7 +100,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.matpack-pragma-global.frag.out b/Test/baseResults/hlsl.matpack-pragma-global.frag.out index 2feef9e925..d6afb4e992 100644 --- a/Test/baseResults/hlsl.matpack-pragma-global.frag.out +++ b/Test/baseResults/hlsl.matpack-pragma-global.frag.out @@ -52,7 +52,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/hlsl.matpack-pragma.frag.out b/Test/baseResults/hlsl.matpack-pragma.frag.out index bd5ca50c36..aac5af5fd0 100644 --- a/Test/baseResults/hlsl.matpack-pragma.frag.out +++ b/Test/baseResults/hlsl.matpack-pragma.frag.out @@ -170,7 +170,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.matrixSwizzle.vert.out b/Test/baseResults/hlsl.matrixSwizzle.vert.out index 4082cb27d2..4b103ac7cd 100644 --- a/Test/baseResults/hlsl.matrixSwizzle.vert.out +++ b/Test/baseResults/hlsl.matrixSwizzle.vert.out @@ -677,7 +677,7 @@ Shader version: 500 Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 118 Capability Shader diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out index fa7a8c0c1d..cf75c0567e 100644 --- a/Test/baseResults/hlsl.matrixindex.frag.out +++ b/Test/baseResults/hlsl.matrixindex.frag.out @@ -272,7 +272,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 83 Capability Shader diff --git a/Test/baseResults/hlsl.max.frag.out b/Test/baseResults/hlsl.max.frag.out index 7a0c5d2579..058786c4a6 100644 --- a/Test/baseResults/hlsl.max.frag.out +++ b/Test/baseResults/hlsl.max.frag.out @@ -66,7 +66,7 @@ gl_FragCoord origin is upper left 0:? 'input2' (layout( location=1) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/hlsl.memberFunCall.frag.out b/Test/baseResults/hlsl.memberFunCall.frag.out index 2886f8fb16..7898376c32 100644 --- a/Test/baseResults/hlsl.memberFunCall.frag.out +++ b/Test/baseResults/hlsl.memberFunCall.frag.out @@ -152,7 +152,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out index 013f8d4138..07f28c3df6 100644 --- a/Test/baseResults/hlsl.mintypes.frag.out +++ b/Test/baseResults/hlsl.mintypes.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.mip.operator.frag.out b/Test/baseResults/hlsl.mip.operator.frag.out index 48e563ca96..2c03a260e4 100644 --- a/Test/baseResults/hlsl.mip.operator.frag.out +++ b/Test/baseResults/hlsl.mip.operator.frag.out @@ -128,7 +128,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/hlsl.mul-truncate.frag.out b/Test/baseResults/hlsl.mul-truncate.frag.out index 25e7b2ea7a..806d2419dd 100644 --- a/Test/baseResults/hlsl.mul-truncate.frag.out +++ b/Test/baseResults/hlsl.mul-truncate.frag.out @@ -383,7 +383,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 190 Capability Shader diff --git a/Test/baseResults/hlsl.multiDescriptorSet.frag.out b/Test/baseResults/hlsl.multiDescriptorSet.frag.out index cfe3ea8d79..d79b121303 100644 --- a/Test/baseResults/hlsl.multiDescriptorSet.frag.out +++ b/Test/baseResults/hlsl.multiDescriptorSet.frag.out @@ -1,6 +1,6 @@ hlsl.multiDescriptorSet.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 92 Capability Shader diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index fcb9f18f49..0e31ed6e1f 100644 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -70,7 +70,7 @@ Shader version: 500 0:? 'Index' ( in uint VertexIndex) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 41 Capability Shader diff --git a/Test/baseResults/hlsl.multiReturn.frag.out b/Test/baseResults/hlsl.multiReturn.frag.out index 937986344a..fbe7fbf90d 100644 --- a/Test/baseResults/hlsl.multiReturn.frag.out +++ b/Test/baseResults/hlsl.multiReturn.frag.out @@ -48,7 +48,7 @@ gl_FragCoord origin is upper left 0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform structure{ temp float f, temp 3-component vector of float v, temp 3X3 matrix of float m} s}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/hlsl.namespace.frag.out b/Test/baseResults/hlsl.namespace.frag.out index e224eb922f..c01089a88f 100644 --- a/Test/baseResults/hlsl.namespace.frag.out +++ b/Test/baseResults/hlsl.namespace.frag.out @@ -100,7 +100,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out index 3531a3472a..1121e0b008 100644 --- a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out +++ b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out @@ -1,6 +1,6 @@ hlsl.noSemantic.functionality1.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.nonint-index.frag.out b/Test/baseResults/hlsl.nonint-index.frag.out index 897f8bc3c7..71502ee155 100644 --- a/Test/baseResults/hlsl.nonint-index.frag.out +++ b/Test/baseResults/hlsl.nonint-index.frag.out @@ -88,7 +88,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out index 5a485c67dd..3cbae1eea4 100644 --- a/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out +++ b/Test/baseResults/hlsl.nonstaticMemberFunction.frag.out @@ -268,7 +268,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 111 Capability Shader diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out index 1725d3f279..02f7d2a120 100644 --- a/Test/baseResults/hlsl.numericsuffixes.frag.out +++ b/Test/baseResults/hlsl.numericsuffixes.frag.out @@ -192,7 +192,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.numthreads.comp.out b/Test/baseResults/hlsl.numthreads.comp.out index c8676e3873..49fa4f30d2 100644 --- a/Test/baseResults/hlsl.numthreads.comp.out +++ b/Test/baseResults/hlsl.numthreads.comp.out @@ -44,7 +44,7 @@ local_size = (1, 4, 8) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/hlsl.opaque-type-bug.frag.out b/Test/baseResults/hlsl.opaque-type-bug.frag.out index 738fa4f095..d82509d65b 100644 --- a/Test/baseResults/hlsl.opaque-type-bug.frag.out +++ b/Test/baseResults/hlsl.opaque-type-bug.frag.out @@ -58,7 +58,7 @@ gl_FragCoord origin is upper left 0:? 'MyTexture' (layout( binding=0) uniform texture2D) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out index 4cfc391183..460262eb5e 100644 --- a/Test/baseResults/hlsl.overload.frag.out +++ b/Test/baseResults/hlsl.overload.frag.out @@ -734,7 +734,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 520 Capability Shader diff --git a/Test/baseResults/hlsl.params.default.frag.out b/Test/baseResults/hlsl.params.default.frag.out index 6898240fe0..be1f64160c 100644 --- a/Test/baseResults/hlsl.params.default.frag.out +++ b/Test/baseResults/hlsl.params.default.frag.out @@ -376,7 +376,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 178 Capability Shader diff --git a/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out index 7bcc8791d5..6a1b1deda9 100644 --- a/Test/baseResults/hlsl.partialFlattenLocal.vert.out +++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out @@ -237,7 +237,7 @@ Shader version: 500 0:? 'pos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader diff --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out index c9fcc6f4c9..eae3c98bb7 100644 --- a/Test/baseResults/hlsl.partialFlattenMixed.vert.out +++ b/Test/baseResults/hlsl.partialFlattenMixed.vert.out @@ -91,7 +91,7 @@ Shader version: 500 0:? 'pos' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/hlsl.partialInit.frag.out b/Test/baseResults/hlsl.partialInit.frag.out index 4686566df5..d3ce42e156 100644 --- a/Test/baseResults/hlsl.partialInit.frag.out +++ b/Test/baseResults/hlsl.partialInit.frag.out @@ -400,7 +400,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line.frag.out b/Test/baseResults/hlsl.pp.line.frag.out index 68476d2a04..3478c665d6 100644 --- a/Test/baseResults/hlsl.pp.line.frag.out +++ b/Test/baseResults/hlsl.pp.line.frag.out @@ -120,7 +120,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out index e92d7e279d..1c73bceb6b 100644 --- a/Test/baseResults/hlsl.pp.line2.frag.out +++ b/Test/baseResults/hlsl.pp.line2.frag.out @@ -1,6 +1,6 @@ hlsl.pp.line2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line3.frag.out b/Test/baseResults/hlsl.pp.line3.frag.out index 0cf250ab47..717a21b99a 100644 --- a/Test/baseResults/hlsl.pp.line3.frag.out +++ b/Test/baseResults/hlsl.pp.line3.frag.out @@ -1,6 +1,6 @@ hlsl.pp.line3.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out index a9b9664efc..da968b2386 100644 --- a/Test/baseResults/hlsl.pp.line4.frag.out +++ b/Test/baseResults/hlsl.pp.line4.frag.out @@ -1,6 +1,6 @@ hlsl.pp.line4.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 116 Capability Shader diff --git a/Test/baseResults/hlsl.pp.vert.out b/Test/baseResults/hlsl.pp.vert.out index 54781011a8..652cf174dc 100644 --- a/Test/baseResults/hlsl.pp.vert.out +++ b/Test/baseResults/hlsl.pp.vert.out @@ -26,7 +26,7 @@ Shader version: 500 0:? 'anon@0' (layout( row_major std140) uniform block{ uniform int goodGlobal1, uniform int goodGlobal2}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 13 Capability Shader diff --git a/Test/baseResults/hlsl.precedence.frag.out b/Test/baseResults/hlsl.precedence.frag.out index 3992618dda..4dd025a2e7 100644 --- a/Test/baseResults/hlsl.precedence.frag.out +++ b/Test/baseResults/hlsl.precedence.frag.out @@ -148,7 +148,7 @@ gl_FragCoord origin is upper left 0:? 'a4' (layout( location=3) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.precedence2.frag.out b/Test/baseResults/hlsl.precedence2.frag.out index f231b351e6..1611d5a55b 100644 --- a/Test/baseResults/hlsl.precedence2.frag.out +++ b/Test/baseResults/hlsl.precedence2.frag.out @@ -114,7 +114,7 @@ gl_FragCoord origin is upper left 0:? 'a4' (layout( location=3) flat in int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.precise.frag.out b/Test/baseResults/hlsl.precise.frag.out index 39e3578399..2d134b82fc 100644 --- a/Test/baseResults/hlsl.precise.frag.out +++ b/Test/baseResults/hlsl.precise.frag.out @@ -76,7 +76,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) noContraction out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.preprocessor.frag.out b/Test/baseResults/hlsl.preprocessor.frag.out index 754d0d8732..106762bf5b 100644 --- a/Test/baseResults/hlsl.preprocessor.frag.out +++ b/Test/baseResults/hlsl.preprocessor.frag.out @@ -94,7 +94,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/hlsl.printf.comp.out b/Test/baseResults/hlsl.printf.comp.out index ea31c3533d..c4768a2bf9 100644 --- a/Test/baseResults/hlsl.printf.comp.out +++ b/Test/baseResults/hlsl.printf.comp.out @@ -126,7 +126,7 @@ local_size = (1, 1, 1) 0:? "first string" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out index a34b7dddd7..91b1d58771 100644 --- a/Test/baseResults/hlsl.promote.atomic.frag.out +++ b/Test/baseResults/hlsl.promote.atomic.frag.out @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/hlsl.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out index a0007c3222..f9f57a430e 100644 --- a/Test/baseResults/hlsl.promote.binary.frag.out +++ b/Test/baseResults/hlsl.promote.binary.frag.out @@ -172,7 +172,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 83 Capability Shader diff --git a/Test/baseResults/hlsl.promote.vec1.frag.out b/Test/baseResults/hlsl.promote.vec1.frag.out index 11e324f964..7bdaf45b47 100644 --- a/Test/baseResults/hlsl.promote.vec1.frag.out +++ b/Test/baseResults/hlsl.promote.vec1.frag.out @@ -80,7 +80,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out index f1354063fc..6d73cc7c9c 100644 --- a/Test/baseResults/hlsl.promotions.frag.out +++ b/Test/baseResults/hlsl.promotions.frag.out @@ -1582,7 +1582,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 596 Capability Shader diff --git a/Test/baseResults/hlsl.round.dx10.frag.out b/Test/baseResults/hlsl.round.dx10.frag.out index be72dc5972..f8597d4d52 100644 --- a/Test/baseResults/hlsl.round.dx10.frag.out +++ b/Test/baseResults/hlsl.round.dx10.frag.out @@ -29,7 +29,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/hlsl.round.dx9.frag.out b/Test/baseResults/hlsl.round.dx9.frag.out index ecf58a7493..d4ff02a2c9 100644 --- a/Test/baseResults/hlsl.round.dx9.frag.out +++ b/Test/baseResults/hlsl.round.dx9.frag.out @@ -29,7 +29,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out index 06bc31729a..83169f13a5 100644 --- a/Test/baseResults/hlsl.rw.atomics.frag.out +++ b/Test/baseResults/hlsl.rw.atomics.frag.out @@ -3946,7 +3946,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1147 Capability Shader diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out index c79877c05a..02ed379942 100644 --- a/Test/baseResults/hlsl.rw.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -1744,7 +1744,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 607 Capability Shader diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out index 265eaf9e36..558bf424bc 100644 --- a/Test/baseResults/hlsl.rw.register.frag.out +++ b/Test/baseResults/hlsl.rw.register.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out index 8e4716b71b..f2bef19afc 100644 --- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out @@ -1690,7 +1690,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 607 Capability Shader diff --git a/Test/baseResults/hlsl.rw.swizzle.frag.out b/Test/baseResults/hlsl.rw.swizzle.frag.out index 97dd0dc417..5121cebd7e 100644 --- a/Test/baseResults/hlsl.rw.swizzle.frag.out +++ b/Test/baseResults/hlsl.rw.swizzle.frag.out @@ -202,7 +202,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out index 1f77a77817..a0c639bf51 100644 --- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out @@ -1708,7 +1708,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 711 Capability Shader diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out index 28d96f0d80..1acca18334 100644 --- a/Test/baseResults/hlsl.sample.array.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -322,7 +322,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 146 Capability Shader diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out index 12c67111ba..e30631783e 100644 --- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -550,7 +550,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/hlsl.sample.dx9.frag.out b/Test/baseResults/hlsl.sample.dx9.frag.out index 2b19a2cbb0..04eb9d36ba 100644 --- a/Test/baseResults/hlsl.sample.dx9.frag.out +++ b/Test/baseResults/hlsl.sample.dx9.frag.out @@ -378,7 +378,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 135 Capability Shader diff --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out index 0cd98f2aa7..59878a9903 100644 --- a/Test/baseResults/hlsl.sample.dx9.vert.out +++ b/Test/baseResults/hlsl.sample.dx9.vert.out @@ -154,7 +154,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out index e5d204f9f7..0a351b43df 100644 --- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -364,7 +364,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 161 Capability Shader diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out index 5b14c657ad..0770e0baae 100644 --- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -274,7 +274,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 118 Capability Shader diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out index 8754a0385f..ea0e4e24be 100644 --- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out @@ -154,7 +154,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out index e177d77b2b..f59fc811e1 100644 --- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 146 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out index 2f15b42b3b..919be7198a 100644 --- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -424,7 +424,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 170 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index 291f62489c..5b297577f4 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -400,7 +400,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 161 Capability Shader diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index a5bb613970..c3114a1b50 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -298,7 +298,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 118 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index 0ab61eba70..caddceeb8a 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -399,7 +399,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 209 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index c178c571fc..fde1b58c43 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -381,7 +381,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out index 6859f6d9dc..7f17e90022 100644 --- a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out +++ b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out @@ -85,7 +85,7 @@ gl_FragCoord origin is upper left 0:? 'g_tTex' (layout( binding=3) uniform texture1D) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index 1e50d7bbb3..cc1b858125 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -327,7 +327,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 167 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index 3b1eb6f67c..9d8413c965 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -339,7 +339,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 178 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index a734e5440e..45e33ffadb 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -435,7 +435,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 210 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index 54135cdb5f..6807d995fe 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -417,7 +417,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 199 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index 4922cdedbe..338a5e71da 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -351,7 +351,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 168 Capability Shader diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index 22bd25772a..4b68c90f38 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -363,7 +363,7 @@ using depth_any Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 179 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out index 67e1d15790..a2e58bd6a9 100644 --- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -430,7 +430,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 140 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out index 8f2fabc420..09bfbdf30b 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -532,7 +532,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 175 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index 69820905fa..f63d9e8e4e 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -494,7 +494,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 166 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out index 5694f89bc2..3180e7a33b 100644 --- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -472,7 +472,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 166 Capability Shader diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out index a3bc4c14d8..ce799699c8 100644 --- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -340,7 +340,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 120 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out index 68e0e87db9..7f3af78310 100644 --- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -358,7 +358,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 147 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out index ee3588da5f..e1d449f595 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -426,7 +426,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 172 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index a3ff9e6624..bbb51f37b7 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -386,7 +386,7 @@ Shader version: 500 0:? '@entryPointOutput.Pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 162 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out index c9d431b217..1b06c57977 100644 --- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -400,7 +400,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 162 Capability Shader diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out index 3f6ae55658..e256054611 100644 --- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -298,7 +298,7 @@ using depth_any 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 119 Capability Shader diff --git a/Test/baseResults/hlsl.scalar-length.frag.out b/Test/baseResults/hlsl.scalar-length.frag.out index c09216ae87..fd5f0b8492 100644 --- a/Test/baseResults/hlsl.scalar-length.frag.out +++ b/Test/baseResults/hlsl.scalar-length.frag.out @@ -64,7 +64,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.scalar2matrix.frag.out b/Test/baseResults/hlsl.scalar2matrix.frag.out index 62980dd6f9..ee0c3db0b9 100644 --- a/Test/baseResults/hlsl.scalar2matrix.frag.out +++ b/Test/baseResults/hlsl.scalar2matrix.frag.out @@ -374,7 +374,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/hlsl.scalarCast.vert.out b/Test/baseResults/hlsl.scalarCast.vert.out index 17356f94e5..f10f86c620 100644 --- a/Test/baseResults/hlsl.scalarCast.vert.out +++ b/Test/baseResults/hlsl.scalarCast.vert.out @@ -322,7 +322,7 @@ Shader version: 500 0:? '@entryPointOutput.texCoord' (layout( location=0) out 2-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 120 Capability Shader diff --git a/Test/baseResults/hlsl.scope.frag.out b/Test/baseResults/hlsl.scope.frag.out index 5d73bbad99..24f452caaf 100644 --- a/Test/baseResults/hlsl.scope.frag.out +++ b/Test/baseResults/hlsl.scope.frag.out @@ -102,7 +102,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 49 Capability Shader diff --git a/Test/baseResults/hlsl.self_cast.frag.out b/Test/baseResults/hlsl.self_cast.frag.out index ad4252bad8..1328833c31 100644 --- a/Test/baseResults/hlsl.self_cast.frag.out +++ b/Test/baseResults/hlsl.self_cast.frag.out @@ -68,7 +68,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/hlsl.semantic-1.vert.out b/Test/baseResults/hlsl.semantic-1.vert.out index 25fb582260..191afbc865 100644 --- a/Test/baseResults/hlsl.semantic-1.vert.out +++ b/Test/baseResults/hlsl.semantic-1.vert.out @@ -242,7 +242,7 @@ Shader version: 500 0:? 'v' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/hlsl.semantic.geom.out b/Test/baseResults/hlsl.semantic.geom.out index 0aba00030a..740f4a2a44 100644 --- a/Test/baseResults/hlsl.semantic.geom.out +++ b/Test/baseResults/hlsl.semantic.geom.out @@ -261,7 +261,7 @@ output primitive = line_strip Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 88 Capability Geometry diff --git a/Test/baseResults/hlsl.semantic.vert.out b/Test/baseResults/hlsl.semantic.vert.out index c17969a5bb..41edff2402 100644 --- a/Test/baseResults/hlsl.semantic.vert.out +++ b/Test/baseResults/hlsl.semantic.vert.out @@ -211,7 +211,7 @@ Shader version: 500 Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.semicolons.frag.out b/Test/baseResults/hlsl.semicolons.frag.out index 1afcd5b412..347190ea53 100644 --- a/Test/baseResults/hlsl.semicolons.frag.out +++ b/Test/baseResults/hlsl.semicolons.frag.out @@ -74,7 +74,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index d3b17f01bd..05bfa6ab0b 100644 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -319,7 +319,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 127 Capability Shader diff --git a/Test/baseResults/hlsl.shapeConvRet.frag.out b/Test/baseResults/hlsl.shapeConvRet.frag.out index e3e27a26bb..a23478c5c6 100644 --- a/Test/baseResults/hlsl.shapeConvRet.frag.out +++ b/Test/baseResults/hlsl.shapeConvRet.frag.out @@ -68,7 +68,7 @@ gl_FragCoord origin is upper left 0:? 'f' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/hlsl.sin.frag.out b/Test/baseResults/hlsl.sin.frag.out index bf88ce8690..1f44be5aed 100644 --- a/Test/baseResults/hlsl.sin.frag.out +++ b/Test/baseResults/hlsl.sin.frag.out @@ -52,7 +52,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/hlsl.singleArgIntPromo.vert.out b/Test/baseResults/hlsl.singleArgIntPromo.vert.out index a6105944ef..a5bf362afb 100644 --- a/Test/baseResults/hlsl.singleArgIntPromo.vert.out +++ b/Test/baseResults/hlsl.singleArgIntPromo.vert.out @@ -194,7 +194,7 @@ Shader version: 500 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 75 Capability Shader diff --git a/Test/baseResults/hlsl.snorm.uav.comp.out b/Test/baseResults/hlsl.snorm.uav.comp.out index 7b8cd4168f..40ab6cf13e 100644 --- a/Test/baseResults/hlsl.snorm.uav.comp.out +++ b/Test/baseResults/hlsl.snorm.uav.comp.out @@ -112,7 +112,7 @@ local_size = (16, 16, 1) 0:? 'tid' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.specConstant.frag.out b/Test/baseResults/hlsl.specConstant.frag.out index eb62242c07..3d81789e7d 100644 --- a/Test/baseResults/hlsl.specConstant.frag.out +++ b/Test/baseResults/hlsl.specConstant.frag.out @@ -136,7 +136,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/hlsl.spv.1.6.discard.frag.out b/Test/baseResults/hlsl.spv.1.6.discard.frag.out index d5219144cd..0d09d2592b 100644 --- a/Test/baseResults/hlsl.spv.1.6.discard.frag.out +++ b/Test/baseResults/hlsl.spv.1.6.discard.frag.out @@ -108,7 +108,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10600 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 47 Capability Shader diff --git a/Test/baseResults/hlsl.staticFuncInit.frag.out b/Test/baseResults/hlsl.staticFuncInit.frag.out index 586daceb01..9e1e4a8e72 100644 --- a/Test/baseResults/hlsl.staticFuncInit.frag.out +++ b/Test/baseResults/hlsl.staticFuncInit.frag.out @@ -130,7 +130,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 57 Capability Shader diff --git a/Test/baseResults/hlsl.staticMemberFunction.frag.out b/Test/baseResults/hlsl.staticMemberFunction.frag.out index f0e5f9f064..9cd3d38610 100644 --- a/Test/baseResults/hlsl.staticMemberFunction.frag.out +++ b/Test/baseResults/hlsl.staticMemberFunction.frag.out @@ -118,7 +118,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out index e518821825..2198affb7f 100644 --- a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out +++ b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out @@ -96,7 +96,7 @@ local_size = (64, 1, 1) 0:? 'dispatchThreadID' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/hlsl.string.frag.out b/Test/baseResults/hlsl.string.frag.out index 047f4136e2..2a5ce37d35 100644 --- a/Test/baseResults/hlsl.string.frag.out +++ b/Test/baseResults/hlsl.string.frag.out @@ -50,7 +50,7 @@ gl_FragCoord origin is upper left 0:? 'f' (layout( location=0) in float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out index f2ca742cdd..144bebc675 100644 --- a/Test/baseResults/hlsl.stringtoken.frag.out +++ b/Test/baseResults/hlsl.stringtoken.frag.out @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index 7330f567f4..a36bba429f 100644 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -213,7 +213,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 102 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split-1.vert.out b/Test/baseResults/hlsl.struct.split-1.vert.out index f204bd50a8..89b4e4e95d 100644 --- a/Test/baseResults/hlsl.struct.split-1.vert.out +++ b/Test/baseResults/hlsl.struct.split-1.vert.out @@ -196,7 +196,7 @@ Shader version: 500 0:? 'Pos_loose' (layout( location=3) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split.array.geom.out b/Test/baseResults/hlsl.struct.split.array.geom.out index 3d75fb87d7..0e3e8523e6 100644 --- a/Test/baseResults/hlsl.struct.split.array.geom.out +++ b/Test/baseResults/hlsl.struct.split.array.geom.out @@ -160,7 +160,7 @@ output primitive = triangle_strip 0:? 'OutputStream.VertexID' (layout( location=2) out uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 82 Capability Geometry diff --git a/Test/baseResults/hlsl.struct.split.assign.frag.out b/Test/baseResults/hlsl.struct.split.assign.frag.out index c40dbd6818..16c897b207 100644 --- a/Test/baseResults/hlsl.struct.split.assign.frag.out +++ b/Test/baseResults/hlsl.struct.split.assign.frag.out @@ -209,7 +209,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split.call.vert.out b/Test/baseResults/hlsl.struct.split.call.vert.out index 2570552e4b..7451a34293 100644 --- a/Test/baseResults/hlsl.struct.split.call.vert.out +++ b/Test/baseResults/hlsl.struct.split.call.vert.out @@ -214,7 +214,7 @@ Shader version: 500 0:? 'vsin.x1_in' (layout( location=2) in int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 77 Capability Shader diff --git a/Test/baseResults/hlsl.struct.split.nested.geom.out b/Test/baseResults/hlsl.struct.split.nested.geom.out index 1abe4c385c..9bab38c218 100644 --- a/Test/baseResults/hlsl.struct.split.nested.geom.out +++ b/Test/baseResults/hlsl.struct.split.nested.geom.out @@ -430,7 +430,7 @@ output primitive = triangle_strip 0:? 'ts.contains_no_builtin_io.m1' (layout( location=3) out int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 99 Capability Geometry diff --git a/Test/baseResults/hlsl.struct.split.trivial.geom.out b/Test/baseResults/hlsl.struct.split.trivial.geom.out index 89c02bf2ab..f46316f66b 100644 --- a/Test/baseResults/hlsl.struct.split.trivial.geom.out +++ b/Test/baseResults/hlsl.struct.split.trivial.geom.out @@ -192,7 +192,7 @@ output primitive = triangle_strip 0:? 'ts.pos' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 67 Capability Geometry diff --git a/Test/baseResults/hlsl.struct.split.trivial.vert.out b/Test/baseResults/hlsl.struct.split.trivial.vert.out index f1470ab67c..065f42203e 100644 --- a/Test/baseResults/hlsl.struct.split.trivial.vert.out +++ b/Test/baseResults/hlsl.struct.split.trivial.vert.out @@ -98,7 +98,7 @@ Shader version: 500 0:? 'Pos_loose' (layout( location=1) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/hlsl.structIoFourWay.frag.out b/Test/baseResults/hlsl.structIoFourWay.frag.out index fd1a8bb41d..3faff5bde2 100644 --- a/Test/baseResults/hlsl.structIoFourWay.frag.out +++ b/Test/baseResults/hlsl.structIoFourWay.frag.out @@ -162,7 +162,7 @@ using depth_greater 0:? 't.normal' (layout( location=3) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.structStructName.frag.out b/Test/baseResults/hlsl.structStructName.frag.out index 3fdbca95b3..ce305b0695 100644 --- a/Test/baseResults/hlsl.structStructName.frag.out +++ b/Test/baseResults/hlsl.structStructName.frag.out @@ -44,7 +44,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out index 97e57b164f..4896dca5b9 100644 --- a/Test/baseResults/hlsl.structarray.flatten.frag.out +++ b/Test/baseResults/hlsl.structarray.flatten.frag.out @@ -157,7 +157,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/hlsl.structarray.flatten.geom.out b/Test/baseResults/hlsl.structarray.flatten.geom.out index 619dccf6a0..e36e5f0558 100644 --- a/Test/baseResults/hlsl.structarray.flatten.geom.out +++ b/Test/baseResults/hlsl.structarray.flatten.geom.out @@ -314,7 +314,7 @@ output primitive = triangle_strip 0:? 'outStream.uv' (layout( location=1) out 2-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 82 Capability Geometry diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out index a4e540f07e..acfbf5d906 100644 --- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out @@ -151,7 +151,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.append.frag.out b/Test/baseResults/hlsl.structbuffer.append.frag.out index 518b67f04e..4c57e0bcc6 100644 --- a/Test/baseResults/hlsl.structbuffer.append.frag.out +++ b/Test/baseResults/hlsl.structbuffer.append.frag.out @@ -124,7 +124,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/Test/baseResults/hlsl.structbuffer.atomics.frag.out index ba874ee610..3f26652d67 100644 --- a/Test/baseResults/hlsl.structbuffer.atomics.frag.out +++ b/Test/baseResults/hlsl.structbuffer.atomics.frag.out @@ -475,7 +475,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 87 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out index b5252bce79..f3e92cea8c 100644 --- a/Test/baseResults/hlsl.structbuffer.byte.frag.out +++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out @@ -324,7 +324,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 114 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out index 3d97ee55e9..65e4a1461e 100644 --- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out +++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out @@ -176,7 +176,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out index a7668a7f14..6a86e48117 100644 --- a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out +++ b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out @@ -180,7 +180,7 @@ local_size = (1, 1, 1) 0:? 'nThreadId' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 85 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out index bd2a4e6769..2086d59fea 100644 --- a/Test/baseResults/hlsl.structbuffer.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out @@ -139,7 +139,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out index 3409a5f7e4..1953d46793 100644 --- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out +++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out @@ -136,7 +136,7 @@ local_size = (256, 1, 1) 0:? 'dispatchId' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out index 294a1c6c0b..0e16ef1613 100644 --- a/Test/baseResults/hlsl.structbuffer.frag.out +++ b/Test/baseResults/hlsl.structbuffer.frag.out @@ -188,7 +188,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out index 23b2125650..95b13a8f56 100644 --- a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out +++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out @@ -1,6 +1,6 @@ hlsl.structbuffer.incdec.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.out index 2605777922..72efcc0eb2 100644 --- a/Test/baseResults/hlsl.structbuffer.incdec.frag.out +++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.out @@ -204,7 +204,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out index 1eb98aa126..9dfdaf0447 100644 --- a/Test/baseResults/hlsl.structbuffer.rw.frag.out +++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out @@ -176,7 +176,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 78 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out index 337442d5d1..5fdbd1d1e9 100644 --- a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out +++ b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out @@ -1004,7 +1004,7 @@ gl_FragCoord origin is upper left 0:? 'pos' (layout( location=0) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 239 Capability Shader diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out index 127d52cc81..b024bd4201 100644 --- a/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out +++ b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out @@ -76,7 +76,7 @@ local_size = (1, 1, 1) 0:? 'g_bbuf' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.structin.vert.out b/Test/baseResults/hlsl.structin.vert.out index 85f634630b..04a64e7974 100644 --- a/Test/baseResults/hlsl.structin.vert.out +++ b/Test/baseResults/hlsl.structin.vert.out @@ -340,7 +340,7 @@ Shader version: 500 0:? 'e' (layout( location=5) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 94 Capability Shader diff --git a/Test/baseResults/hlsl.subpass.frag.out b/Test/baseResults/hlsl.subpass.frag.out index 2aca62879d..942ef5ee26 100644 --- a/Test/baseResults/hlsl.subpass.frag.out +++ b/Test/baseResults/hlsl.subpass.frag.out @@ -430,7 +430,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 204 Capability Shader diff --git a/Test/baseResults/hlsl.switch.frag.out b/Test/baseResults/hlsl.switch.frag.out index c239640f01..2ee9bd98ae 100644 --- a/Test/baseResults/hlsl.switch.frag.out +++ b/Test/baseResults/hlsl.switch.frag.out @@ -296,7 +296,7 @@ gl_FragCoord origin is upper left 0:? 'd' (layout( location=2) flat in int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 106 Capability Shader diff --git a/Test/baseResults/hlsl.swizzle.frag.out b/Test/baseResults/hlsl.swizzle.frag.out index 88ea3cc910..afb81dea61 100644 --- a/Test/baseResults/hlsl.swizzle.frag.out +++ b/Test/baseResults/hlsl.swizzle.frag.out @@ -77,7 +77,7 @@ gl_FragCoord origin is upper left 0:? 'AmbientColor' ( global 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.synthesizeInput.frag.out b/Test/baseResults/hlsl.synthesizeInput.frag.out index 316a352907..5462e645a4 100644 --- a/Test/baseResults/hlsl.synthesizeInput.frag.out +++ b/Test/baseResults/hlsl.synthesizeInput.frag.out @@ -98,7 +98,7 @@ gl_FragCoord origin is upper left 0:? 'input.no_interp' (layout( location=1) flat in uint) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/hlsl.target.frag.out b/Test/baseResults/hlsl.target.frag.out index 8bfaa2ba67..9e86746629 100644 --- a/Test/baseResults/hlsl.target.frag.out +++ b/Test/baseResults/hlsl.target.frag.out @@ -114,7 +114,7 @@ gl_FragCoord origin is upper left 0:? 'out2' (layout( location=3) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/hlsl.targetStruct1.frag.out b/Test/baseResults/hlsl.targetStruct1.frag.out index 095d15d02a..0be96d110a 100644 --- a/Test/baseResults/hlsl.targetStruct1.frag.out +++ b/Test/baseResults/hlsl.targetStruct1.frag.out @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:? 'po' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.targetStruct2.frag.out b/Test/baseResults/hlsl.targetStruct2.frag.out index c57ae008b1..2fa47658da 100644 --- a/Test/baseResults/hlsl.targetStruct2.frag.out +++ b/Test/baseResults/hlsl.targetStruct2.frag.out @@ -184,7 +184,7 @@ gl_FragCoord origin is upper left 0:? 'po' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/hlsl.templatetypes.frag.out b/Test/baseResults/hlsl.templatetypes.frag.out index 842ed0d655..5624c28753 100644 --- a/Test/baseResults/hlsl.templatetypes.frag.out +++ b/Test/baseResults/hlsl.templatetypes.frag.out @@ -508,7 +508,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 153 Capability Shader diff --git a/Test/baseResults/hlsl.texture.struct.frag.out b/Test/baseResults/hlsl.texture.struct.frag.out index bf9ab6804d..ba632bed2a 100644 --- a/Test/baseResults/hlsl.texture.struct.frag.out +++ b/Test/baseResults/hlsl.texture.struct.frag.out @@ -839,7 +839,7 @@ gl_FragCoord origin is upper left Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 240 Capability Shader diff --git a/Test/baseResults/hlsl.texture.subvec4.frag.out b/Test/baseResults/hlsl.texture.subvec4.frag.out index 1a7816d8ed..9c3b7417e4 100644 --- a/Test/baseResults/hlsl.texture.subvec4.frag.out +++ b/Test/baseResults/hlsl.texture.subvec4.frag.out @@ -356,7 +356,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 130 Capability Shader diff --git a/Test/baseResults/hlsl.texturebuffer.frag.out b/Test/baseResults/hlsl.texturebuffer.frag.out index 37e19c25cc..ae1d4f75ce 100644 --- a/Test/baseResults/hlsl.texturebuffer.frag.out +++ b/Test/baseResults/hlsl.texturebuffer.frag.out @@ -70,7 +70,7 @@ gl_FragCoord origin is upper left 0:? 'pos' ( in 4-component vector of float FragCoord) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/hlsl.this.frag.out b/Test/baseResults/hlsl.this.frag.out index e6b54cf3d4..6e4a8a047c 100644 --- a/Test/baseResults/hlsl.this.frag.out +++ b/Test/baseResults/hlsl.this.frag.out @@ -240,7 +240,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/hlsl.tristream-append.geom.out b/Test/baseResults/hlsl.tristream-append.geom.out index 53e8c04969..630f2d327e 100644 --- a/Test/baseResults/hlsl.tristream-append.geom.out +++ b/Test/baseResults/hlsl.tristream-append.geom.out @@ -157,7 +157,7 @@ output primitive = triangle_strip Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 66 Capability Geometry diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out index 424b8480de..07f1909983 100644 --- a/Test/baseResults/hlsl.tx.bracket.frag.out +++ b/Test/baseResults/hlsl.tx.bracket.frag.out @@ -422,7 +422,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput.Color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 188 Capability Shader diff --git a/Test/baseResults/hlsl.tx.overload.frag.out b/Test/baseResults/hlsl.tx.overload.frag.out index 7fb0640eea..df1bb20f09 100644 --- a/Test/baseResults/hlsl.tx.overload.frag.out +++ b/Test/baseResults/hlsl.tx.overload.frag.out @@ -134,7 +134,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/hlsl.type.half.frag.out b/Test/baseResults/hlsl.type.half.frag.out index 68f1b2400b..f12838b9b4 100644 --- a/Test/baseResults/hlsl.type.half.frag.out +++ b/Test/baseResults/hlsl.type.half.frag.out @@ -164,7 +164,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/hlsl.type.identifier.frag.out b/Test/baseResults/hlsl.type.identifier.frag.out index 5705fb76d6..6130fda9f7 100644 --- a/Test/baseResults/hlsl.type.identifier.frag.out +++ b/Test/baseResults/hlsl.type.identifier.frag.out @@ -266,7 +266,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 105 Capability Shader diff --git a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out index 7320074664..fe802db184 100644 --- a/Test/baseResults/hlsl.type.type.conversion.valid.frag.out +++ b/Test/baseResults/hlsl.type.type.conversion.valid.frag.out @@ -1364,7 +1364,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 122 Capability Shader diff --git a/Test/baseResults/hlsl.typeGraphCopy.vert.out b/Test/baseResults/hlsl.typeGraphCopy.vert.out index cedf601c30..e3805477a5 100644 --- a/Test/baseResults/hlsl.typeGraphCopy.vert.out +++ b/Test/baseResults/hlsl.typeGraphCopy.vert.out @@ -62,7 +62,7 @@ Shader version: 500 0:? '@entryPointOutput' (layout( location=0) out float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/hlsl.typedef.frag.out b/Test/baseResults/hlsl.typedef.frag.out index d925124ace..ecb8dbd85c 100644 --- a/Test/baseResults/hlsl.typedef.frag.out +++ b/Test/baseResults/hlsl.typedef.frag.out @@ -79,7 +79,7 @@ gl_FragCoord origin is upper left 0:? Linker Objects // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.void.frag.out b/Test/baseResults/hlsl.void.frag.out index f93cca0d9b..48c43c6872 100644 --- a/Test/baseResults/hlsl.void.frag.out +++ b/Test/baseResults/hlsl.void.frag.out @@ -54,7 +54,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/hlsl.w-recip.frag.out b/Test/baseResults/hlsl.w-recip.frag.out index b72f361e08..a4fc494d8c 100644 --- a/Test/baseResults/hlsl.w-recip.frag.out +++ b/Test/baseResults/hlsl.w-recip.frag.out @@ -162,7 +162,7 @@ gl_FragCoord origin is upper left 0:? 'vpos' ( in 4-component vector of float FragCoord) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 69 Capability Shader diff --git a/Test/baseResults/hlsl.w-recip2.frag.out b/Test/baseResults/hlsl.w-recip2.frag.out index 6fee15c421..2157ce4cc5 100644 --- a/Test/baseResults/hlsl.w-recip2.frag.out +++ b/Test/baseResults/hlsl.w-recip2.frag.out @@ -178,7 +178,7 @@ gl_FragCoord origin is upper left 0:? 'VSOut.TexCoord' (layout( location=2) in 2-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 75 Capability Shader diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out index 01bc953da6..49d3b871ac 100644 --- a/Test/baseResults/hlsl.wavebroadcast.comp.out +++ b/Test/baseResults/hlsl.wavebroadcast.comp.out @@ -2298,7 +2298,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 393 Capability Shader diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out index e4e942cefd..e2991bf68a 100644 --- a/Test/baseResults/hlsl.waveprefix.comp.out +++ b/Test/baseResults/hlsl.waveprefix.comp.out @@ -2322,7 +2322,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 403 Capability Shader diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out index e4311c7466..6d4ab5b76c 100644 --- a/Test/baseResults/hlsl.wavequad.comp.out +++ b/Test/baseResults/hlsl.wavequad.comp.out @@ -8026,7 +8026,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1232 Capability Shader diff --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out index dcd11ae7d2..a380808c94 100644 --- a/Test/baseResults/hlsl.wavequery.comp.out +++ b/Test/baseResults/hlsl.wavequery.comp.out @@ -60,7 +60,7 @@ local_size = (32, 16, 1) 0:? 'data' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/hlsl.wavequery.frag.out b/Test/baseResults/hlsl.wavequery.frag.out index df1b59697a..bb5147a36f 100644 --- a/Test/baseResults/hlsl.wavequery.frag.out +++ b/Test/baseResults/hlsl.wavequery.frag.out @@ -72,7 +72,7 @@ gl_FragCoord origin is upper left 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out index 64a4e7c30d..a4393fe938 100644 --- a/Test/baseResults/hlsl.wavereduction.comp.out +++ b/Test/baseResults/hlsl.wavereduction.comp.out @@ -6186,7 +6186,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 991 Capability Shader diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out index 83140a2f32..f9382b71c8 100644 --- a/Test/baseResults/hlsl.wavevote.comp.out +++ b/Test/baseResults/hlsl.wavevote.comp.out @@ -204,7 +204,7 @@ local_size = (32, 16, 1) 0:? 'dti' ( in 3-component vector of uint GlobalInvocationID) // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 75 Capability Shader diff --git a/Test/baseResults/hlsl.whileLoop.frag.out b/Test/baseResults/hlsl.whileLoop.frag.out index 23825e8e75..1f9a36b2ff 100644 --- a/Test/baseResults/hlsl.whileLoop.frag.out +++ b/Test/baseResults/hlsl.whileLoop.frag.out @@ -96,7 +96,7 @@ gl_FragCoord origin is upper left 0:? 'input' (layout( location=0) in 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/hlsl.y-negate-1.vert.out b/Test/baseResults/hlsl.y-negate-1.vert.out index aefde04164..e000752436 100644 --- a/Test/baseResults/hlsl.y-negate-1.vert.out +++ b/Test/baseResults/hlsl.y-negate-1.vert.out @@ -72,7 +72,7 @@ Shader version: 500 0:? '@entryPointOutput' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/hlsl.y-negate-2.vert.out b/Test/baseResults/hlsl.y-negate-2.vert.out index 4a9ef61161..57a47ab780 100644 --- a/Test/baseResults/hlsl.y-negate-2.vert.out +++ b/Test/baseResults/hlsl.y-negate-2.vert.out @@ -80,7 +80,7 @@ Shader version: 500 0:? 'position' ( out 4-component vector of float Position) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/hlsl.y-negate-3.vert.out b/Test/baseResults/hlsl.y-negate-3.vert.out index 3544910347..3e5895115d 100644 --- a/Test/baseResults/hlsl.y-negate-3.vert.out +++ b/Test/baseResults/hlsl.y-negate-3.vert.out @@ -126,7 +126,7 @@ Shader version: 500 0:? '@entryPointOutput.somethingelse' (layout( location=0) out int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/iomap.blockOutVariableIn.2.vert.out b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out index 0b4c0ac98a..2c4ecdc5a5 100644 --- a/Test/baseResults/iomap.blockOutVariableIn.2.vert.out +++ b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out @@ -255,7 +255,7 @@ output primitive = triangle_strip 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader @@ -320,7 +320,7 @@ output primitive = triangle_strip Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 49 Capability Geometry diff --git a/Test/baseResults/iomap.blockOutVariableIn.vert.out b/Test/baseResults/iomap.blockOutVariableIn.vert.out index dd12cbc2ad..a43e52f54b 100644 --- a/Test/baseResults/iomap.blockOutVariableIn.vert.out +++ b/Test/baseResults/iomap.blockOutVariableIn.vert.out @@ -127,7 +127,7 @@ Shader version: 440 0:? 'color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader @@ -192,7 +192,7 @@ Shader version: 440 Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/iomap.crossStage.2.vert.out b/Test/baseResults/iomap.crossStage.2.vert.out index 85139cc7a3..171cc0e38c 100644 --- a/Test/baseResults/iomap.crossStage.2.vert.out +++ b/Test/baseResults/iomap.crossStage.2.vert.out @@ -407,7 +407,7 @@ Shader version: 460 0:? 'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader @@ -530,7 +530,7 @@ Shader version: 460 Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Geometry @@ -659,7 +659,7 @@ Shader version: 460 Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/iomap.crossStage.vert.out b/Test/baseResults/iomap.crossStage.vert.out index 13ff58c9c6..d6b6e4febb 100644 --- a/Test/baseResults/iomap.crossStage.vert.out +++ b/Test/baseResults/iomap.crossStage.vert.out @@ -264,7 +264,7 @@ Shader version: 460 0:? 'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform 4-component vector of float a, layout( column_major std140) uniform 2-component vector of float b}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader @@ -387,7 +387,7 @@ Shader version: 460 Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/iomap.crossStage.vk.vert.out b/Test/baseResults/iomap.crossStage.vk.vert.out index 0a2eae8409..dd8029d198 100644 --- a/Test/baseResults/iomap.crossStage.vk.vert.out +++ b/Test/baseResults/iomap.crossStage.vk.vert.out @@ -381,7 +381,7 @@ gl_FragCoord origin is upper left 0:? 'blockName2' (layout( column_major std140) uniform 2-element array of block{layout( column_major std140) uniform highp 4-component vector of float a, layout( column_major std140) uniform highp 2-component vector of float b}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader @@ -470,7 +470,7 @@ gl_FragCoord origin is upper left Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 57 Capability Geometry @@ -582,7 +582,7 @@ gl_FragCoord origin is upper left Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 81 Capability Shader diff --git a/Test/baseResults/iomap.variableOutBlockIn.2.vert.out b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out index 6ef7d4e32e..3e6d30b5f0 100644 --- a/Test/baseResults/iomap.variableOutBlockIn.2.vert.out +++ b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out @@ -149,7 +149,7 @@ output primitive = triangle_strip 0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 1-element array of float ClipDistance gl_ClipDistance}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader @@ -208,7 +208,7 @@ output primitive = triangle_strip Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Geometry diff --git a/Test/baseResults/iomap.variableOutBlockIn.vert.out b/Test/baseResults/iomap.variableOutBlockIn.vert.out index 8fef640d36..4b0ce64953 100644 --- a/Test/baseResults/iomap.variableOutBlockIn.vert.out +++ b/Test/baseResults/iomap.variableOutBlockIn.vert.out @@ -127,7 +127,7 @@ Shader version: 440 0:? 'color' (layout( location=0) out 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader @@ -186,7 +186,7 @@ Shader version: 440 Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out index 3d76b2f382..d3545bfae5 100755 --- a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out +++ b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out @@ -253,7 +253,7 @@ output primitive = triangle_strip 0:? 'gl_in' ( in 4-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 1-element array of float ClipDistance gl_ClipDistance, in 1-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/link.vk.matchingPC.0.0.frag.out b/Test/baseResults/link.vk.matchingPC.0.0.frag.out index c434b66edc..87d3b02cf7 100644 --- a/Test/baseResults/link.vk.matchingPC.0.0.frag.out +++ b/Test/baseResults/link.vk.matchingPC.0.0.frag.out @@ -90,7 +90,7 @@ gl_FragCoord origin is upper left 0:? 'uPC' (layout( column_major std430 push_constant) uniform block{layout( column_major std430 offset=0) uniform highp 4-component vector of float color, layout( column_major std430 offset=16) uniform highp 4-component vector of float color2, layout( column_major std430 offset=32) uniform highp float scale}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out index 29a4df04d0..7f9a05a798 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out +++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out @@ -177,7 +177,7 @@ Shader version: 430 0:? 'P' ( in highp 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 73 Capability Shader diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out index 4005f60157..374a2a0842 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out +++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out @@ -263,7 +263,7 @@ output primitive = triangle_strip 0:? 'P' ( in 3-element array of highp 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 101 Capability Geometry diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out index f84877e060..410f192e14 100644 --- a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out +++ b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out @@ -109,7 +109,7 @@ Shader version: 450 0:? 'P' (layout( location=0) in highp 4-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/link1.vk.frag.out b/Test/baseResults/link1.vk.frag.out index fa1d48ec94..225aee13e3 100644 --- a/Test/baseResults/link1.vk.frag.out +++ b/Test/baseResults/link1.vk.frag.out @@ -197,7 +197,7 @@ gl_FragCoord origin is upper left 0:? 's2D' (layout( binding=1) uniform highp sampler2D) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out index 44e89699bd..007dcb9080 100644 --- a/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out +++ b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out @@ -1,6 +1,6 @@ rayQuery-OpConvertUToAccelerationStructureKHR.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out index bf654f7798..05936bb238 100644 --- a/Test/baseResults/rayQuery-allOps.comp.out +++ b/Test/baseResults/rayQuery-allOps.comp.out @@ -1,6 +1,6 @@ rayQuery-allOps.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 258 Capability Shader diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out index 90ebc4a285..19a6171149 100644 --- a/Test/baseResults/rayQuery-allOps.frag.out +++ b/Test/baseResults/rayQuery-allOps.frag.out @@ -1,6 +1,6 @@ rayQuery-allOps.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 257 Capability Shader diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out index b3a93b025c..67447b9e6d 100644 --- a/Test/baseResults/rayQuery-allOps.rgen.out +++ b/Test/baseResults/rayQuery-allOps.rgen.out @@ -1,6 +1,6 @@ rayQuery-allOps.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 257 Capability RayQueryKHR diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out index 7b05173599..968a178bc0 100644 --- a/Test/baseResults/rayQuery-global.rgen.out +++ b/Test/baseResults/rayQuery-global.rgen.out @@ -1,6 +1,6 @@ rayQuery-global.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 44 Capability RayQueryKHR diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out index f16facd5ab..dc213c5bfe 100644 --- a/Test/baseResults/rayQuery-initialize.rgen.out +++ b/Test/baseResults/rayQuery-initialize.rgen.out @@ -1,6 +1,6 @@ rayQuery-initialize.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 103 Capability RayQueryKHR diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out index a44c41f14c..0a751a3c71 100644 --- a/Test/baseResults/rayQuery-no-cse.rgen.out +++ b/Test/baseResults/rayQuery-no-cse.rgen.out @@ -1,6 +1,6 @@ rayQuery-no-cse.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 107 Capability RayQueryKHR diff --git a/Test/baseResults/rayQuery-types.comp.out b/Test/baseResults/rayQuery-types.comp.out index 87a1d68352..bb7ed7bc3c 100644 --- a/Test/baseResults/rayQuery-types.comp.out +++ b/Test/baseResults/rayQuery-types.comp.out @@ -1,6 +1,6 @@ rayQuery-types.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 86 Capability Shader diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out index 06a1a5a855..4a54973ce6 100644 --- a/Test/baseResults/rayQuery.rgen.out +++ b/Test/baseResults/rayQuery.rgen.out @@ -1,6 +1,6 @@ rayQuery.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 44 Capability RayQueryKHR diff --git a/Test/baseResults/remap.basic.dcefunc.frag.out b/Test/baseResults/remap.basic.dcefunc.frag.out index c531eba4ce..f5c9a71aa4 100644 --- a/Test/baseResults/remap.basic.dcefunc.frag.out +++ b/Test/baseResults/remap.basic.dcefunc.frag.out @@ -1,6 +1,6 @@ remap.basic.dcefunc.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/remap.basic.everything.frag.out b/Test/baseResults/remap.basic.everything.frag.out index d483f20e3a..6c73e595b1 100644 --- a/Test/baseResults/remap.basic.everything.frag.out +++ b/Test/baseResults/remap.basic.everything.frag.out @@ -1,6 +1,6 @@ remap.basic.everything.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24969 Capability Shader diff --git a/Test/baseResults/remap.basic.none.frag.out b/Test/baseResults/remap.basic.none.frag.out index 34f64c8b71..3cff65b659 100644 --- a/Test/baseResults/remap.basic.none.frag.out +++ b/Test/baseResults/remap.basic.none.frag.out @@ -1,6 +1,6 @@ remap.basic.none.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/remap.basic.strip.frag.out b/Test/baseResults/remap.basic.strip.frag.out index f1d77691e7..030877ddaf 100644 --- a/Test/baseResults/remap.basic.strip.frag.out +++ b/Test/baseResults/remap.basic.strip.frag.out @@ -1,6 +1,6 @@ remap.basic.strip.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out index 88c516fb01..b1ce523bc6 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out @@ -2,7 +2,7 @@ remap.hlsl.sample.basic.everything.frag WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24878 Capability Shader diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out index 465b02409a..13ac4f2695 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out @@ -2,7 +2,7 @@ remap.hlsl.sample.basic.none.frag WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out index 4fb92182e7..d861a43677 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out @@ -2,7 +2,7 @@ remap.hlsl.sample.basic.strip.frag WARNING: 0:4: 'immediate sampler state' : unimplemented // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out index f1e353556b..22acbadc8e 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.everything.frag.out @@ -1,6 +1,6 @@ remap.hlsl.templatetypes.everything.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24954 Capability Shader diff --git a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out index 226f2c6ee2..7e653a12ac 100644 --- a/Test/baseResults/remap.hlsl.templatetypes.none.frag.out +++ b/Test/baseResults/remap.hlsl.templatetypes.none.frag.out @@ -1,6 +1,6 @@ remap.hlsl.templatetypes.none.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 160 Capability Shader diff --git a/Test/baseResults/remap.if.everything.frag.out b/Test/baseResults/remap.if.everything.frag.out index 3a521be987..e7e73696d8 100644 --- a/Test/baseResults/remap.if.everything.frag.out +++ b/Test/baseResults/remap.if.everything.frag.out @@ -1,6 +1,6 @@ remap.if.everything.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22855 Capability Shader diff --git a/Test/baseResults/remap.if.none.frag.out b/Test/baseResults/remap.if.none.frag.out index cb2d31b024..d239492c8b 100644 --- a/Test/baseResults/remap.if.none.frag.out +++ b/Test/baseResults/remap.if.none.frag.out @@ -1,6 +1,6 @@ remap.if.none.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/remap.similar_1a.everything.frag.out b/Test/baseResults/remap.similar_1a.everything.frag.out index 993dc1c157..6de9cb9213 100644 --- a/Test/baseResults/remap.similar_1a.everything.frag.out +++ b/Test/baseResults/remap.similar_1a.everything.frag.out @@ -1,6 +1,6 @@ remap.similar_1a.everything.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24916 Capability Shader diff --git a/Test/baseResults/remap.similar_1a.none.frag.out b/Test/baseResults/remap.similar_1a.none.frag.out index e46b8e19cb..682344815a 100644 --- a/Test/baseResults/remap.similar_1a.none.frag.out +++ b/Test/baseResults/remap.similar_1a.none.frag.out @@ -1,6 +1,6 @@ remap.similar_1a.none.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 86 Capability Shader diff --git a/Test/baseResults/remap.similar_1b.everything.frag.out b/Test/baseResults/remap.similar_1b.everything.frag.out index ffe5446360..86e5ac75ea 100644 --- a/Test/baseResults/remap.similar_1b.everything.frag.out +++ b/Test/baseResults/remap.similar_1b.everything.frag.out @@ -1,6 +1,6 @@ remap.similar_1b.everything.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24916 Capability Shader diff --git a/Test/baseResults/remap.similar_1b.none.frag.out b/Test/baseResults/remap.similar_1b.none.frag.out index 5f5241c398..2433820414 100644 --- a/Test/baseResults/remap.similar_1b.none.frag.out +++ b/Test/baseResults/remap.similar_1b.none.frag.out @@ -1,6 +1,6 @@ remap.similar_1b.none.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 91 Capability Shader diff --git a/Test/baseResults/remap.specconst.comp.out b/Test/baseResults/remap.specconst.comp.out index 2bed3cfe77..905d85b3a9 100644 --- a/Test/baseResults/remap.specconst.comp.out +++ b/Test/baseResults/remap.specconst.comp.out @@ -1,6 +1,6 @@ remap.specconst.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 16104 Capability Shader diff --git a/Test/baseResults/remap.switch.everything.frag.out b/Test/baseResults/remap.switch.everything.frag.out index 443fe685c6..d257093679 100644 --- a/Test/baseResults/remap.switch.everything.frag.out +++ b/Test/baseResults/remap.switch.everything.frag.out @@ -3,7 +3,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23990 Capability Shader diff --git a/Test/baseResults/remap.switch.none.frag.out b/Test/baseResults/remap.switch.none.frag.out index 3347dce0de..53d2739594 100644 --- a/Test/baseResults/remap.switch.none.frag.out +++ b/Test/baseResults/remap.switch.none.frag.out @@ -3,7 +3,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/remap.uniformarray.everything.frag.out b/Test/baseResults/remap.uniformarray.everything.frag.out index ee1daa756a..902b597af4 100644 --- a/Test/baseResults/remap.uniformarray.everything.frag.out +++ b/Test/baseResults/remap.uniformarray.everything.frag.out @@ -1,6 +1,6 @@ remap.uniformarray.everything.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25030 Capability Shader diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out index 00e1f57ea3..cc4fc7db89 100644 --- a/Test/baseResults/remap.uniformarray.none.frag.out +++ b/Test/baseResults/remap.uniformarray.none.frag.out @@ -1,6 +1,6 @@ remap.uniformarray.none.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out index d512639422..858a0dbeaf 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out @@ -1,6 +1,6 @@ spv.1.3.8bitstorage-ssbo.vert // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out index 1dce1ea098..e7ec5ed3af 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out @@ -1,6 +1,6 @@ spv.1.3.8bitstorage-ubo.vert // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.1.3.coopmat.comp.out b/Test/baseResults/spv.1.3.coopmat.comp.out index d7a9d5ecd2..6b15772db9 100644 --- a/Test/baseResults/spv.1.3.coopmat.comp.out +++ b/Test/baseResults/spv.1.3.coopmat.comp.out @@ -1,6 +1,6 @@ spv.1.3.coopmat.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/spv.1.4.LoopControl.frag.out b/Test/baseResults/spv.1.4.LoopControl.frag.out index 0ffffd6089..c3330fce0a 100644 --- a/Test/baseResults/spv.1.4.LoopControl.frag.out +++ b/Test/baseResults/spv.1.4.LoopControl.frag.out @@ -3,7 +3,7 @@ WARNING: 0:15: 'min_iterations' : expected a single integer argument WARNING: 0:15: 'max_iterations' : expected a single integer argument // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 54 Capability Shader diff --git a/Test/baseResults/spv.1.4.NonWritable.frag.out b/Test/baseResults/spv.1.4.NonWritable.frag.out index da3b52c220..d2b76b874f 100644 --- a/Test/baseResults/spv.1.4.NonWritable.frag.out +++ b/Test/baseResults/spv.1.4.NonWritable.frag.out @@ -1,6 +1,6 @@ spv.1.4.NonWritable.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out index 018fd0a708..ad0397b319 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out +++ b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out @@ -1,6 +1,6 @@ spv.1.4.OpCopyLogical.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out index a2458bafe6..850ee91571 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out +++ b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out @@ -1,6 +1,6 @@ spv.1.4.OpCopyLogical.funcall.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 59 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out index 7dcda62cae..7b52595995 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out +++ b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out @@ -1,6 +1,6 @@ spv.1.4.OpCopyLogicalBool.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 135 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out index e43e954e66..f37b0fdfd4 100644 --- a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out +++ b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out @@ -1,6 +1,6 @@ spv.1.4.OpEntryPoint.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out index 835ab13b5d..dff799f078 100644 --- a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out +++ b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out @@ -1,6 +1,6 @@ spv.1.4.OpEntryPoint.opaqueParams.vert // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/spv.1.4.OpSelect.frag.out b/Test/baseResults/spv.1.4.OpSelect.frag.out index b3a5b4d25c..42f2ca70d4 100644 --- a/Test/baseResults/spv.1.4.OpSelect.frag.out +++ b/Test/baseResults/spv.1.4.OpSelect.frag.out @@ -1,6 +1,6 @@ spv.1.4.OpSelect.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 98 Capability Shader diff --git a/Test/baseResults/spv.1.4.constructComposite.comp.out b/Test/baseResults/spv.1.4.constructComposite.comp.out index cbec381710..e896cf805c 100644 --- a/Test/baseResults/spv.1.4.constructComposite.comp.out +++ b/Test/baseResults/spv.1.4.constructComposite.comp.out @@ -1,6 +1,6 @@ spv.1.4.constructComposite.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.1.4.funcall.array.frag.out b/Test/baseResults/spv.1.4.funcall.array.frag.out index d976bb1f47..6a23f2aa90 100644 --- a/Test/baseResults/spv.1.4.funcall.array.frag.out +++ b/Test/baseResults/spv.1.4.funcall.array.frag.out @@ -1,6 +1,6 @@ spv.1.4.funcall.array.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out index fadde9752c..059ed196a1 100644 --- a/Test/baseResults/spv.1.4.image.frag.out +++ b/Test/baseResults/spv.1.4.image.frag.out @@ -1,6 +1,6 @@ spv.1.4.image.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader diff --git a/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out index 9f698db880..fea83ab389 100644 --- a/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out +++ b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out @@ -1,7 +1,7 @@ spv.1.4.load.bool.array.interface.block.frag Validation failed // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out index 965f4c8d7c..a26ae66e0d 100644 --- a/Test/baseResults/spv.1.4.sparseTexture.frag.out +++ b/Test/baseResults/spv.1.4.sparseTexture.frag.out @@ -1,6 +1,6 @@ spv.1.4.sparseTexture.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 213 Capability Shader diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out index ac9f72fba7..6d28e1f042 100644 --- a/Test/baseResults/spv.1.4.texture.frag.out +++ b/Test/baseResults/spv.1.4.texture.frag.out @@ -1,6 +1,6 @@ spv.1.4.texture.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 79 Capability Shader diff --git a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out index f538fd9310..6364773da0 100644 --- a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out @@ -1,6 +1,6 @@ spv.1.6.conditionalDiscard.frag // Module Version 10600 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/spv.1.6.helperInvocation.frag.out b/Test/baseResults/spv.1.6.helperInvocation.frag.out index 7df2a2ac50..30a5c6a739 100644 --- a/Test/baseResults/spv.1.6.helperInvocation.frag.out +++ b/Test/baseResults/spv.1.6.helperInvocation.frag.out @@ -1,6 +1,6 @@ spv.1.6.helperInvocation.frag // Module Version 10600 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.1.6.samplerBuffer.frag.out b/Test/baseResults/spv.1.6.samplerBuffer.frag.out index 8a0275f940..1bd52da992 100644 --- a/Test/baseResults/spv.1.6.samplerBuffer.frag.out +++ b/Test/baseResults/spv.1.6.samplerBuffer.frag.out @@ -1,6 +1,6 @@ spv.1.6.samplerBuffer.frag // Module Version 10600 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.1.6.separate.frag.out b/Test/baseResults/spv.1.6.separate.frag.out index e15655e1cd..f485fad1a0 100644 --- a/Test/baseResults/spv.1.6.separate.frag.out +++ b/Test/baseResults/spv.1.6.separate.frag.out @@ -1,6 +1,6 @@ spv.1.6.separate.frag // Module Version 10600 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.1.6.specConstant.comp.out b/Test/baseResults/spv.1.6.specConstant.comp.out index 7485f04af8..2c32fbd6c9 100644 --- a/Test/baseResults/spv.1.6.specConstant.comp.out +++ b/Test/baseResults/spv.1.6.specConstant.comp.out @@ -1,6 +1,6 @@ spv.1.6.specConstant.comp // Module Version 10600 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.100ops.frag.out b/Test/baseResults/spv.100ops.frag.out index 42c99953c9..8c28d918aa 100644 --- a/Test/baseResults/spv.100ops.frag.out +++ b/Test/baseResults/spv.100ops.frag.out @@ -1,6 +1,6 @@ spv.100ops.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 49 Capability Shader diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out index 29c7d853e5..84fa9a3f50 100644 --- a/Test/baseResults/spv.130.frag.out +++ b/Test/baseResults/spv.130.frag.out @@ -3,7 +3,7 @@ WARNING: 0:31: '#extension' : extension is only partially supported: GL_ARB_gpu_ Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 205 Capability Shader diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out index a51788282c..a4401a28c6 100644 --- a/Test/baseResults/spv.140.frag.out +++ b/Test/baseResults/spv.140.frag.out @@ -1,7 +1,7 @@ spv.140.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 96 Capability Shader diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out index 0ad3337d4b..b6e22e1672 100644 --- a/Test/baseResults/spv.150.geom.out +++ b/Test/baseResults/spv.150.geom.out @@ -1,6 +1,6 @@ spv.150.geom // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 71 Capability Geometry diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out index 2b09f4be1f..167a15e398 100644 --- a/Test/baseResults/spv.150.vert.out +++ b/Test/baseResults/spv.150.vert.out @@ -1,6 +1,6 @@ spv.150.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out index a91b4e4da5..d14519b995 100644 --- a/Test/baseResults/spv.16bitstorage-int.frag.out +++ b/Test/baseResults/spv.16bitstorage-int.frag.out @@ -1,6 +1,6 @@ spv.16bitstorage-int.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 171 Capability Shader diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out index f90d0c142f..ea935ce687 100644 --- a/Test/baseResults/spv.16bitstorage-uint.frag.out +++ b/Test/baseResults/spv.16bitstorage-uint.frag.out @@ -1,6 +1,6 @@ spv.16bitstorage-uint.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 173 Capability Shader diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out index 2d934f4c53..c19f607cb7 100644 --- a/Test/baseResults/spv.16bitstorage.frag.out +++ b/Test/baseResults/spv.16bitstorage.frag.out @@ -1,6 +1,6 @@ spv.16bitstorage.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 173 Capability Shader diff --git a/Test/baseResults/spv.16bitxfb.vert.out b/Test/baseResults/spv.16bitxfb.vert.out index f4d66efca9..2dd93d4bdb 100644 --- a/Test/baseResults/spv.16bitxfb.vert.out +++ b/Test/baseResults/spv.16bitxfb.vert.out @@ -1,6 +1,6 @@ spv.16bitxfb.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 59 Capability Shader diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out index 220178804c..10f115be30 100644 --- a/Test/baseResults/spv.300BuiltIns.vert.out +++ b/Test/baseResults/spv.300BuiltIns.vert.out @@ -1,6 +1,6 @@ spv.300BuiltIns.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/spv.300layout.frag.out b/Test/baseResults/spv.300layout.frag.out index 3b691e2c3b..156a6e2419 100644 --- a/Test/baseResults/spv.300layout.frag.out +++ b/Test/baseResults/spv.300layout.frag.out @@ -1,6 +1,6 @@ spv.300layout.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out index 3db50b069a..6345aa129a 100644 --- a/Test/baseResults/spv.300layout.vert.out +++ b/Test/baseResults/spv.300layout.vert.out @@ -1,6 +1,6 @@ spv.300layout.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 163 Capability Shader diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out index 315605d4dd..d986fb5476 100644 --- a/Test/baseResults/spv.300layoutp.vert.out +++ b/Test/baseResults/spv.300layoutp.vert.out @@ -1,6 +1,6 @@ spv.300layoutp.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 115 Capability Shader diff --git a/Test/baseResults/spv.310.bitcast.frag.out b/Test/baseResults/spv.310.bitcast.frag.out index f4322abc50..fa354be46a 100644 --- a/Test/baseResults/spv.310.bitcast.frag.out +++ b/Test/baseResults/spv.310.bitcast.frag.out @@ -1,6 +1,6 @@ spv.310.bitcast.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 179 Capability Shader diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out index 931d0380a5..459c689b2d 100644 --- a/Test/baseResults/spv.310.comp.out +++ b/Test/baseResults/spv.310.comp.out @@ -1,6 +1,6 @@ spv.310.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader diff --git a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out index a4d8413be0..197fe6021f 100644 --- a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out @@ -1,6 +1,6 @@ spv.320.meshShaderUserDefined.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 143 Capability MeshShadingNV diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out index 1166508f1d..f9e69e5789 100644 --- a/Test/baseResults/spv.330.geom.out +++ b/Test/baseResults/spv.330.geom.out @@ -1,6 +1,6 @@ spv.330.geom // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Geometry diff --git a/Test/baseResults/spv.400.frag.nanclamp.out b/Test/baseResults/spv.400.frag.nanclamp.out index cf1ffb0418..f03e938602 100644 --- a/Test/baseResults/spv.400.frag.nanclamp.out +++ b/Test/baseResults/spv.400.frag.nanclamp.out @@ -1,6 +1,6 @@ spv.400.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1122 Capability Shader diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out index 67868859cf..aa42d28296 100644 --- a/Test/baseResults/spv.400.frag.out +++ b/Test/baseResults/spv.400.frag.out @@ -1,7 +1,7 @@ spv.400.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1122 Capability Shader diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out index a07c9b12dc..b6f0ddfd50 100644 --- a/Test/baseResults/spv.400.tesc.out +++ b/Test/baseResults/spv.400.tesc.out @@ -1,6 +1,6 @@ spv.400.tesc // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 92 Capability Tessellation diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out index 58f4b97eda..0b8abf668a 100644 --- a/Test/baseResults/spv.400.tese.out +++ b/Test/baseResults/spv.400.tese.out @@ -1,6 +1,6 @@ spv.400.tese // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 96 Capability Tessellation diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out index 17f27497a0..d814d1ae7b 100644 --- a/Test/baseResults/spv.420.geom.out +++ b/Test/baseResults/spv.420.geom.out @@ -1,6 +1,6 @@ spv.420.geom // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 72 Capability Geometry diff --git a/Test/baseResults/spv.430.frag.out b/Test/baseResults/spv.430.frag.out index 15da3827f3..bc00fa13de 100644 --- a/Test/baseResults/spv.430.frag.out +++ b/Test/baseResults/spv.430.frag.out @@ -1,6 +1,6 @@ spv.430.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out index a6b2e34cf1..eada8d05e5 100644 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -1,7 +1,7 @@ spv.430.vert Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/spv.450.geom.out b/Test/baseResults/spv.450.geom.out index 3e7ac4550c..5398b3c0cd 100644 --- a/Test/baseResults/spv.450.geom.out +++ b/Test/baseResults/spv.450.geom.out @@ -1,6 +1,6 @@ spv.450.geom // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Geometry diff --git a/Test/baseResults/spv.450.noRedecl.tesc.out b/Test/baseResults/spv.450.noRedecl.tesc.out index 0925119b53..dcf0a9f90f 100644 --- a/Test/baseResults/spv.450.noRedecl.tesc.out +++ b/Test/baseResults/spv.450.noRedecl.tesc.out @@ -1,6 +1,6 @@ spv.450.noRedecl.tesc // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Tessellation diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out index c18ab3ff1c..eabb9e7cda 100644 --- a/Test/baseResults/spv.450.tesc.out +++ b/Test/baseResults/spv.450.tesc.out @@ -1,7 +1,7 @@ spv.450.tesc Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Tessellation diff --git a/Test/baseResults/spv.460.comp.out b/Test/baseResults/spv.460.comp.out index d53efde654..c6abacad34 100644 --- a/Test/baseResults/spv.460.comp.out +++ b/Test/baseResults/spv.460.comp.out @@ -1,6 +1,6 @@ spv.460.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.460.frag.out b/Test/baseResults/spv.460.frag.out index a8bec34210..4201fbb809 100644 --- a/Test/baseResults/spv.460.frag.out +++ b/Test/baseResults/spv.460.frag.out @@ -1,6 +1,6 @@ spv.460.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/spv.460.subgroupEXT.mesh.out b/Test/baseResults/spv.460.subgroupEXT.mesh.out index 350f8d8a9a..be234ae71d 100644 --- a/Test/baseResults/spv.460.subgroupEXT.mesh.out +++ b/Test/baseResults/spv.460.subgroupEXT.mesh.out @@ -1,6 +1,6 @@ spv.460.subgroupEXT.mesh // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 280 Capability ClipDistance diff --git a/Test/baseResults/spv.460.subgroupEXT.task.out b/Test/baseResults/spv.460.subgroupEXT.task.out index 5f692435f2..efe30b75a1 100644 --- a/Test/baseResults/spv.460.subgroupEXT.task.out +++ b/Test/baseResults/spv.460.subgroupEXT.task.out @@ -1,6 +1,6 @@ spv.460.subgroupEXT.task // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 243 Capability StorageImageWriteWithoutFormat diff --git a/Test/baseResults/spv.460.vert.out b/Test/baseResults/spv.460.vert.out index e15f36474d..eb75ab8a9a 100644 --- a/Test/baseResults/spv.460.vert.out +++ b/Test/baseResults/spv.460.vert.out @@ -1,6 +1,6 @@ spv.460.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.8bit-16bit-construction.frag.out b/Test/baseResults/spv.8bit-16bit-construction.frag.out index 4eb90210d7..9a85a6ac73 100644 --- a/Test/baseResults/spv.8bit-16bit-construction.frag.out +++ b/Test/baseResults/spv.8bit-16bit-construction.frag.out @@ -1,7 +1,7 @@ spv.8bit-16bit-construction.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out index 00ef309873..830b3e3296 100644 --- a/Test/baseResults/spv.8bitstorage-int.frag.out +++ b/Test/baseResults/spv.8bitstorage-int.frag.out @@ -1,6 +1,6 @@ spv.8bitstorage-int.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 171 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.8bitstorage-ssbo.vert.out index 863eb68ffd..e8e9ca35df 100644 --- a/Test/baseResults/spv.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ssbo.vert.out @@ -1,6 +1,6 @@ spv.8bitstorage-ssbo.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-ubo.vert.out b/Test/baseResults/spv.8bitstorage-ubo.vert.out index c64945fa6a..f41f63eeec 100644 --- a/Test/baseResults/spv.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ubo.vert.out @@ -1,6 +1,6 @@ spv.8bitstorage-ubo.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out index 5809991fcc..f372baf13d 100644 --- a/Test/baseResults/spv.8bitstorage-uint.frag.out +++ b/Test/baseResults/spv.8bitstorage-uint.frag.out @@ -1,6 +1,6 @@ spv.8bitstorage-uint.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 173 Capability Shader diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out index c893f88d42..d075b368b7 100644 --- a/Test/baseResults/spv.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.AnyHitShader.rahit.out @@ -1,6 +1,6 @@ spv.AnyHitShader.rahit // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 81 Capability RayTracingNV diff --git a/Test/baseResults/spv.AnyHitShaderMotion.rahit.out b/Test/baseResults/spv.AnyHitShaderMotion.rahit.out index f9e1e1b959..3d859db451 100644 --- a/Test/baseResults/spv.AnyHitShaderMotion.rahit.out +++ b/Test/baseResults/spv.AnyHitShaderMotion.rahit.out @@ -1,6 +1,6 @@ spv.AnyHitShaderMotion.rahit // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 14 Capability RayTracingKHR diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out index 57cdcb06dd..b2df36a625 100644 --- a/Test/baseResults/spv.AofA.frag.out +++ b/Test/baseResults/spv.AofA.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '[][]' : Generating SPIR-V array-of-arrays, but Vulkan only suppor Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 104 Capability Shader diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out index b76629c299..80b5115c20 100644 --- a/Test/baseResults/spv.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -1,6 +1,6 @@ spv.ClosestHitShader.rchit // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 88 Capability RayTracingNV diff --git a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out index 45679eb070..e20df80a94 100644 --- a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out +++ b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out @@ -1,6 +1,6 @@ spv.ClosestHitShaderMotion.rchit // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability RayTracingKHR diff --git a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out index 4b29238fbe..57fa6911b9 100644 --- a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out +++ b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out @@ -1,6 +1,6 @@ spv.GeometryShaderPassthrough.geom // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Geometry diff --git a/Test/baseResults/spv.IntersectShader.rint.out b/Test/baseResults/spv.IntersectShader.rint.out index 7b0058cbb0..81d86cd846 100644 --- a/Test/baseResults/spv.IntersectShader.rint.out +++ b/Test/baseResults/spv.IntersectShader.rint.out @@ -1,6 +1,6 @@ spv.IntersectShader.rint // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 71 Capability RayTracingNV diff --git a/Test/baseResults/spv.IntersectShaderMotion.rint.out b/Test/baseResults/spv.IntersectShaderMotion.rint.out index f77c9a81a1..b3326ee29e 100644 --- a/Test/baseResults/spv.IntersectShaderMotion.rint.out +++ b/Test/baseResults/spv.IntersectShaderMotion.rint.out @@ -1,6 +1,6 @@ spv.IntersectShaderMotion.rint // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 14 Capability RayTracingKHR diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out index e573bbae9b..581c0c6b9f 100644 --- a/Test/baseResults/spv.MissShader.rmiss.out +++ b/Test/baseResults/spv.MissShader.rmiss.out @@ -1,6 +1,6 @@ spv.MissShader.rmiss // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 59 Capability RayTracingNV diff --git a/Test/baseResults/spv.MissShaderMotion.rmiss.out b/Test/baseResults/spv.MissShaderMotion.rmiss.out index 185c934b0a..220dda9942 100644 --- a/Test/baseResults/spv.MissShaderMotion.rmiss.out +++ b/Test/baseResults/spv.MissShaderMotion.rmiss.out @@ -1,6 +1,6 @@ spv.MissShaderMotion.rmiss // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability RayTracingKHR diff --git a/Test/baseResults/spv.OVR_multiview.vert.out b/Test/baseResults/spv.OVR_multiview.vert.out index 90afed292d..df7d949914 100644 --- a/Test/baseResults/spv.OVR_multiview.vert.out +++ b/Test/baseResults/spv.OVR_multiview.vert.out @@ -1,6 +1,6 @@ spv.OVR_multiview.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.Operations.frag.out b/Test/baseResults/spv.Operations.frag.out index fc8e241527..f9059c657a 100644 --- a/Test/baseResults/spv.Operations.frag.out +++ b/Test/baseResults/spv.Operations.frag.out @@ -1,6 +1,6 @@ spv.Operations.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 591 Capability Shader diff --git a/Test/baseResults/spv.RayCallable.rcall.out b/Test/baseResults/spv.RayCallable.rcall.out index 75698fcb65..1eff1fac2f 100644 --- a/Test/baseResults/spv.RayCallable.rcall.out +++ b/Test/baseResults/spv.RayCallable.rcall.out @@ -1,6 +1,6 @@ spv.RayCallable.rcall // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out index 962aeb7d24..ebdcb50bc5 100644 --- a/Test/baseResults/spv.RayConstants.rgen.out +++ b/Test/baseResults/spv.RayConstants.rgen.out @@ -1,6 +1,6 @@ spv.RayConstants.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out index b7085378be..01fdbf0182 100644 --- a/Test/baseResults/spv.RayGenShader.rgen.out +++ b/Test/baseResults/spv.RayGenShader.rgen.out @@ -1,6 +1,6 @@ spv.RayGenShader.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 54 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out index 48509b0d77..ae55e6589d 100644 --- a/Test/baseResults/spv.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.RayGenShader11.rgen.out @@ -1,6 +1,6 @@ spv.RayGenShader11.rgen // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 53 Capability RayTracingNV diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out index 8ddfca97fd..c3bd191130 100644 --- a/Test/baseResults/spv.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out @@ -1,6 +1,6 @@ spv.RayGenShaderArray.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 89 Capability ShaderNonUniformEXT diff --git a/Test/baseResults/spv.RayGenShaderMotion.rgen.out b/Test/baseResults/spv.RayGenShaderMotion.rgen.out index a6af236513..9a3421ca55 100644 --- a/Test/baseResults/spv.RayGenShaderMotion.rgen.out +++ b/Test/baseResults/spv.RayGenShaderMotion.rgen.out @@ -1,6 +1,6 @@ spv.RayGenShaderMotion.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 47 Capability RayTracingKHR diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out index 31dd2dd19b..4001462d17 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out index 3447791f24..d0906a4211 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out index b578bd3ad1..2a15286e96 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out index 19bcff6bcb..9a9e919926 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.NonBlock.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.NonBlock.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out index 413fd2e84a..cb3bd31a6a 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out index 6a43e23683..3d7ece13a2 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.scalar.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out index df4b8aed4e..5c8f86d25c 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.std140.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out index e782784b68..bfc35e98dc 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out @@ -1,6 +1,6 @@ spv.WorkgroupMemoryExplicitLayout.std430.comp // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.accessChain.frag.out b/Test/baseResults/spv.accessChain.frag.out index 379131b141..2426999bf3 100644 --- a/Test/baseResults/spv.accessChain.frag.out +++ b/Test/baseResults/spv.accessChain.frag.out @@ -1,6 +1,6 @@ spv.accessChain.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 228 Capability Shader diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out index 05b14eaa49..bc19f23f55 100644 --- a/Test/baseResults/spv.aggOps.frag.out +++ b/Test/baseResults/spv.aggOps.frag.out @@ -3,7 +3,7 @@ WARNING: 0:4: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 215 Capability Shader diff --git a/Test/baseResults/spv.always-discard.frag.out b/Test/baseResults/spv.always-discard.frag.out index ed21b38697..ba3331a652 100644 --- a/Test/baseResults/spv.always-discard.frag.out +++ b/Test/baseResults/spv.always-discard.frag.out @@ -1,6 +1,6 @@ spv.always-discard.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/spv.always-discard2.frag.out b/Test/baseResults/spv.always-discard2.frag.out index 5e7ac9fea0..60262f7067 100644 --- a/Test/baseResults/spv.always-discard2.frag.out +++ b/Test/baseResults/spv.always-discard2.frag.out @@ -1,6 +1,6 @@ spv.always-discard2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.arbPostDepthCoverage.frag.out b/Test/baseResults/spv.arbPostDepthCoverage.frag.out index 9b911cfc24..5daa156d48 100644 --- a/Test/baseResults/spv.arbPostDepthCoverage.frag.out +++ b/Test/baseResults/spv.arbPostDepthCoverage.frag.out @@ -1,6 +1,6 @@ spv.arbPostDepthCoverage.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.atomiAddEXT.task.out b/Test/baseResults/spv.atomiAddEXT.task.out index 4b58f15339..9ff35aa6eb 100644 --- a/Test/baseResults/spv.atomiAddEXT.task.out +++ b/Test/baseResults/spv.atomiAddEXT.task.out @@ -1,6 +1,6 @@ spv.atomiAddEXT.task // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 34 Capability MeshShadingEXT diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out index e74066c9d5..7c001ae188 100644 --- a/Test/baseResults/spv.atomic.comp.out +++ b/Test/baseResults/spv.atomic.comp.out @@ -1,6 +1,6 @@ spv.atomic.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 74 Capability Shader diff --git a/Test/baseResults/spv.atomicAdd.bufferReference.comp.out b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out index 9ecc74259d..a00c45a3f3 100644 --- a/Test/baseResults/spv.atomicAdd.bufferReference.comp.out +++ b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out @@ -1,6 +1,6 @@ spv.atomicAdd.bufferReference.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 188 Capability Shader diff --git a/Test/baseResults/spv.atomicFloat.comp.out b/Test/baseResults/spv.atomicFloat.comp.out index 3799557b3d..acb5d817b5 100644 --- a/Test/baseResults/spv.atomicFloat.comp.out +++ b/Test/baseResults/spv.atomicFloat.comp.out @@ -1,6 +1,6 @@ spv.atomicFloat.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 470 Capability Shader diff --git a/Test/baseResults/spv.atomicInt64.comp.out b/Test/baseResults/spv.atomicInt64.comp.out index 5b2e134041..24805cccc0 100644 --- a/Test/baseResults/spv.atomicInt64.comp.out +++ b/Test/baseResults/spv.atomicInt64.comp.out @@ -1,6 +1,6 @@ spv.atomicInt64.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 149 Capability Shader diff --git a/Test/baseResults/spv.atomicStoreInt64.comp.out b/Test/baseResults/spv.atomicStoreInt64.comp.out index 3adadcb288..c2b3f30d7f 100644 --- a/Test/baseResults/spv.atomicStoreInt64.comp.out +++ b/Test/baseResults/spv.atomicStoreInt64.comp.out @@ -1,6 +1,6 @@ spv.atomicStoreInt64.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/spv.barrier.vert.out b/Test/baseResults/spv.barrier.vert.out index 7199882528..5208412044 100644 --- a/Test/baseResults/spv.barrier.vert.out +++ b/Test/baseResults/spv.barrier.vert.out @@ -1,6 +1,6 @@ spv.barrier.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.bitCast.frag.out b/Test/baseResults/spv.bitCast.frag.out index 88b2a09f69..9b3c9ec025 100644 --- a/Test/baseResults/spv.bitCast.frag.out +++ b/Test/baseResults/spv.bitCast.frag.out @@ -1,6 +1,6 @@ spv.bitCast.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 198 Capability Shader diff --git a/Test/baseResults/spv.bool.vert.out b/Test/baseResults/spv.bool.vert.out index fb7c6860b2..265d9007f5 100644 --- a/Test/baseResults/spv.bool.vert.out +++ b/Test/baseResults/spv.bool.vert.out @@ -1,6 +1,6 @@ spv.bool.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/spv.boolInBlock.frag.out b/Test/baseResults/spv.boolInBlock.frag.out index 004c204081..c234cb4d35 100644 --- a/Test/baseResults/spv.boolInBlock.frag.out +++ b/Test/baseResults/spv.boolInBlock.frag.out @@ -1,6 +1,6 @@ spv.boolInBlock.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 102 Capability Shader diff --git a/Test/baseResults/spv.branch-return.vert.out b/Test/baseResults/spv.branch-return.vert.out index 30918aba41..53ef876579 100644 --- a/Test/baseResults/spv.branch-return.vert.out +++ b/Test/baseResults/spv.branch-return.vert.out @@ -1,6 +1,6 @@ spv.branch-return.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out index 34752664a9..3afe64396c 100644 --- a/Test/baseResults/spv.buffer.autoassign.frag.out +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -1,6 +1,6 @@ spv.buffer.autoassign.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out index b49c129630..c44ad2a609 100644 --- a/Test/baseResults/spv.bufferhandle1.frag.out +++ b/Test/baseResults/spv.bufferhandle1.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle1.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out index f9ab60d290..93c3f70a4c 100644 --- a/Test/baseResults/spv.bufferhandle10.frag.out +++ b/Test/baseResults/spv.bufferhandle10.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle10.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out index 9dd1c7b84a..eec3cf34f2 100644 --- a/Test/baseResults/spv.bufferhandle11.frag.out +++ b/Test/baseResults/spv.bufferhandle11.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out index 7cd5cb5e4d..319684f801 100644 --- a/Test/baseResults/spv.bufferhandle12.frag.out +++ b/Test/baseResults/spv.bufferhandle12.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 183 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out index 5ce24acd38..dd430896e6 100644 --- a/Test/baseResults/spv.bufferhandle13.frag.out +++ b/Test/baseResults/spv.bufferhandle13.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle13.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 58 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out index 34df7538c9..4f994e194b 100644 --- a/Test/baseResults/spv.bufferhandle14.frag.out +++ b/Test/baseResults/spv.bufferhandle14.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle14.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out index ab1b4dbaef..34d3d598cf 100644 --- a/Test/baseResults/spv.bufferhandle15.frag.out +++ b/Test/baseResults/spv.bufferhandle15.frag.out @@ -3,7 +3,7 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out index a9d9dcf265..ee04d361d6 100644 --- a/Test/baseResults/spv.bufferhandle16.frag.out +++ b/Test/baseResults/spv.bufferhandle16.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle16.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 48 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out index 59ad6d02be..97c961a76c 100644 --- a/Test/baseResults/spv.bufferhandle18.frag.out +++ b/Test/baseResults/spv.bufferhandle18.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle18.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 196 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out index e20f3b7f2b..31a39f261e 100644 --- a/Test/baseResults/spv.bufferhandle2.frag.out +++ b/Test/baseResults/spv.bufferhandle2.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out index 65ad1ca6fa..9f66b5cf1c 100644 --- a/Test/baseResults/spv.bufferhandle3.frag.out +++ b/Test/baseResults/spv.bufferhandle3.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle3.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out index e06bca4e8b..1ccb6095de 100644 --- a/Test/baseResults/spv.bufferhandle4.frag.out +++ b/Test/baseResults/spv.bufferhandle4.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle4.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out index bf4d3a2ab3..0bcb34b072 100644 --- a/Test/baseResults/spv.bufferhandle5.frag.out +++ b/Test/baseResults/spv.bufferhandle5.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle5.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out index abc9187c84..758a30bea6 100644 --- a/Test/baseResults/spv.bufferhandle6.frag.out +++ b/Test/baseResults/spv.bufferhandle6.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle6.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 165 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out index 4282a3622c..070adb710b 100644 --- a/Test/baseResults/spv.bufferhandle7.frag.out +++ b/Test/baseResults/spv.bufferhandle7.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle7.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out index 65d4665324..4960144930 100644 --- a/Test/baseResults/spv.bufferhandle8.frag.out +++ b/Test/baseResults/spv.bufferhandle8.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle8.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out index 1e5091c2ef..ff7ede7a59 100644 --- a/Test/baseResults/spv.bufferhandle9.frag.out +++ b/Test/baseResults/spv.bufferhandle9.frag.out @@ -1,6 +1,6 @@ spv.bufferhandle9.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 56 Capability Shader diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out index fbdbb6aa30..133190e5f3 100644 --- a/Test/baseResults/spv.bufferhandleUvec2.frag.out +++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out @@ -1,6 +1,6 @@ spv.bufferhandleUvec2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 71 Capability Shader diff --git a/Test/baseResults/spv.builtInXFB.vert.out b/Test/baseResults/spv.builtInXFB.vert.out index 1f612e2a22..b3a3e12ce5 100644 --- a/Test/baseResults/spv.builtInXFB.vert.out +++ b/Test/baseResults/spv.builtInXFB.vert.out @@ -1,6 +1,6 @@ spv.builtInXFB.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out index 8daa79ee04..019118548e 100644 --- a/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out +++ b/Test/baseResults/spv.builtin.PrimitiveShadingRateEXT.vert.out @@ -1,6 +1,6 @@ spv.builtin.PrimitiveShadingRateEXT.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out index 95b94d2534..5707fb9359 100644 --- a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out +++ b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out @@ -3,7 +3,7 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader diff --git a/Test/baseResults/spv.computeShaderDerivatives.comp.out b/Test/baseResults/spv.computeShaderDerivatives.comp.out index a7138450c5..4761078566 100644 --- a/Test/baseResults/spv.computeShaderDerivatives.comp.out +++ b/Test/baseResults/spv.computeShaderDerivatives.comp.out @@ -1,6 +1,6 @@ spv.computeShaderDerivatives.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 212 Capability Shader diff --git a/Test/baseResults/spv.computeShaderDerivatives2.comp.out b/Test/baseResults/spv.computeShaderDerivatives2.comp.out index 3c3d54eef2..52b54746e7 100644 --- a/Test/baseResults/spv.computeShaderDerivatives2.comp.out +++ b/Test/baseResults/spv.computeShaderDerivatives2.comp.out @@ -1,6 +1,6 @@ spv.computeShaderDerivatives2.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 212 Capability Shader diff --git a/Test/baseResults/spv.conditionalDemote.frag.out b/Test/baseResults/spv.conditionalDemote.frag.out index dfd45962cf..84c816b22c 100644 --- a/Test/baseResults/spv.conditionalDemote.frag.out +++ b/Test/baseResults/spv.conditionalDemote.frag.out @@ -1,6 +1,6 @@ spv.conditionalDemote.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out index 2e53e9b89b..f31fa85143 100644 --- a/Test/baseResults/spv.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.conditionalDiscard.frag.out @@ -1,6 +1,6 @@ spv.conditionalDiscard.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/spv.constConstruct.vert.out b/Test/baseResults/spv.constConstruct.vert.out index a8d5097590..3dc42ed94d 100644 --- a/Test/baseResults/spv.constConstruct.vert.out +++ b/Test/baseResults/spv.constConstruct.vert.out @@ -1,6 +1,6 @@ spv.constConstruct.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 150 Capability Shader diff --git a/Test/baseResults/spv.constStruct.vert.out b/Test/baseResults/spv.constStruct.vert.out index 61d0e54f4a..6abc009ea0 100644 --- a/Test/baseResults/spv.constStruct.vert.out +++ b/Test/baseResults/spv.constStruct.vert.out @@ -1,6 +1,6 @@ spv.constStruct.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.constructComposite.comp.out b/Test/baseResults/spv.constructComposite.comp.out index 73d663b976..491a33f1c9 100644 --- a/Test/baseResults/spv.constructComposite.comp.out +++ b/Test/baseResults/spv.constructComposite.comp.out @@ -1,6 +1,6 @@ spv.constructComposite.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.controlFlowAttributes.frag.out b/Test/baseResults/spv.controlFlowAttributes.frag.out index cf34ae2f68..038711d2fc 100644 --- a/Test/baseResults/spv.controlFlowAttributes.frag.out +++ b/Test/baseResults/spv.controlFlowAttributes.frag.out @@ -9,7 +9,7 @@ WARNING: 0:33: '' : attribute with arguments not recognized, skipping Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 123 Capability Shader diff --git a/Test/baseResults/spv.conversion.frag.out b/Test/baseResults/spv.conversion.frag.out index b600b384af..5ddf7db612 100644 --- a/Test/baseResults/spv.conversion.frag.out +++ b/Test/baseResults/spv.conversion.frag.out @@ -1,6 +1,6 @@ spv.conversion.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 455 Capability Shader diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out index 0a609df18a..b594af23b4 100644 --- a/Test/baseResults/spv.coopmat.comp.out +++ b/Test/baseResults/spv.coopmat.comp.out @@ -1,6 +1,6 @@ spv.coopmat.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 228 Capability Shader diff --git a/Test/baseResults/spv.dataOut.frag.out b/Test/baseResults/spv.dataOut.frag.out index 980d1bd34d..b3bc6239e9 100644 --- a/Test/baseResults/spv.dataOut.frag.out +++ b/Test/baseResults/spv.dataOut.frag.out @@ -1,7 +1,7 @@ spv.dataOut.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out index a75e8d54e1..d07cfe97eb 100644 --- a/Test/baseResults/spv.dataOutIndirect.frag.out +++ b/Test/baseResults/spv.dataOutIndirect.frag.out @@ -1,6 +1,6 @@ spv.dataOutIndirect.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/spv.dataOutIndirect.vert.out b/Test/baseResults/spv.dataOutIndirect.vert.out index 1c29410141..712cd13aec 100644 --- a/Test/baseResults/spv.dataOutIndirect.vert.out +++ b/Test/baseResults/spv.dataOutIndirect.vert.out @@ -2,7 +2,7 @@ spv.dataOutIndirect.vert WARNING: 0:3: attribute deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.dead-after-continue.vert.out b/Test/baseResults/spv.dead-after-continue.vert.out index 6d8d7d902e..11024818ce 100644 --- a/Test/baseResults/spv.dead-after-continue.vert.out +++ b/Test/baseResults/spv.dead-after-continue.vert.out @@ -1,6 +1,6 @@ spv.dead-after-continue.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.dead-after-discard.frag.out b/Test/baseResults/spv.dead-after-discard.frag.out index 987f5a2bbb..2948e22e6d 100644 --- a/Test/baseResults/spv.dead-after-discard.frag.out +++ b/Test/baseResults/spv.dead-after-discard.frag.out @@ -1,6 +1,6 @@ spv.dead-after-discard.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.dead-after-loop-break.vert.out b/Test/baseResults/spv.dead-after-loop-break.vert.out index 2d9e35ae1e..490dbcc889 100644 --- a/Test/baseResults/spv.dead-after-loop-break.vert.out +++ b/Test/baseResults/spv.dead-after-loop-break.vert.out @@ -1,6 +1,6 @@ spv.dead-after-loop-break.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/spv.dead-after-return.vert.out b/Test/baseResults/spv.dead-after-return.vert.out index d6ba2c72bf..09693633d2 100644 --- a/Test/baseResults/spv.dead-after-return.vert.out +++ b/Test/baseResults/spv.dead-after-return.vert.out @@ -1,6 +1,6 @@ spv.dead-after-return.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 14 Capability Shader diff --git a/Test/baseResults/spv.dead-after-switch-break.vert.out b/Test/baseResults/spv.dead-after-switch-break.vert.out index f8bc4d047b..744355dcac 100644 --- a/Test/baseResults/spv.dead-after-switch-break.vert.out +++ b/Test/baseResults/spv.dead-after-switch-break.vert.out @@ -1,6 +1,6 @@ spv.dead-after-switch-break.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out index 3db78ecc51..3c41ff8ab9 100644 --- a/Test/baseResults/spv.dead-complex-continue-after-return.vert.out +++ b/Test/baseResults/spv.dead-complex-continue-after-return.vert.out @@ -1,6 +1,6 @@ spv.dead-complex-continue-after-return.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out index cc1b25c81f..52431a3236 100644 --- a/Test/baseResults/spv.dead-complex-merge-after-return.vert.out +++ b/Test/baseResults/spv.dead-complex-merge-after-return.vert.out @@ -1,6 +1,6 @@ spv.dead-complex-merge-after-return.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 36 Capability Shader diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index fbf373b88d..67175de96a 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -1,6 +1,6 @@ spv.debugInfo.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 124 Capability Shader diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index 9a9e0d9419..b9eb496a26 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -1,6 +1,6 @@ spv.debugInfo.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 124 Capability Shader diff --git a/Test/baseResults/spv.debugPrintf.frag.out b/Test/baseResults/spv.debugPrintf.frag.out index 65174156ab..428e59826b 100644 --- a/Test/baseResults/spv.debugPrintf.frag.out +++ b/Test/baseResults/spv.debugPrintf.frag.out @@ -1,6 +1,6 @@ spv.debugPrintf.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index aaef897bcd..9e464501e5 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.comp Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 817 Capability Shader diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 3b9f8cbef1..22b1731431 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 704 Capability Shader diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 8c5733efde..07f8f52084 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.geom Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 231 Capability Geometry diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index d5dca88851..ae9bfad109 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.tesc Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 457 Capability Tessellation diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index 696d4bf02f..d9d96811fc 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.tese Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 315 Capability Tessellation diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index 9a7bdd62a4..3d5352fd1c 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.vert Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 374 Capability Shader diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index abad608ccc..44bf1a7fe9 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.comp Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 833 Capability Shader diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index a008da8d28..3c206a08ec 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 743 Capability Shader diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index 1eb9f83b84..c747d3a118 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.geom Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 322 Capability Geometry diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index 5d0ccc6797..a389bba176 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -3,7 +3,7 @@ WARNING: 0:158: '' : attribute does not apply to entry point Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 593 Capability Tessellation diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 56e108653d..939f64ad64 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.tese Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 434 Capability Tessellation diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 742cc04743..a7af4326e9 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.vert Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 437 Capability Shader diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out index d46159d705..efb9d2ec69 100644 --- a/Test/baseResults/spv.deepRvalue.frag.out +++ b/Test/baseResults/spv.deepRvalue.frag.out @@ -1,6 +1,6 @@ spv.deepRvalue.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 152 Capability Shader diff --git a/Test/baseResults/spv.depthOut.frag.out b/Test/baseResults/spv.depthOut.frag.out index 50c4770268..4d69949fcf 100644 --- a/Test/baseResults/spv.depthOut.frag.out +++ b/Test/baseResults/spv.depthOut.frag.out @@ -1,6 +1,6 @@ spv.depthOut.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.depthUnchanged.frag.out b/Test/baseResults/spv.depthUnchanged.frag.out index 0074007836..34785c086a 100644 --- a/Test/baseResults/spv.depthUnchanged.frag.out +++ b/Test/baseResults/spv.depthUnchanged.frag.out @@ -1,6 +1,6 @@ spv.depthUnchanged.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out index 57c443c0e5..68285a1bdf 100644 --- a/Test/baseResults/spv.deviceGroup.frag.out +++ b/Test/baseResults/spv.deviceGroup.frag.out @@ -1,6 +1,6 @@ spv.deviceGroup.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.discard-dce.frag.out b/Test/baseResults/spv.discard-dce.frag.out index 93c2de8fc2..bddf6f9e8b 100644 --- a/Test/baseResults/spv.discard-dce.frag.out +++ b/Test/baseResults/spv.discard-dce.frag.out @@ -1,6 +1,6 @@ spv.discard-dce.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/spv.do-simple.vert.out b/Test/baseResults/spv.do-simple.vert.out index c240c449ca..c0196c2b5b 100644 --- a/Test/baseResults/spv.do-simple.vert.out +++ b/Test/baseResults/spv.do-simple.vert.out @@ -1,6 +1,6 @@ spv.do-simple.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.do-while-continue-break.vert.out b/Test/baseResults/spv.do-while-continue-break.vert.out index 081dc62033..26e67fcb29 100644 --- a/Test/baseResults/spv.do-while-continue-break.vert.out +++ b/Test/baseResults/spv.do-while-continue-break.vert.out @@ -1,6 +1,6 @@ spv.do-while-continue-break.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.doWhileLoop.frag.out b/Test/baseResults/spv.doWhileLoop.frag.out index a57b9b2e83..145776c978 100644 --- a/Test/baseResults/spv.doWhileLoop.frag.out +++ b/Test/baseResults/spv.doWhileLoop.frag.out @@ -1,6 +1,6 @@ spv.doWhileLoop.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out index 800464cca0..3a5eef8a0d 100644 --- a/Test/baseResults/spv.double.comp.out +++ b/Test/baseResults/spv.double.comp.out @@ -1,6 +1,6 @@ spv.double.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.drawParams.vert.out b/Test/baseResults/spv.drawParams.vert.out index a8dab45c4f..23ba8a73c4 100644 --- a/Test/baseResults/spv.drawParams.vert.out +++ b/Test/baseResults/spv.drawParams.vert.out @@ -1,6 +1,6 @@ spv.drawParams.vert // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.earlyReturnDiscard.frag.out b/Test/baseResults/spv.earlyReturnDiscard.frag.out index 8f983cb548..273b7753d0 100644 --- a/Test/baseResults/spv.earlyReturnDiscard.frag.out +++ b/Test/baseResults/spv.earlyReturnDiscard.frag.out @@ -1,6 +1,6 @@ spv.earlyReturnDiscard.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 110 Capability Shader diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out index 3382872020..65d3b1ff24 100644 --- a/Test/baseResults/spv.explicittypes.frag.out +++ b/Test/baseResults/spv.explicittypes.frag.out @@ -1,6 +1,6 @@ spv.explicittypes.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 576 Capability Shader diff --git a/Test/baseResults/spv.ext.AccelDecl.frag.out b/Test/baseResults/spv.ext.AccelDecl.frag.out index 11d456065f..e329ee9224 100644 --- a/Test/baseResults/spv.ext.AccelDecl.frag.out +++ b/Test/baseResults/spv.ext.AccelDecl.frag.out @@ -1,6 +1,6 @@ spv.ext.AccelDecl.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 0a6db643bd..1d1d14a730 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -1,6 +1,6 @@ spv.ext.AnyHitShader.rahit // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 108 Capability GroupNonUniform diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 4a7178e9c2..73a238111b 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -1,6 +1,6 @@ spv.ext.ClosestHitShader.rchit // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 102 Capability RayTracingKHR diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out index 24ab4f46c3..e5b62d7c6c 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out @@ -1,6 +1,6 @@ spv.ext.ClosestHitShader_Subgroup.rchit // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 67 Capability Int64 diff --git a/Test/baseResults/spv.ext.IntersectShader.rint.out b/Test/baseResults/spv.ext.IntersectShader.rint.out index dcceea4897..fad466bb37 100644 --- a/Test/baseResults/spv.ext.IntersectShader.rint.out +++ b/Test/baseResults/spv.ext.IntersectShader.rint.out @@ -1,6 +1,6 @@ spv.ext.IntersectShader.rint // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability RayTracingKHR diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out index e4a5b88bcb..246eefa625 100644 --- a/Test/baseResults/spv.ext.MissShader.rmiss.out +++ b/Test/baseResults/spv.ext.MissShader.rmiss.out @@ -1,6 +1,6 @@ spv.ext.MissShader.rmiss // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 94 Capability MinLod diff --git a/Test/baseResults/spv.ext.RayCallable.rcall.out b/Test/baseResults/spv.ext.RayCallable.rcall.out index 50e7fd8ff6..9e6cef1340 100644 --- a/Test/baseResults/spv.ext.RayCallable.rcall.out +++ b/Test/baseResults/spv.ext.RayCallable.rcall.out @@ -1,6 +1,6 @@ spv.ext.RayCallable.rcall // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability RayTracingKHR diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out index 6ef9dd4de0..9cd294a9a2 100644 --- a/Test/baseResults/spv.ext.RayConstants.rgen.out +++ b/Test/baseResults/spv.ext.RayConstants.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayConstants.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability RayTracingKHR diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out index 88e3c004ce..31a8bda0fe 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayGenSBTlayout.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out index ce5c306322..f0302f746a 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayGenSBTlayout140.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out index 7462abd9b4..e83dd42422 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayGenSBTlayout430.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out index 3573455616..a24b64c7d1 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayGenSBTlayoutscalar.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 74 Capability Int64 diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out index 5a34fc7eaa..b872d9e0f2 100644 --- a/Test/baseResults/spv.ext.RayGenShader.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayGenShader.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 58 Capability RayTraversalPrimitiveCullingKHR diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out index b31ebd9abb..d79f4f37dc 100644 --- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayGenShader11.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 53 Capability RayTracingKHR diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out index 08f72b28ef..7e351d75d5 100644 --- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out @@ -1,6 +1,6 @@ spv.ext.RayGenShaderArray.rgen // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 117 Capability Int64 diff --git a/Test/baseResults/spv.ext.RayQueryDecl.frag.out b/Test/baseResults/spv.ext.RayQueryDecl.frag.out index 97681e9f53..2eb14216d6 100644 --- a/Test/baseResults/spv.ext.RayQueryDecl.frag.out +++ b/Test/baseResults/spv.ext.RayQueryDecl.frag.out @@ -1,6 +1,6 @@ spv.ext.RayQueryDecl.frag // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out index 8c60912c40..92ad18fbe0 100644 --- a/Test/baseResults/spv.ext.World3x4.rahit.out +++ b/Test/baseResults/spv.ext.World3x4.rahit.out @@ -1,6 +1,6 @@ spv.ext.World3x4.rahit // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 90 Capability RayTracingKHR diff --git a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out index ee9c60331a..c1f6f7ca9a 100644 --- a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.ext.meshShaderBuiltins.mesh // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 159 Capability ClipDistance diff --git a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out index 7f2bdf8d48..a331a471d4 100644 --- a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.ext.meshShaderRedeclBuiltins.mesh // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 128 Capability ClipDistance diff --git a/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out index 79b2c65a2b..b206177e22 100644 --- a/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out @@ -1,6 +1,6 @@ spv.ext.meshShaderTaskMem.mesh // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 58 Capability MeshShadingEXT diff --git a/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out index d9d74ab92f..dc347aac32 100644 --- a/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out @@ -1,6 +1,6 @@ spv.ext.meshShaderUserDefined.mesh // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 141 Capability MeshShadingEXT diff --git a/Test/baseResults/spv.ext.meshTaskShader.task.out b/Test/baseResults/spv.ext.meshTaskShader.task.out index fb769f0457..41a81d0a1d 100644 --- a/Test/baseResults/spv.ext.meshTaskShader.task.out +++ b/Test/baseResults/spv.ext.meshTaskShader.task.out @@ -1,6 +1,6 @@ spv.ext.meshTaskShader.task // Module Version 10400 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 103 Capability StorageImageWriteWithoutFormat diff --git a/Test/baseResults/spv.extPostDepthCoverage.frag.out b/Test/baseResults/spv.extPostDepthCoverage.frag.out index cc96fb4f9c..7e4c6f5dfa 100644 --- a/Test/baseResults/spv.extPostDepthCoverage.frag.out +++ b/Test/baseResults/spv.extPostDepthCoverage.frag.out @@ -1,6 +1,6 @@ spv.extPostDepthCoverage.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 6 Capability Shader diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out index 8c33a66724..2cce81550d 100644 --- a/Test/baseResults/spv.float16.frag.out +++ b/Test/baseResults/spv.float16.frag.out @@ -1,7 +1,7 @@ spv.float16.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 542 Capability Shader diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out index da4aa4ddbc..17eb5b3b9f 100644 --- a/Test/baseResults/spv.float16Fetch.frag.out +++ b/Test/baseResults/spv.float16Fetch.frag.out @@ -1,7 +1,7 @@ spv.float16Fetch.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 5979 Capability Shader diff --git a/Test/baseResults/spv.float16NoRelaxed.vert.out b/Test/baseResults/spv.float16NoRelaxed.vert.out index 8872b4637d..9e821ab2a2 100644 --- a/Test/baseResults/spv.float16NoRelaxed.vert.out +++ b/Test/baseResults/spv.float16NoRelaxed.vert.out @@ -1,6 +1,6 @@ spv.float16NoRelaxed.vert // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.float16convertonlyarith.comp.out b/Test/baseResults/spv.float16convertonlyarith.comp.out index 1666f79f3d..81d1c60203 100644 --- a/Test/baseResults/spv.float16convertonlyarith.comp.out +++ b/Test/baseResults/spv.float16convertonlyarith.comp.out @@ -1,6 +1,6 @@ spv.float16convertonlyarith.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.float16convertonlystorage.comp.out b/Test/baseResults/spv.float16convertonlystorage.comp.out index 8eb42f6fd5..be15f43c86 100644 --- a/Test/baseResults/spv.float16convertonlystorage.comp.out +++ b/Test/baseResults/spv.float16convertonlystorage.comp.out @@ -1,6 +1,6 @@ spv.float16convertonlystorage.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out index 2ffa2311f0..d2cc609458 100644 --- a/Test/baseResults/spv.float32.frag.out +++ b/Test/baseResults/spv.float32.frag.out @@ -1,6 +1,6 @@ spv.float32.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 541 Capability Shader diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out index cd5f80d677..68e8f1c7db 100644 --- a/Test/baseResults/spv.float64.frag.out +++ b/Test/baseResults/spv.float64.frag.out @@ -1,7 +1,7 @@ spv.float64.frag Validation failed // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 485 Capability Shader diff --git a/Test/baseResults/spv.flowControl.frag.out b/Test/baseResults/spv.flowControl.frag.out index efbe63ebb4..62f6ad7008 100644 --- a/Test/baseResults/spv.flowControl.frag.out +++ b/Test/baseResults/spv.flowControl.frag.out @@ -1,6 +1,6 @@ spv.flowControl.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.for-complex-condition.vert.out b/Test/baseResults/spv.for-complex-condition.vert.out index ca971fd5eb..16b23a0fa7 100644 --- a/Test/baseResults/spv.for-complex-condition.vert.out +++ b/Test/baseResults/spv.for-complex-condition.vert.out @@ -1,6 +1,6 @@ spv.for-complex-condition.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.for-continue-break.vert.out b/Test/baseResults/spv.for-continue-break.vert.out index 4ba1cb91f2..10ab24e9ea 100644 --- a/Test/baseResults/spv.for-continue-break.vert.out +++ b/Test/baseResults/spv.for-continue-break.vert.out @@ -1,6 +1,6 @@ spv.for-continue-break.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/spv.for-nobody.vert.out b/Test/baseResults/spv.for-nobody.vert.out index b965a58e4a..7a0b6de226 100644 --- a/Test/baseResults/spv.for-nobody.vert.out +++ b/Test/baseResults/spv.for-nobody.vert.out @@ -1,6 +1,6 @@ spv.for-nobody.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/spv.for-notest.vert.out b/Test/baseResults/spv.for-notest.vert.out index d3e96032a9..b08c6a153b 100644 --- a/Test/baseResults/spv.for-notest.vert.out +++ b/Test/baseResults/spv.for-notest.vert.out @@ -1,6 +1,6 @@ spv.for-notest.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.for-simple.vert.out b/Test/baseResults/spv.for-simple.vert.out index c4de996560..92f3083d1a 100644 --- a/Test/baseResults/spv.for-simple.vert.out +++ b/Test/baseResults/spv.for-simple.vert.out @@ -1,6 +1,6 @@ spv.for-simple.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.forLoop.frag.out b/Test/baseResults/spv.forLoop.frag.out index 3a36667776..2a359617b0 100644 --- a/Test/baseResults/spv.forLoop.frag.out +++ b/Test/baseResults/spv.forLoop.frag.out @@ -1,6 +1,6 @@ spv.forLoop.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 143 Capability Shader diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out index f166286586..77f3941685 100644 --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -1,6 +1,6 @@ spv.forwardFun.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.fragmentDensity-es.frag.out b/Test/baseResults/spv.fragmentDensity-es.frag.out index 253ce2ee3f..fb1407e4e0 100644 --- a/Test/baseResults/spv.fragmentDensity-es.frag.out +++ b/Test/baseResults/spv.fragmentDensity-es.frag.out @@ -1,6 +1,6 @@ spv.fragmentDensity-es.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.fragmentDensity.frag.out b/Test/baseResults/spv.fragmentDensity.frag.out index 4c831f29d8..43261cd1ad 100644 --- a/Test/baseResults/spv.fragmentDensity.frag.out +++ b/Test/baseResults/spv.fragmentDensity.frag.out @@ -1,6 +1,6 @@ spv.fragmentDensity.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out index ef800bdd01..29b290bbf4 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric.frag.out @@ -1,6 +1,6 @@ spv.fragmentShaderBarycentric.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out index 23926cd7f5..18f0ca376c 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric2.frag.out @@ -1,6 +1,6 @@ spv.fragmentShaderBarycentric2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out index 7fe21b34a0..60badf612d 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric3.frag.out @@ -1,6 +1,6 @@ spv.fragmentShaderBarycentric3.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out index 9218646dce..fc0e57648a 100644 --- a/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out +++ b/Test/baseResults/spv.fragmentShaderBarycentric4.frag.out @@ -1,6 +1,6 @@ spv.fragmentShaderBarycentric4.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/spv.fsi.frag.out b/Test/baseResults/spv.fsi.frag.out index 3e06aed0d4..1b5fbf4762 100644 --- a/Test/baseResults/spv.fsi.frag.out +++ b/Test/baseResults/spv.fsi.frag.out @@ -1,6 +1,6 @@ spv.fsi.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.fullyCovered.frag.out b/Test/baseResults/spv.fullyCovered.frag.out index ae7b426c94..cd730a4840 100644 --- a/Test/baseResults/spv.fullyCovered.frag.out +++ b/Test/baseResults/spv.fullyCovered.frag.out @@ -1,6 +1,6 @@ spv.fullyCovered.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.funcall.array.frag.out b/Test/baseResults/spv.funcall.array.frag.out index 616ba16c02..b4e2bfbe55 100644 --- a/Test/baseResults/spv.funcall.array.frag.out +++ b/Test/baseResults/spv.funcall.array.frag.out @@ -1,6 +1,6 @@ spv.funcall.array.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/spv.functionCall.frag.out b/Test/baseResults/spv.functionCall.frag.out index 58b046106d..52d167c357 100644 --- a/Test/baseResults/spv.functionCall.frag.out +++ b/Test/baseResults/spv.functionCall.frag.out @@ -4,7 +4,7 @@ WARNING: 0:4: varying deprecated in version 130; may be removed in future releas WARNING: 0:5: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 76 Capability Shader diff --git a/Test/baseResults/spv.functionNestedOpaque.vert.out b/Test/baseResults/spv.functionNestedOpaque.vert.out index 96a64aa3e2..58787600fb 100644 --- a/Test/baseResults/spv.functionNestedOpaque.vert.out +++ b/Test/baseResults/spv.functionNestedOpaque.vert.out @@ -1,7 +1,7 @@ spv.functionNestedOpaque.vert Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.functionParameterTypes.frag.out b/Test/baseResults/spv.functionParameterTypes.frag.out index 65a33da28c..19f5429278 100644 --- a/Test/baseResults/spv.functionParameterTypes.frag.out +++ b/Test/baseResults/spv.functionParameterTypes.frag.out @@ -1,6 +1,6 @@ spv.functionParameterTypes.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 34 Capability Shader diff --git a/Test/baseResults/spv.functionSemantics.frag.out b/Test/baseResults/spv.functionSemantics.frag.out index f12aae0976..dc8520d375 100644 --- a/Test/baseResults/spv.functionSemantics.frag.out +++ b/Test/baseResults/spv.functionSemantics.frag.out @@ -1,6 +1,6 @@ spv.functionSemantics.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 156 Capability Shader diff --git a/Test/baseResults/spv.glFragColor.frag.out b/Test/baseResults/spv.glFragColor.frag.out index df39129855..033769ffc5 100644 --- a/Test/baseResults/spv.glFragColor.frag.out +++ b/Test/baseResults/spv.glFragColor.frag.out @@ -1,6 +1,6 @@ spv.glFragColor.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out index 01df400f4b..041edb9794 100644 --- a/Test/baseResults/spv.glsl.register.autoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -1,6 +1,6 @@ spv.glsl.register.autoassign.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 142 Capability Shader diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out index e475a0086e..ccf688045b 100644 --- a/Test/baseResults/spv.glsl.register.noautoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out @@ -1,6 +1,6 @@ spv.glsl.register.noautoassign.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 142 Capability Shader diff --git a/Test/baseResults/spv.hlslDebugInfo.frag.out b/Test/baseResults/spv.hlslDebugInfo.frag.out index 9ce266dbfe..d68c0546af 100644 --- a/Test/baseResults/spv.hlslDebugInfo.frag.out +++ b/Test/baseResults/spv.hlslDebugInfo.frag.out @@ -1,6 +1,6 @@ spv.hlslDebugInfo.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader diff --git a/Test/baseResults/spv.hlslOffsets.vert.out b/Test/baseResults/spv.hlslOffsets.vert.out index cc71283910..d2d6443c52 100644 --- a/Test/baseResults/spv.hlslOffsets.vert.out +++ b/Test/baseResults/spv.hlslOffsets.vert.out @@ -18,7 +18,7 @@ Shader version: 450 0:? 'anon@0' (layout( binding=0 column_major std430) buffer block{layout( column_major std430) buffer highp float m0, layout( column_major std430) buffer highp 3-component vector of float m4, layout( column_major std430) buffer highp float m16, layout( column_major std430 offset=20) buffer highp 3-component vector of float m20, layout( column_major std430) buffer highp 3-component vector of float m32, layout( column_major std430) buffer highp 2-component vector of float m48, layout( column_major std430) buffer highp 2-component vector of float m56, layout( column_major std430) buffer highp float m64, layout( column_major std430) buffer highp 2-component vector of float m68, layout( column_major std430) buffer highp float m76, layout( column_major std430) buffer highp float m80, layout( column_major std430 offset=88) buffer highp 2-component vector of float m88, layout( column_major std430) buffer highp 2-component vector of float m96, layout( column_major std430) buffer 2-component vector of double m112}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 14 Capability Shader diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out index 5fbb922e12..f71a1cc26f 100644 --- a/Test/baseResults/spv.image.frag.out +++ b/Test/baseResults/spv.image.frag.out @@ -1,7 +1,7 @@ spv.image.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 405 Capability Shader diff --git a/Test/baseResults/spv.imageAtomic64.comp.out b/Test/baseResults/spv.imageAtomic64.comp.out index 0b1a0939c7..4317ae05f4 100644 --- a/Test/baseResults/spv.imageAtomic64.comp.out +++ b/Test/baseResults/spv.imageAtomic64.comp.out @@ -1,6 +1,6 @@ spv.imageAtomic64.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 28 Capability Shader diff --git a/Test/baseResults/spv.imageAtomic64.frag.out b/Test/baseResults/spv.imageAtomic64.frag.out index 30836978d6..1c002ab210 100644 --- a/Test/baseResults/spv.imageAtomic64.frag.out +++ b/Test/baseResults/spv.imageAtomic64.frag.out @@ -1,7 +1,7 @@ spv.imageAtomic64.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 503 Capability Shader diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out index b809474276..4a16d75a9d 100644 --- a/Test/baseResults/spv.imageLoadStoreLod.frag.out +++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out @@ -1,6 +1,6 @@ spv.imageLoadStoreLod.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 148 Capability Shader diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out index 676d99c1b7..53f5537796 100644 --- a/Test/baseResults/spv.int16.amd.frag.out +++ b/Test/baseResults/spv.int16.amd.frag.out @@ -1,6 +1,6 @@ spv.int16.amd.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 576 Capability Shader diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out index 3e10a7db24..ed788f87ab 100644 --- a/Test/baseResults/spv.int16.frag.out +++ b/Test/baseResults/spv.int16.frag.out @@ -1,6 +1,6 @@ spv.int16.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 549 Capability Shader diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out index af232ec3cd..2c260dd2b1 100644 --- a/Test/baseResults/spv.int32.frag.out +++ b/Test/baseResults/spv.int32.frag.out @@ -1,6 +1,6 @@ spv.int32.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 505 Capability Shader diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out index f2fd600f45..e335a54328 100644 --- a/Test/baseResults/spv.int64.frag.out +++ b/Test/baseResults/spv.int64.frag.out @@ -1,7 +1,7 @@ spv.int64.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 513 Capability Shader diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out index e9cd5f8653..3bfeb1a49a 100644 --- a/Test/baseResults/spv.int8.frag.out +++ b/Test/baseResults/spv.int8.frag.out @@ -1,6 +1,6 @@ spv.int8.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 544 Capability Shader diff --git a/Test/baseResults/spv.intOps.vert.out b/Test/baseResults/spv.intOps.vert.out index b57eac2b5c..67b11d2c86 100644 --- a/Test/baseResults/spv.intOps.vert.out +++ b/Test/baseResults/spv.intOps.vert.out @@ -1,6 +1,6 @@ spv.intOps.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 302 Capability Shader diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out index 6a69743234..bc50255267 100644 --- a/Test/baseResults/spv.intcoopmat.comp.out +++ b/Test/baseResults/spv.intcoopmat.comp.out @@ -1,6 +1,6 @@ spv.intcoopmat.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 262 Capability Shader diff --git a/Test/baseResults/spv.interpOps.frag.out b/Test/baseResults/spv.interpOps.frag.out index 808c1cdb69..62bd2b62c6 100644 --- a/Test/baseResults/spv.interpOps.frag.out +++ b/Test/baseResults/spv.interpOps.frag.out @@ -1,6 +1,6 @@ spv.interpOps.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 120 Capability Shader diff --git a/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out b/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out index d46b33f8dd..e15bb576f1 100644 --- a/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out +++ b/Test/baseResults/spv.intrinsicsSpirvByReference.vert.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvByReference.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out index c41dcc9c99..b926c5195e 100644 --- a/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out +++ b/Test/baseResults/spv.intrinsicsSpirvDecorate.frag.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvDecorate.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out index cdea3820e9..d5f935b51e 100644 --- a/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out +++ b/Test/baseResults/spv.intrinsicsSpirvExecutionMode.frag.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvExecutionMode.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader diff --git a/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out index 0e95e42b03..3103505933 100644 --- a/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out +++ b/Test/baseResults/spv.intrinsicsSpirvInstruction.vert.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvInstruction.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out index 096cc61179..48eef5eb89 100644 --- a/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out +++ b/Test/baseResults/spv.intrinsicsSpirvLiteral.vert.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvLiteral.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 13 Capability Shader diff --git a/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out b/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out index 4be5b91453..3bf1394cf9 100644 --- a/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out +++ b/Test/baseResults/spv.intrinsicsSpirvStorageClass.rchit.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvStorageClass.rchit // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 13 Capability RayTracingKHR diff --git a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out index f3937b495a..5d67de7085 100644 --- a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out +++ b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvType.rgen // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability RayQueryKHR diff --git a/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out b/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out index 75515be080..248af0831f 100644 --- a/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out +++ b/Test/baseResults/spv.intrinsicsSpirvTypeLocalVar.vert.out @@ -1,6 +1,6 @@ spv.intrinsicsSpirvTypeLocalVar.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.invariantAll.vert.out b/Test/baseResults/spv.invariantAll.vert.out index ec5ad30aca..d1703dca7a 100644 --- a/Test/baseResults/spv.invariantAll.vert.out +++ b/Test/baseResults/spv.invariantAll.vert.out @@ -1,6 +1,6 @@ spv.invariantAll.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/spv.layer.tese.out b/Test/baseResults/spv.layer.tese.out index 906340fe8c..fb78e63cf0 100644 --- a/Test/baseResults/spv.layer.tese.out +++ b/Test/baseResults/spv.layer.tese.out @@ -1,6 +1,6 @@ spv.layer.tese // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 10 Capability Tessellation diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out index 7de04d406a..2d5111c523 100644 --- a/Test/baseResults/spv.layoutNested.vert.out +++ b/Test/baseResults/spv.layoutNested.vert.out @@ -1,6 +1,6 @@ spv.layoutNested.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/spv.length.frag.out b/Test/baseResults/spv.length.frag.out index 8957a3cdc4..93199e7d25 100644 --- a/Test/baseResults/spv.length.frag.out +++ b/Test/baseResults/spv.length.frag.out @@ -1,6 +1,6 @@ spv.length.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.load.bool.array.interface.block.frag.out index f45736cbd0..7a80299029 100644 --- a/Test/baseResults/spv.load.bool.array.interface.block.frag.out +++ b/Test/baseResults/spv.load.bool.array.interface.block.frag.out @@ -1,6 +1,6 @@ spv.load.bool.array.interface.block.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index 637fb6d77d..a9ce54fb3f 100644 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -1,6 +1,6 @@ spv.localAggregates.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 136 Capability Shader diff --git a/Test/baseResults/spv.loops.frag.out b/Test/baseResults/spv.loops.frag.out index 7178f35846..17f4db458f 100644 --- a/Test/baseResults/spv.loops.frag.out +++ b/Test/baseResults/spv.loops.frag.out @@ -1,6 +1,6 @@ spv.loops.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 725 Capability Shader diff --git a/Test/baseResults/spv.loopsArtificial.frag.out b/Test/baseResults/spv.loopsArtificial.frag.out index 4de834dbe1..27a84fdc3c 100644 --- a/Test/baseResults/spv.loopsArtificial.frag.out +++ b/Test/baseResults/spv.loopsArtificial.frag.out @@ -1,6 +1,6 @@ spv.loopsArtificial.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 158 Capability Shader diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out index 932018fa05..1201887723 100644 --- a/Test/baseResults/spv.matFun.vert.out +++ b/Test/baseResults/spv.matFun.vert.out @@ -1,6 +1,6 @@ spv.matFun.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 103 Capability Shader diff --git a/Test/baseResults/spv.matrix.frag.out b/Test/baseResults/spv.matrix.frag.out index a287cda7b6..deeaf90d05 100644 --- a/Test/baseResults/spv.matrix.frag.out +++ b/Test/baseResults/spv.matrix.frag.out @@ -1,6 +1,6 @@ spv.matrix.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 286 Capability Shader diff --git a/Test/baseResults/spv.matrix2.frag.out b/Test/baseResults/spv.matrix2.frag.out index 13f2708d14..f9cdaebc11 100644 --- a/Test/baseResults/spv.matrix2.frag.out +++ b/Test/baseResults/spv.matrix2.frag.out @@ -1,6 +1,6 @@ spv.matrix2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 221 Capability Shader diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out index fce8c9ccd0..e0a5207f6d 100644 --- a/Test/baseResults/spv.memoryQualifier.frag.out +++ b/Test/baseResults/spv.memoryQualifier.frag.out @@ -1,7 +1,7 @@ spv.memoryQualifier.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 105 Capability Shader diff --git a/Test/baseResults/spv.memoryScopeSemantics.comp.out b/Test/baseResults/spv.memoryScopeSemantics.comp.out index 56c8470ebe..1078aa5f9e 100644 --- a/Test/baseResults/spv.memoryScopeSemantics.comp.out +++ b/Test/baseResults/spv.memoryScopeSemantics.comp.out @@ -1,6 +1,6 @@ spv.memoryScopeSemantics.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 169 Capability Shader diff --git a/Test/baseResults/spv.merge-unreachable.frag.out b/Test/baseResults/spv.merge-unreachable.frag.out index dedec9c8b0..2b919dce62 100644 --- a/Test/baseResults/spv.merge-unreachable.frag.out +++ b/Test/baseResults/spv.merge-unreachable.frag.out @@ -1,6 +1,6 @@ spv.merge-unreachable.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 25 Capability Shader diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out index b26122ef79..f6b0f05cdf 100644 --- a/Test/baseResults/spv.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 148 Capability ClipDistance diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out index 86a4fd2e24..111fa2bc52 100644 --- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderPerViewBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 126 Capability PerViewAttributesNV diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out index e9eaed3fcf..cd6a95b888 100644 --- a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderPerViewUserDefined.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 108 Capability MeshShadingNV diff --git a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out index bfd2d85b9c..60422d66e3 100644 --- a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderRedeclBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 129 Capability ClipDistance diff --git a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out index 9f881e6161..f6c20383c1 100644 --- a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderRedeclPerViewBuiltins.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 120 Capability PerViewAttributesNV diff --git a/Test/baseResults/spv.meshShaderSharedMem.mesh.out b/Test/baseResults/spv.meshShaderSharedMem.mesh.out index 7960ffaaf4..9ad333c85b 100644 --- a/Test/baseResults/spv.meshShaderSharedMem.mesh.out +++ b/Test/baseResults/spv.meshShaderSharedMem.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderSharedMem.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 77 Capability StorageImageWriteWithoutFormat diff --git a/Test/baseResults/spv.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.meshShaderTaskMem.mesh.out index be8043929b..fcbec3d662 100644 --- a/Test/baseResults/spv.meshShaderTaskMem.mesh.out +++ b/Test/baseResults/spv.meshShaderTaskMem.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderTaskMem.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 58 Capability MeshShadingNV diff --git a/Test/baseResults/spv.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.meshShaderUserDefined.mesh.out index 01ee933d0d..0e5fd05034 100644 --- a/Test/baseResults/spv.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.meshShaderUserDefined.mesh.out @@ -1,6 +1,6 @@ spv.meshShaderUserDefined.mesh // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 141 Capability MeshShadingNV diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out index 9fed1915a7..9442f97314 100644 --- a/Test/baseResults/spv.meshTaskShader.task.out +++ b/Test/baseResults/spv.meshTaskShader.task.out @@ -1,6 +1,6 @@ spv.meshTaskShader.task // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 116 Capability StorageImageWriteWithoutFormat diff --git a/Test/baseResults/spv.multiStruct.comp.out b/Test/baseResults/spv.multiStruct.comp.out index 13a3528f8f..0ff605ccc9 100644 --- a/Test/baseResults/spv.multiStruct.comp.out +++ b/Test/baseResults/spv.multiStruct.comp.out @@ -1,6 +1,6 @@ spv.multiStruct.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 161 Capability Shader diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out index eec734a352..50f4b78b8d 100644 --- a/Test/baseResults/spv.multiStructFuncall.frag.out +++ b/Test/baseResults/spv.multiStructFuncall.frag.out @@ -1,6 +1,6 @@ spv.multiStructFuncall.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 65 Capability Shader diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out index a1575d988e..c6afe8f6e8 100644 --- a/Test/baseResults/spv.multiView.frag.out +++ b/Test/baseResults/spv.multiView.frag.out @@ -1,6 +1,6 @@ spv.multiView.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out index b1c29f9bb9..9527951232 100644 --- a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out +++ b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out @@ -1,6 +1,6 @@ spv.multiviewPerViewAttributes.tesc // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 41 Capability Tessellation diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out index 0a4e1f0b62..8268e5deaf 100644 --- a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out +++ b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out @@ -1,6 +1,6 @@ spv.multiviewPerViewAttributes.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out index 332ca66220..723fe21a42 100644 --- a/Test/baseResults/spv.newTexture.frag.out +++ b/Test/baseResults/spv.newTexture.frag.out @@ -1,7 +1,7 @@ spv.newTexture.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 284 Capability Shader diff --git a/Test/baseResults/spv.noBuiltInLoc.vert.out b/Test/baseResults/spv.noBuiltInLoc.vert.out index 6322052092..65ee22a618 100644 --- a/Test/baseResults/spv.noBuiltInLoc.vert.out +++ b/Test/baseResults/spv.noBuiltInLoc.vert.out @@ -1,6 +1,6 @@ spv.noBuiltInLoc.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.noDeadDecorations.vert.out b/Test/baseResults/spv.noDeadDecorations.vert.out index 4a4d7b38ad..0185eaf3af 100644 --- a/Test/baseResults/spv.noDeadDecorations.vert.out +++ b/Test/baseResults/spv.noDeadDecorations.vert.out @@ -1,6 +1,6 @@ spv.noDeadDecorations.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/spv.noWorkgroup.comp.out b/Test/baseResults/spv.noWorkgroup.comp.out index a8969e026f..e92ebcb264 100644 --- a/Test/baseResults/spv.noWorkgroup.comp.out +++ b/Test/baseResults/spv.noWorkgroup.comp.out @@ -1,6 +1,6 @@ spv.noWorkgroup.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.nonSquare.vert.out b/Test/baseResults/spv.nonSquare.vert.out index 3728dd5dec..94401be875 100644 --- a/Test/baseResults/spv.nonSquare.vert.out +++ b/Test/baseResults/spv.nonSquare.vert.out @@ -1,6 +1,6 @@ spv.nonSquare.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 90 Capability Shader diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out index f6febc9b94..26b020c555 100644 --- a/Test/baseResults/spv.nonuniform.frag.out +++ b/Test/baseResults/spv.nonuniform.frag.out @@ -1,6 +1,6 @@ spv.nonuniform.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 289 Capability Shader diff --git a/Test/baseResults/spv.nonuniform2.frag.out b/Test/baseResults/spv.nonuniform2.frag.out index bb89ba79a2..b9d64ddce9 100644 --- a/Test/baseResults/spv.nonuniform2.frag.out +++ b/Test/baseResults/spv.nonuniform2.frag.out @@ -1,6 +1,6 @@ spv.nonuniform2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.nonuniform3.frag.out b/Test/baseResults/spv.nonuniform3.frag.out index b48916c591..119a6d9bb7 100644 --- a/Test/baseResults/spv.nonuniform3.frag.out +++ b/Test/baseResults/spv.nonuniform3.frag.out @@ -1,6 +1,6 @@ spv.nonuniform3.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 32 Capability Shader diff --git a/Test/baseResults/spv.nonuniform4.frag.out b/Test/baseResults/spv.nonuniform4.frag.out index 6bfc957532..4442e5f512 100644 --- a/Test/baseResults/spv.nonuniform4.frag.out +++ b/Test/baseResults/spv.nonuniform4.frag.out @@ -1,6 +1,6 @@ spv.nonuniform4.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.nonuniform5.frag.out b/Test/baseResults/spv.nonuniform5.frag.out index ebbb6f41b9..abf10c2c3f 100644 --- a/Test/baseResults/spv.nonuniform5.frag.out +++ b/Test/baseResults/spv.nonuniform5.frag.out @@ -1,6 +1,6 @@ spv.nonuniform5.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.nullInit.comp.out b/Test/baseResults/spv.nullInit.comp.out index b7908b57d2..f43218519b 100755 --- a/Test/baseResults/spv.nullInit.comp.out +++ b/Test/baseResults/spv.nullInit.comp.out @@ -1,6 +1,6 @@ spv.nullInit.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 37 Capability Shader diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out index a1a9f311f5..d753f2f04c 100644 --- a/Test/baseResults/spv.offsets.frag.out +++ b/Test/baseResults/spv.offsets.frag.out @@ -1,6 +1,6 @@ spv.offsets.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 15 Capability Shader diff --git a/Test/baseResults/spv.paramMemory.420.frag.out b/Test/baseResults/spv.paramMemory.420.frag.out index 4cdc35f73e..bc11df4fea 100644 --- a/Test/baseResults/spv.paramMemory.420.frag.out +++ b/Test/baseResults/spv.paramMemory.420.frag.out @@ -1,7 +1,7 @@ spv.paramMemory.420.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 69 Capability Shader diff --git a/Test/baseResults/spv.paramMemory.frag.out b/Test/baseResults/spv.paramMemory.frag.out index a535cd3fbb..ebb2ccbb47 100644 --- a/Test/baseResults/spv.paramMemory.frag.out +++ b/Test/baseResults/spv.paramMemory.frag.out @@ -1,7 +1,7 @@ spv.paramMemory.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 64 Capability Shader diff --git a/Test/baseResults/spv.perprimitiveNV.frag.out b/Test/baseResults/spv.perprimitiveNV.frag.out index 2a37f2b5d2..079a5f471e 100644 --- a/Test/baseResults/spv.perprimitiveNV.frag.out +++ b/Test/baseResults/spv.perprimitiveNV.frag.out @@ -1,6 +1,6 @@ spv.perprimitiveNV.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out index c103b7bb8b..7218254d27 100644 --- a/Test/baseResults/spv.pp.line.frag.out +++ b/Test/baseResults/spv.pp.line.frag.out @@ -3,7 +3,7 @@ WARNING: spv.pp.line.frag:7: varying deprecated in version 130; may be removed i WARNING: spv.pp.line.frag:8: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 84 Capability Shader diff --git a/Test/baseResults/spv.precise.tesc.out b/Test/baseResults/spv.precise.tesc.out index e13c612101..84617caeae 100644 --- a/Test/baseResults/spv.precise.tesc.out +++ b/Test/baseResults/spv.precise.tesc.out @@ -1,6 +1,6 @@ spv.precise.tesc // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 72 Capability Tessellation diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out index 7db4ed0141..6fe183d218 100644 --- a/Test/baseResults/spv.precise.tese.out +++ b/Test/baseResults/spv.precise.tese.out @@ -1,6 +1,6 @@ spv.precise.tese // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 119 Capability Tessellation diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out index 1d31230fa5..8144dfbf11 100644 --- a/Test/baseResults/spv.precision.frag.out +++ b/Test/baseResults/spv.precision.frag.out @@ -1,6 +1,6 @@ spv.precision.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 165 Capability Shader diff --git a/Test/baseResults/spv.precisionArgs.frag.out b/Test/baseResults/spv.precisionArgs.frag.out index ae54a58aca..a35b1d3ce9 100644 --- a/Test/baseResults/spv.precisionArgs.frag.out +++ b/Test/baseResults/spv.precisionArgs.frag.out @@ -1,6 +1,6 @@ spv.precisionArgs.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 83 Capability Shader diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out index c4cd1eb7b6..40ca536b20 100644 --- a/Test/baseResults/spv.precisionNonESSamp.frag.out +++ b/Test/baseResults/spv.precisionNonESSamp.frag.out @@ -1,6 +1,6 @@ spv.precisionNonESSamp.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 47 Capability Shader diff --git a/Test/baseResults/spv.precisionTexture.frag.out b/Test/baseResults/spv.precisionTexture.frag.out index d5e21b6c91..e46b2d79bb 100644 --- a/Test/baseResults/spv.precisionTexture.frag.out +++ b/Test/baseResults/spv.precisionTexture.frag.out @@ -1,6 +1,6 @@ spv.precisionTexture.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 66 Capability Shader diff --git a/Test/baseResults/spv.prepost.frag.out b/Test/baseResults/spv.prepost.frag.out index 5fd6b3798c..b1f2d5e409 100644 --- a/Test/baseResults/spv.prepost.frag.out +++ b/Test/baseResults/spv.prepost.frag.out @@ -1,6 +1,6 @@ spv.prepost.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 94 Capability Shader diff --git a/Test/baseResults/spv.privateVariableTypes.frag.out b/Test/baseResults/spv.privateVariableTypes.frag.out index d5ad68abb7..b09062a83e 100644 --- a/Test/baseResults/spv.privateVariableTypes.frag.out +++ b/Test/baseResults/spv.privateVariableTypes.frag.out @@ -1,6 +1,6 @@ spv.privateVariableTypes.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.pushConstant.vert.out b/Test/baseResults/spv.pushConstant.vert.out index 888d134bea..f6df47d578 100644 --- a/Test/baseResults/spv.pushConstant.vert.out +++ b/Test/baseResults/spv.pushConstant.vert.out @@ -1,6 +1,6 @@ spv.pushConstant.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.pushConstantAnon.vert.out b/Test/baseResults/spv.pushConstantAnon.vert.out index 75efdbc1b4..ca7d345b32 100644 --- a/Test/baseResults/spv.pushConstantAnon.vert.out +++ b/Test/baseResults/spv.pushConstantAnon.vert.out @@ -1,6 +1,6 @@ spv.pushConstantAnon.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.qualifiers.vert.out b/Test/baseResults/spv.qualifiers.vert.out index 4180e17653..0f0f347a87 100644 --- a/Test/baseResults/spv.qualifiers.vert.out +++ b/Test/baseResults/spv.qualifiers.vert.out @@ -1,6 +1,6 @@ spv.qualifiers.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out index 1e38661656..1e18387d14 100644 --- a/Test/baseResults/spv.queryL.frag.out +++ b/Test/baseResults/spv.queryL.frag.out @@ -1,7 +1,7 @@ spv.queryL.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 224 Capability Shader diff --git a/Test/baseResults/spv.queueFamilyScope.comp.out b/Test/baseResults/spv.queueFamilyScope.comp.out index 9c239df2d9..49a59a383e 100644 --- a/Test/baseResults/spv.queueFamilyScope.comp.out +++ b/Test/baseResults/spv.queueFamilyScope.comp.out @@ -1,6 +1,6 @@ spv.queueFamilyScope.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out index 1a725c13f3..cecde79580 100644 --- a/Test/baseResults/spv.rankShift.comp.out +++ b/Test/baseResults/spv.rankShift.comp.out @@ -1,6 +1,6 @@ spv.rankShift.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out index 26b149b802..61d920c256 100644 --- a/Test/baseResults/spv.register.autoassign-2.frag.out +++ b/Test/baseResults/spv.register.autoassign-2.frag.out @@ -1,6 +1,6 @@ spv.register.autoassign-2.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 47 Capability Shader diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out index e347ce21d8..b4db04e650 100644 --- a/Test/baseResults/spv.register.autoassign.frag.out +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -1,6 +1,6 @@ spv.register.autoassign.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 155 Capability Shader diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out index 4381dababd..84a439a7ab 100644 --- a/Test/baseResults/spv.register.autoassign.rangetest.frag.out +++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out @@ -3,7 +3,7 @@ INTERNAL ERROR: mapped binding out of range: g_tSamp INTERNAL ERROR: mapped binding out of range: g_tScene // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 52 Capability Shader diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out index ed8d507535..8c8cd3ccc7 100644 --- a/Test/baseResults/spv.register.noautoassign.frag.out +++ b/Test/baseResults/spv.register.noautoassign.frag.out @@ -1,6 +1,6 @@ spv.register.noautoassign.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 155 Capability Shader diff --git a/Test/baseResults/spv.register.subpass.frag.out b/Test/baseResults/spv.register.subpass.frag.out index acd447d6c0..7c69c91818 100644 --- a/Test/baseResults/spv.register.subpass.frag.out +++ b/Test/baseResults/spv.register.subpass.frag.out @@ -1,6 +1,6 @@ spv.register.subpass.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out index 27db3368a2..0c46493c15 100644 --- a/Test/baseResults/spv.rw.autoassign.frag.out +++ b/Test/baseResults/spv.rw.autoassign.frag.out @@ -1,6 +1,6 @@ spv.rw.autoassign.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 45 Capability Shader diff --git a/Test/baseResults/spv.sample.frag.out b/Test/baseResults/spv.sample.frag.out index f43fc98c47..631a55967c 100644 --- a/Test/baseResults/spv.sample.frag.out +++ b/Test/baseResults/spv.sample.frag.out @@ -1,6 +1,6 @@ spv.sample.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 13 Capability Shader diff --git a/Test/baseResults/spv.sampleId.frag.out b/Test/baseResults/spv.sampleId.frag.out index 8f9bc3874c..7f3232d122 100644 --- a/Test/baseResults/spv.sampleId.frag.out +++ b/Test/baseResults/spv.sampleId.frag.out @@ -1,6 +1,6 @@ spv.sampleId.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out index 9b401d880b..6f22c5ab39 100644 --- a/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out +++ b/Test/baseResults/spv.sampleMaskOverrideCoverage.frag.out @@ -1,6 +1,6 @@ spv.sampleMaskOverrideCoverage.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.samplePosition.frag.out b/Test/baseResults/spv.samplePosition.frag.out index 80128303b5..6c98adddbc 100644 --- a/Test/baseResults/spv.samplePosition.frag.out +++ b/Test/baseResults/spv.samplePosition.frag.out @@ -1,6 +1,6 @@ spv.samplePosition.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 30 Capability Shader diff --git a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out index c2c431df22..447991225e 100644 --- a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out +++ b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out @@ -1,6 +1,6 @@ spv.samplerlessTextureFunctions.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 51 Capability Shader diff --git a/Test/baseResults/spv.scalarlayout.frag.out b/Test/baseResults/spv.scalarlayout.frag.out index e08721f8b0..977f06b7bb 100644 --- a/Test/baseResults/spv.scalarlayout.frag.out +++ b/Test/baseResults/spv.scalarlayout.frag.out @@ -1,6 +1,6 @@ spv.scalarlayout.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.scalarlayoutfloat16.frag.out b/Test/baseResults/spv.scalarlayoutfloat16.frag.out index 4f22730e3e..93c0d2a134 100644 --- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out +++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out @@ -1,6 +1,6 @@ spv.scalarlayoutfloat16.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.separate.frag.out b/Test/baseResults/spv.separate.frag.out index d31f8973ed..b960934c37 100644 --- a/Test/baseResults/spv.separate.frag.out +++ b/Test/baseResults/spv.separate.frag.out @@ -1,7 +1,7 @@ spv.separate.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 319 Capability Shader diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out index 245b4bd8d1..b311c707aa 100644 --- a/Test/baseResults/spv.set.vert.out +++ b/Test/baseResults/spv.set.vert.out @@ -1,6 +1,6 @@ spv.set.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index 2a0106e661..143b2e931f 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -1,6 +1,6 @@ spv.shaderBallot.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 397 Capability Shader diff --git a/Test/baseResults/spv.shaderBallotAMD.comp.out b/Test/baseResults/spv.shaderBallotAMD.comp.out index 9ea5ba0046..2d8ad553ab 100644 --- a/Test/baseResults/spv.shaderBallotAMD.comp.out +++ b/Test/baseResults/spv.shaderBallotAMD.comp.out @@ -1,6 +1,6 @@ spv.shaderBallotAMD.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1343 Capability Shader diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out index 5baabbf5ea..a84c2fea01 100644 --- a/Test/baseResults/spv.shaderDrawParams.vert.out +++ b/Test/baseResults/spv.shaderDrawParams.vert.out @@ -1,6 +1,6 @@ spv.shaderDrawParams.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 53 Capability Shader diff --git a/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/Test/baseResults/spv.shaderFragMaskAMD.frag.out index ab48e04e70..3b461142be 100644 --- a/Test/baseResults/spv.shaderFragMaskAMD.frag.out +++ b/Test/baseResults/spv.shaderFragMaskAMD.frag.out @@ -1,6 +1,6 @@ spv.shaderFragMaskAMD.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 80 Capability Shader diff --git a/Test/baseResults/spv.shaderGroupVote.comp.out b/Test/baseResults/spv.shaderGroupVote.comp.out index 4c45e33cf7..0724170123 100644 --- a/Test/baseResults/spv.shaderGroupVote.comp.out +++ b/Test/baseResults/spv.shaderGroupVote.comp.out @@ -1,6 +1,6 @@ spv.shaderGroupVote.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.shaderImageFootprint.frag.out b/Test/baseResults/spv.shaderImageFootprint.frag.out index ea8873c421..743fd36593 100644 --- a/Test/baseResults/spv.shaderImageFootprint.frag.out +++ b/Test/baseResults/spv.shaderImageFootprint.frag.out @@ -1,6 +1,6 @@ spv.shaderImageFootprint.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 622 Capability Shader diff --git a/Test/baseResults/spv.shaderStencilExport.frag.out b/Test/baseResults/spv.shaderStencilExport.frag.out index 9bb217898f..ca85473acc 100644 --- a/Test/baseResults/spv.shaderStencilExport.frag.out +++ b/Test/baseResults/spv.shaderStencilExport.frag.out @@ -1,6 +1,6 @@ spv.shaderStencilExport.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 10 Capability Shader diff --git a/Test/baseResults/spv.shadingRate.frag.out b/Test/baseResults/spv.shadingRate.frag.out index 866ae60946..86079ce0f6 100644 --- a/Test/baseResults/spv.shadingRate.frag.out +++ b/Test/baseResults/spv.shadingRate.frag.out @@ -1,6 +1,6 @@ spv.shadingRate.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 21 Capability Shader diff --git a/Test/baseResults/spv.shiftOps.frag.out b/Test/baseResults/spv.shiftOps.frag.out index 03f7546727..6f232a0864 100644 --- a/Test/baseResults/spv.shiftOps.frag.out +++ b/Test/baseResults/spv.shiftOps.frag.out @@ -1,6 +1,6 @@ spv.shiftOps.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 38 Capability Shader diff --git a/Test/baseResults/spv.shortCircuit.frag.out b/Test/baseResults/spv.shortCircuit.frag.out index 3c706f7715..017c88d86d 100644 --- a/Test/baseResults/spv.shortCircuit.frag.out +++ b/Test/baseResults/spv.shortCircuit.frag.out @@ -1,6 +1,6 @@ spv.shortCircuit.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 147 Capability Shader diff --git a/Test/baseResults/spv.simpleFunctionCall.frag.out b/Test/baseResults/spv.simpleFunctionCall.frag.out index bda91b7f23..8e879bbd5d 100644 --- a/Test/baseResults/spv.simpleFunctionCall.frag.out +++ b/Test/baseResults/spv.simpleFunctionCall.frag.out @@ -1,6 +1,6 @@ spv.simpleFunctionCall.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader diff --git a/Test/baseResults/spv.simpleMat.vert.out b/Test/baseResults/spv.simpleMat.vert.out index cc9b2b2182..e1accbf6c1 100644 --- a/Test/baseResults/spv.simpleMat.vert.out +++ b/Test/baseResults/spv.simpleMat.vert.out @@ -2,7 +2,7 @@ spv.simpleMat.vert WARNING: 0:3: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.smBuiltins.frag.out b/Test/baseResults/spv.smBuiltins.frag.out index 3fafa04c75..1619cf635e 100644 --- a/Test/baseResults/spv.smBuiltins.frag.out +++ b/Test/baseResults/spv.smBuiltins.frag.out @@ -1,6 +1,6 @@ spv.smBuiltins.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.smBuiltins.vert.out b/Test/baseResults/spv.smBuiltins.vert.out index 91ad637e99..c03c3cd959 100644 --- a/Test/baseResults/spv.smBuiltins.vert.out +++ b/Test/baseResults/spv.smBuiltins.vert.out @@ -1,6 +1,6 @@ spv.smBuiltins.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 29 Capability Shader diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out index bf44b81e00..84ca757c1f 100644 --- a/Test/baseResults/spv.sparseTexture.frag.out +++ b/Test/baseResults/spv.sparseTexture.frag.out @@ -1,7 +1,7 @@ spv.sparseTexture.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 442 Capability Shader diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out index f42326d465..e56297c262 100644 --- a/Test/baseResults/spv.sparseTextureClamp.frag.out +++ b/Test/baseResults/spv.sparseTextureClamp.frag.out @@ -1,7 +1,7 @@ spv.sparseTextureClamp.frag Validation failed // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 360 Capability Shader diff --git a/Test/baseResults/spv.specConst.vert.out b/Test/baseResults/spv.specConst.vert.out index a510dc9af8..a2e234bd56 100644 --- a/Test/baseResults/spv.specConst.vert.out +++ b/Test/baseResults/spv.specConst.vert.out @@ -1,6 +1,6 @@ spv.specConst.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.specConstant.comp.out b/Test/baseResults/spv.specConstant.comp.out index a4e769fdcb..bfe7114245 100644 --- a/Test/baseResults/spv.specConstant.comp.out +++ b/Test/baseResults/spv.specConstant.comp.out @@ -1,6 +1,6 @@ spv.specConstant.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.specConstant.float16.comp.out b/Test/baseResults/spv.specConstant.float16.comp.out index be02057c1d..3381fc7e77 100644 --- a/Test/baseResults/spv.specConstant.float16.comp.out +++ b/Test/baseResults/spv.specConstant.float16.comp.out @@ -1,6 +1,6 @@ spv.specConstant.float16.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.specConstant.int16.comp.out b/Test/baseResults/spv.specConstant.int16.comp.out index 7bb4c8f333..17f385be48 100644 --- a/Test/baseResults/spv.specConstant.int16.comp.out +++ b/Test/baseResults/spv.specConstant.int16.comp.out @@ -1,6 +1,6 @@ spv.specConstant.int16.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.specConstant.int8.comp.out b/Test/baseResults/spv.specConstant.int8.comp.out index 0ab3bdc281..c906d71166 100644 --- a/Test/baseResults/spv.specConstant.int8.comp.out +++ b/Test/baseResults/spv.specConstant.int8.comp.out @@ -1,6 +1,6 @@ spv.specConstant.int8.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.specConstant.vert.out b/Test/baseResults/spv.specConstant.vert.out index f7d4381105..cc126ab5c0 100644 --- a/Test/baseResults/spv.specConstant.vert.out +++ b/Test/baseResults/spv.specConstant.vert.out @@ -1,6 +1,6 @@ spv.specConstant.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 81 Capability Shader diff --git a/Test/baseResults/spv.specConstantComposite.vert.out b/Test/baseResults/spv.specConstantComposite.vert.out index 15777d8f38..ce9ce066a9 100644 --- a/Test/baseResults/spv.specConstantComposite.vert.out +++ b/Test/baseResults/spv.specConstantComposite.vert.out @@ -1,6 +1,6 @@ spv.specConstantComposite.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.specConstantOperations.vert.out b/Test/baseResults/spv.specConstantOperations.vert.out index 53664601b8..cb1f73926d 100644 --- a/Test/baseResults/spv.specConstantOperations.vert.out +++ b/Test/baseResults/spv.specConstantOperations.vert.out @@ -1,6 +1,6 @@ spv.specConstantOperations.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 162 Capability Shader diff --git a/Test/baseResults/spv.specTexture.frag.out b/Test/baseResults/spv.specTexture.frag.out index 4ca488eb69..b599e3565e 100644 --- a/Test/baseResults/spv.specTexture.frag.out +++ b/Test/baseResults/spv.specTexture.frag.out @@ -1,6 +1,6 @@ spv.specTexture.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Shader diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out index e2db863c65..35381055c4 100644 --- a/Test/baseResults/spv.ssbo.autoassign.frag.out +++ b/Test/baseResults/spv.ssbo.autoassign.frag.out @@ -1,6 +1,6 @@ spv.ssbo.autoassign.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 99 Capability Shader diff --git a/Test/baseResults/spv.ssboAlias.frag.out b/Test/baseResults/spv.ssboAlias.frag.out index cdcd222cd1..0a5a12b9b4 100644 --- a/Test/baseResults/spv.ssboAlias.frag.out +++ b/Test/baseResults/spv.ssboAlias.frag.out @@ -1,6 +1,6 @@ spv.ssboAlias.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 44 Capability Shader diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out index f01e53bf8a..100b553404 100644 --- a/Test/baseResults/spv.stereoViewRendering.tesc.out +++ b/Test/baseResults/spv.stereoViewRendering.tesc.out @@ -1,6 +1,6 @@ spv.stereoViewRendering.tesc // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 42 Capability Tessellation diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out index e74921af9e..530d75e1f9 100644 --- a/Test/baseResults/spv.stereoViewRendering.vert.out +++ b/Test/baseResults/spv.stereoViewRendering.vert.out @@ -1,6 +1,6 @@ spv.stereoViewRendering.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/spv.storageBuffer.vert.out b/Test/baseResults/spv.storageBuffer.vert.out index 2411d2f7f0..fdbb4db3c4 100644 --- a/Test/baseResults/spv.storageBuffer.vert.out +++ b/Test/baseResults/spv.storageBuffer.vert.out @@ -1,6 +1,6 @@ spv.storageBuffer.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out index 8e82cac324..a0cfb54233 100644 --- a/Test/baseResults/spv.structAssignment.frag.out +++ b/Test/baseResults/spv.structAssignment.frag.out @@ -3,7 +3,7 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to "precision mediump int; precision highp float;" // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out index 94fc4e24c5..a528a599ca 100644 --- a/Test/baseResults/spv.structDeref.frag.out +++ b/Test/baseResults/spv.structDeref.frag.out @@ -1,6 +1,6 @@ spv.structDeref.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 123 Capability Shader diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out index 00fed0e015..6b39c297e4 100644 --- a/Test/baseResults/spv.structure.frag.out +++ b/Test/baseResults/spv.structure.frag.out @@ -1,6 +1,6 @@ spv.structure.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out index a3e427f0cf..a882a22e68 100644 --- a/Test/baseResults/spv.subgroup.frag.out +++ b/Test/baseResults/spv.subgroup.frag.out @@ -1,6 +1,6 @@ spv.subgroup.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 17 Capability Shader diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out index 27f05b2f9e..3340595030 100644 --- a/Test/baseResults/spv.subgroup.geom.out +++ b/Test/baseResults/spv.subgroup.geom.out @@ -1,6 +1,6 @@ spv.subgroup.geom // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Geometry diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out index 8322a4a165..aaac4b8075 100644 --- a/Test/baseResults/spv.subgroup.tesc.out +++ b/Test/baseResults/spv.subgroup.tesc.out @@ -1,6 +1,6 @@ spv.subgroup.tesc // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Tessellation diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out index 360f98bef7..f989981c28 100644 --- a/Test/baseResults/spv.subgroup.tese.out +++ b/Test/baseResults/spv.subgroup.tese.out @@ -1,6 +1,6 @@ spv.subgroup.tese // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Tessellation diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out index 6de8a0ae01..6add1c7caa 100644 --- a/Test/baseResults/spv.subgroup.vert.out +++ b/Test/baseResults/spv.subgroup.vert.out @@ -1,6 +1,6 @@ spv.subgroup.vert // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 26 Capability Shader diff --git a/Test/baseResults/spv.subgroupArithmetic.comp.out b/Test/baseResults/spv.subgroupArithmetic.comp.out index 87bfa3115d..bd71fc7cf8 100644 --- a/Test/baseResults/spv.subgroupArithmetic.comp.out +++ b/Test/baseResults/spv.subgroupArithmetic.comp.out @@ -1,6 +1,6 @@ spv.subgroupArithmetic.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 2386 Capability Shader diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out index 65cfa7a464..51cb7ac183 100644 --- a/Test/baseResults/spv.subgroupBallot.comp.out +++ b/Test/baseResults/spv.subgroupBallot.comp.out @@ -1,6 +1,6 @@ spv.subgroupBallot.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 437 Capability Shader diff --git a/Test/baseResults/spv.subgroupBasic.comp.out b/Test/baseResults/spv.subgroupBasic.comp.out index fb9fa0cb50..51eae75965 100644 --- a/Test/baseResults/spv.subgroupBasic.comp.out +++ b/Test/baseResults/spv.subgroupBasic.comp.out @@ -1,6 +1,6 @@ spv.subgroupBasic.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.subgroupClustered.comp.out b/Test/baseResults/spv.subgroupClustered.comp.out index a2e486dd68..2529eeff9a 100644 --- a/Test/baseResults/spv.subgroupClustered.comp.out +++ b/Test/baseResults/spv.subgroupClustered.comp.out @@ -1,6 +1,6 @@ spv.subgroupClustered.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 838 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out index 828ce61636..51c2a5e27b 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesArithmetic.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 4218 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out index 60f01bccf1..0a706a504d 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesBallot.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 498 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out index 98a7a89011..f876c5a55c 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesClustered.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1458 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out index 47576d9f7f..f2cb8cb1cc 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesPartitioned.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1743 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out index f385545e63..8aa7c12042 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesQuad.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 918 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out index eaea708bcd..0051bd7d83 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesShuffle.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 554 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out index 8665c46c26..46244baa87 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesShuffleRelative.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 554 Capability Shader diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out index 6fde1f938b..a53847ca7a 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out @@ -1,6 +1,6 @@ spv.subgroupExtendedTypesVote.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 277 Capability Shader diff --git a/Test/baseResults/spv.subgroupPartitioned.comp.out b/Test/baseResults/spv.subgroupPartitioned.comp.out index 0e7b7ef294..922d393edf 100644 --- a/Test/baseResults/spv.subgroupPartitioned.comp.out +++ b/Test/baseResults/spv.subgroupPartitioned.comp.out @@ -1,6 +1,6 @@ spv.subgroupPartitioned.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 2807 Capability Shader diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out index 143d01d779..b418148cd4 100644 --- a/Test/baseResults/spv.subgroupQuad.comp.out +++ b/Test/baseResults/spv.subgroupQuad.comp.out @@ -1,6 +1,6 @@ spv.subgroupQuad.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 696 Capability Shader diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out index 02cf89f8bf..d54e8ae999 100644 --- a/Test/baseResults/spv.subgroupShuffle.comp.out +++ b/Test/baseResults/spv.subgroupShuffle.comp.out @@ -1,6 +1,6 @@ spv.subgroupShuffle.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 420 Capability Shader diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out index e8486b660e..6bae808f80 100644 --- a/Test/baseResults/spv.subgroupShuffleRelative.comp.out +++ b/Test/baseResults/spv.subgroupShuffleRelative.comp.out @@ -1,6 +1,6 @@ spv.subgroupShuffleRelative.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 420 Capability Shader diff --git a/Test/baseResults/spv.subgroupSizeARB.frag.out b/Test/baseResults/spv.subgroupSizeARB.frag.out index 7ce781837f..5eeb0c094a 100644 --- a/Test/baseResults/spv.subgroupSizeARB.frag.out +++ b/Test/baseResults/spv.subgroupSizeARB.frag.out @@ -1,6 +1,6 @@ spv.subgroupSizeARB.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 12 Capability Shader diff --git a/Test/baseResults/spv.subgroupUniformControlFlow.vert.out b/Test/baseResults/spv.subgroupUniformControlFlow.vert.out index b7fce5a3ca..a18918632c 100644 --- a/Test/baseResults/spv.subgroupUniformControlFlow.vert.out +++ b/Test/baseResults/spv.subgroupUniformControlFlow.vert.out @@ -2,7 +2,7 @@ spv.subgroupUniformControlFlow.vert WARNING: 0:7: '' : attribute with arguments not recognized, skipping // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 6 Capability Shader diff --git a/Test/baseResults/spv.subgroupVote.comp.out b/Test/baseResults/spv.subgroupVote.comp.out index ad8ffaaa35..fa0a01fb42 100644 --- a/Test/baseResults/spv.subgroupVote.comp.out +++ b/Test/baseResults/spv.subgroupVote.comp.out @@ -1,6 +1,6 @@ spv.subgroupVote.comp // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 216 Capability Shader diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out index 6b534a6ab2..bf49b08df0 100644 --- a/Test/baseResults/spv.subpass.frag.out +++ b/Test/baseResults/spv.subpass.frag.out @@ -1,6 +1,6 @@ spv.subpass.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 67 Capability Shader diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out index 9c68657f2c..4e7db4df5d 100644 --- a/Test/baseResults/spv.switch.frag.out +++ b/Test/baseResults/spv.switch.frag.out @@ -4,7 +4,7 @@ WARNING: 0:134: 'switch' : last case/default label not followed by statements WARNING: 0:139: 'switch' : last case/default label not followed by statements // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 269 Capability Shader diff --git a/Test/baseResults/spv.swizzle.frag.out b/Test/baseResults/spv.swizzle.frag.out index 2aa31e8c7b..f42a34be90 100644 --- a/Test/baseResults/spv.swizzle.frag.out +++ b/Test/baseResults/spv.swizzle.frag.out @@ -1,6 +1,6 @@ spv.swizzle.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 117 Capability Shader diff --git a/Test/baseResults/spv.swizzleInversion.frag.out b/Test/baseResults/spv.swizzleInversion.frag.out index 8d09934608..32a0132644 100644 --- a/Test/baseResults/spv.swizzleInversion.frag.out +++ b/Test/baseResults/spv.swizzleInversion.frag.out @@ -1,6 +1,6 @@ spv.swizzleInversion.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader diff --git a/Test/baseResults/spv.terminate.frag.out b/Test/baseResults/spv.terminate.frag.out index 39cb151f0b..d76a48784d 100755 --- a/Test/baseResults/spv.terminate.frag.out +++ b/Test/baseResults/spv.terminate.frag.out @@ -1,6 +1,6 @@ spv.terminate.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 7 Capability Shader diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out index fddcdb84cc..c5d63845c9 100644 --- a/Test/baseResults/spv.test.frag.out +++ b/Test/baseResults/spv.test.frag.out @@ -1,6 +1,6 @@ spv.test.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 55 Capability Shader diff --git a/Test/baseResults/spv.test.vert.out b/Test/baseResults/spv.test.vert.out index 3eb6435816..350ee7884b 100644 --- a/Test/baseResults/spv.test.vert.out +++ b/Test/baseResults/spv.test.vert.out @@ -2,7 +2,7 @@ spv.test.vert WARNING: 0:5: attribute deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 24 Capability Shader diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out index 841bbd3a8f..dc1970a9fd 100644 --- a/Test/baseResults/spv.texture.frag.out +++ b/Test/baseResults/spv.texture.frag.out @@ -4,7 +4,7 @@ WARNING: 0:11: varying deprecated in version 130; may be removed in future relea WARNING: 0:12: varying deprecated in version 130; may be removed in future release // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 305 Capability Shader diff --git a/Test/baseResults/spv.texture.sampler.transform.frag.out b/Test/baseResults/spv.texture.sampler.transform.frag.out index a297ea7895..4e9534e753 100644 --- a/Test/baseResults/spv.texture.sampler.transform.frag.out +++ b/Test/baseResults/spv.texture.sampler.transform.frag.out @@ -1,6 +1,6 @@ spv.texture.sampler.transform.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 20 Capability Shader diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out index 544a0f31ab..35053f3878 100644 --- a/Test/baseResults/spv.texture.vert.out +++ b/Test/baseResults/spv.texture.vert.out @@ -1,6 +1,6 @@ spv.texture.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 150 Capability Shader diff --git a/Test/baseResults/spv.textureBuffer.vert.out b/Test/baseResults/spv.textureBuffer.vert.out index d18c656104..f5b271f6da 100644 --- a/Test/baseResults/spv.textureBuffer.vert.out +++ b/Test/baseResults/spv.textureBuffer.vert.out @@ -1,6 +1,6 @@ spv.textureBuffer.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 42 Capability Shader diff --git a/Test/baseResults/spv.textureGatherBiasLod.frag.out b/Test/baseResults/spv.textureGatherBiasLod.frag.out index 3a9bb80275..f47e16a76d 100644 --- a/Test/baseResults/spv.textureGatherBiasLod.frag.out +++ b/Test/baseResults/spv.textureGatherBiasLod.frag.out @@ -1,6 +1,6 @@ spv.textureGatherBiasLod.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 298 Capability Shader diff --git a/Test/baseResults/spv.types.frag.out b/Test/baseResults/spv.types.frag.out index 3e35da2794..6a0e0f01dd 100644 --- a/Test/baseResults/spv.types.frag.out +++ b/Test/baseResults/spv.types.frag.out @@ -1,6 +1,6 @@ spv.types.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 260 Capability Shader diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out index 7dbc3b3774..a78acae4db 100644 --- a/Test/baseResults/spv.uint.frag.out +++ b/Test/baseResults/spv.uint.frag.out @@ -1,6 +1,6 @@ spv.uint.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 213 Capability Shader diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out index fa66f2bbb4..09cd353221 100644 --- a/Test/baseResults/spv.uniformArray.frag.out +++ b/Test/baseResults/spv.uniformArray.frag.out @@ -1,6 +1,6 @@ spv.uniformArray.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 60 Capability Shader diff --git a/Test/baseResults/spv.uniformInitializer.frag.out b/Test/baseResults/spv.uniformInitializer.frag.out index 63595aeee9..abebf6250a 100644 --- a/Test/baseResults/spv.uniformInitializer.frag.out +++ b/Test/baseResults/spv.uniformInitializer.frag.out @@ -1,6 +1,6 @@ spv.uniformInitializer.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader diff --git a/Test/baseResults/spv.uniformInitializerStruct.frag.out b/Test/baseResults/spv.uniformInitializerStruct.frag.out index 5ce854dc2e..058bc34fa0 100644 --- a/Test/baseResults/spv.uniformInitializerStruct.frag.out +++ b/Test/baseResults/spv.uniformInitializerStruct.frag.out @@ -1,6 +1,6 @@ spv.uniformInitializerStruct.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 63 Capability Shader diff --git a/Test/baseResults/spv.unit1.frag.out b/Test/baseResults/spv.unit1.frag.out index 02ddfecee2..b4de7bd82a 100644 --- a/Test/baseResults/spv.unit1.frag.out +++ b/Test/baseResults/spv.unit1.frag.out @@ -193,7 +193,7 @@ gl_FragCoord origin is upper left 0:? 'h3' ( global highp float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 69 Capability Shader diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out index ee57d43d45..f78119c22f 100644 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -1,6 +1,6 @@ spv.variableArrayIndex.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 93 Capability Shader diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out index 1e6334ada5..9d001bc056 100644 --- a/Test/baseResults/spv.varyingArray.frag.out +++ b/Test/baseResults/spv.varyingArray.frag.out @@ -1,6 +1,6 @@ spv.varyingArray.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 61 Capability Shader diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out index ac9d192b81..00135f6e4b 100644 --- a/Test/baseResults/spv.varyingArrayIndirect.frag.out +++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out @@ -1,6 +1,6 @@ spv.varyingArrayIndirect.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 70 Capability Shader diff --git a/Test/baseResults/spv.vecMatConstruct.frag.out b/Test/baseResults/spv.vecMatConstruct.frag.out index bfe5ae76ef..5f3a233fde 100644 --- a/Test/baseResults/spv.vecMatConstruct.frag.out +++ b/Test/baseResults/spv.vecMatConstruct.frag.out @@ -1,6 +1,6 @@ spv.vecMatConstruct.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 62 Capability Shader diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out index e95ada4988..f719a97e21 100644 --- a/Test/baseResults/spv.viewportArray2.tesc.out +++ b/Test/baseResults/spv.viewportArray2.tesc.out @@ -1,6 +1,6 @@ spv.viewportArray2.tesc // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 23 Capability Tessellation diff --git a/Test/baseResults/spv.viewportArray2.vert.out b/Test/baseResults/spv.viewportArray2.vert.out index cf29cd79df..d916b4d61e 100644 --- a/Test/baseResults/spv.viewportArray2.vert.out +++ b/Test/baseResults/spv.viewportArray2.vert.out @@ -1,6 +1,6 @@ spv.viewportArray2.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 19 Capability Shader diff --git a/Test/baseResults/spv.viewportindex.tese.out b/Test/baseResults/spv.viewportindex.tese.out index 12a30cf4c3..46b1faa6cc 100644 --- a/Test/baseResults/spv.viewportindex.tese.out +++ b/Test/baseResults/spv.viewportindex.tese.out @@ -1,6 +1,6 @@ spv.viewportindex.tese // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 10 Capability Tessellation diff --git a/Test/baseResults/spv.voidFunction.frag.out b/Test/baseResults/spv.voidFunction.frag.out index c77285b191..4a0cc26011 100644 --- a/Test/baseResults/spv.voidFunction.frag.out +++ b/Test/baseResults/spv.voidFunction.frag.out @@ -1,6 +1,6 @@ spv.voidFunction.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 43 Capability Shader diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out index 0364d90770..53673d35a6 100644 --- a/Test/baseResults/spv.volatileAtomic.comp.out +++ b/Test/baseResults/spv.volatileAtomic.comp.out @@ -1,6 +1,6 @@ spv.volatileAtomic.comp // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 18 Capability Shader diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out index 47388a2bc0..d5c83d52ff 100644 --- a/Test/baseResults/spv.vulkan110.int16.frag.out +++ b/Test/baseResults/spv.vulkan110.int16.frag.out @@ -1,6 +1,6 @@ spv.vulkan110.int16.frag // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 535 Capability Shader diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out index 0774960a65..ab88c581d3 100644 --- a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out +++ b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out @@ -1,6 +1,6 @@ spv.vulkan110.storageBuffer.vert // Module Version 10300 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 31 Capability Shader diff --git a/Test/baseResults/spv.while-continue-break.vert.out b/Test/baseResults/spv.while-continue-break.vert.out index 246e5fd43b..7a0bfb0c75 100644 --- a/Test/baseResults/spv.while-continue-break.vert.out +++ b/Test/baseResults/spv.while-continue-break.vert.out @@ -1,6 +1,6 @@ spv.while-continue-break.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 41 Capability Shader diff --git a/Test/baseResults/spv.while-simple.vert.out b/Test/baseResults/spv.while-simple.vert.out index 894dea1daf..922860fec1 100644 --- a/Test/baseResults/spv.while-simple.vert.out +++ b/Test/baseResults/spv.while-simple.vert.out @@ -1,6 +1,6 @@ spv.while-simple.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 22 Capability Shader diff --git a/Test/baseResults/spv.whileLoop.frag.out b/Test/baseResults/spv.whileLoop.frag.out index 6155f7bd80..b796b2924f 100644 --- a/Test/baseResults/spv.whileLoop.frag.out +++ b/Test/baseResults/spv.whileLoop.frag.out @@ -1,6 +1,6 @@ spv.whileLoop.frag // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.xfb.vert.out b/Test/baseResults/spv.xfb.vert.out index 3fdc60b2d1..4283e2002a 100644 --- a/Test/baseResults/spv.xfb.vert.out +++ b/Test/baseResults/spv.xfb.vert.out @@ -1,6 +1,6 @@ spv.xfb.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 16 Capability Shader diff --git a/Test/baseResults/spv.xfb2.vert.out b/Test/baseResults/spv.xfb2.vert.out index cbb8fc638d..b4b09bd0e3 100644 --- a/Test/baseResults/spv.xfb2.vert.out +++ b/Test/baseResults/spv.xfb2.vert.out @@ -1,6 +1,6 @@ spv.xfb2.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.xfb3.vert.out b/Test/baseResults/spv.xfb3.vert.out index ef53b9aaec..a7e885660a 100644 --- a/Test/baseResults/spv.xfb3.vert.out +++ b/Test/baseResults/spv.xfb3.vert.out @@ -1,6 +1,6 @@ spv.xfb3.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 35 Capability Shader diff --git a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out index e2c6093b45..eb911002a5 100644 --- a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out +++ b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out @@ -1,6 +1,6 @@ spv.xfbOffsetOnBlockMembersAssignment.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out index 499ac8c191..467a5aec46 100644 --- a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out +++ b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out @@ -1,6 +1,6 @@ spv.xfbOffsetOnStructMembersAssignment.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 40 Capability Shader diff --git a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out index f7476c7b98..633558d472 100644 --- a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out +++ b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out @@ -1,6 +1,6 @@ spv.xfbOverlapOffsetCheckWithBlockAndMember.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 39 Capability Shader diff --git a/Test/baseResults/spv.xfbStrideJustOnce.vert.out b/Test/baseResults/spv.xfbStrideJustOnce.vert.out index bbd7768d35..8bf1f0d999 100644 --- a/Test/baseResults/spv.xfbStrideJustOnce.vert.out +++ b/Test/baseResults/spv.xfbStrideJustOnce.vert.out @@ -1,6 +1,6 @@ spv.xfbStrideJustOnce.vert // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 33 Capability Shader diff --git a/Test/baseResults/vk.relaxed.changeSet.vert.out b/Test/baseResults/vk.relaxed.changeSet.vert.out index d2beff93d9..d7502a3ad9 100755 --- a/Test/baseResults/vk.relaxed.changeSet.vert.out +++ b/Test/baseResults/vk.relaxed.changeSet.vert.out @@ -139,7 +139,7 @@ gl_FragCoord origin is upper left 0:? 'UV' ( smooth in highp 2-component vector of float) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 46 Capability Shader @@ -232,7 +232,7 @@ gl_FragCoord origin is upper left Return FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 27 Capability Shader diff --git a/Test/baseResults/vk.relaxed.frag.out b/Test/baseResults/vk.relaxed.frag.out index d98910e6f8..c88782f30e 100644 --- a/Test/baseResults/vk.relaxed.frag.out +++ b/Test/baseResults/vk.relaxed.frag.out @@ -553,7 +553,7 @@ gl_FragCoord origin is upper left 0:? 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 163 Capability Shader diff --git a/Test/baseResults/vk.relaxed.link1.frag.out b/Test/baseResults/vk.relaxed.link1.frag.out index 9dac4c64e2..1e67646c6b 100644 --- a/Test/baseResults/vk.relaxed.link1.frag.out +++ b/Test/baseResults/vk.relaxed.link1.frag.out @@ -348,7 +348,7 @@ gl_FragCoord origin is upper left 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2, coherent volatile buffer highp uint counter3}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 105 Capability Shader diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out index bcd4e2afd5..37532ed603 100755 --- a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out +++ b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out @@ -7014,7 +7014,7 @@ gl_FragCoord origin is upper left 0:? 'sTDInstanceColor' (layout( binding=17) uniform highp samplerBuffer) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 939 Capability Shader @@ -8567,7 +8567,7 @@ gl_FragCoord origin is upper left ReturnValue 893 FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 1297 Capability Shader diff --git a/Test/baseResults/vk.relaxed.stagelink.vert.out b/Test/baseResults/vk.relaxed.stagelink.vert.out index b9173f249c..47e1b4fa07 100644 --- a/Test/baseResults/vk.relaxed.stagelink.vert.out +++ b/Test/baseResults/vk.relaxed.stagelink.vert.out @@ -435,7 +435,7 @@ gl_FragCoord origin is upper left 0:? 'anon@1' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 92 Capability Shader @@ -593,7 +593,7 @@ gl_FragCoord origin is upper left ReturnValue 64 FunctionEnd // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 74 Capability Shader diff --git a/Test/baseResults/vulkan.ast.vert.out b/Test/baseResults/vulkan.ast.vert.out index 68e892b4ac..c893103c4b 100644 --- a/Test/baseResults/vulkan.ast.vert.out +++ b/Test/baseResults/vulkan.ast.vert.out @@ -258,7 +258,7 @@ Shader version: 450 0:? 2 (const int) // Module Version 10000 -// Generated by (magic number): 8000a +// Generated by (magic number): 8000b // Id's are bound by 50 Capability Shader From d570b2b05b49453881c54069c417410e454d4850 Mon Sep 17 00:00:00 2001 From: Graeme Leese Date: Tue, 4 Oct 2022 16:16:52 +0100 Subject: [PATCH 103/594] Change Volatile generation for HelperInvocation For SPIR-V 1.6 HelperInvocation accesses need to be volatile to avoid undefined values when shaders execute 'demote'. Previously this was always decorated on the gl_HelperInvocation variable, but this is not valid when the Vulkan memory model is in use. When the memory model is enabled, stop decorating the variable declaration and apply the memory semantic to access chain loads instead. Fixes #3042 --- SPIRV/GlslangToSpv.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ccb4602be2..74053c17ff 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4741,6 +4741,16 @@ spv::Id TGlslangToSpvTraverser::accessChainLoad(const glslang::TType& type) spv::Builder::AccessChain::CoherentFlags coherentFlags = builder.getAccessChain().coherentFlags; coherentFlags |= TranslateCoherent(type); + spv::MemoryAccessMask accessMask = spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask); + // If the value being loaded is HelperInvocation, SPIR-V 1.6 is being generated (so that + // SPV_EXT_demote_to_helper_invocation is in core) and the memory model is in use, add + // the Volatile MemoryAccess semantic. + if (type.getQualifier().builtIn == glslang::EbvHelperInvocation && + glslangIntermediate->usingVulkanMemoryModel() && + glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { + accessMask = spv::MemoryAccessMask(accessMask | spv::MemoryAccessVolatileMask); + } + unsigned int alignment = builder.getAccessChain().alignment; alignment |= type.getBufferReferenceAlignment(); @@ -4748,7 +4758,7 @@ spv::Id TGlslangToSpvTraverser::accessChainLoad(const glslang::TType& type) TranslateNonUniformDecoration(builder.getAccessChain().coherentFlags), TranslateNonUniformDecoration(type.getQualifier()), nominalTypeId, - spv::MemoryAccessMask(TranslateMemoryAccess(coherentFlags) & ~spv::MemoryAccessMakePointerAvailableKHRMask), + accessMask, TranslateMemoryScope(coherentFlags), alignment); @@ -8968,6 +8978,7 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol // Add volatile decoration to HelperInvocation for spirv1.6 and beyond if (builtIn == spv::BuiltInHelperInvocation && + !glslangIntermediate->usingVulkanMemoryModel() && glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { builder.addDecoration(id, spv::DecorationVolatile); } From 5c352476c7c700eae948c8e68181ec9f5f4f3710 Mon Sep 17 00:00:00 2001 From: Graeme Leese Date: Fri, 14 Oct 2022 15:03:14 +0100 Subject: [PATCH 104/594] Test for spv1.6 + memory model HelperInvocation This should generate a Volatile tag on the access, not on the variable itself. --- ...spv.1.6.helperInvocation.memmodel.frag.out | 48 +++++++++++++++++++ Test/spv.1.6.helperInvocation.memmodel.frag | 16 +++++++ gtests/Spv.FromFile.cpp | 1 + 3 files changed, 65 insertions(+) create mode 100644 Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out create mode 100644 Test/spv.1.6.helperInvocation.memmodel.frag diff --git a/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out b/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out new file mode 100644 index 0000000000..fea4e4588e --- /dev/null +++ b/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out @@ -0,0 +1,48 @@ +spv.1.6.helperInvocation.memmodel.frag +// Module Version 10600 +// Generated by (magic number): 8000b +// Id's are bound by 21 + + Capability Shader + Capability VulkanMemoryModelKHR + Capability DemoteToHelperInvocationEXT + Extension "SPV_EXT_demote_to_helper_invocation" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint Fragment 4 "main" 9 14 + ExecutionMode 4 OriginUpperLeft + Source ESSL 310 + SourceExtension "GL_EXT_demote_to_helper_invocation" + Name 4 "main" + Name 7 "B" + MemberName 7(B) 0 "o" + Name 9 "" + Name 14 "gl_HelperInvocation" + MemberDecorate 7(B) 0 Offset 0 + Decorate 7(B) Block + Decorate 9 DescriptorSet 0 + Decorate 9 Binding 0 + Decorate 14(gl_HelperInvocation) BuiltIn HelperInvocation + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7(B): TypeStruct 6(float) + 8: TypePointer StorageBuffer 7(B) + 9: 8(ptr) Variable StorageBuffer + 10: TypeInt 32 1 + 11: 10(int) Constant 0 + 12: TypeBool + 13: TypePointer Input 12(bool) +14(gl_HelperInvocation): 13(ptr) Variable Input + 16: 6(float) Constant 1065353216 + 17: 6(float) Constant 0 + 19: TypePointer StorageBuffer 6(float) + 4(main): 2 Function None 3 + 5: Label + DemoteToHelperInvocationEXT + 15: 12(bool) Load 14(gl_HelperInvocation) Volatile + 18: 6(float) Select 15 16 17 + 20: 19(ptr) AccessChain 9 11 + Store 20 18 + Return + FunctionEnd diff --git a/Test/spv.1.6.helperInvocation.memmodel.frag b/Test/spv.1.6.helperInvocation.memmodel.frag new file mode 100644 index 0000000000..b727f8e0ea --- /dev/null +++ b/Test/spv.1.6.helperInvocation.memmodel.frag @@ -0,0 +1,16 @@ +#version 310 es + +#pragma use_vulkan_memory_model + +#extension GL_EXT_demote_to_helper_invocation : require + +precision highp float; + +layout (set=0, binding=0) buffer B { + float o; +}; + +void main() { + demote; + o = gl_HelperInvocation ? 1.0 : 0.0; +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 93e364d96b..e1b7a257a4 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -660,6 +660,7 @@ INSTANTIATE_TEST_SUITE_P( ::testing::ValuesIn(std::vector({ "spv.1.6.conditionalDiscard.frag", "spv.1.6.helperInvocation.frag", + "spv.1.6.helperInvocation.memmodel.frag", "spv.1.6.specConstant.comp", "spv.1.6.samplerBuffer.frag", "spv.1.6.separate.frag", From a21b8d8d8de201025cb3525edb3b743788343618 Mon Sep 17 00:00:00 2001 From: Try Date: Sun, 16 Oct 2022 15:36:19 +0200 Subject: [PATCH 105/594] mesh shader: fix implicit index-array size calculation for lines and triangles #fixed #3041 --- glslang/MachineIndependent/ParseHelper.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index e2ac43ca19..92df16fd72 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -836,12 +836,16 @@ int TParseContext::getIoArrayImplicitSize(const TQualifier &qualifier, TString * } else if (language == EShLangMesh) { unsigned int maxPrimitives = intermediate.getPrimitives() != TQualifier::layoutNotSet ? intermediate.getPrimitives() : 0; - if (qualifier.builtIn == EbvPrimitiveIndicesNV || qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT || - qualifier.builtIn == EbvPrimitiveLineIndicesEXT || qualifier.builtIn == EbvPrimitivePointIndicesEXT) { + if (qualifier.builtIn == EbvPrimitiveIndicesNV) { expectedSize = maxPrimitives * TQualifier::mapGeometryToSize(intermediate.getOutputPrimitive()); str = "max_primitives*"; str += TQualifier::getGeometryString(intermediate.getOutputPrimitive()); } + else if (qualifier.builtIn == EbvPrimitiveTriangleIndicesEXT || qualifier.builtIn == EbvPrimitiveLineIndicesEXT || + qualifier.builtIn == EbvPrimitivePointIndicesEXT) { + expectedSize = maxPrimitives; + str = "max_primitives"; + } else if (qualifier.isPerPrimitive()) { expectedSize = maxPrimitives; str = "max_primitives"; From 114092494b0d0f42aee7405eeb65299a9ea94ba7 Mon Sep 17 00:00:00 2001 From: Try Date: Wed, 19 Oct 2022 21:45:30 +0200 Subject: [PATCH 106/594] update failing test-cases --- Test/baseResults/spv.460.subgroupEXT.mesh.out | 337 +++++++++--------- .../spv.ext.meshShaderBuiltins.mesh.out | 83 +++-- 2 files changed, 209 insertions(+), 211 deletions(-) diff --git a/Test/baseResults/spv.460.subgroupEXT.mesh.out b/Test/baseResults/spv.460.subgroupEXT.mesh.out index be234ae71d..dd3de81421 100644 --- a/Test/baseResults/spv.460.subgroupEXT.mesh.out +++ b/Test/baseResults/spv.460.subgroupEXT.mesh.out @@ -1,7 +1,7 @@ spv.460.subgroupEXT.mesh // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 280 +// Id's are bound by 279 Capability ClipDistance Capability CullDistance @@ -19,7 +19,7 @@ spv.460.subgroupEXT.mesh Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint MeshEXT 4 "main" 35 41 57 109 148 162 163 168 169 172 173 174 175 176 + EntryPoint MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 @@ -67,19 +67,19 @@ spv.460.subgroupEXT.mesh MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" Name 109 "gl_MeshPrimitivesEXT" - Name 148 "gl_PrimitiveTriangleIndicesEXT" - Name 162 "gl_SubgroupSize" - Name 163 "gl_SubgroupInvocationID" - Name 168 "gl_NumSubgroups" - Name 169 "gl_SubgroupID" - Name 172 "gl_SubgroupEqMask" - Name 173 "gl_SubgroupGeMask" - Name 174 "gl_SubgroupGtMask" - Name 175 "gl_SubgroupLeMask" - Name 176 "gl_SubgroupLtMask" - Name 182 "ballot" - Name 219 "ballot" - Name 254 "ballot" + Name 147 "gl_PrimitiveTriangleIndicesEXT" + Name 161 "gl_SubgroupSize" + Name 162 "gl_SubgroupInvocationID" + Name 167 "gl_NumSubgroups" + Name 168 "gl_SubgroupID" + Name 171 "gl_SubgroupEqMask" + Name 172 "gl_SubgroupGeMask" + Name 173 "gl_SubgroupGtMask" + Name 174 "gl_SubgroupLeMask" + Name 175 "gl_SubgroupLtMask" + Name 181 "ballot" + Name 218 "ballot" + Name 253 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position @@ -98,19 +98,19 @@ spv.460.subgroupEXT.mesh MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR Decorate 106(gl_MeshPerPrimitiveEXT) Block - Decorate 148(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT - Decorate 162(gl_SubgroupSize) RelaxedPrecision - Decorate 162(gl_SubgroupSize) BuiltIn SubgroupSize - Decorate 163(gl_SubgroupInvocationID) RelaxedPrecision - Decorate 163(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId - Decorate 168(gl_NumSubgroups) BuiltIn NumSubgroups - Decorate 169(gl_SubgroupID) BuiltIn SubgroupId - Decorate 172(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR - Decorate 173(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR - Decorate 174(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR - Decorate 175(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR - Decorate 176(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR - Decorate 279 BuiltIn WorkgroupSize + Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT + Decorate 161(gl_SubgroupSize) RelaxedPrecision + Decorate 161(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 162(gl_SubgroupInvocationID) RelaxedPrecision + Decorate 162(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 167(gl_NumSubgroups) BuiltIn NumSubgroups + Decorate 168(gl_SubgroupID) BuiltIn SubgroupId + Decorate 171(gl_SubgroupEqMask) BuiltIn SubgroupEqMaskKHR + Decorate 172(gl_SubgroupGeMask) BuiltIn SubgroupGeMaskKHR + Decorate 173(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR + Decorate 174(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR + Decorate 175(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR + Decorate 278 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 @@ -161,33 +161,32 @@ spv.460.subgroupEXT.mesh 118: 59(int) Constant 8 121: 105(bool) ConstantFalse 122: TypePointer Output 105(bool) - 145: 30(int) Constant 96 - 146: TypeArray 33(ivec3) 145 - 147: TypePointer Output 146 -148(gl_PrimitiveTriangleIndicesEXT): 147(ptr) Variable Output - 149: 33(ivec3) ConstantComposite 78 78 78 - 150: TypePointer Output 33(ivec3) - 154: 33(ivec3) ConstantComposite 80 80 80 -162(gl_SubgroupSize): 37(ptr) Variable Input -163(gl_SubgroupInvocationID): 37(ptr) Variable Input - 164: 30(int) Constant 3400 - 165: 30(int) Constant 72 - 166: 30(int) Constant 2056 -168(gl_NumSubgroups): 37(ptr) Variable Input -169(gl_SubgroupID): 37(ptr) Variable Input - 170: TypeVector 30(int) 4 - 171: TypePointer Input 170(ivec4) -172(gl_SubgroupEqMask): 171(ptr) Variable Input -173(gl_SubgroupGeMask): 171(ptr) Variable Input -174(gl_SubgroupGtMask): 171(ptr) Variable Input -175(gl_SubgroupLeMask): 171(ptr) Variable Input -176(gl_SubgroupLtMask): 171(ptr) Variable Input - 181: TypePointer Function 170(ivec4) - 184: 170(ivec4) ConstantComposite 78 78 78 78 - 198: 105(bool) ConstantTrue - 255: 30(int) Constant 85 - 256: 170(ivec4) ConstantComposite 255 36 36 36 - 279: 33(ivec3) ConstantComposite 47 78 78 + 145: TypeArray 33(ivec3) 47 + 146: TypePointer Output 145 +147(gl_PrimitiveTriangleIndicesEXT): 146(ptr) Variable Output + 148: 33(ivec3) ConstantComposite 78 78 78 + 149: TypePointer Output 33(ivec3) + 153: 33(ivec3) ConstantComposite 80 80 80 +161(gl_SubgroupSize): 37(ptr) Variable Input +162(gl_SubgroupInvocationID): 37(ptr) Variable Input + 163: 30(int) Constant 3400 + 164: 30(int) Constant 72 + 165: 30(int) Constant 2056 +167(gl_NumSubgroups): 37(ptr) Variable Input +168(gl_SubgroupID): 37(ptr) Variable Input + 169: TypeVector 30(int) 4 + 170: TypePointer Input 169(ivec4) +171(gl_SubgroupEqMask): 170(ptr) Variable Input +172(gl_SubgroupGeMask): 170(ptr) Variable Input +173(gl_SubgroupGtMask): 170(ptr) Variable Input +174(gl_SubgroupLeMask): 170(ptr) Variable Input +175(gl_SubgroupLtMask): 170(ptr) Variable Input + 180: TypePointer Function 169(ivec4) + 183: 169(ivec4) ConstantComposite 78 78 78 78 + 197: 105(bool) ConstantTrue + 254: 30(int) Constant 85 + 255: 169(ivec4) ConstantComposite 254 36 36 36 + 278: 33(ivec3) ConstantComposite 47 78 78 4(main): 2 Function None 3 5: Label 32(iid): 31(ptr) Variable Function @@ -290,159 +289,159 @@ spv.460.subgroupEXT.mesh Store 144 121 MemoryBarrier 78 79 ControlBarrier 80 80 79 - 151: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 60 - Store 151 149 - 152: 30(int) Load 46(primitiveCount) - 153: 30(int) ISub 152 78 - 155: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 153 - Store 155 154 + 150: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 60 + Store 150 148 + 151: 30(int) Load 46(primitiveCount) + 152: 30(int) ISub 151 78 + 154: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 152 + Store 154 153 + 155: 30(int) Load 40(gid) 156: 30(int) Load 40(gid) - 157: 30(int) Load 40(gid) - 158: 30(int) ISub 157 78 - 159: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 158 - 160: 33(ivec3) Load 159 - 161: 150(ptr) AccessChain 148(gl_PrimitiveTriangleIndicesEXT) 156 - Store 161 160 + 157: 30(int) ISub 156 78 + 158: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 157 + 159: 33(ivec3) Load 158 + 160: 149(ptr) AccessChain 147(gl_PrimitiveTriangleIndicesEXT) 155 + Store 160 159 MemoryBarrier 78 79 ControlBarrier 80 80 79 Return FunctionEnd 6(basic_works(): 2 Function None 3 7: Label - ControlBarrier 52 52 164 + ControlBarrier 52 52 163 + MemoryBarrier 52 163 MemoryBarrier 52 164 MemoryBarrier 52 165 - MemoryBarrier 52 166 - 167: 105(bool) GroupNonUniformElect 52 + 166: 105(bool) GroupNonUniformElect 52 MemoryBarrier 52 79 Return FunctionEnd 13(ballot_works(vf4;): 2 Function None 11 12(f4): 10(ptr) FunctionParameter 14: Label - 182(ballot): 181(ptr) Variable Function - 177: 9(fvec4) Load 12(f4) - 178: 9(fvec4) GroupNonUniformBroadcast 52 177 36 - 179: 9(fvec4) Load 12(f4) - 180: 9(fvec4) GroupNonUniformBroadcastFirst 52 179 - 183: 170(ivec4) GroupNonUniformBallot 52 121 - Store 182(ballot) 183 - 185: 105(bool) GroupNonUniformInverseBallot 52 184 - 186: 170(ivec4) Load 182(ballot) - 187: 105(bool) GroupNonUniformBallotBitExtract 52 186 36 - 188: 170(ivec4) Load 182(ballot) - 189: 30(int) GroupNonUniformBallotBitCount 52 Reduce 188 - 190: 170(ivec4) Load 182(ballot) - 191: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 190 - 192: 170(ivec4) Load 182(ballot) - 193: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 192 - 194: 170(ivec4) Load 182(ballot) - 195: 30(int) GroupNonUniformBallotFindLSB 52 194 - 196: 170(ivec4) Load 182(ballot) - 197: 30(int) GroupNonUniformBallotFindMSB 52 196 + 181(ballot): 180(ptr) Variable Function + 176: 9(fvec4) Load 12(f4) + 177: 9(fvec4) GroupNonUniformBroadcast 52 176 36 + 178: 9(fvec4) Load 12(f4) + 179: 9(fvec4) GroupNonUniformBroadcastFirst 52 178 + 182: 169(ivec4) GroupNonUniformBallot 52 121 + Store 181(ballot) 182 + 184: 105(bool) GroupNonUniformInverseBallot 52 183 + 185: 169(ivec4) Load 181(ballot) + 186: 105(bool) GroupNonUniformBallotBitExtract 52 185 36 + 187: 169(ivec4) Load 181(ballot) + 188: 30(int) GroupNonUniformBallotBitCount 52 Reduce 187 + 189: 169(ivec4) Load 181(ballot) + 190: 30(int) GroupNonUniformBallotBitCount 52 InclusiveScan 189 + 191: 169(ivec4) Load 181(ballot) + 192: 30(int) GroupNonUniformBallotBitCount 52 ExclusiveScan 191 + 193: 169(ivec4) Load 181(ballot) + 194: 30(int) GroupNonUniformBallotFindLSB 52 193 + 195: 169(ivec4) Load 181(ballot) + 196: 30(int) GroupNonUniformBallotFindMSB 52 195 Return FunctionEnd 16(vote_works(vf4;): 2 Function None 11 15(f4): 10(ptr) FunctionParameter 17: Label - 199: 105(bool) GroupNonUniformAll 52 198 - 200: 105(bool) GroupNonUniformAny 52 121 - 201: 9(fvec4) Load 15(f4) - 202: 105(bool) GroupNonUniformAllEqual 52 201 + 198: 105(bool) GroupNonUniformAll 52 197 + 199: 105(bool) GroupNonUniformAny 52 121 + 200: 9(fvec4) Load 15(f4) + 201: 105(bool) GroupNonUniformAllEqual 52 200 Return FunctionEnd 19(shuffle_works(vf4;): 2 Function None 11 18(f4): 10(ptr) FunctionParameter 20: Label - 203: 9(fvec4) Load 18(f4) - 204: 9(fvec4) GroupNonUniformShuffle 52 203 36 - 205: 9(fvec4) Load 18(f4) - 206: 9(fvec4) GroupNonUniformShuffleXor 52 205 78 - 207: 9(fvec4) Load 18(f4) - 208: 9(fvec4) GroupNonUniformShuffleUp 52 207 78 - 209: 9(fvec4) Load 18(f4) - 210: 9(fvec4) GroupNonUniformShuffleDown 52 209 78 + 202: 9(fvec4) Load 18(f4) + 203: 9(fvec4) GroupNonUniformShuffle 52 202 36 + 204: 9(fvec4) Load 18(f4) + 205: 9(fvec4) GroupNonUniformShuffleXor 52 204 78 + 206: 9(fvec4) Load 18(f4) + 207: 9(fvec4) GroupNonUniformShuffleUp 52 206 78 + 208: 9(fvec4) Load 18(f4) + 209: 9(fvec4) GroupNonUniformShuffleDown 52 208 78 Return FunctionEnd 22(arith_works(vf4;): 2 Function None 11 21(f4): 10(ptr) FunctionParameter 23: Label - 219(ballot): 181(ptr) Variable Function - 211: 9(fvec4) Load 21(f4) - 212: 9(fvec4) GroupNonUniformFAdd 52 Reduce 211 - 213: 9(fvec4) Load 21(f4) - 214: 9(fvec4) GroupNonUniformFMul 52 Reduce 213 - 215: 9(fvec4) Load 21(f4) - 216: 9(fvec4) GroupNonUniformFMin 52 Reduce 215 - 217: 9(fvec4) Load 21(f4) - 218: 9(fvec4) GroupNonUniformFMax 52 Reduce 217 - 220: 170(ivec4) Load 219(ballot) - 221: 170(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 220 - 222: 170(ivec4) Load 219(ballot) - 223: 170(ivec4) GroupNonUniformBitwiseOr 52 Reduce 222 - 224: 170(ivec4) Load 219(ballot) - 225: 170(ivec4) GroupNonUniformBitwiseXor 52 Reduce 224 - 226: 9(fvec4) Load 21(f4) - 227: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 226 - 228: 9(fvec4) Load 21(f4) - 229: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 228 - 230: 9(fvec4) Load 21(f4) - 231: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 230 - 232: 9(fvec4) Load 21(f4) - 233: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 232 - 234: 170(ivec4) Load 219(ballot) - 235: 170(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 234 - 236: 170(ivec4) Load 219(ballot) - 237: 170(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 236 - 238: 170(ivec4) Load 219(ballot) - 239: 170(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 238 - 240: 9(fvec4) Load 21(f4) - 241: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 240 - 242: 9(fvec4) Load 21(f4) - 243: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 242 - 244: 9(fvec4) Load 21(f4) - 245: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 244 - 246: 9(fvec4) Load 21(f4) - 247: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 246 - 248: 170(ivec4) Load 219(ballot) - 249: 170(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 248 - 250: 170(ivec4) Load 219(ballot) - 251: 170(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 250 - 252: 170(ivec4) Load 219(ballot) - 253: 170(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 252 + 218(ballot): 180(ptr) Variable Function + 210: 9(fvec4) Load 21(f4) + 211: 9(fvec4) GroupNonUniformFAdd 52 Reduce 210 + 212: 9(fvec4) Load 21(f4) + 213: 9(fvec4) GroupNonUniformFMul 52 Reduce 212 + 214: 9(fvec4) Load 21(f4) + 215: 9(fvec4) GroupNonUniformFMin 52 Reduce 214 + 216: 9(fvec4) Load 21(f4) + 217: 9(fvec4) GroupNonUniformFMax 52 Reduce 216 + 219: 169(ivec4) Load 218(ballot) + 220: 169(ivec4) GroupNonUniformBitwiseAnd 52 Reduce 219 + 221: 169(ivec4) Load 218(ballot) + 222: 169(ivec4) GroupNonUniformBitwiseOr 52 Reduce 221 + 223: 169(ivec4) Load 218(ballot) + 224: 169(ivec4) GroupNonUniformBitwiseXor 52 Reduce 223 + 225: 9(fvec4) Load 21(f4) + 226: 9(fvec4) GroupNonUniformFAdd 52 InclusiveScan 225 + 227: 9(fvec4) Load 21(f4) + 228: 9(fvec4) GroupNonUniformFMul 52 InclusiveScan 227 + 229: 9(fvec4) Load 21(f4) + 230: 9(fvec4) GroupNonUniformFMin 52 InclusiveScan 229 + 231: 9(fvec4) Load 21(f4) + 232: 9(fvec4) GroupNonUniformFMax 52 InclusiveScan 231 + 233: 169(ivec4) Load 218(ballot) + 234: 169(ivec4) GroupNonUniformBitwiseAnd 52 InclusiveScan 233 + 235: 169(ivec4) Load 218(ballot) + 236: 169(ivec4) GroupNonUniformBitwiseOr 52 InclusiveScan 235 + 237: 169(ivec4) Load 218(ballot) + 238: 169(ivec4) GroupNonUniformBitwiseXor 52 InclusiveScan 237 + 239: 9(fvec4) Load 21(f4) + 240: 9(fvec4) GroupNonUniformFAdd 52 ExclusiveScan 239 + 241: 9(fvec4) Load 21(f4) + 242: 9(fvec4) GroupNonUniformFMul 52 ExclusiveScan 241 + 243: 9(fvec4) Load 21(f4) + 244: 9(fvec4) GroupNonUniformFMin 52 ExclusiveScan 243 + 245: 9(fvec4) Load 21(f4) + 246: 9(fvec4) GroupNonUniformFMax 52 ExclusiveScan 245 + 247: 169(ivec4) Load 218(ballot) + 248: 169(ivec4) GroupNonUniformBitwiseAnd 52 ExclusiveScan 247 + 249: 169(ivec4) Load 218(ballot) + 250: 169(ivec4) GroupNonUniformBitwiseOr 52 ExclusiveScan 249 + 251: 169(ivec4) Load 218(ballot) + 252: 169(ivec4) GroupNonUniformBitwiseXor 52 ExclusiveScan 251 Return FunctionEnd 25(clustered_works(vf4;): 2 Function None 11 24(f4): 10(ptr) FunctionParameter 26: Label - 254(ballot): 181(ptr) Variable Function - Store 254(ballot) 256 - 257: 9(fvec4) Load 24(f4) - 258: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 257 80 - 259: 9(fvec4) Load 24(f4) - 260: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 259 80 - 261: 9(fvec4) Load 24(f4) - 262: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 261 80 - 263: 9(fvec4) Load 24(f4) - 264: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 263 80 - 265: 170(ivec4) Load 254(ballot) - 266: 170(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 265 80 - 267: 170(ivec4) Load 254(ballot) - 268: 170(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 267 80 - 269: 170(ivec4) Load 254(ballot) - 270: 170(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 269 80 + 253(ballot): 180(ptr) Variable Function + Store 253(ballot) 255 + 256: 9(fvec4) Load 24(f4) + 257: 9(fvec4) GroupNonUniformFAdd 52 ClusteredReduce 256 80 + 258: 9(fvec4) Load 24(f4) + 259: 9(fvec4) GroupNonUniformFMul 52 ClusteredReduce 258 80 + 260: 9(fvec4) Load 24(f4) + 261: 9(fvec4) GroupNonUniformFMin 52 ClusteredReduce 260 80 + 262: 9(fvec4) Load 24(f4) + 263: 9(fvec4) GroupNonUniformFMax 52 ClusteredReduce 262 80 + 264: 169(ivec4) Load 253(ballot) + 265: 169(ivec4) GroupNonUniformBitwiseAnd 52 ClusteredReduce 264 80 + 266: 169(ivec4) Load 253(ballot) + 267: 169(ivec4) GroupNonUniformBitwiseOr 52 ClusteredReduce 266 80 + 268: 169(ivec4) Load 253(ballot) + 269: 169(ivec4) GroupNonUniformBitwiseXor 52 ClusteredReduce 268 80 Return FunctionEnd 28(quad_works(vf4;): 2 Function None 11 27(f4): 10(ptr) FunctionParameter 29: Label - 271: 9(fvec4) Load 27(f4) - 272: 9(fvec4) GroupNonUniformQuadBroadcast 52 271 36 - 273: 9(fvec4) Load 27(f4) - 274: 9(fvec4) GroupNonUniformQuadSwap 52 273 36 - 275: 9(fvec4) Load 27(f4) - 276: 9(fvec4) GroupNonUniformQuadSwap 52 275 78 - 277: 9(fvec4) Load 27(f4) - 278: 9(fvec4) GroupNonUniformQuadSwap 52 277 80 + 270: 9(fvec4) Load 27(f4) + 271: 9(fvec4) GroupNonUniformQuadBroadcast 52 270 36 + 272: 9(fvec4) Load 27(f4) + 273: 9(fvec4) GroupNonUniformQuadSwap 52 272 36 + 274: 9(fvec4) Load 27(f4) + 275: 9(fvec4) GroupNonUniformQuadSwap 52 274 78 + 276: 9(fvec4) Load 27(f4) + 277: 9(fvec4) GroupNonUniformQuadSwap 52 276 80 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out index c1f6f7ca9a..4db6112903 100644 --- a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out @@ -1,7 +1,7 @@ spv.ext.meshShaderBuiltins.mesh // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 159 +// Id's are bound by 158 Capability ClipDistance Capability CullDistance @@ -13,7 +13,7 @@ spv.ext.meshShaderBuiltins.mesh Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint MeshEXT 4 "main" 13 19 24 41 93 135 153 156 + EntryPoint MeshEXT 4 "main" 13 19 24 41 93 134 152 155 ExecutionMode 4 LocalSize 32 1 1 ExecutionMode 4 OutputVertices 81 ExecutionMode 4 OutputPrimitivesNV 32 @@ -45,11 +45,11 @@ spv.ext.meshShaderBuiltins.mesh MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" Name 93 "gl_MeshPrimitivesEXT" - Name 135 "gl_PrimitiveTriangleIndicesEXT" - Name 151 "id" - Name 153 "gl_DrawIDARB" - Name 155 "viewIdx" - Name 156 "gl_ViewIndex" + Name 134 "gl_PrimitiveTriangleIndicesEXT" + Name 150 "id" + Name 152 "gl_DrawIDARB" + Name 154 "viewIdx" + Name 155 "gl_ViewIndex" Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups @@ -69,10 +69,10 @@ spv.ext.meshShaderBuiltins.mesh MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR Decorate 90(gl_MeshPerPrimitiveEXT) Block - Decorate 135(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT - Decorate 153(gl_DrawIDARB) BuiltIn DrawIndex - Decorate 156(gl_ViewIndex) BuiltIn ViewIndex - Decorate 158 BuiltIn WorkgroupSize + Decorate 134(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT + Decorate 152(gl_DrawIDARB) BuiltIn DrawIndex + Decorate 155(gl_ViewIndex) BuiltIn ViewIndex + Decorate 157 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 8: TypeInt 32 0 @@ -123,19 +123,18 @@ spv.ext.meshShaderBuiltins.mesh 102: 43(int) Constant 8 105: 89(bool) ConstantFalse 106: TypePointer Output 89(bool) - 132: 8(int) Constant 96 - 133: TypeArray 11(ivec3) 132 - 134: TypePointer Output 133 -135(gl_PrimitiveTriangleIndicesEXT): 134(ptr) Variable Output - 136: 8(int) Constant 257 - 137: 11(ivec3) ConstantComposite 136 136 136 - 138: TypePointer Output 11(ivec3) - 142: 11(ivec3) ConstantComposite 64 64 64 - 150: TypePointer Function 43(int) - 152: TypePointer Input 43(int) -153(gl_DrawIDARB): 152(ptr) Variable Input -156(gl_ViewIndex): 152(ptr) Variable Input - 158: 11(ivec3) ConstantComposite 29 62 62 + 132: TypeArray 11(ivec3) 29 + 133: TypePointer Output 132 +134(gl_PrimitiveTriangleIndicesEXT): 133(ptr) Variable Output + 135: 8(int) Constant 257 + 136: 11(ivec3) ConstantComposite 135 135 135 + 137: TypePointer Output 11(ivec3) + 141: 11(ivec3) ConstantComposite 64 64 64 + 149: TypePointer Function 43(int) + 151: TypePointer Input 43(int) +152(gl_DrawIDARB): 151(ptr) Variable Input +155(gl_ViewIndex): 151(ptr) Variable Input + 157: 11(ivec3) ConstantComposite 29 62 62 4(main): 2 Function None 3 5: Label 10(iid): 9(ptr) Variable Function @@ -244,30 +243,30 @@ spv.ext.meshShaderBuiltins.mesh Store 131 130 MemoryBarrier 62 63 ControlBarrier 64 64 63 - 139: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 44 - Store 139 137 - 140: 8(int) Load 28(primitiveCount) - 141: 8(int) ISub 140 62 - 143: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 141 - Store 143 142 + 138: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 44 + Store 138 136 + 139: 8(int) Load 28(primitiveCount) + 140: 8(int) ISub 139 62 + 142: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 140 + Store 142 141 + 143: 8(int) Load 18(gid) 144: 8(int) Load 18(gid) - 145: 8(int) Load 18(gid) - 146: 8(int) ISub 145 62 - 147: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 146 - 148: 11(ivec3) Load 147 - 149: 138(ptr) AccessChain 135(gl_PrimitiveTriangleIndicesEXT) 144 - Store 149 148 + 145: 8(int) ISub 144 62 + 146: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 145 + 147: 11(ivec3) Load 146 + 148: 137(ptr) AccessChain 134(gl_PrimitiveTriangleIndicesEXT) 143 + Store 148 147 MemoryBarrier 62 63 ControlBarrier 64 64 63 Return FunctionEnd 6(testAdditionalBuiltins(): 2 Function None 3 7: Label - 151(id): 150(ptr) Variable Function - 155(viewIdx): 150(ptr) Variable Function - 154: 43(int) Load 153(gl_DrawIDARB) - Store 151(id) 154 - 157: 43(int) Load 156(gl_ViewIndex) - Store 155(viewIdx) 157 + 150(id): 149(ptr) Variable Function + 154(viewIdx): 149(ptr) Variable Function + 153: 43(int) Load 152(gl_DrawIDARB) + Store 150(id) 153 + 156: 43(int) Load 155(gl_ViewIndex) + Store 154(viewIdx) 156 Return FunctionEnd From 90c5214344bc9ec0e7c5cc09e86dad82b8b7abc9 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Fri, 28 Oct 2022 17:27:18 -0600 Subject: [PATCH 107/594] Improve ResourceLimits interface to be more forward compatible New interface allows users to generate ResourceLimits for interface so that additions to TBuiltInResource do not break the ABI. Users should use the glslang-default-resource-limits library and the Public/ResourceLimits.h header. Similar changes have been made to the C interface. Use Public/resource_limits_c.h. Fixes #2822 --- BUILD.bazel | 2 +- StandAlone/ResourceLimits.cpp | 14 +++++++++++--- StandAlone/StandAlone.cpp | 15 +++++++-------- StandAlone/resource_limits_c.cpp | 15 ++++++++++----- glslang/CInterface/glslang_c_interface.cpp | 2 +- glslang/CMakeLists.txt | 2 ++ {StandAlone => glslang/Public}/ResourceLimits.h | 10 +++++----- .../Public}/resource_limits_c.h | 3 +++ gtests/BuiltInResource.FromFile.cpp | 4 ++-- gtests/Config.FromFile.cpp | 4 ++-- gtests/TestFixture.h | 6 +++--- 11 files changed, 47 insertions(+), 30 deletions(-) rename {StandAlone => glslang/Public}/ResourceLimits.h (90%) rename {StandAlone => glslang/Public}/resource_limits_c.h (95%) diff --git a/BUILD.bazel b/BUILD.bazel index 12168fae1b..45efbd353f 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -210,7 +210,7 @@ cc_library( cc_library( name = "glslang-default-resource-limits", srcs = ["StandAlone/ResourceLimits.cpp"], - hdrs = ["StandAlone/ResourceLimits.h"], + hdrs = ["glslang/Public/ResourceLimits.h"], copts = COMMON_COPTS, linkstatic = 1, deps = [":glslang"], diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index 1a76bf62d2..6e1a3d85c0 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -37,9 +37,9 @@ #include #include -#include "ResourceLimits.h" +#include "glslang/Public/ResourceLimits.h" -namespace glslang { +TBuiltInResource Resources; const TBuiltInResource DefaultTBuiltInResource = { /* .MaxLights = */ 32, @@ -529,4 +529,12 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) } } -} // end namespace glslang +TBuiltInResource* GetResources() +{ + return &Resources; +} + +const TBuiltInResource* GetDefaultResources() +{ + return &DefaultTBuiltInResource; +} diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index edde81e281..53a6b9c2fb 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -41,7 +41,7 @@ #define _CRT_SECURE_NO_WARNINGS #endif -#include "ResourceLimits.h" +#include "glslang/Public/ResourceLimits.h" #include "Worklist.h" #include "DirStackFileIncluder.h" #include "./../glslang/Include/ShHandle.h" @@ -149,7 +149,6 @@ bool LinkFailed = false; // array of unique places to leave the shader names and infologs for the asynchronous compiles std::vector> WorkItems; -TBuiltInResource Resources; std::string ConfigFile; // @@ -158,11 +157,11 @@ std::string ConfigFile; void ProcessConfigFile() { if (ConfigFile.size() == 0) - Resources = glslang::DefaultTBuiltInResource; + *GetResources() = *GetDefaultResources(); #ifndef GLSLANG_WEB else { char* configString = ReadFileData(ConfigFile.c_str()); - glslang::DecodeResourceLimits(&Resources, configString); + DecodeResourceLimits(GetResources(), configString); FreeFileData(configString); } #endif @@ -1417,7 +1416,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) #ifndef GLSLANG_WEB if (Options & EOptionOutputPreprocessed) { std::string str; - if (shader->preprocess(&Resources, defaultVersion, ENoProfile, false, false, messages, &str, includer)) { + if (shader->preprocess(GetResources(), defaultVersion, ENoProfile, false, false, messages, &str, includer)) { PutsIfNonEmpty(str.c_str()); } else { CompileFailed = true; @@ -1428,7 +1427,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } #endif - if (! shader->parse(&Resources, defaultVersion, false, messages, includer)) + if (! shader->parse(GetResources(), defaultVersion, false, messages, includer)) CompileFailed = true; program.addShader(shader); @@ -1612,7 +1611,7 @@ int singleMain() #ifndef GLSLANG_WEB if (Options & EOptionDumpConfig) { - printf("%s", glslang::GetDefaultTBuiltInResourceString().c_str()); + printf("%s", GetDefaultTBuiltInResourceString().c_str()); if (workList.empty()) return ESuccess; } @@ -1838,7 +1837,7 @@ void CompileFile(const char* fileName, ShHandle compiler) for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) { for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) { // ret = ShCompile(compiler, shaderStrings, NumShaderStrings, lengths, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); - ret = ShCompile(compiler, &shaderString, 1, nullptr, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); + ret = ShCompile(compiler, &shaderString, 1, nullptr, EShOptNone, GetResources(), Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); // const char* multi[12] = { "# ve", "rsion", " 300 e", "s", "\n#err", // "or should be l", "ine 1", "string 5\n", "float glo", "bal", // ";\n#error should be line 2\n void main() {", "global = 2.3;}" }; diff --git a/StandAlone/resource_limits_c.cpp b/StandAlone/resource_limits_c.cpp index a1f681c7b8..0eeac23a5e 100644 --- a/StandAlone/resource_limits_c.cpp +++ b/StandAlone/resource_limits_c.cpp @@ -26,15 +26,20 @@ OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. **/ -#include "resource_limits_c.h" -#include "ResourceLimits.h" +#include "glslang/Public/resource_limits_c.h" +#include "glslang/Public/ResourceLimits.h" #include #include #include +glslang_resource_t* glslang_resource(void) +{ + return reinterpret_cast(GetResources()); +} + const glslang_resource_t* glslang_default_resource(void) { - return reinterpret_cast(&glslang::DefaultTBuiltInResource); + return reinterpret_cast(GetDefaultResources()); } #if defined(__clang__) || defined(__GNUC__) @@ -47,7 +52,7 @@ const glslang_resource_t* glslang_default_resource(void) const char* glslang_default_resource_string() { - std::string cpp_str = glslang::GetDefaultTBuiltInResourceString(); + std::string cpp_str = GetDefaultTBuiltInResourceString(); char* c_str = (char*)malloc(cpp_str.length() + 1); strcpy(c_str, cpp_str.c_str()); return c_str; @@ -61,5 +66,5 @@ const char* glslang_default_resource_string() void glslang_decode_resource_limits(glslang_resource_t* resources, char* config) { - glslang::DecodeResourceLimits(reinterpret_cast(resources), config); + DecodeResourceLimits(reinterpret_cast(resources), config); } diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 1bb4000ac9..1465ce17a1 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -33,7 +33,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "glslang/Include/glslang_c_interface.h" #include "StandAlone/DirStackFileIncluder.h" -#include "StandAlone/ResourceLimits.h" +#include "glslang/Public/ResourceLimits.h" #include "glslang/Include/ShHandle.h" #include "glslang/Include/ResourceLimits.h" diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 72e82b4821..a8b14911f1 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -149,6 +149,8 @@ set(GLSLANG_SOURCES set(GLSLANG_HEADERS Public/ShaderLang.h + Public/ResourceLimits.h + Public/resource_limits_c.h Include/arrays.h Include/BaseTypes.h Include/Common.h diff --git a/StandAlone/ResourceLimits.h b/glslang/Public/ResourceLimits.h similarity index 90% rename from StandAlone/ResourceLimits.h rename to glslang/Public/ResourceLimits.h index 736248eb39..f70be8172a 100644 --- a/StandAlone/ResourceLimits.h +++ b/glslang/Public/ResourceLimits.h @@ -37,14 +37,16 @@ #include -#include "../glslang/Include/ResourceLimits.h" +#include "../Include/ResourceLimits.h" -namespace glslang { +// Return pointer to user-writable Resource to pass through API in +// future-proof way. +extern TBuiltInResource* GetResources(); // These are the default resources for TBuiltInResources, used for both // - parsing this string for the case where the user didn't supply one, // - dumping out a template for user construction of a config file. -extern const TBuiltInResource DefaultTBuiltInResource; +extern const TBuiltInResource* GetDefaultResources(); // Returns the DefaultTBuiltInResource as a human-readable string. std::string GetDefaultTBuiltInResourceString(); @@ -52,6 +54,4 @@ std::string GetDefaultTBuiltInResourceString(); // Decodes the resource limits from |config| to |resources|. void DecodeResourceLimits(TBuiltInResource* resources, char* config); -} // end namespace glslang - #endif // _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_ diff --git a/StandAlone/resource_limits_c.h b/glslang/Public/resource_limits_c.h similarity index 95% rename from StandAlone/resource_limits_c.h rename to glslang/Public/resource_limits_c.h index 108fd5e21e..afe83e485c 100644 --- a/StandAlone/resource_limits_c.h +++ b/glslang/Public/resource_limits_c.h @@ -35,6 +35,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. extern "C" { #endif +// Returns a struct that can be use to create custom resource values. +glslang_resource_t* glslang_resource(void); + // These are the default resources for TBuiltInResources, used for both // - parsing this string for the case where the user didn't supply one, // - dumping out a template for user construction of a config file. diff --git a/gtests/BuiltInResource.FromFile.cpp b/gtests/BuiltInResource.FromFile.cpp index da81fe98c3..9a7c9b575e 100644 --- a/gtests/BuiltInResource.FromFile.cpp +++ b/gtests/BuiltInResource.FromFile.cpp @@ -36,7 +36,7 @@ #include -#include "StandAlone/ResourceLimits.h" +#include "glslang/Public/ResourceLimits.h" #include "TestFixture.h" namespace glslangtest { @@ -49,7 +49,7 @@ TEST_F(DefaultResourceTest, FromFile) const std::string path = GlobalTestSettings.testRoot + "/baseResults/test.conf"; std::string expectedConfig; tryLoadFile(path, "expected resource limit", &expectedConfig); - const std::string realConfig = glslang::GetDefaultTBuiltInResourceString(); + const std::string realConfig = GetDefaultTBuiltInResourceString(); ASSERT_EQ(expectedConfig, realConfig); } diff --git a/gtests/Config.FromFile.cpp b/gtests/Config.FromFile.cpp index dd18c13a93..05107e7870 100644 --- a/gtests/Config.FromFile.cpp +++ b/gtests/Config.FromFile.cpp @@ -32,7 +32,7 @@ // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -#include "StandAlone/ResourceLimits.h" +#include "glslang/Public/ResourceLimits.h" #include "TestFixture.h" namespace glslangtest { @@ -65,7 +65,7 @@ TEST_P(ConfigTest, FromFile) char* configChars = new char[len + 1]; memcpy(configChars, configContents.data(), len); configChars[len] = 0; - glslang::DecodeResourceLimits(&resources, configChars); + DecodeResourceLimits(&resources, configChars); delete[] configChars; } diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index d087d6ddc6..2127cae8d4 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -48,7 +48,7 @@ #include "SPIRV/disassemble.h" #include "SPIRV/doc.h" #include "SPIRV/SPVRemapper.h" -#include "StandAlone/ResourceLimits.h" +#include "glslang/Public/ResourceLimits.h" #include "glslang/Public/ShaderLang.h" #include "Initializer.h" @@ -199,7 +199,7 @@ class GlslangTest : public GT { shader->setStringsWithLengths(&shaderStrings, &shaderLengths, 1); if (!entryPointName.empty()) shader->setEntryPoint(entryPointName.c_str()); return shader->parse( - (resources ? resources : &glslang::DefaultTBuiltInResource), + (resources ? resources : GetDefaultResources()), defaultVersion, isForwardCompatible, controls); } @@ -640,7 +640,7 @@ class GlslangTest : public GT { std::string ppShader; glslang::TShader::ForbidIncluder includer; const bool success = shader.preprocess( - &glslang::DefaultTBuiltInResource, defaultVersion, defaultProfile, + GetDefaultResources(), defaultVersion, defaultProfile, forceVersionProfile, isForwardCompatible, (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), &ppShader, includer); From 1813a14af3466b63cf6192635a5f95f9e2a3467b Mon Sep 17 00:00:00 2001 From: Shahbaz Youssefi Date: Thu, 3 Nov 2022 10:17:33 -0400 Subject: [PATCH 108/594] Fix gn build --- BUILD.gn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD.gn b/BUILD.gn index 29328d4076..e95f19b1ff 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -307,7 +307,7 @@ glslang_sources_common("glslang_sources") { source_set("glslang_default_resource_limits_sources") { sources = [ "StandAlone/ResourceLimits.cpp", - "StandAlone/ResourceLimits.h", + "glslang/Public/ResourceLimits.h", "glslang/Include/ResourceLimits.h", ] public_configs = [ ":glslang_public" ] From cc4c7330a246f7c3757633006396e3db5e4fbf12 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Mon, 7 Nov 2022 12:06:46 -0700 Subject: [PATCH 109/594] Fix include in resource_limits_c.h Fixes #3059 --- glslang/Public/resource_limits_c.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/Public/resource_limits_c.h b/glslang/Public/resource_limits_c.h index afe83e485c..05aa8eb026 100644 --- a/glslang/Public/resource_limits_c.h +++ b/glslang/Public/resource_limits_c.h @@ -29,7 +29,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ #define _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ -#include "../glslang/Include/glslang_c_interface.h" +#include "../Include/glslang_c_interface.h" #ifdef __cplusplus extern "C" { From 6b2493a4d81afadc1b696dbc30d62196615134a7 Mon Sep 17 00:00:00 2001 From: Shahbaz Youssefi Date: Tue, 8 Nov 2022 15:11:36 -0500 Subject: [PATCH 110/594] Remove GLSLANG_ANGLE ANGLE no longer links with glslang. This change reverts 1ef2e250fc36d862573cc5e92f04b1d0e2d89867 which added a flag to strip glslang to reduce its binary size. This flag is no longer needed. --- BUILD.gn | 12 +-- SPIRV/GlslangToSpv.cpp | 4 +- glslang/MachineIndependent/Initialize.cpp | 78 +++---------------- glslang/MachineIndependent/ShaderLang.cpp | 41 ++++------ glslang/MachineIndependent/SymbolTable.cpp | 2 +- glslang/MachineIndependent/SymbolTable.h | 12 +-- glslang/MachineIndependent/intermOut.cpp | 4 +- glslang/MachineIndependent/iomapper.cpp | 4 +- glslang/MachineIndependent/iomapper.h | 4 +- glslang/MachineIndependent/linkValidate.cpp | 6 +- .../MachineIndependent/localintermediate.h | 11 --- glslang/MachineIndependent/parseVersions.h | 7 +- glslang/MachineIndependent/reflection.cpp | 4 +- glslang/MachineIndependent/reflection.h | 4 +- glslang/Public/ShaderLang.h | 10 +-- gtests/Link.FromFile.Vk.cpp | 2 +- gtests/TestFixture.h | 6 +- 17 files changed, 55 insertions(+), 156 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index e95f19b1ff..4987c7004a 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -96,9 +96,6 @@ action("glslang_extension_headers") { } spirv_tools_dir = glslang_spirv_tools_dir -if (!defined(glslang_angle)) { - glslang_angle = false -} config("glslang_public") { include_dirs = [ "." ] @@ -242,9 +239,6 @@ template("glslang_sources_common") { sources += [ "SPIRV/SpvTools.cpp" ] defines += [ "ENABLE_OPT=1" ] } - if (invoker.is_angle) { - defines += [ "GLSLANG_ANGLE" ] - } if (is_win) { sources += [ "glslang/OSDependent/Windows/ossource.cpp" ] @@ -293,15 +287,13 @@ template("glslang_sources_common") { } glslang_sources_common("glslang_lib_sources") { - enable_opt = !glslang_angle - enable_hlsl = !glslang_angle - is_angle = glslang_angle + enable_opt = true + enable_hlsl = true } glslang_sources_common("glslang_sources") { enable_opt = true enable_hlsl = true - is_angle = false } source_set("glslang_default_resource_limits_sources") { diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 74053c17ff..842221cba0 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -294,8 +294,6 @@ spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile { #ifdef GLSLANG_WEB return spv::SourceLanguageESSL; -#elif defined(GLSLANG_ANGLE) - return spv::SourceLanguageGLSL; #endif switch (source) { @@ -9570,7 +9568,7 @@ void OutputSpvBin(const std::vector& spirv, const char* baseName) // Write SPIR-V out to a text file with 32-bit hexadecimal words void OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName) { -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); if (out.fail()) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 0cbb9e78f4..5a9e5003de 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -147,10 +147,6 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo #ifdef GLSLANG_WEB const Versioning* Es300Desktop130 = nullptr; const Versioning* Es310Desktop420 = nullptr; -#elif defined(GLSLANG_ANGLE) - const Versioning* Es300Desktop130 = nullptr; - const Versioning* Es310Desktop420 = nullptr; - const Versioning* Es310Desktop450 = nullptr; #else const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, { EDesktopProfile, 0, 130, 0, nullptr }, @@ -420,7 +416,7 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) // See if the tabled versioning information allows the current version. bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */) { -#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) +#if defined(GLSLANG_WEB) // all entries in table are valid return true; #endif @@ -505,7 +501,7 @@ TBuiltIns::TBuiltIns() prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) prefixes[EbtFloat16] = "f16"; prefixes[EbtInt8] = "i8"; prefixes[EbtUint8] = "u8"; @@ -524,9 +520,7 @@ TBuiltIns::TBuiltIns() dimMap[Esd3D] = 3; dimMap[EsdCube] = 3; #ifndef GLSLANG_WEB -#ifndef GLSLANG_ANGLE dimMap[Esd1D] = 1; -#endif dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; dimMap[EsdSubpass] = 2; // potentially unused for now @@ -551,9 +545,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV #ifdef GLSLANG_WEB version = 310; profile = EEsProfile; -#elif defined(GLSLANG_ANGLE) - version = 450; - profile = ECoreProfile; #endif addTabledBuiltins(version, profile, spvVersion); @@ -599,7 +590,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "vec4 fwidthCoarse(vec4 p);" ); -#ifndef GLSLANG_ANGLE TString derivativesAndControl16bits ( "float16_t dFdx(float16_t);" "f16vec2 dFdx(f16vec2);" @@ -1393,7 +1383,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n" ); } -#endif // !GLSLANG_ANGLE if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 430)) { @@ -1431,7 +1420,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 440) { commonBuiltins.append( "uint64_t atomicMin(coherent volatile inout uint64_t, uint64_t);" @@ -1511,7 +1499,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void atomicStore(coherent volatile out double, double, int, int, int);" "\n"); } -#endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB if ((profile == EEsProfile && version >= 300) || @@ -1552,7 +1539,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64 commonBuiltins.append( "double fma(double, double, double);" @@ -1570,7 +1556,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "f64vec4 fma(f64vec4, f64vec4, f64vec4 );" "\n"); } -#endif if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 400)) { @@ -1588,7 +1573,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 150) { // ARB_gpu_shader_fp64 commonBuiltins.append( "double frexp(double, out int);" @@ -1621,7 +1605,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#endif #endif if ((profile == EEsProfile && version >= 300) || @@ -1731,7 +1714,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } #ifndef GLSLANG_WEB -#ifndef GLSLANG_ANGLE // // Original-style texture functions existing in all stages. // (Per-stage functions below.) @@ -1926,7 +1908,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } } -#endif // !GLSLANG_ANGLE // Bitfield if ((profile == EEsProfile && version >= 310) || @@ -2069,7 +2050,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_ANGLE // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { commonBuiltins.append( @@ -3390,7 +3370,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bool textureFootprintGradClampNV(sampler2D, vec2, vec2, vec2, float, int, bool, out gl_TextureFootprint2DNV);" "\n"); } -#endif // !GLSLANG_ANGLE if ((profile == EEsProfile && version >= 300 && version < 310) || (profile != EEsProfile && version >= 150 && version < 450)) { // GL_EXT_shader_integer_mix @@ -3410,7 +3389,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_ANGLE // GL_AMD_gpu_shader_half_float/Explicit types if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 310)) { commonBuiltins.append( @@ -4184,7 +4162,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#endif // !GLSLANG_ANGLE //============================================================================ // @@ -4200,7 +4177,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV if (spvVersion.vulkan == 0 && IncludeLegacy(version, profile, spvVersion)) stageBuiltins[EShLangVertex].append("vec4 ftransform();"); -#ifndef GLSLANG_ANGLE // // Original-style texture Functions with lod. // @@ -4260,7 +4236,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } } -#endif // !GLSLANG_ANGLE if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) { @@ -4341,7 +4316,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV commonBuiltins.append("void debugPrintfEXT();\n"); -#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 450) { // coopMatStoreNV perhaps ought to have "out" on the buf parameter, but // adding it introduces undesirable tempArgs on the stack. What we want @@ -4465,7 +4439,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#endif // !GLSLANG_ANGLE // GL_ARB_derivative_control if (profile != EEsProfile && version >= 400) { @@ -4503,7 +4476,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "bool helperInvocationEXT();" "\n"); -#ifndef GLSLANG_ANGLE // GL_AMD_shader_explicit_vertex_parameter if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangFragment].append( @@ -4639,14 +4611,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void executeCallableEXT(uint, int);" "\n"); } -#endif // !GLSLANG_ANGLE //E_SPV_NV_compute_shader_derivatives if ((profile == EEsProfile && version >= 320) || (profile != EEsProfile && version >= 450)) { stageBuiltins[EShLangCompute].append(derivativeControls); stageBuiltins[EShLangCompute].append("\n"); } -#ifndef GLSLANG_ANGLE if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangCompute].append(derivativesAndControl16bits); stageBuiltins[EShLangCompute].append(derivativesAndControl64bits); @@ -4670,7 +4640,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void SetMeshOutputsEXT(uint, uint);" "\n"); } -#endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB //============================================================================ @@ -4708,7 +4677,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) { // // Matrix state. p. 31, 32, 37, 39, 40. @@ -4826,7 +4795,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB //============================================================================ // @@ -4857,7 +4826,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } #ifndef GLSLANG_WEB -#ifndef GLSLANG_ANGLE //============================================================================ // // Define the interface to the mesh/task shader. @@ -4974,7 +4942,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } } -#endif // !GLSLANG_ANGLE //============================================================================ // @@ -5708,7 +5675,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_ANGLE // GL_ARB_shader_ballot if (profile != EEsProfile && version >= 450) { const char* ballotDecls = @@ -6067,8 +6033,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } } } -#endif // !GLSLANG_ANGLE - #endif // !GLSLANG_WEB // printf("%s\n", commonBuiltins.c_str()); @@ -6088,7 +6052,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c // enumerate all the types const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint, -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) EbtFloat16 #endif }; @@ -6121,12 +6085,8 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not #ifdef GLSLANG_WEB for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube -#else -#if defined(GLSLANG_ANGLE) - for (int dim = Esd2D; dim < EsdNumDims; ++dim) { // 2D, ..., buffer, subpass #else for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass -#endif if (dim == EsdSubpass && spvVersion.vulkan == 0) continue; if (dim == EsdSubpass && (image || shadow || arrayed)) @@ -6578,9 +6538,6 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; -#elif defined(GLSLANG_ANGLE) - profile = ECoreProfile; - version = 450; #endif // @@ -6657,7 +6614,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, continue; // loop over 16-bit floating-point texel addressing -#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) +#if defined(GLSLANG_WEB) const int f16TexAddr = 0; #else for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) @@ -6670,7 +6627,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, totalDims--; } // loop over "bool" lod clamp -#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) +#if defined(GLSLANG_WEB) const int lodClamp = 0; #else for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) @@ -6682,7 +6639,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, continue; // loop over "bool" sparse or not -#if defined(GLSLANG_WEB) || defined(GLSLANG_ANGLE) +#if defined(GLSLANG_WEB) const int sparse = 0; #else for (int sparse = 0; sparse <= 1; ++sparse) @@ -6866,9 +6823,6 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; -#elif defined(GLSLANG_ANGLE) - profile = ECoreProfile; - version = 450; #endif switch (sampler.dim) { @@ -7112,9 +7066,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf #ifdef GLSLANG_WEB version = 310; profile = EEsProfile; -#elif defined(GLSLANG_ANGLE) - version = 450; - profile = ECoreProfile; #endif // @@ -7547,7 +7498,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } -#ifndef GLSLANG_ANGLE // atomic counters (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 420)) { @@ -7584,7 +7534,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } -#endif // !GLSLANG_ANGLE // GL_ARB_cull_distance if (profile != EEsProfile && version >= 450) { @@ -7601,7 +7550,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } -#ifndef GLSLANG_ANGLE // SPV_NV_mesh_shader if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { snprintf(builtInConstant, maxSize, "const int gl_MaxMeshOutputVerticesNV = %d;", resources.maxMeshOutputVerticesNV); @@ -7624,7 +7572,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } -#endif #endif s.append("\n"); @@ -7731,9 +7678,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion #ifdef GLSLANG_WEB version = 310; profile = EEsProfile; -#elif defined(GLSLANG_ANGLE) - version = 450; - profile = ECoreProfile; #endif // @@ -8793,7 +8737,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion #endif // !GLSLANG_WEB break; -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) case EShLangRayGen: case EShLangIntersect: case EShLangAnyHit: @@ -9876,10 +9820,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) { #ifndef GLSLANG_WEB -#if defined(GLSLANG_ANGLE) - profile = ECoreProfile; - version = 450; -#endif if (profile != EEsProfile && version >= 430 && version < 440) { symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts); symbolTable.setVariableExtensions("gl_MaxTransformFeedbackInterleavedComponents", 1, &E_GL_ARB_enhanced_layouts); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 57e3423a76..ced00863e3 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -298,9 +298,6 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; -#elif defined(GLSLANG_ANGLE) - profile = ECoreProfile; - version = 450; #endif (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); @@ -322,9 +319,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; -#elif defined(GLSLANG_ANGLE) - profile = ECoreProfile; - version = 450; #endif std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); @@ -371,7 +365,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangCompute, source, infoSink, commonTable, symbolTables); -#ifndef GLSLANG_ANGLE // check for ray tracing stages if (profile != EEsProfile && version >= 450) { InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangRayGen, source, @@ -399,7 +392,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 320)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTask, source, infoSink, commonTable, symbolTables); -#endif // !GLSLANG_ANGLE #endif // !GLSLANG_WEB return true; @@ -502,7 +494,7 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp // Function to Print all builtins void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) { -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) infoSink.debug << "BuiltinSymbolTable {\n"; symbolTable.dump(infoSink, true); @@ -606,7 +598,7 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo break; } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // Correct for stage type... switch (stage) { case EShLangGeometry: @@ -884,7 +876,7 @@ bool ProcessDeferred( : userInput.scanVersion(version, profile, versionNotFirstToken); bool versionNotFound = version == 0; if (forceDefaultVersionAndProfile && source == EShSourceGlsl) { -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound && (version != defaultVersion || profile != defaultProfile)) { compiler->infoSink.info << "Warning, (version, profile) forced to be (" @@ -910,13 +902,10 @@ bool ProcessDeferred( #ifdef GLSLANG_WEB profile = EEsProfile; version = 310; -#elif defined(GLSLANG_ANGLE) - profile = ECoreProfile; - version = 450; #endif bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst)); -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) bool warnVersionNotFirst = false; if (! versionWillBeError && versionNotFirstToken) { if (messages & EShMsgRelaxedErrors) @@ -989,7 +978,7 @@ bool ProcessDeferred( parseContext->setLimits(*resources); if (! goodVersion) parseContext->addError(); -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) if (warnVersionNotFirst) { TSourceLoc loc; loc.init(); @@ -1027,7 +1016,7 @@ bool ProcessDeferred( return success; } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // Responsible for keeping track of the most recent source string and line in // the preprocessor and outputting newlines appropriately if the source string @@ -1250,16 +1239,14 @@ struct DoFullParse{ parseContext.infoSink.info << parseContext.getNumErrors() << " compilation errors. No code generated.\n\n"; } -#ifndef GLSLANG_ANGLE if (messages & EShMsgAST) intermediate.output(parseContext.infoSink, true); -#endif return success; } }; -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // Take a single compilation unit, and run the preprocessor on it. // Return: True if there were no issues found in preprocessing, // False if during preprocessing any unknown version, pragmas or @@ -1927,7 +1914,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion &environment); } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // Fill in a string with the result of preprocessing ShaderStrings // Returns true if all extensions, pragmas and version strings were valid. // @@ -1966,7 +1953,7 @@ const char* TShader::getInfoDebugLog() } TProgram::TProgram() : -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) reflection(0), #endif linked(false) @@ -1982,7 +1969,7 @@ TProgram::TProgram() : TProgram::~TProgram() { delete infoSink; -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) delete reflection; #endif @@ -2032,7 +2019,7 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) if (stages[stage].size() == 0) return true; -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) int numEsShaders = 0, numNonEsShaders = 0; for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) { if ((*it)->intermediate->getProfile() == EEsProfile) { @@ -2088,10 +2075,8 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) #endif intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0); -#ifndef GLSLANG_ANGLE if (messages & EShMsgAST) intermediate[stage]->output(*infoSink, true); -#endif return intermediate[stage]->getNumErrors() == 0; } @@ -2169,7 +2154,7 @@ const char* TProgram::getInfoDebugLog() return infoSink->debug.c_str(); } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // // Reflection implementation. @@ -2251,6 +2236,6 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper) return ioMapper->doMap(pResolver, *infoSink); } -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB } // end namespace glslang diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 2f1b5ac3cb..b140686d62 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -183,7 +183,7 @@ void TType::buildMangledName(TString& mangledName) const } } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // // Dump functions. diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 2e570bb3bc..0d45e484cd 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -117,7 +117,7 @@ class TSymbol { virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0; void dumpExtensions(TInfoSink& infoSink) const; #endif @@ -196,7 +196,7 @@ class TVariable : public TSymbol { } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const; #endif @@ -329,7 +329,7 @@ class TFunction : public TSymbol { virtual const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } #endif -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const override; #endif @@ -395,7 +395,7 @@ class TAnonMember : public TSymbol { virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual int getAnonId() const { return anonId; } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const override; #endif @@ -582,7 +582,7 @@ class TSymbolTableLevel { void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) void dump(TInfoSink& infoSink, bool complete = false) const; #endif TSymbolTableLevel* clone() const; @@ -912,7 +912,7 @@ class TSymbolTable { } long long getMaxSymbolId() { return uniqueId; } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) void dump(TInfoSink& infoSink, bool complete = false) const; #endif void copyTable(const TSymbolTable& copyOf); diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 987556128b..a79a6928bc 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -36,7 +36,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) #include "localintermediate.h" #include "../Include/InfoSink.h" @@ -1563,4 +1563,4 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) } // end namespace glslang -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 4250e92da6..0ae281d965 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -33,7 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) #include "../Include/Common.h" #include "../Include/InfoSink.h" @@ -1710,4 +1710,4 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { } // end namespace glslang -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index ba7bc3bbc7..0003a74e09 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -33,7 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) #ifndef _IOMAPPER_INCLUDED #define _IOMAPPER_INCLUDED @@ -358,4 +358,4 @@ class TGlslIoMapper : public TIoMapper { #endif // _IOMAPPER_INCLUDED -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index acc512fd4f..fab65a76ef 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -89,7 +89,7 @@ void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage u // void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) { -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) mergeCallGraphs(infoSink, unit); mergeModes(infoSink, unit); mergeTrees(infoSink, unit); @@ -161,7 +161,7 @@ void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) #define MERGE_MAX(member) member = std::max(member, unit.member) #define MERGE_TRUE(member) if (unit.member) member = unit.member; @@ -828,7 +828,7 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType) // void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, EShLanguage unitStage) { -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) bool crossStage = getStage() != unitStage; bool writeTypeComparison = false; bool errorReported = false; diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index e7a171cde1..1bb4e97709 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -283,9 +283,7 @@ class TIntermediate { public: explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : language(l), -#ifndef GLSLANG_ANGLE profile(p), version(v), -#endif treeRoot(0), resources(TBuiltInResource{}), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), @@ -358,15 +356,11 @@ class TIntermediate { void setVersion(int v) { -#ifndef GLSLANG_ANGLE version = v; -#endif } void setProfile(EProfile p) { -#ifndef GLSLANG_ANGLE profile = p; -#endif } int getVersion() const { return version; } @@ -1101,13 +1095,8 @@ class TIntermediate { typedef std::list TGraph; TGraph callGraph; -#ifdef GLSLANG_ANGLE - const EProfile profile = ECoreProfile; - const int version = 450; -#else EProfile profile; // source profile int version; // source version -#endif SpvVersion spvVersion; TIntermNode* treeRoot; std::set requestedExtensions; // cumulation of all enabled or required extensions; not connected to what subset of the shader used them diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index 7248354e4b..3c52ff1aab 100644 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -58,7 +58,7 @@ class TParseVersions { const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) forwardCompatible(forwardCompatible), profile(profile), #endif @@ -116,14 +116,9 @@ class TParseVersions { bool relaxedErrors() const { return false; } bool suppressWarnings() const { return true; } bool isForwardCompatible() const { return false; } -#else -#ifdef GLSLANG_ANGLE - const bool forwardCompatible = true; - const EProfile profile = ECoreProfile; #else bool forwardCompatible; // true if errors are to be given for use of deprecated features EProfile profile; // the declared profile in the shader (core by default) -#endif bool isEsProfile() const { return profile == EEsProfile; } void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc); void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index 9ea48c452d..3061ff79e7 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -33,7 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) #include "../Include/Common.h" #include "reflection.h" @@ -1271,4 +1271,4 @@ void TReflection::dump() } // end namespace glslang -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h index 5af4467c1f..bfd5452666 100644 --- a/glslang/MachineIndependent/reflection.h +++ b/glslang/MachineIndependent/reflection.h @@ -33,7 +33,7 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) #ifndef _REFLECTION_INCLUDED #define _REFLECTION_INCLUDED @@ -220,4 +220,4 @@ class TReflection { #endif // _REFLECTION_INCLUDED -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 78dd323a2e..90a5302a82 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -728,7 +728,7 @@ class TShader { TShader& operator=(TShader&); }; -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // // A reflection database and its interface, consistent with the OpenGL API reflection queries. @@ -846,7 +846,7 @@ class TIoMapResolver virtual void addStage(EShLanguage stage, TIntermediate& stageIntermediate) = 0; }; -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB // Make one TProgram per set of shaders that will get linked together. Add all // the shaders that are to be linked together. After calling shader.parse() @@ -867,7 +867,7 @@ class TProgram { TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; } -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) // Reflection Interface @@ -961,7 +961,7 @@ class TProgram { // If resolver is not provided it uses the previous approach // and respects auto assignment and offsets. GLSLANG_EXPORT bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr); -#endif // !GLSLANG_WEB && !GLSLANG_ANGLE +#endif // !GLSLANG_WEB protected: GLSLANG_EXPORT bool linkStage(EShLanguage, EShMessages); @@ -972,7 +972,7 @@ class TProgram { TIntermediate* intermediate[EShLangCount]; bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) TReflection* reflection; #endif bool linked; diff --git a/gtests/Link.FromFile.Vk.cpp b/gtests/Link.FromFile.Vk.cpp index 4db71c2c96..6015c331ee 100644 --- a/gtests/Link.FromFile.Vk.cpp +++ b/gtests/Link.FromFile.Vk.cpp @@ -75,7 +75,7 @@ TEST_P(LinkTestVulkan, FromFile) result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) if (success) program.mapIO(); #endif diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 2127cae8d4..67783c0c4d 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -254,7 +254,7 @@ class GlslangTest : public GT { glslang::TProgram program; program.addShader(&shader); success &= program.link(controls); -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) if (success) program.mapIO(); #endif @@ -318,7 +318,7 @@ class GlslangTest : public GT { program.addShader(&shader); success &= program.link(controls); -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) if (success) program.mapIO(); #endif @@ -363,7 +363,7 @@ class GlslangTest : public GT { glslang::TProgram program; program.addShader(&shader); success &= program.link(controls); -#if !defined(GLSLANG_WEB) && !defined(GLSLANG_ANGLE) +#if !defined(GLSLANG_WEB) if (success) program.mapIO(); #endif From 88fd417b0bb7d91755961c70e846d274c182f2b0 Mon Sep 17 00:00:00 2001 From: Sven-Hendrik Haase Date: Mon, 14 Nov 2022 06:30:55 +0100 Subject: [PATCH 111/594] Fix locations of cmake files in side compat shims In https://github.com/KhronosGroup/glslang/pull/3027, the installed cmake files were stuck into a /cmake subdir but this isn't reflected in these compatibility shims. --- OGLCompilersDLL/CMakeLists.txt | 2 +- SPIRV/CMakeLists.txt | 4 ++-- StandAlone/CMakeLists.txt | 6 +++--- glslang/CMakeLists.txt | 2 +- glslang/OSDependent/Unix/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 2 +- gtests/CMakeLists.txt | 2 +- hlsl/CMakeLists.txt | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index b44cbc73a5..33f16b0d5a 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -49,7 +49,7 @@ if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OGLCompiler) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OGLCompiler ALIAS glslang::OGLCompiler) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 2408e4cce1..9a3a6a0201 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -122,7 +122,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::SPVRemapper) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(SPVRemapper ALIAS glslang::SPVRemapper) @@ -134,7 +134,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::SPIRV) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(SPIRV ALIAS glslang::SPIRV) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index d54a1df8c0..b9bac802b8 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -111,7 +111,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslangValidator) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslangValidator ALIAS glslang::glslangValidator) @@ -126,7 +126,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::spirv-remap) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(spirv-remap ALIAS glslang::spirv-remap) @@ -141,7 +141,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslang-default-resource-limits) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index a8b14911f1..7709f0987b 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -212,7 +212,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslang) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() if(${BUILD_SHARED_LIBS}) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 16eb939b98..7ed71fbffc 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -60,7 +60,7 @@ if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OSDependent) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OSDependent ALIAS glslang::OSDependent) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 6048bb872d..67976da835 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -55,7 +55,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OSDependent) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OSDependent ALIAS glslang::OSDependent) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 8dff7ede02..203812d8fb 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -76,7 +76,7 @@ if(BUILD_TESTING) message(WARNING \"Using `glslangtestsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslangtests) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslangtests ALIAS glslang::glslangtests) diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index b34df3aeaf..a4adb6072a 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -52,7 +52,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `HLSLTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::HLSL) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(HLSL ALIAS glslang::HLSL) From 1ddba01a807d8df39dd8b0615149906159b1bc52 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Mon, 28 Nov 2022 12:06:59 -0700 Subject: [PATCH 112/594] Update known goods --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 5ee36a2d20..b0ceeadac1 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "eb0a36633d2acf4de82588504f951ad0f2cecacb" + "commit" : "d9446130d5165f7fafcb3599252a22e264c7d4bd" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "85a1ed200d50660786c1a88d9166e871123cce39" + "commit" : "c214f6f2d1a7253bb0e9f195c2dc5b0659dc99ef" } ] } From 7f047b986b5e3097ffbb0d9baba623b0b28dc73b Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Mon, 18 Apr 2022 16:00:51 -0600 Subject: [PATCH 113/594] Add EliminateDeadOutputStores to API. Also eliminates dead output variables and unused output variable components. Finally calls aggressive dead code elimination. AnalyzeDeadOutputStores also supplied to be called on the following shader to provide input for the Eliminate* function. --- SPIRV/SpvTools.cpp | 53 ++++++++++++++++++++++++++++++++++++++++++++-- SPIRV/SpvTools.h | 19 +++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 25299937a3..1b26280005 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -212,8 +212,7 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector optimizer.RegisterPass(spvtools::CreateInterpolateFixupPass()); if (options->optimizeSize) { optimizer.RegisterPass(spvtools::CreateRedundancyEliminationPass()); - if (intermediate.getStage() == EShLanguage::EShLangVertex) - optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); + optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsSafePass()); } optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); @@ -224,6 +223,56 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); } +bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, + std::unordered_set* live_locs, + std::unordered_set* live_builtins, + spv::SpvBuildLogger* logger) +{ + spvtools::Optimizer optimizer(target_env); + optimizer.SetMessageConsumer(OptimizerMesssageConsumer); + + optimizer.RegisterPass(spvtools::CreateAnalyzeLiveInputPass(live_locs, live_builtins)); + + spvtools::OptimizerOptions spvOptOptions; + optimizer.SetTargetEnv(target_env); + spvOptOptions.set_run_validator(false); + return optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); +} + +void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector& spirv, + std::unordered_set* live_locs, + std::unordered_set* live_builtins, + spv::SpvBuildLogger* logger) +{ + spvtools::Optimizer optimizer(target_env); + optimizer.SetMessageConsumer(OptimizerMesssageConsumer); + + optimizer.RegisterPass(spvtools::CreateEliminateDeadOutputStoresPass(live_locs, live_builtins)); + optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass(false, true)); + optimizer.RegisterPass(spvtools::CreateEliminateDeadOutputComponentsPass()); + optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass(false, true)); + + spvtools::OptimizerOptions spvOptOptions; + optimizer.SetTargetEnv(target_env); + spvOptOptions.set_run_validator(false); + optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); +} + +void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector& spirv, + spv::SpvBuildLogger* logger) +{ + spvtools::Optimizer optimizer(target_env); + optimizer.SetMessageConsumer(OptimizerMesssageConsumer); + + optimizer.RegisterPass(spvtools::CreateEliminateDeadInputComponentsPass()); + optimizer.RegisterPass(spvtools::CreateAggressiveDCEPass()); + + spvtools::OptimizerOptions spvOptOptions; + optimizer.SetTargetEnv(target_env); + spvOptOptions.set_run_validator(false); + optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); +} + // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if // optimization is disabled. diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 5386048ab6..6fc4e40b02 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -65,6 +65,9 @@ struct SpvOptions { #if ENABLE_OPT +// Translate glslang's view of target versioning to what SPIRV-Tools uses. +spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger); + // Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); @@ -80,6 +83,22 @@ void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector< void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger*, const SpvOptions*); +// Apply the SPIRV-Tools EliminateDeadInputComponents pass to generated SPIR-V. Put result in |spirv|. +void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector& spirv, + spv::SpvBuildLogger*); + +// Apply the SPIRV-Tools AnalyzeDeadOutputStores pass to generated SPIR-V. Put result in |live_locs|. +// Return true if the result is valid. +bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, + std::unordered_set* live_locs, + std::unordered_set* live_builtins, spv::SpvBuildLogger*); + +// Apply the SPIRV-Tools EliminateDeadOutputStores and AggressiveDeadCodeElimination passes to generated SPIR-V using +// |live_locs|. Put result in |spirv|. +void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector& spirv, + std::unordered_set* live_locs, + std::unordered_set* live_builtins, spv::SpvBuildLogger*); + // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if // optimization is disabled. From 728c689574fba7e53305b475cd57f196c1a21226 Mon Sep 17 00:00:00 2001 From: Johannes Kauffmann <19662702+JohannesKauffmann@users.noreply.github.com> Date: Thu, 24 Nov 2022 00:14:23 +0100 Subject: [PATCH 114/594] Include: PoolAlloc: do not rely on CMake define On Windows, _DEBUG is defined by CMake if CMAKE_BUILD_TYPE is Debug. But on other platforms, this is not the case and thus in debug mode, the guard checks are not enabled. Instead, rely on the NDEBUG define, which is always defined in release mode (Release, RelWithDebInfo and MinSizeRel). This works reliably on all platforms: It is also used to enable or disable assertions. --- glslang/Include/PoolAlloc.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h index 1f5cac76de..15adbaf0e3 100644 --- a/glslang/Include/PoolAlloc.h +++ b/glslang/Include/PoolAlloc.h @@ -37,7 +37,7 @@ #ifndef _POOLALLOC_INCLUDED_ #define _POOLALLOC_INCLUDED_ -#ifdef _DEBUG +#ifndef NDEBUG # define GUARD_BLOCKS // define to enable guard block sanity checking #endif From a7603c132d0dd1476eb8e13e50d042820f2154a7 Mon Sep 17 00:00:00 2001 From: Johannes Kauffmann <19662702+JohannesKauffmann@users.noreply.github.com> Date: Tue, 22 Nov 2022 19:09:31 +0100 Subject: [PATCH 115/594] Use nullptr where possible instead of NULL or 0 --- OGLCompilersDLL/InitializeDll.cpp | 6 +- SPIRV/GlslangToSpv.cpp | 2 +- SPIRV/SpvBuilder.cpp | 10 +- SPIRV/SpvBuilder.h | 2 +- SPIRV/doc.cpp | 4 +- SPIRV/doc.h | 4 +- StandAlone/StandAlone.cpp | 14 +- StandAlone/spirv-remap.cpp | 4 +- gen_extension_headers.py | 2 +- glslang/GenericCodeGen/Link.cpp | 2 +- glslang/HLSL/hlslGrammar.cpp | 2 +- glslang/HLSL/hlslParseHelper.cpp | 10 +- glslang/HLSL/hlslParseHelper.h | 8 +- glslang/Include/PoolAlloc.h | 6 +- glslang/Include/ShHandle.h | 16 +- glslang/Include/intermediate.h | 56 +++--- glslang/MachineIndependent/Constant.cpp | 10 +- glslang/MachineIndependent/Intermediate.cpp | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 12 +- glslang/MachineIndependent/ParseHelper.h | 4 +- glslang/MachineIndependent/PoolAlloc.cpp | 10 +- glslang/MachineIndependent/ShaderLang.cpp | 60 +++--- glslang/MachineIndependent/SymbolTable.cpp | 2 +- glslang/MachineIndependent/SymbolTable.h | 32 +-- glslang/MachineIndependent/Versions.cpp | 8 +- glslang/MachineIndependent/glslang_tab.cpp | 184 +++++++++--------- glslang/MachineIndependent/intermOut.cpp | 2 +- glslang/MachineIndependent/linkValidate.cpp | 2 +- .../MachineIndependent/localintermediate.h | 2 +- glslang/MachineIndependent/parseConst.cpp | 2 +- glslang/MachineIndependent/parseVersions.h | 2 +- .../preprocessor/PpContext.cpp | 2 +- .../preprocessor/PpTokens.cpp | 2 +- .../propagateNoContraction.cpp | 2 +- glslang/MachineIndependent/reflection.cpp | 2 +- glslang/OSDependent/Unix/ossource.cpp | 2 +- glslang/OSDependent/Windows/ossource.cpp | 4 +- glslang/OSDependent/osinclude.h | 2 +- 38 files changed, 249 insertions(+), 249 deletions(-) diff --git a/OGLCompilersDLL/InitializeDll.cpp b/OGLCompilersDLL/InitializeDll.cpp index abea9108b1..9d81f57878 100644 --- a/OGLCompilersDLL/InitializeDll.cpp +++ b/OGLCompilersDLL/InitializeDll.cpp @@ -102,7 +102,7 @@ bool InitThread() return false; } - if (OS_GetTLSValue(ThreadInitializeIndex) != 0) + if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) return true; if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) { @@ -130,8 +130,8 @@ bool DetachThread() // // Function is re-entrant and this thread may not have been initialized. // - if (OS_GetTLSValue(ThreadInitializeIndex) != 0) { - if (!OS_SetTLSValue(ThreadInitializeIndex, (void *)0)) { + if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) { + if (!OS_SetTLSValue(ThreadInitializeIndex, nullptr)) { assert(0 && "DetachThread(): Unable to clear init flag."); success = false; } diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 842221cba0..11fc70c254 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -9615,7 +9615,7 @@ void GlslangToSpv(const TIntermediate& intermediate, std::vector& { TIntermNode* root = intermediate.getTreeRoot(); - if (root == 0) + if (root == nullptr) return; SpvOptions defaultOptions; diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 7c5ea874ba..7b2d703670 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -71,9 +71,9 @@ Builder::Builder(unsigned int spvVersion, unsigned int magicNumber, SpvBuildLogg addressModel(AddressingModelLogical), memoryModel(MemoryModelGLSL450), builderNumber(magicNumber), - buildPoint(0), + buildPoint(nullptr), uniqueId(0), - entryPointFunction(0), + entryPointFunction(nullptr), generatingOpCodeForSpecConst(false), logger(buildLogger) { @@ -1675,7 +1675,7 @@ Id Builder::importNonSemanticShaderDebugInfoInstructions() Id Builder::findCompositeConstant(Op typeClass, Id typeId, const std::vector& comps) { - Instruction* constant = 0; + Instruction* constant = nullptr; bool found = false; for (int i = 0; i < (int)groupedConstants[typeClass].size(); ++i) { constant = groupedConstants[typeClass][i]; @@ -1702,7 +1702,7 @@ Id Builder::findCompositeConstant(Op typeClass, Id typeId, const std::vector Id Builder::findStructConstant(Id typeId, const std::vector& comps) { - Instruction* constant = 0; + Instruction* constant = nullptr; bool found = false; for (int i = 0; i < (int)groupedStructConstants[typeId].size(); ++i) { constant = groupedStructConstants[typeId][i]; @@ -3332,7 +3332,7 @@ Builder::If::If(Id cond, unsigned int ctrl, Builder& gb) : builder(gb), condition(cond), control(ctrl), - elseBlock(0) + elseBlock(nullptr) { function = &builder.getBuildPoint()->getParent(); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index f7fdc6ad84..b75eab8913 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -414,7 +414,7 @@ class Builder { // The returned pointer is only valid for the lifetime of this builder. Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, const std::vector& paramTypes, const std::vector& paramNames, - const std::vector>& precisions, Block **entry = 0); + const std::vector>& precisions, Block **entry = nullptr); // Create a return. An 'implicit' return is one not appearing in the source // code. In the case of an implicit return, no post-return block is inserted. diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index b7fe3e7424..b6cc42db85 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1607,7 +1607,7 @@ void Parameterize() DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'"); DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'"); - OperandClassParams[OperandSource].set(0, SourceString, 0); + OperandClassParams[OperandSource].set(0, SourceString, nullptr); OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr); OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr); OperandClassParams[OperandMemory].set(0, MemoryString, nullptr); @@ -1639,7 +1639,7 @@ void Parameterize() OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); - OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, 0); + OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr); // set name of operator, an initial set of style operands, and the description diff --git a/SPIRV/doc.h b/SPIRV/doc.h index 2a0b28c6b3..7e1559950e 100644 --- a/SPIRV/doc.h +++ b/SPIRV/doc.h @@ -190,7 +190,7 @@ class OperandParameters { // Parameterize an enumerant class EnumParameters { public: - EnumParameters() : desc(0) { } + EnumParameters() : desc(nullptr) { } const char* desc; }; @@ -198,7 +198,7 @@ class EnumParameters { class EnumDefinition : public EnumParameters { public: EnumDefinition() : - ceiling(0), bitmask(false), getName(0), enumParams(0), operandParams(0) { } + ceiling(0), bitmask(false), getName(nullptr), enumParams(nullptr), operandParams(nullptr) { } void set(int ceil, const char* (*name)(int), EnumParameters* ep, bool mask = false) { ceiling = ceil; diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 53a6b9c2fb..e026285620 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -504,7 +504,7 @@ void ProcessGlobalBlockSettings(int& argc, char**& argv, std::string* name, unsi if (set) { errno = 0; - int setVal = ::strtol(argv[curArg], NULL, 10); + int setVal = ::strtol(argv[curArg], nullptr, 10); if (errno || setVal < 0) { printf("%s: invalid set\n", argv[curArg]); usage(); @@ -516,7 +516,7 @@ void ProcessGlobalBlockSettings(int& argc, char**& argv, std::string* name, unsi if (binding) { errno = 0; - int bindingVal = ::strtol(argv[curArg], NULL, 10); + int bindingVal = ::strtol(argv[curArg], nullptr, 10); if (errno || bindingVal < 0) { printf("%s: invalid binding\n", argv[curArg]); usage(); @@ -594,12 +594,12 @@ void ProcessArguments(std::vector>& workItem const auto getUniformOverride = [getStringOperand]() { const char *arg = getStringOperand("-u:"); const char *split = strchr(arg, ':'); - if (split == NULL) { + if (split == nullptr) { printf("%s: missing location\n", arg); exit(EFailUsage); } errno = 0; - int location = ::strtol(split + 1, NULL, 10); + int location = ::strtol(split + 1, nullptr, 10); if (errno) { printf("%s: invalid location\n", arg); exit(EFailUsage); @@ -626,7 +626,7 @@ void ProcessArguments(std::vector>& workItem } else if (lowerword == "uniform-base") { if (argc <= 1) Error("no provided", lowerword.c_str()); - uniformBase = ::strtol(argv[1], NULL, 10); + uniformBase = ::strtol(argv[1], nullptr, 10); bumpArg(); break; } else if (lowerword == "client") { @@ -1161,7 +1161,7 @@ void CompileShaders(glslang::TWorklist& worklist) } else { while (worklist.remove(workItem)) { ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), Options); - if (compiler == 0) + if (compiler == nullptr) return; CompileFile(workItem->name.c_str(), compiler); @@ -1297,7 +1297,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) sources.push_back(compUnit.fileNameList[i]); } glslang::TShader* shader = new glslang::TShader(compUnit.stage); - shader->setStringsWithLengthsAndNames(compUnit.text, NULL, compUnit.fileNameList, compUnit.count); + shader->setStringsWithLengthsAndNames(compUnit.text, nullptr, compUnit.fileNameList, compUnit.count); if (entryPointName) shader->setEntryPoint(entryPointName); if (sourceEntryPointName) { diff --git a/StandAlone/spirv-remap.cpp b/StandAlone/spirv-remap.cpp index 15c3ac513b..301bb0cb56 100644 --- a/StandAlone/spirv-remap.cpp +++ b/StandAlone/spirv-remap.cpp @@ -157,7 +157,7 @@ namespace { } // Print helpful usage message to stdout, and exit - void usage(const char* const name, const char* const msg = 0) + void usage(const char* const name, const char* const msg = nullptr) { if (msg) std::cout << msg << std::endl << std::endl; @@ -245,7 +245,7 @@ namespace { verbosity = 1; if (a < argc) { - char* end_ptr = 0; + char* end_ptr = nullptr; int verb = ::strtol(argv[a], &end_ptr, 10); // If we have not read to the end of the string or // the string contained no elements, then we do not want to diff --git a/gen_extension_headers.py b/gen_extension_headers.py index 2838c9622e..0638720a07 100755 --- a/gen_extension_headers.py +++ b/gen_extension_headers.py @@ -57,7 +57,7 @@ def generate_main(glsl_files, output_header_file): contents += '\tfor (int i = 0; i < n; i++) {\n' for symbol_name in symbol_name_list: - contents += '\t\tif (strstr(shaders[i], "%s") != NULL) {\n' % (symbol_name) + contents += '\t\tif (strstr(shaders[i], "%s") != nullptr) {\n' % (symbol_name) contents += '\t\t shaderString.append(%s_GLSL);\n' % (symbol_name) contents += '\t\t}\n' diff --git a/glslang/GenericCodeGen/Link.cpp b/glslang/GenericCodeGen/Link.cpp index c38db0f69f..5e28405f04 100644 --- a/glslang/GenericCodeGen/Link.cpp +++ b/glslang/GenericCodeGen/Link.cpp @@ -82,7 +82,7 @@ void DeleteUniformMap(TUniformMap* map) TShHandleBase* ConstructBindings() { - return 0; + return nullptr; } void DeleteBindingList(TShHandleBase* bindingList) diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp index a01f24035d..19a792b985 100644 --- a/glslang/HLSL/hlslGrammar.cpp +++ b/glslang/HLSL/hlslGrammar.cpp @@ -3794,7 +3794,7 @@ bool HlslGrammar::acceptIterationStatement(TIntermNode*& statement, const TAttri parseContext.unnestLooping(); --parseContext.controlFlowNestingLevel; - loopNode = intermediate.addLoop(statement, condition, 0, false, loc); + loopNode = intermediate.addLoop(statement, condition, nullptr, false, loc); statement = loopNode; break; diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 62e46a0934..6e0d314aef 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -1596,7 +1596,7 @@ void HlslParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunction // bool builtIn; TSymbol* symbol = symbolTable.find(function.getMangledName(), &builtIn); - const TFunction* prevDec = symbol ? symbol->getAsFunction() : 0; + const TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr; if (prototype) { // All built-in functions are defined, even though they don't have a body. @@ -2472,7 +2472,7 @@ TIntermNode* HlslParseContext::handleReturnValue(const TSourceLoc& loc, TIntermT void HlslParseContext::handleFunctionArgument(TFunction* function, TIntermTyped*& arguments, TIntermTyped* newArg) { - TParameter param = { 0, new TType, nullptr }; + TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(newArg->getType()); function->addParameter(param); @@ -7790,18 +7790,18 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction // Handle aggregates: put all args into the new function call for (int arg = 0; arg < int(args->getAsAggregate()->getSequence().size()); ++arg) { // TODO: But for constness, we could avoid the new & shallowCopy, and use the pointer directly. - TParameter param = { 0, new TType, nullptr }; + TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(args->getAsAggregate()->getSequence()[arg]->getAsTyped()->getType()); convertedCall.addParameter(param); } } else if (args->getAsUnaryNode()) { // Handle unaries: put all args into the new function call - TParameter param = { 0, new TType, nullptr }; + TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(args->getAsUnaryNode()->getOperand()->getAsTyped()->getType()); convertedCall.addParameter(param); } else if (args->getAsTyped()) { // Handle bare e.g, floats, not in an aggregate. - TParameter param = { 0, new TType, nullptr }; + TParameter param = { nullptr, new TType, nullptr }; param.type->shallowCopy(args->getAsTyped()->getType()); convertedCall.addParameter(param); } else { diff --git a/glslang/HLSL/hlslParseHelper.h b/glslang/HLSL/hlslParseHelper.h index 96d85f4347..97c52d453a 100644 --- a/glslang/HLSL/hlslParseHelper.h +++ b/glslang/HLSL/hlslParseHelper.h @@ -147,14 +147,14 @@ class HlslParseContext : public TParseContextBase { void declareTypedef(const TSourceLoc&, const TString& identifier, const TType&); void declareStruct(const TSourceLoc&, TString& structName, TType&); TSymbol* lookupUserType(const TString&, TType&); - TIntermNode* declareVariable(const TSourceLoc&, const TString& identifier, TType&, TIntermTyped* initializer = 0); + TIntermNode* declareVariable(const TSourceLoc&, const TString& identifier, TType&, TIntermTyped* initializer = nullptr); void lengthenList(const TSourceLoc&, TIntermSequence& list, int size, TIntermTyped* scalarInit); TIntermTyped* handleConstructor(const TSourceLoc&, TIntermTyped*, const TType&); TIntermTyped* addConstructor(const TSourceLoc&, TIntermTyped*, const TType&); TIntermTyped* convertArray(TIntermTyped*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); - void declareBlock(const TSourceLoc&, TType&, const TString* instanceName = 0); + void declareBlock(const TSourceLoc&, TType&, const TString* instanceName = nullptr); void declareStructBufferCounter(const TSourceLoc& loc, const TType& bufferType, const TString& name); void fixBlockLocations(const TSourceLoc&, TQualifier&, TTypeList&, bool memberWithLocation, bool memberWithoutLocation); void fixXfbOffsets(TQualifier&, TTypeList&); @@ -171,10 +171,10 @@ class HlslParseContext : public TParseContextBase { void unnestAnnotations() { --annotationNestingLevel; } int getAnnotationNestingLevel() { return annotationNestingLevel; } void pushScope() { symbolTable.push(); } - void popScope() { symbolTable.pop(0); } + void popScope() { symbolTable.pop(nullptr); } void pushThisScope(const TType&, const TVector&); - void popThisScope() { symbolTable.pop(0); } + void popThisScope() { symbolTable.pop(nullptr); } void pushImplicitThis(TVariable* thisParameter) { implicitThisStack.push_back(thisParameter); } void popImplicitThis() { implicitThisStack.pop_back(); } diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h index 15adbaf0e3..3e67d6edff 100644 --- a/glslang/Include/PoolAlloc.h +++ b/glslang/Include/PoolAlloc.h @@ -74,7 +74,7 @@ namespace glslang { class TAllocation { public: - TAllocation(size_t size, unsigned char* mem, TAllocation* prev = 0) : + TAllocation(size_t size, unsigned char* mem, TAllocation* prev = nullptr) : size(size), mem(mem), prevAlloc(prev) { // Allocations are bracketed: // [allocationHeader][initialGuardBlock][userData][finalGuardBlock] @@ -171,7 +171,7 @@ class TPoolAllocator { void popAll(); // - // Call allocate() to actually acquire memory. Returns 0 if no memory + // Call allocate() to actually acquire memory. Returns nullptr if no memory // available, otherwise a properly aligned pointer to 'numBytes' of memory. // void* allocate(size_t numBytes); @@ -189,7 +189,7 @@ class TPoolAllocator { struct tHeader { tHeader(tHeader* nextPage, size_t pageCount) : #ifdef GUARD_BLOCKS - lastAllocation(0), + lastAllocation(nullptr), #endif nextPage(nextPage), pageCount(pageCount) { } diff --git a/glslang/Include/ShHandle.h b/glslang/Include/ShHandle.h index df07bd8eda..dee47c0dfd 100644 --- a/glslang/Include/ShHandle.h +++ b/glslang/Include/ShHandle.h @@ -58,9 +58,9 @@ class TShHandleBase { public: TShHandleBase() { pool = new glslang::TPoolAllocator; } virtual ~TShHandleBase() { delete pool; } - virtual TCompiler* getAsCompiler() { return 0; } - virtual TLinker* getAsLinker() { return 0; } - virtual TUniformMap* getAsUniformMap() { return 0; } + virtual TCompiler* getAsCompiler() { return nullptr; } + virtual TLinker* getAsLinker() { return nullptr; } + virtual TUniformMap* getAsUniformMap() { return nullptr; } virtual glslang::TPoolAllocator* getPool() const { return pool; } private: glslang::TPoolAllocator* pool; @@ -123,11 +123,11 @@ class TLinker : public TShHandleBase { infoSink(iSink), executable(e), haveReturnableObjectCode(false), - appAttributeBindings(0), - fixedAttributeBindings(0), - excludedAttributes(0), + appAttributeBindings(nullptr), + fixedAttributeBindings(nullptr), + excludedAttributes(nullptr), excludedCount(0), - uniformBindings(0) { } + uniformBindings(nullptr) { } virtual TLinker* getAsLinker() { return this; } virtual ~TLinker() { } virtual bool link(TCompilerList&, TUniformMap*) = 0; @@ -137,7 +137,7 @@ class TLinker : public TShHandleBase { virtual void getAttributeBindings(ShBindingTable const **t) const = 0; virtual void setExcludedAttributes(const int* attributes, int count) { excludedAttributes = attributes; excludedCount = count; } virtual ShBindingTable* getUniformBindings() const { return uniformBindings; } - virtual const void* getObjectCode() const { return 0; } // a real compiler would be returning object code here + virtual const void* getObjectCode() const { return nullptr; } // a real compiler would be returning object code here virtual TInfoSink& getInfoSink() { return infoSink; } TInfoSink& infoSink; protected: diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index a0240028d1..2b81a22fec 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1086,31 +1086,31 @@ class TIntermNode { virtual const glslang::TSourceLoc& getLoc() const { return loc; } virtual void setLoc(const glslang::TSourceLoc& l) { loc = l; } virtual void traverse(glslang::TIntermTraverser*) = 0; - virtual glslang::TIntermTyped* getAsTyped() { return 0; } - virtual glslang::TIntermOperator* getAsOperator() { return 0; } - virtual glslang::TIntermConstantUnion* getAsConstantUnion() { return 0; } - virtual glslang::TIntermAggregate* getAsAggregate() { return 0; } - virtual glslang::TIntermUnary* getAsUnaryNode() { return 0; } - virtual glslang::TIntermBinary* getAsBinaryNode() { return 0; } - virtual glslang::TIntermSelection* getAsSelectionNode() { return 0; } - virtual glslang::TIntermSwitch* getAsSwitchNode() { return 0; } - virtual glslang::TIntermMethod* getAsMethodNode() { return 0; } - virtual glslang::TIntermSymbol* getAsSymbolNode() { return 0; } - virtual glslang::TIntermBranch* getAsBranchNode() { return 0; } - virtual glslang::TIntermLoop* getAsLoopNode() { return 0; } - - virtual const glslang::TIntermTyped* getAsTyped() const { return 0; } - virtual const glslang::TIntermOperator* getAsOperator() const { return 0; } - virtual const glslang::TIntermConstantUnion* getAsConstantUnion() const { return 0; } - virtual const glslang::TIntermAggregate* getAsAggregate() const { return 0; } - virtual const glslang::TIntermUnary* getAsUnaryNode() const { return 0; } - virtual const glslang::TIntermBinary* getAsBinaryNode() const { return 0; } - virtual const glslang::TIntermSelection* getAsSelectionNode() const { return 0; } - virtual const glslang::TIntermSwitch* getAsSwitchNode() const { return 0; } - virtual const glslang::TIntermMethod* getAsMethodNode() const { return 0; } - virtual const glslang::TIntermSymbol* getAsSymbolNode() const { return 0; } - virtual const glslang::TIntermBranch* getAsBranchNode() const { return 0; } - virtual const glslang::TIntermLoop* getAsLoopNode() const { return 0; } + virtual glslang::TIntermTyped* getAsTyped() { return nullptr; } + virtual glslang::TIntermOperator* getAsOperator() { return nullptr; } + virtual glslang::TIntermConstantUnion* getAsConstantUnion() { return nullptr; } + virtual glslang::TIntermAggregate* getAsAggregate() { return nullptr; } + virtual glslang::TIntermUnary* getAsUnaryNode() { return nullptr; } + virtual glslang::TIntermBinary* getAsBinaryNode() { return nullptr; } + virtual glslang::TIntermSelection* getAsSelectionNode() { return nullptr; } + virtual glslang::TIntermSwitch* getAsSwitchNode() { return nullptr; } + virtual glslang::TIntermMethod* getAsMethodNode() { return nullptr; } + virtual glslang::TIntermSymbol* getAsSymbolNode() { return nullptr; } + virtual glslang::TIntermBranch* getAsBranchNode() { return nullptr; } + virtual glslang::TIntermLoop* getAsLoopNode() { return nullptr; } + + virtual const glslang::TIntermTyped* getAsTyped() const { return nullptr; } + virtual const glslang::TIntermOperator* getAsOperator() const { return nullptr; } + virtual const glslang::TIntermConstantUnion* getAsConstantUnion() const { return nullptr; } + virtual const glslang::TIntermAggregate* getAsAggregate() const { return nullptr; } + virtual const glslang::TIntermUnary* getAsUnaryNode() const { return nullptr; } + virtual const glslang::TIntermBinary* getAsBinaryNode() const { return nullptr; } + virtual const glslang::TIntermSelection* getAsSelectionNode() const { return nullptr; } + virtual const glslang::TIntermSwitch* getAsSwitchNode() const { return nullptr; } + virtual const glslang::TIntermMethod* getAsMethodNode() const { return nullptr; } + virtual const glslang::TIntermSymbol* getAsSymbolNode() const { return nullptr; } + virtual const glslang::TIntermBranch* getAsBranchNode() const { return nullptr; } + virtual const glslang::TIntermLoop* getAsLoopNode() const { return nullptr; } virtual ~TIntermNode() { } protected: @@ -1616,8 +1616,8 @@ class TIntermBinary : public TIntermOperator { // class TIntermUnary : public TIntermOperator { public: - TIntermUnary(TOperator o, TType& t) : TIntermOperator(o, t), operand(0) {} - TIntermUnary(TOperator o) : TIntermOperator(o), operand(0) {} + TIntermUnary(TOperator o, TType& t) : TIntermOperator(o, t), operand(nullptr) {} + TIntermUnary(TOperator o) : TIntermOperator(o), operand(nullptr) {} virtual void traverse(TIntermTraverser*); virtual void setOperand(TIntermTyped* o) { operand = o; } virtual TIntermTyped* getOperand() { return operand; } @@ -1819,7 +1819,7 @@ class TIntermTraverser { TIntermNode *getParentNode() { - return path.size() == 0 ? NULL : path.back(); + return path.size() == 0 ? nullptr : path.back(); } const bool preVisit; diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 5fc61dbb79..40f53bbcc5 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -226,7 +226,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right newConstArray[i].setU64Const(leftUnionArray[i].getU64Const() / rightUnionArray[i].getU64Const()); break; default: - return 0; + return nullptr; #endif } } @@ -354,7 +354,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right break; default: - return 0; + return nullptr; } TIntermConstantUnion *newNode = new TIntermConstantUnion(newConstArray, returnType); @@ -1345,7 +1345,7 @@ TIntermTyped* TIntermediate::foldDereference(TIntermTyped* node, int index, cons { TType dereferencedType(node->getType(), index); dereferencedType.getQualifier().storage = EvqConst; - TIntermTyped* result = 0; + TIntermTyped* result = nullptr; int size = dereferencedType.computeNumComponents(); // arrays, vectors, matrices, all use simple multiplicative math @@ -1365,7 +1365,7 @@ TIntermTyped* TIntermediate::foldDereference(TIntermTyped* node, int index, cons result = addConstantUnion(TConstUnionArray(node->getAsConstantUnion()->getConstArray(), start, size), node->getType(), loc); - if (result == 0) + if (result == nullptr) result = node; else result->setType(dereferencedType); @@ -1387,7 +1387,7 @@ TIntermTyped* TIntermediate::foldSwizzle(TIntermTyped* node, TSwizzleSelectorsgetType(), loc); - if (result == 0) + if (result == nullptr) result = node; else result->setType(TType(node->getBasicType(), EvqConst, selectors.size())); diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 6a43ef3e84..5adf19d651 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -352,7 +352,7 @@ TIntermTyped* TIntermediate::addIndex(TOperator op, TIntermTyped* base, TIntermT TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, const TSourceLoc& loc) { - if (child == 0) + if (child == nullptr) return nullptr; if (child->getType().getBasicType() == EbtBlock) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 41afbc052a..ff76cada01 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1165,7 +1165,7 @@ TFunction* TParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunct if (symbol && builtIn && function.getBuiltInOp() == EOpSpirvInst) symbol = nullptr; #endif - const TFunction* prevDec = symbol ? symbol->getAsFunction() : 0; + const TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr; if (prevDec) { if (prevDec->isPrototyped() && prototype) profileRequires(loc, EEsProfile, 300, nullptr, "multiple prototypes for same function"); @@ -3140,7 +3140,7 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden ppWarn(loc, "\"defined\" is (un)defined:", op, identifier); else ppError(loc, "\"defined\" can't be (un)defined:", op, identifier); - else if (strstr(identifier, "__") != 0 && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) { + else if (strstr(identifier, "__") != nullptr && !extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) { // The extension GL_EXT_spirv_intrinsics allows us to declare macros prefixed with "__". if (isEsProfile() && version >= 300 && (strcmp(identifier, "__LINE__") == 0 || @@ -5206,7 +5206,7 @@ void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, bool badInit = false; if (! init || ! init->getAsAggregate() || init->getAsAggregate()->getSequence().size() != 1) badInit = true; - TIntermBinary* binaryInit = 0; + TIntermBinary* binaryInit = nullptr; if (! badInit) { // get the declaration assignment binaryInit = init->getAsAggregate()->getSequence()[0]->getAsBinaryNode(); @@ -6015,7 +6015,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi if (language == EShLangMesh || language == EShLangTask) { requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "gl_WorkGroupSize"); } else { - profileRequires(loc, EEsProfile, 310, 0, "gl_WorkGroupSize"); + profileRequires(loc, EEsProfile, 310, nullptr, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); } #endif @@ -7082,7 +7082,7 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T realFunc.addParameter(TParameter().copyParam((*function)[i])); } - TParameter tmpP = { 0, &uintType }; + TParameter tmpP = { nullptr, &uintType }; realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true)); @@ -7099,7 +7099,7 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T realFunc.addParameter(TParameter().copyParam((*function)[i])); } - TParameter tmpP = { 0, &uintType }; + TParameter tmpP = { nullptr, &uintType }; realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true)); diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 885fd90810..64dc005383 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -438,12 +438,12 @@ class TParseContext : public TParseContextBase { const TFunction* findFunction400(const TSourceLoc& loc, const TFunction& call, bool& builtIn); const TFunction* findFunctionExplicitTypes(const TSourceLoc& loc, const TFunction& call, bool& builtIn); void declareTypeDefaults(const TSourceLoc&, const TPublicType&); - TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, const TPublicType&, TArraySizes* typeArray = 0, TIntermTyped* initializer = 0); + TIntermNode* declareVariable(const TSourceLoc&, TString& identifier, const TPublicType&, TArraySizes* typeArray = nullptr, TIntermTyped* initializer = nullptr); TIntermTyped* addConstructor(const TSourceLoc&, TIntermNode*, const TType&); TIntermTyped* constructAggregate(TIntermNode*, const TType&, int, const TSourceLoc&); TIntermTyped* constructBuiltIn(const TType&, TOperator, TIntermTyped*, const TSourceLoc&, bool subset); void inheritMemoryQualifiers(const TQualifier& from, TQualifier& to); - void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = 0, TArraySizes* arraySizes = 0); + void declareBlock(const TSourceLoc&, TTypeList& typeList, const TString* instanceName = nullptr, TArraySizes* arraySizes = nullptr); void blockStorageRemap(const TSourceLoc&, const TString*, TQualifier&); void blockStageIoCheck(const TSourceLoc&, const TQualifier&); void blockQualifierCheck(const TSourceLoc&, const TQualifier&, bool instanceName); diff --git a/glslang/MachineIndependent/PoolAlloc.cpp b/glslang/MachineIndependent/PoolAlloc.cpp index 84c40f4e79..c3a3928ce3 100644 --- a/glslang/MachineIndependent/PoolAlloc.cpp +++ b/glslang/MachineIndependent/PoolAlloc.cpp @@ -267,8 +267,8 @@ void* TPoolAllocator::allocate(size_t numBytes) // size_t numBytesToAlloc = allocationSize + headerSkip; tHeader* memory = reinterpret_cast(::new char[numBytesToAlloc]); - if (memory == 0) - return 0; + if (memory == nullptr) + return nullptr; // Use placement-new to initialize header new(memory) tHeader(inUseList, (numBytesToAlloc + pageSize - 1) / pageSize); @@ -289,8 +289,8 @@ void* TPoolAllocator::allocate(size_t numBytes) freeList = freeList->nextPage; } else { memory = reinterpret_cast(::new char[pageSize]); - if (memory == 0) - return 0; + if (memory == nullptr) + return nullptr; } // Use placement-new to initialize header @@ -308,7 +308,7 @@ void* TPoolAllocator::allocate(size_t numBytes) // void TAllocation::checkAllocList() const { - for (const TAllocation* alloc = this; alloc != 0; alloc = alloc->prevAlloc) + for (const TAllocation* alloc = this; alloc != nullptr; alloc = alloc->prevAlloc) alloc->check(); } diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index ced00863e3..ed40c36699 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1357,7 +1357,7 @@ int ShInitialize() ShHandle ShConstructCompiler(const EShLanguage language, int debugOptions) { if (!InitThread()) - return 0; + return nullptr; TShHandleBase* base = static_cast(ConstructCompiler(language, debugOptions)); @@ -1367,7 +1367,7 @@ ShHandle ShConstructCompiler(const EShLanguage language, int debugOptions) ShHandle ShConstructLinker(const EShExecutable executable, int debugOptions) { if (!InitThread()) - return 0; + return nullptr; TShHandleBase* base = static_cast(ConstructLinker(executable, debugOptions)); @@ -1377,7 +1377,7 @@ ShHandle ShConstructLinker(const EShExecutable executable, int debugOptions) ShHandle ShConstructUniformMap() { if (!InitThread()) - return 0; + return nullptr; TShHandleBase* base = static_cast(ConstructUniformMap()); @@ -1386,7 +1386,7 @@ ShHandle ShConstructUniformMap() void ShDestruct(ShHandle handle) { - if (handle == 0) + if (handle == nullptr) return; TShHandleBase* base = static_cast(handle); @@ -1419,7 +1419,7 @@ int ShFinalize() for (int source = 0; source < SourceCount; ++source) { for (int stage = 0; stage < EShLangCount; ++stage) { delete SharedSymbolTables[version][spvVersion][p][source][stage]; - SharedSymbolTables[version][spvVersion][p][source][stage] = 0; + SharedSymbolTables[version][spvVersion][p][source][stage] = nullptr; } } } @@ -1432,7 +1432,7 @@ int ShFinalize() for (int source = 0; source < SourceCount; ++source) { for (int pc = 0; pc < EPcCount; ++pc) { delete CommonSymbolTable[version][spvVersion][p][source][pc]; - CommonSymbolTable[version][spvVersion][p][source][pc] = 0; + CommonSymbolTable[version][spvVersion][p][source][pc] = nullptr; } } } @@ -1475,12 +1475,12 @@ int ShCompile( ) { // Map the generic handle to the C++ object - if (handle == 0) + if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TCompiler* compiler = base->getAsCompiler(); - if (compiler == 0) + if (compiler == nullptr) return 0; SetThreadPoolAllocator(compiler->getPool()); @@ -1520,13 +1520,13 @@ int ShLinkExt( const ShHandle compHandles[], const int numHandles) { - if (linkHandle == 0 || numHandles == 0) + if (linkHandle == nullptr || numHandles == 0) return 0; THandleList cObjects; for (int i = 0; i < numHandles; ++i) { - if (compHandles[i] == 0) + if (compHandles[i] == nullptr) return 0; TShHandleBase* base = reinterpret_cast(compHandles[i]); if (base->getAsLinker()) { @@ -1535,7 +1535,7 @@ int ShLinkExt( if (base->getAsCompiler()) cObjects.push_back(base->getAsCompiler()); - if (cObjects[i] == 0) + if (cObjects[i] == nullptr) return 0; } @@ -1544,7 +1544,7 @@ int ShLinkExt( SetThreadPoolAllocator(linker->getPool()); - if (linker == 0) + if (linker == nullptr) return 0; linker->infoSink.info.erase(); @@ -1569,7 +1569,7 @@ int ShLinkExt( // void ShSetEncryptionMethod(ShHandle handle) { - if (handle == 0) + if (handle == nullptr) return; } @@ -1578,8 +1578,8 @@ void ShSetEncryptionMethod(ShHandle handle) // const char* ShGetInfoLog(const ShHandle handle) { - if (handle == 0) - return 0; + if (handle == nullptr) + return nullptr; TShHandleBase* base = static_cast(handle); TInfoSink* infoSink; @@ -1589,7 +1589,7 @@ const char* ShGetInfoLog(const ShHandle handle) else if (base->getAsLinker()) infoSink = &(base->getAsLinker()->getInfoSink()); else - return 0; + return nullptr; infoSink->info << infoSink->debug.c_str(); return infoSink->info.c_str(); @@ -1601,14 +1601,14 @@ const char* ShGetInfoLog(const ShHandle handle) // const void* ShGetExecutable(const ShHandle handle) { - if (handle == 0) - return 0; + if (handle == nullptr) + return nullptr; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); - if (linker == 0) - return 0; + if (linker == nullptr) + return nullptr; return linker->getObjectCode(); } @@ -1623,13 +1623,13 @@ const void* ShGetExecutable(const ShHandle handle) // int ShSetVirtualAttributeBindings(const ShHandle handle, const ShBindingTable* table) { - if (handle == 0) + if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); - if (linker == 0) + if (linker == nullptr) return 0; linker->setAppAttributeBindings(table); @@ -1642,13 +1642,13 @@ int ShSetVirtualAttributeBindings(const ShHandle handle, const ShBindingTable* t // int ShSetFixedAttributeBindings(const ShHandle handle, const ShBindingTable* table) { - if (handle == 0) + if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); - if (linker == 0) + if (linker == nullptr) return 0; linker->setFixedAttributeBindings(table); @@ -1660,12 +1660,12 @@ int ShSetFixedAttributeBindings(const ShHandle handle, const ShBindingTable* tab // int ShExcludeAttributes(const ShHandle handle, int *attributes, int count) { - if (handle == 0) + if (handle == nullptr) return 0; TShHandleBase* base = reinterpret_cast(handle); TLinker* linker = static_cast(base->getAsLinker()); - if (linker == 0) + if (linker == nullptr) return 0; linker->setExcludedAttributes(attributes, count); @@ -1681,12 +1681,12 @@ int ShExcludeAttributes(const ShHandle handle, int *attributes, int count) // int ShGetUniformLocation(const ShHandle handle, const char* name) { - if (handle == 0) + if (handle == nullptr) return -1; TShHandleBase* base = reinterpret_cast(handle); TUniformMap* uniformMap= base->getAsUniformMap(); - if (uniformMap == 0) + if (uniformMap == nullptr) return -1; return uniformMap->getLocation(name); @@ -1954,14 +1954,14 @@ const char* TShader::getInfoDebugLog() TProgram::TProgram() : #if !defined(GLSLANG_WEB) - reflection(0), + reflection(nullptr), #endif linked(false) { pool = new TPoolAllocator; infoSink = new TInfoSink; for (int s = 0; s < EShLangCount; ++s) { - intermediate[s] = 0; + intermediate[s] = nullptr; newedIntermediate[s] = false; } } diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index b140686d62..57b868a20e 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -416,7 +416,7 @@ TAnonMember* TAnonMember::clone() const // copy of the original container. assert(0); - return 0; + return nullptr; } TSymbolTableLevel* TSymbolTableLevel::clone() const diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 0d45e484cd..bf427c5e41 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -84,7 +84,7 @@ typedef TVector TExtensionList; class TSymbol { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - explicit TSymbol(const TString *n) : name(n), uniqueId(0), extensions(0), writable(true) { } + explicit TSymbol(const TString *n) : name(n), uniqueId(0), extensions(nullptr), writable(true) { } virtual TSymbol* clone() const = 0; virtual ~TSymbol() { } // rely on all symbol owned memory coming from the pool @@ -97,18 +97,18 @@ class TSymbol { changeName(NewPoolTString(newName.c_str())); } virtual const TString& getMangledName() const { return getName(); } - virtual TFunction* getAsFunction() { return 0; } - virtual const TFunction* getAsFunction() const { return 0; } - virtual TVariable* getAsVariable() { return 0; } - virtual const TVariable* getAsVariable() const { return 0; } - virtual const TAnonMember* getAsAnonMember() const { return 0; } + virtual TFunction* getAsFunction() { return nullptr; } + virtual const TFunction* getAsFunction() const { return nullptr; } + virtual TVariable* getAsVariable() { return nullptr; } + virtual const TVariable* getAsVariable() const { return nullptr; } + virtual const TAnonMember* getAsAnonMember() const { return nullptr; } virtual const TType& getType() const = 0; virtual TType& getWritableType() = 0; virtual void setUniqueId(long long id) { uniqueId = id; } virtual long long getUniqueId() const { return uniqueId; } virtual void setExtensions(int numExts, const char* const exts[]) { - assert(extensions == 0); + assert(extensions == nullptr); assert(numExts > 0); extensions = NewPoolObject(extensions); for (int e = 0; e < numExts; ++e) @@ -229,7 +229,7 @@ struct TParameter { if (param.name) name = NewPoolTString(param.name->c_str()); else - name = 0; + name = nullptr; type = param.type->clone(); defaultValue = param.defaultValue; return *this; @@ -243,7 +243,7 @@ struct TParameter { class TFunction : public TSymbol { public: explicit TFunction(TOperator o) : - TSymbol(0), + TSymbol(nullptr), op(o), defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), defaultParamCount(0) { } TFunction(const TString *name, const TType& retType, TOperator tOp = EOpNull) : @@ -411,7 +411,7 @@ class TAnonMember : public TSymbol { class TSymbolTableLevel { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - TSymbolTableLevel() : defaultPrecision(0), anonId(0), thisLevel(false) { } + TSymbolTableLevel() : defaultPrecision(nullptr), anonId(0), thisLevel(false) { } ~TSymbolTableLevel(); bool insert(const TString& name, TSymbol* symbol) { @@ -493,7 +493,7 @@ class TSymbolTableLevel { { tLevel::const_iterator it = level.find(name); if (it == level.end()) - return 0; + return nullptr; else return (*it).second; } @@ -561,7 +561,7 @@ class TSymbolTableLevel { { // can call multiple times at one scope, will only latch on first call, // as we're tracking the previous scope's values, not the current values - if (defaultPrecision != 0) + if (defaultPrecision != nullptr) return; defaultPrecision = new TPrecisionQualifier[EbtNumTypes]; @@ -573,7 +573,7 @@ class TSymbolTableLevel { { // can be called for table level pops that didn't set the // defaults - if (defaultPrecision == 0 || p == 0) + if (defaultPrecision == nullptr || p == nullptr) return; for (int t = 0; t < EbtNumTypes; ++t) @@ -622,7 +622,7 @@ class TSymbolTable { // don't deallocate levels passed in from elsewhere while (table.size() > adoptedLevels) - pop(0); + pop(nullptr); } void adoptLevels(TSymbolTable& symTable) @@ -783,7 +783,7 @@ class TSymbolTable { // Normal find of a symbol, that can optionally say whether the symbol was found // at a built-in level or the current top-scope level. - TSymbol* find(const TString& name, bool* builtIn = 0, bool* currentScope = 0, int* thisDepthP = 0) + TSymbol* find(const TString& name, bool* builtIn = nullptr, bool* currentScope = nullptr, int* thisDepthP = nullptr) { int level = currentLevel(); TSymbol* symbol; @@ -827,7 +827,7 @@ class TSymbolTable { ++thisDepth; symbol = table[level]->find(name); --level; - } while (symbol == 0 && level >= 0); + } while (symbol == nullptr && level >= 0); if (! table[level + 1]->isThisLevel()) thisDepth = 0; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index a5fd107535..154180258f 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -1066,8 +1066,8 @@ void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * con if (strcmp(extension, "GL_NV_mesh_shader") == 0) { requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask), "#extension GL_NV_mesh_shader"); - profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_NV_mesh_shader"); - profileRequires(loc, EEsProfile, 320, 0, "#extension GL_NV_mesh_shader"); + profileRequires(loc, ECoreProfile, 450, nullptr, "#extension GL_NV_mesh_shader"); + profileRequires(loc, EEsProfile, 320, nullptr, "#extension GL_NV_mesh_shader"); if (extensionTurnedOn(E_GL_EXT_mesh_shader)) { error(loc, "GL_EXT_mesh_shader is already turned on, and not allowed with", "#extension", extension); } @@ -1075,8 +1075,8 @@ void TParseVersions::checkExtensionStage(const TSourceLoc& loc, const char * con else if (strcmp(extension, "GL_EXT_mesh_shader") == 0) { requireStage(loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask | EShLangFragmentMask), "#extension GL_EXT_mesh_shader"); - profileRequires(loc, ECoreProfile, 450, 0, "#extension GL_EXT_mesh_shader"); - profileRequires(loc, EEsProfile, 320, 0, "#extension GL_EXT_mesh_shader"); + profileRequires(loc, ECoreProfile, 450, nullptr, "#extension GL_EXT_mesh_shader"); + profileRequires(loc, EEsProfile, 320, nullptr, "#extension GL_EXT_mesh_shader"); if (extensionTurnedOn(E_GL_NV_mesh_shader)) { error(loc, "GL_NV_mesh_shader is already turned on, and not allowed with", "#extension", extension); } diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 7ca3e711b2..7a5ac521c4 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -5446,7 +5446,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ #line 526 "MachineIndependent/glslang.y" { - TParameter param = { 0, new TType }; + TParameter param = { nullptr, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-1].interm).function->addParameter(param); (yyval.interm).function = (yyvsp[-1].interm).function; @@ -5458,7 +5458,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ #line 533 "MachineIndependent/glslang.y" { - TParameter param = { 0, new TType }; + TParameter param = { nullptr, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-2].interm).function->addParameter(param); (yyval.interm).function = (yyvsp[-2].interm).function; @@ -5479,7 +5479,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 551 "MachineIndependent/glslang.y" { // Constructor - (yyval.interm).intermNode = 0; + (yyval.interm).intermNode = nullptr; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } #line 5486 "MachineIndependent/glslang_tab.cpp" @@ -5491,8 +5491,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // // Should be a method or subroutine call, but we haven't recognized the arguments yet. // - (yyval.interm).function = 0; - (yyval.interm).intermNode = 0; + (yyval.interm).function = nullptr; + (yyval.interm).intermNode = nullptr; TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); if (method) { @@ -5508,7 +5508,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); } - if ((yyval.interm).function == 0) { + if ((yyval.interm).function == nullptr) { // error recover TString* empty = NewPoolTString(""); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); @@ -5521,7 +5521,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 584 "MachineIndependent/glslang.y" { // Constructor - (yyval.interm).intermNode = 0; + (yyval.interm).intermNode = nullptr; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } #line 5528 "MachineIndependent/glslang_tab.cpp" @@ -5612,7 +5612,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 637 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5619 "MachineIndependent/glslang_tab.cpp" @@ -5622,7 +5622,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 642 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5629 "MachineIndependent/glslang_tab.cpp" @@ -5633,7 +5633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5640 "MachineIndependent/glslang_tab.cpp" @@ -5649,7 +5649,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 657 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5656 "MachineIndependent/glslang_tab.cpp" @@ -5659,7 +5659,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 662 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5666 "MachineIndependent/glslang_tab.cpp" @@ -5676,7 +5676,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5683 "MachineIndependent/glslang_tab.cpp" @@ -5687,7 +5687,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5694 "MachineIndependent/glslang_tab.cpp" @@ -5703,7 +5703,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 687 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5710 "MachineIndependent/glslang_tab.cpp" @@ -5713,7 +5713,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 692 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5720 "MachineIndependent/glslang_tab.cpp" @@ -5723,7 +5723,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 697 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5730 "MachineIndependent/glslang_tab.cpp" @@ -5733,7 +5733,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 702 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5740 "MachineIndependent/glslang_tab.cpp" @@ -5753,7 +5753,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5760 "MachineIndependent/glslang_tab.cpp" @@ -5767,7 +5767,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5774 "MachineIndependent/glslang_tab.cpp" @@ -5784,7 +5784,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5791 "MachineIndependent/glslang_tab.cpp" @@ -5801,7 +5801,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5808 "MachineIndependent/glslang_tab.cpp" @@ -5818,7 +5818,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } #line 5825 "MachineIndependent/glslang_tab.cpp" @@ -5834,7 +5834,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 763 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5841 "MachineIndependent/glslang_tab.cpp" @@ -5850,7 +5850,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 772 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5857 "MachineIndependent/glslang_tab.cpp" @@ -5866,7 +5866,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 781 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) + if ((yyval.interm.intermTypedNode) == nullptr) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } #line 5873 "MachineIndependent/glslang_tab.cpp" @@ -5895,7 +5895,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)); parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc); - if ((yyval.interm.intermTypedNode) == 0) { + if ((yyval.interm.intermTypedNode) == nullptr) { parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -5919,7 +5919,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)); parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.addAssign((yyvsp[-1].interm).loc, (yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == 0) { + if ((yyval.interm.intermTypedNode) == nullptr) { parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } @@ -6040,7 +6040,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); - if ((yyval.interm.intermTypedNode) == 0) { + if ((yyval.interm.intermTypedNode) == nullptr) { parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -6061,7 +6061,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 894 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } #line 6068 "MachineIndependent/glslang_tab.cpp" @@ -6073,7 +6073,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } #line 6080 "MachineIndependent/glslang_tab.cpp" @@ -6084,7 +6084,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6090 "MachineIndependent/glslang_tab.cpp" break; @@ -6102,11 +6102,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ #line 918 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); + parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, nullptr, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6112 "MachineIndependent/glslang_tab.cpp" break; @@ -6115,7 +6115,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 925 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6121 "MachineIndependent/glslang_tab.cpp" break; @@ -6124,7 +6124,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 929 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6130 "MachineIndependent/glslang_tab.cpp" break; @@ -6133,7 +6133,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 933 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6139 "MachineIndependent/glslang_tab.cpp" break; @@ -6143,7 +6143,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6149 "MachineIndependent/glslang_tab.cpp" break; @@ -6153,7 +6153,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6159 "MachineIndependent/glslang_tab.cpp" break; @@ -6164,7 +6164,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 6170 "MachineIndependent/glslang_tab.cpp" break; @@ -6330,7 +6330,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes); } if ((yyvsp[-1].interm.type).basicType == EbtVoid) { @@ -6350,7 +6350,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } TType* type = new TType((yyvsp[-2].interm.type)); @@ -6427,7 +6427,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 124: /* parameter_type_specifier: type_specifier */ #line 1146 "MachineIndependent/glslang.y" { - TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; + TParameter param = { nullptr, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); @@ -6475,7 +6475,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1171 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, nullptr, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } #line 6482 "MachineIndependent/glslang_tab.cpp" @@ -6485,7 +6485,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1179 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); - (yyval.interm).intermNode = 0; + (yyval.interm).intermNode = nullptr; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); @@ -6497,7 +6497,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1186 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); - (yyval.interm).intermNode = 0; + (yyval.interm).intermNode = nullptr; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } #line 6504 "MachineIndependent/glslang_tab.cpp" @@ -6507,7 +6507,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1191 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); - (yyval.interm).intermNode = 0; + (yyval.interm).intermNode = nullptr; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } #line 6514 "MachineIndependent/glslang_tab.cpp" @@ -6518,7 +6518,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(nullptr, initNode, (yyvsp[-1].lex).loc); } #line 6524 "MachineIndependent/glslang_tab.cpp" break; @@ -6527,8 +6527,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1201 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), nullptr, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(nullptr, initNode, (yyvsp[-1].lex).loc); } #line 6534 "MachineIndependent/glslang_tab.cpp" break; @@ -6541,7 +6541,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type)); if ((yyvsp[0].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } @@ -6556,7 +6556,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[0].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); } if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier)) @@ -6581,7 +6581,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1247 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); - parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); + parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, nullptr, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } @@ -6592,8 +6592,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1256 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "smooth"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, nullptr, "smooth"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } @@ -6604,8 +6604,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 1263 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "flat"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, nullptr, "flat"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } @@ -6617,7 +6617,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "noperspective"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } @@ -6945,8 +6945,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 172: /* storage_qualifier: CENTROID */ #line 1466 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, nullptr, "centroid"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, nullptr, "centroid"); parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; @@ -6969,7 +6969,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, nullptr, "shared"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; @@ -7415,7 +7415,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 214: /* type_parameter_specifier_opt: %empty */ #line 1745 "MachineIndependent/glslang.y" { - (yyval.interm.typeParameters) = 0; + (yyval.interm.typeParameters) = nullptr; } #line 7421 "MachineIndependent/glslang_tab.cpp" break; @@ -10779,7 +10779,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 533: /* precision_qualifier: HIGH_PRECISION */ #line 3534 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } @@ -10789,7 +10789,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 534: /* precision_qualifier: MEDIUM_PRECISION */ #line 3539 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } @@ -10799,7 +10799,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 535: /* precision_qualifier: LOW_PRECISION */ #line 3544 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } @@ -10874,7 +10874,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } @@ -10901,7 +10901,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } @@ -11009,7 +11009,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 552: /* initializer_list: initializer */ #line 3691 "MachineIndependent/glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(nullptr, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } #line 11015 "MachineIndependent/glslang_tab.cpp" break; @@ -11100,7 +11100,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 566: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ #line 3735 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = 0; } + { (yyval.interm.intermNode) = nullptr; } #line 11105 "MachineIndependent/glslang_tab.cpp" break; @@ -11185,7 +11185,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 576: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ #line 3778 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11191 "MachineIndependent/glslang_tab.cpp" break; @@ -11206,8 +11206,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + parseContext.wrapupSwitchSubsequence(nullptr, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = nullptr; // start a fresh subsequence for what's after this case } } #line 11214 "MachineIndependent/glslang_tab.cpp" @@ -11218,8 +11218,8 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case + parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : nullptr, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = nullptr; // start a fresh subsequence for what's after this case } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } @@ -11228,7 +11228,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 580: /* expression_statement: SEMICOLON */ #line 3808 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = 0; } + { (yyval.interm.intermNode) = nullptr; } #line 11233 "MachineIndependent/glslang_tab.cpp" break; @@ -11278,7 +11278,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 3836 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); - (yyval.interm.nodePair).node2 = 0; + (yyval.interm.nodePair).node2 = nullptr; } #line 11284 "MachineIndependent/glslang_tab.cpp" break; @@ -11298,11 +11298,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); TType type((yyvsp[-3].interm.type)); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), nullptr, (yyvsp[0].interm.intermTypedNode)); if (initNode) (yyval.interm.intermTypedNode) = initNode->getAsTyped(); else - (yyval.interm.intermTypedNode) = 0; + (yyval.interm.intermTypedNode) = nullptr; } #line 11308 "MachineIndependent/glslang_tab.cpp" break; @@ -11341,7 +11341,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 592: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ #line 3881 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); + (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : nullptr); delete parseContext.switchSequenceStack.back(); parseContext.switchSequenceStack.pop_back(); parseContext.switchLevel.pop_back(); @@ -11355,7 +11355,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 593: /* switch_statement_list: %empty */ #line 3893 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11361 "MachineIndependent/glslang_tab.cpp" break; @@ -11371,7 +11371,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 595: /* case_label: CASE expression COLON */ #line 3902 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) @@ -11388,7 +11388,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 596: /* case_label: DEFAULT COLON */ #line 3914 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) @@ -11434,7 +11434,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 3946 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), nullptr, true, (yyvsp[-5].lex).loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; @@ -11461,7 +11461,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); - (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), nullptr, false, (yyvsp[-4].lex).loc); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; @@ -11525,7 +11525,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 608: /* conditionopt: %empty */ #line 4004 "MachineIndependent/glslang.y" { - (yyval.interm.intermTypedNode) = 0; + (yyval.interm.intermTypedNode) = nullptr; } #line 11531 "MachineIndependent/glslang_tab.cpp" break; @@ -11534,7 +11534,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 4010 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); - (yyval.interm.nodePair).node2 = 0; + (yyval.interm.nodePair).node2 = nullptr; } #line 11540 "MachineIndependent/glslang_tab.cpp" break; @@ -11826,7 +11826,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 4190 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11832 "MachineIndependent/glslang_tab.cpp" break; @@ -11836,7 +11836,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11842 "MachineIndependent/glslang_tab.cpp" break; @@ -11845,7 +11845,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 4199 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11851 "MachineIndependent/glslang_tab.cpp" break; @@ -11855,7 +11855,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11861 "MachineIndependent/glslang_tab.cpp" break; @@ -11864,7 +11864,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); #line 4208 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11870 "MachineIndependent/glslang_tab.cpp" break; @@ -11874,7 +11874,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = 0; + (yyval.interm.intermNode) = nullptr; } #line 11880 "MachineIndependent/glslang_tab.cpp" break; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index a79a6928bc..f797ada9f7 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1552,7 +1552,7 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) break; } - if (treeRoot == 0 || ! tree) + if (treeRoot == nullptr || ! tree) return; TOutputTraverser it(infoSink); diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index fab65a76ef..ff9761492c 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1383,7 +1383,7 @@ void TIntermediate::checkCallGraphCycles(TInfoSink& infoSink) TCall* newRoot; do { // See if we have unvisited parts of the graph. - newRoot = 0; + newRoot = nullptr; for (TGraph::iterator call = callGraph.begin(); call != callGraph.end(); ++call) { if (! call->visited) { newRoot = &(*call); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 1bb4e97709..b9ad7db3ba 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -284,7 +284,7 @@ class TIntermediate { explicit TIntermediate(EShLanguage l, int v = 0, EProfile p = ENoProfile) : language(l), profile(p), version(v), - treeRoot(0), + treeRoot(nullptr), resources(TBuiltInResource{}), numEntryPoints(0), numErrors(0), numPushConstants(0), recursive(false), invertY(false), diff --git a/glslang/MachineIndependent/parseConst.cpp b/glslang/MachineIndependent/parseConst.cpp index 6c182991f5..835097234e 100644 --- a/glslang/MachineIndependent/parseConst.cpp +++ b/glslang/MachineIndependent/parseConst.cpp @@ -198,7 +198,7 @@ void TConstTraverser::visitConstantUnion(TIntermConstantUnion* node) bool TIntermediate::parseConstTree(TIntermNode* root, TConstUnionArray unionArray, TOperator constructorType, const TType& t, bool singleConstantParam) { - if (root == 0) + if (root == nullptr) return false; TConstTraverser it(unionArray, singleConstantParam, constructorType, t); diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index 3c52ff1aab..cdf4524c04 100644 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -65,7 +65,7 @@ class TParseVersions { infoSink(infoSink), version(version), language(language), spvVersion(spvVersion), - intermediate(interm), messages(messages), numErrors(0), currentScanner(0) { } + intermediate(interm), messages(messages), numErrors(0), currentScanner(nullptr) { } virtual ~TParseVersions() { } void requireStage(const TSourceLoc&, EShLanguageMask, const char* featureDesc); void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc); diff --git a/glslang/MachineIndependent/preprocessor/PpContext.cpp b/glslang/MachineIndependent/preprocessor/PpContext.cpp index 1363ce2be0..70f511978c 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.cpp +++ b/glslang/MachineIndependent/preprocessor/PpContext.cpp @@ -85,7 +85,7 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace glslang { TPpContext::TPpContext(TParseContextBase& pc, const std::string& rootFileName, TShader::Includer& inclr) : - preamble(0), strings(0), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false), + preamble(nullptr), strings(nullptr), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false), rootFileName(rootFileName), currentSourceFile(rootFileName), disableEscapeSequences(false) diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 7ed58703f2..e17eeafda2 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -121,7 +121,7 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken if (atom == '#') { if (peekToken('#')) { parseContext.requireProfile(ppToken->loc, ~EEsProfile, "token pasting (##)"); - parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, 0, "token pasting (##)"); + parseContext.profileRequires(ppToken->loc, ~EEsProfile, 130, nullptr, "token pasting (##)"); currentPos++; atom = PpAtomPaste; } diff --git a/glslang/MachineIndependent/propagateNoContraction.cpp b/glslang/MachineIndependent/propagateNoContraction.cpp index 9def592baf..a1aa5ea6b4 100644 --- a/glslang/MachineIndependent/propagateNoContraction.cpp +++ b/glslang/MachineIndependent/propagateNoContraction.cpp @@ -423,7 +423,7 @@ getSymbolToDefinitionMappingAndPreciseSymbolIDs(const glslang::TIntermediate& in ReturnBranchNodeSet()); TIntermNode* root = intermediate.getTreeRoot(); - if (root == 0) + if (root == nullptr) return result_tuple; NodeMapping& symbol_definition_mapping = std::get<0>(result_tuple); diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index 3061ff79e7..144f85bdb7 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -682,7 +682,7 @@ class TReflectionTraverser : public TIntermTraverser { } // For a binary operation indexing into an aggregate, chase down the base of the aggregate. - // Return 0 if the topology does not fit this situation. + // Return nullptr if the topology does not fit this situation. TIntermSymbol* findBase(const TIntermBinary* node) { TIntermSymbol *base = node->getLeft()->getAsSymbolNode(); diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index b98df9348d..9a31a9aadb 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -76,7 +76,7 @@ OS_TLSIndex OS_AllocTLSIndex() // // Create global pool key. // - if ((pthread_key_create(&pPoolIndex, NULL)) != 0) { + if ((pthread_key_create(&pPoolIndex, nullptr)) != 0) { assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage"); return OS_INVALID_TLS_INDEX; } diff --git a/glslang/OSDependent/Windows/ossource.cpp b/glslang/OSDependent/Windows/ossource.cpp index 870840c56e..fa372a2ccd 100644 --- a/glslang/OSDependent/Windows/ossource.cpp +++ b/glslang/OSDependent/Windows/ossource.cpp @@ -113,7 +113,7 @@ HANDLE GlobalLock; void InitGlobalLock() { - GlobalLock = CreateMutex(0, false, 0); + GlobalLock = CreateMutex(nullptr, false, nullptr); } void GetGlobalLock() @@ -128,7 +128,7 @@ void ReleaseGlobalLock() unsigned int __stdcall EnterGenericThread (void* entry) { - return ((TThreadEntrypoint)entry)(0); + return ((TThreadEntrypoint)entry)(nullptr); } //#define DUMP_COUNTERS diff --git a/glslang/OSDependent/osinclude.h b/glslang/OSDependent/osinclude.h index fcfeff2cc4..7eaa113402 100644 --- a/glslang/OSDependent/osinclude.h +++ b/glslang/OSDependent/osinclude.h @@ -41,7 +41,7 @@ namespace glslang { // Thread Local Storage Operations // typedef void* OS_TLSIndex; -#define OS_INVALID_TLS_INDEX ((void*)0) +#define OS_INVALID_TLS_INDEX nullptr OS_TLSIndex OS_AllocTLSIndex(); bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue); From 0464ff4515296ee13a1ecb95931906c2cd10c48c Mon Sep 17 00:00:00 2001 From: Gilad Ben-Yossef Date: Mon, 5 Dec 2022 14:02:22 +0200 Subject: [PATCH 116/594] GL_ARM_shader_core_builtins support Add support for GL_ARM_shader_core_builtins and SPV_ARM_core_builtins, including initial tests --- BUILD.bazel | 2 + BUILD.gn | 1 + SPIRV/CMakeLists.txt | 1 + SPIRV/GLSL.ext.ARM.h | 35 +++++++ SPIRV/GlslangToSpv.cpp | 23 +++++ SPIRV/SpvPostProcess.cpp | 1 + SPIRV/disassemble.cpp | 1 + SPIRV/doc.cpp | 7 ++ SPIRV/spirv.hpp | 6 ++ Test/baseResults/spv.ARMCoreBuiltIns.frag.out | 61 ++++++++++++ Test/baseResults/spv.ARMCoreBuiltIns.vert.out | 65 +++++++++++++ Test/spv.ARMCoreBuiltIns.frag | 8 ++ Test/spv.ARMCoreBuiltIns.vert | 12 +++ glslang/Include/BaseTypes.h | 7 ++ glslang/MachineIndependent/Initialize.cpp | 96 +++++++++++++++++++ glslang/MachineIndependent/Versions.cpp | 4 + glslang/MachineIndependent/Versions.h | 3 + gtests/Spv.FromFile.cpp | 2 + 18 files changed, 335 insertions(+) create mode 100644 SPIRV/GLSL.ext.ARM.h create mode 100644 Test/baseResults/spv.ARMCoreBuiltIns.frag.out create mode 100644 Test/baseResults/spv.ARMCoreBuiltIns.vert.out create mode 100644 Test/spv.ARMCoreBuiltIns.frag create mode 100644 Test/spv.ARMCoreBuiltIns.vert diff --git a/BUILD.bazel b/BUILD.bazel index 45efbd353f..d7a65787db 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -144,6 +144,7 @@ genrule( "SPIRV/GLSL.ext.EXT.h", "SPIRV/GLSL.ext.KHR.h", "SPIRV/GLSL.ext.NV.h", + "SPIRV/GLSL.ext.ARM.h", "SPIRV/GLSL.std.450.h", "SPIRV/NonSemanticDebugPrintf.h", "SPIRV/NonSemanticShaderDebugInfo100.h", @@ -154,6 +155,7 @@ genrule( "include/SPIRV/GLSL.ext.EXT.h", "include/SPIRV/GLSL.ext.KHR.h", "include/SPIRV/GLSL.ext.NV.h", + "include/SPIRV/GLSL.ext.ARM.h", "include/SPIRV/GLSL.std.450.h", "include/SPIRV/NonSemanticDebugPrintf.h", "include/SPIRV/NonSemanticShaderDebugInfo100.h", diff --git a/BUILD.gn b/BUILD.gn index 4987c7004a..0aacbf5ab6 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -123,6 +123,7 @@ template("glslang_sources_common") { "SPIRV/GLSL.ext.EXT.h", "SPIRV/GLSL.ext.KHR.h", "SPIRV/GLSL.ext.NV.h", + "SPIRV/GLSL.ext.ARM.h", "SPIRV/GLSL.std.450.h", "SPIRV/GlslangToSpv.cpp", "SPIRV/GlslangToSpv.h", diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 9a3a6a0201..62ffbc4584 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -62,6 +62,7 @@ set(HEADERS disassemble.h GLSL.ext.AMD.h GLSL.ext.NV.h + GLSL.ext.ARM.h NonSemanticDebugPrintf.h NonSemanticShaderDebugInfo100.h) diff --git a/SPIRV/GLSL.ext.ARM.h b/SPIRV/GLSL.ext.ARM.h new file mode 100644 index 0000000000..14425be1e3 --- /dev/null +++ b/SPIRV/GLSL.ext.ARM.h @@ -0,0 +1,35 @@ +/* +** Copyright (c) 2022 ARM Limited +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and/or associated documentation files (the "Materials"), +** to deal in the Materials without restriction, including without limitation +** the rights to use, copy, modify, merge, publish, distribute, sublicense, +** and/or sell copies of the Materials, and to permit persons to whom the +** Materials are furnished to do so, subject to the following conditions: +** +** The above copyright notice and this permission notice shall be included in +** all copies or substantial portions of the Materials. +** +** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS +** IN THE MATERIALS. +*/ + +#ifndef GLSLextARM_H +#define GLSLextARM_H + +static const int GLSLextARMVersion = 100; +static const int GLSLextARMRevision = 1; + +static const char * const E_SPV_ARM_core_builtins = "SPV_ARM_core_builtins"; + +#endif // #ifndef GLSLextARM_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 11fc70c254..17be96833b 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -49,6 +49,7 @@ namespace spv { #include "GLSL.ext.EXT.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" + #include "GLSL.ext.ARM.h" #include "NonSemanticDebugPrintf.h" } @@ -1106,6 +1107,28 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI builder.addExtension(spv::E_SPV_NV_shader_sm_builtins); builder.addCapability(spv::CapabilityShaderSMBuiltinsNV); return spv::BuiltInSMIDNV; + + // ARM builtins + case glslang::EbvCoreCountARM: + builder.addExtension(spv::E_SPV_ARM_core_builtins); + builder.addCapability(spv::CapabilityCoreBuiltinsARM); + return spv::BuiltInCoreCountARM; + case glslang::EbvCoreIDARM: + builder.addExtension(spv::E_SPV_ARM_core_builtins); + builder.addCapability(spv::CapabilityCoreBuiltinsARM); + return spv::BuiltInCoreIDARM; + case glslang::EbvCoreMaxIDARM: + builder.addExtension(spv::E_SPV_ARM_core_builtins); + builder.addCapability(spv::CapabilityCoreBuiltinsARM); + return spv::BuiltInCoreMaxIDARM; + case glslang::EbvWarpIDARM: + builder.addExtension(spv::E_SPV_ARM_core_builtins); + builder.addCapability(spv::CapabilityCoreBuiltinsARM); + return spv::BuiltInWarpIDARM; + case glslang::EbvWarpMaxIDARM: + builder.addExtension(spv::E_SPV_ARM_core_builtins); + builder.addCapability(spv::CapabilityCoreBuiltinsARM); + return spv::BuiltInWarpMaxIDARM; #endif default: diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index dd6dabce0d..b185f61bb8 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -52,6 +52,7 @@ namespace spv { #include "GLSL.ext.EXT.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" + #include "GLSL.ext.ARM.h" } namespace spv { diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 74dd605409..387376d88c 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -54,6 +54,7 @@ namespace spv { #include "GLSL.std.450.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" + #include "GLSL.ext.ARM.h" } } const char* GlslStd450DebugNames[spv::GLSLstd450Count]; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index b6cc42db85..1534c6895b 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -53,6 +53,7 @@ namespace spv { #include "GLSL.ext.EXT.h" #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" + #include "GLSL.ext.ARM.h" } } @@ -439,6 +440,11 @@ const char* BuiltInString(int builtIn) case BuiltInPrimitiveLineIndicesEXT: return "PrimitiveLineIndicesEXT"; case BuiltInPrimitiveTriangleIndicesEXT: return "PrimitiveTriangleIndicesEXT"; case BuiltInCullPrimitiveEXT: return "CullPrimitiveEXT"; + case BuiltInCoreCountARM: return "CoreCountARM"; + case BuiltInCoreIDARM: return "CoreIDARM"; + case BuiltInCoreMaxIDARM: return "CoreMaxIDARM"; + case BuiltInWarpIDARM: return "WarpIDARM"; + case BuiltInWarpMaxIDARM: return "BuiltInWarpMaxIDARM"; default: return "Bad"; } @@ -998,6 +1004,7 @@ const char* CapabilityString(int info) case CapabilityWorkgroupMemoryExplicitLayoutKHR: return "CapabilityWorkgroupMemoryExplicitLayoutKHR"; case CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout8BitAccessKHR"; case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR"; + case CapabilityCoreBuiltinsARM: return "CoreBuiltinsARM"; default: return "Bad"; } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index f85469d441..73c372b29e 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -607,6 +607,11 @@ enum BuiltIn { BuiltInSubgroupLocalInvocationId = 41, BuiltInVertexIndex = 42, BuiltInInstanceIndex = 43, + BuiltInCoreCountARM = 4161, + BuiltInCoreIDARM = 4160, + BuiltInCoreMaxIDARM = 4162, + BuiltInWarpIDARM = 4163, + BuiltInWarpMaxIDARM = 4164, BuiltInSubgroupEqMask = 4416, BuiltInSubgroupEqMaskKHR = 4416, BuiltInSubgroupGeMask = 4417, @@ -946,6 +951,7 @@ enum Capability { CapabilityShaderLayer = 69, CapabilityShaderViewportIndex = 70, CapabilityUniformDecoration = 71, + CapabilityCoreBuiltinsARM = 4165, CapabilityFragmentShadingRateKHR = 4422, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, diff --git a/Test/baseResults/spv.ARMCoreBuiltIns.frag.out b/Test/baseResults/spv.ARMCoreBuiltIns.frag.out new file mode 100644 index 0000000000..ccfb40936e --- /dev/null +++ b/Test/baseResults/spv.ARMCoreBuiltIns.frag.out @@ -0,0 +1,61 @@ +spv.ARMCoreBuiltIns.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 26 + + Capability Shader + Capability CoreBuiltinsARM + Extension "SPV_ARM_core_builtins" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 10 14 15 17 19 21 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_ARM_shader_core_builtins" + Name 4 "main" + Name 8 "temp" + Name 10 "gl_WarpMaxIDARM" + Name 14 "data" + Name 15 "gl_CoreIDARM" + Name 17 "gl_CoreCountARM" + Name 19 "gl_CoreMaxIDARM" + Name 21 "gl_WarpIDARM" + Decorate 10(gl_WarpMaxIDARM) Flat + Decorate 10(gl_WarpMaxIDARM) BuiltIn BuiltInWarpMaxIDARM + Decorate 14(data) Location 0 + Decorate 15(gl_CoreIDARM) Flat + Decorate 15(gl_CoreIDARM) BuiltIn CoreIDARM + Decorate 17(gl_CoreCountARM) Flat + Decorate 17(gl_CoreCountARM) BuiltIn CoreCountARM + Decorate 19(gl_CoreMaxIDARM) Flat + Decorate 19(gl_CoreMaxIDARM) BuiltIn CoreMaxIDARM + Decorate 21(gl_WarpIDARM) Flat + Decorate 21(gl_WarpIDARM) BuiltIn WarpIDARM + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_WarpMaxIDARM): 9(ptr) Variable Input + 12: TypeVector 6(int) 4 + 13: TypePointer Output 12(ivec4) + 14(data): 13(ptr) Variable Output +15(gl_CoreIDARM): 9(ptr) Variable Input +17(gl_CoreCountARM): 9(ptr) Variable Input +19(gl_CoreMaxIDARM): 9(ptr) Variable Input +21(gl_WarpIDARM): 9(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 8(temp): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_WarpMaxIDARM) + Store 8(temp) 11 + 16: 6(int) Load 15(gl_CoreIDARM) + 18: 6(int) Load 17(gl_CoreCountARM) + 20: 6(int) Load 19(gl_CoreMaxIDARM) + 22: 6(int) Load 21(gl_WarpIDARM) + 23: 6(int) Load 8(temp) + 24: 6(int) IAdd 22 23 + 25: 12(ivec4) CompositeConstruct 16 18 20 24 + Store 14(data) 25 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ARMCoreBuiltIns.vert.out b/Test/baseResults/spv.ARMCoreBuiltIns.vert.out new file mode 100644 index 0000000000..5419be4541 --- /dev/null +++ b/Test/baseResults/spv.ARMCoreBuiltIns.vert.out @@ -0,0 +1,65 @@ +spv.ARMCoreBuiltIns.vert +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 31 + + Capability Shader + Capability CoreBuiltinsARM + Extension "SPV_ARM_core_builtins" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 10 18 20 22 24 + Source GLSL 450 + SourceExtension "GL_ARM_shader_core_builtins" + Name 4 "main" + Name 8 "temp" + Name 10 "gl_WarpMaxIDARM" + Name 13 "Output" + MemberName 13(Output) 0 "result" + Name 15 "" + Name 18 "gl_CoreIDARM" + Name 20 "gl_CoreCountARM" + Name 22 "gl_CoreMaxIDARM" + Name 24 "gl_WarpIDARM" + Decorate 10(gl_WarpMaxIDARM) BuiltIn BuiltInWarpMaxIDARM + MemberDecorate 13(Output) 0 Offset 0 + Decorate 13(Output) BufferBlock + Decorate 15 DescriptorSet 0 + Decorate 15 Binding 0 + Decorate 18(gl_CoreIDARM) BuiltIn CoreIDARM + Decorate 20(gl_CoreCountARM) BuiltIn CoreCountARM + Decorate 22(gl_CoreMaxIDARM) BuiltIn CoreMaxIDARM + Decorate 24(gl_WarpIDARM) BuiltIn WarpIDARM + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypePointer Input 6(int) +10(gl_WarpMaxIDARM): 9(ptr) Variable Input + 12: TypeVector 6(int) 4 + 13(Output): TypeStruct 12(ivec4) + 14: TypePointer Uniform 13(Output) + 15: 14(ptr) Variable Uniform + 16: TypeInt 32 1 + 17: 16(int) Constant 0 +18(gl_CoreIDARM): 9(ptr) Variable Input +20(gl_CoreCountARM): 9(ptr) Variable Input +22(gl_CoreMaxIDARM): 9(ptr) Variable Input +24(gl_WarpIDARM): 9(ptr) Variable Input + 29: TypePointer Uniform 12(ivec4) + 4(main): 2 Function None 3 + 5: Label + 8(temp): 7(ptr) Variable Function + 11: 6(int) Load 10(gl_WarpMaxIDARM) + Store 8(temp) 11 + 19: 6(int) Load 18(gl_CoreIDARM) + 21: 6(int) Load 20(gl_CoreCountARM) + 23: 6(int) Load 22(gl_CoreMaxIDARM) + 25: 6(int) Load 24(gl_WarpIDARM) + 26: 6(int) Load 8(temp) + 27: 6(int) IAdd 25 26 + 28: 12(ivec4) CompositeConstruct 19 21 23 27 + 30: 29(ptr) AccessChain 15 17 + Store 30 28 + Return + FunctionEnd diff --git a/Test/spv.ARMCoreBuiltIns.frag b/Test/spv.ARMCoreBuiltIns.frag new file mode 100644 index 0000000000..deb3e55395 --- /dev/null +++ b/Test/spv.ARMCoreBuiltIns.frag @@ -0,0 +1,8 @@ +#version 450 +#extension GL_ARM_shader_core_builtins: enable +layout(location = 0) out uvec4 data; +void main (void) +{ + uint temp = gl_WarpMaxIDARM; + data = uvec4(gl_CoreIDARM, gl_CoreCountARM, gl_CoreMaxIDARM, gl_WarpIDARM + temp); +} diff --git a/Test/spv.ARMCoreBuiltIns.vert b/Test/spv.ARMCoreBuiltIns.vert new file mode 100644 index 0000000000..2bed18e893 --- /dev/null +++ b/Test/spv.ARMCoreBuiltIns.vert @@ -0,0 +1,12 @@ +#version 450 +#extension GL_ARM_shader_core_builtins: enable +layout(set = 0, binding = 0, std430) buffer Output +{ + uvec4 result; +}; + +void main (void) +{ + uint temp = gl_WarpMaxIDARM; + result = uvec4(gl_CoreIDARM, gl_CoreCountARM, gl_CoreMaxIDARM, gl_WarpIDARM + temp); +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 156d98b9af..e218656629 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -316,6 +316,13 @@ enum TBuiltInVariable { EbvByteAddressBuffer, EbvRWByteAddressBuffer, + // ARM specific core builtins + EbvCoreCountARM, + EbvCoreIDARM, + EbvCoreMaxIDARM, + EbvWarpIDARM, + EbvWarpMaxIDARM, + EbvLast }; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 5a9e5003de..53078ec7d3 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5737,6 +5737,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp uint gl_SMCountNV;" "in highp uint gl_WarpIDNV;" "in highp uint gl_SMIDNV;" + // GL_ARM_shader_core_builtins + "in highp uint gl_CoreIDARM;" + "in highp uint gl_CoreCountARM;" + "in highp uint gl_CoreMaxIDARM;" + "in highp uint gl_WarpIDARM;" + "in highp uint gl_WarpMaxIDARM;" "\n"; const char* fragmentSubgroupDecls = "flat in mediump uint gl_SubgroupSize;" @@ -5751,6 +5757,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "flat in highp uint gl_SMCountNV;" "flat in highp uint gl_WarpIDNV;" "flat in highp uint gl_SMIDNV;" + // GL_ARM_shader_core_builtins + "flat in highp uint gl_CoreIDARM;" + "flat in highp uint gl_CoreCountARM;" + "flat in highp uint gl_CoreMaxIDARM;" + "flat in highp uint gl_WarpIDARM;" + "flat in highp uint gl_WarpMaxIDARM;" "\n"; const char* computeSubgroupDecls = "in highp uint gl_NumSubgroups;" @@ -5770,6 +5782,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp uint gl_SMCountNV;" "in highp volatile uint gl_WarpIDNV;" "in highp volatile uint gl_SMIDNV;" + // GL_ARM_shader_core_builtins + "in highp uint gl_CoreIDARM;" + "in highp uint gl_CoreCountARM;" + "in highp uint gl_CoreMaxIDARM;" + "in highp uint gl_WarpIDARM;" + "in highp uint gl_WarpMaxIDARM;" "\n"; stageBuiltins[EShLangVertex] .append(subgroupDecls); @@ -8036,6 +8054,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); + + // GL_ARM_shader_core_builtins + symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + + BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); + BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); + BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); + BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); + BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if (language == EShLangGeometry || language == EShLangVertex) { @@ -8551,6 +8582,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); + + // GL_ARM_shader_core_builtins + symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + + BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); + BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); + BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); + BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); + BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if (profile == EEsProfile) { @@ -8694,6 +8738,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); + + // GL_ARM_shader_core_builtins + symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + + BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); + BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); + BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); + BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); + BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } // GL_KHR_shader_subgroup @@ -8888,6 +8945,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); + + // GL_ARM_shader_core_builtins + symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + + BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); + BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); + BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); + BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); + BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { @@ -9094,6 +9164,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); + + // GL_ARM_shader_core_builtins + symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + + BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); + BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); + BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); + BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); + BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if ((profile == EEsProfile && version >= 310) || @@ -9224,6 +9307,19 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SMCountNV", EbvSMCount, symbolTable); BuiltInVariable("gl_WarpIDNV", EbvWarpID, symbolTable); BuiltInVariable("gl_SMIDNV", EbvSMID, symbolTable); + + // GL_ARM_shader_core_builtins + symbolTable.setVariableExtensions("gl_CoreCountARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_CoreMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpIDARM", 1, &E_GL_ARM_shader_core_builtins); + symbolTable.setVariableExtensions("gl_WarpMaxIDARM", 1, &E_GL_ARM_shader_core_builtins); + + BuiltInVariable("gl_CoreCountARM", EbvCoreCountARM, symbolTable); + BuiltInVariable("gl_CoreIDARM", EbvCoreIDARM, symbolTable); + BuiltInVariable("gl_CoreMaxIDARM", EbvCoreMaxIDARM, symbolTable); + BuiltInVariable("gl_WarpIDARM", EbvWarpIDARM, symbolTable); + BuiltInVariable("gl_WarpMaxIDARM", EbvWarpMaxIDARM, symbolTable); } if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 450)) { diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 154180258f..b43f2b865b 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -301,6 +301,10 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable; extensionBehavior[E_GL_NV_integer_cooperative_matrix] = EBhDisable; + // ARM + extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; + + // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; extensionBehavior[E_GL_KHR_blend_equation_advanced] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index f06abdd6f0..d0a3effb2f 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -265,6 +265,9 @@ const char* const E_GL_NV_compute_shader_derivatives = "GL_NV_compute const char* const E_GL_NV_shader_texture_footprint = "GL_NV_shader_texture_footprint"; const char* const E_GL_NV_mesh_shader = "GL_NV_mesh_shader"; +// ARM +const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader_core_builtins"; + // Arrays of extensions for the above viewportEXTs duplications const char* const viewportEXTs[] = { E_GL_ARB_shader_viewport_layer_array, E_GL_NV_viewport_array2 }; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index e1b7a257a4..a3dc8db29d 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -493,6 +493,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.samplerlessTextureFunctions.frag", "spv.smBuiltins.vert", "spv.smBuiltins.frag", + "spv.ARMCoreBuiltIns.vert", + "spv.ARMCoreBuiltIns.frag", "spv.builtin.PrimitiveShadingRateEXT.vert", "spv.builtin.ShadingRateEXT.frag", "spv.atomicAdd.bufferReference.comp", From 08cf7bd2ffd69f12b0709c6792165b50ae8a1956 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Fri, 2 Dec 2022 14:24:58 -0700 Subject: [PATCH 117/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index b0ceeadac1..41ff0dd29e 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "d9446130d5165f7fafcb3599252a22e264c7d4bd" + "commit" : "40f5bf59c6acb4754a0bffd3c53a715732883a12" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "c214f6f2d1a7253bb0e9f195c2dc5b0659dc99ef" + "commit" : "1d31a100405cf8783ca7a31e31cdd727c9fc54c3" } ] } From 683c0f34f00ebf7c38ad6ddcb394a8c837addd2b Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 6 Dec 2022 14:50:03 -0700 Subject: [PATCH 118/594] Update CHANGES for release 11.13.0 --- CHANGES.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index e7b6f145c1..aee747f5db 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 11.13.0 2022-12-06 + +### Other changes +* Make HelperInvocation accesses volatile for SPIR-V 1.6. +* Improve forward compatibility of ResourceLimits interface +* Remove GLSLANG_ANGLE + ## 11.12.0 2022-10-12 ### Other changes From 16526fd9d2fdff115451d2dbaa8436ad06707fa5 Mon Sep 17 00:00:00 2001 From: Zhou Date: Wed, 16 Nov 2022 00:04:55 +0800 Subject: [PATCH 119/594] [glslang][EXT] Support extension ARB_bindless_texture. Add missing callgraph clean for bindless status flag. Add test cases. Add support to check special extensions not be available for Vulkan when using GLSL. --- SPIRV/GlslangToSpv.cpp | 4 +- Test/GL_ARB_bindless_texture.frag | 50 ++++ .../GL_ARB_bindless_texture.frag.out | 205 ++++++++++++++++ Test/baseResults/vulkan.frag.out | 2 +- glslang/Include/Types.h | 37 ++- glslang/MachineIndependent/Intermediate.cpp | 5 + .../MachineIndependent/ParseContextBase.cpp | 3 +- glslang/MachineIndependent/ParseHelper.cpp | 222 ++++++++++++++++-- glslang/MachineIndependent/ParseHelper.h | 4 +- glslang/MachineIndependent/SymbolTable.h | 1 + glslang/MachineIndependent/Versions.cpp | 17 +- glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/glslang.m4 | 2 +- glslang/MachineIndependent/glslang.y | 2 +- glslang/MachineIndependent/glslang_tab.cpp | 2 +- glslang/MachineIndependent/linkValidate.cpp | 12 + .../MachineIndependent/localintermediate.h | 72 +++++- glslang/MachineIndependent/parseVersions.h | 1 + gtests/AST.FromFile.cpp | 1 + 19 files changed, 608 insertions(+), 35 deletions(-) create mode 100644 Test/GL_ARB_bindless_texture.frag create mode 100644 Test/baseResults/GL_ARB_bindless_texture.frag.out diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 842221cba0..baed22c7c5 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1293,7 +1293,7 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T type.getQualifier().storage == glslang::EvqUniform) { if (type.isAtomic()) return spv::StorageClassAtomicCounter; - if (type.containsOpaque()) + if (type.containsOpaque() && !glslangIntermediate->getBindlessMode()) return spv::StorageClassUniformConstant; } @@ -5083,7 +5083,7 @@ bool TGlslangToSpvTraverser::originalParam(glslang::TStorageQualifier qualifier, return true; if (glslangIntermediate->getSource() == glslang::EShSourceHlsl) return paramType.getBasicType() == glslang::EbtBlock; - return paramType.containsOpaque() || // sampler, etc. + return (paramType.containsOpaque() && !glslangIntermediate->getBindlessMode()) || // sampler, etc. #ifndef GLSLANG_WEB paramType.getQualifier().isSpirvByReference() || // spirv_by_reference #endif diff --git a/Test/GL_ARB_bindless_texture.frag b/Test/GL_ARB_bindless_texture.frag new file mode 100644 index 0000000000..58c8359e4c --- /dev/null +++ b/Test/GL_ARB_bindless_texture.frag @@ -0,0 +1,50 @@ +#version 460 compatibility + +#extension GL_ARB_bindless_texture: require + +#if !defined GL_ARB_bindless_texture +# error GL_ARB_bindless_texture is not defined +#elif GL_ARB_bindless_texture != 1 +# error GL_ARB_bindless_texture is not equal to 1 +#endif + +// Valid usage cases +layout(bindless_sampler) uniform sampler2D s0; // case0: bindless layout +in sampler2D s1; // case1: sampler as an input +uniform uvec2 s2; // case2: uvec2 as sampler constructor +uniform ivec2 s3; // case3: ivec2 as sampler constructor +uniform int index; +in sampler2D s4[2][3]; // case4: sampler arrays of arrays +uniform BB {sampler2D s5;} bbs5[2]; // case5: uniform block member as a sampler +in samplerBuffer s6; // case6: samplerBuffer input +uniform UBO9 {samplerBuffer s7;}; // case7: samplerBuffer as an uniform block member +buffer SSBO10 {samplerBuffer s8;}; // case8: samplerBuffer as an ssbo member +layout(rgba8, bindless_image) in image2D i9; // case9: bindless image as an input + + +uniform vec2 coord; // bindless coord 2-D +uniform int icoord; // bindless coord 1-D +out vec4 color0; +out vec4 color1; +out vec4 color2; +out vec4 color3; +out vec4 color4; +out vec4 color5; +out vec4 color6; +out vec4 color7; +out vec4 color8; +out vec4 color9; + +void main() +{ + color0 = texture(s0, coord); + color1 = texture(s1, coord); + color2 = texture(sampler2D(s2), coord); + color3 = texture(sampler2D(s3), coord); + color4 = texture(s4[index][index], coord); + color5 = texture(bbs5[index].s5, coord); + color6 = texelFetch(s6, icoord); + color7 = texelFetch(s7, icoord); + color8 = texelFetch(s8, icoord); + color9 = imageLoad(i9, ivec2(0,0)); +} \ No newline at end of file diff --git a/Test/baseResults/GL_ARB_bindless_texture.frag.out b/Test/baseResults/GL_ARB_bindless_texture.frag.out new file mode 100644 index 0000000000..3f902c9913 --- /dev/null +++ b/Test/baseResults/GL_ARB_bindless_texture.frag.out @@ -0,0 +1,205 @@ +GL_ARB_bindless_texture.frag +Shader version: 460 +Requested GL_ARB_bindless_texture +0:? Sequence +0:38 Function Definition: main( ( global void) +0:38 Function Parameters: +0:40 Sequence +0:40 move second child to first child ( temp 4-component vector of float) +0:40 'color0' ( out 4-component vector of float) +0:40 texture ( global 4-component vector of float) +0:40 's0' ( uniform sampler2D) +0:40 'coord' ( uniform 2-component vector of float) +0:41 move second child to first child ( temp 4-component vector of float) +0:41 'color1' ( out 4-component vector of float) +0:41 texture ( global 4-component vector of float) +0:41 's1' ( smooth in sampler2D) +0:41 'coord' ( uniform 2-component vector of float) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'color2' ( out 4-component vector of float) +0:42 texture ( global 4-component vector of float) +0:42 packUint2x32 ( temp sampler2D) +0:42 's2' ( uniform 2-component vector of uint) +0:42 'coord' ( uniform 2-component vector of float) +0:43 move second child to first child ( temp 4-component vector of float) +0:43 'color3' ( out 4-component vector of float) +0:43 texture ( global 4-component vector of float) +0:43 packUint2x32 ( temp sampler2D) +0:43 's3' ( uniform 2-component vector of int) +0:43 'coord' ( uniform 2-component vector of float) +0:44 move second child to first child ( temp 4-component vector of float) +0:44 'color4' ( out 4-component vector of float) +0:44 texture ( global 4-component vector of float) +0:44 indirect index ( smooth temp sampler2D) +0:44 indirect index ( smooth temp 3-element array of sampler2D) +0:44 's4' ( smooth in 2-element array of 3-element array of sampler2D) +0:44 'index' ( uniform int) +0:44 'index' ( uniform int) +0:44 'coord' ( uniform 2-component vector of float) +0:45 move second child to first child ( temp 4-component vector of float) +0:45 'color5' ( out 4-component vector of float) +0:45 texture ( global 4-component vector of float) +0:45 s5: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform sampler2D) +0:45 indirect index (layout( column_major shared) temp block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) +0:45 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) +0:45 'index' ( uniform int) +0:45 Constant: +0:45 0 (const int) +0:45 'coord' ( uniform 2-component vector of float) +0:46 move second child to first child ( temp 4-component vector of float) +0:46 'color6' ( out 4-component vector of float) +0:46 textureFetch ( global 4-component vector of float) +0:46 's6' ( smooth in samplerBuffer) +0:46 'icoord' ( uniform int) +0:47 move second child to first child ( temp 4-component vector of float) +0:47 'color7' ( out 4-component vector of float) +0:47 textureFetch ( global 4-component vector of float) +0:47 s7: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform samplerBuffer) +0:47 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) +0:47 Constant: +0:47 0 (const uint) +0:47 'icoord' ( uniform int) +0:48 move second child to first child ( temp 4-component vector of float) +0:48 'color8' ( out 4-component vector of float) +0:48 textureFetch ( global 4-component vector of float) +0:48 s8: direct index for structure (layout( column_major shared layoutBindlessSampler) buffer samplerBuffer) +0:48 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) +0:48 Constant: +0:48 0 (const uint) +0:48 'icoord' ( uniform int) +0:49 move second child to first child ( temp 4-component vector of float) +0:49 'color9' ( out 4-component vector of float) +0:49 imageLoad ( global 4-component vector of float) +0:49 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) +0:49 Constant: +0:49 0 (const int) +0:49 0 (const int) +0:? Linker Objects +0:? 's0' ( uniform sampler2D) +0:? 's1' ( smooth in sampler2D) +0:? 's2' ( uniform 2-component vector of uint) +0:? 's3' ( uniform 2-component vector of int) +0:? 'index' ( uniform int) +0:? 's4' ( smooth in 2-element array of 3-element array of sampler2D) +0:? 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) +0:? 's6' ( smooth in samplerBuffer) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) +0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) +0:? 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) +0:? 'coord' ( uniform 2-component vector of float) +0:? 'icoord' ( uniform int) +0:? 'color0' ( out 4-component vector of float) +0:? 'color1' ( out 4-component vector of float) +0:? 'color2' ( out 4-component vector of float) +0:? 'color3' ( out 4-component vector of float) +0:? 'color4' ( out 4-component vector of float) +0:? 'color5' ( out 4-component vector of float) +0:? 'color6' ( out 4-component vector of float) +0:? 'color7' ( out 4-component vector of float) +0:? 'color8' ( out 4-component vector of float) +0:? 'color9' ( out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 460 +Requested GL_ARB_bindless_texture +0:? Sequence +0:38 Function Definition: main( ( global void) +0:38 Function Parameters: +0:40 Sequence +0:40 move second child to first child ( temp 4-component vector of float) +0:40 'color0' ( out 4-component vector of float) +0:40 texture ( global 4-component vector of float) +0:40 's0' ( uniform sampler2D) +0:40 'coord' ( uniform 2-component vector of float) +0:41 move second child to first child ( temp 4-component vector of float) +0:41 'color1' ( out 4-component vector of float) +0:41 texture ( global 4-component vector of float) +0:41 's1' ( smooth in sampler2D) +0:41 'coord' ( uniform 2-component vector of float) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 'color2' ( out 4-component vector of float) +0:42 texture ( global 4-component vector of float) +0:42 packUint2x32 ( temp sampler2D) +0:42 's2' ( uniform 2-component vector of uint) +0:42 'coord' ( uniform 2-component vector of float) +0:43 move second child to first child ( temp 4-component vector of float) +0:43 'color3' ( out 4-component vector of float) +0:43 texture ( global 4-component vector of float) +0:43 packUint2x32 ( temp sampler2D) +0:43 's3' ( uniform 2-component vector of int) +0:43 'coord' ( uniform 2-component vector of float) +0:44 move second child to first child ( temp 4-component vector of float) +0:44 'color4' ( out 4-component vector of float) +0:44 texture ( global 4-component vector of float) +0:44 indirect index ( smooth temp sampler2D) +0:44 indirect index ( smooth temp 3-element array of sampler2D) +0:44 's4' ( smooth in 2-element array of 3-element array of sampler2D) +0:44 'index' ( uniform int) +0:44 'index' ( uniform int) +0:44 'coord' ( uniform 2-component vector of float) +0:45 move second child to first child ( temp 4-component vector of float) +0:45 'color5' ( out 4-component vector of float) +0:45 texture ( global 4-component vector of float) +0:45 s5: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform sampler2D) +0:45 indirect index (layout( column_major shared) temp block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) +0:45 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) +0:45 'index' ( uniform int) +0:45 Constant: +0:45 0 (const int) +0:45 'coord' ( uniform 2-component vector of float) +0:46 move second child to first child ( temp 4-component vector of float) +0:46 'color6' ( out 4-component vector of float) +0:46 textureFetch ( global 4-component vector of float) +0:46 's6' ( smooth in samplerBuffer) +0:46 'icoord' ( uniform int) +0:47 move second child to first child ( temp 4-component vector of float) +0:47 'color7' ( out 4-component vector of float) +0:47 textureFetch ( global 4-component vector of float) +0:47 s7: direct index for structure (layout( column_major shared layoutBindlessSampler) uniform samplerBuffer) +0:47 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) +0:47 Constant: +0:47 0 (const uint) +0:47 'icoord' ( uniform int) +0:48 move second child to first child ( temp 4-component vector of float) +0:48 'color8' ( out 4-component vector of float) +0:48 textureFetch ( global 4-component vector of float) +0:48 s8: direct index for structure (layout( column_major shared layoutBindlessSampler) buffer samplerBuffer) +0:48 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) +0:48 Constant: +0:48 0 (const uint) +0:48 'icoord' ( uniform int) +0:49 move second child to first child ( temp 4-component vector of float) +0:49 'color9' ( out 4-component vector of float) +0:49 imageLoad ( global 4-component vector of float) +0:49 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) +0:49 Constant: +0:49 0 (const int) +0:49 0 (const int) +0:? Linker Objects +0:? 's0' ( uniform sampler2D) +0:? 's1' ( smooth in sampler2D) +0:? 's2' ( uniform 2-component vector of uint) +0:? 's3' ( uniform 2-component vector of int) +0:? 'index' ( uniform int) +0:? 's4' ( smooth in 2-element array of 3-element array of sampler2D) +0:? 'bbs5' (layout( column_major shared) uniform 2-element array of block{layout( column_major shared layoutBindlessSampler) uniform sampler2D s5}) +0:? 's6' ( smooth in samplerBuffer) +0:? 'anon@0' (layout( column_major shared) uniform block{layout( column_major shared layoutBindlessSampler) uniform samplerBuffer s7}) +0:? 'anon@1' (layout( column_major shared) buffer block{layout( column_major shared layoutBindlessSampler) buffer samplerBuffer s8}) +0:? 'i9' (layout( rgba8 layoutBindlessImage) smooth in image2D) +0:? 'coord' ( uniform 2-component vector of float) +0:? 'icoord' ( uniform int) +0:? 'color0' ( out 4-component vector of float) +0:? 'color1' ( out 4-component vector of float) +0:? 'color2' ( out 4-component vector of float) +0:? 'color3' ( out 4-component vector of float) +0:? 'color4' ( out 4-component vector of float) +0:? 'color5' ( out 4-component vector of float) +0:? 'color6' ( out 4-component vector of float) +0:? 'color7' ( out 4-component vector of float) +0:? 'color8' ( out 4-component vector of float) +0:? 'color9' ( out 4-component vector of float) + diff --git a/Test/baseResults/vulkan.frag.out b/Test/baseResults/vulkan.frag.out index 78aea82189..8e6bfcc945 100644 --- a/Test/baseResults/vulkan.frag.out +++ b/Test/baseResults/vulkan.frag.out @@ -6,7 +6,7 @@ ERROR: 0:6: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:8: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:9: 'binding' : sampler/texture/image requires layout(binding=X) ERROR: 0:10: 'binding' : sampler/texture/image requires layout(binding=X) -ERROR: 0:14: 'sampler2D' : sampler-constructor requires two arguments +ERROR: 0:14: 'sampler2D' : sampler-constructor requires the extension GL_ARB_bindless_texture enabled ERROR: 0:15: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type ERROR: 0:16: 'sampler2D' : sampler-constructor first argument must be a scalar *texture* type ERROR: 0:17: 'sampler2D' : sampler-constructor second argument must be a scalar sampler or samplerShadow diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index a6f47e8476..ee9b79a06b 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -429,6 +429,12 @@ enum TLayoutFormat { ElfR16ui, ElfR8ui, ElfR64ui, + ElfExtSizeGuard, // to help with comparisons + ElfSize1x8, + ElfSize1x16, + ElfSize1x32, + ElfSize2x32, + ElfSize4x32, ElfCount }; @@ -898,6 +904,8 @@ class TQualifier { // -2048 as the default value indicating layoutSecondaryViewportRelative is not set layoutSecondaryViewportRelativeOffset = -2048; layoutShaderRecord = false; + layoutBindlessSampler = false; + layoutBindlessImage = false; layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd; layoutFormat = ElfNone; #endif @@ -1001,6 +1009,9 @@ class TQualifier { // GL_EXT_spirv_intrinsics int spirvStorageClass; TSpirvDecorate* spirvDecorate; + + bool layoutBindlessSampler; + bool layoutBindlessImage; #endif bool hasUniformLayout() const @@ -1132,6 +1143,14 @@ class TQualifier { { return nonUniform; } + bool isBindlessSampler() const + { + return layoutBindlessSampler; + } + bool isBindlessImage() const + { + return layoutBindlessImage; + } // GL_EXT_spirv_intrinsics bool hasSprivDecorate() const { return spirvDecorate != nullptr; } @@ -1241,6 +1260,11 @@ class TQualifier { case ElfR8ui: return "r8ui"; case ElfR64ui: return "r64ui"; case ElfR64i: return "r64i"; + case ElfSize1x8: return "size1x8"; + case ElfSize1x16: return "size1x16"; + case ElfSize1x32: return "size1x32"; + case ElfSize2x32: return "size2x32"; + case ElfSize4x32: return "size4x32"; default: return "none"; } } @@ -1898,6 +1922,8 @@ class TType { virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); } virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); } virtual bool isTexture() const { return basicType == EbtSampler && getSampler().isTexture(); } + virtual bool isBindlessImage() const { return isImage() && qualifier.layoutBindlessImage; } + virtual bool isBindlessTexture() const { return isTexture() && qualifier.layoutBindlessSampler; } // Check the block-name convention of creating a block without populating it's members: virtual bool isUnusableName() const { return isStruct() && structure == nullptr; } virtual bool isParameterized() const { return typeParameters != nullptr; } @@ -1954,6 +1980,11 @@ class TType { return contains([](const TType* t) { return t->isOpaque(); } ); } + virtual bool containsSampler() const + { + return contains([](const TType* t) { return t->isTexture() || t->isImage(); }); + } + // Recursively checks if the type contains a built-in variable virtual bool containsBuiltIn() const { @@ -2285,7 +2316,10 @@ class TType { } if (qualifier.layoutShaderRecord) appendStr(" shaderRecordNV"); - + if (qualifier.layoutBindlessSampler) + appendStr(" layoutBindlessSampler"); + if (qualifier.layoutBindlessImage) + appendStr(" layoutBindlessImage"); appendStr(")"); } } @@ -2544,6 +2578,7 @@ class TType { void setStruct(TTypeList* s) { assert(isStruct()); structure = s; } TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads void setBasicType(const TBasicType& t) { basicType = t; } + void setVectorSize(int s) { vectorSize = s; } int computeNumComponents() const { diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 6a43ef3e84..e038e452e4 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -751,6 +751,11 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne case EbtInt64: newOp = EOpConvInt64ToUint; break; case EbtUint64: newOp = EOpConvUint64ToUint; break; #endif + // For bindless texture type conversion, add a dummy convert op, just + // to generate a new TIntermTyped + // uvec2(any sampler type) + // uvec2(any image type) + case EbtSampler: newOp = EOpConvIntToUint; break; default: return false; } diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 616580f993..ab06be49c4 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -159,7 +159,8 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, // switch (node->getBasicType()) { case EbtSampler: - message = "can't modify a sampler"; + if (extensionTurnedOn(E_GL_ARB_bindless_texture) == false) + message = "can't modify a sampler"; break; case EbtVoid: message = "can't modify void"; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 41afbc052a..68fcfea90b 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1389,7 +1389,8 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction #endif const TType& argType = arg->getAsTyped()->getType(); const TQualifier& argQualifier = argType.getQualifier(); - if (argQualifier.isMemory() && (argType.containsOpaque() || argType.isReference())) { + bool containsBindlessSampler = intermediate.getBindlessMode() && argType.containsSampler(); + if (argQualifier.isMemory() && !containsBindlessSampler && (argType.containsOpaque() || argType.isReference())) { const char* message = "argument cannot drop memory qualifier when passed to formal parameter"; #ifndef GLSLANG_WEB if (argQualifier.volatil && ! formalQualifier.volatil) @@ -1675,9 +1676,13 @@ TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermType error(loc, "type does not match, or is not convertible to, the function's return type", "return", ""); branch = intermediate.addBranch(EOpReturn, value, loc); } - } else + } else { + if (value->getType().isTexture() || value->getType().isImage()) { + if (!extensionTurnedOn(E_GL_ARB_bindless_texture)) + error(loc, "sampler or image can be used as return type only when the extension GL_ARB_bindless_texture enabled", "return", ""); + } branch = intermediate.addBranch(EOpReturn, value, loc); - + } branch->updatePrecision(currentFunctionType->getQualifier().precision); return branch; } @@ -1928,6 +1933,9 @@ TIntermTyped* TParseContext::addAssign(const TSourceLoc& loc, TOperator op, TInt if ((op == EOpAddAssign || op == EOpSubAssign) && left->isReference()) requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "+= and -= on a buffer reference"); + if (op == EOpAssign && left->getBasicType() == EbtSampler && right->getBasicType() == EbtSampler) + requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "sampler assignment for bindless texture"); + return intermediate.addAssign(op, left, right, loc); } @@ -2811,6 +2819,14 @@ TFunction* TParseContext::handleConstructorCall(const TSourceLoc& loc, const TPu profileRequires(loc, EEsProfile, 300, nullptr, "arrayed constructor"); } + // Reuse EOpConstructTextureSampler for bindless image constructor + // uvec2 imgHandle; + // imageLoad(image1D(imgHandle), 0); + if (type.isImage() && extensionTurnedOn(E_GL_ARB_bindless_texture)) + { + intermediate.setBindlessImageMode(currentCaller, AstRefTypeFunc); + } + TOperator op = intermediate.mapTypeToConstructorOp(type); if (op == EOpNull) { @@ -3544,8 +3560,13 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T return true; } if (op != EOpConstructStruct && op != EOpConstructNonuniform && typed->getBasicType() == EbtSampler) { - error(loc, "cannot convert a sampler", constructorString.c_str(), ""); - return true; + if (op == EOpConstructUVec2 && extensionTurnedOn(E_GL_ARB_bindless_texture)) { + intermediate.setBindlessTextureMode(currentCaller, AstRefTypeFunc); + } + else { + error(loc, "cannot convert a sampler", constructorString.c_str(), ""); + return true; + } } if (op != EOpConstructStruct && typed->isAtomic()) { error(loc, "cannot convert an atomic_uint", constructorString.c_str(), ""); @@ -3565,6 +3586,26 @@ bool TParseContext::constructorTextureSamplerError(const TSourceLoc& loc, const { TString constructorName = function.getType().getBasicTypeString(); // TODO: performance: should not be making copy; interface needs to change const char* token = constructorName.c_str(); + // verify the constructor for bindless texture, the input must be ivec2 or uvec2 + if (function.getParamCount() == 1) { + TType* pType = function[0].type; + TBasicType basicType = pType->getBasicType(); + bool isIntegerVec2 = ((basicType == EbtUint || basicType == EbtInt) && pType->getVectorSize() == 2); + bool bindlessMode = extensionTurnedOn(E_GL_ARB_bindless_texture); + if (isIntegerVec2 && bindlessMode) { + if (pType->getSampler().isImage()) + intermediate.setBindlessImageMode(currentCaller, AstRefTypeFunc); + else + intermediate.setBindlessTextureMode(currentCaller, AstRefTypeFunc); + return false; + } else { + if (!bindlessMode) + error(loc, "sampler-constructor requires the extension GL_ARB_bindless_texture enabled", token, ""); + else + error(loc, "sampler-constructor requires the input to be ivec2 or uvec2", token, ""); + return true; + } + } // exactly two arguments needed if (function.getParamCount() != 2) { @@ -3660,13 +3701,32 @@ void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const if (type.getQualifier().storage == EvqUniform) return; - if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtSampler)) - error(loc, "non-uniform struct contains a sampler or image:", type.getBasicTypeString().c_str(), identifier.c_str()); + if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtSampler)) { + // For bindless texture, sampler can be declared as an struct member + if (extensionTurnedOn(E_GL_ARB_bindless_texture)) { + if (type.getSampler().isImage()) + intermediate.setBindlessImageMode(currentCaller, AstRefTypeVar); + else + intermediate.setBindlessTextureMode(currentCaller, AstRefTypeVar); + } + else { + error(loc, "non-uniform struct contains a sampler or image:", type.getBasicTypeString().c_str(), identifier.c_str()); + } + } else if (type.getBasicType() == EbtSampler && type.getQualifier().storage != EvqUniform) { - // non-uniform sampler - // not yet: okay if it has an initializer - // if (! initializer) - error(loc, "sampler/image types can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); + // For bindless texture, sampler can be declared as an input/output/block member + if (extensionTurnedOn(E_GL_ARB_bindless_texture)) { + if (type.getSampler().isImage()) + intermediate.setBindlessImageMode(currentCaller, AstRefTypeVar); + else + intermediate.setBindlessTextureMode(currentCaller, AstRefTypeVar); + } + else { + // non-uniform sampler + // not yet: okay if it has an initializer + // if (! initializer) + error(loc, "sampler/image types can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); + } } } @@ -3732,7 +3792,7 @@ void TParseContext::memberQualifierCheck(glslang::TPublicType& publicType) // // Check/fix just a full qualifier (no variables or types yet, but qualifier is complete) at global level. // -void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier, bool isMemberCheck) +void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& qualifier, bool isMemberCheck, const TPublicType* publicType) { bool nonuniformOkay = false; @@ -3768,6 +3828,11 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q { requireExtensions(loc, 1, &E_GL_EXT_scalar_block_layout, "default std430 layout for uniform"); } + + if (publicType != nullptr && publicType->isImage() && + (qualifier.layoutFormat > ElfExtSizeGuard && qualifier.layoutFormat < ElfCount)) + qualifier.layoutFormat = mapLegacyLayoutFormat(qualifier.layoutFormat, publicType->sampler.getBasicType()); + break; default: break; @@ -4172,7 +4237,7 @@ void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType ba void TParseContext::parameterTypeCheck(const TSourceLoc& loc, TStorageQualifier qualifier, const TType& type) { - if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque()) + if ((qualifier == EvqOut || qualifier == EvqInOut) && type.isOpaque() && !intermediate.getBindlessMode()) error(loc, "samplers and atomic_uints cannot be output parameters", type.getBasicTypeString().c_str(), ""); if (!parsingBuiltins && type.contains16BitFloat()) requireFloat16Arithmetic(loc, type.getBasicTypeString().c_str(), "float16 types can only be in uniform block or buffer storage"); @@ -5105,7 +5170,7 @@ void TParseContext::arrayObjectCheck(const TSourceLoc& loc, const TType& type, c void TParseContext::opaqueCheck(const TSourceLoc& loc, const TType& type, const char* op) { - if (containsFieldWithBasicType(type, EbtSampler)) + if (containsFieldWithBasicType(type, EbtSampler) && !extensionTurnedOn(E_GL_ARB_bindless_texture)) error(loc, "can't use with samplers or structs containing samplers", op, ""); } @@ -5480,6 +5545,28 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi intermediate.setUsePhysicalStorageBuffer(); return; } + if (id == "bindless_sampler") { + requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bindless_sampler"); + publicType.qualifier.layoutBindlessSampler = true; + intermediate.setBindlessTextureMode(currentCaller, AstRefTypeLayout); + return; + } + if (id == "bindless_image") { + requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bindless_image"); + publicType.qualifier.layoutBindlessImage = true; + intermediate.setBindlessImageMode(currentCaller, AstRefTypeLayout); + return; + } + if (id == "bound_sampler") { + requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bound_sampler"); + publicType.qualifier.layoutBindlessSampler = false; + return; + } + if (id == "bound_image") { + requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "bound_image"); + publicType.qualifier.layoutBindlessImage = false; + return; + } if (language == EShLangGeometry || language == EShLangTessEvaluation || language == EShLangMesh) { if (id == TQualifier::getGeometryString(ElgTriangles)) { publicType.shaderQualifiers.geometry = ElgTriangles; @@ -6137,6 +6224,10 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.layoutSecondaryViewportRelativeOffset = src.layoutSecondaryViewportRelativeOffset; if (src.layoutShaderRecord) dst.layoutShaderRecord = true; + if (src.layoutBindlessSampler) + dst.layoutBindlessSampler = true; + if (src.layoutBindlessImage) + dst.layoutBindlessImage = true; if (src.pervertexNV) dst.pervertexNV = true; if (src.pervertexEXT) @@ -6418,7 +6509,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) // Image format if (qualifier.hasFormat()) { - if (! type.isImage()) + if (! type.isImage() && !intermediate.getBindlessImageMode()) error(loc, "only apply to images", TQualifier::getLayoutFormatString(qualifier.getFormat()), ""); else { if (type.getSampler().type == EbtFloat && qualifier.getFormat() > ElfFloatGuard) @@ -6437,7 +6528,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) } } } - } else if (type.isImage() && ! qualifier.isWriteOnly()) { + } else if (type.isImage() && ! qualifier.isWriteOnly() && !intermediate.getBindlessImageMode()) { const char *explanation = "image variables not declared 'writeonly' and without a format layout qualifier"; requireProfile(loc, ECoreProfile | ECompatibilityProfile, explanation); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shader_image_load_formatted, explanation); @@ -7745,12 +7836,14 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* // Combined texture-sampler constructors are completely semantic checked // in constructorTextureSamplerError() if (op == EOpConstructTextureSampler) { - if (aggrNode->getSequence()[1]->getAsTyped()->getType().getSampler().shadow) { - // Transfer depth into the texture (SPIR-V image) type, as a hint - // for tools to know this texture/image is a depth image. - aggrNode->getSequence()[0]->getAsTyped()->getWritableType().getSampler().shadow = true; + if (aggrNode != nullptr) { + if (aggrNode->getSequence()[1]->getAsTyped()->getType().getSampler().shadow) { + // Transfer depth into the texture (SPIR-V image) type, as a hint + // for tools to know this texture/image is a depth image. + aggrNode->getSequence()[0]->getAsTyped()->getWritableType().getSampler().shadow = true; + } + return intermediate.setAggregateOperator(aggrNode, op, type, loc); } - return intermediate.setAggregateOperator(aggrNode, op, type, loc); } TTypeList::const_iterator memberTypes; @@ -7885,6 +7978,16 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUvec2, true, node, type); return newNode; + } else if (node->getType().getBasicType() == EbtSampler) { + requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "sampler conversion to uvec2"); + // force the basic type of the constructor param to uvec2, otherwise spv builder will + // report some errors + TIntermTyped* newSrcNode = intermediate.createConversion(EbtUint, node); + newSrcNode->getAsTyped()->getWritableType().setVectorSize(2); + + TIntermTyped* newNode = + intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConstructUVec2, false, newSrcNode, type); + return newNode; } case EOpConstructUVec3: case EOpConstructUVec4: @@ -7898,7 +8001,15 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructBool: basicOp = EOpConstructBool; break; - + case EOpConstructTextureSampler: + if ((node->getType().getBasicType() == EbtUint || node->getType().getBasicType() == EbtInt) && + node->getType().getVectorSize() == 2) { + requireExtensions(loc, 1, &E_GL_ARB_bindless_texture, "ivec2/uvec2 convert to texture handle"); + // No matter ivec2 or uvec2, Set EOpPackUint2x32 just to generate an opBitcast op code + TIntermTyped* newNode = + intermediate.addBuiltInFunctionCall(node->getLoc(), EOpPackUint2x32, true, node, type); + return newNode; + } #ifndef GLSLANG_WEB case EOpConstructDVec2: @@ -8245,6 +8356,30 @@ void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier& #endif } +// +// Update qualifier layoutBindlessImage & layoutBindlessSampler on block member +// +void TParseContext::updateBindlessQualifier(TType& memberType) +{ + if (memberType.containsSampler()) { + if (memberType.isStruct()) { + TTypeList* typeList = memberType.getWritableStruct(); + for (unsigned int member = 0; member < typeList->size(); ++member) { + TType* subMemberType = (*typeList)[member].type; + updateBindlessQualifier(*subMemberType); + } + } + else if (memberType.getSampler().isImage()) { + intermediate.setBindlessImageMode(currentCaller, AstRefTypeLayout); + memberType.getQualifier().layoutBindlessImage = true; + } + else { + intermediate.setBindlessTextureMode(currentCaller, AstRefTypeLayout); + memberType.getQualifier().layoutBindlessSampler = true; + } + } +} + // // Do everything needed to add an interface block. // @@ -8297,8 +8432,13 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con } } - if (memberType.containsOpaque()) - error(memberLoc, "member of block cannot be or contain a sampler, image, or atomic_uint type", typeList[member].type->getFieldName().c_str(), ""); + // For bindless texture, sampler can be declared as uniform/storage block member, + if (memberType.containsOpaque()) { + if (memberType.containsSampler() && extensionTurnedOn(E_GL_ARB_bindless_texture)) + updateBindlessQualifier(memberType); + else + error(memberLoc, "member of block cannot be or contain a sampler, image, or atomic_uint type", typeList[member].type->getFieldName().c_str(), ""); + } if (memberType.containsCoopMat()) error(memberLoc, "member of block cannot be or contain a cooperative matrix type", typeList[member].type->getFieldName().c_str(), ""); @@ -9472,4 +9612,38 @@ const TTypeList* TParseContext::recordStructCopy(TStructRecord& record, const TT return originStruct; } +TLayoutFormat TParseContext::mapLegacyLayoutFormat(TLayoutFormat legacyLayoutFormat, TBasicType imageType) +{ + TLayoutFormat layoutFormat = ElfNone; + if (imageType == EbtFloat) { + switch (legacyLayoutFormat) { + case ElfSize1x16: layoutFormat = ElfR16f; break; + case ElfSize1x32: layoutFormat = ElfR32f; break; + case ElfSize2x32: layoutFormat = ElfRg32f; break; + case ElfSize4x32: layoutFormat = ElfRgba32f; break; + default: break; + } + } else if (imageType == EbtUint) { + switch (legacyLayoutFormat) { + case ElfSize1x8: layoutFormat = ElfR8ui; break; + case ElfSize1x16: layoutFormat = ElfR16ui; break; + case ElfSize1x32: layoutFormat = ElfR32ui; break; + case ElfSize2x32: layoutFormat = ElfRg32ui; break; + case ElfSize4x32: layoutFormat = ElfRgba32ui; break; + default: break; + } + } else if (imageType == EbtInt) { + switch (legacyLayoutFormat) { + case ElfSize1x8: layoutFormat = ElfR8i; break; + case ElfSize1x16: layoutFormat = ElfR16i; break; + case ElfSize1x32: layoutFormat = ElfR32i; break; + case ElfSize2x32: layoutFormat = ElfRg32i; break; + case ElfSize4x32: layoutFormat = ElfRgba32i; break; + default: break; + } + } + + return layoutFormat; +} + } // end namespace glslang diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 885fd90810..37f4d0b3d2 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -393,7 +393,7 @@ class TParseContext : public TParseContextBase { void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void memberQualifierCheck(glslang::TPublicType&); - void globalQualifierFixCheck(const TSourceLoc&, TQualifier&, bool isMemberCheck = false); + void globalQualifierFixCheck(const TSourceLoc&, TQualifier&, bool isMemberCheck = false, const TPublicType* publicType = nullptr); void globalQualifierTypeCheck(const TSourceLoc&, const TQualifier&, const TPublicType&); bool structQualifierErrorCheck(const TSourceLoc&, const TPublicType& pType); void mergeQualifiers(const TSourceLoc&, TQualifier& dst, const TQualifier& src, bool force); @@ -456,9 +456,11 @@ class TParseContext : public TParseContextBase { void addQualifierToExisting(const TSourceLoc&, TQualifier, TIdentifierList&); void invariantCheck(const TSourceLoc&, const TQualifier&); void updateStandaloneQualifierDefaults(const TSourceLoc&, const TPublicType&); + void updateBindlessQualifier(TType& memberType); void wrapupSwitchSubsequence(TIntermAggregate* statements, TIntermNode* branchNode); TIntermNode* addSwitch(const TSourceLoc&, TIntermTyped* expression, TIntermAggregate* body); const TTypeList* recordStructCopy(TStructRecord&, const TType*, const TType*); + TLayoutFormat mapLegacyLayoutFormat(TLayoutFormat legacyLayoutFormat, TBasicType imageType); #ifndef GLSLANG_WEB TAttributeType attributeFromName(const TString& name) const; diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 0d45e484cd..179135c866 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -319,6 +319,7 @@ class TFunction : public TSymbol { virtual TParameter& operator[](int i) { assert(writable); return parameters[i]; } virtual const TParameter& operator[](int i) const { return parameters[i]; } + const TQualifier& getQualifier() const { return returnType.getQualifier(); } #ifndef GLSLANG_WEB virtual void setSpirvInstruction(const TSpirvInstruction& inst) diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index a5fd107535..044a6bdab9 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -227,6 +227,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_ARB_texture_query_lod] = EBhDisable; extensionBehavior[E_GL_ARB_vertex_attrib_64bit] = EBhDisable; extensionBehavior[E_GL_ARB_draw_instanced] = EBhDisable; + extensionBehavior[E_GL_ARB_bindless_texture] = EBhDisable; extensionBehavior[E_GL_ARB_fragment_coord_conventions] = EBhDisable; @@ -370,6 +371,9 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_shader_subgroup_extended_types_float16] = EBhDisable; extensionBehavior[E_GL_EXT_shader_atomic_float] = EBhDisable; extensionBehavior[E_GL_EXT_shader_atomic_float2] = EBhDisable; + + // Record extensions not for spv. + spvUnsupportedExt.push_back(E_GL_ARB_bindless_texture); } #endif // GLSLANG_WEB @@ -437,7 +441,6 @@ void TParseVersions::getPreamble(std::string& preamble) } else { // !isEsProfile() preamble = - "#define GL_FRAGMENT_PRECISION_HIGH 1\n" "#define GL_ARB_texture_rectangle 1\n" "#define GL_ARB_shading_language_420pack 1\n" "#define GL_ARB_texture_gather 1\n" @@ -477,6 +480,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_ARB_vertex_attrib_64bit 1\n" "#define GL_ARB_draw_instanced 1\n" "#define GL_ARB_fragment_coord_conventions 1\n" + "#define GL_ARB_bindless_texture 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_EXT_shader_image_load_formatted 1\n" "#define GL_EXT_post_depth_coverage 1\n" @@ -576,6 +580,10 @@ void TParseVersions::getPreamble(std::string& preamble) preamble += "#define GL_EXT_null_initializer 1\n"; preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n"; } + if (version >= 130) { + preamble +="#define GL_FRAGMENT_PRECISION_HIGH 1\n"; + } + #endif // GLSLANG_WEB } @@ -1099,6 +1107,13 @@ void TParseVersions::extensionRequires(const TSourceLoc &loc, const char * const minSpvVersion = iter->second; requireSpv(loc, extension, minSpvVersion); } + + if (spvVersion.spv != 0){ + for (auto ext : spvUnsupportedExt){ + if (strcmp(extension, ext.c_str()) == 0) + error(loc, "not allowed when using generating SPIR-V codes", extension, ""); + } + } } // Call for any operation needing full GLSL integer data-type support. diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index f06abdd6f0..831da9f167 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -163,6 +163,7 @@ const char* const E_GL_ARB_texture_query_lod = "GL_ARB_texture_query_ const char* const E_GL_ARB_vertex_attrib_64bit = "GL_ARB_vertex_attrib_64bit"; const char* const E_GL_ARB_draw_instanced = "GL_ARB_draw_instanced"; const char* const E_GL_ARB_fragment_coord_conventions = "GL_ARB_fragment_coord_conventions"; +const char* const E_GL_ARB_bindless_texture = "GL_ARB_bindless_texture"; const char* const E_GL_KHR_shader_subgroup_basic = "GL_KHR_shader_subgroup_basic"; const char* const E_GL_KHR_shader_subgroup_vote = "GL_KHR_shader_subgroup_vote"; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index a59da443d9..f8b0397a65 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -1218,7 +1218,7 @@ fully_specified_type parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier); } | type_qualifier type_specifier { - parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); + parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2); parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $2); if ($2.arraySizes) { diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 35242f2157..344a1c159e 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -1218,7 +1218,7 @@ fully_specified_type parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier); } | type_qualifier type_specifier { - parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); + parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2); parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $2); if ($2.arraySizes) { diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 7ca3e711b2..1458c5fa82 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -6551,7 +6551,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 136: /* fully_specified_type: type_qualifier type_specifier */ #line 1220 "MachineIndependent/glslang.y" { - parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); + parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); if ((yyvsp[0].interm.type).arraySizes) { diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index fab65a76ef..aa0f295c57 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1517,7 +1517,10 @@ void TIntermediate::checkCallGraphBodies(TInfoSink& infoSink, bool keepUncalled) if (! keepUncalled) { for (int f = 0; f < (int)functionSequence.size(); ++f) { if (! reachable[f]) + { + resetTopLevelUncalledStatus(functionSequence[f]->getAsAggregate()->getName()); functionSequence[f] = nullptr; + } } functionSequence.erase(std::remove(functionSequence.begin(), functionSequence.end(), nullptr), functionSequence.end()); } @@ -2012,6 +2015,15 @@ int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) case EbtInt16: case EbtUint16: size = 2; return 2; case EbtReference: size = 8; return 8; + case EbtSampler: + { + if (type.isBindlessImage() || type.isBindlessTexture()) { + size = 8; return 8; + } + else { + size = 4; return 4; + } + } default: size = 4; return 4; } } diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 1bb4e97709..87c4c91fa3 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -225,6 +225,16 @@ enum ComputeDerivativeMode { LayoutDerivativeGroupLinear, // derivative_group_linearNV }; +// +// Status type on AST level. Some uncalled status or functions would be reset in call graph. +// Currently we will keep status set by explicitly declared layout or variable decl. +// +enum AstRefType { + AstRefTypeVar, // Status set by variable decl + AstRefTypeFunc, // Status set by function decl + AstRefTypeLayout, // Status set by layout decl +}; + class TIdMaps { public: TMap& operator[](long long i) { return maps[i]; } @@ -744,6 +754,65 @@ class TIntermediate { useVariablePointers = true; processes.addProcess("use-variable-pointers"); } + // Set the global flag for bindless texture + void setBindlessTextureMode(const TString& currentCaller, AstRefType type) + { + // When type is not func, currentCaller should be "" (empty string) + bindlessTextureModeCaller[currentCaller] = type; + } + + // Get the global flag for bindless texture + bool getBindlessTextureMode() const + { + return (bindlessTextureModeCaller.size() > 0); + } + + // Set the global flag for bindless image + void setBindlessImageMode(const TString& currentCaller, AstRefType type) + { + // When type is not func, currentCaller should be "" (empty string) + bindlessImageModeCaller[currentCaller] = type; + } + + // Get the global flag for bindless image + bool getBindlessImageMode() const + { + return (bindlessImageModeCaller.size() > 0); + } + + // Get the global flag for bindless texture + bool resetTopLevelUncalledStatus(const TString& deadCaller) + { + // For reflection collection purpose, currently uniform layout setting and some + // flags introduced by variables (IO, global, etc,.) won't be reset here. + // Remove each global status (AST top level) introduced by uncalled functions. + // If a status is set by several functions, keep those which in call graph. + bool result = false; + + // For two types of bindless mode flag, we would only reset which is set by an uncalled function. + // If one status flag's key in caller vec is empty, it should be come from a non-function setting. + if (!bindlessTextureModeCaller.empty()) { + auto caller = bindlessTextureModeCaller.find(deadCaller); + if (caller != bindlessTextureModeCaller.end() && bindlessTextureModeCaller[deadCaller] == AstRefTypeFunc) { + bindlessTextureModeCaller.erase(caller); + result = true; + } + } + if (!bindlessImageModeCaller.empty()) { + auto caller = bindlessImageModeCaller.find(deadCaller); + if (caller != bindlessImageModeCaller.end() && bindlessImageModeCaller[deadCaller] == AstRefTypeFunc) { + bindlessImageModeCaller.erase(caller); + result = true; + } + } + return result; + } + + bool getBindlessMode() const + { + return getBindlessTextureMode() || getBindlessImageMode(); + } + bool usingVariablePointers() const { return useVariablePointers; } #ifdef ENABLE_HLSL @@ -1188,7 +1257,8 @@ class TIntermediate { TSpirvRequirement* spirvRequirement; TSpirvExecutionMode* spirvExecutionMode; - + std::map bindlessTextureModeCaller; + std::map bindlessImageModeCaller; std::unordered_map uniformLocationOverrides; int uniformLocationBase; TNumericFeatures numericFeatures; diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index 3c52ff1aab..6663e887b2 100644 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -226,6 +226,7 @@ class TParseVersions { protected: TMap extensionBehavior; // for each extension string, what its current behavior is TMap extensionMinSpv; // for each extension string, store minimum spirv required + TVector spvUnsupportedExt; // for extensions reserved for spv usage. EShMessages messages; // errors/warnings/rule-sets int numErrors; // number of compile-time errors encountered TInputScanner* currentScanner; diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 1d975464f1..81633f97be 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -291,6 +291,7 @@ INSTANTIATE_TEST_SUITE_P( "GL_EXT_shader_integer_mix.vert", "GL_ARB_draw_instanced.vert", "GL_ARB_fragment_coord_conventions.vert", + "GL_ARB_bindless_texture.frag", "BestMatchFunction.vert", "EndStreamPrimitive.geom", "floatBitsToInt.vert", From 586baa35a47b3aa6ad3fa829a27f0f4206400668 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 8 Dec 2022 16:41:03 -0700 Subject: [PATCH 120/594] Guard AppleClang linker options Fix #3073 --- CMakeLists.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b581c842a7..b6fd306d8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -192,10 +192,10 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) # Error if there's symbols that are not found at link time. # add_link_options() was added in CMake 3.13 - if using an earlier # version don't set this - it should be caught by presubmits anyway. - if (WIN32) - add_link_options("-Wl,--no-undefined") - else() + if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") add_link_options("-Wl,-undefined,error") + else() + add_link_options("-Wl,--no-undefined") endif() endif() elseif(MSVC) @@ -402,4 +402,4 @@ if(ENABLE_GLSLANG_INSTALL) DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) -endif() \ No newline at end of file +endif() From 4fc43cd3c18abf2a7fa79aeb653bdcf01d2a9776 Mon Sep 17 00:00:00 2001 From: alelenv <40001162+alelenv@users.noreply.github.com> Date: Fri, 9 Dec 2022 12:19:08 -0800 Subject: [PATCH 121/594] Add support for GL_NV_shader_invocation_reorder. (#3054) --- SPIRV/GLSL.ext.NV.h | 3 + SPIRV/GlslangToSpv.cpp | 348 +- SPIRV/SpvBuilder.cpp | 15 + SPIRV/SpvBuilder.h | 2 + SPIRV/doc.cpp | 223 + SPIRV/spirv.hpp | 36 + .../spv.nv.hitobject-allops.rchit.out | 215 + .../spv.nv.hitobject-allops.rgen.out | 219 + .../spv.nv.hitobject-allops.rmiss.out | 215 + Test/spv.nv.hitobject-allops.rchit | 55 + Test/spv.nv.hitobject-allops.rgen | 61 + Test/spv.nv.hitobject-allops.rmiss | 58 + glslang/Include/BaseTypes.h | 3 + glslang/Include/Types.h | 14 +- glslang/Include/intermediate.h | 35 + glslang/MachineIndependent/Initialize.cpp | 160 +- .../MachineIndependent/ParseContextBase.cpp | 3 + glslang/MachineIndependent/ParseHelper.cpp | 89 +- glslang/MachineIndependent/Scan.cpp | 17 + glslang/MachineIndependent/SymbolTable.cpp | 1 + glslang/MachineIndependent/Versions.cpp | 6 +- glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/glslang.m4 | 15 +- glslang/MachineIndependent/glslang.y | 17 +- glslang/MachineIndependent/glslang_tab.cpp | 9406 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 588 +- glslang/MachineIndependent/intermOut.cpp | 32 + glslang/MachineIndependent/linkValidate.cpp | 4 +- .../MachineIndependent/localintermediate.h | 5 +- gtests/Spv.FromFile.cpp | 6 + 30 files changed, 6847 insertions(+), 5005 deletions(-) create mode 100644 Test/baseResults/spv.nv.hitobject-allops.rchit.out create mode 100644 Test/baseResults/spv.nv.hitobject-allops.rgen.out create mode 100644 Test/baseResults/spv.nv.hitobject-allops.rmiss.out create mode 100644 Test/spv.nv.hitobject-allops.rchit create mode 100644 Test/spv.nv.hitobject-allops.rgen create mode 100644 Test/spv.nv.hitobject-allops.rmiss diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h index 93c98bf626..5b0f7eb17e 100644 --- a/SPIRV/GLSL.ext.NV.h +++ b/SPIRV/GLSL.ext.NV.h @@ -81,4 +81,7 @@ const char* const E_SPV_NV_cooperative_matrix = "SPV_NV_cooperative_matrix"; //SPV_NV_shader_sm_builtins const char* const E_SPV_NV_shader_sm_builtins = "SPV_NV_shader_sm_builtins"; +//SPV_NV_shader_execution_reorder +const char* const E_SPV_NV_shader_invocation_reorder = "SPV_NV_shader_invocation_reorder"; + #endif // #ifndef GLSLextNV_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 8363edca08..378f792482 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -278,12 +278,10 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { // requiring local translation to and from SPIR-V type on every access. // Maps AST-required-type-id> std::unordered_map forceType; - - // Used later for generating OpTraceKHR/OpExecuteCallableKHR - std::unordered_map locationToSymbol[2]; - // Used by Task shader while generating opearnds for OpEmitMeshTasksEXT spv::Id taskPayloadID; + // Used later for generating OpTraceKHR/OpExecuteCallableKHR/OpHitObjectRecordHit*/OpHitObjectGetShaderBindingTableData + std::unordered_map locationToSymbol[4]; }; // @@ -392,6 +390,7 @@ spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useSto case glslang::EvqHitAttr: return spv::DecorationBlock; case glslang::EvqCallableData: return spv::DecorationBlock; case glslang::EvqCallableDataIn: return spv::DecorationBlock; + case glslang::EvqHitObjectAttrNV: return spv::DecorationBlock; #endif default: assert(0); @@ -469,6 +468,7 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T case glslang::EvqHitAttr: case glslang::EvqCallableData: case glslang::EvqCallableDataIn: + case glslang::EvqHitObjectAttrNV: return spv::DecorationMax; #endif default: @@ -1299,7 +1299,7 @@ spv::LoopControlMask TGlslangToSpvTraverser::TranslateLoopControl(const glslang: // Translate glslang type to SPIR-V storage class. spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::TType& type) { - if (type.getBasicType() == glslang::EbtRayQuery) + if (type.getBasicType() == glslang::EbtRayQuery || type.getBasicType() == glslang::EbtHitObjectNV) return spv::StorageClassPrivate; #ifndef GLSLANG_WEB if (type.getQualifier().isSpirvByReference()) { @@ -1356,6 +1356,7 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqCallableData: return spv::StorageClassCallableDataKHR; case glslang::EvqCallableDataIn: return spv::StorageClassIncomingCallableDataKHR; case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClassTaskPayloadWorkgroupEXT; + case glslang::EvqHitObjectAttrNV: return spv::StorageClassHitObjectAttributeNV; case glslang::EvqSpirvStorageClass: return static_cast(type.getQualifier().spirvStorageClass); #endif default: @@ -2582,6 +2583,35 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI spv::Builder::AccessChain::CoherentFlags lvalueCoherentFlags; + const auto hitObjectOpsWithLvalue = [](glslang::TOperator op) { + switch(op) { + case glslang::EOpReorderThreadNV: + case glslang::EOpHitObjectGetCurrentTimeNV: + case glslang::EOpHitObjectGetHitKindNV: + case glslang::EOpHitObjectGetPrimitiveIndexNV: + case glslang::EOpHitObjectGetGeometryIndexNV: + case glslang::EOpHitObjectGetInstanceIdNV: + case glslang::EOpHitObjectGetInstanceCustomIndexNV: + case glslang::EOpHitObjectGetObjectRayDirectionNV: + case glslang::EOpHitObjectGetObjectRayOriginNV: + case glslang::EOpHitObjectGetWorldRayDirectionNV: + case glslang::EOpHitObjectGetWorldRayOriginNV: + case glslang::EOpHitObjectGetWorldToObjectNV: + case glslang::EOpHitObjectGetObjectToWorldNV: + case glslang::EOpHitObjectGetRayTMaxNV: + case glslang::EOpHitObjectGetRayTMinNV: + case glslang::EOpHitObjectIsEmptyNV: + case glslang::EOpHitObjectIsHitNV: + case glslang::EOpHitObjectIsMissNV: + case glslang::EOpHitObjectRecordEmptyNV: + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: + case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: + return true; + default: + return false; + } + }; + #ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpAtomicCounterIncrement || node->getOp() == glslang::EOpAtomicCounterDecrement || @@ -2596,7 +2626,8 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI node->getOp() == glslang::EOpRayQueryGetIntersectionCandidateAABBOpaque || node->getOp() == glslang::EOpRayQueryTerminate || node->getOp() == glslang::EOpRayQueryConfirmIntersection || - (node->getOp() == glslang::EOpSpirvInst && operandNode->getAsTyped()->getQualifier().isSpirvByReference())) { + (node->getOp() == glslang::EOpSpirvInst && operandNode->getAsTyped()->getQualifier().isSpirvByReference()) || + hitObjectOpsWithLvalue(node->getOp())) { operand = builder.accessChainGetLValue(); // Special case l-value operands lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(operandNode->getAsTyped()->getType()); @@ -2731,6 +2762,12 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI case glslang::EOpRayQueryConfirmIntersection: builder.createNoResultOp(spv::OpRayQueryConfirmIntersectionKHR, operand); return false; + case glslang::EOpReorderThreadNV: + builder.createNoResultOp(spv::OpReorderThreadWithHitObjectNV, operand); + return false; + case glslang::EOpHitObjectRecordEmptyNV: + builder.createNoResultOp(spv::OpHitObjectRecordEmptyNV, operand); + return false; #endif default: @@ -3222,6 +3259,43 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); noReturnValue = true; break; + + case glslang::EOpHitObjectTraceRayNV: + case glslang::EOpHitObjectTraceRayMotionNV: + case glslang::EOpHitObjectGetAttributesNV: + case glslang::EOpHitObjectExecuteShaderNV: + case glslang::EOpHitObjectRecordEmptyNV: + case glslang::EOpHitObjectRecordMissNV: + case glslang::EOpHitObjectRecordMissMotionNV: + case glslang::EOpHitObjectRecordHitNV: + case glslang::EOpHitObjectRecordHitMotionNV: + case glslang::EOpHitObjectRecordHitWithIndexNV: + case glslang::EOpHitObjectRecordHitWithIndexMotionNV: + case glslang::EOpReorderThreadNV: + noReturnValue = true; + //Fallthrough + case glslang::EOpHitObjectIsEmptyNV: + case glslang::EOpHitObjectIsMissNV: + case glslang::EOpHitObjectIsHitNV: + case glslang::EOpHitObjectGetRayTMinNV: + case glslang::EOpHitObjectGetRayTMaxNV: + case glslang::EOpHitObjectGetObjectRayOriginNV: + case glslang::EOpHitObjectGetObjectRayDirectionNV: + case glslang::EOpHitObjectGetWorldRayOriginNV: + case glslang::EOpHitObjectGetWorldRayDirectionNV: + case glslang::EOpHitObjectGetObjectToWorldNV: + case glslang::EOpHitObjectGetWorldToObjectNV: + case glslang::EOpHitObjectGetInstanceCustomIndexNV: + case glslang::EOpHitObjectGetInstanceIdNV: + case glslang::EOpHitObjectGetGeometryIndexNV: + case glslang::EOpHitObjectGetPrimitiveIndexNV: + case glslang::EOpHitObjectGetHitKindNV: + case glslang::EOpHitObjectGetCurrentTimeNV: + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: + case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: + builder.addExtension(spv::E_SPV_NV_shader_invocation_reorder); + builder.addCapability(spv::CapabilityShaderInvocationReorderNV); + break; #endif case glslang::EOpDebugPrintf: @@ -3279,6 +3353,22 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt lvalue = true; break; + + + case glslang::EOpHitObjectRecordHitNV: + case glslang::EOpHitObjectRecordHitMotionNV: + case glslang::EOpHitObjectRecordHitWithIndexNV: + case glslang::EOpHitObjectRecordHitWithIndexMotionNV: + case glslang::EOpHitObjectTraceRayNV: + case glslang::EOpHitObjectTraceRayMotionNV: + case glslang::EOpHitObjectExecuteShaderNV: + case glslang::EOpHitObjectRecordMissNV: + case glslang::EOpHitObjectRecordMissMotionNV: + case glslang::EOpHitObjectGetAttributesNV: + if (arg == 0) + lvalue = true; + break; + case glslang::EOpRayQueryInitialize: case glslang::EOpRayQueryTerminate: case glslang::EOpRayQueryConfirmIntersection: @@ -3379,6 +3469,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvByReference()) lvalue = true; break; + case glslang::EOpReorderThreadNV: + //Three variants of reorderThreadNV, two of them use hitObjectNV + if (arg == 0 && glslangOperands.size() != 2) + lvalue = true; + break; #endif default: break; @@ -3435,7 +3530,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } else if (arg == 2) { continue; } - } + } #endif // for l-values, pass the address, for r-values, pass the value @@ -3477,11 +3572,23 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt operands.push_back(builder.makeIntConstant(cond ? 1 : 0)); } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) || (arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) || - (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR)) { - const int opdNum = glslangOp == glslang::EOpTraceKHR ? 10 : (glslangOp == glslang::EOpTraceRayMotionNV ? 11 : 1); + (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR) || + (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) || + (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) || + (arg == 12 && glslangOp == glslang::EOpHitObjectTraceRayMotionNV)) { const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0; - - const int location = glslangOperands[opdNum]->getAsConstantUnion()->getConstArray()[0].getUConst(); + const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); + auto itNode = locationToSymbol[set].find(location); + visitSymbol(itNode->second); + spv::Id symId = getSymbolId(itNode->second); + operands.push_back(symId); + } else if ((arg == 12 && glslangOp == glslang::EOpHitObjectRecordHitNV) || + (arg == 13 && glslangOp == glslang::EOpHitObjectRecordHitMotionNV) || + (arg == 11 && glslangOp == glslang::EOpHitObjectRecordHitWithIndexNV) || + (arg == 12 && glslangOp == glslang::EOpHitObjectRecordHitWithIndexMotionNV) || + (arg == 1 && glslangOp == glslang::EOpHitObjectGetAttributesNV)) { + const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); + const int set = 2; auto itNode = locationToSymbol[set].find(location); visitSymbol(itNode->second); spv::Id symId = getSymbolId(itNode->second); @@ -4307,6 +4414,13 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty case glslang::EbtString: // no type used for OpString return 0; + + case glslang::EbtHitObjectNV: { + builder.addExtension(spv::E_SPV_NV_shader_invocation_reorder); + builder.addCapability(spv::CapabilityShaderInvocationReorderNV); + spvType = builder.makeHitObjectNVType(); + } + break; #ifndef GLSLANG_WEB case glslang::EbtSpirvType: { // GL_EXT_spirv_intrinsics @@ -4726,6 +4840,9 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // Decorate the structure builder.addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix)); builder.addDecoration(spvType, TranslateBlockDecoration(type, glslangIntermediate->usingStorageBuffer())); + + if (qualifier.hasHitObjectShaderRecordNV()) + builder.addDecoration(spvType, spv::DecorationHitObjectShaderRecordBufferNV); } // Turn the expression forming the array size into an id. @@ -5253,6 +5370,10 @@ void TGlslangToSpvTraverser::collectRayTracingLinkerObjects() set = 1; break; + case glslang::EvqHitObjectAttrNV: + set = 2; + break; + default: set = -1; } @@ -6897,6 +7018,83 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpConvUvec2ToAccStruct: unaryOp = spv::OpConvertUToAccelerationStructureKHR; break; + + case glslang::EOpHitObjectIsEmptyNV: + unaryOp = spv::OpHitObjectIsEmptyNV; + break; + + case glslang::EOpHitObjectIsMissNV: + unaryOp = spv::OpHitObjectIsMissNV; + break; + + case glslang::EOpHitObjectIsHitNV: + unaryOp = spv::OpHitObjectIsHitNV; + break; + + case glslang::EOpHitObjectGetObjectRayOriginNV: + unaryOp = spv::OpHitObjectGetObjectRayOriginNV; + break; + + case glslang::EOpHitObjectGetObjectRayDirectionNV: + unaryOp = spv::OpHitObjectGetObjectRayDirectionNV; + break; + + case glslang::EOpHitObjectGetWorldRayOriginNV: + unaryOp = spv::OpHitObjectGetWorldRayOriginNV; + break; + + case glslang::EOpHitObjectGetWorldRayDirectionNV: + unaryOp = spv::OpHitObjectGetWorldRayDirectionNV; + break; + + case glslang::EOpHitObjectGetObjectToWorldNV: + unaryOp = spv::OpHitObjectGetObjectToWorldNV; + break; + + case glslang::EOpHitObjectGetWorldToObjectNV: + unaryOp = spv::OpHitObjectGetWorldToObjectNV; + break; + + case glslang::EOpHitObjectGetRayTMinNV: + unaryOp = spv::OpHitObjectGetRayTMinNV; + break; + + case glslang::EOpHitObjectGetRayTMaxNV: + unaryOp = spv::OpHitObjectGetRayTMaxNV; + break; + + case glslang::EOpHitObjectGetPrimitiveIndexNV: + unaryOp = spv::OpHitObjectGetPrimitiveIndexNV; + break; + + case glslang::EOpHitObjectGetInstanceIdNV: + unaryOp = spv::OpHitObjectGetInstanceIdNV; + break; + + case glslang::EOpHitObjectGetInstanceCustomIndexNV: + unaryOp = spv::OpHitObjectGetInstanceCustomIndexNV; + break; + + case glslang::EOpHitObjectGetGeometryIndexNV: + unaryOp = spv::OpHitObjectGetGeometryIndexNV; + break; + + case glslang::EOpHitObjectGetHitKindNV: + unaryOp = spv::OpHitObjectGetHitKindNV; + break; + + case glslang::EOpHitObjectGetCurrentTimeNV: + unaryOp = spv::OpHitObjectGetCurrentTimeNV; + break; + + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: + unaryOp = spv::OpHitObjectGetShaderBindingTableRecordIndexNV; + break; + + case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: + unaryOp = spv::OpHitObjectGetShaderRecordBufferHandleNV; + break; + #endif case glslang::EOpCopyObject: @@ -8638,6 +8836,122 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpCooperativeMatrixMulAdd: opCode = spv::OpCooperativeMatrixMulAddNV; break; + case glslang::EOpHitObjectTraceRayNV: + builder.createNoResultOp(spv::OpHitObjectTraceRayNV, operands); + return 0; + case glslang::EOpHitObjectTraceRayMotionNV: + builder.createNoResultOp(spv::OpHitObjectTraceRayMotionNV, operands); + return 0; + case glslang::EOpHitObjectRecordHitNV: + builder.createNoResultOp(spv::OpHitObjectRecordHitNV, operands); + return 0; + case glslang::EOpHitObjectRecordHitMotionNV: + builder.createNoResultOp(spv::OpHitObjectRecordHitMotionNV, operands); + return 0; + case glslang::EOpHitObjectRecordHitWithIndexNV: + builder.createNoResultOp(spv::OpHitObjectRecordHitWithIndexNV, operands); + return 0; + case glslang::EOpHitObjectRecordHitWithIndexMotionNV: + builder.createNoResultOp(spv::OpHitObjectRecordHitWithIndexMotionNV, operands); + return 0; + case glslang::EOpHitObjectRecordMissNV: + builder.createNoResultOp(spv::OpHitObjectRecordMissNV, operands); + return 0; + case glslang::EOpHitObjectRecordMissMotionNV: + builder.createNoResultOp(spv::OpHitObjectRecordMissMotionNV, operands); + return 0; + case glslang::EOpHitObjectExecuteShaderNV: + builder.createNoResultOp(spv::OpHitObjectExecuteShaderNV, operands); + return 0; + case glslang::EOpHitObjectIsEmptyNV: + typeId = builder.makeBoolType(); + opCode = spv::OpHitObjectIsEmptyNV; + break; + case glslang::EOpHitObjectIsMissNV: + typeId = builder.makeBoolType(); + opCode = spv::OpHitObjectIsMissNV; + break; + case glslang::EOpHitObjectIsHitNV: + typeId = builder.makeBoolType(); + opCode = spv::OpHitObjectIsHitNV; + break; + case glslang::EOpHitObjectGetRayTMinNV: + typeId = builder.makeFloatType(32); + opCode = spv::OpHitObjectGetRayTMinNV; + break; + case glslang::EOpHitObjectGetRayTMaxNV: + typeId = builder.makeFloatType(32); + opCode = spv::OpHitObjectGetRayTMaxNV; + break; + case glslang::EOpHitObjectGetObjectRayOriginNV: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpHitObjectGetObjectRayOriginNV; + break; + case glslang::EOpHitObjectGetObjectRayDirectionNV: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpHitObjectGetObjectRayDirectionNV; + break; + case glslang::EOpHitObjectGetWorldRayOriginNV: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpHitObjectGetWorldRayOriginNV; + break; + case glslang::EOpHitObjectGetWorldRayDirectionNV: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpHitObjectGetWorldRayDirectionNV; + break; + case glslang::EOpHitObjectGetWorldToObjectNV: + typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); + opCode = spv::OpHitObjectGetWorldToObjectNV; + break; + case glslang::EOpHitObjectGetObjectToWorldNV: + typeId = builder.makeMatrixType(builder.makeFloatType(32), 4, 3); + opCode = spv::OpHitObjectGetObjectToWorldNV; + break; + case glslang::EOpHitObjectGetInstanceCustomIndexNV: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::OpHitObjectGetInstanceCustomIndexNV; + break; + case glslang::EOpHitObjectGetInstanceIdNV: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::OpHitObjectGetInstanceIdNV; + break; + case glslang::EOpHitObjectGetGeometryIndexNV: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::OpHitObjectGetGeometryIndexNV; + break; + case glslang::EOpHitObjectGetPrimitiveIndexNV: + typeId = builder.makeIntegerType(32, 1); + opCode = spv::OpHitObjectGetPrimitiveIndexNV; + break; + case glslang::EOpHitObjectGetHitKindNV: + typeId = builder.makeIntegerType(32, 0); + opCode = spv::OpHitObjectGetHitKindNV; + break; + case glslang::EOpHitObjectGetCurrentTimeNV: + typeId = builder.makeFloatType(32); + opCode = spv::OpHitObjectGetCurrentTimeNV; + break; + case glslang::EOpHitObjectGetShaderBindingTableRecordIndexNV: + typeId = builder.makeIntegerType(32, 0); + opCode = spv::OpHitObjectGetShaderBindingTableRecordIndexNV; + return 0; + case glslang::EOpHitObjectGetAttributesNV: + builder.createNoResultOp(spv::OpHitObjectGetAttributesNV, operands); + return 0; + case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: + typeId = builder.makeVectorType(builder.makeUintType(32), 2); + opCode = spv::OpHitObjectGetShaderRecordBufferHandleNV; + break; + case glslang::EOpReorderThreadNV: { + if (operands.size() == 2) { + builder.createNoResultOp(spv::OpReorderThreadWithHintNV, operands); + } else { + builder.createNoResultOp(spv::OpReorderThreadWithHitObjectNV, operands); + } + return 0; + + } + break; #endif // GLSLANG_WEB default: return 0; @@ -8947,13 +9261,17 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol } if (symbol->getQualifier().hasLocation()) { - if (!(glslangIntermediate->isRayTracingStage() && glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing) + if (!(glslangIntermediate->isRayTracingStage() && + (glslangIntermediate->IsRequestedExtension(glslang::E_GL_EXT_ray_tracing) || + glslangIntermediate->IsRequestedExtension(glslang::E_GL_NV_shader_invocation_reorder)) && (builder.getStorageClass(id) == spv::StorageClassRayPayloadKHR || builder.getStorageClass(id) == spv::StorageClassIncomingRayPayloadKHR || builder.getStorageClass(id) == spv::StorageClassCallableDataKHR || - builder.getStorageClass(id) == spv::StorageClassIncomingCallableDataKHR))) { - // Location values are used to link TraceRayKHR and ExecuteCallableKHR to corresponding variables - // but are not valid in SPIRV since they are supported only for Input/Output Storage classes. + builder.getStorageClass(id) == spv::StorageClassIncomingCallableDataKHR || + builder.getStorageClass(id) == spv::StorageClassHitObjectAttributeNV))) { + // Location values are used to link TraceRayKHR/ExecuteCallableKHR/HitObjectGetAttributesNV + // to corresponding variables but are not valid in SPIRV since they are supported only + // for Input/Output Storage classes. builder.addDecoration(id, spv::DecorationLocation, symbol->getQualifier().layoutLocation); } } diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 7b2d703670..bcbaf24efa 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1176,6 +1176,21 @@ Id Builder::makeRayQueryType() return type->getResultId(); } + +Id Builder::makeHitObjectNVType() +{ + Instruction *type; + if (groupedTypes[OpTypeHitObjectNV].size() == 0) { + type = new Instruction(getUniqueId(), NoType, OpTypeHitObjectNV); + groupedTypes[OpTypeHitObjectNV].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + } else { + type = groupedTypes[OpTypeHitObjectNV].back(); + } + + return type->getResultId(); +} #endif Id Builder::getDerefTypeId(Id resultId) const diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index b75eab8913..02e9cf4005 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -240,6 +240,8 @@ class Builder { Id makeAccelerationStructureType(); // rayQueryEXT type Id makeRayQueryType(); + // hitObjectNV type + Id makeHitObjectNVType(); // For querying about types. Id getTypeId(Id resultId) const { return module.getTypeId(resultId); } diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 1534c6895b..87ab120321 100644 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -246,6 +246,7 @@ const char* StorageClassString(int StorageClass) case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; + case StorageClassHitObjectAttributeNV: return "HitObjectAttributeNV"; default: return "Bad"; } } @@ -320,6 +321,8 @@ const char* DecorationString(int decoration) case DecorationHlslSemanticGOOGLE: return "DecorationHlslSemanticGOOGLE"; case DecorationRestrictPointerEXT: return "DecorationRestrictPointerEXT"; case DecorationAliasedPointerEXT: return "DecorationAliasedPointerEXT"; + + case DecorationHitObjectShaderRecordBufferNV: return "DecorationHitObjectShaderRecordBufferNV"; } } @@ -1006,6 +1009,7 @@ const char* CapabilityString(int info) case CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR: return "CapabilityWorkgroupMemoryExplicitLayout16BitAccessKHR"; case CapabilityCoreBuiltinsARM: return "CoreBuiltinsARM"; + case CapabilityShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; default: return "Bad"; } } @@ -1460,6 +1464,40 @@ const char* OpcodeString(int op) case OpBeginInvocationInterlockEXT: return "OpBeginInvocationInterlockEXT"; case OpEndInvocationInterlockEXT: return "OpEndInvocationInterlockEXT"; + case OpTypeHitObjectNV: return "OpTypeHitObjectNV"; + case OpHitObjectTraceRayNV: return "OpHitObjectTraceRayNV"; + case OpHitObjectTraceRayMotionNV: return "OpHitObjectTraceRayMotionNV"; + case OpHitObjectRecordHitNV: return "OpHitObjectRecordHitNV"; + case OpHitObjectRecordHitMotionNV: return "OpHitObjectRecordHitMotionNV"; + case OpHitObjectRecordHitWithIndexNV: return "OpHitObjectRecordHitWithIndexNV"; + case OpHitObjectRecordHitWithIndexMotionNV: return "OpHitObjectRecordHitWithIndexMotionNV"; + case OpHitObjectRecordMissNV: return "OpHitObjectRecordMissNV"; + case OpHitObjectRecordMissMotionNV: return "OpHitObjectRecordMissMotionNV"; + case OpHitObjectRecordEmptyNV: return "OpHitObjectRecordEmptyNV"; + case OpHitObjectExecuteShaderNV: return "OpHitObjectExecuteShaderNV"; + case OpReorderThreadWithHintNV: return "OpReorderThreadWithHintNV"; + case OpReorderThreadWithHitObjectNV: return "OpReorderThreadWithHitObjectNV"; + case OpHitObjectGetCurrentTimeNV: return "OpHitObjectGetCurrentTimeNV"; + case OpHitObjectGetAttributesNV: return "OpHitObjectGetAttributesNV"; + case OpHitObjectGetHitKindNV: return "OpHitObjectGetFrontFaceNV"; + case OpHitObjectGetPrimitiveIndexNV: return "OpHitObjectGetPrimitiveIndexNV"; + case OpHitObjectGetGeometryIndexNV: return "OpHitObjectGetGeometryIndexNV"; + case OpHitObjectGetInstanceIdNV: return "OpHitObjectGetInstanceIdNV"; + case OpHitObjectGetInstanceCustomIndexNV: return "OpHitObjectGetInstanceCustomIndexNV"; + case OpHitObjectGetObjectRayDirectionNV: return "OpHitObjectGetObjectRayDirectionNV"; + case OpHitObjectGetObjectRayOriginNV: return "OpHitObjectGetObjectRayOriginNV"; + case OpHitObjectGetWorldRayDirectionNV: return "OpHitObjectGetWorldRayDirectionNV"; + case OpHitObjectGetWorldRayOriginNV: return "OpHitObjectGetWorldRayOriginNV"; + case OpHitObjectGetWorldToObjectNV: return "OpHitObjectGetWorldToObjectNV"; + case OpHitObjectGetObjectToWorldNV: return "OpHitObjectGetObjectToWorldNV"; + case OpHitObjectGetRayTMaxNV: return "OpHitObjectGetRayTMaxNV"; + case OpHitObjectGetRayTMinNV: return "OpHitObjectGetRayTMinNV"; + case OpHitObjectIsEmptyNV: return "OpHitObjectIsEmptyNV"; + case OpHitObjectIsHitNV: return "OpHitObjectIsHitNV"; + case OpHitObjectIsMissNV: return "OpHitObjectIsMissNV"; + case OpHitObjectGetShaderBindingTableRecordIndexNV: return "OpHitObjectGetShaderBindingTableRecordIndexNV"; + case OpHitObjectGetShaderRecordBufferHandleNV: return "OpHitObjectGetShaderRecordBufferHandleNV"; + default: return "Bad"; } @@ -3037,6 +3075,191 @@ void Parameterize() InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false); InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'"); + + InstructionDesc[OpTypeHitObjectNV].setResultAndType(true, false); + + InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].setResultAndType(true, true); + + InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Hint'"); + InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Bits'"); + InstructionDesc[OpReorderThreadWithHintNV].setResultAndType(false, false); + + InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Hint'"); + InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Bits'"); + InstructionDesc[OpReorderThreadWithHitObjectNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectGetCurrentTimeNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetCurrentTimeNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetHitKindNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetHitKindNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetPrimitiveIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetPrimitiveIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetGeometryIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetGeometryIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetInstanceIdNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetInstanceIdNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetObjectRayDirectionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetObjectRayDirectionNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetObjectRayOriginNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetObjectRayOriginNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetWorldRayDirectionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetWorldRayDirectionNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetWorldRayOriginNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetWorldRayOriginNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetWorldToObjectNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetWorldToObjectNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetObjectToWorldNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetObjectToWorldNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetRayTMaxNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetRayTMaxNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetRayTMinNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetRayTMinNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectIsEmptyNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectIsEmptyNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectIsHitNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectIsHitNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectIsMissNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectIsMissNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObjectAttribute'"); + InstructionDesc[OpHitObjectGetAttributesNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpHitObjectExecuteShaderNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Current Time'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'SBT Record Index'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'SBT Record Index'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Current Time'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'SBT Index'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordMissNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'SBT Index'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Current Time'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordEmptyNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordEmptyNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpHitObjectTraceRayNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Time'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false); } }; // end spv namespace diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 73c372b29e..768a6f564c 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -223,6 +223,7 @@ enum StorageClass { StorageClassShaderRecordBufferNV = 5343, StorageClassPhysicalStorageBuffer = 5349, StorageClassPhysicalStorageBufferEXT = 5349, + StorageClassHitObjectAttributeNV = 5385, StorageClassTaskPayloadWorkgroupEXT = 5402, StorageClassCodeSectionINTEL = 5605, StorageClassDeviceOnlyINTEL = 5936, @@ -518,6 +519,7 @@ enum Decoration { DecorationRestrictPointerEXT = 5355, DecorationAliasedPointer = 5356, DecorationAliasedPointerEXT = 5356, + DecorationHitObjectShaderRecordBufferNV = 5386, DecorationBindlessSamplerNV = 5398, DecorationBindlessImageNV = 5399, DecorationBoundSamplerNV = 5400, @@ -1048,6 +1050,7 @@ enum Capability { CapabilityFragmentShaderPixelInterlockEXT = 5378, CapabilityDemoteToHelperInvocation = 5379, CapabilityDemoteToHelperInvocationEXT = 5379, + CapabilityShaderInvocationReorderNV = 5383, CapabilityBindlessTextureNV = 5390, CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupBufferBlockIOINTEL = 5569, @@ -1594,6 +1597,39 @@ enum Op { OpFragmentMaskFetchAMD = 5011, OpFragmentFetchAMD = 5012, OpReadClockKHR = 5056, + OpHitObjectRecordHitMotionNV = 5249, + OpHitObjectRecordHitWithIndexMotionNV = 5250, + OpHitObjectRecordMissMotionNV = 5251, + OpHitObjectGetWorldToObjectNV = 5252, + OpHitObjectGetObjectToWorldNV = 5253, + OpHitObjectGetObjectRayDirectionNV = 5254, + OpHitObjectGetObjectRayOriginNV = 5255, + OpHitObjectTraceRayMotionNV = 5256, + OpHitObjectGetShaderRecordBufferHandleNV = 5257, + OpHitObjectGetShaderBindingTableRecordIndexNV = 5258, + OpHitObjectRecordEmptyNV = 5259, + OpHitObjectTraceRayNV = 5260, + OpHitObjectRecordHitNV = 5261, + OpHitObjectRecordHitWithIndexNV = 5262, + OpHitObjectRecordMissNV = 5263, + OpHitObjectExecuteShaderNV = 5264, + OpHitObjectGetCurrentTimeNV = 5265, + OpHitObjectGetAttributesNV = 5266, + OpHitObjectGetHitKindNV = 5267, + OpHitObjectGetPrimitiveIndexNV = 5268, + OpHitObjectGetGeometryIndexNV = 5269, + OpHitObjectGetInstanceIdNV = 5270, + OpHitObjectGetInstanceCustomIndexNV = 5271, + OpHitObjectGetWorldRayDirectionNV = 5272, + OpHitObjectGetWorldRayOriginNV = 5273, + OpHitObjectGetRayTMaxNV = 5274, + OpHitObjectGetRayTMinNV = 5275, + OpHitObjectIsEmptyNV = 5276, + OpHitObjectIsHitNV = 5277, + OpHitObjectIsMissNV = 5278, + OpReorderThreadWithHitObjectNV = 5279, + OpReorderThreadWithHintNV = 5280, + OpTypeHitObjectNV = 5281, OpImageSampleFootprintNV = 5283, OpEmitMeshTasksEXT = 5294, OpSetMeshOutputsEXT = 5295, diff --git a/Test/baseResults/spv.nv.hitobject-allops.rchit.out b/Test/baseResults/spv.nv.hitobject-allops.rchit.out new file mode 100644 index 0000000000..15e6d4168e --- /dev/null +++ b/Test/baseResults/spv.nv.hitobject-allops.rchit.out @@ -0,0 +1,215 @@ +spv.nv.hitobject-allops.rchit +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 116 + + Capability RayTracingKHR + Capability ShaderInvocationReorderNV + Extension "SPV_KHR_ray_tracing" + Extension "SPV_NV_shader_invocation_reorder" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint ClosestHitKHR 4 "main" 9 14 22 25 36 42 48 52 53 64 + Source GLSL 460 + SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_NV_ray_tracing_motion_blur" + SourceExtension "GL_NV_shader_invocation_reorder" + Name 4 "main" + Name 9 "attr" + Name 12 "hBlock" + MemberName 12(hBlock) 0 "attrval" + Name 14 "" + Name 22 "hObj" + Name 25 "as" + Name 36 "payload" + Name 40 "pBlock" + MemberName 40(pBlock) 0 "val1" + MemberName 40(pBlock) 1 "val2" + Name 42 "" + Name 48 "hObjHit" + Name 52 "hObjNop" + Name 53 "hObjMiss" + Name 62 "block" + MemberName 62(block) 0 "op" + Name 64 "" + Name 79 "tmin" + Name 81 "tmax" + Name 84 "orig" + Name 86 "dir" + Name 88 "oorig" + Name 90 "odir" + Name 94 "otw" + Name 96 "wto" + Name 99 "cid" + Name 101 "iid" + Name 103 "pid" + Name 105 "gid" + Name 108 "hkind" + Name 112 "handle" + Name 114 "rid" + Decorate 12(hBlock) Block + Decorate 25(as) DescriptorSet 0 + Decorate 25(as) Binding 0 + Decorate 40(pBlock) Block + MemberDecorate 62(block) 0 Offset 0 + Decorate 62(block) Block + Decorate 64 DescriptorSet 0 + Decorate 64 Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypePointer HitObjectAttributeNV 7(fvec2) + 9(attr): 8(ptr) Variable HitObjectAttributeNV + 10: 6(float) Constant 1065353216 + 11: 7(fvec2) ConstantComposite 10 10 + 12(hBlock): TypeStruct 6(float) + 13: TypePointer HitObjectAttributeNV 12(hBlock) + 14: 13(ptr) Variable HitObjectAttributeNV + 15: TypeInt 32 1 + 16: 15(int) Constant 0 + 17: 6(float) Constant 1073741824 + 18: TypePointer HitObjectAttributeNV 6(float) + 20: TypeHitObjectNV + 21: TypePointer Private 20 + 22(hObj): 21(ptr) Variable Private + 23: TypeAccelerationStructureKHR + 24: TypePointer UniformConstant 23 + 25(as): 24(ptr) Variable UniformConstant + 27: TypeInt 32 0 + 28: 27(int) Constant 1 + 29: TypeVector 6(float) 3 + 30: 6(float) Constant 1056964608 + 31: 29(fvec3) ConstantComposite 30 30 30 + 32: 29(fvec3) ConstantComposite 10 10 10 + 33: 15(int) Constant 1 + 34: TypeVector 6(float) 4 + 35: TypePointer RayPayloadKHR 34(fvec4) + 36(payload): 35(ptr) Variable RayPayloadKHR + 38: 6(float) Constant 1092616192 + 39: 15(int) Constant 2 + 40(pBlock): TypeStruct 7(fvec2) 7(fvec2) + 41: TypePointer RayPayloadKHR 40(pBlock) + 42: 41(ptr) Variable RayPayloadKHR + 44: 27(int) Constant 2 + 45: 29(fvec3) ConstantComposite 17 17 17 + 47: 6(float) Constant 1082130432 + 48(hObjHit): 21(ptr) Variable Private + 50: 15(int) Constant 3 + 52(hObjNop): 21(ptr) Variable Private + 53(hObjMiss): 21(ptr) Variable Private + 54: 6(float) Constant 1069547520 + 55: 29(fvec3) ConstantComposite 54 54 54 + 56: 6(float) Constant 1084227584 + 57: 6(float) Constant 1090519040 + 58: TypeBool + 62(block): TypeStruct 6(float) + 63: TypePointer StorageBuffer 62(block) + 64: 63(ptr) Variable StorageBuffer + 65: TypePointer StorageBuffer 6(float) + 76: 6(float) Constant 1077936128 + 78: TypePointer Function 6(float) + 83: TypePointer Function 29(fvec3) + 92: TypeMatrix 29(fvec3) 4 + 93: TypePointer Function 92 + 98: TypePointer Function 15(int) + 107: TypePointer Function 27(int) + 110: TypeVector 27(int) 2 + 111: TypePointer Function 110(ivec2) + 4(main): 2 Function None 3 + 5: Label + 79(tmin): 78(ptr) Variable Function + 81(tmax): 78(ptr) Variable Function + 84(orig): 83(ptr) Variable Function + 86(dir): 83(ptr) Variable Function + 88(oorig): 83(ptr) Variable Function + 90(odir): 83(ptr) Variable Function + 94(otw): 93(ptr) Variable Function + 96(wto): 93(ptr) Variable Function + 99(cid): 98(ptr) Variable Function + 101(iid): 98(ptr) Variable Function + 103(pid): 98(ptr) Variable Function + 105(gid): 98(ptr) Variable Function + 108(hkind): 107(ptr) Variable Function + 112(handle): 111(ptr) Variable Function + 114(rid): 107(ptr) Variable Function + Store 9(attr) 11 + 19: 18(ptr) AccessChain 14 16 + Store 19 17 + 26: 23 Load 25(as) + HitObjectTraceRayNV 22(hObj) 26 28 28 28 28 28 31 30 32 10 36(payload) + 37: 23 Load 25(as) + HitObjectTraceRayMotionNV 22(hObj) 37 28 28 28 28 28 31 30 32 10 38 42 + 43: 23 Load 25(as) + HitObjectRecordHitNV 22(hObj) 43 33 33 33 44 44 44 32 10 45 17 9(attr) + 46: 23 Load 25(as) + HitObjectRecordHitMotionNV 22(hObj) 46 33 33 33 44 44 44 32 10 45 17 47 9(attr) + 49: 23 Load 25(as) + HitObjectRecordHitWithIndexNV 48(hObjHit) 49 33 33 33 44 44 32 10 45 17 14 + 51: 23 Load 25(as) + HitObjectRecordHitWithIndexMotionNV 48(hObjHit) 51 33 33 33 44 44 32 10 45 17 47 14 + HitObjectRecordEmptyNV 52(hObjNop) + HitObjectRecordMissNV 53(hObjMiss) 28 31 17 55 56 + HitObjectRecordMissMotionNV 53(hObjMiss) 28 31 17 55 56 57 + HitObjectExecuteShaderNV 48(hObjHit) 42 + 59: 58(bool) HitObjectIsHitNV 22(hObj) + SelectionMerge 61 None + BranchConditional 59 60 67 + 60: Label + 66: 65(ptr) AccessChain 64 16 + Store 66 10 + Branch 61 + 67: Label + 68: 58(bool) HitObjectIsMissNV 22(hObj) + SelectionMerge 70 None + BranchConditional 68 69 72 + 69: Label + 71: 65(ptr) AccessChain 64 16 + Store 71 17 + Branch 70 + 72: Label + 73: 58(bool) HitObjectIsEmptyNV 22(hObj) + SelectionMerge 75 None + BranchConditional 73 74 75 + 74: Label + 77: 65(ptr) AccessChain 64 16 + Store 77 76 + Branch 75 + 75: Label + Branch 70 + 70: Label + Branch 61 + 61: Label + 80: 6(float) HitObjectGetRayTMinNV 48(hObjHit) + Store 79(tmin) 80 + 82: 6(float) HitObjectGetRayTMaxNV 48(hObjHit) + Store 81(tmax) 82 + 85: 29(fvec3) HitObjectGetWorldRayOriginNV 48(hObjHit) + Store 84(orig) 85 + 87: 29(fvec3) HitObjectGetWorldRayDirectionNV 48(hObjHit) + Store 86(dir) 87 + 89: 29(fvec3) HitObjectGetObjectRayOriginNV 48(hObjHit) + Store 88(oorig) 89 + 91: 29(fvec3) HitObjectGetObjectRayDirectionNV 48(hObjHit) + Store 90(odir) 91 + 95: 92 HitObjectGetObjectToWorldNV 48(hObjHit) + Store 94(otw) 95 + 97: 92 HitObjectGetWorldToObjectNV 48(hObjHit) + Store 96(wto) 97 + 100: 15(int) HitObjectGetInstanceCustomIndexNV 53(hObjMiss) + Store 99(cid) 100 + 102: 15(int) HitObjectGetInstanceIdNV 52(hObjNop) + Store 101(iid) 102 + 104: 15(int) HitObjectGetPrimitiveIndexNV 22(hObj) + Store 103(pid) 104 + 106: 15(int) HitObjectGetGeometryIndexNV 22(hObj) + Store 105(gid) 106 + 109: 27(int) HitObjectGetFrontFaceNV 22(hObj) + Store 108(hkind) 109 + HitObjectGetAttributesNV 22(hObj) 9(attr) + 113: 110(ivec2) HitObjectGetShaderRecordBufferHandleNV 22(hObj) + Store 112(handle) 113 + 115: 27(int) HitObjectGetShaderBindingTableRecordIndexNV 22(hObj) + Store 114(rid) 115 + Return + FunctionEnd diff --git a/Test/baseResults/spv.nv.hitobject-allops.rgen.out b/Test/baseResults/spv.nv.hitobject-allops.rgen.out new file mode 100644 index 0000000000..d395500a8c --- /dev/null +++ b/Test/baseResults/spv.nv.hitobject-allops.rgen.out @@ -0,0 +1,219 @@ +spv.nv.hitobject-allops.rgen +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 117 + + Capability RayTracingKHR + Capability ShaderInvocationReorderNV + Extension "SPV_KHR_ray_tracing" + Extension "SPV_NV_shader_invocation_reorder" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 4 "main" 9 14 22 25 36 42 48 52 53 64 + Source GLSL 460 + SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_NV_ray_tracing_motion_blur" + SourceExtension "GL_NV_shader_invocation_reorder" + Name 4 "main" + Name 9 "attr" + Name 12 "hBlock" + MemberName 12(hBlock) 0 "attrval" + Name 14 "" + Name 22 "hObj" + Name 25 "as" + Name 36 "payload" + Name 40 "pBlock" + MemberName 40(pBlock) 0 "val1" + MemberName 40(pBlock) 1 "val2" + Name 42 "" + Name 48 "hObjHit" + Name 52 "hObjNop" + Name 53 "hObjMiss" + Name 62 "block" + MemberName 62(block) 0 "op" + Name 64 "" + Name 79 "tmin" + Name 81 "tmax" + Name 84 "orig" + Name 86 "dir" + Name 88 "oorig" + Name 90 "odir" + Name 94 "otw" + Name 96 "wto" + Name 99 "cid" + Name 101 "iid" + Name 103 "pid" + Name 105 "gid" + Name 108 "hkind" + Name 112 "handle" + Name 114 "rid" + Decorate 12(hBlock) Block + Decorate 25(as) DescriptorSet 0 + Decorate 25(as) Binding 0 + Decorate 40(pBlock) Block + MemberDecorate 62(block) 0 Offset 0 + Decorate 62(block) Block + Decorate 64 DescriptorSet 0 + Decorate 64 Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypePointer HitObjectAttributeNV 7(fvec2) + 9(attr): 8(ptr) Variable HitObjectAttributeNV + 10: 6(float) Constant 1065353216 + 11: 7(fvec2) ConstantComposite 10 10 + 12(hBlock): TypeStruct 6(float) + 13: TypePointer HitObjectAttributeNV 12(hBlock) + 14: 13(ptr) Variable HitObjectAttributeNV + 15: TypeInt 32 1 + 16: 15(int) Constant 0 + 17: 6(float) Constant 1073741824 + 18: TypePointer HitObjectAttributeNV 6(float) + 20: TypeHitObjectNV + 21: TypePointer Private 20 + 22(hObj): 21(ptr) Variable Private + 23: TypeAccelerationStructureKHR + 24: TypePointer UniformConstant 23 + 25(as): 24(ptr) Variable UniformConstant + 27: TypeInt 32 0 + 28: 27(int) Constant 1 + 29: TypeVector 6(float) 3 + 30: 6(float) Constant 1056964608 + 31: 29(fvec3) ConstantComposite 30 30 30 + 32: 29(fvec3) ConstantComposite 10 10 10 + 33: 15(int) Constant 1 + 34: TypeVector 6(float) 4 + 35: TypePointer RayPayloadKHR 34(fvec4) + 36(payload): 35(ptr) Variable RayPayloadKHR + 38: 6(float) Constant 1092616192 + 39: 15(int) Constant 2 + 40(pBlock): TypeStruct 7(fvec2) 7(fvec2) + 41: TypePointer RayPayloadKHR 40(pBlock) + 42: 41(ptr) Variable RayPayloadKHR + 44: 27(int) Constant 2 + 45: 29(fvec3) ConstantComposite 17 17 17 + 47: 6(float) Constant 1082130432 + 48(hObjHit): 21(ptr) Variable Private + 50: 15(int) Constant 3 + 52(hObjNop): 21(ptr) Variable Private + 53(hObjMiss): 21(ptr) Variable Private + 54: 6(float) Constant 1069547520 + 55: 29(fvec3) ConstantComposite 54 54 54 + 56: 6(float) Constant 1084227584 + 57: 6(float) Constant 1090519040 + 58: TypeBool + 62(block): TypeStruct 6(float) + 63: TypePointer StorageBuffer 62(block) + 64: 63(ptr) Variable StorageBuffer + 65: TypePointer StorageBuffer 6(float) + 76: 6(float) Constant 1077936128 + 78: TypePointer Function 6(float) + 83: TypePointer Function 29(fvec3) + 92: TypeMatrix 29(fvec3) 4 + 93: TypePointer Function 92 + 98: TypePointer Function 15(int) + 107: TypePointer Function 27(int) + 110: TypeVector 27(int) 2 + 111: TypePointer Function 110(ivec2) + 116: 27(int) Constant 4 + 4(main): 2 Function None 3 + 5: Label + 79(tmin): 78(ptr) Variable Function + 81(tmax): 78(ptr) Variable Function + 84(orig): 83(ptr) Variable Function + 86(dir): 83(ptr) Variable Function + 88(oorig): 83(ptr) Variable Function + 90(odir): 83(ptr) Variable Function + 94(otw): 93(ptr) Variable Function + 96(wto): 93(ptr) Variable Function + 99(cid): 98(ptr) Variable Function + 101(iid): 98(ptr) Variable Function + 103(pid): 98(ptr) Variable Function + 105(gid): 98(ptr) Variable Function + 108(hkind): 107(ptr) Variable Function + 112(handle): 111(ptr) Variable Function + 114(rid): 107(ptr) Variable Function + Store 9(attr) 11 + 19: 18(ptr) AccessChain 14 16 + Store 19 17 + 26: 23 Load 25(as) + HitObjectTraceRayNV 22(hObj) 26 28 28 28 28 28 31 30 32 10 36(payload) + 37: 23 Load 25(as) + HitObjectTraceRayMotionNV 22(hObj) 37 28 28 28 28 28 31 30 32 10 38 42 + 43: 23 Load 25(as) + HitObjectRecordHitNV 22(hObj) 43 33 33 33 44 44 44 32 10 45 17 9(attr) + 46: 23 Load 25(as) + HitObjectRecordHitMotionNV 22(hObj) 46 33 33 33 44 44 44 32 10 45 17 47 9(attr) + 49: 23 Load 25(as) + HitObjectRecordHitWithIndexNV 48(hObjHit) 49 33 33 33 44 44 32 10 45 17 14 + 51: 23 Load 25(as) + HitObjectRecordHitWithIndexMotionNV 48(hObjHit) 51 33 33 33 44 44 32 10 45 17 47 14 + HitObjectRecordEmptyNV 52(hObjNop) + HitObjectRecordMissNV 53(hObjMiss) 28 31 17 55 56 + HitObjectRecordMissMotionNV 53(hObjMiss) 28 31 17 55 56 57 + HitObjectExecuteShaderNV 48(hObjHit) 36(payload) + 59: 58(bool) HitObjectIsHitNV 22(hObj) + SelectionMerge 61 None + BranchConditional 59 60 67 + 60: Label + 66: 65(ptr) AccessChain 64 16 + Store 66 10 + Branch 61 + 67: Label + 68: 58(bool) HitObjectIsMissNV 22(hObj) + SelectionMerge 70 None + BranchConditional 68 69 72 + 69: Label + 71: 65(ptr) AccessChain 64 16 + Store 71 17 + Branch 70 + 72: Label + 73: 58(bool) HitObjectIsEmptyNV 22(hObj) + SelectionMerge 75 None + BranchConditional 73 74 75 + 74: Label + 77: 65(ptr) AccessChain 64 16 + Store 77 76 + Branch 75 + 75: Label + Branch 70 + 70: Label + Branch 61 + 61: Label + 80: 6(float) HitObjectGetRayTMinNV 48(hObjHit) + Store 79(tmin) 80 + 82: 6(float) HitObjectGetRayTMaxNV 48(hObjHit) + Store 81(tmax) 82 + 85: 29(fvec3) HitObjectGetWorldRayOriginNV 48(hObjHit) + Store 84(orig) 85 + 87: 29(fvec3) HitObjectGetWorldRayDirectionNV 48(hObjHit) + Store 86(dir) 87 + 89: 29(fvec3) HitObjectGetObjectRayOriginNV 48(hObjHit) + Store 88(oorig) 89 + 91: 29(fvec3) HitObjectGetObjectRayDirectionNV 48(hObjHit) + Store 90(odir) 91 + 95: 92 HitObjectGetObjectToWorldNV 48(hObjHit) + Store 94(otw) 95 + 97: 92 HitObjectGetWorldToObjectNV 48(hObjHit) + Store 96(wto) 97 + 100: 15(int) HitObjectGetInstanceCustomIndexNV 53(hObjMiss) + Store 99(cid) 100 + 102: 15(int) HitObjectGetInstanceIdNV 52(hObjNop) + Store 101(iid) 102 + 104: 15(int) HitObjectGetPrimitiveIndexNV 22(hObj) + Store 103(pid) 104 + 106: 15(int) HitObjectGetGeometryIndexNV 22(hObj) + Store 105(gid) 106 + 109: 27(int) HitObjectGetFrontFaceNV 22(hObj) + Store 108(hkind) 109 + HitObjectGetAttributesNV 22(hObj) 9(attr) + 113: 110(ivec2) HitObjectGetShaderRecordBufferHandleNV 22(hObj) + Store 112(handle) 113 + 115: 27(int) HitObjectGetShaderBindingTableRecordIndexNV 22(hObj) + Store 114(rid) 115 + ReorderThreadWithHintNV 116 116 + ReorderThreadWithHitObjectNV 48(hObjHit) + ReorderThreadWithHitObjectNV 48(hObjHit) 116 44 + Return + FunctionEnd diff --git a/Test/baseResults/spv.nv.hitobject-allops.rmiss.out b/Test/baseResults/spv.nv.hitobject-allops.rmiss.out new file mode 100644 index 0000000000..970d08a18d --- /dev/null +++ b/Test/baseResults/spv.nv.hitobject-allops.rmiss.out @@ -0,0 +1,215 @@ +spv.nv.hitobject-allops.rmiss +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 116 + + Capability RayTracingKHR + Capability ShaderInvocationReorderNV + Extension "SPV_KHR_ray_tracing" + Extension "SPV_NV_shader_invocation_reorder" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MissKHR 4 "main" 9 14 22 25 36 42 48 52 53 64 + Source GLSL 460 + SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_NV_ray_tracing_motion_blur" + SourceExtension "GL_NV_shader_invocation_reorder" + Name 4 "main" + Name 9 "attr" + Name 12 "hBlock" + MemberName 12(hBlock) 0 "attrval" + Name 14 "" + Name 22 "hObj" + Name 25 "as" + Name 36 "payload" + Name 40 "pBlock" + MemberName 40(pBlock) 0 "val1" + MemberName 40(pBlock) 1 "val2" + Name 42 "" + Name 48 "hObjHit" + Name 52 "hObjNop" + Name 53 "hObjMiss" + Name 62 "block" + MemberName 62(block) 0 "op" + Name 64 "" + Name 79 "tmin" + Name 81 "tmax" + Name 84 "orig" + Name 86 "dir" + Name 88 "oorig" + Name 90 "odir" + Name 94 "otw" + Name 96 "wto" + Name 99 "cid" + Name 101 "iid" + Name 103 "pid" + Name 105 "gid" + Name 108 "hkind" + Name 112 "handle" + Name 114 "rid" + Decorate 12(hBlock) Block + Decorate 25(as) DescriptorSet 0 + Decorate 25(as) Binding 0 + Decorate 40(pBlock) Block + MemberDecorate 62(block) 0 Offset 0 + Decorate 62(block) Block + Decorate 64 DescriptorSet 0 + Decorate 64 Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypePointer HitObjectAttributeNV 7(fvec2) + 9(attr): 8(ptr) Variable HitObjectAttributeNV + 10: 6(float) Constant 1065353216 + 11: 7(fvec2) ConstantComposite 10 10 + 12(hBlock): TypeStruct 6(float) + 13: TypePointer HitObjectAttributeNV 12(hBlock) + 14: 13(ptr) Variable HitObjectAttributeNV + 15: TypeInt 32 1 + 16: 15(int) Constant 0 + 17: 6(float) Constant 1073741824 + 18: TypePointer HitObjectAttributeNV 6(float) + 20: TypeHitObjectNV + 21: TypePointer Private 20 + 22(hObj): 21(ptr) Variable Private + 23: TypeAccelerationStructureKHR + 24: TypePointer UniformConstant 23 + 25(as): 24(ptr) Variable UniformConstant + 27: TypeInt 32 0 + 28: 27(int) Constant 1 + 29: TypeVector 6(float) 3 + 30: 6(float) Constant 1056964608 + 31: 29(fvec3) ConstantComposite 30 30 30 + 32: 29(fvec3) ConstantComposite 10 10 10 + 33: 15(int) Constant 1 + 34: TypeVector 6(float) 4 + 35: TypePointer RayPayloadKHR 34(fvec4) + 36(payload): 35(ptr) Variable RayPayloadKHR + 38: 6(float) Constant 1092616192 + 39: 15(int) Constant 2 + 40(pBlock): TypeStruct 7(fvec2) 7(fvec2) + 41: TypePointer RayPayloadKHR 40(pBlock) + 42: 41(ptr) Variable RayPayloadKHR + 44: 27(int) Constant 2 + 45: 29(fvec3) ConstantComposite 17 17 17 + 47: 6(float) Constant 1082130432 + 48(hObjHit): 21(ptr) Variable Private + 50: 15(int) Constant 3 + 52(hObjNop): 21(ptr) Variable Private + 53(hObjMiss): 21(ptr) Variable Private + 54: 6(float) Constant 1069547520 + 55: 29(fvec3) ConstantComposite 54 54 54 + 56: 6(float) Constant 1084227584 + 57: 6(float) Constant 1090519040 + 58: TypeBool + 62(block): TypeStruct 6(float) + 63: TypePointer StorageBuffer 62(block) + 64: 63(ptr) Variable StorageBuffer + 65: TypePointer StorageBuffer 6(float) + 76: 6(float) Constant 1077936128 + 78: TypePointer Function 6(float) + 83: TypePointer Function 29(fvec3) + 92: TypeMatrix 29(fvec3) 4 + 93: TypePointer Function 92 + 98: TypePointer Function 15(int) + 107: TypePointer Function 27(int) + 110: TypeVector 27(int) 2 + 111: TypePointer Function 110(ivec2) + 4(main): 2 Function None 3 + 5: Label + 79(tmin): 78(ptr) Variable Function + 81(tmax): 78(ptr) Variable Function + 84(orig): 83(ptr) Variable Function + 86(dir): 83(ptr) Variable Function + 88(oorig): 83(ptr) Variable Function + 90(odir): 83(ptr) Variable Function + 94(otw): 93(ptr) Variable Function + 96(wto): 93(ptr) Variable Function + 99(cid): 98(ptr) Variable Function + 101(iid): 98(ptr) Variable Function + 103(pid): 98(ptr) Variable Function + 105(gid): 98(ptr) Variable Function + 108(hkind): 107(ptr) Variable Function + 112(handle): 111(ptr) Variable Function + 114(rid): 107(ptr) Variable Function + Store 9(attr) 11 + 19: 18(ptr) AccessChain 14 16 + Store 19 17 + 26: 23 Load 25(as) + HitObjectTraceRayNV 22(hObj) 26 28 28 28 28 28 31 30 32 10 36(payload) + 37: 23 Load 25(as) + HitObjectTraceRayMotionNV 22(hObj) 37 28 28 28 28 28 31 30 32 10 38 42 + 43: 23 Load 25(as) + HitObjectRecordHitNV 22(hObj) 43 33 33 33 44 44 44 32 10 45 17 9(attr) + 46: 23 Load 25(as) + HitObjectRecordHitMotionNV 22(hObj) 46 33 33 33 44 44 44 32 10 45 17 47 9(attr) + 49: 23 Load 25(as) + HitObjectRecordHitWithIndexNV 48(hObjHit) 49 33 33 33 44 44 32 10 45 17 14 + 51: 23 Load 25(as) + HitObjectRecordHitWithIndexMotionNV 48(hObjHit) 51 33 33 33 44 44 32 10 45 17 47 14 + HitObjectRecordEmptyNV 52(hObjNop) + HitObjectRecordMissNV 53(hObjMiss) 28 31 17 55 56 + HitObjectRecordMissMotionNV 53(hObjMiss) 28 31 17 55 56 57 + HitObjectExecuteShaderNV 48(hObjHit) 42 + 59: 58(bool) HitObjectIsHitNV 22(hObj) + SelectionMerge 61 None + BranchConditional 59 60 67 + 60: Label + 66: 65(ptr) AccessChain 64 16 + Store 66 10 + Branch 61 + 67: Label + 68: 58(bool) HitObjectIsMissNV 22(hObj) + SelectionMerge 70 None + BranchConditional 68 69 72 + 69: Label + 71: 65(ptr) AccessChain 64 16 + Store 71 17 + Branch 70 + 72: Label + 73: 58(bool) HitObjectIsEmptyNV 22(hObj) + SelectionMerge 75 None + BranchConditional 73 74 75 + 74: Label + 77: 65(ptr) AccessChain 64 16 + Store 77 76 + Branch 75 + 75: Label + Branch 70 + 70: Label + Branch 61 + 61: Label + 80: 6(float) HitObjectGetRayTMinNV 48(hObjHit) + Store 79(tmin) 80 + 82: 6(float) HitObjectGetRayTMaxNV 48(hObjHit) + Store 81(tmax) 82 + 85: 29(fvec3) HitObjectGetWorldRayOriginNV 48(hObjHit) + Store 84(orig) 85 + 87: 29(fvec3) HitObjectGetWorldRayDirectionNV 48(hObjHit) + Store 86(dir) 87 + 89: 29(fvec3) HitObjectGetObjectRayOriginNV 48(hObjHit) + Store 88(oorig) 89 + 91: 29(fvec3) HitObjectGetObjectRayDirectionNV 48(hObjHit) + Store 90(odir) 91 + 95: 92 HitObjectGetObjectToWorldNV 48(hObjHit) + Store 94(otw) 95 + 97: 92 HitObjectGetWorldToObjectNV 48(hObjHit) + Store 96(wto) 97 + 100: 15(int) HitObjectGetInstanceCustomIndexNV 53(hObjMiss) + Store 99(cid) 100 + 102: 15(int) HitObjectGetInstanceIdNV 52(hObjNop) + Store 101(iid) 102 + 104: 15(int) HitObjectGetPrimitiveIndexNV 22(hObj) + Store 103(pid) 104 + 106: 15(int) HitObjectGetGeometryIndexNV 22(hObj) + Store 105(gid) 106 + 109: 27(int) HitObjectGetFrontFaceNV 22(hObj) + Store 108(hkind) 109 + HitObjectGetAttributesNV 22(hObj) 9(attr) + 113: 110(ivec2) HitObjectGetShaderRecordBufferHandleNV 22(hObj) + Store 112(handle) 113 + 115: 27(int) HitObjectGetShaderBindingTableRecordIndexNV 22(hObj) + Store 114(rid) 115 + Return + FunctionEnd diff --git a/Test/spv.nv.hitobject-allops.rchit b/Test/spv.nv.hitobject-allops.rchit new file mode 100644 index 0000000000..e7db35931a --- /dev/null +++ b/Test/spv.nv.hitobject-allops.rchit @@ -0,0 +1,55 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_NV_shader_invocation_reorder : enable +#extension GL_NV_ray_tracing_motion_blur : enable +layout(location = 1) rayPayloadEXT vec4 payload; +layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; }; +layout(location = 2) hitObjectAttributeNV vec2 attr; +layout(location = 3) hitObjectAttributeNV hBlock { float attrval;}; +layout(binding = 0) uniform accelerationStructureEXT as; +layout(binding = 1) buffer block { + float op; +}; +void main() +{ + hitObjectNV hObj; + hitObjectNV hObjHit, hObjMiss, hObjNop; + attr = vec2(1.0); + attrval = 2.0; + hitObjectTraceRayNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1); + hitObjectTraceRayMotionNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2); + hitObjectRecordHitNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 2); + hitObjectRecordHitMotionNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 2); + hitObjectRecordHitWithIndexNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 3); + hitObjectRecordHitWithIndexMotionNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 3); + hitObjectRecordEmptyNV(hObjNop); + hitObjectRecordMissNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0); + hitObjectRecordMissMotionNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f); + hitObjectExecuteShaderNV(hObjHit, 2); + if (hitObjectIsHitNV(hObj)) { + op = 1.0f; + } else if (hitObjectIsMissNV(hObj)) { + op = 2.0f; + } else if (hitObjectIsEmptyNV(hObj)) { + op = 3.0f; + } + + + float tmin = hitObjectGetRayTMinNV(hObjHit); + float tmax = hitObjectGetRayTMaxNV(hObjHit); + vec3 orig = hitObjectGetWorldRayOriginNV(hObjHit); + vec3 dir = hitObjectGetWorldRayDirectionNV(hObjHit); + vec3 oorig = hitObjectGetObjectRayOriginNV(hObjHit); + vec3 odir = hitObjectGetObjectRayDirectionNV(hObjHit); + mat4x3 otw = hitObjectGetObjectToWorldNV(hObjHit); + mat4x3 wto = hitObjectGetWorldToObjectNV(hObjHit); + int cid = hitObjectGetInstanceCustomIndexNV(hObjMiss); + int iid = hitObjectGetInstanceIdNV(hObjNop); + int pid = hitObjectGetPrimitiveIndexNV(hObj); + int gid = hitObjectGetGeometryIndexNV(hObj); + uint hkind = hitObjectGetHitKindNV(hObj); + hitObjectGetAttributesNV(hObj, 2); + uvec2 handle = hitObjectGetShaderRecordBufferHandleNV(hObj); + uint rid = hitObjectGetShaderBindingTableRecordIndexNV(hObj); + +} diff --git a/Test/spv.nv.hitobject-allops.rgen b/Test/spv.nv.hitobject-allops.rgen new file mode 100644 index 0000000000..f2f37f748c --- /dev/null +++ b/Test/spv.nv.hitobject-allops.rgen @@ -0,0 +1,61 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_NV_shader_invocation_reorder : enable +#extension GL_NV_ray_tracing_motion_blur : enable +layout(location = 1) rayPayloadEXT vec4 payload; +layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; }; +layout(location = 2) hitObjectAttributeNV vec2 attr; +layout(location = 3) hitObjectAttributeNV hBlock { float attrval;}; +layout(binding = 0) uniform accelerationStructureEXT as; +layout(binding = 1) buffer block { + float op; +}; +void main() +{ + hitObjectNV hObj; + hitObjectNV hObjHit, hObjMiss, hObjNop; + attr = vec2(1.0); + attrval = 2.0; + hitObjectTraceRayNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1); + hitObjectTraceRayMotionNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2); + hitObjectRecordHitNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 2); + hitObjectRecordHitMotionNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 2); + hitObjectRecordHitWithIndexNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 3); + hitObjectRecordHitWithIndexMotionNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 3); + hitObjectRecordEmptyNV(hObjNop); + hitObjectRecordMissNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0); + hitObjectRecordMissMotionNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f); + hitObjectExecuteShaderNV(hObjHit, 1); + if (hitObjectIsHitNV(hObj)) { + op = 1.0f; + } else if (hitObjectIsMissNV(hObj)) { + op = 2.0f; + } else if (hitObjectIsEmptyNV(hObj)) { + op = 3.0f; + } + + + float tmin = hitObjectGetRayTMinNV(hObjHit); + float tmax = hitObjectGetRayTMaxNV(hObjHit); + vec3 orig = hitObjectGetWorldRayOriginNV(hObjHit); + vec3 dir = hitObjectGetWorldRayDirectionNV(hObjHit); + vec3 oorig = hitObjectGetObjectRayOriginNV(hObjHit); + vec3 odir = hitObjectGetObjectRayDirectionNV(hObjHit); + mat4x3 otw = hitObjectGetObjectToWorldNV(hObjHit); + mat4x3 wto = hitObjectGetWorldToObjectNV(hObjHit); + int cid = hitObjectGetInstanceCustomIndexNV(hObjMiss); + int iid = hitObjectGetInstanceIdNV(hObjNop); + int pid = hitObjectGetPrimitiveIndexNV(hObj); + int gid = hitObjectGetGeometryIndexNV(hObj); + uint hkind = hitObjectGetHitKindNV(hObj); + hitObjectGetAttributesNV(hObj, 2); + uvec2 handle = hitObjectGetShaderRecordBufferHandleNV(hObj); + uint rid = hitObjectGetShaderBindingTableRecordIndexNV(hObj); + reorderThreadNV(4,4); + reorderThreadNV(hObjHit); + reorderThreadNV(hObjHit, 4, 2); + + + + +} diff --git a/Test/spv.nv.hitobject-allops.rmiss b/Test/spv.nv.hitobject-allops.rmiss new file mode 100644 index 0000000000..045e4a5a94 --- /dev/null +++ b/Test/spv.nv.hitobject-allops.rmiss @@ -0,0 +1,58 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_NV_shader_invocation_reorder : enable +#extension GL_NV_ray_tracing_motion_blur : enable +layout(location = 1) rayPayloadEXT vec4 payload; +layout(location = 2) rayPayloadEXT pBlock { vec2 val1; vec2 val2; }; +layout(location = 2) hitObjectAttributeNV vec2 attr; +layout(location = 3) hitObjectAttributeNV hBlock { float attrval;}; +layout(binding = 0) uniform accelerationStructureEXT as; +layout(binding = 1) buffer block { + float op; +}; +void main() +{ + hitObjectNV hObj; + hitObjectNV hObjHit, hObjMiss, hObjNop; + attr = vec2(1.0); + attrval = 2.0; + hitObjectTraceRayNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 1); + hitObjectTraceRayMotionNV(hObj, as, 1U, 1U, 1U, 1U, 1U, vec3(0.5), 0.5, vec3(1), 1.0, 10.0, 2); + hitObjectRecordHitNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 2); + hitObjectRecordHitMotionNV(hObj, as, 1, 1, 1, 2U, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 2); + hitObjectRecordHitWithIndexNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 3); + hitObjectRecordHitWithIndexMotionNV(hObjHit, as, 1, 1, 1, 2U, 2U, vec3(1), 1.0f, vec3(2), 2.0f, 4.0f, 3); + hitObjectRecordEmptyNV(hObjNop); + hitObjectRecordMissNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0); + hitObjectRecordMissMotionNV(hObjMiss, 1U, vec3(0.5), 2.0, vec3(1.5), 5.0, 8.0f); + hitObjectExecuteShaderNV(hObjHit, 2); + if (hitObjectIsHitNV(hObj)) { + op = 1.0f; + } else if (hitObjectIsMissNV(hObj)) { + op = 2.0f; + } else if (hitObjectIsEmptyNV(hObj)) { + op = 3.0f; + } + + + float tmin = hitObjectGetRayTMinNV(hObjHit); + float tmax = hitObjectGetRayTMaxNV(hObjHit); + vec3 orig = hitObjectGetWorldRayOriginNV(hObjHit); + vec3 dir = hitObjectGetWorldRayDirectionNV(hObjHit); + vec3 oorig = hitObjectGetObjectRayOriginNV(hObjHit); + vec3 odir = hitObjectGetObjectRayDirectionNV(hObjHit); + mat4x3 otw = hitObjectGetObjectToWorldNV(hObjHit); + mat4x3 wto = hitObjectGetWorldToObjectNV(hObjHit); + int cid = hitObjectGetInstanceCustomIndexNV(hObjMiss); + int iid = hitObjectGetInstanceIdNV(hObjNop); + int pid = hitObjectGetPrimitiveIndexNV(hObj); + int gid = hitObjectGetGeometryIndexNV(hObj); + uint hkind = hitObjectGetHitKindNV(hObj); + hitObjectGetAttributesNV(hObj, 2); + uvec2 handle = hitObjectGetShaderRecordBufferHandleNV(hObj); + uint rid = hitObjectGetShaderBindingTableRecordIndexNV(hObj); + + + + +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index e218656629..cf93193d3e 100644 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -65,6 +65,7 @@ enum TBasicType { EbtAccStruct, EbtReference, EbtRayQuery, + EbtHitObjectNV, #ifndef GLSLANG_WEB // SPIR-V type defined by spirv_type EbtSpirvType, @@ -104,6 +105,7 @@ enum TStorageQualifier { EvqHitAttr, EvqCallableData, EvqCallableDataIn, + EvqHitObjectAttrNV, EvqtaskPayloadSharedEXT, @@ -375,6 +377,7 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqCallableData: return "callableDataNV"; break; case EvqCallableDataIn: return "callableDataInNV"; break; case EvqtaskPayloadSharedEXT: return "taskPayloadSharedEXT"; break; + case EvqHitObjectAttrNV:return "hitObjectAttributeNV"; break; default: return "unknown qualifier"; } } diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index ee9b79a06b..569c64bbd0 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -869,6 +869,9 @@ class TQualifier { bool isAnyCallable() const { return storage == EvqCallableData || storage == EvqCallableDataIn; } + bool isHitObjectAttrNV() const { + return storage == EvqHitObjectAttrNV; + } // True if this type of IO is supposed to be arrayed with extra level for per-vertex data bool isArrayedIo(EShLanguage language) const @@ -904,6 +907,7 @@ class TQualifier { // -2048 as the default value indicating layoutSecondaryViewportRelative is not set layoutSecondaryViewportRelativeOffset = -2048; layoutShaderRecord = false; + layoutHitObjectShaderRecordNV = false; layoutBindlessSampler = false; layoutBindlessImage = false; layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd; @@ -1005,6 +1009,7 @@ class TQualifier { bool layoutViewportRelative; int layoutSecondaryViewportRelativeOffset; bool layoutShaderRecord; + bool layoutHitObjectShaderRecordNV; // GL_EXT_spirv_intrinsics int spirvStorageClass; @@ -1134,6 +1139,7 @@ class TQualifier { TLayoutFormat getFormat() const { return layoutFormat; } bool isPushConstant() const { return layoutPushConstant; } bool isShaderRecord() const { return layoutShaderRecord; } + bool hasHitObjectShaderRecordNV() const { return layoutHitObjectShaderRecordNV; } bool hasBufferReference() const { return layoutBufferReference; } bool hasBufferReferenceAlign() const { @@ -1913,7 +1919,8 @@ class TType { } virtual bool isOpaque() const { return basicType == EbtSampler #ifndef GLSLANG_WEB - || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery + || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery + || basicType == EbtHitObjectNV #endif ; } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } @@ -2314,12 +2321,17 @@ class TType { appendStr(" layoutSecondaryViewportRelativeOffset="); appendInt(qualifier.layoutSecondaryViewportRelativeOffset); } + if (qualifier.layoutShaderRecord) appendStr(" shaderRecordNV"); + if (qualifier.layoutHitObjectShaderRecordNV) + appendStr(" hitobjectshaderrecordnv"); + if (qualifier.layoutBindlessSampler) appendStr(" layoutBindlessSampler"); if (qualifier.layoutBindlessImage) appendStr(" layoutBindlessImage"); + appendStr(")"); } } diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 2b81a22fec..ec2b28a9bc 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -968,7 +968,42 @@ enum TOperator { EOpRayQueryGetIntersectionObjectToWorld, EOpRayQueryGetIntersectionWorldToObject, + // + // GL_NV_shader_invocation_reorder // + + EOpHitObjectTraceRayNV, + EOpHitObjectTraceRayMotionNV, + EOpHitObjectRecordHitNV, + EOpHitObjectRecordHitMotionNV, + EOpHitObjectRecordHitWithIndexNV, + EOpHitObjectRecordHitWithIndexMotionNV, + EOpHitObjectRecordMissNV, + EOpHitObjectRecordMissMotionNV, + EOpHitObjectRecordEmptyNV, + EOpHitObjectExecuteShaderNV, + EOpHitObjectIsEmptyNV, + EOpHitObjectIsMissNV, + EOpHitObjectIsHitNV, + EOpHitObjectGetRayTMinNV, + EOpHitObjectGetRayTMaxNV, + EOpHitObjectGetObjectRayOriginNV, + EOpHitObjectGetObjectRayDirectionNV, + EOpHitObjectGetWorldRayOriginNV, + EOpHitObjectGetWorldRayDirectionNV, + EOpHitObjectGetWorldToObjectNV, + EOpHitObjectGetObjectToWorldNV, + EOpHitObjectGetInstanceCustomIndexNV, + EOpHitObjectGetInstanceIdNV, + EOpHitObjectGetGeometryIndexNV, + EOpHitObjectGetPrimitiveIndexNV, + EOpHitObjectGetHitKindNV, + EOpHitObjectGetShaderBindingTableRecordIndexNV, + EOpHitObjectGetShaderRecordBufferHandleNV, + EOpHitObjectGetAttributesNV, + EOpHitObjectGetCurrentTimeNV, + EOpReorderThreadNV, + // HLSL operations // diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 53078ec7d3..16287dfd16 100644 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4550,7 +4550,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } - // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query + // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query/ + // GL_NV_shader_invocation_reorder if (profile != EEsProfile && version >= 460) { commonBuiltins.append("void rayQueryInitializeEXT(rayQueryEXT, accelerationStructureEXT, uint, uint, vec3, float, vec3, float);" "void rayQueryTerminateEXT(rayQueryEXT);" @@ -4583,6 +4584,39 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" "void executeCallableEXT(uint, int);" + "void hitObjectTraceRayNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectTraceRayMotionNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordHitNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectRecordHitMotionNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordHitWithIndexNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectRecordHitWithIndexMotionNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordMissNV(hitObjectNV,uint,vec3,float,vec3,float);" + "void hitObjectRecordMissMotionNV(hitObjectNV,uint,vec3,float,vec3,float,float);" + "void hitObjectRecordEmptyNV(hitObjectNV);" + "void hitObjectExecuteShaderNV(hitObjectNV,int);" + "bool hitObjectIsEmptyNV(hitObjectNV);" + "bool hitObjectIsMissNV(hitObjectNV);" + "bool hitObjectIsHitNV(hitObjectNV);" + "float hitObjectGetRayTMinNV(hitObjectNV);" + "float hitObjectGetRayTMaxNV(hitObjectNV);" + "vec3 hitObjectGetWorldRayOriginNV(hitObjectNV);" + "vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV);" + "vec3 hitObjectGetObjectRayOriginNV(hitObjectNV);" + "vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV);" + "mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV);" + "mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV);" + "int hitObjectGetInstanceCustomIndexNV(hitObjectNV);" + "int hitObjectGetInstanceIdNV(hitObjectNV);" + "int hitObjectGetGeometryIndexNV(hitObjectNV);" + "int hitObjectGetPrimitiveIndexNV(hitObjectNV);" + "uint hitObjectGetHitKindNV(hitObjectNV);" + "void hitObjectGetAttributesNV(hitObjectNV,int);" + "float hitObjectGetCurrentTimeNV(hitObjectNV);" + "uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV);" + "uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV);" + "void reorderThreadNV(uint, uint);" + "void reorderThreadNV(hitObjectNV);" + "void reorderThreadNV(hitObjectNV, uint, uint);" "\n"); stageBuiltins[EShLangIntersect].append( "bool reportIntersectionNV(float, uint);" @@ -4598,6 +4632,36 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" "void executeCallableEXT(uint, int);" + "void hitObjectTraceRayNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectTraceRayMotionNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordHitNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectRecordHitMotionNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordHitWithIndexNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectRecordHitWithIndexMotionNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordMissNV(hitObjectNV, uint, vec3, float, vec3, float);" + "void hitObjectRecordMissMotionNV(hitObjectNV,uint,vec3,float,vec3,float,float);" + "void hitObjectRecordEmptyNV(hitObjectNV);" + "void hitObjectExecuteShaderNV(hitObjectNV, int);" + "bool hitObjectIsEmptyNV(hitObjectNV);" + "bool hitObjectIsMissNV(hitObjectNV);" + "bool hitObjectIsHitNV(hitObjectNV);" + "float hitObjectGetRayTMinNV(hitObjectNV);" + "float hitObjectGetRayTMaxNV(hitObjectNV);" + "vec3 hitObjectGetWorldRayOriginNV(hitObjectNV);" + "vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV);" + "vec3 hitObjectGetObjectRayOriginNV(hitObjectNV);" + "vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV);" + "mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV);" + "mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV);" + "int hitObjectGetInstanceCustomIndexNV(hitObjectNV);" + "int hitObjectGetInstanceIdNV(hitObjectNV);" + "int hitObjectGetGeometryIndexNV(hitObjectNV);" + "int hitObjectGetPrimitiveIndexNV(hitObjectNV);" + "uint hitObjectGetHitKindNV(hitObjectNV);" + "void hitObjectGetAttributesNV(hitObjectNV,int);" + "float hitObjectGetCurrentTimeNV(hitObjectNV);" + "uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV);" + "uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV);" "\n"); stageBuiltins[EShLangMiss].append( "void traceNV(accelerationStructureNV,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" @@ -4605,6 +4669,36 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void traceRayEXT(accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" "void executeCallableNV(uint, int);" "void executeCallableEXT(uint, int);" + "void hitObjectTraceRayNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectTraceRayMotionNV(hitObjectNV,accelerationStructureEXT,uint,uint,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordHitNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectRecordHitMotionNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordHitWithIndexNV(hitObjectNV,accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,int);" + "void hitObjectRecordHitWithIndexMotionNV(hitObjectNV, accelerationStructureEXT,int,int,int,uint,uint,vec3,float,vec3,float,float,int);" + "void hitObjectRecordMissNV(hitObjectNV, uint, vec3, float, vec3, float);" + "void hitObjectRecordMissMotionNV(hitObjectNV,uint,vec3,float,vec3,float,float);" + "void hitObjectRecordEmptyNV(hitObjectNV);" + "void hitObjectExecuteShaderNV(hitObjectNV, int);" + "bool hitObjectIsEmptyNV(hitObjectNV);" + "bool hitObjectIsMissNV(hitObjectNV);" + "bool hitObjectIsHitNV(hitObjectNV);" + "float hitObjectGetRayTMinNV(hitObjectNV);" + "float hitObjectGetRayTMaxNV(hitObjectNV);" + "vec3 hitObjectGetWorldRayOriginNV(hitObjectNV);" + "vec3 hitObjectGetWorldRayDirectionNV(hitObjectNV);" + "vec3 hitObjectGetObjectRayOriginNV(hitObjectNV);" + "vec3 hitObjectGetObjectRayDirectionNV(hitObjectNV);" + "mat4x3 hitObjectGetWorldToObjectNV(hitObjectNV);" + "mat4x3 hitObjectGetObjectToWorldNV(hitObjectNV);" + "int hitObjectGetInstanceCustomIndexNV(hitObjectNV);" + "int hitObjectGetInstanceIdNV(hitObjectNV);" + "int hitObjectGetGeometryIndexNV(hitObjectNV);" + "int hitObjectGetPrimitiveIndexNV(hitObjectNV);" + "uint hitObjectGetHitKindNV(hitObjectNV);" + "void hitObjectGetAttributesNV(hitObjectNV,int);" + "float hitObjectGetCurrentTimeNV(hitObjectNV);" + "uint hitObjectGetShaderBindingTableRecordIndexNV(hitObjectNV);" + "uvec2 hitObjectGetShaderRecordBufferHandleNV(hitObjectNV);" "\n"); stageBuiltins[EShLangCallable].append( "void executeCallableNV(uint, int);" @@ -8852,6 +8946,38 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("executeCallableNV", 1, &E_GL_NV_ray_tracing); symbolTable.setFunctionExtensions("executeCallableEXT", 1, &E_GL_EXT_ray_tracing); + symbolTable.setFunctionExtensions("hitObjectTraceRayNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectTraceRayMotionNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordHitNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordHitMotionNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordHitWithIndexNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordHitWithIndexMotionNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordMissNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordMissMotionNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectRecordEmptyNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectExecuteShaderNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectIsEmptyNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectIsMissNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectIsHitNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetRayTMinNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetRayTMaxNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetObjectRayOriginNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetObjectRayDirectionNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetWorldRayOriginNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetWorldRayDirectionNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetWorldToObjectNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetbjectToWorldNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetInstanceCustomIndexNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetInstanceIdNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetGeometryIndexNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetPrimitiveIndexNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetHitKindNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetAttributesNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetCurrentTimeNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetShaderBindingTableRecordIndexNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("hitObjectGetShaderRecordBufferHandleNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("reorderThreadNV", 1, &E_GL_NV_shader_invocation_reorder); + BuiltInVariable("gl_LaunchIDNV", EbvLaunchId, symbolTable); BuiltInVariable("gl_LaunchIDEXT", EbvLaunchId, symbolTable); @@ -9855,6 +9981,38 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("traceRayEXT", EOpTraceKHR); symbolTable.relateToOperator("executeCallableNV", EOpExecuteCallableNV); symbolTable.relateToOperator("executeCallableEXT", EOpExecuteCallableKHR); + + symbolTable.relateToOperator("hitObjectTraceRayNV", EOpHitObjectTraceRayNV); + symbolTable.relateToOperator("hitObjectTraceRayMotionNV", EOpHitObjectTraceRayMotionNV); + symbolTable.relateToOperator("hitObjectRecordHitNV", EOpHitObjectRecordHitNV); + symbolTable.relateToOperator("hitObjectRecordHitMotionNV", EOpHitObjectRecordHitMotionNV); + symbolTable.relateToOperator("hitObjectRecordHitWithIndexNV", EOpHitObjectRecordHitWithIndexNV); + symbolTable.relateToOperator("hitObjectRecordHitWithIndexMotionNV", EOpHitObjectRecordHitWithIndexMotionNV); + symbolTable.relateToOperator("hitObjectRecordMissNV", EOpHitObjectRecordMissNV); + symbolTable.relateToOperator("hitObjectRecordMissMotionNV", EOpHitObjectRecordMissMotionNV); + symbolTable.relateToOperator("hitObjectRecordEmptyNV", EOpHitObjectRecordEmptyNV); + symbolTable.relateToOperator("hitObjectExecuteShaderNV", EOpHitObjectExecuteShaderNV); + symbolTable.relateToOperator("hitObjectIsEmptyNV", EOpHitObjectIsEmptyNV); + symbolTable.relateToOperator("hitObjectIsMissNV", EOpHitObjectIsMissNV); + symbolTable.relateToOperator("hitObjectIsHitNV", EOpHitObjectIsHitNV); + symbolTable.relateToOperator("hitObjectGetRayTMinNV", EOpHitObjectGetRayTMinNV); + symbolTable.relateToOperator("hitObjectGetRayTMaxNV", EOpHitObjectGetRayTMaxNV); + symbolTable.relateToOperator("hitObjectGetObjectRayOriginNV", EOpHitObjectGetObjectRayOriginNV); + symbolTable.relateToOperator("hitObjectGetObjectRayDirectionNV", EOpHitObjectGetObjectRayDirectionNV); + symbolTable.relateToOperator("hitObjectGetWorldRayOriginNV", EOpHitObjectGetWorldRayOriginNV); + symbolTable.relateToOperator("hitObjectGetWorldRayDirectionNV", EOpHitObjectGetWorldRayDirectionNV); + symbolTable.relateToOperator("hitObjectGetWorldToObjectNV", EOpHitObjectGetWorldToObjectNV); + symbolTable.relateToOperator("hitObjectGetObjectToWorldNV", EOpHitObjectGetObjectToWorldNV); + symbolTable.relateToOperator("hitObjectGetInstanceCustomIndexNV", EOpHitObjectGetInstanceCustomIndexNV); + symbolTable.relateToOperator("hitObjectGetInstanceIdNV", EOpHitObjectGetInstanceIdNV); + symbolTable.relateToOperator("hitObjectGetGeometryIndexNV", EOpHitObjectGetGeometryIndexNV); + symbolTable.relateToOperator("hitObjectGetPrimitiveIndexNV", EOpHitObjectGetPrimitiveIndexNV); + symbolTable.relateToOperator("hitObjectGetHitKindNV", EOpHitObjectGetHitKindNV); + symbolTable.relateToOperator("hitObjectGetAttributesNV", EOpHitObjectGetAttributesNV); + symbolTable.relateToOperator("hitObjectGetCurrentTimeNV", EOpHitObjectGetCurrentTimeNV); + symbolTable.relateToOperator("hitObjectGetShaderBindingTableRecordIndexNV", EOpHitObjectGetShaderBindingTableRecordIndexNV); + symbolTable.relateToOperator("hitObjectGetShaderRecordBufferHandleNV", EOpHitObjectGetShaderRecordBufferHandleNV); + symbolTable.relateToOperator("reorderThreadNV", EOpReorderThreadNV); } break; case EShLangIntersect: diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index ab06be49c4..758572bb84 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -175,6 +175,9 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EbtRayQuery: message = "can't modify rayQueryEXT"; break; + case EbtHitObjectNV: + message = "can't modify hitObjectNV"; + break; #endif default: break; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 99f5533f30..980153e5c1 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2368,6 +2368,79 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } break; + case EOpHitObjectTraceRayNV: + if (!(*argp)[11]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "payload number", ""); + else { + unsigned int location = (*argp)[11]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) + error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); + } + break; + case EOpHitObjectTraceRayMotionNV: + if (!(*argp)[12]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "payload number", ""); + else { + unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) + error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); + } + break; + case EOpHitObjectExecuteShaderNV: + if (!(*argp)[1]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "payload number", ""); + else { + unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(0, location) < 0) + error(loc, "with layout(location =", "no rayPayloadEXT/rayPayloadInEXT declared", "%d)", location); + } + break; + case EOpHitObjectRecordHitNV: + if (!(*argp)[12]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); + else { + unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) + error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); + } + break; + case EOpHitObjectRecordHitMotionNV: + if (!(*argp)[13]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); + else { + unsigned int location = (*argp)[13]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) + error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); + } + break; + case EOpHitObjectRecordHitWithIndexNV: + if (!(*argp)[11]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); + else { + unsigned int location = (*argp)[11]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) + error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); + } + break; + case EOpHitObjectRecordHitWithIndexMotionNV: + if (!(*argp)[12]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); + else { + unsigned int location = (*argp)[12]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) + error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); + } + break; + case EOpHitObjectGetAttributesNV: + if (!(*argp)[1]->getAsConstantUnion()) + error(loc, "argument must be compile-time constant", "hitobjectattribute number", ""); + else { + unsigned int location = (*argp)[1]->getAsConstantUnion()->getAsConstantUnion()->getConstArray()[0].getUConst(); + if (!extensionTurnedOn(E_GL_EXT_spirv_intrinsics) && intermediate.checkLocationRT(2, location) < 0) + error(loc, "with layout(location =", "no hitObjectAttributeNV declared", "%d)", location); + } + break; + case EOpRayQueryGetIntersectionType: case EOpRayQueryGetIntersectionT: case EOpRayQueryGetIntersectionInstanceCustomIndex: @@ -4581,7 +4654,7 @@ void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermType // check for additional things allowed by GL_EXT_nonuniform_qualifier if (base.getBasicType() == EbtSampler || base.getBasicType() == EbtAccStruct || base.getBasicType() == EbtRayQuery || - (base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer())) + base.getBasicType() == EbtHitObjectNV || (base.getBasicType() == EbtBlock && base.getType().getQualifier().isUniformOrBuffer())) requireExtensions(loc, 1, &E_GL_EXT_nonuniform_qualifier, "variable index"); else error(loc, "", "[", "array must be redeclared with a size before being indexed with a variable"); @@ -5761,6 +5834,10 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi } publicType.qualifier.layoutShaderRecord = true; return; + } else if (id == "hitobjectshaderrecordnv") { + requireExtensions(loc, 1, &E_GL_NV_shader_invocation_reorder, "hitobject shader record NV"); + publicType.qualifier.layoutHitObjectShaderRecordNV = true; + return; } } @@ -6232,6 +6309,8 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.pervertexNV = true; if (src.pervertexEXT) dst.pervertexEXT = true; + if (src.layoutHitObjectShaderRecordNV) + dst.layoutHitObjectShaderRecordNV = true; #endif } } @@ -6389,6 +6468,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqHitAttr: case EvqCallableData: case EvqCallableDataIn: + case EvqHitObjectAttrNV: break; #endif default: @@ -7344,7 +7424,10 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden if (initializer) { if (type.getBasicType() == EbtRayQuery) { error(loc, "ray queries can only be initialized by using the rayQueryInitializeEXT intrinsic:", "=", identifier.c_str()); + } else if (type.getBasicType() == EbtHitObjectNV) { + error(loc, "hit objects cannot be initialized using initializers", "=", identifier.c_str()); } + } if (type.isCoopMat()) { @@ -8771,6 +8854,10 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "callableDataInNV block"); requireStage(loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV block"); break; + case EvqHitObjectAttrNV: + profileRequires(loc, ~EEsProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV block"); + requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV block"); + break; #endif default: error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), ""); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 7f51173ebc..c20048a9ee 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -765,6 +765,9 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["icoopmatNV"] = ICOOPMATNV; (*KeywordMap)["ucoopmatNV"] = UCOOPMATNV; + (*KeywordMap)["hitObjectNV"] = HITOBJECTNV; + (*KeywordMap)["hitObjectAttributeNV"] = HITOBJECTATTRNV; + ReservedSet = new std::unordered_set; ReservedSet->insert("common"); @@ -1789,6 +1792,20 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) return keyword; return identifierOrType(); + + case HITOBJECTNV: + if (parseContext.symbolTable.atBuiltInLevel() || + (!parseContext.isEsProfile() && parseContext.version >= 460 + && parseContext.extensionTurnedOn(E_GL_NV_shader_invocation_reorder))) + return keyword; + return identifierOrType(); + + case HITOBJECTATTRNV: + if (parseContext.symbolTable.atBuiltInLevel() || + (!parseContext.isEsProfile() && parseContext.version >= 460 + && parseContext.extensionTurnedOn(E_GL_NV_shader_invocation_reorder))) + return keyword; + return identifierOrType(); #endif default: diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 57b868a20e..f5f98a0b02 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -78,6 +78,7 @@ void TType::buildMangledName(TString& mangledName) const case EbtAccStruct: mangledName += "as"; break; case EbtRayQuery: mangledName += "rq"; break; case EbtSpirvType: mangledName += "spv-t"; break; + case EbtHitObjectNV: mangledName += "ho"; break; #endif case EbtSampler: switch (sampler.type) { diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index b8b1c5315f..bf5ce2f67f 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -302,9 +302,10 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable; extensionBehavior[E_GL_NV_integer_cooperative_matrix] = EBhDisable; - // ARM - extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; + extensionBehavior[E_GL_NV_shader_invocation_reorder] = EBhDisable; + // ARM + extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; @@ -552,6 +553,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_NV_mesh_shader 1\n" "#define GL_NV_cooperative_matrix 1\n" "#define GL_NV_integer_cooperative_matrix 1\n" + "#define GL_NV_shader_execution_reorder 1\n" "#define GL_EXT_shader_explicit_arithmetic_types 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 971db46b61..9e4c9feaaa 100644 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -277,6 +277,7 @@ const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]); const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix"; const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins"; const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer_cooperative_matrix"; +const char* const E_GL_NV_shader_invocation_reorder = "GL_NV_shader_invocation_reorder"; // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index f8b0397a65..442529be59 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -211,6 +211,7 @@ GLSLANG_WEB_EXCLUDE_ON %token ACCSTRUCTEXT %token RAYQUERYEXT %token FCOOPMATNV ICOOPMATNV UCOOPMATNV +%token HITOBJECTNV HITOBJECTATTRNV // combined image/sampler %token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW @@ -310,7 +311,7 @@ GLSLANG_WEB_EXCLUDE_ON %token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE -%token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV +%token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV %token PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT @@ -1534,6 +1535,14 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc); $$.qualifier.storage = EvqHitAttr; } + | HITOBJECTATTRNV { + parseContext.globalCheck($1.loc, "hitAttributeNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask + | EShLangMissMask), "hitObjectAttributeNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqHitObjectAttrNV; + } | HITATTREXT { parseContext.globalCheck($1.loc, "hitAttributeEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -3509,6 +3518,10 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); $$ = $1; } + | HITOBJECTNV { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtHitObjectNV; + } GLSLANG_WEB_EXCLUDE_OFF | struct_specifier { $$ = $1; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 344a1c159e..e0a5bcf151 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -151,7 +151,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %parse-param {glslang::TParseContext* pParseContext} %lex-param {parseContext} -%define api.pure // enable thread safety +%pure-parser // enable thread safety %expect 1 // One shift reduce conflict because of if | else %token CONST BOOL INT UINT FLOAT @@ -211,6 +211,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token ACCSTRUCTEXT %token RAYQUERYEXT %token FCOOPMATNV ICOOPMATNV UCOOPMATNV +%token HITOBJECTNV HITOBJECTATTRNV // combined image/sampler %token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW @@ -310,7 +311,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE -%token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV +%token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV %token PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT %token PATCH SAMPLE NONUNIFORM %token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT @@ -1534,6 +1535,14 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqHitAttr; } + | HITOBJECTATTRNV { + parseContext.globalCheck($1.loc, "hitAttributeNV"); + parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask + | EShLangMissMask), "hitObjectAttributeNV"); + parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); + $$.init($1.loc); + $$.qualifier.storage = EvqHitObjectAttrNV; + } | HITATTREXT { parseContext.globalCheck($1.loc, "hitAttributeEXT"); parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -3509,6 +3518,10 @@ type_specifier_nonarray parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); $$ = $1; } + | HITOBJECTNV { + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtHitObjectNV; + } | struct_specifier { $$ = $1; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 41ff775503..5c17c8cea4 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -287,429 +287,431 @@ enum yysymbol_kind_t YYSYMBOL_FCOOPMATNV = 163, /* FCOOPMATNV */ YYSYMBOL_ICOOPMATNV = 164, /* ICOOPMATNV */ YYSYMBOL_UCOOPMATNV = 165, /* UCOOPMATNV */ - YYSYMBOL_SAMPLERCUBEARRAY = 166, /* SAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 167, /* SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_ISAMPLERCUBEARRAY = 168, /* ISAMPLERCUBEARRAY */ - YYSYMBOL_USAMPLERCUBEARRAY = 169, /* USAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLER1D = 170, /* SAMPLER1D */ - YYSYMBOL_SAMPLER1DARRAY = 171, /* SAMPLER1DARRAY */ - YYSYMBOL_SAMPLER1DARRAYSHADOW = 172, /* SAMPLER1DARRAYSHADOW */ - YYSYMBOL_ISAMPLER1D = 173, /* ISAMPLER1D */ - YYSYMBOL_SAMPLER1DSHADOW = 174, /* SAMPLER1DSHADOW */ - YYSYMBOL_SAMPLER2DRECT = 175, /* SAMPLER2DRECT */ - YYSYMBOL_SAMPLER2DRECTSHADOW = 176, /* SAMPLER2DRECTSHADOW */ - YYSYMBOL_ISAMPLER2DRECT = 177, /* ISAMPLER2DRECT */ - YYSYMBOL_USAMPLER2DRECT = 178, /* USAMPLER2DRECT */ - YYSYMBOL_SAMPLERBUFFER = 179, /* SAMPLERBUFFER */ - YYSYMBOL_ISAMPLERBUFFER = 180, /* ISAMPLERBUFFER */ - YYSYMBOL_USAMPLERBUFFER = 181, /* USAMPLERBUFFER */ - YYSYMBOL_SAMPLER2DMS = 182, /* SAMPLER2DMS */ - YYSYMBOL_ISAMPLER2DMS = 183, /* ISAMPLER2DMS */ - YYSYMBOL_USAMPLER2DMS = 184, /* USAMPLER2DMS */ - YYSYMBOL_SAMPLER2DMSARRAY = 185, /* SAMPLER2DMSARRAY */ - YYSYMBOL_ISAMPLER2DMSARRAY = 186, /* ISAMPLER2DMSARRAY */ - YYSYMBOL_USAMPLER2DMSARRAY = 187, /* USAMPLER2DMSARRAY */ - YYSYMBOL_SAMPLEREXTERNALOES = 188, /* SAMPLEREXTERNALOES */ - YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 189, /* SAMPLEREXTERNAL2DY2YEXT */ - YYSYMBOL_ISAMPLER1DARRAY = 190, /* ISAMPLER1DARRAY */ - YYSYMBOL_USAMPLER1D = 191, /* USAMPLER1D */ - YYSYMBOL_USAMPLER1DARRAY = 192, /* USAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER1D = 193, /* F16SAMPLER1D */ - YYSYMBOL_F16SAMPLER2D = 194, /* F16SAMPLER2D */ - YYSYMBOL_F16SAMPLER3D = 195, /* F16SAMPLER3D */ - YYSYMBOL_F16SAMPLER2DRECT = 196, /* F16SAMPLER2DRECT */ - YYSYMBOL_F16SAMPLERCUBE = 197, /* F16SAMPLERCUBE */ - YYSYMBOL_F16SAMPLER1DARRAY = 198, /* F16SAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER2DARRAY = 199, /* F16SAMPLER2DARRAY */ - YYSYMBOL_F16SAMPLERCUBEARRAY = 200, /* F16SAMPLERCUBEARRAY */ - YYSYMBOL_F16SAMPLERBUFFER = 201, /* F16SAMPLERBUFFER */ - YYSYMBOL_F16SAMPLER2DMS = 202, /* F16SAMPLER2DMS */ - YYSYMBOL_F16SAMPLER2DMSARRAY = 203, /* F16SAMPLER2DMSARRAY */ - YYSYMBOL_F16SAMPLER1DSHADOW = 204, /* F16SAMPLER1DSHADOW */ - YYSYMBOL_F16SAMPLER2DSHADOW = 205, /* F16SAMPLER2DSHADOW */ - YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 206, /* F16SAMPLER1DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 207, /* F16SAMPLER2DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DRECTSHADOW = 208, /* F16SAMPLER2DRECTSHADOW */ - YYSYMBOL_F16SAMPLERCUBESHADOW = 209, /* F16SAMPLERCUBESHADOW */ - YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 210, /* F16SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_IMAGE1D = 211, /* IMAGE1D */ - YYSYMBOL_IIMAGE1D = 212, /* IIMAGE1D */ - YYSYMBOL_UIMAGE1D = 213, /* UIMAGE1D */ - YYSYMBOL_IMAGE2D = 214, /* IMAGE2D */ - YYSYMBOL_IIMAGE2D = 215, /* IIMAGE2D */ - YYSYMBOL_UIMAGE2D = 216, /* UIMAGE2D */ - YYSYMBOL_IMAGE3D = 217, /* IMAGE3D */ - YYSYMBOL_IIMAGE3D = 218, /* IIMAGE3D */ - YYSYMBOL_UIMAGE3D = 219, /* UIMAGE3D */ - YYSYMBOL_IMAGE2DRECT = 220, /* IMAGE2DRECT */ - YYSYMBOL_IIMAGE2DRECT = 221, /* IIMAGE2DRECT */ - YYSYMBOL_UIMAGE2DRECT = 222, /* UIMAGE2DRECT */ - YYSYMBOL_IMAGECUBE = 223, /* IMAGECUBE */ - YYSYMBOL_IIMAGECUBE = 224, /* IIMAGECUBE */ - YYSYMBOL_UIMAGECUBE = 225, /* UIMAGECUBE */ - YYSYMBOL_IMAGEBUFFER = 226, /* IMAGEBUFFER */ - YYSYMBOL_IIMAGEBUFFER = 227, /* IIMAGEBUFFER */ - YYSYMBOL_UIMAGEBUFFER = 228, /* UIMAGEBUFFER */ - YYSYMBOL_IMAGE1DARRAY = 229, /* IMAGE1DARRAY */ - YYSYMBOL_IIMAGE1DARRAY = 230, /* IIMAGE1DARRAY */ - YYSYMBOL_UIMAGE1DARRAY = 231, /* UIMAGE1DARRAY */ - YYSYMBOL_IMAGE2DARRAY = 232, /* IMAGE2DARRAY */ - YYSYMBOL_IIMAGE2DARRAY = 233, /* IIMAGE2DARRAY */ - YYSYMBOL_UIMAGE2DARRAY = 234, /* UIMAGE2DARRAY */ - YYSYMBOL_IMAGECUBEARRAY = 235, /* IMAGECUBEARRAY */ - YYSYMBOL_IIMAGECUBEARRAY = 236, /* IIMAGECUBEARRAY */ - YYSYMBOL_UIMAGECUBEARRAY = 237, /* UIMAGECUBEARRAY */ - YYSYMBOL_IMAGE2DMS = 238, /* IMAGE2DMS */ - YYSYMBOL_IIMAGE2DMS = 239, /* IIMAGE2DMS */ - YYSYMBOL_UIMAGE2DMS = 240, /* UIMAGE2DMS */ - YYSYMBOL_IMAGE2DMSARRAY = 241, /* IMAGE2DMSARRAY */ - YYSYMBOL_IIMAGE2DMSARRAY = 242, /* IIMAGE2DMSARRAY */ - YYSYMBOL_UIMAGE2DMSARRAY = 243, /* UIMAGE2DMSARRAY */ - YYSYMBOL_F16IMAGE1D = 244, /* F16IMAGE1D */ - YYSYMBOL_F16IMAGE2D = 245, /* F16IMAGE2D */ - YYSYMBOL_F16IMAGE3D = 246, /* F16IMAGE3D */ - YYSYMBOL_F16IMAGE2DRECT = 247, /* F16IMAGE2DRECT */ - YYSYMBOL_F16IMAGECUBE = 248, /* F16IMAGECUBE */ - YYSYMBOL_F16IMAGE1DARRAY = 249, /* F16IMAGE1DARRAY */ - YYSYMBOL_F16IMAGE2DARRAY = 250, /* F16IMAGE2DARRAY */ - YYSYMBOL_F16IMAGECUBEARRAY = 251, /* F16IMAGECUBEARRAY */ - YYSYMBOL_F16IMAGEBUFFER = 252, /* F16IMAGEBUFFER */ - YYSYMBOL_F16IMAGE2DMS = 253, /* F16IMAGE2DMS */ - YYSYMBOL_F16IMAGE2DMSARRAY = 254, /* F16IMAGE2DMSARRAY */ - YYSYMBOL_I64IMAGE1D = 255, /* I64IMAGE1D */ - YYSYMBOL_U64IMAGE1D = 256, /* U64IMAGE1D */ - YYSYMBOL_I64IMAGE2D = 257, /* I64IMAGE2D */ - YYSYMBOL_U64IMAGE2D = 258, /* U64IMAGE2D */ - YYSYMBOL_I64IMAGE3D = 259, /* I64IMAGE3D */ - YYSYMBOL_U64IMAGE3D = 260, /* U64IMAGE3D */ - YYSYMBOL_I64IMAGE2DRECT = 261, /* I64IMAGE2DRECT */ - YYSYMBOL_U64IMAGE2DRECT = 262, /* U64IMAGE2DRECT */ - YYSYMBOL_I64IMAGECUBE = 263, /* I64IMAGECUBE */ - YYSYMBOL_U64IMAGECUBE = 264, /* U64IMAGECUBE */ - YYSYMBOL_I64IMAGEBUFFER = 265, /* I64IMAGEBUFFER */ - YYSYMBOL_U64IMAGEBUFFER = 266, /* U64IMAGEBUFFER */ - YYSYMBOL_I64IMAGE1DARRAY = 267, /* I64IMAGE1DARRAY */ - YYSYMBOL_U64IMAGE1DARRAY = 268, /* U64IMAGE1DARRAY */ - YYSYMBOL_I64IMAGE2DARRAY = 269, /* I64IMAGE2DARRAY */ - YYSYMBOL_U64IMAGE2DARRAY = 270, /* U64IMAGE2DARRAY */ - YYSYMBOL_I64IMAGECUBEARRAY = 271, /* I64IMAGECUBEARRAY */ - YYSYMBOL_U64IMAGECUBEARRAY = 272, /* U64IMAGECUBEARRAY */ - YYSYMBOL_I64IMAGE2DMS = 273, /* I64IMAGE2DMS */ - YYSYMBOL_U64IMAGE2DMS = 274, /* U64IMAGE2DMS */ - YYSYMBOL_I64IMAGE2DMSARRAY = 275, /* I64IMAGE2DMSARRAY */ - YYSYMBOL_U64IMAGE2DMSARRAY = 276, /* U64IMAGE2DMSARRAY */ - YYSYMBOL_TEXTURECUBEARRAY = 277, /* TEXTURECUBEARRAY */ - YYSYMBOL_ITEXTURECUBEARRAY = 278, /* ITEXTURECUBEARRAY */ - YYSYMBOL_UTEXTURECUBEARRAY = 279, /* UTEXTURECUBEARRAY */ - YYSYMBOL_TEXTURE1D = 280, /* TEXTURE1D */ - YYSYMBOL_ITEXTURE1D = 281, /* ITEXTURE1D */ - YYSYMBOL_UTEXTURE1D = 282, /* UTEXTURE1D */ - YYSYMBOL_TEXTURE1DARRAY = 283, /* TEXTURE1DARRAY */ - YYSYMBOL_ITEXTURE1DARRAY = 284, /* ITEXTURE1DARRAY */ - YYSYMBOL_UTEXTURE1DARRAY = 285, /* UTEXTURE1DARRAY */ - YYSYMBOL_TEXTURE2DRECT = 286, /* TEXTURE2DRECT */ - YYSYMBOL_ITEXTURE2DRECT = 287, /* ITEXTURE2DRECT */ - YYSYMBOL_UTEXTURE2DRECT = 288, /* UTEXTURE2DRECT */ - YYSYMBOL_TEXTUREBUFFER = 289, /* TEXTUREBUFFER */ - YYSYMBOL_ITEXTUREBUFFER = 290, /* ITEXTUREBUFFER */ - YYSYMBOL_UTEXTUREBUFFER = 291, /* UTEXTUREBUFFER */ - YYSYMBOL_TEXTURE2DMS = 292, /* TEXTURE2DMS */ - YYSYMBOL_ITEXTURE2DMS = 293, /* ITEXTURE2DMS */ - YYSYMBOL_UTEXTURE2DMS = 294, /* UTEXTURE2DMS */ - YYSYMBOL_TEXTURE2DMSARRAY = 295, /* TEXTURE2DMSARRAY */ - YYSYMBOL_ITEXTURE2DMSARRAY = 296, /* ITEXTURE2DMSARRAY */ - YYSYMBOL_UTEXTURE2DMSARRAY = 297, /* UTEXTURE2DMSARRAY */ - YYSYMBOL_F16TEXTURE1D = 298, /* F16TEXTURE1D */ - YYSYMBOL_F16TEXTURE2D = 299, /* F16TEXTURE2D */ - YYSYMBOL_F16TEXTURE3D = 300, /* F16TEXTURE3D */ - YYSYMBOL_F16TEXTURE2DRECT = 301, /* F16TEXTURE2DRECT */ - YYSYMBOL_F16TEXTURECUBE = 302, /* F16TEXTURECUBE */ - YYSYMBOL_F16TEXTURE1DARRAY = 303, /* F16TEXTURE1DARRAY */ - YYSYMBOL_F16TEXTURE2DARRAY = 304, /* F16TEXTURE2DARRAY */ - YYSYMBOL_F16TEXTURECUBEARRAY = 305, /* F16TEXTURECUBEARRAY */ - YYSYMBOL_F16TEXTUREBUFFER = 306, /* F16TEXTUREBUFFER */ - YYSYMBOL_F16TEXTURE2DMS = 307, /* F16TEXTURE2DMS */ - YYSYMBOL_F16TEXTURE2DMSARRAY = 308, /* F16TEXTURE2DMSARRAY */ - YYSYMBOL_SUBPASSINPUT = 309, /* SUBPASSINPUT */ - YYSYMBOL_SUBPASSINPUTMS = 310, /* SUBPASSINPUTMS */ - YYSYMBOL_ISUBPASSINPUT = 311, /* ISUBPASSINPUT */ - YYSYMBOL_ISUBPASSINPUTMS = 312, /* ISUBPASSINPUTMS */ - YYSYMBOL_USUBPASSINPUT = 313, /* USUBPASSINPUT */ - YYSYMBOL_USUBPASSINPUTMS = 314, /* USUBPASSINPUTMS */ - YYSYMBOL_F16SUBPASSINPUT = 315, /* F16SUBPASSINPUT */ - YYSYMBOL_F16SUBPASSINPUTMS = 316, /* F16SUBPASSINPUTMS */ - YYSYMBOL_SPIRV_INSTRUCTION = 317, /* SPIRV_INSTRUCTION */ - YYSYMBOL_SPIRV_EXECUTION_MODE = 318, /* SPIRV_EXECUTION_MODE */ - YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 319, /* SPIRV_EXECUTION_MODE_ID */ - YYSYMBOL_SPIRV_DECORATE = 320, /* SPIRV_DECORATE */ - YYSYMBOL_SPIRV_DECORATE_ID = 321, /* SPIRV_DECORATE_ID */ - YYSYMBOL_SPIRV_DECORATE_STRING = 322, /* SPIRV_DECORATE_STRING */ - YYSYMBOL_SPIRV_TYPE = 323, /* SPIRV_TYPE */ - YYSYMBOL_SPIRV_STORAGE_CLASS = 324, /* SPIRV_STORAGE_CLASS */ - YYSYMBOL_SPIRV_BY_REFERENCE = 325, /* SPIRV_BY_REFERENCE */ - YYSYMBOL_SPIRV_LITERAL = 326, /* SPIRV_LITERAL */ - YYSYMBOL_LEFT_OP = 327, /* LEFT_OP */ - YYSYMBOL_RIGHT_OP = 328, /* RIGHT_OP */ - YYSYMBOL_INC_OP = 329, /* INC_OP */ - YYSYMBOL_DEC_OP = 330, /* DEC_OP */ - YYSYMBOL_LE_OP = 331, /* LE_OP */ - YYSYMBOL_GE_OP = 332, /* GE_OP */ - YYSYMBOL_EQ_OP = 333, /* EQ_OP */ - YYSYMBOL_NE_OP = 334, /* NE_OP */ - YYSYMBOL_AND_OP = 335, /* AND_OP */ - YYSYMBOL_OR_OP = 336, /* OR_OP */ - YYSYMBOL_XOR_OP = 337, /* XOR_OP */ - YYSYMBOL_MUL_ASSIGN = 338, /* MUL_ASSIGN */ - YYSYMBOL_DIV_ASSIGN = 339, /* DIV_ASSIGN */ - YYSYMBOL_ADD_ASSIGN = 340, /* ADD_ASSIGN */ - YYSYMBOL_MOD_ASSIGN = 341, /* MOD_ASSIGN */ - YYSYMBOL_LEFT_ASSIGN = 342, /* LEFT_ASSIGN */ - YYSYMBOL_RIGHT_ASSIGN = 343, /* RIGHT_ASSIGN */ - YYSYMBOL_AND_ASSIGN = 344, /* AND_ASSIGN */ - YYSYMBOL_XOR_ASSIGN = 345, /* XOR_ASSIGN */ - YYSYMBOL_OR_ASSIGN = 346, /* OR_ASSIGN */ - YYSYMBOL_SUB_ASSIGN = 347, /* SUB_ASSIGN */ - YYSYMBOL_STRING_LITERAL = 348, /* STRING_LITERAL */ - YYSYMBOL_LEFT_PAREN = 349, /* LEFT_PAREN */ - YYSYMBOL_RIGHT_PAREN = 350, /* RIGHT_PAREN */ - YYSYMBOL_LEFT_BRACKET = 351, /* LEFT_BRACKET */ - YYSYMBOL_RIGHT_BRACKET = 352, /* RIGHT_BRACKET */ - YYSYMBOL_LEFT_BRACE = 353, /* LEFT_BRACE */ - YYSYMBOL_RIGHT_BRACE = 354, /* RIGHT_BRACE */ - YYSYMBOL_DOT = 355, /* DOT */ - YYSYMBOL_COMMA = 356, /* COMMA */ - YYSYMBOL_COLON = 357, /* COLON */ - YYSYMBOL_EQUAL = 358, /* EQUAL */ - YYSYMBOL_SEMICOLON = 359, /* SEMICOLON */ - YYSYMBOL_BANG = 360, /* BANG */ - YYSYMBOL_DASH = 361, /* DASH */ - YYSYMBOL_TILDE = 362, /* TILDE */ - YYSYMBOL_PLUS = 363, /* PLUS */ - YYSYMBOL_STAR = 364, /* STAR */ - YYSYMBOL_SLASH = 365, /* SLASH */ - YYSYMBOL_PERCENT = 366, /* PERCENT */ - YYSYMBOL_LEFT_ANGLE = 367, /* LEFT_ANGLE */ - YYSYMBOL_RIGHT_ANGLE = 368, /* RIGHT_ANGLE */ - YYSYMBOL_VERTICAL_BAR = 369, /* VERTICAL_BAR */ - YYSYMBOL_CARET = 370, /* CARET */ - YYSYMBOL_AMPERSAND = 371, /* AMPERSAND */ - YYSYMBOL_QUESTION = 372, /* QUESTION */ - YYSYMBOL_INVARIANT = 373, /* INVARIANT */ - YYSYMBOL_HIGH_PRECISION = 374, /* HIGH_PRECISION */ - YYSYMBOL_MEDIUM_PRECISION = 375, /* MEDIUM_PRECISION */ - YYSYMBOL_LOW_PRECISION = 376, /* LOW_PRECISION */ - YYSYMBOL_PRECISION = 377, /* PRECISION */ - YYSYMBOL_PACKED = 378, /* PACKED */ - YYSYMBOL_RESOURCE = 379, /* RESOURCE */ - YYSYMBOL_SUPERP = 380, /* SUPERP */ - YYSYMBOL_FLOATCONSTANT = 381, /* FLOATCONSTANT */ - YYSYMBOL_INTCONSTANT = 382, /* INTCONSTANT */ - YYSYMBOL_UINTCONSTANT = 383, /* UINTCONSTANT */ - YYSYMBOL_BOOLCONSTANT = 384, /* BOOLCONSTANT */ - YYSYMBOL_IDENTIFIER = 385, /* IDENTIFIER */ - YYSYMBOL_TYPE_NAME = 386, /* TYPE_NAME */ - YYSYMBOL_CENTROID = 387, /* CENTROID */ - YYSYMBOL_IN = 388, /* IN */ - YYSYMBOL_OUT = 389, /* OUT */ - YYSYMBOL_INOUT = 390, /* INOUT */ - YYSYMBOL_STRUCT = 391, /* STRUCT */ - YYSYMBOL_VOID = 392, /* VOID */ - YYSYMBOL_WHILE = 393, /* WHILE */ - YYSYMBOL_BREAK = 394, /* BREAK */ - YYSYMBOL_CONTINUE = 395, /* CONTINUE */ - YYSYMBOL_DO = 396, /* DO */ - YYSYMBOL_ELSE = 397, /* ELSE */ - YYSYMBOL_FOR = 398, /* FOR */ - YYSYMBOL_IF = 399, /* IF */ - YYSYMBOL_DISCARD = 400, /* DISCARD */ - YYSYMBOL_RETURN = 401, /* RETURN */ - YYSYMBOL_SWITCH = 402, /* SWITCH */ - YYSYMBOL_CASE = 403, /* CASE */ - YYSYMBOL_DEFAULT = 404, /* DEFAULT */ - YYSYMBOL_TERMINATE_INVOCATION = 405, /* TERMINATE_INVOCATION */ - YYSYMBOL_TERMINATE_RAY = 406, /* TERMINATE_RAY */ - YYSYMBOL_IGNORE_INTERSECTION = 407, /* IGNORE_INTERSECTION */ - YYSYMBOL_UNIFORM = 408, /* UNIFORM */ - YYSYMBOL_SHARED = 409, /* SHARED */ - YYSYMBOL_BUFFER = 410, /* BUFFER */ - YYSYMBOL_FLAT = 411, /* FLAT */ - YYSYMBOL_SMOOTH = 412, /* SMOOTH */ - YYSYMBOL_LAYOUT = 413, /* LAYOUT */ - YYSYMBOL_DOUBLECONSTANT = 414, /* DOUBLECONSTANT */ - YYSYMBOL_INT16CONSTANT = 415, /* INT16CONSTANT */ - YYSYMBOL_UINT16CONSTANT = 416, /* UINT16CONSTANT */ - YYSYMBOL_FLOAT16CONSTANT = 417, /* FLOAT16CONSTANT */ - YYSYMBOL_INT32CONSTANT = 418, /* INT32CONSTANT */ - YYSYMBOL_UINT32CONSTANT = 419, /* UINT32CONSTANT */ - YYSYMBOL_INT64CONSTANT = 420, /* INT64CONSTANT */ - YYSYMBOL_UINT64CONSTANT = 421, /* UINT64CONSTANT */ - YYSYMBOL_SUBROUTINE = 422, /* SUBROUTINE */ - YYSYMBOL_DEMOTE = 423, /* DEMOTE */ - YYSYMBOL_PAYLOADNV = 424, /* PAYLOADNV */ - YYSYMBOL_PAYLOADINNV = 425, /* PAYLOADINNV */ - YYSYMBOL_HITATTRNV = 426, /* HITATTRNV */ - YYSYMBOL_CALLDATANV = 427, /* CALLDATANV */ - YYSYMBOL_CALLDATAINNV = 428, /* CALLDATAINNV */ - YYSYMBOL_PAYLOADEXT = 429, /* PAYLOADEXT */ - YYSYMBOL_PAYLOADINEXT = 430, /* PAYLOADINEXT */ - YYSYMBOL_HITATTREXT = 431, /* HITATTREXT */ - YYSYMBOL_CALLDATAEXT = 432, /* CALLDATAEXT */ - YYSYMBOL_CALLDATAINEXT = 433, /* CALLDATAINEXT */ - YYSYMBOL_PATCH = 434, /* PATCH */ - YYSYMBOL_SAMPLE = 435, /* SAMPLE */ - YYSYMBOL_NONUNIFORM = 436, /* NONUNIFORM */ - YYSYMBOL_COHERENT = 437, /* COHERENT */ - YYSYMBOL_VOLATILE = 438, /* VOLATILE */ - YYSYMBOL_RESTRICT = 439, /* RESTRICT */ - YYSYMBOL_READONLY = 440, /* READONLY */ - YYSYMBOL_WRITEONLY = 441, /* WRITEONLY */ - YYSYMBOL_DEVICECOHERENT = 442, /* DEVICECOHERENT */ - YYSYMBOL_QUEUEFAMILYCOHERENT = 443, /* QUEUEFAMILYCOHERENT */ - YYSYMBOL_WORKGROUPCOHERENT = 444, /* WORKGROUPCOHERENT */ - YYSYMBOL_SUBGROUPCOHERENT = 445, /* SUBGROUPCOHERENT */ - YYSYMBOL_NONPRIVATE = 446, /* NONPRIVATE */ - YYSYMBOL_SHADERCALLCOHERENT = 447, /* SHADERCALLCOHERENT */ - YYSYMBOL_NOPERSPECTIVE = 448, /* NOPERSPECTIVE */ - YYSYMBOL_EXPLICITINTERPAMD = 449, /* EXPLICITINTERPAMD */ - YYSYMBOL_PERVERTEXEXT = 450, /* PERVERTEXEXT */ - YYSYMBOL_PERVERTEXNV = 451, /* PERVERTEXNV */ - YYSYMBOL_PERPRIMITIVENV = 452, /* PERPRIMITIVENV */ - YYSYMBOL_PERVIEWNV = 453, /* PERVIEWNV */ - YYSYMBOL_PERTASKNV = 454, /* PERTASKNV */ - YYSYMBOL_PERPRIMITIVEEXT = 455, /* PERPRIMITIVEEXT */ - YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 456, /* TASKPAYLOADWORKGROUPEXT */ - YYSYMBOL_PRECISE = 457, /* PRECISE */ - YYSYMBOL_YYACCEPT = 458, /* $accept */ - YYSYMBOL_variable_identifier = 459, /* variable_identifier */ - YYSYMBOL_primary_expression = 460, /* primary_expression */ - YYSYMBOL_postfix_expression = 461, /* postfix_expression */ - YYSYMBOL_integer_expression = 462, /* integer_expression */ - YYSYMBOL_function_call = 463, /* function_call */ - YYSYMBOL_function_call_or_method = 464, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 465, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 466, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 467, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 468, /* function_call_header */ - YYSYMBOL_function_identifier = 469, /* function_identifier */ - YYSYMBOL_unary_expression = 470, /* unary_expression */ - YYSYMBOL_unary_operator = 471, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 472, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 473, /* additive_expression */ - YYSYMBOL_shift_expression = 474, /* shift_expression */ - YYSYMBOL_relational_expression = 475, /* relational_expression */ - YYSYMBOL_equality_expression = 476, /* equality_expression */ - YYSYMBOL_and_expression = 477, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 478, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 479, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 480, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 481, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 482, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 483, /* conditional_expression */ - YYSYMBOL_484_1 = 484, /* $@1 */ - YYSYMBOL_assignment_expression = 485, /* assignment_expression */ - YYSYMBOL_assignment_operator = 486, /* assignment_operator */ - YYSYMBOL_expression = 487, /* expression */ - YYSYMBOL_constant_expression = 488, /* constant_expression */ - YYSYMBOL_declaration = 489, /* declaration */ - YYSYMBOL_block_structure = 490, /* block_structure */ - YYSYMBOL_491_2 = 491, /* $@2 */ - YYSYMBOL_identifier_list = 492, /* identifier_list */ - YYSYMBOL_function_prototype = 493, /* function_prototype */ - YYSYMBOL_function_declarator = 494, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 495, /* function_header_with_parameters */ - YYSYMBOL_function_header = 496, /* function_header */ - YYSYMBOL_parameter_declarator = 497, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 498, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 499, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 500, /* init_declarator_list */ - YYSYMBOL_single_declaration = 501, /* single_declaration */ - YYSYMBOL_fully_specified_type = 502, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 503, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 504, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 505, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 506, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 507, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 508, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 509, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 510, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 511, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 512, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 513, /* type_name_list */ - YYSYMBOL_type_specifier = 514, /* type_specifier */ - YYSYMBOL_array_specifier = 515, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 516, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 517, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 518, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 519, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 520, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 521, /* struct_specifier */ - YYSYMBOL_522_3 = 522, /* $@3 */ - YYSYMBOL_523_4 = 523, /* $@4 */ - YYSYMBOL_struct_declaration_list = 524, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 525, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 526, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 527, /* struct_declarator */ - YYSYMBOL_initializer = 528, /* initializer */ - YYSYMBOL_initializer_list = 529, /* initializer_list */ - YYSYMBOL_declaration_statement = 530, /* declaration_statement */ - YYSYMBOL_statement = 531, /* statement */ - YYSYMBOL_simple_statement = 532, /* simple_statement */ - YYSYMBOL_demote_statement = 533, /* demote_statement */ - YYSYMBOL_compound_statement = 534, /* compound_statement */ - YYSYMBOL_535_5 = 535, /* $@5 */ - YYSYMBOL_536_6 = 536, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 537, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 538, /* statement_scoped */ - YYSYMBOL_539_7 = 539, /* $@7 */ - YYSYMBOL_540_8 = 540, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 541, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 542, /* statement_list */ - YYSYMBOL_expression_statement = 543, /* expression_statement */ - YYSYMBOL_selection_statement = 544, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 545, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 546, /* selection_rest_statement */ - YYSYMBOL_condition = 547, /* condition */ - YYSYMBOL_switch_statement = 548, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 549, /* switch_statement_nonattributed */ - YYSYMBOL_550_9 = 550, /* $@9 */ - YYSYMBOL_switch_statement_list = 551, /* switch_statement_list */ - YYSYMBOL_case_label = 552, /* case_label */ - YYSYMBOL_iteration_statement = 553, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 554, /* iteration_statement_nonattributed */ - YYSYMBOL_555_10 = 555, /* $@10 */ - YYSYMBOL_556_11 = 556, /* $@11 */ - YYSYMBOL_557_12 = 557, /* $@12 */ - YYSYMBOL_for_init_statement = 558, /* for_init_statement */ - YYSYMBOL_conditionopt = 559, /* conditionopt */ - YYSYMBOL_for_rest_statement = 560, /* for_rest_statement */ - YYSYMBOL_jump_statement = 561, /* jump_statement */ - YYSYMBOL_translation_unit = 562, /* translation_unit */ - YYSYMBOL_external_declaration = 563, /* external_declaration */ - YYSYMBOL_function_definition = 564, /* function_definition */ - YYSYMBOL_565_13 = 565, /* $@13 */ - YYSYMBOL_attribute = 566, /* attribute */ - YYSYMBOL_attribute_list = 567, /* attribute_list */ - YYSYMBOL_single_attribute = 568, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 569, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 570, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 571, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 572, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 573, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 574, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 575, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 576, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 577, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 578, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 579, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 580, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 581, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_string_parameter_list = 582, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 583, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 584, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 585, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 586, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 587, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 588 /* spirv_instruction_qualifier_id */ + YYSYMBOL_HITOBJECTNV = 166, /* HITOBJECTNV */ + YYSYMBOL_HITOBJECTATTRNV = 167, /* HITOBJECTATTRNV */ + YYSYMBOL_SAMPLERCUBEARRAY = 168, /* SAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 169, /* SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_ISAMPLERCUBEARRAY = 170, /* ISAMPLERCUBEARRAY */ + YYSYMBOL_USAMPLERCUBEARRAY = 171, /* USAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLER1D = 172, /* SAMPLER1D */ + YYSYMBOL_SAMPLER1DARRAY = 173, /* SAMPLER1DARRAY */ + YYSYMBOL_SAMPLER1DARRAYSHADOW = 174, /* SAMPLER1DARRAYSHADOW */ + YYSYMBOL_ISAMPLER1D = 175, /* ISAMPLER1D */ + YYSYMBOL_SAMPLER1DSHADOW = 176, /* SAMPLER1DSHADOW */ + YYSYMBOL_SAMPLER2DRECT = 177, /* SAMPLER2DRECT */ + YYSYMBOL_SAMPLER2DRECTSHADOW = 178, /* SAMPLER2DRECTSHADOW */ + YYSYMBOL_ISAMPLER2DRECT = 179, /* ISAMPLER2DRECT */ + YYSYMBOL_USAMPLER2DRECT = 180, /* USAMPLER2DRECT */ + YYSYMBOL_SAMPLERBUFFER = 181, /* SAMPLERBUFFER */ + YYSYMBOL_ISAMPLERBUFFER = 182, /* ISAMPLERBUFFER */ + YYSYMBOL_USAMPLERBUFFER = 183, /* USAMPLERBUFFER */ + YYSYMBOL_SAMPLER2DMS = 184, /* SAMPLER2DMS */ + YYSYMBOL_ISAMPLER2DMS = 185, /* ISAMPLER2DMS */ + YYSYMBOL_USAMPLER2DMS = 186, /* USAMPLER2DMS */ + YYSYMBOL_SAMPLER2DMSARRAY = 187, /* SAMPLER2DMSARRAY */ + YYSYMBOL_ISAMPLER2DMSARRAY = 188, /* ISAMPLER2DMSARRAY */ + YYSYMBOL_USAMPLER2DMSARRAY = 189, /* USAMPLER2DMSARRAY */ + YYSYMBOL_SAMPLEREXTERNALOES = 190, /* SAMPLEREXTERNALOES */ + YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 191, /* SAMPLEREXTERNAL2DY2YEXT */ + YYSYMBOL_ISAMPLER1DARRAY = 192, /* ISAMPLER1DARRAY */ + YYSYMBOL_USAMPLER1D = 193, /* USAMPLER1D */ + YYSYMBOL_USAMPLER1DARRAY = 194, /* USAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER1D = 195, /* F16SAMPLER1D */ + YYSYMBOL_F16SAMPLER2D = 196, /* F16SAMPLER2D */ + YYSYMBOL_F16SAMPLER3D = 197, /* F16SAMPLER3D */ + YYSYMBOL_F16SAMPLER2DRECT = 198, /* F16SAMPLER2DRECT */ + YYSYMBOL_F16SAMPLERCUBE = 199, /* F16SAMPLERCUBE */ + YYSYMBOL_F16SAMPLER1DARRAY = 200, /* F16SAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER2DARRAY = 201, /* F16SAMPLER2DARRAY */ + YYSYMBOL_F16SAMPLERCUBEARRAY = 202, /* F16SAMPLERCUBEARRAY */ + YYSYMBOL_F16SAMPLERBUFFER = 203, /* F16SAMPLERBUFFER */ + YYSYMBOL_F16SAMPLER2DMS = 204, /* F16SAMPLER2DMS */ + YYSYMBOL_F16SAMPLER2DMSARRAY = 205, /* F16SAMPLER2DMSARRAY */ + YYSYMBOL_F16SAMPLER1DSHADOW = 206, /* F16SAMPLER1DSHADOW */ + YYSYMBOL_F16SAMPLER2DSHADOW = 207, /* F16SAMPLER2DSHADOW */ + YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 208, /* F16SAMPLER1DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 209, /* F16SAMPLER2DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DRECTSHADOW = 210, /* F16SAMPLER2DRECTSHADOW */ + YYSYMBOL_F16SAMPLERCUBESHADOW = 211, /* F16SAMPLERCUBESHADOW */ + YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 212, /* F16SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_IMAGE1D = 213, /* IMAGE1D */ + YYSYMBOL_IIMAGE1D = 214, /* IIMAGE1D */ + YYSYMBOL_UIMAGE1D = 215, /* UIMAGE1D */ + YYSYMBOL_IMAGE2D = 216, /* IMAGE2D */ + YYSYMBOL_IIMAGE2D = 217, /* IIMAGE2D */ + YYSYMBOL_UIMAGE2D = 218, /* UIMAGE2D */ + YYSYMBOL_IMAGE3D = 219, /* IMAGE3D */ + YYSYMBOL_IIMAGE3D = 220, /* IIMAGE3D */ + YYSYMBOL_UIMAGE3D = 221, /* UIMAGE3D */ + YYSYMBOL_IMAGE2DRECT = 222, /* IMAGE2DRECT */ + YYSYMBOL_IIMAGE2DRECT = 223, /* IIMAGE2DRECT */ + YYSYMBOL_UIMAGE2DRECT = 224, /* UIMAGE2DRECT */ + YYSYMBOL_IMAGECUBE = 225, /* IMAGECUBE */ + YYSYMBOL_IIMAGECUBE = 226, /* IIMAGECUBE */ + YYSYMBOL_UIMAGECUBE = 227, /* UIMAGECUBE */ + YYSYMBOL_IMAGEBUFFER = 228, /* IMAGEBUFFER */ + YYSYMBOL_IIMAGEBUFFER = 229, /* IIMAGEBUFFER */ + YYSYMBOL_UIMAGEBUFFER = 230, /* UIMAGEBUFFER */ + YYSYMBOL_IMAGE1DARRAY = 231, /* IMAGE1DARRAY */ + YYSYMBOL_IIMAGE1DARRAY = 232, /* IIMAGE1DARRAY */ + YYSYMBOL_UIMAGE1DARRAY = 233, /* UIMAGE1DARRAY */ + YYSYMBOL_IMAGE2DARRAY = 234, /* IMAGE2DARRAY */ + YYSYMBOL_IIMAGE2DARRAY = 235, /* IIMAGE2DARRAY */ + YYSYMBOL_UIMAGE2DARRAY = 236, /* UIMAGE2DARRAY */ + YYSYMBOL_IMAGECUBEARRAY = 237, /* IMAGECUBEARRAY */ + YYSYMBOL_IIMAGECUBEARRAY = 238, /* IIMAGECUBEARRAY */ + YYSYMBOL_UIMAGECUBEARRAY = 239, /* UIMAGECUBEARRAY */ + YYSYMBOL_IMAGE2DMS = 240, /* IMAGE2DMS */ + YYSYMBOL_IIMAGE2DMS = 241, /* IIMAGE2DMS */ + YYSYMBOL_UIMAGE2DMS = 242, /* UIMAGE2DMS */ + YYSYMBOL_IMAGE2DMSARRAY = 243, /* IMAGE2DMSARRAY */ + YYSYMBOL_IIMAGE2DMSARRAY = 244, /* IIMAGE2DMSARRAY */ + YYSYMBOL_UIMAGE2DMSARRAY = 245, /* UIMAGE2DMSARRAY */ + YYSYMBOL_F16IMAGE1D = 246, /* F16IMAGE1D */ + YYSYMBOL_F16IMAGE2D = 247, /* F16IMAGE2D */ + YYSYMBOL_F16IMAGE3D = 248, /* F16IMAGE3D */ + YYSYMBOL_F16IMAGE2DRECT = 249, /* F16IMAGE2DRECT */ + YYSYMBOL_F16IMAGECUBE = 250, /* F16IMAGECUBE */ + YYSYMBOL_F16IMAGE1DARRAY = 251, /* F16IMAGE1DARRAY */ + YYSYMBOL_F16IMAGE2DARRAY = 252, /* F16IMAGE2DARRAY */ + YYSYMBOL_F16IMAGECUBEARRAY = 253, /* F16IMAGECUBEARRAY */ + YYSYMBOL_F16IMAGEBUFFER = 254, /* F16IMAGEBUFFER */ + YYSYMBOL_F16IMAGE2DMS = 255, /* F16IMAGE2DMS */ + YYSYMBOL_F16IMAGE2DMSARRAY = 256, /* F16IMAGE2DMSARRAY */ + YYSYMBOL_I64IMAGE1D = 257, /* I64IMAGE1D */ + YYSYMBOL_U64IMAGE1D = 258, /* U64IMAGE1D */ + YYSYMBOL_I64IMAGE2D = 259, /* I64IMAGE2D */ + YYSYMBOL_U64IMAGE2D = 260, /* U64IMAGE2D */ + YYSYMBOL_I64IMAGE3D = 261, /* I64IMAGE3D */ + YYSYMBOL_U64IMAGE3D = 262, /* U64IMAGE3D */ + YYSYMBOL_I64IMAGE2DRECT = 263, /* I64IMAGE2DRECT */ + YYSYMBOL_U64IMAGE2DRECT = 264, /* U64IMAGE2DRECT */ + YYSYMBOL_I64IMAGECUBE = 265, /* I64IMAGECUBE */ + YYSYMBOL_U64IMAGECUBE = 266, /* U64IMAGECUBE */ + YYSYMBOL_I64IMAGEBUFFER = 267, /* I64IMAGEBUFFER */ + YYSYMBOL_U64IMAGEBUFFER = 268, /* U64IMAGEBUFFER */ + YYSYMBOL_I64IMAGE1DARRAY = 269, /* I64IMAGE1DARRAY */ + YYSYMBOL_U64IMAGE1DARRAY = 270, /* U64IMAGE1DARRAY */ + YYSYMBOL_I64IMAGE2DARRAY = 271, /* I64IMAGE2DARRAY */ + YYSYMBOL_U64IMAGE2DARRAY = 272, /* U64IMAGE2DARRAY */ + YYSYMBOL_I64IMAGECUBEARRAY = 273, /* I64IMAGECUBEARRAY */ + YYSYMBOL_U64IMAGECUBEARRAY = 274, /* U64IMAGECUBEARRAY */ + YYSYMBOL_I64IMAGE2DMS = 275, /* I64IMAGE2DMS */ + YYSYMBOL_U64IMAGE2DMS = 276, /* U64IMAGE2DMS */ + YYSYMBOL_I64IMAGE2DMSARRAY = 277, /* I64IMAGE2DMSARRAY */ + YYSYMBOL_U64IMAGE2DMSARRAY = 278, /* U64IMAGE2DMSARRAY */ + YYSYMBOL_TEXTURECUBEARRAY = 279, /* TEXTURECUBEARRAY */ + YYSYMBOL_ITEXTURECUBEARRAY = 280, /* ITEXTURECUBEARRAY */ + YYSYMBOL_UTEXTURECUBEARRAY = 281, /* UTEXTURECUBEARRAY */ + YYSYMBOL_TEXTURE1D = 282, /* TEXTURE1D */ + YYSYMBOL_ITEXTURE1D = 283, /* ITEXTURE1D */ + YYSYMBOL_UTEXTURE1D = 284, /* UTEXTURE1D */ + YYSYMBOL_TEXTURE1DARRAY = 285, /* TEXTURE1DARRAY */ + YYSYMBOL_ITEXTURE1DARRAY = 286, /* ITEXTURE1DARRAY */ + YYSYMBOL_UTEXTURE1DARRAY = 287, /* UTEXTURE1DARRAY */ + YYSYMBOL_TEXTURE2DRECT = 288, /* TEXTURE2DRECT */ + YYSYMBOL_ITEXTURE2DRECT = 289, /* ITEXTURE2DRECT */ + YYSYMBOL_UTEXTURE2DRECT = 290, /* UTEXTURE2DRECT */ + YYSYMBOL_TEXTUREBUFFER = 291, /* TEXTUREBUFFER */ + YYSYMBOL_ITEXTUREBUFFER = 292, /* ITEXTUREBUFFER */ + YYSYMBOL_UTEXTUREBUFFER = 293, /* UTEXTUREBUFFER */ + YYSYMBOL_TEXTURE2DMS = 294, /* TEXTURE2DMS */ + YYSYMBOL_ITEXTURE2DMS = 295, /* ITEXTURE2DMS */ + YYSYMBOL_UTEXTURE2DMS = 296, /* UTEXTURE2DMS */ + YYSYMBOL_TEXTURE2DMSARRAY = 297, /* TEXTURE2DMSARRAY */ + YYSYMBOL_ITEXTURE2DMSARRAY = 298, /* ITEXTURE2DMSARRAY */ + YYSYMBOL_UTEXTURE2DMSARRAY = 299, /* UTEXTURE2DMSARRAY */ + YYSYMBOL_F16TEXTURE1D = 300, /* F16TEXTURE1D */ + YYSYMBOL_F16TEXTURE2D = 301, /* F16TEXTURE2D */ + YYSYMBOL_F16TEXTURE3D = 302, /* F16TEXTURE3D */ + YYSYMBOL_F16TEXTURE2DRECT = 303, /* F16TEXTURE2DRECT */ + YYSYMBOL_F16TEXTURECUBE = 304, /* F16TEXTURECUBE */ + YYSYMBOL_F16TEXTURE1DARRAY = 305, /* F16TEXTURE1DARRAY */ + YYSYMBOL_F16TEXTURE2DARRAY = 306, /* F16TEXTURE2DARRAY */ + YYSYMBOL_F16TEXTURECUBEARRAY = 307, /* F16TEXTURECUBEARRAY */ + YYSYMBOL_F16TEXTUREBUFFER = 308, /* F16TEXTUREBUFFER */ + YYSYMBOL_F16TEXTURE2DMS = 309, /* F16TEXTURE2DMS */ + YYSYMBOL_F16TEXTURE2DMSARRAY = 310, /* F16TEXTURE2DMSARRAY */ + YYSYMBOL_SUBPASSINPUT = 311, /* SUBPASSINPUT */ + YYSYMBOL_SUBPASSINPUTMS = 312, /* SUBPASSINPUTMS */ + YYSYMBOL_ISUBPASSINPUT = 313, /* ISUBPASSINPUT */ + YYSYMBOL_ISUBPASSINPUTMS = 314, /* ISUBPASSINPUTMS */ + YYSYMBOL_USUBPASSINPUT = 315, /* USUBPASSINPUT */ + YYSYMBOL_USUBPASSINPUTMS = 316, /* USUBPASSINPUTMS */ + YYSYMBOL_F16SUBPASSINPUT = 317, /* F16SUBPASSINPUT */ + YYSYMBOL_F16SUBPASSINPUTMS = 318, /* F16SUBPASSINPUTMS */ + YYSYMBOL_SPIRV_INSTRUCTION = 319, /* SPIRV_INSTRUCTION */ + YYSYMBOL_SPIRV_EXECUTION_MODE = 320, /* SPIRV_EXECUTION_MODE */ + YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 321, /* SPIRV_EXECUTION_MODE_ID */ + YYSYMBOL_SPIRV_DECORATE = 322, /* SPIRV_DECORATE */ + YYSYMBOL_SPIRV_DECORATE_ID = 323, /* SPIRV_DECORATE_ID */ + YYSYMBOL_SPIRV_DECORATE_STRING = 324, /* SPIRV_DECORATE_STRING */ + YYSYMBOL_SPIRV_TYPE = 325, /* SPIRV_TYPE */ + YYSYMBOL_SPIRV_STORAGE_CLASS = 326, /* SPIRV_STORAGE_CLASS */ + YYSYMBOL_SPIRV_BY_REFERENCE = 327, /* SPIRV_BY_REFERENCE */ + YYSYMBOL_SPIRV_LITERAL = 328, /* SPIRV_LITERAL */ + YYSYMBOL_LEFT_OP = 329, /* LEFT_OP */ + YYSYMBOL_RIGHT_OP = 330, /* RIGHT_OP */ + YYSYMBOL_INC_OP = 331, /* INC_OP */ + YYSYMBOL_DEC_OP = 332, /* DEC_OP */ + YYSYMBOL_LE_OP = 333, /* LE_OP */ + YYSYMBOL_GE_OP = 334, /* GE_OP */ + YYSYMBOL_EQ_OP = 335, /* EQ_OP */ + YYSYMBOL_NE_OP = 336, /* NE_OP */ + YYSYMBOL_AND_OP = 337, /* AND_OP */ + YYSYMBOL_OR_OP = 338, /* OR_OP */ + YYSYMBOL_XOR_OP = 339, /* XOR_OP */ + YYSYMBOL_MUL_ASSIGN = 340, /* MUL_ASSIGN */ + YYSYMBOL_DIV_ASSIGN = 341, /* DIV_ASSIGN */ + YYSYMBOL_ADD_ASSIGN = 342, /* ADD_ASSIGN */ + YYSYMBOL_MOD_ASSIGN = 343, /* MOD_ASSIGN */ + YYSYMBOL_LEFT_ASSIGN = 344, /* LEFT_ASSIGN */ + YYSYMBOL_RIGHT_ASSIGN = 345, /* RIGHT_ASSIGN */ + YYSYMBOL_AND_ASSIGN = 346, /* AND_ASSIGN */ + YYSYMBOL_XOR_ASSIGN = 347, /* XOR_ASSIGN */ + YYSYMBOL_OR_ASSIGN = 348, /* OR_ASSIGN */ + YYSYMBOL_SUB_ASSIGN = 349, /* SUB_ASSIGN */ + YYSYMBOL_STRING_LITERAL = 350, /* STRING_LITERAL */ + YYSYMBOL_LEFT_PAREN = 351, /* LEFT_PAREN */ + YYSYMBOL_RIGHT_PAREN = 352, /* RIGHT_PAREN */ + YYSYMBOL_LEFT_BRACKET = 353, /* LEFT_BRACKET */ + YYSYMBOL_RIGHT_BRACKET = 354, /* RIGHT_BRACKET */ + YYSYMBOL_LEFT_BRACE = 355, /* LEFT_BRACE */ + YYSYMBOL_RIGHT_BRACE = 356, /* RIGHT_BRACE */ + YYSYMBOL_DOT = 357, /* DOT */ + YYSYMBOL_COMMA = 358, /* COMMA */ + YYSYMBOL_COLON = 359, /* COLON */ + YYSYMBOL_EQUAL = 360, /* EQUAL */ + YYSYMBOL_SEMICOLON = 361, /* SEMICOLON */ + YYSYMBOL_BANG = 362, /* BANG */ + YYSYMBOL_DASH = 363, /* DASH */ + YYSYMBOL_TILDE = 364, /* TILDE */ + YYSYMBOL_PLUS = 365, /* PLUS */ + YYSYMBOL_STAR = 366, /* STAR */ + YYSYMBOL_SLASH = 367, /* SLASH */ + YYSYMBOL_PERCENT = 368, /* PERCENT */ + YYSYMBOL_LEFT_ANGLE = 369, /* LEFT_ANGLE */ + YYSYMBOL_RIGHT_ANGLE = 370, /* RIGHT_ANGLE */ + YYSYMBOL_VERTICAL_BAR = 371, /* VERTICAL_BAR */ + YYSYMBOL_CARET = 372, /* CARET */ + YYSYMBOL_AMPERSAND = 373, /* AMPERSAND */ + YYSYMBOL_QUESTION = 374, /* QUESTION */ + YYSYMBOL_INVARIANT = 375, /* INVARIANT */ + YYSYMBOL_HIGH_PRECISION = 376, /* HIGH_PRECISION */ + YYSYMBOL_MEDIUM_PRECISION = 377, /* MEDIUM_PRECISION */ + YYSYMBOL_LOW_PRECISION = 378, /* LOW_PRECISION */ + YYSYMBOL_PRECISION = 379, /* PRECISION */ + YYSYMBOL_PACKED = 380, /* PACKED */ + YYSYMBOL_RESOURCE = 381, /* RESOURCE */ + YYSYMBOL_SUPERP = 382, /* SUPERP */ + YYSYMBOL_FLOATCONSTANT = 383, /* FLOATCONSTANT */ + YYSYMBOL_INTCONSTANT = 384, /* INTCONSTANT */ + YYSYMBOL_UINTCONSTANT = 385, /* UINTCONSTANT */ + YYSYMBOL_BOOLCONSTANT = 386, /* BOOLCONSTANT */ + YYSYMBOL_IDENTIFIER = 387, /* IDENTIFIER */ + YYSYMBOL_TYPE_NAME = 388, /* TYPE_NAME */ + YYSYMBOL_CENTROID = 389, /* CENTROID */ + YYSYMBOL_IN = 390, /* IN */ + YYSYMBOL_OUT = 391, /* OUT */ + YYSYMBOL_INOUT = 392, /* INOUT */ + YYSYMBOL_STRUCT = 393, /* STRUCT */ + YYSYMBOL_VOID = 394, /* VOID */ + YYSYMBOL_WHILE = 395, /* WHILE */ + YYSYMBOL_BREAK = 396, /* BREAK */ + YYSYMBOL_CONTINUE = 397, /* CONTINUE */ + YYSYMBOL_DO = 398, /* DO */ + YYSYMBOL_ELSE = 399, /* ELSE */ + YYSYMBOL_FOR = 400, /* FOR */ + YYSYMBOL_IF = 401, /* IF */ + YYSYMBOL_DISCARD = 402, /* DISCARD */ + YYSYMBOL_RETURN = 403, /* RETURN */ + YYSYMBOL_SWITCH = 404, /* SWITCH */ + YYSYMBOL_CASE = 405, /* CASE */ + YYSYMBOL_DEFAULT = 406, /* DEFAULT */ + YYSYMBOL_TERMINATE_INVOCATION = 407, /* TERMINATE_INVOCATION */ + YYSYMBOL_TERMINATE_RAY = 408, /* TERMINATE_RAY */ + YYSYMBOL_IGNORE_INTERSECTION = 409, /* IGNORE_INTERSECTION */ + YYSYMBOL_UNIFORM = 410, /* UNIFORM */ + YYSYMBOL_SHARED = 411, /* SHARED */ + YYSYMBOL_BUFFER = 412, /* BUFFER */ + YYSYMBOL_FLAT = 413, /* FLAT */ + YYSYMBOL_SMOOTH = 414, /* SMOOTH */ + YYSYMBOL_LAYOUT = 415, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 416, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 417, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 418, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 419, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 420, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 421, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 422, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 423, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 424, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 425, /* DEMOTE */ + YYSYMBOL_PAYLOADNV = 426, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 427, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 428, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 429, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 430, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 431, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 432, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 433, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 434, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 435, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 436, /* PATCH */ + YYSYMBOL_SAMPLE = 437, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 438, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 439, /* COHERENT */ + YYSYMBOL_VOLATILE = 440, /* VOLATILE */ + YYSYMBOL_RESTRICT = 441, /* RESTRICT */ + YYSYMBOL_READONLY = 442, /* READONLY */ + YYSYMBOL_WRITEONLY = 443, /* WRITEONLY */ + YYSYMBOL_DEVICECOHERENT = 444, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 445, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 446, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 447, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 448, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 449, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 450, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 451, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXEXT = 452, /* PERVERTEXEXT */ + YYSYMBOL_PERVERTEXNV = 453, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 454, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 455, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 456, /* PERTASKNV */ + YYSYMBOL_PERPRIMITIVEEXT = 457, /* PERPRIMITIVEEXT */ + YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 458, /* TASKPAYLOADWORKGROUPEXT */ + YYSYMBOL_PRECISE = 459, /* PRECISE */ + YYSYMBOL_YYACCEPT = 460, /* $accept */ + YYSYMBOL_variable_identifier = 461, /* variable_identifier */ + YYSYMBOL_primary_expression = 462, /* primary_expression */ + YYSYMBOL_postfix_expression = 463, /* postfix_expression */ + YYSYMBOL_integer_expression = 464, /* integer_expression */ + YYSYMBOL_function_call = 465, /* function_call */ + YYSYMBOL_function_call_or_method = 466, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 467, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 468, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 469, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 470, /* function_call_header */ + YYSYMBOL_function_identifier = 471, /* function_identifier */ + YYSYMBOL_unary_expression = 472, /* unary_expression */ + YYSYMBOL_unary_operator = 473, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 474, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 475, /* additive_expression */ + YYSYMBOL_shift_expression = 476, /* shift_expression */ + YYSYMBOL_relational_expression = 477, /* relational_expression */ + YYSYMBOL_equality_expression = 478, /* equality_expression */ + YYSYMBOL_and_expression = 479, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 480, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 481, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 482, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 483, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 484, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 485, /* conditional_expression */ + YYSYMBOL_486_1 = 486, /* $@1 */ + YYSYMBOL_assignment_expression = 487, /* assignment_expression */ + YYSYMBOL_assignment_operator = 488, /* assignment_operator */ + YYSYMBOL_expression = 489, /* expression */ + YYSYMBOL_constant_expression = 490, /* constant_expression */ + YYSYMBOL_declaration = 491, /* declaration */ + YYSYMBOL_block_structure = 492, /* block_structure */ + YYSYMBOL_493_2 = 493, /* $@2 */ + YYSYMBOL_identifier_list = 494, /* identifier_list */ + YYSYMBOL_function_prototype = 495, /* function_prototype */ + YYSYMBOL_function_declarator = 496, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 497, /* function_header_with_parameters */ + YYSYMBOL_function_header = 498, /* function_header */ + YYSYMBOL_parameter_declarator = 499, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 500, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 501, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 502, /* init_declarator_list */ + YYSYMBOL_single_declaration = 503, /* single_declaration */ + YYSYMBOL_fully_specified_type = 504, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 505, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 506, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 507, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 508, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 509, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 510, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 511, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 512, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 513, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 514, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 515, /* type_name_list */ + YYSYMBOL_type_specifier = 516, /* type_specifier */ + YYSYMBOL_array_specifier = 517, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 518, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 519, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 520, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 521, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 522, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 523, /* struct_specifier */ + YYSYMBOL_524_3 = 524, /* $@3 */ + YYSYMBOL_525_4 = 525, /* $@4 */ + YYSYMBOL_struct_declaration_list = 526, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 527, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 528, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 529, /* struct_declarator */ + YYSYMBOL_initializer = 530, /* initializer */ + YYSYMBOL_initializer_list = 531, /* initializer_list */ + YYSYMBOL_declaration_statement = 532, /* declaration_statement */ + YYSYMBOL_statement = 533, /* statement */ + YYSYMBOL_simple_statement = 534, /* simple_statement */ + YYSYMBOL_demote_statement = 535, /* demote_statement */ + YYSYMBOL_compound_statement = 536, /* compound_statement */ + YYSYMBOL_537_5 = 537, /* $@5 */ + YYSYMBOL_538_6 = 538, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 539, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 540, /* statement_scoped */ + YYSYMBOL_541_7 = 541, /* $@7 */ + YYSYMBOL_542_8 = 542, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 543, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 544, /* statement_list */ + YYSYMBOL_expression_statement = 545, /* expression_statement */ + YYSYMBOL_selection_statement = 546, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 547, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 548, /* selection_rest_statement */ + YYSYMBOL_condition = 549, /* condition */ + YYSYMBOL_switch_statement = 550, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 551, /* switch_statement_nonattributed */ + YYSYMBOL_552_9 = 552, /* $@9 */ + YYSYMBOL_switch_statement_list = 553, /* switch_statement_list */ + YYSYMBOL_case_label = 554, /* case_label */ + YYSYMBOL_iteration_statement = 555, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 556, /* iteration_statement_nonattributed */ + YYSYMBOL_557_10 = 557, /* $@10 */ + YYSYMBOL_558_11 = 558, /* $@11 */ + YYSYMBOL_559_12 = 559, /* $@12 */ + YYSYMBOL_for_init_statement = 560, /* for_init_statement */ + YYSYMBOL_conditionopt = 561, /* conditionopt */ + YYSYMBOL_for_rest_statement = 562, /* for_rest_statement */ + YYSYMBOL_jump_statement = 563, /* jump_statement */ + YYSYMBOL_translation_unit = 564, /* translation_unit */ + YYSYMBOL_external_declaration = 565, /* external_declaration */ + YYSYMBOL_function_definition = 566, /* function_definition */ + YYSYMBOL_567_13 = 567, /* $@13 */ + YYSYMBOL_attribute = 568, /* attribute */ + YYSYMBOL_attribute_list = 569, /* attribute_list */ + YYSYMBOL_single_attribute = 570, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 571, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 572, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 573, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 574, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 575, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 576, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 577, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 578, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 579, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 580, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 581, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 582, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 583, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_string_parameter_list = 584, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 585, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 586, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 587, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 588, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 589, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 590 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -731,7 +733,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 735 "MachineIndependent/glslang_tab.cpp" +#line 737 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1035,21 +1037,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 445 +#define YYFINAL 447 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12503 +#define YYLAST 12557 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 458 +#define YYNTOKENS 460 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 131 /* YYNRULES -- Number of rules. */ -#define YYNRULES 686 +#define YYNRULES 688 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 932 +#define YYNSTATES 934 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 712 +#define YYMAXUTOK 714 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1134,82 +1136,82 @@ static const yytype_int16 yytranslate[] = 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457 + 455, 456, 457, 458, 459 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 392, 392, 398, 401, 406, 409, 412, 416, 420, - 423, 427, 431, 435, 439, 443, 447, 453, 461, 464, - 467, 470, 473, 478, 486, 493, 500, 506, 510, 517, - 520, 526, 533, 543, 551, 556, 584, 593, 599, 603, - 607, 627, 628, 629, 630, 636, 637, 642, 647, 656, - 657, 662, 670, 671, 677, 686, 687, 692, 697, 702, - 710, 711, 720, 732, 733, 742, 743, 752, 753, 762, - 763, 771, 772, 780, 781, 789, 790, 790, 808, 809, - 825, 829, 833, 837, 842, 846, 850, 854, 858, 862, - 866, 873, 876, 887, 894, 900, 907, 913, 918, 925, - 929, 933, 937, 942, 947, 956, 956, 967, 971, 978, - 982, 988, 994, 1004, 1007, 1014, 1022, 1042, 1065, 1080, - 1105, 1116, 1126, 1136, 1146, 1155, 1158, 1162, 1166, 1171, - 1179, 1186, 1191, 1196, 1201, 1210, 1220, 1247, 1256, 1263, - 1271, 1278, 1285, 1293, 1301, 1311, 1321, 1328, 1339, 1345, - 1348, 1355, 1359, 1363, 1372, 1382, 1385, 1396, 1399, 1402, - 1406, 1410, 1415, 1419, 1422, 1427, 1431, 1436, 1445, 1449, - 1454, 1460, 1466, 1473, 1478, 1486, 1492, 1504, 1518, 1524, - 1529, 1537, 1545, 1553, 1561, 1569, 1577, 1585, 1593, 1600, - 1607, 1611, 1616, 1621, 1626, 1631, 1636, 1641, 1645, 1649, - 1653, 1657, 1663, 1669, 1681, 1688, 1691, 1700, 1705, 1715, - 1720, 1728, 1732, 1742, 1745, 1751, 1757, 1764, 1774, 1778, - 1782, 1786, 1791, 1795, 1800, 1805, 1810, 1815, 1820, 1825, - 1830, 1835, 1840, 1846, 1852, 1858, 1863, 1868, 1873, 1878, - 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1919, 1926, 1931, - 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, 1981, - 1989, 1997, 2005, 2011, 2017, 2023, 2029, 2035, 2041, 2047, - 2053, 2059, 2065, 2071, 2077, 2083, 2089, 2095, 2101, 2107, - 2113, 2119, 2125, 2131, 2137, 2143, 2149, 2155, 2161, 2167, - 2173, 2179, 2185, 2191, 2197, 2203, 2211, 2219, 2227, 2235, - 2243, 2251, 2259, 2267, 2275, 2283, 2291, 2299, 2305, 2311, - 2317, 2323, 2329, 2335, 2341, 2347, 2353, 2359, 2365, 2371, - 2377, 2383, 2389, 2395, 2401, 2407, 2413, 2419, 2425, 2431, - 2437, 2443, 2449, 2455, 2461, 2467, 2473, 2479, 2485, 2491, - 2497, 2503, 2509, 2515, 2519, 2523, 2527, 2532, 2538, 2543, - 2548, 2553, 2558, 2563, 2568, 2574, 2579, 2584, 2589, 2594, - 2599, 2605, 2611, 2617, 2623, 2629, 2635, 2641, 2647, 2653, - 2659, 2665, 2671, 2677, 2683, 2688, 2693, 2698, 2703, 2708, - 2713, 2719, 2724, 2729, 2734, 2739, 2744, 2749, 2754, 2760, - 2765, 2770, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, - 2815, 2820, 2825, 2830, 2836, 2841, 2846, 2852, 2858, 2863, - 2868, 2873, 2879, 2884, 2889, 2894, 2900, 2905, 2910, 2915, - 2921, 2926, 2931, 2936, 2942, 2948, 2954, 2960, 2965, 2971, - 2977, 2983, 2988, 2993, 2998, 3003, 3008, 3014, 3019, 3024, - 3029, 3035, 3040, 3045, 3050, 3056, 3061, 3066, 3071, 3077, - 3082, 3087, 3092, 3098, 3103, 3108, 3113, 3119, 3124, 3129, - 3134, 3140, 3145, 3150, 3155, 3161, 3166, 3171, 3176, 3182, - 3187, 3192, 3197, 3203, 3208, 3213, 3218, 3224, 3229, 3234, - 3239, 3245, 3250, 3255, 3260, 3266, 3271, 3276, 3281, 3287, - 3292, 3297, 3302, 3308, 3313, 3318, 3323, 3328, 3333, 3338, - 3343, 3348, 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, - 3393, 3398, 3403, 3408, 3413, 3418, 3423, 3428, 3434, 3440, - 3446, 3452, 3459, 3466, 3472, 3478, 3484, 3490, 3496, 3502, - 3508, 3513, 3518, 3534, 3539, 3544, 3552, 3552, 3563, 3563, - 3573, 3576, 3589, 3611, 3638, 3642, 3648, 3653, 3664, 3668, - 3674, 3680, 3691, 3694, 3701, 3705, 3706, 3712, 3713, 3714, - 3715, 3716, 3717, 3718, 3720, 3726, 3735, 3736, 3740, 3736, - 3752, 3753, 3757, 3757, 3764, 3764, 3778, 3781, 3789, 3797, - 3808, 3809, 3813, 3817, 3825, 3832, 3836, 3844, 3848, 3861, - 3865, 3873, 3873, 3893, 3896, 3902, 3914, 3926, 3930, 3938, - 3938, 3953, 3953, 3971, 3971, 3992, 3995, 4001, 4004, 4010, - 4014, 4021, 4026, 4031, 4038, 4041, 4045, 4050, 4054, 4064, - 4068, 4077, 4080, 4084, 4093, 4093, 4135, 4140, 4143, 4148, - 4151, 4158, 4161, 4166, 4169, 4174, 4177, 4182, 4185, 4190, - 4194, 4199, 4203, 4208, 4212, 4219, 4222, 4227, 4230, 4233, - 4236, 4239, 4244, 4253, 4264, 4269, 4277, 4281, 4286, 4290, - 4295, 4299, 4304, 4308, 4315, 4318, 4323, 4326, 4329, 4332, - 4337, 4345, 4355, 4359, 4364, 4368, 4373, 4377, 4384, 4387, - 4392, 4397, 4400, 4406, 4409, 4414, 4417 + 0, 393, 393, 399, 402, 407, 410, 413, 417, 421, + 424, 428, 432, 436, 440, 444, 448, 454, 462, 465, + 468, 471, 474, 479, 487, 494, 501, 507, 511, 518, + 521, 527, 534, 544, 552, 557, 585, 594, 600, 604, + 608, 628, 629, 630, 631, 637, 638, 643, 648, 657, + 658, 663, 671, 672, 678, 687, 688, 693, 698, 703, + 711, 712, 721, 733, 734, 743, 744, 753, 754, 763, + 764, 772, 773, 781, 782, 790, 791, 791, 809, 810, + 826, 830, 834, 838, 843, 847, 851, 855, 859, 863, + 867, 874, 877, 888, 895, 901, 908, 914, 919, 926, + 930, 934, 938, 943, 948, 957, 957, 968, 972, 979, + 983, 989, 995, 1005, 1008, 1015, 1023, 1043, 1066, 1081, + 1106, 1117, 1127, 1137, 1147, 1156, 1159, 1163, 1167, 1172, + 1180, 1187, 1192, 1197, 1202, 1211, 1221, 1248, 1257, 1264, + 1272, 1279, 1286, 1294, 1302, 1312, 1322, 1329, 1340, 1346, + 1349, 1356, 1360, 1364, 1373, 1383, 1386, 1397, 1400, 1403, + 1407, 1411, 1416, 1420, 1423, 1428, 1432, 1437, 1446, 1450, + 1455, 1461, 1467, 1474, 1479, 1487, 1493, 1505, 1519, 1525, + 1530, 1538, 1546, 1554, 1562, 1570, 1578, 1586, 1594, 1602, + 1609, 1616, 1620, 1625, 1630, 1635, 1640, 1645, 1650, 1654, + 1658, 1662, 1666, 1672, 1678, 1690, 1697, 1700, 1709, 1714, + 1724, 1729, 1737, 1741, 1751, 1754, 1760, 1766, 1773, 1783, + 1787, 1791, 1795, 1800, 1804, 1809, 1814, 1819, 1824, 1829, + 1834, 1839, 1844, 1849, 1855, 1861, 1867, 1872, 1877, 1882, + 1887, 1892, 1897, 1902, 1907, 1912, 1917, 1922, 1928, 1935, + 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, + 1990, 1998, 2006, 2014, 2020, 2026, 2032, 2038, 2044, 2050, + 2056, 2062, 2068, 2074, 2080, 2086, 2092, 2098, 2104, 2110, + 2116, 2122, 2128, 2134, 2140, 2146, 2152, 2158, 2164, 2170, + 2176, 2182, 2188, 2194, 2200, 2206, 2212, 2220, 2228, 2236, + 2244, 2252, 2260, 2268, 2276, 2284, 2292, 2300, 2308, 2314, + 2320, 2326, 2332, 2338, 2344, 2350, 2356, 2362, 2368, 2374, + 2380, 2386, 2392, 2398, 2404, 2410, 2416, 2422, 2428, 2434, + 2440, 2446, 2452, 2458, 2464, 2470, 2476, 2482, 2488, 2494, + 2500, 2506, 2512, 2518, 2524, 2528, 2532, 2536, 2541, 2547, + 2552, 2557, 2562, 2567, 2572, 2577, 2583, 2588, 2593, 2598, + 2603, 2608, 2614, 2620, 2626, 2632, 2638, 2644, 2650, 2656, + 2662, 2668, 2674, 2680, 2686, 2692, 2697, 2702, 2707, 2712, + 2717, 2722, 2728, 2733, 2738, 2743, 2748, 2753, 2758, 2763, + 2769, 2774, 2779, 2784, 2789, 2794, 2799, 2804, 2809, 2814, + 2819, 2824, 2829, 2834, 2839, 2845, 2850, 2855, 2861, 2867, + 2872, 2877, 2882, 2888, 2893, 2898, 2903, 2909, 2914, 2919, + 2924, 2930, 2935, 2940, 2945, 2951, 2957, 2963, 2969, 2974, + 2980, 2986, 2992, 2997, 3002, 3007, 3012, 3017, 3023, 3028, + 3033, 3038, 3044, 3049, 3054, 3059, 3065, 3070, 3075, 3080, + 3086, 3091, 3096, 3101, 3107, 3112, 3117, 3122, 3128, 3133, + 3138, 3143, 3149, 3154, 3159, 3164, 3170, 3175, 3180, 3185, + 3191, 3196, 3201, 3206, 3212, 3217, 3222, 3227, 3233, 3238, + 3243, 3248, 3254, 3259, 3264, 3269, 3275, 3280, 3285, 3290, + 3296, 3301, 3306, 3311, 3317, 3322, 3327, 3332, 3337, 3342, + 3347, 3352, 3357, 3362, 3367, 3372, 3377, 3382, 3387, 3392, + 3397, 3402, 3407, 3412, 3417, 3422, 3427, 3432, 3437, 3443, + 3449, 3455, 3461, 3468, 3475, 3481, 3487, 3493, 3499, 3505, + 3511, 3517, 3521, 3526, 3531, 3547, 3552, 3557, 3565, 3565, + 3576, 3576, 3586, 3589, 3602, 3624, 3651, 3655, 3661, 3666, + 3677, 3681, 3687, 3693, 3704, 3707, 3714, 3718, 3719, 3725, + 3726, 3727, 3728, 3729, 3730, 3731, 3733, 3739, 3748, 3749, + 3753, 3749, 3765, 3766, 3770, 3770, 3777, 3777, 3791, 3794, + 3802, 3810, 3821, 3822, 3826, 3830, 3838, 3845, 3849, 3857, + 3861, 3874, 3878, 3886, 3886, 3906, 3909, 3915, 3927, 3939, + 3943, 3951, 3951, 3966, 3966, 3984, 3984, 4005, 4008, 4014, + 4017, 4023, 4027, 4034, 4039, 4044, 4051, 4054, 4058, 4063, + 4067, 4077, 4081, 4090, 4093, 4097, 4106, 4106, 4148, 4153, + 4156, 4161, 4164, 4171, 4174, 4179, 4182, 4187, 4190, 4195, + 4198, 4203, 4207, 4212, 4216, 4221, 4225, 4232, 4235, 4240, + 4243, 4246, 4249, 4252, 4257, 4266, 4277, 4282, 4290, 4294, + 4299, 4303, 4308, 4312, 4317, 4321, 4328, 4331, 4336, 4339, + 4342, 4345, 4350, 4358, 4368, 4372, 4377, 4381, 4386, 4390, + 4397, 4400, 4405, 4410, 4413, 4419, 4422, 4427, 4430 }; #endif @@ -1254,9 +1256,9 @@ static const char *const yytname[] = "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", - "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", - "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", - "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", + "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "HITOBJECTNV", + "HITOBJECTATTRNV", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", + "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", @@ -1434,16 +1436,16 @@ static const yytype_int16 yytoknum[] = 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712 + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714 }; #endif -#define YYPACT_NINF (-813) +#define YYPACT_NINF (-868) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-573) +#define YYTABLE_NINF (-575) #define yytable_value_is_error(Yyn) \ 0 @@ -1452,100 +1454,100 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4575, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -300, -272, -219, -123, -120, - -118, -105, -87, -813, -813, -317, -813, -813, -813, -813, - -813, -62, -813, -813, -813, -813, -813, -324, -813, -813, - -813, -813, -813, -813, -76, -64, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -319, -260, -133, -174, 7760, -191, -813, -166, -813, - -813, -813, -813, 5485, -813, -813, -813, -813, -61, -813, - -813, 935, -813, -813, 7760, -39, -813, -813, -813, 5940, - -50, -335, -267, -162, -152, -139, -50, -137, -46, 12111, - -813, -29, -339, -43, -813, -268, -813, -27, -6, 7760, - -813, -813, -813, 7760, -37, -36, -813, -298, -813, -237, - -813, -813, 10812, -5, -813, -813, -813, 1, -33, 7760, - -813, -4, -2, -3, -813, -236, -813, -227, -1, 3, - 4, 5, -225, 6, 10, 12, 13, 14, 17, -223, - 8, 18, 16, -304, -813, 21, 7760, -813, 19, -813, - -222, -813, -813, -207, 9080, -813, -247, 1390, -813, -813, - -813, -813, -813, -5, -270, -813, 9513, -250, -813, -22, - -813, -132, 10812, 10812, -813, 10812, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -265, -813, -813, -813, 25, - -204, 11245, 27, -813, 10812, -813, -813, -314, 30, -6, - 33, -813, -315, -50, -813, 15, -813, -325, 32, -130, - 10812, -129, -813, -146, -125, 10812, -124, 39, -119, -50, - -813, 11678, -813, -115, 10812, 36, -46, -813, 7760, 20, - 6395, -813, 7760, 10812, -813, -339, -813, 29, -813, -813, - -47, -83, -59, -288, -18, -17, 22, 26, 54, 59, - -309, 46, 9946, -813, 37, -813, -813, 50, 56, 58, - -813, 72, 74, 65, 10379, 76, 10812, 69, 68, 73, - 75, 77, -168, -813, -813, -82, -813, -260, 79, 82, - -813, -813, -813, -813, -813, 1845, -813, -813, -813, -813, - -813, -813, -813, -813, -813, 5030, 30, 9513, -241, 8214, - -813, -813, 9513, 7760, -813, 52, -813, -813, -813, -202, - -813, -813, 10812, 55, -813, -813, 10812, 85, -813, -813, - -813, 10812, -813, -813, -813, -310, -813, -813, -197, 81, - -813, -813, -813, -813, -813, -813, -195, -813, -194, -813, - -813, -190, 87, -813, -813, -813, -813, -169, -813, -167, - -813, -165, 89, -813, -158, 90, -157, 81, -813, -156, - -813, 91, 97, -813, -813, 20, -5, -77, -813, -813, - -813, 6850, -813, -813, -813, 10812, 10812, 10812, 10812, 10812, - 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, 10812, - 10812, 10812, 10812, 10812, -813, -813, -813, 96, -813, 2300, - -813, -813, -813, 2300, -813, 10812, -813, -813, -49, 10812, - -26, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, 10812, 10812, -813, - -813, -813, -813, -813, -813, -813, 9513, -813, -813, -31, - -813, 7305, -813, -813, 98, 95, -813, -813, -813, -813, - -813, -172, -134, -813, -307, -813, -325, -813, -325, -813, - 10812, 10812, -813, -146, -813, -146, -813, 10812, 10812, -813, - 104, 39, -813, 11678, -813, 10812, -813, -813, -48, 30, - 20, -813, -813, -813, -813, -813, -47, -47, -83, -83, - -59, -59, -59, -59, -288, -288, -18, -17, 22, 26, - 54, 59, 10812, -813, 2300, 4120, 60, 3665, -155, -813, - -154, -813, -813, -813, -813, -813, 8647, -813, -813, -813, - 106, -813, -15, -813, -147, -813, -145, -813, -144, -813, - -143, -813, -142, -140, -813, -813, -813, -24, 101, 95, - 71, 107, 110, -813, -813, 4120, 109, -813, -813, -813, - -813, -813, -813, -813, -813, -813, -813, -813, 10812, -813, - 102, 2755, 10812, -813, 105, 113, 70, 112, 3210, -813, - 115, -813, 9513, -813, -813, -813, -135, 10812, 2755, 109, - -813, -813, 2300, -813, 111, 95, -813, -813, 2300, 117, - -813, -813 + 4593, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -296, -250, -233, + -225, -220, -203, -180, -178, -868, -868, -125, -868, -868, + -868, -868, -868, -60, -868, -868, -868, -868, -868, -329, + -868, -868, -868, -868, -868, -868, -156, -116, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -331, -313, -109, -94, 7792, -309, -868, + -106, -868, -868, -868, -868, 5507, -868, -868, -868, -868, + -98, -868, -868, 937, -868, -868, 7792, -124, -868, -868, + -868, 5964, -74, -288, -234, -154, -138, -137, -74, -127, + -68, 12163, -868, -32, -345, -61, -868, -307, -868, -17, + -13, 7792, -868, -868, -868, 7792, -57, -38, -868, -262, + -868, -223, -868, -868, 10858, -3, -868, -868, -868, 1, + -36, 7792, -868, -9, -6, -2, -868, -268, -868, -239, + -5, 3, 4, 5, -231, 6, 10, 12, 13, 14, + 17, -219, 8, 18, 16, -291, -868, -4, 7792, -868, + 19, -868, -216, -868, -868, -184, 9118, -868, -302, 1394, + -868, -868, -868, -868, -868, -3, -260, -868, 9553, -258, + -868, -29, -868, -218, 10858, 10858, -868, 10858, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -245, -868, -868, + -868, 25, -169, 11293, 27, -868, 10858, -868, -868, -308, + 29, -13, 32, -868, -316, -74, -868, -28, -868, -303, + 36, -126, 10858, -122, -868, -144, -121, 10858, -115, 15, + -114, -74, -868, 11728, -868, -108, 10858, 31, -68, -868, + 7792, -18, 6421, -868, 7792, 10858, -868, -345, -868, 20, + -868, -868, -46, -196, -1, -305, -264, 21, 26, 22, + 53, 52, -314, 38, 9988, -868, 43, -868, -868, 49, + 41, 48, -868, 66, 68, 62, 10423, 73, 10858, 67, + 64, 69, 72, 75, -185, -868, -868, -78, -868, -313, + 76, 77, -868, -868, -868, -868, -868, 1851, -868, -868, + -868, -868, -868, -868, -868, -868, -868, 5050, 29, 9553, + -249, 8248, -868, -868, 9553, 7792, -868, 42, -868, -868, + -868, -168, -868, -868, 10858, 47, -868, -868, 10858, 85, + -868, -868, -868, 10858, -868, -868, -868, -311, -868, -868, + -167, 78, -868, -868, -868, -868, -868, -868, -165, -868, + -160, -868, -868, -158, 81, -868, -868, -868, -868, -155, + -868, -153, -868, -150, 83, -868, -148, 84, -146, 78, + -868, -145, -868, 91, 93, -868, -868, -18, -3, -51, + -868, -868, -868, 6878, -868, -868, -868, 10858, 10858, 10858, + 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, + 10858, 10858, 10858, 10858, 10858, 10858, -868, -868, -868, 94, + -868, 2308, -868, -868, -868, 2308, -868, 10858, -868, -868, + -49, 10858, -25, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, 10858, + 10858, -868, -868, -868, -868, -868, -868, -868, 9553, -868, + -868, -71, -868, 7335, -868, -868, 95, 89, -868, -868, + -868, -868, -868, -244, -213, -868, -306, -868, -303, -868, + -303, -868, 10858, 10858, -868, -144, -868, -144, -868, 10858, + 10858, -868, 100, 15, -868, 11728, -868, 10858, -868, -868, + -47, 29, -18, -868, -868, -868, -868, -868, -46, -46, + -196, -196, -1, -1, -1, -1, -305, -305, -264, 21, + 26, 22, 53, 52, 10858, -868, 2308, 4136, 57, 3679, + -143, -868, -141, -868, -868, -868, -868, -868, 8683, -868, + -868, -868, 103, -868, 70, -868, -136, -868, -134, -868, + -133, -868, -132, -868, -131, -129, -868, -868, -868, -23, + 99, 89, 71, 104, 106, -868, -868, 4136, 107, -868, + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + 10858, -868, 105, 2765, 10858, -868, 98, 111, 65, 112, + 3222, -868, 113, -868, 9553, -868, -868, -868, -120, 10858, + 2765, 107, -868, -868, 2308, -868, 108, 89, -868, -868, + 2308, 110, -868, -868 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1553,138 +1555,138 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 168, 222, 220, 221, 219, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 223, 224, 225, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 348, 349, 350, 351, 352, 353, 354, 374, 375, 376, - 377, 378, 379, 380, 389, 402, 403, 390, 391, 393, - 392, 394, 395, 396, 397, 398, 399, 400, 401, 176, - 177, 248, 249, 247, 250, 257, 258, 255, 256, 253, - 254, 251, 252, 280, 281, 282, 292, 293, 294, 277, - 278, 279, 289, 290, 291, 274, 275, 276, 286, 287, - 288, 271, 272, 273, 283, 284, 285, 259, 260, 261, - 295, 296, 297, 262, 263, 264, 307, 308, 309, 265, - 266, 267, 319, 320, 321, 268, 269, 270, 331, 332, - 333, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 334, 335, - 336, 337, 338, 339, 340, 341, 342, 346, 343, 344, - 345, 527, 528, 529, 358, 359, 382, 385, 347, 356, - 357, 373, 355, 404, 405, 408, 409, 410, 412, 413, - 414, 416, 417, 418, 420, 421, 517, 518, 381, 383, - 384, 360, 361, 362, 406, 363, 367, 368, 371, 411, - 415, 419, 364, 365, 369, 370, 407, 366, 372, 451, - 453, 454, 455, 457, 458, 459, 461, 462, 463, 465, - 466, 467, 469, 470, 471, 473, 474, 475, 477, 478, - 479, 481, 482, 483, 485, 486, 487, 489, 490, 491, - 493, 494, 452, 456, 460, 464, 468, 476, 480, 484, - 472, 488, 492, 495, 496, 497, 498, 499, 500, 501, - 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 386, 387, 388, 422, 431, - 433, 427, 432, 434, 435, 437, 438, 439, 441, 442, - 443, 445, 446, 447, 449, 450, 423, 424, 425, 436, - 426, 428, 429, 430, 440, 444, 448, 519, 520, 523, - 524, 525, 526, 521, 522, 0, 0, 0, 0, 0, - 0, 0, 0, 166, 167, 0, 623, 137, 533, 534, - 535, 0, 532, 172, 170, 171, 169, 0, 218, 173, - 174, 175, 139, 138, 0, 201, 182, 184, 180, 186, - 188, 183, 185, 181, 187, 189, 178, 179, 204, 190, - 197, 198, 199, 200, 191, 192, 193, 194, 195, 196, - 140, 141, 143, 142, 144, 146, 147, 145, 203, 154, - 622, 0, 624, 0, 114, 113, 0, 125, 130, 161, - 160, 158, 162, 0, 155, 157, 163, 135, 214, 159, - 531, 0, 619, 621, 0, 0, 164, 165, 530, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 538, 0, 0, 0, 99, 0, 94, 0, 109, 0, - 121, 115, 123, 0, 124, 0, 97, 131, 102, 0, - 156, 136, 0, 207, 213, 1, 620, 0, 0, 0, - 96, 0, 0, 0, 631, 0, 683, 0, 0, 0, + 0, 168, 223, 221, 222, 220, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 224, 225, 226, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 349, 350, 351, 352, 353, 354, 355, 375, 376, 377, + 378, 379, 380, 381, 390, 403, 404, 391, 392, 394, + 393, 395, 396, 397, 398, 399, 400, 401, 402, 176, + 177, 249, 250, 248, 251, 258, 259, 256, 257, 254, + 255, 252, 253, 281, 282, 283, 293, 294, 295, 278, + 279, 280, 290, 291, 292, 275, 276, 277, 287, 288, + 289, 272, 273, 274, 284, 285, 286, 260, 261, 262, + 296, 297, 298, 263, 264, 265, 308, 309, 310, 266, + 267, 268, 320, 321, 322, 269, 270, 271, 332, 333, + 334, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 335, 336, + 337, 338, 339, 340, 341, 342, 343, 347, 344, 345, + 346, 528, 529, 530, 532, 181, 359, 360, 383, 386, + 348, 357, 358, 374, 356, 405, 406, 409, 410, 411, + 413, 414, 415, 417, 418, 419, 421, 422, 518, 519, + 382, 384, 385, 361, 362, 363, 407, 364, 368, 369, + 372, 412, 416, 420, 365, 366, 370, 371, 408, 367, + 373, 452, 454, 455, 456, 458, 459, 460, 462, 463, + 464, 466, 467, 468, 470, 471, 472, 474, 475, 476, + 478, 479, 480, 482, 483, 484, 486, 487, 488, 490, + 491, 492, 494, 495, 453, 457, 461, 465, 469, 477, + 481, 485, 473, 489, 493, 496, 497, 498, 499, 500, + 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, + 511, 512, 513, 514, 515, 516, 517, 387, 388, 389, + 423, 432, 434, 428, 433, 435, 436, 438, 439, 440, + 442, 443, 444, 446, 447, 448, 450, 451, 424, 425, + 426, 437, 427, 429, 430, 431, 441, 445, 449, 520, + 521, 524, 525, 526, 527, 522, 523, 0, 0, 0, + 0, 0, 0, 0, 0, 166, 167, 0, 625, 137, + 535, 536, 537, 0, 534, 172, 170, 171, 169, 0, + 219, 173, 174, 175, 139, 138, 0, 202, 183, 185, + 180, 187, 189, 184, 186, 182, 188, 190, 178, 179, + 205, 191, 198, 199, 200, 201, 192, 193, 194, 195, + 196, 197, 140, 141, 143, 142, 144, 146, 147, 145, + 204, 154, 624, 0, 626, 0, 114, 113, 0, 125, + 130, 161, 160, 158, 162, 0, 155, 157, 163, 135, + 215, 159, 533, 0, 621, 623, 0, 0, 164, 165, + 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 540, 0, 0, 0, 99, 0, 94, 0, + 109, 0, 121, 115, 123, 0, 124, 0, 97, 131, + 102, 0, 156, 136, 0, 208, 214, 1, 622, 0, + 0, 0, 96, 0, 0, 0, 633, 0, 685, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 629, 0, 627, 0, 0, 536, 151, 153, - 0, 149, 205, 0, 0, 100, 0, 0, 625, 110, - 116, 120, 122, 118, 126, 117, 0, 132, 105, 0, - 103, 0, 0, 0, 9, 0, 43, 42, 44, 41, - 5, 6, 7, 8, 2, 16, 14, 15, 17, 10, - 11, 12, 13, 3, 18, 37, 20, 25, 26, 0, - 0, 30, 0, 216, 0, 36, 34, 0, 208, 111, - 0, 95, 0, 0, 681, 0, 639, 0, 0, 0, - 0, 0, 656, 0, 0, 0, 0, 0, 0, 0, - 676, 0, 654, 0, 0, 0, 0, 98, 0, 0, - 0, 540, 0, 0, 148, 0, 202, 0, 209, 45, - 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, - 75, 0, 0, 101, 567, 576, 580, 0, 0, 0, - 601, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 45, 78, 91, 0, 554, 0, 163, 135, - 557, 578, 556, 564, 555, 0, 558, 559, 582, 560, - 589, 561, 562, 597, 563, 0, 119, 0, 127, 0, - 548, 134, 0, 0, 107, 0, 104, 38, 39, 0, - 22, 23, 0, 0, 28, 27, 0, 218, 31, 33, - 40, 0, 215, 112, 685, 0, 686, 632, 0, 0, - 684, 651, 647, 648, 649, 650, 0, 645, 0, 93, - 652, 0, 0, 666, 667, 668, 669, 0, 664, 0, - 670, 0, 0, 672, 0, 0, 0, 2, 680, 0, - 678, 0, 0, 626, 628, 0, 546, 0, 544, 539, - 541, 0, 152, 150, 206, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 631, 0, 629, 0, 0, 538, + 151, 153, 0, 149, 206, 0, 0, 100, 0, 0, + 627, 110, 116, 120, 122, 118, 126, 117, 0, 132, + 105, 0, 103, 0, 0, 0, 9, 0, 43, 42, + 44, 41, 5, 6, 7, 8, 2, 16, 14, 15, + 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, + 26, 0, 0, 30, 0, 217, 0, 36, 34, 0, + 209, 111, 0, 95, 0, 0, 683, 0, 641, 0, + 0, 0, 0, 0, 658, 0, 0, 0, 0, 0, + 0, 0, 678, 0, 656, 0, 0, 0, 0, 98, + 0, 0, 0, 542, 0, 0, 148, 0, 203, 0, + 210, 45, 49, 52, 55, 60, 63, 65, 67, 69, + 71, 73, 75, 0, 0, 101, 569, 578, 582, 0, + 0, 0, 603, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 78, 91, 0, 556, 0, + 163, 135, 559, 580, 558, 566, 557, 0, 560, 561, + 584, 562, 591, 563, 564, 599, 565, 0, 119, 0, + 127, 0, 550, 134, 0, 0, 107, 0, 104, 38, + 39, 0, 22, 23, 0, 0, 28, 27, 0, 219, + 31, 33, 40, 0, 216, 112, 687, 0, 688, 634, + 0, 0, 686, 653, 649, 650, 651, 652, 0, 647, + 0, 93, 654, 0, 0, 668, 669, 670, 671, 0, + 666, 0, 672, 0, 0, 674, 0, 0, 0, 2, + 682, 0, 680, 0, 0, 628, 630, 0, 548, 0, + 546, 541, 543, 0, 152, 150, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 76, 210, 211, 0, 566, 0, - 599, 612, 611, 0, 603, 0, 615, 613, 0, 0, - 0, 596, 616, 617, 618, 565, 81, 82, 84, 83, - 86, 87, 88, 89, 90, 85, 80, 0, 0, 581, - 577, 579, 583, 590, 598, 129, 0, 551, 552, 0, - 133, 0, 108, 4, 0, 24, 21, 32, 217, 635, - 637, 0, 0, 682, 0, 641, 0, 640, 0, 643, - 0, 0, 658, 0, 657, 0, 660, 0, 0, 662, - 0, 0, 677, 0, 674, 0, 655, 630, 0, 547, - 0, 542, 537, 46, 47, 48, 51, 50, 53, 54, - 58, 59, 56, 57, 61, 62, 64, 66, 68, 70, - 72, 74, 0, 212, 568, 0, 0, 0, 0, 614, - 0, 595, 79, 92, 128, 549, 0, 106, 19, 633, - 0, 634, 0, 646, 0, 653, 0, 665, 0, 671, - 0, 673, 0, 0, 679, 543, 545, 0, 0, 587, - 0, 0, 0, 606, 605, 608, 574, 591, 550, 553, - 636, 638, 642, 644, 659, 661, 663, 675, 0, 569, - 0, 0, 0, 607, 0, 0, 586, 0, 0, 584, - 0, 77, 0, 571, 600, 570, 0, 609, 0, 574, - 573, 575, 593, 588, 0, 610, 604, 585, 594, 0, - 602, 592 + 0, 0, 0, 0, 0, 0, 76, 211, 212, 0, + 568, 0, 601, 614, 613, 0, 605, 0, 617, 615, + 0, 0, 0, 598, 618, 619, 620, 567, 81, 82, + 84, 83, 86, 87, 88, 89, 90, 85, 80, 0, + 0, 583, 579, 581, 585, 592, 600, 129, 0, 553, + 554, 0, 133, 0, 108, 4, 0, 24, 21, 32, + 218, 637, 639, 0, 0, 684, 0, 643, 0, 642, + 0, 645, 0, 0, 660, 0, 659, 0, 662, 0, + 0, 664, 0, 0, 679, 0, 676, 0, 657, 632, + 0, 549, 0, 544, 539, 46, 47, 48, 51, 50, + 53, 54, 58, 59, 56, 57, 61, 62, 64, 66, + 68, 70, 72, 74, 0, 213, 570, 0, 0, 0, + 0, 616, 0, 597, 79, 92, 128, 551, 0, 106, + 19, 635, 0, 636, 0, 648, 0, 655, 0, 667, + 0, 673, 0, 675, 0, 0, 681, 545, 547, 0, + 0, 589, 0, 0, 0, 608, 607, 610, 576, 593, + 552, 555, 638, 640, 644, 646, 661, 663, 665, 677, + 0, 571, 0, 0, 0, 609, 0, 0, 588, 0, + 0, 586, 0, 77, 0, 573, 602, 572, 0, 611, + 0, 576, 575, 577, 595, 590, 0, 612, 606, 587, + 596, 0, 604, 594 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -813, -813, -813, -813, -813, -813, -813, -813, -813, -813, - -813, -813, -429, -813, -381, -380, -483, -383, -262, -257, - -261, -258, -255, -259, -813, -479, -813, -492, -813, -495, - -536, 11, -813, -813, -813, 7, -388, -813, -813, 42, - 49, 47, -813, -813, -401, -813, -813, -813, -813, -96, - -813, -384, -371, -813, 9, -813, 0, -425, -813, -813, - -813, -813, 150, -813, -813, -813, -546, -553, -217, -338, - -607, -813, -364, -619, -812, -813, -421, -813, -813, -428, - -430, -813, -813, 64, -718, -355, -813, -141, -813, -390, - -813, -138, -813, -813, -813, -813, -136, -813, -813, -813, - -813, -813, -813, -813, -813, 92, -813, -813, 2, -813, - -68, -275, -456, -813, -813, -813, -296, -293, -301, -813, - -813, -299, -295, -303, -302, -813, -306, -311, -813, -392, - -530 + -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, + -868, -868, -429, -868, -378, -377, -471, -381, -259, -261, + -257, -256, -255, -263, -868, -478, -868, -492, -868, -503, + -535, 11, -868, -868, -868, 7, -392, -868, -868, 39, + 45, 46, -868, -868, -401, -868, -868, -868, -868, -104, + -868, -386, -374, -868, 9, -868, 0, -426, -868, -868, + -868, -868, 147, -868, -868, -868, -551, -569, -224, -340, + -606, -868, -365, -615, -867, -868, -424, -868, -868, -432, + -431, -868, -868, 63, -723, -358, -868, -142, -868, -394, + -868, -140, -868, -868, -868, -868, -135, -868, -868, -868, + -868, -868, -868, -868, -868, 96, -868, -868, 2, -868, + -72, -237, -436, -868, -868, -868, -300, -304, -299, -868, + -868, -301, -298, -297, -310, -868, -295, -312, -868, -391, + -531 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 523, 524, 525, 784, 526, 527, 528, 529, 530, - 531, 532, 612, 534, 580, 581, 582, 583, 584, 585, - 586, 587, 588, 589, 590, 613, 842, 614, 767, 615, - 698, 616, 381, 643, 501, 617, 383, 384, 385, 430, - 431, 432, 386, 387, 388, 389, 390, 391, 480, 481, - 392, 393, 394, 395, 535, 483, 536, 486, 443, 444, - 537, 398, 399, 400, 572, 476, 570, 571, 707, 708, - 641, 779, 620, 621, 622, 623, 624, 739, 878, 914, - 906, 907, 908, 915, 625, 626, 627, 628, 909, 881, - 629, 630, 910, 929, 631, 632, 633, 845, 743, 847, - 885, 904, 905, 634, 401, 402, 403, 427, 635, 473, - 474, 453, 454, 791, 792, 405, 676, 677, 681, 406, - 407, 687, 688, 691, 694, 408, 699, 700, 409, 455, - 456 + -1, 525, 526, 527, 786, 528, 529, 530, 531, 532, + 533, 534, 614, 536, 582, 583, 584, 585, 586, 587, + 588, 589, 590, 591, 592, 615, 844, 616, 769, 617, + 700, 618, 383, 645, 503, 619, 385, 386, 387, 432, + 433, 434, 388, 389, 390, 391, 392, 393, 482, 483, + 394, 395, 396, 397, 537, 485, 538, 488, 445, 446, + 539, 400, 401, 402, 574, 478, 572, 573, 709, 710, + 643, 781, 622, 623, 624, 625, 626, 741, 880, 916, + 908, 909, 910, 917, 627, 628, 629, 630, 911, 883, + 631, 632, 912, 931, 633, 634, 635, 847, 745, 849, + 887, 906, 907, 636, 403, 404, 405, 429, 637, 475, + 476, 455, 456, 793, 794, 407, 678, 679, 683, 408, + 409, 689, 690, 693, 696, 410, 701, 702, 411, 457, + 458 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1692,191 +1694,283 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 397, 433, 404, 448, 640, 591, 771, 382, 448, 396, - 649, 380, 497, 533, 680, 670, 447, 710, 538, 690, - 449, 844, 440, 671, 469, 449, 711, 733, 702, 420, - 775, 670, 778, 664, 418, 780, 665, 712, 789, 658, - 424, 664, 661, 722, 723, 433, 478, 457, 565, 410, - 458, 495, 566, 484, 662, 579, 672, 673, 674, 675, - 496, 421, 440, 734, 650, 651, 425, 666, 636, 638, - 479, 679, 790, 647, 648, 666, 679, 411, 440, 724, - 725, 484, 679, 484, -35, 679, 652, 667, 637, 913, - 653, 485, 568, 667, 679, 667, 921, 781, 667, 426, - 667, 592, 667, 667, 592, 660, 913, 667, 642, 748, - 592, 750, 593, 737, 544, 460, 498, 776, 458, 499, - 545, 579, 500, 546, 846, 552, 579, 560, 574, 547, - 412, 553, 579, 561, 575, 579, 459, 461, 463, 465, - 467, 468, 471, 576, 579, 640, 655, 640, 783, 577, - 640, 668, 656, 793, 768, 795, 797, 785, 710, 545, - 799, 796, 798, 579, 787, 435, 800, 696, 436, 854, - 756, 757, 758, 759, 760, 761, 762, 763, 764, 765, - 859, 802, 429, 804, 860, 806, 568, 803, 568, 805, - 766, 807, 809, 812, 814, 886, 887, 440, 810, 813, - 815, 768, 768, 892, 928, 893, 894, 895, 896, 796, - 897, 800, 803, 807, 810, 924, 815, 428, 861, 437, - 462, 768, 862, 458, 645, 771, 413, 646, 710, 414, - 464, 415, 788, 458, 448, 683, 684, 685, 686, 830, - 831, 832, 833, 466, 416, 470, 458, 447, 458, 889, - 848, 449, 678, 682, 850, 458, 458, 689, 692, 568, - 458, 458, 417, 695, 865, 680, 458, 701, 720, 721, - 458, 869, 690, 422, 768, 852, 853, 769, 718, 820, - 719, 819, 821, 670, 640, 423, 823, 824, 825, 579, - 579, 579, 579, 579, 579, 579, 579, 579, 579, 579, - 579, 579, 579, 579, 579, 923, 442, 768, 820, 771, - 849, 875, 328, 329, 330, 726, 727, 715, 716, 717, - 450, 679, 679, 855, 477, 856, 487, 568, 679, 679, - 768, 851, 768, 898, 679, 452, 679, 826, 827, 472, - 828, 829, 482, 834, 835, 325, 484, 877, 493, 494, - 879, 539, 540, 543, 728, 541, 542, 548, 562, 549, - 550, 551, 554, 644, 640, 564, 555, 891, 556, 557, - 558, 579, 579, 559, 563, 654, 659, 573, 579, 579, - 567, 592, 495, 665, 579, 434, 579, 693, 703, 731, - 879, 738, 729, 441, 396, 730, 732, 568, 735, 740, - 669, 397, 396, 404, 397, 706, 911, 916, 382, 397, - 396, 404, 380, 396, 714, 741, 451, 742, 396, 475, - 640, 744, 925, 745, 746, 749, 751, 752, -36, 434, - 489, -34, 753, 434, 754, -29, 755, 782, 396, 794, - 786, 816, 396, 801, 880, 808, 811, 817, 843, 441, - 858, 768, 871, 882, 890, 899, 900, 901, 396, 902, - 912, 449, -572, 918, 917, 594, 836, 919, 922, 838, - 930, 931, 837, 839, 841, 491, 569, 840, 490, 713, - 492, 419, 876, 883, 880, 396, 920, 619, 818, 927, - 926, 488, 884, 446, 772, 903, 618, 773, 704, 774, - 866, 449, 864, 863, 874, 870, 868, 873, 867, 872, + 399, 435, 406, 712, 651, 450, 642, 384, 593, 398, + 450, 382, 773, 499, 449, 535, 672, 682, 846, 540, + 451, 442, 692, 713, 735, 451, 422, 471, 724, 725, + 426, 704, 672, 777, 666, 780, 915, 667, 782, 791, + 714, 660, 480, 923, 666, 435, 486, 673, 428, 437, + 663, 594, 438, 915, 487, 412, 427, 581, 423, 595, + 736, 442, 664, 567, 726, 727, 481, 568, 668, 638, + 640, 728, 729, 792, 681, 649, 650, 442, 668, 681, + 674, 675, 676, 677, 546, 681, 652, 653, 681, 497, + 547, 486, 570, 486, 783, 594, 459, 681, 498, 460, + 639, 413, 644, 750, 594, 752, -35, 662, 654, 669, + 861, 778, 655, 548, 862, 669, 739, 669, 414, 549, + 669, 554, 669, 581, 669, 669, 415, 555, 581, 669, + 848, 416, 500, 562, 581, 501, 576, 581, 502, 563, + 647, 863, 577, 648, 712, 864, 581, 642, 417, 642, + 462, 787, 642, 460, 670, 758, 759, 760, 761, 762, + 763, 764, 765, 766, 767, 581, 789, 720, 578, 721, + 698, 418, 856, 419, 579, 768, 461, 463, 465, 467, + 469, 470, 473, 657, 785, 795, 570, 797, 570, 658, + 770, 547, 799, 798, 801, 424, 442, 804, 800, 806, + 802, 930, 808, 805, 811, 807, 814, 816, 809, 888, + 812, 889, 815, 817, 712, 770, 894, 770, 895, 896, + 897, 898, 798, 899, 802, 805, 809, 812, 420, 817, + 464, 773, 926, 460, 790, 425, 450, 452, 770, 685, + 686, 687, 688, 430, 850, 449, 466, 468, 852, 460, + 460, 451, 891, 832, 833, 834, 835, 472, 680, 570, + 460, 460, 684, 691, 431, 460, 460, 867, 682, 694, + 697, 444, 460, 460, 871, 692, 703, 854, 855, 460, + 770, 439, 821, 771, 672, 857, 642, 858, 825, 826, + 827, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 822, 925, 770, + 823, 822, 851, 454, 877, 773, 330, 331, 332, 474, + 717, 718, 719, 479, 681, 681, 484, 570, 722, 723, + 495, 681, 681, 770, 853, 770, 900, 681, 489, 681, + 327, 879, 828, 829, 881, 830, 831, 836, 837, 496, + 486, 542, 543, 541, 544, 550, 545, 569, 646, 671, + 564, 551, 552, 553, 556, 695, 642, 566, 557, 708, + 558, 559, 560, 581, 581, 561, 565, 656, 661, 575, + 581, 581, 594, 497, 881, 705, 581, 436, 581, 667, + 733, 734, 737, 732, 730, 443, 398, 570, 731, 740, + 742, 918, 743, 399, 398, 406, 399, 716, 913, 744, + 384, 399, 398, 406, 382, 398, 927, 746, 453, 747, + 398, 477, 642, 748, 751, 754, 753, -36, -34, 784, + 755, 436, 491, 756, 788, 436, 757, -29, 796, 803, + 398, 810, 813, 818, 398, 819, 882, 770, 845, 860, + 873, 443, 884, 892, 893, 901, 903, 904, 902, 919, + 398, 451, -574, 920, 921, 914, 933, 596, 924, 932, + 839, 838, 843, 715, 493, 840, 492, 841, 571, 842, + 421, 494, 878, 820, 885, 922, 882, 398, 928, 621, + 929, 886, 490, 905, 865, 774, 706, 775, 620, 448, + 866, 451, 776, 874, 868, 876, 870, 869, 0, 0, + 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, + 875, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 663, 0, 0, 0, 0, 0, 0, 0, 0, + 707, 0, 571, 0, 571, 0, 0, 0, 0, 398, + 0, 398, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 705, 0, - 569, 0, 569, 0, 0, 0, 0, 396, 0, 396, - 0, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 621, 0, 0, + 0, 0, 0, 0, 0, 0, 620, 399, 0, 0, + 0, 0, 0, 0, 0, 571, 398, 0, 0, 0, + 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, - 0, 0, 0, 0, 618, 397, 0, 0, 0, 0, - 0, 0, 0, 569, 396, 0, 0, 0, 0, 0, - 0, 0, 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, + 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, - 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 619, - 0, 0, 0, 619, 0, 0, 0, 0, 618, 0, - 0, 0, 618, 0, 0, 0, 0, 0, 0, 0, + 0, 621, 0, 0, 0, 621, 0, 0, 0, 0, + 620, 0, 0, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 569, 0, 0, 0, 0, 0, 0, 0, 0, - 396, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, + 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 619, 619, 0, 619, 0, 404, - 0, 0, 0, 618, 618, 0, 618, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 621, 621, 0, 621, + 0, 406, 0, 0, 0, 620, 620, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 619, 0, 0, 0, 0, - 0, 0, 0, 0, 618, 0, 0, 0, 0, 0, - 0, 619, 0, 0, 0, 0, 0, 0, 619, 0, - 618, 0, 0, 0, 0, 0, 0, 618, 619, 0, - 0, 0, 619, 0, 0, 0, 0, 618, 619, 0, - 0, 618, 0, 0, 0, 445, 0, 618, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 621, 0, 0, + 0, 0, 0, 0, 0, 0, 620, 0, 0, 0, + 0, 0, 0, 621, 0, 0, 0, 0, 0, 0, + 621, 0, 620, 0, 0, 0, 0, 0, 0, 620, + 621, 0, 0, 0, 621, 0, 0, 0, 0, 620, + 621, 0, 0, 620, 0, 0, 0, 447, 0, 620, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, - 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, - 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, - 0, 325, 0, 594, 595, 0, 0, 0, 0, 596, - 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, - 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, - 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, - 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, - 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, + 327, 0, 0, 0, 0, 0, 0, 0, 328, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 329, 330, 331, 332, 333, 0, 0, 0, + 0, 0, 0, 0, 0, 334, 335, 336, 337, 338, + 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, + 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, + 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 506, 507, 0, 327, 0, 596, + 597, 0, 0, 0, 0, 598, 508, 509, 510, 511, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, + 330, 331, 332, 333, 0, 0, 0, 512, 513, 514, + 515, 516, 334, 335, 336, 337, 338, 339, 340, 599, + 600, 601, 602, 0, 603, 604, 605, 606, 607, 608, + 609, 610, 611, 612, 341, 342, 343, 344, 345, 346, + 517, 518, 519, 520, 521, 522, 523, 524, 347, 613, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 506, 507, 0, 327, 0, 596, 772, 0, 0, + 0, 0, 598, 508, 509, 510, 511, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 329, 330, 331, 332, + 333, 0, 0, 0, 512, 513, 514, 515, 516, 334, + 335, 336, 337, 338, 339, 340, 599, 600, 601, 602, + 0, 603, 604, 605, 606, 607, 608, 609, 610, 611, + 612, 341, 342, 343, 344, 345, 346, 517, 518, 519, + 520, 521, 522, 523, 524, 347, 613, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 0, 0, 504, + 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 0, 327, 0, 596, 0, 0, 0, 0, 0, 598, + 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 329, 330, 331, 332, 333, 0, 0, + 0, 512, 513, 514, 515, 516, 334, 335, 336, 337, + 338, 339, 340, 599, 600, 601, 602, 0, 603, 604, + 605, 606, 607, 608, 609, 610, 611, 612, 341, 342, + 343, 344, 345, 346, 517, 518, 519, 520, 521, 522, + 523, 524, 347, 613, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -1909,566 +2003,203 @@ static const yytype_int16 yytable[] = 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 502, 503, 0, 0, 0, 0, + 323, 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 504, 505, 0, 325, 0, 594, 770, - 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, - 514, 332, 333, 334, 335, 336, 337, 338, 597, 598, - 599, 600, 0, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 339, 340, 341, 342, 343, 344, 515, - 516, 517, 518, 519, 520, 521, 522, 345, 611, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 0, 0, 0, 0, 0, 506, 507, 0, 327, 0, + 489, 0, 0, 0, 0, 0, 598, 508, 509, 510, + 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 329, 330, 331, 332, 333, 0, 0, 0, 512, 513, + 514, 515, 516, 334, 335, 336, 337, 338, 339, 340, + 599, 600, 601, 602, 0, 603, 604, 605, 606, 607, + 608, 609, 610, 611, 612, 341, 342, 343, 344, 345, + 346, 517, 518, 519, 520, 521, 522, 523, 524, 347, + 613, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, - 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, - 0, 325, 0, 594, 0, 0, 0, 0, 0, 596, - 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, - 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, - 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, - 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, - 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 502, 503, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 504, 505, 0, 325, 0, 487, 0, - 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, - 514, 332, 333, 334, 335, 336, 337, 338, 597, 598, - 599, 600, 0, 601, 602, 603, 604, 605, 606, 607, - 608, 609, 610, 339, 340, 341, 342, 343, 344, 515, - 516, 517, 518, 519, 520, 521, 522, 345, 611, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, - 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, - 0, 325, 0, 0, 0, 0, 0, 0, 0, 596, - 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 331, 0, 0, - 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, - 336, 337, 338, 597, 598, 599, 600, 0, 601, 602, - 603, 604, 605, 606, 607, 608, 609, 610, 339, 340, - 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, - 521, 522, 345, 611, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 502, 503, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 504, 505, 0, 325, 0, 0, 0, - 0, 0, 0, 0, 596, 506, 507, 508, 509, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 510, 511, 512, 513, - 514, 332, 333, 334, 335, 336, 337, 338, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 515, - 516, 517, 518, 519, 520, 521, 522, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 502, - 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, - 0, 510, 511, 512, 513, 514, 332, 333, 334, 335, - 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, - 341, 342, 343, 344, 515, 516, 517, 518, 519, 520, - 521, 522, 345, 0, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 325, 0, 0, 0, - 0, 0, 0, 0, 326, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 331, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 597, 0, 0, 600, 0, 601, 602, - 0, 0, 605, 0, 0, 0, 0, 0, 339, 340, - 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 438, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 439, 332, 333, 334, 335, 336, 337, 338, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 325, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, - 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 709, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 822, 0, 0, 0, 0, 0, + 377, 378, 379, 380, 381, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, - 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 0, 318, 319, 320, 321, 322, - 323, 324, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 506, 507, 0, 327, 0, 0, 0, 0, + 0, 0, 0, 598, 508, 509, 510, 511, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, + 332, 333, 0, 0, 0, 512, 513, 514, 515, 516, + 334, 335, 336, 337, 338, 339, 340, 599, 600, 601, + 602, 0, 603, 604, 605, 606, 607, 608, 609, 610, + 611, 612, 341, 342, 343, 344, 345, 346, 517, 518, + 519, 520, 521, 522, 523, 524, 347, 613, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 0, 0, + 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 506, + 507, 0, 327, 0, 0, 0, 0, 0, 0, 0, + 598, 508, 509, 510, 511, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 329, 330, 331, 332, 333, 0, + 0, 0, 512, 513, 514, 515, 516, 334, 335, 336, + 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, + 342, 343, 344, 345, 346, 517, 518, 519, 520, 521, + 522, 523, 524, 347, 0, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 0, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 857, + 0, 0, 0, 0, 0, 0, 506, 507, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, + 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 329, 330, 331, 332, 0, 0, 0, 0, 512, + 513, 514, 515, 516, 334, 335, 336, 337, 338, 339, + 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 341, 342, 343, 344, + 345, 346, 517, 518, 519, 520, 521, 522, 523, 524, + 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 327, 328, - 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 336, 337, 338, 0, 0, + 0, 0, 0, 0, 0, 0, 327, 0, 0, 0, + 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, + 331, 332, 333, 0, 0, 0, 0, 0, 0, 0, + 0, 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 339, 340, 341, 342, 343, 344, 0, - 0, 0, 0, 0, 0, 0, 0, 345, 0, 346, - 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 1, 2, 3, 4, 5, 6, 7, + 0, 0, 0, 341, 342, 343, 344, 345, 346, 0, + 0, 0, 0, 0, 0, 0, 0, 347, 0, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2499,70 +2230,27 @@ static const yytype_int16 yytable[] = 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 318, 319, 320, 321, 322, 323, 324, 0, 0, 0, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 327, 328, 329, 330, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 337, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 339, 340, - 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, - 0, 0, 345, 0, 346, 347, 348, 349, 350, 351, + 0, 0, 0, 0, 0, 329, 330, 331, 332, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 334, 335, + 336, 337, 338, 339, 340, 599, 0, 0, 602, 0, + 603, 604, 0, 0, 607, 0, 0, 0, 0, 0, + 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 0, 0, 0, 0, 0, 0, 321, 0, 0, - 0, 0, 0, 502, 503, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 504, 505, 0, 0, 0, 639, 777, 0, - 0, 0, 0, 0, 506, 507, 508, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 510, 511, 512, 513, 514, - 332, 0, 0, 0, 0, 337, 338, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 515, 516, - 517, 518, 519, 520, 521, 522, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 358, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, @@ -2588,241 +2276,164 @@ static const yytype_int16 yytable[] = 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 0, 0, 0, 0, 0, 0, - 321, 0, 0, 0, 0, 0, 502, 503, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, - 639, 888, 0, 0, 0, 0, 0, 506, 507, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, - 512, 513, 514, 332, 0, 0, 0, 0, 337, 338, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 515, 516, 517, 518, 519, 520, 521, 522, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 358, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 0, 0, 0, - 0, 0, 0, 321, 0, 0, 0, 0, 0, 502, - 503, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 504, 505, - 0, 0, 578, 0, 0, 0, 0, 0, 0, 0, - 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 510, 511, 512, 513, 514, 332, 0, 0, 0, - 0, 337, 338, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 515, 516, 517, 518, 519, 520, - 521, 522, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 358, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 0, 0, 0, 0, 0, 0, 321, 0, 0, 0, - 0, 0, 502, 503, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 504, 505, 0, 0, 0, 639, 0, 0, 0, - 0, 0, 0, 506, 507, 508, 509, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 510, 511, 512, 513, 514, 332, - 0, 0, 0, 0, 337, 338, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 515, 516, 517, - 518, 519, 520, 521, 522, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 358, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 0, 0, 0, 0, 0, 0, 321, - 0, 0, 0, 0, 0, 502, 503, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 504, 505, 0, 0, 736, 0, - 0, 0, 0, 0, 0, 0, 506, 507, 508, 509, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 510, 511, 512, - 513, 514, 332, 0, 0, 0, 0, 337, 338, 0, + 311, 312, 313, 314, 315, 316, 0, 0, 0, 320, + 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 515, 516, 517, 518, 519, 520, 521, 522, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 358, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 0, 0, 0, 0, - 0, 0, 321, 0, 0, 0, 0, 0, 502, 503, + 0, 0, 329, 330, 331, 332, 0, 0, 0, 0, + 0, 0, 0, 0, 441, 334, 335, 336, 337, 338, + 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, + 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, + 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 0, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 504, 505, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 747, 506, - 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 327, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 510, 511, 512, 513, 514, 332, 0, 0, 0, 0, - 337, 338, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, + 330, 331, 332, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 515, 516, 517, 518, 519, 520, 521, - 522, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 358, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 0, - 0, 0, 0, 0, 0, 321, 0, 0, 0, 0, - 0, 502, 503, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 341, 342, 343, 344, 345, 346, + 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, + 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 0, 0, 0, 320, 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 510, 511, 512, 513, 514, 332, 0, - 0, 0, 0, 337, 338, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 711, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 329, 330, 331, 332, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 341, 342, 343, 344, 345, 346, 0, 0, 0, + 0, 0, 0, 0, 0, 347, 0, 348, 349, 350, + 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 515, 516, 517, 518, - 519, 520, 521, 522, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 358, 2, + 0, 0, 0, 0, 824, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 329, 330, 331, 332, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 334, 335, 336, 337, + 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 341, 342, + 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, + 0, 0, 347, 0, 348, 349, 350, 351, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, @@ -2848,19 +2459,67 @@ static const yytype_int16 yytable[] = 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 0, 0, 0, 0, 0, 0, 321, 0, - 0, 0, 0, 0, 502, 503, 0, 0, 0, 0, + 313, 314, 315, 316, 0, 0, 0, 320, 321, 322, + 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 859, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 329, 330, 331, 332, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 334, 335, 336, 337, 338, 339, 340, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 341, 342, 343, 344, 345, + 346, 0, 0, 0, 0, 0, 0, 0, 0, 347, + 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 506, 507, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 510, 511, 512, 513, - 514, 332, 0, 0, 0, 0, 337, 657, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 515, - 516, 517, 518, 519, 520, 521, 522, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, + 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 358, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 0, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 348, 349, + 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -2876,7 +2535,7 @@ static const yytype_int16 yytable[] = 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, @@ -2891,253 +2550,25 @@ static const yytype_int16 yytable[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 0, 0, 0, 0, 0, - 0, 321, 0, 0, 0, 0, 0, 502, 503, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 504, 505, 0, 0, + 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, + 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, - 511, 512, 513, 697, 332, 0, 0, 0, 0, 337, - 338, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 515, 516, 517, 518, 519, 520, 521, 522, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 358, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 0, 0, - 0, 0, 0, 0, 321, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 641, 779, 0, 0, 0, 0, 0, + 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, + 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 332, 0, 0, - 0, 0, 337, 338 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 385, 0, 404, 496, 484, 625, 0, 409, 0, - 505, 0, 437, 442, 550, 545, 404, 570, 443, 555, - 404, 739, 393, 348, 416, 409, 572, 336, 564, 353, - 637, 561, 639, 348, 351, 642, 351, 573, 348, 531, - 359, 348, 356, 331, 332, 429, 385, 382, 352, 349, - 385, 349, 356, 351, 368, 484, 381, 382, 383, 384, - 358, 385, 433, 372, 329, 330, 385, 382, 493, 494, - 409, 550, 382, 502, 503, 382, 555, 349, 449, 367, - 368, 351, 561, 351, 349, 564, 351, 543, 358, 901, - 355, 359, 476, 549, 573, 551, 908, 643, 554, 359, - 556, 351, 558, 559, 351, 534, 918, 563, 358, 604, - 351, 606, 359, 592, 350, 382, 353, 358, 385, 356, - 356, 550, 359, 350, 743, 350, 555, 350, 350, 356, - 349, 356, 561, 356, 356, 564, 411, 412, 413, 414, - 415, 416, 417, 350, 573, 637, 350, 639, 350, 356, - 642, 543, 356, 350, 356, 350, 350, 652, 711, 356, - 350, 356, 356, 592, 656, 356, 356, 559, 359, 776, - 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, - 352, 350, 356, 350, 356, 350, 570, 356, 572, 356, - 358, 356, 350, 350, 350, 350, 350, 568, 356, 356, - 356, 356, 356, 350, 922, 350, 350, 350, 350, 356, - 350, 356, 356, 356, 356, 350, 356, 350, 352, 385, - 382, 356, 356, 385, 356, 844, 349, 359, 781, 349, - 382, 349, 661, 385, 635, 381, 382, 383, 384, 722, - 723, 724, 725, 382, 349, 382, 385, 635, 385, 856, - 745, 635, 382, 382, 749, 385, 385, 382, 382, 643, - 385, 385, 349, 382, 800, 801, 385, 382, 327, 328, - 385, 807, 808, 349, 356, 767, 768, 359, 361, 356, - 363, 706, 359, 813, 776, 349, 715, 716, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 912, 367, 356, 356, 928, - 359, 359, 374, 375, 376, 333, 334, 364, 365, 366, - 359, 800, 801, 354, 353, 356, 353, 711, 807, 808, - 356, 357, 356, 357, 813, 385, 815, 718, 719, 385, - 720, 721, 385, 726, 727, 351, 351, 842, 385, 385, - 845, 350, 385, 356, 371, 359, 358, 358, 350, 356, - 356, 356, 356, 385, 856, 349, 356, 382, 356, 356, - 356, 800, 801, 356, 356, 350, 349, 358, 807, 808, - 359, 351, 349, 351, 813, 385, 815, 348, 352, 335, - 885, 354, 370, 393, 385, 369, 337, 781, 352, 349, - 385, 401, 393, 401, 404, 385, 898, 902, 401, 409, - 401, 409, 401, 404, 385, 359, 409, 359, 409, 419, - 912, 349, 917, 349, 359, 349, 357, 359, 349, 429, - 428, 349, 359, 433, 359, 350, 359, 385, 429, 358, - 385, 350, 433, 356, 845, 356, 356, 350, 352, 449, - 352, 356, 348, 393, 348, 354, 385, 350, 449, 349, - 358, 845, 353, 350, 359, 353, 728, 397, 353, 730, - 359, 354, 729, 731, 733, 433, 476, 732, 429, 575, - 433, 331, 820, 847, 885, 476, 907, 487, 705, 919, - 918, 427, 847, 401, 635, 885, 487, 635, 566, 635, - 801, 885, 798, 796, 815, 808, 805, 813, 803, 811, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 539, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 568, -1, - 570, -1, 572, -1, -1, -1, -1, 568, -1, 570, - -1, 572, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 625, -1, -1, -1, -1, - -1, -1, -1, -1, 625, 635, -1, -1, -1, -1, - -1, -1, -1, 643, 635, -1, -1, -1, -1, -1, - -1, -1, 643, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 711, -1, -1, -1, -1, -1, -1, -1, -1, - 711, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 739, - -1, -1, -1, 743, -1, -1, -1, -1, 739, -1, - -1, -1, 743, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 781, -1, -1, -1, -1, -1, -1, -1, -1, - 781, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 844, 845, -1, 847, -1, 847, - -1, -1, -1, 844, 845, -1, 847, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 885, -1, -1, -1, -1, - -1, -1, -1, -1, 885, -1, -1, -1, -1, -1, - -1, 901, -1, -1, -1, -1, -1, -1, 908, -1, - 901, -1, -1, -1, -1, -1, -1, 908, 918, -1, - -1, -1, 922, -1, -1, -1, -1, 918, 928, -1, - -1, 922, -1, -1, -1, 0, -1, 928, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, - -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, - 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, 351, -1, 353, 354, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, - -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, + 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3148,7 +2579,7 @@ static const yytype_int16 yycheck[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -3163,27 +2594,25 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, 351, -1, 353, 354, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, -1, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 506, 507, 0, 0, 0, 641, 890, + 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, @@ -3193,7 +2622,7 @@ static const yytype_int16 yycheck[] = 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, @@ -3208,27 +2637,25 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, - 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, 351, -1, 353, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, - -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, + 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, + 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, + 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, + 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3239,7 +2666,7 @@ static const yytype_int16 yycheck[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -3250,31 +2677,29 @@ static const yytype_int16 yycheck[] = 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, 351, -1, 353, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, -1, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 506, 507, 0, 0, 0, 641, 0, + 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, @@ -3284,7 +2709,7 @@ static const yytype_int16 yycheck[] = 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, @@ -3299,27 +2724,25 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, - 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, 351, -1, -1, -1, -1, -1, -1, -1, 359, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, 377, -1, -1, - -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, -1, 398, 399, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, + 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 0, 0, 738, 0, 0, 0, 0, 0, 0, 0, + 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, + 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, + 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3330,7 +2753,7 @@ static const yytype_int16 yycheck[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -3345,27 +2768,25 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, 329, 330, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, 351, -1, -1, -1, - -1, -1, -1, -1, 359, 360, 361, 362, 363, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 506, 507, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 749, 508, 509, 510, 511, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, @@ -3375,7 +2796,7 @@ static const yytype_int16 yycheck[] = 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, @@ -3390,27 +2811,25 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - 320, 321, 322, 323, 324, 325, 326, -1, -1, 329, - 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, 381, 382, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, -1, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, + 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, + 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, + 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3421,7 +2840,7 @@ static const yytype_int16 yycheck[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -3436,27 +2855,25 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 351, -1, -1, -1, - -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, 377, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 506, 507, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 516, 334, 0, 0, 0, 0, 339, 659, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, @@ -3466,7 +2883,7 @@ static const yytype_int16 yycheck[] = 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, @@ -3481,27 +2898,25 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, 393, -1, -1, 396, -1, 398, 399, - -1, -1, 402, -1, -1, -1, -1, -1, 408, 409, - 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, - -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, + 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 699, 334, 0, 0, 0, + 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, + 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3512,7 +2927,7 @@ static const yytype_int16 yycheck[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -3527,66 +2942,295 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, + 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 334, 0, 0, 0, 0, 339, 340 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 387, 0, 572, 507, 406, 498, 0, 486, 0, + 411, 0, 627, 439, 406, 444, 547, 552, 741, 445, + 406, 395, 557, 574, 338, 411, 355, 418, 333, 334, + 361, 566, 563, 639, 350, 641, 903, 353, 644, 350, + 575, 533, 387, 910, 350, 431, 353, 350, 361, 358, + 358, 353, 361, 920, 361, 351, 387, 486, 387, 361, + 374, 435, 370, 354, 369, 370, 411, 358, 384, 495, + 496, 335, 336, 384, 552, 504, 505, 451, 384, 557, + 383, 384, 385, 386, 352, 563, 331, 332, 566, 351, + 358, 353, 478, 353, 645, 353, 384, 575, 360, 387, + 360, 351, 360, 606, 353, 608, 351, 536, 353, 545, + 354, 360, 357, 352, 358, 551, 594, 553, 351, 358, + 556, 352, 558, 552, 560, 561, 351, 358, 557, 565, + 745, 351, 355, 352, 563, 358, 352, 566, 361, 358, + 358, 354, 358, 361, 713, 358, 575, 639, 351, 641, + 384, 654, 644, 387, 545, 340, 341, 342, 343, 344, + 345, 346, 347, 348, 349, 594, 658, 363, 352, 365, + 561, 351, 778, 351, 358, 360, 413, 414, 415, 416, + 417, 418, 419, 352, 352, 352, 572, 352, 574, 358, + 358, 358, 352, 358, 352, 351, 570, 352, 358, 352, + 358, 924, 352, 358, 352, 358, 352, 352, 358, 352, + 358, 352, 358, 358, 783, 358, 352, 358, 352, 352, + 352, 352, 358, 352, 358, 358, 358, 358, 353, 358, + 384, 846, 352, 387, 663, 351, 637, 361, 358, 383, + 384, 385, 386, 352, 747, 637, 384, 384, 751, 387, + 387, 637, 858, 724, 725, 726, 727, 384, 384, 645, + 387, 387, 384, 384, 358, 387, 387, 802, 803, 384, + 384, 369, 387, 387, 809, 810, 384, 769, 770, 387, + 358, 387, 708, 361, 815, 356, 778, 358, 717, 718, + 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, + 729, 730, 731, 732, 733, 734, 735, 358, 914, 358, + 361, 358, 361, 387, 361, 930, 376, 377, 378, 387, + 366, 367, 368, 355, 802, 803, 387, 713, 329, 330, + 387, 809, 810, 358, 359, 358, 359, 815, 355, 817, + 353, 844, 720, 721, 847, 722, 723, 728, 729, 387, + 353, 387, 361, 352, 360, 360, 358, 361, 387, 387, + 352, 358, 358, 358, 358, 350, 858, 351, 358, 387, + 358, 358, 358, 802, 803, 358, 358, 352, 351, 360, + 809, 810, 353, 351, 887, 354, 815, 387, 817, 353, + 337, 339, 354, 371, 373, 395, 387, 783, 372, 356, + 351, 904, 361, 403, 395, 403, 406, 387, 900, 361, + 403, 411, 403, 411, 403, 406, 919, 351, 411, 351, + 411, 421, 914, 361, 351, 361, 359, 351, 351, 387, + 361, 431, 430, 361, 387, 435, 361, 352, 360, 358, + 431, 358, 358, 352, 435, 352, 847, 358, 354, 354, + 350, 451, 395, 350, 384, 356, 352, 351, 387, 361, + 451, 847, 355, 352, 399, 360, 356, 355, 355, 361, + 731, 730, 735, 577, 435, 732, 431, 733, 478, 734, + 333, 435, 822, 707, 849, 909, 887, 478, 920, 489, + 921, 849, 429, 887, 798, 637, 568, 637, 489, 403, + 800, 887, 637, 813, 803, 817, 807, 805, -1, -1, + -1, -1, -1, 810, -1, -1, -1, -1, -1, -1, + 815, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 541, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 359, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, - 385, 386, 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, + 570, -1, 572, -1, 574, -1, -1, -1, -1, 570, + -1, 572, -1, 574, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, - 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, - -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + -1, -1, -1, -1, -1, -1, -1, 627, -1, -1, + -1, -1, -1, -1, -1, -1, 627, 637, -1, -1, + -1, -1, -1, -1, -1, 645, 637, -1, -1, -1, + -1, -1, -1, -1, 645, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 713, -1, -1, -1, -1, -1, -1, + -1, -1, 713, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 741, -1, -1, -1, 745, -1, -1, -1, -1, + 741, -1, -1, -1, 745, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 783, -1, -1, -1, -1, -1, -1, + -1, -1, 783, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 846, 847, -1, 849, + -1, 849, -1, -1, -1, 846, 847, -1, 849, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 887, -1, -1, + -1, -1, -1, -1, -1, -1, 887, -1, -1, -1, + -1, -1, -1, 903, -1, -1, -1, -1, -1, -1, + 910, -1, 903, -1, -1, -1, -1, -1, -1, 910, + 920, -1, -1, -1, 924, -1, -1, -1, -1, 920, + 930, -1, -1, 924, -1, -1, -1, 0, -1, 930, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 353, -1, -1, -1, -1, -1, -1, -1, 361, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 375, 376, 377, 378, 379, -1, -1, -1, + -1, -1, -1, -1, -1, 388, 389, 390, 391, 392, + 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, + 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, + -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 350, 351, -1, 353, -1, 355, + 356, -1, -1, -1, -1, 361, 362, 363, 364, 365, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, + 376, 377, 378, 379, -1, -1, -1, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, -1, 400, 401, 402, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 350, 351, -1, 353, -1, 355, 356, -1, -1, + -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, + 379, -1, -1, -1, 383, 384, 385, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, -1, -1, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, + -1, 353, -1, 355, -1, -1, -1, -1, -1, 361, + 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 375, 376, 377, 378, 379, -1, -1, + -1, 383, 384, 385, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, -1, 400, 401, + 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -3618,21 +3262,204 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 354, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, + 325, 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, + -1, -1, -1, -1, -1, 350, 351, -1, 353, -1, + 355, -1, -1, -1, -1, -1, 361, 362, 363, 364, + 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 375, 376, 377, 378, 379, -1, -1, -1, 383, 384, + 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, + 395, 396, 397, 398, -1, 400, 401, 402, 403, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, + 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, + 455, 456, 457, 458, 459, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 350, 351, -1, 353, -1, -1, -1, -1, + -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, + 378, 379, -1, -1, -1, 383, 384, 385, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, -1, 400, 401, 402, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, -1, -1, + 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 350, + 351, -1, 353, -1, -1, -1, -1, -1, -1, -1, + 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 375, 376, 377, 378, 379, -1, + -1, -1, 383, 384, 385, 386, 387, 388, 389, 390, + 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, -1, -1, 331, 332, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 350, 351, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 362, 363, + 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 375, 376, 377, 378, -1, -1, -1, -1, 383, + 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, + -1, -1, -1, -1, 361, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, + 377, 378, 379, -1, -1, -1, -1, -1, -1, -1, + -1, 388, 389, 390, 391, 392, 393, 394, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, -1, -1, -1, -1, 424, -1, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3663,21 +3490,204 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, + 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 375, 376, 377, 378, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 388, 389, + 390, 391, 392, 393, 394, 395, -1, -1, 398, -1, + 400, 401, -1, -1, 404, -1, -1, -1, -1, -1, + 410, 411, 412, 413, 414, 415, -1, -1, -1, -1, + -1, -1, -1, -1, 424, -1, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 361, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 375, 376, 377, 378, -1, -1, -1, -1, + -1, -1, -1, -1, 387, 388, 389, 390, 391, 392, + 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, + 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, + -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 353, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, + 376, 377, 378, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 388, 389, 390, 391, 392, 393, 394, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 410, 411, 412, 413, 414, 415, + -1, -1, -1, -1, -1, -1, -1, -1, 424, -1, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 356, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 388, + 389, 390, 391, 392, 393, 394, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 410, 411, 412, 413, 414, 415, -1, -1, -1, + -1, -1, -1, -1, -1, 424, -1, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, - 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, - -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 3, 4, + -1, -1, -1, 375, 376, 377, 378, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 388, 389, 390, 391, + 392, 393, 394, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 410, 411, + 412, 413, 414, 415, -1, -1, -1, -1, -1, -1, + -1, -1, 424, -1, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -3709,196 +3719,197 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, 320, 321, 322, 323, 324, - 325, 326, -1, -1, -1, -1, -1, -1, -1, -1, + 315, 316, 317, 318, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 373, 374, - 375, 376, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, 391, 392, -1, -1, + -1, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 408, 409, 410, 411, 412, 413, -1, - -1, -1, -1, -1, -1, -1, -1, 422, -1, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, + 375, 376, 377, 378, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 388, 389, 390, 391, 392, 393, 394, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 410, 411, 412, 413, 414, + 415, -1, -1, -1, -1, -1, -1, -1, -1, 424, + -1, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - 320, 321, 322, 323, 324, 325, 326, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 455, 456, 457, 458, 459, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 373, 374, 375, 376, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 408, 409, - 410, 411, 412, 413, -1, -1, -1, -1, -1, -1, - -1, -1, 422, -1, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, -1, -1, -1, -1, -1, -1, 323, -1, -1, - -1, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 348, 349, -1, -1, -1, 353, 354, -1, - -1, -1, -1, -1, 360, 361, 362, 363, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, + 378, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 381, 382, 383, 384, 385, - 386, -1, -1, -1, -1, 391, 392, -1, -1, -1, + -1, -1, 410, 411, 412, 413, 414, 415, -1, -1, + -1, -1, -1, -1, -1, -1, 424, -1, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, + -1, -1, -1, 355, 356, -1, -1, -1, -1, -1, + 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, - 416, 417, 418, 419, 420, 421, -1, -1, -1, -1, + -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, + -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 436, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, -1, -1, -1, -1, -1, -1, - 323, -1, -1, -1, -1, -1, 329, 330, -1, -1, + -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, + -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 348, 349, -1, -1, -1, - 353, 354, -1, -1, -1, -1, -1, 360, 361, 362, - 363, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 381, 382, - 383, 384, 385, 386, -1, -1, -1, -1, 391, 392, + -1, -1, -1, 350, 351, -1, -1, -1, 355, 356, + -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, + 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 414, 415, 416, 417, 418, 419, 420, 421, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 436, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, -1, -1, -1, - -1, -1, -1, 323, -1, -1, -1, -1, -1, 329, - 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 348, 349, - -1, -1, 352, -1, -1, -1, -1, -1, -1, -1, - 360, 361, 362, 363, -1, -1, -1, -1, -1, -1, + -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, + -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, + 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 381, 382, 383, 384, 385, 386, -1, -1, -1, - -1, 391, 392, -1, -1, -1, -1, -1, -1, -1, + -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, + -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, - 420, 421, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 436, 4, 5, 6, + -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3915,7 +3926,7 @@ static const yytype_int16 yycheck[] = 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, @@ -3930,192 +3941,193 @@ static const yytype_int16 yycheck[] = 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, - -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 348, 349, -1, -1, -1, 353, -1, -1, -1, - -1, -1, -1, 360, 361, 362, 363, -1, -1, -1, + 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, + -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 381, 382, 383, 384, 385, 386, - -1, -1, -1, -1, 391, 392, -1, -1, -1, -1, + -1, -1, -1, 350, 351, -1, -1, -1, 355, -1, + -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 414, 415, 416, - 417, 418, 419, 420, 421, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 436, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, -1, -1, -1, -1, -1, -1, 323, - -1, -1, -1, -1, -1, 329, 330, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, + 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 348, 349, -1, -1, 352, -1, - -1, -1, -1, -1, -1, -1, 360, 361, 362, 363, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 381, 382, 383, - 384, 385, 386, -1, -1, -1, -1, 391, 392, -1, + -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, + -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, + 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, + -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 414, 415, 416, 417, 418, 419, 420, 421, -1, -1, + -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, + -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 436, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, -1, -1, -1, -1, - -1, -1, 323, -1, -1, -1, -1, -1, 329, 330, + -1, -1, -1, 350, 351, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 348, 349, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, 360, - 361, 362, 363, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, + 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 381, 382, 383, 384, 385, 386, -1, -1, -1, -1, - 391, 392, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 414, 415, 416, 417, 418, 419, 420, - 421, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 436, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, -1, - -1, -1, -1, -1, -1, 323, -1, -1, -1, -1, - -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, + -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 348, 349, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 360, 361, 362, 363, -1, -1, -1, -1, + 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 381, 382, 383, 384, 385, 386, -1, - -1, -1, -1, 391, 392, -1, -1, -1, -1, -1, + -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, + -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 414, 415, 416, 417, - 418, 419, 420, 421, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 436, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, -1, -1, -1, -1, -1, -1, 323, -1, - -1, -1, -1, -1, 329, 330, -1, -1, -1, -1, + -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, + -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 348, 349, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 360, 361, 362, 363, -1, + -1, -1, -1, 350, 351, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 381, 382, 383, 384, - 385, 386, -1, -1, -1, -1, 391, 392, -1, -1, + -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, + 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 414, - 415, 416, 417, 418, 419, 420, 421, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 436, 4, 5, 6, 7, 8, 9, 10, 11, + -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -4131,7 +4143,7 @@ static const yytype_int16 yycheck[] = 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, @@ -4146,58 +4158,58 @@ static const yytype_int16 yycheck[] = 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, -1, -1, -1, -1, -1, - -1, 323, -1, -1, -1, -1, -1, 329, 330, -1, + 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 348, 349, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 360, 361, - 362, 363, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 381, - 382, 383, 384, 385, 386, -1, -1, -1, -1, 391, - 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, + -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 414, 415, 416, 417, 418, 419, 420, 421, + -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, + 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 436, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, -1, -1, - -1, -1, -1, -1, 323, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, -1, -1, - -1, -1, 391, 392 + -1, 388, -1, -1, -1, -1, 393, 394 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4236,142 +4248,142 @@ static const yytype_int16 yystos[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 351, 359, 373, 374, 375, - 376, 377, 386, 387, 388, 389, 390, 391, 392, 408, - 409, 410, 411, 412, 413, 422, 424, 425, 426, 427, + 322, 323, 324, 325, 326, 327, 328, 353, 361, 375, + 376, 377, 378, 379, 388, 389, 390, 391, 392, 393, + 394, 410, 411, 412, 413, 414, 415, 424, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 489, 490, 493, 494, 495, 496, 500, 501, 502, 503, - 504, 505, 508, 509, 510, 511, 512, 514, 519, 520, - 521, 562, 563, 564, 566, 573, 577, 578, 583, 586, - 349, 349, 349, 349, 349, 349, 349, 349, 351, 520, - 353, 385, 349, 349, 359, 385, 359, 565, 350, 356, - 497, 498, 499, 509, 514, 356, 359, 385, 359, 385, - 510, 514, 367, 516, 517, 0, 563, 494, 502, 509, - 359, 493, 385, 569, 570, 587, 588, 382, 385, 569, - 382, 569, 382, 569, 382, 569, 382, 569, 569, 587, - 382, 569, 385, 567, 568, 514, 523, 353, 385, 409, - 506, 507, 385, 513, 351, 359, 515, 353, 541, 566, - 498, 497, 499, 385, 385, 349, 358, 515, 353, 356, - 359, 492, 329, 330, 348, 349, 360, 361, 362, 363, - 381, 382, 383, 384, 385, 414, 415, 416, 417, 418, - 419, 420, 421, 459, 460, 461, 463, 464, 465, 466, - 467, 468, 469, 470, 471, 512, 514, 518, 515, 350, - 385, 359, 358, 356, 350, 356, 350, 356, 358, 356, - 356, 356, 350, 356, 356, 356, 356, 356, 356, 356, - 350, 356, 350, 356, 349, 352, 356, 359, 509, 514, - 524, 525, 522, 358, 350, 356, 350, 356, 352, 470, - 472, 473, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 351, 359, 353, 354, 359, 393, 394, 395, - 396, 398, 399, 400, 401, 402, 403, 404, 405, 406, - 407, 423, 470, 483, 485, 487, 489, 493, 512, 514, - 530, 531, 532, 533, 534, 542, 543, 544, 545, 548, - 549, 552, 553, 554, 561, 566, 515, 358, 515, 353, - 485, 528, 358, 491, 385, 356, 359, 470, 470, 487, - 329, 330, 351, 355, 350, 350, 356, 392, 485, 349, - 470, 356, 368, 566, 348, 351, 382, 570, 587, 385, - 588, 348, 381, 382, 383, 384, 574, 575, 382, 483, - 488, 576, 382, 381, 382, 383, 384, 579, 580, 382, - 488, 581, 382, 348, 582, 382, 587, 385, 488, 584, - 585, 382, 488, 352, 568, 514, 385, 526, 527, 354, - 525, 524, 488, 507, 385, 364, 365, 366, 361, 363, - 327, 328, 331, 332, 367, 368, 333, 334, 371, 370, - 369, 335, 337, 336, 372, 352, 352, 483, 354, 535, - 349, 359, 359, 556, 349, 349, 359, 359, 487, 349, - 487, 357, 359, 359, 359, 359, 338, 339, 340, 341, - 342, 343, 344, 345, 346, 347, 358, 486, 356, 359, - 354, 531, 545, 549, 554, 528, 358, 354, 528, 529, - 528, 524, 385, 350, 462, 487, 385, 485, 470, 348, - 382, 571, 572, 350, 358, 350, 356, 350, 356, 350, - 356, 356, 350, 356, 350, 356, 350, 356, 356, 350, - 356, 356, 350, 356, 350, 356, 350, 350, 526, 515, - 356, 359, 354, 470, 470, 470, 472, 472, 473, 473, - 474, 474, 474, 474, 475, 475, 476, 477, 478, 479, - 480, 481, 484, 352, 542, 555, 531, 557, 487, 359, - 487, 357, 485, 485, 528, 354, 356, 354, 352, 352, - 356, 352, 356, 575, 574, 488, 576, 580, 579, 488, - 581, 348, 582, 584, 585, 359, 527, 487, 536, 487, - 502, 547, 393, 530, 543, 558, 350, 350, 354, 528, - 348, 382, 350, 350, 350, 350, 350, 350, 357, 354, - 385, 350, 349, 547, 559, 560, 538, 539, 540, 546, - 550, 485, 358, 532, 537, 541, 487, 359, 350, 397, - 534, 532, 353, 528, 350, 487, 537, 538, 542, 551, - 359, 354 + 458, 459, 491, 492, 495, 496, 497, 498, 502, 503, + 504, 505, 506, 507, 510, 511, 512, 513, 514, 516, + 521, 522, 523, 564, 565, 566, 568, 575, 579, 580, + 585, 588, 351, 351, 351, 351, 351, 351, 351, 351, + 353, 522, 355, 387, 351, 351, 361, 387, 361, 567, + 352, 358, 499, 500, 501, 511, 516, 358, 361, 387, + 361, 387, 512, 516, 369, 518, 519, 0, 565, 496, + 504, 511, 361, 495, 387, 571, 572, 589, 590, 384, + 387, 571, 384, 571, 384, 571, 384, 571, 384, 571, + 571, 589, 384, 571, 387, 569, 570, 516, 525, 355, + 387, 411, 508, 509, 387, 515, 353, 361, 517, 355, + 543, 568, 500, 499, 501, 387, 387, 351, 360, 517, + 355, 358, 361, 494, 331, 332, 350, 351, 362, 363, + 364, 365, 383, 384, 385, 386, 387, 416, 417, 418, + 419, 420, 421, 422, 423, 461, 462, 463, 465, 466, + 467, 468, 469, 470, 471, 472, 473, 514, 516, 520, + 517, 352, 387, 361, 360, 358, 352, 358, 352, 358, + 360, 358, 358, 358, 352, 358, 358, 358, 358, 358, + 358, 358, 352, 358, 352, 358, 351, 354, 358, 361, + 511, 516, 526, 527, 524, 360, 352, 358, 352, 358, + 354, 472, 474, 475, 476, 477, 478, 479, 480, 481, + 482, 483, 484, 485, 353, 361, 355, 356, 361, 395, + 396, 397, 398, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 425, 472, 485, 487, 489, 491, 495, + 514, 516, 532, 533, 534, 535, 536, 544, 545, 546, + 547, 550, 551, 554, 555, 556, 563, 568, 517, 360, + 517, 355, 487, 530, 360, 493, 387, 358, 361, 472, + 472, 489, 331, 332, 353, 357, 352, 352, 358, 394, + 487, 351, 472, 358, 370, 568, 350, 353, 384, 572, + 589, 387, 590, 350, 383, 384, 385, 386, 576, 577, + 384, 485, 490, 578, 384, 383, 384, 385, 386, 581, + 582, 384, 490, 583, 384, 350, 584, 384, 589, 387, + 490, 586, 587, 384, 490, 354, 570, 516, 387, 528, + 529, 356, 527, 526, 490, 509, 387, 366, 367, 368, + 363, 365, 329, 330, 333, 334, 369, 370, 335, 336, + 373, 372, 371, 337, 339, 338, 374, 354, 354, 485, + 356, 537, 351, 361, 361, 558, 351, 351, 361, 361, + 489, 351, 489, 359, 361, 361, 361, 361, 340, 341, + 342, 343, 344, 345, 346, 347, 348, 349, 360, 488, + 358, 361, 356, 533, 547, 551, 556, 530, 360, 356, + 530, 531, 530, 526, 387, 352, 464, 489, 387, 487, + 472, 350, 384, 573, 574, 352, 360, 352, 358, 352, + 358, 352, 358, 358, 352, 358, 352, 358, 352, 358, + 358, 352, 358, 358, 352, 358, 352, 358, 352, 352, + 528, 517, 358, 361, 356, 472, 472, 472, 474, 474, + 475, 475, 476, 476, 476, 476, 477, 477, 478, 479, + 480, 481, 482, 483, 486, 354, 544, 557, 533, 559, + 489, 361, 489, 359, 487, 487, 530, 356, 358, 356, + 354, 354, 358, 354, 358, 577, 576, 490, 578, 582, + 581, 490, 583, 350, 584, 586, 587, 361, 529, 489, + 538, 489, 504, 549, 395, 532, 545, 560, 352, 352, + 356, 530, 350, 384, 352, 352, 352, 352, 352, 352, + 359, 356, 387, 352, 351, 549, 561, 562, 540, 541, + 542, 548, 552, 487, 360, 534, 539, 543, 489, 361, + 352, 399, 536, 534, 355, 530, 352, 489, 539, 540, + 544, 553, 361, 356 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 458, 459, 460, 460, 460, 460, 460, 460, 460, - 460, 460, 460, 460, 460, 460, 460, 460, 461, 461, - 461, 461, 461, 461, 462, 463, 464, 465, 465, 466, - 466, 467, 467, 468, 469, 469, 469, 470, 470, 470, - 470, 471, 471, 471, 471, 472, 472, 472, 472, 473, - 473, 473, 474, 474, 474, 475, 475, 475, 475, 475, - 476, 476, 476, 477, 477, 478, 478, 479, 479, 480, - 480, 481, 481, 482, 482, 483, 484, 483, 485, 485, - 486, 486, 486, 486, 486, 486, 486, 486, 486, 486, - 486, 487, 487, 488, 489, 489, 489, 489, 489, 489, - 489, 489, 489, 489, 489, 491, 490, 492, 492, 493, - 493, 493, 493, 494, 494, 495, 495, 496, 497, 497, - 498, 498, 498, 498, 499, 500, 500, 500, 500, 500, - 501, 501, 501, 501, 501, 502, 502, 503, 504, 504, - 504, 504, 504, 504, 504, 504, 504, 504, 505, 506, - 506, 507, 507, 507, 508, 509, 509, 510, 510, 510, - 510, 510, 510, 510, 510, 510, 510, 510, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 512, 513, 513, 514, 514, 515, - 515, 515, 515, 516, 516, 517, 518, 518, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 519, 519, 519, 519, 519, 519, 519, - 519, 519, 519, 520, 520, 520, 522, 521, 523, 521, - 524, 524, 525, 525, 526, 526, 527, 527, 528, 528, - 528, 528, 529, 529, 530, 531, 531, 532, 532, 532, - 532, 532, 532, 532, 532, 533, 534, 535, 536, 534, - 537, 537, 539, 538, 540, 538, 541, 541, 542, 542, - 543, 543, 544, 544, 545, 546, 546, 547, 547, 548, - 548, 550, 549, 551, 551, 552, 552, 553, 553, 555, - 554, 556, 554, 557, 554, 558, 558, 559, 559, 560, - 560, 561, 561, 561, 561, 561, 561, 561, 561, 562, - 562, 563, 563, 563, 565, 564, 566, 567, 567, 568, - 568, 569, 569, 570, 570, 571, 571, 572, 572, 573, - 573, 573, 573, 573, 573, 574, 574, 575, 575, 575, - 575, 575, 576, 576, 577, 577, 578, 578, 578, 578, - 578, 578, 578, 578, 579, 579, 580, 580, 580, 580, - 581, 581, 582, 582, 583, 583, 583, 583, 584, 584, - 585, 586, 586, 587, 587, 588, 588 + 0, 460, 461, 462, 462, 462, 462, 462, 462, 462, + 462, 462, 462, 462, 462, 462, 462, 462, 463, 463, + 463, 463, 463, 463, 464, 465, 466, 467, 467, 468, + 468, 469, 469, 470, 471, 471, 471, 472, 472, 472, + 472, 473, 473, 473, 473, 474, 474, 474, 474, 475, + 475, 475, 476, 476, 476, 477, 477, 477, 477, 477, + 478, 478, 478, 479, 479, 480, 480, 481, 481, 482, + 482, 483, 483, 484, 484, 485, 486, 485, 487, 487, + 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, + 488, 489, 489, 490, 491, 491, 491, 491, 491, 491, + 491, 491, 491, 491, 491, 493, 492, 494, 494, 495, + 495, 495, 495, 496, 496, 497, 497, 498, 499, 499, + 500, 500, 500, 500, 501, 502, 502, 502, 502, 502, + 503, 503, 503, 503, 503, 504, 504, 505, 506, 506, + 506, 506, 506, 506, 506, 506, 506, 506, 507, 508, + 508, 509, 509, 509, 510, 511, 511, 512, 512, 512, + 512, 512, 512, 512, 512, 512, 512, 512, 513, 513, + 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, + 513, 513, 513, 513, 513, 514, 515, 515, 516, 516, + 517, 517, 517, 517, 518, 518, 519, 520, 520, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, + 521, 521, 521, 521, 521, 522, 522, 522, 524, 523, + 525, 523, 526, 526, 527, 527, 528, 528, 529, 529, + 530, 530, 530, 530, 531, 531, 532, 533, 533, 534, + 534, 534, 534, 534, 534, 534, 534, 535, 536, 537, + 538, 536, 539, 539, 541, 540, 542, 540, 543, 543, + 544, 544, 545, 545, 546, 546, 547, 548, 548, 549, + 549, 550, 550, 552, 551, 553, 553, 554, 554, 555, + 555, 557, 556, 558, 556, 559, 556, 560, 560, 561, + 561, 562, 562, 563, 563, 563, 563, 563, 563, 563, + 563, 564, 564, 565, 565, 565, 567, 566, 568, 569, + 569, 570, 570, 571, 571, 572, 572, 573, 573, 574, + 574, 575, 575, 575, 575, 575, 575, 576, 576, 577, + 577, 577, 577, 577, 578, 578, 579, 579, 580, 580, + 580, 580, 580, 580, 580, 580, 581, 581, 582, 582, + 582, 582, 583, 583, 584, 584, 585, 585, 585, 585, + 586, 586, 587, 588, 588, 589, 589, 590, 590 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4397,8 +4409,8 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 1, 1, 1, 3, 2, 3, 2, - 3, 3, 4, 1, 0, 3, 1, 3, 1, 1, + 1, 1, 1, 4, 1, 1, 1, 3, 2, 3, + 2, 3, 3, 4, 1, 0, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4430,22 +4442,22 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 0, 6, 0, 5, - 1, 2, 3, 4, 1, 3, 1, 2, 1, 3, - 4, 2, 1, 3, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 2, 2, 0, 0, 5, - 1, 1, 0, 2, 0, 2, 2, 3, 1, 2, - 1, 2, 1, 2, 5, 3, 1, 1, 4, 1, - 2, 0, 8, 0, 1, 3, 2, 1, 2, 0, - 6, 0, 8, 0, 7, 1, 1, 1, 0, 2, - 3, 2, 2, 2, 3, 2, 2, 2, 2, 1, - 2, 1, 1, 1, 0, 3, 5, 1, 3, 1, - 4, 1, 3, 5, 5, 1, 3, 1, 3, 4, - 6, 6, 8, 6, 8, 1, 3, 1, 1, 1, - 1, 1, 1, 3, 4, 6, 4, 6, 6, 8, - 6, 8, 6, 8, 1, 3, 1, 1, 1, 1, - 1, 3, 1, 3, 6, 8, 4, 6, 1, 3, - 1, 4, 6, 1, 3, 3, 3 + 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, + 0, 5, 1, 2, 3, 4, 1, 3, 1, 2, + 1, 3, 4, 2, 1, 3, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, + 0, 5, 1, 1, 0, 2, 0, 2, 2, 3, + 1, 2, 1, 2, 1, 2, 5, 3, 1, 1, + 4, 1, 2, 0, 8, 0, 1, 3, 2, 1, + 2, 0, 6, 0, 8, 0, 7, 1, 1, 1, + 0, 2, 3, 2, 2, 2, 3, 2, 2, 2, + 2, 1, 2, 1, 1, 1, 0, 3, 5, 1, + 3, 1, 4, 1, 3, 5, 5, 1, 3, 1, + 3, 4, 6, 6, 8, 6, 8, 1, 3, 1, + 1, 1, 1, 1, 1, 3, 4, 6, 4, 6, + 6, 8, 6, 8, 6, 8, 1, 3, 1, 1, + 1, 1, 1, 3, 1, 3, 6, 8, 4, 6, + 1, 3, 1, 4, 6, 1, 3, 3, 3 }; @@ -5191,308 +5203,308 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 392 "MachineIndependent/glslang.y" +#line 393 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5199 "MachineIndependent/glslang_tab.cpp" +#line 5211 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ -#line 398 "MachineIndependent/glslang.y" +#line 399 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5207 "MachineIndependent/glslang_tab.cpp" +#line 5219 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 401 "MachineIndependent/glslang.y" +#line 402 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5217 "MachineIndependent/glslang_tab.cpp" +#line 5229 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 406 "MachineIndependent/glslang.y" +#line 407 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5225 "MachineIndependent/glslang_tab.cpp" +#line 5237 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ -#line 409 "MachineIndependent/glslang.y" +#line 410 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5233 "MachineIndependent/glslang_tab.cpp" +#line 5245 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ -#line 412 "MachineIndependent/glslang.y" +#line 413 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5242 "MachineIndependent/glslang_tab.cpp" +#line 5254 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ -#line 416 "MachineIndependent/glslang.y" +#line 417 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5250 "MachineIndependent/glslang_tab.cpp" +#line 5262 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ -#line 420 "MachineIndependent/glslang.y" +#line 421 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5258 "MachineIndependent/glslang_tab.cpp" +#line 5270 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ -#line 423 "MachineIndependent/glslang.y" +#line 424 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5267 "MachineIndependent/glslang_tab.cpp" +#line 5279 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ -#line 427 "MachineIndependent/glslang.y" +#line 428 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5276 "MachineIndependent/glslang_tab.cpp" +#line 5288 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ -#line 431 "MachineIndependent/glslang.y" +#line 432 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5285 "MachineIndependent/glslang_tab.cpp" +#line 5297 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 435 "MachineIndependent/glslang.y" +#line 436 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5294 "MachineIndependent/glslang_tab.cpp" +#line 5306 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ -#line 439 "MachineIndependent/glslang.y" +#line 440 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5303 "MachineIndependent/glslang_tab.cpp" +#line 5315 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 443 "MachineIndependent/glslang.y" +#line 444 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5312 "MachineIndependent/glslang_tab.cpp" +#line 5324 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 447 "MachineIndependent/glslang.y" +#line 448 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5323 "MachineIndependent/glslang_tab.cpp" +#line 5335 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 453 "MachineIndependent/glslang.y" +#line 454 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5332 "MachineIndependent/glslang_tab.cpp" +#line 5344 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ -#line 461 "MachineIndependent/glslang.y" +#line 462 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5340 "MachineIndependent/glslang_tab.cpp" +#line 5352 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 464 "MachineIndependent/glslang.y" +#line 465 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5348 "MachineIndependent/glslang_tab.cpp" +#line 5360 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ -#line 467 "MachineIndependent/glslang.y" +#line 468 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5356 "MachineIndependent/glslang_tab.cpp" +#line 5368 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 470 "MachineIndependent/glslang.y" +#line 471 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5364 "MachineIndependent/glslang_tab.cpp" +#line 5376 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 473 "MachineIndependent/glslang.y" +#line 474 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5374 "MachineIndependent/glslang_tab.cpp" +#line 5386 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 478 "MachineIndependent/glslang.y" +#line 479 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5384 "MachineIndependent/glslang_tab.cpp" +#line 5396 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ -#line 486 "MachineIndependent/glslang.y" +#line 487 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5393 "MachineIndependent/glslang_tab.cpp" +#line 5405 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ -#line 493 "MachineIndependent/glslang.y" +#line 494 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5402 "MachineIndependent/glslang_tab.cpp" +#line 5414 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ -#line 500 "MachineIndependent/glslang.y" +#line 501 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5410 "MachineIndependent/glslang_tab.cpp" +#line 5422 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 506 "MachineIndependent/glslang.y" +#line 507 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5419 "MachineIndependent/glslang_tab.cpp" +#line 5431 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 510 "MachineIndependent/glslang.y" +#line 511 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5428 "MachineIndependent/glslang_tab.cpp" +#line 5440 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 517 "MachineIndependent/glslang.y" +#line 518 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5436 "MachineIndependent/glslang_tab.cpp" +#line 5448 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ -#line 520 "MachineIndependent/glslang.y" +#line 521 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5444 "MachineIndependent/glslang_tab.cpp" +#line 5456 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 526 "MachineIndependent/glslang.y" +#line 527 "MachineIndependent/glslang.y" { - TParameter param = { nullptr, new TType }; + TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-1].interm).function->addParameter(param); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5456 "MachineIndependent/glslang_tab.cpp" +#line 5468 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 533 "MachineIndependent/glslang.y" +#line 534 "MachineIndependent/glslang.y" { - TParameter param = { nullptr, new TType }; + TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-2].interm).function->addParameter(param); (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5468 "MachineIndependent/glslang_tab.cpp" +#line 5480 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 543 "MachineIndependent/glslang.y" +#line 544 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5476 "MachineIndependent/glslang_tab.cpp" +#line 5488 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 551 "MachineIndependent/glslang.y" +#line 552 "MachineIndependent/glslang.y" { // Constructor - (yyval.interm).intermNode = nullptr; + (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5486 "MachineIndependent/glslang_tab.cpp" +#line 5498 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 556 "MachineIndependent/glslang.y" +#line 557 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. // - (yyval.interm).function = nullptr; - (yyval.interm).intermNode = nullptr; + (yyval.interm).function = 0; + (yyval.interm).intermNode = 0; TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode(); if (method) { @@ -5508,56 +5520,56 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "function call, method, or subroutine call expected", "", ""); } - if ((yyval.interm).function == nullptr) { + if ((yyval.interm).function == 0) { // error recover TString* empty = NewPoolTString(""); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5518 "MachineIndependent/glslang_tab.cpp" +#line 5530 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 584 "MachineIndependent/glslang.y" +#line 585 "MachineIndependent/glslang.y" { // Constructor - (yyval.interm).intermNode = nullptr; + (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5528 "MachineIndependent/glslang_tab.cpp" +#line 5540 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 593 "MachineIndependent/glslang.y" +#line 594 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5539 "MachineIndependent/glslang_tab.cpp" +#line 5551 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 599 "MachineIndependent/glslang.y" +#line 600 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5548 "MachineIndependent/glslang_tab.cpp" +#line 5560 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 603 "MachineIndependent/glslang.y" +#line 604 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5557 "MachineIndependent/glslang_tab.cpp" +#line 5569 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 607 "MachineIndependent/glslang.y" +#line 608 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5574,320 +5586,320 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5578 "MachineIndependent/glslang_tab.cpp" +#line 5590 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 627 "MachineIndependent/glslang.y" +#line 628 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5584 "MachineIndependent/glslang_tab.cpp" +#line 5596 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 628 "MachineIndependent/glslang.y" +#line 629 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5590 "MachineIndependent/glslang_tab.cpp" +#line 5602 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 629 "MachineIndependent/glslang.y" +#line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5596 "MachineIndependent/glslang_tab.cpp" +#line 5608 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 630 "MachineIndependent/glslang.y" +#line 631 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5603 "MachineIndependent/glslang_tab.cpp" +#line 5615 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 636 "MachineIndependent/glslang.y" +#line 637 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5609 "MachineIndependent/glslang_tab.cpp" +#line 5621 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 637 "MachineIndependent/glslang.y" +#line 638 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5619 "MachineIndependent/glslang_tab.cpp" +#line 5631 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 642 "MachineIndependent/glslang.y" +#line 643 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5629 "MachineIndependent/glslang_tab.cpp" +#line 5641 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 647 "MachineIndependent/glslang.y" +#line 648 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5640 "MachineIndependent/glslang_tab.cpp" +#line 5652 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 656 "MachineIndependent/glslang.y" +#line 657 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5646 "MachineIndependent/glslang_tab.cpp" +#line 5658 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 657 "MachineIndependent/glslang.y" +#line 658 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5656 "MachineIndependent/glslang_tab.cpp" +#line 5668 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 662 "MachineIndependent/glslang.y" +#line 663 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5666 "MachineIndependent/glslang_tab.cpp" +#line 5678 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 670 "MachineIndependent/glslang.y" +#line 671 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5672 "MachineIndependent/glslang_tab.cpp" +#line 5684 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 671 "MachineIndependent/glslang.y" +#line 672 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5683 "MachineIndependent/glslang_tab.cpp" +#line 5695 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 677 "MachineIndependent/glslang.y" +#line 678 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5694 "MachineIndependent/glslang_tab.cpp" +#line 5706 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 686 "MachineIndependent/glslang.y" +#line 687 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5700 "MachineIndependent/glslang_tab.cpp" +#line 5712 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 687 "MachineIndependent/glslang.y" +#line 688 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5710 "MachineIndependent/glslang_tab.cpp" +#line 5722 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 692 "MachineIndependent/glslang.y" +#line 693 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5720 "MachineIndependent/glslang_tab.cpp" +#line 5732 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 697 "MachineIndependent/glslang.y" +#line 698 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5730 "MachineIndependent/glslang_tab.cpp" +#line 5742 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 702 "MachineIndependent/glslang.y" +#line 703 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5740 "MachineIndependent/glslang_tab.cpp" +#line 5752 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 710 "MachineIndependent/glslang.y" +#line 711 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5746 "MachineIndependent/glslang_tab.cpp" +#line 5758 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 711 "MachineIndependent/glslang.y" +#line 712 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "==", EOpEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5760 "MachineIndependent/glslang_tab.cpp" +#line 5772 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 720 "MachineIndependent/glslang.y" +#line 721 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); parseContext.specializationCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); parseContext.referenceCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "!=", EOpNotEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5774 "MachineIndependent/glslang_tab.cpp" +#line 5786 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 732 "MachineIndependent/glslang.y" +#line 733 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5780 "MachineIndependent/glslang_tab.cpp" +#line 5792 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 733 "MachineIndependent/glslang.y" +#line 734 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5791 "MachineIndependent/glslang_tab.cpp" +#line 5803 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 742 "MachineIndependent/glslang.y" +#line 743 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5797 "MachineIndependent/glslang_tab.cpp" +#line 5809 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 743 "MachineIndependent/glslang.y" +#line 744 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5808 "MachineIndependent/glslang_tab.cpp" +#line 5820 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 752 "MachineIndependent/glslang.y" +#line 753 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5814 "MachineIndependent/glslang_tab.cpp" +#line 5826 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 753 "MachineIndependent/glslang.y" +#line 754 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5825 "MachineIndependent/glslang_tab.cpp" +#line 5837 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 762 "MachineIndependent/glslang.y" +#line 763 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5831 "MachineIndependent/glslang_tab.cpp" +#line 5843 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 763 "MachineIndependent/glslang.y" +#line 764 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5841 "MachineIndependent/glslang_tab.cpp" +#line 5853 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 771 "MachineIndependent/glslang.y" +#line 772 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5847 "MachineIndependent/glslang_tab.cpp" +#line 5859 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 772 "MachineIndependent/glslang.y" +#line 773 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5857 "MachineIndependent/glslang_tab.cpp" +#line 5869 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 780 "MachineIndependent/glslang.y" +#line 781 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5863 "MachineIndependent/glslang_tab.cpp" +#line 5875 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 781 "MachineIndependent/glslang.y" +#line 782 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) + if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5873 "MachineIndependent/glslang_tab.cpp" +#line 5885 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 789 "MachineIndependent/glslang.y" +#line 790 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5879 "MachineIndependent/glslang_tab.cpp" +#line 5891 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 790 "MachineIndependent/glslang.y" +#line 791 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5887 "MachineIndependent/glslang_tab.cpp" +#line 5899 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 793 "MachineIndependent/glslang.y" +#line 794 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5895,22 +5907,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)); parseContext.rValueErrorCheck((yyvsp[-1].lex).loc, ":", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addSelection((yyvsp[-5].interm.intermTypedNode), (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-4].lex).loc); - if ((yyval.interm.intermTypedNode) == nullptr) { + if ((yyval.interm.intermTypedNode) == 0) { parseContext.binaryOpError((yyvsp[-4].lex).loc, ":", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5904 "MachineIndependent/glslang_tab.cpp" +#line 5916 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 808 "MachineIndependent/glslang.y" +#line 809 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5910 "MachineIndependent/glslang_tab.cpp" +#line 5922 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 809 "MachineIndependent/glslang.y" +#line 810 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5919,264 +5931,264 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)); parseContext.rValueErrorCheck((yyvsp[-1].interm).loc, "assign", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.addAssign((yyvsp[-1].interm).loc, (yyvsp[-1].interm).op, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); - if ((yyval.interm.intermTypedNode) == nullptr) { + if ((yyval.interm.intermTypedNode) == 0) { parseContext.assignError((yyvsp[-1].interm).loc, "assign", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5928 "MachineIndependent/glslang_tab.cpp" +#line 5940 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 825 "MachineIndependent/glslang.y" +#line 826 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5937 "MachineIndependent/glslang_tab.cpp" +#line 5949 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 829 "MachineIndependent/glslang.y" +#line 830 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5946 "MachineIndependent/glslang_tab.cpp" +#line 5958 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 833 "MachineIndependent/glslang.y" +#line 834 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5955 "MachineIndependent/glslang_tab.cpp" +#line 5967 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 837 "MachineIndependent/glslang.y" +#line 838 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5965 "MachineIndependent/glslang_tab.cpp" +#line 5977 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 842 "MachineIndependent/glslang.y" +#line 843 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5974 "MachineIndependent/glslang_tab.cpp" +#line 5986 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 846 "MachineIndependent/glslang.y" +#line 847 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5983 "MachineIndependent/glslang_tab.cpp" +#line 5995 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 850 "MachineIndependent/glslang.y" +#line 851 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 5992 "MachineIndependent/glslang_tab.cpp" +#line 6004 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 854 "MachineIndependent/glslang.y" +#line 855 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6001 "MachineIndependent/glslang_tab.cpp" +#line 6013 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 858 "MachineIndependent/glslang.y" +#line 859 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6010 "MachineIndependent/glslang_tab.cpp" +#line 6022 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 862 "MachineIndependent/glslang.y" +#line 863 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6019 "MachineIndependent/glslang_tab.cpp" +#line 6031 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 866 "MachineIndependent/glslang.y" +#line 867 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6028 "MachineIndependent/glslang_tab.cpp" +#line 6040 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 873 "MachineIndependent/glslang.y" +#line 874 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6036 "MachineIndependent/glslang_tab.cpp" +#line 6048 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 876 "MachineIndependent/glslang.y" +#line 877 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); - if ((yyval.interm.intermTypedNode) == nullptr) { + if ((yyval.interm.intermTypedNode) == 0) { parseContext.binaryOpError((yyvsp[-1].lex).loc, ",", (yyvsp[-2].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), (yyvsp[0].interm.intermTypedNode)->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6049 "MachineIndependent/glslang_tab.cpp" +#line 6061 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 887 "MachineIndependent/glslang.y" +#line 888 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6058 "MachineIndependent/glslang_tab.cpp" +#line 6070 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 894 "MachineIndependent/glslang.y" +#line 895 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6068 "MachineIndependent/glslang_tab.cpp" +#line 6080 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 900 "MachineIndependent/glslang.y" +#line 901 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6080 "MachineIndependent/glslang_tab.cpp" +#line 6092 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 907 "MachineIndependent/glslang.y" +#line 908 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6090 "MachineIndependent/glslang_tab.cpp" +#line 6102 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 913 "MachineIndependent/glslang.y" +#line 914 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6100 "MachineIndependent/glslang_tab.cpp" +#line 6112 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 918 "MachineIndependent/glslang.y" +#line 919 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, nullptr, "precision statement"); + parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6112 "MachineIndependent/glslang_tab.cpp" +#line 6124 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 925 "MachineIndependent/glslang.y" +#line 926 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6121 "MachineIndependent/glslang_tab.cpp" +#line 6133 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 929 "MachineIndependent/glslang.y" +#line 930 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6130 "MachineIndependent/glslang_tab.cpp" +#line 6142 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 933 "MachineIndependent/glslang.y" +#line 934 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6139 "MachineIndependent/glslang_tab.cpp" +#line 6151 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 937 "MachineIndependent/glslang.y" +#line 938 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6149 "MachineIndependent/glslang_tab.cpp" +#line 6161 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 942 "MachineIndependent/glslang.y" +#line 943 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6159 "MachineIndependent/glslang_tab.cpp" +#line 6171 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 947 "MachineIndependent/glslang.y" +#line 948 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 6170 "MachineIndependent/glslang_tab.cpp" +#line 6182 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ -#line 956 "MachineIndependent/glslang.y" +#line 957 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6176 "MachineIndependent/glslang_tab.cpp" +#line 6188 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 956 "MachineIndependent/glslang.y" +#line 957 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6186,60 +6198,60 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6190 "MachineIndependent/glslang_tab.cpp" +#line 6202 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 967 "MachineIndependent/glslang.y" +#line 968 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6199 "MachineIndependent/glslang_tab.cpp" +#line 6211 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 971 "MachineIndependent/glslang.y" +#line 972 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6208 "MachineIndependent/glslang_tab.cpp" +#line 6220 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 978 "MachineIndependent/glslang.y" +#line 979 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6217 "MachineIndependent/glslang_tab.cpp" +#line 6229 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 982 "MachineIndependent/glslang.y" +#line 983 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6228 "MachineIndependent/glslang_tab.cpp" +#line 6240 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 988 "MachineIndependent/glslang.y" +#line 989 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6239 "MachineIndependent/glslang_tab.cpp" +#line 6251 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 994 "MachineIndependent/glslang.y" +#line 995 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; @@ -6247,27 +6259,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6251 "MachineIndependent/glslang_tab.cpp" +#line 6263 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 1004 "MachineIndependent/glslang.y" +#line 1005 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6259 "MachineIndependent/glslang_tab.cpp" +#line 6271 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 1007 "MachineIndependent/glslang.y" +#line 1008 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6267 "MachineIndependent/glslang_tab.cpp" +#line 6279 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1014 "MachineIndependent/glslang.y" +#line 1015 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6276,11 +6288,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6280 "MachineIndependent/glslang_tab.cpp" +#line 6292 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1022 "MachineIndependent/glslang.y" +#line 1023 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6298,11 +6310,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6302 "MachineIndependent/glslang_tab.cpp" +#line 6314 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1042 "MachineIndependent/glslang.y" +#line 1043 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6322,15 +6334,15 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6326 "MachineIndependent/glslang_tab.cpp" +#line 6338 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1065 "MachineIndependent/glslang.y" +#line 1066 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); + parseContext.profileRequires((yyvsp[-1].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); parseContext.arraySizeRequiredCheck((yyvsp[-1].interm.type).loc, *(yyvsp[-1].interm.type).arraySizes); } if ((yyvsp[-1].interm.type).basicType == EbtVoid) { @@ -6342,15 +6354,15 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6346 "MachineIndependent/glslang_tab.cpp" +#line 6358 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1080 "MachineIndependent/glslang.y" +#line 1081 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } TType* type = new TType((yyvsp[-2].interm.type)); @@ -6366,11 +6378,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6370 "MachineIndependent/glslang_tab.cpp" +#line 6382 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1105 "MachineIndependent/glslang.y" +#line 1106 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6382,11 +6394,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6386 "MachineIndependent/glslang_tab.cpp" +#line 6398 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1116 "MachineIndependent/glslang.y" +#line 1117 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6394,11 +6406,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6398 "MachineIndependent/glslang_tab.cpp" +#line 6410 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1126 "MachineIndependent/glslang.y" +#line 1127 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6409,11 +6421,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6413 "MachineIndependent/glslang_tab.cpp" +#line 6425 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1136 "MachineIndependent/glslang.y" +#line 1137 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6421,142 +6433,142 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6425 "MachineIndependent/glslang_tab.cpp" +#line 6437 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1146 "MachineIndependent/glslang.y" +#line 1147 "MachineIndependent/glslang.y" { - TParameter param = { nullptr, new TType((yyvsp[0].interm.type)) }; + TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6436 "MachineIndependent/glslang_tab.cpp" +#line 6448 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1155 "MachineIndependent/glslang.y" +#line 1156 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6444 "MachineIndependent/glslang_tab.cpp" +#line 6456 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1158 "MachineIndependent/glslang.y" +#line 1159 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6453 "MachineIndependent/glslang_tab.cpp" +#line 6465 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1162 "MachineIndependent/glslang.y" +#line 1163 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6462 "MachineIndependent/glslang_tab.cpp" +#line 6474 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1166 "MachineIndependent/glslang.y" +#line 1167 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6472 "MachineIndependent/glslang_tab.cpp" +#line 6484 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1171 "MachineIndependent/glslang.y" +#line 1172 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, nullptr, (yyvsp[0].interm.intermTypedNode)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6482 "MachineIndependent/glslang_tab.cpp" +#line 6494 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1179 "MachineIndependent/glslang.y" +#line 1180 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); - (yyval.interm).intermNode = nullptr; + (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6494 "MachineIndependent/glslang_tab.cpp" +#line 6506 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1186 "MachineIndependent/glslang.y" +#line 1187 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); - (yyval.interm).intermNode = nullptr; + (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6504 "MachineIndependent/glslang_tab.cpp" +#line 6516 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1191 "MachineIndependent/glslang.y" +#line 1192 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); - (yyval.interm).intermNode = nullptr; + (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6514 "MachineIndependent/glslang_tab.cpp" +#line 6526 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1196 "MachineIndependent/glslang.y" +#line 1197 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(nullptr, initNode, (yyvsp[-1].lex).loc); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6524 "MachineIndependent/glslang_tab.cpp" +#line 6536 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1201 "MachineIndependent/glslang.y" +#line 1202 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), nullptr, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.growAggregate(nullptr, initNode, (yyvsp[-1].lex).loc); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6534 "MachineIndependent/glslang_tab.cpp" +#line 6546 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1210 "MachineIndependent/glslang.y" +#line 1211 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); parseContext.globalQualifierTypeCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyval.interm.type)); if ((yyvsp[0].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); + parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 6549 "MachineIndependent/glslang_tab.cpp" +#line 6561 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1220 "MachineIndependent/glslang.y" +#line 1221 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); if ((yyvsp[0].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); + parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } if ((yyvsp[0].interm.type).arraySizes && parseContext.arrayQualifierError((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).qualifier)) @@ -6574,58 +6586,58 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6578 "MachineIndependent/glslang_tab.cpp" +#line 6590 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1247 "MachineIndependent/glslang.y" +#line 1248 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); - parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, nullptr, "invariant"); + parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6589 "MachineIndependent/glslang_tab.cpp" +#line 6601 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1256 "MachineIndependent/glslang.y" +#line 1257 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "smooth"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, nullptr, "smooth"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "smooth"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6601 "MachineIndependent/glslang_tab.cpp" +#line 6613 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1263 "MachineIndependent/glslang.y" +#line 1264 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "flat"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, nullptr, "flat"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "flat"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6613 "MachineIndependent/glslang_tab.cpp" +#line 6625 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1271 "MachineIndependent/glslang.y" +#line 1272 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "noperspective"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "noperspective"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6625 "MachineIndependent/glslang_tab.cpp" +#line 6637 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1278 "MachineIndependent/glslang.y" +#line 1279 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6633,11 +6645,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6637 "MachineIndependent/glslang_tab.cpp" +#line 6649 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1285 "MachineIndependent/glslang.y" +#line 1286 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6646,11 +6658,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6650 "MachineIndependent/glslang_tab.cpp" +#line 6662 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1293 "MachineIndependent/glslang.y" +#line 1294 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6659,11 +6671,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6663 "MachineIndependent/glslang_tab.cpp" +#line 6675 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1301 "MachineIndependent/glslang.y" +#line 1302 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6674,11 +6686,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6678 "MachineIndependent/glslang_tab.cpp" +#line 6690 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1311 "MachineIndependent/glslang.y" +#line 1312 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6689,11 +6701,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6693 "MachineIndependent/glslang_tab.cpp" +#line 6705 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1321 "MachineIndependent/glslang.y" +#line 1322 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6701,11 +6713,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6705 "MachineIndependent/glslang_tab.cpp" +#line 6717 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1328 "MachineIndependent/glslang.y" +#line 1329 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6713,84 +6725,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6717 "MachineIndependent/glslang_tab.cpp" +#line 6729 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1339 "MachineIndependent/glslang.y" +#line 1340 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6725 "MachineIndependent/glslang_tab.cpp" +#line 6737 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1345 "MachineIndependent/glslang.y" +#line 1346 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6733 "MachineIndependent/glslang_tab.cpp" +#line 6745 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1348 "MachineIndependent/glslang.y" +#line 1349 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6743 "MachineIndependent/glslang_tab.cpp" +#line 6755 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1355 "MachineIndependent/glslang.y" +#line 1356 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6752 "MachineIndependent/glslang_tab.cpp" +#line 6764 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1359 "MachineIndependent/glslang.y" +#line 1360 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6761 "MachineIndependent/glslang_tab.cpp" +#line 6773 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1363 "MachineIndependent/glslang.y" +#line 1364 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6771 "MachineIndependent/glslang_tab.cpp" +#line 6783 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1372 "MachineIndependent/glslang.y" +#line 1373 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6782 "MachineIndependent/glslang_tab.cpp" +#line 6794 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1382 "MachineIndependent/glslang.y" +#line 1383 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6790 "MachineIndependent/glslang_tab.cpp" +#line 6802 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1385 "MachineIndependent/glslang.y" +#line 1386 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6799,196 +6811,196 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6803 "MachineIndependent/glslang_tab.cpp" +#line 6815 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1396 "MachineIndependent/glslang.y" +#line 1397 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6811 "MachineIndependent/glslang_tab.cpp" +#line 6823 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1399 "MachineIndependent/glslang.y" +#line 1400 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6819 "MachineIndependent/glslang_tab.cpp" +#line 6831 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1402 "MachineIndependent/glslang.y" +#line 1403 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6828 "MachineIndependent/glslang_tab.cpp" +#line 6840 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1406 "MachineIndependent/glslang.y" +#line 1407 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6837 "MachineIndependent/glslang_tab.cpp" +#line 6849 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1410 "MachineIndependent/glslang.y" +#line 1411 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6846 "MachineIndependent/glslang_tab.cpp" +#line 6858 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1415 "MachineIndependent/glslang.y" +#line 1416 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6855 "MachineIndependent/glslang_tab.cpp" +#line 6867 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1419 "MachineIndependent/glslang.y" +#line 1420 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6863 "MachineIndependent/glslang_tab.cpp" +#line 6875 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1422 "MachineIndependent/glslang.y" +#line 1423 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6873 "MachineIndependent/glslang_tab.cpp" +#line 6885 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1427 "MachineIndependent/glslang.y" +#line 1428 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6882 "MachineIndependent/glslang_tab.cpp" +#line 6894 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1431 "MachineIndependent/glslang.y" +#line 1432 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6892 "MachineIndependent/glslang_tab.cpp" +#line 6904 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1436 "MachineIndependent/glslang.y" +#line 1437 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6902 "MachineIndependent/glslang_tab.cpp" +#line 6914 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1445 "MachineIndependent/glslang.y" +#line 1446 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6911 "MachineIndependent/glslang_tab.cpp" +#line 6923 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1449 "MachineIndependent/glslang.y" +#line 1450 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6921 "MachineIndependent/glslang_tab.cpp" +#line 6933 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1454 "MachineIndependent/glslang.y" +#line 1455 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6932 "MachineIndependent/glslang_tab.cpp" +#line 6944 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1460 "MachineIndependent/glslang.y" +#line 1461 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6943 "MachineIndependent/glslang_tab.cpp" +#line 6955 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1466 "MachineIndependent/glslang.y" +#line 1467 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, nullptr, "centroid"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, nullptr, "centroid"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); parseContext.globalCheck((yyvsp[0].lex).loc, "centroid"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6955 "MachineIndependent/glslang_tab.cpp" +#line 6967 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1473 "MachineIndependent/glslang.y" +#line 1474 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6965 "MachineIndependent/glslang_tab.cpp" +#line 6977 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: SHARED */ -#line 1478 "MachineIndependent/glslang.y" +#line 1479 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); - parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, nullptr, "shared"); + parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 310, 0, "shared"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6978 "MachineIndependent/glslang_tab.cpp" +#line 6990 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: BUFFER */ -#line 1486 "MachineIndependent/glslang.y" +#line 1487 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 6988 "MachineIndependent/glslang_tab.cpp" +#line 7000 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: ATTRIBUTE */ -#line 1492 "MachineIndependent/glslang.y" +#line 1493 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7001,11 +7013,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7005 "MachineIndependent/glslang_tab.cpp" +#line 7017 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: VARYING */ -#line 1504 "MachineIndependent/glslang.y" +#line 1505 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7020,32 +7032,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7024 "MachineIndependent/glslang_tab.cpp" +#line 7036 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: PATCH */ -#line 1518 "MachineIndependent/glslang.y" +#line 1519 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7035 "MachineIndependent/glslang_tab.cpp" +#line 7047 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: SAMPLE */ -#line 1524 "MachineIndependent/glslang.y" +#line 1525 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7045 "MachineIndependent/glslang_tab.cpp" +#line 7057 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: HITATTRNV */ -#line 1529 "MachineIndependent/glslang.y" +#line 1530 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7054,11 +7066,24 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7058 "MachineIndependent/glslang_tab.cpp" +#line 7070 "MachineIndependent/glslang_tab.cpp" + break; + + case 181: /* storage_qualifier: HITOBJECTATTRNV */ +#line 1538 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); + parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask + | EShLangMissMask), "hitObjectAttributeNV"); + parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; + } +#line 7083 "MachineIndependent/glslang_tab.cpp" break; - case 181: /* storage_qualifier: HITATTREXT */ -#line 1537 "MachineIndependent/glslang.y" + case 182: /* storage_qualifier: HITATTREXT */ +#line 1546 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7067,11 +7092,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7071 "MachineIndependent/glslang_tab.cpp" +#line 7096 "MachineIndependent/glslang_tab.cpp" break; - case 182: /* storage_qualifier: PAYLOADNV */ -#line 1545 "MachineIndependent/glslang.y" + case 183: /* storage_qualifier: PAYLOADNV */ +#line 1554 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7080,11 +7105,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7084 "MachineIndependent/glslang_tab.cpp" +#line 7109 "MachineIndependent/glslang_tab.cpp" break; - case 183: /* storage_qualifier: PAYLOADEXT */ -#line 1553 "MachineIndependent/glslang.y" + case 184: /* storage_qualifier: PAYLOADEXT */ +#line 1562 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7093,11 +7118,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7097 "MachineIndependent/glslang_tab.cpp" +#line 7122 "MachineIndependent/glslang_tab.cpp" break; - case 184: /* storage_qualifier: PAYLOADINNV */ -#line 1561 "MachineIndependent/glslang.y" + case 185: /* storage_qualifier: PAYLOADINNV */ +#line 1570 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7106,11 +7131,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7110 "MachineIndependent/glslang_tab.cpp" +#line 7135 "MachineIndependent/glslang_tab.cpp" break; - case 185: /* storage_qualifier: PAYLOADINEXT */ -#line 1569 "MachineIndependent/glslang.y" + case 186: /* storage_qualifier: PAYLOADINEXT */ +#line 1578 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7119,11 +7144,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7123 "MachineIndependent/glslang_tab.cpp" +#line 7148 "MachineIndependent/glslang_tab.cpp" break; - case 186: /* storage_qualifier: CALLDATANV */ -#line 1577 "MachineIndependent/glslang.y" + case 187: /* storage_qualifier: CALLDATANV */ +#line 1586 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7132,11 +7157,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7136 "MachineIndependent/glslang_tab.cpp" +#line 7161 "MachineIndependent/glslang_tab.cpp" break; - case 187: /* storage_qualifier: CALLDATAEXT */ -#line 1585 "MachineIndependent/glslang.y" + case 188: /* storage_qualifier: CALLDATAEXT */ +#line 1594 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7145,11 +7170,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7149 "MachineIndependent/glslang_tab.cpp" +#line 7174 "MachineIndependent/glslang_tab.cpp" break; - case 188: /* storage_qualifier: CALLDATAINNV */ -#line 1593 "MachineIndependent/glslang.y" + case 189: /* storage_qualifier: CALLDATAINNV */ +#line 1602 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7157,11 +7182,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7161 "MachineIndependent/glslang_tab.cpp" +#line 7186 "MachineIndependent/glslang_tab.cpp" break; - case 189: /* storage_qualifier: CALLDATAINEXT */ -#line 1600 "MachineIndependent/glslang.y" + case 190: /* storage_qualifier: CALLDATAINEXT */ +#line 1609 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7169,138 +7194,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7173 "MachineIndependent/glslang_tab.cpp" +#line 7198 "MachineIndependent/glslang_tab.cpp" break; - case 190: /* storage_qualifier: COHERENT */ -#line 1607 "MachineIndependent/glslang.y" + case 191: /* storage_qualifier: COHERENT */ +#line 1616 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7182 "MachineIndependent/glslang_tab.cpp" +#line 7207 "MachineIndependent/glslang_tab.cpp" break; - case 191: /* storage_qualifier: DEVICECOHERENT */ -#line 1611 "MachineIndependent/glslang.y" + case 192: /* storage_qualifier: DEVICECOHERENT */ +#line 1620 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7192 "MachineIndependent/glslang_tab.cpp" +#line 7217 "MachineIndependent/glslang_tab.cpp" break; - case 192: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1616 "MachineIndependent/glslang.y" + case 193: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1625 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7202 "MachineIndependent/glslang_tab.cpp" +#line 7227 "MachineIndependent/glslang_tab.cpp" break; - case 193: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1621 "MachineIndependent/glslang.y" + case 194: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1630 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7212 "MachineIndependent/glslang_tab.cpp" +#line 7237 "MachineIndependent/glslang_tab.cpp" break; - case 194: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1626 "MachineIndependent/glslang.y" + case 195: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1635 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7222 "MachineIndependent/glslang_tab.cpp" +#line 7247 "MachineIndependent/glslang_tab.cpp" break; - case 195: /* storage_qualifier: NONPRIVATE */ -#line 1631 "MachineIndependent/glslang.y" + case 196: /* storage_qualifier: NONPRIVATE */ +#line 1640 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7232 "MachineIndependent/glslang_tab.cpp" +#line 7257 "MachineIndependent/glslang_tab.cpp" break; - case 196: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1636 "MachineIndependent/glslang.y" + case 197: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1645 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7242 "MachineIndependent/glslang_tab.cpp" +#line 7267 "MachineIndependent/glslang_tab.cpp" break; - case 197: /* storage_qualifier: VOLATILE */ -#line 1641 "MachineIndependent/glslang.y" + case 198: /* storage_qualifier: VOLATILE */ +#line 1650 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7251 "MachineIndependent/glslang_tab.cpp" +#line 7276 "MachineIndependent/glslang_tab.cpp" break; - case 198: /* storage_qualifier: RESTRICT */ -#line 1645 "MachineIndependent/glslang.y" + case 199: /* storage_qualifier: RESTRICT */ +#line 1654 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7260 "MachineIndependent/glslang_tab.cpp" +#line 7285 "MachineIndependent/glslang_tab.cpp" break; - case 199: /* storage_qualifier: READONLY */ -#line 1649 "MachineIndependent/glslang.y" + case 200: /* storage_qualifier: READONLY */ +#line 1658 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7269 "MachineIndependent/glslang_tab.cpp" +#line 7294 "MachineIndependent/glslang_tab.cpp" break; - case 200: /* storage_qualifier: WRITEONLY */ -#line 1653 "MachineIndependent/glslang.y" + case 201: /* storage_qualifier: WRITEONLY */ +#line 1662 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7278 "MachineIndependent/glslang_tab.cpp" +#line 7303 "MachineIndependent/glslang_tab.cpp" break; - case 201: /* storage_qualifier: SUBROUTINE */ -#line 1657 "MachineIndependent/glslang.y" + case 202: /* storage_qualifier: SUBROUTINE */ +#line 1666 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7289 "MachineIndependent/glslang_tab.cpp" +#line 7314 "MachineIndependent/glslang_tab.cpp" break; - case 202: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1663 "MachineIndependent/glslang.y" + case 203: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1672 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7300 "MachineIndependent/glslang_tab.cpp" +#line 7325 "MachineIndependent/glslang_tab.cpp" break; - case 203: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1669 "MachineIndependent/glslang.y" + case 204: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ +#line 1678 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7308,48 +7333,48 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7312 "MachineIndependent/glslang_tab.cpp" +#line 7337 "MachineIndependent/glslang_tab.cpp" break; - case 204: /* non_uniform_qualifier: NONUNIFORM */ -#line 1681 "MachineIndependent/glslang.y" + case 205: /* non_uniform_qualifier: NONUNIFORM */ +#line 1690 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7321 "MachineIndependent/glslang_tab.cpp" +#line 7346 "MachineIndependent/glslang_tab.cpp" break; - case 205: /* type_name_list: IDENTIFIER */ -#line 1688 "MachineIndependent/glslang.y" + case 206: /* type_name_list: IDENTIFIER */ +#line 1697 "MachineIndependent/glslang.y" { // TODO } -#line 7329 "MachineIndependent/glslang_tab.cpp" +#line 7354 "MachineIndependent/glslang_tab.cpp" break; - case 206: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1691 "MachineIndependent/glslang.y" + case 207: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1700 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7339 "MachineIndependent/glslang_tab.cpp" +#line 7364 "MachineIndependent/glslang_tab.cpp" break; - case 207: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1700 "MachineIndependent/glslang.y" + case 208: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1709 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 7349 "MachineIndependent/glslang_tab.cpp" +#line 7374 "MachineIndependent/glslang_tab.cpp" break; - case 208: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1705 "MachineIndependent/glslang.y" + case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1714 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7357,21 +7382,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 7361 "MachineIndependent/glslang_tab.cpp" +#line 7386 "MachineIndependent/glslang_tab.cpp" break; - case 209: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1715 "MachineIndependent/glslang.y" + case 210: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1724 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7371 "MachineIndependent/glslang_tab.cpp" +#line 7396 "MachineIndependent/glslang_tab.cpp" break; - case 210: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1720 "MachineIndependent/glslang.y" + case 211: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1729 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7380,20 +7405,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7384 "MachineIndependent/glslang_tab.cpp" +#line 7409 "MachineIndependent/glslang_tab.cpp" break; - case 211: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1728 "MachineIndependent/glslang.y" + case 212: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1737 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7393 "MachineIndependent/glslang_tab.cpp" +#line 7418 "MachineIndependent/glslang_tab.cpp" break; - case 212: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1732 "MachineIndependent/glslang.y" + case 213: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1741 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7401,35 +7426,35 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7405 "MachineIndependent/glslang_tab.cpp" +#line 7430 "MachineIndependent/glslang_tab.cpp" break; - case 213: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1742 "MachineIndependent/glslang.y" + case 214: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1751 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7413 "MachineIndependent/glslang_tab.cpp" +#line 7438 "MachineIndependent/glslang_tab.cpp" break; - case 214: /* type_parameter_specifier_opt: %empty */ -#line 1745 "MachineIndependent/glslang.y" + case 215: /* type_parameter_specifier_opt: %empty */ +#line 1754 "MachineIndependent/glslang.y" { - (yyval.interm.typeParameters) = nullptr; + (yyval.interm.typeParameters) = 0; } -#line 7421 "MachineIndependent/glslang_tab.cpp" +#line 7446 "MachineIndependent/glslang_tab.cpp" break; - case 215: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1751 "MachineIndependent/glslang.y" + case 216: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1760 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7429 "MachineIndependent/glslang_tab.cpp" +#line 7454 "MachineIndependent/glslang_tab.cpp" break; - case 216: /* type_parameter_specifier_list: unary_expression */ -#line 1757 "MachineIndependent/glslang.y" + case 217: /* type_parameter_specifier_list: unary_expression */ +#line 1766 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TArraySizes; @@ -7437,11 +7462,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7441 "MachineIndependent/glslang_tab.cpp" +#line 7466 "MachineIndependent/glslang_tab.cpp" break; - case 217: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1764 "MachineIndependent/glslang.y" + case 218: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1773 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7449,300 +7474,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7453 "MachineIndependent/glslang_tab.cpp" +#line 7478 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_specifier_nonarray: VOID */ -#line 1774 "MachineIndependent/glslang.y" + case 219: /* type_specifier_nonarray: VOID */ +#line 1783 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7462 "MachineIndependent/glslang_tab.cpp" +#line 7487 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_specifier_nonarray: FLOAT */ -#line 1778 "MachineIndependent/glslang.y" + case 220: /* type_specifier_nonarray: FLOAT */ +#line 1787 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7471 "MachineIndependent/glslang_tab.cpp" +#line 7496 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_specifier_nonarray: INT */ -#line 1782 "MachineIndependent/glslang.y" + case 221: /* type_specifier_nonarray: INT */ +#line 1791 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7480 "MachineIndependent/glslang_tab.cpp" +#line 7505 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_specifier_nonarray: UINT */ -#line 1786 "MachineIndependent/glslang.y" + case 222: /* type_specifier_nonarray: UINT */ +#line 1795 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7490 "MachineIndependent/glslang_tab.cpp" +#line 7515 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_specifier_nonarray: BOOL */ -#line 1791 "MachineIndependent/glslang.y" + case 223: /* type_specifier_nonarray: BOOL */ +#line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7499 "MachineIndependent/glslang_tab.cpp" +#line 7524 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: VEC2 */ -#line 1795 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: VEC2 */ +#line 1804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7509 "MachineIndependent/glslang_tab.cpp" +#line 7534 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: VEC3 */ -#line 1800 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: VEC3 */ +#line 1809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7519 "MachineIndependent/glslang_tab.cpp" +#line 7544 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: VEC4 */ -#line 1805 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: VEC4 */ +#line 1814 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7529 "MachineIndependent/glslang_tab.cpp" +#line 7554 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: BVEC2 */ -#line 1810 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: BVEC2 */ +#line 1819 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7539 "MachineIndependent/glslang_tab.cpp" +#line 7564 "MachineIndependent/glslang_tab.cpp" break; - case 227: /* type_specifier_nonarray: BVEC3 */ -#line 1815 "MachineIndependent/glslang.y" + case 228: /* type_specifier_nonarray: BVEC3 */ +#line 1824 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7549 "MachineIndependent/glslang_tab.cpp" +#line 7574 "MachineIndependent/glslang_tab.cpp" break; - case 228: /* type_specifier_nonarray: BVEC4 */ -#line 1820 "MachineIndependent/glslang.y" + case 229: /* type_specifier_nonarray: BVEC4 */ +#line 1829 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7559 "MachineIndependent/glslang_tab.cpp" +#line 7584 "MachineIndependent/glslang_tab.cpp" break; - case 229: /* type_specifier_nonarray: IVEC2 */ -#line 1825 "MachineIndependent/glslang.y" + case 230: /* type_specifier_nonarray: IVEC2 */ +#line 1834 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7569 "MachineIndependent/glslang_tab.cpp" +#line 7594 "MachineIndependent/glslang_tab.cpp" break; - case 230: /* type_specifier_nonarray: IVEC3 */ -#line 1830 "MachineIndependent/glslang.y" + case 231: /* type_specifier_nonarray: IVEC3 */ +#line 1839 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7579 "MachineIndependent/glslang_tab.cpp" +#line 7604 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: IVEC4 */ -#line 1835 "MachineIndependent/glslang.y" + case 232: /* type_specifier_nonarray: IVEC4 */ +#line 1844 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7589 "MachineIndependent/glslang_tab.cpp" +#line 7614 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: UVEC2 */ -#line 1840 "MachineIndependent/glslang.y" + case 233: /* type_specifier_nonarray: UVEC2 */ +#line 1849 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7600 "MachineIndependent/glslang_tab.cpp" +#line 7625 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: UVEC3 */ -#line 1846 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: UVEC3 */ +#line 1855 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7611 "MachineIndependent/glslang_tab.cpp" +#line 7636 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: UVEC4 */ -#line 1852 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: UVEC4 */ +#line 1861 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7622 "MachineIndependent/glslang_tab.cpp" +#line 7647 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: MAT2 */ -#line 1858 "MachineIndependent/glslang.y" + case 236: /* type_specifier_nonarray: MAT2 */ +#line 1867 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7632 "MachineIndependent/glslang_tab.cpp" +#line 7657 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: MAT3 */ -#line 1863 "MachineIndependent/glslang.y" + case 237: /* type_specifier_nonarray: MAT3 */ +#line 1872 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7642 "MachineIndependent/glslang_tab.cpp" +#line 7667 "MachineIndependent/glslang_tab.cpp" break; - case 237: /* type_specifier_nonarray: MAT4 */ -#line 1868 "MachineIndependent/glslang.y" + case 238: /* type_specifier_nonarray: MAT4 */ +#line 1877 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7652 "MachineIndependent/glslang_tab.cpp" +#line 7677 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: MAT2X2 */ -#line 1873 "MachineIndependent/glslang.y" + case 239: /* type_specifier_nonarray: MAT2X2 */ +#line 1882 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7662 "MachineIndependent/glslang_tab.cpp" +#line 7687 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: MAT2X3 */ -#line 1878 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: MAT2X3 */ +#line 1887 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7672 "MachineIndependent/glslang_tab.cpp" +#line 7697 "MachineIndependent/glslang_tab.cpp" break; - case 240: /* type_specifier_nonarray: MAT2X4 */ -#line 1883 "MachineIndependent/glslang.y" + case 241: /* type_specifier_nonarray: MAT2X4 */ +#line 1892 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7682 "MachineIndependent/glslang_tab.cpp" +#line 7707 "MachineIndependent/glslang_tab.cpp" break; - case 241: /* type_specifier_nonarray: MAT3X2 */ -#line 1888 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT3X2 */ +#line 1897 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7692 "MachineIndependent/glslang_tab.cpp" +#line 7717 "MachineIndependent/glslang_tab.cpp" break; - case 242: /* type_specifier_nonarray: MAT3X3 */ -#line 1893 "MachineIndependent/glslang.y" + case 243: /* type_specifier_nonarray: MAT3X3 */ +#line 1902 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7702 "MachineIndependent/glslang_tab.cpp" +#line 7727 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT3X4 */ -#line 1898 "MachineIndependent/glslang.y" + case 244: /* type_specifier_nonarray: MAT3X4 */ +#line 1907 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7712 "MachineIndependent/glslang_tab.cpp" +#line 7737 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: MAT4X2 */ -#line 1903 "MachineIndependent/glslang.y" + case 245: /* type_specifier_nonarray: MAT4X2 */ +#line 1912 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7722 "MachineIndependent/glslang_tab.cpp" +#line 7747 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: MAT4X3 */ -#line 1908 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: MAT4X3 */ +#line 1917 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7732 "MachineIndependent/glslang_tab.cpp" +#line 7757 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: MAT4X4 */ -#line 1913 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: MAT4X4 */ +#line 1922 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7742 "MachineIndependent/glslang_tab.cpp" +#line 7767 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: DOUBLE */ -#line 1919 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: DOUBLE */ +#line 1928 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7750,121 +7775,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7754 "MachineIndependent/glslang_tab.cpp" +#line 7779 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: FLOAT16_T */ -#line 1926 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: FLOAT16_T */ +#line 1935 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7764 "MachineIndependent/glslang_tab.cpp" +#line 7789 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: FLOAT32_T */ -#line 1931 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: FLOAT32_T */ +#line 1940 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7774 "MachineIndependent/glslang_tab.cpp" +#line 7799 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: FLOAT64_T */ -#line 1936 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: FLOAT64_T */ +#line 1945 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7784 "MachineIndependent/glslang_tab.cpp" +#line 7809 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: INT8_T */ -#line 1941 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: INT8_T */ +#line 1950 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7794 "MachineIndependent/glslang_tab.cpp" +#line 7819 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: UINT8_T */ -#line 1946 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: UINT8_T */ +#line 1955 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7804 "MachineIndependent/glslang_tab.cpp" +#line 7829 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: INT16_T */ -#line 1951 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: INT16_T */ +#line 1960 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7814 "MachineIndependent/glslang_tab.cpp" +#line 7839 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: UINT16_T */ -#line 1956 "MachineIndependent/glslang.y" + case 255: /* type_specifier_nonarray: UINT16_T */ +#line 1965 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7824 "MachineIndependent/glslang_tab.cpp" +#line 7849 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: INT32_T */ -#line 1961 "MachineIndependent/glslang.y" + case 256: /* type_specifier_nonarray: INT32_T */ +#line 1970 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7834 "MachineIndependent/glslang_tab.cpp" +#line 7859 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: UINT32_T */ -#line 1966 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: UINT32_T */ +#line 1975 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7844 "MachineIndependent/glslang_tab.cpp" +#line 7869 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: INT64_T */ -#line 1971 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: INT64_T */ +#line 1980 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7854 "MachineIndependent/glslang_tab.cpp" +#line 7879 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: UINT64_T */ -#line 1976 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: UINT64_T */ +#line 1985 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7864 "MachineIndependent/glslang_tab.cpp" +#line 7889 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: DVEC2 */ -#line 1981 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: DVEC2 */ +#line 1990 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7873,11 +7898,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7877 "MachineIndependent/glslang_tab.cpp" +#line 7902 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: DVEC3 */ -#line 1989 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: DVEC3 */ +#line 1998 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7886,11 +7911,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7890 "MachineIndependent/glslang_tab.cpp" +#line 7915 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: DVEC4 */ -#line 1997 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: DVEC4 */ +#line 2006 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7899,374 +7924,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7903 "MachineIndependent/glslang_tab.cpp" +#line 7928 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: F16VEC2 */ -#line 2005 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: F16VEC2 */ +#line 2014 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7914 "MachineIndependent/glslang_tab.cpp" +#line 7939 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: F16VEC3 */ -#line 2011 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: F16VEC3 */ +#line 2020 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7925 "MachineIndependent/glslang_tab.cpp" +#line 7950 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: F16VEC4 */ -#line 2017 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: F16VEC4 */ +#line 2026 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7936 "MachineIndependent/glslang_tab.cpp" +#line 7961 "MachineIndependent/glslang_tab.cpp" break; - case 265: /* type_specifier_nonarray: F32VEC2 */ -#line 2023 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: F32VEC2 */ +#line 2032 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7947 "MachineIndependent/glslang_tab.cpp" +#line 7972 "MachineIndependent/glslang_tab.cpp" break; - case 266: /* type_specifier_nonarray: F32VEC3 */ -#line 2029 "MachineIndependent/glslang.y" + case 267: /* type_specifier_nonarray: F32VEC3 */ +#line 2038 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7958 "MachineIndependent/glslang_tab.cpp" +#line 7983 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: F32VEC4 */ -#line 2035 "MachineIndependent/glslang.y" + case 268: /* type_specifier_nonarray: F32VEC4 */ +#line 2044 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7969 "MachineIndependent/glslang_tab.cpp" +#line 7994 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: F64VEC2 */ -#line 2041 "MachineIndependent/glslang.y" + case 269: /* type_specifier_nonarray: F64VEC2 */ +#line 2050 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7980 "MachineIndependent/glslang_tab.cpp" +#line 8005 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: F64VEC3 */ -#line 2047 "MachineIndependent/glslang.y" + case 270: /* type_specifier_nonarray: F64VEC3 */ +#line 2056 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7991 "MachineIndependent/glslang_tab.cpp" +#line 8016 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: F64VEC4 */ -#line 2053 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: F64VEC4 */ +#line 2062 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8002 "MachineIndependent/glslang_tab.cpp" +#line 8027 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: I8VEC2 */ -#line 2059 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: I8VEC2 */ +#line 2068 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8013 "MachineIndependent/glslang_tab.cpp" +#line 8038 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: I8VEC3 */ -#line 2065 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: I8VEC3 */ +#line 2074 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8024 "MachineIndependent/glslang_tab.cpp" +#line 8049 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: I8VEC4 */ -#line 2071 "MachineIndependent/glslang.y" + case 274: /* type_specifier_nonarray: I8VEC4 */ +#line 2080 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8035 "MachineIndependent/glslang_tab.cpp" +#line 8060 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: I16VEC2 */ -#line 2077 "MachineIndependent/glslang.y" + case 275: /* type_specifier_nonarray: I16VEC2 */ +#line 2086 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8046 "MachineIndependent/glslang_tab.cpp" +#line 8071 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: I16VEC3 */ -#line 2083 "MachineIndependent/glslang.y" + case 276: /* type_specifier_nonarray: I16VEC3 */ +#line 2092 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8057 "MachineIndependent/glslang_tab.cpp" +#line 8082 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: I16VEC4 */ -#line 2089 "MachineIndependent/glslang.y" + case 277: /* type_specifier_nonarray: I16VEC4 */ +#line 2098 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8068 "MachineIndependent/glslang_tab.cpp" +#line 8093 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: I32VEC2 */ -#line 2095 "MachineIndependent/glslang.y" + case 278: /* type_specifier_nonarray: I32VEC2 */ +#line 2104 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8079 "MachineIndependent/glslang_tab.cpp" +#line 8104 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: I32VEC3 */ -#line 2101 "MachineIndependent/glslang.y" + case 279: /* type_specifier_nonarray: I32VEC3 */ +#line 2110 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8090 "MachineIndependent/glslang_tab.cpp" +#line 8115 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: I32VEC4 */ -#line 2107 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: I32VEC4 */ +#line 2116 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8101 "MachineIndependent/glslang_tab.cpp" +#line 8126 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: I64VEC2 */ -#line 2113 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: I64VEC2 */ +#line 2122 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8112 "MachineIndependent/glslang_tab.cpp" +#line 8137 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: I64VEC3 */ -#line 2119 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: I64VEC3 */ +#line 2128 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8123 "MachineIndependent/glslang_tab.cpp" +#line 8148 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: I64VEC4 */ -#line 2125 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: I64VEC4 */ +#line 2134 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8134 "MachineIndependent/glslang_tab.cpp" +#line 8159 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: U8VEC2 */ -#line 2131 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: U8VEC2 */ +#line 2140 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8145 "MachineIndependent/glslang_tab.cpp" +#line 8170 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: U8VEC3 */ -#line 2137 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: U8VEC3 */ +#line 2146 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8156 "MachineIndependent/glslang_tab.cpp" +#line 8181 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: U8VEC4 */ -#line 2143 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: U8VEC4 */ +#line 2152 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8167 "MachineIndependent/glslang_tab.cpp" +#line 8192 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: U16VEC2 */ -#line 2149 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: U16VEC2 */ +#line 2158 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8178 "MachineIndependent/glslang_tab.cpp" +#line 8203 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: U16VEC3 */ -#line 2155 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: U16VEC3 */ +#line 2164 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8189 "MachineIndependent/glslang_tab.cpp" +#line 8214 "MachineIndependent/glslang_tab.cpp" break; - case 288: /* type_specifier_nonarray: U16VEC4 */ -#line 2161 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: U16VEC4 */ +#line 2170 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8200 "MachineIndependent/glslang_tab.cpp" +#line 8225 "MachineIndependent/glslang_tab.cpp" break; - case 289: /* type_specifier_nonarray: U32VEC2 */ -#line 2167 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: U32VEC2 */ +#line 2176 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8211 "MachineIndependent/glslang_tab.cpp" +#line 8236 "MachineIndependent/glslang_tab.cpp" break; - case 290: /* type_specifier_nonarray: U32VEC3 */ -#line 2173 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: U32VEC3 */ +#line 2182 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8222 "MachineIndependent/glslang_tab.cpp" +#line 8247 "MachineIndependent/glslang_tab.cpp" break; - case 291: /* type_specifier_nonarray: U32VEC4 */ -#line 2179 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: U32VEC4 */ +#line 2188 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8233 "MachineIndependent/glslang_tab.cpp" +#line 8258 "MachineIndependent/glslang_tab.cpp" break; - case 292: /* type_specifier_nonarray: U64VEC2 */ -#line 2185 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: U64VEC2 */ +#line 2194 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8244 "MachineIndependent/glslang_tab.cpp" +#line 8269 "MachineIndependent/glslang_tab.cpp" break; - case 293: /* type_specifier_nonarray: U64VEC3 */ -#line 2191 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: U64VEC3 */ +#line 2200 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8255 "MachineIndependent/glslang_tab.cpp" +#line 8280 "MachineIndependent/glslang_tab.cpp" break; - case 294: /* type_specifier_nonarray: U64VEC4 */ -#line 2197 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: U64VEC4 */ +#line 2206 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8266 "MachineIndependent/glslang_tab.cpp" +#line 8291 "MachineIndependent/glslang_tab.cpp" break; - case 295: /* type_specifier_nonarray: DMAT2 */ -#line 2203 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: DMAT2 */ +#line 2212 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8275,11 +8300,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8279 "MachineIndependent/glslang_tab.cpp" +#line 8304 "MachineIndependent/glslang_tab.cpp" break; - case 296: /* type_specifier_nonarray: DMAT3 */ -#line 2211 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: DMAT3 */ +#line 2220 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8288,11 +8313,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8292 "MachineIndependent/glslang_tab.cpp" +#line 8317 "MachineIndependent/glslang_tab.cpp" break; - case 297: /* type_specifier_nonarray: DMAT4 */ -#line 2219 "MachineIndependent/glslang.y" + case 298: /* type_specifier_nonarray: DMAT4 */ +#line 2228 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8301,11 +8326,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8305 "MachineIndependent/glslang_tab.cpp" +#line 8330 "MachineIndependent/glslang_tab.cpp" break; - case 298: /* type_specifier_nonarray: DMAT2X2 */ -#line 2227 "MachineIndependent/glslang.y" + case 299: /* type_specifier_nonarray: DMAT2X2 */ +#line 2236 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8314,11 +8339,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8318 "MachineIndependent/glslang_tab.cpp" +#line 8343 "MachineIndependent/glslang_tab.cpp" break; - case 299: /* type_specifier_nonarray: DMAT2X3 */ -#line 2235 "MachineIndependent/glslang.y" + case 300: /* type_specifier_nonarray: DMAT2X3 */ +#line 2244 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8327,11 +8352,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8331 "MachineIndependent/glslang_tab.cpp" +#line 8356 "MachineIndependent/glslang_tab.cpp" break; - case 300: /* type_specifier_nonarray: DMAT2X4 */ -#line 2243 "MachineIndependent/glslang.y" + case 301: /* type_specifier_nonarray: DMAT2X4 */ +#line 2252 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8340,11 +8365,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8344 "MachineIndependent/glslang_tab.cpp" +#line 8369 "MachineIndependent/glslang_tab.cpp" break; - case 301: /* type_specifier_nonarray: DMAT3X2 */ -#line 2251 "MachineIndependent/glslang.y" + case 302: /* type_specifier_nonarray: DMAT3X2 */ +#line 2260 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8353,11 +8378,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8357 "MachineIndependent/glslang_tab.cpp" +#line 8382 "MachineIndependent/glslang_tab.cpp" break; - case 302: /* type_specifier_nonarray: DMAT3X3 */ -#line 2259 "MachineIndependent/glslang.y" + case 303: /* type_specifier_nonarray: DMAT3X3 */ +#line 2268 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8366,11 +8391,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8370 "MachineIndependent/glslang_tab.cpp" +#line 8395 "MachineIndependent/glslang_tab.cpp" break; - case 303: /* type_specifier_nonarray: DMAT3X4 */ -#line 2267 "MachineIndependent/glslang.y" + case 304: /* type_specifier_nonarray: DMAT3X4 */ +#line 2276 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8379,11 +8404,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8383 "MachineIndependent/glslang_tab.cpp" +#line 8408 "MachineIndependent/glslang_tab.cpp" break; - case 304: /* type_specifier_nonarray: DMAT4X2 */ -#line 2275 "MachineIndependent/glslang.y" + case 305: /* type_specifier_nonarray: DMAT4X2 */ +#line 2284 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8392,11 +8417,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8396 "MachineIndependent/glslang_tab.cpp" +#line 8421 "MachineIndependent/glslang_tab.cpp" break; - case 305: /* type_specifier_nonarray: DMAT4X3 */ -#line 2283 "MachineIndependent/glslang.y" + case 306: /* type_specifier_nonarray: DMAT4X3 */ +#line 2292 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8405,11 +8430,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8409 "MachineIndependent/glslang_tab.cpp" +#line 8434 "MachineIndependent/glslang_tab.cpp" break; - case 306: /* type_specifier_nonarray: DMAT4X4 */ -#line 2291 "MachineIndependent/glslang.y" + case 307: /* type_specifier_nonarray: DMAT4X4 */ +#line 2300 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8418,2228 +8443,2228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8422 "MachineIndependent/glslang_tab.cpp" +#line 8447 "MachineIndependent/glslang_tab.cpp" break; - case 307: /* type_specifier_nonarray: F16MAT2 */ -#line 2299 "MachineIndependent/glslang.y" + case 308: /* type_specifier_nonarray: F16MAT2 */ +#line 2308 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8433 "MachineIndependent/glslang_tab.cpp" +#line 8458 "MachineIndependent/glslang_tab.cpp" break; - case 308: /* type_specifier_nonarray: F16MAT3 */ -#line 2305 "MachineIndependent/glslang.y" + case 309: /* type_specifier_nonarray: F16MAT3 */ +#line 2314 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8444 "MachineIndependent/glslang_tab.cpp" +#line 8469 "MachineIndependent/glslang_tab.cpp" break; - case 309: /* type_specifier_nonarray: F16MAT4 */ -#line 2311 "MachineIndependent/glslang.y" + case 310: /* type_specifier_nonarray: F16MAT4 */ +#line 2320 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8455 "MachineIndependent/glslang_tab.cpp" +#line 8480 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2317 "MachineIndependent/glslang.y" + case 311: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2326 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8466 "MachineIndependent/glslang_tab.cpp" +#line 8491 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2323 "MachineIndependent/glslang.y" + case 312: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2332 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8477 "MachineIndependent/glslang_tab.cpp" +#line 8502 "MachineIndependent/glslang_tab.cpp" break; - case 312: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2329 "MachineIndependent/glslang.y" + case 313: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2338 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8488 "MachineIndependent/glslang_tab.cpp" +#line 8513 "MachineIndependent/glslang_tab.cpp" break; - case 313: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2335 "MachineIndependent/glslang.y" + case 314: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2344 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8499 "MachineIndependent/glslang_tab.cpp" +#line 8524 "MachineIndependent/glslang_tab.cpp" break; - case 314: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2341 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2350 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8510 "MachineIndependent/glslang_tab.cpp" +#line 8535 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2347 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2356 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8521 "MachineIndependent/glslang_tab.cpp" +#line 8546 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2353 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2362 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8532 "MachineIndependent/glslang_tab.cpp" +#line 8557 "MachineIndependent/glslang_tab.cpp" break; - case 317: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2359 "MachineIndependent/glslang.y" + case 318: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2368 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8543 "MachineIndependent/glslang_tab.cpp" +#line 8568 "MachineIndependent/glslang_tab.cpp" break; - case 318: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2365 "MachineIndependent/glslang.y" + case 319: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2374 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8554 "MachineIndependent/glslang_tab.cpp" +#line 8579 "MachineIndependent/glslang_tab.cpp" break; - case 319: /* type_specifier_nonarray: F32MAT2 */ -#line 2371 "MachineIndependent/glslang.y" + case 320: /* type_specifier_nonarray: F32MAT2 */ +#line 2380 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8565 "MachineIndependent/glslang_tab.cpp" +#line 8590 "MachineIndependent/glslang_tab.cpp" break; - case 320: /* type_specifier_nonarray: F32MAT3 */ -#line 2377 "MachineIndependent/glslang.y" + case 321: /* type_specifier_nonarray: F32MAT3 */ +#line 2386 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8576 "MachineIndependent/glslang_tab.cpp" +#line 8601 "MachineIndependent/glslang_tab.cpp" break; - case 321: /* type_specifier_nonarray: F32MAT4 */ -#line 2383 "MachineIndependent/glslang.y" + case 322: /* type_specifier_nonarray: F32MAT4 */ +#line 2392 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8587 "MachineIndependent/glslang_tab.cpp" +#line 8612 "MachineIndependent/glslang_tab.cpp" break; - case 322: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2389 "MachineIndependent/glslang.y" + case 323: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2398 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8598 "MachineIndependent/glslang_tab.cpp" +#line 8623 "MachineIndependent/glslang_tab.cpp" break; - case 323: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2395 "MachineIndependent/glslang.y" + case 324: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2404 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8609 "MachineIndependent/glslang_tab.cpp" +#line 8634 "MachineIndependent/glslang_tab.cpp" break; - case 324: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2401 "MachineIndependent/glslang.y" + case 325: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2410 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8620 "MachineIndependent/glslang_tab.cpp" +#line 8645 "MachineIndependent/glslang_tab.cpp" break; - case 325: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2407 "MachineIndependent/glslang.y" + case 326: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2416 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8631 "MachineIndependent/glslang_tab.cpp" +#line 8656 "MachineIndependent/glslang_tab.cpp" break; - case 326: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2413 "MachineIndependent/glslang.y" + case 327: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2422 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8642 "MachineIndependent/glslang_tab.cpp" +#line 8667 "MachineIndependent/glslang_tab.cpp" break; - case 327: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2419 "MachineIndependent/glslang.y" + case 328: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2428 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8653 "MachineIndependent/glslang_tab.cpp" +#line 8678 "MachineIndependent/glslang_tab.cpp" break; - case 328: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2425 "MachineIndependent/glslang.y" + case 329: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2434 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8664 "MachineIndependent/glslang_tab.cpp" +#line 8689 "MachineIndependent/glslang_tab.cpp" break; - case 329: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2431 "MachineIndependent/glslang.y" + case 330: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2440 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8675 "MachineIndependent/glslang_tab.cpp" +#line 8700 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2437 "MachineIndependent/glslang.y" + case 331: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2446 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8686 "MachineIndependent/glslang_tab.cpp" +#line 8711 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F64MAT2 */ -#line 2443 "MachineIndependent/glslang.y" + case 332: /* type_specifier_nonarray: F64MAT2 */ +#line 2452 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8697 "MachineIndependent/glslang_tab.cpp" +#line 8722 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F64MAT3 */ -#line 2449 "MachineIndependent/glslang.y" + case 333: /* type_specifier_nonarray: F64MAT3 */ +#line 2458 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8708 "MachineIndependent/glslang_tab.cpp" +#line 8733 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F64MAT4 */ -#line 2455 "MachineIndependent/glslang.y" + case 334: /* type_specifier_nonarray: F64MAT4 */ +#line 2464 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8719 "MachineIndependent/glslang_tab.cpp" +#line 8744 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2461 "MachineIndependent/glslang.y" + case 335: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2470 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8730 "MachineIndependent/glslang_tab.cpp" +#line 8755 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2467 "MachineIndependent/glslang.y" + case 336: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2476 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8741 "MachineIndependent/glslang_tab.cpp" +#line 8766 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2473 "MachineIndependent/glslang.y" + case 337: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2482 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8752 "MachineIndependent/glslang_tab.cpp" +#line 8777 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2479 "MachineIndependent/glslang.y" + case 338: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2488 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8763 "MachineIndependent/glslang_tab.cpp" +#line 8788 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2485 "MachineIndependent/glslang.y" + case 339: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2494 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8774 "MachineIndependent/glslang_tab.cpp" +#line 8799 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2491 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2500 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8785 "MachineIndependent/glslang_tab.cpp" +#line 8810 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2497 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2506 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8796 "MachineIndependent/glslang_tab.cpp" +#line 8821 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2503 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2512 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8807 "MachineIndependent/glslang_tab.cpp" +#line 8832 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2509 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2518 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8818 "MachineIndependent/glslang_tab.cpp" +#line 8843 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2515 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2524 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8827 "MachineIndependent/glslang_tab.cpp" +#line 8852 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2519 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2528 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8836 "MachineIndependent/glslang_tab.cpp" +#line 8861 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2523 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2532 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8845 "MachineIndependent/glslang_tab.cpp" +#line 8870 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2527 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2536 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8855 "MachineIndependent/glslang_tab.cpp" +#line 8880 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: SAMPLER1D */ -#line 2532 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: SAMPLER1D */ +#line 2541 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8865 "MachineIndependent/glslang_tab.cpp" +#line 8890 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: SAMPLER2D */ -#line 2538 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: SAMPLER2D */ +#line 2547 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8875 "MachineIndependent/glslang_tab.cpp" +#line 8900 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: SAMPLER3D */ -#line 2543 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: SAMPLER3D */ +#line 2552 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8885 "MachineIndependent/glslang_tab.cpp" +#line 8910 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2548 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2557 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8895 "MachineIndependent/glslang_tab.cpp" +#line 8920 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2553 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2562 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8905 "MachineIndependent/glslang_tab.cpp" +#line 8930 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2558 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2567 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8915 "MachineIndependent/glslang_tab.cpp" +#line 8940 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2563 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2572 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8925 "MachineIndependent/glslang_tab.cpp" +#line 8950 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2568 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2577 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8935 "MachineIndependent/glslang_tab.cpp" +#line 8960 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2574 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2583 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 8945 "MachineIndependent/glslang_tab.cpp" +#line 8970 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2579 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2588 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 8955 "MachineIndependent/glslang_tab.cpp" +#line 8980 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2584 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2593 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8965 "MachineIndependent/glslang_tab.cpp" +#line 8990 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2589 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2598 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 8975 "MachineIndependent/glslang_tab.cpp" +#line 9000 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2594 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2603 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 8985 "MachineIndependent/glslang_tab.cpp" +#line 9010 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2599 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2608 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 8996 "MachineIndependent/glslang_tab.cpp" +#line 9021 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2605 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2614 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9007 "MachineIndependent/glslang_tab.cpp" +#line 9032 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2611 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2620 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9018 "MachineIndependent/glslang_tab.cpp" +#line 9043 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2617 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2626 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9029 "MachineIndependent/glslang_tab.cpp" +#line 9054 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2623 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2632 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9040 "MachineIndependent/glslang_tab.cpp" +#line 9065 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2629 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2638 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9051 "MachineIndependent/glslang_tab.cpp" +#line 9076 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2635 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2644 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9062 "MachineIndependent/glslang_tab.cpp" +#line 9087 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2641 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2650 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9073 "MachineIndependent/glslang_tab.cpp" +#line 9098 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2647 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2656 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9084 "MachineIndependent/glslang_tab.cpp" +#line 9109 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2653 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2662 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9095 "MachineIndependent/glslang_tab.cpp" +#line 9120 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2659 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2668 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9106 "MachineIndependent/glslang_tab.cpp" +#line 9131 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2665 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2674 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9117 "MachineIndependent/glslang_tab.cpp" +#line 9142 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2671 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2680 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9128 "MachineIndependent/glslang_tab.cpp" +#line 9153 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2677 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2686 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9138 "MachineIndependent/glslang_tab.cpp" +#line 9163 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2683 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2692 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9148 "MachineIndependent/glslang_tab.cpp" +#line 9173 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2688 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2697 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9158 "MachineIndependent/glslang_tab.cpp" +#line 9183 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2693 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2702 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9168 "MachineIndependent/glslang_tab.cpp" +#line 9193 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2698 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2707 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9178 "MachineIndependent/glslang_tab.cpp" +#line 9203 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: USAMPLER2D */ -#line 2703 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: USAMPLER2D */ +#line 2712 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9188 "MachineIndependent/glslang_tab.cpp" +#line 9213 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: USAMPLER3D */ -#line 2708 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: USAMPLER3D */ +#line 2717 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9198 "MachineIndependent/glslang_tab.cpp" +#line 9223 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2713 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2722 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9208 "MachineIndependent/glslang_tab.cpp" +#line 9233 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2719 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2728 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9218 "MachineIndependent/glslang_tab.cpp" +#line 9243 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2724 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2733 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9228 "MachineIndependent/glslang_tab.cpp" +#line 9253 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: USAMPLER1D */ -#line 2729 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: USAMPLER1D */ +#line 2738 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9238 "MachineIndependent/glslang_tab.cpp" +#line 9263 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2734 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2743 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9248 "MachineIndependent/glslang_tab.cpp" +#line 9273 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2739 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2748 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9258 "MachineIndependent/glslang_tab.cpp" +#line 9283 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2744 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2753 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9268 "MachineIndependent/glslang_tab.cpp" +#line 9293 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2749 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2758 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9278 "MachineIndependent/glslang_tab.cpp" +#line 9303 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2754 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2763 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9288 "MachineIndependent/glslang_tab.cpp" +#line 9313 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2760 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2769 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9298 "MachineIndependent/glslang_tab.cpp" +#line 9323 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: TEXTURE2D */ -#line 2765 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: TEXTURE2D */ +#line 2774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9308 "MachineIndependent/glslang_tab.cpp" +#line 9333 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: TEXTURE3D */ -#line 2770 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: TEXTURE3D */ +#line 2779 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9318 "MachineIndependent/glslang_tab.cpp" +#line 9343 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2775 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2784 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9328 "MachineIndependent/glslang_tab.cpp" +#line 9353 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2780 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2789 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9338 "MachineIndependent/glslang_tab.cpp" +#line 9363 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2785 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2794 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9348 "MachineIndependent/glslang_tab.cpp" +#line 9373 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2790 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2799 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9358 "MachineIndependent/glslang_tab.cpp" +#line 9383 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2795 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9368 "MachineIndependent/glslang_tab.cpp" +#line 9393 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2800 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9378 "MachineIndependent/glslang_tab.cpp" +#line 9403 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2805 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2814 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9388 "MachineIndependent/glslang_tab.cpp" +#line 9413 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2810 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2819 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9398 "MachineIndependent/glslang_tab.cpp" +#line 9423 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2815 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2824 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9408 "MachineIndependent/glslang_tab.cpp" +#line 9433 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2820 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2829 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9418 "MachineIndependent/glslang_tab.cpp" +#line 9443 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: SAMPLER */ -#line 2825 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: SAMPLER */ +#line 2834 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9428 "MachineIndependent/glslang_tab.cpp" +#line 9453 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2830 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2839 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9438 "MachineIndependent/glslang_tab.cpp" +#line 9463 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2836 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2845 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9448 "MachineIndependent/glslang_tab.cpp" +#line 9473 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2841 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2850 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9458 "MachineIndependent/glslang_tab.cpp" +#line 9483 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2846 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2855 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9469 "MachineIndependent/glslang_tab.cpp" +#line 9494 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2852 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2861 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9480 "MachineIndependent/glslang_tab.cpp" +#line 9505 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2858 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2867 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9490 "MachineIndependent/glslang_tab.cpp" +#line 9515 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2863 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2872 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9500 "MachineIndependent/glslang_tab.cpp" +#line 9525 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2868 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2877 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9510 "MachineIndependent/glslang_tab.cpp" +#line 9535 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2873 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2882 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9521 "MachineIndependent/glslang_tab.cpp" +#line 9546 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2879 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9531 "MachineIndependent/glslang_tab.cpp" +#line 9556 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2884 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2893 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9541 "MachineIndependent/glslang_tab.cpp" +#line 9566 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2889 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2898 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9551 "MachineIndependent/glslang_tab.cpp" +#line 9576 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2894 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2903 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9562 "MachineIndependent/glslang_tab.cpp" +#line 9587 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2900 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9572 "MachineIndependent/glslang_tab.cpp" +#line 9597 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2905 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2914 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9582 "MachineIndependent/glslang_tab.cpp" +#line 9607 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2910 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2919 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9592 "MachineIndependent/glslang_tab.cpp" +#line 9617 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2915 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2924 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9603 "MachineIndependent/glslang_tab.cpp" +#line 9628 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2921 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2930 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9613 "MachineIndependent/glslang_tab.cpp" +#line 9638 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2926 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2935 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9623 "MachineIndependent/glslang_tab.cpp" +#line 9648 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: TEXTURE1D */ -#line 2931 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: TEXTURE1D */ +#line 2940 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9633 "MachineIndependent/glslang_tab.cpp" +#line 9658 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2936 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2945 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9644 "MachineIndependent/glslang_tab.cpp" +#line 9669 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2942 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2951 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9655 "MachineIndependent/glslang_tab.cpp" +#line 9680 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2948 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2957 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9666 "MachineIndependent/glslang_tab.cpp" +#line 9691 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2954 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2963 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9677 "MachineIndependent/glslang_tab.cpp" +#line 9702 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2960 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2969 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9687 "MachineIndependent/glslang_tab.cpp" +#line 9712 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2965 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2974 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9698 "MachineIndependent/glslang_tab.cpp" +#line 9723 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2971 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2980 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9709 "MachineIndependent/glslang_tab.cpp" +#line 9734 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2977 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 2986 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9720 "MachineIndependent/glslang_tab.cpp" +#line 9745 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2983 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: ITEXTURE1D */ +#line 2992 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9730 "MachineIndependent/glslang_tab.cpp" +#line 9755 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2988 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 2997 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9740 "MachineIndependent/glslang_tab.cpp" +#line 9765 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2993 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: UTEXTURE1D */ +#line 3002 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9750 "MachineIndependent/glslang_tab.cpp" +#line 9775 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2998 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 3007 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9760 "MachineIndependent/glslang_tab.cpp" +#line 9785 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3003 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 3012 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9770 "MachineIndependent/glslang_tab.cpp" +#line 9795 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3008 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 3017 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9781 "MachineIndependent/glslang_tab.cpp" +#line 9806 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3014 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 3023 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9791 "MachineIndependent/glslang_tab.cpp" +#line 9816 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3019 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 3028 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9801 "MachineIndependent/glslang_tab.cpp" +#line 9826 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3024 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 3033 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9811 "MachineIndependent/glslang_tab.cpp" +#line 9836 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3029 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3038 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9822 "MachineIndependent/glslang_tab.cpp" +#line 9847 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3035 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3044 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9832 "MachineIndependent/glslang_tab.cpp" +#line 9857 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3040 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3049 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9842 "MachineIndependent/glslang_tab.cpp" +#line 9867 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3045 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3054 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9852 "MachineIndependent/glslang_tab.cpp" +#line 9877 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3050 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3059 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9863 "MachineIndependent/glslang_tab.cpp" +#line 9888 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3056 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3065 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9873 "MachineIndependent/glslang_tab.cpp" +#line 9898 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3061 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3070 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9883 "MachineIndependent/glslang_tab.cpp" +#line 9908 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3066 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3075 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9893 "MachineIndependent/glslang_tab.cpp" +#line 9918 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3071 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3080 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9904 "MachineIndependent/glslang_tab.cpp" +#line 9929 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3077 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3086 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9914 "MachineIndependent/glslang_tab.cpp" +#line 9939 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3082 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3091 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9924 "MachineIndependent/glslang_tab.cpp" +#line 9949 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: IMAGE1D */ -#line 3087 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: IMAGE1D */ +#line 3096 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9934 "MachineIndependent/glslang_tab.cpp" +#line 9959 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3092 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3101 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 9945 "MachineIndependent/glslang_tab.cpp" +#line 9970 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: IIMAGE1D */ -#line 3098 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: IIMAGE1D */ +#line 3107 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 9955 "MachineIndependent/glslang_tab.cpp" +#line 9980 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: UIMAGE1D */ -#line 3103 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: UIMAGE1D */ +#line 3112 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9965 "MachineIndependent/glslang_tab.cpp" +#line 9990 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: IMAGE2D */ -#line 3108 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: IMAGE2D */ +#line 3117 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 9975 "MachineIndependent/glslang_tab.cpp" +#line 10000 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3113 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3122 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 9986 "MachineIndependent/glslang_tab.cpp" +#line 10011 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: IIMAGE2D */ -#line 3119 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: IIMAGE2D */ +#line 3128 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 9996 "MachineIndependent/glslang_tab.cpp" +#line 10021 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: UIMAGE2D */ -#line 3124 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: UIMAGE2D */ +#line 3133 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10006 "MachineIndependent/glslang_tab.cpp" +#line 10031 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: IMAGE3D */ -#line 3129 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: IMAGE3D */ +#line 3138 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10016 "MachineIndependent/glslang_tab.cpp" +#line 10041 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3134 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3143 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10027 "MachineIndependent/glslang_tab.cpp" +#line 10052 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: IIMAGE3D */ -#line 3140 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: IIMAGE3D */ +#line 3149 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10037 "MachineIndependent/glslang_tab.cpp" +#line 10062 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: UIMAGE3D */ -#line 3145 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: UIMAGE3D */ +#line 3154 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10047 "MachineIndependent/glslang_tab.cpp" +#line 10072 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3150 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3159 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10057 "MachineIndependent/glslang_tab.cpp" +#line 10082 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3155 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3164 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10068 "MachineIndependent/glslang_tab.cpp" +#line 10093 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3161 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3170 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10078 "MachineIndependent/glslang_tab.cpp" +#line 10103 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3166 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3175 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10088 "MachineIndependent/glslang_tab.cpp" +#line 10113 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: IMAGECUBE */ -#line 3171 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: IMAGECUBE */ +#line 3180 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10098 "MachineIndependent/glslang_tab.cpp" +#line 10123 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3176 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3185 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10109 "MachineIndependent/glslang_tab.cpp" +#line 10134 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3182 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3191 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10119 "MachineIndependent/glslang_tab.cpp" +#line 10144 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3187 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3196 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10129 "MachineIndependent/glslang_tab.cpp" +#line 10154 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3192 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3201 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10139 "MachineIndependent/glslang_tab.cpp" +#line 10164 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3197 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3206 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10150 "MachineIndependent/glslang_tab.cpp" +#line 10175 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3203 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3212 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10160 "MachineIndependent/glslang_tab.cpp" +#line 10185 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3208 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3217 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10170 "MachineIndependent/glslang_tab.cpp" +#line 10195 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3213 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3222 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10180 "MachineIndependent/glslang_tab.cpp" +#line 10205 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3218 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3227 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10191 "MachineIndependent/glslang_tab.cpp" +#line 10216 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3224 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3233 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10201 "MachineIndependent/glslang_tab.cpp" +#line 10226 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3229 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3238 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10211 "MachineIndependent/glslang_tab.cpp" +#line 10236 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3234 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3243 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10221 "MachineIndependent/glslang_tab.cpp" +#line 10246 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3239 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3248 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10232 "MachineIndependent/glslang_tab.cpp" +#line 10257 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3245 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3254 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10242 "MachineIndependent/glslang_tab.cpp" +#line 10267 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3250 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3259 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10252 "MachineIndependent/glslang_tab.cpp" +#line 10277 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3255 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3264 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10262 "MachineIndependent/glslang_tab.cpp" +#line 10287 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3260 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3269 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10273 "MachineIndependent/glslang_tab.cpp" +#line 10298 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3266 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3275 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10283 "MachineIndependent/glslang_tab.cpp" +#line 10308 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3271 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3280 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10293 "MachineIndependent/glslang_tab.cpp" +#line 10318 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3276 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3285 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10303 "MachineIndependent/glslang_tab.cpp" +#line 10328 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3281 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3290 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10314 "MachineIndependent/glslang_tab.cpp" +#line 10339 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3287 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10324 "MachineIndependent/glslang_tab.cpp" +#line 10349 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3292 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10334 "MachineIndependent/glslang_tab.cpp" +#line 10359 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3297 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10344 "MachineIndependent/glslang_tab.cpp" +#line 10369 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3302 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3311 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10355 "MachineIndependent/glslang_tab.cpp" +#line 10380 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3308 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3317 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10365 "MachineIndependent/glslang_tab.cpp" +#line 10390 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3313 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3322 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10375 "MachineIndependent/glslang_tab.cpp" +#line 10400 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3318 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3327 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10385 "MachineIndependent/glslang_tab.cpp" +#line 10410 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3323 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3332 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10395 "MachineIndependent/glslang_tab.cpp" +#line 10420 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3328 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3337 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10405 "MachineIndependent/glslang_tab.cpp" +#line 10430 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3333 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3342 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10415 "MachineIndependent/glslang_tab.cpp" +#line 10440 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3338 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3347 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10425 "MachineIndependent/glslang_tab.cpp" +#line 10450 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3343 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3352 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10435 "MachineIndependent/glslang_tab.cpp" +#line 10460 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3348 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3357 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10445 "MachineIndependent/glslang_tab.cpp" +#line 10470 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3353 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3362 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10455 "MachineIndependent/glslang_tab.cpp" +#line 10480 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3358 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3367 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10465 "MachineIndependent/glslang_tab.cpp" +#line 10490 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3363 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3372 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10475 "MachineIndependent/glslang_tab.cpp" +#line 10500 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3368 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3377 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10485 "MachineIndependent/glslang_tab.cpp" +#line 10510 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3373 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3382 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10495 "MachineIndependent/glslang_tab.cpp" +#line 10520 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3378 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3387 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10505 "MachineIndependent/glslang_tab.cpp" +#line 10530 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3383 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3392 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10515 "MachineIndependent/glslang_tab.cpp" +#line 10540 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3388 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3397 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10525 "MachineIndependent/glslang_tab.cpp" +#line 10550 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3393 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3402 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10535 "MachineIndependent/glslang_tab.cpp" +#line 10560 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3398 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3407 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10545 "MachineIndependent/glslang_tab.cpp" +#line 10570 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3403 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3412 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10555 "MachineIndependent/glslang_tab.cpp" +#line 10580 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3408 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3417 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10565 "MachineIndependent/glslang_tab.cpp" +#line 10590 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3413 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3422 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10575 "MachineIndependent/glslang_tab.cpp" +#line 10600 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3418 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3427 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10585 "MachineIndependent/glslang_tab.cpp" +#line 10610 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3423 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3432 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10595 "MachineIndependent/glslang_tab.cpp" +#line 10620 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3428 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3437 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10606 "MachineIndependent/glslang_tab.cpp" +#line 10631 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3434 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3443 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10617 "MachineIndependent/glslang_tab.cpp" +#line 10642 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3440 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3449 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10628 "MachineIndependent/glslang_tab.cpp" +#line 10653 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3446 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3455 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10639 "MachineIndependent/glslang_tab.cpp" +#line 10664 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3452 "MachineIndependent/glslang.y" + case 522: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3461 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10647,11 +10672,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10651 "MachineIndependent/glslang_tab.cpp" +#line 10676 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3459 "MachineIndependent/glslang.y" + case 523: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3468 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10659,107 +10684,116 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10663 "MachineIndependent/glslang_tab.cpp" +#line 10688 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3466 "MachineIndependent/glslang.y" + case 524: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3475 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10674 "MachineIndependent/glslang_tab.cpp" +#line 10699 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3472 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3481 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10685 "MachineIndependent/glslang_tab.cpp" +#line 10710 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3478 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3487 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10696 "MachineIndependent/glslang_tab.cpp" +#line 10721 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3484 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3493 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10707 "MachineIndependent/glslang_tab.cpp" +#line 10732 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3490 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3499 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 10718 "MachineIndependent/glslang_tab.cpp" +#line 10743 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3496 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3505 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 10729 "MachineIndependent/glslang_tab.cpp" +#line 10754 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3502 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3511 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10740 "MachineIndependent/glslang_tab.cpp" +#line 10765 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3508 "MachineIndependent/glslang.y" + case 531: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3517 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10749 "MachineIndependent/glslang_tab.cpp" +#line 10774 "MachineIndependent/glslang_tab.cpp" + break; + + case 532: /* type_specifier_nonarray: HITOBJECTNV */ +#line 3521 "MachineIndependent/glslang.y" + { + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtHitObjectNV; + } +#line 10783 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* type_specifier_nonarray: struct_specifier */ -#line 3513 "MachineIndependent/glslang.y" + case 533: /* type_specifier_nonarray: struct_specifier */ +#line 3526 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10759 "MachineIndependent/glslang_tab.cpp" +#line 10793 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* type_specifier_nonarray: TYPE_NAME */ -#line 3518 "MachineIndependent/glslang.y" + case 534: /* type_specifier_nonarray: TYPE_NAME */ +#line 3531 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10773,47 +10807,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10777 "MachineIndependent/glslang_tab.cpp" +#line 10811 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* precision_qualifier: HIGH_PRECISION */ -#line 3534 "MachineIndependent/glslang.y" + case 535: /* precision_qualifier: HIGH_PRECISION */ +#line 3547 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "highp precision qualifier"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10787 "MachineIndependent/glslang_tab.cpp" +#line 10821 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3539 "MachineIndependent/glslang.y" + case 536: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3552 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "mediump precision qualifier"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10797 "MachineIndependent/glslang_tab.cpp" +#line 10831 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* precision_qualifier: LOW_PRECISION */ -#line 3544 "MachineIndependent/glslang.y" + case 537: /* precision_qualifier: LOW_PRECISION */ +#line 3557 "MachineIndependent/glslang.y" { - parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, nullptr, "lowp precision qualifier"); + parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10807 "MachineIndependent/glslang_tab.cpp" +#line 10841 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* $@3: %empty */ -#line 3552 "MachineIndependent/glslang.y" + case 538: /* $@3: %empty */ +#line 3565 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10813 "MachineIndependent/glslang_tab.cpp" +#line 10847 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3552 "MachineIndependent/glslang.y" + case 539: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3565 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10825,17 +10859,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10829 "MachineIndependent/glslang_tab.cpp" +#line 10863 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* $@4: %empty */ -#line 3563 "MachineIndependent/glslang.y" + case 540: /* $@4: %empty */ +#line 3576 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10835 "MachineIndependent/glslang_tab.cpp" +#line 10869 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3563 "MachineIndependent/glslang.y" + case 541: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3576 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10843,19 +10877,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10847 "MachineIndependent/glslang_tab.cpp" +#line 10881 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* struct_declaration_list: struct_declaration */ -#line 3573 "MachineIndependent/glslang.y" + case 542: /* struct_declaration_list: struct_declaration */ +#line 3586 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10855 "MachineIndependent/glslang_tab.cpp" +#line 10889 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3576 "MachineIndependent/glslang.y" + case 543: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3589 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10866,15 +10900,15 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10870 "MachineIndependent/glslang_tab.cpp" +#line 10904 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3589 "MachineIndependent/glslang.y" + case 544: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3602 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } @@ -10893,15 +10927,15 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10897 "MachineIndependent/glslang_tab.cpp" +#line 10931 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3611 "MachineIndependent/glslang.y" + case 545: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3624 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, nullptr, "arrayed type"); + parseContext.profileRequires((yyvsp[-2].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); if (parseContext.isEsProfile()) parseContext.arraySizeRequiredCheck((yyvsp[-2].interm.type).loc, *(yyvsp[-2].interm.type).arraySizes); } @@ -10922,38 +10956,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10926 "MachineIndependent/glslang_tab.cpp" +#line 10960 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* struct_declarator_list: struct_declarator */ -#line 3638 "MachineIndependent/glslang.y" + case 546: /* struct_declarator_list: struct_declarator */ +#line 3651 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10935 "MachineIndependent/glslang_tab.cpp" +#line 10969 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3642 "MachineIndependent/glslang.y" + case 547: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3655 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10943 "MachineIndependent/glslang_tab.cpp" +#line 10977 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* struct_declarator: IDENTIFIER */ -#line 3648 "MachineIndependent/glslang.y" + case 548: /* struct_declarator: IDENTIFIER */ +#line 3661 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 10953 "MachineIndependent/glslang_tab.cpp" +#line 10987 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3653 "MachineIndependent/glslang.y" + case 549: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3666 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -10962,371 +10996,371 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 10966 "MachineIndependent/glslang_tab.cpp" +#line 11000 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* initializer: assignment_expression */ -#line 3664 "MachineIndependent/glslang.y" + case 550: /* initializer: assignment_expression */ +#line 3677 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 10974 "MachineIndependent/glslang_tab.cpp" +#line 11008 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3668 "MachineIndependent/glslang.y" + case 551: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3681 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 10985 "MachineIndependent/glslang_tab.cpp" +#line 11019 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3674 "MachineIndependent/glslang.y" + case 552: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3687 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 10996 "MachineIndependent/glslang_tab.cpp" +#line 11030 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3680 "MachineIndependent/glslang.y" + case 553: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3693 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11007 "MachineIndependent/glslang_tab.cpp" +#line 11041 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* initializer_list: initializer */ -#line 3691 "MachineIndependent/glslang.y" + case 554: /* initializer_list: initializer */ +#line 3704 "MachineIndependent/glslang.y" { - (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(nullptr, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); + (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11015 "MachineIndependent/glslang_tab.cpp" +#line 11049 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* initializer_list: initializer_list COMMA initializer */ -#line 3694 "MachineIndependent/glslang.y" + case 555: /* initializer_list: initializer_list COMMA initializer */ +#line 3707 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11023 "MachineIndependent/glslang_tab.cpp" +#line 11057 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* declaration_statement: declaration */ -#line 3701 "MachineIndependent/glslang.y" + case 556: /* declaration_statement: declaration */ +#line 3714 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11029 "MachineIndependent/glslang_tab.cpp" +#line 11063 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* statement: compound_statement */ -#line 3705 "MachineIndependent/glslang.y" + case 557: /* statement: compound_statement */ +#line 3718 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11035 "MachineIndependent/glslang_tab.cpp" +#line 11069 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* statement: simple_statement */ -#line 3706 "MachineIndependent/glslang.y" + case 558: /* statement: simple_statement */ +#line 3719 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11041 "MachineIndependent/glslang_tab.cpp" +#line 11075 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* simple_statement: declaration_statement */ -#line 3712 "MachineIndependent/glslang.y" + case 559: /* simple_statement: declaration_statement */ +#line 3725 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11047 "MachineIndependent/glslang_tab.cpp" +#line 11081 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* simple_statement: expression_statement */ -#line 3713 "MachineIndependent/glslang.y" + case 560: /* simple_statement: expression_statement */ +#line 3726 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11053 "MachineIndependent/glslang_tab.cpp" +#line 11087 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* simple_statement: selection_statement */ -#line 3714 "MachineIndependent/glslang.y" + case 561: /* simple_statement: selection_statement */ +#line 3727 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11059 "MachineIndependent/glslang_tab.cpp" +#line 11093 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* simple_statement: switch_statement */ -#line 3715 "MachineIndependent/glslang.y" + case 562: /* simple_statement: switch_statement */ +#line 3728 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11065 "MachineIndependent/glslang_tab.cpp" +#line 11099 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* simple_statement: case_label */ -#line 3716 "MachineIndependent/glslang.y" + case 563: /* simple_statement: case_label */ +#line 3729 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11071 "MachineIndependent/glslang_tab.cpp" +#line 11105 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* simple_statement: iteration_statement */ -#line 3717 "MachineIndependent/glslang.y" + case 564: /* simple_statement: iteration_statement */ +#line 3730 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11077 "MachineIndependent/glslang_tab.cpp" +#line 11111 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* simple_statement: jump_statement */ -#line 3718 "MachineIndependent/glslang.y" + case 565: /* simple_statement: jump_statement */ +#line 3731 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11083 "MachineIndependent/glslang_tab.cpp" +#line 11117 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* simple_statement: demote_statement */ -#line 3720 "MachineIndependent/glslang.y" + case 566: /* simple_statement: demote_statement */ +#line 3733 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11089 "MachineIndependent/glslang_tab.cpp" +#line 11123 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* demote_statement: DEMOTE SEMICOLON */ -#line 3726 "MachineIndependent/glslang.y" + case 567: /* demote_statement: DEMOTE SEMICOLON */ +#line 3739 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11099 "MachineIndependent/glslang_tab.cpp" +#line 11133 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3735 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = nullptr; } -#line 11105 "MachineIndependent/glslang_tab.cpp" + case 568: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3748 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } +#line 11139 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* $@5: %empty */ -#line 3736 "MachineIndependent/glslang.y" + case 569: /* $@5: %empty */ +#line 3749 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11114 "MachineIndependent/glslang_tab.cpp" +#line 11148 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* $@6: %empty */ -#line 3740 "MachineIndependent/glslang.y" + case 570: /* $@6: %empty */ +#line 3753 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11123 "MachineIndependent/glslang_tab.cpp" +#line 11157 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3744 "MachineIndependent/glslang.y" + case 571: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3757 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11133 "MachineIndependent/glslang_tab.cpp" +#line 11167 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3752 "MachineIndependent/glslang.y" + case 572: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3765 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11139 "MachineIndependent/glslang_tab.cpp" +#line 11173 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* statement_no_new_scope: simple_statement */ -#line 3753 "MachineIndependent/glslang.y" + case 573: /* statement_no_new_scope: simple_statement */ +#line 3766 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11145 "MachineIndependent/glslang_tab.cpp" +#line 11179 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* $@7: %empty */ -#line 3757 "MachineIndependent/glslang.y" + case 574: /* $@7: %empty */ +#line 3770 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11153 "MachineIndependent/glslang_tab.cpp" +#line 11187 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* statement_scoped: $@7 compound_statement */ -#line 3760 "MachineIndependent/glslang.y" + case 575: /* statement_scoped: $@7 compound_statement */ +#line 3773 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11162 "MachineIndependent/glslang_tab.cpp" +#line 11196 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* $@8: %empty */ -#line 3764 "MachineIndependent/glslang.y" + case 576: /* $@8: %empty */ +#line 3777 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11172 "MachineIndependent/glslang_tab.cpp" +#line 11206 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* statement_scoped: $@8 simple_statement */ -#line 3769 "MachineIndependent/glslang.y" + case 577: /* statement_scoped: $@8 simple_statement */ +#line 3782 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11183 "MachineIndependent/glslang_tab.cpp" +#line 11217 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3778 "MachineIndependent/glslang.y" + case 578: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3791 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11191 "MachineIndependent/glslang_tab.cpp" +#line 11225 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3781 "MachineIndependent/glslang.y" + case 579: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3794 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11201 "MachineIndependent/glslang_tab.cpp" +#line 11235 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* statement_list: statement */ -#line 3789 "MachineIndependent/glslang.y" + case 580: /* statement_list: statement */ +#line 3802 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence(nullptr, (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = nullptr; // start a fresh subsequence for what's after this case + parseContext.wrapupSwitchSubsequence(0, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11214 "MachineIndependent/glslang_tab.cpp" +#line 11248 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* statement_list: statement_list statement */ -#line 3797 "MachineIndependent/glslang.y" + case 581: /* statement_list: statement_list statement */ +#line 3810 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : nullptr, (yyvsp[0].interm.intermNode)); - (yyval.interm.intermNode) = nullptr; // start a fresh subsequence for what's after this case + parseContext.wrapupSwitchSubsequence((yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11227 "MachineIndependent/glslang_tab.cpp" +#line 11261 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* expression_statement: SEMICOLON */ -#line 3808 "MachineIndependent/glslang.y" - { (yyval.interm.intermNode) = nullptr; } -#line 11233 "MachineIndependent/glslang_tab.cpp" + case 582: /* expression_statement: SEMICOLON */ +#line 3821 "MachineIndependent/glslang.y" + { (yyval.interm.intermNode) = 0; } +#line 11267 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* expression_statement: expression SEMICOLON */ -#line 3809 "MachineIndependent/glslang.y" + case 583: /* expression_statement: expression SEMICOLON */ +#line 3822 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11239 "MachineIndependent/glslang_tab.cpp" +#line 11273 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* selection_statement: selection_statement_nonattributed */ -#line 3813 "MachineIndependent/glslang.y" + case 584: /* selection_statement: selection_statement_nonattributed */ +#line 3826 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11247 "MachineIndependent/glslang_tab.cpp" +#line 11281 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3817 "MachineIndependent/glslang.y" + case 585: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3830 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11257 "MachineIndependent/glslang_tab.cpp" +#line 11291 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3825 "MachineIndependent/glslang.y" + case 586: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3838 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11266 "MachineIndependent/glslang_tab.cpp" +#line 11300 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3832 "MachineIndependent/glslang.y" + case 587: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3845 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11275 "MachineIndependent/glslang_tab.cpp" +#line 11309 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* selection_rest_statement: statement_scoped */ -#line 3836 "MachineIndependent/glslang.y" + case 588: /* selection_rest_statement: statement_scoped */ +#line 3849 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); - (yyval.interm.nodePair).node2 = nullptr; + (yyval.interm.nodePair).node2 = 0; } -#line 11284 "MachineIndependent/glslang_tab.cpp" +#line 11318 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* condition: expression */ -#line 3844 "MachineIndependent/glslang.y" + case 589: /* condition: expression */ +#line 3857 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11293 "MachineIndependent/glslang_tab.cpp" +#line 11327 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3848 "MachineIndependent/glslang.y" + case 590: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3861 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); TType type((yyvsp[-3].interm.type)); - TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), nullptr, (yyvsp[0].interm.intermTypedNode)); + TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); if (initNode) (yyval.interm.intermTypedNode) = initNode->getAsTyped(); else - (yyval.interm.intermTypedNode) = nullptr; + (yyval.interm.intermTypedNode) = 0; } -#line 11308 "MachineIndependent/glslang_tab.cpp" +#line 11342 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* switch_statement: switch_statement_nonattributed */ -#line 3861 "MachineIndependent/glslang.y" + case 591: /* switch_statement: switch_statement_nonattributed */ +#line 3874 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11316 "MachineIndependent/glslang_tab.cpp" +#line 11350 "MachineIndependent/glslang_tab.cpp" break; - case 590: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3865 "MachineIndependent/glslang.y" + case 592: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3878 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11326 "MachineIndependent/glslang_tab.cpp" +#line 11360 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* $@9: %empty */ -#line 3873 "MachineIndependent/glslang.y" + case 593: /* $@9: %empty */ +#line 3886 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11335,13 +11369,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11339 "MachineIndependent/glslang_tab.cpp" +#line 11373 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3881 "MachineIndependent/glslang.y" + case 594: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3894 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : nullptr); + (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); parseContext.switchSequenceStack.pop_back(); parseContext.switchLevel.pop_back(); @@ -11349,29 +11383,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11353 "MachineIndependent/glslang_tab.cpp" +#line 11387 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* switch_statement_list: %empty */ -#line 3893 "MachineIndependent/glslang.y" + case 595: /* switch_statement_list: %empty */ +#line 3906 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11361 "MachineIndependent/glslang_tab.cpp" +#line 11395 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* switch_statement_list: statement_list */ -#line 3896 "MachineIndependent/glslang.y" + case 596: /* switch_statement_list: statement_list */ +#line 3909 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11369 "MachineIndependent/glslang_tab.cpp" +#line 11403 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* case_label: CASE expression COLON */ -#line 3902 "MachineIndependent/glslang.y" + case 597: /* case_label: CASE expression COLON */ +#line 3915 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-2].lex).loc, "cannot appear outside switch statement", "case", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) @@ -11382,13 +11416,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11386 "MachineIndependent/glslang_tab.cpp" +#line 11420 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* case_label: DEFAULT COLON */ -#line 3914 "MachineIndependent/glslang.y" + case 598: /* case_label: DEFAULT COLON */ +#line 3927 "MachineIndependent/glslang.y" { - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) parseContext.error((yyvsp[-1].lex).loc, "cannot appear outside switch statement", "default", ""); else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) @@ -11396,29 +11430,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11400 "MachineIndependent/glslang_tab.cpp" +#line 11434 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* iteration_statement: iteration_statement_nonattributed */ -#line 3926 "MachineIndependent/glslang.y" + case 599: /* iteration_statement: iteration_statement_nonattributed */ +#line 3939 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11408 "MachineIndependent/glslang_tab.cpp" +#line 11442 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3930 "MachineIndependent/glslang.y" + case 600: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3943 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11418 "MachineIndependent/glslang_tab.cpp" +#line 11452 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* $@10: %empty */ -#line 3938 "MachineIndependent/glslang.y" + case 601: /* $@10: %empty */ +#line 3951 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11427,62 +11461,62 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11431 "MachineIndependent/glslang_tab.cpp" +#line 11465 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3946 "MachineIndependent/glslang.y" + case 602: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3959 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), nullptr, true, (yyvsp[-5].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11443 "MachineIndependent/glslang_tab.cpp" +#line 11477 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* $@11: %empty */ -#line 3953 "MachineIndependent/glslang.y" + case 603: /* $@11: %empty */ +#line 3966 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11454 "MachineIndependent/glslang_tab.cpp" +#line 11488 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3959 "MachineIndependent/glslang.y" + case 604: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3972 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); parseContext.boolCheck((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode)); - (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), nullptr, false, (yyvsp[-4].lex).loc); + (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[-5].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, false, (yyvsp[-4].lex).loc); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.loopNestingLevel; --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11471 "MachineIndependent/glslang_tab.cpp" +#line 11505 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* $@12: %empty */ -#line 3971 "MachineIndependent/glslang.y" + case 605: /* $@12: %empty */ +#line 3984 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11482 "MachineIndependent/glslang_tab.cpp" +#line 11516 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3977 "MachineIndependent/glslang.y" + case 606: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 3990 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11495,81 +11529,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11499 "MachineIndependent/glslang_tab.cpp" +#line 11533 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* for_init_statement: expression_statement */ -#line 3992 "MachineIndependent/glslang.y" + case 607: /* for_init_statement: expression_statement */ +#line 4005 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11507 "MachineIndependent/glslang_tab.cpp" +#line 11541 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* for_init_statement: declaration_statement */ -#line 3995 "MachineIndependent/glslang.y" + case 608: /* for_init_statement: declaration_statement */ +#line 4008 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11515 "MachineIndependent/glslang_tab.cpp" +#line 11549 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* conditionopt: condition */ -#line 4001 "MachineIndependent/glslang.y" + case 609: /* conditionopt: condition */ +#line 4014 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11523 "MachineIndependent/glslang_tab.cpp" +#line 11557 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* conditionopt: %empty */ -#line 4004 "MachineIndependent/glslang.y" + case 610: /* conditionopt: %empty */ +#line 4017 "MachineIndependent/glslang.y" { - (yyval.interm.intermTypedNode) = nullptr; + (yyval.interm.intermTypedNode) = 0; } -#line 11531 "MachineIndependent/glslang_tab.cpp" +#line 11565 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4010 "MachineIndependent/glslang.y" + case 611: /* for_rest_statement: conditionopt SEMICOLON */ +#line 4023 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); - (yyval.interm.nodePair).node2 = nullptr; + (yyval.interm.nodePair).node2 = 0; } -#line 11540 "MachineIndependent/glslang_tab.cpp" +#line 11574 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4014 "MachineIndependent/glslang.y" + case 612: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 4027 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11549 "MachineIndependent/glslang_tab.cpp" +#line 11583 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* jump_statement: CONTINUE SEMICOLON */ -#line 4021 "MachineIndependent/glslang.y" + case 613: /* jump_statement: CONTINUE SEMICOLON */ +#line 4034 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11559 "MachineIndependent/glslang_tab.cpp" +#line 11593 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* jump_statement: BREAK SEMICOLON */ -#line 4026 "MachineIndependent/glslang.y" + case 614: /* jump_statement: BREAK SEMICOLON */ +#line 4039 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11569 "MachineIndependent/glslang_tab.cpp" +#line 11603 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* jump_statement: RETURN SEMICOLON */ -#line 4031 "MachineIndependent/glslang.y" + case 615: /* jump_statement: RETURN SEMICOLON */ +#line 4044 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11577,101 +11611,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11581 "MachineIndependent/glslang_tab.cpp" +#line 11615 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* jump_statement: RETURN expression SEMICOLON */ -#line 4038 "MachineIndependent/glslang.y" + case 616: /* jump_statement: RETURN expression SEMICOLON */ +#line 4051 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11589 "MachineIndependent/glslang_tab.cpp" +#line 11623 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* jump_statement: DISCARD SEMICOLON */ -#line 4041 "MachineIndependent/glslang.y" + case 617: /* jump_statement: DISCARD SEMICOLON */ +#line 4054 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11598 "MachineIndependent/glslang_tab.cpp" +#line 11632 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4045 "MachineIndependent/glslang.y" + case 618: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4058 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11607 "MachineIndependent/glslang_tab.cpp" +#line 11641 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4050 "MachineIndependent/glslang.y" + case 619: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4063 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11616 "MachineIndependent/glslang_tab.cpp" +#line 11650 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4054 "MachineIndependent/glslang.y" + case 620: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4067 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11625 "MachineIndependent/glslang_tab.cpp" +#line 11659 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* translation_unit: external_declaration */ -#line 4064 "MachineIndependent/glslang.y" + case 621: /* translation_unit: external_declaration */ +#line 4077 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11634 "MachineIndependent/glslang_tab.cpp" +#line 11668 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* translation_unit: translation_unit external_declaration */ -#line 4068 "MachineIndependent/glslang.y" + case 622: /* translation_unit: translation_unit external_declaration */ +#line 4081 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11645 "MachineIndependent/glslang_tab.cpp" +#line 11679 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* external_declaration: function_definition */ -#line 4077 "MachineIndependent/glslang.y" + case 623: /* external_declaration: function_definition */ +#line 4090 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11653 "MachineIndependent/glslang_tab.cpp" +#line 11687 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* external_declaration: declaration */ -#line 4080 "MachineIndependent/glslang.y" + case 624: /* external_declaration: declaration */ +#line 4093 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11661 "MachineIndependent/glslang_tab.cpp" +#line 11695 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* external_declaration: SEMICOLON */ -#line 4084 "MachineIndependent/glslang.y" + case 625: /* external_declaration: SEMICOLON */ +#line 4097 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11671 "MachineIndependent/glslang_tab.cpp" +#line 11705 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* $@13: %empty */ -#line 4093 "MachineIndependent/glslang.y" + case 626: /* $@13: %empty */ +#line 4106 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11684,11 +11718,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11688 "MachineIndependent/glslang_tab.cpp" +#line 11722 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4105 "MachineIndependent/glslang.y" + case 627: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4118 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11715,228 +11749,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11719 "MachineIndependent/glslang_tab.cpp" +#line 11753 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4135 "MachineIndependent/glslang.y" + case 628: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4148 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11727 "MachineIndependent/glslang_tab.cpp" +#line 11761 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* attribute_list: single_attribute */ -#line 4140 "MachineIndependent/glslang.y" + case 629: /* attribute_list: single_attribute */ +#line 4153 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11735 "MachineIndependent/glslang_tab.cpp" +#line 11769 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4143 "MachineIndependent/glslang.y" + case 630: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4156 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11743 "MachineIndependent/glslang_tab.cpp" +#line 11777 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* single_attribute: IDENTIFIER */ -#line 4148 "MachineIndependent/glslang.y" + case 631: /* single_attribute: IDENTIFIER */ +#line 4161 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11751 "MachineIndependent/glslang_tab.cpp" +#line 11785 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4151 "MachineIndependent/glslang.y" + case 632: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4164 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11759 "MachineIndependent/glslang_tab.cpp" +#line 11793 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4158 "MachineIndependent/glslang.y" + case 633: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4171 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11767 "MachineIndependent/glslang_tab.cpp" +#line 11801 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4161 "MachineIndependent/glslang.y" + case 634: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4174 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11775 "MachineIndependent/glslang_tab.cpp" +#line 11809 "MachineIndependent/glslang_tab.cpp" break; - case 633: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4166 "MachineIndependent/glslang.y" + case 635: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4179 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11783 "MachineIndependent/glslang_tab.cpp" +#line 11817 "MachineIndependent/glslang_tab.cpp" break; - case 634: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4169 "MachineIndependent/glslang.y" + case 636: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4182 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11791 "MachineIndependent/glslang_tab.cpp" +#line 11825 "MachineIndependent/glslang_tab.cpp" break; - case 635: /* spirv_extension_list: STRING_LITERAL */ -#line 4174 "MachineIndependent/glslang.y" + case 637: /* spirv_extension_list: STRING_LITERAL */ +#line 4187 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11799 "MachineIndependent/glslang_tab.cpp" +#line 11833 "MachineIndependent/glslang_tab.cpp" break; - case 636: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4177 "MachineIndependent/glslang.y" + case 638: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4190 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11807 "MachineIndependent/glslang_tab.cpp" +#line 11841 "MachineIndependent/glslang_tab.cpp" break; - case 637: /* spirv_capability_list: INTCONSTANT */ -#line 4182 "MachineIndependent/glslang.y" + case 639: /* spirv_capability_list: INTCONSTANT */ +#line 4195 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11815 "MachineIndependent/glslang_tab.cpp" +#line 11849 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4185 "MachineIndependent/glslang.y" + case 640: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4198 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11823 "MachineIndependent/glslang_tab.cpp" +#line 11857 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4190 "MachineIndependent/glslang.y" + case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4203 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11832 "MachineIndependent/glslang_tab.cpp" +#line 11866 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4194 "MachineIndependent/glslang.y" + case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4207 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11842 "MachineIndependent/glslang_tab.cpp" +#line 11876 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4199 "MachineIndependent/glslang.y" + case 643: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4212 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11851 "MachineIndependent/glslang_tab.cpp" +#line 11885 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4203 "MachineIndependent/glslang.y" + case 644: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4216 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11861 "MachineIndependent/glslang_tab.cpp" +#line 11895 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4208 "MachineIndependent/glslang.y" + case 645: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4221 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11870 "MachineIndependent/glslang_tab.cpp" +#line 11904 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4212 "MachineIndependent/glslang.y" + case 646: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4225 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); - (yyval.interm.intermNode) = nullptr; + (yyval.interm.intermNode) = 0; } -#line 11880 "MachineIndependent/glslang_tab.cpp" +#line 11914 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4219 "MachineIndependent/glslang.y" + case 647: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4232 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 11888 "MachineIndependent/glslang_tab.cpp" +#line 11922 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4222 "MachineIndependent/glslang.y" + case 648: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4235 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11896 "MachineIndependent/glslang_tab.cpp" +#line 11930 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4227 "MachineIndependent/glslang.y" + case 649: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4240 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 11904 "MachineIndependent/glslang_tab.cpp" +#line 11938 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4230 "MachineIndependent/glslang.y" + case 650: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4243 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 11912 "MachineIndependent/glslang_tab.cpp" +#line 11946 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4233 "MachineIndependent/glslang.y" + case 651: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4246 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 11920 "MachineIndependent/glslang_tab.cpp" +#line 11954 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4236 "MachineIndependent/glslang.y" + case 652: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4249 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 11928 "MachineIndependent/glslang_tab.cpp" +#line 11962 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4239 "MachineIndependent/glslang.y" + case 653: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4252 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 11936 "MachineIndependent/glslang_tab.cpp" +#line 11970 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4244 "MachineIndependent/glslang.y" + case 654: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4257 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11946,11 +11980,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 11950 "MachineIndependent/glslang_tab.cpp" +#line 11984 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4253 "MachineIndependent/glslang.y" + case 655: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4266 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11960,156 +11994,156 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11964 "MachineIndependent/glslang_tab.cpp" +#line 11998 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4264 "MachineIndependent/glslang.y" + case 656: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4277 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11974 "MachineIndependent/glslang_tab.cpp" +#line 12008 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4269 "MachineIndependent/glslang.y" + case 657: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4282 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 11985 "MachineIndependent/glslang_tab.cpp" +#line 12019 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4277 "MachineIndependent/glslang.y" + case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4290 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 11994 "MachineIndependent/glslang_tab.cpp" +#line 12028 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4281 "MachineIndependent/glslang.y" + case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4294 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12004 "MachineIndependent/glslang_tab.cpp" +#line 12038 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4286 "MachineIndependent/glslang.y" + case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4299 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12013 "MachineIndependent/glslang_tab.cpp" +#line 12047 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4290 "MachineIndependent/glslang.y" + case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4303 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12023 "MachineIndependent/glslang_tab.cpp" +#line 12057 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4295 "MachineIndependent/glslang.y" + case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4308 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12032 "MachineIndependent/glslang_tab.cpp" +#line 12066 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4299 "MachineIndependent/glslang.y" + case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4312 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12042 "MachineIndependent/glslang_tab.cpp" +#line 12076 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4304 "MachineIndependent/glslang.y" + case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4317 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12051 "MachineIndependent/glslang_tab.cpp" +#line 12085 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4308 "MachineIndependent/glslang.y" + case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4321 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12061 "MachineIndependent/glslang_tab.cpp" +#line 12095 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4315 "MachineIndependent/glslang.y" + case 666: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4328 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12069 "MachineIndependent/glslang_tab.cpp" +#line 12103 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4318 "MachineIndependent/glslang.y" + case 667: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4331 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12077 "MachineIndependent/glslang_tab.cpp" +#line 12111 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4323 "MachineIndependent/glslang.y" + case 668: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4336 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12085 "MachineIndependent/glslang_tab.cpp" +#line 12119 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4326 "MachineIndependent/glslang.y" + case 669: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4339 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12093 "MachineIndependent/glslang_tab.cpp" +#line 12127 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4329 "MachineIndependent/glslang.y" + case 670: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4342 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12101 "MachineIndependent/glslang_tab.cpp" +#line 12135 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4332 "MachineIndependent/glslang.y" + case 671: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4345 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12109 "MachineIndependent/glslang_tab.cpp" +#line 12143 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_decorate_id_parameter_list: constant_expression */ -#line 4337 "MachineIndependent/glslang.y" + case 672: /* spirv_decorate_id_parameter_list: constant_expression */ +#line 4350 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12118,11 +12152,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12122 "MachineIndependent/glslang_tab.cpp" +#line 12156 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ -#line 4345 "MachineIndependent/glslang.y" + case 673: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ +#line 4358 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12131,139 +12165,139 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12135 "MachineIndependent/glslang_tab.cpp" +#line 12169 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4355 "MachineIndependent/glslang.y" + case 674: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4368 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12144 "MachineIndependent/glslang_tab.cpp" +#line 12178 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4359 "MachineIndependent/glslang.y" + case 675: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4372 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12152 "MachineIndependent/glslang_tab.cpp" +#line 12186 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4364 "MachineIndependent/glslang.y" + case 676: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4377 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12161 "MachineIndependent/glslang_tab.cpp" +#line 12195 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4368 "MachineIndependent/glslang.y" + case 677: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4381 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12171 "MachineIndependent/glslang_tab.cpp" +#line 12205 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4373 "MachineIndependent/glslang.y" + case 678: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4386 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12180 "MachineIndependent/glslang_tab.cpp" +#line 12214 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4377 "MachineIndependent/glslang.y" + case 679: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4390 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12190 "MachineIndependent/glslang_tab.cpp" +#line 12224 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4384 "MachineIndependent/glslang.y" + case 680: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4397 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12198 "MachineIndependent/glslang_tab.cpp" +#line 12232 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4387 "MachineIndependent/glslang.y" + case 681: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4400 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12206 "MachineIndependent/glslang_tab.cpp" +#line 12240 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_type_parameter: constant_expression */ -#line 4392 "MachineIndependent/glslang.y" + case 682: /* spirv_type_parameter: constant_expression */ +#line 4405 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12214 "MachineIndependent/glslang_tab.cpp" +#line 12248 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4397 "MachineIndependent/glslang.y" + case 683: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4410 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12222 "MachineIndependent/glslang_tab.cpp" +#line 12256 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4400 "MachineIndependent/glslang.y" + case 684: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4413 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12231 "MachineIndependent/glslang_tab.cpp" +#line 12265 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4406 "MachineIndependent/glslang.y" + case 685: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4419 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12239 "MachineIndependent/glslang_tab.cpp" +#line 12273 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4409 "MachineIndependent/glslang.y" + case 686: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4422 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12247 "MachineIndependent/glslang_tab.cpp" +#line 12281 "MachineIndependent/glslang_tab.cpp" break; - case 685: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4414 "MachineIndependent/glslang.y" + case 687: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4427 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12255 "MachineIndependent/glslang_tab.cpp" +#line 12289 "MachineIndependent/glslang_tab.cpp" break; - case 686: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4417 "MachineIndependent/glslang.y" + case 688: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4430 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12263 "MachineIndependent/glslang_tab.cpp" +#line 12297 "MachineIndependent/glslang_tab.cpp" break; -#line 12267 "MachineIndependent/glslang_tab.cpp" +#line 12301 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12488,5 +12522,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4422 "MachineIndependent/glslang.y" +#line 4435 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 18cef4688e..6d168d0113 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -217,298 +217,300 @@ extern int yydebug; FCOOPMATNV = 418, /* FCOOPMATNV */ ICOOPMATNV = 419, /* ICOOPMATNV */ UCOOPMATNV = 420, /* UCOOPMATNV */ - SAMPLERCUBEARRAY = 421, /* SAMPLERCUBEARRAY */ - SAMPLERCUBEARRAYSHADOW = 422, /* SAMPLERCUBEARRAYSHADOW */ - ISAMPLERCUBEARRAY = 423, /* ISAMPLERCUBEARRAY */ - USAMPLERCUBEARRAY = 424, /* USAMPLERCUBEARRAY */ - SAMPLER1D = 425, /* SAMPLER1D */ - SAMPLER1DARRAY = 426, /* SAMPLER1DARRAY */ - SAMPLER1DARRAYSHADOW = 427, /* SAMPLER1DARRAYSHADOW */ - ISAMPLER1D = 428, /* ISAMPLER1D */ - SAMPLER1DSHADOW = 429, /* SAMPLER1DSHADOW */ - SAMPLER2DRECT = 430, /* SAMPLER2DRECT */ - SAMPLER2DRECTSHADOW = 431, /* SAMPLER2DRECTSHADOW */ - ISAMPLER2DRECT = 432, /* ISAMPLER2DRECT */ - USAMPLER2DRECT = 433, /* USAMPLER2DRECT */ - SAMPLERBUFFER = 434, /* SAMPLERBUFFER */ - ISAMPLERBUFFER = 435, /* ISAMPLERBUFFER */ - USAMPLERBUFFER = 436, /* USAMPLERBUFFER */ - SAMPLER2DMS = 437, /* SAMPLER2DMS */ - ISAMPLER2DMS = 438, /* ISAMPLER2DMS */ - USAMPLER2DMS = 439, /* USAMPLER2DMS */ - SAMPLER2DMSARRAY = 440, /* SAMPLER2DMSARRAY */ - ISAMPLER2DMSARRAY = 441, /* ISAMPLER2DMSARRAY */ - USAMPLER2DMSARRAY = 442, /* USAMPLER2DMSARRAY */ - SAMPLEREXTERNALOES = 443, /* SAMPLEREXTERNALOES */ - SAMPLEREXTERNAL2DY2YEXT = 444, /* SAMPLEREXTERNAL2DY2YEXT */ - ISAMPLER1DARRAY = 445, /* ISAMPLER1DARRAY */ - USAMPLER1D = 446, /* USAMPLER1D */ - USAMPLER1DARRAY = 447, /* USAMPLER1DARRAY */ - F16SAMPLER1D = 448, /* F16SAMPLER1D */ - F16SAMPLER2D = 449, /* F16SAMPLER2D */ - F16SAMPLER3D = 450, /* F16SAMPLER3D */ - F16SAMPLER2DRECT = 451, /* F16SAMPLER2DRECT */ - F16SAMPLERCUBE = 452, /* F16SAMPLERCUBE */ - F16SAMPLER1DARRAY = 453, /* F16SAMPLER1DARRAY */ - F16SAMPLER2DARRAY = 454, /* F16SAMPLER2DARRAY */ - F16SAMPLERCUBEARRAY = 455, /* F16SAMPLERCUBEARRAY */ - F16SAMPLERBUFFER = 456, /* F16SAMPLERBUFFER */ - F16SAMPLER2DMS = 457, /* F16SAMPLER2DMS */ - F16SAMPLER2DMSARRAY = 458, /* F16SAMPLER2DMSARRAY */ - F16SAMPLER1DSHADOW = 459, /* F16SAMPLER1DSHADOW */ - F16SAMPLER2DSHADOW = 460, /* F16SAMPLER2DSHADOW */ - F16SAMPLER1DARRAYSHADOW = 461, /* F16SAMPLER1DARRAYSHADOW */ - F16SAMPLER2DARRAYSHADOW = 462, /* F16SAMPLER2DARRAYSHADOW */ - F16SAMPLER2DRECTSHADOW = 463, /* F16SAMPLER2DRECTSHADOW */ - F16SAMPLERCUBESHADOW = 464, /* F16SAMPLERCUBESHADOW */ - F16SAMPLERCUBEARRAYSHADOW = 465, /* F16SAMPLERCUBEARRAYSHADOW */ - IMAGE1D = 466, /* IMAGE1D */ - IIMAGE1D = 467, /* IIMAGE1D */ - UIMAGE1D = 468, /* UIMAGE1D */ - IMAGE2D = 469, /* IMAGE2D */ - IIMAGE2D = 470, /* IIMAGE2D */ - UIMAGE2D = 471, /* UIMAGE2D */ - IMAGE3D = 472, /* IMAGE3D */ - IIMAGE3D = 473, /* IIMAGE3D */ - UIMAGE3D = 474, /* UIMAGE3D */ - IMAGE2DRECT = 475, /* IMAGE2DRECT */ - IIMAGE2DRECT = 476, /* IIMAGE2DRECT */ - UIMAGE2DRECT = 477, /* UIMAGE2DRECT */ - IMAGECUBE = 478, /* IMAGECUBE */ - IIMAGECUBE = 479, /* IIMAGECUBE */ - UIMAGECUBE = 480, /* UIMAGECUBE */ - IMAGEBUFFER = 481, /* IMAGEBUFFER */ - IIMAGEBUFFER = 482, /* IIMAGEBUFFER */ - UIMAGEBUFFER = 483, /* UIMAGEBUFFER */ - IMAGE1DARRAY = 484, /* IMAGE1DARRAY */ - IIMAGE1DARRAY = 485, /* IIMAGE1DARRAY */ - UIMAGE1DARRAY = 486, /* UIMAGE1DARRAY */ - IMAGE2DARRAY = 487, /* IMAGE2DARRAY */ - IIMAGE2DARRAY = 488, /* IIMAGE2DARRAY */ - UIMAGE2DARRAY = 489, /* UIMAGE2DARRAY */ - IMAGECUBEARRAY = 490, /* IMAGECUBEARRAY */ - IIMAGECUBEARRAY = 491, /* IIMAGECUBEARRAY */ - UIMAGECUBEARRAY = 492, /* UIMAGECUBEARRAY */ - IMAGE2DMS = 493, /* IMAGE2DMS */ - IIMAGE2DMS = 494, /* IIMAGE2DMS */ - UIMAGE2DMS = 495, /* UIMAGE2DMS */ - IMAGE2DMSARRAY = 496, /* IMAGE2DMSARRAY */ - IIMAGE2DMSARRAY = 497, /* IIMAGE2DMSARRAY */ - UIMAGE2DMSARRAY = 498, /* UIMAGE2DMSARRAY */ - F16IMAGE1D = 499, /* F16IMAGE1D */ - F16IMAGE2D = 500, /* F16IMAGE2D */ - F16IMAGE3D = 501, /* F16IMAGE3D */ - F16IMAGE2DRECT = 502, /* F16IMAGE2DRECT */ - F16IMAGECUBE = 503, /* F16IMAGECUBE */ - F16IMAGE1DARRAY = 504, /* F16IMAGE1DARRAY */ - F16IMAGE2DARRAY = 505, /* F16IMAGE2DARRAY */ - F16IMAGECUBEARRAY = 506, /* F16IMAGECUBEARRAY */ - F16IMAGEBUFFER = 507, /* F16IMAGEBUFFER */ - F16IMAGE2DMS = 508, /* F16IMAGE2DMS */ - F16IMAGE2DMSARRAY = 509, /* F16IMAGE2DMSARRAY */ - I64IMAGE1D = 510, /* I64IMAGE1D */ - U64IMAGE1D = 511, /* U64IMAGE1D */ - I64IMAGE2D = 512, /* I64IMAGE2D */ - U64IMAGE2D = 513, /* U64IMAGE2D */ - I64IMAGE3D = 514, /* I64IMAGE3D */ - U64IMAGE3D = 515, /* U64IMAGE3D */ - I64IMAGE2DRECT = 516, /* I64IMAGE2DRECT */ - U64IMAGE2DRECT = 517, /* U64IMAGE2DRECT */ - I64IMAGECUBE = 518, /* I64IMAGECUBE */ - U64IMAGECUBE = 519, /* U64IMAGECUBE */ - I64IMAGEBUFFER = 520, /* I64IMAGEBUFFER */ - U64IMAGEBUFFER = 521, /* U64IMAGEBUFFER */ - I64IMAGE1DARRAY = 522, /* I64IMAGE1DARRAY */ - U64IMAGE1DARRAY = 523, /* U64IMAGE1DARRAY */ - I64IMAGE2DARRAY = 524, /* I64IMAGE2DARRAY */ - U64IMAGE2DARRAY = 525, /* U64IMAGE2DARRAY */ - I64IMAGECUBEARRAY = 526, /* I64IMAGECUBEARRAY */ - U64IMAGECUBEARRAY = 527, /* U64IMAGECUBEARRAY */ - I64IMAGE2DMS = 528, /* I64IMAGE2DMS */ - U64IMAGE2DMS = 529, /* U64IMAGE2DMS */ - I64IMAGE2DMSARRAY = 530, /* I64IMAGE2DMSARRAY */ - U64IMAGE2DMSARRAY = 531, /* U64IMAGE2DMSARRAY */ - TEXTURECUBEARRAY = 532, /* TEXTURECUBEARRAY */ - ITEXTURECUBEARRAY = 533, /* ITEXTURECUBEARRAY */ - UTEXTURECUBEARRAY = 534, /* UTEXTURECUBEARRAY */ - TEXTURE1D = 535, /* TEXTURE1D */ - ITEXTURE1D = 536, /* ITEXTURE1D */ - UTEXTURE1D = 537, /* UTEXTURE1D */ - TEXTURE1DARRAY = 538, /* TEXTURE1DARRAY */ - ITEXTURE1DARRAY = 539, /* ITEXTURE1DARRAY */ - UTEXTURE1DARRAY = 540, /* UTEXTURE1DARRAY */ - TEXTURE2DRECT = 541, /* TEXTURE2DRECT */ - ITEXTURE2DRECT = 542, /* ITEXTURE2DRECT */ - UTEXTURE2DRECT = 543, /* UTEXTURE2DRECT */ - TEXTUREBUFFER = 544, /* TEXTUREBUFFER */ - ITEXTUREBUFFER = 545, /* ITEXTUREBUFFER */ - UTEXTUREBUFFER = 546, /* UTEXTUREBUFFER */ - TEXTURE2DMS = 547, /* TEXTURE2DMS */ - ITEXTURE2DMS = 548, /* ITEXTURE2DMS */ - UTEXTURE2DMS = 549, /* UTEXTURE2DMS */ - TEXTURE2DMSARRAY = 550, /* TEXTURE2DMSARRAY */ - ITEXTURE2DMSARRAY = 551, /* ITEXTURE2DMSARRAY */ - UTEXTURE2DMSARRAY = 552, /* UTEXTURE2DMSARRAY */ - F16TEXTURE1D = 553, /* F16TEXTURE1D */ - F16TEXTURE2D = 554, /* F16TEXTURE2D */ - F16TEXTURE3D = 555, /* F16TEXTURE3D */ - F16TEXTURE2DRECT = 556, /* F16TEXTURE2DRECT */ - F16TEXTURECUBE = 557, /* F16TEXTURECUBE */ - F16TEXTURE1DARRAY = 558, /* F16TEXTURE1DARRAY */ - F16TEXTURE2DARRAY = 559, /* F16TEXTURE2DARRAY */ - F16TEXTURECUBEARRAY = 560, /* F16TEXTURECUBEARRAY */ - F16TEXTUREBUFFER = 561, /* F16TEXTUREBUFFER */ - F16TEXTURE2DMS = 562, /* F16TEXTURE2DMS */ - F16TEXTURE2DMSARRAY = 563, /* F16TEXTURE2DMSARRAY */ - SUBPASSINPUT = 564, /* SUBPASSINPUT */ - SUBPASSINPUTMS = 565, /* SUBPASSINPUTMS */ - ISUBPASSINPUT = 566, /* ISUBPASSINPUT */ - ISUBPASSINPUTMS = 567, /* ISUBPASSINPUTMS */ - USUBPASSINPUT = 568, /* USUBPASSINPUT */ - USUBPASSINPUTMS = 569, /* USUBPASSINPUTMS */ - F16SUBPASSINPUT = 570, /* F16SUBPASSINPUT */ - F16SUBPASSINPUTMS = 571, /* F16SUBPASSINPUTMS */ - SPIRV_INSTRUCTION = 572, /* SPIRV_INSTRUCTION */ - SPIRV_EXECUTION_MODE = 573, /* SPIRV_EXECUTION_MODE */ - SPIRV_EXECUTION_MODE_ID = 574, /* SPIRV_EXECUTION_MODE_ID */ - SPIRV_DECORATE = 575, /* SPIRV_DECORATE */ - SPIRV_DECORATE_ID = 576, /* SPIRV_DECORATE_ID */ - SPIRV_DECORATE_STRING = 577, /* SPIRV_DECORATE_STRING */ - SPIRV_TYPE = 578, /* SPIRV_TYPE */ - SPIRV_STORAGE_CLASS = 579, /* SPIRV_STORAGE_CLASS */ - SPIRV_BY_REFERENCE = 580, /* SPIRV_BY_REFERENCE */ - SPIRV_LITERAL = 581, /* SPIRV_LITERAL */ - LEFT_OP = 582, /* LEFT_OP */ - RIGHT_OP = 583, /* RIGHT_OP */ - INC_OP = 584, /* INC_OP */ - DEC_OP = 585, /* DEC_OP */ - LE_OP = 586, /* LE_OP */ - GE_OP = 587, /* GE_OP */ - EQ_OP = 588, /* EQ_OP */ - NE_OP = 589, /* NE_OP */ - AND_OP = 590, /* AND_OP */ - OR_OP = 591, /* OR_OP */ - XOR_OP = 592, /* XOR_OP */ - MUL_ASSIGN = 593, /* MUL_ASSIGN */ - DIV_ASSIGN = 594, /* DIV_ASSIGN */ - ADD_ASSIGN = 595, /* ADD_ASSIGN */ - MOD_ASSIGN = 596, /* MOD_ASSIGN */ - LEFT_ASSIGN = 597, /* LEFT_ASSIGN */ - RIGHT_ASSIGN = 598, /* RIGHT_ASSIGN */ - AND_ASSIGN = 599, /* AND_ASSIGN */ - XOR_ASSIGN = 600, /* XOR_ASSIGN */ - OR_ASSIGN = 601, /* OR_ASSIGN */ - SUB_ASSIGN = 602, /* SUB_ASSIGN */ - STRING_LITERAL = 603, /* STRING_LITERAL */ - LEFT_PAREN = 604, /* LEFT_PAREN */ - RIGHT_PAREN = 605, /* RIGHT_PAREN */ - LEFT_BRACKET = 606, /* LEFT_BRACKET */ - RIGHT_BRACKET = 607, /* RIGHT_BRACKET */ - LEFT_BRACE = 608, /* LEFT_BRACE */ - RIGHT_BRACE = 609, /* RIGHT_BRACE */ - DOT = 610, /* DOT */ - COMMA = 611, /* COMMA */ - COLON = 612, /* COLON */ - EQUAL = 613, /* EQUAL */ - SEMICOLON = 614, /* SEMICOLON */ - BANG = 615, /* BANG */ - DASH = 616, /* DASH */ - TILDE = 617, /* TILDE */ - PLUS = 618, /* PLUS */ - STAR = 619, /* STAR */ - SLASH = 620, /* SLASH */ - PERCENT = 621, /* PERCENT */ - LEFT_ANGLE = 622, /* LEFT_ANGLE */ - RIGHT_ANGLE = 623, /* RIGHT_ANGLE */ - VERTICAL_BAR = 624, /* VERTICAL_BAR */ - CARET = 625, /* CARET */ - AMPERSAND = 626, /* AMPERSAND */ - QUESTION = 627, /* QUESTION */ - INVARIANT = 628, /* INVARIANT */ - HIGH_PRECISION = 629, /* HIGH_PRECISION */ - MEDIUM_PRECISION = 630, /* MEDIUM_PRECISION */ - LOW_PRECISION = 631, /* LOW_PRECISION */ - PRECISION = 632, /* PRECISION */ - PACKED = 633, /* PACKED */ - RESOURCE = 634, /* RESOURCE */ - SUPERP = 635, /* SUPERP */ - FLOATCONSTANT = 636, /* FLOATCONSTANT */ - INTCONSTANT = 637, /* INTCONSTANT */ - UINTCONSTANT = 638, /* UINTCONSTANT */ - BOOLCONSTANT = 639, /* BOOLCONSTANT */ - IDENTIFIER = 640, /* IDENTIFIER */ - TYPE_NAME = 641, /* TYPE_NAME */ - CENTROID = 642, /* CENTROID */ - IN = 643, /* IN */ - OUT = 644, /* OUT */ - INOUT = 645, /* INOUT */ - STRUCT = 646, /* STRUCT */ - VOID = 647, /* VOID */ - WHILE = 648, /* WHILE */ - BREAK = 649, /* BREAK */ - CONTINUE = 650, /* CONTINUE */ - DO = 651, /* DO */ - ELSE = 652, /* ELSE */ - FOR = 653, /* FOR */ - IF = 654, /* IF */ - DISCARD = 655, /* DISCARD */ - RETURN = 656, /* RETURN */ - SWITCH = 657, /* SWITCH */ - CASE = 658, /* CASE */ - DEFAULT = 659, /* DEFAULT */ - TERMINATE_INVOCATION = 660, /* TERMINATE_INVOCATION */ - TERMINATE_RAY = 661, /* TERMINATE_RAY */ - IGNORE_INTERSECTION = 662, /* IGNORE_INTERSECTION */ - UNIFORM = 663, /* UNIFORM */ - SHARED = 664, /* SHARED */ - BUFFER = 665, /* BUFFER */ - FLAT = 666, /* FLAT */ - SMOOTH = 667, /* SMOOTH */ - LAYOUT = 668, /* LAYOUT */ - DOUBLECONSTANT = 669, /* DOUBLECONSTANT */ - INT16CONSTANT = 670, /* INT16CONSTANT */ - UINT16CONSTANT = 671, /* UINT16CONSTANT */ - FLOAT16CONSTANT = 672, /* FLOAT16CONSTANT */ - INT32CONSTANT = 673, /* INT32CONSTANT */ - UINT32CONSTANT = 674, /* UINT32CONSTANT */ - INT64CONSTANT = 675, /* INT64CONSTANT */ - UINT64CONSTANT = 676, /* UINT64CONSTANT */ - SUBROUTINE = 677, /* SUBROUTINE */ - DEMOTE = 678, /* DEMOTE */ - PAYLOADNV = 679, /* PAYLOADNV */ - PAYLOADINNV = 680, /* PAYLOADINNV */ - HITATTRNV = 681, /* HITATTRNV */ - CALLDATANV = 682, /* CALLDATANV */ - CALLDATAINNV = 683, /* CALLDATAINNV */ - PAYLOADEXT = 684, /* PAYLOADEXT */ - PAYLOADINEXT = 685, /* PAYLOADINEXT */ - HITATTREXT = 686, /* HITATTREXT */ - CALLDATAEXT = 687, /* CALLDATAEXT */ - CALLDATAINEXT = 688, /* CALLDATAINEXT */ - PATCH = 689, /* PATCH */ - SAMPLE = 690, /* SAMPLE */ - NONUNIFORM = 691, /* NONUNIFORM */ - COHERENT = 692, /* COHERENT */ - VOLATILE = 693, /* VOLATILE */ - RESTRICT = 694, /* RESTRICT */ - READONLY = 695, /* READONLY */ - WRITEONLY = 696, /* WRITEONLY */ - DEVICECOHERENT = 697, /* DEVICECOHERENT */ - QUEUEFAMILYCOHERENT = 698, /* QUEUEFAMILYCOHERENT */ - WORKGROUPCOHERENT = 699, /* WORKGROUPCOHERENT */ - SUBGROUPCOHERENT = 700, /* SUBGROUPCOHERENT */ - NONPRIVATE = 701, /* NONPRIVATE */ - SHADERCALLCOHERENT = 702, /* SHADERCALLCOHERENT */ - NOPERSPECTIVE = 703, /* NOPERSPECTIVE */ - EXPLICITINTERPAMD = 704, /* EXPLICITINTERPAMD */ - PERVERTEXEXT = 705, /* PERVERTEXEXT */ - PERVERTEXNV = 706, /* PERVERTEXNV */ - PERPRIMITIVENV = 707, /* PERPRIMITIVENV */ - PERVIEWNV = 708, /* PERVIEWNV */ - PERTASKNV = 709, /* PERTASKNV */ - PERPRIMITIVEEXT = 710, /* PERPRIMITIVEEXT */ - TASKPAYLOADWORKGROUPEXT = 711, /* TASKPAYLOADWORKGROUPEXT */ - PRECISE = 712 /* PRECISE */ + HITOBJECTNV = 421, /* HITOBJECTNV */ + HITOBJECTATTRNV = 422, /* HITOBJECTATTRNV */ + SAMPLERCUBEARRAY = 423, /* SAMPLERCUBEARRAY */ + SAMPLERCUBEARRAYSHADOW = 424, /* SAMPLERCUBEARRAYSHADOW */ + ISAMPLERCUBEARRAY = 425, /* ISAMPLERCUBEARRAY */ + USAMPLERCUBEARRAY = 426, /* USAMPLERCUBEARRAY */ + SAMPLER1D = 427, /* SAMPLER1D */ + SAMPLER1DARRAY = 428, /* SAMPLER1DARRAY */ + SAMPLER1DARRAYSHADOW = 429, /* SAMPLER1DARRAYSHADOW */ + ISAMPLER1D = 430, /* ISAMPLER1D */ + SAMPLER1DSHADOW = 431, /* SAMPLER1DSHADOW */ + SAMPLER2DRECT = 432, /* SAMPLER2DRECT */ + SAMPLER2DRECTSHADOW = 433, /* SAMPLER2DRECTSHADOW */ + ISAMPLER2DRECT = 434, /* ISAMPLER2DRECT */ + USAMPLER2DRECT = 435, /* USAMPLER2DRECT */ + SAMPLERBUFFER = 436, /* SAMPLERBUFFER */ + ISAMPLERBUFFER = 437, /* ISAMPLERBUFFER */ + USAMPLERBUFFER = 438, /* USAMPLERBUFFER */ + SAMPLER2DMS = 439, /* SAMPLER2DMS */ + ISAMPLER2DMS = 440, /* ISAMPLER2DMS */ + USAMPLER2DMS = 441, /* USAMPLER2DMS */ + SAMPLER2DMSARRAY = 442, /* SAMPLER2DMSARRAY */ + ISAMPLER2DMSARRAY = 443, /* ISAMPLER2DMSARRAY */ + USAMPLER2DMSARRAY = 444, /* USAMPLER2DMSARRAY */ + SAMPLEREXTERNALOES = 445, /* SAMPLEREXTERNALOES */ + SAMPLEREXTERNAL2DY2YEXT = 446, /* SAMPLEREXTERNAL2DY2YEXT */ + ISAMPLER1DARRAY = 447, /* ISAMPLER1DARRAY */ + USAMPLER1D = 448, /* USAMPLER1D */ + USAMPLER1DARRAY = 449, /* USAMPLER1DARRAY */ + F16SAMPLER1D = 450, /* F16SAMPLER1D */ + F16SAMPLER2D = 451, /* F16SAMPLER2D */ + F16SAMPLER3D = 452, /* F16SAMPLER3D */ + F16SAMPLER2DRECT = 453, /* F16SAMPLER2DRECT */ + F16SAMPLERCUBE = 454, /* F16SAMPLERCUBE */ + F16SAMPLER1DARRAY = 455, /* F16SAMPLER1DARRAY */ + F16SAMPLER2DARRAY = 456, /* F16SAMPLER2DARRAY */ + F16SAMPLERCUBEARRAY = 457, /* F16SAMPLERCUBEARRAY */ + F16SAMPLERBUFFER = 458, /* F16SAMPLERBUFFER */ + F16SAMPLER2DMS = 459, /* F16SAMPLER2DMS */ + F16SAMPLER2DMSARRAY = 460, /* F16SAMPLER2DMSARRAY */ + F16SAMPLER1DSHADOW = 461, /* F16SAMPLER1DSHADOW */ + F16SAMPLER2DSHADOW = 462, /* F16SAMPLER2DSHADOW */ + F16SAMPLER1DARRAYSHADOW = 463, /* F16SAMPLER1DARRAYSHADOW */ + F16SAMPLER2DARRAYSHADOW = 464, /* F16SAMPLER2DARRAYSHADOW */ + F16SAMPLER2DRECTSHADOW = 465, /* F16SAMPLER2DRECTSHADOW */ + F16SAMPLERCUBESHADOW = 466, /* F16SAMPLERCUBESHADOW */ + F16SAMPLERCUBEARRAYSHADOW = 467, /* F16SAMPLERCUBEARRAYSHADOW */ + IMAGE1D = 468, /* IMAGE1D */ + IIMAGE1D = 469, /* IIMAGE1D */ + UIMAGE1D = 470, /* UIMAGE1D */ + IMAGE2D = 471, /* IMAGE2D */ + IIMAGE2D = 472, /* IIMAGE2D */ + UIMAGE2D = 473, /* UIMAGE2D */ + IMAGE3D = 474, /* IMAGE3D */ + IIMAGE3D = 475, /* IIMAGE3D */ + UIMAGE3D = 476, /* UIMAGE3D */ + IMAGE2DRECT = 477, /* IMAGE2DRECT */ + IIMAGE2DRECT = 478, /* IIMAGE2DRECT */ + UIMAGE2DRECT = 479, /* UIMAGE2DRECT */ + IMAGECUBE = 480, /* IMAGECUBE */ + IIMAGECUBE = 481, /* IIMAGECUBE */ + UIMAGECUBE = 482, /* UIMAGECUBE */ + IMAGEBUFFER = 483, /* IMAGEBUFFER */ + IIMAGEBUFFER = 484, /* IIMAGEBUFFER */ + UIMAGEBUFFER = 485, /* UIMAGEBUFFER */ + IMAGE1DARRAY = 486, /* IMAGE1DARRAY */ + IIMAGE1DARRAY = 487, /* IIMAGE1DARRAY */ + UIMAGE1DARRAY = 488, /* UIMAGE1DARRAY */ + IMAGE2DARRAY = 489, /* IMAGE2DARRAY */ + IIMAGE2DARRAY = 490, /* IIMAGE2DARRAY */ + UIMAGE2DARRAY = 491, /* UIMAGE2DARRAY */ + IMAGECUBEARRAY = 492, /* IMAGECUBEARRAY */ + IIMAGECUBEARRAY = 493, /* IIMAGECUBEARRAY */ + UIMAGECUBEARRAY = 494, /* UIMAGECUBEARRAY */ + IMAGE2DMS = 495, /* IMAGE2DMS */ + IIMAGE2DMS = 496, /* IIMAGE2DMS */ + UIMAGE2DMS = 497, /* UIMAGE2DMS */ + IMAGE2DMSARRAY = 498, /* IMAGE2DMSARRAY */ + IIMAGE2DMSARRAY = 499, /* IIMAGE2DMSARRAY */ + UIMAGE2DMSARRAY = 500, /* UIMAGE2DMSARRAY */ + F16IMAGE1D = 501, /* F16IMAGE1D */ + F16IMAGE2D = 502, /* F16IMAGE2D */ + F16IMAGE3D = 503, /* F16IMAGE3D */ + F16IMAGE2DRECT = 504, /* F16IMAGE2DRECT */ + F16IMAGECUBE = 505, /* F16IMAGECUBE */ + F16IMAGE1DARRAY = 506, /* F16IMAGE1DARRAY */ + F16IMAGE2DARRAY = 507, /* F16IMAGE2DARRAY */ + F16IMAGECUBEARRAY = 508, /* F16IMAGECUBEARRAY */ + F16IMAGEBUFFER = 509, /* F16IMAGEBUFFER */ + F16IMAGE2DMS = 510, /* F16IMAGE2DMS */ + F16IMAGE2DMSARRAY = 511, /* F16IMAGE2DMSARRAY */ + I64IMAGE1D = 512, /* I64IMAGE1D */ + U64IMAGE1D = 513, /* U64IMAGE1D */ + I64IMAGE2D = 514, /* I64IMAGE2D */ + U64IMAGE2D = 515, /* U64IMAGE2D */ + I64IMAGE3D = 516, /* I64IMAGE3D */ + U64IMAGE3D = 517, /* U64IMAGE3D */ + I64IMAGE2DRECT = 518, /* I64IMAGE2DRECT */ + U64IMAGE2DRECT = 519, /* U64IMAGE2DRECT */ + I64IMAGECUBE = 520, /* I64IMAGECUBE */ + U64IMAGECUBE = 521, /* U64IMAGECUBE */ + I64IMAGEBUFFER = 522, /* I64IMAGEBUFFER */ + U64IMAGEBUFFER = 523, /* U64IMAGEBUFFER */ + I64IMAGE1DARRAY = 524, /* I64IMAGE1DARRAY */ + U64IMAGE1DARRAY = 525, /* U64IMAGE1DARRAY */ + I64IMAGE2DARRAY = 526, /* I64IMAGE2DARRAY */ + U64IMAGE2DARRAY = 527, /* U64IMAGE2DARRAY */ + I64IMAGECUBEARRAY = 528, /* I64IMAGECUBEARRAY */ + U64IMAGECUBEARRAY = 529, /* U64IMAGECUBEARRAY */ + I64IMAGE2DMS = 530, /* I64IMAGE2DMS */ + U64IMAGE2DMS = 531, /* U64IMAGE2DMS */ + I64IMAGE2DMSARRAY = 532, /* I64IMAGE2DMSARRAY */ + U64IMAGE2DMSARRAY = 533, /* U64IMAGE2DMSARRAY */ + TEXTURECUBEARRAY = 534, /* TEXTURECUBEARRAY */ + ITEXTURECUBEARRAY = 535, /* ITEXTURECUBEARRAY */ + UTEXTURECUBEARRAY = 536, /* UTEXTURECUBEARRAY */ + TEXTURE1D = 537, /* TEXTURE1D */ + ITEXTURE1D = 538, /* ITEXTURE1D */ + UTEXTURE1D = 539, /* UTEXTURE1D */ + TEXTURE1DARRAY = 540, /* TEXTURE1DARRAY */ + ITEXTURE1DARRAY = 541, /* ITEXTURE1DARRAY */ + UTEXTURE1DARRAY = 542, /* UTEXTURE1DARRAY */ + TEXTURE2DRECT = 543, /* TEXTURE2DRECT */ + ITEXTURE2DRECT = 544, /* ITEXTURE2DRECT */ + UTEXTURE2DRECT = 545, /* UTEXTURE2DRECT */ + TEXTUREBUFFER = 546, /* TEXTUREBUFFER */ + ITEXTUREBUFFER = 547, /* ITEXTUREBUFFER */ + UTEXTUREBUFFER = 548, /* UTEXTUREBUFFER */ + TEXTURE2DMS = 549, /* TEXTURE2DMS */ + ITEXTURE2DMS = 550, /* ITEXTURE2DMS */ + UTEXTURE2DMS = 551, /* UTEXTURE2DMS */ + TEXTURE2DMSARRAY = 552, /* TEXTURE2DMSARRAY */ + ITEXTURE2DMSARRAY = 553, /* ITEXTURE2DMSARRAY */ + UTEXTURE2DMSARRAY = 554, /* UTEXTURE2DMSARRAY */ + F16TEXTURE1D = 555, /* F16TEXTURE1D */ + F16TEXTURE2D = 556, /* F16TEXTURE2D */ + F16TEXTURE3D = 557, /* F16TEXTURE3D */ + F16TEXTURE2DRECT = 558, /* F16TEXTURE2DRECT */ + F16TEXTURECUBE = 559, /* F16TEXTURECUBE */ + F16TEXTURE1DARRAY = 560, /* F16TEXTURE1DARRAY */ + F16TEXTURE2DARRAY = 561, /* F16TEXTURE2DARRAY */ + F16TEXTURECUBEARRAY = 562, /* F16TEXTURECUBEARRAY */ + F16TEXTUREBUFFER = 563, /* F16TEXTUREBUFFER */ + F16TEXTURE2DMS = 564, /* F16TEXTURE2DMS */ + F16TEXTURE2DMSARRAY = 565, /* F16TEXTURE2DMSARRAY */ + SUBPASSINPUT = 566, /* SUBPASSINPUT */ + SUBPASSINPUTMS = 567, /* SUBPASSINPUTMS */ + ISUBPASSINPUT = 568, /* ISUBPASSINPUT */ + ISUBPASSINPUTMS = 569, /* ISUBPASSINPUTMS */ + USUBPASSINPUT = 570, /* USUBPASSINPUT */ + USUBPASSINPUTMS = 571, /* USUBPASSINPUTMS */ + F16SUBPASSINPUT = 572, /* F16SUBPASSINPUT */ + F16SUBPASSINPUTMS = 573, /* F16SUBPASSINPUTMS */ + SPIRV_INSTRUCTION = 574, /* SPIRV_INSTRUCTION */ + SPIRV_EXECUTION_MODE = 575, /* SPIRV_EXECUTION_MODE */ + SPIRV_EXECUTION_MODE_ID = 576, /* SPIRV_EXECUTION_MODE_ID */ + SPIRV_DECORATE = 577, /* SPIRV_DECORATE */ + SPIRV_DECORATE_ID = 578, /* SPIRV_DECORATE_ID */ + SPIRV_DECORATE_STRING = 579, /* SPIRV_DECORATE_STRING */ + SPIRV_TYPE = 580, /* SPIRV_TYPE */ + SPIRV_STORAGE_CLASS = 581, /* SPIRV_STORAGE_CLASS */ + SPIRV_BY_REFERENCE = 582, /* SPIRV_BY_REFERENCE */ + SPIRV_LITERAL = 583, /* SPIRV_LITERAL */ + LEFT_OP = 584, /* LEFT_OP */ + RIGHT_OP = 585, /* RIGHT_OP */ + INC_OP = 586, /* INC_OP */ + DEC_OP = 587, /* DEC_OP */ + LE_OP = 588, /* LE_OP */ + GE_OP = 589, /* GE_OP */ + EQ_OP = 590, /* EQ_OP */ + NE_OP = 591, /* NE_OP */ + AND_OP = 592, /* AND_OP */ + OR_OP = 593, /* OR_OP */ + XOR_OP = 594, /* XOR_OP */ + MUL_ASSIGN = 595, /* MUL_ASSIGN */ + DIV_ASSIGN = 596, /* DIV_ASSIGN */ + ADD_ASSIGN = 597, /* ADD_ASSIGN */ + MOD_ASSIGN = 598, /* MOD_ASSIGN */ + LEFT_ASSIGN = 599, /* LEFT_ASSIGN */ + RIGHT_ASSIGN = 600, /* RIGHT_ASSIGN */ + AND_ASSIGN = 601, /* AND_ASSIGN */ + XOR_ASSIGN = 602, /* XOR_ASSIGN */ + OR_ASSIGN = 603, /* OR_ASSIGN */ + SUB_ASSIGN = 604, /* SUB_ASSIGN */ + STRING_LITERAL = 605, /* STRING_LITERAL */ + LEFT_PAREN = 606, /* LEFT_PAREN */ + RIGHT_PAREN = 607, /* RIGHT_PAREN */ + LEFT_BRACKET = 608, /* LEFT_BRACKET */ + RIGHT_BRACKET = 609, /* RIGHT_BRACKET */ + LEFT_BRACE = 610, /* LEFT_BRACE */ + RIGHT_BRACE = 611, /* RIGHT_BRACE */ + DOT = 612, /* DOT */ + COMMA = 613, /* COMMA */ + COLON = 614, /* COLON */ + EQUAL = 615, /* EQUAL */ + SEMICOLON = 616, /* SEMICOLON */ + BANG = 617, /* BANG */ + DASH = 618, /* DASH */ + TILDE = 619, /* TILDE */ + PLUS = 620, /* PLUS */ + STAR = 621, /* STAR */ + SLASH = 622, /* SLASH */ + PERCENT = 623, /* PERCENT */ + LEFT_ANGLE = 624, /* LEFT_ANGLE */ + RIGHT_ANGLE = 625, /* RIGHT_ANGLE */ + VERTICAL_BAR = 626, /* VERTICAL_BAR */ + CARET = 627, /* CARET */ + AMPERSAND = 628, /* AMPERSAND */ + QUESTION = 629, /* QUESTION */ + INVARIANT = 630, /* INVARIANT */ + HIGH_PRECISION = 631, /* HIGH_PRECISION */ + MEDIUM_PRECISION = 632, /* MEDIUM_PRECISION */ + LOW_PRECISION = 633, /* LOW_PRECISION */ + PRECISION = 634, /* PRECISION */ + PACKED = 635, /* PACKED */ + RESOURCE = 636, /* RESOURCE */ + SUPERP = 637, /* SUPERP */ + FLOATCONSTANT = 638, /* FLOATCONSTANT */ + INTCONSTANT = 639, /* INTCONSTANT */ + UINTCONSTANT = 640, /* UINTCONSTANT */ + BOOLCONSTANT = 641, /* BOOLCONSTANT */ + IDENTIFIER = 642, /* IDENTIFIER */ + TYPE_NAME = 643, /* TYPE_NAME */ + CENTROID = 644, /* CENTROID */ + IN = 645, /* IN */ + OUT = 646, /* OUT */ + INOUT = 647, /* INOUT */ + STRUCT = 648, /* STRUCT */ + VOID = 649, /* VOID */ + WHILE = 650, /* WHILE */ + BREAK = 651, /* BREAK */ + CONTINUE = 652, /* CONTINUE */ + DO = 653, /* DO */ + ELSE = 654, /* ELSE */ + FOR = 655, /* FOR */ + IF = 656, /* IF */ + DISCARD = 657, /* DISCARD */ + RETURN = 658, /* RETURN */ + SWITCH = 659, /* SWITCH */ + CASE = 660, /* CASE */ + DEFAULT = 661, /* DEFAULT */ + TERMINATE_INVOCATION = 662, /* TERMINATE_INVOCATION */ + TERMINATE_RAY = 663, /* TERMINATE_RAY */ + IGNORE_INTERSECTION = 664, /* IGNORE_INTERSECTION */ + UNIFORM = 665, /* UNIFORM */ + SHARED = 666, /* SHARED */ + BUFFER = 667, /* BUFFER */ + FLAT = 668, /* FLAT */ + SMOOTH = 669, /* SMOOTH */ + LAYOUT = 670, /* LAYOUT */ + DOUBLECONSTANT = 671, /* DOUBLECONSTANT */ + INT16CONSTANT = 672, /* INT16CONSTANT */ + UINT16CONSTANT = 673, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 674, /* FLOAT16CONSTANT */ + INT32CONSTANT = 675, /* INT32CONSTANT */ + UINT32CONSTANT = 676, /* UINT32CONSTANT */ + INT64CONSTANT = 677, /* INT64CONSTANT */ + UINT64CONSTANT = 678, /* UINT64CONSTANT */ + SUBROUTINE = 679, /* SUBROUTINE */ + DEMOTE = 680, /* DEMOTE */ + PAYLOADNV = 681, /* PAYLOADNV */ + PAYLOADINNV = 682, /* PAYLOADINNV */ + HITATTRNV = 683, /* HITATTRNV */ + CALLDATANV = 684, /* CALLDATANV */ + CALLDATAINNV = 685, /* CALLDATAINNV */ + PAYLOADEXT = 686, /* PAYLOADEXT */ + PAYLOADINEXT = 687, /* PAYLOADINEXT */ + HITATTREXT = 688, /* HITATTREXT */ + CALLDATAEXT = 689, /* CALLDATAEXT */ + CALLDATAINEXT = 690, /* CALLDATAINEXT */ + PATCH = 691, /* PATCH */ + SAMPLE = 692, /* SAMPLE */ + NONUNIFORM = 693, /* NONUNIFORM */ + COHERENT = 694, /* COHERENT */ + VOLATILE = 695, /* VOLATILE */ + RESTRICT = 696, /* RESTRICT */ + READONLY = 697, /* READONLY */ + WRITEONLY = 698, /* WRITEONLY */ + DEVICECOHERENT = 699, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 700, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 701, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 702, /* SUBGROUPCOHERENT */ + NONPRIVATE = 703, /* NONPRIVATE */ + SHADERCALLCOHERENT = 704, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 705, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 706, /* EXPLICITINTERPAMD */ + PERVERTEXEXT = 707, /* PERVERTEXEXT */ + PERVERTEXNV = 708, /* PERVERTEXNV */ + PERPRIMITIVENV = 709, /* PERPRIMITIVENV */ + PERVIEWNV = 710, /* PERVIEWNV */ + PERTASKNV = 711, /* PERTASKNV */ + PERPRIMITIVEEXT = 712, /* PERPRIMITIVEEXT */ + TASKPAYLOADWORKGROUPEXT = 713, /* TASKPAYLOADWORKGROUPEXT */ + PRECISE = 714 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -556,7 +558,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 560 "MachineIndependent/glslang_tab.cpp.h" +#line 562 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index f797ada9f7..91d5b954ea 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1105,6 +1105,38 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break; case EOpDebugPrintf: out.debug << "Debug printf"; break; + case EOpHitObjectTraceRayNV: out.debug << "HitObjectTraceRayNV"; break; + case EOpHitObjectTraceRayMotionNV: out.debug << "HitObjectTraceRayMotionNV"; break; + case EOpHitObjectRecordHitNV: out.debug << "HitObjectRecordHitNV"; break; + case EOpHitObjectRecordHitMotionNV: out.debug << "HitObjectRecordHitMotionNV"; break; + case EOpHitObjectRecordHitWithIndexNV: out.debug << "HitObjectRecordHitWithIndexNV"; break; + case EOpHitObjectRecordHitWithIndexMotionNV: out.debug << "HitObjectRecordHitWithIndexMotionNV"; break; + case EOpHitObjectRecordMissNV: out.debug << "HitObjectRecordMissNV"; break; + case EOpHitObjectRecordMissMotionNV: out.debug << "HitObjectRecordMissMotionNV"; break; + case EOpHitObjectRecordEmptyNV: out.debug << "HitObjectRecordEmptyNV"; break; + case EOpHitObjectExecuteShaderNV: out.debug << "HitObjectExecuteShaderNV"; break; + case EOpHitObjectIsEmptyNV: out.debug << "HitObjectIsEmptyNV"; break; + case EOpHitObjectIsMissNV: out.debug << "HitObjectIsMissNV"; break; + case EOpHitObjectIsHitNV: out.debug << "HitObjectIsHitNV"; break; + case EOpHitObjectGetRayTMinNV: out.debug << "HitObjectGetRayTMinNV"; break; + case EOpHitObjectGetRayTMaxNV: out.debug << "HitObjectGetRayTMaxNV"; break; + case EOpHitObjectGetObjectRayOriginNV: out.debug << "HitObjectGetObjectRayOriginNV"; break; + case EOpHitObjectGetObjectRayDirectionNV: out.debug << "HitObjectGetObjectRayDirectionNV"; break; + case EOpHitObjectGetWorldRayOriginNV: out.debug << "HitObjectGetWorldRayOriginNV"; break; + case EOpHitObjectGetWorldRayDirectionNV: out.debug << "HitObjectGetWorldRayDirectionNV"; break; + case EOpHitObjectGetObjectToWorldNV: out.debug << "HitObjectGetObjectToWorldNV"; break; + case EOpHitObjectGetWorldToObjectNV: out.debug << "HitObjectGetWorldToObjectNV"; break; + case EOpHitObjectGetInstanceCustomIndexNV: out.debug<< "HitObjectGetInstanceCustomIndexNV"; break; + case EOpHitObjectGetInstanceIdNV: out.debug << "HitObjectGetInstaneIdNV"; break; + case EOpHitObjectGetGeometryIndexNV: out.debug << "HitObjectGetGeometryIndexNV"; break; + case EOpHitObjectGetPrimitiveIndexNV: out.debug << "HitObjectGetPrimitiveIndexNV"; break; + case EOpHitObjectGetHitKindNV: out.debug << "HitObjectGetHitKindNV"; break; + case EOpHitObjectGetAttributesNV: out.debug << "HitObjectGetAttributesNV"; break; + case EOpHitObjectGetCurrentTimeNV: out.debug << "HitObjectGetCurrentTimeNV"; break; + case EOpHitObjectGetShaderBindingTableRecordIndexNV: out.debug << "HitObjectGetShaderBindingTableRecordIndexNV"; break; + case EOpHitObjectGetShaderRecordBufferHandleNV: out.debug << "HitObjectReadShaderRecordBufferHandleNV"; break; + case EOpReorderThreadNV: out.debug << "ReorderThreadNV"; break; + #ifndef GLSLANG_WEB case EOpSpirvInst: out.debug << "spirv_instruction"; break; #endif diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 24511ad284..cfcb197076 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1614,6 +1614,8 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ setRT = 0; else if (qualifier.isAnyCallable()) setRT = 1; + else if (qualifier.isHitObjectAttrNV()) + setRT = 2; else return -1; @@ -1653,7 +1655,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // slot irrespective of type. int collision = -1; // no collision #ifndef GLSLANG_WEB - if (qualifier.isAnyPayload() || qualifier.isAnyCallable()) { + if (qualifier.isAnyPayload() || qualifier.isAnyCallable() || qualifier.isHitObjectAttrNV()) { TRange range(qualifier.layoutLocation, qualifier.layoutLocation); collision = checkLocationRT(setRT, qualifier.layoutLocation); if (collision < 0) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index bb3ae77b14..0c56997604 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -1268,8 +1268,9 @@ class TIntermediate { std::unordered_set usedConstantId; // specialization constant ids used std::vector usedAtomics; // sets of bindings used by atomic counters std::vector usedIo[4]; // sets of used locations, one for each of in, out, uniform, and buffers - std::vector usedIoRT[2]; // sets of used location, one for rayPayload/rayPayloadIN and other - // for callableData/callableDataIn + std::vector usedIoRT[4]; // sets of used location, one for rayPayload/rayPayloadIN, + // one for callableData/callableDataIn, one for hitObjectAttributeNV and + // one for shaderrecordhitobjectNV // set of names of statically read/written I/O that might need extra checking std::set ioAccessed; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index a3dc8db29d..cfe9af0e3a 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -652,6 +652,12 @@ INSTANTIATE_TEST_SUITE_P( "spv.atomiAddEXT.task", "spv.460.subgroupEXT.task", "spv.460.subgroupEXT.mesh", + + // SPV_NV_shader_execution_reorder + + "spv.nv.hitobject-allops.rgen", + "spv.nv.hitobject-allops.rchit", + "spv.nv.hitobject-allops.rmiss", })), FileNameAsCustomTestSuffix ); From 6d8b00b1c6794dda092419700c2be40469bacdad Mon Sep 17 00:00:00 2001 From: alelenv <40001162+alelenv@users.noreply.github.com> Date: Fri, 9 Dec 2022 12:19:51 -0800 Subject: [PATCH 122/594] Add support for GL_NV_shader_invocation_reorder. (#3054) From 4fe00178c8ed7315e0d57ca1aca10a44ce475e3e Mon Sep 17 00:00:00 2001 From: David Neto Date: Fri, 9 Dec 2022 15:51:35 -0500 Subject: [PATCH 123/594] Remove the name of unused formal paramters This eliminates a compiler warning in some configurations. --- SPIRV/SpvTools.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 1b26280005..ff04f4f967 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -226,7 +226,7 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, std::unordered_set* live_locs, std::unordered_set* live_builtins, - spv::SpvBuildLogger* logger) + spv::SpvBuildLogger*) { spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); @@ -242,7 +242,7 @@ bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, std::unordered_set* live_locs, std::unordered_set* live_builtins, - spv::SpvBuildLogger* logger) + spv::SpvBuildLogger*) { spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); @@ -259,7 +259,7 @@ void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector< } void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector& spirv, - spv::SpvBuildLogger* logger) + spv::SpvBuildLogger*) { spvtools::Optimizer optimizer(target_env); optimizer.SetMessageConsumer(OptimizerMesssageConsumer); From f9b760e6c73bca9cba4b8a7e8d18993b89d62dd4 Mon Sep 17 00:00:00 2001 From: Chow Date: Wed, 14 Dec 2022 02:20:28 +0800 Subject: [PATCH 124/594] [glslang] Refine implicit array size interfaces. (#3074) * [glslang] Refine implicit array size interfaces. Help to check builtin and other variables if across stages. --- Test/baseResults/implicitArraySize.vert.out | 115 ++++++++++++ Test/baseResults/implicitArraySize1.geom.out | 99 ++++++++++ .../implicitArraySizeBuiltin.vert.out | 176 ++++++++++++++++++ Test/implicitArraySize.frag | 9 + Test/implicitArraySize.vert | 8 + Test/implicitArraySize1.geom | 14 ++ Test/implicitArraySize2.geom | 8 + Test/implicitArraySizeBuiltin.geom | 20 ++ Test/implicitArraySizeBuiltin.vert | 11 ++ glslang/Include/Types.h | 13 +- glslang/Include/arrays.h | 19 +- glslang/MachineIndependent/ParseHelper.cpp | 9 + glslang/MachineIndependent/linkValidate.cpp | 31 ++- gtests/Link.FromFile.cpp | 3 + 14 files changed, 528 insertions(+), 7 deletions(-) create mode 100644 Test/baseResults/implicitArraySize.vert.out create mode 100644 Test/baseResults/implicitArraySize1.geom.out create mode 100644 Test/baseResults/implicitArraySizeBuiltin.vert.out create mode 100644 Test/implicitArraySize.frag create mode 100644 Test/implicitArraySize.vert create mode 100644 Test/implicitArraySize1.geom create mode 100644 Test/implicitArraySize2.geom create mode 100644 Test/implicitArraySizeBuiltin.geom create mode 100644 Test/implicitArraySizeBuiltin.vert diff --git a/Test/baseResults/implicitArraySize.vert.out b/Test/baseResults/implicitArraySize.vert.out new file mode 100644 index 0000000000..9a71b87b40 --- /dev/null +++ b/Test/baseResults/implicitArraySize.vert.out @@ -0,0 +1,115 @@ +implicitArraySize.vert +Shader version: 460 +0:? Sequence +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:6 Sequence +0:6 move second child to first child ( temp float) +0:6 direct index ( smooth temp float) +0:6 'a' ( smooth out unsized 1-element array of float) +0:6 Constant: +0:6 0 (const int) +0:6 Constant: +0:6 0.100000 +0:7 move second child to first child ( temp float) +0:7 direct index ( smooth temp float) +0:7 'c' ( smooth out unsized 6-element array of float) +0:7 Constant: +0:7 5 (const int) +0:7 Constant: +0:7 0.100000 +0:? Linker Objects +0:? 'a' ( smooth out unsized 1-element array of float) +0:? 'c' ( smooth out unsized 6-element array of float) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +implicitArraySize.frag +Shader version: 460 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:7 Sequence +0:7 move second child to first child ( temp float) +0:7 direct index ( temp float) +0:7 'b' ( out 5-element array of float) +0:7 Constant: +0:7 0 (const int) +0:7 direct index ( smooth temp float) +0:7 'a' ( smooth in unsized 2-element array of float) +0:7 Constant: +0:7 1 (const int) +0:8 move second child to first child ( temp float) +0:8 direct index ( temp float) +0:8 'b' ( out 5-element array of float) +0:8 Constant: +0:8 1 (const int) +0:8 direct index ( smooth temp float) +0:8 'c' ( smooth in 3-element array of float) +0:8 Constant: +0:8 1 (const int) +0:? Linker Objects +0:? 'a' ( smooth in unsized 2-element array of float) +0:? 'c' ( smooth in 3-element array of float) +0:? 'b' ( out 5-element array of float) + + +Linked vertex stage: + + +Linked fragment stage: + +ERROR: Linking vertex stage: Implicit size of unsized array doesn't match same symbol among multiple shaders. + +Shader version: 460 +0:? Sequence +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:6 Sequence +0:6 move second child to first child ( temp float) +0:6 direct index ( smooth temp float) +0:6 'a' ( smooth out 1-element array of float) +0:6 Constant: +0:6 0 (const int) +0:6 Constant: +0:6 0.100000 +0:7 move second child to first child ( temp float) +0:7 direct index ( smooth temp float) +0:7 'c' ( smooth out 6-element array of float) +0:7 Constant: +0:7 5 (const int) +0:7 Constant: +0:7 0.100000 +0:? Linker Objects +0:? 'a' ( smooth out 1-element array of float) +0:? 'c' ( smooth out 6-element array of float) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 460 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:7 Sequence +0:7 move second child to first child ( temp float) +0:7 direct index ( temp float) +0:7 'b' ( out 5-element array of float) +0:7 Constant: +0:7 0 (const int) +0:7 direct index ( smooth temp float) +0:7 'a' ( smooth in 2-element array of float) +0:7 Constant: +0:7 1 (const int) +0:8 move second child to first child ( temp float) +0:8 direct index ( temp float) +0:8 'b' ( out 5-element array of float) +0:8 Constant: +0:8 1 (const int) +0:8 direct index ( smooth temp float) +0:8 'c' ( smooth in 3-element array of float) +0:8 Constant: +0:8 1 (const int) +0:? Linker Objects +0:? 'a' ( smooth in 2-element array of float) +0:? 'c' ( smooth in 3-element array of float) +0:? 'b' ( out 5-element array of float) + diff --git a/Test/baseResults/implicitArraySize1.geom.out b/Test/baseResults/implicitArraySize1.geom.out new file mode 100644 index 0000000000..d9c2f8ba14 --- /dev/null +++ b/Test/baseResults/implicitArraySize1.geom.out @@ -0,0 +1,99 @@ +implicitArraySize1.geom +Shader version: 460 +invocations = -1 +max_vertices = 204 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:12 Sequence +0:12 Function Call: f( ( global void) +0:13 move second child to first child ( temp float) +0:13 direct index (layout( stream=0) temp float) +0:13 'o' (layout( stream=0) out 3-element array of float) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( temp float) +0:13 direct index ( temp 3-element array of float) +0:13 'g' ( in 3-element array of 3-element array of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 1 (const int) +0:? Linker Objects +0:? 'g' ( in 3-element array of 3-element array of float) +0:? 'o' (layout( stream=0) out 3-element array of float) + +implicitArraySize2.geom +Shader version: 460 +invocations = -1 +max_vertices = -1 +input primitive = none +output primitive = none +0:? Sequence +0:6 Function Definition: f( ( global void) +0:6 Function Parameters: +0:7 Sequence +0:7 move second child to first child ( temp float) +0:7 direct index (layout( stream=0) temp float) +0:7 'o' (layout( stream=0) out unsized 2-element array of float) +0:7 Constant: +0:7 1 (const int) +0:7 direct index ( temp float) +0:7 direct index ( temp 3-element array of float) +0:7 'g' ( in unsized 2-element array of 3-element array of float) +0:7 Constant: +0:7 1 (const int) +0:7 Constant: +0:7 1 (const int) +0:? Linker Objects +0:? 'g' ( in unsized 2-element array of 3-element array of float) +0:? 'o' (layout( stream=0) out unsized 2-element array of float) + + +Linked geometry stage: + +ERROR: Linking geometry stage: Not all array sizes match across all geometry shaders in the program + +Shader version: 460 +invocations = 1 +max_vertices = 204 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:12 Sequence +0:12 Function Call: f( ( global void) +0:13 move second child to first child ( temp float) +0:13 direct index (layout( stream=0) temp float) +0:13 'o' (layout( stream=0) out 3-element array of float) +0:13 Constant: +0:13 1 (const int) +0:13 direct index ( temp float) +0:13 direct index ( temp 3-element array of float) +0:13 'g' ( in 3-element array of 3-element array of float) +0:13 Constant: +0:13 2 (const int) +0:13 Constant: +0:13 1 (const int) +0:6 Function Definition: f( ( global void) +0:6 Function Parameters: +0:7 Sequence +0:7 move second child to first child ( temp float) +0:7 direct index (layout( stream=0) temp float) +0:7 'o' (layout( stream=0) out 2-element array of float) +0:7 Constant: +0:7 1 (const int) +0:7 direct index ( temp float) +0:7 direct index ( temp 3-element array of float) +0:7 'g' ( in 2-element array of 3-element array of float) +0:7 Constant: +0:7 1 (const int) +0:7 Constant: +0:7 1 (const int) +0:? Linker Objects +0:? 'g' ( in 3-element array of 3-element array of float) +0:? 'o' (layout( stream=0) out 3-element array of float) + diff --git a/Test/baseResults/implicitArraySizeBuiltin.vert.out b/Test/baseResults/implicitArraySizeBuiltin.vert.out new file mode 100644 index 0000000000..77b41aa6db --- /dev/null +++ b/Test/baseResults/implicitArraySizeBuiltin.vert.out @@ -0,0 +1,176 @@ +implicitArraySizeBuiltin.vert +Shader version: 460 +0:? Sequence +0:3 Function Definition: f1(f1; ( global void) +0:3 Function Parameters: +0:3 'x' ( in float) +0:5 Sequence +0:5 move second child to first child ( temp float) +0:5 direct index ( temp float ClipDistance) +0:5 gl_ClipDistance: direct index for structure ( out unsized 7-element array of float ClipDistance) +0:5 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance}) +0:5 Constant: +0:5 2 (const uint) +0:5 Constant: +0:5 6 (const int) +0:5 'x' ( in float) +0:6 move second child to first child ( temp float) +0:6 direct index ( temp float CullDistance) +0:6 gl_CullDistance: direct index for structure ( out unsized 2-element array of float CullDistance) +0:6 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance}) +0:6 Constant: +0:6 3 (const uint) +0:6 Constant: +0:6 1 (const int) +0:6 'x' ( in float) +0:9 Function Definition: main( ( global void) +0:9 Function Parameters: +0:10 Sequence +0:10 Function Call: f1(f1; ( global void) +0:10 Constant: +0:10 0.100000 +0:? Linker Objects +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 7-element array of float ClipDistance gl_ClipDistance, out unsized 2-element array of float CullDistance gl_CullDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + +implicitArraySizeBuiltin.geom +Shader version: 460 +invocations = -1 +max_vertices = 204 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:6 Function Definition: f2(f1; ( global void) +0:6 Function Parameters: +0:6 'x' ( in float) +0:8 Sequence +0:8 move second child to first child ( temp float) +0:8 direct index (layout( stream=0) temp float ClipDistance) +0:8 gl_ClipDistance: direct index for structure (layout( stream=0) out unsized 7-element array of float ClipDistance) +0:8 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance}) +0:8 Constant: +0:8 2 (const uint) +0:8 Constant: +0:8 6 (const int) +0:8 direct index ( temp float ClipDistance) +0:8 gl_ClipDistance: direct index for structure ( in unsized 7-element array of float ClipDistance) +0:8 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:8 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 6 (const int) +0:10 Function Definition: f3(f1; ( global void) +0:10 Function Parameters: +0:10 'x' ( in float) +0:12 Sequence +0:12 move second child to first child ( temp float) +0:12 direct index (layout( stream=0) temp float CullDistance) +0:12 gl_CullDistance: direct index for structure (layout( stream=0) out unsized 2-element array of float CullDistance) +0:12 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance}) +0:12 Constant: +0:12 3 (const uint) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( temp float CullDistance) +0:12 gl_CullDistance: direct index for structure ( in unsized 2-element array of float CullDistance) +0:12 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:12 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Constant: +0:12 1 (const int) +0:15 Function Definition: main( ( global void) +0:15 Function Parameters: +0:19 Sequence +0:19 Function Call: f3(f1; ( global void) +0:19 Constant: +0:19 0.100000 +0:? Linker Objects +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out unsized 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out unsized 2-element array of float CullDistance gl_CullDistance}) +0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in unsized 7-element array of float ClipDistance gl_ClipDistance, in unsized 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in unsized 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) + + +Linked vertex stage: + + +Linked geometry stage: + + +Shader version: 460 +0:? Sequence +0:3 Function Definition: f1(f1; ( global void) +0:3 Function Parameters: +0:3 'x' ( in float) +0:5 Sequence +0:5 move second child to first child ( temp float) +0:5 direct index ( temp float ClipDistance) +0:5 gl_ClipDistance: direct index for structure ( out 7-element array of float ClipDistance) +0:5 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance}) +0:5 Constant: +0:5 2 (const uint) +0:5 Constant: +0:5 6 (const int) +0:5 'x' ( in float) +0:6 move second child to first child ( temp float) +0:6 direct index ( temp float CullDistance) +0:6 gl_CullDistance: direct index for structure ( out 2-element array of float CullDistance) +0:6 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance}) +0:6 Constant: +0:6 3 (const uint) +0:6 Constant: +0:6 1 (const int) +0:6 'x' ( in float) +0:9 Function Definition: main( ( global void) +0:9 Function Parameters: +0:10 Sequence +0:10 Function Call: f1(f1; ( global void) +0:10 Constant: +0:10 0.100000 +0:? Linker Objects +0:? 'anon@0' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 7-element array of float ClipDistance gl_ClipDistance, out 2-element array of float CullDistance gl_CullDistance}) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) +Shader version: 460 +invocations = 1 +max_vertices = 204 +input primitive = triangles +output primitive = line_strip +0:? Sequence +0:10 Function Definition: f3(f1; ( global void) +0:10 Function Parameters: +0:10 'x' ( in float) +0:12 Sequence +0:12 move second child to first child ( temp float) +0:12 direct index (layout( stream=0) temp float CullDistance) +0:12 gl_CullDistance: direct index for structure (layout( stream=0) out 2-element array of float CullDistance) +0:12 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 2-element array of float CullDistance gl_CullDistance}) +0:12 Constant: +0:12 3 (const uint) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( temp float CullDistance) +0:12 gl_CullDistance: direct index for structure ( in 2-element array of float CullDistance) +0:12 direct index ( temp block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:12 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Constant: +0:12 1 (const int) +0:15 Function Definition: main( ( global void) +0:15 Function Parameters: +0:19 Sequence +0:19 Function Call: f3(f1; ( global void) +0:19 Constant: +0:19 0.100000 +0:? Linker Objects +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) gl_Position 4-component vector of float Position gl_Position, layout( stream=0) gl_PointSize float PointSize gl_PointSize, layout( stream=0) out 7-element array of float ClipDistance gl_ClipDistance, layout( stream=0) out 2-element array of float CullDistance gl_CullDistance}) +0:? 'gl_in' ( in 3-element array of block{ in 4-component vector of float Position gl_Position, in float PointSize gl_PointSize, in 7-element array of float ClipDistance gl_ClipDistance, in 2-element array of float CullDistance gl_CullDistance, in 4-component vector of float SecondaryPositionNV gl_SecondaryPositionNV, in 1-element array of 4-component vector of float PositionPerViewNV gl_PositionPerViewNV}) + diff --git a/Test/implicitArraySize.frag b/Test/implicitArraySize.frag new file mode 100644 index 0000000000..ca3eeb3ffe --- /dev/null +++ b/Test/implicitArraySize.frag @@ -0,0 +1,9 @@ +#version 460 core +in float a[]; +in float c[3]; +out float b[5]; + +void main(){ + b[0] = a[1]; + b[1] = c[1]; +} \ No newline at end of file diff --git a/Test/implicitArraySize.vert b/Test/implicitArraySize.vert new file mode 100644 index 0000000000..93e7495bfb --- /dev/null +++ b/Test/implicitArraySize.vert @@ -0,0 +1,8 @@ +#version 460 core +out float a[]; +out float c[]; + +void main(){ + a[0] = 0.1; + c[5] = 0.1; +} \ No newline at end of file diff --git a/Test/implicitArraySize1.geom b/Test/implicitArraySize1.geom new file mode 100644 index 0000000000..b3b52ead55 --- /dev/null +++ b/Test/implicitArraySize1.geom @@ -0,0 +1,14 @@ +#version 460 core + +layout(triangles) in; +layout(line_strip, max_vertices = 204) out; + +void f(); + +in float g[][3]; +out float o[3]; + +void main(){ + f(); + o[1] = g[2][1]; +} \ No newline at end of file diff --git a/Test/implicitArraySize2.geom b/Test/implicitArraySize2.geom new file mode 100644 index 0000000000..0bb65cd47b --- /dev/null +++ b/Test/implicitArraySize2.geom @@ -0,0 +1,8 @@ +#version 460 core + +in float g[][3]; +out float o[]; + +void f(){ + o[1] = g[1][1]; +} \ No newline at end of file diff --git a/Test/implicitArraySizeBuiltin.geom b/Test/implicitArraySizeBuiltin.geom new file mode 100644 index 0000000000..419b63314a --- /dev/null +++ b/Test/implicitArraySizeBuiltin.geom @@ -0,0 +1,20 @@ +#version 460 core + +layout(triangles) in; +layout(line_strip, max_vertices = 204) out; + +void f2(float x) +{ + gl_ClipDistance[6] = gl_in[0].gl_ClipDistance[6]; +} +void f3(float x) +{ + gl_CullDistance[1] = gl_in[0].gl_CullDistance[1]; +} + +void main(){ + #if defined(CLIP) + f2(0.1); + #endif + f3(0.1); +} \ No newline at end of file diff --git a/Test/implicitArraySizeBuiltin.vert b/Test/implicitArraySizeBuiltin.vert new file mode 100644 index 0000000000..251e975626 --- /dev/null +++ b/Test/implicitArraySizeBuiltin.vert @@ -0,0 +1,11 @@ +#version 460 core + +void f1(float x) +{ + gl_ClipDistance[6] = x; + gl_CullDistance[1] = x; +} + +void main(){ + f1(0.1); +} \ No newline at end of file diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 569c64bbd0..59a447c912 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1894,9 +1894,11 @@ class TType { virtual bool isArray() const { return arraySizes != nullptr; } virtual bool isSizedArray() const { return isArray() && arraySizes->isSized(); } virtual bool isUnsizedArray() const { return isArray() && !arraySizes->isSized(); } + virtual bool isImplicitlySizedArray() const { return isArray() && arraySizes->isImplicitlySized(); } virtual bool isArrayVariablyIndexed() const { assert(isArray()); return arraySizes->isVariablyIndexed(); } virtual void setArrayVariablyIndexed() { assert(isArray()); arraySizes->setVariablyIndexed(); } virtual void updateImplicitArraySize(int size) { assert(isArray()); arraySizes->updateImplicitSize(size); } + virtual void setImplicitlySized(bool isImplicitSized) { arraySizes->setImplicitlySized(isImplicitSized); } virtual bool isStruct() const { return basicType == EbtStruct || basicType == EbtBlock; } virtual bool isFloatingDomain() const { return basicType == EbtFloat || basicType == EbtDouble || basicType == EbtFloat16; } virtual bool isIntegerDomain() const @@ -2125,8 +2127,12 @@ class TType { // an explicit array. void adoptImplicitArraySizes(bool skipNonvariablyIndexed) { - if (isUnsizedArray() && !(skipNonvariablyIndexed || isArrayVariablyIndexed())) + if (isUnsizedArray() && + (qualifier.builtIn == EbvSampleMask || + !(skipNonvariablyIndexed || isArrayVariablyIndexed()))) { changeOuterArraySize(getImplicitArraySize()); + setImplicitlySized(true); + } // For multi-dim per-view arrays, set unsized inner dimension size to 1 if (qualifier.isPerView() && arraySizes && arraySizes->isInnerUnsized()) arraySizes->clearInnerUnsized(); @@ -2758,7 +2764,10 @@ class TType { bool sameArrayness(const TType& right) const { return ((arraySizes == nullptr && right.arraySizes == nullptr) || - (arraySizes != nullptr && right.arraySizes != nullptr && *arraySizes == *right.arraySizes)); + (arraySizes != nullptr && right.arraySizes != nullptr && + (*arraySizes == *right.arraySizes || + (arraySizes->isImplicitlySized() && right.arraySizes->isDefaultImplicitlySized()) || + (right.arraySizes->isImplicitlySized() && arraySizes->isDefaultImplicitlySized())))); } // See if two type's arrayness match in everything except their outer dimension diff --git a/glslang/Include/arrays.h b/glslang/Include/arrays.h index 7f047d9fb1..1da14d09c8 100644 --- a/glslang/Include/arrays.h +++ b/glslang/Include/arrays.h @@ -222,7 +222,7 @@ struct TSmallArrayVector { struct TArraySizes { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - TArraySizes() : implicitArraySize(1), variablyIndexed(false) { } + TArraySizes() : implicitArraySize(0), implicitlySized(true), variablyIndexed(false){ } // For breaking into two non-shared copies, independently modifiable. TArraySizes& operator=(const TArraySizes& from) @@ -230,6 +230,7 @@ struct TArraySizes { implicitArraySize = from.implicitArraySize; variablyIndexed = from.variablyIndexed; sizes = from.sizes; + implicitlySized = from.implicitlySized; return *this; } @@ -256,11 +257,17 @@ struct TArraySizes { void addInnerSize(int s, TIntermTyped* n) { sizes.push_back((unsigned)s, n); } void addInnerSize(TArraySize pair) { sizes.push_back(pair.size, pair.node); + implicitlySized = false; } void addInnerSizes(const TArraySizes& s) { sizes.push_back(s.sizes); } - void changeOuterSize(int s) { sizes.changeFront((unsigned)s); } - int getImplicitSize() const { return implicitArraySize; } - void updateImplicitSize(int s) { implicitArraySize = std::max(implicitArraySize, s); } + void changeOuterSize(int s) { + sizes.changeFront((unsigned)s); + implicitlySized = false; + } + int getImplicitSize() const { return implicitArraySize > 0 ? implicitArraySize : 1; } + void updateImplicitSize(int s) { + implicitArraySize = (std::max)(implicitArraySize, s); + } bool isInnerUnsized() const { for (int d = 1; d < sizes.size(); ++d) { @@ -295,6 +302,9 @@ struct TArraySizes { bool hasUnsized() const { return getOuterSize() == UnsizedArraySize || isInnerUnsized(); } bool isSized() const { return getOuterSize() != UnsizedArraySize; } + bool isImplicitlySized() const { return implicitlySized; } + bool isDefaultImplicitlySized() const { return implicitlySized && implicitArraySize == 0; } + void setImplicitlySized(bool isImplicitSizing) { implicitlySized = isImplicitSizing; } void dereference() { sizes.pop_front(); } void copyDereferenced(const TArraySizes& rhs) { @@ -333,6 +343,7 @@ struct TArraySizes { // the implicit size of the array, if not variably indexed and // otherwise legal. int implicitArraySize; + bool implicitlySized; bool variablyIndexed; // true if array is indexed with a non compile-time constant }; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 980153e5c1..f86e78ba81 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -608,6 +608,15 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn #ifndef GLSLANG_WEB if (base->getType().isUnsizedArray()) { base->getWritableType().updateImplicitArraySize(indexValue + 1); + base->getWritableType().setImplicitlySized(true); + if (base->getQualifier().builtIn == EbvClipDistance && + indexValue >= resources.maxClipDistances) { + error(loc, "gl_ClipDistance", "[", "array index out of range '%d'", indexValue); + } + else if (base->getQualifier().builtIn == EbvCullDistance && + indexValue >= resources.maxCullDistances) { + error(loc, "gl_CullDistance", "[", "array index out of range '%d'", indexValue); + } // For 2D per-view builtin arrays, update the inner dimension size in parent type if (base->getQualifier().isPerView() && base->getQualifier().builtIn != EbvNone) { TIntermBinary* binaryNode = base->getAsBinaryNode(); diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index cfcb197076..3a4cb567b1 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -749,6 +749,21 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin symbol->getQualifier().layoutLocation = unitSymbol->getQualifier().layoutLocation; } + // Update implicit array sizes + if (symbol->getWritableType().isImplicitlySizedArray() && unitSymbol->getType().isImplicitlySizedArray()) { + if (unitSymbol->getType().getImplicitArraySize() > symbol->getType().getImplicitArraySize()){ + symbol->getWritableType().updateImplicitArraySize(unitSymbol->getType().getImplicitArraySize()); + } + } + else if (symbol->getWritableType().isImplicitlySizedArray() && unitSymbol->getType().isSizedArray()) { + if (symbol->getWritableType().getImplicitArraySize() > unitSymbol->getType().getOuterArraySize()) + error(infoSink, "Implicit size of unsized array doesn't match same symbol among multiple shaders."); + } + else if (unitSymbol->getType().isImplicitlySizedArray() && symbol->getWritableType().isSizedArray()) { + if (unitSymbol->getType().getImplicitArraySize() > symbol->getWritableType().getOuterArraySize()) + error(infoSink, "Implicit size of unsized array doesn't match same symbol among multiple shaders."); + } + // Update implicit array sizes mergeImplicitArraySizes(symbol->getWritableType(), unitSymbol->getType()); @@ -759,6 +774,19 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin else if (symbol->getQualifier().isPushConstant() && unitSymbol->getQualifier().isPushConstant() && getStage() == unitStage) error(infoSink, "Only one push_constant block is allowed per stage"); } + + // Check conflicts between preset primitives and sizes of I/O variables among multiple geometry shaders + if (language == EShLangGeometry && unitStage == EShLangGeometry) + { + TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); + if (unitSymbol->isArray() && unitSymbol->getQualifier().storage == EvqVaryingIn && unitSymbol->getQualifier().builtIn == EbvNone) + if ((unitSymbol->getArraySizes()->isImplicitlySized() && + unitSymbol->getArraySizes()->getImplicitSize() != TQualifier::mapGeometryToSize(getInputPrimitive())) || + (! unitSymbol->getArraySizes()->isImplicitlySized() && + unitSymbol->getArraySizes()->getDimSize(0) != TQualifier::mapGeometryToSize(getInputPrimitive()))) + error(infoSink, "Not all array sizes match across all geometry shaders in the program"); + } + if (merge) { linkerObjects.push_back(unitLinkerObjects[unitLinkObj]); @@ -863,7 +891,8 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy else { arraysMatch = symbol.getType().sameArrayness(unitSymbol.getType()) || (symbol.getType().isArray() && unitSymbol.getType().isArray() && - (symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray())); + (symbol.getType().isImplicitlySizedArray() || unitSymbol.getType().isImplicitlySizedArray() || + symbol.getType().isUnsizedArray() || unitSymbol.getType().isUnsizedArray())); } int lpidx = -1; diff --git a/gtests/Link.FromFile.cpp b/gtests/Link.FromFile.cpp index 9e029fc7b2..3b769bbb6e 100644 --- a/gtests/Link.FromFile.cpp +++ b/gtests/Link.FromFile.cpp @@ -90,6 +90,9 @@ INSTANTIATE_TEST_SUITE_P( Glsl, LinkTest, ::testing::ValuesIn(std::vector>({ {"mains1.frag", "mains2.frag", "noMain1.geom", "noMain2.geom"}, + {"implicitArraySize.vert", "implicitArraySize.frag"}, + {"implicitArraySizeBuiltin.vert", "implicitArraySizeBuiltin.geom"}, + {"implicitArraySize1.geom", "implicitArraySize2.geom"}, {"noMain.vert", "mains.frag"}, {"link1.frag", "link2.frag", "link3.frag"}, {"recurse1.vert", "recurse1.frag", "recurse2.frag"}, From dcae18737622fac35ee9c48e44fa487cf524af9d Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Mon, 19 Dec 2022 12:41:07 -0700 Subject: [PATCH 125/594] Remove languages from cmake project statement Fix #3088 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b6fd306d8c..e93ba45514 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,7 +41,7 @@ if(POLICY CMP0054) cmake_policy(SET CMP0054 NEW) endif() -project(glslang LANGUAGES CXX) +project(glslang) set_property(GLOBAL PROPERTY USE_FOLDERS ON) From a88f67412426860da8efdfe0ce247ae7c95f7572 Mon Sep 17 00:00:00 2001 From: Daniel Story Date: Wed, 21 Dec 2022 11:53:23 -0800 Subject: [PATCH 126/594] Fix issues with MaxDualSourceDrawBuffersEXT --- StandAlone/ResourceLimits.cpp | 2 ++ glslang/Include/glslang_c_interface.h | 8 +++++++- gtests/BuiltInResource.FromFile.cpp | 10 ++++++++++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/StandAlone/ResourceLimits.cpp b/StandAlone/ResourceLimits.cpp index 6e1a3d85c0..0e9d1b5480 100644 --- a/StandAlone/ResourceLimits.cpp +++ b/StandAlone/ResourceLimits.cpp @@ -505,6 +505,8 @@ void DecodeResourceLimits(TBuiltInResource* resources, char* config) resources->maxTaskWorkGroupSizeZ_EXT = value; else if (tokenStr == "MaxMeshViewCountEXT") resources->maxMeshViewCountEXT = value; + else if (tokenStr == "MaxDualSourceDrawBuffersEXT") + resources->maxDualSourceDrawBuffersEXT = value; else if (tokenStr == "nonInductiveForLoops") resources->limits.nonInductiveForLoops = (value != 0); else if (tokenStr == "whileLoops") diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index f540f26d6c..28d52330ee 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -157,7 +157,13 @@ typedef struct glslang_resource_s { int max_task_work_group_size_y_ext; int max_task_work_group_size_z_ext; int max_mesh_view_count_ext; - int maxDualSourceDrawBuffersEXT; + union + { + int max_dual_source_draw_buffers_ext; + + /* Incorrectly capitalized name retained for backward compatibility */ + int maxDualSourceDrawBuffersEXT; + }; glslang_limits_t limits; } glslang_resource_t; diff --git a/gtests/BuiltInResource.FromFile.cpp b/gtests/BuiltInResource.FromFile.cpp index 9a7c9b575e..eeea51187d 100644 --- a/gtests/BuiltInResource.FromFile.cpp +++ b/gtests/BuiltInResource.FromFile.cpp @@ -53,5 +53,15 @@ TEST_F(DefaultResourceTest, FromFile) ASSERT_EQ(expectedConfig, realConfig); } +TEST_F(DefaultResourceTest, UnrecognizedLimit) +{ + const std::string defaultConfig = GetDefaultTBuiltInResourceString(); + testing::internal::CaptureStdout(); + TBuiltInResource resources; + DecodeResourceLimits(&resources, const_cast(defaultConfig.c_str())); + std::string output = testing::internal::GetCapturedStdout(); + ASSERT_EQ(output.find("unrecognized limit"), std::string::npos); +} + } // anonymous namespace } // namespace glslangtest From bec8359bf7e22c7106b87f2356ef4a5571489861 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 21 Dec 2022 14:20:44 -0700 Subject: [PATCH 127/594] Fix const parameter debug types Constant qualified parameter types were not being correctly added to the DebugTypeFunction instruction. Fix #3095. --- SPIRV/SpvBuilder.cpp | 21 +++-- .../spv.debuginfo.const_params.glsl.comp.out | 84 +++++++++++++++++++ Test/spv.debuginfo.const_params.glsl.comp | 14 ++++ gtests/Spv.FromFile.cpp | 3 +- 4 files changed, 115 insertions(+), 7 deletions(-) create mode 100644 Test/baseResults/spv.debuginfo.const_params.glsl.comp.out create mode 100644 Test/spv.debuginfo.const_params.glsl.comp diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index bcbaf24efa..764a88602e 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -650,8 +650,12 @@ Id Builder::makeDebugFunctionType(Id returnType, const std::vector& paramTyp type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); type->addIdOperand(debugId[returnType]); for (auto const paramType : paramTypes) { - assert(isPointerType(paramType) || isArrayType(paramType)); - type->addIdOperand(debugId[getContainedTypeId(paramType)]); + if (isPointerType(paramType) || isArrayType(paramType)) { + type->addIdOperand(debugId[getContainedTypeId(paramType)]); + } + else { + type->addIdOperand(debugId[paramType]); + } } constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); @@ -2062,11 +2066,16 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const assert(paramTypes.size() == paramNames.size()); for(size_t p = 0; p < paramTypes.size(); ++p) { - auto const& paramType = paramTypes[p]; - assert(isPointerType(paramType) || isArrayType(paramType)); - assert(debugId[getContainedTypeId(paramType)] != 0); + auto getParamTypeId = [this](Id const& typeId) { + if (isPointerType(typeId) || isArrayType(typeId)) { + return getContainedTypeId(typeId); + } + else { + return typeId; + } + }; auto const& paramName = paramNames[p]; - auto const debugLocalVariableId = createDebugLocalVariable(debugId[getContainedTypeId(paramType)], paramName, p+1); + auto const debugLocalVariableId = createDebugLocalVariable(debugId[getParamTypeId(paramTypes[p])], paramName, p+1); debugId[firstParamId + p] = debugLocalVariableId; makeDebugDeclare(debugLocalVariableId, firstParamId + p); diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out new file mode 100644 index 0000000000..c0c5cd2259 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -0,0 +1,84 @@ +spv.debuginfo.const_params.glsl.comp +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 64 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 13 "main" + ExecutionMode 13 LocalSize 1 1 1 + 8: String "uint" + 14: String "main" + 17: String "" + 24: String "float" + 39: String "function" + 45: String "f" + 49: String "f2" + 52: String "f3" + 55: String "f4" + Name 13 "main" + Name 38 "function(f1;vf2;vf3;vf4;" + Name 34 "f" + Name 35 "f2" + Name 36 "f3" + Name 37 "f4" + 3: TypeVoid + 4: TypeFunction 3 + 6: TypeInt 32 0 + 9: 6(int) Constant 32 + 10: 6(int) Constant 6 + 11: 6(int) Constant 0 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 12: 6(int) Constant 3 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 19: 6(int) Constant 1 + 20: 6(int) Constant 4 + 21: 6(int) Constant 2 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 23: TypeFloat 32 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 26: TypeVector 23(float) 2 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 + 28: TypeVector 23(float) 3 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 30: TypeVector 23(float) 4 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 32: TypeFunction 3 23(float) 26(fvec2) 28(fvec3) 30(fvec4) + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 25 27 29 31 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 39 33 16 11 11 18 39 12 11 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 45 25 16 11 11 40 20 19 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 27 16 11 11 40 20 21 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 52 29 16 11 11 40 20 12 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 55 31 16 11 11 40 20 20 + 59: 23(float) Constant 0 + 60: 26(fvec2) ConstantComposite 59 59 + 61: 28(fvec3) ConstantComposite 59 59 59 + 62: 30(fvec4) ConstantComposite 59 59 59 59 + 13(main): 3 Function None 4 + 22: Label + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 63: 3 FunctionCall 38(function(f1;vf2;vf3;vf4;) 59 60 61 62 + Return + FunctionEnd +38(function(f1;vf2;vf3;vf4;): 3 Function None 32 + 34(f): 23(float) FunctionParameter + 35(f2): 26(fvec2) FunctionParameter + 36(f3): 28(fvec3) FunctionParameter + 37(f4): 30(fvec4) FunctionParameter + 41: Label + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 40 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 44 34(f) 47 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 35(f2) 47 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 36(f3) 47 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 54 37(f4) 47 + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(function(f1;vf2;vf3;vf4;) + Return + FunctionEnd diff --git a/Test/spv.debuginfo.const_params.glsl.comp b/Test/spv.debuginfo.const_params.glsl.comp new file mode 100644 index 0000000000..112628fe5e --- /dev/null +++ b/Test/spv.debuginfo.const_params.glsl.comp @@ -0,0 +1,14 @@ +#version 450 + +void function( + const float f, + const vec2 f2, + const vec3 f3, + const vec4 f4) +{ +} + +void main() +{ + function(0, vec2(0), vec3(0), vec4(0)); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index cfe9af0e3a..fafd33cfd3 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -858,7 +858,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.debuginfo.glsl.comp", "spv.debuginfo.glsl.geom", "spv.debuginfo.glsl.tesc", - "spv.debuginfo.glsl.tese" + "spv.debuginfo.glsl.tese", + "spv.debuginfo.const_params.glsl.comp" })), FileNameAsCustomTestSuffix ); From d38d06c03fab07493342d94ef6c890a5f8ea18fc Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 22 Dec 2022 15:43:03 -0700 Subject: [PATCH 128/594] Fix debuginfo disassembly --- SPIRV/disassemble.cpp | 60 ++++ .../spv.debuginfo.const_params.glsl.comp.out | 48 +-- Test/baseResults/spv.debuginfo.glsl.comp.out | 202 +++++------ Test/baseResults/spv.debuginfo.glsl.frag.out | 298 +++++++-------- Test/baseResults/spv.debuginfo.glsl.geom.out | 108 +++--- Test/baseResults/spv.debuginfo.glsl.tesc.out | 182 +++++----- Test/baseResults/spv.debuginfo.glsl.tese.out | 134 +++---- Test/baseResults/spv.debuginfo.glsl.vert.out | 122 +++---- Test/baseResults/spv.debuginfo.hlsl.comp.out | 220 ++++++------ Test/baseResults/spv.debuginfo.hlsl.frag.out | 338 +++++++++--------- Test/baseResults/spv.debuginfo.hlsl.geom.out | 126 +++---- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 206 +++++------ Test/baseResults/spv.debuginfo.hlsl.tese.out | 148 ++++---- Test/baseResults/spv.debuginfo.hlsl.vert.out | 130 +++---- 14 files changed, 1191 insertions(+), 1131 deletions(-) diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 387376d88c..f943fd5645 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -55,6 +55,7 @@ namespace spv { #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" + #include "NonSemanticShaderDebugInfo100.h" } } const char* GlslStd450DebugNames[spv::GLSLstd450Count]; @@ -63,6 +64,7 @@ namespace spv { static const char* GLSLextAMDGetDebugNames(const char*, unsigned); static const char* GLSLextNVGetDebugNames(const char*, unsigned); +static const char* NonSemanticShaderDebugInfo100GetDebugNames(unsigned); static void Kill(std::ostream& out, const char* message) { @@ -77,6 +79,7 @@ enum ExtInstSet { GLSLextNVInst, OpenCLExtInst, NonSemanticDebugPrintfExtInst, + NonSemanticShaderDebugInfo100 }; // Container class for a single instance of a SPIR-V stream, with methods for disassembly. @@ -502,6 +505,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, extInstSet = OpenCLExtInst; } else if (strcmp("NonSemantic.DebugPrintf", name) == 0) { extInstSet = NonSemanticDebugPrintfExtInst; + } else if (strcmp("NonSemantic.Shader.DebugInfo.100", name) == 0) { + extInstSet = NonSemanticShaderDebugInfo100; } else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 || strcmp(spv::E_SPV_AMD_shader_trinary_minmax, name) == 0 || strcmp(spv::E_SPV_AMD_shader_explicit_vertex_parameter, name) == 0 || @@ -527,6 +532,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")"; } else if (extInstSet == NonSemanticDebugPrintfExtInst) { out << "(DebugPrintf)"; + } else if (extInstSet == NonSemanticShaderDebugInfo100) { + out << "(" << NonSemanticShaderDebugInfo100GetDebugNames(entrypoint) << ")"; } } break; @@ -750,6 +757,59 @@ static const char* GLSLextNVGetDebugNames(const char* name, unsigned entrypoint) return "Bad"; } +static const char* NonSemanticShaderDebugInfo100GetDebugNames(unsigned entrypoint) +{ + switch (entrypoint) { + case NonSemanticShaderDebugInfo100DebugInfoNone: return "DebugInfoNone"; + case NonSemanticShaderDebugInfo100DebugCompilationUnit: return "DebugCompilationUnit"; + case NonSemanticShaderDebugInfo100DebugTypeBasic: return "DebugTypeBasic"; + case NonSemanticShaderDebugInfo100DebugTypePointer: return "DebugTypePointer"; + case NonSemanticShaderDebugInfo100DebugTypeQualifier: return "DebugTypeQualifier"; + case NonSemanticShaderDebugInfo100DebugTypeArray: return "DebugTypeArray"; + case NonSemanticShaderDebugInfo100DebugTypeVector: return "DebugTypeVector"; + case NonSemanticShaderDebugInfo100DebugTypedef: return "DebugTypedef"; + case NonSemanticShaderDebugInfo100DebugTypeFunction: return "DebugTypeFunction"; + case NonSemanticShaderDebugInfo100DebugTypeEnum: return "DebugTypeEnum"; + case NonSemanticShaderDebugInfo100DebugTypeComposite: return "DebugTypeComposite"; + case NonSemanticShaderDebugInfo100DebugTypeMember: return "DebugTypeMember"; + case NonSemanticShaderDebugInfo100DebugTypeInheritance: return "DebugTypeInheritance"; + case NonSemanticShaderDebugInfo100DebugTypePtrToMember: return "DebugTypePtrToMember"; + case NonSemanticShaderDebugInfo100DebugTypeTemplate: return "DebugTypeTemplate"; + case NonSemanticShaderDebugInfo100DebugTypeTemplateParameter: return "DebugTypeTemplateParameter"; + case NonSemanticShaderDebugInfo100DebugTypeTemplateTemplateParameter: return "DebugTypeTemplateTemplateParameter"; + case NonSemanticShaderDebugInfo100DebugTypeTemplateParameterPack: return "DebugTypeTemplateParameterPack"; + case NonSemanticShaderDebugInfo100DebugGlobalVariable: return "DebugGlobalVariable"; + case NonSemanticShaderDebugInfo100DebugFunctionDeclaration: return "DebugFunctionDeclaration"; + case NonSemanticShaderDebugInfo100DebugFunction: return "DebugFunction"; + case NonSemanticShaderDebugInfo100DebugLexicalBlock: return "DebugLexicalBlock"; + case NonSemanticShaderDebugInfo100DebugLexicalBlockDiscriminator: return "DebugLexicalBlockDiscriminator"; + case NonSemanticShaderDebugInfo100DebugScope: return "DebugScope"; + case NonSemanticShaderDebugInfo100DebugNoScope: return "DebugNoScope"; + case NonSemanticShaderDebugInfo100DebugInlinedAt: return "DebugInlinedAt"; + case NonSemanticShaderDebugInfo100DebugLocalVariable: return "DebugLocalVariable"; + case NonSemanticShaderDebugInfo100DebugInlinedVariable: return "DebugInlinedVariable"; + case NonSemanticShaderDebugInfo100DebugDeclare: return "DebugDeclare"; + case NonSemanticShaderDebugInfo100DebugValue: return "DebugValue"; + case NonSemanticShaderDebugInfo100DebugOperation: return "DebugOperation"; + case NonSemanticShaderDebugInfo100DebugExpression: return "DebugExpression"; + case NonSemanticShaderDebugInfo100DebugMacroDef: return "DebugMacroDef"; + case NonSemanticShaderDebugInfo100DebugMacroUndef: return "DebugMacroUndef"; + case NonSemanticShaderDebugInfo100DebugImportedEntity: return "DebugImportedEntity"; + case NonSemanticShaderDebugInfo100DebugSource: return "DebugSource"; + case NonSemanticShaderDebugInfo100DebugFunctionDefinition: return "DebugFunctionDefinition"; + case NonSemanticShaderDebugInfo100DebugSourceContinued: return "DebugSourceContinued"; + case NonSemanticShaderDebugInfo100DebugLine: return "DebugLine"; + case NonSemanticShaderDebugInfo100DebugNoLine: return "DebugNoLine"; + case NonSemanticShaderDebugInfo100DebugBuildIdentifier: return "DebugBuildIdentifier"; + case NonSemanticShaderDebugInfo100DebugStoragePath: return "DebugStoragePath"; + case NonSemanticShaderDebugInfo100DebugEntryPoint: return "DebugEntryPoint"; + case NonSemanticShaderDebugInfo100DebugTypeMatrix: return "DebugTypeMatrix"; + default: return "Bad"; + } + + return "Bad"; +} + void Disassemble(std::ostream& out, const std::vector& stream) { SpirvStream SpirvStream(out, stream); diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index c0c5cd2259..a315f6de5b 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -32,38 +32,38 @@ Validation failed 9: 6(int) Constant 32 10: 6(int) Constant 6 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 19: 6(int) Constant 1 20: 6(int) Constant 4 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 26: TypeVector 23(float) 2 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 21 28: TypeVector 23(float) 3 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 30: TypeVector 23(float) 4 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 32: TypeFunction 3 23(float) 26(fvec2) 28(fvec3) 30(fvec4) - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 25 27 29 31 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 39 33 16 11 11 18 39 12 11 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 45 25 16 11 11 40 20 19 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 27 16 11 11 40 20 21 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 52 29 16 11 11 40 20 12 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 55 31 16 11 11 40 20 20 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 25 27 29 31 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 33 16 11 11 18 39 12 11 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 25 16 11 11 40 20 19 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 27 16 11 11 40 20 21 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 29 16 11 11 40 20 12 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 31 16 11 11 40 20 20 59: 23(float) Constant 0 60: 26(fvec2) ConstantComposite 59 59 61: 28(fvec3) ConstantComposite 59 59 59 62: 30(fvec4) ConstantComposite 59 59 59 59 13(main): 3 Function None 4 22: Label - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) 63: 3 FunctionCall 38(function(f1;vf2;vf3;vf4;) 59 60 61 62 Return FunctionEnd @@ -73,12 +73,12 @@ Validation failed 36(f3): 28(fvec3) FunctionParameter 37(f4): 30(fvec4) FunctionParameter 41: Label - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 40 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 44 34(f) 47 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 35(f2) 47 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 36(f3) 47 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 54 37(f4) 47 - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(function(f1;vf2;vf3;vf4;) + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 34(f) 47 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 35(f2) 47 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 36(f3) 47 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 54 37(f4) 47 + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 38(function(f1;vf2;vf3;vf4;) Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 9e464501e5..820d12b8e9 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -157,168 +157,168 @@ Validation failed 9: 6(int) Constant 32 10: 6(int) Constant 6 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 19: 6(int) Constant 1 20: 6(int) Constant 4 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 26: TypeVector 23(float) 3 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 28: TypePointer Function 26(fvec3) 29: TypePointer Function 23(float) 30: TypeFunction 26(fvec3) 28(ptr) 28(ptr) 29(ptr) - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 27 27 27 25 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 36 31 16 11 11 18 36 12 11 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 42 27 16 11 11 37 20 19 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 46 27 16 11 11 37 20 21 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 37 20 12 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 27 27 27 25 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 36 31 16 11 11 18 36 12 11 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 27 16 11 11 37 20 19 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 27 16 11 11 37 20 21 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 25 16 11 11 37 20 12 55: 6(int) Constant 68 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 54 27 16 55 11 37 20 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 27 16 55 11 37 20 62: TypeVector 23(float) 4 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 64: TypeInt 32 1 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 65 9 20 11 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 65 9 20 11 67: TypeVector 64(int) 2 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 66 21 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 66 21 69(UBO): TypeStruct 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 62(fvec4) 62(fvec4) 67(ivec2) 72: 6(int) Constant 56 73: 6(int) Constant 8 - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 - 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 - 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 71 25 16 72 73 11 11 12 + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 + 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 + 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 83: 6(int) Constant 58 84: 6(int) Constant 7 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 63 16 83 84 11 11 12 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 82 63 16 83 84 11 11 12 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 63 16 83 84 11 11 12 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 63 16 83 84 11 11 12 88: 6(int) Constant 59 - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 87 68 16 88 73 11 11 12 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 68 16 88 73 11 11 12 91: 6(int) Constant 69 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 90 19 16 91 11 18 90 11 12 70 74 75 76 77 78 79 80 81 85 86 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 19 16 91 11 18 90 11 12 70 74 75 76 77 78 79 80 81 85 86 92: TypePointer Uniform 69(UBO) 93(params): 92(ptr) Variable Uniform - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 95 89 16 91 11 18 95 93(params) 73 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 89 16 91 11 18 95 93(params) 73 96: 64(int) Constant 2 97: TypePointer Uniform 23(float) 109: TypeVector 6(int) 3 - 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 7 12 + 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 7 12 111: TypePointer Function 109(ivec3) 115: 6(int) Constant 74 - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 114 110 16 115 11 15 20 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 110 16 115 11 15 20 117: TypePointer Input 109(ivec3) 118(gl_GlobalInvocationID): 117(ptr) Variable Input - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 120 110 16 115 11 18 120 118(gl_GlobalInvocationID) 73 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 120 110 16 115 11 18 120 118(gl_GlobalInvocationID) 73 122: TypePointer Function 6(int) 126: 6(int) Constant 76 - 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 7 16 126 11 15 20 + 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 7 16 126 11 15 20 130: 64(int) Constant 10 131: TypePointer Uniform 64(int) 146: TypeBool - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 153(Particle): TypeStruct 62(fvec4) 62(fvec4) 62(fvec4) 62(fvec4) 23(float) 156: 6(int) Constant 31 - 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 - 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 155 63 16 156 84 11 11 12 - 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 161 25 16 9 73 11 11 12 + 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 + 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 + 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 25 16 9 73 11 11 12 164: 6(int) Constant 81 - 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 163 19 16 164 11 18 163 11 12 154 157 158 159 160 + 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 19 16 164 11 18 163 11 12 154 157 158 159 160 165: TypeRuntimeArray 153(Particle) - 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 162 11 + 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 162 11 167(ParticleIn): TypeStruct 165 170: 6(int) Constant 36 171: 6(int) Constant 11 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 169 166 16 170 171 11 11 12 - 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 173 19 16 164 11 18 173 11 12 168 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 169 166 16 170 171 11 11 12 + 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 19 16 164 11 18 173 11 12 168 174: TypePointer Uniform 167(ParticleIn) 175: 174(ptr) Variable Uniform - 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 172 16 164 11 18 17 175 73 + 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 172 16 164 11 18 17 175 73 177: 64(int) Constant 0 179: 64(int) Constant 4 182: 23(float) Constant 1065353216 - 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 187: TypeRuntimeArray 153(Particle) - 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 162 11 + 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 162 11 189(ParticleOut): TypeStruct 187 192: 6(int) Constant 40 - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 191 188 16 192 171 11 11 12 + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 188 16 192 171 11 11 12 195: 6(int) Constant 82 - 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 194 19 16 195 11 18 194 11 12 190 + 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 194 19 16 195 11 18 194 11 12 190 196: TypePointer Uniform 189(ParticleOut) 197: 196(ptr) Variable Uniform - 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 193 16 195 11 18 17 197 73 + 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 193 16 195 11 18 17 197 73 201: TypePointer Uniform 62(fvec4) 206: 64(int) Constant 1 207: 23(float) Constant 0 208: 62(fvec4) ConstantComposite 207 207 207 207 214: 6(int) Constant 88 - 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 213 27 16 214 11 15 20 + 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 213 27 16 214 11 15 20 216: 64(int) Constant 9 226: 6(int) Constant 90 - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 225 27 16 226 11 15 20 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 27 16 226 11 15 20 235: 6(int) Constant 91 - 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 27 16 235 11 15 20 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 267: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 27 16 235 11 15 20 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 267: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 300: 64(int) Constant 5 - 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 359: 64(int) Constant 6 - 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 477: 64(int) Constant 3 488: 6(int) Constant 130 - 486: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 487 27 16 488 11 15 20 + 486: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 487 27 16 488 11 15 20 502: 23(float) Constant 1056964608 532: 6(int) Constant 135 - 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 531 27 16 532 11 15 20 + 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 531 27 16 532 11 15 20 538: 64(int) Constant 8 545: 64(int) Constant 7 548: 23(float) Constant 1008981770 - 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 573(PushConsts): TypeStruct 6(int) 576: 6(int) Constant 63 - 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 575 7 16 576 84 11 11 12 + 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 575 7 16 576 84 11 11 12 579: 6(int) Constant 144 - 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 578 19 16 579 11 18 578 11 12 574 + 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 578 19 16 579 11 18 578 11 12 574 580: TypePointer PushConstant 573(PushConsts) 581(pushConsts): 580(ptr) Variable PushConstant - 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 583 577 16 579 11 18 583 581(pushConsts) 73 + 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 583 577 16 579 11 18 583 581(pushConsts) 73 584: TypePointer PushConstant 6(int) - 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 593: 6(int) Constant 145 - 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 27 16 593 11 15 20 + 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 27 16 593 11 15 20 595: 26(fvec3) ConstantComposite 207 207 207 - 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 611: 6(int) Constant 149 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 27 16 611 11 15 20 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 610 27 16 611 11 15 20 623: 6(int) Constant 150 - 621: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 622 27 16 623 11 15 20 + 621: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 622 27 16 623 11 15 20 639: 6(int) Constant 151 - 637: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 638 27 16 639 11 15 20 - 666: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 713: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 719: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 - 766: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 147 9 21 11 + 637: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 638 27 16 639 11 15 20 + 666: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 713: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 719: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 + 766: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 815: 6(int) Constant 10 816: 109(ivec3) ConstantComposite 815 815 19 13(main): 3 Function None 4 @@ -358,11 +358,11 @@ Validation failed 608(a): 28(ptr) Variable Function 620(b): 28(ptr) Variable Function 636(c): 28(ptr) Variable Function - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 113 112(id) 44 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) + 116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(id) 44 121: 109(ivec3) Load 118(gl_GlobalInvocationID) Store 112(id) 121 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 124 123(index) 44 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(index) 44 128: 122(ptr) AccessChain 112(id) 19 129: 6(int) Load 128 132: 131(ptr) AccessChain 93(params) 130 11 @@ -404,7 +404,7 @@ Validation failed Store 209 208 Return 186: Label - 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 212 211(force) 44 + 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 212 211(force) 44 217: 201(ptr) AccessChain 93(params) 216 218: 62(fvec4) Load 217 219: 26(fvec3) VectorShuffle 218 218 0 1 2 @@ -412,13 +412,13 @@ Validation failed 221: 23(float) Load 220 222: 26(fvec3) VectorTimesScalar 219 221 Store 211(force) 222 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 224 223(pos) 44 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(pos) 44 228: 6(int) Load 123(index) 229: 201(ptr) AccessChain 175 177 228 177 230: 62(fvec4) Load 229 231: 26(fvec3) VectorShuffle 230 230 0 1 2 Store 223(pos) 231 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(vel) 44 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(vel) 44 237: 6(int) Load 123(index) 238: 201(ptr) AccessChain 175 177 237 206 239: 62(fvec4) Load 238 @@ -698,7 +698,7 @@ Validation failed 483: 26(fvec3) Load 211(force) 484: 26(fvec3) FAdd 483 482 Store 211(force) 484 - 489: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 486 485(f) 44 + 489: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 486 485(f) 44 490: 26(fvec3) Load 211(force) 491: 97(ptr) AccessChain 93(params) 206 492: 23(float) Load 491 @@ -740,7 +740,7 @@ Validation failed 527: 62(fvec4) CompositeConstruct 524 525 526 207 528: 201(ptr) AccessChain 197 177 517 206 Store 528 527 - 533: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 530 529(sphereDist) 44 + 533: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 530 529(sphereDist) 44 534: 6(int) Load 123(index) 535: 201(ptr) AccessChain 197 177 534 177 536: 62(fvec4) Load 535 @@ -790,7 +790,7 @@ Validation failed SelectionMerge 590 None BranchConditional 588 589 590 589: Label - 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 592 591(normal) 44 + 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 592 591(normal) 44 Store 591(normal) 595 596: 122(ptr) AccessChain 112(id) 19 597: 6(int) Load 596 @@ -804,7 +804,7 @@ Validation failed SelectionMerge 607 None BranchConditional 605 606 607 606: Label - 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(a) 44 + 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 609 608(a) 44 613: 6(int) Load 123(index) 614: 6(int) ISub 613 19 615: 201(ptr) AccessChain 175 177 614 177 @@ -813,7 +813,7 @@ Validation failed 618: 26(fvec3) Load 223(pos) 619: 26(fvec3) FSub 617 618 Store 608(a) 619 - 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 621 620(b) 44 + 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 621 620(b) 44 625: 6(int) Load 123(index) 626: 131(ptr) AccessChain 93(params) 130 11 627: 64(int) Load 626 @@ -826,7 +826,7 @@ Validation failed 634: 26(fvec3) Load 223(pos) 635: 26(fvec3) FSub 633 634 Store 620(b) 635 - 640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 637 636(c) 44 + 640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 637 636(c) 44 641: 6(int) Load 123(index) 642: 131(ptr) AccessChain 93(params) 130 11 643: 64(int) Load 642 @@ -1038,13 +1038,13 @@ Validation failed 34(restDist): 29(ptr) FunctionParameter 38: Label 52(dist): 28(ptr) Variable Function - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 37 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 41 32(p0) 44 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 45 33(p1) 44 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 34(restDist) 44 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 37 35(springForce(vf3;vf3;f1;) - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 53 52(dist) 44 + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 37 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 32(p0) 44 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 33(p1) 44 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 34(restDist) 44 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 37 35(springForce(vf3;vf3;f1;) + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 53 52(dist) 44 57: 26(fvec3) Load 32(p0) 58: 26(fvec3) Load 33(p1) 59: 26(fvec3) FSub 57 58 diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 22b1731431..ffe3275158 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -178,208 +178,208 @@ Validation failed 9: 6(int) Constant 32 10: 6(int) Constant 6 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 19: 6(int) Constant 1 20: 6(int) Constant 4 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 26: TypeVector 23(float) 4 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 28: TypePointer Function 26(fvec4) 29: TypePointer Function 23(float) 30: TypeVector 23(float) 2 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 21 32: TypePointer Function 30(fvec2) 33: TypeFunction 23(float) 28(ptr) 29(ptr) 32(ptr) - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25 31 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 39 34 16 11 11 18 39 12 11 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 45 27 16 11 11 40 20 19 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 40 20 21 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 52 31 16 11 11 40 20 12 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 25 27 25 31 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 34 16 11 11 18 39 12 11 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 27 16 11 11 40 20 19 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 25 16 11 11 40 20 21 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 31 16 11 11 40 20 12 54: TypeFunction 23(float) 28(ptr) 29(ptr) - 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 25 - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 59 55 16 11 11 18 59 12 11 - 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 65 27 16 11 11 60 20 19 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 49 25 16 11 11 60 20 21 + 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 25 27 25 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 59 55 16 11 11 18 59 12 11 + 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 27 16 11 11 60 20 19 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 25 16 11 11 60 20 21 69: TypeVector 23(float) 3 - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 71: TypePointer Function 69(fvec3) 72: TypeFunction 69(fvec3) 71(ptr) 71(ptr) - 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 70 70 70 - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 77 73 16 11 11 18 77 12 11 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 11 11 78 20 19 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 86 70 16 11 11 78 20 21 + 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 70 70 70 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 77 73 16 11 11 18 77 12 11 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 70 16 11 11 78 20 19 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 86 70 16 11 11 78 20 21 91: 6(int) Constant 59 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 25 16 91 11 40 20 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 25 16 91 11 40 20 93: 23(float) Constant 1065353216 97: 6(int) Constant 60 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 27 16 97 11 40 20 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 27 16 97 11 40 20 106: 23(float) Constant 1056964608 114: TypeBool 117: 23(float) Constant 3212836864 - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 133: 6(int) Constant 65 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 133 11 40 20 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 132 25 16 133 11 40 20 135: TypeImage 23(float) 2D array sampled format:Unknown - 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 137 11 16 133 11 18 138 139 12 + 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 137 11 16 133 11 18 138 139 12 140: TypeSampledImage 135 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 11 16 133 11 18 143 139 12 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 11 16 133 11 18 143 139 12 144: TypePointer UniformConstant 140 145(samplerShadowMap): 144(ptr) Variable UniformConstant 148: 6(int) Constant 8 - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 147 141 16 133 11 18 147 145(samplerShadowMap) 148 + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 147 141 16 133 11 18 147 145(samplerShadowMap) 148 162: 23(float) Constant 0 - 163: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 - 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 163: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 + 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 175: 23(float) Constant 1048576000 180: TypeInt 32 1 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 181 9 20 11 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 181 9 20 11 183: TypeVector 180(int) 2 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 182 21 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 182 21 185: TypePointer Function 183(ivec2) 189: 6(int) Constant 76 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 188 184 16 189 11 60 20 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 188 184 16 189 11 60 20 192: 180(int) Constant 0 194: TypeVector 180(int) 3 - 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 182 12 + 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 182 12 201: 6(int) Constant 77 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 200 25 16 201 11 60 20 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 25 16 201 11 60 20 203: 23(float) Constant 1069547520 207: 6(int) Constant 78 - 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 206 25 16 207 11 60 20 + 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 206 25 16 207 11 60 20 211: TypePointer Function 180(int) 219: 6(int) Constant 79 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 218 25 16 219 11 60 20 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 218 25 16 219 11 60 20 230: 6(int) Constant 81 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 25 16 230 11 60 20 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 25 16 230 11 60 20 235: 6(int) Constant 82 - 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 182 16 235 11 60 20 + 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 182 16 235 11 60 20 240: 6(int) Constant 83 - 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 239 182 16 240 11 60 20 + 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 239 182 16 240 11 60 20 242: 180(int) Constant 1 246: 6(int) Constant 85 - 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 245 182 16 246 11 60 20 - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 182 16 246 11 60 20 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 262: 6(int) Constant 87 - 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 182 16 262 11 60 20 - 273: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 182 16 262 11 60 20 + 273: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 308: 6(int) Constant 98 - 306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 307 182 16 308 11 78 20 + 306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 182 16 308 11 78 20 316: 180(int) Constant 3 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 322: 6(int) Constant 100 - 320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 321 27 16 322 11 78 20 + 320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 321 27 16 322 11 78 20 324: TypeMatrix 26(fvec4) 4 326: 114(bool) ConstantTrue - 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 326 + 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 27 20 326 327(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 324 330: 6(int) Constant 45 331: 6(int) Constant 7 - 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 - 332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 - 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 + 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 + 332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 + 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 336: 6(int) Constant 46 - 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 335 325 16 336 331 11 11 12 - 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 338 19 16 322 11 18 338 11 12 328 332 333 334 + 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 335 325 16 336 331 11 11 12 + 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 338 19 16 322 11 18 338 11 12 328 332 333 334 339: TypeArray 327(Light) 12 - 340: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 337 12 + 340: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 337 12 341(UBO): TypeStruct 26(fvec4) 339 180(int) 180(int) - 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 329 27 16 330 331 11 11 12 + 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 345: 6(int) Constant 52 - 343: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 344 340 16 345 148 11 11 12 + 343: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 344 340 16 345 148 11 11 12 348: 6(int) Constant 54 - 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 347 182 16 348 10 11 11 12 - 349: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 347 182 16 348 10 11 11 12 - 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 351 19 16 322 11 18 351 11 12 342 343 346 349 + 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 182 16 348 10 11 11 12 + 349: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 182 16 348 10 11 11 12 + 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 351 19 16 322 11 18 351 11 12 342 343 346 349 352: TypePointer Uniform 341(UBO) 353(ubo): 352(ptr) Variable Uniform - 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 355 350 16 322 11 18 355 353(ubo) 148 + 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 350 16 322 11 18 355 353(ubo) 148 357: TypePointer Uniform 324 368: 6(int) Constant 104 - 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 25 16 368 11 78 20 + 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 25 16 368 11 78 20 388: 6(int) Constant 117 - 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 387 70 16 388 11 15 20 + 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 387 70 16 388 11 15 20 390: TypeImage 23(float) 2D sampled format:Unknown - 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 137 11 16 388 11 18 138 139 12 + 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 137 11 16 388 11 18 138 139 12 392: TypeSampledImage 390 - 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 11 16 388 11 18 143 139 12 + 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 11 16 388 11 18 143 139 12 394: TypePointer UniformConstant 392 395(samplerposition): 394(ptr) Variable UniformConstant - 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 397 393 16 388 11 18 397 395(samplerposition) 148 + 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 397 393 16 388 11 18 397 395(samplerposition) 148 399: TypePointer Input 30(fvec2) 400(inUV): 399(ptr) Variable Input - 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 402 31 16 388 11 18 402 400(inUV) 148 + 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 402 31 16 388 11 18 402 400(inUV) 148 409: 6(int) Constant 118 - 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 408 70 16 409 11 15 20 + 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 408 70 16 409 11 15 20 411(samplerNormal): 394(ptr) Variable UniformConstant - 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 413 393 16 409 11 18 413 411(samplerNormal) 148 + 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 413 393 16 409 11 18 413 411(samplerNormal) 148 421: 6(int) Constant 119 - 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 420 27 16 421 11 15 20 + 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 420 27 16 421 11 15 20 423(samplerAlbedo): 394(ptr) Variable UniformConstant - 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 425 393 16 421 11 18 425 423(samplerAlbedo) 148 + 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 425 393 16 421 11 18 425 423(samplerAlbedo) 148 429: TypePointer Uniform 180(int) - 432: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 432: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 444: TypePointer Output 26(fvec4) 445(outFragColor): 444(ptr) Variable Output 448: 6(int) Constant 125 - 446: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 447 27 16 448 11 18 447 445(outFragColor) 148 + 446: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 447 27 16 448 11 18 447 445(outFragColor) 148 449: 69(fvec3) ConstantComposite 93 93 93 454: TypePointer Output 23(float) 501: 6(int) Constant 145 - 500: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 83 70 16 501 11 15 20 + 500: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 70 16 501 11 15 20 505: 23(float) Constant 1036831949 510: 6(int) Constant 147 - 508: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 509 70 16 510 11 15 20 + 508: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 509 70 16 510 11 15 20 516: 6(int) Constant 149 - 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 307 182 16 516 11 15 20 - 524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 182 16 516 11 15 20 + 524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 529: 6(int) Constant 152 - 527: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 528 70 16 529 11 15 20 + 527: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 528 70 16 529 11 15 20 532: TypePointer Uniform 26(fvec4) 540: 6(int) Constant 154 - 539: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 132 25 16 540 11 15 20 + 539: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 132 25 16 540 11 15 20 549: 6(int) Constant 158 - 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 548 70 16 549 11 15 20 + 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 548 70 16 549 11 15 20 561: 6(int) Constant 161 - 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 560 25 16 561 11 15 20 + 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 560 25 16 561 11 15 20 563: 23(float) Constant 1064781546 567: 6(int) Constant 162 - 565: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 566 25 16 567 11 15 20 + 565: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 566 25 16 567 11 15 20 569: 23(float) Constant 1063781322 573: 6(int) Constant 163 - 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 572 25 16 573 11 15 20 + 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 572 25 16 573 11 15 20 575: 23(float) Constant 1120403456 579: 6(int) Constant 166 - 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 578 70 16 579 11 15 20 + 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 578 70 16 579 11 15 20 594: 6(int) Constant 169 - 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 593 25 16 594 11 15 20 + 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 593 25 16 594 11 15 20 602: 6(int) Constant 170 - 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 601 25 16 602 11 15 20 + 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 601 25 16 602 11 15 20 611: 6(int) Constant 171 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 25 16 611 11 15 20 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 610 25 16 611 11 15 20 619: 6(int) Constant 174 - 617: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 618 25 16 619 11 15 20 + 617: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 618 25 16 619 11 15 20 628: 6(int) Constant 175 - 626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 627 70 16 628 11 15 20 + 626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 627 70 16 628 11 15 20 635: 6(int) Constant 178 - 633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 634 70 16 635 11 15 20 + 633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 634 70 16 635 11 15 20 644: 6(int) Constant 179 - 642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 643 25 16 644 11 15 20 + 642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 643 25 16 644 11 15 20 653: 6(int) Constant 180 - 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 652 70 16 653 11 15 20 + 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 652 70 16 653 11 15 20 656: 23(float) Constant 1098907648 661: 23(float) Constant 1075838976 676: 180(int) Constant 2 - 690: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 118 9 21 11 + 690: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 13(main): 3 Function None 4 22: Label 385(fragPos): 71(ptr) Variable Function @@ -407,20 +407,20 @@ Validation failed 650(spec): 71(ptr) Variable Function 694(param): 71(ptr) Variable Function 696(param): 71(ptr) Variable Function - 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 386 385(fragPos) 47 + 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) + 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 386 385(fragPos) 47 398: 392 Load 395(samplerposition) 403: 30(fvec2) Load 400(inUV) 404: 26(fvec4) ImageSampleImplicitLod 398 403 405: 69(fvec3) VectorShuffle 404 404 0 1 2 Store 385(fragPos) 405 - 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 407 406(normal) 47 + 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 407 406(normal) 47 414: 392 Load 411(samplerNormal) 415: 30(fvec2) Load 400(inUV) 416: 26(fvec4) ImageSampleImplicitLod 414 415 417: 69(fvec3) VectorShuffle 416 416 0 1 2 Store 406(normal) 417 - 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 419 418(albedo) 47 + 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 419 418(albedo) 47 426: 392 Load 423(samplerAlbedo) 427: 30(fvec2) Load 400(inUV) 428: 26(fvec4) ImageSampleImplicitLod 426 427 @@ -510,16 +510,16 @@ Validation failed Store 497 93 Return 435: Label - 502: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 500 499(fragcolor) 47 + 502: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 500 499(fragcolor) 47 503: 26(fvec4) Load 418(albedo) 504: 69(fvec3) VectorShuffle 503 503 0 1 2 506: 69(fvec3) VectorTimesScalar 504 505 Store 499(fragcolor) 506 - 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 508 507(N) 47 + 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 508 507(N) 47 512: 69(fvec3) Load 406(normal) 513: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 512 Store 507(N) 513 - 517: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 515 514(i) 47 + 517: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 515 514(i) 47 Store 514(i) 192 Branch 518 518: Label @@ -530,7 +530,7 @@ Validation failed 525: 114(bool) SLessThan 523 316 BranchConditional 525 519 520 519: Label - 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 527 526(L) 47 + 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 527 526(L) 47 531: 180(int) Load 514(i) 533: 532(ptr) AccessChain 353(ubo) 242 531 192 534: 26(fvec4) Load 533 @@ -538,14 +538,14 @@ Validation failed 536: 69(fvec3) Load 385(fragPos) 537: 69(fvec3) FSub 535 536 Store 526(L) 537 - 541: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 539 538(dist) 47 + 541: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 539 538(dist) 47 542: 69(fvec3) Load 526(L) 543: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 542 Store 538(dist) 543 544: 69(fvec3) Load 526(L) 545: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544 Store 526(L) 545 - 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 547 546(V) 47 + 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 547 546(V) 47 551: 532(ptr) AccessChain 353(ubo) 192 552: 26(fvec4) Load 551 553: 69(fvec3) VectorShuffle 552 552 0 1 2 @@ -555,13 +555,13 @@ Validation failed 556: 69(fvec3) Load 546(V) 557: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 556 Store 546(V) 557 - 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 559 558(lightCosInnerAngle) 47 + 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 559 558(lightCosInnerAngle) 47 Store 558(lightCosInnerAngle) 563 - 568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 565 564(lightCosOuterAngle) 47 + 568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 565 564(lightCosOuterAngle) 47 Store 564(lightCosOuterAngle) 569 - 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 571 570(lightRange) 47 + 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 571 570(lightRange) 47 Store 570(lightRange) 575 - 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 577 576(dir) 47 + 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 577 576(dir) 47 581: 180(int) Load 514(i) 582: 532(ptr) AccessChain 353(ubo) 242 581 192 583: 26(fvec4) Load 582 @@ -573,45 +573,45 @@ Validation failed 589: 69(fvec3) FSub 584 588 590: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 589 Store 576(dir) 590 - 595: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 592 591(cosDir) 47 + 595: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 592 591(cosDir) 47 596: 69(fvec3) Load 526(L) 597: 69(fvec3) Load 576(dir) 598: 23(float) Dot 596 597 Store 591(cosDir) 598 - 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 600 599(spotEffect) 47 + 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 600 599(spotEffect) 47 604: 23(float) Load 564(lightCosOuterAngle) 605: 23(float) Load 558(lightCosInnerAngle) 606: 23(float) Load 591(cosDir) 607: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 604 605 606 Store 599(spotEffect) 607 - 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(heightAttenuation) 47 + 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 609 608(heightAttenuation) 47 613: 23(float) Load 570(lightRange) 614: 23(float) Load 538(dist) 615: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 613 162 614 Store 608(heightAttenuation) 615 - 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 617 616(NdotL) 47 + 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 617 616(NdotL) 47 621: 69(fvec3) Load 507(N) 622: 69(fvec3) Load 526(L) 623: 23(float) Dot 621 622 624: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 623 Store 616(NdotL) 624 - 629: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 626 625(diff) 47 + 629: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 626 625(diff) 47 630: 23(float) Load 616(NdotL) 631: 69(fvec3) CompositeConstruct 630 630 630 Store 625(diff) 631 - 636: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 633 632(R) 47 + 636: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 633 632(R) 47 637: 69(fvec3) Load 526(L) 638: 69(fvec3) FNegate 637 639: 69(fvec3) Load 507(N) 640: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 638 639 Store 632(R) 640 - 645: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 642 641(NdotR) 47 + 645: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 642 641(NdotR) 47 646: 69(fvec3) Load 632(R) 647: 69(fvec3) Load 546(V) 648: 23(float) Dot 646 647 649: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 648 Store 641(NdotR) 649 - 654: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 651 650(spec) 47 + 654: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 651 650(spec) 47 655: 23(float) Load 641(NdotR) 657: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 655 656 658: 29(ptr) AccessChain 418(albedo) 12 @@ -679,15 +679,15 @@ Validation failed 89(shadow): 29(ptr) Variable Function 94(shadowCoord): 28(ptr) Variable Function 130(dist): 29(ptr) Variable Function - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 40 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 44 35(P) 47 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 48 36(layer) 47 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 51 37(offset) 47 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 40 38(textureProj(vf4;f1;vf2;) - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 90 89(shadow) 47 + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 35(P) 47 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 36(layer) 47 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 37(offset) 47 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 38(textureProj(vf4;f1;vf2;) + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 89(shadow) 47 Store 89(shadow) 93 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 95 94(shadowCoord) 47 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 94(shadowCoord) 47 99: 26(fvec4) Load 35(P) 100: 29(ptr) AccessChain 35(P) 12 101: 23(float) Load 100 @@ -720,7 +720,7 @@ Validation failed SelectionMerge 129 None BranchConditional 127 128 129 128: Label - 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 130(dist) 47 + 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 131 130(dist) 47 149: 140 Load 145(samplerShadowMap) 150: 26(fvec4) Load 94(shadowCoord) 151: 30(fvec2) VectorShuffle 150 150 0 1 @@ -773,20 +773,20 @@ Validation failed 284(param): 28(ptr) Variable Function 286(param): 29(ptr) Variable Function 288(param): 32(ptr) Variable Function - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 60 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 64 56(sc) 47 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 67 57(layer) 47 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 60 58(filterPCF(vf4;f1;) - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 187 186(texDim) 47 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 56(sc) 47 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 57(layer) 47 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 60 58(filterPCF(vf4;f1;) + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 187 186(texDim) 47 191: 140 Load 145(samplerShadowMap) 193: 135 Image 191 196: 194(ivec3) ImageQuerySizeLod 193 192 197: 183(ivec2) VectorShuffle 196 196 0 1 Store 186(texDim) 197 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 199 198(scale) 47 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(scale) 47 Store 198(scale) 203 - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 205 204(dx) 47 + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 205 204(dx) 47 209: 23(float) Load 198(scale) 210: 23(float) FMul 209 93 212: 211(ptr) AccessChain 186(texDim) 11 @@ -794,7 +794,7 @@ Validation failed 214: 23(float) ConvertSToF 213 215: 23(float) FDiv 210 214 Store 204(dx) 215 - 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 217 216(dy) 47 + 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 217 216(dy) 47 221: 23(float) Load 198(scale) 222: 23(float) FMul 221 93 223: 211(ptr) AccessChain 186(texDim) 19 @@ -802,13 +802,13 @@ Validation failed 225: 23(float) ConvertSToF 224 226: 23(float) FDiv 222 225 Store 216(dy) 226 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 228 227(shadowFactor) 47 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(shadowFactor) 47 Store 227(shadowFactor) 162 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(count) 47 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(count) 47 Store 232(count) 192 - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 238 237(range) 47 + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 238 237(range) 47 Store 237(range) 242 - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 244 243(x) 47 + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(x) 47 248: 180(int) Load 237(range) 249: 180(int) SNegate 248 Store 243(x) 249 @@ -822,7 +822,7 @@ Validation failed 258: 114(bool) SLessThanEqual 255 256 BranchConditional 258 251 252 251: Label - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 260 259(y) 47 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(y) 47 264: 180(int) Load 237(range) 265: 180(int) SNegate 264 Store 259(y) 265 @@ -886,12 +886,12 @@ Validation failed 366(shadowFactor): 29(ptr) Variable Function 372(param): 28(ptr) Variable Function 374(param): 29(ptr) Variable Function - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 78 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 - 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 82 74(fragcolor) 47 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 85 75(fragpos) 47 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 78 76(shadow(vf3;vf3;) - 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 306 305(i) 47 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 + 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 74(fragcolor) 47 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 75(fragpos) 47 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 78 76(shadow(vf3;vf3;) + 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 306 305(i) 47 Store 305(i) 192 Branch 310 310: Label @@ -902,7 +902,7 @@ Validation failed 318: 114(bool) SLessThan 315 316 BranchConditional 318 311 312 311: Label - 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 320 319(shadowClip) 47 + 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 320 319(shadowClip) 47 356: 180(int) Load 305(i) 358: 357(ptr) AccessChain 353(ubo) 242 356 316 359: 324 Load 358 @@ -913,7 +913,7 @@ Validation failed 364: 26(fvec4) CompositeConstruct 361 362 363 93 365: 26(fvec4) MatrixTimesVector 359 364 Store 319(shadowClip) 365 - 369: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 367 366(shadowFactor) 47 + 369: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 367 366(shadowFactor) 47 370: 180(int) Load 305(i) 371: 23(float) ConvertSToF 370 373: 26(fvec4) Load 319(shadowClip) diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 07f8f52084..e3ffd38ec5 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -116,136 +116,136 @@ Validation failed 9: 6(int) Constant 32 10: 6(int) Constant 6 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 19: 6(int) Constant 1 20: 6(int) Constant 4 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 24: TypeInt 32 1 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 20 11 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 9 20 11 27: TypePointer Function 24(int) 31: 6(int) Constant 49 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 30 26 16 31 11 15 20 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 30 26 16 31 11 15 20 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 34: 24(int) Constant 0 41: 24(int) Constant 3 42: TypeBool - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 43 9 21 11 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 43 9 21 11 46: TypeFloat 32 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 12 11 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 12 11 49: TypeVector 46(float) 3 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 12 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 48 12 51: TypePointer Output 49(fvec3) 52(outNormal): 51(ptr) Variable Output 55: 6(int) Constant 51 56: 6(int) Constant 8 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 54 50 16 55 11 18 54 52(outNormal) 56 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 54 50 16 55 11 18 54 52(outNormal) 56 57: TypeVector 46(float) 4 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 48 20 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 48 20 59: TypeMatrix 57(fvec4) 4 61: 42(bool) ConstantTrue - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 58 20 61 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 58 20 61 62: TypeArray 59 21 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 60 21 64: TypeArray 59 21 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 60 21 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 60 21 66(UBO): TypeStruct 62 64 57(fvec4) 69: 6(int) Constant 34 70: 6(int) Constant 7 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 68 63 16 69 70 11 11 12 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 63 16 69 70 11 11 12 73: 6(int) Constant 35 - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 72 65 16 73 70 11 11 12 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 65 16 73 70 11 11 12 76: 6(int) Constant 36 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 75 58 16 76 70 11 11 12 - 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 78 19 16 55 11 18 78 11 12 67 71 74 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 75 58 16 76 70 11 11 12 + 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 78 19 16 55 11 18 78 11 12 67 71 74 79: TypePointer Uniform 66(UBO) 80(ubo): 79(ptr) Variable Uniform - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 77 16 55 11 18 82 80(ubo) 56 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 82 77 16 55 11 18 82 80(ubo) 56 83: 24(int) Constant 1 84: TypePointer Input 24(int) 85(gl_InvocationID): 84(ptr) Variable Input - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 87 26 16 55 11 18 87 85(gl_InvocationID) 56 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 87 26 16 55 11 18 87 85(gl_InvocationID) 56 89: TypePointer Uniform 59 92: TypeMatrix 49(fvec3) 3 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 50 12 61 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 50 12 61 101: TypeArray 49(fvec3) 12 - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 50 12 + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 50 12 103: TypePointer Input 101 104(inNormal): 103(ptr) Variable Input - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 106 102 16 55 11 18 106 104(inNormal) 56 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 106 102 16 55 11 18 106 104(inNormal) 56 108: TypePointer Input 49(fvec3) 112(outColor): 51(ptr) Variable Output 115: 6(int) Constant 52 - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 114 50 16 115 11 18 114 112(outColor) 56 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 50 16 115 11 18 114 112(outColor) 56 116(inColor): 103(ptr) Variable Input - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 118 102 16 115 11 18 118 116(inColor) 56 + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 118 102 16 115 11 18 118 116(inColor) 56 122: TypePointer Function 57(fvec4) 126: 6(int) Constant 54 - 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 125 58 16 126 11 15 20 + 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 58 16 126 11 15 20 128: TypeArray 46(float) 19 - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 48 19 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 48 19 130(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128 133: 6(int) Constant 23 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 58 16 21 133 11 11 12 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 132 58 16 21 133 11 11 12 136: 6(int) Constant 41 - 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 135 48 16 21 136 11 11 12 + 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 135 48 16 21 136 11 11 12 139: 6(int) Constant 84 - 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 21 139 11 11 12 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 21 139 11 11 12 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 19 16 126 11 18 142 11 12 131 134 137 140 + 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 21 139 11 11 12 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 21 139 11 11 12 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 19 16 126 11 18 142 11 12 131 134 137 140 143: TypeArray 130(gl_PerVertex) 12 - 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 141 12 + 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 141 12 145: TypePointer Input 143 146(gl_in): 145(ptr) Variable Input - 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 148 144 16 126 11 18 148 146(gl_in) 56 + 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 148 144 16 126 11 18 148 146(gl_in) 56 150: TypePointer Input 57(fvec4) 156: 6(int) Constant 55 - 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 155 58 16 156 11 15 20 + 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 58 16 156 11 15 20 163: TypePointer Function 49(fvec3) 167: 6(int) Constant 57 - 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 166 50 16 167 11 15 20 + 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 50 16 167 11 15 20 172: 24(int) Constant 2 173: TypePointer Uniform 57(fvec4) 181(outLightVec): 51(ptr) Variable Output 184: 6(int) Constant 58 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 183 50 16 184 11 18 183 181(outLightVec) 56 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 183 50 16 184 11 18 183 181(outLightVec) 56 189(outViewVec): 51(ptr) Variable Output 192: 6(int) Constant 59 - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 191 50 16 192 11 18 191 189(outViewVec) 56 + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 191 50 16 192 11 18 191 189(outViewVec) 56 196(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128 198: 6(int) Constant 215 - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 132 58 16 21 198 11 11 12 + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 132 58 16 21 198 11 11 12 200: 6(int) Constant 233 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 135 48 16 21 200 11 11 12 - 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 12 70 11 11 12 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 129 16 12 70 11 11 12 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 135 48 16 21 200 11 11 12 + 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 12 70 11 11 12 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 12 70 11 11 12 204: 6(int) Constant 61 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 19 16 204 11 18 142 11 12 197 199 201 202 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 19 16 204 11 18 142 11 12 197 199 201 202 205: TypePointer Output 196(gl_PerVertex) 206: 205(ptr) Variable Output - 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 203 16 204 11 18 17 206 56 + 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 203 16 204 11 18 17 206 56 213: TypePointer Output 57(fvec4) 215: TypePointer Output 24(int) 216(gl_ViewportIndex): 215(ptr) Variable Output 219: 6(int) Constant 64 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 218 26 16 219 11 18 218 216(gl_ViewportIndex) 56 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 218 26 16 219 11 18 218 216(gl_ViewportIndex) 56 221(gl_PrimitiveID): 215(ptr) Variable Output 224: 6(int) Constant 65 - 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 223 26 16 224 11 18 223 221(gl_PrimitiveID) 56 + 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 223 26 16 224 11 18 223 221(gl_PrimitiveID) 56 225(gl_PrimitiveIDIn): 84(ptr) Variable Input - 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 227 26 16 224 11 18 227 225(gl_PrimitiveIDIn) 56 + 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 227 26 16 224 11 18 227 225(gl_PrimitiveIDIn) 56 13(main): 3 Function None 4 22: Label 28(i): 27(ptr) Variable Function 123(pos): 122(ptr) Variable Function 153(worldPos): 122(ptr) Variable Function 164(lPos): 163(ptr) Variable Function - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 32: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 29 28(i) 33 + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) + 32: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 29 28(i) 33 Store 28(i) 34 Branch 35 35: Label @@ -275,19 +275,19 @@ Validation failed 120: 108(ptr) AccessChain 116(inColor) 119 121: 49(fvec3) Load 120 Store 112(outColor) 121 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 124 123(pos) 33 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(pos) 33 149: 24(int) Load 28(i) 151: 150(ptr) AccessChain 146(gl_in) 149 34 152: 57(fvec4) Load 151 Store 123(pos) 152 - 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 154 153(worldPos) 33 + 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 154 153(worldPos) 33 158: 24(int) Load 85(gl_InvocationID) 159: 89(ptr) AccessChain 80(ubo) 83 158 160: 59 Load 159 161: 57(fvec4) Load 123(pos) 162: 57(fvec4) MatrixTimesVector 160 161 Store 153(worldPos) 162 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 165 164(lPos) 33 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 165 164(lPos) 33 169: 24(int) Load 85(gl_InvocationID) 170: 89(ptr) AccessChain 80(ubo) 83 169 171: 59 Load 170 diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index ae9bfad109..c0cddfdc63 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -146,79 +146,79 @@ Validation failed 9: 6(int) Constant 32 10: 6(int) Constant 6 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 19: 6(int) Constant 1 20: 6(int) Constant 4 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 24 9 12 11 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 26: TypeVector 23(float) 4 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 20 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 28: TypePointer Function 26(fvec4) 29: TypeFunction 23(float) 28(ptr) 28(ptr) - 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 25 27 27 - 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 34 30 16 11 11 18 34 12 11 - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 40 27 16 11 11 35 20 19 - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 44 27 16 11 11 35 20 21 + 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 25 27 27 + 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 34 30 16 11 11 18 34 12 11 + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 27 16 11 11 35 20 19 + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 27 16 11 11 35 20 21 46: TypeBool - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 49: TypeFunction 46(bool) - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 48 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 52 50 16 11 11 18 52 12 11 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 48 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 52 50 16 11 11 18 52 12 11 59: 6(int) Constant 54 - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 58 27 16 59 11 35 20 + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 58 27 16 59 11 35 20 61: 23(float) Constant 1056964608 66: TypePointer Function 23(float) 70: 6(int) Constant 56 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 69 25 16 70 11 35 20 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 69 25 16 70 11 35 20 75: 23(float) Constant 1073741824 80: 6(int) Constant 59 - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 79 27 16 80 11 35 20 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 27 16 80 11 35 20 82: TypeMatrix 26(fvec4) 4 84: 46(bool) ConstantTrue - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 27 20 84 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 27 20 84 85: TypeArray 26(fvec4) 10 - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 27 10 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 27 10 87: TypeVector 23(float) 2 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 21 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 21 89(UBO): TypeStruct 82 82 26(fvec4) 85 23(float) 23(float) 87(fvec2) 23(float) 92: 6(int) Constant 30 93: 6(int) Constant 7 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 83 16 92 93 11 11 12 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 83 16 92 93 11 11 12 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 83 16 92 93 11 11 12 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 83 16 92 93 11 11 12 97: 6(int) Constant 31 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 96 27 16 97 93 11 11 12 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 99 86 16 9 93 11 11 12 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 27 16 97 93 11 11 12 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 86 16 9 93 11 11 12 102: 6(int) Constant 36 103: 6(int) Constant 8 - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12 - 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12 + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 25 16 102 103 11 11 12 + 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 25 16 102 103 11 11 12 107: 6(int) Constant 35 - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 106 88 16 107 93 11 11 12 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 101 25 16 102 103 11 11 12 - 109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 110 19 16 80 11 18 110 11 12 90 94 95 98 100 104 105 108 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 88 16 107 93 11 11 12 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 25 16 102 103 11 11 12 + 109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 110 19 16 80 11 18 110 11 12 90 94 95 98 100 104 105 108 111: TypePointer Uniform 89(UBO) 112(ubo): 111(ptr) Variable Uniform - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 114 109 16 80 11 18 114 112(ubo) 103 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 109 16 80 11 18 114 112(ubo) 103 115: TypeInt 32 1 - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 116 9 20 11 + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 116 9 20 11 118: 115(int) Constant 1 119: TypePointer Uniform 82 127: 6(int) Constant 62 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 126 27 16 127 11 35 20 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 126 27 16 127 11 35 20 129: 115(int) Constant 0 134: TypeVector 23(float) 3 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 25 12 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 136: 23(float) Constant 0 137: 134(fvec3) ConstantComposite 136 136 136 147: 6(int) Constant 63 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 146 27 16 147 11 35 20 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 27 16 147 11 35 20 169: 115(int) Constant 6 170: TypePointer Uniform 87(fvec2) 192: 115(int) Constant 7 @@ -227,107 +227,107 @@ Validation failed 201: 23(float) Constant 1065353216 202: 23(float) Constant 1115684864 210: 6(int) Constant 85 - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 209 27 16 210 11 53 20 + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 209 27 16 210 11 53 20 212: TypeArray 23(float) 19 - 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 19 + 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 25 19 214(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212 217: 6(int) Constant 1756 - 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 216 27 16 19 217 11 11 12 + 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 216 27 16 19 217 11 11 12 220: 6(int) Constant 1774 - 218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 219 25 16 19 220 11 11 12 + 218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 219 25 16 19 220 11 11 12 223: 6(int) Constant 1817 - 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 223 11 11 12 - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 223 11 11 12 - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 19 16 210 11 18 226 11 12 215 218 221 224 + 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 223 11 11 12 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 223 11 11 12 + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 226 19 16 210 11 18 226 11 12 215 218 221 224 227: TypeArray 214(gl_PerVertex) 9 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 225 9 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 225 9 229: TypePointer Input 227 230(gl_in): 229(ptr) Variable Input - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 232 228 16 210 11 18 232 230(gl_in) 103 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 232 228 16 210 11 18 232 230(gl_in) 103 233: TypePointer Input 115(int) 234(gl_InvocationID): 233(ptr) Variable Input - 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 236 117 16 210 11 18 236 234(gl_InvocationID) 103 + 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 117 16 210 11 18 236 234(gl_InvocationID) 103 238: TypePointer Input 26(fvec4) 241: TypeImage 23(float) 2D sampled format:Unknown 244: 6(int) Constant 86 - 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 243 11 16 244 11 18 245 246 12 + 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 243 11 16 244 11 18 245 246 12 247: TypeSampledImage 241 - 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 249 11 16 244 11 18 250 246 12 + 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 249 11 16 244 11 18 250 246 12 251: TypePointer UniformConstant 247 252(samplerHeight): 251(ptr) Variable UniformConstant - 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 254 248 16 244 11 18 254 252(samplerHeight) 103 + 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 254 248 16 244 11 18 254 252(samplerHeight) 103 256: TypeArray 87(fvec2) 9 - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 88 9 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 88 9 258: TypePointer Input 256 259(inUV): 258(ptr) Variable Input - 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 261 257 16 244 11 18 261 259(inUV) 103 + 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 257 16 244 11 18 261 259(inUV) 103 262: TypePointer Input 87(fvec2) 267: 115(int) Constant 4 275: TypePointer Function 115(int) 279: 6(int) Constant 89 - 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 278 117 16 279 11 53 20 - 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 117 16 279 11 53 20 + 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 290: 115(int) Constant 3 292: TypePointer Uniform 26(fvec4) 296: 23(float) Constant 1090519040 - 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 + 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 303: 46(bool) ConstantFalse - 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 312: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 - 318: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 + 312: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 + 318: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 322: TypeArray 23(float) 21 - 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 21 + 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 25 21 324: TypePointer Output 322 325(gl_TessLevelInner): 324(ptr) Variable Output 328: 6(int) Constant 104 - 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 327 323 16 328 11 18 327 325(gl_TessLevelInner) 103 + 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 327 323 16 328 11 18 327 325(gl_TessLevelInner) 103 329: TypePointer Output 23(float) 332: TypeArray 23(float) 20 - 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 25 20 + 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 25 20 334: TypePointer Output 332 335(gl_TessLevelOuter): 334(ptr) Variable Output 338: 6(int) Constant 106 - 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 337 333 16 338 11 18 337 335(gl_TessLevelOuter) 103 + 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 337 333 16 338 11 18 337 335(gl_TessLevelOuter) 103 341: 115(int) Constant 2 - 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 47 9 21 11 + 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 402(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212 404: 6(int) Constant 110 - 403: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 216 27 16 19 404 11 11 12 + 403: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 216 27 16 19 404 11 11 12 406: 6(int) Constant 128 - 405: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 219 25 16 19 406 11 11 12 + 405: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 219 25 16 19 406 11 11 12 408: 6(int) Constant 171 - 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 408 11 11 12 - 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 222 213 16 19 408 11 11 12 + 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 408 11 11 12 + 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 408 11 11 12 411: 6(int) Constant 137 - 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 19 16 411 11 18 226 11 12 403 405 407 409 + 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 226 19 16 411 11 18 226 11 12 403 405 407 409 412: TypeArray 402(gl_PerVertex) 20 - 413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 410 20 + 413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 410 20 414: TypePointer Output 412 415(gl_out): 414(ptr) Variable Output - 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 417 413 16 411 11 18 417 415(gl_out) 103 + 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 417 413 16 411 11 18 417 415(gl_out) 103 422: TypePointer Output 26(fvec4) 424: TypeArray 134(fvec3) 20 - 425: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 20 + 425: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 135 20 426: TypePointer Output 424 427(outNormal): 426(ptr) Variable Output 430: 6(int) Constant 138 - 428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 429 425 16 430 11 18 429 427(outNormal) 103 + 428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 429 425 16 430 11 18 429 427(outNormal) 103 432: TypeArray 134(fvec3) 9 - 433: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 9 + 433: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 135 9 434: TypePointer Input 432 435(inNormal): 434(ptr) Variable Input - 436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 437 433 16 430 11 18 437 435(inNormal) 103 + 436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 437 433 16 430 11 18 437 435(inNormal) 103 439: TypePointer Input 134(fvec3) 442: TypePointer Output 134(fvec3) 444: TypeArray 87(fvec2) 20 - 445: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 88 20 + 445: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 88 20 446: TypePointer Output 444 447(outUV): 446(ptr) Variable Output 450: 6(int) Constant 139 - 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 449 445 16 450 11 18 449 447(outUV) 103 + 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 449 445 16 450 11 18 449 447(outUV) 103 455: TypePointer Output 87(fvec2) 13(main): 3 Function None 4 22: Label @@ -339,7 +339,7 @@ Validation failed 370(param): 28(ptr) Variable Function 375(param): 28(ptr) Variable Function 378(param): 28(ptr) Variable Function - 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) 311: 115(int) Load 234(gl_InvocationID) 313: 46(bool) IEqual 311 129 SelectionMerge 315 None @@ -469,30 +469,30 @@ Validation failed 77(v0): 28(ptr) Variable Function 124(clip0): 28(ptr) Variable Function 144(clip1): 28(ptr) Variable Function - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 35 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 16 11 11 11 11 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 39 31(p0) 42 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 43 32(p1) 42 - 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 35 33(screenSpaceTessFactor(vf4;vf4;) - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 57 56(midPoint) 42 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 31(p0) 42 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 32(p1) 42 + 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 35 33(screenSpaceTessFactor(vf4;vf4;) + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 57 56(midPoint) 42 62: 26(fvec4) Load 31(p0) 63: 26(fvec4) Load 32(p1) 64: 26(fvec4) FAdd 62 63 65: 26(fvec4) VectorTimesScalar 64 61 Store 56(midPoint) 65 - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 68 67(radius) 42 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 67(radius) 42 72: 26(fvec4) Load 31(p0) 73: 26(fvec4) Load 32(p1) 74: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 72 73 76: 23(float) FDiv 74 75 Store 67(radius) 76 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 78 77(v0) 42 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 77(v0) 42 120: 119(ptr) AccessChain 112(ubo) 118 121: 82 Load 120 122: 26(fvec4) Load 56(midPoint) 123: 26(fvec4) MatrixTimesVector 121 122 Store 77(v0) 123 - 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 125 124(clip0) 42 + 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(clip0) 42 130: 119(ptr) AccessChain 112(ubo) 129 131: 82 Load 130 132: 26(fvec4) Load 77(v0) @@ -504,7 +504,7 @@ Validation failed 142: 26(fvec4) FSub 132 141 143: 26(fvec4) MatrixTimesVector 131 142 Store 124(clip0) 143 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 145 144(clip1) 42 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(clip1) 42 149: 119(ptr) AccessChain 112(ubo) 129 150: 82 Load 149 151: 26(fvec4) Load 77(v0) @@ -566,8 +566,8 @@ Validation failed 54: Label 207(pos): 28(ptr) Variable Function 276(i): 275(ptr) Variable Function - 206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 53 51(frustumCheck() - 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 208 207(pos) 42 + 206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 53 51(frustumCheck() + 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 208 207(pos) 42 237: 115(int) Load 234(gl_InvocationID) 239: 238(ptr) AccessChain 230(gl_in) 237 129 240: 26(fvec4) Load 239 @@ -585,7 +585,7 @@ Validation failed 273: 23(float) FSub 272 270 274: 66(ptr) AccessChain 207(pos) 19 Store 274 273 - 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 277 276(i) 42 + 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(i) 42 Store 276(i) 129 Branch 281 281: Label diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index d9d96811fc..3c5d692f89 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -134,153 +134,153 @@ Validation failed 9: 6(int) Constant 32 10: 6(int) Constant 6 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 19: 6(int) Constant 1 20: 6(int) Constant 4 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 24: TypeFloat 32 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 9 12 11 27: TypeVector 24(float) 2 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 29: TypePointer Function 27(fvec2) 33: 6(int) Constant 56 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 32 28 16 33 11 15 20 - 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 32 28 16 33 11 15 20 + 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 36: TypeArray 27(fvec2) 9 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 28 9 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 28 9 38: TypePointer Input 36 39(inUV): 38(ptr) Variable Input 42: 6(int) Constant 8 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 41 37 16 33 11 18 41 39(inUV) 42 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 41 37 16 33 11 18 41 39(inUV) 42 43: TypeInt 32 1 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 44 9 20 11 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 44 9 20 11 46: 43(int) Constant 0 47: TypePointer Input 27(fvec2) 50: 43(int) Constant 1 53: TypeVector 24(float) 3 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 12 55: TypePointer Input 53(fvec3) 56(gl_TessCoord): 55(ptr) Variable Input - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 58 54 16 33 11 18 58 56(gl_TessCoord) 42 + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 58 54 16 33 11 18 58 56(gl_TessCoord) 42 59: TypePointer Input 24(float) 67: 6(int) Constant 57 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 28 16 67 11 15 20 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 28 16 67 11 15 20 69: 43(int) Constant 3 72: 43(int) Constant 2 79: TypePointer Output 27(fvec2) 80(outUV): 79(ptr) Variable Output 83: 6(int) Constant 58 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 82 28 16 83 11 18 82 80(outUV) 42 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 82 28 16 83 11 18 82 80(outUV) 42 90: TypePointer Function 53(fvec3) 94: 6(int) Constant 60 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 93 54 16 94 11 15 20 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 54 16 94 11 15 20 96: TypeArray 53(fvec3) 9 - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 54 9 + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 54 9 98: TypePointer Input 96 99(inNormal): 98(ptr) Variable Input - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 101 97 16 94 11 18 101 99(inNormal) 42 + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 101 97 16 94 11 18 101 99(inNormal) 42 113: 6(int) Constant 61 - 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 112 54 16 113 11 15 20 + 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 112 54 16 113 11 15 20 123: TypePointer Output 53(fvec3) 124(outNormal): 123(ptr) Variable Output 127: 6(int) Constant 62 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 126 54 16 127 11 18 126 124(outNormal) 42 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 126 54 16 127 11 18 126 124(outNormal) 42 134: TypeVector 24(float) 4 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 20 136: TypePointer Function 134(fvec4) 140: 6(int) Constant 65 - 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 135 16 140 11 15 20 + 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 139 135 16 140 11 15 20 142: TypeArray 24(float) 19 - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 19 144(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142 147: 6(int) Constant 1756 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 135 16 19 147 11 11 12 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 135 16 19 147 11 11 12 150: 6(int) Constant 1774 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 149 26 16 19 150 11 11 12 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 26 16 19 150 11 11 12 153: 6(int) Constant 1817 - 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 153 11 11 12 - 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 153 11 11 12 - 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 19 16 140 11 18 156 11 12 145 148 151 154 + 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 153 11 11 12 + 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 153 11 11 12 + 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 19 16 140 11 18 156 11 12 145 148 151 154 157: TypeArray 144(gl_PerVertex) 9 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 155 9 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 155 9 159: TypePointer Input 157 160(gl_in): 159(ptr) Variable Input - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 162 158 16 140 11 18 162 160(gl_in) 42 + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 162 158 16 140 11 18 162 160(gl_in) 42 163: TypePointer Input 134(fvec4) 175: 6(int) Constant 66 - 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 174 135 16 175 11 15 20 + 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 174 135 16 175 11 15 20 188: 6(int) Constant 67 - 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 187 135 16 188 11 15 20 + 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 135 16 188 11 15 20 196: TypeImage 24(float) 2D sampled format:Unknown 199: 6(int) Constant 69 - 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 198 11 16 199 11 18 200 201 12 + 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 198 11 16 199 11 18 200 201 12 202: TypeSampledImage 196 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 204 11 16 199 11 18 205 201 12 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 204 11 16 199 11 18 205 201 12 206: TypePointer UniformConstant 202 207(displacementMap): 206(ptr) Variable UniformConstant - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 209 203 16 199 11 18 209 207(displacementMap) 42 + 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 209 203 16 199 11 18 209 207(displacementMap) 42 212: 24(float) Constant 0 215: TypeMatrix 134(fvec4) 4 217: TypeBool 218: 217(bool) ConstantTrue - 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 135 20 218 + 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 135 20 218 219: TypeArray 134(fvec4) 10 - 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 135 10 + 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 135 10 221(UBO): TypeStruct 215 215 134(fvec4) 219 24(float) 24(float) 27(fvec2) 24(float) 224: 6(int) Constant 30 225: 6(int) Constant 7 - 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12 - 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 223 216 16 224 225 11 11 12 + 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 223 216 16 224 225 11 11 12 + 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 223 216 16 224 225 11 11 12 229: 6(int) Constant 31 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 228 135 16 229 225 11 11 12 - 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 231 220 16 9 225 11 11 12 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 228 135 16 229 225 11 11 12 + 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 231 220 16 9 225 11 11 12 234: 6(int) Constant 36 - 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12 - 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12 + 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 233 26 16 234 42 11 11 12 + 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 233 26 16 234 42 11 11 12 238: 6(int) Constant 35 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 237 28 16 238 225 11 11 12 - 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 233 26 16 234 42 11 11 12 - 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 241 19 16 199 11 18 241 11 12 222 226 227 230 232 235 236 239 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 237 28 16 238 225 11 11 12 + 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 233 26 16 234 42 11 11 12 + 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 241 19 16 199 11 18 241 11 12 222 226 227 230 232 235 236 239 242: TypePointer Uniform 221(UBO) 243(ubo): 242(ptr) Variable Uniform - 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 245 240 16 199 11 18 245 243(ubo) 42 + 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 245 240 16 199 11 18 245 243(ubo) 42 246: 43(int) Constant 4 247: TypePointer Uniform 24(float) 251: TypePointer Function 24(float) 256(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142 258: 6(int) Constant 165 - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 135 16 19 258 11 11 12 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 135 16 19 258 11 11 12 260: 6(int) Constant 183 - 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 149 26 16 19 260 11 11 12 + 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 26 16 19 260 11 11 12 262: 6(int) Constant 226 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 262 11 11 12 - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 152 143 16 19 262 11 11 12 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 262 11 11 12 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 262 11 11 12 265: 6(int) Constant 71 - 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 156 19 16 265 11 18 156 11 12 257 259 261 263 + 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 19 16 265 11 18 156 11 12 257 259 261 263 266: TypePointer Output 256(gl_PerVertex) 267: 266(ptr) Variable Output - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 264 16 265 11 18 17 267 42 + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 264 16 265 11 18 17 267 42 269: TypePointer Uniform 215 277: TypePointer Output 134(fvec4) 279(outViewVec): 123(ptr) Variable Output 282: 6(int) Constant 74 - 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 281 54 16 282 11 18 281 279(outViewVec) 42 + 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 281 54 16 282 11 18 281 279(outViewVec) 42 286(outLightVec): 123(ptr) Variable Output 289: 6(int) Constant 75 - 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 288 54 16 289 11 18 288 286(outLightVec) 42 + 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 288 54 16 289 11 18 288 286(outLightVec) 42 290: TypePointer Uniform 134(fvec4) 297(outWorldPos): 123(ptr) Variable Output 300: 6(int) Constant 76 - 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 299 54 16 300 11 18 299 297(outWorldPos) 42 + 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 299 54 16 300 11 18 299 297(outWorldPos) 42 303(outEyePos): 123(ptr) Variable Output 306: 6(int) Constant 77 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 54 16 306 11 18 305 303(outEyePos) 42 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 305 54 16 306 11 18 305 303(outEyePos) 42 13(main): 3 Function None 4 22: Label 30(uv1): 29(ptr) Variable Function @@ -290,8 +290,8 @@ Validation failed 137(pos1): 136(ptr) Variable Function 172(pos2): 136(ptr) Variable Function 185(pos): 136(ptr) Variable Function - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 31 30(uv1) 35 + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 31 30(uv1) 35 48: 47(ptr) AccessChain 39(inUV) 46 49: 27(fvec2) Load 48 51: 47(ptr) AccessChain 39(inUV) 50 @@ -301,7 +301,7 @@ Validation failed 62: 27(fvec2) CompositeConstruct 61 61 63: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 49 52 62 Store 30(uv1) 63 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 64(uv2) 35 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 64(uv2) 35 70: 47(ptr) AccessChain 39(inUV) 69 71: 27(fvec2) Load 70 73: 47(ptr) AccessChain 39(inUV) 72 @@ -318,7 +318,7 @@ Validation failed 88: 27(fvec2) CompositeConstruct 87 87 89: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 84 85 88 Store 80(outUV) 89 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 92 91(n1) 35 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 91(n1) 35 102: 55(ptr) AccessChain 99(inNormal) 46 103: 53(fvec3) Load 102 104: 55(ptr) AccessChain 99(inNormal) 50 @@ -328,7 +328,7 @@ Validation failed 108: 53(fvec3) CompositeConstruct 107 107 107 109: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 103 105 108 Store 91(n1) 109 - 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 111 110(n2) 35 + 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 111 110(n2) 35 115: 55(ptr) AccessChain 99(inNormal) 69 116: 53(fvec3) Load 115 117: 55(ptr) AccessChain 99(inNormal) 72 @@ -345,7 +345,7 @@ Validation failed 132: 53(fvec3) CompositeConstruct 131 131 131 133: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 128 129 132 Store 124(outNormal) 133 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 138 137(pos1) 35 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 138 137(pos1) 35 164: 163(ptr) AccessChain 160(gl_in) 46 46 165: 134(fvec4) Load 164 166: 163(ptr) AccessChain 160(gl_in) 50 46 @@ -355,7 +355,7 @@ Validation failed 170: 134(fvec4) CompositeConstruct 169 169 169 169 171: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 165 167 170 Store 137(pos1) 171 - 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 173 172(pos2) 35 + 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 173 172(pos2) 35 177: 163(ptr) AccessChain 160(gl_in) 69 46 178: 134(fvec4) Load 177 179: 163(ptr) AccessChain 160(gl_in) 72 46 @@ -365,7 +365,7 @@ Validation failed 183: 134(fvec4) CompositeConstruct 182 182 182 182 184: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 178 180 183 Store 172(pos2) 184 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 186 185(pos) 35 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 186 185(pos) 35 190: 134(fvec4) Load 137(pos1) 191: 134(fvec4) Load 172(pos2) 192: 59(ptr) AccessChain 56(gl_TessCoord) 19 diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index 3d5352fd1c..24025de9f4 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -120,76 +120,76 @@ Validation failed 9: 6(int) Constant 32 10: 6(int) Constant 6 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 8 9 10 11 + 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 17 + 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 + 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 19: 6(int) Constant 1 20: 6(int) Constant 4 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 14 5 16 11 11 18 14 12 11 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 + 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 24: TypeFloat 32 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 25 9 12 11 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 9 12 11 27: TypeVector 24(float) 3 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 12 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 12 29: TypePointer Output 27(fvec3) 30(outColor): 29(ptr) Variable Output 33: 6(int) Constant 56 34: 6(int) Constant 8 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 32 28 16 33 11 18 32 30(outColor) 34 + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 32 28 16 33 11 18 32 30(outColor) 34 35: TypePointer Input 27(fvec3) 36(inColor): 35(ptr) Variable Input - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 38 28 16 33 11 18 38 36(inColor) 34 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 38 28 16 33 11 18 38 36(inColor) 34 40(outUV): 29(ptr) Variable Output 43: 6(int) Constant 57 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 42 28 16 43 11 18 42 40(outUV) 34 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 42 28 16 43 11 18 42 40(outUV) 34 44: TypeVector 24(float) 2 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 21 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 46: TypePointer Input 44(fvec2) 47(inUV): 46(ptr) Variable Input - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 49 45 16 43 11 18 49 47(inUV) 34 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 49 45 16 43 11 18 49 47(inUV) 34 51: TypeInt 32 1 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 52 9 20 11 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 52 9 20 11 54: TypePointer Input 51(int) 55(instanceTexIndex): 54(ptr) Variable Input - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 57 53 16 43 11 18 57 55(instanceTexIndex) 34 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 57 53 16 43 11 18 57 55(instanceTexIndex) 34 63: TypePointer Function 24(float) 67: 6(int) Constant 62 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 66 26 16 67 11 15 20 - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 26 16 67 11 15 20 + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 70(instanceRot): 35(ptr) Variable Input - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 72 28 16 67 11 18 72 70(instanceRot) 34 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 72 28 16 67 11 18 72 70(instanceRot) 34 73: TypePointer Input 24(float) 76: TypeVector 24(float) 4 - 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 26 20 + 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 20 78: TypeMatrix 76(fvec4) 4 80: TypeBool 81: 80(bool) ConstantTrue - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 77 20 81 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 77 20 81 82(UBO): TypeStruct 78 78 76(fvec4) 24(float) 24(float) 85: 6(int) Constant 42 86: 6(int) Constant 7 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 79 16 85 86 11 11 12 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 79 16 85 86 11 11 12 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 79 16 85 86 11 11 12 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 79 16 85 86 11 11 12 90: 6(int) Constant 43 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 89 77 16 90 86 11 11 12 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 77 16 90 86 11 11 12 93: 6(int) Constant 45 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 92 26 16 93 34 11 11 12 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 92 26 16 93 34 11 11 12 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 96 19 16 67 11 18 96 11 12 83 87 88 91 94 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 26 16 93 34 11 11 12 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 26 16 93 34 11 11 12 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 96 19 16 67 11 18 96 11 12 83 87 88 91 94 97: TypePointer Uniform 82(UBO) 98(ubo): 97(ptr) Variable Uniform - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 100 95 16 67 11 18 100 98(ubo) 34 + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 100 95 16 67 11 18 100 98(ubo) 34 101: 51(int) Constant 3 102: TypePointer Uniform 24(float) 110: 6(int) Constant 63 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 26 16 110 11 15 20 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 26 16 110 11 15 20 118: TypeMatrix 27(fvec3) 3 - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 28 12 81 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 28 12 81 120: TypePointer Function 118 124: 6(int) Constant 65 - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 123 119 16 124 11 15 20 + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 119 16 124 11 15 20 126: 51(int) Constant 0 129: 24(float) Constant 0 131: TypePointer Function 27(fvec3) @@ -198,59 +198,59 @@ Validation failed 140: 24(float) Constant 1065353216 141: 27(fvec3) ConstantComposite 129 129 140 158: 6(int) Constant 73 - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 157 119 16 158 11 15 20 + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 119 16 158 11 15 20 164: 27(fvec3) ConstantComposite 129 140 129 186: 6(int) Constant 81 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 119 16 186 11 15 20 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 119 16 186 11 15 20 188: 27(fvec3) ConstantComposite 140 129 129 202: 6(int) Constant 85 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 201 119 16 202 11 15 20 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 201 119 16 202 11 15 20 211: 51(int) Constant 4 222: TypePointer Function 78 226: 6(int) Constant 90 - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 225 79 16 226 11 15 20 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 79 16 226 11 15 20 231: TypePointer Function 76(fvec4) 233: 76(fvec4) ConstantComposite 129 140 129 129 240: 76(fvec4) ConstantComposite 129 129 129 140 245: 6(int) Constant 95 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 77 16 245 11 15 20 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 77 16 245 11 15 20 247(inPos): 35(ptr) Variable Input - 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 249 28 16 245 11 18 249 247(inPos) 34 + 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 249 28 16 245 11 18 249 247(inPos) 34 260: 6(int) Constant 96 - 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 259 77 16 260 11 15 20 + 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 259 77 16 260 11 15 20 264(instanceScale): 73(ptr) Variable Input - 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 266 26 16 260 11 18 266 264(instanceScale) 34 + 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 266 26 16 260 11 18 266 264(instanceScale) 34 269(instancePos): 35(ptr) Variable Input - 270: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 271 28 16 260 11 18 271 269(instancePos) 34 + 270: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 271 28 16 260 11 18 271 269(instancePos) 34 278: TypeArray 24(float) 19 - 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 26 19 + 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 19 280(gl_PerVertex): TypeStruct 76(fvec4) 24(float) 278 278 283: 6(int) Constant 24 - 281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 282 77 16 19 283 11 11 12 - 284: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 285 26 16 19 85 11 11 12 - 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 279 16 19 202 11 11 12 - 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 287 279 16 19 202 11 11 12 + 281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 282 77 16 19 283 11 11 12 + 284: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 285 26 16 19 85 11 11 12 + 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 287 279 16 19 202 11 11 12 + 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 287 279 16 19 202 11 11 12 291: 6(int) Constant 98 - 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 290 19 16 291 11 18 290 11 12 281 284 286 288 + 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 290 19 16 291 11 18 290 11 12 281 284 286 288 292: TypePointer Output 280(gl_PerVertex) 293: 292(ptr) Variable Output - 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 17 289 16 291 11 18 17 293 34 + 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 289 16 291 11 18 17 293 34 295: TypePointer Uniform 78 305: TypePointer Output 76(fvec4) 307(outNormal): 29(ptr) Variable Output 310: 6(int) Constant 99 - 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 309 28 16 310 11 18 309 307(outNormal) 34 + 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 309 28 16 310 11 18 309 307(outNormal) 34 325(inNormal): 35(ptr) Variable Input - 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 327 28 16 310 11 18 327 325(inNormal) 34 + 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 327 28 16 310 11 18 327 325(inNormal) 34 343: 6(int) Constant 102 - 341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 342 28 16 343 11 15 20 + 341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 342 28 16 343 11 15 20 354: TypePointer Uniform 76(fvec4) 359(outLightVec): 29(ptr) Variable Output 362: 6(int) Constant 103 - 360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 361 28 16 362 11 18 361 359(outLightVec) 34 + 360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 361 28 16 362 11 18 361 359(outLightVec) 34 367(outViewVec): 29(ptr) Variable Output 370: 6(int) Constant 104 - 368: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 369 28 16 370 11 18 369 367(outViewVec) 34 + 368: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 369 28 16 370 11 18 369 367(outViewVec) 34 13(main): 3 Function None 4 22: Label 64(s): 63(ptr) Variable Function @@ -263,7 +263,7 @@ Validation failed 242(locPos): 231(ptr) Variable Function 257(pos): 231(ptr) Variable Function 340(lPos): 131(ptr) Variable Function - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 15 13(main) + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) 39: 27(fvec3) Load 36(inColor) Store 30(outColor) 39 50: 44(fvec2) Load 47(inUV) @@ -273,7 +273,7 @@ Validation failed 61: 24(float) CompositeExtract 50 1 62: 27(fvec3) CompositeConstruct 60 61 59 Store 40(outUV) 62 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 64(s) 69 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 64(s) 69 74: 73(ptr) AccessChain 70(instanceRot) 11 75: 24(float) Load 74 103: 102(ptr) AccessChain 98(ubo) 101 @@ -281,7 +281,7 @@ Validation failed 105: 24(float) FAdd 75 104 106: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 105 Store 64(s) 106 - 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 107(c) 69 + 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(c) 69 112: 73(ptr) AccessChain 70(instanceRot) 11 113: 24(float) Load 112 114: 102(ptr) AccessChain 98(ubo) 101 @@ -289,7 +289,7 @@ Validation failed 116: 24(float) FAdd 113 115 117: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 116 Store 107(c) 117 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 122 121(mx) 69 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(mx) 69 127: 24(float) Load 107(c) 128: 24(float) Load 64(s) 130: 27(fvec3) CompositeConstruct 127 128 129 @@ -317,7 +317,7 @@ Validation failed 153: 24(float) FAdd 150 152 154: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 153 Store 107(c) 154 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 156 155(my) 69 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 156 155(my) 69 160: 24(float) Load 107(c) 161: 24(float) Load 64(s) 162: 27(fvec3) CompositeConstruct 160 129 161 @@ -345,7 +345,7 @@ Validation failed 181: 24(float) FAdd 178 180 182: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 181 Store 107(c) 182 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 184 183(mz) 69 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(mz) 69 189: 131(ptr) AccessChain 183(mz) 126 Store 189 188 190: 24(float) Load 107(c) @@ -359,7 +359,7 @@ Validation failed 197: 27(fvec3) CompositeConstruct 129 195 196 198: 131(ptr) AccessChain 183(mz) 139 Store 198 197 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 200 199(rotMat) 69 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 200 199(rotMat) 69 204: 118 Load 183(mz) 205: 118 Load 155(my) 206: 118 MatrixTimesMatrix 204 205 @@ -380,7 +380,7 @@ Validation failed 220: 24(float) FAdd 217 219 221: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 220 Store 107(c) 221 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 224 223(gRotMat) 69 + 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(gRotMat) 69 228: 24(float) Load 107(c) 229: 24(float) Load 64(s) 230: 76(fvec4) CompositeConstruct 228 129 229 129 @@ -396,7 +396,7 @@ Validation failed Store 239 238 241: 231(ptr) AccessChain 223(gRotMat) 101 Store 241 240 - 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 243 242(locPos) 69 + 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(locPos) 69 250: 27(fvec3) Load 247(inPos) 251: 118 Load 199(rotMat) 252: 27(fvec3) VectorTimesMatrix 250 251 @@ -405,7 +405,7 @@ Validation failed 255: 24(float) CompositeExtract 252 2 256: 76(fvec4) CompositeConstruct 253 254 255 140 Store 242(locPos) 256 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 258 257(pos) 69 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 258 257(pos) 69 262: 76(fvec4) Load 242(locPos) 263: 27(fvec3) VectorShuffle 262 262 0 1 2 267: 24(float) Load 264(instanceScale) @@ -456,7 +456,7 @@ Validation failed 338: 76(fvec4) CompositeConstruct 335 336 337 140 339: 76(fvec4) MatrixTimesVector 331 338 Store 257(pos) 339 - 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 341 340(lPos) 69 + 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 341 340(lPos) 69 345: 295(ptr) AccessChain 98(ubo) 133 346: 78 Load 345 347: 76(fvec4) CompositeExtract 346 0 diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index 44bf1a7fe9..593dca9ee9 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -169,183 +169,183 @@ Validation failed 13: 10(int) Constant 32 14: 10(int) Constant 6 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 17: TypeVector 7(float) 3 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 19: TypePointer Function 17(fvec3) 20: TypePointer Function 7(float) 21: TypeFunction 17(fvec3) 19(ptr) 19(ptr) 20(ptr) - 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 18 18 18 8 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 30 + 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 18 18 18 8 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 30 32: 10(int) Constant 1 33: 10(int) Constant 4 34: 10(int) Constant 5 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 32 33 29 34 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 27 22 29 15 15 31 27 16 15 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 39 18 29 15 15 28 33 32 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 32 33 29 34 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 27 22 29 15 15 31 27 16 15 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 18 29 15 15 28 33 32 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 44: 10(int) Constant 2 - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 43 18 29 15 15 28 33 44 - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 29 15 15 28 33 16 + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 18 29 15 15 28 33 44 + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 8 29 15 15 28 33 16 49: TypeVector 10(int) 3 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 11 16 51: TypePointer Function 49(ivec3) 52: TypeFunction 3 51(ptr) - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 3 50 - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 56 53 29 15 15 31 56 16 15 - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 62 50 29 15 15 57 33 32 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 3 50 + 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 56 53 29 15 15 31 56 16 15 + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 62 50 29 15 15 57 33 32 68: 10(int) Constant 76 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 67 18 29 68 15 28 33 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 18 29 68 15 28 33 75: TypeVector 7(float) 4 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 33 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 33 77: TypeInt 32 1 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 78 13 33 15 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 78 13 33 15 80: TypeVector 77(int) 2 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 79 44 + 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 79 44 82(UBO): TypeStruct 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 75(fvec4) 75(fvec4) 80(ivec2) 85: 10(int) Constant 48 86: 10(int) Constant 20 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 84 8 29 85 86 15 15 16 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 96: 10(int) Constant 50 97: 10(int) Constant 16 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 76 29 96 97 15 15 16 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 76 29 96 97 15 15 16 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 76 29 96 97 15 15 16 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 76 29 96 97 15 15 16 101: 10(int) Constant 51 - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 100 81 29 101 86 15 15 16 + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 81 29 101 86 15 15 16 104: 10(int) Constant 77 - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 103 32 29 104 15 31 103 15 16 83 87 88 89 90 91 92 93 94 98 99 + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 103 32 29 104 15 31 103 15 16 83 87 88 89 90 91 92 93 94 98 99 105(ubo): TypeStruct 82(UBO) 108: 10(int) Constant 56 109: 10(int) Constant 12 - 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 107 102 29 108 109 15 15 16 - 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 111 32 29 104 15 31 111 15 16 106 + 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 102 29 108 109 15 15 16 + 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 111 32 29 104 15 31 111 15 16 106 112: TypePointer Uniform 105(ubo) 113: 112(ptr) Variable Uniform 115: 10(int) Constant 8 - 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 110 29 104 15 31 30 113 115 + 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 30 110 29 104 15 31 30 113 115 116: 77(int) Constant 0 117: 77(int) Constant 2 118: TypePointer Uniform 7(float) 130: TypePointer Function 10(int) 134: 10(int) Constant 83 - 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 133 11 29 134 15 57 33 + 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 11 29 134 15 57 33 138: 77(int) Constant 10 139: TypePointer Uniform 77(int) 154: TypeBool - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 161(Particle): TypeStruct 75(fvec4) 75(fvec4) 75(fvec4) 75(fvec4) 7(float) 164: 10(int) Constant 30 165: 10(int) Constant 15 - 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 - 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 - 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 163 76 29 164 165 15 15 16 + 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 + 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 + 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 171: 10(int) Constant 31 172: 10(int) Constant 14 - 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 170 8 29 171 172 15 15 16 + 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 8 29 171 172 15 15 16 175: 10(int) Constant 88 - 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 174 32 29 175 15 31 174 15 16 162 166 167 168 169 + 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 32 29 175 15 31 174 15 16 162 166 167 168 169 176: TypeRuntimeArray 161(Particle) - 177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 173 15 + 177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 173 15 178(particleIn): TypeStruct 176 181: 10(int) Constant 35 182: 10(int) Constant 28 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 177 29 181 182 15 15 16 - 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 184 32 29 175 15 31 184 15 16 179 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 177 29 181 182 15 15 16 + 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 184 32 29 175 15 31 184 15 16 179 185: TypePointer Uniform 178(particleIn) 186(particleIn): 185(ptr) Variable Uniform - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 184 183 29 175 15 31 184 186(particleIn) 115 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 184 183 29 175 15 31 184 186(particleIn) 115 189: 77(int) Constant 4 192: 7(float) Constant 1065353216 - 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 197: TypeRuntimeArray 161(Particle) - 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 173 15 + 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 173 15 199(particleOut): TypeStruct 197 201: 10(int) Constant 37 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 198 29 201 164 15 15 16 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 198 29 201 164 15 15 16 204: 10(int) Constant 89 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 203 32 29 204 15 31 203 15 16 200 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 203 32 29 204 15 31 203 15 16 200 205: TypePointer Uniform 199(particleOut) 206(particleOut): 205(ptr) Variable Uniform - 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 203 202 29 204 15 31 203 206(particleOut) 115 + 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 203 202 29 204 15 31 203 206(particleOut) 115 210: TypePointer Uniform 75(fvec4) 215: 77(int) Constant 1 216: 7(float) Constant 0 217: 75(fvec4) ConstantComposite 216 216 216 216 223: 10(int) Constant 95 - 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 222 18 29 223 15 57 33 + 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 222 18 29 223 15 57 33 225: 77(int) Constant 9 235: 10(int) Constant 97 - 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 234 18 29 235 15 57 33 + 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 18 29 235 15 57 33 244: 10(int) Constant 98 - 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 243 18 29 244 15 57 33 - 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 243 18 29 244 15 57 33 + 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 309: 77(int) Constant 5 - 324: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 324: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 367: 77(int) Constant 6 - 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 458: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 458: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 482: 77(int) Constant 3 493: 10(int) Constant 137 - 491: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 492 18 29 493 15 57 33 + 491: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 492 18 29 493 15 57 33 507: 7(float) Constant 1056964608 537: 10(int) Constant 142 - 535: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 536 18 29 537 15 57 33 + 535: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 536 18 29 537 15 57 33 543: 77(int) Constant 8 550: 77(int) Constant 7 553: 7(float) Constant 1008981770 - 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 578(PushConstants): TypeStruct 10(int) 581: 10(int) Constant 67 582: 10(int) Constant 23 - 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 580 11 29 581 582 15 15 16 + 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 580 11 29 581 582 15 15 16 585: 10(int) Constant 151 - 583: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 584 32 29 585 15 31 584 15 16 579 + 583: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 584 32 29 585 15 31 584 15 16 579 586($Global): TypeStruct 578(PushConstants) 589: 10(int) Constant 71 - 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 588 583 29 589 165 15 15 16 - 590: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 591 32 29 585 15 31 591 15 16 587 + 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 588 583 29 589 165 15 15 16 + 590: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 591 32 29 585 15 31 591 15 16 587 592: TypePointer Uniform 586($Global) 593: 592(ptr) Variable Uniform - 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 590 29 585 15 31 30 593 115 + 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 30 590 29 585 15 31 30 593 115 595: TypePointer Uniform 10(int) - 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 604: 10(int) Constant 152 - 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 163 18 29 604 15 57 33 + 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 163 18 29 604 15 57 33 606: 17(fvec3) ConstantComposite 216 216 216 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 615: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 615: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 622: 10(int) Constant 156 - 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 621 18 29 622 15 57 33 + 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 621 18 29 622 15 57 33 634: 10(int) Constant 157 - 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 633 18 29 634 15 57 33 + 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 633 18 29 634 15 57 33 650: 10(int) Constant 158 - 648: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 649 18 29 650 15 57 33 - 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 724: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 730: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 - 777: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 155 13 44 15 + 648: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 649 18 29 650 15 57 33 + 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 724: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 730: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 + 777: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 827: TypePointer Input 49(ivec3) 828(id): 827(ptr) Variable Input 5(main): 3 Function None 4 @@ -365,13 +365,13 @@ Validation failed 25(restDist): 20(ptr) FunctionParameter 35: Label 65(dist): 19(ptr) Variable Function - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 28 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 38 23(p0) 41 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 42 24(p1) 41 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 25(restDist) 41 - 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 28 26(springForce(vf3;vf3;f1;) - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 66 65(dist) 41 + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 28 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 15 15 15 15 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 23(p0) 41 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 24(p1) 41 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 25(restDist) 41 + 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 28 26(springForce(vf3;vf3;f1;) + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 65(dist) 41 70: 17(fvec3) Load 23(p0) 71: 17(fvec3) Load 24(p1) 72: 17(fvec3) FSub 70 71 @@ -425,11 +425,11 @@ Validation failed 619(a): 19(ptr) Variable Function 631(b): 19(ptr) Variable Function 647(c): 19(ptr) Variable Function - 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 57 - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 61 54(id) 41 - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 57 55(@main(vu3;) - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 132 131(index) 41 + 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 15 15 15 15 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 61 54(id) 41 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 55(@main(vu3;) + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(index) 41 136: 130(ptr) AccessChain 54(id) 32 137: 10(int) Load 136 140: 139(ptr) AccessChain 113 116 138 15 @@ -471,7 +471,7 @@ Validation failed Store 218 217 Return 196: Label - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 221 220(force) 41 + 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 221 220(force) 41 226: 210(ptr) AccessChain 113 116 225 227: 75(fvec4) Load 226 228: 17(fvec3) VectorShuffle 227 227 0 1 2 @@ -479,13 +479,13 @@ Validation failed 230: 7(float) Load 229 231: 17(fvec3) VectorTimesScalar 228 230 Store 220(force) 231 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 233 232(pos) 41 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(pos) 41 237: 10(int) Load 131(index) 238: 210(ptr) AccessChain 186(particleIn) 116 237 116 239: 75(fvec4) Load 238 240: 17(fvec3) VectorShuffle 239 239 0 1 2 Store 232(pos) 240 - 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 242 241(vel) 41 + 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 242 241(vel) 41 246: 10(int) Load 131(index) 247: 210(ptr) AccessChain 186(particleIn) 116 246 215 248: 75(fvec4) Load 247 @@ -745,7 +745,7 @@ Validation failed 488: 17(fvec3) Load 220(force) 489: 17(fvec3) FAdd 488 487 Store 220(force) 489 - 494: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 491 490(f) 41 + 494: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 491 490(f) 41 495: 17(fvec3) Load 220(force) 496: 118(ptr) AccessChain 113 116 215 497: 7(float) Load 496 @@ -787,7 +787,7 @@ Validation failed 532: 75(fvec4) CompositeConstruct 529 530 531 216 533: 210(ptr) AccessChain 206(particleOut) 116 522 215 Store 533 532 - 538: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 535 534(sphereDist) 41 + 538: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 535 534(sphereDist) 41 539: 10(int) Load 131(index) 540: 210(ptr) AccessChain 206(particleOut) 116 539 116 541: 75(fvec4) Load 540 @@ -837,7 +837,7 @@ Validation failed SelectionMerge 601 None BranchConditional 599 600 601 600: Label - 605: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 603 602(normal) 41 + 605: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 603 602(normal) 41 Store 602(normal) 606 607: 130(ptr) AccessChain 54(id) 32 608: 10(int) Load 607 @@ -851,7 +851,7 @@ Validation failed SelectionMerge 618 None BranchConditional 616 617 618 617: Label - 623: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 620 619(a) 41 + 623: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 620 619(a) 41 624: 10(int) Load 131(index) 625: 10(int) ISub 624 32 626: 210(ptr) AccessChain 186(particleIn) 116 625 116 @@ -860,7 +860,7 @@ Validation failed 629: 17(fvec3) Load 232(pos) 630: 17(fvec3) FSub 628 629 Store 619(a) 630 - 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 632 631(b) 41 + 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 632 631(b) 41 636: 10(int) Load 131(index) 637: 139(ptr) AccessChain 113 116 138 15 638: 77(int) Load 637 @@ -873,7 +873,7 @@ Validation failed 645: 17(fvec3) Load 232(pos) 646: 17(fvec3) FSub 644 645 Store 631(b) 646 - 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 648 647(c) 41 + 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 648 647(c) 41 652: 10(int) Load 131(index) 653: 139(ptr) AccessChain 113 116 138 15 654: 77(int) Load 653 diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 3c206a08ec..2d8cc16232 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -208,230 +208,230 @@ Validation failed 13: 10(int) Constant 32 14: 10(int) Constant 6 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 17: TypeVector 7(float) 4 18: 10(int) Constant 4 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 18 20: TypePointer Function 17(fvec4) 21: TypePointer Function 7(float) 22: TypeVector 7(float) 2 23: 10(int) Constant 2 - 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 23 + 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 23 25: TypePointer Function 22(fvec2) 26: TypeFunction 7(float) 20(ptr) 21(ptr) 25(ptr) - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 8 24 - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 35 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 8 19 8 24 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 35 37: 10(int) Constant 1 38: 10(int) Constant 5 - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 37 18 34 38 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 32 27 34 15 15 36 32 16 15 - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 43 19 34 15 15 33 18 37 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 34 15 15 33 18 23 - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 50 24 34 15 15 33 18 16 + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 18 34 38 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 32 27 34 15 15 36 32 16 15 + 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 19 34 15 15 33 18 37 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 8 34 15 15 33 18 23 + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 24 34 15 15 33 18 16 52: TypeFunction 7(float) 20(ptr) 21(ptr) - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 8 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 57 53 34 15 15 36 57 16 15 - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 63 19 34 15 15 58 18 37 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 47 8 34 15 15 58 18 23 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 8 19 8 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 53 34 15 15 36 57 16 15 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 63 19 34 15 15 58 18 37 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 8 34 15 15 58 18 23 67: TypeVector 7(float) 3 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 69: TypePointer Function 67(fvec3) 70: TypeFunction 67(fvec3) 69(ptr) 69(ptr) - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 68 68 68 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 75 71 34 15 15 36 75 16 15 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 15 15 76 18 37 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 15 15 76 18 23 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 68 68 68 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 75 71 34 15 15 36 75 16 15 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 68 34 15 15 76 18 37 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 68 34 15 15 76 18 23 86: TypeFunction 17(fvec4) 25(ptr) - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 19 24 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 90 87 34 15 15 36 90 16 15 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 96 24 34 15 15 91 18 37 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 19 24 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 90 87 34 15 15 36 90 16 15 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 24 34 15 15 91 18 37 101: 10(int) Constant 62 - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 75 8 34 101 15 33 18 + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 75 8 34 101 15 33 18 103: 7(float) Constant 1065353216 107: 10(int) Constant 63 - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 106 19 34 107 15 33 18 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 106 19 34 107 15 33 18 116: 7(float) Constant 1056964608 126: 7(float) Constant 3212836864 127: TypeBool - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 142: 10(int) Constant 68 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 142 15 33 18 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 8 34 142 15 33 18 144: TypeImage 7(float) 2D array sampled format:Unknown - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 15 34 142 15 36 147 148 16 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 146 15 34 142 15 36 147 148 16 149: TypePointer UniformConstant 144 150(textureShadowMap): 149(ptr) Variable UniformConstant 153: 10(int) Constant 8 - 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 152 145 34 142 15 36 152 150(textureShadowMap) 153 + 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 152 145 34 142 15 36 152 150(textureShadowMap) 153 155: TypeSampler - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 142 15 36 158 148 16 + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 142 15 36 158 148 16 159: TypePointer UniformConstant 155 160(samplerShadowMap): 159(ptr) Variable UniformConstant - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 162 156 34 142 15 36 162 160(samplerShadowMap) 153 + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 162 156 34 142 15 36 162 160(samplerShadowMap) 153 164: TypeSampledImage 144 - 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 166 15 34 142 15 36 167 148 16 + 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 15 34 142 15 36 167 148 16 181: 7(float) Constant 0 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 193: 7(float) Constant 1048576000 198: TypeVector 10(int) 3 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 11 16 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 11 16 200: TypePointer Function 198(ivec3) 204: 10(int) Constant 80 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 203 199 34 204 15 58 18 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 203 199 34 204 15 58 18 208: TypeInt 32 1 - 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 209 13 18 15 + 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 209 13 18 15 211: TypeVector 208(int) 2 - 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 210 23 + 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 210 23 213: TypePointer Function 211(ivec2) - 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 216 212 34 204 15 58 18 + 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 216 212 34 204 15 58 18 218: TypePointer Function 10(int) 222: TypePointer Function 208(int) - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 230 210 34 204 15 58 18 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 237 210 34 204 15 58 18 + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 230 210 34 204 15 58 18 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 210 34 204 15 58 18 245: 10(int) Constant 81 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 244 8 34 245 15 58 18 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 8 34 245 15 58 18 247: 7(float) Constant 1069547520 251: 10(int) Constant 82 - 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 250 8 34 251 15 58 18 + 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 8 34 251 15 58 18 262: 10(int) Constant 83 - 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 261 8 34 262 15 58 18 + 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 8 34 262 15 58 18 273: 10(int) Constant 85 - 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 273 15 58 18 + 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 8 34 273 15 58 18 278: 10(int) Constant 86 - 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 277 210 34 278 15 58 18 + 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 277 210 34 278 15 58 18 280: 208(int) Constant 0 284: 10(int) Constant 87 - 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 283 210 34 284 15 58 18 + 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 210 34 284 15 58 18 286: 208(int) Constant 1 290: 10(int) Constant 89 - 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 289 210 34 290 15 58 18 - 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 289 210 34 290 15 58 18 + 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 306: 10(int) Constant 91 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 305 210 34 306 15 58 18 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 305 210 34 306 15 58 18 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 352: 10(int) Constant 102 - 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 351 210 34 352 15 76 18 + 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 351 210 34 352 15 76 18 360: 208(int) Constant 3 - 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 366: 10(int) Constant 104 - 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 365 19 34 366 15 76 18 + 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 365 19 34 366 15 76 18 373: TypeMatrix 17(fvec4) 4 375: 127(bool) ConstantTrue - 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 375 + 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 18 375 376(Light): TypeStruct 17(fvec4) 17(fvec4) 17(fvec4) 373 379: 10(int) Constant 46 380: 10(int) Constant 14 - 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 - 381: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 - 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 + 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 + 381: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 + 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 385: 10(int) Constant 47 386: 10(int) Constant 21 - 383: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 384 374 34 385 386 15 15 16 - 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 388 37 34 366 15 36 388 15 16 377 381 382 383 + 383: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 384 374 34 385 386 15 15 16 + 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 388 37 34 366 15 36 388 15 16 377 381 382 383 389: TypeArray 376(Light) 16 - 390: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 387 16 + 390: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 387 16 391(UBO): TypeStruct 17(fvec4) 389 208(int) 208(int) - 392: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 378 19 34 379 380 15 15 16 + 392: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 395: 10(int) Constant 53 - 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 394 390 34 395 380 15 15 16 + 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 394 390 34 395 380 15 15 16 398: 10(int) Constant 55 399: 10(int) Constant 24 - 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 210 34 398 399 15 15 16 - 400: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 397 210 34 398 399 15 15 16 - 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 402 37 34 366 15 36 402 15 16 392 393 396 400 + 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 210 34 398 399 15 15 16 + 400: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 210 34 398 399 15 15 16 + 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 402 37 34 366 15 36 402 15 16 392 393 396 400 403(ubo): TypeStruct 391(UBO) 406: 10(int) Constant 58 407: 10(int) Constant 37 - 404: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 405 401 34 406 407 15 15 16 - 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 405 37 34 366 15 36 405 15 16 404 + 404: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 405 401 34 406 407 15 15 16 + 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 405 37 34 366 15 36 405 15 16 404 409: TypePointer Uniform 403(ubo) 410: 409(ptr) Variable Uniform - 411: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 35 408 34 366 15 36 35 410 153 + 411: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 35 408 34 366 15 36 35 410 153 413: TypePointer Uniform 373 419: 10(int) Constant 108 - 418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 272 8 34 419 15 76 18 + 418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 8 34 419 15 76 18 438: 10(int) Constant 121 - 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 84 68 34 438 15 91 18 + 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 68 34 438 15 91 18 440: TypeImage 7(float) 2D sampled format:Unknown - 441: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 15 34 438 15 36 147 148 16 + 441: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 146 15 34 438 15 36 147 148 16 442: TypePointer UniformConstant 440 443(textureposition): 442(ptr) Variable UniformConstant - 444: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 445 441 34 438 15 36 445 443(textureposition) 153 - 447: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 438 15 36 158 148 16 + 444: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 445 441 34 438 15 36 445 443(textureposition) 153 + 447: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 438 15 36 158 148 16 448(samplerposition): 159(ptr) Variable UniformConstant - 449: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 450 447 34 438 15 36 450 448(samplerposition) 153 + 449: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 450 447 34 438 15 36 450 448(samplerposition) 153 452: TypeSampledImage 440 - 453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 166 15 34 438 15 36 167 148 16 + 453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 15 34 438 15 36 167 148 16 461: 10(int) Constant 122 - 459: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 460 68 34 461 15 91 18 + 459: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 460 68 34 461 15 91 18 463(textureNormal): 442(ptr) Variable UniformConstant - 464: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 465 441 34 461 15 36 465 463(textureNormal) 153 - 467: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 461 15 36 158 148 16 + 464: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 465 441 34 461 15 36 465 463(textureNormal) 153 + 467: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 461 15 36 158 148 16 468(samplerNormal): 159(ptr) Variable UniformConstant - 469: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 470 467 34 461 15 36 470 468(samplerNormal) 153 + 469: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 470 467 34 461 15 36 470 468(samplerNormal) 153 479: 10(int) Constant 123 - 477: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 478 19 34 479 15 91 18 + 477: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 478 19 34 479 15 91 18 481(textureAlbedo): 442(ptr) Variable UniformConstant - 482: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 483 441 34 479 15 36 483 481(textureAlbedo) 153 - 485: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 157 37 34 479 15 36 158 148 16 + 482: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 483 441 34 479 15 36 483 481(textureAlbedo) 153 + 485: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 479 15 36 158 148 16 486(samplerAlbedo): 159(ptr) Variable UniformConstant - 487: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 488 485 34 479 15 36 488 486(samplerAlbedo) 153 + 487: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 488 485 34 479 15 36 488 486(samplerAlbedo) 153 493: TypePointer Uniform 208(int) - 496: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 496: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 510: 10(int) Constant 131 - 509: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 68 34 510 15 91 18 + 509: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 68 34 510 15 91 18 512: 67(fvec3) ConstantComposite 103 103 103 537: 7(float) Constant 1036831949 542: 10(int) Constant 152 - 540: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 541 68 34 542 15 91 18 + 540: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 541 68 34 542 15 91 18 548: 10(int) Constant 154 - 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 351 210 34 548 15 91 18 - 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 351 210 34 548 15 91 18 + 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 561: 10(int) Constant 157 - 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 560 68 34 561 15 91 18 + 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 560 68 34 561 15 91 18 564: TypePointer Uniform 17(fvec4) 572: 10(int) Constant 159 - 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 141 8 34 572 15 91 18 + 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 8 34 572 15 91 18 581: 10(int) Constant 163 - 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 580 68 34 581 15 91 18 + 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 580 68 34 581 15 91 18 593: 10(int) Constant 166 - 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 592 8 34 593 15 91 18 + 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 592 8 34 593 15 91 18 595: 7(float) Constant 1064781546 599: 10(int) Constant 167 - 597: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 598 8 34 599 15 91 18 + 597: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 598 8 34 599 15 91 18 601: 7(float) Constant 1063781322 605: 10(int) Constant 168 - 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 604 8 34 605 15 91 18 + 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 604 8 34 605 15 91 18 607: 7(float) Constant 1120403456 611: 10(int) Constant 171 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 610 68 34 611 15 91 18 + 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 610 68 34 611 15 91 18 626: 10(int) Constant 174 - 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 625 8 34 626 15 91 18 + 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 625 8 34 626 15 91 18 634: 10(int) Constant 175 - 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 633 8 34 634 15 91 18 + 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 633 8 34 634 15 91 18 643: 10(int) Constant 176 - 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 642 8 34 643 15 91 18 + 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 642 8 34 643 15 91 18 651: 10(int) Constant 179 - 649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 650 8 34 651 15 91 18 + 649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 650 8 34 651 15 91 18 660: 10(int) Constant 180 - 658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 659 68 34 660 15 91 18 + 658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 659 68 34 660 15 91 18 667: 10(int) Constant 183 - 665: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 666 68 34 667 15 91 18 + 665: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 666 68 34 667 15 91 18 676: 10(int) Constant 184 - 674: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 675 8 34 676 15 91 18 + 674: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 675 8 34 676 15 91 18 685: 10(int) Constant 185 - 683: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 684 68 34 685 15 91 18 + 683: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 684 68 34 685 15 91 18 688: 7(float) Constant 1098907648 693: 7(float) Constant 1075838976 704: 208(int) Constant 2 - 718: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 128 13 23 15 + 718: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 735: TypePointer Input 22(fvec2) 736(inUV): 735(ptr) Variable Input 738: TypePointer Output 17(fvec4) @@ -456,15 +456,15 @@ Validation failed 99(shadow): 21(ptr) Variable Function 104(shadowCoord): 20(ptr) Variable Function 139(dist): 21(ptr) Variable Function - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 33 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 42 28(P) 45 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 46 29(layer) 45 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 49 30(offset) 45 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 33 31(textureProj(vf4;f1;vf2;) - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 100 99(shadow) 45 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 + 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 28(P) 45 + 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 29(layer) 45 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 30(offset) 45 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 31(textureProj(vf4;f1;vf2;) + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 99(shadow) 45 Store 99(shadow) 103 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 105 104(shadowCoord) 45 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 105 104(shadowCoord) 45 109: 17(fvec4) Load 28(P) 110: 21(ptr) AccessChain 28(P) 16 111: 7(float) Load 110 @@ -492,7 +492,7 @@ Validation failed SelectionMerge 138 None BranchConditional 136 137 138 137: Label - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 140 139(dist) 45 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 140 139(dist) 45 154: 144 Load 150(textureShadowMap) 163: 155 Load 160(samplerShadowMap) 168: 164 SampledImage 154 163 @@ -545,16 +545,16 @@ Validation failed 328(param): 20(ptr) Variable Function 330(param): 21(ptr) Variable Function 332(param): 25(ptr) Variable Function - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 58 - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 - 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 62 54(sc) 45 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 65 55(layer) 45 - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 58 56(filterPCF(vf4;f1;) - 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 202 201(sizeQueryTemp) 45 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 + 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 62 54(sc) 45 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 55(layer) 45 + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 56(filterPCF(vf4;f1;) + 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 202 201(sizeQueryTemp) 45 206: 144 Load 150(textureShadowMap) 207: 198(ivec3) ImageQuerySizeLod 206 15 Store 201(sizeQueryTemp) 207 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 215 214(texDim) 45 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 215 214(texDim) 45 219: 218(ptr) AccessChain 201(sizeQueryTemp) 15 220: 10(int) Load 219 221: 208(int) Bitcast 220 @@ -565,19 +565,19 @@ Validation failed 226: 208(int) Bitcast 225 227: 222(ptr) AccessChain 214(texDim) 37 Store 227 226 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 229 228(elements) 45 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 229 228(elements) 45 232: 218(ptr) AccessChain 201(sizeQueryTemp) 23 233: 10(int) Load 232 234: 208(int) Bitcast 233 Store 228(elements) 234 - 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 236 235(levels) 45 + 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(levels) 45 239: 144 Load 150(textureShadowMap) 240: 10(int) ImageQueryLevels 239 241: 208(int) Bitcast 240 Store 235(levels) 241 - 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 243 242(scale) 45 + 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(scale) 45 Store 242(scale) 247 - 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 249 248(dx) 45 + 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(dx) 45 253: 7(float) Load 242(scale) 254: 7(float) FMul 253 103 255: 222(ptr) AccessChain 214(texDim) 15 @@ -585,7 +585,7 @@ Validation failed 257: 7(float) ConvertSToF 256 258: 7(float) FDiv 254 257 Store 248(dx) 258 - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 260 259(dy) 45 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(dy) 45 264: 7(float) Load 242(scale) 265: 7(float) FMul 264 103 266: 222(ptr) AccessChain 214(texDim) 37 @@ -593,13 +593,13 @@ Validation failed 268: 7(float) ConvertSToF 267 269: 7(float) FDiv 265 268 Store 259(dy) 269 - 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 271 270(shadowFactor) 45 + 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(shadowFactor) 45 Store 270(shadowFactor) 181 - 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 276 275(count) 45 + 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 276 275(count) 45 Store 275(count) 280 - 285: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 282 281(range) 45 + 285: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 282 281(range) 45 Store 281(range) 286 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 288 287(x) 45 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 288 287(x) 45 292: 208(int) Load 281(range) 293: 208(int) SNegate 292 Store 287(x) 293 @@ -613,7 +613,7 @@ Validation failed 302: 127(bool) SLessThanEqual 299 300 BranchConditional 302 295 296 295: Label - 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 304 303(y) 45 + 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 304 303(y) 45 308: 208(int) Load 281(range) 309: 208(int) SNegate 308 Store 303(y) 309 @@ -677,12 +677,12 @@ Validation failed 417(shadowFactor): 21(ptr) Variable Function 423(param): 20(ptr) Variable Function 425(param): 21(ptr) Variable Function - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 72(fragcolor) 45 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 73(fragPos) 45 - 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(shadow(vf3;vf3;) - 353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 350 349(i) 45 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 76 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 80 72(fragcolor) 45 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 83 73(fragPos) 45 + 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 76 74(shadow(vf3;vf3;) + 353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 350 349(i) 45 Store 349(i) 280 Branch 354 354: Label @@ -693,7 +693,7 @@ Validation failed 362: 127(bool) SLessThan 359 360 BranchConditional 362 355 356 355: Label - 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 364 363(shadowClip) 45 + 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 364 363(shadowClip) 45 368: 67(fvec3) Load 73(fragPos) 369: 7(float) CompositeExtract 368 0 370: 7(float) CompositeExtract 368 1 @@ -704,7 +704,7 @@ Validation failed 415: 373 Load 414 416: 17(fvec4) VectorTimesMatrix 372 415 Store 363(shadowClip) 416 - 420: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 418 417(shadowFactor) 45 + 420: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 418 417(shadowFactor) 45 421: 208(int) Load 349(i) 422: 7(float) ConvertSToF 421 424: 17(fvec4) Load 363(shadowClip) @@ -754,11 +754,11 @@ Validation failed 682(spec): 69(ptr) Variable Function 722(param): 69(ptr) Variable Function 724(param): 69(ptr) Variable Function - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 91 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 34 15 15 15 15 - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 95 88(inUV) 45 - 435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 91 89(@main(vf2;) - 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 437 436(fragPos) 45 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 88(inUV) 45 + 435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 89(@main(vf2;) + 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 437 436(fragPos) 45 446: 440 Load 443(textureposition) 451: 155 Load 448(samplerposition) 454: 452 SampledImage 446 451 @@ -766,7 +766,7 @@ Validation failed 456: 17(fvec4) ImageSampleImplicitLod 454 455 457: 67(fvec3) VectorShuffle 456 456 0 1 2 Store 436(fragPos) 457 - 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 459 458(normal) 45 + 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 459 458(normal) 45 466: 440 Load 463(textureNormal) 471: 155 Load 468(samplerNormal) 472: 452 SampledImage 466 471 @@ -774,7 +774,7 @@ Validation failed 474: 17(fvec4) ImageSampleImplicitLod 472 473 475: 67(fvec3) VectorShuffle 474 474 0 1 2 Store 458(normal) 475 - 480: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 477 476(albedo) 45 + 480: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 477 476(albedo) 45 484: 440 Load 481(textureAlbedo) 489: 155 Load 486(samplerAlbedo) 490: 452 SampledImage 484 489 @@ -797,7 +797,7 @@ Validation failed case 4: 505 case 5: 506 502: Label - 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 509 508(fragcolor) 45 + 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 509 508(fragcolor) 45 Store 513(param) 512 515: 67(fvec3) Load 436(fragPos) Store 514(param) 515 @@ -834,11 +834,11 @@ Validation failed 536: 67(fvec3) VectorShuffle 535 535 0 1 2 538: 67(fvec3) VectorTimesScalar 536 537 Store 508(fragcolor) 538 - 543: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 540 539(N) 45 + 543: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 540 539(N) 45 544: 67(fvec3) Load 458(normal) 545: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544 Store 539(N) 545 - 549: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 547 546(i) 45 + 549: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 547 546(i) 45 Store 546(i) 280 Branch 550 550: Label @@ -849,7 +849,7 @@ Validation failed 557: 127(bool) SLessThan 555 360 BranchConditional 557 551 552 551: Label - 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 559 558(L) 45 + 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 559 558(L) 45 563: 208(int) Load 546(i) 565: 564(ptr) AccessChain 410 280 286 563 280 566: 17(fvec4) Load 565 @@ -857,14 +857,14 @@ Validation failed 568: 67(fvec3) Load 436(fragPos) 569: 67(fvec3) FSub 567 568 Store 558(L) 569 - 573: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 571 570(dist) 45 + 573: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 571 570(dist) 45 574: 67(fvec3) Load 558(L) 575: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 574 Store 570(dist) 575 576: 67(fvec3) Load 558(L) 577: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 576 Store 558(L) 577 - 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 579 578(V) 45 + 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 579 578(V) 45 583: 564(ptr) AccessChain 410 280 280 584: 17(fvec4) Load 583 585: 67(fvec3) VectorShuffle 584 584 0 1 2 @@ -874,13 +874,13 @@ Validation failed 588: 67(fvec3) Load 578(V) 589: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 588 Store 578(V) 589 - 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 591 590(lightCosInnerAngle) 45 + 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 591 590(lightCosInnerAngle) 45 Store 590(lightCosInnerAngle) 595 - 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 597 596(lightCosOuterAngle) 45 + 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 597 596(lightCosOuterAngle) 45 Store 596(lightCosOuterAngle) 601 - 606: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 603 602(lightRange) 45 + 606: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 603 602(lightRange) 45 Store 602(lightRange) 607 - 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 609 608(dir) 45 + 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 609 608(dir) 45 613: 208(int) Load 546(i) 614: 564(ptr) AccessChain 410 280 286 613 280 615: 17(fvec4) Load 614 @@ -892,45 +892,45 @@ Validation failed 621: 67(fvec3) FSub 616 620 622: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 621 Store 608(dir) 622 - 627: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 624 623(cosDir) 45 + 627: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 624 623(cosDir) 45 628: 67(fvec3) Load 558(L) 629: 67(fvec3) Load 608(dir) 630: 7(float) Dot 628 629 Store 623(cosDir) 630 - 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 632 631(spotEffect) 45 + 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 632 631(spotEffect) 45 636: 7(float) Load 596(lightCosOuterAngle) 637: 7(float) Load 590(lightCosInnerAngle) 638: 7(float) Load 623(cosDir) 639: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 636 637 638 Store 631(spotEffect) 639 - 644: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 641 640(heightAttenuation) 45 + 644: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 641 640(heightAttenuation) 45 645: 7(float) Load 602(lightRange) 646: 7(float) Load 570(dist) 647: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 645 181 646 Store 640(heightAttenuation) 647 - 652: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 649 648(NdotL) 45 + 652: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 649 648(NdotL) 45 653: 67(fvec3) Load 539(N) 654: 67(fvec3) Load 558(L) 655: 7(float) Dot 653 654 656: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 655 Store 648(NdotL) 656 - 661: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 658 657(diff) 45 + 661: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 658 657(diff) 45 662: 7(float) Load 648(NdotL) 663: 67(fvec3) CompositeConstruct 662 662 662 Store 657(diff) 663 - 668: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 665 664(R) 45 + 668: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 665 664(R) 45 669: 67(fvec3) Load 558(L) 670: 67(fvec3) FNegate 669 671: 67(fvec3) Load 539(N) 672: 67(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 670 671 Store 664(R) 672 - 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 674 673(NdotR) 45 + 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 674 673(NdotR) 45 678: 67(fvec3) Load 664(R) 679: 67(fvec3) Load 578(V) 680: 7(float) Dot 678 679 681: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 680 Store 673(NdotR) 681 - 686: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 683 682(spec) 45 + 686: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 683 682(spec) 45 687: 7(float) Load 673(NdotR) 689: 7(float) ExtInst 2(GLSL.std.450) 26(Pow) 687 688 690: 21(ptr) AccessChain 476(albedo) 16 diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index c747d3a118..52db589296 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -129,65 +129,65 @@ Validation failed 13: 10(int) Constant 32 14: 10(int) Constant 6 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 17: TypeVector 7(float) 4 18: 10(int) Constant 4 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 18 20: TypeVector 7(float) 3 - 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 22(VSOutput): TypeStruct 17(fvec4) 20(fvec3) 20(fvec3) - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 26 + 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 26 27: 10(int) Constant 37 28: 10(int) Constant 13 - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 27 28 15 15 16 + 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 24 19 25 27 28 15 15 16 31: 10(int) Constant 39 32: 10(int) Constant 34 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 30 21 25 31 32 15 15 16 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 30 21 25 31 32 15 15 16 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 30 21 25 31 32 15 15 16 36: 10(int) Constant 1 38: 10(int) Constant 5 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 36 18 25 38 - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 35 36 25 15 15 37 35 15 16 23 29 33 + 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 25 38 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 25 15 15 37 35 15 16 23 29 33 39: TypeArray 22(VSOutput) 16 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 34 16 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 34 16 41: TypePointer Function 39 42(GSOutput): TypeStruct 17(fvec4) 10(int) 10(int) 20(fvec3) 20(fvec3) 20(fvec3) 20(fvec3) 44: 10(int) Constant 44 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 24 19 25 44 28 15 15 16 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 24 19 25 44 28 15 15 16 47: 10(int) Constant 46 48: 10(int) Constant 19 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16 - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 11 25 47 48 15 15 16 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 11 25 47 48 15 15 16 + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 11 25 47 48 15 15 16 52: 10(int) Constant 50 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 - 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 21 25 52 27 15 15 16 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 57 36 25 15 15 37 57 15 16 43 45 49 50 53 54 55 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 + 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 + 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 57 36 25 15 15 37 57 15 16 43 45 49 50 53 54 55 58: TypePointer Function 42(GSOutput) 59: TypePointer Function 10(int) 60: TypeFunction 3 41(ptr) 58(ptr) 59(ptr) 59(ptr) - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 3 40 56 11 11 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 67 61 25 15 15 37 67 16 15 - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 73 40 25 15 15 68 18 36 - 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 3 40 56 11 11 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 67 61 25 15 15 37 67 16 15 + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 40 25 15 15 68 18 36 + 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 78: 10(int) Constant 2 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 77 56 25 15 15 68 18 78 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 11 25 15 15 68 18 16 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 46 11 25 15 15 68 18 18 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 56 25 15 15 68 18 78 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 11 25 15 15 68 18 16 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 11 25 15 15 68 18 18 86: TypeInt 32 1 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 87 13 18 15 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 87 13 18 15 89: TypePointer Function 86(int) 93: 10(int) Constant 57 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 92 88 25 93 15 68 18 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 92 88 25 93 15 68 18 95: 86(int) Constant 0 102: 86(int) Constant 3 103: TypeBool - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 104 13 78 15 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 104 13 78 15 110: 10(int) Constant 59 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 56 25 110 15 68 18 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 56 25 110 15 68 18 112: 7(float) Constant 0 113: 17(fvec4) ConstantComposite 112 112 112 112 114: 20(fvec3) ConstantComposite 112 112 112 @@ -196,64 +196,64 @@ Validation failed 118: TypePointer Function 20(fvec3) 121: TypeMatrix 17(fvec4) 4 123: 103(bool) ConstantTrue - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 123 + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 18 123 124: TypeArray 121 78 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78 + 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 122 78 126: TypeArray 121 78 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 122 78 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 122 78 128(UBO): TypeStruct 124 126 17(fvec4) 131: 10(int) Constant 28 132: 10(int) Constant 21 - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 130 125 25 131 132 15 15 16 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 130 125 25 131 132 15 15 16 135: 10(int) Constant 29 136: 10(int) Constant 20 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 134 127 25 135 136 15 15 16 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 134 127 25 135 136 15 15 16 139: 10(int) Constant 30 140: 10(int) Constant 17 - 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 138 19 25 139 140 15 15 16 + 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 19 25 139 140 15 15 16 143: 10(int) Constant 60 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 142 36 25 143 15 37 142 15 16 129 133 137 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 36 25 143 15 37 142 15 16 129 133 137 144(ubo): TypeStruct 128(UBO) 147: 10(int) Constant 33 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 146 141 25 147 27 15 15 16 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 146 36 25 143 15 37 146 15 16 145 + 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 141 25 147 27 15 15 16 + 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 146 36 25 143 15 37 146 15 16 145 149: TypePointer Uniform 144(ubo) 150: 149(ptr) Variable Uniform 152: 10(int) Constant 8 - 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 26 148 25 143 15 37 26 150 152 + 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 26 148 25 143 15 37 26 150 152 154: TypePointer Uniform 121 157: TypeMatrix 20(fvec3) 3 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 21 16 123 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 16 123 168: 86(int) Constant 4 170: 86(int) Constant 2 174: TypePointer Function 17(fvec4) 178: 10(int) Constant 63 - 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 177 19 25 178 15 68 18 + 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 177 19 25 178 15 68 18 186: 10(int) Constant 64 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 185 19 25 186 15 68 18 + 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 19 25 186 15 68 18 196: 10(int) Constant 66 - 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 195 21 25 196 15 68 18 + 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 195 21 25 196 15 68 18 198: TypePointer Uniform 17(fvec4) 206: 86(int) Constant 6 212: 86(int) Constant 5 227: TypePointer Output 17(fvec4) 228(outStream.Pos): 227(ptr) Variable Output 231: 10(int) Constant 75 - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 230 19 25 231 15 37 230 228(outStream.Pos) 152 + 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 230 19 25 231 15 37 230 228(outStream.Pos) 152 234: TypePointer Output 10(int) 235(outStream.ViewportIndex): 234(ptr) Variable Output - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 237 11 25 231 15 37 237 235(outStream.ViewportIndex) 152 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 237 11 25 231 15 37 237 235(outStream.ViewportIndex) 152 240(outStream.PrimitiveID): 234(ptr) Variable Output - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 242 11 25 231 15 37 242 240(outStream.PrimitiveID) 152 + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 242 11 25 231 15 37 242 240(outStream.PrimitiveID) 152 245: TypePointer Output 20(fvec3) 246(outStream.Normal): 245(ptr) Variable Output - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 248 21 25 231 15 37 248 246(outStream.Normal) 152 + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 248 21 25 231 15 37 248 246(outStream.Normal) 152 251(outStream.Color): 245(ptr) Variable Output - 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 253 21 25 231 15 37 253 251(outStream.Color) 152 + 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 253 21 25 231 15 37 253 251(outStream.Color) 152 256(outStream.ViewVec): 245(ptr) Variable Output - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 258 21 25 231 15 37 258 256(outStream.ViewVec) 152 + 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 21 25 231 15 37 258 256(outStream.ViewVec) 152 261(outStream.LightVec): 245(ptr) Variable Output - 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 263 21 25 231 15 37 263 261(outStream.LightVec) 152 + 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 263 21 25 231 15 37 263 261(outStream.LightVec) 152 269: TypeArray 17(fvec4) 16 270: TypePointer Input 269 271(input.Pos): 270(ptr) Variable Input @@ -338,14 +338,14 @@ Validation failed 175(pos): 174(ptr) Variable Function 183(worldPos): 174(ptr) Variable Function 193(lPos): 118(ptr) Variable Function - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 68 - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 25 15 15 15 15 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 72 62(input) 75 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 76 63(outStream) 75 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 64(InvocationID) 75 - 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 83 65(PrimitiveID) 75 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 68 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 91 90(i) 75 + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 68 + 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 25 15 15 15 15 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 62(input) 75 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 63(outStream) 75 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 80 64(InvocationID) 75 + 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 83 65(PrimitiveID) 75 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 68 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 91 90(i) 75 Store 90(i) 95 Branch 96 96: Label @@ -356,7 +356,7 @@ Validation failed 106: 103(bool) SLessThan 101 102 BranchConditional 106 97 98 97: Label - 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 107(output) 75 + 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(output) 75 Store 107(output) 115 116: 86(int) Load 90(i) 119: 118(ptr) AccessChain 62(input) 116 117 @@ -379,19 +379,19 @@ Validation failed 172: 20(fvec3) Load 171 173: 118(ptr) AccessChain 107(output) 168 Store 173 172 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 176 175(pos) 75 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 176 175(pos) 75 180: 86(int) Load 90(i) 181: 174(ptr) AccessChain 62(input) 180 95 182: 17(fvec4) Load 181 Store 175(pos) 182 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 184 183(worldPos) 75 + 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(worldPos) 75 188: 17(fvec4) Load 175(pos) 189: 10(int) Load 64(InvocationID) 190: 154(ptr) AccessChain 150 95 117 189 191: 121 Load 190 192: 17(fvec4) VectorTimesMatrix 188 191 Store 183(worldPos) 192 - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 194 193(lPos) 75 + 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 194 193(lPos) 75 199: 198(ptr) AccessChain 150 95 170 200: 17(fvec4) Load 199 201: 10(int) Load 64(InvocationID) diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index a389bba176..c373681813 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -172,129 +172,129 @@ Validation failed 13: 10(int) Constant 32 14: 10(int) Constant 6 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 17: TypeVector 7(float) 4 18: 10(int) Constant 4 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 18 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 18 20: TypePointer Function 17(fvec4) 21: TypeFunction 7(float) 20(ptr) 20(ptr) - 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 8 19 19 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 29 + 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 8 19 19 + 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 29 31: 10(int) Constant 1 32: 10(int) Constant 5 - 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 31 18 28 32 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 26 22 28 15 15 30 26 16 15 - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 37 19 28 15 15 27 18 31 - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 31 18 28 32 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 26 22 28 15 15 30 26 16 15 + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 37 19 28 15 15 27 18 31 + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 42: 10(int) Constant 2 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 41 19 28 15 15 27 18 42 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 19 28 15 15 27 18 42 44: TypeVector 7(float) 2 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 42 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 42 46: TypePointer Function 44(fvec2) 47: TypeBool - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 50: TypeFunction 47(bool) 20(ptr) 46(ptr) - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 49 19 45 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 55 51 28 15 15 30 55 16 15 - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 61 19 28 15 15 56 18 31 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 64 45 28 15 15 56 18 42 + 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 49 19 45 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 55 51 28 15 15 30 55 16 15 + 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 61 19 28 15 15 56 18 31 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 45 28 15 15 56 18 42 66: TypeVector 7(float) 3 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 68(VSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2) 70: 10(int) Constant 44 71: 10(int) Constant 13 - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 70 71 15 15 16 + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 61 19 28 70 71 15 15 16 74: 10(int) Constant 45 75: 10(int) Constant 35 - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 74 75 15 15 16 + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 73 67 28 74 75 15 15 16 78: 10(int) Constant 46 79: 10(int) Constant 31 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 78 79 15 15 16 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 81 31 28 15 15 30 81 15 16 69 72 76 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 77 45 28 78 79 15 15 16 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 81 31 28 15 15 30 81 15 16 69 72 76 82: TypeArray 68(VSOutput) 18 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 80 18 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 80 18 84: TypePointer Function 82 85: TypeArray 7(float) 18 - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 18 + 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 18 87: TypeArray 7(float) 42 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 42 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 42 89(ConstantsHSOutput): TypeStruct 85 87 92: 10(int) Constant 58 93: 10(int) Constant 25 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 91 86 28 92 93 15 15 16 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 86 28 92 93 15 15 16 96: 10(int) Constant 59 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 95 88 28 96 93 15 15 16 - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 98 31 28 15 15 30 98 15 16 90 94 + 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 88 28 96 93 15 15 16 + 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 98 31 28 15 15 30 98 15 16 90 94 99: TypeFunction 89(ConstantsHSOutput) 84(ptr) - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 97 83 - 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 103 100 28 15 15 30 103 16 15 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 104 18 31 + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 97 83 + 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 103 100 28 15 15 30 103 16 15 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 83 28 15 15 104 18 31 111: TypePointer Function 10(int) 112(HSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2) 114: 10(int) Constant 51 - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 61 19 28 114 13 15 15 16 + 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 61 19 28 114 13 15 15 16 116: 10(int) Constant 52 - 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 73 67 28 116 75 15 15 16 + 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 73 67 28 116 75 15 15 16 118: 10(int) Constant 53 - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 77 45 28 118 79 15 15 16 - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 120 31 28 15 15 30 120 15 16 113 115 117 + 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 77 45 28 118 79 15 15 16 + 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 120 31 28 15 15 30 120 15 16 113 115 117 121: TypeFunction 112(HSOutput) 84(ptr) 111(ptr) - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 119 83 11 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 126 122 28 15 15 30 126 16 15 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 109 83 28 15 15 127 18 31 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 134 11 28 15 15 127 18 42 + 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 119 83 11 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 126 122 28 15 15 30 126 16 15 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 83 28 15 15 127 18 31 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 134 11 28 15 15 127 18 42 140: 10(int) Constant 67 - 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 139 19 28 140 15 27 18 + 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 139 19 28 140 15 27 18 142: 7(float) Constant 1056964608 147: TypePointer Function 7(float) 151: 10(int) Constant 69 - 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 150 8 28 151 15 27 18 + 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 150 8 28 151 15 27 18 156: 7(float) Constant 1073741824 161: 10(int) Constant 72 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 160 19 28 161 15 27 18 + 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 19 28 161 15 27 18 164: TypeMatrix 17(fvec4) 4 166: 47(bool) ConstantTrue - 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 19 18 166 + 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 18 166 167: TypeArray 17(fvec4) 14 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 19 14 + 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 19 14 169(UBO): TypeStruct 164 164 17(fvec4) 167 7(float) 7(float) 44(fvec2) 7(float) 172: 10(int) Constant 29 173: 10(int) Constant 20 - 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 171 165 28 172 173 15 15 16 - 174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 171 165 28 172 173 15 15 16 + 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 165 28 172 173 15 15 16 + 174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 165 28 172 173 15 15 16 177: 10(int) Constant 30 178: 10(int) Constant 17 - 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 176 19 28 177 178 15 15 16 + 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 19 28 177 178 15 15 16 181: 10(int) Constant 22 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 180 168 28 79 181 15 15 16 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 168 28 79 181 15 15 16 184: 10(int) Constant 27 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16 - 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16 + 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 8 28 75 184 15 15 16 + 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 8 28 75 184 15 15 16 188: 10(int) Constant 34 - 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 187 45 28 188 173 15 15 16 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 183 8 28 75 184 15 15 16 - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 191 31 28 161 15 30 191 15 16 170 174 175 179 182 185 186 189 + 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 45 28 188 173 15 15 16 + 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 8 28 75 184 15 15 16 + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 191 31 28 161 15 30 191 15 16 170 174 175 179 182 185 186 189 192(ubo): TypeStruct 169(UBO) 195: 10(int) Constant 37 - 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 194 190 28 195 195 15 15 16 - 196: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 194 31 28 161 15 30 194 15 16 193 + 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 190 28 195 195 15 15 16 + 196: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 194 31 28 161 15 30 194 15 16 193 197: TypePointer Uniform 192(ubo) 198: 197(ptr) Variable Uniform 200: 10(int) Constant 8 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 29 196 28 161 15 30 29 198 200 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 29 196 28 161 15 30 29 198 200 201: TypeInt 32 1 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 202 13 18 15 + 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 202 13 18 15 204: 201(int) Constant 0 205: 201(int) Constant 1 206: TypePointer Uniform 164 213: 10(int) Constant 75 - 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 212 19 28 213 15 27 18 + 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 19 28 213 15 27 18 217: 7(float) Constant 0 218: 66(fvec3) ConstantComposite 217 217 217 230: 10(int) Constant 76 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 229 19 28 230 15 27 18 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 19 28 230 15 27 18 252: 201(int) Constant 6 253: TypePointer Uniform 44(fvec2) 275: 201(int) Constant 7 @@ -303,46 +303,46 @@ Validation failed 284: 7(float) Constant 1065353216 285: 7(float) Constant 1115684864 293: 10(int) Constant 98 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 292 19 28 293 15 56 18 + 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 292 19 28 293 15 56 18 296: TypeImage 7(float) 2D sampled format:Unknown 299: 10(int) Constant 99 - 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 298 15 28 299 15 30 300 301 16 + 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 298 15 28 299 15 30 300 301 16 302: TypePointer UniformConstant 296 303(textureHeight): 302(ptr) Variable UniformConstant - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 305 297 28 299 15 30 305 303(textureHeight) 200 + 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 305 297 28 299 15 30 305 303(textureHeight) 200 307: TypeSampler - 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 309 31 28 299 15 30 310 301 16 + 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 309 31 28 299 15 30 310 301 16 311: TypePointer UniformConstant 307 312(samplerHeight): 311(ptr) Variable UniformConstant - 313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 314 308 28 299 15 30 314 312(samplerHeight) 200 + 313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 314 308 28 299 15 30 314 312(samplerHeight) 200 316: TypeSampledImage 296 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 318 15 28 299 15 30 319 301 16 + 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 318 15 28 299 15 30 319 301 16 324: 201(int) Constant 4 332: TypePointer Function 201(int) 336: 10(int) Constant 102 - 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 335 203 28 336 15 56 18 - 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 335 203 28 336 15 56 18 + 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 347: 201(int) Constant 3 349: TypePointer Uniform 17(fvec4) 353: 7(float) Constant 1090519040 - 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 + 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 360: 47(bool) ConstantFalse - 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 368: TypePointer Function 89(ConstantsHSOutput) 372: 10(int) Constant 113 - 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 371 97 28 372 15 104 18 + 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 371 97 28 372 15 104 18 374: 85 ConstantComposite 217 217 217 217 375: 87 ConstantComposite 217 217 376:89(ConstantsHSOutput) ConstantComposite 374 375 377: 201(int) Constant 2 - 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 - 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 48 13 42 15 + 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 + 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 + 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 458: TypePointer Function 112(HSOutput) 461: 10(int) Constant 159 - 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 371 119 28 461 15 127 18 + 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 371 119 28 461 15 127 18 463: 17(fvec4) ConstantComposite 217 217 217 217 464: 44(fvec2) ConstantComposite 217 217 465:112(HSOutput) ConstantComposite 463 218 464 @@ -502,30 +502,30 @@ Validation failed 158(v0): 20(ptr) Variable Function 210(clip0): 20(ptr) Variable Function 227(clip1): 20(ptr) Variable Function - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 27 - 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 36 23(p0) 39 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 40 24(p1) 39 - 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 27 25(screenSpaceTessFactor(vf4;vf4;) - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 138 137(midPoint) 39 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 27 + 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 36 23(p0) 39 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 24(p1) 39 + 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 27 25(screenSpaceTessFactor(vf4;vf4;) + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 138 137(midPoint) 39 143: 17(fvec4) Load 23(p0) 144: 17(fvec4) Load 24(p1) 145: 17(fvec4) FAdd 143 144 146: 17(fvec4) VectorTimesScalar 145 142 Store 137(midPoint) 146 - 152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 149 148(radius) 39 + 152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 149 148(radius) 39 153: 17(fvec4) Load 23(p0) 154: 17(fvec4) Load 24(p1) 155: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 153 154 157: 7(float) FDiv 155 156 Store 148(radius) 157 - 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 159 158(v0) 39 + 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(v0) 39 163: 17(fvec4) Load 137(midPoint) 207: 206(ptr) AccessChain 198 204 205 208: 164 Load 207 209: 17(fvec4) VectorTimesMatrix 163 208 Store 158(v0) 209 - 214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 211 210(clip0) 39 + 214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(clip0) 39 215: 17(fvec4) Load 158(v0) 216: 7(float) Load 148(radius) 219: 7(float) CompositeExtract 218 0 @@ -537,7 +537,7 @@ Validation failed 225: 164 Load 224 226: 17(fvec4) VectorTimesMatrix 223 225 Store 210(clip0) 226 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 228 227(clip1) 39 + 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(clip1) 39 232: 17(fvec4) Load 158(v0) 233: 7(float) Load 148(radius) 234: 7(float) CompositeExtract 218 0 @@ -601,12 +601,12 @@ Validation failed 57: Label 290(pos): 20(ptr) Variable Function 333(i): 332(ptr) Variable Function - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 56 - 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 60 52(Pos) 39 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 63 53(inUV) 39 - 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 56 54(frustumCheck(vf4;vf2;) - 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 291 290(pos) 39 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 60 52(Pos) 39 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 53(inUV) 39 + 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 54(frustumCheck(vf4;vf2;) + 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 291 290(pos) 39 295: 17(fvec4) Load 52(Pos) Store 290(pos) 295 306: 296 Load 303(textureHeight) @@ -623,7 +623,7 @@ Validation failed 330: 7(float) FSub 329 327 331: 147(ptr) AccessChain 290(pos) 31 Store 331 330 - 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 334 333(i) 39 + 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 334 333(i) 39 Store 333(i) 204 Branch 338 338: Label @@ -669,11 +669,11 @@ Validation failed 422(param): 20(ptr) Variable Function 427(param): 20(ptr) Variable Function 430(param): 20(ptr) Variable Function - 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 104 - 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 - 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 108 101(patch) 39 - 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - 373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 370 369(output) 39 + 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 104 + 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 + 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 101(patch) 39 + 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 370 369(output) 39 Store 369(output) 376 379: 20(ptr) AccessChain 101(patch) 204 204 380: 17(fvec4) Load 379 @@ -782,12 +782,12 @@ Validation failed 124(InvocationID): 111(ptr) FunctionParameter 128: Label 459(output): 458(ptr) Variable Function - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 127 - 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 28 15 15 15 15 - 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 131 123(patch) 39 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 133 124(InvocationID) 39 - 457: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) - 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 460 459(output) 39 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 127 + 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 + 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 131 123(patch) 39 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 133 124(InvocationID) 39 + 457: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 460 459(output) 39 Store 459(output) 465 466: 10(int) Load 124(InvocationID) 467: 20(ptr) AccessChain 123(patch) 466 204 diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 939f64ad64..42c0f7188b 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -156,142 +156,142 @@ Validation failed 13: 10(int) Constant 32 14: 10(int) Constant 6 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 17: 10(int) Constant 4 18: TypeArray 7(float) 17 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 17 + 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 17 20: 10(int) Constant 2 21: TypeArray 7(float) 20 - 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 8 20 + 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 20 23(ConstantsHSOutput): TypeStruct 18 21 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 27 + 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 27 28: 10(int) Constant 51 29: 10(int) Constant 25 - 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 25 19 26 28 29 15 15 16 + 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 19 26 28 29 15 15 16 32: 10(int) Constant 52 - 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 31 22 26 32 29 15 15 16 + 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 29 15 15 16 35: 10(int) Constant 1 37: 10(int) Constant 5 - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 35 17 26 37 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 34 35 26 15 15 36 34 15 16 24 30 + 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 35 17 26 37 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 34 35 26 15 15 36 34 15 16 24 30 38: TypePointer Function 23(ConstantsHSOutput) 39: TypeVector 7(float) 2 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 20 41: TypePointer Function 39(fvec2) 42: TypeVector 7(float) 4 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 17 + 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 17 44: TypeVector 7(float) 3 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 46(HSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) 49: 10(int) Constant 44 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 49 13 15 15 16 + 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 48 43 26 49 13 15 15 16 52: 10(int) Constant 45 53: 10(int) Constant 35 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 51 45 26 52 53 15 15 16 + 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 45 26 52 53 15 15 16 56: 10(int) Constant 46 57: 10(int) Constant 31 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 56 57 15 15 16 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 59 35 26 15 15 36 59 15 16 47 50 54 + 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 40 26 56 57 15 15 16 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 59 35 26 15 15 36 59 15 16 47 50 54 60: TypeArray 46(HSOutput) 17 - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 58 17 + 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 58 17 62(DSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) 44(fvec3) 44(fvec3) 44(fvec3) 44(fvec3) 64: 10(int) Constant 57 65: 10(int) Constant 13 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 48 43 26 64 65 15 15 16 + 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 48 43 26 64 65 15 15 16 68: 10(int) Constant 63 69: 10(int) Constant 37 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 71: 10(int) Constant 59 - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 55 40 26 71 57 15 15 16 - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 - 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 - 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 67 45 26 68 69 15 15 16 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 77 35 26 15 15 36 77 15 16 63 66 70 72 73 74 75 + 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 40 26 71 57 15 15 16 + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 + 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 + 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 + 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 77 35 26 15 15 36 77 15 16 63 66 70 72 73 74 75 78: TypeFunction 62(DSOutput) 38(ptr) 41(ptr) 60 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 76 33 40 58 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 84 79 26 15 15 36 84 16 15 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 90 33 26 15 15 85 17 35 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 94 40 26 15 15 85 17 20 - 96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 97 58 26 15 15 85 17 16 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 76 33 40 58 + 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 26 15 15 36 84 16 15 + 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 33 26 15 15 85 17 35 + 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 94 40 26 15 15 85 17 20 + 96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 97 58 26 15 15 85 17 16 100: TypePointer Function 62(DSOutput) 104: 10(int) Constant 70 - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 103 76 26 104 15 85 17 + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 103 76 26 104 15 85 17 106: 7(float) Constant 0 107: 42(fvec4) ConstantComposite 106 106 106 106 108: 44(fvec3) ConstantComposite 106 106 106 109: 39(fvec2) ConstantComposite 106 106 110:62(DSOutput) ConstantComposite 107 108 109 108 108 108 108 114: 10(int) Constant 71 - 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 113 40 26 114 15 85 17 + 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 40 26 114 15 85 17 116: TypeInt 32 1 - 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 117 13 17 15 + 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 117 13 17 15 119: 116(int) Constant 0 120: 116(int) Constant 2 122: 116(int) Constant 1 124: TypePointer Function 7(float) 132: 10(int) Constant 72 - 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 131 40 26 132 15 85 17 + 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 131 40 26 132 15 85 17 134: 116(int) Constant 3 148: TypePointer Function 44(fvec3) 152: 10(int) Constant 75 - 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 151 45 26 152 15 85 17 + 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 151 45 26 152 15 85 17 163: 10(int) Constant 76 - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 162 45 26 163 15 85 17 + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 162 45 26 163 15 85 17 178: TypePointer Function 42(fvec4) 182: 10(int) Constant 80 - 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 181 43 26 182 15 85 17 + 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 181 43 26 182 15 85 17 193: 10(int) Constant 81 - 191: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 192 43 26 193 15 85 17 + 191: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 192 43 26 193 15 85 17 204: 10(int) Constant 82 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 203 43 26 204 15 85 17 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 203 43 26 204 15 85 17 212: TypeImage 7(float) 2D sampled format:Unknown 215: 10(int) Constant 84 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(Unknown) - 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 214 15 26 215 15 36 216 217 16 + 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 214 15 26 215 15 36 216 217 16 218: TypePointer UniformConstant 212 219(displacementMapTexture): 218(ptr) Variable UniformConstant 222: 10(int) Constant 8 - 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 221 213 26 215 15 36 221 219(displacementMapTexture) 222 + 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 221 213 26 215 15 36 221 219(displacementMapTexture) 222 224: TypeSampler - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 226 35 26 215 15 36 227 217 16 + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 226 35 26 215 15 36 227 217 16 228: TypePointer UniformConstant 224 229(displacementMapSampler): 228(ptr) Variable UniformConstant - 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 231 225 26 215 15 36 231 229(displacementMapSampler) 222 + 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 231 225 26 215 15 36 231 229(displacementMapSampler) 222 233: TypeSampledImage 212 - 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 235 15 26 215 15 36 236 217 16 + 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 235 15 26 215 15 36 236 217 16 242: TypeMatrix 42(fvec4) 4 244: TypeBool 245: 244(bool) ConstantTrue - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 43 17 245 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 43 17 245 246: TypeArray 42(fvec4) 14 - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(SAbs) 43 14 + 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 43 14 248(UBO): TypeStruct 242 242 42(fvec4) 246 7(float) 7(float) 39(fvec2) 7(float) 251: 10(int) Constant 29 252: 10(int) Constant 20 - 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16 - 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 250 243 26 251 252 15 15 16 + 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 243 26 251 252 15 15 16 + 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 243 26 251 252 15 15 16 256: 10(int) Constant 30 257: 10(int) Constant 17 - 254: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 255 43 26 256 257 15 15 16 + 254: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 255 43 26 256 257 15 15 16 260: 10(int) Constant 22 - 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 259 247 26 57 260 15 15 16 + 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 259 247 26 57 260 15 15 16 263: 10(int) Constant 27 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16 - 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16 + 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 8 26 53 263 15 15 16 + 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 8 26 53 263 15 15 16 267: 10(int) Constant 34 - 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 266 40 26 267 252 15 15 16 - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 262 8 26 53 263 15 15 16 - 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 270 35 26 215 15 36 270 15 16 249 253 254 258 261 264 265 268 + 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 40 26 267 252 15 15 16 + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 8 26 53 263 15 15 16 + 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 270 35 26 215 15 36 270 15 16 249 253 254 258 261 264 265 268 271(ubo): TypeStruct 248(UBO) - 272: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 273 269 26 69 69 15 15 16 - 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 273 35 26 215 15 36 273 15 16 272 + 272: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 273 269 26 69 69 15 15 16 + 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 273 35 26 215 15 36 273 15 16 272 275: TypePointer Uniform 271(ubo) 276: 275(ptr) Variable Uniform - 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 27 274 26 215 15 36 27 276 222 + 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 27 274 26 215 15 36 27 276 222 278: 116(int) Constant 4 279: TypePointer Uniform 7(float) 288: TypePointer Uniform 242 @@ -455,15 +455,15 @@ Validation failed 179(pos1): 178(ptr) Variable Function 190(pos2): 178(ptr) Variable Function 201(pos): 178(ptr) Variable Function - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 85 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 26 15 15 15 15 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 89 80(input) 92 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 93 81(TessCoord) 92 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 96 82(patch) 92 - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 85 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 102 101(output) 92 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 15 15 15 15 + 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 80(input) 92 + 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 93 81(TessCoord) 92 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 96 82(patch) 92 + 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 102 101(output) 92 Store 101(output) 110 - 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 112 111(uv1) 92 + 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 112 111(uv1) 92 121: 39(fvec2) CompositeExtract 82(patch) 0 2 123: 39(fvec2) CompositeExtract 82(patch) 1 2 125: 124(ptr) AccessChain 81(TessCoord) 15 @@ -471,7 +471,7 @@ Validation failed 127: 39(fvec2) CompositeConstruct 126 126 128: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 121 123 127 Store 111(uv1) 128 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 130 129(uv2) 92 + 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 130 129(uv2) 92 135: 39(fvec2) CompositeExtract 82(patch) 3 2 136: 39(fvec2) CompositeExtract 82(patch) 2 2 137: 124(ptr) AccessChain 81(TessCoord) 15 @@ -487,7 +487,7 @@ Validation failed 146: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 141 142 145 147: 41(ptr) AccessChain 101(output) 120 Store 147 146 - 153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 150 149(n1) 92 + 153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 150 149(n1) 92 154: 44(fvec3) CompositeExtract 82(patch) 0 1 155: 44(fvec3) CompositeExtract 82(patch) 1 1 156: 124(ptr) AccessChain 81(TessCoord) 15 @@ -495,7 +495,7 @@ Validation failed 158: 44(fvec3) CompositeConstruct 157 157 157 159: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 154 155 158 Store 149(n1) 159 - 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 161 160(n2) 92 + 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 161 160(n2) 92 165: 44(fvec3) CompositeExtract 82(patch) 3 1 166: 44(fvec3) CompositeExtract 82(patch) 2 1 167: 124(ptr) AccessChain 81(TessCoord) 15 @@ -511,7 +511,7 @@ Validation failed 176: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 171 172 175 177: 148(ptr) AccessChain 101(output) 122 Store 177 176 - 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 180 179(pos1) 92 + 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 180 179(pos1) 92 184: 42(fvec4) CompositeExtract 82(patch) 0 0 185: 42(fvec4) CompositeExtract 82(patch) 1 0 186: 124(ptr) AccessChain 81(TessCoord) 15 @@ -519,7 +519,7 @@ Validation failed 188: 42(fvec4) CompositeConstruct 187 187 187 187 189: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 184 185 188 Store 179(pos1) 189 - 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 191 190(pos2) 92 + 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 191 190(pos2) 92 195: 42(fvec4) CompositeExtract 82(patch) 3 0 196: 42(fvec4) CompositeExtract 82(patch) 2 0 197: 124(ptr) AccessChain 81(TessCoord) 15 @@ -527,7 +527,7 @@ Validation failed 199: 42(fvec4) CompositeConstruct 198 198 198 198 200: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 195 196 199 Store 190(pos2) 200 - 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 202 201(pos) 92 + 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 202 201(pos) 92 206: 42(fvec4) Load 179(pos1) 207: 42(fvec4) Load 190(pos2) 208: 124(ptr) AccessChain 81(TessCoord) 35 diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index a7af4326e9..77c3fb20ee 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -130,61 +130,61 @@ Validation failed 13: 10(int) Constant 32 14: 10(int) Constant 6 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 12 13 14 15 + 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 9 13 16 15 + 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 17: TypeVector 7(float) 3 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 16 + 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 19: TypeVector 7(float) 2 20: 10(int) Constant 2 - 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 20 + 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 20 22: TypeInt 32 1 25: 10(int) Constant 4 - 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(RoundEven) 23 13 25 15 + 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 23 13 25 15 26(VSInput): TypeStruct 17(fvec3) 17(fvec3) 19(fvec2) 17(fvec3) 17(fvec3) 17(fvec3) 7(float) 22(int) - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(Modf) 0 30 + 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 30 31: 10(int) Constant 35 32: 10(int) Constant 40 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 + 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 + 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 36: 10(int) Constant 30 37: 10(int) Constant 31 - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 35 21 29 36 37 15 15 16 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 28 18 29 31 32 15 15 16 + 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 35 21 29 36 37 15 15 16 + 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 + 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 + 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 43: 10(int) Constant 36 44: 10(int) Constant 41 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 42 8 29 43 44 15 15 16 + 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 42 8 29 43 44 15 15 16 47: 10(int) Constant 37 48: 10(int) Constant 42 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 46 24 29 47 48 15 15 16 + 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 24 29 47 48 15 15 16 51: 10(int) Constant 1 53: 10(int) Constant 5 - 52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(Round) 51 25 29 53 - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 50 51 29 15 15 52 50 15 16 27 33 34 38 39 40 41 45 + 52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 51 25 29 53 + 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 50 51 29 15 15 52 50 15 16 27 33 34 38 39 40 41 45 54: TypePointer Function 26(VSInput) 55: TypeVector 7(float) 4 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(FSign) 8 25 + 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 25 57(VSOutput): TypeStruct 55(fvec4) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) 60: 10(int) Constant 53 61: 10(int) Constant 13 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 59 56 29 60 61 15 15 16 + 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 56 29 60 61 15 15 16 64: 10(int) Constant 58 - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 63 18 29 64 47 15 15 16 - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 70 51 29 15 15 52 70 15 16 58 62 65 66 67 68 + 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 + 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 + 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 + 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 + 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 + 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 70 51 29 15 15 52 70 15 16 58 62 65 66 67 68 71: TypeFunction 57(VSOutput) 54(ptr) - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(Floor) 16 69 49 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(Cosh) 75 72 29 15 15 52 75 16 15 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 81 49 29 15 15 76 25 51 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(Sqrt) + 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 69 49 + 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 75 72 29 15 15 52 75 16 15 + 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 49 29 15 15 76 25 51 + 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 85: TypePointer Function 57(VSOutput) 89: 10(int) Constant 63 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 88 69 29 89 15 76 25 + 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 69 29 89 15 76 25 91: 7(float) Constant 0 92: 55(fvec4) ConstantComposite 91 91 91 91 93: 17(fvec3) ConstantComposite 91 91 91 @@ -197,64 +197,64 @@ Validation failed 105: TypePointer Function 22(int) 113: TypePointer Function 7(float) 117: 10(int) Constant 68 - 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 116 8 29 117 15 76 25 + 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 116 8 29 117 15 76 25 119: 22(int) Constant 5 122: TypeMatrix 55(fvec4) 4 124: TypeBool 125: 124(bool) ConstantTrue - 123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 56 25 125 + 123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 56 25 125 126(UBO): TypeStruct 122 122 55(fvec4) 7(float) 7(float) 129: 10(int) Constant 43 130: 10(int) Constant 20 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 128 123 29 129 130 15 15 16 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 128 123 29 129 130 15 15 16 + 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 128 123 29 129 130 15 15 16 + 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 128 123 29 129 130 15 15 16 134: 10(int) Constant 44 135: 10(int) Constant 17 - 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 133 56 29 134 135 15 15 16 + 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 133 56 29 134 135 15 15 16 138: 10(int) Constant 46 - 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 8 29 138 135 15 15 16 - 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 137 8 29 138 135 15 15 16 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 141 51 29 117 15 52 141 15 16 127 131 132 136 139 + 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 8 29 138 135 15 15 16 + 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 8 29 138 135 15 15 16 + 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 141 51 29 117 15 52 141 15 16 127 131 132 136 139 142(ubo): TypeStruct 126(UBO) 145: 10(int) Constant 49 - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(Radians) 144 140 29 145 47 15 15 16 - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(Fract) 144 51 29 117 15 52 144 15 16 143 + 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 140 29 145 47 15 15 16 + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 144 51 29 117 15 52 144 15 16 143 147: TypePointer Uniform 142(ubo) 148: 147(ptr) Variable Uniform 150: 10(int) Constant 8 - 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(Atan) 30 146 29 117 15 52 30 148 150 + 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 30 146 29 117 15 52 30 148 150 151: 22(int) Constant 0 152: TypePointer Uniform 7(float) 160: 10(int) Constant 69 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 159 8 29 160 15 76 25 + 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 8 29 160 15 76 25 168: TypeMatrix 17(fvec3) 3 - 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108 18 16 125 + 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 18 16 125 170: TypePointer Function 168 174: 10(int) Constant 71 - 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 173 169 29 174 15 76 25 + 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 173 169 29 174 15 76 25 181: 7(float) Constant 1065353216 201: 10(int) Constant 79 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 200 169 29 201 15 76 25 + 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 169 29 201 15 76 25 227: 10(int) Constant 87 - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 226 169 29 227 15 76 25 + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 226 169 29 227 15 76 25 241: 10(int) Constant 91 - 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 240 169 29 241 15 76 25 + 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 240 169 29 241 15 76 25 250: 22(int) Constant 4 261: TypePointer Function 122 265: 10(int) Constant 96 - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 264 123 29 265 15 76 25 + 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 264 123 29 265 15 76 25 271: TypePointer Function 55(fvec4) 273: 22(int) Constant 1 274: 55(fvec4) ConstantComposite 91 181 91 91 280: 55(fvec4) ConstantComposite 91 91 91 181 285: 10(int) Constant 101 - 283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 284 56 29 285 15 76 25 + 283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 56 29 285 15 76 25 298: 10(int) Constant 102 - 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 297 56 29 298 15 76 25 + 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 56 29 298 15 76 25 302: 22(int) Constant 6 316: TypePointer Uniform 122 356: 10(int) Constant 108 - 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(Pow) 355 18 29 356 15 76 25 + 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 355 18 29 356 15 76 25 358: TypePointer Uniform 55(fvec4) 385: TypePointer Input 17(fvec3) 386(input.Pos): 385(ptr) Variable Input @@ -343,11 +343,11 @@ Validation failed 282(locPos): 271(ptr) Variable Function 295(pos): 271(ptr) Variable Function 353(lPos): 97(ptr) Variable Function - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(Acosh) 76 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103 29 15 15 15 15 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 80 73(input) 83 - 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101 76 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 87 86(output) 83 + 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 76 + 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 15 15 15 15 + 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 80 73(input) 83 + 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 76 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 86(output) 83 Store 86(output) 94 98: 97(ptr) AccessChain 73(input) 96 99: 17(fvec3) Load 98 @@ -363,7 +363,7 @@ Validation failed 111: 17(fvec3) CompositeConstruct 109 110 108 112: 97(ptr) AccessChain 86(output) 96 Store 112 111 - 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 115 114(s) 83 + 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 115 114(s) 83 120: 113(ptr) AccessChain 73(input) 119 15 121: 7(float) Load 120 153: 152(ptr) AccessChain 148 151 96 @@ -371,7 +371,7 @@ Validation failed 155: 7(float) FAdd 121 154 156: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 155 Store 114(s) 156 - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 158 157(c) 83 + 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(c) 83 162: 113(ptr) AccessChain 73(input) 119 15 163: 7(float) Load 162 164: 152(ptr) AccessChain 148 151 96 @@ -379,7 +379,7 @@ Validation failed 166: 7(float) FAdd 163 165 167: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 166 Store 157(c) 167 - 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 172 171(mx) 83 + 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 172 171(mx) 83 176: 7(float) Load 157(c) 177: 7(float) Load 114(s) 178: 7(float) FNegate 177 @@ -404,7 +404,7 @@ Validation failed 196: 7(float) FAdd 193 195 197: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 196 Store 157(c) 197 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 199 198(my) 83 + 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(my) 83 203: 7(float) Load 157(c) 204: 7(float) Load 114(s) 205: 7(float) FNegate 204 @@ -429,7 +429,7 @@ Validation failed 222: 7(float) FAdd 219 221 223: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 222 Store 157(c) 223 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 225 224(mz) 83 + 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 225 224(mz) 83 229: 7(float) Load 157(c) 230: 7(float) Load 114(s) 231: 7(float) FNegate 230 @@ -440,7 +440,7 @@ Validation failed 236: 17(fvec3) CompositeConstruct 91 232 233 237: 168 CompositeConstruct 234 235 236 Store 224(mz) 237 - 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 239 238(rotMat) 83 + 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 239 238(rotMat) 83 243: 168 Load 171(mx) 244: 168 Load 198(my) 245: 168 MatrixTimesMatrix 243 244 @@ -461,7 +461,7 @@ Validation failed 259: 7(float) FAdd 256 258 260: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 259 Store 157(c) 260 - 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 263 262(gRotMat) 83 + 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 263 262(gRotMat) 83 267: 7(float) Load 157(c) 268: 7(float) Load 114(s) 269: 7(float) FNegate 268 @@ -477,7 +477,7 @@ Validation failed Store 279 278 281: 271(ptr) AccessChain 262(gRotMat) 96 Store 281 280 - 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 283 282(locPos) 83 + 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(locPos) 83 287: 97(ptr) AccessChain 73(input) 151 288: 17(fvec3) Load 287 289: 168 Load 238(rotMat) @@ -487,7 +487,7 @@ Validation failed 293: 7(float) CompositeExtract 290 2 294: 55(fvec4) CompositeConstruct 291 292 293 181 Store 282(locPos) 294 - 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 296 295(pos) 83 + 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 296 295(pos) 83 300: 55(fvec4) Load 282(locPos) 301: 17(fvec3) VectorShuffle 300 300 0 1 2 303: 113(ptr) AccessChain 73(input) 302 @@ -543,7 +543,7 @@ Validation failed 351: 122 Load 350 352: 55(fvec4) VectorTimesMatrix 349 351 Store 295(pos) 352 - 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(Log) 354 353(lPos) 83 + 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 354 353(lPos) 83 359: 358(ptr) AccessChain 148 151 95 360: 55(fvec4) Load 359 361: 17(fvec3) VectorShuffle 360 360 0 1 2 From 06a7078ce74ab5c7801a165b8145859678831fb8 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Wed, 4 Jan 2023 14:02:19 -0700 Subject: [PATCH 129/594] build: Remove AMD_EXTENSIONS / NV_EXTENSIONS defines These defines aren't needed anymore --- Android.mk | 4 ++-- BUILD.bazel | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Android.mk b/Android.mk index 40cddb7584..8e2fac0a55 100644 --- a/Android.mk +++ b/Android.mk @@ -1,4 +1,4 @@ -# Copyright (C) 2020 The Khronos Group Inc. +# Copyright (C) 2020-2023 The Khronos Group Inc. # # All rights reserved. # @@ -53,7 +53,7 @@ $(eval $(call gen_glslang_build_info_h)) GLSLANG_OS_FLAGS := -DGLSLANG_OSINCLUDE_UNIX # AMD and NV extensions are turned on by default in upstream Glslang. -GLSLANG_DEFINES:= -DAMD_EXTENSIONS -DNV_EXTENSIONS -DENABLE_HLSL $(GLSLANG_OS_FLAGS) +GLSLANG_DEFINES:= -DENABLE_HLSL $(GLSLANG_OS_FLAGS) include $(CLEAR_VARS) LOCAL_MODULE:=OSDependent diff --git a/BUILD.bazel b/BUILD.bazel index d7a65787db..8dd76e0720 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -1,4 +1,4 @@ -# Copyright (C) 2020 The Khronos Group Inc. +# Copyright (C) 2020-2023 The Khronos Group Inc. # # All rights reserved. # @@ -125,10 +125,8 @@ cc_library( ], copts = COMMON_COPTS, defines = [ - "AMD_EXTENSIONS", "ENABLE_HLSL=0", "ENABLE_OPT=0", - "NV_EXTENSIONS", ], linkopts = select({ "@bazel_tools//src/conditions:windows": [""], From 9b67d41b8521e6db57192fff1e91b9c131ded4ef Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Tue, 10 Jan 2023 18:50:18 -0700 Subject: [PATCH 130/594] Fix crash on bad structure member reference Fixes #3105 --- Test/baseResults/struct.error.frag.out | 37 ++++++++++++++++++++++ Test/struct.error.frag | 14 ++++++++ glslang/MachineIndependent/ParseHelper.cpp | 20 ++++++++---- gtests/AST.FromFile.cpp | 1 + 4 files changed, 66 insertions(+), 6 deletions(-) create mode 100644 Test/baseResults/struct.error.frag.out create mode 100644 Test/struct.error.frag diff --git a/Test/baseResults/struct.error.frag.out b/Test/baseResults/struct.error.frag.out new file mode 100644 index 0000000000..5b0993a1d9 --- /dev/null +++ b/Test/baseResults/struct.error.frag.out @@ -0,0 +1,37 @@ +struct.error.frag +ERROR: 0:12: 'z' : no such field in structure +ERROR: 1 compilation errors. No code generated. + + +Shader version: 460 +ERROR: node is still EOpNull! +0:7 Function Definition: test( ( global structure{ global float x}) +0:7 Function Parameters: +0:8 Sequence +0:8 Branch: Return with expression +0:8 Constant: +0:8 1.000000 +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:12 Sequence +0:12 Function Call: test( ( global structure{ global float x}) +0:? Linker Objects + + +Linked fragment stage: + + +Shader version: 460 +ERROR: node is still EOpNull! +0:7 Function Definition: test( ( global structure{ global float x}) +0:7 Function Parameters: +0:8 Sequence +0:8 Branch: Return with expression +0:8 Constant: +0:8 1.000000 +0:11 Function Definition: main( ( global void) +0:11 Function Parameters: +0:12 Sequence +0:12 Function Call: test( ( global structure{ global float x}) +0:? Linker Objects + diff --git a/Test/struct.error.frag b/Test/struct.error.frag new file mode 100644 index 0000000000..29aba00b64 --- /dev/null +++ b/Test/struct.error.frag @@ -0,0 +1,14 @@ +#version 460 + +struct A { + float x; +}; + +A test() { + return A(1.0); +} + +void main() { + test().z; // A.z does not exist, causes a crash +} + diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f86e78ba81..515137b708 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1035,14 +1035,22 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); } else { auto baseSymbol = base; - while (baseSymbol->getAsSymbolNode() == nullptr) - baseSymbol = baseSymbol->getAsBinaryNode()->getLeft(); - TString structName; - structName.append("\'").append(baseSymbol->getAsSymbolNode()->getName().c_str()).append( "\'"); - error(loc, "no such field in structure", field.c_str(), structName.c_str()); + while (baseSymbol->getAsSymbolNode() == nullptr) { + auto binaryNode = baseSymbol->getAsBinaryNode(); + if (binaryNode == nullptr) break; + baseSymbol = binaryNode->getLeft(); + } + if (baseSymbol->getAsSymbolNode() != nullptr) { + TString structName; + structName.append("\'").append(baseSymbol->getAsSymbolNode()->getName().c_str()).append("\'"); + error(loc, "no such field in structure", field.c_str(), structName.c_str()); + } else { + error(loc, "no such field in structure", field.c_str(), ""); + } } } else - error(loc, "does not apply to this type:", field.c_str(), base->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); + error(loc, "does not apply to this type:", field.c_str(), + base->getType().getCompleteString(intermediate.getEnhancedMsgs()).c_str()); // Propagate noContraction up the dereference chain if (base->getQualifier().isNoContraction()) diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 81633f97be..12e0137d0e 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -211,6 +211,7 @@ INSTANTIATE_TEST_SUITE_P( "runtimeArray.vert", "simpleFunctionCall.frag", "stringToDouble.vert", + "struct.error.frag", "structAssignment.frag", "structDeref.frag", "structure.frag", From 42e94ee67e5cc8a8cf2f80724d9980f094f09df4 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 18 Jan 2023 11:46:28 -0700 Subject: [PATCH 131/594] Update appveyor environment SPIRV-Tools now requires 3.17.2 or higher. The version provided by Visual Studio 2015 is 3.16.2. --- .appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index b08c47b9d3..0b7f8a5ed1 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -4,7 +4,7 @@ # build version format version: "{build}" -os: Visual Studio 2015 +os: Visual Studio 2019 platform: - x64 @@ -55,7 +55,7 @@ build: build_script: - mkdir build && cd build - - cmake -G "Visual Studio 14 2015 Win64" -DCMAKE_INSTALL_PREFIX=install .. + - cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX=install .. - cmake --build . --config %CONFIGURATION% --target install test_script: From 615741f278c23fd4859a5d9f203896a396ae4550 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 18 Jan 2023 11:04:44 -0700 Subject: [PATCH 132/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 41ff0dd29e..1118a30ba0 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "40f5bf59c6acb4754a0bffd3c53a715732883a12" + "commit" : "63de608daeb7e91fbea6d7477a50debe7cac57ce" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "1d31a100405cf8783ca7a31e31cdd727c9fc54c3" + "commit" : "d13b52222c39a7e9a401b44646f0ca3a640fbd47" } ] } From ca8d07d0bc1c6390b83915700439fa7719de6a2a Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 18 Jan 2023 15:37:00 -0700 Subject: [PATCH 133/594] Update CHANGES for release 12.0.0 --- CHANGES.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index aee747f5db..f576366078 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 12.0.0 2023-01-18 + +### Breaking changes +* An ABI was accidentally broken in #3014. Consequently, we have incremented the major revision number. + +### Other changes +* Add support for ARB_bindless_texture. +* Add support for GL_NV_shader_invocation_reorder. +* Fix const parameter debug types when using NonSemantic.Shader.DebugInfo.100. +* Fix NonSemantic.Shader.DebugInfo.100 disassembly. +* Fix MaxDualSourceDrawBuffersEXT usage. +* Fix structure member reference crash. + ## 11.13.0 2022-12-06 ### Other changes From 51813b65e9d66c09a8fc958f709bb5c2b0359004 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 19 Jan 2023 12:04:02 -0700 Subject: [PATCH 134/594] Update readme with upcoming branch rename --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 5e642e6908..ebc9cf9b2f 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,16 @@ # News -1. Visual Studio 2013 is no longer supported +1. Default branch will be renamed from 'master' to 'main' [as requested by Khronos](https://github.com/KhronosGroup/glslang/issues/3107) on 01/30/2023. + +2. Visual Studio 2013 is no longer supported [As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals), Microsoft Visual Studio 2013 is no longer officially supported. \ Please upgrade to at least Visual Studio 2015. -2. The versioning scheme is being improved, and you might notice some differences. This is currently WIP, but will be coming soon. See, for example, PR #2277. +3. The versioning scheme is being improved, and you might notice some differences. This is currently WIP, but will be coming soon. See, for example, PR #2277. -3. If you get a new **compilation error due to a missing header**, it might be caused by this planned removal: +4. If you get a new **compilation error due to a missing header**, it might be caused by this planned removal: **SPIRV Folder, 1-May, 2020.** Glslang, when installed through CMake, will install a `SPIRV` folder into `${CMAKE_INSTALL_INCLUDEDIR}`. From 8504d5ae1cbde607c3718a558d7aca80cff0b0a0 Mon Sep 17 00:00:00 2001 From: Amir Masoud Abdol Date: Tue, 17 Jan 2023 09:46:44 +0100 Subject: [PATCH 135/594] Replace the deprecated $ with $ --- CMakeLists.txt | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e93ba45514..33227b5259 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -355,9 +355,9 @@ if(ENABLE_CTEST AND BUILD_TESTING) endif() if (CMAKE_CONFIGURATION_TYPES) - set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) - set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslangValidator) - set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) + set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) + set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslangValidator) + set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) else() set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) From 0d3211ff7bb5b0fbad7866f5a21bdcd81886f4be Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 20 Jan 2023 10:39:06 -0700 Subject: [PATCH 136/594] Reject non-float inputs/outputs with version < 120 GLSL 1.20 and prior stated that "the attribute qualifier can be used only with float, floating-point vectors, and matrices" and likewise for varying. Fixes: #3111 --- Test/baseResults/120.vert.out | 3 ++- glslang/MachineIndependent/ParseHelper.cpp | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/Test/baseResults/120.vert.out b/Test/baseResults/120.vert.out index 6c42b75e25..fcfffe9b27 100644 --- a/Test/baseResults/120.vert.out +++ b/Test/baseResults/120.vert.out @@ -46,6 +46,7 @@ ERROR: 0:108: 'overloadE' : no matching overloaded function found ERROR: 0:111: 'overloadE' : no matching overloaded function found ERROR: 0:117: 'overloadF' : no matching overloaded function found ERROR: 0:121: 'gl_TexCoord array size' : must be less than or equal to gl_MaxTextureCoords (32) +ERROR: 0:154: 'non-float shader input/output' : not supported for this version or the enabled extensions ERROR: 0:165: 'switch' : Reserved word. ERROR: 0:171: 'default' : Reserved word. ERROR: 0:165: 'switch statements' : not supported for this version or the enabled extensions @@ -80,7 +81,7 @@ ERROR: 0:195: 'gl_ModelViewMatrix' : identifiers starting with "gl_" are reserve ERROR: 0:200: 'token pasting (##)' : not supported for this version or the enabled extensions ERROR: 0:203: 'token pasting (##)' : not supported for this version or the enabled extensions ERROR: 0:205: '' : syntax error, unexpected IDENTIFIER -ERROR: 81 compilation errors. No code generated. +ERROR: 82 compilation errors. No code generated. Shader version: 120 diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 515137b708..be4ae8106f 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3983,8 +3983,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali return; } - if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble) - profileRequires(loc, EEsProfile, 300, nullptr, "shader input/output"); + if (isTypeInt(publicType.basicType) || publicType.basicType == EbtDouble) { + profileRequires(loc, EEsProfile, 300, nullptr, "non-float shader input/output"); + profileRequires(loc, ~EEsProfile, 130, nullptr, "non-float shader input/output"); + } if (!qualifier.flat && !qualifier.isExplicitInterpolation() && !qualifier.isPervertexNV() && !qualifier.isPervertexEXT()) { if (isTypeInt(publicType.basicType) || From 4e9cde50bb76c2b941b2edba8a073c70476e698e Mon Sep 17 00:00:00 2001 From: Maciej Date: Mon, 23 Jan 2023 14:17:29 +0100 Subject: [PATCH 137/594] Move check if useStorageBuffer needs to be set. From TParseContext used only by GLSL, to TParseContextBase inherited by both GLSL and HLSL paths. It caused compilations from HLSL to SPIR-V 1.3+ to use BufferBlock decoration which is no longer valid. --- Test/baseResults/hlsl.wavebroadcast.comp.out | 22 ++++++++++---------- Test/baseResults/hlsl.waveprefix.comp.out | 22 ++++++++++---------- Test/baseResults/hlsl.wavequad.comp.out | 22 ++++++++++---------- Test/baseResults/hlsl.wavequery.comp.out | 8 +++---- Test/baseResults/hlsl.wavereduction.comp.out | 22 ++++++++++---------- Test/baseResults/hlsl.wavevote.comp.out | 8 +++---- glslang/MachineIndependent/ParseHelper.cpp | 4 ---- glslang/MachineIndependent/ParseHelper.h | 4 ++++ 8 files changed, 56 insertions(+), 56 deletions(-) diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out index 49d3b871ac..ed35cba38c 100644 --- a/Test/baseResults/hlsl.wavebroadcast.comp.out +++ b/Test/baseResults/hlsl.wavebroadcast.comp.out @@ -2331,7 +2331,7 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 MemberDecorate 22(data) 0 Offset 0 - Decorate 22(data) BufferBlock + Decorate 22(data) Block Decorate 24(data) DescriptorSet 0 Decorate 24(data) Binding 0 Decorate 388(dti) BuiltIn GlobalInvocationId @@ -2351,31 +2351,31 @@ local_size = (32, 16, 1) 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 - 23: TypePointer Uniform 22(data) - 24(data): 23(ptr) Variable Uniform + 23: TypePointer StorageBuffer 22(data) + 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) - 32: TypePointer Uniform 13(ivec4) + 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 13 36: 6(int) Constant 3 - 43: TypePointer Uniform 6(int) + 43: TypePointer StorageBuffer 6(int) 52: TypeVector 6(int) 2 59: 6(int) Constant 1 74: 6(int) Constant 2 79: 14(int) Constant 1 - 82: TypePointer Uniform 15(ivec4) - 91: TypePointer Uniform 14(int) + 82: TypePointer StorageBuffer 15(ivec4) + 91: TypePointer StorageBuffer 14(int) 100: TypeVector 14(int) 2 113: TypeVector 14(int) 3 126: 14(int) Constant 2 - 129: TypePointer Uniform 17(fvec4) - 138: TypePointer Uniform 16(float) + 129: TypePointer StorageBuffer 17(fvec4) + 138: TypePointer StorageBuffer 16(float) 147: TypeVector 16(float) 2 160: TypeVector 16(float) 3 173: 14(int) Constant 3 - 176: TypePointer Uniform 19(f64vec4) - 185: TypePointer Uniform 18(float64_t) + 176: TypePointer StorageBuffer 19(f64vec4) + 185: TypePointer StorageBuffer 18(float64_t) 194: TypeVector 18(float64_t) 2 207: TypeVector 18(float64_t) 3 387: TypePointer Input 7(ivec3) diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out index e2991bf68a..ecc1b3eb5f 100644 --- a/Test/baseResults/hlsl.waveprefix.comp.out +++ b/Test/baseResults/hlsl.waveprefix.comp.out @@ -2355,7 +2355,7 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 MemberDecorate 22(data) 0 Offset 0 - Decorate 22(data) BufferBlock + Decorate 22(data) Block Decorate 24(data) DescriptorSet 0 Decorate 24(data) Binding 0 Decorate 398(dti) BuiltIn GlobalInvocationId @@ -2375,30 +2375,30 @@ local_size = (32, 16, 1) 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 - 23: TypePointer Uniform 22(data) - 24(data): 23(ptr) Variable Uniform + 23: TypePointer StorageBuffer 22(data) + 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) - 32: TypePointer Uniform 13(ivec4) + 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 3 - 42: TypePointer Uniform 6(int) + 42: TypePointer StorageBuffer 6(int) 51: TypeVector 6(int) 2 58: 6(int) Constant 1 73: 6(int) Constant 2 78: 14(int) Constant 1 - 81: TypePointer Uniform 15(ivec4) - 90: TypePointer Uniform 14(int) + 81: TypePointer StorageBuffer 15(ivec4) + 90: TypePointer StorageBuffer 14(int) 99: TypeVector 14(int) 2 112: TypeVector 14(int) 3 125: 14(int) Constant 2 - 128: TypePointer Uniform 17(fvec4) - 137: TypePointer Uniform 16(float) + 128: TypePointer StorageBuffer 17(fvec4) + 137: TypePointer StorageBuffer 16(float) 146: TypeVector 16(float) 2 159: TypeVector 16(float) 3 172: 14(int) Constant 3 - 175: TypePointer Uniform 19(f64vec4) - 184: TypePointer Uniform 18(float64_t) + 175: TypePointer StorageBuffer 19(f64vec4) + 184: TypePointer StorageBuffer 18(float64_t) 193: TypeVector 18(float64_t) 2 206: TypeVector 18(float64_t) 3 391: TypeBool diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out index 6d4ab5b76c..7deb7c7ef1 100644 --- a/Test/baseResults/hlsl.wavequad.comp.out +++ b/Test/baseResults/hlsl.wavequad.comp.out @@ -8058,7 +8058,7 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 MemberDecorate 22(data) 0 Offset 0 - Decorate 22(data) BufferBlock + Decorate 22(data) Block Decorate 24(data) DescriptorSet 0 Decorate 24(data) Binding 0 Decorate 1227(dti) BuiltIn GlobalInvocationId @@ -8078,30 +8078,30 @@ local_size = (32, 16, 1) 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 - 23: TypePointer Uniform 22(data) - 24(data): 23(ptr) Variable Uniform + 23: TypePointer StorageBuffer 22(data) + 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) - 32: TypePointer Uniform 13(ivec4) + 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 3 - 42: TypePointer Uniform 6(int) + 42: TypePointer StorageBuffer 6(int) 51: TypeVector 6(int) 2 58: 6(int) Constant 1 73: 6(int) Constant 2 78: 14(int) Constant 1 - 81: TypePointer Uniform 15(ivec4) - 90: TypePointer Uniform 14(int) + 81: TypePointer StorageBuffer 15(ivec4) + 90: TypePointer StorageBuffer 14(int) 99: TypeVector 14(int) 2 112: TypeVector 14(int) 3 125: 14(int) Constant 2 - 128: TypePointer Uniform 17(fvec4) - 137: TypePointer Uniform 16(float) + 128: TypePointer StorageBuffer 17(fvec4) + 137: TypePointer StorageBuffer 16(float) 146: TypeVector 16(float) 2 159: TypeVector 16(float) 3 172: 14(int) Constant 3 - 175: TypePointer Uniform 19(f64vec4) - 184: TypePointer Uniform 18(float64_t) + 175: TypePointer StorageBuffer 19(f64vec4) + 184: TypePointer StorageBuffer 18(float64_t) 193: TypeVector 18(float64_t) 2 206: TypeVector 18(float64_t) 3 1226: TypePointer Input 7(ivec3) diff --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out index a380808c94..8e08b09eff 100644 --- a/Test/baseResults/hlsl.wavequery.comp.out +++ b/Test/baseResults/hlsl.wavequery.comp.out @@ -79,7 +79,7 @@ local_size = (32, 16, 1) Name 21 "@gl_SubgroupSize" Decorate 9 ArrayStride 4 MemberDecorate 10(data) 0 Offset 0 - Decorate 10(data) BufferBlock + Decorate 10(data) Block Decorate 12(data) DescriptorSet 0 Decorate 12(data) Binding 0 Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId @@ -89,8 +89,8 @@ local_size = (32, 16, 1) 8: TypeInt 32 0 9: TypeRuntimeArray 8(int) 10(data): TypeStruct 9 - 11: TypePointer Uniform 10(data) - 12(data): 11(ptr) Variable Uniform + 11: TypePointer StorageBuffer 10(data) + 12(data): 11(ptr) Variable StorageBuffer 13: TypeInt 32 1 14: 13(int) Constant 0 15: TypePointer Input 8(int) @@ -99,7 +99,7 @@ local_size = (32, 16, 1) 19: 8(int) Constant 3 21(@gl_SubgroupSize): 15(ptr) Variable Input 23: 8(int) Constant 0 - 25: TypePointer Uniform 8(int) + 25: TypePointer StorageBuffer 8(int) 4(CSMain): 2 Function None 3 5: Label 27: 2 FunctionCall 6(@CSMain() diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out index a4393fe938..9a636f5a4c 100644 --- a/Test/baseResults/hlsl.wavereduction.comp.out +++ b/Test/baseResults/hlsl.wavereduction.comp.out @@ -6219,7 +6219,7 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 MemberDecorate 22(data) 0 Offset 0 - Decorate 22(data) BufferBlock + Decorate 22(data) Block Decorate 24(data) DescriptorSet 0 Decorate 24(data) Binding 0 Decorate 986(dti) BuiltIn GlobalInvocationId @@ -6239,30 +6239,30 @@ local_size = (32, 16, 1) 20(Types): TypeStruct 13(ivec4) 15(ivec4) 17(fvec4) 19(f64vec4) 21: TypeRuntimeArray 20(Types) 22(data): TypeStruct 21 - 23: TypePointer Uniform 22(data) - 24(data): 23(ptr) Variable Uniform + 23: TypePointer StorageBuffer 22(data) + 24(data): 23(ptr) Variable StorageBuffer 25: 14(int) Constant 0 26: 6(int) Constant 0 27: TypePointer Function 6(int) - 32: TypePointer Uniform 13(ivec4) + 32: TypePointer StorageBuffer 13(ivec4) 35: 6(int) Constant 3 - 42: TypePointer Uniform 6(int) + 42: TypePointer StorageBuffer 6(int) 51: TypeVector 6(int) 2 58: 6(int) Constant 1 73: 6(int) Constant 2 78: 14(int) Constant 1 - 81: TypePointer Uniform 15(ivec4) - 90: TypePointer Uniform 14(int) + 81: TypePointer StorageBuffer 15(ivec4) + 90: TypePointer StorageBuffer 14(int) 99: TypeVector 14(int) 2 112: TypeVector 14(int) 3 125: 14(int) Constant 2 - 128: TypePointer Uniform 17(fvec4) - 137: TypePointer Uniform 16(float) + 128: TypePointer StorageBuffer 17(fvec4) + 137: TypePointer StorageBuffer 16(float) 146: TypeVector 16(float) 2 159: TypeVector 16(float) 3 172: 14(int) Constant 3 - 175: TypePointer Uniform 19(f64vec4) - 184: TypePointer Uniform 18(float64_t) + 175: TypePointer StorageBuffer 19(f64vec4) + 184: TypePointer StorageBuffer 18(float64_t) 193: TypeVector 18(float64_t) 2 206: TypeVector 18(float64_t) 3 979: TypeBool diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out index f9382b71c8..382f504f62 100644 --- a/Test/baseResults/hlsl.wavevote.comp.out +++ b/Test/baseResults/hlsl.wavevote.comp.out @@ -228,7 +228,7 @@ local_size = (32, 16, 1) Name 72 "param" Decorate 14 ArrayStride 8 MemberDecorate 15(data) 0 Offset 0 - Decorate 15(data) BufferBlock + Decorate 15(data) Block Decorate 17(data) DescriptorSet 0 Decorate 17(data) Binding 0 Decorate 70(dti) BuiltIn GlobalInvocationId @@ -241,8 +241,8 @@ local_size = (32, 16, 1) 13: TypeInt 64 0 14: TypeRuntimeArray 13(int64_t) 15(data): TypeStruct 14 - 16: TypePointer Uniform 15(data) - 17(data): 16(ptr) Variable Uniform + 16: TypePointer StorageBuffer 15(data) + 17(data): 16(ptr) Variable StorageBuffer 18: TypeInt 32 1 19: 18(int) Constant 0 20: 6(int) Constant 0 @@ -251,7 +251,7 @@ local_size = (32, 16, 1) 28: 6(int) Constant 3 30: TypeVector 6(int) 4 32: TypeVector 13(int64_t) 4 - 35: TypePointer Uniform 13(int64_t) + 35: TypePointer StorageBuffer 13(int64_t) 37: 6(int) Constant 1 48: 6(int) Constant 2 69: TypePointer Input 7(ivec3) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index be4ae8106f..4b22c6cd40 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -80,10 +80,6 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b globalBufferDefaults.layoutMatrix = ElmColumnMajor; globalBufferDefaults.layoutPacking = spvVersion.spv != 0 ? ElpStd430 : ElpShared; - // use storage buffer on SPIR-V 1.3 and up - if (spvVersion.spv >= EShTargetSpv_1_3) - intermediate.setUseStorageBuffer(); - globalInputDefaults.clear(); globalOutputDefaults.clear(); diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 8edcfdf8f6..509b3004e3 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -95,6 +95,10 @@ class TParseContextBase : public TParseVersions { globalUniformSet(TQualifier::layoutSetEnd), atomicCounterBlockSet(TQualifier::layoutSetEnd) { + // use storage buffer on SPIR-V 1.3 and up + if (spvVersion.spv >= EShTargetSpv_1_3) + intermediate.setUseStorageBuffer(); + if (entryPoint != nullptr) sourceEntryPointName = *entryPoint; } From 58d302cfa28d04efafab64025d7b7ad5e5029ba7 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Mon, 30 Jan 2023 13:40:48 -0700 Subject: [PATCH 138/594] Rename master to main and update news Update CI and README to reflect rename. Update News: * Notify users of rename. * Update minimum required VS compiler to 2019. * Remove notice about versioning. This has been completed. * Remove notice about SPIRV folder relocation. It has been 2.5 years since this occured. --- .appveyor.yml | 16 ++++----- .github/workflows/continuous_deployment.yml | 10 +++--- .github/workflows/continuous_integration.yml | 2 +- .github/workflows/deploy.js | 10 +++--- README.md | 34 +++++++------------- 5 files changed, 31 insertions(+), 41 deletions(-) diff --git a/.appveyor.yml b/.appveyor.yml index 0b7f8a5ed1..33e0309784 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -15,7 +15,7 @@ configuration: branches: only: - - master + - main # changes to these files don't need to trigger testing skip_commits: @@ -31,9 +31,9 @@ skip_commits: - Android.mk - _config.yml -# Travis advances the master-tot tag to current top of the tree after -# each push into the master branch, because it relies on that tag to -# upload build artifacts to the master-tot release. This will cause +# Travis advances the main-tot tag to current top of the tree after +# each push into the main branch, because it relies on that tag to +# upload build artifacts to the main-tot release. This will cause # double testing for each push on Appveyor: one for the push, one for # the tag advance. Disable testing tags. skip_tags: true @@ -73,7 +73,7 @@ after_test: } - cd install # Zip all glslang artifacts for uploading and deploying - - 7z a glslang-master-windows-"%PLATFORM%"-"%CONFIGURATION%".zip + - 7z a glslang-main-windows-"%PLATFORM%"-"%CONFIGURATION%".zip bin\glslangValidator.exe bin\spirv-remap.exe include\glslang\* @@ -97,12 +97,12 @@ deploy: - provider: GitHub auth_token: secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6 - release: master-tot - description: "Continuous build of the latest master branch by Appveyor and Github" + release: main-tot + description: "Continuous build of the latest main branch by Appveyor and Github" artifact: artifacts-zip draft: false prerelease: false force_update: true on: - branch: master + branch: main APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index c375ac4505..61e7c2667b 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -20,7 +20,7 @@ on: workflow_dispatch: push: branches: - - master + - main jobs: linux: @@ -71,7 +71,7 @@ jobs: - name: Zip if: ${{ matrix.compiler.cc == 'clang' }} env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ @@ -92,7 +92,7 @@ jobs: - name: Deploy if: ${{ matrix.compiler.cc == 'clang' }} env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@v5 with: script: | @@ -142,7 +142,7 @@ jobs: cd ../Test && ./runtests - name: Zip env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip run: | cd build/install zip ${ARCHIVE} \ @@ -162,7 +162,7 @@ jobs: lib/libSPIRV-Tools-opt.a - name: Deploy env: - ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip uses: actions/github-script@v5 with: script: | diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 7c36c68843..c0b1cf9e62 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -10,7 +10,7 @@ on: workflow_dispatch: pull_request: branches: - - master + - main jobs: linux: diff --git a/.github/workflows/deploy.js b/.github/workflows/deploy.js index 9f8d24249c..3f1b7e4b4e 100644 --- a/.github/workflows/deploy.js +++ b/.github/workflows/deploy.js @@ -3,11 +3,11 @@ module.exports = async ({github, context, core}) => { await github.rest.git.updateRef({ owner: context.repo.owner, repo: context.repo.repo, - ref: 'tags/master-tot', + ref: 'tags/main-tot', sha: context.sha }) } catch (error) { - core.setFailed(`upload master-tot tag; ${error.name}; ${error.message}`) + core.setFailed(`upload main-tot tag; ${error.name}; ${error.message}`) } let release @@ -15,10 +15,10 @@ module.exports = async ({github, context, core}) => { release = await github.rest.repos.getReleaseByTag({ owner: context.repo.owner, repo: context.repo.repo, - tag: 'master-tot' + tag: 'main-tot' }) } catch (error) { - core.setFailed(`get the master release; ${error.name}; ${error.message}`) + core.setFailed(`get the main release; ${error.name}; ${error.message}`) } try { @@ -28,7 +28,7 @@ module.exports = async ({github, context, core}) => { release_id: release.data.id }) } catch (error) { - core.setFailed(`update the master release; ${error.name}; ${error.message}`) + core.setFailed(`update the main release; ${error.name}; ${error.message}`) } let release_assets diff --git a/README.md b/README.md index ebc9cf9b2f..c69222fd55 100644 --- a/README.md +++ b/README.md @@ -1,27 +1,17 @@ # News -1. Default branch will be renamed from 'master' to 'main' [as requested by Khronos](https://github.com/KhronosGroup/glslang/issues/3107) on 01/30/2023. +1. [As discussed in #3107](https://github.com/KhronosGroup/glslang/issues/3107), the default branch of this repository is now 'main'. This change should be transparent to repository users, since github rewrites many references to the old 'master' branch to 'main'. However, if you have a checked-out local clone, you may wish to take the following steps as recommended by github: -2. Visual Studio 2013 is no longer supported - - [As scheduled](https://github.com/KhronosGroup/glslang/blob/9eef54b2513ca6b40b47b07d24f453848b65c0df/README.md#planned-deprecationsremovals), -Microsoft Visual Studio 2013 is no longer officially supported. \ - Please upgrade to at least Visual Studio 2015. - -3. The versioning scheme is being improved, and you might notice some differences. This is currently WIP, but will be coming soon. See, for example, PR #2277. - -4. If you get a new **compilation error due to a missing header**, it might be caused by this planned removal: - -**SPIRV Folder, 1-May, 2020.** Glslang, when installed through CMake, -will install a `SPIRV` folder into `${CMAKE_INSTALL_INCLUDEDIR}`. -This `SPIRV` folder is being moved to `glslang/SPIRV`. -During the transition the `SPIRV` folder will be installed into both locations. -The old install of `SPIRV/` will be removed as a CMake install target no sooner than May 1, 2020. -See issue #1964. +```sh +git branch -m master main +git fetch origin +git branch -u origin/main main +git remote set-head origin -a +``` -If people are only using this location to get spirv.hpp, I recommend they get that from [SPIRV-Headers](https://github.com/KhronosGroup/SPIRV-Headers) instead. +2. Visual Studio 2019 is now the minimum supported compiler for windows. This change was driven by the external dependency on SPIRV-Tools. -[![appveyor status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/master?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/master) +[![appveyor status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/main?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/main) ![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) # Glslang Components and Status @@ -101,9 +91,9 @@ There is also a non-shader extension: ## Building (CMake) Instead of building manually, you can also download the binaries for your -platform directly from the [master-tot release][master-tot-release] on GitHub. +platform directly from the [main-tot release][main-tot-release] on GitHub. Those binaries are automatically uploaded by the buildbots after successful -testing and they always reflect the current top of the tree of the master +testing and they always reflect the current top of the tree of the main branch. ### Dependencies @@ -557,4 +547,4 @@ std::vector compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c [bison]: https://www.gnu.org/software/bison/ [googletest]: https://github.com/google/googletest [bison-gnu-win32]: http://gnuwin32.sourceforge.net/packages/bison.htm -[master-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/master-tot +[main-tot-release]: https://github.com/KhronosGroup/glslang/releases/tag/main-tot From 5137ce1a955b325ebf59f70c3aa32022a3e0d839 Mon Sep 17 00:00:00 2001 From: rdb Date: Mon, 30 Jan 2023 17:42:49 +0100 Subject: [PATCH 139/594] HLSL: Add missing relaxed-precision float/int matrix expansions --- Test/baseResults/hlsl.mintypes.frag.out | 374 ++++++++++++++++++------ Test/hlsl.mintypes.frag | 61 +++- glslang/HLSL/hlslGrammar.cpp | 276 ++++++++++++++++- glslang/HLSL/hlslGrammar.h | 2 +- glslang/HLSL/hlslScanContext.cpp | 160 ++++++++++ glslang/HLSL/hlslTokens.h | 80 +++++ 6 files changed, 858 insertions(+), 95 deletions(-) diff --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out index 07f28c3df6..2b51d12c28 100644 --- a/Test/baseResults/hlsl.mintypes.frag.out +++ b/Test/baseResults/hlsl.mintypes.frag.out @@ -5,33 +5,69 @@ gl_FragCoord origin is upper left 0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Parameters: 0:? Sequence -0:40 add ( temp mediump 2-component vector of float) -0:40 'mf16_2' ( temp mediump 2-component vector of float) -0:40 'mf16' ( temp mediump float) -0:41 add ( temp mediump 2-component vector of float) -0:41 'mf10_2' ( temp mediump 2-component vector of float) -0:41 'mf10' ( temp mediump float) -0:42 add ( temp mediump 2-component vector of int) -0:42 'mi16_2' ( temp mediump 2-component vector of int) -0:42 'mi16' ( temp mediump int) -0:43 add ( temp mediump 2-component vector of int) -0:43 'mi12_2' ( temp mediump 2-component vector of int) -0:43 'mi12' ( temp mediump int) -0:44 add ( temp mediump 2-component vector of uint) -0:44 'mu16_2' ( temp mediump 2-component vector of uint) -0:44 'mu16' ( temp mediump uint) -0:47 move second child to first child ( temp 4-component vector of float) -0:47 Color: direct index for structure ( temp 4-component vector of float) -0:47 'psout' ( temp structure{ temp 4-component vector of float Color}) -0:47 Constant: -0:47 0 (const int) -0:47 Constant: -0:47 0.000000 -0:47 0.000000 -0:47 0.000000 -0:47 0.000000 -0:48 Branch: Return with expression -0:48 'psout' ( temp structure{ temp 4-component vector of float Color}) +0:85 add ( temp mediump 2-component vector of float) +0:85 'mf16_2' ( temp mediump 2-component vector of float) +0:85 'mf16' ( temp mediump float) +0:86 add ( temp mediump 2-component vector of float) +0:86 'mf10_2' ( temp mediump 2-component vector of float) +0:86 'mf10' ( temp mediump float) +0:87 add ( temp mediump 2-component vector of int) +0:87 'mi16_2' ( temp mediump 2-component vector of int) +0:87 'mi16' ( temp mediump int) +0:88 add ( temp mediump 2-component vector of int) +0:88 'mi12_2' ( temp mediump 2-component vector of int) +0:88 'mi12' ( temp mediump int) +0:89 add ( temp mediump 2-component vector of uint) +0:89 'mu16_2' ( temp mediump 2-component vector of uint) +0:89 'mu16' ( temp mediump uint) +0:91 matrix-times-vector ( temp mediump 4-component vector of float) +0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float) +0:91 'mf16_2' ( temp mediump 2-component vector of float) +0:92 matrix-times-vector ( temp mediump 4-component vector of float) +0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float) +0:92 'mf16_3' ( temp mediump 3-component vector of float) +0:93 matrix-times-vector ( temp mediump 4-component vector of float) +0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float) +0:93 'mf16_4' ( temp mediump 4-component vector of float) +0:94 vector-times-matrix ( temp mediump 4-component vector of float) +0:94 'mf16_2' ( temp mediump 2-component vector of float) +0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float) +0:95 vector-times-matrix ( temp mediump 4-component vector of float) +0:95 'mf16_3' ( temp mediump 3-component vector of float) +0:95 'mf16_4x3' ( temp mediump 4X3 matrix of float) +0:96 vector-times-matrix ( temp mediump 4-component vector of float) +0:96 'mf16_4' ( temp mediump 4-component vector of float) +0:96 'mf16_4x4' ( temp mediump 4X4 matrix of float) +0:98 matrix-times-vector ( temp mediump 4-component vector of float) +0:98 'mf10_2x4' ( temp mediump 2X4 matrix of float) +0:98 'mf10_2' ( temp mediump 2-component vector of float) +0:99 matrix-times-vector ( temp mediump 4-component vector of float) +0:99 'mf10_3x4' ( temp mediump 3X4 matrix of float) +0:99 'mf10_3' ( temp mediump 3-component vector of float) +0:100 matrix-times-vector ( temp mediump 4-component vector of float) +0:100 'mf10_4x4' ( temp mediump 4X4 matrix of float) +0:100 'mf10_4' ( temp mediump 4-component vector of float) +0:101 vector-times-matrix ( temp mediump 4-component vector of float) +0:101 'mf10_2' ( temp mediump 2-component vector of float) +0:101 'mf10_4x2' ( temp mediump 4X2 matrix of float) +0:102 vector-times-matrix ( temp mediump 4-component vector of float) +0:102 'mf10_3' ( temp mediump 3-component vector of float) +0:102 'mf10_4x3' ( temp mediump 4X3 matrix of float) +0:103 vector-times-matrix ( temp mediump 4-component vector of float) +0:103 'mf10_4' ( temp mediump 4-component vector of float) +0:103 'mf10_4x4' ( temp mediump 4X4 matrix of float) +0:106 move second child to first child ( temp 4-component vector of float) +0:106 Color: direct index for structure ( temp 4-component vector of float) +0:106 'psout' ( temp structure{ temp 4-component vector of float Color}) +0:106 Constant: +0:106 0 (const int) +0:106 Constant: +0:106 0.000000 +0:106 0.000000 +0:106 0.000000 +0:106 0.000000 +0:107 Branch: Return with expression +0:107 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence @@ -56,33 +92,69 @@ gl_FragCoord origin is upper left 0:9 Function Definition: @main( ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Parameters: 0:? Sequence -0:40 add ( temp mediump 2-component vector of float) -0:40 'mf16_2' ( temp mediump 2-component vector of float) -0:40 'mf16' ( temp mediump float) -0:41 add ( temp mediump 2-component vector of float) -0:41 'mf10_2' ( temp mediump 2-component vector of float) -0:41 'mf10' ( temp mediump float) -0:42 add ( temp mediump 2-component vector of int) -0:42 'mi16_2' ( temp mediump 2-component vector of int) -0:42 'mi16' ( temp mediump int) -0:43 add ( temp mediump 2-component vector of int) -0:43 'mi12_2' ( temp mediump 2-component vector of int) -0:43 'mi12' ( temp mediump int) -0:44 add ( temp mediump 2-component vector of uint) -0:44 'mu16_2' ( temp mediump 2-component vector of uint) -0:44 'mu16' ( temp mediump uint) -0:47 move second child to first child ( temp 4-component vector of float) -0:47 Color: direct index for structure ( temp 4-component vector of float) -0:47 'psout' ( temp structure{ temp 4-component vector of float Color}) -0:47 Constant: -0:47 0 (const int) -0:47 Constant: -0:47 0.000000 -0:47 0.000000 -0:47 0.000000 -0:47 0.000000 -0:48 Branch: Return with expression -0:48 'psout' ( temp structure{ temp 4-component vector of float Color}) +0:85 add ( temp mediump 2-component vector of float) +0:85 'mf16_2' ( temp mediump 2-component vector of float) +0:85 'mf16' ( temp mediump float) +0:86 add ( temp mediump 2-component vector of float) +0:86 'mf10_2' ( temp mediump 2-component vector of float) +0:86 'mf10' ( temp mediump float) +0:87 add ( temp mediump 2-component vector of int) +0:87 'mi16_2' ( temp mediump 2-component vector of int) +0:87 'mi16' ( temp mediump int) +0:88 add ( temp mediump 2-component vector of int) +0:88 'mi12_2' ( temp mediump 2-component vector of int) +0:88 'mi12' ( temp mediump int) +0:89 add ( temp mediump 2-component vector of uint) +0:89 'mu16_2' ( temp mediump 2-component vector of uint) +0:89 'mu16' ( temp mediump uint) +0:91 matrix-times-vector ( temp mediump 4-component vector of float) +0:91 'mf16_2x4' ( temp mediump 2X4 matrix of float) +0:91 'mf16_2' ( temp mediump 2-component vector of float) +0:92 matrix-times-vector ( temp mediump 4-component vector of float) +0:92 'mf16_3x4' ( temp mediump 3X4 matrix of float) +0:92 'mf16_3' ( temp mediump 3-component vector of float) +0:93 matrix-times-vector ( temp mediump 4-component vector of float) +0:93 'mf16_4x4' ( temp mediump 4X4 matrix of float) +0:93 'mf16_4' ( temp mediump 4-component vector of float) +0:94 vector-times-matrix ( temp mediump 4-component vector of float) +0:94 'mf16_2' ( temp mediump 2-component vector of float) +0:94 'mf16_4x2' ( temp mediump 4X2 matrix of float) +0:95 vector-times-matrix ( temp mediump 4-component vector of float) +0:95 'mf16_3' ( temp mediump 3-component vector of float) +0:95 'mf16_4x3' ( temp mediump 4X3 matrix of float) +0:96 vector-times-matrix ( temp mediump 4-component vector of float) +0:96 'mf16_4' ( temp mediump 4-component vector of float) +0:96 'mf16_4x4' ( temp mediump 4X4 matrix of float) +0:98 matrix-times-vector ( temp mediump 4-component vector of float) +0:98 'mf10_2x4' ( temp mediump 2X4 matrix of float) +0:98 'mf10_2' ( temp mediump 2-component vector of float) +0:99 matrix-times-vector ( temp mediump 4-component vector of float) +0:99 'mf10_3x4' ( temp mediump 3X4 matrix of float) +0:99 'mf10_3' ( temp mediump 3-component vector of float) +0:100 matrix-times-vector ( temp mediump 4-component vector of float) +0:100 'mf10_4x4' ( temp mediump 4X4 matrix of float) +0:100 'mf10_4' ( temp mediump 4-component vector of float) +0:101 vector-times-matrix ( temp mediump 4-component vector of float) +0:101 'mf10_2' ( temp mediump 2-component vector of float) +0:101 'mf10_4x2' ( temp mediump 4X2 matrix of float) +0:102 vector-times-matrix ( temp mediump 4-component vector of float) +0:102 'mf10_3' ( temp mediump 3-component vector of float) +0:102 'mf10_4x3' ( temp mediump 4X3 matrix of float) +0:103 vector-times-matrix ( temp mediump 4-component vector of float) +0:103 'mf10_4' ( temp mediump 4-component vector of float) +0:103 'mf10_4x4' ( temp mediump 4X4 matrix of float) +0:106 move second child to first child ( temp 4-component vector of float) +0:106 Color: direct index for structure ( temp 4-component vector of float) +0:106 'psout' ( temp structure{ temp 4-component vector of float Color}) +0:106 Constant: +0:106 0 (const int) +0:106 Constant: +0:106 0.000000 +0:106 0.000000 +0:106 0.000000 +0:106 0.000000 +0:107 Branch: Return with expression +0:107 'psout' ( temp structure{ temp 4-component vector of float Color}) 0:9 Function Definition: main( ( temp void) 0:9 Function Parameters: 0:? Sequence @@ -99,12 +171,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 70 +// Id's are bound by 132 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 64 + EntryPoint Fragment 4 "main" 126 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" @@ -121,12 +193,26 @@ gl_FragCoord origin is upper left Name 39 "mi12" Name 46 "mu16_2" Name 49 "mu16" - Name 54 "psout" - Name 64 "@entryPointOutput.Color" - Name 67 "$Global" - MemberName 67($Global) 0 "b1a" - MemberName 67($Global) 1 "b1b" - Name 69 "" + Name 55 "mf16_2x4" + Name 61 "mf16_3x4" + Name 65 "mf16_3" + Name 70 "mf16_4x4" + Name 73 "mf16_4" + Name 79 "mf16_4x2" + Name 85 "mf16_4x3" + Name 91 "mf10_2x4" + Name 95 "mf10_3x4" + Name 97 "mf10_3" + Name 100 "mf10_4x4" + Name 102 "mf10_4" + Name 106 "mf10_4x2" + Name 110 "mf10_4x3" + Name 117 "psout" + Name 126 "@entryPointOutput.Color" + Name 129 "$Global" + MemberName 129($Global) 0 "b1a" + MemberName 129($Global) 1 "b1b" + Name 131 "" Decorate 14(mf16_2) RelaxedPrecision Decorate 15 RelaxedPrecision Decorate 17(mf16) RelaxedPrecision @@ -157,14 +243,64 @@ gl_FragCoord origin is upper left Decorate 50 RelaxedPrecision Decorate 51 RelaxedPrecision Decorate 52 RelaxedPrecision - Decorate 64(@entryPointOutput.Color) Location 0 - MemberDecorate 67($Global) 0 RelaxedPrecision - MemberDecorate 67($Global) 0 Offset 0 - MemberDecorate 67($Global) 1 RelaxedPrecision - MemberDecorate 67($Global) 1 Offset 4 - Decorate 67($Global) Block - Decorate 69 DescriptorSet 0 - Decorate 69 Binding 0 + Decorate 55(mf16_2x4) RelaxedPrecision + Decorate 56 RelaxedPrecision + Decorate 57 RelaxedPrecision + Decorate 58 RelaxedPrecision + Decorate 61(mf16_3x4) RelaxedPrecision + Decorate 62 RelaxedPrecision + Decorate 65(mf16_3) RelaxedPrecision + Decorate 66 RelaxedPrecision + Decorate 67 RelaxedPrecision + Decorate 70(mf16_4x4) RelaxedPrecision + Decorate 71 RelaxedPrecision + Decorate 73(mf16_4) RelaxedPrecision + Decorate 74 RelaxedPrecision + Decorate 75 RelaxedPrecision + Decorate 76 RelaxedPrecision + Decorate 79(mf16_4x2) RelaxedPrecision + Decorate 80 RelaxedPrecision + Decorate 81 RelaxedPrecision + Decorate 82 RelaxedPrecision + Decorate 85(mf16_4x3) RelaxedPrecision + Decorate 86 RelaxedPrecision + Decorate 87 RelaxedPrecision + Decorate 88 RelaxedPrecision + Decorate 89 RelaxedPrecision + Decorate 90 RelaxedPrecision + Decorate 91(mf10_2x4) RelaxedPrecision + Decorate 92 RelaxedPrecision + Decorate 93 RelaxedPrecision + Decorate 94 RelaxedPrecision + Decorate 95(mf10_3x4) RelaxedPrecision + Decorate 96 RelaxedPrecision + Decorate 97(mf10_3) RelaxedPrecision + Decorate 98 RelaxedPrecision + Decorate 99 RelaxedPrecision + Decorate 100(mf10_4x4) RelaxedPrecision + Decorate 101 RelaxedPrecision + Decorate 102(mf10_4) RelaxedPrecision + Decorate 103 RelaxedPrecision + Decorate 104 RelaxedPrecision + Decorate 105 RelaxedPrecision + Decorate 106(mf10_4x2) RelaxedPrecision + Decorate 107 RelaxedPrecision + Decorate 108 RelaxedPrecision + Decorate 109 RelaxedPrecision + Decorate 110(mf10_4x3) RelaxedPrecision + Decorate 111 RelaxedPrecision + Decorate 112 RelaxedPrecision + Decorate 113 RelaxedPrecision + Decorate 114 RelaxedPrecision + Decorate 115 RelaxedPrecision + Decorate 126(@entryPointOutput.Color) Location 0 + MemberDecorate 129($Global) 0 RelaxedPrecision + MemberDecorate 129($Global) 0 Offset 0 + MemberDecorate 129($Global) 1 RelaxedPrecision + MemberDecorate 129($Global) 1 Offset 4 + Decorate 129($Global) Block + Decorate 131 DescriptorSet 0 + Decorate 131 Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -182,21 +318,33 @@ gl_FragCoord origin is upper left 44: TypeVector 43(int) 2 45: TypePointer Function 44(ivec2) 48: TypePointer Function 43(int) - 53: TypePointer Function 8(PS_OUTPUT) - 55: 27(int) Constant 0 - 56: 6(float) Constant 0 - 57: 7(fvec4) ConstantComposite 56 56 56 56 - 58: TypePointer Function 7(fvec4) - 63: TypePointer Output 7(fvec4) -64(@entryPointOutput.Color): 63(ptr) Variable Output - 67($Global): TypeStruct 6(float) 6(float) - 68: TypePointer Uniform 67($Global) - 69: 68(ptr) Variable Uniform + 53: TypeMatrix 7(fvec4) 2 + 54: TypePointer Function 53 + 59: TypeMatrix 7(fvec4) 3 + 60: TypePointer Function 59 + 63: TypeVector 6(float) 3 + 64: TypePointer Function 63(fvec3) + 68: TypeMatrix 7(fvec4) 4 + 69: TypePointer Function 68 + 72: TypePointer Function 7(fvec4) + 77: TypeMatrix 12(fvec2) 4 + 78: TypePointer Function 77 + 83: TypeMatrix 63(fvec3) 4 + 84: TypePointer Function 83 + 116: TypePointer Function 8(PS_OUTPUT) + 118: 27(int) Constant 0 + 119: 6(float) Constant 0 + 120: 7(fvec4) ConstantComposite 119 119 119 119 + 125: TypePointer Output 7(fvec4) +126(@entryPointOutput.Color): 125(ptr) Variable Output + 129($Global): TypeStruct 6(float) 6(float) + 130: TypePointer Uniform 129($Global) + 131: 130(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label - 65:8(PS_OUTPUT) FunctionCall 10(@main() - 66: 7(fvec4) CompositeExtract 65 0 - Store 64(@entryPointOutput.Color) 66 + 127:8(PS_OUTPUT) FunctionCall 10(@main() + 128: 7(fvec4) CompositeExtract 127 0 + Store 126(@entryPointOutput.Color) 128 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 @@ -211,7 +359,21 @@ gl_FragCoord origin is upper left 39(mi12): 32(ptr) Variable Function 46(mu16_2): 45(ptr) Variable Function 49(mu16): 48(ptr) Variable Function - 54(psout): 53(ptr) Variable Function + 55(mf16_2x4): 54(ptr) Variable Function + 61(mf16_3x4): 60(ptr) Variable Function + 65(mf16_3): 64(ptr) Variable Function + 70(mf16_4x4): 69(ptr) Variable Function + 73(mf16_4): 72(ptr) Variable Function + 79(mf16_4x2): 78(ptr) Variable Function + 85(mf16_4x3): 84(ptr) Variable Function + 91(mf10_2x4): 54(ptr) Variable Function + 95(mf10_3x4): 60(ptr) Variable Function + 97(mf10_3): 64(ptr) Variable Function + 100(mf10_4x4): 69(ptr) Variable Function + 102(mf10_4): 72(ptr) Variable Function + 106(mf10_4x2): 78(ptr) Variable Function + 110(mf10_4x3): 84(ptr) Variable Function + 117(psout): 116(ptr) Variable Function 15: 12(fvec2) Load 14(mf16_2) 18: 6(float) Load 17(mf16) 19: 12(fvec2) CompositeConstruct 18 18 @@ -232,8 +394,44 @@ gl_FragCoord origin is upper left 50: 43(int) Load 49(mu16) 51: 44(ivec2) CompositeConstruct 50 50 52: 44(ivec2) IAdd 47 51 - 59: 58(ptr) AccessChain 54(psout) 55 - Store 59 57 - 60:8(PS_OUTPUT) Load 54(psout) - ReturnValue 60 + 56: 53 Load 55(mf16_2x4) + 57: 12(fvec2) Load 14(mf16_2) + 58: 7(fvec4) MatrixTimesVector 56 57 + 62: 59 Load 61(mf16_3x4) + 66: 63(fvec3) Load 65(mf16_3) + 67: 7(fvec4) MatrixTimesVector 62 66 + 71: 68 Load 70(mf16_4x4) + 74: 7(fvec4) Load 73(mf16_4) + 75: 7(fvec4) MatrixTimesVector 71 74 + 76: 12(fvec2) Load 14(mf16_2) + 80: 77 Load 79(mf16_4x2) + 81: 7(fvec4) VectorTimesMatrix 76 80 + 82: 63(fvec3) Load 65(mf16_3) + 86: 83 Load 85(mf16_4x3) + 87: 7(fvec4) VectorTimesMatrix 82 86 + 88: 7(fvec4) Load 73(mf16_4) + 89: 68 Load 70(mf16_4x4) + 90: 7(fvec4) VectorTimesMatrix 88 89 + 92: 53 Load 91(mf10_2x4) + 93: 12(fvec2) Load 21(mf10_2) + 94: 7(fvec4) MatrixTimesVector 92 93 + 96: 59 Load 95(mf10_3x4) + 98: 63(fvec3) Load 97(mf10_3) + 99: 7(fvec4) MatrixTimesVector 96 98 + 101: 68 Load 100(mf10_4x4) + 103: 7(fvec4) Load 102(mf10_4) + 104: 7(fvec4) MatrixTimesVector 101 103 + 105: 12(fvec2) Load 21(mf10_2) + 107: 77 Load 106(mf10_4x2) + 108: 7(fvec4) VectorTimesMatrix 105 107 + 109: 63(fvec3) Load 97(mf10_3) + 111: 83 Load 110(mf10_4x3) + 112: 7(fvec4) VectorTimesMatrix 109 111 + 113: 7(fvec4) Load 102(mf10_4) + 114: 68 Load 100(mf10_4x4) + 115: 7(fvec4) VectorTimesMatrix 113 114 + 121: 72(ptr) AccessChain 117(psout) 118 + Store 121 120 + 122:8(PS_OUTPUT) Load 117(psout) + ReturnValue 122 FunctionEnd diff --git a/Test/hlsl.mintypes.frag b/Test/hlsl.mintypes.frag index ad47e68e3b..a887562b43 100644 --- a/Test/hlsl.mintypes.frag +++ b/Test/hlsl.mintypes.frag @@ -12,30 +12,75 @@ PS_OUTPUT main() min16float2 mf16_2; min16float3 mf16_3; min16float4 mf16_4; + min16float2x2 mf16_2x2; + min16float2x3 mf16_2x3; + min16float2x4 mf16_2x4; + min16float3x2 mf16_3x2; + min16float3x3 mf16_3x3; + min16float3x4 mf16_3x4; + min16float4x2 mf16_4x2; + min16float4x3 mf16_4x3; + min16float4x4 mf16_4x4; min10float mf10; min10float1 mf10_1; min10float2 mf10_2; min10float3 mf10_3; - min10float4 mf12_4; + min10float4 mf10_4; + min10float2x2 mf10_2x2; + min10float2x3 mf10_2x3; + min10float2x4 mf10_2x4; + min10float3x2 mf10_3x2; + min10float3x3 mf10_3x3; + min10float3x4 mf10_3x4; + min10float4x2 mf10_4x2; + min10float4x3 mf10_4x3; + min10float4x4 mf10_4x4; min16int mi16; min16int1 mi16_1; min16int2 mi16_2; min16int3 mi16_3; min16int4 mi16_4; + min16int2x2 mi16_2x2; + min16int2x3 mi16_2x3; + min16int2x4 mi16_2x4; + min16int3x2 mi16_3x2; + min16int3x3 mi16_3x3; + min16int3x4 mi16_3x4; + min16int4x2 mi16_4x2; + min16int4x3 mi16_4x3; + min16int4x4 mi16_4x4; min12int mi12; min12int1 mi12_1; min12int2 mi12_2; min12int3 mi12_3; min12int4 mi12_4; + min12int2x2 mi12_2x2; + min12int2x3 mi12_2x3; + min12int2x4 mi12_2x4; + min12int3x2 mi12_3x2; + min12int3x3 mi12_3x3; + min12int3x4 mi12_3x4; + min12int4x2 mi12_4x2; + min12int4x3 mi12_4x3; + min12int4x4 mi12_4x4; min16uint mu16; min16uint1 mu16_1; min16uint2 mu16_2; min16uint3 mu16_3; min16uint4 mu16_4; + min16uint2x2 mu16_2x2; + min16uint2x3 mu16_2x3; + min16uint2x4 mu16_2x4; + min16uint3x2 mu16_3x2; + min16uint3x3 mu16_3x3; + min16uint3x4 mu16_3x4; + min16uint4x2 mu16_4x2; + min16uint4x3 mu16_4x3; + min16uint4x4 mu16_4x4; mf16_2 + mf16; mf10_2 + mf10; @@ -43,6 +88,20 @@ PS_OUTPUT main() mi12_2 + mi12; mu16_2 + mu16; + mul(mf16_2, mf16_2x4); + mul(mf16_3, mf16_3x4); + mul(mf16_4, mf16_4x4); + mul(mf16_4x2, mf16_2); + mul(mf16_4x3, mf16_3); + mul(mf16_4x4, mf16_4); + + mul(mf10_2, mf10_2x4); + mul(mf10_3, mf10_3x4); + mul(mf10_4, mf10_4x4); + mul(mf10_4x2, mf10_2); + mul(mf10_4x3, mf10_3); + mul(mf10_4x4, mf10_4); + PS_OUTPUT psout; psout.Color = 0; return psout; diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp index 19a792b985..8e6f44e3ac 100644 --- a/glslang/HLSL/hlslGrammar.cpp +++ b/glslang/HLSL/hlslGrammar.cpp @@ -823,8 +823,10 @@ bool HlslGrammar::acceptLayoutQualifierList(TQualifier& qualifier) // | UINT // | BOOL // -bool HlslGrammar::acceptTemplateVecMatBasicType(TBasicType& basicType) +bool HlslGrammar::acceptTemplateVecMatBasicType(TBasicType& basicType, + TPrecisionQualifier& precision) { + precision = EpqNone; switch (peek()) { case EHTokFloat: basicType = EbtFloat; @@ -842,6 +844,23 @@ bool HlslGrammar::acceptTemplateVecMatBasicType(TBasicType& basicType) case EHTokBool: basicType = EbtBool; break; + case EHTokHalf: + basicType = parseContext.hlslEnable16BitTypes() ? EbtFloat16 : EbtFloat; + break; + case EHTokMin16float: + case EHTokMin10float: + basicType = parseContext.hlslEnable16BitTypes() ? EbtFloat16 : EbtFloat; + precision = EpqMedium; + break; + case EHTokMin16int: + case EHTokMin12int: + basicType = parseContext.hlslEnable16BitTypes() ? EbtInt16 : EbtInt; + precision = EpqMedium; + break; + case EHTokMin16uint: + basicType = parseContext.hlslEnable16BitTypes() ? EbtUint16 : EbtUint; + precision = EpqMedium; + break; default: return false; } @@ -867,7 +886,8 @@ bool HlslGrammar::acceptVectorTemplateType(TType& type) } TBasicType basicType; - if (! acceptTemplateVecMatBasicType(basicType)) { + TPrecisionQualifier precision; + if (! acceptTemplateVecMatBasicType(basicType, precision)) { expected("scalar type"); return false; } @@ -890,7 +910,7 @@ bool HlslGrammar::acceptVectorTemplateType(TType& type) const int vecSizeI = vecSize->getAsConstantUnion()->getConstArray()[0].getIConst(); - new(&type) TType(basicType, EvqTemporary, vecSizeI); + new(&type) TType(basicType, EvqTemporary, precision, vecSizeI); if (vecSizeI == 1) type.makeVector(); @@ -919,7 +939,8 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type) } TBasicType basicType; - if (! acceptTemplateVecMatBasicType(basicType)) { + TPrecisionQualifier precision; + if (! acceptTemplateVecMatBasicType(basicType, precision)) { expected("scalar type"); return false; } @@ -956,7 +977,7 @@ bool HlslGrammar::acceptMatrixTemplateType(TType& type) if (! acceptLiteral(cols)) return false; - new(&type) TType(basicType, EvqTemporary, 0, + new(&type) TType(basicType, EvqTemporary, precision, 0, rows->getAsConstantUnion()->getConstArray()[0].getIConst(), cols->getAsConstantUnion()->getConstArray()[0].getIConst()); @@ -2064,6 +2085,251 @@ bool HlslGrammar::acceptType(TType& type, TIntermNode*& nodeList) new(&type) TType(EbtDouble, EvqTemporary, 0, 4, 4); break; + case EHTokMin16float1x1: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 1); + break; + case EHTokMin16float1x2: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 2); + break; + case EHTokMin16float1x3: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 3); + break; + case EHTokMin16float1x4: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 1, 4); + break; + case EHTokMin16float2x1: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 1); + break; + case EHTokMin16float2x2: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 2); + break; + case EHTokMin16float2x3: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 3); + break; + case EHTokMin16float2x4: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 2, 4); + break; + case EHTokMin16float3x1: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 1); + break; + case EHTokMin16float3x2: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 2); + break; + case EHTokMin16float3x3: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 3); + break; + case EHTokMin16float3x4: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 3, 4); + break; + case EHTokMin16float4x1: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 1); + break; + case EHTokMin16float4x2: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 2); + break; + case EHTokMin16float4x3: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 3); + break; + case EHTokMin16float4x4: + new(&type) TType(min16float_bt, EvqTemporary, EpqMedium, 0, 4, 4); + break; + + case EHTokMin10float1x1: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 1); + break; + case EHTokMin10float1x2: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 2); + break; + case EHTokMin10float1x3: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 3); + break; + case EHTokMin10float1x4: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 1, 4); + break; + case EHTokMin10float2x1: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 1); + break; + case EHTokMin10float2x2: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 2); + break; + case EHTokMin10float2x3: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 3); + break; + case EHTokMin10float2x4: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 2, 4); + break; + case EHTokMin10float3x1: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 1); + break; + case EHTokMin10float3x2: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 2); + break; + case EHTokMin10float3x3: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 3); + break; + case EHTokMin10float3x4: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 3, 4); + break; + case EHTokMin10float4x1: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 1); + break; + case EHTokMin10float4x2: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 2); + break; + case EHTokMin10float4x3: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 3); + break; + case EHTokMin10float4x4: + new(&type) TType(min10float_bt, EvqTemporary, EpqMedium, 0, 4, 4); + break; + + case EHTokMin16int1x1: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 1); + break; + case EHTokMin16int1x2: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 2); + break; + case EHTokMin16int1x3: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 3); + break; + case EHTokMin16int1x4: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 1, 4); + break; + case EHTokMin16int2x1: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 1); + break; + case EHTokMin16int2x2: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 2); + break; + case EHTokMin16int2x3: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 3); + break; + case EHTokMin16int2x4: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 2, 4); + break; + case EHTokMin16int3x1: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 1); + break; + case EHTokMin16int3x2: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 2); + break; + case EHTokMin16int3x3: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 3); + break; + case EHTokMin16int3x4: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 3, 4); + break; + case EHTokMin16int4x1: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 1); + break; + case EHTokMin16int4x2: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 2); + break; + case EHTokMin16int4x3: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 3); + break; + case EHTokMin16int4x4: + new(&type) TType(min16int_bt, EvqTemporary, EpqMedium, 0, 4, 4); + break; + + case EHTokMin12int1x1: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 1); + break; + case EHTokMin12int1x2: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 2); + break; + case EHTokMin12int1x3: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 3); + break; + case EHTokMin12int1x4: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 1, 4); + break; + case EHTokMin12int2x1: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 1); + break; + case EHTokMin12int2x2: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 2); + break; + case EHTokMin12int2x3: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 3); + break; + case EHTokMin12int2x4: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 2, 4); + break; + case EHTokMin12int3x1: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 1); + break; + case EHTokMin12int3x2: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 2); + break; + case EHTokMin12int3x3: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 3); + break; + case EHTokMin12int3x4: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 3, 4); + break; + case EHTokMin12int4x1: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 1); + break; + case EHTokMin12int4x2: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 2); + break; + case EHTokMin12int4x3: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 3); + break; + case EHTokMin12int4x4: + new(&type) TType(min12int_bt, EvqTemporary, EpqMedium, 0, 4, 4); + break; + + case EHTokMin16uint1x1: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 1); + break; + case EHTokMin16uint1x2: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 2); + break; + case EHTokMin16uint1x3: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 3); + break; + case EHTokMin16uint1x4: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 1, 4); + break; + case EHTokMin16uint2x1: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 1); + break; + case EHTokMin16uint2x2: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 2); + break; + case EHTokMin16uint2x3: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 3); + break; + case EHTokMin16uint2x4: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 2, 4); + break; + case EHTokMin16uint3x1: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 1); + break; + case EHTokMin16uint3x2: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 2); + break; + case EHTokMin16uint3x3: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 3); + break; + case EHTokMin16uint3x4: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 3, 4); + break; + case EHTokMin16uint4x1: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 1); + break; + case EHTokMin16uint4x2: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 2); + break; + case EHTokMin16uint4x3: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 3); + break; + case EHTokMin16uint4x4: + new(&type) TType(min16uint_bt, EvqTemporary, EpqMedium, 0, 4, 4); + break; + default: return false; } diff --git a/glslang/HLSL/hlslGrammar.h b/glslang/HLSL/hlslGrammar.h index 27706b2b9b..6c120081a4 100644 --- a/glslang/HLSL/hlslGrammar.h +++ b/glslang/HLSL/hlslGrammar.h @@ -76,7 +76,7 @@ namespace glslang { bool acceptLayoutQualifierList(TQualifier&); bool acceptType(TType&); bool acceptType(TType&, TIntermNode*& nodeList); - bool acceptTemplateVecMatBasicType(TBasicType&); + bool acceptTemplateVecMatBasicType(TBasicType&, TPrecisionQualifier&); bool acceptVectorTemplateType(TType&); bool acceptMatrixTemplateType(TType&); bool acceptTessellationDeclType(TBuiltInVariable&); diff --git a/glslang/HLSL/hlslScanContext.cpp b/glslang/HLSL/hlslScanContext.cpp index fc62672f4e..823b17aa3f 100644 --- a/glslang/HLSL/hlslScanContext.cpp +++ b/glslang/HLSL/hlslScanContext.cpp @@ -312,6 +312,86 @@ void HlslScanContext::fillInKeywordMap() (*KeywordMap)["double4x2"] = EHTokDouble4x2; (*KeywordMap)["double4x3"] = EHTokDouble4x3; (*KeywordMap)["double4x4"] = EHTokDouble4x4; + (*KeywordMap)["min16float1x1"] = EHTokMin16float1x1; + (*KeywordMap)["min16float1x2"] = EHTokMin16float1x2; + (*KeywordMap)["min16float1x3"] = EHTokMin16float1x3; + (*KeywordMap)["min16float1x4"] = EHTokMin16float1x4; + (*KeywordMap)["min16float2x1"] = EHTokMin16float2x1; + (*KeywordMap)["min16float2x2"] = EHTokMin16float2x2; + (*KeywordMap)["min16float2x3"] = EHTokMin16float2x3; + (*KeywordMap)["min16float2x4"] = EHTokMin16float2x4; + (*KeywordMap)["min16float3x1"] = EHTokMin16float3x1; + (*KeywordMap)["min16float3x2"] = EHTokMin16float3x2; + (*KeywordMap)["min16float3x3"] = EHTokMin16float3x3; + (*KeywordMap)["min16float3x4"] = EHTokMin16float3x4; + (*KeywordMap)["min16float4x1"] = EHTokMin16float4x1; + (*KeywordMap)["min16float4x2"] = EHTokMin16float4x2; + (*KeywordMap)["min16float4x3"] = EHTokMin16float4x3; + (*KeywordMap)["min16float4x4"] = EHTokMin16float4x4; + (*KeywordMap)["min10float1x1"] = EHTokMin10float1x1; + (*KeywordMap)["min10float1x2"] = EHTokMin10float1x2; + (*KeywordMap)["min10float1x3"] = EHTokMin10float1x3; + (*KeywordMap)["min10float1x4"] = EHTokMin10float1x4; + (*KeywordMap)["min10float2x1"] = EHTokMin10float2x1; + (*KeywordMap)["min10float2x2"] = EHTokMin10float2x2; + (*KeywordMap)["min10float2x3"] = EHTokMin10float2x3; + (*KeywordMap)["min10float2x4"] = EHTokMin10float2x4; + (*KeywordMap)["min10float3x1"] = EHTokMin10float3x1; + (*KeywordMap)["min10float3x2"] = EHTokMin10float3x2; + (*KeywordMap)["min10float3x3"] = EHTokMin10float3x3; + (*KeywordMap)["min10float3x4"] = EHTokMin10float3x4; + (*KeywordMap)["min10float4x1"] = EHTokMin10float4x1; + (*KeywordMap)["min10float4x2"] = EHTokMin10float4x2; + (*KeywordMap)["min10float4x3"] = EHTokMin10float4x3; + (*KeywordMap)["min10float4x4"] = EHTokMin10float4x4; + (*KeywordMap)["min16int1x1"] = EHTokMin16int1x1; + (*KeywordMap)["min16int1x2"] = EHTokMin16int1x2; + (*KeywordMap)["min16int1x3"] = EHTokMin16int1x3; + (*KeywordMap)["min16int1x4"] = EHTokMin16int1x4; + (*KeywordMap)["min16int2x1"] = EHTokMin16int2x1; + (*KeywordMap)["min16int2x2"] = EHTokMin16int2x2; + (*KeywordMap)["min16int2x3"] = EHTokMin16int2x3; + (*KeywordMap)["min16int2x4"] = EHTokMin16int2x4; + (*KeywordMap)["min16int3x1"] = EHTokMin16int3x1; + (*KeywordMap)["min16int3x2"] = EHTokMin16int3x2; + (*KeywordMap)["min16int3x3"] = EHTokMin16int3x3; + (*KeywordMap)["min16int3x4"] = EHTokMin16int3x4; + (*KeywordMap)["min16int4x1"] = EHTokMin16int4x1; + (*KeywordMap)["min16int4x2"] = EHTokMin16int4x2; + (*KeywordMap)["min16int4x3"] = EHTokMin16int4x3; + (*KeywordMap)["min16int4x4"] = EHTokMin16int4x4; + (*KeywordMap)["min12int1x1"] = EHTokMin12int1x1; + (*KeywordMap)["min12int1x2"] = EHTokMin12int1x2; + (*KeywordMap)["min12int1x3"] = EHTokMin12int1x3; + (*KeywordMap)["min12int1x4"] = EHTokMin12int1x4; + (*KeywordMap)["min12int2x1"] = EHTokMin12int2x1; + (*KeywordMap)["min12int2x2"] = EHTokMin12int2x2; + (*KeywordMap)["min12int2x3"] = EHTokMin12int2x3; + (*KeywordMap)["min12int2x4"] = EHTokMin12int2x4; + (*KeywordMap)["min12int3x1"] = EHTokMin12int3x1; + (*KeywordMap)["min12int3x2"] = EHTokMin12int3x2; + (*KeywordMap)["min12int3x3"] = EHTokMin12int3x3; + (*KeywordMap)["min12int3x4"] = EHTokMin12int3x4; + (*KeywordMap)["min12int4x1"] = EHTokMin12int4x1; + (*KeywordMap)["min12int4x2"] = EHTokMin12int4x2; + (*KeywordMap)["min12int4x3"] = EHTokMin12int4x3; + (*KeywordMap)["min12int4x4"] = EHTokMin12int4x4; + (*KeywordMap)["min16uint1x1"] = EHTokMin16uint1x1; + (*KeywordMap)["min16uint1x2"] = EHTokMin16uint1x2; + (*KeywordMap)["min16uint1x3"] = EHTokMin16uint1x3; + (*KeywordMap)["min16uint1x4"] = EHTokMin16uint1x4; + (*KeywordMap)["min16uint2x1"] = EHTokMin16uint2x1; + (*KeywordMap)["min16uint2x2"] = EHTokMin16uint2x2; + (*KeywordMap)["min16uint2x3"] = EHTokMin16uint2x3; + (*KeywordMap)["min16uint2x4"] = EHTokMin16uint2x4; + (*KeywordMap)["min16uint3x1"] = EHTokMin16uint3x1; + (*KeywordMap)["min16uint3x2"] = EHTokMin16uint3x2; + (*KeywordMap)["min16uint3x3"] = EHTokMin16uint3x3; + (*KeywordMap)["min16uint3x4"] = EHTokMin16uint3x4; + (*KeywordMap)["min16uint4x1"] = EHTokMin16uint4x1; + (*KeywordMap)["min16uint4x2"] = EHTokMin16uint4x2; + (*KeywordMap)["min16uint4x3"] = EHTokMin16uint4x3; + (*KeywordMap)["min16uint4x4"] = EHTokMin16uint4x4; (*KeywordMap)["sampler"] = EHTokSampler; (*KeywordMap)["sampler1D"] = EHTokSampler1d; @@ -806,6 +886,86 @@ EHlslTokenClass HlslScanContext::tokenizeIdentifier() case EHTokDouble4x2: case EHTokDouble4x3: case EHTokDouble4x4: + case EHTokMin16float1x1: + case EHTokMin16float1x2: + case EHTokMin16float1x3: + case EHTokMin16float1x4: + case EHTokMin16float2x1: + case EHTokMin16float2x2: + case EHTokMin16float2x3: + case EHTokMin16float2x4: + case EHTokMin16float3x1: + case EHTokMin16float3x2: + case EHTokMin16float3x3: + case EHTokMin16float3x4: + case EHTokMin16float4x1: + case EHTokMin16float4x2: + case EHTokMin16float4x3: + case EHTokMin16float4x4: + case EHTokMin10float1x1: + case EHTokMin10float1x2: + case EHTokMin10float1x3: + case EHTokMin10float1x4: + case EHTokMin10float2x1: + case EHTokMin10float2x2: + case EHTokMin10float2x3: + case EHTokMin10float2x4: + case EHTokMin10float3x1: + case EHTokMin10float3x2: + case EHTokMin10float3x3: + case EHTokMin10float3x4: + case EHTokMin10float4x1: + case EHTokMin10float4x2: + case EHTokMin10float4x3: + case EHTokMin10float4x4: + case EHTokMin16int1x1: + case EHTokMin16int1x2: + case EHTokMin16int1x3: + case EHTokMin16int1x4: + case EHTokMin16int2x1: + case EHTokMin16int2x2: + case EHTokMin16int2x3: + case EHTokMin16int2x4: + case EHTokMin16int3x1: + case EHTokMin16int3x2: + case EHTokMin16int3x3: + case EHTokMin16int3x4: + case EHTokMin16int4x1: + case EHTokMin16int4x2: + case EHTokMin16int4x3: + case EHTokMin16int4x4: + case EHTokMin12int1x1: + case EHTokMin12int1x2: + case EHTokMin12int1x3: + case EHTokMin12int1x4: + case EHTokMin12int2x1: + case EHTokMin12int2x2: + case EHTokMin12int2x3: + case EHTokMin12int2x4: + case EHTokMin12int3x1: + case EHTokMin12int3x2: + case EHTokMin12int3x3: + case EHTokMin12int3x4: + case EHTokMin12int4x1: + case EHTokMin12int4x2: + case EHTokMin12int4x3: + case EHTokMin12int4x4: + case EHTokMin16uint1x1: + case EHTokMin16uint1x2: + case EHTokMin16uint1x3: + case EHTokMin16uint1x4: + case EHTokMin16uint2x1: + case EHTokMin16uint2x2: + case EHTokMin16uint2x3: + case EHTokMin16uint2x4: + case EHTokMin16uint3x1: + case EHTokMin16uint3x2: + case EHTokMin16uint3x3: + case EHTokMin16uint3x4: + case EHTokMin16uint4x1: + case EHTokMin16uint4x2: + case EHTokMin16uint4x3: + case EHTokMin16uint4x4: return keyword; // texturing types diff --git a/glslang/HLSL/hlslTokens.h b/glslang/HLSL/hlslTokens.h index 4426bccecb..a7c129907f 100644 --- a/glslang/HLSL/hlslTokens.h +++ b/glslang/HLSL/hlslTokens.h @@ -249,6 +249,86 @@ enum EHlslTokenClass { EHTokDouble4x2, EHTokDouble4x3, EHTokDouble4x4, + EHTokMin16float1x1, + EHTokMin16float1x2, + EHTokMin16float1x3, + EHTokMin16float1x4, + EHTokMin16float2x1, + EHTokMin16float2x2, + EHTokMin16float2x3, + EHTokMin16float2x4, + EHTokMin16float3x1, + EHTokMin16float3x2, + EHTokMin16float3x3, + EHTokMin16float3x4, + EHTokMin16float4x1, + EHTokMin16float4x2, + EHTokMin16float4x3, + EHTokMin16float4x4, + EHTokMin10float1x1, + EHTokMin10float1x2, + EHTokMin10float1x3, + EHTokMin10float1x4, + EHTokMin10float2x1, + EHTokMin10float2x2, + EHTokMin10float2x3, + EHTokMin10float2x4, + EHTokMin10float3x1, + EHTokMin10float3x2, + EHTokMin10float3x3, + EHTokMin10float3x4, + EHTokMin10float4x1, + EHTokMin10float4x2, + EHTokMin10float4x3, + EHTokMin10float4x4, + EHTokMin16int1x1, + EHTokMin16int1x2, + EHTokMin16int1x3, + EHTokMin16int1x4, + EHTokMin16int2x1, + EHTokMin16int2x2, + EHTokMin16int2x3, + EHTokMin16int2x4, + EHTokMin16int3x1, + EHTokMin16int3x2, + EHTokMin16int3x3, + EHTokMin16int3x4, + EHTokMin16int4x1, + EHTokMin16int4x2, + EHTokMin16int4x3, + EHTokMin16int4x4, + EHTokMin12int1x1, + EHTokMin12int1x2, + EHTokMin12int1x3, + EHTokMin12int1x4, + EHTokMin12int2x1, + EHTokMin12int2x2, + EHTokMin12int2x3, + EHTokMin12int2x4, + EHTokMin12int3x1, + EHTokMin12int3x2, + EHTokMin12int3x3, + EHTokMin12int3x4, + EHTokMin12int4x1, + EHTokMin12int4x2, + EHTokMin12int4x3, + EHTokMin12int4x4, + EHTokMin16uint1x1, + EHTokMin16uint1x2, + EHTokMin16uint1x3, + EHTokMin16uint1x4, + EHTokMin16uint2x1, + EHTokMin16uint2x2, + EHTokMin16uint2x3, + EHTokMin16uint2x4, + EHTokMin16uint3x1, + EHTokMin16uint3x2, + EHTokMin16uint3x3, + EHTokMin16uint3x4, + EHTokMin16uint4x1, + EHTokMin16uint4x2, + EHTokMin16uint4x3, + EHTokMin16uint4x4, // texturing types EHTokSampler, From 7341a21b345e7aea1d2791db0f2d36866c434c03 Mon Sep 17 00:00:00 2001 From: Hans Wennborg Date: Thu, 2 Feb 2023 16:51:31 +0100 Subject: [PATCH 140/594] GLSL: Fix integer overflow warnings in Constant.cpp New versions of Clang warn: ``` glslang/MachineIndependent/Constant.cpp(216,114): error: overflow in expression; result is -9223372036854775808 with type 'long long' [-Werror,-Winteger-overflow] else if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == (long long)-0x8000000000000000ll) ^ glslang/MachineIndependent/Constant.cpp(217,61): error: overflow in expression; result is -9223372036854775808 with type 'long long' [-Werror,-Winteger-overflow] newConstArray[i].setI64Const((long long)-0x8000000000000000ll); ^ 2 errors generated. ``` Using LLONG_MIN instead avoids the problem. I think it's also more clear, and the code for EOpMod further down already does this. --- glslang/MachineIndependent/Constant.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 40f53bbcc5..f6916cbef6 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -212,9 +212,9 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right case EbtInt64: if (rightUnionArray[i] == 0ll) - newConstArray[i].setI64Const(0x7FFFFFFFFFFFFFFFll); - else if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == (long long)-0x8000000000000000ll) - newConstArray[i].setI64Const((long long)-0x8000000000000000ll); + newConstArray[i].setI64Const(LLONG_MAX); + else if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == LLONG_MIN) + newConstArray[i].setI64Const(LLONG_MIN); else newConstArray[i].setI64Const(leftUnionArray[i].getI64Const() / rightUnionArray[i].getI64Const()); break; From 95ad533eb0d8e44bd4434b40eedbe12d9ba5ae37 Mon Sep 17 00:00:00 2001 From: Maciej Date: Wed, 1 Feb 2023 14:09:55 +0100 Subject: [PATCH 141/594] Block-decorate Vulkan Structs with RuntimeArrays Fixes KhronosGroup/glslang#2439 When decorating a struct for Vulkan, add [Buffer]Block decoration if the struct has a RuntimeArray member, as required by VUID-...-04680. --- SPIRV/GlslangToSpv.cpp | 52 ++++++++++++++++++++++++------------------ 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 378f792482..713db67dfc 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -175,7 +175,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, const glslang::TQualifier&); void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, - const glslang::TQualifier&, spv::Id); + const glslang::TQualifier&, spv::Id, const std::vector& spvMembers); spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim); spv::Id accessChainLoad(const glslang::TType& type); void accessChainStore(const glslang::TType& type, spv::Id rvalue); @@ -375,27 +375,25 @@ spv::Decoration TranslatePrecisionDecoration(const glslang::TType& type) } // Translate glslang type to SPIR-V block decorations. -spv::Decoration TranslateBlockDecoration(const glslang::TType& type, bool useStorageBuffer) +spv::Decoration TranslateBlockDecoration(const glslang::TStorageQualifier storage, bool useStorageBuffer) { - if (type.getBasicType() == glslang::EbtBlock) { - switch (type.getQualifier().storage) { - case glslang::EvqUniform: return spv::DecorationBlock; - case glslang::EvqBuffer: return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock; - case glslang::EvqVaryingIn: return spv::DecorationBlock; - case glslang::EvqVaryingOut: return spv::DecorationBlock; - case glslang::EvqShared: return spv::DecorationBlock; + switch (storage) { + case glslang::EvqUniform: return spv::DecorationBlock; + case glslang::EvqBuffer: return useStorageBuffer ? spv::DecorationBlock : spv::DecorationBufferBlock; + case glslang::EvqVaryingIn: return spv::DecorationBlock; + case glslang::EvqVaryingOut: return spv::DecorationBlock; + case glslang::EvqShared: return spv::DecorationBlock; #ifndef GLSLANG_WEB - case glslang::EvqPayload: return spv::DecorationBlock; - case glslang::EvqPayloadIn: return spv::DecorationBlock; - case glslang::EvqHitAttr: return spv::DecorationBlock; - case glslang::EvqCallableData: return spv::DecorationBlock; - case glslang::EvqCallableDataIn: return spv::DecorationBlock; - case glslang::EvqHitObjectAttrNV: return spv::DecorationBlock; + case glslang::EvqPayload: return spv::DecorationBlock; + case glslang::EvqPayloadIn: return spv::DecorationBlock; + case glslang::EvqHitAttr: return spv::DecorationBlock; + case glslang::EvqCallableData: return spv::DecorationBlock; + case glslang::EvqCallableDataIn: return spv::DecorationBlock; + case glslang::EvqHitObjectAttrNV: return spv::DecorationBlock; #endif - default: - assert(0); - break; - } + default: + assert(0); + break; } return spv::DecorationMax; @@ -4672,7 +4670,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangStructToSpvType(const glslang::TTy structMap[explicitLayout][qualifier.layoutMatrix][glslangMembers] = spvType; // Decorate it - decorateStructType(type, glslangMembers, explicitLayout, qualifier, spvType); + decorateStructType(type, glslangMembers, explicitLayout, qualifier, spvType, spvMembers); for (int i = 0; i < (int)deferredForwardPointers.size(); ++i) { auto it = deferredForwardPointers[i]; @@ -4686,7 +4684,8 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, const glslang::TTypeList* glslangMembers, glslang::TLayoutPacking explicitLayout, const glslang::TQualifier& qualifier, - spv::Id spvType) + spv::Id spvType, + const std::vector& spvMembers) { // Name and decorate the non-hidden members int offset = -1; @@ -4839,7 +4838,16 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // Decorate the structure builder.addDecoration(spvType, TranslateLayoutDecoration(type, qualifier.layoutMatrix)); - builder.addDecoration(spvType, TranslateBlockDecoration(type, glslangIntermediate->usingStorageBuffer())); + const auto basicType = type.getBasicType(); + const auto typeStorageQualifier = type.getQualifier().storage; + if (basicType == glslang::EbtBlock) { + builder.addDecoration(spvType, TranslateBlockDecoration(typeStorageQualifier, glslangIntermediate->usingStorageBuffer())); + } else if (basicType == glslang::EbtStruct && glslangIntermediate->getSpv().vulkan > 0) { + const auto hasRuntimeArray = !spvMembers.empty() && builder.getOpCode(spvMembers.back()) == spv::OpTypeRuntimeArray; + if (hasRuntimeArray) { + builder.addDecoration(spvType, TranslateBlockDecoration(typeStorageQualifier, glslangIntermediate->usingStorageBuffer())); + } + } if (qualifier.hasHitObjectShaderRecordNV()) builder.addDecoration(spvType, spv::DecorationHitObjectShaderRecordBufferNV); From d604f26843c382561db3ecfb0d02255642871237 Mon Sep 17 00:00:00 2001 From: Maciej Date: Thu, 2 Feb 2023 09:59:24 +0100 Subject: [PATCH 142/594] Add test --- .../hlsl.nested-runtimeArray.frag.out | 119 ++++++++++++++++++ Test/hlsl.nested-runtimeArray.frag | 9 ++ gtests/Hlsl.FromFile.cpp | 1 + 3 files changed, 129 insertions(+) create mode 100644 Test/baseResults/hlsl.nested-runtimeArray.frag.out create mode 100644 Test/hlsl.nested-runtimeArray.frag diff --git a/Test/baseResults/hlsl.nested-runtimeArray.frag.out b/Test/baseResults/hlsl.nested-runtimeArray.frag.out new file mode 100644 index 0000000000..f019290c97 --- /dev/null +++ b/Test/baseResults/hlsl.nested-runtimeArray.frag.out @@ -0,0 +1,119 @@ +hlsl.nested-runtimeArray.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:7 Function Definition: @main( ( temp float) +0:7 Function Parameters: +0:? Sequence +0:8 Branch: Return with expression +0:8 direct index ( temp float) +0:8 a: direct index for structure ( temp unsized 1-element array of float) +0:8 direct index (layout( row_major std430) buffer structure{ temp unsized 1-element array of float a}) +0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a}) +0:8 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) +0:8 Constant: +0:8 0 (const uint) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0 (const int) +0:7 Function Definition: main( ( temp void) +0:7 Function Parameters: +0:? Sequence +0:7 move second child to first child ( temp float) +0:? '@entryPointOutput' (layout( location=0) out float) +0:7 Function Call: @main( ( temp float) +0:? Linker Objects +0:? 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) +0:? '@entryPointOutput' (layout( location=0) out float) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:7 Function Definition: @main( ( temp float) +0:7 Function Parameters: +0:? Sequence +0:8 Branch: Return with expression +0:8 direct index ( temp float) +0:8 a: direct index for structure ( temp unsized 1-element array of float) +0:8 direct index (layout( row_major std430) buffer structure{ temp unsized 1-element array of float a}) +0:8 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a}) +0:8 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) +0:8 Constant: +0:8 0 (const uint) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0 (const int) +0:8 Constant: +0:8 0 (const int) +0:7 Function Definition: main( ( temp void) +0:7 Function Parameters: +0:? Sequence +0:7 move second child to first child ( temp float) +0:? '@entryPointOutput' (layout( location=0) out float) +0:7 Function Call: @main( ( temp float) +0:? Linker Objects +0:? 'B' (layout( row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp unsized 1-element array of float a} @data}) +0:? '@entryPointOutput' (layout( location=0) out float) + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 26 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 24 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 8 "@main(" + Name 11 "A" + MemberName 11(A) 0 "a" + Name 13 "B" + MemberName 13(B) 0 "@data" + Name 15 "B" + Name 24 "@entryPointOutput" + Decorate 10 ArrayStride 4 + MemberDecorate 11(A) 0 Offset 0 + Decorate 11(A) BufferBlock + Decorate 12 ArrayStride 4 + MemberDecorate 13(B) 0 Offset 0 + Decorate 13(B) BufferBlock + Decorate 15(B) DescriptorSet 0 + Decorate 15(B) Binding 0 + Decorate 24(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeFunction 6(float) + 10: TypeRuntimeArray 6(float) + 11(A): TypeStruct 10 + 12: TypeRuntimeArray 11(A) + 13(B): TypeStruct 12 + 14: TypePointer Uniform 13(B) + 15(B): 14(ptr) Variable Uniform + 16: TypeInt 32 1 + 17: 16(int) Constant 0 + 18: TypePointer Uniform 6(float) + 23: TypePointer Output 6(float) +24(@entryPointOutput): 23(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 25: 6(float) FunctionCall 8(@main() + Store 24(@entryPointOutput) 25 + Return + FunctionEnd + 8(@main(): 6(float) Function None 7 + 9: Label + 19: 18(ptr) AccessChain 15(B) 17 17 17 17 + 20: 6(float) Load 19 + ReturnValue 20 + FunctionEnd diff --git a/Test/hlsl.nested-runtimeArray.frag b/Test/hlsl.nested-runtimeArray.frag new file mode 100644 index 0000000000..3606adac38 --- /dev/null +++ b/Test/hlsl.nested-runtimeArray.frag @@ -0,0 +1,9 @@ +struct A { + float a[]; +}; + +RWStructuredBuffer B; + +float main() { + return B[0].a[0]; +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 5974257620..32d5df9e32 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -417,6 +417,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.matType.bool.frag", "main"}, {"hlsl.matType.int.frag", "main"}, {"hlsl.max.frag", "PixelShaderFunction"}, + {"hlsl.nested-runtimeArray.frag", "main"}, {"hlsl.preprocessor.frag", "main"}, {"hlsl.precedence.frag", "PixelShaderFunction"}, {"hlsl.precedence2.frag", "PixelShaderFunction"}, From 8329d4a44bad80494580728aec35ce64553e6c91 Mon Sep 17 00:00:00 2001 From: David Neto Date: Thu, 2 Feb 2023 13:20:28 -0500 Subject: [PATCH 143/594] kokoro: avoid git permissions issue that GN fails on In the docker build script that Kokoro runs, the directories are owned by a different user. Git complains about that and in the GN flow GN will error out. In this docker flow we don't care about that warning, so within the docker config set a git global option to ignore the issue. --- kokoro/linux-clang-gn/build-docker.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kokoro/linux-clang-gn/build-docker.sh b/kokoro/linux-clang-gn/build-docker.sh index 1035ab88ce..d00d2759db 100755 --- a/kokoro/linux-clang-gn/build-docker.sh +++ b/kokoro/linux-clang-gn/build-docker.sh @@ -36,6 +36,10 @@ set -e # Fail on any error. set -x # Display commands being run. +# Disable git's "detected dubious ownership" error - kokoro checks out the repo +# with a different user, and we don't care about this warning. +git config --global --add safe.directory '*' + echo "Fetching external projects..." ./update_glslang_sources.py From d62ef8a20abeb14593e04a3703048f30d06eae66 Mon Sep 17 00:00:00 2001 From: David Neto Date: Thu, 2 Feb 2023 16:23:49 -0500 Subject: [PATCH 144/594] Use the ninja already in the docker build. --- kokoro/linux-clang-gn/build-docker.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/kokoro/linux-clang-gn/build-docker.sh b/kokoro/linux-clang-gn/build-docker.sh index d00d2759db..6540b1be0d 100755 --- a/kokoro/linux-clang-gn/build-docker.sh +++ b/kokoro/linux-clang-gn/build-docker.sh @@ -34,8 +34,13 @@ # POSSIBILITY OF SUCH DAMAGE. set -e # Fail on any error. + +. /bin/using.sh # Declare the bash `using` function for configuring toolchains. + set -x # Display commands being run. +using ninja-1.10.0 + # Disable git's "detected dubious ownership" error - kokoro checks out the repo # with a different user, and we don't care about this warning. git config --global --add safe.directory '*' From 4386679bcdb5c90833b5e46ea76d58d4fc2493f1 Mon Sep 17 00:00:00 2001 From: Jan Engelhardt Date: Tue, 18 Aug 2020 17:12:16 +0200 Subject: [PATCH 145/594] build: set SOVERSION on all libraries Commit fbe9a23baf2cb020fe3f80d68d972e2a97d9b954 erroneously only added SOVERSION to libglslang.so, but none of the others that are produced. Signed-off-by: Jan Engelhardt --- SPIRV/CMakeLists.txt | 2 ++ StandAlone/CMakeLists.txt | 1 + hlsl/CMakeLists.txt | 1 + 3 files changed, 4 insertions(+) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 62ffbc4584..35b7462118 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -71,6 +71,7 @@ set(SPVREMAP_HEADERS doc.h) add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) +set_target_properties(SPIRV PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") set_property(TARGET SPIRV PROPERTY FOLDER glslang) set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(SPIRV PUBLIC @@ -81,6 +82,7 @@ glslang_add_build_info_dependency(SPIRV) if (ENABLE_SPVREMAPPER) add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) + set_target_properties(SPVRemapper PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") set_property(TARGET SPVRemapper PROPERTY FOLDER glslang) set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON) endif() diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index b9bac802b8..81d8c3b347 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -50,6 +50,7 @@ add_custom_command( add_library(glslang-default-resource-limits ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp) +set_target_properties(glslang-default-resource-limits PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang) set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index a4adb6072a..4d5f15fde8 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -40,6 +40,7 @@ add_library(HLSL ${LIB_TYPE} "stub.cpp") set_property(TARGET HLSL PROPERTY FOLDER hlsl) set_property(TARGET HLSL PROPERTY POSITION_INDEPENDENT_CODE ON) +set_target_properties(HLSL PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(HLSL PROPERTIES PREFIX "") From ae55d83a8801a7665b9bcfbbebd9f00b1eec324f Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Sat, 4 Feb 2023 01:44:41 -0800 Subject: [PATCH 146/594] change HLSL/hlslParseables.cpp to support InterlockedAdd on F=float types --- glslang/HLSL/hlslParseables.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glslang/HLSL/hlslParseables.cpp b/glslang/HLSL/hlslParseables.cpp index 15918dc376..8fb1d2909c 100644 --- a/glslang/HLSL/hlslParseables.cpp +++ b/glslang/HLSL/hlslParseables.cpp @@ -564,8 +564,8 @@ void TBuiltInParseablesHlsl::initialize(int /*version*/, EProfile /*profile*/, c { "GetRenderTargetSamplePosition", "V2", "F", "V1", "I", EShLangAll, false }, { "GroupMemoryBarrier", nullptr, nullptr, "-", "-", EShLangCS, false }, { "GroupMemoryBarrierWithGroupSync", nullptr, nullptr, "-", "-", EShLangCS, false }, - { "InterlockedAdd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, - { "InterlockedAdd", "-", "-", "SVM,", "UI,", EShLangPSCS, false }, + { "InterlockedAdd", "-", "-", "SVM,,>", "FUI,,", EShLangPSCS, false }, + { "InterlockedAdd", "-", "-", "SVM,", "FUI,", EShLangPSCS, false }, { "InterlockedAnd", "-", "-", "SVM,,>", "UI,,", EShLangPSCS, false }, { "InterlockedAnd", "-", "-", "SVM,", "UI,", EShLangPSCS, false }, { "InterlockedCompareExchange", "-", "-", "SVM,,,>", "UI,,,", EShLangPSCS, false }, From 6d41bb9c557c5a0eec61ffba1f775dc5f717a8f7 Mon Sep 17 00:00:00 2001 From: "Randall C. O'Reilly" Date: Wed, 8 Feb 2023 02:01:25 -0800 Subject: [PATCH 147/594] updated test to test atomic float add and test results --- Test/baseResults/hlsl.intrinsics.comp.out | 1279 +++++++++++---------- Test/hlsl.intrinsics.comp | 4 + 2 files changed, 653 insertions(+), 630 deletions(-) diff --git a/Test/baseResults/hlsl.intrinsics.comp.out b/Test/baseResults/hlsl.intrinsics.comp.out index 56752afbca..c02e58ee4d 100644 --- a/Test/baseResults/hlsl.intrinsics.comp.out +++ b/Test/baseResults/hlsl.intrinsics.comp.out @@ -2,334 +2,337 @@ hlsl.intrinsics.comp Shader version: 500 local_size = (1, 1, 1) 0:? Sequence -0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) -0:17 Function Parameters: -0:17 'inF0' ( in float) -0:17 'inF1' ( in float) -0:17 'inF2' ( in float) -0:17 'inU0' ( in uint) -0:17 'inU1' ( in uint) +0:19 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) +0:19 Function Parameters: +0:19 'inF0' ( in float) +0:19 'inF1' ( in float) +0:19 'inF2' ( in float) +0:19 'inU0' ( in uint) +0:19 'inU1' ( in uint) 0:? Sequence -0:21 all ( temp bool) -0:21 Convert float to bool ( temp bool) -0:21 'inF0' ( in float) -0:24 AtomicAdd ( temp uint) -0:24 'gs_ua' ( shared uint) -0:24 'gs_ub' ( shared uint) -0:25 move second child to first child ( temp uint) -0:25 'out_u1' ( temp uint) -0:25 AtomicAdd ( temp uint) -0:25 'gs_ua' ( shared uint) -0:25 'gs_ub' ( shared uint) -0:26 AtomicAnd ( temp uint) +0:23 all ( temp bool) +0:23 Convert float to bool ( temp bool) +0:23 'inF0' ( in float) +0:26 AtomicAdd ( temp uint) 0:26 'gs_ua' ( shared uint) 0:26 'gs_ub' ( shared uint) 0:27 move second child to first child ( temp uint) 0:27 'out_u1' ( temp uint) -0:27 AtomicAnd ( temp uint) +0:27 AtomicAdd ( temp uint) 0:27 'gs_ua' ( shared uint) 0:27 'gs_ub' ( shared uint) -0:28 move second child to first child ( temp uint) -0:28 'out_u1' ( temp uint) -0:28 AtomicCompSwap ( temp uint) -0:28 'gs_ua' ( shared uint) -0:28 'gs_ub' ( shared uint) -0:28 'gs_uc' ( shared uint) +0:28 AtomicAnd ( temp uint) +0:28 'gs_ua' ( shared uint) +0:28 'gs_ub' ( shared uint) 0:29 move second child to first child ( temp uint) 0:29 'out_u1' ( temp uint) -0:29 AtomicExchange ( temp uint) +0:29 AtomicAnd ( temp uint) 0:29 'gs_ua' ( shared uint) 0:29 'gs_ub' ( shared uint) -0:30 AtomicMax ( temp uint) -0:30 'gs_ua' ( shared uint) -0:30 'gs_ub' ( shared uint) +0:30 move second child to first child ( temp uint) +0:30 'out_u1' ( temp uint) +0:30 AtomicCompSwap ( temp uint) +0:30 'gs_ua' ( shared uint) +0:30 'gs_ub' ( shared uint) +0:30 'gs_uc' ( shared uint) 0:31 move second child to first child ( temp uint) 0:31 'out_u1' ( temp uint) -0:31 AtomicMax ( temp uint) +0:31 AtomicExchange ( temp uint) 0:31 'gs_ua' ( shared uint) 0:31 'gs_ub' ( shared uint) -0:32 AtomicMin ( temp uint) +0:32 AtomicMax ( temp uint) 0:32 'gs_ua' ( shared uint) 0:32 'gs_ub' ( shared uint) 0:33 move second child to first child ( temp uint) 0:33 'out_u1' ( temp uint) -0:33 AtomicMin ( temp uint) +0:33 AtomicMax ( temp uint) 0:33 'gs_ua' ( shared uint) 0:33 'gs_ub' ( shared uint) -0:34 AtomicOr ( temp uint) +0:34 AtomicMin ( temp uint) 0:34 'gs_ua' ( shared uint) 0:34 'gs_ub' ( shared uint) 0:35 move second child to first child ( temp uint) 0:35 'out_u1' ( temp uint) -0:35 AtomicOr ( temp uint) +0:35 AtomicMin ( temp uint) 0:35 'gs_ua' ( shared uint) 0:35 'gs_ub' ( shared uint) -0:36 AtomicXor ( temp uint) +0:36 AtomicOr ( temp uint) 0:36 'gs_ua' ( shared uint) 0:36 'gs_ub' ( shared uint) 0:37 move second child to first child ( temp uint) 0:37 'out_u1' ( temp uint) -0:37 AtomicXor ( temp uint) +0:37 AtomicOr ( temp uint) 0:37 'gs_ua' ( shared uint) 0:37 'gs_ub' ( shared uint) -0:41 Branch: Return with expression -0:41 Constant: -0:41 0.000000 -0:45 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) -0:45 Function Parameters: -0:45 'inF0' ( in 1-component vector of float) -0:45 'inF1' ( in 1-component vector of float) -0:45 'inF2' ( in 1-component vector of float) +0:38 AtomicXor ( temp uint) +0:38 'gs_ua' ( shared uint) +0:38 'gs_ub' ( shared uint) +0:39 move second child to first child ( temp uint) +0:39 'out_u1' ( temp uint) +0:39 AtomicXor ( temp uint) +0:39 'gs_ua' ( shared uint) +0:39 'gs_ub' ( shared uint) +0:41 AtomicAdd ( temp float) +0:41 'gs_fa' ( shared float) +0:41 'gs_fb' ( shared float) +0:45 Branch: Return with expression +0:45 Constant: +0:45 0.000000 +0:49 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) +0:49 Function Parameters: +0:49 'inF0' ( in 1-component vector of float) +0:49 'inF1' ( in 1-component vector of float) +0:49 'inF2' ( in 1-component vector of float) 0:? Sequence -0:47 Branch: Return with expression -0:47 Constant: -0:47 0.000000 -0:51 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) -0:51 Function Parameters: -0:51 'inF0' ( in 2-component vector of float) -0:51 'inF1' ( in 2-component vector of float) -0:51 'inF2' ( in 2-component vector of float) -0:51 'inU0' ( in 2-component vector of uint) -0:51 'inU1' ( in 2-component vector of uint) +0:51 Branch: Return with expression +0:51 Constant: +0:51 0.000000 +0:55 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) +0:55 Function Parameters: +0:55 'inF0' ( in 2-component vector of float) +0:55 'inF1' ( in 2-component vector of float) +0:55 'inF2' ( in 2-component vector of float) +0:55 'inU0' ( in 2-component vector of uint) +0:55 'inU1' ( in 2-component vector of uint) 0:? Sequence -0:55 all ( temp bool) -0:55 Convert float to bool ( temp 2-component vector of bool) -0:55 'inF0' ( in 2-component vector of float) -0:58 AtomicAdd ( temp 2-component vector of uint) -0:58 'gs_ua2' ( shared 2-component vector of uint) -0:58 'gs_ub2' ( shared 2-component vector of uint) -0:59 move second child to first child ( temp 2-component vector of uint) -0:59 'out_u2' ( temp 2-component vector of uint) -0:59 AtomicAdd ( temp 2-component vector of uint) -0:59 'gs_ua2' ( shared 2-component vector of uint) -0:59 'gs_ub2' ( shared 2-component vector of uint) -0:60 AtomicAnd ( temp 2-component vector of uint) -0:60 'gs_ua2' ( shared 2-component vector of uint) -0:60 'gs_ub2' ( shared 2-component vector of uint) -0:61 move second child to first child ( temp 2-component vector of uint) -0:61 'out_u2' ( temp 2-component vector of uint) -0:61 AtomicAnd ( temp 2-component vector of uint) -0:61 'gs_ua2' ( shared 2-component vector of uint) -0:61 'gs_ub2' ( shared 2-component vector of uint) -0:62 move second child to first child ( temp 2-component vector of uint) -0:62 'out_u2' ( temp 2-component vector of uint) -0:62 AtomicCompSwap ( temp 2-component vector of uint) -0:62 'gs_ua2' ( shared 2-component vector of uint) -0:62 'gs_ub2' ( shared 2-component vector of uint) -0:62 'gs_uc2' ( shared 2-component vector of uint) +0:59 all ( temp bool) +0:59 Convert float to bool ( temp 2-component vector of bool) +0:59 'inF0' ( in 2-component vector of float) +0:62 AtomicAdd ( temp 2-component vector of uint) +0:62 'gs_ua2' ( shared 2-component vector of uint) +0:62 'gs_ub2' ( shared 2-component vector of uint) 0:63 move second child to first child ( temp 2-component vector of uint) 0:63 'out_u2' ( temp 2-component vector of uint) -0:63 AtomicExchange ( temp 2-component vector of uint) +0:63 AtomicAdd ( temp 2-component vector of uint) 0:63 'gs_ua2' ( shared 2-component vector of uint) 0:63 'gs_ub2' ( shared 2-component vector of uint) -0:64 AtomicMax ( temp 2-component vector of uint) +0:64 AtomicAnd ( temp 2-component vector of uint) 0:64 'gs_ua2' ( shared 2-component vector of uint) 0:64 'gs_ub2' ( shared 2-component vector of uint) 0:65 move second child to first child ( temp 2-component vector of uint) 0:65 'out_u2' ( temp 2-component vector of uint) -0:65 AtomicMax ( temp 2-component vector of uint) +0:65 AtomicAnd ( temp 2-component vector of uint) 0:65 'gs_ua2' ( shared 2-component vector of uint) 0:65 'gs_ub2' ( shared 2-component vector of uint) -0:66 AtomicMin ( temp 2-component vector of uint) -0:66 'gs_ua2' ( shared 2-component vector of uint) -0:66 'gs_ub2' ( shared 2-component vector of uint) +0:66 move second child to first child ( temp 2-component vector of uint) +0:66 'out_u2' ( temp 2-component vector of uint) +0:66 AtomicCompSwap ( temp 2-component vector of uint) +0:66 'gs_ua2' ( shared 2-component vector of uint) +0:66 'gs_ub2' ( shared 2-component vector of uint) +0:66 'gs_uc2' ( shared 2-component vector of uint) 0:67 move second child to first child ( temp 2-component vector of uint) 0:67 'out_u2' ( temp 2-component vector of uint) -0:67 AtomicMin ( temp 2-component vector of uint) +0:67 AtomicExchange ( temp 2-component vector of uint) 0:67 'gs_ua2' ( shared 2-component vector of uint) 0:67 'gs_ub2' ( shared 2-component vector of uint) -0:68 AtomicOr ( temp 2-component vector of uint) +0:68 AtomicMax ( temp 2-component vector of uint) 0:68 'gs_ua2' ( shared 2-component vector of uint) 0:68 'gs_ub2' ( shared 2-component vector of uint) 0:69 move second child to first child ( temp 2-component vector of uint) 0:69 'out_u2' ( temp 2-component vector of uint) -0:69 AtomicOr ( temp 2-component vector of uint) +0:69 AtomicMax ( temp 2-component vector of uint) 0:69 'gs_ua2' ( shared 2-component vector of uint) 0:69 'gs_ub2' ( shared 2-component vector of uint) -0:70 AtomicXor ( temp 2-component vector of uint) +0:70 AtomicMin ( temp 2-component vector of uint) 0:70 'gs_ua2' ( shared 2-component vector of uint) 0:70 'gs_ub2' ( shared 2-component vector of uint) 0:71 move second child to first child ( temp 2-component vector of uint) 0:71 'out_u2' ( temp 2-component vector of uint) -0:71 AtomicXor ( temp 2-component vector of uint) +0:71 AtomicMin ( temp 2-component vector of uint) 0:71 'gs_ua2' ( shared 2-component vector of uint) 0:71 'gs_ub2' ( shared 2-component vector of uint) -0:74 Branch: Return with expression -0:74 Constant: -0:74 1.000000 -0:74 2.000000 -0:78 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) -0:78 Function Parameters: -0:78 'inF0' ( in 3-component vector of float) -0:78 'inF1' ( in 3-component vector of float) -0:78 'inF2' ( in 3-component vector of float) -0:78 'inU0' ( in 3-component vector of uint) -0:78 'inU1' ( in 3-component vector of uint) +0:72 AtomicOr ( temp 2-component vector of uint) +0:72 'gs_ua2' ( shared 2-component vector of uint) +0:72 'gs_ub2' ( shared 2-component vector of uint) +0:73 move second child to first child ( temp 2-component vector of uint) +0:73 'out_u2' ( temp 2-component vector of uint) +0:73 AtomicOr ( temp 2-component vector of uint) +0:73 'gs_ua2' ( shared 2-component vector of uint) +0:73 'gs_ub2' ( shared 2-component vector of uint) +0:74 AtomicXor ( temp 2-component vector of uint) +0:74 'gs_ua2' ( shared 2-component vector of uint) +0:74 'gs_ub2' ( shared 2-component vector of uint) +0:75 move second child to first child ( temp 2-component vector of uint) +0:75 'out_u2' ( temp 2-component vector of uint) +0:75 AtomicXor ( temp 2-component vector of uint) +0:75 'gs_ua2' ( shared 2-component vector of uint) +0:75 'gs_ub2' ( shared 2-component vector of uint) +0:78 Branch: Return with expression +0:78 Constant: +0:78 1.000000 +0:78 2.000000 +0:82 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) +0:82 Function Parameters: +0:82 'inF0' ( in 3-component vector of float) +0:82 'inF1' ( in 3-component vector of float) +0:82 'inF2' ( in 3-component vector of float) +0:82 'inU0' ( in 3-component vector of uint) +0:82 'inU1' ( in 3-component vector of uint) 0:? Sequence -0:82 all ( temp bool) -0:82 Convert float to bool ( temp 3-component vector of bool) -0:82 'inF0' ( in 3-component vector of float) -0:85 AtomicAdd ( temp 3-component vector of uint) -0:85 'gs_ua3' ( shared 3-component vector of uint) -0:85 'gs_ub3' ( shared 3-component vector of uint) -0:86 move second child to first child ( temp 3-component vector of uint) -0:86 'out_u3' ( temp 3-component vector of uint) -0:86 AtomicAdd ( temp 3-component vector of uint) -0:86 'gs_ua3' ( shared 3-component vector of uint) -0:86 'gs_ub3' ( shared 3-component vector of uint) -0:87 AtomicAnd ( temp 3-component vector of uint) -0:87 'gs_ua3' ( shared 3-component vector of uint) -0:87 'gs_ub3' ( shared 3-component vector of uint) -0:88 move second child to first child ( temp 3-component vector of uint) -0:88 'out_u3' ( temp 3-component vector of uint) -0:88 AtomicAnd ( temp 3-component vector of uint) -0:88 'gs_ua3' ( shared 3-component vector of uint) -0:88 'gs_ub3' ( shared 3-component vector of uint) -0:89 move second child to first child ( temp 3-component vector of uint) -0:89 'out_u3' ( temp 3-component vector of uint) -0:89 AtomicCompSwap ( temp 3-component vector of uint) -0:89 'gs_ua3' ( shared 3-component vector of uint) -0:89 'gs_ub3' ( shared 3-component vector of uint) -0:89 'gs_uc3' ( shared 3-component vector of uint) +0:86 all ( temp bool) +0:86 Convert float to bool ( temp 3-component vector of bool) +0:86 'inF0' ( in 3-component vector of float) +0:89 AtomicAdd ( temp 3-component vector of uint) +0:89 'gs_ua3' ( shared 3-component vector of uint) +0:89 'gs_ub3' ( shared 3-component vector of uint) 0:90 move second child to first child ( temp 3-component vector of uint) 0:90 'out_u3' ( temp 3-component vector of uint) -0:90 AtomicExchange ( temp 3-component vector of uint) +0:90 AtomicAdd ( temp 3-component vector of uint) 0:90 'gs_ua3' ( shared 3-component vector of uint) 0:90 'gs_ub3' ( shared 3-component vector of uint) -0:91 AtomicMax ( temp 3-component vector of uint) +0:91 AtomicAnd ( temp 3-component vector of uint) 0:91 'gs_ua3' ( shared 3-component vector of uint) 0:91 'gs_ub3' ( shared 3-component vector of uint) 0:92 move second child to first child ( temp 3-component vector of uint) 0:92 'out_u3' ( temp 3-component vector of uint) -0:92 AtomicMax ( temp 3-component vector of uint) +0:92 AtomicAnd ( temp 3-component vector of uint) 0:92 'gs_ua3' ( shared 3-component vector of uint) 0:92 'gs_ub3' ( shared 3-component vector of uint) -0:93 AtomicMin ( temp 3-component vector of uint) -0:93 'gs_ua3' ( shared 3-component vector of uint) -0:93 'gs_ub3' ( shared 3-component vector of uint) +0:93 move second child to first child ( temp 3-component vector of uint) +0:93 'out_u3' ( temp 3-component vector of uint) +0:93 AtomicCompSwap ( temp 3-component vector of uint) +0:93 'gs_ua3' ( shared 3-component vector of uint) +0:93 'gs_ub3' ( shared 3-component vector of uint) +0:93 'gs_uc3' ( shared 3-component vector of uint) 0:94 move second child to first child ( temp 3-component vector of uint) 0:94 'out_u3' ( temp 3-component vector of uint) -0:94 AtomicMin ( temp 3-component vector of uint) +0:94 AtomicExchange ( temp 3-component vector of uint) 0:94 'gs_ua3' ( shared 3-component vector of uint) 0:94 'gs_ub3' ( shared 3-component vector of uint) -0:95 AtomicOr ( temp 3-component vector of uint) +0:95 AtomicMax ( temp 3-component vector of uint) 0:95 'gs_ua3' ( shared 3-component vector of uint) 0:95 'gs_ub3' ( shared 3-component vector of uint) 0:96 move second child to first child ( temp 3-component vector of uint) 0:96 'out_u3' ( temp 3-component vector of uint) -0:96 AtomicOr ( temp 3-component vector of uint) +0:96 AtomicMax ( temp 3-component vector of uint) 0:96 'gs_ua3' ( shared 3-component vector of uint) 0:96 'gs_ub3' ( shared 3-component vector of uint) -0:97 AtomicXor ( temp 3-component vector of uint) +0:97 AtomicMin ( temp 3-component vector of uint) 0:97 'gs_ua3' ( shared 3-component vector of uint) 0:97 'gs_ub3' ( shared 3-component vector of uint) 0:98 move second child to first child ( temp 3-component vector of uint) 0:98 'out_u3' ( temp 3-component vector of uint) -0:98 AtomicXor ( temp 3-component vector of uint) +0:98 AtomicMin ( temp 3-component vector of uint) 0:98 'gs_ua3' ( shared 3-component vector of uint) 0:98 'gs_ub3' ( shared 3-component vector of uint) -0:101 Branch: Return with expression -0:101 Constant: -0:101 1.000000 -0:101 2.000000 -0:101 3.000000 -0:105 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) -0:105 Function Parameters: -0:105 'inF0' ( in 4-component vector of float) -0:105 'inF1' ( in 4-component vector of float) -0:105 'inF2' ( in 4-component vector of float) -0:105 'inU0' ( in 4-component vector of uint) -0:105 'inU1' ( in 4-component vector of uint) +0:99 AtomicOr ( temp 3-component vector of uint) +0:99 'gs_ua3' ( shared 3-component vector of uint) +0:99 'gs_ub3' ( shared 3-component vector of uint) +0:100 move second child to first child ( temp 3-component vector of uint) +0:100 'out_u3' ( temp 3-component vector of uint) +0:100 AtomicOr ( temp 3-component vector of uint) +0:100 'gs_ua3' ( shared 3-component vector of uint) +0:100 'gs_ub3' ( shared 3-component vector of uint) +0:101 AtomicXor ( temp 3-component vector of uint) +0:101 'gs_ua3' ( shared 3-component vector of uint) +0:101 'gs_ub3' ( shared 3-component vector of uint) +0:102 move second child to first child ( temp 3-component vector of uint) +0:102 'out_u3' ( temp 3-component vector of uint) +0:102 AtomicXor ( temp 3-component vector of uint) +0:102 'gs_ua3' ( shared 3-component vector of uint) +0:102 'gs_ub3' ( shared 3-component vector of uint) +0:105 Branch: Return with expression +0:105 Constant: +0:105 1.000000 +0:105 2.000000 +0:105 3.000000 +0:109 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) +0:109 Function Parameters: +0:109 'inF0' ( in 4-component vector of float) +0:109 'inF1' ( in 4-component vector of float) +0:109 'inF2' ( in 4-component vector of float) +0:109 'inU0' ( in 4-component vector of uint) +0:109 'inU1' ( in 4-component vector of uint) 0:? Sequence -0:109 all ( temp bool) -0:109 Convert float to bool ( temp 4-component vector of bool) -0:109 'inF0' ( in 4-component vector of float) -0:112 AtomicAdd ( temp 4-component vector of uint) -0:112 'gs_ua4' ( shared 4-component vector of uint) -0:112 'gs_ub4' ( shared 4-component vector of uint) -0:113 move second child to first child ( temp 4-component vector of uint) -0:113 'out_u4' ( temp 4-component vector of uint) -0:113 AtomicAdd ( temp 4-component vector of uint) -0:113 'gs_ua4' ( shared 4-component vector of uint) -0:113 'gs_ub4' ( shared 4-component vector of uint) -0:114 AtomicAnd ( temp 4-component vector of uint) -0:114 'gs_ua4' ( shared 4-component vector of uint) -0:114 'gs_ub4' ( shared 4-component vector of uint) -0:115 move second child to first child ( temp 4-component vector of uint) -0:115 'out_u4' ( temp 4-component vector of uint) -0:115 AtomicAnd ( temp 4-component vector of uint) -0:115 'gs_ua4' ( shared 4-component vector of uint) -0:115 'gs_ub4' ( shared 4-component vector of uint) -0:116 move second child to first child ( temp 4-component vector of uint) -0:116 'out_u4' ( temp 4-component vector of uint) -0:116 AtomicCompSwap ( temp 4-component vector of uint) -0:116 'gs_ua4' ( shared 4-component vector of uint) -0:116 'gs_ub4' ( shared 4-component vector of uint) -0:116 'gs_uc4' ( shared 4-component vector of uint) +0:113 all ( temp bool) +0:113 Convert float to bool ( temp 4-component vector of bool) +0:113 'inF0' ( in 4-component vector of float) +0:116 AtomicAdd ( temp 4-component vector of uint) +0:116 'gs_ua4' ( shared 4-component vector of uint) +0:116 'gs_ub4' ( shared 4-component vector of uint) 0:117 move second child to first child ( temp 4-component vector of uint) 0:117 'out_u4' ( temp 4-component vector of uint) -0:117 AtomicExchange ( temp 4-component vector of uint) +0:117 AtomicAdd ( temp 4-component vector of uint) 0:117 'gs_ua4' ( shared 4-component vector of uint) 0:117 'gs_ub4' ( shared 4-component vector of uint) -0:118 AtomicMax ( temp 4-component vector of uint) +0:118 AtomicAnd ( temp 4-component vector of uint) 0:118 'gs_ua4' ( shared 4-component vector of uint) 0:118 'gs_ub4' ( shared 4-component vector of uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'out_u4' ( temp 4-component vector of uint) -0:119 AtomicMax ( temp 4-component vector of uint) +0:119 AtomicAnd ( temp 4-component vector of uint) 0:119 'gs_ua4' ( shared 4-component vector of uint) 0:119 'gs_ub4' ( shared 4-component vector of uint) -0:120 AtomicMin ( temp 4-component vector of uint) -0:120 'gs_ua4' ( shared 4-component vector of uint) -0:120 'gs_ub4' ( shared 4-component vector of uint) +0:120 move second child to first child ( temp 4-component vector of uint) +0:120 'out_u4' ( temp 4-component vector of uint) +0:120 AtomicCompSwap ( temp 4-component vector of uint) +0:120 'gs_ua4' ( shared 4-component vector of uint) +0:120 'gs_ub4' ( shared 4-component vector of uint) +0:120 'gs_uc4' ( shared 4-component vector of uint) 0:121 move second child to first child ( temp 4-component vector of uint) 0:121 'out_u4' ( temp 4-component vector of uint) -0:121 AtomicMin ( temp 4-component vector of uint) +0:121 AtomicExchange ( temp 4-component vector of uint) 0:121 'gs_ua4' ( shared 4-component vector of uint) 0:121 'gs_ub4' ( shared 4-component vector of uint) -0:122 AtomicOr ( temp 4-component vector of uint) +0:122 AtomicMax ( temp 4-component vector of uint) 0:122 'gs_ua4' ( shared 4-component vector of uint) 0:122 'gs_ub4' ( shared 4-component vector of uint) 0:123 move second child to first child ( temp 4-component vector of uint) 0:123 'out_u4' ( temp 4-component vector of uint) -0:123 AtomicOr ( temp 4-component vector of uint) +0:123 AtomicMax ( temp 4-component vector of uint) 0:123 'gs_ua4' ( shared 4-component vector of uint) 0:123 'gs_ub4' ( shared 4-component vector of uint) -0:124 AtomicXor ( temp 4-component vector of uint) +0:124 AtomicMin ( temp 4-component vector of uint) 0:124 'gs_ua4' ( shared 4-component vector of uint) 0:124 'gs_ub4' ( shared 4-component vector of uint) 0:125 move second child to first child ( temp 4-component vector of uint) 0:125 'out_u4' ( temp 4-component vector of uint) -0:125 AtomicXor ( temp 4-component vector of uint) +0:125 AtomicMin ( temp 4-component vector of uint) 0:125 'gs_ua4' ( shared 4-component vector of uint) 0:125 'gs_ub4' ( shared 4-component vector of uint) -0:128 Branch: Return with expression -0:128 Constant: -0:128 1.000000 -0:128 2.000000 -0:128 3.000000 -0:128 4.000000 -0:105 Function Definition: ComputeShaderFunction( ( temp void) -0:105 Function Parameters: +0:126 AtomicOr ( temp 4-component vector of uint) +0:126 'gs_ua4' ( shared 4-component vector of uint) +0:126 'gs_ub4' ( shared 4-component vector of uint) +0:127 move second child to first child ( temp 4-component vector of uint) +0:127 'out_u4' ( temp 4-component vector of uint) +0:127 AtomicOr ( temp 4-component vector of uint) +0:127 'gs_ua4' ( shared 4-component vector of uint) +0:127 'gs_ub4' ( shared 4-component vector of uint) +0:128 AtomicXor ( temp 4-component vector of uint) +0:128 'gs_ua4' ( shared 4-component vector of uint) +0:128 'gs_ub4' ( shared 4-component vector of uint) +0:129 move second child to first child ( temp 4-component vector of uint) +0:129 'out_u4' ( temp 4-component vector of uint) +0:129 AtomicXor ( temp 4-component vector of uint) +0:129 'gs_ua4' ( shared 4-component vector of uint) +0:129 'gs_ub4' ( shared 4-component vector of uint) +0:132 Branch: Return with expression +0:132 Constant: +0:132 1.000000 +0:132 2.000000 +0:132 3.000000 +0:132 4.000000 +0:109 Function Definition: ComputeShaderFunction( ( temp void) +0:109 Function Parameters: 0:? Sequence -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) -0:105 move second child to first child ( temp 4-component vector of uint) +0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU0' ( temp 4-component vector of uint) 0:? 'inU0' (layout( location=3) in 4-component vector of uint) -0:105 move second child to first child ( temp 4-component vector of uint) +0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU1' ( temp 4-component vector of uint) 0:? 'inU1' (layout( location=4) in 4-component vector of uint) -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:105 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) +0:109 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) @@ -348,6 +351,8 @@ local_size = (1, 1, 1) 0:? 'gs_ua4' ( shared 4-component vector of uint) 0:? 'gs_ub4' ( shared 4-component vector of uint) 0:? 'gs_uc4' ( shared 4-component vector of uint) +0:? 'gs_fa' ( shared float) +0:? 'gs_fb' ( shared float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) @@ -362,334 +367,337 @@ Linked compute stage: Shader version: 500 local_size = (1, 1, 1) 0:? Sequence -0:17 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) -0:17 Function Parameters: -0:17 'inF0' ( in float) -0:17 'inF1' ( in float) -0:17 'inF2' ( in float) -0:17 'inU0' ( in uint) -0:17 'inU1' ( in uint) +0:19 Function Definition: ComputeShaderFunctionS(f1;f1;f1;u1;u1; ( temp float) +0:19 Function Parameters: +0:19 'inF0' ( in float) +0:19 'inF1' ( in float) +0:19 'inF2' ( in float) +0:19 'inU0' ( in uint) +0:19 'inU1' ( in uint) 0:? Sequence -0:21 all ( temp bool) -0:21 Convert float to bool ( temp bool) -0:21 'inF0' ( in float) -0:24 AtomicAdd ( temp uint) -0:24 'gs_ua' ( shared uint) -0:24 'gs_ub' ( shared uint) -0:25 move second child to first child ( temp uint) -0:25 'out_u1' ( temp uint) -0:25 AtomicAdd ( temp uint) -0:25 'gs_ua' ( shared uint) -0:25 'gs_ub' ( shared uint) -0:26 AtomicAnd ( temp uint) +0:23 all ( temp bool) +0:23 Convert float to bool ( temp bool) +0:23 'inF0' ( in float) +0:26 AtomicAdd ( temp uint) 0:26 'gs_ua' ( shared uint) 0:26 'gs_ub' ( shared uint) 0:27 move second child to first child ( temp uint) 0:27 'out_u1' ( temp uint) -0:27 AtomicAnd ( temp uint) +0:27 AtomicAdd ( temp uint) 0:27 'gs_ua' ( shared uint) 0:27 'gs_ub' ( shared uint) -0:28 move second child to first child ( temp uint) -0:28 'out_u1' ( temp uint) -0:28 AtomicCompSwap ( temp uint) -0:28 'gs_ua' ( shared uint) -0:28 'gs_ub' ( shared uint) -0:28 'gs_uc' ( shared uint) +0:28 AtomicAnd ( temp uint) +0:28 'gs_ua' ( shared uint) +0:28 'gs_ub' ( shared uint) 0:29 move second child to first child ( temp uint) 0:29 'out_u1' ( temp uint) -0:29 AtomicExchange ( temp uint) +0:29 AtomicAnd ( temp uint) 0:29 'gs_ua' ( shared uint) 0:29 'gs_ub' ( shared uint) -0:30 AtomicMax ( temp uint) -0:30 'gs_ua' ( shared uint) -0:30 'gs_ub' ( shared uint) +0:30 move second child to first child ( temp uint) +0:30 'out_u1' ( temp uint) +0:30 AtomicCompSwap ( temp uint) +0:30 'gs_ua' ( shared uint) +0:30 'gs_ub' ( shared uint) +0:30 'gs_uc' ( shared uint) 0:31 move second child to first child ( temp uint) 0:31 'out_u1' ( temp uint) -0:31 AtomicMax ( temp uint) +0:31 AtomicExchange ( temp uint) 0:31 'gs_ua' ( shared uint) 0:31 'gs_ub' ( shared uint) -0:32 AtomicMin ( temp uint) +0:32 AtomicMax ( temp uint) 0:32 'gs_ua' ( shared uint) 0:32 'gs_ub' ( shared uint) 0:33 move second child to first child ( temp uint) 0:33 'out_u1' ( temp uint) -0:33 AtomicMin ( temp uint) +0:33 AtomicMax ( temp uint) 0:33 'gs_ua' ( shared uint) 0:33 'gs_ub' ( shared uint) -0:34 AtomicOr ( temp uint) +0:34 AtomicMin ( temp uint) 0:34 'gs_ua' ( shared uint) 0:34 'gs_ub' ( shared uint) 0:35 move second child to first child ( temp uint) 0:35 'out_u1' ( temp uint) -0:35 AtomicOr ( temp uint) +0:35 AtomicMin ( temp uint) 0:35 'gs_ua' ( shared uint) 0:35 'gs_ub' ( shared uint) -0:36 AtomicXor ( temp uint) +0:36 AtomicOr ( temp uint) 0:36 'gs_ua' ( shared uint) 0:36 'gs_ub' ( shared uint) 0:37 move second child to first child ( temp uint) 0:37 'out_u1' ( temp uint) -0:37 AtomicXor ( temp uint) +0:37 AtomicOr ( temp uint) 0:37 'gs_ua' ( shared uint) 0:37 'gs_ub' ( shared uint) -0:41 Branch: Return with expression -0:41 Constant: -0:41 0.000000 -0:45 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) -0:45 Function Parameters: -0:45 'inF0' ( in 1-component vector of float) -0:45 'inF1' ( in 1-component vector of float) -0:45 'inF2' ( in 1-component vector of float) +0:38 AtomicXor ( temp uint) +0:38 'gs_ua' ( shared uint) +0:38 'gs_ub' ( shared uint) +0:39 move second child to first child ( temp uint) +0:39 'out_u1' ( temp uint) +0:39 AtomicXor ( temp uint) +0:39 'gs_ua' ( shared uint) +0:39 'gs_ub' ( shared uint) +0:41 AtomicAdd ( temp float) +0:41 'gs_fa' ( shared float) +0:41 'gs_fb' ( shared float) +0:45 Branch: Return with expression +0:45 Constant: +0:45 0.000000 +0:49 Function Definition: ComputeShaderFunction1(vf1;vf1;vf1; ( temp 1-component vector of float) +0:49 Function Parameters: +0:49 'inF0' ( in 1-component vector of float) +0:49 'inF1' ( in 1-component vector of float) +0:49 'inF2' ( in 1-component vector of float) 0:? Sequence -0:47 Branch: Return with expression -0:47 Constant: -0:47 0.000000 -0:51 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) -0:51 Function Parameters: -0:51 'inF0' ( in 2-component vector of float) -0:51 'inF1' ( in 2-component vector of float) -0:51 'inF2' ( in 2-component vector of float) -0:51 'inU0' ( in 2-component vector of uint) -0:51 'inU1' ( in 2-component vector of uint) +0:51 Branch: Return with expression +0:51 Constant: +0:51 0.000000 +0:55 Function Definition: ComputeShaderFunction2(vf2;vf2;vf2;vu2;vu2; ( temp 2-component vector of float) +0:55 Function Parameters: +0:55 'inF0' ( in 2-component vector of float) +0:55 'inF1' ( in 2-component vector of float) +0:55 'inF2' ( in 2-component vector of float) +0:55 'inU0' ( in 2-component vector of uint) +0:55 'inU1' ( in 2-component vector of uint) 0:? Sequence -0:55 all ( temp bool) -0:55 Convert float to bool ( temp 2-component vector of bool) -0:55 'inF0' ( in 2-component vector of float) -0:58 AtomicAdd ( temp 2-component vector of uint) -0:58 'gs_ua2' ( shared 2-component vector of uint) -0:58 'gs_ub2' ( shared 2-component vector of uint) -0:59 move second child to first child ( temp 2-component vector of uint) -0:59 'out_u2' ( temp 2-component vector of uint) -0:59 AtomicAdd ( temp 2-component vector of uint) -0:59 'gs_ua2' ( shared 2-component vector of uint) -0:59 'gs_ub2' ( shared 2-component vector of uint) -0:60 AtomicAnd ( temp 2-component vector of uint) -0:60 'gs_ua2' ( shared 2-component vector of uint) -0:60 'gs_ub2' ( shared 2-component vector of uint) -0:61 move second child to first child ( temp 2-component vector of uint) -0:61 'out_u2' ( temp 2-component vector of uint) -0:61 AtomicAnd ( temp 2-component vector of uint) -0:61 'gs_ua2' ( shared 2-component vector of uint) -0:61 'gs_ub2' ( shared 2-component vector of uint) -0:62 move second child to first child ( temp 2-component vector of uint) -0:62 'out_u2' ( temp 2-component vector of uint) -0:62 AtomicCompSwap ( temp 2-component vector of uint) -0:62 'gs_ua2' ( shared 2-component vector of uint) -0:62 'gs_ub2' ( shared 2-component vector of uint) -0:62 'gs_uc2' ( shared 2-component vector of uint) +0:59 all ( temp bool) +0:59 Convert float to bool ( temp 2-component vector of bool) +0:59 'inF0' ( in 2-component vector of float) +0:62 AtomicAdd ( temp 2-component vector of uint) +0:62 'gs_ua2' ( shared 2-component vector of uint) +0:62 'gs_ub2' ( shared 2-component vector of uint) 0:63 move second child to first child ( temp 2-component vector of uint) 0:63 'out_u2' ( temp 2-component vector of uint) -0:63 AtomicExchange ( temp 2-component vector of uint) +0:63 AtomicAdd ( temp 2-component vector of uint) 0:63 'gs_ua2' ( shared 2-component vector of uint) 0:63 'gs_ub2' ( shared 2-component vector of uint) -0:64 AtomicMax ( temp 2-component vector of uint) +0:64 AtomicAnd ( temp 2-component vector of uint) 0:64 'gs_ua2' ( shared 2-component vector of uint) 0:64 'gs_ub2' ( shared 2-component vector of uint) 0:65 move second child to first child ( temp 2-component vector of uint) 0:65 'out_u2' ( temp 2-component vector of uint) -0:65 AtomicMax ( temp 2-component vector of uint) +0:65 AtomicAnd ( temp 2-component vector of uint) 0:65 'gs_ua2' ( shared 2-component vector of uint) 0:65 'gs_ub2' ( shared 2-component vector of uint) -0:66 AtomicMin ( temp 2-component vector of uint) -0:66 'gs_ua2' ( shared 2-component vector of uint) -0:66 'gs_ub2' ( shared 2-component vector of uint) +0:66 move second child to first child ( temp 2-component vector of uint) +0:66 'out_u2' ( temp 2-component vector of uint) +0:66 AtomicCompSwap ( temp 2-component vector of uint) +0:66 'gs_ua2' ( shared 2-component vector of uint) +0:66 'gs_ub2' ( shared 2-component vector of uint) +0:66 'gs_uc2' ( shared 2-component vector of uint) 0:67 move second child to first child ( temp 2-component vector of uint) 0:67 'out_u2' ( temp 2-component vector of uint) -0:67 AtomicMin ( temp 2-component vector of uint) +0:67 AtomicExchange ( temp 2-component vector of uint) 0:67 'gs_ua2' ( shared 2-component vector of uint) 0:67 'gs_ub2' ( shared 2-component vector of uint) -0:68 AtomicOr ( temp 2-component vector of uint) +0:68 AtomicMax ( temp 2-component vector of uint) 0:68 'gs_ua2' ( shared 2-component vector of uint) 0:68 'gs_ub2' ( shared 2-component vector of uint) 0:69 move second child to first child ( temp 2-component vector of uint) 0:69 'out_u2' ( temp 2-component vector of uint) -0:69 AtomicOr ( temp 2-component vector of uint) +0:69 AtomicMax ( temp 2-component vector of uint) 0:69 'gs_ua2' ( shared 2-component vector of uint) 0:69 'gs_ub2' ( shared 2-component vector of uint) -0:70 AtomicXor ( temp 2-component vector of uint) +0:70 AtomicMin ( temp 2-component vector of uint) 0:70 'gs_ua2' ( shared 2-component vector of uint) 0:70 'gs_ub2' ( shared 2-component vector of uint) 0:71 move second child to first child ( temp 2-component vector of uint) 0:71 'out_u2' ( temp 2-component vector of uint) -0:71 AtomicXor ( temp 2-component vector of uint) +0:71 AtomicMin ( temp 2-component vector of uint) 0:71 'gs_ua2' ( shared 2-component vector of uint) 0:71 'gs_ub2' ( shared 2-component vector of uint) -0:74 Branch: Return with expression -0:74 Constant: -0:74 1.000000 -0:74 2.000000 -0:78 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) -0:78 Function Parameters: -0:78 'inF0' ( in 3-component vector of float) -0:78 'inF1' ( in 3-component vector of float) -0:78 'inF2' ( in 3-component vector of float) -0:78 'inU0' ( in 3-component vector of uint) -0:78 'inU1' ( in 3-component vector of uint) +0:72 AtomicOr ( temp 2-component vector of uint) +0:72 'gs_ua2' ( shared 2-component vector of uint) +0:72 'gs_ub2' ( shared 2-component vector of uint) +0:73 move second child to first child ( temp 2-component vector of uint) +0:73 'out_u2' ( temp 2-component vector of uint) +0:73 AtomicOr ( temp 2-component vector of uint) +0:73 'gs_ua2' ( shared 2-component vector of uint) +0:73 'gs_ub2' ( shared 2-component vector of uint) +0:74 AtomicXor ( temp 2-component vector of uint) +0:74 'gs_ua2' ( shared 2-component vector of uint) +0:74 'gs_ub2' ( shared 2-component vector of uint) +0:75 move second child to first child ( temp 2-component vector of uint) +0:75 'out_u2' ( temp 2-component vector of uint) +0:75 AtomicXor ( temp 2-component vector of uint) +0:75 'gs_ua2' ( shared 2-component vector of uint) +0:75 'gs_ub2' ( shared 2-component vector of uint) +0:78 Branch: Return with expression +0:78 Constant: +0:78 1.000000 +0:78 2.000000 +0:82 Function Definition: ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3; ( temp 3-component vector of float) +0:82 Function Parameters: +0:82 'inF0' ( in 3-component vector of float) +0:82 'inF1' ( in 3-component vector of float) +0:82 'inF2' ( in 3-component vector of float) +0:82 'inU0' ( in 3-component vector of uint) +0:82 'inU1' ( in 3-component vector of uint) 0:? Sequence -0:82 all ( temp bool) -0:82 Convert float to bool ( temp 3-component vector of bool) -0:82 'inF0' ( in 3-component vector of float) -0:85 AtomicAdd ( temp 3-component vector of uint) -0:85 'gs_ua3' ( shared 3-component vector of uint) -0:85 'gs_ub3' ( shared 3-component vector of uint) -0:86 move second child to first child ( temp 3-component vector of uint) -0:86 'out_u3' ( temp 3-component vector of uint) -0:86 AtomicAdd ( temp 3-component vector of uint) -0:86 'gs_ua3' ( shared 3-component vector of uint) -0:86 'gs_ub3' ( shared 3-component vector of uint) -0:87 AtomicAnd ( temp 3-component vector of uint) -0:87 'gs_ua3' ( shared 3-component vector of uint) -0:87 'gs_ub3' ( shared 3-component vector of uint) -0:88 move second child to first child ( temp 3-component vector of uint) -0:88 'out_u3' ( temp 3-component vector of uint) -0:88 AtomicAnd ( temp 3-component vector of uint) -0:88 'gs_ua3' ( shared 3-component vector of uint) -0:88 'gs_ub3' ( shared 3-component vector of uint) -0:89 move second child to first child ( temp 3-component vector of uint) -0:89 'out_u3' ( temp 3-component vector of uint) -0:89 AtomicCompSwap ( temp 3-component vector of uint) -0:89 'gs_ua3' ( shared 3-component vector of uint) -0:89 'gs_ub3' ( shared 3-component vector of uint) -0:89 'gs_uc3' ( shared 3-component vector of uint) +0:86 all ( temp bool) +0:86 Convert float to bool ( temp 3-component vector of bool) +0:86 'inF0' ( in 3-component vector of float) +0:89 AtomicAdd ( temp 3-component vector of uint) +0:89 'gs_ua3' ( shared 3-component vector of uint) +0:89 'gs_ub3' ( shared 3-component vector of uint) 0:90 move second child to first child ( temp 3-component vector of uint) 0:90 'out_u3' ( temp 3-component vector of uint) -0:90 AtomicExchange ( temp 3-component vector of uint) +0:90 AtomicAdd ( temp 3-component vector of uint) 0:90 'gs_ua3' ( shared 3-component vector of uint) 0:90 'gs_ub3' ( shared 3-component vector of uint) -0:91 AtomicMax ( temp 3-component vector of uint) +0:91 AtomicAnd ( temp 3-component vector of uint) 0:91 'gs_ua3' ( shared 3-component vector of uint) 0:91 'gs_ub3' ( shared 3-component vector of uint) 0:92 move second child to first child ( temp 3-component vector of uint) 0:92 'out_u3' ( temp 3-component vector of uint) -0:92 AtomicMax ( temp 3-component vector of uint) +0:92 AtomicAnd ( temp 3-component vector of uint) 0:92 'gs_ua3' ( shared 3-component vector of uint) 0:92 'gs_ub3' ( shared 3-component vector of uint) -0:93 AtomicMin ( temp 3-component vector of uint) -0:93 'gs_ua3' ( shared 3-component vector of uint) -0:93 'gs_ub3' ( shared 3-component vector of uint) +0:93 move second child to first child ( temp 3-component vector of uint) +0:93 'out_u3' ( temp 3-component vector of uint) +0:93 AtomicCompSwap ( temp 3-component vector of uint) +0:93 'gs_ua3' ( shared 3-component vector of uint) +0:93 'gs_ub3' ( shared 3-component vector of uint) +0:93 'gs_uc3' ( shared 3-component vector of uint) 0:94 move second child to first child ( temp 3-component vector of uint) 0:94 'out_u3' ( temp 3-component vector of uint) -0:94 AtomicMin ( temp 3-component vector of uint) +0:94 AtomicExchange ( temp 3-component vector of uint) 0:94 'gs_ua3' ( shared 3-component vector of uint) 0:94 'gs_ub3' ( shared 3-component vector of uint) -0:95 AtomicOr ( temp 3-component vector of uint) +0:95 AtomicMax ( temp 3-component vector of uint) 0:95 'gs_ua3' ( shared 3-component vector of uint) 0:95 'gs_ub3' ( shared 3-component vector of uint) 0:96 move second child to first child ( temp 3-component vector of uint) 0:96 'out_u3' ( temp 3-component vector of uint) -0:96 AtomicOr ( temp 3-component vector of uint) +0:96 AtomicMax ( temp 3-component vector of uint) 0:96 'gs_ua3' ( shared 3-component vector of uint) 0:96 'gs_ub3' ( shared 3-component vector of uint) -0:97 AtomicXor ( temp 3-component vector of uint) +0:97 AtomicMin ( temp 3-component vector of uint) 0:97 'gs_ua3' ( shared 3-component vector of uint) 0:97 'gs_ub3' ( shared 3-component vector of uint) 0:98 move second child to first child ( temp 3-component vector of uint) 0:98 'out_u3' ( temp 3-component vector of uint) -0:98 AtomicXor ( temp 3-component vector of uint) +0:98 AtomicMin ( temp 3-component vector of uint) 0:98 'gs_ua3' ( shared 3-component vector of uint) 0:98 'gs_ub3' ( shared 3-component vector of uint) -0:101 Branch: Return with expression -0:101 Constant: -0:101 1.000000 -0:101 2.000000 -0:101 3.000000 -0:105 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) -0:105 Function Parameters: -0:105 'inF0' ( in 4-component vector of float) -0:105 'inF1' ( in 4-component vector of float) -0:105 'inF2' ( in 4-component vector of float) -0:105 'inU0' ( in 4-component vector of uint) -0:105 'inU1' ( in 4-component vector of uint) +0:99 AtomicOr ( temp 3-component vector of uint) +0:99 'gs_ua3' ( shared 3-component vector of uint) +0:99 'gs_ub3' ( shared 3-component vector of uint) +0:100 move second child to first child ( temp 3-component vector of uint) +0:100 'out_u3' ( temp 3-component vector of uint) +0:100 AtomicOr ( temp 3-component vector of uint) +0:100 'gs_ua3' ( shared 3-component vector of uint) +0:100 'gs_ub3' ( shared 3-component vector of uint) +0:101 AtomicXor ( temp 3-component vector of uint) +0:101 'gs_ua3' ( shared 3-component vector of uint) +0:101 'gs_ub3' ( shared 3-component vector of uint) +0:102 move second child to first child ( temp 3-component vector of uint) +0:102 'out_u3' ( temp 3-component vector of uint) +0:102 AtomicXor ( temp 3-component vector of uint) +0:102 'gs_ua3' ( shared 3-component vector of uint) +0:102 'gs_ub3' ( shared 3-component vector of uint) +0:105 Branch: Return with expression +0:105 Constant: +0:105 1.000000 +0:105 2.000000 +0:105 3.000000 +0:109 Function Definition: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) +0:109 Function Parameters: +0:109 'inF0' ( in 4-component vector of float) +0:109 'inF1' ( in 4-component vector of float) +0:109 'inF2' ( in 4-component vector of float) +0:109 'inU0' ( in 4-component vector of uint) +0:109 'inU1' ( in 4-component vector of uint) 0:? Sequence -0:109 all ( temp bool) -0:109 Convert float to bool ( temp 4-component vector of bool) -0:109 'inF0' ( in 4-component vector of float) -0:112 AtomicAdd ( temp 4-component vector of uint) -0:112 'gs_ua4' ( shared 4-component vector of uint) -0:112 'gs_ub4' ( shared 4-component vector of uint) -0:113 move second child to first child ( temp 4-component vector of uint) -0:113 'out_u4' ( temp 4-component vector of uint) -0:113 AtomicAdd ( temp 4-component vector of uint) -0:113 'gs_ua4' ( shared 4-component vector of uint) -0:113 'gs_ub4' ( shared 4-component vector of uint) -0:114 AtomicAnd ( temp 4-component vector of uint) -0:114 'gs_ua4' ( shared 4-component vector of uint) -0:114 'gs_ub4' ( shared 4-component vector of uint) -0:115 move second child to first child ( temp 4-component vector of uint) -0:115 'out_u4' ( temp 4-component vector of uint) -0:115 AtomicAnd ( temp 4-component vector of uint) -0:115 'gs_ua4' ( shared 4-component vector of uint) -0:115 'gs_ub4' ( shared 4-component vector of uint) -0:116 move second child to first child ( temp 4-component vector of uint) -0:116 'out_u4' ( temp 4-component vector of uint) -0:116 AtomicCompSwap ( temp 4-component vector of uint) -0:116 'gs_ua4' ( shared 4-component vector of uint) -0:116 'gs_ub4' ( shared 4-component vector of uint) -0:116 'gs_uc4' ( shared 4-component vector of uint) +0:113 all ( temp bool) +0:113 Convert float to bool ( temp 4-component vector of bool) +0:113 'inF0' ( in 4-component vector of float) +0:116 AtomicAdd ( temp 4-component vector of uint) +0:116 'gs_ua4' ( shared 4-component vector of uint) +0:116 'gs_ub4' ( shared 4-component vector of uint) 0:117 move second child to first child ( temp 4-component vector of uint) 0:117 'out_u4' ( temp 4-component vector of uint) -0:117 AtomicExchange ( temp 4-component vector of uint) +0:117 AtomicAdd ( temp 4-component vector of uint) 0:117 'gs_ua4' ( shared 4-component vector of uint) 0:117 'gs_ub4' ( shared 4-component vector of uint) -0:118 AtomicMax ( temp 4-component vector of uint) +0:118 AtomicAnd ( temp 4-component vector of uint) 0:118 'gs_ua4' ( shared 4-component vector of uint) 0:118 'gs_ub4' ( shared 4-component vector of uint) 0:119 move second child to first child ( temp 4-component vector of uint) 0:119 'out_u4' ( temp 4-component vector of uint) -0:119 AtomicMax ( temp 4-component vector of uint) +0:119 AtomicAnd ( temp 4-component vector of uint) 0:119 'gs_ua4' ( shared 4-component vector of uint) 0:119 'gs_ub4' ( shared 4-component vector of uint) -0:120 AtomicMin ( temp 4-component vector of uint) -0:120 'gs_ua4' ( shared 4-component vector of uint) -0:120 'gs_ub4' ( shared 4-component vector of uint) +0:120 move second child to first child ( temp 4-component vector of uint) +0:120 'out_u4' ( temp 4-component vector of uint) +0:120 AtomicCompSwap ( temp 4-component vector of uint) +0:120 'gs_ua4' ( shared 4-component vector of uint) +0:120 'gs_ub4' ( shared 4-component vector of uint) +0:120 'gs_uc4' ( shared 4-component vector of uint) 0:121 move second child to first child ( temp 4-component vector of uint) 0:121 'out_u4' ( temp 4-component vector of uint) -0:121 AtomicMin ( temp 4-component vector of uint) +0:121 AtomicExchange ( temp 4-component vector of uint) 0:121 'gs_ua4' ( shared 4-component vector of uint) 0:121 'gs_ub4' ( shared 4-component vector of uint) -0:122 AtomicOr ( temp 4-component vector of uint) +0:122 AtomicMax ( temp 4-component vector of uint) 0:122 'gs_ua4' ( shared 4-component vector of uint) 0:122 'gs_ub4' ( shared 4-component vector of uint) 0:123 move second child to first child ( temp 4-component vector of uint) 0:123 'out_u4' ( temp 4-component vector of uint) -0:123 AtomicOr ( temp 4-component vector of uint) +0:123 AtomicMax ( temp 4-component vector of uint) 0:123 'gs_ua4' ( shared 4-component vector of uint) 0:123 'gs_ub4' ( shared 4-component vector of uint) -0:124 AtomicXor ( temp 4-component vector of uint) +0:124 AtomicMin ( temp 4-component vector of uint) 0:124 'gs_ua4' ( shared 4-component vector of uint) 0:124 'gs_ub4' ( shared 4-component vector of uint) 0:125 move second child to first child ( temp 4-component vector of uint) 0:125 'out_u4' ( temp 4-component vector of uint) -0:125 AtomicXor ( temp 4-component vector of uint) +0:125 AtomicMin ( temp 4-component vector of uint) 0:125 'gs_ua4' ( shared 4-component vector of uint) 0:125 'gs_ub4' ( shared 4-component vector of uint) -0:128 Branch: Return with expression -0:128 Constant: -0:128 1.000000 -0:128 2.000000 -0:128 3.000000 -0:128 4.000000 -0:105 Function Definition: ComputeShaderFunction( ( temp void) -0:105 Function Parameters: +0:126 AtomicOr ( temp 4-component vector of uint) +0:126 'gs_ua4' ( shared 4-component vector of uint) +0:126 'gs_ub4' ( shared 4-component vector of uint) +0:127 move second child to first child ( temp 4-component vector of uint) +0:127 'out_u4' ( temp 4-component vector of uint) +0:127 AtomicOr ( temp 4-component vector of uint) +0:127 'gs_ua4' ( shared 4-component vector of uint) +0:127 'gs_ub4' ( shared 4-component vector of uint) +0:128 AtomicXor ( temp 4-component vector of uint) +0:128 'gs_ua4' ( shared 4-component vector of uint) +0:128 'gs_ub4' ( shared 4-component vector of uint) +0:129 move second child to first child ( temp 4-component vector of uint) +0:129 'out_u4' ( temp 4-component vector of uint) +0:129 AtomicXor ( temp 4-component vector of uint) +0:129 'gs_ua4' ( shared 4-component vector of uint) +0:129 'gs_ub4' ( shared 4-component vector of uint) +0:132 Branch: Return with expression +0:132 Constant: +0:132 1.000000 +0:132 2.000000 +0:132 3.000000 +0:132 4.000000 +0:109 Function Definition: ComputeShaderFunction( ( temp void) +0:109 Function Parameters: 0:? Sequence -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) 0:? 'inF2' (layout( location=2) in 4-component vector of float) -0:105 move second child to first child ( temp 4-component vector of uint) +0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU0' ( temp 4-component vector of uint) 0:? 'inU0' (layout( location=3) in 4-component vector of uint) -0:105 move second child to first child ( temp 4-component vector of uint) +0:109 move second child to first child ( temp 4-component vector of uint) 0:? 'inU1' ( temp 4-component vector of uint) 0:? 'inU1' (layout( location=4) in 4-component vector of uint) -0:105 move second child to first child ( temp 4-component vector of float) +0:109 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) -0:105 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) +0:109 Function Call: @ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4; ( temp 4-component vector of float) 0:? 'inF0' ( temp 4-component vector of float) 0:? 'inF1' ( temp 4-component vector of float) 0:? 'inF2' ( temp 4-component vector of float) @@ -708,6 +716,8 @@ local_size = (1, 1, 1) 0:? 'gs_ua4' ( shared 4-component vector of uint) 0:? 'gs_ub4' ( shared 4-component vector of uint) 0:? 'gs_uc4' ( shared 4-component vector of uint) +0:? 'gs_fa' ( shared float) +0:? 'gs_fb' ( shared float) 0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) 0:? 'inF0' (layout( location=0) in 4-component vector of float) 0:? 'inF1' (layout( location=1) in 4-component vector of float) @@ -718,12 +728,14 @@ local_size = (1, 1, 1) Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 265 +// Id's are bound by 270 Capability Shader + Capability AtomicFloat32AddEXT + Extension "SPV_EXT_shader_atomic_float_add" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 "ComputeShaderFunction" 237 240 243 247 250 253 + EntryPoint GLCompute 4 "ComputeShaderFunction" 242 245 248 252 255 258 ExecutionMode 4 LocalSize 1 1 1 Source HLSL 500 Name 4 "ComputeShaderFunction" @@ -759,40 +771,42 @@ Validation failed Name 67 "gs_ub" Name 72 "out_u1" Name 80 "gs_uc" - Name 111 "gs_ua2" - Name 112 "gs_ub2" - Name 115 "out_u2" - Name 123 "gs_uc2" - Name 155 "gs_ua3" - Name 156 "gs_ub3" - Name 159 "out_u3" - Name 167 "gs_uc3" - Name 198 "gs_ua4" - Name 199 "gs_ub4" - Name 202 "out_u4" - Name 210 "gs_uc4" - Name 235 "inF0" - Name 237 "inF0" - Name 239 "inF1" - Name 240 "inF1" - Name 242 "inF2" - Name 243 "inF2" - Name 245 "inU0" - Name 247 "inU0" - Name 249 "inU1" - Name 250 "inU1" - Name 253 "@entryPointOutput" - Name 254 "param" - Name 256 "param" - Name 258 "param" - Name 260 "param" - Name 262 "param" - Decorate 237(inF0) Location 0 - Decorate 240(inF1) Location 1 - Decorate 243(inF2) Location 2 - Decorate 247(inU0) Location 3 - Decorate 250(inU1) Location 4 - Decorate 253(@entryPointOutput) Location 0 + Name 102 "gs_fa" + Name 103 "gs_fb" + Name 116 "gs_ua2" + Name 117 "gs_ub2" + Name 120 "out_u2" + Name 128 "gs_uc2" + Name 160 "gs_ua3" + Name 161 "gs_ub3" + Name 164 "out_u3" + Name 172 "gs_uc3" + Name 203 "gs_ua4" + Name 204 "gs_ub4" + Name 207 "out_u4" + Name 215 "gs_uc4" + Name 240 "inF0" + Name 242 "inF0" + Name 244 "inF1" + Name 245 "inF1" + Name 247 "inF2" + Name 248 "inF2" + Name 250 "inU0" + Name 252 "inU0" + Name 254 "inU1" + Name 255 "inU1" + Name 258 "@entryPointOutput" + Name 259 "param" + Name 261 "param" + Name 263 "param" + Name 265 "param" + Name 267 "param" + Decorate 242(inF0) Location 0 + Decorate 245(inF1) Location 1 + Decorate 248(inF2) Location 2 + Decorate 252(inU0) Location 3 + Decorate 255(inU1) Location 4 + Decorate 258(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -824,74 +838,77 @@ Validation failed 69: 8(int) Constant 1 70: 8(int) Constant 0 80(gs_uc): 65(ptr) Variable Workgroup - 106: TypeVector 61(bool) 2 - 107: 24(fvec2) ConstantComposite 62 62 - 110: TypePointer Workgroup 26(ivec2) - 111(gs_ua2): 110(ptr) Variable Workgroup - 112(gs_ub2): 110(ptr) Variable Workgroup - 123(gs_uc2): 110(ptr) Variable Workgroup - 144: 6(float) Constant 1065353216 - 145: 6(float) Constant 1073741824 - 146: 24(fvec2) ConstantComposite 144 145 - 150: TypeVector 61(bool) 3 - 151: 36(fvec3) ConstantComposite 62 62 62 - 154: TypePointer Workgroup 38(ivec3) - 155(gs_ua3): 154(ptr) Variable Workgroup - 156(gs_ub3): 154(ptr) Variable Workgroup - 167(gs_uc3): 154(ptr) Variable Workgroup - 188: 6(float) Constant 1077936128 - 189: 36(fvec3) ConstantComposite 144 145 188 - 193: TypeVector 61(bool) 4 - 194: 48(fvec4) ConstantComposite 62 62 62 62 - 197: TypePointer Workgroup 50(ivec4) - 198(gs_ua4): 197(ptr) Variable Workgroup - 199(gs_ub4): 197(ptr) Variable Workgroup - 210(gs_uc4): 197(ptr) Variable Workgroup - 231: 6(float) Constant 1082130432 - 232: 48(fvec4) ConstantComposite 144 145 188 231 - 236: TypePointer Input 48(fvec4) - 237(inF0): 236(ptr) Variable Input - 240(inF1): 236(ptr) Variable Input - 243(inF2): 236(ptr) Variable Input - 246: TypePointer Input 50(ivec4) - 247(inU0): 246(ptr) Variable Input - 250(inU1): 246(ptr) Variable Input - 252: TypePointer Output 48(fvec4) -253(@entryPointOutput): 252(ptr) Variable Output + 101: TypePointer Workgroup 6(float) + 102(gs_fa): 101(ptr) Variable Workgroup + 103(gs_fb): 101(ptr) Variable Workgroup + 111: TypeVector 61(bool) 2 + 112: 24(fvec2) ConstantComposite 62 62 + 115: TypePointer Workgroup 26(ivec2) + 116(gs_ua2): 115(ptr) Variable Workgroup + 117(gs_ub2): 115(ptr) Variable Workgroup + 128(gs_uc2): 115(ptr) Variable Workgroup + 149: 6(float) Constant 1065353216 + 150: 6(float) Constant 1073741824 + 151: 24(fvec2) ConstantComposite 149 150 + 155: TypeVector 61(bool) 3 + 156: 36(fvec3) ConstantComposite 62 62 62 + 159: TypePointer Workgroup 38(ivec3) + 160(gs_ua3): 159(ptr) Variable Workgroup + 161(gs_ub3): 159(ptr) Variable Workgroup + 172(gs_uc3): 159(ptr) Variable Workgroup + 193: 6(float) Constant 1077936128 + 194: 36(fvec3) ConstantComposite 149 150 193 + 198: TypeVector 61(bool) 4 + 199: 48(fvec4) ConstantComposite 62 62 62 62 + 202: TypePointer Workgroup 50(ivec4) + 203(gs_ua4): 202(ptr) Variable Workgroup + 204(gs_ub4): 202(ptr) Variable Workgroup + 215(gs_uc4): 202(ptr) Variable Workgroup + 236: 6(float) Constant 1082130432 + 237: 48(fvec4) ConstantComposite 149 150 193 236 + 241: TypePointer Input 48(fvec4) + 242(inF0): 241(ptr) Variable Input + 245(inF1): 241(ptr) Variable Input + 248(inF2): 241(ptr) Variable Input + 251: TypePointer Input 50(ivec4) + 252(inU0): 251(ptr) Variable Input + 255(inU1): 251(ptr) Variable Input + 257: TypePointer Output 48(fvec4) +258(@entryPointOutput): 257(ptr) Variable Output 4(ComputeShaderFunction): 2 Function None 3 5: Label - 235(inF0): 49(ptr) Variable Function - 239(inF1): 49(ptr) Variable Function - 242(inF2): 49(ptr) Variable Function - 245(inU0): 51(ptr) Variable Function - 249(inU1): 51(ptr) Variable Function - 254(param): 49(ptr) Variable Function - 256(param): 49(ptr) Variable Function - 258(param): 49(ptr) Variable Function - 260(param): 51(ptr) Variable Function - 262(param): 51(ptr) Variable Function - 238: 48(fvec4) Load 237(inF0) - Store 235(inF0) 238 - 241: 48(fvec4) Load 240(inF1) - Store 239(inF1) 241 - 244: 48(fvec4) Load 243(inF2) - Store 242(inF2) 244 - 248: 50(ivec4) Load 247(inU0) - Store 245(inU0) 248 - 251: 50(ivec4) Load 250(inU1) - Store 249(inU1) 251 - 255: 48(fvec4) Load 235(inF0) - Store 254(param) 255 - 257: 48(fvec4) Load 239(inF1) - Store 256(param) 257 - 259: 48(fvec4) Load 242(inF2) - Store 258(param) 259 - 261: 50(ivec4) Load 245(inU0) - Store 260(param) 261 - 263: 50(ivec4) Load 249(inU1) - Store 262(param) 263 - 264: 48(fvec4) FunctionCall 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;) 254(param) 256(param) 258(param) 260(param) 262(param) - Store 253(@entryPointOutput) 264 + 240(inF0): 49(ptr) Variable Function + 244(inF1): 49(ptr) Variable Function + 247(inF2): 49(ptr) Variable Function + 250(inU0): 51(ptr) Variable Function + 254(inU1): 51(ptr) Variable Function + 259(param): 49(ptr) Variable Function + 261(param): 49(ptr) Variable Function + 263(param): 49(ptr) Variable Function + 265(param): 51(ptr) Variable Function + 267(param): 51(ptr) Variable Function + 243: 48(fvec4) Load 242(inF0) + Store 240(inF0) 243 + 246: 48(fvec4) Load 245(inF1) + Store 244(inF1) 246 + 249: 48(fvec4) Load 248(inF2) + Store 247(inF2) 249 + 253: 50(ivec4) Load 252(inU0) + Store 250(inU0) 253 + 256: 50(ivec4) Load 255(inU1) + Store 254(inU1) 256 + 260: 48(fvec4) Load 240(inF0) + Store 259(param) 260 + 262: 48(fvec4) Load 244(inF1) + Store 261(param) 262 + 264: 48(fvec4) Load 247(inF2) + Store 263(param) 264 + 266: 50(ivec4) Load 250(inU0) + Store 265(param) 266 + 268: 50(ivec4) Load 254(inU1) + Store 267(param) 268 + 269: 48(fvec4) FunctionCall 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;) 259(param) 261(param) 263(param) 265(param) 267(param) + Store 258(@entryPointOutput) 269 Return FunctionEnd 16(ComputeShaderFunctionS(f1;f1;f1;u1;u1;): 6(float) Function None 10 @@ -942,6 +959,8 @@ Validation failed 99: 8(int) Load 67(gs_ub) 100: 8(int) AtomicXor 66(gs_ua) 69 70 99 Store 72(out_u1) 100 + 104: 6(float) Load 103(gs_fb) + 105: 6(float) AtomicFAddEXT 102(gs_fa) 69 70 104 ReturnValue 62 FunctionEnd 22(ComputeShaderFunction1(vf1;vf1;vf1;): 6(float) Function None 18 @@ -958,48 +977,48 @@ Validation failed 32(inU0): 27(ptr) FunctionParameter 33(inU1): 27(ptr) FunctionParameter 35: Label - 115(out_u2): 27(ptr) Variable Function - 105: 24(fvec2) Load 29(inF0) - 108: 106(bvec2) FUnordNotEqual 105 107 - 109: 61(bool) All 108 - 113: 26(ivec2) Load 112(gs_ub2) - 114: 26(ivec2) AtomicIAdd 111(gs_ua2) 69 70 113 - 116: 26(ivec2) Load 112(gs_ub2) - 117: 26(ivec2) AtomicIAdd 111(gs_ua2) 69 70 116 - Store 115(out_u2) 117 - 118: 26(ivec2) Load 112(gs_ub2) - 119: 26(ivec2) AtomicAnd 111(gs_ua2) 69 70 118 - 120: 26(ivec2) Load 112(gs_ub2) - 121: 26(ivec2) AtomicAnd 111(gs_ua2) 69 70 120 - Store 115(out_u2) 121 - 122: 26(ivec2) Load 112(gs_ub2) - 124: 26(ivec2) Load 123(gs_uc2) - 125: 26(ivec2) AtomicCompareExchange 111(gs_ua2) 69 70 70 124 122 - Store 115(out_u2) 125 - 126: 26(ivec2) Load 112(gs_ub2) - 127: 26(ivec2) AtomicExchange 111(gs_ua2) 69 70 126 - Store 115(out_u2) 127 - 128: 26(ivec2) Load 112(gs_ub2) - 129: 26(ivec2) AtomicUMax 111(gs_ua2) 69 70 128 - 130: 26(ivec2) Load 112(gs_ub2) - 131: 26(ivec2) AtomicUMax 111(gs_ua2) 69 70 130 - Store 115(out_u2) 131 - 132: 26(ivec2) Load 112(gs_ub2) - 133: 26(ivec2) AtomicUMin 111(gs_ua2) 69 70 132 - 134: 26(ivec2) Load 112(gs_ub2) - 135: 26(ivec2) AtomicUMin 111(gs_ua2) 69 70 134 - Store 115(out_u2) 135 - 136: 26(ivec2) Load 112(gs_ub2) - 137: 26(ivec2) AtomicOr 111(gs_ua2) 69 70 136 - 138: 26(ivec2) Load 112(gs_ub2) - 139: 26(ivec2) AtomicOr 111(gs_ua2) 69 70 138 - Store 115(out_u2) 139 - 140: 26(ivec2) Load 112(gs_ub2) - 141: 26(ivec2) AtomicXor 111(gs_ua2) 69 70 140 - 142: 26(ivec2) Load 112(gs_ub2) - 143: 26(ivec2) AtomicXor 111(gs_ua2) 69 70 142 - Store 115(out_u2) 143 - ReturnValue 146 + 120(out_u2): 27(ptr) Variable Function + 110: 24(fvec2) Load 29(inF0) + 113: 111(bvec2) FUnordNotEqual 110 112 + 114: 61(bool) All 113 + 118: 26(ivec2) Load 117(gs_ub2) + 119: 26(ivec2) AtomicIAdd 116(gs_ua2) 69 70 118 + 121: 26(ivec2) Load 117(gs_ub2) + 122: 26(ivec2) AtomicIAdd 116(gs_ua2) 69 70 121 + Store 120(out_u2) 122 + 123: 26(ivec2) Load 117(gs_ub2) + 124: 26(ivec2) AtomicAnd 116(gs_ua2) 69 70 123 + 125: 26(ivec2) Load 117(gs_ub2) + 126: 26(ivec2) AtomicAnd 116(gs_ua2) 69 70 125 + Store 120(out_u2) 126 + 127: 26(ivec2) Load 117(gs_ub2) + 129: 26(ivec2) Load 128(gs_uc2) + 130: 26(ivec2) AtomicCompareExchange 116(gs_ua2) 69 70 70 129 127 + Store 120(out_u2) 130 + 131: 26(ivec2) Load 117(gs_ub2) + 132: 26(ivec2) AtomicExchange 116(gs_ua2) 69 70 131 + Store 120(out_u2) 132 + 133: 26(ivec2) Load 117(gs_ub2) + 134: 26(ivec2) AtomicUMax 116(gs_ua2) 69 70 133 + 135: 26(ivec2) Load 117(gs_ub2) + 136: 26(ivec2) AtomicUMax 116(gs_ua2) 69 70 135 + Store 120(out_u2) 136 + 137: 26(ivec2) Load 117(gs_ub2) + 138: 26(ivec2) AtomicUMin 116(gs_ua2) 69 70 137 + 139: 26(ivec2) Load 117(gs_ub2) + 140: 26(ivec2) AtomicUMin 116(gs_ua2) 69 70 139 + Store 120(out_u2) 140 + 141: 26(ivec2) Load 117(gs_ub2) + 142: 26(ivec2) AtomicOr 116(gs_ua2) 69 70 141 + 143: 26(ivec2) Load 117(gs_ub2) + 144: 26(ivec2) AtomicOr 116(gs_ua2) 69 70 143 + Store 120(out_u2) 144 + 145: 26(ivec2) Load 117(gs_ub2) + 146: 26(ivec2) AtomicXor 116(gs_ua2) 69 70 145 + 147: 26(ivec2) Load 117(gs_ub2) + 148: 26(ivec2) AtomicXor 116(gs_ua2) 69 70 147 + Store 120(out_u2) 148 + ReturnValue 151 FunctionEnd 46(ComputeShaderFunction3(vf3;vf3;vf3;vu3;vu3;): 36(fvec3) Function None 40 41(inF0): 37(ptr) FunctionParameter @@ -1008,48 +1027,48 @@ Validation failed 44(inU0): 39(ptr) FunctionParameter 45(inU1): 39(ptr) FunctionParameter 47: Label - 159(out_u3): 39(ptr) Variable Function - 149: 36(fvec3) Load 41(inF0) - 152: 150(bvec3) FUnordNotEqual 149 151 - 153: 61(bool) All 152 - 157: 38(ivec3) Load 156(gs_ub3) - 158: 38(ivec3) AtomicIAdd 155(gs_ua3) 69 70 157 - 160: 38(ivec3) Load 156(gs_ub3) - 161: 38(ivec3) AtomicIAdd 155(gs_ua3) 69 70 160 - Store 159(out_u3) 161 - 162: 38(ivec3) Load 156(gs_ub3) - 163: 38(ivec3) AtomicAnd 155(gs_ua3) 69 70 162 - 164: 38(ivec3) Load 156(gs_ub3) - 165: 38(ivec3) AtomicAnd 155(gs_ua3) 69 70 164 - Store 159(out_u3) 165 - 166: 38(ivec3) Load 156(gs_ub3) - 168: 38(ivec3) Load 167(gs_uc3) - 169: 38(ivec3) AtomicCompareExchange 155(gs_ua3) 69 70 70 168 166 - Store 159(out_u3) 169 - 170: 38(ivec3) Load 156(gs_ub3) - 171: 38(ivec3) AtomicExchange 155(gs_ua3) 69 70 170 - Store 159(out_u3) 171 - 172: 38(ivec3) Load 156(gs_ub3) - 173: 38(ivec3) AtomicUMax 155(gs_ua3) 69 70 172 - 174: 38(ivec3) Load 156(gs_ub3) - 175: 38(ivec3) AtomicUMax 155(gs_ua3) 69 70 174 - Store 159(out_u3) 175 - 176: 38(ivec3) Load 156(gs_ub3) - 177: 38(ivec3) AtomicUMin 155(gs_ua3) 69 70 176 - 178: 38(ivec3) Load 156(gs_ub3) - 179: 38(ivec3) AtomicUMin 155(gs_ua3) 69 70 178 - Store 159(out_u3) 179 - 180: 38(ivec3) Load 156(gs_ub3) - 181: 38(ivec3) AtomicOr 155(gs_ua3) 69 70 180 - 182: 38(ivec3) Load 156(gs_ub3) - 183: 38(ivec3) AtomicOr 155(gs_ua3) 69 70 182 - Store 159(out_u3) 183 - 184: 38(ivec3) Load 156(gs_ub3) - 185: 38(ivec3) AtomicXor 155(gs_ua3) 69 70 184 - 186: 38(ivec3) Load 156(gs_ub3) - 187: 38(ivec3) AtomicXor 155(gs_ua3) 69 70 186 - Store 159(out_u3) 187 - ReturnValue 189 + 164(out_u3): 39(ptr) Variable Function + 154: 36(fvec3) Load 41(inF0) + 157: 155(bvec3) FUnordNotEqual 154 156 + 158: 61(bool) All 157 + 162: 38(ivec3) Load 161(gs_ub3) + 163: 38(ivec3) AtomicIAdd 160(gs_ua3) 69 70 162 + 165: 38(ivec3) Load 161(gs_ub3) + 166: 38(ivec3) AtomicIAdd 160(gs_ua3) 69 70 165 + Store 164(out_u3) 166 + 167: 38(ivec3) Load 161(gs_ub3) + 168: 38(ivec3) AtomicAnd 160(gs_ua3) 69 70 167 + 169: 38(ivec3) Load 161(gs_ub3) + 170: 38(ivec3) AtomicAnd 160(gs_ua3) 69 70 169 + Store 164(out_u3) 170 + 171: 38(ivec3) Load 161(gs_ub3) + 173: 38(ivec3) Load 172(gs_uc3) + 174: 38(ivec3) AtomicCompareExchange 160(gs_ua3) 69 70 70 173 171 + Store 164(out_u3) 174 + 175: 38(ivec3) Load 161(gs_ub3) + 176: 38(ivec3) AtomicExchange 160(gs_ua3) 69 70 175 + Store 164(out_u3) 176 + 177: 38(ivec3) Load 161(gs_ub3) + 178: 38(ivec3) AtomicUMax 160(gs_ua3) 69 70 177 + 179: 38(ivec3) Load 161(gs_ub3) + 180: 38(ivec3) AtomicUMax 160(gs_ua3) 69 70 179 + Store 164(out_u3) 180 + 181: 38(ivec3) Load 161(gs_ub3) + 182: 38(ivec3) AtomicUMin 160(gs_ua3) 69 70 181 + 183: 38(ivec3) Load 161(gs_ub3) + 184: 38(ivec3) AtomicUMin 160(gs_ua3) 69 70 183 + Store 164(out_u3) 184 + 185: 38(ivec3) Load 161(gs_ub3) + 186: 38(ivec3) AtomicOr 160(gs_ua3) 69 70 185 + 187: 38(ivec3) Load 161(gs_ub3) + 188: 38(ivec3) AtomicOr 160(gs_ua3) 69 70 187 + Store 164(out_u3) 188 + 189: 38(ivec3) Load 161(gs_ub3) + 190: 38(ivec3) AtomicXor 160(gs_ua3) 69 70 189 + 191: 38(ivec3) Load 161(gs_ub3) + 192: 38(ivec3) AtomicXor 160(gs_ua3) 69 70 191 + Store 164(out_u3) 192 + ReturnValue 194 FunctionEnd 58(@ComputeShaderFunction(vf4;vf4;vf4;vu4;vu4;): 48(fvec4) Function None 52 53(inF0): 49(ptr) FunctionParameter @@ -1058,46 +1077,46 @@ Validation failed 56(inU0): 51(ptr) FunctionParameter 57(inU1): 51(ptr) FunctionParameter 59: Label - 202(out_u4): 51(ptr) Variable Function - 192: 48(fvec4) Load 53(inF0) - 195: 193(bvec4) FUnordNotEqual 192 194 - 196: 61(bool) All 195 - 200: 50(ivec4) Load 199(gs_ub4) - 201: 50(ivec4) AtomicIAdd 198(gs_ua4) 69 70 200 - 203: 50(ivec4) Load 199(gs_ub4) - 204: 50(ivec4) AtomicIAdd 198(gs_ua4) 69 70 203 - Store 202(out_u4) 204 - 205: 50(ivec4) Load 199(gs_ub4) - 206: 50(ivec4) AtomicAnd 198(gs_ua4) 69 70 205 - 207: 50(ivec4) Load 199(gs_ub4) - 208: 50(ivec4) AtomicAnd 198(gs_ua4) 69 70 207 - Store 202(out_u4) 208 - 209: 50(ivec4) Load 199(gs_ub4) - 211: 50(ivec4) Load 210(gs_uc4) - 212: 50(ivec4) AtomicCompareExchange 198(gs_ua4) 69 70 70 211 209 - Store 202(out_u4) 212 - 213: 50(ivec4) Load 199(gs_ub4) - 214: 50(ivec4) AtomicExchange 198(gs_ua4) 69 70 213 - Store 202(out_u4) 214 - 215: 50(ivec4) Load 199(gs_ub4) - 216: 50(ivec4) AtomicUMax 198(gs_ua4) 69 70 215 - 217: 50(ivec4) Load 199(gs_ub4) - 218: 50(ivec4) AtomicUMax 198(gs_ua4) 69 70 217 - Store 202(out_u4) 218 - 219: 50(ivec4) Load 199(gs_ub4) - 220: 50(ivec4) AtomicUMin 198(gs_ua4) 69 70 219 - 221: 50(ivec4) Load 199(gs_ub4) - 222: 50(ivec4) AtomicUMin 198(gs_ua4) 69 70 221 - Store 202(out_u4) 222 - 223: 50(ivec4) Load 199(gs_ub4) - 224: 50(ivec4) AtomicOr 198(gs_ua4) 69 70 223 - 225: 50(ivec4) Load 199(gs_ub4) - 226: 50(ivec4) AtomicOr 198(gs_ua4) 69 70 225 - Store 202(out_u4) 226 - 227: 50(ivec4) Load 199(gs_ub4) - 228: 50(ivec4) AtomicXor 198(gs_ua4) 69 70 227 - 229: 50(ivec4) Load 199(gs_ub4) - 230: 50(ivec4) AtomicXor 198(gs_ua4) 69 70 229 - Store 202(out_u4) 230 - ReturnValue 232 + 207(out_u4): 51(ptr) Variable Function + 197: 48(fvec4) Load 53(inF0) + 200: 198(bvec4) FUnordNotEqual 197 199 + 201: 61(bool) All 200 + 205: 50(ivec4) Load 204(gs_ub4) + 206: 50(ivec4) AtomicIAdd 203(gs_ua4) 69 70 205 + 208: 50(ivec4) Load 204(gs_ub4) + 209: 50(ivec4) AtomicIAdd 203(gs_ua4) 69 70 208 + Store 207(out_u4) 209 + 210: 50(ivec4) Load 204(gs_ub4) + 211: 50(ivec4) AtomicAnd 203(gs_ua4) 69 70 210 + 212: 50(ivec4) Load 204(gs_ub4) + 213: 50(ivec4) AtomicAnd 203(gs_ua4) 69 70 212 + Store 207(out_u4) 213 + 214: 50(ivec4) Load 204(gs_ub4) + 216: 50(ivec4) Load 215(gs_uc4) + 217: 50(ivec4) AtomicCompareExchange 203(gs_ua4) 69 70 70 216 214 + Store 207(out_u4) 217 + 218: 50(ivec4) Load 204(gs_ub4) + 219: 50(ivec4) AtomicExchange 203(gs_ua4) 69 70 218 + Store 207(out_u4) 219 + 220: 50(ivec4) Load 204(gs_ub4) + 221: 50(ivec4) AtomicUMax 203(gs_ua4) 69 70 220 + 222: 50(ivec4) Load 204(gs_ub4) + 223: 50(ivec4) AtomicUMax 203(gs_ua4) 69 70 222 + Store 207(out_u4) 223 + 224: 50(ivec4) Load 204(gs_ub4) + 225: 50(ivec4) AtomicUMin 203(gs_ua4) 69 70 224 + 226: 50(ivec4) Load 204(gs_ub4) + 227: 50(ivec4) AtomicUMin 203(gs_ua4) 69 70 226 + Store 207(out_u4) 227 + 228: 50(ivec4) Load 204(gs_ub4) + 229: 50(ivec4) AtomicOr 203(gs_ua4) 69 70 228 + 230: 50(ivec4) Load 204(gs_ub4) + 231: 50(ivec4) AtomicOr 203(gs_ua4) 69 70 230 + Store 207(out_u4) 231 + 232: 50(ivec4) Load 204(gs_ub4) + 233: 50(ivec4) AtomicXor 203(gs_ua4) 69 70 232 + 234: 50(ivec4) Load 204(gs_ub4) + 235: 50(ivec4) AtomicXor 203(gs_ua4) 69 70 234 + Store 207(out_u4) 235 + ReturnValue 237 FunctionEnd diff --git a/Test/hlsl.intrinsics.comp b/Test/hlsl.intrinsics.comp index bce2d27d81..78f424710f 100644 --- a/Test/hlsl.intrinsics.comp +++ b/Test/hlsl.intrinsics.comp @@ -12,6 +12,8 @@ groupshared uint3 gs_uc3; groupshared uint4 gs_ua4; groupshared uint4 gs_ub4; groupshared uint4 gs_uc4; +groupshared float gs_fa; +groupshared float gs_fb; float ComputeShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint inU1) { @@ -36,6 +38,8 @@ float ComputeShaderFunctionS(float inF0, float inF1, float inF2, uint inU0, uint InterlockedXor(gs_ua, gs_ub); InterlockedXor(gs_ua, gs_ub, out_u1); + InterlockedAdd(gs_fa, gs_fb); + // CheckAccessFullyMapped(3); // TODO: ... return 0.0; From f5fa593143e40c6669d14cc4d6fa38cebefabf8d Mon Sep 17 00:00:00 2001 From: Moritz Heinemann Date: Wed, 15 Feb 2023 20:06:26 +0100 Subject: [PATCH 148/594] move ResourceLimits from StandAlone to glslang dir (Fix #3064) --- BUILD.bazel | 2 +- BUILD.gn | 2 +- StandAlone/CMakeLists.txt | 25 ------------ glslang/CMakeLists.txt | 40 ++++++++++++++++++- .../ResourceLimits}/ResourceLimits.cpp | 0 .../ResourceLimits}/resource_limits_c.cpp | 0 6 files changed, 40 insertions(+), 29 deletions(-) rename {StandAlone => glslang/ResourceLimits}/ResourceLimits.cpp (100%) rename {StandAlone => glslang/ResourceLimits}/resource_limits_c.cpp (100%) diff --git a/BUILD.bazel b/BUILD.bazel index 8dd76e0720..b6295839f6 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -209,7 +209,7 @@ cc_library( cc_library( name = "glslang-default-resource-limits", - srcs = ["StandAlone/ResourceLimits.cpp"], + srcs = ["glslang/ResourceLimits/ResourceLimits.cpp"], hdrs = ["glslang/Public/ResourceLimits.h"], copts = COMMON_COPTS, linkstatic = 1, diff --git a/BUILD.gn b/BUILD.gn index 0aacbf5ab6..85a4bed2e0 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -299,7 +299,7 @@ glslang_sources_common("glslang_sources") { source_set("glslang_default_resource_limits_sources") { sources = [ - "StandAlone/ResourceLimits.cpp", + "glslang/ResourceLimits/ResourceLimits.cpp", "glslang/Public/ResourceLimits.h", "glslang/Include/ResourceLimits.h", ] diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 81d8c3b347..b1ba18f6b9 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -47,17 +47,6 @@ add_custom_command( #add_custom_target(glslangValidator DEPENDS ${GLSLANG_INTRINSIC_H}) -add_library(glslang-default-resource-limits - ${CMAKE_CURRENT_SOURCE_DIR}/ResourceLimits.cpp - ${CMAKE_CURRENT_SOURCE_DIR}/resource_limits_c.cpp) -set_target_properties(glslang-default-resource-limits PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") -set_property(TARGET glslang-default-resource-limits PROPERTY FOLDER glslang) -set_property(TARGET glslang-default-resource-limits PROPERTY POSITION_INDEPENDENT_CODE ON) - -target_include_directories(glslang-default-resource-limits - PUBLIC $ - PUBLIC $) - set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H}) add_executable(glslangValidator ${SOURCES}) @@ -135,18 +124,4 @@ if(ENABLE_GLSLANG_INSTALL) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() - install(TARGETS glslang-default-resource-limits EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" " - message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::glslang-default-resource-limits) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - endif() diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 7709f0987b..f87083971c 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -149,8 +149,6 @@ set(GLSLANG_SOURCES set(GLSLANG_HEADERS Public/ShaderLang.h - Public/ResourceLimits.h - Public/resource_limits_c.h Include/arrays.h Include/BaseTypes.h Include/Common.h @@ -185,6 +183,30 @@ if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(glslang PROPERTIES PREFIX "") endif() +################################################################################ +# ResourceLimits +################################################################################ +set(RESOURCELIMITS_SOURCES + ResourceLimits/ResourceLimits.cpp + ResourceLimits/resource_limits_c.cpp +) + +set(RESOURCELIMITS_HEADERS + Public/ResourceLimits.h + Public/resource_limits_c.h +) + +add_library(glslang-default-resource-limits ${RESOURCELIMITS_SOURCES} ${RESOURCELIMITS_HEADERS}) +set_target_properties(glslang-default-resource-limits PROPERTIES + VERSION "${GLSLANG_VERSION}" + SOVERSION "${GLSLANG_VERSION_MAJOR}" + FOLDER glslang + POSITION_INDEPENDENT_CODE ON) + +target_include_directories(glslang-default-resource-limits PUBLIC + $ + $) + ################################################################################ # source_groups ################################################################################ @@ -237,4 +259,18 @@ if(ENABLE_GLSLANG_INSTALL) install(FILES ${GLSLANG_BUILD_INFO_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang) + install(TARGETS glslang-default-resource-limits EXPORT glslang-targets) + + # Backward compatibility + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" " + message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + + if (NOT TARGET glslang::glslang-default-resource-limits) + include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + endif() + + add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) + ") + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + endif() diff --git a/StandAlone/ResourceLimits.cpp b/glslang/ResourceLimits/ResourceLimits.cpp similarity index 100% rename from StandAlone/ResourceLimits.cpp rename to glslang/ResourceLimits/ResourceLimits.cpp diff --git a/StandAlone/resource_limits_c.cpp b/glslang/ResourceLimits/resource_limits_c.cpp similarity index 100% rename from StandAlone/resource_limits_c.cpp rename to glslang/ResourceLimits/resource_limits_c.cpp From c64c98267cecc341810149e777048e76d13539da Mon Sep 17 00:00:00 2001 From: Johan Mattsson <39247600+mjunix@users.noreply.github.com> Date: Sun, 19 Feb 2023 11:21:39 +0100 Subject: [PATCH 149/594] Fix potential NULL dereference --- glslang/MachineIndependent/ShaderLang.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index ed40c36699..5d16361cc4 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1542,11 +1542,10 @@ int ShLinkExt( TShHandleBase* base = reinterpret_cast(linkHandle); TLinker* linker = static_cast(base->getAsLinker()); - SetThreadPoolAllocator(linker->getPool()); - if (linker == nullptr) return 0; - + + SetThreadPoolAllocator(linker->getPool()); linker->infoSink.info.erase(); for (int i = 0; i < numHandles; ++i) { From 9cdfc5a511e8fa9c0713a1c84503be74e7fae029 Mon Sep 17 00:00:00 2001 From: Johan Mattsson <39247600+mjunix@users.noreply.github.com> Date: Sun, 19 Feb 2023 11:18:03 +0100 Subject: [PATCH 150/594] Fix potential NULL dereference --- glslang/MachineIndependent/ParseContextBase.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 758572bb84..c34c04f6c7 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -235,12 +235,12 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, // Test for and give an error if the node can't be read from. void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, TIntermTyped* node) { - TIntermBinary* binaryNode = node->getAsBinaryNode(); - const TIntermSymbol* symNode = node->getAsSymbolNode(); - if (! node) return; + TIntermBinary* binaryNode = node->getAsBinaryNode(); + const TIntermSymbol* symNode = node->getAsSymbolNode(); + if (node->getQualifier().isWriteOnly()) { const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true); From aae2a7ae08889645f9f0969673fa49a4ee4e3fb2 Mon Sep 17 00:00:00 2001 From: Greg Fischer Date: Fri, 3 Mar 2023 15:17:03 -0700 Subject: [PATCH 151/594] Fix installation of resource limits headers Fixes #3150 --- CMakeLists.txt | 2 +- glslang/CMakeLists.txt | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 33227b5259..18e96dd689 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -233,7 +233,7 @@ if(${CMAKE_VERSION} VERSION_LESS 3.1) # remove this block once CMake >=3.1 has fixated in the ecosystem set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") else() - set(CMAKE_CXX_STANDARD 11) + set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_CXX_EXTENSIONS OFF) endif() diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index f87083971c..7d8790c49d 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -250,7 +250,8 @@ if(ENABLE_GLSLANG_INSTALL) set(ALL_HEADERS ${GLSLANG_HEADERS} - ${MACHINEINDEPENDENT_HEADERS}) + ${MACHINEINDEPENDENT_HEADERS} + ${RESOURCELIMITS_HEADERS}) foreach(file ${ALL_HEADERS}) get_filename_component(dir ${file} DIRECTORY) From cd2082e0584d4e39d11e3f401184e0d558ab304f Mon Sep 17 00:00:00 2001 From: Joyce Date: Wed, 8 Mar 2023 13:27:09 -0300 Subject: [PATCH 152/594] Set token permissions to workflows (#3156) Signed-off-by: Joyce --- .github/workflows/continuous_deployment.yml | 6 ++++++ .github/workflows/continuous_integration.yml | 2 ++ 2 files changed, 8 insertions(+) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 61e7c2667b..d8fe9beecd 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -22,9 +22,13 @@ on: branches: - main +permissions: read-all + jobs: linux: runs-on: ${{matrix.os.genus}} + permissions: + contents: write strategy: fail-fast: false matrix: @@ -101,6 +105,8 @@ jobs: macos: runs-on: ${{matrix.os.genus}} + permissions: + contents: write strategy: fail-fast: false matrix: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index c0b1cf9e62..2b2a086ad8 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -12,6 +12,8 @@ on: branches: - main +permissions: read-all + jobs: linux: runs-on: ${{matrix.os}} From 0094e479721e809ebea32a1c39179de05351dea2 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 15 Mar 2023 17:41:29 -0600 Subject: [PATCH 153/594] Fix outdated cmake conditional Remove cmake condition. The minimum is 3.14. The condition is no longer required. C++17 is now required. Update the landing page. --- CMakeLists.txt | 14 ++++---------- README.md | 6 +++--- 2 files changed, 7 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 18e96dd689..63f7c9874e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -227,16 +227,10 @@ if(ENABLE_GLSLANG_JS) endif() endif() -# Request C++11 -if(${CMAKE_VERSION} VERSION_LESS 3.1) - # CMake versions before 3.1 do not understand CMAKE_CXX_STANDARD - # remove this block once CMake >=3.1 has fixated in the ecosystem - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") -else() - set(CMAKE_CXX_STANDARD 17) - set(CMAKE_CXX_STANDARD_REQUIRED ON) - set(CMAKE_CXX_EXTENSIONS OFF) -endif() +# Request C++17 +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) function(glslang_set_link_args TARGET) # For MinGW compiles, statically link against the GCC and C++ runtimes. diff --git a/README.md b/README.md index c69222fd55..26dc48fc1b 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ git branch -u origin/main main git remote set-head origin -a ``` -2. Visual Studio 2019 is now the minimum supported compiler for windows. This change was driven by the external dependency on SPIRV-Tools. +2. C++17 (all platforms) and Visual Studio 2019 (Windows) are now required. This change was driven by the external dependency on SPIRV-Tools. [![appveyor status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/main?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/main) ![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) @@ -98,8 +98,8 @@ branch. ### Dependencies -* A C++11 compiler. - (For MSVS: use 2015 or later.) +* A C++17 compiler. + (For MSVS: use 2019 or later.) * [CMake][cmake]: for generating compilation targets. * make: _Linux_, ninja is an alternative, if configured. * [Python 3.x][python]: for executing SPIRV-Tools scripts. (Optional if not using SPIRV-Tools and the 'External' subdirectory does not exist.) From 43978b7c9619dfed01b470460187113e058a971e Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Wed, 15 Mar 2023 17:12:49 -0600 Subject: [PATCH 154/594] cmake: Remove outdated comment --- CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 63f7c9874e..8448b7b817 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -30,9 +30,6 @@ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. - -# increase to 3.1 once all major distributions -# include a version of CMake >= 3.1 cmake_minimum_required(VERSION 3.14.0) if (POLICY CMP0048) cmake_policy(SET CMP0048 NEW) From ef77cf3a92490f7c37f36f20263cd3cd8c94f009 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Wed, 15 Mar 2023 17:18:08 -0600 Subject: [PATCH 155/594] cmake: No need to set CMP0048/CMP0054 Now that the minimum is 3.14.0 setting these policies is redundant --- CMakeLists.txt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8448b7b817..8a442c002b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,13 +31,6 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. cmake_minimum_required(VERSION 3.14.0) -if (POLICY CMP0048) - cmake_policy(SET CMP0048 NEW) -endif() -if(POLICY CMP0054) - cmake_policy(SET CMP0054 NEW) -endif() - project(glslang) set_property(GLOBAL PROPERTY USE_FOLDERS ON) From b34f619e1c85810dcb3c578107d2e48ba4ee2b37 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nathan=20Gau=C3=ABr?= Date: Fri, 17 Mar 2023 10:56:16 +0100 Subject: [PATCH 156/594] kokoro: always chown files after build --- kokoro/linux-clang-gn/build.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/kokoro/linux-clang-gn/build.sh b/kokoro/linux-clang-gn/build.sh index 563432a1ad..111f5294ee 100755 --- a/kokoro/linux-clang-gn/build.sh +++ b/kokoro/linux-clang-gn/build.sh @@ -38,6 +38,7 @@ set -e # Fail on any error. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}")" >/dev/null 2>&1 && pwd )" ROOT_DIR="$( cd "${SCRIPT_DIR}/../.." >/dev/null 2>&1 && pwd )" +set +e # Allow build failure docker run --rm -i \ --volume "${ROOT_DIR}:${ROOT_DIR}" \ --workdir "${ROOT_DIR}" \ @@ -46,4 +47,9 @@ docker run --rm -i \ --entrypoint "${SCRIPT_DIR}/build-docker.sh" \ "gcr.io/shaderc-build/radial-build:latest" +# This is important. If the permissions are not fixed, kokoro will fail +# to pull build artifacts, and put the build in tool-failure state, which +# blocks the logs. +RESULT=$? sudo chown -R "$(id -u):$(id -g)" "${ROOT_DIR}" +exit $RESULT From 59abdcf912f96b9421b16d347dc1f587445a6f38 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 14 Mar 2023 16:26:44 -0600 Subject: [PATCH 157/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 1118a30ba0..8e79d292c5 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "63de608daeb7e91fbea6d7477a50debe7cac57ce" + "commit" : "44d72a9b36702f093dd20815561a56778b2d181e" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "d13b52222c39a7e9a401b44646f0ca3a640fbd47" + "commit" : "1feaf4414eb2b353764d01d88f8aa4bcc67b60db" } ] } From 14e5a04e70057972eef8a40df422e30a3b70e4b5 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 21 Mar 2023 16:01:43 -0600 Subject: [PATCH 158/594] Update CHANGES for release 12.1.0 --- CHANGES.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index f576366078..c318a77c4b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 12.1.0 2023-03-21 + +### Other changes +* Reject non-float inputs/outputs for version less than 120 +* Fix invalid BufferBlock decoration for SPIR-V 1.3 and above +* Add HLSL relaxed-precision float/int matrix expansions +* Block decorate Vulkan structs with RuntimeArrays +* Support InterlockedAdd on float types + ## 12.0.0 2023-01-18 ### Breaking changes From c43008e82993b460944533656a1d4a4467aa17af Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 23 Feb 2023 11:01:37 -0500 Subject: [PATCH 159/594] Fix double expansion of macro arguments. This adds a new fullyExpanded flag that makes sure that macro arguments only get expanded once. This can happen either in PrescanMacroArg, or, if there is token pasting or a function-like macro name has been passed as an argument and may need to be expanded when used as a function. --- .../preprocessor.function_macro.vert.out | 3 +++ Test/preprocessor.function_macro.vert | 3 +++ .../MachineIndependent/preprocessor/Pp.cpp | 17 +++++++++----- .../preprocessor/PpContext.h | 23 +++++++++++++++---- .../preprocessor/PpScanner.cpp | 4 +--- .../preprocessor/PpTokens.cpp | 4 ++-- 6 files changed, 39 insertions(+), 15 deletions(-) diff --git a/Test/baseResults/preprocessor.function_macro.vert.out b/Test/baseResults/preprocessor.function_macro.vert.out index 1280ddf644..010251e0cd 100644 --- a/Test/baseResults/preprocessor.function_macro.vert.out +++ b/Test/baseResults/preprocessor.function_macro.vert.out @@ -13,9 +13,12 @@ + + int main(){ gl_Position = vec4(3 + 1, 3 + 4, 3 + 1); gl_Position = vec4(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12); gl_Position = vec4(4 + 3 + 3); + gl_Position = 4 + 3 + F . a; } diff --git a/Test/preprocessor.function_macro.vert b/Test/preprocessor.function_macro.vert index 577ea7e358..9f437867b9 100644 --- a/Test/preprocessor.function_macro.vert +++ b/Test/preprocessor.function_macro.vert @@ -13,8 +13,11 @@ )\ 4 + 3 + Y +#define F F.a + int main() { gl_Position = vec4(X(3), Y(3, 4), Z(3)); gl_Position = vec4(REALLY_LONG_MACRO_NAME_WITH_MANY_PARAMETERS(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)); gl_Position = vec4(A(3)); + gl_Position = A(F); } diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index aa1e0d7451..d5a710918f 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -1126,9 +1126,6 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) pasting = true; } - // HLSL does expand macros before concatenation - if (pasting && pp->parseContext.isReadingHLSL()) - pasting = false; // TODO: preprocessor: properly handle whitespace (or lack of it) between tokens when expanding if (token == PpAtomIdentifier) { @@ -1138,9 +1135,12 @@ int TPpContext::tMacroInput::scan(TPpToken* ppToken) break; if (i >= 0) { TokenStream* arg = expandedArgs[i]; - if (arg == nullptr || pasting) + bool expanded = !!arg && !pasting; + // HLSL does expand macros before concatenation + if (arg == nullptr || (pasting && !pp->parseContext.isReadingHLSL()) ) { arg = args[i]; - pp->pushTokenStreamInput(*arg, prepaste); + } + pp->pushTokenStreamInput(*arg, prepaste, expanded); return pp->scanToken(ppToken); } @@ -1183,6 +1183,9 @@ MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, b { ppToken->space = false; int macroAtom = atomStrings.getAtom(ppToken->name); + if (ppToken->fullyExpanded) + return MacroExpandNotStarted; + switch (macroAtom) { case PpAtomLineMacro: // Arguments which are macro have been replaced in the first stage. @@ -1214,8 +1217,10 @@ MacroExpandResult TPpContext::MacroExpand(TPpToken* ppToken, bool expandUndef, b MacroSymbol* macro = macroAtom == 0 ? nullptr : lookupMacroDef(macroAtom); // no recursive expansions - if (macro != nullptr && macro->busy) + if (macro != nullptr && macro->busy) { + ppToken->fullyExpanded = true; return MacroExpandNotStarted; + } // not expanding undefined macros if ((macro == nullptr || macro->undef) && ! expandUndef) diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index 714b5eadba..590eab6b20 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -102,6 +102,7 @@ class TPpToken { i64val = 0; loc.init(); name[0] = 0; + fullyExpanded = false; } // Used for comparing macro definitions, so checks what is relevant for that. @@ -117,6 +118,8 @@ class TPpToken { // True if a space (for white space or a removed comment) should also be // recognized, in front of the token returned: bool space; + + bool fullyExpanded; // Numeric value of the token: union { int ival; @@ -475,16 +478,27 @@ class TPpContext { // // From PpTokens.cpp // - void pushTokenStreamInput(TokenStream&, bool pasting = false); + void pushTokenStreamInput(TokenStream&, bool pasting = false, bool expanded = false); void UngetToken(int token, TPpToken*); class tTokenInput : public tInput { public: - tTokenInput(TPpContext* pp, TokenStream* t, bool prepasting) : + tTokenInput(TPpContext* pp, TokenStream* t, bool prepasting, bool expanded) : tInput(pp), tokens(t), - lastTokenPastes(prepasting) { } - virtual int scan(TPpToken *ppToken) override { return tokens->getToken(pp->parseContext, ppToken); } + lastTokenPastes(prepasting), + preExpanded(expanded) { } + virtual int scan(TPpToken *ppToken) override { + int token = tokens->getToken(pp->parseContext, ppToken); + ppToken->fullyExpanded = preExpanded; + if (tokens->atEnd() && token == PpAtomIdentifier) { + int macroAtom = pp->atomStrings.getAtom(ppToken->name); + MacroSymbol* macro = macroAtom == 0 ? nullptr : pp->lookupMacroDef(macroAtom); + if (macro && macro->functionLike) + ppToken->fullyExpanded = false; + } + return token; + } virtual int getch() override { assert(0); return EndOfInput; } virtual void ungetch() override { assert(0); } virtual bool peekPasting() override { return tokens->peekTokenizedPasting(lastTokenPastes); } @@ -492,6 +506,7 @@ class TPpContext { protected: TokenStream* tokens; bool lastTokenPastes; // true if the last token in the input is to be pasted, rather than consumed as a token + bool preExpanded; }; class tUngotTokenInput : public tInput { diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index ad11792002..d4d4de9f61 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -480,9 +480,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) E_GL_EXT_shader_explicit_arithmetic_types_int16 }; static const int Num_Int16_Extensions = sizeof(Int16_Extensions) / sizeof(Int16_Extensions[0]); - ppToken->ival = 0; - ppToken->i64val = 0; - ppToken->space = false; + ppToken->clear(); ch = getch(); for (;;) { while (ch == ' ' || ch == '\t') { diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index e17eeafda2..ac1ea7a8ea 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -195,9 +195,9 @@ bool TPpContext::TokenStream::peekUntokenizedPasting() return pasting; } -void TPpContext::pushTokenStreamInput(TokenStream& ts, bool prepasting) +void TPpContext::pushTokenStreamInput(TokenStream& ts, bool prepasting, bool expanded) { - pushInput(new tTokenInput(this, &ts, prepasting)); + pushInput(new tTokenInput(this, &ts, prepasting, expanded)); ts.reset(); } From 1db9cd28549831d7b884a12dc700bf88e21fb4b8 Mon Sep 17 00:00:00 2001 From: Moritz Heinemann Date: Fri, 24 Mar 2023 15:18:09 +0100 Subject: [PATCH 160/594] Fix CMake for OSDependent install --- CMakeLists.txt | 10 +++++++++- glslang/OSDependent/Unix/CMakeLists.txt | 18 +++--------------- 2 files changed, 12 insertions(+), 16 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a442c002b..5b3c9e8c2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -356,10 +356,18 @@ endif() if(ENABLE_GLSLANG_INSTALL) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[ @PACKAGE_INIT@ + @INSTALL_CONFIG_UNIX@ include("@PACKAGE_PATH_EXPORT_TARGETS@") ]=]) - + set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake") + if(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") + set(INSTALL_CONFIG_UNIX [=[ + include(CMakeFindDependencyMacro) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_dependency(Threads REQUIRED) + ]=]) + endif() configure_package_config_file( "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 7ed71fbffc..6eb8867685 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -36,21 +36,9 @@ set_property(TARGET OSDependent PROPERTY FOLDER glslang) set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) # Link pthread -set(CMAKE_THREAD_PREFER_PTHREAD ON) -if(${CMAKE_VERSION} VERSION_LESS "3.1.0" OR CMAKE_CROSSCOMPILING) - # Needed as long as we support CMake 2.8 for Ubuntu 14.04, - # which does not support the recommended Threads::Threads target. - # https://cmake.org/cmake/help/v2.8.12/cmake.html#module:FindThreads - # Also needed when cross-compiling to work around - # https://gitlab.kitware.com/cmake/cmake/issues/16920 - find_package(Threads) - target_link_libraries(OSDependent ${CMAKE_THREAD_LIBS_INIT}) -else() - # This is the recommended way, so we use it for 3.1+. - set(THREADS_PREFER_PTHREAD_FLAG ON) - find_package(Threads) - target_link_libraries(OSDependent Threads::Threads) -endif() +set(THREADS_PREFER_PTHREAD_FLAG ON) +find_package(Threads REQUIRED) +target_link_libraries(OSDependent Threads::Threads) if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) install(TARGETS OSDependent EXPORT glslang-targets) From 45405e1d942e7af1a1f2fad94a8b9ddf2600af0d Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Sat, 25 Mar 2023 11:00:27 -0500 Subject: [PATCH 161/594] Add a .mailmap file This will make my name and e-mail address remap properly in command-line Git tools. --- .mailmap | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .mailmap diff --git a/.mailmap b/.mailmap new file mode 100644 index 0000000000..946b24095f --- /dev/null +++ b/.mailmap @@ -0,0 +1,3 @@ +Faith Ekstrand +Faith Ekstrand +Faith Ekstrand From 2aca6d419c76e4aa14dbd75b944e1e71a327d88a Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 31 Mar 2023 17:01:56 -0600 Subject: [PATCH 162/594] Refactor Builder::createTextureCall() to use std::vector Use a temporary std::vector to accumulate arguments, rather than a stack-allocated array with a fixed size. This is safer and more future-proof. --- SPIRV/SpvBuilder.cpp | 50 ++++++++++++++++++++------------------------ 1 file changed, 23 insertions(+), 27 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 764a88602e..da194e99ad 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2758,52 +2758,49 @@ Id Builder::createBuiltinCall(Id resultType, Id builtins, int entryPoint, const Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, bool fetch, bool proj, bool gather, bool noImplicitLod, const TextureParameters& parameters, ImageOperandsMask signExtensionMask) { - static const int maxTextureArgs = 10; - Id texArgs[maxTextureArgs] = {}; + std::vector texArgs; // // Set up the fixed arguments // - int numArgs = 0; bool explicitLod = false; - texArgs[numArgs++] = parameters.sampler; - texArgs[numArgs++] = parameters.coords; + texArgs.push_back(parameters.sampler); + texArgs.push_back(parameters.coords); if (parameters.Dref != NoResult) - texArgs[numArgs++] = parameters.Dref; + texArgs.push_back(parameters.Dref); if (parameters.component != NoResult) - texArgs[numArgs++] = parameters.component; + texArgs.push_back(parameters.component); #ifndef GLSLANG_WEB if (parameters.granularity != NoResult) - texArgs[numArgs++] = parameters.granularity; + texArgs.push_back(parameters.granularity); if (parameters.coarse != NoResult) - texArgs[numArgs++] = parameters.coarse; + texArgs.push_back(parameters.coarse); #endif // // Set up the optional arguments // - int optArgNum = numArgs; // track which operand, if it exists, is the mask of optional arguments - ++numArgs; // speculatively make room for the mask operand + size_t optArgNum = texArgs.size(); // the position of the mask for the optional arguments, if any. ImageOperandsMask mask = ImageOperandsMaskNone; // the mask operand if (parameters.bias) { mask = (ImageOperandsMask)(mask | ImageOperandsBiasMask); - texArgs[numArgs++] = parameters.bias; + texArgs.push_back(parameters.bias); } if (parameters.lod) { mask = (ImageOperandsMask)(mask | ImageOperandsLodMask); - texArgs[numArgs++] = parameters.lod; + texArgs.push_back(parameters.lod); explicitLod = true; } else if (parameters.gradX) { mask = (ImageOperandsMask)(mask | ImageOperandsGradMask); - texArgs[numArgs++] = parameters.gradX; - texArgs[numArgs++] = parameters.gradY; + texArgs.push_back(parameters.gradX); + texArgs.push_back(parameters.gradY); explicitLod = true; } else if (noImplicitLod && ! fetch && ! gather) { // have to explicitly use lod of 0 if not allowed to have them be implicit, and // we would otherwise be about to issue an implicit instruction mask = (ImageOperandsMask)(mask | ImageOperandsLodMask); - texArgs[numArgs++] = makeFloatConstant(0.0); + texArgs.push_back(makeFloatConstant(0.0)); explicitLod = true; } if (parameters.offset) { @@ -2813,24 +2810,24 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, addCapability(CapabilityImageGatherExtended); mask = (ImageOperandsMask)(mask | ImageOperandsOffsetMask); } - texArgs[numArgs++] = parameters.offset; + texArgs.push_back(parameters.offset); } if (parameters.offsets) { addCapability(CapabilityImageGatherExtended); mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask); - texArgs[numArgs++] = parameters.offsets; + texArgs.push_back(parameters.offsets); } #ifndef GLSLANG_WEB if (parameters.sample) { mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask); - texArgs[numArgs++] = parameters.sample; + texArgs.push_back(parameters.sample); } if (parameters.lodClamp) { // capability if this bit is used addCapability(CapabilityMinLod); mask = (ImageOperandsMask)(mask | ImageOperandsMinLodMask); - texArgs[numArgs++] = parameters.lodClamp; + texArgs.push_back(parameters.lodClamp); } if (parameters.nonprivate) { mask = mask | ImageOperandsNonPrivateTexelKHRMask; @@ -2840,10 +2837,9 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, } #endif mask = mask | signExtensionMask; - if (mask == ImageOperandsMaskNone) - --numArgs; // undo speculative reservation for the mask argument - else - texArgs[optArgNum] = mask; + // insert the operand for the mask, if any bits were set. + if (mask != ImageOperandsMaskNone) + texArgs.insert(texArgs.begin() + optArgNum, mask); // // Set up the instruction @@ -2947,11 +2943,11 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, // Build the SPIR-V instruction Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode); - for (int op = 0; op < optArgNum; ++op) + for (size_t op = 0; op < optArgNum; ++op) textureInst->addIdOperand(texArgs[op]); - if (optArgNum < numArgs) + if (optArgNum < texArgs.size()) textureInst->addImmediateOperand(texArgs[optArgNum]); - for (int op = optArgNum + 1; op < numArgs; ++op) + for (size_t op = optArgNum + 1; op < texArgs.size(); ++op) textureInst->addIdOperand(texArgs[op]); setPrecision(textureInst->getResultId(), precision); buildPoint->addInstruction(std::unique_ptr(textureInst)); From fbabd37acafc5d422a2c176db6b132dff3087622 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 31 Mar 2023 17:07:37 -0600 Subject: [PATCH 163/594] Remove a redundant condition in an if statement This was added erroneously in commit 12bc9aa9c. --- glslang/HLSL/hlslParseHelper.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 6e0d314aef..48989f0231 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -7565,7 +7565,6 @@ const TFunction* HlslParseContext::findFunction(const TSourceLoc& loc, TFunction candidateList[0]->getBuiltInOp() == EOpMethodRestartStrip || candidateList[0]->getBuiltInOp() == EOpMethodIncrementCounter || candidateList[0]->getBuiltInOp() == EOpMethodDecrementCounter || - candidateList[0]->getBuiltInOp() == EOpMethodAppend || candidateList[0]->getBuiltInOp() == EOpMethodConsume)) { return candidateList[0]; } From f8a2442a165834d948cf3364a0e3816fcbc89ab9 Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Tue, 14 Mar 2023 10:36:24 -0700 Subject: [PATCH 164/594] Improve line info for symbol access and assignment --- SPIRV/GlslangToSpv.cpp | 7 + Test/baseResults/spv.debugInfo.1.1.frag.out | 505 ++++++++++++------- Test/baseResults/spv.debugInfo.frag.out | 507 +++++++++++++------- Test/spv.debugInfo.frag | 31 ++ 4 files changed, 683 insertions(+), 367 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 713db67dfc..1a271e27c2 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2004,6 +2004,10 @@ void TGlslangToSpvTraverser::dumpSpv(std::vector& out) // void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) { + // We update the line information even though no code might be generated here + // This is helpful to yield correct lines for control flow instructions + builder.setLine(symbol->getLoc().line, symbol->getLoc().getFilename()); + SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (symbol->getType().isStruct()) glslangTypeToIdMap[symbol->getType().getStruct()] = symbol->getId(); @@ -2155,6 +2159,9 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T node->getRight()->traverse(this); spv::Id rValue = accessChainLoad(node->getRight()->getType()); + // reset line number for assignment + builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + if (node->getOp() != glslang::EOpAssign) { // the left is also an r-value builder.setAccessChain(lValue); diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index 67175de96a..127267560e 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -1,12 +1,12 @@ spv.debugInfo.frag // Module Version 10300 // Generated by (magic number): 8000b -// Id's are bound by 124 +// Id's are bound by 187 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 5 "main" 24 52 + EntryPoint Fragment 5 "main" 30 104 ExecutionMode 5 OriginUpperLeft 1: String "spv.debugInfo.frag" Source GLSL 450 1 "#version 450 @@ -36,9 +36,40 @@ vec4 foo(S s) return r; } +float testBranch(float x, float y) +{ + float result = 0; + bool b = x > 0; + + // branch with load + if (b) { + result += 1; + } + else { + result -= 1; + } + + // branch with expression + if (x > y) { + result += x - y; + } + + // selection with load + result += b ? + 1 : -1; + + // selection with expression + result += x < y ? + y : + float(b); + + return result; +} + void main() { outv = foo(s); + outv += testBranch(inv.x, inv.y); outv += texture(s2d, vec2(0.5)); switch (s.a) { @@ -66,17 +97,24 @@ void main() MemberName 8(S) 0 "a" Name 14 "foo(struct-S-i11;" Name 13 "s" - Name 17 "r" - Name 24 "inv" - Name 52 "outv" - Name 53 "S" - MemberName 53(S) 0 "a" - Name 54 "ubuf" - MemberName 54(ubuf) 0 "s" - Name 56 "" - Name 57 "param" - Name 67 "s2d" - Name 97 "i" + Name 20 "testBranch(f1;f1;" + Name 18 "x" + Name 19 "y" + Name 23 "r" + Name 30 "inv" + Name 56 "result" + Name 59 "b" + Name 104 "outv" + Name 105 "S" + MemberName 105(S) 0 "a" + Name 106 "ubuf" + MemberName 106(ubuf) 0 "s" + Name 108 "" + Name 109 "param" + Name 116 "param" + Name 120 "param" + Name 131 "s2d" + Name 161 "i" ModuleProcessed "no-storage-format" ModuleProcessed "resource-set-binding 3" ModuleProcessed "auto-map-bindings" @@ -88,15 +126,15 @@ void main() ModuleProcessed "suppress-warnings" ModuleProcessed "hlsl-offsets" ModuleProcessed "entry-point main" - Decorate 24(inv) Location 0 - Decorate 52(outv) Location 0 - MemberDecorate 53(S) 0 Offset 0 - MemberDecorate 54(ubuf) 0 Offset 0 - Decorate 54(ubuf) Block - Decorate 56 DescriptorSet 3 - Decorate 56 Binding 0 - Decorate 67(s2d) DescriptorSet 3 - Decorate 67(s2d) Binding 1 + Decorate 30(inv) Location 0 + Decorate 104(outv) Location 0 + MemberDecorate 105(S) 0 Offset 0 + MemberDecorate 106(ubuf) 0 Offset 0 + Decorate 106(ubuf) Block + Decorate 108 DescriptorSet 3 + Decorate 108 Binding 0 + Decorate 131(s2d) DescriptorSet 3 + Decorate 131(s2d) Binding 1 3: TypeVoid 4: TypeFunction 3 7: TypeInt 32 1 @@ -105,179 +143,280 @@ void main() 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypeFunction 11(fvec4) 9(ptr) - 16: TypePointer Function 11(fvec4) - 18: 7(int) Constant 0 - 19: TypePointer Function 7(int) - 23: TypePointer Input 11(fvec4) - 24(inv): 23(ptr) Variable Input - 28: 10(float) Constant 1065353216 - 31: TypeInt 32 0 - 32: 31(int) Constant 0 - 33: TypePointer Function 10(float) - 36: 10(float) Constant 1077936128 - 37: TypeBool - 45: 10(float) Constant 1073741824 - 51: TypePointer Output 11(fvec4) - 52(outv): 51(ptr) Variable Output - 53(S): TypeStruct 7(int) - 54(ubuf): TypeStruct 53(S) - 55: TypePointer Uniform 54(ubuf) - 56: 55(ptr) Variable Uniform - 58: TypePointer Uniform 53(S) - 64: TypeImage 10(float) 2D sampled format:Unknown - 65: TypeSampledImage 64 - 66: TypePointer UniformConstant 65 - 67(s2d): 66(ptr) Variable UniformConstant - 69: TypeVector 10(float) 2 - 70: 10(float) Constant 1056964608 - 71: 69(fvec2) ConstantComposite 70 70 - 75: TypePointer Uniform 7(int) - 104: 7(int) Constant 10 - 109: 7(int) Constant 1 - 111: TypePointer Output 10(float) - 114: 10(float) Constant 1092616192 - Line 1 28 11 + 16: TypePointer Function 10(float) + 17: TypeFunction 10(float) 16(ptr) 16(ptr) + 22: TypePointer Function 11(fvec4) + 24: 7(int) Constant 0 + 25: TypePointer Function 7(int) + 29: TypePointer Input 11(fvec4) + 30(inv): 29(ptr) Variable Input + 34: 10(float) Constant 1065353216 + 37: TypeInt 32 0 + 38: 37(int) Constant 0 + 41: 10(float) Constant 1077936128 + 42: TypeBool + 50: 10(float) Constant 1073741824 + 57: 10(float) Constant 0 + 58: TypePointer Function 42(bool) + 81: 7(int) Constant 1 + 82: 7(int) Constant 4294967295 + 103: TypePointer Output 11(fvec4) + 104(outv): 103(ptr) Variable Output + 105(S): TypeStruct 7(int) + 106(ubuf): TypeStruct 105(S) + 107: TypePointer Uniform 106(ubuf) + 108: 107(ptr) Variable Uniform + 110: TypePointer Uniform 105(S) + 117: TypePointer Input 10(float) + 121: 37(int) Constant 1 + 128: TypeImage 10(float) 2D sampled format:Unknown + 129: TypeSampledImage 128 + 130: TypePointer UniformConstant 129 + 131(s2d): 130(ptr) Variable UniformConstant + 133: TypeVector 10(float) 2 + 134: 10(float) Constant 1056964608 + 135: 133(fvec2) ConstantComposite 134 134 + 139: TypePointer Uniform 7(int) + 168: 7(int) Constant 10 + 174: TypePointer Output 10(float) + 177: 10(float) Constant 1092616192 + Line 1 58 11 5(main): 3 Function None 4 6: Label - 57(param): 9(ptr) Variable Function - 97(i): 19(ptr) Variable Function - 116: 16(ptr) Variable Function - Line 1 30 0 - 59: 58(ptr) AccessChain 56 18 - 60: 53(S) Load 59 - 61: 7(int) CompositeExtract 60 0 - 62: 19(ptr) AccessChain 57(param) 18 - Store 62 61 - 63: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param) - Store 52(outv) 63 - Line 1 31 0 - 68: 65 Load 67(s2d) - 72: 11(fvec4) ImageSampleImplicitLod 68 71 - 73: 11(fvec4) Load 52(outv) - 74: 11(fvec4) FAdd 73 72 - Store 52(outv) 74 - Line 1 33 0 - 76: 75(ptr) AccessChain 56 18 18 - 77: 7(int) Load 76 - SelectionMerge 81 None - Switch 77 80 - case 10: 78 - case 20: 79 - 80: Label - Line 1 42 0 - 92: 11(fvec4) Load 52(outv) - 93: 11(fvec4) CompositeConstruct 28 28 28 28 - 94: 11(fvec4) FSub 92 93 - Store 52(outv) 94 - Line 1 43 0 - Branch 81 - 78: Label - Line 1 35 0 - 82: 11(fvec4) Load 52(outv) - 83: 11(fvec4) CompositeConstruct 28 28 28 28 - 84: 11(fvec4) FAdd 82 83 - Store 52(outv) 84 - Line 1 36 0 - Branch 81 - 79: Label - Line 1 38 0 - 86: 11(fvec4) Load 52(outv) - 87: 11(fvec4) VectorTimesScalar 86 45 - Store 52(outv) 87 - Line 1 39 0 - 88: 11(fvec4) Load 52(outv) - 89: 11(fvec4) CompositeConstruct 28 28 28 28 - 90: 11(fvec4) FAdd 88 89 - Store 52(outv) 90 - Line 1 40 0 - Branch 81 - 81: Label - Line 1 46 0 - Store 97(i) 18 - Branch 98 - 98: Label - Line 1 46 0 - LoopMerge 100 101 None - Branch 102 - 102: Label - Line 1 46 0 - 103: 7(int) Load 97(i) - 105: 37(bool) SLessThan 103 104 - BranchConditional 105 99 100 - 99: Label - Line 1 47 0 - 106: 11(fvec4) Load 52(outv) - 107: 11(fvec4) VectorTimesScalar 106 36 - Store 52(outv) 107 - Branch 101 - 101: Label - Line 1 46 0 - 108: 7(int) Load 97(i) - 110: 7(int) IAdd 108 109 - Store 97(i) 110 - Branch 98 - 100: Label - Line 1 49 0 - 112: 111(ptr) AccessChain 52(outv) 32 - 113: 10(float) Load 112 - 115: 37(bool) FOrdLessThan 113 114 - SelectionMerge 118 None - BranchConditional 115 117 121 - 117: Label - Line 1 50 0 - 119: 11(fvec4) Load 52(outv) - 120: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 119 - Store 52(outv) 120 - Store 116 120 - Branch 118 - 121: Label - Line 1 51 0 - 122: 11(fvec4) Load 52(outv) - 123: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 122 - Store 52(outv) 123 - Store 116 123 - Branch 118 - 118: Label + 109(param): 9(ptr) Variable Function + 116(param): 16(ptr) Variable Function + 120(param): 16(ptr) Variable Function + 161(i): 25(ptr) Variable Function + 179: 22(ptr) Variable Function + Line 1 60 0 + 111: 110(ptr) AccessChain 108 24 + 112: 105(S) Load 111 + 113: 7(int) CompositeExtract 112 0 + 114: 25(ptr) AccessChain 109(param) 24 + Store 114 113 + 115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param) + Store 104(outv) 115 + Line 1 61 0 + 118: 117(ptr) AccessChain 30(inv) 38 + 119: 10(float) Load 118 + Store 116(param) 119 + 122: 117(ptr) AccessChain 30(inv) 121 + 123: 10(float) Load 122 + Store 120(param) 123 + 124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param) + 125: 11(fvec4) Load 104(outv) + 126: 11(fvec4) CompositeConstruct 124 124 124 124 + 127: 11(fvec4) FAdd 125 126 + Store 104(outv) 127 + Line 1 62 0 + 132: 129 Load 131(s2d) + 136: 11(fvec4) ImageSampleImplicitLod 132 135 + 137: 11(fvec4) Load 104(outv) + 138: 11(fvec4) FAdd 137 136 + Store 104(outv) 138 + Line 1 64 0 + 140: 139(ptr) AccessChain 108 24 24 + 141: 7(int) Load 140 + SelectionMerge 145 None + Switch 141 144 + case 10: 142 + case 20: 143 + 144: Label + Line 1 73 0 + 156: 11(fvec4) Load 104(outv) + 157: 11(fvec4) CompositeConstruct 34 34 34 34 + 158: 11(fvec4) FSub 156 157 + Store 104(outv) 158 + Line 1 74 0 + Branch 145 + 142: Label + Line 1 66 0 + 146: 11(fvec4) Load 104(outv) + 147: 11(fvec4) CompositeConstruct 34 34 34 34 + 148: 11(fvec4) FAdd 146 147 + Store 104(outv) 148 + Line 1 67 0 + Branch 145 + 143: Label + Line 1 69 0 + 150: 11(fvec4) Load 104(outv) + 151: 11(fvec4) VectorTimesScalar 150 50 + Store 104(outv) 151 + Line 1 70 0 + 152: 11(fvec4) Load 104(outv) + 153: 11(fvec4) CompositeConstruct 34 34 34 34 + 154: 11(fvec4) FAdd 152 153 + Store 104(outv) 154 + Line 1 71 0 + Branch 145 + 145: Label + Line 1 77 0 + Store 161(i) 24 + Branch 162 + 162: Label + Line 1 77 0 + LoopMerge 164 165 None + Branch 166 + 166: Label + Line 1 77 0 + 167: 7(int) Load 161(i) + 169: 42(bool) SLessThan 167 168 + BranchConditional 169 163 164 + 163: Label + Line 1 78 0 + 170: 11(fvec4) Load 104(outv) + 171: 11(fvec4) VectorTimesScalar 170 41 + Store 104(outv) 171 + Branch 165 + 165: Label + Line 1 77 0 + 172: 7(int) Load 161(i) + 173: 7(int) IAdd 172 81 + Store 161(i) 173 + Branch 162 + 164: Label + Line 1 80 0 + 175: 174(ptr) AccessChain 104(outv) 38 + 176: 10(float) Load 175 + 178: 42(bool) FOrdLessThan 176 177 + SelectionMerge 181 None + BranchConditional 178 180 184 + 180: Label + Line 1 81 0 + 182: 11(fvec4) Load 104(outv) + 183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182 + Store 104(outv) 183 + Store 179 183 + Branch 181 + 184: Label + Line 1 82 0 + 185: 11(fvec4) Load 104(outv) + 186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185 + Store 104(outv) 186 + Store 179 186 + Branch 181 + 181: Label Return FunctionEnd Line 1 16 13 14(foo(struct-S-i11;): 11(fvec4) Function None 12 13(s): 9(ptr) FunctionParameter 15: Label - 17(r): 16(ptr) Variable Function + 23(r): 22(ptr) Variable Function Line 1 18 0 - 20: 19(ptr) AccessChain 13(s) 18 - 21: 7(int) Load 20 - 22: 10(float) ConvertSToF 21 - 25: 11(fvec4) Load 24(inv) - 26: 11(fvec4) VectorTimesScalar 25 22 - Store 17(r) 26 + 26: 25(ptr) AccessChain 13(s) 24 + 27: 7(int) Load 26 + 28: 10(float) ConvertSToF 27 + 31: 11(fvec4) Load 30(inv) + 32: 11(fvec4) VectorTimesScalar 31 28 + Store 23(r) 32 Line 1 19 0 - 27: 11(fvec4) Load 17(r) - 29: 11(fvec4) CompositeConstruct 28 28 28 28 - 30: 11(fvec4) FAdd 27 29 - Store 17(r) 30 + 33: 11(fvec4) Load 23(r) + 35: 11(fvec4) CompositeConstruct 34 34 34 34 + 36: 11(fvec4) FAdd 33 35 + Store 23(r) 36 Line 1 20 0 - 34: 33(ptr) AccessChain 17(r) 32 - 35: 10(float) Load 34 - 38: 37(bool) FOrdGreaterThan 35 36 - SelectionMerge 40 None - BranchConditional 38 39 44 - 39: Label - Line 1 21 0 - 41: 11(fvec4) Load 17(r) - 42: 11(fvec4) CompositeConstruct 28 28 28 28 - 43: 11(fvec4) FSub 41 42 - Store 17(r) 43 - Branch 40 + 39: 16(ptr) AccessChain 23(r) 38 + 40: 10(float) Load 39 + 43: 42(bool) FOrdGreaterThan 40 41 + SelectionMerge 45 None + BranchConditional 43 44 49 44: Label + Line 1 21 0 + 46: 11(fvec4) Load 23(r) + 47: 11(fvec4) CompositeConstruct 34 34 34 34 + 48: 11(fvec4) FSub 46 47 + Store 23(r) 48 + Branch 45 + 49: Label Line 1 23 0 - 46: 11(fvec4) Load 17(r) - 47: 11(fvec4) VectorTimesScalar 46 45 - Store 17(r) 47 - Branch 40 - 40: Label + 51: 11(fvec4) Load 23(r) + 52: 11(fvec4) VectorTimesScalar 51 50 + Store 23(r) 52 + Branch 45 + 45: Label Line 1 25 0 - 48: 11(fvec4) Load 17(r) - ReturnValue 48 + 53: 11(fvec4) Load 23(r) + ReturnValue 53 + FunctionEnd + Line 1 28 34 +20(testBranch(f1;f1;): 10(float) Function None 17 + 18(x): 16(ptr) FunctionParameter + 19(y): 16(ptr) FunctionParameter + 21: Label + 56(result): 16(ptr) Variable Function + 59(b): 58(ptr) Variable Function + 90: 16(ptr) Variable Function + Line 1 30 0 + Store 56(result) 57 + Line 1 31 0 + 60: 10(float) Load 18(x) + 61: 42(bool) FOrdGreaterThan 60 57 + Store 59(b) 61 + Line 1 34 0 + 62: 42(bool) Load 59(b) + SelectionMerge 64 None + BranchConditional 62 63 67 + 63: Label + Line 1 35 0 + 65: 10(float) Load 56(result) + 66: 10(float) FAdd 65 34 + Store 56(result) 66 + Branch 64 + 67: Label + Line 1 38 0 + 68: 10(float) Load 56(result) + 69: 10(float) FSub 68 34 + Store 56(result) 69 + Branch 64 + 64: Label + Line 1 42 0 + 70: 10(float) Load 18(x) + 71: 10(float) Load 19(y) + 72: 42(bool) FOrdGreaterThan 70 71 + SelectionMerge 74 None + BranchConditional 72 73 74 + 73: Label + Line 1 43 0 + 75: 10(float) Load 18(x) + 76: 10(float) Load 19(y) + 77: 10(float) FSub 75 76 + 78: 10(float) Load 56(result) + 79: 10(float) FAdd 78 77 + Store 56(result) 79 + Branch 74 + 74: Label + Line 1 47 0 + 80: 42(bool) Load 59(b) + 83: 7(int) Select 80 81 82 + 84: 10(float) ConvertSToF 83 + 85: 10(float) Load 56(result) + 86: 10(float) FAdd 85 84 + Store 56(result) 86 + Line 1 51 0 + 87: 10(float) Load 18(x) + 88: 10(float) Load 19(y) + 89: 42(bool) FOrdLessThan 87 88 + SelectionMerge 92 None + BranchConditional 89 91 94 + 91: Label + Line 1 52 0 + 93: 10(float) Load 19(y) + Store 90 93 + Branch 92 + 94: Label + Line 1 53 0 + 95: 42(bool) Load 59(b) + 96: 10(float) Select 95 34 57 + Store 90 96 + Branch 92 + 92: Label + 97: 10(float) Load 90 + Line 1 51 0 + 98: 10(float) Load 56(result) + 99: 10(float) FAdd 98 97 + Store 56(result) 99 + Line 1 55 0 + 100: 10(float) Load 56(result) + ReturnValue 100 FunctionEnd diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index b9eb496a26..8bacd74d9a 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -1,12 +1,12 @@ spv.debugInfo.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 124 +// Id's are bound by 187 Capability Shader 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 5 "main" 24 52 + EntryPoint Fragment 5 "main" 30 104 ExecutionMode 5 OriginLowerLeft 1: String "spv.debugInfo.frag" Source GLSL 450 1 "// OpModuleProcessed no-storage-format @@ -47,9 +47,40 @@ vec4 foo(S s) return r; } +float testBranch(float x, float y) +{ + float result = 0; + bool b = x > 0; + + // branch with load + if (b) { + result += 1; + } + else { + result -= 1; + } + + // branch with expression + if (x > y) { + result += x - y; + } + + // selection with load + result += b ? + 1 : -1; + + // selection with expression + result += x < y ? + y : + float(b); + + return result; +} + void main() { outv = foo(s); + outv += testBranch(inv.x, inv.y); outv += texture(s2d, vec2(0.5)); switch (s.a) { @@ -77,27 +108,34 @@ void main() MemberName 8(S) 0 "a" Name 14 "foo(struct-S-i11;" Name 13 "s" - Name 17 "r" - Name 24 "inv" - Name 52 "outv" - Name 53 "S" - MemberName 53(S) 0 "a" - Name 54 "ubuf" - MemberName 54(ubuf) 0 "s" - Name 56 "" - Name 57 "param" - Name 67 "s2d" - Name 97 "i" - Decorate 24(inv) Location 0 - Decorate 52(outv) Location 0 - MemberDecorate 53(S) 0 Offset 0 - MemberDecorate 54(ubuf) 0 Offset 0 - Decorate 54(ubuf) Block - Decorate 56 DescriptorSet 3 - Decorate 56 Binding 0 - Decorate 67(s2d) Location 0 - Decorate 67(s2d) DescriptorSet 3 - Decorate 67(s2d) Binding 1 + Name 20 "testBranch(f1;f1;" + Name 18 "x" + Name 19 "y" + Name 23 "r" + Name 30 "inv" + Name 56 "result" + Name 59 "b" + Name 104 "outv" + Name 105 "S" + MemberName 105(S) 0 "a" + Name 106 "ubuf" + MemberName 106(ubuf) 0 "s" + Name 108 "" + Name 109 "param" + Name 116 "param" + Name 120 "param" + Name 131 "s2d" + Name 161 "i" + Decorate 30(inv) Location 0 + Decorate 104(outv) Location 0 + MemberDecorate 105(S) 0 Offset 0 + MemberDecorate 106(ubuf) 0 Offset 0 + Decorate 106(ubuf) Block + Decorate 108 DescriptorSet 3 + Decorate 108 Binding 0 + Decorate 131(s2d) Location 0 + Decorate 131(s2d) DescriptorSet 3 + Decorate 131(s2d) Binding 1 3: TypeVoid 4: TypeFunction 3 7: TypeInt 32 1 @@ -106,179 +144,280 @@ void main() 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypeFunction 11(fvec4) 9(ptr) - 16: TypePointer Function 11(fvec4) - 18: 7(int) Constant 0 - 19: TypePointer Function 7(int) - 23: TypePointer Input 11(fvec4) - 24(inv): 23(ptr) Variable Input - 28: 10(float) Constant 1065353216 - 31: TypeInt 32 0 - 32: 31(int) Constant 0 - 33: TypePointer Function 10(float) - 36: 10(float) Constant 1077936128 - 37: TypeBool - 45: 10(float) Constant 1073741824 - 51: TypePointer Output 11(fvec4) - 52(outv): 51(ptr) Variable Output - 53(S): TypeStruct 7(int) - 54(ubuf): TypeStruct 53(S) - 55: TypePointer Uniform 54(ubuf) - 56: 55(ptr) Variable Uniform - 58: TypePointer Uniform 53(S) - 64: TypeImage 10(float) 2D sampled format:Unknown - 65: TypeSampledImage 64 - 66: TypePointer UniformConstant 65 - 67(s2d): 66(ptr) Variable UniformConstant - 69: TypeVector 10(float) 2 - 70: 10(float) Constant 1056964608 - 71: 69(fvec2) ConstantComposite 70 70 - 75: TypePointer Uniform 7(int) - 104: 7(int) Constant 10 - 109: 7(int) Constant 1 - 111: TypePointer Output 10(float) - 114: 10(float) Constant 1092616192 - Line 1 28 11 + 16: TypePointer Function 10(float) + 17: TypeFunction 10(float) 16(ptr) 16(ptr) + 22: TypePointer Function 11(fvec4) + 24: 7(int) Constant 0 + 25: TypePointer Function 7(int) + 29: TypePointer Input 11(fvec4) + 30(inv): 29(ptr) Variable Input + 34: 10(float) Constant 1065353216 + 37: TypeInt 32 0 + 38: 37(int) Constant 0 + 41: 10(float) Constant 1077936128 + 42: TypeBool + 50: 10(float) Constant 1073741824 + 57: 10(float) Constant 0 + 58: TypePointer Function 42(bool) + 81: 7(int) Constant 1 + 82: 7(int) Constant 4294967295 + 103: TypePointer Output 11(fvec4) + 104(outv): 103(ptr) Variable Output + 105(S): TypeStruct 7(int) + 106(ubuf): TypeStruct 105(S) + 107: TypePointer Uniform 106(ubuf) + 108: 107(ptr) Variable Uniform + 110: TypePointer Uniform 105(S) + 117: TypePointer Input 10(float) + 121: 37(int) Constant 1 + 128: TypeImage 10(float) 2D sampled format:Unknown + 129: TypeSampledImage 128 + 130: TypePointer UniformConstant 129 + 131(s2d): 130(ptr) Variable UniformConstant + 133: TypeVector 10(float) 2 + 134: 10(float) Constant 1056964608 + 135: 133(fvec2) ConstantComposite 134 134 + 139: TypePointer Uniform 7(int) + 168: 7(int) Constant 10 + 174: TypePointer Output 10(float) + 177: 10(float) Constant 1092616192 + Line 1 58 11 5(main): 3 Function None 4 6: Label - 57(param): 9(ptr) Variable Function - 97(i): 19(ptr) Variable Function - 116: 16(ptr) Variable Function - Line 1 30 0 - 59: 58(ptr) AccessChain 56 18 - 60: 53(S) Load 59 - 61: 7(int) CompositeExtract 60 0 - 62: 19(ptr) AccessChain 57(param) 18 - Store 62 61 - 63: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 57(param) - Store 52(outv) 63 - Line 1 31 0 - 68: 65 Load 67(s2d) - 72: 11(fvec4) ImageSampleImplicitLod 68 71 - 73: 11(fvec4) Load 52(outv) - 74: 11(fvec4) FAdd 73 72 - Store 52(outv) 74 - Line 1 33 0 - 76: 75(ptr) AccessChain 56 18 18 - 77: 7(int) Load 76 - SelectionMerge 81 None - Switch 77 80 - case 10: 78 - case 20: 79 - 80: Label - Line 1 42 0 - 92: 11(fvec4) Load 52(outv) - 93: 11(fvec4) CompositeConstruct 28 28 28 28 - 94: 11(fvec4) FSub 92 93 - Store 52(outv) 94 - Line 1 43 0 - Branch 81 - 78: Label - Line 1 35 0 - 82: 11(fvec4) Load 52(outv) - 83: 11(fvec4) CompositeConstruct 28 28 28 28 - 84: 11(fvec4) FAdd 82 83 - Store 52(outv) 84 - Line 1 36 0 - Branch 81 - 79: Label - Line 1 38 0 - 86: 11(fvec4) Load 52(outv) - 87: 11(fvec4) VectorTimesScalar 86 45 - Store 52(outv) 87 - Line 1 39 0 - 88: 11(fvec4) Load 52(outv) - 89: 11(fvec4) CompositeConstruct 28 28 28 28 - 90: 11(fvec4) FAdd 88 89 - Store 52(outv) 90 - Line 1 40 0 - Branch 81 - 81: Label - Line 1 46 0 - Store 97(i) 18 - Branch 98 - 98: Label - Line 1 46 0 - LoopMerge 100 101 None - Branch 102 - 102: Label - Line 1 46 0 - 103: 7(int) Load 97(i) - 105: 37(bool) SLessThan 103 104 - BranchConditional 105 99 100 - 99: Label - Line 1 47 0 - 106: 11(fvec4) Load 52(outv) - 107: 11(fvec4) VectorTimesScalar 106 36 - Store 52(outv) 107 - Branch 101 - 101: Label - Line 1 46 0 - 108: 7(int) Load 97(i) - 110: 7(int) IAdd 108 109 - Store 97(i) 110 - Branch 98 - 100: Label - Line 1 49 0 - 112: 111(ptr) AccessChain 52(outv) 32 - 113: 10(float) Load 112 - 115: 37(bool) FOrdLessThan 113 114 - SelectionMerge 118 None - BranchConditional 115 117 121 - 117: Label - Line 1 50 0 - 119: 11(fvec4) Load 52(outv) - 120: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 119 - Store 52(outv) 120 - Store 116 120 - Branch 118 - 121: Label - Line 1 51 0 - 122: 11(fvec4) Load 52(outv) - 123: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 122 - Store 52(outv) 123 - Store 116 123 - Branch 118 - 118: Label + 109(param): 9(ptr) Variable Function + 116(param): 16(ptr) Variable Function + 120(param): 16(ptr) Variable Function + 161(i): 25(ptr) Variable Function + 179: 22(ptr) Variable Function + Line 1 60 0 + 111: 110(ptr) AccessChain 108 24 + 112: 105(S) Load 111 + 113: 7(int) CompositeExtract 112 0 + 114: 25(ptr) AccessChain 109(param) 24 + Store 114 113 + 115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param) + Store 104(outv) 115 + Line 1 61 0 + 118: 117(ptr) AccessChain 30(inv) 38 + 119: 10(float) Load 118 + Store 116(param) 119 + 122: 117(ptr) AccessChain 30(inv) 121 + 123: 10(float) Load 122 + Store 120(param) 123 + 124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param) + 125: 11(fvec4) Load 104(outv) + 126: 11(fvec4) CompositeConstruct 124 124 124 124 + 127: 11(fvec4) FAdd 125 126 + Store 104(outv) 127 + Line 1 62 0 + 132: 129 Load 131(s2d) + 136: 11(fvec4) ImageSampleImplicitLod 132 135 + 137: 11(fvec4) Load 104(outv) + 138: 11(fvec4) FAdd 137 136 + Store 104(outv) 138 + Line 1 64 0 + 140: 139(ptr) AccessChain 108 24 24 + 141: 7(int) Load 140 + SelectionMerge 145 None + Switch 141 144 + case 10: 142 + case 20: 143 + 144: Label + Line 1 73 0 + 156: 11(fvec4) Load 104(outv) + 157: 11(fvec4) CompositeConstruct 34 34 34 34 + 158: 11(fvec4) FSub 156 157 + Store 104(outv) 158 + Line 1 74 0 + Branch 145 + 142: Label + Line 1 66 0 + 146: 11(fvec4) Load 104(outv) + 147: 11(fvec4) CompositeConstruct 34 34 34 34 + 148: 11(fvec4) FAdd 146 147 + Store 104(outv) 148 + Line 1 67 0 + Branch 145 + 143: Label + Line 1 69 0 + 150: 11(fvec4) Load 104(outv) + 151: 11(fvec4) VectorTimesScalar 150 50 + Store 104(outv) 151 + Line 1 70 0 + 152: 11(fvec4) Load 104(outv) + 153: 11(fvec4) CompositeConstruct 34 34 34 34 + 154: 11(fvec4) FAdd 152 153 + Store 104(outv) 154 + Line 1 71 0 + Branch 145 + 145: Label + Line 1 77 0 + Store 161(i) 24 + Branch 162 + 162: Label + Line 1 77 0 + LoopMerge 164 165 None + Branch 166 + 166: Label + Line 1 77 0 + 167: 7(int) Load 161(i) + 169: 42(bool) SLessThan 167 168 + BranchConditional 169 163 164 + 163: Label + Line 1 78 0 + 170: 11(fvec4) Load 104(outv) + 171: 11(fvec4) VectorTimesScalar 170 41 + Store 104(outv) 171 + Branch 165 + 165: Label + Line 1 77 0 + 172: 7(int) Load 161(i) + 173: 7(int) IAdd 172 81 + Store 161(i) 173 + Branch 162 + 164: Label + Line 1 80 0 + 175: 174(ptr) AccessChain 104(outv) 38 + 176: 10(float) Load 175 + 178: 42(bool) FOrdLessThan 176 177 + SelectionMerge 181 None + BranchConditional 178 180 184 + 180: Label + Line 1 81 0 + 182: 11(fvec4) Load 104(outv) + 183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182 + Store 104(outv) 183 + Store 179 183 + Branch 181 + 184: Label + Line 1 82 0 + 185: 11(fvec4) Load 104(outv) + 186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185 + Store 104(outv) 186 + Store 179 186 + Branch 181 + 181: Label Return FunctionEnd Line 1 16 13 14(foo(struct-S-i11;): 11(fvec4) Function None 12 13(s): 9(ptr) FunctionParameter 15: Label - 17(r): 16(ptr) Variable Function + 23(r): 22(ptr) Variable Function Line 1 18 0 - 20: 19(ptr) AccessChain 13(s) 18 - 21: 7(int) Load 20 - 22: 10(float) ConvertSToF 21 - 25: 11(fvec4) Load 24(inv) - 26: 11(fvec4) VectorTimesScalar 25 22 - Store 17(r) 26 + 26: 25(ptr) AccessChain 13(s) 24 + 27: 7(int) Load 26 + 28: 10(float) ConvertSToF 27 + 31: 11(fvec4) Load 30(inv) + 32: 11(fvec4) VectorTimesScalar 31 28 + Store 23(r) 32 Line 1 19 0 - 27: 11(fvec4) Load 17(r) - 29: 11(fvec4) CompositeConstruct 28 28 28 28 - 30: 11(fvec4) FAdd 27 29 - Store 17(r) 30 + 33: 11(fvec4) Load 23(r) + 35: 11(fvec4) CompositeConstruct 34 34 34 34 + 36: 11(fvec4) FAdd 33 35 + Store 23(r) 36 Line 1 20 0 - 34: 33(ptr) AccessChain 17(r) 32 - 35: 10(float) Load 34 - 38: 37(bool) FOrdGreaterThan 35 36 - SelectionMerge 40 None - BranchConditional 38 39 44 - 39: Label - Line 1 21 0 - 41: 11(fvec4) Load 17(r) - 42: 11(fvec4) CompositeConstruct 28 28 28 28 - 43: 11(fvec4) FSub 41 42 - Store 17(r) 43 - Branch 40 + 39: 16(ptr) AccessChain 23(r) 38 + 40: 10(float) Load 39 + 43: 42(bool) FOrdGreaterThan 40 41 + SelectionMerge 45 None + BranchConditional 43 44 49 44: Label + Line 1 21 0 + 46: 11(fvec4) Load 23(r) + 47: 11(fvec4) CompositeConstruct 34 34 34 34 + 48: 11(fvec4) FSub 46 47 + Store 23(r) 48 + Branch 45 + 49: Label Line 1 23 0 - 46: 11(fvec4) Load 17(r) - 47: 11(fvec4) VectorTimesScalar 46 45 - Store 17(r) 47 - Branch 40 - 40: Label + 51: 11(fvec4) Load 23(r) + 52: 11(fvec4) VectorTimesScalar 51 50 + Store 23(r) 52 + Branch 45 + 45: Label Line 1 25 0 - 48: 11(fvec4) Load 17(r) - ReturnValue 48 + 53: 11(fvec4) Load 23(r) + ReturnValue 53 + FunctionEnd + Line 1 28 34 +20(testBranch(f1;f1;): 10(float) Function None 17 + 18(x): 16(ptr) FunctionParameter + 19(y): 16(ptr) FunctionParameter + 21: Label + 56(result): 16(ptr) Variable Function + 59(b): 58(ptr) Variable Function + 90: 16(ptr) Variable Function + Line 1 30 0 + Store 56(result) 57 + Line 1 31 0 + 60: 10(float) Load 18(x) + 61: 42(bool) FOrdGreaterThan 60 57 + Store 59(b) 61 + Line 1 34 0 + 62: 42(bool) Load 59(b) + SelectionMerge 64 None + BranchConditional 62 63 67 + 63: Label + Line 1 35 0 + 65: 10(float) Load 56(result) + 66: 10(float) FAdd 65 34 + Store 56(result) 66 + Branch 64 + 67: Label + Line 1 38 0 + 68: 10(float) Load 56(result) + 69: 10(float) FSub 68 34 + Store 56(result) 69 + Branch 64 + 64: Label + Line 1 42 0 + 70: 10(float) Load 18(x) + 71: 10(float) Load 19(y) + 72: 42(bool) FOrdGreaterThan 70 71 + SelectionMerge 74 None + BranchConditional 72 73 74 + 73: Label + Line 1 43 0 + 75: 10(float) Load 18(x) + 76: 10(float) Load 19(y) + 77: 10(float) FSub 75 76 + 78: 10(float) Load 56(result) + 79: 10(float) FAdd 78 77 + Store 56(result) 79 + Branch 74 + 74: Label + Line 1 47 0 + 80: 42(bool) Load 59(b) + 83: 7(int) Select 80 81 82 + 84: 10(float) ConvertSToF 83 + 85: 10(float) Load 56(result) + 86: 10(float) FAdd 85 84 + Store 56(result) 86 + Line 1 51 0 + 87: 10(float) Load 18(x) + 88: 10(float) Load 19(y) + 89: 42(bool) FOrdLessThan 87 88 + SelectionMerge 92 None + BranchConditional 89 91 94 + 91: Label + Line 1 52 0 + 93: 10(float) Load 19(y) + Store 90 93 + Branch 92 + 94: Label + Line 1 53 0 + 95: 42(bool) Load 59(b) + 96: 10(float) Select 95 34 57 + Store 90 96 + Branch 92 + 92: Label + 97: 10(float) Load 90 + Line 1 51 0 + 98: 10(float) Load 56(result) + 99: 10(float) FAdd 98 97 + Store 56(result) 99 + Line 1 55 0 + 100: 10(float) Load 56(result) + ReturnValue 100 FunctionEnd diff --git a/Test/spv.debugInfo.frag b/Test/spv.debugInfo.frag index 3b6cd27fea..31b63341df 100644 --- a/Test/spv.debugInfo.frag +++ b/Test/spv.debugInfo.frag @@ -25,9 +25,40 @@ vec4 foo(S s) return r; } +float testBranch(float x, float y) +{ + float result = 0; + bool b = x > 0; + + // branch with load + if (b) { + result += 1; + } + else { + result -= 1; + } + + // branch with expression + if (x > y) { + result += x - y; + } + + // selection with load + result += b ? + 1 : -1; + + // selection with expression + result += x < y ? + y : + float(b); + + return result; +} + void main() { outv = foo(s); + outv += testBranch(inv.x, inv.y); outv += texture(s2d, vec2(0.5)); switch (s.a) { From cdb350b35638383d119942554c28a01dd63e19cc Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 31 Mar 2023 14:57:49 -0600 Subject: [PATCH 165/594] Fix generation of conditionals with a struct result in SPIR-V It is possible for the SPIR-V code generator to receive a conditional where the two branches have the same shader language level type but different SPIR-V types because of things like offset decorations. This change modifies visitSelection() to handle this case by using either multiTypeStore() or, if that is available, OpCopyLogical. Fixes #3164 --- SPIRV/GlslangToSpv.cpp | 50 +++++++++++++++++++++++++++++++----------- 1 file changed, 37 insertions(+), 13 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1a271e27c2..8af359975f 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3789,10 +3789,11 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang // Find a way of executing both sides and selecting the right result. const auto executeBothSides = [&]() -> void { // execute both sides + spv::Id resultType = convertGlslangToSpvType(node->getType()); node->getTrueBlock()->traverse(this); spv::Id trueValue = accessChainLoad(node->getTrueBlock()->getAsTyped()->getType()); node->getFalseBlock()->traverse(this); - spv::Id falseValue = accessChainLoad(node->getTrueBlock()->getAsTyped()->getType()); + spv::Id falseValue = accessChainLoad(node->getFalseBlock()->getAsTyped()->getType()); builder.setLine(node->getLoc().line, node->getLoc().getFilename()); @@ -3801,8 +3802,8 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang return; // emit code to select between trueValue and falseValue - - // see if OpSelect can handle it + // see if OpSelect can handle the result type, and that the SPIR-V types + // of the inputs match the result type. if (isOpSelectable()) { // Emit OpSelect for this selection. @@ -3814,10 +3815,18 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang builder.getNumComponents(trueValue))); } + // If the types do not match, it is because of mismatched decorations on aggregates. + // Since isOpSelectable only lets us get here for SPIR-V >= 1.4, we can use OpCopyObject + // to get matching types. + if (builder.getTypeId(trueValue) != resultType) { + trueValue = builder.createUnaryOp(spv::OpCopyLogical, resultType, trueValue); + } + if (builder.getTypeId(falseValue) != resultType) { + falseValue = builder.createUnaryOp(spv::OpCopyLogical, resultType, falseValue); + } + // OpSelect - result = builder.createTriOp(spv::OpSelect, - convertGlslangToSpvType(node->getType()), condition, - trueValue, falseValue); + result = builder.createTriOp(spv::OpSelect, resultType, condition, trueValue, falseValue); builder.clearAccessChain(); builder.setAccessChainRValue(result); @@ -3825,7 +3834,7 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang // We need control flow to select the result. // TODO: Once SPIR-V OpSelect allows arbitrary types, eliminate this path. result = builder.createVariable(TranslatePrecisionDecoration(node->getType()), - spv::StorageClassFunction, convertGlslangToSpvType(node->getType())); + spv::StorageClassFunction, resultType); // Selection control: const spv::SelectionControlMask control = TranslateSelectionControl(*node); @@ -3834,10 +3843,15 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang spv::Builder::If ifBuilder(condition, control, builder); // emit the "then" statement - builder.createStore(trueValue, result); + builder.clearAccessChain(); + builder.setAccessChainLValue(result); + multiTypeStore(node->getType(), trueValue); + ifBuilder.makeBeginElse(); // emit the "else" statement - builder.createStore(falseValue, result); + builder.clearAccessChain(); + builder.setAccessChainLValue(result); + multiTypeStore(node->getType(), falseValue); // finish off the control flow ifBuilder.makeEndIf(); @@ -3864,16 +3878,26 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang // emit the "then" statement if (node->getTrueBlock() != nullptr) { node->getTrueBlock()->traverse(this); - if (result != spv::NoResult) - builder.createStore(accessChainLoad(node->getTrueBlock()->getAsTyped()->getType()), result); + if (result != spv::NoResult) { + spv::Id load = accessChainLoad(node->getTrueBlock()->getAsTyped()->getType()); + + builder.clearAccessChain(); + builder.setAccessChainLValue(result); + multiTypeStore(node->getType(), load); + } } if (node->getFalseBlock() != nullptr) { ifBuilder.makeBeginElse(); // emit the "else" statement node->getFalseBlock()->traverse(this); - if (result != spv::NoResult) - builder.createStore(accessChainLoad(node->getFalseBlock()->getAsTyped()->getType()), result); + if (result != spv::NoResult) { + spv::Id load = accessChainLoad(node->getFalseBlock()->getAsTyped()->getType()); + + builder.clearAccessChain(); + builder.setAccessChainLValue(result); + multiTypeStore(node->getType(), load); + } } // finish off the control flow From adcc7e816397f52b14cec70b830c913297fbd5d9 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 31 Mar 2023 14:29:50 -0600 Subject: [PATCH 166/594] Add tests for conditionals that return a struct value There are 3 separate tests added to cover the 3 cases in visitSelection(). With SPIR-V versions prior to 1.4, control flow is generated, with GLSL generating code to execute only the appropriate branch of the conditional while HLSL executes both branches and uses the control flow to select the appropriate one. Finally, with SPIR-V versions newer than 1.4, OpSelect can be used on structs. Note that the hlsl.structcopy.comp and hlsl.structcopylogical.comp tests have identical shader code, but are compiled with different versions of SPIR-V and result in different codepaths being used and different SPIR-V generated. --- Test/baseResults/hlsl.structcopy.comp.out | 402 ++++++++++++++++++ .../hlsl.structcopylogical.comp.out | 385 +++++++++++++++++ Test/baseResults/spv.structCopy.comp.out | 142 +++++++ Test/hlsl.structcopy.comp | 28 ++ Test/hlsl.structcopylogical.comp | 28 ++ Test/spv.structCopy.comp | 37 ++ gtests/Hlsl.FromFile.cpp | 4 +- gtests/Spv.FromFile.cpp | 1 + 8 files changed, 1026 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/hlsl.structcopy.comp.out create mode 100644 Test/baseResults/hlsl.structcopylogical.comp.out create mode 100644 Test/baseResults/spv.structCopy.comp.out create mode 100644 Test/hlsl.structcopy.comp create mode 100644 Test/hlsl.structcopylogical.comp create mode 100644 Test/spv.structCopy.comp diff --git a/Test/baseResults/hlsl.structcopy.comp.out b/Test/baseResults/hlsl.structcopy.comp.out new file mode 100644 index 0000000000..afc03e09e2 --- /dev/null +++ b/Test/baseResults/hlsl.structcopy.comp.out @@ -0,0 +1,402 @@ +hlsl.structcopy.comp +Shader version: 500 +local_size = (128, 1, 1) +0:? Sequence +0:20 Function Definition: @main(u1; ( temp void) +0:20 Function Parameters: +0:20 'id' ( in uint) +0:? Sequence +0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const uint) +0:21 2 (const uint) +0:21 3 (const uint) +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'count' ( temp uint) +0:22 count: direct index for structure ( temp uint) +0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:22 Constant: +0:22 0 (const uint) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 0 (const int) +0:23 Sequence +0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit +0:23 Condition +0:23 Compare Greater Than ( temp bool) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 true case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 subtract ( temp uint) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 false case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:23 Constant: +0:23 0 (const uint) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 1 (const int) +0:23 'id' ( in uint) +0:25 AtomicAdd ( temp uint) +0:25 a: direct index for structure ( temp uint) +0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:25 Constant: +0:25 0 (const uint) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 a: direct index for structure ( temp uint) +0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:25 Constant: +0:25 0 (const int) +0:26 AtomicAdd ( temp uint) +0:26 b: direct index for structure ( temp uint) +0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:26 Constant: +0:26 0 (const uint) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 b: direct index for structure ( temp uint) +0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:26 Constant: +0:26 1 (const int) +0:27 AtomicAdd ( temp uint) +0:27 c: direct index for structure ( temp uint) +0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 2 (const int) +0:27 c: direct index for structure ( temp uint) +0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:27 Constant: +0:27 2 (const int) +0:20 Function Definition: main( ( temp void) +0:20 Function Parameters: +0:? Sequence +0:20 move second child to first child ( temp uint) +0:? 'id' ( temp uint) +0:? 'id' ( in uint LocalInvocationIndex) +0:20 Function Call: @main(u1; ( temp void) +0:? 'id' ( temp uint) +0:? Linker Objects +0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) +0:? 1 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 'id' ( in uint LocalInvocationIndex) + + +Linked compute stage: + + +Shader version: 500 +local_size = (128, 1, 1) +0:? Sequence +0:20 Function Definition: @main(u1; ( temp void) +0:20 Function Parameters: +0:20 'id' ( in uint) +0:? Sequence +0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const uint) +0:21 2 (const uint) +0:21 3 (const uint) +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'count' ( temp uint) +0:22 count: direct index for structure ( temp uint) +0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:22 Constant: +0:22 0 (const uint) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 0 (const int) +0:23 Sequence +0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit +0:23 Condition +0:23 Compare Greater Than ( temp bool) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 true case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 subtract ( temp uint) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 false case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:23 Constant: +0:23 0 (const uint) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 1 (const int) +0:23 'id' ( in uint) +0:25 AtomicAdd ( temp uint) +0:25 a: direct index for structure ( temp uint) +0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:25 Constant: +0:25 0 (const uint) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 a: direct index for structure ( temp uint) +0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:25 Constant: +0:25 0 (const int) +0:26 AtomicAdd ( temp uint) +0:26 b: direct index for structure ( temp uint) +0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:26 Constant: +0:26 0 (const uint) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 b: direct index for structure ( temp uint) +0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:26 Constant: +0:26 1 (const int) +0:27 AtomicAdd ( temp uint) +0:27 c: direct index for structure ( temp uint) +0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 2 (const int) +0:27 c: direct index for structure ( temp uint) +0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:27 Constant: +0:27 2 (const int) +0:20 Function Definition: main( ( temp void) +0:20 Function Parameters: +0:? Sequence +0:20 move second child to first child ( temp uint) +0:? 'id' ( temp uint) +0:? 'id' ( in uint LocalInvocationIndex) +0:20 Function Call: @main(u1; ( temp void) +0:? 'id' ( temp uint) +0:? Linker Objects +0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) +0:? 1 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 'id' ( in uint LocalInvocationIndex) + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 88 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 83 + ExecutionMode 4 LocalSize 128 1 1 + Source HLSL 500 + Name 4 "main" + Name 10 "@main(u1;" + Name 9 "id" + Name 12 "MyStruct" + MemberName 12(MyStruct) 0 "a" + MemberName 12(MyStruct) 1 "b" + MemberName 12(MyStruct) 2 "c" + Name 16 "s" + Name 25 "count" + Name 26 "MyStruct" + MemberName 26(MyStruct) 0 "a" + MemberName 26(MyStruct) 1 "b" + MemberName 26(MyStruct) 2 "c" + Name 28 "MyStructs" + MemberName 28(MyStructs) 0 "count" + MemberName 28(MyStructs) 1 "data" + Name 30 "sb" + MemberName 30(sb) 0 "@data" + Name 32 "sb" + Name 37 "ms" + Name 65 "o" + MemberName 65(o) 0 "@data" + Name 67 "o" + Name 81 "id" + Name 83 "id" + Name 85 "param" + MemberDecorate 26(MyStruct) 0 Offset 0 + MemberDecorate 26(MyStruct) 1 Offset 4 + MemberDecorate 26(MyStruct) 2 Offset 8 + Decorate 27 ArrayStride 12 + MemberDecorate 28(MyStructs) 0 Offset 0 + MemberDecorate 28(MyStructs) 1 Offset 4 + Decorate 28(MyStructs) BufferBlock + Decorate 29 ArrayStride 16 + MemberDecorate 30(sb) 0 NonWritable + MemberDecorate 30(sb) 0 Offset 0 + Decorate 30(sb) BufferBlock + Decorate 32(sb) DescriptorSet 0 + Decorate 32(sb) Binding 0 + Decorate 64 ArrayStride 12 + MemberDecorate 65(o) 0 NonWritable + MemberDecorate 65(o) 0 Offset 0 + Decorate 65(o) BufferBlock + Decorate 67(o) DescriptorSet 0 + Decorate 67(o) Binding 1 + Decorate 83(id) BuiltIn LocalInvocationIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 8: TypeFunction 2 7(ptr) + 12(MyStruct): TypeStruct 6(int) 6(int) 6(int) + 13: 6(int) Constant 128 + 14: TypeArray 12(MyStruct) 13 + 15: TypePointer Workgroup 14 + 16(s): 15(ptr) Variable Workgroup + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 19: 6(int) Constant 1 + 20: 6(int) Constant 2 + 21: 6(int) Constant 3 + 22:12(MyStruct) ConstantComposite 19 20 21 + 23: TypePointer Workgroup 12(MyStruct) + 26(MyStruct): TypeStruct 6(int) 6(int) 6(int) + 27: TypeRuntimeArray 26(MyStruct) + 28(MyStructs): TypeStruct 6(int) 27 + 29: TypeRuntimeArray 28(MyStructs) + 30(sb): TypeStruct 29 + 31: TypePointer Uniform 30(sb) + 32(sb): 31(ptr) Variable Uniform + 33: TypePointer Uniform 6(int) + 36: TypePointer Function 12(MyStruct) + 40: TypeBool + 47: 17(int) Constant 1 + 49: TypePointer Uniform 26(MyStruct) + 61: 17(int) Constant 2 + 64: TypeRuntimeArray 26(MyStruct) + 65(o): TypeStruct 64 + 66: TypePointer Uniform 65(o) + 67(o): 66(ptr) Variable Uniform + 71: 6(int) Constant 0 + 82: TypePointer Input 6(int) + 83(id): 82(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 81(id): 7(ptr) Variable Function + 85(param): 7(ptr) Variable Function + 84: 6(int) Load 83(id) + Store 81(id) 84 + 86: 6(int) Load 81(id) + Store 85(param) 86 + 87: 2 FunctionCall 10(@main(u1;) 85(param) + Return + FunctionEnd + 10(@main(u1;): 2 Function None 8 + 9(id): 7(ptr) FunctionParameter + 11: Label + 25(count): 7(ptr) Variable Function + 37(ms): 36(ptr) Variable Function + 52: 36(ptr) Variable Function + 24: 23(ptr) AccessChain 16(s) 18 + Store 24 22 + 34: 33(ptr) AccessChain 32(sb) 18 18 18 + 35: 6(int) Load 34 + Store 25(count) 35 + 38: 6(int) Load 9(id) + 39: 6(int) Load 25(count) + 41: 40(bool) UGreaterThan 38 39 + 42: 6(int) Load 9(id) + 43: 6(int) Load 25(count) + 44: 6(int) ISub 42 43 + 45: 23(ptr) AccessChain 16(s) 44 + 46:12(MyStruct) Load 45 + 48: 6(int) Load 9(id) + 50: 49(ptr) AccessChain 32(sb) 18 18 47 48 + 51:26(MyStruct) Load 50 + SelectionMerge 54 None + BranchConditional 41 53 55 + 53: Label + Store 52 46 + Branch 54 + 55: Label + 56: 6(int) CompositeExtract 51 0 + 57: 7(ptr) AccessChain 52 18 + Store 57 56 + 58: 6(int) CompositeExtract 51 1 + 59: 7(ptr) AccessChain 52 47 + Store 59 58 + 60: 6(int) CompositeExtract 51 2 + 62: 7(ptr) AccessChain 52 61 + Store 62 60 + Branch 54 + 54: Label + 63:12(MyStruct) Load 52 + Store 37(ms) 63 + 68: 33(ptr) AccessChain 67(o) 18 18 18 + 69: 7(ptr) AccessChain 37(ms) 18 + 70: 6(int) Load 69 + 72: 6(int) AtomicIAdd 68 19 71 70 + 73: 33(ptr) AccessChain 67(o) 18 18 47 + 74: 7(ptr) AccessChain 37(ms) 47 + 75: 6(int) Load 74 + 76: 6(int) AtomicIAdd 73 19 71 75 + 77: 33(ptr) AccessChain 67(o) 18 18 61 + 78: 7(ptr) AccessChain 37(ms) 61 + 79: 6(int) Load 78 + 80: 6(int) AtomicIAdd 77 19 71 79 + Return + FunctionEnd diff --git a/Test/baseResults/hlsl.structcopylogical.comp.out b/Test/baseResults/hlsl.structcopylogical.comp.out new file mode 100644 index 0000000000..31206566f4 --- /dev/null +++ b/Test/baseResults/hlsl.structcopylogical.comp.out @@ -0,0 +1,385 @@ +hlsl.structcopylogical.comp +Shader version: 500 +local_size = (128, 1, 1) +0:? Sequence +0:20 Function Definition: @main(u1; ( temp void) +0:20 Function Parameters: +0:20 'id' ( in uint) +0:? Sequence +0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const uint) +0:21 2 (const uint) +0:21 3 (const uint) +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'count' ( temp uint) +0:22 count: direct index for structure ( temp uint) +0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:22 Constant: +0:22 0 (const uint) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 0 (const int) +0:23 Sequence +0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit +0:23 Condition +0:23 Compare Greater Than ( temp bool) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 true case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 subtract ( temp uint) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 false case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:23 Constant: +0:23 0 (const uint) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 1 (const int) +0:23 'id' ( in uint) +0:25 AtomicAdd ( temp uint) +0:25 a: direct index for structure ( temp uint) +0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:25 Constant: +0:25 0 (const uint) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 a: direct index for structure ( temp uint) +0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:25 Constant: +0:25 0 (const int) +0:26 AtomicAdd ( temp uint) +0:26 b: direct index for structure ( temp uint) +0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:26 Constant: +0:26 0 (const uint) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 b: direct index for structure ( temp uint) +0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:26 Constant: +0:26 1 (const int) +0:27 AtomicAdd ( temp uint) +0:27 c: direct index for structure ( temp uint) +0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 2 (const int) +0:27 c: direct index for structure ( temp uint) +0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:27 Constant: +0:27 2 (const int) +0:20 Function Definition: main( ( temp void) +0:20 Function Parameters: +0:? Sequence +0:20 move second child to first child ( temp uint) +0:? 'id' ( temp uint) +0:? 'id' ( in uint LocalInvocationIndex) +0:20 Function Call: @main(u1; ( temp void) +0:? 'id' ( temp uint) +0:? Linker Objects +0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) +0:? 1 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 'id' ( in uint LocalInvocationIndex) + + +Linked compute stage: + + +Shader version: 500 +local_size = (128, 1, 1) +0:? Sequence +0:20 Function Definition: @main(u1; ( temp void) +0:20 Function Parameters: +0:20 'id' ( in uint) +0:? Sequence +0:21 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 direct index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:21 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const uint) +0:21 2 (const uint) +0:21 3 (const uint) +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'count' ( temp uint) +0:22 count: direct index for structure ( temp uint) +0:22 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:22 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:22 Constant: +0:22 0 (const uint) +0:22 Constant: +0:22 0 (const int) +0:22 Constant: +0:22 0 (const int) +0:23 Sequence +0:23 move second child to first child ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 Test condition and select ( temp structure{ temp uint a, temp uint b, temp uint c}): no shortcircuit +0:23 Condition +0:23 Compare Greater Than ( temp bool) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 true case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 subtract ( temp uint) +0:23 'id' ( in uint) +0:23 'count' ( temp uint) +0:23 false case +0:23 indirect index ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:23 data: direct index for structure ( temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:23 direct index (layout( row_major std430) buffer structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data}) +0:23 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:23 Constant: +0:23 0 (const uint) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 1 (const int) +0:23 'id' ( in uint) +0:25 AtomicAdd ( temp uint) +0:25 a: direct index for structure ( temp uint) +0:25 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:25 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:25 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:25 Constant: +0:25 0 (const uint) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 a: direct index for structure ( temp uint) +0:25 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:25 Constant: +0:25 0 (const int) +0:26 AtomicAdd ( temp uint) +0:26 b: direct index for structure ( temp uint) +0:26 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:26 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:26 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:26 Constant: +0:26 0 (const uint) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 b: direct index for structure ( temp uint) +0:26 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:26 Constant: +0:26 1 (const int) +0:27 AtomicAdd ( temp uint) +0:27 c: direct index for structure ( temp uint) +0:27 direct index (layout( row_major std430) buffer structure{ temp uint a, temp uint b, temp uint c}) +0:27 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:27 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 0 (const int) +0:27 Constant: +0:27 2 (const int) +0:27 c: direct index for structure ( temp uint) +0:27 'ms' ( temp structure{ temp uint a, temp uint b, temp uint c}) +0:27 Constant: +0:27 2 (const int) +0:20 Function Definition: main( ( temp void) +0:20 Function Parameters: +0:? Sequence +0:20 move second child to first child ( temp uint) +0:? 'id' ( temp uint) +0:? 'id' ( in uint LocalInvocationIndex) +0:20 Function Call: @main(u1; ( temp void) +0:? 'id' ( temp uint) +0:? Linker Objects +0:? 'sb' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint count, temp unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} data} @data}) +0:? 'o' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp uint a, temp uint b, temp uint c} @data}) +0:? 's' ( shared 128-element array of structure{ temp uint a, temp uint b, temp uint c}) +0:? 'deflt' ( const structure{ temp uint a, temp uint b, temp uint c}) +0:? 1 (const uint) +0:? 2 (const uint) +0:? 3 (const uint) +0:? 'id' ( in uint LocalInvocationIndex) + +// Module Version 10600 +// Generated by (magic number): 8000b +// Id's are bound by 79 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 17 32 57 74 + ExecutionModeId 4 LocalSizeId 7 8 8 + Source HLSL 500 + Name 4 "main" + Name 12 "@main(u1;" + Name 11 "id" + Name 14 "MyStruct" + MemberName 14(MyStruct) 0 "a" + MemberName 14(MyStruct) 1 "b" + MemberName 14(MyStruct) 2 "c" + Name 17 "s" + Name 25 "count" + Name 26 "MyStruct" + MemberName 26(MyStruct) 0 "a" + MemberName 26(MyStruct) 1 "b" + MemberName 26(MyStruct) 2 "c" + Name 28 "MyStructs" + MemberName 28(MyStructs) 0 "count" + MemberName 28(MyStructs) 1 "data" + Name 30 "sb" + MemberName 30(sb) 0 "@data" + Name 32 "sb" + Name 37 "ms" + Name 55 "o" + MemberName 55(o) 0 "@data" + Name 57 "o" + Name 72 "id" + Name 74 "id" + Name 76 "param" + MemberDecorate 26(MyStruct) 0 Offset 0 + MemberDecorate 26(MyStruct) 1 Offset 4 + MemberDecorate 26(MyStruct) 2 Offset 8 + Decorate 27 ArrayStride 12 + MemberDecorate 28(MyStructs) 0 Offset 0 + MemberDecorate 28(MyStructs) 1 Offset 4 + Decorate 28(MyStructs) Block + Decorate 29 ArrayStride 16 + MemberDecorate 30(sb) 0 NonWritable + MemberDecorate 30(sb) 0 Offset 0 + Decorate 30(sb) Block + Decorate 32(sb) DescriptorSet 0 + Decorate 32(sb) Binding 0 + Decorate 54 ArrayStride 12 + MemberDecorate 55(o) 0 NonWritable + MemberDecorate 55(o) 0 Offset 0 + Decorate 55(o) Block + Decorate 57(o) DescriptorSet 0 + Decorate 57(o) Binding 1 + Decorate 74(id) BuiltIn LocalInvocationIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: 6(int) Constant 128 + 8: 6(int) Constant 1 + 9: TypePointer Function 6(int) + 10: TypeFunction 2 9(ptr) + 14(MyStruct): TypeStruct 6(int) 6(int) 6(int) + 15: TypeArray 14(MyStruct) 7 + 16: TypePointer Workgroup 15 + 17(s): 16(ptr) Variable Workgroup + 18: TypeInt 32 1 + 19: 18(int) Constant 0 + 20: 6(int) Constant 2 + 21: 6(int) Constant 3 + 22:14(MyStruct) ConstantComposite 8 20 21 + 23: TypePointer Workgroup 14(MyStruct) + 26(MyStruct): TypeStruct 6(int) 6(int) 6(int) + 27: TypeRuntimeArray 26(MyStruct) + 28(MyStructs): TypeStruct 6(int) 27 + 29: TypeRuntimeArray 28(MyStructs) + 30(sb): TypeStruct 29 + 31: TypePointer StorageBuffer 30(sb) + 32(sb): 31(ptr) Variable StorageBuffer + 33: TypePointer StorageBuffer 6(int) + 36: TypePointer Function 14(MyStruct) + 40: TypeBool + 47: 18(int) Constant 1 + 49: TypePointer StorageBuffer 26(MyStruct) + 54: TypeRuntimeArray 26(MyStruct) + 55(o): TypeStruct 54 + 56: TypePointer StorageBuffer 55(o) + 57(o): 56(ptr) Variable StorageBuffer + 61: 6(int) Constant 0 + 67: 18(int) Constant 2 + 73: TypePointer Input 6(int) + 74(id): 73(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 72(id): 9(ptr) Variable Function + 76(param): 9(ptr) Variable Function + 75: 6(int) Load 74(id) + Store 72(id) 75 + 77: 6(int) Load 72(id) + Store 76(param) 77 + 78: 2 FunctionCall 12(@main(u1;) 76(param) + Return + FunctionEnd + 12(@main(u1;): 2 Function None 10 + 11(id): 9(ptr) FunctionParameter + 13: Label + 25(count): 9(ptr) Variable Function + 37(ms): 36(ptr) Variable Function + 24: 23(ptr) AccessChain 17(s) 19 + Store 24 22 + 34: 33(ptr) AccessChain 32(sb) 19 19 19 + 35: 6(int) Load 34 + Store 25(count) 35 + 38: 6(int) Load 11(id) + 39: 6(int) Load 25(count) + 41: 40(bool) UGreaterThan 38 39 + 42: 6(int) Load 11(id) + 43: 6(int) Load 25(count) + 44: 6(int) ISub 42 43 + 45: 23(ptr) AccessChain 17(s) 44 + 46:14(MyStruct) Load 45 + 48: 6(int) Load 11(id) + 50: 49(ptr) AccessChain 32(sb) 19 19 47 48 + 51:26(MyStruct) Load 50 + 52:14(MyStruct) CopyLogical 51 + 53:14(MyStruct) Select 41 46 52 + Store 37(ms) 53 + 58: 33(ptr) AccessChain 57(o) 19 19 19 + 59: 9(ptr) AccessChain 37(ms) 19 + 60: 6(int) Load 59 + 62: 6(int) AtomicIAdd 58 8 61 60 + 63: 33(ptr) AccessChain 57(o) 19 19 47 + 64: 9(ptr) AccessChain 37(ms) 47 + 65: 6(int) Load 64 + 66: 6(int) AtomicIAdd 63 8 61 65 + 68: 33(ptr) AccessChain 57(o) 19 19 67 + 69: 9(ptr) AccessChain 37(ms) 67 + 70: 6(int) Load 69 + 71: 6(int) AtomicIAdd 68 8 61 70 + Return + FunctionEnd diff --git a/Test/baseResults/spv.structCopy.comp.out b/Test/baseResults/spv.structCopy.comp.out new file mode 100644 index 0000000000..38c7c09281 --- /dev/null +++ b/Test/baseResults/spv.structCopy.comp.out @@ -0,0 +1,142 @@ +spv.structCopy.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 81 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 24 + ExecutionMode 4 LocalSize 512 1 1 + Source GLSL 460 + Name 4 "main" + Name 7 "MyStruct" + MemberName 7(MyStruct) 0 "a" + MemberName 7(MyStruct) 1 "b" + MemberName 7(MyStruct) 2 "c" + Name 11 "s" + Name 21 "id" + Name 24 "gl_GlobalInvocationID" + Name 30 "ms" + Name 32 "MyStruct" + MemberName 32(MyStruct) 0 "a" + MemberName 32(MyStruct) 1 "b" + MemberName 32(MyStruct) 2 "c" + Name 34 "MyStructs" + MemberName 34(MyStructs) 0 "count" + MemberName 34(MyStructs) 1 "data" + Name 36 "my_structs" + Name 65 "Output" + MemberName 65(Output) 0 "a" + MemberName 65(Output) 1 "b" + MemberName 65(Output) 2 "c" + Name 67 "o" + Decorate 24(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + MemberDecorate 32(MyStruct) 0 Offset 0 + MemberDecorate 32(MyStruct) 1 Offset 4 + MemberDecorate 32(MyStruct) 2 Offset 8 + Decorate 33 ArrayStride 12 + MemberDecorate 34(MyStructs) 0 Offset 0 + MemberDecorate 34(MyStructs) 1 Offset 4 + Decorate 34(MyStructs) BufferBlock + Decorate 36(my_structs) DescriptorSet 0 + Decorate 36(my_structs) Binding 0 + MemberDecorate 65(Output) 0 Offset 0 + MemberDecorate 65(Output) 1 Offset 4 + MemberDecorate 65(Output) 2 Offset 8 + Decorate 65(Output) BufferBlock + Decorate 67(o) DescriptorSet 0 + Decorate 67(o) Binding 1 + Decorate 80 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7(MyStruct): TypeStruct 6(int) 6(int) 6(int) + 8: 6(int) Constant 512 + 9: TypeArray 7(MyStruct) 8 + 10: TypePointer Workgroup 9 + 11(s): 10(ptr) Variable Workgroup + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: 6(int) Constant 1 + 15: 6(int) Constant 2 + 16: 6(int) Constant 3 + 17: 7(MyStruct) ConstantComposite 14 15 16 + 18: TypePointer Workgroup 7(MyStruct) + 20: TypePointer Function 6(int) + 22: TypeVector 6(int) 3 + 23: TypePointer Input 22(ivec3) +24(gl_GlobalInvocationID): 23(ptr) Variable Input + 25: 6(int) Constant 0 + 26: TypePointer Input 6(int) + 29: TypePointer Function 7(MyStruct) + 32(MyStruct): TypeStruct 6(int) 6(int) 6(int) + 33: TypeRuntimeArray 32(MyStruct) + 34(MyStructs): TypeStruct 6(int) 33 + 35: TypePointer Uniform 34(MyStructs) + 36(my_structs): 35(ptr) Variable Uniform + 37: TypePointer Uniform 6(int) + 40: TypeBool + 52: 12(int) Constant 1 + 54: TypePointer Uniform 32(MyStruct) + 62: 12(int) Constant 2 + 65(Output): TypeStruct 6(int) 6(int) 6(int) + 66: TypePointer Uniform 65(Output) + 67(o): 66(ptr) Variable Uniform + 80: 22(ivec3) ConstantComposite 8 14 14 + 4(main): 2 Function None 3 + 5: Label + 21(id): 20(ptr) Variable Function + 30(ms): 29(ptr) Variable Function + 42: 29(ptr) Variable Function + 19: 18(ptr) AccessChain 11(s) 13 + Store 19 17 + 27: 26(ptr) AccessChain 24(gl_GlobalInvocationID) 25 + 28: 6(int) Load 27 + Store 21(id) 28 + 31: 6(int) Load 21(id) + 38: 37(ptr) AccessChain 36(my_structs) 13 + 39: 6(int) Load 38 + 41: 40(bool) UGreaterThan 31 39 + SelectionMerge 44 None + BranchConditional 41 43 51 + 43: Label + 45: 6(int) Load 21(id) + 46: 37(ptr) AccessChain 36(my_structs) 13 + 47: 6(int) Load 46 + 48: 6(int) ISub 45 47 + 49: 18(ptr) AccessChain 11(s) 48 + 50: 7(MyStruct) Load 49 + Store 42 50 + Branch 44 + 51: Label + 53: 6(int) Load 21(id) + 55: 54(ptr) AccessChain 36(my_structs) 52 53 + 56:32(MyStruct) Load 55 + 57: 6(int) CompositeExtract 56 0 + 58: 20(ptr) AccessChain 42 13 + Store 58 57 + 59: 6(int) CompositeExtract 56 1 + 60: 20(ptr) AccessChain 42 52 + Store 60 59 + 61: 6(int) CompositeExtract 56 2 + 63: 20(ptr) AccessChain 42 62 + Store 63 61 + Branch 44 + 44: Label + 64: 7(MyStruct) Load 42 + Store 30(ms) 64 + 68: 37(ptr) AccessChain 67(o) 13 + 69: 20(ptr) AccessChain 30(ms) 13 + 70: 6(int) Load 69 + 71: 6(int) AtomicIAdd 68 14 25 70 + 72: 37(ptr) AccessChain 67(o) 52 + 73: 20(ptr) AccessChain 30(ms) 52 + 74: 6(int) Load 73 + 75: 6(int) AtomicIAdd 72 14 25 74 + 76: 37(ptr) AccessChain 67(o) 62 + 77: 20(ptr) AccessChain 30(ms) 62 + 78: 6(int) Load 77 + 79: 6(int) AtomicIAdd 76 14 25 78 + Return + FunctionEnd diff --git a/Test/hlsl.structcopy.comp b/Test/hlsl.structcopy.comp new file mode 100644 index 0000000000..378988479d --- /dev/null +++ b/Test/hlsl.structcopy.comp @@ -0,0 +1,28 @@ +struct MyStruct { + uint a; + uint b; + uint c; +}; + +struct MyStructs { + uint count; + MyStruct data[]; +}; + +StructuredBuffer sb; +StructuredBuffer o; + +groupshared MyStruct s[128]; +static const MyStruct deflt = { 1u, 2u, 3u }; + +[numthreads(128, 1, 1)] +void main(uint id : SV_GroupIndex) +{ + s[0] = deflt; + uint count = sb.Load(0).count; + MyStruct ms = id > count ? s[id - count] : sb.Load(0).data[id]; + + InterlockedAdd(o[0].a, ms.a); + InterlockedAdd(o[0].b, ms.b); + InterlockedAdd(o[0].c, ms.c); +} diff --git a/Test/hlsl.structcopylogical.comp b/Test/hlsl.structcopylogical.comp new file mode 100644 index 0000000000..378988479d --- /dev/null +++ b/Test/hlsl.structcopylogical.comp @@ -0,0 +1,28 @@ +struct MyStruct { + uint a; + uint b; + uint c; +}; + +struct MyStructs { + uint count; + MyStruct data[]; +}; + +StructuredBuffer sb; +StructuredBuffer o; + +groupshared MyStruct s[128]; +static const MyStruct deflt = { 1u, 2u, 3u }; + +[numthreads(128, 1, 1)] +void main(uint id : SV_GroupIndex) +{ + s[0] = deflt; + uint count = sb.Load(0).count; + MyStruct ms = id > count ? s[id - count] : sb.Load(0).data[id]; + + InterlockedAdd(o[0].a, ms.a); + InterlockedAdd(o[0].b, ms.b); + InterlockedAdd(o[0].c, ms.c); +} diff --git a/Test/spv.structCopy.comp b/Test/spv.structCopy.comp new file mode 100644 index 0000000000..f915f54434 --- /dev/null +++ b/Test/spv.structCopy.comp @@ -0,0 +1,37 @@ +#version 460 +layout(local_size_x = 512, local_size_y = 1) in; +layout(std430) buffer; + +struct MyStruct { + uint a; + uint b; + uint c; +}; + +layout(binding = 0) buffer MyStructs { + uint count; + MyStruct data[]; +} +my_structs; + +layout(binding = 1) buffer Output { + uint a; + uint b; + uint c; +} +o; + +shared MyStruct s[512]; + +void main() { + s[0] = MyStruct(1, 2, 3); + + uint id = gl_GlobalInvocationID.x; + MyStruct ms = + id > my_structs.count ? s[id - my_structs.count] : my_structs.data[id]; + + atomicAdd(o.a, ms.a); + atomicAdd(o.b, ms.b); + atomicAdd(o.c, ms.c); +} + diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 32d5df9e32..71129ab29b 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -402,6 +402,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.structbuffer.rw.frag", "main"}, {"hlsl.structbuffer.rwbyte.frag", "main"}, {"hlsl.structbuffer.rwbyte2.comp", "main"}, + {"hlsl.structcopy.comp", "main"}, {"hlsl.structin.vert", "main"}, {"hlsl.structIoFourWay.frag", "main"}, {"hlsl.structStructName.frag", "main"}, @@ -472,7 +473,8 @@ INSTANTIATE_TEST_SUITE_P( INSTANTIATE_TEST_SUITE_P( ToSpirv, HlslSpv1_6CompileTest, ::testing::ValuesIn(std::vector{ - {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"} + {"hlsl.spv.1.6.discard.frag", "PixelShaderFunction"}, + {"hlsl.structcopylogical.comp","main"}, }), FileNameAsCustomTestSuffix ); diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index fafd33cfd3..7fd638e03d 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -441,6 +441,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.sparseTexture.frag", "spv.sparseTextureClamp.frag", "spv.structAssignment.frag", + "spv.structCopy.comp", "spv.structDeref.frag", "spv.structure.frag", "spv.switch.frag", From 8ff8b45131bd9265e5c539cd58b99dea602184c3 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 17 Mar 2023 16:10:11 +0800 Subject: [PATCH 167/594] Parameters of spirv_decorate_id should accept variables spirv_decorate_id will generate OpDecorateId. The parameter list should accept variables as part of decorations. This is because OpDecorateId allows this. The spec says: All such Extra Operands must be constant instructions or OpVariable instructions. --- SPIRV/GlslangToSpv.cpp | 6 +- .../spv.intrinsicsSpirvDecorateId.comp.out | 46 + Test/spv.intrinsicsSpirvDecorateId.comp | 16 + .../MachineIndependent/SpirvIntrinsics.cpp | 47 +- glslang/MachineIndependent/glslang.m4 | 36 +- glslang/MachineIndependent/glslang.y | 36 +- glslang/MachineIndependent/glslang_tab.cpp | 3635 +++++++++-------- gtests/Spv.FromFile.cpp | 1 + 8 files changed, 1972 insertions(+), 1851 deletions(-) create mode 100644 Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out create mode 100644 Test/spv.intrinsicsSpirvDecorateId.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 8af359975f..47c0a38b90 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -9449,10 +9449,10 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol std::vector operandIds; assert(!decorateId.second.empty()); for (auto extraOperand : decorateId.second) { - if (extraOperand->getQualifier().isSpecConstant()) - operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); - else + if (extraOperand->getQualifier().isFrontEndConstant()) operandIds.push_back(createSpvConstant(*extraOperand)); + else + operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); } builder.addDecorationId(id, static_cast(decorateId.first), operandIds); } diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out b/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out new file mode 100644 index 0000000000..c454dc609e --- /dev/null +++ b/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out @@ -0,0 +1,46 @@ +spv.intrinsicsSpirvDecorateId.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 16 + + Capability Shader + Extension "SPV_GOOGLE_hlsl_functionality1" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_spirv_intrinsics" + Name 4 "main" + Name 10 "CounterBuffer" + MemberName 10(CounterBuffer) 0 "counter" + Name 12 "x" + Name 13 "Uniform" + MemberName 13(Uniform) 0 "y" + Name 15 "" + Decorate 9 BuiltIn WorkgroupSize + MemberDecorate 10(CounterBuffer) 0 Offset 0 + Decorate 10(CounterBuffer) Block + Decorate 12(x) DescriptorSet 0 + Decorate 12(x) Binding 1 + MemberDecorate 13(Uniform) 0 Offset 0 + Decorate 13(Uniform) Block + Decorate 15 DescriptorSet 0 + Decorate 15 Binding 0 + DecorateId 15 DecorationHlslCounterBufferGOOGLE 12(x) + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 3 + 8: 6(int) Constant 1 + 9: 7(ivec3) ConstantComposite 8 8 8 +10(CounterBuffer): TypeStruct 6(int) + 11: TypePointer Uniform 10(CounterBuffer) + 12(x): 11(ptr) Variable Uniform + 13(Uniform): TypeStruct 6(int) + 14: TypePointer Uniform 13(Uniform) + 15: 14(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/spv.intrinsicsSpirvDecorateId.comp b/Test/spv.intrinsicsSpirvDecorateId.comp new file mode 100644 index 0000000000..58a35d613a --- /dev/null +++ b/Test/spv.intrinsicsSpirvDecorateId.comp @@ -0,0 +1,16 @@ +#version 460 core +#extension GL_EXT_spirv_intrinsics: enable + +layout(local_size_x = 1) in; + +layout(binding = 1) uniform CounterBuffer { + uint counter; +} x; + +layout(binding = 0) spirv_decorate_id(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5634, x) uniform Uniform { + uint y; +}; + +void main() +{ +} diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp index 6650f7d9ee..49d8b8c774 100644 --- a/glslang/MachineIndependent/SpirvIntrinsics.cpp +++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -168,7 +168,7 @@ void TQualifier::setSpirvDecorateId(int decoration, const TIntermAggregate* args TVector extraOperands; for (auto arg : args->getSequence()) { auto extraOperand = arg->getAsTyped(); - assert(extraOperand != nullptr && extraOperand->getQualifier().isConstant()); + assert(extraOperand != nullptr); extraOperands.push_back(extraOperand); } spirvDecorate->decorateIds[decoration] = extraOperands; @@ -202,30 +202,29 @@ TString TQualifier::getSpirvDecorateQualifierString() const const auto appendStr = [&](const char* s) { qualifierString.append(s); }; const auto appendDecorate = [&](const TIntermTyped* constant) { - auto& constArray = constant->getAsConstantUnion() != nullptr ? constant->getAsConstantUnion()->getConstArray() - : constant->getAsSymbolNode()->getConstArray(); - if (constant->getBasicType() == EbtFloat) { - float value = static_cast(constArray[0].getDConst()); - appendFloat(value); - } - else if (constant->getBasicType() == EbtInt) { - int value = constArray[0].getIConst(); - appendInt(value); - } - else if (constant->getBasicType() == EbtUint) { - unsigned value = constArray[0].getUConst(); - appendUint(value); + if (constant->getAsConstantUnion()) { + auto& constArray = constant->getAsConstantUnion()->getConstArray(); + if (constant->getBasicType() == EbtFloat) { + float value = static_cast(constArray[0].getDConst()); + appendFloat(value); + } else if (constant->getBasicType() == EbtInt) { + int value = constArray[0].getIConst(); + appendInt(value); + } else if (constant->getBasicType() == EbtUint) { + unsigned value = constArray[0].getUConst(); + appendUint(value); + } else if (constant->getBasicType() == EbtBool) { + bool value = constArray[0].getBConst(); + appendBool(value); + } else if (constant->getBasicType() == EbtString) { + const TString* value = constArray[0].getSConst(); + appendStr(value->c_str()); + } else + assert(0); + } else { + assert(constant->getAsSymbolNode()); + appendStr(constant->getAsSymbolNode()->getName().c_str()); } - else if (constant->getBasicType() == EbtBool) { - bool value = constArray[0].getBConst(); - appendBool(value); - } - else if (constant->getBasicType() == EbtString) { - const TString* value = constArray[0].getSConst(); - appendStr(value->c_str()); - } - else - assert(0); }; for (auto& decorate : spirvDecorate->decorates) { diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 442529be59..914919f92e 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -378,7 +378,7 @@ GLSLANG_WEB_EXCLUDE_ON %type spirv_storage_class_qualifier %type spirv_decorate_qualifier %type spirv_decorate_parameter_list spirv_decorate_parameter -%type spirv_decorate_id_parameter_list +%type spirv_decorate_id_parameter_list spirv_decorate_id_parameter %type spirv_decorate_string_parameter_list %type spirv_type_specifier %type spirv_type_parameter_list spirv_type_parameter @@ -4347,23 +4347,33 @@ spirv_decorate_parameter } spirv_decorate_id_parameter_list - : constant_expression { - if ($1->getBasicType() != EbtFloat && - $1->getBasicType() != EbtInt && - $1->getBasicType() != EbtUint && - $1->getBasicType() != EbtBool) - parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); + : spirv_decorate_id_parameter { $$ = parseContext.intermediate.makeAggregate($1); } - | spirv_decorate_id_parameter_list COMMA constant_expression { - if ($3->getBasicType() != EbtFloat && - $3->getBasicType() != EbtInt && - $3->getBasicType() != EbtUint && - $3->getBasicType() != EbtBool) - parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); + | spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter { $$ = parseContext.intermediate.growAggregate($1, $3); } +spirv_decorate_id_parameter + : variable_identifier { + if ($1->getAsConstantUnion() || $1->getAsSymbolNode()) + $$ = $1; + else + parseContext.error($1->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); + } + | FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); + } + | INTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | BOOLCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); + } + spirv_decorate_string_parameter_list : STRING_LITERAL { $$ = parseContext.intermediate.makeAggregate( diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index e0a5bcf151..1eec08ee60 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -378,7 +378,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %type spirv_storage_class_qualifier %type spirv_decorate_qualifier %type spirv_decorate_parameter_list spirv_decorate_parameter -%type spirv_decorate_id_parameter_list +%type spirv_decorate_id_parameter_list spirv_decorate_id_parameter %type spirv_decorate_string_parameter_list %type spirv_type_specifier %type spirv_type_parameter_list spirv_type_parameter @@ -4347,23 +4347,33 @@ spirv_decorate_parameter } spirv_decorate_id_parameter_list - : constant_expression { - if ($1->getBasicType() != EbtFloat && - $1->getBasicType() != EbtInt && - $1->getBasicType() != EbtUint && - $1->getBasicType() != EbtBool) - parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); + : spirv_decorate_id_parameter { $$ = parseContext.intermediate.makeAggregate($1); } - | spirv_decorate_id_parameter_list COMMA constant_expression { - if ($3->getBasicType() != EbtFloat && - $3->getBasicType() != EbtInt && - $3->getBasicType() != EbtUint && - $3->getBasicType() != EbtBool) - parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); + | spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter { $$ = parseContext.intermediate.growAggregate($1, $3); } +spirv_decorate_id_parameter + : variable_identifier { + if ($1->getAsConstantUnion() || $1->getAsSymbolNode()) + $$ = $1; + else + parseContext.error($1->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); + } + | FLOATCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); + } + | INTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); + } + | UINTCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); + } + | BOOLCONSTANT { + $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); + } + spirv_decorate_string_parameter_list : STRING_LITERAL { $$ = parseContext.intermediate.makeAggregate( diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 5c17c8cea4..b79f699dfe 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -705,13 +705,14 @@ enum yysymbol_kind_t YYSYMBOL_spirv_decorate_parameter_list = 581, /* spirv_decorate_parameter_list */ YYSYMBOL_spirv_decorate_parameter = 582, /* spirv_decorate_parameter */ YYSYMBOL_spirv_decorate_id_parameter_list = 583, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_string_parameter_list = 584, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 585, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 586, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 587, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 588, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 589, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 590 /* spirv_instruction_qualifier_id */ + YYSYMBOL_spirv_decorate_id_parameter = 584, /* spirv_decorate_id_parameter */ + YYSYMBOL_spirv_decorate_string_parameter_list = 585, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 586, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 587, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 588, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 589, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 590, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 591 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -733,7 +734,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 737 "MachineIndependent/glslang_tab.cpp" +#line 738 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1039,16 +1040,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 447 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12557 +#define YYLAST 12562 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 460 /* YYNNTS -- Number of nonterminals. */ -#define YYNNTS 131 +#define YYNNTS 132 /* YYNRULES -- Number of rules. */ -#define YYNRULES 688 +#define YYNRULES 693 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 934 +#define YYNSTATES 939 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 714 @@ -1210,8 +1211,9 @@ static const yytype_int16 yyrline[] = 4198, 4203, 4207, 4212, 4216, 4221, 4225, 4232, 4235, 4240, 4243, 4246, 4249, 4252, 4257, 4266, 4277, 4282, 4290, 4294, 4299, 4303, 4308, 4312, 4317, 4321, 4328, 4331, 4336, 4339, - 4342, 4345, 4350, 4358, 4368, 4372, 4377, 4381, 4386, 4390, - 4397, 4400, 4405, 4410, 4413, 4419, 4422, 4427, 4430 + 4342, 4345, 4350, 4353, 4358, 4364, 4367, 4370, 4373, 4378, + 4382, 4387, 4391, 4396, 4400, 4407, 4410, 4415, 4420, 4423, + 4429, 4432, 4437, 4440 }; #endif @@ -1372,7 +1374,7 @@ static const char *const yytname[] = "spirv_execution_mode_id_parameter_list", "spirv_storage_class_qualifier", "spirv_decorate_qualifier", "spirv_decorate_parameter_list", "spirv_decorate_parameter", - "spirv_decorate_id_parameter_list", + "spirv_decorate_id_parameter_list", "spirv_decorate_id_parameter", "spirv_decorate_string_parameter_list", "spirv_type_specifier", "spirv_type_parameter_list", "spirv_type_parameter", "spirv_instruction_qualifier", "spirv_instruction_qualifier_list", @@ -1440,7 +1442,7 @@ static const yytype_int16 yytoknum[] = }; #endif -#define YYPACT_NINF (-868) +#define YYPACT_NINF (-867) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) @@ -1454,100 +1456,100 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4593, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -296, -250, -233, - -225, -220, -203, -180, -178, -868, -868, -125, -868, -868, - -868, -868, -868, -60, -868, -868, -868, -868, -868, -329, - -868, -868, -868, -868, -868, -868, -156, -116, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -331, -313, -109, -94, 7792, -309, -868, - -106, -868, -868, -868, -868, 5507, -868, -868, -868, -868, - -98, -868, -868, 937, -868, -868, 7792, -124, -868, -868, - -868, 5964, -74, -288, -234, -154, -138, -137, -74, -127, - -68, 12163, -868, -32, -345, -61, -868, -307, -868, -17, - -13, 7792, -868, -868, -868, 7792, -57, -38, -868, -262, - -868, -223, -868, -868, 10858, -3, -868, -868, -868, 1, - -36, 7792, -868, -9, -6, -2, -868, -268, -868, -239, - -5, 3, 4, 5, -231, 6, 10, 12, 13, 14, - 17, -219, 8, 18, 16, -291, -868, -4, 7792, -868, - 19, -868, -216, -868, -868, -184, 9118, -868, -302, 1394, - -868, -868, -868, -868, -868, -3, -260, -868, 9553, -258, - -868, -29, -868, -218, 10858, 10858, -868, 10858, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -245, -868, -868, - -868, 25, -169, 11293, 27, -868, 10858, -868, -868, -308, - 29, -13, 32, -868, -316, -74, -868, -28, -868, -303, - 36, -126, 10858, -122, -868, -144, -121, 10858, -115, 15, - -114, -74, -868, 11728, -868, -108, 10858, 31, -68, -868, - 7792, -18, 6421, -868, 7792, 10858, -868, -345, -868, 20, - -868, -868, -46, -196, -1, -305, -264, 21, 26, 22, - 53, 52, -314, 38, 9988, -868, 43, -868, -868, 49, - 41, 48, -868, 66, 68, 62, 10423, 73, 10858, 67, - 64, 69, 72, 75, -185, -868, -868, -78, -868, -313, - 76, 77, -868, -868, -868, -868, -868, 1851, -868, -868, - -868, -868, -868, -868, -868, -868, -868, 5050, 29, 9553, - -249, 8248, -868, -868, 9553, 7792, -868, 42, -868, -868, - -868, -168, -868, -868, 10858, 47, -868, -868, 10858, 85, - -868, -868, -868, 10858, -868, -868, -868, -311, -868, -868, - -167, 78, -868, -868, -868, -868, -868, -868, -165, -868, - -160, -868, -868, -158, 81, -868, -868, -868, -868, -155, - -868, -153, -868, -150, 83, -868, -148, 84, -146, 78, - -868, -145, -868, 91, 93, -868, -868, -18, -3, -51, - -868, -868, -868, 6878, -868, -868, -868, 10858, 10858, 10858, - 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, 10858, - 10858, 10858, 10858, 10858, 10858, 10858, -868, -868, -868, 94, - -868, 2308, -868, -868, -868, 2308, -868, 10858, -868, -868, - -49, 10858, -25, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, 10858, - 10858, -868, -868, -868, -868, -868, -868, -868, 9553, -868, - -868, -71, -868, 7335, -868, -868, 95, 89, -868, -868, - -868, -868, -868, -244, -213, -868, -306, -868, -303, -868, - -303, -868, 10858, 10858, -868, -144, -868, -144, -868, 10858, - 10858, -868, 100, 15, -868, 11728, -868, 10858, -868, -868, - -47, 29, -18, -868, -868, -868, -868, -868, -46, -46, - -196, -196, -1, -1, -1, -1, -305, -305, -264, 21, - 26, 22, 53, 52, 10858, -868, 2308, 4136, 57, 3679, - -143, -868, -141, -868, -868, -868, -868, -868, 8683, -868, - -868, -868, 103, -868, 70, -868, -136, -868, -134, -868, - -133, -868, -132, -868, -131, -129, -868, -868, -868, -23, - 99, 89, 71, 104, 106, -868, -868, 4136, 107, -868, - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - 10858, -868, 105, 2765, 10858, -868, 98, 111, 65, 112, - 3222, -868, 113, -868, 9553, -868, -868, -868, -120, 10858, - 2765, 107, -868, -868, 2308, -868, 108, 89, -868, -868, - 2308, 110, -868, -868 + 4598, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -289, -262, -241, + -203, -191, -181, -98, -73, -867, -867, -178, -867, -867, + -867, -867, -867, -60, -867, -867, -867, -867, -867, -312, + -867, -867, -867, -867, -867, -867, -62, -28, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -330, -314, -225, -109, 7797, -260, -867, + -207, -867, -867, -867, -867, 5512, -867, -867, -867, -867, + -173, -867, -867, 942, -867, -867, 7797, -30, -867, -867, + -867, 5969, -52, -222, -162, -148, -124, -123, -52, -122, + -48, 12168, -867, -14, -332, -45, -867, -313, -867, -12, + -7, 7797, -867, -867, -867, 7797, -39, -38, -867, -299, + -867, -259, -867, -867, 10863, -2, -867, -867, -867, 1, + -35, 7797, -867, -6, -4, -1, -867, -302, -867, -261, + 3, 4, 6, 7, -249, 8, 11, 12, 15, 16, + 17, -229, 19, 18, 10, -171, -867, -3, 7797, -867, + 21, -867, -226, -867, -867, -221, 9123, -867, -271, 1399, + -867, -867, -867, -867, -867, -2, -300, -867, 9558, -266, + -867, -33, -867, -233, 10863, 10863, -867, 10863, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -246, -867, -867, + -867, 20, -218, 11298, 26, -867, 10863, -867, -867, -319, + 25, -7, 31, -867, -316, -52, -867, -27, -867, -320, + 30, -118, 10863, -117, -867, -138, -116, -143, -112, 34, + -102, -52, -867, 11733, -867, -101, 10863, 5, -48, -867, + 7797, -20, 6426, -867, 7797, 10863, -867, -332, -867, 22, + -867, -867, -47, -41, -37, -298, -22, 24, 27, 29, + 48, 47, -305, 35, 9993, -867, 32, -867, -867, 40, + 37, 53, -867, 42, 50, 57, 10428, 68, 10863, 49, + 62, 65, 66, 67, -227, -867, -867, -176, -867, -314, + 78, 79, -867, -867, -867, -867, -867, 1856, -867, -867, + -867, -867, -867, -867, -867, -867, -867, 5055, 25, 9558, + -265, 8253, -867, -867, 9558, 7797, -867, 46, -867, -867, + -867, -216, -867, -867, 10863, 51, -867, -867, 10863, 82, + -867, -867, -867, 10863, -867, -867, -867, -306, -867, -867, + -213, 76, -867, -867, -867, -867, -867, -867, -202, -867, + -201, -867, -867, -199, 81, -867, -867, -867, -867, -194, + -867, -179, -867, -867, -867, -867, -867, -174, -867, 83, + -867, -155, 84, -154, 76, -867, -153, -867, 85, 91, + -867, -867, -20, -2, -129, -867, -867, -867, 6883, -867, + -867, -867, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, + 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, + 10863, -867, -867, -867, 92, -867, 2313, -867, -867, -867, + 2313, -867, 10863, -867, -867, -128, 10863, -31, -867, -867, + -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, 10863, 10863, -867, -867, -867, -867, + -867, -867, -867, 9558, -867, -867, -215, -867, 7340, -867, + -867, 93, 87, -867, -867, -867, -867, -867, -131, -130, + -867, -304, -867, -320, -867, -320, -867, 10863, 10863, -867, + -138, -867, -138, -867, -143, -143, -867, 98, 34, -867, + 11733, -867, 10863, -867, -867, -74, 25, -20, -867, -867, + -867, -867, -867, -47, -47, -41, -41, -37, -37, -37, + -37, -298, -298, -22, 24, 27, 29, 48, 47, 10863, + -867, 2313, 4141, 54, 3684, -152, -867, -151, -867, -867, + -867, -867, -867, 8688, -867, -867, -867, 100, -867, 69, + -867, -144, -867, -142, -867, -141, -867, -140, -867, -139, + -137, -867, -867, -867, -29, 99, 87, 70, 102, 105, + -867, -867, 4141, 103, -867, -867, -867, -867, -867, -867, + -867, -867, -867, -867, -867, 10863, -867, 101, 2770, 10863, + -867, 104, 107, 63, 108, 3227, -867, 109, -867, 9558, + -867, -867, -867, -132, 10863, 2770, 103, -867, -867, 2313, + -867, 106, 87, -867, -867, 2313, 112, -867, -867 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1600,7 +1602,7 @@ static const yytype_int16 yydefact[] = 0, 0, 540, 0, 0, 0, 99, 0, 94, 0, 109, 0, 121, 115, 123, 0, 124, 0, 97, 131, 102, 0, 156, 136, 0, 208, 214, 1, 622, 0, - 0, 0, 96, 0, 0, 0, 633, 0, 685, 0, + 0, 0, 96, 0, 0, 0, 633, 0, 690, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 631, 0, 629, 0, 0, 538, 151, 153, 0, 149, 206, 0, 0, 100, 0, 0, @@ -1609,9 +1611,9 @@ static const yytype_int16 yydefact[] = 44, 41, 5, 6, 7, 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, 26, 0, 0, 30, 0, 217, 0, 36, 34, 0, - 209, 111, 0, 95, 0, 0, 683, 0, 641, 0, + 209, 111, 0, 95, 0, 0, 688, 0, 641, 0, 0, 0, 0, 0, 658, 0, 0, 0, 0, 0, - 0, 0, 678, 0, 656, 0, 0, 0, 0, 98, + 0, 0, 683, 0, 656, 0, 0, 0, 0, 98, 0, 0, 0, 542, 0, 0, 148, 0, 203, 0, 210, 45, 49, 52, 55, 60, 63, 65, 67, 69, 71, 73, 75, 0, 0, 101, 569, 578, 582, 0, @@ -1621,72 +1623,72 @@ static const yytype_int16 yydefact[] = 584, 562, 591, 563, 564, 599, 565, 0, 119, 0, 127, 0, 550, 134, 0, 0, 107, 0, 104, 38, 39, 0, 22, 23, 0, 0, 28, 27, 0, 219, - 31, 33, 40, 0, 216, 112, 687, 0, 688, 634, - 0, 0, 686, 653, 649, 650, 651, 652, 0, 647, + 31, 33, 40, 0, 216, 112, 692, 0, 693, 634, + 0, 0, 691, 653, 649, 650, 651, 652, 0, 647, 0, 93, 654, 0, 0, 668, 669, 670, 671, 0, - 666, 0, 672, 0, 0, 674, 0, 0, 0, 2, - 682, 0, 680, 0, 0, 628, 630, 0, 548, 0, - 546, 541, 543, 0, 152, 150, 207, 0, 0, 0, + 666, 0, 675, 676, 677, 678, 674, 0, 672, 0, + 679, 0, 0, 0, 2, 687, 0, 685, 0, 0, + 628, 630, 0, 548, 0, 546, 541, 543, 0, 152, + 150, 207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 211, 212, 0, - 568, 0, 601, 614, 613, 0, 605, 0, 617, 615, - 0, 0, 0, 598, 618, 619, 620, 567, 81, 82, - 84, 83, 86, 87, 88, 89, 90, 85, 80, 0, - 0, 583, 579, 581, 585, 592, 600, 129, 0, 553, - 554, 0, 133, 0, 108, 4, 0, 24, 21, 32, - 218, 637, 639, 0, 0, 684, 0, 643, 0, 642, - 0, 645, 0, 0, 660, 0, 659, 0, 662, 0, - 0, 664, 0, 0, 679, 0, 676, 0, 657, 632, - 0, 549, 0, 544, 539, 46, 47, 48, 51, 50, - 53, 54, 58, 59, 56, 57, 61, 62, 64, 66, - 68, 70, 72, 74, 0, 213, 570, 0, 0, 0, - 0, 616, 0, 597, 79, 92, 128, 551, 0, 106, - 19, 635, 0, 636, 0, 648, 0, 655, 0, 667, - 0, 673, 0, 675, 0, 0, 681, 545, 547, 0, - 0, 589, 0, 0, 0, 608, 607, 610, 576, 593, - 552, 555, 638, 640, 644, 646, 661, 663, 665, 677, - 0, 571, 0, 0, 0, 609, 0, 0, 588, 0, - 0, 586, 0, 77, 0, 573, 602, 572, 0, 611, - 0, 576, 575, 577, 595, 590, 0, 612, 606, 587, - 596, 0, 604, 594 + 0, 76, 211, 212, 0, 568, 0, 601, 614, 613, + 0, 605, 0, 617, 615, 0, 0, 0, 598, 618, + 619, 620, 567, 81, 82, 84, 83, 86, 87, 88, + 89, 90, 85, 80, 0, 0, 583, 579, 581, 585, + 592, 600, 129, 0, 553, 554, 0, 133, 0, 108, + 4, 0, 24, 21, 32, 218, 637, 639, 0, 0, + 689, 0, 643, 0, 642, 0, 645, 0, 0, 660, + 0, 659, 0, 662, 0, 0, 664, 0, 0, 684, + 0, 681, 0, 657, 632, 0, 549, 0, 544, 539, + 46, 47, 48, 51, 50, 53, 54, 58, 59, 56, + 57, 61, 62, 64, 66, 68, 70, 72, 74, 0, + 213, 570, 0, 0, 0, 0, 616, 0, 597, 79, + 92, 128, 551, 0, 106, 19, 635, 0, 636, 0, + 648, 0, 655, 0, 667, 0, 673, 0, 680, 0, + 0, 686, 545, 547, 0, 0, 589, 0, 0, 0, + 608, 607, 610, 576, 593, 552, 555, 638, 640, 644, + 646, 661, 663, 665, 682, 0, 571, 0, 0, 0, + 609, 0, 0, 588, 0, 0, 586, 0, 77, 0, + 573, 602, 572, 0, 611, 0, 576, 575, 577, 595, + 590, 0, 612, 606, 587, 596, 0, 604, 594 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -868, -868, -868, -868, -868, -868, -868, -868, -868, -868, - -868, -868, -429, -868, -378, -377, -471, -381, -259, -261, - -257, -256, -255, -263, -868, -478, -868, -492, -868, -503, - -535, 11, -868, -868, -868, 7, -392, -868, -868, 39, - 45, 46, -868, -868, -401, -868, -868, -868, -868, -104, - -868, -386, -374, -868, 9, -868, 0, -426, -868, -868, - -868, -868, 147, -868, -868, -868, -551, -569, -224, -340, - -606, -868, -365, -615, -867, -868, -424, -868, -868, -432, - -431, -868, -868, 63, -723, -358, -868, -142, -868, -394, - -868, -140, -868, -868, -868, -868, -135, -868, -868, -868, - -868, -868, -868, -868, -868, 96, -868, -868, 2, -868, - -72, -237, -436, -868, -868, -868, -300, -304, -299, -868, - -868, -301, -298, -297, -310, -868, -295, -312, -868, -391, - -531 + -867, -538, -867, -867, -867, -867, -867, -867, -867, -867, + -867, -867, -428, -867, -392, -391, -474, -389, -264, -267, + -263, -268, -258, -257, -867, -482, -867, -495, -867, -502, + -534, 13, -867, -867, -867, 14, -385, -867, -867, 38, + 41, 44, -867, -867, -400, -867, -867, -867, -867, -100, + -867, -386, -368, -867, 9, -867, 0, -422, -867, -867, + -867, -867, 142, -867, -867, -867, -545, -550, -236, -347, + -629, -867, -372, -620, -866, -867, -430, -867, -867, -440, + -438, -867, -867, 61, -720, -363, -867, -136, -867, -406, + -867, -135, -867, -867, -867, -867, -134, -867, -867, -867, + -867, -867, -867, -867, -867, 90, -867, -867, 2, -867, + -72, -224, -384, -867, -867, -867, -311, -308, -309, -867, + -867, -315, -310, -307, -303, -301, -867, -297, -318, -867, + -390, -539 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 525, 526, 527, 786, 528, 529, 530, 531, 532, + -1, 525, 526, 527, 791, 528, 529, 530, 531, 532, 533, 534, 614, 536, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 615, 844, 616, 769, 617, - 700, 618, 383, 645, 503, 619, 385, 386, 387, 432, + 588, 589, 590, 591, 592, 615, 849, 616, 774, 617, + 705, 618, 383, 645, 503, 619, 385, 386, 387, 432, 433, 434, 388, 389, 390, 391, 392, 393, 482, 483, 394, 395, 396, 397, 537, 485, 538, 488, 445, 446, - 539, 400, 401, 402, 574, 478, 572, 573, 709, 710, - 643, 781, 622, 623, 624, 625, 626, 741, 880, 916, - 908, 909, 910, 917, 627, 628, 629, 630, 911, 883, - 631, 632, 912, 931, 633, 634, 635, 847, 745, 849, - 887, 906, 907, 636, 403, 404, 405, 429, 637, 475, - 476, 455, 456, 793, 794, 407, 678, 679, 683, 408, - 409, 689, 690, 693, 696, 410, 701, 702, 411, 457, - 458 + 539, 400, 401, 402, 574, 478, 572, 573, 714, 715, + 643, 786, 622, 623, 624, 625, 626, 746, 885, 921, + 913, 914, 915, 922, 627, 628, 629, 630, 916, 888, + 631, 632, 917, 936, 633, 634, 635, 852, 750, 854, + 892, 911, 912, 636, 403, 404, 405, 429, 637, 475, + 476, 455, 456, 798, 799, 407, 678, 679, 683, 408, + 409, 689, 690, 697, 698, 701, 410, 706, 707, 411, + 457, 458 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1694,64 +1696,64 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 399, 435, 406, 712, 651, 450, 642, 384, 593, 398, - 450, 382, 773, 499, 449, 535, 672, 682, 846, 540, - 451, 442, 692, 713, 735, 451, 422, 471, 724, 725, - 426, 704, 672, 777, 666, 780, 915, 667, 782, 791, - 714, 660, 480, 923, 666, 435, 486, 673, 428, 437, - 663, 594, 438, 915, 487, 412, 427, 581, 423, 595, - 736, 442, 664, 567, 726, 727, 481, 568, 668, 638, - 640, 728, 729, 792, 681, 649, 650, 442, 668, 681, - 674, 675, 676, 677, 546, 681, 652, 653, 681, 497, - 547, 486, 570, 486, 783, 594, 459, 681, 498, 460, - 639, 413, 644, 750, 594, 752, -35, 662, 654, 669, - 861, 778, 655, 548, 862, 669, 739, 669, 414, 549, - 669, 554, 669, 581, 669, 669, 415, 555, 581, 669, - 848, 416, 500, 562, 581, 501, 576, 581, 502, 563, - 647, 863, 577, 648, 712, 864, 581, 642, 417, 642, - 462, 787, 642, 460, 670, 758, 759, 760, 761, 762, - 763, 764, 765, 766, 767, 581, 789, 720, 578, 721, - 698, 418, 856, 419, 579, 768, 461, 463, 465, 467, - 469, 470, 473, 657, 785, 795, 570, 797, 570, 658, - 770, 547, 799, 798, 801, 424, 442, 804, 800, 806, - 802, 930, 808, 805, 811, 807, 814, 816, 809, 888, - 812, 889, 815, 817, 712, 770, 894, 770, 895, 896, - 897, 898, 798, 899, 802, 805, 809, 812, 420, 817, - 464, 773, 926, 460, 790, 425, 450, 452, 770, 685, - 686, 687, 688, 430, 850, 449, 466, 468, 852, 460, - 460, 451, 891, 832, 833, 834, 835, 472, 680, 570, - 460, 460, 684, 691, 431, 460, 460, 867, 682, 694, - 697, 444, 460, 460, 871, 692, 703, 854, 855, 460, - 770, 439, 821, 771, 672, 857, 642, 858, 825, 826, - 827, 581, 581, 581, 581, 581, 581, 581, 581, 581, - 581, 581, 581, 581, 581, 581, 581, 822, 925, 770, - 823, 822, 851, 454, 877, 773, 330, 331, 332, 474, - 717, 718, 719, 479, 681, 681, 484, 570, 722, 723, - 495, 681, 681, 770, 853, 770, 900, 681, 489, 681, - 327, 879, 828, 829, 881, 830, 831, 836, 837, 496, - 486, 542, 543, 541, 544, 550, 545, 569, 646, 671, - 564, 551, 552, 553, 556, 695, 642, 566, 557, 708, - 558, 559, 560, 581, 581, 561, 565, 656, 661, 575, - 581, 581, 594, 497, 881, 705, 581, 436, 581, 667, - 733, 734, 737, 732, 730, 443, 398, 570, 731, 740, - 742, 918, 743, 399, 398, 406, 399, 716, 913, 744, - 384, 399, 398, 406, 382, 398, 927, 746, 453, 747, - 398, 477, 642, 748, 751, 754, 753, -36, -34, 784, - 755, 436, 491, 756, 788, 436, 757, -29, 796, 803, - 398, 810, 813, 818, 398, 819, 882, 770, 845, 860, - 873, 443, 884, 892, 893, 901, 903, 904, 902, 919, - 398, 451, -574, 920, 921, 914, 933, 596, 924, 932, - 839, 838, 843, 715, 493, 840, 492, 841, 571, 842, - 421, 494, 878, 820, 885, 922, 882, 398, 928, 621, - 929, 886, 490, 905, 865, 774, 706, 775, 620, 448, - 866, 451, 776, 874, 868, 876, 870, 869, 0, 0, - 0, 0, 0, 872, 0, 0, 0, 0, 0, 0, - 875, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 399, 435, 406, 642, 593, 651, 450, 778, 672, 398, + 782, 450, 785, 382, 384, 787, 535, 499, 682, 696, + 451, 449, 717, 540, 672, 451, 851, 442, 471, 718, + 673, 426, 709, 740, 666, 729, 730, 667, 660, 663, + 486, 719, 920, 422, 796, 435, 666, 428, 487, 928, + 546, 664, 497, 486, 486, 480, 547, 427, 581, 920, + 639, 498, 412, 674, 675, 676, 677, 442, 668, 741, + 681, 731, 732, 638, 640, 423, 649, 650, 797, 481, + 668, 681, 594, 442, 681, 652, 653, 594, 594, 413, + 595, 548, 570, 681, 644, 783, 500, 549, 437, 501, + 788, 438, 502, 554, 755, -35, 757, 654, 662, 555, + 414, 655, 744, 763, 764, 765, 766, 767, 768, 769, + 770, 771, 772, 562, 581, 647, 576, 430, 648, 563, + 853, 578, 577, 773, 657, 581, 790, 579, 581, 800, + 658, 862, 775, 863, 642, 547, 642, 581, 415, 642, + 802, 804, 792, 806, 861, 670, 803, 805, 809, 807, + 416, 669, 459, 794, 810, 460, 581, 669, 717, 669, + 417, 703, 669, 811, 669, 420, 669, 669, 813, 812, + 439, 669, 775, 567, 814, 776, 570, 568, 570, 461, + 463, 465, 467, 469, 470, 473, 444, 816, 819, 821, + 893, 894, 442, 817, 820, 822, 775, 775, 899, 935, + 900, 901, 902, 903, 803, 904, 807, 810, 814, 817, + 931, 822, 462, 866, 868, 460, 775, 867, 869, 827, + 775, 778, 828, 856, 896, 795, 464, 450, 717, 460, + 692, 693, 694, 695, 516, 685, 686, 687, 688, 431, + 855, 451, 449, 418, 857, 837, 838, 839, 840, 570, + 466, 468, 472, 460, 460, 460, 680, 684, 691, 460, + 460, 460, 699, 872, 682, 460, 696, 696, 419, 859, + 860, 672, 702, 708, 827, 460, 460, 882, 642, 424, + 930, 826, 727, 728, 830, 831, 832, 581, 581, 581, + 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, + 581, 581, 581, 733, 734, 778, 330, 331, 332, 722, + 723, 724, 725, 425, 726, 681, 681, 775, 858, 775, + 905, 452, 570, 833, 834, 454, 835, 836, 681, 474, + 681, 479, 484, 489, 841, 842, 327, 884, 495, 496, + 886, 486, 542, 541, 646, 543, 544, 545, 569, 710, + 671, 566, 551, 550, 552, 553, 556, 713, 642, 557, + 558, 564, 656, 559, 560, 561, 565, 661, 594, 581, + 581, 575, 497, 667, 700, 738, 739, 436, 745, 742, + 886, 747, 581, 751, 581, 443, 398, 735, 748, 736, + 737, 752, 570, 399, 398, 406, 399, 923, 758, 721, + 918, 399, 398, 406, 749, 398, 382, 384, 753, 756, + 398, 477, 932, 759, 642, 453, 760, 761, 762, -36, + -34, 436, 491, 789, -29, 436, 801, 823, 793, 808, + 398, 815, 818, 824, 398, 775, 850, 865, 878, 889, + 897, 443, 887, 898, 908, 906, 909, 907, -574, 925, + 398, 919, 926, 596, 929, 924, 451, 937, 938, 844, + 846, 843, 492, 493, 845, 421, 825, 720, 571, 494, + 883, 847, 890, 848, 927, 933, 910, 398, 934, 621, + 490, 891, 887, 448, 871, 870, 711, 875, 620, 873, + 874, 779, 780, 781, 881, 0, 451, 0, 877, 0, + 0, 876, 0, 0, 0, 0, 0, 879, 0, 0, + 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 707, 0, 571, 0, 571, 0, 0, 0, 0, 398, + 712, 0, 571, 0, 571, 0, 0, 0, 0, 398, 0, 398, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1765,258 +1767,30 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, - 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, + 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 621, 0, 0, 0, 621, 0, 0, 0, 0, - 620, 0, 0, 0, 620, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 621, 0, 0, 0, + 621, 0, 0, 0, 0, 620, 0, 0, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 571, 0, 0, 0, 0, 0, 0, - 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, + 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 621, 621, 0, 621, - 0, 406, 0, 0, 0, 620, 620, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 621, 621, 0, 621, 0, 406, 0, 0, 0, + 620, 620, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 621, 0, 0, - 0, 0, 0, 0, 0, 0, 620, 0, 0, 0, - 0, 0, 0, 621, 0, 0, 0, 0, 0, 0, - 621, 0, 620, 0, 0, 0, 0, 0, 0, 620, - 621, 0, 0, 0, 621, 0, 0, 0, 0, 620, - 621, 0, 0, 620, 0, 0, 0, 447, 0, 620, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 327, 0, 0, 0, 0, 0, 0, 0, 328, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 329, 330, 331, 332, 333, 0, 0, 0, - 0, 0, 0, 0, 0, 334, 335, 336, 337, 338, - 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, - 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, - 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 506, 507, 0, 327, 0, 596, - 597, 0, 0, 0, 0, 598, 508, 509, 510, 511, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, - 330, 331, 332, 333, 0, 0, 0, 512, 513, 514, - 515, 516, 334, 335, 336, 337, 338, 339, 340, 599, - 600, 601, 602, 0, 603, 604, 605, 606, 607, 608, - 609, 610, 611, 612, 341, 342, 343, 344, 345, 346, - 517, 518, 519, 520, 521, 522, 523, 524, 347, 613, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 506, 507, 0, 327, 0, 596, 772, 0, 0, - 0, 0, 598, 508, 509, 510, 511, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 329, 330, 331, 332, - 333, 0, 0, 0, 512, 513, 514, 515, 516, 334, - 335, 336, 337, 338, 339, 340, 599, 600, 601, 602, - 0, 603, 604, 605, 606, 607, 608, 609, 610, 611, - 612, 341, 342, 343, 344, 345, 346, 517, 518, 519, - 520, 521, 522, 523, 524, 347, 613, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 1, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 0, 0, 504, - 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 327, 0, 596, 0, 0, 0, 0, 0, 598, - 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 329, 330, 331, 332, 333, 0, 0, - 0, 512, 513, 514, 515, 516, 334, 335, 336, 337, - 338, 339, 340, 599, 600, 601, 602, 0, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, 341, 342, - 343, 344, 345, 346, 517, 518, 519, 520, 521, 522, - 523, 524, 347, 613, 348, 349, 350, 351, 352, 353, - 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 506, 507, 0, 327, 0, - 489, 0, 0, 0, 0, 0, 598, 508, 509, 510, - 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 329, 330, 331, 332, 333, 0, 0, 0, 512, 513, - 514, 515, 516, 334, 335, 336, 337, 338, 339, 340, - 599, 600, 601, 602, 0, 603, 604, 605, 606, 607, - 608, 609, 610, 611, 612, 341, 342, 343, 344, 345, - 346, 517, 518, 519, 520, 521, 522, 523, 524, 347, - 613, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 1, 2, 3, 4, 5, + 0, 0, 621, 0, 0, 0, 0, 0, 0, 0, + 0, 620, 0, 0, 0, 0, 0, 0, 621, 0, + 0, 0, 0, 0, 0, 621, 0, 620, 0, 0, + 0, 0, 0, 0, 620, 621, 0, 0, 0, 621, + 0, 0, 0, 0, 620, 621, 0, 0, 620, 0, + 0, 0, 447, 0, 620, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -2049,16 +1823,16 @@ static const yytype_int16 yytable[] = 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, + 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 506, 507, 0, 327, 0, 0, 0, 0, - 0, 0, 0, 598, 508, 509, 510, 511, 0, 0, + 0, 0, 0, 0, 0, 327, 0, 0, 0, 0, + 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, - 332, 333, 0, 0, 0, 512, 513, 514, 515, 516, - 334, 335, 336, 337, 338, 339, 340, 599, 600, 601, - 602, 0, 603, 604, 605, 606, 607, 608, 609, 610, - 611, 612, 341, 342, 343, 344, 345, 346, 517, 518, - 519, 520, 521, 522, 523, 524, 347, 613, 348, 349, + 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, + 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 341, 342, 343, 344, 345, 346, 0, 0, + 0, 0, 0, 0, 0, 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, @@ -2097,14 +1871,14 @@ static const yytype_int16 yytable[] = 319, 320, 321, 322, 323, 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 506, - 507, 0, 327, 0, 0, 0, 0, 0, 0, 0, + 507, 0, 327, 0, 596, 597, 0, 0, 0, 0, 598, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, 332, 333, 0, 0, 0, 512, 513, 514, 515, 516, 334, 335, 336, - 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, + 337, 338, 339, 340, 599, 600, 601, 602, 0, 603, + 604, 605, 606, 607, 608, 609, 610, 611, 612, 341, 342, 343, 344, 345, 346, 517, 518, 519, 520, 521, - 522, 523, 524, 347, 0, 348, 349, 350, 351, 352, + 522, 523, 524, 347, 613, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 1, @@ -2139,18 +1913,18 @@ static const yytype_int16 yytable[] = 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 0, 0, 0, 320, 321, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 506, 507, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, + 0, 0, 0, 0, 0, 0, 506, 507, 0, 327, + 0, 596, 777, 0, 0, 0, 0, 598, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 329, 330, 331, 332, 0, 0, 0, 0, 512, + 0, 329, 330, 331, 332, 333, 0, 0, 0, 512, 513, 514, 515, 516, 334, 335, 336, 337, 338, 339, - 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 341, 342, 343, 344, + 340, 599, 600, 601, 602, 0, 603, 604, 605, 606, + 607, 608, 609, 610, 611, 612, 341, 342, 343, 344, 345, 346, 517, 518, 519, 520, 521, 522, 523, 524, - 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, + 347, 613, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, 4, @@ -2186,16 +1960,16 @@ static const yytype_int16 yytable[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, + 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 327, 0, 0, 0, - 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, + 0, 0, 0, 506, 507, 0, 327, 0, 596, 0, + 0, 0, 0, 0, 598, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, - 331, 332, 333, 0, 0, 0, 0, 0, 0, 0, - 0, 334, 335, 336, 337, 338, 339, 340, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 341, 342, 343, 344, 345, 346, 0, - 0, 0, 0, 0, 0, 0, 0, 347, 0, 348, + 331, 332, 333, 0, 0, 0, 512, 513, 514, 515, + 516, 334, 335, 336, 337, 338, 339, 340, 599, 600, + 601, 602, 0, 603, 604, 605, 606, 607, 608, 609, + 610, 611, 612, 341, 342, 343, 344, 345, 346, 517, + 518, 519, 520, 521, 522, 523, 524, 347, 613, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, @@ -2230,18 +2004,18 @@ static const yytype_int16 yytable[] = 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 0, 0, 320, 321, 322, 323, 324, 325, 326, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, + 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 329, 330, 331, 332, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 334, 335, - 336, 337, 338, 339, 340, 599, 0, 0, 602, 0, - 603, 604, 0, 0, 607, 0, 0, 0, 0, 0, - 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, - 0, 0, 0, 0, 347, 0, 348, 349, 350, 351, + 506, 507, 0, 327, 0, 489, 0, 0, 0, 0, + 0, 598, 508, 509, 510, 511, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 329, 330, 331, 332, 333, + 0, 0, 0, 512, 513, 514, 515, 516, 334, 335, + 336, 337, 338, 339, 340, 599, 600, 601, 602, 0, + 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, + 341, 342, 343, 344, 345, 346, 517, 518, 519, 520, + 521, 522, 523, 524, 347, 613, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, @@ -2276,18 +2050,18 @@ static const yytype_int16 yytable[] = 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 0, 0, 0, 320, - 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 440, 0, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 329, 330, 331, 332, 0, 0, 0, 0, - 0, 0, 0, 0, 441, 334, 335, 336, 337, 338, - 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, - 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, - 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, + 0, 0, 0, 0, 0, 0, 0, 506, 507, 0, + 327, 0, 0, 0, 0, 0, 0, 0, 598, 508, + 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 329, 330, 331, 332, 333, 0, 0, 0, + 512, 513, 514, 515, 516, 334, 335, 336, 337, 338, + 339, 340, 599, 600, 601, 602, 0, 603, 604, 605, + 606, 607, 608, 609, 610, 611, 612, 341, 342, 343, + 344, 345, 346, 517, 518, 519, 520, 521, 522, 523, + 524, 347, 613, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, @@ -2322,17 +2096,17 @@ static const yytype_int16 yytable[] = 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 0, 0, 0, 320, 321, 322, 323, - 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 327, 0, 0, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 506, 507, 0, 327, 0, 0, + 0, 0, 0, 0, 0, 598, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, - 330, 331, 332, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 334, 335, 336, 337, 338, 339, 340, 0, + 330, 331, 332, 333, 0, 0, 0, 512, 513, 514, + 515, 516, 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, 344, 345, 346, - 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, + 517, 518, 519, 520, 521, 522, 523, 524, 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, @@ -2369,16 +2143,16 @@ static const yytype_int16 yytable[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, 320, 321, 322, 323, 324, 325, 326, + 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 711, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 506, 507, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, 332, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, + 0, 0, 0, 0, 512, 513, 514, 515, 516, 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 342, 343, 344, 345, 346, 0, 0, 0, - 0, 0, 0, 0, 0, 347, 0, 348, 349, 350, + 0, 341, 342, 343, 344, 345, 346, 517, 518, 519, + 520, 521, 522, 523, 524, 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, @@ -2413,13 +2187,13 @@ static const yytype_int16 yytable[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 824, 0, 0, 0, 0, 0, + 0, 327, 0, 0, 0, 0, 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 329, 330, 331, 332, 0, 0, 0, + 0, 0, 0, 329, 330, 331, 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, 342, @@ -2463,11 +2237,11 @@ static const yytype_int16 yytable[] = 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 859, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 334, 335, 336, 337, 338, 339, 340, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 599, 0, 0, 602, 0, 603, 604, 0, 0, 607, 0, 0, 0, 0, 0, 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, @@ -2509,9 +2283,9 @@ static const yytype_int16 yytable[] = 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, - 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 332, 0, 0, 0, 0, 0, 0, 0, 0, 441, 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, 344, 345, 346, 0, 0, @@ -2519,50 +2293,235 @@ static const yytype_int16 yytable[] = 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, - 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 0, 0, 641, 779, 0, 0, 0, 0, 0, - 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 380, 381, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, + 0, 320, 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, - 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, + 0, 0, 327, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 329, 330, 331, 332, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 334, 335, 336, + 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, + 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, + 0, 0, 0, 347, 0, 348, 349, 350, 351, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 0, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 716, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 329, 330, 331, 332, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 334, 335, 336, 337, 338, 339, + 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 341, 342, 343, 344, + 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, + 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 1, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 0, 0, 0, 320, 321, 322, 323, 324, + 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, + 331, 332, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 334, 335, 336, 337, 338, 339, 340, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 341, 342, 343, 344, 345, 346, 0, + 0, 0, 0, 0, 0, 0, 0, 347, 0, 348, + 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 864, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 329, 330, 331, 332, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 334, 335, + 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, + 0, 0, 0, 0, 347, 0, 348, 349, 350, 351, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 0, 0, 0, 320, + 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 329, 330, 331, 332, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 334, 335, 336, 337, 338, + 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, + 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, + 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, @@ -2597,7 +2556,7 @@ static const yytype_int16 yytable[] = 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 0, 641, 890, + 0, 0, 0, 506, 507, 0, 0, 0, 641, 784, 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, @@ -2641,7 +2600,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 641, 895, 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, @@ -2684,7 +2643,7 @@ static const yytype_int16 yytable[] = 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 0, 641, 0, + 0, 0, 0, 506, 507, 0, 0, 580, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, @@ -2728,7 +2687,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 0, 738, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, @@ -2771,8 +2730,8 @@ static const yytype_int16 yytable[] = 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 749, 508, 509, 510, 511, 0, + 0, 0, 0, 506, 507, 0, 0, 743, 0, 0, + 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, @@ -2815,7 +2774,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, @@ -2862,7 +2821,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 516, 334, 0, 0, 0, 0, 339, 659, 0, 0, + 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, @@ -2905,8 +2864,8 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 699, 334, 0, 0, 0, - 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, + 0, 339, 659, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2943,340 +2902,156 @@ static const yytype_int16 yytable[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 506, 507, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 704, 334, 0, 0, 0, 0, 339, 340, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, + 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, + 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 0, 0, 0, 323, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 334, 0, 0, 0, 0, 339, 340 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 334, 0, 0, 0, + 0, 339, 340 }; -static const yytype_int16 yycheck[] = -{ - 0, 387, 0, 572, 507, 406, 498, 0, 486, 0, - 411, 0, 627, 439, 406, 444, 547, 552, 741, 445, - 406, 395, 557, 574, 338, 411, 355, 418, 333, 334, - 361, 566, 563, 639, 350, 641, 903, 353, 644, 350, - 575, 533, 387, 910, 350, 431, 353, 350, 361, 358, - 358, 353, 361, 920, 361, 351, 387, 486, 387, 361, - 374, 435, 370, 354, 369, 370, 411, 358, 384, 495, - 496, 335, 336, 384, 552, 504, 505, 451, 384, 557, - 383, 384, 385, 386, 352, 563, 331, 332, 566, 351, - 358, 353, 478, 353, 645, 353, 384, 575, 360, 387, - 360, 351, 360, 606, 353, 608, 351, 536, 353, 545, - 354, 360, 357, 352, 358, 551, 594, 553, 351, 358, - 556, 352, 558, 552, 560, 561, 351, 358, 557, 565, - 745, 351, 355, 352, 563, 358, 352, 566, 361, 358, - 358, 354, 358, 361, 713, 358, 575, 639, 351, 641, - 384, 654, 644, 387, 545, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 594, 658, 363, 352, 365, - 561, 351, 778, 351, 358, 360, 413, 414, 415, 416, - 417, 418, 419, 352, 352, 352, 572, 352, 574, 358, - 358, 358, 352, 358, 352, 351, 570, 352, 358, 352, - 358, 924, 352, 358, 352, 358, 352, 352, 358, 352, - 358, 352, 358, 358, 783, 358, 352, 358, 352, 352, - 352, 352, 358, 352, 358, 358, 358, 358, 353, 358, - 384, 846, 352, 387, 663, 351, 637, 361, 358, 383, - 384, 385, 386, 352, 747, 637, 384, 384, 751, 387, - 387, 637, 858, 724, 725, 726, 727, 384, 384, 645, - 387, 387, 384, 384, 358, 387, 387, 802, 803, 384, - 384, 369, 387, 387, 809, 810, 384, 769, 770, 387, - 358, 387, 708, 361, 815, 356, 778, 358, 717, 718, - 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, - 729, 730, 731, 732, 733, 734, 735, 358, 914, 358, - 361, 358, 361, 387, 361, 930, 376, 377, 378, 387, - 366, 367, 368, 355, 802, 803, 387, 713, 329, 330, - 387, 809, 810, 358, 359, 358, 359, 815, 355, 817, - 353, 844, 720, 721, 847, 722, 723, 728, 729, 387, - 353, 387, 361, 352, 360, 360, 358, 361, 387, 387, - 352, 358, 358, 358, 358, 350, 858, 351, 358, 387, - 358, 358, 358, 802, 803, 358, 358, 352, 351, 360, - 809, 810, 353, 351, 887, 354, 815, 387, 817, 353, - 337, 339, 354, 371, 373, 395, 387, 783, 372, 356, - 351, 904, 361, 403, 395, 403, 406, 387, 900, 361, - 403, 411, 403, 411, 403, 406, 919, 351, 411, 351, - 411, 421, 914, 361, 351, 361, 359, 351, 351, 387, - 361, 431, 430, 361, 387, 435, 361, 352, 360, 358, - 431, 358, 358, 352, 435, 352, 847, 358, 354, 354, - 350, 451, 395, 350, 384, 356, 352, 351, 387, 361, - 451, 847, 355, 352, 399, 360, 356, 355, 355, 361, - 731, 730, 735, 577, 435, 732, 431, 733, 478, 734, - 333, 435, 822, 707, 849, 909, 887, 478, 920, 489, - 921, 849, 429, 887, 798, 637, 568, 637, 489, 403, - 800, 887, 637, 813, 803, 817, 807, 805, -1, -1, - -1, -1, -1, 810, -1, -1, -1, -1, -1, -1, - 815, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 541, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 570, -1, 572, -1, 574, -1, -1, -1, -1, 570, - -1, 572, -1, 574, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 627, -1, -1, - -1, -1, -1, -1, -1, -1, 627, 637, -1, -1, - -1, -1, -1, -1, -1, 645, 637, -1, -1, -1, - -1, -1, -1, -1, 645, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 713, -1, -1, -1, -1, -1, -1, - -1, -1, 713, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 741, -1, -1, -1, 745, -1, -1, -1, -1, - 741, -1, -1, -1, 745, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 783, -1, -1, -1, -1, -1, -1, - -1, -1, 783, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 846, 847, -1, 849, - -1, 849, -1, -1, -1, 846, 847, -1, 849, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 887, -1, -1, - -1, -1, -1, -1, -1, -1, 887, -1, -1, -1, - -1, -1, -1, 903, -1, -1, -1, -1, -1, -1, - 910, -1, 903, -1, -1, -1, -1, -1, -1, 910, - 920, -1, -1, -1, 924, -1, -1, -1, -1, 920, - 930, -1, -1, 924, -1, -1, -1, 0, -1, 930, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 353, -1, -1, -1, -1, -1, -1, -1, 361, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, 376, 377, 378, 379, -1, -1, -1, - -1, -1, -1, -1, -1, 388, 389, 390, 391, 392, - 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, - 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, - -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 350, 351, -1, 353, -1, 355, - 356, -1, -1, -1, -1, 361, 362, 363, 364, 365, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, - 376, 377, 378, 379, -1, -1, -1, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, 398, -1, 400, 401, 402, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 350, 351, -1, 353, -1, 355, 356, -1, -1, - -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - 379, -1, -1, -1, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - -1, 400, 401, 402, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, -1, -1, 331, - 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, 353, -1, 355, -1, -1, -1, -1, -1, 361, - 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 375, 376, 377, 378, 379, -1, -1, - -1, 383, 384, 385, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, -1, 400, 401, - 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, -1, -1, 331, 332, -1, -1, +static const yytype_int16 yycheck[] = +{ + 0, 387, 0, 498, 486, 507, 406, 627, 547, 0, + 639, 411, 641, 0, 0, 644, 444, 439, 552, 557, + 406, 406, 572, 445, 563, 411, 746, 395, 418, 574, + 350, 361, 566, 338, 350, 333, 334, 353, 533, 358, + 353, 575, 908, 355, 350, 431, 350, 361, 361, 915, + 352, 370, 351, 353, 353, 387, 358, 387, 486, 925, + 360, 360, 351, 383, 384, 385, 386, 435, 384, 374, + 552, 369, 370, 495, 496, 387, 504, 505, 384, 411, + 384, 563, 353, 451, 566, 331, 332, 353, 353, 351, + 361, 352, 478, 575, 360, 360, 355, 358, 358, 358, + 645, 361, 361, 352, 606, 351, 608, 353, 536, 358, + 351, 357, 594, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 352, 552, 358, 352, 352, 361, 358, + 750, 352, 358, 360, 352, 563, 352, 358, 566, 352, + 358, 356, 358, 358, 639, 358, 641, 575, 351, 644, + 352, 352, 654, 352, 783, 545, 358, 358, 352, 358, + 351, 545, 384, 658, 358, 387, 594, 551, 718, 553, + 351, 561, 556, 352, 558, 353, 560, 561, 352, 358, + 387, 565, 358, 354, 358, 361, 572, 358, 574, 413, + 414, 415, 416, 417, 418, 419, 369, 352, 352, 352, + 352, 352, 570, 358, 358, 358, 358, 358, 352, 929, + 352, 352, 352, 352, 358, 352, 358, 358, 358, 358, + 352, 358, 384, 354, 354, 387, 358, 358, 358, 358, + 358, 851, 361, 361, 863, 663, 384, 637, 788, 387, + 383, 384, 385, 386, 387, 383, 384, 385, 386, 358, + 752, 637, 637, 351, 756, 729, 730, 731, 732, 645, + 384, 384, 384, 387, 387, 387, 384, 384, 384, 387, + 387, 387, 384, 807, 808, 387, 814, 815, 351, 774, + 775, 820, 384, 384, 358, 387, 387, 361, 783, 351, + 919, 713, 329, 330, 722, 723, 724, 725, 726, 727, + 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, + 738, 739, 740, 335, 336, 935, 376, 377, 378, 366, + 367, 368, 363, 351, 365, 807, 808, 358, 359, 358, + 359, 361, 718, 725, 726, 387, 727, 728, 820, 387, + 822, 355, 387, 355, 733, 734, 353, 849, 387, 387, + 852, 353, 387, 352, 387, 361, 360, 358, 361, 354, + 387, 351, 358, 360, 358, 358, 358, 387, 863, 358, + 358, 352, 352, 358, 358, 358, 358, 351, 353, 807, + 808, 360, 351, 353, 350, 337, 339, 387, 356, 354, + 892, 351, 820, 351, 822, 395, 387, 373, 361, 372, + 371, 351, 788, 403, 395, 403, 406, 909, 359, 387, + 905, 411, 403, 411, 361, 406, 403, 403, 361, 351, + 411, 421, 924, 361, 919, 411, 361, 361, 361, 351, + 351, 431, 430, 387, 352, 435, 360, 352, 387, 358, + 431, 358, 358, 352, 435, 358, 354, 354, 350, 395, + 350, 451, 852, 384, 352, 356, 351, 387, 355, 352, + 451, 360, 399, 355, 355, 361, 852, 361, 356, 736, + 738, 735, 431, 435, 737, 333, 712, 577, 478, 435, + 827, 739, 854, 740, 914, 925, 892, 478, 926, 489, + 429, 854, 892, 403, 805, 803, 568, 812, 489, 808, + 810, 637, 637, 637, 822, -1, 892, -1, 815, -1, + -1, 814, -1, -1, -1, -1, -1, 818, -1, -1, + -1, -1, -1, 820, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 350, 351, -1, 353, -1, - 355, -1, -1, -1, -1, -1, 361, 362, 363, 364, - 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 375, 376, 377, 378, 379, -1, -1, -1, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, -1, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 3, 4, 5, 6, 7, + -1, -1, -1, 541, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 570, -1, 572, -1, 574, -1, -1, -1, -1, 570, + -1, 572, -1, 574, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 627, -1, -1, + -1, -1, -1, -1, -1, -1, 627, 637, -1, -1, + -1, -1, -1, -1, -1, 645, 637, -1, -1, -1, + -1, -1, -1, -1, 645, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 718, -1, + -1, -1, -1, -1, -1, -1, -1, 718, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 746, -1, -1, -1, + 750, -1, -1, -1, -1, 746, -1, -1, -1, 750, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 788, -1, + -1, -1, -1, -1, -1, -1, -1, 788, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 851, 852, -1, 854, -1, 854, -1, -1, -1, + 851, 852, -1, 854, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 892, -1, -1, -1, -1, -1, -1, -1, + -1, 892, -1, -1, -1, -1, -1, -1, 908, -1, + -1, -1, -1, -1, -1, 915, -1, 908, -1, -1, + -1, -1, -1, -1, 915, 925, -1, -1, -1, 929, + -1, -1, -1, -1, 925, 935, -1, -1, 929, -1, + -1, -1, 0, -1, 935, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -3309,16 +3084,16 @@ static const yytype_int16 yycheck[] = 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, + 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 350, 351, -1, 353, -1, -1, -1, -1, - -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, + -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, + -1, -1, -1, 361, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, - 378, 379, -1, -1, -1, 383, 384, 385, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, -1, 400, 401, 402, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 378, 379, -1, -1, -1, -1, -1, -1, -1, -1, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 410, 411, 412, 413, 414, 415, -1, -1, + -1, -1, -1, -1, -1, -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, @@ -3357,14 +3132,14 @@ static const yytype_int16 yycheck[] = 321, 322, 323, 324, 325, 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 350, - 351, -1, 353, -1, -1, -1, -1, -1, -1, -1, + 351, -1, 353, -1, 355, 356, -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, 379, -1, -1, -1, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, + 391, 392, 393, 394, 395, 396, 397, 398, -1, 400, + 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 3, @@ -3399,18 +3174,18 @@ static const yytype_int16 yycheck[] = 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, -1, -1, -1, 322, 323, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 350, 351, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 362, 363, + -1, -1, -1, -1, -1, -1, 350, 351, -1, 353, + -1, 355, 356, -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 375, 376, 377, 378, -1, -1, -1, -1, 383, + -1, 375, 376, 377, 378, 379, -1, -1, -1, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 410, 411, 412, 413, + 394, 395, 396, 397, 398, -1, 400, 401, 402, 403, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, 6, @@ -3446,16 +3221,16 @@ static const yytype_int16 yycheck[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, + 327, 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, - -1, -1, -1, -1, 361, -1, -1, -1, -1, -1, + -1, -1, -1, 350, 351, -1, 353, -1, 355, -1, + -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, - 377, 378, 379, -1, -1, -1, -1, -1, -1, -1, - -1, 388, 389, 390, 391, 392, 393, 394, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 410, 411, 412, 413, 414, 415, -1, - -1, -1, -1, -1, -1, -1, -1, 424, -1, 426, + 377, 378, 379, -1, -1, -1, 383, 384, 385, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, 398, -1, 400, 401, 402, 403, 404, 405, 406, + 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, @@ -3490,18 +3265,18 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, - -1, -1, 322, 323, 324, 325, 326, 327, 328, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, + -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 375, 376, 377, 378, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 388, 389, - 390, 391, 392, 393, 394, 395, -1, -1, 398, -1, - 400, 401, -1, -1, 404, -1, -1, -1, -1, -1, - 410, 411, 412, 413, 414, 415, -1, -1, -1, -1, - -1, -1, -1, -1, 424, -1, 426, 427, 428, 429, + 350, 351, -1, 353, -1, 355, -1, -1, -1, -1, + -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 375, 376, 377, 378, 379, + -1, -1, -1, 383, 384, 385, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, -1, + 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, @@ -3536,18 +3311,18 @@ static const yytype_int16 yycheck[] = 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, -1, -1, -1, 322, - 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 361, -1, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, + 323, 324, 325, 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, 376, 377, 378, -1, -1, -1, -1, - -1, -1, -1, -1, 387, 388, 389, 390, 391, 392, - 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, - 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, - -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, + -1, -1, -1, -1, -1, -1, -1, 350, 351, -1, + 353, -1, -1, -1, -1, -1, -1, -1, 361, 362, + 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 375, 376, 377, 378, 379, -1, -1, -1, + 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, -1, 400, 401, 402, + 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, + 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, + 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, @@ -3582,17 +3357,17 @@ static const yytype_int16 yycheck[] = 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 353, -1, -1, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 350, 351, -1, 353, -1, -1, + -1, -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, - 376, 377, 378, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 388, 389, 390, 391, 392, 393, 394, -1, + 376, 377, 378, 379, -1, -1, -1, 383, 384, 385, + 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, 413, 414, 415, - -1, -1, -1, -1, -1, -1, -1, -1, 424, -1, + 416, 417, 418, 419, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, @@ -3629,16 +3404,16 @@ static const yytype_int16 yycheck[] = 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 356, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 350, 351, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 388, + -1, -1, -1, -1, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 410, 411, 412, 413, 414, 415, -1, -1, -1, - -1, -1, -1, -1, -1, 424, -1, 426, 427, 428, + -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, @@ -3673,13 +3448,13 @@ static const yytype_int16 yycheck[] = 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 356, -1, -1, -1, -1, -1, + -1, 353, -1, -1, -1, -1, -1, -1, -1, 361, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 375, 376, 377, 378, -1, -1, -1, + -1, -1, -1, 375, 376, 377, 378, 379, -1, -1, -1, -1, -1, -1, -1, -1, 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, 411, @@ -3723,11 +3498,11 @@ static const yytype_int16 yycheck[] = 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 356, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, -1, -1, -1, -1, -1, -1, -1, -1, -1, 388, 389, 390, 391, 392, 393, 394, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 395, -1, -1, 398, -1, 400, 401, -1, -1, 404, -1, -1, -1, -1, -1, 410, 411, 412, 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, 434, @@ -3769,60 +3544,245 @@ static const yytype_int16 yycheck[] = 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 361, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, + 378, -1, -1, -1, -1, -1, -1, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 410, 411, 412, 413, 414, 415, -1, -1, + -1, -1, -1, -1, -1, -1, 424, -1, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 353, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 375, 376, 377, 378, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 388, 389, 390, + 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, + 411, 412, 413, 414, 415, -1, -1, -1, -1, -1, + -1, -1, -1, 424, -1, 426, 427, 428, 429, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 375, 376, 377, 378, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 388, 389, 390, 391, 392, 393, + 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 410, 411, 412, 413, + 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, + 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 356, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, + 377, 378, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 388, 389, 390, 391, 392, 393, 394, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 410, 411, 412, 413, 414, 415, -1, + -1, -1, -1, -1, -1, -1, -1, 424, -1, 426, + 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 356, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 375, 376, 377, 378, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 388, 389, + 390, 391, 392, 393, 394, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 410, 411, 412, 413, 414, 415, -1, -1, -1, -1, + -1, -1, -1, -1, 424, -1, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, - 378, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 410, 411, 412, 413, 414, 415, -1, -1, - -1, -1, -1, -1, -1, -1, 424, -1, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, - 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, -1, -1, 355, 356, -1, -1, -1, -1, -1, - 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, - -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, - 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, + -1, -1, 375, 376, 377, 378, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 388, 389, 390, 391, 392, + 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, + 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, + -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -3901,7 +3861,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 355, 356, -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, @@ -3944,7 +3904,7 @@ static const yytype_int16 yycheck[] = 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, -1, -1, 355, -1, + -1, -1, -1, 350, 351, -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, @@ -3988,7 +3948,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, -1, 354, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 355, -1, -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, @@ -4031,8 +3991,8 @@ static const yytype_int16 yycheck[] = 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, + -1, -1, -1, 350, 351, -1, -1, 354, -1, -1, + -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, @@ -4075,7 +4035,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, @@ -4203,13 +4163,57 @@ static const yytype_int16 yycheck[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, + -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 350, 351, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, + 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, + 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, + -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, + -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 388, -1, -1, -1, -1, 393, 394 + -1, -1, -1, -1, -1, -1, 388, -1, -1, -1, + -1, 393, 394 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4257,13 +4261,13 @@ static const yytype_int16 yystos[] = 458, 459, 491, 492, 495, 496, 497, 498, 502, 503, 504, 505, 506, 507, 510, 511, 512, 513, 514, 516, 521, 522, 523, 564, 565, 566, 568, 575, 579, 580, - 585, 588, 351, 351, 351, 351, 351, 351, 351, 351, + 586, 589, 351, 351, 351, 351, 351, 351, 351, 351, 353, 522, 355, 387, 351, 351, 361, 387, 361, 567, 352, 358, 499, 500, 501, 511, 516, 358, 361, 387, 361, 387, 512, 516, 369, 518, 519, 0, 565, 496, - 504, 511, 361, 495, 387, 571, 572, 589, 590, 384, + 504, 511, 361, 495, 387, 571, 572, 590, 591, 384, 387, 571, 384, 571, 384, 571, 384, 571, 384, 571, - 571, 589, 384, 571, 387, 569, 570, 516, 525, 355, + 571, 590, 384, 571, 387, 569, 570, 516, 525, 355, 387, 411, 508, 509, 387, 515, 353, 361, 517, 355, 543, 568, 500, 499, 501, 387, 387, 351, 360, 517, 355, 358, 361, 494, 331, 332, 350, 351, 362, 363, @@ -4283,33 +4287,33 @@ static const yytype_int16 yystos[] = 517, 355, 487, 530, 360, 493, 387, 358, 361, 472, 472, 489, 331, 332, 353, 357, 352, 352, 358, 394, 487, 351, 472, 358, 370, 568, 350, 353, 384, 572, - 589, 387, 590, 350, 383, 384, 385, 386, 576, 577, + 590, 387, 591, 350, 383, 384, 385, 386, 576, 577, 384, 485, 490, 578, 384, 383, 384, 385, 386, 581, - 582, 384, 490, 583, 384, 350, 584, 384, 589, 387, - 490, 586, 587, 384, 490, 354, 570, 516, 387, 528, - 529, 356, 527, 526, 490, 509, 387, 366, 367, 368, - 363, 365, 329, 330, 333, 334, 369, 370, 335, 336, - 373, 372, 371, 337, 339, 338, 374, 354, 354, 485, - 356, 537, 351, 361, 361, 558, 351, 351, 361, 361, - 489, 351, 489, 359, 361, 361, 361, 361, 340, 341, - 342, 343, 344, 345, 346, 347, 348, 349, 360, 488, - 358, 361, 356, 533, 547, 551, 556, 530, 360, 356, - 530, 531, 530, 526, 387, 352, 464, 489, 387, 487, - 472, 350, 384, 573, 574, 352, 360, 352, 358, 352, - 358, 352, 358, 358, 352, 358, 352, 358, 352, 358, - 358, 352, 358, 358, 352, 358, 352, 358, 352, 352, - 528, 517, 358, 361, 356, 472, 472, 472, 474, 474, - 475, 475, 476, 476, 476, 476, 477, 477, 478, 479, - 480, 481, 482, 483, 486, 354, 544, 557, 533, 559, - 489, 361, 489, 359, 487, 487, 530, 356, 358, 356, - 354, 354, 358, 354, 358, 577, 576, 490, 578, 582, - 581, 490, 583, 350, 584, 586, 587, 361, 529, 489, - 538, 489, 504, 549, 395, 532, 545, 560, 352, 352, - 356, 530, 350, 384, 352, 352, 352, 352, 352, 352, - 359, 356, 387, 352, 351, 549, 561, 562, 540, 541, - 542, 548, 552, 487, 360, 534, 539, 543, 489, 361, - 352, 399, 536, 534, 355, 530, 352, 489, 539, 540, - 544, 553, 361, 356 + 582, 384, 383, 384, 385, 386, 461, 583, 584, 384, + 350, 585, 384, 590, 387, 490, 587, 588, 384, 490, + 354, 570, 516, 387, 528, 529, 356, 527, 526, 490, + 509, 387, 366, 367, 368, 363, 365, 329, 330, 333, + 334, 369, 370, 335, 336, 373, 372, 371, 337, 339, + 338, 374, 354, 354, 485, 356, 537, 351, 361, 361, + 558, 351, 351, 361, 361, 489, 351, 489, 359, 361, + 361, 361, 361, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 360, 488, 358, 361, 356, 533, 547, + 551, 556, 530, 360, 356, 530, 531, 530, 526, 387, + 352, 464, 489, 387, 487, 472, 350, 384, 573, 574, + 352, 360, 352, 358, 352, 358, 352, 358, 358, 352, + 358, 352, 358, 352, 358, 358, 352, 358, 358, 352, + 358, 352, 358, 352, 352, 528, 517, 358, 361, 356, + 472, 472, 472, 474, 474, 475, 475, 476, 476, 476, + 476, 477, 477, 478, 479, 480, 481, 482, 483, 486, + 354, 544, 557, 533, 559, 489, 361, 489, 359, 487, + 487, 530, 356, 358, 356, 354, 354, 358, 354, 358, + 577, 576, 490, 578, 582, 581, 584, 583, 350, 585, + 587, 588, 361, 529, 489, 538, 489, 504, 549, 395, + 532, 545, 560, 352, 352, 356, 530, 350, 384, 352, + 352, 352, 352, 352, 352, 359, 356, 387, 352, 351, + 549, 561, 562, 540, 541, 542, 548, 552, 487, 360, + 534, 539, 543, 489, 361, 352, 399, 536, 534, 355, + 530, 352, 489, 539, 540, 544, 553, 361, 356 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -4382,8 +4386,9 @@ static const yytype_int16 yyr1[] = 574, 575, 575, 575, 575, 575, 575, 576, 576, 577, 577, 577, 577, 577, 578, 578, 579, 579, 580, 580, 580, 580, 580, 580, 580, 580, 581, 581, 582, 582, - 582, 582, 583, 583, 584, 584, 585, 585, 585, 585, - 586, 586, 587, 588, 588, 589, 589, 590, 590 + 582, 582, 583, 583, 584, 584, 584, 584, 584, 585, + 585, 586, 586, 586, 586, 587, 587, 588, 589, 589, + 590, 590, 591, 591 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4456,8 +4461,9 @@ static const yytype_int8 yyr2[] = 3, 4, 6, 6, 8, 6, 8, 1, 3, 1, 1, 1, 1, 1, 1, 3, 4, 6, 4, 6, 6, 8, 6, 8, 6, 8, 1, 3, 1, 1, - 1, 1, 1, 3, 1, 3, 6, 8, 4, 6, - 1, 3, 1, 4, 6, 1, 3, 3, 3 + 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, + 3, 6, 8, 4, 6, 1, 3, 1, 4, 6, + 1, 3, 3, 3 }; @@ -5207,7 +5213,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5211 "MachineIndependent/glslang_tab.cpp" +#line 5217 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ @@ -5215,7 +5221,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5219 "MachineIndependent/glslang_tab.cpp" +#line 5225 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ @@ -5225,7 +5231,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5229 "MachineIndependent/glslang_tab.cpp" +#line 5235 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ @@ -5233,7 +5239,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5237 "MachineIndependent/glslang_tab.cpp" +#line 5243 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ @@ -5241,7 +5247,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5245 "MachineIndependent/glslang_tab.cpp" +#line 5251 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ @@ -5250,7 +5256,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5254 "MachineIndependent/glslang_tab.cpp" +#line 5260 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ @@ -5258,7 +5264,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5262 "MachineIndependent/glslang_tab.cpp" +#line 5268 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ @@ -5266,7 +5272,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5270 "MachineIndependent/glslang_tab.cpp" +#line 5276 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ @@ -5275,7 +5281,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5279 "MachineIndependent/glslang_tab.cpp" +#line 5285 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ @@ -5284,7 +5290,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5288 "MachineIndependent/glslang_tab.cpp" +#line 5294 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ @@ -5293,7 +5299,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5297 "MachineIndependent/glslang_tab.cpp" +#line 5303 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ @@ -5302,7 +5308,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5306 "MachineIndependent/glslang_tab.cpp" +#line 5312 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ @@ -5311,7 +5317,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5315 "MachineIndependent/glslang_tab.cpp" +#line 5321 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ @@ -5320,7 +5326,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5324 "MachineIndependent/glslang_tab.cpp" +#line 5330 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ @@ -5331,7 +5337,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5335 "MachineIndependent/glslang_tab.cpp" +#line 5341 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ @@ -5340,7 +5346,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5344 "MachineIndependent/glslang_tab.cpp" +#line 5350 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ @@ -5348,7 +5354,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5352 "MachineIndependent/glslang_tab.cpp" +#line 5358 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ @@ -5356,7 +5362,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5360 "MachineIndependent/glslang_tab.cpp" +#line 5366 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ @@ -5364,7 +5370,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5368 "MachineIndependent/glslang_tab.cpp" +#line 5374 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ @@ -5372,7 +5378,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5376 "MachineIndependent/glslang_tab.cpp" +#line 5382 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ @@ -5382,7 +5388,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5386 "MachineIndependent/glslang_tab.cpp" +#line 5392 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ @@ -5392,7 +5398,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5396 "MachineIndependent/glslang_tab.cpp" +#line 5402 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ @@ -5401,7 +5407,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5405 "MachineIndependent/glslang_tab.cpp" +#line 5411 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ @@ -5410,7 +5416,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5414 "MachineIndependent/glslang_tab.cpp" +#line 5420 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ @@ -5418,7 +5424,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5422 "MachineIndependent/glslang_tab.cpp" +#line 5428 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ @@ -5427,7 +5433,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5431 "MachineIndependent/glslang_tab.cpp" +#line 5437 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ @@ -5436,7 +5442,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5440 "MachineIndependent/glslang_tab.cpp" +#line 5446 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ @@ -5444,7 +5450,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5448 "MachineIndependent/glslang_tab.cpp" +#line 5454 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ @@ -5452,7 +5458,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5456 "MachineIndependent/glslang_tab.cpp" +#line 5462 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ @@ -5464,7 +5470,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5468 "MachineIndependent/glslang_tab.cpp" +#line 5474 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ @@ -5476,7 +5482,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5480 "MachineIndependent/glslang_tab.cpp" +#line 5486 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ @@ -5484,7 +5490,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5488 "MachineIndependent/glslang_tab.cpp" +#line 5494 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ @@ -5494,7 +5500,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5498 "MachineIndependent/glslang_tab.cpp" +#line 5504 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ @@ -5526,7 +5532,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5530 "MachineIndependent/glslang_tab.cpp" +#line 5536 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ @@ -5536,7 +5542,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5540 "MachineIndependent/glslang_tab.cpp" +#line 5546 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ @@ -5547,7 +5553,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5551 "MachineIndependent/glslang_tab.cpp" +#line 5557 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ @@ -5556,7 +5562,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5560 "MachineIndependent/glslang_tab.cpp" +#line 5566 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ @@ -5565,7 +5571,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5569 "MachineIndependent/glslang_tab.cpp" +#line 5575 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ @@ -5586,38 +5592,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5590 "MachineIndependent/glslang_tab.cpp" +#line 5596 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ #line 628 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5596 "MachineIndependent/glslang_tab.cpp" +#line 5602 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ #line 629 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5602 "MachineIndependent/glslang_tab.cpp" +#line 5608 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ #line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5608 "MachineIndependent/glslang_tab.cpp" +#line 5614 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ #line 631 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5615 "MachineIndependent/glslang_tab.cpp" +#line 5621 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ #line 637 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5621 "MachineIndependent/glslang_tab.cpp" +#line 5627 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ @@ -5627,7 +5633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5631 "MachineIndependent/glslang_tab.cpp" +#line 5637 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ @@ -5637,7 +5643,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5641 "MachineIndependent/glslang_tab.cpp" +#line 5647 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ @@ -5648,13 +5654,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5652 "MachineIndependent/glslang_tab.cpp" +#line 5658 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ #line 657 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5658 "MachineIndependent/glslang_tab.cpp" +#line 5664 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ @@ -5664,7 +5670,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5668 "MachineIndependent/glslang_tab.cpp" +#line 5674 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ @@ -5674,13 +5680,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5678 "MachineIndependent/glslang_tab.cpp" +#line 5684 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ #line 671 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5684 "MachineIndependent/glslang_tab.cpp" +#line 5690 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ @@ -5691,7 +5697,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5695 "MachineIndependent/glslang_tab.cpp" +#line 5701 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ @@ -5702,13 +5708,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5706 "MachineIndependent/glslang_tab.cpp" +#line 5712 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ #line 687 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5712 "MachineIndependent/glslang_tab.cpp" +#line 5718 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ @@ -5718,7 +5724,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5722 "MachineIndependent/glslang_tab.cpp" +#line 5728 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ @@ -5728,7 +5734,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5732 "MachineIndependent/glslang_tab.cpp" +#line 5738 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ @@ -5738,7 +5744,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5742 "MachineIndependent/glslang_tab.cpp" +#line 5748 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ @@ -5748,13 +5754,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5752 "MachineIndependent/glslang_tab.cpp" +#line 5758 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ #line 711 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5758 "MachineIndependent/glslang_tab.cpp" +#line 5764 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ @@ -5768,7 +5774,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5772 "MachineIndependent/glslang_tab.cpp" +#line 5778 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ @@ -5782,13 +5788,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5786 "MachineIndependent/glslang_tab.cpp" +#line 5792 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ #line 733 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5792 "MachineIndependent/glslang_tab.cpp" +#line 5798 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ @@ -5799,13 +5805,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5803 "MachineIndependent/glslang_tab.cpp" +#line 5809 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ #line 743 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5809 "MachineIndependent/glslang_tab.cpp" +#line 5815 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ @@ -5816,13 +5822,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5820 "MachineIndependent/glslang_tab.cpp" +#line 5826 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ #line 753 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5826 "MachineIndependent/glslang_tab.cpp" +#line 5832 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ @@ -5833,13 +5839,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5837 "MachineIndependent/glslang_tab.cpp" +#line 5843 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ #line 763 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5843 "MachineIndependent/glslang_tab.cpp" +#line 5849 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ @@ -5849,13 +5855,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5853 "MachineIndependent/glslang_tab.cpp" +#line 5859 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ #line 772 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5859 "MachineIndependent/glslang_tab.cpp" +#line 5865 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ @@ -5865,13 +5871,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5869 "MachineIndependent/glslang_tab.cpp" +#line 5875 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ #line 781 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5875 "MachineIndependent/glslang_tab.cpp" +#line 5881 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ @@ -5881,13 +5887,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5885 "MachineIndependent/glslang_tab.cpp" +#line 5891 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ #line 790 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5891 "MachineIndependent/glslang_tab.cpp" +#line 5897 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ @@ -5895,7 +5901,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { ++parseContext.controlFlowNestingLevel; } -#line 5899 "MachineIndependent/glslang_tab.cpp" +#line 5905 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ @@ -5912,13 +5918,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5916 "MachineIndependent/glslang_tab.cpp" +#line 5922 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ #line 809 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5922 "MachineIndependent/glslang_tab.cpp" +#line 5928 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ @@ -5936,7 +5942,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5940 "MachineIndependent/glslang_tab.cpp" +#line 5946 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ @@ -5945,7 +5951,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5949 "MachineIndependent/glslang_tab.cpp" +#line 5955 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ @@ -5954,7 +5960,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5958 "MachineIndependent/glslang_tab.cpp" +#line 5964 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ @@ -5963,7 +5969,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5967 "MachineIndependent/glslang_tab.cpp" +#line 5973 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ @@ -5973,7 +5979,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5977 "MachineIndependent/glslang_tab.cpp" +#line 5983 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ @@ -5982,7 +5988,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5986 "MachineIndependent/glslang_tab.cpp" +#line 5992 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ @@ -5991,7 +5997,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 5995 "MachineIndependent/glslang_tab.cpp" +#line 6001 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ @@ -6000,7 +6006,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6004 "MachineIndependent/glslang_tab.cpp" +#line 6010 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ @@ -6009,7 +6015,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6013 "MachineIndependent/glslang_tab.cpp" +#line 6019 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ @@ -6018,7 +6024,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6022 "MachineIndependent/glslang_tab.cpp" +#line 6028 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ @@ -6027,7 +6033,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6031 "MachineIndependent/glslang_tab.cpp" +#line 6037 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ @@ -6036,7 +6042,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6040 "MachineIndependent/glslang_tab.cpp" +#line 6046 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ @@ -6044,7 +6050,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6048 "MachineIndependent/glslang_tab.cpp" +#line 6054 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ @@ -6057,7 +6063,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6061 "MachineIndependent/glslang_tab.cpp" +#line 6067 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ @@ -6066,7 +6072,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6070 "MachineIndependent/glslang_tab.cpp" +#line 6076 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ @@ -6076,7 +6082,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6080 "MachineIndependent/glslang_tab.cpp" +#line 6086 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ @@ -6088,7 +6094,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6092 "MachineIndependent/glslang_tab.cpp" +#line 6098 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ @@ -6098,7 +6104,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6102 "MachineIndependent/glslang_tab.cpp" +#line 6108 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ @@ -6108,7 +6114,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6112 "MachineIndependent/glslang_tab.cpp" +#line 6118 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ @@ -6120,7 +6126,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6124 "MachineIndependent/glslang_tab.cpp" +#line 6130 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ @@ -6129,7 +6135,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6133 "MachineIndependent/glslang_tab.cpp" +#line 6139 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ @@ -6138,7 +6144,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6142 "MachineIndependent/glslang_tab.cpp" +#line 6148 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ @@ -6147,7 +6153,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6151 "MachineIndependent/glslang_tab.cpp" +#line 6157 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ @@ -6157,7 +6163,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6161 "MachineIndependent/glslang_tab.cpp" +#line 6167 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ @@ -6167,7 +6173,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6171 "MachineIndependent/glslang_tab.cpp" +#line 6177 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ @@ -6178,13 +6184,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6182 "MachineIndependent/glslang_tab.cpp" +#line 6188 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ #line 957 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6188 "MachineIndependent/glslang_tab.cpp" +#line 6194 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ @@ -6198,7 +6204,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6202 "MachineIndependent/glslang_tab.cpp" +#line 6208 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ @@ -6207,7 +6213,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6211 "MachineIndependent/glslang_tab.cpp" +#line 6217 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ @@ -6216,7 +6222,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6220 "MachineIndependent/glslang_tab.cpp" +#line 6226 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ @@ -6225,7 +6231,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6229 "MachineIndependent/glslang_tab.cpp" +#line 6235 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ @@ -6236,7 +6242,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6240 "MachineIndependent/glslang_tab.cpp" +#line 6246 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ @@ -6247,7 +6253,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6251 "MachineIndependent/glslang_tab.cpp" +#line 6257 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ @@ -6259,7 +6265,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6263 "MachineIndependent/glslang_tab.cpp" +#line 6269 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ @@ -6267,7 +6273,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6271 "MachineIndependent/glslang_tab.cpp" +#line 6277 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ @@ -6275,7 +6281,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6279 "MachineIndependent/glslang_tab.cpp" +#line 6285 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ @@ -6288,7 +6294,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6292 "MachineIndependent/glslang_tab.cpp" +#line 6298 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ @@ -6310,7 +6316,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6314 "MachineIndependent/glslang_tab.cpp" +#line 6320 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ @@ -6334,7 +6340,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6338 "MachineIndependent/glslang_tab.cpp" +#line 6344 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ @@ -6354,7 +6360,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6358 "MachineIndependent/glslang_tab.cpp" +#line 6364 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ @@ -6378,7 +6384,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6382 "MachineIndependent/glslang_tab.cpp" +#line 6388 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ @@ -6394,7 +6400,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6398 "MachineIndependent/glslang_tab.cpp" +#line 6404 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ @@ -6406,7 +6412,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6410 "MachineIndependent/glslang_tab.cpp" +#line 6416 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ @@ -6421,7 +6427,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6425 "MachineIndependent/glslang_tab.cpp" +#line 6431 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ @@ -6433,7 +6439,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6437 "MachineIndependent/glslang_tab.cpp" +#line 6443 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ @@ -6444,7 +6450,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6448 "MachineIndependent/glslang_tab.cpp" +#line 6454 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ @@ -6452,7 +6458,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 6456 "MachineIndependent/glslang_tab.cpp" +#line 6462 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ @@ -6461,7 +6467,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6465 "MachineIndependent/glslang_tab.cpp" +#line 6471 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ @@ -6470,7 +6476,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6474 "MachineIndependent/glslang_tab.cpp" +#line 6480 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ @@ -6480,7 +6486,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6484 "MachineIndependent/glslang_tab.cpp" +#line 6490 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ @@ -6490,7 +6496,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6494 "MachineIndependent/glslang_tab.cpp" +#line 6500 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ @@ -6502,7 +6508,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6506 "MachineIndependent/glslang_tab.cpp" +#line 6512 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ @@ -6512,7 +6518,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6516 "MachineIndependent/glslang_tab.cpp" +#line 6522 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ @@ -6522,7 +6528,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6526 "MachineIndependent/glslang_tab.cpp" +#line 6532 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ @@ -6532,7 +6538,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6536 "MachineIndependent/glslang_tab.cpp" +#line 6542 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -6542,7 +6548,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6546 "MachineIndependent/glslang_tab.cpp" +#line 6552 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ @@ -6557,7 +6563,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 6561 "MachineIndependent/glslang_tab.cpp" +#line 6567 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ @@ -6586,7 +6592,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6590 "MachineIndependent/glslang_tab.cpp" +#line 6596 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ @@ -6597,7 +6603,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6601 "MachineIndependent/glslang_tab.cpp" +#line 6607 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ @@ -6609,7 +6615,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6613 "MachineIndependent/glslang_tab.cpp" +#line 6619 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ @@ -6621,7 +6627,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6625 "MachineIndependent/glslang_tab.cpp" +#line 6631 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ @@ -6633,7 +6639,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6637 "MachineIndependent/glslang_tab.cpp" +#line 6643 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ @@ -6645,7 +6651,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6649 "MachineIndependent/glslang_tab.cpp" +#line 6655 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ @@ -6658,7 +6664,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6662 "MachineIndependent/glslang_tab.cpp" +#line 6668 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ @@ -6671,7 +6677,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6675 "MachineIndependent/glslang_tab.cpp" +#line 6681 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ @@ -6686,7 +6692,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6690 "MachineIndependent/glslang_tab.cpp" +#line 6696 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ @@ -6701,7 +6707,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6705 "MachineIndependent/glslang_tab.cpp" +#line 6711 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ @@ -6713,7 +6719,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6717 "MachineIndependent/glslang_tab.cpp" +#line 6723 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ @@ -6725,7 +6731,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6729 "MachineIndependent/glslang_tab.cpp" +#line 6735 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ @@ -6733,7 +6739,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6737 "MachineIndependent/glslang_tab.cpp" +#line 6743 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ @@ -6741,7 +6747,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6745 "MachineIndependent/glslang_tab.cpp" +#line 6751 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ @@ -6751,7 +6757,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6755 "MachineIndependent/glslang_tab.cpp" +#line 6761 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ @@ -6760,7 +6766,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6764 "MachineIndependent/glslang_tab.cpp" +#line 6770 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ @@ -6769,7 +6775,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6773 "MachineIndependent/glslang_tab.cpp" +#line 6779 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ @@ -6779,7 +6785,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6783 "MachineIndependent/glslang_tab.cpp" +#line 6789 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ @@ -6790,7 +6796,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6794 "MachineIndependent/glslang_tab.cpp" +#line 6800 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ @@ -6798,7 +6804,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6802 "MachineIndependent/glslang_tab.cpp" +#line 6808 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ @@ -6811,7 +6817,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6815 "MachineIndependent/glslang_tab.cpp" +#line 6821 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ @@ -6819,7 +6825,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6823 "MachineIndependent/glslang_tab.cpp" +#line 6829 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ @@ -6827,7 +6833,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6831 "MachineIndependent/glslang_tab.cpp" +#line 6837 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ @@ -6836,7 +6842,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6840 "MachineIndependent/glslang_tab.cpp" +#line 6846 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ @@ -6845,7 +6851,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6849 "MachineIndependent/glslang_tab.cpp" +#line 6855 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ @@ -6854,7 +6860,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6858 "MachineIndependent/glslang_tab.cpp" +#line 6864 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ @@ -6863,7 +6869,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6867 "MachineIndependent/glslang_tab.cpp" +#line 6873 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ @@ -6871,7 +6877,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6875 "MachineIndependent/glslang_tab.cpp" +#line 6881 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ @@ -6881,7 +6887,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6885 "MachineIndependent/glslang_tab.cpp" +#line 6891 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ @@ -6890,7 +6896,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6894 "MachineIndependent/glslang_tab.cpp" +#line 6900 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ @@ -6900,7 +6906,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6904 "MachineIndependent/glslang_tab.cpp" +#line 6910 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ @@ -6910,7 +6916,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6914 "MachineIndependent/glslang_tab.cpp" +#line 6920 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ @@ -6919,7 +6925,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6923 "MachineIndependent/glslang_tab.cpp" +#line 6929 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ @@ -6929,7 +6935,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6933 "MachineIndependent/glslang_tab.cpp" +#line 6939 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ @@ -6940,7 +6946,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6944 "MachineIndependent/glslang_tab.cpp" +#line 6950 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ @@ -6951,7 +6957,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6955 "MachineIndependent/glslang_tab.cpp" +#line 6961 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ @@ -6963,7 +6969,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6967 "MachineIndependent/glslang_tab.cpp" +#line 6973 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ @@ -6973,7 +6979,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6977 "MachineIndependent/glslang_tab.cpp" +#line 6983 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: SHARED */ @@ -6986,7 +6992,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6990 "MachineIndependent/glslang_tab.cpp" +#line 6996 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: BUFFER */ @@ -6996,7 +7002,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7000 "MachineIndependent/glslang_tab.cpp" +#line 7006 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: ATTRIBUTE */ @@ -7013,7 +7019,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7017 "MachineIndependent/glslang_tab.cpp" +#line 7023 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: VARYING */ @@ -7032,7 +7038,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7036 "MachineIndependent/glslang_tab.cpp" +#line 7042 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: PATCH */ @@ -7043,7 +7049,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7047 "MachineIndependent/glslang_tab.cpp" +#line 7053 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: SAMPLE */ @@ -7053,7 +7059,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7057 "MachineIndependent/glslang_tab.cpp" +#line 7063 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: HITATTRNV */ @@ -7066,7 +7072,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7070 "MachineIndependent/glslang_tab.cpp" +#line 7076 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITOBJECTATTRNV */ @@ -7079,7 +7085,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7083 "MachineIndependent/glslang_tab.cpp" +#line 7089 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITATTREXT */ @@ -7092,7 +7098,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7096 "MachineIndependent/glslang_tab.cpp" +#line 7102 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: PAYLOADNV */ @@ -7105,7 +7111,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7109 "MachineIndependent/glslang_tab.cpp" +#line 7115 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADEXT */ @@ -7118,7 +7124,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7122 "MachineIndependent/glslang_tab.cpp" +#line 7128 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADINNV */ @@ -7131,7 +7137,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7135 "MachineIndependent/glslang_tab.cpp" +#line 7141 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINEXT */ @@ -7144,7 +7150,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7148 "MachineIndependent/glslang_tab.cpp" +#line 7154 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: CALLDATANV */ @@ -7157,7 +7163,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7161 "MachineIndependent/glslang_tab.cpp" +#line 7167 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATAEXT */ @@ -7170,7 +7176,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7174 "MachineIndependent/glslang_tab.cpp" +#line 7180 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAINNV */ @@ -7182,7 +7188,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7186 "MachineIndependent/glslang_tab.cpp" +#line 7192 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINEXT */ @@ -7194,7 +7200,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7198 "MachineIndependent/glslang_tab.cpp" +#line 7204 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: COHERENT */ @@ -7203,7 +7209,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7207 "MachineIndependent/glslang_tab.cpp" +#line 7213 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: DEVICECOHERENT */ @@ -7213,7 +7219,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7217 "MachineIndependent/glslang_tab.cpp" +#line 7223 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: QUEUEFAMILYCOHERENT */ @@ -7223,7 +7229,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7227 "MachineIndependent/glslang_tab.cpp" +#line 7233 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: WORKGROUPCOHERENT */ @@ -7233,7 +7239,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7237 "MachineIndependent/glslang_tab.cpp" +#line 7243 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: SUBGROUPCOHERENT */ @@ -7243,7 +7249,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7247 "MachineIndependent/glslang_tab.cpp" +#line 7253 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: NONPRIVATE */ @@ -7253,7 +7259,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7257 "MachineIndependent/glslang_tab.cpp" +#line 7263 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: SHADERCALLCOHERENT */ @@ -7263,7 +7269,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7267 "MachineIndependent/glslang_tab.cpp" +#line 7273 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: VOLATILE */ @@ -7272,7 +7278,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7276 "MachineIndependent/glslang_tab.cpp" +#line 7282 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: RESTRICT */ @@ -7281,7 +7287,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7285 "MachineIndependent/glslang_tab.cpp" +#line 7291 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: READONLY */ @@ -7290,7 +7296,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7294 "MachineIndependent/glslang_tab.cpp" +#line 7300 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: WRITEONLY */ @@ -7299,7 +7305,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7303 "MachineIndependent/glslang_tab.cpp" +#line 7309 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: SUBROUTINE */ @@ -7310,7 +7316,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7314 "MachineIndependent/glslang_tab.cpp" +#line 7320 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ @@ -7321,7 +7327,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7325 "MachineIndependent/glslang_tab.cpp" +#line 7331 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ @@ -7333,7 +7339,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7337 "MachineIndependent/glslang_tab.cpp" +#line 7343 "MachineIndependent/glslang_tab.cpp" break; case 205: /* non_uniform_qualifier: NONUNIFORM */ @@ -7342,7 +7348,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7346 "MachineIndependent/glslang_tab.cpp" +#line 7352 "MachineIndependent/glslang_tab.cpp" break; case 206: /* type_name_list: IDENTIFIER */ @@ -7350,7 +7356,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { // TODO } -#line 7354 "MachineIndependent/glslang_tab.cpp" +#line 7360 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: type_name_list COMMA IDENTIFIER */ @@ -7360,7 +7366,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7364 "MachineIndependent/glslang_tab.cpp" +#line 7370 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ @@ -7370,7 +7376,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 7374 "MachineIndependent/glslang_tab.cpp" +#line 7380 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ @@ -7382,7 +7388,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 7386 "MachineIndependent/glslang_tab.cpp" +#line 7392 "MachineIndependent/glslang_tab.cpp" break; case 210: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ @@ -7392,7 +7398,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7396 "MachineIndependent/glslang_tab.cpp" +#line 7402 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ @@ -7405,7 +7411,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7409 "MachineIndependent/glslang_tab.cpp" +#line 7415 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ @@ -7414,7 +7420,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7418 "MachineIndependent/glslang_tab.cpp" +#line 7424 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ @@ -7426,7 +7432,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7430 "MachineIndependent/glslang_tab.cpp" +#line 7436 "MachineIndependent/glslang_tab.cpp" break; case 214: /* type_parameter_specifier_opt: type_parameter_specifier */ @@ -7434,7 +7440,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7438 "MachineIndependent/glslang_tab.cpp" +#line 7444 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: %empty */ @@ -7442,7 +7448,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeParameters) = 0; } -#line 7446 "MachineIndependent/glslang_tab.cpp" +#line 7452 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ @@ -7450,7 +7456,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7454 "MachineIndependent/glslang_tab.cpp" +#line 7460 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier_list: unary_expression */ @@ -7462,7 +7468,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7466 "MachineIndependent/glslang_tab.cpp" +#line 7472 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ @@ -7474,7 +7480,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7478 "MachineIndependent/glslang_tab.cpp" +#line 7484 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_specifier_nonarray: VOID */ @@ -7483,7 +7489,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7487 "MachineIndependent/glslang_tab.cpp" +#line 7493 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_specifier_nonarray: FLOAT */ @@ -7492,7 +7498,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7496 "MachineIndependent/glslang_tab.cpp" +#line 7502 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: INT */ @@ -7501,7 +7507,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7505 "MachineIndependent/glslang_tab.cpp" +#line 7511 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: UINT */ @@ -7511,7 +7517,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7515 "MachineIndependent/glslang_tab.cpp" +#line 7521 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: BOOL */ @@ -7520,7 +7526,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7524 "MachineIndependent/glslang_tab.cpp" +#line 7530 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: VEC2 */ @@ -7530,7 +7536,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7534 "MachineIndependent/glslang_tab.cpp" +#line 7540 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: VEC3 */ @@ -7540,7 +7546,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7544 "MachineIndependent/glslang_tab.cpp" +#line 7550 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC4 */ @@ -7550,7 +7556,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7554 "MachineIndependent/glslang_tab.cpp" +#line 7560 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: BVEC2 */ @@ -7560,7 +7566,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7564 "MachineIndependent/glslang_tab.cpp" +#line 7570 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: BVEC3 */ @@ -7570,7 +7576,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7574 "MachineIndependent/glslang_tab.cpp" +#line 7580 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC4 */ @@ -7580,7 +7586,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7584 "MachineIndependent/glslang_tab.cpp" +#line 7590 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: IVEC2 */ @@ -7590,7 +7596,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7594 "MachineIndependent/glslang_tab.cpp" +#line 7600 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: IVEC3 */ @@ -7600,7 +7606,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7604 "MachineIndependent/glslang_tab.cpp" +#line 7610 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC4 */ @@ -7610,7 +7616,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7614 "MachineIndependent/glslang_tab.cpp" +#line 7620 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: UVEC2 */ @@ -7621,7 +7627,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7625 "MachineIndependent/glslang_tab.cpp" +#line 7631 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: UVEC3 */ @@ -7632,7 +7638,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7636 "MachineIndependent/glslang_tab.cpp" +#line 7642 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC4 */ @@ -7643,7 +7649,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7647 "MachineIndependent/glslang_tab.cpp" +#line 7653 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: MAT2 */ @@ -7653,7 +7659,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7657 "MachineIndependent/glslang_tab.cpp" +#line 7663 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: MAT3 */ @@ -7663,7 +7669,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7667 "MachineIndependent/glslang_tab.cpp" +#line 7673 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT4 */ @@ -7673,7 +7679,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7677 "MachineIndependent/glslang_tab.cpp" +#line 7683 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT2X2 */ @@ -7683,7 +7689,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7687 "MachineIndependent/glslang_tab.cpp" +#line 7693 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT2X3 */ @@ -7693,7 +7699,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7697 "MachineIndependent/glslang_tab.cpp" +#line 7703 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X4 */ @@ -7703,7 +7709,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7707 "MachineIndependent/glslang_tab.cpp" +#line 7713 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT3X2 */ @@ -7713,7 +7719,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7717 "MachineIndependent/glslang_tab.cpp" +#line 7723 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT3X3 */ @@ -7723,7 +7729,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7727 "MachineIndependent/glslang_tab.cpp" +#line 7733 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X4 */ @@ -7733,7 +7739,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7737 "MachineIndependent/glslang_tab.cpp" +#line 7743 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT4X2 */ @@ -7743,7 +7749,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7747 "MachineIndependent/glslang_tab.cpp" +#line 7753 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT4X3 */ @@ -7753,7 +7759,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7757 "MachineIndependent/glslang_tab.cpp" +#line 7763 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X4 */ @@ -7763,7 +7769,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7767 "MachineIndependent/glslang_tab.cpp" +#line 7773 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: DOUBLE */ @@ -7775,7 +7781,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7779 "MachineIndependent/glslang_tab.cpp" +#line 7785 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: FLOAT16_T */ @@ -7785,7 +7791,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7789 "MachineIndependent/glslang_tab.cpp" +#line 7795 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: FLOAT32_T */ @@ -7795,7 +7801,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7799 "MachineIndependent/glslang_tab.cpp" +#line 7805 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT64_T */ @@ -7805,7 +7811,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7809 "MachineIndependent/glslang_tab.cpp" +#line 7815 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: INT8_T */ @@ -7815,7 +7821,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7819 "MachineIndependent/glslang_tab.cpp" +#line 7825 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: UINT8_T */ @@ -7825,7 +7831,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7829 "MachineIndependent/glslang_tab.cpp" +#line 7835 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: INT16_T */ @@ -7835,7 +7841,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7839 "MachineIndependent/glslang_tab.cpp" +#line 7845 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: UINT16_T */ @@ -7845,7 +7851,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7849 "MachineIndependent/glslang_tab.cpp" +#line 7855 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: INT32_T */ @@ -7855,7 +7861,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7859 "MachineIndependent/glslang_tab.cpp" +#line 7865 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: UINT32_T */ @@ -7865,7 +7871,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7869 "MachineIndependent/glslang_tab.cpp" +#line 7875 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: INT64_T */ @@ -7875,7 +7881,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7879 "MachineIndependent/glslang_tab.cpp" +#line 7885 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: UINT64_T */ @@ -7885,7 +7891,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7889 "MachineIndependent/glslang_tab.cpp" +#line 7895 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: DVEC2 */ @@ -7898,7 +7904,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7902 "MachineIndependent/glslang_tab.cpp" +#line 7908 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: DVEC3 */ @@ -7911,7 +7917,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7915 "MachineIndependent/glslang_tab.cpp" +#line 7921 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC4 */ @@ -7924,7 +7930,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7928 "MachineIndependent/glslang_tab.cpp" +#line 7934 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: F16VEC2 */ @@ -7935,7 +7941,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7939 "MachineIndependent/glslang_tab.cpp" +#line 7945 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: F16VEC3 */ @@ -7946,7 +7952,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7950 "MachineIndependent/glslang_tab.cpp" +#line 7956 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC4 */ @@ -7957,7 +7963,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7961 "MachineIndependent/glslang_tab.cpp" +#line 7967 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F32VEC2 */ @@ -7968,7 +7974,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7972 "MachineIndependent/glslang_tab.cpp" +#line 7978 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F32VEC3 */ @@ -7979,7 +7985,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7983 "MachineIndependent/glslang_tab.cpp" +#line 7989 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC4 */ @@ -7990,7 +7996,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7994 "MachineIndependent/glslang_tab.cpp" +#line 8000 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F64VEC2 */ @@ -8001,7 +8007,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8005 "MachineIndependent/glslang_tab.cpp" +#line 8011 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F64VEC3 */ @@ -8012,7 +8018,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8016 "MachineIndependent/glslang_tab.cpp" +#line 8022 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC4 */ @@ -8023,7 +8029,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8027 "MachineIndependent/glslang_tab.cpp" +#line 8033 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: I8VEC2 */ @@ -8034,7 +8040,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8038 "MachineIndependent/glslang_tab.cpp" +#line 8044 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: I8VEC3 */ @@ -8045,7 +8051,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8049 "MachineIndependent/glslang_tab.cpp" +#line 8055 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC4 */ @@ -8056,7 +8062,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8060 "MachineIndependent/glslang_tab.cpp" +#line 8066 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I16VEC2 */ @@ -8067,7 +8073,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8071 "MachineIndependent/glslang_tab.cpp" +#line 8077 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I16VEC3 */ @@ -8078,7 +8084,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8082 "MachineIndependent/glslang_tab.cpp" +#line 8088 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC4 */ @@ -8089,7 +8095,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8093 "MachineIndependent/glslang_tab.cpp" +#line 8099 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I32VEC2 */ @@ -8100,7 +8106,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8104 "MachineIndependent/glslang_tab.cpp" +#line 8110 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I32VEC3 */ @@ -8111,7 +8117,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8115 "MachineIndependent/glslang_tab.cpp" +#line 8121 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC4 */ @@ -8122,7 +8128,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8126 "MachineIndependent/glslang_tab.cpp" +#line 8132 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I64VEC2 */ @@ -8133,7 +8139,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8137 "MachineIndependent/glslang_tab.cpp" +#line 8143 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I64VEC3 */ @@ -8144,7 +8150,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8148 "MachineIndependent/glslang_tab.cpp" +#line 8154 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC4 */ @@ -8155,7 +8161,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8159 "MachineIndependent/glslang_tab.cpp" +#line 8165 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: U8VEC2 */ @@ -8166,7 +8172,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8170 "MachineIndependent/glslang_tab.cpp" +#line 8176 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: U8VEC3 */ @@ -8177,7 +8183,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8181 "MachineIndependent/glslang_tab.cpp" +#line 8187 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC4 */ @@ -8188,7 +8194,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8192 "MachineIndependent/glslang_tab.cpp" +#line 8198 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U16VEC2 */ @@ -8199,7 +8205,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8203 "MachineIndependent/glslang_tab.cpp" +#line 8209 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U16VEC3 */ @@ -8210,7 +8216,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8214 "MachineIndependent/glslang_tab.cpp" +#line 8220 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC4 */ @@ -8221,7 +8227,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8225 "MachineIndependent/glslang_tab.cpp" +#line 8231 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U32VEC2 */ @@ -8232,7 +8238,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8236 "MachineIndependent/glslang_tab.cpp" +#line 8242 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U32VEC3 */ @@ -8243,7 +8249,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8247 "MachineIndependent/glslang_tab.cpp" +#line 8253 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC4 */ @@ -8254,7 +8260,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8258 "MachineIndependent/glslang_tab.cpp" +#line 8264 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U64VEC2 */ @@ -8265,7 +8271,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8269 "MachineIndependent/glslang_tab.cpp" +#line 8275 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U64VEC3 */ @@ -8276,7 +8282,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8280 "MachineIndependent/glslang_tab.cpp" +#line 8286 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC4 */ @@ -8287,7 +8293,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8291 "MachineIndependent/glslang_tab.cpp" +#line 8297 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: DMAT2 */ @@ -8300,7 +8306,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8304 "MachineIndependent/glslang_tab.cpp" +#line 8310 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: DMAT3 */ @@ -8313,7 +8319,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8317 "MachineIndependent/glslang_tab.cpp" +#line 8323 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT4 */ @@ -8326,7 +8332,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8330 "MachineIndependent/glslang_tab.cpp" +#line 8336 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT2X2 */ @@ -8339,7 +8345,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8343 "MachineIndependent/glslang_tab.cpp" +#line 8349 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT2X3 */ @@ -8352,7 +8358,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8356 "MachineIndependent/glslang_tab.cpp" +#line 8362 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X4 */ @@ -8365,7 +8371,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8369 "MachineIndependent/glslang_tab.cpp" +#line 8375 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT3X2 */ @@ -8378,7 +8384,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8382 "MachineIndependent/glslang_tab.cpp" +#line 8388 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT3X3 */ @@ -8391,7 +8397,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8395 "MachineIndependent/glslang_tab.cpp" +#line 8401 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X4 */ @@ -8404,7 +8410,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8408 "MachineIndependent/glslang_tab.cpp" +#line 8414 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT4X2 */ @@ -8417,7 +8423,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8421 "MachineIndependent/glslang_tab.cpp" +#line 8427 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT4X3 */ @@ -8430,7 +8436,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8434 "MachineIndependent/glslang_tab.cpp" +#line 8440 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X4 */ @@ -8443,7 +8449,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8447 "MachineIndependent/glslang_tab.cpp" +#line 8453 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: F16MAT2 */ @@ -8454,7 +8460,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8458 "MachineIndependent/glslang_tab.cpp" +#line 8464 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: F16MAT3 */ @@ -8465,7 +8471,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8469 "MachineIndependent/glslang_tab.cpp" +#line 8475 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT4 */ @@ -8476,7 +8482,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8480 "MachineIndependent/glslang_tab.cpp" +#line 8486 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT2X2 */ @@ -8487,7 +8493,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8491 "MachineIndependent/glslang_tab.cpp" +#line 8497 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT2X3 */ @@ -8498,7 +8504,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8502 "MachineIndependent/glslang_tab.cpp" +#line 8508 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X4 */ @@ -8509,7 +8515,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8513 "MachineIndependent/glslang_tab.cpp" +#line 8519 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT3X2 */ @@ -8520,7 +8526,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8524 "MachineIndependent/glslang_tab.cpp" +#line 8530 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT3X3 */ @@ -8531,7 +8537,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8535 "MachineIndependent/glslang_tab.cpp" +#line 8541 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X4 */ @@ -8542,7 +8548,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8546 "MachineIndependent/glslang_tab.cpp" +#line 8552 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT4X2 */ @@ -8553,7 +8559,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8557 "MachineIndependent/glslang_tab.cpp" +#line 8563 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT4X3 */ @@ -8564,7 +8570,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8568 "MachineIndependent/glslang_tab.cpp" +#line 8574 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X4 */ @@ -8575,7 +8581,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8579 "MachineIndependent/glslang_tab.cpp" +#line 8585 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F32MAT2 */ @@ -8586,7 +8592,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8590 "MachineIndependent/glslang_tab.cpp" +#line 8596 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F32MAT3 */ @@ -8597,7 +8603,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8601 "MachineIndependent/glslang_tab.cpp" +#line 8607 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT4 */ @@ -8608,7 +8614,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8612 "MachineIndependent/glslang_tab.cpp" +#line 8618 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT2X2 */ @@ -8619,7 +8625,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8623 "MachineIndependent/glslang_tab.cpp" +#line 8629 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT2X3 */ @@ -8630,7 +8636,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8634 "MachineIndependent/glslang_tab.cpp" +#line 8640 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X4 */ @@ -8641,7 +8647,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8645 "MachineIndependent/glslang_tab.cpp" +#line 8651 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT3X2 */ @@ -8652,7 +8658,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8656 "MachineIndependent/glslang_tab.cpp" +#line 8662 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT3X3 */ @@ -8663,7 +8669,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8667 "MachineIndependent/glslang_tab.cpp" +#line 8673 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X4 */ @@ -8674,7 +8680,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8678 "MachineIndependent/glslang_tab.cpp" +#line 8684 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT4X2 */ @@ -8685,7 +8691,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8689 "MachineIndependent/glslang_tab.cpp" +#line 8695 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT4X3 */ @@ -8696,7 +8702,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8700 "MachineIndependent/glslang_tab.cpp" +#line 8706 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X4 */ @@ -8707,7 +8713,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8711 "MachineIndependent/glslang_tab.cpp" +#line 8717 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F64MAT2 */ @@ -8718,7 +8724,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8722 "MachineIndependent/glslang_tab.cpp" +#line 8728 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F64MAT3 */ @@ -8729,7 +8735,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8733 "MachineIndependent/glslang_tab.cpp" +#line 8739 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT4 */ @@ -8740,7 +8746,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8744 "MachineIndependent/glslang_tab.cpp" +#line 8750 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT2X2 */ @@ -8751,7 +8757,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8755 "MachineIndependent/glslang_tab.cpp" +#line 8761 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT2X3 */ @@ -8762,7 +8768,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8766 "MachineIndependent/glslang_tab.cpp" +#line 8772 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X4 */ @@ -8773,7 +8779,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8777 "MachineIndependent/glslang_tab.cpp" +#line 8783 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT3X2 */ @@ -8784,7 +8790,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8788 "MachineIndependent/glslang_tab.cpp" +#line 8794 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT3X3 */ @@ -8795,7 +8801,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8799 "MachineIndependent/glslang_tab.cpp" +#line 8805 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X4 */ @@ -8806,7 +8812,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8810 "MachineIndependent/glslang_tab.cpp" +#line 8816 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT4X2 */ @@ -8817,7 +8823,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8821 "MachineIndependent/glslang_tab.cpp" +#line 8827 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT4X3 */ @@ -8828,7 +8834,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8832 "MachineIndependent/glslang_tab.cpp" +#line 8838 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X4 */ @@ -8839,7 +8845,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8843 "MachineIndependent/glslang_tab.cpp" +#line 8849 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: ACCSTRUCTNV */ @@ -8848,7 +8854,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8852 "MachineIndependent/glslang_tab.cpp" +#line 8858 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: ACCSTRUCTEXT */ @@ -8857,7 +8863,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8861 "MachineIndependent/glslang_tab.cpp" +#line 8867 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: RAYQUERYEXT */ @@ -8866,7 +8872,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8870 "MachineIndependent/glslang_tab.cpp" +#line 8876 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: ATOMIC_UINT */ @@ -8876,7 +8882,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8880 "MachineIndependent/glslang_tab.cpp" +#line 8886 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: SAMPLER1D */ @@ -8886,7 +8892,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8890 "MachineIndependent/glslang_tab.cpp" +#line 8896 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: SAMPLER2D */ @@ -8896,7 +8902,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8900 "MachineIndependent/glslang_tab.cpp" +#line 8906 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER3D */ @@ -8906,7 +8912,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8910 "MachineIndependent/glslang_tab.cpp" +#line 8916 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLERCUBE */ @@ -8916,7 +8922,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8920 "MachineIndependent/glslang_tab.cpp" +#line 8926 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLER2DSHADOW */ @@ -8926,7 +8932,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8930 "MachineIndependent/glslang_tab.cpp" +#line 8936 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ @@ -8936,7 +8942,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8940 "MachineIndependent/glslang_tab.cpp" +#line 8946 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLER2DARRAY */ @@ -8946,7 +8952,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8950 "MachineIndependent/glslang_tab.cpp" +#line 8956 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ @@ -8956,7 +8962,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8960 "MachineIndependent/glslang_tab.cpp" +#line 8966 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER1DSHADOW */ @@ -8966,7 +8972,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 8970 "MachineIndependent/glslang_tab.cpp" +#line 8976 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER1DARRAY */ @@ -8976,7 +8982,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 8980 "MachineIndependent/glslang_tab.cpp" +#line 8986 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ @@ -8986,7 +8992,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8990 "MachineIndependent/glslang_tab.cpp" +#line 8996 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ @@ -8996,7 +9002,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9000 "MachineIndependent/glslang_tab.cpp" +#line 9006 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ @@ -9006,7 +9012,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9010 "MachineIndependent/glslang_tab.cpp" +#line 9016 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: F16SAMPLER1D */ @@ -9017,7 +9023,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9021 "MachineIndependent/glslang_tab.cpp" +#line 9027 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: F16SAMPLER2D */ @@ -9028,7 +9034,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9032 "MachineIndependent/glslang_tab.cpp" +#line 9038 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER3D */ @@ -9039,7 +9045,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9043 "MachineIndependent/glslang_tab.cpp" +#line 9049 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLERCUBE */ @@ -9050,7 +9056,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9054 "MachineIndependent/glslang_tab.cpp" +#line 9060 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ @@ -9061,7 +9067,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9065 "MachineIndependent/glslang_tab.cpp" +#line 9071 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ @@ -9072,7 +9078,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9076 "MachineIndependent/glslang_tab.cpp" +#line 9082 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ @@ -9083,7 +9089,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9087 "MachineIndependent/glslang_tab.cpp" +#line 9093 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ @@ -9094,7 +9100,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9098 "MachineIndependent/glslang_tab.cpp" +#line 9104 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ @@ -9105,7 +9111,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9109 "MachineIndependent/glslang_tab.cpp" +#line 9115 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ @@ -9116,7 +9122,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9120 "MachineIndependent/glslang_tab.cpp" +#line 9126 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ @@ -9127,7 +9133,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9131 "MachineIndependent/glslang_tab.cpp" +#line 9137 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ @@ -9138,7 +9144,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9142 "MachineIndependent/glslang_tab.cpp" +#line 9148 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ @@ -9149,7 +9155,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9153 "MachineIndependent/glslang_tab.cpp" +#line 9159 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: ISAMPLER1D */ @@ -9159,7 +9165,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9163 "MachineIndependent/glslang_tab.cpp" +#line 9169 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: ISAMPLER2D */ @@ -9169,7 +9175,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9173 "MachineIndependent/glslang_tab.cpp" +#line 9179 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER3D */ @@ -9179,7 +9185,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9183 "MachineIndependent/glslang_tab.cpp" +#line 9189 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLERCUBE */ @@ -9189,7 +9195,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9193 "MachineIndependent/glslang_tab.cpp" +#line 9199 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLER2DARRAY */ @@ -9199,7 +9205,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9203 "MachineIndependent/glslang_tab.cpp" +#line 9209 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: USAMPLER2D */ @@ -9209,7 +9215,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9213 "MachineIndependent/glslang_tab.cpp" +#line 9219 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: USAMPLER3D */ @@ -9219,7 +9225,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9223 "MachineIndependent/glslang_tab.cpp" +#line 9229 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLERCUBE */ @@ -9229,7 +9235,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9233 "MachineIndependent/glslang_tab.cpp" +#line 9239 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: ISAMPLER1DARRAY */ @@ -9239,7 +9245,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9243 "MachineIndependent/glslang_tab.cpp" +#line 9249 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ @@ -9249,7 +9255,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9253 "MachineIndependent/glslang_tab.cpp" +#line 9259 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: USAMPLER1D */ @@ -9259,7 +9265,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9263 "MachineIndependent/glslang_tab.cpp" +#line 9269 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: USAMPLER1DARRAY */ @@ -9269,7 +9275,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9273 "MachineIndependent/glslang_tab.cpp" +#line 9279 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ @@ -9279,7 +9285,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9283 "MachineIndependent/glslang_tab.cpp" +#line 9289 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: TEXTURECUBEARRAY */ @@ -9289,7 +9295,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9293 "MachineIndependent/glslang_tab.cpp" +#line 9299 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ @@ -9299,7 +9305,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9303 "MachineIndependent/glslang_tab.cpp" +#line 9309 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ @@ -9309,7 +9315,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9313 "MachineIndependent/glslang_tab.cpp" +#line 9319 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: USAMPLER2DARRAY */ @@ -9319,7 +9325,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9323 "MachineIndependent/glslang_tab.cpp" +#line 9329 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: TEXTURE2D */ @@ -9329,7 +9335,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9333 "MachineIndependent/glslang_tab.cpp" +#line 9339 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: TEXTURE3D */ @@ -9339,7 +9345,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9343 "MachineIndependent/glslang_tab.cpp" +#line 9349 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE2DARRAY */ @@ -9349,7 +9355,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9353 "MachineIndependent/glslang_tab.cpp" +#line 9359 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURECUBE */ @@ -9359,7 +9365,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9363 "MachineIndependent/glslang_tab.cpp" +#line 9369 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: ITEXTURE2D */ @@ -9369,7 +9375,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9373 "MachineIndependent/glslang_tab.cpp" +#line 9379 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: ITEXTURE3D */ @@ -9379,7 +9385,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9383 "MachineIndependent/glslang_tab.cpp" +#line 9389 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURECUBE */ @@ -9389,7 +9395,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9393 "MachineIndependent/glslang_tab.cpp" +#line 9399 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURE2DARRAY */ @@ -9399,7 +9405,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9403 "MachineIndependent/glslang_tab.cpp" +#line 9409 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: UTEXTURE2D */ @@ -9409,7 +9415,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9413 "MachineIndependent/glslang_tab.cpp" +#line 9419 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: UTEXTURE3D */ @@ -9419,7 +9425,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9423 "MachineIndependent/glslang_tab.cpp" +#line 9429 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURECUBE */ @@ -9429,7 +9435,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9433 "MachineIndependent/glslang_tab.cpp" +#line 9439 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURE2DARRAY */ @@ -9439,7 +9445,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9443 "MachineIndependent/glslang_tab.cpp" +#line 9449 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: SAMPLER */ @@ -9449,7 +9455,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9453 "MachineIndependent/glslang_tab.cpp" +#line 9459 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: SAMPLERSHADOW */ @@ -9459,7 +9465,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9463 "MachineIndependent/glslang_tab.cpp" +#line 9469 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLER2DRECT */ @@ -9469,7 +9475,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9473 "MachineIndependent/glslang_tab.cpp" +#line 9479 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ @@ -9479,7 +9485,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9483 "MachineIndependent/glslang_tab.cpp" +#line 9489 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: F16SAMPLER2DRECT */ @@ -9490,7 +9496,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9494 "MachineIndependent/glslang_tab.cpp" +#line 9500 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ @@ -9501,7 +9507,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9505 "MachineIndependent/glslang_tab.cpp" +#line 9511 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: ISAMPLER2DRECT */ @@ -9511,7 +9517,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9515 "MachineIndependent/glslang_tab.cpp" +#line 9521 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: USAMPLER2DRECT */ @@ -9521,7 +9527,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9525 "MachineIndependent/glslang_tab.cpp" +#line 9531 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: SAMPLERBUFFER */ @@ -9531,7 +9537,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9535 "MachineIndependent/glslang_tab.cpp" +#line 9541 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: F16SAMPLERBUFFER */ @@ -9542,7 +9548,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9546 "MachineIndependent/glslang_tab.cpp" +#line 9552 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: ISAMPLERBUFFER */ @@ -9552,7 +9558,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9556 "MachineIndependent/glslang_tab.cpp" +#line 9562 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: USAMPLERBUFFER */ @@ -9562,7 +9568,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9566 "MachineIndependent/glslang_tab.cpp" +#line 9572 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: SAMPLER2DMS */ @@ -9572,7 +9578,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9576 "MachineIndependent/glslang_tab.cpp" +#line 9582 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: F16SAMPLER2DMS */ @@ -9583,7 +9589,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9587 "MachineIndependent/glslang_tab.cpp" +#line 9593 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: ISAMPLER2DMS */ @@ -9593,7 +9599,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9597 "MachineIndependent/glslang_tab.cpp" +#line 9603 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: USAMPLER2DMS */ @@ -9603,7 +9609,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9607 "MachineIndependent/glslang_tab.cpp" +#line 9613 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ @@ -9613,7 +9619,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9617 "MachineIndependent/glslang_tab.cpp" +#line 9623 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ @@ -9624,7 +9630,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9628 "MachineIndependent/glslang_tab.cpp" +#line 9634 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ @@ -9634,7 +9640,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9638 "MachineIndependent/glslang_tab.cpp" +#line 9644 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ @@ -9644,7 +9650,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9648 "MachineIndependent/glslang_tab.cpp" +#line 9654 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: TEXTURE1D */ @@ -9654,7 +9660,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9658 "MachineIndependent/glslang_tab.cpp" +#line 9664 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: F16TEXTURE1D */ @@ -9665,7 +9671,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9669 "MachineIndependent/glslang_tab.cpp" +#line 9675 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: F16TEXTURE2D */ @@ -9676,7 +9682,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9680 "MachineIndependent/glslang_tab.cpp" +#line 9686 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE3D */ @@ -9687,7 +9693,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9691 "MachineIndependent/glslang_tab.cpp" +#line 9697 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURECUBE */ @@ -9698,7 +9704,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9702 "MachineIndependent/glslang_tab.cpp" +#line 9708 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: TEXTURE1DARRAY */ @@ -9708,7 +9714,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9712 "MachineIndependent/glslang_tab.cpp" +#line 9718 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ @@ -9719,7 +9725,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9723 "MachineIndependent/glslang_tab.cpp" +#line 9729 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ @@ -9730,7 +9736,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9734 "MachineIndependent/glslang_tab.cpp" +#line 9740 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ @@ -9741,7 +9747,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9745 "MachineIndependent/glslang_tab.cpp" +#line 9751 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: ITEXTURE1D */ @@ -9751,7 +9757,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9755 "MachineIndependent/glslang_tab.cpp" +#line 9761 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: ITEXTURE1DARRAY */ @@ -9761,7 +9767,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9765 "MachineIndependent/glslang_tab.cpp" +#line 9771 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: UTEXTURE1D */ @@ -9771,7 +9777,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9775 "MachineIndependent/glslang_tab.cpp" +#line 9781 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: UTEXTURE1DARRAY */ @@ -9781,7 +9787,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9785 "MachineIndependent/glslang_tab.cpp" +#line 9791 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: TEXTURE2DRECT */ @@ -9791,7 +9797,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9795 "MachineIndependent/glslang_tab.cpp" +#line 9801 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: F16TEXTURE2DRECT */ @@ -9802,7 +9808,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9806 "MachineIndependent/glslang_tab.cpp" +#line 9812 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: ITEXTURE2DRECT */ @@ -9812,7 +9818,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9816 "MachineIndependent/glslang_tab.cpp" +#line 9822 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: UTEXTURE2DRECT */ @@ -9822,7 +9828,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9826 "MachineIndependent/glslang_tab.cpp" +#line 9832 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: TEXTUREBUFFER */ @@ -9832,7 +9838,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9836 "MachineIndependent/glslang_tab.cpp" +#line 9842 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: F16TEXTUREBUFFER */ @@ -9843,7 +9849,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9847 "MachineIndependent/glslang_tab.cpp" +#line 9853 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: ITEXTUREBUFFER */ @@ -9853,7 +9859,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9857 "MachineIndependent/glslang_tab.cpp" +#line 9863 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: UTEXTUREBUFFER */ @@ -9863,7 +9869,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9867 "MachineIndependent/glslang_tab.cpp" +#line 9873 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: TEXTURE2DMS */ @@ -9873,7 +9879,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9877 "MachineIndependent/glslang_tab.cpp" +#line 9883 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: F16TEXTURE2DMS */ @@ -9884,7 +9890,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9888 "MachineIndependent/glslang_tab.cpp" +#line 9894 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: ITEXTURE2DMS */ @@ -9894,7 +9900,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9898 "MachineIndependent/glslang_tab.cpp" +#line 9904 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: UTEXTURE2DMS */ @@ -9904,7 +9910,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9908 "MachineIndependent/glslang_tab.cpp" +#line 9914 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ @@ -9914,7 +9920,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9918 "MachineIndependent/glslang_tab.cpp" +#line 9924 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ @@ -9925,7 +9931,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9929 "MachineIndependent/glslang_tab.cpp" +#line 9935 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ @@ -9935,7 +9941,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9939 "MachineIndependent/glslang_tab.cpp" +#line 9945 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ @@ -9945,7 +9951,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9949 "MachineIndependent/glslang_tab.cpp" +#line 9955 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: IMAGE1D */ @@ -9955,7 +9961,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9959 "MachineIndependent/glslang_tab.cpp" +#line 9965 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: F16IMAGE1D */ @@ -9966,7 +9972,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 9970 "MachineIndependent/glslang_tab.cpp" +#line 9976 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: IIMAGE1D */ @@ -9976,7 +9982,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 9980 "MachineIndependent/glslang_tab.cpp" +#line 9986 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: UIMAGE1D */ @@ -9986,7 +9992,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9990 "MachineIndependent/glslang_tab.cpp" +#line 9996 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: IMAGE2D */ @@ -9996,7 +10002,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10000 "MachineIndependent/glslang_tab.cpp" +#line 10006 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: F16IMAGE2D */ @@ -10007,7 +10013,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10011 "MachineIndependent/glslang_tab.cpp" +#line 10017 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: IIMAGE2D */ @@ -10017,7 +10023,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10021 "MachineIndependent/glslang_tab.cpp" +#line 10027 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: UIMAGE2D */ @@ -10027,7 +10033,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10031 "MachineIndependent/glslang_tab.cpp" +#line 10037 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: IMAGE3D */ @@ -10037,7 +10043,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10041 "MachineIndependent/glslang_tab.cpp" +#line 10047 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: F16IMAGE3D */ @@ -10048,7 +10054,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10052 "MachineIndependent/glslang_tab.cpp" +#line 10058 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: IIMAGE3D */ @@ -10058,7 +10064,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10062 "MachineIndependent/glslang_tab.cpp" +#line 10068 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: UIMAGE3D */ @@ -10068,7 +10074,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10072 "MachineIndependent/glslang_tab.cpp" +#line 10078 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: IMAGE2DRECT */ @@ -10078,7 +10084,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10082 "MachineIndependent/glslang_tab.cpp" +#line 10088 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: F16IMAGE2DRECT */ @@ -10089,7 +10095,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10093 "MachineIndependent/glslang_tab.cpp" +#line 10099 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: IIMAGE2DRECT */ @@ -10099,7 +10105,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10103 "MachineIndependent/glslang_tab.cpp" +#line 10109 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: UIMAGE2DRECT */ @@ -10109,7 +10115,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10113 "MachineIndependent/glslang_tab.cpp" +#line 10119 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IMAGECUBE */ @@ -10119,7 +10125,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10123 "MachineIndependent/glslang_tab.cpp" +#line 10129 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: F16IMAGECUBE */ @@ -10130,7 +10136,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10134 "MachineIndependent/glslang_tab.cpp" +#line 10140 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IIMAGECUBE */ @@ -10140,7 +10146,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10144 "MachineIndependent/glslang_tab.cpp" +#line 10150 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: UIMAGECUBE */ @@ -10150,7 +10156,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10154 "MachineIndependent/glslang_tab.cpp" +#line 10160 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IMAGEBUFFER */ @@ -10160,7 +10166,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10164 "MachineIndependent/glslang_tab.cpp" +#line 10170 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: F16IMAGEBUFFER */ @@ -10171,7 +10177,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10175 "MachineIndependent/glslang_tab.cpp" +#line 10181 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IIMAGEBUFFER */ @@ -10181,7 +10187,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10185 "MachineIndependent/glslang_tab.cpp" +#line 10191 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: UIMAGEBUFFER */ @@ -10191,7 +10197,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10195 "MachineIndependent/glslang_tab.cpp" +#line 10201 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IMAGE1DARRAY */ @@ -10201,7 +10207,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10205 "MachineIndependent/glslang_tab.cpp" +#line 10211 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: F16IMAGE1DARRAY */ @@ -10212,7 +10218,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10216 "MachineIndependent/glslang_tab.cpp" +#line 10222 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IIMAGE1DARRAY */ @@ -10222,7 +10228,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10226 "MachineIndependent/glslang_tab.cpp" +#line 10232 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: UIMAGE1DARRAY */ @@ -10232,7 +10238,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10236 "MachineIndependent/glslang_tab.cpp" +#line 10242 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IMAGE2DARRAY */ @@ -10242,7 +10248,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10246 "MachineIndependent/glslang_tab.cpp" +#line 10252 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: F16IMAGE2DARRAY */ @@ -10253,7 +10259,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10257 "MachineIndependent/glslang_tab.cpp" +#line 10263 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IIMAGE2DARRAY */ @@ -10263,7 +10269,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10267 "MachineIndependent/glslang_tab.cpp" +#line 10273 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: UIMAGE2DARRAY */ @@ -10273,7 +10279,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10277 "MachineIndependent/glslang_tab.cpp" +#line 10283 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IMAGECUBEARRAY */ @@ -10283,7 +10289,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10287 "MachineIndependent/glslang_tab.cpp" +#line 10293 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ @@ -10294,7 +10300,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10298 "MachineIndependent/glslang_tab.cpp" +#line 10304 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IIMAGECUBEARRAY */ @@ -10304,7 +10310,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10308 "MachineIndependent/glslang_tab.cpp" +#line 10314 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: UIMAGECUBEARRAY */ @@ -10314,7 +10320,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10318 "MachineIndependent/glslang_tab.cpp" +#line 10324 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IMAGE2DMS */ @@ -10324,7 +10330,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10328 "MachineIndependent/glslang_tab.cpp" +#line 10334 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: F16IMAGE2DMS */ @@ -10335,7 +10341,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10339 "MachineIndependent/glslang_tab.cpp" +#line 10345 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IIMAGE2DMS */ @@ -10345,7 +10351,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10349 "MachineIndependent/glslang_tab.cpp" +#line 10355 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: UIMAGE2DMS */ @@ -10355,7 +10361,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10359 "MachineIndependent/glslang_tab.cpp" +#line 10365 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IMAGE2DMSARRAY */ @@ -10365,7 +10371,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10369 "MachineIndependent/glslang_tab.cpp" +#line 10375 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ @@ -10376,7 +10382,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10380 "MachineIndependent/glslang_tab.cpp" +#line 10386 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ @@ -10386,7 +10392,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10390 "MachineIndependent/glslang_tab.cpp" +#line 10396 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ @@ -10396,7 +10402,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10400 "MachineIndependent/glslang_tab.cpp" +#line 10406 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: I64IMAGE1D */ @@ -10406,7 +10412,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10410 "MachineIndependent/glslang_tab.cpp" +#line 10416 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: U64IMAGE1D */ @@ -10416,7 +10422,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10420 "MachineIndependent/glslang_tab.cpp" +#line 10426 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: I64IMAGE2D */ @@ -10426,7 +10432,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10430 "MachineIndependent/glslang_tab.cpp" +#line 10436 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: U64IMAGE2D */ @@ -10436,7 +10442,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10440 "MachineIndependent/glslang_tab.cpp" +#line 10446 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: I64IMAGE3D */ @@ -10446,7 +10452,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10450 "MachineIndependent/glslang_tab.cpp" +#line 10456 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: U64IMAGE3D */ @@ -10456,7 +10462,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10460 "MachineIndependent/glslang_tab.cpp" +#line 10466 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: I64IMAGE2DRECT */ @@ -10466,7 +10472,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10470 "MachineIndependent/glslang_tab.cpp" +#line 10476 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: U64IMAGE2DRECT */ @@ -10476,7 +10482,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10480 "MachineIndependent/glslang_tab.cpp" +#line 10486 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: I64IMAGECUBE */ @@ -10486,7 +10492,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10490 "MachineIndependent/glslang_tab.cpp" +#line 10496 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: U64IMAGECUBE */ @@ -10496,7 +10502,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10500 "MachineIndependent/glslang_tab.cpp" +#line 10506 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: I64IMAGEBUFFER */ @@ -10506,7 +10512,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10510 "MachineIndependent/glslang_tab.cpp" +#line 10516 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: U64IMAGEBUFFER */ @@ -10516,7 +10522,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10520 "MachineIndependent/glslang_tab.cpp" +#line 10526 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: I64IMAGE1DARRAY */ @@ -10526,7 +10532,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10530 "MachineIndependent/glslang_tab.cpp" +#line 10536 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: U64IMAGE1DARRAY */ @@ -10536,7 +10542,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10540 "MachineIndependent/glslang_tab.cpp" +#line 10546 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: I64IMAGE2DARRAY */ @@ -10546,7 +10552,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10550 "MachineIndependent/glslang_tab.cpp" +#line 10556 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: U64IMAGE2DARRAY */ @@ -10556,7 +10562,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10560 "MachineIndependent/glslang_tab.cpp" +#line 10566 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ @@ -10566,7 +10572,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10570 "MachineIndependent/glslang_tab.cpp" +#line 10576 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ @@ -10576,7 +10582,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10580 "MachineIndependent/glslang_tab.cpp" +#line 10586 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGE2DMS */ @@ -10586,7 +10592,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10590 "MachineIndependent/glslang_tab.cpp" +#line 10596 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGE2DMS */ @@ -10596,7 +10602,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10600 "MachineIndependent/glslang_tab.cpp" +#line 10606 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ @@ -10606,7 +10612,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10610 "MachineIndependent/glslang_tab.cpp" +#line 10616 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ @@ -10616,7 +10622,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10620 "MachineIndependent/glslang_tab.cpp" +#line 10626 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ @@ -10627,7 +10633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10631 "MachineIndependent/glslang_tab.cpp" +#line 10637 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ @@ -10638,7 +10644,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10642 "MachineIndependent/glslang_tab.cpp" +#line 10648 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SUBPASSINPUT */ @@ -10649,7 +10655,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10653 "MachineIndependent/glslang_tab.cpp" +#line 10659 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: SUBPASSINPUTMS */ @@ -10660,7 +10666,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10664 "MachineIndependent/glslang_tab.cpp" +#line 10670 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: F16SUBPASSINPUT */ @@ -10672,7 +10678,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10676 "MachineIndependent/glslang_tab.cpp" +#line 10682 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ @@ -10684,7 +10690,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10688 "MachineIndependent/glslang_tab.cpp" +#line 10694 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: ISUBPASSINPUT */ @@ -10695,7 +10701,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10699 "MachineIndependent/glslang_tab.cpp" +#line 10705 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: ISUBPASSINPUTMS */ @@ -10706,7 +10712,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10710 "MachineIndependent/glslang_tab.cpp" +#line 10716 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: USUBPASSINPUT */ @@ -10717,7 +10723,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10721 "MachineIndependent/glslang_tab.cpp" +#line 10727 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: USUBPASSINPUTMS */ @@ -10728,7 +10734,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10732 "MachineIndependent/glslang_tab.cpp" +#line 10738 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: FCOOPMATNV */ @@ -10739,7 +10745,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 10743 "MachineIndependent/glslang_tab.cpp" +#line 10749 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ICOOPMATNV */ @@ -10750,7 +10756,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 10754 "MachineIndependent/glslang_tab.cpp" +#line 10760 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: UCOOPMATNV */ @@ -10761,7 +10767,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10765 "MachineIndependent/glslang_tab.cpp" +#line 10771 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: spirv_type_specifier */ @@ -10770,7 +10776,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10774 "MachineIndependent/glslang_tab.cpp" +#line 10780 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: HITOBJECTNV */ @@ -10779,7 +10785,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10783 "MachineIndependent/glslang_tab.cpp" +#line 10789 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: struct_specifier */ @@ -10789,7 +10795,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10793 "MachineIndependent/glslang_tab.cpp" +#line 10799 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: TYPE_NAME */ @@ -10807,7 +10813,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10811 "MachineIndependent/glslang_tab.cpp" +#line 10817 "MachineIndependent/glslang_tab.cpp" break; case 535: /* precision_qualifier: HIGH_PRECISION */ @@ -10817,7 +10823,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10821 "MachineIndependent/glslang_tab.cpp" +#line 10827 "MachineIndependent/glslang_tab.cpp" break; case 536: /* precision_qualifier: MEDIUM_PRECISION */ @@ -10827,7 +10833,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10831 "MachineIndependent/glslang_tab.cpp" +#line 10837 "MachineIndependent/glslang_tab.cpp" break; case 537: /* precision_qualifier: LOW_PRECISION */ @@ -10837,13 +10843,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10841 "MachineIndependent/glslang_tab.cpp" +#line 10847 "MachineIndependent/glslang_tab.cpp" break; case 538: /* $@3: %empty */ #line 3565 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10847 "MachineIndependent/glslang_tab.cpp" +#line 10853 "MachineIndependent/glslang_tab.cpp" break; case 539: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ @@ -10859,13 +10865,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10863 "MachineIndependent/glslang_tab.cpp" +#line 10869 "MachineIndependent/glslang_tab.cpp" break; case 540: /* $@4: %empty */ #line 3576 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10869 "MachineIndependent/glslang_tab.cpp" +#line 10875 "MachineIndependent/glslang_tab.cpp" break; case 541: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ @@ -10877,7 +10883,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10881 "MachineIndependent/glslang_tab.cpp" +#line 10887 "MachineIndependent/glslang_tab.cpp" break; case 542: /* struct_declaration_list: struct_declaration */ @@ -10885,7 +10891,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10889 "MachineIndependent/glslang_tab.cpp" +#line 10895 "MachineIndependent/glslang_tab.cpp" break; case 543: /* struct_declaration_list: struct_declaration_list struct_declaration */ @@ -10900,7 +10906,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10904 "MachineIndependent/glslang_tab.cpp" +#line 10910 "MachineIndependent/glslang_tab.cpp" break; case 544: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ @@ -10927,7 +10933,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10931 "MachineIndependent/glslang_tab.cpp" +#line 10937 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ @@ -10956,7 +10962,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10960 "MachineIndependent/glslang_tab.cpp" +#line 10966 "MachineIndependent/glslang_tab.cpp" break; case 546: /* struct_declarator_list: struct_declarator */ @@ -10965,7 +10971,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10969 "MachineIndependent/glslang_tab.cpp" +#line 10975 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ @@ -10973,7 +10979,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10977 "MachineIndependent/glslang_tab.cpp" +#line 10983 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declarator: IDENTIFIER */ @@ -10983,7 +10989,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 10987 "MachineIndependent/glslang_tab.cpp" +#line 10993 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declarator: IDENTIFIER array_specifier */ @@ -10996,7 +11002,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11000 "MachineIndependent/glslang_tab.cpp" +#line 11006 "MachineIndependent/glslang_tab.cpp" break; case 550: /* initializer: assignment_expression */ @@ -11004,7 +11010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11008 "MachineIndependent/glslang_tab.cpp" +#line 11014 "MachineIndependent/glslang_tab.cpp" break; case 551: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ @@ -11015,7 +11021,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11019 "MachineIndependent/glslang_tab.cpp" +#line 11025 "MachineIndependent/glslang_tab.cpp" break; case 552: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ @@ -11026,7 +11032,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11030 "MachineIndependent/glslang_tab.cpp" +#line 11036 "MachineIndependent/glslang_tab.cpp" break; case 553: /* initializer: LEFT_BRACE RIGHT_BRACE */ @@ -11037,7 +11043,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11041 "MachineIndependent/glslang_tab.cpp" +#line 11047 "MachineIndependent/glslang_tab.cpp" break; case 554: /* initializer_list: initializer */ @@ -11045,7 +11051,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11049 "MachineIndependent/glslang_tab.cpp" +#line 11055 "MachineIndependent/glslang_tab.cpp" break; case 555: /* initializer_list: initializer_list COMMA initializer */ @@ -11053,73 +11059,73 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11057 "MachineIndependent/glslang_tab.cpp" +#line 11063 "MachineIndependent/glslang_tab.cpp" break; case 556: /* declaration_statement: declaration */ #line 3714 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11063 "MachineIndependent/glslang_tab.cpp" +#line 11069 "MachineIndependent/glslang_tab.cpp" break; case 557: /* statement: compound_statement */ #line 3718 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11069 "MachineIndependent/glslang_tab.cpp" +#line 11075 "MachineIndependent/glslang_tab.cpp" break; case 558: /* statement: simple_statement */ #line 3719 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11075 "MachineIndependent/glslang_tab.cpp" +#line 11081 "MachineIndependent/glslang_tab.cpp" break; case 559: /* simple_statement: declaration_statement */ #line 3725 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11081 "MachineIndependent/glslang_tab.cpp" +#line 11087 "MachineIndependent/glslang_tab.cpp" break; case 560: /* simple_statement: expression_statement */ #line 3726 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11087 "MachineIndependent/glslang_tab.cpp" +#line 11093 "MachineIndependent/glslang_tab.cpp" break; case 561: /* simple_statement: selection_statement */ #line 3727 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11093 "MachineIndependent/glslang_tab.cpp" +#line 11099 "MachineIndependent/glslang_tab.cpp" break; case 562: /* simple_statement: switch_statement */ #line 3728 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11099 "MachineIndependent/glslang_tab.cpp" +#line 11105 "MachineIndependent/glslang_tab.cpp" break; case 563: /* simple_statement: case_label */ #line 3729 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11105 "MachineIndependent/glslang_tab.cpp" +#line 11111 "MachineIndependent/glslang_tab.cpp" break; case 564: /* simple_statement: iteration_statement */ #line 3730 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11111 "MachineIndependent/glslang_tab.cpp" +#line 11117 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: jump_statement */ #line 3731 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11117 "MachineIndependent/glslang_tab.cpp" +#line 11123 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: demote_statement */ #line 3733 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11123 "MachineIndependent/glslang_tab.cpp" +#line 11129 "MachineIndependent/glslang_tab.cpp" break; case 567: /* demote_statement: DEMOTE SEMICOLON */ @@ -11129,13 +11135,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11133 "MachineIndependent/glslang_tab.cpp" +#line 11139 "MachineIndependent/glslang_tab.cpp" break; case 568: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ #line 3748 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11139 "MachineIndependent/glslang_tab.cpp" +#line 11145 "MachineIndependent/glslang_tab.cpp" break; case 569: /* $@5: %empty */ @@ -11144,7 +11150,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11148 "MachineIndependent/glslang_tab.cpp" +#line 11154 "MachineIndependent/glslang_tab.cpp" break; case 570: /* $@6: %empty */ @@ -11153,7 +11159,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11157 "MachineIndependent/glslang_tab.cpp" +#line 11163 "MachineIndependent/glslang_tab.cpp" break; case 571: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ @@ -11163,19 +11169,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11167 "MachineIndependent/glslang_tab.cpp" +#line 11173 "MachineIndependent/glslang_tab.cpp" break; case 572: /* statement_no_new_scope: compound_statement_no_new_scope */ #line 3765 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11173 "MachineIndependent/glslang_tab.cpp" +#line 11179 "MachineIndependent/glslang_tab.cpp" break; case 573: /* statement_no_new_scope: simple_statement */ #line 3766 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11179 "MachineIndependent/glslang_tab.cpp" +#line 11185 "MachineIndependent/glslang_tab.cpp" break; case 574: /* $@7: %empty */ @@ -11183,7 +11189,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { ++parseContext.controlFlowNestingLevel; } -#line 11187 "MachineIndependent/glslang_tab.cpp" +#line 11193 "MachineIndependent/glslang_tab.cpp" break; case 575: /* statement_scoped: $@7 compound_statement */ @@ -11192,7 +11198,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11196 "MachineIndependent/glslang_tab.cpp" +#line 11202 "MachineIndependent/glslang_tab.cpp" break; case 576: /* $@8: %empty */ @@ -11202,7 +11208,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11206 "MachineIndependent/glslang_tab.cpp" +#line 11212 "MachineIndependent/glslang_tab.cpp" break; case 577: /* statement_scoped: $@8 simple_statement */ @@ -11213,7 +11219,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11217 "MachineIndependent/glslang_tab.cpp" +#line 11223 "MachineIndependent/glslang_tab.cpp" break; case 578: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ @@ -11221,7 +11227,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = 0; } -#line 11225 "MachineIndependent/glslang_tab.cpp" +#line 11231 "MachineIndependent/glslang_tab.cpp" break; case 579: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ @@ -11231,7 +11237,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11235 "MachineIndependent/glslang_tab.cpp" +#line 11241 "MachineIndependent/glslang_tab.cpp" break; case 580: /* statement_list: statement */ @@ -11244,7 +11250,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11248 "MachineIndependent/glslang_tab.cpp" +#line 11254 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_list: statement_list statement */ @@ -11257,19 +11263,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11261 "MachineIndependent/glslang_tab.cpp" +#line 11267 "MachineIndependent/glslang_tab.cpp" break; case 582: /* expression_statement: SEMICOLON */ #line 3821 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11267 "MachineIndependent/glslang_tab.cpp" +#line 11273 "MachineIndependent/glslang_tab.cpp" break; case 583: /* expression_statement: expression SEMICOLON */ #line 3822 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11273 "MachineIndependent/glslang_tab.cpp" +#line 11279 "MachineIndependent/glslang_tab.cpp" break; case 584: /* selection_statement: selection_statement_nonattributed */ @@ -11277,7 +11283,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11281 "MachineIndependent/glslang_tab.cpp" +#line 11287 "MachineIndependent/glslang_tab.cpp" break; case 585: /* selection_statement: attribute selection_statement_nonattributed */ @@ -11287,7 +11293,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11291 "MachineIndependent/glslang_tab.cpp" +#line 11297 "MachineIndependent/glslang_tab.cpp" break; case 586: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ @@ -11296,7 +11302,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11300 "MachineIndependent/glslang_tab.cpp" +#line 11306 "MachineIndependent/glslang_tab.cpp" break; case 587: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ @@ -11305,7 +11311,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11309 "MachineIndependent/glslang_tab.cpp" +#line 11315 "MachineIndependent/glslang_tab.cpp" break; case 588: /* selection_rest_statement: statement_scoped */ @@ -11314,7 +11320,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11318 "MachineIndependent/glslang_tab.cpp" +#line 11324 "MachineIndependent/glslang_tab.cpp" break; case 589: /* condition: expression */ @@ -11323,7 +11329,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11327 "MachineIndependent/glslang_tab.cpp" +#line 11333 "MachineIndependent/glslang_tab.cpp" break; case 590: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -11338,7 +11344,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11342 "MachineIndependent/glslang_tab.cpp" +#line 11348 "MachineIndependent/glslang_tab.cpp" break; case 591: /* switch_statement: switch_statement_nonattributed */ @@ -11346,7 +11352,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11350 "MachineIndependent/glslang_tab.cpp" +#line 11356 "MachineIndependent/glslang_tab.cpp" break; case 592: /* switch_statement: attribute switch_statement_nonattributed */ @@ -11356,7 +11362,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11360 "MachineIndependent/glslang_tab.cpp" +#line 11366 "MachineIndependent/glslang_tab.cpp" break; case 593: /* $@9: %empty */ @@ -11369,7 +11375,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11373 "MachineIndependent/glslang_tab.cpp" +#line 11379 "MachineIndependent/glslang_tab.cpp" break; case 594: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ @@ -11383,7 +11389,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11387 "MachineIndependent/glslang_tab.cpp" +#line 11393 "MachineIndependent/glslang_tab.cpp" break; case 595: /* switch_statement_list: %empty */ @@ -11391,7 +11397,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = 0; } -#line 11395 "MachineIndependent/glslang_tab.cpp" +#line 11401 "MachineIndependent/glslang_tab.cpp" break; case 596: /* switch_statement_list: statement_list */ @@ -11399,7 +11405,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11403 "MachineIndependent/glslang_tab.cpp" +#line 11409 "MachineIndependent/glslang_tab.cpp" break; case 597: /* case_label: CASE expression COLON */ @@ -11416,7 +11422,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11420 "MachineIndependent/glslang_tab.cpp" +#line 11426 "MachineIndependent/glslang_tab.cpp" break; case 598: /* case_label: DEFAULT COLON */ @@ -11430,7 +11436,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11434 "MachineIndependent/glslang_tab.cpp" +#line 11440 "MachineIndependent/glslang_tab.cpp" break; case 599: /* iteration_statement: iteration_statement_nonattributed */ @@ -11438,7 +11444,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11442 "MachineIndependent/glslang_tab.cpp" +#line 11448 "MachineIndependent/glslang_tab.cpp" break; case 600: /* iteration_statement: attribute iteration_statement_nonattributed */ @@ -11448,7 +11454,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11452 "MachineIndependent/glslang_tab.cpp" +#line 11458 "MachineIndependent/glslang_tab.cpp" break; case 601: /* $@10: %empty */ @@ -11461,7 +11467,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11465 "MachineIndependent/glslang_tab.cpp" +#line 11471 "MachineIndependent/glslang_tab.cpp" break; case 602: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ @@ -11473,7 +11479,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11477 "MachineIndependent/glslang_tab.cpp" +#line 11483 "MachineIndependent/glslang_tab.cpp" break; case 603: /* $@11: %empty */ @@ -11484,7 +11490,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11488 "MachineIndependent/glslang_tab.cpp" +#line 11494 "MachineIndependent/glslang_tab.cpp" break; case 604: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ @@ -11501,7 +11507,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11505 "MachineIndependent/glslang_tab.cpp" +#line 11511 "MachineIndependent/glslang_tab.cpp" break; case 605: /* $@12: %empty */ @@ -11512,7 +11518,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11516 "MachineIndependent/glslang_tab.cpp" +#line 11522 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ @@ -11529,7 +11535,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11533 "MachineIndependent/glslang_tab.cpp" +#line 11539 "MachineIndependent/glslang_tab.cpp" break; case 607: /* for_init_statement: expression_statement */ @@ -11537,7 +11543,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11541 "MachineIndependent/glslang_tab.cpp" +#line 11547 "MachineIndependent/glslang_tab.cpp" break; case 608: /* for_init_statement: declaration_statement */ @@ -11545,7 +11551,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11549 "MachineIndependent/glslang_tab.cpp" +#line 11555 "MachineIndependent/glslang_tab.cpp" break; case 609: /* conditionopt: condition */ @@ -11553,7 +11559,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11557 "MachineIndependent/glslang_tab.cpp" +#line 11563 "MachineIndependent/glslang_tab.cpp" break; case 610: /* conditionopt: %empty */ @@ -11561,7 +11567,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = 0; } -#line 11565 "MachineIndependent/glslang_tab.cpp" +#line 11571 "MachineIndependent/glslang_tab.cpp" break; case 611: /* for_rest_statement: conditionopt SEMICOLON */ @@ -11570,7 +11576,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11574 "MachineIndependent/glslang_tab.cpp" +#line 11580 "MachineIndependent/glslang_tab.cpp" break; case 612: /* for_rest_statement: conditionopt SEMICOLON expression */ @@ -11579,7 +11585,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11583 "MachineIndependent/glslang_tab.cpp" +#line 11589 "MachineIndependent/glslang_tab.cpp" break; case 613: /* jump_statement: CONTINUE SEMICOLON */ @@ -11589,7 +11595,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11593 "MachineIndependent/glslang_tab.cpp" +#line 11599 "MachineIndependent/glslang_tab.cpp" break; case 614: /* jump_statement: BREAK SEMICOLON */ @@ -11599,7 +11605,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11603 "MachineIndependent/glslang_tab.cpp" +#line 11609 "MachineIndependent/glslang_tab.cpp" break; case 615: /* jump_statement: RETURN SEMICOLON */ @@ -11611,7 +11617,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11615 "MachineIndependent/glslang_tab.cpp" +#line 11621 "MachineIndependent/glslang_tab.cpp" break; case 616: /* jump_statement: RETURN expression SEMICOLON */ @@ -11619,7 +11625,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11623 "MachineIndependent/glslang_tab.cpp" +#line 11629 "MachineIndependent/glslang_tab.cpp" break; case 617: /* jump_statement: DISCARD SEMICOLON */ @@ -11628,7 +11634,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11632 "MachineIndependent/glslang_tab.cpp" +#line 11638 "MachineIndependent/glslang_tab.cpp" break; case 618: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ @@ -11637,7 +11643,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11641 "MachineIndependent/glslang_tab.cpp" +#line 11647 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: TERMINATE_RAY SEMICOLON */ @@ -11646,7 +11652,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11650 "MachineIndependent/glslang_tab.cpp" +#line 11656 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ @@ -11655,7 +11661,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11659 "MachineIndependent/glslang_tab.cpp" +#line 11665 "MachineIndependent/glslang_tab.cpp" break; case 621: /* translation_unit: external_declaration */ @@ -11664,7 +11670,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11668 "MachineIndependent/glslang_tab.cpp" +#line 11674 "MachineIndependent/glslang_tab.cpp" break; case 622: /* translation_unit: translation_unit external_declaration */ @@ -11675,7 +11681,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11679 "MachineIndependent/glslang_tab.cpp" +#line 11685 "MachineIndependent/glslang_tab.cpp" break; case 623: /* external_declaration: function_definition */ @@ -11683,7 +11689,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11687 "MachineIndependent/glslang_tab.cpp" +#line 11693 "MachineIndependent/glslang_tab.cpp" break; case 624: /* external_declaration: declaration */ @@ -11691,7 +11697,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11695 "MachineIndependent/glslang_tab.cpp" +#line 11701 "MachineIndependent/glslang_tab.cpp" break; case 625: /* external_declaration: SEMICOLON */ @@ -11701,7 +11707,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11705 "MachineIndependent/glslang_tab.cpp" +#line 11711 "MachineIndependent/glslang_tab.cpp" break; case 626: /* $@13: %empty */ @@ -11718,7 +11724,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11722 "MachineIndependent/glslang_tab.cpp" +#line 11728 "MachineIndependent/glslang_tab.cpp" break; case 627: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ @@ -11749,7 +11755,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11753 "MachineIndependent/glslang_tab.cpp" +#line 11759 "MachineIndependent/glslang_tab.cpp" break; case 628: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ @@ -11757,7 +11763,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11761 "MachineIndependent/glslang_tab.cpp" +#line 11767 "MachineIndependent/glslang_tab.cpp" break; case 629: /* attribute_list: single_attribute */ @@ -11765,7 +11771,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11769 "MachineIndependent/glslang_tab.cpp" +#line 11775 "MachineIndependent/glslang_tab.cpp" break; case 630: /* attribute_list: attribute_list COMMA single_attribute */ @@ -11773,7 +11779,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11777 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; case 631: /* single_attribute: IDENTIFIER */ @@ -11781,7 +11787,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11785 "MachineIndependent/glslang_tab.cpp" +#line 11791 "MachineIndependent/glslang_tab.cpp" break; case 632: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ @@ -11789,7 +11795,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11793 "MachineIndependent/glslang_tab.cpp" +#line 11799 "MachineIndependent/glslang_tab.cpp" break; case 633: /* spirv_requirements_list: spirv_requirements_parameter */ @@ -11797,7 +11803,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11801 "MachineIndependent/glslang_tab.cpp" +#line 11807 "MachineIndependent/glslang_tab.cpp" break; case 634: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ @@ -11805,7 +11811,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11809 "MachineIndependent/glslang_tab.cpp" +#line 11815 "MachineIndependent/glslang_tab.cpp" break; case 635: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ @@ -11813,7 +11819,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11817 "MachineIndependent/glslang_tab.cpp" +#line 11823 "MachineIndependent/glslang_tab.cpp" break; case 636: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ @@ -11821,7 +11827,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11825 "MachineIndependent/glslang_tab.cpp" +#line 11831 "MachineIndependent/glslang_tab.cpp" break; case 637: /* spirv_extension_list: STRING_LITERAL */ @@ -11829,7 +11835,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11833 "MachineIndependent/glslang_tab.cpp" +#line 11839 "MachineIndependent/glslang_tab.cpp" break; case 638: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ @@ -11837,7 +11843,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11841 "MachineIndependent/glslang_tab.cpp" +#line 11847 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_capability_list: INTCONSTANT */ @@ -11845,7 +11851,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11849 "MachineIndependent/glslang_tab.cpp" +#line 11855 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ @@ -11853,7 +11859,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11857 "MachineIndependent/glslang_tab.cpp" +#line 11863 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ @@ -11862,7 +11868,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11866 "MachineIndependent/glslang_tab.cpp" +#line 11872 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ @@ -11872,7 +11878,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11876 "MachineIndependent/glslang_tab.cpp" +#line 11882 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ @@ -11881,7 +11887,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11885 "MachineIndependent/glslang_tab.cpp" +#line 11891 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ @@ -11891,7 +11897,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11895 "MachineIndependent/glslang_tab.cpp" +#line 11901 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ @@ -11900,7 +11906,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11904 "MachineIndependent/glslang_tab.cpp" +#line 11910 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ @@ -11910,7 +11916,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11914 "MachineIndependent/glslang_tab.cpp" +#line 11920 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ @@ -11918,7 +11924,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 11922 "MachineIndependent/glslang_tab.cpp" +#line 11928 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ @@ -11926,7 +11932,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11930 "MachineIndependent/glslang_tab.cpp" +#line 11936 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_parameter: FLOATCONSTANT */ @@ -11934,7 +11940,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 11938 "MachineIndependent/glslang_tab.cpp" +#line 11944 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_parameter: INTCONSTANT */ @@ -11942,7 +11948,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 11946 "MachineIndependent/glslang_tab.cpp" +#line 11952 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_parameter: UINTCONSTANT */ @@ -11950,7 +11956,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 11954 "MachineIndependent/glslang_tab.cpp" +#line 11960 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_parameter: BOOLCONSTANT */ @@ -11958,7 +11964,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 11962 "MachineIndependent/glslang_tab.cpp" +#line 11968 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter: STRING_LITERAL */ @@ -11966,7 +11972,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 11970 "MachineIndependent/glslang_tab.cpp" +#line 11976 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_id_parameter_list: constant_expression */ @@ -11980,7 +11986,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 11984 "MachineIndependent/glslang_tab.cpp" +#line 11990 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ @@ -11994,7 +12000,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11998 "MachineIndependent/glslang_tab.cpp" +#line 12004 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ @@ -12004,7 +12010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12008 "MachineIndependent/glslang_tab.cpp" +#line 12014 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ @@ -12015,7 +12021,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12019 "MachineIndependent/glslang_tab.cpp" +#line 12025 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ @@ -12024,7 +12030,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12028 "MachineIndependent/glslang_tab.cpp" +#line 12034 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ @@ -12034,7 +12040,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12038 "MachineIndependent/glslang_tab.cpp" +#line 12044 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ @@ -12043,7 +12049,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12047 "MachineIndependent/glslang_tab.cpp" +#line 12053 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ @@ -12053,7 +12059,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12057 "MachineIndependent/glslang_tab.cpp" +#line 12063 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ @@ -12062,7 +12068,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12066 "MachineIndependent/glslang_tab.cpp" +#line 12072 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ @@ -12072,7 +12078,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12076 "MachineIndependent/glslang_tab.cpp" +#line 12082 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ @@ -12081,7 +12087,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12085 "MachineIndependent/glslang_tab.cpp" +#line 12091 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ @@ -12091,7 +12097,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12095 "MachineIndependent/glslang_tab.cpp" +#line 12101 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ @@ -12099,7 +12105,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12103 "MachineIndependent/glslang_tab.cpp" +#line 12109 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ @@ -12107,7 +12113,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12111 "MachineIndependent/glslang_tab.cpp" +#line 12117 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_parameter: FLOATCONSTANT */ @@ -12115,7 +12121,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12119 "MachineIndependent/glslang_tab.cpp" +#line 12125 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_parameter: INTCONSTANT */ @@ -12123,7 +12129,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12127 "MachineIndependent/glslang_tab.cpp" +#line 12133 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_parameter: UINTCONSTANT */ @@ -12131,7 +12137,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12135 "MachineIndependent/glslang_tab.cpp" +#line 12141 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_parameter: BOOLCONSTANT */ @@ -12139,165 +12145,198 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12143 "MachineIndependent/glslang_tab.cpp" +#line 12149 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_decorate_id_parameter_list: constant_expression */ + case 672: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ #line 4350 "MachineIndependent/glslang.y" - { - if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && - (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && - (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && - (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool) - parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); - (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); + { + (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); + } +#line 12157 "MachineIndependent/glslang_tab.cpp" + break; + + case 673: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ +#line 4353 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12156 "MachineIndependent/glslang_tab.cpp" +#line 12165 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA constant_expression */ + case 674: /* spirv_decorate_id_parameter: variable_identifier */ #line 4358 "MachineIndependent/glslang.y" - { - if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && - (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && - (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtUint && - (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtBool) - parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); - (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); + { + if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) + (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); + else + parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); + } +#line 12176 "MachineIndependent/glslang_tab.cpp" + break; + + case 675: /* spirv_decorate_id_parameter: FLOATCONSTANT */ +#line 4364 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); + } +#line 12184 "MachineIndependent/glslang_tab.cpp" + break; + + case 676: /* spirv_decorate_id_parameter: INTCONSTANT */ +#line 4367 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); + } +#line 12192 "MachineIndependent/glslang_tab.cpp" + break; + + case 677: /* spirv_decorate_id_parameter: UINTCONSTANT */ +#line 4370 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); + } +#line 12200 "MachineIndependent/glslang_tab.cpp" + break; + + case 678: /* spirv_decorate_id_parameter: BOOLCONSTANT */ +#line 4373 "MachineIndependent/glslang.y" + { + (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12169 "MachineIndependent/glslang_tab.cpp" +#line 12208 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4368 "MachineIndependent/glslang.y" + case 679: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4378 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12178 "MachineIndependent/glslang_tab.cpp" +#line 12217 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4372 "MachineIndependent/glslang.y" + case 680: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4382 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12186 "MachineIndependent/glslang_tab.cpp" +#line 12225 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4377 "MachineIndependent/glslang.y" + case 681: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4387 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12195 "MachineIndependent/glslang_tab.cpp" +#line 12234 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4381 "MachineIndependent/glslang.y" + case 682: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4391 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12205 "MachineIndependent/glslang_tab.cpp" +#line 12244 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4386 "MachineIndependent/glslang.y" + case 683: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4396 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12214 "MachineIndependent/glslang_tab.cpp" +#line 12253 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4390 "MachineIndependent/glslang.y" + case 684: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4400 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12224 "MachineIndependent/glslang_tab.cpp" +#line 12263 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4397 "MachineIndependent/glslang.y" + case 685: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4407 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12232 "MachineIndependent/glslang_tab.cpp" +#line 12271 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4400 "MachineIndependent/glslang.y" + case 686: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4410 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12240 "MachineIndependent/glslang_tab.cpp" +#line 12279 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_type_parameter: constant_expression */ -#line 4405 "MachineIndependent/glslang.y" + case 687: /* spirv_type_parameter: constant_expression */ +#line 4415 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12248 "MachineIndependent/glslang_tab.cpp" +#line 12287 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4410 "MachineIndependent/glslang.y" + case 688: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4420 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12256 "MachineIndependent/glslang_tab.cpp" +#line 12295 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4413 "MachineIndependent/glslang.y" + case 689: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4423 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12265 "MachineIndependent/glslang_tab.cpp" +#line 12304 "MachineIndependent/glslang_tab.cpp" break; - case 685: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4419 "MachineIndependent/glslang.y" + case 690: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4429 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12273 "MachineIndependent/glslang_tab.cpp" +#line 12312 "MachineIndependent/glslang_tab.cpp" break; - case 686: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4422 "MachineIndependent/glslang.y" + case 691: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4432 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12281 "MachineIndependent/glslang_tab.cpp" +#line 12320 "MachineIndependent/glslang_tab.cpp" break; - case 687: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4427 "MachineIndependent/glslang.y" + case 692: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4437 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12289 "MachineIndependent/glslang_tab.cpp" +#line 12328 "MachineIndependent/glslang_tab.cpp" break; - case 688: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4430 "MachineIndependent/glslang.y" + case 693: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4440 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12297 "MachineIndependent/glslang_tab.cpp" +#line 12336 "MachineIndependent/glslang_tab.cpp" break; -#line 12301 "MachineIndependent/glslang_tab.cpp" +#line 12340 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12522,5 +12561,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4435 "MachineIndependent/glslang.y" +#line 4445 "MachineIndependent/glslang.y" diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 7fd638e03d..4ded1278fd 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -384,6 +384,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.intOps.vert", "spv.intrinsicsSpirvByReference.vert", "spv.intrinsicsSpirvDecorate.frag", + "spv.intrinsicsSpirvDecorateId.comp", "spv.intrinsicsSpirvExecutionMode.frag", "spv.intrinsicsSpirvInstruction.vert", "spv.intrinsicsSpirvLiteral.vert", From 77f7cdfb1e88bd90a21a10bdf7bc350da446347c Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Fri, 24 Mar 2023 00:06:29 +0800 Subject: [PATCH 168/594] Fix an issue when we merge multiple spirv_decorate_xxx directives There is a typo. --- ...spv.intrinsicsSpirvDecorateString.comp.out | 39 +++++++++++++++++++ Test/spv.intrinsicsSpirvDecorateString.comp | 15 +++++++ glslang/MachineIndependent/ParseHelper.cpp | 2 +- gtests/Spv.FromFile.cpp | 1 + 4 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out create mode 100644 Test/spv.intrinsicsSpirvDecorateString.comp diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out b/Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out new file mode 100644 index 0000000000..87225b876d --- /dev/null +++ b/Test/baseResults/spv.intrinsicsSpirvDecorateString.comp.out @@ -0,0 +1,39 @@ +spv.intrinsicsSpirvDecorateString.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 16 + + Capability Shader + Extension "SPV_GOOGLE_hlsl_functionality1" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_spirv_intrinsics" + Name 4 "main" + Name 8 "x" + Name 10 "y" + Decorate 8(x) RelaxedPrecision + DecorateStringGOOGLE 8(x) DecorationHlslSemanticGOOGLE "foobar" + Decorate 10(y) RelaxedPrecision + DecorateStringGOOGLE 10(y) DecorationHlslSemanticGOOGLE "foobar" + Decorate 15 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 9: 6(float) Constant 1056964608 + 11: 6(float) Constant 1065353216 + 12: TypeInt 32 0 + 13: TypeVector 12(int) 3 + 14: 12(int) Constant 1 + 15: 13(ivec3) ConstantComposite 14 14 14 + 4(main): 2 Function None 3 + 5: Label + 8(x): 7(ptr) Variable Function + 10(y): 7(ptr) Variable Function + Store 8(x) 9 + Store 10(y) 11 + Return + FunctionEnd diff --git a/Test/spv.intrinsicsSpirvDecorateString.comp b/Test/spv.intrinsicsSpirvDecorateString.comp new file mode 100644 index 0000000000..7de65fce0f --- /dev/null +++ b/Test/spv.intrinsicsSpirvDecorateString.comp @@ -0,0 +1,15 @@ +#version 460 core +#extension GL_EXT_spirv_intrinsics : require + +spirv_decorate_string(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5635, "foobar") // UserSemantic +spirv_decorate(0) // RelaxedPrecision +float x = 0.5; + +spirv_decorate(0) // RelaxedPrecision +spirv_decorate_string(extensions = ["SPV_GOOGLE_hlsl_functionality1"], 5635, "foobar") // UserSemantic +float y = 1.0; + +layout(local_size_x = 1) in; +void main() +{ +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 4b22c6cd40..638fc6a30a 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4228,7 +4228,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons if (dstSpirvDecorate.decorates.find(decorateString.first) != dstSpirvDecorate.decorates.end()) error(loc, "too many SPIR-V decorate qualifiers", "spirv_decorate_string", "(decoration=%u)", decorateString.first); else - dstSpirvDecorate.decorates.insert(decorateString); + dstSpirvDecorate.decorateStrings.insert(decorateString); } } else { dst.spirvDecorate = src.spirvDecorate; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4ded1278fd..44c50e0529 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -385,6 +385,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.intrinsicsSpirvByReference.vert", "spv.intrinsicsSpirvDecorate.frag", "spv.intrinsicsSpirvDecorateId.comp", + "spv.intrinsicsSpirvDecorateString.comp", "spv.intrinsicsSpirvExecutionMode.frag", "spv.intrinsicsSpirvInstruction.vert", "spv.intrinsicsSpirvLiteral.vert", From 1aefd184a602c3efe414cf0208ab36a720d19e95 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Mon, 3 Apr 2023 14:24:00 -0600 Subject: [PATCH 169/594] Fix DebugCompilationUnit scope Fix 3167. --- SPIRV/SpvBuilder.cpp | 11 + Test/baseResults/spv.debuginfo.glsl.frag.out | 1649 +++++++++--------- Test/spv.debuginfo.glsl.frag | 2 + 3 files changed, 841 insertions(+), 821 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index da194e99ad..9d07334258 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -144,6 +144,7 @@ void Builder::addLine(Id fileName, int lineNum, int column) void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column) { + assert(!currentDebugScopeId.empty()); if (currentDebugScopeId.top() != lastDebugScopeId) { spv::Id resultId = getUniqueId(); Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst); @@ -1071,6 +1072,12 @@ Id Builder::makeDebugCompilationUnit() { constantsTypesGlobals.push_back(std::unique_ptr(sourceInst)); module.mapInstruction(sourceInst); nonSemanticShaderCompilationUnitId = resultId; + + // We can reasonably assume that makeDebugCompilationUnit will be called before any of + // debug-scope stack. Function scopes and lexical scopes will occur afterward. + assert(currentDebugScopeId.empty()); + currentDebugScopeId.push(nonSemanticShaderCompilationUnitId); + return resultId; } @@ -1100,6 +1107,8 @@ Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id c Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t const argNumber) { assert(name != nullptr); + assert(!currentDebugScopeId.empty()); + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable); @@ -2119,6 +2128,8 @@ Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) { } Id Builder::makeDebugLexicalBlock(uint32_t line) { + assert(!currentDebugScopeId.empty()); + Id lexId = getUniqueId(); auto lex = new Instruction(lexId, makeVoidType(), OpExtInst); lex->addIdOperand(nonSemanticShaderDebugInfo); diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index ffe3275158..358a3bc7d1 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -2,7 +2,7 @@ spv.debuginfo.glsl.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 704 +// Id's are bound by 709 Capability Shader Capability ImageQuery @@ -10,7 +10,7 @@ Validation failed 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 13 "main" 400 445 + EntryPoint Fragment 13 "main" 405 450 ExecutionMode 13 OriginUpperLeft 8: String "uint" 14: String "main" @@ -25,56 +25,57 @@ Validation failed 77: String "shadow" 83: String "fragcolor" 86: String "fragpos" - 96: String "shadowCoord" - 118: String "bool" - 132: String "dist" - 137: String "type.2d.image" - 138: String "@type.2d.image" - 142: String "type.sampled.image" - 143: String "@type.sampled.image" - 147: String "samplerShadowMap" - 181: String "int" - 188: String "texDim" - 200: String "scale" - 206: String "dx" - 218: String "dy" - 229: String "shadowFactor" - 234: String "count" - 239: String "range" - 245: String "x" - 261: String "y" - 307: String "i" - 321: String "shadowClip" - 329: String "color" - 335: String "viewMatrix" - 338: String "Light" - 344: String "lights" - 347: String "debugDisplayTarget" - 351: String "UBO" - 355: String "ubo" - 387: String "fragPos" - 397: String "samplerposition" - 402: String "inUV" - 408: String "normal" - 413: String "samplerNormal" - 420: String "albedo" - 425: String "samplerAlbedo" - 447: String "outFragColor" - 509: String "N" - 528: String "L" - 548: String "V" - 560: String "lightCosInnerAngle" - 566: String "lightCosOuterAngle" - 572: String "lightRange" - 578: String "dir" - 593: String "cosDir" - 601: String "spotEffect" - 610: String "heightAttenuation" - 618: String "NdotL" - 627: String "diff" - 634: String "R" - 643: String "NdotR" - 652: String "spec" + 89: String "int" + 94: String "global_var" + 106: String "shadowCoord" + 128: String "bool" + 142: String "dist" + 147: String "type.2d.image" + 148: String "@type.2d.image" + 152: String "type.sampled.image" + 153: String "@type.sampled.image" + 157: String "samplerShadowMap" + 194: String "texDim" + 205: String "scale" + 211: String "dx" + 223: String "dy" + 234: String "shadowFactor" + 239: String "count" + 244: String "range" + 250: String "x" + 266: String "y" + 312: String "i" + 326: String "shadowClip" + 334: String "color" + 340: String "viewMatrix" + 343: String "Light" + 349: String "lights" + 352: String "debugDisplayTarget" + 356: String "UBO" + 360: String "ubo" + 392: String "fragPos" + 402: String "samplerposition" + 407: String "inUV" + 413: String "normal" + 418: String "samplerNormal" + 425: String "albedo" + 430: String "samplerAlbedo" + 452: String "outFragColor" + 514: String "N" + 533: String "L" + 553: String "V" + 565: String "lightCosInnerAngle" + 571: String "lightCosOuterAngle" + 577: String "lightRange" + 583: String "dir" + 598: String "cosDir" + 606: String "spotEffect" + 615: String "heightAttenuation" + 623: String "NdotL" + 632: String "diff" + 639: String "R" + 648: String "NdotR" + 657: String "spec" Name 13 "main" Name 38 "textureProj(vf4;f1;vf2;" Name 35 "P" @@ -86,92 +87,93 @@ Validation failed Name 76 "shadow(vf3;vf3;" Name 74 "fragcolor" Name 75 "fragpos" - Name 89 "shadow" - Name 94 "shadowCoord" - Name 130 "dist" - Name 145 "samplerShadowMap" - Name 186 "texDim" - Name 198 "scale" - Name 204 "dx" - Name 216 "dy" - Name 227 "shadowFactor" - Name 232 "count" - Name 237 "range" - Name 243 "x" - Name 259 "y" - Name 284 "param" - Name 286 "param" - Name 288 "param" - Name 305 "i" - Name 319 "shadowClip" - Name 327 "Light" - MemberName 327(Light) 0 "position" - MemberName 327(Light) 1 "target" - MemberName 327(Light) 2 "color" - MemberName 327(Light) 3 "viewMatrix" - Name 341 "UBO" - MemberName 341(UBO) 0 "viewPos" - MemberName 341(UBO) 1 "lights" - MemberName 341(UBO) 2 "useShadows" - MemberName 341(UBO) 3 "debugDisplayTarget" - Name 353 "ubo" - Name 366 "shadowFactor" - Name 372 "param" - Name 374 "param" - Name 385 "fragPos" - Name 395 "samplerposition" - Name 400 "inUV" - Name 406 "normal" - Name 411 "samplerNormal" - Name 418 "albedo" - Name 423 "samplerAlbedo" - Name 445 "outFragColor" - Name 450 "param" - Name 451 "param" - Name 499 "fragcolor" - Name 507 "N" - Name 514 "i" - Name 526 "L" - Name 538 "dist" - Name 546 "V" - Name 558 "lightCosInnerAngle" - Name 564 "lightCosOuterAngle" - Name 570 "lightRange" - Name 576 "dir" - Name 591 "cosDir" - Name 599 "spotEffect" - Name 608 "heightAttenuation" - Name 616 "NdotL" - Name 625 "diff" - Name 632 "R" - Name 641 "NdotR" - Name 650 "spec" - Name 694 "param" - Name 696 "param" - Decorate 145(samplerShadowMap) DescriptorSet 0 - Decorate 145(samplerShadowMap) Binding 5 - MemberDecorate 327(Light) 0 Offset 0 - MemberDecorate 327(Light) 1 Offset 16 - MemberDecorate 327(Light) 2 Offset 32 - MemberDecorate 327(Light) 3 ColMajor - MemberDecorate 327(Light) 3 Offset 48 - MemberDecorate 327(Light) 3 MatrixStride 16 - Decorate 339 ArrayStride 112 - MemberDecorate 341(UBO) 0 Offset 0 - MemberDecorate 341(UBO) 1 Offset 16 - MemberDecorate 341(UBO) 2 Offset 352 - MemberDecorate 341(UBO) 3 Offset 356 - Decorate 341(UBO) Block - Decorate 353(ubo) DescriptorSet 0 - Decorate 353(ubo) Binding 4 - Decorate 395(samplerposition) DescriptorSet 0 - Decorate 395(samplerposition) Binding 1 - Decorate 400(inUV) Location 0 - Decorate 411(samplerNormal) DescriptorSet 0 - Decorate 411(samplerNormal) Binding 2 - Decorate 423(samplerAlbedo) DescriptorSet 0 - Decorate 423(samplerAlbedo) Binding 3 - Decorate 445(outFragColor) Location 0 + Name 92 "global_var" + Name 99 "shadow" + Name 104 "shadowCoord" + Name 140 "dist" + Name 155 "samplerShadowMap" + Name 192 "texDim" + Name 203 "scale" + Name 209 "dx" + Name 221 "dy" + Name 232 "shadowFactor" + Name 237 "count" + Name 242 "range" + Name 248 "x" + Name 264 "y" + Name 289 "param" + Name 291 "param" + Name 293 "param" + Name 310 "i" + Name 324 "shadowClip" + Name 332 "Light" + MemberName 332(Light) 0 "position" + MemberName 332(Light) 1 "target" + MemberName 332(Light) 2 "color" + MemberName 332(Light) 3 "viewMatrix" + Name 346 "UBO" + MemberName 346(UBO) 0 "viewPos" + MemberName 346(UBO) 1 "lights" + MemberName 346(UBO) 2 "useShadows" + MemberName 346(UBO) 3 "debugDisplayTarget" + Name 358 "ubo" + Name 371 "shadowFactor" + Name 377 "param" + Name 379 "param" + Name 390 "fragPos" + Name 400 "samplerposition" + Name 405 "inUV" + Name 411 "normal" + Name 416 "samplerNormal" + Name 423 "albedo" + Name 428 "samplerAlbedo" + Name 450 "outFragColor" + Name 455 "param" + Name 456 "param" + Name 504 "fragcolor" + Name 512 "N" + Name 519 "i" + Name 531 "L" + Name 543 "dist" + Name 551 "V" + Name 563 "lightCosInnerAngle" + Name 569 "lightCosOuterAngle" + Name 575 "lightRange" + Name 581 "dir" + Name 596 "cosDir" + Name 604 "spotEffect" + Name 613 "heightAttenuation" + Name 621 "NdotL" + Name 630 "diff" + Name 637 "R" + Name 646 "NdotR" + Name 655 "spec" + Name 699 "param" + Name 701 "param" + Decorate 155(samplerShadowMap) DescriptorSet 0 + Decorate 155(samplerShadowMap) Binding 5 + MemberDecorate 332(Light) 0 Offset 0 + MemberDecorate 332(Light) 1 Offset 16 + MemberDecorate 332(Light) 2 Offset 32 + MemberDecorate 332(Light) 3 ColMajor + MemberDecorate 332(Light) 3 Offset 48 + MemberDecorate 332(Light) 3 MatrixStride 16 + Decorate 344 ArrayStride 112 + MemberDecorate 346(UBO) 0 Offset 0 + MemberDecorate 346(UBO) 1 Offset 16 + MemberDecorate 346(UBO) 2 Offset 352 + MemberDecorate 346(UBO) 3 Offset 356 + Decorate 346(UBO) Block + Decorate 358(ubo) DescriptorSet 0 + Decorate 358(ubo) Binding 4 + Decorate 400(samplerposition) DescriptorSet 0 + Decorate 400(samplerposition) Binding 1 + Decorate 405(inUV) Location 0 + Decorate 416(samplerNormal) DescriptorSet 0 + Decorate 416(samplerNormal) Binding 2 + Decorate 428(samplerAlbedo) DescriptorSet 0 + Decorate 428(samplerAlbedo) Binding 3 + Decorate 450(outFragColor) Location 0 3: TypeVoid 4: TypeFunction 3 6: TypeInt 32 0 @@ -216,459 +218,464 @@ Validation failed 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 77 73 16 11 11 18 77 12 11 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 70 16 11 11 78 20 19 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 86 70 16 11 11 78 20 21 - 91: 6(int) Constant 59 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 25 16 91 11 40 20 - 93: 23(float) Constant 1065353216 - 97: 6(int) Constant 60 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 27 16 97 11 40 20 - 106: 23(float) Constant 1056964608 - 114: TypeBool - 117: 23(float) Constant 3212836864 - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 133: 6(int) Constant 65 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 132 25 16 133 11 40 20 - 135: TypeImage 23(float) 2D array sampled format:Unknown - 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 137 11 16 133 11 18 138 139 12 - 140: TypeSampledImage 135 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 11 16 133 11 18 143 139 12 - 144: TypePointer UniformConstant 140 -145(samplerShadowMap): 144(ptr) Variable UniformConstant - 148: 6(int) Constant 8 - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 147 141 16 133 11 18 147 145(samplerShadowMap) 148 - 162: 23(float) Constant 0 - 163: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 175: 23(float) Constant 1048576000 - 180: TypeInt 32 1 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 181 9 20 11 - 183: TypeVector 180(int) 2 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 182 21 - 185: TypePointer Function 183(ivec2) - 189: 6(int) Constant 76 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 188 184 16 189 11 60 20 - 192: 180(int) Constant 0 - 194: TypeVector 180(int) 3 - 195: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 182 12 - 201: 6(int) Constant 77 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 25 16 201 11 60 20 - 203: 23(float) Constant 1069547520 - 207: 6(int) Constant 78 - 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 206 25 16 207 11 60 20 - 211: TypePointer Function 180(int) - 219: 6(int) Constant 79 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 218 25 16 219 11 60 20 - 230: 6(int) Constant 81 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 25 16 230 11 60 20 - 235: 6(int) Constant 82 - 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 182 16 235 11 60 20 - 240: 6(int) Constant 83 - 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 239 182 16 240 11 60 20 - 242: 180(int) Constant 1 - 246: 6(int) Constant 85 - 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 182 16 246 11 60 20 - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 262: 6(int) Constant 87 - 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 182 16 262 11 60 20 - 273: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 308: 6(int) Constant 98 - 306: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 182 16 308 11 78 20 - 316: 180(int) Constant 3 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 322: 6(int) Constant 100 - 320: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 321 27 16 322 11 78 20 - 324: TypeMatrix 26(fvec4) 4 - 326: 114(bool) ConstantTrue - 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 27 20 326 - 327(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 324 - 330: 6(int) Constant 45 - 331: 6(int) Constant 7 - 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 - 332: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 - 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 - 336: 6(int) Constant 46 - 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 335 325 16 336 331 11 11 12 - 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 338 19 16 322 11 18 338 11 12 328 332 333 334 - 339: TypeArray 327(Light) 12 - 340: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 337 12 - 341(UBO): TypeStruct 26(fvec4) 339 180(int) 180(int) - 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 329 27 16 330 331 11 11 12 - 345: 6(int) Constant 52 - 343: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 344 340 16 345 148 11 11 12 - 348: 6(int) Constant 54 - 346: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 182 16 348 10 11 11 12 - 349: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 182 16 348 10 11 11 12 - 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 351 19 16 322 11 18 351 11 12 342 343 346 349 - 352: TypePointer Uniform 341(UBO) - 353(ubo): 352(ptr) Variable Uniform - 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 350 16 322 11 18 355 353(ubo) 148 - 357: TypePointer Uniform 324 - 368: 6(int) Constant 104 - 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 25 16 368 11 78 20 - 388: 6(int) Constant 117 - 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 387 70 16 388 11 15 20 - 390: TypeImage 23(float) 2D sampled format:Unknown - 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 137 11 16 388 11 18 138 139 12 - 392: TypeSampledImage 390 - 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 11 16 388 11 18 143 139 12 - 394: TypePointer UniformConstant 392 -395(samplerposition): 394(ptr) Variable UniformConstant - 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 397 393 16 388 11 18 397 395(samplerposition) 148 - 399: TypePointer Input 30(fvec2) - 400(inUV): 399(ptr) Variable Input - 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 402 31 16 388 11 18 402 400(inUV) 148 - 409: 6(int) Constant 118 - 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 408 70 16 409 11 15 20 -411(samplerNormal): 394(ptr) Variable UniformConstant - 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 413 393 16 409 11 18 413 411(samplerNormal) 148 - 421: 6(int) Constant 119 - 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 420 27 16 421 11 15 20 -423(samplerAlbedo): 394(ptr) Variable UniformConstant - 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 425 393 16 421 11 18 425 423(samplerAlbedo) 148 - 429: TypePointer Uniform 180(int) - 432: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 444: TypePointer Output 26(fvec4) -445(outFragColor): 444(ptr) Variable Output - 448: 6(int) Constant 125 - 446: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 447 27 16 448 11 18 447 445(outFragColor) 148 - 449: 69(fvec3) ConstantComposite 93 93 93 - 454: TypePointer Output 23(float) - 501: 6(int) Constant 145 - 500: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 70 16 501 11 15 20 - 505: 23(float) Constant 1036831949 - 510: 6(int) Constant 147 - 508: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 509 70 16 510 11 15 20 - 516: 6(int) Constant 149 - 515: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 182 16 516 11 15 20 - 524: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 - 529: 6(int) Constant 152 - 527: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 528 70 16 529 11 15 20 - 532: TypePointer Uniform 26(fvec4) - 540: 6(int) Constant 154 - 539: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 132 25 16 540 11 15 20 - 549: 6(int) Constant 158 - 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 548 70 16 549 11 15 20 - 561: 6(int) Constant 161 - 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 560 25 16 561 11 15 20 - 563: 23(float) Constant 1064781546 - 567: 6(int) Constant 162 - 565: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 566 25 16 567 11 15 20 - 569: 23(float) Constant 1063781322 - 573: 6(int) Constant 163 - 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 572 25 16 573 11 15 20 - 575: 23(float) Constant 1120403456 - 579: 6(int) Constant 166 - 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 578 70 16 579 11 15 20 - 594: 6(int) Constant 169 - 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 593 25 16 594 11 15 20 - 602: 6(int) Constant 170 - 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 601 25 16 602 11 15 20 - 611: 6(int) Constant 171 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 610 25 16 611 11 15 20 - 619: 6(int) Constant 174 - 617: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 618 25 16 619 11 15 20 - 628: 6(int) Constant 175 - 626: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 627 70 16 628 11 15 20 - 635: 6(int) Constant 178 - 633: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 634 70 16 635 11 15 20 - 644: 6(int) Constant 179 - 642: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 643 25 16 644 11 15 20 - 653: 6(int) Constant 180 - 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 652 70 16 653 11 15 20 - 656: 23(float) Constant 1098907648 - 661: 23(float) Constant 1075838976 - 676: 180(int) Constant 2 - 690: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 118 9 21 11 + 88: TypeInt 32 1 + 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 89 9 20 11 + 91: TypePointer Private 88(int) + 92(global_var): 91(ptr) Variable Private + 95: 6(int) Constant 41 + 96: 6(int) Constant 8 + 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 90 16 95 11 18 94 92(global_var) 96 + 97: 88(int) Constant 0 + 101: 6(int) Constant 61 + 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 25 16 101 11 40 20 + 103: 23(float) Constant 1065353216 + 107: 6(int) Constant 62 + 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 106 27 16 107 11 40 20 + 116: 23(float) Constant 1056964608 + 124: TypeBool + 127: 23(float) Constant 3212836864 + 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 143: 6(int) Constant 67 + 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 25 16 143 11 40 20 + 145: TypeImage 23(float) 2D array sampled format:Unknown + 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 147 11 16 143 11 18 148 149 12 + 150: TypeSampledImage 145 + 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 11 16 143 11 18 153 149 12 + 154: TypePointer UniformConstant 150 +155(samplerShadowMap): 154(ptr) Variable UniformConstant + 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 157 151 16 143 11 18 157 155(samplerShadowMap) 96 + 171: 23(float) Constant 0 + 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 184: 23(float) Constant 1048576000 + 189: TypeVector 88(int) 2 + 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 90 21 + 191: TypePointer Function 189(ivec2) + 195: 6(int) Constant 78 + 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 194 190 16 195 11 60 20 + 199: TypeVector 88(int) 3 + 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 90 12 + 206: 6(int) Constant 79 + 204: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 205 25 16 206 11 60 20 + 208: 23(float) Constant 1069547520 + 212: 6(int) Constant 80 + 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 25 16 212 11 60 20 + 216: TypePointer Function 88(int) + 224: 6(int) Constant 81 + 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 25 16 224 11 60 20 + 235: 6(int) Constant 83 + 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 25 16 235 11 60 20 + 240: 6(int) Constant 84 + 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 239 90 16 240 11 60 20 + 245: 6(int) Constant 85 + 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 90 16 245 11 60 20 + 247: 88(int) Constant 1 + 251: 6(int) Constant 87 + 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 90 16 251 11 60 20 + 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 267: 6(int) Constant 89 + 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 90 16 267 11 60 20 + 278: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 313: 6(int) Constant 100 + 311: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 312 90 16 313 11 78 20 + 321: 88(int) Constant 3 + 322: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 327: 6(int) Constant 102 + 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 326 27 16 327 11 78 20 + 329: TypeMatrix 26(fvec4) 4 + 331: 124(bool) ConstantTrue + 330: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 27 20 331 + 332(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 329 + 335: 6(int) Constant 47 + 336: 6(int) Constant 7 + 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 + 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 + 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 + 341: 6(int) Constant 48 + 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 340 330 16 341 336 11 11 12 + 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 343 19 16 327 11 18 343 11 12 333 337 338 339 + 344: TypeArray 332(Light) 12 + 345: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 342 12 + 346(UBO): TypeStruct 26(fvec4) 344 88(int) 88(int) + 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 + 350: 6(int) Constant 54 + 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 349 345 16 350 96 11 11 12 + 353: 6(int) Constant 56 + 351: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 352 90 16 353 10 11 11 12 + 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 352 90 16 353 10 11 11 12 + 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 356 19 16 327 11 18 356 11 12 347 348 351 354 + 357: TypePointer Uniform 346(UBO) + 358(ubo): 357(ptr) Variable Uniform + 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 360 355 16 327 11 18 360 358(ubo) 96 + 362: TypePointer Uniform 329 + 373: 6(int) Constant 106 + 372: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 25 16 373 11 78 20 + 393: 6(int) Constant 119 + 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 392 70 16 393 11 15 20 + 395: TypeImage 23(float) 2D sampled format:Unknown + 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 147 11 16 393 11 18 148 149 12 + 397: TypeSampledImage 395 + 398: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 11 16 393 11 18 153 149 12 + 399: TypePointer UniformConstant 397 +400(samplerposition): 399(ptr) Variable UniformConstant + 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 402 398 16 393 11 18 402 400(samplerposition) 96 + 404: TypePointer Input 30(fvec2) + 405(inUV): 404(ptr) Variable Input + 406: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 407 31 16 393 11 18 407 405(inUV) 96 + 414: 6(int) Constant 120 + 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 413 70 16 414 11 15 20 +416(samplerNormal): 399(ptr) Variable UniformConstant + 417: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 418 398 16 414 11 18 418 416(samplerNormal) 96 + 426: 6(int) Constant 121 + 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 425 27 16 426 11 15 20 +428(samplerAlbedo): 399(ptr) Variable UniformConstant + 429: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 398 16 426 11 18 430 428(samplerAlbedo) 96 + 434: TypePointer Uniform 88(int) + 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 449: TypePointer Output 26(fvec4) +450(outFragColor): 449(ptr) Variable Output + 453: 6(int) Constant 127 + 451: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 452 27 16 453 11 18 452 450(outFragColor) 96 + 454: 69(fvec3) ConstantComposite 103 103 103 + 459: TypePointer Output 23(float) + 506: 6(int) Constant 147 + 505: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 70 16 506 11 15 20 + 510: 23(float) Constant 1036831949 + 515: 6(int) Constant 149 + 513: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 514 70 16 515 11 15 20 + 521: 6(int) Constant 151 + 520: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 312 90 16 521 11 15 20 + 529: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 + 534: 6(int) Constant 154 + 532: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 533 70 16 534 11 15 20 + 537: TypePointer Uniform 26(fvec4) + 545: 6(int) Constant 156 + 544: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 25 16 545 11 15 20 + 554: 6(int) Constant 160 + 552: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 553 70 16 554 11 15 20 + 566: 6(int) Constant 163 + 564: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 565 25 16 566 11 15 20 + 568: 23(float) Constant 1064781546 + 572: 6(int) Constant 164 + 570: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 571 25 16 572 11 15 20 + 574: 23(float) Constant 1063781322 + 578: 6(int) Constant 165 + 576: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 577 25 16 578 11 15 20 + 580: 23(float) Constant 1120403456 + 584: 6(int) Constant 168 + 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 583 70 16 584 11 15 20 + 599: 6(int) Constant 171 + 597: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 598 25 16 599 11 15 20 + 607: 6(int) Constant 172 + 605: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 606 25 16 607 11 15 20 + 616: 6(int) Constant 173 + 614: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 615 25 16 616 11 15 20 + 624: 6(int) Constant 176 + 622: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 623 25 16 624 11 15 20 + 633: 6(int) Constant 177 + 631: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 632 70 16 633 11 15 20 + 640: 6(int) Constant 180 + 638: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 639 70 16 640 11 15 20 + 649: 6(int) Constant 181 + 647: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 648 25 16 649 11 15 20 + 658: 6(int) Constant 182 + 656: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 657 70 16 658 11 15 20 + 661: 23(float) Constant 1098907648 + 666: 23(float) Constant 1075838976 + 681: 88(int) Constant 2 + 695: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 13(main): 3 Function None 4 22: Label - 385(fragPos): 71(ptr) Variable Function - 406(normal): 71(ptr) Variable Function - 418(albedo): 28(ptr) Variable Function - 450(param): 71(ptr) Variable Function - 451(param): 71(ptr) Variable Function - 499(fragcolor): 71(ptr) Variable Function - 507(N): 71(ptr) Variable Function - 514(i): 211(ptr) Variable Function - 526(L): 71(ptr) Variable Function - 538(dist): 29(ptr) Variable Function - 546(V): 71(ptr) Variable Function -558(lightCosInnerAngle): 29(ptr) Variable Function -564(lightCosOuterAngle): 29(ptr) Variable Function - 570(lightRange): 29(ptr) Variable Function - 576(dir): 71(ptr) Variable Function - 591(cosDir): 29(ptr) Variable Function - 599(spotEffect): 29(ptr) Variable Function -608(heightAttenuation): 29(ptr) Variable Function - 616(NdotL): 29(ptr) Variable Function - 625(diff): 71(ptr) Variable Function - 632(R): 71(ptr) Variable Function - 641(NdotR): 29(ptr) Variable Function - 650(spec): 71(ptr) Variable Function - 694(param): 71(ptr) Variable Function - 696(param): 71(ptr) Variable Function - 384: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 386 385(fragPos) 47 - 398: 392 Load 395(samplerposition) - 403: 30(fvec2) Load 400(inUV) - 404: 26(fvec4) ImageSampleImplicitLod 398 403 - 405: 69(fvec3) VectorShuffle 404 404 0 1 2 - Store 385(fragPos) 405 - 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 407 406(normal) 47 - 414: 392 Load 411(samplerNormal) - 415: 30(fvec2) Load 400(inUV) - 416: 26(fvec4) ImageSampleImplicitLod 414 415 - 417: 69(fvec3) VectorShuffle 416 416 0 1 2 - Store 406(normal) 417 - 422: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 419 418(albedo) 47 - 426: 392 Load 423(samplerAlbedo) - 427: 30(fvec2) Load 400(inUV) - 428: 26(fvec4) ImageSampleImplicitLod 426 427 - Store 418(albedo) 428 - 430: 429(ptr) AccessChain 353(ubo) 316 - 431: 180(int) Load 430 - 433: 114(bool) SGreaterThan 431 192 - SelectionMerge 435 None - BranchConditional 433 434 435 - 434: Label - 436: 429(ptr) AccessChain 353(ubo) 316 - 437: 180(int) Load 436 - SelectionMerge 443 None - Switch 437 443 - case 1: 438 - case 2: 439 - case 3: 440 - case 4: 441 - case 5: 442 - 438: Label - Store 450(param) 449 - 452: 69(fvec3) Load 385(fragPos) - Store 451(param) 452 - 453: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 450(param) 451(param) - 455: 454(ptr) AccessChain 445(outFragColor) 11 - 456: 23(float) CompositeExtract 453 0 - Store 455 456 - 457: 454(ptr) AccessChain 445(outFragColor) 19 - 458: 23(float) CompositeExtract 453 1 - Store 457 458 - 459: 454(ptr) AccessChain 445(outFragColor) 21 - 460: 23(float) CompositeExtract 453 2 - Store 459 460 - Branch 443 - 439: Label - 462: 69(fvec3) Load 385(fragPos) - 463: 454(ptr) AccessChain 445(outFragColor) 11 - 464: 23(float) CompositeExtract 462 0 - Store 463 464 - 465: 454(ptr) AccessChain 445(outFragColor) 19 - 466: 23(float) CompositeExtract 462 1 - Store 465 466 - 467: 454(ptr) AccessChain 445(outFragColor) 21 - 468: 23(float) CompositeExtract 462 2 - Store 467 468 - Branch 443 - 440: Label - 470: 69(fvec3) Load 406(normal) - 471: 454(ptr) AccessChain 445(outFragColor) 11 - 472: 23(float) CompositeExtract 470 0 - Store 471 472 - 473: 454(ptr) AccessChain 445(outFragColor) 19 - 474: 23(float) CompositeExtract 470 1 - Store 473 474 - 475: 454(ptr) AccessChain 445(outFragColor) 21 - 476: 23(float) CompositeExtract 470 2 - Store 475 476 - Branch 443 - 441: Label - 478: 26(fvec4) Load 418(albedo) - 479: 69(fvec3) VectorShuffle 478 478 0 1 2 - 480: 454(ptr) AccessChain 445(outFragColor) 11 - 481: 23(float) CompositeExtract 479 0 + 390(fragPos): 71(ptr) Variable Function + 411(normal): 71(ptr) Variable Function + 423(albedo): 28(ptr) Variable Function + 455(param): 71(ptr) Variable Function + 456(param): 71(ptr) Variable Function + 504(fragcolor): 71(ptr) Variable Function + 512(N): 71(ptr) Variable Function + 519(i): 216(ptr) Variable Function + 531(L): 71(ptr) Variable Function + 543(dist): 29(ptr) Variable Function + 551(V): 71(ptr) Variable Function +563(lightCosInnerAngle): 29(ptr) Variable Function +569(lightCosOuterAngle): 29(ptr) Variable Function + 575(lightRange): 29(ptr) Variable Function + 581(dir): 71(ptr) Variable Function + 596(cosDir): 29(ptr) Variable Function + 604(spotEffect): 29(ptr) Variable Function +613(heightAttenuation): 29(ptr) Variable Function + 621(NdotL): 29(ptr) Variable Function + 630(diff): 71(ptr) Variable Function + 637(R): 71(ptr) Variable Function + 646(NdotR): 29(ptr) Variable Function + 655(spec): 71(ptr) Variable Function + 699(param): 71(ptr) Variable Function + 701(param): 71(ptr) Variable Function + Store 92(global_var) 97 + 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) + 394: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 391 390(fragPos) 47 + 403: 397 Load 400(samplerposition) + 408: 30(fvec2) Load 405(inUV) + 409: 26(fvec4) ImageSampleImplicitLod 403 408 + 410: 69(fvec3) VectorShuffle 409 409 0 1 2 + Store 390(fragPos) 410 + 415: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 412 411(normal) 47 + 419: 397 Load 416(samplerNormal) + 420: 30(fvec2) Load 405(inUV) + 421: 26(fvec4) ImageSampleImplicitLod 419 420 + 422: 69(fvec3) VectorShuffle 421 421 0 1 2 + Store 411(normal) 422 + 427: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 424 423(albedo) 47 + 431: 397 Load 428(samplerAlbedo) + 432: 30(fvec2) Load 405(inUV) + 433: 26(fvec4) ImageSampleImplicitLod 431 432 + Store 423(albedo) 433 + 435: 434(ptr) AccessChain 358(ubo) 321 + 436: 88(int) Load 435 + 438: 124(bool) SGreaterThan 436 97 + SelectionMerge 440 None + BranchConditional 438 439 440 + 439: Label + 441: 434(ptr) AccessChain 358(ubo) 321 + 442: 88(int) Load 441 + SelectionMerge 448 None + Switch 442 448 + case 1: 443 + case 2: 444 + case 3: 445 + case 4: 446 + case 5: 447 + 443: Label + Store 455(param) 454 + 457: 69(fvec3) Load 390(fragPos) + Store 456(param) 457 + 458: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 455(param) 456(param) + 460: 459(ptr) AccessChain 450(outFragColor) 11 + 461: 23(float) CompositeExtract 458 0 + Store 460 461 + 462: 459(ptr) AccessChain 450(outFragColor) 19 + 463: 23(float) CompositeExtract 458 1 + Store 462 463 + 464: 459(ptr) AccessChain 450(outFragColor) 21 + 465: 23(float) CompositeExtract 458 2 + Store 464 465 + Branch 448 + 444: Label + 467: 69(fvec3) Load 390(fragPos) + 468: 459(ptr) AccessChain 450(outFragColor) 11 + 469: 23(float) CompositeExtract 467 0 + Store 468 469 + 470: 459(ptr) AccessChain 450(outFragColor) 19 + 471: 23(float) CompositeExtract 467 1 + Store 470 471 + 472: 459(ptr) AccessChain 450(outFragColor) 21 + 473: 23(float) CompositeExtract 467 2 + Store 472 473 + Branch 448 + 445: Label + 475: 69(fvec3) Load 411(normal) + 476: 459(ptr) AccessChain 450(outFragColor) 11 + 477: 23(float) CompositeExtract 475 0 + Store 476 477 + 478: 459(ptr) AccessChain 450(outFragColor) 19 + 479: 23(float) CompositeExtract 475 1 + Store 478 479 + 480: 459(ptr) AccessChain 450(outFragColor) 21 + 481: 23(float) CompositeExtract 475 2 Store 480 481 - 482: 454(ptr) AccessChain 445(outFragColor) 19 - 483: 23(float) CompositeExtract 479 1 - Store 482 483 - 484: 454(ptr) AccessChain 445(outFragColor) 21 - 485: 23(float) CompositeExtract 479 2 - Store 484 485 - Branch 443 - 442: Label - 487: 26(fvec4) Load 418(albedo) - 488: 69(fvec3) VectorShuffle 487 487 3 3 3 - 489: 454(ptr) AccessChain 445(outFragColor) 11 - 490: 23(float) CompositeExtract 488 0 + Branch 448 + 446: Label + 483: 26(fvec4) Load 423(albedo) + 484: 69(fvec3) VectorShuffle 483 483 0 1 2 + 485: 459(ptr) AccessChain 450(outFragColor) 11 + 486: 23(float) CompositeExtract 484 0 + Store 485 486 + 487: 459(ptr) AccessChain 450(outFragColor) 19 + 488: 23(float) CompositeExtract 484 1 + Store 487 488 + 489: 459(ptr) AccessChain 450(outFragColor) 21 + 490: 23(float) CompositeExtract 484 2 Store 489 490 - 491: 454(ptr) AccessChain 445(outFragColor) 19 - 492: 23(float) CompositeExtract 488 1 - Store 491 492 - 493: 454(ptr) AccessChain 445(outFragColor) 21 - 494: 23(float) CompositeExtract 488 2 - Store 493 494 - Branch 443 - 443: Label - 497: 454(ptr) AccessChain 445(outFragColor) 12 - Store 497 93 + Branch 448 + 447: Label + 492: 26(fvec4) Load 423(albedo) + 493: 69(fvec3) VectorShuffle 492 492 3 3 3 + 494: 459(ptr) AccessChain 450(outFragColor) 11 + 495: 23(float) CompositeExtract 493 0 + Store 494 495 + 496: 459(ptr) AccessChain 450(outFragColor) 19 + 497: 23(float) CompositeExtract 493 1 + Store 496 497 + 498: 459(ptr) AccessChain 450(outFragColor) 21 + 499: 23(float) CompositeExtract 493 2 + Store 498 499 + Branch 448 + 448: Label + 502: 459(ptr) AccessChain 450(outFragColor) 12 + Store 502 103 Return - 435: Label - 502: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 500 499(fragcolor) 47 - 503: 26(fvec4) Load 418(albedo) - 504: 69(fvec3) VectorShuffle 503 503 0 1 2 - 506: 69(fvec3) VectorTimesScalar 504 505 - Store 499(fragcolor) 506 - 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 508 507(N) 47 - 512: 69(fvec3) Load 406(normal) - 513: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 512 - Store 507(N) 513 - 517: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 515 514(i) 47 - Store 514(i) 192 - Branch 518 - 518: Label - LoopMerge 520 521 None - Branch 522 - 522: Label - 523: 180(int) Load 514(i) - 525: 114(bool) SLessThan 523 316 - BranchConditional 525 519 520 - 519: Label - 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 527 526(L) 47 - 531: 180(int) Load 514(i) - 533: 532(ptr) AccessChain 353(ubo) 242 531 192 - 534: 26(fvec4) Load 533 - 535: 69(fvec3) VectorShuffle 534 534 0 1 2 - 536: 69(fvec3) Load 385(fragPos) - 537: 69(fvec3) FSub 535 536 - Store 526(L) 537 - 541: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 539 538(dist) 47 - 542: 69(fvec3) Load 526(L) - 543: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 542 - Store 538(dist) 543 - 544: 69(fvec3) Load 526(L) - 545: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544 - Store 526(L) 545 - 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 547 546(V) 47 - 551: 532(ptr) AccessChain 353(ubo) 192 - 552: 26(fvec4) Load 551 - 553: 69(fvec3) VectorShuffle 552 552 0 1 2 - 554: 69(fvec3) Load 385(fragPos) - 555: 69(fvec3) FSub 553 554 - Store 546(V) 555 - 556: 69(fvec3) Load 546(V) - 557: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 556 - Store 546(V) 557 - 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 559 558(lightCosInnerAngle) 47 - Store 558(lightCosInnerAngle) 563 - 568: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 565 564(lightCosOuterAngle) 47 - Store 564(lightCosOuterAngle) 569 - 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 571 570(lightRange) 47 - Store 570(lightRange) 575 - 580: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 577 576(dir) 47 - 581: 180(int) Load 514(i) - 582: 532(ptr) AccessChain 353(ubo) 242 581 192 - 583: 26(fvec4) Load 582 - 584: 69(fvec3) VectorShuffle 583 583 0 1 2 - 585: 180(int) Load 514(i) - 586: 532(ptr) AccessChain 353(ubo) 242 585 242 - 587: 26(fvec4) Load 586 - 588: 69(fvec3) VectorShuffle 587 587 0 1 2 - 589: 69(fvec3) FSub 584 588 - 590: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 589 - Store 576(dir) 590 - 595: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 592 591(cosDir) 47 - 596: 69(fvec3) Load 526(L) - 597: 69(fvec3) Load 576(dir) - 598: 23(float) Dot 596 597 - Store 591(cosDir) 598 - 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 600 599(spotEffect) 47 - 604: 23(float) Load 564(lightCosOuterAngle) - 605: 23(float) Load 558(lightCosInnerAngle) - 606: 23(float) Load 591(cosDir) - 607: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 604 605 606 - Store 599(spotEffect) 607 - 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 609 608(heightAttenuation) 47 - 613: 23(float) Load 570(lightRange) - 614: 23(float) Load 538(dist) - 615: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 613 162 614 - Store 608(heightAttenuation) 615 - 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 617 616(NdotL) 47 - 621: 69(fvec3) Load 507(N) - 622: 69(fvec3) Load 526(L) - 623: 23(float) Dot 621 622 - 624: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 623 - Store 616(NdotL) 624 - 629: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 626 625(diff) 47 - 630: 23(float) Load 616(NdotL) - 631: 69(fvec3) CompositeConstruct 630 630 630 - Store 625(diff) 631 - 636: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 633 632(R) 47 - 637: 69(fvec3) Load 526(L) - 638: 69(fvec3) FNegate 637 - 639: 69(fvec3) Load 507(N) - 640: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 638 639 - Store 632(R) 640 - 645: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 642 641(NdotR) 47 - 646: 69(fvec3) Load 632(R) - 647: 69(fvec3) Load 546(V) - 648: 23(float) Dot 646 647 - 649: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 162 648 - Store 641(NdotR) 649 - 654: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 651 650(spec) 47 - 655: 23(float) Load 641(NdotR) - 657: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 655 656 - 658: 29(ptr) AccessChain 418(albedo) 12 - 659: 23(float) Load 658 - 660: 23(float) FMul 657 659 - 662: 23(float) FMul 660 661 - 663: 69(fvec3) CompositeConstruct 662 662 662 - Store 650(spec) 663 - 664: 69(fvec3) Load 625(diff) - 665: 69(fvec3) Load 650(spec) - 666: 69(fvec3) FAdd 664 665 - 667: 23(float) Load 599(spotEffect) - 668: 69(fvec3) VectorTimesScalar 666 667 - 669: 23(float) Load 608(heightAttenuation) - 670: 69(fvec3) VectorTimesScalar 668 669 - 671: 23(float) CompositeExtract 670 0 - 672: 23(float) CompositeExtract 670 1 - 673: 23(float) CompositeExtract 670 2 - 674: 69(fvec3) CompositeConstruct 671 672 673 - 675: 180(int) Load 514(i) - 677: 532(ptr) AccessChain 353(ubo) 242 675 676 - 678: 26(fvec4) Load 677 - 679: 69(fvec3) VectorShuffle 678 678 0 1 2 - 680: 69(fvec3) FMul 674 679 - 681: 26(fvec4) Load 418(albedo) - 682: 69(fvec3) VectorShuffle 681 681 0 1 2 - 683: 69(fvec3) FMul 680 682 - 684: 69(fvec3) Load 499(fragcolor) - 685: 69(fvec3) FAdd 684 683 - Store 499(fragcolor) 685 - Branch 521 - 521: Label - 686: 180(int) Load 514(i) - 687: 180(int) IAdd 686 242 - Store 514(i) 687 - Branch 518 - 520: Label - 688: 429(ptr) AccessChain 353(ubo) 676 - 689: 180(int) Load 688 - 691: 114(bool) SGreaterThan 689 192 - SelectionMerge 693 None - BranchConditional 691 692 693 - 692: Label - 695: 69(fvec3) Load 499(fragcolor) - Store 694(param) 695 - 697: 69(fvec3) Load 385(fragPos) - Store 696(param) 697 - 698: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 694(param) 696(param) - Store 499(fragcolor) 698 - Branch 693 - 693: Label - 699: 69(fvec3) Load 499(fragcolor) - 700: 23(float) CompositeExtract 699 0 - 701: 23(float) CompositeExtract 699 1 - 702: 23(float) CompositeExtract 699 2 - 703: 26(fvec4) CompositeConstruct 700 701 702 93 - Store 445(outFragColor) 703 + 440: Label + 507: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 505 504(fragcolor) 47 + 508: 26(fvec4) Load 423(albedo) + 509: 69(fvec3) VectorShuffle 508 508 0 1 2 + 511: 69(fvec3) VectorTimesScalar 509 510 + Store 504(fragcolor) 511 + 516: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(N) 47 + 517: 69(fvec3) Load 411(normal) + 518: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 517 + Store 512(N) 518 + 522: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 520 519(i) 47 + Store 519(i) 97 + Branch 523 + 523: Label + LoopMerge 525 526 None + Branch 527 + 527: Label + 528: 88(int) Load 519(i) + 530: 124(bool) SLessThan 528 321 + BranchConditional 530 524 525 + 524: Label + 535: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 532 531(L) 47 + 536: 88(int) Load 519(i) + 538: 537(ptr) AccessChain 358(ubo) 247 536 97 + 539: 26(fvec4) Load 538 + 540: 69(fvec3) VectorShuffle 539 539 0 1 2 + 541: 69(fvec3) Load 390(fragPos) + 542: 69(fvec3) FSub 540 541 + Store 531(L) 542 + 546: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 544 543(dist) 47 + 547: 69(fvec3) Load 531(L) + 548: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 547 + Store 543(dist) 548 + 549: 69(fvec3) Load 531(L) + 550: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 549 + Store 531(L) 550 + 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 552 551(V) 47 + 556: 537(ptr) AccessChain 358(ubo) 97 + 557: 26(fvec4) Load 556 + 558: 69(fvec3) VectorShuffle 557 557 0 1 2 + 559: 69(fvec3) Load 390(fragPos) + 560: 69(fvec3) FSub 558 559 + Store 551(V) 560 + 561: 69(fvec3) Load 551(V) + 562: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 561 + Store 551(V) 562 + 567: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 564 563(lightCosInnerAngle) 47 + Store 563(lightCosInnerAngle) 568 + 573: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 570 569(lightCosOuterAngle) 47 + Store 569(lightCosOuterAngle) 574 + 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 576 575(lightRange) 47 + Store 575(lightRange) 580 + 585: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 582 581(dir) 47 + 586: 88(int) Load 519(i) + 587: 537(ptr) AccessChain 358(ubo) 247 586 97 + 588: 26(fvec4) Load 587 + 589: 69(fvec3) VectorShuffle 588 588 0 1 2 + 590: 88(int) Load 519(i) + 591: 537(ptr) AccessChain 358(ubo) 247 590 247 + 592: 26(fvec4) Load 591 + 593: 69(fvec3) VectorShuffle 592 592 0 1 2 + 594: 69(fvec3) FSub 589 593 + 595: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 594 + Store 581(dir) 595 + 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 597 596(cosDir) 47 + 601: 69(fvec3) Load 531(L) + 602: 69(fvec3) Load 581(dir) + 603: 23(float) Dot 601 602 + Store 596(cosDir) 603 + 608: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 605 604(spotEffect) 47 + 609: 23(float) Load 569(lightCosOuterAngle) + 610: 23(float) Load 563(lightCosInnerAngle) + 611: 23(float) Load 596(cosDir) + 612: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 609 610 611 + Store 604(spotEffect) 612 + 617: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 614 613(heightAttenuation) 47 + 618: 23(float) Load 575(lightRange) + 619: 23(float) Load 543(dist) + 620: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 618 171 619 + Store 613(heightAttenuation) 620 + 625: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 622 621(NdotL) 47 + 626: 69(fvec3) Load 512(N) + 627: 69(fvec3) Load 531(L) + 628: 23(float) Dot 626 627 + 629: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 171 628 + Store 621(NdotL) 629 + 634: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 631 630(diff) 47 + 635: 23(float) Load 621(NdotL) + 636: 69(fvec3) CompositeConstruct 635 635 635 + Store 630(diff) 636 + 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 638 637(R) 47 + 642: 69(fvec3) Load 531(L) + 643: 69(fvec3) FNegate 642 + 644: 69(fvec3) Load 512(N) + 645: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 643 644 + Store 637(R) 645 + 650: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 647 646(NdotR) 47 + 651: 69(fvec3) Load 637(R) + 652: 69(fvec3) Load 551(V) + 653: 23(float) Dot 651 652 + 654: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 171 653 + Store 646(NdotR) 654 + 659: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 656 655(spec) 47 + 660: 23(float) Load 646(NdotR) + 662: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 660 661 + 663: 29(ptr) AccessChain 423(albedo) 12 + 664: 23(float) Load 663 + 665: 23(float) FMul 662 664 + 667: 23(float) FMul 665 666 + 668: 69(fvec3) CompositeConstruct 667 667 667 + Store 655(spec) 668 + 669: 69(fvec3) Load 630(diff) + 670: 69(fvec3) Load 655(spec) + 671: 69(fvec3) FAdd 669 670 + 672: 23(float) Load 604(spotEffect) + 673: 69(fvec3) VectorTimesScalar 671 672 + 674: 23(float) Load 613(heightAttenuation) + 675: 69(fvec3) VectorTimesScalar 673 674 + 676: 23(float) CompositeExtract 675 0 + 677: 23(float) CompositeExtract 675 1 + 678: 23(float) CompositeExtract 675 2 + 679: 69(fvec3) CompositeConstruct 676 677 678 + 680: 88(int) Load 519(i) + 682: 537(ptr) AccessChain 358(ubo) 247 680 681 + 683: 26(fvec4) Load 682 + 684: 69(fvec3) VectorShuffle 683 683 0 1 2 + 685: 69(fvec3) FMul 679 684 + 686: 26(fvec4) Load 423(albedo) + 687: 69(fvec3) VectorShuffle 686 686 0 1 2 + 688: 69(fvec3) FMul 685 687 + 689: 69(fvec3) Load 504(fragcolor) + 690: 69(fvec3) FAdd 689 688 + Store 504(fragcolor) 690 + Branch 526 + 526: Label + 691: 88(int) Load 519(i) + 692: 88(int) IAdd 691 247 + Store 519(i) 692 + Branch 523 + 525: Label + 693: 434(ptr) AccessChain 358(ubo) 681 + 694: 88(int) Load 693 + 696: 124(bool) SGreaterThan 694 97 + SelectionMerge 698 None + BranchConditional 696 697 698 + 697: Label + 700: 69(fvec3) Load 504(fragcolor) + Store 699(param) 700 + 702: 69(fvec3) Load 390(fragPos) + Store 701(param) 702 + 703: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 699(param) 701(param) + Store 504(fragcolor) 703 + Branch 698 + 698: Label + 704: 69(fvec3) Load 504(fragcolor) + 705: 23(float) CompositeExtract 704 0 + 706: 23(float) CompositeExtract 704 1 + 707: 23(float) CompositeExtract 704 2 + 708: 26(fvec4) CompositeConstruct 705 706 707 103 + Store 450(outFragColor) 708 Return FunctionEnd 38(textureProj(vf4;f1;vf2;): 23(float) Function None 33 @@ -676,262 +683,262 @@ Validation failed 36(layer): 29(ptr) FunctionParameter 37(offset): 32(ptr) FunctionParameter 41: Label - 89(shadow): 29(ptr) Variable Function - 94(shadowCoord): 28(ptr) Variable Function - 130(dist): 29(ptr) Variable Function + 99(shadow): 29(ptr) Variable Function +104(shadowCoord): 28(ptr) Variable Function + 140(dist): 29(ptr) Variable Function 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 35(P) 47 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 36(layer) 47 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 37(offset) 47 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 38(textureProj(vf4;f1;vf2;) - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 89(shadow) 47 - Store 89(shadow) 93 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 94(shadowCoord) 47 - 99: 26(fvec4) Load 35(P) - 100: 29(ptr) AccessChain 35(P) 12 - 101: 23(float) Load 100 - 102: 26(fvec4) CompositeConstruct 101 101 101 101 - 103: 26(fvec4) FDiv 99 102 - Store 94(shadowCoord) 103 - 104: 26(fvec4) Load 94(shadowCoord) - 105: 30(fvec2) VectorShuffle 104 104 0 1 - 107: 30(fvec2) VectorTimesScalar 105 106 - 108: 30(fvec2) CompositeConstruct 106 106 - 109: 30(fvec2) FAdd 107 108 - 110: 29(ptr) AccessChain 94(shadowCoord) 11 - 111: 23(float) CompositeExtract 109 0 - Store 110 111 - 112: 29(ptr) AccessChain 94(shadowCoord) 19 - 113: 23(float) CompositeExtract 109 1 - Store 112 113 - 115: 29(ptr) AccessChain 94(shadowCoord) 21 - 116: 23(float) Load 115 - 120: 114(bool) FOrdGreaterThan 116 117 - SelectionMerge 122 None - BranchConditional 120 121 122 - 121: Label - 123: 29(ptr) AccessChain 94(shadowCoord) 21 - 124: 23(float) Load 123 - 126: 114(bool) FOrdLessThan 124 93 - Branch 122 - 122: Label - 127: 114(bool) Phi 120 41 126 121 - SelectionMerge 129 None - BranchConditional 127 128 129 - 128: Label - 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 131 130(dist) 47 - 149: 140 Load 145(samplerShadowMap) - 150: 26(fvec4) Load 94(shadowCoord) - 151: 30(fvec2) VectorShuffle 150 150 0 1 - 152: 30(fvec2) Load 37(offset) - 153: 30(fvec2) FAdd 151 152 - 154: 23(float) Load 36(layer) - 155: 23(float) CompositeExtract 153 0 - 156: 23(float) CompositeExtract 153 1 - 157: 69(fvec3) CompositeConstruct 155 156 154 - 158: 26(fvec4) ImageSampleImplicitLod 149 157 - 159: 23(float) CompositeExtract 158 0 - Store 130(dist) 159 - 160: 29(ptr) AccessChain 94(shadowCoord) 12 - 161: 23(float) Load 160 - 164: 114(bool) FOrdGreaterThan 161 162 - SelectionMerge 166 None - BranchConditional 164 165 166 - 165: Label - 167: 23(float) Load 130(dist) - 168: 29(ptr) AccessChain 94(shadowCoord) 21 - 169: 23(float) Load 168 - 171: 114(bool) FOrdLessThan 167 169 - Branch 166 - 166: Label - 172: 114(bool) Phi 164 128 171 165 - SelectionMerge 174 None - BranchConditional 172 173 174 - 173: Label - Store 89(shadow) 175 - Branch 174 - 174: Label - Branch 129 - 129: Label - 176: 23(float) Load 89(shadow) - ReturnValue 176 + 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 38(textureProj(vf4;f1;vf2;) + 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 99(shadow) 47 + Store 99(shadow) 103 + 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 105 104(shadowCoord) 47 + 109: 26(fvec4) Load 35(P) + 110: 29(ptr) AccessChain 35(P) 12 + 111: 23(float) Load 110 + 112: 26(fvec4) CompositeConstruct 111 111 111 111 + 113: 26(fvec4) FDiv 109 112 + Store 104(shadowCoord) 113 + 114: 26(fvec4) Load 104(shadowCoord) + 115: 30(fvec2) VectorShuffle 114 114 0 1 + 117: 30(fvec2) VectorTimesScalar 115 116 + 118: 30(fvec2) CompositeConstruct 116 116 + 119: 30(fvec2) FAdd 117 118 + 120: 29(ptr) AccessChain 104(shadowCoord) 11 + 121: 23(float) CompositeExtract 119 0 + Store 120 121 + 122: 29(ptr) AccessChain 104(shadowCoord) 19 + 123: 23(float) CompositeExtract 119 1 + Store 122 123 + 125: 29(ptr) AccessChain 104(shadowCoord) 21 + 126: 23(float) Load 125 + 130: 124(bool) FOrdGreaterThan 126 127 + SelectionMerge 132 None + BranchConditional 130 131 132 + 131: Label + 133: 29(ptr) AccessChain 104(shadowCoord) 21 + 134: 23(float) Load 133 + 136: 124(bool) FOrdLessThan 134 103 + Branch 132 + 132: Label + 137: 124(bool) Phi 130 41 136 131 + SelectionMerge 139 None + BranchConditional 137 138 139 + 138: Label + 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(dist) 47 + 158: 150 Load 155(samplerShadowMap) + 159: 26(fvec4) Load 104(shadowCoord) + 160: 30(fvec2) VectorShuffle 159 159 0 1 + 161: 30(fvec2) Load 37(offset) + 162: 30(fvec2) FAdd 160 161 + 163: 23(float) Load 36(layer) + 164: 23(float) CompositeExtract 162 0 + 165: 23(float) CompositeExtract 162 1 + 166: 69(fvec3) CompositeConstruct 164 165 163 + 167: 26(fvec4) ImageSampleImplicitLod 158 166 + 168: 23(float) CompositeExtract 167 0 + Store 140(dist) 168 + 169: 29(ptr) AccessChain 104(shadowCoord) 12 + 170: 23(float) Load 169 + 173: 124(bool) FOrdGreaterThan 170 171 + SelectionMerge 175 None + BranchConditional 173 174 175 + 174: Label + 176: 23(float) Load 140(dist) + 177: 29(ptr) AccessChain 104(shadowCoord) 21 + 178: 23(float) Load 177 + 180: 124(bool) FOrdLessThan 176 178 + Branch 175 + 175: Label + 181: 124(bool) Phi 173 138 180 174 + SelectionMerge 183 None + BranchConditional 181 182 183 + 182: Label + Store 99(shadow) 184 + Branch 183 + 183: Label + Branch 139 + 139: Label + 185: 23(float) Load 99(shadow) + ReturnValue 185 FunctionEnd 58(filterPCF(vf4;f1;): 23(float) Function None 54 56(sc): 28(ptr) FunctionParameter 57(layer): 29(ptr) FunctionParameter 61: Label - 186(texDim): 185(ptr) Variable Function - 198(scale): 29(ptr) Variable Function - 204(dx): 29(ptr) Variable Function - 216(dy): 29(ptr) Variable Function -227(shadowFactor): 29(ptr) Variable Function - 232(count): 211(ptr) Variable Function - 237(range): 211(ptr) Variable Function - 243(x): 211(ptr) Variable Function - 259(y): 211(ptr) Variable Function - 284(param): 28(ptr) Variable Function - 286(param): 29(ptr) Variable Function - 288(param): 32(ptr) Variable Function + 192(texDim): 191(ptr) Variable Function + 203(scale): 29(ptr) Variable Function + 209(dx): 29(ptr) Variable Function + 221(dy): 29(ptr) Variable Function +232(shadowFactor): 29(ptr) Variable Function + 237(count): 216(ptr) Variable Function + 242(range): 216(ptr) Variable Function + 248(x): 216(ptr) Variable Function + 264(y): 216(ptr) Variable Function + 289(param): 28(ptr) Variable Function + 291(param): 29(ptr) Variable Function + 293(param): 32(ptr) Variable Function 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 56(sc) 47 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 57(layer) 47 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 60 58(filterPCF(vf4;f1;) - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 187 186(texDim) 47 - 191: 140 Load 145(samplerShadowMap) - 193: 135 Image 191 - 196: 194(ivec3) ImageQuerySizeLod 193 192 - 197: 183(ivec2) VectorShuffle 196 196 0 1 - Store 186(texDim) 197 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(scale) 47 - Store 198(scale) 203 - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 205 204(dx) 47 - 209: 23(float) Load 198(scale) - 210: 23(float) FMul 209 93 - 212: 211(ptr) AccessChain 186(texDim) 11 - 213: 180(int) Load 212 - 214: 23(float) ConvertSToF 213 - 215: 23(float) FDiv 210 214 - Store 204(dx) 215 - 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 217 216(dy) 47 - 221: 23(float) Load 198(scale) - 222: 23(float) FMul 221 93 - 223: 211(ptr) AccessChain 186(texDim) 19 - 224: 180(int) Load 223 - 225: 23(float) ConvertSToF 224 - 226: 23(float) FDiv 222 225 - Store 216(dy) 226 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(shadowFactor) 47 - Store 227(shadowFactor) 162 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(count) 47 - Store 232(count) 192 - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 238 237(range) 47 - Store 237(range) 242 - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(x) 47 - 248: 180(int) Load 237(range) - 249: 180(int) SNegate 248 - Store 243(x) 249 - Branch 250 - 250: Label - LoopMerge 252 253 None - Branch 254 - 254: Label - 255: 180(int) Load 243(x) - 256: 180(int) Load 237(range) - 258: 114(bool) SLessThanEqual 255 256 - BranchConditional 258 251 252 - 251: Label - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(y) 47 - 264: 180(int) Load 237(range) - 265: 180(int) SNegate 264 - Store 259(y) 265 - Branch 266 - 266: Label - LoopMerge 268 269 None - Branch 270 - 270: Label - 271: 180(int) Load 259(y) - 272: 180(int) Load 237(range) - 274: 114(bool) SLessThanEqual 271 272 - BranchConditional 274 267 268 - 267: Label - 275: 23(float) Load 204(dx) - 276: 180(int) Load 243(x) - 277: 23(float) ConvertSToF 276 - 278: 23(float) FMul 275 277 - 279: 23(float) Load 216(dy) - 280: 180(int) Load 259(y) - 281: 23(float) ConvertSToF 280 - 282: 23(float) FMul 279 281 - 283: 30(fvec2) CompositeConstruct 278 282 - 285: 26(fvec4) Load 56(sc) - Store 284(param) 285 - 287: 23(float) Load 57(layer) - Store 286(param) 287 - Store 288(param) 283 - 289: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 284(param) 286(param) 288(param) - 290: 23(float) Load 227(shadowFactor) - 291: 23(float) FAdd 290 289 - Store 227(shadowFactor) 291 - 292: 180(int) Load 232(count) - 293: 180(int) IAdd 292 242 - Store 232(count) 293 - Branch 269 - 269: Label - 294: 180(int) Load 259(y) - 295: 180(int) IAdd 294 242 - Store 259(y) 295 - Branch 266 - 268: Label - Branch 253 - 253: Label - 296: 180(int) Load 243(x) - 297: 180(int) IAdd 296 242 - Store 243(x) 297 - Branch 250 - 252: Label - 298: 23(float) Load 227(shadowFactor) - 299: 180(int) Load 232(count) - 300: 23(float) ConvertSToF 299 - 301: 23(float) FDiv 298 300 - ReturnValue 301 + 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 60 58(filterPCF(vf4;f1;) + 196: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 193 192(texDim) 47 + 197: 150 Load 155(samplerShadowMap) + 198: 145 Image 197 + 201: 199(ivec3) ImageQuerySizeLod 198 97 + 202: 189(ivec2) VectorShuffle 201 201 0 1 + Store 192(texDim) 202 + 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 204 203(scale) 47 + Store 203(scale) 208 + 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(dx) 47 + 214: 23(float) Load 203(scale) + 215: 23(float) FMul 214 103 + 217: 216(ptr) AccessChain 192(texDim) 11 + 218: 88(int) Load 217 + 219: 23(float) ConvertSToF 218 + 220: 23(float) FDiv 215 219 + Store 209(dx) 220 + 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(dy) 47 + 226: 23(float) Load 203(scale) + 227: 23(float) FMul 226 103 + 228: 216(ptr) AccessChain 192(texDim) 19 + 229: 88(int) Load 228 + 230: 23(float) ConvertSToF 229 + 231: 23(float) FDiv 227 230 + Store 221(dy) 231 + 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(shadowFactor) 47 + Store 232(shadowFactor) 171 + 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 238 237(count) 47 + Store 237(count) 97 + 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(range) 47 + Store 242(range) 247 + 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(x) 47 + 253: 88(int) Load 242(range) + 254: 88(int) SNegate 253 + Store 248(x) 254 + Branch 255 + 255: Label + LoopMerge 257 258 None + Branch 259 + 259: Label + 260: 88(int) Load 248(x) + 261: 88(int) Load 242(range) + 263: 124(bool) SLessThanEqual 260 261 + BranchConditional 263 256 257 + 256: Label + 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(y) 47 + 269: 88(int) Load 242(range) + 270: 88(int) SNegate 269 + Store 264(y) 270 + Branch 271 + 271: Label + LoopMerge 273 274 None + Branch 275 + 275: Label + 276: 88(int) Load 264(y) + 277: 88(int) Load 242(range) + 279: 124(bool) SLessThanEqual 276 277 + BranchConditional 279 272 273 + 272: Label + 280: 23(float) Load 209(dx) + 281: 88(int) Load 248(x) + 282: 23(float) ConvertSToF 281 + 283: 23(float) FMul 280 282 + 284: 23(float) Load 221(dy) + 285: 88(int) Load 264(y) + 286: 23(float) ConvertSToF 285 + 287: 23(float) FMul 284 286 + 288: 30(fvec2) CompositeConstruct 283 287 + 290: 26(fvec4) Load 56(sc) + Store 289(param) 290 + 292: 23(float) Load 57(layer) + Store 291(param) 292 + Store 293(param) 288 + 294: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 289(param) 291(param) 293(param) + 295: 23(float) Load 232(shadowFactor) + 296: 23(float) FAdd 295 294 + Store 232(shadowFactor) 296 + 297: 88(int) Load 237(count) + 298: 88(int) IAdd 297 247 + Store 237(count) 298 + Branch 274 + 274: Label + 299: 88(int) Load 264(y) + 300: 88(int) IAdd 299 247 + Store 264(y) 300 + Branch 271 + 273: Label + Branch 258 + 258: Label + 301: 88(int) Load 248(x) + 302: 88(int) IAdd 301 247 + Store 248(x) 302 + Branch 255 + 257: Label + 303: 23(float) Load 232(shadowFactor) + 304: 88(int) Load 237(count) + 305: 23(float) ConvertSToF 304 + 306: 23(float) FDiv 303 305 + ReturnValue 306 FunctionEnd 76(shadow(vf3;vf3;): 69(fvec3) Function None 72 74(fragcolor): 71(ptr) FunctionParameter 75(fragpos): 71(ptr) FunctionParameter 79: Label - 305(i): 211(ptr) Variable Function - 319(shadowClip): 28(ptr) Variable Function -366(shadowFactor): 29(ptr) Variable Function - 372(param): 28(ptr) Variable Function - 374(param): 29(ptr) Variable Function + 310(i): 216(ptr) Variable Function + 324(shadowClip): 28(ptr) Variable Function +371(shadowFactor): 29(ptr) Variable Function + 377(param): 28(ptr) Variable Function + 379(param): 29(ptr) Variable Function 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 74(fragcolor) 47 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 75(fragpos) 47 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 78 76(shadow(vf3;vf3;) - 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 306 305(i) 47 - Store 305(i) 192 - Branch 310 - 310: Label - LoopMerge 312 313 None - Branch 314 - 314: Label - 315: 180(int) Load 305(i) - 318: 114(bool) SLessThan 315 316 - BranchConditional 318 311 312 - 311: Label - 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 320 319(shadowClip) 47 - 356: 180(int) Load 305(i) - 358: 357(ptr) AccessChain 353(ubo) 242 356 316 - 359: 324 Load 358 - 360: 69(fvec3) Load 75(fragpos) - 361: 23(float) CompositeExtract 360 0 - 362: 23(float) CompositeExtract 360 1 - 363: 23(float) CompositeExtract 360 2 - 364: 26(fvec4) CompositeConstruct 361 362 363 93 - 365: 26(fvec4) MatrixTimesVector 359 364 - Store 319(shadowClip) 365 - 369: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 367 366(shadowFactor) 47 - 370: 180(int) Load 305(i) - 371: 23(float) ConvertSToF 370 - 373: 26(fvec4) Load 319(shadowClip) - Store 372(param) 373 - Store 374(param) 371 - 375: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 372(param) 374(param) - Store 366(shadowFactor) 375 - 376: 23(float) Load 366(shadowFactor) - 377: 69(fvec3) Load 74(fragcolor) - 378: 69(fvec3) VectorTimesScalar 377 376 - Store 74(fragcolor) 378 - Branch 313 - 313: Label - 379: 180(int) Load 305(i) - 380: 180(int) IAdd 379 242 - Store 305(i) 380 - Branch 310 - 312: Label - 381: 69(fvec3) Load 74(fragcolor) - ReturnValue 381 + 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 78 76(shadow(vf3;vf3;) + 314: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 311 310(i) 47 + Store 310(i) 97 + Branch 315 + 315: Label + LoopMerge 317 318 None + Branch 319 + 319: Label + 320: 88(int) Load 310(i) + 323: 124(bool) SLessThan 320 321 + BranchConditional 323 316 317 + 316: Label + 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 325 324(shadowClip) 47 + 361: 88(int) Load 310(i) + 363: 362(ptr) AccessChain 358(ubo) 247 361 321 + 364: 329 Load 363 + 365: 69(fvec3) Load 75(fragpos) + 366: 23(float) CompositeExtract 365 0 + 367: 23(float) CompositeExtract 365 1 + 368: 23(float) CompositeExtract 365 2 + 369: 26(fvec4) CompositeConstruct 366 367 368 103 + 370: 26(fvec4) MatrixTimesVector 364 369 + Store 324(shadowClip) 370 + 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 372 371(shadowFactor) 47 + 375: 88(int) Load 310(i) + 376: 23(float) ConvertSToF 375 + 378: 26(fvec4) Load 324(shadowClip) + Store 377(param) 378 + Store 379(param) 376 + 380: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 377(param) 379(param) + Store 371(shadowFactor) 380 + 381: 23(float) Load 371(shadowFactor) + 382: 69(fvec3) Load 74(fragcolor) + 383: 69(fvec3) VectorTimesScalar 382 381 + Store 74(fragcolor) 383 + Branch 318 + 318: Label + 384: 88(int) Load 310(i) + 385: 88(int) IAdd 384 247 + Store 310(i) 385 + Branch 315 + 317: Label + 386: 69(fvec3) Load 74(fragcolor) + ReturnValue 386 FunctionEnd diff --git a/Test/spv.debuginfo.glsl.frag b/Test/spv.debuginfo.glsl.frag index bf5f622d9d..86316af2ae 100644 --- a/Test/spv.debuginfo.glsl.frag +++ b/Test/spv.debuginfo.glsl.frag @@ -38,6 +38,8 @@ layout (location = 0) out vec4 outFragColor; #define AMBIENT_LIGHT 0.1 #define USE_PCF +int global_var = 0; + struct Light { vec4 position; From 893145ead225352b3b9783fef3ba6a88d2fe18a5 Mon Sep 17 00:00:00 2001 From: Moritz Heinemann Date: Tue, 14 Mar 2023 15:55:17 +0100 Subject: [PATCH 170/594] Add option to glslangValidator to inject preamble --- StandAlone/StandAlone.cpp | 25 +++++++++++++++++++++- Test/baseResults/glsl.-P.frag.out | 35 +++++++++++++++++++++++++++++++ Test/glsl.-P.frag | 20 ++++++++++++++++++ Test/runtests | 8 ++++--- 4 files changed, 84 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/glsl.-P.frag.out create mode 100644 Test/glsl.-P.frag diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index e026285620..598ca9ad4a 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -258,6 +258,17 @@ class TPreamble { text.append("\n"); } + void addText(std::string preambleText) + { + fixLine(preambleText); + + Processes.push_back("preamble-text"); + Processes.back().append(preambleText); + + text.append(preambleText); + text.append("\n"); + } + protected: void fixLine(std::string& line) { @@ -727,6 +738,13 @@ void ProcessArguments(std::vector>& workItem } else if (lowerword == "no-storage-format" || // synonyms lowerword == "nsf") { Options |= EOptionNoStorageFormat; + } else if (lowerword == "preamble-text" || + lowerword == "p") { + if (argc > 1) + UserPreamble.addText(argv[1]); + else + Error("expects ", argv[0]); + bumpArg(); } else if (lowerword == "relaxed-errors") { Options |= EOptionRelaxedErrors; } else if (lowerword == "reflect-strict-array-suffix") { @@ -926,6 +944,9 @@ void ProcessArguments(std::vector>& workItem else Error("unknown -O option"); break; + case 'P': + UserPreamble.addText(getStringOperand("-P")); + break; case 'R': VulkanRulesRelaxed = true; break; @@ -1832,7 +1853,7 @@ void CompileFile(const char* fileName, ShHandle compiler) SetMessageOptions(messages); if (UserPreamble.isSet()) - Error("-D and -U options require -l (linking)\n"); + Error("-D, -U and -P options require -l (linking)\n"); for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) { for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) { @@ -1902,6 +1923,8 @@ void usage() " is searched first, followed by left-to-right order of -I\n" " -Od disables optimization; may cause illegal SPIR-V for HLSL\n" " -Os optimizes SPIR-V to minimize size\n" + " -P | --preamble-text | --P \n" + " inject custom preamble text\n" " -R use relaxed verification rules for generating Vulkan SPIR-V,\n" " allowing the use of default uniforms, atomic_uints, and\n" " gl_VertexID and gl_InstanceID keywords.\n" diff --git a/Test/baseResults/glsl.-P.frag.out b/Test/baseResults/glsl.-P.frag.out new file mode 100644 index 0000000000..27d8965459 --- /dev/null +++ b/Test/baseResults/glsl.-P.frag.out @@ -0,0 +1,35 @@ +glsl.-P.frag +Shader version: 450 +0:? Sequence +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'color' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 1.000000 +0:19 1.000000 +0:19 1.000000 +0:19 1.000000 +0:? Linker Objects +0:? 'color' (layout( location=0) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +0:? Sequence +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:19 Sequence +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'color' (layout( location=0) out 4-component vector of float) +0:19 Constant: +0:19 1.000000 +0:19 1.000000 +0:19 1.000000 +0:19 1.000000 +0:? Linker Objects +0:? 'color' (layout( location=0) out 4-component vector of float) + diff --git a/Test/glsl.-P.frag b/Test/glsl.-P.frag new file mode 100644 index 0000000000..72df8dedd1 --- /dev/null +++ b/Test/glsl.-P.frag @@ -0,0 +1,20 @@ +#version 450 + +layout(location=0) out vec4 color; + +void main() +{ + #ifndef TEST1 + #error TEST1 is not defined + #endif + + #ifndef TEST2 + #error TEST2 is not defined + #endif + + #ifndef TEST3 + #error TEST3 is not defined + #endif + + color = vec4(1.0); +} diff --git a/Test/runtests b/Test/runtests index 2ee0db0d7c..75acef1a51 100755 --- a/Test/runtests +++ b/Test/runtests @@ -18,7 +18,7 @@ if [ -d "${LIBPATH}" ]; then fi function run { - $EXE $@ + $EXE "$@" result=$? case "$result" in [0-6]) # Valid success and error codes @@ -201,13 +201,15 @@ run -D -Od -e main -H --depfile $TARGETDIR/hlsl.dashI.vert.d.out -Od -Iinc1/path diff -b $BASEDIR/hlsl.dashI.vert.d.out $TARGETDIR/hlsl.dashI.vert.d.out || HASERROR=1 # -# Testing -D and -U +# Testing -D, -U and -P # -echo "Testing -D and -U" +echo "Testing -D, -U and -P" run -DUNDEFED -UIN_SHADER -DFOO=200 -i -l --U UNDEFED --define-macro MUL=FOO*2 glsl.-D-U.frag > $TARGETDIR/glsl.-D-U.frag.out diff -b $BASEDIR/glsl.-D-U.frag.out $TARGETDIR/glsl.-D-U.frag.out || HASERROR=1 run -D -Od -e main -V -i -DUNDEFED -UIN_SHADER --D FOO=200 --undef-macro UNDEFED -Od hlsl.-D-U.frag > $TARGETDIR/hlsl.-D-U.frag.out diff -b $BASEDIR/hlsl.-D-U.frag.out $TARGETDIR/hlsl.-D-U.frag.out || HASERROR=1 +run -P"#define TEST1" -i -l --preamble-text "#define TEST2" --p "#define TEST3" glsl.-P.frag > $TARGETDIR/glsl.-P.frag.out +diff -b $BASEDIR/glsl.-P.frag.out $TARGETDIR/glsl.-P.frag.out || HASERROR=1 # # Test --client and --target-env From bdba39bae63802c75a577cd6b753385f8057578b Mon Sep 17 00:00:00 2001 From: Moritz Heinemann Date: Tue, 21 Mar 2023 14:21:09 +0100 Subject: [PATCH 171/594] Add more preamble tests --- Test/baseResults/glsl.-P.function.frag.out | 45 ++++++++++++++++++++ Test/baseResults/glsl.-P.include.frag.out | 49 ++++++++++++++++++++++ Test/glsl.-P.function.frag | 8 ++++ Test/glsl.-P.include.frag | 10 +++++ Test/glsl.-P.included.glsl | 4 ++ Test/runtests | 4 ++ 6 files changed, 120 insertions(+) create mode 100644 Test/baseResults/glsl.-P.function.frag.out create mode 100644 Test/baseResults/glsl.-P.include.frag.out create mode 100644 Test/glsl.-P.function.frag create mode 100644 Test/glsl.-P.include.frag create mode 100644 Test/glsl.-P.included.glsl diff --git a/Test/baseResults/glsl.-P.function.frag.out b/Test/baseResults/glsl.-P.function.frag.out new file mode 100644 index 0000000000..b753cd1f7e --- /dev/null +++ b/Test/baseResults/glsl.-P.function.frag.out @@ -0,0 +1,45 @@ +glsl.-P.function.frag +Shader version: 450 +0:? Sequence +-1:1 Function Definition: getColor( ( global 4-component vector of float) +-1:1 Function Parameters: +-1:1 Sequence +-1:1 Branch: Return with expression +-1:1 Constant: +-1:1 1.000000 +-1:1 1.000000 +-1:1 1.000000 +-1:1 1.000000 +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:7 Sequence +0:7 move second child to first child ( temp 4-component vector of float) +0:7 'color' (layout( location=0) out 4-component vector of float) +0:7 Function Call: getColor( ( global 4-component vector of float) +0:? Linker Objects +0:? 'color' (layout( location=0) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +0:? Sequence +-1:1 Function Definition: getColor( ( global 4-component vector of float) +-1:1 Function Parameters: +-1:1 Sequence +-1:1 Branch: Return with expression +-1:1 Constant: +-1:1 1.000000 +-1:1 1.000000 +-1:1 1.000000 +-1:1 1.000000 +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:7 Sequence +0:7 move second child to first child ( temp 4-component vector of float) +0:7 'color' (layout( location=0) out 4-component vector of float) +0:7 Function Call: getColor( ( global 4-component vector of float) +0:? Linker Objects +0:? 'color' (layout( location=0) out 4-component vector of float) + diff --git a/Test/baseResults/glsl.-P.include.frag.out b/Test/baseResults/glsl.-P.include.frag.out new file mode 100644 index 0000000000..1ac63f5ef6 --- /dev/null +++ b/Test/baseResults/glsl.-P.include.frag.out @@ -0,0 +1,49 @@ +glsl.-P.include.frag +Shader version: 450 +Requested GL_GOOGLE_cpp_style_line_directive +Requested GL_GOOGLE_include_directive +0:? Sequence +0:1 Function Definition: getColor( ( global 4-component vector of float) +0:1 Function Parameters: +0:3 Sequence +0:3 Branch: Return with expression +0:3 Constant: +0:3 1.000000 +0:3 1.000000 +0:3 1.000000 +0:3 1.000000 +0:7 Function Definition: main( ( global void) +0:7 Function Parameters: +0:9 Sequence +0:9 move second child to first child ( temp 4-component vector of float) +0:9 'color' (layout( location=0) out 4-component vector of float) +0:9 Function Call: getColor( ( global 4-component vector of float) +0:? Linker Objects +0:? 'color' (layout( location=0) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 450 +Requested GL_GOOGLE_cpp_style_line_directive +Requested GL_GOOGLE_include_directive +0:? Sequence +0:1 Function Definition: getColor( ( global 4-component vector of float) +0:1 Function Parameters: +0:3 Sequence +0:3 Branch: Return with expression +0:3 Constant: +0:3 1.000000 +0:3 1.000000 +0:3 1.000000 +0:3 1.000000 +0:7 Function Definition: main( ( global void) +0:7 Function Parameters: +0:9 Sequence +0:9 move second child to first child ( temp 4-component vector of float) +0:9 'color' (layout( location=0) out 4-component vector of float) +0:9 Function Call: getColor( ( global 4-component vector of float) +0:? Linker Objects +0:? 'color' (layout( location=0) out 4-component vector of float) + diff --git a/Test/glsl.-P.function.frag b/Test/glsl.-P.function.frag new file mode 100644 index 0000000000..086bb4dc7c --- /dev/null +++ b/Test/glsl.-P.function.frag @@ -0,0 +1,8 @@ +#version 450 + +layout(location=0) out vec4 color; + +void main() +{ + color = getColor(); +} diff --git a/Test/glsl.-P.include.frag b/Test/glsl.-P.include.frag new file mode 100644 index 0000000000..fdadc7178b --- /dev/null +++ b/Test/glsl.-P.include.frag @@ -0,0 +1,10 @@ +#version 450 + +#include "glsl.-P.included.glsl" + +layout(location=0) out vec4 color; + +void main() +{ + color = getColor(); +} diff --git a/Test/glsl.-P.included.glsl b/Test/glsl.-P.included.glsl new file mode 100644 index 0000000000..d870f9f940 --- /dev/null +++ b/Test/glsl.-P.included.glsl @@ -0,0 +1,4 @@ +vec4 getColor() +{ + return vec4(1.0); +} diff --git a/Test/runtests b/Test/runtests index 75acef1a51..112e29ed05 100755 --- a/Test/runtests +++ b/Test/runtests @@ -210,6 +210,10 @@ run -D -Od -e main -V -i -DUNDEFED -UIN_SHADER --D FOO=200 --undef-macro UNDEFED diff -b $BASEDIR/hlsl.-D-U.frag.out $TARGETDIR/hlsl.-D-U.frag.out || HASERROR=1 run -P"#define TEST1" -i -l --preamble-text "#define TEST2" --p "#define TEST3" glsl.-P.frag > $TARGETDIR/glsl.-P.frag.out diff -b $BASEDIR/glsl.-P.frag.out $TARGETDIR/glsl.-P.frag.out || HASERROR=1 +run -i -l --preamble-text "vec4 getColor() { return vec4(1.0); }" glsl.-P.function.frag > $TARGETDIR/glsl.-P.function.frag.out +diff -b $BASEDIR/glsl.-P.function.frag.out $TARGETDIR/glsl.-P.function.frag.out || HASERROR=1 +run -i -l --preamble-text "#extension GL_GOOGLE_include_directive : require" -I. glsl.-P.include.frag > $TARGETDIR/glsl.-P.include.frag.out +diff -b $BASEDIR/glsl.-P.include.frag.out $TARGETDIR/glsl.-P.include.frag.out || HASERROR=1 # # Test --client and --target-env From 9fe5223370e6c29dc8b48fd27dab3dde8ad19f90 Mon Sep 17 00:00:00 2001 From: spencer-lunarg Date: Sun, 9 Apr 2023 16:22:11 +0900 Subject: [PATCH 172/594] Improve error message of alignment offset --- Test/baseResults/440.frag.out | 4 ++-- glslang/HLSL/hlslParseHelper.cpp | 3 ++- glslang/MachineIndependent/ParseHelper.cpp | 3 ++- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out index c7ff72845b..063570aa12 100644 --- a/Test/baseResults/440.frag.out +++ b/Test/baseResults/440.frag.out @@ -43,11 +43,11 @@ ERROR: 0:62: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:63: 'layout' : offset/align can only be used on a uniform or buffer ERROR: 0:84: 'align' : must be a power of 2 ERROR: 0:83: 'offset' : cannot lie in previous members -ERROR: 0:85: 'offset' : must be a multiple of the member's alignment +ERROR: 0:85: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8) ERROR: 0:103: 'align' : must be a power of 2 ERROR: 0:105: 'align' : must be a power of 2 ERROR: 0:102: 'offset' : cannot lie in previous members -ERROR: 0:104: 'offset' : must be a multiple of the member's alignment +ERROR: 0:104: 'offset' : must be a multiple of the member's alignment (layout offset = 68 | member alignment = 8) ERROR: 49 compilation errors. No code generated. diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 48989f0231..c711aa02c2 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -9045,7 +9045,8 @@ void HlslParseContext::fixBlockUniformOffsets(const TQualifier& qualifier, TType // "The specified offset must be a multiple // of the base alignment of the type of the block member it qualifies, or a compile-time error results." if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) - error(memberLoc, "must be a multiple of the member's alignment", "offset", ""); + error(memberLoc, "must be a multiple of the member's alignment", "offset", + "(layout offset = %d | member alignment = %d)", memberQualifier.layoutOffset, memberAlignment); // "The offset qualifier forces the qualified member to start at or after the specified // integral-constant expression, which will be its byte offset from the beginning of the buffer. diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 638fc6a30a..921ddcbeec 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -9029,7 +9029,8 @@ void TParseContext::fixBlockUniformOffsets(TQualifier& qualifier, TTypeList& typ // "The specified offset must be a multiple // of the base alignment of the type of the block member it qualifies, or a compile-time error results." if (! IsMultipleOfPow2(memberQualifier.layoutOffset, memberAlignment)) - error(memberLoc, "must be a multiple of the member's alignment", "offset", ""); + error(memberLoc, "must be a multiple of the member's alignment", "offset", + "(layout offset = %d | member alignment = %d)", memberQualifier.layoutOffset, memberAlignment); // GLSL: "It is a compile-time error to specify an offset that is smaller than the offset of the previous // member in the block or that lies within the previous member of the block" From a270fdae552489950604ef2971a703639d6bc946 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 11 Apr 2023 11:46:40 -0600 Subject: [PATCH 173/594] Fix appveyor build worker image --- .appveyor.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index 33e0309784..76ab1f07b5 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -105,4 +105,4 @@ deploy: force_update: true on: branch: main - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015 + APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 From f766ee96f5df9484000716b14e6747e0364a33c4 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 7 Apr 2023 12:55:01 -0400 Subject: [PATCH 174/594] Improve help text for the new -P option --- StandAlone/StandAlone.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 598ca9ad4a..e038ed167d 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1924,7 +1924,8 @@ void usage() " -Od disables optimization; may cause illegal SPIR-V for HLSL\n" " -Os optimizes SPIR-V to minimize size\n" " -P | --preamble-text | --P \n" - " inject custom preamble text\n" + " inject custom preamble text, which is treated as if it\n" + " appeared immediately after the version declaration (if any).\n" " -R use relaxed verification rules for generating Vulkan SPIR-V,\n" " allowing the use of default uniforms, atomic_uints, and\n" " gl_VertexID and gl_InstanceID keywords.\n" From 4142fead742ff11eabcdb0d4cd4c913ab6f5db49 Mon Sep 17 00:00:00 2001 From: Try Date: Sat, 26 Mar 2022 16:31:50 +0100 Subject: [PATCH 175/594] fix crash in HLSL frontend fix crash, when converting HLSL return of hull shader into spirv/glsl like arrayed output. fix #2914 --- glslang/HLSL/hlslParseHelper.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index c711aa02c2..ac0dee50ca 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -1177,10 +1177,13 @@ void HlslParseContext::flatten(const TVariable& variable, bool linkage, bool arr if (type.isBuiltIn() && !type.isStruct()) return; + auto entry = flattenMap.insert(std::make_pair(variable.getUniqueId(), TFlattenData(type.getQualifier().layoutBinding, type.getQualifier().layoutLocation))); + if (type.isStruct() && type.getStruct()->size()==0) + return; // if flattening arrayed io struct, array each member of dereferenced type if (arrayed) { const TType dereferencedType(type, 0); From 68f073b19569b580ecc7ba13fa96be3ecf65a0f6 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 12 Apr 2023 19:50:41 -0400 Subject: [PATCH 176/594] Add a test for empty structs in HLSL hull shaders --- .../hlsl.emptystructreturn.tesc.out | 606 ++++++++++++++++++ Test/hlsl.emptystructreturn.tesc | 48 ++ gtests/Hlsl.FromFile.cpp | 1 + 3 files changed, 655 insertions(+) create mode 100644 Test/baseResults/hlsl.emptystructreturn.tesc.out create mode 100644 Test/hlsl.emptystructreturn.tesc diff --git a/Test/baseResults/hlsl.emptystructreturn.tesc.out b/Test/baseResults/hlsl.emptystructreturn.tesc.out new file mode 100644 index 0000000000..ffdbb02d4a --- /dev/null +++ b/Test/baseResults/hlsl.emptystructreturn.tesc.out @@ -0,0 +1,606 @@ +hlsl.emptystructreturn.tesc +Shader version: 500 +vertices = 3 +vertex spacing = equal_spacing +triangle order = cw +0:? Sequence +0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void) +0:16 Function Parameters: +0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:20 Function Parameters: +0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:20 'patchId' ( in uint) +0:? Sequence +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 edges: direct index for structure ( temp 3-element array of float) +0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 2.000000 +0:25 move second child to first child ( temp float) +0:25 direct index ( temp float) +0:25 edges: direct index for structure ( temp 3-element array of float) +0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2.000000 +0:26 move second child to first child ( temp float) +0:26 direct index ( temp float) +0:26 edges: direct index for structure ( temp 3-element array of float) +0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 Constant: +0:26 2.000000 +0:29 move second child to first child ( temp float) +0:29 inside: direct index for structure ( temp float) +0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 2.000000 +0:31 Branch: Return with expression +0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) +0:42 Function Parameters: +0:42 'stage_input' ( in structure{}) +0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:42 'pointId' ( in uint) +0:42 'patchId' ( in uint) +0:? Sequence +0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void) +0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:46 Branch: Return with expression +0:46 'output' ( temp structure{}) +0:42 Function Definition: main( ( temp void) +0:42 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child ( temp structure{}) +0:? 'stage_input' ( temp structure{}) +0:? 'stage_input' ( in structure{}) +0:42 Sequence +0:42 move second child to first child ( temp 4-component vector of float) +0:42 position: direct index for structure ( temp 4-component vector of float) +0:42 direct index ( temp structure{ temp 4-component vector of float position}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:42 Constant: +0:42 0 (const int) +0:42 Constant: +0:42 0 (const int) +0:42 direct index ( in 4-component vector of float Position) +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:42 Constant: +0:42 0 (const int) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 position: direct index for structure ( temp 4-component vector of float) +0:42 direct index ( temp structure{ temp 4-component vector of float position}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:42 Constant: +0:42 1 (const int) +0:42 Constant: +0:42 0 (const int) +0:42 direct index ( in 4-component vector of float Position) +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:42 Constant: +0:42 1 (const int) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 position: direct index for structure ( temp 4-component vector of float) +0:42 direct index ( temp structure{ temp 4-component vector of float position}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:42 Constant: +0:42 2 (const int) +0:42 Constant: +0:42 0 (const int) +0:42 direct index ( in 4-component vector of float Position) +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:42 Constant: +0:42 2 (const int) +0:42 move second child to first child ( temp uint) +0:? 'pointId' ( temp uint) +0:? 'pointId' ( in uint InvocationID) +0:42 move second child to first child ( temp uint) +0:? 'patchId' ( temp uint) +0:? 'patchId' ( in uint PrimitiveID) +0:42 Sequence +0:42 move second child to first child ( temp structure{}) +0:42 indirect index ( out structure{}) +0:? '@entryPointOutput' ( out 3-element array of structure{}) +0:? 'pointId' ( in uint InvocationID) +0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) +0:? 'stage_input' ( temp structure{}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:? 'pointId' ( temp uint) +0:? 'patchId' ( temp uint) +0:? Barrier ( temp void) +0:? Test condition and select ( temp void) +0:? Condition +0:? Compare Equal ( temp bool) +0:? 'pointId' ( in uint InvocationID) +0:? Constant: +0:? 0 (const int) +0:? true case +0:? Sequence +0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:? 'patchId' ( in uint PrimitiveID) +0:? Sequence +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 0 (const int) +0:? direct index ( temp float) +0:? edges: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 0 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 1 (const int) +0:? direct index ( temp float) +0:? edges: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 1 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 2 (const int) +0:? direct index ( temp float) +0:? edges: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 2 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelInner) +0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) +0:? Constant: +0:? 0 (const int) +0:? inside: direct index for structure ( temp float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 1 (const int) +0:? Linker Objects +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:? 'pointId' ( in uint InvocationID) +0:? 'patchId' ( in uint PrimitiveID) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) + + +Linked tessellation control stage: + + +Shader version: 500 +vertices = 3 +vertex spacing = equal_spacing +triangle order = cw +0:? Sequence +0:16 Function Definition: blob(struct-HullInputType-vf41[3]; ( temp void) +0:16 Function Parameters: +0:16 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:20 Function Definition: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:20 Function Parameters: +0:20 'inputPatch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:20 'patchId' ( in uint) +0:? Sequence +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 edges: direct index for structure ( temp 3-element array of float) +0:24 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 2.000000 +0:25 move second child to first child ( temp float) +0:25 direct index ( temp float) +0:25 edges: direct index for structure ( temp 3-element array of float) +0:25 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2.000000 +0:26 move second child to first child ( temp float) +0:26 direct index ( temp float) +0:26 edges: direct index for structure ( temp 3-element array of float) +0:26 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 Constant: +0:26 2.000000 +0:29 move second child to first child ( temp float) +0:29 inside: direct index for structure ( temp float) +0:29 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 2.000000 +0:31 Branch: Return with expression +0:31 'output' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:42 Function Definition: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) +0:42 Function Parameters: +0:42 'stage_input' ( in structure{}) +0:42 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:42 'pointId' ( in uint) +0:42 'patchId' ( in uint) +0:? Sequence +0:44 Function Call: blob(struct-HullInputType-vf41[3]; ( temp void) +0:44 'patch' ( in 3-element array of structure{ temp 4-component vector of float position}) +0:46 Branch: Return with expression +0:46 'output' ( temp structure{}) +0:42 Function Definition: main( ( temp void) +0:42 Function Parameters: +0:? Sequence +0:42 Sequence +0:42 move second child to first child ( temp structure{}) +0:? 'stage_input' ( temp structure{}) +0:? 'stage_input' ( in structure{}) +0:42 Sequence +0:42 move second child to first child ( temp 4-component vector of float) +0:42 position: direct index for structure ( temp 4-component vector of float) +0:42 direct index ( temp structure{ temp 4-component vector of float position}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:42 Constant: +0:42 0 (const int) +0:42 Constant: +0:42 0 (const int) +0:42 direct index ( in 4-component vector of float Position) +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:42 Constant: +0:42 0 (const int) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 position: direct index for structure ( temp 4-component vector of float) +0:42 direct index ( temp structure{ temp 4-component vector of float position}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:42 Constant: +0:42 1 (const int) +0:42 Constant: +0:42 0 (const int) +0:42 direct index ( in 4-component vector of float Position) +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:42 Constant: +0:42 1 (const int) +0:42 move second child to first child ( temp 4-component vector of float) +0:42 position: direct index for structure ( temp 4-component vector of float) +0:42 direct index ( temp structure{ temp 4-component vector of float position}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:42 Constant: +0:42 2 (const int) +0:42 Constant: +0:42 0 (const int) +0:42 direct index ( in 4-component vector of float Position) +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:42 Constant: +0:42 2 (const int) +0:42 move second child to first child ( temp uint) +0:? 'pointId' ( temp uint) +0:? 'pointId' ( in uint InvocationID) +0:42 move second child to first child ( temp uint) +0:? 'patchId' ( temp uint) +0:? 'patchId' ( in uint PrimitiveID) +0:42 Sequence +0:42 move second child to first child ( temp structure{}) +0:42 indirect index ( out structure{}) +0:? '@entryPointOutput' ( out 3-element array of structure{}) +0:? 'pointId' ( in uint InvocationID) +0:42 Function Call: @main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1; ( temp structure{}) +0:? 'stage_input' ( temp structure{}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:? 'pointId' ( temp uint) +0:? 'patchId' ( temp uint) +0:? Barrier ( temp void) +0:? Test condition and select ( temp void) +0:? Condition +0:? Compare Equal ( temp bool) +0:? 'pointId' ( in uint InvocationID) +0:? Constant: +0:? 0 (const int) +0:? true case +0:? Sequence +0:? move second child to first child ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Function Call: ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1; ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? 'patch' ( temp 3-element array of structure{ temp 4-component vector of float position}) +0:? 'patchId' ( in uint PrimitiveID) +0:? Sequence +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 0 (const int) +0:? direct index ( temp float) +0:? edges: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 0 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 1 (const int) +0:? direct index ( temp float) +0:? edges: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 1 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelOuter) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? Constant: +0:? 2 (const int) +0:? direct index ( temp float) +0:? edges: direct index for structure ( temp 3-element array of float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 0 (const int) +0:? Constant: +0:? 2 (const int) +0:? move second child to first child ( temp float) +0:? direct index ( patch out float TessLevelInner) +0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) +0:? Constant: +0:? 0 (const int) +0:? inside: direct index for structure ( temp float) +0:? '@patchConstantResult' ( temp structure{ temp 3-element array of float edges, temp float inside}) +0:? Constant: +0:? 1 (const int) +0:? Linker Objects +0:? 'patch.position' ( in 3-element array of 4-component vector of float Position) +0:? 'pointId' ( in uint InvocationID) +0:? 'patchId' ( in uint PrimitiveID) +0:? '@patchConstantOutput.edges' ( patch out 4-element array of float TessLevelOuter) +0:? '@patchConstantOutput.inside' ( patch out 2-element array of float TessLevelInner) + +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 132 + + Capability Tessellation + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint TessellationControl 4 "main" 65 79 82 115 128 + ExecutionMode 4 OutputVertices 3 + ExecutionMode 4 Triangles + ExecutionMode 4 SpacingEqual + ExecutionMode 4 VertexOrderCw + Source HLSL 500 + Name 4 "main" + Name 8 "HullInputType" + MemberName 8(HullInputType) 0 "position" + Name 15 "blob(struct-HullInputType-vf41[3];" + Name 14 "patch" + Name 19 "ConstantOutputType" + MemberName 19(ConstantOutputType) 0 "edges" + MemberName 19(ConstantOutputType) 1 "inside" + Name 23 "ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;" + Name 21 "inputPatch" + Name 22 "patchId" + Name 25 "EmptyStruct" + Name 27 "HullOutputType" + Name 33 "@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;" + Name 29 "stage_input" + Name 30 "patch" + Name 31 "pointId" + Name 32 "patchId" + Name 36 "output" + Name 50 "param" + Name 54 "output" + Name 58 "stage_input" + Name 60 "stage_input" + Name 62 "patch" + Name 65 "patch.position" + Name 77 "pointId" + Name 79 "pointId" + Name 81 "patchId" + Name 82 "patchId" + Name 86 "@entryPointOutput" + Name 88 "param" + Name 90 "param" + Name 92 "param" + Name 94 "param" + Name 107 "@patchConstantResult" + Name 108 "param" + Name 110 "param" + Name 115 "@patchConstantOutput.edges" + Name 128 "@patchConstantOutput.inside" + Decorate 65(patch.position) BuiltIn Position + Decorate 79(pointId) BuiltIn InvocationId + Decorate 82(patchId) BuiltIn PrimitiveId + Decorate 115(@patchConstantOutput.edges) Patch + Decorate 115(@patchConstantOutput.edges) BuiltIn TessLevelOuter + Decorate 128(@patchConstantOutput.inside) Patch + Decorate 128(@patchConstantOutput.inside) BuiltIn TessLevelInner + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 +8(HullInputType): TypeStruct 7(fvec4) + 9: TypeInt 32 0 + 10: 9(int) Constant 3 + 11: TypeArray 8(HullInputType) 10 + 12: TypePointer Function 11 + 13: TypeFunction 2 12(ptr) + 17: TypePointer Function 9(int) + 18: TypeArray 6(float) 10 +19(ConstantOutputType): TypeStruct 18 6(float) + 20: TypeFunction 19(ConstantOutputType) 12(ptr) 17(ptr) + 25(EmptyStruct): TypeStruct + 26: TypePointer Function 25(EmptyStruct) +27(HullOutputType): TypeStruct + 28: TypeFunction 27(HullOutputType) 26(ptr) 12(ptr) 17(ptr) 17(ptr) + 35: TypePointer Function 19(ConstantOutputType) + 37: TypeInt 32 1 + 38: 37(int) Constant 0 + 39: 6(float) Constant 1073741824 + 40: TypePointer Function 6(float) + 42: 37(int) Constant 1 + 44: 37(int) Constant 2 + 53: TypePointer Function 27(HullOutputType) + 59: TypePointer Input 25(EmptyStruct) + 60(stage_input): 59(ptr) Variable Input + 63: TypeArray 7(fvec4) 10 + 64: TypePointer Input 63 +65(patch.position): 64(ptr) Variable Input + 66: TypePointer Input 7(fvec4) + 69: TypePointer Function 7(fvec4) + 78: TypePointer Input 9(int) + 79(pointId): 78(ptr) Variable Input + 82(patchId): 78(ptr) Variable Input + 84: TypeArray 27(HullOutputType) 10 + 85: TypePointer Output 84 +86(@entryPointOutput): 85(ptr) Variable Output + 97: TypePointer Output 27(HullOutputType) + 99: 9(int) Constant 2 + 100: 9(int) Constant 4 + 101: 9(int) Constant 0 + 103: TypeBool + 113: TypeArray 6(float) 100 + 114: TypePointer Output 113 +115(@patchConstantOutput.edges): 114(ptr) Variable Output + 118: TypePointer Output 6(float) + 126: TypeArray 6(float) 99 + 127: TypePointer Output 126 +128(@patchConstantOutput.inside): 127(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 58(stage_input): 26(ptr) Variable Function + 62(patch): 12(ptr) Variable Function + 77(pointId): 17(ptr) Variable Function + 81(patchId): 17(ptr) Variable Function + 88(param): 26(ptr) Variable Function + 90(param): 12(ptr) Variable Function + 92(param): 17(ptr) Variable Function + 94(param): 17(ptr) Variable Function +107(@patchConstantResult): 35(ptr) Variable Function + 108(param): 12(ptr) Variable Function + 110(param): 17(ptr) Variable Function + 61:25(EmptyStruct) Load 60(stage_input) + Store 58(stage_input) 61 + 67: 66(ptr) AccessChain 65(patch.position) 38 + 68: 7(fvec4) Load 67 + 70: 69(ptr) AccessChain 62(patch) 38 38 + Store 70 68 + 71: 66(ptr) AccessChain 65(patch.position) 42 + 72: 7(fvec4) Load 71 + 73: 69(ptr) AccessChain 62(patch) 42 38 + Store 73 72 + 74: 66(ptr) AccessChain 65(patch.position) 44 + 75: 7(fvec4) Load 74 + 76: 69(ptr) AccessChain 62(patch) 44 38 + Store 76 75 + 80: 9(int) Load 79(pointId) + Store 77(pointId) 80 + 83: 9(int) Load 82(patchId) + Store 81(patchId) 83 + 87: 9(int) Load 79(pointId) + 89:25(EmptyStruct) Load 58(stage_input) + Store 88(param) 89 + 91: 11 Load 62(patch) + Store 90(param) 91 + 93: 9(int) Load 77(pointId) + Store 92(param) 93 + 95: 9(int) Load 81(patchId) + Store 94(param) 95 + 96:27(HullOutputType) FunctionCall 33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;) 88(param) 90(param) 92(param) 94(param) + 98: 97(ptr) AccessChain 86(@entryPointOutput) 87 + Store 98 96 + ControlBarrier 99 100 101 + 102: 9(int) Load 79(pointId) + 104: 103(bool) IEqual 102 38 + SelectionMerge 106 None + BranchConditional 104 105 106 + 105: Label + 109: 11 Load 62(patch) + Store 108(param) 109 + 111: 9(int) Load 82(patchId) + Store 110(param) 111 + 112:19(ConstantOutputType) FunctionCall 23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;) 108(param) 110(param) + Store 107(@patchConstantResult) 112 + 116: 40(ptr) AccessChain 107(@patchConstantResult) 38 38 + 117: 6(float) Load 116 + 119: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 38 + Store 119 117 + 120: 40(ptr) AccessChain 107(@patchConstantResult) 38 42 + 121: 6(float) Load 120 + 122: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 42 + Store 122 121 + 123: 40(ptr) AccessChain 107(@patchConstantResult) 38 44 + 124: 6(float) Load 123 + 125: 118(ptr) AccessChain 115(@patchConstantOutput.edges) 44 + Store 125 124 + 129: 40(ptr) AccessChain 107(@patchConstantResult) 42 + 130: 6(float) Load 129 + 131: 118(ptr) AccessChain 128(@patchConstantOutput.inside) 38 + Store 131 130 + Branch 106 + 106: Label + Return + FunctionEnd +15(blob(struct-HullInputType-vf41[3];): 2 Function None 13 + 14(patch): 12(ptr) FunctionParameter + 16: Label + Return + FunctionEnd +23(ColorPatchConstantFunction(struct-HullInputType-vf41[3];u1;):19(ConstantOutputType) Function None 20 + 21(inputPatch): 12(ptr) FunctionParameter + 22(patchId): 17(ptr) FunctionParameter + 24: Label + 36(output): 35(ptr) Variable Function + 41: 40(ptr) AccessChain 36(output) 38 38 + Store 41 39 + 43: 40(ptr) AccessChain 36(output) 38 42 + Store 43 39 + 45: 40(ptr) AccessChain 36(output) 38 44 + Store 45 39 + 46: 40(ptr) AccessChain 36(output) 42 + Store 46 39 + 47:19(ConstantOutputType) Load 36(output) + ReturnValue 47 + FunctionEnd +33(@main(struct-EmptyStruct1;struct-HullInputType-vf41[3];u1;u1;):27(HullOutputType) Function None 28 + 29(stage_input): 26(ptr) FunctionParameter + 30(patch): 12(ptr) FunctionParameter + 31(pointId): 17(ptr) FunctionParameter + 32(patchId): 17(ptr) FunctionParameter + 34: Label + 50(param): 12(ptr) Variable Function + 54(output): 53(ptr) Variable Function + 51: 11 Load 30(patch) + Store 50(param) 51 + 52: 2 FunctionCall 15(blob(struct-HullInputType-vf41[3];) 50(param) + 55:27(HullOutputType) Load 54(output) + ReturnValue 55 + FunctionEnd diff --git a/Test/hlsl.emptystructreturn.tesc b/Test/hlsl.emptystructreturn.tesc new file mode 100644 index 0000000000..bc84893025 --- /dev/null +++ b/Test/hlsl.emptystructreturn.tesc @@ -0,0 +1,48 @@ +struct HullInputType +{ + float4 position : SV_Position; +}; + +struct ConstantOutputType +{ + float edges[3] : SV_TessFactor; + float inside : SV_InsideTessFactor; +}; +struct EmptyStruct {}; + +struct HullOutputType {}; + +void blob(InputPatch patch) +{ +} + +ConstantOutputType ColorPatchConstantFunction(InputPatch inputPatch, uint patchId : SV_PrimitiveID) +{ + ConstantOutputType output; + + // Set the tessellation factors for the three edges of the triangle. + output.edges[0] = 2; + output.edges[1] = 2; + output.edges[2] = 2; + + // Set the tessellation factor for tessallating inside the triangle. + output.inside = 2; + + return output; +} + + +// Hull Shader +[domain("tri")] +[partitioning("integer")] +[outputtopology("triangle_cw")] +[outputcontrolpoints(3)] +[patchconstantfunc("ColorPatchConstantFunction")] +HullOutputType main(EmptyStruct stage_input, InputPatch patch, uint pointId : SV_OutputControlPointID, uint patchId : SV_PrimitiveID) +{ + HullOutputType output; + blob(patch); + + return output; +} + diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 71129ab29b..294472d94a 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -205,6 +205,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.earlydepthstencil.frag", "main"}, {"hlsl.emptystructreturn.frag", "main"}, {"hlsl.emptystructreturn.vert", "main"}, + {"hlsl.emptystructreturn.tesc", "main"}, {"hlsl.emptystruct.init.vert", "main"}, {"hlsl.entry-in.frag", "PixelShaderFunction"}, {"hlsl.entry-out.frag", "PixelShaderFunction"}, From f46f4b192a02dd7797e3e6c1053faeb6dc356b4f Mon Sep 17 00:00:00 2001 From: sean <43609023+spnda@users.noreply.github.com> Date: Mon, 25 Jul 2022 18:45:12 +0200 Subject: [PATCH 177/594] Fix: Migrate Windows CI to GitHub Actions --- .github/workflows/continuous_deployment.yml | 112 ++++++++++++++++++- .github/workflows/continuous_integration.yml | 39 +++++++ 2 files changed, 145 insertions(+), 6 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index d8fe9beecd..6425a040e2 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -21,6 +21,17 @@ on: push: branches: - main + paths-ignore: + - 'README.md' + - 'README-spirv-remap.txt' + - 'LICENSE.txt' + - 'CODE_OF_CONDUCT.md' + - 'BUILD.*' + - 'WORKSPACE' + - 'kokoro/*' + - 'make-revision' + - 'Android.mk' + - '_config.yml' permissions: read-all @@ -36,8 +47,8 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies @@ -97,7 +108,7 @@ jobs: if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@v5 + uses: actions/github-script@v6 with: script: | const script = require('.github/workflows/deploy.js') @@ -114,8 +125,8 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: '3.7' - name: Install GoogleTest @@ -169,7 +180,96 @@ jobs: - name: Deploy env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@v5 + uses: actions/github-script@v6 + with: + script: | + const script = require('.github/workflows/deploy.js') + await script({github, context, core}) + + windows: + runs-on: ${{matrix.os.genus}} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + os: [{genus: windows-2019, family: windows}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + python update_glslang_sources.py + - name: Build + run: | + cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" + cmake --build build --config ${{matrix.cmake_build_type}} --target install + - name: Test + run: | + cd build + ctest -C ${{matrix.cmake_build_type}} --output-on-failure + cd ../Test && bash runtests + - name: Zip + if: ${{ matrix.cmake_build_type == 'Debug' }} + env: + ARCHIVE: glslang-master-${{matrix.os.family}}-Debug.zip + run: | + cd build/install + 7z a ${{env.ARCHIVE}} ` + bin/glslangValidator.exe ` + bin/spirv-remap.exe ` + include/glslang/* ` + lib/GenericCodeGend.lib ` + lib/glslangd.lib ` + lib/glslang-default-resource-limitsd.lib ` + lib/HLSLd.lib ` + lib/MachineIndependentd.lib ` + lib/OGLCompilerd.lib ` + lib/OSDependentd.lib ` + lib/SPIRVd.lib ` + lib/SPVRemapperd.lib ` + lib/SPIRV-Toolsd.lib ` + lib/SPIRV-Tools-optd.lib + - name: Zip + if: ${{ matrix.cmake_build_type == 'Release' }} + env: + ARCHIVE: glslang-master-${{matrix.os.family}}-Release.zip + run: | + cd build/install + 7z a ${{env.ARCHIVE}} ` + bin/glslangValidator.exe ` + bin/spirv-remap.exe ` + include/glslang/* ` + lib/GenericCodeGen.lib ` + lib/glslang.lib ` + lib/glslang-default-resource-limits.lib ` + lib/HLSL.lib ` + lib/MachineIndependent.lib ` + lib/OGLCompiler.lib ` + lib/OSDependent.lib ` + lib/SPIRV.lib ` + lib/SPVRemapper.lib ` + lib/SPIRV-Tools.lib ` + lib/SPIRV-Tools-opt.lib + - name: Deploy + env: + ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip + uses: actions/github-script@v6 with: script: | const script = require('.github/workflows/deploy.js') diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 2b2a086ad8..1fa97d67b5 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -103,6 +103,45 @@ jobs: ctest --output-on-failure && cd ../Test && ./runtests + windows: + runs-on: ${{matrix.os.genus}} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + os: [{genus: windows-2019, family: windows}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + python update_glslang_sources.py + - name: Build + run: | + cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" + cmake --build build --config ${{matrix.cmake_build_type}} --target install + - name: Test + run: | + cd build + ctest -C ${{matrix.cmake_build_type}} --output-on-failure + cd ../Test && bash runtests + android: runs-on: ${{matrix.os}} strategy: From dfdd0ed2ca7e7a916486fc81b3ff17dbb510e2cd Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 19 Apr 2023 15:43:54 -0600 Subject: [PATCH 178/594] Delete appveyor configuration Windows CI is now covered by GitHub actions. --- .appveyor.yml | 108 -------------------------------------------------- 1 file changed, 108 deletions(-) delete mode 100644 .appveyor.yml diff --git a/.appveyor.yml b/.appveyor.yml deleted file mode 100644 index 76ab1f07b5..0000000000 --- a/.appveyor.yml +++ /dev/null @@ -1,108 +0,0 @@ -# Windows Build Configuration for AppVeyor -# http://www.appveyor.com/docs/appveyor-yml - -# build version format -version: "{build}" - -os: Visual Studio 2019 - -platform: - - x64 - -configuration: - - Debug - - Release - -branches: - only: - - main - -# changes to these files don't need to trigger testing -skip_commits: - files: - - README.md - - README-spirv-remap.txt - - LICENSE.txt - - CODE_OF_CONDUCT.md - - BUILD.* - - WORKSPACE - - kokoro/* - - make-revision - - Android.mk - - _config.yml - -# Travis advances the main-tot tag to current top of the tree after -# each push into the main branch, because it relies on that tag to -# upload build artifacts to the main-tot release. This will cause -# double testing for each push on Appveyor: one for the push, one for -# the tag advance. Disable testing tags. -skip_tags: true - -clone_depth: 5 - -matrix: - fast_finish: true # Show final status immediately if a test fails. - -# scripts that run after cloning repository -install: - - C:/Python27/python.exe update_glslang_sources.py - - set PATH=C:\ninja;C:\Python36;%PATH% - - git clone https://github.com/google/googletest.git External/googletest - -build: - parallel: true # enable MSBuild parallel builds - verbosity: minimal - -build_script: - - mkdir build && cd build - - cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX=install .. - - cmake --build . --config %CONFIGURATION% --target install - -test_script: - - ctest -C %CONFIGURATION% --output-on-failure - - cd ../Test && bash runtests - - cd ../build - -after_test: - # For debug build, the generated dll has a postfix "d" in its name. - - ps: >- - If ($env:configuration -Match "Debug") { - $env:SUFFIX="d" - } Else { - $env:SUFFIX="" - } - - cd install - # Zip all glslang artifacts for uploading and deploying - - 7z a glslang-main-windows-"%PLATFORM%"-"%CONFIGURATION%".zip - bin\glslangValidator.exe - bin\spirv-remap.exe - include\glslang\* - lib\GenericCodeGen%SUFFIX%.lib - lib\glslang%SUFFIX%.lib - lib\glslang-default-resource-limits%SUFFIX%.lib - lib\HLSL%SUFFIX%.lib - lib\MachineIndependent%SUFFIX%.lib - lib\OGLCompiler%SUFFIX%.lib - lib\OSDependent%SUFFIX%.lib - lib\SPIRV%SUFFIX%.lib - lib\SPVRemapper%SUFFIX%.lib - lib\SPIRV-Tools%SUFFIX%.lib - lib\SPIRV-Tools-opt%SUFFIX%.lib - -artifacts: - - path: build\install\*.zip - name: artifacts-zip - -deploy: - - provider: GitHub - auth_token: - secure: YglcSYdl0TylEa59H4K6lylBEDr586NAt2EMgZquSo+iuPrwgZQuJLPCoihSm9y6 - release: main-tot - description: "Continuous build of the latest main branch by Appveyor and Github" - artifact: artifacts-zip - draft: false - prerelease: false - force_update: true - on: - branch: main - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019 From b8955549ef3c5c247573573ffbeb0ebde857529a Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 28 Jun 2021 09:43:02 -0400 Subject: [PATCH 179/594] fix error message for vertex struct input Vertex shaders can have pipeline inputs that are arrays, but not structure inputs. (GLSL 4.5 section 4.3.4) But the error message for struct inputs says "cannot be a structure or array". This PR removes the "or array" part. Note: The array case is handled immediately after the check for structure type. Co-authored-by: Arcady Goldmints-Orlov --- Test/baseResults/300layout.vert.out | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Test/baseResults/300layout.vert.out b/Test/baseResults/300layout.vert.out index 527425b37d..e1ec452474 100644 --- a/Test/baseResults/300layout.vert.out +++ b/Test/baseResults/300layout.vert.out @@ -1,6 +1,6 @@ 300layout.vert ERROR: 0:7: 'vertex input arrays' : not supported with this profile: es -ERROR: 0:8: 'in' : cannot be a structure or array +ERROR: 0:8: 'in' : cannot be a structure ERROR: 0:8: 's' : A structure containing an array is not allowed as input in ES ERROR: 0:8: 'vertex input arrays' : not supported with this profile: es ERROR: 0:8: 'location' : overlapping use of location 10 diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 921ddcbeec..6e79f0c2e7 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4013,7 +4013,7 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali switch (language) { case EShLangVertex: if (publicType.basicType == EbtStruct) { - error(loc, "cannot be a structure or array", GetStorageQualifierString(qualifier.storage), ""); + error(loc, "cannot be a structure", GetStorageQualifierString(qualifier.storage), ""); return; } if (publicType.arraySizes) { From 9c7fd1a33e5cecbe465e1cd70170167d5e40d398 Mon Sep 17 00:00:00 2001 From: Brad Smith Date: Tue, 18 Apr 2023 22:34:23 -0400 Subject: [PATCH 180/594] Fix building on OpenBSD when building shared libs OpenBSD does not link shared libs against libc so it is expected that the use of --no-undefined when linking will fail. Also garbage collect CMAKE_VERSION check while here, as requested, since the minimum version is already 3.14. --- CMakeLists.txt | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5b3c9e8c2a..82407a467d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -161,10 +161,8 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Werror=deprecated-copy) endif() - if(NOT CMAKE_VERSION VERSION_LESS "3.13" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") + if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") # Error if there's symbols that are not found at link time. - # add_link_options() was added in CMake 3.13 - if using an earlier - # version don't set this - it should be caught by presubmits anyway. add_link_options("-Wl,--no-undefined") endif() elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) @@ -178,10 +176,8 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-fno-exceptions) endif() - if(NOT CMAKE_VERSION VERSION_LESS "3.13") + if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") # Error if there's symbols that are not found at link time. - # add_link_options() was added in CMake 3.13 - if using an earlier - # version don't set this - it should be caught by presubmits anyway. if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") add_link_options("-Wl,-undefined,error") else() From dfc97740ff91008cf038f13fc1ae9eb2aaa007fb Mon Sep 17 00:00:00 2001 From: Chuang Zhu Date: Sat, 19 Nov 2022 12:03:20 +0800 Subject: [PATCH 181/594] Use CMAKE_INSTALL_FULL_LIBDIR in compat cmake files According to https://cmake.org/cmake/help/v3.25/module/GNUInstallDirs.html, CMAKE_INSTALL_LIBDIR can be an absolute path. For instance, Nixpkgs [defined it to an absolute path in /nix/store](https://github.com/NixOS/nixpkgs/blob/3d17b4c305cefef284109fa9d426b00f3e5072c6/pkgs/development/tools/build-managers/cmake/setup-hook.sh#L101). The output in this case is: # result-glslang/lib/cmake/glslangTargets.cmake:5 include("${CMAKE_CURRENT_LIST_DIR}/../..//nix/store/3mif2zibig0cilk5dbz334278n0vlq9s-glslang-1.3.231.0/lib/glslang/glslang-targets.cmake") Signed-off-by: Chuang Zhu --- OGLCompilersDLL/CMakeLists.txt | 2 +- SPIRV/CMakeLists.txt | 4 ++-- StandAlone/CMakeLists.txt | 4 ++-- glslang/CMakeLists.txt | 4 ++-- glslang/OSDependent/Unix/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 2 +- gtests/CMakeLists.txt | 2 +- hlsl/CMakeLists.txt | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt index 33f16b0d5a..71a5675d15 100644 --- a/OGLCompilersDLL/CMakeLists.txt +++ b/OGLCompilersDLL/CMakeLists.txt @@ -49,7 +49,7 @@ if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OGLCompiler) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OGLCompiler ALIAS glslang::OGLCompiler) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 35b7462118..b31bdd6320 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -125,7 +125,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::SPVRemapper) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(SPVRemapper ALIAS glslang::SPVRemapper) @@ -137,7 +137,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::SPIRV) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(SPIRV ALIAS glslang::SPIRV) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index b1ba18f6b9..8ddef104e6 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -101,7 +101,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslangValidator) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslangValidator ALIAS glslang::glslangValidator) @@ -116,7 +116,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::spirv-remap) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(spirv-remap ALIAS glslang::spirv-remap) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 7d8790c49d..89f8f99ef2 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -234,7 +234,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslang) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() if(${BUILD_SHARED_LIBS}) @@ -267,7 +267,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslang-default-resource-limits) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"\${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 6eb8867685..f6b1c6afb7 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -48,7 +48,7 @@ if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OSDependent) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OSDependent ALIAS glslang::OSDependent) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 67976da835..882133ab30 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -55,7 +55,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::OSDependent) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(OSDependent ALIAS glslang::OSDependent) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 203812d8fb..408a92db53 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -76,7 +76,7 @@ if(BUILD_TESTING) message(WARNING \"Using `glslangtestsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::glslangtests) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(glslangtests ALIAS glslang::glslangtests) diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 4d5f15fde8..16c82a67a8 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -53,7 +53,7 @@ if(ENABLE_GLSLANG_INSTALL) message(WARNING \"Using `HLSLTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") if (NOT TARGET glslang::HLSL) - include(\"\${CMAKE_CURRENT_LIST_DIR}/../../${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") + include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() add_library(HLSL ALIAS glslang::HLSL) From bc6b2bc17adef055e540ac607aa2ce10916449d1 Mon Sep 17 00:00:00 2001 From: Sruthik P Date: Wed, 3 May 2023 15:54:06 +0530 Subject: [PATCH 182/594] glslang: Do not link with pthread on QNX On QNX, pthread APIs are provided as part of libc and a separate pthread library does not exist. This change updates the makefile of glslang to not link with pthread on QNX, thereby enabling glslang to be built for QNX platforms. --- StandAlone/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 8ddef104e6..ad831f7bb9 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 The Khronos Group Inc. +# Copyright (C) 2020-2023 The Khronos Group Inc. # # All rights reserved. # @@ -65,7 +65,7 @@ endif() if(WIN32) set(LIBRARIES ${LIBRARIES} psapi) elseif(UNIX) - if(NOT ANDROID) + if(NOT ANDROID AND NOT QNX) set(LIBRARIES ${LIBRARIES} pthread) endif() endif() From 955f21aad2c59335192acad3a11380a92a3ef214 Mon Sep 17 00:00:00 2001 From: juan-lunarg Date: Thu, 4 May 2023 15:47:04 -0600 Subject: [PATCH 183/594] cmake: Remove explicitly setting CMAKE_EXPORT_COMPILE_COMMANDS Modern IDEs / C++ environments will just set this for you. EX: vscode will set this for you. --- CMakeLists.txt | 3 --- 1 file changed, 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 82407a467d..d96122573f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,9 +35,6 @@ project(glslang) set_property(GLOBAL PROPERTY USE_FOLDERS ON) -# Enable compile commands database -set(CMAKE_EXPORT_COMPILE_COMMANDS ON) - # Adhere to GNU filesystem layout conventions include(GNUInstallDirs) include(CMakePackageConfigHelpers) From d6e9d3bb4e4a6f8e24ac60b98a6a98c8206de783 Mon Sep 17 00:00:00 2001 From: juan-lunarg Date: Thu, 4 May 2023 15:48:43 -0600 Subject: [PATCH 184/594] cmake: Remove USE_CCACHE This is no longer needed with modern CMake. I've already removed this from several Khronos repos. See this stackoverflow for modern approaches to setting ccache via cmake: https://stackoverflow.com/a/74120112/19739129 --- CMakeLists.txt | 8 -------- 1 file changed, 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d96122573f..e38b5e3a9b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -108,14 +108,6 @@ if(ENABLE_GLSLANG_INSTALL AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WI set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE) endif() -option(USE_CCACHE "Use ccache" OFF) -if(USE_CCACHE) - find_program(CCACHE_FOUND ccache) - if(CCACHE_FOUND) - set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache) - endif() -endif() - if(ENABLE_CTEST) include(CTest) endif() From 9d8c7b75c97ea686140f2b4b54187f49a9f103cb Mon Sep 17 00:00:00 2001 From: Eric Werness Date: Wed, 8 Jun 2022 17:29:38 -0700 Subject: [PATCH 185/594] GL_EXT_ray_tracing_position_fetch --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 48 +++- SPIRV/doc.cpp | 8 + SPIRV/spirv.hpp | 164 ++++++++++- Test/baseResults/rayQuery-allOps.comp.out | 256 ++++++++++-------- .../spv.ext.AnyHitShader.rahit.out | 77 +++--- .../spv.ext.ClosestHitShader.rchit.out | 66 +++-- Test/rayQuery-allOps.comp | 9 + Test/spv.ext.AnyHitShader.rahit | 2 + Test/spv.ext.ClosestHitShader.rchit | 2 + glslang/Include/BaseTypes.h | 2 + glslang/Include/intermediate.h | 3 + glslang/MachineIndependent/Initialize.cpp | 8 +- glslang/MachineIndependent/ParseHelper.cpp | 1 + glslang/MachineIndependent/Versions.cpp | 2 + glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/intermOut.cpp | 1 + known_good.json | 4 +- 18 files changed, 461 insertions(+), 194 deletions(-) mode change 100644 => 100755 SPIRV/GlslangToSpv.cpp mode change 100644 => 100755 SPIRV/doc.cpp mode change 100644 => 100755 Test/spv.ext.AnyHitShader.rahit mode change 100644 => 100755 Test/spv.ext.ClosestHitShader.rchit mode change 100644 => 100755 glslang/Include/BaseTypes.h mode change 100644 => 100755 glslang/MachineIndependent/Initialize.cpp mode change 100644 => 100755 glslang/MachineIndependent/Versions.h diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index d5c670f0e1..45549c1434 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -54,5 +54,6 @@ static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_w static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow"; static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric"; static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests"; +static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp old mode 100644 new mode 100755 index 47c0a38b90..259f730c7a --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1010,6 +1010,8 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInRayTmaxKHR; case glslang::EbvCullMask: return spv::BuiltInCullMaskKHR; + case glslang::EbvPositionFetch: + return spv::BuiltInHitTriangleVertexPositionsKHR; case glslang::EbvInstanceCustomIndex: return spv::BuiltInInstanceCustomIndexKHR; case glslang::EbvHitT: @@ -1857,13 +1859,16 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addCapability(spv::CapabilityRayTracingNV); builder.addExtension("SPV_NV_ray_tracing"); } - if (glslangIntermediate->getStage() != EShLangRayGen && glslangIntermediate->getStage() != EShLangCallable) - { - if (extensions.find("GL_EXT_ray_cull_mask") != extensions.end()) { - builder.addCapability(spv::CapabilityRayCullMaskKHR); - builder.addExtension("SPV_KHR_ray_cull_mask"); - } - } + if (glslangIntermediate->getStage() != EShLangRayGen && glslangIntermediate->getStage() != EShLangCallable) { + if (extensions.find("GL_EXT_ray_cull_mask") != extensions.end()) { + builder.addCapability(spv::CapabilityRayCullMaskKHR); + builder.addExtension("SPV_KHR_ray_cull_mask"); + } + if (extensions.find("GL_EXT_ray_tracing_position_fetch") != extensions.end()) { + builder.addCapability(spv::CapabilityRayTracingPositionFetchKHR); + builder.addExtension("SPV_KHR_ray_tracing_position_fetch"); + } + } break; } case EShLangTask: @@ -3301,6 +3306,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.addExtension(spv::E_SPV_NV_shader_invocation_reorder); builder.addCapability(spv::CapabilityShaderInvocationReorderNV); break; + case glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: + builder.addExtension(spv::E_SPV_KHR_ray_tracing_position_fetch); + builder.addCapability(spv::CapabilityRayQueryPositionFetchKHR); + noReturnValue = true; + break; #endif case glslang::EOpDebugPrintf: @@ -3479,6 +3489,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (arg == 0 && glslangOperands.size() != 2) lvalue = true; break; + case glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: + if (arg == 0 || arg == 2) + lvalue = true; + break; #endif default: break; @@ -3571,7 +3585,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayDirection || glslangOp == glslang::EOpRayQueryGetIntersectionObjectRayOrigin || glslangOp == glslang::EOpRayQueryGetIntersectionObjectToWorld || - glslangOp == glslang::EOpRayQueryGetIntersectionWorldToObject + glslangOp == glslang::EOpRayQueryGetIntersectionWorldToObject || + glslangOp == glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT )) { bool cond = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getBConst(); operands.push_back(builder.makeIntConstant(cond ? 1 : 0)); @@ -3637,6 +3652,19 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps); result = 0; + } else if (node->getOp() == glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT) { + std::vector idImmOps; + + idImmOps.push_back(spv::IdImmediate(true, operands[0])); // q + idImmOps.push_back(spv::IdImmediate(true, operands[1])); // committed + + spv::Id typeId = builder.makeArrayType(builder.makeVectorType(builder.makeFloatType(32), 3), + builder.makeUintConstant(3), 0); + // do the op + spv::Id result = builder.createOp(spv::OpRayQueryGetIntersectionTriangleVertexPositionsKHR, typeId, idImmOps); + // store the result to the pointer (out param 'm') + builder.createStore(result, operands[2]); + result = 0; } else #endif if (atomic) { @@ -5561,6 +5589,10 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& if (i == 7) lvalue = true; break; + case glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: + if (i == 2) + lvalue = true; + break; default: break; } diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp old mode 100644 new mode 100755 index 87ab120321..9ee474d59b --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -404,6 +404,7 @@ const char* BuiltInString(int builtIn) case BuiltInRayTminKHR: return "RayTminKHR"; case BuiltInRayTmaxKHR: return "RayTmaxKHR"; case BuiltInCullMaskKHR: return "CullMaskKHR"; + case BuiltInHitTriangleVertexPositionsKHR: return "HitTriangleVertexPositionsKHR"; case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; @@ -950,6 +951,8 @@ const char* CapabilityString(int info) case CapabilityRayQueryKHR: return "RayQueryKHR"; case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; + case CapabilityRayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR"; + case CapabilityRayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR"; case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; case CapabilityFragmentBarycentricKHR: return "FragmentBarycentricKHR"; @@ -1452,6 +1455,7 @@ const char* OpcodeString(int op) case OpRayQueryGetWorldRayOriginKHR: return "OpRayQueryGetWorldRayOriginKHR"; case OpRayQueryGetIntersectionObjectToWorldKHR: return "OpRayQueryGetIntersectionObjectToWorldKHR"; case OpRayQueryGetIntersectionWorldToObjectKHR: return "OpRayQueryGetIntersectionWorldToObjectKHR"; + case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: return "OpRayQueryGetIntersectionTriangleVertexPositionsKHR"; case OpTypeCooperativeMatrixNV: return "OpTypeCooperativeMatrixNV"; case OpCooperativeMatrixLoadNV: return "OpCooperativeMatrixLoadNV"; @@ -3025,6 +3029,10 @@ void Parameterize() InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'"); InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'"); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'"); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 768a6f564c..850081b7c0 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,19 +1,19 @@ // Copyright (c) 2014-2020 The Khronos Group Inc. -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and/or associated documentation files (the "Materials"), // to deal in the Materials without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Materials, and to permit persons to whom the // Materials are furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Materials. -// +// // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL @@ -26,8 +26,8 @@ // the Binary Section of the SPIR-V specification. // Enumeration tokens for SPIR-V, in various styles: -// C, C++, C++11, JSON, Lua, Python, C#, D -// +// C, C++, C++11, JSON, Lua, Python, C#, D, Beef +// // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL @@ -36,7 +36,9 @@ // - C# will use enum classes in the Specification class located in the "Spv" namespace, // e.g.: Spv.Specification.SourceLanguage.GLSL // - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL -// +// - Beef will use enum classes in the Specification class located in the "Spv" namespace, +// e.g.: Spv.Specification.SourceLanguage.GLSL +// // Some tokens act like mask values, which can be OR'd together, // while others are mutually exclusive. The mask-like ones have // "Mask" in their name, and a parallel enum that has the shift @@ -66,6 +68,7 @@ enum SourceLanguage { SourceLanguageOpenCL_CPP = 4, SourceLanguageHLSL = 5, SourceLanguageCPP_for_OpenCL = 6, + SourceLanguageSYCL = 7, SourceLanguageMax = 0x7fffffff, }; @@ -192,6 +195,8 @@ enum ExecutionMode { ExecutionModeNoGlobalOffsetINTEL = 5895, ExecutionModeNumSIMDWorkitemsINTEL = 5896, ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, + ExecutionModeStreamingInterfaceINTEL = 6154, + ExecutionModeNamedBarrierCountINTEL = 6417, ExecutionModeMax = 0x7fffffff, }; @@ -449,6 +454,7 @@ enum FunctionParameterAttribute { FunctionParameterAttributeNoCapture = 5, FunctionParameterAttributeNoWrite = 6, FunctionParameterAttributeNoReadWrite = 7, + FunctionParameterAttributeRuntimeAlignedINTEL = 5940, FunctionParameterAttributeMax = 0x7fffffff, }; @@ -558,12 +564,27 @@ enum Decoration { DecorationPrefetchINTEL = 5902, DecorationStallEnableINTEL = 5905, DecorationFuseLoopsInFunctionINTEL = 5907, + DecorationMathOpDSPModeINTEL = 5909, + DecorationAliasScopeINTEL = 5914, + DecorationNoAliasINTEL = 5915, + DecorationInitiationIntervalINTEL = 5917, + DecorationMaxConcurrencyINTEL = 5918, + DecorationPipelineEnableINTEL = 5919, DecorationBufferLocationINTEL = 5921, DecorationIOPipeStorageINTEL = 5944, DecorationFunctionFloatingPointModeINTEL = 6080, DecorationSingleElementVectorINTEL = 6085, DecorationVectorComputeCallableFunctionINTEL = 6087, DecorationMediaBlockIOINTEL = 6140, + DecorationConduitKernelArgumentINTEL = 6175, + DecorationRegisterMapKernelArgumentINTEL = 6176, + DecorationMMHostInterfaceAddressWidthINTEL = 6177, + DecorationMMHostInterfaceDataWidthINTEL = 6178, + DecorationMMHostInterfaceLatencyINTEL = 6179, + DecorationMMHostInterfaceReadWriteModeINTEL = 6180, + DecorationMMHostInterfaceMaxBurstINTEL = 6181, + DecorationMMHostInterfaceWaitRequestINTEL = 6182, + DecorationStableKernelArgumentINTEL = 6183, DecorationMax = 0x7fffffff, }; @@ -609,8 +630,8 @@ enum BuiltIn { BuiltInSubgroupLocalInvocationId = 41, BuiltInVertexIndex = 42, BuiltInInstanceIndex = 43, - BuiltInCoreCountARM = 4161, BuiltInCoreIDARM = 4160, + BuiltInCoreCountARM = 4161, BuiltInCoreMaxIDARM = 4162, BuiltInWarpIDARM = 4163, BuiltInWarpMaxIDARM = 4164, @@ -691,6 +712,7 @@ enum BuiltIn { BuiltInHitKindKHR = 5333, BuiltInHitKindNV = 5333, BuiltInCurrentRayTimeNV = 5334, + BuiltInHitTriangleVertexPositionsKHR = 5335, BuiltInIncomingRayFlagsKHR = 5351, BuiltInIncomingRayFlagsNV = 5351, BuiltInRayGeometryIndexKHR = 5352, @@ -732,6 +754,8 @@ enum LoopControlShift { LoopControlMaxInterleavingINTELShift = 21, LoopControlSpeculatedIterationsINTELShift = 22, LoopControlNoFusionINTELShift = 23, + LoopControlLoopCountINTELShift = 24, + LoopControlMaxReinvocationDelayINTELShift = 25, LoopControlMax = 0x7fffffff, }; @@ -754,6 +778,8 @@ enum LoopControlMask { LoopControlMaxInterleavingINTELMask = 0x00200000, LoopControlSpeculatedIterationsINTELMask = 0x00400000, LoopControlNoFusionINTELMask = 0x00800000, + LoopControlLoopCountINTELMask = 0x01000000, + LoopControlMaxReinvocationDelayINTELMask = 0x02000000, }; enum FunctionControlShift { @@ -826,6 +852,8 @@ enum MemoryAccessShift { MemoryAccessMakePointerVisibleKHRShift = 4, MemoryAccessNonPrivatePointerShift = 5, MemoryAccessNonPrivatePointerKHRShift = 5, + MemoryAccessAliasScopeINTELMaskShift = 16, + MemoryAccessNoAliasINTELMaskShift = 17, MemoryAccessMax = 0x7fffffff, }; @@ -840,6 +868,8 @@ enum MemoryAccessMask { MemoryAccessMakePointerVisibleKHRMask = 0x00000010, MemoryAccessNonPrivatePointerMask = 0x00000020, MemoryAccessNonPrivatePointerKHRMask = 0x00000020, + MemoryAccessAliasScopeINTELMaskMask = 0x00010000, + MemoryAccessNoAliasINTELMaskMask = 0x00020000, }; enum Scope { @@ -1003,7 +1033,7 @@ enum Capability { CapabilityMeshShadingNV = 5266, CapabilityImageFootprintNV = 5282, CapabilityMeshShadingEXT = 5283, - CapabilityFragmentBarycentricKHR = 5284, + CapabilityFragmentBarycentricKHR = 5284, CapabilityFragmentBarycentricNV = 5284, CapabilityComputeDerivativeGroupQuadsNV = 5288, CapabilityFragmentDensityEXT = 5291, @@ -1033,6 +1063,7 @@ enum Capability { CapabilityUniformTexelBufferArrayNonUniformIndexingEXT = 5311, CapabilityStorageTexelBufferArrayNonUniformIndexing = 5312, CapabilityStorageTexelBufferArrayNonUniformIndexingEXT = 5312, + CapabilityRayTracingPositionFetchKHR = 5336, CapabilityRayTracingNV = 5340, CapabilityRayTracingMotionBlurNV = 5341, CapabilityVulkanMemoryModel = 5345, @@ -1050,8 +1081,10 @@ enum Capability { CapabilityFragmentShaderPixelInterlockEXT = 5378, CapabilityDemoteToHelperInvocation = 5379, CapabilityDemoteToHelperInvocationEXT = 5379, + CapabilityRayTracingOpacityMicromapEXT = 5381, CapabilityShaderInvocationReorderNV = 5383, CapabilityBindlessTextureNV = 5390, + CapabilityRayQueryPositionFetchKHR = 5391, CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupImageBlockIOINTEL = 5570, @@ -1084,9 +1117,13 @@ enum Capability { CapabilityFPGAMemoryAccessesINTEL = 5898, CapabilityFPGAClusterAttributesINTEL = 5904, CapabilityLoopFuseINTEL = 5906, + CapabilityFPGADSPControlINTEL = 5908, + CapabilityMemoryAccessAliasingINTEL = 5910, + CapabilityFPGAInvocationPipeliningAttributesINTEL = 5916, CapabilityFPGABufferLocationINTEL = 5920, CapabilityArbitraryPrecisionFixedPointINTEL = 5922, CapabilityUSMStorageClassesINTEL = 5935, + CapabilityRuntimeAlignedAttributeINTEL = 5939, CapabilityIOPipesINTEL = 5943, CapabilityBlockingPipesINTEL = 5945, CapabilityFPGARegINTEL = 5948, @@ -1100,12 +1137,16 @@ enum Capability { CapabilityDotProductKHR = 6019, CapabilityRayCullMaskKHR = 6020, CapabilityBitInstructions = 6025, + CapabilityGroupNonUniformRotateKHR = 6026, CapabilityAtomicFloat32AddEXT = 6033, CapabilityAtomicFloat64AddEXT = 6034, CapabilityLongConstantCompositeINTEL = 6089, CapabilityOptNoneINTEL = 6094, CapabilityAtomicFloat16AddEXT = 6095, CapabilityDebugInfoModuleINTEL = 6114, + CapabilitySplitBarrierINTEL = 6141, + CapabilityFPGAArgumentInterfacesINTEL = 6174, + CapabilityGroupUniformArithmeticKHR = 6400, CapabilityMax = 0x7fffffff, }; @@ -1120,6 +1161,7 @@ enum RayFlagsShift { RayFlagsCullNoOpaqueKHRShift = 7, RayFlagsSkipTrianglesKHRShift = 8, RayFlagsSkipAABBsKHRShift = 9, + RayFlagsForceOpacityMicromap2StateEXTShift = 10, RayFlagsMax = 0x7fffffff, }; @@ -1135,6 +1177,7 @@ enum RayFlagsMask { RayFlagsCullNoOpaqueKHRMask = 0x00000080, RayFlagsSkipTrianglesKHRMask = 0x00000100, RayFlagsSkipAABBsKHRMask = 0x00000200, + RayFlagsForceOpacityMicromap2StateEXTMask = 0x00000400, }; enum RayQueryIntersection { @@ -1561,6 +1604,7 @@ enum Op { OpSubgroupAllKHR = 4428, OpSubgroupAnyKHR = 4429, OpSubgroupAllEqualKHR = 4430, + OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, @@ -1642,6 +1686,7 @@ enum Op { OpTraceNV = 5337, OpTraceMotionNV = 5338, OpTraceRayMotionNV = 5339, + OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340, OpTypeAccelerationStructureKHR = 5341, OpTypeAccelerationStructureNV = 5341, OpExecuteCallableNV = 5344, @@ -1862,6 +1907,9 @@ enum Op { OpArbitraryFloatPowRINTEL = 5881, OpArbitraryFloatPowNINTEL = 5882, OpLoopControlINTEL = 5887, + OpAliasDomainDeclINTEL = 5911, + OpAliasScopeDeclINTEL = 5912, + OpAliasScopeListDeclINTEL = 5913, OpFixedSqrtINTEL = 5923, OpFixedRecipINTEL = 5924, OpFixedRsqrtINTEL = 5925, @@ -1900,10 +1948,23 @@ enum Op { OpTypeStructContinuedINTEL = 6090, OpConstantCompositeContinuedINTEL = 6091, OpSpecConstantCompositeContinuedINTEL = 6092, + OpControlBarrierArriveINTEL = 6142, + OpControlBarrierWaitINTEL = 6143, + OpGroupIMulKHR = 6401, + OpGroupFMulKHR = 6402, + OpGroupBitwiseAndKHR = 6403, + OpGroupBitwiseOrKHR = 6404, + OpGroupBitwiseXorKHR = 6405, + OpGroupLogicalAndKHR = 6406, + OpGroupLogicalOrKHR = 6407, + OpGroupLogicalXorKHR = 6408, OpMax = 0x7fffffff, }; #ifdef SPV_ENABLE_UTILITY_CODE +#ifndef __cplusplus +#include +#endif inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { *hasResult = *hasResultType = false; switch (opcode) { @@ -2258,6 +2319,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformRotateKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break; case OpTraceRayKHR: *hasResult = false; *hasResultType = false; break; case OpExecuteCallableKHR: *hasResult = false; *hasResultType = false; break; @@ -2288,10 +2350,43 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; + case OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectGetWorldToObjectNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetObjectToWorldNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetObjectRayDirectionNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetObjectRayOriginNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectGetShaderRecordBufferHandleNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetShaderBindingTableRecordIndexNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectRecordEmptyNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectTraceRayNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectRecordHitNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectRecordHitWithIndexNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectRecordMissNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectExecuteShaderNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectGetCurrentTimeNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetAttributesNV: *hasResult = false; *hasResultType = false; break; + case OpHitObjectGetHitKindNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetPrimitiveIndexNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetGeometryIndexNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetInstanceIdNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetInstanceCustomIndexNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetWorldRayDirectionNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetWorldRayOriginNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetRayTMaxNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectGetRayTMinNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectIsEmptyNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectIsHitNV: *hasResult = true; *hasResultType = true; break; + case OpHitObjectIsMissNV: *hasResult = true; *hasResultType = true; break; + case OpReorderThreadWithHitObjectNV: *hasResult = false; *hasResultType = false; break; + case OpReorderThreadWithHintNV: *hasResult = false; *hasResultType = false; break; + case OpTypeHitObjectNV: *hasResult = true; *hasResultType = false; break; case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; case OpEmitMeshTasksEXT: *hasResult = false; *hasResultType = false; break; case OpSetMeshOutputsEXT: *hasResult = false; *hasResultType = false; break; + case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break; case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break; case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break; case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break; @@ -2299,6 +2394,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpTraceNV: *hasResult = false; *hasResultType = false; break; case OpTraceMotionNV: *hasResult = false; *hasResultType = false; break; case OpTraceRayMotionNV: *hasResult = false; *hasResultType = false; break; + case OpRayQueryGetIntersectionTriangleVertexPositionsKHR: *hasResult = true; *hasResultType = true; break; case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break; case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break; case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break; @@ -2515,6 +2611,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpArbitraryFloatPowRINTEL: *hasResult = true; *hasResultType = true; break; case OpArbitraryFloatPowNINTEL: *hasResult = true; *hasResultType = true; break; case OpLoopControlINTEL: *hasResult = false; *hasResultType = false; break; + case OpAliasDomainDeclINTEL: *hasResult = true; *hasResultType = false; break; + case OpAliasScopeDeclINTEL: *hasResult = true; *hasResultType = false; break; + case OpAliasScopeListDeclINTEL: *hasResult = true; *hasResultType = false; break; case OpFixedSqrtINTEL: *hasResult = true; *hasResultType = true; break; case OpFixedRecipINTEL: *hasResult = true; *hasResultType = true; break; case OpFixedRsqrtINTEL: *hasResult = true; *hasResultType = true; break; @@ -2553,23 +2652,64 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpTypeStructContinuedINTEL: *hasResult = false; *hasResultType = false; break; case OpConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; case OpSpecConstantCompositeContinuedINTEL: *hasResult = false; *hasResultType = false; break; + case OpControlBarrierArriveINTEL: *hasResult = false; *hasResultType = false; break; + case OpControlBarrierWaitINTEL: *hasResult = false; *hasResultType = false; break; + case OpGroupIMulKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupFMulKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupBitwiseAndKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupBitwiseOrKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupBitwiseXorKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupLogicalAndKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupLogicalOrKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupLogicalXorKHR: *hasResult = true; *hasResultType = true; break; } } #endif /* SPV_ENABLE_UTILITY_CODE */ -// Overload operator| for mask bit combining +// Overload bitwise operators for mask bit combining inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); } +inline ImageOperandsMask operator&(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) & unsigned(b)); } +inline ImageOperandsMask operator^(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) ^ unsigned(b)); } +inline ImageOperandsMask operator~(ImageOperandsMask a) { return ImageOperandsMask(~unsigned(a)); } inline FPFastMathModeMask operator|(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) | unsigned(b)); } +inline FPFastMathModeMask operator&(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) & unsigned(b)); } +inline FPFastMathModeMask operator^(FPFastMathModeMask a, FPFastMathModeMask b) { return FPFastMathModeMask(unsigned(a) ^ unsigned(b)); } +inline FPFastMathModeMask operator~(FPFastMathModeMask a) { return FPFastMathModeMask(~unsigned(a)); } inline SelectionControlMask operator|(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) | unsigned(b)); } +inline SelectionControlMask operator&(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) & unsigned(b)); } +inline SelectionControlMask operator^(SelectionControlMask a, SelectionControlMask b) { return SelectionControlMask(unsigned(a) ^ unsigned(b)); } +inline SelectionControlMask operator~(SelectionControlMask a) { return SelectionControlMask(~unsigned(a)); } inline LoopControlMask operator|(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) | unsigned(b)); } +inline LoopControlMask operator&(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) & unsigned(b)); } +inline LoopControlMask operator^(LoopControlMask a, LoopControlMask b) { return LoopControlMask(unsigned(a) ^ unsigned(b)); } +inline LoopControlMask operator~(LoopControlMask a) { return LoopControlMask(~unsigned(a)); } inline FunctionControlMask operator|(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) | unsigned(b)); } +inline FunctionControlMask operator&(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) & unsigned(b)); } +inline FunctionControlMask operator^(FunctionControlMask a, FunctionControlMask b) { return FunctionControlMask(unsigned(a) ^ unsigned(b)); } +inline FunctionControlMask operator~(FunctionControlMask a) { return FunctionControlMask(~unsigned(a)); } inline MemorySemanticsMask operator|(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) | unsigned(b)); } +inline MemorySemanticsMask operator&(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) & unsigned(b)); } +inline MemorySemanticsMask operator^(MemorySemanticsMask a, MemorySemanticsMask b) { return MemorySemanticsMask(unsigned(a) ^ unsigned(b)); } +inline MemorySemanticsMask operator~(MemorySemanticsMask a) { return MemorySemanticsMask(~unsigned(a)); } inline MemoryAccessMask operator|(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) | unsigned(b)); } +inline MemoryAccessMask operator&(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) & unsigned(b)); } +inline MemoryAccessMask operator^(MemoryAccessMask a, MemoryAccessMask b) { return MemoryAccessMask(unsigned(a) ^ unsigned(b)); } +inline MemoryAccessMask operator~(MemoryAccessMask a) { return MemoryAccessMask(~unsigned(a)); } inline KernelProfilingInfoMask operator|(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) | unsigned(b)); } +inline KernelProfilingInfoMask operator&(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) & unsigned(b)); } +inline KernelProfilingInfoMask operator^(KernelProfilingInfoMask a, KernelProfilingInfoMask b) { return KernelProfilingInfoMask(unsigned(a) ^ unsigned(b)); } +inline KernelProfilingInfoMask operator~(KernelProfilingInfoMask a) { return KernelProfilingInfoMask(~unsigned(a)); } inline RayFlagsMask operator|(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) | unsigned(b)); } +inline RayFlagsMask operator&(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) & unsigned(b)); } +inline RayFlagsMask operator^(RayFlagsMask a, RayFlagsMask b) { return RayFlagsMask(unsigned(a) ^ unsigned(b)); } +inline RayFlagsMask operator~(RayFlagsMask a) { return RayFlagsMask(~unsigned(a)); } inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) | unsigned(b)); } +inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); } +inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); } +inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); } } // end namespace spv #endif // #ifndef spirv_HPP + diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out index 05936bb238..a84d91962f 100644 --- a/Test/baseResults/rayQuery-allOps.comp.out +++ b/Test/baseResults/rayQuery-allOps.comp.out @@ -1,12 +1,14 @@ rayQuery-allOps.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 258 +// Id's are bound by 275 Capability Shader Capability RayQueryKHR Capability RayTraversalPrimitiveCullingKHR + Capability RayQueryPositionFetchKHR Extension "SPV_KHR_ray_query" + Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 4 "main" @@ -14,6 +16,7 @@ rayQuery-allOps.comp Source GLSL 460 SourceExtension "GL_EXT_ray_flags_primitive_culling" SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_EXT_ray_tracing_position_fetch" Name 4 "main" Name 6 "doSomething(" Name 10 "Ray" @@ -35,16 +38,17 @@ rayQuery-allOps.comp Name 83 "_mat3x4" Name 143 "t" Name 156 "committedStatus" - Name 241 "o" - Name 243 "d" - Name 253 "Ray" - MemberName 253(Ray) 0 "pos" - MemberName 253(Ray) 1 "tmin" - MemberName 253(Ray) 2 "dir" - MemberName 253(Ray) 3 "tmax" - Name 255 "Rays" - MemberName 255(Rays) 0 "rays" - Name 257 "" + Name 184 "positions" + Name 258 "o" + Name 260 "d" + Name 270 "Ray" + MemberName 270(Ray) 0 "pos" + MemberName 270(Ray) 1 "tmin" + MemberName 270(Ray) 2 "dir" + MemberName 270(Ray) 3 "tmax" + Name 272 "Rays" + MemberName 272(Rays) 0 "rays" + Name 274 "" MemberDecorate 15(Log) 0 Offset 0 MemberDecorate 15(Log) 1 Offset 4 Decorate 15(Log) BufferBlock @@ -52,15 +56,15 @@ rayQuery-allOps.comp Decorate 17 Binding 0 Decorate 50(rtas) DescriptorSet 0 Decorate 50(rtas) Binding 1 - MemberDecorate 253(Ray) 0 Offset 0 - MemberDecorate 253(Ray) 1 Offset 12 - MemberDecorate 253(Ray) 2 Offset 16 - MemberDecorate 253(Ray) 3 Offset 28 - Decorate 254 ArrayStride 32 - MemberDecorate 255(Rays) 0 Offset 0 - Decorate 255(Rays) BufferBlock - Decorate 257 DescriptorSet 0 - Decorate 257 Binding 2 + MemberDecorate 270(Ray) 0 Offset 0 + MemberDecorate 270(Ray) 1 Offset 12 + MemberDecorate 270(Ray) 2 Offset 16 + MemberDecorate 270(Ray) 3 Offset 28 + Decorate 271 ArrayStride 32 + MemberDecorate 272(Rays) 0 Offset 0 + Decorate 272(Rays) BufferBlock + Decorate 274 DescriptorSet 0 + Decorate 274 Binding 2 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 @@ -105,13 +109,16 @@ rayQuery-allOps.comp 91: TypeVector 8(float) 2 144: 8(float) Constant 1056964608 175: 14(int) Constant 1 - 198: 14(int) Constant 2 - 231: 14(int) Constant 256 - 253(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) - 254: TypeRuntimeArray 253(Ray) - 255(Rays): TypeStruct 254 - 256: TypePointer Uniform 255(Rays) - 257: 256(ptr) Variable Uniform + 181: 14(int) Constant 3 + 182: TypeArray 9(fvec3) 181 + 183: TypePointer Function 182 + 215: 14(int) Constant 2 + 248: 14(int) Constant 256 + 270(Ray): TypeStruct 9(fvec3) 8(float) 9(fvec3) 8(float) + 271: TypeRuntimeArray 270(Ray) + 272(Rays): TypeStruct 271 + 273: TypePointer Uniform 272(Rays) + 274: 273(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label 43(ray): 25(ptr) Variable Function @@ -120,8 +127,9 @@ rayQuery-allOps.comp 83(_mat3x4): 82(ptr) Variable Function 143(t): 35(ptr) Variable Function 156(committedStatus): 68(ptr) Variable Function - 241(o): 29(ptr) Variable Function - 243(d): 29(ptr) Variable Function + 184(positions): 183(ptr) Variable Function + 258(o): 29(ptr) Variable Function + 260(d): 29(ptr) Variable Function 44: 10(Ray) FunctionCall 12(makeRayDesc() Store 43(ray) 44 51: 48 Load 50(rtas) @@ -303,110 +311,130 @@ rayQuery-allOps.comp 180: 2 FunctionCall 6(doSomething() Branch 179 179: Label - Branch 162 - 161: Label - 182: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23 - 183: 66(bool) SGreaterThan 182 19 - SelectionMerge 185 None - BranchConditional 183 184 185 - 184: Label - 186: 2 FunctionCall 6(doSomething() - Branch 185 - 185: Label - 187: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 - 188: 66(bool) SGreaterThan 187 19 + 185: 182 RayQueryGetIntersectionTriangleVertexPositionsKHR 47(rayQuery) 23 + Store 184(positions) 185 + 186: 35(ptr) AccessChain 184(positions) 19 20 + 187: 8(float) Load 186 + 188: 66(bool) FOrdLessThan 187 27 SelectionMerge 190 None BranchConditional 188 189 190 189: Label - 191: 2 FunctionCall 6(doSomething() + 191: 35(ptr) AccessChain 184(positions) 31 175 + 192: 8(float) Load 191 + 193: 66(bool) FOrdGreaterThan 192 27 Branch 190 190: Label - 192: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 - 193: 66(bool) SGreaterThan 192 19 - SelectionMerge 195 None - BranchConditional 193 194 195 - 194: Label - 196: 2 FunctionCall 6(doSomething() - Branch 195 - 195: Label - 197: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 - 199: 8(float) CompositeExtract 197 2 - 200: 66(bool) FOrdGreaterThan 199 27 + 194: 66(bool) Phi 188 179 193 189 + SelectionMerge 196 None + BranchConditional 194 195 196 + 195: Label + 197: 2 FunctionCall 6(doSomething() + Branch 196 + 196: Label + Branch 162 + 161: Label + 199: 18(int) RayQueryGetIntersectionGeometryIndexKHR 47(rayQuery) 23 + 200: 66(bool) SGreaterThan 199 19 SelectionMerge 202 None BranchConditional 200 201 202 201: Label 203: 2 FunctionCall 6(doSomething() Branch 202 202: Label - 204: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 - 205: 8(float) CompositeExtract 204 0 - 206: 66(bool) FOrdGreaterThan 205 27 - SelectionMerge 208 None - BranchConditional 206 207 208 - 207: Label - 209: 2 FunctionCall 6(doSomething() - Branch 208 - 208: Label - 210: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 - 211: 66(bool) SGreaterThan 210 19 - SelectionMerge 213 None - BranchConditional 211 212 213 - 212: Label - 214: 2 FunctionCall 6(doSomething() - Branch 213 - 213: Label - 215: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 - 216: 66(bool) FOrdGreaterThan 215 27 - SelectionMerge 218 None - BranchConditional 216 217 218 - 217: Label - 219: 2 FunctionCall 6(doSomething() - Branch 218 - 218: Label + 204: 18(int) RayQueryGetIntersectionInstanceIdKHR 47(rayQuery) 23 + 205: 66(bool) SGreaterThan 204 19 + SelectionMerge 207 None + BranchConditional 205 206 207 + 206: Label + 208: 2 FunctionCall 6(doSomething() + Branch 207 + 207: Label + 209: 18(int) RayQueryGetIntersectionInstanceCustomIndexKHR 47(rayQuery) 23 + 210: 66(bool) SGreaterThan 209 19 + SelectionMerge 212 None + BranchConditional 210 211 212 + 211: Label + 213: 2 FunctionCall 6(doSomething() + Branch 212 + 212: Label + 214: 9(fvec3) RayQueryGetIntersectionObjectRayDirectionKHR 47(rayQuery) 23 + 216: 8(float) CompositeExtract 214 2 + 217: 66(bool) FOrdGreaterThan 216 27 + SelectionMerge 219 None + BranchConditional 217 218 219 + 218: Label + 220: 2 FunctionCall 6(doSomething() + Branch 219 + 219: Label + 221: 9(fvec3) RayQueryGetIntersectionObjectRayOriginKHR 47(rayQuery) 23 + 222: 8(float) CompositeExtract 221 0 + 223: 66(bool) FOrdGreaterThan 222 27 + SelectionMerge 225 None + BranchConditional 223 224 225 + 224: Label + 226: 2 FunctionCall 6(doSomething() + Branch 225 + 225: Label + 227: 18(int) RayQueryGetIntersectionPrimitiveIndexKHR 47(rayQuery) 23 + 228: 66(bool) SGreaterThan 227 19 + SelectionMerge 230 None + BranchConditional 228 229 230 + 229: Label + 231: 2 FunctionCall 6(doSomething() + Branch 230 + 230: Label + 232: 8(float) RayQueryGetIntersectionTKHR 47(rayQuery) 23 + 233: 66(bool) FOrdGreaterThan 232 27 + SelectionMerge 235 None + BranchConditional 233 234 235 + 234: Label + 236: 2 FunctionCall 6(doSomething() + Branch 235 + 235: Label Branch 162 162: Label - 222: 35(ptr) AccessChain 83(_mat3x4) 19 20 - 223: 8(float) Load 222 - 224: 35(ptr) AccessChain 78(_mat4x3) 19 20 - 225: 8(float) Load 224 - 226: 66(bool) FOrdEqual 223 225 - SelectionMerge 228 None - BranchConditional 226 227 228 - 227: Label - 229: 2 FunctionCall 6(doSomething() - Branch 228 - 228: Label - 230: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery) - 232: 66(bool) UGreaterThan 230 231 - SelectionMerge 234 None - BranchConditional 232 233 234 - 233: Label - 235: 2 FunctionCall 6(doSomething() - Branch 234 - 234: Label - 236: 8(float) RayQueryGetRayTMinKHR 47(rayQuery) - 237: 66(bool) FOrdGreaterThan 236 27 - SelectionMerge 239 None - BranchConditional 237 238 239 - 238: Label - 240: 2 FunctionCall 6(doSomething() - Branch 239 - 239: Label - 242: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery) - Store 241(o) 242 - 244: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery) - Store 243(d) 244 - 245: 35(ptr) AccessChain 241(o) 20 - 246: 8(float) Load 245 - 247: 35(ptr) AccessChain 243(d) 198 - 248: 8(float) Load 247 - 249: 66(bool) FOrdEqual 246 248 + 239: 35(ptr) AccessChain 83(_mat3x4) 19 20 + 240: 8(float) Load 239 + 241: 35(ptr) AccessChain 78(_mat4x3) 19 20 + 242: 8(float) Load 241 + 243: 66(bool) FOrdEqual 240 242 + SelectionMerge 245 None + BranchConditional 243 244 245 + 244: Label + 246: 2 FunctionCall 6(doSomething() + Branch 245 + 245: Label + 247: 14(int) RayQueryGetRayFlagsKHR 47(rayQuery) + 249: 66(bool) UGreaterThan 247 248 SelectionMerge 251 None BranchConditional 249 250 251 250: Label 252: 2 FunctionCall 6(doSomething() Branch 251 251: Label + 253: 8(float) RayQueryGetRayTMinKHR 47(rayQuery) + 254: 66(bool) FOrdGreaterThan 253 27 + SelectionMerge 256 None + BranchConditional 254 255 256 + 255: Label + 257: 2 FunctionCall 6(doSomething() + Branch 256 + 256: Label + 259: 9(fvec3) RayQueryGetWorldRayOriginKHR 47(rayQuery) + Store 258(o) 259 + 261: 9(fvec3) RayQueryGetWorldRayDirectionKHR 47(rayQuery) + Store 260(d) 261 + 262: 35(ptr) AccessChain 258(o) 20 + 263: 8(float) Load 262 + 264: 35(ptr) AccessChain 260(d) 215 + 265: 8(float) Load 264 + 266: 66(bool) FOrdEqual 263 265 + SelectionMerge 268 None + BranchConditional 266 267 268 + 267: Label + 269: 2 FunctionCall 6(doSomething() + Branch 268 + 268: Label Return FunctionEnd 6(doSomething(): 2 Function None 3 diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 1d1d14a730..02803ad6b1 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -1,19 +1,22 @@ spv.ext.AnyHitShader.rahit // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 108 +// Id's are bound by 116 Capability GroupNonUniform Capability RayTracingKHR + Capability RayTracingPositionFetchKHR Capability RayCullMaskKHR Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" + Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 85 99 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 88 93 107 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_EXT_ray_tracing_position_fetch" SourceExtension "GL_KHR_shader_subgroup_basic" Name 4 "main" Name 9 "v0" @@ -52,8 +55,10 @@ spv.ext.AnyHitShader.rahit Name 78 "v17" Name 81 "v18" Name 82 "gl_CullMaskEXT" - Name 85 "incomingPayload" - Name 99 "gl_SubgroupSize" + Name 84 "v19" + Name 88 "gl_HitTriangleVertexPositionsEXT" + Name 93 "incomingPayload" + Name 107 "gl_SubgroupSize" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -71,10 +76,11 @@ spv.ext.AnyHitShader.rahit Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 99(gl_SubgroupSize) RelaxedPrecision - Decorate 99(gl_SubgroupSize) BuiltIn SubgroupSize - Decorate 100 RelaxedPrecision - Decorate 101 RelaxedPrecision + Decorate 88(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR + Decorate 107(gl_SubgroupSize) RelaxedPrecision + Decorate 107(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 108 RelaxedPrecision + Decorate 109 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -115,15 +121,20 @@ spv.ext.AnyHitShader.rahit 73: TypeMatrix 72(fvec4) 3 74: TypePointer Function 73 82(gl_CullMaskEXT): 57(ptr) Variable Input - 84: TypePointer IncomingRayPayloadKHR 72(fvec4) -85(incomingPayload): 84(ptr) Variable IncomingRayPayloadKHR - 86: 28(float) Constant 1056964608 - 87: 72(fvec4) ConstantComposite 86 86 86 86 - 89: 16(int) Constant 1 - 90: TypeBool - 95: 6(int) Constant 0 -99(gl_SubgroupSize): 57(ptr) Variable Input - 102: TypePointer IncomingRayPayloadKHR 28(float) + 85: 6(int) Constant 3 + 86: TypeArray 29(fvec3) 85 + 87: TypePointer Input 86 +88(gl_HitTriangleVertexPositionsEXT): 87(ptr) Variable Input + 89: 16(int) Constant 0 + 92: TypePointer IncomingRayPayloadKHR 72(fvec4) +93(incomingPayload): 92(ptr) Variable IncomingRayPayloadKHR + 94: 28(float) Constant 1056964608 + 95: 72(fvec4) ConstantComposite 94 94 94 94 + 97: 16(int) Constant 1 + 98: TypeBool + 103: 6(int) Constant 0 +107(gl_SubgroupSize): 57(ptr) Variable Input + 110: TypePointer IncomingRayPayloadKHR 28(float) 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -145,6 +156,7 @@ spv.ext.AnyHitShader.rahit 75(v16): 74(ptr) Variable Function 78(v17): 74(ptr) Variable Function 81(v18): 55(ptr) Variable Function + 84(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -185,20 +197,23 @@ spv.ext.AnyHitShader.rahit Store 78(v17) 80 83: 6(int) Load 82(gl_CullMaskEXT) Store 81(v18) 83 - Store 85(incomingPayload) 87 - 88: 16(int) Load 18(v2) - 91: 90(bool) IEqual 88 89 - SelectionMerge 93 None - BranchConditional 91 92 93 - 92: Label + 90: 32(ptr) AccessChain 88(gl_HitTriangleVertexPositionsEXT) 89 + 91: 29(fvec3) Load 90 + Store 84(v19) 91 + Store 93(incomingPayload) 95 + 96: 16(int) Load 18(v2) + 99: 98(bool) IEqual 96 97 + SelectionMerge 101 None + BranchConditional 99 100 101 + 100: Label IgnoreIntersectionKHR - 93: Label - 100: 6(int) Load 99(gl_SubgroupSize) - 101: 28(float) ConvertUToF 100 - 103: 102(ptr) AccessChain 85(incomingPayload) 95 - 104: 28(float) Load 103 - 105: 28(float) FAdd 104 101 - 106: 102(ptr) AccessChain 85(incomingPayload) 95 - Store 106 105 + 101: Label + 108: 6(int) Load 107(gl_SubgroupSize) + 109: 28(float) ConvertUToF 108 + 111: 110(ptr) AccessChain 93(incomingPayload) 103 + 112: 28(float) Load 111 + 113: 28(float) FAdd 112 109 + 114: 110(ptr) AccessChain 93(incomingPayload) 103 + Store 114 113 TerminateRayKHR FunctionEnd diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 73a238111b..5cfc8a25b9 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -1,18 +1,21 @@ spv.ext.ClosestHitShader.rchit // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 102 +// Id's are bound by 109 Capability RayTracingKHR + Capability RayTracingPositionFetchKHR Capability RayCullMaskKHR Extension "SPV_KHR_ray_cull_mask" Extension "SPV_KHR_ray_tracing" + Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 86 99 101 + EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 88 94 106 108 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_EXT_ray_tracing_position_fetch" Name 4 "main" Name 9 "v0" Name 11 "gl_LaunchIDEXT" @@ -50,9 +53,11 @@ spv.ext.ClosestHitShader.rchit Name 78 "v17" Name 81 "v18" Name 82 "gl_CullMaskEXT" - Name 86 "accEXT" - Name 99 "incomingPayload" - Name 101 "localPayload" + Name 84 "v19" + Name 88 "gl_HitTriangleVertexPositionsEXT" + Name 94 "accEXT" + Name 106 "incomingPayload" + Name 108 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -70,8 +75,9 @@ spv.ext.ClosestHitShader.rchit Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 86(accEXT) DescriptorSet 0 - Decorate 86(accEXT) Binding 0 + Decorate 88(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR + Decorate 94(accEXT) DescriptorSet 0 + Decorate 94(accEXT) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -112,23 +118,27 @@ spv.ext.ClosestHitShader.rchit 73: TypeMatrix 72(fvec4) 3 74: TypePointer Function 73 82(gl_CullMaskEXT): 57(ptr) Variable Input - 84: TypeAccelerationStructureKHR - 85: TypePointer UniformConstant 84 - 86(accEXT): 85(ptr) Variable UniformConstant - 88: 6(int) Constant 0 - 89: 6(int) Constant 1 - 90: 6(int) Constant 2 - 91: 6(int) Constant 3 - 92: 28(float) Constant 1056964608 - 93: 29(fvec3) ConstantComposite 92 92 92 - 94: 28(float) Constant 1065353216 - 95: 29(fvec3) ConstantComposite 94 94 94 - 96: 28(float) Constant 1061158912 - 97: 16(int) Constant 1 - 98: TypePointer IncomingRayPayloadKHR 72(fvec4) -99(incomingPayload): 98(ptr) Variable IncomingRayPayloadKHR - 100: TypePointer RayPayloadKHR 72(fvec4) -101(localPayload): 100(ptr) Variable RayPayloadKHR + 85: 6(int) Constant 3 + 86: TypeArray 29(fvec3) 85 + 87: TypePointer Input 86 +88(gl_HitTriangleVertexPositionsEXT): 87(ptr) Variable Input + 89: 16(int) Constant 0 + 92: TypeAccelerationStructureKHR + 93: TypePointer UniformConstant 92 + 94(accEXT): 93(ptr) Variable UniformConstant + 96: 6(int) Constant 0 + 97: 6(int) Constant 1 + 98: 6(int) Constant 2 + 99: 28(float) Constant 1056964608 + 100: 29(fvec3) ConstantComposite 99 99 99 + 101: 28(float) Constant 1065353216 + 102: 29(fvec3) ConstantComposite 101 101 101 + 103: 28(float) Constant 1061158912 + 104: 16(int) Constant 1 + 105: TypePointer IncomingRayPayloadKHR 72(fvec4) +106(incomingPayload): 105(ptr) Variable IncomingRayPayloadKHR + 107: TypePointer RayPayloadKHR 72(fvec4) +108(localPayload): 107(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -150,6 +160,7 @@ spv.ext.ClosestHitShader.rchit 75(v16): 74(ptr) Variable Function 78(v17): 74(ptr) Variable Function 81(v18): 55(ptr) Variable Function + 84(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -190,7 +201,10 @@ spv.ext.ClosestHitShader.rchit Store 78(v17) 80 83: 6(int) Load 82(gl_CullMaskEXT) Store 81(v18) 83 - 87: 84 Load 86(accEXT) - TraceRayKHR 87 88 89 90 91 88 93 92 95 96 99(incomingPayload) + 90: 32(ptr) AccessChain 88(gl_HitTriangleVertexPositionsEXT) 89 + 91: 29(fvec3) Load 90 + Store 84(v19) 91 + 95: 92 Load 94(accEXT) + TraceRayKHR 95 96 97 98 85 96 100 99 102 103 106(incomingPayload) Return FunctionEnd diff --git a/Test/rayQuery-allOps.comp b/Test/rayQuery-allOps.comp index 3a2a8d0d2d..6f04175840 100644 --- a/Test/rayQuery-allOps.comp +++ b/Test/rayQuery-allOps.comp @@ -1,6 +1,7 @@ #version 460 #extension GL_EXT_ray_query : enable #extension GL_EXT_ray_flags_primitive_culling : enable +#extension GL_EXT_ray_tracing_position_fetch : enable layout(primitive_culling); struct Ray @@ -147,6 +148,14 @@ void main() { doSomething(); } + { + vec3 positions[3]; + rayQueryGetIntersectionTriangleVertexPositionsEXT(rayQuery, true, positions); + if (positions[0].x < 0 && positions[2].y > 0) + { + doSomething(); + } + } break; case gl_RayQueryCommittedIntersectionGeneratedEXT : diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit old mode 100644 new mode 100755 index 44c32d9174..2d33a00095 --- a/Test/spv.ext.AnyHitShader.rahit +++ b/Test/spv.ext.AnyHitShader.rahit @@ -2,6 +2,7 @@ #extension GL_EXT_ray_tracing : enable #extension GL_KHR_shader_subgroup_basic : enable #extension GL_EXT_ray_cull_mask : enable +#extension GL_EXT_ray_tracing_position_fetch : enable layout(location = 1) rayPayloadInEXT vec4 incomingPayload; void main() @@ -25,6 +26,7 @@ void main() mat3x4 v16 = gl_ObjectToWorld3x4EXT; mat3x4 v17 = gl_WorldToObject3x4EXT; uint v18 = gl_CullMaskEXT; + vec3 v19 = gl_HitTriangleVertexPositionsEXT[0]; incomingPayload = vec4(0.5f); if (v2 == 1) { ignoreIntersectionEXT; diff --git a/Test/spv.ext.ClosestHitShader.rchit b/Test/spv.ext.ClosestHitShader.rchit old mode 100644 new mode 100755 index 8b5f848fa1..09496295a6 --- a/Test/spv.ext.ClosestHitShader.rchit +++ b/Test/spv.ext.ClosestHitShader.rchit @@ -1,6 +1,7 @@ #version 460 #extension GL_EXT_ray_tracing : enable #extension GL_EXT_ray_cull_mask : enable +#extension GL_EXT_ray_tracing_position_fetch : enable layout(binding = 0, set = 0) uniform accelerationStructureEXT accEXT; layout(location = 0) rayPayloadEXT vec4 localPayload; @@ -26,5 +27,6 @@ void main() mat3x4 v16 = gl_ObjectToWorld3x4EXT; mat3x4 v17 = gl_WorldToObject3x4EXT; uint v18 = gl_CullMaskEXT; + vec3 v19 = gl_HitTriangleVertexPositionsEXT[0]; traceRayEXT(accEXT, 0u, 1u, 2u, 3u, 0u, vec3(0.5f), 0.5f, vec3(1.0f), 0.75f, 1); } diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h old mode 100644 new mode 100755 index cf93193d3e..f752615c92 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -325,6 +325,8 @@ enum TBuiltInVariable { EbvWarpIDARM, EbvWarpMaxIDARM, + EbvPositionFetch, + EbvLast }; diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index ec2b28a9bc..34f3da30fb 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1090,6 +1090,9 @@ enum TOperator { // Shader Clock Ops EOpReadClockSubgroupKHR, EOpReadClockDeviceKHR, + + // GL_EXT_ray_tracing_position_fetch + EOpRayQueryGetIntersectionTriangleVertexPositionsEXT, }; class TIntermTraverser; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp old mode 100644 new mode 100755 index 16287dfd16..2bb3bcb972 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4551,7 +4551,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query/ - // GL_NV_shader_invocation_reorder + // GL_NV_shader_invocation_reorder/GL_KHR_ray_tracing_position_Fetch if (profile != EEsProfile && version >= 460) { commonBuiltins.append("void rayQueryInitializeEXT(rayQueryEXT, accelerationStructureEXT, uint, uint, vec3, float, vec3, float);" "void rayQueryTerminateEXT(rayQueryEXT);" @@ -4576,6 +4576,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "vec3 rayQueryGetIntersectionObjectRayOriginEXT(rayQueryEXT, bool);" "mat4x3 rayQueryGetIntersectionObjectToWorldEXT(rayQueryEXT, bool);" "mat4x3 rayQueryGetIntersectionWorldToObjectEXT(rayQueryEXT, bool);" + "void rayQueryGetIntersectionTriangleVertexPositionsEXT(rayQueryEXT, bool, out vec3[3]);" "\n"); stageBuiltins[EShLangRayGen].append( @@ -6018,6 +6019,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in uint gl_IncomingRayFlagsEXT;" "in float gl_CurrentRayTimeNV;" "in uint gl_CullMaskEXT;" + "in vec3 gl_HitTriangleVertexPositionsEXT[3];" "\n"; const char *missDecls = "in uvec3 gl_LaunchIDNV;" @@ -8235,6 +8237,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("rayQueryGetIntersectionWorldToObjectEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetWorldRayOriginEXT", 1, &E_GL_EXT_ray_query); symbolTable.setFunctionExtensions("rayQueryGetWorldRayDirectionEXT", 1, &E_GL_EXT_ray_query); + symbolTable.setFunctionExtensions("rayQueryGetIntersectionTriangleVertexPositionsEXT", 1, &E_GL_EXT_ray_tracing_position_fetch); symbolTable.setVariableExtensions("gl_RayFlagsSkipAABBEXT", 1, &E_GL_EXT_ray_flags_primitive_culling); symbolTable.setVariableExtensions("gl_RayFlagsSkipTrianglesEXT", 1, &E_GL_EXT_ray_flags_primitive_culling); symbolTable.setVariableExtensions("gl_RayFlagsForceOpacityMicromap2StateEXT", 1, &E_GL_EXT_opacity_micromap); @@ -8932,6 +8935,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_IncomingRayFlagsNV", 1, &E_GL_NV_ray_tracing); symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_CurrentRayTimeNV", 1, &E_GL_NV_ray_tracing_motion_blur); + symbolTable.setVariableExtensions("gl_HitTriangleVertexPositionsEXT", 1, &E_GL_EXT_ray_tracing_position_fetch); symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); @@ -9015,6 +9019,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_IncomingRayFlagsEXT", EbvIncomingRayFlags, symbolTable); BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); BuiltInVariable("gl_CurrentRayTimeNV", EbvCurrentRayTimeNV, symbolTable); + BuiltInVariable("gl_HitTriangleVertexPositionsEXT", EbvPositionFetch, symbolTable); // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); @@ -9939,6 +9944,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("rayQueryGetWorldRayOriginEXT", EOpRayQueryGetWorldRayOrigin); symbolTable.relateToOperator("rayQueryGetIntersectionObjectToWorldEXT", EOpRayQueryGetIntersectionObjectToWorld); symbolTable.relateToOperator("rayQueryGetIntersectionWorldToObjectEXT", EOpRayQueryGetIntersectionWorldToObject); + symbolTable.relateToOperator("rayQueryGetIntersectionTriangleVertexPositionsEXT", EOpRayQueryGetIntersectionTriangleVertexPositionsEXT); } symbolTable.relateToOperator("interpolateAtCentroid", EOpInterpolateAtCentroid); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 6e79f0c2e7..ecf7b29560 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2467,6 +2467,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan case EOpRayQueryGetIntersectionObjectRayOrigin: case EOpRayQueryGetIntersectionObjectToWorld: case EOpRayQueryGetIntersectionWorldToObject: + case EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: if (!(*argp)[1]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "committed", ""); break; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index bf5ce2f67f..9e7bda02cb 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -354,6 +354,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_spirv_intrinsics] = EBhDisable; extensionBehavior[E_GL_EXT_mesh_shader] = EBhDisable; extensionBehavior[E_GL_EXT_opacity_micromap] = EBhDisable; + extensionBehavior[E_GL_EXT_ray_tracing_position_fetch] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -522,6 +523,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_ray_query 1\n" "#define GL_EXT_ray_flags_primitive_culling 1\n" "#define GL_EXT_ray_cull_mask 1\n" + "#define GL_EXT_ray_tracing_position_fetch 1\n" "#define GL_EXT_spirv_intrinsics 1\n" "#define GL_EXT_mesh_shader 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h old mode 100644 new mode 100755 index 9e4c9feaaa..0ff1df3edc --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -265,6 +265,7 @@ const char* const E_GL_NV_fragment_shader_barycentric = "GL_NV_fragmen const char* const E_GL_NV_compute_shader_derivatives = "GL_NV_compute_shader_derivatives"; const char* const E_GL_NV_shader_texture_footprint = "GL_NV_shader_texture_footprint"; const char* const E_GL_NV_mesh_shader = "GL_NV_mesh_shader"; +const char* const E_GL_EXT_ray_tracing_position_fetch = "GL_EXT_ray_tracing_position_fetch"; // ARM const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader_core_builtins"; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 91d5b954ea..a086c25d4b 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1097,6 +1097,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpRayQueryGetWorldRayOrigin: out.debug << "rayQueryGetWorldRayOriginEXT"; break; case EOpRayQueryGetIntersectionObjectToWorld: out.debug << "rayQueryGetIntersectionObjectToWorldEXT"; break; case EOpRayQueryGetIntersectionWorldToObject: out.debug << "rayQueryGetIntersectionWorldToObjectEXT"; break; + case EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: out.debug << "rayQueryGetIntersectionTriangleVertexPositionsEXT"; break; case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix"; break; case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break; diff --git a/known_good.json b/known_good.json index 8e79d292c5..553f4cfa53 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "44d72a9b36702f093dd20815561a56778b2d181e" + "commit" : "baa46e103695080f56ac72847993f4ee9151cf63" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "1feaf4414eb2b353764d01d88f8aa4bcc67b60db" + "commit" : "7f1d2f4158704337aff1f739c8e494afc5716e7e" } ] } From 9743480f3cb2c75957bc71383e1cc43d77f730e5 Mon Sep 17 00:00:00 2001 From: juan-lunarg Date: Thu, 4 May 2023 15:59:35 -0600 Subject: [PATCH 186/594] cmake: Don't set CMAKE_INSTALL_PREFIX While trying to set a default for CMAKE_INSTALL_PREFIX sounds appealing it has multiple issues. It's particularly problematic for open source projects where many users try to accomplish many different things. It's also conflicting with the new way of installing with cmake IE: `cmake --install build --prefix build/install` I've already removed similar logic in various other Khronos repositories a while ago to address similar complaints. closes #1015 --- CMakeLists.txt | 4 ---- 1 file changed, 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e38b5e3a9b..0af388b1fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,10 +104,6 @@ else() endif() option(ENABLE_CTEST "Enables testing" ON) -if(ENABLE_GLSLANG_INSTALL AND CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT AND WIN32) - set(CMAKE_INSTALL_PREFIX "install" CACHE STRING "..." FORCE) -endif() - if(ENABLE_CTEST) include(CTest) endif() From a3310b7cff7b67d2daa443c03090b4978c91384a Mon Sep 17 00:00:00 2001 From: juan-lunarg Date: Fri, 5 May 2023 14:07:40 -0600 Subject: [PATCH 187/594] ci: Test GCC on MacOS CI closes #3062 --- .github/workflows/continuous_integration.yml | 23 ++++++++++---------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 1fa97d67b5..6ca8607b57 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -66,14 +66,15 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-11] - compiler: [{cc: clang, cxx: clang++}] + os: [macos-11, macos-12] + compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v3 with: python-version: '3.7' + - uses: lukka/get-cmake@latest - name: Install GoogleTest run: | # check out pre-breakage version of googletest; can be deleted when @@ -87,16 +88,16 @@ jobs: git reset --hard FETCH_HEAD cd ../.. - name: Update Glslang Sources - run: | - ./update_glslang_sources.py - - name: Build + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G "Ninja" env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} - run: | - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. - make -j4 install + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install - name: Test run: | cd build From 0bbec2e8f6eca92e925bc589725b108788fc0733 Mon Sep 17 00:00:00 2001 From: janharaldfredriksen-arm Date: Thu, 30 Mar 2023 17:50:56 +0200 Subject: [PATCH 188/594] Add GLSL_EXT_shader_tile_image --- SPIRV/GLSL.ext.EXT.h | 1 + SPIRV/GlslangToSpv.cpp | 72 + SPIRV/doc.cpp | 19 + SPIRV/spirv.hpp | 14 + Test/baseResults/440.frag.out | 2 +- .../spv.ext.ShaderTileImage.color.frag.out | 38 + ...ext.ShaderTileImage.depth_stencil.frag.out | 56 + .../spv.ext.ShaderTileImage.overlap.frag.out | 6 + ....ext.ShaderTileImage.subpassinput.frag.out | 6 + ....ext.ShaderTileImage.typemismatch.frag.out | 6 + ...v.ext.ShaderTileImage.wronglayout.frag.out | 9 + Test/spv.ext.ShaderTileImage.color.frag | 12 + ...spv.ext.ShaderTileImage.depth_stencil.frag | 16 + Test/spv.ext.ShaderTileImage.overlap.frag | 15 + .../spv.ext.ShaderTileImage.subpassinput.frag | 13 + .../spv.ext.ShaderTileImage.typemismatch.frag | 13 + Test/spv.ext.ShaderTileImage.wronglayout.frag | 13 + glslang/Include/BaseTypes.h | 2 + glslang/Include/Types.h | 48 +- glslang/Include/intermediate.h | 10 + glslang/MachineIndependent/Initialize.cpp | 32 + glslang/MachineIndependent/ParseHelper.cpp | 68 +- glslang/MachineIndependent/Scan.cpp | 9 + glslang/MachineIndependent/Versions.cpp | 1 + glslang/MachineIndependent/Versions.h | 2 + glslang/MachineIndependent/glslang.m4 | 26 +- glslang/MachineIndependent/glslang.y | 26 +- glslang/MachineIndependent/glslang_tab.cpp | 9060 +++++++++-------- glslang/MachineIndependent/glslang_tab.cpp.h | 268 +- glslang/MachineIndependent/intermOut.cpp | 12 + glslang/MachineIndependent/linkValidate.cpp | 25 +- .../MachineIndependent/localintermediate.h | 15 + gtests/Spv.FromFile.cpp | 6 + 33 files changed, 5275 insertions(+), 4646 deletions(-) create mode 100644 Test/baseResults/spv.ext.ShaderTileImage.color.frag.out create mode 100644 Test/baseResults/spv.ext.ShaderTileImage.depth_stencil.frag.out create mode 100644 Test/baseResults/spv.ext.ShaderTileImage.overlap.frag.out create mode 100644 Test/baseResults/spv.ext.ShaderTileImage.subpassinput.frag.out create mode 100644 Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out create mode 100644 Test/baseResults/spv.ext.ShaderTileImage.wronglayout.frag.out create mode 100644 Test/spv.ext.ShaderTileImage.color.frag create mode 100644 Test/spv.ext.ShaderTileImage.depth_stencil.frag create mode 100644 Test/spv.ext.ShaderTileImage.overlap.frag create mode 100644 Test/spv.ext.ShaderTileImage.subpassinput.frag create mode 100644 Test/spv.ext.ShaderTileImage.typemismatch.frag create mode 100644 Test/spv.ext.ShaderTileImage.wronglayout.frag diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h index a247b4cd13..caab279382 100644 --- a/SPIRV/GLSL.ext.EXT.h +++ b/SPIRV/GLSL.ext.EXT.h @@ -39,6 +39,7 @@ static const char* const E_SPV_EXT_shader_atomic_float_add = "SPV_EXT_shader_ato static const char* const E_SPV_EXT_shader_atomic_float16_add = "SPV_EXT_shader_atomic_float16_add"; static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader_atomic_float_min_max"; static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; +static const char* const E_SPV_EXT_shader_tile_image = "SPV_EXT_shader_tile_image"; static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; #endif // #ifndef GLSLextEXT_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 259f730c7a..5926582fa6 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -351,6 +351,7 @@ spv::Dim TranslateDimensionality(const glslang::TSampler& sampler) case glslang::EsdRect: return spv::DimRect; case glslang::EsdBuffer: return spv::DimBuffer; case glslang::EsdSubpass: return spv::DimSubpassData; + case glslang::EsdAttachmentEXT: return spv::DimTileImageDataEXT; default: assert(0); return spv::Dim2D; @@ -1311,6 +1312,11 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T return spv::StorageClassInput; if (type.getQualifier().isPipeOutput()) return spv::StorageClassOutput; + if (type.getQualifier().storage == glslang::EvqTileImageEXT || type.isAttachmentEXT()) { + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + builder.addCapability(spv::CapabilityTileImageColorReadAccessEXT); + return spv::StorageClassTileImageEXT; + } if (glslangIntermediate->getSource() != glslang::EShSourceHlsl || type.getQualifier().storage == glslang::EvqUniform) { @@ -1682,6 +1688,24 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExtension(spv::E_SPV_KHR_post_depth_coverage); } + if (glslangIntermediate->getNonCoherentColorAttachmentReadEXT()) { + builder.addCapability(spv::CapabilityTileImageColorReadAccessEXT); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeNonCoherentColorAttachmentReadEXT); + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + } + + if (glslangIntermediate->getNonCoherentDepthAttachmentReadEXT()) { + builder.addCapability(spv::CapabilityTileImageDepthReadAccessEXT); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeNonCoherentDepthAttachmentReadEXT); + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + } + + if (glslangIntermediate->getNonCoherentStencilAttachmentReadEXT()) { + builder.addCapability(spv::CapabilityTileImageStencilReadAccessEXT); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeNonCoherentStencilAttachmentReadEXT); + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + } + if (glslangIntermediate->isDepthReplacing()) builder.addExecutionMode(shaderEntry, spv::ExecutionModeDepthReplacing); @@ -5752,6 +5776,17 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO return result; } + if (cracked.attachmentEXT) { + if (opIt != arguments.end()) { + spv::IdImmediate sample = { true, *opIt }; + operands.push_back(sample); + } + spv::Id result = builder.createOp(spv::OpColorAttachmentReadEXT, resultType(), operands); + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + builder.setPrecision(result, precision); + return result; + } + spv::IdImmediate coord = { true, *(opIt++) }; operands.push_back(coord); if (node->getOp() == glslang::EOpImageLoad || node->getOp() == glslang::EOpImageLoadLod) { @@ -7172,6 +7207,19 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe unaryOp = spv::OpCopyObject; break; + case glslang::EOpDepthAttachmentReadEXT: + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + builder.addCapability(spv::CapabilityTileImageDepthReadAccessEXT); + unaryOp = spv::OpDepthAttachmentReadEXT; + decorations.precision = spv::NoPrecision; + break; + case glslang::EOpStencilAttachmentReadEXT: + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + builder.addCapability(spv::CapabilityTileImageStencilReadAccessEXT); + unaryOp = spv::OpStencilAttachmentReadEXT; + decorations.precision = spv::DecorationRelaxedPrecision; + break; + default: return 0; } @@ -9262,6 +9310,30 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: return builder.createOp(spv::OpReadClockKHR, typeId, args); } #endif + case glslang::EOpStencilAttachmentReadEXT: + case glslang::EOpDepthAttachmentReadEXT: + { + builder.addExtension(spv::E_SPV_EXT_shader_tile_image); + + spv::Decoration precision; + spv::Op spv_op; + if (op == glslang::EOpStencilAttachmentReadEXT) + { + precision = spv::DecorationRelaxedPrecision; + spv_op = spv::OpStencilAttachmentReadEXT; + builder.addCapability(spv::CapabilityTileImageStencilReadAccessEXT); + } + else + { + precision = spv::NoPrecision; + spv_op = spv::OpDepthAttachmentReadEXT; + builder.addCapability(spv::CapabilityTileImageDepthReadAccessEXT); + } + + std::vector args; // Dummy args + spv::Id result = builder.createOp(spv_op, typeId, args); + return builder.setPrecision(result, precision); + } default: break; } diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 9ee474d59b..571ef78802 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -215,6 +215,10 @@ const char* ExecutionModeString(int mode) case ExecutionModeNoGlobalOffsetINTEL: return "NoGlobalOffsetINTEL"; case ExecutionModeNumSIMDWorkitemsINTEL: return "NumSIMDWorkitemsINTEL"; + case ExecutionModeNonCoherentColorAttachmentReadEXT: return "NonCoherentColorAttachmentReadEXT"; + case ExecutionModeNonCoherentDepthAttachmentReadEXT: return "NonCoherentDepthAttachmentReadEXT"; + case ExecutionModeNonCoherentStencilAttachmentReadEXT: return "NonCoherentStencilAttachmentReadEXT"; + case ExecutionModeCeiling: default: return "Bad"; } @@ -247,6 +251,7 @@ const char* StorageClassString(int StorageClass) case StorageClassPhysicalStorageBufferEXT: return "PhysicalStorageBufferEXT"; case StorageClassTaskPayloadWorkgroupEXT: return "TaskPayloadWorkgroupEXT"; case StorageClassHitObjectAttributeNV: return "HitObjectAttributeNV"; + case StorageClassTileImageEXT: return "TileImageEXT"; default: return "Bad"; } } @@ -464,6 +469,7 @@ const char* DimensionString(int dim) case 4: return "Rect"; case 5: return "Buffer"; case 6: return "SubpassData"; + case DimTileImageDataEXT: return "TileImageDataEXT"; default: return "Bad"; } @@ -992,6 +998,10 @@ const char* CapabilityString(int info) case CapabilityFragmentShaderPixelInterlockEXT: return "CapabilityFragmentShaderPixelInterlockEXT"; case CapabilityFragmentShaderShadingRateInterlockEXT: return "CapabilityFragmentShaderShadingRateInterlockEXT"; + case CapabilityTileImageColorReadAccessEXT: return "TileImageColorReadAccessEXT"; + case CapabilityTileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT"; + case CapabilityTileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT"; + case CapabilityFragmentShadingRateKHR: return "FragmentShadingRateKHR"; case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; @@ -1502,6 +1512,10 @@ const char* OpcodeString(int op) case OpHitObjectGetShaderBindingTableRecordIndexNV: return "OpHitObjectGetShaderBindingTableRecordIndexNV"; case OpHitObjectGetShaderRecordBufferHandleNV: return "OpHitObjectGetShaderRecordBufferHandleNV"; + case OpColorAttachmentReadEXT: return "OpColorAttachmentReadEXT"; + case OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT"; + case OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT"; + default: return "Bad"; } @@ -3268,6 +3282,11 @@ void Parameterize() InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Time'"); InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'"); InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false); + + InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Attachment'"); + InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); + InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); + InstructionDesc[OpDepthAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); } }; // end spv namespace diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 850081b7c0..111285326d 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -156,6 +156,9 @@ enum ExecutionMode { ExecutionModeSubgroupsPerWorkgroupId = 37, ExecutionModeLocalSizeId = 38, ExecutionModeLocalSizeHintId = 39, + ExecutionModeNonCoherentColorAttachmentReadEXT = 4169, + ExecutionModeNonCoherentDepthAttachmentReadEXT = 4170, + ExecutionModeNonCoherentStencilAttachmentReadEXT = 4171, ExecutionModeSubgroupUniformControlFlowKHR = 4421, ExecutionModePostDepthCoverage = 4446, ExecutionModeDenormPreserve = 4459, @@ -214,6 +217,7 @@ enum StorageClass { StorageClassAtomicCounter = 10, StorageClassImage = 11, StorageClassStorageBuffer = 12, + StorageClassTileImageEXT = 4172, StorageClassCallableDataKHR = 5328, StorageClassCallableDataNV = 5328, StorageClassIncomingCallableDataKHR = 5329, @@ -244,6 +248,7 @@ enum Dim { DimRect = 4, DimBuffer = 5, DimSubpassData = 6, + DimTileImageDataEXT = 4173, DimMax = 0x7fffffff, }; @@ -984,6 +989,9 @@ enum Capability { CapabilityShaderViewportIndex = 70, CapabilityUniformDecoration = 71, CapabilityCoreBuiltinsARM = 4165, + CapabilityTileImageColorReadAccessEXT = 4166, + CapabilityTileImageDepthReadAccessEXT = 4167, + CapabilityTileImageStencilReadAccessEXT = 4168, CapabilityFragmentShadingRateKHR = 4422, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, @@ -1598,6 +1606,9 @@ enum Op { OpPtrEqual = 401, OpPtrNotEqual = 402, OpPtrDiff = 403, + OpColorAttachmentReadEXT = 4160, + OpDepthAttachmentReadEXT = 4161, + OpStencilAttachmentReadEXT = 4162, OpTerminateInvocation = 4416, OpSubgroupBallotKHR = 4421, OpSubgroupFirstInvocationKHR = 4422, @@ -2313,6 +2324,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case OpPtrDiff: *hasResult = true; *hasResultType = true; break; + case OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; + case OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; + case OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case OpTerminateInvocation: *hasResult = false; *hasResultType = false; break; case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break; case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break; diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out index 063570aa12..7ea19262de 100644 --- a/Test/baseResults/440.frag.out +++ b/Test/baseResults/440.frag.out @@ -1,7 +1,7 @@ 440.frag ERROR: 0:11: 'location' : overlapping use of location 4 ERROR: 0:13: 'component' : type overflows the available 4 components -ERROR: 0:22: 'location' : fragment outputs sharing the same location must be the same basic type 30 +ERROR: 0:22: 'location' : fragment outputs or tileImageEXTs sharing the same location 30 must be the same basic type ERROR: 0:24: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:25: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:26: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) diff --git a/Test/baseResults/spv.ext.ShaderTileImage.color.frag.out b/Test/baseResults/spv.ext.ShaderTileImage.color.frag.out new file mode 100644 index 0000000000..942a850c0a --- /dev/null +++ b/Test/baseResults/spv.ext.ShaderTileImage.color.frag.out @@ -0,0 +1,38 @@ +spv.ext.ShaderTileImage.color.frag +WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: + "precision mediump int; precision highp float;" + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 15 + + Capability Shader + Capability TileImageColorReadAccessEXT + Extension "SPV_EXT_shader_tile_image" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_EXT_shader_tile_image" + Name 4 "main" + Name 9 "out_color" + Name 12 "in_color" + Decorate 9(out_color) Location 0 + Decorate 12(in_color) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(out_color): 8(ptr) Variable Output + 10: TypeImage 6(float) TileImageDataEXT nonsampled format:Unknown + 11: TypePointer TileImageEXT 10 + 12(in_color): 11(ptr) Variable TileImageEXT + 4(main): 2 Function None 3 + 5: Label + 13: 10 Load 12(in_color) + 14: 7(fvec4) ColorAttachmentReadEXT 13 + Store 9(out_color) 14 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.ShaderTileImage.depth_stencil.frag.out b/Test/baseResults/spv.ext.ShaderTileImage.depth_stencil.frag.out new file mode 100644 index 0000000000..0dcf014812 --- /dev/null +++ b/Test/baseResults/spv.ext.ShaderTileImage.depth_stencil.frag.out @@ -0,0 +1,56 @@ +spv.ext.ShaderTileImage.depth_stencil.frag +WARNING: 0:6: '' : all default precisions are highp; use precision statements to quiet warning, e.g.: + "precision mediump int; precision highp float;" + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 26 + + Capability Shader + Capability TileImageDepthReadAccessEXT + Capability TileImageStencilReadAccessEXT + Extension "SPV_EXT_shader_tile_image" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 16 22 + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_EXT_shader_tile_image" + Name 4 "main" + Name 8 "depth" + Name 12 "stencil_value" + Name 16 "stencil_out" + Name 22 "depth_out" + Decorate 13 RelaxedPrecision + Decorate 16(stencil_out) Location 0 + Decorate 22(depth_out) Location 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Function 6(float) + 10: TypeInt 32 0 + 11: TypePointer Function 10(int) + 14: TypeVector 10(int) 4 + 15: TypePointer Output 14(ivec4) + 16(stencil_out): 15(ptr) Variable Output + 18: 10(int) Constant 0 + 20: TypeVector 6(float) 4 + 21: TypePointer Output 20(fvec4) + 22(depth_out): 21(ptr) Variable Output + 24: 6(float) Constant 0 + 4(main): 2 Function None 3 + 5: Label + 8(depth): 7(ptr) Variable Function +12(stencil_value): 11(ptr) Variable Function + 9: 6(float) DepthAttachmentReadEXT + Store 8(depth) 9 + 13: 10(int) StencilAttachmentReadEXT + Store 12(stencil_value) 13 + 17: 10(int) Load 12(stencil_value) + 19: 14(ivec4) CompositeConstruct 17 18 18 18 + Store 16(stencil_out) 19 + 23: 6(float) Load 8(depth) + 25: 20(fvec4) CompositeConstruct 23 24 24 24 + Store 22(depth_out) 25 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.ShaderTileImage.overlap.frag.out b/Test/baseResults/spv.ext.ShaderTileImage.overlap.frag.out new file mode 100644 index 0000000000..e7af421380 --- /dev/null +++ b/Test/baseResults/spv.ext.ShaderTileImage.overlap.frag.out @@ -0,0 +1,6 @@ +spv.ext.ShaderTileImage.overlap.frag +ERROR: 0:8: 'location' : overlapping use of location 1 +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ext.ShaderTileImage.subpassinput.frag.out b/Test/baseResults/spv.ext.ShaderTileImage.subpassinput.frag.out new file mode 100644 index 0000000000..0f08f49246 --- /dev/null +++ b/Test/baseResults/spv.ext.ShaderTileImage.subpassinput.frag.out @@ -0,0 +1,6 @@ +spv.ext.ShaderTileImage.subpassinput.frag +ERROR: 0:6: 'subpassInput' : can not be used with GL_EXT_shader_tile_image enabled +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out b/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out new file mode 100644 index 0000000000..e91ffb73f3 --- /dev/null +++ b/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out @@ -0,0 +1,6 @@ +spv.ext.ShaderTileImage.typemismatch.frag +ERROR: 0:7: 'location' : fragment outputs or tileImageEXTs sharing the same location 0 must be the same basic type +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ext.ShaderTileImage.wronglayout.frag.out b/Test/baseResults/spv.ext.ShaderTileImage.wronglayout.frag.out new file mode 100644 index 0000000000..aa3a1982f6 --- /dev/null +++ b/Test/baseResults/spv.ext.ShaderTileImage.wronglayout.frag.out @@ -0,0 +1,9 @@ +spv.ext.ShaderTileImage.wronglayout.frag +ERROR: 0:7: 'binding' : requires uniform or buffer storage qualifier +ERROR: 0:7: 'set' : cannot be used with tileImageEXT +ERROR: 0:7: 'tileImageEXT' : can only be used with an explicit location +ERROR: 0:7: 'input_attachment_index' : can only be used with a subpass +ERROR: 4 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/spv.ext.ShaderTileImage.color.frag b/Test/spv.ext.ShaderTileImage.color.frag new file mode 100644 index 0000000000..f3b5530851 --- /dev/null +++ b/Test/spv.ext.ShaderTileImage.color.frag @@ -0,0 +1,12 @@ +#version 460 +#extension GL_EXT_shader_tile_image : require + +precision highp float; + +layout(location=1) tileImageEXT highp attachmentEXT in_color; +layout(location=0) out highp vec4 out_color; + +void main(void) +{ + out_color = colorAttachmentReadEXT(in_color); +} diff --git a/Test/spv.ext.ShaderTileImage.depth_stencil.frag b/Test/spv.ext.ShaderTileImage.depth_stencil.frag new file mode 100644 index 0000000000..faf9d932f8 --- /dev/null +++ b/Test/spv.ext.ShaderTileImage.depth_stencil.frag @@ -0,0 +1,16 @@ +#version 460 +#extension GL_EXT_shader_tile_image : require + +precision highp float; + +layout(location=0) out highp uvec4 stencil_out; +layout(location=1) out highp vec4 depth_out; + + +void main(void) +{ + float depth = depthAttachmentReadEXT(); + uint stencil_value = stencilAttachmentReadEXT(); + stencil_out = uvec4(stencil_value,0,0,0); + depth_out = vec4(depth,0.0,0.0,0.0); +} diff --git a/Test/spv.ext.ShaderTileImage.overlap.frag b/Test/spv.ext.ShaderTileImage.overlap.frag new file mode 100644 index 0000000000..98a44e4f8b --- /dev/null +++ b/Test/spv.ext.ShaderTileImage.overlap.frag @@ -0,0 +1,15 @@ +#version 460 +#extension GL_EXT_shader_tile_image : require + +precision mediump int; +precision highp float; + +layout(location=0) tileImageEXT highp attachmentEXT in_color[2]; +layout(location=1) tileImageEXT highp attachmentEXT in_color_1; +layout(location=1) out highp vec4 out_color; + +void main(void) +{ + out_color = colorAttachmentReadEXT(in_color[0]); + out_color += colorAttachmentReadEXT(in_color_1); +} diff --git a/Test/spv.ext.ShaderTileImage.subpassinput.frag b/Test/spv.ext.ShaderTileImage.subpassinput.frag new file mode 100644 index 0000000000..ec0e85ea43 --- /dev/null +++ b/Test/spv.ext.ShaderTileImage.subpassinput.frag @@ -0,0 +1,13 @@ +#version 450 +#extension GL_EXT_shader_tile_image : require + +precision highp float; + +layout(set = 0, binding = 0, input_attachment_index = 0) uniform subpassInput i; + +layout(location = 0) out vec4 fragColor; + +void main() +{ + fragColor = subpassLoad(i); +} diff --git a/Test/spv.ext.ShaderTileImage.typemismatch.frag b/Test/spv.ext.ShaderTileImage.typemismatch.frag new file mode 100644 index 0000000000..170bfaba0c --- /dev/null +++ b/Test/spv.ext.ShaderTileImage.typemismatch.frag @@ -0,0 +1,13 @@ +#version 320 es +#extension GL_EXT_shader_tile_image : require + +layout(non_coherent_color_attachment_readEXT) in; + +layout(location=0) tileImageEXT highp iattachmentEXT in_color_i; +layout(location=0) out highp vec4 out_color_f; + +void main(void) +{ + highp ivec4 read = colorAttachmentReadEXT(in_color_i); + out_color_f = vec4(read); +} diff --git a/Test/spv.ext.ShaderTileImage.wronglayout.frag b/Test/spv.ext.ShaderTileImage.wronglayout.frag new file mode 100644 index 0000000000..7cc06edfe2 --- /dev/null +++ b/Test/spv.ext.ShaderTileImage.wronglayout.frag @@ -0,0 +1,13 @@ +#version 460 +#extension GL_EXT_shader_tile_image : require + +precision highp float; +precision mediump int; + +layout(binding=0, set=0, input_attachment_index=0) tileImageEXT highp attachmentEXT in_color; +layout(location=0) out highp vec4 out_color; + +void main(void) +{ + out_color = colorAttachmentReadEXT(in_color); +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index f752615c92..f41941e73d 100755 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -134,6 +134,8 @@ enum TStorageQualifier { EvqFragDepth, EvqFragStencil, + EvqTileImageEXT, + // end of list EvqLast }; diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 59a447c912..c3d0bff44b 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -72,6 +72,7 @@ enum TSamplerDim { EsdRect, EsdBuffer, EsdSubpass, // goes only with non-sampled image (image is true) + EsdAttachmentEXT, EsdNumDims }; @@ -90,6 +91,7 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isBuffer() const { return false; } bool isRect() const { return false; } bool isSubpass() const { return false; } + bool isAttachmentEXT() const { return false; } bool isCombined() const { return true; } bool isImage() const { return false; } bool isImageClass() const { return false; } @@ -122,8 +124,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isBuffer() const { return dim == EsdBuffer; } bool isRect() const { return dim == EsdRect; } bool isSubpass() const { return dim == EsdSubpass; } + bool isAttachmentEXT() const { return dim == EsdAttachmentEXT; } bool isCombined() const { return combined; } - bool isImage() const { return image && !isSubpass(); } + bool isImage() const { return image && !isSubpass() && !isAttachmentEXT();} bool isImageClass() const { return image; } bool isMultiSample() const { return ms; } bool isExternal() const { return external; } @@ -214,6 +217,15 @@ struct TSampler { // misnomer now; includes images, textures without sampler, dim = EsdSubpass; ms = m; } + + // make an AttachmentEXT + void setAttachmentEXT(TBasicType t) + { + clear(); + type = t; + image = true; + dim = EsdAttachmentEXT; + } #endif bool operator==(const TSampler& right) const @@ -264,7 +276,9 @@ struct TSampler { // misnomer now; includes images, textures without sampler, default: break; } if (isImageClass()) { - if (isSubpass()) + if (isAttachmentEXT()) + s.append("attachmentEXT"); + else if (isSubpass()) s.append("subpass"); else s.append("image"); @@ -285,10 +299,11 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case Esd3D: s.append("3D"); break; case EsdCube: s.append("Cube"); break; #ifndef GLSLANG_WEB - case Esd1D: s.append("1D"); break; - case EsdRect: s.append("2DRect"); break; - case EsdBuffer: s.append("Buffer"); break; - case EsdSubpass: s.append("Input"); break; + case Esd1D: s.append("1D"); break; + case EsdRect: s.append("2DRect"); break; + case EsdBuffer: s.append("Buffer"); break; + case EsdSubpass: s.append("Input"); break; + case EsdAttachmentEXT: s.append(""); break; #endif default: break; // some compilers want this } @@ -1394,6 +1409,9 @@ struct TShaderQualifiers { bool earlyFragmentTests; // fragment input bool postDepthCoverage; // fragment input bool earlyAndLateFragmentTestsAMD; //fragment input + bool nonCoherentColorAttachmentReadEXT; // fragment input + bool nonCoherentDepthAttachmentReadEXT; // fragment input + bool nonCoherentStencilAttachmentReadEXT; // fragment input TLayoutDepth layoutDepth; TLayoutStencil layoutStencil; bool blendEquation; // true if any blend equation was specified @@ -1433,6 +1451,9 @@ struct TShaderQualifiers { earlyFragmentTests = false; earlyAndLateFragmentTestsAMD = false; postDepthCoverage = false; + nonCoherentColorAttachmentReadEXT = false; + nonCoherentDepthAttachmentReadEXT = false; + nonCoherentStencilAttachmentReadEXT = false; layoutDepth = EldNone; layoutStencil = ElsNone; blendEquation = false; @@ -1490,6 +1511,12 @@ struct TShaderQualifiers { earlyAndLateFragmentTestsAMD = true; if (src.postDepthCoverage) postDepthCoverage = true; + if (src.nonCoherentColorAttachmentReadEXT) + nonCoherentColorAttachmentReadEXT = true; + if (src.nonCoherentDepthAttachmentReadEXT) + nonCoherentDepthAttachmentReadEXT = true; + if (src.nonCoherentStencilAttachmentReadEXT) + nonCoherentStencilAttachmentReadEXT = true; if (src.layoutDepth) layoutDepth = src.layoutDepth; if (src.layoutStencil) @@ -1603,8 +1630,9 @@ class TPublicType { #endif // "Image" is a superset of "Subpass" - bool isImage() const { return basicType == EbtSampler && sampler.isImage(); } - bool isSubpass() const { return basicType == EbtSampler && sampler.isSubpass(); } + bool isImage() const { return basicType == EbtSampler && sampler.isImage(); } + bool isSubpass() const { return basicType == EbtSampler && sampler.isSubpass(); } + bool isAttachmentEXT() const { return basicType == EbtSampler && sampler.isAttachmentEXT(); } }; // @@ -1927,8 +1955,8 @@ class TType { ; } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } - // "Image" is a superset of "Subpass" - virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); } + virtual bool isAttachmentEXT() const { return basicType == EbtSampler && getSampler().isAttachmentEXT(); } + virtual bool isImage() const { return basicType == EbtSampler && getSampler().isImage(); } virtual bool isSubpass() const { return basicType == EbtSampler && getSampler().isSubpass(); } virtual bool isTexture() const { return basicType == EbtSampler && getSampler().isTexture(); } virtual bool isBindlessImage() const { return isImage() && qualifier.layoutBindlessImage; } diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 34f3da30fb..e6b4df4b65 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -827,6 +827,7 @@ enum TOperator { EOpSubpassLoadMS, EOpSparseImageLoad, EOpSparseImageLoadLod, + EOpColorAttachmentReadEXT, // Fragment only EOpImageGuardEnd, @@ -1093,6 +1094,10 @@ enum TOperator { // GL_EXT_ray_tracing_position_fetch EOpRayQueryGetIntersectionTriangleVertexPositionsEXT, + + // Shader tile image ops + EOpStencilAttachmentReadEXT, // Fragment only + EOpDepthAttachmentReadEXT, // Fragment only }; class TIntermTraverser; @@ -1396,6 +1401,7 @@ struct TCrackedTextureOp { bool subpass; bool lodClamp; bool fragMask; + bool attachmentEXT; }; // @@ -1452,6 +1458,7 @@ class TIntermOperator : public TIntermTyped { cracked.gather = false; cracked.grad = false; cracked.subpass = false; + cracked.attachmentEXT = false; cracked.lodClamp = false; cracked.fragMask = false; @@ -1612,6 +1619,9 @@ class TIntermOperator : public TIntermTyped { case EOpSubpassLoadMS: cracked.subpass = true; break; + case EOpColorAttachmentReadEXT: + cracked.attachmentEXT = true; + break; #endif default: break; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 2bb3bcb972..39f42b62f1 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -524,6 +524,7 @@ TBuiltIns::TBuiltIns() dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; dimMap[EsdSubpass] = 2; // potentially unused for now + dimMap[EsdAttachmentEXT] = 2; // potentially unused for now #endif } @@ -4440,6 +4441,24 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + // GL_EXT_shader_tile_image + if (spvVersion.vulkan > 0) { + stageBuiltins[EShLangFragment].append( + "lowp uint stencilAttachmentReadEXT();" + "lowp uint stencilAttachmentReadEXT(int);" + "highp float depthAttachmentReadEXT();" + "highp float depthAttachmentReadEXT(int);" + "\n"); + stageBuiltins[EShLangFragment].append( + "vec4 colorAttachmentReadEXT(attachmentEXT);" + "vec4 colorAttachmentReadEXT(attachmentEXT, int);" + "ivec4 colorAttachmentReadEXT(iattachmentEXT);" + "ivec4 colorAttachmentReadEXT(iattachmentEXT, int);" + "uvec4 colorAttachmentReadEXT(uattachmentEXT);" + "uvec4 colorAttachmentReadEXT(uattachmentEXT, int);" + "\n"); + } + // GL_ARB_derivative_control if (profile != EEsProfile && version >= 400) { stageBuiltins[EShLangFragment].append(derivativeControls); @@ -6201,6 +6220,8 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube #else for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass + if (dim == EsdAttachmentEXT) + continue; if (dim == EsdSubpass && spvVersion.vulkan == 0) continue; if (dim == EsdSubpass && (image || shadow || arrayed)) @@ -6246,6 +6267,8 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c #ifndef GLSLANG_WEB if (dim == EsdSubpass) { sampler.setSubpass(bTypes[bType], ms ? true : false); + } else if (dim == EsdAttachmentEXT) { + sampler.setAttachmentEXT(bTypes[bType]); } else #endif if (image) { @@ -8732,6 +8755,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } + + // GL_EXT_shader_tile_image + symbolTable.setFunctionExtensions("stencilAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); + symbolTable.setFunctionExtensions("depthAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); + symbolTable.setFunctionExtensions("colorAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); #endif // !GLSLANG_WEB break; @@ -9957,6 +9985,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("beginInvocationInterlockARB", EOpBeginInvocationInterlock); symbolTable.relateToOperator("endInvocationInterlockARB", EOpEndInvocationInterlock); + symbolTable.relateToOperator("stencilAttachmentReadEXT", EOpStencilAttachmentReadEXT); + symbolTable.relateToOperator("depthAttachmentReadEXT", EOpDepthAttachmentReadEXT); + symbolTable.relateToOperator("colorAttachmentReadEXT", EOpColorAttachmentReadEXT); + break; case EShLangCompute: diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index ecf7b29560..c6f947d9b2 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3812,7 +3812,10 @@ void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const // non-uniform sampler // not yet: okay if it has an initializer // if (! initializer) - error(loc, "sampler/image types can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); + if (type.getSampler().isAttachmentEXT() && type.getQualifier().storage != EvqTileImageEXT) + error(loc, "can only be used in tileImageEXT variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); + else if (type.getQualifier().storage != EvqTileImageEXT) + error(loc, "sampler/image types can only be used in uniform variables or function parameters:", type.getBasicTypeString().c_str(), identifier.c_str()); } } } @@ -5173,6 +5176,7 @@ void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQu case EvqIn: case EvqOut: case EvqInOut: + case EvqTileImageEXT: type.getQualifier().storage = qualifier; break; case EvqGlobal: @@ -5780,6 +5784,22 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi publicType.shaderQualifiers.postDepthCoverage = true; return; } + /* id is transformed into lower case in the beginning of this function. */ + if (id == "non_coherent_color_attachment_readext") { + requireExtensions(loc, 1, &E_GL_EXT_shader_tile_image, "non_coherent_color_attachment_readEXT"); + publicType.shaderQualifiers.nonCoherentColorAttachmentReadEXT = true; + return; + } + if (id == "non_coherent_depth_attachment_readext") { + requireExtensions(loc, 1, &E_GL_EXT_shader_tile_image, "non_coherent_depth_attachment_readEXT"); + publicType.shaderQualifiers.nonCoherentDepthAttachmentReadEXT = true; + return; + } + if (id == "non_coherent_stencil_attachment_readext") { + requireExtensions(loc, 1, &E_GL_EXT_shader_tile_image, "non_coherent_stencil_attachment_readEXT"); + publicType.shaderQualifiers.nonCoherentStencilAttachmentReadEXT = true; + return; + } for (TLayoutDepth depth = (TLayoutDepth)(EldNone + 1); depth < EldCount; depth = (TLayoutDepth)(depth+1)) { if (id == TQualifier::getLayoutDepthString(depth)) { requireProfile(loc, ECoreProfile | ECompatibilityProfile, "depth layout qualifier"); @@ -6474,6 +6494,8 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqBuffer: if (type.getBasicType() == EbtBlock) error(loc, "cannot apply to uniform or buffer block", "location", ""); + else if (type.getBasicType() == EbtSampler && type.getSampler().isAttachmentEXT()) + error(loc, "only applies to", "location", "%s with storage tileImageEXT", type.getBasicTypeString().c_str()); break; case EvqtaskPayloadSharedEXT: error(loc, "cannot apply to taskPayloadSharedEXT", "location", ""); @@ -6487,6 +6509,8 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqHitObjectAttrNV: break; #endif + case EvqTileImageEXT: + break; default: error(loc, "can only apply to uniform, buffer, in, or out storage qualifiers", "location", ""); break; @@ -6496,10 +6520,10 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) int repeated = intermediate.addUsedLocation(qualifier, type, typeCollision); if (repeated >= 0 && ! typeCollision) error(loc, "overlapping use of location", "location", "%d", repeated); - // "fragment-shader outputs ... if two variables are placed within the same + // "fragment-shader outputs/tileImageEXT ... if two variables are placed within the same // location, they must have the same underlying type (floating-point or integer)" - if (typeCollision && language == EShLangFragment && qualifier.isPipeOutput()) - error(loc, "fragment outputs sharing the same location must be the same basic type", "location", "%d", repeated); + if (typeCollision && language == EShLangFragment && (qualifier.isPipeOutput() || qualifier.storage == EvqTileImageEXT)) + error(loc, "fragment outputs or tileImageEXTs sharing the same location", "location", "%d must be the same basic type", repeated); } #ifndef GLSLANG_WEB @@ -6583,7 +6607,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) !qualifier.hasAttachment() && !qualifier.hasBufferReference()) error(loc, "uniform/buffer blocks require layout(binding=X)", "binding", ""); - else if (spvVersion.vulkan > 0 && type.getBasicType() == EbtSampler) + else if (spvVersion.vulkan > 0 && type.getBasicType() == EbtSampler && !type.getSampler().isAttachmentEXT()) error(loc, "sampler/texture/image requires layout(binding=X)", "binding", ""); } } @@ -6645,6 +6669,8 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) // input attachment if (type.isSubpass()) { + if (extensionTurnedOn(E_GL_EXT_shader_tile_image)) + error(loc, "can not be used with GL_EXT_shader_tile_image enabled", type.getSampler().getString().c_str(), ""); if (! qualifier.hasAttachment()) error(loc, "requires an input_attachment_index layout qualifier", "subpass", ""); } else { @@ -6812,6 +6838,14 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier error(loc, "cannot be used with shaderRecordNV", "set", ""); } + + if (qualifier.storage == EvqTileImageEXT) { + if (qualifier.hasSet()) + error(loc, "cannot be used with tileImageEXT", "set", ""); + if (!qualifier.hasLocation()) + error(loc, "can only be used with an explicit location", "tileImageEXT", ""); + } + if (qualifier.storage == EvqHitAttr && qualifier.hasLayout()) { error(loc, "cannot apply layout qualifiers to hitAttributeNV variable", "hitAttributeNV", ""); } @@ -6851,6 +6885,12 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua error(loc, message, "early_fragment_tests", ""); if (shaderQualifiers.postDepthCoverage) error(loc, message, "post_depth_coverage", ""); + if (shaderQualifiers.nonCoherentColorAttachmentReadEXT) + error(loc, message, "non_coherent_color_attachment_readEXT", ""); + if (shaderQualifiers.nonCoherentDepthAttachmentReadEXT) + error(loc, message, "non_coherent_depth_attachment_readEXT", ""); + if (shaderQualifiers.nonCoherentStencilAttachmentReadEXT) + error(loc, message, "non_coherent_stencil_attachment_readEXT", ""); if (shaderQualifiers.primitives != TQualifier::layoutNotSet) { if (language == EShLangMesh) error(loc, message, "max_primitives", ""); @@ -9460,6 +9500,24 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con else error(loc, "can only apply to 'in'", "post_coverage_coverage", ""); } + if (publicType.shaderQualifiers.nonCoherentColorAttachmentReadEXT) { + if (publicType.qualifier.storage == EvqVaryingIn) + intermediate.setNonCoherentColorAttachmentReadEXT(); + else + error(loc, "can only apply to 'in'", "non_coherent_color_attachment_readEXT", ""); + } + if (publicType.shaderQualifiers.nonCoherentDepthAttachmentReadEXT) { + if (publicType.qualifier.storage == EvqVaryingIn) + intermediate.setNonCoherentDepthAttachmentReadEXT(); + else + error(loc, "can only apply to 'in'", "non_coherent_depth_attachment_readEXT", ""); + } + if (publicType.shaderQualifiers.nonCoherentStencilAttachmentReadEXT) { + if (publicType.qualifier.storage == EvqVaryingIn) + intermediate.setNonCoherentStencilAttachmentReadEXT(); + else + error(loc, "can only apply to 'in'", "non_coherent_stencil_attachment_readEXT", ""); + } if (publicType.shaderQualifiers.hasBlendEquation()) { if (publicType.qualifier.storage != EvqVaryingOut) error(loc, "can only apply to 'out'", "blend equation", ""); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index c20048a9ee..bb21c20345 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -343,6 +343,7 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["const"] = CONST; (*KeywordMap)["uniform"] = UNIFORM; + (*KeywordMap)["tileImageEXT"] = TILEIMAGEEXT; (*KeywordMap)["buffer"] = BUFFER; (*KeywordMap)["in"] = IN; (*KeywordMap)["out"] = OUT; @@ -685,6 +686,10 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["texture2DRect"] = TEXTURE2DRECT; (*KeywordMap)["texture1DArray"] = TEXTURE1DARRAY; + (*KeywordMap)["attachmentEXT"] = ATTACHMENTEXT; + (*KeywordMap)["iattachmentEXT"] = IATTACHMENTEXT; + (*KeywordMap)["uattachmentEXT"] = UATTACHMENTEXT; + (*KeywordMap)["subpassInput"] = SUBPASSINPUT; (*KeywordMap)["subpassInputMS"] = SUBPASSINPUTMS; (*KeywordMap)["isubpassInput"] = ISUBPASSINPUT; @@ -942,6 +947,7 @@ int TScanContext::tokenizeIdentifier() switch (keyword) { case CONST: case UNIFORM: + case TILEIMAGEEXT: case IN: case OUT: case INOUT: @@ -1658,6 +1664,9 @@ int TScanContext::tokenizeIdentifier() case ISUBPASSINPUTMS: case USUBPASSINPUT: case USUBPASSINPUTMS: + case ATTACHMENTEXT: + case IATTACHMENTEXT: + case UATTACHMENTEXT: if (parseContext.spvVersion.vulkan > 0) return keyword; else diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 9e7bda02cb..71032c8d10 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -355,6 +355,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_mesh_shader] = EBhDisable; extensionBehavior[E_GL_EXT_opacity_micromap] = EBhDisable; extensionBehavior[E_GL_EXT_ray_tracing_position_fetch] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_tile_image] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 0ff1df3edc..01b8b5d3ca 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -328,6 +328,8 @@ const char* const E_GL_EXT_terminate_invocation = "GL_EXT_terminate_invocation"; const char* const E_GL_EXT_shader_atomic_float = "GL_EXT_shader_atomic_float"; const char* const E_GL_EXT_shader_atomic_float2 = "GL_EXT_shader_atomic_float2"; +const char* const E_GL_EXT_shader_tile_image = "GL_EXT_shader_tile_image"; + // Arrays of extensions for the above AEP duplications const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader }; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 914919f92e..c3fea4fe65 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -279,6 +279,7 @@ GLSLANG_WEB_EXCLUDE_ON %token SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID %token SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING %token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL +%token ATTACHMENTEXT IATTACHMENTEXT UATTACHMENTEXT GLSLANG_WEB_EXCLUDE_OFF @@ -304,7 +305,7 @@ GLSLANG_WEB_EXCLUDE_OFF %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT %token TERMINATE_INVOCATION %token TERMINATE_RAY IGNORE_INTERSECTION -%token UNIFORM SHARED BUFFER +%token UNIFORM SHARED BUFFER TILEIMAGEEXT %token FLAT SMOOTH LAYOUT GLSLANG_WEB_EXCLUDE_ON @@ -1476,6 +1477,11 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqUniform; } + | TILEIMAGEEXT { + parseContext.globalCheck($1.loc, "tileImageEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqTileImageEXT; + } | SHARED { parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -3446,6 +3452,24 @@ GLSLANG_WEB_EXCLUDE_ON $$.sampler.set(EbtFloat, Esd2D); $$.sampler.yuv = true; } + | ATTACHMENTEXT { + parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setAttachmentEXT(EbtFloat); + } + | IATTACHMENTEXT { + parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setAttachmentEXT(EbtInt); + } + | UATTACHMENTEXT { + parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setAttachmentEXT(EbtUint); + } | SUBPASSINPUT { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 1eec08ee60..362c13aa9b 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -279,6 +279,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID %token SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING %token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL +%token ATTACHMENTEXT IATTACHMENTEXT UATTACHMENTEXT @@ -304,7 +305,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT %token TERMINATE_INVOCATION %token TERMINATE_RAY IGNORE_INTERSECTION -%token UNIFORM SHARED BUFFER +%token UNIFORM SHARED BUFFER TILEIMAGEEXT %token FLAT SMOOTH LAYOUT @@ -1476,6 +1477,11 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqUniform; } + | TILEIMAGEEXT { + parseContext.globalCheck($1.loc, "tileImageEXT"); + $$.init($1.loc); + $$.qualifier.storage = EvqTileImageEXT; + } | SHARED { parseContext.globalCheck($1.loc, "shared"); parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -3446,6 +3452,24 @@ type_specifier_nonarray $$.sampler.set(EbtFloat, Esd2D); $$.sampler.yuv = true; } + | ATTACHMENTEXT { + parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setAttachmentEXT(EbtFloat); + } + | IATTACHMENTEXT { + parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setAttachmentEXT(EbtInt); + } + | UATTACHMENTEXT { + parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtSampler; + $$.sampler.setAttachmentEXT(EbtUint); + } | SUBPASSINPUT { parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index b79f699dfe..8ff2af3483 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -450,269 +450,273 @@ enum yysymbol_kind_t YYSYMBOL_SPIRV_STORAGE_CLASS = 326, /* SPIRV_STORAGE_CLASS */ YYSYMBOL_SPIRV_BY_REFERENCE = 327, /* SPIRV_BY_REFERENCE */ YYSYMBOL_SPIRV_LITERAL = 328, /* SPIRV_LITERAL */ - YYSYMBOL_LEFT_OP = 329, /* LEFT_OP */ - YYSYMBOL_RIGHT_OP = 330, /* RIGHT_OP */ - YYSYMBOL_INC_OP = 331, /* INC_OP */ - YYSYMBOL_DEC_OP = 332, /* DEC_OP */ - YYSYMBOL_LE_OP = 333, /* LE_OP */ - YYSYMBOL_GE_OP = 334, /* GE_OP */ - YYSYMBOL_EQ_OP = 335, /* EQ_OP */ - YYSYMBOL_NE_OP = 336, /* NE_OP */ - YYSYMBOL_AND_OP = 337, /* AND_OP */ - YYSYMBOL_OR_OP = 338, /* OR_OP */ - YYSYMBOL_XOR_OP = 339, /* XOR_OP */ - YYSYMBOL_MUL_ASSIGN = 340, /* MUL_ASSIGN */ - YYSYMBOL_DIV_ASSIGN = 341, /* DIV_ASSIGN */ - YYSYMBOL_ADD_ASSIGN = 342, /* ADD_ASSIGN */ - YYSYMBOL_MOD_ASSIGN = 343, /* MOD_ASSIGN */ - YYSYMBOL_LEFT_ASSIGN = 344, /* LEFT_ASSIGN */ - YYSYMBOL_RIGHT_ASSIGN = 345, /* RIGHT_ASSIGN */ - YYSYMBOL_AND_ASSIGN = 346, /* AND_ASSIGN */ - YYSYMBOL_XOR_ASSIGN = 347, /* XOR_ASSIGN */ - YYSYMBOL_OR_ASSIGN = 348, /* OR_ASSIGN */ - YYSYMBOL_SUB_ASSIGN = 349, /* SUB_ASSIGN */ - YYSYMBOL_STRING_LITERAL = 350, /* STRING_LITERAL */ - YYSYMBOL_LEFT_PAREN = 351, /* LEFT_PAREN */ - YYSYMBOL_RIGHT_PAREN = 352, /* RIGHT_PAREN */ - YYSYMBOL_LEFT_BRACKET = 353, /* LEFT_BRACKET */ - YYSYMBOL_RIGHT_BRACKET = 354, /* RIGHT_BRACKET */ - YYSYMBOL_LEFT_BRACE = 355, /* LEFT_BRACE */ - YYSYMBOL_RIGHT_BRACE = 356, /* RIGHT_BRACE */ - YYSYMBOL_DOT = 357, /* DOT */ - YYSYMBOL_COMMA = 358, /* COMMA */ - YYSYMBOL_COLON = 359, /* COLON */ - YYSYMBOL_EQUAL = 360, /* EQUAL */ - YYSYMBOL_SEMICOLON = 361, /* SEMICOLON */ - YYSYMBOL_BANG = 362, /* BANG */ - YYSYMBOL_DASH = 363, /* DASH */ - YYSYMBOL_TILDE = 364, /* TILDE */ - YYSYMBOL_PLUS = 365, /* PLUS */ - YYSYMBOL_STAR = 366, /* STAR */ - YYSYMBOL_SLASH = 367, /* SLASH */ - YYSYMBOL_PERCENT = 368, /* PERCENT */ - YYSYMBOL_LEFT_ANGLE = 369, /* LEFT_ANGLE */ - YYSYMBOL_RIGHT_ANGLE = 370, /* RIGHT_ANGLE */ - YYSYMBOL_VERTICAL_BAR = 371, /* VERTICAL_BAR */ - YYSYMBOL_CARET = 372, /* CARET */ - YYSYMBOL_AMPERSAND = 373, /* AMPERSAND */ - YYSYMBOL_QUESTION = 374, /* QUESTION */ - YYSYMBOL_INVARIANT = 375, /* INVARIANT */ - YYSYMBOL_HIGH_PRECISION = 376, /* HIGH_PRECISION */ - YYSYMBOL_MEDIUM_PRECISION = 377, /* MEDIUM_PRECISION */ - YYSYMBOL_LOW_PRECISION = 378, /* LOW_PRECISION */ - YYSYMBOL_PRECISION = 379, /* PRECISION */ - YYSYMBOL_PACKED = 380, /* PACKED */ - YYSYMBOL_RESOURCE = 381, /* RESOURCE */ - YYSYMBOL_SUPERP = 382, /* SUPERP */ - YYSYMBOL_FLOATCONSTANT = 383, /* FLOATCONSTANT */ - YYSYMBOL_INTCONSTANT = 384, /* INTCONSTANT */ - YYSYMBOL_UINTCONSTANT = 385, /* UINTCONSTANT */ - YYSYMBOL_BOOLCONSTANT = 386, /* BOOLCONSTANT */ - YYSYMBOL_IDENTIFIER = 387, /* IDENTIFIER */ - YYSYMBOL_TYPE_NAME = 388, /* TYPE_NAME */ - YYSYMBOL_CENTROID = 389, /* CENTROID */ - YYSYMBOL_IN = 390, /* IN */ - YYSYMBOL_OUT = 391, /* OUT */ - YYSYMBOL_INOUT = 392, /* INOUT */ - YYSYMBOL_STRUCT = 393, /* STRUCT */ - YYSYMBOL_VOID = 394, /* VOID */ - YYSYMBOL_WHILE = 395, /* WHILE */ - YYSYMBOL_BREAK = 396, /* BREAK */ - YYSYMBOL_CONTINUE = 397, /* CONTINUE */ - YYSYMBOL_DO = 398, /* DO */ - YYSYMBOL_ELSE = 399, /* ELSE */ - YYSYMBOL_FOR = 400, /* FOR */ - YYSYMBOL_IF = 401, /* IF */ - YYSYMBOL_DISCARD = 402, /* DISCARD */ - YYSYMBOL_RETURN = 403, /* RETURN */ - YYSYMBOL_SWITCH = 404, /* SWITCH */ - YYSYMBOL_CASE = 405, /* CASE */ - YYSYMBOL_DEFAULT = 406, /* DEFAULT */ - YYSYMBOL_TERMINATE_INVOCATION = 407, /* TERMINATE_INVOCATION */ - YYSYMBOL_TERMINATE_RAY = 408, /* TERMINATE_RAY */ - YYSYMBOL_IGNORE_INTERSECTION = 409, /* IGNORE_INTERSECTION */ - YYSYMBOL_UNIFORM = 410, /* UNIFORM */ - YYSYMBOL_SHARED = 411, /* SHARED */ - YYSYMBOL_BUFFER = 412, /* BUFFER */ - YYSYMBOL_FLAT = 413, /* FLAT */ - YYSYMBOL_SMOOTH = 414, /* SMOOTH */ - YYSYMBOL_LAYOUT = 415, /* LAYOUT */ - YYSYMBOL_DOUBLECONSTANT = 416, /* DOUBLECONSTANT */ - YYSYMBOL_INT16CONSTANT = 417, /* INT16CONSTANT */ - YYSYMBOL_UINT16CONSTANT = 418, /* UINT16CONSTANT */ - YYSYMBOL_FLOAT16CONSTANT = 419, /* FLOAT16CONSTANT */ - YYSYMBOL_INT32CONSTANT = 420, /* INT32CONSTANT */ - YYSYMBOL_UINT32CONSTANT = 421, /* UINT32CONSTANT */ - YYSYMBOL_INT64CONSTANT = 422, /* INT64CONSTANT */ - YYSYMBOL_UINT64CONSTANT = 423, /* UINT64CONSTANT */ - YYSYMBOL_SUBROUTINE = 424, /* SUBROUTINE */ - YYSYMBOL_DEMOTE = 425, /* DEMOTE */ - YYSYMBOL_PAYLOADNV = 426, /* PAYLOADNV */ - YYSYMBOL_PAYLOADINNV = 427, /* PAYLOADINNV */ - YYSYMBOL_HITATTRNV = 428, /* HITATTRNV */ - YYSYMBOL_CALLDATANV = 429, /* CALLDATANV */ - YYSYMBOL_CALLDATAINNV = 430, /* CALLDATAINNV */ - YYSYMBOL_PAYLOADEXT = 431, /* PAYLOADEXT */ - YYSYMBOL_PAYLOADINEXT = 432, /* PAYLOADINEXT */ - YYSYMBOL_HITATTREXT = 433, /* HITATTREXT */ - YYSYMBOL_CALLDATAEXT = 434, /* CALLDATAEXT */ - YYSYMBOL_CALLDATAINEXT = 435, /* CALLDATAINEXT */ - YYSYMBOL_PATCH = 436, /* PATCH */ - YYSYMBOL_SAMPLE = 437, /* SAMPLE */ - YYSYMBOL_NONUNIFORM = 438, /* NONUNIFORM */ - YYSYMBOL_COHERENT = 439, /* COHERENT */ - YYSYMBOL_VOLATILE = 440, /* VOLATILE */ - YYSYMBOL_RESTRICT = 441, /* RESTRICT */ - YYSYMBOL_READONLY = 442, /* READONLY */ - YYSYMBOL_WRITEONLY = 443, /* WRITEONLY */ - YYSYMBOL_DEVICECOHERENT = 444, /* DEVICECOHERENT */ - YYSYMBOL_QUEUEFAMILYCOHERENT = 445, /* QUEUEFAMILYCOHERENT */ - YYSYMBOL_WORKGROUPCOHERENT = 446, /* WORKGROUPCOHERENT */ - YYSYMBOL_SUBGROUPCOHERENT = 447, /* SUBGROUPCOHERENT */ - YYSYMBOL_NONPRIVATE = 448, /* NONPRIVATE */ - YYSYMBOL_SHADERCALLCOHERENT = 449, /* SHADERCALLCOHERENT */ - YYSYMBOL_NOPERSPECTIVE = 450, /* NOPERSPECTIVE */ - YYSYMBOL_EXPLICITINTERPAMD = 451, /* EXPLICITINTERPAMD */ - YYSYMBOL_PERVERTEXEXT = 452, /* PERVERTEXEXT */ - YYSYMBOL_PERVERTEXNV = 453, /* PERVERTEXNV */ - YYSYMBOL_PERPRIMITIVENV = 454, /* PERPRIMITIVENV */ - YYSYMBOL_PERVIEWNV = 455, /* PERVIEWNV */ - YYSYMBOL_PERTASKNV = 456, /* PERTASKNV */ - YYSYMBOL_PERPRIMITIVEEXT = 457, /* PERPRIMITIVEEXT */ - YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 458, /* TASKPAYLOADWORKGROUPEXT */ - YYSYMBOL_PRECISE = 459, /* PRECISE */ - YYSYMBOL_YYACCEPT = 460, /* $accept */ - YYSYMBOL_variable_identifier = 461, /* variable_identifier */ - YYSYMBOL_primary_expression = 462, /* primary_expression */ - YYSYMBOL_postfix_expression = 463, /* postfix_expression */ - YYSYMBOL_integer_expression = 464, /* integer_expression */ - YYSYMBOL_function_call = 465, /* function_call */ - YYSYMBOL_function_call_or_method = 466, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 467, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 468, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 469, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 470, /* function_call_header */ - YYSYMBOL_function_identifier = 471, /* function_identifier */ - YYSYMBOL_unary_expression = 472, /* unary_expression */ - YYSYMBOL_unary_operator = 473, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 474, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 475, /* additive_expression */ - YYSYMBOL_shift_expression = 476, /* shift_expression */ - YYSYMBOL_relational_expression = 477, /* relational_expression */ - YYSYMBOL_equality_expression = 478, /* equality_expression */ - YYSYMBOL_and_expression = 479, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 480, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 481, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 482, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 483, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 484, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 485, /* conditional_expression */ - YYSYMBOL_486_1 = 486, /* $@1 */ - YYSYMBOL_assignment_expression = 487, /* assignment_expression */ - YYSYMBOL_assignment_operator = 488, /* assignment_operator */ - YYSYMBOL_expression = 489, /* expression */ - YYSYMBOL_constant_expression = 490, /* constant_expression */ - YYSYMBOL_declaration = 491, /* declaration */ - YYSYMBOL_block_structure = 492, /* block_structure */ - YYSYMBOL_493_2 = 493, /* $@2 */ - YYSYMBOL_identifier_list = 494, /* identifier_list */ - YYSYMBOL_function_prototype = 495, /* function_prototype */ - YYSYMBOL_function_declarator = 496, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 497, /* function_header_with_parameters */ - YYSYMBOL_function_header = 498, /* function_header */ - YYSYMBOL_parameter_declarator = 499, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 500, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 501, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 502, /* init_declarator_list */ - YYSYMBOL_single_declaration = 503, /* single_declaration */ - YYSYMBOL_fully_specified_type = 504, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 505, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 506, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 507, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 508, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 509, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 510, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 511, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 512, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 513, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 514, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 515, /* type_name_list */ - YYSYMBOL_type_specifier = 516, /* type_specifier */ - YYSYMBOL_array_specifier = 517, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 518, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 519, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 520, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 521, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 522, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 523, /* struct_specifier */ - YYSYMBOL_524_3 = 524, /* $@3 */ - YYSYMBOL_525_4 = 525, /* $@4 */ - YYSYMBOL_struct_declaration_list = 526, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 527, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 528, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 529, /* struct_declarator */ - YYSYMBOL_initializer = 530, /* initializer */ - YYSYMBOL_initializer_list = 531, /* initializer_list */ - YYSYMBOL_declaration_statement = 532, /* declaration_statement */ - YYSYMBOL_statement = 533, /* statement */ - YYSYMBOL_simple_statement = 534, /* simple_statement */ - YYSYMBOL_demote_statement = 535, /* demote_statement */ - YYSYMBOL_compound_statement = 536, /* compound_statement */ - YYSYMBOL_537_5 = 537, /* $@5 */ - YYSYMBOL_538_6 = 538, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 539, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 540, /* statement_scoped */ - YYSYMBOL_541_7 = 541, /* $@7 */ - YYSYMBOL_542_8 = 542, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 543, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 544, /* statement_list */ - YYSYMBOL_expression_statement = 545, /* expression_statement */ - YYSYMBOL_selection_statement = 546, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 547, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 548, /* selection_rest_statement */ - YYSYMBOL_condition = 549, /* condition */ - YYSYMBOL_switch_statement = 550, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 551, /* switch_statement_nonattributed */ - YYSYMBOL_552_9 = 552, /* $@9 */ - YYSYMBOL_switch_statement_list = 553, /* switch_statement_list */ - YYSYMBOL_case_label = 554, /* case_label */ - YYSYMBOL_iteration_statement = 555, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 556, /* iteration_statement_nonattributed */ - YYSYMBOL_557_10 = 557, /* $@10 */ - YYSYMBOL_558_11 = 558, /* $@11 */ - YYSYMBOL_559_12 = 559, /* $@12 */ - YYSYMBOL_for_init_statement = 560, /* for_init_statement */ - YYSYMBOL_conditionopt = 561, /* conditionopt */ - YYSYMBOL_for_rest_statement = 562, /* for_rest_statement */ - YYSYMBOL_jump_statement = 563, /* jump_statement */ - YYSYMBOL_translation_unit = 564, /* translation_unit */ - YYSYMBOL_external_declaration = 565, /* external_declaration */ - YYSYMBOL_function_definition = 566, /* function_definition */ - YYSYMBOL_567_13 = 567, /* $@13 */ - YYSYMBOL_attribute = 568, /* attribute */ - YYSYMBOL_attribute_list = 569, /* attribute_list */ - YYSYMBOL_single_attribute = 570, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 571, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 572, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 573, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 574, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 575, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 576, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 577, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 578, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 579, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 580, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 581, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 582, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 583, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_id_parameter = 584, /* spirv_decorate_id_parameter */ - YYSYMBOL_spirv_decorate_string_parameter_list = 585, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 586, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 587, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 588, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 589, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 590, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 591 /* spirv_instruction_qualifier_id */ + YYSYMBOL_ATTACHMENTEXT = 329, /* ATTACHMENTEXT */ + YYSYMBOL_IATTACHMENTEXT = 330, /* IATTACHMENTEXT */ + YYSYMBOL_UATTACHMENTEXT = 331, /* UATTACHMENTEXT */ + YYSYMBOL_LEFT_OP = 332, /* LEFT_OP */ + YYSYMBOL_RIGHT_OP = 333, /* RIGHT_OP */ + YYSYMBOL_INC_OP = 334, /* INC_OP */ + YYSYMBOL_DEC_OP = 335, /* DEC_OP */ + YYSYMBOL_LE_OP = 336, /* LE_OP */ + YYSYMBOL_GE_OP = 337, /* GE_OP */ + YYSYMBOL_EQ_OP = 338, /* EQ_OP */ + YYSYMBOL_NE_OP = 339, /* NE_OP */ + YYSYMBOL_AND_OP = 340, /* AND_OP */ + YYSYMBOL_OR_OP = 341, /* OR_OP */ + YYSYMBOL_XOR_OP = 342, /* XOR_OP */ + YYSYMBOL_MUL_ASSIGN = 343, /* MUL_ASSIGN */ + YYSYMBOL_DIV_ASSIGN = 344, /* DIV_ASSIGN */ + YYSYMBOL_ADD_ASSIGN = 345, /* ADD_ASSIGN */ + YYSYMBOL_MOD_ASSIGN = 346, /* MOD_ASSIGN */ + YYSYMBOL_LEFT_ASSIGN = 347, /* LEFT_ASSIGN */ + YYSYMBOL_RIGHT_ASSIGN = 348, /* RIGHT_ASSIGN */ + YYSYMBOL_AND_ASSIGN = 349, /* AND_ASSIGN */ + YYSYMBOL_XOR_ASSIGN = 350, /* XOR_ASSIGN */ + YYSYMBOL_OR_ASSIGN = 351, /* OR_ASSIGN */ + YYSYMBOL_SUB_ASSIGN = 352, /* SUB_ASSIGN */ + YYSYMBOL_STRING_LITERAL = 353, /* STRING_LITERAL */ + YYSYMBOL_LEFT_PAREN = 354, /* LEFT_PAREN */ + YYSYMBOL_RIGHT_PAREN = 355, /* RIGHT_PAREN */ + YYSYMBOL_LEFT_BRACKET = 356, /* LEFT_BRACKET */ + YYSYMBOL_RIGHT_BRACKET = 357, /* RIGHT_BRACKET */ + YYSYMBOL_LEFT_BRACE = 358, /* LEFT_BRACE */ + YYSYMBOL_RIGHT_BRACE = 359, /* RIGHT_BRACE */ + YYSYMBOL_DOT = 360, /* DOT */ + YYSYMBOL_COMMA = 361, /* COMMA */ + YYSYMBOL_COLON = 362, /* COLON */ + YYSYMBOL_EQUAL = 363, /* EQUAL */ + YYSYMBOL_SEMICOLON = 364, /* SEMICOLON */ + YYSYMBOL_BANG = 365, /* BANG */ + YYSYMBOL_DASH = 366, /* DASH */ + YYSYMBOL_TILDE = 367, /* TILDE */ + YYSYMBOL_PLUS = 368, /* PLUS */ + YYSYMBOL_STAR = 369, /* STAR */ + YYSYMBOL_SLASH = 370, /* SLASH */ + YYSYMBOL_PERCENT = 371, /* PERCENT */ + YYSYMBOL_LEFT_ANGLE = 372, /* LEFT_ANGLE */ + YYSYMBOL_RIGHT_ANGLE = 373, /* RIGHT_ANGLE */ + YYSYMBOL_VERTICAL_BAR = 374, /* VERTICAL_BAR */ + YYSYMBOL_CARET = 375, /* CARET */ + YYSYMBOL_AMPERSAND = 376, /* AMPERSAND */ + YYSYMBOL_QUESTION = 377, /* QUESTION */ + YYSYMBOL_INVARIANT = 378, /* INVARIANT */ + YYSYMBOL_HIGH_PRECISION = 379, /* HIGH_PRECISION */ + YYSYMBOL_MEDIUM_PRECISION = 380, /* MEDIUM_PRECISION */ + YYSYMBOL_LOW_PRECISION = 381, /* LOW_PRECISION */ + YYSYMBOL_PRECISION = 382, /* PRECISION */ + YYSYMBOL_PACKED = 383, /* PACKED */ + YYSYMBOL_RESOURCE = 384, /* RESOURCE */ + YYSYMBOL_SUPERP = 385, /* SUPERP */ + YYSYMBOL_FLOATCONSTANT = 386, /* FLOATCONSTANT */ + YYSYMBOL_INTCONSTANT = 387, /* INTCONSTANT */ + YYSYMBOL_UINTCONSTANT = 388, /* UINTCONSTANT */ + YYSYMBOL_BOOLCONSTANT = 389, /* BOOLCONSTANT */ + YYSYMBOL_IDENTIFIER = 390, /* IDENTIFIER */ + YYSYMBOL_TYPE_NAME = 391, /* TYPE_NAME */ + YYSYMBOL_CENTROID = 392, /* CENTROID */ + YYSYMBOL_IN = 393, /* IN */ + YYSYMBOL_OUT = 394, /* OUT */ + YYSYMBOL_INOUT = 395, /* INOUT */ + YYSYMBOL_STRUCT = 396, /* STRUCT */ + YYSYMBOL_VOID = 397, /* VOID */ + YYSYMBOL_WHILE = 398, /* WHILE */ + YYSYMBOL_BREAK = 399, /* BREAK */ + YYSYMBOL_CONTINUE = 400, /* CONTINUE */ + YYSYMBOL_DO = 401, /* DO */ + YYSYMBOL_ELSE = 402, /* ELSE */ + YYSYMBOL_FOR = 403, /* FOR */ + YYSYMBOL_IF = 404, /* IF */ + YYSYMBOL_DISCARD = 405, /* DISCARD */ + YYSYMBOL_RETURN = 406, /* RETURN */ + YYSYMBOL_SWITCH = 407, /* SWITCH */ + YYSYMBOL_CASE = 408, /* CASE */ + YYSYMBOL_DEFAULT = 409, /* DEFAULT */ + YYSYMBOL_TERMINATE_INVOCATION = 410, /* TERMINATE_INVOCATION */ + YYSYMBOL_TERMINATE_RAY = 411, /* TERMINATE_RAY */ + YYSYMBOL_IGNORE_INTERSECTION = 412, /* IGNORE_INTERSECTION */ + YYSYMBOL_UNIFORM = 413, /* UNIFORM */ + YYSYMBOL_SHARED = 414, /* SHARED */ + YYSYMBOL_BUFFER = 415, /* BUFFER */ + YYSYMBOL_TILEIMAGEEXT = 416, /* TILEIMAGEEXT */ + YYSYMBOL_FLAT = 417, /* FLAT */ + YYSYMBOL_SMOOTH = 418, /* SMOOTH */ + YYSYMBOL_LAYOUT = 419, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 420, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 421, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 422, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 423, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 424, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 425, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 426, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 427, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 428, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 429, /* DEMOTE */ + YYSYMBOL_PAYLOADNV = 430, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 431, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 432, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 433, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 434, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 435, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 436, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 437, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 438, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 439, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 440, /* PATCH */ + YYSYMBOL_SAMPLE = 441, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 442, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 443, /* COHERENT */ + YYSYMBOL_VOLATILE = 444, /* VOLATILE */ + YYSYMBOL_RESTRICT = 445, /* RESTRICT */ + YYSYMBOL_READONLY = 446, /* READONLY */ + YYSYMBOL_WRITEONLY = 447, /* WRITEONLY */ + YYSYMBOL_DEVICECOHERENT = 448, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 449, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 450, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 451, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 452, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 453, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 454, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 455, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXEXT = 456, /* PERVERTEXEXT */ + YYSYMBOL_PERVERTEXNV = 457, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 458, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 459, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 460, /* PERTASKNV */ + YYSYMBOL_PERPRIMITIVEEXT = 461, /* PERPRIMITIVEEXT */ + YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 462, /* TASKPAYLOADWORKGROUPEXT */ + YYSYMBOL_PRECISE = 463, /* PRECISE */ + YYSYMBOL_YYACCEPT = 464, /* $accept */ + YYSYMBOL_variable_identifier = 465, /* variable_identifier */ + YYSYMBOL_primary_expression = 466, /* primary_expression */ + YYSYMBOL_postfix_expression = 467, /* postfix_expression */ + YYSYMBOL_integer_expression = 468, /* integer_expression */ + YYSYMBOL_function_call = 469, /* function_call */ + YYSYMBOL_function_call_or_method = 470, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 471, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 472, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 473, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 474, /* function_call_header */ + YYSYMBOL_function_identifier = 475, /* function_identifier */ + YYSYMBOL_unary_expression = 476, /* unary_expression */ + YYSYMBOL_unary_operator = 477, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 478, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 479, /* additive_expression */ + YYSYMBOL_shift_expression = 480, /* shift_expression */ + YYSYMBOL_relational_expression = 481, /* relational_expression */ + YYSYMBOL_equality_expression = 482, /* equality_expression */ + YYSYMBOL_and_expression = 483, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 484, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 485, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 486, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 487, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 488, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 489, /* conditional_expression */ + YYSYMBOL_490_1 = 490, /* $@1 */ + YYSYMBOL_assignment_expression = 491, /* assignment_expression */ + YYSYMBOL_assignment_operator = 492, /* assignment_operator */ + YYSYMBOL_expression = 493, /* expression */ + YYSYMBOL_constant_expression = 494, /* constant_expression */ + YYSYMBOL_declaration = 495, /* declaration */ + YYSYMBOL_block_structure = 496, /* block_structure */ + YYSYMBOL_497_2 = 497, /* $@2 */ + YYSYMBOL_identifier_list = 498, /* identifier_list */ + YYSYMBOL_function_prototype = 499, /* function_prototype */ + YYSYMBOL_function_declarator = 500, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 501, /* function_header_with_parameters */ + YYSYMBOL_function_header = 502, /* function_header */ + YYSYMBOL_parameter_declarator = 503, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 504, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 505, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 506, /* init_declarator_list */ + YYSYMBOL_single_declaration = 507, /* single_declaration */ + YYSYMBOL_fully_specified_type = 508, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 509, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 510, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 511, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 512, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 513, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 514, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 515, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 516, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 517, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 518, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 519, /* type_name_list */ + YYSYMBOL_type_specifier = 520, /* type_specifier */ + YYSYMBOL_array_specifier = 521, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 522, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 523, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 524, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 525, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 526, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 527, /* struct_specifier */ + YYSYMBOL_528_3 = 528, /* $@3 */ + YYSYMBOL_529_4 = 529, /* $@4 */ + YYSYMBOL_struct_declaration_list = 530, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 531, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 532, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 533, /* struct_declarator */ + YYSYMBOL_initializer = 534, /* initializer */ + YYSYMBOL_initializer_list = 535, /* initializer_list */ + YYSYMBOL_declaration_statement = 536, /* declaration_statement */ + YYSYMBOL_statement = 537, /* statement */ + YYSYMBOL_simple_statement = 538, /* simple_statement */ + YYSYMBOL_demote_statement = 539, /* demote_statement */ + YYSYMBOL_compound_statement = 540, /* compound_statement */ + YYSYMBOL_541_5 = 541, /* $@5 */ + YYSYMBOL_542_6 = 542, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 543, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 544, /* statement_scoped */ + YYSYMBOL_545_7 = 545, /* $@7 */ + YYSYMBOL_546_8 = 546, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 547, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 548, /* statement_list */ + YYSYMBOL_expression_statement = 549, /* expression_statement */ + YYSYMBOL_selection_statement = 550, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 551, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 552, /* selection_rest_statement */ + YYSYMBOL_condition = 553, /* condition */ + YYSYMBOL_switch_statement = 554, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 555, /* switch_statement_nonattributed */ + YYSYMBOL_556_9 = 556, /* $@9 */ + YYSYMBOL_switch_statement_list = 557, /* switch_statement_list */ + YYSYMBOL_case_label = 558, /* case_label */ + YYSYMBOL_iteration_statement = 559, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 560, /* iteration_statement_nonattributed */ + YYSYMBOL_561_10 = 561, /* $@10 */ + YYSYMBOL_562_11 = 562, /* $@11 */ + YYSYMBOL_563_12 = 563, /* $@12 */ + YYSYMBOL_for_init_statement = 564, /* for_init_statement */ + YYSYMBOL_conditionopt = 565, /* conditionopt */ + YYSYMBOL_for_rest_statement = 566, /* for_rest_statement */ + YYSYMBOL_jump_statement = 567, /* jump_statement */ + YYSYMBOL_translation_unit = 568, /* translation_unit */ + YYSYMBOL_external_declaration = 569, /* external_declaration */ + YYSYMBOL_function_definition = 570, /* function_definition */ + YYSYMBOL_571_13 = 571, /* $@13 */ + YYSYMBOL_attribute = 572, /* attribute */ + YYSYMBOL_attribute_list = 573, /* attribute_list */ + YYSYMBOL_single_attribute = 574, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 575, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 576, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 577, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 578, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 579, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 580, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 581, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 582, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 583, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 584, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 585, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 586, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 587, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_id_parameter = 588, /* spirv_decorate_id_parameter */ + YYSYMBOL_spirv_decorate_string_parameter_list = 589, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 590, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 591, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 592, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 593, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 594, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 595 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -734,7 +738,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 738 "MachineIndependent/glslang_tab.cpp" +#line 742 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1038,21 +1042,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 447 +#define YYFINAL 451 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12562 +#define YYLAST 12669 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 460 +#define YYNTOKENS 464 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 132 /* YYNRULES -- Number of rules. */ -#define YYNRULES 693 +#define YYNRULES 697 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 939 +#define YYNSTATES 943 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 714 +#define YYMAXUTOK 718 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1137,83 +1141,83 @@ static const yytype_int16 yytranslate[] = 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459 + 455, 456, 457, 458, 459, 460, 461, 462, 463 }; #if YYDEBUG /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 393, 393, 399, 402, 407, 410, 413, 417, 421, - 424, 428, 432, 436, 440, 444, 448, 454, 462, 465, - 468, 471, 474, 479, 487, 494, 501, 507, 511, 518, - 521, 527, 534, 544, 552, 557, 585, 594, 600, 604, - 608, 628, 629, 630, 631, 637, 638, 643, 648, 657, - 658, 663, 671, 672, 678, 687, 688, 693, 698, 703, - 711, 712, 721, 733, 734, 743, 744, 753, 754, 763, - 764, 772, 773, 781, 782, 790, 791, 791, 809, 810, - 826, 830, 834, 838, 843, 847, 851, 855, 859, 863, - 867, 874, 877, 888, 895, 901, 908, 914, 919, 926, - 930, 934, 938, 943, 948, 957, 957, 968, 972, 979, - 983, 989, 995, 1005, 1008, 1015, 1023, 1043, 1066, 1081, - 1106, 1117, 1127, 1137, 1147, 1156, 1159, 1163, 1167, 1172, - 1180, 1187, 1192, 1197, 1202, 1211, 1221, 1248, 1257, 1264, - 1272, 1279, 1286, 1294, 1302, 1312, 1322, 1329, 1340, 1346, - 1349, 1356, 1360, 1364, 1373, 1383, 1386, 1397, 1400, 1403, - 1407, 1411, 1416, 1420, 1423, 1428, 1432, 1437, 1446, 1450, - 1455, 1461, 1467, 1474, 1479, 1487, 1493, 1505, 1519, 1525, - 1530, 1538, 1546, 1554, 1562, 1570, 1578, 1586, 1594, 1602, - 1609, 1616, 1620, 1625, 1630, 1635, 1640, 1645, 1650, 1654, - 1658, 1662, 1666, 1672, 1678, 1690, 1697, 1700, 1709, 1714, - 1724, 1729, 1737, 1741, 1751, 1754, 1760, 1766, 1773, 1783, - 1787, 1791, 1795, 1800, 1804, 1809, 1814, 1819, 1824, 1829, - 1834, 1839, 1844, 1849, 1855, 1861, 1867, 1872, 1877, 1882, - 1887, 1892, 1897, 1902, 1907, 1912, 1917, 1922, 1928, 1935, - 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, - 1990, 1998, 2006, 2014, 2020, 2026, 2032, 2038, 2044, 2050, + 0, 394, 394, 400, 403, 408, 411, 414, 418, 422, + 425, 429, 433, 437, 441, 445, 449, 455, 463, 466, + 469, 472, 475, 480, 488, 495, 502, 508, 512, 519, + 522, 528, 535, 545, 553, 558, 586, 595, 601, 605, + 609, 629, 630, 631, 632, 638, 639, 644, 649, 658, + 659, 664, 672, 673, 679, 688, 689, 694, 699, 704, + 712, 713, 722, 734, 735, 744, 745, 754, 755, 764, + 765, 773, 774, 782, 783, 791, 792, 792, 810, 811, + 827, 831, 835, 839, 844, 848, 852, 856, 860, 864, + 868, 875, 878, 889, 896, 902, 909, 915, 920, 927, + 931, 935, 939, 944, 949, 958, 958, 969, 973, 980, + 984, 990, 996, 1006, 1009, 1016, 1024, 1044, 1067, 1082, + 1107, 1118, 1128, 1138, 1148, 1157, 1160, 1164, 1168, 1173, + 1181, 1188, 1193, 1198, 1203, 1212, 1222, 1249, 1258, 1265, + 1273, 1280, 1287, 1295, 1303, 1313, 1323, 1330, 1341, 1347, + 1350, 1357, 1361, 1365, 1374, 1384, 1387, 1398, 1401, 1404, + 1408, 1412, 1417, 1421, 1424, 1429, 1433, 1438, 1447, 1451, + 1456, 1462, 1468, 1475, 1480, 1485, 1493, 1499, 1511, 1525, + 1531, 1536, 1544, 1552, 1560, 1568, 1576, 1584, 1592, 1600, + 1608, 1615, 1622, 1626, 1631, 1636, 1641, 1646, 1651, 1656, + 1660, 1664, 1668, 1672, 1678, 1684, 1696, 1703, 1706, 1715, + 1720, 1730, 1735, 1743, 1747, 1757, 1760, 1766, 1772, 1779, + 1789, 1793, 1797, 1801, 1806, 1810, 1815, 1820, 1825, 1830, + 1835, 1840, 1845, 1850, 1855, 1861, 1867, 1873, 1878, 1883, + 1888, 1893, 1898, 1903, 1908, 1913, 1918, 1923, 1928, 1934, + 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, 1981, 1986, + 1991, 1996, 2004, 2012, 2020, 2026, 2032, 2038, 2044, 2050, 2056, 2062, 2068, 2074, 2080, 2086, 2092, 2098, 2104, 2110, 2116, 2122, 2128, 2134, 2140, 2146, 2152, 2158, 2164, 2170, - 2176, 2182, 2188, 2194, 2200, 2206, 2212, 2220, 2228, 2236, - 2244, 2252, 2260, 2268, 2276, 2284, 2292, 2300, 2308, 2314, + 2176, 2182, 2188, 2194, 2200, 2206, 2212, 2218, 2226, 2234, + 2242, 2250, 2258, 2266, 2274, 2282, 2290, 2298, 2306, 2314, 2320, 2326, 2332, 2338, 2344, 2350, 2356, 2362, 2368, 2374, 2380, 2386, 2392, 2398, 2404, 2410, 2416, 2422, 2428, 2434, 2440, 2446, 2452, 2458, 2464, 2470, 2476, 2482, 2488, 2494, - 2500, 2506, 2512, 2518, 2524, 2528, 2532, 2536, 2541, 2547, - 2552, 2557, 2562, 2567, 2572, 2577, 2583, 2588, 2593, 2598, - 2603, 2608, 2614, 2620, 2626, 2632, 2638, 2644, 2650, 2656, - 2662, 2668, 2674, 2680, 2686, 2692, 2697, 2702, 2707, 2712, - 2717, 2722, 2728, 2733, 2738, 2743, 2748, 2753, 2758, 2763, - 2769, 2774, 2779, 2784, 2789, 2794, 2799, 2804, 2809, 2814, - 2819, 2824, 2829, 2834, 2839, 2845, 2850, 2855, 2861, 2867, - 2872, 2877, 2882, 2888, 2893, 2898, 2903, 2909, 2914, 2919, - 2924, 2930, 2935, 2940, 2945, 2951, 2957, 2963, 2969, 2974, - 2980, 2986, 2992, 2997, 3002, 3007, 3012, 3017, 3023, 3028, - 3033, 3038, 3044, 3049, 3054, 3059, 3065, 3070, 3075, 3080, - 3086, 3091, 3096, 3101, 3107, 3112, 3117, 3122, 3128, 3133, - 3138, 3143, 3149, 3154, 3159, 3164, 3170, 3175, 3180, 3185, - 3191, 3196, 3201, 3206, 3212, 3217, 3222, 3227, 3233, 3238, - 3243, 3248, 3254, 3259, 3264, 3269, 3275, 3280, 3285, 3290, - 3296, 3301, 3306, 3311, 3317, 3322, 3327, 3332, 3337, 3342, - 3347, 3352, 3357, 3362, 3367, 3372, 3377, 3382, 3387, 3392, - 3397, 3402, 3407, 3412, 3417, 3422, 3427, 3432, 3437, 3443, - 3449, 3455, 3461, 3468, 3475, 3481, 3487, 3493, 3499, 3505, - 3511, 3517, 3521, 3526, 3531, 3547, 3552, 3557, 3565, 3565, - 3576, 3576, 3586, 3589, 3602, 3624, 3651, 3655, 3661, 3666, - 3677, 3681, 3687, 3693, 3704, 3707, 3714, 3718, 3719, 3725, - 3726, 3727, 3728, 3729, 3730, 3731, 3733, 3739, 3748, 3749, - 3753, 3749, 3765, 3766, 3770, 3770, 3777, 3777, 3791, 3794, - 3802, 3810, 3821, 3822, 3826, 3830, 3838, 3845, 3849, 3857, - 3861, 3874, 3878, 3886, 3886, 3906, 3909, 3915, 3927, 3939, - 3943, 3951, 3951, 3966, 3966, 3984, 3984, 4005, 4008, 4014, - 4017, 4023, 4027, 4034, 4039, 4044, 4051, 4054, 4058, 4063, - 4067, 4077, 4081, 4090, 4093, 4097, 4106, 4106, 4148, 4153, - 4156, 4161, 4164, 4171, 4174, 4179, 4182, 4187, 4190, 4195, - 4198, 4203, 4207, 4212, 4216, 4221, 4225, 4232, 4235, 4240, - 4243, 4246, 4249, 4252, 4257, 4266, 4277, 4282, 4290, 4294, - 4299, 4303, 4308, 4312, 4317, 4321, 4328, 4331, 4336, 4339, - 4342, 4345, 4350, 4353, 4358, 4364, 4367, 4370, 4373, 4378, - 4382, 4387, 4391, 4396, 4400, 4407, 4410, 4415, 4420, 4423, - 4429, 4432, 4437, 4440 + 2500, 2506, 2512, 2518, 2524, 2530, 2534, 2538, 2542, 2547, + 2553, 2558, 2563, 2568, 2573, 2578, 2583, 2589, 2594, 2599, + 2604, 2609, 2614, 2620, 2626, 2632, 2638, 2644, 2650, 2656, + 2662, 2668, 2674, 2680, 2686, 2692, 2698, 2703, 2708, 2713, + 2718, 2723, 2728, 2734, 2739, 2744, 2749, 2754, 2759, 2764, + 2769, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, 2815, + 2820, 2825, 2830, 2835, 2840, 2845, 2851, 2856, 2861, 2867, + 2873, 2878, 2883, 2888, 2894, 2899, 2904, 2909, 2915, 2920, + 2925, 2930, 2936, 2941, 2946, 2951, 2957, 2963, 2969, 2975, + 2980, 2986, 2992, 2998, 3003, 3008, 3013, 3018, 3023, 3029, + 3034, 3039, 3044, 3050, 3055, 3060, 3065, 3071, 3076, 3081, + 3086, 3092, 3097, 3102, 3107, 3113, 3118, 3123, 3128, 3134, + 3139, 3144, 3149, 3155, 3160, 3165, 3170, 3176, 3181, 3186, + 3191, 3197, 3202, 3207, 3212, 3218, 3223, 3228, 3233, 3239, + 3244, 3249, 3254, 3260, 3265, 3270, 3275, 3281, 3286, 3291, + 3296, 3302, 3307, 3312, 3317, 3323, 3328, 3333, 3338, 3343, + 3348, 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, 3393, + 3398, 3403, 3408, 3413, 3418, 3423, 3428, 3433, 3438, 3443, + 3449, 3455, 3461, 3467, 3473, 3479, 3485, 3492, 3499, 3505, + 3511, 3517, 3523, 3529, 3535, 3541, 3545, 3550, 3555, 3571, + 3576, 3581, 3589, 3589, 3600, 3600, 3610, 3613, 3626, 3648, + 3675, 3679, 3685, 3690, 3701, 3705, 3711, 3717, 3728, 3731, + 3738, 3742, 3743, 3749, 3750, 3751, 3752, 3753, 3754, 3755, + 3757, 3763, 3772, 3773, 3777, 3773, 3789, 3790, 3794, 3794, + 3801, 3801, 3815, 3818, 3826, 3834, 3845, 3846, 3850, 3854, + 3862, 3869, 3873, 3881, 3885, 3898, 3902, 3910, 3910, 3930, + 3933, 3939, 3951, 3963, 3967, 3975, 3975, 3990, 3990, 4008, + 4008, 4029, 4032, 4038, 4041, 4047, 4051, 4058, 4063, 4068, + 4075, 4078, 4082, 4087, 4091, 4101, 4105, 4114, 4117, 4121, + 4130, 4130, 4172, 4177, 4180, 4185, 4188, 4195, 4198, 4203, + 4206, 4211, 4214, 4219, 4222, 4227, 4231, 4236, 4240, 4245, + 4249, 4256, 4259, 4264, 4267, 4270, 4273, 4276, 4281, 4290, + 4301, 4306, 4314, 4318, 4323, 4327, 4332, 4336, 4341, 4345, + 4352, 4355, 4360, 4363, 4366, 4369, 4374, 4377, 4382, 4388, + 4391, 4394, 4397, 4402, 4406, 4411, 4415, 4420, 4424, 4431, + 4434, 4439, 4444, 4447, 4453, 4456, 4461, 4464 }; #endif @@ -1303,33 +1307,34 @@ static const char *const yytname[] = "F16SUBPASSINPUTMS", "SPIRV_INSTRUCTION", "SPIRV_EXECUTION_MODE", "SPIRV_EXECUTION_MODE_ID", "SPIRV_DECORATE", "SPIRV_DECORATE_ID", "SPIRV_DECORATE_STRING", "SPIRV_TYPE", "SPIRV_STORAGE_CLASS", - "SPIRV_BY_REFERENCE", "SPIRV_LITERAL", "LEFT_OP", "RIGHT_OP", "INC_OP", - "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", - "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", - "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", - "SUB_ASSIGN", "STRING_LITERAL", "LEFT_PAREN", "RIGHT_PAREN", - "LEFT_BRACKET", "RIGHT_BRACKET", "LEFT_BRACE", "RIGHT_BRACE", "DOT", - "COMMA", "COLON", "EQUAL", "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", - "STAR", "SLASH", "PERCENT", "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", - "CARET", "AMPERSAND", "QUESTION", "INVARIANT", "HIGH_PRECISION", - "MEDIUM_PRECISION", "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", - "SUPERP", "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", + "SPIRV_BY_REFERENCE", "SPIRV_LITERAL", "ATTACHMENTEXT", "IATTACHMENTEXT", + "UATTACHMENTEXT", "LEFT_OP", "RIGHT_OP", "INC_OP", "DEC_OP", "LE_OP", + "GE_OP", "EQ_OP", "NE_OP", "AND_OP", "OR_OP", "XOR_OP", "MUL_ASSIGN", + "DIV_ASSIGN", "ADD_ASSIGN", "MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", + "AND_ASSIGN", "XOR_ASSIGN", "OR_ASSIGN", "SUB_ASSIGN", "STRING_LITERAL", + "LEFT_PAREN", "RIGHT_PAREN", "LEFT_BRACKET", "RIGHT_BRACKET", + "LEFT_BRACE", "RIGHT_BRACE", "DOT", "COMMA", "COLON", "EQUAL", + "SEMICOLON", "BANG", "DASH", "TILDE", "PLUS", "STAR", "SLASH", "PERCENT", + "LEFT_ANGLE", "RIGHT_ANGLE", "VERTICAL_BAR", "CARET", "AMPERSAND", + "QUESTION", "INVARIANT", "HIGH_PRECISION", "MEDIUM_PRECISION", + "LOW_PRECISION", "PRECISION", "PACKED", "RESOURCE", "SUPERP", + "FLOATCONSTANT", "INTCONSTANT", "UINTCONSTANT", "BOOLCONSTANT", "IDENTIFIER", "TYPE_NAME", "CENTROID", "IN", "OUT", "INOUT", "STRUCT", "VOID", "WHILE", "BREAK", "CONTINUE", "DO", "ELSE", "FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "TERMINATE_INVOCATION", "TERMINATE_RAY", "IGNORE_INTERSECTION", "UNIFORM", "SHARED", "BUFFER", - "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", "INT16CONSTANT", - "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", "UINT32CONSTANT", - "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", "DEMOTE", "PAYLOADNV", - "PAYLOADINNV", "HITATTRNV", "CALLDATANV", "CALLDATAINNV", "PAYLOADEXT", - "PAYLOADINEXT", "HITATTREXT", "CALLDATAEXT", "CALLDATAINEXT", "PATCH", - "SAMPLE", "NONUNIFORM", "COHERENT", "VOLATILE", "RESTRICT", "READONLY", - "WRITEONLY", "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", - "WORKGROUPCOHERENT", "SUBGROUPCOHERENT", "NONPRIVATE", - "SHADERCALLCOHERENT", "NOPERSPECTIVE", "EXPLICITINTERPAMD", - "PERVERTEXEXT", "PERVERTEXNV", "PERPRIMITIVENV", "PERVIEWNV", - "PERTASKNV", "PERPRIMITIVEEXT", "TASKPAYLOADWORKGROUPEXT", "PRECISE", - "$accept", "variable_identifier", "primary_expression", + "TILEIMAGEEXT", "FLAT", "SMOOTH", "LAYOUT", "DOUBLECONSTANT", + "INT16CONSTANT", "UINT16CONSTANT", "FLOAT16CONSTANT", "INT32CONSTANT", + "UINT32CONSTANT", "INT64CONSTANT", "UINT64CONSTANT", "SUBROUTINE", + "DEMOTE", "PAYLOADNV", "PAYLOADINNV", "HITATTRNV", "CALLDATANV", + "CALLDATAINNV", "PAYLOADEXT", "PAYLOADINEXT", "HITATTREXT", + "CALLDATAEXT", "CALLDATAINEXT", "PATCH", "SAMPLE", "NONUNIFORM", + "COHERENT", "VOLATILE", "RESTRICT", "READONLY", "WRITEONLY", + "DEVICECOHERENT", "QUEUEFAMILYCOHERENT", "WORKGROUPCOHERENT", + "SUBGROUPCOHERENT", "NONPRIVATE", "SHADERCALLCOHERENT", "NOPERSPECTIVE", + "EXPLICITINTERPAMD", "PERVERTEXEXT", "PERVERTEXNV", "PERPRIMITIVENV", + "PERVIEWNV", "PERTASKNV", "PERPRIMITIVEEXT", "TASKPAYLOADWORKGROUPEXT", + "PRECISE", "$accept", "variable_identifier", "primary_expression", "postfix_expression", "integer_expression", "function_call", "function_call_or_method", "function_call_generic", "function_call_header_no_parameters", @@ -1438,16 +1443,17 @@ static const yytype_int16 yytoknum[] = 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714 + 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, + 715, 716, 717, 718 }; #endif -#define YYPACT_NINF (-867) +#define YYPACT_NINF (-833) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-575) +#define YYTABLE_NINF (-579) #define yytable_value_is_error(Yyn) \ 0 @@ -1456,100 +1462,101 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4598, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -289, -262, -241, - -203, -191, -181, -98, -73, -867, -867, -178, -867, -867, - -867, -867, -867, -60, -867, -867, -867, -867, -867, -312, - -867, -867, -867, -867, -867, -867, -62, -28, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -330, -314, -225, -109, 7797, -260, -867, - -207, -867, -867, -867, -867, 5512, -867, -867, -867, -867, - -173, -867, -867, 942, -867, -867, 7797, -30, -867, -867, - -867, 5969, -52, -222, -162, -148, -124, -123, -52, -122, - -48, 12168, -867, -14, -332, -45, -867, -313, -867, -12, - -7, 7797, -867, -867, -867, 7797, -39, -38, -867, -299, - -867, -259, -867, -867, 10863, -2, -867, -867, -867, 1, - -35, 7797, -867, -6, -4, -1, -867, -302, -867, -261, - 3, 4, 6, 7, -249, 8, 11, 12, 15, 16, - 17, -229, 19, 18, 10, -171, -867, -3, 7797, -867, - 21, -867, -226, -867, -867, -221, 9123, -867, -271, 1399, - -867, -867, -867, -867, -867, -2, -300, -867, 9558, -266, - -867, -33, -867, -233, 10863, 10863, -867, 10863, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -246, -867, -867, - -867, 20, -218, 11298, 26, -867, 10863, -867, -867, -319, - 25, -7, 31, -867, -316, -52, -867, -27, -867, -320, - 30, -118, 10863, -117, -867, -138, -116, -143, -112, 34, - -102, -52, -867, 11733, -867, -101, 10863, 5, -48, -867, - 7797, -20, 6426, -867, 7797, 10863, -867, -332, -867, 22, - -867, -867, -47, -41, -37, -298, -22, 24, 27, 29, - 48, 47, -305, 35, 9993, -867, 32, -867, -867, 40, - 37, 53, -867, 42, 50, 57, 10428, 68, 10863, 49, - 62, 65, 66, 67, -227, -867, -867, -176, -867, -314, - 78, 79, -867, -867, -867, -867, -867, 1856, -867, -867, - -867, -867, -867, -867, -867, -867, -867, 5055, 25, 9558, - -265, 8253, -867, -867, 9558, 7797, -867, 46, -867, -867, - -867, -216, -867, -867, 10863, 51, -867, -867, 10863, 82, - -867, -867, -867, 10863, -867, -867, -867, -306, -867, -867, - -213, 76, -867, -867, -867, -867, -867, -867, -202, -867, - -201, -867, -867, -199, 81, -867, -867, -867, -867, -194, - -867, -179, -867, -867, -867, -867, -867, -174, -867, 83, - -867, -155, 84, -154, 76, -867, -153, -867, 85, 91, - -867, -867, -20, -2, -129, -867, -867, -867, 6883, -867, - -867, -867, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, - 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, 10863, - 10863, -867, -867, -867, 92, -867, 2313, -867, -867, -867, - 2313, -867, 10863, -867, -867, -128, 10863, -31, -867, -867, - -867, -867, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, 10863, 10863, -867, -867, -867, -867, - -867, -867, -867, 9558, -867, -867, -215, -867, 7340, -867, - -867, 93, 87, -867, -867, -867, -867, -867, -131, -130, - -867, -304, -867, -320, -867, -320, -867, 10863, 10863, -867, - -138, -867, -138, -867, -143, -143, -867, 98, 34, -867, - 11733, -867, 10863, -867, -867, -74, 25, -20, -867, -867, - -867, -867, -867, -47, -47, -41, -41, -37, -37, -37, - -37, -298, -298, -22, 24, 27, 29, 48, 47, 10863, - -867, 2313, 4141, 54, 3684, -152, -867, -151, -867, -867, - -867, -867, -867, 8688, -867, -867, -867, 100, -867, 69, - -867, -144, -867, -142, -867, -141, -867, -140, -867, -139, - -137, -867, -867, -867, -29, 99, 87, 70, 102, 105, - -867, -867, 4141, 103, -867, -867, -867, -867, -867, -867, - -867, -867, -867, -867, -867, 10863, -867, 101, 2770, 10863, - -867, 104, 107, 63, 108, 3227, -867, 109, -867, 9558, - -867, -867, -867, -132, 10863, 2770, 103, -867, -867, 2313, - -867, 106, 87, -867, -867, 2313, 112, -867, -867 + 4634, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -322, -303, -269, + -258, -250, -241, -204, -105, -833, -833, -833, -833, -833, + -219, -833, -833, -833, -833, -833, -57, -833, -833, -833, + -833, -833, -320, -833, -833, -833, -833, -833, -833, -833, + -80, -63, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -325, -182, -130, + -109, 7861, -222, -833, -71, -833, -833, -833, -833, 5556, + -833, -833, -833, -833, -141, -833, -833, 946, -833, -833, + 7861, -85, -833, -833, -833, 6017, -54, -279, -155, -133, + -129, -125, -54, -124, -51, 12272, -833, -25, -341, -49, + -833, -310, -833, -15, -12, 7861, -833, -833, -833, 7861, + -42, -41, -833, -265, -833, -311, -833, -833, 10955, -9, + -833, -833, -833, -5, -39, 7861, -833, -10, -11, -6, + -833, -267, -833, -256, -4, -3, -1, 1, -221, 3, + 5, 6, 8, 10, 11, -217, 13, 12, 20, -309, + -833, -7, 7861, -833, -2, -833, -195, -833, -833, -188, + 9199, -833, -280, 1407, -833, -833, -833, -833, -833, -9, + -294, -833, 9638, -263, -833, -27, -833, -169, 10955, 10955, + -833, 10955, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -253, -833, -833, -833, 21, -185, 11394, 25, -833, + 10955, -833, -833, -318, 19, -12, 26, -833, -326, -54, + -833, -8, -833, -329, 27, -123, 10955, -119, -833, -146, + -112, -160, -107, 28, -102, -54, -833, 11833, -833, -75, + 10955, 29, -51, -833, 7861, 14, 6478, -833, 7861, 10955, + -833, -341, -833, 15, -833, -833, -40, -79, -170, -295, + -120, 17, 22, 24, 44, 23, -313, 30, 10077, -833, + 35, -833, -833, 31, 37, 39, -833, 34, 41, 42, + 10516, 64, 10955, 58, 57, 59, 63, 65, -220, -833, + -833, -111, -833, -182, 76, 77, -833, -833, -833, -833, + -833, 1868, -833, -833, -833, -833, -833, -833, -833, -833, + -833, 5095, 19, 9638, -254, 8321, -833, -833, 9638, 7861, + -833, 43, -833, -833, -833, -184, -833, -833, 10955, 47, + -833, -833, 10955, 79, -833, -833, -833, 10955, -833, -833, + -833, -319, -833, -833, -183, 69, -833, -833, -833, -833, + -833, -833, -181, -833, -176, -833, -833, -174, 80, -833, + -833, -833, -833, -172, -833, -171, -833, -833, -833, -833, + -833, -164, -833, 81, -833, -162, 82, -161, 69, -833, + -159, -833, 83, 85, -833, -833, 14, -9, -48, -833, + -833, -833, 6939, -833, -833, -833, 10955, 10955, 10955, 10955, + 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, + 10955, 10955, 10955, 10955, 10955, -833, -833, -833, 32, -833, + 2329, -833, -833, -833, 2329, -833, 10955, -833, -833, -47, + 10955, -92, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, 10955, 10955, + -833, -833, -833, -833, -833, -833, -833, 9638, -833, -833, + -122, -833, 7400, -833, -833, 88, 86, -833, -833, -833, + -833, -833, -202, -137, -833, -316, -833, -329, -833, -329, + -833, 10955, 10955, -833, -146, -833, -146, -833, -160, -160, + -833, 93, 28, -833, 11833, -833, 10955, -833, -833, -43, + 19, 14, -833, -833, -833, -833, -833, -40, -40, -79, + -79, -170, -170, -170, -170, -295, -295, -120, 17, 22, + 24, 44, 23, 10955, -833, 2329, 4173, 52, 3712, -152, + -833, -151, -833, -833, -833, -833, -833, 8760, -833, -833, + -833, 98, -833, 66, -833, -150, -833, -149, -833, -148, + -833, -147, -833, -140, -139, -833, -833, -833, -36, 95, + 86, 62, 101, 103, -833, -833, 4173, 100, -833, -833, + -833, -833, -833, -833, -833, -833, -833, -833, -833, 10955, + -833, 96, 2790, 10955, -833, 97, 105, 60, 107, 3251, + -833, 109, -833, 9638, -833, -833, -833, -138, 10955, 2790, + 100, -833, -833, 2329, -833, 99, 86, -833, -833, 2329, + 110, -833, -833 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1557,138 +1564,139 @@ static const yytype_int16 yypact[] = means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 168, 223, 221, 222, 220, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 224, 225, 226, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 349, 350, 351, 352, 353, 354, 355, 375, 376, 377, - 378, 379, 380, 381, 390, 403, 404, 391, 392, 394, - 393, 395, 396, 397, 398, 399, 400, 401, 402, 176, - 177, 249, 250, 248, 251, 258, 259, 256, 257, 254, - 255, 252, 253, 281, 282, 283, 293, 294, 295, 278, - 279, 280, 290, 291, 292, 275, 276, 277, 287, 288, - 289, 272, 273, 274, 284, 285, 286, 260, 261, 262, - 296, 297, 298, 263, 264, 265, 308, 309, 310, 266, - 267, 268, 320, 321, 322, 269, 270, 271, 332, 333, - 334, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 323, - 324, 325, 326, 327, 328, 329, 330, 331, 335, 336, - 337, 338, 339, 340, 341, 342, 343, 347, 344, 345, - 346, 528, 529, 530, 532, 181, 359, 360, 383, 386, - 348, 357, 358, 374, 356, 405, 406, 409, 410, 411, - 413, 414, 415, 417, 418, 419, 421, 422, 518, 519, - 382, 384, 385, 361, 362, 363, 407, 364, 368, 369, - 372, 412, 416, 420, 365, 366, 370, 371, 408, 367, - 373, 452, 454, 455, 456, 458, 459, 460, 462, 463, - 464, 466, 467, 468, 470, 471, 472, 474, 475, 476, - 478, 479, 480, 482, 483, 484, 486, 487, 488, 490, - 491, 492, 494, 495, 453, 457, 461, 465, 469, 477, - 481, 485, 473, 489, 493, 496, 497, 498, 499, 500, - 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, - 511, 512, 513, 514, 515, 516, 517, 387, 388, 389, - 423, 432, 434, 428, 433, 435, 436, 438, 439, 440, - 442, 443, 444, 446, 447, 448, 450, 451, 424, 425, - 426, 437, 427, 429, 430, 431, 441, 445, 449, 520, - 521, 524, 525, 526, 527, 522, 523, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 167, 0, 625, 137, - 535, 536, 537, 0, 534, 172, 170, 171, 169, 0, - 219, 173, 174, 175, 139, 138, 0, 202, 183, 185, - 180, 187, 189, 184, 186, 182, 188, 190, 178, 179, - 205, 191, 198, 199, 200, 201, 192, 193, 194, 195, - 196, 197, 140, 141, 143, 142, 144, 146, 147, 145, - 204, 154, 624, 0, 626, 0, 114, 113, 0, 125, - 130, 161, 160, 158, 162, 0, 155, 157, 163, 135, - 215, 159, 533, 0, 621, 623, 0, 0, 164, 165, - 531, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 540, 0, 0, 0, 99, 0, 94, 0, - 109, 0, 121, 115, 123, 0, 124, 0, 97, 131, - 102, 0, 156, 136, 0, 208, 214, 1, 622, 0, - 0, 0, 96, 0, 0, 0, 633, 0, 690, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 631, 0, 629, 0, 0, 538, - 151, 153, 0, 149, 206, 0, 0, 100, 0, 0, - 627, 110, 116, 120, 122, 118, 126, 117, 0, 132, - 105, 0, 103, 0, 0, 0, 9, 0, 43, 42, - 44, 41, 5, 6, 7, 8, 2, 16, 14, 15, - 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, - 26, 0, 0, 30, 0, 217, 0, 36, 34, 0, - 209, 111, 0, 95, 0, 0, 688, 0, 641, 0, - 0, 0, 0, 0, 658, 0, 0, 0, 0, 0, - 0, 0, 683, 0, 656, 0, 0, 0, 0, 98, - 0, 0, 0, 542, 0, 0, 148, 0, 203, 0, - 210, 45, 49, 52, 55, 60, 63, 65, 67, 69, - 71, 73, 75, 0, 0, 101, 569, 578, 582, 0, - 0, 0, 603, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 45, 78, 91, 0, 556, 0, - 163, 135, 559, 580, 558, 566, 557, 0, 560, 561, - 584, 562, 591, 563, 564, 599, 565, 0, 119, 0, - 127, 0, 550, 134, 0, 0, 107, 0, 104, 38, - 39, 0, 22, 23, 0, 0, 28, 27, 0, 219, - 31, 33, 40, 0, 216, 112, 692, 0, 693, 634, - 0, 0, 691, 653, 649, 650, 651, 652, 0, 647, - 0, 93, 654, 0, 0, 668, 669, 670, 671, 0, - 666, 0, 675, 676, 677, 678, 674, 0, 672, 0, - 679, 0, 0, 0, 2, 687, 0, 685, 0, 0, - 628, 630, 0, 548, 0, 546, 541, 543, 0, 152, - 150, 207, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 168, 224, 222, 223, 221, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 225, 226, 227, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 350, 351, 352, 353, 354, 355, 356, 376, 377, 378, + 379, 380, 381, 382, 391, 404, 405, 392, 393, 395, + 394, 396, 397, 398, 399, 400, 401, 402, 403, 177, + 178, 250, 251, 249, 252, 259, 260, 257, 258, 255, + 256, 253, 254, 282, 283, 284, 294, 295, 296, 279, + 280, 281, 291, 292, 293, 276, 277, 278, 288, 289, + 290, 273, 274, 275, 285, 286, 287, 261, 262, 263, + 297, 298, 299, 264, 265, 266, 309, 310, 311, 267, + 268, 269, 321, 322, 323, 270, 271, 272, 333, 334, + 335, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 324, + 325, 326, 327, 328, 329, 330, 331, 332, 336, 337, + 338, 339, 340, 341, 342, 343, 344, 348, 345, 346, + 347, 532, 533, 534, 536, 182, 360, 361, 384, 387, + 349, 358, 359, 375, 357, 406, 407, 410, 411, 412, + 414, 415, 416, 418, 419, 420, 422, 423, 519, 520, + 383, 385, 386, 362, 363, 364, 408, 365, 369, 370, + 373, 413, 417, 421, 366, 367, 371, 372, 409, 368, + 374, 453, 455, 456, 457, 459, 460, 461, 463, 464, + 465, 467, 468, 469, 471, 472, 473, 475, 476, 477, + 479, 480, 481, 483, 484, 485, 487, 488, 489, 491, + 492, 493, 495, 496, 454, 458, 462, 466, 470, 478, + 482, 486, 474, 490, 494, 497, 498, 499, 500, 501, + 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, + 512, 513, 514, 515, 516, 517, 518, 388, 389, 390, + 424, 433, 435, 429, 434, 436, 437, 439, 440, 441, + 443, 444, 445, 447, 448, 449, 451, 452, 425, 426, + 427, 438, 428, 430, 431, 432, 442, 446, 450, 524, + 525, 528, 529, 530, 531, 526, 527, 0, 0, 0, + 0, 0, 0, 0, 0, 166, 167, 521, 522, 523, + 0, 629, 137, 539, 540, 541, 0, 538, 172, 170, + 171, 169, 0, 220, 173, 175, 176, 174, 139, 138, + 0, 203, 184, 186, 181, 188, 190, 185, 187, 183, + 189, 191, 179, 180, 206, 192, 199, 200, 201, 202, + 193, 194, 195, 196, 197, 198, 140, 141, 143, 142, + 144, 146, 147, 145, 205, 154, 628, 0, 630, 0, + 114, 113, 0, 125, 130, 161, 160, 158, 162, 0, + 155, 157, 163, 135, 216, 159, 537, 0, 625, 627, + 0, 0, 164, 165, 535, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 544, 0, 0, 0, + 99, 0, 94, 0, 109, 0, 121, 115, 123, 0, + 124, 0, 97, 131, 102, 0, 156, 136, 0, 209, + 215, 1, 626, 0, 0, 0, 96, 0, 0, 0, + 637, 0, 694, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 635, 0, + 633, 0, 0, 542, 151, 153, 0, 149, 207, 0, + 0, 100, 0, 0, 631, 110, 116, 120, 122, 118, + 126, 117, 0, 132, 105, 0, 103, 0, 0, 0, + 9, 0, 43, 42, 44, 41, 5, 6, 7, 8, + 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, + 18, 37, 20, 25, 26, 0, 0, 30, 0, 218, + 0, 36, 34, 0, 210, 111, 0, 95, 0, 0, + 692, 0, 645, 0, 0, 0, 0, 0, 662, 0, + 0, 0, 0, 0, 0, 0, 687, 0, 660, 0, + 0, 0, 0, 98, 0, 0, 0, 546, 0, 0, + 148, 0, 204, 0, 211, 45, 49, 52, 55, 60, + 63, 65, 67, 69, 71, 73, 75, 0, 0, 101, + 573, 582, 586, 0, 0, 0, 607, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 45, 78, + 91, 0, 560, 0, 163, 135, 563, 584, 562, 570, + 561, 0, 564, 565, 588, 566, 595, 567, 568, 603, + 569, 0, 119, 0, 127, 0, 554, 134, 0, 0, + 107, 0, 104, 38, 39, 0, 22, 23, 0, 0, + 28, 27, 0, 220, 31, 33, 40, 0, 217, 112, + 696, 0, 697, 638, 0, 0, 695, 657, 653, 654, + 655, 656, 0, 651, 0, 93, 658, 0, 0, 672, + 673, 674, 675, 0, 670, 0, 679, 680, 681, 682, + 678, 0, 676, 0, 683, 0, 0, 0, 2, 691, + 0, 689, 0, 0, 632, 634, 0, 552, 0, 550, + 545, 547, 0, 152, 150, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 76, 211, 212, 0, 568, 0, 601, 614, 613, - 0, 605, 0, 617, 615, 0, 0, 0, 598, 618, - 619, 620, 567, 81, 82, 84, 83, 86, 87, 88, - 89, 90, 85, 80, 0, 0, 583, 579, 581, 585, - 592, 600, 129, 0, 553, 554, 0, 133, 0, 108, - 4, 0, 24, 21, 32, 218, 637, 639, 0, 0, - 689, 0, 643, 0, 642, 0, 645, 0, 0, 660, - 0, 659, 0, 662, 0, 0, 664, 0, 0, 684, - 0, 681, 0, 657, 632, 0, 549, 0, 544, 539, - 46, 47, 48, 51, 50, 53, 54, 58, 59, 56, - 57, 61, 62, 64, 66, 68, 70, 72, 74, 0, - 213, 570, 0, 0, 0, 0, 616, 0, 597, 79, - 92, 128, 551, 0, 106, 19, 635, 0, 636, 0, - 648, 0, 655, 0, 667, 0, 673, 0, 680, 0, - 0, 686, 545, 547, 0, 0, 589, 0, 0, 0, - 608, 607, 610, 576, 593, 552, 555, 638, 640, 644, - 646, 661, 663, 665, 682, 0, 571, 0, 0, 0, - 609, 0, 0, 588, 0, 0, 586, 0, 77, 0, - 573, 602, 572, 0, 611, 0, 576, 575, 577, 595, - 590, 0, 612, 606, 587, 596, 0, 604, 594 + 0, 0, 0, 0, 0, 76, 212, 213, 0, 572, + 0, 605, 618, 617, 0, 609, 0, 621, 619, 0, + 0, 0, 602, 622, 623, 624, 571, 81, 82, 84, + 83, 86, 87, 88, 89, 90, 85, 80, 0, 0, + 587, 583, 585, 589, 596, 604, 129, 0, 557, 558, + 0, 133, 0, 108, 4, 0, 24, 21, 32, 219, + 641, 643, 0, 0, 693, 0, 647, 0, 646, 0, + 649, 0, 0, 664, 0, 663, 0, 666, 0, 0, + 668, 0, 0, 688, 0, 685, 0, 661, 636, 0, + 553, 0, 548, 543, 46, 47, 48, 51, 50, 53, + 54, 58, 59, 56, 57, 61, 62, 64, 66, 68, + 70, 72, 74, 0, 214, 574, 0, 0, 0, 0, + 620, 0, 601, 79, 92, 128, 555, 0, 106, 19, + 639, 0, 640, 0, 652, 0, 659, 0, 671, 0, + 677, 0, 684, 0, 0, 690, 549, 551, 0, 0, + 593, 0, 0, 0, 612, 611, 614, 580, 597, 556, + 559, 642, 644, 648, 650, 665, 667, 669, 686, 0, + 575, 0, 0, 0, 613, 0, 0, 592, 0, 0, + 590, 0, 77, 0, 577, 606, 576, 0, 615, 0, + 580, 579, 581, 599, 594, 0, 616, 610, 591, 600, + 0, 608, 598 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -867, -538, -867, -867, -867, -867, -867, -867, -867, -867, - -867, -867, -428, -867, -392, -391, -474, -389, -264, -267, - -263, -268, -258, -257, -867, -482, -867, -495, -867, -502, - -534, 13, -867, -867, -867, 14, -385, -867, -867, 38, - 41, 44, -867, -867, -400, -867, -867, -867, -867, -100, - -867, -386, -368, -867, 9, -867, 0, -422, -867, -867, - -867, -867, 142, -867, -867, -867, -545, -550, -236, -347, - -629, -867, -372, -620, -866, -867, -430, -867, -867, -440, - -438, -867, -867, 61, -720, -363, -867, -136, -867, -406, - -867, -135, -867, -867, -867, -867, -134, -867, -867, -867, - -867, -867, -867, -867, -867, 90, -867, -867, 2, -867, - -72, -224, -384, -867, -867, -867, -311, -308, -309, -867, - -867, -315, -310, -307, -303, -301, -867, -297, -318, -867, - -390, -539 + -833, -546, -833, -833, -833, -833, -833, -833, -833, -833, + -833, -833, -434, -833, -395, -394, -489, -392, -271, -270, + -268, -266, -272, -264, -833, -484, -833, -497, -833, -500, + -535, 4, -833, -833, -833, 7, -393, -833, -833, 33, + 40, 38, -833, -833, -407, -833, -833, -833, -833, -103, + -833, -390, -376, -833, 9, -833, 0, -433, -833, -833, + -833, -833, 138, -833, -833, -833, -559, -554, -237, -350, + -612, -833, -375, -619, -832, -833, -432, -833, -833, -445, + -443, -833, -833, 55, -732, -373, -833, -145, -833, -406, + -833, -144, -833, -833, -833, -833, -143, -833, -833, -833, + -833, -833, -833, -833, -833, 87, -833, -833, 2, -833, + -77, -302, -408, -833, -833, -833, -317, -308, -312, -833, + -833, -315, -307, -314, -306, -305, -833, -321, -304, -833, + -396, -538 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 525, 526, 527, 791, 528, 529, 530, 531, 532, - 533, 534, 614, 536, 582, 583, 584, 585, 586, 587, - 588, 589, 590, 591, 592, 615, 849, 616, 774, 617, - 705, 618, 383, 645, 503, 619, 385, 386, 387, 432, - 433, 434, 388, 389, 390, 391, 392, 393, 482, 483, - 394, 395, 396, 397, 537, 485, 538, 488, 445, 446, - 539, 400, 401, 402, 574, 478, 572, 573, 714, 715, - 643, 786, 622, 623, 624, 625, 626, 746, 885, 921, - 913, 914, 915, 922, 627, 628, 629, 630, 916, 888, - 631, 632, 917, 936, 633, 634, 635, 852, 750, 854, - 892, 911, 912, 636, 403, 404, 405, 429, 637, 475, - 476, 455, 456, 798, 799, 407, 678, 679, 683, 408, - 409, 689, 690, 697, 698, 701, 410, 706, 707, 411, - 457, 458 + -1, 529, 530, 531, 795, 532, 533, 534, 535, 536, + 537, 538, 618, 540, 586, 587, 588, 589, 590, 591, + 592, 593, 594, 595, 596, 619, 853, 620, 778, 621, + 709, 622, 387, 649, 507, 623, 389, 390, 391, 436, + 437, 438, 392, 393, 394, 395, 396, 397, 486, 487, + 398, 399, 400, 401, 541, 489, 542, 492, 449, 450, + 543, 404, 405, 406, 578, 482, 576, 577, 718, 719, + 647, 790, 626, 627, 628, 629, 630, 750, 889, 925, + 917, 918, 919, 926, 631, 632, 633, 634, 920, 892, + 635, 636, 921, 940, 637, 638, 639, 856, 754, 858, + 896, 915, 916, 640, 407, 408, 409, 433, 641, 479, + 480, 459, 460, 802, 803, 411, 682, 683, 687, 412, + 413, 693, 694, 701, 702, 705, 414, 710, 711, 415, + 461, 462 }; /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If @@ -1696,192 +1704,101 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 399, 435, 406, 642, 593, 651, 450, 778, 672, 398, - 782, 450, 785, 382, 384, 787, 535, 499, 682, 696, - 451, 449, 717, 540, 672, 451, 851, 442, 471, 718, - 673, 426, 709, 740, 666, 729, 730, 667, 660, 663, - 486, 719, 920, 422, 796, 435, 666, 428, 487, 928, - 546, 664, 497, 486, 486, 480, 547, 427, 581, 920, - 639, 498, 412, 674, 675, 676, 677, 442, 668, 741, - 681, 731, 732, 638, 640, 423, 649, 650, 797, 481, - 668, 681, 594, 442, 681, 652, 653, 594, 594, 413, - 595, 548, 570, 681, 644, 783, 500, 549, 437, 501, - 788, 438, 502, 554, 755, -35, 757, 654, 662, 555, - 414, 655, 744, 763, 764, 765, 766, 767, 768, 769, - 770, 771, 772, 562, 581, 647, 576, 430, 648, 563, - 853, 578, 577, 773, 657, 581, 790, 579, 581, 800, - 658, 862, 775, 863, 642, 547, 642, 581, 415, 642, - 802, 804, 792, 806, 861, 670, 803, 805, 809, 807, - 416, 669, 459, 794, 810, 460, 581, 669, 717, 669, - 417, 703, 669, 811, 669, 420, 669, 669, 813, 812, - 439, 669, 775, 567, 814, 776, 570, 568, 570, 461, - 463, 465, 467, 469, 470, 473, 444, 816, 819, 821, - 893, 894, 442, 817, 820, 822, 775, 775, 899, 935, - 900, 901, 902, 903, 803, 904, 807, 810, 814, 817, - 931, 822, 462, 866, 868, 460, 775, 867, 869, 827, - 775, 778, 828, 856, 896, 795, 464, 450, 717, 460, - 692, 693, 694, 695, 516, 685, 686, 687, 688, 431, - 855, 451, 449, 418, 857, 837, 838, 839, 840, 570, - 466, 468, 472, 460, 460, 460, 680, 684, 691, 460, - 460, 460, 699, 872, 682, 460, 696, 696, 419, 859, - 860, 672, 702, 708, 827, 460, 460, 882, 642, 424, - 930, 826, 727, 728, 830, 831, 832, 581, 581, 581, - 581, 581, 581, 581, 581, 581, 581, 581, 581, 581, - 581, 581, 581, 733, 734, 778, 330, 331, 332, 722, - 723, 724, 725, 425, 726, 681, 681, 775, 858, 775, - 905, 452, 570, 833, 834, 454, 835, 836, 681, 474, - 681, 479, 484, 489, 841, 842, 327, 884, 495, 496, - 886, 486, 542, 541, 646, 543, 544, 545, 569, 710, - 671, 566, 551, 550, 552, 553, 556, 713, 642, 557, - 558, 564, 656, 559, 560, 561, 565, 661, 594, 581, - 581, 575, 497, 667, 700, 738, 739, 436, 745, 742, - 886, 747, 581, 751, 581, 443, 398, 735, 748, 736, - 737, 752, 570, 399, 398, 406, 399, 923, 758, 721, - 918, 399, 398, 406, 749, 398, 382, 384, 753, 756, - 398, 477, 932, 759, 642, 453, 760, 761, 762, -36, - -34, 436, 491, 789, -29, 436, 801, 823, 793, 808, - 398, 815, 818, 824, 398, 775, 850, 865, 878, 889, - 897, 443, 887, 898, 908, 906, 909, 907, -574, 925, - 398, 919, 926, 596, 929, 924, 451, 937, 938, 844, - 846, 843, 492, 493, 845, 421, 825, 720, 571, 494, - 883, 847, 890, 848, 927, 933, 910, 398, 934, 621, - 490, 891, 887, 448, 871, 870, 711, 875, 620, 873, - 874, 779, 780, 781, 881, 0, 451, 0, 877, 0, - 0, 876, 0, 0, 0, 0, 0, 879, 0, 0, - 0, 0, 0, 880, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 665, 0, 0, 0, 0, 0, 0, + 403, 439, 410, 454, 386, 646, 597, 388, 454, 402, + 503, 655, 782, 676, 539, 700, 544, 453, 855, 722, + 455, 686, 721, 446, 677, 455, 475, 670, 744, 676, + 671, 786, 416, 789, 800, 713, 791, 670, 426, 430, + 664, 733, 734, 667, 723, 439, 490, 504, 571, 484, + 505, 417, 572, 506, 491, 668, 585, 678, 679, 680, + 681, 672, 490, 446, 745, 431, 642, 644, 801, 643, + 427, 672, 685, 485, 653, 654, 598, 735, 736, 446, + 924, 656, 657, 685, 599, 418, 685, 932, 550, 501, + 792, 490, 574, 598, 551, 685, 419, 924, 502, 552, + 648, -35, 598, 658, 420, 553, 666, 659, 463, 787, + 759, 464, 761, 421, 748, 465, 467, 469, 471, 473, + 474, 477, 585, 767, 768, 769, 770, 771, 772, 773, + 774, 775, 776, 585, 558, 857, 585, 424, 566, 441, + 559, 673, 442, 777, 567, 585, 646, 673, 646, 673, + 422, 646, 673, 674, 673, 870, 673, 673, 796, 871, + 580, 673, 731, 732, 585, 798, 581, 582, 721, 707, + 661, 794, 804, 583, 806, 865, 662, 779, 551, 808, + 807, 810, 432, 813, 815, 809, 574, 811, 574, 814, + 816, 817, 651, 820, 823, 652, 825, 818, 446, 821, + 824, 939, 826, 897, 898, 903, 904, 905, 906, 779, + 779, 807, 811, 814, 818, 907, 908, 935, 737, 738, + 872, 821, 826, 779, 873, 434, 696, 697, 698, 699, + 520, 448, 466, 799, 454, 464, 782, 866, 721, 867, + 689, 690, 691, 692, 841, 842, 843, 844, 453, 423, + 779, 455, 435, 780, 468, 900, 859, 464, 470, 574, + 861, 464, 472, 476, 684, 464, 464, 464, 688, 779, + 862, 464, 700, 700, 428, 695, 876, 686, 464, 456, + 703, 863, 864, 464, 830, 706, 676, 729, 464, 730, + 646, 429, 834, 835, 836, 585, 585, 585, 585, 585, + 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, + 585, 934, 712, 831, 779, 464, 832, 860, 831, 443, + 782, 886, 333, 334, 335, 779, 909, 685, 685, 726, + 727, 728, 574, 483, 837, 838, 458, 839, 840, 478, + 685, 488, 685, 493, 330, 845, 846, 490, 499, 500, + 545, 546, 548, 888, 547, 549, 890, 573, 555, 554, + 556, 579, 557, 650, 560, 743, 561, 562, 568, 563, + 646, 564, 565, 569, 570, 598, 660, 585, 585, 665, + 501, 704, 675, 671, 742, 751, 714, 746, 755, 854, + 585, 440, 585, 739, 749, 756, 890, 740, 741, 447, + 402, 752, 574, 753, 717, 725, 757, 403, 402, 410, + 403, 386, 922, 927, 388, 403, 402, 410, 760, 402, + 762, 763, 457, 764, 402, 481, 646, 765, 936, 766, + -36, -34, 805, 793, -29, 440, 495, 797, 827, 440, + 828, 812, 819, 822, 402, 869, 882, 779, 402, 891, + 893, 901, 911, 902, 910, 447, 912, 913, -578, 923, + 929, 928, 930, 941, 402, 600, 455, 933, 847, 942, + 848, 851, 497, 849, 425, 496, 850, 498, 724, 829, + 852, 887, 575, 894, 937, 895, 931, 938, 494, 891, + 914, 402, 875, 625, 452, 715, 783, 784, 785, 874, + 877, 879, 624, 884, 0, 881, 455, 878, 0, 0, + 0, 0, 880, 0, 0, 0, 0, 883, 0, 0, + 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 712, 0, 571, 0, 571, 0, 0, 0, 0, 398, - 0, 398, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 716, 0, 575, 0, 575, 0, + 0, 0, 0, 402, 0, 402, 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 621, 0, 0, - 0, 0, 0, 0, 0, 0, 620, 399, 0, 0, - 0, 0, 0, 0, 0, 571, 398, 0, 0, 0, - 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, + 624, 403, 0, 0, 0, 0, 0, 0, 0, 575, + 402, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, - 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 621, 0, 0, 0, - 621, 0, 0, 0, 0, 620, 0, 0, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 571, 0, - 0, 0, 0, 0, 0, 0, 0, 398, 0, 0, + 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, + 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 625, 0, 0, 0, 625, 0, 0, 0, 0, 624, + 0, 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, + 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 621, 621, 0, 621, 0, 406, 0, 0, 0, - 620, 620, 0, 620, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 621, 0, 0, 0, 0, 0, 0, 0, - 0, 620, 0, 0, 0, 0, 0, 0, 621, 0, - 0, 0, 0, 0, 0, 621, 0, 620, 0, 0, - 0, 0, 0, 0, 620, 621, 0, 0, 0, 621, - 0, 0, 0, 0, 620, 621, 0, 0, 620, 0, - 0, 0, 447, 0, 620, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 625, 625, 0, 625, 0, + 410, 0, 0, 0, 624, 624, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 327, 0, 0, 0, 0, - 0, 0, 0, 328, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, - 332, 333, 0, 0, 0, 0, 0, 0, 0, 0, - 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 347, 0, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 0, 0, - 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 506, - 507, 0, 327, 0, 596, 597, 0, 0, 0, 0, - 598, 508, 509, 510, 511, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 329, 330, 331, 332, 333, 0, - 0, 0, 512, 513, 514, 515, 516, 334, 335, 336, - 337, 338, 339, 340, 599, 600, 601, 602, 0, 603, - 604, 605, 606, 607, 608, 609, 610, 611, 612, 341, - 342, 343, 344, 345, 346, 517, 518, 519, 520, 521, - 522, 523, 524, 347, 613, 348, 349, 350, 351, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 1, + 0, 0, 0, 0, 0, 0, 625, 0, 0, 0, + 0, 0, 0, 0, 0, 624, 0, 0, 0, 0, + 0, 0, 625, 0, 0, 0, 0, 0, 0, 625, + 0, 624, 0, 0, 0, 0, 0, 0, 624, 625, + 0, 0, 0, 625, 0, 0, 0, 0, 624, 625, + 0, 0, 624, 0, 0, 0, 451, 0, 624, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -1914,111 +1831,20 @@ static const yytype_int16 yytable[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 0, 0, 504, 505, 0, + 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 506, 507, 0, 327, - 0, 596, 777, 0, 0, 0, 0, 598, 508, 509, - 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 329, 330, 331, 332, 333, 0, 0, 0, 512, - 513, 514, 515, 516, 334, 335, 336, 337, 338, 339, - 340, 599, 600, 601, 602, 0, 603, 604, 605, 606, - 607, 608, 609, 610, 611, 612, 341, 342, 343, 344, - 345, 346, 517, 518, 519, 520, 521, 522, 523, 524, - 347, 613, 348, 349, 350, 351, 352, 353, 354, 355, + 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, + 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 333, 334, 335, 336, 0, + 0, 0, 0, 0, 0, 0, 0, 337, 338, 339, + 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, + 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 0, 0, 504, 505, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 327, 0, 596, 0, - 0, 0, 0, 0, 598, 508, 509, 510, 511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, - 331, 332, 333, 0, 0, 0, 512, 513, 514, 515, - 516, 334, 335, 336, 337, 338, 339, 340, 599, 600, - 601, 602, 0, 603, 604, 605, 606, 607, 608, 609, - 610, 611, 612, 341, 342, 343, 344, 345, 346, 517, - 518, 519, 520, 521, 522, 523, 524, 347, 613, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 1, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 0, - 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 506, 507, 0, 327, 0, 489, 0, 0, 0, 0, - 0, 598, 508, 509, 510, 511, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 329, 330, 331, 332, 333, - 0, 0, 0, 512, 513, 514, 515, 516, 334, 335, - 336, 337, 338, 339, 340, 599, 600, 601, 602, 0, - 603, 604, 605, 606, 607, 608, 609, 610, 611, 612, - 341, 342, 343, 344, 345, 346, 517, 518, 519, 520, - 521, 522, 523, 524, 347, 613, 348, 349, 350, 351, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, - 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, - 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, @@ -2051,112 +1877,21 @@ static const yytype_int16 yytable[] = 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 0, 0, 504, 505, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, + 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 506, 507, 0, - 327, 0, 0, 0, 0, 0, 0, 0, 598, 508, - 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 329, 330, 331, 332, 333, 0, 0, 0, - 512, 513, 514, 515, 516, 334, 335, 336, 337, 338, - 339, 340, 599, 600, 601, 602, 0, 603, 604, 605, - 606, 607, 608, 609, 610, 611, 612, 341, 342, 343, - 344, 345, 346, 517, 518, 519, 520, 521, 522, 523, - 524, 347, 613, 348, 349, 350, 351, 352, 353, 354, + 510, 511, 0, 330, 0, 600, 601, 0, 0, 0, + 0, 602, 512, 513, 514, 515, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, + 0, 0, 0, 516, 517, 518, 519, 520, 337, 338, + 339, 340, 341, 342, 343, 603, 604, 605, 606, 0, + 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, + 344, 345, 346, 347, 348, 349, 350, 521, 522, 523, + 524, 525, 526, 527, 528, 351, 617, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 1, 2, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 0, 0, 504, 505, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 506, 507, 0, 327, 0, 0, - 0, 0, 0, 0, 0, 598, 508, 509, 510, 511, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 329, - 330, 331, 332, 333, 0, 0, 0, 512, 513, 514, - 515, 516, 334, 335, 336, 337, 338, 339, 340, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 341, 342, 343, 344, 345, 346, - 517, 518, 519, 520, 521, 522, 523, 524, 347, 0, - 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, - 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, - 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, 0, 0, 320, 321, 322, 323, 324, 325, 326, - 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 506, 507, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 329, 330, 331, 332, - 0, 0, 0, 0, 512, 513, 514, 515, 516, 334, - 335, 336, 337, 338, 339, 340, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 341, 342, 343, 344, 345, 346, 517, 518, 519, - 520, 521, 522, 523, 524, 347, 0, 348, 349, 350, - 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -2188,112 +1923,21 @@ static const yytype_int16 yytable[] = 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 327, 0, 0, 0, 0, 0, 0, 0, 328, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 329, 330, 331, 332, 333, 0, 0, - 0, 0, 0, 0, 0, 0, 334, 335, 336, 337, - 338, 339, 340, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 341, 342, - 343, 344, 345, 346, 0, 0, 0, 0, 0, 0, - 0, 0, 347, 0, 348, 349, 350, 351, 352, 353, + 0, 510, 511, 0, 330, 0, 600, 781, 0, 0, + 0, 0, 602, 512, 513, 514, 515, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 336, 0, 0, 0, 516, 517, 518, 519, 520, 337, + 338, 339, 340, 341, 342, 343, 603, 604, 605, 606, + 0, 607, 608, 609, 610, 611, 612, 613, 614, 615, + 616, 344, 345, 346, 347, 348, 349, 350, 521, 522, + 523, 524, 525, 526, 527, 528, 351, 617, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, - 374, 375, 376, 377, 378, 379, 380, 381, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 0, 0, 320, 321, 322, - 323, 324, 325, 326, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 329, 330, 331, 332, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 334, 335, 336, 337, 338, 339, 340, - 599, 0, 0, 602, 0, 603, 604, 0, 0, 607, - 0, 0, 0, 0, 0, 341, 342, 343, 344, 345, - 346, 0, 0, 0, 0, 0, 0, 0, 0, 347, - 0, 348, 349, 350, 351, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 1, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 0, 0, 0, 320, 321, 322, 323, 324, 325, - 326, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 440, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 329, 330, 331, - 332, 0, 0, 0, 0, 0, 0, 0, 0, 441, - 334, 335, 336, 337, 338, 339, 340, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 341, 342, 343, 344, 345, 346, 0, 0, - 0, 0, 0, 0, 0, 0, 347, 0, 348, 349, - 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, - 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, - 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 1, 2, 3, 4, 5, 6, 7, 8, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, @@ -2324,113 +1968,22 @@ static const yytype_int16 yytable[] = 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, - 0, 320, 321, 322, 323, 324, 325, 326, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 327, 0, 0, 0, 0, 0, 0, 0, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 329, 330, 331, 332, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 334, 335, 336, - 337, 338, 339, 340, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 341, - 342, 343, 344, 345, 346, 0, 0, 0, 0, 0, - 0, 0, 0, 347, 0, 348, 349, 350, 351, 352, + 0, 0, 510, 511, 0, 330, 0, 600, 0, 0, + 0, 0, 0, 602, 512, 513, 514, 515, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, + 335, 336, 0, 0, 0, 516, 517, 518, 519, 520, + 337, 338, 339, 340, 341, 342, 343, 603, 604, 605, + 606, 0, 607, 608, 609, 610, 611, 612, 613, 614, + 615, 616, 344, 345, 346, 347, 348, 349, 350, 521, + 522, 523, 524, 525, 526, 527, 528, 351, 617, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 0, 0, 0, 320, 321, - 322, 323, 324, 325, 326, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 716, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 329, 330, 331, 332, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 334, 335, 336, 337, 338, 339, - 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 341, 342, 343, 344, - 345, 346, 0, 0, 0, 0, 0, 0, 0, 0, - 347, 0, 348, 349, 350, 351, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 320, 321, 322, 323, 324, - 325, 326, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 829, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 329, 330, - 331, 332, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 334, 335, 336, 337, 338, 339, 340, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 341, 342, 343, 344, 345, 346, 0, - 0, 0, 0, 0, 0, 0, 0, 347, 0, 348, - 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 1, 2, 3, 4, 5, 6, 7, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2461,73 +2014,120 @@ static const yytype_int16 yytable[] = 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 0, 0, 320, 321, 322, 323, 324, 325, 326, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 864, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 329, 330, 331, 332, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 334, 335, - 336, 337, 338, 339, 340, 0, 0, 0, 0, 0, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 341, 342, 343, 344, 345, 346, 0, 0, 0, 0, - 0, 0, 0, 0, 347, 0, 348, 349, 350, 351, + 0, 0, 0, 510, 511, 0, 330, 0, 493, 0, + 0, 0, 0, 0, 602, 512, 513, 514, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, + 334, 335, 336, 0, 0, 0, 516, 517, 518, 519, + 520, 337, 338, 339, 340, 341, 342, 343, 603, 604, + 605, 606, 0, 607, 608, 609, 610, 611, 612, 613, + 614, 615, 616, 344, 345, 346, 347, 348, 349, 350, + 521, 522, 523, 524, 525, 526, 527, 528, 351, 617, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 0, 0, 0, 320, - 321, 322, 323, 324, 325, 326, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 382, 383, 384, 385, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 510, 511, 0, 330, 0, 0, + 0, 0, 0, 0, 0, 602, 512, 513, 514, 515, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, + 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, + 519, 520, 337, 338, 339, 340, 341, 342, 343, 603, + 604, 605, 606, 0, 607, 608, 609, 610, 611, 612, + 613, 614, 615, 616, 344, 345, 346, 347, 348, 349, + 350, 521, 522, 523, 524, 525, 526, 527, 528, 351, + 617, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 510, 511, 0, 330, 0, + 0, 0, 0, 0, 0, 0, 602, 512, 513, 514, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, + 518, 519, 520, 337, 338, 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 329, 330, 331, 332, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 334, 335, 336, 337, 338, - 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 341, 342, 343, - 344, 345, 346, 0, 0, 0, 0, 0, 0, 0, - 0, 347, 0, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 2, 3, 4, + 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, + 349, 350, 521, 522, 523, 524, 525, 526, 527, 528, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -2538,7 +2138,7 @@ static const yytype_int16 yytable[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -2553,199 +2153,212 @@ static const yytype_int16 yytable[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 0, 641, 784, - 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 315, 316, 0, 0, 0, 320, 321, 322, 323, 324, + 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, - 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 0, 0, 641, 895, 0, 0, 0, 0, 0, - 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 510, 511, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, + 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 332, 333, 334, 335, 0, 0, 0, 0, 516, + 517, 518, 519, 520, 337, 338, 339, 340, 341, 342, + 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 344, 345, 346, 347, + 348, 349, 350, 521, 522, 523, 524, 525, 526, 527, + 528, 351, 0, 352, 353, 354, 355, 356, 357, 358, + 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, + 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, - 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, + 330, 0, 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 580, 0, 0, - 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, + 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, + 0, 0, 0, 0, 0, 337, 338, 339, 340, 341, + 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 344, 345, 346, + 347, 348, 349, 350, 0, 0, 0, 0, 0, 0, + 0, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 1, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 0, 0, 0, 320, 321, 322, + 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, - 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 0, 0, 641, 0, 0, 0, 0, 0, 0, - 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, - 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 332, 333, 334, 335, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 337, 338, 339, 340, + 341, 342, 343, 603, 0, 0, 606, 0, 607, 608, + 0, 0, 611, 0, 0, 0, 0, 0, 344, 345, + 346, 347, 348, 349, 350, 0, 0, 0, 0, 0, + 0, 0, 0, 351, 0, 352, 353, 354, 355, 356, + 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, + 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, + 377, 378, 379, 380, 381, 382, 383, 384, 385, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 0, 0, 0, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 743, 0, 0, - 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, + 444, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 332, 333, 334, 335, 0, 0, + 0, 0, 0, 0, 0, 0, 445, 337, 338, 339, + 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, + 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, + 0, 0, 0, 0, 351, 0, 352, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 0, 0, 0, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, + 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, + 0, 0, 0, 0, 0, 351, 0, 352, 353, 354, + 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, + 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, @@ -2755,7 +2368,7 @@ static const yytype_int16 yytable[] = 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, @@ -2771,62 +2384,291 @@ static const yytype_int16 yytable[] = 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, - 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 754, - 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, - 0, 339, 340, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 720, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, + 338, 339, 340, 341, 342, 343, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 344, 345, 346, 347, 348, 349, 350, 0, 0, + 0, 0, 0, 0, 0, 0, 351, 0, 352, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, + 0, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 833, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, + 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 337, 338, 339, 340, 341, 342, 343, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 344, 345, 346, 347, 348, 349, 350, 0, + 0, 0, 0, 0, 0, 0, 0, 351, 0, 352, + 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, + 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, + 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, + 383, 384, 385, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, + 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 868, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, + 334, 335, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 337, 338, 339, 340, 341, 342, 343, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 344, 345, 346, 347, 348, 349, 350, + 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, + 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 0, 0, 0, 320, 321, 322, 323, 324, 325, 326, + 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, + 333, 334, 335, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 337, 338, 339, 340, 341, 342, 343, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 344, 345, 346, 347, 348, 349, + 350, 0, 0, 0, 0, 0, 0, 0, 0, 351, + 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, + 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, + 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 383, 384, 385, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 0, 166, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, + 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 510, 511, 0, 0, 0, 645, + 788, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, + 519, 520, 337, 0, 0, 0, 0, 342, 343, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 521, 522, 523, 524, 525, 526, 527, 528, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 364, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 0, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, + 0, 0, 0, 0, 0, 323, 0, 0, 0, 327, + 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 510, 511, 0, 0, 0, 645, 899, + 0, 0, 0, 0, 0, 512, 513, 514, 515, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, + 520, 337, 0, 0, 0, 0, 342, 343, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 521, 522, 523, 524, 525, 526, 527, 528, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 364, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 0, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, + 0, 0, 0, 0, 323, 0, 0, 0, 327, 328, + 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, + 0, 0, 510, 511, 0, 0, 584, 0, 0, 0, + 0, 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 516, 334, 0, 0, 0, 0, 339, 340, 0, 0, + 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, + 337, 0, 0, 0, 0, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, + 522, 523, 524, 525, 526, 527, 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, + 0, 364, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -2858,251 +2700,24 @@ static const yytype_int16 yytable[] = 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 504, - 505, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 506, 507, + 0, 0, 0, 323, 0, 0, 0, 327, 328, 329, + 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 508, 509, 510, 511, 0, 0, 0, 0, 0, 0, + 0, 510, 511, 0, 0, 0, 645, 0, 0, 0, + 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 516, 334, 0, 0, 0, - 0, 339, 659, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 517, 518, 519, 520, 521, 522, - 523, 524, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 360, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 0, 0, 504, 505, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 506, 507, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 508, 509, 510, 511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 704, 334, 0, 0, 0, 0, 339, 340, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 517, - 518, 519, 520, 521, 522, 523, 524, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 360, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 516, 517, 518, 519, 520, 337, + 0, 0, 0, 0, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 521, 522, + 523, 524, 525, 526, 527, 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 334, 0, 0, 0, - 0, 339, 340 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 387, 0, 498, 486, 507, 406, 627, 547, 0, - 639, 411, 641, 0, 0, 644, 444, 439, 552, 557, - 406, 406, 572, 445, 563, 411, 746, 395, 418, 574, - 350, 361, 566, 338, 350, 333, 334, 353, 533, 358, - 353, 575, 908, 355, 350, 431, 350, 361, 361, 915, - 352, 370, 351, 353, 353, 387, 358, 387, 486, 925, - 360, 360, 351, 383, 384, 385, 386, 435, 384, 374, - 552, 369, 370, 495, 496, 387, 504, 505, 384, 411, - 384, 563, 353, 451, 566, 331, 332, 353, 353, 351, - 361, 352, 478, 575, 360, 360, 355, 358, 358, 358, - 645, 361, 361, 352, 606, 351, 608, 353, 536, 358, - 351, 357, 594, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 352, 552, 358, 352, 352, 361, 358, - 750, 352, 358, 360, 352, 563, 352, 358, 566, 352, - 358, 356, 358, 358, 639, 358, 641, 575, 351, 644, - 352, 352, 654, 352, 783, 545, 358, 358, 352, 358, - 351, 545, 384, 658, 358, 387, 594, 551, 718, 553, - 351, 561, 556, 352, 558, 353, 560, 561, 352, 358, - 387, 565, 358, 354, 358, 361, 572, 358, 574, 413, - 414, 415, 416, 417, 418, 419, 369, 352, 352, 352, - 352, 352, 570, 358, 358, 358, 358, 358, 352, 929, - 352, 352, 352, 352, 358, 352, 358, 358, 358, 358, - 352, 358, 384, 354, 354, 387, 358, 358, 358, 358, - 358, 851, 361, 361, 863, 663, 384, 637, 788, 387, - 383, 384, 385, 386, 387, 383, 384, 385, 386, 358, - 752, 637, 637, 351, 756, 729, 730, 731, 732, 645, - 384, 384, 384, 387, 387, 387, 384, 384, 384, 387, - 387, 387, 384, 807, 808, 387, 814, 815, 351, 774, - 775, 820, 384, 384, 358, 387, 387, 361, 783, 351, - 919, 713, 329, 330, 722, 723, 724, 725, 726, 727, - 728, 729, 730, 731, 732, 733, 734, 735, 736, 737, - 738, 739, 740, 335, 336, 935, 376, 377, 378, 366, - 367, 368, 363, 351, 365, 807, 808, 358, 359, 358, - 359, 361, 718, 725, 726, 387, 727, 728, 820, 387, - 822, 355, 387, 355, 733, 734, 353, 849, 387, 387, - 852, 353, 387, 352, 387, 361, 360, 358, 361, 354, - 387, 351, 358, 360, 358, 358, 358, 387, 863, 358, - 358, 352, 352, 358, 358, 358, 358, 351, 353, 807, - 808, 360, 351, 353, 350, 337, 339, 387, 356, 354, - 892, 351, 820, 351, 822, 395, 387, 373, 361, 372, - 371, 351, 788, 403, 395, 403, 406, 909, 359, 387, - 905, 411, 403, 411, 361, 406, 403, 403, 361, 351, - 411, 421, 924, 361, 919, 411, 361, 361, 361, 351, - 351, 431, 430, 387, 352, 435, 360, 352, 387, 358, - 431, 358, 358, 352, 435, 358, 354, 354, 350, 395, - 350, 451, 852, 384, 352, 356, 351, 387, 355, 352, - 451, 360, 399, 355, 355, 361, 852, 361, 356, 736, - 738, 735, 431, 435, 737, 333, 712, 577, 478, 435, - 827, 739, 854, 740, 914, 925, 892, 478, 926, 489, - 429, 854, 892, 403, 805, 803, 568, 812, 489, 808, - 810, 637, 637, 637, 822, -1, 892, -1, 815, -1, - -1, 814, -1, -1, -1, -1, -1, 818, -1, -1, - -1, -1, -1, 820, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 541, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 570, -1, 572, -1, 574, -1, -1, -1, -1, 570, - -1, 572, -1, 574, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 627, -1, -1, - -1, -1, -1, -1, -1, -1, 627, 637, -1, -1, - -1, -1, -1, -1, -1, 645, 637, -1, -1, -1, - -1, -1, -1, -1, 645, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 718, -1, - -1, -1, -1, -1, -1, -1, -1, 718, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 746, -1, -1, -1, - 750, -1, -1, -1, -1, 746, -1, -1, -1, 750, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 788, -1, - -1, -1, -1, -1, -1, -1, -1, 788, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 851, 852, -1, 854, -1, 854, -1, -1, -1, - 851, 852, -1, 854, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 892, -1, -1, -1, -1, -1, -1, -1, - -1, 892, -1, -1, -1, -1, -1, -1, 908, -1, - -1, -1, -1, -1, -1, 915, -1, 908, -1, -1, - -1, -1, -1, -1, 915, 925, -1, -1, -1, 929, - -1, -1, -1, -1, 925, 935, -1, -1, 929, -1, - -1, -1, 0, -1, 935, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, - -1, -1, -1, 361, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, - 378, 379, -1, -1, -1, -1, -1, -1, -1, -1, - 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 410, 411, 412, 413, 414, 415, -1, -1, - -1, -1, -1, -1, -1, -1, 424, -1, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 3, 4, 5, 6, 7, 8, 9, 10, + 364, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, @@ -3113,7 +2728,7 @@ static const yytype_int16 yycheck[] = 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 161, 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, @@ -3128,27 +2743,113 @@ static const yytype_int16 yycheck[] = 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, -1, -1, - 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 350, - 351, -1, 353, -1, 355, 356, -1, -1, -1, -1, - 361, 362, 363, 364, 365, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 375, 376, 377, 378, 379, -1, - -1, -1, 383, 384, 385, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, -1, 400, - 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 3, + 311, 312, 313, 314, 315, 316, 0, 0, 0, 0, + 0, 0, 323, 0, 0, 0, 327, 328, 329, 0, + 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 510, 511, 0, 0, 747, 0, 0, 0, 0, 0, + 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 516, 517, 518, 519, 520, 337, 0, + 0, 0, 0, 342, 343, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 521, 522, 523, + 524, 525, 526, 527, 528, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 0, 0, 0, 0, 0, + 0, 323, 0, 0, 0, 327, 328, 329, 0, 0, + 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, + 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 758, 512, 513, 514, 515, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 516, 517, 518, 519, 520, 337, 0, 0, + 0, 0, 342, 343, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 521, 522, 523, 524, + 525, 526, 527, 528, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 364, 2, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 0, 0, 0, 0, 0, 0, + 323, 0, 0, 0, 327, 328, 329, 0, 0, 508, + 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 516, 517, 518, 519, 520, 337, 0, 0, 0, + 0, 342, 343, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 521, 522, 523, 524, 525, + 526, 527, 528, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 364, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, @@ -3159,7 +2860,7 @@ static const yytype_int16 yycheck[] = 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, @@ -3174,112 +2875,247 @@ static const yytype_int16 yycheck[] = 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, -1, -1, 331, 332, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 350, 351, -1, 353, - -1, 355, 356, -1, -1, -1, -1, 361, 362, 363, - 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 375, 376, 377, 378, 379, -1, -1, -1, 383, - 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, - 394, 395, 396, 397, 398, -1, 400, 401, 402, 403, - 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, - 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, - 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, -1, -1, 331, 332, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, 353, -1, 355, -1, - -1, -1, -1, -1, 361, 362, 363, 364, 365, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, - 377, 378, 379, -1, -1, -1, 383, 384, 385, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, 398, -1, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, -1, - -1, 331, 332, -1, -1, -1, -1, -1, -1, -1, + 314, 315, 316, 0, 0, 0, 0, 0, 0, 323, + 0, 0, 0, 327, 328, 329, 0, 0, 508, 509, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 510, 511, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, + 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 516, 517, 518, 519, 520, 337, 0, 0, 0, 0, + 342, 663, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 521, 522, 523, 524, 525, 526, + 527, 528, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 364, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, + 0, 0, 327, 328, 329, 0, 0, 508, 509, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 510, 511, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, + 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, + 517, 518, 519, 708, 337, 0, 0, 0, 0, 342, + 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 521, 522, 523, 524, 525, 526, 527, + 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 364, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 0, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, 0, 0, 0, 0, 0, 323, 0, 0, + 0, 327, 328, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 0, 0, 0, 0, 342, 343 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 391, 0, 410, 0, 502, 490, 0, 415, 0, + 443, 511, 631, 551, 448, 561, 449, 410, 750, 578, + 410, 556, 576, 399, 353, 415, 422, 353, 341, 567, + 356, 643, 354, 645, 353, 570, 648, 353, 358, 364, + 537, 336, 337, 361, 579, 435, 356, 358, 357, 390, + 361, 354, 361, 364, 364, 373, 490, 386, 387, 388, + 389, 387, 356, 439, 377, 390, 499, 500, 387, 363, + 390, 387, 556, 414, 508, 509, 356, 372, 373, 455, + 912, 334, 335, 567, 364, 354, 570, 919, 355, 354, + 649, 356, 482, 356, 361, 579, 354, 929, 363, 355, + 363, 354, 356, 356, 354, 361, 540, 360, 387, 363, + 610, 390, 612, 354, 598, 417, 418, 419, 420, 421, + 422, 423, 556, 343, 344, 345, 346, 347, 348, 349, + 350, 351, 352, 567, 355, 754, 570, 356, 355, 361, + 361, 549, 364, 363, 361, 579, 643, 555, 645, 557, + 354, 648, 560, 549, 562, 357, 564, 565, 658, 361, + 355, 569, 332, 333, 598, 662, 361, 355, 722, 565, + 355, 355, 355, 361, 355, 787, 361, 361, 361, 355, + 361, 355, 364, 355, 355, 361, 576, 361, 578, 361, + 361, 355, 361, 355, 355, 364, 355, 361, 574, 361, + 361, 933, 361, 355, 355, 355, 355, 355, 355, 361, + 361, 361, 361, 361, 361, 355, 355, 355, 338, 339, + 357, 361, 361, 361, 361, 355, 386, 387, 388, 389, + 390, 372, 387, 667, 641, 390, 855, 359, 792, 361, + 386, 387, 388, 389, 733, 734, 735, 736, 641, 354, + 361, 641, 361, 364, 387, 867, 756, 390, 387, 649, + 760, 390, 387, 387, 387, 390, 390, 390, 387, 361, + 362, 390, 818, 819, 354, 387, 811, 812, 390, 364, + 387, 778, 779, 390, 717, 387, 824, 366, 390, 368, + 787, 354, 726, 727, 728, 729, 730, 731, 732, 733, + 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, + 744, 923, 387, 361, 361, 390, 364, 364, 361, 390, + 939, 364, 379, 380, 381, 361, 362, 811, 812, 369, + 370, 371, 722, 358, 729, 730, 390, 731, 732, 390, + 824, 390, 826, 358, 356, 737, 738, 356, 390, 390, + 355, 390, 363, 853, 364, 361, 856, 364, 361, 363, + 361, 363, 361, 390, 361, 342, 361, 361, 355, 361, + 867, 361, 361, 361, 354, 356, 355, 811, 812, 354, + 354, 353, 390, 356, 340, 354, 357, 357, 354, 357, + 824, 391, 826, 376, 359, 354, 896, 375, 374, 399, + 391, 364, 792, 364, 390, 390, 364, 407, 399, 407, + 410, 407, 909, 913, 407, 415, 407, 415, 354, 410, + 362, 364, 415, 364, 415, 425, 923, 364, 928, 364, + 354, 354, 363, 390, 355, 435, 434, 390, 355, 439, + 355, 361, 361, 361, 435, 357, 353, 361, 439, 856, + 398, 353, 390, 387, 359, 455, 355, 354, 358, 363, + 355, 364, 402, 364, 455, 358, 856, 358, 739, 359, + 740, 743, 439, 741, 336, 435, 742, 439, 581, 716, + 744, 831, 482, 858, 929, 858, 918, 930, 433, 896, + 896, 482, 809, 493, 407, 572, 641, 641, 641, 807, + 812, 816, 493, 824, -1, 819, 896, 814, -1, -1, + -1, -1, 818, -1, -1, -1, -1, 822, -1, -1, + -1, -1, 826, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 350, 351, -1, 353, -1, 355, -1, -1, -1, -1, - -1, 361, 362, 363, 364, 365, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 375, 376, 377, 378, 379, - -1, -1, -1, 383, 384, 385, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, -1, - 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + -1, -1, -1, -1, -1, -1, -1, 545, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 574, -1, 576, -1, 578, -1, + -1, -1, -1, 574, -1, 576, -1, 578, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 631, -1, -1, -1, -1, -1, -1, -1, -1, + 631, 641, -1, -1, -1, -1, -1, -1, -1, 649, + 641, -1, -1, -1, -1, -1, -1, -1, 649, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 722, -1, -1, -1, -1, -1, -1, -1, + -1, 722, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 750, -1, -1, -1, 754, -1, -1, -1, -1, 750, + -1, -1, -1, 754, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 792, -1, -1, -1, -1, -1, -1, -1, + -1, 792, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 855, 856, -1, 858, -1, + 858, -1, -1, -1, 855, 856, -1, 858, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 896, -1, -1, -1, + -1, -1, -1, -1, -1, 896, -1, -1, -1, -1, + -1, -1, 912, -1, -1, -1, -1, -1, -1, 919, + -1, 912, -1, -1, -1, -1, -1, -1, 919, 929, + -1, -1, -1, 933, -1, -1, -1, -1, 929, 939, + -1, -1, 933, -1, -1, -1, 0, -1, 939, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, + 364, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 378, 379, 380, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, 391, 392, 393, + 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, + 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, + -1, -1, -1, -1, 428, -1, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -3312,112 +3148,21 @@ static const yytype_int16 yycheck[] = 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, -1, -1, 331, 332, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 350, 351, -1, - 353, -1, -1, -1, -1, -1, -1, -1, 361, 362, - 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, 376, 377, 378, 379, -1, -1, -1, - 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, -1, 400, 401, 402, + 353, 354, -1, 356, -1, 358, 359, -1, -1, -1, + -1, 364, 365, 366, 367, 368, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 378, 379, 380, 381, 382, + -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, + 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, -1, -1, 331, 332, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 350, 351, -1, 353, -1, -1, - -1, -1, -1, -1, -1, 361, 362, 363, 364, 365, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 375, - 376, 377, 378, 379, -1, -1, -1, 383, 384, 385, - 386, 387, 388, 389, 390, 391, 392, 393, 394, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 410, 411, 412, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, -1, - 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - -1, -1, 331, 332, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 350, 351, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 375, 376, 377, 378, - -1, -1, -1, -1, 383, 384, 385, 386, 387, 388, - 389, 390, 391, 392, 393, 394, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, -1, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -3449,112 +3194,21 @@ static const yytype_int16 yycheck[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 353, -1, -1, -1, -1, -1, -1, -1, 361, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 375, 376, 377, 378, 379, -1, -1, - -1, -1, -1, -1, -1, -1, 388, 389, 390, 391, - 392, 393, 394, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 410, 411, - 412, 413, 414, 415, -1, -1, -1, -1, -1, -1, - -1, -1, 424, -1, 426, 427, 428, 429, 430, 431, + -1, 353, 354, -1, 356, -1, 358, 359, -1, -1, + -1, -1, 364, 365, 366, 367, 368, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, + 382, -1, -1, -1, 386, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, -1, -1, -1, 322, 323, 324, - 325, 326, 327, 328, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 375, 376, 377, 378, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 388, 389, 390, 391, 392, 393, 394, - 395, -1, -1, 398, -1, 400, 401, -1, -1, 404, - -1, -1, -1, -1, -1, 410, 411, 412, 413, 414, - 415, -1, -1, -1, -1, -1, -1, -1, -1, 424, - -1, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, -1, -1, -1, 322, 323, 324, 325, 326, 327, - 328, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 361, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 375, 376, 377, - 378, -1, -1, -1, -1, -1, -1, -1, -1, 387, - 388, 389, 390, 391, 392, 393, 394, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 410, 411, 412, 413, 414, 415, -1, -1, - -1, -1, -1, -1, -1, -1, 424, -1, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 3, 4, 5, 6, 7, 8, 9, 10, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, @@ -3585,113 +3239,22 @@ static const yytype_int16 yycheck[] = 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, - -1, 322, 323, 324, 325, 326, 327, 328, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 353, -1, -1, -1, -1, -1, -1, -1, + 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, + 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 375, 376, 377, 378, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 388, 389, 390, - 391, 392, 393, 394, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 410, - 411, 412, 413, 414, 415, -1, -1, -1, -1, -1, - -1, -1, -1, 424, -1, 426, 427, 428, 429, 430, + -1, -1, 353, 354, -1, 356, -1, 358, -1, -1, + -1, -1, -1, 364, 365, 366, 367, 368, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, + 381, 382, -1, -1, -1, 386, 387, 388, 389, 390, + 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, + 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, + 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, + 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, -1, -1, -1, 322, 323, - 324, 325, 326, 327, 328, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 375, 376, 377, 378, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 388, 389, 390, 391, 392, 393, - 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 410, 411, 412, 413, - 414, 415, -1, -1, -1, -1, -1, -1, -1, -1, - 424, -1, 426, 427, 428, 429, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, -1, -1, 322, 323, 324, 325, 326, - 327, 328, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 356, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 375, 376, - 377, 378, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 388, 389, 390, 391, 392, 393, 394, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 410, 411, 412, 413, 414, 415, -1, - -1, -1, -1, -1, -1, -1, -1, 424, -1, 426, - 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 3, 4, 5, 6, 7, 8, 9, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -3722,73 +3285,120 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, - -1, -1, 322, 323, 324, 325, 326, 327, 328, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 356, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 375, 376, 377, 378, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 388, 389, - 390, 391, 392, 393, 394, -1, -1, -1, -1, -1, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 410, 411, 412, 413, 414, 415, -1, -1, -1, -1, - -1, -1, -1, -1, 424, -1, 426, 427, 428, 429, + -1, -1, -1, 353, 354, -1, 356, -1, 358, -1, + -1, -1, -1, -1, 364, 365, 366, 367, 368, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, + 380, 381, 382, -1, -1, -1, 386, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, -1, -1, -1, 322, - 323, 324, 325, 326, 327, 328, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 460, 461, 462, 463, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 353, 354, -1, 356, -1, -1, + -1, -1, -1, -1, -1, 364, 365, 366, 367, 368, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, + 379, 380, 381, 382, -1, -1, -1, 386, 387, 388, + 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, + 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, + 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, + 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, + 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 353, 354, -1, 356, -1, + -1, -1, -1, -1, -1, -1, 364, 365, 366, 367, + 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 378, 379, 380, 381, 382, -1, -1, -1, 386, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 375, 376, 377, 378, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 388, 389, 390, 391, 392, - 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 410, 411, 412, - 413, 414, 415, -1, -1, -1, -1, -1, -1, -1, - -1, 424, -1, 426, 427, 428, 429, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 4, 5, 6, + -1, -1, -1, -1, -1, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, @@ -3799,7 +3409,7 @@ static const yytype_int16 yycheck[] = 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, @@ -3814,112 +3424,212 @@ static const yytype_int16 yycheck[] = 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, - -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, -1, -1, 355, 356, - -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, - 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, - 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, + 317, 318, -1, -1, -1, 322, 323, 324, 325, 326, + 327, 328, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, - 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, -1, -1, 355, 356, -1, -1, -1, -1, -1, - 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 353, 354, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 365, 366, + 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 378, 379, 380, 381, -1, -1, -1, -1, 386, + 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, + 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 413, 414, 415, 416, + 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, + 427, 428, -1, 430, 431, 432, 433, 434, 435, 436, + 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, + 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, + 457, 458, 459, 460, 461, 462, 463, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, - -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, - 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, - -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, + 356, -1, -1, -1, -1, -1, -1, -1, 364, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 378, 379, 380, 381, 382, -1, -1, -1, + -1, -1, -1, -1, -1, 391, 392, 393, 394, 395, + 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, + 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, + -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, -1, -1, -1, 322, 323, 324, + 325, 326, 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, -1, 354, -1, -1, - -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, - 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, - 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, + -1, -1, -1, 378, 379, 380, 381, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 391, 392, 393, 394, + 395, 396, 397, 398, -1, -1, 401, -1, 403, 404, + -1, -1, 407, -1, -1, -1, -1, -1, 413, 414, + 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, + -1, -1, -1, 428, -1, 430, 431, 432, 433, 434, + 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, + 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, + 455, 456, 457, 458, 459, 460, 461, 462, 463, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, -1, -1, -1, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 364, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 378, 379, 380, 381, -1, -1, + -1, -1, -1, -1, -1, -1, 390, 391, 392, 393, + 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, + 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, + -1, -1, -1, -1, 428, -1, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, -1, -1, -1, 322, + 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 356, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 378, 379, 380, 381, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 391, 392, + 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 413, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, -1, -1, -1, -1, 428, -1, 430, 431, 432, + 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, + 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, + 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, + 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, @@ -3929,7 +3639,7 @@ static const yytype_int16 yycheck[] = 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, @@ -3945,62 +3655,291 @@ static const yytype_int16 yycheck[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, - 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, -1, -1, 355, -1, -1, -1, -1, -1, -1, - 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, - -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, - 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, - -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 359, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 391, + 392, 393, 394, 395, 396, 397, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 413, 414, 415, 416, 417, 418, 419, -1, -1, + -1, -1, -1, -1, -1, -1, 428, -1, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 3, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, + -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, + 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 359, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, + 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 391, 392, 393, 394, 395, 396, 397, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 413, 414, 415, 416, 417, 418, 419, -1, + -1, -1, -1, -1, -1, -1, -1, 428, -1, 430, + 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, + 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, + 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, + 461, 462, 463, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, + -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, + 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 391, 392, 393, 394, 395, 396, 397, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, + -1, -1, -1, -1, -1, -1, -1, -1, 428, -1, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, + 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, + 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 391, 392, 393, 394, 395, 396, 397, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, + 419, -1, -1, -1, -1, -1, -1, -1, -1, 428, + -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, + 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, + 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, + 459, 460, 461, 462, 463, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, + 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, + 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, + 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, + 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, + 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, + 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, + 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, + 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, + 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, + 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, + 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, + 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, + 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, + 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, + 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, + 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, + 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, + 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, + 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, + 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, + 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, + 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, + 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, + 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, + 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, + 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, + 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, + 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, + -1, -1, -1, -1, -1, -1, 325, -1, -1, -1, + 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 353, 354, -1, -1, -1, 358, + 359, -1, -1, -1, -1, -1, 365, 366, 367, 368, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, + 389, 390, 391, -1, -1, -1, -1, 396, 397, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 420, 421, 422, 423, 424, 425, 426, 427, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 442, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, + -1, -1, -1, -1, -1, 325, -1, -1, -1, 329, + 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 353, 354, -1, -1, -1, 358, 359, + -1, -1, -1, -1, -1, 365, 366, 367, 368, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, + 390, 391, -1, -1, -1, -1, 396, 397, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 420, 421, 422, 423, 424, 425, 426, 427, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 442, 4, 5, 6, 7, 8, 9, 10, + 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, + 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, + 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, + 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, + -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, + 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, + 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, + 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, + 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, + 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, + 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, + 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, + 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, + 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, + 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, + 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, + 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, + 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, + 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, + 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, + 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, + 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, + 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, + 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, + 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, + 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, + 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, + 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, + 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, + 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, + -1, -1, -1, -1, 325, -1, -1, -1, 329, 330, + 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, -1, 354, -1, -1, - -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, + -1, -1, 353, 354, -1, -1, 357, -1, -1, -1, + -1, -1, -1, -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, - 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, + -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, + 391, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, - 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 420, + 421, 422, 423, 424, 425, 426, 427, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, + -1, 442, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -4032,105 +3971,194 @@ static const yytype_int16 yycheck[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, - 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 361, - 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 325, -1, -1, -1, 329, 330, 331, + -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, - -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, + -1, 353, 354, -1, -1, -1, 358, -1, -1, -1, + -1, -1, -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, - 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, - -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, + -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, + -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 420, 421, + 422, 423, 424, 425, 426, 427, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, + 442, 4, 5, 6, 7, 8, 9, 10, 11, 12, + 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, + 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, + 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, + 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, + 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, + 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, + 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, + 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, + 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, + 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, + 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, + 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, + 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, + 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, + 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, + 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, + 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, + 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, + 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, + 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, + 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, + 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, + 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, + 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, + 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, + -1, -1, 325, -1, -1, -1, 329, 330, 331, -1, + -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, - 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, + 353, 354, -1, -1, 357, -1, -1, -1, -1, -1, + -1, -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, - 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, + -1, -1, -1, 386, 387, 388, 389, 390, 391, -1, + -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - -1, -1, -1, 325, -1, -1, -1, -1, -1, 331, - 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 350, 351, + -1, -1, -1, -1, -1, -1, -1, 420, 421, 422, + 423, 424, 425, 426, 427, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 442, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, -1, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, + -1, 325, -1, -1, -1, 329, 330, 331, -1, -1, + 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 353, + 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 364, 365, 366, 367, 368, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 386, 387, 388, 389, 390, 391, -1, -1, + -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 420, 421, 422, 423, + 424, 425, 426, 427, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 442, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 166, -1, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 318, -1, -1, -1, -1, -1, -1, + 325, -1, -1, -1, 329, 330, 331, -1, -1, 334, + 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 353, 354, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 386, 387, 388, 389, 390, 391, -1, -1, -1, + -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 420, 421, 422, 423, 424, + 425, 426, 427, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 442, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, -1, -1, -1, -1, -1, -1, 325, + -1, -1, -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 362, 363, 364, 365, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 353, 354, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 365, + 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 383, 384, 385, 386, 387, 388, -1, -1, -1, - -1, 393, 394, -1, -1, -1, -1, -1, -1, -1, + 386, 387, 388, 389, 390, 391, -1, -1, -1, -1, + 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 416, 417, 418, 419, 420, 421, - 422, 423, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 438, 4, 5, 6, + -1, -1, -1, -1, 420, 421, 422, 423, 424, 425, + 426, 427, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 442, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -4163,57 +4191,57 @@ static const yytype_int16 yycheck[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, - -1, -1, -1, -1, 331, 332, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 350, 351, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 362, 363, 364, 365, -1, + -1, -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 383, 384, 385, 386, - 387, 388, -1, -1, -1, -1, 393, 394, -1, -1, + -1, -1, -1, -1, -1, -1, 353, 354, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 365, 366, + 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, + 387, 388, 389, 390, 391, -1, -1, -1, -1, 396, + 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 416, - 417, 418, 419, 420, 421, 422, 423, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 438, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - -1, -1, -1, 325, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 420, 421, 422, 423, 424, 425, 426, + 427, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 442, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, -1, -1, -1, -1, -1, -1, 325, -1, -1, + -1, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 388, -1, -1, -1, - -1, 393, 394 + -1, -1, -1, 391, -1, -1, -1, -1, 396, 397 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4252,143 +4280,144 @@ static const yytype_int16 yystos[] = 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 353, 361, 375, - 376, 377, 378, 379, 388, 389, 390, 391, 392, 393, - 394, 410, 411, 412, 413, 414, 415, 424, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 356, 364, 378, 379, 380, 381, 382, 391, 392, 393, + 394, 395, 396, 397, 413, 414, 415, 416, 417, 418, + 419, 428, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 491, 492, 495, 496, 497, 498, 502, 503, - 504, 505, 506, 507, 510, 511, 512, 513, 514, 516, - 521, 522, 523, 564, 565, 566, 568, 575, 579, 580, - 586, 589, 351, 351, 351, 351, 351, 351, 351, 351, - 353, 522, 355, 387, 351, 351, 361, 387, 361, 567, - 352, 358, 499, 500, 501, 511, 516, 358, 361, 387, - 361, 387, 512, 516, 369, 518, 519, 0, 565, 496, - 504, 511, 361, 495, 387, 571, 572, 590, 591, 384, - 387, 571, 384, 571, 384, 571, 384, 571, 384, 571, - 571, 590, 384, 571, 387, 569, 570, 516, 525, 355, - 387, 411, 508, 509, 387, 515, 353, 361, 517, 355, - 543, 568, 500, 499, 501, 387, 387, 351, 360, 517, - 355, 358, 361, 494, 331, 332, 350, 351, 362, 363, - 364, 365, 383, 384, 385, 386, 387, 416, 417, 418, - 419, 420, 421, 422, 423, 461, 462, 463, 465, 466, - 467, 468, 469, 470, 471, 472, 473, 514, 516, 520, - 517, 352, 387, 361, 360, 358, 352, 358, 352, 358, - 360, 358, 358, 358, 352, 358, 358, 358, 358, 358, - 358, 358, 352, 358, 352, 358, 351, 354, 358, 361, - 511, 516, 526, 527, 524, 360, 352, 358, 352, 358, - 354, 472, 474, 475, 476, 477, 478, 479, 480, 481, - 482, 483, 484, 485, 353, 361, 355, 356, 361, 395, - 396, 397, 398, 400, 401, 402, 403, 404, 405, 406, - 407, 408, 409, 425, 472, 485, 487, 489, 491, 495, - 514, 516, 532, 533, 534, 535, 536, 544, 545, 546, - 547, 550, 551, 554, 555, 556, 563, 568, 517, 360, - 517, 355, 487, 530, 360, 493, 387, 358, 361, 472, - 472, 489, 331, 332, 353, 357, 352, 352, 358, 394, - 487, 351, 472, 358, 370, 568, 350, 353, 384, 572, - 590, 387, 591, 350, 383, 384, 385, 386, 576, 577, - 384, 485, 490, 578, 384, 383, 384, 385, 386, 581, - 582, 384, 383, 384, 385, 386, 461, 583, 584, 384, - 350, 585, 384, 590, 387, 490, 587, 588, 384, 490, - 354, 570, 516, 387, 528, 529, 356, 527, 526, 490, - 509, 387, 366, 367, 368, 363, 365, 329, 330, 333, - 334, 369, 370, 335, 336, 373, 372, 371, 337, 339, - 338, 374, 354, 354, 485, 356, 537, 351, 361, 361, - 558, 351, 351, 361, 361, 489, 351, 489, 359, 361, - 361, 361, 361, 340, 341, 342, 343, 344, 345, 346, - 347, 348, 349, 360, 488, 358, 361, 356, 533, 547, - 551, 556, 530, 360, 356, 530, 531, 530, 526, 387, - 352, 464, 489, 387, 487, 472, 350, 384, 573, 574, - 352, 360, 352, 358, 352, 358, 352, 358, 358, 352, - 358, 352, 358, 352, 358, 358, 352, 358, 358, 352, - 358, 352, 358, 352, 352, 528, 517, 358, 361, 356, - 472, 472, 472, 474, 474, 475, 475, 476, 476, 476, - 476, 477, 477, 478, 479, 480, 481, 482, 483, 486, - 354, 544, 557, 533, 559, 489, 361, 489, 359, 487, - 487, 530, 356, 358, 356, 354, 354, 358, 354, 358, - 577, 576, 490, 578, 582, 581, 584, 583, 350, 585, - 587, 588, 361, 529, 489, 538, 489, 504, 549, 395, - 532, 545, 560, 352, 352, 356, 530, 350, 384, 352, - 352, 352, 352, 352, 352, 359, 356, 387, 352, 351, - 549, 561, 562, 540, 541, 542, 548, 552, 487, 360, - 534, 539, 543, 489, 361, 352, 399, 536, 534, 355, - 530, 352, 489, 539, 540, 544, 553, 361, 356 + 458, 459, 460, 461, 462, 463, 495, 496, 499, 500, + 501, 502, 506, 507, 508, 509, 510, 511, 514, 515, + 516, 517, 518, 520, 525, 526, 527, 568, 569, 570, + 572, 579, 583, 584, 590, 593, 354, 354, 354, 354, + 354, 354, 354, 354, 356, 526, 358, 390, 354, 354, + 364, 390, 364, 571, 355, 361, 503, 504, 505, 515, + 520, 361, 364, 390, 364, 390, 516, 520, 372, 522, + 523, 0, 569, 500, 508, 515, 364, 499, 390, 575, + 576, 594, 595, 387, 390, 575, 387, 575, 387, 575, + 387, 575, 387, 575, 575, 594, 387, 575, 390, 573, + 574, 520, 529, 358, 390, 414, 512, 513, 390, 519, + 356, 364, 521, 358, 547, 572, 504, 503, 505, 390, + 390, 354, 363, 521, 358, 361, 364, 498, 334, 335, + 353, 354, 365, 366, 367, 368, 386, 387, 388, 389, + 390, 420, 421, 422, 423, 424, 425, 426, 427, 465, + 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, + 477, 518, 520, 524, 521, 355, 390, 364, 363, 361, + 355, 361, 355, 361, 363, 361, 361, 361, 355, 361, + 361, 361, 361, 361, 361, 361, 355, 361, 355, 361, + 354, 357, 361, 364, 515, 520, 530, 531, 528, 363, + 355, 361, 355, 361, 357, 476, 478, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 356, 364, + 358, 359, 364, 398, 399, 400, 401, 403, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 429, 476, 489, + 491, 493, 495, 499, 518, 520, 536, 537, 538, 539, + 540, 548, 549, 550, 551, 554, 555, 558, 559, 560, + 567, 572, 521, 363, 521, 358, 491, 534, 363, 497, + 390, 361, 364, 476, 476, 493, 334, 335, 356, 360, + 355, 355, 361, 397, 491, 354, 476, 361, 373, 572, + 353, 356, 387, 576, 594, 390, 595, 353, 386, 387, + 388, 389, 580, 581, 387, 489, 494, 582, 387, 386, + 387, 388, 389, 585, 586, 387, 386, 387, 388, 389, + 465, 587, 588, 387, 353, 589, 387, 594, 390, 494, + 591, 592, 387, 494, 357, 574, 520, 390, 532, 533, + 359, 531, 530, 494, 513, 390, 369, 370, 371, 366, + 368, 332, 333, 336, 337, 372, 373, 338, 339, 376, + 375, 374, 340, 342, 341, 377, 357, 357, 489, 359, + 541, 354, 364, 364, 562, 354, 354, 364, 364, 493, + 354, 493, 362, 364, 364, 364, 364, 343, 344, 345, + 346, 347, 348, 349, 350, 351, 352, 363, 492, 361, + 364, 359, 537, 551, 555, 560, 534, 363, 359, 534, + 535, 534, 530, 390, 355, 468, 493, 390, 491, 476, + 353, 387, 577, 578, 355, 363, 355, 361, 355, 361, + 355, 361, 361, 355, 361, 355, 361, 355, 361, 361, + 355, 361, 361, 355, 361, 355, 361, 355, 355, 532, + 521, 361, 364, 359, 476, 476, 476, 478, 478, 479, + 479, 480, 480, 480, 480, 481, 481, 482, 483, 484, + 485, 486, 487, 490, 357, 548, 561, 537, 563, 493, + 364, 493, 362, 491, 491, 534, 359, 361, 359, 357, + 357, 361, 357, 361, 581, 580, 494, 582, 586, 585, + 588, 587, 353, 589, 591, 592, 364, 533, 493, 542, + 493, 508, 553, 398, 536, 549, 564, 355, 355, 359, + 534, 353, 387, 355, 355, 355, 355, 355, 355, 362, + 359, 390, 355, 354, 553, 565, 566, 544, 545, 546, + 552, 556, 491, 363, 538, 543, 547, 493, 364, 355, + 402, 540, 538, 358, 534, 355, 493, 543, 544, 548, + 557, 364, 359 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ static const yytype_int16 yyr1[] = { - 0, 460, 461, 462, 462, 462, 462, 462, 462, 462, - 462, 462, 462, 462, 462, 462, 462, 462, 463, 463, - 463, 463, 463, 463, 464, 465, 466, 467, 467, 468, - 468, 469, 469, 470, 471, 471, 471, 472, 472, 472, - 472, 473, 473, 473, 473, 474, 474, 474, 474, 475, - 475, 475, 476, 476, 476, 477, 477, 477, 477, 477, - 478, 478, 478, 479, 479, 480, 480, 481, 481, 482, - 482, 483, 483, 484, 484, 485, 486, 485, 487, 487, - 488, 488, 488, 488, 488, 488, 488, 488, 488, 488, - 488, 489, 489, 490, 491, 491, 491, 491, 491, 491, - 491, 491, 491, 491, 491, 493, 492, 494, 494, 495, - 495, 495, 495, 496, 496, 497, 497, 498, 499, 499, - 500, 500, 500, 500, 501, 502, 502, 502, 502, 502, - 503, 503, 503, 503, 503, 504, 504, 505, 506, 506, - 506, 506, 506, 506, 506, 506, 506, 506, 507, 508, - 508, 509, 509, 509, 510, 511, 511, 512, 512, 512, - 512, 512, 512, 512, 512, 512, 512, 512, 513, 513, - 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, - 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, - 513, 513, 513, 513, 513, 513, 513, 513, 513, 513, - 513, 513, 513, 513, 513, 514, 515, 515, 516, 516, - 517, 517, 517, 517, 518, 518, 519, 520, 520, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 521, 521, 521, 521, 521, - 521, 521, 521, 521, 521, 522, 522, 522, 524, 523, - 525, 523, 526, 526, 527, 527, 528, 528, 529, 529, - 530, 530, 530, 530, 531, 531, 532, 533, 533, 534, - 534, 534, 534, 534, 534, 534, 534, 535, 536, 537, - 538, 536, 539, 539, 541, 540, 542, 540, 543, 543, - 544, 544, 545, 545, 546, 546, 547, 548, 548, 549, - 549, 550, 550, 552, 551, 553, 553, 554, 554, 555, - 555, 557, 556, 558, 556, 559, 556, 560, 560, 561, - 561, 562, 562, 563, 563, 563, 563, 563, 563, 563, - 563, 564, 564, 565, 565, 565, 567, 566, 568, 569, - 569, 570, 570, 571, 571, 572, 572, 573, 573, 574, - 574, 575, 575, 575, 575, 575, 575, 576, 576, 577, - 577, 577, 577, 577, 578, 578, 579, 579, 580, 580, - 580, 580, 580, 580, 580, 580, 581, 581, 582, 582, - 582, 582, 583, 583, 584, 584, 584, 584, 584, 585, - 585, 586, 586, 586, 586, 587, 587, 588, 589, 589, - 590, 590, 591, 591 + 0, 464, 465, 466, 466, 466, 466, 466, 466, 466, + 466, 466, 466, 466, 466, 466, 466, 466, 467, 467, + 467, 467, 467, 467, 468, 469, 470, 471, 471, 472, + 472, 473, 473, 474, 475, 475, 475, 476, 476, 476, + 476, 477, 477, 477, 477, 478, 478, 478, 478, 479, + 479, 479, 480, 480, 480, 481, 481, 481, 481, 481, + 482, 482, 482, 483, 483, 484, 484, 485, 485, 486, + 486, 487, 487, 488, 488, 489, 490, 489, 491, 491, + 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, + 492, 493, 493, 494, 495, 495, 495, 495, 495, 495, + 495, 495, 495, 495, 495, 497, 496, 498, 498, 499, + 499, 499, 499, 500, 500, 501, 501, 502, 503, 503, + 504, 504, 504, 504, 505, 506, 506, 506, 506, 506, + 507, 507, 507, 507, 507, 508, 508, 509, 510, 510, + 510, 510, 510, 510, 510, 510, 510, 510, 511, 512, + 512, 513, 513, 513, 514, 515, 515, 516, 516, 516, + 516, 516, 516, 516, 516, 516, 516, 516, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 518, 519, 519, 520, + 520, 521, 521, 521, 521, 522, 522, 523, 524, 524, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, + 525, 525, 525, 525, 525, 525, 525, 525, 525, 526, + 526, 526, 528, 527, 529, 527, 530, 530, 531, 531, + 532, 532, 533, 533, 534, 534, 534, 534, 535, 535, + 536, 537, 537, 538, 538, 538, 538, 538, 538, 538, + 538, 539, 540, 541, 542, 540, 543, 543, 545, 544, + 546, 544, 547, 547, 548, 548, 549, 549, 550, 550, + 551, 552, 552, 553, 553, 554, 554, 556, 555, 557, + 557, 558, 558, 559, 559, 561, 560, 562, 560, 563, + 560, 564, 564, 565, 565, 566, 566, 567, 567, 567, + 567, 567, 567, 567, 567, 568, 568, 569, 569, 569, + 571, 570, 572, 573, 573, 574, 574, 575, 575, 576, + 576, 577, 577, 578, 578, 579, 579, 579, 579, 579, + 579, 580, 580, 581, 581, 581, 581, 581, 582, 582, + 583, 583, 584, 584, 584, 584, 584, 584, 584, 584, + 585, 585, 586, 586, 586, 586, 587, 587, 588, 588, + 588, 588, 588, 589, 589, 590, 590, 590, 590, 591, + 591, 592, 593, 593, 594, 594, 595, 595 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4414,8 +4443,9 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 4, 1, 1, 1, 3, 2, 3, - 2, 3, 3, 4, 1, 0, 3, 1, 3, 1, + 1, 1, 1, 1, 4, 1, 1, 1, 3, 2, + 3, 2, 3, 3, 4, 1, 0, 3, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4447,23 +4477,22 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 0, 6, - 0, 5, 1, 2, 3, 4, 1, 3, 1, 2, - 1, 3, 4, 2, 1, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 2, 2, 0, - 0, 5, 1, 1, 0, 2, 0, 2, 2, 3, - 1, 2, 1, 2, 1, 2, 5, 3, 1, 1, - 4, 1, 2, 0, 8, 0, 1, 3, 2, 1, - 2, 0, 6, 0, 8, 0, 7, 1, 1, 1, - 0, 2, 3, 2, 2, 2, 3, 2, 2, 2, - 2, 1, 2, 1, 1, 1, 0, 3, 5, 1, - 3, 1, 4, 1, 3, 5, 5, 1, 3, 1, - 3, 4, 6, 6, 8, 6, 8, 1, 3, 1, - 1, 1, 1, 1, 1, 3, 4, 6, 4, 6, - 6, 8, 6, 8, 6, 8, 1, 3, 1, 1, - 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, - 3, 6, 8, 4, 6, 1, 3, 1, 4, 6, - 1, 3, 3, 3 + 1, 1, 0, 6, 0, 5, 1, 2, 3, 4, + 1, 3, 1, 2, 1, 3, 4, 2, 1, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 2, 0, 0, 5, 1, 1, 0, 2, + 0, 2, 2, 3, 1, 2, 1, 2, 1, 2, + 5, 3, 1, 1, 4, 1, 2, 0, 8, 0, + 1, 3, 2, 1, 2, 0, 6, 0, 8, 0, + 7, 1, 1, 1, 0, 2, 3, 2, 2, 2, + 3, 2, 2, 2, 2, 1, 2, 1, 1, 1, + 0, 3, 5, 1, 3, 1, 4, 1, 3, 5, + 5, 1, 3, 1, 3, 4, 6, 6, 8, 6, + 8, 1, 3, 1, 1, 1, 1, 1, 1, 3, + 4, 6, 4, 6, 6, 8, 6, 8, 6, 8, + 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, + 1, 1, 1, 1, 3, 6, 8, 4, 6, 1, + 3, 1, 4, 6, 1, 3, 3, 3 }; @@ -5209,260 +5238,260 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 393 "MachineIndependent/glslang.y" +#line 394 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5217 "MachineIndependent/glslang_tab.cpp" +#line 5246 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ -#line 399 "MachineIndependent/glslang.y" +#line 400 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5225 "MachineIndependent/glslang_tab.cpp" +#line 5254 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 402 "MachineIndependent/glslang.y" +#line 403 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5235 "MachineIndependent/glslang_tab.cpp" +#line 5264 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 407 "MachineIndependent/glslang.y" +#line 408 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5243 "MachineIndependent/glslang_tab.cpp" +#line 5272 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ -#line 410 "MachineIndependent/glslang.y" +#line 411 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5251 "MachineIndependent/glslang_tab.cpp" +#line 5280 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ -#line 413 "MachineIndependent/glslang.y" +#line 414 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5260 "MachineIndependent/glslang_tab.cpp" +#line 5289 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ -#line 417 "MachineIndependent/glslang.y" +#line 418 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5268 "MachineIndependent/glslang_tab.cpp" +#line 5297 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ -#line 421 "MachineIndependent/glslang.y" +#line 422 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5276 "MachineIndependent/glslang_tab.cpp" +#line 5305 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ -#line 424 "MachineIndependent/glslang.y" +#line 425 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5285 "MachineIndependent/glslang_tab.cpp" +#line 5314 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ -#line 428 "MachineIndependent/glslang.y" +#line 429 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5294 "MachineIndependent/glslang_tab.cpp" +#line 5323 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ -#line 432 "MachineIndependent/glslang.y" +#line 433 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5303 "MachineIndependent/glslang_tab.cpp" +#line 5332 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 436 "MachineIndependent/glslang.y" +#line 437 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5312 "MachineIndependent/glslang_tab.cpp" +#line 5341 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ -#line 440 "MachineIndependent/glslang.y" +#line 441 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5321 "MachineIndependent/glslang_tab.cpp" +#line 5350 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 444 "MachineIndependent/glslang.y" +#line 445 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5330 "MachineIndependent/glslang_tab.cpp" +#line 5359 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 448 "MachineIndependent/glslang.y" +#line 449 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5341 "MachineIndependent/glslang_tab.cpp" +#line 5370 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 454 "MachineIndependent/glslang.y" +#line 455 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5350 "MachineIndependent/glslang_tab.cpp" +#line 5379 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ -#line 462 "MachineIndependent/glslang.y" +#line 463 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5358 "MachineIndependent/glslang_tab.cpp" +#line 5387 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 465 "MachineIndependent/glslang.y" +#line 466 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5366 "MachineIndependent/glslang_tab.cpp" +#line 5395 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ -#line 468 "MachineIndependent/glslang.y" +#line 469 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5374 "MachineIndependent/glslang_tab.cpp" +#line 5403 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 471 "MachineIndependent/glslang.y" +#line 472 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5382 "MachineIndependent/glslang_tab.cpp" +#line 5411 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 474 "MachineIndependent/glslang.y" +#line 475 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5392 "MachineIndependent/glslang_tab.cpp" +#line 5421 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 479 "MachineIndependent/glslang.y" +#line 480 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5402 "MachineIndependent/glslang_tab.cpp" +#line 5431 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ -#line 487 "MachineIndependent/glslang.y" +#line 488 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5411 "MachineIndependent/glslang_tab.cpp" +#line 5440 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ -#line 494 "MachineIndependent/glslang.y" +#line 495 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5420 "MachineIndependent/glslang_tab.cpp" +#line 5449 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ -#line 501 "MachineIndependent/glslang.y" +#line 502 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5428 "MachineIndependent/glslang_tab.cpp" +#line 5457 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 507 "MachineIndependent/glslang.y" +#line 508 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5437 "MachineIndependent/glslang_tab.cpp" +#line 5466 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 511 "MachineIndependent/glslang.y" +#line 512 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5446 "MachineIndependent/glslang_tab.cpp" +#line 5475 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 518 "MachineIndependent/glslang.y" +#line 519 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5454 "MachineIndependent/glslang_tab.cpp" +#line 5483 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ -#line 521 "MachineIndependent/glslang.y" +#line 522 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5462 "MachineIndependent/glslang_tab.cpp" +#line 5491 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 527 "MachineIndependent/glslang.y" +#line 528 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -5470,11 +5499,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5474 "MachineIndependent/glslang_tab.cpp" +#line 5503 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 534 "MachineIndependent/glslang.y" +#line 535 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -5482,29 +5511,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5486 "MachineIndependent/glslang_tab.cpp" +#line 5515 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 544 "MachineIndependent/glslang.y" +#line 545 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5494 "MachineIndependent/glslang_tab.cpp" +#line 5523 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 552 "MachineIndependent/glslang.y" +#line 553 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5504 "MachineIndependent/glslang_tab.cpp" +#line 5533 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 557 "MachineIndependent/glslang.y" +#line 558 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5532,50 +5561,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5536 "MachineIndependent/glslang_tab.cpp" +#line 5565 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 585 "MachineIndependent/glslang.y" +#line 586 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5546 "MachineIndependent/glslang_tab.cpp" +#line 5575 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 594 "MachineIndependent/glslang.y" +#line 595 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5557 "MachineIndependent/glslang_tab.cpp" +#line 5586 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 600 "MachineIndependent/glslang.y" +#line 601 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5566 "MachineIndependent/glslang_tab.cpp" +#line 5595 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 604 "MachineIndependent/glslang.y" +#line 605 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5575 "MachineIndependent/glslang_tab.cpp" +#line 5604 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 608 "MachineIndependent/glslang.y" +#line 609 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5592,179 +5621,179 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5596 "MachineIndependent/glslang_tab.cpp" +#line 5625 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 628 "MachineIndependent/glslang.y" +#line 629 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5602 "MachineIndependent/glslang_tab.cpp" +#line 5631 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 629 "MachineIndependent/glslang.y" +#line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5608 "MachineIndependent/glslang_tab.cpp" +#line 5637 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 630 "MachineIndependent/glslang.y" +#line 631 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5614 "MachineIndependent/glslang_tab.cpp" +#line 5643 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 631 "MachineIndependent/glslang.y" +#line 632 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5621 "MachineIndependent/glslang_tab.cpp" +#line 5650 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 637 "MachineIndependent/glslang.y" +#line 638 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5627 "MachineIndependent/glslang_tab.cpp" +#line 5656 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 638 "MachineIndependent/glslang.y" +#line 639 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5637 "MachineIndependent/glslang_tab.cpp" +#line 5666 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 643 "MachineIndependent/glslang.y" +#line 644 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5647 "MachineIndependent/glslang_tab.cpp" +#line 5676 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 648 "MachineIndependent/glslang.y" +#line 649 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5658 "MachineIndependent/glslang_tab.cpp" +#line 5687 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 657 "MachineIndependent/glslang.y" +#line 658 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5664 "MachineIndependent/glslang_tab.cpp" +#line 5693 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 658 "MachineIndependent/glslang.y" +#line 659 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5674 "MachineIndependent/glslang_tab.cpp" +#line 5703 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 663 "MachineIndependent/glslang.y" +#line 664 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5684 "MachineIndependent/glslang_tab.cpp" +#line 5713 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 671 "MachineIndependent/glslang.y" +#line 672 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5690 "MachineIndependent/glslang_tab.cpp" +#line 5719 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 672 "MachineIndependent/glslang.y" +#line 673 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5701 "MachineIndependent/glslang_tab.cpp" +#line 5730 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 678 "MachineIndependent/glslang.y" +#line 679 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5712 "MachineIndependent/glslang_tab.cpp" +#line 5741 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 687 "MachineIndependent/glslang.y" +#line 688 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5718 "MachineIndependent/glslang_tab.cpp" +#line 5747 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 688 "MachineIndependent/glslang.y" +#line 689 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5728 "MachineIndependent/glslang_tab.cpp" +#line 5757 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 693 "MachineIndependent/glslang.y" +#line 694 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5738 "MachineIndependent/glslang_tab.cpp" +#line 5767 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 698 "MachineIndependent/glslang.y" +#line 699 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5748 "MachineIndependent/glslang_tab.cpp" +#line 5777 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 703 "MachineIndependent/glslang.y" +#line 704 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5758 "MachineIndependent/glslang_tab.cpp" +#line 5787 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 711 "MachineIndependent/glslang.y" +#line 712 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5764 "MachineIndependent/glslang_tab.cpp" +#line 5793 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 712 "MachineIndependent/glslang.y" +#line 713 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5774,11 +5803,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5778 "MachineIndependent/glslang_tab.cpp" +#line 5807 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 721 "MachineIndependent/glslang.y" +#line 722 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5788,124 +5817,124 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5792 "MachineIndependent/glslang_tab.cpp" +#line 5821 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 733 "MachineIndependent/glslang.y" +#line 734 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5798 "MachineIndependent/glslang_tab.cpp" +#line 5827 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 734 "MachineIndependent/glslang.y" +#line 735 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5809 "MachineIndependent/glslang_tab.cpp" +#line 5838 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 743 "MachineIndependent/glslang.y" +#line 744 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5815 "MachineIndependent/glslang_tab.cpp" +#line 5844 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 744 "MachineIndependent/glslang.y" +#line 745 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5826 "MachineIndependent/glslang_tab.cpp" +#line 5855 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 753 "MachineIndependent/glslang.y" +#line 754 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5832 "MachineIndependent/glslang_tab.cpp" +#line 5861 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 754 "MachineIndependent/glslang.y" +#line 755 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5843 "MachineIndependent/glslang_tab.cpp" +#line 5872 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 763 "MachineIndependent/glslang.y" +#line 764 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5849 "MachineIndependent/glslang_tab.cpp" +#line 5878 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 764 "MachineIndependent/glslang.y" +#line 765 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5859 "MachineIndependent/glslang_tab.cpp" +#line 5888 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 772 "MachineIndependent/glslang.y" +#line 773 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5865 "MachineIndependent/glslang_tab.cpp" +#line 5894 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 773 "MachineIndependent/glslang.y" +#line 774 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5875 "MachineIndependent/glslang_tab.cpp" +#line 5904 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 781 "MachineIndependent/glslang.y" +#line 782 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5881 "MachineIndependent/glslang_tab.cpp" +#line 5910 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 782 "MachineIndependent/glslang.y" +#line 783 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5891 "MachineIndependent/glslang_tab.cpp" +#line 5920 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 790 "MachineIndependent/glslang.y" +#line 791 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5897 "MachineIndependent/glslang_tab.cpp" +#line 5926 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 791 "MachineIndependent/glslang.y" +#line 792 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5905 "MachineIndependent/glslang_tab.cpp" +#line 5934 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 794 "MachineIndependent/glslang.y" +#line 795 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5918,17 +5947,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5922 "MachineIndependent/glslang_tab.cpp" +#line 5951 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 809 "MachineIndependent/glslang.y" +#line 810 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5928 "MachineIndependent/glslang_tab.cpp" +#line 5957 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 810 "MachineIndependent/glslang.y" +#line 811 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5942,119 +5971,119 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5946 "MachineIndependent/glslang_tab.cpp" +#line 5975 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 826 "MachineIndependent/glslang.y" +#line 827 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5955 "MachineIndependent/glslang_tab.cpp" +#line 5984 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 830 "MachineIndependent/glslang.y" +#line 831 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5964 "MachineIndependent/glslang_tab.cpp" +#line 5993 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 834 "MachineIndependent/glslang.y" +#line 835 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5973 "MachineIndependent/glslang_tab.cpp" +#line 6002 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 838 "MachineIndependent/glslang.y" +#line 839 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5983 "MachineIndependent/glslang_tab.cpp" +#line 6012 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 843 "MachineIndependent/glslang.y" +#line 844 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5992 "MachineIndependent/glslang_tab.cpp" +#line 6021 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 847 "MachineIndependent/glslang.y" +#line 848 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6001 "MachineIndependent/glslang_tab.cpp" +#line 6030 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 851 "MachineIndependent/glslang.y" +#line 852 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6010 "MachineIndependent/glslang_tab.cpp" +#line 6039 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 855 "MachineIndependent/glslang.y" +#line 856 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6019 "MachineIndependent/glslang_tab.cpp" +#line 6048 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 859 "MachineIndependent/glslang.y" +#line 860 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6028 "MachineIndependent/glslang_tab.cpp" +#line 6057 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 863 "MachineIndependent/glslang.y" +#line 864 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6037 "MachineIndependent/glslang_tab.cpp" +#line 6066 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 867 "MachineIndependent/glslang.y" +#line 868 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6046 "MachineIndependent/glslang_tab.cpp" +#line 6075 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 874 "MachineIndependent/glslang.y" +#line 875 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6054 "MachineIndependent/glslang_tab.cpp" +#line 6083 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 877 "MachineIndependent/glslang.y" +#line 878 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6063,30 +6092,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6067 "MachineIndependent/glslang_tab.cpp" +#line 6096 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 888 "MachineIndependent/glslang.y" +#line 889 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6076 "MachineIndependent/glslang_tab.cpp" +#line 6105 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 895 "MachineIndependent/glslang.y" +#line 896 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6086 "MachineIndependent/glslang_tab.cpp" +#line 6115 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 901 "MachineIndependent/glslang.y" +#line 902 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6094,31 +6123,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6098 "MachineIndependent/glslang_tab.cpp" +#line 6127 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 908 "MachineIndependent/glslang.y" +#line 909 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6108 "MachineIndependent/glslang_tab.cpp" +#line 6137 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 914 "MachineIndependent/glslang.y" +#line 915 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6118 "MachineIndependent/glslang_tab.cpp" +#line 6147 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 919 "MachineIndependent/glslang.y" +#line 920 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6126,75 +6155,75 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6130 "MachineIndependent/glslang_tab.cpp" +#line 6159 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 926 "MachineIndependent/glslang.y" +#line 927 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6139 "MachineIndependent/glslang_tab.cpp" +#line 6168 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 930 "MachineIndependent/glslang.y" +#line 931 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6148 "MachineIndependent/glslang_tab.cpp" +#line 6177 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 934 "MachineIndependent/glslang.y" +#line 935 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6157 "MachineIndependent/glslang_tab.cpp" +#line 6186 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 938 "MachineIndependent/glslang.y" +#line 939 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6167 "MachineIndependent/glslang_tab.cpp" +#line 6196 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 943 "MachineIndependent/glslang.y" +#line 944 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6177 "MachineIndependent/glslang_tab.cpp" +#line 6206 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 948 "MachineIndependent/glslang.y" +#line 949 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6188 "MachineIndependent/glslang_tab.cpp" +#line 6217 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ -#line 957 "MachineIndependent/glslang.y" +#line 958 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6194 "MachineIndependent/glslang_tab.cpp" +#line 6223 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 957 "MachineIndependent/glslang.y" +#line 958 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6204,60 +6233,60 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6208 "MachineIndependent/glslang_tab.cpp" +#line 6237 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 968 "MachineIndependent/glslang.y" +#line 969 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6217 "MachineIndependent/glslang_tab.cpp" +#line 6246 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 972 "MachineIndependent/glslang.y" +#line 973 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6226 "MachineIndependent/glslang_tab.cpp" +#line 6255 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 979 "MachineIndependent/glslang.y" +#line 980 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6235 "MachineIndependent/glslang_tab.cpp" +#line 6264 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 983 "MachineIndependent/glslang.y" +#line 984 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6246 "MachineIndependent/glslang_tab.cpp" +#line 6275 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 989 "MachineIndependent/glslang.y" +#line 990 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6257 "MachineIndependent/glslang_tab.cpp" +#line 6286 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 995 "MachineIndependent/glslang.y" +#line 996 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; @@ -6265,27 +6294,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6269 "MachineIndependent/glslang_tab.cpp" +#line 6298 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 1005 "MachineIndependent/glslang.y" +#line 1006 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6277 "MachineIndependent/glslang_tab.cpp" +#line 6306 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 1008 "MachineIndependent/glslang.y" +#line 1009 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6285 "MachineIndependent/glslang_tab.cpp" +#line 6314 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1015 "MachineIndependent/glslang.y" +#line 1016 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6294,11 +6323,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6298 "MachineIndependent/glslang_tab.cpp" +#line 6327 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1023 "MachineIndependent/glslang.y" +#line 1024 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6316,11 +6345,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6320 "MachineIndependent/glslang_tab.cpp" +#line 6349 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1043 "MachineIndependent/glslang.y" +#line 1044 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6340,11 +6369,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6344 "MachineIndependent/glslang_tab.cpp" +#line 6373 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1066 "MachineIndependent/glslang.y" +#line 1067 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6360,11 +6389,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6364 "MachineIndependent/glslang_tab.cpp" +#line 6393 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1081 "MachineIndependent/glslang.y" +#line 1082 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6384,11 +6413,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6388 "MachineIndependent/glslang_tab.cpp" +#line 6417 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1106 "MachineIndependent/glslang.y" +#line 1107 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6400,11 +6429,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6404 "MachineIndependent/glslang_tab.cpp" +#line 6433 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1117 "MachineIndependent/glslang.y" +#line 1118 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6412,11 +6441,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6416 "MachineIndependent/glslang_tab.cpp" +#line 6445 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1127 "MachineIndependent/glslang.y" +#line 1128 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6427,11 +6456,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6431 "MachineIndependent/glslang_tab.cpp" +#line 6460 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1137 "MachineIndependent/glslang.y" +#line 1138 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6439,68 +6468,68 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6443 "MachineIndependent/glslang_tab.cpp" +#line 6472 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1147 "MachineIndependent/glslang.y" +#line 1148 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6454 "MachineIndependent/glslang_tab.cpp" +#line 6483 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1156 "MachineIndependent/glslang.y" +#line 1157 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6462 "MachineIndependent/glslang_tab.cpp" +#line 6491 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1159 "MachineIndependent/glslang.y" +#line 1160 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6471 "MachineIndependent/glslang_tab.cpp" +#line 6500 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1163 "MachineIndependent/glslang.y" +#line 1164 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6480 "MachineIndependent/glslang_tab.cpp" +#line 6509 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1167 "MachineIndependent/glslang.y" +#line 1168 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6490 "MachineIndependent/glslang_tab.cpp" +#line 6519 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1172 "MachineIndependent/glslang.y" +#line 1173 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6500 "MachineIndependent/glslang_tab.cpp" +#line 6529 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1180 "MachineIndependent/glslang.y" +#line 1181 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; @@ -6508,51 +6537,51 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6512 "MachineIndependent/glslang_tab.cpp" +#line 6541 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1187 "MachineIndependent/glslang.y" +#line 1188 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6522 "MachineIndependent/glslang_tab.cpp" +#line 6551 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1192 "MachineIndependent/glslang.y" +#line 1193 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6532 "MachineIndependent/glslang_tab.cpp" +#line 6561 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1197 "MachineIndependent/glslang.y" +#line 1198 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6542 "MachineIndependent/glslang_tab.cpp" +#line 6571 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1202 "MachineIndependent/glslang.y" +#line 1203 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6552 "MachineIndependent/glslang_tab.cpp" +#line 6581 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1211 "MachineIndependent/glslang.y" +#line 1212 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6563,11 +6592,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 6567 "MachineIndependent/glslang_tab.cpp" +#line 6596 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1221 "MachineIndependent/glslang.y" +#line 1222 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6592,22 +6621,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6596 "MachineIndependent/glslang_tab.cpp" +#line 6625 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1248 "MachineIndependent/glslang.y" +#line 1249 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6607 "MachineIndependent/glslang_tab.cpp" +#line 6636 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1257 "MachineIndependent/glslang.y" +#line 1258 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6615,11 +6644,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6619 "MachineIndependent/glslang_tab.cpp" +#line 6648 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1264 "MachineIndependent/glslang.y" +#line 1265 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6627,11 +6656,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6631 "MachineIndependent/glslang_tab.cpp" +#line 6660 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1272 "MachineIndependent/glslang.y" +#line 1273 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6639,11 +6668,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6643 "MachineIndependent/glslang_tab.cpp" +#line 6672 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1279 "MachineIndependent/glslang.y" +#line 1280 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6651,11 +6680,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6655 "MachineIndependent/glslang_tab.cpp" +#line 6684 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1286 "MachineIndependent/glslang.y" +#line 1287 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6664,11 +6693,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6668 "MachineIndependent/glslang_tab.cpp" +#line 6697 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1294 "MachineIndependent/glslang.y" +#line 1295 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6677,11 +6706,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6681 "MachineIndependent/glslang_tab.cpp" +#line 6710 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1302 "MachineIndependent/glslang.y" +#line 1303 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6692,11 +6721,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6696 "MachineIndependent/glslang_tab.cpp" +#line 6725 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1312 "MachineIndependent/glslang.y" +#line 1313 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6707,11 +6736,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6711 "MachineIndependent/glslang_tab.cpp" +#line 6740 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1322 "MachineIndependent/glslang.y" +#line 1323 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6719,11 +6748,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6723 "MachineIndependent/glslang_tab.cpp" +#line 6752 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1329 "MachineIndependent/glslang.y" +#line 1330 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6731,84 +6760,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6735 "MachineIndependent/glslang_tab.cpp" +#line 6764 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1340 "MachineIndependent/glslang.y" +#line 1341 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6743 "MachineIndependent/glslang_tab.cpp" +#line 6772 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1346 "MachineIndependent/glslang.y" +#line 1347 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6751 "MachineIndependent/glslang_tab.cpp" +#line 6780 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1349 "MachineIndependent/glslang.y" +#line 1350 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6761 "MachineIndependent/glslang_tab.cpp" +#line 6790 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1356 "MachineIndependent/glslang.y" +#line 1357 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6770 "MachineIndependent/glslang_tab.cpp" +#line 6799 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1360 "MachineIndependent/glslang.y" +#line 1361 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6779 "MachineIndependent/glslang_tab.cpp" +#line 6808 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1364 "MachineIndependent/glslang.y" +#line 1365 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6789 "MachineIndependent/glslang_tab.cpp" +#line 6818 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1373 "MachineIndependent/glslang.y" +#line 1374 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6800 "MachineIndependent/glslang_tab.cpp" +#line 6829 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1383 "MachineIndependent/glslang.y" +#line 1384 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6808 "MachineIndependent/glslang_tab.cpp" +#line 6837 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1386 "MachineIndependent/glslang.y" +#line 1387 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6817,151 +6846,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6821 "MachineIndependent/glslang_tab.cpp" +#line 6850 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1397 "MachineIndependent/glslang.y" +#line 1398 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6829 "MachineIndependent/glslang_tab.cpp" +#line 6858 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1400 "MachineIndependent/glslang.y" +#line 1401 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6837 "MachineIndependent/glslang_tab.cpp" +#line 6866 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1403 "MachineIndependent/glslang.y" +#line 1404 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6846 "MachineIndependent/glslang_tab.cpp" +#line 6875 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1407 "MachineIndependent/glslang.y" +#line 1408 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6855 "MachineIndependent/glslang_tab.cpp" +#line 6884 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1411 "MachineIndependent/glslang.y" +#line 1412 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6864 "MachineIndependent/glslang_tab.cpp" +#line 6893 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1416 "MachineIndependent/glslang.y" +#line 1417 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6873 "MachineIndependent/glslang_tab.cpp" +#line 6902 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1420 "MachineIndependent/glslang.y" +#line 1421 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6881 "MachineIndependent/glslang_tab.cpp" +#line 6910 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1423 "MachineIndependent/glslang.y" +#line 1424 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6891 "MachineIndependent/glslang_tab.cpp" +#line 6920 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1428 "MachineIndependent/glslang.y" +#line 1429 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6900 "MachineIndependent/glslang_tab.cpp" +#line 6929 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1432 "MachineIndependent/glslang.y" +#line 1433 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6910 "MachineIndependent/glslang_tab.cpp" +#line 6939 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1437 "MachineIndependent/glslang.y" +#line 1438 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6920 "MachineIndependent/glslang_tab.cpp" +#line 6949 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1446 "MachineIndependent/glslang.y" +#line 1447 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6929 "MachineIndependent/glslang_tab.cpp" +#line 6958 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1450 "MachineIndependent/glslang.y" +#line 1451 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6939 "MachineIndependent/glslang_tab.cpp" +#line 6968 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1455 "MachineIndependent/glslang.y" +#line 1456 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6950 "MachineIndependent/glslang_tab.cpp" +#line 6979 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1461 "MachineIndependent/glslang.y" +#line 1462 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6961 "MachineIndependent/glslang_tab.cpp" +#line 6990 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1467 "MachineIndependent/glslang.y" +#line 1468 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6969,21 +6998,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6973 "MachineIndependent/glslang_tab.cpp" +#line 7002 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1474 "MachineIndependent/glslang.y" +#line 1475 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6983 "MachineIndependent/glslang_tab.cpp" +#line 7012 "MachineIndependent/glslang_tab.cpp" + break; + + case 174: /* storage_qualifier: TILEIMAGEEXT */ +#line 1480 "MachineIndependent/glslang.y" + { + parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); + (yyval.interm.type).init((yyvsp[0].lex).loc); + (yyval.interm.type).qualifier.storage = EvqTileImageEXT; + } +#line 7022 "MachineIndependent/glslang_tab.cpp" break; - case 174: /* storage_qualifier: SHARED */ -#line 1479 "MachineIndependent/glslang.y" + case 175: /* storage_qualifier: SHARED */ +#line 1485 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -6992,21 +7031,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 6996 "MachineIndependent/glslang_tab.cpp" +#line 7035 "MachineIndependent/glslang_tab.cpp" break; - case 175: /* storage_qualifier: BUFFER */ -#line 1487 "MachineIndependent/glslang.y" + case 176: /* storage_qualifier: BUFFER */ +#line 1493 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7006 "MachineIndependent/glslang_tab.cpp" +#line 7045 "MachineIndependent/glslang_tab.cpp" break; - case 176: /* storage_qualifier: ATTRIBUTE */ -#line 1493 "MachineIndependent/glslang.y" + case 177: /* storage_qualifier: ATTRIBUTE */ +#line 1499 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7019,11 +7058,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7023 "MachineIndependent/glslang_tab.cpp" +#line 7062 "MachineIndependent/glslang_tab.cpp" break; - case 177: /* storage_qualifier: VARYING */ -#line 1505 "MachineIndependent/glslang.y" + case 178: /* storage_qualifier: VARYING */ +#line 1511 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7038,32 +7077,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7042 "MachineIndependent/glslang_tab.cpp" +#line 7081 "MachineIndependent/glslang_tab.cpp" break; - case 178: /* storage_qualifier: PATCH */ -#line 1519 "MachineIndependent/glslang.y" + case 179: /* storage_qualifier: PATCH */ +#line 1525 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7053 "MachineIndependent/glslang_tab.cpp" +#line 7092 "MachineIndependent/glslang_tab.cpp" break; - case 179: /* storage_qualifier: SAMPLE */ -#line 1525 "MachineIndependent/glslang.y" + case 180: /* storage_qualifier: SAMPLE */ +#line 1531 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7063 "MachineIndependent/glslang_tab.cpp" +#line 7102 "MachineIndependent/glslang_tab.cpp" break; - case 180: /* storage_qualifier: HITATTRNV */ -#line 1530 "MachineIndependent/glslang.y" + case 181: /* storage_qualifier: HITATTRNV */ +#line 1536 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7072,11 +7111,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7076 "MachineIndependent/glslang_tab.cpp" +#line 7115 "MachineIndependent/glslang_tab.cpp" break; - case 181: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1538 "MachineIndependent/glslang.y" + case 182: /* storage_qualifier: HITOBJECTATTRNV */ +#line 1544 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7085,11 +7124,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7089 "MachineIndependent/glslang_tab.cpp" +#line 7128 "MachineIndependent/glslang_tab.cpp" break; - case 182: /* storage_qualifier: HITATTREXT */ -#line 1546 "MachineIndependent/glslang.y" + case 183: /* storage_qualifier: HITATTREXT */ +#line 1552 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7098,11 +7137,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7102 "MachineIndependent/glslang_tab.cpp" +#line 7141 "MachineIndependent/glslang_tab.cpp" break; - case 183: /* storage_qualifier: PAYLOADNV */ -#line 1554 "MachineIndependent/glslang.y" + case 184: /* storage_qualifier: PAYLOADNV */ +#line 1560 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7111,11 +7150,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7115 "MachineIndependent/glslang_tab.cpp" +#line 7154 "MachineIndependent/glslang_tab.cpp" break; - case 184: /* storage_qualifier: PAYLOADEXT */ -#line 1562 "MachineIndependent/glslang.y" + case 185: /* storage_qualifier: PAYLOADEXT */ +#line 1568 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7124,11 +7163,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7128 "MachineIndependent/glslang_tab.cpp" +#line 7167 "MachineIndependent/glslang_tab.cpp" break; - case 185: /* storage_qualifier: PAYLOADINNV */ -#line 1570 "MachineIndependent/glslang.y" + case 186: /* storage_qualifier: PAYLOADINNV */ +#line 1576 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7137,11 +7176,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7141 "MachineIndependent/glslang_tab.cpp" +#line 7180 "MachineIndependent/glslang_tab.cpp" break; - case 186: /* storage_qualifier: PAYLOADINEXT */ -#line 1578 "MachineIndependent/glslang.y" + case 187: /* storage_qualifier: PAYLOADINEXT */ +#line 1584 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7150,11 +7189,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7154 "MachineIndependent/glslang_tab.cpp" +#line 7193 "MachineIndependent/glslang_tab.cpp" break; - case 187: /* storage_qualifier: CALLDATANV */ -#line 1586 "MachineIndependent/glslang.y" + case 188: /* storage_qualifier: CALLDATANV */ +#line 1592 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7163,11 +7202,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7167 "MachineIndependent/glslang_tab.cpp" +#line 7206 "MachineIndependent/glslang_tab.cpp" break; - case 188: /* storage_qualifier: CALLDATAEXT */ -#line 1594 "MachineIndependent/glslang.y" + case 189: /* storage_qualifier: CALLDATAEXT */ +#line 1600 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7176,11 +7215,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7180 "MachineIndependent/glslang_tab.cpp" +#line 7219 "MachineIndependent/glslang_tab.cpp" break; - case 189: /* storage_qualifier: CALLDATAINNV */ -#line 1602 "MachineIndependent/glslang.y" + case 190: /* storage_qualifier: CALLDATAINNV */ +#line 1608 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7188,11 +7227,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7192 "MachineIndependent/glslang_tab.cpp" +#line 7231 "MachineIndependent/glslang_tab.cpp" break; - case 190: /* storage_qualifier: CALLDATAINEXT */ -#line 1609 "MachineIndependent/glslang.y" + case 191: /* storage_qualifier: CALLDATAINEXT */ +#line 1615 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7200,138 +7239,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7204 "MachineIndependent/glslang_tab.cpp" +#line 7243 "MachineIndependent/glslang_tab.cpp" break; - case 191: /* storage_qualifier: COHERENT */ -#line 1616 "MachineIndependent/glslang.y" + case 192: /* storage_qualifier: COHERENT */ +#line 1622 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7213 "MachineIndependent/glslang_tab.cpp" +#line 7252 "MachineIndependent/glslang_tab.cpp" break; - case 192: /* storage_qualifier: DEVICECOHERENT */ -#line 1620 "MachineIndependent/glslang.y" + case 193: /* storage_qualifier: DEVICECOHERENT */ +#line 1626 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7223 "MachineIndependent/glslang_tab.cpp" +#line 7262 "MachineIndependent/glslang_tab.cpp" break; - case 193: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1625 "MachineIndependent/glslang.y" + case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ +#line 1631 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7233 "MachineIndependent/glslang_tab.cpp" +#line 7272 "MachineIndependent/glslang_tab.cpp" break; - case 194: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1630 "MachineIndependent/glslang.y" + case 195: /* storage_qualifier: WORKGROUPCOHERENT */ +#line 1636 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7243 "MachineIndependent/glslang_tab.cpp" +#line 7282 "MachineIndependent/glslang_tab.cpp" break; - case 195: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1635 "MachineIndependent/glslang.y" + case 196: /* storage_qualifier: SUBGROUPCOHERENT */ +#line 1641 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7253 "MachineIndependent/glslang_tab.cpp" +#line 7292 "MachineIndependent/glslang_tab.cpp" break; - case 196: /* storage_qualifier: NONPRIVATE */ -#line 1640 "MachineIndependent/glslang.y" + case 197: /* storage_qualifier: NONPRIVATE */ +#line 1646 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7263 "MachineIndependent/glslang_tab.cpp" +#line 7302 "MachineIndependent/glslang_tab.cpp" break; - case 197: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1645 "MachineIndependent/glslang.y" + case 198: /* storage_qualifier: SHADERCALLCOHERENT */ +#line 1651 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7273 "MachineIndependent/glslang_tab.cpp" +#line 7312 "MachineIndependent/glslang_tab.cpp" break; - case 198: /* storage_qualifier: VOLATILE */ -#line 1650 "MachineIndependent/glslang.y" + case 199: /* storage_qualifier: VOLATILE */ +#line 1656 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7282 "MachineIndependent/glslang_tab.cpp" +#line 7321 "MachineIndependent/glslang_tab.cpp" break; - case 199: /* storage_qualifier: RESTRICT */ -#line 1654 "MachineIndependent/glslang.y" + case 200: /* storage_qualifier: RESTRICT */ +#line 1660 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7291 "MachineIndependent/glslang_tab.cpp" +#line 7330 "MachineIndependent/glslang_tab.cpp" break; - case 200: /* storage_qualifier: READONLY */ -#line 1658 "MachineIndependent/glslang.y" + case 201: /* storage_qualifier: READONLY */ +#line 1664 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7300 "MachineIndependent/glslang_tab.cpp" +#line 7339 "MachineIndependent/glslang_tab.cpp" break; - case 201: /* storage_qualifier: WRITEONLY */ -#line 1662 "MachineIndependent/glslang.y" + case 202: /* storage_qualifier: WRITEONLY */ +#line 1668 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7309 "MachineIndependent/glslang_tab.cpp" +#line 7348 "MachineIndependent/glslang_tab.cpp" break; - case 202: /* storage_qualifier: SUBROUTINE */ -#line 1666 "MachineIndependent/glslang.y" + case 203: /* storage_qualifier: SUBROUTINE */ +#line 1672 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7320 "MachineIndependent/glslang_tab.cpp" +#line 7359 "MachineIndependent/glslang_tab.cpp" break; - case 203: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1672 "MachineIndependent/glslang.y" + case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ +#line 1678 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7331 "MachineIndependent/glslang_tab.cpp" +#line 7370 "MachineIndependent/glslang_tab.cpp" break; - case 204: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1678 "MachineIndependent/glslang.y" + case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ +#line 1684 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7339,48 +7378,48 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7343 "MachineIndependent/glslang_tab.cpp" +#line 7382 "MachineIndependent/glslang_tab.cpp" break; - case 205: /* non_uniform_qualifier: NONUNIFORM */ -#line 1690 "MachineIndependent/glslang.y" + case 206: /* non_uniform_qualifier: NONUNIFORM */ +#line 1696 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7352 "MachineIndependent/glslang_tab.cpp" +#line 7391 "MachineIndependent/glslang_tab.cpp" break; - case 206: /* type_name_list: IDENTIFIER */ -#line 1697 "MachineIndependent/glslang.y" + case 207: /* type_name_list: IDENTIFIER */ +#line 1703 "MachineIndependent/glslang.y" { // TODO } -#line 7360 "MachineIndependent/glslang_tab.cpp" +#line 7399 "MachineIndependent/glslang_tab.cpp" break; - case 207: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1700 "MachineIndependent/glslang.y" + case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ +#line 1706 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7370 "MachineIndependent/glslang_tab.cpp" +#line 7409 "MachineIndependent/glslang_tab.cpp" break; - case 208: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1709 "MachineIndependent/glslang.y" + case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ +#line 1715 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 7380 "MachineIndependent/glslang_tab.cpp" +#line 7419 "MachineIndependent/glslang_tab.cpp" break; - case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1714 "MachineIndependent/glslang.y" + case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ +#line 1720 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7388,21 +7427,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 7392 "MachineIndependent/glslang_tab.cpp" +#line 7431 "MachineIndependent/glslang_tab.cpp" break; - case 210: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1724 "MachineIndependent/glslang.y" + case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ +#line 1730 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7402 "MachineIndependent/glslang_tab.cpp" +#line 7441 "MachineIndependent/glslang_tab.cpp" break; - case 211: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1729 "MachineIndependent/glslang.y" + case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1735 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7411,20 +7450,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7415 "MachineIndependent/glslang_tab.cpp" +#line 7454 "MachineIndependent/glslang_tab.cpp" break; - case 212: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1737 "MachineIndependent/glslang.y" + case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ +#line 1743 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7424 "MachineIndependent/glslang_tab.cpp" +#line 7463 "MachineIndependent/glslang_tab.cpp" break; - case 213: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1741 "MachineIndependent/glslang.y" + case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ +#line 1747 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7432,35 +7471,35 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7436 "MachineIndependent/glslang_tab.cpp" +#line 7475 "MachineIndependent/glslang_tab.cpp" break; - case 214: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1751 "MachineIndependent/glslang.y" + case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ +#line 1757 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7444 "MachineIndependent/glslang_tab.cpp" +#line 7483 "MachineIndependent/glslang_tab.cpp" break; - case 215: /* type_parameter_specifier_opt: %empty */ -#line 1754 "MachineIndependent/glslang.y" + case 216: /* type_parameter_specifier_opt: %empty */ +#line 1760 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7452 "MachineIndependent/glslang_tab.cpp" +#line 7491 "MachineIndependent/glslang_tab.cpp" break; - case 216: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1760 "MachineIndependent/glslang.y" + case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ +#line 1766 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7460 "MachineIndependent/glslang_tab.cpp" +#line 7499 "MachineIndependent/glslang_tab.cpp" break; - case 217: /* type_parameter_specifier_list: unary_expression */ -#line 1766 "MachineIndependent/glslang.y" + case 218: /* type_parameter_specifier_list: unary_expression */ +#line 1772 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TArraySizes; @@ -7468,11 +7507,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7472 "MachineIndependent/glslang_tab.cpp" +#line 7511 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1773 "MachineIndependent/glslang.y" + case 219: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1779 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7480,300 +7519,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7484 "MachineIndependent/glslang_tab.cpp" +#line 7523 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_specifier_nonarray: VOID */ -#line 1783 "MachineIndependent/glslang.y" + case 220: /* type_specifier_nonarray: VOID */ +#line 1789 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7493 "MachineIndependent/glslang_tab.cpp" +#line 7532 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_specifier_nonarray: FLOAT */ -#line 1787 "MachineIndependent/glslang.y" + case 221: /* type_specifier_nonarray: FLOAT */ +#line 1793 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7502 "MachineIndependent/glslang_tab.cpp" +#line 7541 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_specifier_nonarray: INT */ -#line 1791 "MachineIndependent/glslang.y" + case 222: /* type_specifier_nonarray: INT */ +#line 1797 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7511 "MachineIndependent/glslang_tab.cpp" +#line 7550 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_specifier_nonarray: UINT */ -#line 1795 "MachineIndependent/glslang.y" + case 223: /* type_specifier_nonarray: UINT */ +#line 1801 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7521 "MachineIndependent/glslang_tab.cpp" +#line 7560 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: BOOL */ -#line 1800 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: BOOL */ +#line 1806 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7530 "MachineIndependent/glslang_tab.cpp" +#line 7569 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: VEC2 */ -#line 1804 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: VEC2 */ +#line 1810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7540 "MachineIndependent/glslang_tab.cpp" +#line 7579 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: VEC3 */ -#line 1809 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: VEC3 */ +#line 1815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7550 "MachineIndependent/glslang_tab.cpp" +#line 7589 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: VEC4 */ -#line 1814 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: VEC4 */ +#line 1820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7560 "MachineIndependent/glslang_tab.cpp" +#line 7599 "MachineIndependent/glslang_tab.cpp" break; - case 227: /* type_specifier_nonarray: BVEC2 */ -#line 1819 "MachineIndependent/glslang.y" + case 228: /* type_specifier_nonarray: BVEC2 */ +#line 1825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7570 "MachineIndependent/glslang_tab.cpp" +#line 7609 "MachineIndependent/glslang_tab.cpp" break; - case 228: /* type_specifier_nonarray: BVEC3 */ -#line 1824 "MachineIndependent/glslang.y" + case 229: /* type_specifier_nonarray: BVEC3 */ +#line 1830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7580 "MachineIndependent/glslang_tab.cpp" +#line 7619 "MachineIndependent/glslang_tab.cpp" break; - case 229: /* type_specifier_nonarray: BVEC4 */ -#line 1829 "MachineIndependent/glslang.y" + case 230: /* type_specifier_nonarray: BVEC4 */ +#line 1835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7590 "MachineIndependent/glslang_tab.cpp" +#line 7629 "MachineIndependent/glslang_tab.cpp" break; - case 230: /* type_specifier_nonarray: IVEC2 */ -#line 1834 "MachineIndependent/glslang.y" + case 231: /* type_specifier_nonarray: IVEC2 */ +#line 1840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7600 "MachineIndependent/glslang_tab.cpp" +#line 7639 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: IVEC3 */ -#line 1839 "MachineIndependent/glslang.y" + case 232: /* type_specifier_nonarray: IVEC3 */ +#line 1845 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7610 "MachineIndependent/glslang_tab.cpp" +#line 7649 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: IVEC4 */ -#line 1844 "MachineIndependent/glslang.y" + case 233: /* type_specifier_nonarray: IVEC4 */ +#line 1850 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7620 "MachineIndependent/glslang_tab.cpp" +#line 7659 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: UVEC2 */ -#line 1849 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: UVEC2 */ +#line 1855 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7631 "MachineIndependent/glslang_tab.cpp" +#line 7670 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: UVEC3 */ -#line 1855 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: UVEC3 */ +#line 1861 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7642 "MachineIndependent/glslang_tab.cpp" +#line 7681 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: UVEC4 */ -#line 1861 "MachineIndependent/glslang.y" + case 236: /* type_specifier_nonarray: UVEC4 */ +#line 1867 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7653 "MachineIndependent/glslang_tab.cpp" +#line 7692 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: MAT2 */ -#line 1867 "MachineIndependent/glslang.y" + case 237: /* type_specifier_nonarray: MAT2 */ +#line 1873 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7663 "MachineIndependent/glslang_tab.cpp" +#line 7702 "MachineIndependent/glslang_tab.cpp" break; - case 237: /* type_specifier_nonarray: MAT3 */ -#line 1872 "MachineIndependent/glslang.y" + case 238: /* type_specifier_nonarray: MAT3 */ +#line 1878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7673 "MachineIndependent/glslang_tab.cpp" +#line 7712 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: MAT4 */ -#line 1877 "MachineIndependent/glslang.y" + case 239: /* type_specifier_nonarray: MAT4 */ +#line 1883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7683 "MachineIndependent/glslang_tab.cpp" +#line 7722 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: MAT2X2 */ -#line 1882 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: MAT2X2 */ +#line 1888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7693 "MachineIndependent/glslang_tab.cpp" +#line 7732 "MachineIndependent/glslang_tab.cpp" break; - case 240: /* type_specifier_nonarray: MAT2X3 */ -#line 1887 "MachineIndependent/glslang.y" + case 241: /* type_specifier_nonarray: MAT2X3 */ +#line 1893 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7703 "MachineIndependent/glslang_tab.cpp" +#line 7742 "MachineIndependent/glslang_tab.cpp" break; - case 241: /* type_specifier_nonarray: MAT2X4 */ -#line 1892 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT2X4 */ +#line 1898 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7713 "MachineIndependent/glslang_tab.cpp" +#line 7752 "MachineIndependent/glslang_tab.cpp" break; - case 242: /* type_specifier_nonarray: MAT3X2 */ -#line 1897 "MachineIndependent/glslang.y" + case 243: /* type_specifier_nonarray: MAT3X2 */ +#line 1903 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7723 "MachineIndependent/glslang_tab.cpp" +#line 7762 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT3X3 */ -#line 1902 "MachineIndependent/glslang.y" + case 244: /* type_specifier_nonarray: MAT3X3 */ +#line 1908 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7733 "MachineIndependent/glslang_tab.cpp" +#line 7772 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: MAT3X4 */ -#line 1907 "MachineIndependent/glslang.y" + case 245: /* type_specifier_nonarray: MAT3X4 */ +#line 1913 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7743 "MachineIndependent/glslang_tab.cpp" +#line 7782 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: MAT4X2 */ -#line 1912 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: MAT4X2 */ +#line 1918 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7753 "MachineIndependent/glslang_tab.cpp" +#line 7792 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: MAT4X3 */ -#line 1917 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: MAT4X3 */ +#line 1923 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7763 "MachineIndependent/glslang_tab.cpp" +#line 7802 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: MAT4X4 */ -#line 1922 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: MAT4X4 */ +#line 1928 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7773 "MachineIndependent/glslang_tab.cpp" +#line 7812 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: DOUBLE */ -#line 1928 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: DOUBLE */ +#line 1934 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7781,121 +7820,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7785 "MachineIndependent/glslang_tab.cpp" +#line 7824 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: FLOAT16_T */ -#line 1935 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: FLOAT16_T */ +#line 1941 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7795 "MachineIndependent/glslang_tab.cpp" +#line 7834 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: FLOAT32_T */ -#line 1940 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: FLOAT32_T */ +#line 1946 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7805 "MachineIndependent/glslang_tab.cpp" +#line 7844 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: FLOAT64_T */ -#line 1945 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: FLOAT64_T */ +#line 1951 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7815 "MachineIndependent/glslang_tab.cpp" +#line 7854 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: INT8_T */ -#line 1950 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: INT8_T */ +#line 1956 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7825 "MachineIndependent/glslang_tab.cpp" +#line 7864 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: UINT8_T */ -#line 1955 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: UINT8_T */ +#line 1961 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7835 "MachineIndependent/glslang_tab.cpp" +#line 7874 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: INT16_T */ -#line 1960 "MachineIndependent/glslang.y" + case 255: /* type_specifier_nonarray: INT16_T */ +#line 1966 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7845 "MachineIndependent/glslang_tab.cpp" +#line 7884 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: UINT16_T */ -#line 1965 "MachineIndependent/glslang.y" + case 256: /* type_specifier_nonarray: UINT16_T */ +#line 1971 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7855 "MachineIndependent/glslang_tab.cpp" +#line 7894 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: INT32_T */ -#line 1970 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: INT32_T */ +#line 1976 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7865 "MachineIndependent/glslang_tab.cpp" +#line 7904 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: UINT32_T */ -#line 1975 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: UINT32_T */ +#line 1981 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7875 "MachineIndependent/glslang_tab.cpp" +#line 7914 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: INT64_T */ -#line 1980 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: INT64_T */ +#line 1986 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7885 "MachineIndependent/glslang_tab.cpp" +#line 7924 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: UINT64_T */ -#line 1985 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: UINT64_T */ +#line 1991 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7895 "MachineIndependent/glslang_tab.cpp" +#line 7934 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: DVEC2 */ -#line 1990 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: DVEC2 */ +#line 1996 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7904,11 +7943,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7908 "MachineIndependent/glslang_tab.cpp" +#line 7947 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: DVEC3 */ -#line 1998 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: DVEC3 */ +#line 2004 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7917,11 +7956,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7921 "MachineIndependent/glslang_tab.cpp" +#line 7960 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: DVEC4 */ -#line 2006 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: DVEC4 */ +#line 2012 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7930,374 +7969,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7934 "MachineIndependent/glslang_tab.cpp" +#line 7973 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: F16VEC2 */ -#line 2014 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: F16VEC2 */ +#line 2020 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7945 "MachineIndependent/glslang_tab.cpp" +#line 7984 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: F16VEC3 */ -#line 2020 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: F16VEC3 */ +#line 2026 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7956 "MachineIndependent/glslang_tab.cpp" +#line 7995 "MachineIndependent/glslang_tab.cpp" break; - case 265: /* type_specifier_nonarray: F16VEC4 */ -#line 2026 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: F16VEC4 */ +#line 2032 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7967 "MachineIndependent/glslang_tab.cpp" +#line 8006 "MachineIndependent/glslang_tab.cpp" break; - case 266: /* type_specifier_nonarray: F32VEC2 */ -#line 2032 "MachineIndependent/glslang.y" + case 267: /* type_specifier_nonarray: F32VEC2 */ +#line 2038 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7978 "MachineIndependent/glslang_tab.cpp" +#line 8017 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: F32VEC3 */ -#line 2038 "MachineIndependent/glslang.y" + case 268: /* type_specifier_nonarray: F32VEC3 */ +#line 2044 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7989 "MachineIndependent/glslang_tab.cpp" +#line 8028 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: F32VEC4 */ -#line 2044 "MachineIndependent/glslang.y" + case 269: /* type_specifier_nonarray: F32VEC4 */ +#line 2050 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8000 "MachineIndependent/glslang_tab.cpp" +#line 8039 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: F64VEC2 */ -#line 2050 "MachineIndependent/glslang.y" + case 270: /* type_specifier_nonarray: F64VEC2 */ +#line 2056 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8011 "MachineIndependent/glslang_tab.cpp" +#line 8050 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: F64VEC3 */ -#line 2056 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: F64VEC3 */ +#line 2062 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8022 "MachineIndependent/glslang_tab.cpp" +#line 8061 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: F64VEC4 */ -#line 2062 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: F64VEC4 */ +#line 2068 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8033 "MachineIndependent/glslang_tab.cpp" +#line 8072 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: I8VEC2 */ -#line 2068 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: I8VEC2 */ +#line 2074 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8044 "MachineIndependent/glslang_tab.cpp" +#line 8083 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: I8VEC3 */ -#line 2074 "MachineIndependent/glslang.y" + case 274: /* type_specifier_nonarray: I8VEC3 */ +#line 2080 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8055 "MachineIndependent/glslang_tab.cpp" +#line 8094 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: I8VEC4 */ -#line 2080 "MachineIndependent/glslang.y" + case 275: /* type_specifier_nonarray: I8VEC4 */ +#line 2086 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8066 "MachineIndependent/glslang_tab.cpp" +#line 8105 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: I16VEC2 */ -#line 2086 "MachineIndependent/glslang.y" + case 276: /* type_specifier_nonarray: I16VEC2 */ +#line 2092 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8077 "MachineIndependent/glslang_tab.cpp" +#line 8116 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: I16VEC3 */ -#line 2092 "MachineIndependent/glslang.y" + case 277: /* type_specifier_nonarray: I16VEC3 */ +#line 2098 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8088 "MachineIndependent/glslang_tab.cpp" +#line 8127 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: I16VEC4 */ -#line 2098 "MachineIndependent/glslang.y" + case 278: /* type_specifier_nonarray: I16VEC4 */ +#line 2104 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8099 "MachineIndependent/glslang_tab.cpp" +#line 8138 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: I32VEC2 */ -#line 2104 "MachineIndependent/glslang.y" + case 279: /* type_specifier_nonarray: I32VEC2 */ +#line 2110 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8110 "MachineIndependent/glslang_tab.cpp" +#line 8149 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: I32VEC3 */ -#line 2110 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: I32VEC3 */ +#line 2116 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8121 "MachineIndependent/glslang_tab.cpp" +#line 8160 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: I32VEC4 */ -#line 2116 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: I32VEC4 */ +#line 2122 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8132 "MachineIndependent/glslang_tab.cpp" +#line 8171 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: I64VEC2 */ -#line 2122 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: I64VEC2 */ +#line 2128 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8143 "MachineIndependent/glslang_tab.cpp" +#line 8182 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: I64VEC3 */ -#line 2128 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: I64VEC3 */ +#line 2134 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8154 "MachineIndependent/glslang_tab.cpp" +#line 8193 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: I64VEC4 */ -#line 2134 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: I64VEC4 */ +#line 2140 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8165 "MachineIndependent/glslang_tab.cpp" +#line 8204 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: U8VEC2 */ -#line 2140 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: U8VEC2 */ +#line 2146 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8176 "MachineIndependent/glslang_tab.cpp" +#line 8215 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: U8VEC3 */ -#line 2146 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: U8VEC3 */ +#line 2152 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8187 "MachineIndependent/glslang_tab.cpp" +#line 8226 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: U8VEC4 */ -#line 2152 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: U8VEC4 */ +#line 2158 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8198 "MachineIndependent/glslang_tab.cpp" +#line 8237 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: U16VEC2 */ -#line 2158 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: U16VEC2 */ +#line 2164 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8209 "MachineIndependent/glslang_tab.cpp" +#line 8248 "MachineIndependent/glslang_tab.cpp" break; - case 288: /* type_specifier_nonarray: U16VEC3 */ -#line 2164 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: U16VEC3 */ +#line 2170 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8220 "MachineIndependent/glslang_tab.cpp" +#line 8259 "MachineIndependent/glslang_tab.cpp" break; - case 289: /* type_specifier_nonarray: U16VEC4 */ -#line 2170 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: U16VEC4 */ +#line 2176 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8231 "MachineIndependent/glslang_tab.cpp" +#line 8270 "MachineIndependent/glslang_tab.cpp" break; - case 290: /* type_specifier_nonarray: U32VEC2 */ -#line 2176 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: U32VEC2 */ +#line 2182 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8242 "MachineIndependent/glslang_tab.cpp" +#line 8281 "MachineIndependent/glslang_tab.cpp" break; - case 291: /* type_specifier_nonarray: U32VEC3 */ -#line 2182 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: U32VEC3 */ +#line 2188 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8253 "MachineIndependent/glslang_tab.cpp" +#line 8292 "MachineIndependent/glslang_tab.cpp" break; - case 292: /* type_specifier_nonarray: U32VEC4 */ -#line 2188 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: U32VEC4 */ +#line 2194 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8264 "MachineIndependent/glslang_tab.cpp" +#line 8303 "MachineIndependent/glslang_tab.cpp" break; - case 293: /* type_specifier_nonarray: U64VEC2 */ -#line 2194 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: U64VEC2 */ +#line 2200 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8275 "MachineIndependent/glslang_tab.cpp" +#line 8314 "MachineIndependent/glslang_tab.cpp" break; - case 294: /* type_specifier_nonarray: U64VEC3 */ -#line 2200 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: U64VEC3 */ +#line 2206 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8286 "MachineIndependent/glslang_tab.cpp" +#line 8325 "MachineIndependent/glslang_tab.cpp" break; - case 295: /* type_specifier_nonarray: U64VEC4 */ -#line 2206 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: U64VEC4 */ +#line 2212 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8297 "MachineIndependent/glslang_tab.cpp" +#line 8336 "MachineIndependent/glslang_tab.cpp" break; - case 296: /* type_specifier_nonarray: DMAT2 */ -#line 2212 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: DMAT2 */ +#line 2218 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8306,11 +8345,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8310 "MachineIndependent/glslang_tab.cpp" +#line 8349 "MachineIndependent/glslang_tab.cpp" break; - case 297: /* type_specifier_nonarray: DMAT3 */ -#line 2220 "MachineIndependent/glslang.y" + case 298: /* type_specifier_nonarray: DMAT3 */ +#line 2226 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8319,11 +8358,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8323 "MachineIndependent/glslang_tab.cpp" +#line 8362 "MachineIndependent/glslang_tab.cpp" break; - case 298: /* type_specifier_nonarray: DMAT4 */ -#line 2228 "MachineIndependent/glslang.y" + case 299: /* type_specifier_nonarray: DMAT4 */ +#line 2234 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8332,11 +8371,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8336 "MachineIndependent/glslang_tab.cpp" +#line 8375 "MachineIndependent/glslang_tab.cpp" break; - case 299: /* type_specifier_nonarray: DMAT2X2 */ -#line 2236 "MachineIndependent/glslang.y" + case 300: /* type_specifier_nonarray: DMAT2X2 */ +#line 2242 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8345,11 +8384,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8349 "MachineIndependent/glslang_tab.cpp" +#line 8388 "MachineIndependent/glslang_tab.cpp" break; - case 300: /* type_specifier_nonarray: DMAT2X3 */ -#line 2244 "MachineIndependent/glslang.y" + case 301: /* type_specifier_nonarray: DMAT2X3 */ +#line 2250 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8358,11 +8397,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8362 "MachineIndependent/glslang_tab.cpp" +#line 8401 "MachineIndependent/glslang_tab.cpp" break; - case 301: /* type_specifier_nonarray: DMAT2X4 */ -#line 2252 "MachineIndependent/glslang.y" + case 302: /* type_specifier_nonarray: DMAT2X4 */ +#line 2258 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8371,11 +8410,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8375 "MachineIndependent/glslang_tab.cpp" +#line 8414 "MachineIndependent/glslang_tab.cpp" break; - case 302: /* type_specifier_nonarray: DMAT3X2 */ -#line 2260 "MachineIndependent/glslang.y" + case 303: /* type_specifier_nonarray: DMAT3X2 */ +#line 2266 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8384,11 +8423,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8388 "MachineIndependent/glslang_tab.cpp" +#line 8427 "MachineIndependent/glslang_tab.cpp" break; - case 303: /* type_specifier_nonarray: DMAT3X3 */ -#line 2268 "MachineIndependent/glslang.y" + case 304: /* type_specifier_nonarray: DMAT3X3 */ +#line 2274 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8397,11 +8436,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8401 "MachineIndependent/glslang_tab.cpp" +#line 8440 "MachineIndependent/glslang_tab.cpp" break; - case 304: /* type_specifier_nonarray: DMAT3X4 */ -#line 2276 "MachineIndependent/glslang.y" + case 305: /* type_specifier_nonarray: DMAT3X4 */ +#line 2282 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8410,11 +8449,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8414 "MachineIndependent/glslang_tab.cpp" +#line 8453 "MachineIndependent/glslang_tab.cpp" break; - case 305: /* type_specifier_nonarray: DMAT4X2 */ -#line 2284 "MachineIndependent/glslang.y" + case 306: /* type_specifier_nonarray: DMAT4X2 */ +#line 2290 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8423,11 +8462,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8427 "MachineIndependent/glslang_tab.cpp" +#line 8466 "MachineIndependent/glslang_tab.cpp" break; - case 306: /* type_specifier_nonarray: DMAT4X3 */ -#line 2292 "MachineIndependent/glslang.y" + case 307: /* type_specifier_nonarray: DMAT4X3 */ +#line 2298 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8436,11 +8475,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8440 "MachineIndependent/glslang_tab.cpp" +#line 8479 "MachineIndependent/glslang_tab.cpp" break; - case 307: /* type_specifier_nonarray: DMAT4X4 */ -#line 2300 "MachineIndependent/glslang.y" + case 308: /* type_specifier_nonarray: DMAT4X4 */ +#line 2306 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8449,2228 +8488,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8453 "MachineIndependent/glslang_tab.cpp" +#line 8492 "MachineIndependent/glslang_tab.cpp" break; - case 308: /* type_specifier_nonarray: F16MAT2 */ -#line 2308 "MachineIndependent/glslang.y" + case 309: /* type_specifier_nonarray: F16MAT2 */ +#line 2314 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8464 "MachineIndependent/glslang_tab.cpp" +#line 8503 "MachineIndependent/glslang_tab.cpp" break; - case 309: /* type_specifier_nonarray: F16MAT3 */ -#line 2314 "MachineIndependent/glslang.y" + case 310: /* type_specifier_nonarray: F16MAT3 */ +#line 2320 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8475 "MachineIndependent/glslang_tab.cpp" +#line 8514 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: F16MAT4 */ -#line 2320 "MachineIndependent/glslang.y" + case 311: /* type_specifier_nonarray: F16MAT4 */ +#line 2326 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8486 "MachineIndependent/glslang_tab.cpp" +#line 8525 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2326 "MachineIndependent/glslang.y" + case 312: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2332 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8497 "MachineIndependent/glslang_tab.cpp" +#line 8536 "MachineIndependent/glslang_tab.cpp" break; - case 312: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2332 "MachineIndependent/glslang.y" + case 313: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2338 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8508 "MachineIndependent/glslang_tab.cpp" +#line 8547 "MachineIndependent/glslang_tab.cpp" break; - case 313: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2338 "MachineIndependent/glslang.y" + case 314: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2344 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8519 "MachineIndependent/glslang_tab.cpp" +#line 8558 "MachineIndependent/glslang_tab.cpp" break; - case 314: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2344 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2350 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8530 "MachineIndependent/glslang_tab.cpp" +#line 8569 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2350 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2356 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8541 "MachineIndependent/glslang_tab.cpp" +#line 8580 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2356 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2362 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8552 "MachineIndependent/glslang_tab.cpp" +#line 8591 "MachineIndependent/glslang_tab.cpp" break; - case 317: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2362 "MachineIndependent/glslang.y" + case 318: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2368 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8563 "MachineIndependent/glslang_tab.cpp" +#line 8602 "MachineIndependent/glslang_tab.cpp" break; - case 318: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2368 "MachineIndependent/glslang.y" + case 319: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2374 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8574 "MachineIndependent/glslang_tab.cpp" +#line 8613 "MachineIndependent/glslang_tab.cpp" break; - case 319: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2374 "MachineIndependent/glslang.y" + case 320: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2380 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8585 "MachineIndependent/glslang_tab.cpp" +#line 8624 "MachineIndependent/glslang_tab.cpp" break; - case 320: /* type_specifier_nonarray: F32MAT2 */ -#line 2380 "MachineIndependent/glslang.y" + case 321: /* type_specifier_nonarray: F32MAT2 */ +#line 2386 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8596 "MachineIndependent/glslang_tab.cpp" +#line 8635 "MachineIndependent/glslang_tab.cpp" break; - case 321: /* type_specifier_nonarray: F32MAT3 */ -#line 2386 "MachineIndependent/glslang.y" + case 322: /* type_specifier_nonarray: F32MAT3 */ +#line 2392 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8607 "MachineIndependent/glslang_tab.cpp" +#line 8646 "MachineIndependent/glslang_tab.cpp" break; - case 322: /* type_specifier_nonarray: F32MAT4 */ -#line 2392 "MachineIndependent/glslang.y" + case 323: /* type_specifier_nonarray: F32MAT4 */ +#line 2398 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8618 "MachineIndependent/glslang_tab.cpp" +#line 8657 "MachineIndependent/glslang_tab.cpp" break; - case 323: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2398 "MachineIndependent/glslang.y" + case 324: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2404 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8629 "MachineIndependent/glslang_tab.cpp" +#line 8668 "MachineIndependent/glslang_tab.cpp" break; - case 324: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2404 "MachineIndependent/glslang.y" + case 325: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2410 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8640 "MachineIndependent/glslang_tab.cpp" +#line 8679 "MachineIndependent/glslang_tab.cpp" break; - case 325: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2410 "MachineIndependent/glslang.y" + case 326: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2416 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8651 "MachineIndependent/glslang_tab.cpp" +#line 8690 "MachineIndependent/glslang_tab.cpp" break; - case 326: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2416 "MachineIndependent/glslang.y" + case 327: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2422 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8662 "MachineIndependent/glslang_tab.cpp" +#line 8701 "MachineIndependent/glslang_tab.cpp" break; - case 327: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2422 "MachineIndependent/glslang.y" + case 328: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2428 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8673 "MachineIndependent/glslang_tab.cpp" +#line 8712 "MachineIndependent/glslang_tab.cpp" break; - case 328: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2428 "MachineIndependent/glslang.y" + case 329: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2434 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8684 "MachineIndependent/glslang_tab.cpp" +#line 8723 "MachineIndependent/glslang_tab.cpp" break; - case 329: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2434 "MachineIndependent/glslang.y" + case 330: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2440 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8695 "MachineIndependent/glslang_tab.cpp" +#line 8734 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2440 "MachineIndependent/glslang.y" + case 331: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2446 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8706 "MachineIndependent/glslang_tab.cpp" +#line 8745 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2446 "MachineIndependent/glslang.y" + case 332: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2452 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8717 "MachineIndependent/glslang_tab.cpp" +#line 8756 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F64MAT2 */ -#line 2452 "MachineIndependent/glslang.y" + case 333: /* type_specifier_nonarray: F64MAT2 */ +#line 2458 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8728 "MachineIndependent/glslang_tab.cpp" +#line 8767 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F64MAT3 */ -#line 2458 "MachineIndependent/glslang.y" + case 334: /* type_specifier_nonarray: F64MAT3 */ +#line 2464 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8739 "MachineIndependent/glslang_tab.cpp" +#line 8778 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F64MAT4 */ -#line 2464 "MachineIndependent/glslang.y" + case 335: /* type_specifier_nonarray: F64MAT4 */ +#line 2470 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8750 "MachineIndependent/glslang_tab.cpp" +#line 8789 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2470 "MachineIndependent/glslang.y" + case 336: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2476 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8761 "MachineIndependent/glslang_tab.cpp" +#line 8800 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2476 "MachineIndependent/glslang.y" + case 337: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2482 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8772 "MachineIndependent/glslang_tab.cpp" +#line 8811 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2482 "MachineIndependent/glslang.y" + case 338: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2488 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8783 "MachineIndependent/glslang_tab.cpp" +#line 8822 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2488 "MachineIndependent/glslang.y" + case 339: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2494 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8794 "MachineIndependent/glslang_tab.cpp" +#line 8833 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2494 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2500 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8805 "MachineIndependent/glslang_tab.cpp" +#line 8844 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2500 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2506 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8816 "MachineIndependent/glslang_tab.cpp" +#line 8855 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2506 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2512 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8827 "MachineIndependent/glslang_tab.cpp" +#line 8866 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2512 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2518 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8838 "MachineIndependent/glslang_tab.cpp" +#line 8877 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2518 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2524 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8849 "MachineIndependent/glslang_tab.cpp" +#line 8888 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2524 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2530 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8858 "MachineIndependent/glslang_tab.cpp" +#line 8897 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2528 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2534 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8867 "MachineIndependent/glslang_tab.cpp" +#line 8906 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2532 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2538 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8876 "MachineIndependent/glslang_tab.cpp" +#line 8915 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2536 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2542 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8886 "MachineIndependent/glslang_tab.cpp" +#line 8925 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: SAMPLER1D */ -#line 2541 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: SAMPLER1D */ +#line 2547 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8896 "MachineIndependent/glslang_tab.cpp" +#line 8935 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: SAMPLER2D */ -#line 2547 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: SAMPLER2D */ +#line 2553 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8906 "MachineIndependent/glslang_tab.cpp" +#line 8945 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: SAMPLER3D */ -#line 2552 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: SAMPLER3D */ +#line 2558 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8916 "MachineIndependent/glslang_tab.cpp" +#line 8955 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2557 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2563 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8926 "MachineIndependent/glslang_tab.cpp" +#line 8965 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2562 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2568 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8936 "MachineIndependent/glslang_tab.cpp" +#line 8975 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2567 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2573 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8946 "MachineIndependent/glslang_tab.cpp" +#line 8985 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2572 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2578 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8956 "MachineIndependent/glslang_tab.cpp" +#line 8995 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2577 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2583 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8966 "MachineIndependent/glslang_tab.cpp" +#line 9005 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2583 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2589 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 8976 "MachineIndependent/glslang_tab.cpp" +#line 9015 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2588 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2594 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 8986 "MachineIndependent/glslang_tab.cpp" +#line 9025 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2593 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2599 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 8996 "MachineIndependent/glslang_tab.cpp" +#line 9035 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2598 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2604 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9006 "MachineIndependent/glslang_tab.cpp" +#line 9045 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2603 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2609 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9016 "MachineIndependent/glslang_tab.cpp" +#line 9055 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2608 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2614 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9027 "MachineIndependent/glslang_tab.cpp" +#line 9066 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2614 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2620 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9038 "MachineIndependent/glslang_tab.cpp" +#line 9077 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2620 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2626 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9049 "MachineIndependent/glslang_tab.cpp" +#line 9088 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2626 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2632 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9060 "MachineIndependent/glslang_tab.cpp" +#line 9099 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2632 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2638 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9071 "MachineIndependent/glslang_tab.cpp" +#line 9110 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2638 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2644 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9082 "MachineIndependent/glslang_tab.cpp" +#line 9121 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2644 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2650 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9093 "MachineIndependent/glslang_tab.cpp" +#line 9132 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2650 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2656 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9104 "MachineIndependent/glslang_tab.cpp" +#line 9143 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2656 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2662 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9115 "MachineIndependent/glslang_tab.cpp" +#line 9154 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2662 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2668 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9126 "MachineIndependent/glslang_tab.cpp" +#line 9165 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2668 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2674 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9137 "MachineIndependent/glslang_tab.cpp" +#line 9176 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2674 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2680 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9148 "MachineIndependent/glslang_tab.cpp" +#line 9187 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2680 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2686 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9159 "MachineIndependent/glslang_tab.cpp" +#line 9198 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2686 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2692 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9169 "MachineIndependent/glslang_tab.cpp" +#line 9208 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2692 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2698 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9179 "MachineIndependent/glslang_tab.cpp" +#line 9218 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2697 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2703 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9189 "MachineIndependent/glslang_tab.cpp" +#line 9228 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2702 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2708 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9199 "MachineIndependent/glslang_tab.cpp" +#line 9238 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2707 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2713 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9209 "MachineIndependent/glslang_tab.cpp" +#line 9248 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: USAMPLER2D */ -#line 2712 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: USAMPLER2D */ +#line 2718 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9219 "MachineIndependent/glslang_tab.cpp" +#line 9258 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: USAMPLER3D */ -#line 2717 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: USAMPLER3D */ +#line 2723 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9229 "MachineIndependent/glslang_tab.cpp" +#line 9268 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2722 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2728 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9239 "MachineIndependent/glslang_tab.cpp" +#line 9278 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2728 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2734 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9249 "MachineIndependent/glslang_tab.cpp" +#line 9288 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2733 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2739 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9259 "MachineIndependent/glslang_tab.cpp" +#line 9298 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: USAMPLER1D */ -#line 2738 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: USAMPLER1D */ +#line 2744 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9269 "MachineIndependent/glslang_tab.cpp" +#line 9308 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2743 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2749 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9279 "MachineIndependent/glslang_tab.cpp" +#line 9318 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2748 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2754 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9289 "MachineIndependent/glslang_tab.cpp" +#line 9328 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2753 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2759 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9299 "MachineIndependent/glslang_tab.cpp" +#line 9338 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2758 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2764 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9309 "MachineIndependent/glslang_tab.cpp" +#line 9348 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2763 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2769 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9319 "MachineIndependent/glslang_tab.cpp" +#line 9358 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2769 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2775 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9329 "MachineIndependent/glslang_tab.cpp" +#line 9368 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: TEXTURE2D */ -#line 2774 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: TEXTURE2D */ +#line 2780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9339 "MachineIndependent/glslang_tab.cpp" +#line 9378 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: TEXTURE3D */ -#line 2779 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: TEXTURE3D */ +#line 2785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9349 "MachineIndependent/glslang_tab.cpp" +#line 9388 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2784 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9359 "MachineIndependent/glslang_tab.cpp" +#line 9398 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2789 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9369 "MachineIndependent/glslang_tab.cpp" +#line 9408 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2794 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9379 "MachineIndependent/glslang_tab.cpp" +#line 9418 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2799 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9389 "MachineIndependent/glslang_tab.cpp" +#line 9428 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2804 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9399 "MachineIndependent/glslang_tab.cpp" +#line 9438 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2809 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9409 "MachineIndependent/glslang_tab.cpp" +#line 9448 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2814 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9419 "MachineIndependent/glslang_tab.cpp" +#line 9458 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2819 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9429 "MachineIndependent/glslang_tab.cpp" +#line 9468 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2824 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9439 "MachineIndependent/glslang_tab.cpp" +#line 9478 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2829 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9449 "MachineIndependent/glslang_tab.cpp" +#line 9488 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: SAMPLER */ -#line 2834 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: SAMPLER */ +#line 2840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9459 "MachineIndependent/glslang_tab.cpp" +#line 9498 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2839 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2845 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9469 "MachineIndependent/glslang_tab.cpp" +#line 9508 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2845 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2851 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9479 "MachineIndependent/glslang_tab.cpp" +#line 9518 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2850 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2856 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9489 "MachineIndependent/glslang_tab.cpp" +#line 9528 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2855 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2861 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9500 "MachineIndependent/glslang_tab.cpp" +#line 9539 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2861 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2867 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9511 "MachineIndependent/glslang_tab.cpp" +#line 9550 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2867 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2873 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9521 "MachineIndependent/glslang_tab.cpp" +#line 9560 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2872 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9531 "MachineIndependent/glslang_tab.cpp" +#line 9570 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2877 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9541 "MachineIndependent/glslang_tab.cpp" +#line 9580 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2882 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2888 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9552 "MachineIndependent/glslang_tab.cpp" +#line 9591 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2888 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2894 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9562 "MachineIndependent/glslang_tab.cpp" +#line 9601 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2893 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2899 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9572 "MachineIndependent/glslang_tab.cpp" +#line 9611 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2898 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9582 "MachineIndependent/glslang_tab.cpp" +#line 9621 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2903 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2909 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9593 "MachineIndependent/glslang_tab.cpp" +#line 9632 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2909 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2915 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9603 "MachineIndependent/glslang_tab.cpp" +#line 9642 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2914 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2920 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9613 "MachineIndependent/glslang_tab.cpp" +#line 9652 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2919 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2925 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9623 "MachineIndependent/glslang_tab.cpp" +#line 9662 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2924 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2930 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9634 "MachineIndependent/glslang_tab.cpp" +#line 9673 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2930 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2936 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9644 "MachineIndependent/glslang_tab.cpp" +#line 9683 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2935 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2941 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9654 "MachineIndependent/glslang_tab.cpp" +#line 9693 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: TEXTURE1D */ -#line 2940 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: TEXTURE1D */ +#line 2946 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9664 "MachineIndependent/glslang_tab.cpp" +#line 9703 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2945 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2951 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9675 "MachineIndependent/glslang_tab.cpp" +#line 9714 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2951 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2957 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9686 "MachineIndependent/glslang_tab.cpp" +#line 9725 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2957 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2963 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9697 "MachineIndependent/glslang_tab.cpp" +#line 9736 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2963 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2969 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9708 "MachineIndependent/glslang_tab.cpp" +#line 9747 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2969 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2975 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9718 "MachineIndependent/glslang_tab.cpp" +#line 9757 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2974 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2980 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9729 "MachineIndependent/glslang_tab.cpp" +#line 9768 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2980 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2986 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9740 "MachineIndependent/glslang_tab.cpp" +#line 9779 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2986 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 2992 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9751 "MachineIndependent/glslang_tab.cpp" +#line 9790 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2992 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: ITEXTURE1D */ +#line 2998 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9761 "MachineIndependent/glslang_tab.cpp" +#line 9800 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2997 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 3003 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9771 "MachineIndependent/glslang_tab.cpp" +#line 9810 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: UTEXTURE1D */ -#line 3002 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: UTEXTURE1D */ +#line 3008 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9781 "MachineIndependent/glslang_tab.cpp" +#line 9820 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 3007 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 3013 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9791 "MachineIndependent/glslang_tab.cpp" +#line 9830 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3012 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 3018 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9801 "MachineIndependent/glslang_tab.cpp" +#line 9840 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3017 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 3023 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9812 "MachineIndependent/glslang_tab.cpp" +#line 9851 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3023 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 3029 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9822 "MachineIndependent/glslang_tab.cpp" +#line 9861 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3028 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 3034 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9832 "MachineIndependent/glslang_tab.cpp" +#line 9871 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3033 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 3039 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9842 "MachineIndependent/glslang_tab.cpp" +#line 9881 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3038 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3044 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9853 "MachineIndependent/glslang_tab.cpp" +#line 9892 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3044 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3050 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9863 "MachineIndependent/glslang_tab.cpp" +#line 9902 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3049 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3055 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9873 "MachineIndependent/glslang_tab.cpp" +#line 9912 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3054 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3060 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9883 "MachineIndependent/glslang_tab.cpp" +#line 9922 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3059 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3065 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9894 "MachineIndependent/glslang_tab.cpp" +#line 9933 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3065 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3071 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9904 "MachineIndependent/glslang_tab.cpp" +#line 9943 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3070 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3076 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9914 "MachineIndependent/glslang_tab.cpp" +#line 9953 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3075 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3081 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9924 "MachineIndependent/glslang_tab.cpp" +#line 9963 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3080 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3086 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9935 "MachineIndependent/glslang_tab.cpp" +#line 9974 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3086 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3092 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9945 "MachineIndependent/glslang_tab.cpp" +#line 9984 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3091 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3097 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9955 "MachineIndependent/glslang_tab.cpp" +#line 9994 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: IMAGE1D */ -#line 3096 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: IMAGE1D */ +#line 3102 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9965 "MachineIndependent/glslang_tab.cpp" +#line 10004 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3101 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3107 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 9976 "MachineIndependent/glslang_tab.cpp" +#line 10015 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: IIMAGE1D */ -#line 3107 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: IIMAGE1D */ +#line 3113 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 9986 "MachineIndependent/glslang_tab.cpp" +#line 10025 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: UIMAGE1D */ -#line 3112 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: UIMAGE1D */ +#line 3118 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 9996 "MachineIndependent/glslang_tab.cpp" +#line 10035 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: IMAGE2D */ -#line 3117 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: IMAGE2D */ +#line 3123 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10006 "MachineIndependent/glslang_tab.cpp" +#line 10045 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3122 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3128 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10017 "MachineIndependent/glslang_tab.cpp" +#line 10056 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: IIMAGE2D */ -#line 3128 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: IIMAGE2D */ +#line 3134 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10027 "MachineIndependent/glslang_tab.cpp" +#line 10066 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: UIMAGE2D */ -#line 3133 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: UIMAGE2D */ +#line 3139 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10037 "MachineIndependent/glslang_tab.cpp" +#line 10076 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: IMAGE3D */ -#line 3138 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: IMAGE3D */ +#line 3144 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10047 "MachineIndependent/glslang_tab.cpp" +#line 10086 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3143 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3149 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10058 "MachineIndependent/glslang_tab.cpp" +#line 10097 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: IIMAGE3D */ -#line 3149 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: IIMAGE3D */ +#line 3155 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10068 "MachineIndependent/glslang_tab.cpp" +#line 10107 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: UIMAGE3D */ -#line 3154 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: UIMAGE3D */ +#line 3160 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10078 "MachineIndependent/glslang_tab.cpp" +#line 10117 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3159 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3165 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10088 "MachineIndependent/glslang_tab.cpp" +#line 10127 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3164 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3170 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10099 "MachineIndependent/glslang_tab.cpp" +#line 10138 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3170 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3176 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10109 "MachineIndependent/glslang_tab.cpp" +#line 10148 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3175 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3181 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10119 "MachineIndependent/glslang_tab.cpp" +#line 10158 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: IMAGECUBE */ -#line 3180 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: IMAGECUBE */ +#line 3186 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10129 "MachineIndependent/glslang_tab.cpp" +#line 10168 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3185 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3191 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10140 "MachineIndependent/glslang_tab.cpp" +#line 10179 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3191 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3197 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10150 "MachineIndependent/glslang_tab.cpp" +#line 10189 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3196 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3202 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10160 "MachineIndependent/glslang_tab.cpp" +#line 10199 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3201 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3207 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10170 "MachineIndependent/glslang_tab.cpp" +#line 10209 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3206 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3212 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10181 "MachineIndependent/glslang_tab.cpp" +#line 10220 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3212 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3218 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10191 "MachineIndependent/glslang_tab.cpp" +#line 10230 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3217 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3223 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10201 "MachineIndependent/glslang_tab.cpp" +#line 10240 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3222 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3228 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10211 "MachineIndependent/glslang_tab.cpp" +#line 10250 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3227 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3233 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10222 "MachineIndependent/glslang_tab.cpp" +#line 10261 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3233 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3239 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10232 "MachineIndependent/glslang_tab.cpp" +#line 10271 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3238 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3244 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10242 "MachineIndependent/glslang_tab.cpp" +#line 10281 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3243 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3249 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10252 "MachineIndependent/glslang_tab.cpp" +#line 10291 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3248 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3254 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10263 "MachineIndependent/glslang_tab.cpp" +#line 10302 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3254 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3260 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10273 "MachineIndependent/glslang_tab.cpp" +#line 10312 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3259 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3265 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10283 "MachineIndependent/glslang_tab.cpp" +#line 10322 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3264 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3270 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10293 "MachineIndependent/glslang_tab.cpp" +#line 10332 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3269 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3275 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10304 "MachineIndependent/glslang_tab.cpp" +#line 10343 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3275 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3281 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10314 "MachineIndependent/glslang_tab.cpp" +#line 10353 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3280 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3286 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10324 "MachineIndependent/glslang_tab.cpp" +#line 10363 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3285 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3291 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10334 "MachineIndependent/glslang_tab.cpp" +#line 10373 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3290 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3296 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10345 "MachineIndependent/glslang_tab.cpp" +#line 10384 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3296 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3302 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10355 "MachineIndependent/glslang_tab.cpp" +#line 10394 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3301 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3307 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10365 "MachineIndependent/glslang_tab.cpp" +#line 10404 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3306 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3312 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10375 "MachineIndependent/glslang_tab.cpp" +#line 10414 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3311 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3317 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10386 "MachineIndependent/glslang_tab.cpp" +#line 10425 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3317 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3323 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10396 "MachineIndependent/glslang_tab.cpp" +#line 10435 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3322 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3328 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10406 "MachineIndependent/glslang_tab.cpp" +#line 10445 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3327 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3333 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10416 "MachineIndependent/glslang_tab.cpp" +#line 10455 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3332 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3338 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10426 "MachineIndependent/glslang_tab.cpp" +#line 10465 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3337 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3343 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10436 "MachineIndependent/glslang_tab.cpp" +#line 10475 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3342 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3348 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10446 "MachineIndependent/glslang_tab.cpp" +#line 10485 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3347 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3353 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10456 "MachineIndependent/glslang_tab.cpp" +#line 10495 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3352 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3358 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10466 "MachineIndependent/glslang_tab.cpp" +#line 10505 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3357 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3363 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10476 "MachineIndependent/glslang_tab.cpp" +#line 10515 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3362 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3368 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10486 "MachineIndependent/glslang_tab.cpp" +#line 10525 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3367 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3373 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10496 "MachineIndependent/glslang_tab.cpp" +#line 10535 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3372 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3378 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10506 "MachineIndependent/glslang_tab.cpp" +#line 10545 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3377 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3383 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10516 "MachineIndependent/glslang_tab.cpp" +#line 10555 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3382 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3388 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10526 "MachineIndependent/glslang_tab.cpp" +#line 10565 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3387 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3393 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10536 "MachineIndependent/glslang_tab.cpp" +#line 10575 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3392 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3398 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10546 "MachineIndependent/glslang_tab.cpp" +#line 10585 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3397 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3403 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10556 "MachineIndependent/glslang_tab.cpp" +#line 10595 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3402 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3408 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10566 "MachineIndependent/glslang_tab.cpp" +#line 10605 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3407 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3413 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10576 "MachineIndependent/glslang_tab.cpp" +#line 10615 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3412 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3418 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10586 "MachineIndependent/glslang_tab.cpp" +#line 10625 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3417 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3423 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10596 "MachineIndependent/glslang_tab.cpp" +#line 10635 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3422 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3428 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10606 "MachineIndependent/glslang_tab.cpp" +#line 10645 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3427 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3433 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10616 "MachineIndependent/glslang_tab.cpp" +#line 10655 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3432 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3438 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10626 "MachineIndependent/glslang_tab.cpp" +#line 10665 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3437 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3443 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10637 "MachineIndependent/glslang_tab.cpp" +#line 10676 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3443 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3449 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10648 "MachineIndependent/glslang_tab.cpp" +#line 10687 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3449 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: ATTACHMENTEXT */ +#line 3455 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); + } +#line 10698 "MachineIndependent/glslang_tab.cpp" + break; + + case 522: /* type_specifier_nonarray: IATTACHMENTEXT */ +#line 3461 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); + } +#line 10709 "MachineIndependent/glslang_tab.cpp" + break; + + case 523: /* type_specifier_nonarray: UATTACHMENTEXT */ +#line 3467 "MachineIndependent/glslang.y" + { + parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtSampler; + (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); + } +#line 10720 "MachineIndependent/glslang_tab.cpp" + break; + + case 524: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3473 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10659 "MachineIndependent/glslang_tab.cpp" +#line 10731 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3455 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3479 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10670 "MachineIndependent/glslang_tab.cpp" +#line 10742 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3461 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3485 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10678,11 +10750,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10682 "MachineIndependent/glslang_tab.cpp" +#line 10754 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3468 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3492 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10690,116 +10762,116 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10694 "MachineIndependent/glslang_tab.cpp" +#line 10766 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3475 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3499 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10705 "MachineIndependent/glslang_tab.cpp" +#line 10777 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3481 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3505 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10716 "MachineIndependent/glslang_tab.cpp" +#line 10788 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3487 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3511 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10727 "MachineIndependent/glslang_tab.cpp" +#line 10799 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3493 "MachineIndependent/glslang.y" + case 531: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3517 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10738 "MachineIndependent/glslang_tab.cpp" +#line 10810 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3499 "MachineIndependent/glslang.y" + case 532: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3523 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 10749 "MachineIndependent/glslang_tab.cpp" +#line 10821 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3505 "MachineIndependent/glslang.y" + case 533: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3529 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 10760 "MachineIndependent/glslang_tab.cpp" +#line 10832 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3511 "MachineIndependent/glslang.y" + case 534: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3535 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10771 "MachineIndependent/glslang_tab.cpp" +#line 10843 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3517 "MachineIndependent/glslang.y" + case 535: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3541 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10780 "MachineIndependent/glslang_tab.cpp" +#line 10852 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3521 "MachineIndependent/glslang.y" + case 536: /* type_specifier_nonarray: HITOBJECTNV */ +#line 3545 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10789 "MachineIndependent/glslang_tab.cpp" +#line 10861 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* type_specifier_nonarray: struct_specifier */ -#line 3526 "MachineIndependent/glslang.y" + case 537: /* type_specifier_nonarray: struct_specifier */ +#line 3550 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10799 "MachineIndependent/glslang_tab.cpp" +#line 10871 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* type_specifier_nonarray: TYPE_NAME */ -#line 3531 "MachineIndependent/glslang.y" + case 538: /* type_specifier_nonarray: TYPE_NAME */ +#line 3555 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10813,47 +10885,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10817 "MachineIndependent/glslang_tab.cpp" +#line 10889 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* precision_qualifier: HIGH_PRECISION */ -#line 3547 "MachineIndependent/glslang.y" + case 539: /* precision_qualifier: HIGH_PRECISION */ +#line 3571 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10827 "MachineIndependent/glslang_tab.cpp" +#line 10899 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3552 "MachineIndependent/glslang.y" + case 540: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3576 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10837 "MachineIndependent/glslang_tab.cpp" +#line 10909 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* precision_qualifier: LOW_PRECISION */ -#line 3557 "MachineIndependent/glslang.y" + case 541: /* precision_qualifier: LOW_PRECISION */ +#line 3581 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10847 "MachineIndependent/glslang_tab.cpp" +#line 10919 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* $@3: %empty */ -#line 3565 "MachineIndependent/glslang.y" + case 542: /* $@3: %empty */ +#line 3589 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10853 "MachineIndependent/glslang_tab.cpp" +#line 10925 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3565 "MachineIndependent/glslang.y" + case 543: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3589 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10865,17 +10937,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10869 "MachineIndependent/glslang_tab.cpp" +#line 10941 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* $@4: %empty */ -#line 3576 "MachineIndependent/glslang.y" + case 544: /* $@4: %empty */ +#line 3600 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10875 "MachineIndependent/glslang_tab.cpp" +#line 10947 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3576 "MachineIndependent/glslang.y" + case 545: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3600 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10883,19 +10955,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10887 "MachineIndependent/glslang_tab.cpp" +#line 10959 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* struct_declaration_list: struct_declaration */ -#line 3586 "MachineIndependent/glslang.y" + case 546: /* struct_declaration_list: struct_declaration */ +#line 3610 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10895 "MachineIndependent/glslang_tab.cpp" +#line 10967 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3589 "MachineIndependent/glslang.y" + case 547: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3613 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10906,11 +10978,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10910 "MachineIndependent/glslang_tab.cpp" +#line 10982 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3602 "MachineIndependent/glslang.y" + case 548: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3626 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10933,11 +11005,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10937 "MachineIndependent/glslang_tab.cpp" +#line 11009 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3624 "MachineIndependent/glslang.y" + case 549: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3648 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10962,38 +11034,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 10966 "MachineIndependent/glslang_tab.cpp" +#line 11038 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* struct_declarator_list: struct_declarator */ -#line 3651 "MachineIndependent/glslang.y" + case 550: /* struct_declarator_list: struct_declarator */ +#line 3675 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10975 "MachineIndependent/glslang_tab.cpp" +#line 11047 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3655 "MachineIndependent/glslang.y" + case 551: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3679 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 10983 "MachineIndependent/glslang_tab.cpp" +#line 11055 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* struct_declarator: IDENTIFIER */ -#line 3661 "MachineIndependent/glslang.y" + case 552: /* struct_declarator: IDENTIFIER */ +#line 3685 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 10993 "MachineIndependent/glslang_tab.cpp" +#line 11065 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3666 "MachineIndependent/glslang.y" + case 553: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3690 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11002,246 +11074,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11006 "MachineIndependent/glslang_tab.cpp" +#line 11078 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* initializer: assignment_expression */ -#line 3677 "MachineIndependent/glslang.y" + case 554: /* initializer: assignment_expression */ +#line 3701 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11014 "MachineIndependent/glslang_tab.cpp" +#line 11086 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3681 "MachineIndependent/glslang.y" + case 555: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3705 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11025 "MachineIndependent/glslang_tab.cpp" +#line 11097 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3687 "MachineIndependent/glslang.y" + case 556: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3711 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11036 "MachineIndependent/glslang_tab.cpp" +#line 11108 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3693 "MachineIndependent/glslang.y" + case 557: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3717 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11047 "MachineIndependent/glslang_tab.cpp" +#line 11119 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* initializer_list: initializer */ -#line 3704 "MachineIndependent/glslang.y" + case 558: /* initializer_list: initializer */ +#line 3728 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11055 "MachineIndependent/glslang_tab.cpp" +#line 11127 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* initializer_list: initializer_list COMMA initializer */ -#line 3707 "MachineIndependent/glslang.y" + case 559: /* initializer_list: initializer_list COMMA initializer */ +#line 3731 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11063 "MachineIndependent/glslang_tab.cpp" +#line 11135 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* declaration_statement: declaration */ -#line 3714 "MachineIndependent/glslang.y" + case 560: /* declaration_statement: declaration */ +#line 3738 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11069 "MachineIndependent/glslang_tab.cpp" +#line 11141 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* statement: compound_statement */ -#line 3718 "MachineIndependent/glslang.y" + case 561: /* statement: compound_statement */ +#line 3742 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11075 "MachineIndependent/glslang_tab.cpp" +#line 11147 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* statement: simple_statement */ -#line 3719 "MachineIndependent/glslang.y" + case 562: /* statement: simple_statement */ +#line 3743 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11081 "MachineIndependent/glslang_tab.cpp" +#line 11153 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* simple_statement: declaration_statement */ -#line 3725 "MachineIndependent/glslang.y" + case 563: /* simple_statement: declaration_statement */ +#line 3749 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11087 "MachineIndependent/glslang_tab.cpp" +#line 11159 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* simple_statement: expression_statement */ -#line 3726 "MachineIndependent/glslang.y" + case 564: /* simple_statement: expression_statement */ +#line 3750 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11093 "MachineIndependent/glslang_tab.cpp" +#line 11165 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* simple_statement: selection_statement */ -#line 3727 "MachineIndependent/glslang.y" + case 565: /* simple_statement: selection_statement */ +#line 3751 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11099 "MachineIndependent/glslang_tab.cpp" +#line 11171 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* simple_statement: switch_statement */ -#line 3728 "MachineIndependent/glslang.y" + case 566: /* simple_statement: switch_statement */ +#line 3752 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11105 "MachineIndependent/glslang_tab.cpp" +#line 11177 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* simple_statement: case_label */ -#line 3729 "MachineIndependent/glslang.y" + case 567: /* simple_statement: case_label */ +#line 3753 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11111 "MachineIndependent/glslang_tab.cpp" +#line 11183 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* simple_statement: iteration_statement */ -#line 3730 "MachineIndependent/glslang.y" + case 568: /* simple_statement: iteration_statement */ +#line 3754 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11117 "MachineIndependent/glslang_tab.cpp" +#line 11189 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* simple_statement: jump_statement */ -#line 3731 "MachineIndependent/glslang.y" + case 569: /* simple_statement: jump_statement */ +#line 3755 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11123 "MachineIndependent/glslang_tab.cpp" +#line 11195 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* simple_statement: demote_statement */ -#line 3733 "MachineIndependent/glslang.y" + case 570: /* simple_statement: demote_statement */ +#line 3757 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11129 "MachineIndependent/glslang_tab.cpp" +#line 11201 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* demote_statement: DEMOTE SEMICOLON */ -#line 3739 "MachineIndependent/glslang.y" + case 571: /* demote_statement: DEMOTE SEMICOLON */ +#line 3763 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11139 "MachineIndependent/glslang_tab.cpp" +#line 11211 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3748 "MachineIndependent/glslang.y" + case 572: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3772 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11145 "MachineIndependent/glslang_tab.cpp" +#line 11217 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* $@5: %empty */ -#line 3749 "MachineIndependent/glslang.y" + case 573: /* $@5: %empty */ +#line 3773 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11154 "MachineIndependent/glslang_tab.cpp" +#line 11226 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* $@6: %empty */ -#line 3753 "MachineIndependent/glslang.y" + case 574: /* $@6: %empty */ +#line 3777 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11163 "MachineIndependent/glslang_tab.cpp" +#line 11235 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3757 "MachineIndependent/glslang.y" + case 575: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3781 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11173 "MachineIndependent/glslang_tab.cpp" +#line 11245 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3765 "MachineIndependent/glslang.y" + case 576: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3789 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11179 "MachineIndependent/glslang_tab.cpp" +#line 11251 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* statement_no_new_scope: simple_statement */ -#line 3766 "MachineIndependent/glslang.y" + case 577: /* statement_no_new_scope: simple_statement */ +#line 3790 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11185 "MachineIndependent/glslang_tab.cpp" +#line 11257 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* $@7: %empty */ -#line 3770 "MachineIndependent/glslang.y" + case 578: /* $@7: %empty */ +#line 3794 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11193 "MachineIndependent/glslang_tab.cpp" +#line 11265 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* statement_scoped: $@7 compound_statement */ -#line 3773 "MachineIndependent/glslang.y" + case 579: /* statement_scoped: $@7 compound_statement */ +#line 3797 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11202 "MachineIndependent/glslang_tab.cpp" +#line 11274 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* $@8: %empty */ -#line 3777 "MachineIndependent/glslang.y" + case 580: /* $@8: %empty */ +#line 3801 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11212 "MachineIndependent/glslang_tab.cpp" +#line 11284 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* statement_scoped: $@8 simple_statement */ -#line 3782 "MachineIndependent/glslang.y" + case 581: /* statement_scoped: $@8 simple_statement */ +#line 3806 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11223 "MachineIndependent/glslang_tab.cpp" +#line 11295 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3791 "MachineIndependent/glslang.y" + case 582: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3815 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11231 "MachineIndependent/glslang_tab.cpp" +#line 11303 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3794 "MachineIndependent/glslang.y" + case 583: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3818 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11241 "MachineIndependent/glslang_tab.cpp" +#line 11313 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* statement_list: statement */ -#line 3802 "MachineIndependent/glslang.y" + case 584: /* statement_list: statement */ +#line 3826 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11250,11 +11322,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11254 "MachineIndependent/glslang_tab.cpp" +#line 11326 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* statement_list: statement_list statement */ -#line 3810 "MachineIndependent/glslang.y" + case 585: /* statement_list: statement_list statement */ +#line 3834 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11263,77 +11335,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11267 "MachineIndependent/glslang_tab.cpp" +#line 11339 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* expression_statement: SEMICOLON */ -#line 3821 "MachineIndependent/glslang.y" + case 586: /* expression_statement: SEMICOLON */ +#line 3845 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11273 "MachineIndependent/glslang_tab.cpp" +#line 11345 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* expression_statement: expression SEMICOLON */ -#line 3822 "MachineIndependent/glslang.y" + case 587: /* expression_statement: expression SEMICOLON */ +#line 3846 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11279 "MachineIndependent/glslang_tab.cpp" +#line 11351 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* selection_statement: selection_statement_nonattributed */ -#line 3826 "MachineIndependent/glslang.y" + case 588: /* selection_statement: selection_statement_nonattributed */ +#line 3850 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11287 "MachineIndependent/glslang_tab.cpp" +#line 11359 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3830 "MachineIndependent/glslang.y" + case 589: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3854 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11297 "MachineIndependent/glslang_tab.cpp" +#line 11369 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3838 "MachineIndependent/glslang.y" + case 590: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3862 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11306 "MachineIndependent/glslang_tab.cpp" +#line 11378 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3845 "MachineIndependent/glslang.y" + case 591: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3869 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11315 "MachineIndependent/glslang_tab.cpp" +#line 11387 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* selection_rest_statement: statement_scoped */ -#line 3849 "MachineIndependent/glslang.y" + case 592: /* selection_rest_statement: statement_scoped */ +#line 3873 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11324 "MachineIndependent/glslang_tab.cpp" +#line 11396 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* condition: expression */ -#line 3857 "MachineIndependent/glslang.y" + case 593: /* condition: expression */ +#line 3881 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11333 "MachineIndependent/glslang_tab.cpp" +#line 11405 "MachineIndependent/glslang_tab.cpp" break; - case 590: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3861 "MachineIndependent/glslang.y" + case 594: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3885 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11344,29 +11416,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11348 "MachineIndependent/glslang_tab.cpp" +#line 11420 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* switch_statement: switch_statement_nonattributed */ -#line 3874 "MachineIndependent/glslang.y" + case 595: /* switch_statement: switch_statement_nonattributed */ +#line 3898 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11356 "MachineIndependent/glslang_tab.cpp" +#line 11428 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3878 "MachineIndependent/glslang.y" + case 596: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3902 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11366 "MachineIndependent/glslang_tab.cpp" +#line 11438 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* $@9: %empty */ -#line 3886 "MachineIndependent/glslang.y" + case 597: /* $@9: %empty */ +#line 3910 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11375,11 +11447,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11379 "MachineIndependent/glslang_tab.cpp" +#line 11451 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3894 "MachineIndependent/glslang.y" + case 598: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3918 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11389,27 +11461,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11393 "MachineIndependent/glslang_tab.cpp" +#line 11465 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* switch_statement_list: %empty */ -#line 3906 "MachineIndependent/glslang.y" + case 599: /* switch_statement_list: %empty */ +#line 3930 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11401 "MachineIndependent/glslang_tab.cpp" +#line 11473 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* switch_statement_list: statement_list */ -#line 3909 "MachineIndependent/glslang.y" + case 600: /* switch_statement_list: statement_list */ +#line 3933 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11409 "MachineIndependent/glslang_tab.cpp" +#line 11481 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* case_label: CASE expression COLON */ -#line 3915 "MachineIndependent/glslang.y" + case 601: /* case_label: CASE expression COLON */ +#line 3939 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11422,11 +11494,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11426 "MachineIndependent/glslang_tab.cpp" +#line 11498 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* case_label: DEFAULT COLON */ -#line 3927 "MachineIndependent/glslang.y" + case 602: /* case_label: DEFAULT COLON */ +#line 3951 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11436,29 +11508,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11440 "MachineIndependent/glslang_tab.cpp" +#line 11512 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* iteration_statement: iteration_statement_nonattributed */ -#line 3939 "MachineIndependent/glslang.y" + case 603: /* iteration_statement: iteration_statement_nonattributed */ +#line 3963 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11448 "MachineIndependent/glslang_tab.cpp" +#line 11520 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3943 "MachineIndependent/glslang.y" + case 604: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3967 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11458 "MachineIndependent/glslang_tab.cpp" +#line 11530 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* $@10: %empty */ -#line 3951 "MachineIndependent/glslang.y" + case 605: /* $@10: %empty */ +#line 3975 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11467,11 +11539,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11471 "MachineIndependent/glslang_tab.cpp" +#line 11543 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3959 "MachineIndependent/glslang.y" + case 606: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 3983 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11479,22 +11551,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11483 "MachineIndependent/glslang_tab.cpp" +#line 11555 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* $@11: %empty */ -#line 3966 "MachineIndependent/glslang.y" + case 607: /* $@11: %empty */ +#line 3990 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11494 "MachineIndependent/glslang_tab.cpp" +#line 11566 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3972 "MachineIndependent/glslang.y" + case 608: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 3996 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11507,22 +11579,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11511 "MachineIndependent/glslang_tab.cpp" +#line 11583 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* $@12: %empty */ -#line 3984 "MachineIndependent/glslang.y" + case 609: /* $@12: %empty */ +#line 4008 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11522 "MachineIndependent/glslang_tab.cpp" +#line 11594 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3990 "MachineIndependent/glslang.y" + case 610: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 4014 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11535,81 +11607,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11539 "MachineIndependent/glslang_tab.cpp" +#line 11611 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* for_init_statement: expression_statement */ -#line 4005 "MachineIndependent/glslang.y" + case 611: /* for_init_statement: expression_statement */ +#line 4029 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11547 "MachineIndependent/glslang_tab.cpp" +#line 11619 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* for_init_statement: declaration_statement */ -#line 4008 "MachineIndependent/glslang.y" + case 612: /* for_init_statement: declaration_statement */ +#line 4032 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11555 "MachineIndependent/glslang_tab.cpp" +#line 11627 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* conditionopt: condition */ -#line 4014 "MachineIndependent/glslang.y" + case 613: /* conditionopt: condition */ +#line 4038 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11563 "MachineIndependent/glslang_tab.cpp" +#line 11635 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* conditionopt: %empty */ -#line 4017 "MachineIndependent/glslang.y" + case 614: /* conditionopt: %empty */ +#line 4041 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11571 "MachineIndependent/glslang_tab.cpp" +#line 11643 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4023 "MachineIndependent/glslang.y" + case 615: /* for_rest_statement: conditionopt SEMICOLON */ +#line 4047 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11580 "MachineIndependent/glslang_tab.cpp" +#line 11652 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4027 "MachineIndependent/glslang.y" + case 616: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 4051 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11589 "MachineIndependent/glslang_tab.cpp" +#line 11661 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* jump_statement: CONTINUE SEMICOLON */ -#line 4034 "MachineIndependent/glslang.y" + case 617: /* jump_statement: CONTINUE SEMICOLON */ +#line 4058 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11599 "MachineIndependent/glslang_tab.cpp" +#line 11671 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* jump_statement: BREAK SEMICOLON */ -#line 4039 "MachineIndependent/glslang.y" + case 618: /* jump_statement: BREAK SEMICOLON */ +#line 4063 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11609 "MachineIndependent/glslang_tab.cpp" +#line 11681 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* jump_statement: RETURN SEMICOLON */ -#line 4044 "MachineIndependent/glslang.y" + case 619: /* jump_statement: RETURN SEMICOLON */ +#line 4068 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11617,101 +11689,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11621 "MachineIndependent/glslang_tab.cpp" +#line 11693 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* jump_statement: RETURN expression SEMICOLON */ -#line 4051 "MachineIndependent/glslang.y" + case 620: /* jump_statement: RETURN expression SEMICOLON */ +#line 4075 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11629 "MachineIndependent/glslang_tab.cpp" +#line 11701 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* jump_statement: DISCARD SEMICOLON */ -#line 4054 "MachineIndependent/glslang.y" + case 621: /* jump_statement: DISCARD SEMICOLON */ +#line 4078 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11638 "MachineIndependent/glslang_tab.cpp" +#line 11710 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4058 "MachineIndependent/glslang.y" + case 622: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4082 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11647 "MachineIndependent/glslang_tab.cpp" +#line 11719 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4063 "MachineIndependent/glslang.y" + case 623: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4087 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11656 "MachineIndependent/glslang_tab.cpp" +#line 11728 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4067 "MachineIndependent/glslang.y" + case 624: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4091 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11665 "MachineIndependent/glslang_tab.cpp" +#line 11737 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* translation_unit: external_declaration */ -#line 4077 "MachineIndependent/glslang.y" + case 625: /* translation_unit: external_declaration */ +#line 4101 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11674 "MachineIndependent/glslang_tab.cpp" +#line 11746 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* translation_unit: translation_unit external_declaration */ -#line 4081 "MachineIndependent/glslang.y" + case 626: /* translation_unit: translation_unit external_declaration */ +#line 4105 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11685 "MachineIndependent/glslang_tab.cpp" +#line 11757 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* external_declaration: function_definition */ -#line 4090 "MachineIndependent/glslang.y" + case 627: /* external_declaration: function_definition */ +#line 4114 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11693 "MachineIndependent/glslang_tab.cpp" +#line 11765 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* external_declaration: declaration */ -#line 4093 "MachineIndependent/glslang.y" + case 628: /* external_declaration: declaration */ +#line 4117 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11701 "MachineIndependent/glslang_tab.cpp" +#line 11773 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* external_declaration: SEMICOLON */ -#line 4097 "MachineIndependent/glslang.y" + case 629: /* external_declaration: SEMICOLON */ +#line 4121 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11711 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* $@13: %empty */ -#line 4106 "MachineIndependent/glslang.y" + case 630: /* $@13: %empty */ +#line 4130 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11724,11 +11796,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11728 "MachineIndependent/glslang_tab.cpp" +#line 11800 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4118 "MachineIndependent/glslang.y" + case 631: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4142 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11755,228 +11827,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11759 "MachineIndependent/glslang_tab.cpp" +#line 11831 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4148 "MachineIndependent/glslang.y" + case 632: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4172 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11767 "MachineIndependent/glslang_tab.cpp" +#line 11839 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* attribute_list: single_attribute */ -#line 4153 "MachineIndependent/glslang.y" + case 633: /* attribute_list: single_attribute */ +#line 4177 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11775 "MachineIndependent/glslang_tab.cpp" +#line 11847 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4156 "MachineIndependent/glslang.y" + case 634: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4180 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11783 "MachineIndependent/glslang_tab.cpp" +#line 11855 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* single_attribute: IDENTIFIER */ -#line 4161 "MachineIndependent/glslang.y" + case 635: /* single_attribute: IDENTIFIER */ +#line 4185 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11791 "MachineIndependent/glslang_tab.cpp" +#line 11863 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4164 "MachineIndependent/glslang.y" + case 636: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4188 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11799 "MachineIndependent/glslang_tab.cpp" +#line 11871 "MachineIndependent/glslang_tab.cpp" break; - case 633: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4171 "MachineIndependent/glslang.y" + case 637: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4195 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11807 "MachineIndependent/glslang_tab.cpp" +#line 11879 "MachineIndependent/glslang_tab.cpp" break; - case 634: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4174 "MachineIndependent/glslang.y" + case 638: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4198 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11815 "MachineIndependent/glslang_tab.cpp" +#line 11887 "MachineIndependent/glslang_tab.cpp" break; - case 635: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4179 "MachineIndependent/glslang.y" + case 639: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4203 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11823 "MachineIndependent/glslang_tab.cpp" +#line 11895 "MachineIndependent/glslang_tab.cpp" break; - case 636: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4182 "MachineIndependent/glslang.y" + case 640: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4206 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11831 "MachineIndependent/glslang_tab.cpp" +#line 11903 "MachineIndependent/glslang_tab.cpp" break; - case 637: /* spirv_extension_list: STRING_LITERAL */ -#line 4187 "MachineIndependent/glslang.y" + case 641: /* spirv_extension_list: STRING_LITERAL */ +#line 4211 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11839 "MachineIndependent/glslang_tab.cpp" +#line 11911 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4190 "MachineIndependent/glslang.y" + case 642: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4214 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11847 "MachineIndependent/glslang_tab.cpp" +#line 11919 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* spirv_capability_list: INTCONSTANT */ -#line 4195 "MachineIndependent/glslang.y" + case 643: /* spirv_capability_list: INTCONSTANT */ +#line 4219 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11855 "MachineIndependent/glslang_tab.cpp" +#line 11927 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4198 "MachineIndependent/glslang.y" + case 644: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4222 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11863 "MachineIndependent/glslang_tab.cpp" +#line 11935 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4203 "MachineIndependent/glslang.y" + case 645: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4227 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11872 "MachineIndependent/glslang_tab.cpp" +#line 11944 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4207 "MachineIndependent/glslang.y" + case 646: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4231 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11882 "MachineIndependent/glslang_tab.cpp" +#line 11954 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4212 "MachineIndependent/glslang.y" + case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4236 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11891 "MachineIndependent/glslang_tab.cpp" +#line 11963 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4216 "MachineIndependent/glslang.y" + case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4240 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11901 "MachineIndependent/glslang_tab.cpp" +#line 11973 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4221 "MachineIndependent/glslang.y" + case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4245 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11910 "MachineIndependent/glslang_tab.cpp" +#line 11982 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4225 "MachineIndependent/glslang.y" + case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4249 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11920 "MachineIndependent/glslang_tab.cpp" +#line 11992 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4232 "MachineIndependent/glslang.y" + case 651: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4256 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 11928 "MachineIndependent/glslang_tab.cpp" +#line 12000 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4235 "MachineIndependent/glslang.y" + case 652: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4259 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11936 "MachineIndependent/glslang_tab.cpp" +#line 12008 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4240 "MachineIndependent/glslang.y" + case 653: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4264 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 11944 "MachineIndependent/glslang_tab.cpp" +#line 12016 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4243 "MachineIndependent/glslang.y" + case 654: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4267 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 11952 "MachineIndependent/glslang_tab.cpp" +#line 12024 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4246 "MachineIndependent/glslang.y" + case 655: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4270 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 11960 "MachineIndependent/glslang_tab.cpp" +#line 12032 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4249 "MachineIndependent/glslang.y" + case 656: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4273 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 11968 "MachineIndependent/glslang_tab.cpp" +#line 12040 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4252 "MachineIndependent/glslang.y" + case 657: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4276 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 11976 "MachineIndependent/glslang_tab.cpp" +#line 12048 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4257 "MachineIndependent/glslang.y" + case 658: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4281 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -11986,11 +12058,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 11990 "MachineIndependent/glslang_tab.cpp" +#line 12062 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4266 "MachineIndependent/glslang.y" + case 659: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4290 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12000,343 +12072,343 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12004 "MachineIndependent/glslang_tab.cpp" +#line 12076 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4277 "MachineIndependent/glslang.y" + case 660: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12014 "MachineIndependent/glslang_tab.cpp" +#line 12086 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4282 "MachineIndependent/glslang.y" + case 661: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12025 "MachineIndependent/glslang_tab.cpp" +#line 12097 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4290 "MachineIndependent/glslang.y" + case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4314 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12034 "MachineIndependent/glslang_tab.cpp" +#line 12106 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4294 "MachineIndependent/glslang.y" + case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4318 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12044 "MachineIndependent/glslang_tab.cpp" +#line 12116 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4299 "MachineIndependent/glslang.y" + case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4323 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12053 "MachineIndependent/glslang_tab.cpp" +#line 12125 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4303 "MachineIndependent/glslang.y" + case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4327 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12063 "MachineIndependent/glslang_tab.cpp" +#line 12135 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4308 "MachineIndependent/glslang.y" + case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4332 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12072 "MachineIndependent/glslang_tab.cpp" +#line 12144 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4312 "MachineIndependent/glslang.y" + case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4336 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12082 "MachineIndependent/glslang_tab.cpp" +#line 12154 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4317 "MachineIndependent/glslang.y" + case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4341 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12091 "MachineIndependent/glslang_tab.cpp" +#line 12163 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4321 "MachineIndependent/glslang.y" + case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4345 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12101 "MachineIndependent/glslang_tab.cpp" +#line 12173 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4328 "MachineIndependent/glslang.y" + case 670: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4352 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12109 "MachineIndependent/glslang_tab.cpp" +#line 12181 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4331 "MachineIndependent/glslang.y" + case 671: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4355 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12117 "MachineIndependent/glslang_tab.cpp" +#line 12189 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4336 "MachineIndependent/glslang.y" + case 672: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4360 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12125 "MachineIndependent/glslang_tab.cpp" +#line 12197 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4339 "MachineIndependent/glslang.y" + case 673: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4363 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12133 "MachineIndependent/glslang_tab.cpp" +#line 12205 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4342 "MachineIndependent/glslang.y" + case 674: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4366 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12141 "MachineIndependent/glslang_tab.cpp" +#line 12213 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4345 "MachineIndependent/glslang.y" + case 675: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4369 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12149 "MachineIndependent/glslang_tab.cpp" +#line 12221 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4350 "MachineIndependent/glslang.y" + case 676: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ +#line 4374 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12157 "MachineIndependent/glslang_tab.cpp" +#line 12229 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4353 "MachineIndependent/glslang.y" + case 677: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ +#line 4377 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12165 "MachineIndependent/glslang_tab.cpp" +#line 12237 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4358 "MachineIndependent/glslang.y" + case 678: /* spirv_decorate_id_parameter: variable_identifier */ +#line 4382 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12176 "MachineIndependent/glslang_tab.cpp" +#line 12248 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4364 "MachineIndependent/glslang.y" + case 679: /* spirv_decorate_id_parameter: FLOATCONSTANT */ +#line 4388 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12184 "MachineIndependent/glslang_tab.cpp" +#line 12256 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4367 "MachineIndependent/glslang.y" + case 680: /* spirv_decorate_id_parameter: INTCONSTANT */ +#line 4391 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12192 "MachineIndependent/glslang_tab.cpp" +#line 12264 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4370 "MachineIndependent/glslang.y" + case 681: /* spirv_decorate_id_parameter: UINTCONSTANT */ +#line 4394 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12200 "MachineIndependent/glslang_tab.cpp" +#line 12272 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4373 "MachineIndependent/glslang.y" + case 682: /* spirv_decorate_id_parameter: BOOLCONSTANT */ +#line 4397 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12208 "MachineIndependent/glslang_tab.cpp" +#line 12280 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4378 "MachineIndependent/glslang.y" + case 683: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4402 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12217 "MachineIndependent/glslang_tab.cpp" +#line 12289 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4382 "MachineIndependent/glslang.y" + case 684: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4406 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12225 "MachineIndependent/glslang_tab.cpp" +#line 12297 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4387 "MachineIndependent/glslang.y" + case 685: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4411 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12234 "MachineIndependent/glslang_tab.cpp" +#line 12306 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4391 "MachineIndependent/glslang.y" + case 686: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4415 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12244 "MachineIndependent/glslang_tab.cpp" +#line 12316 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4396 "MachineIndependent/glslang.y" + case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4420 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12253 "MachineIndependent/glslang_tab.cpp" +#line 12325 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4400 "MachineIndependent/glslang.y" + case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4424 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12263 "MachineIndependent/glslang_tab.cpp" +#line 12335 "MachineIndependent/glslang_tab.cpp" break; - case 685: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4407 "MachineIndependent/glslang.y" + case 689: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4431 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12271 "MachineIndependent/glslang_tab.cpp" +#line 12343 "MachineIndependent/glslang_tab.cpp" break; - case 686: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4410 "MachineIndependent/glslang.y" + case 690: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4434 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12279 "MachineIndependent/glslang_tab.cpp" +#line 12351 "MachineIndependent/glslang_tab.cpp" break; - case 687: /* spirv_type_parameter: constant_expression */ -#line 4415 "MachineIndependent/glslang.y" + case 691: /* spirv_type_parameter: constant_expression */ +#line 4439 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12287 "MachineIndependent/glslang_tab.cpp" +#line 12359 "MachineIndependent/glslang_tab.cpp" break; - case 688: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4420 "MachineIndependent/glslang.y" + case 692: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4444 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12295 "MachineIndependent/glslang_tab.cpp" +#line 12367 "MachineIndependent/glslang_tab.cpp" break; - case 689: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4423 "MachineIndependent/glslang.y" + case 693: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4447 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12304 "MachineIndependent/glslang_tab.cpp" +#line 12376 "MachineIndependent/glslang_tab.cpp" break; - case 690: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4429 "MachineIndependent/glslang.y" + case 694: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4453 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12312 "MachineIndependent/glslang_tab.cpp" +#line 12384 "MachineIndependent/glslang_tab.cpp" break; - case 691: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4432 "MachineIndependent/glslang.y" + case 695: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4456 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12320 "MachineIndependent/glslang_tab.cpp" +#line 12392 "MachineIndependent/glslang_tab.cpp" break; - case 692: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4437 "MachineIndependent/glslang.y" + case 696: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4461 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12328 "MachineIndependent/glslang_tab.cpp" +#line 12400 "MachineIndependent/glslang_tab.cpp" break; - case 693: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4440 "MachineIndependent/glslang.y" + case 697: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4464 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12336 "MachineIndependent/glslang_tab.cpp" +#line 12408 "MachineIndependent/glslang_tab.cpp" break; -#line 12340 "MachineIndependent/glslang_tab.cpp" +#line 12412 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12561,5 +12633,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4445 "MachineIndependent/glslang.y" +#line 4469 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 6d168d0113..d2dd5e3539 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -380,137 +380,141 @@ extern int yydebug; SPIRV_STORAGE_CLASS = 581, /* SPIRV_STORAGE_CLASS */ SPIRV_BY_REFERENCE = 582, /* SPIRV_BY_REFERENCE */ SPIRV_LITERAL = 583, /* SPIRV_LITERAL */ - LEFT_OP = 584, /* LEFT_OP */ - RIGHT_OP = 585, /* RIGHT_OP */ - INC_OP = 586, /* INC_OP */ - DEC_OP = 587, /* DEC_OP */ - LE_OP = 588, /* LE_OP */ - GE_OP = 589, /* GE_OP */ - EQ_OP = 590, /* EQ_OP */ - NE_OP = 591, /* NE_OP */ - AND_OP = 592, /* AND_OP */ - OR_OP = 593, /* OR_OP */ - XOR_OP = 594, /* XOR_OP */ - MUL_ASSIGN = 595, /* MUL_ASSIGN */ - DIV_ASSIGN = 596, /* DIV_ASSIGN */ - ADD_ASSIGN = 597, /* ADD_ASSIGN */ - MOD_ASSIGN = 598, /* MOD_ASSIGN */ - LEFT_ASSIGN = 599, /* LEFT_ASSIGN */ - RIGHT_ASSIGN = 600, /* RIGHT_ASSIGN */ - AND_ASSIGN = 601, /* AND_ASSIGN */ - XOR_ASSIGN = 602, /* XOR_ASSIGN */ - OR_ASSIGN = 603, /* OR_ASSIGN */ - SUB_ASSIGN = 604, /* SUB_ASSIGN */ - STRING_LITERAL = 605, /* STRING_LITERAL */ - LEFT_PAREN = 606, /* LEFT_PAREN */ - RIGHT_PAREN = 607, /* RIGHT_PAREN */ - LEFT_BRACKET = 608, /* LEFT_BRACKET */ - RIGHT_BRACKET = 609, /* RIGHT_BRACKET */ - LEFT_BRACE = 610, /* LEFT_BRACE */ - RIGHT_BRACE = 611, /* RIGHT_BRACE */ - DOT = 612, /* DOT */ - COMMA = 613, /* COMMA */ - COLON = 614, /* COLON */ - EQUAL = 615, /* EQUAL */ - SEMICOLON = 616, /* SEMICOLON */ - BANG = 617, /* BANG */ - DASH = 618, /* DASH */ - TILDE = 619, /* TILDE */ - PLUS = 620, /* PLUS */ - STAR = 621, /* STAR */ - SLASH = 622, /* SLASH */ - PERCENT = 623, /* PERCENT */ - LEFT_ANGLE = 624, /* LEFT_ANGLE */ - RIGHT_ANGLE = 625, /* RIGHT_ANGLE */ - VERTICAL_BAR = 626, /* VERTICAL_BAR */ - CARET = 627, /* CARET */ - AMPERSAND = 628, /* AMPERSAND */ - QUESTION = 629, /* QUESTION */ - INVARIANT = 630, /* INVARIANT */ - HIGH_PRECISION = 631, /* HIGH_PRECISION */ - MEDIUM_PRECISION = 632, /* MEDIUM_PRECISION */ - LOW_PRECISION = 633, /* LOW_PRECISION */ - PRECISION = 634, /* PRECISION */ - PACKED = 635, /* PACKED */ - RESOURCE = 636, /* RESOURCE */ - SUPERP = 637, /* SUPERP */ - FLOATCONSTANT = 638, /* FLOATCONSTANT */ - INTCONSTANT = 639, /* INTCONSTANT */ - UINTCONSTANT = 640, /* UINTCONSTANT */ - BOOLCONSTANT = 641, /* BOOLCONSTANT */ - IDENTIFIER = 642, /* IDENTIFIER */ - TYPE_NAME = 643, /* TYPE_NAME */ - CENTROID = 644, /* CENTROID */ - IN = 645, /* IN */ - OUT = 646, /* OUT */ - INOUT = 647, /* INOUT */ - STRUCT = 648, /* STRUCT */ - VOID = 649, /* VOID */ - WHILE = 650, /* WHILE */ - BREAK = 651, /* BREAK */ - CONTINUE = 652, /* CONTINUE */ - DO = 653, /* DO */ - ELSE = 654, /* ELSE */ - FOR = 655, /* FOR */ - IF = 656, /* IF */ - DISCARD = 657, /* DISCARD */ - RETURN = 658, /* RETURN */ - SWITCH = 659, /* SWITCH */ - CASE = 660, /* CASE */ - DEFAULT = 661, /* DEFAULT */ - TERMINATE_INVOCATION = 662, /* TERMINATE_INVOCATION */ - TERMINATE_RAY = 663, /* TERMINATE_RAY */ - IGNORE_INTERSECTION = 664, /* IGNORE_INTERSECTION */ - UNIFORM = 665, /* UNIFORM */ - SHARED = 666, /* SHARED */ - BUFFER = 667, /* BUFFER */ - FLAT = 668, /* FLAT */ - SMOOTH = 669, /* SMOOTH */ - LAYOUT = 670, /* LAYOUT */ - DOUBLECONSTANT = 671, /* DOUBLECONSTANT */ - INT16CONSTANT = 672, /* INT16CONSTANT */ - UINT16CONSTANT = 673, /* UINT16CONSTANT */ - FLOAT16CONSTANT = 674, /* FLOAT16CONSTANT */ - INT32CONSTANT = 675, /* INT32CONSTANT */ - UINT32CONSTANT = 676, /* UINT32CONSTANT */ - INT64CONSTANT = 677, /* INT64CONSTANT */ - UINT64CONSTANT = 678, /* UINT64CONSTANT */ - SUBROUTINE = 679, /* SUBROUTINE */ - DEMOTE = 680, /* DEMOTE */ - PAYLOADNV = 681, /* PAYLOADNV */ - PAYLOADINNV = 682, /* PAYLOADINNV */ - HITATTRNV = 683, /* HITATTRNV */ - CALLDATANV = 684, /* CALLDATANV */ - CALLDATAINNV = 685, /* CALLDATAINNV */ - PAYLOADEXT = 686, /* PAYLOADEXT */ - PAYLOADINEXT = 687, /* PAYLOADINEXT */ - HITATTREXT = 688, /* HITATTREXT */ - CALLDATAEXT = 689, /* CALLDATAEXT */ - CALLDATAINEXT = 690, /* CALLDATAINEXT */ - PATCH = 691, /* PATCH */ - SAMPLE = 692, /* SAMPLE */ - NONUNIFORM = 693, /* NONUNIFORM */ - COHERENT = 694, /* COHERENT */ - VOLATILE = 695, /* VOLATILE */ - RESTRICT = 696, /* RESTRICT */ - READONLY = 697, /* READONLY */ - WRITEONLY = 698, /* WRITEONLY */ - DEVICECOHERENT = 699, /* DEVICECOHERENT */ - QUEUEFAMILYCOHERENT = 700, /* QUEUEFAMILYCOHERENT */ - WORKGROUPCOHERENT = 701, /* WORKGROUPCOHERENT */ - SUBGROUPCOHERENT = 702, /* SUBGROUPCOHERENT */ - NONPRIVATE = 703, /* NONPRIVATE */ - SHADERCALLCOHERENT = 704, /* SHADERCALLCOHERENT */ - NOPERSPECTIVE = 705, /* NOPERSPECTIVE */ - EXPLICITINTERPAMD = 706, /* EXPLICITINTERPAMD */ - PERVERTEXEXT = 707, /* PERVERTEXEXT */ - PERVERTEXNV = 708, /* PERVERTEXNV */ - PERPRIMITIVENV = 709, /* PERPRIMITIVENV */ - PERVIEWNV = 710, /* PERVIEWNV */ - PERTASKNV = 711, /* PERTASKNV */ - PERPRIMITIVEEXT = 712, /* PERPRIMITIVEEXT */ - TASKPAYLOADWORKGROUPEXT = 713, /* TASKPAYLOADWORKGROUPEXT */ - PRECISE = 714 /* PRECISE */ + ATTACHMENTEXT = 584, /* ATTACHMENTEXT */ + IATTACHMENTEXT = 585, /* IATTACHMENTEXT */ + UATTACHMENTEXT = 586, /* UATTACHMENTEXT */ + LEFT_OP = 587, /* LEFT_OP */ + RIGHT_OP = 588, /* RIGHT_OP */ + INC_OP = 589, /* INC_OP */ + DEC_OP = 590, /* DEC_OP */ + LE_OP = 591, /* LE_OP */ + GE_OP = 592, /* GE_OP */ + EQ_OP = 593, /* EQ_OP */ + NE_OP = 594, /* NE_OP */ + AND_OP = 595, /* AND_OP */ + OR_OP = 596, /* OR_OP */ + XOR_OP = 597, /* XOR_OP */ + MUL_ASSIGN = 598, /* MUL_ASSIGN */ + DIV_ASSIGN = 599, /* DIV_ASSIGN */ + ADD_ASSIGN = 600, /* ADD_ASSIGN */ + MOD_ASSIGN = 601, /* MOD_ASSIGN */ + LEFT_ASSIGN = 602, /* LEFT_ASSIGN */ + RIGHT_ASSIGN = 603, /* RIGHT_ASSIGN */ + AND_ASSIGN = 604, /* AND_ASSIGN */ + XOR_ASSIGN = 605, /* XOR_ASSIGN */ + OR_ASSIGN = 606, /* OR_ASSIGN */ + SUB_ASSIGN = 607, /* SUB_ASSIGN */ + STRING_LITERAL = 608, /* STRING_LITERAL */ + LEFT_PAREN = 609, /* LEFT_PAREN */ + RIGHT_PAREN = 610, /* RIGHT_PAREN */ + LEFT_BRACKET = 611, /* LEFT_BRACKET */ + RIGHT_BRACKET = 612, /* RIGHT_BRACKET */ + LEFT_BRACE = 613, /* LEFT_BRACE */ + RIGHT_BRACE = 614, /* RIGHT_BRACE */ + DOT = 615, /* DOT */ + COMMA = 616, /* COMMA */ + COLON = 617, /* COLON */ + EQUAL = 618, /* EQUAL */ + SEMICOLON = 619, /* SEMICOLON */ + BANG = 620, /* BANG */ + DASH = 621, /* DASH */ + TILDE = 622, /* TILDE */ + PLUS = 623, /* PLUS */ + STAR = 624, /* STAR */ + SLASH = 625, /* SLASH */ + PERCENT = 626, /* PERCENT */ + LEFT_ANGLE = 627, /* LEFT_ANGLE */ + RIGHT_ANGLE = 628, /* RIGHT_ANGLE */ + VERTICAL_BAR = 629, /* VERTICAL_BAR */ + CARET = 630, /* CARET */ + AMPERSAND = 631, /* AMPERSAND */ + QUESTION = 632, /* QUESTION */ + INVARIANT = 633, /* INVARIANT */ + HIGH_PRECISION = 634, /* HIGH_PRECISION */ + MEDIUM_PRECISION = 635, /* MEDIUM_PRECISION */ + LOW_PRECISION = 636, /* LOW_PRECISION */ + PRECISION = 637, /* PRECISION */ + PACKED = 638, /* PACKED */ + RESOURCE = 639, /* RESOURCE */ + SUPERP = 640, /* SUPERP */ + FLOATCONSTANT = 641, /* FLOATCONSTANT */ + INTCONSTANT = 642, /* INTCONSTANT */ + UINTCONSTANT = 643, /* UINTCONSTANT */ + BOOLCONSTANT = 644, /* BOOLCONSTANT */ + IDENTIFIER = 645, /* IDENTIFIER */ + TYPE_NAME = 646, /* TYPE_NAME */ + CENTROID = 647, /* CENTROID */ + IN = 648, /* IN */ + OUT = 649, /* OUT */ + INOUT = 650, /* INOUT */ + STRUCT = 651, /* STRUCT */ + VOID = 652, /* VOID */ + WHILE = 653, /* WHILE */ + BREAK = 654, /* BREAK */ + CONTINUE = 655, /* CONTINUE */ + DO = 656, /* DO */ + ELSE = 657, /* ELSE */ + FOR = 658, /* FOR */ + IF = 659, /* IF */ + DISCARD = 660, /* DISCARD */ + RETURN = 661, /* RETURN */ + SWITCH = 662, /* SWITCH */ + CASE = 663, /* CASE */ + DEFAULT = 664, /* DEFAULT */ + TERMINATE_INVOCATION = 665, /* TERMINATE_INVOCATION */ + TERMINATE_RAY = 666, /* TERMINATE_RAY */ + IGNORE_INTERSECTION = 667, /* IGNORE_INTERSECTION */ + UNIFORM = 668, /* UNIFORM */ + SHARED = 669, /* SHARED */ + BUFFER = 670, /* BUFFER */ + TILEIMAGEEXT = 671, /* TILEIMAGEEXT */ + FLAT = 672, /* FLAT */ + SMOOTH = 673, /* SMOOTH */ + LAYOUT = 674, /* LAYOUT */ + DOUBLECONSTANT = 675, /* DOUBLECONSTANT */ + INT16CONSTANT = 676, /* INT16CONSTANT */ + UINT16CONSTANT = 677, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 678, /* FLOAT16CONSTANT */ + INT32CONSTANT = 679, /* INT32CONSTANT */ + UINT32CONSTANT = 680, /* UINT32CONSTANT */ + INT64CONSTANT = 681, /* INT64CONSTANT */ + UINT64CONSTANT = 682, /* UINT64CONSTANT */ + SUBROUTINE = 683, /* SUBROUTINE */ + DEMOTE = 684, /* DEMOTE */ + PAYLOADNV = 685, /* PAYLOADNV */ + PAYLOADINNV = 686, /* PAYLOADINNV */ + HITATTRNV = 687, /* HITATTRNV */ + CALLDATANV = 688, /* CALLDATANV */ + CALLDATAINNV = 689, /* CALLDATAINNV */ + PAYLOADEXT = 690, /* PAYLOADEXT */ + PAYLOADINEXT = 691, /* PAYLOADINEXT */ + HITATTREXT = 692, /* HITATTREXT */ + CALLDATAEXT = 693, /* CALLDATAEXT */ + CALLDATAINEXT = 694, /* CALLDATAINEXT */ + PATCH = 695, /* PATCH */ + SAMPLE = 696, /* SAMPLE */ + NONUNIFORM = 697, /* NONUNIFORM */ + COHERENT = 698, /* COHERENT */ + VOLATILE = 699, /* VOLATILE */ + RESTRICT = 700, /* RESTRICT */ + READONLY = 701, /* READONLY */ + WRITEONLY = 702, /* WRITEONLY */ + DEVICECOHERENT = 703, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 704, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 705, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 706, /* SUBGROUPCOHERENT */ + NONPRIVATE = 707, /* NONPRIVATE */ + SHADERCALLCOHERENT = 708, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 709, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 710, /* EXPLICITINTERPAMD */ + PERVERTEXEXT = 711, /* PERVERTEXEXT */ + PERVERTEXNV = 712, /* PERVERTEXNV */ + PERPRIMITIVENV = 713, /* PERPRIMITIVENV */ + PERVIEWNV = 714, /* PERVIEWNV */ + PERTASKNV = 715, /* PERTASKNV */ + PERPRIMITIVEEXT = 716, /* PERPRIMITIVEEXT */ + TASKPAYLOADWORKGROUPEXT = 717, /* TASKPAYLOADWORKGROUPEXT */ + PRECISE = 718 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -558,7 +562,7 @@ union YYSTYPE glslang::TArraySizes* typeParameters; } interm; -#line 562 "MachineIndependent/glslang_tab.cpp.h" +#line 566 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index a086c25d4b..b79bd464d3 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -663,6 +663,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; + case EOpColorAttachmentReadEXT: out.debug << "colorAttachmentReadEXT"; break; + case EOpConstructReference: out.debug << "Construct reference type"; break; case EOpDeclare: out.debug << "Declare"; break; @@ -1060,6 +1062,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSubpassLoad: out.debug << "subpassLoad"; break; case EOpSubpassLoadMS: out.debug << "subpassLoadMS"; break; + case EOpColorAttachmentReadEXT: out.debug << "colorAttachmentReadEXT"; break; + case EOpTraceNV: out.debug << "traceNV"; break; case EOpTraceRayMotionNV: out.debug << "traceRayMotionNV"; break; case EOpTraceKHR: out.debug << "traceRayKHR"; break; @@ -1141,6 +1145,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node #ifndef GLSLANG_WEB case EOpSpirvInst: out.debug << "spirv_instruction"; break; #endif + case EOpStencilAttachmentReadEXT: out.debug << "stencilAttachmentReadEXT"; break; + case EOpDepthAttachmentReadEXT: out.debug << "depthAttachmentReadEXT"; break; default: out.debug.message(EPrefixError, "Bad aggregation op"); } @@ -1545,6 +1551,12 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) infoSink.debug << "using early_fragment_tests\n"; if (postDepthCoverage) infoSink.debug << "using post_depth_coverage\n"; + if (nonCoherentColorAttachmentReadEXT) + infoSink.debug << "using non_coherent_color_attachment_readEXT\n"; + if (nonCoherentDepthAttachmentReadEXT) + infoSink.debug << "using non_coherent_depth_attachment_readEXT\n"; + if (nonCoherentStencilAttachmentReadEXT) + infoSink.debug << "using non_coherent_stencil_attachment_readEXT\n"; if (depthLayout != EldNone) infoSink.debug << "using " << TQualifier::getLayoutDepthString(depthLayout) << "\n"; if (blendEquations != 0) { diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 3a4cb567b1..3230d8f4b8 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -271,6 +271,9 @@ void TIntermediate::mergeModes(TInfoSink& infoSink, TIntermediate& unit) MERGE_TRUE(earlyFragmentTests); MERGE_TRUE(postDepthCoverage); + MERGE_TRUE(nonCoherentColorAttachmentReadEXT); + MERGE_TRUE(nonCoherentDepthAttachmentReadEXT); + MERGE_TRUE(nonCoherentStencilAttachmentReadEXT); if (depthLayout == EldNone) depthLayout = unit.depthLayout; @@ -1617,7 +1620,7 @@ bool TIntermediate::userOutputUsed() const return found; } -// Accumulate locations used for inputs, outputs, and uniforms, payload and callable data +// Accumulate locations used for inputs, outputs, and uniforms, payload, callable data, and tileImageEXT // and check for collisions as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. @@ -1639,6 +1642,8 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ set = 2; else if (qualifier.storage == EvqBuffer) set = 3; + else if (qualifier.storage == EvqTileImageEXT) + set = 4; else if (qualifier.isAnyPayload()) setRT = 0; else if (qualifier.isAnyCallable()) @@ -1731,7 +1736,10 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ } // combine location and component ranges - TIoRange range(locationRange, componentRange, type.getBasicType(), qualifier.hasIndex() ? qualifier.getIndex() : 0); + TBasicType basicTy = type.getBasicType(); + if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT()) + basicTy = type.getSampler().type; + TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0); // check for collisions, except for vertex inputs on desktop targeting OpenGL if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) @@ -1762,6 +1770,19 @@ int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TTyp } } + // check typeCollision between tileImageEXT and out + if (set == 4 || set == 1) { + // if the set is "tileImageEXT", check against "out" and vice versa + int againstSet = (set == 4) ? 1 : 4; + for (size_t r = 0; r < usedIo[againstSet].size(); ++r) { + if (range.location.overlap(usedIo[againstSet][r].location) && type.getBasicType() != usedIo[againstSet][r].basicType) { + // aliased-type mismatch + typeCollision = true; + return std::max(range.location.start, usedIo[againstSet][r].location.start); + } + } + } + return -1; // no collision } diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 0c56997604..165ef103ed 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -322,6 +322,9 @@ class TIntermediate { pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), postDepthCoverage(false), earlyAndLateFragmentTestsAMD(false), depthLayout(EldNone), stencilLayout(ElsNone), + nonCoherentColorAttachmentReadEXT(false), + nonCoherentDepthAttachmentReadEXT(false), + nonCoherentStencilAttachmentReadEXT(false), hlslFunctionality1(false), blendEquations(0), xfbMode(false), multiStream(false), layoutOverrideCoverage(false), @@ -638,6 +641,9 @@ class TIntermediate { bool getXfbMode() const { return false; } bool isMultiStream() const { return false; } TLayoutGeometry getOutputPrimitive() const { return ElgNone; } + bool getNonCoherentColorAttachmentReadEXT() const { return false; } + bool getNonCoherentDepthAttachmentReadEXT() const { return false; } + bool getNonCoherentStencilAttachmentReadEXT() const { return false; } bool getPostDepthCoverage() const { return false; } bool getEarlyFragmentTests() const { return false; } TLayoutDepth getDepth() const { return EldNone; } @@ -894,6 +900,12 @@ class TIntermediate { return true; } TLayoutGeometry getOutputPrimitive() const { return outputPrimitive; } + void setNonCoherentColorAttachmentReadEXT() { nonCoherentColorAttachmentReadEXT = true; } + bool getNonCoherentColorAttachmentReadEXT() const { return nonCoherentColorAttachmentReadEXT; } + void setNonCoherentDepthAttachmentReadEXT() { nonCoherentDepthAttachmentReadEXT = true; } + bool getNonCoherentDepthAttachmentReadEXT() const { return nonCoherentDepthAttachmentReadEXT; } + void setNonCoherentStencilAttachmentReadEXT() { nonCoherentStencilAttachmentReadEXT = true; } + bool getNonCoherentStencilAttachmentReadEXT() const { return nonCoherentStencilAttachmentReadEXT; } void setPostDepthCoverage() { postDepthCoverage = true; } bool getPostDepthCoverage() const { return postDepthCoverage; } void setEarlyFragmentTests() { earlyFragmentTests = true; } @@ -1215,6 +1227,9 @@ class TIntermediate { bool earlyFragmentTests; bool postDepthCoverage; bool earlyAndLateFragmentTestsAMD; + bool nonCoherentColorAttachmentReadEXT; + bool nonCoherentDepthAttachmentReadEXT; + bool nonCoherentStencilAttachmentReadEXT; TLayoutDepth depthLayout; TLayoutStencil stencilLayout; bool hlslFunctionality1; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 44c50e0529..5a4c4287a1 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -357,6 +357,12 @@ INSTANTIATE_TEST_SUITE_P( "spv.discard-dce.frag", "spv.doWhileLoop.frag", "spv.earlyReturnDiscard.frag", + "spv.ext.ShaderTileImage.color.frag", + "spv.ext.ShaderTileImage.depth_stencil.frag", + "spv.ext.ShaderTileImage.subpassinput.frag", + "spv.ext.ShaderTileImage.typemismatch.frag", + "spv.ext.ShaderTileImage.overlap.frag", + "spv.ext.ShaderTileImage.wronglayout.frag", "spv.extPostDepthCoverage.frag", "spv.extPostDepthCoverage_Error.frag", "spv.float16convertonlyarith.comp", From 010019f93b4c610aeeb1ded840cffda7c3633ef0 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 6 Apr 2023 14:19:37 -0600 Subject: [PATCH 189/594] Fix windows-msvc-2015-bazel CI job The build file is updated to use MSVC 2019 as well as bazel 5.0.0. --- kokoro/windows-msvc-2015-release-bazel/build.bat | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/kokoro/windows-msvc-2015-release-bazel/build.bat b/kokoro/windows-msvc-2015-release-bazel/build.bat index fb2009b187..7d6aed4242 100644 --- a/kokoro/windows-msvc-2015-release-bazel/build.bat +++ b/kokoro/windows-msvc-2015-release-bazel/build.bat @@ -45,13 +45,13 @@ cd %SRC% mv External third_party :: REM Install Bazel. -wget -q https://github.com/bazelbuild/bazel/releases/download/0.29.1/bazel-0.29.1-windows-x86_64.zip -unzip -q bazel-0.29.1-windows-x86_64.zip +wget -q https://github.com/bazelbuild/bazel/releases/download/5.0.0/bazel-5.0.0-windows-x86_64.zip +unzip -q bazel-5.0.0-windows-x86_64.zip :: Set up MSVC -call "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x64 -set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio 14.0 -set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC +call "C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC\vcvarsall.bat" x64 +set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio 16.0 +set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC set BAZEL_SH=c:\tools\msys64\usr\bin\bash.exe set BAZEL_PYTHON=c:\tools\python2\python.exe From 1397890e8e9c297deacc89e268b349eb0f2e0cb8 Mon Sep 17 00:00:00 2001 From: Steven Perron Date: Tue, 9 May 2023 10:57:18 -0400 Subject: [PATCH 190/594] Add windows-msvc-2019-release-bazel CI config The `windows-msvc-2015-release-bazel` build config name is misleading. It now runs VS2019. We should rename it. This is the first part: create the new config files. --- .../windows-msvc-2019-release-bazel/build.bat | 75 +++++++++++++++++++ .../continuous.cfg | 35 +++++++++ .../presubmit.cfg | 35 +++++++++ 3 files changed, 145 insertions(+) create mode 100644 kokoro/windows-msvc-2019-release-bazel/build.bat create mode 100644 kokoro/windows-msvc-2019-release-bazel/continuous.cfg create mode 100644 kokoro/windows-msvc-2019-release-bazel/presubmit.cfg diff --git a/kokoro/windows-msvc-2019-release-bazel/build.bat b/kokoro/windows-msvc-2019-release-bazel/build.bat new file mode 100644 index 0000000000..8fb0302a49 --- /dev/null +++ b/kokoro/windows-msvc-2019-release-bazel/build.bat @@ -0,0 +1,75 @@ +:: Copyright (C) 2023 Google, Inc. +:: +:: All rights reserved. +:: +:: Redistribution and use in source and binary forms, with or without +:: modification, are permitted provided that the following conditions +:: are met: +:: +:: Redistributions of source code must retain the above copyright +:: notice, this list of conditions and the following disclaimer. +:: +:: Redistributions in binary form must reproduce the above +:: copyright notice, this list of conditions and the following +:: disclaimer in the documentation and/or other materials provided +:: with the distribution. +:: +:: Neither the name of Google Inc. nor the names of its +:: contributors may be used to endorse or promote products derived +:: from this software without specific prior written permission. +:: +:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +:: "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +:: LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +:: FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +:: COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +:: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +:: BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +:: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +:: CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +:: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +:: ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +:: POSSIBILITY OF SUCH DAMAGE. +:: Copyright (c) 2023 Google LLC. +:: +:: Windows Build Script. + +@echo on + +set SRC=%cd%\github\glslang + +:: Force usage of python 3.6 +set PATH=C:\python36;%PATH% +cd %SRC% + +mv External third_party + +:: REM Install Bazel. +wget -q https://github.com/bazelbuild/bazel/releases/download/5.0.0/bazel-5.0.0-windows-x86_64.zip +unzip -q bazel-5.0.0-windows-x86_64.zip + +:: Set up MSVC +call "C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC\vcvarsall.bat" x64 +set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio 16.0 +set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC +set BAZEL_SH=c:\tools\msys64\usr\bin\bash.exe +set BAZEL_PYTHON=c:\tools\python2\python.exe + +:: ######################################### +:: Start building. +:: ######################################### +echo "Build everything... %DATE% %TIME%" +bazel.exe build :all +if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% +echo "Build Completed %DATE% %TIME%" + +:: ############## +:: Run the tests +:: ############## +echo "Running Tests... %DATE% %TIME%" +bazel.exe test :all --test_output=all +if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% +echo "Tests Completed %DATE% %TIME%" + +exit /b 0 + diff --git a/kokoro/windows-msvc-2019-release-bazel/continuous.cfg b/kokoro/windows-msvc-2019-release-bazel/continuous.cfg new file mode 100644 index 0000000000..85c7abdae6 --- /dev/null +++ b/kokoro/windows-msvc-2019-release-bazel/continuous.cfg @@ -0,0 +1,35 @@ +# Copyright (C) 2023 Google, Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Continuous build configuration. +build_file: "glslang/kokoro/windows-msvc-2019-release-bazel/build.bat" diff --git a/kokoro/windows-msvc-2019-release-bazel/presubmit.cfg b/kokoro/windows-msvc-2019-release-bazel/presubmit.cfg new file mode 100644 index 0000000000..254ed7d124 --- /dev/null +++ b/kokoro/windows-msvc-2019-release-bazel/presubmit.cfg @@ -0,0 +1,35 @@ +# Copyright (C) 2023 Google, Inc. +# +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# Redistributions in binary form must reproduce the above +# copyright notice, this list of conditions and the following +# disclaimer in the documentation and/or other materials provided +# with the distribution. +# +# Neither the name of Google Inc. nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +# POSSIBILITY OF SUCH DAMAGE. + +# Presubmit build configuration. +build_file: "glslang/kokoro/windows-msvc-2019-release-bazel/build.bat" From 84d11c472add66562c1e489be03ebe1c9bd0ad85 Mon Sep 17 00:00:00 2001 From: Alexey Ozeritskiy Date: Sun, 9 Apr 2023 15:06:18 +0200 Subject: [PATCH 191/594] Use custom callbacks if they are available in 'i->callbacks' --- glslang/CInterface/glslang_c_interface.cpp | 53 ++++++++-------------- glslang/Include/glslang_c_interface.h | 36 ++++++++------- 2 files changed, 37 insertions(+), 52 deletions(-) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 1465ce17a1..870698f2a8 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -80,25 +80,6 @@ typedef struct glslang_program_s { (CallbackIncluder::callbacks::free_include_result) */ class CallbackIncluder : public glslang::TShader::Includer { -public: - /* Wrapper of IncludeResult which stores a glsl_include_result object internally */ - class CallbackIncludeResult : public glslang::TShader::Includer::IncludeResult { - public: - CallbackIncludeResult(const std::string& headerName, const char* const headerData, const size_t headerLength, - void* userData, glsl_include_result_t* includeResult) - : glslang::TShader::Includer::IncludeResult(headerName, headerData, headerLength, userData), - includeResult(includeResult) - { - } - - virtual ~CallbackIncludeResult() {} - - protected: - friend class CallbackIncluder; - - glsl_include_result_t* includeResult; - }; - public: CallbackIncluder(glsl_include_callbacks_t _callbacks, void* _context) : callbacks(_callbacks), context(_context) {} @@ -110,9 +91,7 @@ class CallbackIncluder : public glslang::TShader::Includer { if (this->callbacks.include_system) { glsl_include_result_t* result = this->callbacks.include_system(this->context, headerName, includerName, inclusionDepth); - - return new CallbackIncludeResult(std::string(headerName), result->header_data, result->header_length, - nullptr, result); + return makeIncludeResult(result); } return glslang::TShader::Includer::includeSystem(headerName, includerName, inclusionDepth); @@ -124,9 +103,7 @@ class CallbackIncluder : public glslang::TShader::Includer { if (this->callbacks.include_local) { glsl_include_result_t* result = this->callbacks.include_local(this->context, headerName, includerName, inclusionDepth); - - return new CallbackIncludeResult(std::string(headerName), result->header_data, result->header_length, - nullptr, result); + return makeIncludeResult(result); } return glslang::TShader::Includer::includeLocal(headerName, includerName, inclusionDepth); @@ -139,22 +116,25 @@ class CallbackIncluder : public glslang::TShader::Includer { if (result == nullptr) return; - if (this->callbacks.free_include_result && (result->userData == nullptr)) { - CallbackIncludeResult* innerResult = static_cast(result); - /* use internal free() function */ - this->callbacks.free_include_result(this->context, innerResult->includeResult); - /* ignore internal fields of TShader::Includer::IncludeResult */ - delete result; - return; + if (this->callbacks.free_include_result) { + this->callbacks.free_include_result(this->context, static_cast(result->userData)); } - delete[] static_cast(result->userData); delete result; } private: CallbackIncluder() {} + IncludeResult* makeIncludeResult(glsl_include_result_t* result) { + if (!result) { + return nullptr; + } + + return new glslang::TShader::Includer::IncludeResult( + std::string(result->header_name), result->header_data, result->header_length, result); + } + /* C callback pointers */ glsl_include_callbacks_t callbacks; /* User-defined context */ @@ -394,8 +374,11 @@ GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input) { - DirStackFileIncluder Includer; - /* TODO: use custom callbacks if they are available in 'i->callbacks' */ + DirStackFileIncluder dirStackFileIncluder; + CallbackIncluder callbackIncluder(input->callbacks, input->callbacks_ctx); + glslang::TShader::Includer& Includer = (input->callbacks.include_local||input->callbacks.include_system) + ? static_cast(callbackIncluder) + : static_cast(dirStackFileIncluder); return shader->shader->preprocess( reinterpret_cast(input->resource), input->default_version, diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 28d52330ee..a519f63583 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -168,23 +168,6 @@ typedef struct glslang_resource_s { glslang_limits_t limits; } glslang_resource_t; -typedef struct glslang_input_s { - glslang_source_t language; - glslang_stage_t stage; - glslang_client_t client; - glslang_target_client_version_t client_version; - glslang_target_language_t target_language; - glslang_target_language_version_t target_language_version; - /** Shader source code */ - const char* code; - int default_version; - glslang_profile_t default_profile; - int force_default_version_and_profile; - int forward_compatible; - glslang_messages_t messages; - const glslang_resource_t* resource; -} glslang_input_t; - /* Inclusion result structure allocated by C include_local/include_system callbacks */ typedef struct glsl_include_result_s { /* Header file name or NULL if inclusion failed */ @@ -214,6 +197,25 @@ typedef struct glsl_include_callbacks_s { glsl_free_include_result_func free_include_result; } glsl_include_callbacks_t; +typedef struct glslang_input_s { + glslang_source_t language; + glslang_stage_t stage; + glslang_client_t client; + glslang_target_client_version_t client_version; + glslang_target_language_t target_language; + glslang_target_language_version_t target_language_version; + /** Shader source code */ + const char* code; + int default_version; + glslang_profile_t default_profile; + int force_default_version_and_profile; + int forward_compatible; + glslang_messages_t messages; + const glslang_resource_t* resource; + glsl_include_callbacks_t callbacks; + void* callbacks_ctx; +} glslang_input_t; + /* SpvOptions counterpart */ typedef struct glslang_spv_options_s { bool generate_debug_info; From 49aad1361e427aa1d8984429d9124fd6a325e1a1 Mon Sep 17 00:00:00 2001 From: Steven Perron Date: Tue, 9 May 2023 12:53:47 -0400 Subject: [PATCH 192/594] Remove the windows-msvc-2015-release-bazel config The VS2015 bazel test has been stopped, so we can not remove the config file. We have the windows-msvc-2019-release-bazel to replace it. It is already running, and it is passing. --- .../windows-msvc-2015-release-bazel/build.bat | 75 ------------------- .../continuous.cfg | 35 --------- .../presubmit.cfg | 35 --------- 3 files changed, 145 deletions(-) delete mode 100644 kokoro/windows-msvc-2015-release-bazel/build.bat delete mode 100644 kokoro/windows-msvc-2015-release-bazel/continuous.cfg delete mode 100644 kokoro/windows-msvc-2015-release-bazel/presubmit.cfg diff --git a/kokoro/windows-msvc-2015-release-bazel/build.bat b/kokoro/windows-msvc-2015-release-bazel/build.bat deleted file mode 100644 index 7d6aed4242..0000000000 --- a/kokoro/windows-msvc-2015-release-bazel/build.bat +++ /dev/null @@ -1,75 +0,0 @@ -:: Copyright (C) 2019 Google, Inc. -:: -:: All rights reserved. -:: -:: Redistribution and use in source and binary forms, with or without -:: modification, are permitted provided that the following conditions -:: are met: -:: -:: Redistributions of source code must retain the above copyright -:: notice, this list of conditions and the following disclaimer. -:: -:: Redistributions in binary form must reproduce the above -:: copyright notice, this list of conditions and the following -:: disclaimer in the documentation and/or other materials provided -:: with the distribution. -:: -:: Neither the name of Google Inc. nor the names of its -:: contributors may be used to endorse or promote products derived -:: from this software without specific prior written permission. -:: -:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -:: "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -:: LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -:: FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -:: COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -:: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -:: BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -:: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -:: CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -:: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -:: ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -:: POSSIBILITY OF SUCH DAMAGE. -:: Copyright (c) 2019 Google LLC. -:: -:: Windows Build Script. - -@echo on - -set SRC=%cd%\github\glslang - -:: Force usage of python 3.6 -set PATH=C:\python36;%PATH% -cd %SRC% - -mv External third_party - -:: REM Install Bazel. -wget -q https://github.com/bazelbuild/bazel/releases/download/5.0.0/bazel-5.0.0-windows-x86_64.zip -unzip -q bazel-5.0.0-windows-x86_64.zip - -:: Set up MSVC -call "C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC\vcvarsall.bat" x64 -set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio 16.0 -set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC -set BAZEL_SH=c:\tools\msys64\usr\bin\bash.exe -set BAZEL_PYTHON=c:\tools\python2\python.exe - -:: ######################################### -:: Start building. -:: ######################################### -echo "Build everything... %DATE% %TIME%" -bazel.exe build :all -if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% -echo "Build Completed %DATE% %TIME%" - -:: ############## -:: Run the tests -:: ############## -echo "Running Tests... %DATE% %TIME%" -bazel.exe test :all --test_output=all -if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% -echo "Tests Completed %DATE% %TIME%" - -exit /b 0 - diff --git a/kokoro/windows-msvc-2015-release-bazel/continuous.cfg b/kokoro/windows-msvc-2015-release-bazel/continuous.cfg deleted file mode 100644 index 554d29de57..0000000000 --- a/kokoro/windows-msvc-2015-release-bazel/continuous.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Continuous build configuration. -build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" diff --git a/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg b/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg deleted file mode 100644 index 4980bb6b58..0000000000 --- a/kokoro/windows-msvc-2015-release-bazel/presubmit.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Presubmit build configuration. -build_file: "glslang/kokoro/windows-msvc-2015-release-bazel/build.bat" From a02dde76f6dae1a45ca9f94f1224eedba735a82a Mon Sep 17 00:00:00 2001 From: Ryan Harrison Date: Tue, 9 May 2023 13:33:39 -0400 Subject: [PATCH 193/594] Correct ctor order to make '-Wreorder-ctor' pass These lines in the ctor being out of order are causing -Wreorder-ctor to fire when trying to integrate glslang ToT into Chromium/Dawn/etc, https://logs.chromium.org/logs/dawn/buildbucket/cr-buildbucket/8781562047251466593/+/u/compile_with_ninja/stdout. --- glslang/MachineIndependent/localintermediate.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 165ef103ed..2aa766a5e0 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -321,10 +321,12 @@ class TIntermediate { inputPrimitive(ElgNone), outputPrimitive(ElgNone), pixelCenterInteger(false), originUpperLeft(false),texCoordBuiltinRedeclared(false), vertexSpacing(EvsNone), vertexOrder(EvoNone), interlockOrdering(EioNone), pointMode(false), earlyFragmentTests(false), - postDepthCoverage(false), earlyAndLateFragmentTestsAMD(false), depthLayout(EldNone), stencilLayout(ElsNone), + postDepthCoverage(false), earlyAndLateFragmentTestsAMD(false), nonCoherentColorAttachmentReadEXT(false), nonCoherentDepthAttachmentReadEXT(false), nonCoherentStencilAttachmentReadEXT(false), + depthLayout(EldNone), + stencilLayout(ElsNone), hlslFunctionality1(false), blendEquations(0), xfbMode(false), multiStream(false), layoutOverrideCoverage(false), From 14e57abf2637e41a71ead7bc2f3311be466b78a0 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 9 May 2023 12:20:10 -0600 Subject: [PATCH 194/594] Enable constructor reorder warnings They no longer happen "all over" as the comment suggests, and downstream builds have them enabled already. --- CMakeLists.txt | 2 -- 1 file changed, 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0af388b1fc..d2eb3c5108 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -135,7 +135,6 @@ endif() if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions) - add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) endif() @@ -153,7 +152,6 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs -Wunused-parameter -Wunused-value -Wunused-variable) - add_compile_options(-Wno-reorder) # disable this from -Wall, since it happens all over. if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) endif() From 076c35863ebbfd0bf650cea7b367dfd36a60a729 Mon Sep 17 00:00:00 2001 From: Johannes Kauffmann <19662702+JohannesKauffmann@users.noreply.github.com> Date: Sat, 25 Feb 2023 20:56:09 +0100 Subject: [PATCH 195/594] SPIRV: hex_float: remove workaround for VS2013 --- SPIRV/hex_float.h | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/SPIRV/hex_float.h b/SPIRV/hex_float.h index 8be8e9f7e3..785e8af11f 100644 --- a/SPIRV/hex_float.h +++ b/SPIRV/hex_float.h @@ -23,19 +23,6 @@ #include #include -#if defined(_MSC_VER) && _MSC_VER < 1800 -namespace std { -bool isnan(double f) -{ - return ::_isnan(f) != 0; -} -bool isinf(double f) -{ - return ::_finite(f) == 0; -} -} -#endif - #include "bitutils.h" namespace spvutils { From e00517acfec01a7248aa5dc516c57287c3639aa8 Mon Sep 17 00:00:00 2001 From: Johannes Kauffmann <19662702+JohannesKauffmann@users.noreply.github.com> Date: Sat, 25 Feb 2023 20:57:02 +0100 Subject: [PATCH 196/594] SPIRV: remove pre-C++11 workaround --- SPIRV/SPVRemapper.cpp | 6 ------ SPIRV/SPVRemapper.h | 28 ---------------------------- StandAlone/spirv-remap.cpp | 2 -- 3 files changed, 36 deletions(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 6aca8cbcf0..4b2c4395ed 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -36,10 +36,6 @@ #include "SPVRemapper.h" #include "doc.h" -#if !defined (use_cpp11) -// ... not supported before C++11 -#else // defined (use_cpp11) - #include #include #include "../glslang/Include/Common.h" @@ -1528,5 +1524,3 @@ namespace spv { } // namespace SPV -#endif // defined (use_cpp11) - diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index d21694635a..42b01686ee 100644 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -43,12 +43,6 @@ namespace spv { -// MSVC defines __cplusplus as an older value, even when it supports almost all of 11. -// We handle that here by making our own symbol. -#if __cplusplus >= 201103L || (defined(_MSC_VER) && _MSC_VER >= 1700) -# define use_cpp11 1 -#endif - class spirvbin_base_t { public: @@ -74,27 +68,6 @@ class spirvbin_base_t } // namespace SPV -#if !defined (use_cpp11) -#include -#include - -namespace spv { -class spirvbin_t : public spirvbin_base_t -{ -public: - spirvbin_t(int /*verbose = 0*/) { } - - void remap(std::vector& /*spv*/, unsigned int /*opts = 0*/) - { - printf("Tool not compiled for C++11, which is required for SPIR-V remapping.\n"); - exit(5); - } -}; - -} // namespace SPV - -#else // defined (use_cpp11) - #include #include #include @@ -308,5 +281,4 @@ class spirvbin_t : public spirvbin_base_t } // namespace SPV -#endif // defined (use_cpp11) #endif // SPIRVREMAPPER_H diff --git a/StandAlone/spirv-remap.cpp b/StandAlone/spirv-remap.cpp index 301bb0cb56..c54cbb9d5c 100644 --- a/StandAlone/spirv-remap.cpp +++ b/StandAlone/spirv-remap.cpp @@ -352,13 +352,11 @@ int main(int argc, char** argv) int opts; int verbosity; -#ifdef use_cpp11 // handle errors by exiting spv::spirvbin_t::registerErrorHandler(errHandler); // Log messages to std::cout spv::spirvbin_t::registerLogHandler(logHandler); -#endif if (argc < 2) usage(argv[0]); From f202aa665e0e6dd0502ffaf30b9de92f0a74aecc Mon Sep 17 00:00:00 2001 From: Johannes Kauffmann <19662702+JohannesKauffmann@users.noreply.github.com> Date: Sat, 25 Feb 2023 20:57:44 +0100 Subject: [PATCH 197/594] PP: remove workaround for VS2015 --- glslang/MachineIndependent/preprocessor/PpTokens.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index ac1ea7a8ea..121bfca312 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -85,9 +85,6 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #ifndef _CRT_SECURE_NO_WARNINGS #define _CRT_SECURE_NO_WARNINGS #endif -#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) -#define snprintf sprintf_s -#endif #include #include From d9c3c7538b2449e39cfb0d793702d218ed58ff03 Mon Sep 17 00:00:00 2001 From: Johannes Kauffmann <19662702+JohannesKauffmann@users.noreply.github.com> Date: Sat, 25 Feb 2023 22:05:54 +0100 Subject: [PATCH 198/594] Common.h: don't use to_string workaround on MSVC Pre-VS2012 is no longer supported. It might still be needed on Android, I haven't tested this. --- glslang/Include/Common.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index a5b41cb397..c7f5256380 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -54,7 +54,7 @@ #include #include -#if defined(__ANDROID__) || (defined(_MSC_VER) && _MSC_VER < 1700) +#if defined(__ANDROID__) #include namespace std { template From 1e4955adbcd9b3f5eaf2129e918ca057baed6520 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 20 Feb 2023 20:02:36 -0500 Subject: [PATCH 199/594] Include header in Common.h This change also cleans up some ifdef'd code for no longer supported versions of MSVC. Fixes: #3139 --- glslang/Include/Common.h | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index c7f5256380..080b8071e4 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -44,6 +44,7 @@ #else #include #endif +#include #include #include #include @@ -66,7 +67,7 @@ std::string to_string(const T& val) { } #endif -#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) || (defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API) +#if defined(MINGW_HAS_SECURE_API) && MINGW_HAS_SECURE_API #include #ifndef snprintf #define snprintf sprintf_s @@ -82,22 +83,6 @@ std::string to_string(const T& val) { #define UINT_PTR uintptr_t #endif -#if defined(_MSC_VER) && _MSC_VER < 1800 - #include - inline long long int strtoll (const char* str, char** endptr, int base) - { - return _strtoi64(str, endptr, base); - } - inline unsigned long long int strtoull (const char* str, char** endptr, int base) - { - return _strtoui64(str, endptr, base); - } - inline long long int atoll (const char* str) - { - return strtoll(str, NULL, 10); - } -#endif - #if defined(_MSC_VER) #define strdup _strdup #endif From f697b55c92e44296cafba906934f04602acae62b Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 16 May 2023 15:58:33 -0600 Subject: [PATCH 200/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 553f4cfa53..19ce8a0940 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "baa46e103695080f56ac72847993f4ee9151cf63" + "commit" : "e7c6084fd1d6d6f5ac393e842728d8be309688ca" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "7f1d2f4158704337aff1f739c8e494afc5716e7e" + "commit" : "268a061764ee69f09a477a695bf6a11ffe311b8d" } ] } From d1517d64cfca91f573af1bf7341dc3a5113349c0 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 17 May 2023 13:21:32 -0600 Subject: [PATCH 201/594] Update CHANGES for release 12.2.0 --- CHANGES.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index c318a77c4b..098362f168 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 12.2.0 2023-05-17 + +### Other changes +* Support GLSL_EXT_shader_tile_image +* Support GL_EXT_ray_tracing_position_fetch +* Support custom include callbacks via the C API +* Add preamble-text command-line option +* Accept variables as parameters of spirv_decorate_id +* Fix generation of conditionals with a struct result +* Fix double expansion of macros +* Fix DebugCompilationUnit scope +* Improve line information + ## 12.1.0 2023-03-21 ### Other changes From 9caca7a17ba4637c77831e147cdafec6d5e7a403 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 18 May 2023 16:18:42 -0600 Subject: [PATCH 202/594] Add decorations to structs with buffer references The containsPhysicalStorageBufferOrArray function now handles struct types correctly, checking their contents recursively for buffer reference types. As a result, OpVariables containing structs that have members that are buffer references now have the appropriate AliasedPointer or RestrictPointer decoration as per the spec. Fixes #3188 --- SPIRV/SpvBuilder.cpp | 8 +- Test/baseResults/spv.bufferhandle8.frag.out | 117 ++++++++++++-------- Test/spv.bufferhandle8.frag | 2 + 3 files changed, 77 insertions(+), 50 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 9d07334258..8d0b677ba4 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1373,7 +1373,7 @@ bool Builder::containsType(Id typeId, spv::Op typeOp, unsigned int width) const } // return true if the type is a pointer to PhysicalStorageBufferEXT or an -// array of such pointers. These require restrict/aliased decorations. +// contains such a pointer. These require restrict/aliased decorations. bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const { const Instruction& instr = *module.getInstruction(typeId); @@ -1385,6 +1385,12 @@ bool Builder::containsPhysicalStorageBufferOrArray(Id typeId) const return getTypeStorageClass(typeId) == StorageClassPhysicalStorageBufferEXT; case OpTypeArray: return containsPhysicalStorageBufferOrArray(getContainedTypeId(typeId)); + case OpTypeStruct: + for (int m = 0; m < instr.getNumOperands(); ++m) { + if (containsPhysicalStorageBufferOrArray(instr.getIdOperand(m))) + return true; + } + return false; default: return false; } diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out index 4960144930..52eec11016 100644 --- a/Test/baseResults/spv.bufferhandle8.frag.out +++ b/Test/baseResults/spv.bufferhandle8.frag.out @@ -1,7 +1,7 @@ spv.bufferhandle8.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 27 +// Id's are bound by 39 Capability Shader Capability PhysicalStorageBufferAddressesEXT @@ -21,41 +21,46 @@ spv.bufferhandle8.frag MemberName 10(T1) 0 "x" Name 11 "T2" MemberName 11(T2) 0 "x" - Name 13 "T3" - MemberName 13(T3) 0 "Bindings" - Name 15 "t3" - Name 23 "t2" - MemberName 23(t2) 0 "f" - MemberName 23(t2) 1 "g" - Name 24 "blockType" - MemberName 24(blockType) 0 "a" - MemberName 24(blockType) 1 "b" - MemberName 24(blockType) 2 "c" - MemberName 24(blockType) 3 "d" - MemberName 24(blockType) 4 "e" - Name 26 "t" - MemberDecorate 8(Blah) 0 Offset 0 - MemberDecorate 8(Blah) 1 Offset 8 + Name 13 "x" + Name 14 "Blah" + MemberName 14(Blah) 0 "t1" + MemberName 14(Blah) 1 "t2" + Name 16 "T3" + MemberName 16(T3) 0 "Bindings" + Name 18 "t3" + Name 35 "t2" + MemberName 35(t2) 0 "f" + MemberName 35(t2) 1 "g" + Name 36 "blockType" + MemberName 36(blockType) 0 "a" + MemberName 36(blockType) 1 "b" + MemberName 36(blockType) 2 "c" + MemberName 36(blockType) 3 "d" + MemberName 36(blockType) 4 "e" + Name 38 "t" MemberDecorate 10(T1) 0 Offset 0 Decorate 10(T1) Block MemberDecorate 11(T2) 0 Offset 0 Decorate 11(T2) Block - Decorate 12 ArrayStride 16 - MemberDecorate 13(T3) 0 Offset 0 - Decorate 13(T3) Block - Decorate 15(t3) DescriptorSet 0 - Decorate 15(t3) Binding 0 - MemberDecorate 23(t2) 0 Offset 0 - MemberDecorate 23(t2) 1 Offset 8 - Decorate 23(t2) Block - MemberDecorate 24(blockType) 0 Offset 0 - MemberDecorate 24(blockType) 1 Offset 4 - MemberDecorate 24(blockType) 2 Offset 8 - MemberDecorate 24(blockType) 3 Offset 12 - MemberDecorate 24(blockType) 4 Offset 16 - Decorate 24(blockType) Block - Decorate 26(t) DescriptorSet 0 - Decorate 26(t) Binding 0 + MemberDecorate 14(Blah) 0 Offset 0 + MemberDecorate 14(Blah) 1 Offset 8 + Decorate 15 ArrayStride 16 + MemberDecorate 16(T3) 0 Offset 0 + Decorate 16(T3) Block + Decorate 18(t3) DescriptorSet 0 + Decorate 18(t3) Binding 0 + MemberDecorate 35(t2) 0 Offset 0 + MemberDecorate 35(t2) 1 Offset 8 + Decorate 35(t2) Block + MemberDecorate 36(blockType) 0 Offset 0 + MemberDecorate 36(blockType) 1 Offset 4 + MemberDecorate 36(blockType) 2 Offset 8 + MemberDecorate 36(blockType) 3 Offset 12 + MemberDecorate 36(blockType) 4 Offset 16 + Decorate 36(blockType) Block + Decorate 38(t) DescriptorSet 0 + Decorate 38(t) Binding 0 + Decorate 13(x) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT @@ -66,24 +71,38 @@ spv.bufferhandle8.frag 6: TypePointer PhysicalStorageBufferEXT 10(T1) 11(T2): TypeStruct 9(int) 7: TypePointer PhysicalStorageBufferEXT 11(T2) - 12: TypeRuntimeArray 8(Blah) - 13(T3): TypeStruct 12 - 14: TypePointer StorageBuffer 13(T3) - 15(t3): 14(ptr) Variable StorageBuffer - 16: 9(int) Constant 0 - 17: 9(int) Constant 1 - 18: TypePointer StorageBuffer 8(Blah) - TypeForwardPointer 22 PhysicalStorageBufferEXT - 23(t2): TypeStruct 22 22 - 24(blockType): TypeStruct 9(int) 9(int) 9(int) 9(int) 9(int) - 22: TypePointer PhysicalStorageBufferEXT 24(blockType) - 25: TypePointer StorageBuffer 23(t2) - 26(t): 25(ptr) Variable StorageBuffer + 12: TypePointer Function 8(Blah) + 14(Blah): TypeStruct 6(ptr) 7(ptr) + 15: TypeRuntimeArray 14(Blah) + 16(T3): TypeStruct 15 + 17: TypePointer StorageBuffer 16(T3) + 18(t3): 17(ptr) Variable StorageBuffer + 19: 9(int) Constant 0 + 20: 9(int) Constant 2 + 21: TypePointer StorageBuffer 14(Blah) + 25: TypePointer Function 6(ptr) + 28: 9(int) Constant 1 + 29: TypePointer Function 7(ptr) + TypeForwardPointer 34 PhysicalStorageBufferEXT + 35(t2): TypeStruct 34 34 + 36(blockType): TypeStruct 9(int) 9(int) 9(int) 9(int) 9(int) + 34: TypePointer PhysicalStorageBufferEXT 36(blockType) + 37: TypePointer StorageBuffer 35(t2) + 38(t): 37(ptr) Variable StorageBuffer 4(main): 2 Function None 3 5: Label - 19: 18(ptr) AccessChain 15(t3) 16 17 - 20: 8(Blah) Load 19 - 21: 18(ptr) AccessChain 15(t3) 16 16 - Store 21 20 + 13(x): 12(ptr) Variable Function + 22: 21(ptr) AccessChain 18(t3) 19 20 + 23: 14(Blah) Load 22 + 24: 6(ptr) CompositeExtract 23 0 + 26: 25(ptr) AccessChain 13(x) 19 + Store 26 24 + 27: 7(ptr) CompositeExtract 23 1 + 30: 29(ptr) AccessChain 13(x) 28 + Store 30 27 + 31: 21(ptr) AccessChain 18(t3) 19 28 + 32: 14(Blah) Load 31 + 33: 21(ptr) AccessChain 18(t3) 19 19 + Store 33 32 Return FunctionEnd diff --git a/Test/spv.bufferhandle8.frag b/Test/spv.bufferhandle8.frag index 1bc13c3cfa..92651355c4 100644 --- a/Test/spv.bufferhandle8.frag +++ b/Test/spv.bufferhandle8.frag @@ -27,6 +27,8 @@ layout(set=0, binding=0) buffer T3 { Blah Bindings[]; } t3; + void main() { + Blah x = t3.Bindings[2]; t3.Bindings[0] = t3.Bindings[1]; } From 4c9cc240e60993cb038d8788795030eb7479a4bc Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 19 May 2023 13:34:04 -0600 Subject: [PATCH 203/594] Switch Bazel to c++17 --- BUILD.bazel | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/BUILD.bazel b/BUILD.bazel index b6295839f6..99095c0576 100644 --- a/BUILD.bazel +++ b/BUILD.bazel @@ -82,7 +82,7 @@ COMMON_COPTS = select({ "-Wunused-value", "-Wunused-variable", "-Wno-reorder", - "-std=c++11", + "-std=c++17", "-fvisibility=hidden", "-fvisibility-inlines-hidden", "-fno-exceptions", From e06bd35feafc5d7a067f8b53ff445b097ba24a5d Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 19 May 2023 16:46:25 -0600 Subject: [PATCH 204/594] Switch Android.mk to use --std=c++17 --- Android.mk | 10 +++++----- ndk_test/Android.mk | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/Android.mk b/Android.mk index 8e2fac0a55..6787a972a7 100644 --- a/Android.mk +++ b/Android.mk @@ -57,7 +57,7 @@ GLSLANG_DEFINES:= -DENABLE_HLSL $(GLSLANG_OS_FLAGS) include $(CLEAR_VARS) LOCAL_MODULE:=OSDependent -LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) +LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) LOCAL_SRC_FILES:=glslang/OSDependent/Unix/ossource.cpp LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/ @@ -66,7 +66,7 @@ include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE:=OGLCompiler -LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) +LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) LOCAL_SRC_FILES:=OGLCompilersDLL/InitializeDll.cpp LOCAL_C_INCLUDES:=$(LOCAL_PATH)/OGLCompiler @@ -78,7 +78,7 @@ include $(BUILD_STATIC_LIBRARY) # instead. include $(CLEAR_VARS) LOCAL_MODULE:=HLSL -LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) +LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_SRC_FILES:= \ hlsl/stub.cpp LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ @@ -93,7 +93,7 @@ $(LOCAL_PATH)/glslang/MachineIndependent/ShaderLang.cpp: \ $(GLSLANG_BUILD_INFO_H) LOCAL_MODULE:=glslang -LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) +LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) LOCAL_SRC_FILES:= \ glslang/CInterface/glslang_c_interface.cpp \ @@ -148,7 +148,7 @@ $(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \ $(GLSLANG_BUILD_INFO_H) LOCAL_MODULE:=SPIRV -LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) +LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) LOCAL_SRC_FILES:= \ SPIRV/CInterface/spirv_c_interface.cpp \ SPIRV/GlslangToSpv.cpp \ diff --git a/ndk_test/Android.mk b/ndk_test/Android.mk index b1b2207c44..d2e93da52c 100644 --- a/ndk_test/Android.mk +++ b/ndk_test/Android.mk @@ -38,7 +38,7 @@ LOCAL_CPP_EXTENSION := .cc .cpp .cxx LOCAL_SRC_FILES:=test.cpp LOCAL_MODULE:=glslang_ndk_test LOCAL_LDLIBS:=-landroid -LOCAL_CXXFLAGS:=-std=c++11 -fno-exceptions -fno-rtti -Werror +LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror LOCAL_STATIC_LIBRARIES:=glslang SPIRV HLSL include $(BUILD_SHARED_LIBRARY) From a5bf69936ddebd45370c2e2c392b4b6f26296bad Mon Sep 17 00:00:00 2001 From: Allan MacKinnon Date: Mon, 22 May 2023 11:44:18 -0400 Subject: [PATCH 205/594] [glslang] Strip trailing whitespace There are many other files in the repo that have trailing whitespace but this PR only cleans `glslang/SPIRV` and `glslang/Standalone`. --- SPIRV/GLSL.std.450.h | 2 +- SPIRV/GlslangToSpv.cpp | 14 +++++++------- SPIRV/NonSemanticDebugPrintf.h | 10 +++++----- SPIRV/NonSemanticShaderDebugInfo100.h | 10 +++++----- SPIRV/SpvBuilder.h | 2 +- SPIRV/disassemble.cpp | 2 +- SPIRV/doc.cpp | 20 ++++++++++---------- SPIRV/doc.h | 2 +- SPIRV/spirv.hpp | 14 +++++++------- SPIRV/spvIR.h | 2 +- StandAlone/StandAlone.cpp | 4 ++-- 11 files changed, 41 insertions(+), 41 deletions(-) diff --git a/SPIRV/GLSL.std.450.h b/SPIRV/GLSL.std.450.h index df31092bec..86d3da8065 100644 --- a/SPIRV/GLSL.std.450.h +++ b/SPIRV/GLSL.std.450.h @@ -13,7 +13,7 @@ ** ** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS ** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ ** ** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 5926582fa6..5055a8d2aa 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3393,7 +3393,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; - + case glslang::EOpHitObjectRecordHitNV: case glslang::EOpHitObjectRecordHitMotionNV: case glslang::EOpHitObjectRecordHitWithIndexNV: @@ -3573,7 +3573,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } else if (arg == 2) { continue; } - } + } #endif // for l-values, pass the address, for r-values, pass the value @@ -3617,8 +3617,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } else if ((arg == 10 && glslangOp == glslang::EOpTraceKHR) || (arg == 11 && glslangOp == glslang::EOpTraceRayMotionNV) || (arg == 1 && glslangOp == glslang::EOpExecuteCallableKHR) || - (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) || - (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) || + (arg == 1 && glslangOp == glslang::EOpHitObjectExecuteShaderNV) || + (arg == 11 && glslangOp == glslang::EOpHitObjectTraceRayNV) || (arg == 12 && glslangOp == glslang::EOpHitObjectTraceRayMotionNV)) { const int set = glslangOp == glslang::EOpExecuteCallableKHR ? 1 : 0; const int location = glslangOperands[arg]->getAsConstantUnion()->getConstArray()[0].getUConst(); @@ -4501,7 +4501,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addCapability(spv::CapabilityShaderInvocationReorderNV); spvType = builder.makeHitObjectNVType(); } - break; + break; #ifndef GLSLANG_WEB case glslang::EbtSpirvType: { // GL_EXT_spirv_intrinsics @@ -7200,7 +7200,7 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpHitObjectGetShaderRecordBufferHandleNV: unaryOp = spv::OpHitObjectGetShaderRecordBufferHandleNV; break; - + #endif case glslang::EOpCopyObject: @@ -9068,7 +9068,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: builder.createNoResultOp(spv::OpReorderThreadWithHitObjectNV, operands); } return 0; - + } break; #endif // GLSLANG_WEB diff --git a/SPIRV/NonSemanticDebugPrintf.h b/SPIRV/NonSemanticDebugPrintf.h index 83796d75e5..3ca7247f2b 100644 --- a/SPIRV/NonSemanticDebugPrintf.h +++ b/SPIRV/NonSemanticDebugPrintf.h @@ -1,5 +1,5 @@ // Copyright (c) 2020 The Khronos Group Inc. -// +// // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and/or associated documentation files (the // "Materials"), to deal in the Materials without restriction, including @@ -7,15 +7,15 @@ // distribute, sublicense, and/or sell copies of the Materials, and to // permit persons to whom the Materials are furnished to do so, subject to // the following conditions: -// +// // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Materials. -// +// // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS // KHRONOS STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS // SPECIFICATIONS AND HEADER INFORMATION ARE LOCATED AT // https://www.khronos.org/registry/ -// +// // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. @@ -23,7 +23,7 @@ // CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, // TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE // MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS. -// +// #ifndef SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ #define SPIRV_UNIFIED1_NonSemanticDebugPrintf_H_ diff --git a/SPIRV/NonSemanticShaderDebugInfo100.h b/SPIRV/NonSemanticShaderDebugInfo100.h index c52f32f809..f74abcb646 100644 --- a/SPIRV/NonSemanticShaderDebugInfo100.h +++ b/SPIRV/NonSemanticShaderDebugInfo100.h @@ -1,19 +1,19 @@ // Copyright (c) 2018 The Khronos Group Inc. -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and/or associated documentation files (the "Materials"), // to deal in the Materials without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Materials, and to permit persons to whom the // Materials are furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Materials. -// +// // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 02e9cf4005..70edf250da 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -103,7 +103,7 @@ class Builder { stringIds[file_c_str] = strId; return strId; } - spv::Id getSourceFile() const + spv::Id getSourceFile() const { return sourceFileStringId; } diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index f943fd5645..479f4a64eb 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -515,7 +515,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, } else if (strcmp(spv::E_SPV_NV_sample_mask_override_coverage, name) == 0 || strcmp(spv::E_SPV_NV_geometry_shader_passthrough, name) == 0 || strcmp(spv::E_SPV_NV_viewport_array2, name) == 0 || - strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 || + strcmp(spv::E_SPV_NVX_multiview_per_view_attributes, name) == 0 || strcmp(spv::E_SPV_NV_fragment_shader_barycentric, name) == 0 || strcmp(spv::E_SPV_NV_mesh_shader, name) == 0) { extInstSet = GLSLextNVInst; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 571ef78802..3d78d3de12 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -318,7 +318,7 @@ const char* DecorationString(int decoration) case DecorationPerPrimitiveNV: return "PerPrimitiveNV"; case DecorationPerViewNV: return "PerViewNV"; case DecorationPerTaskNV: return "PerTaskNV"; - + case DecorationPerVertexKHR: return "PerVertexKHR"; case DecorationNonUniformEXT: return "DecorationNonUniformEXT"; @@ -584,7 +584,7 @@ const char* ImageChannelOrderString(int format) case 17: return "sRGBA"; case 18: return "sBGRA"; - default: + default: return "Bad"; } } @@ -870,7 +870,7 @@ const char* CapabilityString(int info) case 22: return "Int16"; case 23: return "TessellationPointSize"; case 24: return "GeometryPointSize"; - case 25: return "ImageGatherExtended"; + case 25: return "ImageGatherExtended"; case 26: return "Bad"; case 27: return "StorageImageMultisample"; case 28: return "UniformBufferArrayDynamicIndexing"; @@ -2253,11 +2253,11 @@ void Parameterize() InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'"); InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'"); InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'"); - + InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'"); InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'"); InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'"); - + InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'"); InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'"); @@ -2937,7 +2937,7 @@ void Parameterize() InstructionDesc[OpTerminateRayNV].setResultAndType(false, false); InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); - + InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index"); InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID"); InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false); @@ -3053,7 +3053,7 @@ void Parameterize() InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coarse'"); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandImageOperands, "", true); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandVariableIds, "", true); - + InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); @@ -3099,7 +3099,7 @@ void Parameterize() InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpTypeHitObjectNV].setResultAndType(true, false); - + InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].operands.push(OperandId, "'HitObject'"); InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].setResultAndType(true, true); @@ -3117,7 +3117,7 @@ void Parameterize() InstructionDesc[OpHitObjectGetHitKindNV].operands.push(OperandId, "'HitObject'"); InstructionDesc[OpHitObjectGetHitKindNV].setResultAndType(true, true); - + InstructionDesc[OpHitObjectGetPrimitiveIndexNV].operands.push(OperandId, "'HitObject'"); InstructionDesc[OpHitObjectGetPrimitiveIndexNV].setResultAndType(true, true); @@ -3173,7 +3173,7 @@ void Parameterize() InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'HitObject'"); InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'Payload'"); InstructionDesc[OpHitObjectExecuteShaderNV].setResultAndType(false, false); - + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject'"); InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Acceleration Structure'"); InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'InstanceId'"); diff --git a/SPIRV/doc.h b/SPIRV/doc.h index 7e1559950e..95aa5ce8ca 100644 --- a/SPIRV/doc.h +++ b/SPIRV/doc.h @@ -197,7 +197,7 @@ class EnumParameters { // Parameterize a set of enumerants that form an enum class EnumDefinition : public EnumParameters { public: - EnumDefinition() : + EnumDefinition() : ceiling(0), bitmask(false), getName(nullptr), enumParams(nullptr), operandParams(nullptr) { } void set(int ceil, const char* (*name)(int), EnumParameters* ep, bool mask = false) { diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 111285326d..f3fb899f6e 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,19 +1,19 @@ // Copyright (c) 2014-2020 The Khronos Group Inc. -// +// // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and/or associated documentation files (the "Materials"), // to deal in the Materials without restriction, including without limitation // the rights to use, copy, modify, merge, publish, distribute, sublicense, // and/or sell copies of the Materials, and to permit persons to whom the // Materials are furnished to do so, subject to the following conditions: -// +// // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Materials. -// +// // MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS // STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND -// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ -// +// HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +// // THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL @@ -27,7 +27,7 @@ // Enumeration tokens for SPIR-V, in various styles: // C, C++, C++11, JSON, Lua, Python, C#, D, Beef -// +// // - C will have tokens with a "Spv" prefix, e.g.: SpvSourceLanguageGLSL // - C++ will have tokens in the "spv" name space, e.g.: spv::SourceLanguageGLSL // - C++11 will use enum classes in the spv namespace, e.g.: spv::SourceLanguage::GLSL @@ -38,7 +38,7 @@ // - D will have tokens under the "spv" module, e.g: spv.SourceLanguage.GLSL // - Beef will use enum classes in the Specification class located in the "Spv" namespace, // e.g.: Spv.Specification.SourceLanguage.GLSL -// +// // Some tokens act like mask values, which can be OR'd together, // while others are mutually exclusive. The mask-like ones have // "Mask" in their name, and a parallel enum that has the shift diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 09691273ab..660742a755 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -386,7 +386,7 @@ class Function { if (lineInstruction != nullptr) { lineInstruction->dump(out); } - + // OpFunction functionInstruction.dump(out); diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index e038ed167d..064b208205 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -725,7 +725,7 @@ void ProcessArguments(std::vector>& workItem HlslDxPositionW = true; } else if (lowerword == "enhanced-msgs") { EnhancedMsgs = true; - } else if (lowerword == "auto-sampled-textures") { + } else if (lowerword == "auto-sampled-textures") { autoSampledTextures = true; } else if (lowerword == "invert-y" || // synonyms lowerword == "iy") { @@ -1973,7 +1973,7 @@ void usage() " without explicit bindings\n" " --auto-map-locations | --aml automatically locate input/output lacking\n" " 'location' (fragile, not cross stage)\n" - " --auto-sampled-textures Removes sampler variables and converts\n" + " --auto-sampled-textures Removes sampler variables and converts\n" " existing textures to sampled textures\n" " --client {vulkan|opengl} see -V and -G\n" " --depfile writes depfile for build systems\n" From 9fbc561947f6b5275289a1985676fb7267273e09 Mon Sep 17 00:00:00 2001 From: Allan MacKinnon Date: Tue, 23 May 2023 16:07:48 -0400 Subject: [PATCH 206/594] glslangValidator: Exit with an error if output file cannot be written Propagate the error from glslang::OutputSpv[Hex|Bin] and exit with an error code if there is an error. --- SPIRV/GlslangToSpv.cpp | 14 ++++++++++---- SPIRV/GlslangToSpv.h | 4 ++-- StandAlone/StandAlone.cpp | 6 ++++-- 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 5055a8d2aa..2b5333abc3 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -10036,27 +10036,32 @@ int GetSpirvGeneratorVersion() } // Write SPIR-V out to a binary file -void OutputSpvBin(const std::vector& spirv, const char* baseName) +bool OutputSpvBin(const std::vector& spirv, const char* baseName) { std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); - if (out.fail()) + if (out.fail()) { printf("ERROR: Failed to open file: %s\n", baseName); + return false; + } for (int i = 0; i < (int)spirv.size(); ++i) { unsigned int word = spirv[i]; out.write((const char*)&word, 4); } out.close(); + return true; } // Write SPIR-V out to a text file with 32-bit hexadecimal words -void OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName) +bool OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName) { #if !defined(GLSLANG_WEB) std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); - if (out.fail()) + if (out.fail()) { printf("ERROR: Failed to open file: %s\n", baseName); + return false; + } out << "\t// " << GetSpirvGeneratorVersion() << GLSLANG_VERSION_MAJOR << "." << GLSLANG_VERSION_MINOR << "." << GLSLANG_VERSION_PATCH << @@ -10083,6 +10088,7 @@ void OutputSpvHex(const std::vector& spirv, const char* baseName, } out.close(); #endif + return true; } // diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h index 3907be43b7..b9736d7c98 100644 --- a/SPIRV/GlslangToSpv.h +++ b/SPIRV/GlslangToSpv.h @@ -55,7 +55,7 @@ void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, spv::SpvBuildLogger* logger, SpvOptions* options = nullptr); -void OutputSpvBin(const std::vector& spirv, const char* baseName); -void OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName); +bool OutputSpvBin(const std::vector& spirv, const char* baseName); +bool OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName); } diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 064b208205..a4c9fec12f 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1526,9 +1526,11 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (! (Options & EOptionMemoryLeakMode)) { printf("%s", logger.getAllMessages().c_str()); if (Options & EOptionOutputHexadecimal) { - glslang::OutputSpvHex(spirv, GetBinaryName((EShLanguage)stage), variableName); + if (!glslang::OutputSpvHex(spirv, GetBinaryName((EShLanguage)stage), variableName)) + exit(EFailUsage); } else { - glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage)); + if (!glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage))) + exit(EFailUsage); } outputFiles.push_back(GetBinaryName((EShLanguage)stage)); From 6f22e41e0de13aff75807cca9662730d8b3e54b6 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 23 May 2023 16:31:23 -0600 Subject: [PATCH 207/594] CMake: Make glslang-default-resource-limits STATIC --- glslang/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 89f8f99ef2..317eee77ae 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -196,7 +196,7 @@ set(RESOURCELIMITS_HEADERS Public/resource_limits_c.h ) -add_library(glslang-default-resource-limits ${RESOURCELIMITS_SOURCES} ${RESOURCELIMITS_HEADERS}) +add_library(glslang-default-resource-limits STATIC ${RESOURCELIMITS_SOURCES} ${RESOURCELIMITS_HEADERS}) set_target_properties(glslang-default-resource-limits PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}" From 48a467b4136d24c29c79b661324e5fb5134a7709 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20Verschelde?= Date: Mon, 12 Oct 2020 11:21:05 +0200 Subject: [PATCH 208/594] CMake: Use set_target_properties instead of set_property This makes the cmake code a bit cleaner and more consistent. --- SPIRV/CMakeLists.txt | 16 ++++++++++------ hlsl/CMakeLists.txt | 8 +++++--- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index b31bdd6320..a80e74ed03 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -71,9 +71,11 @@ set(SPVREMAP_HEADERS doc.h) add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) -set_target_properties(SPIRV PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") -set_property(TARGET SPIRV PROPERTY FOLDER glslang) -set_property(TARGET SPIRV PROPERTY POSITION_INDEPENDENT_CODE ON) +set_target_properties(SPIRV PROPERTIES + FOLDER glslang + POSITION_INDEPENDENT_CODE ON + VERSION "${GLSLANG_VERSION}" + SOVERSION "${GLSLANG_VERSION_MAJOR}") target_include_directories(SPIRV PUBLIC $ $) @@ -82,9 +84,11 @@ glslang_add_build_info_dependency(SPIRV) if (ENABLE_SPVREMAPPER) add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) - set_target_properties(SPVRemapper PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") - set_property(TARGET SPVRemapper PROPERTY FOLDER glslang) - set_property(TARGET SPVRemapper PROPERTY POSITION_INDEPENDENT_CODE ON) + set_target_properties(SPVRemapper PROPERTIES + FOLDER glslang + POSITION_INDEPENDENT_CODE ON + VERSION "${GLSLANG_VERSION}" + SOVERSION "${GLSLANG_VERSION_MAJOR}") endif() if(WIN32 AND BUILD_SHARED_LIBS) diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt index 16c82a67a8..058a67b086 100644 --- a/hlsl/CMakeLists.txt +++ b/hlsl/CMakeLists.txt @@ -38,9 +38,11 @@ # projects that referenced this target. add_library(HLSL ${LIB_TYPE} "stub.cpp") -set_property(TARGET HLSL PROPERTY FOLDER hlsl) -set_property(TARGET HLSL PROPERTY POSITION_INDEPENDENT_CODE ON) -set_target_properties(HLSL PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") +set_target_properties(HLSL PROPERTIES + FOLDER hlsl + POSITION_INDEPENDENT_CODE ON + VERSION "${GLSLANG_VERSION}" + SOVERSION "${GLSLANG_VERSION_MAJOR}") if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(HLSL PROPERTIES PREFIX "") From b587425025dc6547a2cdbc27220c845fa21ff861 Mon Sep 17 00:00:00 2001 From: rcombs Date: Sat, 27 May 2023 17:47:59 -0500 Subject: [PATCH 209/594] glslang_c_interface: use valid C function prototypes Prototypes are required in C. --- glslang/Include/glslang_c_interface.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index a519f63583..fd636cf5fd 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -248,8 +248,8 @@ extern "C" { #define GLSLANG_EXPORT #endif -GLSLANG_EXPORT int glslang_initialize_process(); -GLSLANG_EXPORT void glslang_finalize_process(); +GLSLANG_EXPORT int glslang_initialize_process(void); +GLSLANG_EXPORT void glslang_finalize_process(void); GLSLANG_EXPORT glslang_shader_t* glslang_shader_create(const glslang_input_t* input); GLSLANG_EXPORT void glslang_shader_delete(glslang_shader_t* shader); @@ -264,7 +264,7 @@ GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader); GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader); -GLSLANG_EXPORT glslang_program_t* glslang_program_create(); +GLSLANG_EXPORT glslang_program_t* glslang_program_create(void); GLSLANG_EXPORT void glslang_program_delete(glslang_program_t* program); GLSLANG_EXPORT void glslang_program_add_shader(glslang_program_t* program, glslang_shader_t* shader); GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages); // glslang_messages_t From a6662c53ced629a9d94611276743cbcde896b6af Mon Sep 17 00:00:00 2001 From: David Neto Date: Wed, 31 May 2023 12:50:48 -0400 Subject: [PATCH 210/594] ndk-build: test Android API 24 Vulkan was introduced in Android API 24. Test against that API level. NDKs drop support for older APIs Google-internal BUG=285134453 --- kokoro/android-ndk-build/build-docker.sh | 1 + ndk_test/jni/Application.mk | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/kokoro/android-ndk-build/build-docker.sh b/kokoro/android-ndk-build/build-docker.sh index 2b23b27a75..94edcd3fc4 100755 --- a/kokoro/android-ndk-build/build-docker.sh +++ b/kokoro/android-ndk-build/build-docker.sh @@ -43,6 +43,7 @@ using ndk-r21d export NDK_PROJECT_PATH="${ROOT_DIR}/ndk_test" export APP_BUILD_SCRIPT="${ROOT_DIR}/ndk_test/Android.mk" +export APP_PLATFORM=android-24 # Vulkan introduced in API 24 echo "Building..." ndk-build -j diff --git a/ndk_test/jni/Application.mk b/ndk_test/jni/Application.mk index 07b7615733..0eb8ffdf66 100644 --- a/ndk_test/jni/Application.mk +++ b/ndk_test/jni/Application.mk @@ -34,5 +34,5 @@ APP_ABI := all APP_BUILD_SCRIPT := Android.mk APP_STL := c++_static -APP_PLATFORM := android-9 +APP_PLATFORM := android-24 NDK_TOOLCHAIN_VERSION := 4.9 From 4d95e2282629d25f66bbd779ba708c4f25d33cef Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Tue, 6 Jun 2023 15:07:43 +0100 Subject: [PATCH 211/594] Fix -Wmaybe-uninitialized warnings Fix some potentially uninitialized uses that are reported by GCC 13 with `-O3`. --- glslang/Include/Types.h | 5 +++-- glslang/MachineIndependent/SymbolTable.cpp | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index c3d0bff44b..6e3ad6210b 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1788,14 +1788,15 @@ class TType { } // for block reference (first parameter must be EbtReference) explicit TType(TBasicType t, const TType &p, const TString& n) : - basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), - arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr) + basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), + arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) #ifndef GLSLANG_WEB , spirvType(nullptr) #endif { assert(t == EbtReference); typeName = NewPoolTString(n.c_str()); + sampler.clear(); qualifier.clear(); qualifier.storage = p.qualifier.storage; referentType = p.clone(); diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index f5f98a0b02..43f8dbe3ef 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -382,7 +382,7 @@ TVariable* TVariable::clone() const TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf) { for (unsigned int i = 0; i < copyOf.parameters.size(); ++i) { - TParameter param; + TParameter param{}; parameters.push_back(param); (void)parameters.back().copyParam(copyOf.parameters[i]); } From 72713baf74125413fbe20ffb06a27cff5913c1d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pablo=20Delgado=20Kr=C3=A4mer?= Date: Thu, 8 Jun 2023 23:30:06 +0200 Subject: [PATCH 212/594] Fix GL_NV_shader_invocation_reorder #define typo --- glslang/MachineIndependent/Versions.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 71032c8d10..eae0a59f3d 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -556,7 +556,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_NV_mesh_shader 1\n" "#define GL_NV_cooperative_matrix 1\n" "#define GL_NV_integer_cooperative_matrix 1\n" - "#define GL_NV_shader_execution_reorder 1\n" + "#define GL_NV_shader_invocation_reorder 1\n" "#define GL_EXT_shader_explicit_arithmetic_types 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n" From 5793fbd6248921296c0b3166e0a427abf9e37211 Mon Sep 17 00:00:00 2001 From: juan-lunarg Date: Fri, 16 Jun 2023 12:31:04 -0600 Subject: [PATCH 213/594] cmake: Fix CMake 3.27 warnings The FindPythonInterp and FindPythonLibs modules, which have been deprecated since CMake 3.12, have been removed by policy CMP0148. Port projects to FindPython3, FindPython2, or FindPython. --- CMakeLists.txt | 2 +- StandAlone/CMakeLists.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d2eb3c5108..6e86815033 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -276,7 +276,7 @@ else() endif() if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) - find_host_package(PythonInterp 3 REQUIRED) + find_host_package(Python3 REQUIRED) # We depend on these for later projects, so they should come first. add_subdirectory(External) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index ad831f7bb9..ee9004a70c 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -31,7 +31,7 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -find_host_package(PythonInterp 3 REQUIRED) +find_host_package(Python3 REQUIRED) set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h") set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py") @@ -39,7 +39,7 @@ set(GLSLANG_INTRINSIC_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../glslang/Extensi add_custom_command( OUTPUT ${GLSLANG_INTRINSIC_H} - COMMAND ${PYTHON_EXECUTABLE} "${GLSLANG_INTRINSIC_PY}" + COMMAND Python3::Interpreter "${GLSLANG_INTRINSIC_PY}" "-i" ${GLSLANG_INTRINSIC_HEADER_DIR} "-o" ${GLSLANG_INTRINSIC_H} DEPENDS ${GLSLANG_INTRINSIC_PY} From 6a7ec4be7b8a22ab16cea0f294b5973dbcdd637a Mon Sep 17 00:00:00 2001 From: Jason Liu Date: Sat, 17 Jun 2023 22:14:08 -0400 Subject: [PATCH 214/594] Fix linking error "ld: unknown option: --no-undefined" on macOS --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6e86815033..89ecf64cb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -163,7 +163,7 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) # Error if there's symbols that are not found at link time. if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") add_link_options("-Wl,-undefined,error") - else() + elseif(NOT APPLE) add_link_options("-Wl,--no-undefined") endif() endif() From 9575e33186c74a68831c469f7271edf386ea43a5 Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Wed, 21 Jun 2023 15:15:23 +0100 Subject: [PATCH 215/594] Fix unused parameter warning in Release builds The `function` parameter is only used by an assert currently, so mark it as "maybe unused". Alternatively the parameter could be removed, but avoid such API churn for now. --- SPIRV/SpvBuilder.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 8d0b677ba4..df5f234b3d 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2109,7 +2109,8 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const return function; } -Id Builder::makeDebugFunction(Function* function, Id nameId, Id funcTypeId) { +Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id funcTypeId) +{ assert(function != nullptr); assert(nameId != 0); assert(funcTypeId != 0); From d89c0b1d13d92d7389273f61bbe6249c873fd5b7 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 22 Jun 2023 16:06:41 -0400 Subject: [PATCH 216/594] Force generateDebugInfo when non-semantic debug info is enabled From the command line, the debug options "stack", with -gVS enabling all of generateDebugInfo, emitNonSemanticShaderDebugInfo and emitNonSemanticShaderDebugSource, however the programmatic interface allows setting the latter options without the former. In this case, the string corresponding to the source filename never gets emitted and some debuginfo instructions end up with zero ID operands, resulting in invalid SPIR-V. Fixes #3240 --- SPIRV/GlslangToSpv.cpp | 11 +- .../spv.debuginfo.const_params.glsl.comp.out | 158 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 2262 ++++++++-------- Test/baseResults/spv.debuginfo.glsl.frag.out | 2020 ++++++++------- Test/baseResults/spv.debuginfo.glsl.geom.out | 668 ++--- Test/baseResults/spv.debuginfo.glsl.tesc.out | 1310 +++++----- Test/baseResults/spv.debuginfo.glsl.tese.out | 848 +++--- Test/baseResults/spv.debuginfo.glsl.vert.out | 1007 ++++---- Test/baseResults/spv.debuginfo.hlsl.comp.out | 2282 +++++++++-------- Test/baseResults/spv.debuginfo.hlsl.frag.out | 2102 ++++++++------- Test/baseResults/spv.debuginfo.hlsl.geom.out | 927 +++---- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 1696 ++++++------ Test/baseResults/spv.debuginfo.hlsl.tese.out | 1189 ++++----- Test/baseResults/spv.debuginfo.hlsl.vert.out | 1196 +++++---- 14 files changed, 9392 insertions(+), 8284 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 2b5333abc3..fc80d45399 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1580,7 +1580,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.setSource(TranslateSourceLanguage(glslangIntermediate->getSource(), glslangIntermediate->getProfile()), glslangIntermediate->getVersion()); - if (options.generateDebugInfo) { + if (options.emitNonSemanticShaderDebugSource) + this->options.emitNonSemanticShaderDebugInfo = true; + if (options.emitNonSemanticShaderDebugInfo) + this->options.generateDebugInfo = true; + + if (this->options.generateDebugInfo) { builder.setEmitOpLines(); builder.setSourceFile(glslangIntermediate->getSourceFile()); @@ -1607,8 +1612,8 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addInclude(iItr->first, iItr->second); } - builder.setEmitNonSemanticShaderDebugInfo(options.emitNonSemanticShaderDebugInfo); - builder.setEmitNonSemanticShaderDebugSource(options.emitNonSemanticShaderDebugSource); + builder.setEmitNonSemanticShaderDebugInfo(this->options.emitNonSemanticShaderDebugInfo); + builder.setEmitNonSemanticShaderDebugSource(this->options.emitNonSemanticShaderDebugSource); stdBuiltins = builder.import("GLSL.std.450"); diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index a315f6de5b..ad431a4779 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -1,84 +1,96 @@ spv.debuginfo.const_params.glsl.comp -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 64 +// Id's are bound by 68 Capability Shader Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 13 "main" - ExecutionMode 13 LocalSize 1 1 1 - 8: String "uint" - 14: String "main" - 17: String "" - 24: String "float" - 39: String "function" - 45: String "f" - 49: String "f2" - 52: String "f3" - 55: String "f4" - Name 13 "main" - Name 38 "function(f1;vf2;vf3;vf4;" - Name 34 "f" - Name 35 "f2" - Name 36 "f3" - Name 37 "f4" - 3: TypeVoid - 4: TypeFunction 3 - 6: TypeInt 32 0 - 9: 6(int) Constant 32 - 10: 6(int) Constant 6 - 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 - 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 - 19: 6(int) Constant 1 - 20: 6(int) Constant 4 - 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 - 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 - 26: TypeVector 23(float) 2 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 21 - 28: TypeVector 23(float) 3 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 - 30: TypeVector 23(float) 4 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 - 32: TypeFunction 3 23(float) 26(fvec2) 28(fvec3) 30(fvec4) - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 25 27 29 31 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 33 16 11 11 18 39 12 11 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 25 16 11 11 40 20 19 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 27 16 11 11 40 20 21 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 29 16 11 11 40 20 12 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 31 16 11 11 40 20 20 - 59: 23(float) Constant 0 - 60: 26(fvec2) ConstantComposite 59 59 - 61: 28(fvec3) ConstantComposite 59 59 59 - 62: 30(fvec4) ConstantComposite 59 59 59 59 - 13(main): 3 Function None 4 - 22: Label - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 63: 3 FunctionCall 38(function(f1;vf2;vf3;vf4;) 59 60 61 62 + EntryPoint GLCompute 14 "main" + ExecutionMode 14 LocalSize 1 1 1 + 1: String "" + 9: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 25: String "float" + 40: String "function" + 46: String "f" + 50: String "f2" + 53: String "f3" + 56: String "f4" + Name 14 "main" + Name 39 "function(f1;vf2;vf3;vf4;" + Name 35 "f" + Name 36 "f2" + Name 37 "f3" + Name 38 "f4" + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 24: TypeFloat 32 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 + 27: TypeVector 24(float) 2 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 22 + 29: TypeVector 24(float) 3 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 + 31: TypeVector 24(float) 4 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 + 33: TypeFunction 4 24(float) 27(fvec2) 29(fvec3) 31(fvec4) + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 26 28 30 32 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 40 34 17 12 12 19 40 13 12 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 26 17 12 12 41 21 20 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 28 17 12 12 41 21 22 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 30 17 12 12 41 21 13 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 32 17 12 12 41 21 21 + 62: 7(int) Constant 13 + 63: 24(float) Constant 0 + 64: 27(fvec2) ConstantComposite 63 63 + 65: 29(fvec3) ConstantComposite 63 63 63 + 66: 31(fvec4) ConstantComposite 63 63 63 63 + Line 1 11 11 + 14(main): 4 Function None 5 + 23: Label + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 62 62 12 12 + 67: 4 FunctionCall 39(function(f1;vf2;vf3;vf4;) 63 64 65 66 Return FunctionEnd -38(function(f1;vf2;vf3;vf4;): 3 Function None 32 - 34(f): 23(float) FunctionParameter - 35(f2): 26(fvec2) FunctionParameter - 36(f3): 28(fvec3) FunctionParameter - 37(f4): 30(fvec4) FunctionParameter - 41: Label - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 34(f) 47 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 35(f2) 47 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 36(f3) 47 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 54 37(f4) 47 - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 38(function(f1;vf2;vf3;vf4;) + Line 1 7 18 +39(function(f1;vf2;vf3;vf4;): 4 Function None 33 + 35(f): 24(float) FunctionParameter + 36(f2): 27(fvec2) FunctionParameter + 37(f3): 29(fvec3) FunctionParameter + 38(f4): 31(fvec4) FunctionParameter + 42: Label + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 35(f) 48 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 36(f2) 48 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 37(f3) 48 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 38(f4) 48 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 41 39(function(f1;vf2;vf3;vf4;) Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 820d12b8e9..234878f541 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,1063 +1,1223 @@ spv.debuginfo.glsl.comp -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 817 +// Id's are bound by 969 Capability Shader Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 13 "main" 118 - ExecutionMode 13 LocalSize 10 10 1 - 8: String "uint" - 14: String "main" - 17: String "" - 24: String "float" - 36: String "springForce" - 42: String "p0" - 46: String "p1" - 49: String "restDist" - 54: String "dist" - 65: String "int" - 71: String "sphereRadius" - 82: String "gravity" - 87: String "particleCount" - 90: String "UBO" - 95: String "params" - 114: String "id" - 120: String "gl_GlobalInvocationID" - 125: String "index" - 147: String "bool" - 155: String "normal" - 161: String "pinned" - 163: String "Particle" - 169: String "particleIn" - 173: String "ParticleIn" - 191: String "particleOut" - 194: String "ParticleOut" - 213: String "force" - 225: String "pos" - 234: String "vel" - 487: String "f" - 531: String "sphereDist" - 575: String "calculateNormals" - 578: String "PushConsts" - 583: String "pushConsts" - 610: String "a" - 622: String "b" - 638: String "c" - Name 13 "main" - Name 35 "springForce(vf3;vf3;f1;" - Name 32 "p0" - Name 33 "p1" - Name 34 "restDist" - Name 52 "dist" - Name 69 "UBO" - MemberName 69(UBO) 0 "deltaT" - MemberName 69(UBO) 1 "particleMass" - MemberName 69(UBO) 2 "springStiffness" - MemberName 69(UBO) 3 "damping" - MemberName 69(UBO) 4 "restDistH" - MemberName 69(UBO) 5 "restDistV" - MemberName 69(UBO) 6 "restDistD" - MemberName 69(UBO) 7 "sphereRadius" - MemberName 69(UBO) 8 "spherePos" - MemberName 69(UBO) 9 "gravity" - MemberName 69(UBO) 10 "particleCount" - Name 93 "params" - Name 112 "id" - Name 118 "gl_GlobalInvocationID" - Name 123 "index" - Name 153 "Particle" - MemberName 153(Particle) 0 "pos" - MemberName 153(Particle) 1 "vel" - MemberName 153(Particle) 2 "uv" - MemberName 153(Particle) 3 "normal" - MemberName 153(Particle) 4 "pinned" - Name 167 "ParticleIn" - MemberName 167(ParticleIn) 0 "particleIn" - Name 175 "" - Name 189 "ParticleOut" - MemberName 189(ParticleOut) 0 "particleOut" - Name 197 "" - Name 211 "force" - Name 223 "pos" - Name 232 "vel" - Name 249 "param" - Name 253 "param" - Name 255 "param" - Name 273 "param" - Name 277 "param" - Name 279 "param" - Name 301 "param" - Name 305 "param" - Name 307 "param" - Name 324 "param" - Name 328 "param" - Name 330 "param" - Name 360 "param" - Name 364 "param" - Name 366 "param" - Name 391 "param" - Name 395 "param" - Name 397 "param" - Name 430 "param" - Name 434 "param" - Name 436 "param" - Name 465 "param" - Name 469 "param" - Name 471 "param" - Name 485 "f" - Name 529 "sphereDist" - Name 573 "PushConsts" - MemberName 573(PushConsts) 0 "calculateNormals" - Name 581 "pushConsts" - Name 591 "normal" - Name 608 "a" - Name 620 "b" - Name 636 "c" - MemberDecorate 69(UBO) 0 Offset 0 - MemberDecorate 69(UBO) 1 Offset 4 - MemberDecorate 69(UBO) 2 Offset 8 - MemberDecorate 69(UBO) 3 Offset 12 - MemberDecorate 69(UBO) 4 Offset 16 - MemberDecorate 69(UBO) 5 Offset 20 - MemberDecorate 69(UBO) 6 Offset 24 - MemberDecorate 69(UBO) 7 Offset 28 - MemberDecorate 69(UBO) 8 Offset 32 - MemberDecorate 69(UBO) 9 Offset 48 - MemberDecorate 69(UBO) 10 Offset 64 - Decorate 69(UBO) Block - Decorate 93(params) DescriptorSet 0 - Decorate 93(params) Binding 2 - Decorate 118(gl_GlobalInvocationID) BuiltIn GlobalInvocationId - MemberDecorate 153(Particle) 0 Offset 0 - MemberDecorate 153(Particle) 1 Offset 16 - MemberDecorate 153(Particle) 2 Offset 32 - MemberDecorate 153(Particle) 3 Offset 48 - MemberDecorate 153(Particle) 4 Offset 64 - Decorate 165 ArrayStride 80 - MemberDecorate 167(ParticleIn) 0 Offset 0 - Decorate 167(ParticleIn) BufferBlock - Decorate 175 DescriptorSet 0 - Decorate 175 Binding 0 - Decorate 187 ArrayStride 80 - MemberDecorate 189(ParticleOut) 0 Offset 0 - Decorate 189(ParticleOut) BufferBlock - Decorate 197 DescriptorSet 0 - Decorate 197 Binding 1 - MemberDecorate 573(PushConsts) 0 Offset 0 - Decorate 573(PushConsts) Block - Decorate 816 BuiltIn WorkgroupSize - 3: TypeVoid - 4: TypeFunction 3 - 6: TypeInt 32 0 - 9: 6(int) Constant 32 - 10: 6(int) Constant 6 - 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 - 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 - 19: 6(int) Constant 1 - 20: 6(int) Constant 4 - 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 - 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 - 26: TypeVector 23(float) 3 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 - 28: TypePointer Function 26(fvec3) - 29: TypePointer Function 23(float) - 30: TypeFunction 26(fvec3) 28(ptr) 28(ptr) 29(ptr) - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 27 27 27 25 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 36 31 16 11 11 18 36 12 11 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 27 16 11 11 37 20 19 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 27 16 11 11 37 20 21 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 25 16 11 11 37 20 12 - 55: 6(int) Constant 68 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 54 27 16 55 11 37 20 - 62: TypeVector 23(float) 4 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 - 64: TypeInt 32 1 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 65 9 20 11 - 67: TypeVector 64(int) 2 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 66 21 - 69(UBO): TypeStruct 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 23(float) 62(fvec4) 62(fvec4) 67(ivec2) - 72: 6(int) Constant 56 - 73: 6(int) Constant 8 - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 25 16 72 73 11 11 12 - 83: 6(int) Constant 58 - 84: 6(int) Constant 7 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 63 16 83 84 11 11 12 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 63 16 83 84 11 11 12 - 88: 6(int) Constant 59 - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 68 16 88 73 11 11 12 - 91: 6(int) Constant 69 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 19 16 91 11 18 90 11 12 70 74 75 76 77 78 79 80 81 85 86 - 92: TypePointer Uniform 69(UBO) - 93(params): 92(ptr) Variable Uniform - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 89 16 91 11 18 95 93(params) 73 - 96: 64(int) Constant 2 - 97: TypePointer Uniform 23(float) - 109: TypeVector 6(int) 3 - 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 7 12 - 111: TypePointer Function 109(ivec3) - 115: 6(int) Constant 74 - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 110 16 115 11 15 20 - 117: TypePointer Input 109(ivec3) -118(gl_GlobalInvocationID): 117(ptr) Variable Input - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 120 110 16 115 11 18 120 118(gl_GlobalInvocationID) 73 - 122: TypePointer Function 6(int) - 126: 6(int) Constant 76 - 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 7 16 126 11 15 20 - 130: 64(int) Constant 10 - 131: TypePointer Uniform 64(int) - 146: TypeBool - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 153(Particle): TypeStruct 62(fvec4) 62(fvec4) 62(fvec4) 62(fvec4) 23(float) - 156: 6(int) Constant 31 - 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 - 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 63 16 156 84 11 11 12 - 160: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 25 16 9 73 11 11 12 - 164: 6(int) Constant 81 - 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 19 16 164 11 18 163 11 12 154 157 158 159 160 - 165: TypeRuntimeArray 153(Particle) - 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 162 11 - 167(ParticleIn): TypeStruct 165 - 170: 6(int) Constant 36 - 171: 6(int) Constant 11 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 169 166 16 170 171 11 11 12 - 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 19 16 164 11 18 173 11 12 168 - 174: TypePointer Uniform 167(ParticleIn) - 175: 174(ptr) Variable Uniform - 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 172 16 164 11 18 17 175 73 - 177: 64(int) Constant 0 - 179: 64(int) Constant 4 - 182: 23(float) Constant 1065353216 - 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 187: TypeRuntimeArray 153(Particle) - 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 162 11 -189(ParticleOut): TypeStruct 187 - 192: 6(int) Constant 40 - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 188 16 192 171 11 11 12 - 195: 6(int) Constant 82 - 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 194 19 16 195 11 18 194 11 12 190 - 196: TypePointer Uniform 189(ParticleOut) - 197: 196(ptr) Variable Uniform - 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 193 16 195 11 18 17 197 73 - 201: TypePointer Uniform 62(fvec4) - 206: 64(int) Constant 1 - 207: 23(float) Constant 0 - 208: 62(fvec4) ConstantComposite 207 207 207 207 - 214: 6(int) Constant 88 - 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 213 27 16 214 11 15 20 - 216: 64(int) Constant 9 - 226: 6(int) Constant 90 - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 27 16 226 11 15 20 - 235: 6(int) Constant 91 - 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 27 16 235 11 15 20 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 267: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 300: 64(int) Constant 5 - 315: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 359: 64(int) Constant 6 - 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 380: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 419: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 477: 64(int) Constant 3 - 488: 6(int) Constant 130 - 486: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 487 27 16 488 11 15 20 - 502: 23(float) Constant 1056964608 - 532: 6(int) Constant 135 - 530: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 531 27 16 532 11 15 20 - 538: 64(int) Constant 8 - 545: 64(int) Constant 7 - 548: 23(float) Constant 1008981770 - 550: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 573(PushConsts): TypeStruct 6(int) - 576: 6(int) Constant 63 - 574: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 575 7 16 576 84 11 11 12 - 579: 6(int) Constant 144 - 577: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 578 19 16 579 11 18 578 11 12 574 - 580: TypePointer PushConstant 573(PushConsts) - 581(pushConsts): 580(ptr) Variable PushConstant - 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 583 577 16 579 11 18 583 581(pushConsts) 73 - 584: TypePointer PushConstant 6(int) - 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 593: 6(int) Constant 145 - 592: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 27 16 593 11 15 20 - 595: 26(fvec3) ConstantComposite 207 207 207 - 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 604: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 611: 6(int) Constant 149 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 610 27 16 611 11 15 20 - 623: 6(int) Constant 150 - 621: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 622 27 16 623 11 15 20 - 639: 6(int) Constant 151 - 637: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 638 27 16 639 11 15 20 - 666: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 713: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 719: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 766: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 147 9 21 11 - 815: 6(int) Constant 10 - 816: 109(ivec3) ConstantComposite 815 815 19 - 13(main): 3 Function None 4 - 22: Label - 112(id): 111(ptr) Variable Function - 123(index): 122(ptr) Variable Function - 211(force): 28(ptr) Variable Function - 223(pos): 28(ptr) Variable Function - 232(vel): 28(ptr) Variable Function - 249(param): 28(ptr) Variable Function - 253(param): 28(ptr) Variable Function - 255(param): 29(ptr) Variable Function - 273(param): 28(ptr) Variable Function - 277(param): 28(ptr) Variable Function - 279(param): 29(ptr) Variable Function - 301(param): 28(ptr) Variable Function - 305(param): 28(ptr) Variable Function - 307(param): 29(ptr) Variable Function - 324(param): 28(ptr) Variable Function - 328(param): 28(ptr) Variable Function - 330(param): 29(ptr) Variable Function - 360(param): 28(ptr) Variable Function - 364(param): 28(ptr) Variable Function - 366(param): 29(ptr) Variable Function - 391(param): 28(ptr) Variable Function - 395(param): 28(ptr) Variable Function - 397(param): 29(ptr) Variable Function - 430(param): 28(ptr) Variable Function - 434(param): 28(ptr) Variable Function - 436(param): 29(ptr) Variable Function - 465(param): 28(ptr) Variable Function - 469(param): 28(ptr) Variable Function - 471(param): 29(ptr) Variable Function - 485(f): 28(ptr) Variable Function - 529(sphereDist): 28(ptr) Variable Function - 591(normal): 28(ptr) Variable Function - 608(a): 28(ptr) Variable Function - 620(b): 28(ptr) Variable Function - 636(c): 28(ptr) Variable Function - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 116: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(id) 44 - 121: 109(ivec3) Load 118(gl_GlobalInvocationID) - Store 112(id) 121 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(index) 44 - 128: 122(ptr) AccessChain 112(id) 19 - 129: 6(int) Load 128 - 132: 131(ptr) AccessChain 93(params) 130 11 - 133: 64(int) Load 132 - 134: 6(int) Bitcast 133 - 135: 6(int) IMul 129 134 - 136: 122(ptr) AccessChain 112(id) 11 - 137: 6(int) Load 136 - 138: 6(int) IAdd 135 137 - Store 123(index) 138 - 139: 6(int) Load 123(index) - 140: 131(ptr) AccessChain 93(params) 130 11 - 141: 64(int) Load 140 - 142: 131(ptr) AccessChain 93(params) 130 19 - 143: 64(int) Load 142 - 144: 64(int) IMul 141 143 - 145: 6(int) Bitcast 144 - 149: 146(bool) UGreaterThan 139 145 - SelectionMerge 151 None - BranchConditional 149 150 151 - 150: Label + EntryPoint GLCompute 14 "main" 124 + ExecutionMode 14 LocalSize 10 10 1 + 1: String "" + 9: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 25: String "float" + 37: String "springForce" + 43: String "p0" + 47: String "p1" + 50: String "restDist" + 58: String "dist" + 70: String "int" + 76: String "sphereRadius" + 87: String "gravity" + 92: String "particleCount" + 95: String "UBO" + 99: String "params" + 121: String "id" + 126: String "gl_GlobalInvocationID" + 133: String "index" + 156: String "bool" + 170: String "normal" + 176: String "pinned" + 178: String "Particle" + 183: String "particleIn" + 187: String "ParticleIn" + 208: String "particleOut" + 211: String "ParticleOut" + 236: String "force" + 249: String "pos" + 259: String "vel" + 571: String "f" + 620: String "sphereDist" + 673: String "calculateNormals" + 676: String "PushConsts" + 680: String "pushConsts" + 717: String "a" + 730: String "b" + 747: String "c" + Name 14 "main" + Name 36 "springForce(vf3;vf3;f1;" + Name 33 "p0" + Name 34 "p1" + Name 35 "restDist" + Name 56 "dist" + Name 74 "UBO" + MemberName 74(UBO) 0 "deltaT" + MemberName 74(UBO) 1 "particleMass" + MemberName 74(UBO) 2 "springStiffness" + MemberName 74(UBO) 3 "damping" + MemberName 74(UBO) 4 "restDistH" + MemberName 74(UBO) 5 "restDistV" + MemberName 74(UBO) 6 "restDistD" + MemberName 74(UBO) 7 "sphereRadius" + MemberName 74(UBO) 8 "spherePos" + MemberName 74(UBO) 9 "gravity" + MemberName 74(UBO) 10 "particleCount" + Name 97 "params" + Name 119 "id" + Name 124 "gl_GlobalInvocationID" + Name 131 "index" + Name 168 "Particle" + MemberName 168(Particle) 0 "pos" + MemberName 168(Particle) 1 "vel" + MemberName 168(Particle) 2 "uv" + MemberName 168(Particle) 3 "normal" + MemberName 168(Particle) 4 "pinned" + Name 181 "ParticleIn" + MemberName 181(ParticleIn) 0 "particleIn" + Name 189 "" + Name 206 "ParticleOut" + MemberName 206(ParticleOut) 0 "particleOut" + Name 213 "" + Name 234 "force" + Name 247 "pos" + Name 257 "vel" + Name 278 "param" + Name 282 "param" + Name 284 "param" + Name 308 "param" + Name 312 "param" + Name 314 "param" + Name 342 "param" + Name 346 "param" + Name 348 "param" + Name 371 "param" + Name 375 "param" + Name 377 "param" + Name 415 "param" + Name 419 "param" + Name 421 "param" + Name 454 "param" + Name 458 "param" + Name 460 "param" + Name 501 "param" + Name 505 "param" + Name 507 "param" + Name 544 "param" + Name 548 "param" + Name 550 "param" + Name 569 "f" + Name 618 "sphereDist" + Name 671 "PushConsts" + MemberName 671(PushConsts) 0 "calculateNormals" + Name 678 "pushConsts" + Name 691 "normal" + Name 715 "a" + Name 728 "b" + Name 745 "c" + MemberDecorate 74(UBO) 0 Offset 0 + MemberDecorate 74(UBO) 1 Offset 4 + MemberDecorate 74(UBO) 2 Offset 8 + MemberDecorate 74(UBO) 3 Offset 12 + MemberDecorate 74(UBO) 4 Offset 16 + MemberDecorate 74(UBO) 5 Offset 20 + MemberDecorate 74(UBO) 6 Offset 24 + MemberDecorate 74(UBO) 7 Offset 28 + MemberDecorate 74(UBO) 8 Offset 32 + MemberDecorate 74(UBO) 9 Offset 48 + MemberDecorate 74(UBO) 10 Offset 64 + Decorate 74(UBO) Block + Decorate 97(params) DescriptorSet 0 + Decorate 97(params) Binding 2 + Decorate 124(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + MemberDecorate 168(Particle) 0 Offset 0 + MemberDecorate 168(Particle) 1 Offset 16 + MemberDecorate 168(Particle) 2 Offset 32 + MemberDecorate 168(Particle) 3 Offset 48 + MemberDecorate 168(Particle) 4 Offset 64 + Decorate 179 ArrayStride 80 + MemberDecorate 181(ParticleIn) 0 Offset 0 + Decorate 181(ParticleIn) BufferBlock + Decorate 189 DescriptorSet 0 + Decorate 189 Binding 0 + Decorate 204 ArrayStride 80 + MemberDecorate 206(ParticleOut) 0 Offset 0 + Decorate 206(ParticleOut) BufferBlock + Decorate 213 DescriptorSet 0 + Decorate 213 Binding 1 + MemberDecorate 671(PushConsts) 0 Offset 0 + Decorate 671(PushConsts) Block + Decorate 968 BuiltIn WorkgroupSize + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 24: TypeFloat 32 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 + 27: TypeVector 24(float) 3 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 + 29: TypePointer Function 27(fvec3) + 30: TypePointer Function 24(float) + 31: TypeFunction 27(fvec3) 29(ptr) 29(ptr) 30(ptr) + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 28 28 28 26 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 37 32 17 12 12 19 37 13 12 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 28 17 12 12 38 21 20 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 28 17 12 12 38 21 22 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 26 17 12 12 38 21 13 + 55: 7(int) Constant 68 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 58 28 17 55 12 38 21 + 64: 7(int) Constant 69 + 67: TypeVector 24(float) 4 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 + 69: TypeInt 32 1 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 70 10 21 12 + 72: TypeVector 69(int) 2 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 71 22 + 74(UBO): TypeStruct 24(float) 24(float) 24(float) 24(float) 24(float) 24(float) 24(float) 24(float) 67(fvec4) 67(fvec4) 72(ivec2) + 77: 7(int) Constant 56 + 78: 7(int) Constant 8 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 + 88: 7(int) Constant 58 + 89: 7(int) Constant 7 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 68 17 88 89 12 12 13 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 68 17 88 89 12 12 13 + 93: 7(int) Constant 59 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 73 17 93 78 12 12 13 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 95 20 17 64 12 19 95 12 13 75 79 80 81 82 83 84 85 86 90 91 + 96: TypePointer Uniform 74(UBO) + 97(params): 96(ptr) Variable Uniform + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 99 94 17 64 12 19 99 97(params) 78 + 100: 69(int) Constant 2 + 101: TypePointer Uniform 24(float) + 115: 7(int) Constant 74 + 116: TypeVector 7(int) 3 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 13 + 118: TypePointer Function 116(ivec3) + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 117 17 115 12 16 21 + 123: TypePointer Input 116(ivec3) +124(gl_GlobalInvocationID): 123(ptr) Variable Input + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 126 117 17 115 12 19 126 124(gl_GlobalInvocationID) 78 + 129: 7(int) Constant 76 + 130: TypePointer Function 7(int) + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 8 17 129 12 16 21 + 137: 69(int) Constant 10 + 138: TypePointer Uniform 69(int) + 147: 7(int) Constant 77 + 155: TypeBool + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 163: 7(int) Constant 78 + 167: 7(int) Constant 81 + 168(Particle): TypeStruct 67(fvec4) 67(fvec4) 67(fvec4) 67(fvec4) 24(float) + 171: 7(int) Constant 31 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 26 17 10 78 12 12 13 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 20 17 167 12 19 178 12 13 169 172 173 174 175 + 179: TypeRuntimeArray 168(Particle) + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 177 12 + 181(ParticleIn): TypeStruct 179 + 184: 7(int) Constant 36 + 185: 7(int) Constant 11 + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 180 17 184 185 12 12 13 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 187 20 17 167 12 19 187 12 13 182 + 188: TypePointer Uniform 181(ParticleIn) + 189: 188(ptr) Variable Uniform + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 186 17 167 12 19 1 189 78 + 191: 69(int) Constant 0 + 193: 69(int) Constant 4 + 196: 24(float) Constant 1065353216 + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 203: 7(int) Constant 82 + 204: TypeRuntimeArray 168(Particle) + 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 177 12 +206(ParticleOut): TypeStruct 204 + 209: 7(int) Constant 40 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 208 205 17 209 185 12 12 13 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 211 20 17 203 12 19 211 12 13 207 + 212: TypePointer Uniform 206(ParticleOut) + 213: 212(ptr) Variable Uniform + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 210 17 203 12 19 1 213 78 + 217: TypePointer Uniform 67(fvec4) + 222: 7(int) Constant 83 + 224: 69(int) Constant 1 + 225: 24(float) Constant 0 + 226: 67(fvec4) ConstantComposite 225 225 225 225 + 229: 7(int) Constant 84 + 233: 7(int) Constant 88 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 236 28 17 233 12 16 21 + 238: 69(int) Constant 9 + 246: 7(int) Constant 90 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 28 17 246 12 16 21 + 256: 7(int) Constant 91 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 259 28 17 256 12 16 21 + 266: 7(int) Constant 95 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 275: 7(int) Constant 96 + 292: 7(int) Constant 99 + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 305: 7(int) Constant 100 + 322: 7(int) Constant 103 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 335: 7(int) Constant 104 + 341: 69(int) Constant 5 + 356: 7(int) Constant 107 + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 365: 7(int) Constant 108 + 385: 7(int) Constant 111 + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 407: 7(int) Constant 112 + 414: 69(int) Constant 6 + 429: 7(int) Constant 115 + 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 447: 7(int) Constant 116 + 468: 7(int) Constant 119 + 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 494: 7(int) Constant 120 + 515: 7(int) Constant 123 + 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 537: 7(int) Constant 124 + 558: 7(int) Constant 127 + 559: 69(int) Constant 3 + 568: 7(int) Constant 130 + 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 571 28 17 568 12 16 21 + 579: 7(int) Constant 131 + 587: 24(float) Constant 1056964608 + 603: 7(int) Constant 132 + 617: 7(int) Constant 135 + 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 620 28 17 617 12 16 21 + 626: 69(int) Constant 8 + 632: 7(int) Constant 136 + 635: 69(int) Constant 7 + 638: 24(float) Constant 1008981770 + 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 646: 7(int) Constant 138 + 665: 7(int) Constant 140 + 670: 7(int) Constant 144 + 671(PushConsts): TypeStruct 7(int) + 674: 7(int) Constant 63 + 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 673 8 17 674 89 12 12 13 + 675: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 676 20 17 670 12 19 676 12 13 672 + 677: TypePointer PushConstant 671(PushConsts) + 678(pushConsts): 677(ptr) Variable PushConstant + 679: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 680 675 17 670 12 19 680 678(pushConsts) 78 + 681: TypePointer PushConstant 7(int) + 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 690: 7(int) Constant 145 + 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 28 17 690 12 16 21 + 694: 27(fvec3) ConstantComposite 225 225 225 + 696: 7(int) Constant 147 + 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 705: 7(int) Constant 148 + 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 714: 7(int) Constant 149 + 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 717 28 17 714 12 16 21 + 727: 7(int) Constant 150 + 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 730 28 17 727 12 16 21 + 744: 7(int) Constant 151 + 746: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 747 28 17 744 12 16 21 + 760: 7(int) Constant 152 + 772: 7(int) Constant 154 + 779: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 785: 7(int) Constant 155 + 797: 7(int) Constant 156 + 810: 7(int) Constant 157 + 819: 7(int) Constant 158 + 831: 7(int) Constant 161 + 838: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 844: 7(int) Constant 162 + 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 853: 7(int) Constant 163 + 865: 7(int) Constant 164 + 878: 7(int) Constant 165 + 887: 7(int) Constant 166 + 899: 7(int) Constant 168 + 906: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 + 912: 7(int) Constant 169 + 921: 7(int) Constant 170 + 934: 7(int) Constant 171 + 946: 7(int) Constant 172 + 958: 7(int) Constant 175 + 967: 7(int) Constant 10 + 968: 116(ivec3) ConstantComposite 967 967 20 + Line 1 72 11 + 14(main): 4 Function None 5 + 23: Label + 119(id): 118(ptr) Variable Function + 131(index): 130(ptr) Variable Function + 234(force): 29(ptr) Variable Function + 247(pos): 29(ptr) Variable Function + 257(vel): 29(ptr) Variable Function + 278(param): 29(ptr) Variable Function + 282(param): 29(ptr) Variable Function + 284(param): 30(ptr) Variable Function + 308(param): 29(ptr) Variable Function + 312(param): 29(ptr) Variable Function + 314(param): 30(ptr) Variable Function + 342(param): 29(ptr) Variable Function + 346(param): 29(ptr) Variable Function + 348(param): 30(ptr) Variable Function + 371(param): 29(ptr) Variable Function + 375(param): 29(ptr) Variable Function + 377(param): 30(ptr) Variable Function + 415(param): 29(ptr) Variable Function + 419(param): 29(ptr) Variable Function + 421(param): 30(ptr) Variable Function + 454(param): 29(ptr) Variable Function + 458(param): 29(ptr) Variable Function + 460(param): 30(ptr) Variable Function + 501(param): 29(ptr) Variable Function + 505(param): 29(ptr) Variable Function + 507(param): 30(ptr) Variable Function + 544(param): 29(ptr) Variable Function + 548(param): 29(ptr) Variable Function + 550(param): 30(ptr) Variable Function + 569(f): 29(ptr) Variable Function + 618(sphereDist): 29(ptr) Variable Function + 691(normal): 29(ptr) Variable Function + 715(a): 29(ptr) Variable Function + 728(b): 29(ptr) Variable Function + 745(c): 29(ptr) Variable Function + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 115 115 12 12 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 120 119(id) 45 + 127: 116(ivec3) Load 124(gl_GlobalInvocationID) + Store 119(id) 127 + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 129 129 12 12 + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(index) 45 + 135: 130(ptr) AccessChain 119(id) 20 + 136: 7(int) Load 135 + 139: 138(ptr) AccessChain 97(params) 137 12 + 140: 69(int) Load 139 + 141: 7(int) Bitcast 140 + 142: 7(int) IMul 136 141 + 143: 130(ptr) AccessChain 119(id) 12 + 144: 7(int) Load 143 + 145: 7(int) IAdd 142 144 + Store 131(index) 145 + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 147 147 12 12 + 148: 7(int) Load 131(index) + 149: 138(ptr) AccessChain 97(params) 137 12 + 150: 69(int) Load 149 + 151: 138(ptr) AccessChain 97(params) 137 20 + 152: 69(int) Load 151 + 153: 69(int) IMul 150 152 + 154: 7(int) Bitcast 153 + 158: 155(bool) UGreaterThan 148 154 + SelectionMerge 160 None + BranchConditional 158 159 160 + 159: Label + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 163 163 12 12 Return - 151: Label - 178: 6(int) Load 123(index) - 180: 97(ptr) AccessChain 175 177 178 179 - 181: 23(float) Load 180 - 184: 146(bool) FOrdEqual 181 182 - SelectionMerge 186 None - BranchConditional 184 185 186 - 185: Label - 199: 6(int) Load 123(index) - 200: 6(int) Load 123(index) - 202: 201(ptr) AccessChain 197 177 200 177 - 203: 62(fvec4) Load 202 - 204: 201(ptr) AccessChain 197 177 199 177 - Store 204 203 - 205: 6(int) Load 123(index) - 209: 201(ptr) AccessChain 197 177 205 206 - Store 209 208 + 160: Label + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 167 167 12 12 + 192: 7(int) Load 131(index) + 194: 101(ptr) AccessChain 189 191 192 193 + 195: 24(float) Load 194 + 198: 155(bool) FOrdEqual 195 196 + SelectionMerge 200 None + BranchConditional 198 199 200 + 199: Label + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 203 203 12 12 + 215: 7(int) Load 131(index) + 216: 7(int) Load 131(index) + 218: 217(ptr) AccessChain 213 191 216 191 + 219: 67(fvec4) Load 218 + 220: 217(ptr) AccessChain 213 191 215 191 + Store 220 219 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 222 222 12 12 + 223: 7(int) Load 131(index) + 227: 217(ptr) AccessChain 213 191 223 224 + Store 227 226 + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 229 229 12 12 Return - 186: Label - 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 212 211(force) 44 - 217: 201(ptr) AccessChain 93(params) 216 - 218: 62(fvec4) Load 217 - 219: 26(fvec3) VectorShuffle 218 218 0 1 2 - 220: 97(ptr) AccessChain 93(params) 206 - 221: 23(float) Load 220 - 222: 26(fvec3) VectorTimesScalar 219 221 - Store 211(force) 222 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(pos) 44 - 228: 6(int) Load 123(index) - 229: 201(ptr) AccessChain 175 177 228 177 - 230: 62(fvec4) Load 229 - 231: 26(fvec3) VectorShuffle 230 230 0 1 2 - Store 223(pos) 231 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(vel) 44 - 237: 6(int) Load 123(index) - 238: 201(ptr) AccessChain 175 177 237 206 - 239: 62(fvec4) Load 238 - 240: 26(fvec3) VectorShuffle 239 239 0 1 2 - Store 232(vel) 240 - 241: 122(ptr) AccessChain 112(id) 11 - 242: 6(int) Load 241 - 244: 146(bool) UGreaterThan 242 11 - SelectionMerge 246 None - BranchConditional 244 245 246 - 245: Label - 247: 6(int) Load 123(index) - 248: 6(int) ISub 247 19 - 250: 201(ptr) AccessChain 175 177 248 177 - 251: 62(fvec4) Load 250 - 252: 26(fvec3) VectorShuffle 251 251 0 1 2 - Store 249(param) 252 - 254: 26(fvec3) Load 223(pos) - Store 253(param) 254 - 256: 97(ptr) AccessChain 93(params) 179 - 257: 23(float) Load 256 - Store 255(param) 257 - 258: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 249(param) 253(param) 255(param) - 259: 26(fvec3) Load 211(force) - 260: 26(fvec3) FAdd 259 258 - Store 211(force) 260 - Branch 246 - 246: Label - 261: 122(ptr) AccessChain 112(id) 11 - 262: 6(int) Load 261 - 263: 131(ptr) AccessChain 93(params) 130 11 - 264: 64(int) Load 263 - 265: 64(int) ISub 264 206 - 266: 6(int) Bitcast 265 - 268: 146(bool) ULessThan 262 266 - SelectionMerge 270 None - BranchConditional 268 269 270 - 269: Label - 271: 6(int) Load 123(index) - 272: 6(int) IAdd 271 19 - 274: 201(ptr) AccessChain 175 177 272 177 - 275: 62(fvec4) Load 274 - 276: 26(fvec3) VectorShuffle 275 275 0 1 2 - Store 273(param) 276 - 278: 26(fvec3) Load 223(pos) - Store 277(param) 278 - 280: 97(ptr) AccessChain 93(params) 179 - 281: 23(float) Load 280 - Store 279(param) 281 - 282: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 273(param) 277(param) 279(param) - 283: 26(fvec3) Load 211(force) - 284: 26(fvec3) FAdd 283 282 - Store 211(force) 284 - Branch 270 - 270: Label - 285: 122(ptr) AccessChain 112(id) 19 - 286: 6(int) Load 285 - 287: 131(ptr) AccessChain 93(params) 130 19 - 288: 64(int) Load 287 - 289: 64(int) ISub 288 206 - 290: 6(int) Bitcast 289 - 292: 146(bool) ULessThan 286 290 - SelectionMerge 294 None - BranchConditional 292 293 294 - 293: Label - 295: 6(int) Load 123(index) - 296: 131(ptr) AccessChain 93(params) 130 11 - 297: 64(int) Load 296 - 298: 6(int) Bitcast 297 - 299: 6(int) IAdd 295 298 - 302: 201(ptr) AccessChain 175 177 299 177 - 303: 62(fvec4) Load 302 - 304: 26(fvec3) VectorShuffle 303 303 0 1 2 - Store 301(param) 304 - 306: 26(fvec3) Load 223(pos) - Store 305(param) 306 - 308: 97(ptr) AccessChain 93(params) 300 - 309: 23(float) Load 308 - Store 307(param) 309 - 310: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 301(param) 305(param) 307(param) - 311: 26(fvec3) Load 211(force) - 312: 26(fvec3) FAdd 311 310 - Store 211(force) 312 - Branch 294 - 294: Label - 313: 122(ptr) AccessChain 112(id) 19 - 314: 6(int) Load 313 - 316: 146(bool) UGreaterThan 314 11 - SelectionMerge 318 None - BranchConditional 316 317 318 - 317: Label - 319: 6(int) Load 123(index) - 320: 131(ptr) AccessChain 93(params) 130 11 - 321: 64(int) Load 320 - 322: 6(int) Bitcast 321 - 323: 6(int) ISub 319 322 - 325: 201(ptr) AccessChain 175 177 323 177 - 326: 62(fvec4) Load 325 - 327: 26(fvec3) VectorShuffle 326 326 0 1 2 - Store 324(param) 327 - 329: 26(fvec3) Load 223(pos) - Store 328(param) 329 - 331: 97(ptr) AccessChain 93(params) 300 - 332: 23(float) Load 331 - Store 330(param) 332 - 333: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 324(param) 328(param) 330(param) - 334: 26(fvec3) Load 211(force) - 335: 26(fvec3) FAdd 334 333 - Store 211(force) 335 - Branch 318 - 318: Label - 336: 122(ptr) AccessChain 112(id) 11 - 337: 6(int) Load 336 - 339: 146(bool) UGreaterThan 337 11 - SelectionMerge 341 None - BranchConditional 339 340 341 - 340: Label - 342: 122(ptr) AccessChain 112(id) 19 - 343: 6(int) Load 342 - 344: 131(ptr) AccessChain 93(params) 130 19 - 345: 64(int) Load 344 - 346: 64(int) ISub 345 206 - 347: 6(int) Bitcast 346 - 349: 146(bool) ULessThan 343 347 - Branch 341 - 341: Label - 350: 146(bool) Phi 339 318 349 340 - SelectionMerge 352 None - BranchConditional 350 351 352 - 351: Label - 353: 6(int) Load 123(index) - 354: 131(ptr) AccessChain 93(params) 130 11 - 355: 64(int) Load 354 - 356: 6(int) Bitcast 355 - 357: 6(int) IAdd 353 356 - 358: 6(int) ISub 357 19 - 361: 201(ptr) AccessChain 175 177 358 177 - 362: 62(fvec4) Load 361 - 363: 26(fvec3) VectorShuffle 362 362 0 1 2 - Store 360(param) 363 - 365: 26(fvec3) Load 223(pos) - Store 364(param) 365 - 367: 97(ptr) AccessChain 93(params) 359 - 368: 23(float) Load 367 - Store 366(param) 368 - 369: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 360(param) 364(param) 366(param) - 370: 26(fvec3) Load 211(force) - 371: 26(fvec3) FAdd 370 369 - Store 211(force) 371 - Branch 352 - 352: Label - 372: 122(ptr) AccessChain 112(id) 11 - 373: 6(int) Load 372 - 375: 146(bool) UGreaterThan 373 11 - SelectionMerge 377 None - BranchConditional 375 376 377 - 376: Label - 378: 122(ptr) AccessChain 112(id) 19 - 379: 6(int) Load 378 - 381: 146(bool) UGreaterThan 379 11 - Branch 377 - 377: Label - 382: 146(bool) Phi 375 352 381 376 - SelectionMerge 384 None - BranchConditional 382 383 384 - 383: Label - 385: 6(int) Load 123(index) - 386: 131(ptr) AccessChain 93(params) 130 11 - 387: 64(int) Load 386 - 388: 6(int) Bitcast 387 - 389: 6(int) ISub 385 388 - 390: 6(int) ISub 389 19 - 392: 201(ptr) AccessChain 175 177 390 177 - 393: 62(fvec4) Load 392 - 394: 26(fvec3) VectorShuffle 393 393 0 1 2 - Store 391(param) 394 - 396: 26(fvec3) Load 223(pos) - Store 395(param) 396 - 398: 97(ptr) AccessChain 93(params) 359 - 399: 23(float) Load 398 - Store 397(param) 399 - 400: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 391(param) 395(param) 397(param) - 401: 26(fvec3) Load 211(force) - 402: 26(fvec3) FAdd 401 400 - Store 211(force) 402 - Branch 384 - 384: Label - 403: 122(ptr) AccessChain 112(id) 11 - 404: 6(int) Load 403 - 405: 131(ptr) AccessChain 93(params) 130 11 - 406: 64(int) Load 405 - 407: 64(int) ISub 406 206 - 408: 6(int) Bitcast 407 - 410: 146(bool) ULessThan 404 408 - SelectionMerge 412 None - BranchConditional 410 411 412 - 411: Label - 413: 122(ptr) AccessChain 112(id) 19 - 414: 6(int) Load 413 - 415: 131(ptr) AccessChain 93(params) 130 19 - 416: 64(int) Load 415 - 417: 64(int) ISub 416 206 - 418: 6(int) Bitcast 417 - 420: 146(bool) ULessThan 414 418 - Branch 412 - 412: Label - 421: 146(bool) Phi 410 384 420 411 - SelectionMerge 423 None - BranchConditional 421 422 423 - 422: Label - 424: 6(int) Load 123(index) - 425: 131(ptr) AccessChain 93(params) 130 11 - 426: 64(int) Load 425 - 427: 6(int) Bitcast 426 - 428: 6(int) IAdd 424 427 - 429: 6(int) IAdd 428 19 - 431: 201(ptr) AccessChain 175 177 429 177 - 432: 62(fvec4) Load 431 - 433: 26(fvec3) VectorShuffle 432 432 0 1 2 - Store 430(param) 433 - 435: 26(fvec3) Load 223(pos) - Store 434(param) 435 - 437: 97(ptr) AccessChain 93(params) 359 - 438: 23(float) Load 437 - Store 436(param) 438 - 439: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 430(param) 434(param) 436(param) - 440: 26(fvec3) Load 211(force) - 441: 26(fvec3) FAdd 440 439 - Store 211(force) 441 - Branch 423 - 423: Label - 442: 122(ptr) AccessChain 112(id) 11 - 443: 6(int) Load 442 - 444: 131(ptr) AccessChain 93(params) 130 11 - 445: 64(int) Load 444 - 446: 64(int) ISub 445 206 - 447: 6(int) Bitcast 446 - 449: 146(bool) ULessThan 443 447 - SelectionMerge 451 None - BranchConditional 449 450 451 - 450: Label - 452: 122(ptr) AccessChain 112(id) 19 - 453: 6(int) Load 452 - 455: 146(bool) UGreaterThan 453 11 - Branch 451 - 451: Label - 456: 146(bool) Phi 449 423 455 450 - SelectionMerge 458 None - BranchConditional 456 457 458 - 457: Label - 459: 6(int) Load 123(index) - 460: 131(ptr) AccessChain 93(params) 130 11 - 461: 64(int) Load 460 - 462: 6(int) Bitcast 461 - 463: 6(int) ISub 459 462 - 464: 6(int) IAdd 463 19 - 466: 201(ptr) AccessChain 175 177 464 177 - 467: 62(fvec4) Load 466 - 468: 26(fvec3) VectorShuffle 467 467 0 1 2 - Store 465(param) 468 - 470: 26(fvec3) Load 223(pos) - Store 469(param) 470 - 472: 97(ptr) AccessChain 93(params) 359 - 473: 23(float) Load 472 - Store 471(param) 473 - 474: 26(fvec3) FunctionCall 35(springForce(vf3;vf3;f1;) 465(param) 469(param) 471(param) - 475: 26(fvec3) Load 211(force) - 476: 26(fvec3) FAdd 475 474 - Store 211(force) 476 - Branch 458 - 458: Label - 478: 97(ptr) AccessChain 93(params) 477 - 479: 23(float) Load 478 - 480: 23(float) FNegate 479 - 481: 26(fvec3) Load 232(vel) - 482: 26(fvec3) VectorTimesScalar 481 480 - 483: 26(fvec3) Load 211(force) - 484: 26(fvec3) FAdd 483 482 - Store 211(force) 484 - 489: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 486 485(f) 44 - 490: 26(fvec3) Load 211(force) - 491: 97(ptr) AccessChain 93(params) 206 - 492: 23(float) Load 491 - 493: 23(float) FDiv 182 492 - 494: 26(fvec3) VectorTimesScalar 490 493 - Store 485(f) 494 - 495: 6(int) Load 123(index) - 496: 26(fvec3) Load 223(pos) - 497: 26(fvec3) Load 232(vel) - 498: 97(ptr) AccessChain 93(params) 177 - 499: 23(float) Load 498 - 500: 26(fvec3) VectorTimesScalar 497 499 - 501: 26(fvec3) FAdd 496 500 - 503: 26(fvec3) Load 485(f) - 504: 26(fvec3) VectorTimesScalar 503 502 - 505: 97(ptr) AccessChain 93(params) 177 - 506: 23(float) Load 505 - 507: 26(fvec3) VectorTimesScalar 504 506 - 508: 97(ptr) AccessChain 93(params) 177 - 509: 23(float) Load 508 - 510: 26(fvec3) VectorTimesScalar 507 509 - 511: 26(fvec3) FAdd 501 510 - 512: 23(float) CompositeExtract 511 0 - 513: 23(float) CompositeExtract 511 1 - 514: 23(float) CompositeExtract 511 2 - 515: 62(fvec4) CompositeConstruct 512 513 514 182 - 516: 201(ptr) AccessChain 197 177 495 177 - Store 516 515 - 517: 6(int) Load 123(index) - 518: 26(fvec3) Load 232(vel) - 519: 26(fvec3) Load 485(f) - 520: 97(ptr) AccessChain 93(params) 177 - 521: 23(float) Load 520 - 522: 26(fvec3) VectorTimesScalar 519 521 - 523: 26(fvec3) FAdd 518 522 - 524: 23(float) CompositeExtract 523 0 - 525: 23(float) CompositeExtract 523 1 - 526: 23(float) CompositeExtract 523 2 - 527: 62(fvec4) CompositeConstruct 524 525 526 207 - 528: 201(ptr) AccessChain 197 177 517 206 - Store 528 527 - 533: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 530 529(sphereDist) 44 - 534: 6(int) Load 123(index) - 535: 201(ptr) AccessChain 197 177 534 177 - 536: 62(fvec4) Load 535 - 537: 26(fvec3) VectorShuffle 536 536 0 1 2 - 539: 201(ptr) AccessChain 93(params) 538 - 540: 62(fvec4) Load 539 - 541: 26(fvec3) VectorShuffle 540 540 0 1 2 - 542: 26(fvec3) FSub 537 541 - Store 529(sphereDist) 542 - 543: 26(fvec3) Load 529(sphereDist) - 544: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 543 - 546: 97(ptr) AccessChain 93(params) 545 - 547: 23(float) Load 546 - 549: 23(float) FAdd 547 548 - 551: 146(bool) FOrdLessThan 544 549 - SelectionMerge 553 None - BranchConditional 551 552 553 - 552: Label - 554: 6(int) Load 123(index) - 555: 201(ptr) AccessChain 93(params) 538 - 556: 62(fvec4) Load 555 - 557: 26(fvec3) VectorShuffle 556 556 0 1 2 - 558: 26(fvec3) Load 529(sphereDist) - 559: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 558 - 560: 97(ptr) AccessChain 93(params) 545 - 561: 23(float) Load 560 - 562: 23(float) FAdd 561 548 - 563: 26(fvec3) VectorTimesScalar 559 562 - 564: 26(fvec3) FAdd 557 563 - 565: 97(ptr) AccessChain 197 177 554 177 11 - 566: 23(float) CompositeExtract 564 0 - Store 565 566 - 567: 97(ptr) AccessChain 197 177 554 177 19 - 568: 23(float) CompositeExtract 564 1 - Store 567 568 - 569: 97(ptr) AccessChain 197 177 554 177 21 - 570: 23(float) CompositeExtract 564 2 - Store 569 570 - 571: 6(int) Load 123(index) - 572: 201(ptr) AccessChain 197 177 571 206 - Store 572 208 - Branch 553 - 553: Label - 585: 584(ptr) AccessChain 581(pushConsts) 177 - 586: 6(int) Load 585 - 588: 146(bool) IEqual 586 19 - SelectionMerge 590 None - BranchConditional 588 589 590 - 589: Label - 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 592 591(normal) 44 - Store 591(normal) 595 - 596: 122(ptr) AccessChain 112(id) 19 - 597: 6(int) Load 596 - 599: 146(bool) UGreaterThan 597 11 - SelectionMerge 601 None - BranchConditional 599 600 601 - 600: Label - 602: 122(ptr) AccessChain 112(id) 11 - 603: 6(int) Load 602 - 605: 146(bool) UGreaterThan 603 11 - SelectionMerge 607 None - BranchConditional 605 606 607 - 606: Label - 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 609 608(a) 44 - 613: 6(int) Load 123(index) - 614: 6(int) ISub 613 19 - 615: 201(ptr) AccessChain 175 177 614 177 - 616: 62(fvec4) Load 615 - 617: 26(fvec3) VectorShuffle 616 616 0 1 2 - 618: 26(fvec3) Load 223(pos) - 619: 26(fvec3) FSub 617 618 - Store 608(a) 619 - 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 621 620(b) 44 - 625: 6(int) Load 123(index) - 626: 131(ptr) AccessChain 93(params) 130 11 - 627: 64(int) Load 626 - 628: 6(int) Bitcast 627 - 629: 6(int) ISub 625 628 - 630: 6(int) ISub 629 19 - 631: 201(ptr) AccessChain 175 177 630 177 - 632: 62(fvec4) Load 631 - 633: 26(fvec3) VectorShuffle 632 632 0 1 2 - 634: 26(fvec3) Load 223(pos) - 635: 26(fvec3) FSub 633 634 - Store 620(b) 635 - 640: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 637 636(c) 44 - 641: 6(int) Load 123(index) - 642: 131(ptr) AccessChain 93(params) 130 11 - 643: 64(int) Load 642 - 644: 6(int) Bitcast 643 - 645: 6(int) ISub 641 644 - 646: 201(ptr) AccessChain 175 177 645 177 - 647: 62(fvec4) Load 646 - 648: 26(fvec3) VectorShuffle 647 647 0 1 2 - 649: 26(fvec3) Load 223(pos) - 650: 26(fvec3) FSub 648 649 - Store 636(c) 650 - 651: 26(fvec3) Load 608(a) - 652: 26(fvec3) Load 620(b) - 653: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 651 652 - 654: 26(fvec3) Load 620(b) - 655: 26(fvec3) Load 636(c) - 656: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 654 655 - 657: 26(fvec3) FAdd 653 656 - 658: 26(fvec3) Load 591(normal) - 659: 26(fvec3) FAdd 658 657 - Store 591(normal) 659 - Branch 607 - 607: Label - 660: 122(ptr) AccessChain 112(id) 11 - 661: 6(int) Load 660 - 662: 131(ptr) AccessChain 93(params) 130 11 - 663: 64(int) Load 662 - 664: 64(int) ISub 663 206 - 665: 6(int) Bitcast 664 - 667: 146(bool) ULessThan 661 665 - SelectionMerge 669 None - BranchConditional 667 668 669 - 668: Label - 670: 6(int) Load 123(index) - 671: 131(ptr) AccessChain 93(params) 130 11 - 672: 64(int) Load 671 - 673: 6(int) Bitcast 672 - 674: 6(int) ISub 670 673 - 675: 201(ptr) AccessChain 175 177 674 177 - 676: 62(fvec4) Load 675 - 677: 26(fvec3) VectorShuffle 676 676 0 1 2 - 678: 26(fvec3) Load 223(pos) - 679: 26(fvec3) FSub 677 678 - Store 608(a) 679 - 680: 6(int) Load 123(index) - 681: 131(ptr) AccessChain 93(params) 130 11 - 682: 64(int) Load 681 - 683: 6(int) Bitcast 682 - 684: 6(int) ISub 680 683 - 685: 6(int) IAdd 684 19 - 686: 201(ptr) AccessChain 175 177 685 177 - 687: 62(fvec4) Load 686 - 688: 26(fvec3) VectorShuffle 687 687 0 1 2 - 689: 26(fvec3) Load 223(pos) - 690: 26(fvec3) FSub 688 689 - Store 620(b) 690 - 691: 6(int) Load 123(index) - 692: 6(int) IAdd 691 19 - 693: 201(ptr) AccessChain 175 177 692 177 - 694: 62(fvec4) Load 693 - 695: 26(fvec3) VectorShuffle 694 694 0 1 2 - 696: 26(fvec3) Load 223(pos) - 697: 26(fvec3) FSub 695 696 - Store 636(c) 697 - 698: 26(fvec3) Load 608(a) - 699: 26(fvec3) Load 620(b) - 700: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 698 699 - 701: 26(fvec3) Load 620(b) - 702: 26(fvec3) Load 636(c) - 703: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 701 702 - 704: 26(fvec3) FAdd 700 703 - 705: 26(fvec3) Load 591(normal) - 706: 26(fvec3) FAdd 705 704 - Store 591(normal) 706 - Branch 669 - 669: Label - Branch 601 - 601: Label - 707: 122(ptr) AccessChain 112(id) 19 - 708: 6(int) Load 707 - 709: 131(ptr) AccessChain 93(params) 130 19 - 710: 64(int) Load 709 - 711: 64(int) ISub 710 206 - 712: 6(int) Bitcast 711 - 714: 146(bool) ULessThan 708 712 - SelectionMerge 716 None - BranchConditional 714 715 716 - 715: Label - 717: 122(ptr) AccessChain 112(id) 11 - 718: 6(int) Load 717 - 720: 146(bool) UGreaterThan 718 11 - SelectionMerge 722 None - BranchConditional 720 721 722 - 721: Label - 723: 6(int) Load 123(index) - 724: 131(ptr) AccessChain 93(params) 130 11 - 725: 64(int) Load 724 - 726: 6(int) Bitcast 725 - 727: 6(int) IAdd 723 726 - 728: 201(ptr) AccessChain 175 177 727 177 - 729: 62(fvec4) Load 728 - 730: 26(fvec3) VectorShuffle 729 729 0 1 2 - 731: 26(fvec3) Load 223(pos) - 732: 26(fvec3) FSub 730 731 - Store 608(a) 732 - 733: 6(int) Load 123(index) - 734: 131(ptr) AccessChain 93(params) 130 11 - 735: 64(int) Load 734 - 736: 6(int) Bitcast 735 - 737: 6(int) IAdd 733 736 - 738: 6(int) ISub 737 19 - 739: 201(ptr) AccessChain 175 177 738 177 - 740: 62(fvec4) Load 739 - 741: 26(fvec3) VectorShuffle 740 740 0 1 2 - 742: 26(fvec3) Load 223(pos) - 743: 26(fvec3) FSub 741 742 - Store 620(b) 743 - 744: 6(int) Load 123(index) - 745: 6(int) ISub 744 19 - 746: 201(ptr) AccessChain 175 177 745 177 - 747: 62(fvec4) Load 746 - 748: 26(fvec3) VectorShuffle 747 747 0 1 2 - 749: 26(fvec3) Load 223(pos) - 750: 26(fvec3) FSub 748 749 - Store 636(c) 750 - 751: 26(fvec3) Load 608(a) - 752: 26(fvec3) Load 620(b) - 753: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 751 752 - 754: 26(fvec3) Load 620(b) - 755: 26(fvec3) Load 636(c) - 756: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 754 755 - 757: 26(fvec3) FAdd 753 756 - 758: 26(fvec3) Load 591(normal) - 759: 26(fvec3) FAdd 758 757 - Store 591(normal) 759 - Branch 722 - 722: Label - 760: 122(ptr) AccessChain 112(id) 11 - 761: 6(int) Load 760 - 762: 131(ptr) AccessChain 93(params) 130 11 - 763: 64(int) Load 762 - 764: 64(int) ISub 763 206 - 765: 6(int) Bitcast 764 - 767: 146(bool) ULessThan 761 765 - SelectionMerge 769 None - BranchConditional 767 768 769 - 768: Label - 770: 6(int) Load 123(index) - 771: 6(int) IAdd 770 19 - 772: 201(ptr) AccessChain 175 177 771 177 - 773: 62(fvec4) Load 772 - 774: 26(fvec3) VectorShuffle 773 773 0 1 2 - 775: 26(fvec3) Load 223(pos) - 776: 26(fvec3) FSub 774 775 - Store 608(a) 776 - 777: 6(int) Load 123(index) - 778: 131(ptr) AccessChain 93(params) 130 11 - 779: 64(int) Load 778 - 780: 6(int) Bitcast 779 - 781: 6(int) IAdd 777 780 - 782: 6(int) IAdd 781 19 - 783: 201(ptr) AccessChain 175 177 782 177 - 784: 62(fvec4) Load 783 - 785: 26(fvec3) VectorShuffle 784 784 0 1 2 - 786: 26(fvec3) Load 223(pos) - 787: 26(fvec3) FSub 785 786 - Store 620(b) 787 - 788: 6(int) Load 123(index) - 789: 131(ptr) AccessChain 93(params) 130 11 - 790: 64(int) Load 789 - 791: 6(int) Bitcast 790 - 792: 6(int) IAdd 788 791 - 793: 201(ptr) AccessChain 175 177 792 177 - 794: 62(fvec4) Load 793 - 795: 26(fvec3) VectorShuffle 794 794 0 1 2 - 796: 26(fvec3) Load 223(pos) - 797: 26(fvec3) FSub 795 796 - Store 636(c) 797 - 798: 26(fvec3) Load 608(a) - 799: 26(fvec3) Load 620(b) - 800: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 798 799 - 801: 26(fvec3) Load 620(b) - 802: 26(fvec3) Load 636(c) - 803: 26(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 801 802 - 804: 26(fvec3) FAdd 800 803 - 805: 26(fvec3) Load 591(normal) - 806: 26(fvec3) FAdd 805 804 - Store 591(normal) 806 - Branch 769 - 769: Label - Branch 716 - 716: Label - 807: 6(int) Load 123(index) - 808: 26(fvec3) Load 591(normal) - 809: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 808 - 810: 23(float) CompositeExtract 809 0 - 811: 23(float) CompositeExtract 809 1 - 812: 23(float) CompositeExtract 809 2 - 813: 62(fvec4) CompositeConstruct 810 811 812 207 - 814: 201(ptr) AccessChain 197 177 807 477 - Store 814 813 - Branch 590 - 590: Label + 200: Label + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 233 233 12 12 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 235 234(force) 45 + 239: 217(ptr) AccessChain 97(params) 238 + 240: 67(fvec4) Load 239 + 241: 27(fvec3) VectorShuffle 240 240 0 1 2 + 242: 101(ptr) AccessChain 97(params) 224 + 243: 24(float) Load 242 + 244: 27(fvec3) VectorTimesScalar 241 243 + Store 234(force) 244 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 246 246 12 12 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(pos) 45 + 251: 7(int) Load 131(index) + 252: 217(ptr) AccessChain 189 191 251 191 + 253: 67(fvec4) Load 252 + 254: 27(fvec3) VectorShuffle 253 253 0 1 2 + Store 247(pos) 254 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 256 256 12 12 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 258 257(vel) 45 + 261: 7(int) Load 131(index) + 262: 217(ptr) AccessChain 189 191 261 224 + 263: 67(fvec4) Load 262 + 264: 27(fvec3) VectorShuffle 263 263 0 1 2 + Store 257(vel) 264 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 266 266 12 12 + 267: 130(ptr) AccessChain 119(id) 12 + 268: 7(int) Load 267 + 270: 155(bool) UGreaterThan 268 12 + SelectionMerge 272 None + BranchConditional 270 271 272 + 271: Label + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 275 275 12 12 + 276: 7(int) Load 131(index) + 277: 7(int) ISub 276 20 + 279: 217(ptr) AccessChain 189 191 277 191 + 280: 67(fvec4) Load 279 + 281: 27(fvec3) VectorShuffle 280 280 0 1 2 + Store 278(param) 281 + 283: 27(fvec3) Load 247(pos) + Store 282(param) 283 + 285: 101(ptr) AccessChain 97(params) 193 + 286: 24(float) Load 285 + Store 284(param) 286 + 287: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 278(param) 282(param) 284(param) + 288: 27(fvec3) Load 234(force) + 289: 27(fvec3) FAdd 288 287 + Store 234(force) 289 + Branch 272 + 272: Label + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 292 292 12 12 + 293: 130(ptr) AccessChain 119(id) 12 + 294: 7(int) Load 293 + 295: 138(ptr) AccessChain 97(params) 137 12 + 296: 69(int) Load 295 + 297: 69(int) ISub 296 224 + 298: 7(int) Bitcast 297 + 300: 155(bool) ULessThan 294 298 + SelectionMerge 302 None + BranchConditional 300 301 302 + 301: Label + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 305 305 12 12 + 306: 7(int) Load 131(index) + 307: 7(int) IAdd 306 20 + 309: 217(ptr) AccessChain 189 191 307 191 + 310: 67(fvec4) Load 309 + 311: 27(fvec3) VectorShuffle 310 310 0 1 2 + Store 308(param) 311 + 313: 27(fvec3) Load 247(pos) + Store 312(param) 313 + 315: 101(ptr) AccessChain 97(params) 193 + 316: 24(float) Load 315 + Store 314(param) 316 + 317: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 308(param) 312(param) 314(param) + 318: 27(fvec3) Load 234(force) + 319: 27(fvec3) FAdd 318 317 + Store 234(force) 319 + Branch 302 + 302: Label + 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 322 322 12 12 + 323: 130(ptr) AccessChain 119(id) 20 + 324: 7(int) Load 323 + 325: 138(ptr) AccessChain 97(params) 137 20 + 326: 69(int) Load 325 + 327: 69(int) ISub 326 224 + 328: 7(int) Bitcast 327 + 330: 155(bool) ULessThan 324 328 + SelectionMerge 332 None + BranchConditional 330 331 332 + 331: Label + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 335 335 12 12 + 336: 7(int) Load 131(index) + 337: 138(ptr) AccessChain 97(params) 137 12 + 338: 69(int) Load 337 + 339: 7(int) Bitcast 338 + 340: 7(int) IAdd 336 339 + 343: 217(ptr) AccessChain 189 191 340 191 + 344: 67(fvec4) Load 343 + 345: 27(fvec3) VectorShuffle 344 344 0 1 2 + Store 342(param) 345 + 347: 27(fvec3) Load 247(pos) + Store 346(param) 347 + 349: 101(ptr) AccessChain 97(params) 341 + 350: 24(float) Load 349 + Store 348(param) 350 + 351: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 342(param) 346(param) 348(param) + 352: 27(fvec3) Load 234(force) + 353: 27(fvec3) FAdd 352 351 + Store 234(force) 353 + Branch 332 + 332: Label + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 356 356 12 12 + 357: 130(ptr) AccessChain 119(id) 20 + 358: 7(int) Load 357 + 360: 155(bool) UGreaterThan 358 12 + SelectionMerge 362 None + BranchConditional 360 361 362 + 361: Label + 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 365 365 12 12 + 366: 7(int) Load 131(index) + 367: 138(ptr) AccessChain 97(params) 137 12 + 368: 69(int) Load 367 + 369: 7(int) Bitcast 368 + 370: 7(int) ISub 366 369 + 372: 217(ptr) AccessChain 189 191 370 191 + 373: 67(fvec4) Load 372 + 374: 27(fvec3) VectorShuffle 373 373 0 1 2 + Store 371(param) 374 + 376: 27(fvec3) Load 247(pos) + Store 375(param) 376 + 378: 101(ptr) AccessChain 97(params) 341 + 379: 24(float) Load 378 + Store 377(param) 379 + 380: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 371(param) 375(param) 377(param) + 381: 27(fvec3) Load 234(force) + 382: 27(fvec3) FAdd 381 380 + Store 234(force) 382 + Branch 362 + 362: Label + 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 385 385 12 12 + 386: 130(ptr) AccessChain 119(id) 12 + 387: 7(int) Load 386 + 389: 155(bool) UGreaterThan 387 12 + SelectionMerge 391 None + BranchConditional 389 390 391 + 390: Label + 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 385 385 12 12 + 394: 130(ptr) AccessChain 119(id) 20 + 395: 7(int) Load 394 + 396: 138(ptr) AccessChain 97(params) 137 20 + 397: 69(int) Load 396 + 398: 69(int) ISub 397 224 + 399: 7(int) Bitcast 398 + 401: 155(bool) ULessThan 395 399 + Branch 391 + 391: Label + 402: 155(bool) Phi 389 362 401 390 + SelectionMerge 404 None + BranchConditional 402 403 404 + 403: Label + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 407 407 12 12 + 408: 7(int) Load 131(index) + 409: 138(ptr) AccessChain 97(params) 137 12 + 410: 69(int) Load 409 + 411: 7(int) Bitcast 410 + 412: 7(int) IAdd 408 411 + 413: 7(int) ISub 412 20 + 416: 217(ptr) AccessChain 189 191 413 191 + 417: 67(fvec4) Load 416 + 418: 27(fvec3) VectorShuffle 417 417 0 1 2 + Store 415(param) 418 + 420: 27(fvec3) Load 247(pos) + Store 419(param) 420 + 422: 101(ptr) AccessChain 97(params) 414 + 423: 24(float) Load 422 + Store 421(param) 423 + 424: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 415(param) 419(param) 421(param) + 425: 27(fvec3) Load 234(force) + 426: 27(fvec3) FAdd 425 424 + Store 234(force) 426 + Branch 404 + 404: Label + 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 429 429 12 12 + 430: 130(ptr) AccessChain 119(id) 12 + 431: 7(int) Load 430 + 433: 155(bool) UGreaterThan 431 12 + SelectionMerge 435 None + BranchConditional 433 434 435 + 434: Label + 436: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 429 429 12 12 + 438: 130(ptr) AccessChain 119(id) 20 + 439: 7(int) Load 438 + 441: 155(bool) UGreaterThan 439 12 + Branch 435 + 435: Label + 442: 155(bool) Phi 433 404 441 434 + SelectionMerge 444 None + BranchConditional 442 443 444 + 443: Label + 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 447 447 12 12 + 448: 7(int) Load 131(index) + 449: 138(ptr) AccessChain 97(params) 137 12 + 450: 69(int) Load 449 + 451: 7(int) Bitcast 450 + 452: 7(int) ISub 448 451 + 453: 7(int) ISub 452 20 + 455: 217(ptr) AccessChain 189 191 453 191 + 456: 67(fvec4) Load 455 + 457: 27(fvec3) VectorShuffle 456 456 0 1 2 + Store 454(param) 457 + 459: 27(fvec3) Load 247(pos) + Store 458(param) 459 + 461: 101(ptr) AccessChain 97(params) 414 + 462: 24(float) Load 461 + Store 460(param) 462 + 463: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 454(param) 458(param) 460(param) + 464: 27(fvec3) Load 234(force) + 465: 27(fvec3) FAdd 464 463 + Store 234(force) 465 + Branch 444 + 444: Label + 466: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 468 468 12 12 + 469: 130(ptr) AccessChain 119(id) 12 + 470: 7(int) Load 469 + 471: 138(ptr) AccessChain 97(params) 137 12 + 472: 69(int) Load 471 + 473: 69(int) ISub 472 224 + 474: 7(int) Bitcast 473 + 476: 155(bool) ULessThan 470 474 + SelectionMerge 478 None + BranchConditional 476 477 478 + 477: Label + 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 468 468 12 12 + 481: 130(ptr) AccessChain 119(id) 20 + 482: 7(int) Load 481 + 483: 138(ptr) AccessChain 97(params) 137 20 + 484: 69(int) Load 483 + 485: 69(int) ISub 484 224 + 486: 7(int) Bitcast 485 + 488: 155(bool) ULessThan 482 486 + Branch 478 + 478: Label + 489: 155(bool) Phi 476 444 488 477 + SelectionMerge 491 None + BranchConditional 489 490 491 + 490: Label + 492: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 494 494 12 12 + 495: 7(int) Load 131(index) + 496: 138(ptr) AccessChain 97(params) 137 12 + 497: 69(int) Load 496 + 498: 7(int) Bitcast 497 + 499: 7(int) IAdd 495 498 + 500: 7(int) IAdd 499 20 + 502: 217(ptr) AccessChain 189 191 500 191 + 503: 67(fvec4) Load 502 + 504: 27(fvec3) VectorShuffle 503 503 0 1 2 + Store 501(param) 504 + 506: 27(fvec3) Load 247(pos) + Store 505(param) 506 + 508: 101(ptr) AccessChain 97(params) 414 + 509: 24(float) Load 508 + Store 507(param) 509 + 510: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 501(param) 505(param) 507(param) + 511: 27(fvec3) Load 234(force) + 512: 27(fvec3) FAdd 511 510 + Store 234(force) 512 + Branch 491 + 491: Label + 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 515 515 12 12 + 516: 130(ptr) AccessChain 119(id) 12 + 517: 7(int) Load 516 + 518: 138(ptr) AccessChain 97(params) 137 12 + 519: 69(int) Load 518 + 520: 69(int) ISub 519 224 + 521: 7(int) Bitcast 520 + 523: 155(bool) ULessThan 517 521 + SelectionMerge 525 None + BranchConditional 523 524 525 + 524: Label + 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 515 515 12 12 + 528: 130(ptr) AccessChain 119(id) 20 + 529: 7(int) Load 528 + 531: 155(bool) UGreaterThan 529 12 + Branch 525 + 525: Label + 532: 155(bool) Phi 523 491 531 524 + SelectionMerge 534 None + BranchConditional 532 533 534 + 533: Label + 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 537 537 12 12 + 538: 7(int) Load 131(index) + 539: 138(ptr) AccessChain 97(params) 137 12 + 540: 69(int) Load 539 + 541: 7(int) Bitcast 540 + 542: 7(int) ISub 538 541 + 543: 7(int) IAdd 542 20 + 545: 217(ptr) AccessChain 189 191 543 191 + 546: 67(fvec4) Load 545 + 547: 27(fvec3) VectorShuffle 546 546 0 1 2 + Store 544(param) 547 + 549: 27(fvec3) Load 247(pos) + Store 548(param) 549 + 551: 101(ptr) AccessChain 97(params) 414 + 552: 24(float) Load 551 + Store 550(param) 552 + 553: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 544(param) 548(param) 550(param) + 554: 27(fvec3) Load 234(force) + 555: 27(fvec3) FAdd 554 553 + Store 234(force) 555 + Branch 534 + 534: Label + 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 558 558 12 12 + 560: 101(ptr) AccessChain 97(params) 559 + 561: 24(float) Load 560 + 562: 24(float) FNegate 561 + 563: 27(fvec3) Load 257(vel) + 564: 27(fvec3) VectorTimesScalar 563 562 + 565: 27(fvec3) Load 234(force) + 566: 27(fvec3) FAdd 565 564 + Store 234(force) 566 + 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 568 568 12 12 + 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 570 569(f) 45 + 573: 27(fvec3) Load 234(force) + 574: 101(ptr) AccessChain 97(params) 224 + 575: 24(float) Load 574 + 576: 24(float) FDiv 196 575 + 577: 27(fvec3) VectorTimesScalar 573 576 + Store 569(f) 577 + 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 579 579 12 12 + 580: 7(int) Load 131(index) + 581: 27(fvec3) Load 247(pos) + 582: 27(fvec3) Load 257(vel) + 583: 101(ptr) AccessChain 97(params) 191 + 584: 24(float) Load 583 + 585: 27(fvec3) VectorTimesScalar 582 584 + 586: 27(fvec3) FAdd 581 585 + 588: 27(fvec3) Load 569(f) + 589: 27(fvec3) VectorTimesScalar 588 587 + 590: 101(ptr) AccessChain 97(params) 191 + 591: 24(float) Load 590 + 592: 27(fvec3) VectorTimesScalar 589 591 + 593: 101(ptr) AccessChain 97(params) 191 + 594: 24(float) Load 593 + 595: 27(fvec3) VectorTimesScalar 592 594 + 596: 27(fvec3) FAdd 586 595 + 597: 24(float) CompositeExtract 596 0 + 598: 24(float) CompositeExtract 596 1 + 599: 24(float) CompositeExtract 596 2 + 600: 67(fvec4) CompositeConstruct 597 598 599 196 + 601: 217(ptr) AccessChain 213 191 580 191 + Store 601 600 + 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 603 603 12 12 + 604: 7(int) Load 131(index) + 605: 27(fvec3) Load 257(vel) + 606: 27(fvec3) Load 569(f) + 607: 101(ptr) AccessChain 97(params) 191 + 608: 24(float) Load 607 + 609: 27(fvec3) VectorTimesScalar 606 608 + 610: 27(fvec3) FAdd 605 609 + 611: 24(float) CompositeExtract 610 0 + 612: 24(float) CompositeExtract 610 1 + 613: 24(float) CompositeExtract 610 2 + 614: 67(fvec4) CompositeConstruct 611 612 613 225 + 615: 217(ptr) AccessChain 213 191 604 224 + Store 615 614 + 616: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 617 617 12 12 + 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 619 618(sphereDist) 45 + 622: 7(int) Load 131(index) + 623: 217(ptr) AccessChain 213 191 622 191 + 624: 67(fvec4) Load 623 + 625: 27(fvec3) VectorShuffle 624 624 0 1 2 + 627: 217(ptr) AccessChain 97(params) 626 + 628: 67(fvec4) Load 627 + 629: 27(fvec3) VectorShuffle 628 628 0 1 2 + 630: 27(fvec3) FSub 625 629 + Store 618(sphereDist) 630 + 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 + 633: 27(fvec3) Load 618(sphereDist) + 634: 24(float) ExtInst 3(GLSL.std.450) 66(Length) 633 + 636: 101(ptr) AccessChain 97(params) 635 + 637: 24(float) Load 636 + 639: 24(float) FAdd 637 638 + 641: 155(bool) FOrdLessThan 634 639 + SelectionMerge 643 None + BranchConditional 641 642 643 + 642: Label + 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 645: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 646 646 12 12 + 647: 7(int) Load 131(index) + 648: 217(ptr) AccessChain 97(params) 626 + 649: 67(fvec4) Load 648 + 650: 27(fvec3) VectorShuffle 649 649 0 1 2 + 651: 27(fvec3) Load 618(sphereDist) + 652: 27(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 651 + 653: 101(ptr) AccessChain 97(params) 635 + 654: 24(float) Load 653 + 655: 24(float) FAdd 654 638 + 656: 27(fvec3) VectorTimesScalar 652 655 + 657: 27(fvec3) FAdd 650 656 + 658: 101(ptr) AccessChain 213 191 647 191 12 + 659: 24(float) CompositeExtract 657 0 + Store 658 659 + 660: 101(ptr) AccessChain 213 191 647 191 20 + 661: 24(float) CompositeExtract 657 1 + Store 660 661 + 662: 101(ptr) AccessChain 213 191 647 191 22 + 663: 24(float) CompositeExtract 657 2 + Store 662 663 + 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 665 665 12 12 + 666: 7(int) Load 131(index) + 667: 217(ptr) AccessChain 213 191 666 224 + Store 667 226 + Branch 643 + 643: Label + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 670 670 12 12 + 682: 681(ptr) AccessChain 678(pushConsts) 191 + 683: 7(int) Load 682 + 685: 155(bool) IEqual 683 20 + SelectionMerge 687 None + BranchConditional 685 686 687 + 686: Label + 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 690 690 12 12 + 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 692 691(normal) 45 + Store 691(normal) 694 + 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 696 696 12 12 + 697: 130(ptr) AccessChain 119(id) 20 + 698: 7(int) Load 697 + 700: 155(bool) UGreaterThan 698 12 + SelectionMerge 702 None + BranchConditional 700 701 702 + 701: Label + 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 705 705 12 12 + 706: 130(ptr) AccessChain 119(id) 12 + 707: 7(int) Load 706 + 709: 155(bool) UGreaterThan 707 12 + SelectionMerge 711 None + BranchConditional 709 710 711 + 710: Label + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 713: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 714 714 12 12 + 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 716 715(a) 45 + 719: 7(int) Load 131(index) + 720: 7(int) ISub 719 20 + 721: 217(ptr) AccessChain 189 191 720 191 + 722: 67(fvec4) Load 721 + 723: 27(fvec3) VectorShuffle 722 722 0 1 2 + 724: 27(fvec3) Load 247(pos) + 725: 27(fvec3) FSub 723 724 + Store 715(a) 725 + 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 727 727 12 12 + 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 729 728(b) 45 + 732: 7(int) Load 131(index) + 733: 138(ptr) AccessChain 97(params) 137 12 + 734: 69(int) Load 733 + 735: 7(int) Bitcast 734 + 736: 7(int) ISub 732 735 + 737: 7(int) ISub 736 20 + 738: 217(ptr) AccessChain 189 191 737 191 + 739: 67(fvec4) Load 738 + 740: 27(fvec3) VectorShuffle 739 739 0 1 2 + 741: 27(fvec3) Load 247(pos) + 742: 27(fvec3) FSub 740 741 + Store 728(b) 742 + 743: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 744 744 12 12 + 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 746 745(c) 45 + 749: 7(int) Load 131(index) + 750: 138(ptr) AccessChain 97(params) 137 12 + 751: 69(int) Load 750 + 752: 7(int) Bitcast 751 + 753: 7(int) ISub 749 752 + 754: 217(ptr) AccessChain 189 191 753 191 + 755: 67(fvec4) Load 754 + 756: 27(fvec3) VectorShuffle 755 755 0 1 2 + 757: 27(fvec3) Load 247(pos) + 758: 27(fvec3) FSub 756 757 + Store 745(c) 758 + 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 760 760 12 12 + 761: 27(fvec3) Load 715(a) + 762: 27(fvec3) Load 728(b) + 763: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 761 762 + 764: 27(fvec3) Load 728(b) + 765: 27(fvec3) Load 745(c) + 766: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 764 765 + 767: 27(fvec3) FAdd 763 766 + 768: 27(fvec3) Load 691(normal) + 769: 27(fvec3) FAdd 768 767 + Store 691(normal) 769 + Branch 711 + 711: Label + 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 771: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 772 772 12 12 + 773: 130(ptr) AccessChain 119(id) 12 + 774: 7(int) Load 773 + 775: 138(ptr) AccessChain 97(params) 137 12 + 776: 69(int) Load 775 + 777: 69(int) ISub 776 224 + 778: 7(int) Bitcast 777 + 780: 155(bool) ULessThan 774 778 + SelectionMerge 782 None + BranchConditional 780 781 782 + 781: Label + 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 784: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 785 785 12 12 + 786: 7(int) Load 131(index) + 787: 138(ptr) AccessChain 97(params) 137 12 + 788: 69(int) Load 787 + 789: 7(int) Bitcast 788 + 790: 7(int) ISub 786 789 + 791: 217(ptr) AccessChain 189 191 790 191 + 792: 67(fvec4) Load 791 + 793: 27(fvec3) VectorShuffle 792 792 0 1 2 + 794: 27(fvec3) Load 247(pos) + 795: 27(fvec3) FSub 793 794 + Store 715(a) 795 + 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 797 797 12 12 + 798: 7(int) Load 131(index) + 799: 138(ptr) AccessChain 97(params) 137 12 + 800: 69(int) Load 799 + 801: 7(int) Bitcast 800 + 802: 7(int) ISub 798 801 + 803: 7(int) IAdd 802 20 + 804: 217(ptr) AccessChain 189 191 803 191 + 805: 67(fvec4) Load 804 + 806: 27(fvec3) VectorShuffle 805 805 0 1 2 + 807: 27(fvec3) Load 247(pos) + 808: 27(fvec3) FSub 806 807 + Store 728(b) 808 + 809: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 810 810 12 12 + 811: 7(int) Load 131(index) + 812: 7(int) IAdd 811 20 + 813: 217(ptr) AccessChain 189 191 812 191 + 814: 67(fvec4) Load 813 + 815: 27(fvec3) VectorShuffle 814 814 0 1 2 + 816: 27(fvec3) Load 247(pos) + 817: 27(fvec3) FSub 815 816 + Store 745(c) 817 + 818: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 819 819 12 12 + 820: 27(fvec3) Load 715(a) + 821: 27(fvec3) Load 728(b) + 822: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 820 821 + 823: 27(fvec3) Load 728(b) + 824: 27(fvec3) Load 745(c) + 825: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 823 824 + 826: 27(fvec3) FAdd 822 825 + 827: 27(fvec3) Load 691(normal) + 828: 27(fvec3) FAdd 827 826 + Store 691(normal) 828 + Branch 782 + 782: Label + Branch 702 + 702: Label + 829: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 831 831 12 12 + 832: 130(ptr) AccessChain 119(id) 20 + 833: 7(int) Load 832 + 834: 138(ptr) AccessChain 97(params) 137 20 + 835: 69(int) Load 834 + 836: 69(int) ISub 835 224 + 837: 7(int) Bitcast 836 + 839: 155(bool) ULessThan 833 837 + SelectionMerge 841 None + BranchConditional 839 840 841 + 840: Label + 842: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 844 844 12 12 + 845: 130(ptr) AccessChain 119(id) 12 + 846: 7(int) Load 845 + 848: 155(bool) UGreaterThan 846 12 + SelectionMerge 850 None + BranchConditional 848 849 850 + 849: Label + 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 852: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 853 853 12 12 + 854: 7(int) Load 131(index) + 855: 138(ptr) AccessChain 97(params) 137 12 + 856: 69(int) Load 855 + 857: 7(int) Bitcast 856 + 858: 7(int) IAdd 854 857 + 859: 217(ptr) AccessChain 189 191 858 191 + 860: 67(fvec4) Load 859 + 861: 27(fvec3) VectorShuffle 860 860 0 1 2 + 862: 27(fvec3) Load 247(pos) + 863: 27(fvec3) FSub 861 862 + Store 715(a) 863 + 864: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 865 865 12 12 + 866: 7(int) Load 131(index) + 867: 138(ptr) AccessChain 97(params) 137 12 + 868: 69(int) Load 867 + 869: 7(int) Bitcast 868 + 870: 7(int) IAdd 866 869 + 871: 7(int) ISub 870 20 + 872: 217(ptr) AccessChain 189 191 871 191 + 873: 67(fvec4) Load 872 + 874: 27(fvec3) VectorShuffle 873 873 0 1 2 + 875: 27(fvec3) Load 247(pos) + 876: 27(fvec3) FSub 874 875 + Store 728(b) 876 + 877: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 878 878 12 12 + 879: 7(int) Load 131(index) + 880: 7(int) ISub 879 20 + 881: 217(ptr) AccessChain 189 191 880 191 + 882: 67(fvec4) Load 881 + 883: 27(fvec3) VectorShuffle 882 882 0 1 2 + 884: 27(fvec3) Load 247(pos) + 885: 27(fvec3) FSub 883 884 + Store 745(c) 885 + 886: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 887 887 12 12 + 888: 27(fvec3) Load 715(a) + 889: 27(fvec3) Load 728(b) + 890: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 888 889 + 891: 27(fvec3) Load 728(b) + 892: 27(fvec3) Load 745(c) + 893: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 891 892 + 894: 27(fvec3) FAdd 890 893 + 895: 27(fvec3) Load 691(normal) + 896: 27(fvec3) FAdd 895 894 + Store 691(normal) 896 + Branch 850 + 850: Label + 897: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 898: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 899 899 12 12 + 900: 130(ptr) AccessChain 119(id) 12 + 901: 7(int) Load 900 + 902: 138(ptr) AccessChain 97(params) 137 12 + 903: 69(int) Load 902 + 904: 69(int) ISub 903 224 + 905: 7(int) Bitcast 904 + 907: 155(bool) ULessThan 901 905 + SelectionMerge 909 None + BranchConditional 907 908 909 + 908: Label + 910: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 911: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 912 912 12 12 + 913: 7(int) Load 131(index) + 914: 7(int) IAdd 913 20 + 915: 217(ptr) AccessChain 189 191 914 191 + 916: 67(fvec4) Load 915 + 917: 27(fvec3) VectorShuffle 916 916 0 1 2 + 918: 27(fvec3) Load 247(pos) + 919: 27(fvec3) FSub 917 918 + Store 715(a) 919 + 920: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 921 921 12 12 + 922: 7(int) Load 131(index) + 923: 138(ptr) AccessChain 97(params) 137 12 + 924: 69(int) Load 923 + 925: 7(int) Bitcast 924 + 926: 7(int) IAdd 922 925 + 927: 7(int) IAdd 926 20 + 928: 217(ptr) AccessChain 189 191 927 191 + 929: 67(fvec4) Load 928 + 930: 27(fvec3) VectorShuffle 929 929 0 1 2 + 931: 27(fvec3) Load 247(pos) + 932: 27(fvec3) FSub 930 931 + Store 728(b) 932 + 933: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 934 934 12 12 + 935: 7(int) Load 131(index) + 936: 138(ptr) AccessChain 97(params) 137 12 + 937: 69(int) Load 936 + 938: 7(int) Bitcast 937 + 939: 7(int) IAdd 935 938 + 940: 217(ptr) AccessChain 189 191 939 191 + 941: 67(fvec4) Load 940 + 942: 27(fvec3) VectorShuffle 941 941 0 1 2 + 943: 27(fvec3) Load 247(pos) + 944: 27(fvec3) FSub 942 943 + Store 745(c) 944 + 945: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 946 946 12 12 + 947: 27(fvec3) Load 715(a) + 948: 27(fvec3) Load 728(b) + 949: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 947 948 + 950: 27(fvec3) Load 728(b) + 951: 27(fvec3) Load 745(c) + 952: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 950 951 + 953: 27(fvec3) FAdd 949 952 + 954: 27(fvec3) Load 691(normal) + 955: 27(fvec3) FAdd 954 953 + Store 691(normal) 955 + Branch 909 + 909: Label + Branch 841 + 841: Label + 956: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 957: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 958 958 12 12 + 959: 7(int) Load 131(index) + 960: 27(fvec3) Load 691(normal) + 961: 27(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 960 + 962: 24(float) CompositeExtract 961 0 + 963: 24(float) CompositeExtract 961 1 + 964: 24(float) CompositeExtract 961 2 + 965: 67(fvec4) CompositeConstruct 962 963 964 225 + 966: 217(ptr) AccessChain 213 191 959 559 + Store 966 965 + Branch 687 + 687: Label Return FunctionEnd -35(springForce(vf3;vf3;f1;): 26(fvec3) Function None 30 - 32(p0): 28(ptr) FunctionParameter - 33(p1): 28(ptr) FunctionParameter - 34(restDist): 29(ptr) FunctionParameter - 38: Label - 52(dist): 28(ptr) Variable Function - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 37 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 32(p0) 44 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 33(p1) 44 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 34(restDist) 44 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 37 35(springForce(vf3;vf3;f1;) - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 53 52(dist) 44 - 57: 26(fvec3) Load 32(p0) - 58: 26(fvec3) Load 33(p1) - 59: 26(fvec3) FSub 57 58 - Store 52(dist) 59 - 60: 26(fvec3) Load 52(dist) - 61: 26(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 60 - 98: 97(ptr) AccessChain 93(params) 96 - 99: 23(float) Load 98 - 100: 26(fvec3) VectorTimesScalar 61 99 - 101: 26(fvec3) Load 52(dist) - 102: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 101 - 103: 23(float) Load 34(restDist) - 104: 23(float) FSub 102 103 - 105: 26(fvec3) VectorTimesScalar 100 104 - ReturnValue 105 + Line 1 66 50 +36(springForce(vf3;vf3;f1;): 27(fvec3) Function None 31 + 33(p0): 29(ptr) FunctionParameter + 34(p1): 29(ptr) FunctionParameter + 35(restDist): 30(ptr) FunctionParameter + 39: Label + 56(dist): 29(ptr) Variable Function + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 38 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 33(p0) 45 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(p1) 45 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 35(restDist) 45 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 38 36(springForce(vf3;vf3;f1;) + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 38 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 55 55 12 12 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 57 56(dist) 45 + 60: 27(fvec3) Load 33(p0) + 61: 27(fvec3) Load 34(p1) + 62: 27(fvec3) FSub 60 61 + Store 56(dist) 62 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 64 64 12 12 + 65: 27(fvec3) Load 56(dist) + 66: 27(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 65 + 102: 101(ptr) AccessChain 97(params) 100 + 103: 24(float) Load 102 + 104: 27(fvec3) VectorTimesScalar 66 103 + 105: 27(fvec3) Load 56(dist) + 106: 24(float) ExtInst 3(GLSL.std.450) 66(Length) 105 + 107: 24(float) Load 35(restDist) + 108: 24(float) FSub 106 107 + 109: 27(fvec3) VectorTimesScalar 104 108 + ReturnValue 109 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 358a3bc7d1..72777c5fcf 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,944 +1,1104 @@ spv.debuginfo.glsl.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 709 +// Id's are bound by 859 Capability Shader Capability ImageQuery Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 13 "main" 405 450 - ExecutionMode 13 OriginUpperLeft - 8: String "uint" - 14: String "main" - 17: String "" - 24: String "float" - 39: String "textureProj" - 45: String "P" - 49: String "layer" - 52: String "offset" - 59: String "filterPCF" - 65: String "sc" - 77: String "shadow" - 83: String "fragcolor" - 86: String "fragpos" - 89: String "int" - 94: String "global_var" - 106: String "shadowCoord" - 128: String "bool" - 142: String "dist" - 147: String "type.2d.image" - 148: String "@type.2d.image" - 152: String "type.sampled.image" - 153: String "@type.sampled.image" - 157: String "samplerShadowMap" - 194: String "texDim" - 205: String "scale" - 211: String "dx" - 223: String "dy" - 234: String "shadowFactor" - 239: String "count" - 244: String "range" - 250: String "x" - 266: String "y" - 312: String "i" - 326: String "shadowClip" - 334: String "color" - 340: String "viewMatrix" - 343: String "Light" - 349: String "lights" - 352: String "debugDisplayTarget" - 356: String "UBO" - 360: String "ubo" - 392: String "fragPos" - 402: String "samplerposition" - 407: String "inUV" - 413: String "normal" - 418: String "samplerNormal" - 425: String "albedo" - 430: String "samplerAlbedo" - 452: String "outFragColor" - 514: String "N" - 533: String "L" - 553: String "V" - 565: String "lightCosInnerAngle" - 571: String "lightCosOuterAngle" - 577: String "lightRange" - 583: String "dir" - 598: String "cosDir" - 606: String "spotEffect" - 615: String "heightAttenuation" - 623: String "NdotL" - 632: String "diff" - 639: String "R" - 648: String "NdotR" - 657: String "spec" - Name 13 "main" - Name 38 "textureProj(vf4;f1;vf2;" - Name 35 "P" - Name 36 "layer" - Name 37 "offset" - Name 58 "filterPCF(vf4;f1;" - Name 56 "sc" - Name 57 "layer" - Name 76 "shadow(vf3;vf3;" - Name 74 "fragcolor" - Name 75 "fragpos" - Name 92 "global_var" - Name 99 "shadow" - Name 104 "shadowCoord" - Name 140 "dist" - Name 155 "samplerShadowMap" - Name 192 "texDim" - Name 203 "scale" - Name 209 "dx" - Name 221 "dy" - Name 232 "shadowFactor" - Name 237 "count" - Name 242 "range" - Name 248 "x" - Name 264 "y" - Name 289 "param" - Name 291 "param" - Name 293 "param" - Name 310 "i" - Name 324 "shadowClip" - Name 332 "Light" - MemberName 332(Light) 0 "position" - MemberName 332(Light) 1 "target" - MemberName 332(Light) 2 "color" - MemberName 332(Light) 3 "viewMatrix" - Name 346 "UBO" - MemberName 346(UBO) 0 "viewPos" - MemberName 346(UBO) 1 "lights" - MemberName 346(UBO) 2 "useShadows" - MemberName 346(UBO) 3 "debugDisplayTarget" - Name 358 "ubo" - Name 371 "shadowFactor" - Name 377 "param" - Name 379 "param" - Name 390 "fragPos" - Name 400 "samplerposition" - Name 405 "inUV" - Name 411 "normal" - Name 416 "samplerNormal" - Name 423 "albedo" - Name 428 "samplerAlbedo" - Name 450 "outFragColor" - Name 455 "param" - Name 456 "param" - Name 504 "fragcolor" - Name 512 "N" - Name 519 "i" - Name 531 "L" - Name 543 "dist" - Name 551 "V" - Name 563 "lightCosInnerAngle" - Name 569 "lightCosOuterAngle" - Name 575 "lightRange" - Name 581 "dir" - Name 596 "cosDir" - Name 604 "spotEffect" - Name 613 "heightAttenuation" - Name 621 "NdotL" - Name 630 "diff" - Name 637 "R" - Name 646 "NdotR" - Name 655 "spec" - Name 699 "param" - Name 701 "param" - Decorate 155(samplerShadowMap) DescriptorSet 0 - Decorate 155(samplerShadowMap) Binding 5 - MemberDecorate 332(Light) 0 Offset 0 - MemberDecorate 332(Light) 1 Offset 16 - MemberDecorate 332(Light) 2 Offset 32 - MemberDecorate 332(Light) 3 ColMajor - MemberDecorate 332(Light) 3 Offset 48 - MemberDecorate 332(Light) 3 MatrixStride 16 - Decorate 344 ArrayStride 112 - MemberDecorate 346(UBO) 0 Offset 0 - MemberDecorate 346(UBO) 1 Offset 16 - MemberDecorate 346(UBO) 2 Offset 352 - MemberDecorate 346(UBO) 3 Offset 356 - Decorate 346(UBO) Block - Decorate 358(ubo) DescriptorSet 0 - Decorate 358(ubo) Binding 4 - Decorate 400(samplerposition) DescriptorSet 0 - Decorate 400(samplerposition) Binding 1 - Decorate 405(inUV) Location 0 - Decorate 416(samplerNormal) DescriptorSet 0 - Decorate 416(samplerNormal) Binding 2 - Decorate 428(samplerAlbedo) DescriptorSet 0 - Decorate 428(samplerAlbedo) Binding 3 - Decorate 450(outFragColor) Location 0 - 3: TypeVoid - 4: TypeFunction 3 - 6: TypeInt 32 0 - 9: 6(int) Constant 32 - 10: 6(int) Constant 6 - 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 - 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 - 19: 6(int) Constant 1 - 20: 6(int) Constant 4 - 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 - 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 - 26: TypeVector 23(float) 4 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 - 28: TypePointer Function 26(fvec4) - 29: TypePointer Function 23(float) - 30: TypeVector 23(float) 2 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 21 - 32: TypePointer Function 30(fvec2) - 33: TypeFunction 23(float) 28(ptr) 29(ptr) 32(ptr) - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 25 27 25 31 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 34 16 11 11 18 39 12 11 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 27 16 11 11 40 20 19 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 25 16 11 11 40 20 21 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 31 16 11 11 40 20 12 - 54: TypeFunction 23(float) 28(ptr) 29(ptr) - 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 25 27 25 - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 59 55 16 11 11 18 59 12 11 - 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 27 16 11 11 60 20 19 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 25 16 11 11 60 20 21 - 69: TypeVector 23(float) 3 - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 - 71: TypePointer Function 69(fvec3) - 72: TypeFunction 69(fvec3) 71(ptr) 71(ptr) - 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 70 70 70 - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 77 73 16 11 11 18 77 12 11 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 70 16 11 11 78 20 19 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 86 70 16 11 11 78 20 21 - 88: TypeInt 32 1 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 89 9 20 11 - 91: TypePointer Private 88(int) - 92(global_var): 91(ptr) Variable Private - 95: 6(int) Constant 41 - 96: 6(int) Constant 8 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 90 16 95 11 18 94 92(global_var) 96 - 97: 88(int) Constant 0 - 101: 6(int) Constant 61 - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 25 16 101 11 40 20 - 103: 23(float) Constant 1065353216 - 107: 6(int) Constant 62 - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 106 27 16 107 11 40 20 - 116: 23(float) Constant 1056964608 - 124: TypeBool - 127: 23(float) Constant 3212836864 - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 143: 6(int) Constant 67 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 25 16 143 11 40 20 - 145: TypeImage 23(float) 2D array sampled format:Unknown - 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 147 11 16 143 11 18 148 149 12 - 150: TypeSampledImage 145 - 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 11 16 143 11 18 153 149 12 - 154: TypePointer UniformConstant 150 -155(samplerShadowMap): 154(ptr) Variable UniformConstant - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 157 151 16 143 11 18 157 155(samplerShadowMap) 96 - 171: 23(float) Constant 0 - 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 184: 23(float) Constant 1048576000 - 189: TypeVector 88(int) 2 - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 90 21 - 191: TypePointer Function 189(ivec2) - 195: 6(int) Constant 78 - 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 194 190 16 195 11 60 20 - 199: TypeVector 88(int) 3 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 90 12 - 206: 6(int) Constant 79 - 204: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 205 25 16 206 11 60 20 - 208: 23(float) Constant 1069547520 - 212: 6(int) Constant 80 - 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 25 16 212 11 60 20 - 216: TypePointer Function 88(int) - 224: 6(int) Constant 81 - 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 25 16 224 11 60 20 - 235: 6(int) Constant 83 - 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 25 16 235 11 60 20 - 240: 6(int) Constant 84 - 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 239 90 16 240 11 60 20 - 245: 6(int) Constant 85 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 90 16 245 11 60 20 - 247: 88(int) Constant 1 - 251: 6(int) Constant 87 - 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 90 16 251 11 60 20 - 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 267: 6(int) Constant 89 - 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 90 16 267 11 60 20 - 278: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 313: 6(int) Constant 100 - 311: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 312 90 16 313 11 78 20 - 321: 88(int) Constant 3 - 322: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 327: 6(int) Constant 102 - 325: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 326 27 16 327 11 78 20 - 329: TypeMatrix 26(fvec4) 4 - 331: 124(bool) ConstantTrue - 330: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 27 20 331 - 332(Light): TypeStruct 26(fvec4) 26(fvec4) 26(fvec4) 329 - 335: 6(int) Constant 47 - 336: 6(int) Constant 7 - 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 - 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 - 338: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 - 341: 6(int) Constant 48 - 339: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 340 330 16 341 336 11 11 12 - 342: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 343 19 16 327 11 18 343 11 12 333 337 338 339 - 344: TypeArray 332(Light) 12 - 345: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 342 12 - 346(UBO): TypeStruct 26(fvec4) 344 88(int) 88(int) - 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 334 27 16 335 336 11 11 12 - 350: 6(int) Constant 54 - 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 349 345 16 350 96 11 11 12 - 353: 6(int) Constant 56 - 351: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 352 90 16 353 10 11 11 12 - 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 352 90 16 353 10 11 11 12 - 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 356 19 16 327 11 18 356 11 12 347 348 351 354 - 357: TypePointer Uniform 346(UBO) - 358(ubo): 357(ptr) Variable Uniform - 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 360 355 16 327 11 18 360 358(ubo) 96 - 362: TypePointer Uniform 329 - 373: 6(int) Constant 106 - 372: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 25 16 373 11 78 20 - 393: 6(int) Constant 119 - 391: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 392 70 16 393 11 15 20 - 395: TypeImage 23(float) 2D sampled format:Unknown - 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 147 11 16 393 11 18 148 149 12 - 397: TypeSampledImage 395 - 398: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 11 16 393 11 18 153 149 12 - 399: TypePointer UniformConstant 397 -400(samplerposition): 399(ptr) Variable UniformConstant - 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 402 398 16 393 11 18 402 400(samplerposition) 96 - 404: TypePointer Input 30(fvec2) - 405(inUV): 404(ptr) Variable Input - 406: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 407 31 16 393 11 18 407 405(inUV) 96 - 414: 6(int) Constant 120 - 412: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 413 70 16 414 11 15 20 -416(samplerNormal): 399(ptr) Variable UniformConstant - 417: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 418 398 16 414 11 18 418 416(samplerNormal) 96 - 426: 6(int) Constant 121 - 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 425 27 16 426 11 15 20 -428(samplerAlbedo): 399(ptr) Variable UniformConstant - 429: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 398 16 426 11 18 430 428(samplerAlbedo) 96 - 434: TypePointer Uniform 88(int) - 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 449: TypePointer Output 26(fvec4) -450(outFragColor): 449(ptr) Variable Output - 453: 6(int) Constant 127 - 451: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 452 27 16 453 11 18 452 450(outFragColor) 96 - 454: 69(fvec3) ConstantComposite 103 103 103 - 459: TypePointer Output 23(float) - 506: 6(int) Constant 147 - 505: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 70 16 506 11 15 20 - 510: 23(float) Constant 1036831949 - 515: 6(int) Constant 149 - 513: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 514 70 16 515 11 15 20 - 521: 6(int) Constant 151 - 520: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 312 90 16 521 11 15 20 - 529: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 534: 6(int) Constant 154 - 532: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 533 70 16 534 11 15 20 - 537: TypePointer Uniform 26(fvec4) - 545: 6(int) Constant 156 - 544: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 25 16 545 11 15 20 - 554: 6(int) Constant 160 - 552: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 553 70 16 554 11 15 20 - 566: 6(int) Constant 163 - 564: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 565 25 16 566 11 15 20 - 568: 23(float) Constant 1064781546 - 572: 6(int) Constant 164 - 570: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 571 25 16 572 11 15 20 - 574: 23(float) Constant 1063781322 - 578: 6(int) Constant 165 - 576: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 577 25 16 578 11 15 20 - 580: 23(float) Constant 1120403456 - 584: 6(int) Constant 168 - 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 583 70 16 584 11 15 20 - 599: 6(int) Constant 171 - 597: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 598 25 16 599 11 15 20 - 607: 6(int) Constant 172 - 605: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 606 25 16 607 11 15 20 - 616: 6(int) Constant 173 - 614: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 615 25 16 616 11 15 20 - 624: 6(int) Constant 176 - 622: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 623 25 16 624 11 15 20 - 633: 6(int) Constant 177 - 631: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 632 70 16 633 11 15 20 - 640: 6(int) Constant 180 - 638: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 639 70 16 640 11 15 20 - 649: 6(int) Constant 181 - 647: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 648 25 16 649 11 15 20 - 658: 6(int) Constant 182 - 656: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 657 70 16 658 11 15 20 - 661: 23(float) Constant 1098907648 - 666: 23(float) Constant 1075838976 - 681: 88(int) Constant 2 - 695: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 9 21 11 - 13(main): 3 Function None 4 - 22: Label - 390(fragPos): 71(ptr) Variable Function - 411(normal): 71(ptr) Variable Function - 423(albedo): 28(ptr) Variable Function - 455(param): 71(ptr) Variable Function - 456(param): 71(ptr) Variable Function - 504(fragcolor): 71(ptr) Variable Function - 512(N): 71(ptr) Variable Function - 519(i): 216(ptr) Variable Function - 531(L): 71(ptr) Variable Function - 543(dist): 29(ptr) Variable Function - 551(V): 71(ptr) Variable Function -563(lightCosInnerAngle): 29(ptr) Variable Function -569(lightCosOuterAngle): 29(ptr) Variable Function - 575(lightRange): 29(ptr) Variable Function - 581(dir): 71(ptr) Variable Function - 596(cosDir): 29(ptr) Variable Function - 604(spotEffect): 29(ptr) Variable Function -613(heightAttenuation): 29(ptr) Variable Function - 621(NdotL): 29(ptr) Variable Function - 630(diff): 71(ptr) Variable Function - 637(R): 71(ptr) Variable Function - 646(NdotR): 29(ptr) Variable Function - 655(spec): 71(ptr) Variable Function - 699(param): 71(ptr) Variable Function - 701(param): 71(ptr) Variable Function - Store 92(global_var) 97 - 389: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 394: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 391 390(fragPos) 47 - 403: 397 Load 400(samplerposition) - 408: 30(fvec2) Load 405(inUV) - 409: 26(fvec4) ImageSampleImplicitLod 403 408 - 410: 69(fvec3) VectorShuffle 409 409 0 1 2 - Store 390(fragPos) 410 - 415: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 412 411(normal) 47 - 419: 397 Load 416(samplerNormal) - 420: 30(fvec2) Load 405(inUV) - 421: 26(fvec4) ImageSampleImplicitLod 419 420 - 422: 69(fvec3) VectorShuffle 421 421 0 1 2 - Store 411(normal) 422 - 427: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 424 423(albedo) 47 - 431: 397 Load 428(samplerAlbedo) - 432: 30(fvec2) Load 405(inUV) - 433: 26(fvec4) ImageSampleImplicitLod 431 432 - Store 423(albedo) 433 - 435: 434(ptr) AccessChain 358(ubo) 321 - 436: 88(int) Load 435 - 438: 124(bool) SGreaterThan 436 97 - SelectionMerge 440 None - BranchConditional 438 439 440 - 439: Label - 441: 434(ptr) AccessChain 358(ubo) 321 - 442: 88(int) Load 441 - SelectionMerge 448 None - Switch 442 448 - case 1: 443 - case 2: 444 - case 3: 445 - case 4: 446 - case 5: 447 - 443: Label - Store 455(param) 454 - 457: 69(fvec3) Load 390(fragPos) - Store 456(param) 457 - 458: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 455(param) 456(param) - 460: 459(ptr) AccessChain 450(outFragColor) 11 - 461: 23(float) CompositeExtract 458 0 - Store 460 461 - 462: 459(ptr) AccessChain 450(outFragColor) 19 - 463: 23(float) CompositeExtract 458 1 - Store 462 463 - 464: 459(ptr) AccessChain 450(outFragColor) 21 - 465: 23(float) CompositeExtract 458 2 - Store 464 465 - Branch 448 - 444: Label - 467: 69(fvec3) Load 390(fragPos) - 468: 459(ptr) AccessChain 450(outFragColor) 11 - 469: 23(float) CompositeExtract 467 0 - Store 468 469 - 470: 459(ptr) AccessChain 450(outFragColor) 19 - 471: 23(float) CompositeExtract 467 1 - Store 470 471 - 472: 459(ptr) AccessChain 450(outFragColor) 21 - 473: 23(float) CompositeExtract 467 2 - Store 472 473 - Branch 448 - 445: Label - 475: 69(fvec3) Load 411(normal) - 476: 459(ptr) AccessChain 450(outFragColor) 11 - 477: 23(float) CompositeExtract 475 0 - Store 476 477 - 478: 459(ptr) AccessChain 450(outFragColor) 19 - 479: 23(float) CompositeExtract 475 1 - Store 478 479 - 480: 459(ptr) AccessChain 450(outFragColor) 21 - 481: 23(float) CompositeExtract 475 2 - Store 480 481 - Branch 448 - 446: Label - 483: 26(fvec4) Load 423(albedo) - 484: 69(fvec3) VectorShuffle 483 483 0 1 2 - 485: 459(ptr) AccessChain 450(outFragColor) 11 - 486: 23(float) CompositeExtract 484 0 - Store 485 486 - 487: 459(ptr) AccessChain 450(outFragColor) 19 - 488: 23(float) CompositeExtract 484 1 - Store 487 488 - 489: 459(ptr) AccessChain 450(outFragColor) 21 - 490: 23(float) CompositeExtract 484 2 - Store 489 490 - Branch 448 - 447: Label - 492: 26(fvec4) Load 423(albedo) - 493: 69(fvec3) VectorShuffle 492 492 3 3 3 - 494: 459(ptr) AccessChain 450(outFragColor) 11 - 495: 23(float) CompositeExtract 493 0 - Store 494 495 - 496: 459(ptr) AccessChain 450(outFragColor) 19 - 497: 23(float) CompositeExtract 493 1 - Store 496 497 - 498: 459(ptr) AccessChain 450(outFragColor) 21 - 499: 23(float) CompositeExtract 493 2 - Store 498 499 - Branch 448 - 448: Label - 502: 459(ptr) AccessChain 450(outFragColor) 12 - Store 502 103 + EntryPoint Fragment 14 "main" 478 533 + ExecutionMode 14 OriginUpperLeft + 1: String "" + 9: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 25: String "float" + 40: String "textureProj" + 46: String "P" + 50: String "layer" + 53: String "offset" + 60: String "filterPCF" + 66: String "sc" + 78: String "shadow" + 84: String "fragcolor" + 87: String "fragpos" + 93: String "int" + 98: String "global_var" + 113: String "shadowCoord" + 138: String "bool" + 157: String "dist" + 161: String "type.2d.image" + 162: String "@type.2d.image" + 166: String "type.sampled.image" + 167: String "@type.sampled.image" + 171: String "samplerShadowMap" + 221: String "texDim" + 233: String "scale" + 240: String "dx" + 253: String "dy" + 265: String "shadowFactor" + 271: String "count" + 277: String "range" + 284: String "x" + 306: String "y" + 370: String "i" + 390: String "shadowClip" + 397: String "color" + 403: String "viewMatrix" + 406: String "Light" + 412: String "lights" + 415: String "debugDisplayTarget" + 419: String "UBO" + 423: String "ubo" + 466: String "fragPos" + 475: String "samplerposition" + 480: String "inUV" + 488: String "normal" + 492: String "samplerNormal" + 501: String "albedo" + 505: String "samplerAlbedo" + 535: String "outFragColor" + 627: String "N" + 653: String "L" + 677: String "V" + 692: String "lightCosInnerAngle" + 699: String "lightCosOuterAngle" + 706: String "lightRange" + 713: String "dir" + 729: String "cosDir" + 738: String "spotEffect" + 748: String "heightAttenuation" + 757: String "NdotL" + 767: String "diff" + 775: String "R" + 785: String "NdotR" + 795: String "spec" + Name 14 "main" + Name 39 "textureProj(vf4;f1;vf2;" + Name 36 "P" + Name 37 "layer" + Name 38 "offset" + Name 59 "filterPCF(vf4;f1;" + Name 57 "sc" + Name 58 "layer" + Name 77 "shadow(vf3;vf3;" + Name 75 "fragcolor" + Name 76 "fragpos" + Name 96 "global_var" + Name 105 "shadow" + Name 111 "shadowCoord" + Name 155 "dist" + Name 169 "samplerShadowMap" + Name 219 "texDim" + Name 231 "scale" + Name 238 "dx" + Name 251 "dy" + Name 263 "shadowFactor" + Name 269 "count" + Name 275 "range" + Name 282 "x" + Name 304 "y" + Name 335 "param" + Name 337 "param" + Name 339 "param" + Name 368 "i" + Name 388 "shadowClip" + Name 395 "Light" + MemberName 395(Light) 0 "position" + MemberName 395(Light) 1 "target" + MemberName 395(Light) 2 "color" + MemberName 395(Light) 3 "viewMatrix" + Name 409 "UBO" + MemberName 409(UBO) 0 "viewPos" + MemberName 409(UBO) 1 "lights" + MemberName 409(UBO) 2 "useShadows" + MemberName 409(UBO) 3 "debugDisplayTarget" + Name 421 "ubo" + Name 436 "shadowFactor" + Name 441 "param" + Name 443 "param" + Name 464 "fragPos" + Name 473 "samplerposition" + Name 478 "inUV" + Name 486 "normal" + Name 490 "samplerNormal" + Name 499 "albedo" + Name 503 "samplerAlbedo" + Name 533 "outFragColor" + Name 537 "param" + Name 538 "param" + Name 616 "fragcolor" + Name 625 "N" + Name 633 "i" + Name 651 "L" + Name 664 "dist" + Name 675 "V" + Name 690 "lightCosInnerAngle" + Name 697 "lightCosOuterAngle" + Name 704 "lightRange" + Name 711 "dir" + Name 727 "cosDir" + Name 736 "spotEffect" + Name 746 "heightAttenuation" + Name 755 "NdotL" + Name 765 "diff" + Name 773 "R" + Name 783 "NdotR" + Name 793 "spec" + Name 846 "param" + Name 848 "param" + Decorate 169(samplerShadowMap) DescriptorSet 0 + Decorate 169(samplerShadowMap) Binding 5 + MemberDecorate 395(Light) 0 Offset 0 + MemberDecorate 395(Light) 1 Offset 16 + MemberDecorate 395(Light) 2 Offset 32 + MemberDecorate 395(Light) 3 ColMajor + MemberDecorate 395(Light) 3 Offset 48 + MemberDecorate 395(Light) 3 MatrixStride 16 + Decorate 407 ArrayStride 112 + MemberDecorate 409(UBO) 0 Offset 0 + MemberDecorate 409(UBO) 1 Offset 16 + MemberDecorate 409(UBO) 2 Offset 352 + MemberDecorate 409(UBO) 3 Offset 356 + Decorate 409(UBO) Block + Decorate 421(ubo) DescriptorSet 0 + Decorate 421(ubo) Binding 4 + Decorate 473(samplerposition) DescriptorSet 0 + Decorate 473(samplerposition) Binding 1 + Decorate 478(inUV) Location 0 + Decorate 490(samplerNormal) DescriptorSet 0 + Decorate 490(samplerNormal) Binding 2 + Decorate 503(samplerAlbedo) DescriptorSet 0 + Decorate 503(samplerAlbedo) Binding 3 + Decorate 533(outFragColor) Location 0 + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 24: TypeFloat 32 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 + 27: TypeVector 24(float) 4 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 + 29: TypePointer Function 27(fvec4) + 30: TypePointer Function 24(float) + 31: TypeVector 24(float) 2 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 22 + 33: TypePointer Function 31(fvec2) + 34: TypeFunction 24(float) 29(ptr) 30(ptr) 33(ptr) + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 26 28 26 32 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 40 35 17 12 12 19 40 13 12 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 28 17 12 12 41 21 20 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 26 17 12 12 41 21 22 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 32 17 12 12 41 21 13 + 55: TypeFunction 24(float) 29(ptr) 30(ptr) + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 26 28 26 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 60 56 17 12 12 19 60 13 12 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 28 17 12 12 61 21 20 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 26 17 12 12 61 21 22 + 70: TypeVector 24(float) 3 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 + 72: TypePointer Function 70(fvec3) + 73: TypeFunction 70(fvec3) 72(ptr) 72(ptr) + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 71 71 71 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 78 74 17 12 12 19 78 13 12 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 71 17 12 12 79 21 20 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 71 17 12 12 79 21 22 + 91: 7(int) Constant 41 + 92: TypeInt 32 1 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 93 10 21 12 + 95: TypePointer Private 92(int) + 96(global_var): 95(ptr) Variable Private + 99: 7(int) Constant 8 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 98 94 17 91 12 19 98 96(global_var) 99 + 100: 92(int) Constant 0 + 104: 7(int) Constant 61 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 26 17 104 12 41 21 + 108: 24(float) Constant 1065353216 + 110: 7(int) Constant 62 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 28 17 110 12 41 21 + 121: 7(int) Constant 63 + 124: 24(float) Constant 1056964608 + 133: 7(int) Constant 65 + 134: TypeBool + 137: 24(float) Constant 3212836864 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 154: 7(int) Constant 67 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 26 17 154 12 41 21 + 159: TypeImage 24(float) 2D array sampled format:Unknown + 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 161 12 17 154 12 19 162 163 13 + 164: TypeSampledImage 159 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 12 17 154 12 19 167 163 13 + 168: TypePointer UniformConstant 164 +169(samplerShadowMap): 168(ptr) Variable UniformConstant + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 171 165 17 154 12 19 171 169(samplerShadowMap) 99 + 184: 7(int) Constant 68 + 187: 24(float) Constant 0 + 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 204: 7(int) Constant 70 + 205: 24(float) Constant 1048576000 + 208: 7(int) Constant 73 + 215: 7(int) Constant 78 + 216: TypeVector 92(int) 2 + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 94 22 + 218: TypePointer Function 216(ivec2) + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 221 217 17 215 12 61 21 + 225: TypeVector 92(int) 3 + 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 94 13 + 230: 7(int) Constant 79 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 233 26 17 230 12 61 21 + 235: 24(float) Constant 1069547520 + 237: 7(int) Constant 80 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 240 26 17 237 12 61 21 + 244: TypePointer Function 92(int) + 250: 7(int) Constant 81 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 253 26 17 250 12 61 21 + 262: 7(int) Constant 83 + 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 26 17 262 12 61 21 + 268: 7(int) Constant 84 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 271 94 17 268 12 61 21 + 274: 7(int) Constant 85 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 277 94 17 274 12 61 21 + 279: 92(int) Constant 1 + 281: 7(int) Constant 87 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 94 17 281 12 61 21 + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 303: 7(int) Constant 89 + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 306 94 17 303 12 61 21 + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 325: 7(int) Constant 91 + 344: 7(int) Constant 92 + 357: 7(int) Constant 96 + 367: 7(int) Constant 100 + 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 370 94 17 367 12 79 21 + 382: 92(int) Constant 3 + 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 387: 7(int) Constant 102 + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 390 28 17 387 12 79 21 + 392: TypeMatrix 27(fvec4) 4 + 394: 134(bool) ConstantTrue + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 28 21 394 + 395(Light): TypeStruct 27(fvec4) 27(fvec4) 27(fvec4) 392 + 398: 7(int) Constant 47 + 399: 7(int) Constant 7 + 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 + 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 + 404: 7(int) Constant 48 + 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 403 393 17 404 399 12 12 13 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 406 20 17 387 12 19 406 12 13 396 400 401 402 + 407: TypeArray 395(Light) 13 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 405 13 + 409(UBO): TypeStruct 27(fvec4) 407 92(int) 92(int) + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 + 413: 7(int) Constant 54 + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 412 408 17 413 99 12 12 13 + 416: 7(int) Constant 56 + 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 94 17 416 11 12 12 13 + 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 94 17 416 11 12 12 13 + 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 419 20 17 387 12 19 419 12 13 410 411 414 417 + 420: TypePointer Uniform 409(UBO) + 421(ubo): 420(ptr) Variable Uniform + 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 423 418 17 387 12 19 423 421(ubo) 99 + 425: TypePointer Uniform 392 + 435: 7(int) Constant 106 + 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 26 17 435 12 79 21 + 446: 7(int) Constant 111 + 456: 7(int) Constant 113 + 463: 7(int) Constant 119 + 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 466 71 17 463 12 16 21 + 468: TypeImage 24(float) 2D sampled format:Unknown + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 161 12 17 463 12 19 162 163 13 + 470: TypeSampledImage 468 + 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 12 17 463 12 19 167 163 13 + 472: TypePointer UniformConstant 470 +473(samplerposition): 472(ptr) Variable UniformConstant + 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 475 471 17 463 12 19 475 473(samplerposition) 99 + 477: TypePointer Input 31(fvec2) + 478(inUV): 477(ptr) Variable Input + 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 480 32 17 463 12 19 480 478(inUV) 99 + 485: 7(int) Constant 120 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 488 71 17 485 12 16 21 +490(samplerNormal): 472(ptr) Variable UniformConstant + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 492 471 17 485 12 19 492 490(samplerNormal) 99 + 498: 7(int) Constant 121 + 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 501 28 17 498 12 16 21 +503(samplerAlbedo): 472(ptr) Variable UniformConstant + 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 505 471 17 498 12 19 505 503(samplerAlbedo) 99 + 510: 7(int) Constant 124 + 511: TypePointer Uniform 92(int) + 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 520: 7(int) Constant 125 + 531: 7(int) Constant 127 + 532: TypePointer Output 27(fvec4) +533(outFragColor): 532(ptr) Variable Output + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 535 28 17 531 12 19 535 533(outFragColor) 99 + 536: 70(fvec3) ConstantComposite 108 108 108 + 541: TypePointer Output 24(float) + 549: 7(int) Constant 128 + 553: 7(int) Constant 130 + 562: 7(int) Constant 131 + 566: 7(int) Constant 133 + 575: 7(int) Constant 134 + 579: 7(int) Constant 136 + 589: 7(int) Constant 137 + 593: 7(int) Constant 139 + 603: 7(int) Constant 140 + 608: 7(int) Constant 142 + 611: 7(int) Constant 143 + 615: 7(int) Constant 147 + 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 71 17 615 12 16 21 + 621: 24(float) Constant 1036831949 + 624: 7(int) Constant 149 + 626: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 627 71 17 624 12 16 21 + 632: 7(int) Constant 151 + 634: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 370 94 17 632 12 16 21 + 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 650: 7(int) Constant 154 + 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 653 71 17 650 12 16 21 + 656: TypePointer Uniform 27(fvec4) + 663: 7(int) Constant 156 + 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 26 17 663 12 16 21 + 670: 7(int) Constant 157 + 674: 7(int) Constant 160 + 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 677 71 17 674 12 16 21 + 685: 7(int) Constant 161 + 689: 7(int) Constant 163 + 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 692 26 17 689 12 16 21 + 694: 24(float) Constant 1064781546 + 696: 7(int) Constant 164 + 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 699 26 17 696 12 16 21 + 701: 24(float) Constant 1063781322 + 703: 7(int) Constant 165 + 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 706 26 17 703 12 16 21 + 708: 24(float) Constant 1120403456 + 710: 7(int) Constant 168 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 71 17 710 12 16 21 + 726: 7(int) Constant 171 + 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 729 26 17 726 12 16 21 + 735: 7(int) Constant 172 + 737: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 738 26 17 735 12 16 21 + 745: 7(int) Constant 173 + 747: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 748 26 17 745 12 16 21 + 754: 7(int) Constant 176 + 756: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 757 26 17 754 12 16 21 + 764: 7(int) Constant 177 + 766: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 767 71 17 764 12 16 21 + 772: 7(int) Constant 180 + 774: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 775 71 17 772 12 16 21 + 782: 7(int) Constant 181 + 784: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 785 26 17 782 12 16 21 + 792: 7(int) Constant 182 + 794: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 795 71 17 792 12 16 21 + 798: 24(float) Constant 1098907648 + 803: 24(float) Constant 1075838976 + 807: 7(int) Constant 184 + 820: 92(int) Constant 2 + 836: 7(int) Constant 188 + 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 + 845: 7(int) Constant 190 + 853: 7(int) Constant 193 + Line 1 116 11 + 14(main): 4 Function None 5 + 23: Label + 464(fragPos): 72(ptr) Variable Function + 486(normal): 72(ptr) Variable Function + 499(albedo): 29(ptr) Variable Function + 537(param): 72(ptr) Variable Function + 538(param): 72(ptr) Variable Function + 616(fragcolor): 72(ptr) Variable Function + 625(N): 72(ptr) Variable Function + 633(i): 244(ptr) Variable Function + 651(L): 72(ptr) Variable Function + 664(dist): 30(ptr) Variable Function + 675(V): 72(ptr) Variable Function +690(lightCosInnerAngle): 30(ptr) Variable Function +697(lightCosOuterAngle): 30(ptr) Variable Function + 704(lightRange): 30(ptr) Variable Function + 711(dir): 72(ptr) Variable Function + 727(cosDir): 30(ptr) Variable Function + 736(spotEffect): 30(ptr) Variable Function +746(heightAttenuation): 30(ptr) Variable Function + 755(NdotL): 30(ptr) Variable Function + 765(diff): 72(ptr) Variable Function + 773(R): 72(ptr) Variable Function + 783(NdotR): 30(ptr) Variable Function + 793(spec): 72(ptr) Variable Function + 846(param): 72(ptr) Variable Function + 848(param): 72(ptr) Variable Function + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 19 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 91 91 12 12 + Store 96(global_var) 100 + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 462: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 463 463 12 12 + 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 465 464(fragPos) 48 + 476: 470 Load 473(samplerposition) + 481: 31(fvec2) Load 478(inUV) + 482: 27(fvec4) ImageSampleImplicitLod 476 481 + 483: 70(fvec3) VectorShuffle 482 482 0 1 2 + Store 464(fragPos) 483 + 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 485 485 12 12 + 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 487 486(normal) 48 + 493: 470 Load 490(samplerNormal) + 494: 31(fvec2) Load 478(inUV) + 495: 27(fvec4) ImageSampleImplicitLod 493 494 + 496: 70(fvec3) VectorShuffle 495 495 0 1 2 + Store 486(normal) 496 + 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 498 498 12 12 + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 500 499(albedo) 48 + 506: 470 Load 503(samplerAlbedo) + 507: 31(fvec2) Load 478(inUV) + 508: 27(fvec4) ImageSampleImplicitLod 506 507 + Store 499(albedo) 508 + 509: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 510 510 12 12 + 512: 511(ptr) AccessChain 421(ubo) 382 + 513: 92(int) Load 512 + 515: 134(bool) SGreaterThan 513 100 + SelectionMerge 517 None + BranchConditional 515 516 517 + 516: Label + 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 520 520 12 12 + 521: 511(ptr) AccessChain 421(ubo) 382 + 522: 92(int) Load 521 + SelectionMerge 528 None + Switch 522 528 + case 1: 523 + case 2: 524 + case 3: 525 + case 4: 526 + case 5: 527 + 523: Label + 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 531 531 12 12 + Store 537(param) 536 + 539: 70(fvec3) Load 464(fragPos) + Store 538(param) 539 + 540: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 537(param) 538(param) + 542: 541(ptr) AccessChain 533(outFragColor) 12 + 543: 24(float) CompositeExtract 540 0 + Store 542 543 + 544: 541(ptr) AccessChain 533(outFragColor) 20 + 545: 24(float) CompositeExtract 540 1 + Store 544 545 + 546: 541(ptr) AccessChain 533(outFragColor) 22 + 547: 24(float) CompositeExtract 540 2 + Store 546 547 + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 549 549 12 12 + Branch 528 + 524: Label + 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 553 553 12 12 + 554: 70(fvec3) Load 464(fragPos) + 555: 541(ptr) AccessChain 533(outFragColor) 12 + 556: 24(float) CompositeExtract 554 0 + Store 555 556 + 557: 541(ptr) AccessChain 533(outFragColor) 20 + 558: 24(float) CompositeExtract 554 1 + Store 557 558 + 559: 541(ptr) AccessChain 533(outFragColor) 22 + 560: 24(float) CompositeExtract 554 2 + Store 559 560 + 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 562 562 12 12 + Branch 528 + 525: Label + 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 565: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 566 566 12 12 + 567: 70(fvec3) Load 486(normal) + 568: 541(ptr) AccessChain 533(outFragColor) 12 + 569: 24(float) CompositeExtract 567 0 + Store 568 569 + 570: 541(ptr) AccessChain 533(outFragColor) 20 + 571: 24(float) CompositeExtract 567 1 + Store 570 571 + 572: 541(ptr) AccessChain 533(outFragColor) 22 + 573: 24(float) CompositeExtract 567 2 + Store 572 573 + 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 575 575 12 12 + Branch 528 + 526: Label + 577: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 579 579 12 12 + 580: 27(fvec4) Load 499(albedo) + 581: 70(fvec3) VectorShuffle 580 580 0 1 2 + 582: 541(ptr) AccessChain 533(outFragColor) 12 + 583: 24(float) CompositeExtract 581 0 + Store 582 583 + 584: 541(ptr) AccessChain 533(outFragColor) 20 + 585: 24(float) CompositeExtract 581 1 + Store 584 585 + 586: 541(ptr) AccessChain 533(outFragColor) 22 + 587: 24(float) CompositeExtract 581 2 + Store 586 587 + 588: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 589 589 12 12 + Branch 528 + 527: Label + 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 593 593 12 12 + 594: 27(fvec4) Load 499(albedo) + 595: 70(fvec3) VectorShuffle 594 594 3 3 3 + 596: 541(ptr) AccessChain 533(outFragColor) 12 + 597: 24(float) CompositeExtract 595 0 + Store 596 597 + 598: 541(ptr) AccessChain 533(outFragColor) 20 + 599: 24(float) CompositeExtract 595 1 + Store 598 599 + 600: 541(ptr) AccessChain 533(outFragColor) 22 + 601: 24(float) CompositeExtract 595 2 + Store 600 601 + 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 603 603 12 12 + Branch 528 + 528: Label + 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 608 608 12 12 + 609: 541(ptr) AccessChain 533(outFragColor) 13 + Store 609 108 + 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 611 611 12 12 Return - 440: Label - 507: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 505 504(fragcolor) 47 - 508: 26(fvec4) Load 423(albedo) - 509: 69(fvec3) VectorShuffle 508 508 0 1 2 - 511: 69(fvec3) VectorTimesScalar 509 510 - Store 504(fragcolor) 511 - 516: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(N) 47 - 517: 69(fvec3) Load 411(normal) - 518: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 517 - Store 512(N) 518 - 522: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 520 519(i) 47 - Store 519(i) 97 - Branch 523 - 523: Label - LoopMerge 525 526 None - Branch 527 - 527: Label - 528: 88(int) Load 519(i) - 530: 124(bool) SLessThan 528 321 - BranchConditional 530 524 525 - 524: Label - 535: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 532 531(L) 47 - 536: 88(int) Load 519(i) - 538: 537(ptr) AccessChain 358(ubo) 247 536 97 - 539: 26(fvec4) Load 538 - 540: 69(fvec3) VectorShuffle 539 539 0 1 2 - 541: 69(fvec3) Load 390(fragPos) - 542: 69(fvec3) FSub 540 541 - Store 531(L) 542 - 546: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 544 543(dist) 47 - 547: 69(fvec3) Load 531(L) - 548: 23(float) ExtInst 2(GLSL.std.450) 66(Length) 547 - Store 543(dist) 548 - 549: 69(fvec3) Load 531(L) - 550: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 549 - Store 531(L) 550 - 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 552 551(V) 47 - 556: 537(ptr) AccessChain 358(ubo) 97 - 557: 26(fvec4) Load 556 - 558: 69(fvec3) VectorShuffle 557 557 0 1 2 - 559: 69(fvec3) Load 390(fragPos) - 560: 69(fvec3) FSub 558 559 - Store 551(V) 560 - 561: 69(fvec3) Load 551(V) - 562: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 561 - Store 551(V) 562 - 567: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 564 563(lightCosInnerAngle) 47 - Store 563(lightCosInnerAngle) 568 - 573: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 570 569(lightCosOuterAngle) 47 - Store 569(lightCosOuterAngle) 574 - 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 576 575(lightRange) 47 - Store 575(lightRange) 580 - 585: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 582 581(dir) 47 - 586: 88(int) Load 519(i) - 587: 537(ptr) AccessChain 358(ubo) 247 586 97 - 588: 26(fvec4) Load 587 - 589: 69(fvec3) VectorShuffle 588 588 0 1 2 - 590: 88(int) Load 519(i) - 591: 537(ptr) AccessChain 358(ubo) 247 590 247 - 592: 26(fvec4) Load 591 - 593: 69(fvec3) VectorShuffle 592 592 0 1 2 - 594: 69(fvec3) FSub 589 593 - 595: 69(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 594 - Store 581(dir) 595 - 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 597 596(cosDir) 47 - 601: 69(fvec3) Load 531(L) - 602: 69(fvec3) Load 581(dir) - 603: 23(float) Dot 601 602 - Store 596(cosDir) 603 - 608: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 605 604(spotEffect) 47 - 609: 23(float) Load 569(lightCosOuterAngle) - 610: 23(float) Load 563(lightCosInnerAngle) - 611: 23(float) Load 596(cosDir) - 612: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 609 610 611 - Store 604(spotEffect) 612 - 617: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 614 613(heightAttenuation) 47 - 618: 23(float) Load 575(lightRange) - 619: 23(float) Load 543(dist) - 620: 23(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 618 171 619 - Store 613(heightAttenuation) 620 - 625: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 622 621(NdotL) 47 - 626: 69(fvec3) Load 512(N) - 627: 69(fvec3) Load 531(L) - 628: 23(float) Dot 626 627 - 629: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 171 628 - Store 621(NdotL) 629 - 634: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 631 630(diff) 47 - 635: 23(float) Load 621(NdotL) - 636: 69(fvec3) CompositeConstruct 635 635 635 - Store 630(diff) 636 - 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 638 637(R) 47 - 642: 69(fvec3) Load 531(L) - 643: 69(fvec3) FNegate 642 - 644: 69(fvec3) Load 512(N) - 645: 69(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 643 644 - Store 637(R) 645 - 650: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 647 646(NdotR) 47 - 651: 69(fvec3) Load 637(R) - 652: 69(fvec3) Load 551(V) - 653: 23(float) Dot 651 652 - 654: 23(float) ExtInst 2(GLSL.std.450) 40(FMax) 171 653 - Store 646(NdotR) 654 - 659: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 656 655(spec) 47 - 660: 23(float) Load 646(NdotR) - 662: 23(float) ExtInst 2(GLSL.std.450) 26(Pow) 660 661 - 663: 29(ptr) AccessChain 423(albedo) 12 - 664: 23(float) Load 663 - 665: 23(float) FMul 662 664 - 667: 23(float) FMul 665 666 - 668: 69(fvec3) CompositeConstruct 667 667 667 - Store 655(spec) 668 - 669: 69(fvec3) Load 630(diff) - 670: 69(fvec3) Load 655(spec) - 671: 69(fvec3) FAdd 669 670 - 672: 23(float) Load 604(spotEffect) - 673: 69(fvec3) VectorTimesScalar 671 672 - 674: 23(float) Load 613(heightAttenuation) - 675: 69(fvec3) VectorTimesScalar 673 674 - 676: 23(float) CompositeExtract 675 0 - 677: 23(float) CompositeExtract 675 1 - 678: 23(float) CompositeExtract 675 2 - 679: 69(fvec3) CompositeConstruct 676 677 678 - 680: 88(int) Load 519(i) - 682: 537(ptr) AccessChain 358(ubo) 247 680 681 - 683: 26(fvec4) Load 682 - 684: 69(fvec3) VectorShuffle 683 683 0 1 2 - 685: 69(fvec3) FMul 679 684 - 686: 26(fvec4) Load 423(albedo) - 687: 69(fvec3) VectorShuffle 686 686 0 1 2 - 688: 69(fvec3) FMul 685 687 - 689: 69(fvec3) Load 504(fragcolor) - 690: 69(fvec3) FAdd 689 688 - Store 504(fragcolor) 690 - Branch 526 - 526: Label - 691: 88(int) Load 519(i) - 692: 88(int) IAdd 691 247 - Store 519(i) 692 - Branch 523 - 525: Label - 693: 434(ptr) AccessChain 358(ubo) 681 - 694: 88(int) Load 693 - 696: 124(bool) SGreaterThan 694 97 - SelectionMerge 698 None - BranchConditional 696 697 698 - 697: Label - 700: 69(fvec3) Load 504(fragcolor) - Store 699(param) 700 - 702: 69(fvec3) Load 390(fragPos) - Store 701(param) 702 - 703: 69(fvec3) FunctionCall 76(shadow(vf3;vf3;) 699(param) 701(param) - Store 504(fragcolor) 703 - Branch 698 - 698: Label - 704: 69(fvec3) Load 504(fragcolor) - 705: 23(float) CompositeExtract 704 0 - 706: 23(float) CompositeExtract 704 1 - 707: 23(float) CompositeExtract 704 2 - 708: 26(fvec4) CompositeConstruct 705 706 707 103 - Store 450(outFragColor) 708 + 517: Label + 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 615 615 12 12 + 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 617 616(fragcolor) 48 + 619: 27(fvec4) Load 499(albedo) + 620: 70(fvec3) VectorShuffle 619 619 0 1 2 + 622: 70(fvec3) VectorTimesScalar 620 621 + Store 616(fragcolor) 622 + 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 624 624 12 12 + 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 626 625(N) 48 + 629: 70(fvec3) Load 486(normal) + 630: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 629 + Store 625(N) 630 + 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 + 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 634 633(i) 48 + Store 633(i) 100 + Branch 636 + 636: Label + 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 + LoopMerge 638 639 None + Branch 642 + 642: Label + 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 + 645: 92(int) Load 633(i) + 647: 134(bool) SLessThan 645 382 + BranchConditional 647 637 638 + 637: Label + 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 649: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 650 650 12 12 + 654: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 652 651(L) 48 + 655: 92(int) Load 633(i) + 657: 656(ptr) AccessChain 421(ubo) 279 655 100 + 658: 27(fvec4) Load 657 + 659: 70(fvec3) VectorShuffle 658 658 0 1 2 + 660: 70(fvec3) Load 464(fragPos) + 661: 70(fvec3) FSub 659 660 + Store 651(L) 661 + 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 663 663 12 12 + 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 665 664(dist) 48 + 667: 70(fvec3) Load 651(L) + 668: 24(float) ExtInst 3(GLSL.std.450) 66(Length) 667 + Store 664(dist) 668 + 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 670 670 12 12 + 671: 70(fvec3) Load 651(L) + 672: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 671 + Store 651(L) 672 + 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 674 674 12 12 + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 676 675(V) 48 + 679: 656(ptr) AccessChain 421(ubo) 100 + 680: 27(fvec4) Load 679 + 681: 70(fvec3) VectorShuffle 680 680 0 1 2 + 682: 70(fvec3) Load 464(fragPos) + 683: 70(fvec3) FSub 681 682 + Store 675(V) 683 + 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 685 685 12 12 + 686: 70(fvec3) Load 675(V) + 687: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 686 + Store 675(V) 687 + 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 689 689 12 12 + 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 691 690(lightCosInnerAngle) 48 + Store 690(lightCosInnerAngle) 694 + 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 696 696 12 12 + 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 698 697(lightCosOuterAngle) 48 + Store 697(lightCosOuterAngle) 701 + 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 703 703 12 12 + 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 705 704(lightRange) 48 + Store 704(lightRange) 708 + 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 710 710 12 12 + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(dir) 48 + 715: 92(int) Load 633(i) + 716: 656(ptr) AccessChain 421(ubo) 279 715 100 + 717: 27(fvec4) Load 716 + 718: 70(fvec3) VectorShuffle 717 717 0 1 2 + 719: 92(int) Load 633(i) + 720: 656(ptr) AccessChain 421(ubo) 279 719 279 + 721: 27(fvec4) Load 720 + 722: 70(fvec3) VectorShuffle 721 721 0 1 2 + 723: 70(fvec3) FSub 718 722 + 724: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 723 + Store 711(dir) 724 + 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 726 726 12 12 + 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 728 727(cosDir) 48 + 731: 70(fvec3) Load 651(L) + 732: 70(fvec3) Load 711(dir) + 733: 24(float) Dot 731 732 + Store 727(cosDir) 733 + 734: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 735 735 12 12 + 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 737 736(spotEffect) 48 + 740: 24(float) Load 697(lightCosOuterAngle) + 741: 24(float) Load 690(lightCosInnerAngle) + 742: 24(float) Load 727(cosDir) + 743: 24(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 740 741 742 + Store 736(spotEffect) 743 + 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 745 745 12 12 + 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 747 746(heightAttenuation) 48 + 750: 24(float) Load 704(lightRange) + 751: 24(float) Load 664(dist) + 752: 24(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 750 187 751 + Store 746(heightAttenuation) 752 + 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 754 754 12 12 + 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 756 755(NdotL) 48 + 759: 70(fvec3) Load 625(N) + 760: 70(fvec3) Load 651(L) + 761: 24(float) Dot 759 760 + 762: 24(float) ExtInst 3(GLSL.std.450) 40(FMax) 187 761 + Store 755(NdotL) 762 + 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 764 764 12 12 + 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 766 765(diff) 48 + 769: 24(float) Load 755(NdotL) + 770: 70(fvec3) CompositeConstruct 769 769 769 + Store 765(diff) 770 + 771: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 772 772 12 12 + 776: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 774 773(R) 48 + 777: 70(fvec3) Load 651(L) + 778: 70(fvec3) FNegate 777 + 779: 70(fvec3) Load 625(N) + 780: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 778 779 + Store 773(R) 780 + 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 782 782 12 12 + 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 784 783(NdotR) 48 + 787: 70(fvec3) Load 773(R) + 788: 70(fvec3) Load 675(V) + 789: 24(float) Dot 787 788 + 790: 24(float) ExtInst 3(GLSL.std.450) 40(FMax) 187 789 + Store 783(NdotR) 790 + 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 792 792 12 12 + 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 794 793(spec) 48 + 797: 24(float) Load 783(NdotR) + 799: 24(float) ExtInst 3(GLSL.std.450) 26(Pow) 797 798 + 800: 30(ptr) AccessChain 499(albedo) 13 + 801: 24(float) Load 800 + 802: 24(float) FMul 799 801 + 804: 24(float) FMul 802 803 + 805: 70(fvec3) CompositeConstruct 804 804 804 + Store 793(spec) 805 + 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 807 807 12 12 + 808: 70(fvec3) Load 765(diff) + 809: 70(fvec3) Load 793(spec) + 810: 70(fvec3) FAdd 808 809 + 811: 24(float) Load 736(spotEffect) + 812: 70(fvec3) VectorTimesScalar 810 811 + 813: 24(float) Load 746(heightAttenuation) + 814: 70(fvec3) VectorTimesScalar 812 813 + 815: 24(float) CompositeExtract 814 0 + 816: 24(float) CompositeExtract 814 1 + 817: 24(float) CompositeExtract 814 2 + 818: 70(fvec3) CompositeConstruct 815 816 817 + 819: 92(int) Load 633(i) + 821: 656(ptr) AccessChain 421(ubo) 279 819 820 + 822: 27(fvec4) Load 821 + 823: 70(fvec3) VectorShuffle 822 822 0 1 2 + 824: 70(fvec3) FMul 818 823 + 825: 27(fvec4) Load 499(albedo) + 826: 70(fvec3) VectorShuffle 825 825 0 1 2 + 827: 70(fvec3) FMul 824 826 + 828: 70(fvec3) Load 616(fragcolor) + 829: 70(fvec3) FAdd 828 827 + Store 616(fragcolor) 829 + Branch 639 + 639: Label + 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 + 832: 92(int) Load 633(i) + 833: 92(int) IAdd 832 279 + Store 633(i) 833 + Branch 636 + 638: Label + 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 835: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 836 836 12 12 + 837: 511(ptr) AccessChain 421(ubo) 820 + 838: 92(int) Load 837 + 840: 134(bool) SGreaterThan 838 100 + SelectionMerge 842 None + BranchConditional 840 841 842 + 841: Label + 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 845 845 12 12 + 847: 70(fvec3) Load 616(fragcolor) + Store 846(param) 847 + 849: 70(fvec3) Load 464(fragPos) + Store 848(param) 849 + 850: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 846(param) 848(param) + Store 616(fragcolor) 850 + Branch 842 + 842: Label + 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 852: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 853 853 12 12 + 854: 70(fvec3) Load 616(fragcolor) + 855: 24(float) CompositeExtract 854 0 + 856: 24(float) CompositeExtract 854 1 + 857: 24(float) CompositeExtract 854 2 + 858: 27(fvec4) CompositeConstruct 855 856 857 108 + Store 533(outFragColor) 858 Return FunctionEnd -38(textureProj(vf4;f1;vf2;): 23(float) Function None 33 - 35(P): 28(ptr) FunctionParameter - 36(layer): 29(ptr) FunctionParameter - 37(offset): 32(ptr) FunctionParameter - 41: Label - 99(shadow): 29(ptr) Variable Function -104(shadowCoord): 28(ptr) Variable Function - 140(dist): 29(ptr) Variable Function - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 35(P) 47 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 36(layer) 47 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 37(offset) 47 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 38(textureProj(vf4;f1;vf2;) - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 99(shadow) 47 - Store 99(shadow) 103 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 105 104(shadowCoord) 47 - 109: 26(fvec4) Load 35(P) - 110: 29(ptr) AccessChain 35(P) 12 - 111: 23(float) Load 110 - 112: 26(fvec4) CompositeConstruct 111 111 111 111 - 113: 26(fvec4) FDiv 109 112 - Store 104(shadowCoord) 113 - 114: 26(fvec4) Load 104(shadowCoord) - 115: 30(fvec2) VectorShuffle 114 114 0 1 - 117: 30(fvec2) VectorTimesScalar 115 116 - 118: 30(fvec2) CompositeConstruct 116 116 - 119: 30(fvec2) FAdd 117 118 - 120: 29(ptr) AccessChain 104(shadowCoord) 11 - 121: 23(float) CompositeExtract 119 0 - Store 120 121 - 122: 29(ptr) AccessChain 104(shadowCoord) 19 - 123: 23(float) CompositeExtract 119 1 - Store 122 123 - 125: 29(ptr) AccessChain 104(shadowCoord) 21 - 126: 23(float) Load 125 - 130: 124(bool) FOrdGreaterThan 126 127 - SelectionMerge 132 None - BranchConditional 130 131 132 - 131: Label - 133: 29(ptr) AccessChain 104(shadowCoord) 21 - 134: 23(float) Load 133 - 136: 124(bool) FOrdLessThan 134 103 - Branch 132 - 132: Label - 137: 124(bool) Phi 130 41 136 131 - SelectionMerge 139 None - BranchConditional 137 138 139 - 138: Label - 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(dist) 47 - 158: 150 Load 155(samplerShadowMap) - 159: 26(fvec4) Load 104(shadowCoord) - 160: 30(fvec2) VectorShuffle 159 159 0 1 - 161: 30(fvec2) Load 37(offset) - 162: 30(fvec2) FAdd 160 161 - 163: 23(float) Load 36(layer) - 164: 23(float) CompositeExtract 162 0 - 165: 23(float) CompositeExtract 162 1 - 166: 69(fvec3) CompositeConstruct 164 165 163 - 167: 26(fvec4) ImageSampleImplicitLod 158 166 - 168: 23(float) CompositeExtract 167 0 - Store 140(dist) 168 - 169: 29(ptr) AccessChain 104(shadowCoord) 12 - 170: 23(float) Load 169 - 173: 124(bool) FOrdGreaterThan 170 171 - SelectionMerge 175 None - BranchConditional 173 174 175 - 174: Label - 176: 23(float) Load 140(dist) - 177: 29(ptr) AccessChain 104(shadowCoord) 21 - 178: 23(float) Load 177 - 180: 124(bool) FOrdLessThan 176 178 - Branch 175 - 175: Label - 181: 124(bool) Phi 173 138 180 174 - SelectionMerge 183 None - BranchConditional 181 182 183 - 182: Label - Store 99(shadow) 184 - Branch 183 - 183: Label - Branch 139 - 139: Label - 185: 23(float) Load 99(shadow) - ReturnValue 185 + Line 1 59 51 +39(textureProj(vf4;f1;vf2;): 24(float) Function None 34 + 36(P): 29(ptr) FunctionParameter + 37(layer): 30(ptr) FunctionParameter + 38(offset): 33(ptr) FunctionParameter + 42: Label + 105(shadow): 30(ptr) Variable Function +111(shadowCoord): 29(ptr) Variable Function + 155(dist): 30(ptr) Variable Function + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 36(P) 48 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 37(layer) 48 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 38(offset) 48 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 41 39(textureProj(vf4;f1;vf2;) + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 104 104 12 12 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 106 105(shadow) 48 + Store 105(shadow) 108 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 110 110 12 12 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 112 111(shadowCoord) 48 + 115: 27(fvec4) Load 36(P) + 116: 30(ptr) AccessChain 36(P) 13 + 117: 24(float) Load 116 + 118: 27(fvec4) CompositeConstruct 117 117 117 117 + 119: 27(fvec4) FDiv 115 118 + Store 111(shadowCoord) 119 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 121 121 12 12 + 122: 27(fvec4) Load 111(shadowCoord) + 123: 31(fvec2) VectorShuffle 122 122 0 1 + 125: 31(fvec2) VectorTimesScalar 123 124 + 126: 31(fvec2) CompositeConstruct 124 124 + 127: 31(fvec2) FAdd 125 126 + 128: 30(ptr) AccessChain 111(shadowCoord) 12 + 129: 24(float) CompositeExtract 127 0 + Store 128 129 + 130: 30(ptr) AccessChain 111(shadowCoord) 20 + 131: 24(float) CompositeExtract 127 1 + Store 130 131 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 133 133 12 12 + 135: 30(ptr) AccessChain 111(shadowCoord) 22 + 136: 24(float) Load 135 + 140: 134(bool) FOrdGreaterThan 136 137 + SelectionMerge 142 None + BranchConditional 140 141 142 + 141: Label + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 133 133 12 12 + 145: 30(ptr) AccessChain 111(shadowCoord) 22 + 146: 24(float) Load 145 + 148: 134(bool) FOrdLessThan 146 108 + Branch 142 + 142: Label + 149: 134(bool) Phi 140 42 148 141 + SelectionMerge 151 None + BranchConditional 149 150 151 + 150: Label + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 154 154 12 12 + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 156 155(dist) 48 + 172: 164 Load 169(samplerShadowMap) + 173: 27(fvec4) Load 111(shadowCoord) + 174: 31(fvec2) VectorShuffle 173 173 0 1 + 175: 31(fvec2) Load 38(offset) + 176: 31(fvec2) FAdd 174 175 + 177: 24(float) Load 37(layer) + 178: 24(float) CompositeExtract 176 0 + 179: 24(float) CompositeExtract 176 1 + 180: 70(fvec3) CompositeConstruct 178 179 177 + 181: 27(fvec4) ImageSampleImplicitLod 172 180 + 182: 24(float) CompositeExtract 181 0 + Store 155(dist) 182 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 184 184 12 12 + 185: 30(ptr) AccessChain 111(shadowCoord) 13 + 186: 24(float) Load 185 + 189: 134(bool) FOrdGreaterThan 186 187 + SelectionMerge 191 None + BranchConditional 189 190 191 + 190: Label + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 184 184 12 12 + 194: 24(float) Load 155(dist) + 195: 30(ptr) AccessChain 111(shadowCoord) 22 + 196: 24(float) Load 195 + 198: 134(bool) FOrdLessThan 194 196 + Branch 191 + 191: Label + 199: 134(bool) Phi 189 150 198 190 + SelectionMerge 201 None + BranchConditional 199 200 201 + 200: Label + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 204 204 12 12 + Store 105(shadow) 205 + Branch 201 + 201: Label + Branch 151 + 151: Label + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 208 208 12 12 + 209: 24(float) Load 105(shadow) + ReturnValue 209 FunctionEnd -58(filterPCF(vf4;f1;): 23(float) Function None 54 - 56(sc): 28(ptr) FunctionParameter - 57(layer): 29(ptr) FunctionParameter - 61: Label - 192(texDim): 191(ptr) Variable Function - 203(scale): 29(ptr) Variable Function - 209(dx): 29(ptr) Variable Function - 221(dy): 29(ptr) Variable Function -232(shadowFactor): 29(ptr) Variable Function - 237(count): 216(ptr) Variable Function - 242(range): 216(ptr) Variable Function - 248(x): 216(ptr) Variable Function - 264(y): 216(ptr) Variable Function - 289(param): 28(ptr) Variable Function - 291(param): 29(ptr) Variable Function - 293(param): 32(ptr) Variable Function - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 56(sc) 47 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 57(layer) 47 - 188: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 60 58(filterPCF(vf4;f1;) - 196: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 193 192(texDim) 47 - 197: 150 Load 155(samplerShadowMap) - 198: 145 Image 197 - 201: 199(ivec3) ImageQuerySizeLod 198 97 - 202: 189(ivec2) VectorShuffle 201 201 0 1 - Store 192(texDim) 202 - 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 204 203(scale) 47 - Store 203(scale) 208 - 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(dx) 47 - 214: 23(float) Load 203(scale) - 215: 23(float) FMul 214 103 - 217: 216(ptr) AccessChain 192(texDim) 11 - 218: 88(int) Load 217 - 219: 23(float) ConvertSToF 218 - 220: 23(float) FDiv 215 219 - Store 209(dx) 220 - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(dy) 47 - 226: 23(float) Load 203(scale) - 227: 23(float) FMul 226 103 - 228: 216(ptr) AccessChain 192(texDim) 19 - 229: 88(int) Load 228 - 230: 23(float) ConvertSToF 229 - 231: 23(float) FDiv 227 230 - Store 221(dy) 231 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(shadowFactor) 47 - Store 232(shadowFactor) 171 - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 238 237(count) 47 - Store 237(count) 97 - 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(range) 47 - Store 242(range) 247 - 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(x) 47 - 253: 88(int) Load 242(range) - 254: 88(int) SNegate 253 - Store 248(x) 254 - Branch 255 - 255: Label - LoopMerge 257 258 None - Branch 259 - 259: Label - 260: 88(int) Load 248(x) - 261: 88(int) Load 242(range) - 263: 124(bool) SLessThanEqual 260 261 - BranchConditional 263 256 257 - 256: Label - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(y) 47 - 269: 88(int) Load 242(range) - 270: 88(int) SNegate 269 - Store 264(y) 270 - Branch 271 - 271: Label - LoopMerge 273 274 None - Branch 275 - 275: Label - 276: 88(int) Load 264(y) - 277: 88(int) Load 242(range) - 279: 124(bool) SLessThanEqual 276 277 - BranchConditional 279 272 273 - 272: Label - 280: 23(float) Load 209(dx) - 281: 88(int) Load 248(x) - 282: 23(float) ConvertSToF 281 - 283: 23(float) FMul 280 282 - 284: 23(float) Load 221(dy) - 285: 88(int) Load 264(y) - 286: 23(float) ConvertSToF 285 - 287: 23(float) FMul 284 286 - 288: 30(fvec2) CompositeConstruct 283 287 - 290: 26(fvec4) Load 56(sc) - Store 289(param) 290 - 292: 23(float) Load 57(layer) - Store 291(param) 292 - Store 293(param) 288 - 294: 23(float) FunctionCall 38(textureProj(vf4;f1;vf2;) 289(param) 291(param) 293(param) - 295: 23(float) Load 232(shadowFactor) - 296: 23(float) FAdd 295 294 - Store 232(shadowFactor) 296 - 297: 88(int) Load 237(count) - 298: 88(int) IAdd 297 247 - Store 237(count) 298 - Branch 274 - 274: Label - 299: 88(int) Load 264(y) - 300: 88(int) IAdd 299 247 - Store 264(y) 300 - Branch 271 - 273: Label - Branch 258 - 258: Label - 301: 88(int) Load 248(x) - 302: 88(int) IAdd 301 247 - Store 248(x) 302 - Branch 255 - 257: Label - 303: 23(float) Load 232(shadowFactor) - 304: 88(int) Load 237(count) - 305: 23(float) ConvertSToF 304 - 306: 23(float) FDiv 303 305 - ReturnValue 306 - FunctionEnd -76(shadow(vf3;vf3;): 69(fvec3) Function None 72 - 74(fragcolor): 71(ptr) FunctionParameter - 75(fragpos): 71(ptr) FunctionParameter - 79: Label - 310(i): 216(ptr) Variable Function - 324(shadowClip): 28(ptr) Variable Function -371(shadowFactor): 29(ptr) Variable Function - 377(param): 28(ptr) Variable Function - 379(param): 29(ptr) Variable Function - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 - 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 74(fragcolor) 47 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 75(fragpos) 47 - 309: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 78 76(shadow(vf3;vf3;) - 314: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 311 310(i) 47 - Store 310(i) 97 - Branch 315 - 315: Label - LoopMerge 317 318 None - Branch 319 - 319: Label - 320: 88(int) Load 310(i) - 323: 124(bool) SLessThan 320 321 - BranchConditional 323 316 317 + Line 1 76 37 +59(filterPCF(vf4;f1;): 24(float) Function None 55 + 57(sc): 29(ptr) FunctionParameter + 58(layer): 30(ptr) FunctionParameter + 62: Label + 219(texDim): 218(ptr) Variable Function + 231(scale): 30(ptr) Variable Function + 238(dx): 30(ptr) Variable Function + 251(dy): 30(ptr) Variable Function +263(shadowFactor): 30(ptr) Variable Function + 269(count): 244(ptr) Variable Function + 275(range): 244(ptr) Variable Function + 282(x): 244(ptr) Variable Function + 304(y): 244(ptr) Variable Function + 335(param): 29(ptr) Variable Function + 337(param): 30(ptr) Variable Function + 339(param): 33(ptr) Variable Function + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 57(sc) 48 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 58(layer) 48 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 59(filterPCF(vf4;f1;) + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 215 215 12 12 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 220 219(texDim) 48 + 223: 164 Load 169(samplerShadowMap) + 224: 159 Image 223 + 227: 225(ivec3) ImageQuerySizeLod 224 100 + 228: 216(ivec2) VectorShuffle 227 227 0 1 + Store 219(texDim) 228 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 230 230 12 12 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 232 231(scale) 48 + Store 231(scale) 235 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 237 237 12 12 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 239 238(dx) 48 + 242: 24(float) Load 231(scale) + 243: 24(float) FMul 242 108 + 245: 244(ptr) AccessChain 219(texDim) 12 + 246: 92(int) Load 245 + 247: 24(float) ConvertSToF 246 + 248: 24(float) FDiv 243 247 + Store 238(dx) 248 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 250 250 12 12 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 252 251(dy) 48 + 255: 24(float) Load 231(scale) + 256: 24(float) FMul 255 108 + 257: 244(ptr) AccessChain 219(texDim) 20 + 258: 92(int) Load 257 + 259: 24(float) ConvertSToF 258 + 260: 24(float) FDiv 256 259 + Store 251(dy) 260 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 262 262 12 12 + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 264 263(shadowFactor) 48 + Store 263(shadowFactor) 187 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 268 268 12 12 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 270 269(count) 48 + Store 269(count) 100 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 274 274 12 12 + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 276 275(range) 48 + Store 275(range) 279 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(x) 48 + 286: 92(int) Load 275(range) + 287: 92(int) SNegate 286 + Store 282(x) 287 + Branch 288 + 288: Label + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 + LoopMerge 290 291 None + Branch 294 + 294: Label + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 + 297: 92(int) Load 282(x) + 298: 92(int) Load 275(range) + 300: 134(bool) SLessThanEqual 297 298 + BranchConditional 300 289 290 + 289: Label + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 305 304(y) 48 + 308: 92(int) Load 275(range) + 309: 92(int) SNegate 308 + Store 304(y) 309 + Branch 310 + 310: Label + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 + LoopMerge 312 313 None + Branch 316 316: Label - 328: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 325 324(shadowClip) 47 - 361: 88(int) Load 310(i) - 363: 362(ptr) AccessChain 358(ubo) 247 361 321 - 364: 329 Load 363 - 365: 69(fvec3) Load 75(fragpos) - 366: 23(float) CompositeExtract 365 0 - 367: 23(float) CompositeExtract 365 1 - 368: 23(float) CompositeExtract 365 2 - 369: 26(fvec4) CompositeConstruct 366 367 368 103 - 370: 26(fvec4) MatrixTimesVector 364 369 - Store 324(shadowClip) 370 - 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 372 371(shadowFactor) 47 - 375: 88(int) Load 310(i) - 376: 23(float) ConvertSToF 375 - 378: 26(fvec4) Load 324(shadowClip) - Store 377(param) 378 - Store 379(param) 376 - 380: 23(float) FunctionCall 58(filterPCF(vf4;f1;) 377(param) 379(param) - Store 371(shadowFactor) 380 - 381: 23(float) Load 371(shadowFactor) - 382: 69(fvec3) Load 74(fragcolor) - 383: 69(fvec3) VectorTimesScalar 382 381 - Store 74(fragcolor) 383 - Branch 318 - 318: Label - 384: 88(int) Load 310(i) - 385: 88(int) IAdd 384 247 - Store 310(i) 385 - Branch 315 - 317: Label - 386: 69(fvec3) Load 74(fragcolor) - ReturnValue 386 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 + 319: 92(int) Load 304(y) + 320: 92(int) Load 275(range) + 322: 134(bool) SLessThanEqual 319 320 + BranchConditional 322 311 312 + 311: Label + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 325 325 12 12 + 326: 24(float) Load 238(dx) + 327: 92(int) Load 282(x) + 328: 24(float) ConvertSToF 327 + 329: 24(float) FMul 326 328 + 330: 24(float) Load 251(dy) + 331: 92(int) Load 304(y) + 332: 24(float) ConvertSToF 331 + 333: 24(float) FMul 330 332 + 334: 31(fvec2) CompositeConstruct 329 333 + 336: 27(fvec4) Load 57(sc) + Store 335(param) 336 + 338: 24(float) Load 58(layer) + Store 337(param) 338 + Store 339(param) 334 + 340: 24(float) FunctionCall 39(textureProj(vf4;f1;vf2;) 335(param) 337(param) 339(param) + 341: 24(float) Load 263(shadowFactor) + 342: 24(float) FAdd 341 340 + Store 263(shadowFactor) 342 + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 344 344 12 12 + 345: 92(int) Load 269(count) + 346: 92(int) IAdd 345 279 + Store 269(count) 346 + Branch 313 + 313: Label + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 + 349: 92(int) Load 304(y) + 350: 92(int) IAdd 349 279 + Store 304(y) 350 + Branch 310 + 312: Label + Branch 291 + 291: Label + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 + 353: 92(int) Load 282(x) + 354: 92(int) IAdd 353 279 + Store 282(x) 354 + Branch 288 + 290: Label + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 357 357 12 12 + 358: 24(float) Load 263(shadowFactor) + 359: 92(int) Load 269(count) + 360: 24(float) ConvertSToF 359 + 361: 24(float) FDiv 358 360 + ReturnValue 361 + FunctionEnd + Line 1 99 41 +77(shadow(vf3;vf3;): 70(fvec3) Function None 73 + 75(fragcolor): 72(ptr) FunctionParameter + 76(fragpos): 72(ptr) FunctionParameter + 80: Label + 368(i): 244(ptr) Variable Function + 388(shadowClip): 29(ptr) Variable Function +436(shadowFactor): 30(ptr) Variable Function + 441(param): 29(ptr) Variable Function + 443(param): 30(ptr) Variable Function + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 83 75(fragcolor) 48 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 76(fragpos) 48 + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 79 77(shadow(vf3;vf3;) + 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 + 366: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 369 368(i) 48 + Store 368(i) 100 + Branch 372 + 372: Label + 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 + 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 + LoopMerge 374 375 None + Branch 378 + 378: Label + 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 + 381: 92(int) Load 368(i) + 384: 134(bool) SLessThan 381 382 + BranchConditional 384 373 374 + 373: Label + 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 + 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 387 387 12 12 + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 389 388(shadowClip) 48 + 424: 92(int) Load 368(i) + 426: 425(ptr) AccessChain 421(ubo) 279 424 382 + 427: 392 Load 426 + 428: 70(fvec3) Load 76(fragpos) + 429: 24(float) CompositeExtract 428 0 + 430: 24(float) CompositeExtract 428 1 + 431: 24(float) CompositeExtract 428 2 + 432: 27(fvec4) CompositeConstruct 429 430 431 108 + 433: 27(fvec4) MatrixTimesVector 427 432 + Store 388(shadowClip) 433 + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 435 435 12 12 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 437 436(shadowFactor) 48 + 439: 92(int) Load 368(i) + 440: 24(float) ConvertSToF 439 + 442: 27(fvec4) Load 388(shadowClip) + Store 441(param) 442 + Store 443(param) 440 + 444: 24(float) FunctionCall 59(filterPCF(vf4;f1;) 441(param) 443(param) + Store 436(shadowFactor) 444 + 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 446 446 12 12 + 447: 24(float) Load 436(shadowFactor) + 448: 70(fvec3) Load 75(fragcolor) + 449: 70(fvec3) VectorTimesScalar 448 447 + Store 75(fragcolor) 449 + Branch 375 + 375: Label + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 + 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 + 452: 92(int) Load 368(i) + 453: 92(int) IAdd 452 279 + Store 368(i) 453 + Branch 372 + 374: Label + 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 + 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 456 456 12 12 + 457: 70(fvec3) Load 75(fragcolor) + ReturnValue 457 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index e3ffd38ec5..58edd36868 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -1,332 +1,364 @@ spv.debuginfo.glsl.geom -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 231 +// Id's are bound by 256 Capability Geometry Capability MultiViewport Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 13 "main" 52 85 104 112 116 146 181 189 206 216 221 225 - ExecutionMode 13 Triangles - ExecutionMode 13 Invocations 2 - ExecutionMode 13 OutputTriangleStrip - ExecutionMode 13 OutputVertices 3 - 8: String "uint" - 14: String "main" - 17: String "" - 25: String "int" - 30: String "i" - 43: String "bool" - 47: String "float" - 54: String "outNormal" - 68: String "projection" - 72: String "modelview" - 75: String "lightPos" - 78: String "UBO" - 82: String "ubo" - 87: String "gl_InvocationID" - 106: String "inNormal" - 114: String "outColor" - 118: String "inColor" - 125: String "pos" - 132: String "gl_Position" - 135: String "gl_PointSize" - 138: String "gl_CullDistance" - 142: String "gl_PerVertex" - 148: String "gl_in" - 155: String "worldPos" - 166: String "lPos" - 183: String "outLightVec" - 191: String "outViewVec" - 218: String "gl_ViewportIndex" - 223: String "gl_PrimitiveID" - 227: String "gl_PrimitiveIDIn" + EntryPoint Geometry 14 "main" 62 94 113 123 126 157 196 205 222 234 240 243 + ExecutionMode 14 Triangles + ExecutionMode 14 Invocations 2 + ExecutionMode 14 OutputTriangleStrip + ExecutionMode 14 OutputVertices 3 + 1: String "" + 9: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 29: String "int" + 34: String "i" + 50: String "bool" + 57: String "float" + 64: String "outNormal" + 77: String "projection" + 81: String "modelview" + 84: String "lightPos" + 87: String "UBO" + 91: String "ubo" + 96: String "gl_InvocationID" + 115: String "inNormal" + 125: String "outColor" + 128: String "inColor" + 137: String "pos" + 143: String "gl_Position" + 146: String "gl_PointSize" + 149: String "gl_CullDistance" + 153: String "gl_PerVertex" + 159: String "gl_in" + 168: String "worldPos" + 180: String "lPos" + 198: String "outLightVec" + 207: String "outViewVec" + 236: String "gl_ViewportIndex" + 242: String "gl_PrimitiveID" + 245: String "gl_PrimitiveIDIn" SourceExtension "GL_ARB_viewport_array" - Name 13 "main" - Name 28 "i" - Name 52 "outNormal" - Name 66 "UBO" - MemberName 66(UBO) 0 "projection" - MemberName 66(UBO) 1 "modelview" - MemberName 66(UBO) 2 "lightPos" - Name 80 "ubo" - Name 85 "gl_InvocationID" - Name 104 "inNormal" - Name 112 "outColor" - Name 116 "inColor" - Name 123 "pos" - Name 130 "gl_PerVertex" - MemberName 130(gl_PerVertex) 0 "gl_Position" - MemberName 130(gl_PerVertex) 1 "gl_PointSize" - MemberName 130(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 130(gl_PerVertex) 3 "gl_CullDistance" - Name 146 "gl_in" - Name 153 "worldPos" - Name 164 "lPos" - Name 181 "outLightVec" - Name 189 "outViewVec" - Name 196 "gl_PerVertex" - MemberName 196(gl_PerVertex) 0 "gl_Position" - MemberName 196(gl_PerVertex) 1 "gl_PointSize" - MemberName 196(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 196(gl_PerVertex) 3 "gl_CullDistance" - Name 206 "" - Name 216 "gl_ViewportIndex" - Name 221 "gl_PrimitiveID" - Name 225 "gl_PrimitiveIDIn" - Decorate 52(outNormal) Location 0 - Decorate 62 ArrayStride 64 - Decorate 64 ArrayStride 64 - MemberDecorate 66(UBO) 0 ColMajor - MemberDecorate 66(UBO) 0 Offset 0 - MemberDecorate 66(UBO) 0 MatrixStride 16 - MemberDecorate 66(UBO) 1 ColMajor - MemberDecorate 66(UBO) 1 Offset 128 - MemberDecorate 66(UBO) 1 MatrixStride 16 - MemberDecorate 66(UBO) 2 Offset 256 - Decorate 66(UBO) Block - Decorate 80(ubo) DescriptorSet 0 - Decorate 80(ubo) Binding 0 - Decorate 85(gl_InvocationID) BuiltIn InvocationId - Decorate 104(inNormal) Location 0 - Decorate 112(outColor) Location 1 - Decorate 116(inColor) Location 1 - MemberDecorate 130(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 130(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 130(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 130(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 130(gl_PerVertex) Block - Decorate 181(outLightVec) Location 3 - Decorate 189(outViewVec) Location 2 - MemberDecorate 196(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 196(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 196(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 196(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 196(gl_PerVertex) Block - Decorate 216(gl_ViewportIndex) BuiltIn ViewportIndex - Decorate 221(gl_PrimitiveID) BuiltIn PrimitiveId - Decorate 225(gl_PrimitiveIDIn) BuiltIn PrimitiveId - 3: TypeVoid - 4: TypeFunction 3 - 6: TypeInt 32 0 - 9: 6(int) Constant 32 - 10: 6(int) Constant 6 - 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 - 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 - 19: 6(int) Constant 1 - 20: 6(int) Constant 4 - 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 - 24: TypeInt 32 1 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 9 20 11 - 27: TypePointer Function 24(int) - 31: 6(int) Constant 49 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 30 26 16 31 11 15 20 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 34: 24(int) Constant 0 - 41: 24(int) Constant 3 - 42: TypeBool - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 43 9 21 11 - 46: TypeFloat 32 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 12 11 - 49: TypeVector 46(float) 3 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 48 12 - 51: TypePointer Output 49(fvec3) - 52(outNormal): 51(ptr) Variable Output - 55: 6(int) Constant 51 - 56: 6(int) Constant 8 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 54 50 16 55 11 18 54 52(outNormal) 56 - 57: TypeVector 46(float) 4 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 48 20 - 59: TypeMatrix 57(fvec4) 4 - 61: 42(bool) ConstantTrue - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 58 20 61 - 62: TypeArray 59 21 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 60 21 - 64: TypeArray 59 21 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 60 21 - 66(UBO): TypeStruct 62 64 57(fvec4) - 69: 6(int) Constant 34 - 70: 6(int) Constant 7 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 63 16 69 70 11 11 12 - 73: 6(int) Constant 35 - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 65 16 73 70 11 11 12 - 76: 6(int) Constant 36 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 75 58 16 76 70 11 11 12 - 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 78 19 16 55 11 18 78 11 12 67 71 74 - 79: TypePointer Uniform 66(UBO) - 80(ubo): 79(ptr) Variable Uniform - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 82 77 16 55 11 18 82 80(ubo) 56 - 83: 24(int) Constant 1 - 84: TypePointer Input 24(int) -85(gl_InvocationID): 84(ptr) Variable Input - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 87 26 16 55 11 18 87 85(gl_InvocationID) 56 - 89: TypePointer Uniform 59 - 92: TypeMatrix 49(fvec3) 3 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 50 12 61 - 101: TypeArray 49(fvec3) 12 - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 50 12 - 103: TypePointer Input 101 - 104(inNormal): 103(ptr) Variable Input - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 106 102 16 55 11 18 106 104(inNormal) 56 - 108: TypePointer Input 49(fvec3) - 112(outColor): 51(ptr) Variable Output - 115: 6(int) Constant 52 - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 50 16 115 11 18 114 112(outColor) 56 - 116(inColor): 103(ptr) Variable Input - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 118 102 16 115 11 18 118 116(inColor) 56 - 122: TypePointer Function 57(fvec4) - 126: 6(int) Constant 54 - 124: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 58 16 126 11 15 20 - 128: TypeArray 46(float) 19 - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 48 19 -130(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128 - 133: 6(int) Constant 23 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 132 58 16 21 133 11 11 12 - 136: 6(int) Constant 41 - 134: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 135 48 16 21 136 11 11 12 - 139: 6(int) Constant 84 - 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 21 139 11 11 12 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 21 139 11 11 12 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 19 16 126 11 18 142 11 12 131 134 137 140 - 143: TypeArray 130(gl_PerVertex) 12 - 144: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 141 12 - 145: TypePointer Input 143 - 146(gl_in): 145(ptr) Variable Input - 147: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 148 144 16 126 11 18 148 146(gl_in) 56 - 150: TypePointer Input 57(fvec4) - 156: 6(int) Constant 55 - 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 58 16 156 11 15 20 - 163: TypePointer Function 49(fvec3) - 167: 6(int) Constant 57 - 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 50 16 167 11 15 20 - 172: 24(int) Constant 2 - 173: TypePointer Uniform 57(fvec4) -181(outLightVec): 51(ptr) Variable Output - 184: 6(int) Constant 58 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 183 50 16 184 11 18 183 181(outLightVec) 56 - 189(outViewVec): 51(ptr) Variable Output - 192: 6(int) Constant 59 - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 191 50 16 192 11 18 191 189(outViewVec) 56 -196(gl_PerVertex): TypeStruct 57(fvec4) 46(float) 128 128 - 198: 6(int) Constant 215 - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 132 58 16 21 198 11 11 12 - 200: 6(int) Constant 233 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 135 48 16 21 200 11 11 12 - 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 12 70 11 11 12 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 129 16 12 70 11 11 12 - 204: 6(int) Constant 61 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 19 16 204 11 18 142 11 12 197 199 201 202 - 205: TypePointer Output 196(gl_PerVertex) - 206: 205(ptr) Variable Output - 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 203 16 204 11 18 17 206 56 - 213: TypePointer Output 57(fvec4) - 215: TypePointer Output 24(int) -216(gl_ViewportIndex): 215(ptr) Variable Output - 219: 6(int) Constant 64 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 218 26 16 219 11 18 218 216(gl_ViewportIndex) 56 -221(gl_PrimitiveID): 215(ptr) Variable Output - 224: 6(int) Constant 65 - 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 223 26 16 224 11 18 223 221(gl_PrimitiveID) 56 -225(gl_PrimitiveIDIn): 84(ptr) Variable Input - 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 227 26 16 224 11 18 227 225(gl_PrimitiveIDIn) 56 - 13(main): 3 Function None 4 - 22: Label - 28(i): 27(ptr) Variable Function - 123(pos): 122(ptr) Variable Function - 153(worldPos): 122(ptr) Variable Function - 164(lPos): 163(ptr) Variable Function - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 32: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 29 28(i) 33 - Store 28(i) 34 - Branch 35 - 35: Label - LoopMerge 37 38 None - Branch 39 - 39: Label - 40: 24(int) Load 28(i) - 45: 42(bool) SLessThan 40 41 - BranchConditional 45 36 37 - 36: Label - 88: 24(int) Load 85(gl_InvocationID) - 90: 89(ptr) AccessChain 80(ubo) 83 88 - 91: 59 Load 90 - 94: 57(fvec4) CompositeExtract 91 0 - 95: 49(fvec3) VectorShuffle 94 94 0 1 2 - 96: 57(fvec4) CompositeExtract 91 1 - 97: 49(fvec3) VectorShuffle 96 96 0 1 2 - 98: 57(fvec4) CompositeExtract 91 2 - 99: 49(fvec3) VectorShuffle 98 98 0 1 2 - 100: 92 CompositeConstruct 95 97 99 - 107: 24(int) Load 28(i) - 109: 108(ptr) AccessChain 104(inNormal) 107 - 110: 49(fvec3) Load 109 - 111: 49(fvec3) MatrixTimesVector 100 110 - Store 52(outNormal) 111 - 119: 24(int) Load 28(i) - 120: 108(ptr) AccessChain 116(inColor) 119 - 121: 49(fvec3) Load 120 - Store 112(outColor) 121 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(pos) 33 - 149: 24(int) Load 28(i) - 151: 150(ptr) AccessChain 146(gl_in) 149 34 - 152: 57(fvec4) Load 151 - Store 123(pos) 152 - 157: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 154 153(worldPos) 33 - 158: 24(int) Load 85(gl_InvocationID) - 159: 89(ptr) AccessChain 80(ubo) 83 158 - 160: 59 Load 159 - 161: 57(fvec4) Load 123(pos) - 162: 57(fvec4) MatrixTimesVector 160 161 - Store 153(worldPos) 162 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 165 164(lPos) 33 - 169: 24(int) Load 85(gl_InvocationID) - 170: 89(ptr) AccessChain 80(ubo) 83 169 - 171: 59 Load 170 - 174: 173(ptr) AccessChain 80(ubo) 172 - 175: 57(fvec4) Load 174 - 176: 57(fvec4) MatrixTimesVector 171 175 - 177: 46(float) CompositeExtract 176 0 - 178: 46(float) CompositeExtract 176 1 - 179: 46(float) CompositeExtract 176 2 - 180: 49(fvec3) CompositeConstruct 177 178 179 - Store 164(lPos) 180 - 185: 49(fvec3) Load 164(lPos) - 186: 57(fvec4) Load 153(worldPos) - 187: 49(fvec3) VectorShuffle 186 186 0 1 2 - 188: 49(fvec3) FSub 185 187 - Store 181(outLightVec) 188 - 193: 57(fvec4) Load 153(worldPos) - 194: 49(fvec3) VectorShuffle 193 193 0 1 2 - 195: 49(fvec3) FNegate 194 - Store 189(outViewVec) 195 - 208: 24(int) Load 85(gl_InvocationID) - 209: 89(ptr) AccessChain 80(ubo) 34 208 - 210: 59 Load 209 - 211: 57(fvec4) Load 153(worldPos) - 212: 57(fvec4) MatrixTimesVector 210 211 - 214: 213(ptr) AccessChain 206 34 - Store 214 212 - 220: 24(int) Load 85(gl_InvocationID) - Store 216(gl_ViewportIndex) 220 - 228: 24(int) Load 225(gl_PrimitiveIDIn) - Store 221(gl_PrimitiveID) 228 + Name 14 "main" + Name 32 "i" + Name 62 "outNormal" + Name 75 "UBO" + MemberName 75(UBO) 0 "projection" + MemberName 75(UBO) 1 "modelview" + MemberName 75(UBO) 2 "lightPos" + Name 89 "ubo" + Name 94 "gl_InvocationID" + Name 113 "inNormal" + Name 123 "outColor" + Name 126 "inColor" + Name 135 "pos" + Name 141 "gl_PerVertex" + MemberName 141(gl_PerVertex) 0 "gl_Position" + MemberName 141(gl_PerVertex) 1 "gl_PointSize" + MemberName 141(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 141(gl_PerVertex) 3 "gl_CullDistance" + Name 157 "gl_in" + Name 166 "worldPos" + Name 178 "lPos" + Name 196 "outLightVec" + Name 205 "outViewVec" + Name 213 "gl_PerVertex" + MemberName 213(gl_PerVertex) 0 "gl_Position" + MemberName 213(gl_PerVertex) 1 "gl_PointSize" + MemberName 213(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 213(gl_PerVertex) 3 "gl_CullDistance" + Name 222 "" + Name 234 "gl_ViewportIndex" + Name 240 "gl_PrimitiveID" + Name 243 "gl_PrimitiveIDIn" + Decorate 62(outNormal) Location 0 + Decorate 71 ArrayStride 64 + Decorate 73 ArrayStride 64 + MemberDecorate 75(UBO) 0 ColMajor + MemberDecorate 75(UBO) 0 Offset 0 + MemberDecorate 75(UBO) 0 MatrixStride 16 + MemberDecorate 75(UBO) 1 ColMajor + MemberDecorate 75(UBO) 1 Offset 128 + MemberDecorate 75(UBO) 1 MatrixStride 16 + MemberDecorate 75(UBO) 2 Offset 256 + Decorate 75(UBO) Block + Decorate 89(ubo) DescriptorSet 0 + Decorate 89(ubo) Binding 0 + Decorate 94(gl_InvocationID) BuiltIn InvocationId + Decorate 113(inNormal) Location 0 + Decorate 123(outColor) Location 1 + Decorate 126(inColor) Location 1 + MemberDecorate 141(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 141(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 141(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 141(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 141(gl_PerVertex) Block + Decorate 196(outLightVec) Location 3 + Decorate 205(outViewVec) Location 2 + MemberDecorate 213(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 213(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 213(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 213(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 213(gl_PerVertex) Block + Decorate 234(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 240(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 243(gl_PrimitiveIDIn) BuiltIn PrimitiveId + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 27: 7(int) Constant 49 + 28: TypeInt 32 1 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 21 12 + 31: TypePointer Function 28(int) + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 34 30 17 27 12 16 21 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 37: 28(int) Constant 0 + 48: 28(int) Constant 3 + 49: TypeBool + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 10 22 12 + 55: 7(int) Constant 51 + 56: TypeFloat 32 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 13 12 + 59: TypeVector 56(float) 3 + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 58 13 + 61: TypePointer Output 59(fvec3) + 62(outNormal): 61(ptr) Variable Output + 65: 7(int) Constant 8 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 64 60 17 55 12 19 64 62(outNormal) 65 + 66: TypeVector 56(float) 4 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 58 21 + 68: TypeMatrix 66(fvec4) 4 + 70: 49(bool) ConstantTrue + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 67 21 70 + 71: TypeArray 68 22 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 69 22 + 73: TypeArray 68 22 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 69 22 + 75(UBO): TypeStruct 71 73 66(fvec4) + 78: 7(int) Constant 34 + 79: 7(int) Constant 7 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 77 72 17 78 79 12 12 13 + 82: 7(int) Constant 35 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 74 17 82 79 12 12 13 + 85: 7(int) Constant 36 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 67 17 85 79 12 12 13 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 87 20 17 55 12 19 87 12 13 76 80 83 + 88: TypePointer Uniform 75(UBO) + 89(ubo): 88(ptr) Variable Uniform + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 91 86 17 55 12 19 91 89(ubo) 65 + 92: 28(int) Constant 1 + 93: TypePointer Input 28(int) +94(gl_InvocationID): 93(ptr) Variable Input + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 30 17 55 12 19 96 94(gl_InvocationID) 65 + 98: TypePointer Uniform 68 + 101: TypeMatrix 59(fvec3) 3 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 60 13 70 + 110: TypeArray 59(fvec3) 13 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 60 13 + 112: TypePointer Input 110 + 113(inNormal): 112(ptr) Variable Input + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 115 111 17 55 12 19 115 113(inNormal) 65 + 117: TypePointer Input 59(fvec3) + 122: 7(int) Constant 52 + 123(outColor): 61(ptr) Variable Output + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 60 17 122 12 19 125 123(outColor) 65 + 126(inColor): 112(ptr) Variable Input + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 128 111 17 122 12 19 128 126(inColor) 65 + 133: 7(int) Constant 54 + 134: TypePointer Function 66(fvec4) + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 137 67 17 133 12 16 21 + 139: TypeArray 56(float) 20 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 58 20 +141(gl_PerVertex): TypeStruct 66(fvec4) 56(float) 139 139 + 144: 7(int) Constant 23 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 143 67 17 22 144 12 12 13 + 147: 7(int) Constant 41 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 58 17 22 147 12 12 13 + 150: 7(int) Constant 84 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 22 150 12 12 13 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 22 150 12 12 13 + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 20 17 133 12 19 153 12 13 142 145 148 151 + 154: TypeArray 141(gl_PerVertex) 13 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 152 13 + 156: TypePointer Input 154 + 157(gl_in): 156(ptr) Variable Input + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 159 155 17 133 12 19 159 157(gl_in) 65 + 161: TypePointer Input 66(fvec4) + 165: 7(int) Constant 55 + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 168 67 17 165 12 16 21 + 176: 7(int) Constant 57 + 177: TypePointer Function 59(fvec3) + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 60 17 176 12 16 21 + 185: 28(int) Constant 2 + 186: TypePointer Uniform 66(fvec4) + 195: 7(int) Constant 58 +196(outLightVec): 61(ptr) Variable Output + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 198 60 17 195 12 19 198 196(outLightVec) 65 + 204: 7(int) Constant 59 + 205(outViewVec): 61(ptr) Variable Output + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 207 60 17 204 12 19 207 205(outViewVec) 65 + 212: 7(int) Constant 61 +213(gl_PerVertex): TypeStruct 66(fvec4) 56(float) 139 139 + 215: 7(int) Constant 215 + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 143 67 17 22 215 12 12 13 + 217: 7(int) Constant 233 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 58 17 22 217 12 12 13 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 13 79 12 12 13 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 13 79 12 12 13 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 20 17 212 12 19 153 12 13 214 216 218 219 + 221: TypePointer Output 213(gl_PerVertex) + 222: 221(ptr) Variable Output + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 220 17 212 12 19 1 222 65 + 229: TypePointer Output 66(fvec4) + 232: 7(int) Constant 64 + 233: TypePointer Output 28(int) +234(gl_ViewportIndex): 233(ptr) Variable Output + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 30 17 232 12 19 236 234(gl_ViewportIndex) 65 + 239: 7(int) Constant 65 +240(gl_PrimitiveID): 233(ptr) Variable Output + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 242 30 17 239 12 19 242 240(gl_PrimitiveID) 65 +243(gl_PrimitiveIDIn): 93(ptr) Variable Input + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 245 30 17 239 12 19 245 243(gl_PrimitiveIDIn) 65 + 248: 7(int) Constant 66 + 255: 7(int) Constant 68 + Line 1 47 15 + 14(main): 4 Function None 5 + 23: Label + 32(i): 31(ptr) Variable Function + 135(pos): 134(ptr) Variable Function + 166(worldPos): 134(ptr) Variable Function + 178(lPos): 177(ptr) Variable Function + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 33 32(i) 36 + Store 32(i) 37 + Branch 38 + 38: Label + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + LoopMerge 40 41 None + Branch 44 + 44: Label + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + 47: 28(int) Load 32(i) + 52: 49(bool) SLessThan 47 48 + BranchConditional 52 39 40 + 39: Label + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 55 55 12 12 + 97: 28(int) Load 94(gl_InvocationID) + 99: 98(ptr) AccessChain 89(ubo) 92 97 + 100: 68 Load 99 + 103: 66(fvec4) CompositeExtract 100 0 + 104: 59(fvec3) VectorShuffle 103 103 0 1 2 + 105: 66(fvec4) CompositeExtract 100 1 + 106: 59(fvec3) VectorShuffle 105 105 0 1 2 + 107: 66(fvec4) CompositeExtract 100 2 + 108: 59(fvec3) VectorShuffle 107 107 0 1 2 + 109: 101 CompositeConstruct 104 106 108 + 116: 28(int) Load 32(i) + 118: 117(ptr) AccessChain 113(inNormal) 116 + 119: 59(fvec3) Load 118 + 120: 59(fvec3) MatrixTimesVector 109 119 + Store 62(outNormal) 120 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 122 122 12 12 + 129: 28(int) Load 32(i) + 130: 117(ptr) AccessChain 126(inColor) 129 + 131: 59(fvec3) Load 130 + Store 123(outColor) 131 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 133 133 12 12 + 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 135(pos) 36 + 160: 28(int) Load 32(i) + 162: 161(ptr) AccessChain 157(gl_in) 160 37 + 163: 66(fvec4) Load 162 + Store 135(pos) 163 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 165 165 12 12 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 167 166(worldPos) 36 + 170: 28(int) Load 94(gl_InvocationID) + 171: 98(ptr) AccessChain 89(ubo) 92 170 + 172: 68 Load 171 + 173: 66(fvec4) Load 135(pos) + 174: 66(fvec4) MatrixTimesVector 172 173 + Store 166(worldPos) 174 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 176 176 12 12 + 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 179 178(lPos) 36 + 182: 28(int) Load 94(gl_InvocationID) + 183: 98(ptr) AccessChain 89(ubo) 92 182 + 184: 68 Load 183 + 187: 186(ptr) AccessChain 89(ubo) 185 + 188: 66(fvec4) Load 187 + 189: 66(fvec4) MatrixTimesVector 184 188 + 190: 56(float) CompositeExtract 189 0 + 191: 56(float) CompositeExtract 189 1 + 192: 56(float) CompositeExtract 189 2 + 193: 59(fvec3) CompositeConstruct 190 191 192 + Store 178(lPos) 193 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 195 195 12 12 + 199: 59(fvec3) Load 178(lPos) + 200: 66(fvec4) Load 166(worldPos) + 201: 59(fvec3) VectorShuffle 200 200 0 1 2 + 202: 59(fvec3) FSub 199 201 + Store 196(outLightVec) 202 + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 204 204 12 12 + 208: 66(fvec4) Load 166(worldPos) + 209: 59(fvec3) VectorShuffle 208 208 0 1 2 + 210: 59(fvec3) FNegate 209 + Store 205(outViewVec) 210 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 212 212 12 12 + 224: 28(int) Load 94(gl_InvocationID) + 225: 98(ptr) AccessChain 89(ubo) 37 224 + 226: 68 Load 225 + 227: 66(fvec4) Load 166(worldPos) + 228: 66(fvec4) MatrixTimesVector 226 227 + 230: 229(ptr) AccessChain 222 37 + Store 230 228 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 232 232 12 12 + 237: 28(int) Load 94(gl_InvocationID) + Store 234(gl_ViewportIndex) 237 + 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 239 239 12 12 + 246: 28(int) Load 243(gl_PrimitiveIDIn) + Store 240(gl_PrimitiveID) 246 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 248 248 12 12 EmitVertex + Branch 41 + 41: Label + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + 251: 28(int) Load 32(i) + 252: 28(int) IAdd 251 92 + Store 32(i) 252 Branch 38 - 38: Label - 229: 24(int) Load 28(i) - 230: 24(int) IAdd 229 83 - Store 28(i) 230 - Branch 35 - 37: Label + 40: Label + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 255 255 12 12 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index c0cddfdc63..f3e7d20e20 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -1,619 +1,713 @@ spv.debuginfo.glsl.tesc -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 457 +// Id's are bound by 542 Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 13 "main" 230 234 259 325 335 415 427 435 447 - ExecutionMode 13 OutputVertices 4 - 8: String "uint" - 14: String "main" - 17: String "" - 24: String "float" - 34: String "screenSpaceTessFactor" - 40: String "p0" - 44: String "p1" - 47: String "bool" - 52: String "frustumCheck" - 58: String "midPoint" - 69: String "radius" - 79: String "v0" - 91: String "modelview" - 96: String "lightPos" - 99: String "frustumPlanes" - 101: String "tessellatedEdgeSize" - 106: String "viewportDim" - 110: String "UBO" - 114: String "ubo" - 116: String "int" - 126: String "clip0" - 146: String "clip1" - 209: String "pos" - 216: String "gl_Position" - 219: String "gl_PointSize" - 222: String "gl_CullDistance" - 226: String "gl_PerVertex" - 232: String "gl_in" - 236: String "gl_InvocationID" - 243: String "type.2d.image" - 245: String "@type.2d.image" - 249: String "type.sampled.image" - 250: String "@type.sampled.image" - 254: String "samplerHeight" - 261: String "inUV" - 278: String "i" - 327: String "gl_TessLevelInner" - 337: String "gl_TessLevelOuter" - 417: String "gl_out" - 429: String "outNormal" - 437: String "inNormal" - 449: String "outUV" - Name 13 "main" - Name 33 "screenSpaceTessFactor(vf4;vf4;" - Name 31 "p0" - Name 32 "p1" - Name 51 "frustumCheck(" - Name 56 "midPoint" - Name 67 "radius" - Name 77 "v0" - Name 89 "UBO" - MemberName 89(UBO) 0 "projection" - MemberName 89(UBO) 1 "modelview" - MemberName 89(UBO) 2 "lightPos" - MemberName 89(UBO) 3 "frustumPlanes" - MemberName 89(UBO) 4 "displacementFactor" - MemberName 89(UBO) 5 "tessellationFactor" - MemberName 89(UBO) 6 "viewportDim" - MemberName 89(UBO) 7 "tessellatedEdgeSize" - Name 112 "ubo" - Name 124 "clip0" - Name 144 "clip1" - Name 207 "pos" - Name 214 "gl_PerVertex" - MemberName 214(gl_PerVertex) 0 "gl_Position" - MemberName 214(gl_PerVertex) 1 "gl_PointSize" - MemberName 214(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 214(gl_PerVertex) 3 "gl_CullDistance" - Name 230 "gl_in" - Name 234 "gl_InvocationID" - Name 252 "samplerHeight" - Name 259 "inUV" - Name 276 "i" - Name 325 "gl_TessLevelInner" - Name 335 "gl_TessLevelOuter" - Name 351 "param" - Name 354 "param" - Name 359 "param" - Name 362 "param" - Name 367 "param" - Name 370 "param" - Name 375 "param" - Name 378 "param" - Name 402 "gl_PerVertex" - MemberName 402(gl_PerVertex) 0 "gl_Position" - MemberName 402(gl_PerVertex) 1 "gl_PointSize" - MemberName 402(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 402(gl_PerVertex) 3 "gl_CullDistance" - Name 415 "gl_out" - Name 427 "outNormal" - Name 435 "inNormal" - Name 447 "outUV" - Decorate 85 ArrayStride 16 - MemberDecorate 89(UBO) 0 ColMajor - MemberDecorate 89(UBO) 0 Offset 0 - MemberDecorate 89(UBO) 0 MatrixStride 16 - MemberDecorate 89(UBO) 1 ColMajor - MemberDecorate 89(UBO) 1 Offset 64 - MemberDecorate 89(UBO) 1 MatrixStride 16 - MemberDecorate 89(UBO) 2 Offset 128 - MemberDecorate 89(UBO) 3 Offset 144 - MemberDecorate 89(UBO) 4 Offset 240 - MemberDecorate 89(UBO) 5 Offset 244 - MemberDecorate 89(UBO) 6 Offset 248 - MemberDecorate 89(UBO) 7 Offset 256 - Decorate 89(UBO) Block - Decorate 112(ubo) DescriptorSet 0 - Decorate 112(ubo) Binding 0 - MemberDecorate 214(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 214(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 214(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 214(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 214(gl_PerVertex) Block - Decorate 234(gl_InvocationID) BuiltIn InvocationId - Decorate 252(samplerHeight) DescriptorSet 0 - Decorate 252(samplerHeight) Binding 1 - Decorate 259(inUV) Location 1 - Decorate 325(gl_TessLevelInner) Patch - Decorate 325(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 335(gl_TessLevelOuter) Patch - Decorate 335(gl_TessLevelOuter) BuiltIn TessLevelOuter - MemberDecorate 402(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 402(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 402(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 402(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 402(gl_PerVertex) Block - Decorate 427(outNormal) Location 0 - Decorate 435(inNormal) Location 0 - Decorate 447(outUV) Location 1 - 3: TypeVoid - 4: TypeFunction 3 - 6: TypeInt 32 0 - 9: 6(int) Constant 32 - 10: 6(int) Constant 6 - 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 - 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 - 19: 6(int) Constant 1 - 20: 6(int) Constant 4 - 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 - 23: TypeFloat 32 - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 9 12 11 - 26: TypeVector 23(float) 4 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 20 - 28: TypePointer Function 26(fvec4) - 29: TypeFunction 23(float) 28(ptr) 28(ptr) - 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 25 27 27 - 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 34 30 16 11 11 18 34 12 11 - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 27 16 11 11 35 20 19 - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 27 16 11 11 35 20 21 - 46: TypeBool - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 49: TypeFunction 46(bool) - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 48 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 52 50 16 11 11 18 52 12 11 - 59: 6(int) Constant 54 - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 58 27 16 59 11 35 20 - 61: 23(float) Constant 1056964608 - 66: TypePointer Function 23(float) - 70: 6(int) Constant 56 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 69 25 16 70 11 35 20 - 75: 23(float) Constant 1073741824 - 80: 6(int) Constant 59 - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 27 16 80 11 35 20 - 82: TypeMatrix 26(fvec4) 4 - 84: 46(bool) ConstantTrue - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 27 20 84 - 85: TypeArray 26(fvec4) 10 - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 27 10 - 87: TypeVector 23(float) 2 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 21 - 89(UBO): TypeStruct 82 82 26(fvec4) 85 23(float) 23(float) 87(fvec2) 23(float) - 92: 6(int) Constant 30 - 93: 6(int) Constant 7 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 83 16 92 93 11 11 12 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 83 16 92 93 11 11 12 - 97: 6(int) Constant 31 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 27 16 97 93 11 11 12 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 86 16 9 93 11 11 12 - 102: 6(int) Constant 36 - 103: 6(int) Constant 8 - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 25 16 102 103 11 11 12 - 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 25 16 102 103 11 11 12 - 107: 6(int) Constant 35 - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 88 16 107 93 11 11 12 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 25 16 102 103 11 11 12 - 109: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 110 19 16 80 11 18 110 11 12 90 94 95 98 100 104 105 108 - 111: TypePointer Uniform 89(UBO) - 112(ubo): 111(ptr) Variable Uniform - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 109 16 80 11 18 114 112(ubo) 103 - 115: TypeInt 32 1 - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 116 9 20 11 - 118: 115(int) Constant 1 - 119: TypePointer Uniform 82 - 127: 6(int) Constant 62 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 126 27 16 127 11 35 20 - 129: 115(int) Constant 0 - 134: TypeVector 23(float) 3 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 25 12 - 136: 23(float) Constant 0 - 137: 134(fvec3) ConstantComposite 136 136 136 - 147: 6(int) Constant 63 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 27 16 147 11 35 20 - 169: 115(int) Constant 6 - 170: TypePointer Uniform 87(fvec2) - 192: 115(int) Constant 7 - 193: TypePointer Uniform 23(float) - 197: 115(int) Constant 5 - 201: 23(float) Constant 1065353216 - 202: 23(float) Constant 1115684864 - 210: 6(int) Constant 85 - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 209 27 16 210 11 53 20 - 212: TypeArray 23(float) 19 - 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 25 19 -214(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212 - 217: 6(int) Constant 1756 - 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 216 27 16 19 217 11 11 12 - 220: 6(int) Constant 1774 - 218: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 219 25 16 19 220 11 11 12 - 223: 6(int) Constant 1817 - 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 223 11 11 12 - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 223 11 11 12 - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 226 19 16 210 11 18 226 11 12 215 218 221 224 - 227: TypeArray 214(gl_PerVertex) 9 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 225 9 - 229: TypePointer Input 227 - 230(gl_in): 229(ptr) Variable Input - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 232 228 16 210 11 18 232 230(gl_in) 103 - 233: TypePointer Input 115(int) -234(gl_InvocationID): 233(ptr) Variable Input - 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 117 16 210 11 18 236 234(gl_InvocationID) 103 - 238: TypePointer Input 26(fvec4) - 241: TypeImage 23(float) 2D sampled format:Unknown - 244: 6(int) Constant 86 - 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 243 11 16 244 11 18 245 246 12 - 247: TypeSampledImage 241 - 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 249 11 16 244 11 18 250 246 12 - 251: TypePointer UniformConstant 247 -252(samplerHeight): 251(ptr) Variable UniformConstant - 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 254 248 16 244 11 18 254 252(samplerHeight) 103 - 256: TypeArray 87(fvec2) 9 - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 88 9 - 258: TypePointer Input 256 - 259(inUV): 258(ptr) Variable Input - 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 257 16 244 11 18 261 259(inUV) 103 - 262: TypePointer Input 87(fvec2) - 267: 115(int) Constant 4 - 275: TypePointer Function 115(int) - 279: 6(int) Constant 89 - 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 117 16 279 11 53 20 - 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 290: 115(int) Constant 3 - 292: TypePointer Uniform 26(fvec4) - 296: 23(float) Constant 1090519040 - 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 302: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 303: 46(bool) ConstantFalse - 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 312: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 318: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 - 322: TypeArray 23(float) 21 - 323: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 25 21 - 324: TypePointer Output 322 -325(gl_TessLevelInner): 324(ptr) Variable Output - 328: 6(int) Constant 104 - 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 327 323 16 328 11 18 327 325(gl_TessLevelInner) 103 - 329: TypePointer Output 23(float) - 332: TypeArray 23(float) 20 - 333: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 25 20 - 334: TypePointer Output 332 -335(gl_TessLevelOuter): 334(ptr) Variable Output - 338: 6(int) Constant 106 - 336: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 337 333 16 338 11 18 337 335(gl_TessLevelOuter) 103 - 341: 115(int) Constant 2 - 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 9 21 11 -402(gl_PerVertex): TypeStruct 26(fvec4) 23(float) 212 212 - 404: 6(int) Constant 110 - 403: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 216 27 16 19 404 11 11 12 - 406: 6(int) Constant 128 - 405: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 219 25 16 19 406 11 11 12 - 408: 6(int) Constant 171 - 407: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 408 11 11 12 - 409: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 222 213 16 19 408 11 11 12 - 411: 6(int) Constant 137 - 410: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 226 19 16 411 11 18 226 11 12 403 405 407 409 - 412: TypeArray 402(gl_PerVertex) 20 - 413: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 410 20 - 414: TypePointer Output 412 - 415(gl_out): 414(ptr) Variable Output - 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 417 413 16 411 11 18 417 415(gl_out) 103 - 422: TypePointer Output 26(fvec4) - 424: TypeArray 134(fvec3) 20 - 425: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 135 20 - 426: TypePointer Output 424 - 427(outNormal): 426(ptr) Variable Output - 430: 6(int) Constant 138 - 428: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 429 425 16 430 11 18 429 427(outNormal) 103 - 432: TypeArray 134(fvec3) 9 - 433: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 135 9 - 434: TypePointer Input 432 - 435(inNormal): 434(ptr) Variable Input - 436: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 437 433 16 430 11 18 437 435(inNormal) 103 - 439: TypePointer Input 134(fvec3) - 442: TypePointer Output 134(fvec3) - 444: TypeArray 87(fvec2) 20 - 445: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 88 20 - 446: TypePointer Output 444 - 447(outUV): 446(ptr) Variable Output - 450: 6(int) Constant 139 - 448: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 449 445 16 450 11 18 449 447(outUV) 103 - 455: TypePointer Output 87(fvec2) - 13(main): 3 Function None 4 - 22: Label - 351(param): 28(ptr) Variable Function - 354(param): 28(ptr) Variable Function - 359(param): 28(ptr) Variable Function - 362(param): 28(ptr) Variable Function - 367(param): 28(ptr) Variable Function - 370(param): 28(ptr) Variable Function - 375(param): 28(ptr) Variable Function - 378(param): 28(ptr) Variable Function - 310: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 311: 115(int) Load 234(gl_InvocationID) - 313: 46(bool) IEqual 311 129 - SelectionMerge 315 None - BranchConditional 313 314 315 - 314: Label - 316: 46(bool) FunctionCall 51(frustumCheck() - 319: 46(bool) LogicalNot 316 - SelectionMerge 321 None - BranchConditional 319 320 344 - 320: Label - 330: 329(ptr) AccessChain 325(gl_TessLevelInner) 129 - Store 330 136 - 331: 329(ptr) AccessChain 325(gl_TessLevelInner) 118 - Store 331 136 - 339: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 - Store 339 136 - 340: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 - Store 340 136 - 342: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 - Store 342 136 - 343: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 - Store 343 136 - Branch 321 - 344: Label - 345: 193(ptr) AccessChain 112(ubo) 197 - 346: 23(float) Load 345 - 348: 46(bool) FOrdGreaterThan 346 136 - SelectionMerge 350 None - BranchConditional 348 349 395 - 349: Label - 352: 238(ptr) AccessChain 230(gl_in) 290 129 - 353: 26(fvec4) Load 352 - Store 351(param) 353 - 355: 238(ptr) AccessChain 230(gl_in) 129 129 - 356: 26(fvec4) Load 355 - Store 354(param) 356 - 357: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 351(param) 354(param) - 358: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 - Store 358 357 - 360: 238(ptr) AccessChain 230(gl_in) 129 129 - 361: 26(fvec4) Load 360 - Store 359(param) 361 - 363: 238(ptr) AccessChain 230(gl_in) 118 129 - 364: 26(fvec4) Load 363 - Store 362(param) 364 - 365: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 359(param) 362(param) - 366: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 - Store 366 365 - 368: 238(ptr) AccessChain 230(gl_in) 118 129 - 369: 26(fvec4) Load 368 - Store 367(param) 369 - 371: 238(ptr) AccessChain 230(gl_in) 341 129 - 372: 26(fvec4) Load 371 - Store 370(param) 372 - 373: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 367(param) 370(param) - 374: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 - Store 374 373 - 376: 238(ptr) AccessChain 230(gl_in) 341 129 - 377: 26(fvec4) Load 376 - Store 375(param) 377 - 379: 238(ptr) AccessChain 230(gl_in) 290 129 - 380: 26(fvec4) Load 379 - Store 378(param) 380 - 381: 23(float) FunctionCall 33(screenSpaceTessFactor(vf4;vf4;) 375(param) 378(param) - 382: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 - Store 382 381 - 383: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 - 384: 23(float) Load 383 - 385: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 - 386: 23(float) Load 385 - 387: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 384 386 61 - 388: 329(ptr) AccessChain 325(gl_TessLevelInner) 129 - Store 388 387 - 389: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 - 390: 23(float) Load 389 - 391: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 - 392: 23(float) Load 391 - 393: 23(float) ExtInst 2(GLSL.std.450) 46(FMix) 390 392 61 - 394: 329(ptr) AccessChain 325(gl_TessLevelInner) 118 - Store 394 393 - Branch 350 - 395: Label - 396: 329(ptr) AccessChain 325(gl_TessLevelInner) 129 - Store 396 201 - 397: 329(ptr) AccessChain 325(gl_TessLevelInner) 118 - Store 397 201 - 398: 329(ptr) AccessChain 335(gl_TessLevelOuter) 129 - Store 398 201 - 399: 329(ptr) AccessChain 335(gl_TessLevelOuter) 118 - Store 399 201 - 400: 329(ptr) AccessChain 335(gl_TessLevelOuter) 341 - Store 400 201 - 401: 329(ptr) AccessChain 335(gl_TessLevelOuter) 290 - Store 401 201 - Branch 350 - 350: Label - Branch 321 - 321: Label - Branch 315 - 315: Label - 418: 115(int) Load 234(gl_InvocationID) - 419: 115(int) Load 234(gl_InvocationID) - 420: 238(ptr) AccessChain 230(gl_in) 419 129 - 421: 26(fvec4) Load 420 - 423: 422(ptr) AccessChain 415(gl_out) 418 129 - Store 423 421 - 431: 115(int) Load 234(gl_InvocationID) - 438: 115(int) Load 234(gl_InvocationID) - 440: 439(ptr) AccessChain 435(inNormal) 438 - 441: 134(fvec3) Load 440 - 443: 442(ptr) AccessChain 427(outNormal) 431 - Store 443 441 - 451: 115(int) Load 234(gl_InvocationID) - 452: 115(int) Load 234(gl_InvocationID) - 453: 262(ptr) AccessChain 259(inUV) 452 - 454: 87(fvec2) Load 453 - 456: 455(ptr) AccessChain 447(outUV) 451 - Store 456 454 + EntryPoint TessellationControl 14 "main" 249 253 279 370 383 498 512 519 533 + ExecutionMode 14 OutputVertices 4 + 1: String "" + 9: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 25: String "float" + 35: String "screenSpaceTessFactor" + 41: String "p0" + 45: String "p1" + 48: String "bool" + 53: String "frustumCheck" + 62: String "midPoint" + 74: String "radius" + 85: String "v0" + 96: String "modelview" + 101: String "lightPos" + 104: String "frustumPlanes" + 106: String "tessellatedEdgeSize" + 111: String "viewportDim" + 115: String "UBO" + 119: String "ubo" + 121: String "int" + 133: String "clip0" + 154: String "clip1" + 229: String "pos" + 235: String "gl_Position" + 238: String "gl_PointSize" + 241: String "gl_CullDistance" + 245: String "gl_PerVertex" + 251: String "gl_in" + 255: String "gl_InvocationID" + 264: String "type.2d.image" + 265: String "@type.2d.image" + 269: String "type.sampled.image" + 270: String "@type.sampled.image" + 274: String "samplerHeight" + 281: String "inUV" + 300: String "i" + 372: String "gl_TessLevelInner" + 385: String "gl_TessLevelOuter" + 500: String "gl_out" + 514: String "outNormal" + 521: String "inNormal" + 535: String "outUV" + Name 14 "main" + Name 34 "screenSpaceTessFactor(vf4;vf4;" + Name 32 "p0" + Name 33 "p1" + Name 52 "frustumCheck(" + Name 60 "midPoint" + Name 72 "radius" + Name 83 "v0" + Name 94 "UBO" + MemberName 94(UBO) 0 "projection" + MemberName 94(UBO) 1 "modelview" + MemberName 94(UBO) 2 "lightPos" + MemberName 94(UBO) 3 "frustumPlanes" + MemberName 94(UBO) 4 "displacementFactor" + MemberName 94(UBO) 5 "tessellationFactor" + MemberName 94(UBO) 6 "viewportDim" + MemberName 94(UBO) 7 "tessellatedEdgeSize" + Name 117 "ubo" + Name 131 "clip0" + Name 152 "clip1" + Name 227 "pos" + Name 233 "gl_PerVertex" + MemberName 233(gl_PerVertex) 0 "gl_Position" + MemberName 233(gl_PerVertex) 1 "gl_PointSize" + MemberName 233(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 233(gl_PerVertex) 3 "gl_CullDistance" + Name 249 "gl_in" + Name 253 "gl_InvocationID" + Name 272 "samplerHeight" + Name 279 "inUV" + Name 298 "i" + Name 370 "gl_TessLevelInner" + Name 383 "gl_TessLevelOuter" + Name 410 "param" + Name 413 "param" + Name 420 "param" + Name 423 "param" + Name 430 "param" + Name 433 "param" + Name 440 "param" + Name 443 "param" + Name 487 "gl_PerVertex" + MemberName 487(gl_PerVertex) 0 "gl_Position" + MemberName 487(gl_PerVertex) 1 "gl_PointSize" + MemberName 487(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 487(gl_PerVertex) 3 "gl_CullDistance" + Name 498 "gl_out" + Name 512 "outNormal" + Name 519 "inNormal" + Name 533 "outUV" + Decorate 90 ArrayStride 16 + MemberDecorate 94(UBO) 0 ColMajor + MemberDecorate 94(UBO) 0 Offset 0 + MemberDecorate 94(UBO) 0 MatrixStride 16 + MemberDecorate 94(UBO) 1 ColMajor + MemberDecorate 94(UBO) 1 Offset 64 + MemberDecorate 94(UBO) 1 MatrixStride 16 + MemberDecorate 94(UBO) 2 Offset 128 + MemberDecorate 94(UBO) 3 Offset 144 + MemberDecorate 94(UBO) 4 Offset 240 + MemberDecorate 94(UBO) 5 Offset 244 + MemberDecorate 94(UBO) 6 Offset 248 + MemberDecorate 94(UBO) 7 Offset 256 + Decorate 94(UBO) Block + Decorate 117(ubo) DescriptorSet 0 + Decorate 117(ubo) Binding 0 + MemberDecorate 233(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 233(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 233(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 233(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 233(gl_PerVertex) Block + Decorate 253(gl_InvocationID) BuiltIn InvocationId + Decorate 272(samplerHeight) DescriptorSet 0 + Decorate 272(samplerHeight) Binding 1 + Decorate 279(inUV) Location 1 + Decorate 370(gl_TessLevelInner) Patch + Decorate 370(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 383(gl_TessLevelOuter) Patch + Decorate 383(gl_TessLevelOuter) BuiltIn TessLevelOuter + MemberDecorate 487(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 487(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 487(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 487(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 487(gl_PerVertex) Block + Decorate 512(outNormal) Location 0 + Decorate 519(inNormal) Location 0 + Decorate 533(outUV) Location 1 + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 24: TypeFloat 32 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 + 27: TypeVector 24(float) 4 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 + 29: TypePointer Function 27(fvec4) + 30: TypeFunction 24(float) 29(ptr) 29(ptr) + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 26 28 28 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 31 17 12 12 19 35 13 12 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 28 17 12 12 36 21 20 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 28 17 12 12 36 21 22 + 47: TypeBool + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 50: TypeFunction 47(bool) + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 49 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 53 51 17 12 12 19 53 13 12 + 59: 7(int) Constant 54 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 62 28 17 59 12 36 21 + 64: 24(float) Constant 1056964608 + 70: 7(int) Constant 56 + 71: TypePointer Function 24(float) + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 74 26 17 70 12 36 21 + 79: 24(float) Constant 1073741824 + 82: 7(int) Constant 59 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 28 17 82 12 36 21 + 87: TypeMatrix 27(fvec4) 4 + 89: 47(bool) ConstantTrue + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 28 21 89 + 90: TypeArray 27(fvec4) 11 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 28 11 + 92: TypeVector 24(float) 2 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 22 + 94(UBO): TypeStruct 87 87 27(fvec4) 90 24(float) 24(float) 92(fvec2) 24(float) + 97: 7(int) Constant 30 + 98: 7(int) Constant 7 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 88 17 97 98 12 12 13 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 88 17 97 98 12 12 13 + 102: 7(int) Constant 31 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 28 17 102 98 12 12 13 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 91 17 10 98 12 12 13 + 107: 7(int) Constant 36 + 108: 7(int) Constant 8 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 26 17 107 108 12 12 13 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 26 17 107 108 12 12 13 + 112: 7(int) Constant 35 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 93 17 112 98 12 12 13 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 26 17 107 108 12 12 13 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 115 20 17 82 12 19 115 12 13 95 99 100 103 105 109 110 113 + 116: TypePointer Uniform 94(UBO) + 117(ubo): 116(ptr) Variable Uniform + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 119 114 17 82 12 19 119 117(ubo) 108 + 120: TypeInt 32 1 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 121 10 21 12 + 123: 120(int) Constant 1 + 124: TypePointer Uniform 87 + 130: 7(int) Constant 62 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 28 17 130 12 36 21 + 135: 120(int) Constant 0 + 140: TypeVector 24(float) 3 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 + 142: 24(float) Constant 0 + 143: 140(fvec3) ConstantComposite 142 142 142 + 151: 7(int) Constant 63 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 154 28 17 151 12 36 21 + 167: 7(int) Constant 66 + 174: 7(int) Constant 67 + 181: 7(int) Constant 70 + 182: 120(int) Constant 6 + 183: TypePointer Uniform 92(fvec2) + 194: 7(int) Constant 71 + 205: 7(int) Constant 76 + 209: 120(int) Constant 7 + 210: TypePointer Uniform 24(float) + 214: 120(int) Constant 5 + 218: 24(float) Constant 1065353216 + 219: 24(float) Constant 1115684864 + 226: 7(int) Constant 85 + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 28 17 226 12 54 21 + 231: TypeArray 24(float) 20 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 20 +233(gl_PerVertex): TypeStruct 27(fvec4) 24(float) 231 231 + 236: 7(int) Constant 1756 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 28 17 20 236 12 12 13 + 239: 7(int) Constant 1774 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 26 17 20 239 12 12 13 + 242: 7(int) Constant 1817 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 242 12 12 13 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 242 12 12 13 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 245 20 17 226 12 19 245 12 13 234 237 240 243 + 246: TypeArray 233(gl_PerVertex) 10 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 244 10 + 248: TypePointer Input 246 + 249(gl_in): 248(ptr) Variable Input + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 251 247 17 226 12 19 251 249(gl_in) 108 + 252: TypePointer Input 120(int) +253(gl_InvocationID): 252(ptr) Variable Input + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 255 122 17 226 12 19 255 253(gl_InvocationID) 108 + 257: TypePointer Input 27(fvec4) + 261: 7(int) Constant 86 + 262: TypeImage 24(float) 2D sampled format:Unknown + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 264 12 17 261 12 19 265 266 13 + 267: TypeSampledImage 262 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 269 12 17 261 12 19 270 266 13 + 271: TypePointer UniformConstant 267 +272(samplerHeight): 271(ptr) Variable UniformConstant + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 274 268 17 261 12 19 274 272(samplerHeight) 108 + 276: TypeArray 92(fvec2) 10 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 93 10 + 278: TypePointer Input 276 + 279(inUV): 278(ptr) Variable Input + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 281 277 17 261 12 19 281 279(inUV) 108 + 282: TypePointer Input 92(fvec2) + 287: 120(int) Constant 4 + 296: 7(int) Constant 89 + 297: TypePointer Function 120(int) + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 300 122 17 296 12 54 21 + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 316: 7(int) Constant 90 + 318: 120(int) Constant 3 + 320: TypePointer Uniform 27(fvec4) + 324: 24(float) Constant 1090519040 + 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 331: 47(bool) ConstantFalse + 334: 7(int) Constant 92 + 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 343: 7(int) Constant 95 + 349: 7(int) Constant 100 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 357: 7(int) Constant 102 + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 366: 7(int) Constant 104 + 367: TypeArray 24(float) 22 + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 22 + 369: TypePointer Output 367 +370(gl_TessLevelInner): 369(ptr) Variable Output + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 372 368 17 366 12 19 372 370(gl_TessLevelInner) 108 + 373: TypePointer Output 24(float) + 376: 7(int) Constant 105 + 379: 7(int) Constant 106 + 380: TypeArray 24(float) 21 + 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 21 + 382: TypePointer Output 380 +383(gl_TessLevelOuter): 382(ptr) Variable Output + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 385 381 17 379 12 19 385 383(gl_TessLevelOuter) 108 + 388: 7(int) Constant 107 + 391: 7(int) Constant 108 + 392: 120(int) Constant 2 + 395: 7(int) Constant 109 + 400: 7(int) Constant 113 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 + 409: 7(int) Constant 115 + 419: 7(int) Constant 116 + 429: 7(int) Constant 117 + 439: 7(int) Constant 118 + 449: 7(int) Constant 119 + 457: 7(int) Constant 120 + 467: 7(int) Constant 126 + 470: 7(int) Constant 127 + 473: 7(int) Constant 128 + 476: 7(int) Constant 129 + 479: 7(int) Constant 130 + 482: 7(int) Constant 131 + 486: 7(int) Constant 137 +487(gl_PerVertex): TypeStruct 27(fvec4) 24(float) 231 231 + 489: 7(int) Constant 110 + 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 28 17 20 489 12 12 13 + 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 26 17 20 473 12 12 13 + 492: 7(int) Constant 171 + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 492 12 12 13 + 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 492 12 12 13 + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 245 20 17 486 12 19 245 12 13 488 490 491 493 + 495: TypeArray 487(gl_PerVertex) 21 + 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 494 21 + 497: TypePointer Output 495 + 498(gl_out): 497(ptr) Variable Output + 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 500 496 17 486 12 19 500 498(gl_out) 108 + 505: TypePointer Output 27(fvec4) + 508: 7(int) Constant 138 + 509: TypeArray 140(fvec3) 21 + 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 141 21 + 511: TypePointer Output 509 + 512(outNormal): 511(ptr) Variable Output + 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 514 510 17 508 12 19 514 512(outNormal) 108 + 516: TypeArray 140(fvec3) 10 + 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 141 10 + 518: TypePointer Input 516 + 519(inNormal): 518(ptr) Variable Input + 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 521 517 17 508 12 19 521 519(inNormal) 108 + 523: TypePointer Input 140(fvec3) + 526: TypePointer Output 140(fvec3) + 529: 7(int) Constant 139 + 530: TypeArray 92(fvec2) 21 + 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 93 21 + 532: TypePointer Output 530 + 533(outUV): 532(ptr) Variable Output + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 535 531 17 529 12 19 535 533(outUV) 108 + 540: TypePointer Output 92(fvec2) + Line 1 98 11 + 14(main): 4 Function None 5 + 23: Label + 410(param): 29(ptr) Variable Function + 413(param): 29(ptr) Variable Function + 420(param): 29(ptr) Variable Function + 423(param): 29(ptr) Variable Function + 430(param): 29(ptr) Variable Function + 433(param): 29(ptr) Variable Function + 440(param): 29(ptr) Variable Function + 443(param): 29(ptr) Variable Function + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 349 349 12 12 + 350: 120(int) Load 253(gl_InvocationID) + 352: 47(bool) IEqual 350 135 + SelectionMerge 354 None + BranchConditional 352 353 354 + 353: Label + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 357 357 12 12 + 358: 47(bool) FunctionCall 52(frustumCheck() + 361: 47(bool) LogicalNot 358 + SelectionMerge 363 None + BranchConditional 361 362 397 + 362: Label + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 366 366 12 12 + 374: 373(ptr) AccessChain 370(gl_TessLevelInner) 135 + Store 374 142 + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 376 376 12 12 + 377: 373(ptr) AccessChain 370(gl_TessLevelInner) 123 + Store 377 142 + 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 379 379 12 12 + 386: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 + Store 386 142 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 388 388 12 12 + 389: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 + Store 389 142 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 391 391 12 12 + 393: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 + Store 393 142 + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 395 395 12 12 + 396: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 + Store 396 142 + Branch 363 + 397: Label + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 400 400 12 12 + 401: 210(ptr) AccessChain 117(ubo) 214 + 402: 24(float) Load 401 + 404: 47(bool) FOrdGreaterThan 402 142 + SelectionMerge 406 None + BranchConditional 404 405 464 + 405: Label + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 409 409 12 12 + 411: 257(ptr) AccessChain 249(gl_in) 318 135 + 412: 27(fvec4) Load 411 + Store 410(param) 412 + 414: 257(ptr) AccessChain 249(gl_in) 135 135 + 415: 27(fvec4) Load 414 + Store 413(param) 415 + 416: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 410(param) 413(param) + 417: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 + Store 417 416 + 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 419 419 12 12 + 421: 257(ptr) AccessChain 249(gl_in) 135 135 + 422: 27(fvec4) Load 421 + Store 420(param) 422 + 424: 257(ptr) AccessChain 249(gl_in) 123 135 + 425: 27(fvec4) Load 424 + Store 423(param) 425 + 426: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 420(param) 423(param) + 427: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 + Store 427 426 + 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 429 429 12 12 + 431: 257(ptr) AccessChain 249(gl_in) 123 135 + 432: 27(fvec4) Load 431 + Store 430(param) 432 + 434: 257(ptr) AccessChain 249(gl_in) 392 135 + 435: 27(fvec4) Load 434 + Store 433(param) 435 + 436: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 430(param) 433(param) + 437: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 + Store 437 436 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 439 439 12 12 + 441: 257(ptr) AccessChain 249(gl_in) 392 135 + 442: 27(fvec4) Load 441 + Store 440(param) 442 + 444: 257(ptr) AccessChain 249(gl_in) 318 135 + 445: 27(fvec4) Load 444 + Store 443(param) 445 + 446: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 440(param) 443(param) + 447: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 + Store 447 446 + 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 449 449 12 12 + 450: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 + 451: 24(float) Load 450 + 452: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 + 453: 24(float) Load 452 + 454: 24(float) ExtInst 3(GLSL.std.450) 46(FMix) 451 453 64 + 455: 373(ptr) AccessChain 370(gl_TessLevelInner) 135 + Store 455 454 + 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 457 457 12 12 + 458: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 + 459: 24(float) Load 458 + 460: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 + 461: 24(float) Load 460 + 462: 24(float) ExtInst 3(GLSL.std.450) 46(FMix) 459 461 64 + 463: 373(ptr) AccessChain 370(gl_TessLevelInner) 123 + Store 463 462 + Branch 406 + 464: Label + 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 466: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 467 467 12 12 + 468: 373(ptr) AccessChain 370(gl_TessLevelInner) 135 + Store 468 218 + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 470 470 12 12 + 471: 373(ptr) AccessChain 370(gl_TessLevelInner) 123 + Store 471 218 + 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 473 473 12 12 + 474: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 + Store 474 218 + 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 476 476 12 12 + 477: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 + Store 477 218 + 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 479 479 12 12 + 480: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 + Store 480 218 + 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 482 482 12 12 + 483: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 + Store 483 218 + Branch 406 + 406: Label + Branch 363 + 363: Label + Branch 354 + 354: Label + 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 486 486 12 12 + 501: 120(int) Load 253(gl_InvocationID) + 502: 120(int) Load 253(gl_InvocationID) + 503: 257(ptr) AccessChain 249(gl_in) 502 135 + 504: 27(fvec4) Load 503 + 506: 505(ptr) AccessChain 498(gl_out) 501 135 + Store 506 504 + 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 508 508 12 12 + 515: 120(int) Load 253(gl_InvocationID) + 522: 120(int) Load 253(gl_InvocationID) + 524: 523(ptr) AccessChain 519(inNormal) 522 + 525: 140(fvec3) Load 524 + 527: 526(ptr) AccessChain 512(outNormal) 515 + Store 527 525 + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 529 529 12 12 + 536: 120(int) Load 253(gl_InvocationID) + 537: 120(int) Load 253(gl_InvocationID) + 538: 282(ptr) AccessChain 279(inUV) 537 + 539: 92(fvec2) Load 538 + 541: 540(ptr) AccessChain 533(outUV) 536 + Store 541 539 Return FunctionEnd -33(screenSpaceTessFactor(vf4;vf4;): 23(float) Function None 29 - 31(p0): 28(ptr) FunctionParameter - 32(p1): 28(ptr) FunctionParameter - 36: Label - 56(midPoint): 28(ptr) Variable Function - 67(radius): 66(ptr) Variable Function - 77(v0): 28(ptr) Variable Function - 124(clip0): 28(ptr) Variable Function - 144(clip1): 28(ptr) Variable Function - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 16 11 11 11 11 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 31(p0) 42 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 32(p1) 42 - 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 35 33(screenSpaceTessFactor(vf4;vf4;) - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 57 56(midPoint) 42 - 62: 26(fvec4) Load 31(p0) - 63: 26(fvec4) Load 32(p1) - 64: 26(fvec4) FAdd 62 63 - 65: 26(fvec4) VectorTimesScalar 64 61 - Store 56(midPoint) 65 - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 67(radius) 42 - 72: 26(fvec4) Load 31(p0) - 73: 26(fvec4) Load 32(p1) - 74: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 72 73 - 76: 23(float) FDiv 74 75 - Store 67(radius) 76 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 77(v0) 42 - 120: 119(ptr) AccessChain 112(ubo) 118 - 121: 82 Load 120 - 122: 26(fvec4) Load 56(midPoint) - 123: 26(fvec4) MatrixTimesVector 121 122 - Store 77(v0) 123 - 128: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(clip0) 42 - 130: 119(ptr) AccessChain 112(ubo) 129 - 131: 82 Load 130 - 132: 26(fvec4) Load 77(v0) - 133: 23(float) Load 67(radius) - 138: 23(float) CompositeExtract 137 0 - 139: 23(float) CompositeExtract 137 1 - 140: 23(float) CompositeExtract 137 2 - 141: 26(fvec4) CompositeConstruct 133 138 139 140 - 142: 26(fvec4) FSub 132 141 - 143: 26(fvec4) MatrixTimesVector 131 142 - Store 124(clip0) 143 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(clip1) 42 - 149: 119(ptr) AccessChain 112(ubo) 129 - 150: 82 Load 149 - 151: 26(fvec4) Load 77(v0) - 152: 23(float) Load 67(radius) - 153: 23(float) CompositeExtract 137 0 - 154: 23(float) CompositeExtract 137 1 - 155: 23(float) CompositeExtract 137 2 - 156: 26(fvec4) CompositeConstruct 152 153 154 155 - 157: 26(fvec4) FAdd 151 156 - 158: 26(fvec4) MatrixTimesVector 150 157 - Store 144(clip1) 158 - 159: 66(ptr) AccessChain 124(clip0) 12 - 160: 23(float) Load 159 - 161: 26(fvec4) Load 124(clip0) - 162: 26(fvec4) CompositeConstruct 160 160 160 160 - 163: 26(fvec4) FDiv 161 162 - Store 124(clip0) 163 - 164: 66(ptr) AccessChain 144(clip1) 12 - 165: 23(float) Load 164 - 166: 26(fvec4) Load 144(clip1) - 167: 26(fvec4) CompositeConstruct 165 165 165 165 - 168: 26(fvec4) FDiv 166 167 - Store 144(clip1) 168 - 171: 170(ptr) AccessChain 112(ubo) 169 - 172: 87(fvec2) Load 171 - 173: 26(fvec4) Load 124(clip0) - 174: 87(fvec2) VectorShuffle 173 173 0 1 - 175: 87(fvec2) FMul 174 172 - 176: 66(ptr) AccessChain 124(clip0) 11 - 177: 23(float) CompositeExtract 175 0 - Store 176 177 - 178: 66(ptr) AccessChain 124(clip0) 19 - 179: 23(float) CompositeExtract 175 1 - Store 178 179 - 180: 170(ptr) AccessChain 112(ubo) 169 - 181: 87(fvec2) Load 180 - 182: 26(fvec4) Load 144(clip1) - 183: 87(fvec2) VectorShuffle 182 182 0 1 - 184: 87(fvec2) FMul 183 181 - 185: 66(ptr) AccessChain 144(clip1) 11 - 186: 23(float) CompositeExtract 184 0 - Store 185 186 - 187: 66(ptr) AccessChain 144(clip1) 19 - 188: 23(float) CompositeExtract 184 1 - Store 187 188 - 189: 26(fvec4) Load 124(clip0) - 190: 26(fvec4) Load 144(clip1) - 191: 23(float) ExtInst 2(GLSL.std.450) 67(Distance) 189 190 - 194: 193(ptr) AccessChain 112(ubo) 192 - 195: 23(float) Load 194 - 196: 23(float) FDiv 191 195 - 198: 193(ptr) AccessChain 112(ubo) 197 - 199: 23(float) Load 198 - 200: 23(float) FMul 196 199 - 203: 23(float) ExtInst 2(GLSL.std.450) 43(FClamp) 200 201 202 - ReturnValue 203 + Line 1 51 45 +34(screenSpaceTessFactor(vf4;vf4;): 24(float) Function None 30 + 32(p0): 29(ptr) FunctionParameter + 33(p1): 29(ptr) FunctionParameter + 37: Label + 60(midPoint): 29(ptr) Variable Function + 72(radius): 71(ptr) Variable Function + 83(v0): 29(ptr) Variable Function + 131(clip0): 29(ptr) Variable Function + 152(clip1): 29(ptr) Variable Function + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 32(p0) 43 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 33(p1) 43 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 34(screenSpaceTessFactor(vf4;vf4;) + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 59 59 12 12 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 61 60(midPoint) 43 + 65: 27(fvec4) Load 32(p0) + 66: 27(fvec4) Load 33(p1) + 67: 27(fvec4) FAdd 65 66 + 68: 27(fvec4) VectorTimesScalar 67 64 + Store 60(midPoint) 68 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 70 70 12 12 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 73 72(radius) 43 + 76: 27(fvec4) Load 32(p0) + 77: 27(fvec4) Load 33(p1) + 78: 24(float) ExtInst 3(GLSL.std.450) 67(Distance) 76 77 + 80: 24(float) FDiv 78 79 + Store 72(radius) 80 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 82 82 12 12 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 83(v0) 43 + 125: 124(ptr) AccessChain 117(ubo) 123 + 126: 87 Load 125 + 127: 27(fvec4) Load 60(midPoint) + 128: 27(fvec4) MatrixTimesVector 126 127 + Store 83(v0) 128 + 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 130 130 12 12 + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(clip0) 43 + 136: 124(ptr) AccessChain 117(ubo) 135 + 137: 87 Load 136 + 138: 27(fvec4) Load 83(v0) + 139: 24(float) Load 72(radius) + 144: 24(float) CompositeExtract 143 0 + 145: 24(float) CompositeExtract 143 1 + 146: 24(float) CompositeExtract 143 2 + 147: 27(fvec4) CompositeConstruct 139 144 145 146 + 148: 27(fvec4) FSub 138 147 + 149: 27(fvec4) MatrixTimesVector 137 148 + Store 131(clip0) 149 + 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 151 151 12 12 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 153 152(clip1) 43 + 156: 124(ptr) AccessChain 117(ubo) 135 + 157: 87 Load 156 + 158: 27(fvec4) Load 83(v0) + 159: 24(float) Load 72(radius) + 160: 24(float) CompositeExtract 143 0 + 161: 24(float) CompositeExtract 143 1 + 162: 24(float) CompositeExtract 143 2 + 163: 27(fvec4) CompositeConstruct 159 160 161 162 + 164: 27(fvec4) FAdd 158 163 + 165: 27(fvec4) MatrixTimesVector 157 164 + Store 152(clip1) 165 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 167 167 12 12 + 168: 71(ptr) AccessChain 131(clip0) 13 + 169: 24(float) Load 168 + 170: 27(fvec4) Load 131(clip0) + 171: 27(fvec4) CompositeConstruct 169 169 169 169 + 172: 27(fvec4) FDiv 170 171 + Store 131(clip0) 172 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 174 174 12 12 + 175: 71(ptr) AccessChain 152(clip1) 13 + 176: 24(float) Load 175 + 177: 27(fvec4) Load 152(clip1) + 178: 27(fvec4) CompositeConstruct 176 176 176 176 + 179: 27(fvec4) FDiv 177 178 + Store 152(clip1) 179 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 181 181 12 12 + 184: 183(ptr) AccessChain 117(ubo) 182 + 185: 92(fvec2) Load 184 + 186: 27(fvec4) Load 131(clip0) + 187: 92(fvec2) VectorShuffle 186 186 0 1 + 188: 92(fvec2) FMul 187 185 + 189: 71(ptr) AccessChain 131(clip0) 12 + 190: 24(float) CompositeExtract 188 0 + Store 189 190 + 191: 71(ptr) AccessChain 131(clip0) 20 + 192: 24(float) CompositeExtract 188 1 + Store 191 192 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 194 194 12 12 + 195: 183(ptr) AccessChain 117(ubo) 182 + 196: 92(fvec2) Load 195 + 197: 27(fvec4) Load 152(clip1) + 198: 92(fvec2) VectorShuffle 197 197 0 1 + 199: 92(fvec2) FMul 198 196 + 200: 71(ptr) AccessChain 152(clip1) 12 + 201: 24(float) CompositeExtract 199 0 + Store 200 201 + 202: 71(ptr) AccessChain 152(clip1) 20 + 203: 24(float) CompositeExtract 199 1 + Store 202 203 + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 205 205 12 12 + 206: 27(fvec4) Load 131(clip0) + 207: 27(fvec4) Load 152(clip1) + 208: 24(float) ExtInst 3(GLSL.std.450) 67(Distance) 206 207 + 211: 210(ptr) AccessChain 117(ubo) 209 + 212: 24(float) Load 211 + 213: 24(float) FDiv 208 212 + 215: 210(ptr) AccessChain 117(ubo) 214 + 216: 24(float) Load 215 + 217: 24(float) FMul 213 216 + 220: 24(float) ExtInst 3(GLSL.std.450) 43(FClamp) 217 218 219 + ReturnValue 220 FunctionEnd -51(frustumCheck(): 46(bool) Function None 49 - 54: Label - 207(pos): 28(ptr) Variable Function - 276(i): 275(ptr) Variable Function - 206: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 53 51(frustumCheck() - 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 208 207(pos) 42 - 237: 115(int) Load 234(gl_InvocationID) - 239: 238(ptr) AccessChain 230(gl_in) 237 129 - 240: 26(fvec4) Load 239 - Store 207(pos) 240 - 255: 247 Load 252(samplerHeight) - 263: 262(ptr) AccessChain 259(inUV) 129 - 264: 87(fvec2) Load 263 - 265: 26(fvec4) ImageSampleExplicitLod 255 264 Lod 136 - 266: 23(float) CompositeExtract 265 0 - 268: 193(ptr) AccessChain 112(ubo) 267 - 269: 23(float) Load 268 - 270: 23(float) FMul 266 269 - 271: 66(ptr) AccessChain 207(pos) 19 - 272: 23(float) Load 271 - 273: 23(float) FSub 272 270 - 274: 66(ptr) AccessChain 207(pos) 19 - Store 274 273 - 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(i) 42 - Store 276(i) 129 - Branch 281 - 281: Label - LoopMerge 283 284 None - Branch 285 - 285: Label - 286: 115(int) Load 276(i) - 288: 46(bool) SLessThan 286 169 - BranchConditional 288 282 283 - 282: Label - 289: 26(fvec4) Load 207(pos) - 291: 115(int) Load 276(i) - 293: 292(ptr) AccessChain 112(ubo) 290 291 - 294: 26(fvec4) Load 293 - 295: 23(float) Dot 289 294 - 297: 23(float) FAdd 295 296 - 299: 46(bool) FOrdLessThan 297 136 - SelectionMerge 301 None - BranchConditional 299 300 301 - 300: Label - ReturnValue 303 - 301: Label - Branch 284 - 284: Label - 305: 115(int) Load 276(i) - 306: 115(int) IAdd 305 118 - Store 276(i) 306 - Branch 281 - 283: Label - ReturnValue 84 + Line 1 81 19 +52(frustumCheck(): 47(bool) Function None 50 + 55: Label + 227(pos): 29(ptr) Variable Function + 298(i): 297(ptr) Variable Function + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 54 52(frustumCheck() + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 226 226 12 12 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(pos) 43 + 256: 120(int) Load 253(gl_InvocationID) + 258: 257(ptr) AccessChain 249(gl_in) 256 135 + 259: 27(fvec4) Load 258 + Store 227(pos) 259 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 261 261 12 12 + 275: 267 Load 272(samplerHeight) + 283: 282(ptr) AccessChain 279(inUV) 135 + 284: 92(fvec2) Load 283 + 285: 27(fvec4) ImageSampleExplicitLod 275 284 Lod 142 + 286: 24(float) CompositeExtract 285 0 + 288: 210(ptr) AccessChain 117(ubo) 287 + 289: 24(float) Load 288 + 290: 24(float) FMul 286 289 + 291: 71(ptr) AccessChain 227(pos) 20 + 292: 24(float) Load 291 + 293: 24(float) FSub 292 290 + 294: 71(ptr) AccessChain 227(pos) 20 + Store 294 293 + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 299 298(i) 43 + Store 298(i) 135 + Branch 302 + 302: Label + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 + LoopMerge 304 305 None + Branch 308 + 308: Label + 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 + 311: 120(int) Load 298(i) + 313: 47(bool) SLessThan 311 182 + BranchConditional 313 303 304 + 303: Label + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 316 316 12 12 + 317: 27(fvec4) Load 227(pos) + 319: 120(int) Load 298(i) + 321: 320(ptr) AccessChain 117(ubo) 318 319 + 322: 27(fvec4) Load 321 + 323: 24(float) Dot 317 322 + 325: 24(float) FAdd 323 324 + 327: 47(bool) FOrdLessThan 325 142 + SelectionMerge 329 None + BranchConditional 327 328 329 + 328: Label + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 334 334 12 12 + ReturnValue 331 + 329: Label + Branch 305 + 305: Label + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 + 338: 120(int) Load 298(i) + 339: 120(int) IAdd 338 123 + Store 298(i) 339 + Branch 302 + 304: Label + 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 343 343 12 12 + ReturnValue 89 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index 3c5d692f89..0625c278d3 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,421 +1,445 @@ spv.debuginfo.glsl.tese -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 315 +// Id's are bound by 332 Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 13 "main" 39 56 80 99 124 160 267 279 286 297 303 - ExecutionMode 13 Quads - ExecutionMode 13 SpacingEqual - ExecutionMode 13 VertexOrderCw - 8: String "uint" - 14: String "main" - 17: String "" - 25: String "float" - 32: String "uv1" - 41: String "inUV" - 44: String "int" - 58: String "gl_TessCoord" - 66: String "uv2" - 82: String "outUV" - 93: String "n1" - 101: String "inNormal" - 112: String "n2" - 126: String "outNormal" - 139: String "pos1" - 146: String "gl_Position" - 149: String "gl_PointSize" - 152: String "gl_CullDistance" - 156: String "gl_PerVertex" - 162: String "gl_in" - 174: String "pos2" - 187: String "pos" - 198: String "type.2d.image" - 200: String "@type.2d.image" - 204: String "type.sampled.image" - 205: String "@type.sampled.image" - 209: String "displacementMap" - 223: String "modelview" - 228: String "lightPos" - 231: String "frustumPlanes" - 233: String "tessellatedEdgeSize" - 237: String "viewportDim" - 241: String "UBO" - 245: String "ubo" - 281: String "outViewVec" - 288: String "outLightVec" - 299: String "outWorldPos" - 305: String "outEyePos" - Name 13 "main" - Name 30 "uv1" - Name 39 "inUV" - Name 56 "gl_TessCoord" - Name 64 "uv2" - Name 80 "outUV" - Name 91 "n1" - Name 99 "inNormal" - Name 110 "n2" - Name 124 "outNormal" - Name 137 "pos1" - Name 144 "gl_PerVertex" - MemberName 144(gl_PerVertex) 0 "gl_Position" - MemberName 144(gl_PerVertex) 1 "gl_PointSize" - MemberName 144(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 144(gl_PerVertex) 3 "gl_CullDistance" - Name 160 "gl_in" - Name 172 "pos2" - Name 185 "pos" - Name 207 "displacementMap" - Name 221 "UBO" - MemberName 221(UBO) 0 "projection" - MemberName 221(UBO) 1 "modelview" - MemberName 221(UBO) 2 "lightPos" - MemberName 221(UBO) 3 "frustumPlanes" - MemberName 221(UBO) 4 "displacementFactor" - MemberName 221(UBO) 5 "tessellationFactor" - MemberName 221(UBO) 6 "viewportDim" - MemberName 221(UBO) 7 "tessellatedEdgeSize" - Name 243 "ubo" - Name 256 "gl_PerVertex" - MemberName 256(gl_PerVertex) 0 "gl_Position" - MemberName 256(gl_PerVertex) 1 "gl_PointSize" - MemberName 256(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 256(gl_PerVertex) 3 "gl_CullDistance" - Name 267 "" - Name 279 "outViewVec" - Name 286 "outLightVec" - Name 297 "outWorldPos" - Name 303 "outEyePos" - Decorate 39(inUV) Location 1 - Decorate 56(gl_TessCoord) BuiltIn TessCoord - Decorate 80(outUV) Location 1 - Decorate 99(inNormal) Location 0 - Decorate 124(outNormal) Location 0 - MemberDecorate 144(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 144(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 144(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 144(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 144(gl_PerVertex) Block - Decorate 207(displacementMap) DescriptorSet 0 - Decorate 207(displacementMap) Binding 1 - Decorate 219 ArrayStride 16 - MemberDecorate 221(UBO) 0 ColMajor - MemberDecorate 221(UBO) 0 Offset 0 - MemberDecorate 221(UBO) 0 MatrixStride 16 - MemberDecorate 221(UBO) 1 ColMajor - MemberDecorate 221(UBO) 1 Offset 64 - MemberDecorate 221(UBO) 1 MatrixStride 16 - MemberDecorate 221(UBO) 2 Offset 128 - MemberDecorate 221(UBO) 3 Offset 144 - MemberDecorate 221(UBO) 4 Offset 240 - MemberDecorate 221(UBO) 5 Offset 244 - MemberDecorate 221(UBO) 6 Offset 248 - MemberDecorate 221(UBO) 7 Offset 256 - Decorate 221(UBO) Block - Decorate 243(ubo) DescriptorSet 0 - Decorate 243(ubo) Binding 0 - MemberDecorate 256(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 256(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 256(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 256(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 256(gl_PerVertex) Block - Decorate 279(outViewVec) Location 2 - Decorate 286(outLightVec) Location 3 - Decorate 297(outWorldPos) Location 5 - Decorate 303(outEyePos) Location 4 - 3: TypeVoid - 4: TypeFunction 3 - 6: TypeInt 32 0 - 9: 6(int) Constant 32 - 10: 6(int) Constant 6 - 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 - 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 - 19: 6(int) Constant 1 - 20: 6(int) Constant 4 - 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 - 24: TypeFloat 32 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 9 12 11 - 27: TypeVector 24(float) 2 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 - 29: TypePointer Function 27(fvec2) - 33: 6(int) Constant 56 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 32 28 16 33 11 15 20 - 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 36: TypeArray 27(fvec2) 9 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 28 9 - 38: TypePointer Input 36 - 39(inUV): 38(ptr) Variable Input - 42: 6(int) Constant 8 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 41 37 16 33 11 18 41 39(inUV) 42 - 43: TypeInt 32 1 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 44 9 20 11 - 46: 43(int) Constant 0 - 47: TypePointer Input 27(fvec2) - 50: 43(int) Constant 1 - 53: TypeVector 24(float) 3 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 12 - 55: TypePointer Input 53(fvec3) -56(gl_TessCoord): 55(ptr) Variable Input - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 58 54 16 33 11 18 58 56(gl_TessCoord) 42 - 59: TypePointer Input 24(float) - 67: 6(int) Constant 57 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 28 16 67 11 15 20 - 69: 43(int) Constant 3 - 72: 43(int) Constant 2 - 79: TypePointer Output 27(fvec2) - 80(outUV): 79(ptr) Variable Output - 83: 6(int) Constant 58 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 82 28 16 83 11 18 82 80(outUV) 42 - 90: TypePointer Function 53(fvec3) - 94: 6(int) Constant 60 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 54 16 94 11 15 20 - 96: TypeArray 53(fvec3) 9 - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 54 9 - 98: TypePointer Input 96 - 99(inNormal): 98(ptr) Variable Input - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 101 97 16 94 11 18 101 99(inNormal) 42 - 113: 6(int) Constant 61 - 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 112 54 16 113 11 15 20 - 123: TypePointer Output 53(fvec3) - 124(outNormal): 123(ptr) Variable Output - 127: 6(int) Constant 62 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 126 54 16 127 11 18 126 124(outNormal) 42 - 134: TypeVector 24(float) 4 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 20 - 136: TypePointer Function 134(fvec4) - 140: 6(int) Constant 65 - 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 139 135 16 140 11 15 20 - 142: TypeArray 24(float) 19 - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 19 -144(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142 - 147: 6(int) Constant 1756 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 135 16 19 147 11 11 12 - 150: 6(int) Constant 1774 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 26 16 19 150 11 11 12 - 153: 6(int) Constant 1817 - 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 153 11 11 12 - 154: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 153 11 11 12 - 155: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 19 16 140 11 18 156 11 12 145 148 151 154 - 157: TypeArray 144(gl_PerVertex) 9 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 155 9 - 159: TypePointer Input 157 - 160(gl_in): 159(ptr) Variable Input - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 162 158 16 140 11 18 162 160(gl_in) 42 - 163: TypePointer Input 134(fvec4) - 175: 6(int) Constant 66 - 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 174 135 16 175 11 15 20 - 188: 6(int) Constant 67 - 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 135 16 188 11 15 20 - 196: TypeImage 24(float) 2D sampled format:Unknown - 199: 6(int) Constant 69 - 201: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 198 11 16 199 11 18 200 201 12 - 202: TypeSampledImage 196 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 204 11 16 199 11 18 205 201 12 - 206: TypePointer UniformConstant 202 -207(displacementMap): 206(ptr) Variable UniformConstant - 208: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 209 203 16 199 11 18 209 207(displacementMap) 42 - 212: 24(float) Constant 0 - 215: TypeMatrix 134(fvec4) 4 - 217: TypeBool - 218: 217(bool) ConstantTrue - 216: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 135 20 218 - 219: TypeArray 134(fvec4) 10 - 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 135 10 - 221(UBO): TypeStruct 215 215 134(fvec4) 219 24(float) 24(float) 27(fvec2) 24(float) - 224: 6(int) Constant 30 - 225: 6(int) Constant 7 - 222: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 223 216 16 224 225 11 11 12 - 226: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 223 216 16 224 225 11 11 12 - 229: 6(int) Constant 31 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 228 135 16 229 225 11 11 12 - 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 231 220 16 9 225 11 11 12 - 234: 6(int) Constant 36 - 232: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 233 26 16 234 42 11 11 12 - 235: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 233 26 16 234 42 11 11 12 - 238: 6(int) Constant 35 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 237 28 16 238 225 11 11 12 - 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 233 26 16 234 42 11 11 12 - 240: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 241 19 16 199 11 18 241 11 12 222 226 227 230 232 235 236 239 - 242: TypePointer Uniform 221(UBO) - 243(ubo): 242(ptr) Variable Uniform - 244: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 245 240 16 199 11 18 245 243(ubo) 42 - 246: 43(int) Constant 4 - 247: TypePointer Uniform 24(float) - 251: TypePointer Function 24(float) -256(gl_PerVertex): TypeStruct 134(fvec4) 24(float) 142 142 - 258: 6(int) Constant 165 - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 135 16 19 258 11 11 12 - 260: 6(int) Constant 183 - 259: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 26 16 19 260 11 11 12 - 262: 6(int) Constant 226 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 262 11 11 12 - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 143 16 19 262 11 11 12 - 265: 6(int) Constant 71 - 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 19 16 265 11 18 156 11 12 257 259 261 263 - 266: TypePointer Output 256(gl_PerVertex) - 267: 266(ptr) Variable Output - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 264 16 265 11 18 17 267 42 - 269: TypePointer Uniform 215 - 277: TypePointer Output 134(fvec4) - 279(outViewVec): 123(ptr) Variable Output - 282: 6(int) Constant 74 - 280: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 281 54 16 282 11 18 281 279(outViewVec) 42 -286(outLightVec): 123(ptr) Variable Output - 289: 6(int) Constant 75 - 287: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 288 54 16 289 11 18 288 286(outLightVec) 42 - 290: TypePointer Uniform 134(fvec4) -297(outWorldPos): 123(ptr) Variable Output - 300: 6(int) Constant 76 - 298: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 299 54 16 300 11 18 299 297(outWorldPos) 42 - 303(outEyePos): 123(ptr) Variable Output - 306: 6(int) Constant 77 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 305 54 16 306 11 18 305 303(outEyePos) 42 - 13(main): 3 Function None 4 - 22: Label - 30(uv1): 29(ptr) Variable Function - 64(uv2): 29(ptr) Variable Function - 91(n1): 90(ptr) Variable Function - 110(n2): 90(ptr) Variable Function - 137(pos1): 136(ptr) Variable Function - 172(pos2): 136(ptr) Variable Function - 185(pos): 136(ptr) Variable Function - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 31 30(uv1) 35 - 48: 47(ptr) AccessChain 39(inUV) 46 - 49: 27(fvec2) Load 48 - 51: 47(ptr) AccessChain 39(inUV) 50 - 52: 27(fvec2) Load 51 - 60: 59(ptr) AccessChain 56(gl_TessCoord) 11 - 61: 24(float) Load 60 - 62: 27(fvec2) CompositeConstruct 61 61 - 63: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 49 52 62 - Store 30(uv1) 63 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 64(uv2) 35 - 70: 47(ptr) AccessChain 39(inUV) 69 - 71: 27(fvec2) Load 70 - 73: 47(ptr) AccessChain 39(inUV) 72 - 74: 27(fvec2) Load 73 - 75: 59(ptr) AccessChain 56(gl_TessCoord) 11 - 76: 24(float) Load 75 - 77: 27(fvec2) CompositeConstruct 76 76 - 78: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 71 74 77 - Store 64(uv2) 78 - 84: 27(fvec2) Load 30(uv1) - 85: 27(fvec2) Load 64(uv2) - 86: 59(ptr) AccessChain 56(gl_TessCoord) 19 - 87: 24(float) Load 86 - 88: 27(fvec2) CompositeConstruct 87 87 - 89: 27(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 84 85 88 - Store 80(outUV) 89 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 91(n1) 35 - 102: 55(ptr) AccessChain 99(inNormal) 46 - 103: 53(fvec3) Load 102 - 104: 55(ptr) AccessChain 99(inNormal) 50 - 105: 53(fvec3) Load 104 - 106: 59(ptr) AccessChain 56(gl_TessCoord) 11 - 107: 24(float) Load 106 - 108: 53(fvec3) CompositeConstruct 107 107 107 - 109: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 103 105 108 - Store 91(n1) 109 - 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 111 110(n2) 35 - 115: 55(ptr) AccessChain 99(inNormal) 69 - 116: 53(fvec3) Load 115 - 117: 55(ptr) AccessChain 99(inNormal) 72 - 118: 53(fvec3) Load 117 - 119: 59(ptr) AccessChain 56(gl_TessCoord) 11 - 120: 24(float) Load 119 - 121: 53(fvec3) CompositeConstruct 120 120 120 - 122: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 116 118 121 - Store 110(n2) 122 - 128: 53(fvec3) Load 91(n1) - 129: 53(fvec3) Load 110(n2) - 130: 59(ptr) AccessChain 56(gl_TessCoord) 19 - 131: 24(float) Load 130 - 132: 53(fvec3) CompositeConstruct 131 131 131 - 133: 53(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 128 129 132 - Store 124(outNormal) 133 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 138 137(pos1) 35 - 164: 163(ptr) AccessChain 160(gl_in) 46 46 - 165: 134(fvec4) Load 164 - 166: 163(ptr) AccessChain 160(gl_in) 50 46 - 167: 134(fvec4) Load 166 - 168: 59(ptr) AccessChain 56(gl_TessCoord) 11 - 169: 24(float) Load 168 - 170: 134(fvec4) CompositeConstruct 169 169 169 169 - 171: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 165 167 170 - Store 137(pos1) 171 - 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 173 172(pos2) 35 - 177: 163(ptr) AccessChain 160(gl_in) 69 46 - 178: 134(fvec4) Load 177 - 179: 163(ptr) AccessChain 160(gl_in) 72 46 - 180: 134(fvec4) Load 179 - 181: 59(ptr) AccessChain 56(gl_TessCoord) 11 - 182: 24(float) Load 181 - 183: 134(fvec4) CompositeConstruct 182 182 182 182 - 184: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 178 180 183 - Store 172(pos2) 184 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 186 185(pos) 35 - 190: 134(fvec4) Load 137(pos1) - 191: 134(fvec4) Load 172(pos2) - 192: 59(ptr) AccessChain 56(gl_TessCoord) 19 - 193: 24(float) Load 192 - 194: 134(fvec4) CompositeConstruct 193 193 193 193 - 195: 134(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 190 191 194 - Store 185(pos) 195 - 210: 202 Load 207(displacementMap) - 211: 27(fvec2) Load 80(outUV) - 213: 134(fvec4) ImageSampleExplicitLod 210 211 Lod 212 - 214: 24(float) CompositeExtract 213 0 - 248: 247(ptr) AccessChain 243(ubo) 246 - 249: 24(float) Load 248 - 250: 24(float) FMul 214 249 - 252: 251(ptr) AccessChain 185(pos) 19 - 253: 24(float) Load 252 - 254: 24(float) FSub 253 250 - 255: 251(ptr) AccessChain 185(pos) 19 - Store 255 254 - 270: 269(ptr) AccessChain 243(ubo) 46 - 271: 215 Load 270 - 272: 269(ptr) AccessChain 243(ubo) 50 - 273: 215 Load 272 - 274: 215 MatrixTimesMatrix 271 273 - 275: 134(fvec4) Load 185(pos) - 276: 134(fvec4) MatrixTimesVector 274 275 - 278: 277(ptr) AccessChain 267 46 - Store 278 276 - 283: 134(fvec4) Load 185(pos) - 284: 53(fvec3) VectorShuffle 283 283 0 1 2 - 285: 53(fvec3) FNegate 284 - Store 279(outViewVec) 285 - 291: 290(ptr) AccessChain 243(ubo) 72 - 292: 134(fvec4) Load 291 - 293: 53(fvec3) VectorShuffle 292 292 0 1 2 - 294: 53(fvec3) Load 279(outViewVec) - 295: 53(fvec3) FAdd 293 294 - 296: 53(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 295 - Store 286(outLightVec) 296 - 301: 134(fvec4) Load 185(pos) - 302: 53(fvec3) VectorShuffle 301 301 0 1 2 - Store 297(outWorldPos) 302 - 307: 269(ptr) AccessChain 243(ubo) 50 - 308: 215 Load 307 - 309: 134(fvec4) Load 185(pos) - 310: 134(fvec4) MatrixTimesVector 308 309 - 311: 24(float) CompositeExtract 310 0 - 312: 24(float) CompositeExtract 310 1 - 313: 24(float) CompositeExtract 310 2 - 314: 53(fvec3) CompositeConstruct 311 312 313 - Store 303(outEyePos) 314 + EntryPoint TessellationEvaluation 14 "main" 42 59 86 105 133 169 280 294 302 314 321 + ExecutionMode 14 Quads + ExecutionMode 14 SpacingEqual + ExecutionMode 14 VertexOrderCw + 1: String "" + 9: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 29: String "float" + 36: String "uv1" + 44: String "inUV" + 47: String "int" + 61: String "gl_TessCoord" + 71: String "uv2" + 88: String "outUV" + 100: String "n1" + 107: String "inNormal" + 120: String "n2" + 135: String "outNormal" + 149: String "pos1" + 155: String "gl_Position" + 158: String "gl_PointSize" + 161: String "gl_CullDistance" + 165: String "gl_PerVertex" + 171: String "gl_in" + 185: String "pos2" + 199: String "pos" + 211: String "type.2d.image" + 212: String "@type.2d.image" + 216: String "type.sampled.image" + 217: String "@type.sampled.image" + 221: String "displacementMap" + 235: String "modelview" + 240: String "lightPos" + 243: String "frustumPlanes" + 245: String "tessellatedEdgeSize" + 249: String "viewportDim" + 253: String "UBO" + 257: String "ubo" + 296: String "outViewVec" + 304: String "outLightVec" + 316: String "outWorldPos" + 323: String "outEyePos" + Name 14 "main" + Name 34 "uv1" + Name 42 "inUV" + Name 59 "gl_TessCoord" + Name 69 "uv2" + Name 86 "outUV" + Name 98 "n1" + Name 105 "inNormal" + Name 118 "n2" + Name 133 "outNormal" + Name 147 "pos1" + Name 153 "gl_PerVertex" + MemberName 153(gl_PerVertex) 0 "gl_Position" + MemberName 153(gl_PerVertex) 1 "gl_PointSize" + MemberName 153(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 153(gl_PerVertex) 3 "gl_CullDistance" + Name 169 "gl_in" + Name 183 "pos2" + Name 197 "pos" + Name 219 "displacementMap" + Name 233 "UBO" + MemberName 233(UBO) 0 "projection" + MemberName 233(UBO) 1 "modelview" + MemberName 233(UBO) 2 "lightPos" + MemberName 233(UBO) 3 "frustumPlanes" + MemberName 233(UBO) 4 "displacementFactor" + MemberName 233(UBO) 5 "tessellationFactor" + MemberName 233(UBO) 6 "viewportDim" + MemberName 233(UBO) 7 "tessellatedEdgeSize" + Name 255 "ubo" + Name 270 "gl_PerVertex" + MemberName 270(gl_PerVertex) 0 "gl_Position" + MemberName 270(gl_PerVertex) 1 "gl_PointSize" + MemberName 270(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 270(gl_PerVertex) 3 "gl_CullDistance" + Name 280 "" + Name 294 "outViewVec" + Name 302 "outLightVec" + Name 314 "outWorldPos" + Name 321 "outEyePos" + Decorate 42(inUV) Location 1 + Decorate 59(gl_TessCoord) BuiltIn TessCoord + Decorate 86(outUV) Location 1 + Decorate 105(inNormal) Location 0 + Decorate 133(outNormal) Location 0 + MemberDecorate 153(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 153(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 153(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 153(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 153(gl_PerVertex) Block + Decorate 219(displacementMap) DescriptorSet 0 + Decorate 219(displacementMap) Binding 1 + Decorate 231 ArrayStride 16 + MemberDecorate 233(UBO) 0 ColMajor + MemberDecorate 233(UBO) 0 Offset 0 + MemberDecorate 233(UBO) 0 MatrixStride 16 + MemberDecorate 233(UBO) 1 ColMajor + MemberDecorate 233(UBO) 1 Offset 64 + MemberDecorate 233(UBO) 1 MatrixStride 16 + MemberDecorate 233(UBO) 2 Offset 128 + MemberDecorate 233(UBO) 3 Offset 144 + MemberDecorate 233(UBO) 4 Offset 240 + MemberDecorate 233(UBO) 5 Offset 244 + MemberDecorate 233(UBO) 6 Offset 248 + MemberDecorate 233(UBO) 7 Offset 256 + Decorate 233(UBO) Block + Decorate 255(ubo) DescriptorSet 0 + Decorate 255(ubo) Binding 0 + MemberDecorate 270(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 270(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 270(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 270(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 270(gl_PerVertex) Block + Decorate 294(outViewVec) Location 2 + Decorate 302(outLightVec) Location 3 + Decorate 314(outWorldPos) Location 5 + Decorate 321(outEyePos) Location 4 + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 27: 7(int) Constant 56 + 28: TypeFloat 32 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 + 31: TypeVector 28(float) 2 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 22 + 33: TypePointer Function 31(fvec2) + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 36 32 17 27 12 16 21 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 39: TypeArray 31(fvec2) 10 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 32 10 + 41: TypePointer Input 39 + 42(inUV): 41(ptr) Variable Input + 45: 7(int) Constant 8 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 44 40 17 27 12 19 44 42(inUV) 45 + 46: TypeInt 32 1 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 21 12 + 49: 46(int) Constant 0 + 50: TypePointer Input 31(fvec2) + 53: 46(int) Constant 1 + 56: TypeVector 28(float) 3 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 + 58: TypePointer Input 56(fvec3) +59(gl_TessCoord): 58(ptr) Variable Input + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 61 57 17 27 12 19 61 59(gl_TessCoord) 45 + 62: TypePointer Input 28(float) + 68: 7(int) Constant 57 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 71 32 17 68 12 16 21 + 73: 46(int) Constant 3 + 76: 46(int) Constant 2 + 84: 7(int) Constant 58 + 85: TypePointer Output 31(fvec2) + 86(outUV): 85(ptr) Variable Output + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 88 32 17 84 12 19 88 86(outUV) 45 + 96: 7(int) Constant 60 + 97: TypePointer Function 56(fvec3) + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 100 57 17 96 12 16 21 + 102: TypeArray 56(fvec3) 10 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 57 10 + 104: TypePointer Input 102 + 105(inNormal): 104(ptr) Variable Input + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 107 103 17 96 12 19 107 105(inNormal) 45 + 117: 7(int) Constant 61 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 57 17 117 12 16 21 + 131: 7(int) Constant 62 + 132: TypePointer Output 56(fvec3) + 133(outNormal): 132(ptr) Variable Output + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 135 57 17 131 12 19 135 133(outNormal) 45 + 143: 7(int) Constant 65 + 144: TypeVector 28(float) 4 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 21 + 146: TypePointer Function 144(fvec4) + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 149 145 17 143 12 16 21 + 151: TypeArray 28(float) 20 + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 20 +153(gl_PerVertex): TypeStruct 144(fvec4) 28(float) 151 151 + 156: 7(int) Constant 1756 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 145 17 20 156 12 12 13 + 159: 7(int) Constant 1774 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 30 17 20 159 12 12 13 + 162: 7(int) Constant 1817 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 162 12 12 13 + 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 162 12 12 13 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 20 17 143 12 19 165 12 13 154 157 160 163 + 166: TypeArray 153(gl_PerVertex) 10 + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 164 10 + 168: TypePointer Input 166 + 169(gl_in): 168(ptr) Variable Input + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 171 167 17 143 12 19 171 169(gl_in) 45 + 172: TypePointer Input 144(fvec4) + 182: 7(int) Constant 66 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 145 17 182 12 16 21 + 196: 7(int) Constant 67 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 199 145 17 196 12 16 21 + 208: 7(int) Constant 69 + 209: TypeImage 28(float) 2D sampled format:Unknown + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 211 12 17 208 12 19 212 213 13 + 214: TypeSampledImage 209 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 216 12 17 208 12 19 217 213 13 + 218: TypePointer UniformConstant 214 +219(displacementMap): 218(ptr) Variable UniformConstant + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 221 215 17 208 12 19 221 219(displacementMap) 45 + 224: 28(float) Constant 0 + 227: TypeMatrix 144(fvec4) 4 + 229: TypeBool + 230: 229(bool) ConstantTrue + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 145 21 230 + 231: TypeArray 144(fvec4) 11 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 145 11 + 233(UBO): TypeStruct 227 227 144(fvec4) 231 28(float) 28(float) 31(fvec2) 28(float) + 236: 7(int) Constant 30 + 237: 7(int) Constant 7 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 228 17 236 237 12 12 13 + 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 228 17 236 237 12 12 13 + 241: 7(int) Constant 31 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 240 145 17 241 237 12 12 13 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 243 232 17 10 237 12 12 13 + 246: 7(int) Constant 36 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 30 17 246 45 12 12 13 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 30 17 246 45 12 12 13 + 250: 7(int) Constant 35 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 249 32 17 250 237 12 12 13 + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 30 17 246 45 12 12 13 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 253 20 17 208 12 19 253 12 13 234 238 239 242 244 247 248 251 + 254: TypePointer Uniform 233(UBO) + 255(ubo): 254(ptr) Variable Uniform + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 252 17 208 12 19 257 255(ubo) 45 + 258: 46(int) Constant 4 + 259: TypePointer Uniform 28(float) + 263: TypePointer Function 28(float) + 269: 7(int) Constant 71 +270(gl_PerVertex): TypeStruct 144(fvec4) 28(float) 151 151 + 272: 7(int) Constant 165 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 145 17 20 272 12 12 13 + 274: 7(int) Constant 183 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 30 17 20 274 12 12 13 + 276: 7(int) Constant 226 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 276 12 12 13 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 276 12 12 13 + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 20 17 269 12 19 165 12 13 271 273 275 277 + 279: TypePointer Output 270(gl_PerVertex) + 280: 279(ptr) Variable Output + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 278 17 269 12 19 1 280 45 + 282: TypePointer Uniform 227 + 290: TypePointer Output 144(fvec4) + 293: 7(int) Constant 74 + 294(outViewVec): 132(ptr) Variable Output + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 296 57 17 293 12 19 296 294(outViewVec) 45 + 301: 7(int) Constant 75 +302(outLightVec): 132(ptr) Variable Output + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 304 57 17 301 12 19 304 302(outLightVec) 45 + 305: TypePointer Uniform 144(fvec4) + 313: 7(int) Constant 76 +314(outWorldPos): 132(ptr) Variable Output + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 316 57 17 313 12 19 316 314(outWorldPos) 45 + 320: 7(int) Constant 77 + 321(outEyePos): 132(ptr) Variable Output + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 323 57 17 320 12 19 323 321(outEyePos) 45 + Line 1 53 11 + 14(main): 4 Function None 5 + 23: Label + 34(uv1): 33(ptr) Variable Function + 69(uv2): 33(ptr) Variable Function + 98(n1): 97(ptr) Variable Function + 118(n2): 97(ptr) Variable Function + 147(pos1): 146(ptr) Variable Function + 183(pos2): 146(ptr) Variable Function + 197(pos): 146(ptr) Variable Function + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 35 34(uv1) 38 + 51: 50(ptr) AccessChain 42(inUV) 49 + 52: 31(fvec2) Load 51 + 54: 50(ptr) AccessChain 42(inUV) 53 + 55: 31(fvec2) Load 54 + 63: 62(ptr) AccessChain 59(gl_TessCoord) 12 + 64: 28(float) Load 63 + 65: 31(fvec2) CompositeConstruct 64 64 + 66: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 52 55 65 + Store 34(uv1) 66 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 68 68 12 12 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 70 69(uv2) 38 + 74: 50(ptr) AccessChain 42(inUV) 73 + 75: 31(fvec2) Load 74 + 77: 50(ptr) AccessChain 42(inUV) 76 + 78: 31(fvec2) Load 77 + 79: 62(ptr) AccessChain 59(gl_TessCoord) 12 + 80: 28(float) Load 79 + 81: 31(fvec2) CompositeConstruct 80 80 + 82: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 75 78 81 + Store 69(uv2) 82 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 84 84 12 12 + 89: 31(fvec2) Load 34(uv1) + 90: 31(fvec2) Load 69(uv2) + 91: 62(ptr) AccessChain 59(gl_TessCoord) 20 + 92: 28(float) Load 91 + 93: 31(fvec2) CompositeConstruct 92 92 + 94: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 89 90 93 + Store 86(outUV) 94 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 96 96 12 12 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 99 98(n1) 38 + 108: 58(ptr) AccessChain 105(inNormal) 49 + 109: 56(fvec3) Load 108 + 110: 58(ptr) AccessChain 105(inNormal) 53 + 111: 56(fvec3) Load 110 + 112: 62(ptr) AccessChain 59(gl_TessCoord) 12 + 113: 28(float) Load 112 + 114: 56(fvec3) CompositeConstruct 113 113 113 + 115: 56(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 109 111 114 + Store 98(n1) 115 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 117 117 12 12 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(n2) 38 + 122: 58(ptr) AccessChain 105(inNormal) 73 + 123: 56(fvec3) Load 122 + 124: 58(ptr) AccessChain 105(inNormal) 76 + 125: 56(fvec3) Load 124 + 126: 62(ptr) AccessChain 59(gl_TessCoord) 12 + 127: 28(float) Load 126 + 128: 56(fvec3) CompositeConstruct 127 127 127 + 129: 56(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 123 125 128 + Store 118(n2) 129 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 131 131 12 12 + 136: 56(fvec3) Load 98(n1) + 137: 56(fvec3) Load 118(n2) + 138: 62(ptr) AccessChain 59(gl_TessCoord) 20 + 139: 28(float) Load 138 + 140: 56(fvec3) CompositeConstruct 139 139 139 + 141: 56(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 136 137 140 + Store 133(outNormal) 141 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 143 143 12 12 + 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 148 147(pos1) 38 + 173: 172(ptr) AccessChain 169(gl_in) 49 49 + 174: 144(fvec4) Load 173 + 175: 172(ptr) AccessChain 169(gl_in) 53 49 + 176: 144(fvec4) Load 175 + 177: 62(ptr) AccessChain 59(gl_TessCoord) 12 + 178: 28(float) Load 177 + 179: 144(fvec4) CompositeConstruct 178 178 178 178 + 180: 144(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 174 176 179 + Store 147(pos1) 180 + 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 182 182 12 12 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(pos2) 38 + 187: 172(ptr) AccessChain 169(gl_in) 73 49 + 188: 144(fvec4) Load 187 + 189: 172(ptr) AccessChain 169(gl_in) 76 49 + 190: 144(fvec4) Load 189 + 191: 62(ptr) AccessChain 59(gl_TessCoord) 12 + 192: 28(float) Load 191 + 193: 144(fvec4) CompositeConstruct 192 192 192 192 + 194: 144(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 188 190 193 + Store 183(pos2) 194 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 196 196 12 12 + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 198 197(pos) 38 + 201: 144(fvec4) Load 147(pos1) + 202: 144(fvec4) Load 183(pos2) + 203: 62(ptr) AccessChain 59(gl_TessCoord) 20 + 204: 28(float) Load 203 + 205: 144(fvec4) CompositeConstruct 204 204 204 204 + 206: 144(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 201 202 205 + Store 197(pos) 206 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 208 208 12 12 + 222: 214 Load 219(displacementMap) + 223: 31(fvec2) Load 86(outUV) + 225: 144(fvec4) ImageSampleExplicitLod 222 223 Lod 224 + 226: 28(float) CompositeExtract 225 0 + 260: 259(ptr) AccessChain 255(ubo) 258 + 261: 28(float) Load 260 + 262: 28(float) FMul 226 261 + 264: 263(ptr) AccessChain 197(pos) 20 + 265: 28(float) Load 264 + 266: 28(float) FSub 265 262 + 267: 263(ptr) AccessChain 197(pos) 20 + Store 267 266 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 269 269 12 12 + 283: 282(ptr) AccessChain 255(ubo) 49 + 284: 227 Load 283 + 285: 282(ptr) AccessChain 255(ubo) 53 + 286: 227 Load 285 + 287: 227 MatrixTimesMatrix 284 286 + 288: 144(fvec4) Load 197(pos) + 289: 144(fvec4) MatrixTimesVector 287 288 + 291: 290(ptr) AccessChain 280 49 + Store 291 289 + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 293 293 12 12 + 297: 144(fvec4) Load 197(pos) + 298: 56(fvec3) VectorShuffle 297 297 0 1 2 + 299: 56(fvec3) FNegate 298 + Store 294(outViewVec) 299 + 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 301 301 12 12 + 306: 305(ptr) AccessChain 255(ubo) 76 + 307: 144(fvec4) Load 306 + 308: 56(fvec3) VectorShuffle 307 307 0 1 2 + 309: 56(fvec3) Load 294(outViewVec) + 310: 56(fvec3) FAdd 308 309 + 311: 56(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 310 + Store 302(outLightVec) 311 + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 313 313 12 12 + 317: 144(fvec4) Load 197(pos) + 318: 56(fvec3) VectorShuffle 317 317 0 1 2 + Store 314(outWorldPos) 318 + 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 320 320 12 12 + 324: 282(ptr) AccessChain 255(ubo) 53 + 325: 227 Load 324 + 326: 144(fvec4) Load 197(pos) + 327: 144(fvec4) MatrixTimesVector 325 326 + 328: 28(float) CompositeExtract 327 0 + 329: 28(float) CompositeExtract 327 1 + 330: 28(float) CompositeExtract 327 2 + 331: 56(fvec3) CompositeConstruct 328 329 330 + Store 321(outEyePos) 331 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index 24025de9f4..e0c9d60003 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,484 +1,541 @@ spv.debuginfo.glsl.vert -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 374 +// Id's are bound by 424 Capability Shader Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 13 "main" 30 36 40 47 55 70 247 264 269 293 307 325 359 367 - 8: String "uint" - 14: String "main" - 17: String "" - 25: String "float" - 32: String "outColor" - 38: String "inColor" - 42: String "outUV" - 49: String "inUV" - 52: String "int" - 57: String "instanceTexIndex" - 66: String "s" - 72: String "instanceRot" - 84: String "modelview" - 89: String "lightPos" - 92: String "globSpeed" - 96: String "UBO" - 100: String "ubo" - 109: String "c" - 123: String "mx" - 157: String "my" - 185: String "mz" - 201: String "rotMat" - 225: String "gRotMat" - 244: String "locPos" - 249: String "inPos" - 259: String "pos" - 266: String "instanceScale" - 271: String "instancePos" - 282: String "gl_Position" - 285: String "gl_PointSize" - 287: String "gl_CullDistance" - 290: String "gl_PerVertex" - 309: String "outNormal" - 327: String "inNormal" - 342: String "lPos" - 361: String "outLightVec" - 369: String "outViewVec" - Name 13 "main" - Name 30 "outColor" - Name 36 "inColor" - Name 40 "outUV" - Name 47 "inUV" - Name 55 "instanceTexIndex" - Name 64 "s" - Name 70 "instanceRot" - Name 82 "UBO" - MemberName 82(UBO) 0 "projection" - MemberName 82(UBO) 1 "modelview" - MemberName 82(UBO) 2 "lightPos" - MemberName 82(UBO) 3 "locSpeed" - MemberName 82(UBO) 4 "globSpeed" - Name 98 "ubo" - Name 107 "c" - Name 121 "mx" - Name 155 "my" - Name 183 "mz" - Name 199 "rotMat" - Name 223 "gRotMat" - Name 242 "locPos" - Name 247 "inPos" - Name 257 "pos" - Name 264 "instanceScale" - Name 269 "instancePos" - Name 280 "gl_PerVertex" - MemberName 280(gl_PerVertex) 0 "gl_Position" - MemberName 280(gl_PerVertex) 1 "gl_PointSize" - MemberName 280(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 280(gl_PerVertex) 3 "gl_CullDistance" - Name 293 "" - Name 307 "outNormal" - Name 325 "inNormal" - Name 340 "lPos" - Name 359 "outLightVec" - Name 367 "outViewVec" - Decorate 30(outColor) Location 1 - Decorate 36(inColor) Location 3 - Decorate 40(outUV) Location 2 - Decorate 47(inUV) Location 2 - Decorate 55(instanceTexIndex) Location 7 - Decorate 70(instanceRot) Location 5 - MemberDecorate 82(UBO) 0 ColMajor - MemberDecorate 82(UBO) 0 Offset 0 - MemberDecorate 82(UBO) 0 MatrixStride 16 - MemberDecorate 82(UBO) 1 ColMajor - MemberDecorate 82(UBO) 1 Offset 64 - MemberDecorate 82(UBO) 1 MatrixStride 16 - MemberDecorate 82(UBO) 2 Offset 128 - MemberDecorate 82(UBO) 3 Offset 144 - MemberDecorate 82(UBO) 4 Offset 148 - Decorate 82(UBO) Block - Decorate 98(ubo) DescriptorSet 0 - Decorate 98(ubo) Binding 0 - Decorate 247(inPos) Location 0 - Decorate 264(instanceScale) Location 6 - Decorate 269(instancePos) Location 4 - MemberDecorate 280(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 280(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 280(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 280(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 280(gl_PerVertex) Block - Decorate 307(outNormal) Location 0 - Decorate 325(inNormal) Location 1 - Decorate 359(outLightVec) Location 4 - Decorate 367(outViewVec) Location 3 - 3: TypeVoid - 4: TypeFunction 3 - 6: TypeInt 32 0 - 9: 6(int) Constant 32 - 10: 6(int) Constant 6 - 11: 6(int) Constant 0 - 7: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 9 10 11 - 12: 6(int) Constant 3 - 5: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 12 3 - 16: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 17 - 19: 6(int) Constant 1 - 20: 6(int) Constant 4 - 21: 6(int) Constant 2 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 19 20 16 21 - 15: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 14 5 16 11 11 18 14 12 11 - 24: TypeFloat 32 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 9 12 11 - 27: TypeVector 24(float) 3 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 12 - 29: TypePointer Output 27(fvec3) - 30(outColor): 29(ptr) Variable Output - 33: 6(int) Constant 56 - 34: 6(int) Constant 8 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 32 28 16 33 11 18 32 30(outColor) 34 - 35: TypePointer Input 27(fvec3) - 36(inColor): 35(ptr) Variable Input - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 38 28 16 33 11 18 38 36(inColor) 34 - 40(outUV): 29(ptr) Variable Output - 43: 6(int) Constant 57 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 42 28 16 43 11 18 42 40(outUV) 34 - 44: TypeVector 24(float) 2 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 - 46: TypePointer Input 44(fvec2) - 47(inUV): 46(ptr) Variable Input - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 49 45 16 43 11 18 49 47(inUV) 34 - 51: TypeInt 32 1 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 52 9 20 11 - 54: TypePointer Input 51(int) -55(instanceTexIndex): 54(ptr) Variable Input - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 57 53 16 43 11 18 57 55(instanceTexIndex) 34 - 63: TypePointer Function 24(float) - 67: 6(int) Constant 62 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 26 16 67 11 15 20 - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 70(instanceRot): 35(ptr) Variable Input - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 72 28 16 67 11 18 72 70(instanceRot) 34 - 73: TypePointer Input 24(float) - 76: TypeVector 24(float) 4 - 77: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 20 - 78: TypeMatrix 76(fvec4) 4 - 80: TypeBool - 81: 80(bool) ConstantTrue - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 77 20 81 - 82(UBO): TypeStruct 78 78 76(fvec4) 24(float) 24(float) - 85: 6(int) Constant 42 - 86: 6(int) Constant 7 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 79 16 85 86 11 11 12 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 79 16 85 86 11 11 12 - 90: 6(int) Constant 43 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 77 16 90 86 11 11 12 - 93: 6(int) Constant 45 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 26 16 93 34 11 11 12 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 26 16 93 34 11 11 12 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 96 19 16 67 11 18 96 11 12 83 87 88 91 94 - 97: TypePointer Uniform 82(UBO) - 98(ubo): 97(ptr) Variable Uniform - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 100 95 16 67 11 18 100 98(ubo) 34 - 101: 51(int) Constant 3 - 102: TypePointer Uniform 24(float) - 110: 6(int) Constant 63 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 26 16 110 11 15 20 - 118: TypeMatrix 27(fvec3) 3 - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 28 12 81 - 120: TypePointer Function 118 - 124: 6(int) Constant 65 - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 119 16 124 11 15 20 - 126: 51(int) Constant 0 - 129: 24(float) Constant 0 - 131: TypePointer Function 27(fvec3) - 133: 51(int) Constant 1 - 139: 51(int) Constant 2 - 140: 24(float) Constant 1065353216 - 141: 27(fvec3) ConstantComposite 129 129 140 - 158: 6(int) Constant 73 - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 119 16 158 11 15 20 - 164: 27(fvec3) ConstantComposite 129 140 129 - 186: 6(int) Constant 81 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 119 16 186 11 15 20 - 188: 27(fvec3) ConstantComposite 140 129 129 - 202: 6(int) Constant 85 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 201 119 16 202 11 15 20 - 211: 51(int) Constant 4 - 222: TypePointer Function 78 - 226: 6(int) Constant 90 - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 79 16 226 11 15 20 - 231: TypePointer Function 76(fvec4) - 233: 76(fvec4) ConstantComposite 129 140 129 129 - 240: 76(fvec4) ConstantComposite 129 129 129 140 - 245: 6(int) Constant 95 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 77 16 245 11 15 20 - 247(inPos): 35(ptr) Variable Input - 248: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 249 28 16 245 11 18 249 247(inPos) 34 - 260: 6(int) Constant 96 - 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 259 77 16 260 11 15 20 -264(instanceScale): 73(ptr) Variable Input - 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 266 26 16 260 11 18 266 264(instanceScale) 34 -269(instancePos): 35(ptr) Variable Input - 270: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 271 28 16 260 11 18 271 269(instancePos) 34 - 278: TypeArray 24(float) 19 - 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 19 -280(gl_PerVertex): TypeStruct 76(fvec4) 24(float) 278 278 - 283: 6(int) Constant 24 - 281: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 282 77 16 19 283 11 11 12 - 284: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 285 26 16 19 85 11 11 12 - 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 287 279 16 19 202 11 11 12 - 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 287 279 16 19 202 11 11 12 - 291: 6(int) Constant 98 - 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 290 19 16 291 11 18 290 11 12 281 284 286 288 - 292: TypePointer Output 280(gl_PerVertex) - 293: 292(ptr) Variable Output - 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 17 289 16 291 11 18 17 293 34 - 295: TypePointer Uniform 78 - 305: TypePointer Output 76(fvec4) - 307(outNormal): 29(ptr) Variable Output - 310: 6(int) Constant 99 - 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 309 28 16 310 11 18 309 307(outNormal) 34 - 325(inNormal): 35(ptr) Variable Input - 326: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 327 28 16 310 11 18 327 325(inNormal) 34 - 343: 6(int) Constant 102 - 341: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 342 28 16 343 11 15 20 - 354: TypePointer Uniform 76(fvec4) -359(outLightVec): 29(ptr) Variable Output - 362: 6(int) Constant 103 - 360: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 361 28 16 362 11 18 361 359(outLightVec) 34 - 367(outViewVec): 29(ptr) Variable Output - 370: 6(int) Constant 104 - 368: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 369 28 16 370 11 18 369 367(outViewVec) 34 - 13(main): 3 Function None 4 - 22: Label - 64(s): 63(ptr) Variable Function - 107(c): 63(ptr) Variable Function - 121(mx): 120(ptr) Variable Function - 155(my): 120(ptr) Variable Function - 183(mz): 120(ptr) Variable Function - 199(rotMat): 120(ptr) Variable Function - 223(gRotMat): 222(ptr) Variable Function - 242(locPos): 231(ptr) Variable Function - 257(pos): 231(ptr) Variable Function - 340(lPos): 131(ptr) Variable Function - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 15 13(main) - 39: 27(fvec3) Load 36(inColor) - Store 30(outColor) 39 - 50: 44(fvec2) Load 47(inUV) - 58: 51(int) Load 55(instanceTexIndex) - 59: 24(float) ConvertSToF 58 - 60: 24(float) CompositeExtract 50 0 - 61: 24(float) CompositeExtract 50 1 - 62: 27(fvec3) CompositeConstruct 60 61 59 - Store 40(outUV) 62 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 64(s) 69 - 74: 73(ptr) AccessChain 70(instanceRot) 11 - 75: 24(float) Load 74 - 103: 102(ptr) AccessChain 98(ubo) 101 - 104: 24(float) Load 103 - 105: 24(float) FAdd 75 104 - 106: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 105 - Store 64(s) 106 - 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(c) 69 - 112: 73(ptr) AccessChain 70(instanceRot) 11 - 113: 24(float) Load 112 - 114: 102(ptr) AccessChain 98(ubo) 101 - 115: 24(float) Load 114 - 116: 24(float) FAdd 113 115 - 117: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 116 - Store 107(c) 117 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(mx) 69 - 127: 24(float) Load 107(c) - 128: 24(float) Load 64(s) - 130: 27(fvec3) CompositeConstruct 127 128 129 - 132: 131(ptr) AccessChain 121(mx) 126 - Store 132 130 - 134: 24(float) Load 64(s) - 135: 24(float) FNegate 134 - 136: 24(float) Load 107(c) - 137: 27(fvec3) CompositeConstruct 135 136 129 - 138: 131(ptr) AccessChain 121(mx) 133 - Store 138 137 - 142: 131(ptr) AccessChain 121(mx) 139 - Store 142 141 - 143: 73(ptr) AccessChain 70(instanceRot) 19 - 144: 24(float) Load 143 - 145: 102(ptr) AccessChain 98(ubo) 101 - 146: 24(float) Load 145 - 147: 24(float) FAdd 144 146 - 148: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 147 - Store 64(s) 148 - 149: 73(ptr) AccessChain 70(instanceRot) 19 - 150: 24(float) Load 149 - 151: 102(ptr) AccessChain 98(ubo) 101 - 152: 24(float) Load 151 - 153: 24(float) FAdd 150 152 - 154: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 153 - Store 107(c) 154 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 156 155(my) 69 - 160: 24(float) Load 107(c) - 161: 24(float) Load 64(s) - 162: 27(fvec3) CompositeConstruct 160 129 161 - 163: 131(ptr) AccessChain 155(my) 126 - Store 163 162 - 165: 131(ptr) AccessChain 155(my) 133 - Store 165 164 - 166: 24(float) Load 64(s) - 167: 24(float) FNegate 166 - 168: 24(float) Load 107(c) - 169: 27(fvec3) CompositeConstruct 167 129 168 - 170: 131(ptr) AccessChain 155(my) 139 - Store 170 169 - 171: 73(ptr) AccessChain 70(instanceRot) 21 - 172: 24(float) Load 171 - 173: 102(ptr) AccessChain 98(ubo) 101 - 174: 24(float) Load 173 - 175: 24(float) FAdd 172 174 - 176: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 175 - Store 64(s) 176 - 177: 73(ptr) AccessChain 70(instanceRot) 21 - 178: 24(float) Load 177 - 179: 102(ptr) AccessChain 98(ubo) 101 - 180: 24(float) Load 179 - 181: 24(float) FAdd 178 180 - 182: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 181 - Store 107(c) 182 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(mz) 69 - 189: 131(ptr) AccessChain 183(mz) 126 - Store 189 188 - 190: 24(float) Load 107(c) - 191: 24(float) Load 64(s) - 192: 27(fvec3) CompositeConstruct 129 190 191 - 193: 131(ptr) AccessChain 183(mz) 133 - Store 193 192 - 194: 24(float) Load 64(s) - 195: 24(float) FNegate 194 - 196: 24(float) Load 107(c) - 197: 27(fvec3) CompositeConstruct 129 195 196 - 198: 131(ptr) AccessChain 183(mz) 139 - Store 198 197 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 200 199(rotMat) 69 - 204: 118 Load 183(mz) - 205: 118 Load 155(my) - 206: 118 MatrixTimesMatrix 204 205 - 207: 118 Load 121(mx) - 208: 118 MatrixTimesMatrix 206 207 - Store 199(rotMat) 208 - 209: 73(ptr) AccessChain 70(instanceRot) 19 - 210: 24(float) Load 209 - 212: 102(ptr) AccessChain 98(ubo) 211 - 213: 24(float) Load 212 - 214: 24(float) FAdd 210 213 - 215: 24(float) ExtInst 2(GLSL.std.450) 13(Sin) 214 - Store 64(s) 215 - 216: 73(ptr) AccessChain 70(instanceRot) 19 - 217: 24(float) Load 216 - 218: 102(ptr) AccessChain 98(ubo) 211 - 219: 24(float) Load 218 - 220: 24(float) FAdd 217 219 - 221: 24(float) ExtInst 2(GLSL.std.450) 14(Cos) 220 - Store 107(c) 221 - 227: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(gRotMat) 69 - 228: 24(float) Load 107(c) - 229: 24(float) Load 64(s) - 230: 76(fvec4) CompositeConstruct 228 129 229 129 - 232: 231(ptr) AccessChain 223(gRotMat) 126 - Store 232 230 - 234: 231(ptr) AccessChain 223(gRotMat) 133 - Store 234 233 - 235: 24(float) Load 64(s) - 236: 24(float) FNegate 235 - 237: 24(float) Load 107(c) - 238: 76(fvec4) CompositeConstruct 236 129 237 129 - 239: 231(ptr) AccessChain 223(gRotMat) 139 - Store 239 238 - 241: 231(ptr) AccessChain 223(gRotMat) 101 - Store 241 240 - 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(locPos) 69 - 250: 27(fvec3) Load 247(inPos) - 251: 118 Load 199(rotMat) - 252: 27(fvec3) VectorTimesMatrix 250 251 - 253: 24(float) CompositeExtract 252 0 - 254: 24(float) CompositeExtract 252 1 - 255: 24(float) CompositeExtract 252 2 - 256: 76(fvec4) CompositeConstruct 253 254 255 140 - Store 242(locPos) 256 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 258 257(pos) 69 - 262: 76(fvec4) Load 242(locPos) - 263: 27(fvec3) VectorShuffle 262 262 0 1 2 - 267: 24(float) Load 264(instanceScale) - 268: 27(fvec3) VectorTimesScalar 263 267 - 272: 27(fvec3) Load 269(instancePos) - 273: 27(fvec3) FAdd 268 272 - 274: 24(float) CompositeExtract 273 0 - 275: 24(float) CompositeExtract 273 1 - 276: 24(float) CompositeExtract 273 2 - 277: 76(fvec4) CompositeConstruct 274 275 276 140 - Store 257(pos) 277 - 296: 295(ptr) AccessChain 98(ubo) 126 - 297: 78 Load 296 - 298: 295(ptr) AccessChain 98(ubo) 133 - 299: 78 Load 298 - 300: 78 MatrixTimesMatrix 297 299 - 301: 78 Load 223(gRotMat) - 302: 78 MatrixTimesMatrix 300 301 - 303: 76(fvec4) Load 257(pos) - 304: 76(fvec4) MatrixTimesVector 302 303 - 306: 305(ptr) AccessChain 293 126 - Store 306 304 - 311: 295(ptr) AccessChain 98(ubo) 133 - 312: 78 Load 311 - 313: 78 Load 223(gRotMat) - 314: 78 MatrixTimesMatrix 312 313 - 315: 76(fvec4) CompositeExtract 314 0 - 316: 27(fvec3) VectorShuffle 315 315 0 1 2 - 317: 76(fvec4) CompositeExtract 314 1 - 318: 27(fvec3) VectorShuffle 317 317 0 1 2 - 319: 76(fvec4) CompositeExtract 314 2 - 320: 27(fvec3) VectorShuffle 319 319 0 1 2 - 321: 118 CompositeConstruct 316 318 320 - 322: 118 Load 199(rotMat) - 323: 118 ExtInst 2(GLSL.std.450) 34(MatrixInverse) 322 - 324: 118 MatrixTimesMatrix 321 323 - 328: 27(fvec3) Load 325(inNormal) - 329: 27(fvec3) MatrixTimesVector 324 328 - Store 307(outNormal) 329 - 330: 295(ptr) AccessChain 98(ubo) 133 - 331: 78 Load 330 - 332: 27(fvec3) Load 247(inPos) - 333: 27(fvec3) Load 269(instancePos) - 334: 27(fvec3) FAdd 332 333 - 335: 24(float) CompositeExtract 334 0 - 336: 24(float) CompositeExtract 334 1 - 337: 24(float) CompositeExtract 334 2 - 338: 76(fvec4) CompositeConstruct 335 336 337 140 - 339: 76(fvec4) MatrixTimesVector 331 338 - Store 257(pos) 339 - 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 341 340(lPos) 69 - 345: 295(ptr) AccessChain 98(ubo) 133 - 346: 78 Load 345 - 347: 76(fvec4) CompositeExtract 346 0 - 348: 27(fvec3) VectorShuffle 347 347 0 1 2 - 349: 76(fvec4) CompositeExtract 346 1 - 350: 27(fvec3) VectorShuffle 349 349 0 1 2 - 351: 76(fvec4) CompositeExtract 346 2 - 352: 27(fvec3) VectorShuffle 351 351 0 1 2 - 353: 118 CompositeConstruct 348 350 352 - 355: 354(ptr) AccessChain 98(ubo) 139 - 356: 76(fvec4) Load 355 - 357: 27(fvec3) VectorShuffle 356 356 0 1 2 - 358: 27(fvec3) MatrixTimesVector 353 357 - Store 340(lPos) 358 - 363: 27(fvec3) Load 340(lPos) - 364: 76(fvec4) Load 257(pos) - 365: 27(fvec3) VectorShuffle 364 364 0 1 2 - 366: 27(fvec3) FSub 363 365 - Store 359(outLightVec) 366 - 371: 76(fvec4) Load 257(pos) - 372: 27(fvec3) VectorShuffle 371 371 0 1 2 - 373: 27(fvec3) FNegate 372 - Store 367(outViewVec) 373 + EntryPoint Vertex 14 "main" 34 39 45 51 59 75 289 307 312 337 353 370 409 418 + 1: String "" + 9: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 29: String "float" + 36: String "outColor" + 41: String "inColor" + 47: String "outUV" + 53: String "inUV" + 56: String "int" + 61: String "instanceTexIndex" + 72: String "s" + 77: String "instanceRot" + 89: String "modelview" + 94: String "lightPos" + 97: String "globSpeed" + 101: String "UBO" + 105: String "ubo" + 116: String "c" + 131: String "mx" + 174: String "my" + 211: String "mz" + 232: String "rotMat" + 261: String "gRotMat" + 287: String "locPos" + 291: String "inPos" + 303: String "pos" + 309: String "instanceScale" + 314: String "instancePos" + 327: String "gl_Position" + 330: String "gl_PointSize" + 332: String "gl_CullDistance" + 335: String "gl_PerVertex" + 355: String "outNormal" + 372: String "inNormal" + 391: String "lPos" + 411: String "outLightVec" + 420: String "outViewVec" + Name 14 "main" + Name 34 "outColor" + Name 39 "inColor" + Name 45 "outUV" + Name 51 "inUV" + Name 59 "instanceTexIndex" + Name 70 "s" + Name 75 "instanceRot" + Name 87 "UBO" + MemberName 87(UBO) 0 "projection" + MemberName 87(UBO) 1 "modelview" + MemberName 87(UBO) 2 "lightPos" + MemberName 87(UBO) 3 "locSpeed" + MemberName 87(UBO) 4 "globSpeed" + Name 103 "ubo" + Name 114 "c" + Name 129 "mx" + Name 172 "my" + Name 209 "mz" + Name 230 "rotMat" + Name 259 "gRotMat" + Name 285 "locPos" + Name 289 "inPos" + Name 301 "pos" + Name 307 "instanceScale" + Name 312 "instancePos" + Name 325 "gl_PerVertex" + MemberName 325(gl_PerVertex) 0 "gl_Position" + MemberName 325(gl_PerVertex) 1 "gl_PointSize" + MemberName 325(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 325(gl_PerVertex) 3 "gl_CullDistance" + Name 337 "" + Name 353 "outNormal" + Name 370 "inNormal" + Name 389 "lPos" + Name 409 "outLightVec" + Name 418 "outViewVec" + Decorate 34(outColor) Location 1 + Decorate 39(inColor) Location 3 + Decorate 45(outUV) Location 2 + Decorate 51(inUV) Location 2 + Decorate 59(instanceTexIndex) Location 7 + Decorate 75(instanceRot) Location 5 + MemberDecorate 87(UBO) 0 ColMajor + MemberDecorate 87(UBO) 0 Offset 0 + MemberDecorate 87(UBO) 0 MatrixStride 16 + MemberDecorate 87(UBO) 1 ColMajor + MemberDecorate 87(UBO) 1 Offset 64 + MemberDecorate 87(UBO) 1 MatrixStride 16 + MemberDecorate 87(UBO) 2 Offset 128 + MemberDecorate 87(UBO) 3 Offset 144 + MemberDecorate 87(UBO) 4 Offset 148 + Decorate 87(UBO) Block + Decorate 103(ubo) DescriptorSet 0 + Decorate 103(ubo) Binding 0 + Decorate 289(inPos) Location 0 + Decorate 307(instanceScale) Location 6 + Decorate 312(instancePos) Location 4 + MemberDecorate 325(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 325(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 325(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 325(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 325(gl_PerVertex) Block + Decorate 353(outNormal) Location 0 + Decorate 370(inNormal) Location 1 + Decorate 409(outLightVec) Location 4 + Decorate 418(outViewVec) Location 3 + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 27: 7(int) Constant 56 + 28: TypeFloat 32 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 + 31: TypeVector 28(float) 3 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 + 33: TypePointer Output 31(fvec3) + 34(outColor): 33(ptr) Variable Output + 37: 7(int) Constant 8 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 36 32 17 27 12 19 36 34(outColor) 37 + 38: TypePointer Input 31(fvec3) + 39(inColor): 38(ptr) Variable Input + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 41 32 17 27 12 19 41 39(inColor) 37 + 44: 7(int) Constant 57 + 45(outUV): 33(ptr) Variable Output + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 47 32 17 44 12 19 47 45(outUV) 37 + 48: TypeVector 28(float) 2 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 22 + 50: TypePointer Input 48(fvec2) + 51(inUV): 50(ptr) Variable Input + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 53 49 17 44 12 19 53 51(inUV) 37 + 55: TypeInt 32 1 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 56 10 21 12 + 58: TypePointer Input 55(int) +59(instanceTexIndex): 58(ptr) Variable Input + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 61 57 17 44 12 19 61 59(instanceTexIndex) 37 + 68: 7(int) Constant 62 + 69: TypePointer Function 28(float) + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 72 30 17 68 12 16 21 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 75(instanceRot): 38(ptr) Variable Input + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 32 17 68 12 19 77 75(instanceRot) 37 + 78: TypePointer Input 28(float) + 81: TypeVector 28(float) 4 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 21 + 83: TypeMatrix 81(fvec4) 4 + 85: TypeBool + 86: 85(bool) ConstantTrue + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 82 21 86 + 87(UBO): TypeStruct 83 83 81(fvec4) 28(float) 28(float) + 90: 7(int) Constant 42 + 91: 7(int) Constant 7 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 84 17 90 91 12 12 13 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 84 17 90 91 12 12 13 + 95: 7(int) Constant 43 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 82 17 95 91 12 12 13 + 98: 7(int) Constant 45 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 30 17 98 37 12 12 13 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 30 17 98 37 12 12 13 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 101 20 17 68 12 19 101 12 13 88 92 93 96 99 + 102: TypePointer Uniform 87(UBO) + 103(ubo): 102(ptr) Variable Uniform + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 105 100 17 68 12 19 105 103(ubo) 37 + 106: 55(int) Constant 3 + 107: TypePointer Uniform 28(float) + 113: 7(int) Constant 63 + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 116 30 17 113 12 16 21 + 125: 7(int) Constant 65 + 126: TypeMatrix 31(fvec3) 3 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 32 13 86 + 128: TypePointer Function 126 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 131 127 17 125 12 16 21 + 133: 55(int) Constant 0 + 136: 28(float) Constant 0 + 138: TypePointer Function 31(fvec3) + 141: 7(int) Constant 66 + 142: 55(int) Constant 1 + 149: 7(int) Constant 67 + 150: 55(int) Constant 2 + 151: 28(float) Constant 1065353216 + 152: 31(fvec3) ConstantComposite 136 136 151 + 155: 7(int) Constant 70 + 163: 7(int) Constant 71 + 171: 7(int) Constant 73 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 174 127 17 171 12 16 21 + 181: 7(int) Constant 74 + 182: 31(fvec3) ConstantComposite 136 151 136 + 185: 7(int) Constant 75 + 192: 7(int) Constant 78 + 200: 7(int) Constant 79 + 208: 7(int) Constant 81 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 127 17 208 12 16 21 + 213: 31(fvec3) ConstantComposite 151 136 136 + 216: 7(int) Constant 82 + 222: 7(int) Constant 83 + 229: 7(int) Constant 85 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 232 127 17 229 12 16 21 + 240: 7(int) Constant 88 + 243: 55(int) Constant 4 + 249: 7(int) Constant 89 + 257: 7(int) Constant 90 + 258: TypePointer Function 83 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 84 17 257 12 16 21 + 266: TypePointer Function 81(fvec4) + 269: 7(int) Constant 91 + 270: 81(fvec4) ConstantComposite 136 151 136 136 + 273: 7(int) Constant 92 + 280: 7(int) Constant 93 + 281: 81(fvec4) ConstantComposite 136 136 136 151 + 284: 7(int) Constant 95 + 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 287 82 17 284 12 16 21 + 289(inPos): 38(ptr) Variable Input + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 291 32 17 284 12 19 291 289(inPos) 37 + 300: 7(int) Constant 96 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 82 17 300 12 16 21 +307(instanceScale): 78(ptr) Variable Input + 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 309 30 17 300 12 19 309 307(instanceScale) 37 +312(instancePos): 38(ptr) Variable Input + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 314 32 17 300 12 19 314 312(instancePos) 37 + 322: 7(int) Constant 98 + 323: TypeArray 28(float) 20 + 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 20 +325(gl_PerVertex): TypeStruct 81(fvec4) 28(float) 323 323 + 328: 7(int) Constant 24 + 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 327 82 17 20 328 12 12 13 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 330 30 17 20 90 12 12 13 + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 332 324 17 20 229 12 12 13 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 332 324 17 20 229 12 12 13 + 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 335 20 17 322 12 19 335 12 13 326 329 331 333 + 336: TypePointer Output 325(gl_PerVertex) + 337: 336(ptr) Variable Output + 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 334 17 322 12 19 1 337 37 + 339: TypePointer Uniform 83 + 349: TypePointer Output 81(fvec4) + 352: 7(int) Constant 99 + 353(outNormal): 33(ptr) Variable Output + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 32 17 352 12 19 355 353(outNormal) 37 + 370(inNormal): 38(ptr) Variable Input + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 372 32 17 352 12 19 372 370(inNormal) 37 + 376: 7(int) Constant 101 + 388: 7(int) Constant 102 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 391 32 17 388 12 16 21 + 402: TypePointer Uniform 81(fvec4) + 408: 7(int) Constant 103 +409(outLightVec): 33(ptr) Variable Output + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 411 32 17 408 12 19 411 409(outLightVec) 37 + 417: 7(int) Constant 104 + 418(outViewVec): 33(ptr) Variable Output + 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 420 32 17 417 12 19 420 418(outViewVec) 37 + Line 1 54 11 + 14(main): 4 Function None 5 + 23: Label + 70(s): 69(ptr) Variable Function + 114(c): 69(ptr) Variable Function + 129(mx): 128(ptr) Variable Function + 172(my): 128(ptr) Variable Function + 209(mz): 128(ptr) Variable Function + 230(rotMat): 128(ptr) Variable Function + 259(gRotMat): 258(ptr) Variable Function + 285(locPos): 266(ptr) Variable Function + 301(pos): 266(ptr) Variable Function + 389(lPos): 138(ptr) Variable Function + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + 42: 31(fvec3) Load 39(inColor) + Store 34(outColor) 42 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 44 44 12 12 + 54: 48(fvec2) Load 51(inUV) + 62: 55(int) Load 59(instanceTexIndex) + 63: 28(float) ConvertSToF 62 + 64: 28(float) CompositeExtract 54 0 + 65: 28(float) CompositeExtract 54 1 + 66: 31(fvec3) CompositeConstruct 64 65 63 + Store 45(outUV) 66 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 68 68 12 12 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 70(s) 74 + 79: 78(ptr) AccessChain 75(instanceRot) 12 + 80: 28(float) Load 79 + 108: 107(ptr) AccessChain 103(ubo) 106 + 109: 28(float) Load 108 + 110: 28(float) FAdd 80 109 + 111: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 110 + Store 70(s) 111 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 113 113 12 12 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 115 114(c) 74 + 118: 78(ptr) AccessChain 75(instanceRot) 12 + 119: 28(float) Load 118 + 120: 107(ptr) AccessChain 103(ubo) 106 + 121: 28(float) Load 120 + 122: 28(float) FAdd 119 121 + 123: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 122 + Store 114(c) 123 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 125 125 12 12 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 130 129(mx) 74 + 134: 28(float) Load 114(c) + 135: 28(float) Load 70(s) + 137: 31(fvec3) CompositeConstruct 134 135 136 + 139: 138(ptr) AccessChain 129(mx) 133 + Store 139 137 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 141 141 12 12 + 143: 28(float) Load 70(s) + 144: 28(float) FNegate 143 + 145: 28(float) Load 114(c) + 146: 31(fvec3) CompositeConstruct 144 145 136 + 147: 138(ptr) AccessChain 129(mx) 142 + Store 147 146 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 149 149 12 12 + 153: 138(ptr) AccessChain 129(mx) 150 + Store 153 152 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 155 155 12 12 + 156: 78(ptr) AccessChain 75(instanceRot) 20 + 157: 28(float) Load 156 + 158: 107(ptr) AccessChain 103(ubo) 106 + 159: 28(float) Load 158 + 160: 28(float) FAdd 157 159 + 161: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 160 + Store 70(s) 161 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 163 163 12 12 + 164: 78(ptr) AccessChain 75(instanceRot) 20 + 165: 28(float) Load 164 + 166: 107(ptr) AccessChain 103(ubo) 106 + 167: 28(float) Load 166 + 168: 28(float) FAdd 165 167 + 169: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 168 + Store 114(c) 169 + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 171 171 12 12 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 173 172(my) 74 + 176: 28(float) Load 114(c) + 177: 28(float) Load 70(s) + 178: 31(fvec3) CompositeConstruct 176 136 177 + 179: 138(ptr) AccessChain 172(my) 133 + Store 179 178 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 181 181 12 12 + 183: 138(ptr) AccessChain 172(my) 142 + Store 183 182 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 185 185 12 12 + 186: 28(float) Load 70(s) + 187: 28(float) FNegate 186 + 188: 28(float) Load 114(c) + 189: 31(fvec3) CompositeConstruct 187 136 188 + 190: 138(ptr) AccessChain 172(my) 150 + Store 190 189 + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 192 192 12 12 + 193: 78(ptr) AccessChain 75(instanceRot) 22 + 194: 28(float) Load 193 + 195: 107(ptr) AccessChain 103(ubo) 106 + 196: 28(float) Load 195 + 197: 28(float) FAdd 194 196 + 198: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 197 + Store 70(s) 198 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 200 200 12 12 + 201: 78(ptr) AccessChain 75(instanceRot) 22 + 202: 28(float) Load 201 + 203: 107(ptr) AccessChain 103(ubo) 106 + 204: 28(float) Load 203 + 205: 28(float) FAdd 202 204 + 206: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 205 + Store 114(c) 206 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 208 208 12 12 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(mz) 74 + 214: 138(ptr) AccessChain 209(mz) 133 + Store 214 213 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 216 216 12 12 + 217: 28(float) Load 114(c) + 218: 28(float) Load 70(s) + 219: 31(fvec3) CompositeConstruct 136 217 218 + 220: 138(ptr) AccessChain 209(mz) 142 + Store 220 219 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 222 222 12 12 + 223: 28(float) Load 70(s) + 224: 28(float) FNegate 223 + 225: 28(float) Load 114(c) + 226: 31(fvec3) CompositeConstruct 136 224 225 + 227: 138(ptr) AccessChain 209(mz) 150 + Store 227 226 + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 229 229 12 12 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 231 230(rotMat) 74 + 234: 126 Load 209(mz) + 235: 126 Load 172(my) + 236: 126 MatrixTimesMatrix 234 235 + 237: 126 Load 129(mx) + 238: 126 MatrixTimesMatrix 236 237 + Store 230(rotMat) 238 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 240 240 12 12 + 241: 78(ptr) AccessChain 75(instanceRot) 20 + 242: 28(float) Load 241 + 244: 107(ptr) AccessChain 103(ubo) 243 + 245: 28(float) Load 244 + 246: 28(float) FAdd 242 245 + 247: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 246 + Store 70(s) 247 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 249 249 12 12 + 250: 78(ptr) AccessChain 75(instanceRot) 20 + 251: 28(float) Load 250 + 252: 107(ptr) AccessChain 103(ubo) 243 + 253: 28(float) Load 252 + 254: 28(float) FAdd 251 253 + 255: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 254 + Store 114(c) 255 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 257 257 12 12 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(gRotMat) 74 + 263: 28(float) Load 114(c) + 264: 28(float) Load 70(s) + 265: 81(fvec4) CompositeConstruct 263 136 264 136 + 267: 266(ptr) AccessChain 259(gRotMat) 133 + Store 267 265 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 269 269 12 12 + 271: 266(ptr) AccessChain 259(gRotMat) 142 + Store 271 270 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 273 273 12 12 + 274: 28(float) Load 70(s) + 275: 28(float) FNegate 274 + 276: 28(float) Load 114(c) + 277: 81(fvec4) CompositeConstruct 275 136 276 136 + 278: 266(ptr) AccessChain 259(gRotMat) 150 + Store 278 277 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 280 280 12 12 + 282: 266(ptr) AccessChain 259(gRotMat) 106 + Store 282 281 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 284 284 12 12 + 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 286 285(locPos) 74 + 292: 31(fvec3) Load 289(inPos) + 293: 126 Load 230(rotMat) + 294: 31(fvec3) VectorTimesMatrix 292 293 + 295: 28(float) CompositeExtract 294 0 + 296: 28(float) CompositeExtract 294 1 + 297: 28(float) CompositeExtract 294 2 + 298: 81(fvec4) CompositeConstruct 295 296 297 151 + Store 285(locPos) 298 + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 300 300 12 12 + 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(pos) 74 + 305: 81(fvec4) Load 285(locPos) + 306: 31(fvec3) VectorShuffle 305 305 0 1 2 + 310: 28(float) Load 307(instanceScale) + 311: 31(fvec3) VectorTimesScalar 306 310 + 315: 31(fvec3) Load 312(instancePos) + 316: 31(fvec3) FAdd 311 315 + 317: 28(float) CompositeExtract 316 0 + 318: 28(float) CompositeExtract 316 1 + 319: 28(float) CompositeExtract 316 2 + 320: 81(fvec4) CompositeConstruct 317 318 319 151 + Store 301(pos) 320 + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 322 322 12 12 + 340: 339(ptr) AccessChain 103(ubo) 133 + 341: 83 Load 340 + 342: 339(ptr) AccessChain 103(ubo) 142 + 343: 83 Load 342 + 344: 83 MatrixTimesMatrix 341 343 + 345: 83 Load 259(gRotMat) + 346: 83 MatrixTimesMatrix 344 345 + 347: 81(fvec4) Load 301(pos) + 348: 81(fvec4) MatrixTimesVector 346 347 + 350: 349(ptr) AccessChain 337 133 + Store 350 348 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 352 352 12 12 + 356: 339(ptr) AccessChain 103(ubo) 142 + 357: 83 Load 356 + 358: 83 Load 259(gRotMat) + 359: 83 MatrixTimesMatrix 357 358 + 360: 81(fvec4) CompositeExtract 359 0 + 361: 31(fvec3) VectorShuffle 360 360 0 1 2 + 362: 81(fvec4) CompositeExtract 359 1 + 363: 31(fvec3) VectorShuffle 362 362 0 1 2 + 364: 81(fvec4) CompositeExtract 359 2 + 365: 31(fvec3) VectorShuffle 364 364 0 1 2 + 366: 126 CompositeConstruct 361 363 365 + 367: 126 Load 230(rotMat) + 368: 126 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 367 + 369: 126 MatrixTimesMatrix 366 368 + 373: 31(fvec3) Load 370(inNormal) + 374: 31(fvec3) MatrixTimesVector 369 373 + Store 353(outNormal) 374 + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 376 376 12 12 + 377: 339(ptr) AccessChain 103(ubo) 142 + 378: 83 Load 377 + 379: 31(fvec3) Load 289(inPos) + 380: 31(fvec3) Load 312(instancePos) + 381: 31(fvec3) FAdd 379 380 + 382: 28(float) CompositeExtract 381 0 + 383: 28(float) CompositeExtract 381 1 + 384: 28(float) CompositeExtract 381 2 + 385: 81(fvec4) CompositeConstruct 382 383 384 151 + 386: 81(fvec4) MatrixTimesVector 378 385 + Store 301(pos) 386 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 388 388 12 12 + 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 390 389(lPos) 74 + 393: 339(ptr) AccessChain 103(ubo) 142 + 394: 83 Load 393 + 395: 81(fvec4) CompositeExtract 394 0 + 396: 31(fvec3) VectorShuffle 395 395 0 1 2 + 397: 81(fvec4) CompositeExtract 394 1 + 398: 31(fvec3) VectorShuffle 397 397 0 1 2 + 399: 81(fvec4) CompositeExtract 394 2 + 400: 31(fvec3) VectorShuffle 399 399 0 1 2 + 401: 126 CompositeConstruct 396 398 400 + 403: 402(ptr) AccessChain 103(ubo) 150 + 404: 81(fvec4) Load 403 + 405: 31(fvec3) VectorShuffle 404 404 0 1 2 + 406: 31(fvec3) MatrixTimesVector 401 405 + Store 389(lPos) 406 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 408 408 12 12 + 412: 31(fvec3) Load 389(lPos) + 413: 81(fvec4) Load 301(pos) + 414: 31(fvec3) VectorShuffle 413 413 0 1 2 + 415: 31(fvec3) FSub 412 414 + Store 409(outLightVec) 415 + 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 417 417 12 12 + 421: 81(fvec4) Load 301(pos) + 422: 31(fvec3) VectorShuffle 421 421 0 1 2 + 423: 31(fvec3) FNegate 422 + Store 418(outViewVec) 423 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index 593dca9ee9..b427c6167a 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -1,1081 +1,1235 @@ spv.debuginfo.hlsl.comp -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 833 +// Id's are bound by 976 Capability Shader Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 5 "main" 828 - ExecutionMode 5 LocalSize 10 10 1 - 9: String "float" - 12: String "uint" - 27: String "springForce" - 30: String "" - 39: String "p0" - 43: String "p1" - 47: String "restDist" - 56: String "@main" - 62: String "id" - 67: String "dist" - 78: String "int" - 84: String "sphereRadius" - 95: String "gravity" - 100: String "particleCount" - 103: String "UBO" - 107: String "params" - 111: String "ubo" - 133: String "index" - 155: String "bool" - 163: String "normal" - 170: String "pinned" - 174: String "Particle" - 180: String "@data" - 184: String "particleIn" - 203: String "particleOut" - 222: String "force" - 234: String "pos" - 243: String "vel" - 492: String "f" - 536: String "sphereDist" - 580: String "calculateNormals" - 584: String "PushConstants" - 588: String "pushConstants" - 591: String "$Global" - 621: String "a" - 633: String "b" - 649: String "c" - Name 5 "main" - Name 26 "springForce(vf3;vf3;f1;" - Name 23 "p0" - Name 24 "p1" - Name 25 "restDist" - Name 55 "@main(vu3;" - Name 54 "id" - Name 65 "dist" - Name 82 "UBO" - MemberName 82(UBO) 0 "deltaT" - MemberName 82(UBO) 1 "particleMass" - MemberName 82(UBO) 2 "springStiffness" - MemberName 82(UBO) 3 "damping" - MemberName 82(UBO) 4 "restDistH" - MemberName 82(UBO) 5 "restDistV" - MemberName 82(UBO) 6 "restDistD" - MemberName 82(UBO) 7 "sphereRadius" - MemberName 82(UBO) 8 "spherePos" - MemberName 82(UBO) 9 "gravity" - MemberName 82(UBO) 10 "particleCount" - Name 105 "ubo" - MemberName 105(ubo) 0 "params" - Name 113 "" - Name 131 "index" - Name 161 "Particle" - MemberName 161(Particle) 0 "pos" - MemberName 161(Particle) 1 "vel" - MemberName 161(Particle) 2 "uv" - MemberName 161(Particle) 3 "normal" - MemberName 161(Particle) 4 "pinned" - Name 178 "particleIn" - MemberName 178(particleIn) 0 "@data" - Name 186 "particleIn" - Name 199 "particleOut" - MemberName 199(particleOut) 0 "@data" - Name 206 "particleOut" - Name 220 "force" - Name 232 "pos" - Name 241 "vel" - Name 258 "param" - Name 262 "param" - Name 264 "param" - Name 282 "param" + EntryPoint GLCompute 6 "main" 971 + ExecutionMode 6 LocalSize 10 10 1 + 1: String "" + 10: String "float" + 13: String "uint" + 28: String "springForce" + 31: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed entry-point main +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed hlsl-offsets +#line 1 +" + 40: String "p0" + 44: String "p1" + 48: String "restDist" + 57: String "@main" + 63: String "id" + 71: String "dist" + 83: String "int" + 89: String "sphereRadius" + 100: String "gravity" + 105: String "particleCount" + 108: String "UBO" + 111: String "params" + 115: String "ubo" + 140: String "index" + 163: String "bool" + 177: String "normal" + 184: String "pinned" + 188: String "Particle" + 193: String "@data" + 197: String "particleIn" + 219: String "particleOut" + 244: String "force" + 257: String "pos" + 267: String "vel" + 567: String "f" + 616: String "sphereDist" + 669: String "calculateNormals" + 673: String "PushConstants" + 676: String "pushConstants" + 679: String "$Global" + 719: String "a" + 732: String "b" + 749: String "c" + Name 6 "main" + Name 27 "springForce(vf3;vf3;f1;" + Name 24 "p0" + Name 25 "p1" + Name 26 "restDist" + Name 56 "@main(vu3;" + Name 55 "id" + Name 69 "dist" + Name 87 "UBO" + MemberName 87(UBO) 0 "deltaT" + MemberName 87(UBO) 1 "particleMass" + MemberName 87(UBO) 2 "springStiffness" + MemberName 87(UBO) 3 "damping" + MemberName 87(UBO) 4 "restDistH" + MemberName 87(UBO) 5 "restDistV" + MemberName 87(UBO) 6 "restDistD" + MemberName 87(UBO) 7 "sphereRadius" + MemberName 87(UBO) 8 "spherePos" + MemberName 87(UBO) 9 "gravity" + MemberName 87(UBO) 10 "particleCount" + Name 109 "ubo" + MemberName 109(ubo) 0 "params" + Name 117 "" + Name 138 "index" + Name 175 "Particle" + MemberName 175(Particle) 0 "pos" + MemberName 175(Particle) 1 "vel" + MemberName 175(Particle) 2 "uv" + MemberName 175(Particle) 3 "normal" + MemberName 175(Particle) 4 "pinned" + Name 191 "particleIn" + MemberName 191(particleIn) 0 "@data" + Name 199 "particleIn" + Name 215 "particleOut" + MemberName 215(particleOut) 0 "@data" + Name 221 "particleOut" + Name 242 "force" + Name 255 "pos" + Name 265 "vel" Name 286 "param" - Name 288 "param" - Name 310 "param" - Name 314 "param" + Name 290 "param" + Name 292 "param" Name 316 "param" - Name 333 "param" - Name 337 "param" - Name 339 "param" - Name 368 "param" - Name 372 "param" - Name 374 "param" - Name 398 "param" - Name 402 "param" - Name 404 "param" - Name 436 "param" - Name 440 "param" - Name 442 "param" - Name 470 "param" - Name 474 "param" - Name 476 "param" - Name 490 "f" - Name 534 "sphereDist" - Name 578 "PushConstants" - MemberName 578(PushConstants) 0 "calculateNormals" - Name 586 "$Global" - MemberName 586($Global) 0 "pushConstants" - Name 593 "" - Name 602 "normal" - Name 619 "a" - Name 631 "b" - Name 647 "c" - Name 826 "id" - Name 828 "id" - Name 830 "param" - MemberDecorate 82(UBO) 0 Offset 0 - MemberDecorate 82(UBO) 1 Offset 4 - MemberDecorate 82(UBO) 2 Offset 8 - MemberDecorate 82(UBO) 3 Offset 12 - MemberDecorate 82(UBO) 4 Offset 16 - MemberDecorate 82(UBO) 5 Offset 20 - MemberDecorate 82(UBO) 6 Offset 24 - MemberDecorate 82(UBO) 7 Offset 28 - MemberDecorate 82(UBO) 8 Offset 32 - MemberDecorate 82(UBO) 9 Offset 48 - MemberDecorate 82(UBO) 10 Offset 64 - MemberDecorate 105(ubo) 0 Offset 0 - Decorate 105(ubo) Block - Decorate 113 DescriptorSet 0 - Decorate 113 Binding 2 - MemberDecorate 161(Particle) 0 Offset 0 - MemberDecorate 161(Particle) 1 Offset 16 - MemberDecorate 161(Particle) 2 Offset 32 - MemberDecorate 161(Particle) 3 Offset 48 - MemberDecorate 161(Particle) 4 Offset 64 - Decorate 176 ArrayStride 80 - MemberDecorate 178(particleIn) 0 NonWritable - MemberDecorate 178(particleIn) 0 Offset 0 - Decorate 178(particleIn) BufferBlock - Decorate 186(particleIn) DescriptorSet 0 - Decorate 186(particleIn) Binding 0 - Decorate 197 ArrayStride 80 - MemberDecorate 199(particleOut) 0 Offset 0 - Decorate 199(particleOut) BufferBlock - Decorate 206(particleOut) DescriptorSet 0 - Decorate 206(particleOut) Binding 1 - MemberDecorate 578(PushConstants) 0 Offset 0 - MemberDecorate 586($Global) 0 Offset 0 - Decorate 586($Global) Block - Decorate 593 DescriptorSet 0 - Decorate 593 Binding 3 - Decorate 828(id) BuiltIn GlobalInvocationId - 3: TypeVoid - 4: TypeFunction 3 - 7: TypeFloat 32 - 10: TypeInt 32 0 - 13: 10(int) Constant 32 - 14: 10(int) Constant 6 - 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 - 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 - 17: TypeVector 7(float) 3 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 - 19: TypePointer Function 17(fvec3) - 20: TypePointer Function 7(float) - 21: TypeFunction 17(fvec3) 19(ptr) 19(ptr) 20(ptr) - 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 18 18 18 8 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 30 - 32: 10(int) Constant 1 - 33: 10(int) Constant 4 - 34: 10(int) Constant 5 - 31: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 32 33 29 34 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 27 22 29 15 15 31 27 16 15 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 18 29 15 15 28 33 32 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 44: 10(int) Constant 2 - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 18 29 15 15 28 33 44 - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 8 29 15 15 28 33 16 - 49: TypeVector 10(int) 3 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 11 16 - 51: TypePointer Function 49(ivec3) - 52: TypeFunction 3 51(ptr) - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 3 50 - 57: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 56 53 29 15 15 31 56 16 15 - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 62 50 29 15 15 57 33 32 - 68: 10(int) Constant 76 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 18 29 68 15 28 33 - 75: TypeVector 7(float) 4 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 33 - 77: TypeInt 32 1 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 78 13 33 15 - 80: TypeVector 77(int) 2 - 81: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 79 44 - 82(UBO): TypeStruct 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 7(float) 75(fvec4) 75(fvec4) 80(ivec2) - 85: 10(int) Constant 48 - 86: 10(int) Constant 20 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 8 29 85 86 15 15 16 - 96: 10(int) Constant 50 - 97: 10(int) Constant 16 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 76 29 96 97 15 15 16 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 76 29 96 97 15 15 16 - 101: 10(int) Constant 51 - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 81 29 101 86 15 15 16 - 104: 10(int) Constant 77 - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 103 32 29 104 15 31 103 15 16 83 87 88 89 90 91 92 93 94 98 99 - 105(ubo): TypeStruct 82(UBO) - 108: 10(int) Constant 56 - 109: 10(int) Constant 12 - 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 102 29 108 109 15 15 16 - 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 111 32 29 104 15 31 111 15 16 106 - 112: TypePointer Uniform 105(ubo) - 113: 112(ptr) Variable Uniform - 115: 10(int) Constant 8 - 114: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 30 110 29 104 15 31 30 113 115 - 116: 77(int) Constant 0 - 117: 77(int) Constant 2 - 118: TypePointer Uniform 7(float) - 130: TypePointer Function 10(int) - 134: 10(int) Constant 83 - 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 11 29 134 15 57 33 - 138: 77(int) Constant 10 - 139: TypePointer Uniform 77(int) - 154: TypeBool - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 161(Particle): TypeStruct 75(fvec4) 75(fvec4) 75(fvec4) 75(fvec4) 7(float) - 164: 10(int) Constant 30 - 165: 10(int) Constant 15 - 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 - 166: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 - 167: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 76 29 164 165 15 15 16 - 171: 10(int) Constant 31 - 172: 10(int) Constant 14 - 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 8 29 171 172 15 15 16 - 175: 10(int) Constant 88 - 173: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 32 29 175 15 31 174 15 16 162 166 167 168 169 - 176: TypeRuntimeArray 161(Particle) - 177: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 173 15 - 178(particleIn): TypeStruct 176 - 181: 10(int) Constant 35 - 182: 10(int) Constant 28 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 177 29 181 182 15 15 16 - 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 184 32 29 175 15 31 184 15 16 179 - 185: TypePointer Uniform 178(particleIn) - 186(particleIn): 185(ptr) Variable Uniform - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 184 183 29 175 15 31 184 186(particleIn) 115 - 189: 77(int) Constant 4 - 192: 7(float) Constant 1065353216 - 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 197: TypeRuntimeArray 161(Particle) - 198: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 173 15 -199(particleOut): TypeStruct 197 - 201: 10(int) Constant 37 - 200: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 198 29 201 164 15 15 16 - 204: 10(int) Constant 89 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 203 32 29 204 15 31 203 15 16 200 - 205: TypePointer Uniform 199(particleOut) -206(particleOut): 205(ptr) Variable Uniform - 207: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 203 202 29 204 15 31 203 206(particleOut) 115 - 210: TypePointer Uniform 75(fvec4) - 215: 77(int) Constant 1 - 216: 7(float) Constant 0 - 217: 75(fvec4) ConstantComposite 216 216 216 216 - 223: 10(int) Constant 95 - 221: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 222 18 29 223 15 57 33 - 225: 77(int) Constant 9 - 235: 10(int) Constant 97 - 233: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 18 29 235 15 57 33 - 244: 10(int) Constant 98 - 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 243 18 29 244 15 57 33 - 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 300: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 309: 77(int) Constant 5 - 324: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 347: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 367: 77(int) Constant 6 - 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 388: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 416: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 424: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 426: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 454: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 458: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 482: 77(int) Constant 3 - 493: 10(int) Constant 137 - 491: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 492 18 29 493 15 57 33 - 507: 7(float) Constant 1056964608 - 537: 10(int) Constant 142 - 535: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 536 18 29 537 15 57 33 - 543: 77(int) Constant 8 - 550: 77(int) Constant 7 - 553: 7(float) Constant 1008981770 - 555: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 -578(PushConstants): TypeStruct 10(int) - 581: 10(int) Constant 67 - 582: 10(int) Constant 23 - 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 580 11 29 581 582 15 15 16 - 585: 10(int) Constant 151 - 583: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 584 32 29 585 15 31 584 15 16 579 - 586($Global): TypeStruct 578(PushConstants) - 589: 10(int) Constant 71 - 587: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 588 583 29 589 165 15 15 16 - 590: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 591 32 29 585 15 31 591 15 16 587 - 592: TypePointer Uniform 586($Global) - 593: 592(ptr) Variable Uniform - 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 30 590 29 585 15 31 30 593 115 - 595: TypePointer Uniform 10(int) - 598: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 604: 10(int) Constant 152 - 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 163 18 29 604 15 57 33 - 606: 17(fvec3) ConstantComposite 216 216 216 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 615: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 622: 10(int) Constant 156 - 620: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 621 18 29 622 15 57 33 - 634: 10(int) Constant 157 - 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 633 18 29 634 15 57 33 - 650: 10(int) Constant 158 - 648: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 649 18 29 650 15 57 33 - 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 724: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 730: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 777: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 155 13 44 15 - 827: TypePointer Input 49(ivec3) - 828(id): 827(ptr) Variable Input - 5(main): 3 Function None 4 - 6: Label - 826(id): 51(ptr) Variable Function - 830(param): 51(ptr) Variable Function - 829: 49(ivec3) Load 828(id) - Store 826(id) 829 - 831: 49(ivec3) Load 826(id) - Store 830(param) 831 - 832: 3 FunctionCall 55(@main(vu3;) 830(param) + Name 320 "param" + Name 322 "param" + Name 350 "param" + Name 354 "param" + Name 356 "param" + Name 379 "param" + Name 383 "param" + Name 385 "param" + Name 420 "param" + Name 424 "param" + Name 426 "param" + Name 456 "param" + Name 460 "param" + Name 462 "param" + Name 500 "param" + Name 504 "param" + Name 506 "param" + Name 540 "param" + Name 544 "param" + Name 546 "param" + Name 565 "f" + Name 614 "sphereDist" + Name 667 "PushConstants" + MemberName 667(PushConstants) 0 "calculateNormals" + Name 674 "$Global" + MemberName 674($Global) 0 "pushConstants" + Name 681 "" + Name 693 "normal" + Name 717 "a" + Name 730 "b" + Name 747 "c" + Name 969 "id" + Name 971 "id" + Name 973 "param" + MemberDecorate 87(UBO) 0 Offset 0 + MemberDecorate 87(UBO) 1 Offset 4 + MemberDecorate 87(UBO) 2 Offset 8 + MemberDecorate 87(UBO) 3 Offset 12 + MemberDecorate 87(UBO) 4 Offset 16 + MemberDecorate 87(UBO) 5 Offset 20 + MemberDecorate 87(UBO) 6 Offset 24 + MemberDecorate 87(UBO) 7 Offset 28 + MemberDecorate 87(UBO) 8 Offset 32 + MemberDecorate 87(UBO) 9 Offset 48 + MemberDecorate 87(UBO) 10 Offset 64 + MemberDecorate 109(ubo) 0 Offset 0 + Decorate 109(ubo) Block + Decorate 117 DescriptorSet 0 + Decorate 117 Binding 2 + MemberDecorate 175(Particle) 0 Offset 0 + MemberDecorate 175(Particle) 1 Offset 16 + MemberDecorate 175(Particle) 2 Offset 32 + MemberDecorate 175(Particle) 3 Offset 48 + MemberDecorate 175(Particle) 4 Offset 64 + Decorate 189 ArrayStride 80 + MemberDecorate 191(particleIn) 0 NonWritable + MemberDecorate 191(particleIn) 0 Offset 0 + Decorate 191(particleIn) BufferBlock + Decorate 199(particleIn) DescriptorSet 0 + Decorate 199(particleIn) Binding 0 + Decorate 213 ArrayStride 80 + MemberDecorate 215(particleOut) 0 Offset 0 + Decorate 215(particleOut) BufferBlock + Decorate 221(particleOut) DescriptorSet 0 + Decorate 221(particleOut) Binding 1 + MemberDecorate 667(PushConstants) 0 Offset 0 + MemberDecorate 674($Global) 0 Offset 0 + Decorate 674($Global) Block + Decorate 681 DescriptorSet 0 + Decorate 681 Binding 3 + Decorate 971(id) BuiltIn GlobalInvocationId + 4: TypeVoid + 5: TypeFunction 4 + 8: TypeFloat 32 + 11: TypeInt 32 0 + 14: 11(int) Constant 32 + 15: 11(int) Constant 6 + 16: 11(int) Constant 0 + 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 17: 11(int) Constant 3 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 18: TypeVector 8(float) 3 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 20: TypePointer Function 18(fvec3) + 21: TypePointer Function 8(float) + 22: TypeFunction 18(fvec3) 20(ptr) 20(ptr) 21(ptr) + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 9 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 31 + 33: 11(int) Constant 1 + 34: 11(int) Constant 4 + 35: 11(int) Constant 5 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 33 34 30 35 + 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 28 23 30 16 16 32 28 17 16 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 19 30 16 16 29 34 33 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 45: 11(int) Constant 2 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 19 30 16 16 29 34 45 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 9 30 16 16 29 34 17 + 50: TypeVector 11(int) 3 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 12 17 + 52: TypePointer Function 50(ivec3) + 53: TypeFunction 4 52(ptr) + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 51 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 54 30 16 16 32 57 17 16 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 63 51 30 16 16 58 34 33 + 68: 11(int) Constant 76 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 71 19 30 68 16 29 34 + 77: 11(int) Constant 77 + 80: TypeVector 8(float) 4 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 34 + 82: TypeInt 32 1 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 83 14 34 16 + 85: TypeVector 82(int) 2 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 84 45 + 87(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 80(fvec4) 80(fvec4) 85(ivec2) + 90: 11(int) Constant 48 + 91: 11(int) Constant 20 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 101: 11(int) Constant 50 + 102: 11(int) Constant 16 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 81 30 101 102 16 16 17 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 81 30 101 102 16 16 17 + 106: 11(int) Constant 51 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 105 86 30 106 91 16 16 17 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 108 33 30 77 16 32 108 16 17 88 92 93 94 95 96 97 98 99 103 104 + 109(ubo): TypeStruct 87(UBO) + 112: 11(int) Constant 56 + 113: 11(int) Constant 12 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 107 30 112 113 16 16 17 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 115 33 30 77 16 32 115 16 17 110 + 116: TypePointer Uniform 109(ubo) + 117: 116(ptr) Variable Uniform + 119: 11(int) Constant 8 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 114 30 77 16 32 1 117 119 + 120: 82(int) Constant 0 + 121: 82(int) Constant 2 + 122: TypePointer Uniform 8(float) + 136: 11(int) Constant 83 + 137: TypePointer Function 11(int) + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 12 30 136 16 58 34 + 144: 82(int) Constant 10 + 145: TypePointer Uniform 82(int) + 154: 11(int) Constant 84 + 162: TypeBool + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 170: 11(int) Constant 85 + 174: 11(int) Constant 88 + 175(Particle): TypeStruct 80(fvec4) 80(fvec4) 80(fvec4) 80(fvec4) 8(float) + 178: 11(int) Constant 30 + 179: 11(int) Constant 15 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 + 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 + 185: 11(int) Constant 31 + 186: 11(int) Constant 14 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 9 30 185 186 16 16 17 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 188 33 30 174 16 32 188 16 17 176 180 181 182 183 + 189: TypeRuntimeArray 175(Particle) + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 16 + 191(particleIn): TypeStruct 189 + 194: 11(int) Constant 35 + 195: 11(int) Constant 28 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 190 30 194 195 16 16 17 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 197 33 30 174 16 32 197 16 17 192 + 198: TypePointer Uniform 191(particleIn) + 199(particleIn): 198(ptr) Variable Uniform + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 197 196 30 174 16 32 197 199(particleIn) 119 + 202: 82(int) Constant 4 + 205: 8(float) Constant 1065353216 + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 212: 11(int) Constant 89 + 213: TypeRuntimeArray 175(Particle) + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 16 +215(particleOut): TypeStruct 213 + 217: 11(int) Constant 37 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 214 30 217 178 16 16 17 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 219 33 30 212 16 32 219 16 17 216 + 220: TypePointer Uniform 215(particleOut) +221(particleOut): 220(ptr) Variable Uniform + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 219 218 30 212 16 32 219 221(particleOut) 119 + 225: TypePointer Uniform 80(fvec4) + 230: 11(int) Constant 90 + 232: 82(int) Constant 1 + 233: 8(float) Constant 0 + 234: 80(fvec4) ConstantComposite 233 233 233 233 + 237: 11(int) Constant 91 + 241: 11(int) Constant 95 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 19 30 241 16 58 34 + 246: 82(int) Constant 9 + 254: 11(int) Constant 97 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 257 19 30 254 16 58 34 + 264: 11(int) Constant 98 + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 267 19 30 264 16 58 34 + 274: 11(int) Constant 102 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 283: 11(int) Constant 103 + 300: 11(int) Constant 106 + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 313: 11(int) Constant 107 + 330: 11(int) Constant 110 + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 343: 11(int) Constant 111 + 349: 82(int) Constant 5 + 364: 11(int) Constant 114 + 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 373: 11(int) Constant 115 + 393: 11(int) Constant 118 + 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 412: 11(int) Constant 119 + 419: 82(int) Constant 6 + 434: 11(int) Constant 122 + 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 449: 11(int) Constant 123 + 470: 11(int) Constant 126 + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 493: 11(int) Constant 127 + 514: 11(int) Constant 130 + 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 533: 11(int) Constant 131 + 554: 11(int) Constant 134 + 555: 82(int) Constant 3 + 564: 11(int) Constant 137 + 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 567 19 30 564 16 58 34 + 575: 11(int) Constant 138 + 583: 8(float) Constant 1056964608 + 599: 11(int) Constant 139 + 613: 11(int) Constant 142 + 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 616 19 30 613 16 58 34 + 622: 82(int) Constant 8 + 628: 11(int) Constant 143 + 631: 82(int) Constant 7 + 634: 8(float) Constant 1008981770 + 636: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 642: 11(int) Constant 145 + 661: 11(int) Constant 147 + 666: 11(int) Constant 151 +667(PushConstants): TypeStruct 11(int) + 670: 11(int) Constant 67 + 671: 11(int) Constant 23 + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 669 12 30 670 671 16 16 17 + 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 673 33 30 666 16 32 673 16 17 668 + 674($Global): TypeStruct 667(PushConstants) + 677: 11(int) Constant 71 + 675: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 676 672 30 677 179 16 16 17 + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 679 33 30 666 16 32 679 16 17 675 + 680: TypePointer Uniform 674($Global) + 681: 680(ptr) Variable Uniform + 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 678 30 666 16 32 1 681 119 + 683: TypePointer Uniform 11(int) + 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 692: 11(int) Constant 152 + 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 177 19 30 692 16 58 34 + 696: 18(fvec3) ConstantComposite 233 233 233 + 698: 11(int) Constant 154 + 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 707: 11(int) Constant 155 + 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 716: 11(int) Constant 156 + 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 19 30 716 16 58 34 + 729: 11(int) Constant 157 + 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 732 19 30 729 16 58 34 + 746: 11(int) Constant 158 + 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 19 30 746 16 58 34 + 762: 11(int) Constant 159 + 774: 11(int) Constant 161 + 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 787: 11(int) Constant 162 + 799: 11(int) Constant 163 + 812: 11(int) Constant 164 + 821: 11(int) Constant 165 + 833: 11(int) Constant 168 + 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 846: 11(int) Constant 169 + 849: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 855: 11(int) Constant 170 + 867: 11(int) Constant 171 + 880: 11(int) Constant 172 + 889: 11(int) Constant 173 + 901: 11(int) Constant 175 + 908: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 + 914: 11(int) Constant 176 + 923: 11(int) Constant 177 + 936: 11(int) Constant 178 + 948: 11(int) Constant 179 + 960: 11(int) Constant 182 + 970: TypePointer Input 50(ivec3) + 971(id): 970(ptr) Variable Input + Line 1 82 1 + 6(main): 4 Function None 5 + 7: Label + 969(id): 52(ptr) Variable Function + 973(param): 52(ptr) Variable Function + Line 1 82 0 + 972: 50(ivec3) Load 971(id) + Store 969(id) 972 + 974: 50(ivec3) Load 969(id) + Store 973(param) 974 + 975: 4 FunctionCall 56(@main(vu3;) 973(param) Return FunctionEnd -26(springForce(vf3;vf3;f1;): 17(fvec3) Function None 21 - 23(p0): 19(ptr) FunctionParameter - 24(p1): 19(ptr) FunctionParameter - 25(restDist): 20(ptr) FunctionParameter - 35: Label - 65(dist): 19(ptr) Variable Function - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 28 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 15 15 15 15 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 23(p0) 41 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 24(p1) 41 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 25(restDist) 41 - 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 28 26(springForce(vf3;vf3;f1;) - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 65(dist) 41 - 70: 17(fvec3) Load 23(p0) - 71: 17(fvec3) Load 24(p1) - 72: 17(fvec3) FSub 70 71 - Store 65(dist) 72 - 73: 17(fvec3) Load 65(dist) - 74: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 73 - 119: 118(ptr) AccessChain 113 116 117 - 120: 7(float) Load 119 - 121: 17(fvec3) VectorTimesScalar 74 120 - 122: 17(fvec3) Load 65(dist) - 123: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 122 - 124: 7(float) Load 25(restDist) - 125: 7(float) FSub 123 124 - 126: 17(fvec3) VectorTimesScalar 121 125 - ReturnValue 126 + Line 1 75 1 +27(springForce(vf3;vf3;f1;): 18(fvec3) Function None 22 + 24(p0): 20(ptr) FunctionParameter + 25(p1): 20(ptr) FunctionParameter + 26(restDist): 21(ptr) FunctionParameter + 36: Label + 69(dist): 20(ptr) Variable Function + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 16 16 16 16 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 24(p0) 42 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 25(p1) 42 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 26(restDist) 42 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 29 27(springForce(vf3;vf3;f1;) + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 68 68 16 16 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 70 69(dist) 42 + 73: 18(fvec3) Load 24(p0) + 74: 18(fvec3) Load 25(p1) + 75: 18(fvec3) FSub 73 74 + Store 69(dist) 75 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 77 77 16 16 + 78: 18(fvec3) Load 69(dist) + 79: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 78 + 123: 122(ptr) AccessChain 117 120 121 + 124: 8(float) Load 123 + 125: 18(fvec3) VectorTimesScalar 79 124 + 126: 18(fvec3) Load 69(dist) + 127: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 126 + 128: 8(float) Load 26(restDist) + 129: 8(float) FSub 127 128 + 130: 18(fvec3) VectorTimesScalar 125 129 + ReturnValue 130 FunctionEnd - 55(@main(vu3;): 3 Function None 52 - 54(id): 51(ptr) FunctionParameter - 58: Label - 131(index): 130(ptr) Variable Function - 220(force): 19(ptr) Variable Function - 232(pos): 19(ptr) Variable Function - 241(vel): 19(ptr) Variable Function - 258(param): 19(ptr) Variable Function - 262(param): 19(ptr) Variable Function - 264(param): 20(ptr) Variable Function - 282(param): 19(ptr) Variable Function - 286(param): 19(ptr) Variable Function - 288(param): 20(ptr) Variable Function - 310(param): 19(ptr) Variable Function - 314(param): 19(ptr) Variable Function + Line 1 82 1 + 56(@main(vu3;): 4 Function None 53 + 55(id): 52(ptr) FunctionParameter + 59: Label + 138(index): 137(ptr) Variable Function + 242(force): 20(ptr) Variable Function + 255(pos): 20(ptr) Variable Function + 265(vel): 20(ptr) Variable Function + 286(param): 20(ptr) Variable Function + 290(param): 20(ptr) Variable Function + 292(param): 21(ptr) Variable Function 316(param): 20(ptr) Variable Function - 333(param): 19(ptr) Variable Function - 337(param): 19(ptr) Variable Function - 339(param): 20(ptr) Variable Function - 368(param): 19(ptr) Variable Function - 372(param): 19(ptr) Variable Function - 374(param): 20(ptr) Variable Function - 398(param): 19(ptr) Variable Function - 402(param): 19(ptr) Variable Function - 404(param): 20(ptr) Variable Function - 436(param): 19(ptr) Variable Function - 440(param): 19(ptr) Variable Function - 442(param): 20(ptr) Variable Function - 470(param): 19(ptr) Variable Function - 474(param): 19(ptr) Variable Function - 476(param): 20(ptr) Variable Function - 490(f): 19(ptr) Variable Function - 534(sphereDist): 19(ptr) Variable Function - 602(normal): 19(ptr) Variable Function - 619(a): 19(ptr) Variable Function - 631(b): 19(ptr) Variable Function - 647(c): 19(ptr) Variable Function - 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 15 15 15 15 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 61 54(id) 41 - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 55(@main(vu3;) - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(index) 41 - 136: 130(ptr) AccessChain 54(id) 32 - 137: 10(int) Load 136 - 140: 139(ptr) AccessChain 113 116 138 15 - 141: 77(int) Load 140 - 142: 10(int) Bitcast 141 - 143: 10(int) IMul 137 142 - 144: 130(ptr) AccessChain 54(id) 15 - 145: 10(int) Load 144 - 146: 10(int) IAdd 143 145 - Store 131(index) 146 - 147: 10(int) Load 131(index) - 148: 139(ptr) AccessChain 113 116 138 15 - 149: 77(int) Load 148 - 150: 139(ptr) AccessChain 113 116 138 32 - 151: 77(int) Load 150 - 152: 77(int) IMul 149 151 - 153: 10(int) Bitcast 152 - 157: 154(bool) UGreaterThan 147 153 - SelectionMerge 159 None - BranchConditional 157 158 159 - 158: Label + 320(param): 20(ptr) Variable Function + 322(param): 21(ptr) Variable Function + 350(param): 20(ptr) Variable Function + 354(param): 20(ptr) Variable Function + 356(param): 21(ptr) Variable Function + 379(param): 20(ptr) Variable Function + 383(param): 20(ptr) Variable Function + 385(param): 21(ptr) Variable Function + 420(param): 20(ptr) Variable Function + 424(param): 20(ptr) Variable Function + 426(param): 21(ptr) Variable Function + 456(param): 20(ptr) Variable Function + 460(param): 20(ptr) Variable Function + 462(param): 21(ptr) Variable Function + 500(param): 20(ptr) Variable Function + 504(param): 20(ptr) Variable Function + 506(param): 21(ptr) Variable Function + 540(param): 20(ptr) Variable Function + 544(param): 20(ptr) Variable Function + 546(param): 21(ptr) Variable Function + 565(f): 20(ptr) Variable Function + 614(sphereDist): 20(ptr) Variable Function + 693(normal): 20(ptr) Variable Function + 717(a): 20(ptr) Variable Function + 730(b): 20(ptr) Variable Function + 747(c): 20(ptr) Variable Function + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 16 16 16 16 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 62 55(id) 42 + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 56(@main(vu3;) + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 136 136 16 16 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 138(index) 42 + 142: 137(ptr) AccessChain 55(id) 33 + 143: 11(int) Load 142 + 146: 145(ptr) AccessChain 117 120 144 16 + 147: 82(int) Load 146 + 148: 11(int) Bitcast 147 + 149: 11(int) IMul 143 148 + 150: 137(ptr) AccessChain 55(id) 16 + 151: 11(int) Load 150 + 152: 11(int) IAdd 149 151 + Store 138(index) 152 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 154 154 16 16 + 155: 11(int) Load 138(index) + 156: 145(ptr) AccessChain 117 120 144 16 + 157: 82(int) Load 156 + 158: 145(ptr) AccessChain 117 120 144 33 + 159: 82(int) Load 158 + 160: 82(int) IMul 157 159 + 161: 11(int) Bitcast 160 + 165: 162(bool) UGreaterThan 155 161 + SelectionMerge 167 None + BranchConditional 165 166 167 + 166: Label + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 170 170 16 16 Return - 159: Label - 188: 10(int) Load 131(index) - 190: 118(ptr) AccessChain 186(particleIn) 116 188 189 - 191: 7(float) Load 190 - 194: 154(bool) FOrdEqual 191 192 - SelectionMerge 196 None - BranchConditional 194 195 196 - 195: Label - 208: 10(int) Load 131(index) - 209: 10(int) Load 131(index) - 211: 210(ptr) AccessChain 206(particleOut) 116 209 116 - 212: 75(fvec4) Load 211 - 213: 210(ptr) AccessChain 206(particleOut) 116 208 116 - Store 213 212 - 214: 10(int) Load 131(index) - 218: 210(ptr) AccessChain 206(particleOut) 116 214 215 - Store 218 217 + 167: Label + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 174 174 16 16 + 201: 11(int) Load 138(index) + 203: 122(ptr) AccessChain 199(particleIn) 120 201 202 + 204: 8(float) Load 203 + 207: 162(bool) FOrdEqual 204 205 + SelectionMerge 209 None + BranchConditional 207 208 209 + 208: Label + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 212 212 16 16 + 223: 11(int) Load 138(index) + 224: 11(int) Load 138(index) + 226: 225(ptr) AccessChain 221(particleOut) 120 224 120 + 227: 80(fvec4) Load 226 + 228: 225(ptr) AccessChain 221(particleOut) 120 223 120 + Store 228 227 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 230 230 16 16 + 231: 11(int) Load 138(index) + 235: 225(ptr) AccessChain 221(particleOut) 120 231 232 + Store 235 234 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 237 237 16 16 Return - 196: Label - 224: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 221 220(force) 41 - 226: 210(ptr) AccessChain 113 116 225 - 227: 75(fvec4) Load 226 - 228: 17(fvec3) VectorShuffle 227 227 0 1 2 - 229: 118(ptr) AccessChain 113 116 215 - 230: 7(float) Load 229 - 231: 17(fvec3) VectorTimesScalar 228 230 - Store 220(force) 231 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(pos) 41 - 237: 10(int) Load 131(index) - 238: 210(ptr) AccessChain 186(particleIn) 116 237 116 - 239: 75(fvec4) Load 238 - 240: 17(fvec3) VectorShuffle 239 239 0 1 2 - Store 232(pos) 240 - 245: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 242 241(vel) 41 - 246: 10(int) Load 131(index) - 247: 210(ptr) AccessChain 186(particleIn) 116 246 215 - 248: 75(fvec4) Load 247 - 249: 17(fvec3) VectorShuffle 248 248 0 1 2 - Store 241(vel) 249 - 250: 130(ptr) AccessChain 54(id) 15 - 251: 10(int) Load 250 - 253: 154(bool) UGreaterThan 251 15 - SelectionMerge 255 None - BranchConditional 253 254 255 - 254: Label - 256: 10(int) Load 131(index) - 257: 10(int) ISub 256 32 - 259: 210(ptr) AccessChain 186(particleIn) 116 257 116 - 260: 75(fvec4) Load 259 - 261: 17(fvec3) VectorShuffle 260 260 0 1 2 - Store 258(param) 261 - 263: 17(fvec3) Load 232(pos) - Store 262(param) 263 - 265: 118(ptr) AccessChain 113 116 189 - 266: 7(float) Load 265 - Store 264(param) 266 - 267: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 258(param) 262(param) 264(param) - 268: 17(fvec3) Load 220(force) - 269: 17(fvec3) FAdd 268 267 - Store 220(force) 269 - Branch 255 - 255: Label - 270: 130(ptr) AccessChain 54(id) 15 - 271: 10(int) Load 270 - 272: 139(ptr) AccessChain 113 116 138 15 - 273: 77(int) Load 272 - 274: 77(int) ISub 273 215 - 275: 10(int) Bitcast 274 - 277: 154(bool) ULessThan 271 275 - SelectionMerge 279 None - BranchConditional 277 278 279 - 278: Label - 280: 10(int) Load 131(index) - 281: 10(int) IAdd 280 32 - 283: 210(ptr) AccessChain 186(particleIn) 116 281 116 - 284: 75(fvec4) Load 283 - 285: 17(fvec3) VectorShuffle 284 284 0 1 2 - Store 282(param) 285 - 287: 17(fvec3) Load 232(pos) - Store 286(param) 287 - 289: 118(ptr) AccessChain 113 116 189 - 290: 7(float) Load 289 - Store 288(param) 290 - 291: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 282(param) 286(param) 288(param) - 292: 17(fvec3) Load 220(force) - 293: 17(fvec3) FAdd 292 291 - Store 220(force) 293 - Branch 279 - 279: Label - 294: 130(ptr) AccessChain 54(id) 32 - 295: 10(int) Load 294 - 296: 139(ptr) AccessChain 113 116 138 32 - 297: 77(int) Load 296 - 298: 77(int) ISub 297 215 - 299: 10(int) Bitcast 298 - 301: 154(bool) ULessThan 295 299 - SelectionMerge 303 None - BranchConditional 301 302 303 - 302: Label - 304: 10(int) Load 131(index) - 305: 139(ptr) AccessChain 113 116 138 15 - 306: 77(int) Load 305 - 307: 10(int) Bitcast 306 - 308: 10(int) IAdd 304 307 - 311: 210(ptr) AccessChain 186(particleIn) 116 308 116 - 312: 75(fvec4) Load 311 - 313: 17(fvec3) VectorShuffle 312 312 0 1 2 - Store 310(param) 313 - 315: 17(fvec3) Load 232(pos) - Store 314(param) 315 - 317: 118(ptr) AccessChain 113 116 309 - 318: 7(float) Load 317 - Store 316(param) 318 - 319: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 310(param) 314(param) 316(param) - 320: 17(fvec3) Load 220(force) - 321: 17(fvec3) FAdd 320 319 - Store 220(force) 321 - Branch 303 - 303: Label - 322: 130(ptr) AccessChain 54(id) 32 - 323: 10(int) Load 322 - 325: 154(bool) UGreaterThan 323 15 - SelectionMerge 327 None - BranchConditional 325 326 327 - 326: Label - 328: 10(int) Load 131(index) - 329: 139(ptr) AccessChain 113 116 138 15 - 330: 77(int) Load 329 - 331: 10(int) Bitcast 330 - 332: 10(int) ISub 328 331 - 334: 210(ptr) AccessChain 186(particleIn) 116 332 116 - 335: 75(fvec4) Load 334 - 336: 17(fvec3) VectorShuffle 335 335 0 1 2 - Store 333(param) 336 - 338: 17(fvec3) Load 232(pos) - Store 337(param) 338 - 340: 118(ptr) AccessChain 113 116 309 - 341: 7(float) Load 340 - Store 339(param) 341 - 342: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 333(param) 337(param) 339(param) - 343: 17(fvec3) Load 220(force) - 344: 17(fvec3) FAdd 343 342 - Store 220(force) 344 - Branch 327 - 327: Label - 345: 130(ptr) AccessChain 54(id) 15 - 346: 10(int) Load 345 - 348: 154(bool) UGreaterThan 346 15 - 349: 130(ptr) AccessChain 54(id) 32 - 350: 10(int) Load 349 - 351: 139(ptr) AccessChain 113 116 138 32 - 352: 77(int) Load 351 - 353: 77(int) ISub 352 215 - 354: 10(int) Bitcast 353 - 356: 154(bool) ULessThan 350 354 - 358: 154(bool) LogicalAnd 348 356 - SelectionMerge 360 None - BranchConditional 358 359 360 - 359: Label - 361: 10(int) Load 131(index) - 362: 139(ptr) AccessChain 113 116 138 15 - 363: 77(int) Load 362 - 364: 10(int) Bitcast 363 - 365: 10(int) IAdd 361 364 - 366: 10(int) ISub 365 32 - 369: 210(ptr) AccessChain 186(particleIn) 116 366 116 - 370: 75(fvec4) Load 369 - 371: 17(fvec3) VectorShuffle 370 370 0 1 2 - Store 368(param) 371 - 373: 17(fvec3) Load 232(pos) - Store 372(param) 373 - 375: 118(ptr) AccessChain 113 116 367 - 376: 7(float) Load 375 - Store 374(param) 376 - 377: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 368(param) 372(param) 374(param) - 378: 17(fvec3) Load 220(force) - 379: 17(fvec3) FAdd 378 377 - Store 220(force) 379 - Branch 360 - 360: Label - 380: 130(ptr) AccessChain 54(id) 15 - 381: 10(int) Load 380 - 383: 154(bool) UGreaterThan 381 15 - 384: 130(ptr) AccessChain 54(id) 32 - 385: 10(int) Load 384 - 387: 154(bool) UGreaterThan 385 15 - 389: 154(bool) LogicalAnd 383 387 - SelectionMerge 391 None - BranchConditional 389 390 391 - 390: Label - 392: 10(int) Load 131(index) - 393: 139(ptr) AccessChain 113 116 138 15 - 394: 77(int) Load 393 - 395: 10(int) Bitcast 394 - 396: 10(int) ISub 392 395 - 397: 10(int) ISub 396 32 - 399: 210(ptr) AccessChain 186(particleIn) 116 397 116 - 400: 75(fvec4) Load 399 - 401: 17(fvec3) VectorShuffle 400 400 0 1 2 - Store 398(param) 401 - 403: 17(fvec3) Load 232(pos) - Store 402(param) 403 - 405: 118(ptr) AccessChain 113 116 367 - 406: 7(float) Load 405 - Store 404(param) 406 - 407: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 398(param) 402(param) 404(param) - 408: 17(fvec3) Load 220(force) - 409: 17(fvec3) FAdd 408 407 - Store 220(force) 409 - Branch 391 - 391: Label - 410: 130(ptr) AccessChain 54(id) 15 - 411: 10(int) Load 410 - 412: 139(ptr) AccessChain 113 116 138 15 - 413: 77(int) Load 412 - 414: 77(int) ISub 413 215 - 415: 10(int) Bitcast 414 - 417: 154(bool) ULessThan 411 415 - 418: 130(ptr) AccessChain 54(id) 32 - 419: 10(int) Load 418 - 420: 139(ptr) AccessChain 113 116 138 32 - 421: 77(int) Load 420 - 422: 77(int) ISub 421 215 - 423: 10(int) Bitcast 422 - 425: 154(bool) ULessThan 419 423 - 427: 154(bool) LogicalAnd 417 425 - SelectionMerge 429 None - BranchConditional 427 428 429 - 428: Label - 430: 10(int) Load 131(index) - 431: 139(ptr) AccessChain 113 116 138 15 - 432: 77(int) Load 431 - 433: 10(int) Bitcast 432 - 434: 10(int) IAdd 430 433 - 435: 10(int) IAdd 434 32 - 437: 210(ptr) AccessChain 186(particleIn) 116 435 116 - 438: 75(fvec4) Load 437 - 439: 17(fvec3) VectorShuffle 438 438 0 1 2 - Store 436(param) 439 - 441: 17(fvec3) Load 232(pos) - Store 440(param) 441 - 443: 118(ptr) AccessChain 113 116 367 - 444: 7(float) Load 443 - Store 442(param) 444 - 445: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 436(param) 440(param) 442(param) - 446: 17(fvec3) Load 220(force) - 447: 17(fvec3) FAdd 446 445 - Store 220(force) 447 - Branch 429 - 429: Label - 448: 130(ptr) AccessChain 54(id) 15 - 449: 10(int) Load 448 - 450: 139(ptr) AccessChain 113 116 138 15 - 451: 77(int) Load 450 - 452: 77(int) ISub 451 215 - 453: 10(int) Bitcast 452 - 455: 154(bool) ULessThan 449 453 - 456: 130(ptr) AccessChain 54(id) 32 - 457: 10(int) Load 456 - 459: 154(bool) UGreaterThan 457 15 - 461: 154(bool) LogicalAnd 455 459 - SelectionMerge 463 None - BranchConditional 461 462 463 - 462: Label - 464: 10(int) Load 131(index) - 465: 139(ptr) AccessChain 113 116 138 15 - 466: 77(int) Load 465 - 467: 10(int) Bitcast 466 - 468: 10(int) ISub 464 467 - 469: 10(int) IAdd 468 32 - 471: 210(ptr) AccessChain 186(particleIn) 116 469 116 - 472: 75(fvec4) Load 471 - 473: 17(fvec3) VectorShuffle 472 472 0 1 2 - Store 470(param) 473 - 475: 17(fvec3) Load 232(pos) - Store 474(param) 475 - 477: 118(ptr) AccessChain 113 116 367 - 478: 7(float) Load 477 - Store 476(param) 478 - 479: 17(fvec3) FunctionCall 26(springForce(vf3;vf3;f1;) 470(param) 474(param) 476(param) - 480: 17(fvec3) Load 220(force) - 481: 17(fvec3) FAdd 480 479 - Store 220(force) 481 - Branch 463 - 463: Label - 483: 118(ptr) AccessChain 113 116 482 - 484: 7(float) Load 483 - 485: 7(float) FNegate 484 - 486: 17(fvec3) Load 241(vel) - 487: 17(fvec3) VectorTimesScalar 486 485 - 488: 17(fvec3) Load 220(force) - 489: 17(fvec3) FAdd 488 487 - Store 220(force) 489 - 494: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 491 490(f) 41 - 495: 17(fvec3) Load 220(force) - 496: 118(ptr) AccessChain 113 116 215 - 497: 7(float) Load 496 - 498: 7(float) FDiv 192 497 - 499: 17(fvec3) VectorTimesScalar 495 498 - Store 490(f) 499 - 500: 10(int) Load 131(index) - 501: 17(fvec3) Load 232(pos) - 502: 17(fvec3) Load 241(vel) - 503: 118(ptr) AccessChain 113 116 116 - 504: 7(float) Load 503 - 505: 17(fvec3) VectorTimesScalar 502 504 - 506: 17(fvec3) FAdd 501 505 - 508: 17(fvec3) Load 490(f) - 509: 17(fvec3) VectorTimesScalar 508 507 - 510: 118(ptr) AccessChain 113 116 116 - 511: 7(float) Load 510 - 512: 17(fvec3) VectorTimesScalar 509 511 - 513: 118(ptr) AccessChain 113 116 116 - 514: 7(float) Load 513 - 515: 17(fvec3) VectorTimesScalar 512 514 - 516: 17(fvec3) FAdd 506 515 - 517: 7(float) CompositeExtract 516 0 - 518: 7(float) CompositeExtract 516 1 - 519: 7(float) CompositeExtract 516 2 - 520: 75(fvec4) CompositeConstruct 517 518 519 192 - 521: 210(ptr) AccessChain 206(particleOut) 116 500 116 - Store 521 520 - 522: 10(int) Load 131(index) - 523: 17(fvec3) Load 241(vel) - 524: 17(fvec3) Load 490(f) - 525: 118(ptr) AccessChain 113 116 116 - 526: 7(float) Load 525 - 527: 17(fvec3) VectorTimesScalar 524 526 - 528: 17(fvec3) FAdd 523 527 - 529: 7(float) CompositeExtract 528 0 - 530: 7(float) CompositeExtract 528 1 - 531: 7(float) CompositeExtract 528 2 - 532: 75(fvec4) CompositeConstruct 529 530 531 216 - 533: 210(ptr) AccessChain 206(particleOut) 116 522 215 - Store 533 532 - 538: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 535 534(sphereDist) 41 - 539: 10(int) Load 131(index) - 540: 210(ptr) AccessChain 206(particleOut) 116 539 116 - 541: 75(fvec4) Load 540 - 542: 17(fvec3) VectorShuffle 541 541 0 1 2 - 544: 210(ptr) AccessChain 113 116 543 - 545: 75(fvec4) Load 544 - 546: 17(fvec3) VectorShuffle 545 545 0 1 2 - 547: 17(fvec3) FSub 542 546 - Store 534(sphereDist) 547 - 548: 17(fvec3) Load 534(sphereDist) - 549: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 548 - 551: 118(ptr) AccessChain 113 116 550 - 552: 7(float) Load 551 - 554: 7(float) FAdd 552 553 - 556: 154(bool) FOrdLessThan 549 554 - SelectionMerge 558 None - BranchConditional 556 557 558 - 557: Label - 559: 10(int) Load 131(index) - 560: 210(ptr) AccessChain 113 116 543 - 561: 75(fvec4) Load 560 - 562: 17(fvec3) VectorShuffle 561 561 0 1 2 - 563: 17(fvec3) Load 534(sphereDist) - 564: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 563 - 565: 118(ptr) AccessChain 113 116 550 - 566: 7(float) Load 565 - 567: 7(float) FAdd 566 553 - 568: 17(fvec3) VectorTimesScalar 564 567 - 569: 17(fvec3) FAdd 562 568 - 570: 118(ptr) AccessChain 206(particleOut) 116 559 116 15 - 571: 7(float) CompositeExtract 569 0 - Store 570 571 - 572: 118(ptr) AccessChain 206(particleOut) 116 559 116 32 - 573: 7(float) CompositeExtract 569 1 - Store 572 573 - 574: 118(ptr) AccessChain 206(particleOut) 116 559 116 44 - 575: 7(float) CompositeExtract 569 2 - Store 574 575 - 576: 10(int) Load 131(index) - 577: 210(ptr) AccessChain 206(particleOut) 116 576 215 - Store 577 217 - Branch 558 - 558: Label - 596: 595(ptr) AccessChain 593 116 116 - 597: 10(int) Load 596 - 599: 154(bool) IEqual 597 32 - SelectionMerge 601 None - BranchConditional 599 600 601 - 600: Label - 605: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 603 602(normal) 41 - Store 602(normal) 606 - 607: 130(ptr) AccessChain 54(id) 32 - 608: 10(int) Load 607 - 610: 154(bool) UGreaterThan 608 15 - SelectionMerge 612 None - BranchConditional 610 611 612 - 611: Label - 613: 130(ptr) AccessChain 54(id) 15 - 614: 10(int) Load 613 - 616: 154(bool) UGreaterThan 614 15 - SelectionMerge 618 None - BranchConditional 616 617 618 - 617: Label - 623: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 620 619(a) 41 - 624: 10(int) Load 131(index) - 625: 10(int) ISub 624 32 - 626: 210(ptr) AccessChain 186(particleIn) 116 625 116 - 627: 75(fvec4) Load 626 - 628: 17(fvec3) VectorShuffle 627 627 0 1 2 - 629: 17(fvec3) Load 232(pos) - 630: 17(fvec3) FSub 628 629 - Store 619(a) 630 - 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 632 631(b) 41 - 636: 10(int) Load 131(index) - 637: 139(ptr) AccessChain 113 116 138 15 - 638: 77(int) Load 637 - 639: 10(int) Bitcast 638 - 640: 10(int) ISub 636 639 - 641: 10(int) ISub 640 32 - 642: 210(ptr) AccessChain 186(particleIn) 116 641 116 - 643: 75(fvec4) Load 642 - 644: 17(fvec3) VectorShuffle 643 643 0 1 2 - 645: 17(fvec3) Load 232(pos) - 646: 17(fvec3) FSub 644 645 - Store 631(b) 646 - 651: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 648 647(c) 41 - 652: 10(int) Load 131(index) - 653: 139(ptr) AccessChain 113 116 138 15 - 654: 77(int) Load 653 - 655: 10(int) Bitcast 654 - 656: 10(int) ISub 652 655 - 657: 210(ptr) AccessChain 186(particleIn) 116 656 116 - 658: 75(fvec4) Load 657 - 659: 17(fvec3) VectorShuffle 658 658 0 1 2 - 660: 17(fvec3) Load 232(pos) - 661: 17(fvec3) FSub 659 660 - Store 647(c) 661 - 662: 17(fvec3) Load 619(a) - 663: 17(fvec3) Load 631(b) - 664: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 662 663 - 665: 17(fvec3) Load 631(b) - 666: 17(fvec3) Load 647(c) - 667: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 665 666 - 668: 17(fvec3) FAdd 664 667 - 669: 17(fvec3) Load 602(normal) - 670: 17(fvec3) FAdd 669 668 - Store 602(normal) 670 - Branch 618 - 618: Label - 671: 130(ptr) AccessChain 54(id) 15 - 672: 10(int) Load 671 - 673: 139(ptr) AccessChain 113 116 138 15 - 674: 77(int) Load 673 - 675: 77(int) ISub 674 215 - 676: 10(int) Bitcast 675 - 678: 154(bool) ULessThan 672 676 - SelectionMerge 680 None - BranchConditional 678 679 680 - 679: Label - 681: 10(int) Load 131(index) - 682: 139(ptr) AccessChain 113 116 138 15 - 683: 77(int) Load 682 - 684: 10(int) Bitcast 683 - 685: 10(int) ISub 681 684 - 686: 210(ptr) AccessChain 186(particleIn) 116 685 116 - 687: 75(fvec4) Load 686 - 688: 17(fvec3) VectorShuffle 687 687 0 1 2 - 689: 17(fvec3) Load 232(pos) - 690: 17(fvec3) FSub 688 689 - Store 619(a) 690 - 691: 10(int) Load 131(index) - 692: 139(ptr) AccessChain 113 116 138 15 - 693: 77(int) Load 692 - 694: 10(int) Bitcast 693 - 695: 10(int) ISub 691 694 - 696: 10(int) IAdd 695 32 - 697: 210(ptr) AccessChain 186(particleIn) 116 696 116 - 698: 75(fvec4) Load 697 - 699: 17(fvec3) VectorShuffle 698 698 0 1 2 - 700: 17(fvec3) Load 232(pos) - 701: 17(fvec3) FSub 699 700 - Store 631(b) 701 - 702: 10(int) Load 131(index) - 703: 10(int) IAdd 702 32 - 704: 210(ptr) AccessChain 186(particleIn) 116 703 116 - 705: 75(fvec4) Load 704 - 706: 17(fvec3) VectorShuffle 705 705 0 1 2 - 707: 17(fvec3) Load 232(pos) - 708: 17(fvec3) FSub 706 707 - Store 647(c) 708 - 709: 17(fvec3) Load 619(a) - 710: 17(fvec3) Load 631(b) - 711: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 709 710 - 712: 17(fvec3) Load 631(b) - 713: 17(fvec3) Load 647(c) - 714: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 712 713 - 715: 17(fvec3) FAdd 711 714 - 716: 17(fvec3) Load 602(normal) - 717: 17(fvec3) FAdd 716 715 - Store 602(normal) 717 - Branch 680 - 680: Label - Branch 612 - 612: Label - 718: 130(ptr) AccessChain 54(id) 32 - 719: 10(int) Load 718 - 720: 139(ptr) AccessChain 113 116 138 32 - 721: 77(int) Load 720 - 722: 77(int) ISub 721 215 - 723: 10(int) Bitcast 722 - 725: 154(bool) ULessThan 719 723 - SelectionMerge 727 None - BranchConditional 725 726 727 - 726: Label - 728: 130(ptr) AccessChain 54(id) 15 - 729: 10(int) Load 728 - 731: 154(bool) UGreaterThan 729 15 - SelectionMerge 733 None - BranchConditional 731 732 733 - 732: Label - 734: 10(int) Load 131(index) - 735: 139(ptr) AccessChain 113 116 138 15 - 736: 77(int) Load 735 - 737: 10(int) Bitcast 736 - 738: 10(int) IAdd 734 737 - 739: 210(ptr) AccessChain 186(particleIn) 116 738 116 - 740: 75(fvec4) Load 739 - 741: 17(fvec3) VectorShuffle 740 740 0 1 2 - 742: 17(fvec3) Load 232(pos) - 743: 17(fvec3) FSub 741 742 - Store 619(a) 743 - 744: 10(int) Load 131(index) - 745: 139(ptr) AccessChain 113 116 138 15 - 746: 77(int) Load 745 - 747: 10(int) Bitcast 746 - 748: 10(int) IAdd 744 747 - 749: 10(int) ISub 748 32 - 750: 210(ptr) AccessChain 186(particleIn) 116 749 116 - 751: 75(fvec4) Load 750 - 752: 17(fvec3) VectorShuffle 751 751 0 1 2 - 753: 17(fvec3) Load 232(pos) - 754: 17(fvec3) FSub 752 753 - Store 631(b) 754 - 755: 10(int) Load 131(index) - 756: 10(int) ISub 755 32 - 757: 210(ptr) AccessChain 186(particleIn) 116 756 116 - 758: 75(fvec4) Load 757 - 759: 17(fvec3) VectorShuffle 758 758 0 1 2 - 760: 17(fvec3) Load 232(pos) - 761: 17(fvec3) FSub 759 760 - Store 647(c) 761 - 762: 17(fvec3) Load 619(a) - 763: 17(fvec3) Load 631(b) - 764: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 762 763 - 765: 17(fvec3) Load 631(b) - 766: 17(fvec3) Load 647(c) - 767: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 765 766 - 768: 17(fvec3) FAdd 764 767 - 769: 17(fvec3) Load 602(normal) - 770: 17(fvec3) FAdd 769 768 - Store 602(normal) 770 - Branch 733 - 733: Label - 771: 130(ptr) AccessChain 54(id) 15 - 772: 10(int) Load 771 - 773: 139(ptr) AccessChain 113 116 138 15 - 774: 77(int) Load 773 - 775: 77(int) ISub 774 215 - 776: 10(int) Bitcast 775 - 778: 154(bool) ULessThan 772 776 - SelectionMerge 780 None - BranchConditional 778 779 780 - 779: Label - 781: 10(int) Load 131(index) - 782: 10(int) IAdd 781 32 - 783: 210(ptr) AccessChain 186(particleIn) 116 782 116 - 784: 75(fvec4) Load 783 - 785: 17(fvec3) VectorShuffle 784 784 0 1 2 - 786: 17(fvec3) Load 232(pos) - 787: 17(fvec3) FSub 785 786 - Store 619(a) 787 - 788: 10(int) Load 131(index) - 789: 139(ptr) AccessChain 113 116 138 15 - 790: 77(int) Load 789 - 791: 10(int) Bitcast 790 - 792: 10(int) IAdd 788 791 - 793: 10(int) IAdd 792 32 - 794: 210(ptr) AccessChain 186(particleIn) 116 793 116 - 795: 75(fvec4) Load 794 - 796: 17(fvec3) VectorShuffle 795 795 0 1 2 - 797: 17(fvec3) Load 232(pos) - 798: 17(fvec3) FSub 796 797 - Store 631(b) 798 - 799: 10(int) Load 131(index) - 800: 139(ptr) AccessChain 113 116 138 15 - 801: 77(int) Load 800 - 802: 10(int) Bitcast 801 - 803: 10(int) IAdd 799 802 - 804: 210(ptr) AccessChain 186(particleIn) 116 803 116 - 805: 75(fvec4) Load 804 - 806: 17(fvec3) VectorShuffle 805 805 0 1 2 - 807: 17(fvec3) Load 232(pos) - 808: 17(fvec3) FSub 806 807 - Store 647(c) 808 - 809: 17(fvec3) Load 619(a) - 810: 17(fvec3) Load 631(b) - 811: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 809 810 - 812: 17(fvec3) Load 631(b) - 813: 17(fvec3) Load 647(c) - 814: 17(fvec3) ExtInst 2(GLSL.std.450) 68(Cross) 812 813 - 815: 17(fvec3) FAdd 811 814 - 816: 17(fvec3) Load 602(normal) - 817: 17(fvec3) FAdd 816 815 - Store 602(normal) 817 - Branch 780 - 780: Label - Branch 727 - 727: Label - 818: 10(int) Load 131(index) - 819: 17(fvec3) Load 602(normal) - 820: 17(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 819 - 821: 7(float) CompositeExtract 820 0 - 822: 7(float) CompositeExtract 820 1 - 823: 7(float) CompositeExtract 820 2 - 824: 75(fvec4) CompositeConstruct 821 822 823 216 - 825: 210(ptr) AccessChain 206(particleOut) 116 818 482 - Store 825 824 - Branch 601 - 601: Label + 209: Label + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 241 241 16 16 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(force) 42 + 247: 225(ptr) AccessChain 117 120 246 + 248: 80(fvec4) Load 247 + 249: 18(fvec3) VectorShuffle 248 248 0 1 2 + 250: 122(ptr) AccessChain 117 120 232 + 251: 8(float) Load 250 + 252: 18(fvec3) VectorTimesScalar 249 251 + Store 242(force) 252 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 254 254 16 16 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 256 255(pos) 42 + 259: 11(int) Load 138(index) + 260: 225(ptr) AccessChain 199(particleIn) 120 259 120 + 261: 80(fvec4) Load 260 + 262: 18(fvec3) VectorShuffle 261 261 0 1 2 + Store 255(pos) 262 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 266 265(vel) 42 + 269: 11(int) Load 138(index) + 270: 225(ptr) AccessChain 199(particleIn) 120 269 232 + 271: 80(fvec4) Load 270 + 272: 18(fvec3) VectorShuffle 271 271 0 1 2 + Store 265(vel) 272 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 274 274 16 16 + 275: 137(ptr) AccessChain 55(id) 16 + 276: 11(int) Load 275 + 278: 162(bool) UGreaterThan 276 16 + SelectionMerge 280 None + BranchConditional 278 279 280 + 279: Label + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 283 283 16 16 + 284: 11(int) Load 138(index) + 285: 11(int) ISub 284 33 + 287: 225(ptr) AccessChain 199(particleIn) 120 285 120 + 288: 80(fvec4) Load 287 + 289: 18(fvec3) VectorShuffle 288 288 0 1 2 + Store 286(param) 289 + 291: 18(fvec3) Load 255(pos) + Store 290(param) 291 + 293: 122(ptr) AccessChain 117 120 202 + 294: 8(float) Load 293 + Store 292(param) 294 + 295: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 286(param) 290(param) 292(param) + 296: 18(fvec3) Load 242(force) + 297: 18(fvec3) FAdd 296 295 + Store 242(force) 297 + Branch 280 + 280: Label + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 300 300 16 16 + 301: 137(ptr) AccessChain 55(id) 16 + 302: 11(int) Load 301 + 303: 145(ptr) AccessChain 117 120 144 16 + 304: 82(int) Load 303 + 305: 82(int) ISub 304 232 + 306: 11(int) Bitcast 305 + 308: 162(bool) ULessThan 302 306 + SelectionMerge 310 None + BranchConditional 308 309 310 + 309: Label + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 313 313 16 16 + 314: 11(int) Load 138(index) + 315: 11(int) IAdd 314 33 + 317: 225(ptr) AccessChain 199(particleIn) 120 315 120 + 318: 80(fvec4) Load 317 + 319: 18(fvec3) VectorShuffle 318 318 0 1 2 + Store 316(param) 319 + 321: 18(fvec3) Load 255(pos) + Store 320(param) 321 + 323: 122(ptr) AccessChain 117 120 202 + 324: 8(float) Load 323 + Store 322(param) 324 + 325: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 316(param) 320(param) 322(param) + 326: 18(fvec3) Load 242(force) + 327: 18(fvec3) FAdd 326 325 + Store 242(force) 327 + Branch 310 + 310: Label + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 330 330 16 16 + 331: 137(ptr) AccessChain 55(id) 33 + 332: 11(int) Load 331 + 333: 145(ptr) AccessChain 117 120 144 33 + 334: 82(int) Load 333 + 335: 82(int) ISub 334 232 + 336: 11(int) Bitcast 335 + 338: 162(bool) ULessThan 332 336 + SelectionMerge 340 None + BranchConditional 338 339 340 + 339: Label + 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 343 343 16 16 + 344: 11(int) Load 138(index) + 345: 145(ptr) AccessChain 117 120 144 16 + 346: 82(int) Load 345 + 347: 11(int) Bitcast 346 + 348: 11(int) IAdd 344 347 + 351: 225(ptr) AccessChain 199(particleIn) 120 348 120 + 352: 80(fvec4) Load 351 + 353: 18(fvec3) VectorShuffle 352 352 0 1 2 + Store 350(param) 353 + 355: 18(fvec3) Load 255(pos) + Store 354(param) 355 + 357: 122(ptr) AccessChain 117 120 349 + 358: 8(float) Load 357 + Store 356(param) 358 + 359: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 350(param) 354(param) 356(param) + 360: 18(fvec3) Load 242(force) + 361: 18(fvec3) FAdd 360 359 + Store 242(force) 361 + Branch 340 + 340: Label + 362: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 364 364 16 16 + 365: 137(ptr) AccessChain 55(id) 33 + 366: 11(int) Load 365 + 368: 162(bool) UGreaterThan 366 16 + SelectionMerge 370 None + BranchConditional 368 369 370 + 369: Label + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 373 373 16 16 + 374: 11(int) Load 138(index) + 375: 145(ptr) AccessChain 117 120 144 16 + 376: 82(int) Load 375 + 377: 11(int) Bitcast 376 + 378: 11(int) ISub 374 377 + 380: 225(ptr) AccessChain 199(particleIn) 120 378 120 + 381: 80(fvec4) Load 380 + 382: 18(fvec3) VectorShuffle 381 381 0 1 2 + Store 379(param) 382 + 384: 18(fvec3) Load 255(pos) + Store 383(param) 384 + 386: 122(ptr) AccessChain 117 120 349 + 387: 8(float) Load 386 + Store 385(param) 387 + 388: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 379(param) 383(param) 385(param) + 389: 18(fvec3) Load 242(force) + 390: 18(fvec3) FAdd 389 388 + Store 242(force) 390 + Branch 370 + 370: Label + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 393 393 16 16 + 394: 137(ptr) AccessChain 55(id) 16 + 395: 11(int) Load 394 + 397: 162(bool) UGreaterThan 395 16 + 398: 137(ptr) AccessChain 55(id) 33 + 399: 11(int) Load 398 + 400: 145(ptr) AccessChain 117 120 144 33 + 401: 82(int) Load 400 + 402: 82(int) ISub 401 232 + 403: 11(int) Bitcast 402 + 405: 162(bool) ULessThan 399 403 + 407: 162(bool) LogicalAnd 397 405 + SelectionMerge 409 None + BranchConditional 407 408 409 + 408: Label + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 412 412 16 16 + 413: 11(int) Load 138(index) + 414: 145(ptr) AccessChain 117 120 144 16 + 415: 82(int) Load 414 + 416: 11(int) Bitcast 415 + 417: 11(int) IAdd 413 416 + 418: 11(int) ISub 417 33 + 421: 225(ptr) AccessChain 199(particleIn) 120 418 120 + 422: 80(fvec4) Load 421 + 423: 18(fvec3) VectorShuffle 422 422 0 1 2 + Store 420(param) 423 + 425: 18(fvec3) Load 255(pos) + Store 424(param) 425 + 427: 122(ptr) AccessChain 117 120 419 + 428: 8(float) Load 427 + Store 426(param) 428 + 429: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 420(param) 424(param) 426(param) + 430: 18(fvec3) Load 242(force) + 431: 18(fvec3) FAdd 430 429 + Store 242(force) 431 + Branch 409 + 409: Label + 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 434 434 16 16 + 435: 137(ptr) AccessChain 55(id) 16 + 436: 11(int) Load 435 + 438: 162(bool) UGreaterThan 436 16 + 439: 137(ptr) AccessChain 55(id) 33 + 440: 11(int) Load 439 + 442: 162(bool) UGreaterThan 440 16 + 444: 162(bool) LogicalAnd 438 442 + SelectionMerge 446 None + BranchConditional 444 445 446 + 445: Label + 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 449 449 16 16 + 450: 11(int) Load 138(index) + 451: 145(ptr) AccessChain 117 120 144 16 + 452: 82(int) Load 451 + 453: 11(int) Bitcast 452 + 454: 11(int) ISub 450 453 + 455: 11(int) ISub 454 33 + 457: 225(ptr) AccessChain 199(particleIn) 120 455 120 + 458: 80(fvec4) Load 457 + 459: 18(fvec3) VectorShuffle 458 458 0 1 2 + Store 456(param) 459 + 461: 18(fvec3) Load 255(pos) + Store 460(param) 461 + 463: 122(ptr) AccessChain 117 120 419 + 464: 8(float) Load 463 + Store 462(param) 464 + 465: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 456(param) 460(param) 462(param) + 466: 18(fvec3) Load 242(force) + 467: 18(fvec3) FAdd 466 465 + Store 242(force) 467 + Branch 446 + 446: Label + 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 470 470 16 16 + 471: 137(ptr) AccessChain 55(id) 16 + 472: 11(int) Load 471 + 473: 145(ptr) AccessChain 117 120 144 16 + 474: 82(int) Load 473 + 475: 82(int) ISub 474 232 + 476: 11(int) Bitcast 475 + 478: 162(bool) ULessThan 472 476 + 479: 137(ptr) AccessChain 55(id) 33 + 480: 11(int) Load 479 + 481: 145(ptr) AccessChain 117 120 144 33 + 482: 82(int) Load 481 + 483: 82(int) ISub 482 232 + 484: 11(int) Bitcast 483 + 486: 162(bool) ULessThan 480 484 + 488: 162(bool) LogicalAnd 478 486 + SelectionMerge 490 None + BranchConditional 488 489 490 + 489: Label + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 492: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 493 493 16 16 + 494: 11(int) Load 138(index) + 495: 145(ptr) AccessChain 117 120 144 16 + 496: 82(int) Load 495 + 497: 11(int) Bitcast 496 + 498: 11(int) IAdd 494 497 + 499: 11(int) IAdd 498 33 + 501: 225(ptr) AccessChain 199(particleIn) 120 499 120 + 502: 80(fvec4) Load 501 + 503: 18(fvec3) VectorShuffle 502 502 0 1 2 + Store 500(param) 503 + 505: 18(fvec3) Load 255(pos) + Store 504(param) 505 + 507: 122(ptr) AccessChain 117 120 419 + 508: 8(float) Load 507 + Store 506(param) 508 + 509: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 500(param) 504(param) 506(param) + 510: 18(fvec3) Load 242(force) + 511: 18(fvec3) FAdd 510 509 + Store 242(force) 511 + Branch 490 + 490: Label + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 514 514 16 16 + 515: 137(ptr) AccessChain 55(id) 16 + 516: 11(int) Load 515 + 517: 145(ptr) AccessChain 117 120 144 16 + 518: 82(int) Load 517 + 519: 82(int) ISub 518 232 + 520: 11(int) Bitcast 519 + 522: 162(bool) ULessThan 516 520 + 523: 137(ptr) AccessChain 55(id) 33 + 524: 11(int) Load 523 + 526: 162(bool) UGreaterThan 524 16 + 528: 162(bool) LogicalAnd 522 526 + SelectionMerge 530 None + BranchConditional 528 529 530 + 529: Label + 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 533 533 16 16 + 534: 11(int) Load 138(index) + 535: 145(ptr) AccessChain 117 120 144 16 + 536: 82(int) Load 535 + 537: 11(int) Bitcast 536 + 538: 11(int) ISub 534 537 + 539: 11(int) IAdd 538 33 + 541: 225(ptr) AccessChain 199(particleIn) 120 539 120 + 542: 80(fvec4) Load 541 + 543: 18(fvec3) VectorShuffle 542 542 0 1 2 + Store 540(param) 543 + 545: 18(fvec3) Load 255(pos) + Store 544(param) 545 + 547: 122(ptr) AccessChain 117 120 419 + 548: 8(float) Load 547 + Store 546(param) 548 + 549: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 540(param) 544(param) 546(param) + 550: 18(fvec3) Load 242(force) + 551: 18(fvec3) FAdd 550 549 + Store 242(force) 551 + Branch 530 + 530: Label + 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 554 554 16 16 + 556: 122(ptr) AccessChain 117 120 555 + 557: 8(float) Load 556 + 558: 8(float) FNegate 557 + 559: 18(fvec3) Load 265(vel) + 560: 18(fvec3) VectorTimesScalar 559 558 + 561: 18(fvec3) Load 242(force) + 562: 18(fvec3) FAdd 561 560 + Store 242(force) 562 + 563: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 564 564 16 16 + 568: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 566 565(f) 42 + 569: 18(fvec3) Load 242(force) + 570: 122(ptr) AccessChain 117 120 232 + 571: 8(float) Load 570 + 572: 8(float) FDiv 205 571 + 573: 18(fvec3) VectorTimesScalar 569 572 + Store 565(f) 573 + 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 575 575 16 16 + 576: 11(int) Load 138(index) + 577: 18(fvec3) Load 255(pos) + 578: 18(fvec3) Load 265(vel) + 579: 122(ptr) AccessChain 117 120 120 + 580: 8(float) Load 579 + 581: 18(fvec3) VectorTimesScalar 578 580 + 582: 18(fvec3) FAdd 577 581 + 584: 18(fvec3) Load 565(f) + 585: 18(fvec3) VectorTimesScalar 584 583 + 586: 122(ptr) AccessChain 117 120 120 + 587: 8(float) Load 586 + 588: 18(fvec3) VectorTimesScalar 585 587 + 589: 122(ptr) AccessChain 117 120 120 + 590: 8(float) Load 589 + 591: 18(fvec3) VectorTimesScalar 588 590 + 592: 18(fvec3) FAdd 582 591 + 593: 8(float) CompositeExtract 592 0 + 594: 8(float) CompositeExtract 592 1 + 595: 8(float) CompositeExtract 592 2 + 596: 80(fvec4) CompositeConstruct 593 594 595 205 + 597: 225(ptr) AccessChain 221(particleOut) 120 576 120 + Store 597 596 + 598: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 599 599 16 16 + 600: 11(int) Load 138(index) + 601: 18(fvec3) Load 265(vel) + 602: 18(fvec3) Load 565(f) + 603: 122(ptr) AccessChain 117 120 120 + 604: 8(float) Load 603 + 605: 18(fvec3) VectorTimesScalar 602 604 + 606: 18(fvec3) FAdd 601 605 + 607: 8(float) CompositeExtract 606 0 + 608: 8(float) CompositeExtract 606 1 + 609: 8(float) CompositeExtract 606 2 + 610: 80(fvec4) CompositeConstruct 607 608 609 233 + 611: 225(ptr) AccessChain 221(particleOut) 120 600 232 + Store 611 610 + 612: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 613 613 16 16 + 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 615 614(sphereDist) 42 + 618: 11(int) Load 138(index) + 619: 225(ptr) AccessChain 221(particleOut) 120 618 120 + 620: 80(fvec4) Load 619 + 621: 18(fvec3) VectorShuffle 620 620 0 1 2 + 623: 225(ptr) AccessChain 117 120 622 + 624: 80(fvec4) Load 623 + 625: 18(fvec3) VectorShuffle 624 624 0 1 2 + 626: 18(fvec3) FSub 621 625 + Store 614(sphereDist) 626 + 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 628 628 16 16 + 629: 18(fvec3) Load 614(sphereDist) + 630: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 629 + 632: 122(ptr) AccessChain 117 120 631 + 633: 8(float) Load 632 + 635: 8(float) FAdd 633 634 + 637: 162(bool) FOrdLessThan 630 635 + SelectionMerge 639 None + BranchConditional 637 638 639 + 638: Label + 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 642 642 16 16 + 643: 11(int) Load 138(index) + 644: 225(ptr) AccessChain 117 120 622 + 645: 80(fvec4) Load 644 + 646: 18(fvec3) VectorShuffle 645 645 0 1 2 + 647: 18(fvec3) Load 614(sphereDist) + 648: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 647 + 649: 122(ptr) AccessChain 117 120 631 + 650: 8(float) Load 649 + 651: 8(float) FAdd 650 634 + 652: 18(fvec3) VectorTimesScalar 648 651 + 653: 18(fvec3) FAdd 646 652 + 654: 122(ptr) AccessChain 221(particleOut) 120 643 120 16 + 655: 8(float) CompositeExtract 653 0 + Store 654 655 + 656: 122(ptr) AccessChain 221(particleOut) 120 643 120 33 + 657: 8(float) CompositeExtract 653 1 + Store 656 657 + 658: 122(ptr) AccessChain 221(particleOut) 120 643 120 45 + 659: 8(float) CompositeExtract 653 2 + Store 658 659 + 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 661 661 16 16 + 662: 11(int) Load 138(index) + 663: 225(ptr) AccessChain 221(particleOut) 120 662 232 + Store 663 234 + Branch 639 + 639: Label + 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 666 666 16 16 + 684: 683(ptr) AccessChain 681 120 120 + 685: 11(int) Load 684 + 687: 162(bool) IEqual 685 33 + SelectionMerge 689 None + BranchConditional 687 688 689 + 688: Label + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 692 692 16 16 + 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 694 693(normal) 42 + Store 693(normal) 696 + 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 698 698 16 16 + 699: 137(ptr) AccessChain 55(id) 33 + 700: 11(int) Load 699 + 702: 162(bool) UGreaterThan 700 16 + SelectionMerge 704 None + BranchConditional 702 703 704 + 703: Label + 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 707 707 16 16 + 708: 137(ptr) AccessChain 55(id) 16 + 709: 11(int) Load 708 + 711: 162(bool) UGreaterThan 709 16 + SelectionMerge 713 None + BranchConditional 711 712 713 + 712: Label + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 716 716 16 16 + 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 718 717(a) 42 + 721: 11(int) Load 138(index) + 722: 11(int) ISub 721 33 + 723: 225(ptr) AccessChain 199(particleIn) 120 722 120 + 724: 80(fvec4) Load 723 + 725: 18(fvec3) VectorShuffle 724 724 0 1 2 + 726: 18(fvec3) Load 255(pos) + 727: 18(fvec3) FSub 725 726 + Store 717(a) 727 + 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 729 729 16 16 + 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 731 730(b) 42 + 734: 11(int) Load 138(index) + 735: 145(ptr) AccessChain 117 120 144 16 + 736: 82(int) Load 735 + 737: 11(int) Bitcast 736 + 738: 11(int) ISub 734 737 + 739: 11(int) ISub 738 33 + 740: 225(ptr) AccessChain 199(particleIn) 120 739 120 + 741: 80(fvec4) Load 740 + 742: 18(fvec3) VectorShuffle 741 741 0 1 2 + 743: 18(fvec3) Load 255(pos) + 744: 18(fvec3) FSub 742 743 + Store 730(b) 744 + 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 746 746 16 16 + 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 748 747(c) 42 + 751: 11(int) Load 138(index) + 752: 145(ptr) AccessChain 117 120 144 16 + 753: 82(int) Load 752 + 754: 11(int) Bitcast 753 + 755: 11(int) ISub 751 754 + 756: 225(ptr) AccessChain 199(particleIn) 120 755 120 + 757: 80(fvec4) Load 756 + 758: 18(fvec3) VectorShuffle 757 757 0 1 2 + 759: 18(fvec3) Load 255(pos) + 760: 18(fvec3) FSub 758 759 + Store 747(c) 760 + 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 762 762 16 16 + 763: 18(fvec3) Load 717(a) + 764: 18(fvec3) Load 730(b) + 765: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 763 764 + 766: 18(fvec3) Load 730(b) + 767: 18(fvec3) Load 747(c) + 768: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 766 767 + 769: 18(fvec3) FAdd 765 768 + 770: 18(fvec3) Load 693(normal) + 771: 18(fvec3) FAdd 770 769 + Store 693(normal) 771 + Branch 713 + 713: Label + 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 774 774 16 16 + 775: 137(ptr) AccessChain 55(id) 16 + 776: 11(int) Load 775 + 777: 145(ptr) AccessChain 117 120 144 16 + 778: 82(int) Load 777 + 779: 82(int) ISub 778 232 + 780: 11(int) Bitcast 779 + 782: 162(bool) ULessThan 776 780 + SelectionMerge 784 None + BranchConditional 782 783 784 + 783: Label + 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 787 787 16 16 + 788: 11(int) Load 138(index) + 789: 145(ptr) AccessChain 117 120 144 16 + 790: 82(int) Load 789 + 791: 11(int) Bitcast 790 + 792: 11(int) ISub 788 791 + 793: 225(ptr) AccessChain 199(particleIn) 120 792 120 + 794: 80(fvec4) Load 793 + 795: 18(fvec3) VectorShuffle 794 794 0 1 2 + 796: 18(fvec3) Load 255(pos) + 797: 18(fvec3) FSub 795 796 + Store 717(a) 797 + 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 799 799 16 16 + 800: 11(int) Load 138(index) + 801: 145(ptr) AccessChain 117 120 144 16 + 802: 82(int) Load 801 + 803: 11(int) Bitcast 802 + 804: 11(int) ISub 800 803 + 805: 11(int) IAdd 804 33 + 806: 225(ptr) AccessChain 199(particleIn) 120 805 120 + 807: 80(fvec4) Load 806 + 808: 18(fvec3) VectorShuffle 807 807 0 1 2 + 809: 18(fvec3) Load 255(pos) + 810: 18(fvec3) FSub 808 809 + Store 730(b) 810 + 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 812 812 16 16 + 813: 11(int) Load 138(index) + 814: 11(int) IAdd 813 33 + 815: 225(ptr) AccessChain 199(particleIn) 120 814 120 + 816: 80(fvec4) Load 815 + 817: 18(fvec3) VectorShuffle 816 816 0 1 2 + 818: 18(fvec3) Load 255(pos) + 819: 18(fvec3) FSub 817 818 + Store 747(c) 819 + 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 821 821 16 16 + 822: 18(fvec3) Load 717(a) + 823: 18(fvec3) Load 730(b) + 824: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 822 823 + 825: 18(fvec3) Load 730(b) + 826: 18(fvec3) Load 747(c) + 827: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 825 826 + 828: 18(fvec3) FAdd 824 827 + 829: 18(fvec3) Load 693(normal) + 830: 18(fvec3) FAdd 829 828 + Store 693(normal) 830 + Branch 784 + 784: Label + Branch 704 + 704: Label + 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 832: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 833 833 16 16 + 834: 137(ptr) AccessChain 55(id) 33 + 835: 11(int) Load 834 + 836: 145(ptr) AccessChain 117 120 144 33 + 837: 82(int) Load 836 + 838: 82(int) ISub 837 232 + 839: 11(int) Bitcast 838 + 841: 162(bool) ULessThan 835 839 + SelectionMerge 843 None + BranchConditional 841 842 843 + 842: Label + 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 846 846 16 16 + 847: 137(ptr) AccessChain 55(id) 16 + 848: 11(int) Load 847 + 850: 162(bool) UGreaterThan 848 16 + SelectionMerge 852 None + BranchConditional 850 851 852 + 851: Label + 853: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 855 855 16 16 + 856: 11(int) Load 138(index) + 857: 145(ptr) AccessChain 117 120 144 16 + 858: 82(int) Load 857 + 859: 11(int) Bitcast 858 + 860: 11(int) IAdd 856 859 + 861: 225(ptr) AccessChain 199(particleIn) 120 860 120 + 862: 80(fvec4) Load 861 + 863: 18(fvec3) VectorShuffle 862 862 0 1 2 + 864: 18(fvec3) Load 255(pos) + 865: 18(fvec3) FSub 863 864 + Store 717(a) 865 + 866: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 867 867 16 16 + 868: 11(int) Load 138(index) + 869: 145(ptr) AccessChain 117 120 144 16 + 870: 82(int) Load 869 + 871: 11(int) Bitcast 870 + 872: 11(int) IAdd 868 871 + 873: 11(int) ISub 872 33 + 874: 225(ptr) AccessChain 199(particleIn) 120 873 120 + 875: 80(fvec4) Load 874 + 876: 18(fvec3) VectorShuffle 875 875 0 1 2 + 877: 18(fvec3) Load 255(pos) + 878: 18(fvec3) FSub 876 877 + Store 730(b) 878 + 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 880 880 16 16 + 881: 11(int) Load 138(index) + 882: 11(int) ISub 881 33 + 883: 225(ptr) AccessChain 199(particleIn) 120 882 120 + 884: 80(fvec4) Load 883 + 885: 18(fvec3) VectorShuffle 884 884 0 1 2 + 886: 18(fvec3) Load 255(pos) + 887: 18(fvec3) FSub 885 886 + Store 747(c) 887 + 888: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 889 889 16 16 + 890: 18(fvec3) Load 717(a) + 891: 18(fvec3) Load 730(b) + 892: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 890 891 + 893: 18(fvec3) Load 730(b) + 894: 18(fvec3) Load 747(c) + 895: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 893 894 + 896: 18(fvec3) FAdd 892 895 + 897: 18(fvec3) Load 693(normal) + 898: 18(fvec3) FAdd 897 896 + Store 693(normal) 898 + Branch 852 + 852: Label + 899: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 900: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 901 901 16 16 + 902: 137(ptr) AccessChain 55(id) 16 + 903: 11(int) Load 902 + 904: 145(ptr) AccessChain 117 120 144 16 + 905: 82(int) Load 904 + 906: 82(int) ISub 905 232 + 907: 11(int) Bitcast 906 + 909: 162(bool) ULessThan 903 907 + SelectionMerge 911 None + BranchConditional 909 910 911 + 910: Label + 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 913: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 914 914 16 16 + 915: 11(int) Load 138(index) + 916: 11(int) IAdd 915 33 + 917: 225(ptr) AccessChain 199(particleIn) 120 916 120 + 918: 80(fvec4) Load 917 + 919: 18(fvec3) VectorShuffle 918 918 0 1 2 + 920: 18(fvec3) Load 255(pos) + 921: 18(fvec3) FSub 919 920 + Store 717(a) 921 + 922: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 923 923 16 16 + 924: 11(int) Load 138(index) + 925: 145(ptr) AccessChain 117 120 144 16 + 926: 82(int) Load 925 + 927: 11(int) Bitcast 926 + 928: 11(int) IAdd 924 927 + 929: 11(int) IAdd 928 33 + 930: 225(ptr) AccessChain 199(particleIn) 120 929 120 + 931: 80(fvec4) Load 930 + 932: 18(fvec3) VectorShuffle 931 931 0 1 2 + 933: 18(fvec3) Load 255(pos) + 934: 18(fvec3) FSub 932 933 + Store 730(b) 934 + 935: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 936 936 16 16 + 937: 11(int) Load 138(index) + 938: 145(ptr) AccessChain 117 120 144 16 + 939: 82(int) Load 938 + 940: 11(int) Bitcast 939 + 941: 11(int) IAdd 937 940 + 942: 225(ptr) AccessChain 199(particleIn) 120 941 120 + 943: 80(fvec4) Load 942 + 944: 18(fvec3) VectorShuffle 943 943 0 1 2 + 945: 18(fvec3) Load 255(pos) + 946: 18(fvec3) FSub 944 945 + Store 747(c) 946 + 947: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 948 948 16 16 + 949: 18(fvec3) Load 717(a) + 950: 18(fvec3) Load 730(b) + 951: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 949 950 + 952: 18(fvec3) Load 730(b) + 953: 18(fvec3) Load 747(c) + 954: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 952 953 + 955: 18(fvec3) FAdd 951 954 + 956: 18(fvec3) Load 693(normal) + 957: 18(fvec3) FAdd 956 955 + Store 693(normal) 957 + Branch 911 + 911: Label + Branch 843 + 843: Label + 958: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 959: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 960 960 16 16 + 961: 11(int) Load 138(index) + 962: 18(fvec3) Load 693(normal) + 963: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 962 + 964: 8(float) CompositeExtract 963 0 + 965: 8(float) CompositeExtract 963 1 + 966: 8(float) CompositeExtract 963 2 + 967: 80(fvec4) CompositeConstruct 964 965 966 233 + 968: 225(ptr) AccessChain 221(particleOut) 120 961 555 + Store 968 967 + Branch 689 + 689: Label Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 2d8cc16232..5dad54931d 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -1,987 +1,1143 @@ spv.debuginfo.hlsl.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 743 +// Id's are bound by 886 Capability Shader Capability ImageQuery Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 5 "main" 736 739 - ExecutionMode 5 OriginUpperLeft - 9: String "float" - 12: String "uint" - 32: String "textureProj" - 35: String "" - 43: String "P" - 47: String "layer" - 50: String "offset" - 57: String "filterPCF" - 63: String "sc" - 75: String "shadow" - 81: String "fragcolor" - 84: String "fragPos" - 90: String "@main" - 96: String "inUV" - 106: String "shadowCoord" - 128: String "bool" - 141: String "dist" - 146: String "type.2d.image" - 147: String "@type.2d.image" - 152: String "textureShadowMap" - 157: String "type.sampler" - 158: String "@type.sampler" - 162: String "samplerShadowMap" - 166: String "type.sampled.image" - 167: String "@type.sampled.image" - 203: String "sizeQueryTemp" - 209: String "int" - 216: String "texDim" - 230: String "elements" - 237: String "levels" - 244: String "scale" - 250: String "dx" - 261: String "dy" - 272: String "shadowFactor" - 277: String "count" - 283: String "range" - 289: String "x" - 305: String "y" - 351: String "i" - 365: String "shadowClip" - 378: String "color" - 384: String "viewMatrix" - 388: String "Light" - 394: String "lights" - 397: String "displayDebugTarget" - 402: String "UBO" - 405: String "ubo" - 445: String "textureposition" - 450: String "samplerposition" - 460: String "normal" - 465: String "textureNormal" - 470: String "samplerNormal" - 478: String "albedo" - 483: String "textureAlbedo" - 488: String "samplerAlbedo" - 541: String "N" - 560: String "L" - 580: String "V" - 592: String "lightCosInnerAngle" - 598: String "lightCosOuterAngle" - 604: String "lightRange" - 610: String "dir" - 625: String "cosDir" - 633: String "spotEffect" - 642: String "heightAttenuation" - 650: String "NdotL" - 659: String "diff" - 666: String "R" - 675: String "NdotR" - 684: String "spec" - Name 5 "main" - Name 31 "textureProj(vf4;f1;vf2;" - Name 28 "P" - Name 29 "layer" - Name 30 "offset" - Name 56 "filterPCF(vf4;f1;" - Name 54 "sc" - Name 55 "layer" - Name 74 "shadow(vf3;vf3;" - Name 72 "fragcolor" - Name 73 "fragPos" - Name 89 "@main(vf2;" - Name 88 "inUV" - Name 99 "shadow" - Name 104 "shadowCoord" - Name 139 "dist" - Name 150 "textureShadowMap" - Name 160 "samplerShadowMap" - Name 201 "sizeQueryTemp" - Name 214 "texDim" - Name 228 "elements" - Name 235 "levels" - Name 242 "scale" - Name 248 "dx" - Name 259 "dy" - Name 270 "shadowFactor" - Name 275 "count" - Name 281 "range" - Name 287 "x" - Name 303 "y" - Name 328 "param" - Name 330 "param" - Name 332 "param" - Name 349 "i" - Name 363 "shadowClip" - Name 376 "Light" - MemberName 376(Light) 0 "position" - MemberName 376(Light) 1 "target" - MemberName 376(Light) 2 "color" - MemberName 376(Light) 3 "viewMatrix" - Name 391 "UBO" - MemberName 391(UBO) 0 "viewPos" - MemberName 391(UBO) 1 "lights" - MemberName 391(UBO) 2 "useShadows" - MemberName 391(UBO) 3 "displayDebugTarget" - Name 403 "ubo" - MemberName 403(ubo) 0 "ubo" - Name 410 "" - Name 417 "shadowFactor" - Name 423 "param" - Name 425 "param" - Name 436 "fragPos" - Name 443 "textureposition" - Name 448 "samplerposition" - Name 458 "normal" - Name 463 "textureNormal" - Name 468 "samplerNormal" - Name 476 "albedo" - Name 481 "textureAlbedo" - Name 486 "samplerAlbedo" - Name 508 "fragcolor" - Name 513 "param" - Name 514 "param" - Name 539 "N" - Name 546 "i" - Name 558 "L" - Name 570 "dist" - Name 578 "V" - Name 590 "lightCosInnerAngle" - Name 596 "lightCosOuterAngle" - Name 602 "lightRange" - Name 608 "dir" - Name 623 "cosDir" - Name 631 "spotEffect" - Name 640 "heightAttenuation" - Name 648 "NdotL" - Name 657 "diff" - Name 664 "R" - Name 673 "NdotR" - Name 682 "spec" - Name 722 "param" - Name 724 "param" - Name 734 "inUV" - Name 736 "inUV" - Name 739 "@entryPointOutput" - Name 740 "param" - Decorate 150(textureShadowMap) DescriptorSet 0 - Decorate 150(textureShadowMap) Binding 5 - Decorate 160(samplerShadowMap) DescriptorSet 0 - Decorate 160(samplerShadowMap) Binding 5 - MemberDecorate 376(Light) 0 Offset 0 - MemberDecorate 376(Light) 1 Offset 16 - MemberDecorate 376(Light) 2 Offset 32 - MemberDecorate 376(Light) 3 RowMajor - MemberDecorate 376(Light) 3 Offset 48 - MemberDecorate 376(Light) 3 MatrixStride 16 - Decorate 389 ArrayStride 112 - MemberDecorate 391(UBO) 0 Offset 0 - MemberDecorate 391(UBO) 1 Offset 16 - MemberDecorate 391(UBO) 2 Offset 352 - MemberDecorate 391(UBO) 3 Offset 356 - MemberDecorate 403(ubo) 0 Offset 0 - Decorate 403(ubo) Block - Decorate 410 DescriptorSet 0 - Decorate 410 Binding 4 - Decorate 443(textureposition) DescriptorSet 0 - Decorate 443(textureposition) Binding 1 - Decorate 448(samplerposition) DescriptorSet 0 - Decorate 448(samplerposition) Binding 1 - Decorate 463(textureNormal) DescriptorSet 0 - Decorate 463(textureNormal) Binding 2 - Decorate 468(samplerNormal) DescriptorSet 0 - Decorate 468(samplerNormal) Binding 2 - Decorate 481(textureAlbedo) DescriptorSet 0 - Decorate 481(textureAlbedo) Binding 3 - Decorate 486(samplerAlbedo) DescriptorSet 0 - Decorate 486(samplerAlbedo) Binding 3 - Decorate 736(inUV) Location 0 - Decorate 739(@entryPointOutput) Location 0 - 3: TypeVoid - 4: TypeFunction 3 - 7: TypeFloat 32 - 10: TypeInt 32 0 - 13: 10(int) Constant 32 - 14: 10(int) Constant 6 - 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 - 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 - 17: TypeVector 7(float) 4 - 18: 10(int) Constant 4 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 18 - 20: TypePointer Function 17(fvec4) - 21: TypePointer Function 7(float) - 22: TypeVector 7(float) 2 - 23: 10(int) Constant 2 - 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 23 - 25: TypePointer Function 22(fvec2) - 26: TypeFunction 7(float) 20(ptr) 21(ptr) 25(ptr) - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 8 19 8 24 - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 35 - 37: 10(int) Constant 1 - 38: 10(int) Constant 5 - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 18 34 38 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 32 27 34 15 15 36 32 16 15 - 42: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 19 34 15 15 33 18 37 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 46: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 8 34 15 15 33 18 23 - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 24 34 15 15 33 18 16 - 52: TypeFunction 7(float) 20(ptr) 21(ptr) - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 8 19 8 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 53 34 15 15 36 57 16 15 - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 63 19 34 15 15 58 18 37 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 8 34 15 15 58 18 23 - 67: TypeVector 7(float) 3 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 - 69: TypePointer Function 67(fvec3) - 70: TypeFunction 67(fvec3) 69(ptr) 69(ptr) - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 68 68 68 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 75 71 34 15 15 36 75 16 15 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 68 34 15 15 76 18 37 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 68 34 15 15 76 18 23 - 86: TypeFunction 17(fvec4) 25(ptr) - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 19 24 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 90 87 34 15 15 36 90 16 15 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 24 34 15 15 91 18 37 - 101: 10(int) Constant 62 - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 75 8 34 101 15 33 18 - 103: 7(float) Constant 1065353216 - 107: 10(int) Constant 63 - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 106 19 34 107 15 33 18 - 116: 7(float) Constant 1056964608 - 126: 7(float) Constant 3212836864 - 127: TypeBool - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 142: 10(int) Constant 68 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 8 34 142 15 33 18 - 144: TypeImage 7(float) 2D array sampled format:Unknown - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 146 15 34 142 15 36 147 148 16 - 149: TypePointer UniformConstant 144 -150(textureShadowMap): 149(ptr) Variable UniformConstant - 153: 10(int) Constant 8 - 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 152 145 34 142 15 36 152 150(textureShadowMap) 153 - 155: TypeSampler - 156: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 142 15 36 158 148 16 - 159: TypePointer UniformConstant 155 -160(samplerShadowMap): 159(ptr) Variable UniformConstant - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 162 156 34 142 15 36 162 160(samplerShadowMap) 153 - 164: TypeSampledImage 144 - 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 15 34 142 15 36 167 148 16 - 181: 7(float) Constant 0 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 193: 7(float) Constant 1048576000 - 198: TypeVector 10(int) 3 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 11 16 - 200: TypePointer Function 198(ivec3) - 204: 10(int) Constant 80 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 203 199 34 204 15 58 18 - 208: TypeInt 32 1 - 210: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 209 13 18 15 - 211: TypeVector 208(int) 2 - 212: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 210 23 - 213: TypePointer Function 211(ivec2) - 215: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 216 212 34 204 15 58 18 - 218: TypePointer Function 10(int) - 222: TypePointer Function 208(int) - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 230 210 34 204 15 58 18 - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 210 34 204 15 58 18 - 245: 10(int) Constant 81 - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 8 34 245 15 58 18 - 247: 7(float) Constant 1069547520 - 251: 10(int) Constant 82 - 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 8 34 251 15 58 18 - 262: 10(int) Constant 83 - 260: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 8 34 262 15 58 18 - 273: 10(int) Constant 85 - 271: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 8 34 273 15 58 18 - 278: 10(int) Constant 86 - 276: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 277 210 34 278 15 58 18 - 280: 208(int) Constant 0 - 284: 10(int) Constant 87 - 282: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 210 34 284 15 58 18 - 286: 208(int) Constant 1 - 290: 10(int) Constant 89 - 288: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 289 210 34 290 15 58 18 - 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 306: 10(int) Constant 91 - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 305 210 34 306 15 58 18 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 352: 10(int) Constant 102 - 350: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 351 210 34 352 15 76 18 - 360: 208(int) Constant 3 - 361: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 366: 10(int) Constant 104 - 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 365 19 34 366 15 76 18 - 373: TypeMatrix 17(fvec4) 4 - 375: 127(bool) ConstantTrue - 374: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 18 375 - 376(Light): TypeStruct 17(fvec4) 17(fvec4) 17(fvec4) 373 - 379: 10(int) Constant 46 - 380: 10(int) Constant 14 - 377: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 - 381: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 - 382: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 - 385: 10(int) Constant 47 - 386: 10(int) Constant 21 - 383: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 384 374 34 385 386 15 15 16 - 387: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 388 37 34 366 15 36 388 15 16 377 381 382 383 - 389: TypeArray 376(Light) 16 - 390: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 387 16 - 391(UBO): TypeStruct 17(fvec4) 389 208(int) 208(int) - 392: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 378 19 34 379 380 15 15 16 - 395: 10(int) Constant 53 - 393: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 394 390 34 395 380 15 15 16 - 398: 10(int) Constant 55 - 399: 10(int) Constant 24 - 396: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 210 34 398 399 15 15 16 - 400: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 210 34 398 399 15 15 16 - 401: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 402 37 34 366 15 36 402 15 16 392 393 396 400 - 403(ubo): TypeStruct 391(UBO) - 406: 10(int) Constant 58 - 407: 10(int) Constant 37 - 404: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 405 401 34 406 407 15 15 16 - 408: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 405 37 34 366 15 36 405 15 16 404 - 409: TypePointer Uniform 403(ubo) - 410: 409(ptr) Variable Uniform - 411: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 35 408 34 366 15 36 35 410 153 - 413: TypePointer Uniform 373 - 419: 10(int) Constant 108 - 418: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 8 34 419 15 76 18 - 438: 10(int) Constant 121 - 437: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 68 34 438 15 91 18 - 440: TypeImage 7(float) 2D sampled format:Unknown - 441: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 146 15 34 438 15 36 147 148 16 - 442: TypePointer UniformConstant 440 -443(textureposition): 442(ptr) Variable UniformConstant - 444: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 445 441 34 438 15 36 445 443(textureposition) 153 - 447: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 438 15 36 158 148 16 -448(samplerposition): 159(ptr) Variable UniformConstant - 449: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 450 447 34 438 15 36 450 448(samplerposition) 153 - 452: TypeSampledImage 440 - 453: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 15 34 438 15 36 167 148 16 - 461: 10(int) Constant 122 - 459: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 460 68 34 461 15 91 18 -463(textureNormal): 442(ptr) Variable UniformConstant - 464: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 465 441 34 461 15 36 465 463(textureNormal) 153 - 467: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 461 15 36 158 148 16 -468(samplerNormal): 159(ptr) Variable UniformConstant - 469: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 470 467 34 461 15 36 470 468(samplerNormal) 153 - 479: 10(int) Constant 123 - 477: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 478 19 34 479 15 91 18 -481(textureAlbedo): 442(ptr) Variable UniformConstant - 482: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 483 441 34 479 15 36 483 481(textureAlbedo) 153 - 485: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 34 479 15 36 158 148 16 -486(samplerAlbedo): 159(ptr) Variable UniformConstant - 487: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 488 485 34 479 15 36 488 486(samplerAlbedo) 153 - 493: TypePointer Uniform 208(int) - 496: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 510: 10(int) Constant 131 - 509: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 68 34 510 15 91 18 - 512: 67(fvec3) ConstantComposite 103 103 103 - 537: 7(float) Constant 1036831949 - 542: 10(int) Constant 152 - 540: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 541 68 34 542 15 91 18 - 548: 10(int) Constant 154 - 547: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 351 210 34 548 15 91 18 - 556: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 561: 10(int) Constant 157 - 559: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 560 68 34 561 15 91 18 - 564: TypePointer Uniform 17(fvec4) - 572: 10(int) Constant 159 - 571: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 8 34 572 15 91 18 - 581: 10(int) Constant 163 - 579: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 580 68 34 581 15 91 18 - 593: 10(int) Constant 166 - 591: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 592 8 34 593 15 91 18 - 595: 7(float) Constant 1064781546 - 599: 10(int) Constant 167 - 597: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 598 8 34 599 15 91 18 - 601: 7(float) Constant 1063781322 - 605: 10(int) Constant 168 - 603: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 604 8 34 605 15 91 18 - 607: 7(float) Constant 1120403456 - 611: 10(int) Constant 171 - 609: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 610 68 34 611 15 91 18 - 626: 10(int) Constant 174 - 624: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 625 8 34 626 15 91 18 - 634: 10(int) Constant 175 - 632: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 633 8 34 634 15 91 18 - 643: 10(int) Constant 176 - 641: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 642 8 34 643 15 91 18 - 651: 10(int) Constant 179 - 649: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 650 8 34 651 15 91 18 - 660: 10(int) Constant 180 - 658: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 659 68 34 660 15 91 18 - 667: 10(int) Constant 183 - 665: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 666 68 34 667 15 91 18 - 676: 10(int) Constant 184 - 674: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 675 8 34 676 15 91 18 - 685: 10(int) Constant 185 - 683: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 684 68 34 685 15 91 18 - 688: 7(float) Constant 1098907648 - 693: 7(float) Constant 1075838976 - 704: 208(int) Constant 2 - 718: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 13 23 15 - 735: TypePointer Input 22(fvec2) - 736(inUV): 735(ptr) Variable Input - 738: TypePointer Output 17(fvec4) -739(@entryPointOutput): 738(ptr) Variable Output - 5(main): 3 Function None 4 - 6: Label - 734(inUV): 25(ptr) Variable Function - 740(param): 25(ptr) Variable Function - 737: 22(fvec2) Load 736(inUV) - Store 734(inUV) 737 - 741: 22(fvec2) Load 734(inUV) - Store 740(param) 741 - 742: 17(fvec4) FunctionCall 89(@main(vf2;) 740(param) - Store 739(@entryPointOutput) 742 + EntryPoint Fragment 6 "main" 879 882 + ExecutionMode 6 OriginUpperLeft + 1: String "" + 10: String "float" + 13: String "uint" + 33: String "textureProj" + 36: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed entry-point main +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed hlsl-offsets +#line 1 +" + 44: String "P" + 48: String "layer" + 51: String "offset" + 58: String "filterPCF" + 64: String "sc" + 76: String "shadow" + 82: String "fragcolor" + 85: String "fragPos" + 91: String "@main" + 97: String "inUV" + 111: String "shadowCoord" + 136: String "bool" + 152: String "dist" + 156: String "type.2d.image" + 157: String "@type.2d.image" + 162: String "textureShadowMap" + 167: String "type.sampler" + 168: String "@type.sampler" + 172: String "samplerShadowMap" + 176: String "type.sampled.image" + 177: String "@type.sampled.image" + 224: String "sizeQueryTemp" + 229: String "int" + 236: String "texDim" + 250: String "elements" + 257: String "levels" + 266: String "scale" + 273: String "dx" + 285: String "dy" + 297: String "shadowFactor" + 303: String "count" + 310: String "range" + 317: String "x" + 339: String "y" + 403: String "i" + 423: String "shadowClip" + 435: String "color" + 441: String "viewMatrix" + 445: String "Light" + 451: String "lights" + 454: String "displayDebugTarget" + 459: String "UBO" + 462: String "ubo" + 512: String "textureposition" + 517: String "samplerposition" + 529: String "normal" + 533: String "textureNormal" + 538: String "samplerNormal" + 548: String "albedo" + 552: String "textureAlbedo" + 557: String "samplerAlbedo" + 647: String "N" + 673: String "L" + 697: String "V" + 712: String "lightCosInnerAngle" + 719: String "lightCosOuterAngle" + 726: String "lightRange" + 733: String "dir" + 749: String "cosDir" + 758: String "spotEffect" + 768: String "heightAttenuation" + 777: String "NdotL" + 787: String "diff" + 795: String "R" + 805: String "NdotR" + 815: String "spec" + Name 6 "main" + Name 32 "textureProj(vf4;f1;vf2;" + Name 29 "P" + Name 30 "layer" + Name 31 "offset" + Name 57 "filterPCF(vf4;f1;" + Name 55 "sc" + Name 56 "layer" + Name 75 "shadow(vf3;vf3;" + Name 73 "fragcolor" + Name 74 "fragPos" + Name 90 "@main(vf2;" + Name 89 "inUV" + Name 103 "shadow" + Name 109 "shadowCoord" + Name 150 "dist" + Name 160 "textureShadowMap" + Name 170 "samplerShadowMap" + Name 222 "sizeQueryTemp" + Name 234 "texDim" + Name 248 "elements" + Name 255 "levels" + Name 264 "scale" + Name 271 "dx" + Name 283 "dy" + Name 295 "shadowFactor" + Name 301 "count" + Name 308 "range" + Name 315 "x" + Name 337 "y" + Name 368 "param" + Name 370 "param" + Name 372 "param" + Name 401 "i" + Name 421 "shadowClip" + Name 433 "Light" + MemberName 433(Light) 0 "position" + MemberName 433(Light) 1 "target" + MemberName 433(Light) 2 "color" + MemberName 433(Light) 3 "viewMatrix" + Name 448 "UBO" + MemberName 448(UBO) 0 "viewPos" + MemberName 448(UBO) 1 "lights" + MemberName 448(UBO) 2 "useShadows" + MemberName 448(UBO) 3 "displayDebugTarget" + Name 460 "ubo" + MemberName 460(ubo) 0 "ubo" + Name 467 "" + Name 476 "shadowFactor" + Name 481 "param" + Name 483 "param" + Name 504 "fragPos" + Name 510 "textureposition" + Name 515 "samplerposition" + Name 527 "normal" + Name 531 "textureNormal" + Name 536 "samplerNormal" + Name 546 "albedo" + Name 550 "textureAlbedo" + Name 555 "samplerAlbedo" + Name 585 "fragcolor" + Name 589 "param" + Name 590 "param" + Name 645 "N" + Name 653 "i" + Name 671 "L" + Name 684 "dist" + Name 695 "V" + Name 710 "lightCosInnerAngle" + Name 717 "lightCosOuterAngle" + Name 724 "lightRange" + Name 731 "dir" + Name 747 "cosDir" + Name 756 "spotEffect" + Name 766 "heightAttenuation" + Name 775 "NdotL" + Name 785 "diff" + Name 793 "R" + Name 803 "NdotR" + Name 813 "spec" + Name 862 "param" + Name 864 "param" + Name 877 "inUV" + Name 879 "inUV" + Name 882 "@entryPointOutput" + Name 883 "param" + Decorate 160(textureShadowMap) DescriptorSet 0 + Decorate 160(textureShadowMap) Binding 5 + Decorate 170(samplerShadowMap) DescriptorSet 0 + Decorate 170(samplerShadowMap) Binding 5 + MemberDecorate 433(Light) 0 Offset 0 + MemberDecorate 433(Light) 1 Offset 16 + MemberDecorate 433(Light) 2 Offset 32 + MemberDecorate 433(Light) 3 RowMajor + MemberDecorate 433(Light) 3 Offset 48 + MemberDecorate 433(Light) 3 MatrixStride 16 + Decorate 446 ArrayStride 112 + MemberDecorate 448(UBO) 0 Offset 0 + MemberDecorate 448(UBO) 1 Offset 16 + MemberDecorate 448(UBO) 2 Offset 352 + MemberDecorate 448(UBO) 3 Offset 356 + MemberDecorate 460(ubo) 0 Offset 0 + Decorate 460(ubo) Block + Decorate 467 DescriptorSet 0 + Decorate 467 Binding 4 + Decorate 510(textureposition) DescriptorSet 0 + Decorate 510(textureposition) Binding 1 + Decorate 515(samplerposition) DescriptorSet 0 + Decorate 515(samplerposition) Binding 1 + Decorate 531(textureNormal) DescriptorSet 0 + Decorate 531(textureNormal) Binding 2 + Decorate 536(samplerNormal) DescriptorSet 0 + Decorate 536(samplerNormal) Binding 2 + Decorate 550(textureAlbedo) DescriptorSet 0 + Decorate 550(textureAlbedo) Binding 3 + Decorate 555(samplerAlbedo) DescriptorSet 0 + Decorate 555(samplerAlbedo) Binding 3 + Decorate 879(inUV) Location 0 + Decorate 882(@entryPointOutput) Location 0 + 4: TypeVoid + 5: TypeFunction 4 + 8: TypeFloat 32 + 11: TypeInt 32 0 + 14: 11(int) Constant 32 + 15: 11(int) Constant 6 + 16: 11(int) Constant 0 + 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 17: 11(int) Constant 3 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 18: TypeVector 8(float) 4 + 19: 11(int) Constant 4 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 19 + 21: TypePointer Function 18(fvec4) + 22: TypePointer Function 8(float) + 23: TypeVector 8(float) 2 + 24: 11(int) Constant 2 + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 24 + 26: TypePointer Function 23(fvec2) + 27: TypeFunction 8(float) 21(ptr) 22(ptr) 26(ptr) + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 9 20 9 25 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 36 + 38: 11(int) Constant 1 + 39: 11(int) Constant 5 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 38 19 35 39 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 28 35 16 16 37 33 17 16 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 20 35 16 16 34 19 38 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 9 35 16 16 34 19 24 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 51 25 35 16 16 34 19 17 + 53: TypeFunction 8(float) 21(ptr) 22(ptr) + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 9 20 9 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 54 35 16 16 37 58 17 16 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 20 35 16 16 59 19 38 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 9 35 16 16 59 19 24 + 68: TypeVector 8(float) 3 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 70: TypePointer Function 68(fvec3) + 71: TypeFunction 68(fvec3) 70(ptr) 70(ptr) + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 69 69 69 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 76 72 35 16 16 37 76 17 16 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 69 35 16 16 77 19 38 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 69 35 16 16 77 19 24 + 87: TypeFunction 18(fvec4) 26(ptr) + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 25 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 91 88 35 16 16 37 91 17 16 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 97 25 35 16 16 92 19 38 + 102: 11(int) Constant 62 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 76 9 35 102 16 34 19 + 106: 8(float) Constant 1065353216 + 108: 11(int) Constant 63 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 111 20 35 108 16 34 19 + 119: 11(int) Constant 64 + 122: 8(float) Constant 1056964608 + 131: 11(int) Constant 66 + 134: 8(float) Constant 3212836864 + 135: TypeBool + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 149: 11(int) Constant 68 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 9 35 149 16 34 19 + 154: TypeImage 8(float) 2D array sampled format:Unknown + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 16 35 149 16 37 157 158 17 + 159: TypePointer UniformConstant 154 +160(textureShadowMap): 159(ptr) Variable UniformConstant + 163: 11(int) Constant 8 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 162 155 35 149 16 37 162 160(textureShadowMap) 163 + 165: TypeSampler + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 149 16 37 168 158 17 + 169: TypePointer UniformConstant 165 +170(samplerShadowMap): 169(ptr) Variable UniformConstant + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 172 166 35 149 16 37 172 170(samplerShadowMap) 163 + 174: TypeSampledImage 154 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 16 35 149 16 37 177 158 17 + 190: 11(int) Constant 69 + 193: 8(float) Constant 0 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 207: 11(int) Constant 71 + 208: 8(float) Constant 1048576000 + 211: 11(int) Constant 74 + 218: 11(int) Constant 80 + 219: TypeVector 11(int) 3 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 12 17 + 221: TypePointer Function 219(ivec3) + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 224 220 35 218 16 59 19 + 228: TypeInt 32 1 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 229 14 19 16 + 231: TypeVector 228(int) 2 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 230 24 + 233: TypePointer Function 231(ivec2) + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 236 232 35 218 16 59 19 + 238: TypePointer Function 11(int) + 242: TypePointer Function 228(int) + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 230 35 218 16 59 19 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 257 230 35 218 16 59 19 + 263: 11(int) Constant 81 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 9 35 263 16 59 19 + 268: 8(float) Constant 1069547520 + 270: 11(int) Constant 82 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 9 35 270 16 59 19 + 282: 11(int) Constant 83 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 285 9 35 282 16 59 19 + 294: 11(int) Constant 85 + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 9 35 294 16 59 19 + 300: 11(int) Constant 86 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 230 35 300 16 59 19 + 305: 228(int) Constant 0 + 307: 11(int) Constant 87 + 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 310 230 35 307 16 59 19 + 312: 228(int) Constant 1 + 314: 11(int) Constant 89 + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 230 35 314 16 59 19 + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 336: 11(int) Constant 91 + 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 339 230 35 336 16 59 19 + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 358: 11(int) Constant 93 + 377: 11(int) Constant 94 + 390: 11(int) Constant 98 + 400: 11(int) Constant 102 + 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 403 230 35 400 16 77 19 + 415: 228(int) Constant 3 + 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 420: 11(int) Constant 104 + 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 423 20 35 420 16 77 19 + 430: TypeMatrix 18(fvec4) 4 + 432: 135(bool) ConstantTrue + 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 432 + 433(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 430 + 436: 11(int) Constant 46 + 437: 11(int) Constant 14 + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 + 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 + 442: 11(int) Constant 47 + 443: 11(int) Constant 21 + 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 441 431 35 442 443 16 16 17 + 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 445 38 35 420 16 37 445 16 17 434 438 439 440 + 446: TypeArray 433(Light) 17 + 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 444 17 + 448(UBO): TypeStruct 18(fvec4) 446 228(int) 228(int) + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 + 452: 11(int) Constant 53 + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 451 447 35 452 437 16 16 17 + 455: 11(int) Constant 55 + 456: 11(int) Constant 24 + 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 454 230 35 455 456 16 16 17 + 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 454 230 35 455 456 16 16 17 + 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 459 38 35 420 16 37 459 16 17 449 450 453 457 + 460(ubo): TypeStruct 448(UBO) + 463: 11(int) Constant 58 + 464: 11(int) Constant 37 + 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 458 35 463 464 16 16 17 + 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 462 38 35 420 16 37 462 16 17 461 + 466: TypePointer Uniform 460(ubo) + 467: 466(ptr) Variable Uniform + 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 465 35 420 16 37 1 467 163 + 470: TypePointer Uniform 430 + 475: 11(int) Constant 108 + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 9 35 475 16 77 19 + 486: 11(int) Constant 113 + 496: 11(int) Constant 115 + 503: 11(int) Constant 121 + 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 69 35 503 16 92 19 + 507: TypeImage 8(float) 2D sampled format:Unknown + 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 16 35 503 16 37 157 158 17 + 509: TypePointer UniformConstant 507 +510(textureposition): 509(ptr) Variable UniformConstant + 511: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 512 508 35 503 16 37 512 510(textureposition) 163 + 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 503 16 37 168 158 17 +515(samplerposition): 169(ptr) Variable UniformConstant + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 517 514 35 503 16 37 517 515(samplerposition) 163 + 519: TypeSampledImage 507 + 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 16 35 503 16 37 177 158 17 + 526: 11(int) Constant 122 + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 529 69 35 526 16 92 19 +531(textureNormal): 509(ptr) Variable UniformConstant + 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 533 508 35 526 16 37 533 531(textureNormal) 163 + 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 526 16 37 168 158 17 +536(samplerNormal): 169(ptr) Variable UniformConstant + 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 538 535 35 526 16 37 538 536(samplerNormal) 163 + 545: 11(int) Constant 123 + 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 548 20 35 545 16 92 19 +550(textureAlbedo): 509(ptr) Variable UniformConstant + 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 552 508 35 545 16 37 552 550(textureAlbedo) 163 + 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 545 16 37 168 158 17 +555(samplerAlbedo): 169(ptr) Variable UniformConstant + 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 557 554 35 545 16 37 557 555(samplerAlbedo) 163 + 563: 11(int) Constant 128 + 564: TypePointer Uniform 228(int) + 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 573: 11(int) Constant 129 + 584: 11(int) Constant 131 + 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 69 35 584 16 92 19 + 588: 68(fvec3) ConstantComposite 106 106 106 + 594: 11(int) Constant 132 + 598: 11(int) Constant 134 + 601: 11(int) Constant 135 + 605: 11(int) Constant 137 + 608: 11(int) Constant 138 + 612: 11(int) Constant 140 + 616: 11(int) Constant 141 + 620: 11(int) Constant 143 + 624: 11(int) Constant 144 + 629: 11(int) Constant 146 + 638: 11(int) Constant 150 + 641: 8(float) Constant 1036831949 + 644: 11(int) Constant 152 + 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 647 69 35 644 16 92 19 + 652: 11(int) Constant 154 + 654: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 403 230 35 652 16 92 19 + 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 670: 11(int) Constant 157 + 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 673 69 35 670 16 92 19 + 676: TypePointer Uniform 18(fvec4) + 683: 11(int) Constant 159 + 685: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 9 35 683 16 92 19 + 690: 11(int) Constant 160 + 694: 11(int) Constant 163 + 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 697 69 35 694 16 92 19 + 705: 11(int) Constant 164 + 709: 11(int) Constant 166 + 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 9 35 709 16 92 19 + 714: 8(float) Constant 1064781546 + 716: 11(int) Constant 167 + 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 9 35 716 16 92 19 + 721: 8(float) Constant 1063781322 + 723: 11(int) Constant 168 + 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 726 9 35 723 16 92 19 + 728: 8(float) Constant 1120403456 + 730: 11(int) Constant 171 + 732: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 733 69 35 730 16 92 19 + 746: 11(int) Constant 174 + 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 9 35 746 16 92 19 + 755: 11(int) Constant 175 + 757: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 758 9 35 755 16 92 19 + 765: 11(int) Constant 176 + 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 768 9 35 765 16 92 19 + 774: 11(int) Constant 179 + 776: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 777 9 35 774 16 92 19 + 784: 11(int) Constant 180 + 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 69 35 784 16 92 19 + 792: 11(int) Constant 183 + 794: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 795 69 35 792 16 92 19 + 802: 11(int) Constant 184 + 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 805 9 35 802 16 92 19 + 812: 11(int) Constant 185 + 814: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 815 69 35 812 16 92 19 + 818: 8(float) Constant 1098907648 + 823: 8(float) Constant 1075838976 + 827: 11(int) Constant 187 + 836: 228(int) Constant 2 + 852: 11(int) Constant 191 + 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 + 861: 11(int) Constant 193 + 869: 11(int) Constant 196 + 878: TypePointer Input 23(fvec2) + 879(inUV): 878(ptr) Variable Input + 881: TypePointer Output 18(fvec4) +882(@entryPointOutput): 881(ptr) Variable Output + Line 1 119 1 + 6(main): 4 Function None 5 + 7: Label + 877(inUV): 26(ptr) Variable Function + 883(param): 26(ptr) Variable Function + Line 1 119 0 + 880: 23(fvec2) Load 879(inUV) + Store 877(inUV) 880 + 884: 23(fvec2) Load 877(inUV) + Store 883(param) 884 + 885: 18(fvec4) FunctionCall 90(@main(vf2;) 883(param) + Store 882(@entryPointOutput) 885 Return FunctionEnd -31(textureProj(vf4;f1;vf2;): 7(float) Function None 26 - 28(P): 20(ptr) FunctionParameter - 29(layer): 21(ptr) FunctionParameter - 30(offset): 25(ptr) FunctionParameter - 39: Label - 99(shadow): 21(ptr) Variable Function -104(shadowCoord): 20(ptr) Variable Function - 139(dist): 21(ptr) Variable Function - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 - 44: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 28(P) 45 - 48: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 29(layer) 45 - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 30(offset) 45 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 31(textureProj(vf4;f1;vf2;) - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 99(shadow) 45 - Store 99(shadow) 103 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 105 104(shadowCoord) 45 - 109: 17(fvec4) Load 28(P) - 110: 21(ptr) AccessChain 28(P) 16 - 111: 7(float) Load 110 - 112: 17(fvec4) CompositeConstruct 111 111 111 111 - 113: 17(fvec4) FDiv 109 112 - Store 104(shadowCoord) 113 - 114: 17(fvec4) Load 104(shadowCoord) - 115: 22(fvec2) VectorShuffle 114 114 0 1 - 117: 22(fvec2) VectorTimesScalar 115 116 - 118: 22(fvec2) CompositeConstruct 116 116 - 119: 22(fvec2) FAdd 117 118 - 120: 21(ptr) AccessChain 104(shadowCoord) 15 - 121: 7(float) CompositeExtract 119 0 - Store 120 121 - 122: 21(ptr) AccessChain 104(shadowCoord) 37 - 123: 7(float) CompositeExtract 119 1 - Store 122 123 - 124: 21(ptr) AccessChain 104(shadowCoord) 23 - 125: 7(float) Load 124 - 130: 127(bool) FOrdGreaterThan 125 126 - 131: 21(ptr) AccessChain 104(shadowCoord) 23 - 132: 7(float) Load 131 - 134: 127(bool) FOrdLessThan 132 103 - 136: 127(bool) LogicalAnd 130 134 - SelectionMerge 138 None - BranchConditional 136 137 138 - 137: Label - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 140 139(dist) 45 - 154: 144 Load 150(textureShadowMap) - 163: 155 Load 160(samplerShadowMap) - 168: 164 SampledImage 154 163 - 169: 17(fvec4) Load 104(shadowCoord) - 170: 22(fvec2) VectorShuffle 169 169 0 1 - 171: 22(fvec2) Load 30(offset) - 172: 22(fvec2) FAdd 170 171 - 173: 7(float) Load 29(layer) - 174: 7(float) CompositeExtract 172 0 - 175: 7(float) CompositeExtract 172 1 - 176: 67(fvec3) CompositeConstruct 174 175 173 - 177: 17(fvec4) ImageSampleImplicitLod 168 176 - 178: 7(float) CompositeExtract 177 0 - Store 139(dist) 178 - 179: 21(ptr) AccessChain 104(shadowCoord) 16 - 180: 7(float) Load 179 - 183: 127(bool) FOrdGreaterThan 180 181 - 184: 7(float) Load 139(dist) - 185: 21(ptr) AccessChain 104(shadowCoord) 23 - 186: 7(float) Load 185 - 188: 127(bool) FOrdLessThan 184 186 - 190: 127(bool) LogicalAnd 183 188 - SelectionMerge 192 None - BranchConditional 190 191 192 - 191: Label - Store 99(shadow) 193 - Branch 192 - 192: Label - Branch 138 - 138: Label - 194: 7(float) Load 99(shadow) - ReturnValue 194 + Line 1 61 1 +32(textureProj(vf4;f1;vf2;): 8(float) Function None 27 + 29(P): 21(ptr) FunctionParameter + 30(layer): 22(ptr) FunctionParameter + 31(offset): 26(ptr) FunctionParameter + 40: Label + 103(shadow): 22(ptr) Variable Function +109(shadowCoord): 21(ptr) Variable Function + 150(dist): 22(ptr) Variable Function + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 29(P) 46 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 30(layer) 46 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 50 31(offset) 46 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 32(textureProj(vf4;f1;vf2;) + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 102 102 16 16 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 104 103(shadow) 46 + Store 103(shadow) 106 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 108 108 16 16 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 110 109(shadowCoord) 46 + 113: 18(fvec4) Load 29(P) + 114: 22(ptr) AccessChain 29(P) 17 + 115: 8(float) Load 114 + 116: 18(fvec4) CompositeConstruct 115 115 115 115 + 117: 18(fvec4) FDiv 113 116 + Store 109(shadowCoord) 117 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 119 119 16 16 + 120: 18(fvec4) Load 109(shadowCoord) + 121: 23(fvec2) VectorShuffle 120 120 0 1 + 123: 23(fvec2) VectorTimesScalar 121 122 + 124: 23(fvec2) CompositeConstruct 122 122 + 125: 23(fvec2) FAdd 123 124 + 126: 22(ptr) AccessChain 109(shadowCoord) 16 + 127: 8(float) CompositeExtract 125 0 + Store 126 127 + 128: 22(ptr) AccessChain 109(shadowCoord) 38 + 129: 8(float) CompositeExtract 125 1 + Store 128 129 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 131 131 16 16 + 132: 22(ptr) AccessChain 109(shadowCoord) 24 + 133: 8(float) Load 132 + 138: 135(bool) FOrdGreaterThan 133 134 + 139: 22(ptr) AccessChain 109(shadowCoord) 24 + 140: 8(float) Load 139 + 142: 135(bool) FOrdLessThan 140 106 + 144: 135(bool) LogicalAnd 138 142 + SelectionMerge 146 None + BranchConditional 144 145 146 + 145: Label + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 149 149 16 16 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 151 150(dist) 46 + 164: 154 Load 160(textureShadowMap) + 173: 165 Load 170(samplerShadowMap) + 178: 174 SampledImage 164 173 + 179: 18(fvec4) Load 109(shadowCoord) + 180: 23(fvec2) VectorShuffle 179 179 0 1 + 181: 23(fvec2) Load 31(offset) + 182: 23(fvec2) FAdd 180 181 + 183: 8(float) Load 30(layer) + 184: 8(float) CompositeExtract 182 0 + 185: 8(float) CompositeExtract 182 1 + 186: 68(fvec3) CompositeConstruct 184 185 183 + 187: 18(fvec4) ImageSampleImplicitLod 178 186 + 188: 8(float) CompositeExtract 187 0 + Store 150(dist) 188 + 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 190 190 16 16 + 191: 22(ptr) AccessChain 109(shadowCoord) 17 + 192: 8(float) Load 191 + 195: 135(bool) FOrdGreaterThan 192 193 + 196: 8(float) Load 150(dist) + 197: 22(ptr) AccessChain 109(shadowCoord) 24 + 198: 8(float) Load 197 + 200: 135(bool) FOrdLessThan 196 198 + 202: 135(bool) LogicalAnd 195 200 + SelectionMerge 204 None + BranchConditional 202 203 204 + 203: Label + 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 207 207 16 16 + Store 103(shadow) 208 + Branch 204 + 204: Label + Branch 146 + 146: Label + 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 211 211 16 16 + 212: 8(float) Load 103(shadow) + ReturnValue 212 FunctionEnd -56(filterPCF(vf4;f1;): 7(float) Function None 52 - 54(sc): 20(ptr) FunctionParameter - 55(layer): 21(ptr) FunctionParameter - 59: Label -201(sizeQueryTemp): 200(ptr) Variable Function - 214(texDim): 213(ptr) Variable Function - 228(elements): 222(ptr) Variable Function - 235(levels): 222(ptr) Variable Function - 242(scale): 21(ptr) Variable Function - 248(dx): 21(ptr) Variable Function - 259(dy): 21(ptr) Variable Function -270(shadowFactor): 21(ptr) Variable Function - 275(count): 222(ptr) Variable Function - 281(range): 222(ptr) Variable Function - 287(x): 222(ptr) Variable Function - 303(y): 222(ptr) Variable Function - 328(param): 20(ptr) Variable Function - 330(param): 21(ptr) Variable Function - 332(param): 25(ptr) Variable Function - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 - 64: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 62 54(sc) 45 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 55(layer) 45 - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 56(filterPCF(vf4;f1;) - 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 202 201(sizeQueryTemp) 45 - 206: 144 Load 150(textureShadowMap) - 207: 198(ivec3) ImageQuerySizeLod 206 15 - Store 201(sizeQueryTemp) 207 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 215 214(texDim) 45 - 219: 218(ptr) AccessChain 201(sizeQueryTemp) 15 - 220: 10(int) Load 219 - 221: 208(int) Bitcast 220 - 223: 222(ptr) AccessChain 214(texDim) 15 - Store 223 221 - 224: 218(ptr) AccessChain 201(sizeQueryTemp) 37 - 225: 10(int) Load 224 - 226: 208(int) Bitcast 225 - 227: 222(ptr) AccessChain 214(texDim) 37 - Store 227 226 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 229 228(elements) 45 - 232: 218(ptr) AccessChain 201(sizeQueryTemp) 23 - 233: 10(int) Load 232 - 234: 208(int) Bitcast 233 - Store 228(elements) 234 - 238: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(levels) 45 - 239: 144 Load 150(textureShadowMap) - 240: 10(int) ImageQueryLevels 239 - 241: 208(int) Bitcast 240 - Store 235(levels) 241 - 246: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(scale) 45 - Store 242(scale) 247 - 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(dx) 45 - 253: 7(float) Load 242(scale) - 254: 7(float) FMul 253 103 - 255: 222(ptr) AccessChain 214(texDim) 15 - 256: 208(int) Load 255 - 257: 7(float) ConvertSToF 256 - 258: 7(float) FDiv 254 257 - Store 248(dx) 258 - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(dy) 45 - 264: 7(float) Load 242(scale) - 265: 7(float) FMul 264 103 - 266: 222(ptr) AccessChain 214(texDim) 37 - 267: 208(int) Load 266 - 268: 7(float) ConvertSToF 267 - 269: 7(float) FDiv 265 268 - Store 259(dy) 269 - 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(shadowFactor) 45 - Store 270(shadowFactor) 181 - 279: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 276 275(count) 45 - Store 275(count) 280 - 285: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 282 281(range) 45 - Store 281(range) 286 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 288 287(x) 45 - 292: 208(int) Load 281(range) - 293: 208(int) SNegate 292 - Store 287(x) 293 - Branch 294 - 294: Label - LoopMerge 296 297 None - Branch 298 - 298: Label - 299: 208(int) Load 287(x) - 300: 208(int) Load 281(range) - 302: 127(bool) SLessThanEqual 299 300 - BranchConditional 302 295 296 - 295: Label - 307: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 304 303(y) 45 - 308: 208(int) Load 281(range) - 309: 208(int) SNegate 308 - Store 303(y) 309 - Branch 310 - 310: Label - LoopMerge 312 313 None - Branch 314 - 314: Label - 315: 208(int) Load 303(y) - 316: 208(int) Load 281(range) - 318: 127(bool) SLessThanEqual 315 316 - BranchConditional 318 311 312 - 311: Label - 319: 7(float) Load 248(dx) - 320: 208(int) Load 287(x) - 321: 7(float) ConvertSToF 320 - 322: 7(float) FMul 319 321 - 323: 7(float) Load 259(dy) - 324: 208(int) Load 303(y) - 325: 7(float) ConvertSToF 324 - 326: 7(float) FMul 323 325 - 327: 22(fvec2) CompositeConstruct 322 326 - 329: 17(fvec4) Load 54(sc) - Store 328(param) 329 - 331: 7(float) Load 55(layer) - Store 330(param) 331 - Store 332(param) 327 - 333: 7(float) FunctionCall 31(textureProj(vf4;f1;vf2;) 328(param) 330(param) 332(param) - 334: 7(float) Load 270(shadowFactor) - 335: 7(float) FAdd 334 333 - Store 270(shadowFactor) 335 - 336: 208(int) Load 275(count) - 337: 208(int) IAdd 336 286 - Store 275(count) 337 - Branch 313 - 313: Label - 338: 208(int) Load 303(y) - 339: 208(int) IAdd 338 286 - Store 303(y) 339 - Branch 310 - 312: Label - Branch 297 - 297: Label - 340: 208(int) Load 287(x) - 341: 208(int) IAdd 340 286 - Store 287(x) 341 - Branch 294 - 296: Label - 342: 7(float) Load 270(shadowFactor) - 343: 208(int) Load 275(count) - 344: 7(float) ConvertSToF 343 - 345: 7(float) FDiv 342 344 - ReturnValue 345 + Line 1 78 1 +57(filterPCF(vf4;f1;): 8(float) Function None 53 + 55(sc): 21(ptr) FunctionParameter + 56(layer): 22(ptr) FunctionParameter + 60: Label +222(sizeQueryTemp): 221(ptr) Variable Function + 234(texDim): 233(ptr) Variable Function + 248(elements): 242(ptr) Variable Function + 255(levels): 242(ptr) Variable Function + 264(scale): 22(ptr) Variable Function + 271(dx): 22(ptr) Variable Function + 283(dy): 22(ptr) Variable Function +295(shadowFactor): 22(ptr) Variable Function + 301(count): 242(ptr) Variable Function + 308(range): 242(ptr) Variable Function + 315(x): 242(ptr) Variable Function + 337(y): 242(ptr) Variable Function + 368(param): 21(ptr) Variable Function + 370(param): 22(ptr) Variable Function + 372(param): 26(ptr) Variable Function + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 55(sc) 46 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 56(layer) 46 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 57(filterPCF(vf4;f1;) + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 218 218 16 16 + 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 223 222(sizeQueryTemp) 46 + 226: 154 Load 160(textureShadowMap) + 227: 219(ivec3) ImageQuerySizeLod 226 16 + Store 222(sizeQueryTemp) 227 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 235 234(texDim) 46 + 239: 238(ptr) AccessChain 222(sizeQueryTemp) 16 + 240: 11(int) Load 239 + 241: 228(int) Bitcast 240 + 243: 242(ptr) AccessChain 234(texDim) 16 + Store 243 241 + 244: 238(ptr) AccessChain 222(sizeQueryTemp) 38 + 245: 11(int) Load 244 + 246: 228(int) Bitcast 245 + 247: 242(ptr) AccessChain 234(texDim) 38 + Store 247 246 + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(elements) 46 + 252: 238(ptr) AccessChain 222(sizeQueryTemp) 24 + 253: 11(int) Load 252 + 254: 228(int) Bitcast 253 + Store 248(elements) 254 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 256 255(levels) 46 + 259: 154 Load 160(textureShadowMap) + 260: 11(int) ImageQueryLevels 259 + 261: 228(int) Bitcast 260 + Store 255(levels) 261 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 263 263 16 16 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(scale) 46 + Store 264(scale) 268 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 270 270 16 16 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 272 271(dx) 46 + 275: 8(float) Load 264(scale) + 276: 8(float) FMul 275 106 + 277: 242(ptr) AccessChain 234(texDim) 16 + 278: 228(int) Load 277 + 279: 8(float) ConvertSToF 278 + 280: 8(float) FDiv 276 279 + Store 271(dx) 280 + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 282 282 16 16 + 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 284 283(dy) 46 + 287: 8(float) Load 264(scale) + 288: 8(float) FMul 287 106 + 289: 242(ptr) AccessChain 234(texDim) 38 + 290: 228(int) Load 289 + 291: 8(float) ConvertSToF 290 + 292: 8(float) FDiv 288 291 + Store 283(dy) 292 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 294 294 16 16 + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 296 295(shadowFactor) 46 + Store 295(shadowFactor) 193 + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 300 300 16 16 + 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(count) 46 + Store 301(count) 305 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 307 307 16 16 + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 309 308(range) 46 + Store 308(range) 312 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(x) 46 + 319: 228(int) Load 308(range) + 320: 228(int) SNegate 319 + Store 315(x) 320 + Branch 321 + 321: Label + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 + LoopMerge 323 324 None + Branch 327 + 327: Label + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 + 330: 228(int) Load 315(x) + 331: 228(int) Load 308(range) + 333: 135(bool) SLessThanEqual 330 331 + BranchConditional 333 322 323 + 322: Label + 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 + 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 338 337(y) 46 + 341: 228(int) Load 308(range) + 342: 228(int) SNegate 341 + Store 337(y) 342 + Branch 343 + 343: Label + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 + LoopMerge 345 346 None + Branch 349 + 349: Label + 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 + 352: 228(int) Load 337(y) + 353: 228(int) Load 308(range) + 355: 135(bool) SLessThanEqual 352 353 + BranchConditional 355 344 345 + 344: Label + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 358 358 16 16 + 359: 8(float) Load 271(dx) + 360: 228(int) Load 315(x) + 361: 8(float) ConvertSToF 360 + 362: 8(float) FMul 359 361 + 363: 8(float) Load 283(dy) + 364: 228(int) Load 337(y) + 365: 8(float) ConvertSToF 364 + 366: 8(float) FMul 363 365 + 367: 23(fvec2) CompositeConstruct 362 366 + 369: 18(fvec4) Load 55(sc) + Store 368(param) 369 + 371: 8(float) Load 56(layer) + Store 370(param) 371 + Store 372(param) 367 + 373: 8(float) FunctionCall 32(textureProj(vf4;f1;vf2;) 368(param) 370(param) 372(param) + 374: 8(float) Load 295(shadowFactor) + 375: 8(float) FAdd 374 373 + Store 295(shadowFactor) 375 + 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 377 377 16 16 + 378: 228(int) Load 301(count) + 379: 228(int) IAdd 378 312 + Store 301(count) 379 + Branch 346 + 346: Label + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 + 382: 228(int) Load 337(y) + 383: 228(int) IAdd 382 312 + Store 337(y) 383 + Branch 343 + 345: Label + Branch 324 + 324: Label + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 + 386: 228(int) Load 315(x) + 387: 228(int) IAdd 386 312 + Store 315(x) 387 + Branch 321 + 323: Label + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 390 390 16 16 + 391: 8(float) Load 295(shadowFactor) + 392: 228(int) Load 301(count) + 393: 8(float) ConvertSToF 392 + 394: 8(float) FDiv 391 393 + ReturnValue 394 FunctionEnd -74(shadow(vf3;vf3;): 67(fvec3) Function None 70 - 72(fragcolor): 69(ptr) FunctionParameter - 73(fragPos): 69(ptr) FunctionParameter - 77: Label - 349(i): 222(ptr) Variable Function - 363(shadowClip): 20(ptr) Variable Function -417(shadowFactor): 21(ptr) Variable Function - 423(param): 20(ptr) Variable Function - 425(param): 21(ptr) Variable Function - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 76 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 80 72(fragcolor) 45 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 83 73(fragPos) 45 - 348: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 76 74(shadow(vf3;vf3;) - 353: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 350 349(i) 45 - Store 349(i) 280 - Branch 354 - 354: Label - LoopMerge 356 357 None - Branch 358 - 358: Label - 359: 208(int) Load 349(i) - 362: 127(bool) SLessThan 359 360 - BranchConditional 362 355 356 - 355: Label - 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 364 363(shadowClip) 45 - 368: 67(fvec3) Load 73(fragPos) - 369: 7(float) CompositeExtract 368 0 - 370: 7(float) CompositeExtract 368 1 - 371: 7(float) CompositeExtract 368 2 - 372: 17(fvec4) CompositeConstruct 369 370 371 103 - 412: 208(int) Load 349(i) - 414: 413(ptr) AccessChain 410 280 286 412 360 - 415: 373 Load 414 - 416: 17(fvec4) VectorTimesMatrix 372 415 - Store 363(shadowClip) 416 - 420: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 418 417(shadowFactor) 45 - 421: 208(int) Load 349(i) - 422: 7(float) ConvertSToF 421 - 424: 17(fvec4) Load 363(shadowClip) - Store 423(param) 424 - Store 425(param) 422 - 426: 7(float) FunctionCall 56(filterPCF(vf4;f1;) 423(param) 425(param) - Store 417(shadowFactor) 426 - 427: 7(float) Load 417(shadowFactor) - 428: 67(fvec3) Load 72(fragcolor) - 429: 67(fvec3) VectorTimesScalar 428 427 - Store 72(fragcolor) 429 - Branch 357 - 357: Label - 430: 208(int) Load 349(i) - 431: 208(int) IAdd 430 286 - Store 349(i) 431 - Branch 354 - 356: Label - 432: 67(fvec3) Load 72(fragcolor) - ReturnValue 432 + Line 1 101 49 +75(shadow(vf3;vf3;): 68(fvec3) Function None 71 + 73(fragcolor): 70(ptr) FunctionParameter + 74(fragPos): 70(ptr) FunctionParameter + 78: Label + 401(i): 242(ptr) Variable Function + 421(shadowClip): 21(ptr) Variable Function +476(shadowFactor): 22(ptr) Variable Function + 481(param): 21(ptr) Variable Function + 483(param): 22(ptr) Variable Function + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 81 73(fragcolor) 46 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 74(fragPos) 46 + 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 77 75(shadow(vf3;vf3;) + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 402 401(i) 46 + Store 401(i) 305 + Branch 405 + 405: Label + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 + LoopMerge 407 408 None + Branch 411 + 411: Label + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 + 414: 228(int) Load 401(i) + 417: 135(bool) SLessThan 414 415 + BranchConditional 417 406 407 + 406: Label + 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 420 420 16 16 + 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 422 421(shadowClip) 46 + 425: 68(fvec3) Load 74(fragPos) + 426: 8(float) CompositeExtract 425 0 + 427: 8(float) CompositeExtract 425 1 + 428: 8(float) CompositeExtract 425 2 + 429: 18(fvec4) CompositeConstruct 426 427 428 106 + 469: 228(int) Load 401(i) + 471: 470(ptr) AccessChain 467 305 312 469 415 + 472: 430 Load 471 + 473: 18(fvec4) VectorTimesMatrix 429 472 + Store 421(shadowClip) 473 + 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 475 475 16 16 + 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 477 476(shadowFactor) 46 + 479: 228(int) Load 401(i) + 480: 8(float) ConvertSToF 479 + 482: 18(fvec4) Load 421(shadowClip) + Store 481(param) 482 + Store 483(param) 480 + 484: 8(float) FunctionCall 57(filterPCF(vf4;f1;) 481(param) 483(param) + Store 476(shadowFactor) 484 + 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 486 486 16 16 + 487: 8(float) Load 476(shadowFactor) + 488: 68(fvec3) Load 73(fragcolor) + 489: 68(fvec3) VectorTimesScalar 488 487 + Store 73(fragcolor) 489 + Branch 408 + 408: Label + 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 + 492: 228(int) Load 401(i) + 493: 228(int) IAdd 492 312 + Store 401(i) 493 + Branch 405 + 407: Label + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 496 496 16 16 + 497: 68(fvec3) Load 73(fragcolor) + ReturnValue 497 FunctionEnd - 89(@main(vf2;): 17(fvec4) Function None 86 - 88(inUV): 25(ptr) FunctionParameter - 92: Label - 436(fragPos): 69(ptr) Variable Function - 458(normal): 69(ptr) Variable Function - 476(albedo): 20(ptr) Variable Function - 508(fragcolor): 69(ptr) Variable Function - 513(param): 69(ptr) Variable Function - 514(param): 69(ptr) Variable Function - 539(N): 69(ptr) Variable Function - 546(i): 222(ptr) Variable Function - 558(L): 69(ptr) Variable Function - 570(dist): 21(ptr) Variable Function - 578(V): 69(ptr) Variable Function -590(lightCosInnerAngle): 21(ptr) Variable Function -596(lightCosOuterAngle): 21(ptr) Variable Function - 602(lightRange): 21(ptr) Variable Function - 608(dir): 69(ptr) Variable Function - 623(cosDir): 21(ptr) Variable Function - 631(spotEffect): 21(ptr) Variable Function -640(heightAttenuation): 21(ptr) Variable Function - 648(NdotL): 21(ptr) Variable Function - 657(diff): 69(ptr) Variable Function - 664(R): 69(ptr) Variable Function - 673(NdotR): 21(ptr) Variable Function - 682(spec): 69(ptr) Variable Function - 722(param): 69(ptr) Variable Function - 724(param): 69(ptr) Variable Function - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 15 15 15 15 - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 88(inUV) 45 - 435: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 89(@main(vf2;) - 439: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 437 436(fragPos) 45 - 446: 440 Load 443(textureposition) - 451: 155 Load 448(samplerposition) - 454: 452 SampledImage 446 451 - 455: 22(fvec2) Load 88(inUV) - 456: 17(fvec4) ImageSampleImplicitLod 454 455 - 457: 67(fvec3) VectorShuffle 456 456 0 1 2 - Store 436(fragPos) 457 - 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 459 458(normal) 45 - 466: 440 Load 463(textureNormal) - 471: 155 Load 468(samplerNormal) - 472: 452 SampledImage 466 471 - 473: 22(fvec2) Load 88(inUV) - 474: 17(fvec4) ImageSampleImplicitLod 472 473 - 475: 67(fvec3) VectorShuffle 474 474 0 1 2 - Store 458(normal) 475 - 480: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 477 476(albedo) 45 - 484: 440 Load 481(textureAlbedo) - 489: 155 Load 486(samplerAlbedo) - 490: 452 SampledImage 484 489 - 491: 22(fvec2) Load 88(inUV) - 492: 17(fvec4) ImageSampleImplicitLod 490 491 - Store 476(albedo) 492 - 494: 493(ptr) AccessChain 410 280 360 - 495: 208(int) Load 494 - 497: 127(bool) SGreaterThan 495 280 - SelectionMerge 499 None - BranchConditional 497 498 499 - 498: Label - 500: 493(ptr) AccessChain 410 280 360 - 501: 208(int) Load 500 - SelectionMerge 507 None - Switch 501 507 - case 1: 502 - case 2: 503 - case 3: 504 - case 4: 505 - case 5: 506 - 502: Label - 511: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 509 508(fragcolor) 45 - Store 513(param) 512 - 515: 67(fvec3) Load 436(fragPos) - Store 514(param) 515 - 516: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 513(param) 514(param) - Store 508(fragcolor) 516 - Branch 507 - 503: Label - 518: 67(fvec3) Load 436(fragPos) - Store 508(fragcolor) 518 - Branch 507 - 504: Label - 520: 67(fvec3) Load 458(normal) - Store 508(fragcolor) 520 - Branch 507 - 505: Label - 522: 17(fvec4) Load 476(albedo) - 523: 67(fvec3) VectorShuffle 522 522 0 1 2 - Store 508(fragcolor) 523 - Branch 507 - 506: Label - 525: 17(fvec4) Load 476(albedo) - 526: 67(fvec3) VectorShuffle 525 525 3 3 3 - Store 508(fragcolor) 526 - Branch 507 - 507: Label - 529: 67(fvec3) Load 508(fragcolor) - 530: 7(float) CompositeExtract 529 0 - 531: 7(float) CompositeExtract 529 1 - 532: 7(float) CompositeExtract 529 2 - 533: 17(fvec4) CompositeConstruct 530 531 532 103 - ReturnValue 533 - 499: Label - 535: 17(fvec4) Load 476(albedo) - 536: 67(fvec3) VectorShuffle 535 535 0 1 2 - 538: 67(fvec3) VectorTimesScalar 536 537 - Store 508(fragcolor) 538 - 543: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 540 539(N) 45 - 544: 67(fvec3) Load 458(normal) - 545: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 544 - Store 539(N) 545 - 549: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 547 546(i) 45 - Store 546(i) 280 - Branch 550 - 550: Label - LoopMerge 552 553 None - Branch 554 - 554: Label - 555: 208(int) Load 546(i) - 557: 127(bool) SLessThan 555 360 - BranchConditional 557 551 552 - 551: Label - 562: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 559 558(L) 45 - 563: 208(int) Load 546(i) - 565: 564(ptr) AccessChain 410 280 286 563 280 - 566: 17(fvec4) Load 565 - 567: 67(fvec3) VectorShuffle 566 566 0 1 2 - 568: 67(fvec3) Load 436(fragPos) - 569: 67(fvec3) FSub 567 568 - Store 558(L) 569 - 573: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 571 570(dist) 45 - 574: 67(fvec3) Load 558(L) - 575: 7(float) ExtInst 2(GLSL.std.450) 66(Length) 574 - Store 570(dist) 575 - 576: 67(fvec3) Load 558(L) - 577: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 576 - Store 558(L) 577 - 582: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 579 578(V) 45 - 583: 564(ptr) AccessChain 410 280 280 - 584: 17(fvec4) Load 583 - 585: 67(fvec3) VectorShuffle 584 584 0 1 2 - 586: 67(fvec3) Load 436(fragPos) - 587: 67(fvec3) FSub 585 586 - Store 578(V) 587 - 588: 67(fvec3) Load 578(V) - 589: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 588 - Store 578(V) 589 - 594: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 591 590(lightCosInnerAngle) 45 - Store 590(lightCosInnerAngle) 595 - 600: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 597 596(lightCosOuterAngle) 45 - Store 596(lightCosOuterAngle) 601 - 606: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 603 602(lightRange) 45 - Store 602(lightRange) 607 - 612: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 609 608(dir) 45 - 613: 208(int) Load 546(i) - 614: 564(ptr) AccessChain 410 280 286 613 280 - 615: 17(fvec4) Load 614 - 616: 67(fvec3) VectorShuffle 615 615 0 1 2 - 617: 208(int) Load 546(i) - 618: 564(ptr) AccessChain 410 280 286 617 286 - 619: 17(fvec4) Load 618 - 620: 67(fvec3) VectorShuffle 619 619 0 1 2 - 621: 67(fvec3) FSub 616 620 - 622: 67(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 621 - Store 608(dir) 622 - 627: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 624 623(cosDir) 45 - 628: 67(fvec3) Load 558(L) - 629: 67(fvec3) Load 608(dir) - 630: 7(float) Dot 628 629 - Store 623(cosDir) 630 - 635: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 632 631(spotEffect) 45 - 636: 7(float) Load 596(lightCosOuterAngle) - 637: 7(float) Load 590(lightCosInnerAngle) - 638: 7(float) Load 623(cosDir) - 639: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 636 637 638 - Store 631(spotEffect) 639 - 644: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 641 640(heightAttenuation) 45 - 645: 7(float) Load 602(lightRange) - 646: 7(float) Load 570(dist) - 647: 7(float) ExtInst 2(GLSL.std.450) 49(SmoothStep) 645 181 646 - Store 640(heightAttenuation) 647 - 652: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 649 648(NdotL) 45 - 653: 67(fvec3) Load 539(N) - 654: 67(fvec3) Load 558(L) - 655: 7(float) Dot 653 654 - 656: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 655 - Store 648(NdotL) 656 - 661: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 658 657(diff) 45 - 662: 7(float) Load 648(NdotL) - 663: 67(fvec3) CompositeConstruct 662 662 662 - Store 657(diff) 663 - 668: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 665 664(R) 45 - 669: 67(fvec3) Load 558(L) - 670: 67(fvec3) FNegate 669 - 671: 67(fvec3) Load 539(N) - 672: 67(fvec3) ExtInst 2(GLSL.std.450) 71(Reflect) 670 671 - Store 664(R) 672 - 677: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 674 673(NdotR) 45 - 678: 67(fvec3) Load 664(R) - 679: 67(fvec3) Load 578(V) - 680: 7(float) Dot 678 679 - 681: 7(float) ExtInst 2(GLSL.std.450) 40(FMax) 181 680 - Store 673(NdotR) 681 - 686: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 683 682(spec) 45 - 687: 7(float) Load 673(NdotR) - 689: 7(float) ExtInst 2(GLSL.std.450) 26(Pow) 687 688 - 690: 21(ptr) AccessChain 476(albedo) 16 - 691: 7(float) Load 690 - 692: 7(float) FMul 689 691 - 694: 7(float) FMul 692 693 - 695: 67(fvec3) CompositeConstruct 694 694 694 - Store 682(spec) 695 - 696: 67(fvec3) Load 657(diff) - 697: 67(fvec3) Load 682(spec) - 698: 67(fvec3) FAdd 696 697 - 699: 7(float) Load 631(spotEffect) - 700: 67(fvec3) VectorTimesScalar 698 699 - 701: 7(float) Load 640(heightAttenuation) - 702: 67(fvec3) VectorTimesScalar 700 701 - 703: 208(int) Load 546(i) - 705: 564(ptr) AccessChain 410 280 286 703 704 - 706: 17(fvec4) Load 705 - 707: 67(fvec3) VectorShuffle 706 706 0 1 2 - 708: 67(fvec3) FMul 702 707 - 709: 17(fvec4) Load 476(albedo) - 710: 67(fvec3) VectorShuffle 709 709 0 1 2 - 711: 67(fvec3) FMul 708 710 - 712: 67(fvec3) Load 508(fragcolor) - 713: 67(fvec3) FAdd 712 711 - Store 508(fragcolor) 713 - Branch 553 - 553: Label - 714: 208(int) Load 546(i) - 715: 208(int) IAdd 714 286 - Store 546(i) 715 - Branch 550 - 552: Label - 716: 493(ptr) AccessChain 410 280 704 - 717: 208(int) Load 716 - 719: 127(bool) SGreaterThan 717 280 - SelectionMerge 721 None - BranchConditional 719 720 721 - 720: Label - 723: 67(fvec3) Load 508(fragcolor) - Store 722(param) 723 - 725: 67(fvec3) Load 436(fragPos) - Store 724(param) 725 - 726: 67(fvec3) FunctionCall 74(shadow(vf3;vf3;) 722(param) 724(param) - Store 508(fragcolor) 726 - Branch 721 - 721: Label - 727: 67(fvec3) Load 508(fragcolor) - 728: 7(float) CompositeExtract 727 0 - 729: 7(float) CompositeExtract 727 1 - 730: 7(float) CompositeExtract 727 2 - 731: 17(fvec4) CompositeConstruct 728 729 730 103 - ReturnValue 731 + Line 1 119 1 + 90(@main(vf2;): 18(fvec4) Function None 87 + 89(inUV): 26(ptr) FunctionParameter + 93: Label + 504(fragPos): 70(ptr) Variable Function + 527(normal): 70(ptr) Variable Function + 546(albedo): 21(ptr) Variable Function + 585(fragcolor): 70(ptr) Variable Function + 589(param): 70(ptr) Variable Function + 590(param): 70(ptr) Variable Function + 645(N): 70(ptr) Variable Function + 653(i): 242(ptr) Variable Function + 671(L): 70(ptr) Variable Function + 684(dist): 22(ptr) Variable Function + 695(V): 70(ptr) Variable Function +710(lightCosInnerAngle): 22(ptr) Variable Function +717(lightCosOuterAngle): 22(ptr) Variable Function + 724(lightRange): 22(ptr) Variable Function + 731(dir): 70(ptr) Variable Function + 747(cosDir): 22(ptr) Variable Function + 756(spotEffect): 22(ptr) Variable Function +766(heightAttenuation): 22(ptr) Variable Function + 775(NdotL): 22(ptr) Variable Function + 785(diff): 70(ptr) Variable Function + 793(R): 70(ptr) Variable Function + 803(NdotR): 22(ptr) Variable Function + 813(spec): 70(ptr) Variable Function + 862(param): 70(ptr) Variable Function + 864(param): 70(ptr) Variable Function + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 96 89(inUV) 46 + 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 92 90(@main(vf2;) + 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 503 503 16 16 + 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 505 504(fragPos) 46 + 513: 507 Load 510(textureposition) + 518: 165 Load 515(samplerposition) + 521: 519 SampledImage 513 518 + 522: 23(fvec2) Load 89(inUV) + 523: 18(fvec4) ImageSampleImplicitLod 521 522 + 524: 68(fvec3) VectorShuffle 523 523 0 1 2 + Store 504(fragPos) 524 + 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 526 526 16 16 + 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 528 527(normal) 46 + 534: 507 Load 531(textureNormal) + 539: 165 Load 536(samplerNormal) + 540: 519 SampledImage 534 539 + 541: 23(fvec2) Load 89(inUV) + 542: 18(fvec4) ImageSampleImplicitLod 540 541 + 543: 68(fvec3) VectorShuffle 542 542 0 1 2 + Store 527(normal) 543 + 544: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 545 545 16 16 + 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 547 546(albedo) 46 + 553: 507 Load 550(textureAlbedo) + 558: 165 Load 555(samplerAlbedo) + 559: 519 SampledImage 553 558 + 560: 23(fvec2) Load 89(inUV) + 561: 18(fvec4) ImageSampleImplicitLod 559 560 + Store 546(albedo) 561 + 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 563 563 16 16 + 565: 564(ptr) AccessChain 467 305 415 + 566: 228(int) Load 565 + 568: 135(bool) SGreaterThan 566 305 + SelectionMerge 570 None + BranchConditional 568 569 570 + 569: Label + 571: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 573 573 16 16 + 574: 564(ptr) AccessChain 467 305 415 + 575: 228(int) Load 574 + SelectionMerge 581 None + Switch 575 581 + case 1: 576 + case 2: 577 + case 3: 578 + case 4: 579 + case 5: 580 + 576: Label + 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 583: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 584 584 16 16 + 587: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 586 585(fragcolor) 46 + Store 589(param) 588 + 591: 68(fvec3) Load 504(fragPos) + Store 590(param) 591 + 592: 68(fvec3) FunctionCall 75(shadow(vf3;vf3;) 589(param) 590(param) + Store 585(fragcolor) 592 + 593: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 594 594 16 16 + Branch 581 + 577: Label + 596: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 598 598 16 16 + 599: 68(fvec3) Load 504(fragPos) + Store 585(fragcolor) 599 + 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 601 601 16 16 + Branch 581 + 578: Label + 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 605 605 16 16 + 606: 68(fvec3) Load 527(normal) + Store 585(fragcolor) 606 + 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 608 608 16 16 + Branch 581 + 579: Label + 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 612 612 16 16 + 613: 18(fvec4) Load 546(albedo) + 614: 68(fvec3) VectorShuffle 613 613 0 1 2 + Store 585(fragcolor) 614 + 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 616 616 16 16 + Branch 581 + 580: Label + 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 620 620 16 16 + 621: 18(fvec4) Load 546(albedo) + 622: 68(fvec3) VectorShuffle 621 621 3 3 3 + Store 585(fragcolor) 622 + 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 624 624 16 16 + Branch 581 + 581: Label + 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 629 629 16 16 + 630: 68(fvec3) Load 585(fragcolor) + 631: 8(float) CompositeExtract 630 0 + 632: 8(float) CompositeExtract 630 1 + 633: 8(float) CompositeExtract 630 2 + 634: 18(fvec4) CompositeConstruct 631 632 633 106 + ReturnValue 634 + 570: Label + 636: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 637: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 638 638 16 16 + 639: 18(fvec4) Load 546(albedo) + 640: 68(fvec3) VectorShuffle 639 639 0 1 2 + 642: 68(fvec3) VectorTimesScalar 640 641 + Store 585(fragcolor) 642 + 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 644 644 16 16 + 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 646 645(N) 46 + 649: 68(fvec3) Load 527(normal) + 650: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 649 + Store 645(N) 650 + 651: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 + 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 654 653(i) 46 + Store 653(i) 305 + Branch 656 + 656: Label + 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 661: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 + LoopMerge 658 659 None + Branch 662 + 662: Label + 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 + 665: 228(int) Load 653(i) + 667: 135(bool) SLessThan 665 415 + BranchConditional 667 657 658 + 657: Label + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 670 670 16 16 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 672 671(L) 46 + 675: 228(int) Load 653(i) + 677: 676(ptr) AccessChain 467 305 312 675 305 + 678: 18(fvec4) Load 677 + 679: 68(fvec3) VectorShuffle 678 678 0 1 2 + 680: 68(fvec3) Load 504(fragPos) + 681: 68(fvec3) FSub 679 680 + Store 671(L) 681 + 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 683 683 16 16 + 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 685 684(dist) 46 + 687: 68(fvec3) Load 671(L) + 688: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 687 + Store 684(dist) 688 + 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 690 690 16 16 + 691: 68(fvec3) Load 671(L) + 692: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 691 + Store 671(L) 692 + 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 694 694 16 16 + 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 696 695(V) 46 + 699: 676(ptr) AccessChain 467 305 305 + 700: 18(fvec4) Load 699 + 701: 68(fvec3) VectorShuffle 700 700 0 1 2 + 702: 68(fvec3) Load 504(fragPos) + 703: 68(fvec3) FSub 701 702 + Store 695(V) 703 + 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 705 705 16 16 + 706: 68(fvec3) Load 695(V) + 707: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 706 + Store 695(V) 707 + 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 709 709 16 16 + 713: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 711 710(lightCosInnerAngle) 46 + Store 710(lightCosInnerAngle) 714 + 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 716 716 16 16 + 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 718 717(lightCosOuterAngle) 46 + Store 717(lightCosOuterAngle) 721 + 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 723 723 16 16 + 727: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 725 724(lightRange) 46 + Store 724(lightRange) 728 + 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 730 730 16 16 + 734: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 732 731(dir) 46 + 735: 228(int) Load 653(i) + 736: 676(ptr) AccessChain 467 305 312 735 305 + 737: 18(fvec4) Load 736 + 738: 68(fvec3) VectorShuffle 737 737 0 1 2 + 739: 228(int) Load 653(i) + 740: 676(ptr) AccessChain 467 305 312 739 312 + 741: 18(fvec4) Load 740 + 742: 68(fvec3) VectorShuffle 741 741 0 1 2 + 743: 68(fvec3) FSub 738 742 + 744: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 743 + Store 731(dir) 744 + 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 746 746 16 16 + 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 748 747(cosDir) 46 + 751: 68(fvec3) Load 671(L) + 752: 68(fvec3) Load 731(dir) + 753: 8(float) Dot 751 752 + Store 747(cosDir) 753 + 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 755 755 16 16 + 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 757 756(spotEffect) 46 + 760: 8(float) Load 717(lightCosOuterAngle) + 761: 8(float) Load 710(lightCosInnerAngle) + 762: 8(float) Load 747(cosDir) + 763: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 760 761 762 + Store 756(spotEffect) 763 + 764: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 765 765 16 16 + 769: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 767 766(heightAttenuation) 46 + 770: 8(float) Load 724(lightRange) + 771: 8(float) Load 684(dist) + 772: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 770 193 771 + Store 766(heightAttenuation) 772 + 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 774 774 16 16 + 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 776 775(NdotL) 46 + 779: 68(fvec3) Load 645(N) + 780: 68(fvec3) Load 671(L) + 781: 8(float) Dot 779 780 + 782: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 193 781 + Store 775(NdotL) 782 + 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 784 784 16 16 + 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 786 785(diff) 46 + 789: 8(float) Load 775(NdotL) + 790: 68(fvec3) CompositeConstruct 789 789 789 + Store 785(diff) 790 + 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 792 792 16 16 + 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 794 793(R) 46 + 797: 68(fvec3) Load 671(L) + 798: 68(fvec3) FNegate 797 + 799: 68(fvec3) Load 645(N) + 800: 68(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 798 799 + Store 793(R) 800 + 801: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 802 802 16 16 + 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 804 803(NdotR) 46 + 807: 68(fvec3) Load 793(R) + 808: 68(fvec3) Load 695(V) + 809: 8(float) Dot 807 808 + 810: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 193 809 + Store 803(NdotR) 810 + 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 812 812 16 16 + 816: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 814 813(spec) 46 + 817: 8(float) Load 803(NdotR) + 819: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 817 818 + 820: 22(ptr) AccessChain 546(albedo) 17 + 821: 8(float) Load 820 + 822: 8(float) FMul 819 821 + 824: 8(float) FMul 822 823 + 825: 68(fvec3) CompositeConstruct 824 824 824 + Store 813(spec) 825 + 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 827 827 16 16 + 828: 68(fvec3) Load 785(diff) + 829: 68(fvec3) Load 813(spec) + 830: 68(fvec3) FAdd 828 829 + 831: 8(float) Load 756(spotEffect) + 832: 68(fvec3) VectorTimesScalar 830 831 + 833: 8(float) Load 766(heightAttenuation) + 834: 68(fvec3) VectorTimesScalar 832 833 + 835: 228(int) Load 653(i) + 837: 676(ptr) AccessChain 467 305 312 835 836 + 838: 18(fvec4) Load 837 + 839: 68(fvec3) VectorShuffle 838 838 0 1 2 + 840: 68(fvec3) FMul 834 839 + 841: 18(fvec4) Load 546(albedo) + 842: 68(fvec3) VectorShuffle 841 841 0 1 2 + 843: 68(fvec3) FMul 840 842 + 844: 68(fvec3) Load 585(fragcolor) + 845: 68(fvec3) FAdd 844 843 + Store 585(fragcolor) 845 + Branch 659 + 659: Label + 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 + 848: 228(int) Load 653(i) + 849: 228(int) IAdd 848 312 + Store 653(i) 849 + Branch 656 + 658: Label + 850: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 852 852 16 16 + 853: 564(ptr) AccessChain 467 305 836 + 854: 228(int) Load 853 + 856: 135(bool) SGreaterThan 854 305 + SelectionMerge 858 None + BranchConditional 856 857 858 + 857: Label + 859: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 861 861 16 16 + 863: 68(fvec3) Load 585(fragcolor) + Store 862(param) 863 + 865: 68(fvec3) Load 504(fragPos) + Store 864(param) 865 + 866: 68(fvec3) FunctionCall 75(shadow(vf3;vf3;) 862(param) 864(param) + Store 585(fragcolor) 866 + Branch 858 + 858: Label + 867: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 + 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 869 869 16 16 + 870: 68(fvec3) Load 585(fragcolor) + 871: 8(float) CompositeExtract 870 0 + 872: 8(float) CompositeExtract 870 1 + 873: 8(float) CompositeExtract 870 2 + 874: 18(fvec4) CompositeConstruct 871 872 873 106 + ReturnValue 874 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index 52db589296..3bb8b31895 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -1,458 +1,499 @@ spv.debuginfo.hlsl.geom -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 322 +// Id's are bound by 353 Capability Geometry Capability MultiViewport Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 5 "main" 228 235 240 246 251 256 261 271 278 283 307 310 - ExecutionMode 5 Triangles - ExecutionMode 5 Invocations 2 - ExecutionMode 5 OutputTriangleStrip - ExecutionMode 5 OutputVertices 3 - 9: String "float" - 12: String "uint" - 24: String "Pos" - 26: String "" - 30: String "Color" - 35: String "VSOutput" - 46: String "PrimitiveID" - 51: String "LightVec" - 57: String "GSOutput" - 67: String "@main" - 73: String "input" - 77: String "outStream" - 81: String "InvocationID" - 87: String "int" - 92: String "i" - 104: String "bool" - 109: String "output" - 130: String "projection" - 134: String "modelview" - 138: String "lightPos" - 142: String "UBO" - 146: String "ubo" - 177: String "pos" - 185: String "worldPos" - 195: String "lPos" - 230: String "outStream.Pos" - 237: String "outStream.ViewportIndex" - 242: String "outStream.PrimitiveID" - 248: String "outStream.Normal" - 253: String "outStream.Color" - 258: String "outStream.ViewVec" - 263: String "outStream.LightVec" - Name 5 "main" - Name 22 "VSOutput" - MemberName 22(VSOutput) 0 "Pos" - MemberName 22(VSOutput) 1 "Normal" - MemberName 22(VSOutput) 2 "Color" - Name 42 "GSOutput" - MemberName 42(GSOutput) 0 "Pos" - MemberName 42(GSOutput) 1 "ViewportIndex" - MemberName 42(GSOutput) 2 "PrimitiveID" - MemberName 42(GSOutput) 3 "Normal" - MemberName 42(GSOutput) 4 "Color" - MemberName 42(GSOutput) 5 "ViewVec" - MemberName 42(GSOutput) 6 "LightVec" - Name 66 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" - Name 62 "input" - Name 63 "outStream" - Name 64 "InvocationID" - Name 65 "PrimitiveID" - Name 90 "i" - Name 107 "output" - Name 128 "UBO" - MemberName 128(UBO) 0 "projection" - MemberName 128(UBO) 1 "modelview" - MemberName 128(UBO) 2 "lightPos" - Name 144 "ubo" - MemberName 144(ubo) 0 "ubo" - Name 150 "" - Name 175 "pos" - Name 183 "worldPos" - Name 193 "lPos" - Name 228 "outStream.Pos" - Name 235 "outStream.ViewportIndex" - Name 240 "outStream.PrimitiveID" - Name 246 "outStream.Normal" - Name 251 "outStream.Color" - Name 256 "outStream.ViewVec" - Name 261 "outStream.LightVec" - Name 268 "input" - Name 271 "input.Pos" - Name 278 "input.Normal" - Name 283 "input.Color" - Name 305 "InvocationID" - Name 307 "InvocationID" - Name 309 "PrimitiveID" - Name 310 "PrimitiveID" - Name 312 "outStream" - Name 313 "param" - Name 315 "param" - Name 316 "param" - Name 318 "param" - Decorate 124 ArrayStride 64 - Decorate 126 ArrayStride 64 - MemberDecorate 128(UBO) 0 RowMajor - MemberDecorate 128(UBO) 0 Offset 0 - MemberDecorate 128(UBO) 0 MatrixStride 16 - MemberDecorate 128(UBO) 1 RowMajor - MemberDecorate 128(UBO) 1 Offset 128 - MemberDecorate 128(UBO) 1 MatrixStride 16 - MemberDecorate 128(UBO) 2 Offset 256 - MemberDecorate 144(ubo) 0 Offset 0 - Decorate 144(ubo) Block - Decorate 150 DescriptorSet 0 - Decorate 150 Binding 0 - Decorate 228(outStream.Pos) BuiltIn Position - Decorate 235(outStream.ViewportIndex) BuiltIn ViewportIndex - Decorate 240(outStream.PrimitiveID) BuiltIn PrimitiveId - Decorate 246(outStream.Normal) Location 0 - Decorate 251(outStream.Color) Location 1 - Decorate 256(outStream.ViewVec) Location 2 - Decorate 261(outStream.LightVec) Location 3 - Decorate 271(input.Pos) BuiltIn Position - Decorate 278(input.Normal) Location 0 - Decorate 283(input.Color) Location 1 - Decorate 307(InvocationID) BuiltIn InvocationId - Decorate 310(PrimitiveID) BuiltIn PrimitiveId - 3: TypeVoid - 4: TypeFunction 3 - 7: TypeFloat 32 - 10: TypeInt 32 0 - 13: 10(int) Constant 32 - 14: 10(int) Constant 6 - 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 - 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 - 17: TypeVector 7(float) 4 - 18: 10(int) Constant 4 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 18 - 20: TypeVector 7(float) 3 - 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 - 22(VSOutput): TypeStruct 17(fvec4) 20(fvec3) 20(fvec3) - 25: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 26 - 27: 10(int) Constant 37 - 28: 10(int) Constant 13 - 23: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 24 19 25 27 28 15 15 16 - 31: 10(int) Constant 39 - 32: 10(int) Constant 34 - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 30 21 25 31 32 15 15 16 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 30 21 25 31 32 15 15 16 - 36: 10(int) Constant 1 - 38: 10(int) Constant 5 - 37: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 25 38 - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 25 15 15 37 35 15 16 23 29 33 - 39: TypeArray 22(VSOutput) 16 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 34 16 - 41: TypePointer Function 39 - 42(GSOutput): TypeStruct 17(fvec4) 10(int) 10(int) 20(fvec3) 20(fvec3) 20(fvec3) 20(fvec3) - 44: 10(int) Constant 44 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 24 19 25 44 28 15 15 16 - 47: 10(int) Constant 46 - 48: 10(int) Constant 19 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 11 25 47 48 15 15 16 - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 11 25 47 48 15 15 16 - 52: 10(int) Constant 50 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 - 53: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 - 55: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 21 25 52 27 15 15 16 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 57 36 25 15 15 37 57 15 16 43 45 49 50 53 54 55 - 58: TypePointer Function 42(GSOutput) - 59: TypePointer Function 10(int) - 60: TypeFunction 3 41(ptr) 58(ptr) 59(ptr) 59(ptr) - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 3 40 56 11 11 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 67 61 25 15 15 37 67 16 15 - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 40 25 15 15 68 18 36 - 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 78: 10(int) Constant 2 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 56 25 15 15 68 18 78 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 11 25 15 15 68 18 16 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 11 25 15 15 68 18 18 - 86: TypeInt 32 1 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 87 13 18 15 - 89: TypePointer Function 86(int) - 93: 10(int) Constant 57 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 92 88 25 93 15 68 18 - 95: 86(int) Constant 0 - 102: 86(int) Constant 3 - 103: TypeBool - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 104 13 78 15 - 110: 10(int) Constant 59 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 56 25 110 15 68 18 - 112: 7(float) Constant 0 - 113: 17(fvec4) ConstantComposite 112 112 112 112 - 114: 20(fvec3) ConstantComposite 112 112 112 - 115:42(GSOutput) ConstantComposite 113 15 15 114 114 114 114 - 117: 86(int) Constant 1 - 118: TypePointer Function 20(fvec3) - 121: TypeMatrix 17(fvec4) 4 - 123: 103(bool) ConstantTrue - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 18 123 - 124: TypeArray 121 78 - 125: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 122 78 - 126: TypeArray 121 78 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 122 78 - 128(UBO): TypeStruct 124 126 17(fvec4) - 131: 10(int) Constant 28 - 132: 10(int) Constant 21 - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 130 125 25 131 132 15 15 16 - 135: 10(int) Constant 29 - 136: 10(int) Constant 20 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 134 127 25 135 136 15 15 16 - 139: 10(int) Constant 30 - 140: 10(int) Constant 17 - 137: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 138 19 25 139 140 15 15 16 - 143: 10(int) Constant 60 - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 142 36 25 143 15 37 142 15 16 129 133 137 - 144(ubo): TypeStruct 128(UBO) - 147: 10(int) Constant 33 - 145: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 141 25 147 27 15 15 16 - 148: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 146 36 25 143 15 37 146 15 16 145 - 149: TypePointer Uniform 144(ubo) - 150: 149(ptr) Variable Uniform - 152: 10(int) Constant 8 - 151: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 26 148 25 143 15 37 26 150 152 - 154: TypePointer Uniform 121 - 157: TypeMatrix 20(fvec3) 3 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 16 123 - 168: 86(int) Constant 4 - 170: 86(int) Constant 2 - 174: TypePointer Function 17(fvec4) - 178: 10(int) Constant 63 - 176: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 177 19 25 178 15 68 18 - 186: 10(int) Constant 64 - 184: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 19 25 186 15 68 18 - 196: 10(int) Constant 66 - 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 195 21 25 196 15 68 18 - 198: TypePointer Uniform 17(fvec4) - 206: 86(int) Constant 6 - 212: 86(int) Constant 5 - 227: TypePointer Output 17(fvec4) -228(outStream.Pos): 227(ptr) Variable Output - 231: 10(int) Constant 75 - 229: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 230 19 25 231 15 37 230 228(outStream.Pos) 152 - 234: TypePointer Output 10(int) -235(outStream.ViewportIndex): 234(ptr) Variable Output - 236: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 237 11 25 231 15 37 237 235(outStream.ViewportIndex) 152 -240(outStream.PrimitiveID): 234(ptr) Variable Output - 241: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 242 11 25 231 15 37 242 240(outStream.PrimitiveID) 152 - 245: TypePointer Output 20(fvec3) -246(outStream.Normal): 245(ptr) Variable Output - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 248 21 25 231 15 37 248 246(outStream.Normal) 152 -251(outStream.Color): 245(ptr) Variable Output - 252: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 253 21 25 231 15 37 253 251(outStream.Color) 152 -256(outStream.ViewVec): 245(ptr) Variable Output - 257: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 21 25 231 15 37 258 256(outStream.ViewVec) 152 -261(outStream.LightVec): 245(ptr) Variable Output - 262: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 263 21 25 231 15 37 263 261(outStream.LightVec) 152 - 269: TypeArray 17(fvec4) 16 - 270: TypePointer Input 269 - 271(input.Pos): 270(ptr) Variable Input - 272: TypePointer Input 17(fvec4) - 276: TypeArray 20(fvec3) 16 - 277: TypePointer Input 276 -278(input.Normal): 277(ptr) Variable Input - 279: TypePointer Input 20(fvec3) -283(input.Color): 277(ptr) Variable Input - 306: TypePointer Input 10(int) -307(InvocationID): 306(ptr) Variable Input -310(PrimitiveID): 306(ptr) Variable Input - 5(main): 3 Function None 4 - 6: Label - 268(input): 41(ptr) Variable Function -305(InvocationID): 59(ptr) Variable Function -309(PrimitiveID): 59(ptr) Variable Function - 312(outStream): 58(ptr) Variable Function - 313(param): 41(ptr) Variable Function - 315(param): 58(ptr) Variable Function - 316(param): 59(ptr) Variable Function - 318(param): 59(ptr) Variable Function - 273: 272(ptr) AccessChain 271(input.Pos) 95 - 274: 17(fvec4) Load 273 - 275: 174(ptr) AccessChain 268(input) 95 95 - Store 275 274 - 280: 279(ptr) AccessChain 278(input.Normal) 95 - 281: 20(fvec3) Load 280 - 282: 118(ptr) AccessChain 268(input) 95 117 - Store 282 281 - 284: 279(ptr) AccessChain 283(input.Color) 95 - 285: 20(fvec3) Load 284 - 286: 118(ptr) AccessChain 268(input) 95 170 - Store 286 285 - 287: 272(ptr) AccessChain 271(input.Pos) 117 - 288: 17(fvec4) Load 287 - 289: 174(ptr) AccessChain 268(input) 117 95 - Store 289 288 - 290: 279(ptr) AccessChain 278(input.Normal) 117 - 291: 20(fvec3) Load 290 - 292: 118(ptr) AccessChain 268(input) 117 117 - Store 292 291 - 293: 279(ptr) AccessChain 283(input.Color) 117 - 294: 20(fvec3) Load 293 - 295: 118(ptr) AccessChain 268(input) 117 170 - Store 295 294 - 296: 272(ptr) AccessChain 271(input.Pos) 170 - 297: 17(fvec4) Load 296 - 298: 174(ptr) AccessChain 268(input) 170 95 - Store 298 297 - 299: 279(ptr) AccessChain 278(input.Normal) 170 - 300: 20(fvec3) Load 299 - 301: 118(ptr) AccessChain 268(input) 170 117 - Store 301 300 - 302: 279(ptr) AccessChain 283(input.Color) 170 - 303: 20(fvec3) Load 302 - 304: 118(ptr) AccessChain 268(input) 170 170 - Store 304 303 - 308: 10(int) Load 307(InvocationID) - Store 305(InvocationID) 308 - 311: 10(int) Load 310(PrimitiveID) - Store 309(PrimitiveID) 311 - 314: 39 Load 268(input) - Store 313(param) 314 - 317: 10(int) Load 305(InvocationID) - Store 316(param) 317 - 319: 10(int) Load 309(PrimitiveID) - Store 318(param) 319 - 320: 3 FunctionCall 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 313(param) 315(param) 316(param) 318(param) - 321:42(GSOutput) Load 315(param) - Store 312(outStream) 321 + EntryPoint Geometry 6 "main" 255 261 266 272 277 282 287 302 309 314 338 341 + ExecutionMode 6 Triangles + ExecutionMode 6 Invocations 2 + ExecutionMode 6 OutputTriangleStrip + ExecutionMode 6 OutputVertices 3 + 1: String "" + 10: String "float" + 13: String "uint" + 25: String "Pos" + 27: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed entry-point main +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed hlsl-offsets +#line 1 +" + 31: String "Color" + 36: String "VSOutput" + 47: String "PrimitiveID" + 52: String "LightVec" + 58: String "GSOutput" + 68: String "@main" + 74: String "input" + 78: String "outStream" + 82: String "InvocationID" + 91: String "int" + 96: String "i" + 111: String "bool" + 119: String "output" + 141: String "projection" + 145: String "modelview" + 149: String "lightPos" + 153: String "UBO" + 156: String "ubo" + 191: String "pos" + 200: String "worldPos" + 211: String "lPos" + 257: String "outStream.Pos" + 263: String "outStream.ViewportIndex" + 268: String "outStream.PrimitiveID" + 274: String "outStream.Normal" + 279: String "outStream.Color" + 284: String "outStream.ViewVec" + 289: String "outStream.LightVec" + Name 6 "main" + Name 23 "VSOutput" + MemberName 23(VSOutput) 0 "Pos" + MemberName 23(VSOutput) 1 "Normal" + MemberName 23(VSOutput) 2 "Color" + Name 43 "GSOutput" + MemberName 43(GSOutput) 0 "Pos" + MemberName 43(GSOutput) 1 "ViewportIndex" + MemberName 43(GSOutput) 2 "PrimitiveID" + MemberName 43(GSOutput) 3 "Normal" + MemberName 43(GSOutput) 4 "Color" + MemberName 43(GSOutput) 5 "ViewVec" + MemberName 43(GSOutput) 6 "LightVec" + Name 67 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" + Name 63 "input" + Name 64 "outStream" + Name 65 "InvocationID" + Name 66 "PrimitiveID" + Name 94 "i" + Name 117 "output" + Name 139 "UBO" + MemberName 139(UBO) 0 "projection" + MemberName 139(UBO) 1 "modelview" + MemberName 139(UBO) 2 "lightPos" + Name 154 "ubo" + MemberName 154(ubo) 0 "ubo" + Name 160 "" + Name 189 "pos" + Name 198 "worldPos" + Name 209 "lPos" + Name 255 "outStream.Pos" + Name 261 "outStream.ViewportIndex" + Name 266 "outStream.PrimitiveID" + Name 272 "outStream.Normal" + Name 277 "outStream.Color" + Name 282 "outStream.ViewVec" + Name 287 "outStream.LightVec" + Name 299 "input" + Name 302 "input.Pos" + Name 309 "input.Normal" + Name 314 "input.Color" + Name 336 "InvocationID" + Name 338 "InvocationID" + Name 340 "PrimitiveID" + Name 341 "PrimitiveID" + Name 343 "outStream" + Name 344 "param" + Name 346 "param" + Name 347 "param" + Name 349 "param" + Decorate 135 ArrayStride 64 + Decorate 137 ArrayStride 64 + MemberDecorate 139(UBO) 0 RowMajor + MemberDecorate 139(UBO) 0 Offset 0 + MemberDecorate 139(UBO) 0 MatrixStride 16 + MemberDecorate 139(UBO) 1 RowMajor + MemberDecorate 139(UBO) 1 Offset 128 + MemberDecorate 139(UBO) 1 MatrixStride 16 + MemberDecorate 139(UBO) 2 Offset 256 + MemberDecorate 154(ubo) 0 Offset 0 + Decorate 154(ubo) Block + Decorate 160 DescriptorSet 0 + Decorate 160 Binding 0 + Decorate 255(outStream.Pos) BuiltIn Position + Decorate 261(outStream.ViewportIndex) BuiltIn ViewportIndex + Decorate 266(outStream.PrimitiveID) BuiltIn PrimitiveId + Decorate 272(outStream.Normal) Location 0 + Decorate 277(outStream.Color) Location 1 + Decorate 282(outStream.ViewVec) Location 2 + Decorate 287(outStream.LightVec) Location 3 + Decorate 302(input.Pos) BuiltIn Position + Decorate 309(input.Normal) Location 0 + Decorate 314(input.Color) Location 1 + Decorate 338(InvocationID) BuiltIn InvocationId + Decorate 341(PrimitiveID) BuiltIn PrimitiveId + 4: TypeVoid + 5: TypeFunction 4 + 8: TypeFloat 32 + 11: TypeInt 32 0 + 14: 11(int) Constant 32 + 15: 11(int) Constant 6 + 16: 11(int) Constant 0 + 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 17: 11(int) Constant 3 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 18: TypeVector 8(float) 4 + 19: 11(int) Constant 4 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 19 + 21: TypeVector 8(float) 3 + 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 23(VSOutput): TypeStruct 18(fvec4) 21(fvec3) 21(fvec3) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 27 + 28: 11(int) Constant 37 + 29: 11(int) Constant 13 + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 28 29 16 16 17 + 32: 11(int) Constant 39 + 33: 11(int) Constant 34 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 + 37: 11(int) Constant 1 + 39: 11(int) Constant 5 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 19 26 39 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 36 37 26 16 16 38 36 16 17 24 30 34 + 40: TypeArray 23(VSOutput) 17 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 17 + 42: TypePointer Function 40 + 43(GSOutput): TypeStruct 18(fvec4) 11(int) 11(int) 21(fvec3) 21(fvec3) 21(fvec3) 21(fvec3) + 45: 11(int) Constant 44 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 45 29 16 16 17 + 48: 11(int) Constant 46 + 49: 11(int) Constant 19 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 12 26 48 49 16 16 17 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 12 26 48 49 16 16 17 + 53: 11(int) Constant 50 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 58 37 26 16 16 38 58 16 17 44 46 50 51 54 55 56 + 59: TypePointer Function 43(GSOutput) + 60: TypePointer Function 11(int) + 61: TypeFunction 4 42(ptr) 59(ptr) 60(ptr) 60(ptr) + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 57 12 12 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 68 62 26 16 16 38 68 17 16 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 74 41 26 16 16 69 19 37 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 79: 11(int) Constant 2 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 57 26 16 16 69 19 79 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 12 26 16 16 69 19 17 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 12 26 16 16 69 19 19 + 89: 11(int) Constant 57 + 90: TypeInt 32 1 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 91 14 19 16 + 93: TypePointer Function 90(int) + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 92 26 89 16 69 19 + 98: 90(int) Constant 0 + 109: 90(int) Constant 3 + 110: TypeBool + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 111 14 79 16 + 116: 11(int) Constant 59 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 119 57 26 116 16 69 19 + 121: 8(float) Constant 0 + 122: 18(fvec4) ConstantComposite 121 121 121 121 + 123: 21(fvec3) ConstantComposite 121 121 121 + 124:43(GSOutput) ConstantComposite 122 16 16 123 123 123 123 + 126: 11(int) Constant 60 + 128: 90(int) Constant 1 + 129: TypePointer Function 21(fvec3) + 132: TypeMatrix 18(fvec4) 4 + 134: 110(bool) ConstantTrue + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 134 + 135: TypeArray 132 79 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 133 79 + 137: TypeArray 132 79 + 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 133 79 + 139(UBO): TypeStruct 135 137 18(fvec4) + 142: 11(int) Constant 28 + 143: 11(int) Constant 21 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 141 136 26 142 143 16 16 17 + 146: 11(int) Constant 29 + 147: 11(int) Constant 20 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 138 26 146 147 16 16 17 + 150: 11(int) Constant 30 + 151: 11(int) Constant 17 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 20 26 150 151 16 16 17 + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 37 26 126 16 38 153 16 17 140 144 148 + 154(ubo): TypeStruct 139(UBO) + 157: 11(int) Constant 33 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 152 26 157 28 16 16 17 + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 37 26 126 16 38 156 16 17 155 + 159: TypePointer Uniform 154(ubo) + 160: 159(ptr) Variable Uniform + 162: 11(int) Constant 8 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 158 26 126 16 38 1 160 162 + 164: TypePointer Uniform 132 + 167: TypeMatrix 21(fvec3) 3 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 134 + 179: 11(int) Constant 61 + 180: 90(int) Constant 4 + 182: 90(int) Constant 2 + 187: 11(int) Constant 63 + 188: TypePointer Function 18(fvec4) + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 191 20 26 187 16 69 19 + 197: 11(int) Constant 64 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 20 26 197 16 69 19 + 208: 11(int) Constant 66 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 22 26 208 16 69 19 + 213: TypePointer Uniform 18(fvec4) + 222: 11(int) Constant 67 + 223: 90(int) Constant 6 + 230: 11(int) Constant 68 + 231: 90(int) Constant 5 + 237: 11(int) Constant 70 + 245: 11(int) Constant 73 + 249: 11(int) Constant 74 + 253: 11(int) Constant 75 + 254: TypePointer Output 18(fvec4) +255(outStream.Pos): 254(ptr) Variable Output + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 20 26 253 16 38 257 255(outStream.Pos) 162 + 260: TypePointer Output 11(int) +261(outStream.ViewportIndex): 260(ptr) Variable Output + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 263 12 26 253 16 38 263 261(outStream.ViewportIndex) 162 +266(outStream.PrimitiveID): 260(ptr) Variable Output + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 268 12 26 253 16 38 268 266(outStream.PrimitiveID) 162 + 271: TypePointer Output 21(fvec3) +272(outStream.Normal): 271(ptr) Variable Output + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 274 22 26 253 16 38 274 272(outStream.Normal) 162 +277(outStream.Color): 271(ptr) Variable Output + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 279 22 26 253 16 38 279 277(outStream.Color) 162 +282(outStream.ViewVec): 271(ptr) Variable Output + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 284 22 26 253 16 38 284 282(outStream.ViewVec) 162 +287(outStream.LightVec): 271(ptr) Variable Output + 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 289 22 26 253 16 38 289 287(outStream.LightVec) 162 + 298: 11(int) Constant 78 + 300: TypeArray 18(fvec4) 17 + 301: TypePointer Input 300 + 302(input.Pos): 301(ptr) Variable Input + 303: TypePointer Input 18(fvec4) + 307: TypeArray 21(fvec3) 17 + 308: TypePointer Input 307 +309(input.Normal): 308(ptr) Variable Input + 310: TypePointer Input 21(fvec3) +314(input.Color): 308(ptr) Variable Input + 337: TypePointer Input 11(int) +338(InvocationID): 337(ptr) Variable Input +341(PrimitiveID): 337(ptr) Variable Input + Line 1 56 1 + 6(main): 4 Function None 5 + 7: Label + 299(input): 42(ptr) Variable Function +336(InvocationID): 60(ptr) Variable Function +340(PrimitiveID): 60(ptr) Variable Function + 343(outStream): 59(ptr) Variable Function + 344(param): 42(ptr) Variable Function + 346(param): 59(ptr) Variable Function + 347(param): 60(ptr) Variable Function + 349(param): 60(ptr) Variable Function + Line 1 56 0 + 304: 303(ptr) AccessChain 302(input.Pos) 98 + 305: 18(fvec4) Load 304 + 306: 188(ptr) AccessChain 299(input) 98 98 + Store 306 305 + 311: 310(ptr) AccessChain 309(input.Normal) 98 + 312: 21(fvec3) Load 311 + 313: 129(ptr) AccessChain 299(input) 98 128 + Store 313 312 + 315: 310(ptr) AccessChain 314(input.Color) 98 + 316: 21(fvec3) Load 315 + 317: 129(ptr) AccessChain 299(input) 98 182 + Store 317 316 + 318: 303(ptr) AccessChain 302(input.Pos) 128 + 319: 18(fvec4) Load 318 + 320: 188(ptr) AccessChain 299(input) 128 98 + Store 320 319 + 321: 310(ptr) AccessChain 309(input.Normal) 128 + 322: 21(fvec3) Load 321 + 323: 129(ptr) AccessChain 299(input) 128 128 + Store 323 322 + 324: 310(ptr) AccessChain 314(input.Color) 128 + 325: 21(fvec3) Load 324 + 326: 129(ptr) AccessChain 299(input) 128 182 + Store 326 325 + 327: 303(ptr) AccessChain 302(input.Pos) 182 + 328: 18(fvec4) Load 327 + 329: 188(ptr) AccessChain 299(input) 182 98 + Store 329 328 + 330: 310(ptr) AccessChain 309(input.Normal) 182 + 331: 21(fvec3) Load 330 + 332: 129(ptr) AccessChain 299(input) 182 128 + Store 332 331 + 333: 310(ptr) AccessChain 314(input.Color) 182 + 334: 21(fvec3) Load 333 + 335: 129(ptr) AccessChain 299(input) 182 182 + Store 335 334 + 339: 11(int) Load 338(InvocationID) + Store 336(InvocationID) 339 + 342: 11(int) Load 341(PrimitiveID) + Store 340(PrimitiveID) 342 + 345: 40 Load 299(input) + Store 344(param) 345 + 348: 11(int) Load 336(InvocationID) + Store 347(param) 348 + 350: 11(int) Load 340(PrimitiveID) + Store 349(param) 350 + 351: 4 FunctionCall 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 344(param) 346(param) 347(param) 349(param) + 352:43(GSOutput) Load 346(param) + Store 343(outStream) 352 Return FunctionEnd -66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 3 Function None 60 - 62(input): 41(ptr) FunctionParameter - 63(outStream): 58(ptr) FunctionParameter -64(InvocationID): 59(ptr) FunctionParameter - 65(PrimitiveID): 59(ptr) FunctionParameter - 69: Label - 90(i): 89(ptr) Variable Function - 107(output): 58(ptr) Variable Function - 175(pos): 174(ptr) Variable Function - 183(worldPos): 174(ptr) Variable Function - 193(lPos): 118(ptr) Variable Function - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 68 - 71: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 25 15 15 15 15 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 62(input) 75 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 63(outStream) 75 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 80 64(InvocationID) 75 - 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 83 65(PrimitiveID) 75 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 68 66(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 91 90(i) 75 - Store 90(i) 95 - Branch 96 - 96: Label - LoopMerge 98 99 None - Branch 100 - 100: Label - 101: 86(int) Load 90(i) - 106: 103(bool) SLessThan 101 102 - BranchConditional 106 97 98 - 97: Label - 111: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(output) 75 - Store 107(output) 115 - 116: 86(int) Load 90(i) - 119: 118(ptr) AccessChain 62(input) 116 117 - 120: 20(fvec3) Load 119 - 153: 10(int) Load 64(InvocationID) - 155: 154(ptr) AccessChain 150 95 117 153 - 156: 121 Load 155 - 159: 17(fvec4) CompositeExtract 156 0 - 160: 20(fvec3) VectorShuffle 159 159 0 1 2 - 161: 17(fvec4) CompositeExtract 156 1 - 162: 20(fvec3) VectorShuffle 161 161 0 1 2 - 163: 17(fvec4) CompositeExtract 156 2 - 164: 20(fvec3) VectorShuffle 163 163 0 1 2 - 165: 157 CompositeConstruct 160 162 164 - 166: 20(fvec3) VectorTimesMatrix 120 165 - 167: 118(ptr) AccessChain 107(output) 102 - Store 167 166 - 169: 86(int) Load 90(i) - 171: 118(ptr) AccessChain 62(input) 169 170 - 172: 20(fvec3) Load 171 - 173: 118(ptr) AccessChain 107(output) 168 - Store 173 172 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 176 175(pos) 75 - 180: 86(int) Load 90(i) - 181: 174(ptr) AccessChain 62(input) 180 95 - 182: 17(fvec4) Load 181 - Store 175(pos) 182 - 187: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(worldPos) 75 - 188: 17(fvec4) Load 175(pos) - 189: 10(int) Load 64(InvocationID) - 190: 154(ptr) AccessChain 150 95 117 189 - 191: 121 Load 190 - 192: 17(fvec4) VectorTimesMatrix 188 191 - Store 183(worldPos) 192 - 197: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 194 193(lPos) 75 - 199: 198(ptr) AccessChain 150 95 170 - 200: 17(fvec4) Load 199 - 201: 10(int) Load 64(InvocationID) - 202: 154(ptr) AccessChain 150 95 117 201 - 203: 121 Load 202 - 204: 17(fvec4) VectorTimesMatrix 200 203 - 205: 20(fvec3) VectorShuffle 204 204 0 1 2 - Store 193(lPos) 205 - 207: 20(fvec3) Load 193(lPos) - 208: 17(fvec4) Load 183(worldPos) - 209: 20(fvec3) VectorShuffle 208 208 0 1 2 - 210: 20(fvec3) FSub 207 209 - 211: 118(ptr) AccessChain 107(output) 206 - Store 211 210 - 213: 17(fvec4) Load 183(worldPos) - 214: 20(fvec3) VectorShuffle 213 213 0 1 2 - 215: 20(fvec3) FNegate 214 - 216: 118(ptr) AccessChain 107(output) 212 - Store 216 215 - 217: 17(fvec4) Load 183(worldPos) - 218: 10(int) Load 64(InvocationID) - 219: 154(ptr) AccessChain 150 95 95 218 - 220: 121 Load 219 - 221: 17(fvec4) VectorTimesMatrix 217 220 - 222: 174(ptr) AccessChain 107(output) 95 - Store 222 221 - 223: 10(int) Load 64(InvocationID) - 224: 59(ptr) AccessChain 107(output) 117 - Store 224 223 - 225: 10(int) Load 65(PrimitiveID) - 226: 59(ptr) AccessChain 107(output) 170 - Store 226 225 - 232: 174(ptr) AccessChain 107(output) 95 - 233: 17(fvec4) Load 232 - Store 228(outStream.Pos) 233 - 238: 59(ptr) AccessChain 107(output) 117 - 239: 10(int) Load 238 - Store 235(outStream.ViewportIndex) 239 - 243: 59(ptr) AccessChain 107(output) 170 - 244: 10(int) Load 243 - Store 240(outStream.PrimitiveID) 244 - 249: 118(ptr) AccessChain 107(output) 102 - 250: 20(fvec3) Load 249 - Store 246(outStream.Normal) 250 - 254: 118(ptr) AccessChain 107(output) 168 - 255: 20(fvec3) Load 254 - Store 251(outStream.Color) 255 - 259: 118(ptr) AccessChain 107(output) 212 - 260: 20(fvec3) Load 259 - Store 256(outStream.ViewVec) 260 - 264: 118(ptr) AccessChain 107(output) 206 - 265: 20(fvec3) Load 264 - Store 261(outStream.LightVec) 265 + Line 1 56 1 +67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 4 Function None 61 + 63(input): 42(ptr) FunctionParameter + 64(outStream): 59(ptr) FunctionParameter +65(InvocationID): 60(ptr) FunctionParameter + 66(PrimitiveID): 60(ptr) FunctionParameter + 70: Label + 94(i): 93(ptr) Variable Function + 117(output): 59(ptr) Variable Function + 189(pos): 188(ptr) Variable Function + 198(worldPos): 188(ptr) Variable Function + 209(lPos): 129(ptr) Variable Function + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 16 16 16 16 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 73 63(input) 76 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 77 64(outStream) 76 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 81 65(InvocationID) 76 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 66(PrimitiveID) 76 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 69 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 94(i) 76 + Store 94(i) 98 + Branch 99 + 99: Label + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 + LoopMerge 101 102 None + Branch 105 + 105: Label + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 + 108: 90(int) Load 94(i) + 113: 110(bool) SLessThan 108 109 + BranchConditional 113 100 101 + 100: Label + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 116 116 16 16 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 118 117(output) 76 + Store 117(output) 124 + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 126 126 16 16 + 127: 90(int) Load 94(i) + 130: 129(ptr) AccessChain 63(input) 127 128 + 131: 21(fvec3) Load 130 + 163: 11(int) Load 65(InvocationID) + 165: 164(ptr) AccessChain 160 98 128 163 + 166: 132 Load 165 + 169: 18(fvec4) CompositeExtract 166 0 + 170: 21(fvec3) VectorShuffle 169 169 0 1 2 + 171: 18(fvec4) CompositeExtract 166 1 + 172: 21(fvec3) VectorShuffle 171 171 0 1 2 + 173: 18(fvec4) CompositeExtract 166 2 + 174: 21(fvec3) VectorShuffle 173 173 0 1 2 + 175: 167 CompositeConstruct 170 172 174 + 176: 21(fvec3) VectorTimesMatrix 131 175 + 177: 129(ptr) AccessChain 117(output) 109 + Store 177 176 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 179 179 16 16 + 181: 90(int) Load 94(i) + 183: 129(ptr) AccessChain 63(input) 181 182 + 184: 21(fvec3) Load 183 + 185: 129(ptr) AccessChain 117(output) 180 + Store 185 184 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 187 187 16 16 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 190 189(pos) 76 + 193: 90(int) Load 94(i) + 194: 188(ptr) AccessChain 63(input) 193 98 + 195: 18(fvec4) Load 194 + Store 189(pos) 195 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 197 197 16 16 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(worldPos) 76 + 202: 18(fvec4) Load 189(pos) + 203: 11(int) Load 65(InvocationID) + 204: 164(ptr) AccessChain 160 98 128 203 + 205: 132 Load 204 + 206: 18(fvec4) VectorTimesMatrix 202 205 + Store 198(worldPos) 206 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 208 208 16 16 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(lPos) 76 + 214: 213(ptr) AccessChain 160 98 182 + 215: 18(fvec4) Load 214 + 216: 11(int) Load 65(InvocationID) + 217: 164(ptr) AccessChain 160 98 128 216 + 218: 132 Load 217 + 219: 18(fvec4) VectorTimesMatrix 215 218 + 220: 21(fvec3) VectorShuffle 219 219 0 1 2 + Store 209(lPos) 220 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 222 222 16 16 + 224: 21(fvec3) Load 209(lPos) + 225: 18(fvec4) Load 198(worldPos) + 226: 21(fvec3) VectorShuffle 225 225 0 1 2 + 227: 21(fvec3) FSub 224 226 + 228: 129(ptr) AccessChain 117(output) 223 + Store 228 227 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 230 230 16 16 + 232: 18(fvec4) Load 198(worldPos) + 233: 21(fvec3) VectorShuffle 232 232 0 1 2 + 234: 21(fvec3) FNegate 233 + 235: 129(ptr) AccessChain 117(output) 231 + Store 235 234 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 237 237 16 16 + 238: 18(fvec4) Load 198(worldPos) + 239: 11(int) Load 65(InvocationID) + 240: 164(ptr) AccessChain 160 98 98 239 + 241: 132 Load 240 + 242: 18(fvec4) VectorTimesMatrix 238 241 + 243: 188(ptr) AccessChain 117(output) 98 + Store 243 242 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 245 245 16 16 + 246: 11(int) Load 65(InvocationID) + 247: 60(ptr) AccessChain 117(output) 128 + Store 247 246 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 249 249 16 16 + 250: 11(int) Load 66(PrimitiveID) + 251: 60(ptr) AccessChain 117(output) 182 + Store 251 250 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 253 253 16 16 + 258: 188(ptr) AccessChain 117(output) 98 + 259: 18(fvec4) Load 258 + Store 255(outStream.Pos) 259 + 264: 60(ptr) AccessChain 117(output) 128 + 265: 11(int) Load 264 + Store 261(outStream.ViewportIndex) 265 + 269: 60(ptr) AccessChain 117(output) 182 + 270: 11(int) Load 269 + Store 266(outStream.PrimitiveID) 270 + 275: 129(ptr) AccessChain 117(output) 109 + 276: 21(fvec3) Load 275 + Store 272(outStream.Normal) 276 + 280: 129(ptr) AccessChain 117(output) 180 + 281: 21(fvec3) Load 280 + Store 277(outStream.Color) 281 + 285: 129(ptr) AccessChain 117(output) 231 + 286: 21(fvec3) Load 285 + Store 282(outStream.ViewVec) 286 + 290: 129(ptr) AccessChain 117(output) 223 + 291: 21(fvec3) Load 290 + Store 287(outStream.LightVec) 291 EmitVertex + Branch 102 + 102: Label + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 + 294: 90(int) Load 94(i) + 295: 90(int) IAdd 294 128 + Store 94(i) 295 Branch 99 - 99: Label - 266: 86(int) Load 90(i) - 267: 86(int) IAdd 266 117 - Store 90(i) 267 - Branch 96 - 98: Label + 101: Label + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 298 298 16 16 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index c373681813..aa419a4359 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -1,809 +1,917 @@ spv.debuginfo.hlsl.tesc WARNING: 0:158: '' : attribute does not apply to entry point -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 593 +// Id's are bound by 688 Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 5 "main" 485 492 499 533 542 549 556 571 586 - ExecutionMode 5 OutputVertices 4 - ExecutionMode 5 Quads - ExecutionMode 5 SpacingEqual - ExecutionMode 5 VertexOrderCw - 9: String "float" - 12: String "uint" - 26: String "screenSpaceTessFactor" - 29: String "" - 37: String "p0" - 41: String "p1" - 48: String "bool" - 55: String "frustumCheck" - 61: String "Pos" - 64: String "inUV" - 73: String "Normal" - 77: String "UV" - 81: String "VSOutput" - 91: String "TessLevelOuter" - 95: String "TessLevelInner" - 98: String "ConstantsHSOutput" - 103: String "ConstantsHS" - 109: String "patch" - 120: String "HSOutput" - 126: String "@main" - 134: String "InvocationID" - 139: String "midPoint" - 150: String "radius" - 160: String "v0" - 171: String "modelview" - 176: String "lightPos" - 180: String "frustumPlanes" - 183: String "tessellatedEdgeSize" - 187: String "viewportDim" - 191: String "UBO" - 194: String "ubo" - 202: String "int" - 212: String "clip0" - 229: String "clip1" - 292: String "pos" - 298: String "type.2d.image" - 300: String "@type.2d.image" - 305: String "textureHeight" - 309: String "type.sampler" - 310: String "@type.sampler" - 314: String "samplerHeight" - 318: String "type.sampled.image" - 319: String "@type.sampled.image" - 335: String "i" - 371: String "output" - Name 5 "main" - Name 25 "screenSpaceTessFactor(vf4;vf4;" - Name 23 "p0" - Name 24 "p1" - Name 54 "frustumCheck(vf4;vf2;" - Name 52 "Pos" - Name 53 "inUV" - Name 68 "VSOutput" - MemberName 68(VSOutput) 0 "Pos" - MemberName 68(VSOutput) 1 "Normal" - MemberName 68(VSOutput) 2 "UV" - Name 89 "ConstantsHSOutput" - MemberName 89(ConstantsHSOutput) 0 "TessLevelOuter" - MemberName 89(ConstantsHSOutput) 1 "TessLevelInner" - Name 102 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" - Name 101 "patch" - Name 112 "HSOutput" - MemberName 112(HSOutput) 0 "Pos" - MemberName 112(HSOutput) 1 "Normal" - MemberName 112(HSOutput) 2 "UV" - Name 125 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" - Name 123 "patch" - Name 124 "InvocationID" - Name 137 "midPoint" - Name 148 "radius" - Name 158 "v0" - Name 169 "UBO" - MemberName 169(UBO) 0 "projection" - MemberName 169(UBO) 1 "modelview" - MemberName 169(UBO) 2 "lightPos" - MemberName 169(UBO) 3 "frustumPlanes" - MemberName 169(UBO) 4 "displacementFactor" - MemberName 169(UBO) 5 "tessellationFactor" - MemberName 169(UBO) 6 "viewportDim" - MemberName 169(UBO) 7 "tessellatedEdgeSize" - Name 192 "ubo" - MemberName 192(ubo) 0 "ubo" - Name 198 "" - Name 210 "clip0" - Name 227 "clip1" - Name 290 "pos" - Name 303 "textureHeight" - Name 312 "samplerHeight" - Name 333 "i" - Name 369 "output" - Name 378 "param" - Name 381 "param" - Name 403 "param" - Name 406 "param" - Name 411 "param" - Name 414 "param" - Name 419 "param" - Name 422 "param" - Name 427 "param" - Name 430 "param" - Name 459 "output" - Name 482 "patch" - Name 485 "patch.Pos" - Name 492 "patch.Normal" - Name 499 "patch.UV" - Name 531 "InvocationID" - Name 533 "InvocationID" - Name 535 "flattenTemp" - Name 536 "param" - Name 538 "param" - Name 542 "@entryPointOutput.Pos" - Name 549 "@entryPointOutput.Normal" - Name 556 "@entryPointOutput.UV" - Name 566 "@patchConstantResult" - Name 567 "param" - Name 571 "@patchConstantOutput.TessLevelOuter" - Name 586 "@patchConstantOutput.TessLevelInner" - Decorate 167 ArrayStride 16 - MemberDecorate 169(UBO) 0 RowMajor - MemberDecorate 169(UBO) 0 Offset 0 - MemberDecorate 169(UBO) 0 MatrixStride 16 - MemberDecorate 169(UBO) 1 RowMajor - MemberDecorate 169(UBO) 1 Offset 64 - MemberDecorate 169(UBO) 1 MatrixStride 16 - MemberDecorate 169(UBO) 2 Offset 128 - MemberDecorate 169(UBO) 3 Offset 144 - MemberDecorate 169(UBO) 4 Offset 240 - MemberDecorate 169(UBO) 5 Offset 244 - MemberDecorate 169(UBO) 6 Offset 248 - MemberDecorate 169(UBO) 7 Offset 256 - MemberDecorate 192(ubo) 0 Offset 0 - Decorate 192(ubo) Block - Decorate 198 DescriptorSet 0 - Decorate 198 Binding 0 - Decorate 303(textureHeight) DescriptorSet 0 - Decorate 303(textureHeight) Binding 1 - Decorate 312(samplerHeight) DescriptorSet 0 - Decorate 312(samplerHeight) Binding 1 - Decorate 485(patch.Pos) BuiltIn Position - Decorate 492(patch.Normal) Location 0 - Decorate 499(patch.UV) Location 1 - Decorate 533(InvocationID) BuiltIn InvocationId - Decorate 542(@entryPointOutput.Pos) BuiltIn Position - Decorate 549(@entryPointOutput.Normal) Location 0 - Decorate 556(@entryPointOutput.UV) Location 1 - Decorate 571(@patchConstantOutput.TessLevelOuter) Patch - Decorate 571(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 586(@patchConstantOutput.TessLevelInner) Patch - Decorate 586(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner - 3: TypeVoid - 4: TypeFunction 3 - 7: TypeFloat 32 - 10: TypeInt 32 0 - 13: 10(int) Constant 32 - 14: 10(int) Constant 6 - 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 - 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 - 17: TypeVector 7(float) 4 - 18: 10(int) Constant 4 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 18 - 20: TypePointer Function 17(fvec4) - 21: TypeFunction 7(float) 20(ptr) 20(ptr) - 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 8 19 19 - 28: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 29 - 31: 10(int) Constant 1 - 32: 10(int) Constant 5 - 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 31 18 28 32 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 26 22 28 15 15 30 26 16 15 - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 37 19 28 15 15 27 18 31 - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 42: 10(int) Constant 2 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 19 28 15 15 27 18 42 - 44: TypeVector 7(float) 2 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 42 - 46: TypePointer Function 44(fvec2) - 47: TypeBool - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 50: TypeFunction 47(bool) 20(ptr) 46(ptr) - 51: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 49 19 45 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 55 51 28 15 15 30 55 16 15 - 60: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 61 19 28 15 15 56 18 31 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 45 28 15 15 56 18 42 - 66: TypeVector 7(float) 3 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 - 68(VSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2) - 70: 10(int) Constant 44 - 71: 10(int) Constant 13 - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 61 19 28 70 71 15 15 16 - 74: 10(int) Constant 45 - 75: 10(int) Constant 35 - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 73 67 28 74 75 15 15 16 - 78: 10(int) Constant 46 - 79: 10(int) Constant 31 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 77 45 28 78 79 15 15 16 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 81 31 28 15 15 30 81 15 16 69 72 76 - 82: TypeArray 68(VSOutput) 18 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 80 18 - 84: TypePointer Function 82 - 85: TypeArray 7(float) 18 - 86: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 18 - 87: TypeArray 7(float) 42 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 42 -89(ConstantsHSOutput): TypeStruct 85 87 - 92: 10(int) Constant 58 - 93: 10(int) Constant 25 - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 86 28 92 93 15 15 16 - 96: 10(int) Constant 59 - 94: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 88 28 96 93 15 15 16 - 97: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 98 31 28 15 15 30 98 15 16 90 94 - 99: TypeFunction 89(ConstantsHSOutput) 84(ptr) - 100: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 97 83 - 104: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 103 100 28 15 15 30 103 16 15 - 108: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 83 28 15 15 104 18 31 - 111: TypePointer Function 10(int) - 112(HSOutput): TypeStruct 17(fvec4) 66(fvec3) 44(fvec2) - 114: 10(int) Constant 51 - 113: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 61 19 28 114 13 15 15 16 - 116: 10(int) Constant 52 - 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 73 67 28 116 75 15 15 16 - 118: 10(int) Constant 53 - 117: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 77 45 28 118 79 15 15 16 - 119: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 120 31 28 15 15 30 120 15 16 113 115 117 - 121: TypeFunction 112(HSOutput) 84(ptr) 111(ptr) - 122: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 119 83 11 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 126 122 28 15 15 30 126 16 15 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 83 28 15 15 127 18 31 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 134 11 28 15 15 127 18 42 - 140: 10(int) Constant 67 - 138: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 139 19 28 140 15 27 18 - 142: 7(float) Constant 1056964608 - 147: TypePointer Function 7(float) - 151: 10(int) Constant 69 - 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 150 8 28 151 15 27 18 - 156: 7(float) Constant 1073741824 - 161: 10(int) Constant 72 - 159: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 19 28 161 15 27 18 - 164: TypeMatrix 17(fvec4) 4 - 166: 47(bool) ConstantTrue - 165: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 18 166 - 167: TypeArray 17(fvec4) 14 - 168: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 19 14 - 169(UBO): TypeStruct 164 164 17(fvec4) 167 7(float) 7(float) 44(fvec2) 7(float) - 172: 10(int) Constant 29 - 173: 10(int) Constant 20 - 170: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 165 28 172 173 15 15 16 - 174: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 165 28 172 173 15 15 16 - 177: 10(int) Constant 30 - 178: 10(int) Constant 17 - 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 19 28 177 178 15 15 16 - 181: 10(int) Constant 22 - 179: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 168 28 79 181 15 15 16 - 184: 10(int) Constant 27 - 182: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 8 28 75 184 15 15 16 - 185: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 8 28 75 184 15 15 16 - 188: 10(int) Constant 34 - 186: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 45 28 188 173 15 15 16 - 189: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 8 28 75 184 15 15 16 - 190: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 191 31 28 161 15 30 191 15 16 170 174 175 179 182 185 186 189 - 192(ubo): TypeStruct 169(UBO) - 195: 10(int) Constant 37 - 193: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 190 28 195 195 15 15 16 - 196: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 194 31 28 161 15 30 194 15 16 193 - 197: TypePointer Uniform 192(ubo) - 198: 197(ptr) Variable Uniform - 200: 10(int) Constant 8 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 29 196 28 161 15 30 29 198 200 - 201: TypeInt 32 1 - 203: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 202 13 18 15 - 204: 201(int) Constant 0 - 205: 201(int) Constant 1 - 206: TypePointer Uniform 164 - 213: 10(int) Constant 75 - 211: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 19 28 213 15 27 18 - 217: 7(float) Constant 0 - 218: 66(fvec3) ConstantComposite 217 217 217 - 230: 10(int) Constant 76 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 19 28 230 15 27 18 - 252: 201(int) Constant 6 - 253: TypePointer Uniform 44(fvec2) - 275: 201(int) Constant 7 - 276: TypePointer Uniform 7(float) - 280: 201(int) Constant 5 - 284: 7(float) Constant 1065353216 - 285: 7(float) Constant 1115684864 - 293: 10(int) Constant 98 - 291: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 292 19 28 293 15 56 18 - 296: TypeImage 7(float) 2D sampled format:Unknown - 299: 10(int) Constant 99 - 301: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 297: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 298 15 28 299 15 30 300 301 16 - 302: TypePointer UniformConstant 296 -303(textureHeight): 302(ptr) Variable UniformConstant - 304: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 305 297 28 299 15 30 305 303(textureHeight) 200 - 307: TypeSampler - 308: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 309 31 28 299 15 30 310 301 16 - 311: TypePointer UniformConstant 307 -312(samplerHeight): 311(ptr) Variable UniformConstant - 313: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 314 308 28 299 15 30 314 312(samplerHeight) 200 - 316: TypeSampledImage 296 - 317: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 318 15 28 299 15 30 319 301 16 - 324: 201(int) Constant 4 - 332: TypePointer Function 201(int) - 336: 10(int) Constant 102 - 334: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 335 203 28 336 15 56 18 - 344: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 347: 201(int) Constant 3 - 349: TypePointer Uniform 17(fvec4) - 353: 7(float) Constant 1090519040 - 355: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 359: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 360: 47(bool) ConstantFalse - 364: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 368: TypePointer Function 89(ConstantsHSOutput) - 372: 10(int) Constant 113 - 370: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 371 97 28 372 15 104 18 - 374: 85 ConstantComposite 217 217 217 217 - 375: 87 ConstantComposite 217 217 - 376:89(ConstantsHSOutput) ConstantComposite 374 375 - 377: 201(int) Constant 2 - 385: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 386: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 399: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 13 42 15 - 458: TypePointer Function 112(HSOutput) - 461: 10(int) Constant 159 - 460: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 371 119 28 461 15 127 18 - 463: 17(fvec4) ConstantComposite 217 217 217 217 - 464: 44(fvec2) ConstantComposite 217 217 - 465:112(HSOutput) ConstantComposite 463 218 464 - 471: TypePointer Function 66(fvec3) - 483: TypeArray 17(fvec4) 18 - 484: TypePointer Input 483 - 485(patch.Pos): 484(ptr) Variable Input - 486: TypePointer Input 17(fvec4) - 490: TypeArray 66(fvec3) 18 - 491: TypePointer Input 490 -492(patch.Normal): 491(ptr) Variable Input - 493: TypePointer Input 66(fvec3) - 497: TypeArray 44(fvec2) 18 - 498: TypePointer Input 497 - 499(patch.UV): 498(ptr) Variable Input - 500: TypePointer Input 44(fvec2) - 532: TypePointer Input 10(int) -533(InvocationID): 532(ptr) Variable Input - 541: TypePointer Output 483 -542(@entryPointOutput.Pos): 541(ptr) Variable Output - 546: TypePointer Output 17(fvec4) - 548: TypePointer Output 490 -549(@entryPointOutput.Normal): 548(ptr) Variable Output - 553: TypePointer Output 66(fvec3) - 555: TypePointer Output 497 -556(@entryPointOutput.UV): 555(ptr) Variable Output - 560: TypePointer Output 44(fvec2) - 570: TypePointer Output 85 -571(@patchConstantOutput.TessLevelOuter): 570(ptr) Variable Output - 574: TypePointer Output 7(float) - 585: TypePointer Output 87 -586(@patchConstantOutput.TessLevelInner): 585(ptr) Variable Output - 5(main): 3 Function None 4 - 6: Label - 482(patch): 84(ptr) Variable Function -531(InvocationID): 111(ptr) Variable Function -535(flattenTemp): 458(ptr) Variable Function - 536(param): 84(ptr) Variable Function - 538(param): 111(ptr) Variable Function -566(@patchConstantResult): 368(ptr) Variable Function - 567(param): 84(ptr) Variable Function - 487: 486(ptr) AccessChain 485(patch.Pos) 204 - 488: 17(fvec4) Load 487 - 489: 20(ptr) AccessChain 482(patch) 204 204 - Store 489 488 - 494: 493(ptr) AccessChain 492(patch.Normal) 204 - 495: 66(fvec3) Load 494 - 496: 471(ptr) AccessChain 482(patch) 204 205 - Store 496 495 - 501: 500(ptr) AccessChain 499(patch.UV) 204 - 502: 44(fvec2) Load 501 - 503: 46(ptr) AccessChain 482(patch) 204 377 - Store 503 502 - 504: 486(ptr) AccessChain 485(patch.Pos) 205 - 505: 17(fvec4) Load 504 - 506: 20(ptr) AccessChain 482(patch) 205 204 - Store 506 505 - 507: 493(ptr) AccessChain 492(patch.Normal) 205 - 508: 66(fvec3) Load 507 - 509: 471(ptr) AccessChain 482(patch) 205 205 - Store 509 508 - 510: 500(ptr) AccessChain 499(patch.UV) 205 - 511: 44(fvec2) Load 510 - 512: 46(ptr) AccessChain 482(patch) 205 377 - Store 512 511 - 513: 486(ptr) AccessChain 485(patch.Pos) 377 - 514: 17(fvec4) Load 513 - 515: 20(ptr) AccessChain 482(patch) 377 204 - Store 515 514 - 516: 493(ptr) AccessChain 492(patch.Normal) 377 - 517: 66(fvec3) Load 516 - 518: 471(ptr) AccessChain 482(patch) 377 205 - Store 518 517 - 519: 500(ptr) AccessChain 499(patch.UV) 377 - 520: 44(fvec2) Load 519 - 521: 46(ptr) AccessChain 482(patch) 377 377 - Store 521 520 - 522: 486(ptr) AccessChain 485(patch.Pos) 347 - 523: 17(fvec4) Load 522 - 524: 20(ptr) AccessChain 482(patch) 347 204 - Store 524 523 - 525: 493(ptr) AccessChain 492(patch.Normal) 347 - 526: 66(fvec3) Load 525 - 527: 471(ptr) AccessChain 482(patch) 347 205 - Store 527 526 - 528: 500(ptr) AccessChain 499(patch.UV) 347 - 529: 44(fvec2) Load 528 - 530: 46(ptr) AccessChain 482(patch) 347 377 - Store 530 529 - 534: 10(int) Load 533(InvocationID) - Store 531(InvocationID) 534 - 537: 82 Load 482(patch) - Store 536(param) 537 - 539: 10(int) Load 531(InvocationID) - Store 538(param) 539 - 540:112(HSOutput) FunctionCall 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 536(param) 538(param) - Store 535(flattenTemp) 540 - 543: 10(int) Load 533(InvocationID) - 544: 20(ptr) AccessChain 535(flattenTemp) 204 - 545: 17(fvec4) Load 544 - 547: 546(ptr) AccessChain 542(@entryPointOutput.Pos) 543 - Store 547 545 - 550: 10(int) Load 533(InvocationID) - 551: 471(ptr) AccessChain 535(flattenTemp) 205 - 552: 66(fvec3) Load 551 - 554: 553(ptr) AccessChain 549(@entryPointOutput.Normal) 550 - Store 554 552 - 557: 10(int) Load 533(InvocationID) - 558: 46(ptr) AccessChain 535(flattenTemp) 377 - 559: 44(fvec2) Load 558 - 561: 560(ptr) AccessChain 556(@entryPointOutput.UV) 557 - Store 561 559 - ControlBarrier 42 18 15 - 562: 10(int) Load 533(InvocationID) - 563: 47(bool) IEqual 562 204 - SelectionMerge 565 None - BranchConditional 563 564 565 - 564: Label - 568: 82 Load 482(patch) - Store 567(param) 568 - 569:89(ConstantsHSOutput) FunctionCall 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 567(param) - Store 566(@patchConstantResult) 569 - 572: 147(ptr) AccessChain 566(@patchConstantResult) 204 204 - 573: 7(float) Load 572 - 575: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 204 - Store 575 573 - 576: 147(ptr) AccessChain 566(@patchConstantResult) 204 205 - 577: 7(float) Load 576 - 578: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 205 - Store 578 577 - 579: 147(ptr) AccessChain 566(@patchConstantResult) 204 377 - 580: 7(float) Load 579 - 581: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 377 - Store 581 580 - 582: 147(ptr) AccessChain 566(@patchConstantResult) 204 347 - 583: 7(float) Load 582 - 584: 574(ptr) AccessChain 571(@patchConstantOutput.TessLevelOuter) 347 - Store 584 583 - 587: 147(ptr) AccessChain 566(@patchConstantResult) 205 204 - 588: 7(float) Load 587 - 589: 574(ptr) AccessChain 586(@patchConstantOutput.TessLevelInner) 204 - Store 589 588 - 590: 147(ptr) AccessChain 566(@patchConstantResult) 205 205 - 591: 7(float) Load 590 - 592: 574(ptr) AccessChain 586(@patchConstantOutput.TessLevelInner) 205 - Store 592 591 - Branch 565 - 565: Label + EntryPoint TessellationControl 6 "main" 580 587 594 628 637 644 651 666 681 + ExecutionMode 6 OutputVertices 4 + ExecutionMode 6 Quads + ExecutionMode 6 SpacingEqual + ExecutionMode 6 VertexOrderCw + 1: String "" + 10: String "float" + 13: String "uint" + 27: String "screenSpaceTessFactor" + 30: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed entry-point main +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed hlsl-offsets +#line 1 +" + 38: String "p0" + 42: String "p1" + 49: String "bool" + 56: String "frustumCheck" + 62: String "Pos" + 65: String "inUV" + 74: String "Normal" + 78: String "UV" + 82: String "VSOutput" + 92: String "TessLevelOuter" + 96: String "TessLevelInner" + 99: String "ConstantsHSOutput" + 104: String "ConstantsHS" + 110: String "patch" + 121: String "HSOutput" + 127: String "@main" + 135: String "InvocationID" + 143: String "midPoint" + 155: String "radius" + 166: String "v0" + 176: String "modelview" + 181: String "lightPos" + 185: String "frustumPlanes" + 188: String "tessellatedEdgeSize" + 192: String "viewportDim" + 196: String "UBO" + 199: String "ubo" + 207: String "int" + 219: String "clip0" + 237: String "clip1" + 312: String "pos" + 319: String "type.2d.image" + 320: String "@type.2d.image" + 325: String "textureHeight" + 329: String "type.sampler" + 330: String "@type.sampler" + 334: String "samplerHeight" + 338: String "type.sampled.image" + 339: String "@type.sampled.image" + 357: String "i" + 410: String "output" + Name 6 "main" + Name 26 "screenSpaceTessFactor(vf4;vf4;" + Name 24 "p0" + Name 25 "p1" + Name 55 "frustumCheck(vf4;vf2;" + Name 53 "Pos" + Name 54 "inUV" + Name 69 "VSOutput" + MemberName 69(VSOutput) 0 "Pos" + MemberName 69(VSOutput) 1 "Normal" + MemberName 69(VSOutput) 2 "UV" + Name 90 "ConstantsHSOutput" + MemberName 90(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 90(ConstantsHSOutput) 1 "TessLevelInner" + Name 103 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" + Name 102 "patch" + Name 113 "HSOutput" + MemberName 113(HSOutput) 0 "Pos" + MemberName 113(HSOutput) 1 "Normal" + MemberName 113(HSOutput) 2 "UV" + Name 126 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" + Name 124 "patch" + Name 125 "InvocationID" + Name 141 "midPoint" + Name 153 "radius" + Name 164 "v0" + Name 174 "UBO" + MemberName 174(UBO) 0 "projection" + MemberName 174(UBO) 1 "modelview" + MemberName 174(UBO) 2 "lightPos" + MemberName 174(UBO) 3 "frustumPlanes" + MemberName 174(UBO) 4 "displacementFactor" + MemberName 174(UBO) 5 "tessellationFactor" + MemberName 174(UBO) 6 "viewportDim" + MemberName 174(UBO) 7 "tessellatedEdgeSize" + Name 197 "ubo" + MemberName 197(ubo) 0 "ubo" + Name 203 "" + Name 217 "clip0" + Name 235 "clip1" + Name 310 "pos" + Name 323 "textureHeight" + Name 332 "samplerHeight" + Name 355 "i" + Name 408 "output" + Name 418 "param" + Name 421 "param" + Name 462 "param" + Name 465 "param" + Name 472 "param" + Name 475 "param" + Name 482 "param" + Name 485 "param" + Name 492 "param" + Name 495 "param" + Name 547 "output" + Name 577 "patch" + Name 580 "patch.Pos" + Name 587 "patch.Normal" + Name 594 "patch.UV" + Name 626 "InvocationID" + Name 628 "InvocationID" + Name 630 "flattenTemp" + Name 631 "param" + Name 633 "param" + Name 637 "@entryPointOutput.Pos" + Name 644 "@entryPointOutput.Normal" + Name 651 "@entryPointOutput.UV" + Name 661 "@patchConstantResult" + Name 662 "param" + Name 666 "@patchConstantOutput.TessLevelOuter" + Name 681 "@patchConstantOutput.TessLevelInner" + Decorate 172 ArrayStride 16 + MemberDecorate 174(UBO) 0 RowMajor + MemberDecorate 174(UBO) 0 Offset 0 + MemberDecorate 174(UBO) 0 MatrixStride 16 + MemberDecorate 174(UBO) 1 RowMajor + MemberDecorate 174(UBO) 1 Offset 64 + MemberDecorate 174(UBO) 1 MatrixStride 16 + MemberDecorate 174(UBO) 2 Offset 128 + MemberDecorate 174(UBO) 3 Offset 144 + MemberDecorate 174(UBO) 4 Offset 240 + MemberDecorate 174(UBO) 5 Offset 244 + MemberDecorate 174(UBO) 6 Offset 248 + MemberDecorate 174(UBO) 7 Offset 256 + MemberDecorate 197(ubo) 0 Offset 0 + Decorate 197(ubo) Block + Decorate 203 DescriptorSet 0 + Decorate 203 Binding 0 + Decorate 323(textureHeight) DescriptorSet 0 + Decorate 323(textureHeight) Binding 1 + Decorate 332(samplerHeight) DescriptorSet 0 + Decorate 332(samplerHeight) Binding 1 + Decorate 580(patch.Pos) BuiltIn Position + Decorate 587(patch.Normal) Location 0 + Decorate 594(patch.UV) Location 1 + Decorate 628(InvocationID) BuiltIn InvocationId + Decorate 637(@entryPointOutput.Pos) BuiltIn Position + Decorate 644(@entryPointOutput.Normal) Location 0 + Decorate 651(@entryPointOutput.UV) Location 1 + Decorate 666(@patchConstantOutput.TessLevelOuter) Patch + Decorate 666(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 681(@patchConstantOutput.TessLevelInner) Patch + Decorate 681(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + 4: TypeVoid + 5: TypeFunction 4 + 8: TypeFloat 32 + 11: TypeInt 32 0 + 14: 11(int) Constant 32 + 15: 11(int) Constant 6 + 16: 11(int) Constant 0 + 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 17: 11(int) Constant 3 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 18: TypeVector 8(float) 4 + 19: 11(int) Constant 4 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 19 + 21: TypePointer Function 18(fvec4) + 22: TypeFunction 8(float) 21(ptr) 21(ptr) + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 9 20 20 + 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 30 + 32: 11(int) Constant 1 + 33: 11(int) Constant 5 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 32 19 29 33 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 27 23 29 16 16 31 27 17 16 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 38 20 29 16 16 28 19 32 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 43: 11(int) Constant 2 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 20 29 16 16 28 19 43 + 45: TypeVector 8(float) 2 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 43 + 47: TypePointer Function 45(fvec2) + 48: TypeBool + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 51: TypeFunction 48(bool) 21(ptr) 47(ptr) + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 50 20 46 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 56 52 29 16 16 31 56 17 16 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 62 20 29 16 16 57 19 32 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 46 29 16 16 57 19 43 + 67: TypeVector 8(float) 3 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 69(VSOutput): TypeStruct 18(fvec4) 67(fvec3) 45(fvec2) + 71: 11(int) Constant 44 + 72: 11(int) Constant 13 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 20 29 71 72 16 16 17 + 75: 11(int) Constant 45 + 76: 11(int) Constant 35 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 74 68 29 75 76 16 16 17 + 79: 11(int) Constant 46 + 80: 11(int) Constant 31 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 46 29 79 80 16 16 17 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 82 32 29 16 16 31 82 16 17 70 73 77 + 83: TypeArray 69(VSOutput) 19 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 81 19 + 85: TypePointer Function 83 + 86: TypeArray 8(float) 19 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 19 + 88: TypeArray 8(float) 43 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 43 +90(ConstantsHSOutput): TypeStruct 86 88 + 93: 11(int) Constant 58 + 94: 11(int) Constant 25 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 87 29 93 94 16 16 17 + 97: 11(int) Constant 59 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 89 29 97 94 16 16 17 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 99 32 29 16 16 31 99 16 17 91 95 + 100: TypeFunction 90(ConstantsHSOutput) 85(ptr) + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 98 84 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 104 101 29 16 16 31 104 17 16 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 110 84 29 16 16 105 19 32 + 112: TypePointer Function 11(int) + 113(HSOutput): TypeStruct 18(fvec4) 67(fvec3) 45(fvec2) + 115: 11(int) Constant 51 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 20 29 115 14 16 16 17 + 117: 11(int) Constant 52 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 74 68 29 117 76 16 16 17 + 119: 11(int) Constant 53 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 46 29 119 80 16 16 17 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 121 32 29 16 16 31 121 16 17 114 116 118 + 122: TypeFunction 113(HSOutput) 85(ptr) 112(ptr) + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 120 84 12 + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 127 123 29 16 16 31 127 17 16 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 110 84 29 16 16 128 19 32 + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 12 29 16 16 128 19 43 + 140: 11(int) Constant 67 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 20 29 140 16 28 19 + 145: 8(float) Constant 1056964608 + 151: 11(int) Constant 69 + 152: TypePointer Function 8(float) + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 9 29 151 16 28 19 + 160: 8(float) Constant 1073741824 + 163: 11(int) Constant 72 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 20 29 163 16 28 19 + 169: TypeMatrix 18(fvec4) 4 + 171: 48(bool) ConstantTrue + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 171 + 172: TypeArray 18(fvec4) 15 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 + 174(UBO): TypeStruct 169 169 18(fvec4) 172 8(float) 8(float) 45(fvec2) 8(float) + 177: 11(int) Constant 29 + 178: 11(int) Constant 20 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 170 29 177 178 16 16 17 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 170 29 177 178 16 16 17 + 182: 11(int) Constant 30 + 183: 11(int) Constant 17 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 181 20 29 182 183 16 16 17 + 186: 11(int) Constant 22 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 173 29 80 186 16 16 17 + 189: 11(int) Constant 27 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 9 29 76 189 16 16 17 + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 9 29 76 189 16 16 17 + 193: 11(int) Constant 34 + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 46 29 193 178 16 16 17 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 9 29 76 189 16 16 17 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 196 32 29 163 16 31 196 16 17 175 179 180 184 187 190 191 194 + 197(ubo): TypeStruct 174(UBO) + 200: 11(int) Constant 37 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 199 195 29 200 200 16 16 17 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 199 32 29 163 16 31 199 16 17 198 + 202: TypePointer Uniform 197(ubo) + 203: 202(ptr) Variable Uniform + 205: 11(int) Constant 8 + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 201 29 163 16 31 1 203 205 + 206: TypeInt 32 1 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 207 14 19 16 + 209: 206(int) Constant 0 + 210: 206(int) Constant 1 + 211: TypePointer Uniform 169 + 216: 11(int) Constant 75 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 219 20 29 216 16 28 19 + 223: 8(float) Constant 0 + 224: 67(fvec3) ConstantComposite 223 223 223 + 234: 11(int) Constant 76 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 20 29 234 16 28 19 + 250: 11(int) Constant 79 + 257: 11(int) Constant 80 + 264: 11(int) Constant 83 + 265: 206(int) Constant 6 + 266: TypePointer Uniform 45(fvec2) + 277: 11(int) Constant 84 + 288: 11(int) Constant 89 + 292: 206(int) Constant 7 + 293: TypePointer Uniform 8(float) + 297: 206(int) Constant 5 + 301: 8(float) Constant 1065353216 + 302: 8(float) Constant 1115684864 + 309: 11(int) Constant 98 + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 312 20 29 309 16 57 19 + 316: 11(int) Constant 99 + 317: TypeImage 8(float) 2D sampled format:Unknown + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 319 16 29 316 16 31 320 321 17 + 322: TypePointer UniformConstant 317 +323(textureHeight): 322(ptr) Variable UniformConstant + 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 325 318 29 316 16 31 325 323(textureHeight) 205 + 327: TypeSampler + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 329 32 29 316 16 31 330 321 17 + 331: TypePointer UniformConstant 327 +332(samplerHeight): 331(ptr) Variable UniformConstant + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 334 328 29 316 16 31 334 332(samplerHeight) 205 + 336: TypeSampledImage 317 + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 338 16 29 316 16 31 339 321 17 + 344: 206(int) Constant 4 + 353: 11(int) Constant 102 + 354: TypePointer Function 206(int) + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 357 208 29 353 16 57 19 + 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 373: 11(int) Constant 103 + 375: 206(int) Constant 3 + 377: TypePointer Uniform 18(fvec4) + 381: 8(float) Constant 1090519040 + 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 388: 48(bool) ConstantFalse + 391: 11(int) Constant 105 + 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 400: 11(int) Constant 108 + 406: 11(int) Constant 113 + 407: TypePointer Function 90(ConstantsHSOutput) + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 98 29 406 16 105 19 + 412: 86 ConstantComposite 223 223 223 223 + 413: 88 ConstantComposite 223 223 + 414:90(ConstantsHSOutput) ConstantComposite 412 413 + 416: 11(int) Constant 115 + 417: 206(int) Constant 2 + 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 432: 11(int) Constant 117 + 435: 11(int) Constant 118 + 438: 11(int) Constant 119 + 441: 11(int) Constant 120 + 444: 11(int) Constant 121 + 447: 11(int) Constant 122 + 452: 11(int) Constant 126 + 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 + 461: 11(int) Constant 128 + 471: 11(int) Constant 129 + 481: 11(int) Constant 130 + 491: 11(int) Constant 131 + 501: 11(int) Constant 132 + 509: 11(int) Constant 133 + 519: 11(int) Constant 139 + 522: 11(int) Constant 140 + 525: 11(int) Constant 141 + 528: 11(int) Constant 142 + 531: 11(int) Constant 143 + 534: 11(int) Constant 144 + 538: 11(int) Constant 148 + 545: 11(int) Constant 159 + 546: TypePointer Function 113(HSOutput) + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 120 29 545 16 128 19 + 550: 18(fvec4) ConstantComposite 223 223 223 223 + 551: 45(fvec2) ConstantComposite 223 223 + 552:113(HSOutput) ConstantComposite 550 224 551 + 554: 11(int) Constant 160 + 560: 11(int) Constant 161 + 562: TypePointer Function 67(fvec3) + 567: 11(int) Constant 162 + 573: 11(int) Constant 163 + 578: TypeArray 18(fvec4) 19 + 579: TypePointer Input 578 + 580(patch.Pos): 579(ptr) Variable Input + 581: TypePointer Input 18(fvec4) + 585: TypeArray 67(fvec3) 19 + 586: TypePointer Input 585 +587(patch.Normal): 586(ptr) Variable Input + 588: TypePointer Input 67(fvec3) + 592: TypeArray 45(fvec2) 19 + 593: TypePointer Input 592 + 594(patch.UV): 593(ptr) Variable Input + 595: TypePointer Input 45(fvec2) + 627: TypePointer Input 11(int) +628(InvocationID): 627(ptr) Variable Input + 636: TypePointer Output 578 +637(@entryPointOutput.Pos): 636(ptr) Variable Output + 641: TypePointer Output 18(fvec4) + 643: TypePointer Output 585 +644(@entryPointOutput.Normal): 643(ptr) Variable Output + 648: TypePointer Output 67(fvec3) + 650: TypePointer Output 592 +651(@entryPointOutput.UV): 650(ptr) Variable Output + 655: TypePointer Output 45(fvec2) + 665: TypePointer Output 86 +666(@patchConstantOutput.TessLevelOuter): 665(ptr) Variable Output + 669: TypePointer Output 8(float) + 680: TypePointer Output 88 +681(@patchConstantOutput.TessLevelInner): 680(ptr) Variable Output + Line 1 158 1 + 6(main): 4 Function None 5 + 7: Label + 577(patch): 85(ptr) Variable Function +626(InvocationID): 112(ptr) Variable Function +630(flattenTemp): 546(ptr) Variable Function + 631(param): 85(ptr) Variable Function + 633(param): 112(ptr) Variable Function +661(@patchConstantResult): 407(ptr) Variable Function + 662(param): 85(ptr) Variable Function + Line 1 158 0 + 582: 581(ptr) AccessChain 580(patch.Pos) 209 + 583: 18(fvec4) Load 582 + 584: 21(ptr) AccessChain 577(patch) 209 209 + Store 584 583 + 589: 588(ptr) AccessChain 587(patch.Normal) 209 + 590: 67(fvec3) Load 589 + 591: 562(ptr) AccessChain 577(patch) 209 210 + Store 591 590 + 596: 595(ptr) AccessChain 594(patch.UV) 209 + 597: 45(fvec2) Load 596 + 598: 47(ptr) AccessChain 577(patch) 209 417 + Store 598 597 + 599: 581(ptr) AccessChain 580(patch.Pos) 210 + 600: 18(fvec4) Load 599 + 601: 21(ptr) AccessChain 577(patch) 210 209 + Store 601 600 + 602: 588(ptr) AccessChain 587(patch.Normal) 210 + 603: 67(fvec3) Load 602 + 604: 562(ptr) AccessChain 577(patch) 210 210 + Store 604 603 + 605: 595(ptr) AccessChain 594(patch.UV) 210 + 606: 45(fvec2) Load 605 + 607: 47(ptr) AccessChain 577(patch) 210 417 + Store 607 606 + 608: 581(ptr) AccessChain 580(patch.Pos) 417 + 609: 18(fvec4) Load 608 + 610: 21(ptr) AccessChain 577(patch) 417 209 + Store 610 609 + 611: 588(ptr) AccessChain 587(patch.Normal) 417 + 612: 67(fvec3) Load 611 + 613: 562(ptr) AccessChain 577(patch) 417 210 + Store 613 612 + 614: 595(ptr) AccessChain 594(patch.UV) 417 + 615: 45(fvec2) Load 614 + 616: 47(ptr) AccessChain 577(patch) 417 417 + Store 616 615 + 617: 581(ptr) AccessChain 580(patch.Pos) 375 + 618: 18(fvec4) Load 617 + 619: 21(ptr) AccessChain 577(patch) 375 209 + Store 619 618 + 620: 588(ptr) AccessChain 587(patch.Normal) 375 + 621: 67(fvec3) Load 620 + 622: 562(ptr) AccessChain 577(patch) 375 210 + Store 622 621 + 623: 595(ptr) AccessChain 594(patch.UV) 375 + 624: 45(fvec2) Load 623 + 625: 47(ptr) AccessChain 577(patch) 375 417 + Store 625 624 + 629: 11(int) Load 628(InvocationID) + Store 626(InvocationID) 629 + 632: 83 Load 577(patch) + Store 631(param) 632 + 634: 11(int) Load 626(InvocationID) + Store 633(param) 634 + 635:113(HSOutput) FunctionCall 126(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 631(param) 633(param) + Store 630(flattenTemp) 635 + 638: 11(int) Load 628(InvocationID) + 639: 21(ptr) AccessChain 630(flattenTemp) 209 + 640: 18(fvec4) Load 639 + 642: 641(ptr) AccessChain 637(@entryPointOutput.Pos) 638 + Store 642 640 + 645: 11(int) Load 628(InvocationID) + 646: 562(ptr) AccessChain 630(flattenTemp) 210 + 647: 67(fvec3) Load 646 + 649: 648(ptr) AccessChain 644(@entryPointOutput.Normal) 645 + Store 649 647 + 652: 11(int) Load 628(InvocationID) + 653: 47(ptr) AccessChain 630(flattenTemp) 417 + 654: 45(fvec2) Load 653 + 656: 655(ptr) AccessChain 651(@entryPointOutput.UV) 652 + Store 656 654 + ControlBarrier 43 19 16 + 657: 11(int) Load 628(InvocationID) + 658: 48(bool) IEqual 657 209 + SelectionMerge 660 None + BranchConditional 658 659 660 + 659: Label + 663: 83 Load 577(patch) + Store 662(param) 663 + 664:90(ConstantsHSOutput) FunctionCall 103(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 662(param) + Store 661(@patchConstantResult) 664 + 667: 152(ptr) AccessChain 661(@patchConstantResult) 209 209 + 668: 8(float) Load 667 + 670: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 209 + Store 670 668 + 671: 152(ptr) AccessChain 661(@patchConstantResult) 209 210 + 672: 8(float) Load 671 + 673: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 210 + Store 673 672 + 674: 152(ptr) AccessChain 661(@patchConstantResult) 209 417 + 675: 8(float) Load 674 + 676: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 417 + Store 676 675 + 677: 152(ptr) AccessChain 661(@patchConstantResult) 209 375 + 678: 8(float) Load 677 + 679: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 375 + Store 679 678 + 682: 152(ptr) AccessChain 661(@patchConstantResult) 210 209 + 683: 8(float) Load 682 + 684: 669(ptr) AccessChain 681(@patchConstantOutput.TessLevelInner) 209 + Store 684 683 + 685: 152(ptr) AccessChain 661(@patchConstantResult) 210 210 + 686: 8(float) Load 685 + 687: 669(ptr) AccessChain 681(@patchConstantOutput.TessLevelInner) 210 + Store 687 686 + Branch 660 + 660: Label Return FunctionEnd -25(screenSpaceTessFactor(vf4;vf4;): 7(float) Function None 21 - 23(p0): 20(ptr) FunctionParameter - 24(p1): 20(ptr) FunctionParameter - 33: Label - 137(midPoint): 20(ptr) Variable Function - 148(radius): 147(ptr) Variable Function - 158(v0): 20(ptr) Variable Function - 210(clip0): 20(ptr) Variable Function - 227(clip1): 20(ptr) Variable Function - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 27 - 35: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 36 23(p0) 39 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 24(p1) 39 - 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 27 25(screenSpaceTessFactor(vf4;vf4;) - 141: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 138 137(midPoint) 39 - 143: 17(fvec4) Load 23(p0) - 144: 17(fvec4) Load 24(p1) - 145: 17(fvec4) FAdd 143 144 - 146: 17(fvec4) VectorTimesScalar 145 142 - Store 137(midPoint) 146 - 152: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 149 148(radius) 39 - 153: 17(fvec4) Load 23(p0) - 154: 17(fvec4) Load 24(p1) - 155: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 153 154 - 157: 7(float) FDiv 155 156 - Store 148(radius) 157 - 162: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(v0) 39 - 163: 17(fvec4) Load 137(midPoint) - 207: 206(ptr) AccessChain 198 204 205 - 208: 164 Load 207 - 209: 17(fvec4) VectorTimesMatrix 163 208 - Store 158(v0) 209 - 214: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(clip0) 39 - 215: 17(fvec4) Load 158(v0) - 216: 7(float) Load 148(radius) - 219: 7(float) CompositeExtract 218 0 - 220: 7(float) CompositeExtract 218 1 - 221: 7(float) CompositeExtract 218 2 - 222: 17(fvec4) CompositeConstruct 216 219 220 221 - 223: 17(fvec4) FSub 215 222 - 224: 206(ptr) AccessChain 198 204 204 - 225: 164 Load 224 - 226: 17(fvec4) VectorTimesMatrix 223 225 - Store 210(clip0) 226 - 231: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(clip1) 39 - 232: 17(fvec4) Load 158(v0) - 233: 7(float) Load 148(radius) - 234: 7(float) CompositeExtract 218 0 - 235: 7(float) CompositeExtract 218 1 - 236: 7(float) CompositeExtract 218 2 - 237: 17(fvec4) CompositeConstruct 233 234 235 236 - 238: 17(fvec4) FAdd 232 237 - 239: 206(ptr) AccessChain 198 204 204 - 240: 164 Load 239 - 241: 17(fvec4) VectorTimesMatrix 238 240 - Store 227(clip1) 241 - 242: 147(ptr) AccessChain 210(clip0) 16 - 243: 7(float) Load 242 - 244: 17(fvec4) Load 210(clip0) - 245: 17(fvec4) CompositeConstruct 243 243 243 243 - 246: 17(fvec4) FDiv 244 245 - Store 210(clip0) 246 - 247: 147(ptr) AccessChain 227(clip1) 16 - 248: 7(float) Load 247 - 249: 17(fvec4) Load 227(clip1) - 250: 17(fvec4) CompositeConstruct 248 248 248 248 - 251: 17(fvec4) FDiv 249 250 - Store 227(clip1) 251 - 254: 253(ptr) AccessChain 198 204 252 - 255: 44(fvec2) Load 254 - 256: 17(fvec4) Load 210(clip0) - 257: 44(fvec2) VectorShuffle 256 256 0 1 - 258: 44(fvec2) FMul 257 255 - 259: 147(ptr) AccessChain 210(clip0) 15 - 260: 7(float) CompositeExtract 258 0 - Store 259 260 - 261: 147(ptr) AccessChain 210(clip0) 31 - 262: 7(float) CompositeExtract 258 1 - Store 261 262 - 263: 253(ptr) AccessChain 198 204 252 - 264: 44(fvec2) Load 263 - 265: 17(fvec4) Load 227(clip1) - 266: 44(fvec2) VectorShuffle 265 265 0 1 - 267: 44(fvec2) FMul 266 264 - 268: 147(ptr) AccessChain 227(clip1) 15 - 269: 7(float) CompositeExtract 267 0 - Store 268 269 - 270: 147(ptr) AccessChain 227(clip1) 31 - 271: 7(float) CompositeExtract 267 1 - Store 270 271 - 272: 17(fvec4) Load 210(clip0) - 273: 17(fvec4) Load 227(clip1) - 274: 7(float) ExtInst 2(GLSL.std.450) 67(Distance) 272 273 - 277: 276(ptr) AccessChain 198 204 275 - 278: 7(float) Load 277 - 279: 7(float) FDiv 274 278 - 281: 276(ptr) AccessChain 198 204 280 - 282: 7(float) Load 281 - 283: 7(float) FMul 279 282 - 286: 7(float) ExtInst 2(GLSL.std.450) 43(FClamp) 283 284 285 - ReturnValue 286 + Line 1 65 1 +26(screenSpaceTessFactor(vf4;vf4;): 8(float) Function None 22 + 24(p0): 21(ptr) FunctionParameter + 25(p1): 21(ptr) FunctionParameter + 34: Label + 141(midPoint): 21(ptr) Variable Function + 153(radius): 152(ptr) Variable Function + 164(v0): 21(ptr) Variable Function + 217(clip0): 21(ptr) Variable Function + 235(clip1): 21(ptr) Variable Function + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 28 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 37 24(p0) 40 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 25(p1) 40 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 28 26(screenSpaceTessFactor(vf4;vf4;) + 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 28 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 140 140 16 16 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(midPoint) 40 + 146: 18(fvec4) Load 24(p0) + 147: 18(fvec4) Load 25(p1) + 148: 18(fvec4) FAdd 146 147 + 149: 18(fvec4) VectorTimesScalar 148 145 + Store 141(midPoint) 149 + 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 151 151 16 16 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 154 153(radius) 40 + 157: 18(fvec4) Load 24(p0) + 158: 18(fvec4) Load 25(p1) + 159: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 157 158 + 161: 8(float) FDiv 159 160 + Store 153(radius) 161 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 163 163 16 16 + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 165 164(v0) 40 + 168: 18(fvec4) Load 141(midPoint) + 212: 211(ptr) AccessChain 203 209 210 + 213: 169 Load 212 + 214: 18(fvec4) VectorTimesMatrix 168 213 + Store 164(v0) 214 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 216 216 16 16 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 218 217(clip0) 40 + 221: 18(fvec4) Load 164(v0) + 222: 8(float) Load 153(radius) + 225: 8(float) CompositeExtract 224 0 + 226: 8(float) CompositeExtract 224 1 + 227: 8(float) CompositeExtract 224 2 + 228: 18(fvec4) CompositeConstruct 222 225 226 227 + 229: 18(fvec4) FSub 221 228 + 230: 211(ptr) AccessChain 203 209 209 + 231: 169 Load 230 + 232: 18(fvec4) VectorTimesMatrix 229 231 + Store 217(clip0) 232 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 234 234 16 16 + 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(clip1) 40 + 239: 18(fvec4) Load 164(v0) + 240: 8(float) Load 153(radius) + 241: 8(float) CompositeExtract 224 0 + 242: 8(float) CompositeExtract 224 1 + 243: 8(float) CompositeExtract 224 2 + 244: 18(fvec4) CompositeConstruct 240 241 242 243 + 245: 18(fvec4) FAdd 239 244 + 246: 211(ptr) AccessChain 203 209 209 + 247: 169 Load 246 + 248: 18(fvec4) VectorTimesMatrix 245 247 + Store 235(clip1) 248 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 250 250 16 16 + 251: 152(ptr) AccessChain 217(clip0) 17 + 252: 8(float) Load 251 + 253: 18(fvec4) Load 217(clip0) + 254: 18(fvec4) CompositeConstruct 252 252 252 252 + 255: 18(fvec4) FDiv 253 254 + Store 217(clip0) 255 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 257 257 16 16 + 258: 152(ptr) AccessChain 235(clip1) 17 + 259: 8(float) Load 258 + 260: 18(fvec4) Load 235(clip1) + 261: 18(fvec4) CompositeConstruct 259 259 259 259 + 262: 18(fvec4) FDiv 260 261 + Store 235(clip1) 262 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 264 264 16 16 + 267: 266(ptr) AccessChain 203 209 265 + 268: 45(fvec2) Load 267 + 269: 18(fvec4) Load 217(clip0) + 270: 45(fvec2) VectorShuffle 269 269 0 1 + 271: 45(fvec2) FMul 270 268 + 272: 152(ptr) AccessChain 217(clip0) 16 + 273: 8(float) CompositeExtract 271 0 + Store 272 273 + 274: 152(ptr) AccessChain 217(clip0) 32 + 275: 8(float) CompositeExtract 271 1 + Store 274 275 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 277 277 16 16 + 278: 266(ptr) AccessChain 203 209 265 + 279: 45(fvec2) Load 278 + 280: 18(fvec4) Load 235(clip1) + 281: 45(fvec2) VectorShuffle 280 280 0 1 + 282: 45(fvec2) FMul 281 279 + 283: 152(ptr) AccessChain 235(clip1) 16 + 284: 8(float) CompositeExtract 282 0 + Store 283 284 + 285: 152(ptr) AccessChain 235(clip1) 32 + 286: 8(float) CompositeExtract 282 1 + Store 285 286 + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 288 288 16 16 + 289: 18(fvec4) Load 217(clip0) + 290: 18(fvec4) Load 235(clip1) + 291: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 289 290 + 294: 293(ptr) AccessChain 203 209 292 + 295: 8(float) Load 294 + 296: 8(float) FDiv 291 295 + 298: 293(ptr) AccessChain 203 209 297 + 299: 8(float) Load 298 + 300: 8(float) FMul 296 299 + 303: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 300 301 302 + ReturnValue 303 FunctionEnd -54(frustumCheck(vf4;vf2;): 47(bool) Function None 50 - 52(Pos): 20(ptr) FunctionParameter - 53(inUV): 46(ptr) FunctionParameter - 57: Label - 290(pos): 20(ptr) Variable Function - 333(i): 332(ptr) Variable Function - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 59: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 60 52(Pos) 39 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 53(inUV) 39 - 289: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 54(frustumCheck(vf4;vf2;) - 294: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 291 290(pos) 39 - 295: 17(fvec4) Load 52(Pos) - Store 290(pos) 295 - 306: 296 Load 303(textureHeight) - 315: 307 Load 312(samplerHeight) - 320: 316 SampledImage 306 315 - 321: 44(fvec2) Load 53(inUV) - 322: 17(fvec4) ImageSampleExplicitLod 320 321 Lod 217 - 323: 7(float) CompositeExtract 322 0 - 325: 276(ptr) AccessChain 198 204 324 - 326: 7(float) Load 325 - 327: 7(float) FMul 323 326 - 328: 147(ptr) AccessChain 290(pos) 31 - 329: 7(float) Load 328 - 330: 7(float) FSub 329 327 - 331: 147(ptr) AccessChain 290(pos) 31 - Store 331 330 - 337: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 334 333(i) 39 - Store 333(i) 204 - Branch 338 - 338: Label - LoopMerge 340 341 None - Branch 342 - 342: Label - 343: 201(int) Load 333(i) - 345: 47(bool) SLessThan 343 252 - BranchConditional 345 339 340 - 339: Label - 346: 17(fvec4) Load 290(pos) - 348: 201(int) Load 333(i) - 350: 349(ptr) AccessChain 198 204 347 348 - 351: 17(fvec4) Load 350 - 352: 7(float) Dot 346 351 - 354: 7(float) FAdd 352 353 - 356: 47(bool) FOrdLessThan 354 217 - SelectionMerge 358 None - BranchConditional 356 357 358 - 357: Label - ReturnValue 360 - 358: Label - Branch 341 - 341: Label - 362: 201(int) Load 333(i) - 363: 201(int) IAdd 362 205 - Store 333(i) 363 - Branch 338 - 340: Label - ReturnValue 166 + Line 1 95 1 +55(frustumCheck(vf4;vf2;): 48(bool) Function None 51 + 53(Pos): 21(ptr) FunctionParameter + 54(inUV): 47(ptr) FunctionParameter + 58: Label + 310(pos): 21(ptr) Variable Function + 355(i): 354(ptr) Variable Function + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 61 53(Pos) 40 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 54(inUV) 40 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 55(frustumCheck(vf4;vf2;) + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 309 309 16 16 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 311 310(pos) 40 + 314: 18(fvec4) Load 53(Pos) + Store 310(pos) 314 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 316 316 16 16 + 326: 317 Load 323(textureHeight) + 335: 327 Load 332(samplerHeight) + 340: 336 SampledImage 326 335 + 341: 45(fvec2) Load 54(inUV) + 342: 18(fvec4) ImageSampleExplicitLod 340 341 Lod 223 + 343: 8(float) CompositeExtract 342 0 + 345: 293(ptr) AccessChain 203 209 344 + 346: 8(float) Load 345 + 347: 8(float) FMul 343 346 + 348: 152(ptr) AccessChain 310(pos) 32 + 349: 8(float) Load 348 + 350: 8(float) FSub 349 347 + 351: 152(ptr) AccessChain 310(pos) 32 + Store 351 350 + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 + 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 356 355(i) 40 + Store 355(i) 209 + Branch 359 + 359: Label + 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 + LoopMerge 361 362 None + Branch 365 + 365: Label + 366: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 + 368: 206(int) Load 355(i) + 370: 48(bool) SLessThan 368 265 + BranchConditional 370 360 361 + 360: Label + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 373 373 16 16 + 374: 18(fvec4) Load 310(pos) + 376: 206(int) Load 355(i) + 378: 377(ptr) AccessChain 203 209 375 376 + 379: 18(fvec4) Load 378 + 380: 8(float) Dot 374 379 + 382: 8(float) FAdd 380 381 + 384: 48(bool) FOrdLessThan 382 223 + SelectionMerge 386 None + BranchConditional 384 385 386 + 385: Label + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 391 391 16 16 + ReturnValue 388 + 386: Label + Branch 362 + 362: Label + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 + 395: 206(int) Load 355(i) + 396: 206(int) IAdd 395 210 + Store 355(i) 396 + Branch 359 + 361: Label + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 400 400 16 16 + ReturnValue 171 FunctionEnd -102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):89(ConstantsHSOutput) Function None 99 - 101(patch): 84(ptr) FunctionParameter - 105: Label - 369(output): 368(ptr) Variable Function - 378(param): 20(ptr) Variable Function - 381(param): 46(ptr) Variable Function - 403(param): 20(ptr) Variable Function - 406(param): 20(ptr) Variable Function - 411(param): 20(ptr) Variable Function - 414(param): 20(ptr) Variable Function - 419(param): 20(ptr) Variable Function - 422(param): 20(ptr) Variable Function - 427(param): 20(ptr) Variable Function - 430(param): 20(ptr) Variable Function - 106: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 104 - 107: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 - 110: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 101(patch) 39 - 367: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 104 102(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - 373: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 370 369(output) 39 - Store 369(output) 376 - 379: 20(ptr) AccessChain 101(patch) 204 204 - 380: 17(fvec4) Load 379 - Store 378(param) 380 - 382: 46(ptr) AccessChain 101(patch) 204 377 - 383: 44(fvec2) Load 382 - Store 381(param) 383 - 384: 47(bool) FunctionCall 54(frustumCheck(vf4;vf2;) 378(param) 381(param) - 387: 47(bool) LogicalNot 384 - SelectionMerge 389 None - BranchConditional 387 388 396 - 388: Label - 390: 147(ptr) AccessChain 369(output) 205 204 - Store 390 217 - 391: 147(ptr) AccessChain 369(output) 205 205 - Store 391 217 - 392: 147(ptr) AccessChain 369(output) 204 204 - Store 392 217 - 393: 147(ptr) AccessChain 369(output) 204 205 - Store 393 217 - 394: 147(ptr) AccessChain 369(output) 204 377 - Store 394 217 - 395: 147(ptr) AccessChain 369(output) 204 347 - Store 395 217 - Branch 389 - 396: Label - 397: 276(ptr) AccessChain 198 204 280 - 398: 7(float) Load 397 - 400: 47(bool) FOrdGreaterThan 398 217 - SelectionMerge 402 None - BranchConditional 400 401 447 - 401: Label - 404: 20(ptr) AccessChain 101(patch) 347 204 - 405: 17(fvec4) Load 404 - Store 403(param) 405 - 407: 20(ptr) AccessChain 101(patch) 204 204 - 408: 17(fvec4) Load 407 - Store 406(param) 408 - 409: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 403(param) 406(param) - 410: 147(ptr) AccessChain 369(output) 204 204 - Store 410 409 - 412: 20(ptr) AccessChain 101(patch) 204 204 - 413: 17(fvec4) Load 412 - Store 411(param) 413 - 415: 20(ptr) AccessChain 101(patch) 205 204 - 416: 17(fvec4) Load 415 - Store 414(param) 416 - 417: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 411(param) 414(param) - 418: 147(ptr) AccessChain 369(output) 204 205 - Store 418 417 - 420: 20(ptr) AccessChain 101(patch) 205 204 - 421: 17(fvec4) Load 420 - Store 419(param) 421 - 423: 20(ptr) AccessChain 101(patch) 377 204 - 424: 17(fvec4) Load 423 - Store 422(param) 424 - 425: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 419(param) 422(param) - 426: 147(ptr) AccessChain 369(output) 204 377 - Store 426 425 - 428: 20(ptr) AccessChain 101(patch) 377 204 - 429: 17(fvec4) Load 428 - Store 427(param) 429 - 431: 20(ptr) AccessChain 101(patch) 347 204 - 432: 17(fvec4) Load 431 - Store 430(param) 432 - 433: 7(float) FunctionCall 25(screenSpaceTessFactor(vf4;vf4;) 427(param) 430(param) - 434: 147(ptr) AccessChain 369(output) 204 347 - Store 434 433 - 435: 147(ptr) AccessChain 369(output) 204 204 - 436: 7(float) Load 435 - 437: 147(ptr) AccessChain 369(output) 204 347 - 438: 7(float) Load 437 - 439: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 436 438 142 - 440: 147(ptr) AccessChain 369(output) 205 204 - Store 440 439 - 441: 147(ptr) AccessChain 369(output) 204 377 - 442: 7(float) Load 441 - 443: 147(ptr) AccessChain 369(output) 204 205 - 444: 7(float) Load 443 - 445: 7(float) ExtInst 2(GLSL.std.450) 46(FMix) 442 444 142 - 446: 147(ptr) AccessChain 369(output) 205 205 - Store 446 445 - Branch 402 - 447: Label - 448: 147(ptr) AccessChain 369(output) 205 204 - Store 448 284 - 449: 147(ptr) AccessChain 369(output) 205 205 - Store 449 284 - 450: 147(ptr) AccessChain 369(output) 204 204 - Store 450 284 - 451: 147(ptr) AccessChain 369(output) 204 205 - Store 451 284 - 452: 147(ptr) AccessChain 369(output) 204 377 - Store 452 284 - 453: 147(ptr) AccessChain 369(output) 204 347 - Store 453 284 - Branch 402 - 402: Label - Branch 389 - 389: Label - 454:89(ConstantsHSOutput) Load 369(output) - ReturnValue 454 + Line 1 112 1 +103(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):90(ConstantsHSOutput) Function None 100 + 102(patch): 85(ptr) FunctionParameter + 106: Label + 408(output): 407(ptr) Variable Function + 418(param): 21(ptr) Variable Function + 421(param): 47(ptr) Variable Function + 462(param): 21(ptr) Variable Function + 465(param): 21(ptr) Variable Function + 472(param): 21(ptr) Variable Function + 475(param): 21(ptr) Variable Function + 482(param): 21(ptr) Variable Function + 485(param): 21(ptr) Variable Function + 492(param): 21(ptr) Variable Function + 495(param): 21(ptr) Variable Function + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 109 102(patch) 40 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 105 103(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 406 406 16 16 + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 409 408(output) 40 + Store 408(output) 414 + 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 416 416 16 16 + 419: 21(ptr) AccessChain 102(patch) 209 209 + 420: 18(fvec4) Load 419 + Store 418(param) 420 + 422: 47(ptr) AccessChain 102(patch) 209 417 + 423: 45(fvec2) Load 422 + Store 421(param) 423 + 424: 48(bool) FunctionCall 55(frustumCheck(vf4;vf2;) 418(param) 421(param) + 427: 48(bool) LogicalNot 424 + SelectionMerge 429 None + BranchConditional 427 428 449 + 428: Label + 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 + 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 432 432 16 16 + 433: 152(ptr) AccessChain 408(output) 210 209 + Store 433 223 + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 435 435 16 16 + 436: 152(ptr) AccessChain 408(output) 210 210 + Store 436 223 + 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 438 438 16 16 + 439: 152(ptr) AccessChain 408(output) 209 209 + Store 439 223 + 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 441 441 16 16 + 442: 152(ptr) AccessChain 408(output) 209 210 + Store 442 223 + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 444 444 16 16 + 445: 152(ptr) AccessChain 408(output) 209 417 + Store 445 223 + 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 447 447 16 16 + 448: 152(ptr) AccessChain 408(output) 209 375 + Store 448 223 + Branch 429 + 449: Label + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 + 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 452 452 16 16 + 453: 293(ptr) AccessChain 203 209 297 + 454: 8(float) Load 453 + 456: 48(bool) FOrdGreaterThan 454 223 + SelectionMerge 458 None + BranchConditional 456 457 516 + 457: Label + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 461 461 16 16 + 463: 21(ptr) AccessChain 102(patch) 375 209 + 464: 18(fvec4) Load 463 + Store 462(param) 464 + 466: 21(ptr) AccessChain 102(patch) 209 209 + 467: 18(fvec4) Load 466 + Store 465(param) 467 + 468: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 462(param) 465(param) + 469: 152(ptr) AccessChain 408(output) 209 209 + Store 469 468 + 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 471 471 16 16 + 473: 21(ptr) AccessChain 102(patch) 209 209 + 474: 18(fvec4) Load 473 + Store 472(param) 474 + 476: 21(ptr) AccessChain 102(patch) 210 209 + 477: 18(fvec4) Load 476 + Store 475(param) 477 + 478: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 472(param) 475(param) + 479: 152(ptr) AccessChain 408(output) 209 210 + Store 479 478 + 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 481 481 16 16 + 483: 21(ptr) AccessChain 102(patch) 210 209 + 484: 18(fvec4) Load 483 + Store 482(param) 484 + 486: 21(ptr) AccessChain 102(patch) 417 209 + 487: 18(fvec4) Load 486 + Store 485(param) 487 + 488: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 482(param) 485(param) + 489: 152(ptr) AccessChain 408(output) 209 417 + Store 489 488 + 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 491 491 16 16 + 493: 21(ptr) AccessChain 102(patch) 417 209 + 494: 18(fvec4) Load 493 + Store 492(param) 494 + 496: 21(ptr) AccessChain 102(patch) 375 209 + 497: 18(fvec4) Load 496 + Store 495(param) 497 + 498: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 492(param) 495(param) + 499: 152(ptr) AccessChain 408(output) 209 375 + Store 499 498 + 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 501 501 16 16 + 502: 152(ptr) AccessChain 408(output) 209 209 + 503: 8(float) Load 502 + 504: 152(ptr) AccessChain 408(output) 209 375 + 505: 8(float) Load 504 + 506: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 503 505 145 + 507: 152(ptr) AccessChain 408(output) 210 209 + Store 507 506 + 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 509 509 16 16 + 510: 152(ptr) AccessChain 408(output) 209 417 + 511: 8(float) Load 510 + 512: 152(ptr) AccessChain 408(output) 209 210 + 513: 8(float) Load 512 + 514: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 511 513 145 + 515: 152(ptr) AccessChain 408(output) 210 210 + Store 515 514 + Branch 458 + 516: Label + 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 + 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 519 519 16 16 + 520: 152(ptr) AccessChain 408(output) 210 209 + Store 520 301 + 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 522 522 16 16 + 523: 152(ptr) AccessChain 408(output) 210 210 + Store 523 301 + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 525 525 16 16 + 526: 152(ptr) AccessChain 408(output) 209 209 + Store 526 301 + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 528 528 16 16 + 529: 152(ptr) AccessChain 408(output) 209 210 + Store 529 301 + 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 531 531 16 16 + 532: 152(ptr) AccessChain 408(output) 209 417 + Store 532 301 + 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 534 534 16 16 + 535: 152(ptr) AccessChain 408(output) 209 375 + Store 535 301 + Branch 458 + 458: Label + Branch 429 + 429: Label + 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 + 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 538 538 16 16 + 539:90(ConstantsHSOutput) Load 408(output) + ReturnValue 539 FunctionEnd -125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):112(HSOutput) Function None 121 - 123(patch): 84(ptr) FunctionParameter -124(InvocationID): 111(ptr) FunctionParameter - 128: Label - 459(output): 458(ptr) Variable Function - 129: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 127 - 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 28 15 15 15 15 - 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 131 123(patch) 39 - 135: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 133 124(InvocationID) 39 - 457: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 127 125(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) - 462: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 460 459(output) 39 - Store 459(output) 465 - 466: 10(int) Load 124(InvocationID) - 467: 20(ptr) AccessChain 123(patch) 466 204 - 468: 17(fvec4) Load 467 - 469: 20(ptr) AccessChain 459(output) 204 - Store 469 468 - 470: 10(int) Load 124(InvocationID) - 472: 471(ptr) AccessChain 123(patch) 470 205 - 473: 66(fvec3) Load 472 - 474: 471(ptr) AccessChain 459(output) 205 - Store 474 473 - 475: 10(int) Load 124(InvocationID) - 476: 46(ptr) AccessChain 123(patch) 475 377 - 477: 44(fvec2) Load 476 - 478: 46(ptr) AccessChain 459(output) 377 - Store 478 477 - 479:112(HSOutput) Load 459(output) - ReturnValue 479 + Line 1 158 1 +126(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):113(HSOutput) Function None 122 + 124(patch): 85(ptr) FunctionParameter +125(InvocationID): 112(ptr) FunctionParameter + 129: Label + 547(output): 546(ptr) Variable Function + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 128 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 124(patch) 40 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 134 125(InvocationID) 40 + 542: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 128 126(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 543: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 128 + 544: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 545 545 16 16 + 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 548 547(output) 40 + Store 547(output) 552 + 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 554 554 16 16 + 555: 11(int) Load 125(InvocationID) + 556: 21(ptr) AccessChain 124(patch) 555 209 + 557: 18(fvec4) Load 556 + 558: 21(ptr) AccessChain 547(output) 209 + Store 558 557 + 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 560 560 16 16 + 561: 11(int) Load 125(InvocationID) + 563: 562(ptr) AccessChain 124(patch) 561 210 + 564: 67(fvec3) Load 563 + 565: 562(ptr) AccessChain 547(output) 210 + Store 565 564 + 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 567 567 16 16 + 568: 11(int) Load 125(InvocationID) + 569: 47(ptr) AccessChain 124(patch) 568 417 + 570: 45(fvec2) Load 569 + 571: 47(ptr) AccessChain 547(output) 417 + Store 571 570 + 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 573 573 16 16 + 574:113(HSOutput) Load 547(output) + ReturnValue 574 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 42c0f7188b..d5b571c873 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -1,589 +1,626 @@ spv.debuginfo.hlsl.tese -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 434 +// Id's are bound by 461 Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 5 "main" 325 340 349 358 365 371 411 415 419 422 425 428 431 - ExecutionMode 5 Quads - 9: String "float" - 12: String "uint" - 25: String "TessLevelOuter" - 27: String "" - 31: String "TessLevelInner" - 34: String "ConstantsHSOutput" - 48: String "Pos" - 51: String "Normal" - 55: String "UV" - 59: String "HSOutput" - 67: String "WorldPos" - 77: String "DSOutput" - 84: String "@main" - 90: String "input" - 94: String "TessCoord" - 97: String "patch" - 103: String "output" - 113: String "uv1" - 117: String "int" - 131: String "uv2" - 151: String "n1" - 162: String "n2" - 181: String "pos1" - 192: String "pos2" - 203: String "pos" - 214: String "type.2d.image" - 216: String "@type.2d.image" - 221: String "displacementMapTexture" - 226: String "type.sampler" - 227: String "@type.sampler" - 231: String "displacementMapSampler" - 235: String "type.sampled.image" - 236: String "@type.sampled.image" - 250: String "modelview" - 255: String "lightPos" - 259: String "frustumPlanes" - 262: String "tessellatedEdgeSize" - 266: String "viewportDim" - 270: String "UBO" - 273: String "ubo" - Name 5 "main" - Name 23 "ConstantsHSOutput" - MemberName 23(ConstantsHSOutput) 0 "TessLevelOuter" - MemberName 23(ConstantsHSOutput) 1 "TessLevelInner" - Name 46 "HSOutput" - MemberName 46(HSOutput) 0 "Pos" - MemberName 46(HSOutput) 1 "Normal" - MemberName 46(HSOutput) 2 "UV" - Name 62 "DSOutput" - MemberName 62(DSOutput) 0 "Pos" - MemberName 62(DSOutput) 1 "Normal" - MemberName 62(DSOutput) 2 "UV" - MemberName 62(DSOutput) 3 "ViewVec" - MemberName 62(DSOutput) 4 "LightVec" - MemberName 62(DSOutput) 5 "EyePos" - MemberName 62(DSOutput) 6 "WorldPos" - Name 83 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" - Name 80 "input" - Name 81 "TessCoord" - Name 82 "patch" - Name 101 "output" - Name 111 "uv1" - Name 129 "uv2" - Name 149 "n1" - Name 160 "n2" - Name 179 "pos1" - Name 190 "pos2" - Name 201 "pos" - Name 219 "displacementMapTexture" - Name 229 "displacementMapSampler" - Name 248 "UBO" - MemberName 248(UBO) 0 "projection" - MemberName 248(UBO) 1 "modelview" - MemberName 248(UBO) 2 "lightPos" - MemberName 248(UBO) 3 "frustumPlanes" - MemberName 248(UBO) 4 "displacementFactor" - MemberName 248(UBO) 5 "tessellationFactor" - MemberName 248(UBO) 6 "viewportDim" - MemberName 248(UBO) 7 "tessellatedEdgeSize" - Name 271 "ubo" - MemberName 271(ubo) 0 "ubo" - Name 276 "" - Name 323 "input" - Name 325 "input.TessLevelOuter" - Name 340 "input.TessLevelInner" - Name 347 "TessCoord" - Name 349 "TessCoord" - Name 355 "patch" - Name 358 "patch.Pos" - Name 365 "patch.Normal" - Name 371 "patch.UV" - Name 403 "flattenTemp" - Name 405 "param" - Name 407 "param" - Name 411 "@entryPointOutput.Pos" - Name 415 "@entryPointOutput.Normal" - Name 419 "@entryPointOutput.UV" - Name 422 "@entryPointOutput.ViewVec" - Name 425 "@entryPointOutput.LightVec" - Name 428 "@entryPointOutput.EyePos" - Name 431 "@entryPointOutput.WorldPos" - Decorate 219(displacementMapTexture) DescriptorSet 0 - Decorate 219(displacementMapTexture) Binding 1 - Decorate 229(displacementMapSampler) DescriptorSet 0 - Decorate 229(displacementMapSampler) Binding 1 - Decorate 246 ArrayStride 16 - MemberDecorate 248(UBO) 0 RowMajor - MemberDecorate 248(UBO) 0 Offset 0 - MemberDecorate 248(UBO) 0 MatrixStride 16 - MemberDecorate 248(UBO) 1 RowMajor - MemberDecorate 248(UBO) 1 Offset 64 - MemberDecorate 248(UBO) 1 MatrixStride 16 - MemberDecorate 248(UBO) 2 Offset 128 - MemberDecorate 248(UBO) 3 Offset 144 - MemberDecorate 248(UBO) 4 Offset 240 - MemberDecorate 248(UBO) 5 Offset 244 - MemberDecorate 248(UBO) 6 Offset 248 - MemberDecorate 248(UBO) 7 Offset 256 - MemberDecorate 271(ubo) 0 Offset 0 - Decorate 271(ubo) Block - Decorate 276 DescriptorSet 0 - Decorate 276 Binding 0 - Decorate 325(input.TessLevelOuter) Patch - Decorate 325(input.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 340(input.TessLevelInner) Patch - Decorate 340(input.TessLevelInner) BuiltIn TessLevelInner - Decorate 349(TessCoord) Patch - Decorate 349(TessCoord) BuiltIn TessCoord - Decorate 358(patch.Pos) BuiltIn Position - Decorate 365(patch.Normal) Location 0 - Decorate 371(patch.UV) Location 1 - Decorate 411(@entryPointOutput.Pos) BuiltIn Position - Decorate 415(@entryPointOutput.Normal) Location 0 - Decorate 419(@entryPointOutput.UV) Location 1 - Decorate 422(@entryPointOutput.ViewVec) Location 2 - Decorate 425(@entryPointOutput.LightVec) Location 3 - Decorate 428(@entryPointOutput.EyePos) Location 4 - Decorate 431(@entryPointOutput.WorldPos) Location 5 - 3: TypeVoid - 4: TypeFunction 3 - 7: TypeFloat 32 - 10: TypeInt 32 0 - 13: 10(int) Constant 32 - 14: 10(int) Constant 6 - 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 - 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 - 17: 10(int) Constant 4 - 18: TypeArray 7(float) 17 - 19: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 17 - 20: 10(int) Constant 2 - 21: TypeArray 7(float) 20 - 22: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 8 20 -23(ConstantsHSOutput): TypeStruct 18 21 - 26: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 27 - 28: 10(int) Constant 51 - 29: 10(int) Constant 25 - 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 19 26 28 29 15 15 16 - 32: 10(int) Constant 52 - 30: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 29 15 15 16 - 35: 10(int) Constant 1 - 37: 10(int) Constant 5 - 36: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 35 17 26 37 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 34 35 26 15 15 36 34 15 16 24 30 - 38: TypePointer Function 23(ConstantsHSOutput) - 39: TypeVector 7(float) 2 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 20 - 41: TypePointer Function 39(fvec2) - 42: TypeVector 7(float) 4 - 43: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 17 - 44: TypeVector 7(float) 3 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 - 46(HSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) - 49: 10(int) Constant 44 - 47: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 48 43 26 49 13 15 15 16 - 52: 10(int) Constant 45 - 53: 10(int) Constant 35 - 50: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 51 45 26 52 53 15 15 16 - 56: 10(int) Constant 46 - 57: 10(int) Constant 31 - 54: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 40 26 56 57 15 15 16 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 59 35 26 15 15 36 59 15 16 47 50 54 - 60: TypeArray 46(HSOutput) 17 - 61: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 58 17 - 62(DSOutput): TypeStruct 42(fvec4) 44(fvec3) 39(fvec2) 44(fvec3) 44(fvec3) 44(fvec3) 44(fvec3) - 64: 10(int) Constant 57 - 65: 10(int) Constant 13 - 63: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 48 43 26 64 65 15 15 16 - 68: 10(int) Constant 63 - 69: 10(int) Constant 37 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 - 71: 10(int) Constant 59 - 70: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 40 26 71 57 15 15 16 - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 - 73: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 - 74: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 - 75: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 45 26 68 69 15 15 16 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 77 35 26 15 15 36 77 15 16 63 66 70 72 73 74 75 - 78: TypeFunction 62(DSOutput) 38(ptr) 41(ptr) 60 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 76 33 40 58 - 85: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 26 15 15 36 84 16 15 - 89: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 33 26 15 15 85 17 35 - 92: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 93: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 94 40 26 15 15 85 17 20 - 96: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 97 58 26 15 15 85 17 16 - 100: TypePointer Function 62(DSOutput) - 104: 10(int) Constant 70 - 102: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 103 76 26 104 15 85 17 - 106: 7(float) Constant 0 - 107: 42(fvec4) ConstantComposite 106 106 106 106 - 108: 44(fvec3) ConstantComposite 106 106 106 - 109: 39(fvec2) ConstantComposite 106 106 - 110:62(DSOutput) ConstantComposite 107 108 109 108 108 108 108 - 114: 10(int) Constant 71 - 112: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 40 26 114 15 85 17 - 116: TypeInt 32 1 - 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 117 13 17 15 - 119: 116(int) Constant 0 - 120: 116(int) Constant 2 - 122: 116(int) Constant 1 - 124: TypePointer Function 7(float) - 132: 10(int) Constant 72 - 130: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 131 40 26 132 15 85 17 - 134: 116(int) Constant 3 - 148: TypePointer Function 44(fvec3) - 152: 10(int) Constant 75 - 150: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 151 45 26 152 15 85 17 - 163: 10(int) Constant 76 - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 162 45 26 163 15 85 17 - 178: TypePointer Function 42(fvec4) - 182: 10(int) Constant 80 - 180: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 181 43 26 182 15 85 17 - 193: 10(int) Constant 81 - 191: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 192 43 26 193 15 85 17 - 204: 10(int) Constant 82 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 203 43 26 204 15 85 17 - 212: TypeImage 7(float) 2D sampled format:Unknown - 215: 10(int) Constant 84 - 217: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 213: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 214 15 26 215 15 36 216 217 16 - 218: TypePointer UniformConstant 212 -219(displacementMapTexture): 218(ptr) Variable UniformConstant - 222: 10(int) Constant 8 - 220: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 221 213 26 215 15 36 221 219(displacementMapTexture) 222 - 224: TypeSampler - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 226 35 26 215 15 36 227 217 16 - 228: TypePointer UniformConstant 224 -229(displacementMapSampler): 228(ptr) Variable UniformConstant - 230: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 231 225 26 215 15 36 231 229(displacementMapSampler) 222 - 233: TypeSampledImage 212 - 234: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 235 15 26 215 15 36 236 217 16 - 242: TypeMatrix 42(fvec4) 4 - 244: TypeBool - 245: 244(bool) ConstantTrue - 243: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 43 17 245 - 246: TypeArray 42(fvec4) 14 - 247: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 43 14 - 248(UBO): TypeStruct 242 242 42(fvec4) 246 7(float) 7(float) 39(fvec2) 7(float) - 251: 10(int) Constant 29 - 252: 10(int) Constant 20 - 249: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 243 26 251 252 15 15 16 - 253: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 243 26 251 252 15 15 16 - 256: 10(int) Constant 30 - 257: 10(int) Constant 17 - 254: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 255 43 26 256 257 15 15 16 - 260: 10(int) Constant 22 - 258: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 259 247 26 57 260 15 15 16 - 263: 10(int) Constant 27 - 261: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 8 26 53 263 15 15 16 - 264: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 8 26 53 263 15 15 16 - 267: 10(int) Constant 34 - 265: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 40 26 267 252 15 15 16 - 268: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 8 26 53 263 15 15 16 - 269: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 270 35 26 215 15 36 270 15 16 249 253 254 258 261 264 265 268 - 271(ubo): TypeStruct 248(UBO) - 272: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 273 269 26 69 69 15 15 16 - 274: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 273 35 26 215 15 36 273 15 16 272 - 275: TypePointer Uniform 271(ubo) - 276: 275(ptr) Variable Uniform - 277: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 27 274 26 215 15 36 27 276 222 - 278: 116(int) Constant 4 - 279: TypePointer Uniform 7(float) - 288: TypePointer Uniform 242 - 300: TypePointer Uniform 42(fvec4) - 309: 116(int) Constant 6 - 313: 116(int) Constant 5 - 324: TypePointer Input 18 -325(input.TessLevelOuter): 324(ptr) Variable Input - 326: TypePointer Input 7(float) - 339: TypePointer Input 21 -340(input.TessLevelInner): 339(ptr) Variable Input - 348: TypePointer Input 44(fvec3) - 349(TessCoord): 348(ptr) Variable Input - 354: TypePointer Function 60 - 356: TypeArray 42(fvec4) 17 - 357: TypePointer Input 356 - 358(patch.Pos): 357(ptr) Variable Input - 359: TypePointer Input 42(fvec4) - 363: TypeArray 44(fvec3) 17 - 364: TypePointer Input 363 -365(patch.Normal): 364(ptr) Variable Input - 369: TypeArray 39(fvec2) 17 - 370: TypePointer Input 369 - 371(patch.UV): 370(ptr) Variable Input - 372: TypePointer Input 39(fvec2) - 410: TypePointer Output 42(fvec4) -411(@entryPointOutput.Pos): 410(ptr) Variable Output - 414: TypePointer Output 44(fvec3) -415(@entryPointOutput.Normal): 414(ptr) Variable Output - 418: TypePointer Output 39(fvec2) -419(@entryPointOutput.UV): 418(ptr) Variable Output -422(@entryPointOutput.ViewVec): 414(ptr) Variable Output -425(@entryPointOutput.LightVec): 414(ptr) Variable Output -428(@entryPointOutput.EyePos): 414(ptr) Variable Output -431(@entryPointOutput.WorldPos): 414(ptr) Variable Output - 5(main): 3 Function None 4 - 6: Label - 323(input): 38(ptr) Variable Function - 347(TessCoord): 41(ptr) Variable Function - 355(patch): 354(ptr) Variable Function -403(flattenTemp): 100(ptr) Variable Function - 405(param): 38(ptr) Variable Function - 407(param): 41(ptr) Variable Function - 327: 326(ptr) AccessChain 325(input.TessLevelOuter) 119 - 328: 7(float) Load 327 - 329: 124(ptr) AccessChain 323(input) 119 119 - Store 329 328 - 330: 326(ptr) AccessChain 325(input.TessLevelOuter) 122 - 331: 7(float) Load 330 - 332: 124(ptr) AccessChain 323(input) 119 122 - Store 332 331 - 333: 326(ptr) AccessChain 325(input.TessLevelOuter) 120 - 334: 7(float) Load 333 - 335: 124(ptr) AccessChain 323(input) 119 120 - Store 335 334 - 336: 326(ptr) AccessChain 325(input.TessLevelOuter) 134 - 337: 7(float) Load 336 - 338: 124(ptr) AccessChain 323(input) 119 134 - Store 338 337 - 341: 326(ptr) AccessChain 340(input.TessLevelInner) 119 - 342: 7(float) Load 341 - 343: 124(ptr) AccessChain 323(input) 122 119 - Store 343 342 - 344: 326(ptr) AccessChain 340(input.TessLevelInner) 122 - 345: 7(float) Load 344 - 346: 124(ptr) AccessChain 323(input) 122 122 - Store 346 345 - 350: 44(fvec3) Load 349(TessCoord) - 351: 7(float) CompositeExtract 350 0 - 352: 7(float) CompositeExtract 350 1 - 353: 39(fvec2) CompositeConstruct 351 352 - Store 347(TessCoord) 353 - 360: 359(ptr) AccessChain 358(patch.Pos) 119 - 361: 42(fvec4) Load 360 - 362: 178(ptr) AccessChain 355(patch) 119 119 + EntryPoint TessellationEvaluation 6 "main" 352 367 376 385 392 398 438 442 446 449 452 455 458 + ExecutionMode 6 Quads + 1: String "" + 10: String "float" + 13: String "uint" + 26: String "TessLevelOuter" + 28: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed entry-point main +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed hlsl-offsets +#line 1 +" + 32: String "TessLevelInner" + 35: String "ConstantsHSOutput" + 49: String "Pos" + 52: String "Normal" + 56: String "UV" + 60: String "HSOutput" + 68: String "WorldPos" + 78: String "DSOutput" + 85: String "@main" + 91: String "input" + 95: String "TessCoord" + 98: String "patch" + 107: String "output" + 118: String "uv1" + 121: String "int" + 137: String "uv2" + 160: String "n1" + 172: String "n2" + 194: String "pos1" + 206: String "pos2" + 218: String "pos" + 230: String "type.2d.image" + 231: String "@type.2d.image" + 236: String "displacementMapTexture" + 241: String "type.sampler" + 242: String "@type.sampler" + 246: String "displacementMapSampler" + 250: String "type.sampled.image" + 251: String "@type.sampled.image" + 265: String "modelview" + 270: String "lightPos" + 274: String "frustumPlanes" + 277: String "tessellatedEdgeSize" + 281: String "viewportDim" + 285: String "UBO" + 288: String "ubo" + Name 6 "main" + Name 24 "ConstantsHSOutput" + MemberName 24(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 24(ConstantsHSOutput) 1 "TessLevelInner" + Name 47 "HSOutput" + MemberName 47(HSOutput) 0 "Pos" + MemberName 47(HSOutput) 1 "Normal" + MemberName 47(HSOutput) 2 "UV" + Name 63 "DSOutput" + MemberName 63(DSOutput) 0 "Pos" + MemberName 63(DSOutput) 1 "Normal" + MemberName 63(DSOutput) 2 "UV" + MemberName 63(DSOutput) 3 "ViewVec" + MemberName 63(DSOutput) 4 "LightVec" + MemberName 63(DSOutput) 5 "EyePos" + MemberName 63(DSOutput) 6 "WorldPos" + Name 84 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" + Name 81 "input" + Name 82 "TessCoord" + Name 83 "patch" + Name 105 "output" + Name 116 "uv1" + Name 135 "uv2" + Name 158 "n1" + Name 170 "n2" + Name 192 "pos1" + Name 204 "pos2" + Name 216 "pos" + Name 234 "displacementMapTexture" + Name 244 "displacementMapSampler" + Name 263 "UBO" + MemberName 263(UBO) 0 "projection" + MemberName 263(UBO) 1 "modelview" + MemberName 263(UBO) 2 "lightPos" + MemberName 263(UBO) 3 "frustumPlanes" + MemberName 263(UBO) 4 "displacementFactor" + MemberName 263(UBO) 5 "tessellationFactor" + MemberName 263(UBO) 6 "viewportDim" + MemberName 263(UBO) 7 "tessellatedEdgeSize" + Name 286 "ubo" + MemberName 286(ubo) 0 "ubo" + Name 291 "" + Name 350 "input" + Name 352 "input.TessLevelOuter" + Name 367 "input.TessLevelInner" + Name 374 "TessCoord" + Name 376 "TessCoord" + Name 382 "patch" + Name 385 "patch.Pos" + Name 392 "patch.Normal" + Name 398 "patch.UV" + Name 430 "flattenTemp" + Name 432 "param" + Name 434 "param" + Name 438 "@entryPointOutput.Pos" + Name 442 "@entryPointOutput.Normal" + Name 446 "@entryPointOutput.UV" + Name 449 "@entryPointOutput.ViewVec" + Name 452 "@entryPointOutput.LightVec" + Name 455 "@entryPointOutput.EyePos" + Name 458 "@entryPointOutput.WorldPos" + Decorate 234(displacementMapTexture) DescriptorSet 0 + Decorate 234(displacementMapTexture) Binding 1 + Decorate 244(displacementMapSampler) DescriptorSet 0 + Decorate 244(displacementMapSampler) Binding 1 + Decorate 261 ArrayStride 16 + MemberDecorate 263(UBO) 0 RowMajor + MemberDecorate 263(UBO) 0 Offset 0 + MemberDecorate 263(UBO) 0 MatrixStride 16 + MemberDecorate 263(UBO) 1 RowMajor + MemberDecorate 263(UBO) 1 Offset 64 + MemberDecorate 263(UBO) 1 MatrixStride 16 + MemberDecorate 263(UBO) 2 Offset 128 + MemberDecorate 263(UBO) 3 Offset 144 + MemberDecorate 263(UBO) 4 Offset 240 + MemberDecorate 263(UBO) 5 Offset 244 + MemberDecorate 263(UBO) 6 Offset 248 + MemberDecorate 263(UBO) 7 Offset 256 + MemberDecorate 286(ubo) 0 Offset 0 + Decorate 286(ubo) Block + Decorate 291 DescriptorSet 0 + Decorate 291 Binding 0 + Decorate 352(input.TessLevelOuter) Patch + Decorate 352(input.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 367(input.TessLevelInner) Patch + Decorate 367(input.TessLevelInner) BuiltIn TessLevelInner + Decorate 376(TessCoord) Patch + Decorate 376(TessCoord) BuiltIn TessCoord + Decorate 385(patch.Pos) BuiltIn Position + Decorate 392(patch.Normal) Location 0 + Decorate 398(patch.UV) Location 1 + Decorate 438(@entryPointOutput.Pos) BuiltIn Position + Decorate 442(@entryPointOutput.Normal) Location 0 + Decorate 446(@entryPointOutput.UV) Location 1 + Decorate 449(@entryPointOutput.ViewVec) Location 2 + Decorate 452(@entryPointOutput.LightVec) Location 3 + Decorate 455(@entryPointOutput.EyePos) Location 4 + Decorate 458(@entryPointOutput.WorldPos) Location 5 + 4: TypeVoid + 5: TypeFunction 4 + 8: TypeFloat 32 + 11: TypeInt 32 0 + 14: 11(int) Constant 32 + 15: 11(int) Constant 6 + 16: 11(int) Constant 0 + 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 17: 11(int) Constant 3 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 18: 11(int) Constant 4 + 19: TypeArray 8(float) 18 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 18 + 21: 11(int) Constant 2 + 22: TypeArray 8(float) 21 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 21 +24(ConstantsHSOutput): TypeStruct 19 22 + 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 28 + 29: 11(int) Constant 51 + 30: 11(int) Constant 25 + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 26 20 27 29 30 16 16 17 + 33: 11(int) Constant 52 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 32 23 27 33 30 16 16 17 + 36: 11(int) Constant 1 + 38: 11(int) Constant 5 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 27 38 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 16 16 37 35 16 17 25 31 + 39: TypePointer Function 24(ConstantsHSOutput) + 40: TypeVector 8(float) 2 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 21 + 42: TypePointer Function 40(fvec2) + 43: TypeVector 8(float) 4 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 18 + 45: TypeVector 8(float) 3 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 47(HSOutput): TypeStruct 43(fvec4) 45(fvec3) 40(fvec2) + 50: 11(int) Constant 44 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 44 27 50 14 16 16 17 + 53: 11(int) Constant 45 + 54: 11(int) Constant 35 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 46 27 53 54 16 16 17 + 57: 11(int) Constant 46 + 58: 11(int) Constant 31 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 56 41 27 57 58 16 16 17 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 36 27 16 16 37 60 16 17 48 51 55 + 61: TypeArray 47(HSOutput) 18 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 59 18 + 63(DSOutput): TypeStruct 43(fvec4) 45(fvec3) 40(fvec2) 45(fvec3) 45(fvec3) 45(fvec3) 45(fvec3) + 65: 11(int) Constant 57 + 66: 11(int) Constant 13 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 44 27 65 66 16 16 17 + 69: 11(int) Constant 63 + 70: 11(int) Constant 37 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 + 72: 11(int) Constant 59 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 56 41 27 72 58 16 16 17 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 78 36 27 16 16 37 78 16 17 64 67 71 73 74 75 76 + 79: TypeFunction 63(DSOutput) 39(ptr) 42(ptr) 61 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 77 34 41 59 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 85 80 27 16 16 37 85 17 16 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 34 27 16 16 86 18 36 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 95 41 27 16 16 86 18 21 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 98 59 27 16 16 86 18 17 + 103: 11(int) Constant 70 + 104: TypePointer Function 63(DSOutput) + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 107 77 27 103 16 86 18 + 109: 8(float) Constant 0 + 110: 43(fvec4) ConstantComposite 109 109 109 109 + 111: 45(fvec3) ConstantComposite 109 109 109 + 112: 40(fvec2) ConstantComposite 109 109 + 113:63(DSOutput) ConstantComposite 110 111 112 111 111 111 111 + 115: 11(int) Constant 71 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 118 41 27 115 16 86 18 + 120: TypeInt 32 1 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 121 14 18 16 + 123: 120(int) Constant 0 + 124: 120(int) Constant 2 + 126: 120(int) Constant 1 + 128: TypePointer Function 8(float) + 134: 11(int) Constant 72 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 137 41 27 134 16 86 18 + 139: 120(int) Constant 3 + 147: 11(int) Constant 73 + 156: 11(int) Constant 75 + 157: TypePointer Function 45(fvec3) + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 46 27 156 16 86 18 + 169: 11(int) Constant 76 + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 46 27 169 16 86 18 + 181: 11(int) Constant 77 + 190: 11(int) Constant 80 + 191: TypePointer Function 43(fvec4) + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 194 44 27 190 16 86 18 + 203: 11(int) Constant 81 + 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 206 44 27 203 16 86 18 + 215: 11(int) Constant 82 + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 218 44 27 215 16 86 18 + 227: 11(int) Constant 84 + 228: TypeImage 8(float) 2D sampled format:Unknown + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 230 16 27 227 16 37 231 232 17 + 233: TypePointer UniformConstant 228 +234(displacementMapTexture): 233(ptr) Variable UniformConstant + 237: 11(int) Constant 8 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 229 27 227 16 37 236 234(displacementMapTexture) 237 + 239: TypeSampler + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 241 36 27 227 16 37 242 232 17 + 243: TypePointer UniformConstant 239 +244(displacementMapSampler): 243(ptr) Variable UniformConstant + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 246 240 27 227 16 37 246 244(displacementMapSampler) 237 + 248: TypeSampledImage 228 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 250 16 27 227 16 37 251 232 17 + 257: TypeMatrix 43(fvec4) 4 + 259: TypeBool + 260: 259(bool) ConstantTrue + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 44 18 260 + 261: TypeArray 43(fvec4) 15 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 44 15 + 263(UBO): TypeStruct 257 257 43(fvec4) 261 8(float) 8(float) 40(fvec2) 8(float) + 266: 11(int) Constant 29 + 267: 11(int) Constant 20 + 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 265 258 27 266 267 16 16 17 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 265 258 27 266 267 16 16 17 + 271: 11(int) Constant 30 + 272: 11(int) Constant 17 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 270 44 27 271 272 16 16 17 + 275: 11(int) Constant 22 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 274 262 27 58 275 16 16 17 + 278: 11(int) Constant 27 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 9 27 54 278 16 16 17 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 9 27 54 278 16 16 17 + 282: 11(int) Constant 34 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 281 41 27 282 267 16 16 17 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 9 27 54 278 16 16 17 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 285 36 27 227 16 37 285 16 17 264 268 269 273 276 279 280 283 + 286(ubo): TypeStruct 263(UBO) + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 284 27 70 70 16 16 17 + 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 288 36 27 227 16 37 288 16 17 287 + 290: TypePointer Uniform 286(ubo) + 291: 290(ptr) Variable Uniform + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 289 27 227 16 37 1 291 237 + 293: 120(int) Constant 4 + 294: TypePointer Uniform 8(float) + 303: 11(int) Constant 86 + 305: TypePointer Uniform 257 + 314: 11(int) Constant 89 + 320: 11(int) Constant 90 + 321: TypePointer Uniform 43(fvec4) + 331: 11(int) Constant 91 + 332: 120(int) Constant 6 + 337: 11(int) Constant 92 + 338: 120(int) Constant 5 + 346: 11(int) Constant 93 + 351: TypePointer Input 19 +352(input.TessLevelOuter): 351(ptr) Variable Input + 353: TypePointer Input 8(float) + 366: TypePointer Input 22 +367(input.TessLevelInner): 366(ptr) Variable Input + 375: TypePointer Input 45(fvec3) + 376(TessCoord): 375(ptr) Variable Input + 381: TypePointer Function 61 + 383: TypeArray 43(fvec4) 18 + 384: TypePointer Input 383 + 385(patch.Pos): 384(ptr) Variable Input + 386: TypePointer Input 43(fvec4) + 390: TypeArray 45(fvec3) 18 + 391: TypePointer Input 390 +392(patch.Normal): 391(ptr) Variable Input + 396: TypeArray 40(fvec2) 18 + 397: TypePointer Input 396 + 398(patch.UV): 397(ptr) Variable Input + 399: TypePointer Input 40(fvec2) + 437: TypePointer Output 43(fvec4) +438(@entryPointOutput.Pos): 437(ptr) Variable Output + 441: TypePointer Output 45(fvec3) +442(@entryPointOutput.Normal): 441(ptr) Variable Output + 445: TypePointer Output 40(fvec2) +446(@entryPointOutput.UV): 445(ptr) Variable Output +449(@entryPointOutput.ViewVec): 441(ptr) Variable Output +452(@entryPointOutput.LightVec): 441(ptr) Variable Output +455(@entryPointOutput.EyePos): 441(ptr) Variable Output +458(@entryPointOutput.WorldPos): 441(ptr) Variable Output + Line 1 68 1 + 6(main): 4 Function None 5 + 7: Label + 350(input): 39(ptr) Variable Function + 374(TessCoord): 42(ptr) Variable Function + 382(patch): 381(ptr) Variable Function +430(flattenTemp): 104(ptr) Variable Function + 432(param): 39(ptr) Variable Function + 434(param): 42(ptr) Variable Function + Line 1 68 0 + 354: 353(ptr) AccessChain 352(input.TessLevelOuter) 123 + 355: 8(float) Load 354 + 356: 128(ptr) AccessChain 350(input) 123 123 + Store 356 355 + 357: 353(ptr) AccessChain 352(input.TessLevelOuter) 126 + 358: 8(float) Load 357 + 359: 128(ptr) AccessChain 350(input) 123 126 + Store 359 358 + 360: 353(ptr) AccessChain 352(input.TessLevelOuter) 124 + 361: 8(float) Load 360 + 362: 128(ptr) AccessChain 350(input) 123 124 Store 362 361 - 366: 348(ptr) AccessChain 365(patch.Normal) 119 - 367: 44(fvec3) Load 366 - 368: 148(ptr) AccessChain 355(patch) 119 122 - Store 368 367 - 373: 372(ptr) AccessChain 371(patch.UV) 119 - 374: 39(fvec2) Load 373 - 375: 41(ptr) AccessChain 355(patch) 119 120 - Store 375 374 - 376: 359(ptr) AccessChain 358(patch.Pos) 122 - 377: 42(fvec4) Load 376 - 378: 178(ptr) AccessChain 355(patch) 122 119 - Store 378 377 - 379: 348(ptr) AccessChain 365(patch.Normal) 122 - 380: 44(fvec3) Load 379 - 381: 148(ptr) AccessChain 355(patch) 122 122 - Store 381 380 - 382: 372(ptr) AccessChain 371(patch.UV) 122 - 383: 39(fvec2) Load 382 - 384: 41(ptr) AccessChain 355(patch) 122 120 - Store 384 383 - 385: 359(ptr) AccessChain 358(patch.Pos) 120 - 386: 42(fvec4) Load 385 - 387: 178(ptr) AccessChain 355(patch) 120 119 - Store 387 386 - 388: 348(ptr) AccessChain 365(patch.Normal) 120 - 389: 44(fvec3) Load 388 - 390: 148(ptr) AccessChain 355(patch) 120 122 - Store 390 389 - 391: 372(ptr) AccessChain 371(patch.UV) 120 - 392: 39(fvec2) Load 391 - 393: 41(ptr) AccessChain 355(patch) 120 120 - Store 393 392 - 394: 359(ptr) AccessChain 358(patch.Pos) 134 - 395: 42(fvec4) Load 394 - 396: 178(ptr) AccessChain 355(patch) 134 119 - Store 396 395 - 397: 348(ptr) AccessChain 365(patch.Normal) 134 - 398: 44(fvec3) Load 397 - 399: 148(ptr) AccessChain 355(patch) 134 122 - Store 399 398 - 400: 372(ptr) AccessChain 371(patch.UV) 134 - 401: 39(fvec2) Load 400 - 402: 41(ptr) AccessChain 355(patch) 134 120 + 363: 353(ptr) AccessChain 352(input.TessLevelOuter) 139 + 364: 8(float) Load 363 + 365: 128(ptr) AccessChain 350(input) 123 139 + Store 365 364 + 368: 353(ptr) AccessChain 367(input.TessLevelInner) 123 + 369: 8(float) Load 368 + 370: 128(ptr) AccessChain 350(input) 126 123 + Store 370 369 + 371: 353(ptr) AccessChain 367(input.TessLevelInner) 126 + 372: 8(float) Load 371 + 373: 128(ptr) AccessChain 350(input) 126 126 + Store 373 372 + 377: 45(fvec3) Load 376(TessCoord) + 378: 8(float) CompositeExtract 377 0 + 379: 8(float) CompositeExtract 377 1 + 380: 40(fvec2) CompositeConstruct 378 379 + Store 374(TessCoord) 380 + 387: 386(ptr) AccessChain 385(patch.Pos) 123 + 388: 43(fvec4) Load 387 + 389: 191(ptr) AccessChain 382(patch) 123 123 + Store 389 388 + 393: 375(ptr) AccessChain 392(patch.Normal) 123 + 394: 45(fvec3) Load 393 + 395: 157(ptr) AccessChain 382(patch) 123 126 + Store 395 394 + 400: 399(ptr) AccessChain 398(patch.UV) 123 + 401: 40(fvec2) Load 400 + 402: 42(ptr) AccessChain 382(patch) 123 124 Store 402 401 - 404: 60 Load 355(patch) - 406:23(ConstantsHSOutput) Load 323(input) - Store 405(param) 406 - 408: 39(fvec2) Load 347(TessCoord) - Store 407(param) 408 - 409:62(DSOutput) FunctionCall 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 405(param) 407(param) 404 - Store 403(flattenTemp) 409 - 412: 178(ptr) AccessChain 403(flattenTemp) 119 - 413: 42(fvec4) Load 412 - Store 411(@entryPointOutput.Pos) 413 - 416: 148(ptr) AccessChain 403(flattenTemp) 122 - 417: 44(fvec3) Load 416 - Store 415(@entryPointOutput.Normal) 417 - 420: 41(ptr) AccessChain 403(flattenTemp) 120 - 421: 39(fvec2) Load 420 - Store 419(@entryPointOutput.UV) 421 - 423: 148(ptr) AccessChain 403(flattenTemp) 134 - 424: 44(fvec3) Load 423 - Store 422(@entryPointOutput.ViewVec) 424 - 426: 148(ptr) AccessChain 403(flattenTemp) 278 - 427: 44(fvec3) Load 426 - Store 425(@entryPointOutput.LightVec) 427 - 429: 148(ptr) AccessChain 403(flattenTemp) 313 - 430: 44(fvec3) Load 429 - Store 428(@entryPointOutput.EyePos) 430 - 432: 148(ptr) AccessChain 403(flattenTemp) 309 - 433: 44(fvec3) Load 432 - Store 431(@entryPointOutput.WorldPos) 433 + 403: 386(ptr) AccessChain 385(patch.Pos) 126 + 404: 43(fvec4) Load 403 + 405: 191(ptr) AccessChain 382(patch) 126 123 + Store 405 404 + 406: 375(ptr) AccessChain 392(patch.Normal) 126 + 407: 45(fvec3) Load 406 + 408: 157(ptr) AccessChain 382(patch) 126 126 + Store 408 407 + 409: 399(ptr) AccessChain 398(patch.UV) 126 + 410: 40(fvec2) Load 409 + 411: 42(ptr) AccessChain 382(patch) 126 124 + Store 411 410 + 412: 386(ptr) AccessChain 385(patch.Pos) 124 + 413: 43(fvec4) Load 412 + 414: 191(ptr) AccessChain 382(patch) 124 123 + Store 414 413 + 415: 375(ptr) AccessChain 392(patch.Normal) 124 + 416: 45(fvec3) Load 415 + 417: 157(ptr) AccessChain 382(patch) 124 126 + Store 417 416 + 418: 399(ptr) AccessChain 398(patch.UV) 124 + 419: 40(fvec2) Load 418 + 420: 42(ptr) AccessChain 382(patch) 124 124 + Store 420 419 + 421: 386(ptr) AccessChain 385(patch.Pos) 139 + 422: 43(fvec4) Load 421 + 423: 191(ptr) AccessChain 382(patch) 139 123 + Store 423 422 + 424: 375(ptr) AccessChain 392(patch.Normal) 139 + 425: 45(fvec3) Load 424 + 426: 157(ptr) AccessChain 382(patch) 139 126 + Store 426 425 + 427: 399(ptr) AccessChain 398(patch.UV) 139 + 428: 40(fvec2) Load 427 + 429: 42(ptr) AccessChain 382(patch) 139 124 + Store 429 428 + 431: 61 Load 382(patch) + 433:24(ConstantsHSOutput) Load 350(input) + Store 432(param) 433 + 435: 40(fvec2) Load 374(TessCoord) + Store 434(param) 435 + 436:63(DSOutput) FunctionCall 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 432(param) 434(param) 431 + Store 430(flattenTemp) 436 + 439: 191(ptr) AccessChain 430(flattenTemp) 123 + 440: 43(fvec4) Load 439 + Store 438(@entryPointOutput.Pos) 440 + 443: 157(ptr) AccessChain 430(flattenTemp) 126 + 444: 45(fvec3) Load 443 + Store 442(@entryPointOutput.Normal) 444 + 447: 42(ptr) AccessChain 430(flattenTemp) 124 + 448: 40(fvec2) Load 447 + Store 446(@entryPointOutput.UV) 448 + 450: 157(ptr) AccessChain 430(flattenTemp) 139 + 451: 45(fvec3) Load 450 + Store 449(@entryPointOutput.ViewVec) 451 + 453: 157(ptr) AccessChain 430(flattenTemp) 293 + 454: 45(fvec3) Load 453 + Store 452(@entryPointOutput.LightVec) 454 + 456: 157(ptr) AccessChain 430(flattenTemp) 338 + 457: 45(fvec3) Load 456 + Store 455(@entryPointOutput.EyePos) 457 + 459: 157(ptr) AccessChain 430(flattenTemp) 332 + 460: 45(fvec3) Load 459 + Store 458(@entryPointOutput.WorldPos) 460 Return FunctionEnd -83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):62(DSOutput) Function None 78 - 80(input): 38(ptr) FunctionParameter - 81(TessCoord): 41(ptr) FunctionParameter - 82(patch): 60 FunctionParameter - 86: Label - 101(output): 100(ptr) Variable Function - 111(uv1): 41(ptr) Variable Function - 129(uv2): 41(ptr) Variable Function - 149(n1): 148(ptr) Variable Function - 160(n2): 148(ptr) Variable Function - 179(pos1): 178(ptr) Variable Function - 190(pos2): 178(ptr) Variable Function - 201(pos): 178(ptr) Variable Function - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 88: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 15 15 15 15 - 91: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 80(input) 92 - 95: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 93 81(TessCoord) 92 - 98: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 96 82(patch) 92 - 99: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 83(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) - 105: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 102 101(output) 92 - Store 101(output) 110 - 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 112 111(uv1) 92 - 121: 39(fvec2) CompositeExtract 82(patch) 0 2 - 123: 39(fvec2) CompositeExtract 82(patch) 1 2 - 125: 124(ptr) AccessChain 81(TessCoord) 15 - 126: 7(float) Load 125 - 127: 39(fvec2) CompositeConstruct 126 126 - 128: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 121 123 127 - Store 111(uv1) 128 - 133: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 130 129(uv2) 92 - 135: 39(fvec2) CompositeExtract 82(patch) 3 2 - 136: 39(fvec2) CompositeExtract 82(patch) 2 2 - 137: 124(ptr) AccessChain 81(TessCoord) 15 - 138: 7(float) Load 137 - 139: 39(fvec2) CompositeConstruct 138 138 - 140: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 135 136 139 - Store 129(uv2) 140 - 141: 39(fvec2) Load 111(uv1) - 142: 39(fvec2) Load 129(uv2) - 143: 124(ptr) AccessChain 81(TessCoord) 35 - 144: 7(float) Load 143 - 145: 39(fvec2) CompositeConstruct 144 144 - 146: 39(fvec2) ExtInst 2(GLSL.std.450) 46(FMix) 141 142 145 - 147: 41(ptr) AccessChain 101(output) 120 - Store 147 146 - 153: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 150 149(n1) 92 - 154: 44(fvec3) CompositeExtract 82(patch) 0 1 - 155: 44(fvec3) CompositeExtract 82(patch) 1 1 - 156: 124(ptr) AccessChain 81(TessCoord) 15 - 157: 7(float) Load 156 - 158: 44(fvec3) CompositeConstruct 157 157 157 - 159: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 154 155 158 - Store 149(n1) 159 - 164: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 161 160(n2) 92 - 165: 44(fvec3) CompositeExtract 82(patch) 3 1 - 166: 44(fvec3) CompositeExtract 82(patch) 2 1 - 167: 124(ptr) AccessChain 81(TessCoord) 15 - 168: 7(float) Load 167 - 169: 44(fvec3) CompositeConstruct 168 168 168 - 170: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 165 166 169 - Store 160(n2) 170 - 171: 44(fvec3) Load 149(n1) - 172: 44(fvec3) Load 160(n2) - 173: 124(ptr) AccessChain 81(TessCoord) 35 - 174: 7(float) Load 173 - 175: 44(fvec3) CompositeConstruct 174 174 174 - 176: 44(fvec3) ExtInst 2(GLSL.std.450) 46(FMix) 171 172 175 - 177: 148(ptr) AccessChain 101(output) 122 - Store 177 176 - 183: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 180 179(pos1) 92 - 184: 42(fvec4) CompositeExtract 82(patch) 0 0 - 185: 42(fvec4) CompositeExtract 82(patch) 1 0 - 186: 124(ptr) AccessChain 81(TessCoord) 15 - 187: 7(float) Load 186 - 188: 42(fvec4) CompositeConstruct 187 187 187 187 - 189: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 184 185 188 - Store 179(pos1) 189 - 194: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 191 190(pos2) 92 - 195: 42(fvec4) CompositeExtract 82(patch) 3 0 - 196: 42(fvec4) CompositeExtract 82(patch) 2 0 - 197: 124(ptr) AccessChain 81(TessCoord) 15 - 198: 7(float) Load 197 - 199: 42(fvec4) CompositeConstruct 198 198 198 198 - 200: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 195 196 199 - Store 190(pos2) 200 - 205: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 202 201(pos) 92 - 206: 42(fvec4) Load 179(pos1) - 207: 42(fvec4) Load 190(pos2) - 208: 124(ptr) AccessChain 81(TessCoord) 35 - 209: 7(float) Load 208 - 210: 42(fvec4) CompositeConstruct 209 209 209 209 - 211: 42(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 206 207 210 - Store 201(pos) 211 - 223: 212 Load 219(displacementMapTexture) - 232: 224 Load 229(displacementMapSampler) - 237: 233 SampledImage 223 232 - 238: 41(ptr) AccessChain 101(output) 120 - 239: 39(fvec2) Load 238 - 240: 42(fvec4) ImageSampleExplicitLod 237 239 Lod 106 - 241: 7(float) CompositeExtract 240 0 - 280: 279(ptr) AccessChain 276 119 278 - 281: 7(float) Load 280 - 282: 7(float) FMul 241 281 - 283: 124(ptr) AccessChain 201(pos) 35 - 284: 7(float) Load 283 - 285: 7(float) FSub 284 282 - 286: 124(ptr) AccessChain 201(pos) 35 - Store 286 285 - 287: 42(fvec4) Load 201(pos) - 289: 288(ptr) AccessChain 276 119 122 - 290: 242 Load 289 - 291: 42(fvec4) VectorTimesMatrix 287 290 - 292: 288(ptr) AccessChain 276 119 119 - 293: 242 Load 292 - 294: 42(fvec4) VectorTimesMatrix 291 293 - 295: 178(ptr) AccessChain 101(output) 119 - Store 295 294 - 296: 42(fvec4) Load 201(pos) - 297: 44(fvec3) VectorShuffle 296 296 0 1 2 - 298: 44(fvec3) FNegate 297 - 299: 148(ptr) AccessChain 101(output) 134 - Store 299 298 - 301: 300(ptr) AccessChain 276 119 120 - 302: 42(fvec4) Load 301 - 303: 44(fvec3) VectorShuffle 302 302 0 1 2 - 304: 148(ptr) AccessChain 101(output) 134 - 305: 44(fvec3) Load 304 - 306: 44(fvec3) FAdd 303 305 - 307: 44(fvec3) ExtInst 2(GLSL.std.450) 69(Normalize) 306 - 308: 148(ptr) AccessChain 101(output) 278 - Store 308 307 - 310: 42(fvec4) Load 201(pos) - 311: 44(fvec3) VectorShuffle 310 310 0 1 2 - 312: 148(ptr) AccessChain 101(output) 309 + Line 1 68 1 +84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):63(DSOutput) Function None 79 + 81(input): 39(ptr) FunctionParameter + 82(TessCoord): 42(ptr) FunctionParameter + 83(patch): 61 FunctionParameter + 87: Label + 105(output): 104(ptr) Variable Function + 116(uv1): 42(ptr) Variable Function + 135(uv2): 42(ptr) Variable Function + 158(n1): 157(ptr) Variable Function + 170(n2): 157(ptr) Variable Function + 192(pos1): 191(ptr) Variable Function + 204(pos2): 191(ptr) Variable Function + 216(pos): 191(ptr) Variable Function + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 86 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 16 16 16 16 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 81(input) 93 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 94 82(TessCoord) 93 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 97 83(patch) 93 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 86 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 86 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 103 103 16 16 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 106 105(output) 93 + Store 105(output) 113 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 115 115 16 16 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 117 116(uv1) 93 + 125: 40(fvec2) CompositeExtract 83(patch) 0 2 + 127: 40(fvec2) CompositeExtract 83(patch) 1 2 + 129: 128(ptr) AccessChain 82(TessCoord) 16 + 130: 8(float) Load 129 + 131: 40(fvec2) CompositeConstruct 130 130 + 132: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 125 127 131 + Store 116(uv1) 132 + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 134 134 16 16 + 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 135(uv2) 93 + 140: 40(fvec2) CompositeExtract 83(patch) 3 2 + 141: 40(fvec2) CompositeExtract 83(patch) 2 2 + 142: 128(ptr) AccessChain 82(TessCoord) 16 + 143: 8(float) Load 142 + 144: 40(fvec2) CompositeConstruct 143 143 + 145: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 140 141 144 + Store 135(uv2) 145 + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 147 147 16 16 + 148: 40(fvec2) Load 116(uv1) + 149: 40(fvec2) Load 135(uv2) + 150: 128(ptr) AccessChain 82(TessCoord) 36 + 151: 8(float) Load 150 + 152: 40(fvec2) CompositeConstruct 151 151 + 153: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 148 149 152 + 154: 42(ptr) AccessChain 105(output) 124 + Store 154 153 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 156 156 16 16 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(n1) 93 + 162: 45(fvec3) CompositeExtract 83(patch) 0 1 + 163: 45(fvec3) CompositeExtract 83(patch) 1 1 + 164: 128(ptr) AccessChain 82(TessCoord) 16 + 165: 8(float) Load 164 + 166: 45(fvec3) CompositeConstruct 165 165 165 + 167: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 162 163 166 + Store 158(n1) 167 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 169 169 16 16 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 171 170(n2) 93 + 174: 45(fvec3) CompositeExtract 83(patch) 3 1 + 175: 45(fvec3) CompositeExtract 83(patch) 2 1 + 176: 128(ptr) AccessChain 82(TessCoord) 16 + 177: 8(float) Load 176 + 178: 45(fvec3) CompositeConstruct 177 177 177 + 179: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 174 175 178 + Store 170(n2) 179 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 181 181 16 16 + 182: 45(fvec3) Load 158(n1) + 183: 45(fvec3) Load 170(n2) + 184: 128(ptr) AccessChain 82(TessCoord) 36 + 185: 8(float) Load 184 + 186: 45(fvec3) CompositeConstruct 185 185 185 + 187: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 182 183 186 + 188: 157(ptr) AccessChain 105(output) 126 + Store 188 187 + 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 190 190 16 16 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 193 192(pos1) 93 + 196: 43(fvec4) CompositeExtract 83(patch) 0 0 + 197: 43(fvec4) CompositeExtract 83(patch) 1 0 + 198: 128(ptr) AccessChain 82(TessCoord) 16 + 199: 8(float) Load 198 + 200: 43(fvec4) CompositeConstruct 199 199 199 199 + 201: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 196 197 200 + Store 192(pos1) 201 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 203 203 16 16 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 205 204(pos2) 93 + 208: 43(fvec4) CompositeExtract 83(patch) 3 0 + 209: 43(fvec4) CompositeExtract 83(patch) 2 0 + 210: 128(ptr) AccessChain 82(TessCoord) 16 + 211: 8(float) Load 210 + 212: 43(fvec4) CompositeConstruct 211 211 211 211 + 213: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 208 209 212 + Store 204(pos2) 213 + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 215 215 16 16 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 217 216(pos) 93 + 220: 43(fvec4) Load 192(pos1) + 221: 43(fvec4) Load 204(pos2) + 222: 128(ptr) AccessChain 82(TessCoord) 36 + 223: 8(float) Load 222 + 224: 43(fvec4) CompositeConstruct 223 223 223 223 + 225: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 220 221 224 + Store 216(pos) 225 + 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 227 227 16 16 + 238: 228 Load 234(displacementMapTexture) + 247: 239 Load 244(displacementMapSampler) + 252: 248 SampledImage 238 247 + 253: 42(ptr) AccessChain 105(output) 124 + 254: 40(fvec2) Load 253 + 255: 43(fvec4) ImageSampleExplicitLod 252 254 Lod 109 + 256: 8(float) CompositeExtract 255 0 + 295: 294(ptr) AccessChain 291 123 293 + 296: 8(float) Load 295 + 297: 8(float) FMul 256 296 + 298: 128(ptr) AccessChain 216(pos) 36 + 299: 8(float) Load 298 + 300: 8(float) FSub 299 297 + 301: 128(ptr) AccessChain 216(pos) 36 + Store 301 300 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 303 303 16 16 + 304: 43(fvec4) Load 216(pos) + 306: 305(ptr) AccessChain 291 123 126 + 307: 257 Load 306 + 308: 43(fvec4) VectorTimesMatrix 304 307 + 309: 305(ptr) AccessChain 291 123 123 + 310: 257 Load 309 + 311: 43(fvec4) VectorTimesMatrix 308 310 + 312: 191(ptr) AccessChain 105(output) 123 Store 312 311 - 314: 42(fvec4) Load 201(pos) - 315: 288(ptr) AccessChain 276 119 122 - 316: 242 Load 315 - 317: 42(fvec4) VectorTimesMatrix 314 316 - 318: 44(fvec3) VectorShuffle 317 317 0 1 2 - 319: 148(ptr) AccessChain 101(output) 313 - Store 319 318 - 320:62(DSOutput) Load 101(output) - ReturnValue 320 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 314 314 16 16 + 315: 43(fvec4) Load 216(pos) + 316: 45(fvec3) VectorShuffle 315 315 0 1 2 + 317: 45(fvec3) FNegate 316 + 318: 157(ptr) AccessChain 105(output) 139 + Store 318 317 + 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 320 320 16 16 + 322: 321(ptr) AccessChain 291 123 124 + 323: 43(fvec4) Load 322 + 324: 45(fvec3) VectorShuffle 323 323 0 1 2 + 325: 157(ptr) AccessChain 105(output) 139 + 326: 45(fvec3) Load 325 + 327: 45(fvec3) FAdd 324 326 + 328: 45(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 327 + 329: 157(ptr) AccessChain 105(output) 293 + Store 329 328 + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 331 331 16 16 + 333: 43(fvec4) Load 216(pos) + 334: 45(fvec3) VectorShuffle 333 333 0 1 2 + 335: 157(ptr) AccessChain 105(output) 332 + Store 335 334 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 337 337 16 16 + 339: 43(fvec4) Load 216(pos) + 340: 305(ptr) AccessChain 291 123 126 + 341: 257 Load 340 + 342: 43(fvec4) VectorTimesMatrix 339 341 + 343: 45(fvec3) VectorShuffle 342 342 0 1 2 + 344: 157(ptr) AccessChain 105(output) 338 + Store 344 343 + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 346 346 16 16 + 347:63(DSOutput) Load 105(output) + ReturnValue 347 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 77c3fb20ee..2fa1774b71 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -1,574 +1,642 @@ spv.debuginfo.hlsl.vert -Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 437 +// Id's are bound by 495 Capability Shader Extension "SPV_KHR_non_semantic_info" - 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" - 2: ExtInstImport "GLSL.std.450" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 5 "main" 386 389 393 396 399 402 406 410 418 422 425 428 431 434 - 9: String "float" - 12: String "uint" - 23: String "int" - 28: String "instanceRot" - 30: String "" - 35: String "UV" - 42: String "instanceScale" - 46: String "instanceTexIndex" - 50: String "VSInput" - 59: String "Pos" - 63: String "LightVec" - 70: String "VSOutput" - 75: String "@main" - 81: String "input" - 88: String "output" - 116: String "s" - 128: String "modelview" - 133: String "lightPos" - 137: String "globSpeed" - 141: String "UBO" - 144: String "ubo" - 159: String "c" - 173: String "mx" - 200: String "my" - 226: String "mz" - 240: String "rotMat" - 264: String "gRotMat" - 284: String "locPos" - 297: String "pos" - 355: String "lPos" - Name 5 "main" - Name 26 "VSInput" - MemberName 26(VSInput) 0 "Pos" - MemberName 26(VSInput) 1 "Normal" - MemberName 26(VSInput) 2 "UV" - MemberName 26(VSInput) 3 "Color" - MemberName 26(VSInput) 4 "instancePos" - MemberName 26(VSInput) 5 "instanceRot" - MemberName 26(VSInput) 6 "instanceScale" - MemberName 26(VSInput) 7 "instanceTexIndex" - Name 57 "VSOutput" - MemberName 57(VSOutput) 0 "Pos" - MemberName 57(VSOutput) 1 "Normal" - MemberName 57(VSOutput) 2 "Color" - MemberName 57(VSOutput) 3 "UV" - MemberName 57(VSOutput) 4 "ViewVec" - MemberName 57(VSOutput) 5 "LightVec" - Name 74 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" - Name 73 "input" - Name 86 "output" - Name 114 "s" - Name 126 "UBO" - MemberName 126(UBO) 0 "projection" - MemberName 126(UBO) 1 "modelview" - MemberName 126(UBO) 2 "lightPos" - MemberName 126(UBO) 3 "locSpeed" - MemberName 126(UBO) 4 "globSpeed" - Name 142 "ubo" - MemberName 142(ubo) 0 "ubo" - Name 148 "" - Name 157 "c" - Name 171 "mx" - Name 198 "my" - Name 224 "mz" - Name 238 "rotMat" - Name 262 "gRotMat" - Name 282 "locPos" - Name 295 "pos" - Name 353 "lPos" - Name 384 "input" - Name 386 "input.Pos" - Name 389 "input.Normal" - Name 393 "input.UV" - Name 396 "input.Color" - Name 399 "input.instancePos" - Name 402 "input.instanceRot" - Name 406 "input.instanceScale" - Name 410 "input.instanceTexIndex" - Name 413 "flattenTemp" - Name 414 "param" - Name 418 "@entryPointOutput.Pos" - Name 422 "@entryPointOutput.Normal" - Name 425 "@entryPointOutput.Color" - Name 428 "@entryPointOutput.UV" - Name 431 "@entryPointOutput.ViewVec" - Name 434 "@entryPointOutput.LightVec" - MemberDecorate 126(UBO) 0 RowMajor - MemberDecorate 126(UBO) 0 Offset 0 - MemberDecorate 126(UBO) 0 MatrixStride 16 - MemberDecorate 126(UBO) 1 RowMajor - MemberDecorate 126(UBO) 1 Offset 64 - MemberDecorate 126(UBO) 1 MatrixStride 16 - MemberDecorate 126(UBO) 2 Offset 128 - MemberDecorate 126(UBO) 3 Offset 144 - MemberDecorate 126(UBO) 4 Offset 148 - MemberDecorate 142(ubo) 0 Offset 0 - Decorate 142(ubo) Block - Decorate 148 DescriptorSet 0 - Decorate 148 Binding 0 - Decorate 386(input.Pos) Location 0 - Decorate 389(input.Normal) Location 1 - Decorate 393(input.UV) Location 2 - Decorate 396(input.Color) Location 3 - Decorate 399(input.instancePos) Location 4 - Decorate 402(input.instanceRot) Location 5 - Decorate 406(input.instanceScale) Location 6 - Decorate 410(input.instanceTexIndex) Location 7 - Decorate 418(@entryPointOutput.Pos) BuiltIn Position - Decorate 422(@entryPointOutput.Normal) Location 0 - Decorate 425(@entryPointOutput.Color) Location 1 - Decorate 428(@entryPointOutput.UV) Location 2 - Decorate 431(@entryPointOutput.ViewVec) Location 3 - Decorate 434(@entryPointOutput.LightVec) Location 4 - 3: TypeVoid - 4: TypeFunction 3 - 7: TypeFloat 32 - 10: TypeInt 32 0 - 13: 10(int) Constant 32 - 14: 10(int) Constant 6 - 15: 10(int) Constant 0 - 11: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 13 14 15 - 16: 10(int) Constant 3 - 8: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 13 16 15 - 17: TypeVector 7(float) 3 - 18: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 16 - 19: TypeVector 7(float) 2 - 20: 10(int) Constant 2 - 21: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 20 - 22: TypeInt 32 1 - 25: 10(int) Constant 4 - 24: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 23 13 25 15 - 26(VSInput): TypeStruct 17(fvec3) 17(fvec3) 19(fvec2) 17(fvec3) 17(fvec3) 17(fvec3) 7(float) 22(int) - 29: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 0 30 - 31: 10(int) Constant 35 - 32: 10(int) Constant 40 - 27: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 - 33: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 - 36: 10(int) Constant 30 - 37: 10(int) Constant 31 - 34: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 35 21 29 36 37 15 15 16 - 38: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 - 39: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 - 40: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 28 18 29 31 32 15 15 16 - 43: 10(int) Constant 36 - 44: 10(int) Constant 41 - 41: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 42 8 29 43 44 15 15 16 - 47: 10(int) Constant 37 - 48: 10(int) Constant 42 - 45: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 24 29 47 48 15 15 16 - 51: 10(int) Constant 1 - 53: 10(int) Constant 5 - 52: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 51 25 29 53 - 49: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 50 51 29 15 15 52 50 15 16 27 33 34 38 39 40 41 45 - 54: TypePointer Function 26(VSInput) - 55: TypeVector 7(float) 4 - 56: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 25 - 57(VSOutput): TypeStruct 55(fvec4) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) 17(fvec3) - 60: 10(int) Constant 53 - 61: 10(int) Constant 13 - 58: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 56 29 60 61 15 15 16 - 64: 10(int) Constant 58 - 62: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 - 65: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 - 66: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 - 67: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 - 68: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 18 29 64 47 15 15 16 - 69: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 70 51 29 15 15 52 70 15 16 58 62 65 66 67 68 - 71: TypeFunction 57(VSOutput) 54(ptr) - 72: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 16 69 49 - 76: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 75 72 29 15 15 52 75 16 15 - 80: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 81 49 29 15 15 76 25 51 - 83: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 85: TypePointer Function 57(VSOutput) - 89: 10(int) Constant 63 - 87: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 69 29 89 15 76 25 - 91: 7(float) Constant 0 - 92: 55(fvec4) ConstantComposite 91 91 91 91 - 93: 17(fvec3) ConstantComposite 91 91 91 - 94:57(VSOutput) ConstantComposite 92 93 93 93 93 93 - 95: 22(int) Constant 2 - 96: 22(int) Constant 3 - 97: TypePointer Function 17(fvec3) - 101: TypePointer Function 19(fvec2) - 104: 22(int) Constant 7 - 105: TypePointer Function 22(int) - 113: TypePointer Function 7(float) - 117: 10(int) Constant 68 - 115: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 116 8 29 117 15 76 25 - 119: 22(int) Constant 5 - 122: TypeMatrix 55(fvec4) 4 - 124: TypeBool - 125: 124(bool) ConstantTrue - 123: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 56 25 125 - 126(UBO): TypeStruct 122 122 55(fvec4) 7(float) 7(float) - 129: 10(int) Constant 43 - 130: 10(int) Constant 20 - 127: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 128 123 29 129 130 15 15 16 - 131: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 128 123 29 129 130 15 15 16 - 134: 10(int) Constant 44 - 135: 10(int) Constant 17 - 132: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 133 56 29 134 135 15 15 16 - 138: 10(int) Constant 46 - 136: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 8 29 138 135 15 15 16 - 139: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 8 29 138 135 15 15 16 - 140: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 141 51 29 117 15 52 141 15 16 127 131 132 136 139 - 142(ubo): TypeStruct 126(UBO) - 145: 10(int) Constant 49 - 143: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 140 29 145 47 15 15 16 - 146: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 144 51 29 117 15 52 144 15 16 143 - 147: TypePointer Uniform 142(ubo) - 148: 147(ptr) Variable Uniform - 150: 10(int) Constant 8 - 149: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 30 146 29 117 15 52 30 148 150 - 151: 22(int) Constant 0 - 152: TypePointer Uniform 7(float) - 160: 10(int) Constant 69 - 158: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 8 29 160 15 76 25 - 168: TypeMatrix 17(fvec3) 3 - 169: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 18 16 125 - 170: TypePointer Function 168 - 174: 10(int) Constant 71 - 172: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 173 169 29 174 15 76 25 - 181: 7(float) Constant 1065353216 - 201: 10(int) Constant 79 - 199: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 169 29 201 15 76 25 - 227: 10(int) Constant 87 - 225: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 226 169 29 227 15 76 25 - 241: 10(int) Constant 91 - 239: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 240 169 29 241 15 76 25 - 250: 22(int) Constant 4 - 261: TypePointer Function 122 - 265: 10(int) Constant 96 - 263: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 264 123 29 265 15 76 25 - 271: TypePointer Function 55(fvec4) - 273: 22(int) Constant 1 - 274: 55(fvec4) ConstantComposite 91 181 91 91 - 280: 55(fvec4) ConstantComposite 91 91 91 181 - 285: 10(int) Constant 101 - 283: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 56 29 285 15 76 25 - 298: 10(int) Constant 102 - 296: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 56 29 298 15 76 25 - 302: 22(int) Constant 6 - 316: TypePointer Uniform 122 - 356: 10(int) Constant 108 - 354: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 355 18 29 356 15 76 25 - 358: TypePointer Uniform 55(fvec4) - 385: TypePointer Input 17(fvec3) - 386(input.Pos): 385(ptr) Variable Input -389(input.Normal): 385(ptr) Variable Input - 392: TypePointer Input 19(fvec2) - 393(input.UV): 392(ptr) Variable Input -396(input.Color): 385(ptr) Variable Input -399(input.instancePos): 385(ptr) Variable Input -402(input.instanceRot): 385(ptr) Variable Input - 405: TypePointer Input 7(float) -406(input.instanceScale): 405(ptr) Variable Input - 409: TypePointer Input 22(int) -410(input.instanceTexIndex): 409(ptr) Variable Input - 417: TypePointer Output 55(fvec4) -418(@entryPointOutput.Pos): 417(ptr) Variable Output - 421: TypePointer Output 17(fvec3) -422(@entryPointOutput.Normal): 421(ptr) Variable Output -425(@entryPointOutput.Color): 421(ptr) Variable Output -428(@entryPointOutput.UV): 421(ptr) Variable Output -431(@entryPointOutput.ViewVec): 421(ptr) Variable Output -434(@entryPointOutput.LightVec): 421(ptr) Variable Output - 5(main): 3 Function None 4 - 6: Label - 384(input): 54(ptr) Variable Function -413(flattenTemp): 85(ptr) Variable Function - 414(param): 54(ptr) Variable Function - 387: 17(fvec3) Load 386(input.Pos) - 388: 97(ptr) AccessChain 384(input) 151 - Store 388 387 - 390: 17(fvec3) Load 389(input.Normal) - 391: 97(ptr) AccessChain 384(input) 273 - Store 391 390 - 394: 19(fvec2) Load 393(input.UV) - 395: 101(ptr) AccessChain 384(input) 95 - Store 395 394 - 397: 17(fvec3) Load 396(input.Color) - 398: 97(ptr) AccessChain 384(input) 96 - Store 398 397 - 400: 17(fvec3) Load 399(input.instancePos) - 401: 97(ptr) AccessChain 384(input) 250 - Store 401 400 - 403: 17(fvec3) Load 402(input.instanceRot) - 404: 97(ptr) AccessChain 384(input) 119 - Store 404 403 - 407: 7(float) Load 406(input.instanceScale) - 408: 113(ptr) AccessChain 384(input) 302 - Store 408 407 - 411: 22(int) Load 410(input.instanceTexIndex) - 412: 105(ptr) AccessChain 384(input) 104 - Store 412 411 - 415: 26(VSInput) Load 384(input) - Store 414(param) 415 - 416:57(VSOutput) FunctionCall 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 414(param) - Store 413(flattenTemp) 416 - 419: 271(ptr) AccessChain 413(flattenTemp) 151 - 420: 55(fvec4) Load 419 - Store 418(@entryPointOutput.Pos) 420 - 423: 97(ptr) AccessChain 413(flattenTemp) 273 - 424: 17(fvec3) Load 423 - Store 422(@entryPointOutput.Normal) 424 - 426: 97(ptr) AccessChain 413(flattenTemp) 95 - 427: 17(fvec3) Load 426 - Store 425(@entryPointOutput.Color) 427 - 429: 97(ptr) AccessChain 413(flattenTemp) 96 - 430: 17(fvec3) Load 429 - Store 428(@entryPointOutput.UV) 430 - 432: 97(ptr) AccessChain 413(flattenTemp) 250 - 433: 17(fvec3) Load 432 - Store 431(@entryPointOutput.ViewVec) 433 - 435: 97(ptr) AccessChain 413(flattenTemp) 119 - 436: 17(fvec3) Load 435 - Store 434(@entryPointOutput.LightVec) 436 + EntryPoint Vertex 6 "main" 444 447 451 454 457 460 464 468 476 480 483 486 489 492 + 1: String "" + 10: String "float" + 13: String "uint" + 24: String "int" + 29: String "instanceRot" + 31: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed entry-point main +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed hlsl-offsets +#line 1 +" + 36: String "UV" + 43: String "instanceScale" + 47: String "instanceTexIndex" + 51: String "VSInput" + 60: String "Pos" + 64: String "LightVec" + 71: String "VSOutput" + 76: String "@main" + 82: String "input" + 92: String "output" + 125: String "s" + 136: String "modelview" + 141: String "lightPos" + 145: String "globSpeed" + 149: String "UBO" + 152: String "ubo" + 169: String "c" + 184: String "mx" + 219: String "my" + 253: String "mz" + 273: String "rotMat" + 302: String "gRotMat" + 329: String "locPos" + 343: String "pos" + 408: String "lPos" + Name 6 "main" + Name 27 "VSInput" + MemberName 27(VSInput) 0 "Pos" + MemberName 27(VSInput) 1 "Normal" + MemberName 27(VSInput) 2 "UV" + MemberName 27(VSInput) 3 "Color" + MemberName 27(VSInput) 4 "instancePos" + MemberName 27(VSInput) 5 "instanceRot" + MemberName 27(VSInput) 6 "instanceScale" + MemberName 27(VSInput) 7 "instanceTexIndex" + Name 58 "VSOutput" + MemberName 58(VSOutput) 0 "Pos" + MemberName 58(VSOutput) 1 "Normal" + MemberName 58(VSOutput) 2 "Color" + MemberName 58(VSOutput) 3 "UV" + MemberName 58(VSOutput) 4 "ViewVec" + MemberName 58(VSOutput) 5 "LightVec" + Name 75 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" + Name 74 "input" + Name 90 "output" + Name 123 "s" + Name 134 "UBO" + MemberName 134(UBO) 0 "projection" + MemberName 134(UBO) 1 "modelview" + MemberName 134(UBO) 2 "lightPos" + MemberName 134(UBO) 3 "locSpeed" + MemberName 134(UBO) 4 "globSpeed" + Name 150 "ubo" + MemberName 150(ubo) 0 "ubo" + Name 156 "" + Name 167 "c" + Name 182 "mx" + Name 217 "my" + Name 251 "mz" + Name 271 "rotMat" + Name 300 "gRotMat" + Name 327 "locPos" + Name 341 "pos" + Name 406 "lPos" + Name 442 "input" + Name 444 "input.Pos" + Name 447 "input.Normal" + Name 451 "input.UV" + Name 454 "input.Color" + Name 457 "input.instancePos" + Name 460 "input.instanceRot" + Name 464 "input.instanceScale" + Name 468 "input.instanceTexIndex" + Name 471 "flattenTemp" + Name 472 "param" + Name 476 "@entryPointOutput.Pos" + Name 480 "@entryPointOutput.Normal" + Name 483 "@entryPointOutput.Color" + Name 486 "@entryPointOutput.UV" + Name 489 "@entryPointOutput.ViewVec" + Name 492 "@entryPointOutput.LightVec" + MemberDecorate 134(UBO) 0 RowMajor + MemberDecorate 134(UBO) 0 Offset 0 + MemberDecorate 134(UBO) 0 MatrixStride 16 + MemberDecorate 134(UBO) 1 RowMajor + MemberDecorate 134(UBO) 1 Offset 64 + MemberDecorate 134(UBO) 1 MatrixStride 16 + MemberDecorate 134(UBO) 2 Offset 128 + MemberDecorate 134(UBO) 3 Offset 144 + MemberDecorate 134(UBO) 4 Offset 148 + MemberDecorate 150(ubo) 0 Offset 0 + Decorate 150(ubo) Block + Decorate 156 DescriptorSet 0 + Decorate 156 Binding 0 + Decorate 444(input.Pos) Location 0 + Decorate 447(input.Normal) Location 1 + Decorate 451(input.UV) Location 2 + Decorate 454(input.Color) Location 3 + Decorate 457(input.instancePos) Location 4 + Decorate 460(input.instanceRot) Location 5 + Decorate 464(input.instanceScale) Location 6 + Decorate 468(input.instanceTexIndex) Location 7 + Decorate 476(@entryPointOutput.Pos) BuiltIn Position + Decorate 480(@entryPointOutput.Normal) Location 0 + Decorate 483(@entryPointOutput.Color) Location 1 + Decorate 486(@entryPointOutput.UV) Location 2 + Decorate 489(@entryPointOutput.ViewVec) Location 3 + Decorate 492(@entryPointOutput.LightVec) Location 4 + 4: TypeVoid + 5: TypeFunction 4 + 8: TypeFloat 32 + 11: TypeInt 32 0 + 14: 11(int) Constant 32 + 15: 11(int) Constant 6 + 16: 11(int) Constant 0 + 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 17: 11(int) Constant 3 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 18: TypeVector 8(float) 3 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 20: TypeVector 8(float) 2 + 21: 11(int) Constant 2 + 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 21 + 23: TypeInt 32 1 + 26: 11(int) Constant 4 + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 14 26 16 + 27(VSInput): TypeStruct 18(fvec3) 18(fvec3) 20(fvec2) 18(fvec3) 18(fvec3) 18(fvec3) 8(float) 23(int) + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 31 + 32: 11(int) Constant 35 + 33: 11(int) Constant 40 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 37: 11(int) Constant 30 + 38: 11(int) Constant 31 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 36 22 30 37 38 16 16 17 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 44: 11(int) Constant 36 + 45: 11(int) Constant 41 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 43 9 30 44 45 16 16 17 + 48: 11(int) Constant 37 + 49: 11(int) Constant 42 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 25 30 48 49 16 16 17 + 52: 11(int) Constant 1 + 54: 11(int) Constant 5 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 52 26 30 54 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 16 16 53 51 16 17 28 34 35 39 40 41 42 46 + 55: TypePointer Function 27(VSInput) + 56: TypeVector 8(float) 4 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 26 + 58(VSOutput): TypeStruct 56(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) + 61: 11(int) Constant 53 + 62: 11(int) Constant 13 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 60 57 30 61 62 16 16 17 + 65: 11(int) Constant 58 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 71 52 30 16 16 53 71 16 17 59 63 66 67 68 69 + 72: TypeFunction 58(VSOutput) 55(ptr) + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 70 50 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 76 73 30 16 16 53 76 17 16 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 50 30 16 16 77 26 52 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 88: 11(int) Constant 63 + 89: TypePointer Function 58(VSOutput) + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 92 70 30 88 16 77 26 + 94: 8(float) Constant 0 + 95: 56(fvec4) ConstantComposite 94 94 94 94 + 96: 18(fvec3) ConstantComposite 94 94 94 + 97:58(VSOutput) ConstantComposite 95 96 96 96 96 96 + 99: 11(int) Constant 64 + 100: 23(int) Constant 2 + 101: 23(int) Constant 3 + 102: TypePointer Function 18(fvec3) + 107: 11(int) Constant 65 + 108: TypePointer Function 20(fvec2) + 111: 23(int) Constant 7 + 112: TypePointer Function 23(int) + 121: 11(int) Constant 68 + 122: TypePointer Function 8(float) + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 9 30 121 16 77 26 + 127: 23(int) Constant 5 + 130: TypeMatrix 56(fvec4) 4 + 132: TypeBool + 133: 132(bool) ConstantTrue + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 57 26 133 + 134(UBO): TypeStruct 130 130 56(fvec4) 8(float) 8(float) + 137: 11(int) Constant 43 + 138: 11(int) Constant 20 + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 136 131 30 137 138 16 16 17 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 136 131 30 137 138 16 16 17 + 142: 11(int) Constant 44 + 143: 11(int) Constant 17 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 141 57 30 142 143 16 16 17 + 146: 11(int) Constant 46 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 9 30 146 143 16 16 17 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 9 30 146 143 16 16 17 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 149 52 30 121 16 53 149 16 17 135 139 140 144 147 + 150(ubo): TypeStruct 134(UBO) + 153: 11(int) Constant 49 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 148 30 153 48 16 16 17 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 52 30 121 16 53 152 16 17 151 + 155: TypePointer Uniform 150(ubo) + 156: 155(ptr) Variable Uniform + 158: 11(int) Constant 8 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 154 30 121 16 53 1 156 158 + 159: 23(int) Constant 0 + 160: TypePointer Uniform 8(float) + 166: 11(int) Constant 69 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 169 9 30 166 16 77 26 + 178: 11(int) Constant 71 + 179: TypeMatrix 18(fvec3) 3 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 133 + 181: TypePointer Function 179 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 184 180 30 178 16 77 26 + 190: 11(int) Constant 72 + 193: 8(float) Constant 1065353216 + 200: 11(int) Constant 76 + 208: 11(int) Constant 77 + 216: 11(int) Constant 79 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 219 180 30 216 16 77 26 + 225: 11(int) Constant 81 + 234: 11(int) Constant 84 + 242: 11(int) Constant 85 + 250: 11(int) Constant 87 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 253 180 30 250 16 77 26 + 256: 11(int) Constant 88 + 261: 11(int) Constant 89 + 270: 11(int) Constant 91 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 180 30 270 16 77 26 + 281: 11(int) Constant 94 + 284: 23(int) Constant 4 + 290: 11(int) Constant 95 + 298: 11(int) Constant 96 + 299: TypePointer Function 130 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 302 131 30 298 16 77 26 + 308: TypePointer Function 56(fvec4) + 311: 11(int) Constant 97 + 312: 23(int) Constant 1 + 313: 56(fvec4) ConstantComposite 94 193 94 94 + 316: 11(int) Constant 98 + 322: 11(int) Constant 99 + 323: 56(fvec4) ConstantComposite 94 94 94 193 + 326: 11(int) Constant 101 + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 329 57 30 326 16 77 26 + 340: 11(int) Constant 102 + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 343 57 30 340 16 77 26 + 347: 23(int) Constant 6 + 359: 11(int) Constant 104 + 363: TypePointer Uniform 130 + 372: 11(int) Constant 105 + 391: 11(int) Constant 107 + 405: 11(int) Constant 108 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 408 19 30 405 16 77 26 + 410: TypePointer Uniform 56(fvec4) + 425: 11(int) Constant 109 + 432: 11(int) Constant 110 + 438: 11(int) Constant 111 + 443: TypePointer Input 18(fvec3) + 444(input.Pos): 443(ptr) Variable Input +447(input.Normal): 443(ptr) Variable Input + 450: TypePointer Input 20(fvec2) + 451(input.UV): 450(ptr) Variable Input +454(input.Color): 443(ptr) Variable Input +457(input.instancePos): 443(ptr) Variable Input +460(input.instanceRot): 443(ptr) Variable Input + 463: TypePointer Input 8(float) +464(input.instanceScale): 463(ptr) Variable Input + 467: TypePointer Input 23(int) +468(input.instanceTexIndex): 467(ptr) Variable Input + 475: TypePointer Output 56(fvec4) +476(@entryPointOutput.Pos): 475(ptr) Variable Output + 479: TypePointer Output 18(fvec3) +480(@entryPointOutput.Normal): 479(ptr) Variable Output +483(@entryPointOutput.Color): 479(ptr) Variable Output +486(@entryPointOutput.UV): 479(ptr) Variable Output +489(@entryPointOutput.ViewVec): 479(ptr) Variable Output +492(@entryPointOutput.LightVec): 479(ptr) Variable Output + Line 1 62 1 + 6(main): 4 Function None 5 + 7: Label + 442(input): 55(ptr) Variable Function +471(flattenTemp): 89(ptr) Variable Function + 472(param): 55(ptr) Variable Function + Line 1 62 0 + 445: 18(fvec3) Load 444(input.Pos) + 446: 102(ptr) AccessChain 442(input) 159 + Store 446 445 + 448: 18(fvec3) Load 447(input.Normal) + 449: 102(ptr) AccessChain 442(input) 312 + Store 449 448 + 452: 20(fvec2) Load 451(input.UV) + 453: 108(ptr) AccessChain 442(input) 100 + Store 453 452 + 455: 18(fvec3) Load 454(input.Color) + 456: 102(ptr) AccessChain 442(input) 101 + Store 456 455 + 458: 18(fvec3) Load 457(input.instancePos) + 459: 102(ptr) AccessChain 442(input) 284 + Store 459 458 + 461: 18(fvec3) Load 460(input.instanceRot) + 462: 102(ptr) AccessChain 442(input) 127 + Store 462 461 + 465: 8(float) Load 464(input.instanceScale) + 466: 122(ptr) AccessChain 442(input) 347 + Store 466 465 + 469: 23(int) Load 468(input.instanceTexIndex) + 470: 112(ptr) AccessChain 442(input) 111 + Store 470 469 + 473: 27(VSInput) Load 442(input) + Store 472(param) 473 + 474:58(VSOutput) FunctionCall 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 472(param) + Store 471(flattenTemp) 474 + 477: 308(ptr) AccessChain 471(flattenTemp) 159 + 478: 56(fvec4) Load 477 + Store 476(@entryPointOutput.Pos) 478 + 481: 102(ptr) AccessChain 471(flattenTemp) 312 + 482: 18(fvec3) Load 481 + Store 480(@entryPointOutput.Normal) 482 + 484: 102(ptr) AccessChain 471(flattenTemp) 100 + 485: 18(fvec3) Load 484 + Store 483(@entryPointOutput.Color) 485 + 487: 102(ptr) AccessChain 471(flattenTemp) 101 + 488: 18(fvec3) Load 487 + Store 486(@entryPointOutput.UV) 488 + 490: 102(ptr) AccessChain 471(flattenTemp) 284 + 491: 18(fvec3) Load 490 + Store 489(@entryPointOutput.ViewVec) 491 + 493: 102(ptr) AccessChain 471(flattenTemp) 127 + 494: 18(fvec3) Load 493 + Store 492(@entryPointOutput.LightVec) 494 Return FunctionEnd -74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):57(VSOutput) Function None 71 - 73(input): 54(ptr) FunctionParameter - 77: Label - 86(output): 85(ptr) Variable Function - 114(s): 113(ptr) Variable Function - 157(c): 113(ptr) Variable Function - 171(mx): 170(ptr) Variable Function - 198(my): 170(ptr) Variable Function - 224(mz): 170(ptr) Variable Function - 238(rotMat): 170(ptr) Variable Function - 262(gRotMat): 261(ptr) Variable Function - 282(locPos): 271(ptr) Variable Function - 295(pos): 271(ptr) Variable Function - 353(lPos): 97(ptr) Variable Function - 78: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 76 - 79: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 15 15 15 15 - 82: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 80 73(input) 83 - 84: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 76 74(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) - 90: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 86(output) 83 - Store 86(output) 94 - 98: 97(ptr) AccessChain 73(input) 96 - 99: 17(fvec3) Load 98 - 100: 97(ptr) AccessChain 86(output) 95 - Store 100 99 - 102: 101(ptr) AccessChain 73(input) 95 - 103: 19(fvec2) Load 102 - 106: 105(ptr) AccessChain 73(input) 104 - 107: 22(int) Load 106 - 108: 7(float) ConvertSToF 107 - 109: 7(float) CompositeExtract 103 0 - 110: 7(float) CompositeExtract 103 1 - 111: 17(fvec3) CompositeConstruct 109 110 108 - 112: 97(ptr) AccessChain 86(output) 96 - Store 112 111 - 118: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 115 114(s) 83 - 120: 113(ptr) AccessChain 73(input) 119 15 - 121: 7(float) Load 120 - 153: 152(ptr) AccessChain 148 151 96 - 154: 7(float) Load 153 - 155: 7(float) FAdd 121 154 - 156: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 155 - Store 114(s) 156 - 161: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(c) 83 - 162: 113(ptr) AccessChain 73(input) 119 15 - 163: 7(float) Load 162 - 164: 152(ptr) AccessChain 148 151 96 - 165: 7(float) Load 164 - 166: 7(float) FAdd 163 165 - 167: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 166 - Store 157(c) 167 - 175: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 172 171(mx) 83 - 176: 7(float) Load 157(c) - 177: 7(float) Load 114(s) - 178: 7(float) FNegate 177 - 179: 7(float) Load 114(s) - 180: 7(float) Load 157(c) - 182: 17(fvec3) CompositeConstruct 176 178 91 - 183: 17(fvec3) CompositeConstruct 179 180 91 - 184: 17(fvec3) CompositeConstruct 91 91 181 - 185: 168 CompositeConstruct 182 183 184 - Store 171(mx) 185 - 186: 113(ptr) AccessChain 73(input) 119 51 - 187: 7(float) Load 186 - 188: 152(ptr) AccessChain 148 151 96 - 189: 7(float) Load 188 - 190: 7(float) FAdd 187 189 - 191: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 190 - Store 114(s) 191 - 192: 113(ptr) AccessChain 73(input) 119 51 - 193: 7(float) Load 192 - 194: 152(ptr) AccessChain 148 151 96 - 195: 7(float) Load 194 - 196: 7(float) FAdd 193 195 - 197: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 196 - Store 157(c) 197 - 202: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(my) 83 - 203: 7(float) Load 157(c) - 204: 7(float) Load 114(s) - 205: 7(float) FNegate 204 - 206: 7(float) Load 114(s) - 207: 7(float) Load 157(c) - 208: 17(fvec3) CompositeConstruct 203 91 205 - 209: 17(fvec3) CompositeConstruct 91 181 91 - 210: 17(fvec3) CompositeConstruct 206 91 207 - 211: 168 CompositeConstruct 208 209 210 - Store 198(my) 211 - 212: 113(ptr) AccessChain 73(input) 119 20 - 213: 7(float) Load 212 - 214: 152(ptr) AccessChain 148 151 96 - 215: 7(float) Load 214 - 216: 7(float) FAdd 213 215 - 217: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 216 - Store 114(s) 217 - 218: 113(ptr) AccessChain 73(input) 119 20 - 219: 7(float) Load 218 - 220: 152(ptr) AccessChain 148 151 96 - 221: 7(float) Load 220 - 222: 7(float) FAdd 219 221 - 223: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 222 - Store 157(c) 223 - 228: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 225 224(mz) 83 - 229: 7(float) Load 157(c) - 230: 7(float) Load 114(s) - 231: 7(float) FNegate 230 - 232: 7(float) Load 114(s) - 233: 7(float) Load 157(c) - 234: 17(fvec3) CompositeConstruct 181 91 91 - 235: 17(fvec3) CompositeConstruct 91 229 231 - 236: 17(fvec3) CompositeConstruct 91 232 233 - 237: 168 CompositeConstruct 234 235 236 - Store 224(mz) 237 - 242: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 239 238(rotMat) 83 - 243: 168 Load 171(mx) - 244: 168 Load 198(my) - 245: 168 MatrixTimesMatrix 243 244 - 246: 168 Load 224(mz) - 247: 168 MatrixTimesMatrix 245 246 - Store 238(rotMat) 247 - 248: 113(ptr) AccessChain 73(input) 119 51 - 249: 7(float) Load 248 - 251: 152(ptr) AccessChain 148 151 250 - 252: 7(float) Load 251 - 253: 7(float) FAdd 249 252 - 254: 7(float) ExtInst 2(GLSL.std.450) 13(Sin) 253 - Store 114(s) 254 - 255: 113(ptr) AccessChain 73(input) 119 51 - 256: 7(float) Load 255 - 257: 152(ptr) AccessChain 148 151 250 - 258: 7(float) Load 257 - 259: 7(float) FAdd 256 258 - 260: 7(float) ExtInst 2(GLSL.std.450) 14(Cos) 259 - Store 157(c) 260 - 266: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 263 262(gRotMat) 83 - 267: 7(float) Load 157(c) - 268: 7(float) Load 114(s) - 269: 7(float) FNegate 268 - 270: 55(fvec4) CompositeConstruct 267 91 269 91 - 272: 271(ptr) AccessChain 262(gRotMat) 151 - Store 272 270 - 275: 271(ptr) AccessChain 262(gRotMat) 273 - Store 275 274 - 276: 7(float) Load 114(s) - 277: 7(float) Load 157(c) - 278: 55(fvec4) CompositeConstruct 276 91 277 91 - 279: 271(ptr) AccessChain 262(gRotMat) 95 - Store 279 278 - 281: 271(ptr) AccessChain 262(gRotMat) 96 - Store 281 280 - 286: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(locPos) 83 - 287: 97(ptr) AccessChain 73(input) 151 - 288: 17(fvec3) Load 287 - 289: 168 Load 238(rotMat) - 290: 17(fvec3) VectorTimesMatrix 288 289 - 291: 7(float) CompositeExtract 290 0 - 292: 7(float) CompositeExtract 290 1 - 293: 7(float) CompositeExtract 290 2 - 294: 55(fvec4) CompositeConstruct 291 292 293 181 - Store 282(locPos) 294 - 299: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 296 295(pos) 83 - 300: 55(fvec4) Load 282(locPos) - 301: 17(fvec3) VectorShuffle 300 300 0 1 2 - 303: 113(ptr) AccessChain 73(input) 302 - 304: 7(float) Load 303 - 305: 17(fvec3) VectorTimesScalar 301 304 - 306: 97(ptr) AccessChain 73(input) 250 - 307: 17(fvec3) Load 306 - 308: 17(fvec3) FAdd 305 307 - 309: 7(float) CompositeExtract 308 0 - 310: 7(float) CompositeExtract 308 1 - 311: 7(float) CompositeExtract 308 2 - 312: 55(fvec4) CompositeConstruct 309 310 311 181 - Store 295(pos) 312 - 313: 55(fvec4) Load 295(pos) - 314: 122 Load 262(gRotMat) - 315: 55(fvec4) VectorTimesMatrix 313 314 - 317: 316(ptr) AccessChain 148 151 273 - 318: 122 Load 317 - 319: 55(fvec4) VectorTimesMatrix 315 318 - 320: 316(ptr) AccessChain 148 151 151 - 321: 122 Load 320 - 322: 55(fvec4) VectorTimesMatrix 319 321 - 323: 271(ptr) AccessChain 86(output) 151 - Store 323 322 - 324: 97(ptr) AccessChain 73(input) 273 - 325: 17(fvec3) Load 324 - 326: 168 Load 238(rotMat) - 327: 17(fvec3) VectorTimesMatrix 325 326 - 328: 122 Load 262(gRotMat) - 329: 316(ptr) AccessChain 148 151 273 - 330: 122 Load 329 - 331: 122 MatrixTimesMatrix 328 330 - 332: 55(fvec4) CompositeExtract 331 0 - 333: 17(fvec3) VectorShuffle 332 332 0 1 2 - 334: 55(fvec4) CompositeExtract 331 1 - 335: 17(fvec3) VectorShuffle 334 334 0 1 2 - 336: 55(fvec4) CompositeExtract 331 2 - 337: 17(fvec3) VectorShuffle 336 336 0 1 2 - 338: 168 CompositeConstruct 333 335 337 - 339: 17(fvec3) VectorTimesMatrix 327 338 - 340: 97(ptr) AccessChain 86(output) 273 - Store 340 339 - 341: 97(ptr) AccessChain 73(input) 151 - 342: 17(fvec3) Load 341 - 343: 97(ptr) AccessChain 73(input) 250 - 344: 17(fvec3) Load 343 - 345: 17(fvec3) FAdd 342 344 - 346: 7(float) CompositeExtract 345 0 - 347: 7(float) CompositeExtract 345 1 - 348: 7(float) CompositeExtract 345 2 - 349: 55(fvec4) CompositeConstruct 346 347 348 181 - 350: 316(ptr) AccessChain 148 151 273 - 351: 122 Load 350 - 352: 55(fvec4) VectorTimesMatrix 349 351 - Store 295(pos) 352 - 357: 3 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 354 353(lPos) 83 - 359: 358(ptr) AccessChain 148 151 95 - 360: 55(fvec4) Load 359 - 361: 17(fvec3) VectorShuffle 360 360 0 1 2 - 362: 316(ptr) AccessChain 148 151 273 - 363: 122 Load 362 - 364: 55(fvec4) CompositeExtract 363 0 - 365: 17(fvec3) VectorShuffle 364 364 0 1 2 - 366: 55(fvec4) CompositeExtract 363 1 - 367: 17(fvec3) VectorShuffle 366 366 0 1 2 - 368: 55(fvec4) CompositeExtract 363 2 - 369: 17(fvec3) VectorShuffle 368 368 0 1 2 - 370: 168 CompositeConstruct 365 367 369 - 371: 17(fvec3) VectorTimesMatrix 361 370 - Store 353(lPos) 371 - 372: 17(fvec3) Load 353(lPos) - 373: 55(fvec4) Load 295(pos) - 374: 17(fvec3) VectorShuffle 373 373 0 1 2 - 375: 17(fvec3) FSub 372 374 - 376: 97(ptr) AccessChain 86(output) 119 - Store 376 375 - 377: 55(fvec4) Load 295(pos) - 378: 17(fvec3) VectorShuffle 377 377 0 1 2 - 379: 17(fvec3) FNegate 378 - 380: 97(ptr) AccessChain 86(output) 250 - Store 380 379 - 381:57(VSOutput) Load 86(output) - ReturnValue 381 + Line 1 62 1 +75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):58(VSOutput) Function None 72 + 74(input): 55(ptr) FunctionParameter + 78: Label + 90(output): 89(ptr) Variable Function + 123(s): 122(ptr) Variable Function + 167(c): 122(ptr) Variable Function + 182(mx): 181(ptr) Variable Function + 217(my): 181(ptr) Variable Function + 251(mz): 181(ptr) Variable Function + 271(rotMat): 181(ptr) Variable Function + 300(gRotMat): 299(ptr) Variable Function + 327(locPos): 308(ptr) Variable Function + 341(pos): 308(ptr) Variable Function + 406(lPos): 102(ptr) Variable Function + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 16 16 16 16 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 81 74(input) 84 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 77 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 88 88 16 16 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 91 90(output) 84 + Store 90(output) 97 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 99 99 16 16 + 103: 102(ptr) AccessChain 74(input) 101 + 104: 18(fvec3) Load 103 + 105: 102(ptr) AccessChain 90(output) 100 + Store 105 104 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 107 107 16 16 + 109: 108(ptr) AccessChain 74(input) 100 + 110: 20(fvec2) Load 109 + 113: 112(ptr) AccessChain 74(input) 111 + 114: 23(int) Load 113 + 115: 8(float) ConvertSToF 114 + 116: 8(float) CompositeExtract 110 0 + 117: 8(float) CompositeExtract 110 1 + 118: 18(fvec3) CompositeConstruct 116 117 115 + 119: 102(ptr) AccessChain 90(output) 101 + Store 119 118 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 121 121 16 16 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(s) 84 + 128: 122(ptr) AccessChain 74(input) 127 16 + 129: 8(float) Load 128 + 161: 160(ptr) AccessChain 156 159 101 + 162: 8(float) Load 161 + 163: 8(float) FAdd 129 162 + 164: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 163 + Store 123(s) 164 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 166 166 16 16 + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 168 167(c) 84 + 171: 122(ptr) AccessChain 74(input) 127 16 + 172: 8(float) Load 171 + 173: 160(ptr) AccessChain 156 159 101 + 174: 8(float) Load 173 + 175: 8(float) FAdd 172 174 + 176: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 175 + Store 167(c) 176 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 178 178 16 16 + 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 183 182(mx) 84 + 186: 8(float) Load 167(c) + 187: 8(float) Load 123(s) + 188: 8(float) FNegate 187 + 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 190 190 16 16 + 191: 8(float) Load 123(s) + 192: 8(float) Load 167(c) + 194: 18(fvec3) CompositeConstruct 186 188 94 + 195: 18(fvec3) CompositeConstruct 191 192 94 + 196: 18(fvec3) CompositeConstruct 94 94 193 + 197: 179 CompositeConstruct 194 195 196 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 178 178 16 16 + Store 182(mx) 197 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 200 200 16 16 + 201: 122(ptr) AccessChain 74(input) 127 52 + 202: 8(float) Load 201 + 203: 160(ptr) AccessChain 156 159 101 + 204: 8(float) Load 203 + 205: 8(float) FAdd 202 204 + 206: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 205 + Store 123(s) 206 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 208 208 16 16 + 209: 122(ptr) AccessChain 74(input) 127 52 + 210: 8(float) Load 209 + 211: 160(ptr) AccessChain 156 159 101 + 212: 8(float) Load 211 + 213: 8(float) FAdd 210 212 + 214: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 213 + Store 167(c) 214 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 216 216 16 16 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 218 217(my) 84 + 221: 8(float) Load 167(c) + 222: 8(float) Load 123(s) + 223: 8(float) FNegate 222 + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 225 225 16 16 + 226: 8(float) Load 123(s) + 227: 8(float) Load 167(c) + 228: 18(fvec3) CompositeConstruct 221 94 223 + 229: 18(fvec3) CompositeConstruct 94 193 94 + 230: 18(fvec3) CompositeConstruct 226 94 227 + 231: 179 CompositeConstruct 228 229 230 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 216 216 16 16 + Store 217(my) 231 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 234 234 16 16 + 235: 122(ptr) AccessChain 74(input) 127 21 + 236: 8(float) Load 235 + 237: 160(ptr) AccessChain 156 159 101 + 238: 8(float) Load 237 + 239: 8(float) FAdd 236 238 + 240: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 239 + Store 123(s) 240 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 242 242 16 16 + 243: 122(ptr) AccessChain 74(input) 127 21 + 244: 8(float) Load 243 + 245: 160(ptr) AccessChain 156 159 101 + 246: 8(float) Load 245 + 247: 8(float) FAdd 244 246 + 248: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 247 + Store 167(c) 248 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 250 250 16 16 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 252 251(mz) 84 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 256 256 16 16 + 257: 8(float) Load 167(c) + 258: 8(float) Load 123(s) + 259: 8(float) FNegate 258 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 261 261 16 16 + 262: 8(float) Load 123(s) + 263: 8(float) Load 167(c) + 264: 18(fvec3) CompositeConstruct 193 94 94 + 265: 18(fvec3) CompositeConstruct 94 257 259 + 266: 18(fvec3) CompositeConstruct 94 262 263 + 267: 179 CompositeConstruct 264 265 266 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 250 250 16 16 + Store 251(mz) 267 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 270 270 16 16 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 272 271(rotMat) 84 + 275: 179 Load 182(mx) + 276: 179 Load 217(my) + 277: 179 MatrixTimesMatrix 275 276 + 278: 179 Load 251(mz) + 279: 179 MatrixTimesMatrix 277 278 + Store 271(rotMat) 279 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 281 281 16 16 + 282: 122(ptr) AccessChain 74(input) 127 52 + 283: 8(float) Load 282 + 285: 160(ptr) AccessChain 156 159 284 + 286: 8(float) Load 285 + 287: 8(float) FAdd 283 286 + 288: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 287 + Store 123(s) 288 + 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 290 290 16 16 + 291: 122(ptr) AccessChain 74(input) 127 52 + 292: 8(float) Load 291 + 293: 160(ptr) AccessChain 156 159 284 + 294: 8(float) Load 293 + 295: 8(float) FAdd 292 294 + 296: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 295 + Store 167(c) 296 + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 298 298 16 16 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 301 300(gRotMat) 84 + 304: 8(float) Load 167(c) + 305: 8(float) Load 123(s) + 306: 8(float) FNegate 305 + 307: 56(fvec4) CompositeConstruct 304 94 306 94 + 309: 308(ptr) AccessChain 300(gRotMat) 159 + Store 309 307 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 311 311 16 16 + 314: 308(ptr) AccessChain 300(gRotMat) 312 + Store 314 313 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 316 316 16 16 + 317: 8(float) Load 123(s) + 318: 8(float) Load 167(c) + 319: 56(fvec4) CompositeConstruct 317 94 318 94 + 320: 308(ptr) AccessChain 300(gRotMat) 100 + Store 320 319 + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 322 322 16 16 + 324: 308(ptr) AccessChain 300(gRotMat) 101 + Store 324 323 + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 326 326 16 16 + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 328 327(locPos) 84 + 331: 102(ptr) AccessChain 74(input) 159 + 332: 18(fvec3) Load 331 + 333: 179 Load 271(rotMat) + 334: 18(fvec3) VectorTimesMatrix 332 333 + 335: 8(float) CompositeExtract 334 0 + 336: 8(float) CompositeExtract 334 1 + 337: 8(float) CompositeExtract 334 2 + 338: 56(fvec4) CompositeConstruct 335 336 337 193 + Store 327(locPos) 338 + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 340 340 16 16 + 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 342 341(pos) 84 + 345: 56(fvec4) Load 327(locPos) + 346: 18(fvec3) VectorShuffle 345 345 0 1 2 + 348: 122(ptr) AccessChain 74(input) 347 + 349: 8(float) Load 348 + 350: 18(fvec3) VectorTimesScalar 346 349 + 351: 102(ptr) AccessChain 74(input) 284 + 352: 18(fvec3) Load 351 + 353: 18(fvec3) FAdd 350 352 + 354: 8(float) CompositeExtract 353 0 + 355: 8(float) CompositeExtract 353 1 + 356: 8(float) CompositeExtract 353 2 + 357: 56(fvec4) CompositeConstruct 354 355 356 193 + Store 341(pos) 357 + 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 359 359 16 16 + 360: 56(fvec4) Load 341(pos) + 361: 130 Load 300(gRotMat) + 362: 56(fvec4) VectorTimesMatrix 360 361 + 364: 363(ptr) AccessChain 156 159 312 + 365: 130 Load 364 + 366: 56(fvec4) VectorTimesMatrix 362 365 + 367: 363(ptr) AccessChain 156 159 159 + 368: 130 Load 367 + 369: 56(fvec4) VectorTimesMatrix 366 368 + 370: 308(ptr) AccessChain 90(output) 159 + Store 370 369 + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 372 372 16 16 + 373: 102(ptr) AccessChain 74(input) 312 + 374: 18(fvec3) Load 373 + 375: 179 Load 271(rotMat) + 376: 18(fvec3) VectorTimesMatrix 374 375 + 377: 130 Load 300(gRotMat) + 378: 363(ptr) AccessChain 156 159 312 + 379: 130 Load 378 + 380: 130 MatrixTimesMatrix 377 379 + 381: 56(fvec4) CompositeExtract 380 0 + 382: 18(fvec3) VectorShuffle 381 381 0 1 2 + 383: 56(fvec4) CompositeExtract 380 1 + 384: 18(fvec3) VectorShuffle 383 383 0 1 2 + 385: 56(fvec4) CompositeExtract 380 2 + 386: 18(fvec3) VectorShuffle 385 385 0 1 2 + 387: 179 CompositeConstruct 382 384 386 + 388: 18(fvec3) VectorTimesMatrix 376 387 + 389: 102(ptr) AccessChain 90(output) 312 + Store 389 388 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 391 391 16 16 + 392: 102(ptr) AccessChain 74(input) 159 + 393: 18(fvec3) Load 392 + 394: 102(ptr) AccessChain 74(input) 284 + 395: 18(fvec3) Load 394 + 396: 18(fvec3) FAdd 393 395 + 397: 8(float) CompositeExtract 396 0 + 398: 8(float) CompositeExtract 396 1 + 399: 8(float) CompositeExtract 396 2 + 400: 56(fvec4) CompositeConstruct 397 398 399 193 + 401: 363(ptr) AccessChain 156 159 312 + 402: 130 Load 401 + 403: 56(fvec4) VectorTimesMatrix 400 402 + Store 341(pos) 403 + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 405 405 16 16 + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 407 406(lPos) 84 + 411: 410(ptr) AccessChain 156 159 100 + 412: 56(fvec4) Load 411 + 413: 18(fvec3) VectorShuffle 412 412 0 1 2 + 414: 363(ptr) AccessChain 156 159 312 + 415: 130 Load 414 + 416: 56(fvec4) CompositeExtract 415 0 + 417: 18(fvec3) VectorShuffle 416 416 0 1 2 + 418: 56(fvec4) CompositeExtract 415 1 + 419: 18(fvec3) VectorShuffle 418 418 0 1 2 + 420: 56(fvec4) CompositeExtract 415 2 + 421: 18(fvec3) VectorShuffle 420 420 0 1 2 + 422: 179 CompositeConstruct 417 419 421 + 423: 18(fvec3) VectorTimesMatrix 413 422 + Store 406(lPos) 423 + 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 425 425 16 16 + 426: 18(fvec3) Load 406(lPos) + 427: 56(fvec4) Load 341(pos) + 428: 18(fvec3) VectorShuffle 427 427 0 1 2 + 429: 18(fvec3) FSub 426 428 + 430: 102(ptr) AccessChain 90(output) 127 + Store 430 429 + 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 432 432 16 16 + 433: 56(fvec4) Load 341(pos) + 434: 18(fvec3) VectorShuffle 433 433 0 1 2 + 435: 18(fvec3) FNegate 434 + 436: 102(ptr) AccessChain 90(output) 284 + Store 436 435 + 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 438 438 16 16 + 439:58(VSOutput) Load 90(output) + ReturnValue 439 FunctionEnd From 3ebb72cc7429f0ab8218104dc3687c659c0f364d Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 22 Jun 2023 16:11:29 -0400 Subject: [PATCH 217/594] Add an assert that ID operands are non-zero Zero is not a valid ID value and the SPIR-V emitter library should never be emitting instructions with ID values of 0. --- SPIRV/spvIR.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 660742a755..5cbffec25f 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -97,6 +97,8 @@ class Instruction { explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { } virtual ~Instruction() {} void addIdOperand(Id id) { + // ids can't be 0 + assert(id); operands.push_back(id); idOperand.push_back(true); } From eaa705776839225b506193bba7daf44360a3c264 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 7 Jul 2023 00:03:58 -0600 Subject: [PATCH 218/594] Fix C example in README Remove the usage of C++ STL types in the C-only interface example. Fixes #3239. --- README.md | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 26dc48fc1b..55a09535ab 100644 --- a/README.md +++ b/README.md @@ -425,9 +425,18 @@ warning/error and other options for controlling compilation. This interface is located `glslang_c_interface.h` and exposes functionality similar to the C++ interface. The following snippet is a complete example showing how to compile GLSL into SPIR-V 1.5 for Vulkan 1.2. -```cxx -std::vector compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName) -{ +```c +#include + +// Required for use of glslang_default_resource +#include + +typedef struct SpirVBinary { + uint32_t *words; // SPIR-V words + int size; // number of words in SPIR-V binary +} SpirVBinary; + +SpirVBinary compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const char* shaderSource, const char* fileName) { const glslang_input_t input = { .language = GLSLANG_SOURCE_GLSL, .stage = stage, @@ -441,18 +450,22 @@ std::vector compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c .force_default_version_and_profile = false, .forward_compatible = false, .messages = GLSLANG_MSG_DEFAULT_BIT, - .resource = reinterpret_cast(&glslang::DefaultTBuiltInResource), + .resource = glslang_default_resource(), }; glslang_shader_t* shader = glslang_shader_create(&input); + SpirVBinary bin = { + .words = NULL, + .size = 0, + }; if (!glslang_shader_preprocess(shader, &input)) { printf("GLSL preprocessing failed %s\n", fileName); printf("%s\n", glslang_shader_get_info_log(shader)); printf("%s\n", glslang_shader_get_info_debug_log(shader)); printf("%s\n", input.code); glslang_shader_delete(shader); - return std::vector(); + return bin; } if (!glslang_shader_parse(shader, &input)) { @@ -461,7 +474,7 @@ std::vector compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c printf("%s\n", glslang_shader_get_info_debug_log(shader)); printf("%s\n", glslang_shader_get_preprocessed_code(shader)); glslang_shader_delete(shader); - return std::vector(); + return bin; } glslang_program_t* program = glslang_program_create(); @@ -473,13 +486,14 @@ std::vector compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c printf("%s\n", glslang_program_get_info_debug_log(program)); glslang_program_delete(program); glslang_shader_delete(shader); - return std::vector(); + return bin; } glslang_program_SPIRV_generate(program, stage); - std::vector outShaderModule(glslang_program_SPIRV_get_size(program)); - glslang_program_SPIRV_get(program, outShaderModule.data()); + bin.size = glslang_program_SPIRV_get_size(program); + bin.words = malloc(bin.size * sizeof(uint32_t)); + glslang_program_SPIRV_get(program, bin.words); const char* spirv_messages = glslang_program_SPIRV_get_messages(program); if (spirv_messages) @@ -488,7 +502,7 @@ std::vector compileShaderToSPIRV_Vulkan(glslang_stage_t stage, const c glslang_program_delete(program); glslang_shader_delete(shader); - return outShaderModule; + return bin; } ``` From 051f18c0cced46f592f571c2c5883aa8130d6ab1 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Sat, 24 Jun 2023 11:23:45 +0800 Subject: [PATCH 219/594] Spirv_intrinsics: Add support of type specifier to spirv_type Previously, spirv_type doesn't accept type specifier as its parameter. With this change, we can input non-array type specifier. This is because some SPIR-V type definition intructions often need to reference other SPIR-V types as its source operands. We add the support to facilitate such usage. --- SPIRV/GlslangToSpv.cpp | 88 +- ...rinsicsSpirvTypeWithTypeSpecifier.vert.out | 35 + ....intrinsicsSpirvTypeWithTypeSpecifier.vert | 25 + glslang/Include/SpirvIntrinsics.h | 17 +- glslang/MachineIndependent/ParseHelper.h | 1 + .../MachineIndependent/SpirvIntrinsics.cpp | 20 +- glslang/MachineIndependent/glslang.m4 | 3 + glslang/MachineIndependent/glslang.y | 3 + glslang/MachineIndependent/glslang_tab.cpp | 2618 +++++++++-------- gtests/Spv.FromFile.cpp | 1 + 10 files changed, 1460 insertions(+), 1351 deletions(-) create mode 100644 Test/baseResults/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert.out create mode 100644 Test/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index fc80d45399..9a66363c28 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4515,50 +4515,56 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty std::vector operands; for (const auto& typeParam : spirvType.typeParams) { - // Constant expression - if (typeParam.constant->isLiteral()) { - if (typeParam.constant->getBasicType() == glslang::EbtFloat) { - float floatValue = static_cast(typeParam.constant->getConstArray()[0].getDConst()); - unsigned literal; - static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)"); - memcpy(&literal, &floatValue, sizeof(literal)); - operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { - unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); - operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtUint) { - unsigned literal = typeParam.constant->getConstArray()[0].getUConst(); - operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtBool) { - unsigned literal = typeParam.constant->getConstArray()[0].getBConst(); - operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtString) { - auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str(); - unsigned literal = 0; - char* literalPtr = reinterpret_cast(&literal); - unsigned charCount = 0; - char ch = 0; - do { - ch = *(str++); - *(literalPtr++) = ch; - ++charCount; - if (charCount == 4) { + if (typeParam.constant != nullptr) { + // Constant expression + if (typeParam.constant->isLiteral()) { + if (typeParam.constant->getBasicType() == glslang::EbtFloat) { + float floatValue = static_cast(typeParam.constant->getConstArray()[0].getDConst()); + unsigned literal; + static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)"); + memcpy(&literal, &floatValue, sizeof(literal)); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { + unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtUint) { + unsigned literal = typeParam.constant->getConstArray()[0].getUConst(); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtBool) { + unsigned literal = typeParam.constant->getConstArray()[0].getBConst(); + operands.push_back({false, literal}); + } else if (typeParam.constant->getBasicType() == glslang::EbtString) { + auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str(); + unsigned literal = 0; + char* literalPtr = reinterpret_cast(&literal); + unsigned charCount = 0; + char ch = 0; + do { + ch = *(str++); + *(literalPtr++) = ch; + ++charCount; + if (charCount == 4) { + operands.push_back({false, literal}); + literalPtr = reinterpret_cast(&literal); + charCount = 0; + } + } while (ch != 0); + + // Partial literal is padded with 0 + if (charCount > 0) { + for (; charCount < 4; ++charCount) + *(literalPtr++) = 0; operands.push_back({false, literal}); - literalPtr = reinterpret_cast(&literal); - charCount = 0; } - } while (ch != 0); - - // Partial literal is padded with 0 - if (charCount > 0) { - for (; charCount < 4; ++charCount) - *(literalPtr++) = 0; - operands.push_back({false, literal}); - } + } else + assert(0); // Unexpected type } else - assert(0); // Unexpected type - } else - operands.push_back({true, createSpvConstant(*typeParam.constant)}); + operands.push_back({true, createSpvConstant(*typeParam.constant)}); + } else { + // Type specifier + assert(typeParam.type != nullptr); + operands.push_back({true, convertGlslangToSpvType(*typeParam.type)}); + } } assert(spirvInst.set == ""); // Currently, couldn't be extended instructions. diff --git a/Test/baseResults/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert.out b/Test/baseResults/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert.out new file mode 100644 index 0000000000..580c704d21 --- /dev/null +++ b/Test/baseResults/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert.out @@ -0,0 +1,35 @@ +spv.intrinsicsSpirvTypeWithTypeSpecifier.vert +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 14 + + Capability Shader + Capability Int64 + Capability PhysicalStorageBufferAddressesEXT + Extension "SPV_EXT_physical_storage_buffer" + Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_KHR_variable_pointers" + 1: ExtInstImport "GLSL.std.450" + MemoryModel PhysicalStorageBuffer64EXT GLSL450 + EntryPoint Vertex 4 "main" + Source GLSL 450 + SourceExtension "GL_ARB_gpu_shader_int64" + SourceExtension "GL_EXT_buffer_reference" + SourceExtension "GL_EXT_spirv_intrinsics" + Name 4 "main" + Name 8 "value" + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9: TypeInt 64 0 + 10: 9(int64_t) Constant 1 0 + 11: TypePointer PhysicalStorageBufferEXT 6(int) + 4(main): 2 Function None 3 + 5: Label + 8(value): 7(ptr) Variable Function + 12: 11(ptr) ConvertUToPtr 10 + 13: 6(int) Load 12 Aligned 32 + Store 8(value) 13 + Return + FunctionEnd diff --git a/Test/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert b/Test/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert new file mode 100644 index 0000000000..f17da98eb0 --- /dev/null +++ b/Test/spv.intrinsicsSpirvTypeWithTypeSpecifier.vert @@ -0,0 +1,25 @@ +#version 450 core + +#extension GL_ARB_gpu_shader_int64: enable +#extension GL_EXT_buffer_reference: enable +#extension GL_EXT_spirv_intrinsics: enable + +#define CapabilityPhysicalStorageBufferAddresses 5347 +#define StorageClassPhysicalStorageBuffer 5349 +#define OpTypePointer 32 +#define OpLoad 61 +#define OpConvertUToPtr 120 + +#define uintStoragePtr spirv_type(extensions = ["SPV_EXT_physical_storage_buffer", "SPV_KHR_variable_pointers"], capabilities = [CapabilityPhysicalStorageBufferAddresses], id = OpTypePointer, StorageClassPhysicalStorageBuffer, uint) + +// Just to enable the memory model of physical storage buffer +layout(buffer_reference, std430) buffer Dummy { + uint dummy; +}; + +spirv_instruction(id = OpLoad) uint loadUint(uintStoragePtr pointer, spirv_literal uint memoryOperands, spirv_literal uint alignment); +spirv_instruction(id = OpConvertUToPtr) uintStoragePtr convertToPtr(uint64_t value); + +void main() { + uint value = loadUint(convertToPtr(1), 0x2, 32); +} diff --git a/glslang/Include/SpirvIntrinsics.h b/glslang/Include/SpirvIntrinsics.h index 3c7d72ce97..d56c65dec0 100644 --- a/glslang/Include/SpirvIntrinsics.h +++ b/glslang/Include/SpirvIntrinsics.h @@ -98,12 +98,23 @@ struct TSpirvInstruction { struct TSpirvTypeParameter { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - TSpirvTypeParameter(const TIntermConstantUnion* arg) { constant = arg; } + TSpirvTypeParameter(const TIntermConstantUnion* arg) + { + constant = arg; + type = nullptr; + } + + TSpirvTypeParameter(const TType *arg) + { + constant = nullptr; + type = arg; + } - bool operator==(const TSpirvTypeParameter& rhs) const { return constant == rhs.constant; } + bool operator==(const TSpirvTypeParameter& rhs) const; bool operator!=(const TSpirvTypeParameter& rhs) const { return !operator==(rhs); } - const TIntermConstantUnion* constant; + const TIntermConstantUnion* constant; // Constant expression + const TType* type; // Type specifier }; typedef TVector TSpirvTypeParameters; diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 509b3004e3..66795fd390 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -486,6 +486,7 @@ class TParseContext : public TParseContextBase { TSpirvRequirement* mergeSpirvRequirements(const TSourceLoc& loc, TSpirvRequirement* spirvReq1, TSpirvRequirement* spirvReq2); TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TIntermConstantUnion* constant); + TSpirvTypeParameters* makeSpirvTypeParameters(const TSourceLoc& loc, const TPublicType& type); TSpirvTypeParameters* mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2); TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, const TString& value); diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp index 49d8b8c774..ecef5607e4 100644 --- a/glslang/MachineIndependent/SpirvIntrinsics.cpp +++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -45,6 +45,15 @@ namespace glslang { +bool TSpirvTypeParameter::operator==(const TSpirvTypeParameter& rhs) const +{ + if (constant != nullptr) + return constant->getConstArray() == rhs.constant->getConstArray(); + + assert(type != nullptr); + return *type == *rhs.type; +} + // // Handle SPIR-V requirements // @@ -283,14 +292,19 @@ TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& l constant->getBasicType() != EbtBool && constant->getBasicType() != EbtString) error(loc, "this type not allowed", constant->getType().getBasicString(), ""); - else { - assert(constant); + else spirvTypeParams->push_back(TSpirvTypeParameter(constant)); - } return spirvTypeParams; } +TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& loc, const TPublicType& type) +{ + TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters; + spirvTypeParams->push_back(TSpirvTypeParameter(new TType(type))); + return spirvTypeParams; +} + TSpirvTypeParameters* TParseContext::mergeSpirvTypeParameters(TSpirvTypeParameters* spirvTypeParams1, TSpirvTypeParameters* spirvTypeParams2) { // Merge SPIR-V type parameters of the second one to the first one diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index c3fea4fe65..f6f36d60bf 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -4439,6 +4439,9 @@ spirv_type_parameter : constant_expression { $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); } + | type_specifier_nonarray { + $$ = parseContext.makeSpirvTypeParameters($1.loc, $1); + } spirv_instruction_qualifier : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 362c13aa9b..4ab39f154a 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -4439,6 +4439,9 @@ spirv_type_parameter : constant_expression { $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); } + | type_specifier_nonarray { + $$ = parseContext.makeSpirvTypeParameters($1.loc, $1); + } spirv_instruction_qualifier : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 8ff2af3483..cee8a632b4 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1044,16 +1044,16 @@ union yyalloc /* YYFINAL -- State number of the termination state. */ #define YYFINAL 451 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12669 +#define YYLAST 12670 /* YYNTOKENS -- Number of terminals. */ #define YYNTOKENS 464 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 132 /* YYNRULES -- Number of rules. */ -#define YYNRULES 697 +#define YYNRULES 698 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 943 +#define YYNSTATES 944 /* YYMAXUTOK -- Last valid token kind. */ #define YYMAXUTOK 718 @@ -1217,7 +1217,7 @@ static const yytype_int16 yyrline[] = 4301, 4306, 4314, 4318, 4323, 4327, 4332, 4336, 4341, 4345, 4352, 4355, 4360, 4363, 4366, 4369, 4374, 4377, 4382, 4388, 4391, 4394, 4397, 4402, 4406, 4411, 4415, 4420, 4424, 4431, - 4434, 4439, 4444, 4447, 4453, 4456, 4461, 4464 + 4434, 4439, 4442, 4447, 4450, 4456, 4459, 4464, 4467 }; #endif @@ -1448,12 +1448,12 @@ static const yytype_int16 yytoknum[] = }; #endif -#define YYPACT_NINF (-833) +#define YYPACT_NINF (-871) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-579) +#define YYTABLE_NINF (-693) #define yytable_value_is_error(Yyn) \ 0 @@ -1462,101 +1462,101 @@ static const yytype_int16 yytoknum[] = STATE-NUM. */ static const yytype_int16 yypact[] = { - 4634, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -322, -303, -269, - -258, -250, -241, -204, -105, -833, -833, -833, -833, -833, - -219, -833, -833, -833, -833, -833, -57, -833, -833, -833, - -833, -833, -320, -833, -833, -833, -833, -833, -833, -833, - -80, -63, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -325, -182, -130, - -109, 7861, -222, -833, -71, -833, -833, -833, -833, 5556, - -833, -833, -833, -833, -141, -833, -833, 946, -833, -833, - 7861, -85, -833, -833, -833, 6017, -54, -279, -155, -133, - -129, -125, -54, -124, -51, 12272, -833, -25, -341, -49, - -833, -310, -833, -15, -12, 7861, -833, -833, -833, 7861, - -42, -41, -833, -265, -833, -311, -833, -833, 10955, -9, - -833, -833, -833, -5, -39, 7861, -833, -10, -11, -6, - -833, -267, -833, -256, -4, -3, -1, 1, -221, 3, - 5, 6, 8, 10, 11, -217, 13, 12, 20, -309, - -833, -7, 7861, -833, -2, -833, -195, -833, -833, -188, - 9199, -833, -280, 1407, -833, -833, -833, -833, -833, -9, - -294, -833, 9638, -263, -833, -27, -833, -169, 10955, 10955, - -833, 10955, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -253, -833, -833, -833, 21, -185, 11394, 25, -833, - 10955, -833, -833, -318, 19, -12, 26, -833, -326, -54, - -833, -8, -833, -329, 27, -123, 10955, -119, -833, -146, - -112, -160, -107, 28, -102, -54, -833, 11833, -833, -75, - 10955, 29, -51, -833, 7861, 14, 6478, -833, 7861, 10955, - -833, -341, -833, 15, -833, -833, -40, -79, -170, -295, - -120, 17, 22, 24, 44, 23, -313, 30, 10077, -833, - 35, -833, -833, 31, 37, 39, -833, 34, 41, 42, - 10516, 64, 10955, 58, 57, 59, 63, 65, -220, -833, - -833, -111, -833, -182, 76, 77, -833, -833, -833, -833, - -833, 1868, -833, -833, -833, -833, -833, -833, -833, -833, - -833, 5095, 19, 9638, -254, 8321, -833, -833, 9638, 7861, - -833, 43, -833, -833, -833, -184, -833, -833, 10955, 47, - -833, -833, 10955, 79, -833, -833, -833, 10955, -833, -833, - -833, -319, -833, -833, -183, 69, -833, -833, -833, -833, - -833, -833, -181, -833, -176, -833, -833, -174, 80, -833, - -833, -833, -833, -172, -833, -171, -833, -833, -833, -833, - -833, -164, -833, 81, -833, -162, 82, -161, 69, -833, - -159, -833, 83, 85, -833, -833, 14, -9, -48, -833, - -833, -833, 6939, -833, -833, -833, 10955, 10955, 10955, 10955, - 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, 10955, - 10955, 10955, 10955, 10955, 10955, -833, -833, -833, 32, -833, - 2329, -833, -833, -833, 2329, -833, 10955, -833, -833, -47, - 10955, -92, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, 10955, 10955, - -833, -833, -833, -833, -833, -833, -833, 9638, -833, -833, - -122, -833, 7400, -833, -833, 88, 86, -833, -833, -833, - -833, -833, -202, -137, -833, -316, -833, -329, -833, -329, - -833, 10955, 10955, -833, -146, -833, -146, -833, -160, -160, - -833, 93, 28, -833, 11833, -833, 10955, -833, -833, -43, - 19, 14, -833, -833, -833, -833, -833, -40, -40, -79, - -79, -170, -170, -170, -170, -295, -295, -120, 17, 22, - 24, 44, 23, 10955, -833, 2329, 4173, 52, 3712, -152, - -833, -151, -833, -833, -833, -833, -833, 8760, -833, -833, - -833, 98, -833, 66, -833, -150, -833, -149, -833, -148, - -833, -147, -833, -140, -139, -833, -833, -833, -36, 95, - 86, 62, 101, 103, -833, -833, 4173, 100, -833, -833, - -833, -833, -833, -833, -833, -833, -833, -833, -833, 10955, - -833, 96, 2790, 10955, -833, 97, 105, 60, 107, 3251, - -833, 109, -833, 9638, -833, -833, -833, -138, 10955, 2790, - 100, -833, -833, 2329, -833, 99, 86, -833, -833, 2329, - 110, -833, -833 + 4635, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -295, -293, -284, + -273, -184, -182, -129, -127, -871, -871, -871, -871, -871, + -258, -871, -871, -871, -871, -871, -43, -871, -871, -871, + -871, -871, -324, -871, -871, -871, -871, -871, -871, -871, + -119, -117, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -310, -323, -237, + -128, 7862, -235, -871, -106, -871, -871, -871, -871, 5557, + -871, -871, -871, -871, -124, -871, -871, 947, -871, -871, + 7862, -93, -871, -871, -871, 6018, -99, -256, -138, -122, + -121, -120, -99, -104, -78, 12273, -871, -100, -339, -60, + -871, -265, -871, -85, -17, 7862, -871, -871, -871, 7862, + -49, -40, -871, -307, -871, -236, -871, -871, 10956, 1, + -871, -871, -871, 3, -31, 7862, -871, -4, -2, 4, + -871, -259, -871, -228, -1, 5, 6, 8, -212, 10, + 12, 13, 14, 15, 18, -209, 17, 19, 27, -313, + -871, 20, 7862, -871, 22, -871, -207, -871, -871, -202, + 9200, -871, -261, 1408, -871, -871, -871, -871, -871, 1, + -263, -871, 9639, -249, -871, -27, -871, -111, 10956, 10956, + -871, 10956, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -277, -871, -871, -871, 28, -200, 11395, 32, -871, + 10956, -871, -871, -321, 26, -17, 33, -871, -320, -99, + -871, -22, -871, -300, 37, -102, 10956, -74, -871, -143, + -73, -148, -69, 35, -68, -99, -871, 11834, -871, -67, + 10956, 38, -78, -871, 7862, 16, 6479, -871, 7862, 10956, + -871, -339, -871, 21, -871, -871, -26, -260, -55, -309, + -14, -12, 23, 30, 49, 52, -312, 40, 10078, -871, + 42, -871, -871, 48, 41, 56, -871, 67, 69, 63, + 10517, 75, 10956, 68, 70, 73, 74, 76, -167, -871, + -871, -107, -871, -323, 77, 78, -871, -871, -871, -871, + -871, 1869, -871, -871, -871, -871, -871, -871, -871, -871, + -871, 5096, 26, 9639, -240, 8322, -871, -871, 9639, 7862, + -871, 43, -871, -871, -871, -199, -871, -871, 10956, 51, + -871, -871, 10956, 87, -871, -871, -871, 10956, -871, -871, + -871, -315, -871, -871, -190, 80, -871, -871, -871, -871, + -871, -871, -187, -871, -168, -871, -871, -166, 84, -871, + -871, -871, -871, -163, -871, -161, -871, -871, -871, -871, + -871, -156, -871, 85, -871, -154, 86, -153, 80, -871, + -271, -152, -871, 94, 96, -871, -871, 16, 1, -35, + -871, -871, -871, 6940, -871, -871, -871, 10956, 10956, 10956, + 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, + 10956, 10956, 10956, 10956, 10956, 10956, -871, -871, -871, 95, + -871, 2330, -871, -871, -871, 2330, -871, 10956, -871, -871, + -30, 10956, -171, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, 10956, + 10956, -871, -871, -871, -871, -871, -871, -871, 9639, -871, + -871, -201, -871, 7401, -871, -871, 97, 92, -871, -871, + -871, -871, -871, -188, -131, -871, -311, -871, -300, -871, + -300, -871, 10956, 10956, -871, -143, -871, -143, -871, -148, + -148, -871, 103, 35, -871, 11834, -871, 10956, -871, -871, + -29, 26, 16, -871, -871, -871, -871, -871, -26, -26, + -260, -260, -55, -55, -55, -55, -309, -309, -14, -12, + 23, 30, 49, 52, 10956, -871, 2330, 4174, 59, 3713, + -149, -871, -145, -871, -871, -871, -871, -871, 8761, -871, + -871, -871, 105, -871, 72, -871, -144, -871, -142, -871, + -141, -871, -140, -871, -137, -133, -871, -871, -871, -15, + 101, 92, 71, 107, 109, -871, -871, 4174, 108, -871, + -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, + 10956, -871, 102, 2791, 10956, -871, 104, 114, 79, 112, + 3252, -871, 113, -871, 9639, -871, -871, -871, -132, 10956, + 2791, 108, -871, -871, 2330, -871, 110, 92, -871, -871, + 2330, 116, -871, -871 }; /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. @@ -1610,7 +1610,7 @@ static const yytype_int16 yydefact[] = 99, 0, 94, 0, 109, 0, 121, 115, 123, 0, 124, 0, 97, 131, 102, 0, 156, 136, 0, 209, 215, 1, 626, 0, 0, 0, 96, 0, 0, 0, - 637, 0, 694, 0, 0, 0, 0, 0, 0, 0, + 637, 0, 695, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 635, 0, 633, 0, 0, 542, 151, 153, 0, 149, 207, 0, 0, 100, 0, 0, 631, 110, 116, 120, 122, 118, @@ -1619,7 +1619,7 @@ static const yytype_int16 yydefact[] = 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, 18, 37, 20, 25, 26, 0, 0, 30, 0, 218, 0, 36, 34, 0, 210, 111, 0, 95, 0, 0, - 692, 0, 645, 0, 0, 0, 0, 0, 662, 0, + 693, 0, 645, 0, 0, 0, 0, 0, 662, 0, 0, 0, 0, 0, 0, 0, 687, 0, 660, 0, 0, 0, 0, 98, 0, 0, 0, 546, 0, 0, 148, 0, 204, 0, 211, 45, 49, 52, 55, 60, @@ -1631,71 +1631,71 @@ static const yytype_int16 yydefact[] = 569, 0, 119, 0, 127, 0, 554, 134, 0, 0, 107, 0, 104, 38, 39, 0, 22, 23, 0, 0, 28, 27, 0, 220, 31, 33, 40, 0, 217, 112, - 696, 0, 697, 638, 0, 0, 695, 657, 653, 654, + 697, 0, 698, 638, 0, 0, 696, 657, 653, 654, 655, 656, 0, 651, 0, 93, 658, 0, 0, 672, 673, 674, 675, 0, 670, 0, 679, 680, 681, 682, 678, 0, 676, 0, 683, 0, 0, 0, 2, 691, - 0, 689, 0, 0, 632, 634, 0, 552, 0, 550, - 545, 547, 0, 152, 150, 208, 0, 0, 0, 0, + 216, 0, 689, 0, 0, 632, 634, 0, 552, 0, + 550, 545, 547, 0, 152, 150, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 76, 212, 213, 0, 572, - 0, 605, 618, 617, 0, 609, 0, 621, 619, 0, - 0, 0, 602, 622, 623, 624, 571, 81, 82, 84, - 83, 86, 87, 88, 89, 90, 85, 80, 0, 0, - 587, 583, 585, 589, 596, 604, 129, 0, 557, 558, - 0, 133, 0, 108, 4, 0, 24, 21, 32, 219, - 641, 643, 0, 0, 693, 0, 647, 0, 646, 0, - 649, 0, 0, 664, 0, 663, 0, 666, 0, 0, - 668, 0, 0, 688, 0, 685, 0, 661, 636, 0, - 553, 0, 548, 543, 46, 47, 48, 51, 50, 53, - 54, 58, 59, 56, 57, 61, 62, 64, 66, 68, - 70, 72, 74, 0, 214, 574, 0, 0, 0, 0, - 620, 0, 601, 79, 92, 128, 555, 0, 106, 19, - 639, 0, 640, 0, 652, 0, 659, 0, 671, 0, - 677, 0, 684, 0, 0, 690, 549, 551, 0, 0, - 593, 0, 0, 0, 612, 611, 614, 580, 597, 556, - 559, 642, 644, 648, 650, 665, 667, 669, 686, 0, - 575, 0, 0, 0, 613, 0, 0, 592, 0, 0, - 590, 0, 77, 0, 577, 606, 576, 0, 615, 0, - 580, 579, 581, 599, 594, 0, 616, 610, 591, 600, - 0, 608, 598 + 0, 0, 0, 0, 0, 0, 76, 212, 213, 0, + 572, 0, 605, 618, 617, 0, 609, 0, 621, 619, + 0, 0, 0, 602, 622, 623, 624, 571, 81, 82, + 84, 83, 86, 87, 88, 89, 90, 85, 80, 0, + 0, 587, 583, 585, 589, 596, 604, 129, 0, 557, + 558, 0, 133, 0, 108, 4, 0, 24, 21, 32, + 219, 641, 643, 0, 0, 694, 0, 647, 0, 646, + 0, 649, 0, 0, 664, 0, 663, 0, 666, 0, + 0, 668, 0, 0, 688, 0, 685, 0, 661, 636, + 0, 553, 0, 548, 543, 46, 47, 48, 51, 50, + 53, 54, 58, 59, 56, 57, 61, 62, 64, 66, + 68, 70, 72, 74, 0, 214, 574, 0, 0, 0, + 0, 620, 0, 601, 79, 92, 128, 555, 0, 106, + 19, 639, 0, 640, 0, 652, 0, 659, 0, 671, + 0, 677, 0, 684, 0, 0, 690, 549, 551, 0, + 0, 593, 0, 0, 0, 612, 611, 614, 580, 597, + 556, 559, 642, 644, 648, 650, 665, 667, 669, 686, + 0, 575, 0, 0, 0, 613, 0, 0, 592, 0, + 0, 590, 0, 77, 0, 577, 606, 576, 0, 615, + 0, 580, 579, 581, 599, 594, 0, 616, 610, 591, + 600, 0, 608, 598 }; /* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -833, -546, -833, -833, -833, -833, -833, -833, -833, -833, - -833, -833, -434, -833, -395, -394, -489, -392, -271, -270, - -268, -266, -272, -264, -833, -484, -833, -497, -833, -500, - -535, 4, -833, -833, -833, 7, -393, -833, -833, 33, - 40, 38, -833, -833, -407, -833, -833, -833, -833, -103, - -833, -390, -376, -833, 9, -833, 0, -433, -833, -833, - -833, -833, 138, -833, -833, -833, -559, -554, -237, -350, - -612, -833, -375, -619, -832, -833, -432, -833, -833, -445, - -443, -833, -833, 55, -732, -373, -833, -145, -833, -406, - -833, -144, -833, -833, -833, -833, -143, -833, -833, -833, - -833, -833, -833, -833, -833, 87, -833, -833, 2, -833, - -77, -302, -408, -833, -833, -833, -317, -308, -312, -833, - -833, -315, -307, -314, -306, -305, -833, -321, -304, -833, - -396, -538 + -871, -544, -871, -871, -871, -871, -871, -871, -871, -871, + -871, -871, -435, -871, -382, -381, -473, -384, -268, -264, + -269, -267, -266, -262, -871, -485, -871, -498, -871, -501, + -533, 11, -871, -871, -871, 7, -394, -871, -871, 45, + 44, 46, -871, -871, -407, -871, -871, -871, -871, -101, + -871, -390, -377, -871, 9, -871, 0, -431, -871, -871, + -871, -553, 150, -871, -871, -871, -552, -557, -230, -344, + -613, -871, -370, -625, -870, -871, -427, -871, -871, -436, + -434, -871, -871, 62, -730, -363, -871, -136, -871, -399, + -871, -135, -871, -871, -871, -871, -130, -871, -871, -871, + -871, -871, -871, -871, -871, 93, -871, -871, 2, -871, + -71, -281, -445, -871, -871, -871, -306, -305, -314, -871, + -871, -308, -303, -304, -302, -301, -871, -317, -299, -871, + -398, -536 }; /* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 529, 530, 531, 795, 532, 533, 534, 535, 536, + -1, 529, 530, 531, 796, 532, 533, 534, 535, 536, 537, 538, 618, 540, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 619, 853, 620, 778, 621, + 592, 593, 594, 595, 596, 619, 854, 620, 779, 621, 709, 622, 387, 649, 507, 623, 389, 390, 391, 436, 437, 438, 392, 393, 394, 395, 396, 397, 486, 487, 398, 399, 400, 401, 541, 489, 542, 492, 449, 450, - 543, 404, 405, 406, 578, 482, 576, 577, 718, 719, - 647, 790, 626, 627, 628, 629, 630, 750, 889, 925, - 917, 918, 919, 926, 631, 632, 633, 634, 920, 892, - 635, 636, 921, 940, 637, 638, 639, 856, 754, 858, - 896, 915, 916, 640, 407, 408, 409, 433, 641, 479, - 480, 459, 460, 802, 803, 411, 682, 683, 687, 412, - 413, 693, 694, 701, 702, 705, 414, 710, 711, 415, + 543, 404, 405, 406, 578, 482, 576, 577, 719, 720, + 647, 791, 626, 627, 628, 629, 630, 751, 890, 926, + 918, 919, 920, 927, 631, 632, 633, 634, 921, 893, + 635, 636, 922, 941, 637, 638, 639, 857, 755, 859, + 897, 916, 917, 640, 407, 408, 409, 433, 641, 479, + 480, 459, 460, 803, 804, 411, 682, 683, 687, 412, + 413, 693, 694, 701, 702, 705, 414, 711, 712, 415, 461, 462 }; @@ -1704,64 +1704,64 @@ static const yytype_int16 yydefgoto[] = number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 403, 439, 410, 454, 386, 646, 597, 388, 454, 402, - 503, 655, 782, 676, 539, 700, 544, 453, 855, 722, - 455, 686, 721, 446, 677, 455, 475, 670, 744, 676, - 671, 786, 416, 789, 800, 713, 791, 670, 426, 430, - 664, 733, 734, 667, 723, 439, 490, 504, 571, 484, - 505, 417, 572, 506, 491, 668, 585, 678, 679, 680, - 681, 672, 490, 446, 745, 431, 642, 644, 801, 643, - 427, 672, 685, 485, 653, 654, 598, 735, 736, 446, - 924, 656, 657, 685, 599, 418, 685, 932, 550, 501, - 792, 490, 574, 598, 551, 685, 419, 924, 502, 552, - 648, -35, 598, 658, 420, 553, 666, 659, 463, 787, - 759, 464, 761, 421, 748, 465, 467, 469, 471, 473, - 474, 477, 585, 767, 768, 769, 770, 771, 772, 773, - 774, 775, 776, 585, 558, 857, 585, 424, 566, 441, - 559, 673, 442, 777, 567, 585, 646, 673, 646, 673, - 422, 646, 673, 674, 673, 870, 673, 673, 796, 871, - 580, 673, 731, 732, 585, 798, 581, 582, 721, 707, - 661, 794, 804, 583, 806, 865, 662, 779, 551, 808, - 807, 810, 432, 813, 815, 809, 574, 811, 574, 814, - 816, 817, 651, 820, 823, 652, 825, 818, 446, 821, - 824, 939, 826, 897, 898, 903, 904, 905, 906, 779, - 779, 807, 811, 814, 818, 907, 908, 935, 737, 738, - 872, 821, 826, 779, 873, 434, 696, 697, 698, 699, - 520, 448, 466, 799, 454, 464, 782, 866, 721, 867, - 689, 690, 691, 692, 841, 842, 843, 844, 453, 423, - 779, 455, 435, 780, 468, 900, 859, 464, 470, 574, - 861, 464, 472, 476, 684, 464, 464, 464, 688, 779, - 862, 464, 700, 700, 428, 695, 876, 686, 464, 456, - 703, 863, 864, 464, 830, 706, 676, 729, 464, 730, - 646, 429, 834, 835, 836, 585, 585, 585, 585, 585, + 403, 439, 410, 454, 646, 597, 783, 388, 454, 402, + 655, 386, 503, 539, 710, 676, 453, 700, 544, 722, + 455, 856, 446, 686, 475, 455, 723, 734, 735, 745, + 787, 676, 790, 670, 426, 792, 671, 714, 801, 664, + 667, 432, 670, 925, 571, 439, 724, 501, 572, 490, + 933, 484, 668, 677, 430, 585, 502, 656, 657, 416, + 925, 417, 446, 736, 737, 746, 427, 672, 642, 644, + 418, 685, 802, 653, 654, 485, 672, -35, 446, 658, + 431, 419, 685, 659, -692, 685, 678, 679, 680, 681, + -692, 490, 574, 490, 685, 598, 550, 793, 424, 491, + 643, 448, 551, 599, 673, 666, 730, 598, 731, 760, + 673, 762, 673, 749, 648, 673, 598, 673, 434, 673, + 673, 585, 504, 788, 673, 505, 441, 552, 506, 442, + 858, 463, 585, 553, 464, 585, 465, 467, 469, 471, + 473, 474, 477, 558, 585, 646, 566, 646, 580, 559, + 646, 674, 567, 582, 581, 661, 795, 797, 867, 583, + 868, 662, 780, 585, 799, 805, 722, 707, 807, 871, + 420, 551, 421, 872, 808, 866, 768, 769, 770, 771, + 772, 773, 774, 775, 776, 777, 574, 809, 574, 811, + 780, 863, 814, 810, 816, 812, 778, 446, 815, 818, + 817, 821, 824, 826, 940, 819, 898, 822, 825, 827, + 899, 904, 780, 905, 906, 907, 780, 808, 908, 812, + 815, 819, 909, 936, 822, 422, 873, 423, 827, 780, + 874, 783, 800, 435, 454, 428, 722, 429, 696, 697, + 698, 699, 520, 689, 690, 691, 692, 453, 448, 466, + 651, 455, 464, 652, 780, 901, 860, 781, 483, 574, + 862, 842, 843, 844, 845, 468, 470, 472, 464, 464, + 464, 456, 710, 493, 710, 700, 700, 732, 733, 877, + 686, 864, 865, 476, 443, 684, 464, 831, 464, 676, + 646, 458, 835, 836, 837, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, - 585, 934, 712, 831, 779, 464, 832, 860, 831, 443, - 782, 886, 333, 334, 335, 779, 909, 685, 685, 726, - 727, 728, 574, 483, 837, 838, 458, 839, 840, 478, - 685, 488, 685, 493, 330, 845, 846, 490, 499, 500, - 545, 546, 548, 888, 547, 549, 890, 573, 555, 554, - 556, 579, 557, 650, 560, 743, 561, 562, 568, 563, - 646, 564, 565, 569, 570, 598, 660, 585, 585, 665, - 501, 704, 675, 671, 742, 751, 714, 746, 755, 854, - 585, 440, 585, 739, 749, 756, 890, 740, 741, 447, - 402, 752, 574, 753, 717, 725, 757, 403, 402, 410, - 403, 386, 922, 927, 388, 403, 402, 410, 760, 402, - 762, 763, 457, 764, 402, 481, 646, 765, 936, 766, - -36, -34, 805, 793, -29, 440, 495, 797, 827, 440, - 828, 812, 819, 822, 402, 869, 882, 779, 402, 891, - 893, 901, 911, 902, 910, 447, 912, 913, -578, 923, - 929, 928, 930, 941, 402, 600, 455, 933, 847, 942, - 848, 851, 497, 849, 425, 496, 850, 498, 724, 829, - 852, 887, 575, 894, 937, 895, 931, 938, 494, 891, - 914, 402, 875, 625, 452, 715, 783, 784, 785, 874, - 877, 879, 624, 884, 0, 881, 455, 878, 0, 0, - 0, 0, 880, 0, 0, 0, 0, 883, 0, 0, - 0, 0, 885, 0, 0, 0, 0, 0, 0, 0, + 585, 935, 478, 688, 695, 783, 464, 464, 703, 706, + 713, 464, 464, 464, 738, 739, 832, 685, 685, 833, + 488, 780, 832, 574, 861, 887, 333, 334, 335, 330, + 685, 499, 685, 727, 728, 729, 780, 910, 838, 839, + 500, 840, 841, 889, 846, 847, 891, 490, 545, 546, + 547, 548, 554, 650, 740, 549, 555, 556, 675, 557, + 646, 560, 568, 561, 562, 563, 564, 585, 585, 565, + 569, 570, 598, 660, 573, 579, 665, 501, 704, 743, + 585, 440, 585, 671, 744, 715, 891, 747, 741, 447, + 402, 750, 752, 574, 742, 753, 718, 403, 402, 410, + 403, 726, 923, 928, 388, 403, 402, 410, 386, 402, + 754, 756, 457, 757, 402, 481, 646, 758, 937, 761, + 763, -36, -34, 794, 764, 440, 495, 765, 766, 440, + 767, 798, -29, 806, 402, 813, 820, 823, 402, 828, + 892, 829, 855, 780, 870, 447, 883, 894, 902, 903, + 911, 912, 913, 914, 402, 924, -578, 455, 929, 930, + 600, 934, 848, 850, 942, 943, 851, 849, 852, 496, + 725, 931, 575, 853, 497, 498, 425, 830, 888, 895, + 892, 402, 932, 625, 938, 494, 896, 939, 915, 878, + 452, 716, 624, 875, 876, 784, 785, 455, 885, 880, + 0, 786, 879, 0, 0, 0, 882, 881, 0, 0, + 0, 0, 884, 0, 0, 0, 0, 0, 886, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 669, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 716, 0, 575, 0, 575, 0, + 0, 0, 0, 0, 717, 0, 575, 0, 575, 0, 0, 0, 0, 402, 0, 402, 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1776,75 +1776,29 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, - 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, + 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 625, 0, 0, 0, 625, 0, 0, 0, 0, 624, - 0, 0, 0, 624, 0, 0, 0, 0, 0, 0, + 0, 625, 0, 0, 0, 625, 0, 0, 0, 0, + 624, 0, 0, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 575, 0, 0, 0, 0, 0, 0, 0, - 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, + 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 625, 625, 0, 625, 0, - 410, 0, 0, 0, 624, 624, 0, 624, 0, 0, + 0, 0, 0, 0, 0, 0, 625, 625, 0, 625, + 0, 410, 0, 0, 0, 624, 624, 0, 624, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 0, 0, 0, - 0, 0, 0, 0, 0, 624, 0, 0, 0, 0, - 0, 0, 625, 0, 0, 0, 0, 0, 0, 625, - 0, 624, 0, 0, 0, 0, 0, 0, 624, 625, - 0, 0, 0, 625, 0, 0, 0, 0, 624, 625, - 0, 0, 624, 0, 0, 0, 451, 0, 624, 1, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, - 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 332, 333, 334, 335, 336, 0, - 0, 0, 0, 0, 0, 0, 0, 337, 338, 339, - 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 0, 0, 0, 0, 351, 0, 352, 353, 354, 355, - 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, - 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 0, 0, 0, 0, 0, 0, 0, 625, 0, 0, + 0, 0, 0, 0, 0, 0, 624, 0, 0, 0, + 0, 0, 0, 625, 0, 0, 0, 0, 0, 0, + 625, 0, 624, 0, 0, 0, 0, 0, 0, 624, + 625, 0, 0, 0, 625, 0, 0, 0, 0, 624, + 625, 0, 0, 624, 0, 0, 0, 451, 0, 624, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, @@ -1878,16 +1832,16 @@ static const yytype_int16 yytable[] = 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 510, 511, 0, 330, 0, 600, 601, 0, 0, 0, - 0, 602, 512, 513, 514, 515, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, - 0, 0, 0, 516, 517, 518, 519, 520, 337, 338, - 339, 340, 341, 342, 343, 603, 604, 605, 606, 0, - 607, 608, 609, 610, 611, 612, 613, 614, 615, 616, - 344, 345, 346, 347, 348, 349, 350, 521, 522, 523, - 524, 525, 526, 527, 528, 351, 617, 352, 353, 354, + 0, 0, 0, 0, 0, 0, 0, 0, 337, 338, + 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, + 0, 0, 0, 0, 0, 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, @@ -1926,7 +1880,7 @@ static const yytype_int16 yytable[] = 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 510, 511, 0, 330, 0, 600, 781, 0, 0, + 0, 510, 511, 0, 330, 0, 600, 601, 0, 0, 0, 0, 602, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, 519, 520, 337, @@ -1972,7 +1926,7 @@ static const yytype_int16 yytable[] = 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 510, 511, 0, 330, 0, 600, 0, 0, + 0, 0, 510, 511, 0, 330, 0, 600, 782, 0, 0, 0, 0, 602, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, 519, 520, @@ -2018,7 +1972,7 @@ static const yytype_int16 yytable[] = 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 510, 511, 0, 330, 0, 493, 0, + 0, 0, 0, 510, 511, 0, 330, 0, 600, 0, 0, 0, 0, 0, 602, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, 519, @@ -2064,7 +2018,7 @@ static const yytype_int16 yytable[] = 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 510, 511, 0, 330, 0, 0, + 0, 0, 0, 0, 510, 511, 0, 330, 0, 493, 0, 0, 0, 0, 0, 602, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, @@ -2115,10 +2069,10 @@ static const yytype_int16 yytable[] = 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, 519, 520, 337, 338, 339, 340, 341, 342, 343, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, + 603, 604, 605, 606, 0, 607, 608, 609, 610, 611, + 612, 613, 614, 615, 616, 344, 345, 346, 347, 348, 349, 350, 521, 522, 523, 524, 525, 526, 527, 528, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, + 351, 617, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 1, 2, 3, 4, @@ -2153,13 +2107,13 @@ static const yytype_int16 yytable[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 320, 321, 322, 323, 324, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 510, 511, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, + 0, 0, 0, 0, 0, 0, 510, 511, 0, 330, + 0, 0, 0, 0, 0, 0, 0, 602, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 0, 0, 0, 0, 516, + 0, 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, 519, 520, 337, 338, 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, 345, 346, 347, @@ -2199,18 +2153,18 @@ static const yytype_int16 yytable[] = 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 314, 315, 316, 0, 0, 0, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 330, 0, 0, 0, 0, 0, 0, 0, 331, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, - 0, 0, 0, 0, 0, 337, 338, 339, 340, 341, + 0, 0, 0, 0, 0, 0, 0, 510, 511, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, + 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 332, 333, 334, 335, 0, 0, 0, 0, + 516, 517, 518, 519, 520, 337, 338, 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, 345, 346, - 347, 348, 349, 350, 0, 0, 0, 0, 0, 0, - 0, 0, 351, 0, 352, 353, 354, 355, 356, 357, + 347, 348, 349, 350, 521, 522, 523, 524, 525, 526, + 527, 528, 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 1, 2, @@ -2245,16 +2199,16 @@ static const yytype_int16 yytable[] = 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 0, 0, 320, 321, 322, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 330, 0, 0, 0, 0, 0, 0, 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 333, 334, 335, 0, 0, 0, + 0, 0, 0, 332, 333, 334, 335, 336, 0, 0, 0, 0, 0, 0, 0, 0, 337, 338, 339, 340, - 341, 342, 343, 603, 0, 0, 606, 0, 607, 608, - 0, 0, 611, 0, 0, 0, 0, 0, 344, 345, + 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, @@ -2296,11 +2250,11 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 444, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, 0, - 0, 0, 0, 0, 0, 0, 445, 337, 338, 339, - 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, + 0, 0, 0, 0, 0, 0, 0, 337, 338, 339, + 340, 341, 342, 343, 603, 0, 0, 606, 0, 607, + 608, 0, 0, 611, 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, @@ -2341,10 +2295,10 @@ static const yytype_int16 yytable[] = 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 444, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 337, 338, + 0, 0, 0, 0, 0, 0, 0, 445, 337, 338, 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, @@ -2387,7 +2341,7 @@ static const yytype_int16 yytable[] = 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 720, 0, 0, + 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, @@ -2433,7 +2387,7 @@ static const yytype_int16 yytable[] = 0, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 833, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2479,7 +2433,7 @@ static const yytype_int16 yytable[] = 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 868, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2526,7 +2480,7 @@ static const yytype_int16 yytable[] = 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, 0, @@ -2536,7 +2490,97 @@ static const yytype_int16 yytable[] = 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 2, 3, 4, 5, 6, + 381, 382, 383, 384, 385, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, 0, 0, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 332, 333, 334, 335, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, + 349, 350, 0, 0, 0, 0, 0, 0, 0, 0, + 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 0, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 0, 0, 0, 0, 0, 0, 323, 0, 0, + 0, 327, 328, 329, 0, 0, 508, 509, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 510, 511, 0, 0, 0, + 645, 789, 0, 0, 0, 0, 0, 512, 513, 514, + 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, + 518, 519, 520, 337, 0, 0, 0, 0, 342, 343, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 521, 522, 523, 524, 525, 526, 527, 528, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 364, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -2572,7 +2616,7 @@ static const yytype_int16 yytable[] = 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, 0, 0, 0, 645, - 788, 0, 0, 0, 0, 0, 512, 513, 514, 515, + 900, 0, 0, 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, 337, 0, 0, 0, 0, 342, 343, 0, @@ -2615,7 +2659,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 323, 0, 0, 0, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 510, 511, 0, 0, 0, 645, 899, + 0, 0, 0, 510, 511, 0, 0, 584, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, @@ -2659,7 +2703,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 323, 0, 0, 0, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 510, 511, 0, 0, 584, 0, 0, 0, + 0, 0, 510, 511, 0, 0, 0, 645, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, @@ -2703,7 +2747,7 @@ static const yytype_int16 yytable[] = 0, 0, 0, 323, 0, 0, 0, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 510, 511, 0, 0, 0, 645, 0, 0, 0, + 0, 510, 511, 0, 0, 748, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, 337, @@ -2747,8 +2791,8 @@ static const yytype_int16 yytable[] = 0, 0, 323, 0, 0, 0, 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 510, 511, 0, 0, 747, 0, 0, 0, 0, 0, - 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, + 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 759, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, 337, 0, 0, 0, 0, 342, 343, 0, 0, 0, 0, 0, @@ -2792,7 +2836,7 @@ static const yytype_int16 yytable[] = 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 758, 512, 513, 514, 515, 0, 0, 0, 0, 0, + 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, 337, 0, 0, 0, 0, 342, 343, 0, 0, 0, 0, 0, 0, @@ -2839,7 +2883,7 @@ static const yytype_int16 yytable[] = 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, 337, 0, 0, 0, - 0, 342, 343, 0, 0, 0, 0, 0, 0, 0, + 0, 342, 663, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 522, 523, 524, 525, 526, 527, 528, 0, 0, 0, 0, 0, 0, 0, @@ -2882,8 +2926,8 @@ static const yytype_int16 yytable[] = 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 516, 517, 518, 519, 520, 337, 0, 0, 0, 0, - 342, 663, 0, 0, 0, 0, 0, 0, 0, 0, + 516, 517, 518, 519, 708, 337, 0, 0, 0, 0, + 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, 522, 523, 524, 525, 526, 527, 528, 0, 0, 0, 0, 0, 0, 0, 0, @@ -2920,114 +2964,71 @@ static const yytype_int16 yytable[] = 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 327, 328, 329, 0, 0, 508, 509, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 510, 511, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 512, 513, - 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 516, - 517, 518, 519, 708, 337, 0, 0, 0, 0, 342, - 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 521, 522, 523, 524, 525, 526, 527, - 528, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 364, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 0, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 0, 0, 0, 0, 0, 0, 323, 0, 0, - 0, 327, 328, 329, 0, 0, 0, 0, 0, 0, + 0, 0, 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 337, 0, 0, 0, 0, 342, 343 + 0, 0, 0, 0, 337, 0, 0, 0, 0, 342, + 343 }; static const yytype_int16 yycheck[] = { - 0, 391, 0, 410, 0, 502, 490, 0, 415, 0, - 443, 511, 631, 551, 448, 561, 449, 410, 750, 578, - 410, 556, 576, 399, 353, 415, 422, 353, 341, 567, - 356, 643, 354, 645, 353, 570, 648, 353, 358, 364, - 537, 336, 337, 361, 579, 435, 356, 358, 357, 390, - 361, 354, 361, 364, 364, 373, 490, 386, 387, 388, - 389, 387, 356, 439, 377, 390, 499, 500, 387, 363, - 390, 387, 556, 414, 508, 509, 356, 372, 373, 455, - 912, 334, 335, 567, 364, 354, 570, 919, 355, 354, - 649, 356, 482, 356, 361, 579, 354, 929, 363, 355, - 363, 354, 356, 356, 354, 361, 540, 360, 387, 363, - 610, 390, 612, 354, 598, 417, 418, 419, 420, 421, - 422, 423, 556, 343, 344, 345, 346, 347, 348, 349, - 350, 351, 352, 567, 355, 754, 570, 356, 355, 361, - 361, 549, 364, 363, 361, 579, 643, 555, 645, 557, - 354, 648, 560, 549, 562, 357, 564, 565, 658, 361, - 355, 569, 332, 333, 598, 662, 361, 355, 722, 565, - 355, 355, 355, 361, 355, 787, 361, 361, 361, 355, - 361, 355, 364, 355, 355, 361, 576, 361, 578, 361, - 361, 355, 361, 355, 355, 364, 355, 361, 574, 361, - 361, 933, 361, 355, 355, 355, 355, 355, 355, 361, - 361, 361, 361, 361, 361, 355, 355, 355, 338, 339, - 357, 361, 361, 361, 361, 355, 386, 387, 388, 389, - 390, 372, 387, 667, 641, 390, 855, 359, 792, 361, - 386, 387, 388, 389, 733, 734, 735, 736, 641, 354, - 361, 641, 361, 364, 387, 867, 756, 390, 387, 649, - 760, 390, 387, 387, 387, 390, 390, 390, 387, 361, - 362, 390, 818, 819, 354, 387, 811, 812, 390, 364, - 387, 778, 779, 390, 717, 387, 824, 366, 390, 368, - 787, 354, 726, 727, 728, 729, 730, 731, 732, 733, - 734, 735, 736, 737, 738, 739, 740, 741, 742, 743, - 744, 923, 387, 361, 361, 390, 364, 364, 361, 390, - 939, 364, 379, 380, 381, 361, 362, 811, 812, 369, - 370, 371, 722, 358, 729, 730, 390, 731, 732, 390, - 824, 390, 826, 358, 356, 737, 738, 356, 390, 390, - 355, 390, 363, 853, 364, 361, 856, 364, 361, 363, - 361, 363, 361, 390, 361, 342, 361, 361, 355, 361, - 867, 361, 361, 361, 354, 356, 355, 811, 812, 354, - 354, 353, 390, 356, 340, 354, 357, 357, 354, 357, - 824, 391, 826, 376, 359, 354, 896, 375, 374, 399, - 391, 364, 792, 364, 390, 390, 364, 407, 399, 407, - 410, 407, 909, 913, 407, 415, 407, 415, 354, 410, - 362, 364, 415, 364, 415, 425, 923, 364, 928, 364, - 354, 354, 363, 390, 355, 435, 434, 390, 355, 439, - 355, 361, 361, 361, 435, 357, 353, 361, 439, 856, - 398, 353, 390, 387, 359, 455, 355, 354, 358, 363, - 355, 364, 402, 364, 455, 358, 856, 358, 739, 359, - 740, 743, 439, 741, 336, 435, 742, 439, 581, 716, - 744, 831, 482, 858, 929, 858, 918, 930, 433, 896, - 896, 482, 809, 493, 407, 572, 641, 641, 641, 807, - 812, 816, 493, 824, -1, 819, 896, 814, -1, -1, - -1, -1, 818, -1, -1, -1, -1, 822, -1, -1, - -1, -1, 826, -1, -1, -1, -1, -1, -1, -1, + 0, 391, 0, 410, 502, 490, 631, 0, 415, 0, + 511, 0, 443, 448, 567, 551, 410, 561, 449, 576, + 410, 751, 399, 556, 422, 415, 578, 336, 337, 341, + 643, 567, 645, 353, 358, 648, 356, 570, 353, 537, + 361, 364, 353, 913, 357, 435, 579, 354, 361, 356, + 920, 390, 373, 353, 364, 490, 363, 334, 335, 354, + 930, 354, 439, 372, 373, 377, 390, 387, 499, 500, + 354, 556, 387, 508, 509, 414, 387, 354, 455, 356, + 390, 354, 567, 360, 355, 570, 386, 387, 388, 389, + 361, 356, 482, 356, 579, 356, 355, 649, 356, 364, + 363, 372, 361, 364, 549, 540, 366, 356, 368, 610, + 555, 612, 557, 598, 363, 560, 356, 562, 355, 564, + 565, 556, 358, 363, 569, 361, 361, 355, 364, 364, + 755, 387, 567, 361, 390, 570, 417, 418, 419, 420, + 421, 422, 423, 355, 579, 643, 355, 645, 355, 361, + 648, 549, 361, 355, 361, 355, 355, 658, 359, 361, + 361, 361, 361, 598, 662, 355, 723, 565, 355, 357, + 354, 361, 354, 361, 361, 788, 343, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 576, 355, 578, 355, + 361, 362, 355, 361, 355, 361, 363, 574, 361, 355, + 361, 355, 355, 355, 934, 361, 355, 361, 361, 361, + 355, 355, 361, 355, 355, 355, 361, 361, 355, 361, + 361, 361, 355, 355, 361, 354, 357, 354, 361, 361, + 361, 856, 667, 361, 641, 354, 793, 354, 386, 387, + 388, 389, 390, 386, 387, 388, 389, 641, 372, 387, + 361, 641, 390, 364, 361, 868, 757, 364, 358, 649, + 761, 734, 735, 736, 737, 387, 387, 387, 390, 390, + 390, 364, 825, 358, 827, 819, 820, 332, 333, 812, + 813, 779, 780, 387, 390, 387, 390, 718, 390, 825, + 788, 390, 727, 728, 729, 730, 731, 732, 733, 734, + 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, + 745, 924, 390, 387, 387, 940, 390, 390, 387, 387, + 387, 390, 390, 390, 338, 339, 361, 812, 813, 364, + 390, 361, 361, 723, 364, 364, 379, 380, 381, 356, + 825, 390, 827, 369, 370, 371, 361, 362, 730, 731, + 390, 732, 733, 854, 738, 739, 857, 356, 355, 390, + 364, 363, 363, 390, 376, 361, 361, 361, 390, 361, + 868, 361, 355, 361, 361, 361, 361, 812, 813, 361, + 361, 354, 356, 355, 364, 363, 354, 354, 353, 340, + 825, 391, 827, 356, 342, 357, 897, 357, 375, 399, + 391, 359, 354, 793, 374, 364, 390, 407, 399, 407, + 410, 390, 910, 914, 407, 415, 407, 415, 407, 410, + 364, 354, 415, 354, 415, 425, 924, 364, 929, 354, + 362, 354, 354, 390, 364, 435, 434, 364, 364, 439, + 364, 390, 355, 363, 435, 361, 361, 361, 439, 355, + 857, 355, 357, 361, 357, 455, 353, 398, 353, 387, + 359, 390, 355, 354, 455, 363, 358, 857, 364, 355, + 358, 358, 740, 742, 364, 359, 743, 741, 744, 435, + 581, 402, 482, 745, 439, 439, 336, 717, 832, 859, + 897, 482, 919, 493, 930, 433, 859, 931, 897, 813, + 407, 572, 493, 808, 810, 641, 641, 897, 825, 817, + -1, 641, 815, -1, -1, -1, 820, 819, -1, -1, + -1, -1, 823, -1, -1, -1, -1, -1, 827, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 545, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -3047,75 +3048,29 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 722, -1, -1, -1, -1, -1, -1, -1, - -1, 722, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 723, -1, -1, -1, -1, -1, -1, + -1, -1, 723, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 750, -1, -1, -1, 754, -1, -1, -1, -1, 750, - -1, -1, -1, 754, -1, -1, -1, -1, -1, -1, + -1, 751, -1, -1, -1, 755, -1, -1, -1, -1, + 751, -1, -1, -1, 755, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 792, -1, -1, -1, -1, -1, -1, -1, - -1, 792, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 793, -1, -1, -1, -1, -1, -1, + -1, -1, 793, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 855, 856, -1, 858, -1, - 858, -1, -1, -1, 855, 856, -1, 858, -1, -1, + -1, -1, -1, -1, -1, -1, 856, 857, -1, 859, + -1, 859, -1, -1, -1, 856, 857, -1, 859, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 896, -1, -1, -1, - -1, -1, -1, -1, -1, 896, -1, -1, -1, -1, - -1, -1, 912, -1, -1, -1, -1, -1, -1, 919, - -1, 912, -1, -1, -1, -1, -1, -1, 919, 929, - -1, -1, -1, 933, -1, -1, -1, -1, 929, 939, - -1, -1, 933, -1, -1, -1, 0, -1, 939, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, - 364, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 378, 379, 380, 381, 382, -1, - -1, -1, -1, -1, -1, -1, -1, 391, 392, 393, - 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - -1, -1, -1, -1, 428, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + -1, -1, -1, -1, -1, -1, -1, 897, -1, -1, + -1, -1, -1, -1, -1, -1, 897, -1, -1, -1, + -1, -1, -1, 913, -1, -1, -1, -1, -1, -1, + 920, -1, 913, -1, -1, -1, -1, -1, -1, 920, + 930, -1, -1, -1, 934, -1, -1, -1, -1, 930, + 940, -1, -1, 934, -1, -1, -1, 0, -1, 940, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, @@ -3149,16 +3104,16 @@ static const yytype_int16 yycheck[] = 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, - -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 353, 354, -1, 356, -1, 358, 359, -1, -1, -1, - -1, 364, 365, 366, 367, 368, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 356, -1, -1, -1, -1, -1, -1, + -1, 364, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, 382, - -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, - 393, 394, 395, 396, 397, 398, 399, 400, 401, -1, - 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, - 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, - 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, + -1, -1, -1, -1, -1, -1, -1, -1, 391, 392, + 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 413, 414, 415, 416, 417, 418, 419, -1, -1, -1, + -1, -1, -1, -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, @@ -3243,7 +3198,7 @@ static const yytype_int16 yycheck[] = 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 353, 354, -1, 356, -1, 358, -1, -1, + -1, -1, 353, 354, -1, 356, -1, 358, 359, -1, -1, -1, -1, 364, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, 382, -1, -1, -1, 386, 387, 388, 389, 390, @@ -3335,7 +3290,7 @@ static const yytype_int16 yycheck[] = 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 353, 354, -1, 356, -1, -1, + -1, -1, -1, -1, 353, 354, -1, 356, -1, 358, -1, -1, -1, -1, -1, 364, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, 382, -1, -1, -1, 386, 387, 388, @@ -3386,10 +3341,10 @@ static const yytype_int16 yycheck[] = 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, 382, -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 413, 414, 415, 416, 417, + 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 3, 4, 5, 6, @@ -3424,13 +3379,13 @@ static const yytype_int16 yycheck[] = 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, -1, -1, 322, 323, 324, 325, 326, + 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 353, 354, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 365, 366, + -1, -1, -1, -1, -1, -1, 353, 354, -1, 356, + -1, -1, -1, -1, -1, -1, -1, 364, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 378, 379, 380, 381, -1, -1, -1, -1, 386, + -1, 378, 379, 380, 381, 382, -1, -1, -1, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, 416, @@ -3470,18 +3425,18 @@ static const yytype_int16 yycheck[] = 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 316, 317, 318, -1, -1, -1, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 356, -1, -1, -1, -1, -1, -1, -1, 364, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 378, 379, 380, 381, 382, -1, -1, -1, - -1, -1, -1, -1, -1, 391, 392, 393, 394, 395, + -1, -1, -1, -1, -1, -1, -1, 353, 354, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 365, + 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 378, 379, 380, 381, -1, -1, -1, -1, + 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, - 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, - -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 3, 4, @@ -3516,16 +3471,16 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, -1, -1, -1, 322, 323, 324, + 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 356, -1, -1, -1, -1, -1, -1, -1, 364, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 378, 379, 380, 381, -1, -1, -1, + -1, -1, -1, 378, 379, 380, 381, 382, -1, -1, -1, -1, -1, -1, -1, -1, 391, 392, 393, 394, - 395, 396, 397, 398, -1, -1, 401, -1, 403, 404, - -1, -1, 407, -1, -1, -1, -1, -1, 413, 414, + 395, 396, 397, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, @@ -3567,11 +3522,11 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 364, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, -1, -1, - -1, -1, -1, -1, -1, -1, 390, 391, 392, 393, - 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, + -1, -1, -1, -1, -1, -1, -1, 391, 392, 393, + 394, 395, 396, 397, 398, -1, -1, 401, -1, 403, + 404, -1, -1, 407, -1, -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, @@ -3612,10 +3567,10 @@ static const yytype_int16 yycheck[] = 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 364, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 391, 392, + -1, -1, -1, -1, -1, -1, -1, 390, 391, 392, 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, -1, -1, -1, @@ -3658,7 +3613,7 @@ static const yytype_int16 yycheck[] = 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 359, -1, -1, + -1, -1, -1, -1, 356, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, 391, @@ -3797,7 +3752,7 @@ static const yytype_int16 yycheck[] = 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, 391, 392, 393, 394, 395, 396, 397, -1, @@ -3807,7 +3762,97 @@ static const yytype_int16 yycheck[] = -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 4, 5, 6, 7, 8, + 459, 460, 461, 462, 463, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, -1, -1, -1, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 391, 392, 393, 394, 395, 396, 397, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 413, 414, 415, 416, 417, + 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, + 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, -1, -1, -1, -1, -1, -1, 325, -1, -1, + -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 353, 354, -1, -1, -1, + 358, 359, -1, -1, -1, -1, -1, 365, 366, 367, + 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, + 388, 389, 390, 391, -1, -1, -1, -1, 396, 397, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 442, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, @@ -3886,7 +3931,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, -1, 325, -1, -1, -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 353, 354, -1, -1, -1, 358, 359, + -1, -1, -1, 353, 354, -1, -1, 357, -1, -1, -1, -1, -1, -1, -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, @@ -3930,7 +3975,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, -1, 325, -1, -1, -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 353, 354, -1, -1, 357, -1, -1, -1, + -1, -1, 353, 354, -1, -1, -1, 358, -1, -1, -1, -1, -1, -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, @@ -3974,7 +4019,7 @@ static const yytype_int16 yycheck[] = -1, -1, -1, 325, -1, -1, -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 353, 354, -1, -1, -1, 358, -1, -1, -1, + -1, 353, 354, -1, -1, 357, -1, -1, -1, -1, -1, -1, -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, @@ -4018,8 +4063,8 @@ static const yytype_int16 yycheck[] = -1, -1, 325, -1, -1, -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 353, 354, -1, -1, 357, -1, -1, -1, -1, -1, - -1, -1, 365, 366, 367, 368, -1, -1, -1, -1, + 353, 354, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 364, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, @@ -4063,7 +4108,7 @@ static const yytype_int16 yycheck[] = 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 353, 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 364, 365, 366, 367, 368, -1, -1, -1, -1, -1, + -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, @@ -4191,57 +4236,14 @@ static const yytype_int16 yycheck[] = 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, - -1, -1, 329, 330, 331, -1, -1, 334, 335, -1, + -1, -1, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 353, 354, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 365, 366, - 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, - 387, 388, 389, 390, 391, -1, -1, -1, -1, 396, - 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 420, 421, 422, 423, 424, 425, 426, - 427, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 442, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, -1, -1, -1, -1, -1, -1, 325, -1, -1, - -1, 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 391, -1, -1, -1, -1, 396, 397 + -1, -1, -1, -1, 391, -1, -1, -1, -1, 396, + 397 }; /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing @@ -4319,30 +4321,30 @@ static const yytype_int16 yystos[] = 388, 389, 580, 581, 387, 489, 494, 582, 387, 386, 387, 388, 389, 585, 586, 387, 386, 387, 388, 389, 465, 587, 588, 387, 353, 589, 387, 594, 390, 494, - 591, 592, 387, 494, 357, 574, 520, 390, 532, 533, - 359, 531, 530, 494, 513, 390, 369, 370, 371, 366, - 368, 332, 333, 336, 337, 372, 373, 338, 339, 376, - 375, 374, 340, 342, 341, 377, 357, 357, 489, 359, - 541, 354, 364, 364, 562, 354, 354, 364, 364, 493, - 354, 493, 362, 364, 364, 364, 364, 343, 344, 345, - 346, 347, 348, 349, 350, 351, 352, 363, 492, 361, - 364, 359, 537, 551, 555, 560, 534, 363, 359, 534, - 535, 534, 530, 390, 355, 468, 493, 390, 491, 476, - 353, 387, 577, 578, 355, 363, 355, 361, 355, 361, - 355, 361, 361, 355, 361, 355, 361, 355, 361, 361, - 355, 361, 361, 355, 361, 355, 361, 355, 355, 532, - 521, 361, 364, 359, 476, 476, 476, 478, 478, 479, - 479, 480, 480, 480, 480, 481, 481, 482, 483, 484, - 485, 486, 487, 490, 357, 548, 561, 537, 563, 493, - 364, 493, 362, 491, 491, 534, 359, 361, 359, 357, - 357, 361, 357, 361, 581, 580, 494, 582, 586, 585, - 588, 587, 353, 589, 591, 592, 364, 533, 493, 542, - 493, 508, 553, 398, 536, 549, 564, 355, 355, 359, - 534, 353, 387, 355, 355, 355, 355, 355, 355, 362, - 359, 390, 355, 354, 553, 565, 566, 544, 545, 546, - 552, 556, 491, 363, 538, 543, 547, 493, 364, 355, - 402, 540, 538, 358, 534, 355, 493, 543, 544, 548, - 557, 364, 359 + 525, 591, 592, 387, 494, 357, 574, 520, 390, 532, + 533, 359, 531, 530, 494, 513, 390, 369, 370, 371, + 366, 368, 332, 333, 336, 337, 372, 373, 338, 339, + 376, 375, 374, 340, 342, 341, 377, 357, 357, 489, + 359, 541, 354, 364, 364, 562, 354, 354, 364, 364, + 493, 354, 493, 362, 364, 364, 364, 364, 343, 344, + 345, 346, 347, 348, 349, 350, 351, 352, 363, 492, + 361, 364, 359, 537, 551, 555, 560, 534, 363, 359, + 534, 535, 534, 530, 390, 355, 468, 493, 390, 491, + 476, 353, 387, 577, 578, 355, 363, 355, 361, 355, + 361, 355, 361, 361, 355, 361, 355, 361, 355, 361, + 361, 355, 361, 361, 355, 361, 355, 361, 355, 355, + 532, 521, 361, 364, 359, 476, 476, 476, 478, 478, + 479, 479, 480, 480, 480, 480, 481, 481, 482, 483, + 484, 485, 486, 487, 490, 357, 548, 561, 537, 563, + 493, 364, 493, 362, 491, 491, 534, 359, 361, 359, + 357, 357, 361, 357, 361, 581, 580, 494, 582, 586, + 585, 588, 587, 353, 589, 591, 592, 364, 533, 493, + 542, 493, 508, 553, 398, 536, 549, 564, 355, 355, + 359, 534, 353, 387, 355, 355, 355, 355, 355, 355, + 362, 359, 390, 355, 354, 553, 565, 566, 544, 545, + 546, 552, 556, 491, 363, 538, 543, 547, 493, 364, + 355, 402, 540, 538, 358, 534, 355, 493, 543, 544, + 548, 557, 364, 359 }; /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ @@ -4417,7 +4419,7 @@ static const yytype_int16 yyr1[] = 583, 583, 584, 584, 584, 584, 584, 584, 584, 584, 585, 585, 586, 586, 586, 586, 587, 587, 588, 588, 588, 588, 588, 589, 589, 590, 590, 590, 590, 591, - 591, 592, 593, 593, 594, 594, 595, 595 + 591, 592, 592, 593, 593, 594, 594, 595, 595 }; /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ @@ -4492,7 +4494,7 @@ static const yytype_int8 yyr2[] = 4, 6, 4, 6, 6, 8, 6, 8, 6, 8, 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 3, 6, 8, 4, 6, 1, - 3, 1, 4, 6, 1, 3, 3, 3 + 3, 1, 1, 4, 6, 1, 3, 3, 3 }; @@ -5242,7 +5244,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5246 "MachineIndependent/glslang_tab.cpp" +#line 5248 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ @@ -5250,7 +5252,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5254 "MachineIndependent/glslang_tab.cpp" +#line 5256 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ @@ -5260,7 +5262,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5264 "MachineIndependent/glslang_tab.cpp" +#line 5266 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ @@ -5268,7 +5270,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5272 "MachineIndependent/glslang_tab.cpp" +#line 5274 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ @@ -5276,7 +5278,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5280 "MachineIndependent/glslang_tab.cpp" +#line 5282 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ @@ -5285,7 +5287,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5289 "MachineIndependent/glslang_tab.cpp" +#line 5291 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ @@ -5293,7 +5295,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5297 "MachineIndependent/glslang_tab.cpp" +#line 5299 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ @@ -5301,7 +5303,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5305 "MachineIndependent/glslang_tab.cpp" +#line 5307 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ @@ -5310,7 +5312,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5314 "MachineIndependent/glslang_tab.cpp" +#line 5316 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ @@ -5319,7 +5321,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5323 "MachineIndependent/glslang_tab.cpp" +#line 5325 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ @@ -5328,7 +5330,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5332 "MachineIndependent/glslang_tab.cpp" +#line 5334 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ @@ -5337,7 +5339,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5341 "MachineIndependent/glslang_tab.cpp" +#line 5343 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ @@ -5346,7 +5348,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5350 "MachineIndependent/glslang_tab.cpp" +#line 5352 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ @@ -5355,7 +5357,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5359 "MachineIndependent/glslang_tab.cpp" +#line 5361 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ @@ -5366,7 +5368,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5370 "MachineIndependent/glslang_tab.cpp" +#line 5372 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ @@ -5375,7 +5377,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5379 "MachineIndependent/glslang_tab.cpp" +#line 5381 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ @@ -5383,7 +5385,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5387 "MachineIndependent/glslang_tab.cpp" +#line 5389 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ @@ -5391,7 +5393,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5395 "MachineIndependent/glslang_tab.cpp" +#line 5397 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ @@ -5399,7 +5401,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5403 "MachineIndependent/glslang_tab.cpp" +#line 5405 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ @@ -5407,7 +5409,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5411 "MachineIndependent/glslang_tab.cpp" +#line 5413 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ @@ -5417,7 +5419,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5421 "MachineIndependent/glslang_tab.cpp" +#line 5423 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ @@ -5427,7 +5429,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5431 "MachineIndependent/glslang_tab.cpp" +#line 5433 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ @@ -5436,7 +5438,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5440 "MachineIndependent/glslang_tab.cpp" +#line 5442 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ @@ -5445,7 +5447,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5449 "MachineIndependent/glslang_tab.cpp" +#line 5451 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ @@ -5453,7 +5455,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5457 "MachineIndependent/glslang_tab.cpp" +#line 5459 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ @@ -5462,7 +5464,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5466 "MachineIndependent/glslang_tab.cpp" +#line 5468 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ @@ -5471,7 +5473,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5475 "MachineIndependent/glslang_tab.cpp" +#line 5477 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ @@ -5479,7 +5481,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5483 "MachineIndependent/glslang_tab.cpp" +#line 5485 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ @@ -5487,7 +5489,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 5491 "MachineIndependent/glslang_tab.cpp" +#line 5493 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ @@ -5499,7 +5501,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5503 "MachineIndependent/glslang_tab.cpp" +#line 5505 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ @@ -5511,7 +5513,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5515 "MachineIndependent/glslang_tab.cpp" +#line 5517 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ @@ -5519,7 +5521,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[-1].interm); } -#line 5523 "MachineIndependent/glslang_tab.cpp" +#line 5525 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ @@ -5529,7 +5531,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5533 "MachineIndependent/glslang_tab.cpp" +#line 5535 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ @@ -5561,7 +5563,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5565 "MachineIndependent/glslang_tab.cpp" +#line 5567 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ @@ -5571,7 +5573,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5575 "MachineIndependent/glslang_tab.cpp" +#line 5577 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ @@ -5582,7 +5584,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5586 "MachineIndependent/glslang_tab.cpp" +#line 5588 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ @@ -5591,7 +5593,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5595 "MachineIndependent/glslang_tab.cpp" +#line 5597 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ @@ -5600,7 +5602,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5604 "MachineIndependent/glslang_tab.cpp" +#line 5606 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ @@ -5621,38 +5623,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5625 "MachineIndependent/glslang_tab.cpp" +#line 5627 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ #line 629 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5631 "MachineIndependent/glslang_tab.cpp" +#line 5633 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ #line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5637 "MachineIndependent/glslang_tab.cpp" +#line 5639 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ #line 631 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5643 "MachineIndependent/glslang_tab.cpp" +#line 5645 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ #line 632 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5650 "MachineIndependent/glslang_tab.cpp" +#line 5652 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ #line 638 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5656 "MachineIndependent/glslang_tab.cpp" +#line 5658 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ @@ -5662,7 +5664,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5666 "MachineIndependent/glslang_tab.cpp" +#line 5668 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ @@ -5672,7 +5674,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5676 "MachineIndependent/glslang_tab.cpp" +#line 5678 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ @@ -5683,13 +5685,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5687 "MachineIndependent/glslang_tab.cpp" +#line 5689 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ #line 658 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5693 "MachineIndependent/glslang_tab.cpp" +#line 5695 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ @@ -5699,7 +5701,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5703 "MachineIndependent/glslang_tab.cpp" +#line 5705 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ @@ -5709,13 +5711,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5713 "MachineIndependent/glslang_tab.cpp" +#line 5715 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ #line 672 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5719 "MachineIndependent/glslang_tab.cpp" +#line 5721 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ @@ -5726,7 +5728,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5730 "MachineIndependent/glslang_tab.cpp" +#line 5732 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ @@ -5737,13 +5739,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5741 "MachineIndependent/glslang_tab.cpp" +#line 5743 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ #line 688 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5747 "MachineIndependent/glslang_tab.cpp" +#line 5749 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ @@ -5753,7 +5755,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5757 "MachineIndependent/glslang_tab.cpp" +#line 5759 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ @@ -5763,7 +5765,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5767 "MachineIndependent/glslang_tab.cpp" +#line 5769 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ @@ -5773,7 +5775,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5777 "MachineIndependent/glslang_tab.cpp" +#line 5779 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ @@ -5783,13 +5785,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5787 "MachineIndependent/glslang_tab.cpp" +#line 5789 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ #line 712 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5793 "MachineIndependent/glslang_tab.cpp" +#line 5795 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ @@ -5803,7 +5805,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5807 "MachineIndependent/glslang_tab.cpp" +#line 5809 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ @@ -5817,13 +5819,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5821 "MachineIndependent/glslang_tab.cpp" +#line 5823 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ #line 734 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5827 "MachineIndependent/glslang_tab.cpp" +#line 5829 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ @@ -5834,13 +5836,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5838 "MachineIndependent/glslang_tab.cpp" +#line 5840 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ #line 744 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5844 "MachineIndependent/glslang_tab.cpp" +#line 5846 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ @@ -5851,13 +5853,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5855 "MachineIndependent/glslang_tab.cpp" +#line 5857 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ #line 754 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5861 "MachineIndependent/glslang_tab.cpp" +#line 5863 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ @@ -5868,13 +5870,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5872 "MachineIndependent/glslang_tab.cpp" +#line 5874 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ #line 764 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5878 "MachineIndependent/glslang_tab.cpp" +#line 5880 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ @@ -5884,13 +5886,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5888 "MachineIndependent/glslang_tab.cpp" +#line 5890 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ #line 773 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5894 "MachineIndependent/glslang_tab.cpp" +#line 5896 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ @@ -5900,13 +5902,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5904 "MachineIndependent/glslang_tab.cpp" +#line 5906 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ #line 782 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5910 "MachineIndependent/glslang_tab.cpp" +#line 5912 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ @@ -5916,13 +5918,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5920 "MachineIndependent/glslang_tab.cpp" +#line 5922 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ #line 791 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5926 "MachineIndependent/glslang_tab.cpp" +#line 5928 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ @@ -5930,7 +5932,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { ++parseContext.controlFlowNestingLevel; } -#line 5934 "MachineIndependent/glslang_tab.cpp" +#line 5936 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ @@ -5947,13 +5949,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5951 "MachineIndependent/glslang_tab.cpp" +#line 5953 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ #line 810 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5957 "MachineIndependent/glslang_tab.cpp" +#line 5959 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ @@ -5971,7 +5973,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5975 "MachineIndependent/glslang_tab.cpp" +#line 5977 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ @@ -5980,7 +5982,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5984 "MachineIndependent/glslang_tab.cpp" +#line 5986 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ @@ -5989,7 +5991,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5993 "MachineIndependent/glslang_tab.cpp" +#line 5995 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ @@ -5998,7 +6000,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 6002 "MachineIndependent/glslang_tab.cpp" +#line 6004 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ @@ -6008,7 +6010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 6012 "MachineIndependent/glslang_tab.cpp" +#line 6014 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ @@ -6017,7 +6019,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 6021 "MachineIndependent/glslang_tab.cpp" +#line 6023 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ @@ -6026,7 +6028,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6030 "MachineIndependent/glslang_tab.cpp" +#line 6032 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ @@ -6035,7 +6037,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6039 "MachineIndependent/glslang_tab.cpp" +#line 6041 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ @@ -6044,7 +6046,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6048 "MachineIndependent/glslang_tab.cpp" +#line 6050 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ @@ -6053,7 +6055,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6057 "MachineIndependent/glslang_tab.cpp" +#line 6059 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ @@ -6062,7 +6064,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6066 "MachineIndependent/glslang_tab.cpp" +#line 6068 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ @@ -6071,7 +6073,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6075 "MachineIndependent/glslang_tab.cpp" +#line 6077 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ @@ -6079,7 +6081,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6083 "MachineIndependent/glslang_tab.cpp" +#line 6085 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ @@ -6092,7 +6094,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6096 "MachineIndependent/glslang_tab.cpp" +#line 6098 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ @@ -6101,7 +6103,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6105 "MachineIndependent/glslang_tab.cpp" +#line 6107 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ @@ -6111,7 +6113,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6115 "MachineIndependent/glslang_tab.cpp" +#line 6117 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ @@ -6123,7 +6125,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6127 "MachineIndependent/glslang_tab.cpp" +#line 6129 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ @@ -6133,7 +6135,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6137 "MachineIndependent/glslang_tab.cpp" +#line 6139 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ @@ -6143,7 +6145,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6147 "MachineIndependent/glslang_tab.cpp" +#line 6149 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ @@ -6155,7 +6157,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6159 "MachineIndependent/glslang_tab.cpp" +#line 6161 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ @@ -6164,7 +6166,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6168 "MachineIndependent/glslang_tab.cpp" +#line 6170 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ @@ -6173,7 +6175,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6177 "MachineIndependent/glslang_tab.cpp" +#line 6179 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ @@ -6182,7 +6184,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6186 "MachineIndependent/glslang_tab.cpp" +#line 6188 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ @@ -6192,7 +6194,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6196 "MachineIndependent/glslang_tab.cpp" +#line 6198 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ @@ -6202,7 +6204,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6206 "MachineIndependent/glslang_tab.cpp" +#line 6208 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ @@ -6213,13 +6215,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6217 "MachineIndependent/glslang_tab.cpp" +#line 6219 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ #line 958 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6223 "MachineIndependent/glslang_tab.cpp" +#line 6225 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ @@ -6233,7 +6235,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6237 "MachineIndependent/glslang_tab.cpp" +#line 6239 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ @@ -6242,7 +6244,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6246 "MachineIndependent/glslang_tab.cpp" +#line 6248 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ @@ -6251,7 +6253,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6255 "MachineIndependent/glslang_tab.cpp" +#line 6257 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ @@ -6260,7 +6262,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6264 "MachineIndependent/glslang_tab.cpp" +#line 6266 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ @@ -6271,7 +6273,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6275 "MachineIndependent/glslang_tab.cpp" +#line 6277 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ @@ -6282,7 +6284,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6286 "MachineIndependent/glslang_tab.cpp" +#line 6288 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ @@ -6294,7 +6296,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6298 "MachineIndependent/glslang_tab.cpp" +#line 6300 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ @@ -6302,7 +6304,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6306 "MachineIndependent/glslang_tab.cpp" +#line 6308 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ @@ -6310,7 +6312,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6314 "MachineIndependent/glslang_tab.cpp" +#line 6316 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ @@ -6323,7 +6325,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6327 "MachineIndependent/glslang_tab.cpp" +#line 6329 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ @@ -6345,7 +6347,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6349 "MachineIndependent/glslang_tab.cpp" +#line 6351 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ @@ -6369,7 +6371,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6373 "MachineIndependent/glslang_tab.cpp" +#line 6375 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ @@ -6389,7 +6391,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6393 "MachineIndependent/glslang_tab.cpp" +#line 6395 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ @@ -6413,7 +6415,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6417 "MachineIndependent/glslang_tab.cpp" +#line 6419 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ @@ -6429,7 +6431,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6433 "MachineIndependent/glslang_tab.cpp" +#line 6435 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ @@ -6441,7 +6443,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6445 "MachineIndependent/glslang_tab.cpp" +#line 6447 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ @@ -6456,7 +6458,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6460 "MachineIndependent/glslang_tab.cpp" +#line 6462 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ @@ -6468,7 +6470,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); } -#line 6472 "MachineIndependent/glslang_tab.cpp" +#line 6474 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ @@ -6479,7 +6481,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6483 "MachineIndependent/glslang_tab.cpp" +#line 6485 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ @@ -6487,7 +6489,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm) = (yyvsp[0].interm); } -#line 6491 "MachineIndependent/glslang_tab.cpp" +#line 6493 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ @@ -6496,7 +6498,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6500 "MachineIndependent/glslang_tab.cpp" +#line 6502 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ @@ -6505,7 +6507,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6509 "MachineIndependent/glslang_tab.cpp" +#line 6511 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ @@ -6515,7 +6517,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6519 "MachineIndependent/glslang_tab.cpp" +#line 6521 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ @@ -6525,7 +6527,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6529 "MachineIndependent/glslang_tab.cpp" +#line 6531 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ @@ -6537,7 +6539,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6541 "MachineIndependent/glslang_tab.cpp" +#line 6543 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ @@ -6547,7 +6549,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6551 "MachineIndependent/glslang_tab.cpp" +#line 6553 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ @@ -6557,7 +6559,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6561 "MachineIndependent/glslang_tab.cpp" +#line 6563 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ @@ -6567,7 +6569,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6571 "MachineIndependent/glslang_tab.cpp" +#line 6573 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -6577,7 +6579,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6581 "MachineIndependent/glslang_tab.cpp" +#line 6583 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ @@ -6592,7 +6594,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); } -#line 6596 "MachineIndependent/glslang_tab.cpp" +#line 6598 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ @@ -6621,7 +6623,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6625 "MachineIndependent/glslang_tab.cpp" +#line 6627 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ @@ -6632,7 +6634,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6636 "MachineIndependent/glslang_tab.cpp" +#line 6638 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ @@ -6644,7 +6646,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6648 "MachineIndependent/glslang_tab.cpp" +#line 6650 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ @@ -6656,7 +6658,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6660 "MachineIndependent/glslang_tab.cpp" +#line 6662 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ @@ -6668,7 +6670,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6672 "MachineIndependent/glslang_tab.cpp" +#line 6674 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ @@ -6680,7 +6682,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6684 "MachineIndependent/glslang_tab.cpp" +#line 6686 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ @@ -6693,7 +6695,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6697 "MachineIndependent/glslang_tab.cpp" +#line 6699 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ @@ -6706,7 +6708,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6710 "MachineIndependent/glslang_tab.cpp" +#line 6712 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ @@ -6721,7 +6723,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6725 "MachineIndependent/glslang_tab.cpp" +#line 6727 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ @@ -6736,7 +6738,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6740 "MachineIndependent/glslang_tab.cpp" +#line 6742 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ @@ -6748,7 +6750,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6752 "MachineIndependent/glslang_tab.cpp" +#line 6754 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ @@ -6760,7 +6762,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6764 "MachineIndependent/glslang_tab.cpp" +#line 6766 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ @@ -6768,7 +6770,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6772 "MachineIndependent/glslang_tab.cpp" +#line 6774 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ @@ -6776,7 +6778,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6780 "MachineIndependent/glslang_tab.cpp" +#line 6782 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ @@ -6786,7 +6788,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6790 "MachineIndependent/glslang_tab.cpp" +#line 6792 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ @@ -6795,7 +6797,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6799 "MachineIndependent/glslang_tab.cpp" +#line 6801 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ @@ -6804,7 +6806,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6808 "MachineIndependent/glslang_tab.cpp" +#line 6810 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ @@ -6814,7 +6816,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6818 "MachineIndependent/glslang_tab.cpp" +#line 6820 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ @@ -6825,7 +6827,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6829 "MachineIndependent/glslang_tab.cpp" +#line 6831 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ @@ -6833,7 +6835,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6837 "MachineIndependent/glslang_tab.cpp" +#line 6839 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ @@ -6846,7 +6848,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6850 "MachineIndependent/glslang_tab.cpp" +#line 6852 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ @@ -6854,7 +6856,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6858 "MachineIndependent/glslang_tab.cpp" +#line 6860 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ @@ -6862,7 +6864,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6866 "MachineIndependent/glslang_tab.cpp" +#line 6868 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ @@ -6871,7 +6873,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6875 "MachineIndependent/glslang_tab.cpp" +#line 6877 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ @@ -6880,7 +6882,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6884 "MachineIndependent/glslang_tab.cpp" +#line 6886 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ @@ -6889,7 +6891,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6893 "MachineIndependent/glslang_tab.cpp" +#line 6895 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ @@ -6898,7 +6900,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6902 "MachineIndependent/glslang_tab.cpp" +#line 6904 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ @@ -6906,7 +6908,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6910 "MachineIndependent/glslang_tab.cpp" +#line 6912 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ @@ -6916,7 +6918,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6920 "MachineIndependent/glslang_tab.cpp" +#line 6922 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ @@ -6925,7 +6927,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6929 "MachineIndependent/glslang_tab.cpp" +#line 6931 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ @@ -6935,7 +6937,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6939 "MachineIndependent/glslang_tab.cpp" +#line 6941 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ @@ -6945,7 +6947,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6949 "MachineIndependent/glslang_tab.cpp" +#line 6951 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ @@ -6954,7 +6956,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6958 "MachineIndependent/glslang_tab.cpp" +#line 6960 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ @@ -6964,7 +6966,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6968 "MachineIndependent/glslang_tab.cpp" +#line 6970 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ @@ -6975,7 +6977,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6979 "MachineIndependent/glslang_tab.cpp" +#line 6981 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ @@ -6986,7 +6988,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6990 "MachineIndependent/glslang_tab.cpp" +#line 6992 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ @@ -6998,7 +7000,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 7002 "MachineIndependent/glslang_tab.cpp" +#line 7004 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ @@ -7008,7 +7010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 7012 "MachineIndependent/glslang_tab.cpp" +#line 7014 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: TILEIMAGEEXT */ @@ -7018,7 +7020,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 7022 "MachineIndependent/glslang_tab.cpp" +#line 7024 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: SHARED */ @@ -7031,7 +7033,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7035 "MachineIndependent/glslang_tab.cpp" +#line 7037 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: BUFFER */ @@ -7041,7 +7043,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7045 "MachineIndependent/glslang_tab.cpp" +#line 7047 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: ATTRIBUTE */ @@ -7058,7 +7060,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7062 "MachineIndependent/glslang_tab.cpp" +#line 7064 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: VARYING */ @@ -7077,7 +7079,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7081 "MachineIndependent/glslang_tab.cpp" +#line 7083 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: PATCH */ @@ -7088,7 +7090,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7092 "MachineIndependent/glslang_tab.cpp" +#line 7094 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: SAMPLE */ @@ -7098,7 +7100,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7102 "MachineIndependent/glslang_tab.cpp" +#line 7104 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITATTRNV */ @@ -7111,7 +7113,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7115 "MachineIndependent/glslang_tab.cpp" +#line 7117 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITOBJECTATTRNV */ @@ -7124,7 +7126,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7128 "MachineIndependent/glslang_tab.cpp" +#line 7130 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITATTREXT */ @@ -7137,7 +7139,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7141 "MachineIndependent/glslang_tab.cpp" +#line 7143 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADNV */ @@ -7150,7 +7152,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7154 "MachineIndependent/glslang_tab.cpp" +#line 7156 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADEXT */ @@ -7163,7 +7165,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7167 "MachineIndependent/glslang_tab.cpp" +#line 7169 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINNV */ @@ -7176,7 +7178,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7180 "MachineIndependent/glslang_tab.cpp" +#line 7182 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINEXT */ @@ -7189,7 +7191,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7193 "MachineIndependent/glslang_tab.cpp" +#line 7195 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATANV */ @@ -7202,7 +7204,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7206 "MachineIndependent/glslang_tab.cpp" +#line 7208 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAEXT */ @@ -7215,7 +7217,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7219 "MachineIndependent/glslang_tab.cpp" +#line 7221 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINNV */ @@ -7227,7 +7229,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7231 "MachineIndependent/glslang_tab.cpp" +#line 7233 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINEXT */ @@ -7239,7 +7241,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7243 "MachineIndependent/glslang_tab.cpp" +#line 7245 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: COHERENT */ @@ -7248,7 +7250,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7252 "MachineIndependent/glslang_tab.cpp" +#line 7254 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: DEVICECOHERENT */ @@ -7258,7 +7260,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7262 "MachineIndependent/glslang_tab.cpp" +#line 7264 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ @@ -7268,7 +7270,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7272 "MachineIndependent/glslang_tab.cpp" +#line 7274 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: WORKGROUPCOHERENT */ @@ -7278,7 +7280,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7282 "MachineIndependent/glslang_tab.cpp" +#line 7284 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: SUBGROUPCOHERENT */ @@ -7288,7 +7290,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7292 "MachineIndependent/glslang_tab.cpp" +#line 7294 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: NONPRIVATE */ @@ -7298,7 +7300,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7302 "MachineIndependent/glslang_tab.cpp" +#line 7304 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: SHADERCALLCOHERENT */ @@ -7308,7 +7310,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7312 "MachineIndependent/glslang_tab.cpp" +#line 7314 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: VOLATILE */ @@ -7317,7 +7319,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7321 "MachineIndependent/glslang_tab.cpp" +#line 7323 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: RESTRICT */ @@ -7326,7 +7328,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7330 "MachineIndependent/glslang_tab.cpp" +#line 7332 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: READONLY */ @@ -7335,7 +7337,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7339 "MachineIndependent/glslang_tab.cpp" +#line 7341 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: WRITEONLY */ @@ -7344,7 +7346,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7348 "MachineIndependent/glslang_tab.cpp" +#line 7350 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE */ @@ -7355,7 +7357,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7359 "MachineIndependent/glslang_tab.cpp" +#line 7361 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ @@ -7366,7 +7368,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7370 "MachineIndependent/glslang_tab.cpp" +#line 7372 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ @@ -7378,7 +7380,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7382 "MachineIndependent/glslang_tab.cpp" +#line 7384 "MachineIndependent/glslang_tab.cpp" break; case 206: /* non_uniform_qualifier: NONUNIFORM */ @@ -7387,7 +7389,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7391 "MachineIndependent/glslang_tab.cpp" +#line 7393 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: IDENTIFIER */ @@ -7395,7 +7397,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { // TODO } -#line 7399 "MachineIndependent/glslang_tab.cpp" +#line 7401 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ @@ -7405,7 +7407,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7409 "MachineIndependent/glslang_tab.cpp" +#line 7411 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ @@ -7415,7 +7417,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); } -#line 7419 "MachineIndependent/glslang_tab.cpp" +#line 7421 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ @@ -7427,7 +7429,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; } -#line 7431 "MachineIndependent/glslang_tab.cpp" +#line 7433 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ @@ -7437,7 +7439,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7441 "MachineIndependent/glslang_tab.cpp" +#line 7443 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ @@ -7450,7 +7452,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7454 "MachineIndependent/glslang_tab.cpp" +#line 7456 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ @@ -7459,7 +7461,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7463 "MachineIndependent/glslang_tab.cpp" +#line 7465 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ @@ -7471,7 +7473,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7475 "MachineIndependent/glslang_tab.cpp" +#line 7477 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ @@ -7479,7 +7481,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7483 "MachineIndependent/glslang_tab.cpp" +#line 7485 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier_opt: %empty */ @@ -7487,7 +7489,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeParameters) = 0; } -#line 7491 "MachineIndependent/glslang_tab.cpp" +#line 7493 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ @@ -7495,7 +7497,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7499 "MachineIndependent/glslang_tab.cpp" +#line 7501 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_list: unary_expression */ @@ -7507,7 +7509,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7511 "MachineIndependent/glslang_tab.cpp" +#line 7513 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ @@ -7519,7 +7521,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); (yyval.interm.typeParameters)->addInnerSize(size); } -#line 7523 "MachineIndependent/glslang_tab.cpp" +#line 7525 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_specifier_nonarray: VOID */ @@ -7528,7 +7530,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7532 "MachineIndependent/glslang_tab.cpp" +#line 7534 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: FLOAT */ @@ -7537,7 +7539,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7541 "MachineIndependent/glslang_tab.cpp" +#line 7543 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: INT */ @@ -7546,7 +7548,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7550 "MachineIndependent/glslang_tab.cpp" +#line 7552 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: UINT */ @@ -7556,7 +7558,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7560 "MachineIndependent/glslang_tab.cpp" +#line 7562 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: BOOL */ @@ -7565,7 +7567,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7569 "MachineIndependent/glslang_tab.cpp" +#line 7571 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: VEC2 */ @@ -7575,7 +7577,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7579 "MachineIndependent/glslang_tab.cpp" +#line 7581 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC3 */ @@ -7585,7 +7587,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7589 "MachineIndependent/glslang_tab.cpp" +#line 7591 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: VEC4 */ @@ -7595,7 +7597,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7599 "MachineIndependent/glslang_tab.cpp" +#line 7601 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: BVEC2 */ @@ -7605,7 +7607,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7609 "MachineIndependent/glslang_tab.cpp" +#line 7611 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC3 */ @@ -7615,7 +7617,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7619 "MachineIndependent/glslang_tab.cpp" +#line 7621 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: BVEC4 */ @@ -7625,7 +7627,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7629 "MachineIndependent/glslang_tab.cpp" +#line 7631 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: IVEC2 */ @@ -7635,7 +7637,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7639 "MachineIndependent/glslang_tab.cpp" +#line 7641 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC3 */ @@ -7645,7 +7647,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7649 "MachineIndependent/glslang_tab.cpp" +#line 7651 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: IVEC4 */ @@ -7655,7 +7657,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7659 "MachineIndependent/glslang_tab.cpp" +#line 7661 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: UVEC2 */ @@ -7666,7 +7668,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7670 "MachineIndependent/glslang_tab.cpp" +#line 7672 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC3 */ @@ -7677,7 +7679,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7681 "MachineIndependent/glslang_tab.cpp" +#line 7683 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: UVEC4 */ @@ -7688,7 +7690,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7692 "MachineIndependent/glslang_tab.cpp" +#line 7694 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: MAT2 */ @@ -7698,7 +7700,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7702 "MachineIndependent/glslang_tab.cpp" +#line 7704 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT3 */ @@ -7708,7 +7710,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7712 "MachineIndependent/glslang_tab.cpp" +#line 7714 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT4 */ @@ -7718,7 +7720,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7722 "MachineIndependent/glslang_tab.cpp" +#line 7724 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT2X2 */ @@ -7728,7 +7730,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7732 "MachineIndependent/glslang_tab.cpp" +#line 7734 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X3 */ @@ -7738,7 +7740,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7742 "MachineIndependent/glslang_tab.cpp" +#line 7744 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT2X4 */ @@ -7748,7 +7750,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7752 "MachineIndependent/glslang_tab.cpp" +#line 7754 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT3X2 */ @@ -7758,7 +7760,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7762 "MachineIndependent/glslang_tab.cpp" +#line 7764 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X3 */ @@ -7768,7 +7770,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7772 "MachineIndependent/glslang_tab.cpp" +#line 7774 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT3X4 */ @@ -7778,7 +7780,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7782 "MachineIndependent/glslang_tab.cpp" +#line 7784 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT4X2 */ @@ -7788,7 +7790,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7792 "MachineIndependent/glslang_tab.cpp" +#line 7794 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X3 */ @@ -7798,7 +7800,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7802 "MachineIndependent/glslang_tab.cpp" +#line 7804 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT4X4 */ @@ -7808,7 +7810,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7812 "MachineIndependent/glslang_tab.cpp" +#line 7814 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: DOUBLE */ @@ -7820,7 +7822,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7824 "MachineIndependent/glslang_tab.cpp" +#line 7826 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: FLOAT16_T */ @@ -7830,7 +7832,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7834 "MachineIndependent/glslang_tab.cpp" +#line 7836 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT32_T */ @@ -7840,7 +7842,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7844 "MachineIndependent/glslang_tab.cpp" +#line 7846 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: FLOAT64_T */ @@ -7850,7 +7852,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7854 "MachineIndependent/glslang_tab.cpp" +#line 7856 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: INT8_T */ @@ -7860,7 +7862,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7864 "MachineIndependent/glslang_tab.cpp" +#line 7866 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: UINT8_T */ @@ -7870,7 +7872,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7874 "MachineIndependent/glslang_tab.cpp" +#line 7876 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: INT16_T */ @@ -7880,7 +7882,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7884 "MachineIndependent/glslang_tab.cpp" +#line 7886 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: UINT16_T */ @@ -7890,7 +7892,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7894 "MachineIndependent/glslang_tab.cpp" +#line 7896 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: INT32_T */ @@ -7900,7 +7902,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7904 "MachineIndependent/glslang_tab.cpp" +#line 7906 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: UINT32_T */ @@ -7910,7 +7912,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7914 "MachineIndependent/glslang_tab.cpp" +#line 7916 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: INT64_T */ @@ -7920,7 +7922,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7924 "MachineIndependent/glslang_tab.cpp" +#line 7926 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: UINT64_T */ @@ -7930,7 +7932,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7934 "MachineIndependent/glslang_tab.cpp" +#line 7936 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: DVEC2 */ @@ -7943,7 +7945,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7947 "MachineIndependent/glslang_tab.cpp" +#line 7949 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC3 */ @@ -7956,7 +7958,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7960 "MachineIndependent/glslang_tab.cpp" +#line 7962 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: DVEC4 */ @@ -7969,7 +7971,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7973 "MachineIndependent/glslang_tab.cpp" +#line 7975 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: F16VEC2 */ @@ -7980,7 +7982,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7984 "MachineIndependent/glslang_tab.cpp" +#line 7986 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC3 */ @@ -7991,7 +7993,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7995 "MachineIndependent/glslang_tab.cpp" +#line 7997 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F16VEC4 */ @@ -8002,7 +8004,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8006 "MachineIndependent/glslang_tab.cpp" +#line 8008 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F32VEC2 */ @@ -8013,7 +8015,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8017 "MachineIndependent/glslang_tab.cpp" +#line 8019 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC3 */ @@ -8024,7 +8026,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8028 "MachineIndependent/glslang_tab.cpp" +#line 8030 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F32VEC4 */ @@ -8035,7 +8037,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8039 "MachineIndependent/glslang_tab.cpp" +#line 8041 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F64VEC2 */ @@ -8046,7 +8048,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8050 "MachineIndependent/glslang_tab.cpp" +#line 8052 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC3 */ @@ -8057,7 +8059,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8061 "MachineIndependent/glslang_tab.cpp" +#line 8063 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: F64VEC4 */ @@ -8068,7 +8070,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8072 "MachineIndependent/glslang_tab.cpp" +#line 8074 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: I8VEC2 */ @@ -8079,7 +8081,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8083 "MachineIndependent/glslang_tab.cpp" +#line 8085 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC3 */ @@ -8090,7 +8092,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8094 "MachineIndependent/glslang_tab.cpp" +#line 8096 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I8VEC4 */ @@ -8101,7 +8103,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8105 "MachineIndependent/glslang_tab.cpp" +#line 8107 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I16VEC2 */ @@ -8112,7 +8114,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8116 "MachineIndependent/glslang_tab.cpp" +#line 8118 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC3 */ @@ -8123,7 +8125,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8127 "MachineIndependent/glslang_tab.cpp" +#line 8129 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I16VEC4 */ @@ -8134,7 +8136,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8138 "MachineIndependent/glslang_tab.cpp" +#line 8140 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I32VEC2 */ @@ -8145,7 +8147,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8149 "MachineIndependent/glslang_tab.cpp" +#line 8151 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC3 */ @@ -8156,7 +8158,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8160 "MachineIndependent/glslang_tab.cpp" +#line 8162 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I32VEC4 */ @@ -8167,7 +8169,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8171 "MachineIndependent/glslang_tab.cpp" +#line 8173 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I64VEC2 */ @@ -8178,7 +8180,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8182 "MachineIndependent/glslang_tab.cpp" +#line 8184 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC3 */ @@ -8189,7 +8191,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8193 "MachineIndependent/glslang_tab.cpp" +#line 8195 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: I64VEC4 */ @@ -8200,7 +8202,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8204 "MachineIndependent/glslang_tab.cpp" +#line 8206 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: U8VEC2 */ @@ -8211,7 +8213,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8215 "MachineIndependent/glslang_tab.cpp" +#line 8217 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC3 */ @@ -8222,7 +8224,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8226 "MachineIndependent/glslang_tab.cpp" +#line 8228 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U8VEC4 */ @@ -8233,7 +8235,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8237 "MachineIndependent/glslang_tab.cpp" +#line 8239 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U16VEC2 */ @@ -8244,7 +8246,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8248 "MachineIndependent/glslang_tab.cpp" +#line 8250 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC3 */ @@ -8255,7 +8257,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8259 "MachineIndependent/glslang_tab.cpp" +#line 8261 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U16VEC4 */ @@ -8266,7 +8268,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8270 "MachineIndependent/glslang_tab.cpp" +#line 8272 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U32VEC2 */ @@ -8277,7 +8279,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8281 "MachineIndependent/glslang_tab.cpp" +#line 8283 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC3 */ @@ -8288,7 +8290,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8292 "MachineIndependent/glslang_tab.cpp" +#line 8294 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U32VEC4 */ @@ -8299,7 +8301,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8303 "MachineIndependent/glslang_tab.cpp" +#line 8305 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U64VEC2 */ @@ -8310,7 +8312,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8314 "MachineIndependent/glslang_tab.cpp" +#line 8316 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC3 */ @@ -8321,7 +8323,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8325 "MachineIndependent/glslang_tab.cpp" +#line 8327 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: U64VEC4 */ @@ -8332,7 +8334,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8336 "MachineIndependent/glslang_tab.cpp" +#line 8338 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: DMAT2 */ @@ -8345,7 +8347,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8349 "MachineIndependent/glslang_tab.cpp" +#line 8351 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT3 */ @@ -8358,7 +8360,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8362 "MachineIndependent/glslang_tab.cpp" +#line 8364 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT4 */ @@ -8371,7 +8373,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8375 "MachineIndependent/glslang_tab.cpp" +#line 8377 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT2X2 */ @@ -8384,7 +8386,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8388 "MachineIndependent/glslang_tab.cpp" +#line 8390 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X3 */ @@ -8397,7 +8399,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8401 "MachineIndependent/glslang_tab.cpp" +#line 8403 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT2X4 */ @@ -8410,7 +8412,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8414 "MachineIndependent/glslang_tab.cpp" +#line 8416 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT3X2 */ @@ -8423,7 +8425,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8427 "MachineIndependent/glslang_tab.cpp" +#line 8429 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X3 */ @@ -8436,7 +8438,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8440 "MachineIndependent/glslang_tab.cpp" +#line 8442 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT3X4 */ @@ -8449,7 +8451,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8453 "MachineIndependent/glslang_tab.cpp" +#line 8455 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT4X2 */ @@ -8462,7 +8464,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8466 "MachineIndependent/glslang_tab.cpp" +#line 8468 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X3 */ @@ -8475,7 +8477,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8479 "MachineIndependent/glslang_tab.cpp" +#line 8481 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: DMAT4X4 */ @@ -8488,7 +8490,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8492 "MachineIndependent/glslang_tab.cpp" +#line 8494 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: F16MAT2 */ @@ -8499,7 +8501,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8503 "MachineIndependent/glslang_tab.cpp" +#line 8505 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT3 */ @@ -8510,7 +8512,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8514 "MachineIndependent/glslang_tab.cpp" +#line 8516 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT4 */ @@ -8521,7 +8523,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8525 "MachineIndependent/glslang_tab.cpp" +#line 8527 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT2X2 */ @@ -8532,7 +8534,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8536 "MachineIndependent/glslang_tab.cpp" +#line 8538 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X3 */ @@ -8543,7 +8545,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8547 "MachineIndependent/glslang_tab.cpp" +#line 8549 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT2X4 */ @@ -8554,7 +8556,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8558 "MachineIndependent/glslang_tab.cpp" +#line 8560 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT3X2 */ @@ -8565,7 +8567,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8569 "MachineIndependent/glslang_tab.cpp" +#line 8571 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X3 */ @@ -8576,7 +8578,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8580 "MachineIndependent/glslang_tab.cpp" +#line 8582 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT3X4 */ @@ -8587,7 +8589,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8591 "MachineIndependent/glslang_tab.cpp" +#line 8593 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT4X2 */ @@ -8598,7 +8600,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8602 "MachineIndependent/glslang_tab.cpp" +#line 8604 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X3 */ @@ -8609,7 +8611,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8613 "MachineIndependent/glslang_tab.cpp" +#line 8615 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F16MAT4X4 */ @@ -8620,7 +8622,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8624 "MachineIndependent/glslang_tab.cpp" +#line 8626 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F32MAT2 */ @@ -8631,7 +8633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8635 "MachineIndependent/glslang_tab.cpp" +#line 8637 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT3 */ @@ -8642,7 +8644,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8646 "MachineIndependent/glslang_tab.cpp" +#line 8648 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT4 */ @@ -8653,7 +8655,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8657 "MachineIndependent/glslang_tab.cpp" +#line 8659 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT2X2 */ @@ -8664,7 +8666,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8668 "MachineIndependent/glslang_tab.cpp" +#line 8670 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X3 */ @@ -8675,7 +8677,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8679 "MachineIndependent/glslang_tab.cpp" +#line 8681 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT2X4 */ @@ -8686,7 +8688,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8690 "MachineIndependent/glslang_tab.cpp" +#line 8692 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT3X2 */ @@ -8697,7 +8699,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8701 "MachineIndependent/glslang_tab.cpp" +#line 8703 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X3 */ @@ -8708,7 +8710,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8712 "MachineIndependent/glslang_tab.cpp" +#line 8714 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT3X4 */ @@ -8719,7 +8721,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8723 "MachineIndependent/glslang_tab.cpp" +#line 8725 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT4X2 */ @@ -8730,7 +8732,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8734 "MachineIndependent/glslang_tab.cpp" +#line 8736 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X3 */ @@ -8741,7 +8743,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8745 "MachineIndependent/glslang_tab.cpp" +#line 8747 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F32MAT4X4 */ @@ -8752,7 +8754,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8756 "MachineIndependent/glslang_tab.cpp" +#line 8758 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F64MAT2 */ @@ -8763,7 +8765,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8767 "MachineIndependent/glslang_tab.cpp" +#line 8769 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT3 */ @@ -8774,7 +8776,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8778 "MachineIndependent/glslang_tab.cpp" +#line 8780 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT4 */ @@ -8785,7 +8787,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8789 "MachineIndependent/glslang_tab.cpp" +#line 8791 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT2X2 */ @@ -8796,7 +8798,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8800 "MachineIndependent/glslang_tab.cpp" +#line 8802 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X3 */ @@ -8807,7 +8809,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8811 "MachineIndependent/glslang_tab.cpp" +#line 8813 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT2X4 */ @@ -8818,7 +8820,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8822 "MachineIndependent/glslang_tab.cpp" +#line 8824 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT3X2 */ @@ -8829,7 +8831,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8833 "MachineIndependent/glslang_tab.cpp" +#line 8835 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X3 */ @@ -8840,7 +8842,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8844 "MachineIndependent/glslang_tab.cpp" +#line 8846 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT3X4 */ @@ -8851,7 +8853,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8855 "MachineIndependent/glslang_tab.cpp" +#line 8857 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT4X2 */ @@ -8862,7 +8864,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8866 "MachineIndependent/glslang_tab.cpp" +#line 8868 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X3 */ @@ -8873,7 +8875,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8877 "MachineIndependent/glslang_tab.cpp" +#line 8879 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F64MAT4X4 */ @@ -8884,7 +8886,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8888 "MachineIndependent/glslang_tab.cpp" +#line 8890 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: ACCSTRUCTNV */ @@ -8893,7 +8895,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8897 "MachineIndependent/glslang_tab.cpp" +#line 8899 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: ACCSTRUCTEXT */ @@ -8902,7 +8904,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8906 "MachineIndependent/glslang_tab.cpp" +#line 8908 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: RAYQUERYEXT */ @@ -8911,7 +8913,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8915 "MachineIndependent/glslang_tab.cpp" +#line 8917 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: ATOMIC_UINT */ @@ -8921,7 +8923,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8925 "MachineIndependent/glslang_tab.cpp" +#line 8927 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: SAMPLER1D */ @@ -8931,7 +8933,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8935 "MachineIndependent/glslang_tab.cpp" +#line 8937 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER2D */ @@ -8941,7 +8943,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8945 "MachineIndependent/glslang_tab.cpp" +#line 8947 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLER3D */ @@ -8951,7 +8953,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8955 "MachineIndependent/glslang_tab.cpp" +#line 8957 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLERCUBE */ @@ -8961,7 +8963,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8965 "MachineIndependent/glslang_tab.cpp" +#line 8967 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLER2DSHADOW */ @@ -8971,7 +8973,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8975 "MachineIndependent/glslang_tab.cpp" +#line 8977 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ @@ -8981,7 +8983,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8985 "MachineIndependent/glslang_tab.cpp" +#line 8987 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLER2DARRAY */ @@ -8991,7 +8993,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8995 "MachineIndependent/glslang_tab.cpp" +#line 8997 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ @@ -9001,7 +9003,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9005 "MachineIndependent/glslang_tab.cpp" +#line 9007 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER1DSHADOW */ @@ -9011,7 +9013,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9015 "MachineIndependent/glslang_tab.cpp" +#line 9017 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DARRAY */ @@ -9021,7 +9023,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9025 "MachineIndependent/glslang_tab.cpp" +#line 9027 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ @@ -9031,7 +9033,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9035 "MachineIndependent/glslang_tab.cpp" +#line 9037 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ @@ -9041,7 +9043,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9045 "MachineIndependent/glslang_tab.cpp" +#line 9047 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ @@ -9051,7 +9053,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9055 "MachineIndependent/glslang_tab.cpp" +#line 9057 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: F16SAMPLER1D */ @@ -9062,7 +9064,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9066 "MachineIndependent/glslang_tab.cpp" +#line 9068 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER2D */ @@ -9073,7 +9075,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9077 "MachineIndependent/glslang_tab.cpp" +#line 9079 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLER3D */ @@ -9084,7 +9086,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9088 "MachineIndependent/glslang_tab.cpp" +#line 9090 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLERCUBE */ @@ -9095,7 +9097,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9099 "MachineIndependent/glslang_tab.cpp" +#line 9101 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ @@ -9106,7 +9108,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9110 "MachineIndependent/glslang_tab.cpp" +#line 9112 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ @@ -9117,7 +9119,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9121 "MachineIndependent/glslang_tab.cpp" +#line 9123 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ @@ -9128,7 +9130,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9132 "MachineIndependent/glslang_tab.cpp" +#line 9134 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ @@ -9139,7 +9141,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9143 "MachineIndependent/glslang_tab.cpp" +#line 9145 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ @@ -9150,7 +9152,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9154 "MachineIndependent/glslang_tab.cpp" +#line 9156 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ @@ -9161,7 +9163,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9165 "MachineIndependent/glslang_tab.cpp" +#line 9167 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ @@ -9172,7 +9174,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9176 "MachineIndependent/glslang_tab.cpp" +#line 9178 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ @@ -9183,7 +9185,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9187 "MachineIndependent/glslang_tab.cpp" +#line 9189 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ @@ -9194,7 +9196,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9198 "MachineIndependent/glslang_tab.cpp" +#line 9200 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: ISAMPLER1D */ @@ -9204,7 +9206,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9208 "MachineIndependent/glslang_tab.cpp" +#line 9210 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER2D */ @@ -9214,7 +9216,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9218 "MachineIndependent/glslang_tab.cpp" +#line 9220 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLER3D */ @@ -9224,7 +9226,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9228 "MachineIndependent/glslang_tab.cpp" +#line 9230 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLERCUBE */ @@ -9234,7 +9236,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9238 "MachineIndependent/glslang_tab.cpp" +#line 9240 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: ISAMPLER2DARRAY */ @@ -9244,7 +9246,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9248 "MachineIndependent/glslang_tab.cpp" +#line 9250 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: USAMPLER2D */ @@ -9254,7 +9256,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9258 "MachineIndependent/glslang_tab.cpp" +#line 9260 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLER3D */ @@ -9264,7 +9266,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9268 "MachineIndependent/glslang_tab.cpp" +#line 9270 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: USAMPLERCUBE */ @@ -9274,7 +9276,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9278 "MachineIndependent/glslang_tab.cpp" +#line 9280 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: ISAMPLER1DARRAY */ @@ -9284,7 +9286,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9288 "MachineIndependent/glslang_tab.cpp" +#line 9290 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ @@ -9294,7 +9296,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9298 "MachineIndependent/glslang_tab.cpp" +#line 9300 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: USAMPLER1D */ @@ -9304,7 +9306,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9308 "MachineIndependent/glslang_tab.cpp" +#line 9310 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLER1DARRAY */ @@ -9314,7 +9316,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9318 "MachineIndependent/glslang_tab.cpp" +#line 9320 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ @@ -9324,7 +9326,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9328 "MachineIndependent/glslang_tab.cpp" +#line 9330 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: TEXTURECUBEARRAY */ @@ -9334,7 +9336,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9338 "MachineIndependent/glslang_tab.cpp" +#line 9340 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ @@ -9344,7 +9346,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9348 "MachineIndependent/glslang_tab.cpp" +#line 9350 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ @@ -9354,7 +9356,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9358 "MachineIndependent/glslang_tab.cpp" +#line 9360 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: USAMPLER2DARRAY */ @@ -9364,7 +9366,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9368 "MachineIndependent/glslang_tab.cpp" +#line 9370 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: TEXTURE2D */ @@ -9374,7 +9376,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9378 "MachineIndependent/glslang_tab.cpp" +#line 9380 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE3D */ @@ -9384,7 +9386,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9388 "MachineIndependent/glslang_tab.cpp" +#line 9390 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURE2DARRAY */ @@ -9394,7 +9396,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9398 "MachineIndependent/glslang_tab.cpp" +#line 9400 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: TEXTURECUBE */ @@ -9404,7 +9406,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9408 "MachineIndependent/glslang_tab.cpp" +#line 9410 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: ITEXTURE2D */ @@ -9414,7 +9416,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9418 "MachineIndependent/glslang_tab.cpp" +#line 9420 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURE3D */ @@ -9424,7 +9426,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9428 "MachineIndependent/glslang_tab.cpp" +#line 9430 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURECUBE */ @@ -9434,7 +9436,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9438 "MachineIndependent/glslang_tab.cpp" +#line 9440 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ITEXTURE2DARRAY */ @@ -9444,7 +9446,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9448 "MachineIndependent/glslang_tab.cpp" +#line 9450 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: UTEXTURE2D */ @@ -9454,7 +9456,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9458 "MachineIndependent/glslang_tab.cpp" +#line 9460 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURE3D */ @@ -9464,7 +9466,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9468 "MachineIndependent/glslang_tab.cpp" +#line 9470 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURECUBE */ @@ -9474,7 +9476,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9478 "MachineIndependent/glslang_tab.cpp" +#line 9480 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: UTEXTURE2DARRAY */ @@ -9484,7 +9486,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9488 "MachineIndependent/glslang_tab.cpp" +#line 9490 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: SAMPLER */ @@ -9494,7 +9496,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9498 "MachineIndependent/glslang_tab.cpp" +#line 9500 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLERSHADOW */ @@ -9504,7 +9506,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9508 "MachineIndependent/glslang_tab.cpp" +#line 9510 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLER2DRECT */ @@ -9514,7 +9516,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9518 "MachineIndependent/glslang_tab.cpp" +#line 9520 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ @@ -9524,7 +9526,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9528 "MachineIndependent/glslang_tab.cpp" +#line 9530 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: F16SAMPLER2DRECT */ @@ -9535,7 +9537,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9539 "MachineIndependent/glslang_tab.cpp" +#line 9541 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ @@ -9546,7 +9548,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9550 "MachineIndependent/glslang_tab.cpp" +#line 9552 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: ISAMPLER2DRECT */ @@ -9556,7 +9558,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9560 "MachineIndependent/glslang_tab.cpp" +#line 9562 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: USAMPLER2DRECT */ @@ -9566,7 +9568,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9570 "MachineIndependent/glslang_tab.cpp" +#line 9572 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: SAMPLERBUFFER */ @@ -9576,7 +9578,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9580 "MachineIndependent/glslang_tab.cpp" +#line 9582 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: F16SAMPLERBUFFER */ @@ -9587,7 +9589,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9591 "MachineIndependent/glslang_tab.cpp" +#line 9593 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: ISAMPLERBUFFER */ @@ -9597,7 +9599,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9601 "MachineIndependent/glslang_tab.cpp" +#line 9603 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: USAMPLERBUFFER */ @@ -9607,7 +9609,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9611 "MachineIndependent/glslang_tab.cpp" +#line 9613 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: SAMPLER2DMS */ @@ -9617,7 +9619,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9621 "MachineIndependent/glslang_tab.cpp" +#line 9623 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: F16SAMPLER2DMS */ @@ -9628,7 +9630,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9632 "MachineIndependent/glslang_tab.cpp" +#line 9634 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: ISAMPLER2DMS */ @@ -9638,7 +9640,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9642 "MachineIndependent/glslang_tab.cpp" +#line 9644 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: USAMPLER2DMS */ @@ -9648,7 +9650,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9652 "MachineIndependent/glslang_tab.cpp" +#line 9654 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ @@ -9658,7 +9660,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9662 "MachineIndependent/glslang_tab.cpp" +#line 9664 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ @@ -9669,7 +9671,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9673 "MachineIndependent/glslang_tab.cpp" +#line 9675 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ @@ -9679,7 +9681,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9683 "MachineIndependent/glslang_tab.cpp" +#line 9685 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ @@ -9689,7 +9691,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9693 "MachineIndependent/glslang_tab.cpp" +#line 9695 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: TEXTURE1D */ @@ -9699,7 +9701,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9703 "MachineIndependent/glslang_tab.cpp" +#line 9705 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: F16TEXTURE1D */ @@ -9710,7 +9712,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9714 "MachineIndependent/glslang_tab.cpp" +#line 9716 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE2D */ @@ -9721,7 +9723,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9725 "MachineIndependent/glslang_tab.cpp" +#line 9727 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURE3D */ @@ -9732,7 +9734,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9736 "MachineIndependent/glslang_tab.cpp" +#line 9738 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTURECUBE */ @@ -9743,7 +9745,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9747 "MachineIndependent/glslang_tab.cpp" +#line 9749 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: TEXTURE1DARRAY */ @@ -9753,7 +9755,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9757 "MachineIndependent/glslang_tab.cpp" +#line 9759 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ @@ -9764,7 +9766,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9768 "MachineIndependent/glslang_tab.cpp" +#line 9770 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ @@ -9775,7 +9777,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9779 "MachineIndependent/glslang_tab.cpp" +#line 9781 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ @@ -9786,7 +9788,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9790 "MachineIndependent/glslang_tab.cpp" +#line 9792 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: ITEXTURE1D */ @@ -9796,7 +9798,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9800 "MachineIndependent/glslang_tab.cpp" +#line 9802 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: ITEXTURE1DARRAY */ @@ -9806,7 +9808,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9810 "MachineIndependent/glslang_tab.cpp" +#line 9812 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: UTEXTURE1D */ @@ -9816,7 +9818,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9820 "MachineIndependent/glslang_tab.cpp" +#line 9822 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: UTEXTURE1DARRAY */ @@ -9826,7 +9828,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9830 "MachineIndependent/glslang_tab.cpp" +#line 9832 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: TEXTURE2DRECT */ @@ -9836,7 +9838,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9840 "MachineIndependent/glslang_tab.cpp" +#line 9842 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: F16TEXTURE2DRECT */ @@ -9847,7 +9849,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9851 "MachineIndependent/glslang_tab.cpp" +#line 9853 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: ITEXTURE2DRECT */ @@ -9857,7 +9859,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9861 "MachineIndependent/glslang_tab.cpp" +#line 9863 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: UTEXTURE2DRECT */ @@ -9867,7 +9869,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9871 "MachineIndependent/glslang_tab.cpp" +#line 9873 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: TEXTUREBUFFER */ @@ -9877,7 +9879,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9881 "MachineIndependent/glslang_tab.cpp" +#line 9883 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: F16TEXTUREBUFFER */ @@ -9888,7 +9890,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9892 "MachineIndependent/glslang_tab.cpp" +#line 9894 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: ITEXTUREBUFFER */ @@ -9898,7 +9900,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9902 "MachineIndependent/glslang_tab.cpp" +#line 9904 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: UTEXTUREBUFFER */ @@ -9908,7 +9910,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9912 "MachineIndependent/glslang_tab.cpp" +#line 9914 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: TEXTURE2DMS */ @@ -9918,7 +9920,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9922 "MachineIndependent/glslang_tab.cpp" +#line 9924 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: F16TEXTURE2DMS */ @@ -9929,7 +9931,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9933 "MachineIndependent/glslang_tab.cpp" +#line 9935 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: ITEXTURE2DMS */ @@ -9939,7 +9941,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9943 "MachineIndependent/glslang_tab.cpp" +#line 9945 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: UTEXTURE2DMS */ @@ -9949,7 +9951,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9953 "MachineIndependent/glslang_tab.cpp" +#line 9955 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ @@ -9959,7 +9961,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9963 "MachineIndependent/glslang_tab.cpp" +#line 9965 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ @@ -9970,7 +9972,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9974 "MachineIndependent/glslang_tab.cpp" +#line 9976 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ @@ -9980,7 +9982,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9984 "MachineIndependent/glslang_tab.cpp" +#line 9986 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ @@ -9990,7 +9992,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9994 "MachineIndependent/glslang_tab.cpp" +#line 9996 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: IMAGE1D */ @@ -10000,7 +10002,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10004 "MachineIndependent/glslang_tab.cpp" +#line 10006 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: F16IMAGE1D */ @@ -10011,7 +10013,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10015 "MachineIndependent/glslang_tab.cpp" +#line 10017 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: IIMAGE1D */ @@ -10021,7 +10023,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10025 "MachineIndependent/glslang_tab.cpp" +#line 10027 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: UIMAGE1D */ @@ -10031,7 +10033,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10035 "MachineIndependent/glslang_tab.cpp" +#line 10037 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: IMAGE2D */ @@ -10041,7 +10043,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10045 "MachineIndependent/glslang_tab.cpp" +#line 10047 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: F16IMAGE2D */ @@ -10052,7 +10054,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10056 "MachineIndependent/glslang_tab.cpp" +#line 10058 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: IIMAGE2D */ @@ -10062,7 +10064,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10066 "MachineIndependent/glslang_tab.cpp" +#line 10068 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: UIMAGE2D */ @@ -10072,7 +10074,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10076 "MachineIndependent/glslang_tab.cpp" +#line 10078 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: IMAGE3D */ @@ -10082,7 +10084,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10086 "MachineIndependent/glslang_tab.cpp" +#line 10088 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: F16IMAGE3D */ @@ -10093,7 +10095,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10097 "MachineIndependent/glslang_tab.cpp" +#line 10099 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: IIMAGE3D */ @@ -10103,7 +10105,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10107 "MachineIndependent/glslang_tab.cpp" +#line 10109 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: UIMAGE3D */ @@ -10113,7 +10115,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10117 "MachineIndependent/glslang_tab.cpp" +#line 10119 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: IMAGE2DRECT */ @@ -10123,7 +10125,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10127 "MachineIndependent/glslang_tab.cpp" +#line 10129 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: F16IMAGE2DRECT */ @@ -10134,7 +10136,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10138 "MachineIndependent/glslang_tab.cpp" +#line 10140 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: IIMAGE2DRECT */ @@ -10144,7 +10146,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10148 "MachineIndependent/glslang_tab.cpp" +#line 10150 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: UIMAGE2DRECT */ @@ -10154,7 +10156,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10158 "MachineIndependent/glslang_tab.cpp" +#line 10160 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: IMAGECUBE */ @@ -10164,7 +10166,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10168 "MachineIndependent/glslang_tab.cpp" +#line 10170 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: F16IMAGECUBE */ @@ -10175,7 +10177,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10179 "MachineIndependent/glslang_tab.cpp" +#line 10181 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: IIMAGECUBE */ @@ -10185,7 +10187,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10189 "MachineIndependent/glslang_tab.cpp" +#line 10191 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: UIMAGECUBE */ @@ -10195,7 +10197,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10199 "MachineIndependent/glslang_tab.cpp" +#line 10201 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: IMAGEBUFFER */ @@ -10205,7 +10207,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10209 "MachineIndependent/glslang_tab.cpp" +#line 10211 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: F16IMAGEBUFFER */ @@ -10216,7 +10218,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10220 "MachineIndependent/glslang_tab.cpp" +#line 10222 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: IIMAGEBUFFER */ @@ -10226,7 +10228,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10230 "MachineIndependent/glslang_tab.cpp" +#line 10232 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: UIMAGEBUFFER */ @@ -10236,7 +10238,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10240 "MachineIndependent/glslang_tab.cpp" +#line 10242 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: IMAGE1DARRAY */ @@ -10246,7 +10248,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10250 "MachineIndependent/glslang_tab.cpp" +#line 10252 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: F16IMAGE1DARRAY */ @@ -10257,7 +10259,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10261 "MachineIndependent/glslang_tab.cpp" +#line 10263 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: IIMAGE1DARRAY */ @@ -10267,7 +10269,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10271 "MachineIndependent/glslang_tab.cpp" +#line 10273 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: UIMAGE1DARRAY */ @@ -10277,7 +10279,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10281 "MachineIndependent/glslang_tab.cpp" +#line 10283 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: IMAGE2DARRAY */ @@ -10287,7 +10289,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10291 "MachineIndependent/glslang_tab.cpp" +#line 10293 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: F16IMAGE2DARRAY */ @@ -10298,7 +10300,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10302 "MachineIndependent/glslang_tab.cpp" +#line 10304 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: IIMAGE2DARRAY */ @@ -10308,7 +10310,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10312 "MachineIndependent/glslang_tab.cpp" +#line 10314 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: UIMAGE2DARRAY */ @@ -10318,7 +10320,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10322 "MachineIndependent/glslang_tab.cpp" +#line 10324 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: IMAGECUBEARRAY */ @@ -10328,7 +10330,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10332 "MachineIndependent/glslang_tab.cpp" +#line 10334 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ @@ -10339,7 +10341,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10343 "MachineIndependent/glslang_tab.cpp" +#line 10345 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: IIMAGECUBEARRAY */ @@ -10349,7 +10351,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10353 "MachineIndependent/glslang_tab.cpp" +#line 10355 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: UIMAGECUBEARRAY */ @@ -10359,7 +10361,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10363 "MachineIndependent/glslang_tab.cpp" +#line 10365 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: IMAGE2DMS */ @@ -10369,7 +10371,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10373 "MachineIndependent/glslang_tab.cpp" +#line 10375 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: F16IMAGE2DMS */ @@ -10380,7 +10382,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10384 "MachineIndependent/glslang_tab.cpp" +#line 10386 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: IIMAGE2DMS */ @@ -10390,7 +10392,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10394 "MachineIndependent/glslang_tab.cpp" +#line 10396 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: UIMAGE2DMS */ @@ -10400,7 +10402,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10404 "MachineIndependent/glslang_tab.cpp" +#line 10406 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: IMAGE2DMSARRAY */ @@ -10410,7 +10412,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10414 "MachineIndependent/glslang_tab.cpp" +#line 10416 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ @@ -10421,7 +10423,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10425 "MachineIndependent/glslang_tab.cpp" +#line 10427 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ @@ -10431,7 +10433,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10435 "MachineIndependent/glslang_tab.cpp" +#line 10437 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ @@ -10441,7 +10443,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10445 "MachineIndependent/glslang_tab.cpp" +#line 10447 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: I64IMAGE1D */ @@ -10451,7 +10453,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10455 "MachineIndependent/glslang_tab.cpp" +#line 10457 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: U64IMAGE1D */ @@ -10461,7 +10463,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10465 "MachineIndependent/glslang_tab.cpp" +#line 10467 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: I64IMAGE2D */ @@ -10471,7 +10473,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10475 "MachineIndependent/glslang_tab.cpp" +#line 10477 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: U64IMAGE2D */ @@ -10481,7 +10483,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10485 "MachineIndependent/glslang_tab.cpp" +#line 10487 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: I64IMAGE3D */ @@ -10491,7 +10493,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10495 "MachineIndependent/glslang_tab.cpp" +#line 10497 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: U64IMAGE3D */ @@ -10501,7 +10503,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10505 "MachineIndependent/glslang_tab.cpp" +#line 10507 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: I64IMAGE2DRECT */ @@ -10511,7 +10513,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10515 "MachineIndependent/glslang_tab.cpp" +#line 10517 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: U64IMAGE2DRECT */ @@ -10521,7 +10523,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10525 "MachineIndependent/glslang_tab.cpp" +#line 10527 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: I64IMAGECUBE */ @@ -10531,7 +10533,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10535 "MachineIndependent/glslang_tab.cpp" +#line 10537 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: U64IMAGECUBE */ @@ -10541,7 +10543,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10545 "MachineIndependent/glslang_tab.cpp" +#line 10547 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: I64IMAGEBUFFER */ @@ -10551,7 +10553,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10555 "MachineIndependent/glslang_tab.cpp" +#line 10557 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: U64IMAGEBUFFER */ @@ -10561,7 +10563,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10565 "MachineIndependent/glslang_tab.cpp" +#line 10567 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: I64IMAGE1DARRAY */ @@ -10571,7 +10573,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10575 "MachineIndependent/glslang_tab.cpp" +#line 10577 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: U64IMAGE1DARRAY */ @@ -10581,7 +10583,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10585 "MachineIndependent/glslang_tab.cpp" +#line 10587 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: I64IMAGE2DARRAY */ @@ -10591,7 +10593,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10595 "MachineIndependent/glslang_tab.cpp" +#line 10597 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: U64IMAGE2DARRAY */ @@ -10601,7 +10603,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10605 "MachineIndependent/glslang_tab.cpp" +#line 10607 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ @@ -10611,7 +10613,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10615 "MachineIndependent/glslang_tab.cpp" +#line 10617 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ @@ -10621,7 +10623,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10625 "MachineIndependent/glslang_tab.cpp" +#line 10627 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: I64IMAGE2DMS */ @@ -10631,7 +10633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10635 "MachineIndependent/glslang_tab.cpp" +#line 10637 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: U64IMAGE2DMS */ @@ -10641,7 +10643,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10645 "MachineIndependent/glslang_tab.cpp" +#line 10647 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ @@ -10651,7 +10653,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10655 "MachineIndependent/glslang_tab.cpp" +#line 10657 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ @@ -10661,7 +10663,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10665 "MachineIndependent/glslang_tab.cpp" +#line 10667 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ @@ -10672,7 +10674,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10676 "MachineIndependent/glslang_tab.cpp" +#line 10678 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ @@ -10683,7 +10685,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10687 "MachineIndependent/glslang_tab.cpp" +#line 10689 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: ATTACHMENTEXT */ @@ -10694,7 +10696,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10698 "MachineIndependent/glslang_tab.cpp" +#line 10700 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: IATTACHMENTEXT */ @@ -10705,7 +10707,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10709 "MachineIndependent/glslang_tab.cpp" +#line 10711 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: UATTACHMENTEXT */ @@ -10716,7 +10718,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10720 "MachineIndependent/glslang_tab.cpp" +#line 10722 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: SUBPASSINPUT */ @@ -10727,7 +10729,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10731 "MachineIndependent/glslang_tab.cpp" +#line 10733 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: SUBPASSINPUTMS */ @@ -10738,7 +10740,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10742 "MachineIndependent/glslang_tab.cpp" +#line 10744 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: F16SUBPASSINPUT */ @@ -10750,7 +10752,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10754 "MachineIndependent/glslang_tab.cpp" +#line 10756 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ @@ -10762,7 +10764,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10766 "MachineIndependent/glslang_tab.cpp" +#line 10768 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: ISUBPASSINPUT */ @@ -10773,7 +10775,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10777 "MachineIndependent/glslang_tab.cpp" +#line 10779 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ISUBPASSINPUTMS */ @@ -10784,7 +10786,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10788 "MachineIndependent/glslang_tab.cpp" +#line 10790 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: USUBPASSINPUT */ @@ -10795,7 +10797,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10799 "MachineIndependent/glslang_tab.cpp" +#line 10801 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: USUBPASSINPUTMS */ @@ -10806,7 +10808,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10810 "MachineIndependent/glslang_tab.cpp" +#line 10812 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: FCOOPMATNV */ @@ -10817,7 +10819,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).coopmat = true; } -#line 10821 "MachineIndependent/glslang_tab.cpp" +#line 10823 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: ICOOPMATNV */ @@ -10828,7 +10830,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).coopmat = true; } -#line 10832 "MachineIndependent/glslang_tab.cpp" +#line 10834 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: UCOOPMATNV */ @@ -10839,7 +10841,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).coopmat = true; } -#line 10843 "MachineIndependent/glslang_tab.cpp" +#line 10845 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: spirv_type_specifier */ @@ -10848,7 +10850,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10852 "MachineIndependent/glslang_tab.cpp" +#line 10854 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: HITOBJECTNV */ @@ -10857,7 +10859,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10861 "MachineIndependent/glslang_tab.cpp" +#line 10863 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: struct_specifier */ @@ -10867,7 +10869,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10871 "MachineIndependent/glslang_tab.cpp" +#line 10873 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: TYPE_NAME */ @@ -10885,7 +10887,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10889 "MachineIndependent/glslang_tab.cpp" +#line 10891 "MachineIndependent/glslang_tab.cpp" break; case 539: /* precision_qualifier: HIGH_PRECISION */ @@ -10895,7 +10897,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10899 "MachineIndependent/glslang_tab.cpp" +#line 10901 "MachineIndependent/glslang_tab.cpp" break; case 540: /* precision_qualifier: MEDIUM_PRECISION */ @@ -10905,7 +10907,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10909 "MachineIndependent/glslang_tab.cpp" +#line 10911 "MachineIndependent/glslang_tab.cpp" break; case 541: /* precision_qualifier: LOW_PRECISION */ @@ -10915,13 +10917,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10919 "MachineIndependent/glslang_tab.cpp" +#line 10921 "MachineIndependent/glslang_tab.cpp" break; case 542: /* $@3: %empty */ #line 3589 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10925 "MachineIndependent/glslang_tab.cpp" +#line 10927 "MachineIndependent/glslang_tab.cpp" break; case 543: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ @@ -10937,13 +10939,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10941 "MachineIndependent/glslang_tab.cpp" +#line 10943 "MachineIndependent/glslang_tab.cpp" break; case 544: /* $@4: %empty */ #line 3600 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10947 "MachineIndependent/glslang_tab.cpp" +#line 10949 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ @@ -10955,7 +10957,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10959 "MachineIndependent/glslang_tab.cpp" +#line 10961 "MachineIndependent/glslang_tab.cpp" break; case 546: /* struct_declaration_list: struct_declaration */ @@ -10963,7 +10965,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10967 "MachineIndependent/glslang_tab.cpp" +#line 10969 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_declaration_list: struct_declaration_list struct_declaration */ @@ -10978,7 +10980,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10982 "MachineIndependent/glslang_tab.cpp" +#line 10984 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ @@ -11005,7 +11007,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11009 "MachineIndependent/glslang_tab.cpp" +#line 11011 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ @@ -11034,7 +11036,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11038 "MachineIndependent/glslang_tab.cpp" +#line 11040 "MachineIndependent/glslang_tab.cpp" break; case 550: /* struct_declarator_list: struct_declarator */ @@ -11043,7 +11045,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11047 "MachineIndependent/glslang_tab.cpp" +#line 11049 "MachineIndependent/glslang_tab.cpp" break; case 551: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ @@ -11051,7 +11053,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11055 "MachineIndependent/glslang_tab.cpp" +#line 11057 "MachineIndependent/glslang_tab.cpp" break; case 552: /* struct_declarator: IDENTIFIER */ @@ -11061,7 +11063,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11065 "MachineIndependent/glslang_tab.cpp" +#line 11067 "MachineIndependent/glslang_tab.cpp" break; case 553: /* struct_declarator: IDENTIFIER array_specifier */ @@ -11074,7 +11076,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11078 "MachineIndependent/glslang_tab.cpp" +#line 11080 "MachineIndependent/glslang_tab.cpp" break; case 554: /* initializer: assignment_expression */ @@ -11082,7 +11084,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11086 "MachineIndependent/glslang_tab.cpp" +#line 11088 "MachineIndependent/glslang_tab.cpp" break; case 555: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ @@ -11093,7 +11095,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11097 "MachineIndependent/glslang_tab.cpp" +#line 11099 "MachineIndependent/glslang_tab.cpp" break; case 556: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ @@ -11104,7 +11106,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11108 "MachineIndependent/glslang_tab.cpp" +#line 11110 "MachineIndependent/glslang_tab.cpp" break; case 557: /* initializer: LEFT_BRACE RIGHT_BRACE */ @@ -11115,7 +11117,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11119 "MachineIndependent/glslang_tab.cpp" +#line 11121 "MachineIndependent/glslang_tab.cpp" break; case 558: /* initializer_list: initializer */ @@ -11123,7 +11125,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11127 "MachineIndependent/glslang_tab.cpp" +#line 11129 "MachineIndependent/glslang_tab.cpp" break; case 559: /* initializer_list: initializer_list COMMA initializer */ @@ -11131,73 +11133,73 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11135 "MachineIndependent/glslang_tab.cpp" +#line 11137 "MachineIndependent/glslang_tab.cpp" break; case 560: /* declaration_statement: declaration */ #line 3738 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11141 "MachineIndependent/glslang_tab.cpp" +#line 11143 "MachineIndependent/glslang_tab.cpp" break; case 561: /* statement: compound_statement */ #line 3742 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11147 "MachineIndependent/glslang_tab.cpp" +#line 11149 "MachineIndependent/glslang_tab.cpp" break; case 562: /* statement: simple_statement */ #line 3743 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11153 "MachineIndependent/glslang_tab.cpp" +#line 11155 "MachineIndependent/glslang_tab.cpp" break; case 563: /* simple_statement: declaration_statement */ #line 3749 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11159 "MachineIndependent/glslang_tab.cpp" +#line 11161 "MachineIndependent/glslang_tab.cpp" break; case 564: /* simple_statement: expression_statement */ #line 3750 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11165 "MachineIndependent/glslang_tab.cpp" +#line 11167 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: selection_statement */ #line 3751 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11171 "MachineIndependent/glslang_tab.cpp" +#line 11173 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: switch_statement */ #line 3752 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11177 "MachineIndependent/glslang_tab.cpp" +#line 11179 "MachineIndependent/glslang_tab.cpp" break; case 567: /* simple_statement: case_label */ #line 3753 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11183 "MachineIndependent/glslang_tab.cpp" +#line 11185 "MachineIndependent/glslang_tab.cpp" break; case 568: /* simple_statement: iteration_statement */ #line 3754 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11189 "MachineIndependent/glslang_tab.cpp" +#line 11191 "MachineIndependent/glslang_tab.cpp" break; case 569: /* simple_statement: jump_statement */ #line 3755 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11195 "MachineIndependent/glslang_tab.cpp" +#line 11197 "MachineIndependent/glslang_tab.cpp" break; case 570: /* simple_statement: demote_statement */ #line 3757 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11201 "MachineIndependent/glslang_tab.cpp" +#line 11203 "MachineIndependent/glslang_tab.cpp" break; case 571: /* demote_statement: DEMOTE SEMICOLON */ @@ -11207,13 +11209,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11211 "MachineIndependent/glslang_tab.cpp" +#line 11213 "MachineIndependent/glslang_tab.cpp" break; case 572: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ #line 3772 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11217 "MachineIndependent/glslang_tab.cpp" +#line 11219 "MachineIndependent/glslang_tab.cpp" break; case 573: /* $@5: %empty */ @@ -11222,7 +11224,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11226 "MachineIndependent/glslang_tab.cpp" +#line 11228 "MachineIndependent/glslang_tab.cpp" break; case 574: /* $@6: %empty */ @@ -11231,7 +11233,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11235 "MachineIndependent/glslang_tab.cpp" +#line 11237 "MachineIndependent/glslang_tab.cpp" break; case 575: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ @@ -11241,19 +11243,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11245 "MachineIndependent/glslang_tab.cpp" +#line 11247 "MachineIndependent/glslang_tab.cpp" break; case 576: /* statement_no_new_scope: compound_statement_no_new_scope */ #line 3789 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11251 "MachineIndependent/glslang_tab.cpp" +#line 11253 "MachineIndependent/glslang_tab.cpp" break; case 577: /* statement_no_new_scope: simple_statement */ #line 3790 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11257 "MachineIndependent/glslang_tab.cpp" +#line 11259 "MachineIndependent/glslang_tab.cpp" break; case 578: /* $@7: %empty */ @@ -11261,7 +11263,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { ++parseContext.controlFlowNestingLevel; } -#line 11265 "MachineIndependent/glslang_tab.cpp" +#line 11267 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_scoped: $@7 compound_statement */ @@ -11270,7 +11272,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11274 "MachineIndependent/glslang_tab.cpp" +#line 11276 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@8: %empty */ @@ -11280,7 +11282,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11284 "MachineIndependent/glslang_tab.cpp" +#line 11286 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@8 simple_statement */ @@ -11291,7 +11293,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11295 "MachineIndependent/glslang_tab.cpp" +#line 11297 "MachineIndependent/glslang_tab.cpp" break; case 582: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ @@ -11299,7 +11301,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = 0; } -#line 11303 "MachineIndependent/glslang_tab.cpp" +#line 11305 "MachineIndependent/glslang_tab.cpp" break; case 583: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ @@ -11309,7 +11311,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11313 "MachineIndependent/glslang_tab.cpp" +#line 11315 "MachineIndependent/glslang_tab.cpp" break; case 584: /* statement_list: statement */ @@ -11322,7 +11324,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11326 "MachineIndependent/glslang_tab.cpp" +#line 11328 "MachineIndependent/glslang_tab.cpp" break; case 585: /* statement_list: statement_list statement */ @@ -11335,19 +11337,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11339 "MachineIndependent/glslang_tab.cpp" +#line 11341 "MachineIndependent/glslang_tab.cpp" break; case 586: /* expression_statement: SEMICOLON */ #line 3845 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11345 "MachineIndependent/glslang_tab.cpp" +#line 11347 "MachineIndependent/glslang_tab.cpp" break; case 587: /* expression_statement: expression SEMICOLON */ #line 3846 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11351 "MachineIndependent/glslang_tab.cpp" +#line 11353 "MachineIndependent/glslang_tab.cpp" break; case 588: /* selection_statement: selection_statement_nonattributed */ @@ -11355,7 +11357,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11359 "MachineIndependent/glslang_tab.cpp" +#line 11361 "MachineIndependent/glslang_tab.cpp" break; case 589: /* selection_statement: attribute selection_statement_nonattributed */ @@ -11365,7 +11367,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11369 "MachineIndependent/glslang_tab.cpp" +#line 11371 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ @@ -11374,7 +11376,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11378 "MachineIndependent/glslang_tab.cpp" +#line 11380 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ @@ -11383,7 +11385,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11387 "MachineIndependent/glslang_tab.cpp" +#line 11389 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_rest_statement: statement_scoped */ @@ -11392,7 +11394,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11396 "MachineIndependent/glslang_tab.cpp" +#line 11398 "MachineIndependent/glslang_tab.cpp" break; case 593: /* condition: expression */ @@ -11401,7 +11403,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11405 "MachineIndependent/glslang_tab.cpp" +#line 11407 "MachineIndependent/glslang_tab.cpp" break; case 594: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ @@ -11416,7 +11418,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11420 "MachineIndependent/glslang_tab.cpp" +#line 11422 "MachineIndependent/glslang_tab.cpp" break; case 595: /* switch_statement: switch_statement_nonattributed */ @@ -11424,7 +11426,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11428 "MachineIndependent/glslang_tab.cpp" +#line 11430 "MachineIndependent/glslang_tab.cpp" break; case 596: /* switch_statement: attribute switch_statement_nonattributed */ @@ -11434,7 +11436,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11438 "MachineIndependent/glslang_tab.cpp" +#line 11440 "MachineIndependent/glslang_tab.cpp" break; case 597: /* $@9: %empty */ @@ -11447,7 +11449,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11451 "MachineIndependent/glslang_tab.cpp" +#line 11453 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ @@ -11461,7 +11463,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11465 "MachineIndependent/glslang_tab.cpp" +#line 11467 "MachineIndependent/glslang_tab.cpp" break; case 599: /* switch_statement_list: %empty */ @@ -11469,7 +11471,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = 0; } -#line 11473 "MachineIndependent/glslang_tab.cpp" +#line 11475 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_list: statement_list */ @@ -11477,7 +11479,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11481 "MachineIndependent/glslang_tab.cpp" +#line 11483 "MachineIndependent/glslang_tab.cpp" break; case 601: /* case_label: CASE expression COLON */ @@ -11494,7 +11496,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11498 "MachineIndependent/glslang_tab.cpp" +#line 11500 "MachineIndependent/glslang_tab.cpp" break; case 602: /* case_label: DEFAULT COLON */ @@ -11508,7 +11510,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11512 "MachineIndependent/glslang_tab.cpp" +#line 11514 "MachineIndependent/glslang_tab.cpp" break; case 603: /* iteration_statement: iteration_statement_nonattributed */ @@ -11516,7 +11518,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11520 "MachineIndependent/glslang_tab.cpp" +#line 11522 "MachineIndependent/glslang_tab.cpp" break; case 604: /* iteration_statement: attribute iteration_statement_nonattributed */ @@ -11526,7 +11528,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11530 "MachineIndependent/glslang_tab.cpp" +#line 11532 "MachineIndependent/glslang_tab.cpp" break; case 605: /* $@10: %empty */ @@ -11539,7 +11541,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11543 "MachineIndependent/glslang_tab.cpp" +#line 11545 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ @@ -11551,7 +11553,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11555 "MachineIndependent/glslang_tab.cpp" +#line 11557 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@11: %empty */ @@ -11562,7 +11564,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11566 "MachineIndependent/glslang_tab.cpp" +#line 11568 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ @@ -11579,7 +11581,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11583 "MachineIndependent/glslang_tab.cpp" +#line 11585 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@12: %empty */ @@ -11590,7 +11592,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11594 "MachineIndependent/glslang_tab.cpp" +#line 11596 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ @@ -11607,7 +11609,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11611 "MachineIndependent/glslang_tab.cpp" +#line 11613 "MachineIndependent/glslang_tab.cpp" break; case 611: /* for_init_statement: expression_statement */ @@ -11615,7 +11617,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11619 "MachineIndependent/glslang_tab.cpp" +#line 11621 "MachineIndependent/glslang_tab.cpp" break; case 612: /* for_init_statement: declaration_statement */ @@ -11623,7 +11625,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11627 "MachineIndependent/glslang_tab.cpp" +#line 11629 "MachineIndependent/glslang_tab.cpp" break; case 613: /* conditionopt: condition */ @@ -11631,7 +11633,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11635 "MachineIndependent/glslang_tab.cpp" +#line 11637 "MachineIndependent/glslang_tab.cpp" break; case 614: /* conditionopt: %empty */ @@ -11639,7 +11641,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermTypedNode) = 0; } -#line 11643 "MachineIndependent/glslang_tab.cpp" +#line 11645 "MachineIndependent/glslang_tab.cpp" break; case 615: /* for_rest_statement: conditionopt SEMICOLON */ @@ -11648,7 +11650,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11652 "MachineIndependent/glslang_tab.cpp" +#line 11654 "MachineIndependent/glslang_tab.cpp" break; case 616: /* for_rest_statement: conditionopt SEMICOLON expression */ @@ -11657,7 +11659,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11661 "MachineIndependent/glslang_tab.cpp" +#line 11663 "MachineIndependent/glslang_tab.cpp" break; case 617: /* jump_statement: CONTINUE SEMICOLON */ @@ -11667,7 +11669,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11671 "MachineIndependent/glslang_tab.cpp" +#line 11673 "MachineIndependent/glslang_tab.cpp" break; case 618: /* jump_statement: BREAK SEMICOLON */ @@ -11677,7 +11679,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11681 "MachineIndependent/glslang_tab.cpp" +#line 11683 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: RETURN SEMICOLON */ @@ -11689,7 +11691,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11693 "MachineIndependent/glslang_tab.cpp" +#line 11695 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: RETURN expression SEMICOLON */ @@ -11697,7 +11699,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11701 "MachineIndependent/glslang_tab.cpp" +#line 11703 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: DISCARD SEMICOLON */ @@ -11706,7 +11708,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11710 "MachineIndependent/glslang_tab.cpp" +#line 11712 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ @@ -11715,7 +11717,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11719 "MachineIndependent/glslang_tab.cpp" +#line 11721 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: TERMINATE_RAY SEMICOLON */ @@ -11724,7 +11726,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11728 "MachineIndependent/glslang_tab.cpp" +#line 11730 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ @@ -11733,7 +11735,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11737 "MachineIndependent/glslang_tab.cpp" +#line 11739 "MachineIndependent/glslang_tab.cpp" break; case 625: /* translation_unit: external_declaration */ @@ -11742,7 +11744,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11746 "MachineIndependent/glslang_tab.cpp" +#line 11748 "MachineIndependent/glslang_tab.cpp" break; case 626: /* translation_unit: translation_unit external_declaration */ @@ -11753,7 +11755,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11757 "MachineIndependent/glslang_tab.cpp" +#line 11759 "MachineIndependent/glslang_tab.cpp" break; case 627: /* external_declaration: function_definition */ @@ -11761,7 +11763,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11765 "MachineIndependent/glslang_tab.cpp" +#line 11767 "MachineIndependent/glslang_tab.cpp" break; case 628: /* external_declaration: declaration */ @@ -11769,7 +11771,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11773 "MachineIndependent/glslang_tab.cpp" +#line 11775 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: SEMICOLON */ @@ -11779,7 +11781,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11783 "MachineIndependent/glslang_tab.cpp" +#line 11785 "MachineIndependent/glslang_tab.cpp" break; case 630: /* $@13: %empty */ @@ -11796,7 +11798,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11800 "MachineIndependent/glslang_tab.cpp" +#line 11802 "MachineIndependent/glslang_tab.cpp" break; case 631: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ @@ -11827,7 +11829,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11831 "MachineIndependent/glslang_tab.cpp" +#line 11833 "MachineIndependent/glslang_tab.cpp" break; case 632: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ @@ -11835,7 +11837,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11839 "MachineIndependent/glslang_tab.cpp" +#line 11841 "MachineIndependent/glslang_tab.cpp" break; case 633: /* attribute_list: single_attribute */ @@ -11843,7 +11845,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11847 "MachineIndependent/glslang_tab.cpp" +#line 11849 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute_list: attribute_list COMMA single_attribute */ @@ -11851,7 +11853,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11855 "MachineIndependent/glslang_tab.cpp" +#line 11857 "MachineIndependent/glslang_tab.cpp" break; case 635: /* single_attribute: IDENTIFIER */ @@ -11859,7 +11861,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11863 "MachineIndependent/glslang_tab.cpp" +#line 11865 "MachineIndependent/glslang_tab.cpp" break; case 636: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ @@ -11867,7 +11869,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11871 "MachineIndependent/glslang_tab.cpp" +#line 11873 "MachineIndependent/glslang_tab.cpp" break; case 637: /* spirv_requirements_list: spirv_requirements_parameter */ @@ -11875,7 +11877,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11879 "MachineIndependent/glslang_tab.cpp" +#line 11881 "MachineIndependent/glslang_tab.cpp" break; case 638: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ @@ -11883,7 +11885,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11887 "MachineIndependent/glslang_tab.cpp" +#line 11889 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ @@ -11891,7 +11893,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11895 "MachineIndependent/glslang_tab.cpp" +#line 11897 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ @@ -11899,7 +11901,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11903 "MachineIndependent/glslang_tab.cpp" +#line 11905 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_extension_list: STRING_LITERAL */ @@ -11907,7 +11909,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11911 "MachineIndependent/glslang_tab.cpp" +#line 11913 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ @@ -11915,7 +11917,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11919 "MachineIndependent/glslang_tab.cpp" +#line 11921 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_capability_list: INTCONSTANT */ @@ -11923,7 +11925,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11927 "MachineIndependent/glslang_tab.cpp" +#line 11929 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ @@ -11931,7 +11933,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11935 "MachineIndependent/glslang_tab.cpp" +#line 11937 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ @@ -11940,7 +11942,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11944 "MachineIndependent/glslang_tab.cpp" +#line 11946 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ @@ -11950,7 +11952,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11954 "MachineIndependent/glslang_tab.cpp" +#line 11956 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ @@ -11959,7 +11961,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11963 "MachineIndependent/glslang_tab.cpp" +#line 11965 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ @@ -11969,7 +11971,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11973 "MachineIndependent/glslang_tab.cpp" +#line 11975 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ @@ -11978,7 +11980,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11982 "MachineIndependent/glslang_tab.cpp" +#line 11984 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ @@ -11988,7 +11990,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11992 "MachineIndependent/glslang_tab.cpp" +#line 11994 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ @@ -11996,7 +11998,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12000 "MachineIndependent/glslang_tab.cpp" +#line 12002 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ @@ -12004,7 +12006,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12008 "MachineIndependent/glslang_tab.cpp" +#line 12010 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter: FLOATCONSTANT */ @@ -12012,7 +12014,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12016 "MachineIndependent/glslang_tab.cpp" +#line 12018 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter: INTCONSTANT */ @@ -12020,7 +12022,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12024 "MachineIndependent/glslang_tab.cpp" +#line 12026 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: UINTCONSTANT */ @@ -12028,7 +12030,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12032 "MachineIndependent/glslang_tab.cpp" +#line 12034 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: BOOLCONSTANT */ @@ -12036,7 +12038,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12040 "MachineIndependent/glslang_tab.cpp" +#line 12042 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: STRING_LITERAL */ @@ -12044,7 +12046,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12048 "MachineIndependent/glslang_tab.cpp" +#line 12050 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_id_parameter_list: constant_expression */ @@ -12058,7 +12060,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12062 "MachineIndependent/glslang_tab.cpp" +#line 12064 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ @@ -12072,7 +12074,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12076 "MachineIndependent/glslang_tab.cpp" +#line 12078 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ @@ -12082,7 +12084,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12086 "MachineIndependent/glslang_tab.cpp" +#line 12088 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ @@ -12093,7 +12095,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12097 "MachineIndependent/glslang_tab.cpp" +#line 12099 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ @@ -12102,7 +12104,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12106 "MachineIndependent/glslang_tab.cpp" +#line 12108 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ @@ -12112,7 +12114,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12116 "MachineIndependent/glslang_tab.cpp" +#line 12118 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ @@ -12121,7 +12123,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12125 "MachineIndependent/glslang_tab.cpp" +#line 12127 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ @@ -12131,7 +12133,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12135 "MachineIndependent/glslang_tab.cpp" +#line 12137 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ @@ -12140,7 +12142,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12144 "MachineIndependent/glslang_tab.cpp" +#line 12146 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ @@ -12150,7 +12152,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12154 "MachineIndependent/glslang_tab.cpp" +#line 12156 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ @@ -12159,7 +12161,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12163 "MachineIndependent/glslang_tab.cpp" +#line 12165 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ @@ -12169,7 +12171,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12173 "MachineIndependent/glslang_tab.cpp" +#line 12175 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ @@ -12177,7 +12179,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12181 "MachineIndependent/glslang_tab.cpp" +#line 12183 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ @@ -12185,7 +12187,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12189 "MachineIndependent/glslang_tab.cpp" +#line 12191 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter: FLOATCONSTANT */ @@ -12193,7 +12195,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12197 "MachineIndependent/glslang_tab.cpp" +#line 12199 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter: INTCONSTANT */ @@ -12201,7 +12203,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12205 "MachineIndependent/glslang_tab.cpp" +#line 12207 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: UINTCONSTANT */ @@ -12209,7 +12211,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12213 "MachineIndependent/glslang_tab.cpp" +#line 12215 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: BOOLCONSTANT */ @@ -12217,7 +12219,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12221 "MachineIndependent/glslang_tab.cpp" +#line 12223 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ @@ -12225,7 +12227,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12229 "MachineIndependent/glslang_tab.cpp" +#line 12231 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ @@ -12233,7 +12235,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12237 "MachineIndependent/glslang_tab.cpp" +#line 12239 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter: variable_identifier */ @@ -12244,7 +12246,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12248 "MachineIndependent/glslang_tab.cpp" +#line 12250 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter: FLOATCONSTANT */ @@ -12252,7 +12254,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12256 "MachineIndependent/glslang_tab.cpp" +#line 12258 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: INTCONSTANT */ @@ -12260,7 +12262,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12264 "MachineIndependent/glslang_tab.cpp" +#line 12266 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: UINTCONSTANT */ @@ -12268,7 +12270,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12272 "MachineIndependent/glslang_tab.cpp" +#line 12274 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: BOOLCONSTANT */ @@ -12276,7 +12278,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12280 "MachineIndependent/glslang_tab.cpp" +#line 12282 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ @@ -12285,7 +12287,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12289 "MachineIndependent/glslang_tab.cpp" +#line 12291 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ @@ -12293,7 +12295,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12297 "MachineIndependent/glslang_tab.cpp" +#line 12299 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ @@ -12302,7 +12304,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12306 "MachineIndependent/glslang_tab.cpp" +#line 12308 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ @@ -12312,7 +12314,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12316 "MachineIndependent/glslang_tab.cpp" +#line 12318 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ @@ -12321,7 +12323,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12325 "MachineIndependent/glslang_tab.cpp" +#line 12327 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ @@ -12331,7 +12333,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12335 "MachineIndependent/glslang_tab.cpp" +#line 12337 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_parameter_list: spirv_type_parameter */ @@ -12339,7 +12341,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12343 "MachineIndependent/glslang_tab.cpp" +#line 12345 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ @@ -12347,7 +12349,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12351 "MachineIndependent/glslang_tab.cpp" +#line 12353 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter: constant_expression */ @@ -12355,60 +12357,68 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12359 "MachineIndependent/glslang_tab.cpp" +#line 12361 "MachineIndependent/glslang_tab.cpp" + break; + + case 692: /* spirv_type_parameter: type_specifier_nonarray */ +#line 4442 "MachineIndependent/glslang.y" + { + (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); + } +#line 12369 "MachineIndependent/glslang_tab.cpp" break; - case 692: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4444 "MachineIndependent/glslang.y" + case 693: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4447 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12367 "MachineIndependent/glslang_tab.cpp" +#line 12377 "MachineIndependent/glslang_tab.cpp" break; - case 693: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4447 "MachineIndependent/glslang.y" + case 694: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4450 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12376 "MachineIndependent/glslang_tab.cpp" +#line 12386 "MachineIndependent/glslang_tab.cpp" break; - case 694: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4453 "MachineIndependent/glslang.y" + case 695: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4456 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12384 "MachineIndependent/glslang_tab.cpp" +#line 12394 "MachineIndependent/glslang_tab.cpp" break; - case 695: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4456 "MachineIndependent/glslang.y" + case 696: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4459 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12392 "MachineIndependent/glslang_tab.cpp" +#line 12402 "MachineIndependent/glslang_tab.cpp" break; - case 696: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4461 "MachineIndependent/glslang.y" + case 697: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4464 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12400 "MachineIndependent/glslang_tab.cpp" +#line 12410 "MachineIndependent/glslang_tab.cpp" break; - case 697: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4464 "MachineIndependent/glslang.y" + case 698: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4467 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12408 "MachineIndependent/glslang_tab.cpp" +#line 12418 "MachineIndependent/glslang_tab.cpp" break; -#line 12412 "MachineIndependent/glslang_tab.cpp" +#line 12422 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12633,5 +12643,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4469 "MachineIndependent/glslang.y" +#line 4472 "MachineIndependent/glslang.y" diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 5a4c4287a1..2aee2d1eee 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -398,6 +398,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.intrinsicsSpirvStorageClass.rchit", "spv.intrinsicsSpirvType.rgen", "spv.intrinsicsSpirvTypeLocalVar.vert", + "spv.intrinsicsSpirvTypeWithTypeSpecifier.vert", "spv.invariantAll.vert", "spv.layer.tese", "spv.layoutNested.vert", From 4ae01c5f41ed7c52ce9fe178293ee98e6f972dbd Mon Sep 17 00:00:00 2001 From: Dawid Lorenz Date: Mon, 3 Jul 2023 15:19:41 +0200 Subject: [PATCH 220/594] Add support for pre and post HLSL qualifier validation The change makes it possible to define a const variable after the marked type. Example "float const" --- Test/baseResults/hlsl.function.frag.out | 158 +++++++----- Test/baseResults/hlsl.init2.frag.out | 304 ++++++++++++------------ Test/hlsl.function.frag | 11 +- Test/hlsl.init2.frag | 21 +- glslang/HLSL/hlslGrammar.cpp | 31 ++- glslang/HLSL/hlslGrammar.h | 4 +- 6 files changed, 300 insertions(+), 229 deletions(-) diff --git a/Test/baseResults/hlsl.function.frag.out b/Test/baseResults/hlsl.function.frag.out index faa31479c0..bfa5af4d37 100644 --- a/Test/baseResults/hlsl.function.frag.out +++ b/Test/baseResults/hlsl.function.frag.out @@ -1,6 +1,6 @@ hlsl.function.frag -ERROR: 0:24: 'fun1' : unknown variable -ERROR: 0:24: 'return' : type does not match, or is not convertible to, the function's return type +ERROR: 0:29: 'fun1' : unknown variable +ERROR: 0:29: 'return' : type does not match, or is not convertible to, the function's return type ERROR: 2 compilation errors. No code generated. @@ -16,45 +16,64 @@ ERROR: node is still EOpNull! 0:3 1.000000 0:3 1.000000 0:3 1.000000 -0:7 Function Definition: fun2(vf4; ( temp uint) +0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float) 0:7 Function Parameters: -0:7 'col' ( in 4-component vector of float) +0:7 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:8 Branch: Return with expression -0:8 Constant: -0:8 7 (const uint) -0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float) +0:8 Construct vec4 ( temp 4-component vector of float) +0:8 Convert int to float ( temp float) +0:8 Comma ( temp int) +0:8 Comma ( temp int) +0:8 Comma ( temp int) +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:8 Constant: +0:8 4 (const int) +0:12 Function Definition: fun3(vf4; ( temp uint) 0:12 Function Parameters: -0:12 'id1' ( in uint) -0:12 'id2' ( uniform uint) +0:12 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:13 Branch: Return with expression -0:13 Construct vec4 ( temp 4-component vector of float) -0:13 Convert uint to float ( temp float) -0:13 component-wise multiply ( temp uint) -0:13 'id1' ( in uint) -0:13 'id2' ( uniform uint) -0:17 Function Definition: fun1(i1; ( temp 4-component vector of float) +0:13 Constant: +0:13 7 (const uint) +0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float) 0:17 Function Parameters: -0:17 'index' ( in int) +0:17 'id1' ( in uint) +0:17 'id2' ( uniform uint) 0:? Sequence -0:18 Sequence -0:18 move second child to first child ( temp uint) -0:18 'entityId' ( temp uint) -0:18 Function Call: fun2(vf4; ( temp uint) -0:18 Function Call: fun0( ( temp 4-component vector of float) -0:19 Branch: Return with expression -0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float) -0:19 'entityId' ( temp uint) -0:19 'entityId' ( temp uint) -0:23 Function Definition: @main( ( temp int) -0:23 Function Parameters: -0:23 Function Definition: main( ( temp void) -0:23 Function Parameters: +0:18 Branch: Return with expression +0:18 Construct vec4 ( temp 4-component vector of float) +0:18 Convert uint to float ( temp float) +0:18 component-wise multiply ( temp uint) +0:18 'id1' ( in uint) +0:18 'id2' ( uniform uint) +0:22 Function Definition: fun1(i1; ( temp 4-component vector of float) +0:22 Function Parameters: +0:22 'index' ( in int) 0:? Sequence -0:23 move second child to first child ( temp int) +0:23 Sequence +0:23 move second child to first child ( temp uint) +0:23 'entityId' ( temp uint) +0:23 Function Call: fun3(vf4; ( temp uint) +0:23 Function Call: fun2(vf4; ( temp 4-component vector of float) +0:23 Function Call: fun0( ( temp 4-component vector of float) +0:24 Branch: Return with expression +0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float) +0:24 'entityId' ( temp uint) +0:24 'entityId' ( temp uint) +0:28 Function Definition: @main( ( temp int) +0:28 Function Parameters: +0:28 Function Definition: main( ( temp void) +0:28 Function Parameters: +0:? Sequence +0:28 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) -0:23 Function Call: @main( ( temp int) +0:28 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) @@ -74,45 +93,64 @@ ERROR: node is still EOpNull! 0:3 1.000000 0:3 1.000000 0:3 1.000000 -0:7 Function Definition: fun2(vf4; ( temp uint) +0:7 Function Definition: fun2(vf4; ( temp 4-component vector of float) 0:7 Function Parameters: -0:7 'col' ( in 4-component vector of float) +0:7 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:8 Branch: Return with expression -0:8 Constant: -0:8 7 (const uint) -0:12 Function Definition: fun4(u1;u1; ( temp 4-component vector of float) +0:8 Construct vec4 ( temp 4-component vector of float) +0:8 Convert int to float ( temp float) +0:8 Comma ( temp int) +0:8 Comma ( temp int) +0:8 Comma ( temp int) +0:8 Constant: +0:8 1 (const int) +0:8 Constant: +0:8 2 (const int) +0:8 Constant: +0:8 3 (const int) +0:8 Constant: +0:8 4 (const int) +0:12 Function Definition: fun3(vf4; ( temp uint) 0:12 Function Parameters: -0:12 'id1' ( in uint) -0:12 'id2' ( uniform uint) +0:12 'col' ( const (read only) 4-component vector of float) 0:? Sequence 0:13 Branch: Return with expression -0:13 Construct vec4 ( temp 4-component vector of float) -0:13 Convert uint to float ( temp float) -0:13 component-wise multiply ( temp uint) -0:13 'id1' ( in uint) -0:13 'id2' ( uniform uint) -0:17 Function Definition: fun1(i1; ( temp 4-component vector of float) +0:13 Constant: +0:13 7 (const uint) +0:17 Function Definition: fun4(u1;u1; ( temp 4-component vector of float) 0:17 Function Parameters: -0:17 'index' ( in int) +0:17 'id1' ( in uint) +0:17 'id2' ( uniform uint) +0:? Sequence +0:18 Branch: Return with expression +0:18 Construct vec4 ( temp 4-component vector of float) +0:18 Convert uint to float ( temp float) +0:18 component-wise multiply ( temp uint) +0:18 'id1' ( in uint) +0:18 'id2' ( uniform uint) +0:22 Function Definition: fun1(i1; ( temp 4-component vector of float) +0:22 Function Parameters: +0:22 'index' ( in int) 0:? Sequence -0:18 Sequence -0:18 move second child to first child ( temp uint) -0:18 'entityId' ( temp uint) -0:18 Function Call: fun2(vf4; ( temp uint) -0:18 Function Call: fun0( ( temp 4-component vector of float) -0:19 Branch: Return with expression -0:19 Function Call: fun4(u1;u1; ( temp 4-component vector of float) -0:19 'entityId' ( temp uint) -0:19 'entityId' ( temp uint) -0:23 Function Definition: @main( ( temp int) -0:23 Function Parameters: -0:23 Function Definition: main( ( temp void) -0:23 Function Parameters: +0:23 Sequence +0:23 move second child to first child ( temp uint) +0:23 'entityId' ( temp uint) +0:23 Function Call: fun3(vf4; ( temp uint) +0:23 Function Call: fun2(vf4; ( temp 4-component vector of float) +0:23 Function Call: fun0( ( temp 4-component vector of float) +0:24 Branch: Return with expression +0:24 Function Call: fun4(u1;u1; ( temp 4-component vector of float) +0:24 'entityId' ( temp uint) +0:24 'entityId' ( temp uint) +0:28 Function Definition: @main( ( temp int) +0:28 Function Parameters: +0:28 Function Definition: main( ( temp void) +0:28 Function Parameters: 0:? Sequence -0:23 move second child to first child ( temp int) +0:28 move second child to first child ( temp int) 0:? '@entryPointOutput' (layout( location=0) out int) -0:23 Function Call: @main( ( temp int) +0:28 Function Call: @main( ( temp int) 0:? Linker Objects 0:? '@entryPointOutput' (layout( location=0) out int) diff --git a/Test/baseResults/hlsl.init2.frag.out b/Test/baseResults/hlsl.init2.frag.out index b8b7afcdab..bf6d64614b 100644 --- a/Test/baseResults/hlsl.init2.frag.out +++ b/Test/baseResults/hlsl.init2.frag.out @@ -31,29 +31,20 @@ gl_FragCoord origin is upper left 0:20 10.000000 0:22 Constant: 0:22 10.000000 -0:25 Sequence -0:25 move second child to first child ( temp float) -0:25 'n' ( temp float) -0:25 Constant: -0:25 0.000000 0:26 Sequence -0:26 move second child to first child ( temp 8-element array of 3-component vector of float) -0:26 'a' ( const (read only) 8-element array of 3-component vector of float) -0:26 Construct vec3 ( temp 8-element array of 3-component vector of float) -0:27 vector-scale ( temp 3-component vector of float) -0:27 Constant: -0:27 0.577350 -0:27 0.577350 -0:27 0.577350 -0:27 add second child into first child ( temp float) -0:27 'n' ( temp float) -0:27 Constant: -0:27 1.000000 +0:26 move second child to first child ( temp float) +0:26 'n' ( temp float) +0:26 Constant: +0:26 0.000000 +0:27 Sequence +0:27 move second child to first child ( temp 8-element array of 3-component vector of float) +0:27 'a' ( const (read only) 8-element array of 3-component vector of float) +0:27 Construct vec3 ( temp 8-element array of 3-component vector of float) 0:28 vector-scale ( temp 3-component vector of float) 0:28 Constant: -0:28 -0.577350 -0:28 -0.577350 -0:28 -0.577350 +0:28 0.577350 +0:28 0.577350 +0:28 0.577350 0:28 add second child into first child ( temp float) 0:28 'n' ( temp float) 0:28 Constant: @@ -62,7 +53,7 @@ gl_FragCoord origin is upper left 0:29 Constant: 0:29 -0.577350 0:29 -0.577350 -0:29 0.577350 +0:29 -0.577350 0:29 add second child into first child ( temp float) 0:29 'n' ( temp float) 0:29 Constant: @@ -70,8 +61,8 @@ gl_FragCoord origin is upper left 0:30 vector-scale ( temp 3-component vector of float) 0:30 Constant: 0:30 -0.577350 -0:30 0.577350 0:30 -0.577350 +0:30 0.577350 0:30 add second child into first child ( temp float) 0:30 'n' ( temp float) 0:30 Constant: @@ -80,16 +71,16 @@ gl_FragCoord origin is upper left 0:31 Constant: 0:31 -0.577350 0:31 0.577350 -0:31 0.577350 +0:31 -0.577350 0:31 add second child into first child ( temp float) 0:31 'n' ( temp float) 0:31 Constant: 0:31 1.000000 0:32 vector-scale ( temp 3-component vector of float) 0:32 Constant: -0:32 0.577350 -0:32 -0.577350 0:32 -0.577350 +0:32 0.577350 +0:32 0.577350 0:32 add second child into first child ( temp float) 0:32 'n' ( temp float) 0:32 Constant: @@ -98,7 +89,7 @@ gl_FragCoord origin is upper left 0:33 Constant: 0:33 0.577350 0:33 -0.577350 -0:33 0.577350 +0:33 -0.577350 0:33 add second child into first child ( temp float) 0:33 'n' ( temp float) 0:33 Constant: @@ -106,38 +97,38 @@ gl_FragCoord origin is upper left 0:34 vector-scale ( temp 3-component vector of float) 0:34 Constant: 0:34 0.577350 -0:34 0.577350 0:34 -0.577350 +0:34 0.577350 0:34 add second child into first child ( temp float) 0:34 'n' ( temp float) 0:34 Constant: 0:34 1.000000 -0:36 Sequence -0:36 move second child to first child ( temp structure{ temp 3-component vector of float a}) -0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a}) -0:36 Construct structure ( temp structure{ temp 3-component vector of float a}) -0:36 vector-scale ( temp 3-component vector of float) -0:36 Constant: -0:36 -0.577350 -0:36 0.577350 -0:36 0.577350 -0:36 add second child into first child ( temp float) -0:36 'n' ( temp float) -0:36 Constant: -0:36 1.000000 -0:38 Sequence -0:38 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) -0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b}) -0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) -0:38 vector-scale ( temp 3-component vector of float) -0:38 Constant: -0:38 -0.577350 -0:38 0.577350 -0:38 0.577350 -0:38 add second child into first child ( temp float) -0:38 'n' ( temp float) -0:38 Constant: -0:38 1.000000 +0:35 vector-scale ( temp 3-component vector of float) +0:35 Constant: +0:35 0.577350 +0:35 0.577350 +0:35 -0.577350 +0:35 add second child into first child ( temp float) +0:35 'n' ( temp float) +0:35 Constant: +0:35 1.000000 +0:37 Sequence +0:37 move second child to first child ( temp structure{ temp 3-component vector of float a}) +0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a}) +0:37 Construct structure ( temp structure{ temp 3-component vector of float a}) +0:37 vector-scale ( temp 3-component vector of float) +0:37 Constant: +0:37 -0.577350 +0:37 0.577350 +0:37 0.577350 +0:37 add second child into first child ( temp float) +0:37 'n' ( temp float) +0:37 Constant: +0:37 1.000000 +0:39 Sequence +0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) +0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b}) +0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 vector-scale ( temp 3-component vector of float) 0:39 Constant: 0:39 -0.577350 @@ -147,32 +138,41 @@ gl_FragCoord origin is upper left 0:39 'n' ( temp float) 0:39 Constant: 0:39 1.000000 -0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) -0:45 Function Parameters: +0:40 vector-scale ( temp 3-component vector of float) +0:40 Constant: +0:40 -0.577350 +0:40 0.577350 +0:40 0.577350 +0:40 add second child into first child ( temp float) +0:40 'n' ( temp float) +0:40 Constant: +0:40 1.000000 +0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:46 Function Parameters: 0:? Sequence -0:46 Function Call: Test1( ( temp void) -0:49 move second child to first child ( temp 4-component vector of float) -0:49 color: direct index for structure ( temp 4-component vector of float) -0:49 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:49 Constant: -0:49 0 (const int) -0:49 Constant: -0:49 1.000000 -0:49 1.000000 -0:49 1.000000 -0:49 1.000000 -0:50 Branch: Return with expression -0:50 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:45 Function Definition: main( ( temp void) -0:45 Function Parameters: +0:47 Function Call: Test1( ( temp void) +0:50 move second child to first child ( temp 4-component vector of float) +0:50 color: direct index for structure ( temp 4-component vector of float) +0:50 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1.000000 +0:50 1.000000 +0:50 1.000000 +0:50 1.000000 +0:51 Branch: Return with expression +0:51 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:46 Function Definition: main( ( temp void) +0:46 Function Parameters: 0:? Sequence -0:45 Sequence -0:45 move second child to first child ( temp 4-component vector of float) +0:46 Sequence +0:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) -0:45 color: direct index for structure ( temp 4-component vector of float) -0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) -0:45 Constant: -0:45 0 (const int) +0:46 color: direct index for structure ( temp 4-component vector of float) +0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:46 Constant: +0:46 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) @@ -212,29 +212,20 @@ gl_FragCoord origin is upper left 0:20 10.000000 0:22 Constant: 0:22 10.000000 -0:25 Sequence -0:25 move second child to first child ( temp float) -0:25 'n' ( temp float) -0:25 Constant: -0:25 0.000000 0:26 Sequence -0:26 move second child to first child ( temp 8-element array of 3-component vector of float) -0:26 'a' ( const (read only) 8-element array of 3-component vector of float) -0:26 Construct vec3 ( temp 8-element array of 3-component vector of float) -0:27 vector-scale ( temp 3-component vector of float) -0:27 Constant: -0:27 0.577350 -0:27 0.577350 -0:27 0.577350 -0:27 add second child into first child ( temp float) -0:27 'n' ( temp float) -0:27 Constant: -0:27 1.000000 +0:26 move second child to first child ( temp float) +0:26 'n' ( temp float) +0:26 Constant: +0:26 0.000000 +0:27 Sequence +0:27 move second child to first child ( temp 8-element array of 3-component vector of float) +0:27 'a' ( const (read only) 8-element array of 3-component vector of float) +0:27 Construct vec3 ( temp 8-element array of 3-component vector of float) 0:28 vector-scale ( temp 3-component vector of float) 0:28 Constant: -0:28 -0.577350 -0:28 -0.577350 -0:28 -0.577350 +0:28 0.577350 +0:28 0.577350 +0:28 0.577350 0:28 add second child into first child ( temp float) 0:28 'n' ( temp float) 0:28 Constant: @@ -243,7 +234,7 @@ gl_FragCoord origin is upper left 0:29 Constant: 0:29 -0.577350 0:29 -0.577350 -0:29 0.577350 +0:29 -0.577350 0:29 add second child into first child ( temp float) 0:29 'n' ( temp float) 0:29 Constant: @@ -251,8 +242,8 @@ gl_FragCoord origin is upper left 0:30 vector-scale ( temp 3-component vector of float) 0:30 Constant: 0:30 -0.577350 -0:30 0.577350 0:30 -0.577350 +0:30 0.577350 0:30 add second child into first child ( temp float) 0:30 'n' ( temp float) 0:30 Constant: @@ -261,16 +252,16 @@ gl_FragCoord origin is upper left 0:31 Constant: 0:31 -0.577350 0:31 0.577350 -0:31 0.577350 +0:31 -0.577350 0:31 add second child into first child ( temp float) 0:31 'n' ( temp float) 0:31 Constant: 0:31 1.000000 0:32 vector-scale ( temp 3-component vector of float) 0:32 Constant: -0:32 0.577350 -0:32 -0.577350 0:32 -0.577350 +0:32 0.577350 +0:32 0.577350 0:32 add second child into first child ( temp float) 0:32 'n' ( temp float) 0:32 Constant: @@ -279,7 +270,7 @@ gl_FragCoord origin is upper left 0:33 Constant: 0:33 0.577350 0:33 -0.577350 -0:33 0.577350 +0:33 -0.577350 0:33 add second child into first child ( temp float) 0:33 'n' ( temp float) 0:33 Constant: @@ -287,38 +278,38 @@ gl_FragCoord origin is upper left 0:34 vector-scale ( temp 3-component vector of float) 0:34 Constant: 0:34 0.577350 -0:34 0.577350 0:34 -0.577350 +0:34 0.577350 0:34 add second child into first child ( temp float) 0:34 'n' ( temp float) 0:34 Constant: 0:34 1.000000 -0:36 Sequence -0:36 move second child to first child ( temp structure{ temp 3-component vector of float a}) -0:36 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a}) -0:36 Construct structure ( temp structure{ temp 3-component vector of float a}) -0:36 vector-scale ( temp 3-component vector of float) -0:36 Constant: -0:36 -0.577350 -0:36 0.577350 -0:36 0.577350 -0:36 add second child into first child ( temp float) -0:36 'n' ( temp float) -0:36 Constant: -0:36 1.000000 -0:38 Sequence -0:38 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) -0:38 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b}) -0:38 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) -0:38 vector-scale ( temp 3-component vector of float) -0:38 Constant: -0:38 -0.577350 -0:38 0.577350 -0:38 0.577350 -0:38 add second child into first child ( temp float) -0:38 'n' ( temp float) -0:38 Constant: -0:38 1.000000 +0:35 vector-scale ( temp 3-component vector of float) +0:35 Constant: +0:35 0.577350 +0:35 0.577350 +0:35 -0.577350 +0:35 add second child into first child ( temp float) +0:35 'n' ( temp float) +0:35 Constant: +0:35 1.000000 +0:37 Sequence +0:37 move second child to first child ( temp structure{ temp 3-component vector of float a}) +0:37 'oneNonConst' ( const (read only) structure{ temp 3-component vector of float a}) +0:37 Construct structure ( temp structure{ temp 3-component vector of float a}) +0:37 vector-scale ( temp 3-component vector of float) +0:37 Constant: +0:37 -0.577350 +0:37 0.577350 +0:37 0.577350 +0:37 add second child into first child ( temp float) +0:37 'n' ( temp float) +0:37 Constant: +0:37 1.000000 +0:39 Sequence +0:39 move second child to first child ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) +0:39 'twoNonConst' ( const (read only) structure{ temp 3-component vector of float a, temp 3-component vector of float b}) +0:39 Construct structure ( temp structure{ temp 3-component vector of float a, temp 3-component vector of float b}) 0:39 vector-scale ( temp 3-component vector of float) 0:39 Constant: 0:39 -0.577350 @@ -328,32 +319,41 @@ gl_FragCoord origin is upper left 0:39 'n' ( temp float) 0:39 Constant: 0:39 1.000000 -0:45 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) -0:45 Function Parameters: +0:40 vector-scale ( temp 3-component vector of float) +0:40 Constant: +0:40 -0.577350 +0:40 0.577350 +0:40 0.577350 +0:40 add second child into first child ( temp float) +0:40 'n' ( temp float) +0:40 Constant: +0:40 1.000000 +0:46 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:46 Function Parameters: 0:? Sequence -0:46 Function Call: Test1( ( temp void) -0:49 move second child to first child ( temp 4-component vector of float) -0:49 color: direct index for structure ( temp 4-component vector of float) -0:49 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:49 Constant: -0:49 0 (const int) -0:49 Constant: -0:49 1.000000 -0:49 1.000000 -0:49 1.000000 -0:49 1.000000 -0:50 Branch: Return with expression -0:50 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:45 Function Definition: main( ( temp void) -0:45 Function Parameters: +0:47 Function Call: Test1( ( temp void) +0:50 move second child to first child ( temp 4-component vector of float) +0:50 color: direct index for structure ( temp 4-component vector of float) +0:50 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1.000000 +0:50 1.000000 +0:50 1.000000 +0:50 1.000000 +0:51 Branch: Return with expression +0:51 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:46 Function Definition: main( ( temp void) +0:46 Function Parameters: 0:? Sequence -0:45 Sequence -0:45 move second child to first child ( temp 4-component vector of float) +0:46 Sequence +0:46 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) -0:45 color: direct index for structure ( temp 4-component vector of float) -0:45 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) -0:45 Constant: -0:45 0 (const int) +0:46 color: direct index for structure ( temp 4-component vector of float) +0:46 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:46 Constant: +0:46 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) diff --git a/Test/hlsl.function.frag b/Test/hlsl.function.frag index 5834b31964..2085005b10 100644 --- a/Test/hlsl.function.frag +++ b/Test/hlsl.function.frag @@ -3,9 +3,14 @@ float4 fun0() return 1.0f; } -uint fun2(float4 col) +float4 fun2(float4 const col) { - return 7; + return (1, 2, 3, 4); +} + +uint fun3(const float4 col) +{ + return 7; } float4 fun4(uint id1, uniform uint id2) @@ -15,7 +20,7 @@ float4 fun4(uint id1, uniform uint id2) float4 fun1(int index) { - uint entityId = fun2(fun0()); + uint entityId = fun3(fun2(fun0())); return fun4(entityId, entityId); } diff --git a/Test/hlsl.init2.frag b/Test/hlsl.init2.frag index 2b9b7e688c..6dcb6cb7a2 100644 --- a/Test/hlsl.init2.frag +++ b/Test/hlsl.init2.frag @@ -21,16 +21,17 @@ void Test1() const mystruct2 constTest5 = { {8,}, {9,}, {10}, }; constTest5.c; - const float step = 1.f; - float n = 0; - const float3 a[8] = { - normalize(float3(1, 1, 1)) * (n += step), - normalize(float3(-1, -1, -1)) * (n += step), - normalize(float3(-1, -1, 1)) * (n += step), - normalize(float3(-1, 1, -1)) * (n += step), - normalize(float3(-1, 1, 1)) * (n += step), - normalize(float3(1, -1, -1)) * (n += step), - normalize(float3(1, -1, 1)) * (n += step), + float const origStep = 1.0f; + const float step = origStep; + float n = 0; + const float3 a[8] = { + normalize(float3(1, 1, 1)) * (n += step), + normalize(float3(-1, -1, -1)) * (n += step), + normalize(float3(-1, -1, 1)) * (n += step), + normalize(float3(-1, 1, -1)) * (n += step), + normalize(float3(-1, 1, 1)) * (n += step), + normalize(float3(1, -1, -1)) * (n += step), + normalize(float3(1, -1, 1)) * (n += step), normalize(float3(1, 1, -1)) * (n += step) }; const struct one { float3 a; } oneNonConst = { normalize(float3(-1, 1, 1)) * (n += step) }; diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp index 8e6f44e3ac..048e95dae2 100644 --- a/glslang/HLSL/hlslGrammar.cpp +++ b/glslang/HLSL/hlslGrammar.cpp @@ -1,6 +1,7 @@ // // Copyright (C) 2016-2018 Google, Inc. // Copyright (C) 2016 LunarG, Inc. +// Copyright (C) 2023 Mobica Limited // // All rights reserved. // @@ -594,6 +595,7 @@ bool HlslGrammar::acceptControlDeclaration(TIntermNode*& node) // fully_specified_type // : type_specifier // | type_qualifier type_specifier +// | type_specifier type_qualifier // bool HlslGrammar::acceptFullySpecifiedType(TType& type, const TAttributes& attributes) { @@ -605,7 +607,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList, // type_qualifier TQualifier qualifier; qualifier.clear(); - if (! acceptQualifier(qualifier)) + if (! acceptPreQualifier(qualifier)) return false; TSourceLoc loc = token.loc; @@ -620,6 +622,10 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList, return false; } + // type_qualifier + if (! acceptPostQualifier(qualifier)) + return false; + if (type.getBasicType() == EbtBlock) { // the type was a block, which set some parts of the qualifier parseContext.mergeQualifiers(type.getQualifier(), qualifier); @@ -634,7 +640,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList, parseContext.declareBlock(loc, type); } else { // Some qualifiers are set when parsing the type. Merge those with - // whatever comes from acceptQualifier. + // whatever comes from acceptPreQualifier and acceptPostQualifier. assert(qualifier.layoutFormat == ElfNone); qualifier.layoutFormat = type.getQualifier().layoutFormat; @@ -660,7 +666,7 @@ bool HlslGrammar::acceptFullySpecifiedType(TType& type, TIntermNode*& nodeList, // // Zero or more of these, so this can't return false. // -bool HlslGrammar::acceptQualifier(TQualifier& qualifier) +bool HlslGrammar::acceptPreQualifier(TQualifier& qualifier) { do { switch (peek()) { @@ -766,6 +772,25 @@ bool HlslGrammar::acceptQualifier(TQualifier& qualifier) } while (true); } +// type_qualifier +// : qualifier qualifier ... +// +// Zero or more of these, so this can't return false. +// +bool HlslGrammar::acceptPostQualifier(TQualifier& qualifier) +{ + do { + switch (peek()) { + case EHTokConst: + qualifier.storage = EvqConst; + break; + default: + return true; + } + advanceToken(); + } while (true); +} + // layout_qualifier_list // : LAYOUT LEFT_PAREN layout_qualifier COMMA layout_qualifier ... RIGHT_PAREN // diff --git a/glslang/HLSL/hlslGrammar.h b/glslang/HLSL/hlslGrammar.h index 6c120081a4..cfe294bc0d 100644 --- a/glslang/HLSL/hlslGrammar.h +++ b/glslang/HLSL/hlslGrammar.h @@ -1,6 +1,7 @@ // // Copyright (C) 2016-2018 Google, Inc. // Copyright (C) 2016 LunarG, Inc. +// Copyright (C) 2023 Mobica Limited. // // All rights reserved. // @@ -72,7 +73,8 @@ namespace glslang { bool acceptSamplerState(); bool acceptFullySpecifiedType(TType&, const TAttributes&); bool acceptFullySpecifiedType(TType&, TIntermNode*& nodeList, const TAttributes&, bool forbidDeclarators = false); - bool acceptQualifier(TQualifier&); + bool acceptPreQualifier(TQualifier&); + bool acceptPostQualifier(TQualifier&); bool acceptLayoutQualifierList(TQualifier&); bool acceptType(TType&); bool acceptType(TType&, TIntermNode*& nodeList); From 44779f508af3a9ae535153a70e4a735ded913857 Mon Sep 17 00:00:00 2001 From: Dawid Lorenz Date: Tue, 4 Jul 2023 12:44:44 +0200 Subject: [PATCH 221/594] Add support for pre and post HLSL qualifier validation The change makes it possible to define a const variable after the marked type. Example "float const" --- Test/baseResults/hlsl.function.frag.out | 38 ++++++++++++------------- Test/hlsl.function.frag | 2 +- glslang/HLSL/hlslGrammar.cpp | 2 +- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/Test/baseResults/hlsl.function.frag.out b/Test/baseResults/hlsl.function.frag.out index bfa5af4d37..ebf20fec3a 100644 --- a/Test/baseResults/hlsl.function.frag.out +++ b/Test/baseResults/hlsl.function.frag.out @@ -22,18 +22,17 @@ ERROR: node is still EOpNull! 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) -0:8 Convert int to float ( temp float) -0:8 Comma ( temp int) -0:8 Comma ( temp int) -0:8 Comma ( temp int) -0:8 Constant: -0:8 1 (const int) -0:8 Constant: -0:8 2 (const int) +0:8 Comma ( temp float) +0:8 Comma ( temp float) +0:8 Comma ( temp float) 0:8 Constant: -0:8 3 (const int) +0:8 1.000000 +0:8 Constant: +0:8 2.000000 0:8 Constant: -0:8 4 (const int) +0:8 3.000000 +0:8 Constant: +0:8 4.000000 0:12 Function Definition: fun3(vf4; ( temp uint) 0:12 Function Parameters: 0:12 'col' ( const (read only) 4-component vector of float) @@ -99,18 +98,17 @@ ERROR: node is still EOpNull! 0:? Sequence 0:8 Branch: Return with expression 0:8 Construct vec4 ( temp 4-component vector of float) -0:8 Convert int to float ( temp float) -0:8 Comma ( temp int) -0:8 Comma ( temp int) -0:8 Comma ( temp int) -0:8 Constant: -0:8 1 (const int) -0:8 Constant: -0:8 2 (const int) +0:8 Comma ( temp float) +0:8 Comma ( temp float) +0:8 Comma ( temp float) +0:8 Constant: +0:8 1.000000 0:8 Constant: -0:8 3 (const int) +0:8 2.000000 0:8 Constant: -0:8 4 (const int) +0:8 3.000000 +0:8 Constant: +0:8 4.000000 0:12 Function Definition: fun3(vf4; ( temp uint) 0:12 Function Parameters: 0:12 'col' ( const (read only) 4-component vector of float) diff --git a/Test/hlsl.function.frag b/Test/hlsl.function.frag index 2085005b10..6fb44a9ab1 100644 --- a/Test/hlsl.function.frag +++ b/Test/hlsl.function.frag @@ -5,7 +5,7 @@ float4 fun0() float4 fun2(float4 const col) { - return (1, 2, 3, 4); + return (1.0f, 2.0f, 3.0f, 4.0f); } uint fun3(const float4 col) diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp index 048e95dae2..11c0e45e9d 100644 --- a/glslang/HLSL/hlslGrammar.cpp +++ b/glslang/HLSL/hlslGrammar.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2016-2018 Google, Inc. // Copyright (C) 2016 LunarG, Inc. -// Copyright (C) 2023 Mobica Limited +// Copyright (C) 2023 Mobica Limited. // // All rights reserved. // From d9a6fb2247bd6da0da3d92c35d998e8d11ace25e Mon Sep 17 00:00:00 2001 From: Joyce Date: Thu, 13 Jul 2023 14:58:05 -0300 Subject: [PATCH 222/594] Create a Security Policy (#3169) * Create SECURITY.md Signed-off-by: Joyce --- SECURITY.md | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 SECURITY.md diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 0000000000..ffa39bf7a2 --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,6 @@ +# Security Policy + +To report a security issue, please disclose it at [security advisory](https://github.com/KhronosGroup/glslang/security/advisories/new). + +This project is maintained by a team of volunteers on a reasonable-effort basis. As +such, please give us at least 90 days to work on a fix before public exposure. From f47028995cf397f3f3396b9356d5b82ee3794259 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 13 Jul 2023 17:26:56 -0400 Subject: [PATCH 223/594] Use std::call_once in spv::Parameterize() There was a race condition in this function as it used a static variable to attempt to ensure global initialization was only done once, which was not thread-safe. Instead, use std::call_once, which was added to C++11 for this exact case. Fixes #342 --- SPIRV/doc.cpp | 3056 ++++++++++++++++++++++++------------------------- 1 file changed, 1528 insertions(+), 1528 deletions(-) diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 3d78d3de12..b25f37e02a 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -45,6 +45,7 @@ #include #include #include +#include namespace spv { extern "C" { @@ -1540,1753 +1541,1752 @@ EnumParameters MemoryAccessParams[MemoryAccessCeiling]; void Parameterize() { // only do this once. - static bool initialized = false; - if (initialized) - return; - initialized = true; - - // Exceptions to having a result and a resulting type . - // (Everything is initialized to have both). - - InstructionDesc[OpNop].setResultAndType(false, false); - InstructionDesc[OpSource].setResultAndType(false, false); - InstructionDesc[OpSourceContinued].setResultAndType(false, false); - InstructionDesc[OpSourceExtension].setResultAndType(false, false); - InstructionDesc[OpExtension].setResultAndType(false, false); - InstructionDesc[OpExtInstImport].setResultAndType(true, false); - InstructionDesc[OpCapability].setResultAndType(false, false); - InstructionDesc[OpMemoryModel].setResultAndType(false, false); - InstructionDesc[OpEntryPoint].setResultAndType(false, false); - InstructionDesc[OpExecutionMode].setResultAndType(false, false); - InstructionDesc[OpExecutionModeId].setResultAndType(false, false); - InstructionDesc[OpTypeVoid].setResultAndType(true, false); - InstructionDesc[OpTypeBool].setResultAndType(true, false); - InstructionDesc[OpTypeInt].setResultAndType(true, false); - InstructionDesc[OpTypeFloat].setResultAndType(true, false); - InstructionDesc[OpTypeVector].setResultAndType(true, false); - InstructionDesc[OpTypeMatrix].setResultAndType(true, false); - InstructionDesc[OpTypeImage].setResultAndType(true, false); - InstructionDesc[OpTypeSampler].setResultAndType(true, false); - InstructionDesc[OpTypeSampledImage].setResultAndType(true, false); - InstructionDesc[OpTypeArray].setResultAndType(true, false); - InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false); - InstructionDesc[OpTypeStruct].setResultAndType(true, false); - InstructionDesc[OpTypeOpaque].setResultAndType(true, false); - InstructionDesc[OpTypePointer].setResultAndType(true, false); - InstructionDesc[OpTypeForwardPointer].setResultAndType(false, false); - InstructionDesc[OpTypeFunction].setResultAndType(true, false); - InstructionDesc[OpTypeEvent].setResultAndType(true, false); - InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false); - InstructionDesc[OpTypeReserveId].setResultAndType(true, false); - InstructionDesc[OpTypeQueue].setResultAndType(true, false); - InstructionDesc[OpTypePipe].setResultAndType(true, false); - InstructionDesc[OpFunctionEnd].setResultAndType(false, false); - InstructionDesc[OpStore].setResultAndType(false, false); - InstructionDesc[OpImageWrite].setResultAndType(false, false); - InstructionDesc[OpDecorationGroup].setResultAndType(true, false); - InstructionDesc[OpDecorate].setResultAndType(false, false); - InstructionDesc[OpDecorateId].setResultAndType(false, false); - InstructionDesc[OpDecorateStringGOOGLE].setResultAndType(false, false); - InstructionDesc[OpMemberDecorate].setResultAndType(false, false); - InstructionDesc[OpMemberDecorateStringGOOGLE].setResultAndType(false, false); - InstructionDesc[OpGroupDecorate].setResultAndType(false, false); - InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false); - InstructionDesc[OpName].setResultAndType(false, false); - InstructionDesc[OpMemberName].setResultAndType(false, false); - InstructionDesc[OpString].setResultAndType(true, false); - InstructionDesc[OpLine].setResultAndType(false, false); - InstructionDesc[OpNoLine].setResultAndType(false, false); - InstructionDesc[OpCopyMemory].setResultAndType(false, false); - InstructionDesc[OpCopyMemorySized].setResultAndType(false, false); - InstructionDesc[OpEmitVertex].setResultAndType(false, false); - InstructionDesc[OpEndPrimitive].setResultAndType(false, false); - InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false); - InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false); - InstructionDesc[OpControlBarrier].setResultAndType(false, false); - InstructionDesc[OpMemoryBarrier].setResultAndType(false, false); - InstructionDesc[OpAtomicStore].setResultAndType(false, false); - InstructionDesc[OpLoopMerge].setResultAndType(false, false); - InstructionDesc[OpSelectionMerge].setResultAndType(false, false); - InstructionDesc[OpLabel].setResultAndType(true, false); - InstructionDesc[OpBranch].setResultAndType(false, false); - InstructionDesc[OpBranchConditional].setResultAndType(false, false); - InstructionDesc[OpSwitch].setResultAndType(false, false); - InstructionDesc[OpKill].setResultAndType(false, false); - InstructionDesc[OpTerminateInvocation].setResultAndType(false, false); - InstructionDesc[OpReturn].setResultAndType(false, false); - InstructionDesc[OpReturnValue].setResultAndType(false, false); - InstructionDesc[OpUnreachable].setResultAndType(false, false); - InstructionDesc[OpLifetimeStart].setResultAndType(false, false); - InstructionDesc[OpLifetimeStop].setResultAndType(false, false); - InstructionDesc[OpCommitReadPipe].setResultAndType(false, false); - InstructionDesc[OpCommitWritePipe].setResultAndType(false, false); - InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false); - InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false); - InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false); - InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false); - InstructionDesc[OpRetainEvent].setResultAndType(false, false); - InstructionDesc[OpReleaseEvent].setResultAndType(false, false); - InstructionDesc[OpGroupWaitEvents].setResultAndType(false, false); - InstructionDesc[OpAtomicFlagClear].setResultAndType(false, false); - InstructionDesc[OpModuleProcessed].setResultAndType(false, false); - InstructionDesc[OpTypeCooperativeMatrixNV].setResultAndType(true, false); - InstructionDesc[OpCooperativeMatrixStoreNV].setResultAndType(false, false); - InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false); - InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false); - - // Specific additional context-dependent operands - - ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "'Number of <>'"); - - ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'"); - ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'"); - ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'"); - - ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'"); - ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'"); - ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'"); - - ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "'Vertex count'"); - ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandLiteralNumber, "'Vector type'"); - - DecorationOperands[DecorationStream].push(OperandLiteralNumber, "'Stream Number'"); - DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "'Location'"); - DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "'Component'"); - DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "'Index'"); - DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "'Binding Point'"); - DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "'Descriptor Set'"); - DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "'Byte Offset'"); - DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "'XFB Buffer Number'"); - DecorationOperands[DecorationXfbStride].push(OperandLiteralNumber, "'XFB Stride'"); - DecorationOperands[DecorationArrayStride].push(OperandLiteralNumber, "'Array Stride'"); - DecorationOperands[DecorationMatrixStride].push(OperandLiteralNumber, "'Matrix Stride'"); - DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <>"); - DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "'Floating-Point Rounding Mode'"); - DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "'Fast-Math Mode'"); - DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "'Name'"); - DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "'Linkage Type'"); - DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "'Function Parameter Attribute'"); - DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "'Specialization Constant ID'"); - DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'"); - DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'"); - - OperandClassParams[OperandSource].set(0, SourceString, nullptr); - OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr); - OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr); - OperandClassParams[OperandMemory].set(0, MemoryString, nullptr); - OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams); - OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands); - OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr); - OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr); - OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr); - OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr); - OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr); - OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr); - OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr); - OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true); - OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true); - OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr); - OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr); - OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr); - OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr); - OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams); - OperandClassParams[OperandDecoration].setOperands(DecorationOperands); - OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr); - OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true); - OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true); - OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true); - OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true); - OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true); - OperandClassParams[OperandScope].set(0, ScopeString, nullptr); - OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr); - OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); - OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); - OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); - OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr); - - // set name of operator, an initial set of style operands, and the description - - InstructionDesc[OpSource].operands.push(OperandSource, ""); - InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'"); - InstructionDesc[OpSource].operands.push(OperandId, "'File'", true); - InstructionDesc[OpSource].operands.push(OperandLiteralString, "'Source'", true); - - InstructionDesc[OpSourceContinued].operands.push(OperandLiteralString, "'Continued Source'"); - - InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'"); - - InstructionDesc[OpName].operands.push(OperandId, "'Target'"); - InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'"); - - InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'"); - InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'"); - InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'"); - - InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'"); - - InstructionDesc[OpLine].operands.push(OperandId, "'File'"); - InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'"); - InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'"); - - InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'"); - - InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'"); - - InstructionDesc[OpCapability].operands.push(OperandCapability, "'Capability'"); + static std::once_flag initialized; + std::call_once(initialized, [](){ + + // Exceptions to having a result and a resulting type . + // (Everything is initialized to have both). + + InstructionDesc[OpNop].setResultAndType(false, false); + InstructionDesc[OpSource].setResultAndType(false, false); + InstructionDesc[OpSourceContinued].setResultAndType(false, false); + InstructionDesc[OpSourceExtension].setResultAndType(false, false); + InstructionDesc[OpExtension].setResultAndType(false, false); + InstructionDesc[OpExtInstImport].setResultAndType(true, false); + InstructionDesc[OpCapability].setResultAndType(false, false); + InstructionDesc[OpMemoryModel].setResultAndType(false, false); + InstructionDesc[OpEntryPoint].setResultAndType(false, false); + InstructionDesc[OpExecutionMode].setResultAndType(false, false); + InstructionDesc[OpExecutionModeId].setResultAndType(false, false); + InstructionDesc[OpTypeVoid].setResultAndType(true, false); + InstructionDesc[OpTypeBool].setResultAndType(true, false); + InstructionDesc[OpTypeInt].setResultAndType(true, false); + InstructionDesc[OpTypeFloat].setResultAndType(true, false); + InstructionDesc[OpTypeVector].setResultAndType(true, false); + InstructionDesc[OpTypeMatrix].setResultAndType(true, false); + InstructionDesc[OpTypeImage].setResultAndType(true, false); + InstructionDesc[OpTypeSampler].setResultAndType(true, false); + InstructionDesc[OpTypeSampledImage].setResultAndType(true, false); + InstructionDesc[OpTypeArray].setResultAndType(true, false); + InstructionDesc[OpTypeRuntimeArray].setResultAndType(true, false); + InstructionDesc[OpTypeStruct].setResultAndType(true, false); + InstructionDesc[OpTypeOpaque].setResultAndType(true, false); + InstructionDesc[OpTypePointer].setResultAndType(true, false); + InstructionDesc[OpTypeForwardPointer].setResultAndType(false, false); + InstructionDesc[OpTypeFunction].setResultAndType(true, false); + InstructionDesc[OpTypeEvent].setResultAndType(true, false); + InstructionDesc[OpTypeDeviceEvent].setResultAndType(true, false); + InstructionDesc[OpTypeReserveId].setResultAndType(true, false); + InstructionDesc[OpTypeQueue].setResultAndType(true, false); + InstructionDesc[OpTypePipe].setResultAndType(true, false); + InstructionDesc[OpFunctionEnd].setResultAndType(false, false); + InstructionDesc[OpStore].setResultAndType(false, false); + InstructionDesc[OpImageWrite].setResultAndType(false, false); + InstructionDesc[OpDecorationGroup].setResultAndType(true, false); + InstructionDesc[OpDecorate].setResultAndType(false, false); + InstructionDesc[OpDecorateId].setResultAndType(false, false); + InstructionDesc[OpDecorateStringGOOGLE].setResultAndType(false, false); + InstructionDesc[OpMemberDecorate].setResultAndType(false, false); + InstructionDesc[OpMemberDecorateStringGOOGLE].setResultAndType(false, false); + InstructionDesc[OpGroupDecorate].setResultAndType(false, false); + InstructionDesc[OpGroupMemberDecorate].setResultAndType(false, false); + InstructionDesc[OpName].setResultAndType(false, false); + InstructionDesc[OpMemberName].setResultAndType(false, false); + InstructionDesc[OpString].setResultAndType(true, false); + InstructionDesc[OpLine].setResultAndType(false, false); + InstructionDesc[OpNoLine].setResultAndType(false, false); + InstructionDesc[OpCopyMemory].setResultAndType(false, false); + InstructionDesc[OpCopyMemorySized].setResultAndType(false, false); + InstructionDesc[OpEmitVertex].setResultAndType(false, false); + InstructionDesc[OpEndPrimitive].setResultAndType(false, false); + InstructionDesc[OpEmitStreamVertex].setResultAndType(false, false); + InstructionDesc[OpEndStreamPrimitive].setResultAndType(false, false); + InstructionDesc[OpControlBarrier].setResultAndType(false, false); + InstructionDesc[OpMemoryBarrier].setResultAndType(false, false); + InstructionDesc[OpAtomicStore].setResultAndType(false, false); + InstructionDesc[OpLoopMerge].setResultAndType(false, false); + InstructionDesc[OpSelectionMerge].setResultAndType(false, false); + InstructionDesc[OpLabel].setResultAndType(true, false); + InstructionDesc[OpBranch].setResultAndType(false, false); + InstructionDesc[OpBranchConditional].setResultAndType(false, false); + InstructionDesc[OpSwitch].setResultAndType(false, false); + InstructionDesc[OpKill].setResultAndType(false, false); + InstructionDesc[OpTerminateInvocation].setResultAndType(false, false); + InstructionDesc[OpReturn].setResultAndType(false, false); + InstructionDesc[OpReturnValue].setResultAndType(false, false); + InstructionDesc[OpUnreachable].setResultAndType(false, false); + InstructionDesc[OpLifetimeStart].setResultAndType(false, false); + InstructionDesc[OpLifetimeStop].setResultAndType(false, false); + InstructionDesc[OpCommitReadPipe].setResultAndType(false, false); + InstructionDesc[OpCommitWritePipe].setResultAndType(false, false); + InstructionDesc[OpGroupCommitWritePipe].setResultAndType(false, false); + InstructionDesc[OpGroupCommitReadPipe].setResultAndType(false, false); + InstructionDesc[OpCaptureEventProfilingInfo].setResultAndType(false, false); + InstructionDesc[OpSetUserEventStatus].setResultAndType(false, false); + InstructionDesc[OpRetainEvent].setResultAndType(false, false); + InstructionDesc[OpReleaseEvent].setResultAndType(false, false); + InstructionDesc[OpGroupWaitEvents].setResultAndType(false, false); + InstructionDesc[OpAtomicFlagClear].setResultAndType(false, false); + InstructionDesc[OpModuleProcessed].setResultAndType(false, false); + InstructionDesc[OpTypeCooperativeMatrixNV].setResultAndType(true, false); + InstructionDesc[OpCooperativeMatrixStoreNV].setResultAndType(false, false); + InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false); + InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false); + + // Specific additional context-dependent operands + + ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "'Number of <>'"); + + ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'x size'"); + ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'y size'"); + ExecutionModeOperands[ExecutionModeLocalSize].push(OperandLiteralNumber, "'z size'"); + + ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'x size'"); + ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'y size'"); + ExecutionModeOperands[ExecutionModeLocalSizeHint].push(OperandLiteralNumber, "'z size'"); + + ExecutionModeOperands[ExecutionModeOutputVertices].push(OperandLiteralNumber, "'Vertex count'"); + ExecutionModeOperands[ExecutionModeVecTypeHint].push(OperandLiteralNumber, "'Vector type'"); + + DecorationOperands[DecorationStream].push(OperandLiteralNumber, "'Stream Number'"); + DecorationOperands[DecorationLocation].push(OperandLiteralNumber, "'Location'"); + DecorationOperands[DecorationComponent].push(OperandLiteralNumber, "'Component'"); + DecorationOperands[DecorationIndex].push(OperandLiteralNumber, "'Index'"); + DecorationOperands[DecorationBinding].push(OperandLiteralNumber, "'Binding Point'"); + DecorationOperands[DecorationDescriptorSet].push(OperandLiteralNumber, "'Descriptor Set'"); + DecorationOperands[DecorationOffset].push(OperandLiteralNumber, "'Byte Offset'"); + DecorationOperands[DecorationXfbBuffer].push(OperandLiteralNumber, "'XFB Buffer Number'"); + DecorationOperands[DecorationXfbStride].push(OperandLiteralNumber, "'XFB Stride'"); + DecorationOperands[DecorationArrayStride].push(OperandLiteralNumber, "'Array Stride'"); + DecorationOperands[DecorationMatrixStride].push(OperandLiteralNumber, "'Matrix Stride'"); + DecorationOperands[DecorationBuiltIn].push(OperandLiteralNumber, "See <>"); + DecorationOperands[DecorationFPRoundingMode].push(OperandFPRoundingMode, "'Floating-Point Rounding Mode'"); + DecorationOperands[DecorationFPFastMathMode].push(OperandFPFastMath, "'Fast-Math Mode'"); + DecorationOperands[DecorationLinkageAttributes].push(OperandLiteralString, "'Name'"); + DecorationOperands[DecorationLinkageAttributes].push(OperandLinkageType, "'Linkage Type'"); + DecorationOperands[DecorationFuncParamAttr].push(OperandFuncParamAttr, "'Function Parameter Attribute'"); + DecorationOperands[DecorationSpecId].push(OperandLiteralNumber, "'Specialization Constant ID'"); + DecorationOperands[DecorationInputAttachmentIndex].push(OperandLiteralNumber, "'Attachment Index'"); + DecorationOperands[DecorationAlignment].push(OperandLiteralNumber, "'Alignment'"); + + OperandClassParams[OperandSource].set(0, SourceString, nullptr); + OperandClassParams[OperandExecutionModel].set(0, ExecutionModelString, nullptr); + OperandClassParams[OperandAddressing].set(0, AddressingString, nullptr); + OperandClassParams[OperandMemory].set(0, MemoryString, nullptr); + OperandClassParams[OperandExecutionMode].set(ExecutionModeCeiling, ExecutionModeString, ExecutionModeParams); + OperandClassParams[OperandExecutionMode].setOperands(ExecutionModeOperands); + OperandClassParams[OperandStorage].set(0, StorageClassString, nullptr); + OperandClassParams[OperandDimensionality].set(0, DimensionString, nullptr); + OperandClassParams[OperandSamplerAddressingMode].set(0, SamplerAddressingModeString, nullptr); + OperandClassParams[OperandSamplerFilterMode].set(0, SamplerFilterModeString, nullptr); + OperandClassParams[OperandSamplerImageFormat].set(0, ImageFormatString, nullptr); + OperandClassParams[OperandImageChannelOrder].set(0, ImageChannelOrderString, nullptr); + OperandClassParams[OperandImageChannelDataType].set(0, ImageChannelDataTypeString, nullptr); + OperandClassParams[OperandImageOperands].set(ImageOperandsCeiling, ImageOperandsString, ImageOperandsParams, true); + OperandClassParams[OperandFPFastMath].set(0, FPFastMathString, nullptr, true); + OperandClassParams[OperandFPRoundingMode].set(0, FPRoundingModeString, nullptr); + OperandClassParams[OperandLinkageType].set(0, LinkageTypeString, nullptr); + OperandClassParams[OperandFuncParamAttr].set(0, FuncParamAttrString, nullptr); + OperandClassParams[OperandAccessQualifier].set(0, AccessQualifierString, nullptr); + OperandClassParams[OperandDecoration].set(DecorationCeiling, DecorationString, DecorationParams); + OperandClassParams[OperandDecoration].setOperands(DecorationOperands); + OperandClassParams[OperandBuiltIn].set(0, BuiltInString, nullptr); + OperandClassParams[OperandSelect].set(SelectControlCeiling, SelectControlString, SelectionControlParams, true); + OperandClassParams[OperandLoop].set(LoopControlCeiling, LoopControlString, LoopControlParams, true); + OperandClassParams[OperandFunction].set(FunctionControlCeiling, FunctionControlString, FunctionControlParams, true); + OperandClassParams[OperandMemorySemantics].set(0, MemorySemanticsString, nullptr, true); + OperandClassParams[OperandMemoryAccess].set(MemoryAccessCeiling, MemoryAccessString, MemoryAccessParams, true); + OperandClassParams[OperandScope].set(0, ScopeString, nullptr); + OperandClassParams[OperandGroupOperation].set(0, GroupOperationString, nullptr); + OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); + OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); + OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); + OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr); + + // set name of operator, an initial set of style operands, and the description + + InstructionDesc[OpSource].operands.push(OperandSource, ""); + InstructionDesc[OpSource].operands.push(OperandLiteralNumber, "'Version'"); + InstructionDesc[OpSource].operands.push(OperandId, "'File'", true); + InstructionDesc[OpSource].operands.push(OperandLiteralString, "'Source'", true); + + InstructionDesc[OpSourceContinued].operands.push(OperandLiteralString, "'Continued Source'"); + + InstructionDesc[OpSourceExtension].operands.push(OperandLiteralString, "'Extension'"); + + InstructionDesc[OpName].operands.push(OperandId, "'Target'"); + InstructionDesc[OpName].operands.push(OperandLiteralString, "'Name'"); + + InstructionDesc[OpMemberName].operands.push(OperandId, "'Type'"); + InstructionDesc[OpMemberName].operands.push(OperandLiteralNumber, "'Member'"); + InstructionDesc[OpMemberName].operands.push(OperandLiteralString, "'Name'"); + + InstructionDesc[OpString].operands.push(OperandLiteralString, "'String'"); + + InstructionDesc[OpLine].operands.push(OperandId, "'File'"); + InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Line'"); + InstructionDesc[OpLine].operands.push(OperandLiteralNumber, "'Column'"); + + InstructionDesc[OpExtension].operands.push(OperandLiteralString, "'Name'"); + + InstructionDesc[OpExtInstImport].operands.push(OperandLiteralString, "'Name'"); + + InstructionDesc[OpCapability].operands.push(OperandCapability, "'Capability'"); - InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, ""); - InstructionDesc[OpMemoryModel].operands.push(OperandMemory, ""); - - InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, ""); - InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'"); - InstructionDesc[OpEntryPoint].operands.push(OperandLiteralString, "'Name'"); - InstructionDesc[OpEntryPoint].operands.push(OperandVariableIds, "'Interface'"); - - InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'"); - InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'"); - InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <>"); - - InstructionDesc[OpExecutionModeId].operands.push(OperandId, "'Entry Point'"); - InstructionDesc[OpExecutionModeId].operands.push(OperandExecutionMode, "'Mode'"); - InstructionDesc[OpExecutionModeId].operands.push(OperandVariableIds, "See <>"); - - InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'"); - InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'"); - - InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'"); - - InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'"); - InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'"); + InstructionDesc[OpMemoryModel].operands.push(OperandAddressing, ""); + InstructionDesc[OpMemoryModel].operands.push(OperandMemory, ""); + + InstructionDesc[OpEntryPoint].operands.push(OperandExecutionModel, ""); + InstructionDesc[OpEntryPoint].operands.push(OperandId, "'Entry Point'"); + InstructionDesc[OpEntryPoint].operands.push(OperandLiteralString, "'Name'"); + InstructionDesc[OpEntryPoint].operands.push(OperandVariableIds, "'Interface'"); + + InstructionDesc[OpExecutionMode].operands.push(OperandId, "'Entry Point'"); + InstructionDesc[OpExecutionMode].operands.push(OperandExecutionMode, "'Mode'"); + InstructionDesc[OpExecutionMode].operands.push(OperandOptionalLiteral, "See <>"); + + InstructionDesc[OpExecutionModeId].operands.push(OperandId, "'Entry Point'"); + InstructionDesc[OpExecutionModeId].operands.push(OperandExecutionMode, "'Mode'"); + InstructionDesc[OpExecutionModeId].operands.push(OperandVariableIds, "See <>"); + + InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Width'"); + InstructionDesc[OpTypeInt].operands.push(OperandLiteralNumber, "'Signedness'"); + + InstructionDesc[OpTypeFloat].operands.push(OperandLiteralNumber, "'Width'"); + + InstructionDesc[OpTypeVector].operands.push(OperandId, "'Component Type'"); + InstructionDesc[OpTypeVector].operands.push(OperandLiteralNumber, "'Component Count'"); - InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'"); - InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'"); + InstructionDesc[OpTypeMatrix].operands.push(OperandId, "'Column Type'"); + InstructionDesc[OpTypeMatrix].operands.push(OperandLiteralNumber, "'Column Count'"); - InstructionDesc[OpTypeImage].operands.push(OperandId, "'Sampled Type'"); - InstructionDesc[OpTypeImage].operands.push(OperandDimensionality, ""); - InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Depth'"); - InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Arrayed'"); - InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'MS'"); - InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Sampled'"); - InstructionDesc[OpTypeImage].operands.push(OperandSamplerImageFormat, ""); - InstructionDesc[OpTypeImage].operands.push(OperandAccessQualifier, "", true); + InstructionDesc[OpTypeImage].operands.push(OperandId, "'Sampled Type'"); + InstructionDesc[OpTypeImage].operands.push(OperandDimensionality, ""); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Depth'"); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Arrayed'"); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'MS'"); + InstructionDesc[OpTypeImage].operands.push(OperandLiteralNumber, "'Sampled'"); + InstructionDesc[OpTypeImage].operands.push(OperandSamplerImageFormat, ""); + InstructionDesc[OpTypeImage].operands.push(OperandAccessQualifier, "", true); - InstructionDesc[OpTypeSampledImage].operands.push(OperandId, "'Image Type'"); + InstructionDesc[OpTypeSampledImage].operands.push(OperandId, "'Image Type'"); - InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'"); - InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'"); + InstructionDesc[OpTypeArray].operands.push(OperandId, "'Element Type'"); + InstructionDesc[OpTypeArray].operands.push(OperandId, "'Length'"); - InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'"); + InstructionDesc[OpTypeRuntimeArray].operands.push(OperandId, "'Element Type'"); - InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n..."); + InstructionDesc[OpTypeStruct].operands.push(OperandVariableIds, "'Member 0 type', +\n'member 1 type', +\n..."); - InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type."); + InstructionDesc[OpTypeOpaque].operands.push(OperandLiteralString, "The name of the opaque type."); - InstructionDesc[OpTypePointer].operands.push(OperandStorage, ""); - InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'"); + InstructionDesc[OpTypePointer].operands.push(OperandStorage, ""); + InstructionDesc[OpTypePointer].operands.push(OperandId, "'Type'"); - InstructionDesc[OpTypeForwardPointer].operands.push(OperandId, "'Pointer Type'"); - InstructionDesc[OpTypeForwardPointer].operands.push(OperandStorage, ""); + InstructionDesc[OpTypeForwardPointer].operands.push(OperandId, "'Pointer Type'"); + InstructionDesc[OpTypeForwardPointer].operands.push(OperandStorage, ""); - InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'"); + InstructionDesc[OpTypePipe].operands.push(OperandAccessQualifier, "'Qualifier'"); - InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'"); - InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..."); + InstructionDesc[OpTypeFunction].operands.push(OperandId, "'Return Type'"); + InstructionDesc[OpTypeFunction].operands.push(OperandVariableIds, "'Parameter 0 Type', +\n'Parameter 1 Type', +\n..."); - InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'"); + InstructionDesc[OpConstant].operands.push(OperandVariableLiterals, "'Value'"); - InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); + InstructionDesc[OpConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); - InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, ""); - InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'"); - InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, ""); + InstructionDesc[OpConstantSampler].operands.push(OperandSamplerAddressingMode, ""); + InstructionDesc[OpConstantSampler].operands.push(OperandLiteralNumber, "'Param'"); + InstructionDesc[OpConstantSampler].operands.push(OperandSamplerFilterMode, ""); - InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'"); + InstructionDesc[OpSpecConstant].operands.push(OperandVariableLiterals, "'Value'"); - InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); + InstructionDesc[OpSpecConstantComposite].operands.push(OperandVariableIds, "'Constituents'"); - InstructionDesc[OpSpecConstantOp].operands.push(OperandLiteralNumber, "'Opcode'"); - InstructionDesc[OpSpecConstantOp].operands.push(OperandVariableIds, "'Operands'"); + InstructionDesc[OpSpecConstantOp].operands.push(OperandLiteralNumber, "'Opcode'"); + InstructionDesc[OpSpecConstantOp].operands.push(OperandVariableIds, "'Operands'"); - InstructionDesc[OpVariable].operands.push(OperandStorage, ""); - InstructionDesc[OpVariable].operands.push(OperandId, "'Initializer'", true); + InstructionDesc[OpVariable].operands.push(OperandStorage, ""); + InstructionDesc[OpVariable].operands.push(OperandId, "'Initializer'", true); - InstructionDesc[OpFunction].operands.push(OperandFunction, ""); - InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'"); + InstructionDesc[OpFunction].operands.push(OperandFunction, ""); + InstructionDesc[OpFunction].operands.push(OperandId, "'Function Type'"); - InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'"); - InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n..."); + InstructionDesc[OpFunctionCall].operands.push(OperandId, "'Function'"); + InstructionDesc[OpFunctionCall].operands.push(OperandVariableIds, "'Argument 0', +\n'Argument 1', +\n..."); - InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'"); - InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'"); - InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); + InstructionDesc[OpExtInst].operands.push(OperandId, "'Set'"); + InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'"); + InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); - InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true); - InstructionDesc[OpLoad].operands.push(OperandLiteralNumber, "", true); - InstructionDesc[OpLoad].operands.push(OperandId, "", true); + InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true); + InstructionDesc[OpLoad].operands.push(OperandLiteralNumber, "", true); + InstructionDesc[OpLoad].operands.push(OperandId, "", true); - InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpStore].operands.push(OperandId, "'Object'"); - InstructionDesc[OpStore].operands.push(OperandMemoryAccess, "", true); - InstructionDesc[OpStore].operands.push(OperandLiteralNumber, "", true); - InstructionDesc[OpStore].operands.push(OperandId, "", true); + InstructionDesc[OpStore].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpStore].operands.push(OperandId, "'Object'"); + InstructionDesc[OpStore].operands.push(OperandMemoryAccess, "", true); + InstructionDesc[OpStore].operands.push(OperandLiteralNumber, "", true); + InstructionDesc[OpStore].operands.push(OperandId, "", true); - InstructionDesc[OpPhi].operands.push(OperandVariableIds, "'Variable, Parent, ...'"); + InstructionDesc[OpPhi].operands.push(OperandVariableIds, "'Variable, Parent, ...'"); - InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'"); - InstructionDesc[OpDecorate].operands.push(OperandDecoration, ""); - InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <>."); + InstructionDesc[OpDecorate].operands.push(OperandId, "'Target'"); + InstructionDesc[OpDecorate].operands.push(OperandDecoration, ""); + InstructionDesc[OpDecorate].operands.push(OperandVariableLiterals, "See <>."); - InstructionDesc[OpDecorateId].operands.push(OperandId, "'Target'"); - InstructionDesc[OpDecorateId].operands.push(OperandDecoration, ""); - InstructionDesc[OpDecorateId].operands.push(OperandVariableIds, "See <>."); + InstructionDesc[OpDecorateId].operands.push(OperandId, "'Target'"); + InstructionDesc[OpDecorateId].operands.push(OperandDecoration, ""); + InstructionDesc[OpDecorateId].operands.push(OperandVariableIds, "See <>."); - InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'"); - InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, ""); - InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); + InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandId, "'Target'"); + InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandDecoration, ""); + InstructionDesc[OpDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); - InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'"); - InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'"); - InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, ""); - InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <>."); + InstructionDesc[OpMemberDecorate].operands.push(OperandId, "'Structure Type'"); + InstructionDesc[OpMemberDecorate].operands.push(OperandLiteralNumber, "'Member'"); + InstructionDesc[OpMemberDecorate].operands.push(OperandDecoration, ""); + InstructionDesc[OpMemberDecorate].operands.push(OperandVariableLiterals, "See <>."); - InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'"); - InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'"); - InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, ""); - InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); + InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandId, "'Structure Type'"); + InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandLiteralNumber, "'Member'"); + InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandDecoration, ""); + InstructionDesc[OpMemberDecorateStringGOOGLE].operands.push(OperandVariableLiteralStrings, "'Literal Strings'"); - InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'"); - InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'"); + InstructionDesc[OpGroupDecorate].operands.push(OperandId, "'Decoration Group'"); + InstructionDesc[OpGroupDecorate].operands.push(OperandVariableIds, "'Targets'"); - InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration Group'"); - InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIdLiteral, "'Targets'"); + InstructionDesc[OpGroupMemberDecorate].operands.push(OperandId, "'Decoration Group'"); + InstructionDesc[OpGroupMemberDecorate].operands.push(OperandVariableIdLiteral, "'Targets'"); - InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'"); + InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Vector'"); + InstructionDesc[OpVectorExtractDynamic].operands.push(OperandId, "'Index'"); - InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'"); - InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'"); + InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Vector'"); + InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Component'"); + InstructionDesc[OpVectorInsertDynamic].operands.push(OperandId, "'Index'"); - InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'"); - InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'"); - InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'"); + InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 1'"); + InstructionDesc[OpVectorShuffle].operands.push(OperandId, "'Vector 2'"); + InstructionDesc[OpVectorShuffle].operands.push(OperandVariableLiterals, "'Components'"); - InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'"); + InstructionDesc[OpCompositeConstruct].operands.push(OperandVariableIds, "'Constituents'"); - InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'"); - InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'"); + InstructionDesc[OpCompositeExtract].operands.push(OperandId, "'Composite'"); + InstructionDesc[OpCompositeExtract].operands.push(OperandVariableLiterals, "'Indexes'"); - InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'"); - InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'"); - InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'"); + InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Object'"); + InstructionDesc[OpCompositeInsert].operands.push(OperandId, "'Composite'"); + InstructionDesc[OpCompositeInsert].operands.push(OperandVariableLiterals, "'Indexes'"); - InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpCopyObject].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'"); - InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'"); - InstructionDesc[OpCopyMemory].operands.push(OperandMemoryAccess, "", true); + InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Target'"); + InstructionDesc[OpCopyMemory].operands.push(OperandId, "'Source'"); + InstructionDesc[OpCopyMemory].operands.push(OperandMemoryAccess, "", true); - InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'"); - InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'"); - InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'"); - InstructionDesc[OpCopyMemorySized].operands.push(OperandMemoryAccess, "", true); - - InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'"); - InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'"); - - InstructionDesc[OpImage].operands.push(OperandId, "'Sampled Image'"); - - InstructionDesc[OpImageRead].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageRead].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageRead].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageRead].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageWrite].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageWrite].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageWrite].operands.push(OperandId, "'Texel'"); - InstructionDesc[OpImageWrite].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageWrite].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageFetch].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageFetch].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageFetch].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageGather].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageGather].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'"); - InstructionDesc[OpImageGather].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageGather].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageDrefGather].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageDrefGather].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandVariableIds, "", true); - - InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Target'"); + InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Source'"); + InstructionDesc[OpCopyMemorySized].operands.push(OperandId, "'Size'"); + InstructionDesc[OpCopyMemorySized].operands.push(OperandMemoryAccess, "", true); + + InstructionDesc[OpSampledImage].operands.push(OperandId, "'Image'"); + InstructionDesc[OpSampledImage].operands.push(OperandId, "'Sampler'"); + + InstructionDesc[OpImage].operands.push(OperandId, "'Sampled Image'"); + + InstructionDesc[OpImageRead].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageRead].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageRead].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageRead].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageWrite].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageWrite].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageWrite].operands.push(OperandId, "'Texel'"); + InstructionDesc[OpImageWrite].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageWrite].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleImplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleExplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleProjImplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleProjExplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageFetch].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageFetch].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageFetch].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageFetch].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageGather].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageGather].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageGather].operands.push(OperandId, "'Component'"); + InstructionDesc[OpImageGather].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageGather].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageDrefGather].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageDrefGather].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageDrefGather].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleImplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleExplicitLod].operands.push(OperandVariableIds, "", true); + + InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleDrefImplicitLod].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleDrefExplicitLod].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleProjImplicitLod].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleProjExplicitLod].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleProjDrefImplicitLod].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseSampleProjDrefExplicitLod].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseFetch].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseFetch].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageSparseFetch].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseFetch].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseFetch].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Component'"); - InstructionDesc[OpImageSparseGather].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseGather].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseGather].operands.push(OperandId, "'Component'"); + InstructionDesc[OpImageSparseGather].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseGather].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'D~ref~'"); - InstructionDesc[OpImageSparseDrefGather].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseDrefGather].operands.push(OperandId, "'D~ref~'"); + InstructionDesc[OpImageSparseDrefGather].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseDrefGather].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageSparseRead].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSparseRead].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSparseRead].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'"); + InstructionDesc[OpImageSparseTexelsResident].operands.push(OperandId, "'Resident Code'"); - InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'"); + InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQuerySizeLod].operands.push(OperandId, "'Level of Detail'"); - InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQuerySize].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryLod].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryLevels].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQuerySamples].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryFormat].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageQueryOrder].operands.push(OperandId, "'Image'"); - InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'"); - InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'"); + InstructionDesc[OpAccessChain].operands.push(OperandId, "'Base'"); + InstructionDesc[OpAccessChain].operands.push(OperandVariableIds, "'Indexes'"); - InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'"); - InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'"); + InstructionDesc[OpInBoundsAccessChain].operands.push(OperandId, "'Base'"); + InstructionDesc[OpInBoundsAccessChain].operands.push(OperandVariableIds, "'Indexes'"); - InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'"); - InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'"); - InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'"); + InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Base'"); + InstructionDesc[OpPtrAccessChain].operands.push(OperandId, "'Element'"); + InstructionDesc[OpPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'"); - InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Base'"); - InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Element'"); - InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'"); + InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Base'"); + InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandId, "'Element'"); + InstructionDesc[OpInBoundsPtrAccessChain].operands.push(OperandVariableIds, "'Indexes'"); - InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpSNegate].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpFNegate].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpNot].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpNot].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpAny].operands.push(OperandId, "'Vector'"); + InstructionDesc[OpAny].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpAll].operands.push(OperandId, "'Vector'"); + InstructionDesc[OpAll].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'"); + InstructionDesc[OpConvertFToU].operands.push(OperandId, "'Float Value'"); - InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'"); + InstructionDesc[OpConvertFToS].operands.push(OperandId, "'Float Value'"); - InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'"); + InstructionDesc[OpConvertSToF].operands.push(OperandId, "'Signed Value'"); - InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned Value'"); + InstructionDesc[OpConvertUToF].operands.push(OperandId, "'Unsigned Value'"); - InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned Value'"); + InstructionDesc[OpUConvert].operands.push(OperandId, "'Unsigned Value'"); - InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'"); + InstructionDesc[OpSConvert].operands.push(OperandId, "'Signed Value'"); - InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'"); + InstructionDesc[OpFConvert].operands.push(OperandId, "'Float Value'"); - InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'"); + InstructionDesc[OpSatConvertSToU].operands.push(OperandId, "'Signed Value'"); - InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'"); + InstructionDesc[OpSatConvertUToS].operands.push(OperandId, "'Unsigned Value'"); - InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpConvertPtrToU].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'"); + InstructionDesc[OpConvertUToPtr].operands.push(OperandId, "'Integer Value'"); - InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpPtrCastToGeneric].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpGenericCastToPtr].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'"); + InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpGenericCastToPtrExplicit].operands.push(OperandStorage, "'Storage'"); - InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpGenericPtrMemSemantics].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpBitcast].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'"); + InstructionDesc[OpQuantizeToF16].operands.push(OperandId, "'Value'"); - InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'"); + InstructionDesc[OpTranspose].operands.push(OperandId, "'Matrix'"); - InstructionDesc[OpCopyLogical].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpCopyLogical].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpIsNan].operands.push(OperandId, "'x'"); + InstructionDesc[OpIsNan].operands.push(OperandId, "'x'"); - InstructionDesc[OpIsInf].operands.push(OperandId, "'x'"); + InstructionDesc[OpIsInf].operands.push(OperandId, "'x'"); - InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'"); + InstructionDesc[OpIsFinite].operands.push(OperandId, "'x'"); - InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'"); + InstructionDesc[OpIsNormal].operands.push(OperandId, "'x'"); - InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'"); + InstructionDesc[OpSignBitSet].operands.push(OperandId, "'x'"); - InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'"); - InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'"); + InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'x'"); + InstructionDesc[OpLessOrGreater].operands.push(OperandId, "'y'"); - InstructionDesc[OpOrdered].operands.push(OperandId, "'x'"); - InstructionDesc[OpOrdered].operands.push(OperandId, "'y'"); + InstructionDesc[OpOrdered].operands.push(OperandId, "'x'"); + InstructionDesc[OpOrdered].operands.push(OperandId, "'y'"); - InstructionDesc[OpUnordered].operands.push(OperandId, "'x'"); - InstructionDesc[OpUnordered].operands.push(OperandId, "'y'"); + InstructionDesc[OpUnordered].operands.push(OperandId, "'x'"); + InstructionDesc[OpUnordered].operands.push(OperandId, "'y'"); - InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'"); - InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'"); + InstructionDesc[OpArrayLength].operands.push(OperandId, "'Structure'"); + InstructionDesc[OpArrayLength].operands.push(OperandLiteralNumber, "'Array member'"); - InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpIAdd].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFAdd].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpISub].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpISub].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFSub].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpIMul].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFMul].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpUDiv].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSDiv].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFDiv].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpUMod].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSRem].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSMod].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFRem].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFMod].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'"); + InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Vector'"); + InstructionDesc[OpVectorTimesScalar].operands.push(OperandId, "'Scalar'"); - InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'"); - InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'"); + InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Matrix'"); + InstructionDesc[OpMatrixTimesScalar].operands.push(OperandId, "'Scalar'"); - InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'"); + InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Vector'"); + InstructionDesc[OpVectorTimesMatrix].operands.push(OperandId, "'Matrix'"); - InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'"); - InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'"); + InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Matrix'"); + InstructionDesc[OpMatrixTimesVector].operands.push(OperandId, "'Vector'"); - InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'"); - InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'"); + InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'LeftMatrix'"); + InstructionDesc[OpMatrixTimesMatrix].operands.push(OperandId, "'RightMatrix'"); - InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'"); - InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'"); + InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 1'"); + InstructionDesc[OpOuterProduct].operands.push(OperandId, "'Vector 2'"); - InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'"); - InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'"); + InstructionDesc[OpDot].operands.push(OperandId, "'Vector 1'"); + InstructionDesc[OpDot].operands.push(OperandId, "'Vector 2'"); - InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpIAddCarry].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpISubBorrow].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpUMulExtended].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSMulExtended].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Base'"); - InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Shift'"); + InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Base'"); + InstructionDesc[OpShiftRightLogical].operands.push(OperandId, "'Shift'"); - InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Base'"); - InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Shift'"); + InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Base'"); + InstructionDesc[OpShiftRightArithmetic].operands.push(OperandId, "'Shift'"); - InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Base'"); - InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Shift'"); + InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Base'"); + InstructionDesc[OpShiftLeftLogical].operands.push(OperandId, "'Shift'"); - InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpLogicalOr].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpLogicalAnd].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpLogicalEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpLogicalNotEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpLogicalNot].operands.push(OperandId, "'Operand'"); + InstructionDesc[OpLogicalNot].operands.push(OperandId, "'Operand'"); - InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpBitwiseOr].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpBitwiseXor].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpBitwiseAnd].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'"); - InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'"); - InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'"); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Insert'"); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Offset'"); + InstructionDesc[OpBitFieldInsert].operands.push(OperandId, "'Count'"); - InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'"); - InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'"); + InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Offset'"); + InstructionDesc[OpBitFieldSExtract].operands.push(OperandId, "'Count'"); - InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'"); - InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'"); - InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'"); + InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Offset'"); + InstructionDesc[OpBitFieldUExtract].operands.push(OperandId, "'Count'"); - InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitReverse].operands.push(OperandId, "'Base'"); - InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'"); + InstructionDesc[OpBitCount].operands.push(OperandId, "'Base'"); - InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'"); - InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'"); - InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'"); + InstructionDesc[OpSelect].operands.push(OperandId, "'Condition'"); + InstructionDesc[OpSelect].operands.push(OperandId, "'Object 1'"); + InstructionDesc[OpSelect].operands.push(OperandId, "'Object 2'"); - InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpIEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFOrdEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFUnordEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpINotEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFOrdNotEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFUnordNotEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpULessThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSLessThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFOrdLessThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFUnordLessThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpUGreaterThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSGreaterThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFOrdGreaterThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFUnordGreaterThan].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpULessThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSLessThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFOrdLessThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFUnordLessThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpUGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpSGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFOrdGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); - InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); + InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 1'"); + InstructionDesc[OpFUnordGreaterThanEqual].operands.push(OperandId, "'Operand 2'"); - InstructionDesc[OpDPdx].operands.push(OperandId, "'P'"); + InstructionDesc[OpDPdx].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdy].operands.push(OperandId, "'P'"); + InstructionDesc[OpDPdy].operands.push(OperandId, "'P'"); - InstructionDesc[OpFwidth].operands.push(OperandId, "'P'"); + InstructionDesc[OpFwidth].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'"); + InstructionDesc[OpDPdxFine].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'"); + InstructionDesc[OpDPdyFine].operands.push(OperandId, "'P'"); - InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'"); + InstructionDesc[OpFwidthFine].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'"); + InstructionDesc[OpDPdxCoarse].operands.push(OperandId, "'P'"); - InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'"); + InstructionDesc[OpDPdyCoarse].operands.push(OperandId, "'P'"); - InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'"); + InstructionDesc[OpFwidthCoarse].operands.push(OperandId, "'P'"); - InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'"); + InstructionDesc[OpEmitStreamVertex].operands.push(OperandId, "'Stream'"); - InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'"); + InstructionDesc[OpEndStreamPrimitive].operands.push(OperandId, "'Stream'"); - InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'"); - InstructionDesc[OpControlBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpControlBarrier].operands.push(OperandScope, "'Memory'"); + InstructionDesc[OpControlBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpMemoryBarrier].operands.push(OperandScope, "'Memory'"); - InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpMemoryBarrier].operands.push(OperandScope, "'Memory'"); + InstructionDesc[OpMemoryBarrier].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Image'"); - InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Sample'"); + InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Image'"); + InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageTexelPointer].operands.push(OperandId, "'Sample'"); - InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicLoad].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicLoad].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicLoad].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicLoad].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicStore].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicStore].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicStore].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicStore].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicExchange].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicExchange].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicExchange].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicExchange].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Equal'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Unequal'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Equal'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandMemorySemantics, "'Unequal'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicCompareExchange].operands.push(OperandId, "'Comparator'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Equal'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Equal'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandMemorySemantics, "'Unequal'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicCompareExchangeWeak].operands.push(OperandId, "'Comparator'"); - InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicIIncrement].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicIIncrement].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicIIncrement].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIDecrement].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicIDecrement].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicIDecrement].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicIDecrement].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicIAdd].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicIAdd].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicIAdd].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicIAdd].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicFAddEXT].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicFAddEXT].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicUMin].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicUMin].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicUMin].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicUMin].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicUMax].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicUMax].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicUMax].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicUMax].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicSMin].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicSMin].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicSMin].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicSMax].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicSMax].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicFMinEXT].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicFMaxEXT].operands.push(OperandId, "'Value'"); - InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'"); - - InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicOr].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'"); - - InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicXor].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'"); - InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'"); - - InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandMemorySemantics, "'Semantics'"); - - InstructionDesc[OpAtomicFlagClear].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpAtomicFlagClear].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpAtomicFlagClear].operands.push(OperandMemorySemantics, "'Semantics'"); - - InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'"); - InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Continue Target'"); - InstructionDesc[OpLoopMerge].operands.push(OperandLoop, ""); - InstructionDesc[OpLoopMerge].operands.push(OperandOptionalLiteral, ""); - - InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Merge Block'"); - InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, ""); - - InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'"); - - InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'"); - InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'"); - InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'"); - InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'"); - - InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'"); - InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'"); - InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'"); - - - InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'"); - - InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'"); - - InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'"); - - InstructionDesc[OpGroupAsyncCopy].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Destination'"); - InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Source'"); - InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Num Elements'"); - InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Stride'"); - InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Event'"); - - InstructionDesc[OpGroupWaitEvents].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Num Events'"); - InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Events List'"); - - InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'"); - - InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'"); - - InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'"); - InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'"); - - InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'"); - - InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'"); - - InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'"); - - InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupSMin].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupFMin].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupUMax].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupSMax].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupFMax].operands.push(OperandId, "X"); - - InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'"); - - InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'"); - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Size'"); - InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Alignment'"); - - InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'"); - InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'"); - InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'"); - - InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'"); - InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'"); - InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'"); - - InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'"); - InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'"); - - InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'"); - - InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'"); - - InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'"); - - InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'"); - InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'"); - InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'"); - InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'"); - - InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'"); - InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'"); - InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'"); - InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'"); - - InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'"); - InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'"); - InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'"); - InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'"); - InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'"); - - InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'"); - InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'"); - InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'"); - InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'"); - InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'"); - - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'"); - InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'"); - - InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'"); - InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'"); - InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'"); - InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'"); - - InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'"); - - InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID"); - - InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit"); - - InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'"); - - InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask"); - - InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset"); - - InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset"); - - InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true); + InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicAnd].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicAnd].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicAnd].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicOr].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicOr].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicOr].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicXor].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicXor].operands.push(OperandMemorySemantics, "'Semantics'"); + InstructionDesc[OpAtomicXor].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFlagTestAndSet].operands.push(OperandMemorySemantics, "'Semantics'"); + + InstructionDesc[OpAtomicFlagClear].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpAtomicFlagClear].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpAtomicFlagClear].operands.push(OperandMemorySemantics, "'Semantics'"); + + InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Merge Block'"); + InstructionDesc[OpLoopMerge].operands.push(OperandId, "'Continue Target'"); + InstructionDesc[OpLoopMerge].operands.push(OperandLoop, ""); + InstructionDesc[OpLoopMerge].operands.push(OperandOptionalLiteral, ""); + + InstructionDesc[OpSelectionMerge].operands.push(OperandId, "'Merge Block'"); + InstructionDesc[OpSelectionMerge].operands.push(OperandSelect, ""); + + InstructionDesc[OpBranch].operands.push(OperandId, "'Target Label'"); + + InstructionDesc[OpBranchConditional].operands.push(OperandId, "'Condition'"); + InstructionDesc[OpBranchConditional].operands.push(OperandId, "'True Label'"); + InstructionDesc[OpBranchConditional].operands.push(OperandId, "'False Label'"); + InstructionDesc[OpBranchConditional].operands.push(OperandVariableLiterals, "'Branch weights'"); + + InstructionDesc[OpSwitch].operands.push(OperandId, "'Selector'"); + InstructionDesc[OpSwitch].operands.push(OperandId, "'Default'"); + InstructionDesc[OpSwitch].operands.push(OperandVariableLiteralId, "'Target'"); + + + InstructionDesc[OpReturnValue].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpLifetimeStart].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpLifetimeStart].operands.push(OperandLiteralNumber, "'Size'"); + + InstructionDesc[OpLifetimeStop].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpLifetimeStop].operands.push(OperandLiteralNumber, "'Size'"); + + InstructionDesc[OpGroupAsyncCopy].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Destination'"); + InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Source'"); + InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Num Elements'"); + InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Stride'"); + InstructionDesc[OpGroupAsyncCopy].operands.push(OperandId, "'Event'"); + + InstructionDesc[OpGroupWaitEvents].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Num Events'"); + InstructionDesc[OpGroupWaitEvents].operands.push(OperandId, "'Events List'"); + + InstructionDesc[OpGroupAll].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupAll].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpGroupAny].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupAny].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpGroupBroadcast].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'Value'"); + InstructionDesc[OpGroupBroadcast].operands.push(OperandId, "'LocalId'"); + + InstructionDesc[OpGroupIAdd].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupIAdd].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupIAdd].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupFAdd].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFAdd].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFAdd].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupUMin].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupUMin].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupUMin].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupSMin].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupSMin].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupSMin].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupFMin].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFMin].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFMin].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupUMax].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupUMax].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupUMax].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupSMax].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupSMax].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupSMax].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupFMax].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFMax].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFMax].operands.push(OperandId, "X"); + + InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReadPipe].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpReadPipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpWritePipe].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpWritePipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Index'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpReservedReadPipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Index'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpReservedWritePipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); + InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); + InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpCommitReadPipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpCommitWritePipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpIsValidReserveId].operands.push(OperandId, "'Reserve Id'"); + + InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpGetNumPipePackets].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpGetMaxPipePackets].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Num Packets'"); + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpGroupReserveReadPipePackets].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Num Packets'"); + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpGroupReserveWritePipePackets].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpGroupCommitReadPipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Pipe'"); + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Reserve Id'"); + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Size'"); + InstructionDesc[OpGroupCommitWritePipe].operands.push(OperandId, "'Packet Alignment'"); + + InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkSize'"); + InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'LocalWorkSize'"); + InstructionDesc[OpBuildNDRange].operands.push(OperandId, "'GlobalWorkOffset'"); + + InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Event'"); + InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Profiling Info'"); + InstructionDesc[OpCaptureEventProfilingInfo].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Event'"); + InstructionDesc[OpSetUserEventStatus].operands.push(OperandId, "'Status'"); + + InstructionDesc[OpIsValidEvent].operands.push(OperandId, "'Event'"); + + InstructionDesc[OpRetainEvent].operands.push(OperandId, "'Event'"); + + InstructionDesc[OpReleaseEvent].operands.push(OperandId, "'Event'"); + + InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelWorkGroupSize].operands.push(OperandId, "'Param Align'"); + + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelPreferredWorkGroupSizeMultiple].operands.push(OperandId, "'Param Align'"); + + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'ND Range'"); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelNDrangeSubGroupCount].operands.push(OperandId, "'Param Align'"); + + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'ND Range'"); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param'"); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpGetKernelNDrangeMaxSubGroupSize].operands.push(OperandId, "'Param Align'"); + + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Queue'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Flags'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'ND Range'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Num Events'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Wait Events'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Ret Event'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Invoke'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Size'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandId, "'Param Align'"); + InstructionDesc[OpEnqueueKernel].operands.push(OperandVariableIds, "'Local Size'"); + + InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Queue'"); + InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Num Events'"); + InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Wait Events'"); + InstructionDesc[OpEnqueueMarker].operands.push(OperandId, "'Ret Event'"); + + InstructionDesc[OpGroupNonUniformElect].operands.push(OperandScope, "'Execution'"); + + InstructionDesc[OpGroupNonUniformAll].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformAll].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformAny].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformAny].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformAllEqual].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformBroadcast].operands.push(OperandId, "ID"); + + InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBroadcastFirst].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBallot].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformInverseBallot].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformBallotBitExtract].operands.push(OperandId, "Bit"); + + InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformBallotBitCount].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBallotFindLSB].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBallotFindMSB].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformShuffle].operands.push(OperandId, "'Id'"); + + InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformShuffleXor].operands.push(OperandId, "Mask"); + + InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformShuffleUp].operands.push(OperandId, "Offset"); + + InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformShuffleDown].operands.push(OperandId, "Offset"); + + InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformIAdd].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformFAdd].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformIMul].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformFMul].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformSMin].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformUMin].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformFMin].operands.push(OperandId, "'ClusterSize'", true); - InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true); + InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformSMax].operands.push(OperandId, "'ClusterSize'", true); - InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true); + InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformUMax].operands.push(OperandId, "'ClusterSize'", true); - InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true); + InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformFMax].operands.push(OperandId, "'ClusterSize'", true); - InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true); + InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformBitwiseAnd].operands.push(OperandId, "'ClusterSize'", true); - InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true); - - InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'"); - - InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X"); - InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'"); - - InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); - - InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'"); - - InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandId, "'Predicate'"); - - InstructionDesc[OpSubgroupAllKHR].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpSubgroupAllKHR].operands.push(OperandId, "'Predicate'"); - - InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'"); - - InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'"); - InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'"); - - InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'"); - - InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'"); - - InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'"); - - InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'"); - - InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X"); - - InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); - InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); - InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X"); - - InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'"); - InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'"); - - InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'"); - InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'"); - - InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X"); - - InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); - - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'"); - InstructionDesc[OpTraceNV].setResultAndType(false, false); - - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'"); - InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'"); - InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false); - - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Stride'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Miss Index'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Origin'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Direction'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Payload'"); - InstructionDesc[OpTraceRayKHR].setResultAndType(false, false); - - InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'"); - InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'"); - - InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false); - - InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false); - - InstructionDesc[OpTerminateRayNV].setResultAndType(false, false); - - InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); - - InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index"); - InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID"); - InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false); - - InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index"); - InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData"); - InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false); - - InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value"); - InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true); - - // Ray Query - InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); - InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false); - - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'"); - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayFlags'"); - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'CullMask'"); - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmin'"); - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmax'"); - InstructionDesc[OpRayQueryInitializeKHR].setResultAndType(false, false); - - InstructionDesc[OpRayQueryTerminateKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryTerminateKHR].setResultAndType(false, false); - - InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'THit'"); - InstructionDesc[OpRayQueryGenerateIntersectionKHR].setResultAndType(false, false); - - InstructionDesc[OpRayQueryConfirmIntersectionKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryConfirmIntersectionKHR].setResultAndType(false, false); - - InstructionDesc[OpRayQueryProceedKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryProceedKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionTypeKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetRayTMinKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetRayTMinKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetRayFlagsKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetRayFlagsKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionTKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].setResultAndType(true, true); - - InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].setResultAndType(true, true); + InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformBitwiseOr].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformBitwiseXor].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformLogicalAnd].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformLogicalOr].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformLogicalXor].operands.push(OperandId, "'ClusterSize'", true); + + InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformQuadBroadcast].operands.push(OperandId, "'Id'"); + + InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformQuadSwap].operands.push(OperandId, "'Direction'"); + + InstructionDesc[OpSubgroupBallotKHR].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpSubgroupFirstInvocationKHR].operands.push(OperandId, "'Value'"); + + InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpSubgroupAnyKHR].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpSubgroupAllKHR].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpSubgroupAllKHR].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'"); + + InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'"); + InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'"); + + InstructionDesc[OpModuleProcessed].operands.push(OperandLiteralString, "'process'"); + + InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupIAddNonUniformAMD].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFAddNonUniformAMD].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupUMinNonUniformAMD].operands.push(OperandId, "'X'"); + + InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupSMinNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFMinNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupUMaxNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupSMaxNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandGroupOperation, "'Operation'"); + InstructionDesc[OpGroupFMaxNonUniformAMD].operands.push(OperandId, "X"); + + InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Image'"); + InstructionDesc[OpFragmentMaskFetchAMD].operands.push(OperandId, "'Coordinate'"); + + InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Image'"); + InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpFragmentFetchAMD].operands.push(OperandId, "'Fragment Index'"); + + InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X"); + + InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); + + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Flags'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Cull Mask'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Origin'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Ray Direction'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpTraceNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpTraceNV].setResultAndType(false, false); + + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Flags'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Cull Mask'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Origin'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Ray Direction'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Time'"); + InstructionDesc[OpTraceRayMotionNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpTraceRayMotionNV].setResultAndType(false, false); + + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Flags'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Cull Mask'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Origin'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Ray Direction'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpTraceRayKHR].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpTraceRayKHR].setResultAndType(false, false); + + InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Parameter'"); + InstructionDesc[OpReportIntersectionKHR].operands.push(OperandId, "'Hit Kind'"); + + InstructionDesc[OpIgnoreIntersectionNV].setResultAndType(false, false); + + InstructionDesc[OpIgnoreIntersectionKHR].setResultAndType(false, false); + + InstructionDesc[OpTerminateRayNV].setResultAndType(false, false); + + InstructionDesc[OpTerminateRayKHR].setResultAndType(false, false); + + InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "SBT Record Index"); + InstructionDesc[OpExecuteCallableNV].operands.push(OperandId, "CallableData ID"); + InstructionDesc[OpExecuteCallableNV].setResultAndType(false, false); + + InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "SBT Record Index"); + InstructionDesc[OpExecuteCallableKHR].operands.push(OperandId, "CallableData"); + InstructionDesc[OpExecuteCallableKHR].setResultAndType(false, false); + + InstructionDesc[OpConvertUToAccelerationStructureKHR].operands.push(OperandId, "Value"); + InstructionDesc[OpConvertUToAccelerationStructureKHR].setResultAndType(true, true); + + // Ray Query + InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); + InstructionDesc[OpTypeRayQueryKHR].setResultAndType(true, false); + + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'AccelerationS'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'CullMask'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmin'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpRayQueryInitializeKHR].operands.push(OperandId, "'Tmax'"); + InstructionDesc[OpRayQueryInitializeKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryTerminateKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryTerminateKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGenerateIntersectionKHR].operands.push(OperandId, "'THit'"); + InstructionDesc[OpRayQueryGenerateIntersectionKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryConfirmIntersectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryConfirmIntersectionKHR].setResultAndType(false, false); + + InstructionDesc[OpRayQueryProceedKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryProceedKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionTypeKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionTypeKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetRayTMinKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetRayTMinKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetRayFlagsKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetRayFlagsKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionTKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionTKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceCustomIndexKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceIdKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionGeometryIndexKHR].setResultAndType(true, true); + + InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionPrimitiveIndexKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionBarycentricsKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionFrontFaceKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionCandidateAABBOpaqueKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayDirectionKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionObjectRayOriginKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetWorldRayDirectionKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetWorldRayOriginKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetWorldRayOriginKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetWorldRayOriginKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetWorldRayOriginKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionObjectToWorldKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); - InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'RayQuery'"); - InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'RayQuery'"); + InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'Committed'"); + InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); - InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'"); - InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'"); - InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'"); - InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coarse'"); - InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandImageOperands, "", true); - InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandVariableIds, "", true); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Granularity'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coarse'"); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandVariableIds, "", true); - InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); - InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); + InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Index Offset'"); + InstructionDesc[OpWritePackedPrimitiveIndices4x8NV].operands.push(OperandId, "'Packed Indices'"); - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'"); - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'"); - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'"); - InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'"); - InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountX'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountY'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'groupCountZ'"); + InstructionDesc[OpEmitMeshTasksEXT].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpEmitMeshTasksEXT].setResultAndType(false, false); - InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'"); - InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'"); - InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false); + InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'vertexCount'"); + InstructionDesc[OpSetMeshOutputsEXT].operands.push(OperandId, "'primitiveCount'"); + InstructionDesc[OpSetMeshOutputsEXT].setResultAndType(false, false); - InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); - InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); - InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'"); - InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Columns'"); + InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Component Type'"); + InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Scope'"); + InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Rows'"); + InstructionDesc[OpTypeCooperativeMatrixNV].operands.push(OperandId, "'Columns'"); - InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Stride'"); - InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Column Major'"); - InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandMemoryAccess, "'Memory Access'"); - InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandLiteralNumber, "", true); - InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "", true); + InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Stride'"); + InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "'Column Major'"); + InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandMemoryAccess, "'Memory Access'"); + InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandLiteralNumber, "", true); + InstructionDesc[OpCooperativeMatrixLoadNV].operands.push(OperandId, "", true); - InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Pointer'"); - InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Object'"); - InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Stride'"); - InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Column Major'"); - InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandMemoryAccess, "'Memory Access'"); - InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandLiteralNumber, "", true); - InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "", true); + InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Object'"); + InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Stride'"); + InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "'Column Major'"); + InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandMemoryAccess, "'Memory Access'"); + InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandLiteralNumber, "", true); + InstructionDesc[OpCooperativeMatrixStoreNV].operands.push(OperandId, "", true); - InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'A'"); - InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'B'"); - InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'"); + InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'A'"); + InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'B'"); + InstructionDesc[OpCooperativeMatrixMulAddNV].operands.push(OperandId, "'C'"); - InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'"); + InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'"); - InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false); + InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false); - InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'"); + InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'"); - InstructionDesc[OpTypeHitObjectNV].setResultAndType(true, false); + InstructionDesc[OpTypeHitObjectNV].setResultAndType(true, false); - InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].setResultAndType(true, true); - - InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Hint'"); - InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Bits'"); - InstructionDesc[OpReorderThreadWithHintNV].setResultAndType(false, false); - - InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Hint'"); - InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Bits'"); - InstructionDesc[OpReorderThreadWithHitObjectNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectGetCurrentTimeNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetCurrentTimeNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetHitKindNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetHitKindNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetPrimitiveIndexNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetPrimitiveIndexNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetGeometryIndexNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetGeometryIndexNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetInstanceIdNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetInstanceIdNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetObjectRayDirectionNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetObjectRayDirectionNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetObjectRayOriginNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetObjectRayOriginNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetWorldRayDirectionNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetWorldRayDirectionNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetWorldRayOriginNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetWorldRayOriginNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetWorldToObjectNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetWorldToObjectNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetObjectToWorldNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetObjectToWorldNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetRayTMaxNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetRayTMaxNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetRayTMinNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetRayTMinNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectIsEmptyNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectIsEmptyNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectIsHitNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectIsHitNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectIsMissNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectIsMissNV].setResultAndType(true, true); - - InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObjectAttribute'"); - InstructionDesc[OpHitObjectGetAttributesNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'Payload'"); - InstructionDesc[OpHitObjectExecuteShaderNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'InstanceId'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'PrimitiveId'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'GeometryIndex'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitKind'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Offset'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Stride'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject Attribute'"); - InstructionDesc[OpHitObjectRecordHitNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'InstanceId'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'PrimitiveId'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'GeometryIndex'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitKind'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Offset'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Stride'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Current Time'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject Attribute'"); - InstructionDesc[OpHitObjectRecordHitMotionNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'InstanceId'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'PrimitiveId'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'GeometryIndex'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitKind'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'SBT Record Index'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject Attribute'"); - InstructionDesc[OpHitObjectRecordHitWithIndexNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'InstanceId'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'PrimitiveId'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'GeometryIndex'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitKind'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'SBT Record Index'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Current Time'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject Attribute'"); - InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'SBT Index'"); - InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectRecordMissNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'SBT Index'"); - InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Current Time'"); - InstructionDesc[OpHitObjectRecordMissMotionNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectRecordEmptyNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectRecordEmptyNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'RayFlags'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Cullmask'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Offset'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Stride'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Miss Index'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Payload'"); - InstructionDesc[OpHitObjectTraceRayNV].setResultAndType(false, false); - - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'HitObject'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'RayFlags'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Cullmask'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Origin'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMin'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Direction'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMax'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Time'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'"); - InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false); - - InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Attachment'"); - InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); - InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); - InstructionDesc[OpDepthAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); + InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetShaderRecordBufferHandleNV].setResultAndType(true, true); + + InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Hint'"); + InstructionDesc[OpReorderThreadWithHintNV].operands.push(OperandId, "'Bits'"); + InstructionDesc[OpReorderThreadWithHintNV].setResultAndType(false, false); + + InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Hint'"); + InstructionDesc[OpReorderThreadWithHitObjectNV].operands.push(OperandId, "'Bits'"); + InstructionDesc[OpReorderThreadWithHitObjectNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectGetCurrentTimeNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetCurrentTimeNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetHitKindNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetHitKindNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetPrimitiveIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetPrimitiveIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetGeometryIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetGeometryIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetInstanceIdNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetInstanceIdNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetInstanceCustomIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetObjectRayDirectionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetObjectRayDirectionNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetObjectRayOriginNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetObjectRayOriginNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetWorldRayDirectionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetWorldRayDirectionNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetWorldRayOriginNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetWorldRayOriginNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetWorldToObjectNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetWorldToObjectNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetObjectToWorldNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetObjectToWorldNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetRayTMaxNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetRayTMaxNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetRayTMinNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetRayTMinNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetShaderBindingTableRecordIndexNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectIsEmptyNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectIsEmptyNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectIsHitNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectIsHitNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectIsMissNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectIsMissNV].setResultAndType(true, true); + + InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectGetAttributesNV].operands.push(OperandId, "'HitObjectAttribute'"); + InstructionDesc[OpHitObjectGetAttributesNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectExecuteShaderNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpHitObjectExecuteShaderNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'Current Time'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitMotionNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'SBT Record Index'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitWithIndexNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'InstanceId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'PrimitiveId'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'GeometryIndex'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitKind'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'SBT Record Index'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'Current Time'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].operands.push(OperandId, "'HitObject Attribute'"); + InstructionDesc[OpHitObjectRecordHitWithIndexMotionNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'SBT Index'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordMissNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordMissNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'SBT Index'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].operands.push(OperandId, "'Current Time'"); + InstructionDesc[OpHitObjectRecordMissMotionNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectRecordEmptyNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectRecordEmptyNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectTraceRayNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpHitObjectTraceRayNV].setResultAndType(false, false); + + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'HitObject'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'RayFlags'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Cullmask'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Offset'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'SBT Record Stride'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Miss Index'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Origin'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMin'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Direction'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'TMax'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Time'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'"); + InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false); + + InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Attachment'"); + InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); + InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); + InstructionDesc[OpDepthAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); + }); } }; // end spv namespace From 8a6a311d22cda14783f0830c270fc01b51a3cbb0 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 14 Jul 2023 10:29:25 -0600 Subject: [PATCH 224/594] build: Remove bazel build support --- BUILD.bazel | 311 ------------------ kokoro/linux-clang-release-bazel/build.sh | 60 ---- .../linux-clang-release-bazel/continuous.cfg | 35 -- .../linux-clang-release-bazel/presubmit.cfg | 35 -- kokoro/macos-clang-release-bazel/build.sh | 60 ---- .../macos-clang-release-bazel/continuous.cfg | 35 -- .../macos-clang-release-bazel/presubmit.cfg | 35 -- .../windows-msvc-2019-release-bazel/build.bat | 75 ----- .../continuous.cfg | 35 -- .../presubmit.cfg | 35 -- 10 files changed, 716 deletions(-) delete mode 100644 BUILD.bazel delete mode 100644 kokoro/linux-clang-release-bazel/build.sh delete mode 100644 kokoro/linux-clang-release-bazel/continuous.cfg delete mode 100644 kokoro/linux-clang-release-bazel/presubmit.cfg delete mode 100644 kokoro/macos-clang-release-bazel/build.sh delete mode 100644 kokoro/macos-clang-release-bazel/continuous.cfg delete mode 100644 kokoro/macos-clang-release-bazel/presubmit.cfg delete mode 100644 kokoro/windows-msvc-2019-release-bazel/build.bat delete mode 100644 kokoro/windows-msvc-2019-release-bazel/continuous.cfg delete mode 100644 kokoro/windows-msvc-2019-release-bazel/presubmit.cfg diff --git a/BUILD.bazel b/BUILD.bazel deleted file mode 100644 index 99095c0576..0000000000 --- a/BUILD.bazel +++ /dev/null @@ -1,311 +0,0 @@ -# Copyright (C) 2020-2023 The Khronos Group Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of The Khronos Group Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -package( - default_visibility = ["//visibility:public"], -) - -# Description: -# -# Khronos reference front-end for GLSL and ESSL, and sample SPIR-V generator. - -licenses(["notice"]) - -exports_files(["LICENSE"]) - -# Build information generation script -py_binary( - name = "build_info", - srcs = ["build_info.py"], -) - -py_binary( - name = "gen_extension_headers", - srcs = ["gen_extension_headers.py"], -) - -genrule( - name = "gen_build_info_h", - srcs = ["CHANGES.md", "build_info.h.tmpl"], - outs = ["glslang/build_info.h"], - cmd_bash = "$(location build_info) $$(dirname $(location CHANGES.md)) -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)", - cmd_bat = "for %F in ($(location CHANGES.md)) do $(location build_info) %~dpF -i $(location build_info.h.tmpl) -o $(location glslang/build_info.h)", - tools = [":build_info"], -) - -genrule( - name = "gen_extension_headers_h", - srcs = ["glslang/ExtensionHeaders", "gen_extension_headers.py"], - outs = ["glslang/glsl_intrinsic_header.h"], - cmd_bash = "$(location gen_extension_headers) -i $(location glslang/ExtensionHeaders) -o $(location glslang/glsl_intrinsic_header.h)", - tools = [":gen_extension_headers"], -) - -COMMON_COPTS = select({ - "@bazel_tools//src/conditions:windows": [""], - "//conditions:default": [ - "-Wall", - "-Wuninitialized", - "-Wunused", - "-Wunused-local-typedefs", - "-Wunused-parameter", - "-Wunused-value", - "-Wunused-variable", - "-Wno-reorder", - "-std=c++17", - "-fvisibility=hidden", - "-fvisibility-inlines-hidden", - "-fno-exceptions", - "-fno-rtti", - ], -}) - -cc_library( - name = "glslang", - srcs = glob( - [ - "glslang/GenericCodeGen/*.cpp", - "glslang/HLSL/*.cpp", - "glslang/MachineIndependent/*.cpp", - "glslang/MachineIndependent/preprocessor/*.cpp", - ], - exclude = [ - "glslang/HLSL/pch.h", - "glslang/MachineIndependent/pch.h", - ], - ) + [ - "OGLCompilersDLL/InitializeDll.cpp", - ] + select({ - "@bazel_tools//src/conditions:windows": - ["glslang/OSDependent/Windows/ossource.cpp"], - "//conditions:default": - ["glslang/OSDependent/Unix/ossource.cpp"], - }), - hdrs = glob([ - "glslang/HLSL/*.h", - "glslang/Include/*.h", - "glslang/MachineIndependent/*.h", - "glslang/MachineIndependent/preprocessor/*.h", - ]) + [ - "OGLCompilersDLL/InitializeDll.h", - "StandAlone/DirStackFileIncluder.h", - "glslang/OSDependent/osinclude.h", - "glslang/Public/ShaderLang.h", - ":gen_build_info_h", - ], - copts = COMMON_COPTS, - defines = [ - "ENABLE_HLSL=0", - "ENABLE_OPT=0", - ], - linkopts = select({ - "@bazel_tools//src/conditions:windows": [""], - "//conditions:default": ["-lm", "-lpthread"], - }), - linkstatic = 1, -) - -genrule( - name = "export_spirv_headers", - srcs = [ - "SPIRV/GLSL.ext.AMD.h", - "SPIRV/GLSL.ext.EXT.h", - "SPIRV/GLSL.ext.KHR.h", - "SPIRV/GLSL.ext.NV.h", - "SPIRV/GLSL.ext.ARM.h", - "SPIRV/GLSL.std.450.h", - "SPIRV/NonSemanticDebugPrintf.h", - "SPIRV/NonSemanticShaderDebugInfo100.h", - "SPIRV/spirv.hpp", - ], - outs = [ - "include/SPIRV/GLSL.ext.AMD.h", - "include/SPIRV/GLSL.ext.EXT.h", - "include/SPIRV/GLSL.ext.KHR.h", - "include/SPIRV/GLSL.ext.NV.h", - "include/SPIRV/GLSL.ext.ARM.h", - "include/SPIRV/GLSL.std.450.h", - "include/SPIRV/NonSemanticDebugPrintf.h", - "include/SPIRV/NonSemanticShaderDebugInfo100.h", - "include/SPIRV/spirv.hpp", - ], - cmd_bash = "mkdir -p $(@D)/include/SPIRV && cp $(SRCS) $(@D)/include/SPIRV/", - cmd_bat = "(if not exist $(@D)\\include\\SPIRV mkdir $(@D)\\include\\SPIRV) && (for %S in ($(SRCS)) do @xcopy /q %S $(@D)\\include\\SPIRV\\ >NUL)", -) - -cc_library( - name = "SPIRV_headers", - hdrs = [":export_spirv_headers"], - copts = COMMON_COPTS, - includes = [ - "include", - "include/SPIRV", - ], - linkstatic = 1, -) - -cc_library( - name = "SPIRV", - srcs = glob( - ["SPIRV/*.cpp"], - exclude = [ - "SPIRV/SpvTools.cpp", - ], - ), - hdrs = [ - "SPIRV/GlslangToSpv.h", - "SPIRV/Logger.h", - "SPIRV/SPVRemapper.h", - "SPIRV/SpvBuilder.h", - "SPIRV/SpvTools.h", - "SPIRV/bitutils.h", - "SPIRV/disassemble.h", - "SPIRV/doc.h", - "SPIRV/hex_float.h", - "SPIRV/spvIR.h", - ], - copts = COMMON_COPTS, - includes = ["SPIRV"], - linkopts = select({ - "@bazel_tools//src/conditions:windows": [""], - "//conditions:default": ["-lm"], - }), - linkstatic = 1, - deps = [ - ":SPIRV_headers", - ":glslang", - ], -) - -cc_library( - name = "glslang-default-resource-limits", - srcs = ["glslang/ResourceLimits/ResourceLimits.cpp"], - hdrs = ["glslang/Public/ResourceLimits.h"], - copts = COMMON_COPTS, - linkstatic = 1, - deps = [":glslang"], -) - -cc_binary( - name = "glslangValidator", - srcs = [ - "StandAlone/StandAlone.cpp", - "StandAlone/Worklist.h", - ":glslang/glsl_intrinsic_header.h" - ], - copts = COMMON_COPTS, - deps = [ - ":SPIRV", - ":glslang", - ":glslang-default-resource-limits", - ], -) - -cc_binary( - name = "spirv-remap", - srcs = ["StandAlone/spirv-remap.cpp"], - copts = COMMON_COPTS, - deps = [ - ":SPIRV", - ":glslang", - ":glslang-default-resource-limits", - ], -) - -filegroup( - name = "test_files", - srcs = glob( - ["Test/**"], - exclude = [ - "Test/bump", - "Test/glslangValidator", - "Test/runtests", - ], - ), -) - -cc_library( - name = "glslang_test_lib", - testonly = 1, - srcs = [ - "gtests/HexFloat.cpp", - "gtests/Initializer.h", - "gtests/Settings.cpp", - "gtests/Settings.h", - "gtests/TestFixture.cpp", - "gtests/TestFixture.h", - "gtests/main.cpp", - ], - copts = COMMON_COPTS, - data = [":test_files"], - defines = select({ - # Unfortunately we can't use $(location) in cc_library at the moment. - # See https://github.com/bazelbuild/bazel/issues/1023 - # So we'll specify the path manually. - "@bazel_tools//src/conditions:windows": - ["GLSLANG_TEST_DIRECTORY='\"../../../../../Test\"'"], - "//conditions:default": - ["GLSLANG_TEST_DIRECTORY='\"Test\"'"], - }), - linkstatic = 1, - deps = [ - ":SPIRV", - ":glslang", - ":glslang-default-resource-limits", - "@com_google_googletest//:gtest", - ], -) - -GLSLANG_TESTS = glob( - ["gtests/*.FromFile.cpp"], - # Since we are not building the SPIRV-Tools dependency, the following tests - # cannot be performed. - exclude = [ - "gtests/Hlsl.FromFile.cpp", - "gtests/Spv.FromFile.cpp", - ], -) - -[cc_test( - name = test_file.replace("gtests/", "").replace(".FromFile.cpp", "") + "_test", - srcs = [test_file], - copts = COMMON_COPTS, - data = [ - ":test_files", - ], - deps = [ - ":SPIRV", - ":glslang", - ":glslang_test_lib", - ], -) for test_file in GLSLANG_TESTS] diff --git a/kokoro/linux-clang-release-bazel/build.sh b/kokoro/linux-clang-release-bazel/build.sh deleted file mode 100644 index 190e3d7024..0000000000 --- a/kokoro/linux-clang-release-bazel/build.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Linux Build Script. - -# Fail on any error. -set -e -# Display commands being run. -set -x - -CC=clang -CXX=clang++ -SRC=$PWD/github/glslang -cd $SRC - -# Bazel limitation: No 'External' directory is allowed!! -mv External third_party - -gsutil cp gs://bazel/0.29.1/release/bazel-0.29.1-linux-x86_64 . -chmod +x bazel-0.29.1-linux-x86_64 - -echo $(date): Build everything... -./bazel-0.29.1-linux-x86_64 build :all -echo $(date): Build completed. - -echo $(date): Starting bazel test... -./bazel-0.29.1-linux-x86_64 test :all --test_output=all -echo $(date): Bazel test completed. diff --git a/kokoro/linux-clang-release-bazel/continuous.cfg b/kokoro/linux-clang-release-bazel/continuous.cfg deleted file mode 100644 index 767556d0b4..0000000000 --- a/kokoro/linux-clang-release-bazel/continuous.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Continuous build configuration. -build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff --git a/kokoro/linux-clang-release-bazel/presubmit.cfg b/kokoro/linux-clang-release-bazel/presubmit.cfg deleted file mode 100644 index 669491f829..0000000000 --- a/kokoro/linux-clang-release-bazel/presubmit.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Presubmit build configuration. -build_file: "glslang/kokoro/linux-clang-release-bazel/build.sh" diff --git a/kokoro/macos-clang-release-bazel/build.sh b/kokoro/macos-clang-release-bazel/build.sh deleted file mode 100644 index 8f1b2516b2..0000000000 --- a/kokoro/macos-clang-release-bazel/build.sh +++ /dev/null @@ -1,60 +0,0 @@ -#!/bin/bash - -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# macOS Build Script. - -# Fail on any error. -set -e -# Display commands being run. -set -x - -CC=clang -CXX=clang++ -SRC=$PWD/github/glslang -cd $SRC - -mv External third_party - -# Get bazel 0.29.1. -gsutil cp gs://bazel/0.29.1/release/bazel-0.29.1-darwin-x86_64 . -chmod +x bazel-0.29.1-darwin-x86_64 - -echo $(date): Build everything... -./bazel-0.29.1-darwin-x86_64 build :all -echo $(date): Build completed. - -echo $(date): Starting bazel test... -./bazel-0.29.1-darwin-x86_64 test :all --test_output=all -echo $(date): Bazel test completed. diff --git a/kokoro/macos-clang-release-bazel/continuous.cfg b/kokoro/macos-clang-release-bazel/continuous.cfg deleted file mode 100644 index f1980790e2..0000000000 --- a/kokoro/macos-clang-release-bazel/continuous.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Continuous build configuration. -build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff --git a/kokoro/macos-clang-release-bazel/presubmit.cfg b/kokoro/macos-clang-release-bazel/presubmit.cfg deleted file mode 100644 index daa30be5cb..0000000000 --- a/kokoro/macos-clang-release-bazel/presubmit.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2019 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Presubmit build configuration. -build_file: "glslang/kokoro/macos-clang-release-bazel/build.sh" diff --git a/kokoro/windows-msvc-2019-release-bazel/build.bat b/kokoro/windows-msvc-2019-release-bazel/build.bat deleted file mode 100644 index 8fb0302a49..0000000000 --- a/kokoro/windows-msvc-2019-release-bazel/build.bat +++ /dev/null @@ -1,75 +0,0 @@ -:: Copyright (C) 2023 Google, Inc. -:: -:: All rights reserved. -:: -:: Redistribution and use in source and binary forms, with or without -:: modification, are permitted provided that the following conditions -:: are met: -:: -:: Redistributions of source code must retain the above copyright -:: notice, this list of conditions and the following disclaimer. -:: -:: Redistributions in binary form must reproduce the above -:: copyright notice, this list of conditions and the following -:: disclaimer in the documentation and/or other materials provided -:: with the distribution. -:: -:: Neither the name of Google Inc. nor the names of its -:: contributors may be used to endorse or promote products derived -:: from this software without specific prior written permission. -:: -:: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -:: "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -:: LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -:: FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -:: COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -:: INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -:: BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -:: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -:: CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -:: LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -:: ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -:: POSSIBILITY OF SUCH DAMAGE. -:: Copyright (c) 2023 Google LLC. -:: -:: Windows Build Script. - -@echo on - -set SRC=%cd%\github\glslang - -:: Force usage of python 3.6 -set PATH=C:\python36;%PATH% -cd %SRC% - -mv External third_party - -:: REM Install Bazel. -wget -q https://github.com/bazelbuild/bazel/releases/download/5.0.0/bazel-5.0.0-windows-x86_64.zip -unzip -q bazel-5.0.0-windows-x86_64.zip - -:: Set up MSVC -call "C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC\vcvarsall.bat" x64 -set BAZEL_VS=C:\Program Files (x86)\Microsoft Visual Studio 16.0 -set BAZEL_VC=C:\Program Files (x86)\Microsoft Visual Studio 16.0\VC -set BAZEL_SH=c:\tools\msys64\usr\bin\bash.exe -set BAZEL_PYTHON=c:\tools\python2\python.exe - -:: ######################################### -:: Start building. -:: ######################################### -echo "Build everything... %DATE% %TIME%" -bazel.exe build :all -if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% -echo "Build Completed %DATE% %TIME%" - -:: ############## -:: Run the tests -:: ############## -echo "Running Tests... %DATE% %TIME%" -bazel.exe test :all --test_output=all -if %ERRORLEVEL% NEQ 0 exit /b %ERRORLEVEL% -echo "Tests Completed %DATE% %TIME%" - -exit /b 0 - diff --git a/kokoro/windows-msvc-2019-release-bazel/continuous.cfg b/kokoro/windows-msvc-2019-release-bazel/continuous.cfg deleted file mode 100644 index 85c7abdae6..0000000000 --- a/kokoro/windows-msvc-2019-release-bazel/continuous.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2023 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Continuous build configuration. -build_file: "glslang/kokoro/windows-msvc-2019-release-bazel/build.bat" diff --git a/kokoro/windows-msvc-2019-release-bazel/presubmit.cfg b/kokoro/windows-msvc-2019-release-bazel/presubmit.cfg deleted file mode 100644 index 254ed7d124..0000000000 --- a/kokoro/windows-msvc-2019-release-bazel/presubmit.cfg +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright (C) 2023 Google, Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of Google Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# Presubmit build configuration. -build_file: "glslang/kokoro/windows-msvc-2019-release-bazel/build.bat" From 6defcb24783a500effd52567468434cc993621c1 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Fri, 16 Jun 2023 20:19:35 -0400 Subject: [PATCH 225/594] Rework how auto push_constant upgrading works a bit. Ensure we traverse the entire tree and upgrade all references to the given symbol so it can be upgraded to push_constant. Without this change only one instance was upgraded, and others were left as uniform buffers. --- glslang/MachineIndependent/iomapper.cpp | 33 ++++++++++++++----------- glslang/MachineIndependent/iomapper.h | 2 ++ 2 files changed, 21 insertions(+), 14 deletions(-) diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 0ae281d965..efb26b83db 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -145,6 +145,8 @@ class TVarSetTraverser : public TLiveTraverser base->getWritableType().getQualifier().layoutComponent = at->second.newComponent; if (at->second.newIndex != -1) base->getWritableType().getQualifier().layoutIndex = at->second.newIndex; + if (at->second.upgradedToPushConstant) + base->getWritableType().getQualifier().layoutPushConstant = true; } private: @@ -1670,31 +1672,34 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { } } } - // If it's been upgraded to push_constant, then remove it from the uniformVector + // If it's been upgraded to push_constant, then set the flag so when its traversed + // in the next for loop, all references to this symbol will get their flag changed. // so it doesn't get a set/binding assigned to it. if (upgraded) { - while (1) { - auto at = std::find_if(uniformVector.begin(), uniformVector.end(), - [this](const TVarLivePair& p) { return p.first == autoPushConstantBlockName; }); - if (at != uniformVector.end()) - uniformVector.erase(at); - else - break; - } + std::for_each(uniformVector.begin(), uniformVector.end(), + [this](TVarLivePair& p) { + if (p.first == autoPushConstantBlockName) { + p.second.upgradedToPushConstant = true; + } + }); } } for (size_t stage = 0; stage < EShLangCount; stage++) { if (intermediates[stage] != nullptr) { // traverse each stage, set new location to each input/output and unifom symbol, set new binding to - // ubo, ssbo and opaque symbols + // ubo, ssbo and opaque symbols. Assign push_constant upgrades as well. TVarLiveMap** pUniformVarMap = uniformResolve.uniformVarMap; std::for_each(uniformVector.begin(), uniformVector.end(), [pUniformVarMap, stage](TVarLivePair p) { auto at = pUniformVarMap[stage]->find(p.second.symbol->getAccessName()); if (at != pUniformVarMap[stage]->end() && at->second.id == p.second.id){ - int resolvedBinding = at->second.newBinding; - at->second = p.second; - if (resolvedBinding > 0) - at->second.newBinding = resolvedBinding; + if (p.second.upgradedToPushConstant) { + at->second.upgradedToPushConstant = true; + } else { + int resolvedBinding = at->second.newBinding; + at->second = p.second; + if (resolvedBinding > 0) + at->second.newBinding = resolvedBinding; + } } }); TVarSetTraverser iter_iomap(*intermediates[stage], *inVarMaps[stage], *outVarMaps[stage], diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 0003a74e09..464d73eaca 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -55,6 +55,7 @@ struct TVarEntryInfo { long long id; TIntermSymbol* symbol; bool live; + bool upgradedToPushConstant; int newBinding; int newSet; int newLocation; @@ -63,6 +64,7 @@ struct TVarEntryInfo { EShLanguage stage; void clearNewAssignments() { + upgradedToPushConstant = false; newBinding = -1; newSet = -1; newLocation = -1; From 9e41635d74f48fac0e1706cc4f3266defc76aea0 Mon Sep 17 00:00:00 2001 From: Zeqiang Li Date: Tue, 18 Jul 2023 07:11:32 +0800 Subject: [PATCH 226/594] Add missing initialization members for web (#3246) --- glslang/OSDependent/Web/glslang.js.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/glslang/OSDependent/Web/glslang.js.cpp b/glslang/OSDependent/Web/glslang.js.cpp index f2306a6092..c820da6aa4 100644 --- a/glslang/OSDependent/Web/glslang.js.cpp +++ b/glslang/OSDependent/Web/glslang.js.cpp @@ -141,6 +141,15 @@ const TBuiltInResource DefaultTBuiltInResource = { /* .maxTaskWorkGroupSizeY_NV = */ 1, /* .maxTaskWorkGroupSizeZ_NV = */ 1, /* .maxMeshViewCountNV = */ 4, + /* .maxMeshOutputVerticesEXT = */ 256, + /* .maxMeshOutputPrimitivesEXT = */ 512, + /* .maxMeshWorkGroupSizeX_EXT = */ 32, + /* .maxMeshWorkGroupSizeY_EXT = */ 1, + /* .maxMeshWorkGroupSizeZ_EXT = */ 1, + /* .maxTaskWorkGroupSizeX_EXT = */ 32, + /* .maxTaskWorkGroupSizeY_EXT = */ 1, + /* .maxTaskWorkGroupSizeZ_EXT = */ 1, + /* .maxMeshViewCountEXT = */ 4, /* .maxDualSourceDrawBuffersEXT = */ 1, /* .limits = */ { From d5f3ad6c9a996fcf944a7eac29a818f4583c55b0 Mon Sep 17 00:00:00 2001 From: Dawid-Lorenz-Mobica <135211494+Dawid-Lorenz-Mobica@users.noreply.github.com> Date: Tue, 18 Jul 2023 17:35:36 +0200 Subject: [PATCH 227/594] HLSL: support binary literals Fixes #3089 --- Test/baseResults/hlsl.conditional.frag.out | 369 ++++++++++++----- .../baseResults/hlsl.numericsuffixes.frag.out | 370 +++++++++++------- .../hlsl.numericsuffixes.negative.frag.out | 109 ++++++ Test/baseResults/tokenLength.vert.out | 9 +- Test/hlsl.conditional.frag | 4 + Test/hlsl.numericsuffixes.frag | 11 +- Test/hlsl.numericsuffixes.negative.frag | 15 + Test/tokenLength.vert | 2 + .../preprocessor/PpScanner.cpp | 107 ++++- gtests/Hlsl.FromFile.cpp | 1 + 10 files changed, 745 insertions(+), 252 deletions(-) create mode 100644 Test/baseResults/hlsl.numericsuffixes.negative.frag.out create mode 100644 Test/hlsl.numericsuffixes.negative.frag diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out index e16068174d..47c7877ac0 100644 --- a/Test/baseResults/hlsl.conditional.frag.out +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -216,33 +216,98 @@ gl_FragCoord origin is upper left 0:39 Convert int to float ( temp float) 0:39 'd' ( temp int) 0:39 'input' ( in 4-component vector of float) -0:41 Branch: Return with expression -0:40 add ( temp 4-component vector of float) -0:40 add ( temp 4-component vector of float) -0:40 add ( temp 4-component vector of float) -0:40 add ( temp 4-component vector of float) -0:40 vector-scale ( temp 4-component vector of float) -0:40 Convert int to float ( temp float) -0:40 'e' ( temp int) -0:40 'ret' ( temp 4-component vector of float) -0:40 'f' ( temp 4-component vector of float) -0:40 Function Call: vectorCond( ( temp 4-component vector of float) -0:40 Function Call: scalarCond( ( temp 4-component vector of float) -0:41 Construct vec4 ( temp 4-component vector of float) -0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:40 Sequence +0:40 move second child to first child ( temp uint) +0:40 'g' ( temp uint) +0:40 Test condition and select ( temp uint): no shortcircuit +0:40 Condition +0:40 Compare Greater Than ( temp bool) +0:40 Convert int to float ( temp float) +0:40 'd' ( temp int) +0:40 Constant: +0:40 0.000000 +0:40 true case +0:40 Constant: +0:40 21 (const uint) +0:40 false case +0:40 Constant: +0:40 0 (const uint) +0:41 Sequence +0:41 move second child to first child ( temp uint) +0:41 'h' ( temp uint) +0:41 Test condition and select ( temp uint): no shortcircuit +0:41 Condition +0:41 Compare Greater Than ( temp bool) +0:41 Convert uint to float ( temp float) +0:41 'g' ( temp uint) 0:41 Constant: -0:41 true (const bool) -0:41 false (const bool) -0:41 Constant: -0:41 1.000000 -0:41 2.000000 -0:41 Constant: -0:41 3.000000 -0:41 4.000000 +0:41 0.000000 +0:41 true case 0:41 Constant: -0:41 10.000000 +0:41 63 (const uint) +0:41 false case 0:41 Constant: -0:41 10.000000 +0:41 0 (const uint) +0:42 Sequence +0:42 move second child to first child ( temp uint) +0:42 'i' ( temp uint) +0:42 Test condition and select ( temp uint): no shortcircuit +0:42 Condition +0:42 Compare Greater Than ( temp bool) +0:42 Convert uint to float ( temp float) +0:42 'h' ( temp uint) +0:42 Constant: +0:42 0.000000 +0:42 true case +0:42 Constant: +0:42 5 (const uint) +0:42 false case +0:42 Constant: +0:42 1 (const uint) +0:43 Sequence +0:43 move second child to first child ( temp uint) +0:43 'j' ( temp uint) +0:43 Convert int to uint ( temp uint) +0:43 Test condition and select ( temp int): no shortcircuit +0:43 Condition +0:43 Compare Greater Than ( temp bool) +0:43 Convert uint to float ( temp float) +0:43 'i' ( temp uint) +0:43 Constant: +0:43 0.000000 +0:43 true case +0:43 Constant: +0:43 43981 (const int) +0:43 false case +0:43 Constant: +0:43 48346 (const int) +0:45 Branch: Return with expression +0:44 add ( temp 4-component vector of float) +0:44 add ( temp 4-component vector of float) +0:44 add ( temp 4-component vector of float) +0:44 add ( temp 4-component vector of float) +0:44 vector-scale ( temp 4-component vector of float) +0:44 Convert int to float ( temp float) +0:44 'e' ( temp int) +0:44 'ret' ( temp 4-component vector of float) +0:44 'f' ( temp 4-component vector of float) +0:44 Function Call: vectorCond( ( temp 4-component vector of float) +0:44 Function Call: scalarCond( ( temp 4-component vector of float) +0:45 Construct vec4 ( temp 4-component vector of float) +0:45 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:45 Constant: +0:45 true (const bool) +0:45 false (const bool) +0:45 Constant: +0:45 1.000000 +0:45 2.000000 +0:45 Constant: +0:45 3.000000 +0:45 4.000000 +0:45 Constant: +0:45 10.000000 +0:45 Constant: +0:45 10.000000 0:27 Function Definition: PixelShaderFunction( ( temp void) 0:27 Function Parameters: 0:? Sequence @@ -479,33 +544,98 @@ gl_FragCoord origin is upper left 0:39 Convert int to float ( temp float) 0:39 'd' ( temp int) 0:39 'input' ( in 4-component vector of float) -0:41 Branch: Return with expression -0:40 add ( temp 4-component vector of float) -0:40 add ( temp 4-component vector of float) -0:40 add ( temp 4-component vector of float) -0:40 add ( temp 4-component vector of float) -0:40 vector-scale ( temp 4-component vector of float) -0:40 Convert int to float ( temp float) -0:40 'e' ( temp int) -0:40 'ret' ( temp 4-component vector of float) -0:40 'f' ( temp 4-component vector of float) -0:40 Function Call: vectorCond( ( temp 4-component vector of float) -0:40 Function Call: scalarCond( ( temp 4-component vector of float) -0:41 Construct vec4 ( temp 4-component vector of float) -0:41 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) -0:41 Constant: -0:41 true (const bool) -0:41 false (const bool) -0:41 Constant: -0:41 1.000000 -0:41 2.000000 +0:40 Sequence +0:40 move second child to first child ( temp uint) +0:40 'g' ( temp uint) +0:40 Test condition and select ( temp uint): no shortcircuit +0:40 Condition +0:40 Compare Greater Than ( temp bool) +0:40 Convert int to float ( temp float) +0:40 'd' ( temp int) +0:40 Constant: +0:40 0.000000 +0:40 true case +0:40 Constant: +0:40 21 (const uint) +0:40 false case +0:40 Constant: +0:40 0 (const uint) +0:41 Sequence +0:41 move second child to first child ( temp uint) +0:41 'h' ( temp uint) +0:41 Test condition and select ( temp uint): no shortcircuit +0:41 Condition +0:41 Compare Greater Than ( temp bool) +0:41 Convert uint to float ( temp float) +0:41 'g' ( temp uint) 0:41 Constant: -0:41 3.000000 -0:41 4.000000 +0:41 0.000000 +0:41 true case 0:41 Constant: -0:41 10.000000 +0:41 63 (const uint) +0:41 false case 0:41 Constant: -0:41 10.000000 +0:41 0 (const uint) +0:42 Sequence +0:42 move second child to first child ( temp uint) +0:42 'i' ( temp uint) +0:42 Test condition and select ( temp uint): no shortcircuit +0:42 Condition +0:42 Compare Greater Than ( temp bool) +0:42 Convert uint to float ( temp float) +0:42 'h' ( temp uint) +0:42 Constant: +0:42 0.000000 +0:42 true case +0:42 Constant: +0:42 5 (const uint) +0:42 false case +0:42 Constant: +0:42 1 (const uint) +0:43 Sequence +0:43 move second child to first child ( temp uint) +0:43 'j' ( temp uint) +0:43 Convert int to uint ( temp uint) +0:43 Test condition and select ( temp int): no shortcircuit +0:43 Condition +0:43 Compare Greater Than ( temp bool) +0:43 Convert uint to float ( temp float) +0:43 'i' ( temp uint) +0:43 Constant: +0:43 0.000000 +0:43 true case +0:43 Constant: +0:43 43981 (const int) +0:43 false case +0:43 Constant: +0:43 48346 (const int) +0:45 Branch: Return with expression +0:44 add ( temp 4-component vector of float) +0:44 add ( temp 4-component vector of float) +0:44 add ( temp 4-component vector of float) +0:44 add ( temp 4-component vector of float) +0:44 vector-scale ( temp 4-component vector of float) +0:44 Convert int to float ( temp float) +0:44 'e' ( temp int) +0:44 'ret' ( temp 4-component vector of float) +0:44 'f' ( temp 4-component vector of float) +0:44 Function Call: vectorCond( ( temp 4-component vector of float) +0:44 Function Call: scalarCond( ( temp 4-component vector of float) +0:45 Construct vec4 ( temp 4-component vector of float) +0:45 Function Call: fbSelect(vb2;vf2;vf2; ( temp 2-component vector of float) +0:45 Constant: +0:45 true (const bool) +0:45 false (const bool) +0:45 Constant: +0:45 1.000000 +0:45 2.000000 +0:45 Constant: +0:45 3.000000 +0:45 4.000000 +0:45 Constant: +0:45 10.000000 +0:45 Constant: +0:45 10.000000 0:27 Function Definition: PixelShaderFunction( ( temp void) 0:27 Function Parameters: 0:? Sequence @@ -523,12 +653,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 206 +// Id's are bound by 233 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 199 202 + EntryPoint Fragment 4 "PixelShaderFunction" 226 229 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" @@ -555,13 +685,17 @@ gl_FragCoord origin is upper left Name 117 "ret" Name 137 "e" Name 150 "f" - Name 186 "param" - Name 187 "param" - Name 188 "param" - Name 197 "input" - Name 199 "input" - Name 202 "@entryPointOutput" - Name 203 "param" + Name 169 "g" + Name 175 "h" + Name 181 "i" + Name 187 "j" + Name 213 "param" + Name 214 "param" + Name 215 "param" + Name 224 "input" + Name 226 "input" + Name 229 "@entryPointOutput" + Name 230 "param" MemberDecorate 29($Global) 0 Offset 0 MemberDecorate 29($Global) 1 Offset 16 MemberDecorate 29($Global) 2 Offset 32 @@ -570,8 +704,8 @@ gl_FragCoord origin is upper left Decorate 29($Global) Block Decorate 31 DescriptorSet 0 Decorate 31 Binding 0 - Decorate 199(input) Location 0 - Decorate 202(@entryPointOutput) Location 0 + Decorate 226(input) Location 0 + Decorate 229(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -611,29 +745,35 @@ gl_FragCoord origin is upper left 148: 32(int) Constant 11 151: TypePointer Function 6(float) 154: 139(int) Constant 1 - 178: 13(bool) ConstantTrue - 179: 13(bool) ConstantFalse - 180: 14(bvec2) ConstantComposite 178 179 - 181: 6(float) Constant 1073741824 - 182: 16(fvec2) ConstantComposite 96 181 - 183: 6(float) Constant 1077936128 - 184: 6(float) Constant 1082130432 - 185: 16(fvec2) ConstantComposite 183 184 - 190: 6(float) Constant 1092616192 - 198: TypePointer Input 7(fvec4) - 199(input): 198(ptr) Variable Input - 201: TypePointer Output 7(fvec4) -202(@entryPointOutput): 201(ptr) Variable Output + 168: TypePointer Function 139(int) + 173: 139(int) Constant 21 + 179: 139(int) Constant 63 + 185: 139(int) Constant 5 + 191: 32(int) Constant 43981 + 192: 32(int) Constant 48346 + 205: 13(bool) ConstantTrue + 206: 13(bool) ConstantFalse + 207: 14(bvec2) ConstantComposite 205 206 + 208: 6(float) Constant 1073741824 + 209: 16(fvec2) ConstantComposite 96 208 + 210: 6(float) Constant 1077936128 + 211: 6(float) Constant 1082130432 + 212: 16(fvec2) ConstantComposite 210 211 + 217: 6(float) Constant 1092616192 + 225: TypePointer Input 7(fvec4) + 226(input): 225(ptr) Variable Input + 228: TypePointer Output 7(fvec4) +229(@entryPointOutput): 228(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 197(input): 24(ptr) Variable Function - 203(param): 24(ptr) Variable Function - 200: 7(fvec4) Load 199(input) - Store 197(input) 200 - 204: 7(fvec4) Load 197(input) - Store 203(param) 204 - 205: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 203(param) - Store 202(@entryPointOutput) 205 + 224(input): 24(ptr) Variable Function + 230(param): 24(ptr) Variable Function + 227: 7(fvec4) Load 226(input) + Store 224(input) 227 + 231: 7(fvec4) Load 224(input) + Store 230(param) 231 + 232: 7(fvec4) FunctionCall 27(@PixelShaderFunction(vf4;) 230(param) + Store 229(@entryPointOutput) 232 Return FunctionEnd 9(vectorCond(): 7(fvec4) Function None 8 @@ -720,9 +860,13 @@ gl_FragCoord origin is upper left 117(ret): 24(ptr) Variable Function 137(e): 109(ptr) Variable Function 150(f): 24(ptr) Variable Function - 186(param): 15(ptr) Variable Function - 187(param): 17(ptr) Variable Function - 188(param): 17(ptr) Variable Function + 169(g): 168(ptr) Variable Function + 175(h): 168(ptr) Variable Function + 181(i): 168(ptr) Variable Function + 187(j): 168(ptr) Variable Function + 213(param): 15(ptr) Variable Function + 214(param): 17(ptr) Variable Function + 215(param): 17(ptr) Variable Function Store 110(a) 111 Store 112(b) 113 Store 114(c) 115 @@ -776,23 +920,44 @@ gl_FragCoord origin is upper left 166: 43(bvec4) CompositeConstruct 157 157 157 157 167: 7(fvec4) Select 166 161 165 Store 150(f) 167 - 168: 32(int) Load 137(e) - 169: 6(float) ConvertSToF 168 - 170: 7(fvec4) Load 117(ret) - 171: 7(fvec4) VectorTimesScalar 170 169 - 172: 7(fvec4) Load 150(f) - 173: 7(fvec4) FAdd 171 172 - 174: 7(fvec4) FunctionCall 9(vectorCond() - 175: 7(fvec4) FAdd 173 174 - 176: 7(fvec4) FunctionCall 11(scalarCond() - 177: 7(fvec4) FAdd 175 176 - Store 186(param) 180 - Store 187(param) 182 - Store 188(param) 185 - 189: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 186(param) 187(param) 188(param) - 191: 6(float) CompositeExtract 189 0 - 192: 6(float) CompositeExtract 189 1 - 193: 7(fvec4) CompositeConstruct 191 192 190 190 - 194: 7(fvec4) FAdd 177 193 - ReturnValue 194 + 170: 32(int) Load 116(d) + 171: 6(float) ConvertSToF 170 + 172: 13(bool) FOrdGreaterThan 171 44 + 174: 139(int) Select 172 173 140 + Store 169(g) 174 + 176: 139(int) Load 169(g) + 177: 6(float) ConvertUToF 176 + 178: 13(bool) FOrdGreaterThan 177 44 + 180: 139(int) Select 178 179 140 + Store 175(h) 180 + 182: 139(int) Load 175(h) + 183: 6(float) ConvertUToF 182 + 184: 13(bool) FOrdGreaterThan 183 44 + 186: 139(int) Select 184 185 154 + Store 181(i) 186 + 188: 139(int) Load 181(i) + 189: 6(float) ConvertUToF 188 + 190: 13(bool) FOrdGreaterThan 189 44 + 193: 32(int) Select 190 191 192 + 194: 139(int) Bitcast 193 + Store 187(j) 194 + 195: 32(int) Load 137(e) + 196: 6(float) ConvertSToF 195 + 197: 7(fvec4) Load 117(ret) + 198: 7(fvec4) VectorTimesScalar 197 196 + 199: 7(fvec4) Load 150(f) + 200: 7(fvec4) FAdd 198 199 + 201: 7(fvec4) FunctionCall 9(vectorCond() + 202: 7(fvec4) FAdd 200 201 + 203: 7(fvec4) FunctionCall 11(scalarCond() + 204: 7(fvec4) FAdd 202 203 + Store 213(param) 207 + Store 214(param) 209 + Store 215(param) 212 + 216: 16(fvec2) FunctionCall 22(fbSelect(vb2;vf2;vf2;) 213(param) 214(param) 215(param) + 218: 6(float) CompositeExtract 216 0 + 219: 6(float) CompositeExtract 216 1 + 220: 7(fvec4) CompositeConstruct 218 219 217 217 + 221: 7(fvec4) FAdd 204 220 + ReturnValue 221 FunctionEnd diff --git a/Test/baseResults/hlsl.numericsuffixes.frag.out b/Test/baseResults/hlsl.numericsuffixes.frag.out index 02f7d2a120..05be42305b 100644 --- a/Test/baseResults/hlsl.numericsuffixes.frag.out +++ b/Test/baseResults/hlsl.numericsuffixes.frag.out @@ -2,94 +2,124 @@ hlsl.numericsuffixes.frag Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) -0:5 Function Parameters: +0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:8 Function Parameters: 0:? Sequence -0:7 Sequence -0:7 move second child to first child ( temp float) -0:7 'r00' ( temp float) -0:7 Constant: -0:7 1.000000 -0:8 Sequence -0:8 move second child to first child ( temp uint) -0:8 'r01' ( temp uint) -0:8 Constant: -0:8 1 (const uint) -0:9 Sequence -0:9 move second child to first child ( temp uint) -0:9 'r02' ( temp uint) -0:9 Constant: -0:9 2 (const uint) 0:10 Sequence -0:10 move second child to first child ( temp uint) -0:10 'r03' ( temp uint) +0:10 move second child to first child ( temp float) +0:10 'r00' ( temp float) 0:10 Constant: -0:10 2748 (const uint) +0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp uint) -0:11 'r04' ( temp uint) +0:11 'r01' ( temp uint) 0:11 Constant: -0:11 2748 (const uint) +0:11 1 (const uint) 0:12 Sequence -0:12 move second child to first child ( temp int) -0:12 'r05' ( temp int) +0:12 move second child to first child ( temp uint) +0:12 'r02' ( temp uint) 0:12 Constant: -0:12 5 (const int) +0:12 2 (const uint) 0:13 Sequence -0:13 move second child to first child ( temp int) -0:13 'r06' ( temp int) +0:13 move second child to first child ( temp uint) +0:13 'r03' ( temp uint) 0:13 Constant: -0:13 6 (const int) +0:13 2748 (const uint) 0:14 Sequence -0:14 move second child to first child ( temp int) -0:14 'r07' ( temp int) +0:14 move second child to first child ( temp uint) +0:14 'r04' ( temp uint) 0:14 Constant: -0:14 57 (const int) +0:14 2748 (const uint) 0:15 Sequence -0:15 move second child to first child ( temp uint) -0:15 'r08' ( temp uint) +0:15 move second child to first child ( temp int) +0:15 'r05' ( temp int) 0:15 Constant: -0:15 58 (const uint) +0:15 5 (const int) 0:16 Sequence -0:16 move second child to first child ( temp float) -0:16 'r09' ( temp float) +0:16 move second child to first child ( temp int) +0:16 'r06' ( temp int) 0:16 Constant: -0:16 1.000000 +0:16 6 (const int) 0:17 Sequence -0:17 move second child to first child ( temp float) -0:17 'r10' ( temp float) +0:17 move second child to first child ( temp int) +0:17 'r07' ( temp int) 0:17 Constant: -0:17 1.000000 +0:17 57 (const int) 0:18 Sequence -0:18 move second child to first child ( temp float) -0:18 'r11' ( temp float) +0:18 move second child to first child ( temp uint) +0:18 'r08' ( temp uint) 0:18 Constant: -0:18 1.100000 +0:18 58 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp float) -0:19 'r12' ( temp float) +0:19 'r09' ( temp float) 0:19 Constant: -0:19 1.100000 -0:22 move second child to first child ( temp 4-component vector of float) -0:22 color: direct index for structure ( temp 4-component vector of float) -0:22 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:19 1.000000 +0:20 Sequence +0:20 move second child to first child ( temp float) +0:20 'r10' ( temp float) +0:20 Constant: +0:20 1.000000 +0:21 Sequence +0:21 move second child to first child ( temp float) +0:21 'r11' ( temp float) +0:21 Constant: +0:21 1.100000 +0:22 Sequence +0:22 move second child to first child ( temp float) +0:22 'r12' ( temp float) 0:22 Constant: -0:22 0 (const int) -0:22 Construct vec4 ( temp 4-component vector of float) -0:22 Convert int to float ( temp float) -0:22 'r07' ( temp int) -0:23 Branch: Return with expression -0:23 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:5 Function Definition: main( ( temp void) -0:5 Function Parameters: +0:22 1.100000 +0:23 Sequence +0:23 move second child to first child ( temp uint) +0:23 'r13' ( temp uint) +0:23 Constant: +0:23 1 (const uint) +0:24 Sequence +0:24 move second child to first child ( temp uint) +0:24 'r14' ( temp uint) +0:24 Constant: +0:24 2 (const uint) +0:25 Sequence +0:25 move second child to first child ( temp int) +0:25 'r15' ( temp int) +0:25 Constant: +0:25 3 (const int) +0:26 Sequence +0:26 move second child to first child ( temp int) +0:26 'r16' ( temp int) +0:26 Constant: +0:26 4 (const int) +0:27 Sequence +0:27 move second child to first child ( temp uint) +0:27 'r17' ( temp uint) +0:27 Constant: +0:27 1 (const uint) +0:28 Sequence +0:28 move second child to first child ( temp int) +0:28 'r18' ( temp int) +0:28 Constant: +0:28 3 (const int) +0:31 move second child to first child ( temp 4-component vector of float) +0:31 color: direct index for structure ( temp 4-component vector of float) +0:31 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:31 Constant: +0:31 0 (const int) +0:31 Construct vec4 ( temp 4-component vector of float) +0:31 Convert int to float ( temp float) +0:31 'r07' ( temp int) +0:32 Branch: Return with expression +0:32 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:8 Function Definition: main( ( temp void) +0:8 Function Parameters: 0:? Sequence -0:5 Sequence -0:5 move second child to first child ( temp 4-component vector of float) +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) -0:5 color: direct index for structure ( temp 4-component vector of float) -0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) -0:5 Constant: -0:5 0 (const int) +0:8 color: direct index for structure ( temp 4-component vector of float) +0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:8 Constant: +0:8 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) @@ -100,105 +130,135 @@ Linked fragment stage: Shader version: 500 gl_FragCoord origin is upper left 0:? Sequence -0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) -0:5 Function Parameters: +0:8 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:8 Function Parameters: 0:? Sequence -0:7 Sequence -0:7 move second child to first child ( temp float) -0:7 'r00' ( temp float) -0:7 Constant: -0:7 1.000000 -0:8 Sequence -0:8 move second child to first child ( temp uint) -0:8 'r01' ( temp uint) -0:8 Constant: -0:8 1 (const uint) -0:9 Sequence -0:9 move second child to first child ( temp uint) -0:9 'r02' ( temp uint) -0:9 Constant: -0:9 2 (const uint) 0:10 Sequence -0:10 move second child to first child ( temp uint) -0:10 'r03' ( temp uint) +0:10 move second child to first child ( temp float) +0:10 'r00' ( temp float) 0:10 Constant: -0:10 2748 (const uint) +0:10 1.000000 0:11 Sequence 0:11 move second child to first child ( temp uint) -0:11 'r04' ( temp uint) +0:11 'r01' ( temp uint) 0:11 Constant: -0:11 2748 (const uint) +0:11 1 (const uint) 0:12 Sequence -0:12 move second child to first child ( temp int) -0:12 'r05' ( temp int) +0:12 move second child to first child ( temp uint) +0:12 'r02' ( temp uint) 0:12 Constant: -0:12 5 (const int) +0:12 2 (const uint) 0:13 Sequence -0:13 move second child to first child ( temp int) -0:13 'r06' ( temp int) +0:13 move second child to first child ( temp uint) +0:13 'r03' ( temp uint) 0:13 Constant: -0:13 6 (const int) +0:13 2748 (const uint) 0:14 Sequence -0:14 move second child to first child ( temp int) -0:14 'r07' ( temp int) +0:14 move second child to first child ( temp uint) +0:14 'r04' ( temp uint) 0:14 Constant: -0:14 57 (const int) +0:14 2748 (const uint) 0:15 Sequence -0:15 move second child to first child ( temp uint) -0:15 'r08' ( temp uint) +0:15 move second child to first child ( temp int) +0:15 'r05' ( temp int) 0:15 Constant: -0:15 58 (const uint) +0:15 5 (const int) 0:16 Sequence -0:16 move second child to first child ( temp float) -0:16 'r09' ( temp float) +0:16 move second child to first child ( temp int) +0:16 'r06' ( temp int) 0:16 Constant: -0:16 1.000000 +0:16 6 (const int) 0:17 Sequence -0:17 move second child to first child ( temp float) -0:17 'r10' ( temp float) +0:17 move second child to first child ( temp int) +0:17 'r07' ( temp int) 0:17 Constant: -0:17 1.000000 +0:17 57 (const int) 0:18 Sequence -0:18 move second child to first child ( temp float) -0:18 'r11' ( temp float) +0:18 move second child to first child ( temp uint) +0:18 'r08' ( temp uint) 0:18 Constant: -0:18 1.100000 +0:18 58 (const uint) 0:19 Sequence 0:19 move second child to first child ( temp float) -0:19 'r12' ( temp float) +0:19 'r09' ( temp float) 0:19 Constant: -0:19 1.100000 -0:22 move second child to first child ( temp 4-component vector of float) -0:22 color: direct index for structure ( temp 4-component vector of float) -0:22 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:19 1.000000 +0:20 Sequence +0:20 move second child to first child ( temp float) +0:20 'r10' ( temp float) +0:20 Constant: +0:20 1.000000 +0:21 Sequence +0:21 move second child to first child ( temp float) +0:21 'r11' ( temp float) +0:21 Constant: +0:21 1.100000 +0:22 Sequence +0:22 move second child to first child ( temp float) +0:22 'r12' ( temp float) 0:22 Constant: -0:22 0 (const int) -0:22 Construct vec4 ( temp 4-component vector of float) -0:22 Convert int to float ( temp float) -0:22 'r07' ( temp int) -0:23 Branch: Return with expression -0:23 'ps_output' ( temp structure{ temp 4-component vector of float color}) -0:5 Function Definition: main( ( temp void) -0:5 Function Parameters: +0:22 1.100000 +0:23 Sequence +0:23 move second child to first child ( temp uint) +0:23 'r13' ( temp uint) +0:23 Constant: +0:23 1 (const uint) +0:24 Sequence +0:24 move second child to first child ( temp uint) +0:24 'r14' ( temp uint) +0:24 Constant: +0:24 2 (const uint) +0:25 Sequence +0:25 move second child to first child ( temp int) +0:25 'r15' ( temp int) +0:25 Constant: +0:25 3 (const int) +0:26 Sequence +0:26 move second child to first child ( temp int) +0:26 'r16' ( temp int) +0:26 Constant: +0:26 4 (const int) +0:27 Sequence +0:27 move second child to first child ( temp uint) +0:27 'r17' ( temp uint) +0:27 Constant: +0:27 1 (const uint) +0:28 Sequence +0:28 move second child to first child ( temp int) +0:28 'r18' ( temp int) +0:28 Constant: +0:28 3 (const int) +0:31 move second child to first child ( temp 4-component vector of float) +0:31 color: direct index for structure ( temp 4-component vector of float) +0:31 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:31 Constant: +0:31 0 (const int) +0:31 Construct vec4 ( temp 4-component vector of float) +0:31 Convert int to float ( temp float) +0:31 'r07' ( temp int) +0:32 Branch: Return with expression +0:32 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:8 Function Definition: main( ( temp void) +0:8 Function Parameters: 0:? Sequence -0:5 Sequence -0:5 move second child to first child ( temp 4-component vector of float) +0:8 Sequence +0:8 move second child to first child ( temp 4-component vector of float) 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) -0:5 color: direct index for structure ( temp 4-component vector of float) -0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) -0:5 Constant: -0:5 0 (const int) +0:8 color: direct index for structure ( temp 4-component vector of float) +0:8 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:8 Constant: +0:8 0 (const int) 0:? Linker Objects 0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 54 +// Id's are bound by 62 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 51 + EntryPoint Fragment 4 "main" 59 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "main" @@ -218,9 +278,15 @@ gl_FragCoord origin is upper left Name 35 "r10" Name 36 "r11" Name 38 "r12" - Name 40 "ps_output" - Name 51 "@entryPointOutput.color" - Decorate 51(@entryPointOutput.color) Location 0 + Name 39 "r13" + Name 40 "r14" + Name 41 "r15" + Name 43 "r16" + Name 45 "r17" + Name 46 "r18" + Name 48 "ps_output" + Name 59 "@entryPointOutput.color" + Decorate 59(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -241,16 +307,18 @@ gl_FragCoord origin is upper left 31: 24(int) Constant 57 33: 15(int) Constant 58 37: 6(float) Constant 1066192077 - 39: TypePointer Function 8(PS_OUTPUT) - 41: 24(int) Constant 0 - 45: TypePointer Function 7(fvec4) - 50: TypePointer Output 7(fvec4) -51(@entryPointOutput.color): 50(ptr) Variable Output + 42: 24(int) Constant 3 + 44: 24(int) Constant 4 + 47: TypePointer Function 8(PS_OUTPUT) + 49: 24(int) Constant 0 + 53: TypePointer Function 7(fvec4) + 58: TypePointer Output 7(fvec4) +59(@entryPointOutput.color): 58(ptr) Variable Output 4(main): 2 Function None 3 5: Label - 52:8(PS_OUTPUT) FunctionCall 10(@main() - 53: 7(fvec4) CompositeExtract 52 0 - Store 51(@entryPointOutput.color) 53 + 60:8(PS_OUTPUT) FunctionCall 10(@main() + 61: 7(fvec4) CompositeExtract 60 0 + Store 59(@entryPointOutput.color) 61 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 @@ -268,7 +336,13 @@ gl_FragCoord origin is upper left 35(r10): 12(ptr) Variable Function 36(r11): 12(ptr) Variable Function 38(r12): 12(ptr) Variable Function - 40(ps_output): 39(ptr) Variable Function + 39(r13): 16(ptr) Variable Function + 40(r14): 16(ptr) Variable Function + 41(r15): 25(ptr) Variable Function + 43(r16): 25(ptr) Variable Function + 45(r17): 16(ptr) Variable Function + 46(r18): 25(ptr) Variable Function + 48(ps_output): 47(ptr) Variable Function Store 13(r00) 14 Store 17(r01) 18 Store 19(r02) 20 @@ -282,11 +356,17 @@ gl_FragCoord origin is upper left Store 35(r10) 14 Store 36(r11) 37 Store 38(r12) 37 - 42: 24(int) Load 30(r07) - 43: 6(float) ConvertSToF 42 - 44: 7(fvec4) CompositeConstruct 43 43 43 43 - 46: 45(ptr) AccessChain 40(ps_output) 41 - Store 46 44 - 47:8(PS_OUTPUT) Load 40(ps_output) - ReturnValue 47 + Store 39(r13) 18 + Store 40(r14) 20 + Store 41(r15) 42 + Store 43(r16) 44 + Store 45(r17) 18 + Store 46(r18) 42 + 50: 24(int) Load 30(r07) + 51: 6(float) ConvertSToF 50 + 52: 7(fvec4) CompositeConstruct 51 51 51 51 + 54: 53(ptr) AccessChain 48(ps_output) 49 + Store 54 52 + 55:8(PS_OUTPUT) Load 48(ps_output) + ReturnValue 55 FunctionEnd diff --git a/Test/baseResults/hlsl.numericsuffixes.negative.frag.out b/Test/baseResults/hlsl.numericsuffixes.negative.frag.out new file mode 100644 index 0000000000..60d63e9f2e --- /dev/null +++ b/Test/baseResults/hlsl.numericsuffixes.negative.frag.out @@ -0,0 +1,109 @@ +hlsl.numericsuffixes.negative.frag +ERROR: 0:7: '' : bad digit in binary literal +ERROR: 0:8: '' : binary literal too big +ERROR: 0:9: '' : bad digit in hexadecimal literal +ERROR: 0:10: '' : hexadecimal literal too big +ERROR: 4 compilation errors. No code generated. + + +Shader version: 500 +gl_FragCoord origin is upper left +ERROR: node is still EOpNull! +0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:5 Function Parameters: +0:? Sequence +0:7 Sequence +0:7 move second child to first child ( temp uint) +0:7 'r01' ( temp uint) +0:7 Constant: +0:7 0 (const uint) +0:8 Sequence +0:8 move second child to first child ( temp uint) +0:8 'r02' ( temp uint) +0:8 Constant: +0:8 4294967295 (const uint) +0:10 Sequence +0:9 move second child to first child ( temp uint) +0:9 'r03' ( temp uint) +0:9 Constant: +0:9 0 (const uint) +0:10 move second child to first child ( temp uint) +0:10 'r04' ( temp uint) +0:10 Constant: +0:10 4294967295 (const uint) +0:13 move second child to first child ( temp 4-component vector of float) +0:13 color: direct index for structure ( temp 4-component vector of float) +0:13 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:13 Constant: +0:13 0 (const int) +0:13 Construct vec4 ( temp 4-component vector of float) +0:13 Convert uint to float ( temp float) +0:13 'r01' ( temp uint) +0:14 Branch: Return with expression +0:14 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:5 Function Definition: main( ( temp void) +0:5 Function Parameters: +0:? Sequence +0:5 Sequence +0:5 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) +0:5 color: direct index for structure ( temp 4-component vector of float) +0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:5 Constant: +0:5 0 (const int) +0:? Linker Objects +0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +ERROR: node is still EOpNull! +0:5 Function Definition: @main( ( temp structure{ temp 4-component vector of float color}) +0:5 Function Parameters: +0:? Sequence +0:7 Sequence +0:7 move second child to first child ( temp uint) +0:7 'r01' ( temp uint) +0:7 Constant: +0:7 0 (const uint) +0:8 Sequence +0:8 move second child to first child ( temp uint) +0:8 'r02' ( temp uint) +0:8 Constant: +0:8 4294967295 (const uint) +0:10 Sequence +0:9 move second child to first child ( temp uint) +0:9 'r03' ( temp uint) +0:9 Constant: +0:9 0 (const uint) +0:10 move second child to first child ( temp uint) +0:10 'r04' ( temp uint) +0:10 Constant: +0:10 4294967295 (const uint) +0:13 move second child to first child ( temp 4-component vector of float) +0:13 color: direct index for structure ( temp 4-component vector of float) +0:13 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:13 Constant: +0:13 0 (const int) +0:13 Construct vec4 ( temp 4-component vector of float) +0:13 Convert uint to float ( temp float) +0:13 'r01' ( temp uint) +0:14 Branch: Return with expression +0:14 'ps_output' ( temp structure{ temp 4-component vector of float color}) +0:5 Function Definition: main( ( temp void) +0:5 Function Parameters: +0:? Sequence +0:5 Sequence +0:5 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) +0:5 color: direct index for structure ( temp 4-component vector of float) +0:5 Function Call: @main( ( temp structure{ temp 4-component vector of float color}) +0:5 Constant: +0:5 0 (const int) +0:? Linker Objects +0:? '@entryPointOutput.color' (layout( location=0) out 4-component vector of float) + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/tokenLength.vert.out b/Test/baseResults/tokenLength.vert.out index 8c31da9212..5f108301f6 100644 --- a/Test/baseResults/tokenLength.vert.out +++ b/Test/baseResults/tokenLength.vert.out @@ -27,7 +27,8 @@ ERROR: 0:62: 'preprocessor evaluation' : undefined macro in expression not allow ERROR: 0:67: '' : numeric literal too long ERROR: 0:70: '' : name too long ERROR: 0:70: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -ERROR: 26 compilation errors. No code generated. +ERROR: 0:74: '' : syntax error, unexpected IDENTIFIER, expecting COMMA or SEMICOLON +ERROR: 27 compilation errors. No code generated. Shader version: 300 @@ -56,7 +57,7 @@ ERROR: node is still EOpNull! 0:14 move second child to first child ( temp highp int) 0:14 'HE' ( global highp int) 0:14 Constant: -0:14 -1 (const int) +0:14 180150000 (const int) 0:17 Sequence 0:17 move second child to first child ( temp highp float) 0:17 'F' ( global highp float) @@ -119,6 +120,7 @@ ERROR: node is still EOpNull! 0:? 'superO' ( global highp int) 0:? 'superI' ( global highp int) 0:? 'superF' ( global highp float) +0:? 'BE' ( global highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) @@ -152,7 +154,7 @@ ERROR: node is still EOpNull! 0:14 move second child to first child ( temp highp int) 0:14 'HE' ( global highp int) 0:14 Constant: -0:14 -1 (const int) +0:14 180150000 (const int) 0:17 Sequence 0:17 move second child to first child ( temp highp float) 0:17 'F' ( global highp float) @@ -215,6 +217,7 @@ ERROR: node is still EOpNull! 0:? 'superO' ( global highp int) 0:? 'superI' ( global highp int) 0:? 'superF' ( global highp float) +0:? 'BE' ( global highp int) 0:? 'gl_VertexID' ( gl_VertexId highp int VertexId) 0:? 'gl_InstanceID' ( gl_InstanceId highp int InstanceId) diff --git a/Test/hlsl.conditional.frag b/Test/hlsl.conditional.frag index 91f75eec7f..7b6eb7bda4 100644 --- a/Test/hlsl.conditional.frag +++ b/Test/hlsl.conditional.frag @@ -37,6 +37,10 @@ float4 PixelShaderFunction(float4 input) : COLOR0 e = a = b ? c = d : 10, b = a ? d = c : 11; float4 f; f = ret.x < input.y ? c * input : d * input; + uint g = d > 0.0 ? 0b010101u : 0u; + uint h = g > 0.0 ? 0B111111u : 0u; + uint i = h > 0.0 ? 0b0101u : 0B01; + uint j = i > 0.0 ? 0xabcd : 0xbcda; return e * ret + f + vectorCond() + scalarCond() + float4(fbSelect(bool2(true, false), float2(1.0, 2.0), float2(3.0, 4.0)), 10.0, 10.0); } diff --git a/Test/hlsl.numericsuffixes.frag b/Test/hlsl.numericsuffixes.frag index bccb786da0..e16d374de5 100644 --- a/Test/hlsl.numericsuffixes.frag +++ b/Test/hlsl.numericsuffixes.frag @@ -1,6 +1,9 @@ struct PS_OUTPUT { float4 color : SV_Target0; }; +#define BIN_UINT 0b00001u +#define BIN_INT 0b00011 + PS_OUTPUT main() { // Test numeric suffixes @@ -8,7 +11,7 @@ PS_OUTPUT main() uint r01 = 1u; // lower uint uint r02 = 2U; // upper uint uint r03 = 0xabcu; // lower hex uint - uint r04 = 0xABCU; // upper hex uint (upper 0X is not accepted) + uint r04 = 0XABCU; // upper hex uint int r05 = 5l; // lower long int int r06 = 6L; // upper long int int r07 = 071; // octal @@ -17,6 +20,12 @@ PS_OUTPUT main() float r10 = 1.H; // half float r11 = 1.1h; // half float r12 = 1.1H; // half + uint r13 = 0b00001u;// lower binary uint + uint r14 = 0B00010U;// upper binary uint + int r15 = 0b00011; // lower binary int + int r16 = 0B00100; // upper binary int + uint r17 = BIN_UINT;// lower binart define uint + int r18 = BIN_INT; // lower binart define int PS_OUTPUT ps_output; ps_output.color = r07; // gets 71 octal = 57 decimal diff --git a/Test/hlsl.numericsuffixes.negative.frag b/Test/hlsl.numericsuffixes.negative.frag new file mode 100644 index 0000000000..ce512fd059 --- /dev/null +++ b/Test/hlsl.numericsuffixes.negative.frag @@ -0,0 +1,15 @@ + +struct PS_OUTPUT { float4 color : SV_Target0; }; + +PS_OUTPUT main() +{ + // Test numeric suffixes + uint r01 = 0bERROR321u; // Bad digit + uint r02 = 0b11111111111111111111111111111111111111111111111111111111111111111u; // To big + uint r03 = 0xTESTu // Bad digit + uint r04 = 0xFFFFFFFFFFFFFFFFFFu; // To big + + PS_OUTPUT ps_output; + ps_output.color = r01; + return ps_output; +} diff --git a/Test/tokenLength.vert b/Test/tokenLength.vert index 21d446fae4..325fbcbcb0 100644 --- a/Test/tokenLength.vert +++ b/Test/tokenLength.vert @@ -70,3 +70,5 @@ float superF = 1.012345678901234567890123456789012345678901234567890123456789012 #if A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 #error in super long macro #if #endif + +int BE = 0b01u; // ERROR (not supported by GLSL) diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index d4d4de9f61..25b9bbd098 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -3,6 +3,7 @@ // Copyright (C) 2013 LunarG, Inc. // Copyright (C) 2017 ARM Limited. // Copyright (C) 2015-2018 Google, Inc. +// Copyright (c) 2023, Mobica Limited // // All rights reserved. // @@ -549,7 +550,7 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ival = 0; do { - if (len < MaxTokenLength && ival <= 0x0fffffffffffffffull) { + if (len < MaxTokenLength && ival <= 0x7fffffffffffffffull) { ppToken->name[len++] = (char)ch; if (ch >= '0' && ch <= '9') { ii = ch - '0'; @@ -639,6 +640,110 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ppToken->ival = (int)ival; return isUnsigned ? PpAtomConstUint : PpAtomConstInt; } + } else if ((ch == 'b' || ch == 'B') && pp->parseContext.intermediate.getSource() == EShSourceHlsl) { + // must be binary + bool isUnsigned = false; + bool isInt64 = false; + bool isInt16 = false; + ppToken->name[len++] = (char)ch; + ch = getch(); + + // Check value + if ((ch == '0' || ch == '1')) + { + ival = 0; + do { + if (len < MaxTokenLength && ival <= 0x7fffffffffffffffull) { + ppToken->name[len++] = (char)ch; + if (ch == '0' || ch == '1') { + ii = ch - '0'; + } else { + pp->parseContext.ppError(ppToken->loc, "bad digit in binary literal", "", ""); + } + ival = (ival << 1) | ii; + } + else + { + if (! AlreadyComplained) { + if(len < MaxTokenLength) + pp->parseContext.ppError(ppToken->loc, "binary literal too big", "", ""); + else + pp->parseContext.ppError(ppToken->loc, "binary literal too long", "", ""); + AlreadyComplained = 1; + } + ival = 0xffffffffffffffffull; + } + ch = getch(); + } while (ch == '0' || ch == '1'); + } + else + { + pp->parseContext.ppError(ppToken->loc, "bad digit in binary literal", "", ""); + } + + // check type + if (ch == 'u' || ch == 'U') { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)ch; + isUnsigned = true; + +#ifndef GLSLANG_WEB + int nextCh = getch(); + if (nextCh == 'l' || nextCh == 'L') { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)nextCh; + isInt64 = true; + } else + ungetch(); + + nextCh = getch(); + if ((nextCh == 's' || nextCh == 'S') && + pp->parseContext.intermediate.getSource() == EShSourceGlsl) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)nextCh; + isInt16 = true; + } else + ungetch(); + } else if (ch == 'l' || ch == 'L') { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)ch; + isInt64 = true; + } else if ((ch == 's' || ch == 'S') && + pp->parseContext.intermediate.getSource() == EShSourceGlsl) { + if (len < MaxTokenLength) + ppToken->name[len++] = (char)ch; + isInt16 = true; +#endif + } else { + ungetch(); + } + ppToken->name[len] = '\0'; + + // Assign value + if (isInt64 && pp->parseContext.intermediate.getSource() == EShSourceGlsl) { + if (pp->ifdepth == 0) { + pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, + "64-bit binary literal"); + pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, + Num_Int64_Extensions, Int64_Extensions, "64-bit binary literal"); + } + ppToken->i64val = ival; + return isUnsigned ? PpAtomConstUint64 : PpAtomConstInt64; + } else if (isInt16) { + if (pp->ifdepth == 0) { + if (pp->parseContext.intermediate.getSource() == EShSourceGlsl) { + pp->parseContext.requireProfile(ppToken->loc, ~EEsProfile, + "16-bit binary literal"); + pp->parseContext.profileRequires(ppToken->loc, ~EEsProfile, 0, + Num_Int16_Extensions, Int16_Extensions, "16-bit binary literal"); + } + } + ppToken->ival = (int)ival; + return isUnsigned ? PpAtomConstUint16 : PpAtomConstInt16; + } else { + ppToken->ival = (int)ival; + return isUnsigned ? PpAtomConstUint : PpAtomConstInt; + } } else { // could be octal integer or floating point, speculative pursue octal until it must be floating point diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 294472d94a..db882feb83 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -313,6 +313,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.matrixindex.frag", "main"}, {"hlsl.nonstaticMemberFunction.frag", "main"}, {"hlsl.numericsuffixes.frag", "main"}, + {"hlsl.numericsuffixes.negative.frag", "main"}, {"hlsl.numthreads.comp", "main_aux2"}, {"hlsl.overload.frag", "PixelShaderFunction"}, {"hlsl.opaque-type-bug.frag", "main"}, From 9afd3461272fb318669774b2999d88c90cc9dabc Mon Sep 17 00:00:00 2001 From: Pedro Olsen Ferreira Date: Tue, 11 Jul 2023 15:38:27 +0100 Subject: [PATCH 228/594] Fix maybe-uninitialized warning The 'set' and 'setRT' variables were warning as maybe-uninitialized even though in practice that case would never trigger (due to how the function flow-controls). The code blocks where these variables are actually read do not overlap, so merge them into the same 'set' variable. Simplify the control flow of the function with early-returns, which drops indentation and simplifies the function. --- glslang/MachineIndependent/linkValidate.cpp | 66 ++++++++++----------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 3230d8f4b8..bbfa0223d8 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1633,7 +1633,6 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ typeCollision = false; int set; - int setRT; if (qualifier.isPipeInput()) set = 0; else if (qualifier.isPipeOutput()) @@ -1645,11 +1644,11 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ else if (qualifier.storage == EvqTileImageEXT) set = 4; else if (qualifier.isAnyPayload()) - setRT = 0; + set = 0; else if (qualifier.isAnyCallable()) - setRT = 1; + set = 1; else if (qualifier.isHitObjectAttrNV()) - setRT = 2; + set = 2; else return -1; @@ -1691,10 +1690,12 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ #ifndef GLSLANG_WEB if (qualifier.isAnyPayload() || qualifier.isAnyCallable() || qualifier.isHitObjectAttrNV()) { TRange range(qualifier.layoutLocation, qualifier.layoutLocation); - collision = checkLocationRT(setRT, qualifier.layoutLocation); + collision = checkLocationRT(set, qualifier.layoutLocation); if (collision < 0) - usedIoRT[setRT].push_back(range); - } else if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && + usedIoRT[set].push_back(range); + return collision; + } + if (size == 2 && type.getBasicType() == EbtDouble && type.getVectorSize() == 3 && (qualifier.isPipeInput() || qualifier.isPipeOutput())) { // Dealing with dvec3 in/out split across two locations. // Need two io-ranges. @@ -1720,34 +1721,33 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ if (collision < 0) usedIo[set].push_back(range2); } - } else + return collision; + } #endif - { - // Not a dvec3 in/out split across two locations, generic path. - // Need a single IO-range block. - - TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1); - TRange componentRange(0, 3); - if (qualifier.hasComponent() || type.getVectorSize() > 0) { - int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1); - if (qualifier.hasComponent()) - componentRange.start = qualifier.layoutComponent; - componentRange.last = componentRange.start + consumedComponents - 1; - } - - // combine location and component ranges - TBasicType basicTy = type.getBasicType(); - if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT()) - basicTy = type.getSampler().type; - TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0); - - // check for collisions, except for vertex inputs on desktop targeting OpenGL - if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) - collision = checkLocationRange(set, range, type, typeCollision); + // Not a dvec3 in/out split across two locations, generic path. + // Need a single IO-range block. + + TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation + size - 1); + TRange componentRange(0, 3); + if (qualifier.hasComponent() || type.getVectorSize() > 0) { + int consumedComponents = type.getVectorSize() * (type.getBasicType() == EbtDouble ? 2 : 1); + if (qualifier.hasComponent()) + componentRange.start = qualifier.layoutComponent; + componentRange.last = componentRange.start + consumedComponents - 1; + } + + // combine location and component ranges + TBasicType basicTy = type.getBasicType(); + if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT()) + basicTy = type.getSampler().type; + TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0); + + // check for collisions, except for vertex inputs on desktop targeting OpenGL + if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) + collision = checkLocationRange(set, range, type, typeCollision); - if (collision < 0) - usedIo[set].push_back(range); - } + if (collision < 0) + usedIo[set].push_back(range); return collision; } From a9a262541601fd08cc30a9a449dc7fba82303980 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 18 Jul 2023 11:50:19 -0600 Subject: [PATCH 229/594] cmake: Fix Android build for r25 NDK Currently with the build instructions provided in README.md the build will fail. In the r25 NDK the CMake toolchain defaults to the legacy path, due to a bug in the current implementation. https://github.com/android/ndk/issues/323 --- CMakeLists.txt | 2 +- glslang/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 89ecf64cb9..d6613bf35b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -126,7 +126,7 @@ if(WIN32) include(ChooseMSVCCRT.cmake) endif() add_definitions(-DGLSLANG_OSINCLUDE_WIN32) -elseif(UNIX) +elseif(UNIX OR ANDROID) add_definitions(-DGLSLANG_OSINCLUDE_UNIX) else() message("unknown platform") diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 317eee77ae..f9ba5ebcbb 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -33,7 +33,7 @@ if(WIN32) add_subdirectory(OSDependent/Windows) -elseif(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") +elseif(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia" OR ANDROID) add_subdirectory(OSDependent/Unix) else() message("unknown platform") From 856e280502d762aa81cb7653bd522271b53a4f40 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Mon, 10 Jul 2023 15:38:59 -0600 Subject: [PATCH 230/594] cmake: Rename glslang to glslangValidator Rename glslangValidator to glslang and adds a glslangValidator symlink to the build and install directories. Closes #47. --- CMakeLists.txt | 6 +++--- README-spirv-remap.txt | 2 +- README.md | 4 ++-- StandAlone/CMakeLists.txt | 39 ++++++++++++++++++++++------------ StandAlone/StandAlone.cpp | 5 ++--- Test/baseResults/size | 2 +- Test/glsl.versionOverride.geom | 2 +- Test/glsl.versionOverride.tesc | 2 +- Test/glsl.versionOverride.tese | 2 +- Test/glslangValidator | 2 +- Test/makeDoc | 2 +- Test/runtests | 4 ++-- Test/validate-shaders.sh | 2 +- Test/web.runtests | 2 +- gtests/TestFixture.h | 14 ++++++------ 15 files changed, 50 insertions(+), 40 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d6613bf35b..05219ab2b3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -65,7 +65,7 @@ if(NOT ${SKIP_GLSLANG_INSTALL}) endif() option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) -option(ENABLE_GLSLANG_BINARIES "Builds glslangValidator and spirv-remap" ON) +option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON) option(ENABLE_GLSLANG_JS "If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing." OFF) @@ -319,11 +319,11 @@ if(ENABLE_CTEST AND BUILD_TESTING) if (CMAKE_CONFIGURATION_TYPES) set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) - set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslangValidator) + set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslang) set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) else() set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) - set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslangValidator) + set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang) set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) endif() diff --git a/README-spirv-remap.txt b/README-spirv-remap.txt index 3e5288aac5..f3efee8368 100644 --- a/README-spirv-remap.txt +++ b/README-spirv-remap.txt @@ -112,7 +112,7 @@ BUILD DEPENDENCIES: BUILDING -------------------------------------------------------------------------------- -The standalone remapper is built along side glslangValidator through its +The standalone remapper is built along side glslang through its normal build process. diff --git a/README.md b/README.md index 55a09535ab..8ebf940da6 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ An API for getting reflection information from the AST, reflection types/variabl ### Standalone Wrapper -`glslangValidator` is command-line tool for accessing the functionality above. +`glslang` is command-line tool for accessing the functionality above. Status: Complete. @@ -65,7 +65,7 @@ The above page, while not kept up to date, includes additional information regar ## Execution of Standalone Wrapper -To use the standalone binary form, execute `glslangValidator`, and it will print +To use the standalone binary form, execute `glslang`, and it will print a usage statement. Basic operation is to give it a file containing a shader, and it will print out warnings/errors and optionally an AST. diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index ee9004a70c..c600cc829f 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -45,13 +45,12 @@ add_custom_command( DEPENDS ${GLSLANG_INTRINSIC_PY} COMMENT "Generating ${GLSLANG_INTRINSIC_H}") -#add_custom_target(glslangValidator DEPENDS ${GLSLANG_INTRINSIC_H}) - set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H}) -add_executable(glslangValidator ${SOURCES}) -set_property(TARGET glslangValidator PROPERTY FOLDER tools) -glslang_set_link_args(glslangValidator) +add_executable(glslang-standalone ${SOURCES}) +set_property(TARGET glslang-standalone PROPERTY FOLDER tools) +set_property(TARGET glslang-standalone PROPERTY OUTPUT_NAME glslang) +glslang_set_link_args(glslang-standalone) set(LIBRARIES glslang @@ -70,13 +69,13 @@ elseif(UNIX) endif() endif() -target_link_libraries(glslangValidator ${LIBRARIES}) -target_include_directories(glslangValidator PUBLIC +target_link_libraries(glslang-standalone ${LIBRARIES}) +target_include_directories(glslang-standalone PUBLIC $ $) if(ENABLE_OPT) - target_include_directories(glslangValidator + target_include_directories(glslang-standalone PRIVATE ${spirv-tools_SOURCE_DIR}/include ) endif() @@ -94,19 +93,31 @@ if(WIN32) endif() if(ENABLE_GLSLANG_INSTALL) - install(TARGETS glslangValidator EXPORT glslang-targets) + install(TARGETS glslang-standalone EXPORT glslang-targets) # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" " - message(WARNING \"Using `glslangValidatorTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") + file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" " + message(WARNING \"Using `glslang-standaloneTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - if (NOT TARGET glslang::glslangValidator) + if (NOT TARGET glslang::glslang-standalone) include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") endif() - add_library(glslangValidator ALIAS glslang::glslangValidator) + add_library(glslang-standalone ALIAS glslang::glslang-standalone) ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangValidatorTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) + + # Create a symbolic link to glslang named glslangValidator for backwards compatibility + set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}") + add_custom_command(TARGET glslang-standalone + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${legacy_glslang_name} + WORKING_DIRECTORY $) + + # Create the same symlink at install time + install(CODE "execute_process( \ + COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${legacy_glslang_name} \ + WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") if(ENABLE_SPVREMAPPER) install(TARGETS spirv-remap EXPORT glslang-targets) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index a4c9fec12f..8a78b21fc5 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1884,7 +1884,7 @@ void CompileFile(const char* fileName, ShHandle compiler) // void usage() { - printf("Usage: glslangValidator [option]... [file]...\n" + printf("Usage: glslang [option]... [file]...\n" "\n" "'file' can end in . for auto-stage classification, where is:\n" " .conf to provide a config file that replaces the default configuration\n" @@ -2089,8 +2089,7 @@ void usage() " --variable-name \n" " --vn creates a C header file that contains a\n" " uint32_t array named \n" - " initialized with the shader binary code\n" - ); + " initialized with the shader binary code\n"); exit(EFailUsage); } diff --git a/Test/baseResults/size b/Test/baseResults/size index a7b99b9692..747b1e7120 100644 --- a/Test/baseResults/size +++ b/Test/baseResults/size @@ -1 +1 @@ -399360 ../build/install/bin/glslangValidator.exe +399360 ../build/install/bin/glslang.exe diff --git a/Test/glsl.versionOverride.geom b/Test/glsl.versionOverride.geom index bcfc2f22cd..691c99124d 100644 --- a/Test/glsl.versionOverride.geom +++ b/Test/glsl.versionOverride.geom @@ -1,6 +1,6 @@ /* -glslangValidator.exe --glsl-version 430 -V -S geom -o glsl.versionOverride.geom.out glsl.versionOverride.geom +glslang.exe --glsl-version 430 -V -S geom -o glsl.versionOverride.geom.out glsl.versionOverride.geom */ diff --git a/Test/glsl.versionOverride.tesc b/Test/glsl.versionOverride.tesc index 3b7b1e3c9a..a3bd7ed60b 100644 --- a/Test/glsl.versionOverride.tesc +++ b/Test/glsl.versionOverride.tesc @@ -1,6 +1,6 @@ /* -glslangValidator.exe --glsl-version 440 -V -S tesc -o glsl.versionOverride.tesc.out glsl.versionOverride.tesc +glslang.exe --glsl-version 440 -V -S tesc -o glsl.versionOverride.tesc.out glsl.versionOverride.tesc */ diff --git a/Test/glsl.versionOverride.tese b/Test/glsl.versionOverride.tese index e92d5a986f..bbb42d2fc9 100644 --- a/Test/glsl.versionOverride.tese +++ b/Test/glsl.versionOverride.tese @@ -1,6 +1,6 @@ /* -glslangValidator.exe --glsl-version 450 -V -S tese -o glsl.versionOverride.tese.out glsl.versionOverride.tese +glslang.exe --glsl-version 450 -V -S tese -o glsl.versionOverride.tese.out glsl.versionOverride.tese */ diff --git a/Test/glslangValidator b/Test/glslangValidator index 856aa1a995..f6b26b437a 100755 --- a/Test/glslangValidator +++ b/Test/glslangValidator @@ -1,2 +1,2 @@ #!/usr/bin/env bash -../build/install/bin/glslangValidator $* +../build/install/bin/glslang $* diff --git a/Test/makeDoc b/Test/makeDoc index c9d598ec41..102dc9a484 100644 --- a/Test/makeDoc +++ b/Test/makeDoc @@ -1,3 +1,3 @@ #!/usr/bin/env bash -./glslangValidator -p > instDesc +./glslang -p > instDesc asciidoc --backend=html5 instDesc diff --git a/Test/runtests b/Test/runtests index 112e29ed05..e7e1d33f48 100755 --- a/Test/runtests +++ b/Test/runtests @@ -2,12 +2,12 @@ # Arguments: # 1- TargetDirectory, where to write test results and intermediary files -# 2- Path to glslangValidator +# 2- Path to glslang # 3- Path to spirv-remap TARGETDIR=${1:-localResults} BASEDIR=baseResults -EXE=${2:-../build/install/bin/glslangValidator} +EXE=${2:-../build/install/bin/glslang} REMAPEXE=${3:-../build/install/bin/spirv-remap} HASERROR=0 mkdir -p $TARGETDIR diff --git a/Test/validate-shaders.sh b/Test/validate-shaders.sh index 89dc95566b..c841969c51 100755 --- a/Test/validate-shaders.sh +++ b/Test/validate-shaders.sh @@ -4,7 +4,7 @@ # It is not meant to preclude the possible addition of the validator to # glslang. -declare -r EXE='../build/install/bin/glslangValidator' +declare -r EXE='../build/install/bin/glslang' # search common locations for spirv-tools: keep first one for toolsdir in '../External/spirv-tools/build/tools' '../../SPIRV-Tools/build/tools/bin' '/usr/local/bin'; do diff --git a/Test/web.runtests b/Test/web.runtests index 3283dd8331..584b6c5116 100755 --- a/Test/web.runtests +++ b/Test/web.runtests @@ -3,7 +3,7 @@ TESTLIST=web.testlist TARGETDIR=localResults BASEDIR=baseResults -EXE=../build/install/bin/glslangValidator.exe +EXE=../build/install/bin/glslang.exe HASERROR=0 mkdir -p $TARGETDIR diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 67783c0c4d..962855c494 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -471,7 +471,7 @@ class GlslangTest : public GT { targetLanguageVersion, false, EShTexSampTransKeep, enableOptimizer, enableDebug, enableNonSemanticShaderDebugInfo, automap); - // Generate the hybrid output in the way of glslangValidator. + // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); @@ -501,7 +501,7 @@ class GlslangTest : public GT { GlslangResult result = compileAndLink(testName, input, entryPointName, controls, clientTargetVersion, targetLanguageVersion, false, EShTexSampTransKeep, false, automap); - // Generate the hybrid output in the way of glslangValidator. + // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); @@ -527,7 +527,7 @@ class GlslangTest : public GT { GlslangResult result = compileAndLink(testName, input, entryPointName, controls, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, true); - // Generate the hybrid output in the way of glslangValidator. + // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); @@ -564,7 +564,7 @@ class GlslangTest : public GT { autoMapBindings, flattenUniformArrays); - // Generate the hybrid output in the way of glslangValidator. + // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); @@ -591,7 +591,7 @@ class GlslangTest : public GT { const EShMessages controls = DeriveOptions(source, semantics, target); GlslangResult result = compileLinkRemap(testName, input, entryPointName, controls, remapOptions); - // Generate the hybrid output in the way of glslangValidator. + // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); @@ -618,7 +618,7 @@ class GlslangTest : public GT { const EShMessages controls = DeriveOptions(source, semantics, target); GlslangResult result = remap(testName, input, controls, remapOptions); - // Generate the hybrid output in the way of glslangValidator. + // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); @@ -698,7 +698,7 @@ class GlslangTest : public GT { glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, false, EShTexSampTransUpgradeTextureRemoveSampler); - // Generate the hybrid output in the way of glslangValidator. + // Generate the hybrid output in the way of glslang. std::ostringstream stream; outputResultToStream(&stream, result, controls); From 2af597d1a84f62acee1fe4a63e9248548719756b Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 18 Jul 2023 13:05:47 -0600 Subject: [PATCH 231/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 19ce8a0940..61645cb964 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "e7c6084fd1d6d6f5ac393e842728d8be309688ca" + "commit" : "4b6bd5a665ba0529747af3a0bc808732b7e78f48" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "268a061764ee69f09a477a695bf6a11ffe311b8d" + "commit" : "f1ba373ef03752ee9f6f2b898bea1213f93e1ef2" } ] } From 9b1a0f4d3e054d9b21ae584a20c06c98628c3015 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 18 Jul 2023 17:35:14 -0600 Subject: [PATCH 232/594] Update CHANGES for release 12.3.0 --- CHANGES.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 098362f168..4372a3c9c5 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 12.3.0 2023-07-19 + +### Other changes +* Rename glslangValidator to glslang and create glslangValidator symlink +* Support HLSL binary literals +* Add missing initialization members for web +* Improve push_constant upgrading +* Fix race condition in spirv remap +* Support pre and post HLSL qualifier validation +* Force generateDebugInfo when non-semantic debug info is enabled +* Exit with error if output file cannot be written +* Fix struct member buffer reference decorations + ## 12.2.0 2023-05-17 ### Other changes From 865fe739581a39cccadb21737fbbf1e6ee16d7fe Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Wed, 19 Jul 2023 16:38:31 -0600 Subject: [PATCH 233/594] cmake: Fix symlink on Windows Copy the old glslangValidator name on Windows rather than creating a symlink. While cmake 3.13 and above supports creating symlinks on Windows, a security policy change is required in general to allow the creation of symlinks for non-trusted users. See https://learn.microsoft.com/en-us/windows/security/threat-protection/security-policy-settings/create-symbolic-links Fixes #3268. --- StandAlone/CMakeLists.txt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index c600cc829f..d146063007 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -109,14 +109,18 @@ if(ENABLE_GLSLANG_INSTALL) # Create a symbolic link to glslang named glslangValidator for backwards compatibility set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}") + set(link_method create_symlink) + if (WIN32 OR MINGW) + set(link_method copy_if_different) + endif() add_custom_command(TARGET glslang-standalone POST_BUILD - COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${legacy_glslang_name} + COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} WORKING_DIRECTORY $) # Create the same symlink at install time install(CODE "execute_process( \ - COMMAND ${CMAKE_COMMAND} -E create_symlink $ ${legacy_glslang_name} \ + COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} \ WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") if(ENABLE_SPVREMAPPER) From 77417d5c9e0a5d4c79ddd0285d530b45f7259f0d Mon Sep 17 00:00:00 2001 From: David Neto Date: Wed, 19 Jul 2023 19:29:55 -0400 Subject: [PATCH 234/594] Support MinGW build with Clang, not just GCC Fixes: #3270 --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 05219ab2b3..72f5f8816b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,7 +204,8 @@ set(CMAKE_CXX_EXTENSIONS OFF) function(glslang_set_link_args TARGET) # For MinGW compiles, statically link against the GCC and C++ runtimes. # This avoids the need to ship those runtimes as DLLs. - if(WIN32 AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + # This is supported by GCC and Clang. + if(WIN32 AND NOT MSVC) set_target_properties(${TARGET} PROPERTIES LINK_FLAGS "-static -static-libgcc -static-libstdc++") endif() From 45ce545ad35d792e690b79b4703bcd38a4180fe2 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Thu, 20 Jul 2023 10:46:47 -0600 Subject: [PATCH 235/594] web: Fix emscripten build The web/emscripten build has been broken for an unknown amount of time and for multiple reasons: - Calling `cat` on Windows - The latest version of wasm-ld does not support the `--no-undefined` flag - `ccall` was not being exported Fixes #3272. --- CMakeLists.txt | 4 ++-- glslang/OSDependent/Web/CMakeLists.txt | 17 +++++++++++++++-- glslang/OSDependent/Web/glslang.pre.js | 2 +- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 72f5f8816b..2cb8eb169b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -159,8 +159,8 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-fno-exceptions) endif() - if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") - # Error if there's symbols that are not found at link time. + if(NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" OR CMAKE_SYSTEM_NAME STREQUAL "Emscripten")) + # Error if there's symbols that are not found at link time. Some linkers do not support this flag. if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") add_link_options("-Wl,-undefined,error") elseif(NOT APPLE) diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt index 5bfbed415c..6232b8091d 100644 --- a/glslang/OSDependent/Web/CMakeLists.txt +++ b/glslang/OSDependent/Web/CMakeLists.txt @@ -53,6 +53,9 @@ if(ENABLE_GLSLANG_JS) target_link_libraries(glslang.js "-s ALLOW_MEMORY_GROWTH=1") target_link_libraries(glslang.js "-s FILESYSTEM=0") + # We use ccall in glslang.pre.js, so make sure it's exposed + target_link_libraries(glslang.js "-s EXPORTED_RUNTIME_METHODS=ccall") + if(ENABLE_EMSCRIPTEN_SINGLE_FILE) target_link_libraries(glslang.js "-s SINGLE_FILE=1") endif() @@ -64,8 +67,18 @@ if(ENABLE_GLSLANG_JS) endif() if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - add_custom_command(TARGET glslang.js POST_BUILD - COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + if (CMAKE_HOST_SYSTEM MATCHES "Windows.*") + # There are several ways we could append one file to another on Windows, but unfortunately 'cat' is not one of them + # (there is no 'cat' command in cmd). Also, since this will ultimately run in cmd and not pwsh, we need to ensure + # Windows path separators are used. + file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/glslang.js" glslang_js_path) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js" glslang_after_js_path) + add_custom_command(TARGET glslang.js POST_BUILD + COMMAND type "${glslang_after_js_path}" >> "${glslang_js_path}") + else() + add_custom_command(TARGET glslang.js POST_BUILD + COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + endif() endif() endif() endif() diff --git a/glslang/OSDependent/Web/glslang.pre.js b/glslang/OSDependent/Web/glslang.pre.js index 46a569506d..390390e99f 100644 --- a/glslang/OSDependent/Web/glslang.pre.js +++ b/glslang/OSDependent/Web/glslang.pre.js @@ -25,7 +25,7 @@ Module['compileGLSLZeroCopy'] = function(glsl, shader_stage, gen_debug, spirv_ve var p_output = Module['_malloc'](4); var p_output_len = Module['_malloc'](4); - var id = ccall('convert_glsl_to_spirv', + var id = Module['ccall']('convert_glsl_to_spirv', 'number', ['string', 'number', 'boolean', 'number', 'number', 'number'], [glsl, shader_stage_int, gen_debug, spirv_version_int, p_output, p_output_len]); From 4f3ae4b03dc3556f96f55467e139f852831199d0 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 20 Jul 2023 09:33:13 -0600 Subject: [PATCH 236/594] Update CHANGES for release 12.3.1 --- CHANGES.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 4372a3c9c5..b56469d3ee 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,11 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 12.3.1 2023-07-20 + +### Other changes +* Improve backward compatibility for glslangValidator rename on Windows + ## 12.3.0 2023-07-19 ### Other changes From 65397339c5033cc612519a29f3896bbd3dcd2d08 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 18 Jul 2023 11:25:05 -0600 Subject: [PATCH 237/594] Remove obsolete files WORKSPACE is related to Bazel, which is no longer supported Test/makeDoc uses an option that glslang no longer supports. --- Test/makeDoc | 3 --- WORKSPACE | 27 --------------------------- 2 files changed, 30 deletions(-) delete mode 100644 Test/makeDoc delete mode 100644 WORKSPACE diff --git a/Test/makeDoc b/Test/makeDoc deleted file mode 100644 index 102dc9a484..0000000000 --- a/Test/makeDoc +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -./glslang -p > instDesc -asciidoc --backend=html5 instDesc diff --git a/WORKSPACE b/WORKSPACE deleted file mode 100644 index 488546c7cd..0000000000 --- a/WORKSPACE +++ /dev/null @@ -1,27 +0,0 @@ -workspace(name = "org_khronos_glslang") -load( - "@bazel_tools//tools/build_defs/repo:http.bzl", - "http_archive", -) - -http_archive( - name = "com_google_googletest", - sha256 = "94c634d499558a76fa649edb13721dce6e98fb1e7018dfaeba3cd7a083945e91", - strip_prefix = "googletest-release-1.10.0", - urls = ["https://github.com/google/googletest/archive/release-1.10.0.zip"], # 3-Oct-2019 -) - -http_archive( - name = "com_googlesource_code_re2", - sha256 = "b885bb965ab4b6cf8718bbb8154d8f6474cd00331481b6d3e390babb3532263e", - strip_prefix = "re2-e860767c86e577b87deadf24cc4567ea83c4f162/", - urls = ["https://github.com/google/re2/archive/e860767c86e577b87deadf24cc4567ea83c4f162.zip"], -) - -http_archive( - name = "com_google_effcee", - build_file = "BUILD.effcee.bazel", - sha256 = "b0c21a01995fdf9792510566d78d5e7fe6f83cb4ba986eba691f4926f127cb34", - strip_prefix = "effcee-8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b/", - urls = ["https://github.com/google/effcee/archive/8f0a61dc95e0df18c18e0ac56d83b3fa9d2fe90b.zip"], -) From fe82779952349597ae08416538c5ba05aa716c88 Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Mon, 24 Jul 2023 11:30:56 +0100 Subject: [PATCH 238/594] Silence unused parameter warning The parameter could be removed, but keep it for consistency with other `makeSpirvTypeParameters` overloads. --- glslang/MachineIndependent/SpirvIntrinsics.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp index ecef5607e4..48c6a5bac7 100644 --- a/glslang/MachineIndependent/SpirvIntrinsics.cpp +++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -298,7 +298,8 @@ TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& l return spirvTypeParams; } -TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& loc, const TPublicType& type) +TSpirvTypeParameters* TParseContext::makeSpirvTypeParameters(const TSourceLoc& /* loc */, + const TPublicType& type) { TSpirvTypeParameters* spirvTypeParams = new TSpirvTypeParameters; spirvTypeParams->push_back(TSpirvTypeParameter(new TType(type))); From c81b34fb248982cc3e2e646c44743e1ad1c3149c Mon Sep 17 00:00:00 2001 From: scribam Date: Sat, 22 Jul 2023 14:51:11 +0200 Subject: [PATCH 239/594] Remove useless semicolons --- SPIRV/SpvBuilder.cpp | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 2 +- glslang/MachineIndependent/Scan.cpp | 2 +- glslang/MachineIndependent/propagateNoContraction.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index df5f234b3d..8b9ca13fac 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -934,7 +934,7 @@ Id Builder::makeArrayDebugType(Id const baseType, Id const componentCount) Id Builder::makeVectorDebugType(Id const baseType, int const componentCount) { - return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector);; + return makeSequentialDebugType(baseType, makeUintConstant(componentCount), NonSemanticShaderDebugInfo100DebugTypeVector); } Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool columnMajor) @@ -4071,4 +4071,4 @@ void Builder::dumpModuleProcesses(std::vector& out) const } } -}; // end spv namespace +} // end spv namespace diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index c6f947d9b2..4efdbdf318 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -9214,7 +9214,7 @@ void TParseContext::addQualifierToExisting(const TSourceLoc& loc, TQualifier qua // TParseContext::declareBlock. if (!symbol && qualifier.hasBufferReference()) { TTypeList typeList; - TType blockType(&typeList, identifier, qualifier);; + TType blockType(&typeList, identifier, qualifier); TType blockNameType(EbtReference, blockType, identifier); TVariable* blockNameVar = new TVariable(&identifier, blockNameType, true); if (! symbolTable.insert(*blockNameVar)) { diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index bb21c20345..0a0d10946f 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -328,7 +328,7 @@ std::unordered_map* KeywordMap = nullptr; std::unordered_set* ReservedSet = nullptr; #endif -}; +} namespace glslang { diff --git a/glslang/MachineIndependent/propagateNoContraction.cpp b/glslang/MachineIndependent/propagateNoContraction.cpp index a1aa5ea6b4..67102ba123 100644 --- a/glslang/MachineIndependent/propagateNoContraction.cpp +++ b/glslang/MachineIndependent/propagateNoContraction.cpp @@ -865,6 +865,6 @@ void PropagateNoContraction(const glslang::TIntermediate& intermediate) precise_object_accesschains.erase(precise_object_accesschain); } } -}; +} #endif // GLSLANG_WEB From 026a9bcdb2afd292e53b594398547aeaafc81366 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Mon, 24 Jul 2023 16:18:19 -0600 Subject: [PATCH 240/594] ci: Test Android NDK matrix combinations --- .github/workflows/continuous_integration.yml | 74 ++++++++------------ 1 file changed, 28 insertions(+), 46 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 6ca8607b57..4d15c8a1d2 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -144,56 +144,38 @@ jobs: cd ../Test && bash runtests android: - runs-on: ${{matrix.os}} + runs-on: ubuntu-22.04 strategy: - fail-fast: false - matrix: - os: [ubuntu-20.04] - compiler: [{cc: clang, cxx: clang++}] - cmake_build_type: [Release] + matrix: + # Android NDK currently offers 2 different toolchains. + # Test both to ensure we are compatible with either approach. + LEGACY: [ON, OFF] + # Oldest/newest NDK currently provided by GitHub runners + # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android + NDK: [23.2.8568313, 25.2.9519653] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 with: python-version: '3.7' - - name: Install Ubuntu Package Dependencies - if: ${{matrix.os == 'ubuntu-20.04'}} - run: | - sudo apt-get -qq update - sudo apt-get install -y clang-6.0 - - name: Install Android NDK - run: | - export ANDROID_NDK=$HOME/android-ndk - git init $ANDROID_NDK - pushd $ANDROID_NDK - git remote add dneto0 https://github.com/dneto0/android-ndk.git - git fetch --depth=1 dneto0 r17b-strip - git checkout FETCH_HEAD - popd - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. + - uses: lukka/get-cmake@latest + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: android-${{ matrix.LEGACY }}-${{ matrix.NDK }} - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure run: | - ./update_glslang_sources.py - - name: Build + cmake -S . -B build/ \ + --toolchain $ANDROID_HOME/ndk/${{ matrix.NDK }}/build/cmake/android.toolchain.cmake \ + -D CMAKE_BUILD_TYPE=Release \ + -D ANDROID_ABI=armeabi-v7a \ + -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \ + -D BUILD_TESTING=OFF env: - CC: ${{matrix.compiler.cc}} - CXX: ${{matrix.compiler.cxx}} - run: | - export ANDROID_NDK=$HOME/android-ndk - export TOOLCHAIN_PATH=$ANDROID_NDK/build/cmake/android.toolchain.cmake - echo $ANDROID_NDK - echo $TOOLCHAIN_PATH - mkdir build && cd build - cmake -DCMAKE_TOOLCHAIN_FILE=${TOOLCHAIN_PATH} -DANDROID_NATIVE_API_LEVEL=android-14 -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DANDROID_ABI="armeabi-v7a with NEON" -DBUILD_TESTING=OFF .. - make -j4 + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build/ From 4aa56496d6e7428e07b0a614da6aa5428ff87587 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Mon, 24 Jul 2023 16:56:09 -0600 Subject: [PATCH 241/594] git: Ignore CMakeUserPresets.json CMakeUserPresets.json can be useful for developers and is not meant to be checked in. --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 333fb76272..732b345973 100644 --- a/.gitignore +++ b/.gitignore @@ -11,6 +11,7 @@ Test/localResults/ External/googletest External/spirv-tools out/ +CMakeUserPresets.json # GN generated files .cipd/ From 29b87a4e69ce2d95f08bf758d184a2a5f20acc61 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 25 Jul 2023 13:33:11 -0600 Subject: [PATCH 242/594] Modernize linux CI - Test Ubuntu-22.04 - Use ccache - Ensure backwards compatibility with Ubuntu-20.04 --- .github/workflows/continuous_integration.yml | 79 +++++++++++++++----- 1 file changed, 62 insertions(+), 17 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 4d15c8a1d2..a2d769f8ba 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -16,22 +16,22 @@ permissions: read-all jobs: linux: - runs-on: ${{matrix.os}} + runs-on: ubuntu-22.04 strategy: fail-fast: false matrix: - os: [ubuntu-20.04] compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v2 - - uses: actions/setup-python@v2 + - uses: actions/checkout@v3 + - uses: lukka/get-cmake@latest + - uses: actions/setup-python@v4 with: python-version: '3.7' - - name: Install Ubuntu Package Dependencies - run: | - sudo apt-get -qq update - sudo apt-get install -y clang-6.0 + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - name: Install GoogleTest run: | # check out pre-breakage version of googletest; can be deleted when @@ -45,22 +45,67 @@ jobs: git reset --hard FETCH_HEAD cd ../.. - name: Update Glslang Sources - run: | - ./update_glslang_sources.py - - name: Build + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} env: - CC: ${{matrix.compiler.cc}} - CXX: ${{matrix.compiler.cxx}} - run: | - mkdir build && cd build - cmake -DCMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -DCMAKE_INSTALL_PREFIX=`pwd`/install .. - make -j4 install + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install - name: Test run: | cd build ctest --output-on-failure && cd ../Test && ./runtests + # Ensure we can compile/run on an older distro + linux_min: + name: Linux Backcompat + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: linux_backcompat + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release + env: + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install + - name: Test + run: | + cd build + ctest --output-on-failure && + cd ../Test && ./runtests + macos: runs-on: ${{matrix.os}} strategy: From 91a97b4c69c765e3c59ddd0fa775bd27f40c8d79 Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Tue, 25 Jul 2023 11:44:12 +0100 Subject: [PATCH 243/594] Fix typo in error message --- glslang/MachineIndependent/SpirvIntrinsics.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp index 48c6a5bac7..5d495dbf51 100644 --- a/glslang/MachineIndependent/SpirvIntrinsics.cpp +++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -76,7 +76,7 @@ TSpirvRequirement* TParseContext::makeSpirvRequirement(const TSourceLoc& loc, co spirvReq->capabilities.insert(capability->getAsConstantUnion()->getConstArray()[0].getIConst()); } } else - error(loc, "unknow SPIR-V requirement", name.c_str(), ""); + error(loc, "unknown SPIR-V requirement", name.c_str(), ""); return spirvReq; } From 808c7ed17cbc5a5078264bad3e95f2199a42e939 Mon Sep 17 00:00:00 2001 From: Boris Zanin Date: Thu, 16 Mar 2023 13:01:01 +0100 Subject: [PATCH 244/594] Implement support for GL_KHR_cooperative_matrix extension --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 141 +- SPIRV/SPVRemapper.cpp | 1 + SPIRV/SpvBuilder.cpp | 65 +- SPIRV/SpvBuilder.h | 13 +- SPIRV/doc.cpp | 53 + SPIRV/doc.h | 1 + SPIRV/spirv.hpp | 46 + Test/baseResults/spv.coopmatKHR.comp.out | 402 + .../baseResults/spv.coopmatKHR_Error.comp.out | 38 + .../spv.coopmatKHR_arithmetic.comp.out | 248 + .../spv.coopmatKHR_arithmeticError.comp.out | 64 + .../spv.coopmatKHR_constructor.comp.out | 632 ++ .../spv.coopmatKHR_constructorError.comp.out | 9 + Test/baseResults/spv.intcoopmat.comp.out | 149 +- Test/spv.coopmatKHR.comp | 121 + Test/spv.coopmatKHR_Error.comp | 69 + Test/spv.coopmatKHR_arithmetic.comp | 85 + Test/spv.coopmatKHR_arithmeticError.comp | 87 + Test/spv.coopmatKHR_constructor.comp | 49 + Test/spv.coopmatKHR_constructorError.comp | 16 + Test/spv.intcoopmat.comp | 226 +- glslang/Include/BaseTypes.h | 1 + glslang/Include/Types.h | 217 +- glslang/Include/arrays.h | 10 + glslang/Include/intermediate.h | 6 +- glslang/MachineIndependent/Initialize.cpp | 104 +- glslang/MachineIndependent/Intermediate.cpp | 32 +- glslang/MachineIndependent/ParseHelper.cpp | 151 +- glslang/MachineIndependent/ParseHelper.h | 5 +- glslang/MachineIndependent/Scan.cpp | 9 + glslang/MachineIndependent/Versions.cpp | 16 +- glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/glslang.m4 | 62 +- glslang/MachineIndependent/glslang.y | 62 +- glslang/MachineIndependent/glslang_tab.cpp | 9750 ++++++++--------- glslang/MachineIndependent/glslang_tab.cpp.h | 609 +- glslang/MachineIndependent/intermOut.cpp | 12 +- glslang/MachineIndependent/parseVersions.h | 5 +- gtests/Spv.FromFile.cpp | 6 + 40 files changed, 8034 insertions(+), 5540 deletions(-) create mode 100644 Test/baseResults/spv.coopmatKHR.comp.out create mode 100644 Test/baseResults/spv.coopmatKHR_Error.comp.out create mode 100644 Test/baseResults/spv.coopmatKHR_arithmetic.comp.out create mode 100644 Test/baseResults/spv.coopmatKHR_arithmeticError.comp.out create mode 100644 Test/baseResults/spv.coopmatKHR_constructor.comp.out create mode 100644 Test/baseResults/spv.coopmatKHR_constructorError.comp.out create mode 100644 Test/spv.coopmatKHR.comp create mode 100644 Test/spv.coopmatKHR_Error.comp create mode 100644 Test/spv.coopmatKHR_arithmetic.comp create mode 100644 Test/spv.coopmatKHR_arithmeticError.comp create mode 100644 Test/spv.coopmatKHR_constructor.comp create mode 100644 Test/spv.coopmatKHR_constructorError.comp diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 45549c1434..121defa16a 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -55,5 +55,6 @@ static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subg static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric"; static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests"; static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch"; +static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 9a66363c28..444498740d 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -176,7 +176,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { glslang::TLayoutPacking, const glslang::TQualifier&); void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, const glslang::TQualifier&, spv::Id, const std::vector& spvMembers); - spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim); + spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim, bool allowZero = false); spv::Id accessChainLoad(const glslang::TType& type); void accessChainStore(const glslang::TType& type, spv::Id rvalue); void multiTypeStore(const glslang::TType&, spv::Id rValue); @@ -212,7 +212,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { glslang::TBasicType typeProxy); spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand, glslang::TBasicType typeProxy); - spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize); + spv::Id createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize, spv::Id destType); spv::Id makeSmearedConstant(spv::Id constant, int vectorSize); spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, @@ -2560,12 +2560,15 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI spv::Id length; if (node->getOperand()->getType().isCoopMat()) { - spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); - spv::Id typeId = convertGlslangToSpvType(node->getOperand()->getType()); assert(builder.isCooperativeMatrixType(typeId)); - length = builder.createCooperativeMatrixLength(typeId); + if (node->getOperand()->getType().isCoopMatKHR()) { + length = builder.createCooperativeMatrixLengthKHR(typeId); + } else { + spec_constant_op_mode_setter.turnOnSpecConstantOpMode(); + length = builder.createCooperativeMatrixLengthNV(typeId); + } } else { glslang::TIntermTyped* block = node->getOperand()->getAsBinaryNode()->getLeft(); block->traverse(this); @@ -3099,7 +3102,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructStruct: case glslang::EOpConstructTextureSampler: case glslang::EOpConstructReference: - case glslang::EOpConstructCooperativeMatrix: + case glslang::EOpConstructCooperativeMatrixNV: + case glslang::EOpConstructCooperativeMatrixKHR: { builder.setLine(node->getLoc().line, node->getLoc().getFilename()); std::vector arguments; @@ -3116,7 +3120,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } else constructed = builder.createOp(spv::OpSampledImage, resultType(), arguments); } else if (node->getOp() == glslang::EOpConstructStruct || - node->getOp() == glslang::EOpConstructCooperativeMatrix || + node->getOp() == glslang::EOpConstructCooperativeMatrixNV || + node->getOp() == glslang::EOpConstructCooperativeMatrixKHR || node->getType().isArray()) { std::vector constituents; for (int c = 0; c < (int)arguments.size(); ++c) @@ -3291,6 +3296,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt break; case glslang::EOpCooperativeMatrixLoad: case glslang::EOpCooperativeMatrixStore: + case glslang::EOpCooperativeMatrixLoadNV: + case glslang::EOpCooperativeMatrixStoreNV: noReturnValue = true; break; case glslang::EOpBeginInvocationInterlock: @@ -3502,10 +3509,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt lvalue = true; break; case glslang::EOpCooperativeMatrixLoad: + case glslang::EOpCooperativeMatrixLoadNV: if (arg == 0 || arg == 1) lvalue = true; break; case glslang::EOpCooperativeMatrixStore: + case glslang::EOpCooperativeMatrixStoreNV: if (arg == 1) lvalue = true; break; @@ -3534,7 +3543,9 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt #ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpCooperativeMatrixLoad || - node->getOp() == glslang::EOpCooperativeMatrixStore) { + node->getOp() == glslang::EOpCooperativeMatrixStore || + node->getOp() == glslang::EOpCooperativeMatrixLoadNV || + node->getOp() == glslang::EOpCooperativeMatrixStoreNV) { if (arg == 1) { // fold "element" parameter into the access chain @@ -3555,9 +3566,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt unsigned int alignment = builder.getAccessChain().alignment; int memoryAccess = TranslateMemoryAccess(coherentFlags); - if (node->getOp() == glslang::EOpCooperativeMatrixLoad) + if (node->getOp() == glslang::EOpCooperativeMatrixLoad || + node->getOp() == glslang::EOpCooperativeMatrixLoadNV) memoryAccess &= ~spv::MemoryAccessMakePointerAvailableKHRMask; - if (node->getOp() == glslang::EOpCooperativeMatrixStore) + if (node->getOp() == glslang::EOpCooperativeMatrixStore || + node->getOp() == glslang::EOpCooperativeMatrixStoreNV) memoryAccess &= ~spv::MemoryAccessMakePointerVisibleKHRMask; if (builder.getStorageClass(builder.getAccessChain().base) == spv::StorageClassPhysicalStorageBufferEXT) { @@ -3655,31 +3668,48 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.setLine(node->getLoc().line, node->getLoc().getFilename()); #ifndef GLSLANG_WEB - if (node->getOp() == glslang::EOpCooperativeMatrixLoad) { + if (node->getOp() == glslang::EOpCooperativeMatrixLoad || + node->getOp() == glslang::EOpCooperativeMatrixLoadNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf - idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride - idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor + if (node->getOp() == glslang::EOpCooperativeMatrixLoad) { + idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout + idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride + } else { + idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride + idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor + } idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); // get the pointee type spv::Id typeId = builder.getContainedTypeId(builder.getTypeId(operands[0])); assert(builder.isCooperativeMatrixType(typeId)); // do the op - spv::Id result = builder.createOp(spv::OpCooperativeMatrixLoadNV, typeId, idImmOps); + spv::Id result = node->getOp() == glslang::EOpCooperativeMatrixLoad + ? builder.createOp(spv::OpCooperativeMatrixLoadKHR, typeId, idImmOps) + : builder.createOp(spv::OpCooperativeMatrixLoadNV, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[0]); result = 0; - } else if (node->getOp() == glslang::EOpCooperativeMatrixStore) { + } else if (node->getOp() == glslang::EOpCooperativeMatrixStore || + node->getOp() == glslang::EOpCooperativeMatrixStoreNV) { std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf idImmOps.push_back(spv::IdImmediate(true, operands[0])); // object - idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride - idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor + if (node->getOp() == glslang::EOpCooperativeMatrixStore) { + idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout + idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride + } else { + idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride + idImmOps.push_back(spv::IdImmediate(true, operands[3])); // colMajor + } idImmOps.insert(idImmOps.end(), memoryAccessOperands.begin(), memoryAccessOperands.end()); - builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps); + if (node->getOp() == glslang::EOpCooperativeMatrixStore) + builder.createNoResultOp(spv::OpCooperativeMatrixStoreKHR, idImmOps); + else + builder.createNoResultOp(spv::OpCooperativeMatrixStoreNV, idImmOps); result = 0; } else if (node->getOp() == glslang::EOpRayQueryGetIntersectionTriangleVertexPositionsEXT) { std::vector idImmOps; @@ -3694,6 +3724,32 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // store the result to the pointer (out param 'm') builder.createStore(result, operands[2]); result = 0; + } else if (node->getOp() == glslang::EOpCooperativeMatrixMulAdd) { + uint32_t matrixOperands = 0; + + // If the optional operand is present, initialize matrixOperands to that value. + if (glslangOperands.size() == 4 && glslangOperands[3]->getAsConstantUnion()) { + matrixOperands = glslangOperands[3]->getAsConstantUnion()->getConstArray()[0].getIConst(); + } + + // Determine Cooperative Matrix Operands bits from the signedness of the types. + if (isTypeSignedInt(glslangOperands[0]->getAsTyped()->getBasicType())) + matrixOperands |= spv::CooperativeMatrixOperandsMatrixASignedComponentsMask; + if (isTypeSignedInt(glslangOperands[1]->getAsTyped()->getBasicType())) + matrixOperands |= spv::CooperativeMatrixOperandsMatrixBSignedComponentsMask; + if (isTypeSignedInt(glslangOperands[2]->getAsTyped()->getBasicType())) + matrixOperands |= spv::CooperativeMatrixOperandsMatrixCSignedComponentsMask; + if (isTypeSignedInt(node->getBasicType())) + matrixOperands |= spv::CooperativeMatrixOperandsMatrixResultSignedComponentsMask; + + std::vector idImmOps; + idImmOps.push_back(spv::IdImmediate(true, operands[0])); + idImmOps.push_back(spv::IdImmediate(true, operands[1])); + idImmOps.push_back(spv::IdImmediate(true, operands[2])); + if (matrixOperands != 0) + idImmOps.push_back(spv::IdImmediate(false, matrixOperands)); + + result = builder.createOp(spv::OpCooperativeMatrixMulAddKHR, resultType(), idImmOps); } else #endif if (atomic) { @@ -4586,9 +4642,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeVectorType(spvType, type.getVectorSize()); } - if (type.isCoopMat()) { + if (type.isCoopMatNV()) { builder.addCapability(spv::CapabilityCooperativeMatrixNV); builder.addExtension(spv::E_SPV_NV_cooperative_matrix); + if (type.getBasicType() == glslang::EbtFloat16) builder.addCapability(spv::CapabilityFloat16); if (type.getBasicType() == glslang::EbtUint8 || @@ -4596,11 +4653,29 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty builder.addCapability(spv::CapabilityInt8); } - spv::Id scope = makeArraySizeId(*type.getTypeParameters(), 1); - spv::Id rows = makeArraySizeId(*type.getTypeParameters(), 2); - spv::Id cols = makeArraySizeId(*type.getTypeParameters(), 3); + spv::Id scope = makeArraySizeId(*type.getTypeParameters()->arraySizes, 1); + spv::Id rows = makeArraySizeId(*type.getTypeParameters()->arraySizes, 2); + spv::Id cols = makeArraySizeId(*type.getTypeParameters()->arraySizes, 3); + + spvType = builder.makeCooperativeMatrixTypeNV(spvType, scope, rows, cols); + } + + if (type.isCoopMatKHR()) { + builder.addCapability(spv::CapabilityCooperativeMatrixKHR); + builder.addExtension(spv::E_SPV_KHR_cooperative_matrix); + + if (type.getBasicType() == glslang::EbtFloat16) + builder.addCapability(spv::CapabilityFloat16); + if (type.getBasicType() == glslang::EbtUint8 || type.getBasicType() == glslang::EbtInt8) { + builder.addCapability(spv::CapabilityInt8); + } + + spv::Id scope = makeArraySizeId(*type.getTypeParameters()->arraySizes, 0); + spv::Id rows = makeArraySizeId(*type.getTypeParameters()->arraySizes, 1); + spv::Id cols = makeArraySizeId(*type.getTypeParameters()->arraySizes, 2); + spv::Id use = builder.makeUintConstant(type.getCoopMatKHRuse()); - spvType = builder.makeCooperativeMatrixType(spvType, scope, rows, cols); + spvType = builder.makeCooperativeMatrixTypeKHR(spvType, scope, rows, cols, use); } if (type.isArray()) { @@ -4951,7 +5026,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // This is not quite trivial, because of specialization constants. // Sometimes, a raw constant is turned into an Id, and sometimes // a specialization constant expression is. -spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arraySizes, int dim) +spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arraySizes, int dim, bool allowZero) { // First, see if this is sized with a node, meaning a specialization constant: glslang::TIntermTyped* specNode = arraySizes.getDimNode(dim); @@ -4965,7 +5040,10 @@ spv::Id TGlslangToSpvTraverser::makeArraySizeId(const glslang::TArraySizes& arra // Otherwise, need a compile-time (front end) size, get it: int size = arraySizes.getDimSize(dim); - assert(size > 0); + + if (!allowZero) + assert(size > 0); + return builder.makeUintConstant(size); } @@ -7287,7 +7365,9 @@ spv::Id TGlslangToSpvTraverser::createUnaryMatrixOperation(spv::Op op, OpDecorat // For converting integers where both the bitwidth and the signedness could // change, but only do the width change here. The caller is still responsible // for the signedness conversion. -spv::Id TGlslangToSpvTraverser::createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize) +// destType is the final type that will be converted to, but this function +// may only be doing part of that conversion. +spv::Id TGlslangToSpvTraverser::createIntWidthConversion(glslang::TOperator op, spv::Id operand, int vectorSize, spv::Id destType) { // Get the result type width, based on the type to convert to. int width = 32; @@ -7358,6 +7438,11 @@ spv::Id TGlslangToSpvTraverser::createIntWidthConversion(glslang::TOperator op, if (vectorSize > 0) type = builder.makeVectorType(type, vectorSize); + else if (builder.getOpCode(destType) == spv::OpTypeCooperativeMatrixKHR || + builder.getOpCode(destType) == spv::OpTypeCooperativeMatrixNV) { + + type = builder.makeCooperativeMatrixTypeWithSameShape(type, destType); + } return builder.createUnaryOp(convOp, type, operand); } @@ -7630,7 +7715,7 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvUint64ToInt16: case glslang::EOpConvUint64ToInt: // OpSConvert/OpUConvert + OpBitCast - operand = createIntWidthConversion(op, operand, vectorSize); + operand = createIntWidthConversion(op, operand, vectorSize, destType); if (builder.isInSpecConstCodeGenMode()) { // Build zero scalar or vector for OpIAdd. @@ -8963,7 +9048,7 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpSetMeshOutputsEXT: builder.createNoResultOp(spv::OpSetMeshOutputsEXT, operands); return 0; - case glslang::EOpCooperativeMatrixMulAdd: + case glslang::EOpCooperativeMatrixMulAddNV: opCode = spv::OpCooperativeMatrixMulAddNV; break; case glslang::EOpHitObjectTraceRayNV: diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index 4b2c4395ed..f8f50a9516 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -680,6 +680,7 @@ namespace spv { case spv::OperandKernelEnqueueFlags: case spv::OperandKernelProfilingInfo: case spv::OperandCapability: + case spv::OperandCooperativeMatrixOperands: ++word; break; diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 8b9ca13fac..eb8cb7a550 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -481,15 +481,41 @@ Id Builder::makeMatrixType(Id component, int cols, int rows) return type->getResultId(); } -Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols) +Id Builder::makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use) { // try to find it Instruction* type; - for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixNV].size(); ++t) { - type = groupedTypes[OpTypeCooperativeMatrixNV][t]; + for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixKHR].size(); ++t) { + type = groupedTypes[OpTypeCooperativeMatrixKHR][t]; if (type->getIdOperand(0) == component && type->getIdOperand(1) == scope && type->getIdOperand(2) == rows && + type->getIdOperand(3) == cols && + type->getIdOperand(4) == use) + return type->getResultId(); + } + + // not found, make it + type = new Instruction(getUniqueId(), NoType, OpTypeCooperativeMatrixKHR); + type->addIdOperand(component); + type->addIdOperand(scope); + type->addIdOperand(rows); + type->addIdOperand(cols); + type->addIdOperand(use); + groupedTypes[OpTypeCooperativeMatrixKHR].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + +Id Builder::makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols) +{ + // try to find it + Instruction* type; + for (int t = 0; t < (int)groupedTypes[OpTypeCooperativeMatrixNV].size(); ++t) { + type = groupedTypes[OpTypeCooperativeMatrixNV][t]; + if (type->getIdOperand(0) == component && type->getIdOperand(1) == scope && type->getIdOperand(2) == rows && type->getIdOperand(3) == cols) return type->getResultId(); } @@ -507,6 +533,17 @@ Id Builder::makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols) return type->getResultId(); } +Id Builder::makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType) +{ + Instruction* instr = module.getInstruction(otherType); + if (instr->getOpCode() == OpTypeCooperativeMatrixNV) { + return makeCooperativeMatrixTypeNV(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3)); + } else { + assert(instr->getOpCode() == OpTypeCooperativeMatrixKHR); + return makeCooperativeMatrixTypeKHR(component, instr->getIdOperand(1), instr->getIdOperand(2), instr->getIdOperand(3), instr->getIdOperand(4)); + } +} + Id Builder::makeGenericType(spv::Op opcode, std::vector& operands) { // try to find it @@ -1254,6 +1291,7 @@ int Builder::getNumTypeConstituents(Id typeId) const } case OpTypeStruct: return instr->getNumOperands(); + case OpTypeCooperativeMatrixKHR: case OpTypeCooperativeMatrixNV: // has only one constituent when used with OpCompositeConstruct. return 1; @@ -1303,6 +1341,7 @@ Id Builder::getContainedTypeId(Id typeId, int member) const case OpTypeMatrix: case OpTypeArray: case OpTypeRuntimeArray: + case OpTypeCooperativeMatrixKHR: case OpTypeCooperativeMatrixNV: return instr->getIdOperand(0); case OpTypePointer: @@ -1769,6 +1808,7 @@ Id Builder::makeCompositeConstant(Id typeId, const std::vector& members, boo case OpTypeVector: case OpTypeArray: case OpTypeMatrix: + case OpTypeCooperativeMatrixKHR: case OpTypeCooperativeMatrixNV: if (! specConstant) { Id existing = findCompositeConstant(typeClass, typeId, members); @@ -2405,7 +2445,24 @@ Id Builder::createArrayLength(Id base, unsigned int member) return length->getResultId(); } -Id Builder::createCooperativeMatrixLength(Id type) +Id Builder::createCooperativeMatrixLengthKHR(Id type) +{ + spv::Id intType = makeUintType(32); + + // Generate code for spec constants if in spec constant operation + // generation mode. + if (generatingOpCodeForSpecConst) { + return createSpecConstantOp(OpCooperativeMatrixLengthKHR, intType, std::vector(1, type), std::vector()); + } + + Instruction* length = new Instruction(getUniqueId(), intType, OpCooperativeMatrixLengthKHR); + length->addIdOperand(type); + buildPoint->addInstruction(std::unique_ptr(length)); + + return length->getResultId(); +} + +Id Builder::createCooperativeMatrixLengthNV(Id type) { spv::Id intType = makeUintType(32); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 70edf250da..b28b9a1a62 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -203,7 +203,9 @@ class Builder { Id makeImageType(Id sampledType, Dim, bool depth, bool arrayed, bool ms, unsigned sampled, ImageFormat format); Id makeSamplerType(); Id makeSampledImageType(Id imageType); - Id makeCooperativeMatrixType(Id component, Id scope, Id rows, Id cols); + Id makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id cols, Id use); + Id makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols); + Id makeCooperativeMatrixTypeWithSameShape(Id component, Id otherType); Id makeGenericType(spv::Op opcode, std::vector& operands); // SPIR-V NonSemantic Shader DebugInfo Instructions @@ -286,7 +288,10 @@ class Builder { #ifdef GLSLANG_WEB bool isCooperativeMatrixType(Id typeId)const { return false; } #else - bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixNV; } + bool isCooperativeMatrixType(Id typeId)const + { + return getTypeClass(typeId) == OpTypeCooperativeMatrixKHR || getTypeClass(typeId) == OpTypeCooperativeMatrixNV; + } #endif bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); } @@ -464,8 +469,10 @@ class Builder { // Create an OpArrayLength instruction Id createArrayLength(Id base, unsigned int member); + // Create an OpCooperativeMatrixLengthKHR instruction + Id createCooperativeMatrixLengthKHR(Id type); // Create an OpCooperativeMatrixLengthNV instruction - Id createCooperativeMatrixLength(Id type); + Id createCooperativeMatrixLengthNV(Id type); // Create an OpCompositeExtract instruction Id createCompositeExtract(Id composite, Id typeId, unsigned index); diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index b25f37e02a..b7f0053dd6 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -790,6 +790,21 @@ const char* MemoryAccessString(int mem) } } +const int CooperativeMatrixOperandsCeiling = 6; + +const char* CooperativeMatrixOperandsString(int op) +{ + switch (op) { + case CooperativeMatrixOperandsMatrixASignedComponentsShift: return "ASignedComponents"; + case CooperativeMatrixOperandsMatrixBSignedComponentsShift: return "BSignedComponents"; + case CooperativeMatrixOperandsMatrixCSignedComponentsShift: return "CSignedComponents"; + case CooperativeMatrixOperandsMatrixResultSignedComponentsShift: return "ResultSignedComponents"; + case CooperativeMatrixOperandsSaturatingAccumulationShift: return "SaturatingAccumulation"; + + default: return "Bad"; + } +} + const char* ScopeString(int mem) { switch (mem) { @@ -993,6 +1008,7 @@ const char* CapabilityString(int info) case CapabilityVariablePointers: return "VariablePointers"; case CapabilityCooperativeMatrixNV: return "CooperativeMatrixNV"; + case CapabilityCooperativeMatrixKHR: return "CooperativeMatrixKHR"; case CapabilityShaderSMBuiltinsNV: return "ShaderSMBuiltinsNV"; case CapabilityFragmentShaderSampleInterlockEXT: return "CapabilityFragmentShaderSampleInterlockEXT"; @@ -1473,6 +1489,11 @@ const char* OpcodeString(int op) case OpCooperativeMatrixStoreNV: return "OpCooperativeMatrixStoreNV"; case OpCooperativeMatrixMulAddNV: return "OpCooperativeMatrixMulAddNV"; case OpCooperativeMatrixLengthNV: return "OpCooperativeMatrixLengthNV"; + case OpTypeCooperativeMatrixKHR: return "OpTypeCooperativeMatrixKHR"; + case OpCooperativeMatrixLoadKHR: return "OpCooperativeMatrixLoadKHR"; + case OpCooperativeMatrixStoreKHR: return "OpCooperativeMatrixStoreKHR"; + case OpCooperativeMatrixMulAddKHR: return "OpCooperativeMatrixMulAddKHR"; + case OpCooperativeMatrixLengthKHR: return "OpCooperativeMatrixLengthKHR"; case OpDemoteToHelperInvocationEXT: return "OpDemoteToHelperInvocationEXT"; case OpIsHelperInvocationEXT: return "OpIsHelperInvocationEXT"; @@ -1536,6 +1557,7 @@ EnumParameters LoopControlParams[FunctionControlCeiling]; EnumParameters SelectionControlParams[SelectControlCeiling]; EnumParameters FunctionControlParams[FunctionControlCeiling]; EnumParameters MemoryAccessParams[MemoryAccessCeiling]; +EnumParameters CooperativeMatrixOperandsParams[CooperativeMatrixOperandsCeiling]; // Set up all the parameterizing descriptions of the opcodes, operands, etc. void Parameterize() @@ -1630,6 +1652,8 @@ void Parameterize() InstructionDesc[OpModuleProcessed].setResultAndType(false, false); InstructionDesc[OpTypeCooperativeMatrixNV].setResultAndType(true, false); InstructionDesc[OpCooperativeMatrixStoreNV].setResultAndType(false, false); + InstructionDesc[OpTypeCooperativeMatrixKHR].setResultAndType(true, false); + InstructionDesc[OpCooperativeMatrixStoreKHR].setResultAndType(false, false); InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false); InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false); @@ -1701,6 +1725,7 @@ void Parameterize() OperandClassParams[OperandKernelEnqueueFlags].set(0, KernelEnqueueFlagsString, nullptr); OperandClassParams[OperandKernelProfilingInfo].set(0, KernelProfilingInfoString, nullptr, true); OperandClassParams[OperandCapability].set(0, CapabilityString, nullptr); + OperandClassParams[OperandCooperativeMatrixOperands].set(CooperativeMatrixOperandsCeiling, CooperativeMatrixOperandsString, CooperativeMatrixOperandsParams, true); OperandClassParams[OperandOpcode].set(OpCodeMask + 1, OpcodeString, nullptr); // set name of operator, an initial set of style operands, and the description @@ -3093,6 +3118,34 @@ void Parameterize() InstructionDesc[OpCooperativeMatrixLengthNV].operands.push(OperandId, "'Type'"); + InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Component Type'"); + InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Scope'"); + InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Rows'"); + InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Columns'"); + InstructionDesc[OpTypeCooperativeMatrixKHR].operands.push(OperandId, "'Use'"); + + InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Memory Layout'"); + InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "'Stride'"); + InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandMemoryAccess, "'Memory Access'"); + InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandLiteralNumber, "", true); + InstructionDesc[OpCooperativeMatrixLoadKHR].operands.push(OperandId, "", true); + + InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Pointer'"); + InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Object'"); + InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Memory Layout'"); + InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "'Stride'"); + InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandMemoryAccess, "'Memory Access'"); + InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandLiteralNumber, "", true); + InstructionDesc[OpCooperativeMatrixStoreKHR].operands.push(OperandId, "", true); + + InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'A'"); + InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'B'"); + InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandId, "'C'"); + InstructionDesc[OpCooperativeMatrixMulAddKHR].operands.push(OperandCooperativeMatrixOperands, "'Cooperative Matrix Operands'", true); + + InstructionDesc[OpCooperativeMatrixLengthKHR].operands.push(OperandId, "'Type'"); + InstructionDesc[OpDemoteToHelperInvocationEXT].setResultAndType(false, false); InstructionDesc[OpReadClockKHR].operands.push(OperandScope, "'Scope'"); diff --git a/SPIRV/doc.h b/SPIRV/doc.h index 95aa5ce8ca..b60ad34018 100644 --- a/SPIRV/doc.h +++ b/SPIRV/doc.h @@ -156,6 +156,7 @@ enum OperandClass { OperandKernelEnqueueFlags, OperandKernelProfilingInfo, OperandCapability, + OperandCooperativeMatrixOperands, OperandOpcode, diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index f3fb899f6e..4fb721ef18 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1144,6 +1144,7 @@ enum Capability { CapabilityDotProduct = 6019, CapabilityDotProductKHR = 6019, CapabilityRayCullMaskKHR = 6020, + CapabilityCooperativeMatrixKHR = 6022, CapabilityBitInstructions = 6025, CapabilityGroupNonUniformRotateKHR = 6026, CapabilityAtomicFloat32AddEXT = 6033, @@ -1261,6 +1262,37 @@ enum PackedVectorFormat { PackedVectorFormatMax = 0x7fffffff, }; +enum CooperativeMatrixOperandsShift { + CooperativeMatrixOperandsMatrixASignedComponentsShift = 0, + CooperativeMatrixOperandsMatrixBSignedComponentsShift = 1, + CooperativeMatrixOperandsMatrixCSignedComponentsShift = 2, + CooperativeMatrixOperandsMatrixResultSignedComponentsShift = 3, + CooperativeMatrixOperandsSaturatingAccumulationShift = 4, + CooperativeMatrixOperandsMax = 0x7fffffff, +}; + +enum CooperativeMatrixOperandsMask { + CooperativeMatrixOperandsMaskNone = 0, + CooperativeMatrixOperandsMatrixASignedComponentsMask = 0x00000001, + CooperativeMatrixOperandsMatrixBSignedComponentsMask = 0x00000002, + CooperativeMatrixOperandsMatrixCSignedComponentsMask = 0x00000004, + CooperativeMatrixOperandsMatrixResultSignedComponentsMask = 0x00000008, + CooperativeMatrixOperandsSaturatingAccumulationMask = 0x00000010, +}; + +enum CooperativeMatrixLayout { + CooperativeMatrixLayoutCooperativeMatrixRowMajorKHR = 0, + CooperativeMatrixLayoutCooperativeMatrixColumnMajorKHR = 1, + CooperativeMatrixLayoutMax = 0x7fffffff, +}; + +enum CooperativeMatrixUse { + CooperativeMatrixUseMatrixAKHR = 0, + CooperativeMatrixUseMatrixBKHR = 1, + CooperativeMatrixUseMatrixAccumulatorKHR = 2, + CooperativeMatrixUseMax = 0x7fffffff, +}; + enum Op { OpNop = 0, OpUndef = 1, @@ -1634,6 +1666,11 @@ enum Op { OpUDotAccSatKHR = 4454, OpSUDotAccSat = 4455, OpSUDotAccSatKHR = 4455, + OpTypeCooperativeMatrixKHR = 4456, + OpCooperativeMatrixLoadKHR = 4457, + OpCooperativeMatrixStoreKHR = 4458, + OpCooperativeMatrixMulAddKHR = 4459, + OpCooperativeMatrixLengthKHR = 4460, OpTypeRayQueryKHR = 4472, OpRayQueryInitializeKHR = 4473, OpRayQueryTerminateKHR = 4474, @@ -2346,6 +2383,11 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpSDotAccSat: *hasResult = true; *hasResultType = true; break; case OpUDotAccSat: *hasResult = true; *hasResultType = true; break; case OpSUDotAccSat: *hasResult = true; *hasResultType = true; break; + case OpTypeCooperativeMatrixKHR: *hasResult = true; *hasResultType = false; break; + case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break; + case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break; case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; @@ -2722,6 +2764,10 @@ inline FragmentShadingRateMask operator|(FragmentShadingRateMask a, FragmentShad inline FragmentShadingRateMask operator&(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) & unsigned(b)); } inline FragmentShadingRateMask operator^(FragmentShadingRateMask a, FragmentShadingRateMask b) { return FragmentShadingRateMask(unsigned(a) ^ unsigned(b)); } inline FragmentShadingRateMask operator~(FragmentShadingRateMask a) { return FragmentShadingRateMask(~unsigned(a)); } +inline CooperativeMatrixOperandsMask operator|(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) | unsigned(b)); } +inline CooperativeMatrixOperandsMask operator&(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) & unsigned(b)); } +inline CooperativeMatrixOperandsMask operator^(CooperativeMatrixOperandsMask a, CooperativeMatrixOperandsMask b) { return CooperativeMatrixOperandsMask(unsigned(a) ^ unsigned(b)); } +inline CooperativeMatrixOperandsMask operator~(CooperativeMatrixOperandsMask a) { return CooperativeMatrixOperandsMask(~unsigned(a)); } } // end namespace spv diff --git a/Test/baseResults/spv.coopmatKHR.comp.out b/Test/baseResults/spv.coopmatKHR.comp.out new file mode 100644 index 0000000000..d72b0678aa --- /dev/null +++ b/Test/baseResults/spv.coopmatKHR.comp.out @@ -0,0 +1,402 @@ +spv.coopmatKHR.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 250 + + Capability Shader + Capability Float16 + Capability Int16 + Capability Int8 + Capability StorageUniformBufferBlock16 + Capability VulkanMemoryModelKHR + Capability PhysicalStorageBufferAddressesEXT + Capability CooperativeMatrixKHR + Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_cooperative_matrix" + Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_KHR_storage_buffer_storage_class" + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel PhysicalStorageBuffer64EXT VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 64 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_buffer_reference" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + SourceExtension "GL_KHR_cooperative_matrix" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 15 "f16(f161;" + Name 14 "m" + Name 22 "f32(f1;" + Name 21 "m" + Name 35 "m" + Name 53 "m2" + Name 57 "x" + Name 65 "tempArg" + Name 69 "Block" + MemberName 69(Block) 0 "y" + MemberName 69(Block) 1 "x" + Name 71 "block" + Name 80 "tempArg" + Name 85 "Block16" + MemberName 85(Block16) 0 "y" + MemberName 85(Block16) 1 "x" + MemberName 85(Block16) 2 "b" + Name 88 "Block" + MemberName 88(Block) 0 "y" + MemberName 88(Block) 1 "x" + Name 90 "block16" + Name 97 "tempArg" + Name 110 "D" + Name 114 "A" + Name 118 "B" + Name 120 "C" + Name 124 "l" + Name 128 "Y" + Name 129 "Z" + Name 132 "F" + Name 137 "a" + Name 141 "md1" + Name 152 "mC2" + Name 157 "tempArg" + Name 163 "tempArg" + Name 169 "p1" + Name 170 "param" + Name 173 "p2" + Name 174 "param" + Name 188 "tempArg" + Name 193 "shmatrix" + Name 197 "ms" + Name 204 "ms8A" + Name 208 "ms8B" + Name 212 "ms8C" + Name 227 "m16" + Name 233 "mC" + Name 234 "F" + Name 239 "S" + MemberName 239(S) 0 "a" + MemberName 239(S) 1 "b" + MemberName 239(S) 2 "c" + Name 244 "SC" + Name 249 "scm" + Decorate 67 ArrayStride 4 + Decorate 68 ArrayStride 4 + MemberDecorate 69(Block) 0 Offset 0 + MemberDecorate 69(Block) 1 Offset 4194304 + Decorate 69(Block) Block + Decorate 71(block) DescriptorSet 0 + Decorate 71(block) Binding 0 + Decorate 81 ArrayStride 2 + Decorate 83 ArrayStride 2 + MemberDecorate 85(Block16) 0 Offset 0 + MemberDecorate 85(Block16) 1 Offset 2097152 + MemberDecorate 85(Block16) 2 Offset 2097160 + Decorate 85(Block16) Block + Decorate 86 ArrayStride 4 + Decorate 87 ArrayStride 4 + MemberDecorate 88(Block) 0 Offset 0 + MemberDecorate 88(Block) 1 Offset 4194304 + Decorate 88(Block) Block + Decorate 90(block16) DescriptorSet 0 + Decorate 90(block16) Binding 0 + Decorate 128(Y) SpecId 0 + Decorate 232 BuiltIn WorkgroupSize + Decorate 234(F) SpecId 1 + Decorate 244(SC) SpecId 2 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 8 + 10: 7(int) Constant 2 + 11: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 10 + 12: TypePointer Function 11 + 13: TypeFunction 11 12(ptr) + 17: TypeFloat 32 + 18: TypeCooperativeMatrixKHR 17(float) 8 9 9 10 + 19: TypePointer Function 18 + 20: TypeFunction 18 19(ptr) + 32: 7(int) Constant 16 + 33: TypeCooperativeMatrixKHR 17(float) 8 32 9 10 + 34: TypePointer Function 33 + 36: 17(float) Constant 0 + 37: 33 ConstantComposite 36 + 46: 17(float) Constant 1073741824 + 51: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 10 + 52: TypePointer Function 51 + 56: TypePointer Function 17(float) + 58: TypeInt 32 1 + 59: 58(int) Constant 1 + 62: 58(int) Constant 0 + 66: 7(int) Constant 1048576 + 67: TypeArray 17(float) 66 + 68: TypeRuntimeArray 17(float) + 69(Block): TypeStruct 67 68 + 70: TypePointer StorageBuffer 69(Block) + 71(block): 70(ptr) Variable StorageBuffer + 72: 7(int) Constant 5 + 73: TypePointer StorageBuffer 17(float) + 75: 7(int) Constant 128 + 81: TypeArray 6(float16_t) 66 + 82: 7(int) Constant 1 + 83: TypeArray 6(float16_t) 82 + TypeForwardPointer 84 PhysicalStorageBufferEXT + 85(Block16): TypeStruct 81 83 84 + 86: TypeArray 17(float) 66 + 87: TypeRuntimeArray 17(float) + 88(Block): TypeStruct 86 87 + 84: TypePointer PhysicalStorageBufferEXT 88(Block) + 89: TypePointer StorageBuffer 85(Block16) + 90(block16): 89(ptr) Variable StorageBuffer + 91: TypePointer StorageBuffer 6(float16_t) + 98: 58(int) Constant 2 + 99: TypePointer StorageBuffer 84(ptr) + 102: TypePointer PhysicalStorageBufferEXT 17(float) + 111: 7(int) Constant 0 + 112: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 111 + 113: TypePointer Function 112 + 116: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 82 + 117: TypePointer Function 116 + 123: TypePointer Function 58(int) + 127: 58(int) Constant 8 + 128(Y): 58(int) SpecConstant 2 + 129(Z): 58(int) SpecConstantOp 132 127 128(Y) + 130: TypeCooperativeMatrixKHR 6(float16_t) 8 129(Z) 129(Z) 10 + 131: TypePointer Function 130 + 133:6(float16_t) Constant 0 + 134: 130 ConstantComposite 133 + 135: TypeArray 33 72 + 136: TypePointer Function 135 + 138: 58(int) Constant 3 + 139: 17(float) Constant 1065353216 + 145: 58(int) Constant 1234 + 149: TypeCooperativeMatrixKHR 6(float16_t) 8 129(Z) 9 10 + 150: TypeArray 149 8 + 151: TypePointer Private 150 + 152(mC2): 151(ptr) Variable Private + 153: TypePointer Private 149 + 177: 11 ConstantComposite 133 + 178: 18 ConstantComposite 36 + 182:6(float16_t) Constant 16384 + 185: 17(float) Constant 1082130432 + 189: TypeVector 7(int) 4 + 190: 7(int) Constant 32 + 191: TypeArray 189(ivec4) 190 + 192: TypePointer Workgroup 191 + 193(shmatrix): 192(ptr) Variable Workgroup + 194: TypePointer Workgroup 189(ivec4) + 201: TypeInt 8 1 + 202: TypeCooperativeMatrixKHR 201(int8_t) 8 9 9 111 + 203: TypePointer Function 202 + 206: TypeCooperativeMatrixKHR 201(int8_t) 8 9 9 82 + 207: TypePointer Function 206 + 210: TypeCooperativeMatrixKHR 201(int8_t) 8 9 9 10 + 211: TypePointer Function 210 + 222: 58(int) Constant 16 + 224: TypeInt 16 1 + 225: TypeCooperativeMatrixKHR 224(int16_t) 8 9 9 111 + 226: TypePointer Function 225 + 230: TypeVector 7(int) 3 + 231: 7(int) Constant 64 + 232: 230(ivec3) ConstantComposite 231 82 82 + 233(mC): 153(ptr) Variable Private + 234(F): 17(float) SpecConstant 1077936128 + 235: TypeCooperativeMatrixKHR 17(float) 8 129(Z) 9 10 + 236: 235 ConstantComposite 36 + 237:6(float16_t) Constant 15360 + 238: 11 ConstantComposite 237 + 239(S): TypeStruct 58(int) 58(int) 58(int) + 240: 58(int) Constant 12 + 241: 58(int) Constant 23 + 242: 58(int) Constant 34 + 243: 239(S) ConstantComposite 240 241 242 + 244(SC): 58(int) SpecConstant 1 + 245: TypeCooperativeMatrixKHR 6(float16_t) 8 244(SC) 244(SC) 10 + 246: TypeArray 245 244(SC) + 247: TypeArray 246 244(SC) + 248: TypePointer Private 247 + 249(scm): 248(ptr) Variable Private + 4(main): 2 Function None 3 + 5: Label + 35(m): 34(ptr) Variable Function + 53(m2): 52(ptr) Variable Function + 57(x): 56(ptr) Variable Function + 65(tempArg): 34(ptr) Variable Function + 80(tempArg): 52(ptr) Variable Function + 97(tempArg): 34(ptr) Variable Function + 110(D): 34(ptr) Variable Function + 114(A): 113(ptr) Variable Function + 118(B): 117(ptr) Variable Function + 120(C): 34(ptr) Variable Function + 124(l): 123(ptr) Variable Function + 132(F): 131(ptr) Variable Function + 137(a): 136(ptr) Variable Function + 141(md1): 56(ptr) Variable Function + 157(tempArg): 34(ptr) Variable Function + 163(tempArg): 52(ptr) Variable Function + 169(p1): 12(ptr) Variable Function + 170(param): 12(ptr) Variable Function + 173(p2): 19(ptr) Variable Function + 174(param): 19(ptr) Variable Function + 188(tempArg): 52(ptr) Variable Function + 197(ms): 52(ptr) Variable Function + 204(ms8A): 203(ptr) Variable Function + 208(ms8B): 207(ptr) Variable Function + 212(ms8C): 211(ptr) Variable Function + 227(m16): 226(ptr) Variable Function + Store 35(m) 37 + 38: 33 Load 35(m) + 39: 33 Load 35(m) + 40: 33 FAdd 38 39 + Store 35(m) 40 + 41: 33 Load 35(m) + 42: 33 Load 35(m) + 43: 33 FSub 41 42 + Store 35(m) 43 + 44: 33 Load 35(m) + 45: 33 FNegate 44 + Store 35(m) 45 + 47: 33 Load 35(m) + 48: 33 MatrixTimesScalar 47 46 + Store 35(m) 48 + 49: 33 Load 35(m) + 50: 33 MatrixTimesScalar 49 46 + Store 35(m) 50 + 54: 33 Load 35(m) + 55: 51 FConvert 54 + Store 53(m2) 55 + 60: 56(ptr) AccessChain 35(m) 59 + 61: 17(float) Load 60 + Store 57(x) 61 + 63: 17(float) Load 57(x) + 64: 56(ptr) AccessChain 35(m) 62 + Store 64 63 + 74: 73(ptr) AccessChain 71(block) 59 32 + 76: 33 CooperativeMatrixLoadKHR 74 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 65(tempArg) 76 + 77: 33 Load 65(tempArg) + Store 35(m) 77 + 78: 33 Load 35(m) + 79: 73(ptr) AccessChain 71(block) 59 32 + CooperativeMatrixStoreKHR 79 78 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 92: 91(ptr) AccessChain 90(block16) 59 32 + 93: 51 CooperativeMatrixLoadKHR 92 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 80(tempArg) 93 + 94: 51 Load 80(tempArg) + Store 53(m2) 94 + 95: 51 Load 53(m2) + 96: 91(ptr) AccessChain 90(block16) 59 32 + CooperativeMatrixStoreKHR 96 95 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 100: 99(ptr) AccessChain 90(block16) 98 + 101: 84(ptr) Load 100 MakePointerVisibleKHR NonPrivatePointerKHR 72 + 103: 102(ptr) AccessChain 101 59 32 + 104: 33 CooperativeMatrixLoadKHR 103 62 75 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 72 + Store 97(tempArg) 104 + 105: 33 Load 97(tempArg) + Store 35(m) 105 + 106: 33 Load 35(m) + 107: 99(ptr) AccessChain 90(block16) 98 + 108: 84(ptr) Load 107 MakePointerVisibleKHR NonPrivatePointerKHR 72 + 109: 102(ptr) AccessChain 108 59 32 + CooperativeMatrixStoreKHR 109 106 62 75 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 72 + 115: 112 Load 114(A) + 119: 116 Load 118(B) + 121: 33 Load 120(C) + 122: 33 CooperativeMatrixMulAddKHR 115 119 121 + Store 110(D) 122 + 125: 7(int) CooperativeMatrixLengthKHR 33 + 126: 58(int) Bitcast 125 + Store 124(l) 126 + Store 132(F) 134 + 140: 56(ptr) AccessChain 137(a) 138 62 + Store 140 139 + Store 141(md1) 36 + 142: 33 Load 35(m) + 143: 33 Load 35(m) + 144: 33 FAdd 143 142 + Store 35(m) 144 + 146: 17(float) CompositeExtract 144 1234 + 147: 17(float) Load 141(md1) + 148: 17(float) FAdd 147 146 + Store 141(md1) 148 + 154: 153(ptr) AccessChain 152(mC2) 98 + 155: 149 Load 154 + 156: 153(ptr) AccessChain 152(mC2) 59 + Store 156 155 + 158: 73(ptr) AccessChain 71(block) 62 32 + 159: 33 CooperativeMatrixLoadKHR 158 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 157(tempArg) 159 + 160: 33 Load 157(tempArg) + Store 35(m) 160 + 161: 33 Load 35(m) + 162: 73(ptr) AccessChain 71(block) 62 32 + CooperativeMatrixStoreKHR 162 161 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 164: 91(ptr) AccessChain 90(block16) 62 32 + 165: 51 CooperativeMatrixLoadKHR 164 62 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 163(tempArg) 165 + 166: 51 Load 163(tempArg) + Store 53(m2) 166 + 167: 51 Load 53(m2) + 168: 91(ptr) AccessChain 90(block16) 62 32 + CooperativeMatrixStoreKHR 168 167 62 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 171: 11 Load 169(p1) + Store 170(param) 171 + 172: 11 FunctionCall 15(f16(f161;) 170(param) + Store 169(p1) 172 + 175: 18 Load 173(p2) + Store 174(param) 175 + 176: 18 FunctionCall 22(f32(f1;) 174(param) + Store 173(p2) 176 + Store 169(p1) 177 + Store 173(p2) 178 + 179: 11 Load 169(p1) + 180: 11 Load 169(p1) + 181: 11 FDiv 180 179 + Store 169(p1) 181 + 183: 11 Load 169(p1) + 184: 11 MatrixTimesScalar 183 182 + Store 169(p1) 184 + 186: 18 Load 173(p2) + 187: 18 MatrixTimesScalar 186 185 + Store 173(p2) 187 + 195: 194(ptr) AccessChain 193(shmatrix) 82 + 196: 51 CooperativeMatrixLoadKHR 195 62 10 MakePointerVisibleKHR NonPrivatePointerKHR 10 + Store 188(tempArg) 196 + 198: 51 Load 188(tempArg) + Store 197(ms) 198 + 199: 51 Load 197(ms) + 200: 194(ptr) AccessChain 193(shmatrix) 82 + CooperativeMatrixStoreKHR 200 199 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 + 205: 202 Load 204(ms8A) + 209: 206 Load 208(ms8B) + 213: 210 Load 212(ms8C) + 214: 210 CooperativeMatrixMulAddKHR 205 209 213 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents + 215: 202 Load 204(ms8A) + 216: 206 Load 208(ms8B) + 217: 210 Load 212(ms8C) + 218: 210 CooperativeMatrixMulAddKHR 215 216 217 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents + 219: 202 Load 204(ms8A) + 220: 206 Load 208(ms8B) + 221: 210 Load 212(ms8C) + 223: 210 CooperativeMatrixMulAddKHR 219 220 221 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents SaturatingAccumulation + 228: 225 Load 227(m16) + 229: 194(ptr) AccessChain 193(shmatrix) 82 + CooperativeMatrixStoreKHR 229 228 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 + Return + FunctionEnd + 15(f16(f161;): 11 Function None 13 + 14(m): 12(ptr) FunctionParameter + 16: Label + 24: 11 Load 14(m) + 25: 11 FNegate 24 + ReturnValue 25 + FunctionEnd + 22(f32(f1;): 18 Function None 20 + 21(m): 19(ptr) FunctionParameter + 23: Label + 28: 18 Load 21(m) + 29: 18 FNegate 28 + ReturnValue 29 + FunctionEnd diff --git a/Test/baseResults/spv.coopmatKHR_Error.comp.out b/Test/baseResults/spv.coopmatKHR_Error.comp.out new file mode 100644 index 0000000000..82c302bf9d --- /dev/null +++ b/Test/baseResults/spv.coopmatKHR_Error.comp.out @@ -0,0 +1,38 @@ +spv.coopmatKHR_Error.comp +ERROR: 0:8: 'ftemplate16' : unexpected type parameters +ERROR: 0:10: '' : coopmat missing type parameters +ERROR: 0:10: 'fnoparams' : unexpected number type parameters +ERROR: 0:17: 'void' : coopmat invalid basic type +ERROR: 0:17: 'fbadtype' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type +ERROR: 0:17: 'fbadtype' : illegal use of type 'void' +ERROR: 0:18: '' : type parameter must be a constant integer expression +ERROR: 0:18: 'void' : coopmat invalid basic type +ERROR: 0:18: '' : coopmat incorrect number of type parameters +ERROR: 0:18: 'fbadtype2' : unexpected number type parameters +ERROR: 0:18: 'fbadtype2' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type +ERROR: 0:18: 'fbadtype2' : illegal use of type 'void' +ERROR: 0:19: 'void' : coopmat invalid basic type +ERROR: 0:19: '' : coopmat incorrect number of type parameters +ERROR: 0:19: 'fbadtype3' : unexpected number type parameters +ERROR: 0:19: 'fbadtype3' : expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type +ERROR: 0:19: 'fbadtype3' : illegal use of type 'void' +ERROR: 0:21: '' : coopmat incorrect number of type parameters +ERROR: 0:25: '' : type parameter must be a constant integer expression +ERROR: 0:29: '' : coopmat incorrect number of type parameters +ERROR: 0:29: 'Cooperative matrix types must not be used in shared memory' : qualifier +ERROR: 0:32: 'bufmat' : member of block cannot be or contain a cooperative matrix type +ERROR: 0:41: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float' +ERROR: 0:42: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float' +ERROR: 0:47: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 16, 8, 0> float16_t' +ERROR: 0:53: 'assign' : cannot convert from ' temp coopmat<3, 8, 1, 0> float16_t' to ' temp coopmat<3, 8, 1, 0> float16_t' +ERROR: 0:56: 'constructor' : too many arguments +ERROR: 0:56: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float16_t' +ERROR: 0:60: 'constructor' : Cooperative matrix constructor argument must be scalar or cooperative matrix +ERROR: 0:60: '=' : cannot convert from ' const float' to ' temp coopmat<3, 4, 4, 0> float' +ERROR: 0:63: 'expression' : left of '[' is not of type array, matrix, or vector +ERROR: 0:66: '.' : cannot apply to a cooperative matrix type: x +ERROR: 0:68: 'transpose' : no matching overloaded function found +ERROR: 33 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.coopmatKHR_arithmetic.comp.out b/Test/baseResults/spv.coopmatKHR_arithmetic.comp.out new file mode 100644 index 0000000000..2acc002d4d --- /dev/null +++ b/Test/baseResults/spv.coopmatKHR_arithmetic.comp.out @@ -0,0 +1,248 @@ +spv.coopmatKHR_arithmetic.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 196 + + Capability Shader + Capability Float16 + Capability Int8 + Capability VulkanMemoryModelKHR + Capability CooperativeMatrixKHR + Extension "SPV_KHR_cooperative_matrix" + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 64 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + SourceExtension "GL_KHR_cooperative_matrix" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 13 "f" + Name 48 "f16" + Name 82 "u32" + Name 117 "u8" + Name 152 "i8" + Decorate 195 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 8 + 10: 7(int) Constant 0 + 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 + 12: TypePointer Function 11 + 39: 6(float) Constant 1073741824 + 45: TypeFloat 16 + 46: TypeCooperativeMatrixKHR 45(float16_t) 8 9 9 10 + 47: TypePointer Function 46 + 74:45(float16_t) Constant 16384 + 80: TypeCooperativeMatrixKHR 7(int) 8 9 9 10 + 81: TypePointer Function 80 + 108: 7(int) Constant 2 + 114: TypeInt 8 0 + 115: TypeCooperativeMatrixKHR 114(int8_t) 8 9 9 10 + 116: TypePointer Function 115 + 143: 114(int8_t) Constant 2 + 149: TypeInt 8 1 + 150: TypeCooperativeMatrixKHR 149(int8_t) 8 9 9 10 + 151: TypePointer Function 150 + 178: 149(int8_t) Constant 2 + 192: TypeVector 7(int) 3 + 193: 7(int) Constant 64 + 194: 7(int) Constant 1 + 195: 192(ivec3) ConstantComposite 193 194 194 + 4(main): 2 Function None 3 + 5: Label + 13(f): 12(ptr) Variable Function + 48(f16): 47(ptr) Variable Function + 82(u32): 81(ptr) Variable Function + 117(u8): 116(ptr) Variable Function + 152(i8): 151(ptr) Variable Function + 14: 11 Load 13(f) + 15: 11 Load 13(f) + 16: 11 FAdd 14 15 + 17: 11 Load 13(f) + 18: 11 Load 13(f) + 19: 11 FSub 17 18 + 20: 11 Load 13(f) + 21: 11 Load 13(f) + 22: 11 FMul 20 21 + 23: 11 Load 13(f) + 24: 11 Load 13(f) + 25: 11 FDiv 23 24 + 26: 11 Load 13(f) + 27: 11 Load 13(f) + 28: 11 FAdd 27 26 + Store 13(f) 28 + 29: 11 Load 13(f) + 30: 11 Load 13(f) + 31: 11 FSub 30 29 + Store 13(f) 31 + 32: 11 Load 13(f) + 33: 11 Load 13(f) + 34: 11 FMul 33 32 + Store 13(f) 34 + 35: 11 Load 13(f) + 36: 11 Load 13(f) + 37: 11 FDiv 36 35 + Store 13(f) 37 + 38: 11 Load 13(f) + 40: 11 MatrixTimesScalar 38 39 + 41: 11 Load 13(f) + 42: 11 MatrixTimesScalar 41 39 + 43: 11 Load 13(f) + 44: 11 MatrixTimesScalar 43 39 + Store 13(f) 44 + 49: 46 Load 48(f16) + 50: 46 Load 48(f16) + 51: 46 FAdd 49 50 + 52: 46 Load 48(f16) + 53: 46 Load 48(f16) + 54: 46 FSub 52 53 + 55: 46 Load 48(f16) + 56: 46 Load 48(f16) + 57: 46 FMul 55 56 + 58: 46 Load 48(f16) + 59: 46 Load 48(f16) + 60: 46 FDiv 58 59 + 61: 46 Load 48(f16) + 62: 46 Load 48(f16) + 63: 46 FAdd 62 61 + Store 48(f16) 63 + 64: 46 Load 48(f16) + 65: 46 Load 48(f16) + 66: 46 FSub 65 64 + Store 48(f16) 66 + 67: 46 Load 48(f16) + 68: 46 Load 48(f16) + 69: 46 FMul 68 67 + Store 48(f16) 69 + 70: 46 Load 48(f16) + 71: 46 Load 48(f16) + 72: 46 FDiv 71 70 + Store 48(f16) 72 + 73: 46 Load 48(f16) + 75: 46 MatrixTimesScalar 73 74 + 76: 46 Load 48(f16) + 77: 46 MatrixTimesScalar 76 74 + 78: 46 Load 48(f16) + 79: 46 MatrixTimesScalar 78 74 + Store 48(f16) 79 + 83: 80 Load 82(u32) + 84: 80 Load 82(u32) + 85: 80 IAdd 83 84 + 86: 80 Load 82(u32) + 87: 80 Load 82(u32) + 88: 80 ISub 86 87 + 89: 80 Load 82(u32) + 90: 80 Load 82(u32) + 91: 80 IMul 89 90 + 92: 80 Load 82(u32) + 93: 80 Load 82(u32) + 94: 80 UDiv 92 93 + 95: 80 Load 82(u32) + 96: 80 Load 82(u32) + 97: 80 IAdd 96 95 + Store 82(u32) 97 + 98: 80 Load 82(u32) + 99: 80 Load 82(u32) + 100: 80 ISub 99 98 + Store 82(u32) 100 + 101: 80 Load 82(u32) + 102: 80 Load 82(u32) + 103: 80 IMul 102 101 + Store 82(u32) 103 + 104: 80 Load 82(u32) + 105: 80 Load 82(u32) + 106: 80 UDiv 105 104 + Store 82(u32) 106 + 107: 80 Load 82(u32) + 109: 80 MatrixTimesScalar 107 108 + 110: 80 Load 82(u32) + 111: 80 MatrixTimesScalar 110 108 + 112: 80 Load 82(u32) + 113: 80 MatrixTimesScalar 112 108 + Store 82(u32) 113 + 118: 115 Load 117(u8) + 119: 115 Load 117(u8) + 120: 115 IAdd 118 119 + 121: 115 Load 117(u8) + 122: 115 Load 117(u8) + 123: 115 ISub 121 122 + 124: 115 Load 117(u8) + 125: 115 Load 117(u8) + 126: 115 IMul 124 125 + 127: 115 Load 117(u8) + 128: 115 Load 117(u8) + 129: 115 UDiv 127 128 + 130: 115 Load 117(u8) + 131: 115 Load 117(u8) + 132: 115 IAdd 131 130 + Store 117(u8) 132 + 133: 115 Load 117(u8) + 134: 115 Load 117(u8) + 135: 115 ISub 134 133 + Store 117(u8) 135 + 136: 115 Load 117(u8) + 137: 115 Load 117(u8) + 138: 115 IMul 137 136 + Store 117(u8) 138 + 139: 115 Load 117(u8) + 140: 115 Load 117(u8) + 141: 115 UDiv 140 139 + Store 117(u8) 141 + 142: 115 Load 117(u8) + 144: 115 MatrixTimesScalar 142 143 + 145: 115 Load 117(u8) + 146: 115 MatrixTimesScalar 145 143 + 147: 115 Load 117(u8) + 148: 115 MatrixTimesScalar 147 143 + Store 117(u8) 148 + 153: 150 Load 152(i8) + 154: 150 Load 152(i8) + 155: 150 IAdd 153 154 + 156: 150 Load 152(i8) + 157: 150 Load 152(i8) + 158: 150 ISub 156 157 + 159: 150 Load 152(i8) + 160: 150 Load 152(i8) + 161: 150 IMul 159 160 + 162: 150 Load 152(i8) + 163: 150 Load 152(i8) + 164: 150 SDiv 162 163 + 165: 150 Load 152(i8) + 166: 150 Load 152(i8) + 167: 150 IAdd 166 165 + Store 152(i8) 167 + 168: 150 Load 152(i8) + 169: 150 Load 152(i8) + 170: 150 ISub 169 168 + Store 152(i8) 170 + 171: 150 Load 152(i8) + 172: 150 Load 152(i8) + 173: 150 IMul 172 171 + Store 152(i8) 173 + 174: 150 Load 152(i8) + 175: 150 Load 152(i8) + 176: 150 SDiv 175 174 + Store 152(i8) 176 + 177: 150 Load 152(i8) + 179: 150 MatrixTimesScalar 177 178 + 180: 150 Load 152(i8) + 181: 150 MatrixTimesScalar 180 178 + 182: 150 Load 152(i8) + 183: 150 MatrixTimesScalar 182 178 + Store 152(i8) 183 + 184: 11 Load 13(f) + 185: 11 FNegate 184 + 186: 46 Load 48(f16) + 187: 46 FNegate 186 + 188: 150 Load 152(i8) + 189: 150 SNegate 188 + 190: 115 Load 117(u8) + 191: 115 SNegate 190 + Return + FunctionEnd diff --git a/Test/baseResults/spv.coopmatKHR_arithmeticError.comp.out b/Test/baseResults/spv.coopmatKHR_arithmeticError.comp.out new file mode 100644 index 0000000000..9bcdfb3547 --- /dev/null +++ b/Test/baseResults/spv.coopmatKHR_arithmeticError.comp.out @@ -0,0 +1,64 @@ +spv.coopmatKHR_arithmeticError.comp +ERROR: 0:21: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion) +ERROR: 0:22: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion) +ERROR: 0:23: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' const float' (or there is no acceptable conversion) +ERROR: 0:24: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion) +ERROR: 0:25: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion) +ERROR: 0:26: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' const float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float' (or there is no acceptable conversion) +ERROR: 0:27: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:28: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:29: 'assign' : cannot convert from ' const float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:31: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) +ERROR: 0:32: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) +ERROR: 0:33: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) +ERROR: 0:34: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 0> float16_t' (or there is no acceptable conversion) +ERROR: 0:35: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:36: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:37: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:38: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> float16_t' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:40: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) +ERROR: 0:41: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) +ERROR: 0:42: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) +ERROR: 0:43: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 8, 8, 1> float' (or there is no acceptable conversion) +ERROR: 0:44: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:45: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:46: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:47: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 1> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:49: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) +ERROR: 0:50: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) +ERROR: 0:51: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) +ERROR: 0:52: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> float' and a right operand of type ' temp coopmat<3, 16, 8, 0> float' (or there is no acceptable conversion) +ERROR: 0:53: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:54: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:55: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:56: 'assign' : cannot convert from ' temp coopmat<3, 16, 8, 0> float' to ' temp coopmat<3, 8, 8, 0> float' +ERROR: 0:58: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) +ERROR: 0:59: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) +ERROR: 0:60: '*' : wrong operand types: no operation '*' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) +ERROR: 0:61: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' temp coopmat<3, 8, 8, 0> int8_t' (or there is no acceptable conversion) +ERROR: 0:62: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' +ERROR: 0:63: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' +ERROR: 0:64: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' +ERROR: 0:65: 'assign' : cannot convert from ' temp coopmat<3, 8, 8, 0> int8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' +ERROR: 0:67: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion) +ERROR: 0:68: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion) +ERROR: 0:69: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> uint8_t' and a right operand of type ' const uint8_t' (or there is no acceptable conversion) +ERROR: 0:70: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' +ERROR: 0:71: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' +ERROR: 0:72: 'assign' : cannot convert from ' const uint8_t' to ' temp coopmat<3, 8, 8, 0> uint8_t' +ERROR: 0:74: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion) +ERROR: 0:75: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion) +ERROR: 0:76: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int8_t' and a right operand of type ' const int8_t' (or there is no acceptable conversion) +ERROR: 0:77: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t' +ERROR: 0:78: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t' +ERROR: 0:79: 'assign' : cannot convert from ' const int8_t' to ' temp coopmat<3, 8, 8, 0> int8_t' +ERROR: 0:81: '+' : wrong operand types: no operation '+' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion) +ERROR: 0:82: '-' : wrong operand types: no operation '-' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion) +ERROR: 0:83: '/' : wrong operand types: no operation '/' exists that takes a left-hand operand of type ' temp coopmat<3, 8, 8, 0> int' and a right operand of type ' const int' (or there is no acceptable conversion) +ERROR: 0:84: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int' +ERROR: 0:85: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int' +ERROR: 0:86: 'assign' : cannot convert from ' const int' to ' temp coopmat<3, 8, 8, 0> int' +ERROR: 59 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.coopmatKHR_constructor.comp.out b/Test/baseResults/spv.coopmatKHR_constructor.comp.out new file mode 100644 index 0000000000..0c9923b9ab --- /dev/null +++ b/Test/baseResults/spv.coopmatKHR_constructor.comp.out @@ -0,0 +1,632 @@ +spv.coopmatKHR_constructor.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 481 + + Capability Shader + Capability Float16 + Capability Int16 + Capability Int8 + Capability VulkanMemoryModelKHR + Capability CooperativeMatrixKHR + Extension "SPV_KHR_cooperative_matrix" + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 64 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + SourceExtension "GL_KHR_cooperative_matrix" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 154 "v" + Name 158 "v" + Name 164 "v" + Name 170 "v" + Name 176 "v" + Name 182 "v" + Name 188 "v" + Name 194 "v" + Name 199 "v" + Name 204 "v" + Name 207 "v" + Name 212 "v" + Name 217 "v" + Name 222 "v" + Name 227 "v" + Name 232 "v" + Name 237 "v" + Name 242 "v" + Name 247 "v" + Name 250 "v" + Name 255 "v" + Name 260 "v" + Name 265 "v" + Name 271 "v" + Name 277 "v" + Name 282 "v" + Name 287 "v" + Name 292 "v" + Name 295 "v" + Name 300 "v" + Name 306 "v" + Name 311 "v" + Name 317 "v" + Name 322 "v" + Name 327 "v" + Name 332 "v" + Name 337 "v" + Name 340 "v" + Name 346 "v" + Name 352 "v" + Name 357 "v" + Name 362 "v" + Name 367 "v" + Name 372 "v" + Name 378 "v" + Name 384 "v" + Name 387 "v" + Name 392 "v" + Name 397 "v" + Name 402 "v" + Name 407 "v" + Name 413 "v" + Name 418 "v" + Name 424 "v" + Name 429 "v" + Name 432 "v" + Name 437 "v" + Name 442 "v" + Name 447 "v" + Name 453 "v" + Name 459 "v" + Name 464 "v" + Name 469 "v" + Name 474 "v" + Decorate 480 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 8 + 10: 7(int) Constant 0 + 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 + 12: 6(float) Constant 1065353216 + 13: 11 ConstantComposite 12 + 14: 6(float) Constant 1073741824 + 15: 11 ConstantComposite 14 + 16: 6(float) Constant 1077936128 + 17: 11 ConstantComposite 16 + 18: 6(float) Constant 1082130432 + 19: 11 ConstantComposite 18 + 20: 6(float) Constant 1084227584 + 21: 11 ConstantComposite 20 + 22: 6(float) Constant 1086324736 + 23: 11 ConstantComposite 22 + 24: 6(float) Constant 1088421888 + 25: 11 ConstantComposite 24 + 26: 6(float) Constant 1090519040 + 27: 11 ConstantComposite 26 + 28: TypeFloat 16 + 29: TypeCooperativeMatrixKHR 28(float16_t) 8 9 9 10 + 30:28(float16_t) Constant 18816 + 31: 29 ConstantComposite 30 + 32:28(float16_t) Constant 18944 + 33: 29 ConstantComposite 32 + 34:28(float16_t) Constant 19072 + 35: 29 ConstantComposite 34 + 36:28(float16_t) Constant 19200 + 37: 29 ConstantComposite 36 + 38:28(float16_t) Constant 19328 + 39: 29 ConstantComposite 38 + 40:28(float16_t) Constant 19456 + 41: 29 ConstantComposite 40 + 42:28(float16_t) Constant 19520 + 43: 29 ConstantComposite 42 + 44:28(float16_t) Constant 19584 + 45: 29 ConstantComposite 44 + 46: TypeCooperativeMatrixKHR 7(int) 8 9 9 10 + 47: 7(int) Constant 21 + 48: 46 ConstantComposite 47 + 49: 7(int) Constant 22 + 50: 46 ConstantComposite 49 + 51: 7(int) Constant 23 + 52: 46 ConstantComposite 51 + 53: 7(int) Constant 24 + 54: 46 ConstantComposite 53 + 55: 7(int) Constant 25 + 56: 46 ConstantComposite 55 + 57: 7(int) Constant 26 + 58: 46 ConstantComposite 57 + 59: 7(int) Constant 27 + 60: 46 ConstantComposite 59 + 61: 7(int) Constant 28 + 62: 46 ConstantComposite 61 + 63: TypeInt 16 0 + 64: TypeCooperativeMatrixKHR 63(int16_t) 8 9 9 10 + 65: 63(int16_t) Constant 31 + 66: 64 ConstantComposite 65 + 67: 63(int16_t) Constant 32 + 68: 64 ConstantComposite 67 + 69: 63(int16_t) Constant 33 + 70: 64 ConstantComposite 69 + 71: 63(int16_t) Constant 34 + 72: 64 ConstantComposite 71 + 73: 63(int16_t) Constant 35 + 74: 64 ConstantComposite 73 + 75: 63(int16_t) Constant 36 + 76: 64 ConstantComposite 75 + 77: 63(int16_t) Constant 37 + 78: 64 ConstantComposite 77 + 79: 63(int16_t) Constant 38 + 80: 64 ConstantComposite 79 + 81: TypeInt 8 0 + 82: TypeCooperativeMatrixKHR 81(int8_t) 8 9 9 10 + 83: 81(int8_t) Constant 41 + 84: 82 ConstantComposite 83 + 85: 81(int8_t) Constant 42 + 86: 82 ConstantComposite 85 + 87: 81(int8_t) Constant 43 + 88: 82 ConstantComposite 87 + 89: 81(int8_t) Constant 44 + 90: 82 ConstantComposite 89 + 91: 81(int8_t) Constant 45 + 92: 82 ConstantComposite 91 + 93: 81(int8_t) Constant 46 + 94: 82 ConstantComposite 93 + 95: 81(int8_t) Constant 47 + 96: 82 ConstantComposite 95 + 97: 81(int8_t) Constant 48 + 98: 82 ConstantComposite 97 + 99: TypeInt 32 1 + 100: TypeCooperativeMatrixKHR 99(int) 8 9 9 10 + 101: 99(int) Constant 51 + 102: 100 ConstantComposite 101 + 103: 99(int) Constant 52 + 104: 100 ConstantComposite 103 + 105: 99(int) Constant 53 + 106: 100 ConstantComposite 105 + 107: 99(int) Constant 54 + 108: 100 ConstantComposite 107 + 109: 99(int) Constant 55 + 110: 100 ConstantComposite 109 + 111: 99(int) Constant 56 + 112: 100 ConstantComposite 111 + 113: 99(int) Constant 57 + 114: 100 ConstantComposite 113 + 115: 99(int) Constant 58 + 116: 100 ConstantComposite 115 + 117: TypeInt 16 1 + 118: TypeCooperativeMatrixKHR 117(int16_t) 8 9 9 10 + 119:117(int16_t) Constant 61 + 120: 118 ConstantComposite 119 + 121:117(int16_t) Constant 62 + 122: 118 ConstantComposite 121 + 123:117(int16_t) Constant 63 + 124: 118 ConstantComposite 123 + 125:117(int16_t) Constant 64 + 126: 118 ConstantComposite 125 + 127:117(int16_t) Constant 65 + 128: 118 ConstantComposite 127 + 129:117(int16_t) Constant 66 + 130: 118 ConstantComposite 129 + 131:117(int16_t) Constant 67 + 132: 118 ConstantComposite 131 + 133:117(int16_t) Constant 68 + 134: 118 ConstantComposite 133 + 135: TypeInt 8 1 + 136: TypeCooperativeMatrixKHR 135(int8_t) 8 9 9 10 + 137: 135(int8_t) Constant 71 + 138: 136 ConstantComposite 137 + 139: 135(int8_t) Constant 72 + 140: 136 ConstantComposite 139 + 141: 135(int8_t) Constant 73 + 142: 136 ConstantComposite 141 + 143: 135(int8_t) Constant 74 + 144: 136 ConstantComposite 143 + 145: 135(int8_t) Constant 75 + 146: 136 ConstantComposite 145 + 147: 135(int8_t) Constant 76 + 148: 136 ConstantComposite 147 + 149: 135(int8_t) Constant 77 + 150: 136 ConstantComposite 149 + 151: 135(int8_t) Constant 78 + 152: 136 ConstantComposite 151 + 153: TypePointer Function 11 + 155: 6(float) Constant 1120534528 + 156: 11 ConstantComposite 155 + 157: TypePointer Function 29 + 159:28(float16_t) Constant 22112 + 160: 29 ConstantComposite 159 + 163: TypePointer Function 46 + 165: 7(int) Constant 103 + 166: 46 ConstantComposite 165 + 169: TypePointer Function 64 + 171: 63(int16_t) Constant 104 + 172: 64 ConstantComposite 171 + 175: TypePointer Function 82 + 177: 81(int8_t) Constant 105 + 178: 82 ConstantComposite 177 + 181: TypePointer Function 100 + 183: 99(int) Constant 106 + 184: 100 ConstantComposite 183 + 187: TypePointer Function 118 + 189:117(int16_t) Constant 107 + 190: 118 ConstantComposite 189 + 193: TypePointer Function 136 + 195: 135(int8_t) Constant 108 + 196: 136 ConstantComposite 195 + 200: 6(float) Constant 1121845248 + 201: 11 ConstantComposite 200 + 205:28(float16_t) Constant 22272 + 206: 29 ConstantComposite 205 + 208: 7(int) Constant 113 + 209: 46 ConstantComposite 208 + 213: 63(int16_t) Constant 114 + 214: 64 ConstantComposite 213 + 218: 81(int8_t) Constant 115 + 219: 82 ConstantComposite 218 + 223: 99(int) Constant 116 + 224: 100 ConstantComposite 223 + 228:117(int16_t) Constant 117 + 229: 118 ConstantComposite 228 + 233: 135(int8_t) Constant 118 + 234: 136 ConstantComposite 233 + 238: 6(float) Constant 1123155968 + 239: 11 ConstantComposite 238 + 243:28(float16_t) Constant 22432 + 244: 29 ConstantComposite 243 + 248: 7(int) Constant 123 + 249: 46 ConstantComposite 248 + 251: 63(int16_t) Constant 124 + 252: 64 ConstantComposite 251 + 256: 81(int8_t) Constant 125 + 257: 82 ConstantComposite 256 + 261: 99(int) Constant 126 + 262: 100 ConstantComposite 261 + 266:117(int16_t) Constant 127 + 267: 118 ConstantComposite 266 + 272: 135(int8_t) Constant 4294967168 + 273: 136 ConstantComposite 272 + 278: 6(float) Constant 1124270080 + 279: 11 ConstantComposite 278 + 283:28(float16_t) Constant 22560 + 284: 29 ConstantComposite 283 + 288: 7(int) Constant 133 + 289: 46 ConstantComposite 288 + 293: 63(int16_t) Constant 134 + 294: 64 ConstantComposite 293 + 296: 81(int8_t) Constant 135 + 297: 82 ConstantComposite 296 + 301: 99(int) Constant 136 + 302: 100 ConstantComposite 301 + 307:117(int16_t) Constant 137 + 308: 118 ConstantComposite 307 + 312: 135(int8_t) Constant 4294967178 + 313: 136 ConstantComposite 312 + 318: 6(float) Constant 1124925440 + 319: 11 ConstantComposite 318 + 323:28(float16_t) Constant 22640 + 324: 29 ConstantComposite 323 + 328: 7(int) Constant 143 + 329: 46 ConstantComposite 328 + 333: 63(int16_t) Constant 144 + 334: 64 ConstantComposite 333 + 338: 81(int8_t) Constant 145 + 339: 82 ConstantComposite 338 + 341: 99(int) Constant 146 + 342: 100 ConstantComposite 341 + 347:117(int16_t) Constant 147 + 348: 118 ConstantComposite 347 + 353: 135(int8_t) Constant 4294967188 + 354: 136 ConstantComposite 353 + 358: 6(float) Constant 1125580800 + 359: 11 ConstantComposite 358 + 363:28(float16_t) Constant 22720 + 364: 29 ConstantComposite 363 + 368: 7(int) Constant 153 + 369: 46 ConstantComposite 368 + 373: 63(int16_t) Constant 154 + 374: 64 ConstantComposite 373 + 379: 81(int8_t) Constant 155 + 380: 82 ConstantComposite 379 + 385: 99(int) Constant 156 + 386: 100 ConstantComposite 385 + 388:117(int16_t) Constant 157 + 389: 118 ConstantComposite 388 + 393: 135(int8_t) Constant 4294967198 + 394: 136 ConstantComposite 393 + 398: 6(float) Constant 1126236160 + 399: 11 ConstantComposite 398 + 403:28(float16_t) Constant 22800 + 404: 29 ConstantComposite 403 + 408: 7(int) Constant 163 + 409: 46 ConstantComposite 408 + 414: 63(int16_t) Constant 164 + 415: 64 ConstantComposite 414 + 419: 81(int8_t) Constant 165 + 420: 82 ConstantComposite 419 + 425: 99(int) Constant 166 + 426: 100 ConstantComposite 425 + 430:117(int16_t) Constant 167 + 431: 118 ConstantComposite 430 + 433: 135(int8_t) Constant 4294967208 + 434: 136 ConstantComposite 433 + 438: 6(float) Constant 1126891520 + 439: 11 ConstantComposite 438 + 443:28(float16_t) Constant 22880 + 444: 29 ConstantComposite 443 + 448: 7(int) Constant 173 + 449: 46 ConstantComposite 448 + 454: 63(int16_t) Constant 174 + 455: 64 ConstantComposite 454 + 460: 81(int8_t) Constant 175 + 461: 82 ConstantComposite 460 + 465: 99(int) Constant 176 + 466: 100 ConstantComposite 465 + 470:117(int16_t) Constant 177 + 471: 118 ConstantComposite 470 + 475: 135(int8_t) Constant 4294967218 + 476: 136 ConstantComposite 475 + 477: TypeVector 7(int) 3 + 478: 7(int) Constant 64 + 479: 7(int) Constant 1 + 480: 477(ivec3) ConstantComposite 478 479 479 + 4(main): 2 Function None 3 + 5: Label + 154(v): 153(ptr) Variable Function + 158(v): 157(ptr) Variable Function + 164(v): 163(ptr) Variable Function + 170(v): 169(ptr) Variable Function + 176(v): 175(ptr) Variable Function + 182(v): 181(ptr) Variable Function + 188(v): 187(ptr) Variable Function + 194(v): 193(ptr) Variable Function + 199(v): 153(ptr) Variable Function + 204(v): 157(ptr) Variable Function + 207(v): 163(ptr) Variable Function + 212(v): 169(ptr) Variable Function + 217(v): 175(ptr) Variable Function + 222(v): 181(ptr) Variable Function + 227(v): 187(ptr) Variable Function + 232(v): 193(ptr) Variable Function + 237(v): 153(ptr) Variable Function + 242(v): 157(ptr) Variable Function + 247(v): 163(ptr) Variable Function + 250(v): 169(ptr) Variable Function + 255(v): 175(ptr) Variable Function + 260(v): 181(ptr) Variable Function + 265(v): 187(ptr) Variable Function + 271(v): 193(ptr) Variable Function + 277(v): 153(ptr) Variable Function + 282(v): 157(ptr) Variable Function + 287(v): 163(ptr) Variable Function + 292(v): 169(ptr) Variable Function + 295(v): 175(ptr) Variable Function + 300(v): 181(ptr) Variable Function + 306(v): 187(ptr) Variable Function + 311(v): 193(ptr) Variable Function + 317(v): 153(ptr) Variable Function + 322(v): 157(ptr) Variable Function + 327(v): 163(ptr) Variable Function + 332(v): 169(ptr) Variable Function + 337(v): 175(ptr) Variable Function + 340(v): 181(ptr) Variable Function + 346(v): 187(ptr) Variable Function + 352(v): 193(ptr) Variable Function + 357(v): 153(ptr) Variable Function + 362(v): 157(ptr) Variable Function + 367(v): 163(ptr) Variable Function + 372(v): 169(ptr) Variable Function + 378(v): 175(ptr) Variable Function + 384(v): 181(ptr) Variable Function + 387(v): 187(ptr) Variable Function + 392(v): 193(ptr) Variable Function + 397(v): 153(ptr) Variable Function + 402(v): 157(ptr) Variable Function + 407(v): 163(ptr) Variable Function + 413(v): 169(ptr) Variable Function + 418(v): 175(ptr) Variable Function + 424(v): 181(ptr) Variable Function + 429(v): 187(ptr) Variable Function + 432(v): 193(ptr) Variable Function + 437(v): 153(ptr) Variable Function + 442(v): 157(ptr) Variable Function + 447(v): 163(ptr) Variable Function + 453(v): 169(ptr) Variable Function + 459(v): 175(ptr) Variable Function + 464(v): 181(ptr) Variable Function + 469(v): 187(ptr) Variable Function + 474(v): 193(ptr) Variable Function + Store 154(v) 156 + Store 158(v) 160 + 161: 29 Load 158(v) + 162: 11 FConvert 161 + Store 164(v) 166 + 167: 46 Load 164(v) + 168: 11 ConvertUToF 167 + Store 170(v) 172 + 173: 64 Load 170(v) + 174: 11 ConvertUToF 173 + Store 176(v) 178 + 179: 82 Load 176(v) + 180: 11 ConvertUToF 179 + Store 182(v) 184 + 185: 100 Load 182(v) + 186: 11 ConvertSToF 185 + Store 188(v) 190 + 191: 118 Load 188(v) + 192: 11 ConvertSToF 191 + Store 194(v) 196 + 197: 136 Load 194(v) + 198: 11 ConvertSToF 197 + Store 199(v) 201 + 202: 11 Load 199(v) + 203: 29 FConvert 202 + Store 204(v) 206 + Store 207(v) 209 + 210: 46 Load 207(v) + 211: 29 ConvertUToF 210 + Store 212(v) 214 + 215: 64 Load 212(v) + 216: 29 ConvertUToF 215 + Store 217(v) 219 + 220: 82 Load 217(v) + 221: 29 ConvertUToF 220 + Store 222(v) 224 + 225: 100 Load 222(v) + 226: 29 ConvertSToF 225 + Store 227(v) 229 + 230: 118 Load 227(v) + 231: 29 ConvertSToF 230 + Store 232(v) 234 + 235: 136 Load 232(v) + 236: 29 ConvertSToF 235 + Store 237(v) 239 + 240: 11 Load 237(v) + 241: 46 ConvertFToU 240 + Store 242(v) 244 + 245: 29 Load 242(v) + 246: 46 ConvertFToU 245 + Store 247(v) 249 + Store 250(v) 252 + 253: 64 Load 250(v) + 254: 46 UConvert 253 + Store 255(v) 257 + 258: 82 Load 255(v) + 259: 46 UConvert 258 + Store 260(v) 262 + 263: 100 Load 260(v) + 264: 46 Bitcast 263 + Store 265(v) 267 + 268: 118 Load 265(v) + 269: 100 SConvert 268 + 270: 46 Bitcast 269 + Store 271(v) 273 + 274: 136 Load 271(v) + 275: 100 SConvert 274 + 276: 46 Bitcast 275 + Store 277(v) 279 + 280: 11 Load 277(v) + 281: 64 ConvertFToU 280 + Store 282(v) 284 + 285: 29 Load 282(v) + 286: 64 ConvertFToU 285 + Store 287(v) 289 + 290: 46 Load 287(v) + 291: 64 UConvert 290 + Store 292(v) 294 + Store 295(v) 297 + 298: 82 Load 295(v) + 299: 64 UConvert 298 + Store 300(v) 302 + 303: 100 Load 300(v) + 304: 118 SConvert 303 + 305: 64 Bitcast 304 + Store 306(v) 308 + 309: 118 Load 306(v) + 310: 64 Bitcast 309 + Store 311(v) 313 + 314: 136 Load 311(v) + 315: 118 SConvert 314 + 316: 64 Bitcast 315 + Store 317(v) 319 + 320: 11 Load 317(v) + 321: 82 ConvertFToU 320 + Store 322(v) 324 + 325: 29 Load 322(v) + 326: 82 ConvertFToU 325 + Store 327(v) 329 + 330: 46 Load 327(v) + 331: 82 UConvert 330 + Store 332(v) 334 + 335: 64 Load 332(v) + 336: 82 UConvert 335 + Store 337(v) 339 + Store 340(v) 342 + 343: 100 Load 340(v) + 344: 136 SConvert 343 + 345: 82 Bitcast 344 + Store 346(v) 348 + 349: 118 Load 346(v) + 350: 136 SConvert 349 + 351: 82 Bitcast 350 + Store 352(v) 354 + 355: 136 Load 352(v) + 356: 82 Bitcast 355 + Store 357(v) 359 + 360: 11 Load 357(v) + 361: 100 ConvertFToS 360 + Store 362(v) 364 + 365: 29 Load 362(v) + 366: 100 ConvertFToS 365 + Store 367(v) 369 + 370: 46 Load 367(v) + 371: 100 Bitcast 370 + Store 372(v) 374 + 375: 64 Load 372(v) + 376: 46 UConvert 375 + 377: 100 Bitcast 376 + Store 378(v) 380 + 381: 82 Load 378(v) + 382: 46 UConvert 381 + 383: 100 Bitcast 382 + Store 384(v) 386 + Store 387(v) 389 + 390: 118 Load 387(v) + 391: 100 SConvert 390 + Store 392(v) 394 + 395: 136 Load 392(v) + 396: 100 SConvert 395 + Store 397(v) 399 + 400: 11 Load 397(v) + 401: 118 ConvertFToS 400 + Store 402(v) 404 + 405: 29 Load 402(v) + 406: 118 ConvertFToS 405 + Store 407(v) 409 + 410: 46 Load 407(v) + 411: 64 UConvert 410 + 412: 118 Bitcast 411 + Store 413(v) 415 + 416: 64 Load 413(v) + 417: 118 Bitcast 416 + Store 418(v) 420 + 421: 82 Load 418(v) + 422: 64 UConvert 421 + 423: 118 Bitcast 422 + Store 424(v) 426 + 427: 100 Load 424(v) + 428: 118 SConvert 427 + Store 429(v) 431 + Store 432(v) 434 + 435: 136 Load 432(v) + 436: 118 SConvert 435 + Store 437(v) 439 + 440: 11 Load 437(v) + 441: 136 ConvertFToS 440 + Store 442(v) 444 + 445: 29 Load 442(v) + 446: 136 ConvertFToS 445 + Store 447(v) 449 + 450: 46 Load 447(v) + 451: 82 UConvert 450 + 452: 136 Bitcast 451 + Store 453(v) 455 + 456: 64 Load 453(v) + 457: 82 UConvert 456 + 458: 136 Bitcast 457 + Store 459(v) 461 + 462: 82 Load 459(v) + 463: 136 Bitcast 462 + Store 464(v) 466 + 467: 100 Load 464(v) + 468: 136 SConvert 467 + Store 469(v) 471 + 472: 118 Load 469(v) + 473: 136 SConvert 472 + Store 474(v) 476 + Return + FunctionEnd diff --git a/Test/baseResults/spv.coopmatKHR_constructorError.comp.out b/Test/baseResults/spv.coopmatKHR_constructorError.comp.out new file mode 100644 index 0000000000..040e762020 --- /dev/null +++ b/Test/baseResults/spv.coopmatKHR_constructorError.comp.out @@ -0,0 +1,9 @@ +spv.coopmatKHR_constructorError.comp +ERROR: 0:12: 'constructor' : Cooperative matrix type parameters mismatch +ERROR: 0:13: 'constructor' : Cooperative matrix type parameters mismatch +ERROR: 0:14: 'constructor' : Cooperative matrix type parameters mismatch +ERROR: 0:15: 'constructor' : Cooperative matrix type parameters mismatch +ERROR: 4 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out index bc50255267..24289a9f9a 100644 --- a/Test/baseResults/spv.intcoopmat.comp.out +++ b/Test/baseResults/spv.intcoopmat.comp.out @@ -1,10 +1,11 @@ spv.intcoopmat.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 262 +// Id's are bound by 286 Capability Shader Capability Float16 + Capability Int16 Capability Int8 Capability StorageBuffer8BitAccess Capability VulkanMemoryModelKHR @@ -72,18 +73,22 @@ spv.intcoopmat.comp Name 207 "tempArg" Name 212 "shmatrix" Name 217 "ms" - Name 225 "miC" - Name 226 "muC" - Name 231 "iarr" - Name 236 "iarr2" - Name 241 "uarr" - Name 246 "uarr2" - Name 251 "S" - MemberName 251(S) 0 "a" - MemberName 251(S) 1 "b" - MemberName 251(S) 2 "c" - Name 256 "SC" - Name 261 "scm" + Name 224 "i16" + Name 230 "u16" + Name 233 "tempArg" + Name 239 "tempArg" + Name 249 "miC" + Name 250 "muC" + Name 255 "iarr" + Name 260 "iarr2" + Name 265 "uarr" + Name 270 "uarr2" + Name 275 "S" + MemberName 275(S) 0 "a" + MemberName 275(S) 1 "b" + MemberName 275(S) 2 "c" + Name 280 "SC" + Name 285 "scm" Decorate 83 ArrayStride 4 Decorate 84 ArrayStride 4 MemberDecorate 85(Block) 0 Offset 0 @@ -105,8 +110,8 @@ spv.intcoopmat.comp Decorate 108(block8) DescriptorSet 0 Decorate 108(block8) Binding 0 Decorate 156(Y) SpecId 0 - Decorate 223 BuiltIn WorkgroupSize - Decorate 256(SC) SpecId 2 + Decorate 247 BuiltIn WorkgroupSize + Decorate 280(SC) SpecId 2 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 @@ -196,47 +201,57 @@ spv.intcoopmat.comp 212(shmatrix): 211(ptr) Variable Workgroup 213: 7(int) Constant 2 214: TypePointer Workgroup 208(ivec4) - 221: TypeVector 7(int) 3 - 222: 7(int) Constant 64 - 223: 221(ivec3) ConstantComposite 222 100 100 - 224: TypePointer Private 166 - 225(miC): 224(ptr) Variable Private - 226(muC): 162(ptr) Variable Private - 227: 7(int) SpecConstantOp 5362 166 - 228: 72(int) SpecConstantOp 128 227 76 - 229: TypeArray 72(int) 228 - 230: TypePointer Private 229 - 231(iarr): 230(ptr) Variable Private - 232: 7(int) SpecConstantOp 5362 166 - 233: 72(int) SpecConstantOp 128 232 76 - 234: TypeArray 72(int) 233 - 235: TypePointer Private 234 - 236(iarr2): 235(ptr) Variable Private - 237: 7(int) SpecConstantOp 5362 158 - 238: 72(int) SpecConstantOp 128 237 76 - 239: TypeArray 72(int) 238 - 240: TypePointer Private 239 - 241(uarr): 240(ptr) Variable Private - 242: 7(int) SpecConstantOp 5362 158 - 243: 72(int) SpecConstantOp 128 242 76 - 244: TypeArray 72(int) 243 - 245: TypePointer Private 244 - 246(uarr2): 245(ptr) Variable Private - 247: TypeCooperativeMatrixNV 72(int) 8 157(Z) 9 - 248: 247 ConstantComposite 73 - 249: 16(int8_t) Constant 1 - 250: 17 ConstantComposite 249 - 251(S): TypeStruct 72(int) 72(int) 72(int) - 252: 72(int) Constant 12 - 253: 72(int) Constant 23 - 254: 72(int) Constant 34 - 255: 251(S) ConstantComposite 252 253 254 - 256(SC): 72(int) SpecConstant 1 - 257: TypeCooperativeMatrixNV 7(int) 8 256(SC) 256(SC) - 258: TypeArray 257 256(SC) - 259: TypeArray 258 256(SC) - 260: TypePointer Private 259 - 261(scm): 260(ptr) Variable Private + 221: TypeInt 16 1 + 222: TypeCooperativeMatrixNV 221(int16_t) 8 32 9 + 223: TypePointer Function 222 + 225:221(int16_t) Constant 0 + 226: 222 ConstantComposite 225 + 227: TypeInt 16 0 + 228: TypeCooperativeMatrixNV 227(int16_t) 8 32 9 + 229: TypePointer Function 228 + 231:227(int16_t) Constant 0 + 232: 228 ConstantComposite 231 + 245: TypeVector 7(int) 3 + 246: 7(int) Constant 64 + 247: 245(ivec3) ConstantComposite 246 100 100 + 248: TypePointer Private 166 + 249(miC): 248(ptr) Variable Private + 250(muC): 162(ptr) Variable Private + 251: 7(int) SpecConstantOp 5362 166 + 252: 72(int) SpecConstantOp 128 251 76 + 253: TypeArray 72(int) 252 + 254: TypePointer Private 253 + 255(iarr): 254(ptr) Variable Private + 256: 7(int) SpecConstantOp 5362 166 + 257: 72(int) SpecConstantOp 128 256 76 + 258: TypeArray 72(int) 257 + 259: TypePointer Private 258 + 260(iarr2): 259(ptr) Variable Private + 261: 7(int) SpecConstantOp 5362 158 + 262: 72(int) SpecConstantOp 128 261 76 + 263: TypeArray 72(int) 262 + 264: TypePointer Private 263 + 265(uarr): 264(ptr) Variable Private + 266: 7(int) SpecConstantOp 5362 158 + 267: 72(int) SpecConstantOp 128 266 76 + 268: TypeArray 72(int) 267 + 269: TypePointer Private 268 + 270(uarr2): 269(ptr) Variable Private + 271: TypeCooperativeMatrixNV 72(int) 8 157(Z) 9 + 272: 271 ConstantComposite 73 + 273: 16(int8_t) Constant 1 + 274: 17 ConstantComposite 273 + 275(S): TypeStruct 72(int) 72(int) 72(int) + 276: 72(int) Constant 12 + 277: 72(int) Constant 23 + 278: 72(int) Constant 34 + 279: 275(S) ConstantComposite 276 277 278 + 280(SC): 72(int) SpecConstant 1 + 281: TypeCooperativeMatrixNV 7(int) 8 280(SC) 280(SC) + 282: TypeArray 281 280(SC) + 283: TypeArray 282 280(SC) + 284: TypePointer Private 283 + 285(scm): 284(ptr) Variable Private 4(main): 2 Function None 3 5: Label 35(mu): 34(ptr) Variable Function @@ -264,6 +279,10 @@ spv.intcoopmat.comp 193(param): 18(ptr) Variable Function 207(tempArg): 38(ptr) Variable Function 217(ms): 38(ptr) Variable Function + 224(i16): 223(ptr) Variable Function + 230(u16): 229(ptr) Variable Function + 233(tempArg): 223(ptr) Variable Function + 239(tempArg): 229(ptr) Variable Function Store 35(mu) 36 Store 39(mi) 41 42: 33 Load 35(mu) @@ -400,6 +419,24 @@ spv.intcoopmat.comp 219: 37 Load 217(ms) 220: 214(ptr) AccessChain 212(shmatrix) 100 CooperativeMatrixStoreNV 220 219 213 93 MakePointerAvailableKHR NonPrivatePointerKHR 213 + Store 224(i16) 226 + Store 230(u16) 232 + 234: 214(ptr) AccessChain 212(shmatrix) 100 + 235: 222 CooperativeMatrixLoadNV 234 213 93 MakePointerVisibleKHR NonPrivatePointerKHR 213 + Store 233(tempArg) 235 + 236: 222 Load 233(tempArg) + Store 224(i16) 236 + 237: 222 Load 224(i16) + 238: 214(ptr) AccessChain 212(shmatrix) 100 + CooperativeMatrixStoreNV 238 237 213 93 MakePointerAvailableKHR NonPrivatePointerKHR 213 + 240: 214(ptr) AccessChain 212(shmatrix) 100 + 241: 228 CooperativeMatrixLoadNV 240 213 93 MakePointerVisibleKHR NonPrivatePointerKHR 213 + Store 239(tempArg) 241 + 242: 228 Load 239(tempArg) + Store 230(u16) 242 + 243: 228 Load 230(u16) + 244: 214(ptr) AccessChain 212(shmatrix) 100 + CooperativeMatrixStoreNV 244 243 213 93 MakePointerAvailableKHR NonPrivatePointerKHR 213 Return FunctionEnd 14(ineg(i81;): 10 Function None 12 diff --git a/Test/spv.coopmatKHR.comp b/Test/spv.coopmatKHR.comp new file mode 100644 index 0000000000..3bcee7f58e --- /dev/null +++ b/Test/spv.coopmatKHR.comp @@ -0,0 +1,121 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable +#extension GL_EXT_buffer_reference : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + +const int X = 8; +layout(constant_id = 0) const int Y = 2; +const int Z = X*Y; + +coopmat mC; +coopmat mC2[3]; + +layout(constant_id = 1) const float F = 3.0; + +const coopmat mD = coopmat(0.0); +const coopmat mD2 = coopmat(1); + +struct S { int a; int b; int c; }; + +const S s = S(12, 23, 34); + +layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { + float y[1024*1024]; + float x[]; +} block; + +layout(set = 0, binding = 0) coherent buffer Block16 { + float16_t y[1024*1024]; + float16_t x[]; + + Block b; +} block16; + +coopmat f16(coopmat m) { return -m; } +coopmat f32(coopmat m) { return -m; } + +layout(constant_id = 2) const int SC = 1; +coopmat scm[SC][SC]; + +// sized for coopmat +shared uvec4 shmatrix[16*16*2/16]; + +void main() +{ + coopmat1?8:4), gl_MatrixUseAccumulator> m = coopmat1?8:4), gl_MatrixUseAccumulator>(0.0); + + m = m + m; + m = m - m; + m = -m; + m = 2.0*m; + m = m*2.0; + + coopmat m2 = coopmat(m); + + float x = m[1]; + m[0] = x; + + coopMatLoad(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatStore(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatLoad(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatStore(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatLoad(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatStore(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + + coopmat A; + coopmat B; + coopmat C; + coopmat D; + D = coopMatMulAdd(A, B, C); + + int l = D.length(); + + coopmat E; + + coopmat F = coopmat(0.0); + + coopmat1?8:4), gl_MatrixUseAccumulator> a[5]; + a[3][0] = 1.0; + + float md1 = mD[1]; + + md1 += (m += m)[1234]; + + mC2[1] = mC2[2]; + + coopMatLoad(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatStore(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatLoad(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + coopMatStore(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowMajor); + + coopmat p1; + coopmat p2; + + p1 = f16(p1); + p2 = f32(p2); + + p1 = coopmat(0.0); + p2 = coopmat(0.0); + + p1 /= p1; + + p1 *= float16_t(2.0); + p2 *= 4.0; + + coopmat ms; + coopMatLoad(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowMajor); + coopMatStore(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowMajor); + + coopmat ms8A; + coopmat ms8B; + coopmat ms8C; + coopMatMulAdd(ms8A, ms8B, ms8C); + coopMatMulAdd(ms8A, ms8B, ms8C, 0); + coopMatMulAdd(ms8A, ms8B, ms8C, gl_MatrixOperandsSaturatingAccumulation); + + coopmat m16; + coopMatStore(m16, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowMajor); +} diff --git a/Test/spv.coopmatKHR_Error.comp b/Test/spv.coopmatKHR_Error.comp new file mode 100644 index 0000000000..f2e5a52626 --- /dev/null +++ b/Test/spv.coopmatKHR_Error.comp @@ -0,0 +1,69 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + +float<16> ftemplate16; + +coopmat fnoparams; + +struct S +{ + int s; +}; + +coopmat fbadtype; +coopmat fbadtype2; +coopmat<16, gl_ScopeSubgroup, 8, 8, gl_MatrixUseA> fbadtype3; + +coopmat fbadnumparams; + +int X = 8; + +coopmat fbadparam; + +layout(constant_id = 0) const int Y = 1; + +shared coopmat sharedmat; + +layout(set = 0, binding = 0) buffer InvBlock { + coopmat bufmat; +} invblock; + +void main() +{ + coopmat f32_16_8; + coopmat f16_16_8; + + // invalid implicit conversions + f32_16_8 = f16_16_8; + f32_16_8 = f16_16_8 + f16_16_8; + + coopmat f16_8_8; + + // mismatching dimensions + f16_16_8 = f16_8_8; + + coopmat f16_8_Y; + coopmat f16_8_Y1; + + // mismatching dimensions with specialization constants + f16_8_Y = f16_8_Y1; + + // wrong arguments for constructor + f16_8_8 = coopmat(1, 1); + + // can't construct from a builtin type + mat4 m4; + coopmat f32_4_4 = coopmat(m4); + + // only support a single array subscript + f16_16_8[0][0]; + + // don't support scalar component selection + f16_16_8.x; + + transpose(f16_8_8); +} diff --git a/Test/spv.coopmatKHR_arithmetic.comp b/Test/spv.coopmatKHR_arithmetic.comp new file mode 100644 index 0000000000..611de24d89 --- /dev/null +++ b/Test/spv.coopmatKHR_arithmetic.comp @@ -0,0 +1,85 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + + +void main() +{ + coopmat f; + coopmat f2; + coopmat f3; + + coopmat f16; + + coopmat u8; + coopmat i8; + coopmat u32; + + f+f; + f-f; + f*f; + f/f; + f+=f; + f-=f; + f*=f; + f/=f; + f*2.0; + 2.0*f; + f*=2.0; + + f16+f16; + f16-f16; + f16*f16; + f16/f16; + f16+=f16; + f16-=f16; + f16*=f16; + f16/=f16; + f16*float16_t(2.0); + float16_t(2.0)*f16; + f16*=float16_t(2.0); + + u32+u32; + u32-u32; + u32*u32; + u32/u32; + u32+=u32; + u32-=u32; + u32*=u32; + u32/=u32; + u32*uint32_t(2); + uint32_t(2)*u32; + u32*=uint32_t(2); + + u8+u8; + u8-u8; + u8*u8; + u8/u8; + u8+=u8; + u8-=u8; + u8*=u8; + u8/=u8; + u8*uint8_t(2); + uint8_t(2)*u8; + u8*=uint8_t(2); + + i8+i8; + i8-i8; + i8*i8; + i8/i8; + i8+=i8; + i8-=i8; + i8*=i8; + i8/=i8; + i8*int8_t(2); + int8_t(2)*i8; + i8*=int8_t(2); + + -f; + -f16; + -i8; + -u8; +} diff --git a/Test/spv.coopmatKHR_arithmeticError.comp b/Test/spv.coopmatKHR_arithmeticError.comp new file mode 100644 index 0000000000..57381cd8e7 --- /dev/null +++ b/Test/spv.coopmatKHR_arithmeticError.comp @@ -0,0 +1,87 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + + +void main() +{ + coopmat f; + coopmat f2; + coopmat f3; + + coopmat f16; + + coopmat u8; + coopmat i8; + coopmat i32; + + f+1.0; + f-1.0; + f/1.0; + 1.0+f; + 1.0-f; + 1.0/f; + f+=1.0; + f-=1.0; + f/=1.0; + + f+f16; + f-f16; + f*f16; + f/f16; + f+=f16; + f-=f16; + f*=f16; + f/=f16; + + f+f2; + f-f2; + f*f2; + f/f2; + f+=f2; + f-=f2; + f*=f2; + f/=f2; + + f+f3; + f-f3; + f*f3; + f/f3; + f+=f3; + f-=f3; + f*=f3; + f/=f3; + + u8+i8; + u8-i8; + u8*i8; + u8/i8; + u8+=i8; + u8-=i8; + u8*=i8; + u8/=i8; + + u8+uint8_t(1); + u8-uint8_t(1); + u8/uint8_t(1); + u8+=uint8_t(1); + u8-=uint8_t(1); + u8/=uint8_t(1); + + i8+int8_t(1); + i8-int8_t(1); + i8/int8_t(1); + i8+=int8_t(1); + i8-=int8_t(1); + i8/=int8_t(1); + + i32+1; + i32-1; + i32/1; + i32+=1; + i32-=1; + i32/=1; +} diff --git a/Test/spv.coopmatKHR_constructor.comp b/Test/spv.coopmatKHR_constructor.comp new file mode 100644 index 0000000000..b0f19bea65 --- /dev/null +++ b/Test/spv.coopmatKHR_constructor.comp @@ -0,0 +1,49 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + + +void main() +{ + +#define TESTCONST(T, BASE) \ + coopmat(coopmat(BASE+1.0)); \ + coopmat(coopmat(BASE+2.0)); \ + coopmat(coopmat(BASE+3)); \ + coopmat(coopmat(BASE+4)); \ + coopmat(coopmat(BASE+5)); \ + coopmat(coopmat(BASE+6)); \ + coopmat(coopmat(BASE+7)); \ + coopmat(coopmat(BASE+8)); + + TESTCONST(float, 0) + TESTCONST(float16_t, 10) + TESTCONST(uint32_t, 20) + TESTCONST(uint16_t, 30) + TESTCONST(uint8_t, 40) + TESTCONST(int32_t, 50) + TESTCONST(int16_t, 60) + TESTCONST(int8_t, 70) + +#define TESTVAR(T, BASE) \ + { coopmat v = coopmat(BASE+1.0); coopmat(v); } \ + { coopmat v = coopmat(BASE+2.0); coopmat(v); } \ + { coopmat v = coopmat(BASE+3); coopmat(v); } \ + { coopmat v = coopmat(BASE+4); coopmat(v); } \ + { coopmat v = coopmat(BASE+5); coopmat(v); } \ + { coopmat v = coopmat(BASE+6); coopmat(v); } \ + { coopmat v = coopmat(BASE+7); coopmat(v); } \ + { coopmat v = coopmat(BASE+8); coopmat(v); } + + TESTVAR(float, 100) + TESTVAR(float16_t, 110) + TESTVAR(uint32_t, 120) + TESTVAR(uint16_t, 130) + TESTVAR(uint8_t, 140) + TESTVAR(int32_t, 150) + TESTVAR(int16_t, 160) + TESTVAR(int8_t, 170) +} diff --git a/Test/spv.coopmatKHR_constructorError.comp b/Test/spv.coopmatKHR_constructorError.comp new file mode 100644 index 0000000000..7f00eb16a9 --- /dev/null +++ b/Test/spv.coopmatKHR_constructorError.comp @@ -0,0 +1,16 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + + +void main() +{ + // Test each kind of shape mismatch + coopmat(coopmat(0.0)); + coopmat(coopmat(0.0)); + coopmat(coopmat(0.0)); + coopmat(coopmat(0.0)); +} diff --git a/Test/spv.intcoopmat.comp b/Test/spv.intcoopmat.comp index 235aa16be2..65aa27a802 100644 --- a/Test/spv.intcoopmat.comp +++ b/Test/spv.intcoopmat.comp @@ -1,117 +1,123 @@ #version 450 core -#extension GL_KHR_memory_scope_semantics : enable -#extension GL_NV_cooperative_matrix : enable -#extension GL_NV_integer_cooperative_matrix : enable -#extension GL_EXT_shader_explicit_arithmetic_types : enable -#extension GL_EXT_buffer_reference : enable - +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_NV_cooperative_matrix : enable +#extension GL_NV_integer_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable +#extension GL_EXT_buffer_reference : enable + layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; - -const int X = 8; -layout(constant_id = 0) const int Y = 2; -const int Z = X*Y; - -icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC; -icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC2[3]; -ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC; -ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC2[3]; - -int iarr[miC.length()]; -int iarr2[miC2[1].length()]; -int uarr[muC.length()]; -int uarr2[muC2[1].length()]; - -const icoopmatNV<32, gl_ScopeSubgroup, Z, 8> mD = icoopmatNV<32, gl_ScopeSubgroup, Z, 8>(1); -const ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> mD2 = ucoopmatNV<8, gl_ScopeSubgroup, 8, 8>(1); - -struct S { int a; int b; int c; }; - -const S s = S(12, 23, 34); - -layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { - uint y[1024*1024]; - uint x[]; -} block; - -layout(set = 0, binding = 0) coherent buffer Block16 { - int8_t y[1024*1024]; - int8_t x[]; - - Block b; -} block8; - -icoopmatNV<8, gl_ScopeSubgroup, 8, 8> ineg(icoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return -m; } -ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> umul(ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return m * uint8_t(2); } - -layout(constant_id = 2) const int SC = 1; -ucoopmatNV<32, gl_ScopeSubgroup, SC, SC> scm[SC][SC]; - -// sized for icoopmatNV<8, gl_ScopeSubgroup, 16, 16> -shared uvec4 shmatrix[16*16*2/16]; - + +const int X = 8; +layout(constant_id = 0) const int Y = 2; +const int Z = X*Y; + +icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC; +icoopmatNV<8, gl_ScopeSubgroup, Z, 8> miC2[3]; +ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC; +ucoopmatNV<8, gl_ScopeSubgroup, Z, 8> muC2[3]; + +int iarr[miC.length()]; +int iarr2[miC2[1].length()]; +int uarr[muC.length()]; +int uarr2[muC2[1].length()]; + +const icoopmatNV<32, gl_ScopeSubgroup, Z, 8> mD = icoopmatNV<32, gl_ScopeSubgroup, Z, 8>(1); +const ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> mD2 = ucoopmatNV<8, gl_ScopeSubgroup, 8, 8>(1); + +struct S { int a; int b; int c; }; + +const S s = S(12, 23, 34); + +layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { + uint y[1024*1024]; + uint x[]; +} block; + +layout(set = 0, binding = 0) coherent buffer Block16 { + int8_t y[1024*1024]; + int8_t x[]; + + Block b; +} block8; + +icoopmatNV<8, gl_ScopeSubgroup, 8, 8> ineg(icoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return -m; } +ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> umul(ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> m) { return m * uint8_t(2); } + +layout(constant_id = 2) const int SC = 1; +ucoopmatNV<32, gl_ScopeSubgroup, SC, SC> scm[SC][SC]; + +// sized for icoopmatNV<8, gl_ScopeSubgroup, 16, 16> +shared uvec4 shmatrix[16*16*2/16]; + void main() { - ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mu = ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); - icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mi = icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); - - mu = mu + mu; - mu = mu - mu; - mi = -mi; - mi = mi * int8_t(2); - - fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_0 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mu); - fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_0 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mu); - fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_1 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mi); - fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_1 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mi); - - uint8_t x = mu[1]; - mi[0] = int8_t(x); - - coopMatLoadNV(mi, block.x, 16, 128, false); - coopMatStoreNV(mi, block.x, 16, 128, false); - coopMatLoadNV(mu, block8.x, 16, 128, false); - coopMatStoreNV(mu, block8.x, 16, 128, false); - coopMatLoadNV(mi, block8.b.x, 16, 128, false); - coopMatStoreNV(mi, block8.b.x, 16, 128, false); - - ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> A; - ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> B; - ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> C; - ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> D; - D = coopMatMulAddNV(A, B, C); - - int l = D.length(); - - - icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> a[5]; - a[3][0] = int8_t(1); - - int md1 = mD[1]; - - md1 += (mi += mi)[1234]; - + ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mu = ucoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); + icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> mi = icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)>(2); + + mu = mu + mu; + mu = mu - mu; + mi = -mi; + mi = mi * int8_t(2); + + fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_0 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mu); + fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_0 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mu); + fcoopmatNV<16, gl_ScopeSubgroup, 16, 8> mf16_1 = fcoopmatNV<16, gl_ScopeSubgroup, 16, 8>(mi); + fcoopmatNV<32, gl_ScopeSubgroup, 16, 8> mf32_1 = fcoopmatNV<32, gl_ScopeSubgroup, 16, 8>(mi); + + uint8_t x = mu[1]; + mi[0] = int8_t(x); + + coopMatLoadNV(mi, block.x, 16, 128, false); + coopMatStoreNV(mi, block.x, 16, 128, false); + coopMatLoadNV(mu, block8.x, 16, 128, false); + coopMatStoreNV(mu, block8.x, 16, 128, false); + coopMatLoadNV(mi, block8.b.x, 16, 128, false); + coopMatStoreNV(mi, block8.b.x, 16, 128, false); + + ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> A; + ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> B; + ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> C; + ucoopmatNV<8, gl_ScopeSubgroup, 16, 8> D; + D = coopMatMulAddNV(A, B, C); + + int l = D.length(); + + + icoopmatNV<8, gl_ScopeSubgroup, 16, (2>1?8:4)> a[5]; + a[3][0] = int8_t(1); + + int md1 = mD[1]; + + md1 += (mi += mi)[1234]; + muC2[0] = muC2[1]; - muC2[1][0] = (miC2[2][0]); - - coopMatLoadNV(mi, block.y, 16, 128, false); - coopMatStoreNV(mi, block.y, 16, 128, false); - coopMatLoadNV(mu, block8.y, 16, 128, false); - coopMatStoreNV(mu, block8.y, 16, 128, false); - - icoopmatNV<8, gl_ScopeSubgroup, 8, 8> p1; - ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> p2; - - p1 = ineg(p1); - p2 = umul(p2); - - p1 /= p1; + muC2[1][0] = (miC2[2][0]); + + coopMatLoadNV(mi, block.y, 16, 128, false); + coopMatStoreNV(mi, block.y, 16, 128, false); + coopMatLoadNV(mu, block8.y, 16, 128, false); + coopMatStoreNV(mu, block8.y, 16, 128, false); + + icoopmatNV<8, gl_ScopeSubgroup, 8, 8> p1; + ucoopmatNV<8, gl_ScopeSubgroup, 8, 8> p2; + + p1 = ineg(p1); + p2 = umul(p2); + + p1 /= p1; p2 /= p2; - - p1 *= int8_t(2); - p2 *= uint8_t(4); - - icoopmatNV<8, gl_ScopeSubgroup, 16, 8> ms; - coopMatLoadNV(ms, shmatrix, 1, 2, false); - coopMatStoreNV(ms, shmatrix, 1, 2, false); - + + p1 *= int8_t(2); + p2 *= uint8_t(4); + + icoopmatNV<8, gl_ScopeSubgroup, 16, 8> ms; + coopMatLoadNV(ms, shmatrix, 1, 2, false); + coopMatStoreNV(ms, shmatrix, 1, 2, false); + + icoopmatNV<16, gl_ScopeSubgroup, 16, 8> i16 = icoopmatNV<16, gl_ScopeSubgroup, 16, 8>(0); + ucoopmatNV<16, gl_ScopeSubgroup, 16, 8> u16 = ucoopmatNV<16, gl_ScopeSubgroup, 16, 8>(0); + coopMatLoadNV(i16, shmatrix, 1, 2, false); + coopMatStoreNV(i16, shmatrix, 1, 2, false); + coopMatLoadNV(u16, shmatrix, 1, 2, false); + coopMatStoreNV(u16, shmatrix, 1, 2, false); } diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index f41941e73d..537597b69b 100755 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -66,6 +66,7 @@ enum TBasicType { EbtReference, EbtRayQuery, EbtHitObjectNV, + EbtCoopmat, #ifndef GLSLANG_WEB // SPIR-V type defined by spirv_type EbtSpirvType, diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 6e3ad6210b..6868c219a4 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1541,6 +1541,19 @@ struct TShaderQualifiers { } }; +class TTypeParameters { +public: + POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) + + TTypeParameters() : basicType(EbtVoid), arraySizes(nullptr) {} + + TBasicType basicType; + TArraySizes *arraySizes; + + bool operator==(const TTypeParameters& rhs) const { return basicType == rhs.basicType && *arraySizes == *rhs.arraySizes; } + bool operator!=(const TTypeParameters& rhs) const { return basicType != rhs.basicType || *arraySizes != *rhs.arraySizes; } +}; + // // TPublicType is just temporarily used while parsing and not quite the same // information kept per node in TType. Due to the bison stack, it can't have @@ -1555,14 +1568,15 @@ class TPublicType { TSampler sampler; TQualifier qualifier; TShaderQualifiers shaderQualifiers; - int vectorSize : 4; - int matrixCols : 4; - int matrixRows : 4; - bool coopmat : 1; + int vectorSize : 4; + int matrixCols : 4; + int matrixRows : 4; + bool coopmatNV : 1; + bool coopmatKHR : 1; TArraySizes* arraySizes; const TType* userDef; TSourceLoc loc; - TArraySizes* typeParameters; + TTypeParameters* typeParameters; #ifndef GLSLANG_WEB // SPIR-V type defined by spirv_type directive TSpirvType* spirvType; @@ -1570,8 +1584,12 @@ class TPublicType { #ifdef GLSLANG_WEB bool isCoopmat() const { return false; } + bool isCoopmatNV() const { return false; } + bool isCoopmatKHR() const { return false; } #else - bool isCoopmat() const { return coopmat; } + bool isCoopmat() const { return coopmatNV || coopmatKHR; } + bool isCoopmatNV() const { return coopmatNV; } + bool isCoopmatKHR() const { return coopmatKHR; } #endif void initType(const TSourceLoc& l) @@ -1584,7 +1602,8 @@ class TPublicType { userDef = nullptr; loc = l; typeParameters = nullptr; - coopmat = false; + coopmatNV = false; + coopmatKHR = false; #ifndef GLSLANG_WEB spirvType = nullptr; #endif @@ -1645,7 +1664,7 @@ class TType { // for "empty" type (no args) or simple scalar/vector/matrix explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : - basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false), + basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) #ifndef GLSLANG_WEB , spirvType(nullptr) @@ -1659,7 +1678,7 @@ class TType { // for explicit precision qualifier TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : - basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmat(false), + basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) #ifndef GLSLANG_WEB , spirvType(nullptr) @@ -1675,7 +1694,7 @@ class TType { // for turning a TPublicType into a TType, using a shallow copy explicit TType(const TPublicType& p) : basicType(p.basicType), - vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmat(p.coopmat), + vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(-1), arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters) #ifndef GLSLANG_WEB , spirvType(p.spirvType) @@ -1695,23 +1714,37 @@ class TType { } typeName = NewPoolTString(p.userDef->getTypeName().c_str()); } - if (p.isCoopmat() && p.typeParameters && p.typeParameters->getNumDims() > 0) { - int numBits = p.typeParameters->getDimSize(0); + if (p.isCoopmatNV() && p.typeParameters && p.typeParameters->arraySizes->getNumDims() > 0) { + int numBits = p.typeParameters->arraySizes->getDimSize(0); if (p.basicType == EbtFloat && numBits == 16) { basicType = EbtFloat16; qualifier.precision = EpqNone; } else if (p.basicType == EbtUint && numBits == 8) { basicType = EbtUint8; qualifier.precision = EpqNone; + } else if (p.basicType == EbtUint && numBits == 16) { + basicType = EbtUint16; + qualifier.precision = EpqNone; } else if (p.basicType == EbtInt && numBits == 8) { basicType = EbtInt8; qualifier.precision = EpqNone; + } else if (p.basicType == EbtInt && numBits == 16) { + basicType = EbtInt16; + qualifier.precision = EpqNone; + } + } + if (p.isCoopmatKHR() && p.typeParameters && p.typeParameters->arraySizes->getNumDims() > 0) { + basicType = p.typeParameters->basicType; + + if (p.typeParameters->arraySizes->getNumDims() == 4) { + coopmatKHRuse = p.typeParameters->arraySizes->getDimSize(3); + p.typeParameters->arraySizes->removeLastSize(); } } } // for construction of sampler types TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) : - basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), + basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), sampler(sampler), typeParameters(nullptr) #ifndef GLSLANG_WEB @@ -1758,14 +1791,16 @@ class TType { vectorSize = 1; vector1 = false; } else if (isCoopMat()) { - coopmat = false; + coopmatNV = false; + coopmatKHR = false; + coopmatKHRuse = -1; typeParameters = nullptr; } } } // for making structures, ... TType(TTypeList* userDef, const TString& n) : - basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), + basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr) #ifndef GLSLANG_WEB , spirvType(nullptr) @@ -1777,7 +1812,7 @@ class TType { } // For interface blocks TType(TTypeList* userDef, const TString& n, const TQualifier& q) : - basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), + basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr) #ifndef GLSLANG_WEB , spirvType(nullptr) @@ -1788,7 +1823,7 @@ class TType { } // for block reference (first parameter must be EbtReference) explicit TType(TBasicType t, const TType &p, const TString& n) : - basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmat(false), + basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) #ifndef GLSLANG_WEB , spirvType(nullptr) @@ -1827,7 +1862,9 @@ class TType { #ifndef GLSLANG_WEB spirvType = copyOf.spirvType; #endif - coopmat = copyOf.isCoopMat(); + coopmatNV = copyOf.isCoopMatNV(); + coopmatKHR = copyOf.isCoopMatKHR(); + coopmatKHRuse = copyOf.coopmatKHRuse; } // Make complete copy of the whole type graph rooted at 'copyOf'. @@ -1912,8 +1949,8 @@ class TType { virtual const TArraySizes* getArraySizes() const { return arraySizes; } virtual TArraySizes* getArraySizes() { return arraySizes; } virtual TType* getReferentType() const { return referentType; } - virtual const TArraySizes* getTypeParameters() const { return typeParameters; } - virtual TArraySizes* getTypeParameters() { return typeParameters; } + virtual const TTypeParameters* getTypeParameters() const { return typeParameters; } + virtual TTypeParameters* getTypeParameters() { return typeParameters; } virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray(); } virtual bool isScalarOrVec1() const { return isScalar() || vector1; } @@ -1968,14 +2005,19 @@ class TType { #ifdef GLSLANG_WEB bool isAtomic() const { return false; } bool isCoopMat() const { return false; } + bool isCoopMatNV() const { return false; } + bool isCoopMatKHR() const { return false; } bool isReference() const { return false; } bool isSpirvType() const { return false; } #else bool isAtomic() const { return basicType == EbtAtomicUint; } - bool isCoopMat() const { return coopmat; } + bool isCoopMat() const { return coopmatNV || coopmatKHR; } + bool isCoopMatNV() const { return coopmatNV; } + bool isCoopMatKHR() const { return coopmatKHR; } bool isReference() const { return getBasicType() == EbtReference; } bool isSpirvType() const { return getBasicType() == EbtSpirvType; } #endif + int getCoopMatKHRuse() const { return coopmatKHRuse; } // return true if this type contains any subtype which satisfies the given predicate. template @@ -2092,7 +2134,7 @@ class TType { } bool containsCoopMat() const { - return contains([](const TType* t) { return t->coopmat; } ); + return contains([](const TType* t) { return t->coopmatNV || t->coopmatKHR; } ); } bool containsReference() const { @@ -2174,43 +2216,12 @@ class TType { } } - - void updateTypeParameters(const TType& type) - { - // For when we may already be sharing existing array descriptors, - // keeping the pointers the same, just updating the contents. - assert(typeParameters != nullptr); - assert(type.typeParameters != nullptr); - *typeParameters = *type.typeParameters; - } - void copyTypeParameters(const TArraySizes& s) + void copyTypeParameters(const TTypeParameters& s) { // For setting a fresh new set of type parameters, not yet worrying about sharing. - typeParameters = new TArraySizes; + typeParameters = new TTypeParameters; *typeParameters = s; } - void transferTypeParameters(TArraySizes* s) - { - // For setting an already allocated set of sizes that this type can use - // (no copy made). - typeParameters = s; - } - void clearTypeParameters() - { - typeParameters = nullptr; - } - - // Add inner array sizes, to any existing sizes, via copy; the - // sizes passed in can still be reused for other purposes. - void copyTypeParametersInnerSizes(const TArraySizes* s) - { - if (s != nullptr) { - if (typeParameters == nullptr) - copyTypeParameters(*s); - else - typeParameters->addInnerSizes(*s); - } - } const char* getBasicString() const { @@ -2243,6 +2254,7 @@ class TType { case EbtReference: return "reference"; case EbtString: return "string"; case EbtSpirvType: return "spirv_type"; + case EbtCoopmat: return "coopmat"; #endif default: return "unknown type"; } @@ -2553,11 +2565,20 @@ class TType { } } if (isParameterized()) { + if (isCoopMatKHR()) { + appendStr(" "); + appendStr("coopmat"); + } + appendStr("<"); - for (int i = 0; i < (int)typeParameters->getNumDims(); ++i) { - appendInt(typeParameters->getDimSize(i)); - if (i != (int)typeParameters->getNumDims() - 1) + for (int i = 0; i < (int)typeParameters->arraySizes->getNumDims(); ++i) { + appendInt(typeParameters->arraySizes->getDimSize(i)); + if (i != (int)typeParameters->arraySizes->getNumDims() - 1) + appendStr(", "); + } + if (coopmatKHRuse != -1) { appendStr(", "); + appendInt(coopmatKHRuse); } appendStr(">"); } @@ -2835,7 +2856,8 @@ class TType { matrixCols == right.matrixCols && matrixRows == right.matrixRows && vector1 == right.vector1 && - isCoopMat() == right.isCoopMat() && + isCoopMatNV() == right.isCoopMatNV() && + isCoopMatKHR() == right.isCoopMatKHR() && sameStructType(right, lpidx, rpidx) && sameReferenceType(right); } @@ -2844,29 +2866,70 @@ class TType { // an OK function parameter bool coopMatParameterOK(const TType& right) const { - return isCoopMat() && right.isCoopMat() && (getBasicType() == right.getBasicType()) && - typeParameters == nullptr && right.typeParameters != nullptr; + if (isCoopMatNV()) { + return right.isCoopMatNV() && (getBasicType() == right.getBasicType()) && typeParameters == nullptr && + right.typeParameters != nullptr; + } + if (isCoopMatKHR() && right.isCoopMatKHR()) { + return ((getBasicType() == right.getBasicType()) || (getBasicType() == EbtCoopmat) || + (right.getBasicType() == EbtCoopmat)) && + typeParameters == nullptr && right.typeParameters != nullptr; + } + return false; } bool sameCoopMatBaseType(const TType &right) const { - bool rv = coopmat && right.coopmat; - if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16) - rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16; - else if (getBasicType() == EbtUint || getBasicType() == EbtUint8) - rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8; - else if (getBasicType() == EbtInt || getBasicType() == EbtInt8) - rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8; - else - rv = false; + bool rv = false; + + if (isCoopMatNV()) { + rv = isCoopMatNV() && right.isCoopMatNV(); + if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16) + rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16; + else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16) + rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16; + else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16) + rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16; + else + rv = false; + } else if (isCoopMatKHR() && right.isCoopMatKHR()) { + if (getBasicType() == EbtFloat || getBasicType() == EbtFloat16) + rv = right.getBasicType() == EbtFloat || right.getBasicType() == EbtFloat16 || right.getBasicType() == EbtCoopmat; + else if (getBasicType() == EbtUint || getBasicType() == EbtUint8 || getBasicType() == EbtUint16) + rv = right.getBasicType() == EbtUint || right.getBasicType() == EbtUint8 || right.getBasicType() == EbtUint16 || right.getBasicType() == EbtCoopmat; + else if (getBasicType() == EbtInt || getBasicType() == EbtInt8 || getBasicType() == EbtInt16) + rv = right.getBasicType() == EbtInt || right.getBasicType() == EbtInt8 || right.getBasicType() == EbtInt16 || right.getBasicType() == EbtCoopmat; + else + rv = false; + } return rv; } + bool sameCoopMatUse(const TType &right) const { + return coopmatKHRuse == right.coopmatKHRuse; + } + + bool sameCoopMatShapeAndUse(const TType &right) const + { + if (!isCoopMat() || !right.isCoopMat() || isCoopMatKHR() != right.isCoopMatKHR()) + return false; + + if (coopmatKHRuse != right.coopmatKHRuse) + return false; + + // Skip bit width type parameter (first array size) for coopmatNV + int firstArrayDimToCompare = isCoopMatNV() ? 1 : 0; + for (int i = firstArrayDimToCompare; i < typeParameters->arraySizes->getNumDims(); ++i) { + if (typeParameters->arraySizes->getDimSize(i) != right.typeParameters->arraySizes->getDimSize(i)) + return false; + } + return true; + } // See if two types match in all ways (just the actual type, not qualification) bool operator==(const TType& right) const { #ifndef GLSLANG_WEB - return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameSpirvType(right); + return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameCoopMatUse(right) && sameSpirvType(right); #else return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right); #endif @@ -2923,8 +2986,10 @@ class TType { } if (copyOf.typeParameters) { - typeParameters = new TArraySizes; - *typeParameters = *copyOf.typeParameters; + typeParameters = new TTypeParameters; + typeParameters->arraySizes = new TArraySizes; + *typeParameters->arraySizes = *copyOf.typeParameters->arraySizes; + typeParameters->basicType = copyOf.basicType; } if (copyOf.isStruct() && copyOf.structure) { @@ -2962,7 +3027,9 @@ class TType { // functionality is added. // HLSL does have a 1-component vectors, so this will be true to disambiguate // from a scalar. - bool coopmat : 1; + bool coopmatNV : 1; + bool coopmatKHR : 1; + int coopmatKHRuse : 4; // Accepts one of three values: 0, 1, 2 (gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator) TQualifier qualifier; TArraySizes* arraySizes; // nullptr unless an array; can be shared across types @@ -2975,7 +3042,7 @@ class TType { TString *fieldName; // for structure field names TString *typeName; // for structure type name TSampler sampler; - TArraySizes* typeParameters;// nullptr unless a parameterized type; can be shared across types + TTypeParameters *typeParameters;// nullptr unless a parameterized type; can be shared across types #ifndef GLSLANG_WEB TSpirvType* spirvType; // SPIR-V type defined by spirv_type directive #endif diff --git a/glslang/Include/arrays.h b/glslang/Include/arrays.h index 1da14d09c8..91e1908355 100644 --- a/glslang/Include/arrays.h +++ b/glslang/Include/arrays.h @@ -147,6 +147,15 @@ struct TSmallArrayVector { sizes->erase(sizes->begin()); } + void pop_back() + { + assert(sizes != nullptr && sizes->size() > 0); + if (sizes->size() == 1) + dealloc(); + else + sizes->resize(sizes->size() - 1); + } + // 'this' should currently not be holding anything, and copyNonFront // will make it hold a copy of all but the first element of rhs. // (This would be useful for making a type that is dereferenced by @@ -306,6 +315,7 @@ struct TArraySizes { bool isDefaultImplicitlySized() const { return implicitlySized && implicitArraySize == 0; } void setImplicitlySized(bool isImplicitSizing) { implicitlySized = isImplicitSizing; } void dereference() { sizes.pop_front(); } + void removeLastSize() { sizes.pop_back(); } void copyDereferenced(const TArraySizes& rhs) { assert(sizes.size() == 0); diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index e6b4df4b65..3363f71339 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -629,6 +629,9 @@ enum TOperator { EOpCooperativeMatrixLoad, EOpCooperativeMatrixStore, EOpCooperativeMatrixMulAdd, + EOpCooperativeMatrixLoadNV, + EOpCooperativeMatrixStoreNV, + EOpCooperativeMatrixMulAddNV, EOpBeginInvocationInterlock, // Fragment only EOpEndInvocationInterlock, // Fragment only @@ -766,7 +769,8 @@ enum TOperator { EOpConstructTextureSampler, EOpConstructNonuniform, // expected to be transformed away, not present in final AST EOpConstructReference, - EOpConstructCooperativeMatrix, + EOpConstructCooperativeMatrixNV, + EOpConstructCooperativeMatrixKHR, EOpConstructAccStruct, EOpConstructGuardEnd, diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 39f42b62f1..373e7be071 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4397,6 +4397,94 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "icoopmatNV coopMatMulAddNV(icoopmatNV A, icoopmatNV B, icoopmatNV C);\n" "ucoopmatNV coopMatMulAddNV(ucoopmatNV A, ucoopmatNV B, ucoopmatNV C);\n" ); + + std::string cooperativeMatrixFuncs = + "void coopMatLoad(out coopmat m, volatile coherent int8_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent int16_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent int32_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent int64_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent uint8_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent uint16_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent uint32_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent uint64_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent float16_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent float[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent float64_t[] buf, uint element, uint stride, int matrixLayout);\n" + + "void coopMatLoad(out coopmat m, volatile coherent i8vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent i16vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent i32vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent i64vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u8vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u16vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u32vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u64vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent f16vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent f32vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent f64vec2[] buf, uint element, uint stride, int matrixLayout);\n" + + "void coopMatLoad(out coopmat m, volatile coherent i8vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent i16vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent i32vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent i64vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u8vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u16vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u32vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent u64vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent f16vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent f32vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatLoad(out coopmat m, volatile coherent f64vec4[] buf, uint element, uint stride, int matrixLayout);\n" + + "void coopMatStore(coopmat m, volatile coherent int8_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent int16_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent int32_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent int64_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent uint8_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent uint16_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent uint32_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent uint64_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent float16_t[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent float[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent float64_t[] buf, uint element, uint stride, int matrixLayout);\n" + + "void coopMatStore(coopmat m, volatile coherent i8vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent i16vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent i32vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent i64vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u8vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u16vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u32vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u64vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent f16vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent f32vec2[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent f64vec2[] buf, uint element, uint stride, int matrixLayout);\n" + + "void coopMatStore(coopmat m, volatile coherent i8vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent i16vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent i32vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent i64vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u8vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u16vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u32vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent u64vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent f16vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent f32vec4[] buf, uint element, uint stride, int matrixLayout);\n" + "void coopMatStore(coopmat m, volatile coherent f64vec4[] buf, uint element, uint stride, int matrixLayout);\n" + + "coopmat coopMatMulAdd(coopmat A, coopmat B, coopmat C);\n" + "coopmat coopMatMulAdd(coopmat A, coopmat B, coopmat C, int matrixOperands);\n"; + + commonBuiltins.append(cooperativeMatrixFuncs.c_str()); + + commonBuiltins.append( + "const int gl_MatrixUseA = 0;\n" + "const int gl_MatrixUseB = 1;\n" + "const int gl_MatrixUseAccumulator = 2;\n" + "const int gl_MatrixOperandsSaturatingAccumulation = 0x10;\n" + "const int gl_CooperativeMatrixLayoutRowMajor = 0;\n" + "const int gl_CooperativeMatrixLayoutColumnMajor = 1;\n" + "\n" + ); } //============================================================================ @@ -8897,6 +8985,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("coopMatMulAddNV", 2, coopExt); } + { + symbolTable.setFunctionExtensions("coopMatLoad", 1, &E_GL_KHR_cooperative_matrix); + symbolTable.setFunctionExtensions("coopMatStore", 1, &E_GL_KHR_cooperative_matrix); + symbolTable.setFunctionExtensions("coopMatMulAdd", 1, &E_GL_KHR_cooperative_matrix); + } + if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { symbolTable.setFunctionExtensions("dFdx", 1, &E_GL_NV_compute_shader_derivatives); symbolTable.setFunctionExtensions("dFdy", 1, &E_GL_NV_compute_shader_derivatives); @@ -10005,9 +10099,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("dFdyCoarse", EOpDPdyCoarse); symbolTable.relateToOperator("fwidthCoarse",EOpFwidthCoarse); } - symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoad); - symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStore); - symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAdd); + symbolTable.relateToOperator("coopMatLoadNV", EOpCooperativeMatrixLoadNV); + symbolTable.relateToOperator("coopMatStoreNV", EOpCooperativeMatrixStoreNV); + symbolTable.relateToOperator("coopMatMulAddNV", EOpCooperativeMatrixMulAddNV); + + symbolTable.relateToOperator("coopMatLoad", EOpCooperativeMatrixLoad); + symbolTable.relateToOperator("coopMatStore", EOpCooperativeMatrixStore); + symbolTable.relateToOperator("coopMatMulAdd", EOpCooperativeMatrixMulAdd); break; case EShLangRayGen: diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index e542f90c8f..15dea37f8f 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -1049,6 +1049,12 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt if (type.isArray() || node->getType().isArray()) return nullptr; + // Reject implicit conversions to cooperative matrix types + if (node->getType().isCoopMat() && + op != EOpConstructCooperativeMatrixNV && + op != EOpConstructCooperativeMatrixKHR) + return nullptr; + // Note: callers are responsible for other aspects of shape, // like vector and matrix sizes. @@ -1117,7 +1123,8 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpSequence: case EOpConstructStruct: - case EOpConstructCooperativeMatrix: + case EOpConstructCooperativeMatrixNV: + case EOpConstructCooperativeMatrixKHR: if (type.isReference() || node->getType().isReference()) { // types must match to assign a reference @@ -2008,8 +2015,11 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const if (type.getQualifier().isNonUniform()) return EOpConstructNonuniform; - if (type.isCoopMat()) - return EOpConstructCooperativeMatrix; + if (type.isCoopMatNV()) + return EOpConstructCooperativeMatrixNV; + + if (type.isCoopMatKHR()) + return EOpConstructCooperativeMatrixKHR; switch (type.getBasicType()) { case EbtStruct: @@ -3526,20 +3536,28 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) } if (left->getType().isCoopMat() || right->getType().isCoopMat()) { + // Operations on two cooperative matrices must have identical types if (left->getType().isCoopMat() && right->getType().isCoopMat() && - *left->getType().getTypeParameters() != *right->getType().getTypeParameters()) { + left->getType() != right->getType()) { return false; } switch (op) { case EOpMul: case EOpMulAssign: - if (left->getType().isCoopMat() && right->getType().isCoopMat()) { + // Mul not supported in NV_cooperative_matrix + if (left->getType().isCoopMatNV() && right->getType().isCoopMatNV()) { return false; } - if (op == EOpMulAssign && right->getType().isCoopMat()) { + // NV_cooperative_matrix supports MulAssign is for mat*=scalar only. + // KHR_cooperative_matrix supports it for mat*=mat as well. + if (op == EOpMulAssign && right->getType().isCoopMatNV()) { return false; } - node.setOp(op == EOpMulAssign ? EOpMatrixTimesScalarAssign : EOpMatrixTimesScalar); + // Use MatrixTimesScalar if either operand is not a matrix. Otherwise use Mul. + if (!left->getType().isCoopMat() || !right->getType().isCoopMat()) { + node.setOp(op == EOpMulAssign ? EOpMatrixTimesScalarAssign : EOpMatrixTimesScalar); + } + // In case of scalar*matrix, take the result type from the matrix. if (right->getType().isCoopMat()) { node.setType(right->getType()); } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 4efdbdf318..f36d143924 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1501,7 +1501,8 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction if (result->getAsTyped()->getType().isCoopMat() && !result->getAsTyped()->getType().isParameterized()) { - assert(fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAdd); + assert(fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAdd || + fnCandidate->getBuiltInOp() == EOpCooperativeMatrixMulAddNV); result->setType(result->getAsAggregate()->getSequence()[2]->getAsTyped()->getType()); } @@ -3642,6 +3643,12 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T } TIntermTyped* typed = node->getAsTyped(); + if (type.isCoopMat() && typed->getType().isCoopMat() && + !type.sameCoopMatShapeAndUse(typed->getType())) { + error(loc, "Cooperative matrix type parameters mismatch", constructorString.c_str(), ""); + return true; + } + if (typed == nullptr) { error(loc, "constructor argument does not have a type", constructorString.c_str(), ""); return true; @@ -4302,7 +4309,7 @@ TPrecisionQualifier TParseContext::getDefaultPrecision(TPublicType& publicType) return defaultPrecision[publicType.basicType]; } -void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType baseType, TQualifier& qualifier) +void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType baseType, TQualifier& qualifier, bool isCoopMat) { // Built-in symbols are allowed some ambiguous precisions, to be pinned down // later by context. @@ -4314,6 +4321,9 @@ void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType ba error(loc, "atomic counters can only be highp", "atomic_uint", ""); #endif + if (isCoopMat) + return; + if (baseType == EbtFloat || baseType == EbtUint || baseType == EbtInt || baseType == EbtSampler || baseType == EbtAtomicUint) { if (qualifier.precision == EpqNone) { if (relaxedErrors()) @@ -4358,7 +4368,8 @@ bool TParseContext::containsFieldWithBasicType(const TType& type, TBasicType bas // // Do size checking for an array type's size. // -void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TArraySize& sizePair, const char *sizeType) +void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TArraySize& sizePair, + const char* sizeType, const bool allowZero) { bool isConst = false; sizePair.node = nullptr; @@ -4378,9 +4389,8 @@ void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TA TIntermSymbol* symbol = expr->getAsSymbolNode(); if (symbol && symbol->getConstArray().size() > 0) size = symbol->getConstArray()[0].getIConst(); - } else if (expr->getAsUnaryNode() && - expr->getAsUnaryNode()->getOp() == glslang::EOpArrayLength && - expr->getAsUnaryNode()->getOperand()->getType().isCoopMat()) { + } else if (expr->getAsUnaryNode() && expr->getAsUnaryNode()->getOp() == glslang::EOpArrayLength && + expr->getAsUnaryNode()->getOperand()->getType().isCoopMatNV()) { isConst = true; size = 1; sizePair.node = expr->getAsUnaryNode(); @@ -4394,9 +4404,16 @@ void TParseContext::arraySizeCheck(const TSourceLoc& loc, TIntermTyped* expr, TA return; } - if (size <= 0) { - error(loc, sizeType, "", "must be a positive integer"); - return; + if (allowZero) { + if (size < 0) { + error(loc, sizeType, "", "must be a non-negative integer"); + return; + } + } else { + if (size <= 0) { + error(loc, sizeType, "", "must be a positive integer"); + return; + } } } @@ -7371,6 +7388,43 @@ void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType #endif } +void TParseContext::coopMatTypeParametersCheck(const TSourceLoc& loc, const TPublicType& publicType) +{ +#ifndef GLSLANG_WEB + if (parsingBuiltins) + return; + if (publicType.isCoopmatKHR()) { + if (publicType.typeParameters == nullptr) { + error(loc, "coopmat missing type parameters", "", ""); + return; + } + switch (publicType.typeParameters->basicType) { + case EbtFloat: + case EbtFloat16: + case EbtInt: + case EbtInt8: + case EbtInt16: + case EbtUint: + case EbtUint8: + case EbtUint16: + break; + default: + error(loc, "coopmat invalid basic type", TType::getBasicString(publicType.typeParameters->basicType), ""); + break; + } + if (publicType.typeParameters->arraySizes->getNumDims() != 4) { + error(loc, "coopmat incorrect number of type parameters", "", ""); + return; + } + int use = publicType.typeParameters->arraySizes->getDimSize(3); + if (use < 0 || use > 2) { + error(loc, "coopmat invalid matrix Use", "", ""); + return; + } + } +#endif +} + bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType&, TArraySizes*, TIntermTyped* initializer, TType& type) { @@ -7486,29 +7540,43 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden } - if (type.isCoopMat()) { + if (type.isCoopMatKHR()) { intermediate.setUseVulkanMemoryModel(); intermediate.setUseStorageBuffer(); - if (!publicType.typeParameters || publicType.typeParameters->getNumDims() != 4) { + if (!publicType.typeParameters || !publicType.typeParameters->arraySizes || + publicType.typeParameters->arraySizes->getNumDims() != 3) { + error(loc, "unexpected number type parameters", identifier.c_str(), ""); + } + if (publicType.typeParameters) { + if (!isTypeFloat(publicType.typeParameters->basicType) && !isTypeInt(publicType.typeParameters->basicType)) { + error(loc, "expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type", identifier.c_str(), ""); + } + } + } + else if (type.isCoopMatNV()) { + intermediate.setUseVulkanMemoryModel(); + intermediate.setUseStorageBuffer(); + + if (!publicType.typeParameters || publicType.typeParameters->arraySizes->getNumDims() != 4) { error(loc, "expected four type parameters", identifier.c_str(), ""); } if (publicType.typeParameters) { if (isTypeFloat(publicType.basicType) && - publicType.typeParameters->getDimSize(0) != 16 && - publicType.typeParameters->getDimSize(0) != 32 && - publicType.typeParameters->getDimSize(0) != 64) { + publicType.typeParameters->arraySizes->getDimSize(0) != 16 && + publicType.typeParameters->arraySizes->getDimSize(0) != 32 && + publicType.typeParameters->arraySizes->getDimSize(0) != 64) { error(loc, "expected 16, 32, or 64 bits for first type parameter", identifier.c_str(), ""); } if (isTypeInt(publicType.basicType) && - publicType.typeParameters->getDimSize(0) != 8 && - publicType.typeParameters->getDimSize(0) != 32) { - error(loc, "expected 8 or 32 bits for first type parameter", identifier.c_str(), ""); + publicType.typeParameters->arraySizes->getDimSize(0) != 8 && + publicType.typeParameters->arraySizes->getDimSize(0) != 16 && + publicType.typeParameters->arraySizes->getDimSize(0) != 32) { + error(loc, "expected 8, 16, or 32 bits for first type parameter", identifier.c_str(), ""); } } - } else { - if (publicType.typeParameters && publicType.typeParameters->getNumDims() != 0) { + if (publicType.typeParameters && publicType.typeParameters->arraySizes->getNumDims() != 0) { error(loc, "unexpected type parameters", identifier.c_str(), ""); } } @@ -8336,14 +8404,18 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T return nullptr; } - case EOpConstructCooperativeMatrix: + case EOpConstructCooperativeMatrixNV: + case EOpConstructCooperativeMatrixKHR: + if (node->getType() == type) { + return node; + } if (!node->getType().isCoopMat()) { if (type.getBasicType() != node->getType().getBasicType()) { node = intermediate.addConversion(type.getBasicType(), node); if (node == nullptr) return nullptr; } - node = intermediate.setAggregateOperator(node, EOpConstructCooperativeMatrix, type, node->getLoc()); + node = intermediate.setAggregateOperator(node, op, type, node->getLoc()); } else { TOperator op = EOpNull; switch (type.getBasicType()) { @@ -8356,6 +8428,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EbtFloat16: op = EOpConvFloat16ToInt; break; case EbtUint8: op = EOpConvUint8ToInt; break; case EbtInt8: op = EOpConvInt8ToInt; break; + case EbtUint16: op = EOpConvUint16ToInt; break; + case EbtInt16: op = EOpConvInt16ToInt; break; case EbtUint: op = EOpConvUintToInt; break; default: assert(0); } @@ -8366,8 +8440,33 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EbtFloat16: op = EOpConvFloat16ToUint; break; case EbtUint8: op = EOpConvUint8ToUint; break; case EbtInt8: op = EOpConvInt8ToUint; break; + case EbtUint16: op = EOpConvUint16ToUint; break; + case EbtInt16: op = EOpConvInt16ToUint; break; case EbtInt: op = EOpConvIntToUint; break; - case EbtUint: op = EOpConvUintToInt8; break; + default: assert(0); + } + break; + case EbtInt16: + switch (node->getType().getBasicType()) { + case EbtFloat: op = EOpConvFloatToInt16; break; + case EbtFloat16: op = EOpConvFloat16ToInt16; break; + case EbtUint8: op = EOpConvUint8ToInt16; break; + case EbtInt8: op = EOpConvInt8ToInt16; break; + case EbtUint16: op = EOpConvUint16ToInt16; break; + case EbtInt: op = EOpConvIntToInt16; break; + case EbtUint: op = EOpConvUintToInt16; break; + default: assert(0); + } + break; + case EbtUint16: + switch (node->getType().getBasicType()) { + case EbtFloat: op = EOpConvFloatToUint16; break; + case EbtFloat16: op = EOpConvFloat16ToUint16; break; + case EbtUint8: op = EOpConvUint8ToUint16; break; + case EbtInt8: op = EOpConvInt8ToUint16; break; + case EbtInt16: op = EOpConvInt16ToUint16; break; + case EbtInt: op = EOpConvIntToUint16; break; + case EbtUint: op = EOpConvUintToUint16; break; default: assert(0); } break; @@ -8376,6 +8475,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EbtFloat: op = EOpConvFloatToInt8; break; case EbtFloat16: op = EOpConvFloat16ToInt8; break; case EbtUint8: op = EOpConvUint8ToInt8; break; + case EbtInt16: op = EOpConvInt16ToInt8; break; + case EbtUint16: op = EOpConvUint16ToInt8; break; case EbtInt: op = EOpConvIntToInt8; break; case EbtUint: op = EOpConvUintToInt8; break; default: assert(0); @@ -8386,6 +8487,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EbtFloat: op = EOpConvFloatToUint8; break; case EbtFloat16: op = EOpConvFloat16ToUint8; break; case EbtInt8: op = EOpConvInt8ToUint8; break; + case EbtInt16: op = EOpConvInt16ToUint8; break; + case EbtUint16: op = EOpConvUint16ToUint8; break; case EbtInt: op = EOpConvIntToUint8; break; case EbtUint: op = EOpConvUintToUint8; break; default: assert(0); @@ -8396,6 +8499,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EbtFloat16: op = EOpConvFloat16ToFloat; break; case EbtInt8: op = EOpConvInt8ToFloat; break; case EbtUint8: op = EOpConvUint8ToFloat; break; + case EbtInt16: op = EOpConvInt16ToFloat; break; + case EbtUint16: op = EOpConvUint16ToFloat; break; case EbtInt: op = EOpConvIntToFloat; break; case EbtUint: op = EOpConvUintToFloat; break; default: assert(0); @@ -8406,6 +8511,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EbtFloat: op = EOpConvFloatToFloat16; break; case EbtInt8: op = EOpConvInt8ToFloat16; break; case EbtUint8: op = EOpConvUint8ToFloat16; break; + case EbtInt16: op = EOpConvInt16ToFloat16; break; + case EbtUint16: op = EOpConvUint16ToFloat16; break; case EbtInt: op = EOpConvIntToFloat16; break; case EbtUint: op = EOpConvUintToFloat16; break; default: assert(0); diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 66795fd390..47ee31d1c0 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -382,7 +382,7 @@ class TParseContext : public TParseContextBase { void globalCheck(const TSourceLoc&, const char* token); bool constructorError(const TSourceLoc&, TIntermNode*, TFunction&, TOperator, TType&); bool constructorTextureSamplerError(const TSourceLoc&, const TFunction&); - void arraySizeCheck(const TSourceLoc&, TIntermTyped* expr, TArraySize&, const char *sizeType); + void arraySizeCheck(const TSourceLoc&, TIntermTyped* expr, TArraySize&, const char *sizeType, const bool allowZero = false); bool arrayQualifierError(const TSourceLoc&, const TQualifier&); bool arrayError(const TSourceLoc&, const TType&); void arraySizeRequiredCheck(const TSourceLoc&, const TArraySizes&); @@ -404,7 +404,7 @@ class TParseContext : public TParseContextBase { void setDefaultPrecision(const TSourceLoc&, TPublicType&, TPrecisionQualifier); int computeSamplerTypeIndex(TSampler&); TPrecisionQualifier getDefaultPrecision(TPublicType&); - void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&); + void precisionQualifierCheck(const TSourceLoc&, TBasicType, TQualifier&, bool isCoopMat); void parameterTypeCheck(const TSourceLoc&, TStorageQualifier qualifier, const TType& type); bool containsFieldWithBasicType(const TType& type ,TBasicType basicType); TSymbol* redeclareBuiltinVariable(const TSourceLoc&, const TString&, const TQualifier&, const TShaderQualifiers&); @@ -422,6 +422,7 @@ class TParseContext : public TParseContextBase { void inductiveLoopCheck(const TSourceLoc&, TIntermNode* init, TIntermLoop* loop); void arrayLimitCheck(const TSourceLoc&, const TString&, int size); void limitCheck(const TSourceLoc&, int value, const char* limit, const char* feature); + void coopMatTypeParametersCheck(const TSourceLoc&, const TPublicType&); void inductiveLoopBodyCheck(TIntermNode*, long long loopIndexId, TSymbolTable&); void constantIndexExpressionCheck(TIntermNode*); diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 0a0d10946f..e9420fa5ec 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -770,6 +770,8 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["icoopmatNV"] = ICOOPMATNV; (*KeywordMap)["ucoopmatNV"] = UCOOPMATNV; + (*KeywordMap)["coopmat"] = COOPMAT; + (*KeywordMap)["hitObjectNV"] = HITOBJECTNV; (*KeywordMap)["hitObjectAttributeNV"] = HITOBJECTATTRNV; @@ -1781,6 +1783,13 @@ int TScanContext::tokenizeIdentifier() return keyword; return identifierOrType(); + case COOPMAT: + afterType = true; + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_KHR_cooperative_matrix)) + return keyword; + return identifierOrType(); + case DEMOTE: if (parseContext.extensionTurnedOn(E_GL_EXT_demote_to_helper_invocation)) return keyword; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index eae0a59f3d..d6808a7aef 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -263,6 +263,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable; + extensionBehavior[E_GL_KHR_cooperative_matrix] = EBhDisable; + // #line and #include extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable; extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable; @@ -517,6 +519,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_KHR_shader_subgroup_clustered 1\n" "#define GL_KHR_shader_subgroup_quad 1\n" + "#define GL_KHR_cooperative_matrix 1\n" + "#define GL_EXT_shader_image_int64 1\n" "#define GL_EXT_shader_atomic_int64 1\n" "#define GL_EXT_shader_realtime_clock 1\n" @@ -1335,7 +1339,7 @@ void TParseVersions::int64Check(const TSourceLoc& loc, const char* op, bool buil } } -void TParseVersions::fcoopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn) +void TParseVersions::fcoopmatCheckNV(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_NV_cooperative_matrix}; @@ -1343,13 +1347,21 @@ void TParseVersions::fcoopmatCheck(const TSourceLoc& loc, const char* op, bool b } } -void TParseVersions::intcoopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn) +void TParseVersions::intcoopmatCheckNV(const TSourceLoc& loc, const char* op, bool builtIn) { if (!builtIn) { const char* const extensions[] = {E_GL_NV_integer_cooperative_matrix}; requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } + +void TParseVersions::coopmatCheck(const TSourceLoc& loc, const char* op, bool builtIn) +{ + if (!builtIn) { + const char* const extensions[] = {E_GL_KHR_cooperative_matrix}; + requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); + } +} #endif // GLSLANG_WEB // Call for any operation removed because SPIR-V is in use. void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op) diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 01b8b5d3ca..29ebed248e 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -174,6 +174,7 @@ const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_sub const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered"; const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad"; const char* const E_GL_KHR_memory_scope_semantics = "GL_KHR_memory_scope_semantics"; +const char* const E_GL_KHR_cooperative_matrix = "GL_KHR_cooperative_matrix"; const char* const E_GL_EXT_shader_atomic_int64 = "GL_EXT_shader_atomic_int64"; diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index f6f36d60bf..387ef25221 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -129,7 +129,7 @@ using namespace glslang; glslang::TArraySizes* arraySizes; glslang::TIdentifierList* identifierList; }; - glslang::TArraySizes* typeParameters; + glslang::TTypeParameters* typeParameters; } interm; } @@ -211,6 +211,7 @@ GLSLANG_WEB_EXCLUDE_ON %token ACCSTRUCTEXT %token RAYQUERYEXT %token FCOOPMATNV ICOOPMATNV UCOOPMATNV +%token COOPMAT %token HITOBJECTNV HITOBJECTATTRNV // combined image/sampler @@ -1108,7 +1109,7 @@ parameter_declaration $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); @@ -1120,7 +1121,7 @@ parameter_declaration parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); } // // Without name @@ -1129,7 +1130,7 @@ parameter_declaration $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); @@ -1140,7 +1141,7 @@ parameter_declaration parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); } ; @@ -1217,7 +1218,7 @@ fully_specified_type parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); } - parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier); + parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier, $$.isCoopmat()); } | type_qualifier type_specifier { parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2); @@ -1234,7 +1235,7 @@ fully_specified_type parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers); $2.shaderQualifiers.merge($1.shaderQualifiers); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat()); $$ = $2; @@ -1716,6 +1717,8 @@ type_specifier $$ = $1; $$.qualifier.precision = parseContext.getDefaultPrecision($$); $$.typeParameters = $2; + parseContext.coopMatTypeParametersCheck($1.loc, $$); + } | type_specifier_nonarray type_parameter_specifier_opt array_specifier { parseContext.arrayOfArrayVersionCheck($3.loc, $3.arraySizes); @@ -1723,6 +1726,7 @@ type_specifier $$.qualifier.precision = parseContext.getDefaultPrecision($$); $$.typeParameters = $2; $$.arraySizes = $3.arraySizes; + parseContext.coopMatTypeParametersCheck($1.loc, $$); } ; @@ -1769,19 +1773,25 @@ type_parameter_specifier ; type_parameter_specifier_list - : unary_expression { - $$ = new TArraySizes; + : type_specifier { + $$ = new TTypeParameters; + $$->arraySizes = new TArraySizes; + $$->basicType = $1.basicType; + } + | unary_expression { + $$ = new TTypeParameters; + $$->arraySizes = new TArraySizes; TArraySize size; - parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter"); - $$->addInnerSize(size); + parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter", true); + $$->arraySizes->addInnerSize(size); } | type_parameter_specifier_list COMMA unary_expression { $$ = $1; TArraySize size; - parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter"); - $$->addInnerSize(size); + parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter", true); + $$->arraySizes->addInnerSize(size); } ; @@ -3521,22 +3531,32 @@ GLSLANG_WEB_EXCLUDE_ON $$.sampler.setSubpass(EbtUint, true); } | FCOOPMATNV { - parseContext.fcoopmatCheck($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fcoopmatCheckNV($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; - $$.coopmat = true; + $$.coopmatNV = true; + $$.coopmatKHR = false; } | ICOOPMATNV { - parseContext.intcoopmatCheck($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.intcoopmatCheckNV($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; - $$.coopmat = true; + $$.coopmatNV = true; + $$.coopmatKHR = false; } | UCOOPMATNV { - parseContext.intcoopmatCheck($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.intcoopmatCheckNV($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; - $$.coopmat = true; + $$.coopmatNV = true; + $$.coopmatKHR = false; + } + | COOPMAT { + parseContext.coopmatCheck($1.loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtCoopmat; + $$.coopmatNV = false; + $$.coopmatKHR = true; } | spirv_type_specifier { parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); @@ -3634,7 +3654,7 @@ struct_declaration $$ = $2; parseContext.voidErrorCheck($1.loc, (*$2)[0].type->getFieldName(), $1.basicType); - parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier); + parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier, $1.isCoopmat()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($1); @@ -3658,7 +3678,7 @@ struct_declaration parseContext.memberQualifierCheck($1); parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($2); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 4ab39f154a..6f673a7800 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -129,7 +129,7 @@ using namespace glslang; glslang::TArraySizes* arraySizes; glslang::TIdentifierList* identifierList; }; - glslang::TArraySizes* typeParameters; + glslang::TTypeParameters* typeParameters; } interm; } @@ -211,6 +211,7 @@ extern int yylex(YYSTYPE*, TParseContext&); %token ACCSTRUCTEXT %token RAYQUERYEXT %token FCOOPMATNV ICOOPMATNV UCOOPMATNV +%token COOPMAT %token HITOBJECTNV HITOBJECTATTRNV // combined image/sampler @@ -1108,7 +1109,7 @@ parameter_declaration $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); @@ -1120,7 +1121,7 @@ parameter_declaration parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); } // // Without name @@ -1129,7 +1130,7 @@ parameter_declaration $$ = $2; if ($1.qualifier.precision != EpqNone) $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); @@ -1140,7 +1141,7 @@ parameter_declaration parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier()); + parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); } ; @@ -1217,7 +1218,7 @@ fully_specified_type parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); } - parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier); + parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier, $$.isCoopmat()); } | type_qualifier type_specifier { parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2); @@ -1234,7 +1235,7 @@ fully_specified_type parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers); $2.shaderQualifiers.merge($1.shaderQualifiers); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat()); $$ = $2; @@ -1716,6 +1717,8 @@ type_specifier $$ = $1; $$.qualifier.precision = parseContext.getDefaultPrecision($$); $$.typeParameters = $2; + parseContext.coopMatTypeParametersCheck($1.loc, $$); + } | type_specifier_nonarray type_parameter_specifier_opt array_specifier { parseContext.arrayOfArrayVersionCheck($3.loc, $3.arraySizes); @@ -1723,6 +1726,7 @@ type_specifier $$.qualifier.precision = parseContext.getDefaultPrecision($$); $$.typeParameters = $2; $$.arraySizes = $3.arraySizes; + parseContext.coopMatTypeParametersCheck($1.loc, $$); } ; @@ -1769,19 +1773,25 @@ type_parameter_specifier ; type_parameter_specifier_list - : unary_expression { - $$ = new TArraySizes; + : type_specifier { + $$ = new TTypeParameters; + $$->arraySizes = new TArraySizes; + $$->basicType = $1.basicType; + } + | unary_expression { + $$ = new TTypeParameters; + $$->arraySizes = new TArraySizes; TArraySize size; - parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter"); - $$->addInnerSize(size); + parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter", true); + $$->arraySizes->addInnerSize(size); } | type_parameter_specifier_list COMMA unary_expression { $$ = $1; TArraySize size; - parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter"); - $$->addInnerSize(size); + parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter", true); + $$->arraySizes->addInnerSize(size); } ; @@ -3521,22 +3531,32 @@ type_specifier_nonarray $$.sampler.setSubpass(EbtUint, true); } | FCOOPMATNV { - parseContext.fcoopmatCheck($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fcoopmatCheckNV($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtFloat; - $$.coopmat = true; + $$.coopmatNV = true; + $$.coopmatKHR = false; } | ICOOPMATNV { - parseContext.intcoopmatCheck($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.intcoopmatCheckNV($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtInt; - $$.coopmat = true; + $$.coopmatNV = true; + $$.coopmatKHR = false; } | UCOOPMATNV { - parseContext.intcoopmatCheck($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.intcoopmatCheckNV($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtUint; - $$.coopmat = true; + $$.coopmatNV = true; + $$.coopmatKHR = false; + } + | COOPMAT { + parseContext.coopmatCheck($1.loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); + $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); + $$.basicType = EbtCoopmat; + $$.coopmatNV = false; + $$.coopmatKHR = true; } | spirv_type_specifier { parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); @@ -3634,7 +3654,7 @@ struct_declaration $$ = $2; parseContext.voidErrorCheck($1.loc, (*$2)[0].type->getFieldName(), $1.basicType); - parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier); + parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier, $1.isCoopmat()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($1); @@ -3658,7 +3678,7 @@ struct_declaration parseContext.memberQualifierCheck($1); parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier); + parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat()); for (unsigned int i = 0; i < $$->size(); ++i) { TType type($2); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index cee8a632b4..a265abc802 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.4. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison implementation for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -46,10 +46,10 @@ USER NAME SPACE" below. */ /* Identify Bison output, and Bison version. */ -#define YYBISON 30704 +#define YYBISON 30802 /* Bison version string. */ -#define YYBISON_VERSION "3.7.4" +#define YYBISON_VERSION "3.8.2" /* Skeleton name. */ #define YYSKELETON_NAME "yacc.c" @@ -287,436 +287,437 @@ enum yysymbol_kind_t YYSYMBOL_FCOOPMATNV = 163, /* FCOOPMATNV */ YYSYMBOL_ICOOPMATNV = 164, /* ICOOPMATNV */ YYSYMBOL_UCOOPMATNV = 165, /* UCOOPMATNV */ - YYSYMBOL_HITOBJECTNV = 166, /* HITOBJECTNV */ - YYSYMBOL_HITOBJECTATTRNV = 167, /* HITOBJECTATTRNV */ - YYSYMBOL_SAMPLERCUBEARRAY = 168, /* SAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 169, /* SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_ISAMPLERCUBEARRAY = 170, /* ISAMPLERCUBEARRAY */ - YYSYMBOL_USAMPLERCUBEARRAY = 171, /* USAMPLERCUBEARRAY */ - YYSYMBOL_SAMPLER1D = 172, /* SAMPLER1D */ - YYSYMBOL_SAMPLER1DARRAY = 173, /* SAMPLER1DARRAY */ - YYSYMBOL_SAMPLER1DARRAYSHADOW = 174, /* SAMPLER1DARRAYSHADOW */ - YYSYMBOL_ISAMPLER1D = 175, /* ISAMPLER1D */ - YYSYMBOL_SAMPLER1DSHADOW = 176, /* SAMPLER1DSHADOW */ - YYSYMBOL_SAMPLER2DRECT = 177, /* SAMPLER2DRECT */ - YYSYMBOL_SAMPLER2DRECTSHADOW = 178, /* SAMPLER2DRECTSHADOW */ - YYSYMBOL_ISAMPLER2DRECT = 179, /* ISAMPLER2DRECT */ - YYSYMBOL_USAMPLER2DRECT = 180, /* USAMPLER2DRECT */ - YYSYMBOL_SAMPLERBUFFER = 181, /* SAMPLERBUFFER */ - YYSYMBOL_ISAMPLERBUFFER = 182, /* ISAMPLERBUFFER */ - YYSYMBOL_USAMPLERBUFFER = 183, /* USAMPLERBUFFER */ - YYSYMBOL_SAMPLER2DMS = 184, /* SAMPLER2DMS */ - YYSYMBOL_ISAMPLER2DMS = 185, /* ISAMPLER2DMS */ - YYSYMBOL_USAMPLER2DMS = 186, /* USAMPLER2DMS */ - YYSYMBOL_SAMPLER2DMSARRAY = 187, /* SAMPLER2DMSARRAY */ - YYSYMBOL_ISAMPLER2DMSARRAY = 188, /* ISAMPLER2DMSARRAY */ - YYSYMBOL_USAMPLER2DMSARRAY = 189, /* USAMPLER2DMSARRAY */ - YYSYMBOL_SAMPLEREXTERNALOES = 190, /* SAMPLEREXTERNALOES */ - YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 191, /* SAMPLEREXTERNAL2DY2YEXT */ - YYSYMBOL_ISAMPLER1DARRAY = 192, /* ISAMPLER1DARRAY */ - YYSYMBOL_USAMPLER1D = 193, /* USAMPLER1D */ - YYSYMBOL_USAMPLER1DARRAY = 194, /* USAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER1D = 195, /* F16SAMPLER1D */ - YYSYMBOL_F16SAMPLER2D = 196, /* F16SAMPLER2D */ - YYSYMBOL_F16SAMPLER3D = 197, /* F16SAMPLER3D */ - YYSYMBOL_F16SAMPLER2DRECT = 198, /* F16SAMPLER2DRECT */ - YYSYMBOL_F16SAMPLERCUBE = 199, /* F16SAMPLERCUBE */ - YYSYMBOL_F16SAMPLER1DARRAY = 200, /* F16SAMPLER1DARRAY */ - YYSYMBOL_F16SAMPLER2DARRAY = 201, /* F16SAMPLER2DARRAY */ - YYSYMBOL_F16SAMPLERCUBEARRAY = 202, /* F16SAMPLERCUBEARRAY */ - YYSYMBOL_F16SAMPLERBUFFER = 203, /* F16SAMPLERBUFFER */ - YYSYMBOL_F16SAMPLER2DMS = 204, /* F16SAMPLER2DMS */ - YYSYMBOL_F16SAMPLER2DMSARRAY = 205, /* F16SAMPLER2DMSARRAY */ - YYSYMBOL_F16SAMPLER1DSHADOW = 206, /* F16SAMPLER1DSHADOW */ - YYSYMBOL_F16SAMPLER2DSHADOW = 207, /* F16SAMPLER2DSHADOW */ - YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 208, /* F16SAMPLER1DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 209, /* F16SAMPLER2DARRAYSHADOW */ - YYSYMBOL_F16SAMPLER2DRECTSHADOW = 210, /* F16SAMPLER2DRECTSHADOW */ - YYSYMBOL_F16SAMPLERCUBESHADOW = 211, /* F16SAMPLERCUBESHADOW */ - YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 212, /* F16SAMPLERCUBEARRAYSHADOW */ - YYSYMBOL_IMAGE1D = 213, /* IMAGE1D */ - YYSYMBOL_IIMAGE1D = 214, /* IIMAGE1D */ - YYSYMBOL_UIMAGE1D = 215, /* UIMAGE1D */ - YYSYMBOL_IMAGE2D = 216, /* IMAGE2D */ - YYSYMBOL_IIMAGE2D = 217, /* IIMAGE2D */ - YYSYMBOL_UIMAGE2D = 218, /* UIMAGE2D */ - YYSYMBOL_IMAGE3D = 219, /* IMAGE3D */ - YYSYMBOL_IIMAGE3D = 220, /* IIMAGE3D */ - YYSYMBOL_UIMAGE3D = 221, /* UIMAGE3D */ - YYSYMBOL_IMAGE2DRECT = 222, /* IMAGE2DRECT */ - YYSYMBOL_IIMAGE2DRECT = 223, /* IIMAGE2DRECT */ - YYSYMBOL_UIMAGE2DRECT = 224, /* UIMAGE2DRECT */ - YYSYMBOL_IMAGECUBE = 225, /* IMAGECUBE */ - YYSYMBOL_IIMAGECUBE = 226, /* IIMAGECUBE */ - YYSYMBOL_UIMAGECUBE = 227, /* UIMAGECUBE */ - YYSYMBOL_IMAGEBUFFER = 228, /* IMAGEBUFFER */ - YYSYMBOL_IIMAGEBUFFER = 229, /* IIMAGEBUFFER */ - YYSYMBOL_UIMAGEBUFFER = 230, /* UIMAGEBUFFER */ - YYSYMBOL_IMAGE1DARRAY = 231, /* IMAGE1DARRAY */ - YYSYMBOL_IIMAGE1DARRAY = 232, /* IIMAGE1DARRAY */ - YYSYMBOL_UIMAGE1DARRAY = 233, /* UIMAGE1DARRAY */ - YYSYMBOL_IMAGE2DARRAY = 234, /* IMAGE2DARRAY */ - YYSYMBOL_IIMAGE2DARRAY = 235, /* IIMAGE2DARRAY */ - YYSYMBOL_UIMAGE2DARRAY = 236, /* UIMAGE2DARRAY */ - YYSYMBOL_IMAGECUBEARRAY = 237, /* IMAGECUBEARRAY */ - YYSYMBOL_IIMAGECUBEARRAY = 238, /* IIMAGECUBEARRAY */ - YYSYMBOL_UIMAGECUBEARRAY = 239, /* UIMAGECUBEARRAY */ - YYSYMBOL_IMAGE2DMS = 240, /* IMAGE2DMS */ - YYSYMBOL_IIMAGE2DMS = 241, /* IIMAGE2DMS */ - YYSYMBOL_UIMAGE2DMS = 242, /* UIMAGE2DMS */ - YYSYMBOL_IMAGE2DMSARRAY = 243, /* IMAGE2DMSARRAY */ - YYSYMBOL_IIMAGE2DMSARRAY = 244, /* IIMAGE2DMSARRAY */ - YYSYMBOL_UIMAGE2DMSARRAY = 245, /* UIMAGE2DMSARRAY */ - YYSYMBOL_F16IMAGE1D = 246, /* F16IMAGE1D */ - YYSYMBOL_F16IMAGE2D = 247, /* F16IMAGE2D */ - YYSYMBOL_F16IMAGE3D = 248, /* F16IMAGE3D */ - YYSYMBOL_F16IMAGE2DRECT = 249, /* F16IMAGE2DRECT */ - YYSYMBOL_F16IMAGECUBE = 250, /* F16IMAGECUBE */ - YYSYMBOL_F16IMAGE1DARRAY = 251, /* F16IMAGE1DARRAY */ - YYSYMBOL_F16IMAGE2DARRAY = 252, /* F16IMAGE2DARRAY */ - YYSYMBOL_F16IMAGECUBEARRAY = 253, /* F16IMAGECUBEARRAY */ - YYSYMBOL_F16IMAGEBUFFER = 254, /* F16IMAGEBUFFER */ - YYSYMBOL_F16IMAGE2DMS = 255, /* F16IMAGE2DMS */ - YYSYMBOL_F16IMAGE2DMSARRAY = 256, /* F16IMAGE2DMSARRAY */ - YYSYMBOL_I64IMAGE1D = 257, /* I64IMAGE1D */ - YYSYMBOL_U64IMAGE1D = 258, /* U64IMAGE1D */ - YYSYMBOL_I64IMAGE2D = 259, /* I64IMAGE2D */ - YYSYMBOL_U64IMAGE2D = 260, /* U64IMAGE2D */ - YYSYMBOL_I64IMAGE3D = 261, /* I64IMAGE3D */ - YYSYMBOL_U64IMAGE3D = 262, /* U64IMAGE3D */ - YYSYMBOL_I64IMAGE2DRECT = 263, /* I64IMAGE2DRECT */ - YYSYMBOL_U64IMAGE2DRECT = 264, /* U64IMAGE2DRECT */ - YYSYMBOL_I64IMAGECUBE = 265, /* I64IMAGECUBE */ - YYSYMBOL_U64IMAGECUBE = 266, /* U64IMAGECUBE */ - YYSYMBOL_I64IMAGEBUFFER = 267, /* I64IMAGEBUFFER */ - YYSYMBOL_U64IMAGEBUFFER = 268, /* U64IMAGEBUFFER */ - YYSYMBOL_I64IMAGE1DARRAY = 269, /* I64IMAGE1DARRAY */ - YYSYMBOL_U64IMAGE1DARRAY = 270, /* U64IMAGE1DARRAY */ - YYSYMBOL_I64IMAGE2DARRAY = 271, /* I64IMAGE2DARRAY */ - YYSYMBOL_U64IMAGE2DARRAY = 272, /* U64IMAGE2DARRAY */ - YYSYMBOL_I64IMAGECUBEARRAY = 273, /* I64IMAGECUBEARRAY */ - YYSYMBOL_U64IMAGECUBEARRAY = 274, /* U64IMAGECUBEARRAY */ - YYSYMBOL_I64IMAGE2DMS = 275, /* I64IMAGE2DMS */ - YYSYMBOL_U64IMAGE2DMS = 276, /* U64IMAGE2DMS */ - YYSYMBOL_I64IMAGE2DMSARRAY = 277, /* I64IMAGE2DMSARRAY */ - YYSYMBOL_U64IMAGE2DMSARRAY = 278, /* U64IMAGE2DMSARRAY */ - YYSYMBOL_TEXTURECUBEARRAY = 279, /* TEXTURECUBEARRAY */ - YYSYMBOL_ITEXTURECUBEARRAY = 280, /* ITEXTURECUBEARRAY */ - YYSYMBOL_UTEXTURECUBEARRAY = 281, /* UTEXTURECUBEARRAY */ - YYSYMBOL_TEXTURE1D = 282, /* TEXTURE1D */ - YYSYMBOL_ITEXTURE1D = 283, /* ITEXTURE1D */ - YYSYMBOL_UTEXTURE1D = 284, /* UTEXTURE1D */ - YYSYMBOL_TEXTURE1DARRAY = 285, /* TEXTURE1DARRAY */ - YYSYMBOL_ITEXTURE1DARRAY = 286, /* ITEXTURE1DARRAY */ - YYSYMBOL_UTEXTURE1DARRAY = 287, /* UTEXTURE1DARRAY */ - YYSYMBOL_TEXTURE2DRECT = 288, /* TEXTURE2DRECT */ - YYSYMBOL_ITEXTURE2DRECT = 289, /* ITEXTURE2DRECT */ - YYSYMBOL_UTEXTURE2DRECT = 290, /* UTEXTURE2DRECT */ - YYSYMBOL_TEXTUREBUFFER = 291, /* TEXTUREBUFFER */ - YYSYMBOL_ITEXTUREBUFFER = 292, /* ITEXTUREBUFFER */ - YYSYMBOL_UTEXTUREBUFFER = 293, /* UTEXTUREBUFFER */ - YYSYMBOL_TEXTURE2DMS = 294, /* TEXTURE2DMS */ - YYSYMBOL_ITEXTURE2DMS = 295, /* ITEXTURE2DMS */ - YYSYMBOL_UTEXTURE2DMS = 296, /* UTEXTURE2DMS */ - YYSYMBOL_TEXTURE2DMSARRAY = 297, /* TEXTURE2DMSARRAY */ - YYSYMBOL_ITEXTURE2DMSARRAY = 298, /* ITEXTURE2DMSARRAY */ - YYSYMBOL_UTEXTURE2DMSARRAY = 299, /* UTEXTURE2DMSARRAY */ - YYSYMBOL_F16TEXTURE1D = 300, /* F16TEXTURE1D */ - YYSYMBOL_F16TEXTURE2D = 301, /* F16TEXTURE2D */ - YYSYMBOL_F16TEXTURE3D = 302, /* F16TEXTURE3D */ - YYSYMBOL_F16TEXTURE2DRECT = 303, /* F16TEXTURE2DRECT */ - YYSYMBOL_F16TEXTURECUBE = 304, /* F16TEXTURECUBE */ - YYSYMBOL_F16TEXTURE1DARRAY = 305, /* F16TEXTURE1DARRAY */ - YYSYMBOL_F16TEXTURE2DARRAY = 306, /* F16TEXTURE2DARRAY */ - YYSYMBOL_F16TEXTURECUBEARRAY = 307, /* F16TEXTURECUBEARRAY */ - YYSYMBOL_F16TEXTUREBUFFER = 308, /* F16TEXTUREBUFFER */ - YYSYMBOL_F16TEXTURE2DMS = 309, /* F16TEXTURE2DMS */ - YYSYMBOL_F16TEXTURE2DMSARRAY = 310, /* F16TEXTURE2DMSARRAY */ - YYSYMBOL_SUBPASSINPUT = 311, /* SUBPASSINPUT */ - YYSYMBOL_SUBPASSINPUTMS = 312, /* SUBPASSINPUTMS */ - YYSYMBOL_ISUBPASSINPUT = 313, /* ISUBPASSINPUT */ - YYSYMBOL_ISUBPASSINPUTMS = 314, /* ISUBPASSINPUTMS */ - YYSYMBOL_USUBPASSINPUT = 315, /* USUBPASSINPUT */ - YYSYMBOL_USUBPASSINPUTMS = 316, /* USUBPASSINPUTMS */ - YYSYMBOL_F16SUBPASSINPUT = 317, /* F16SUBPASSINPUT */ - YYSYMBOL_F16SUBPASSINPUTMS = 318, /* F16SUBPASSINPUTMS */ - YYSYMBOL_SPIRV_INSTRUCTION = 319, /* SPIRV_INSTRUCTION */ - YYSYMBOL_SPIRV_EXECUTION_MODE = 320, /* SPIRV_EXECUTION_MODE */ - YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 321, /* SPIRV_EXECUTION_MODE_ID */ - YYSYMBOL_SPIRV_DECORATE = 322, /* SPIRV_DECORATE */ - YYSYMBOL_SPIRV_DECORATE_ID = 323, /* SPIRV_DECORATE_ID */ - YYSYMBOL_SPIRV_DECORATE_STRING = 324, /* SPIRV_DECORATE_STRING */ - YYSYMBOL_SPIRV_TYPE = 325, /* SPIRV_TYPE */ - YYSYMBOL_SPIRV_STORAGE_CLASS = 326, /* SPIRV_STORAGE_CLASS */ - YYSYMBOL_SPIRV_BY_REFERENCE = 327, /* SPIRV_BY_REFERENCE */ - YYSYMBOL_SPIRV_LITERAL = 328, /* SPIRV_LITERAL */ - YYSYMBOL_ATTACHMENTEXT = 329, /* ATTACHMENTEXT */ - YYSYMBOL_IATTACHMENTEXT = 330, /* IATTACHMENTEXT */ - YYSYMBOL_UATTACHMENTEXT = 331, /* UATTACHMENTEXT */ - YYSYMBOL_LEFT_OP = 332, /* LEFT_OP */ - YYSYMBOL_RIGHT_OP = 333, /* RIGHT_OP */ - YYSYMBOL_INC_OP = 334, /* INC_OP */ - YYSYMBOL_DEC_OP = 335, /* DEC_OP */ - YYSYMBOL_LE_OP = 336, /* LE_OP */ - YYSYMBOL_GE_OP = 337, /* GE_OP */ - YYSYMBOL_EQ_OP = 338, /* EQ_OP */ - YYSYMBOL_NE_OP = 339, /* NE_OP */ - YYSYMBOL_AND_OP = 340, /* AND_OP */ - YYSYMBOL_OR_OP = 341, /* OR_OP */ - YYSYMBOL_XOR_OP = 342, /* XOR_OP */ - YYSYMBOL_MUL_ASSIGN = 343, /* MUL_ASSIGN */ - YYSYMBOL_DIV_ASSIGN = 344, /* DIV_ASSIGN */ - YYSYMBOL_ADD_ASSIGN = 345, /* ADD_ASSIGN */ - YYSYMBOL_MOD_ASSIGN = 346, /* MOD_ASSIGN */ - YYSYMBOL_LEFT_ASSIGN = 347, /* LEFT_ASSIGN */ - YYSYMBOL_RIGHT_ASSIGN = 348, /* RIGHT_ASSIGN */ - YYSYMBOL_AND_ASSIGN = 349, /* AND_ASSIGN */ - YYSYMBOL_XOR_ASSIGN = 350, /* XOR_ASSIGN */ - YYSYMBOL_OR_ASSIGN = 351, /* OR_ASSIGN */ - YYSYMBOL_SUB_ASSIGN = 352, /* SUB_ASSIGN */ - YYSYMBOL_STRING_LITERAL = 353, /* STRING_LITERAL */ - YYSYMBOL_LEFT_PAREN = 354, /* LEFT_PAREN */ - YYSYMBOL_RIGHT_PAREN = 355, /* RIGHT_PAREN */ - YYSYMBOL_LEFT_BRACKET = 356, /* LEFT_BRACKET */ - YYSYMBOL_RIGHT_BRACKET = 357, /* RIGHT_BRACKET */ - YYSYMBOL_LEFT_BRACE = 358, /* LEFT_BRACE */ - YYSYMBOL_RIGHT_BRACE = 359, /* RIGHT_BRACE */ - YYSYMBOL_DOT = 360, /* DOT */ - YYSYMBOL_COMMA = 361, /* COMMA */ - YYSYMBOL_COLON = 362, /* COLON */ - YYSYMBOL_EQUAL = 363, /* EQUAL */ - YYSYMBOL_SEMICOLON = 364, /* SEMICOLON */ - YYSYMBOL_BANG = 365, /* BANG */ - YYSYMBOL_DASH = 366, /* DASH */ - YYSYMBOL_TILDE = 367, /* TILDE */ - YYSYMBOL_PLUS = 368, /* PLUS */ - YYSYMBOL_STAR = 369, /* STAR */ - YYSYMBOL_SLASH = 370, /* SLASH */ - YYSYMBOL_PERCENT = 371, /* PERCENT */ - YYSYMBOL_LEFT_ANGLE = 372, /* LEFT_ANGLE */ - YYSYMBOL_RIGHT_ANGLE = 373, /* RIGHT_ANGLE */ - YYSYMBOL_VERTICAL_BAR = 374, /* VERTICAL_BAR */ - YYSYMBOL_CARET = 375, /* CARET */ - YYSYMBOL_AMPERSAND = 376, /* AMPERSAND */ - YYSYMBOL_QUESTION = 377, /* QUESTION */ - YYSYMBOL_INVARIANT = 378, /* INVARIANT */ - YYSYMBOL_HIGH_PRECISION = 379, /* HIGH_PRECISION */ - YYSYMBOL_MEDIUM_PRECISION = 380, /* MEDIUM_PRECISION */ - YYSYMBOL_LOW_PRECISION = 381, /* LOW_PRECISION */ - YYSYMBOL_PRECISION = 382, /* PRECISION */ - YYSYMBOL_PACKED = 383, /* PACKED */ - YYSYMBOL_RESOURCE = 384, /* RESOURCE */ - YYSYMBOL_SUPERP = 385, /* SUPERP */ - YYSYMBOL_FLOATCONSTANT = 386, /* FLOATCONSTANT */ - YYSYMBOL_INTCONSTANT = 387, /* INTCONSTANT */ - YYSYMBOL_UINTCONSTANT = 388, /* UINTCONSTANT */ - YYSYMBOL_BOOLCONSTANT = 389, /* BOOLCONSTANT */ - YYSYMBOL_IDENTIFIER = 390, /* IDENTIFIER */ - YYSYMBOL_TYPE_NAME = 391, /* TYPE_NAME */ - YYSYMBOL_CENTROID = 392, /* CENTROID */ - YYSYMBOL_IN = 393, /* IN */ - YYSYMBOL_OUT = 394, /* OUT */ - YYSYMBOL_INOUT = 395, /* INOUT */ - YYSYMBOL_STRUCT = 396, /* STRUCT */ - YYSYMBOL_VOID = 397, /* VOID */ - YYSYMBOL_WHILE = 398, /* WHILE */ - YYSYMBOL_BREAK = 399, /* BREAK */ - YYSYMBOL_CONTINUE = 400, /* CONTINUE */ - YYSYMBOL_DO = 401, /* DO */ - YYSYMBOL_ELSE = 402, /* ELSE */ - YYSYMBOL_FOR = 403, /* FOR */ - YYSYMBOL_IF = 404, /* IF */ - YYSYMBOL_DISCARD = 405, /* DISCARD */ - YYSYMBOL_RETURN = 406, /* RETURN */ - YYSYMBOL_SWITCH = 407, /* SWITCH */ - YYSYMBOL_CASE = 408, /* CASE */ - YYSYMBOL_DEFAULT = 409, /* DEFAULT */ - YYSYMBOL_TERMINATE_INVOCATION = 410, /* TERMINATE_INVOCATION */ - YYSYMBOL_TERMINATE_RAY = 411, /* TERMINATE_RAY */ - YYSYMBOL_IGNORE_INTERSECTION = 412, /* IGNORE_INTERSECTION */ - YYSYMBOL_UNIFORM = 413, /* UNIFORM */ - YYSYMBOL_SHARED = 414, /* SHARED */ - YYSYMBOL_BUFFER = 415, /* BUFFER */ - YYSYMBOL_TILEIMAGEEXT = 416, /* TILEIMAGEEXT */ - YYSYMBOL_FLAT = 417, /* FLAT */ - YYSYMBOL_SMOOTH = 418, /* SMOOTH */ - YYSYMBOL_LAYOUT = 419, /* LAYOUT */ - YYSYMBOL_DOUBLECONSTANT = 420, /* DOUBLECONSTANT */ - YYSYMBOL_INT16CONSTANT = 421, /* INT16CONSTANT */ - YYSYMBOL_UINT16CONSTANT = 422, /* UINT16CONSTANT */ - YYSYMBOL_FLOAT16CONSTANT = 423, /* FLOAT16CONSTANT */ - YYSYMBOL_INT32CONSTANT = 424, /* INT32CONSTANT */ - YYSYMBOL_UINT32CONSTANT = 425, /* UINT32CONSTANT */ - YYSYMBOL_INT64CONSTANT = 426, /* INT64CONSTANT */ - YYSYMBOL_UINT64CONSTANT = 427, /* UINT64CONSTANT */ - YYSYMBOL_SUBROUTINE = 428, /* SUBROUTINE */ - YYSYMBOL_DEMOTE = 429, /* DEMOTE */ - YYSYMBOL_PAYLOADNV = 430, /* PAYLOADNV */ - YYSYMBOL_PAYLOADINNV = 431, /* PAYLOADINNV */ - YYSYMBOL_HITATTRNV = 432, /* HITATTRNV */ - YYSYMBOL_CALLDATANV = 433, /* CALLDATANV */ - YYSYMBOL_CALLDATAINNV = 434, /* CALLDATAINNV */ - YYSYMBOL_PAYLOADEXT = 435, /* PAYLOADEXT */ - YYSYMBOL_PAYLOADINEXT = 436, /* PAYLOADINEXT */ - YYSYMBOL_HITATTREXT = 437, /* HITATTREXT */ - YYSYMBOL_CALLDATAEXT = 438, /* CALLDATAEXT */ - YYSYMBOL_CALLDATAINEXT = 439, /* CALLDATAINEXT */ - YYSYMBOL_PATCH = 440, /* PATCH */ - YYSYMBOL_SAMPLE = 441, /* SAMPLE */ - YYSYMBOL_NONUNIFORM = 442, /* NONUNIFORM */ - YYSYMBOL_COHERENT = 443, /* COHERENT */ - YYSYMBOL_VOLATILE = 444, /* VOLATILE */ - YYSYMBOL_RESTRICT = 445, /* RESTRICT */ - YYSYMBOL_READONLY = 446, /* READONLY */ - YYSYMBOL_WRITEONLY = 447, /* WRITEONLY */ - YYSYMBOL_DEVICECOHERENT = 448, /* DEVICECOHERENT */ - YYSYMBOL_QUEUEFAMILYCOHERENT = 449, /* QUEUEFAMILYCOHERENT */ - YYSYMBOL_WORKGROUPCOHERENT = 450, /* WORKGROUPCOHERENT */ - YYSYMBOL_SUBGROUPCOHERENT = 451, /* SUBGROUPCOHERENT */ - YYSYMBOL_NONPRIVATE = 452, /* NONPRIVATE */ - YYSYMBOL_SHADERCALLCOHERENT = 453, /* SHADERCALLCOHERENT */ - YYSYMBOL_NOPERSPECTIVE = 454, /* NOPERSPECTIVE */ - YYSYMBOL_EXPLICITINTERPAMD = 455, /* EXPLICITINTERPAMD */ - YYSYMBOL_PERVERTEXEXT = 456, /* PERVERTEXEXT */ - YYSYMBOL_PERVERTEXNV = 457, /* PERVERTEXNV */ - YYSYMBOL_PERPRIMITIVENV = 458, /* PERPRIMITIVENV */ - YYSYMBOL_PERVIEWNV = 459, /* PERVIEWNV */ - YYSYMBOL_PERTASKNV = 460, /* PERTASKNV */ - YYSYMBOL_PERPRIMITIVEEXT = 461, /* PERPRIMITIVEEXT */ - YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 462, /* TASKPAYLOADWORKGROUPEXT */ - YYSYMBOL_PRECISE = 463, /* PRECISE */ - YYSYMBOL_YYACCEPT = 464, /* $accept */ - YYSYMBOL_variable_identifier = 465, /* variable_identifier */ - YYSYMBOL_primary_expression = 466, /* primary_expression */ - YYSYMBOL_postfix_expression = 467, /* postfix_expression */ - YYSYMBOL_integer_expression = 468, /* integer_expression */ - YYSYMBOL_function_call = 469, /* function_call */ - YYSYMBOL_function_call_or_method = 470, /* function_call_or_method */ - YYSYMBOL_function_call_generic = 471, /* function_call_generic */ - YYSYMBOL_function_call_header_no_parameters = 472, /* function_call_header_no_parameters */ - YYSYMBOL_function_call_header_with_parameters = 473, /* function_call_header_with_parameters */ - YYSYMBOL_function_call_header = 474, /* function_call_header */ - YYSYMBOL_function_identifier = 475, /* function_identifier */ - YYSYMBOL_unary_expression = 476, /* unary_expression */ - YYSYMBOL_unary_operator = 477, /* unary_operator */ - YYSYMBOL_multiplicative_expression = 478, /* multiplicative_expression */ - YYSYMBOL_additive_expression = 479, /* additive_expression */ - YYSYMBOL_shift_expression = 480, /* shift_expression */ - YYSYMBOL_relational_expression = 481, /* relational_expression */ - YYSYMBOL_equality_expression = 482, /* equality_expression */ - YYSYMBOL_and_expression = 483, /* and_expression */ - YYSYMBOL_exclusive_or_expression = 484, /* exclusive_or_expression */ - YYSYMBOL_inclusive_or_expression = 485, /* inclusive_or_expression */ - YYSYMBOL_logical_and_expression = 486, /* logical_and_expression */ - YYSYMBOL_logical_xor_expression = 487, /* logical_xor_expression */ - YYSYMBOL_logical_or_expression = 488, /* logical_or_expression */ - YYSYMBOL_conditional_expression = 489, /* conditional_expression */ - YYSYMBOL_490_1 = 490, /* $@1 */ - YYSYMBOL_assignment_expression = 491, /* assignment_expression */ - YYSYMBOL_assignment_operator = 492, /* assignment_operator */ - YYSYMBOL_expression = 493, /* expression */ - YYSYMBOL_constant_expression = 494, /* constant_expression */ - YYSYMBOL_declaration = 495, /* declaration */ - YYSYMBOL_block_structure = 496, /* block_structure */ - YYSYMBOL_497_2 = 497, /* $@2 */ - YYSYMBOL_identifier_list = 498, /* identifier_list */ - YYSYMBOL_function_prototype = 499, /* function_prototype */ - YYSYMBOL_function_declarator = 500, /* function_declarator */ - YYSYMBOL_function_header_with_parameters = 501, /* function_header_with_parameters */ - YYSYMBOL_function_header = 502, /* function_header */ - YYSYMBOL_parameter_declarator = 503, /* parameter_declarator */ - YYSYMBOL_parameter_declaration = 504, /* parameter_declaration */ - YYSYMBOL_parameter_type_specifier = 505, /* parameter_type_specifier */ - YYSYMBOL_init_declarator_list = 506, /* init_declarator_list */ - YYSYMBOL_single_declaration = 507, /* single_declaration */ - YYSYMBOL_fully_specified_type = 508, /* fully_specified_type */ - YYSYMBOL_invariant_qualifier = 509, /* invariant_qualifier */ - YYSYMBOL_interpolation_qualifier = 510, /* interpolation_qualifier */ - YYSYMBOL_layout_qualifier = 511, /* layout_qualifier */ - YYSYMBOL_layout_qualifier_id_list = 512, /* layout_qualifier_id_list */ - YYSYMBOL_layout_qualifier_id = 513, /* layout_qualifier_id */ - YYSYMBOL_precise_qualifier = 514, /* precise_qualifier */ - YYSYMBOL_type_qualifier = 515, /* type_qualifier */ - YYSYMBOL_single_type_qualifier = 516, /* single_type_qualifier */ - YYSYMBOL_storage_qualifier = 517, /* storage_qualifier */ - YYSYMBOL_non_uniform_qualifier = 518, /* non_uniform_qualifier */ - YYSYMBOL_type_name_list = 519, /* type_name_list */ - YYSYMBOL_type_specifier = 520, /* type_specifier */ - YYSYMBOL_array_specifier = 521, /* array_specifier */ - YYSYMBOL_type_parameter_specifier_opt = 522, /* type_parameter_specifier_opt */ - YYSYMBOL_type_parameter_specifier = 523, /* type_parameter_specifier */ - YYSYMBOL_type_parameter_specifier_list = 524, /* type_parameter_specifier_list */ - YYSYMBOL_type_specifier_nonarray = 525, /* type_specifier_nonarray */ - YYSYMBOL_precision_qualifier = 526, /* precision_qualifier */ - YYSYMBOL_struct_specifier = 527, /* struct_specifier */ - YYSYMBOL_528_3 = 528, /* $@3 */ - YYSYMBOL_529_4 = 529, /* $@4 */ - YYSYMBOL_struct_declaration_list = 530, /* struct_declaration_list */ - YYSYMBOL_struct_declaration = 531, /* struct_declaration */ - YYSYMBOL_struct_declarator_list = 532, /* struct_declarator_list */ - YYSYMBOL_struct_declarator = 533, /* struct_declarator */ - YYSYMBOL_initializer = 534, /* initializer */ - YYSYMBOL_initializer_list = 535, /* initializer_list */ - YYSYMBOL_declaration_statement = 536, /* declaration_statement */ - YYSYMBOL_statement = 537, /* statement */ - YYSYMBOL_simple_statement = 538, /* simple_statement */ - YYSYMBOL_demote_statement = 539, /* demote_statement */ - YYSYMBOL_compound_statement = 540, /* compound_statement */ - YYSYMBOL_541_5 = 541, /* $@5 */ - YYSYMBOL_542_6 = 542, /* $@6 */ - YYSYMBOL_statement_no_new_scope = 543, /* statement_no_new_scope */ - YYSYMBOL_statement_scoped = 544, /* statement_scoped */ - YYSYMBOL_545_7 = 545, /* $@7 */ - YYSYMBOL_546_8 = 546, /* $@8 */ - YYSYMBOL_compound_statement_no_new_scope = 547, /* compound_statement_no_new_scope */ - YYSYMBOL_statement_list = 548, /* statement_list */ - YYSYMBOL_expression_statement = 549, /* expression_statement */ - YYSYMBOL_selection_statement = 550, /* selection_statement */ - YYSYMBOL_selection_statement_nonattributed = 551, /* selection_statement_nonattributed */ - YYSYMBOL_selection_rest_statement = 552, /* selection_rest_statement */ - YYSYMBOL_condition = 553, /* condition */ - YYSYMBOL_switch_statement = 554, /* switch_statement */ - YYSYMBOL_switch_statement_nonattributed = 555, /* switch_statement_nonattributed */ - YYSYMBOL_556_9 = 556, /* $@9 */ - YYSYMBOL_switch_statement_list = 557, /* switch_statement_list */ - YYSYMBOL_case_label = 558, /* case_label */ - YYSYMBOL_iteration_statement = 559, /* iteration_statement */ - YYSYMBOL_iteration_statement_nonattributed = 560, /* iteration_statement_nonattributed */ - YYSYMBOL_561_10 = 561, /* $@10 */ - YYSYMBOL_562_11 = 562, /* $@11 */ - YYSYMBOL_563_12 = 563, /* $@12 */ - YYSYMBOL_for_init_statement = 564, /* for_init_statement */ - YYSYMBOL_conditionopt = 565, /* conditionopt */ - YYSYMBOL_for_rest_statement = 566, /* for_rest_statement */ - YYSYMBOL_jump_statement = 567, /* jump_statement */ - YYSYMBOL_translation_unit = 568, /* translation_unit */ - YYSYMBOL_external_declaration = 569, /* external_declaration */ - YYSYMBOL_function_definition = 570, /* function_definition */ - YYSYMBOL_571_13 = 571, /* $@13 */ - YYSYMBOL_attribute = 572, /* attribute */ - YYSYMBOL_attribute_list = 573, /* attribute_list */ - YYSYMBOL_single_attribute = 574, /* single_attribute */ - YYSYMBOL_spirv_requirements_list = 575, /* spirv_requirements_list */ - YYSYMBOL_spirv_requirements_parameter = 576, /* spirv_requirements_parameter */ - YYSYMBOL_spirv_extension_list = 577, /* spirv_extension_list */ - YYSYMBOL_spirv_capability_list = 578, /* spirv_capability_list */ - YYSYMBOL_spirv_execution_mode_qualifier = 579, /* spirv_execution_mode_qualifier */ - YYSYMBOL_spirv_execution_mode_parameter_list = 580, /* spirv_execution_mode_parameter_list */ - YYSYMBOL_spirv_execution_mode_parameter = 581, /* spirv_execution_mode_parameter */ - YYSYMBOL_spirv_execution_mode_id_parameter_list = 582, /* spirv_execution_mode_id_parameter_list */ - YYSYMBOL_spirv_storage_class_qualifier = 583, /* spirv_storage_class_qualifier */ - YYSYMBOL_spirv_decorate_qualifier = 584, /* spirv_decorate_qualifier */ - YYSYMBOL_spirv_decorate_parameter_list = 585, /* spirv_decorate_parameter_list */ - YYSYMBOL_spirv_decorate_parameter = 586, /* spirv_decorate_parameter */ - YYSYMBOL_spirv_decorate_id_parameter_list = 587, /* spirv_decorate_id_parameter_list */ - YYSYMBOL_spirv_decorate_id_parameter = 588, /* spirv_decorate_id_parameter */ - YYSYMBOL_spirv_decorate_string_parameter_list = 589, /* spirv_decorate_string_parameter_list */ - YYSYMBOL_spirv_type_specifier = 590, /* spirv_type_specifier */ - YYSYMBOL_spirv_type_parameter_list = 591, /* spirv_type_parameter_list */ - YYSYMBOL_spirv_type_parameter = 592, /* spirv_type_parameter */ - YYSYMBOL_spirv_instruction_qualifier = 593, /* spirv_instruction_qualifier */ - YYSYMBOL_spirv_instruction_qualifier_list = 594, /* spirv_instruction_qualifier_list */ - YYSYMBOL_spirv_instruction_qualifier_id = 595 /* spirv_instruction_qualifier_id */ + YYSYMBOL_COOPMAT = 166, /* COOPMAT */ + YYSYMBOL_HITOBJECTNV = 167, /* HITOBJECTNV */ + YYSYMBOL_HITOBJECTATTRNV = 168, /* HITOBJECTATTRNV */ + YYSYMBOL_SAMPLERCUBEARRAY = 169, /* SAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLERCUBEARRAYSHADOW = 170, /* SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_ISAMPLERCUBEARRAY = 171, /* ISAMPLERCUBEARRAY */ + YYSYMBOL_USAMPLERCUBEARRAY = 172, /* USAMPLERCUBEARRAY */ + YYSYMBOL_SAMPLER1D = 173, /* SAMPLER1D */ + YYSYMBOL_SAMPLER1DARRAY = 174, /* SAMPLER1DARRAY */ + YYSYMBOL_SAMPLER1DARRAYSHADOW = 175, /* SAMPLER1DARRAYSHADOW */ + YYSYMBOL_ISAMPLER1D = 176, /* ISAMPLER1D */ + YYSYMBOL_SAMPLER1DSHADOW = 177, /* SAMPLER1DSHADOW */ + YYSYMBOL_SAMPLER2DRECT = 178, /* SAMPLER2DRECT */ + YYSYMBOL_SAMPLER2DRECTSHADOW = 179, /* SAMPLER2DRECTSHADOW */ + YYSYMBOL_ISAMPLER2DRECT = 180, /* ISAMPLER2DRECT */ + YYSYMBOL_USAMPLER2DRECT = 181, /* USAMPLER2DRECT */ + YYSYMBOL_SAMPLERBUFFER = 182, /* SAMPLERBUFFER */ + YYSYMBOL_ISAMPLERBUFFER = 183, /* ISAMPLERBUFFER */ + YYSYMBOL_USAMPLERBUFFER = 184, /* USAMPLERBUFFER */ + YYSYMBOL_SAMPLER2DMS = 185, /* SAMPLER2DMS */ + YYSYMBOL_ISAMPLER2DMS = 186, /* ISAMPLER2DMS */ + YYSYMBOL_USAMPLER2DMS = 187, /* USAMPLER2DMS */ + YYSYMBOL_SAMPLER2DMSARRAY = 188, /* SAMPLER2DMSARRAY */ + YYSYMBOL_ISAMPLER2DMSARRAY = 189, /* ISAMPLER2DMSARRAY */ + YYSYMBOL_USAMPLER2DMSARRAY = 190, /* USAMPLER2DMSARRAY */ + YYSYMBOL_SAMPLEREXTERNALOES = 191, /* SAMPLEREXTERNALOES */ + YYSYMBOL_SAMPLEREXTERNAL2DY2YEXT = 192, /* SAMPLEREXTERNAL2DY2YEXT */ + YYSYMBOL_ISAMPLER1DARRAY = 193, /* ISAMPLER1DARRAY */ + YYSYMBOL_USAMPLER1D = 194, /* USAMPLER1D */ + YYSYMBOL_USAMPLER1DARRAY = 195, /* USAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER1D = 196, /* F16SAMPLER1D */ + YYSYMBOL_F16SAMPLER2D = 197, /* F16SAMPLER2D */ + YYSYMBOL_F16SAMPLER3D = 198, /* F16SAMPLER3D */ + YYSYMBOL_F16SAMPLER2DRECT = 199, /* F16SAMPLER2DRECT */ + YYSYMBOL_F16SAMPLERCUBE = 200, /* F16SAMPLERCUBE */ + YYSYMBOL_F16SAMPLER1DARRAY = 201, /* F16SAMPLER1DARRAY */ + YYSYMBOL_F16SAMPLER2DARRAY = 202, /* F16SAMPLER2DARRAY */ + YYSYMBOL_F16SAMPLERCUBEARRAY = 203, /* F16SAMPLERCUBEARRAY */ + YYSYMBOL_F16SAMPLERBUFFER = 204, /* F16SAMPLERBUFFER */ + YYSYMBOL_F16SAMPLER2DMS = 205, /* F16SAMPLER2DMS */ + YYSYMBOL_F16SAMPLER2DMSARRAY = 206, /* F16SAMPLER2DMSARRAY */ + YYSYMBOL_F16SAMPLER1DSHADOW = 207, /* F16SAMPLER1DSHADOW */ + YYSYMBOL_F16SAMPLER2DSHADOW = 208, /* F16SAMPLER2DSHADOW */ + YYSYMBOL_F16SAMPLER1DARRAYSHADOW = 209, /* F16SAMPLER1DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DARRAYSHADOW = 210, /* F16SAMPLER2DARRAYSHADOW */ + YYSYMBOL_F16SAMPLER2DRECTSHADOW = 211, /* F16SAMPLER2DRECTSHADOW */ + YYSYMBOL_F16SAMPLERCUBESHADOW = 212, /* F16SAMPLERCUBESHADOW */ + YYSYMBOL_F16SAMPLERCUBEARRAYSHADOW = 213, /* F16SAMPLERCUBEARRAYSHADOW */ + YYSYMBOL_IMAGE1D = 214, /* IMAGE1D */ + YYSYMBOL_IIMAGE1D = 215, /* IIMAGE1D */ + YYSYMBOL_UIMAGE1D = 216, /* UIMAGE1D */ + YYSYMBOL_IMAGE2D = 217, /* IMAGE2D */ + YYSYMBOL_IIMAGE2D = 218, /* IIMAGE2D */ + YYSYMBOL_UIMAGE2D = 219, /* UIMAGE2D */ + YYSYMBOL_IMAGE3D = 220, /* IMAGE3D */ + YYSYMBOL_IIMAGE3D = 221, /* IIMAGE3D */ + YYSYMBOL_UIMAGE3D = 222, /* UIMAGE3D */ + YYSYMBOL_IMAGE2DRECT = 223, /* IMAGE2DRECT */ + YYSYMBOL_IIMAGE2DRECT = 224, /* IIMAGE2DRECT */ + YYSYMBOL_UIMAGE2DRECT = 225, /* UIMAGE2DRECT */ + YYSYMBOL_IMAGECUBE = 226, /* IMAGECUBE */ + YYSYMBOL_IIMAGECUBE = 227, /* IIMAGECUBE */ + YYSYMBOL_UIMAGECUBE = 228, /* UIMAGECUBE */ + YYSYMBOL_IMAGEBUFFER = 229, /* IMAGEBUFFER */ + YYSYMBOL_IIMAGEBUFFER = 230, /* IIMAGEBUFFER */ + YYSYMBOL_UIMAGEBUFFER = 231, /* UIMAGEBUFFER */ + YYSYMBOL_IMAGE1DARRAY = 232, /* IMAGE1DARRAY */ + YYSYMBOL_IIMAGE1DARRAY = 233, /* IIMAGE1DARRAY */ + YYSYMBOL_UIMAGE1DARRAY = 234, /* UIMAGE1DARRAY */ + YYSYMBOL_IMAGE2DARRAY = 235, /* IMAGE2DARRAY */ + YYSYMBOL_IIMAGE2DARRAY = 236, /* IIMAGE2DARRAY */ + YYSYMBOL_UIMAGE2DARRAY = 237, /* UIMAGE2DARRAY */ + YYSYMBOL_IMAGECUBEARRAY = 238, /* IMAGECUBEARRAY */ + YYSYMBOL_IIMAGECUBEARRAY = 239, /* IIMAGECUBEARRAY */ + YYSYMBOL_UIMAGECUBEARRAY = 240, /* UIMAGECUBEARRAY */ + YYSYMBOL_IMAGE2DMS = 241, /* IMAGE2DMS */ + YYSYMBOL_IIMAGE2DMS = 242, /* IIMAGE2DMS */ + YYSYMBOL_UIMAGE2DMS = 243, /* UIMAGE2DMS */ + YYSYMBOL_IMAGE2DMSARRAY = 244, /* IMAGE2DMSARRAY */ + YYSYMBOL_IIMAGE2DMSARRAY = 245, /* IIMAGE2DMSARRAY */ + YYSYMBOL_UIMAGE2DMSARRAY = 246, /* UIMAGE2DMSARRAY */ + YYSYMBOL_F16IMAGE1D = 247, /* F16IMAGE1D */ + YYSYMBOL_F16IMAGE2D = 248, /* F16IMAGE2D */ + YYSYMBOL_F16IMAGE3D = 249, /* F16IMAGE3D */ + YYSYMBOL_F16IMAGE2DRECT = 250, /* F16IMAGE2DRECT */ + YYSYMBOL_F16IMAGECUBE = 251, /* F16IMAGECUBE */ + YYSYMBOL_F16IMAGE1DARRAY = 252, /* F16IMAGE1DARRAY */ + YYSYMBOL_F16IMAGE2DARRAY = 253, /* F16IMAGE2DARRAY */ + YYSYMBOL_F16IMAGECUBEARRAY = 254, /* F16IMAGECUBEARRAY */ + YYSYMBOL_F16IMAGEBUFFER = 255, /* F16IMAGEBUFFER */ + YYSYMBOL_F16IMAGE2DMS = 256, /* F16IMAGE2DMS */ + YYSYMBOL_F16IMAGE2DMSARRAY = 257, /* F16IMAGE2DMSARRAY */ + YYSYMBOL_I64IMAGE1D = 258, /* I64IMAGE1D */ + YYSYMBOL_U64IMAGE1D = 259, /* U64IMAGE1D */ + YYSYMBOL_I64IMAGE2D = 260, /* I64IMAGE2D */ + YYSYMBOL_U64IMAGE2D = 261, /* U64IMAGE2D */ + YYSYMBOL_I64IMAGE3D = 262, /* I64IMAGE3D */ + YYSYMBOL_U64IMAGE3D = 263, /* U64IMAGE3D */ + YYSYMBOL_I64IMAGE2DRECT = 264, /* I64IMAGE2DRECT */ + YYSYMBOL_U64IMAGE2DRECT = 265, /* U64IMAGE2DRECT */ + YYSYMBOL_I64IMAGECUBE = 266, /* I64IMAGECUBE */ + YYSYMBOL_U64IMAGECUBE = 267, /* U64IMAGECUBE */ + YYSYMBOL_I64IMAGEBUFFER = 268, /* I64IMAGEBUFFER */ + YYSYMBOL_U64IMAGEBUFFER = 269, /* U64IMAGEBUFFER */ + YYSYMBOL_I64IMAGE1DARRAY = 270, /* I64IMAGE1DARRAY */ + YYSYMBOL_U64IMAGE1DARRAY = 271, /* U64IMAGE1DARRAY */ + YYSYMBOL_I64IMAGE2DARRAY = 272, /* I64IMAGE2DARRAY */ + YYSYMBOL_U64IMAGE2DARRAY = 273, /* U64IMAGE2DARRAY */ + YYSYMBOL_I64IMAGECUBEARRAY = 274, /* I64IMAGECUBEARRAY */ + YYSYMBOL_U64IMAGECUBEARRAY = 275, /* U64IMAGECUBEARRAY */ + YYSYMBOL_I64IMAGE2DMS = 276, /* I64IMAGE2DMS */ + YYSYMBOL_U64IMAGE2DMS = 277, /* U64IMAGE2DMS */ + YYSYMBOL_I64IMAGE2DMSARRAY = 278, /* I64IMAGE2DMSARRAY */ + YYSYMBOL_U64IMAGE2DMSARRAY = 279, /* U64IMAGE2DMSARRAY */ + YYSYMBOL_TEXTURECUBEARRAY = 280, /* TEXTURECUBEARRAY */ + YYSYMBOL_ITEXTURECUBEARRAY = 281, /* ITEXTURECUBEARRAY */ + YYSYMBOL_UTEXTURECUBEARRAY = 282, /* UTEXTURECUBEARRAY */ + YYSYMBOL_TEXTURE1D = 283, /* TEXTURE1D */ + YYSYMBOL_ITEXTURE1D = 284, /* ITEXTURE1D */ + YYSYMBOL_UTEXTURE1D = 285, /* UTEXTURE1D */ + YYSYMBOL_TEXTURE1DARRAY = 286, /* TEXTURE1DARRAY */ + YYSYMBOL_ITEXTURE1DARRAY = 287, /* ITEXTURE1DARRAY */ + YYSYMBOL_UTEXTURE1DARRAY = 288, /* UTEXTURE1DARRAY */ + YYSYMBOL_TEXTURE2DRECT = 289, /* TEXTURE2DRECT */ + YYSYMBOL_ITEXTURE2DRECT = 290, /* ITEXTURE2DRECT */ + YYSYMBOL_UTEXTURE2DRECT = 291, /* UTEXTURE2DRECT */ + YYSYMBOL_TEXTUREBUFFER = 292, /* TEXTUREBUFFER */ + YYSYMBOL_ITEXTUREBUFFER = 293, /* ITEXTUREBUFFER */ + YYSYMBOL_UTEXTUREBUFFER = 294, /* UTEXTUREBUFFER */ + YYSYMBOL_TEXTURE2DMS = 295, /* TEXTURE2DMS */ + YYSYMBOL_ITEXTURE2DMS = 296, /* ITEXTURE2DMS */ + YYSYMBOL_UTEXTURE2DMS = 297, /* UTEXTURE2DMS */ + YYSYMBOL_TEXTURE2DMSARRAY = 298, /* TEXTURE2DMSARRAY */ + YYSYMBOL_ITEXTURE2DMSARRAY = 299, /* ITEXTURE2DMSARRAY */ + YYSYMBOL_UTEXTURE2DMSARRAY = 300, /* UTEXTURE2DMSARRAY */ + YYSYMBOL_F16TEXTURE1D = 301, /* F16TEXTURE1D */ + YYSYMBOL_F16TEXTURE2D = 302, /* F16TEXTURE2D */ + YYSYMBOL_F16TEXTURE3D = 303, /* F16TEXTURE3D */ + YYSYMBOL_F16TEXTURE2DRECT = 304, /* F16TEXTURE2DRECT */ + YYSYMBOL_F16TEXTURECUBE = 305, /* F16TEXTURECUBE */ + YYSYMBOL_F16TEXTURE1DARRAY = 306, /* F16TEXTURE1DARRAY */ + YYSYMBOL_F16TEXTURE2DARRAY = 307, /* F16TEXTURE2DARRAY */ + YYSYMBOL_F16TEXTURECUBEARRAY = 308, /* F16TEXTURECUBEARRAY */ + YYSYMBOL_F16TEXTUREBUFFER = 309, /* F16TEXTUREBUFFER */ + YYSYMBOL_F16TEXTURE2DMS = 310, /* F16TEXTURE2DMS */ + YYSYMBOL_F16TEXTURE2DMSARRAY = 311, /* F16TEXTURE2DMSARRAY */ + YYSYMBOL_SUBPASSINPUT = 312, /* SUBPASSINPUT */ + YYSYMBOL_SUBPASSINPUTMS = 313, /* SUBPASSINPUTMS */ + YYSYMBOL_ISUBPASSINPUT = 314, /* ISUBPASSINPUT */ + YYSYMBOL_ISUBPASSINPUTMS = 315, /* ISUBPASSINPUTMS */ + YYSYMBOL_USUBPASSINPUT = 316, /* USUBPASSINPUT */ + YYSYMBOL_USUBPASSINPUTMS = 317, /* USUBPASSINPUTMS */ + YYSYMBOL_F16SUBPASSINPUT = 318, /* F16SUBPASSINPUT */ + YYSYMBOL_F16SUBPASSINPUTMS = 319, /* F16SUBPASSINPUTMS */ + YYSYMBOL_SPIRV_INSTRUCTION = 320, /* SPIRV_INSTRUCTION */ + YYSYMBOL_SPIRV_EXECUTION_MODE = 321, /* SPIRV_EXECUTION_MODE */ + YYSYMBOL_SPIRV_EXECUTION_MODE_ID = 322, /* SPIRV_EXECUTION_MODE_ID */ + YYSYMBOL_SPIRV_DECORATE = 323, /* SPIRV_DECORATE */ + YYSYMBOL_SPIRV_DECORATE_ID = 324, /* SPIRV_DECORATE_ID */ + YYSYMBOL_SPIRV_DECORATE_STRING = 325, /* SPIRV_DECORATE_STRING */ + YYSYMBOL_SPIRV_TYPE = 326, /* SPIRV_TYPE */ + YYSYMBOL_SPIRV_STORAGE_CLASS = 327, /* SPIRV_STORAGE_CLASS */ + YYSYMBOL_SPIRV_BY_REFERENCE = 328, /* SPIRV_BY_REFERENCE */ + YYSYMBOL_SPIRV_LITERAL = 329, /* SPIRV_LITERAL */ + YYSYMBOL_ATTACHMENTEXT = 330, /* ATTACHMENTEXT */ + YYSYMBOL_IATTACHMENTEXT = 331, /* IATTACHMENTEXT */ + YYSYMBOL_UATTACHMENTEXT = 332, /* UATTACHMENTEXT */ + YYSYMBOL_LEFT_OP = 333, /* LEFT_OP */ + YYSYMBOL_RIGHT_OP = 334, /* RIGHT_OP */ + YYSYMBOL_INC_OP = 335, /* INC_OP */ + YYSYMBOL_DEC_OP = 336, /* DEC_OP */ + YYSYMBOL_LE_OP = 337, /* LE_OP */ + YYSYMBOL_GE_OP = 338, /* GE_OP */ + YYSYMBOL_EQ_OP = 339, /* EQ_OP */ + YYSYMBOL_NE_OP = 340, /* NE_OP */ + YYSYMBOL_AND_OP = 341, /* AND_OP */ + YYSYMBOL_OR_OP = 342, /* OR_OP */ + YYSYMBOL_XOR_OP = 343, /* XOR_OP */ + YYSYMBOL_MUL_ASSIGN = 344, /* MUL_ASSIGN */ + YYSYMBOL_DIV_ASSIGN = 345, /* DIV_ASSIGN */ + YYSYMBOL_ADD_ASSIGN = 346, /* ADD_ASSIGN */ + YYSYMBOL_MOD_ASSIGN = 347, /* MOD_ASSIGN */ + YYSYMBOL_LEFT_ASSIGN = 348, /* LEFT_ASSIGN */ + YYSYMBOL_RIGHT_ASSIGN = 349, /* RIGHT_ASSIGN */ + YYSYMBOL_AND_ASSIGN = 350, /* AND_ASSIGN */ + YYSYMBOL_XOR_ASSIGN = 351, /* XOR_ASSIGN */ + YYSYMBOL_OR_ASSIGN = 352, /* OR_ASSIGN */ + YYSYMBOL_SUB_ASSIGN = 353, /* SUB_ASSIGN */ + YYSYMBOL_STRING_LITERAL = 354, /* STRING_LITERAL */ + YYSYMBOL_LEFT_PAREN = 355, /* LEFT_PAREN */ + YYSYMBOL_RIGHT_PAREN = 356, /* RIGHT_PAREN */ + YYSYMBOL_LEFT_BRACKET = 357, /* LEFT_BRACKET */ + YYSYMBOL_RIGHT_BRACKET = 358, /* RIGHT_BRACKET */ + YYSYMBOL_LEFT_BRACE = 359, /* LEFT_BRACE */ + YYSYMBOL_RIGHT_BRACE = 360, /* RIGHT_BRACE */ + YYSYMBOL_DOT = 361, /* DOT */ + YYSYMBOL_COMMA = 362, /* COMMA */ + YYSYMBOL_COLON = 363, /* COLON */ + YYSYMBOL_EQUAL = 364, /* EQUAL */ + YYSYMBOL_SEMICOLON = 365, /* SEMICOLON */ + YYSYMBOL_BANG = 366, /* BANG */ + YYSYMBOL_DASH = 367, /* DASH */ + YYSYMBOL_TILDE = 368, /* TILDE */ + YYSYMBOL_PLUS = 369, /* PLUS */ + YYSYMBOL_STAR = 370, /* STAR */ + YYSYMBOL_SLASH = 371, /* SLASH */ + YYSYMBOL_PERCENT = 372, /* PERCENT */ + YYSYMBOL_LEFT_ANGLE = 373, /* LEFT_ANGLE */ + YYSYMBOL_RIGHT_ANGLE = 374, /* RIGHT_ANGLE */ + YYSYMBOL_VERTICAL_BAR = 375, /* VERTICAL_BAR */ + YYSYMBOL_CARET = 376, /* CARET */ + YYSYMBOL_AMPERSAND = 377, /* AMPERSAND */ + YYSYMBOL_QUESTION = 378, /* QUESTION */ + YYSYMBOL_INVARIANT = 379, /* INVARIANT */ + YYSYMBOL_HIGH_PRECISION = 380, /* HIGH_PRECISION */ + YYSYMBOL_MEDIUM_PRECISION = 381, /* MEDIUM_PRECISION */ + YYSYMBOL_LOW_PRECISION = 382, /* LOW_PRECISION */ + YYSYMBOL_PRECISION = 383, /* PRECISION */ + YYSYMBOL_PACKED = 384, /* PACKED */ + YYSYMBOL_RESOURCE = 385, /* RESOURCE */ + YYSYMBOL_SUPERP = 386, /* SUPERP */ + YYSYMBOL_FLOATCONSTANT = 387, /* FLOATCONSTANT */ + YYSYMBOL_INTCONSTANT = 388, /* INTCONSTANT */ + YYSYMBOL_UINTCONSTANT = 389, /* UINTCONSTANT */ + YYSYMBOL_BOOLCONSTANT = 390, /* BOOLCONSTANT */ + YYSYMBOL_IDENTIFIER = 391, /* IDENTIFIER */ + YYSYMBOL_TYPE_NAME = 392, /* TYPE_NAME */ + YYSYMBOL_CENTROID = 393, /* CENTROID */ + YYSYMBOL_IN = 394, /* IN */ + YYSYMBOL_OUT = 395, /* OUT */ + YYSYMBOL_INOUT = 396, /* INOUT */ + YYSYMBOL_STRUCT = 397, /* STRUCT */ + YYSYMBOL_VOID = 398, /* VOID */ + YYSYMBOL_WHILE = 399, /* WHILE */ + YYSYMBOL_BREAK = 400, /* BREAK */ + YYSYMBOL_CONTINUE = 401, /* CONTINUE */ + YYSYMBOL_DO = 402, /* DO */ + YYSYMBOL_ELSE = 403, /* ELSE */ + YYSYMBOL_FOR = 404, /* FOR */ + YYSYMBOL_IF = 405, /* IF */ + YYSYMBOL_DISCARD = 406, /* DISCARD */ + YYSYMBOL_RETURN = 407, /* RETURN */ + YYSYMBOL_SWITCH = 408, /* SWITCH */ + YYSYMBOL_CASE = 409, /* CASE */ + YYSYMBOL_DEFAULT = 410, /* DEFAULT */ + YYSYMBOL_TERMINATE_INVOCATION = 411, /* TERMINATE_INVOCATION */ + YYSYMBOL_TERMINATE_RAY = 412, /* TERMINATE_RAY */ + YYSYMBOL_IGNORE_INTERSECTION = 413, /* IGNORE_INTERSECTION */ + YYSYMBOL_UNIFORM = 414, /* UNIFORM */ + YYSYMBOL_SHARED = 415, /* SHARED */ + YYSYMBOL_BUFFER = 416, /* BUFFER */ + YYSYMBOL_TILEIMAGEEXT = 417, /* TILEIMAGEEXT */ + YYSYMBOL_FLAT = 418, /* FLAT */ + YYSYMBOL_SMOOTH = 419, /* SMOOTH */ + YYSYMBOL_LAYOUT = 420, /* LAYOUT */ + YYSYMBOL_DOUBLECONSTANT = 421, /* DOUBLECONSTANT */ + YYSYMBOL_INT16CONSTANT = 422, /* INT16CONSTANT */ + YYSYMBOL_UINT16CONSTANT = 423, /* UINT16CONSTANT */ + YYSYMBOL_FLOAT16CONSTANT = 424, /* FLOAT16CONSTANT */ + YYSYMBOL_INT32CONSTANT = 425, /* INT32CONSTANT */ + YYSYMBOL_UINT32CONSTANT = 426, /* UINT32CONSTANT */ + YYSYMBOL_INT64CONSTANT = 427, /* INT64CONSTANT */ + YYSYMBOL_UINT64CONSTANT = 428, /* UINT64CONSTANT */ + YYSYMBOL_SUBROUTINE = 429, /* SUBROUTINE */ + YYSYMBOL_DEMOTE = 430, /* DEMOTE */ + YYSYMBOL_PAYLOADNV = 431, /* PAYLOADNV */ + YYSYMBOL_PAYLOADINNV = 432, /* PAYLOADINNV */ + YYSYMBOL_HITATTRNV = 433, /* HITATTRNV */ + YYSYMBOL_CALLDATANV = 434, /* CALLDATANV */ + YYSYMBOL_CALLDATAINNV = 435, /* CALLDATAINNV */ + YYSYMBOL_PAYLOADEXT = 436, /* PAYLOADEXT */ + YYSYMBOL_PAYLOADINEXT = 437, /* PAYLOADINEXT */ + YYSYMBOL_HITATTREXT = 438, /* HITATTREXT */ + YYSYMBOL_CALLDATAEXT = 439, /* CALLDATAEXT */ + YYSYMBOL_CALLDATAINEXT = 440, /* CALLDATAINEXT */ + YYSYMBOL_PATCH = 441, /* PATCH */ + YYSYMBOL_SAMPLE = 442, /* SAMPLE */ + YYSYMBOL_NONUNIFORM = 443, /* NONUNIFORM */ + YYSYMBOL_COHERENT = 444, /* COHERENT */ + YYSYMBOL_VOLATILE = 445, /* VOLATILE */ + YYSYMBOL_RESTRICT = 446, /* RESTRICT */ + YYSYMBOL_READONLY = 447, /* READONLY */ + YYSYMBOL_WRITEONLY = 448, /* WRITEONLY */ + YYSYMBOL_DEVICECOHERENT = 449, /* DEVICECOHERENT */ + YYSYMBOL_QUEUEFAMILYCOHERENT = 450, /* QUEUEFAMILYCOHERENT */ + YYSYMBOL_WORKGROUPCOHERENT = 451, /* WORKGROUPCOHERENT */ + YYSYMBOL_SUBGROUPCOHERENT = 452, /* SUBGROUPCOHERENT */ + YYSYMBOL_NONPRIVATE = 453, /* NONPRIVATE */ + YYSYMBOL_SHADERCALLCOHERENT = 454, /* SHADERCALLCOHERENT */ + YYSYMBOL_NOPERSPECTIVE = 455, /* NOPERSPECTIVE */ + YYSYMBOL_EXPLICITINTERPAMD = 456, /* EXPLICITINTERPAMD */ + YYSYMBOL_PERVERTEXEXT = 457, /* PERVERTEXEXT */ + YYSYMBOL_PERVERTEXNV = 458, /* PERVERTEXNV */ + YYSYMBOL_PERPRIMITIVENV = 459, /* PERPRIMITIVENV */ + YYSYMBOL_PERVIEWNV = 460, /* PERVIEWNV */ + YYSYMBOL_PERTASKNV = 461, /* PERTASKNV */ + YYSYMBOL_PERPRIMITIVEEXT = 462, /* PERPRIMITIVEEXT */ + YYSYMBOL_TASKPAYLOADWORKGROUPEXT = 463, /* TASKPAYLOADWORKGROUPEXT */ + YYSYMBOL_PRECISE = 464, /* PRECISE */ + YYSYMBOL_YYACCEPT = 465, /* $accept */ + YYSYMBOL_variable_identifier = 466, /* variable_identifier */ + YYSYMBOL_primary_expression = 467, /* primary_expression */ + YYSYMBOL_postfix_expression = 468, /* postfix_expression */ + YYSYMBOL_integer_expression = 469, /* integer_expression */ + YYSYMBOL_function_call = 470, /* function_call */ + YYSYMBOL_function_call_or_method = 471, /* function_call_or_method */ + YYSYMBOL_function_call_generic = 472, /* function_call_generic */ + YYSYMBOL_function_call_header_no_parameters = 473, /* function_call_header_no_parameters */ + YYSYMBOL_function_call_header_with_parameters = 474, /* function_call_header_with_parameters */ + YYSYMBOL_function_call_header = 475, /* function_call_header */ + YYSYMBOL_function_identifier = 476, /* function_identifier */ + YYSYMBOL_unary_expression = 477, /* unary_expression */ + YYSYMBOL_unary_operator = 478, /* unary_operator */ + YYSYMBOL_multiplicative_expression = 479, /* multiplicative_expression */ + YYSYMBOL_additive_expression = 480, /* additive_expression */ + YYSYMBOL_shift_expression = 481, /* shift_expression */ + YYSYMBOL_relational_expression = 482, /* relational_expression */ + YYSYMBOL_equality_expression = 483, /* equality_expression */ + YYSYMBOL_and_expression = 484, /* and_expression */ + YYSYMBOL_exclusive_or_expression = 485, /* exclusive_or_expression */ + YYSYMBOL_inclusive_or_expression = 486, /* inclusive_or_expression */ + YYSYMBOL_logical_and_expression = 487, /* logical_and_expression */ + YYSYMBOL_logical_xor_expression = 488, /* logical_xor_expression */ + YYSYMBOL_logical_or_expression = 489, /* logical_or_expression */ + YYSYMBOL_conditional_expression = 490, /* conditional_expression */ + YYSYMBOL_491_1 = 491, /* $@1 */ + YYSYMBOL_assignment_expression = 492, /* assignment_expression */ + YYSYMBOL_assignment_operator = 493, /* assignment_operator */ + YYSYMBOL_expression = 494, /* expression */ + YYSYMBOL_constant_expression = 495, /* constant_expression */ + YYSYMBOL_declaration = 496, /* declaration */ + YYSYMBOL_block_structure = 497, /* block_structure */ + YYSYMBOL_498_2 = 498, /* $@2 */ + YYSYMBOL_identifier_list = 499, /* identifier_list */ + YYSYMBOL_function_prototype = 500, /* function_prototype */ + YYSYMBOL_function_declarator = 501, /* function_declarator */ + YYSYMBOL_function_header_with_parameters = 502, /* function_header_with_parameters */ + YYSYMBOL_function_header = 503, /* function_header */ + YYSYMBOL_parameter_declarator = 504, /* parameter_declarator */ + YYSYMBOL_parameter_declaration = 505, /* parameter_declaration */ + YYSYMBOL_parameter_type_specifier = 506, /* parameter_type_specifier */ + YYSYMBOL_init_declarator_list = 507, /* init_declarator_list */ + YYSYMBOL_single_declaration = 508, /* single_declaration */ + YYSYMBOL_fully_specified_type = 509, /* fully_specified_type */ + YYSYMBOL_invariant_qualifier = 510, /* invariant_qualifier */ + YYSYMBOL_interpolation_qualifier = 511, /* interpolation_qualifier */ + YYSYMBOL_layout_qualifier = 512, /* layout_qualifier */ + YYSYMBOL_layout_qualifier_id_list = 513, /* layout_qualifier_id_list */ + YYSYMBOL_layout_qualifier_id = 514, /* layout_qualifier_id */ + YYSYMBOL_precise_qualifier = 515, /* precise_qualifier */ + YYSYMBOL_type_qualifier = 516, /* type_qualifier */ + YYSYMBOL_single_type_qualifier = 517, /* single_type_qualifier */ + YYSYMBOL_storage_qualifier = 518, /* storage_qualifier */ + YYSYMBOL_non_uniform_qualifier = 519, /* non_uniform_qualifier */ + YYSYMBOL_type_name_list = 520, /* type_name_list */ + YYSYMBOL_type_specifier = 521, /* type_specifier */ + YYSYMBOL_array_specifier = 522, /* array_specifier */ + YYSYMBOL_type_parameter_specifier_opt = 523, /* type_parameter_specifier_opt */ + YYSYMBOL_type_parameter_specifier = 524, /* type_parameter_specifier */ + YYSYMBOL_type_parameter_specifier_list = 525, /* type_parameter_specifier_list */ + YYSYMBOL_type_specifier_nonarray = 526, /* type_specifier_nonarray */ + YYSYMBOL_precision_qualifier = 527, /* precision_qualifier */ + YYSYMBOL_struct_specifier = 528, /* struct_specifier */ + YYSYMBOL_529_3 = 529, /* $@3 */ + YYSYMBOL_530_4 = 530, /* $@4 */ + YYSYMBOL_struct_declaration_list = 531, /* struct_declaration_list */ + YYSYMBOL_struct_declaration = 532, /* struct_declaration */ + YYSYMBOL_struct_declarator_list = 533, /* struct_declarator_list */ + YYSYMBOL_struct_declarator = 534, /* struct_declarator */ + YYSYMBOL_initializer = 535, /* initializer */ + YYSYMBOL_initializer_list = 536, /* initializer_list */ + YYSYMBOL_declaration_statement = 537, /* declaration_statement */ + YYSYMBOL_statement = 538, /* statement */ + YYSYMBOL_simple_statement = 539, /* simple_statement */ + YYSYMBOL_demote_statement = 540, /* demote_statement */ + YYSYMBOL_compound_statement = 541, /* compound_statement */ + YYSYMBOL_542_5 = 542, /* $@5 */ + YYSYMBOL_543_6 = 543, /* $@6 */ + YYSYMBOL_statement_no_new_scope = 544, /* statement_no_new_scope */ + YYSYMBOL_statement_scoped = 545, /* statement_scoped */ + YYSYMBOL_546_7 = 546, /* $@7 */ + YYSYMBOL_547_8 = 547, /* $@8 */ + YYSYMBOL_compound_statement_no_new_scope = 548, /* compound_statement_no_new_scope */ + YYSYMBOL_statement_list = 549, /* statement_list */ + YYSYMBOL_expression_statement = 550, /* expression_statement */ + YYSYMBOL_selection_statement = 551, /* selection_statement */ + YYSYMBOL_selection_statement_nonattributed = 552, /* selection_statement_nonattributed */ + YYSYMBOL_selection_rest_statement = 553, /* selection_rest_statement */ + YYSYMBOL_condition = 554, /* condition */ + YYSYMBOL_switch_statement = 555, /* switch_statement */ + YYSYMBOL_switch_statement_nonattributed = 556, /* switch_statement_nonattributed */ + YYSYMBOL_557_9 = 557, /* $@9 */ + YYSYMBOL_switch_statement_list = 558, /* switch_statement_list */ + YYSYMBOL_case_label = 559, /* case_label */ + YYSYMBOL_iteration_statement = 560, /* iteration_statement */ + YYSYMBOL_iteration_statement_nonattributed = 561, /* iteration_statement_nonattributed */ + YYSYMBOL_562_10 = 562, /* $@10 */ + YYSYMBOL_563_11 = 563, /* $@11 */ + YYSYMBOL_564_12 = 564, /* $@12 */ + YYSYMBOL_for_init_statement = 565, /* for_init_statement */ + YYSYMBOL_conditionopt = 566, /* conditionopt */ + YYSYMBOL_for_rest_statement = 567, /* for_rest_statement */ + YYSYMBOL_jump_statement = 568, /* jump_statement */ + YYSYMBOL_translation_unit = 569, /* translation_unit */ + YYSYMBOL_external_declaration = 570, /* external_declaration */ + YYSYMBOL_function_definition = 571, /* function_definition */ + YYSYMBOL_572_13 = 572, /* $@13 */ + YYSYMBOL_attribute = 573, /* attribute */ + YYSYMBOL_attribute_list = 574, /* attribute_list */ + YYSYMBOL_single_attribute = 575, /* single_attribute */ + YYSYMBOL_spirv_requirements_list = 576, /* spirv_requirements_list */ + YYSYMBOL_spirv_requirements_parameter = 577, /* spirv_requirements_parameter */ + YYSYMBOL_spirv_extension_list = 578, /* spirv_extension_list */ + YYSYMBOL_spirv_capability_list = 579, /* spirv_capability_list */ + YYSYMBOL_spirv_execution_mode_qualifier = 580, /* spirv_execution_mode_qualifier */ + YYSYMBOL_spirv_execution_mode_parameter_list = 581, /* spirv_execution_mode_parameter_list */ + YYSYMBOL_spirv_execution_mode_parameter = 582, /* spirv_execution_mode_parameter */ + YYSYMBOL_spirv_execution_mode_id_parameter_list = 583, /* spirv_execution_mode_id_parameter_list */ + YYSYMBOL_spirv_storage_class_qualifier = 584, /* spirv_storage_class_qualifier */ + YYSYMBOL_spirv_decorate_qualifier = 585, /* spirv_decorate_qualifier */ + YYSYMBOL_spirv_decorate_parameter_list = 586, /* spirv_decorate_parameter_list */ + YYSYMBOL_spirv_decorate_parameter = 587, /* spirv_decorate_parameter */ + YYSYMBOL_spirv_decorate_id_parameter_list = 588, /* spirv_decorate_id_parameter_list */ + YYSYMBOL_spirv_decorate_id_parameter = 589, /* spirv_decorate_id_parameter */ + YYSYMBOL_spirv_decorate_string_parameter_list = 590, /* spirv_decorate_string_parameter_list */ + YYSYMBOL_spirv_type_specifier = 591, /* spirv_type_specifier */ + YYSYMBOL_spirv_type_parameter_list = 592, /* spirv_type_parameter_list */ + YYSYMBOL_spirv_type_parameter = 593, /* spirv_type_parameter */ + YYSYMBOL_spirv_instruction_qualifier = 594, /* spirv_instruction_qualifier */ + YYSYMBOL_spirv_instruction_qualifier_list = 595, /* spirv_instruction_qualifier_list */ + YYSYMBOL_spirv_instruction_qualifier_id = 596 /* spirv_instruction_qualifier_id */ }; typedef enum yysymbol_kind_t yysymbol_kind_t; @@ -738,7 +739,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; extern int yylex(YYSTYPE*, TParseContext&); -#line 742 "MachineIndependent/glslang_tab.cpp" +#line 743 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -778,6 +779,18 @@ typedef int_least16_t yytype_int16; typedef short yytype_int16; #endif +/* Work around bug in HP-UX 11.23, which defines these macros + incorrectly for preprocessor constants. This workaround can likely + be removed in 2023, as HPE has promised support for HP-UX 11.23 + (aka HP-UX 11i v2) only through the end of 2022; see Table 2 of + . */ +#ifdef __hpux +# undef UINT_LEAST8_MAX +# undef UINT_LEAST16_MAX +# define UINT_LEAST8_MAX 255 +# define UINT_LEAST16_MAX 65535 +#endif + #if defined __UINT_LEAST8_MAX__ && __UINT_LEAST8_MAX__ <= __INT_MAX__ typedef __UINT_LEAST8_TYPE__ yytype_uint8; #elif (!defined __UINT_LEAST8_MAX__ && defined YY_STDINT_H \ @@ -875,17 +888,23 @@ typedef int yy_state_fast_t; /* Suppress unused-variable warnings by "using" E. */ #if ! defined lint || defined __GNUC__ -# define YYUSE(E) ((void) (E)) +# define YY_USE(E) ((void) (E)) #else -# define YYUSE(E) /* empty */ +# define YY_USE(E) /* empty */ #endif -#if defined __GNUC__ && ! defined __ICC && 407 <= __GNUC__ * 100 + __GNUC_MINOR__ /* Suppress an incorrect diagnostic about yylval being uninitialized. */ -# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ +#if defined __GNUC__ && ! defined __ICC && 406 <= __GNUC__ * 100 + __GNUC_MINOR__ +# if __GNUC__ * 100 + __GNUC_MINOR__ < 407 +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ + _Pragma ("GCC diagnostic push") \ + _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") +# else +# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \ _Pragma ("GCC diagnostic push") \ _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"") \ _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"") +# endif # define YY_IGNORE_MAYBE_UNINITIALIZED_END \ _Pragma ("GCC diagnostic pop") #else @@ -1042,21 +1061,21 @@ union yyalloc #endif /* !YYCOPY_NEEDED */ /* YYFINAL -- State number of the termination state. */ -#define YYFINAL 451 +#define YYFINAL 452 /* YYLAST -- Last index in YYTABLE. */ -#define YYLAST 12670 +#define YYLAST 12701 /* YYNTOKENS -- Number of terminals. */ -#define YYNTOKENS 464 +#define YYNTOKENS 465 /* YYNNTS -- Number of nonterminals. */ #define YYNNTS 132 /* YYNRULES -- Number of rules. */ -#define YYNRULES 698 +#define YYNRULES 700 /* YYNSTATES -- Number of states. */ -#define YYNSTATES 944 +#define YYNSTATES 946 /* YYMAXUTOK -- Last valid token kind. */ -#define YYMAXUTOK 718 +#define YYMAXUTOK 719 /* YYTRANSLATE(TOKEN-NUM) -- Symbol number corresponding to TOKEN-NUM @@ -1141,83 +1160,84 @@ static const yytype_int16 yytranslate[] = 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463 + 455, 456, 457, 458, 459, 460, 461, 462, 463, 464 }; #if YYDEBUG - /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ +/* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 394, 394, 400, 403, 408, 411, 414, 418, 422, - 425, 429, 433, 437, 441, 445, 449, 455, 463, 466, - 469, 472, 475, 480, 488, 495, 502, 508, 512, 519, - 522, 528, 535, 545, 553, 558, 586, 595, 601, 605, - 609, 629, 630, 631, 632, 638, 639, 644, 649, 658, - 659, 664, 672, 673, 679, 688, 689, 694, 699, 704, - 712, 713, 722, 734, 735, 744, 745, 754, 755, 764, - 765, 773, 774, 782, 783, 791, 792, 792, 810, 811, - 827, 831, 835, 839, 844, 848, 852, 856, 860, 864, - 868, 875, 878, 889, 896, 902, 909, 915, 920, 927, - 931, 935, 939, 944, 949, 958, 958, 969, 973, 980, - 984, 990, 996, 1006, 1009, 1016, 1024, 1044, 1067, 1082, - 1107, 1118, 1128, 1138, 1148, 1157, 1160, 1164, 1168, 1173, - 1181, 1188, 1193, 1198, 1203, 1212, 1222, 1249, 1258, 1265, - 1273, 1280, 1287, 1295, 1303, 1313, 1323, 1330, 1341, 1347, - 1350, 1357, 1361, 1365, 1374, 1384, 1387, 1398, 1401, 1404, - 1408, 1412, 1417, 1421, 1424, 1429, 1433, 1438, 1447, 1451, - 1456, 1462, 1468, 1475, 1480, 1485, 1493, 1499, 1511, 1525, - 1531, 1536, 1544, 1552, 1560, 1568, 1576, 1584, 1592, 1600, - 1608, 1615, 1622, 1626, 1631, 1636, 1641, 1646, 1651, 1656, - 1660, 1664, 1668, 1672, 1678, 1684, 1696, 1703, 1706, 1715, - 1720, 1730, 1735, 1743, 1747, 1757, 1760, 1766, 1772, 1779, - 1789, 1793, 1797, 1801, 1806, 1810, 1815, 1820, 1825, 1830, - 1835, 1840, 1845, 1850, 1855, 1861, 1867, 1873, 1878, 1883, - 1888, 1893, 1898, 1903, 1908, 1913, 1918, 1923, 1928, 1934, - 1941, 1946, 1951, 1956, 1961, 1966, 1971, 1976, 1981, 1986, - 1991, 1996, 2004, 2012, 2020, 2026, 2032, 2038, 2044, 2050, - 2056, 2062, 2068, 2074, 2080, 2086, 2092, 2098, 2104, 2110, - 2116, 2122, 2128, 2134, 2140, 2146, 2152, 2158, 2164, 2170, - 2176, 2182, 2188, 2194, 2200, 2206, 2212, 2218, 2226, 2234, - 2242, 2250, 2258, 2266, 2274, 2282, 2290, 2298, 2306, 2314, - 2320, 2326, 2332, 2338, 2344, 2350, 2356, 2362, 2368, 2374, - 2380, 2386, 2392, 2398, 2404, 2410, 2416, 2422, 2428, 2434, - 2440, 2446, 2452, 2458, 2464, 2470, 2476, 2482, 2488, 2494, - 2500, 2506, 2512, 2518, 2524, 2530, 2534, 2538, 2542, 2547, - 2553, 2558, 2563, 2568, 2573, 2578, 2583, 2589, 2594, 2599, - 2604, 2609, 2614, 2620, 2626, 2632, 2638, 2644, 2650, 2656, - 2662, 2668, 2674, 2680, 2686, 2692, 2698, 2703, 2708, 2713, - 2718, 2723, 2728, 2734, 2739, 2744, 2749, 2754, 2759, 2764, - 2769, 2775, 2780, 2785, 2790, 2795, 2800, 2805, 2810, 2815, - 2820, 2825, 2830, 2835, 2840, 2845, 2851, 2856, 2861, 2867, - 2873, 2878, 2883, 2888, 2894, 2899, 2904, 2909, 2915, 2920, - 2925, 2930, 2936, 2941, 2946, 2951, 2957, 2963, 2969, 2975, - 2980, 2986, 2992, 2998, 3003, 3008, 3013, 3018, 3023, 3029, - 3034, 3039, 3044, 3050, 3055, 3060, 3065, 3071, 3076, 3081, - 3086, 3092, 3097, 3102, 3107, 3113, 3118, 3123, 3128, 3134, - 3139, 3144, 3149, 3155, 3160, 3165, 3170, 3176, 3181, 3186, - 3191, 3197, 3202, 3207, 3212, 3218, 3223, 3228, 3233, 3239, - 3244, 3249, 3254, 3260, 3265, 3270, 3275, 3281, 3286, 3291, - 3296, 3302, 3307, 3312, 3317, 3323, 3328, 3333, 3338, 3343, - 3348, 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, 3393, - 3398, 3403, 3408, 3413, 3418, 3423, 3428, 3433, 3438, 3443, - 3449, 3455, 3461, 3467, 3473, 3479, 3485, 3492, 3499, 3505, - 3511, 3517, 3523, 3529, 3535, 3541, 3545, 3550, 3555, 3571, - 3576, 3581, 3589, 3589, 3600, 3600, 3610, 3613, 3626, 3648, - 3675, 3679, 3685, 3690, 3701, 3705, 3711, 3717, 3728, 3731, - 3738, 3742, 3743, 3749, 3750, 3751, 3752, 3753, 3754, 3755, - 3757, 3763, 3772, 3773, 3777, 3773, 3789, 3790, 3794, 3794, - 3801, 3801, 3815, 3818, 3826, 3834, 3845, 3846, 3850, 3854, - 3862, 3869, 3873, 3881, 3885, 3898, 3902, 3910, 3910, 3930, - 3933, 3939, 3951, 3963, 3967, 3975, 3975, 3990, 3990, 4008, - 4008, 4029, 4032, 4038, 4041, 4047, 4051, 4058, 4063, 4068, - 4075, 4078, 4082, 4087, 4091, 4101, 4105, 4114, 4117, 4121, - 4130, 4130, 4172, 4177, 4180, 4185, 4188, 4195, 4198, 4203, - 4206, 4211, 4214, 4219, 4222, 4227, 4231, 4236, 4240, 4245, - 4249, 4256, 4259, 4264, 4267, 4270, 4273, 4276, 4281, 4290, - 4301, 4306, 4314, 4318, 4323, 4327, 4332, 4336, 4341, 4345, - 4352, 4355, 4360, 4363, 4366, 4369, 4374, 4377, 4382, 4388, - 4391, 4394, 4397, 4402, 4406, 4411, 4415, 4420, 4424, 4431, - 4434, 4439, 4442, 4447, 4450, 4456, 4459, 4464, 4467 + 0, 395, 395, 401, 404, 409, 412, 415, 419, 423, + 426, 430, 434, 438, 442, 446, 450, 456, 464, 467, + 470, 473, 476, 481, 489, 496, 503, 509, 513, 520, + 523, 529, 536, 546, 554, 559, 587, 596, 602, 606, + 610, 630, 631, 632, 633, 639, 640, 645, 650, 659, + 660, 665, 673, 674, 680, 689, 690, 695, 700, 705, + 713, 714, 723, 735, 736, 745, 746, 755, 756, 765, + 766, 774, 775, 783, 784, 792, 793, 793, 811, 812, + 828, 832, 836, 840, 845, 849, 853, 857, 861, 865, + 869, 876, 879, 890, 897, 903, 910, 916, 921, 928, + 932, 936, 940, 945, 950, 959, 959, 970, 974, 981, + 985, 991, 997, 1007, 1010, 1017, 1025, 1045, 1068, 1083, + 1108, 1119, 1129, 1139, 1149, 1158, 1161, 1165, 1169, 1174, + 1182, 1189, 1194, 1199, 1204, 1213, 1223, 1250, 1259, 1266, + 1274, 1281, 1288, 1296, 1304, 1314, 1324, 1331, 1342, 1348, + 1351, 1358, 1362, 1366, 1375, 1385, 1388, 1399, 1402, 1405, + 1409, 1413, 1418, 1422, 1425, 1430, 1434, 1439, 1448, 1452, + 1457, 1463, 1469, 1476, 1481, 1486, 1494, 1500, 1512, 1526, + 1532, 1537, 1545, 1553, 1561, 1569, 1577, 1585, 1593, 1601, + 1609, 1616, 1623, 1627, 1632, 1637, 1642, 1647, 1652, 1657, + 1661, 1665, 1669, 1673, 1679, 1685, 1697, 1704, 1707, 1716, + 1723, 1734, 1739, 1747, 1751, 1761, 1764, 1770, 1776, 1781, + 1789, 1799, 1803, 1807, 1811, 1816, 1820, 1825, 1830, 1835, + 1840, 1845, 1850, 1855, 1860, 1865, 1871, 1877, 1883, 1888, + 1893, 1898, 1903, 1908, 1913, 1918, 1923, 1928, 1933, 1938, + 1944, 1951, 1956, 1961, 1966, 1971, 1976, 1981, 1986, 1991, + 1996, 2001, 2006, 2014, 2022, 2030, 2036, 2042, 2048, 2054, + 2060, 2066, 2072, 2078, 2084, 2090, 2096, 2102, 2108, 2114, + 2120, 2126, 2132, 2138, 2144, 2150, 2156, 2162, 2168, 2174, + 2180, 2186, 2192, 2198, 2204, 2210, 2216, 2222, 2228, 2236, + 2244, 2252, 2260, 2268, 2276, 2284, 2292, 2300, 2308, 2316, + 2324, 2330, 2336, 2342, 2348, 2354, 2360, 2366, 2372, 2378, + 2384, 2390, 2396, 2402, 2408, 2414, 2420, 2426, 2432, 2438, + 2444, 2450, 2456, 2462, 2468, 2474, 2480, 2486, 2492, 2498, + 2504, 2510, 2516, 2522, 2528, 2534, 2540, 2544, 2548, 2552, + 2557, 2563, 2568, 2573, 2578, 2583, 2588, 2593, 2599, 2604, + 2609, 2614, 2619, 2624, 2630, 2636, 2642, 2648, 2654, 2660, + 2666, 2672, 2678, 2684, 2690, 2696, 2702, 2708, 2713, 2718, + 2723, 2728, 2733, 2738, 2744, 2749, 2754, 2759, 2764, 2769, + 2774, 2779, 2785, 2790, 2795, 2800, 2805, 2810, 2815, 2820, + 2825, 2830, 2835, 2840, 2845, 2850, 2855, 2861, 2866, 2871, + 2877, 2883, 2888, 2893, 2898, 2904, 2909, 2914, 2919, 2925, + 2930, 2935, 2940, 2946, 2951, 2956, 2961, 2967, 2973, 2979, + 2985, 2990, 2996, 3002, 3008, 3013, 3018, 3023, 3028, 3033, + 3039, 3044, 3049, 3054, 3060, 3065, 3070, 3075, 3081, 3086, + 3091, 3096, 3102, 3107, 3112, 3117, 3123, 3128, 3133, 3138, + 3144, 3149, 3154, 3159, 3165, 3170, 3175, 3180, 3186, 3191, + 3196, 3201, 3207, 3212, 3217, 3222, 3228, 3233, 3238, 3243, + 3249, 3254, 3259, 3264, 3270, 3275, 3280, 3285, 3291, 3296, + 3301, 3306, 3312, 3317, 3322, 3327, 3333, 3338, 3343, 3348, + 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, 3393, 3398, + 3403, 3408, 3413, 3418, 3423, 3428, 3433, 3438, 3443, 3448, + 3453, 3459, 3465, 3471, 3477, 3483, 3489, 3495, 3502, 3509, + 3515, 3521, 3527, 3533, 3540, 3547, 3554, 3561, 3565, 3570, + 3575, 3591, 3596, 3601, 3609, 3609, 3620, 3620, 3630, 3633, + 3646, 3668, 3695, 3699, 3705, 3710, 3721, 3725, 3731, 3737, + 3748, 3751, 3758, 3762, 3763, 3769, 3770, 3771, 3772, 3773, + 3774, 3775, 3777, 3783, 3792, 3793, 3797, 3793, 3809, 3810, + 3814, 3814, 3821, 3821, 3835, 3838, 3846, 3854, 3865, 3866, + 3870, 3874, 3882, 3889, 3893, 3901, 3905, 3918, 3922, 3930, + 3930, 3950, 3953, 3959, 3971, 3983, 3987, 3995, 3995, 4010, + 4010, 4028, 4028, 4049, 4052, 4058, 4061, 4067, 4071, 4078, + 4083, 4088, 4095, 4098, 4102, 4107, 4111, 4121, 4125, 4134, + 4137, 4141, 4150, 4150, 4192, 4197, 4200, 4205, 4208, 4215, + 4218, 4223, 4226, 4231, 4234, 4239, 4242, 4247, 4251, 4256, + 4260, 4265, 4269, 4276, 4279, 4284, 4287, 4290, 4293, 4296, + 4301, 4310, 4321, 4326, 4334, 4338, 4343, 4347, 4352, 4356, + 4361, 4365, 4372, 4375, 4380, 4383, 4386, 4389, 4394, 4397, + 4402, 4408, 4411, 4414, 4417, 4422, 4426, 4431, 4435, 4440, + 4444, 4451, 4454, 4459, 4462, 4467, 4470, 4476, 4479, 4484, + 4487 }; #endif @@ -1262,16 +1282,17 @@ static const char *const yytname[] = "F32MAT4X2", "F32MAT4X3", "F32MAT4X4", "F64MAT2X2", "F64MAT2X3", "F64MAT2X4", "F64MAT3X2", "F64MAT3X3", "F64MAT3X4", "F64MAT4X2", "F64MAT4X3", "F64MAT4X4", "ATOMIC_UINT", "ACCSTRUCTNV", "ACCSTRUCTEXT", - "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "HITOBJECTNV", - "HITOBJECTATTRNV", "SAMPLERCUBEARRAY", "SAMPLERCUBEARRAYSHADOW", - "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", "SAMPLER1D", "SAMPLER1DARRAY", - "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", "SAMPLER1DSHADOW", "SAMPLER2DRECT", - "SAMPLER2DRECTSHADOW", "ISAMPLER2DRECT", "USAMPLER2DRECT", - "SAMPLERBUFFER", "ISAMPLERBUFFER", "USAMPLERBUFFER", "SAMPLER2DMS", - "ISAMPLER2DMS", "USAMPLER2DMS", "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", - "USAMPLER2DMSARRAY", "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", - "ISAMPLER1DARRAY", "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", - "F16SAMPLER2D", "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", + "RAYQUERYEXT", "FCOOPMATNV", "ICOOPMATNV", "UCOOPMATNV", "COOPMAT", + "HITOBJECTNV", "HITOBJECTATTRNV", "SAMPLERCUBEARRAY", + "SAMPLERCUBEARRAYSHADOW", "ISAMPLERCUBEARRAY", "USAMPLERCUBEARRAY", + "SAMPLER1D", "SAMPLER1DARRAY", "SAMPLER1DARRAYSHADOW", "ISAMPLER1D", + "SAMPLER1DSHADOW", "SAMPLER2DRECT", "SAMPLER2DRECTSHADOW", + "ISAMPLER2DRECT", "USAMPLER2DRECT", "SAMPLERBUFFER", "ISAMPLERBUFFER", + "USAMPLERBUFFER", "SAMPLER2DMS", "ISAMPLER2DMS", "USAMPLER2DMS", + "SAMPLER2DMSARRAY", "ISAMPLER2DMSARRAY", "USAMPLER2DMSARRAY", + "SAMPLEREXTERNALOES", "SAMPLEREXTERNAL2DY2YEXT", "ISAMPLER1DARRAY", + "USAMPLER1D", "USAMPLER1DARRAY", "F16SAMPLER1D", "F16SAMPLER2D", + "F16SAMPLER3D", "F16SAMPLER2DRECT", "F16SAMPLERCUBE", "F16SAMPLER1DARRAY", "F16SAMPLER2DARRAY", "F16SAMPLERCUBEARRAY", "F16SAMPLERBUFFER", "F16SAMPLER2DMS", "F16SAMPLER2DMSARRAY", "F16SAMPLER1DSHADOW", "F16SAMPLER2DSHADOW", "F16SAMPLER1DARRAYSHADOW", @@ -1393,459 +1414,497 @@ yysymbol_name (yysymbol_kind_t yysymbol) } #endif -#ifdef YYPRINT -/* YYTOKNUM[NUM] -- (External) token number corresponding to the - (internal) symbol number NUM (which must be that of a token). */ -static const yytype_int16 yytoknum[] = -{ - 0, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, - 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, - 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, - 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, - 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, - 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, - 475, 476, 477, 478, 479, 480, 481, 482, 483, 484, - 485, 486, 487, 488, 489, 490, 491, 492, 493, 494, - 495, 496, 497, 498, 499, 500, 501, 502, 503, 504, - 505, 506, 507, 508, 509, 510, 511, 512, 513, 514, - 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - 535, 536, 537, 538, 539, 540, 541, 542, 543, 544, - 545, 546, 547, 548, 549, 550, 551, 552, 553, 554, - 555, 556, 557, 558, 559, 560, 561, 562, 563, 564, - 565, 566, 567, 568, 569, 570, 571, 572, 573, 574, - 575, 576, 577, 578, 579, 580, 581, 582, 583, 584, - 585, 586, 587, 588, 589, 590, 591, 592, 593, 594, - 595, 596, 597, 598, 599, 600, 601, 602, 603, 604, - 605, 606, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, - 625, 626, 627, 628, 629, 630, 631, 632, 633, 634, - 635, 636, 637, 638, 639, 640, 641, 642, 643, 644, - 645, 646, 647, 648, 649, 650, 651, 652, 653, 654, - 655, 656, 657, 658, 659, 660, 661, 662, 663, 664, - 665, 666, 667, 668, 669, 670, 671, 672, 673, 674, - 675, 676, 677, 678, 679, 680, 681, 682, 683, 684, - 685, 686, 687, 688, 689, 690, 691, 692, 693, 694, - 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, - 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, - 715, 716, 717, 718 -}; -#endif - -#define YYPACT_NINF (-871) +#define YYPACT_NINF (-872) #define yypact_value_is_default(Yyn) \ ((Yyn) == YYPACT_NINF) -#define YYTABLE_NINF (-693) +#define YYTABLE_NINF (-695) #define yytable_value_is_error(Yyn) \ 0 - /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing - STATE-NUM. */ +/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing + STATE-NUM. */ static const yytype_int16 yypact[] = { - 4635, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -295, -293, -284, - -273, -184, -182, -129, -127, -871, -871, -871, -871, -871, - -258, -871, -871, -871, -871, -871, -43, -871, -871, -871, - -871, -871, -324, -871, -871, -871, -871, -871, -871, -871, - -119, -117, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -310, -323, -237, - -128, 7862, -235, -871, -106, -871, -871, -871, -871, 5557, - -871, -871, -871, -871, -124, -871, -871, 947, -871, -871, - 7862, -93, -871, -871, -871, 6018, -99, -256, -138, -122, - -121, -120, -99, -104, -78, 12273, -871, -100, -339, -60, - -871, -265, -871, -85, -17, 7862, -871, -871, -871, 7862, - -49, -40, -871, -307, -871, -236, -871, -871, 10956, 1, - -871, -871, -871, 3, -31, 7862, -871, -4, -2, 4, - -871, -259, -871, -228, -1, 5, 6, 8, -212, 10, - 12, 13, 14, 15, 18, -209, 17, 19, 27, -313, - -871, 20, 7862, -871, 22, -871, -207, -871, -871, -202, - 9200, -871, -261, 1408, -871, -871, -871, -871, -871, 1, - -263, -871, 9639, -249, -871, -27, -871, -111, 10956, 10956, - -871, 10956, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -277, -871, -871, -871, 28, -200, 11395, 32, -871, - 10956, -871, -871, -321, 26, -17, 33, -871, -320, -99, - -871, -22, -871, -300, 37, -102, 10956, -74, -871, -143, - -73, -148, -69, 35, -68, -99, -871, 11834, -871, -67, - 10956, 38, -78, -871, 7862, 16, 6479, -871, 7862, 10956, - -871, -339, -871, 21, -871, -871, -26, -260, -55, -309, - -14, -12, 23, 30, 49, 52, -312, 40, 10078, -871, - 42, -871, -871, 48, 41, 56, -871, 67, 69, 63, - 10517, 75, 10956, 68, 70, 73, 74, 76, -167, -871, - -871, -107, -871, -323, 77, 78, -871, -871, -871, -871, - -871, 1869, -871, -871, -871, -871, -871, -871, -871, -871, - -871, 5096, 26, 9639, -240, 8322, -871, -871, 9639, 7862, - -871, 43, -871, -871, -871, -199, -871, -871, 10956, 51, - -871, -871, 10956, 87, -871, -871, -871, 10956, -871, -871, - -871, -315, -871, -871, -190, 80, -871, -871, -871, -871, - -871, -871, -187, -871, -168, -871, -871, -166, 84, -871, - -871, -871, -871, -163, -871, -161, -871, -871, -871, -871, - -871, -156, -871, 85, -871, -154, 86, -153, 80, -871, - -271, -152, -871, 94, 96, -871, -871, 16, 1, -35, - -871, -871, -871, 6940, -871, -871, -871, 10956, 10956, 10956, - 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, 10956, - 10956, 10956, 10956, 10956, 10956, 10956, -871, -871, -871, 95, - -871, 2330, -871, -871, -871, 2330, -871, 10956, -871, -871, - -30, 10956, -171, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, 10956, - 10956, -871, -871, -871, -871, -871, -871, -871, 9639, -871, - -871, -201, -871, 7401, -871, -871, 97, 92, -871, -871, - -871, -871, -871, -188, -131, -871, -311, -871, -300, -871, - -300, -871, 10956, 10956, -871, -143, -871, -143, -871, -148, - -148, -871, 103, 35, -871, 11834, -871, 10956, -871, -871, - -29, 26, 16, -871, -871, -871, -871, -871, -26, -26, - -260, -260, -55, -55, -55, -55, -309, -309, -14, -12, - 23, 30, 49, 52, 10956, -871, 2330, 4174, 59, 3713, - -149, -871, -145, -871, -871, -871, -871, -871, 8761, -871, - -871, -871, 105, -871, 72, -871, -144, -871, -142, -871, - -141, -871, -140, -871, -137, -133, -871, -871, -871, -15, - 101, 92, 71, 107, 109, -871, -871, 4174, 108, -871, - -871, -871, -871, -871, -871, -871, -871, -871, -871, -871, - 10956, -871, 102, 2791, 10956, -871, 104, 114, 79, 112, - 3252, -871, 113, -871, 9639, -871, -871, -871, -132, 10956, - 2791, 108, -871, -871, 2330, -871, 110, 92, -871, -871, - 2330, 116, -871, -871 + 4648, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -305, -301, + -289, -276, -246, -238, -227, -182, -872, -872, -872, -872, + -872, -168, -872, -872, -872, -872, -872, -55, -872, -872, + -872, -872, -872, -319, -872, -872, -872, -872, -872, -872, + -872, -135, -120, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -327, -114, + -81, -124, 7882, -313, -872, -101, -872, -872, -872, -872, + 5572, -872, -872, -872, -872, -94, -872, -872, 952, -872, + -872, 7882, -73, -872, -872, -872, 6034, -78, -252, -250, + -216, -197, -136, -78, -127, -49, 12303, -872, -13, -346, + -39, -872, -309, -872, -10, -9, 7882, -872, -872, -872, + 7882, -38, -37, -872, -267, -872, -236, -872, -872, 10983, + -2, -872, -872, -872, 3, -35, 7882, -872, -8, -6, + -1, -872, -256, -872, -255, -4, 4, 7, 8, -237, + 10, 11, 13, 14, 15, 18, -232, 9, 19, 27, + -188, -872, -3, 7882, -872, 20, -872, -229, -872, -872, + -219, 9223, -872, -272, 1414, -872, -872, -872, -872, -872, + -2, -277, -872, 9663, -265, -872, -23, -872, -112, 10983, + 10983, -872, 10983, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -253, -872, -872, -872, 29, -204, 11423, 28, + -872, 10983, -872, 31, -321, 17, -9, 32, -872, -325, + -78, -872, 5, -872, -330, 33, -125, 10983, -123, -872, + -130, -119, -146, -118, 34, -103, -78, -872, 11863, -872, + -74, 10983, 36, -49, -872, 7882, 24, 6496, -872, 7882, + 10983, -872, -346, -872, 30, -872, -872, -33, -133, -105, + -303, -11, -14, 21, 23, 48, 52, -316, 41, -872, + 10103, -872, 42, -872, -872, 46, 38, 40, -872, 64, + 67, 60, 10543, 74, 10983, 68, 65, 69, 70, 73, + -167, -872, -872, -47, -872, -114, 77, 31, -872, -872, + -872, -872, -872, 1876, -872, -872, -872, -872, -872, -872, + -872, -872, -872, 5110, 17, 9663, -261, 8343, -872, -872, + 9663, 7882, -872, 50, -872, -872, -872, -203, -872, -872, + 10983, 51, -872, -872, 10983, 87, -872, -872, -872, 10983, + -872, -872, -872, -312, -872, -872, -200, 80, -872, -872, + -872, -872, -872, -872, -199, -872, -196, -872, -872, -195, + 71, -872, -872, -872, -872, -169, -872, -164, -872, -872, + -872, -872, -872, -161, -872, 83, -872, -160, 84, -153, + 80, -872, -278, -152, -872, 91, 94, -872, -872, 24, + -2, -43, -872, -872, -872, 6958, -872, -872, -872, 10983, + 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, + 10983, 10983, 10983, 10983, 10983, 10983, 10983, 10983, -872, -872, + -872, 93, -872, 2338, -872, -872, -872, 2338, -872, 10983, + -872, -872, -42, 10983, -32, -872, -872, -872, -872, -872, + -872, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, 10983, 10983, -872, -872, -872, -872, -872, -872, -872, + 9663, -872, -872, -76, -872, 7420, -872, -872, 96, 95, + -872, -872, -872, -872, -872, -132, -131, -872, -311, -872, + -330, -872, -330, -872, 10983, 10983, -872, -130, -872, -130, + -872, -146, -146, -872, 101, 34, -872, 11863, -872, 10983, + -872, -872, -41, 17, 24, -872, -872, -872, -872, -872, + -33, -33, -133, -133, -105, -105, -105, -105, -303, -303, + -11, -14, 21, 23, 48, 52, 10983, -872, 2338, 4186, + 59, 3724, -151, -872, -150, -872, -872, -872, -872, -872, + 8783, -872, -872, -872, 105, -872, 72, -872, -149, -872, + -148, -872, -141, -872, -140, -872, -139, -138, -872, -872, + -872, -28, 102, 95, 75, 107, 106, -872, -872, 4186, + 108, -872, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, 10983, -872, 100, 2800, 10983, -872, 104, 109, + 76, 112, 3262, -872, 113, -872, 9663, -872, -872, -872, + -137, 10983, 2800, 108, -872, -872, 2338, -872, 110, 95, + -872, -872, 2338, 114, -872, -872 }; - /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. - Performed when YYTABLE does not specify something else to do. Zero - means the default is an error. */ +/* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM. + Performed when YYTABLE does not specify something else to do. Zero + means the default is an error. */ static const yytype_int16 yydefact[] = { - 0, 168, 224, 222, 223, 221, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 225, 226, 227, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 350, 351, 352, 353, 354, 355, 356, 376, 377, 378, - 379, 380, 381, 382, 391, 404, 405, 392, 393, 395, - 394, 396, 397, 398, 399, 400, 401, 402, 403, 177, - 178, 250, 251, 249, 252, 259, 260, 257, 258, 255, - 256, 253, 254, 282, 283, 284, 294, 295, 296, 279, - 280, 281, 291, 292, 293, 276, 277, 278, 288, 289, - 290, 273, 274, 275, 285, 286, 287, 261, 262, 263, - 297, 298, 299, 264, 265, 266, 309, 310, 311, 267, - 268, 269, 321, 322, 323, 270, 271, 272, 333, 334, - 335, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 324, - 325, 326, 327, 328, 329, 330, 331, 332, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 348, 345, 346, - 347, 532, 533, 534, 536, 182, 360, 361, 384, 387, - 349, 358, 359, 375, 357, 406, 407, 410, 411, 412, - 414, 415, 416, 418, 419, 420, 422, 423, 519, 520, - 383, 385, 386, 362, 363, 364, 408, 365, 369, 370, - 373, 413, 417, 421, 366, 367, 371, 372, 409, 368, - 374, 453, 455, 456, 457, 459, 460, 461, 463, 464, - 465, 467, 468, 469, 471, 472, 473, 475, 476, 477, - 479, 480, 481, 483, 484, 485, 487, 488, 489, 491, - 492, 493, 495, 496, 454, 458, 462, 466, 470, 478, - 482, 486, 474, 490, 494, 497, 498, 499, 500, 501, + 0, 168, 225, 223, 224, 222, 229, 230, 231, 232, + 233, 234, 235, 236, 237, 226, 227, 228, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 351, 352, 353, 354, 355, 356, 357, 377, 378, 379, + 380, 381, 382, 383, 392, 405, 406, 393, 394, 396, + 395, 397, 398, 399, 400, 401, 402, 403, 404, 177, + 178, 251, 252, 250, 253, 260, 261, 258, 259, 256, + 257, 254, 255, 283, 284, 285, 295, 296, 297, 280, + 281, 282, 292, 293, 294, 277, 278, 279, 289, 290, + 291, 274, 275, 276, 286, 287, 288, 262, 263, 264, + 298, 299, 300, 265, 266, 267, 310, 311, 312, 268, + 269, 270, 322, 323, 324, 271, 272, 273, 334, 335, + 336, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 313, 314, 315, 316, 317, 318, 319, 320, 321, 325, + 326, 327, 328, 329, 330, 331, 332, 333, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 349, 346, 347, + 348, 533, 534, 535, 536, 538, 182, 361, 362, 385, + 388, 350, 359, 360, 376, 358, 407, 408, 411, 412, + 413, 415, 416, 417, 419, 420, 421, 423, 424, 520, + 521, 384, 386, 387, 363, 364, 365, 409, 366, 370, + 371, 374, 414, 418, 422, 367, 368, 372, 373, 410, + 369, 375, 454, 456, 457, 458, 460, 461, 462, 464, + 465, 466, 468, 469, 470, 472, 473, 474, 476, 477, + 478, 480, 481, 482, 484, 485, 486, 488, 489, 490, + 492, 493, 494, 496, 497, 455, 459, 463, 467, 471, + 479, 483, 487, 475, 491, 495, 498, 499, 500, 501, 502, 503, 504, 505, 506, 507, 508, 509, 510, 511, - 512, 513, 514, 515, 516, 517, 518, 388, 389, 390, - 424, 433, 435, 429, 434, 436, 437, 439, 440, 441, - 443, 444, 445, 447, 448, 449, 451, 452, 425, 426, - 427, 438, 428, 430, 431, 432, 442, 446, 450, 524, - 525, 528, 529, 530, 531, 526, 527, 0, 0, 0, - 0, 0, 0, 0, 0, 166, 167, 521, 522, 523, - 0, 629, 137, 539, 540, 541, 0, 538, 172, 170, - 171, 169, 0, 220, 173, 175, 176, 174, 139, 138, - 0, 203, 184, 186, 181, 188, 190, 185, 187, 183, - 189, 191, 179, 180, 206, 192, 199, 200, 201, 202, - 193, 194, 195, 196, 197, 198, 140, 141, 143, 142, - 144, 146, 147, 145, 205, 154, 628, 0, 630, 0, - 114, 113, 0, 125, 130, 161, 160, 158, 162, 0, - 155, 157, 163, 135, 216, 159, 537, 0, 625, 627, - 0, 0, 164, 165, 535, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 544, 0, 0, 0, - 99, 0, 94, 0, 109, 0, 121, 115, 123, 0, - 124, 0, 97, 131, 102, 0, 156, 136, 0, 209, - 215, 1, 626, 0, 0, 0, 96, 0, 0, 0, - 637, 0, 695, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 635, 0, - 633, 0, 0, 542, 151, 153, 0, 149, 207, 0, - 0, 100, 0, 0, 631, 110, 116, 120, 122, 118, - 126, 117, 0, 132, 105, 0, 103, 0, 0, 0, - 9, 0, 43, 42, 44, 41, 5, 6, 7, 8, - 2, 16, 14, 15, 17, 10, 11, 12, 13, 3, - 18, 37, 20, 25, 26, 0, 0, 30, 0, 218, - 0, 36, 34, 0, 210, 111, 0, 95, 0, 0, - 693, 0, 645, 0, 0, 0, 0, 0, 662, 0, - 0, 0, 0, 0, 0, 0, 687, 0, 660, 0, - 0, 0, 0, 98, 0, 0, 0, 546, 0, 0, - 148, 0, 204, 0, 211, 45, 49, 52, 55, 60, - 63, 65, 67, 69, 71, 73, 75, 0, 0, 101, - 573, 582, 586, 0, 0, 0, 607, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 45, 78, - 91, 0, 560, 0, 163, 135, 563, 584, 562, 570, - 561, 0, 564, 565, 588, 566, 595, 567, 568, 603, - 569, 0, 119, 0, 127, 0, 554, 134, 0, 0, - 107, 0, 104, 38, 39, 0, 22, 23, 0, 0, - 28, 27, 0, 220, 31, 33, 40, 0, 217, 112, - 697, 0, 698, 638, 0, 0, 696, 657, 653, 654, - 655, 656, 0, 651, 0, 93, 658, 0, 0, 672, - 673, 674, 675, 0, 670, 0, 679, 680, 681, 682, - 678, 0, 676, 0, 683, 0, 0, 0, 2, 691, - 216, 0, 689, 0, 0, 632, 634, 0, 552, 0, - 550, 545, 547, 0, 152, 150, 208, 0, 0, 0, + 512, 513, 514, 515, 516, 517, 518, 519, 389, 390, + 391, 425, 434, 436, 430, 435, 437, 438, 440, 441, + 442, 444, 445, 446, 448, 449, 450, 452, 453, 426, + 427, 428, 439, 429, 431, 432, 433, 443, 447, 451, + 525, 526, 529, 530, 531, 532, 527, 528, 0, 0, + 0, 0, 0, 0, 0, 0, 166, 167, 522, 523, + 524, 0, 631, 137, 541, 542, 543, 0, 540, 172, + 170, 171, 169, 0, 221, 173, 175, 176, 174, 139, + 138, 0, 203, 184, 186, 181, 188, 190, 185, 187, + 183, 189, 191, 179, 180, 206, 192, 199, 200, 201, + 202, 193, 194, 195, 196, 197, 198, 140, 141, 143, + 142, 144, 146, 147, 145, 205, 154, 630, 0, 632, + 0, 114, 113, 0, 125, 130, 161, 160, 158, 162, + 0, 155, 157, 163, 135, 216, 159, 539, 0, 627, + 629, 0, 0, 164, 165, 537, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 546, 0, 0, + 0, 99, 0, 94, 0, 109, 0, 121, 115, 123, + 0, 124, 0, 97, 131, 102, 0, 156, 136, 0, + 209, 215, 1, 628, 0, 0, 0, 96, 0, 0, + 0, 639, 0, 697, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 637, + 0, 635, 0, 0, 544, 151, 153, 0, 149, 207, + 0, 0, 100, 0, 0, 633, 110, 116, 120, 122, + 118, 126, 117, 0, 132, 105, 0, 103, 0, 0, + 0, 9, 0, 43, 42, 44, 41, 5, 6, 7, + 8, 2, 16, 14, 15, 17, 10, 11, 12, 13, + 3, 18, 37, 20, 25, 26, 0, 0, 30, 0, + 219, 0, 36, 218, 0, 210, 111, 0, 95, 0, + 0, 695, 0, 647, 0, 0, 0, 0, 0, 664, + 0, 0, 0, 0, 0, 0, 0, 689, 0, 662, + 0, 0, 0, 0, 98, 0, 0, 0, 548, 0, + 0, 148, 0, 204, 0, 211, 45, 49, 52, 55, + 60, 63, 65, 67, 69, 71, 73, 75, 0, 34, + 0, 101, 575, 584, 588, 0, 0, 0, 609, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 45, 78, 91, 0, 562, 0, 163, 135, 565, 586, + 564, 572, 563, 0, 566, 567, 590, 568, 597, 569, + 570, 605, 571, 0, 119, 0, 127, 0, 556, 134, + 0, 0, 107, 0, 104, 38, 39, 0, 22, 23, + 0, 0, 28, 27, 0, 221, 31, 33, 40, 0, + 217, 112, 699, 0, 700, 640, 0, 0, 698, 659, + 655, 656, 657, 658, 0, 653, 0, 93, 660, 0, + 0, 674, 675, 676, 677, 0, 672, 0, 681, 682, + 683, 684, 680, 0, 678, 0, 685, 0, 0, 0, + 2, 693, 216, 0, 691, 0, 0, 634, 636, 0, + 554, 0, 552, 547, 549, 0, 152, 150, 208, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 212, 213, 0, - 572, 0, 605, 618, 617, 0, 609, 0, 621, 619, - 0, 0, 0, 602, 622, 623, 624, 571, 81, 82, - 84, 83, 86, 87, 88, 89, 90, 85, 80, 0, - 0, 587, 583, 585, 589, 596, 604, 129, 0, 557, - 558, 0, 133, 0, 108, 4, 0, 24, 21, 32, - 219, 641, 643, 0, 0, 694, 0, 647, 0, 646, - 0, 649, 0, 0, 664, 0, 663, 0, 666, 0, - 0, 668, 0, 0, 688, 0, 685, 0, 661, 636, - 0, 553, 0, 548, 543, 46, 47, 48, 51, 50, - 53, 54, 58, 59, 56, 57, 61, 62, 64, 66, - 68, 70, 72, 74, 0, 214, 574, 0, 0, 0, - 0, 620, 0, 601, 79, 92, 128, 555, 0, 106, - 19, 639, 0, 640, 0, 652, 0, 659, 0, 671, - 0, 677, 0, 684, 0, 0, 690, 549, 551, 0, - 0, 593, 0, 0, 0, 612, 611, 614, 580, 597, - 556, 559, 642, 644, 648, 650, 665, 667, 669, 686, - 0, 575, 0, 0, 0, 613, 0, 0, 592, 0, - 0, 590, 0, 77, 0, 577, 606, 576, 0, 615, - 0, 580, 579, 581, 599, 594, 0, 616, 610, 591, - 600, 0, 608, 598 + 0, 0, 0, 0, 0, 0, 0, 0, 76, 212, + 213, 0, 574, 0, 607, 620, 619, 0, 611, 0, + 623, 621, 0, 0, 0, 604, 624, 625, 626, 573, + 81, 82, 84, 83, 86, 87, 88, 89, 90, 85, + 80, 0, 0, 589, 585, 587, 591, 598, 606, 129, + 0, 559, 560, 0, 133, 0, 108, 4, 0, 24, + 21, 32, 220, 643, 645, 0, 0, 696, 0, 649, + 0, 648, 0, 651, 0, 0, 666, 0, 665, 0, + 668, 0, 0, 670, 0, 0, 690, 0, 687, 0, + 663, 638, 0, 555, 0, 550, 545, 46, 47, 48, + 51, 50, 53, 54, 58, 59, 56, 57, 61, 62, + 64, 66, 68, 70, 72, 74, 0, 214, 576, 0, + 0, 0, 0, 622, 0, 603, 79, 92, 128, 557, + 0, 106, 19, 641, 0, 642, 0, 654, 0, 661, + 0, 673, 0, 679, 0, 686, 0, 0, 692, 551, + 553, 0, 0, 595, 0, 0, 0, 614, 613, 616, + 582, 599, 558, 561, 644, 646, 650, 652, 667, 669, + 671, 688, 0, 577, 0, 0, 0, 615, 0, 0, + 594, 0, 0, 592, 0, 77, 0, 579, 608, 578, + 0, 617, 0, 582, 581, 583, 601, 596, 0, 618, + 612, 593, 602, 0, 610, 600 }; - /* YYPGOTO[NTERM-NUM]. */ +/* YYPGOTO[NTERM-NUM]. */ static const yytype_int16 yypgoto[] = { - -871, -544, -871, -871, -871, -871, -871, -871, -871, -871, - -871, -871, -435, -871, -382, -381, -473, -384, -268, -264, - -269, -267, -266, -262, -871, -485, -871, -498, -871, -501, - -533, 11, -871, -871, -871, 7, -394, -871, -871, 45, - 44, 46, -871, -871, -407, -871, -871, -871, -871, -101, - -871, -390, -377, -871, 9, -871, 0, -431, -871, -871, - -871, -553, 150, -871, -871, -871, -552, -557, -230, -344, - -613, -871, -370, -625, -870, -871, -427, -871, -871, -436, - -434, -871, -871, 62, -730, -363, -871, -136, -871, -399, - -871, -135, -871, -871, -871, -871, -130, -871, -871, -871, - -871, -871, -871, -871, -871, 93, -871, -871, 2, -871, - -71, -281, -445, -871, -871, -871, -306, -305, -314, -871, - -871, -308, -303, -304, -302, -301, -871, -317, -299, -871, - -398, -536 + -872, -544, -872, -872, -872, -872, -872, -872, -872, -872, + -872, -872, -436, -872, -392, -391, -490, -390, -269, -266, + -268, -264, -262, -260, -872, -482, -872, -499, -872, -492, + -534, 6, -872, -872, -872, 1, -403, -872, -872, 45, + 44, 49, -872, -872, -406, -872, -872, -872, -872, -104, + -872, -389, -375, -872, 12, -872, 0, -433, -872, -872, + -872, -553, 145, -872, -872, -872, -560, -556, -233, -344, + -614, -872, -373, -626, -871, -872, -430, -872, -872, -440, + -437, -872, -872, 63, -737, -363, -872, -144, -872, -399, + -872, -142, -872, -872, -872, -872, -134, -872, -872, -872, + -872, -872, -872, -872, -872, 97, -872, -872, 2, -872, + -71, -308, -416, -872, -872, -872, -304, -307, -302, -872, + -872, -315, -310, -306, -300, -314, -872, -299, -317, -872, + -395, -538 }; - /* YYDEFGOTO[NTERM-NUM]. */ +/* YYDEFGOTO[NTERM-NUM]. */ static const yytype_int16 yydefgoto[] = { - -1, 529, 530, 531, 796, 532, 533, 534, 535, 536, - 537, 538, 618, 540, 586, 587, 588, 589, 590, 591, - 592, 593, 594, 595, 596, 619, 854, 620, 779, 621, - 709, 622, 387, 649, 507, 623, 389, 390, 391, 436, - 437, 438, 392, 393, 394, 395, 396, 397, 486, 487, - 398, 399, 400, 401, 541, 489, 542, 492, 449, 450, - 543, 404, 405, 406, 578, 482, 576, 577, 719, 720, - 647, 791, 626, 627, 628, 629, 630, 751, 890, 926, - 918, 919, 920, 927, 631, 632, 633, 634, 921, 893, - 635, 636, 922, 941, 637, 638, 639, 857, 755, 859, - 897, 916, 917, 640, 407, 408, 409, 433, 641, 479, - 480, 459, 460, 803, 804, 411, 682, 683, 687, 412, - 413, 693, 694, 701, 702, 705, 414, 711, 712, 415, - 461, 462 + 0, 530, 531, 532, 798, 533, 534, 535, 536, 537, + 538, 539, 620, 541, 587, 588, 589, 590, 591, 592, + 593, 594, 595, 596, 597, 621, 856, 622, 781, 623, + 711, 624, 388, 651, 508, 625, 390, 391, 392, 437, + 438, 439, 393, 394, 395, 396, 397, 398, 487, 488, + 399, 400, 401, 402, 542, 490, 599, 493, 450, 451, + 544, 405, 406, 407, 579, 483, 577, 578, 721, 722, + 649, 793, 628, 629, 630, 631, 632, 753, 892, 928, + 920, 921, 922, 929, 633, 634, 635, 636, 923, 895, + 637, 638, 924, 943, 639, 640, 641, 859, 757, 861, + 899, 918, 919, 642, 408, 409, 410, 434, 643, 480, + 481, 460, 461, 805, 806, 412, 684, 685, 689, 413, + 414, 695, 696, 703, 704, 707, 415, 713, 714, 416, + 462, 463 }; - /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If - positive, shift that token. If negative, reduce the rule whose - number is the opposite. If YYTABLE_NINF, syntax error. */ +/* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM. If + positive, shift that token. If negative, reduce the rule whose + number is the opposite. If YYTABLE_NINF, syntax error. */ static const yytype_int16 yytable[] = { - 403, 439, 410, 454, 646, 597, 783, 388, 454, 402, - 655, 386, 503, 539, 710, 676, 453, 700, 544, 722, - 455, 856, 446, 686, 475, 455, 723, 734, 735, 745, - 787, 676, 790, 670, 426, 792, 671, 714, 801, 664, - 667, 432, 670, 925, 571, 439, 724, 501, 572, 490, - 933, 484, 668, 677, 430, 585, 502, 656, 657, 416, - 925, 417, 446, 736, 737, 746, 427, 672, 642, 644, - 418, 685, 802, 653, 654, 485, 672, -35, 446, 658, - 431, 419, 685, 659, -692, 685, 678, 679, 680, 681, - -692, 490, 574, 490, 685, 598, 550, 793, 424, 491, - 643, 448, 551, 599, 673, 666, 730, 598, 731, 760, - 673, 762, 673, 749, 648, 673, 598, 673, 434, 673, - 673, 585, 504, 788, 673, 505, 441, 552, 506, 442, - 858, 463, 585, 553, 464, 585, 465, 467, 469, 471, - 473, 474, 477, 558, 585, 646, 566, 646, 580, 559, - 646, 674, 567, 582, 581, 661, 795, 797, 867, 583, - 868, 662, 780, 585, 799, 805, 722, 707, 807, 871, - 420, 551, 421, 872, 808, 866, 768, 769, 770, 771, - 772, 773, 774, 775, 776, 777, 574, 809, 574, 811, - 780, 863, 814, 810, 816, 812, 778, 446, 815, 818, - 817, 821, 824, 826, 940, 819, 898, 822, 825, 827, - 899, 904, 780, 905, 906, 907, 780, 808, 908, 812, - 815, 819, 909, 936, 822, 422, 873, 423, 827, 780, - 874, 783, 800, 435, 454, 428, 722, 429, 696, 697, - 698, 699, 520, 689, 690, 691, 692, 453, 448, 466, - 651, 455, 464, 652, 780, 901, 860, 781, 483, 574, - 862, 842, 843, 844, 845, 468, 470, 472, 464, 464, - 464, 456, 710, 493, 710, 700, 700, 732, 733, 877, - 686, 864, 865, 476, 443, 684, 464, 831, 464, 676, - 646, 458, 835, 836, 837, 585, 585, 585, 585, 585, - 585, 585, 585, 585, 585, 585, 585, 585, 585, 585, - 585, 935, 478, 688, 695, 783, 464, 464, 703, 706, - 713, 464, 464, 464, 738, 739, 832, 685, 685, 833, - 488, 780, 832, 574, 861, 887, 333, 334, 335, 330, - 685, 499, 685, 727, 728, 729, 780, 910, 838, 839, - 500, 840, 841, 889, 846, 847, 891, 490, 545, 546, - 547, 548, 554, 650, 740, 549, 555, 556, 675, 557, - 646, 560, 568, 561, 562, 563, 564, 585, 585, 565, - 569, 570, 598, 660, 573, 579, 665, 501, 704, 743, - 585, 440, 585, 671, 744, 715, 891, 747, 741, 447, - 402, 750, 752, 574, 742, 753, 718, 403, 402, 410, - 403, 726, 923, 928, 388, 403, 402, 410, 386, 402, - 754, 756, 457, 757, 402, 481, 646, 758, 937, 761, - 763, -36, -34, 794, 764, 440, 495, 765, 766, 440, - 767, 798, -29, 806, 402, 813, 820, 823, 402, 828, - 892, 829, 855, 780, 870, 447, 883, 894, 902, 903, - 911, 912, 913, 914, 402, 924, -578, 455, 929, 930, - 600, 934, 848, 850, 942, 943, 851, 849, 852, 496, - 725, 931, 575, 853, 497, 498, 425, 830, 888, 895, - 892, 402, 932, 625, 938, 494, 896, 939, 915, 878, - 452, 716, 624, 875, 876, 784, 785, 455, 885, 880, - 0, 786, 879, 0, 0, 0, 882, 881, 0, 0, - 0, 0, 884, 0, 0, 0, 0, 0, 886, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 669, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 404, 389, 411, 440, 648, 455, 387, 785, 454, 598, + 455, 504, 403, 540, 678, 712, 858, 545, 702, 725, + 657, 724, 456, 688, 679, 447, 747, 456, 476, 672, + 678, 789, 673, 792, 736, 737, 794, 716, 431, 666, + 427, 669, 803, 672, 927, 485, 726, 440, 491, 442, + 417, 935, 443, 670, 418, 586, 492, 680, 681, 682, + 683, 927, 748, 674, 432, 447, 419, 644, 646, 486, + 738, 739, 428, 655, 656, 687, 804, 674, -694, 420, + 491, 447, 658, 659, -694, 600, 687, 645, 502, 687, + 491, 795, 600, 601, 575, 449, 600, 503, 687, 650, + 551, 553, -35, 790, 660, 668, 552, 554, 661, 421, + 466, 468, 470, 472, 474, 475, 478, 422, 751, 559, + 762, 586, 764, 505, 567, 560, 506, 581, 423, 507, + 568, 860, 586, 582, 675, 586, 464, 583, 467, 465, + 675, 465, 675, 584, 586, 675, 648, 675, 648, 675, + 675, 648, 663, 797, 675, 676, 807, 809, 664, 782, + 811, 813, 552, 810, 586, 801, 812, 814, 799, 724, + 572, 709, 469, 424, 573, 465, 868, 770, 771, 772, + 773, 774, 775, 776, 777, 778, 779, 816, 575, 425, + 575, 471, 818, 817, 465, 820, 823, 780, 819, 942, + 447, 821, 824, 826, 828, 900, 901, 906, 907, 827, + 829, 782, 782, 810, 814, 908, 909, 910, 911, 938, + 429, 817, 821, 824, 829, 782, 873, 875, 734, 735, + 874, 876, 785, 802, 732, 430, 733, 455, 436, 724, + 454, 698, 699, 700, 701, 521, 844, 845, 846, 847, + 653, 433, 473, 654, 456, 465, 903, 691, 692, 693, + 694, 477, 575, 686, 465, 690, 465, 862, 465, 697, + 705, 864, 465, 465, 712, 435, 712, 702, 702, 449, + 879, 688, 866, 867, 869, 708, 870, 833, 465, 678, + 444, 648, 457, 837, 838, 839, 586, 586, 586, 586, + 586, 586, 586, 586, 586, 586, 586, 586, 586, 586, + 586, 586, 937, 459, 715, 782, 785, 465, 783, 834, + 782, 834, 835, 863, 889, 334, 335, 336, 740, 741, + 782, 865, 687, 687, 782, 912, 575, 729, 730, 731, + 840, 841, 479, 842, 843, 687, 484, 687, 331, 494, + 848, 849, 489, 500, 501, 491, 547, 548, 549, 546, + 555, 550, 574, 742, 891, 569, 556, 893, 652, 557, + 558, 648, 561, 562, 600, 563, 564, 565, 586, 586, + 566, 570, 571, 667, 580, 662, -34, 502, 706, 745, + 673, 586, 441, 586, 717, 746, 677, 743, 744, 749, + 448, 754, 752, 755, 403, 756, 575, 893, 404, 389, + 411, 404, 403, 925, 387, 720, 404, 458, 411, 758, + 403, 728, 759, 403, 930, 760, 482, 648, 403, 763, + 766, 765, -36, 815, 767, 768, 441, 496, 769, 939, + 441, 796, 800, -29, 808, 822, 825, 830, 403, 543, + 831, 857, 403, 894, 872, 885, 448, 782, 896, 904, + 905, 916, 913, 915, 926, 932, 914, -580, 403, 931, + 456, 602, 936, 850, 945, 944, 852, 851, 727, 933, + 497, 853, 426, 576, 854, 498, 832, 855, 897, 499, + 890, 934, 940, 894, 627, 403, 941, 495, 898, 786, + 917, 787, 718, 877, 882, 453, 626, 881, 878, 788, + 456, 886, 888, 880, 0, 0, 884, 0, 0, 0, + 0, 883, 0, 0, 0, 0, 0, 0, 887, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 717, 0, 575, 0, 575, 0, - 0, 0, 0, 402, 0, 402, 0, 402, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 671, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 719, 0, 576, 0, 576, + 0, 0, 0, 0, 0, 0, 0, 403, 0, 403, + 0, 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 625, 0, 0, 0, 0, 0, 0, 0, 0, - 624, 403, 0, 0, 0, 0, 0, 0, 0, 575, - 402, 0, 0, 0, 0, 0, 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 404, 0, 626, 0, 0, 0, 0, + 0, 576, 0, 0, 0, 403, 0, 0, 0, 0, + 0, 0, 0, 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, - 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 576, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 625, 0, 0, 0, 625, 0, 0, 0, 0, - 624, 0, 0, 0, 624, 0, 0, 0, 0, 0, + 0, 0, 0, 627, 0, 0, 0, 627, 0, 0, + 0, 0, 0, 0, 0, 626, 0, 0, 0, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 575, 0, 0, 0, 0, 0, 0, - 0, 0, 402, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 576, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 403, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 625, 625, 0, 625, - 0, 410, 0, 0, 0, 624, 624, 0, 624, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 627, 627, + 0, 627, 0, 411, 0, 0, 0, 0, 0, 0, + 626, 626, 0, 626, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 627, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 625, 0, 0, - 0, 0, 0, 0, 0, 0, 624, 0, 0, 0, - 0, 0, 0, 625, 0, 0, 0, 0, 0, 0, - 625, 0, 624, 0, 0, 0, 0, 0, 0, 624, - 625, 0, 0, 0, 625, 0, 0, 0, 0, 624, - 625, 0, 0, 624, 0, 0, 0, 451, 0, 624, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, + 0, 626, 0, 0, 0, 627, 0, 0, 0, 0, + 0, 0, 627, 0, 0, 0, 0, 626, 0, 0, + 0, 0, 627, 0, 626, 0, 627, 0, 0, 0, + 0, 0, 627, 0, 626, 0, 0, 0, 626, 0, + 0, 0, 452, 0, 626, 1, 2, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 331, + 0, 0, 0, 0, 0, 0, 0, 332, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 330, 0, 0, 0, 0, 0, 0, - 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 332, 333, 334, 335, 336, - 0, 0, 0, 0, 0, 0, 0, 0, 337, 338, - 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, + 0, 333, 334, 335, 336, 337, 0, 0, 0, 0, + 0, 0, 0, 0, 338, 339, 340, 341, 342, 343, + 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 345, 346, 347, 348, + 349, 350, 351, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 0, 0, 509, + 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 511, 512, + 0, 331, 0, 602, 603, 0, 0, 0, 0, 604, + 513, 514, 515, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 333, 334, 335, 336, 337, 0, 0, + 0, 517, 518, 519, 520, 521, 338, 339, 340, 341, + 342, 343, 344, 605, 606, 607, 608, 0, 609, 610, + 611, 612, 613, 614, 615, 616, 617, 618, 345, 346, + 347, 348, 349, 350, 351, 522, 523, 524, 525, 526, + 527, 528, 529, 352, 619, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 0, + 0, 509, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 0, 0, 0, 0, 351, 0, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 511, 512, 0, 331, 0, 602, 784, 0, 0, 0, + 0, 604, 513, 514, 515, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 333, 334, 335, 336, 337, + 0, 0, 0, 517, 518, 519, 520, 521, 338, 339, + 340, 341, 342, 343, 344, 605, 606, 607, 608, 0, + 609, 610, 611, 612, 613, 614, 615, 616, 617, 618, + 345, 346, 347, 348, 349, 350, 351, 522, 523, 524, + 525, 526, 527, 528, 529, 352, 619, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -1878,66 +1937,20 @@ static const yytype_int16 yytable[] = 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, + 330, 0, 0, 509, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 510, 511, 0, 330, 0, 600, 601, 0, 0, - 0, 0, 602, 512, 513, 514, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 336, 0, 0, 0, 516, 517, 518, 519, 520, 337, - 338, 339, 340, 341, 342, 343, 603, 604, 605, 606, - 0, 607, 608, 609, 610, 611, 612, 613, 614, 615, - 616, 344, 345, 346, 347, 348, 349, 350, 521, 522, - 523, 524, 525, 526, 527, 528, 351, 617, 352, 353, + 0, 0, 511, 512, 0, 331, 0, 602, 0, 0, + 0, 0, 0, 604, 513, 514, 515, 516, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 333, 334, 335, + 336, 337, 0, 0, 0, 517, 518, 519, 520, 521, + 338, 339, 340, 341, 342, 343, 344, 605, 606, 607, + 608, 0, 609, 610, 611, 612, 613, 614, 615, 616, + 617, 618, 345, 346, 347, 348, 349, 350, 351, 522, + 523, 524, 525, 526, 527, 528, 529, 352, 619, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 510, 511, 0, 330, 0, 600, 782, 0, - 0, 0, 0, 602, 512, 513, 514, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, - 335, 336, 0, 0, 0, 516, 517, 518, 519, 520, - 337, 338, 339, 340, 341, 342, 343, 603, 604, 605, - 606, 0, 607, 608, 609, 610, 611, 612, 613, 614, - 615, 616, 344, 345, 346, 347, 348, 349, 350, 521, - 522, 523, 524, 525, 526, 527, 528, 351, 617, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 1, 2, 3, 4, 5, 6, 7, + 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -1970,66 +1983,20 @@ static const yytype_int16 yytable[] = 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, + 328, 329, 330, 0, 0, 509, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 510, 511, 0, 330, 0, 600, 0, - 0, 0, 0, 0, 602, 512, 513, 514, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 336, 0, 0, 0, 516, 517, 518, 519, - 520, 337, 338, 339, 340, 341, 342, 343, 603, 604, - 605, 606, 0, 607, 608, 609, 610, 611, 612, 613, - 614, 615, 616, 344, 345, 346, 347, 348, 349, 350, - 521, 522, 523, 524, 525, 526, 527, 528, 351, 617, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 0, 0, 0, 0, 511, 512, 0, 331, 0, 494, + 0, 0, 0, 0, 0, 604, 513, 514, 515, 516, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, + 334, 335, 336, 337, 0, 0, 0, 517, 518, 519, + 520, 521, 338, 339, 340, 341, 342, 343, 344, 605, + 606, 607, 608, 0, 609, 610, 611, 612, 613, 614, + 615, 616, 617, 618, 345, 346, 347, 348, 349, 350, + 351, 522, 523, 524, 525, 526, 527, 528, 529, 352, + 619, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 510, 511, 0, 330, 0, 493, - 0, 0, 0, 0, 0, 602, 512, 513, 514, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, - 333, 334, 335, 336, 0, 0, 0, 516, 517, 518, - 519, 520, 337, 338, 339, 340, 341, 342, 343, 603, - 604, 605, 606, 0, 607, 608, 609, 610, 611, 612, - 613, 614, 615, 616, 344, 345, 346, 347, 348, 349, - 350, 521, 522, 523, 524, 525, 526, 527, 528, 351, - 617, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 1, 2, 3, 4, 5, + 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -2062,66 +2029,20 @@ static const yytype_int16 yytable[] = 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 508, 509, 0, 0, + 326, 327, 328, 329, 330, 0, 0, 509, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 510, 511, 0, 330, 0, - 0, 0, 0, 0, 0, 0, 602, 512, 513, 514, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 332, 333, 334, 335, 336, 0, 0, 0, 516, 517, - 518, 519, 520, 337, 338, 339, 340, 341, 342, 343, - 603, 604, 605, 606, 0, 607, 608, 609, 610, 611, - 612, 613, 614, 615, 616, 344, 345, 346, 347, 348, - 349, 350, 521, 522, 523, 524, 525, 526, 527, 528, - 351, 617, 352, 353, 354, 355, 356, 357, 358, 359, + 0, 0, 0, 0, 0, 0, 511, 512, 0, 331, + 0, 0, 0, 0, 0, 0, 0, 604, 513, 514, + 515, 516, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 333, 334, 335, 336, 337, 0, 0, 0, 517, + 518, 519, 520, 521, 338, 339, 340, 341, 342, 343, + 344, 605, 606, 607, 608, 0, 609, 610, 611, 612, + 613, 614, 615, 616, 617, 618, 345, 346, 347, 348, + 349, 350, 351, 522, 523, 524, 525, 526, 527, 528, + 529, 352, 619, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 1, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 0, 0, 508, 509, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 510, 511, 0, 330, - 0, 0, 0, 0, 0, 0, 0, 602, 512, 513, - 514, 515, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 332, 333, 334, 335, 336, 0, 0, 0, 516, - 517, 518, 519, 520, 337, 338, 339, 340, 341, 342, - 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 344, 345, 346, 347, - 348, 349, 350, 521, 522, 523, 524, 525, 526, 527, - 528, 351, 0, 352, 353, 354, 355, 356, 357, 358, - 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, - 379, 380, 381, 382, 383, 384, 385, 1, 2, 3, + 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, @@ -2153,67 +2074,21 @@ static const yytype_int16 yytable[] = 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 0, 0, 0, 320, 321, 322, 323, - 324, 325, 326, 327, 328, 329, 0, 0, 508, 509, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 510, 511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, - 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 332, 333, 334, 335, 0, 0, 0, 0, - 516, 517, 518, 519, 520, 337, 338, 339, 340, 341, - 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 344, 345, 346, - 347, 348, 349, 350, 521, 522, 523, 524, 525, 526, - 527, 528, 351, 0, 352, 353, 354, 355, 356, 357, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 0, 0, 509, + 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 511, 512, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 604, + 513, 514, 515, 516, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 333, 334, 335, 336, 337, 0, 0, + 0, 517, 518, 519, 520, 521, 338, 339, 340, 341, + 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 345, 346, + 347, 348, 349, 350, 351, 522, 523, 524, 525, 526, + 527, 528, 529, 352, 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, - 378, 379, 380, 381, 382, 383, 384, 385, 1, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 330, 0, 0, 0, 0, 0, 0, 0, 331, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 332, 333, 334, 335, 336, 0, 0, - 0, 0, 0, 0, 0, 0, 337, 338, 339, 340, - 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 344, 345, - 346, 347, 348, 349, 350, 0, 0, 0, 0, 0, - 0, 0, 0, 351, 0, 352, 353, 354, 355, 356, - 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, - 377, 378, 379, 380, 381, 382, 383, 384, 385, 1, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, @@ -2245,68 +2120,22 @@ static const yytype_int16 yytable[] = 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 0, 0, 0, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 312, 313, 314, 315, 316, 317, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 0, + 0, 509, 510, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 511, 512, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 513, 514, 515, 516, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 333, 334, 335, 336, 0, + 0, 0, 0, 517, 518, 519, 520, 521, 338, 339, + 340, 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 332, 333, 334, 335, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 337, 338, 339, - 340, 341, 342, 343, 603, 0, 0, 606, 0, 607, - 608, 0, 0, 611, 0, 0, 0, 0, 0, 344, - 345, 346, 347, 348, 349, 350, 0, 0, 0, 0, - 0, 0, 0, 0, 351, 0, 352, 353, 354, 355, + 345, 346, 347, 348, 349, 350, 351, 522, 523, 524, + 525, 526, 527, 528, 529, 352, 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 0, 0, 0, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 444, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 332, 333, 334, 335, 0, - 0, 0, 0, 0, 0, 0, 0, 445, 337, 338, - 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 344, 345, 346, 347, 348, 349, 350, 0, 0, 0, - 0, 0, 0, 0, 0, 351, 0, 352, 353, 354, - 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, - 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, - 385, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, @@ -2337,68 +2166,22 @@ static const yytype_int16 yytable[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 331, 0, 0, 0, 0, + 0, 0, 0, 332, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 333, 334, 335, + 336, 337, 0, 0, 0, 0, 0, 0, 0, 0, + 338, 339, 340, 341, 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 330, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 332, 333, 334, 335, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 337, - 338, 339, 340, 341, 342, 343, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 344, 345, 346, 347, 348, 349, 350, 0, 0, - 0, 0, 0, 0, 0, 0, 351, 0, 352, 353, + 0, 0, 345, 346, 347, 348, 349, 350, 351, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, - 384, 385, 1, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, - 0, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 721, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 332, 333, 334, - 335, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 337, 338, 339, 340, 341, 342, 343, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 344, 345, 346, 347, 348, 349, 350, 0, - 0, 0, 0, 0, 0, 0, 0, 351, 0, 352, - 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, - 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, - 383, 384, 385, 1, 2, 3, 4, 5, 6, 7, + 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -2429,68 +2212,22 @@ static const yytype_int16 yytable[] = 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 0, 0, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 0, 0, 0, 0, 0, 0, 0, 0, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 0, 0, 0, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 834, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 332, 333, - 334, 335, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 337, 338, 339, 340, 341, 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 344, 345, 346, 347, 348, 349, 350, - 0, 0, 0, 0, 0, 0, 0, 0, 351, 0, - 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, + 334, 335, 336, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 338, 339, 340, 341, 342, 343, 344, 605, + 0, 0, 608, 0, 609, 610, 0, 0, 613, 0, + 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, + 351, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, - 382, 383, 384, 385, 1, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, 0, 0, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 869, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 332, - 333, 334, 335, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 337, 338, 339, 340, 341, 342, 343, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 344, 345, 346, 347, 348, 349, - 350, 0, 0, 0, 0, 0, 0, 0, 0, 351, - 0, 352, 353, 354, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, - 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, - 381, 382, 383, 384, 385, 1, 2, 3, 4, 5, + 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -2522,378 +2259,27 @@ static const yytype_int16 yytable[] = 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 0, 0, 0, 320, 321, 322, 323, 324, 325, - 326, 327, 328, 329, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 316, 317, 0, 0, 0, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 332, 333, 334, 335, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 337, 338, 339, 340, 341, 342, 343, + 0, 0, 0, 0, 0, 0, 0, 445, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 344, 345, 346, 347, 348, - 349, 350, 0, 0, 0, 0, 0, 0, 0, 0, - 351, 0, 352, 353, 354, 355, 356, 357, 358, 359, + 0, 333, 334, 335, 336, 0, 0, 0, 0, 0, + 0, 0, 0, 446, 338, 339, 340, 341, 342, 343, + 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 345, 346, 347, 348, + 349, 350, 351, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, - 380, 381, 382, 383, 384, 385, 2, 3, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 0, - 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 0, 0, 0, 0, 0, 0, 323, 0, 0, - 0, 327, 328, 329, 0, 0, 508, 509, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 510, 511, 0, 0, 0, - 645, 789, 0, 0, 0, 0, 0, 512, 513, 514, - 515, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 516, 517, - 518, 519, 520, 337, 0, 0, 0, 0, 342, 343, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 521, 522, 523, 524, 525, 526, 527, 528, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 364, 2, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 0, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 0, 0, 0, 0, 0, 0, 323, 0, 0, 0, - 327, 328, 329, 0, 0, 508, 509, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 510, 511, 0, 0, 0, 645, - 900, 0, 0, 0, 0, 0, 512, 513, 514, 515, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 516, 517, 518, - 519, 520, 337, 0, 0, 0, 0, 342, 343, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 521, 522, 523, 524, 525, 526, 527, 528, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 364, 2, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 0, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 0, - 0, 0, 0, 0, 0, 323, 0, 0, 0, 327, - 328, 329, 0, 0, 508, 509, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 510, 511, 0, 0, 584, 0, 0, - 0, 0, 0, 0, 0, 512, 513, 514, 515, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 516, 517, 518, 519, - 520, 337, 0, 0, 0, 0, 342, 343, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 521, 522, 523, 524, 525, 526, 527, 528, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 364, 2, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 0, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 0, 0, - 0, 0, 0, 0, 323, 0, 0, 0, 327, 328, - 329, 0, 0, 508, 509, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 510, 511, 0, 0, 0, 645, 0, 0, - 0, 0, 0, 0, 512, 513, 514, 515, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 516, 517, 518, 519, 520, - 337, 0, 0, 0, 0, 342, 343, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 521, - 522, 523, 524, 525, 526, 527, 528, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 364, 2, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 0, - 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 0, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 0, 0, 0, - 0, 0, 0, 323, 0, 0, 0, 327, 328, 329, - 0, 0, 508, 509, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 510, 511, 0, 0, 748, 0, 0, 0, 0, - 0, 0, 0, 512, 513, 514, 515, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 516, 517, 518, 519, 520, 337, - 0, 0, 0, 0, 342, 343, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 521, 522, - 523, 524, 525, 526, 527, 528, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 364, 2, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 0, 0, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 0, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 0, 0, 0, 0, - 0, 0, 323, 0, 0, 0, 327, 328, 329, 0, - 0, 508, 509, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 510, 511, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 759, 512, 513, 514, 515, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 516, 517, 518, 519, 520, 337, 0, - 0, 0, 0, 342, 343, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 521, 522, 523, - 524, 525, 526, 527, 528, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 364, - 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 0, 0, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 0, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 0, 0, 0, 0, 0, - 0, 323, 0, 0, 0, 327, 328, 329, 0, 0, - 508, 509, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 510, - 511, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 512, 513, 514, 515, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 516, 517, 518, 519, 520, 337, 0, 0, - 0, 0, 342, 343, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 521, 522, 523, 524, - 525, 526, 527, 528, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 364, 2, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 0, 0, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 0, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 0, 0, 0, 0, 0, 0, - 323, 0, 0, 0, 327, 328, 329, 0, 0, 508, - 509, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 510, 511, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 512, 513, 514, 515, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 516, 517, 518, 519, 520, 337, 0, 0, 0, - 0, 342, 663, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 521, 522, 523, 524, 525, - 526, 527, 528, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 364, 2, 3, + 380, 381, 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 0, 0, 61, 62, 63, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, @@ -2904,7 +2290,7 @@ static const yytype_int16 yytable[] = 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 0, 166, 167, 168, 169, 170, 171, 172, 173, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, @@ -2919,205 +2305,22 @@ static const yytype_int16 yytable[] = 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 0, 0, 0, 0, 0, 0, 323, - 0, 0, 0, 327, 328, 329, 0, 0, 508, 509, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 510, 511, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 512, - 513, 514, 515, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 516, 517, 518, 519, 708, 337, 0, 0, 0, 0, - 342, 343, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 521, 522, 523, 524, 525, 526, - 527, 528, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 364, 2, 3, 4, - 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, - 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, - 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, - 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, - 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, - 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, - 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, - 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, - 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, - 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, - 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 0, 166, 167, 168, 169, 170, 171, 172, 173, 174, - 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, - 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, - 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, - 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, - 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, - 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, - 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, - 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, - 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, - 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, - 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 0, 0, 0, 0, 0, 0, 323, 0, - 0, 0, 327, 328, 329, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 314, 315, 316, 317, 0, 0, 0, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 331, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 337, 0, 0, 0, 0, 342, - 343 -}; - -static const yytype_int16 yycheck[] = -{ - 0, 391, 0, 410, 502, 490, 631, 0, 415, 0, - 511, 0, 443, 448, 567, 551, 410, 561, 449, 576, - 410, 751, 399, 556, 422, 415, 578, 336, 337, 341, - 643, 567, 645, 353, 358, 648, 356, 570, 353, 537, - 361, 364, 353, 913, 357, 435, 579, 354, 361, 356, - 920, 390, 373, 353, 364, 490, 363, 334, 335, 354, - 930, 354, 439, 372, 373, 377, 390, 387, 499, 500, - 354, 556, 387, 508, 509, 414, 387, 354, 455, 356, - 390, 354, 567, 360, 355, 570, 386, 387, 388, 389, - 361, 356, 482, 356, 579, 356, 355, 649, 356, 364, - 363, 372, 361, 364, 549, 540, 366, 356, 368, 610, - 555, 612, 557, 598, 363, 560, 356, 562, 355, 564, - 565, 556, 358, 363, 569, 361, 361, 355, 364, 364, - 755, 387, 567, 361, 390, 570, 417, 418, 419, 420, - 421, 422, 423, 355, 579, 643, 355, 645, 355, 361, - 648, 549, 361, 355, 361, 355, 355, 658, 359, 361, - 361, 361, 361, 598, 662, 355, 723, 565, 355, 357, - 354, 361, 354, 361, 361, 788, 343, 344, 345, 346, - 347, 348, 349, 350, 351, 352, 576, 355, 578, 355, - 361, 362, 355, 361, 355, 361, 363, 574, 361, 355, - 361, 355, 355, 355, 934, 361, 355, 361, 361, 361, - 355, 355, 361, 355, 355, 355, 361, 361, 355, 361, - 361, 361, 355, 355, 361, 354, 357, 354, 361, 361, - 361, 856, 667, 361, 641, 354, 793, 354, 386, 387, - 388, 389, 390, 386, 387, 388, 389, 641, 372, 387, - 361, 641, 390, 364, 361, 868, 757, 364, 358, 649, - 761, 734, 735, 736, 737, 387, 387, 387, 390, 390, - 390, 364, 825, 358, 827, 819, 820, 332, 333, 812, - 813, 779, 780, 387, 390, 387, 390, 718, 390, 825, - 788, 390, 727, 728, 729, 730, 731, 732, 733, 734, - 735, 736, 737, 738, 739, 740, 741, 742, 743, 744, - 745, 924, 390, 387, 387, 940, 390, 390, 387, 387, - 387, 390, 390, 390, 338, 339, 361, 812, 813, 364, - 390, 361, 361, 723, 364, 364, 379, 380, 381, 356, - 825, 390, 827, 369, 370, 371, 361, 362, 730, 731, - 390, 732, 733, 854, 738, 739, 857, 356, 355, 390, - 364, 363, 363, 390, 376, 361, 361, 361, 390, 361, - 868, 361, 355, 361, 361, 361, 361, 812, 813, 361, - 361, 354, 356, 355, 364, 363, 354, 354, 353, 340, - 825, 391, 827, 356, 342, 357, 897, 357, 375, 399, - 391, 359, 354, 793, 374, 364, 390, 407, 399, 407, - 410, 390, 910, 914, 407, 415, 407, 415, 407, 410, - 364, 354, 415, 354, 415, 425, 924, 364, 929, 354, - 362, 354, 354, 390, 364, 435, 434, 364, 364, 439, - 364, 390, 355, 363, 435, 361, 361, 361, 439, 355, - 857, 355, 357, 361, 357, 455, 353, 398, 353, 387, - 359, 390, 355, 354, 455, 363, 358, 857, 364, 355, - 358, 358, 740, 742, 364, 359, 743, 741, 744, 435, - 581, 402, 482, 745, 439, 439, 336, 717, 832, 859, - 897, 482, 919, 493, 930, 433, 859, 931, 897, 813, - 407, 572, 493, 808, 810, 641, 641, 897, 825, 817, - -1, 641, 815, -1, -1, -1, 820, 819, -1, -1, - -1, -1, 823, -1, -1, -1, -1, -1, 827, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 545, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 574, -1, 576, -1, 578, -1, - -1, -1, -1, 574, -1, 576, -1, 578, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 631, -1, -1, -1, -1, -1, -1, -1, -1, - 631, 641, -1, -1, -1, -1, -1, -1, -1, 649, - 641, -1, -1, -1, -1, -1, -1, -1, 649, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 723, -1, -1, -1, -1, -1, -1, - -1, -1, 723, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 751, -1, -1, -1, 755, -1, -1, -1, -1, - 751, -1, -1, -1, 755, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 793, -1, -1, -1, -1, -1, -1, - -1, -1, 793, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 856, 857, -1, 859, - -1, 859, -1, -1, -1, 856, 857, -1, 859, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 897, -1, -1, - -1, -1, -1, -1, -1, -1, 897, -1, -1, -1, - -1, -1, -1, 913, -1, -1, -1, -1, -1, -1, - 920, -1, 913, -1, -1, -1, -1, -1, -1, 920, - 930, -1, -1, -1, 934, -1, -1, -1, -1, 930, - 940, -1, -1, 934, -1, -1, -1, 0, -1, 940, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 356, -1, -1, -1, -1, -1, -1, - -1, 364, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 378, 379, 380, 381, 382, - -1, -1, -1, -1, -1, -1, -1, -1, 391, 392, - 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 413, 414, 415, 416, 417, 418, 419, -1, -1, -1, - -1, -1, -1, -1, -1, 428, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 0, 0, 0, 333, 334, 335, 336, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 338, 339, 340, 341, + 342, 343, 344, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 345, 346, + 347, 348, 349, 350, 351, 0, 0, 0, 0, 0, + 0, 0, 0, 352, 0, 353, 354, 355, 356, 357, + 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, + 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 383, 384, 385, 386, 1, + 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, @@ -3148,73 +2351,27 @@ static const yytype_int16 yycheck[] = 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 353, 354, -1, 356, -1, 358, 359, -1, -1, - -1, -1, 364, 365, 366, 367, 368, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, - 382, -1, -1, -1, 386, 387, 388, 389, 390, 391, - 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, - -1, 403, 404, 405, 406, 407, 408, 409, 410, 411, - 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, - 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, - 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 353, 354, -1, 356, -1, 358, 359, -1, - -1, -1, -1, 364, 365, 366, 367, 368, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, - 381, 382, -1, -1, -1, 386, 387, 388, 389, 390, - 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, - 401, -1, 403, 404, 405, 406, 407, 408, 409, 410, - 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, - 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 312, 313, 314, 315, 316, 317, 0, 0, 0, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 723, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 333, 334, 335, 336, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 338, 339, + 340, 341, 342, 343, 344, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 345, 346, 347, 348, 349, 350, 351, 0, 0, 0, + 0, 0, 0, 0, 0, 352, 0, 353, 354, 355, + 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, + 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, + 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, @@ -3240,68 +2397,22 @@ static const yytype_int16 yycheck[] = 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, - 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 353, 354, -1, 356, -1, 358, -1, - -1, -1, -1, -1, 364, 365, 366, 367, 368, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, - 380, 381, 382, -1, -1, -1, 386, 387, 388, 389, - 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, - 400, 401, -1, 403, 404, 405, 406, 407, 408, 409, - 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, - 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 353, 354, -1, 356, -1, 358, - -1, -1, -1, -1, -1, 364, 365, 366, 367, 368, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, - 379, 380, 381, 382, -1, -1, -1, 386, 387, 388, - 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, - 399, 400, 401, -1, 403, 404, 405, 406, 407, 408, - 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, - 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, - 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 3, 4, 5, 6, 7, + 310, 311, 312, 313, 314, 315, 316, 317, 0, 0, + 0, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 836, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 333, 334, 335, + 336, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 338, 339, 340, 341, 342, 343, 344, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 345, 346, 347, 348, 349, 350, 351, 0, + 0, 0, 0, 0, 0, 0, 0, 352, 0, 353, + 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, + 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, + 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, + 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, @@ -3333,67 +2444,21 @@ static const yytype_int16 yycheck[] = 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, -1, -1, 334, 335, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 353, 354, -1, 356, -1, - -1, -1, -1, -1, -1, -1, 364, 365, 366, 367, - 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 378, 379, 380, 381, 382, -1, -1, -1, 386, 387, - 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, - 398, 399, 400, 401, -1, 403, 404, 405, 406, 407, - 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, - 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, - 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 3, 4, 5, 6, - 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, - 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, - 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, - 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, - 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, - 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, - 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, - 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, - 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, - 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, - 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, - 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, - 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, - 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, - 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, - 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, - 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, - 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, - 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, - 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, - 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, - 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, - 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, - 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, - 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, - 327, 328, 329, 330, 331, -1, -1, 334, 335, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 353, 354, -1, 356, - -1, -1, -1, -1, -1, -1, -1, 364, 365, 366, - 367, 368, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 378, 379, 380, 381, 382, -1, -1, -1, 386, - 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, - 397, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 413, 414, 415, 416, - 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, - 427, 428, -1, 430, 431, 432, 433, 434, 435, 436, - 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, - 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, - 457, 458, 459, 460, 461, 462, 463, 3, 4, 5, + 0, 0, 0, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 871, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 333, + 334, 335, 336, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 338, 339, 340, 341, 342, 343, 344, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 345, 346, 347, 348, 349, 350, + 351, 0, 0, 0, 0, 0, 0, 0, 0, 352, + 0, 353, 354, 355, 356, 357, 358, 359, 360, 361, + 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, + 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, + 382, 383, 384, 385, 386, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, @@ -3425,27 +2490,27 @@ static const yytype_int16 yycheck[] = 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, -1, -1, -1, 322, 323, 324, 325, - 326, 327, 328, 329, 330, 331, -1, -1, 334, 335, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 353, 354, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 365, - 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 378, 379, 380, 381, -1, -1, -1, -1, - 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, - 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 413, 414, 415, - 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, - 426, 427, 428, -1, 430, 431, 432, 433, 434, 435, - 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, - 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, - 456, 457, 458, 459, 460, 461, 462, 463, 3, 4, + 316, 317, 0, 0, 0, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 333, 334, 335, 336, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 338, 339, 340, 341, 342, 343, + 344, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 345, 346, 347, 348, + 349, 350, 351, 0, 0, 0, 0, 0, 0, 0, + 0, 352, 0, 353, 354, 355, 356, 357, 358, 359, + 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, + 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -3456,7 +2521,7 @@ static const yytype_int16 yycheck[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -3471,657 +2536,157 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, - 325, 326, 327, 328, 329, 330, 331, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 356, -1, -1, -1, -1, -1, -1, -1, 364, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 378, 379, 380, 381, 382, -1, -1, - -1, -1, -1, -1, -1, -1, 391, 392, 393, 394, - 395, 396, 397, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 413, 414, - 415, 416, 417, 418, 419, -1, -1, -1, -1, -1, - -1, -1, -1, 428, -1, 430, 431, 432, 433, 434, - 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, - 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, - 455, 456, 457, 458, 459, 460, 461, 462, 463, 3, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, -1, -1, -1, 322, 323, - 324, 325, 326, 327, 328, 329, 330, 331, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 378, 379, 380, 381, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 391, 392, 393, - 394, 395, 396, 397, 398, -1, -1, 401, -1, 403, - 404, -1, -1, 407, -1, -1, -1, -1, -1, 413, - 414, 415, 416, 417, 418, 419, -1, -1, -1, -1, - -1, -1, -1, -1, 428, -1, 430, 431, 432, 433, - 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, - 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, - 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, - 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, -1, -1, -1, 322, - 323, 324, 325, 326, 327, 328, 329, 330, 331, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 364, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 378, 379, 380, 381, -1, - -1, -1, -1, -1, -1, -1, -1, 390, 391, 392, - 393, 394, 395, 396, 397, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 413, 414, 415, 416, 417, 418, 419, -1, -1, -1, - -1, -1, -1, -1, -1, 428, -1, 430, 431, 432, - 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, - 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, - 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, - 463, 3, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, - 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 356, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 378, 379, 380, 381, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 391, - 392, 393, 394, 395, 396, 397, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 413, 414, 415, 416, 417, 418, 419, -1, -1, - -1, -1, -1, -1, -1, -1, 428, -1, 430, 431, - 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, - 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, - 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, - 462, 463, 3, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, - -1, 322, 323, 324, 325, 326, 327, 328, 329, 330, - 331, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 359, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 378, 379, 380, - 381, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 391, 392, 393, 394, 395, 396, 397, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 413, 414, 415, 416, 417, 418, 419, -1, - -1, -1, -1, -1, -1, -1, -1, 428, -1, 430, - 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, - 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, - 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, - 461, 462, 463, 3, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, - -1, -1, 322, 323, 324, 325, 326, 327, 328, 329, - 330, 331, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 359, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 378, 379, - 380, 381, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 391, 392, 393, 394, 395, 396, 397, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 413, 414, 415, 416, 417, 418, 419, - -1, -1, -1, -1, -1, -1, -1, -1, 428, -1, - 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, - 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, - 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, - 460, 461, 462, 463, 3, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - -1, -1, -1, 322, 323, 324, 325, 326, 327, 328, - 329, 330, 331, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 359, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 378, - 379, 380, 381, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 391, 392, 393, 394, 395, 396, 397, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 413, 414, 415, 416, 417, 418, - 419, -1, -1, -1, -1, -1, -1, -1, -1, 428, - -1, 430, 431, 432, 433, 434, 435, 436, 437, 438, - 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, - 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, - 459, 460, 461, 462, 463, 3, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, -1, -1, -1, 322, 323, 324, 325, 326, 327, - 328, 329, 330, 331, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 378, 379, 380, 381, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 391, 392, 393, 394, 395, 396, 397, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 413, 414, 415, 416, 417, - 418, 419, -1, -1, -1, -1, -1, -1, -1, -1, - 428, -1, 430, 431, 432, 433, 434, 435, 436, 437, - 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, - 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 4, 5, 6, 7, - 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, - 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, - 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, - 58, 59, 60, -1, -1, 63, 64, 65, 66, 67, - 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, - 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, - 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, - 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, - 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, - 158, 159, 160, 161, 162, 163, 164, 165, 166, -1, - 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, - 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, - 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, - 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, - 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, - 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, - 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, - 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, - 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, - 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, - 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, - 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, - 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, - 318, -1, -1, -1, -1, -1, -1, 325, -1, -1, - -1, 329, 330, 331, -1, -1, 334, 335, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 353, 354, -1, -1, -1, - 358, 359, -1, -1, -1, -1, -1, 365, 366, 367, - 368, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 386, 387, - 388, 389, 390, 391, -1, -1, -1, -1, 396, 397, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 420, 421, 422, 423, 424, 425, 426, 427, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 442, 4, 5, 6, 7, 8, - 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, - 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, - 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, - 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, - 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, - 59, 60, -1, -1, 63, 64, 65, 66, 67, 68, - 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, - 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, - 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, - 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, - 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, - 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, - 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, - 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, - 159, 160, 161, 162, 163, 164, 165, 166, -1, 168, - 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, - 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, - 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, - 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, - 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, - 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, - 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, - 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, - 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, - 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, - 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, - 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, - 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, - -1, -1, -1, -1, -1, -1, 325, -1, -1, -1, - 329, 330, 331, -1, -1, 334, 335, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 353, 354, -1, -1, -1, 358, - 359, -1, -1, -1, -1, -1, 365, 366, 367, 368, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 386, 387, 388, - 389, 390, 391, -1, -1, -1, -1, 396, 397, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 420, 421, 422, 423, 424, 425, 426, 427, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 442, 4, 5, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, - 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, - 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, - 60, -1, -1, 63, 64, 65, 66, 67, 68, 69, - 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, - 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, - 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, - 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, - 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, - 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, - 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, - 160, 161, 162, 163, 164, 165, 166, -1, 168, 169, - 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, - 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, - 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, - 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, - 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, - 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, - 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, - 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, - 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, - 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, - 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, - 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 313, 314, 315, 316, 317, 318, -1, - -1, -1, -1, -1, -1, 325, -1, -1, -1, 329, - 330, 331, -1, -1, 334, 335, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 353, 354, -1, -1, 357, -1, -1, - -1, -1, -1, -1, -1, 365, 366, 367, 368, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 386, 387, 388, 389, - 390, 391, -1, -1, -1, -1, 396, 397, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 420, 421, 422, 423, 424, 425, 426, 427, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 442, 4, 5, 6, 7, 8, 9, 10, - 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, - 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, - 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, - 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, - -1, -1, 63, 64, 65, 66, 67, 68, 69, 70, - 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, - 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, - 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, - 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, - 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, - 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, - 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, - 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, - 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, - 161, 162, 163, 164, 165, 166, -1, 168, 169, 170, - 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, - 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, - 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, - 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, - 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, - 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, - 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, - 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, - 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, - 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, - 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, - 311, 312, 313, 314, 315, 316, 317, 318, -1, -1, - -1, -1, -1, -1, 325, -1, -1, -1, 329, 330, - 331, -1, -1, 334, 335, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 353, 354, -1, -1, -1, 358, -1, -1, - -1, -1, -1, -1, 365, 366, 367, 368, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 386, 387, 388, 389, 390, - 391, -1, -1, -1, -1, 396, 397, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 420, - 421, 422, 423, 424, 425, 426, 427, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 442, 4, 5, 6, 7, 8, 9, 10, 11, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, - 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, - 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, - 52, 53, 54, 55, 56, 57, 58, 59, 60, -1, - -1, 63, 64, 65, 66, 67, 68, 69, 70, 71, - 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, - 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, - 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, - 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, - 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, - 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, - 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, - 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, - 162, 163, 164, 165, 166, -1, 168, 169, 170, 171, - 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, - 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, - 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, - 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, - 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, - 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, - 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, - 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, - 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, -1, -1, -1, - -1, -1, -1, 325, -1, -1, -1, 329, 330, 331, - -1, -1, 334, 335, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 353, 354, -1, -1, 357, -1, -1, -1, -1, - -1, -1, -1, 365, 366, 367, 368, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 386, 387, 388, 389, 390, 391, - -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 420, 421, - 422, 423, 424, 425, 426, 427, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 442, 4, 5, 6, 7, 8, 9, 10, 11, 12, - 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, - 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - 53, 54, 55, 56, 57, 58, 59, 60, -1, -1, - 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, - 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, - 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, - 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, - 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, - 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, - 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, - 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, - 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, - 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, -1, 168, 169, 170, 171, 172, - 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, - 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, - 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, - 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, - 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, - 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, - 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, - 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, - 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, - 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, - 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, - 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, - 313, 314, 315, 316, 317, 318, -1, -1, -1, -1, - -1, -1, 325, -1, -1, -1, 329, 330, 331, -1, - -1, 334, 335, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 353, 354, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 364, 365, 366, 367, 368, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 386, 387, 388, 389, 390, 391, -1, - -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 420, 421, 422, - 423, 424, 425, 426, 427, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 442, - 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, - 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, - 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, - 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, - 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, - 54, 55, 56, 57, 58, 59, 60, -1, -1, 63, - 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, - 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, - 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, - 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, - 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, - 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, - 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, - 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, -1, 168, 169, 170, 171, 172, 173, - 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, - 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, - 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, - 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, - 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, - 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, - 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, - 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, - 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, - 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, - 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, - 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, - 314, 315, 316, 317, 318, -1, -1, -1, -1, -1, - -1, 325, -1, -1, -1, 329, 330, 331, -1, -1, - 334, 335, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 353, - 354, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 365, 366, 367, 368, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 386, 387, 388, 389, 390, 391, -1, -1, - -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 420, 421, 422, 423, - 424, 425, 426, 427, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 442, 4, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 0, 647, 791, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 0, 647, 902, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 585, 0, 0, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 0, 647, 0, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, - 55, 56, 57, 58, 59, 60, -1, -1, 63, 64, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, @@ -4132,7 +2697,7 @@ static const yytype_int16 yycheck[] = 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, - 165, 166, -1, 168, 169, 170, 171, 172, 173, 174, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, @@ -4147,63 +2712,1470 @@ static const yytype_int16 yycheck[] = 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, - 315, 316, 317, 318, -1, -1, -1, -1, -1, -1, - 325, -1, -1, -1, 329, 330, 331, -1, -1, 334, - 335, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 353, 354, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 750, 0, 0, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 761, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 521, 338, 0, 0, 0, 0, + 343, 665, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 509, 510, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 511, 512, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 513, + 514, 515, 516, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 517, 518, 519, 520, 710, 338, 0, 0, 0, 0, + 343, 344, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 522, 523, 524, 525, 526, 527, + 528, 529, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 365, 2, 3, 4, + 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, + 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, + 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, + 55, 56, 57, 58, 0, 0, 61, 62, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, + 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, + 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, + 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, + 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, + 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, + 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, + 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, + 165, 0, 167, 168, 169, 170, 171, 172, 173, 174, + 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, + 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, + 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, + 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, + 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, + 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, + 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, + 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, + 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, + 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, + 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, + 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, + 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, + 315, 316, 317, 0, 0, 0, 0, 0, 0, 324, + 0, 0, 0, 328, 329, 330, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 338, 0, 0, 0, 0, + 343, 344 +}; + +static const yytype_int16 yycheck[] = +{ + 0, 0, 0, 392, 503, 411, 0, 633, 411, 491, + 416, 444, 0, 449, 552, 568, 753, 450, 562, 579, + 512, 577, 411, 557, 354, 400, 342, 416, 423, 354, + 568, 645, 357, 647, 337, 338, 650, 571, 365, 538, + 359, 362, 354, 354, 915, 391, 580, 436, 357, 362, + 355, 922, 365, 374, 355, 491, 365, 387, 388, 389, + 390, 932, 378, 388, 391, 440, 355, 500, 501, 415, + 373, 374, 391, 509, 510, 557, 388, 388, 356, 355, + 357, 456, 335, 336, 362, 357, 568, 364, 355, 571, + 357, 651, 357, 365, 483, 373, 357, 364, 580, 364, + 356, 356, 355, 364, 357, 541, 362, 362, 361, 355, + 418, 419, 420, 421, 422, 423, 424, 355, 600, 356, + 612, 557, 614, 359, 356, 362, 362, 356, 355, 365, + 362, 757, 568, 362, 550, 571, 388, 356, 388, 391, + 556, 391, 558, 362, 580, 561, 645, 563, 647, 565, + 566, 650, 356, 356, 570, 550, 356, 356, 362, 362, + 356, 356, 362, 362, 600, 664, 362, 362, 660, 725, + 358, 566, 388, 355, 362, 391, 790, 344, 345, 346, + 347, 348, 349, 350, 351, 352, 353, 356, 577, 357, + 579, 388, 356, 362, 391, 356, 356, 364, 362, 936, + 575, 362, 362, 356, 356, 356, 356, 356, 356, 362, + 362, 362, 362, 362, 362, 356, 356, 356, 356, 356, + 355, 362, 362, 362, 362, 362, 358, 358, 333, 334, + 362, 362, 858, 669, 367, 355, 369, 643, 362, 795, + 643, 387, 388, 389, 390, 391, 736, 737, 738, 739, + 362, 365, 388, 365, 643, 391, 870, 387, 388, 389, + 390, 388, 651, 388, 391, 388, 391, 759, 391, 388, + 388, 763, 391, 391, 827, 356, 829, 821, 822, 373, + 814, 815, 781, 782, 360, 388, 362, 720, 391, 827, + 391, 790, 365, 729, 730, 731, 732, 733, 734, 735, + 736, 737, 738, 739, 740, 741, 742, 743, 744, 745, + 746, 747, 926, 391, 388, 362, 942, 391, 365, 362, + 362, 362, 365, 365, 365, 380, 381, 382, 339, 340, + 362, 363, 814, 815, 362, 363, 725, 370, 371, 372, + 732, 733, 391, 734, 735, 827, 359, 829, 357, 359, + 740, 741, 391, 391, 391, 357, 391, 365, 364, 356, + 364, 362, 365, 377, 856, 356, 362, 859, 391, 362, + 362, 870, 362, 362, 357, 362, 362, 362, 814, 815, + 362, 362, 355, 355, 364, 356, 355, 355, 354, 341, + 357, 827, 392, 829, 358, 343, 391, 376, 375, 358, + 400, 355, 360, 365, 392, 365, 795, 899, 408, 408, + 408, 411, 400, 912, 408, 391, 416, 416, 416, 355, + 408, 391, 355, 411, 916, 365, 426, 926, 416, 355, + 365, 363, 355, 362, 365, 365, 436, 435, 365, 931, + 440, 391, 391, 356, 364, 362, 362, 356, 436, 449, + 356, 358, 440, 859, 358, 354, 456, 362, 399, 354, + 388, 355, 360, 356, 364, 356, 391, 359, 456, 365, + 859, 359, 359, 742, 360, 365, 744, 743, 582, 403, + 436, 745, 337, 483, 746, 440, 719, 747, 861, 440, + 834, 921, 932, 899, 494, 483, 933, 434, 861, 643, + 899, 643, 573, 810, 819, 408, 494, 817, 812, 643, + 899, 825, 829, 815, -1, -1, 822, -1, -1, -1, + -1, 821, -1, -1, -1, -1, -1, -1, 827, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 546, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 575, -1, 577, -1, 579, + -1, -1, -1, -1, -1, -1, -1, 575, -1, 577, + -1, 579, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 633, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 643, -1, 633, -1, -1, -1, -1, + -1, 651, -1, -1, -1, 643, -1, -1, -1, -1, + -1, -1, -1, 651, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 725, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 725, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 753, -1, -1, -1, 757, -1, -1, + -1, -1, -1, -1, -1, 753, -1, -1, -1, 757, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 795, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 795, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 858, 859, + -1, 861, -1, 861, -1, -1, -1, -1, -1, -1, + 858, 859, -1, 861, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 899, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 899, -1, -1, -1, 915, -1, -1, -1, -1, + -1, -1, 922, -1, -1, -1, -1, 915, -1, -1, + -1, -1, 932, -1, 922, -1, 936, -1, -1, -1, + -1, -1, 942, -1, 932, -1, -1, -1, 936, -1, + -1, -1, 0, -1, 942, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 357, + -1, -1, -1, -1, -1, -1, -1, 365, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 379, 380, 381, 382, 383, -1, -1, -1, -1, + -1, -1, -1, -1, 392, 393, 394, 395, 396, 397, + 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, 420, -1, -1, -1, -1, -1, -1, -1, + -1, 429, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, -1, -1, 335, + 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 354, 355, + -1, 357, -1, 359, 360, -1, -1, -1, -1, 365, + 366, 367, 368, 369, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 379, 380, 381, 382, 383, -1, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, 399, 400, 401, 402, -1, 404, 405, + 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, + -1, 335, 336, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 354, 355, -1, 357, -1, 359, 360, -1, -1, -1, + -1, 365, 366, 367, 368, 369, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 379, 380, 381, 382, 383, + -1, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, 399, 400, 401, 402, -1, + 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, -1, -1, 335, 336, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 354, 355, -1, 357, -1, 359, -1, -1, + -1, -1, -1, 365, 366, 367, 368, 369, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 379, 380, 381, + 382, 383, -1, -1, -1, 387, 388, 389, 390, 391, + 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, + 402, -1, 404, 405, 406, 407, 408, 409, 410, 411, + 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, + 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, -1, -1, 335, 336, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 354, 355, -1, 357, -1, 359, + -1, -1, -1, -1, -1, 365, 366, 367, 368, 369, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 379, + 380, 381, 382, 383, -1, -1, -1, 387, 388, 389, + 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, + 400, 401, 402, -1, 404, 405, 406, 407, 408, 409, + 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, + 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, + 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, -1, -1, 335, 336, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 354, 355, -1, 357, + -1, -1, -1, -1, -1, -1, -1, 365, 366, 367, + 368, 369, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 379, 380, 381, 382, 383, -1, -1, -1, 387, + 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, + 398, 399, 400, 401, 402, -1, 404, 405, 406, 407, + 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, + 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, + 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, -1, -1, 335, + 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 354, 355, + -1, 357, -1, -1, -1, -1, -1, -1, -1, 365, + 366, 367, 368, 369, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 379, 380, 381, 382, 383, -1, -1, + -1, 387, 388, 389, 390, 391, 392, 393, 394, 395, + 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, + 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, + 426, 427, 428, 429, -1, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, -1, -1, -1, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, + -1, 335, 336, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 354, 355, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 366, 367, 368, 369, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 379, 380, 381, 382, -1, + -1, -1, -1, 387, 388, 389, 390, 391, 392, 393, + 394, 395, 396, 397, 398, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, + 424, 425, 426, 427, 428, 429, -1, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, + 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 357, -1, -1, -1, -1, + -1, -1, -1, 365, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 379, 380, 381, + 382, 383, -1, -1, -1, -1, -1, -1, -1, -1, + 392, 393, 394, 395, 396, 397, 398, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 414, 415, 416, 417, 418, 419, 420, -1, + -1, -1, -1, -1, -1, -1, -1, 429, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + -1, -1, -1, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 379, + 380, 381, 382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 392, 393, 394, 395, 396, 397, 398, 399, + -1, -1, 402, -1, 404, 405, -1, -1, 408, -1, + -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + 420, -1, -1, -1, -1, -1, -1, -1, -1, 429, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, -1, -1, -1, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 365, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 379, 380, 381, 382, -1, -1, -1, -1, -1, + -1, -1, -1, 391, 392, 393, 394, 395, 396, 397, + 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, 420, -1, -1, -1, -1, -1, -1, -1, + -1, 429, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 3, 4, 5, + 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, + 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, + 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, + 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, + 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, + 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, + 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, + 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, + 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, + 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, + 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, + 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, + 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, + 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, + 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, + 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, + 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, + 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, + 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, + 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, + 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, + 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, + 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, + 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, + 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, + 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, + 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, + 316, 317, 318, 319, -1, -1, -1, 323, 324, 325, + 326, 327, 328, 329, 330, 331, 332, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 357, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 379, 380, 381, 382, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 392, 393, 394, 395, + 396, 397, 398, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 414, 415, + 416, 417, 418, 419, 420, -1, -1, -1, -1, -1, + -1, -1, -1, 429, -1, 431, 432, 433, 434, 435, + 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, + 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, + 456, 457, 458, 459, 460, 461, 462, 463, 464, 3, + 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, + 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, + 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, + 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, + 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, + 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, + 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, + 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, + 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, + 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, + 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, + 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, + 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, + 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, + 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, + 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, + 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, + 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, + 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, + 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, + 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, + 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, + 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, + 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, + 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, + 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, + 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, + 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, + 314, 315, 316, 317, 318, 319, -1, -1, -1, 323, + 324, 325, 326, 327, 328, 329, 330, 331, 332, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 360, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 379, 380, 381, 382, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 392, 393, + 394, 395, 396, 397, 398, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 414, 415, 416, 417, 418, 419, 420, -1, -1, -1, + -1, -1, -1, -1, -1, 429, -1, 431, 432, 433, + 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, + 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, + 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, + 464, 3, 4, 5, 6, 7, 8, 9, 10, 11, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, + 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, + 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, + 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, + 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, + 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, + 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, + 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, + 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, + 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, + 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, + 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, + 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, + 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, + 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, + 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, + 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, + 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, + 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, + 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, + 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, + 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, + 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, + 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, + 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, + 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, + 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, + 312, 313, 314, 315, 316, 317, 318, 319, -1, -1, + -1, 323, 324, 325, 326, 327, 328, 329, 330, 331, + 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 360, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 379, 380, 381, + 382, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 392, 393, 394, 395, 396, 397, 398, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 414, 415, 416, 417, 418, 419, 420, -1, + -1, -1, -1, -1, -1, -1, -1, 429, -1, 431, + 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, + 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, + 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, + 462, 463, 464, 3, 4, 5, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, + 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, + 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, + 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, + 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, + 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, + 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, + 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, + 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, + 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, + 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, + 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, + 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, + 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, + 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, + 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, + 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, + 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, + 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, + 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, + 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, + 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, + 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, + 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, + 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, + 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, + 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, + -1, -1, -1, 323, 324, 325, 326, 327, 328, 329, + 330, 331, 332, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 360, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 379, + 380, 381, 382, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 392, 393, 394, 395, 396, 397, 398, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 414, 415, 416, 417, 418, 419, + 420, -1, -1, -1, -1, -1, -1, -1, -1, 429, + -1, 431, 432, 433, 434, 435, 436, 437, 438, 439, + 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, + 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, + 460, 461, 462, 463, 464, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, + 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, + 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, + 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, + 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, + 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, + 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, + 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, + 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, + 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, + 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, + 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, + 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, + 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, + 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, + 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, + 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, + 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, + 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, + 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, + 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, + 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, + 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, + 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, + 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, + 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, + 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, + 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, + 318, 319, -1, -1, -1, 323, 324, 325, 326, 327, + 328, 329, 330, 331, 332, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 379, 380, 381, 382, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 392, 393, 394, 395, 396, 397, + 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 414, 415, 416, 417, + 418, 419, 420, -1, -1, -1, -1, -1, -1, -1, + -1, 429, -1, 431, 432, 433, 434, 435, 436, 437, + 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, + 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, + 458, 459, 460, 461, 462, 463, 464, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, -1, 359, 360, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, -1, 359, 360, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, 358, -1, -1, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, -1, 359, -1, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, 358, -1, -1, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 365, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 365, 366, 367, 368, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 386, 387, 388, 389, 390, 391, -1, -1, -1, - -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 420, 421, 422, 423, 424, - 425, 426, 427, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 442, 4, 5, - 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, - 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, - 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, - 56, 57, 58, 59, 60, -1, -1, 63, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, - 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, - 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, - 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, - 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, - 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, - 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, - 166, -1, 168, 169, 170, 171, 172, 173, 174, 175, - 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, - 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, - 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, - 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, - 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, - 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, - 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, - 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, - 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, - 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, - 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, - 316, 317, 318, -1, -1, -1, -1, -1, -1, 325, - -1, -1, -1, 329, 330, 331, -1, -1, 334, 335, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, + 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, + 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, + 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + 57, 58, 59, 60, -1, -1, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, + 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, + 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, + 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, + 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, + 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, + 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, + 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, + 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, + 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, + 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, + 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, + 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, + 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, + 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, + 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, + 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, + 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, + 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, + 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, + 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, + 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, 335, 336, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, 353, 354, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 365, - 366, 367, 368, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, 354, 355, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 366, + 367, 368, 369, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 386, 387, 388, 389, 390, 391, -1, -1, -1, -1, - 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, + 387, 388, 389, 390, 391, 392, -1, -1, -1, -1, + 397, 398, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 420, 421, 422, 423, 424, 425, - 426, 427, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 442, 4, 5, 6, + -1, -1, -1, -1, 421, 422, 423, 424, 425, 426, + 427, 428, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 443, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, @@ -4220,7 +4192,7 @@ static const yytype_int16 yycheck[] = 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, - -1, 168, 169, 170, 171, 172, 173, 174, 175, 176, + 167, -1, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, @@ -4235,19 +4207,19 @@ static const yytype_int16 yycheck[] = 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, - 317, 318, -1, -1, -1, -1, -1, -1, 325, -1, - -1, -1, 329, 330, 331, -1, -1, -1, -1, -1, + 317, 318, 319, -1, -1, -1, -1, -1, -1, 326, + -1, -1, -1, 330, 331, 332, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, 391, -1, -1, -1, -1, 396, - 397 + -1, -1, -1, -1, -1, 392, -1, -1, -1, -1, + 397, 398 }; - /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing - symbol of state STATE-NUM. */ +/* YYSTOS[STATE-NUM] -- The symbol kind of the accessing symbol of + state STATE-NUM. */ static const yytype_int16 yystos[] = { 0, 3, 4, 5, 6, 7, 8, 9, 10, 11, @@ -4283,146 +4255,147 @@ static const yytype_int16 yystos[] = 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, - 356, 364, 378, 379, 380, 381, 382, 391, 392, 393, - 394, 395, 396, 397, 413, 414, 415, 416, 417, 418, - 419, 428, 430, 431, 432, 433, 434, 435, 436, 437, + 332, 357, 365, 379, 380, 381, 382, 383, 392, 393, + 394, 395, 396, 397, 398, 414, 415, 416, 417, 418, + 419, 420, 429, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, - 458, 459, 460, 461, 462, 463, 495, 496, 499, 500, - 501, 502, 506, 507, 508, 509, 510, 511, 514, 515, - 516, 517, 518, 520, 525, 526, 527, 568, 569, 570, - 572, 579, 583, 584, 590, 593, 354, 354, 354, 354, - 354, 354, 354, 354, 356, 526, 358, 390, 354, 354, - 364, 390, 364, 571, 355, 361, 503, 504, 505, 515, - 520, 361, 364, 390, 364, 390, 516, 520, 372, 522, - 523, 0, 569, 500, 508, 515, 364, 499, 390, 575, - 576, 594, 595, 387, 390, 575, 387, 575, 387, 575, - 387, 575, 387, 575, 575, 594, 387, 575, 390, 573, - 574, 520, 529, 358, 390, 414, 512, 513, 390, 519, - 356, 364, 521, 358, 547, 572, 504, 503, 505, 390, - 390, 354, 363, 521, 358, 361, 364, 498, 334, 335, - 353, 354, 365, 366, 367, 368, 386, 387, 388, 389, - 390, 420, 421, 422, 423, 424, 425, 426, 427, 465, - 466, 467, 469, 470, 471, 472, 473, 474, 475, 476, - 477, 518, 520, 524, 521, 355, 390, 364, 363, 361, - 355, 361, 355, 361, 363, 361, 361, 361, 355, 361, - 361, 361, 361, 361, 361, 361, 355, 361, 355, 361, - 354, 357, 361, 364, 515, 520, 530, 531, 528, 363, - 355, 361, 355, 361, 357, 476, 478, 479, 480, 481, - 482, 483, 484, 485, 486, 487, 488, 489, 356, 364, - 358, 359, 364, 398, 399, 400, 401, 403, 404, 405, - 406, 407, 408, 409, 410, 411, 412, 429, 476, 489, - 491, 493, 495, 499, 518, 520, 536, 537, 538, 539, - 540, 548, 549, 550, 551, 554, 555, 558, 559, 560, - 567, 572, 521, 363, 521, 358, 491, 534, 363, 497, - 390, 361, 364, 476, 476, 493, 334, 335, 356, 360, - 355, 355, 361, 397, 491, 354, 476, 361, 373, 572, - 353, 356, 387, 576, 594, 390, 595, 353, 386, 387, - 388, 389, 580, 581, 387, 489, 494, 582, 387, 386, - 387, 388, 389, 585, 586, 387, 386, 387, 388, 389, - 465, 587, 588, 387, 353, 589, 387, 594, 390, 494, - 525, 591, 592, 387, 494, 357, 574, 520, 390, 532, - 533, 359, 531, 530, 494, 513, 390, 369, 370, 371, - 366, 368, 332, 333, 336, 337, 372, 373, 338, 339, - 376, 375, 374, 340, 342, 341, 377, 357, 357, 489, - 359, 541, 354, 364, 364, 562, 354, 354, 364, 364, - 493, 354, 493, 362, 364, 364, 364, 364, 343, 344, - 345, 346, 347, 348, 349, 350, 351, 352, 363, 492, - 361, 364, 359, 537, 551, 555, 560, 534, 363, 359, - 534, 535, 534, 530, 390, 355, 468, 493, 390, 491, - 476, 353, 387, 577, 578, 355, 363, 355, 361, 355, - 361, 355, 361, 361, 355, 361, 355, 361, 355, 361, - 361, 355, 361, 361, 355, 361, 355, 361, 355, 355, - 532, 521, 361, 364, 359, 476, 476, 476, 478, 478, - 479, 479, 480, 480, 480, 480, 481, 481, 482, 483, - 484, 485, 486, 487, 490, 357, 548, 561, 537, 563, - 493, 364, 493, 362, 491, 491, 534, 359, 361, 359, - 357, 357, 361, 357, 361, 581, 580, 494, 582, 586, - 585, 588, 587, 353, 589, 591, 592, 364, 533, 493, - 542, 493, 508, 553, 398, 536, 549, 564, 355, 355, - 359, 534, 353, 387, 355, 355, 355, 355, 355, 355, - 362, 359, 390, 355, 354, 553, 565, 566, 544, 545, - 546, 552, 556, 491, 363, 538, 543, 547, 493, 364, - 355, 402, 540, 538, 358, 534, 355, 493, 543, 544, - 548, 557, 364, 359 + 458, 459, 460, 461, 462, 463, 464, 496, 497, 500, + 501, 502, 503, 507, 508, 509, 510, 511, 512, 515, + 516, 517, 518, 519, 521, 526, 527, 528, 569, 570, + 571, 573, 580, 584, 585, 591, 594, 355, 355, 355, + 355, 355, 355, 355, 355, 357, 527, 359, 391, 355, + 355, 365, 391, 365, 572, 356, 362, 504, 505, 506, + 516, 521, 362, 365, 391, 365, 391, 517, 521, 373, + 523, 524, 0, 570, 501, 509, 516, 365, 500, 391, + 576, 577, 595, 596, 388, 391, 576, 388, 576, 388, + 576, 388, 576, 388, 576, 576, 595, 388, 576, 391, + 574, 575, 521, 530, 359, 391, 415, 513, 514, 391, + 520, 357, 365, 522, 359, 548, 573, 505, 504, 506, + 391, 391, 355, 364, 522, 359, 362, 365, 499, 335, + 336, 354, 355, 366, 367, 368, 369, 387, 388, 389, + 390, 391, 421, 422, 423, 424, 425, 426, 427, 428, + 466, 467, 468, 470, 471, 472, 473, 474, 475, 476, + 477, 478, 519, 521, 525, 522, 356, 391, 365, 364, + 362, 356, 362, 356, 362, 364, 362, 362, 362, 356, + 362, 362, 362, 362, 362, 362, 362, 356, 362, 356, + 362, 355, 358, 362, 365, 516, 521, 531, 532, 529, + 364, 356, 362, 356, 362, 358, 477, 479, 480, 481, + 482, 483, 484, 485, 486, 487, 488, 489, 490, 521, + 357, 365, 359, 360, 365, 399, 400, 401, 402, 404, + 405, 406, 407, 408, 409, 410, 411, 412, 413, 430, + 477, 490, 492, 494, 496, 500, 519, 521, 537, 538, + 539, 540, 541, 549, 550, 551, 552, 555, 556, 559, + 560, 561, 568, 573, 522, 364, 522, 359, 492, 535, + 364, 498, 391, 362, 365, 477, 477, 494, 335, 336, + 357, 361, 356, 356, 362, 398, 492, 355, 477, 362, + 374, 573, 354, 357, 388, 577, 595, 391, 596, 354, + 387, 388, 389, 390, 581, 582, 388, 490, 495, 583, + 388, 387, 388, 389, 390, 586, 587, 388, 387, 388, + 389, 390, 466, 588, 589, 388, 354, 590, 388, 595, + 391, 495, 526, 592, 593, 388, 495, 358, 575, 521, + 391, 533, 534, 360, 532, 531, 495, 514, 391, 370, + 371, 372, 367, 369, 333, 334, 337, 338, 373, 374, + 339, 340, 377, 376, 375, 341, 343, 342, 378, 358, + 358, 490, 360, 542, 355, 365, 365, 563, 355, 355, + 365, 365, 494, 355, 494, 363, 365, 365, 365, 365, + 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, + 364, 493, 362, 365, 360, 538, 552, 556, 561, 535, + 364, 360, 535, 536, 535, 531, 391, 356, 469, 494, + 391, 492, 477, 354, 388, 578, 579, 356, 364, 356, + 362, 356, 362, 356, 362, 362, 356, 362, 356, 362, + 356, 362, 362, 356, 362, 362, 356, 362, 356, 362, + 356, 356, 533, 522, 362, 365, 360, 477, 477, 477, + 479, 479, 480, 480, 481, 481, 481, 481, 482, 482, + 483, 484, 485, 486, 487, 488, 491, 358, 549, 562, + 538, 564, 494, 365, 494, 363, 492, 492, 535, 360, + 362, 360, 358, 358, 362, 358, 362, 582, 581, 495, + 583, 587, 586, 589, 588, 354, 590, 592, 593, 365, + 534, 494, 543, 494, 509, 554, 399, 537, 550, 565, + 356, 356, 360, 535, 354, 388, 356, 356, 356, 356, + 356, 356, 363, 360, 391, 356, 355, 554, 566, 567, + 545, 546, 547, 553, 557, 492, 364, 539, 544, 548, + 494, 365, 356, 403, 541, 539, 359, 535, 356, 494, + 544, 545, 549, 558, 365, 360 }; - /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ +/* YYR1[RULE-NUM] -- Symbol kind of the left-hand side of rule RULE-NUM. */ static const yytype_int16 yyr1[] = { - 0, 464, 465, 466, 466, 466, 466, 466, 466, 466, - 466, 466, 466, 466, 466, 466, 466, 466, 467, 467, - 467, 467, 467, 467, 468, 469, 470, 471, 471, 472, - 472, 473, 473, 474, 475, 475, 475, 476, 476, 476, - 476, 477, 477, 477, 477, 478, 478, 478, 478, 479, - 479, 479, 480, 480, 480, 481, 481, 481, 481, 481, - 482, 482, 482, 483, 483, 484, 484, 485, 485, 486, - 486, 487, 487, 488, 488, 489, 490, 489, 491, 491, - 492, 492, 492, 492, 492, 492, 492, 492, 492, 492, - 492, 493, 493, 494, 495, 495, 495, 495, 495, 495, - 495, 495, 495, 495, 495, 497, 496, 498, 498, 499, - 499, 499, 499, 500, 500, 501, 501, 502, 503, 503, - 504, 504, 504, 504, 505, 506, 506, 506, 506, 506, - 507, 507, 507, 507, 507, 508, 508, 509, 510, 510, - 510, 510, 510, 510, 510, 510, 510, 510, 511, 512, - 512, 513, 513, 513, 514, 515, 515, 516, 516, 516, - 516, 516, 516, 516, 516, 516, 516, 516, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 517, 517, 517, 517, - 517, 517, 517, 517, 517, 517, 518, 519, 519, 520, - 520, 521, 521, 521, 521, 522, 522, 523, 524, 524, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 525, - 525, 525, 525, 525, 525, 525, 525, 525, 525, 526, - 526, 526, 528, 527, 529, 527, 530, 530, 531, 531, - 532, 532, 533, 533, 534, 534, 534, 534, 535, 535, - 536, 537, 537, 538, 538, 538, 538, 538, 538, 538, - 538, 539, 540, 541, 542, 540, 543, 543, 545, 544, - 546, 544, 547, 547, 548, 548, 549, 549, 550, 550, - 551, 552, 552, 553, 553, 554, 554, 556, 555, 557, - 557, 558, 558, 559, 559, 561, 560, 562, 560, 563, - 560, 564, 564, 565, 565, 566, 566, 567, 567, 567, - 567, 567, 567, 567, 567, 568, 568, 569, 569, 569, - 571, 570, 572, 573, 573, 574, 574, 575, 575, 576, - 576, 577, 577, 578, 578, 579, 579, 579, 579, 579, - 579, 580, 580, 581, 581, 581, 581, 581, 582, 582, - 583, 583, 584, 584, 584, 584, 584, 584, 584, 584, - 585, 585, 586, 586, 586, 586, 587, 587, 588, 588, - 588, 588, 588, 589, 589, 590, 590, 590, 590, 591, - 591, 592, 592, 593, 593, 594, 594, 595, 595 + 0, 465, 466, 467, 467, 467, 467, 467, 467, 467, + 467, 467, 467, 467, 467, 467, 467, 467, 468, 468, + 468, 468, 468, 468, 469, 470, 471, 472, 472, 473, + 473, 474, 474, 475, 476, 476, 476, 477, 477, 477, + 477, 478, 478, 478, 478, 479, 479, 479, 479, 480, + 480, 480, 481, 481, 481, 482, 482, 482, 482, 482, + 483, 483, 483, 484, 484, 485, 485, 486, 486, 487, + 487, 488, 488, 489, 489, 490, 491, 490, 492, 492, + 493, 493, 493, 493, 493, 493, 493, 493, 493, 493, + 493, 494, 494, 495, 496, 496, 496, 496, 496, 496, + 496, 496, 496, 496, 496, 498, 497, 499, 499, 500, + 500, 500, 500, 501, 501, 502, 502, 503, 504, 504, + 505, 505, 505, 505, 506, 507, 507, 507, 507, 507, + 508, 508, 508, 508, 508, 509, 509, 510, 511, 511, + 511, 511, 511, 511, 511, 511, 511, 511, 512, 513, + 513, 514, 514, 514, 515, 516, 516, 517, 517, 517, + 517, 517, 517, 517, 517, 517, 517, 517, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 518, 518, 518, 518, + 518, 518, 518, 518, 518, 518, 519, 520, 520, 521, + 521, 522, 522, 522, 522, 523, 523, 524, 525, 525, + 525, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 526, 526, 526, 526, 526, 526, 526, 526, 526, + 526, 527, 527, 527, 529, 528, 530, 528, 531, 531, + 532, 532, 533, 533, 534, 534, 535, 535, 535, 535, + 536, 536, 537, 538, 538, 539, 539, 539, 539, 539, + 539, 539, 539, 540, 541, 542, 543, 541, 544, 544, + 546, 545, 547, 545, 548, 548, 549, 549, 550, 550, + 551, 551, 552, 553, 553, 554, 554, 555, 555, 557, + 556, 558, 558, 559, 559, 560, 560, 562, 561, 563, + 561, 564, 561, 565, 565, 566, 566, 567, 567, 568, + 568, 568, 568, 568, 568, 568, 568, 569, 569, 570, + 570, 570, 572, 571, 573, 574, 574, 575, 575, 576, + 576, 577, 577, 578, 578, 579, 579, 580, 580, 580, + 580, 580, 580, 581, 581, 582, 582, 582, 582, 582, + 583, 583, 584, 584, 585, 585, 585, 585, 585, 585, + 585, 585, 586, 586, 587, 587, 587, 587, 588, 588, + 589, 589, 589, 589, 589, 590, 590, 591, 591, 591, + 591, 592, 592, 593, 593, 594, 594, 595, 595, 596, + 596 }; - /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN. */ +/* YYR2[RULE-NUM] -- Number of symbols on the right-hand side of rule RULE-NUM. */ static const yytype_int8 yyr2[] = { 0, 2, 1, 1, 3, 1, 1, 1, 1, 1, @@ -4446,8 +4419,8 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, 3, 2, - 3, 2, 3, 3, 4, 1, 0, 3, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 3, 2, 3, 3, 4, 1, 0, 3, 1, 1, + 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, @@ -4479,22 +4452,23 @@ static const yytype_int8 yyr2[] = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 0, 6, 0, 5, 1, 2, 3, 4, - 1, 3, 1, 2, 1, 3, 4, 2, 1, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 2, 0, 0, 5, 1, 1, 0, 2, - 0, 2, 2, 3, 1, 2, 1, 2, 1, 2, - 5, 3, 1, 1, 4, 1, 2, 0, 8, 0, - 1, 3, 2, 1, 2, 0, 6, 0, 8, 0, - 7, 1, 1, 1, 0, 2, 3, 2, 2, 2, - 3, 2, 2, 2, 2, 1, 2, 1, 1, 1, - 0, 3, 5, 1, 3, 1, 4, 1, 3, 5, - 5, 1, 3, 1, 3, 4, 6, 6, 8, 6, - 8, 1, 3, 1, 1, 1, 1, 1, 1, 3, - 4, 6, 4, 6, 6, 8, 6, 8, 6, 8, - 1, 3, 1, 1, 1, 1, 1, 3, 1, 1, - 1, 1, 1, 1, 3, 6, 8, 4, 6, 1, - 3, 1, 1, 4, 6, 1, 3, 3, 3 + 1, 1, 1, 1, 0, 6, 0, 5, 1, 2, + 3, 4, 1, 3, 1, 2, 1, 3, 4, 2, + 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 2, 2, 0, 0, 5, 1, 1, + 0, 2, 0, 2, 2, 3, 1, 2, 1, 2, + 1, 2, 5, 3, 1, 1, 4, 1, 2, 0, + 8, 0, 1, 3, 2, 1, 2, 0, 6, 0, + 8, 0, 7, 1, 1, 1, 0, 2, 3, 2, + 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, + 1, 1, 0, 3, 5, 1, 3, 1, 4, 1, + 3, 5, 5, 1, 3, 1, 3, 4, 6, 6, + 8, 6, 8, 1, 3, 1, 1, 1, 1, 1, + 1, 3, 4, 6, 4, 6, 6, 8, 6, 8, + 6, 8, 1, 3, 1, 1, 1, 1, 1, 3, + 1, 1, 1, 1, 1, 1, 3, 6, 8, 4, + 6, 1, 3, 1, 1, 4, 6, 1, 3, 3, + 3 }; @@ -4506,6 +4480,7 @@ enum { YYENOMEM = -2 }; #define YYACCEPT goto yyacceptlab #define YYABORT goto yyabortlab #define YYERROR goto yyerrorlab +#define YYNOMEM goto yyexhaustedlab #define YYRECOVERING() (!!yyerrstatus) @@ -4546,10 +4521,7 @@ do { \ YYFPRINTF Args; \ } while (0) -/* This macro is provided for backward compatibility. */ -# ifndef YY_LOCATION_PRINT -# define YY_LOCATION_PRINT(File, Loc) ((void) 0) -# endif + # define YY_SYMBOL_PRINT(Title, Kind, Value, Location) \ @@ -4573,16 +4545,12 @@ yy_symbol_value_print (FILE *yyo, yysymbol_kind_t yykind, YYSTYPE const * const yyvaluep, glslang::TParseContext* pParseContext) { FILE *yyoutput = yyo; - YYUSE (yyoutput); - YYUSE (pParseContext); + YY_USE (yyoutput); + YY_USE (pParseContext); if (!yyvaluep) return; -# ifdef YYPRINT - if (yykind < YYNTOKENS) - YYPRINT (yyo, yytoknum[yykind], *yyvaluep); -# endif YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -4963,14 +4931,14 @@ static void yydestruct (const char *yymsg, yysymbol_kind_t yykind, YYSTYPE *yyvaluep, glslang::TParseContext* pParseContext) { - YYUSE (yyvaluep); - YYUSE (pParseContext); + YY_USE (yyvaluep); + YY_USE (pParseContext); if (!yymsg) yymsg = "Deleting"; YY_SYMBOL_PRINT (yymsg, yykind, yyvaluep, yylocationp); YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN - YYUSE (yykind); + YY_USE (yykind); YY_IGNORE_MAYBE_UNINITIALIZED_END } @@ -5042,6 +5010,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YYDPRINTF ((stderr, "Starting parse\n")); yychar = YYEMPTY; /* Cause a token to be read. */ + goto yysetstate; @@ -5067,7 +5036,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (yyss + yystacksize - 1 <= yyssp) #if !defined yyoverflow && !defined YYSTACK_RELOCATE - goto yyexhaustedlab; + YYNOMEM; #else { /* Get the current used size of the three stacks, in elements. */ @@ -5095,7 +5064,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); # else /* defined YYSTACK_RELOCATE */ /* Extend the stack our own way. */ if (YYMAXDEPTH <= yystacksize) - goto yyexhaustedlab; + YYNOMEM; yystacksize *= 2; if (YYMAXDEPTH < yystacksize) yystacksize = YYMAXDEPTH; @@ -5106,7 +5075,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); YY_CAST (union yyalloc *, YYSTACK_ALLOC (YY_CAST (YYSIZE_T, YYSTACK_BYTES (yystacksize)))); if (! yyptr) - goto yyexhaustedlab; + YYNOMEM; YYSTACK_RELOCATE (yyss_alloc, yyss); YYSTACK_RELOCATE (yyvs_alloc, yyvs); # undef YYSTACK_RELOCATE @@ -5128,6 +5097,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } #endif /* !defined yyoverflow && !defined YYSTACK_RELOCATE */ + if (yystate == YYFINAL) YYACCEPT; @@ -5240,260 +5210,260 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 394 "MachineIndependent/glslang.y" +#line 395 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5248 "MachineIndependent/glslang_tab.cpp" +#line 5218 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ -#line 400 "MachineIndependent/glslang.y" +#line 401 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5256 "MachineIndependent/glslang_tab.cpp" +#line 5226 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 403 "MachineIndependent/glslang.y" +#line 404 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5266 "MachineIndependent/glslang_tab.cpp" +#line 5236 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 408 "MachineIndependent/glslang.y" +#line 409 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5274 "MachineIndependent/glslang_tab.cpp" +#line 5244 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ -#line 411 "MachineIndependent/glslang.y" +#line 412 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5282 "MachineIndependent/glslang_tab.cpp" +#line 5252 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ -#line 414 "MachineIndependent/glslang.y" +#line 415 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5291 "MachineIndependent/glslang_tab.cpp" +#line 5261 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ -#line 418 "MachineIndependent/glslang.y" +#line 419 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5299 "MachineIndependent/glslang_tab.cpp" +#line 5269 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ -#line 422 "MachineIndependent/glslang.y" +#line 423 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5307 "MachineIndependent/glslang_tab.cpp" +#line 5277 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ -#line 425 "MachineIndependent/glslang.y" +#line 426 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5316 "MachineIndependent/glslang_tab.cpp" +#line 5286 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ -#line 429 "MachineIndependent/glslang.y" +#line 430 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5325 "MachineIndependent/glslang_tab.cpp" +#line 5295 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ -#line 433 "MachineIndependent/glslang.y" +#line 434 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5334 "MachineIndependent/glslang_tab.cpp" +#line 5304 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 437 "MachineIndependent/glslang.y" +#line 438 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5343 "MachineIndependent/glslang_tab.cpp" +#line 5313 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ -#line 441 "MachineIndependent/glslang.y" +#line 442 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5352 "MachineIndependent/glslang_tab.cpp" +#line 5322 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 445 "MachineIndependent/glslang.y" +#line 446 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5361 "MachineIndependent/glslang_tab.cpp" +#line 5331 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 449 "MachineIndependent/glslang.y" +#line 450 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5372 "MachineIndependent/glslang_tab.cpp" +#line 5342 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 455 "MachineIndependent/glslang.y" +#line 456 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5381 "MachineIndependent/glslang_tab.cpp" +#line 5351 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ -#line 463 "MachineIndependent/glslang.y" +#line 464 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5389 "MachineIndependent/glslang_tab.cpp" +#line 5359 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 466 "MachineIndependent/glslang.y" +#line 467 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5397 "MachineIndependent/glslang_tab.cpp" +#line 5367 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ -#line 469 "MachineIndependent/glslang.y" +#line 470 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5405 "MachineIndependent/glslang_tab.cpp" +#line 5375 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 472 "MachineIndependent/glslang.y" +#line 473 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5413 "MachineIndependent/glslang_tab.cpp" +#line 5383 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 475 "MachineIndependent/glslang.y" +#line 476 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5423 "MachineIndependent/glslang_tab.cpp" +#line 5393 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 480 "MachineIndependent/glslang.y" +#line 481 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5433 "MachineIndependent/glslang_tab.cpp" +#line 5403 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ -#line 488 "MachineIndependent/glslang.y" +#line 489 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5442 "MachineIndependent/glslang_tab.cpp" +#line 5412 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ -#line 495 "MachineIndependent/glslang.y" +#line 496 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5451 "MachineIndependent/glslang_tab.cpp" +#line 5421 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ -#line 502 "MachineIndependent/glslang.y" +#line 503 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5459 "MachineIndependent/glslang_tab.cpp" +#line 5429 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 508 "MachineIndependent/glslang.y" +#line 509 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5468 "MachineIndependent/glslang_tab.cpp" +#line 5438 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 512 "MachineIndependent/glslang.y" +#line 513 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5477 "MachineIndependent/glslang_tab.cpp" +#line 5447 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 519 "MachineIndependent/glslang.y" +#line 520 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5485 "MachineIndependent/glslang_tab.cpp" +#line 5455 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ -#line 522 "MachineIndependent/glslang.y" +#line 523 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5493 "MachineIndependent/glslang_tab.cpp" +#line 5463 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 528 "MachineIndependent/glslang.y" +#line 529 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -5501,11 +5471,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-1].interm).function; (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } -#line 5505 "MachineIndependent/glslang_tab.cpp" +#line 5475 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 535 "MachineIndependent/glslang.y" +#line 536 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -5513,29 +5483,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-2].interm).function; (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } -#line 5517 "MachineIndependent/glslang_tab.cpp" +#line 5487 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 545 "MachineIndependent/glslang.y" +#line 546 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5525 "MachineIndependent/glslang_tab.cpp" +#line 5495 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 553 "MachineIndependent/glslang.y" +#line 554 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5535 "MachineIndependent/glslang_tab.cpp" +#line 5505 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 558 "MachineIndependent/glslang.y" +#line 559 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5563,50 +5533,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5567 "MachineIndependent/glslang_tab.cpp" +#line 5537 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 586 "MachineIndependent/glslang.y" +#line 587 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5577 "MachineIndependent/glslang_tab.cpp" +#line 5547 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 595 "MachineIndependent/glslang.y" +#line 596 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5588 "MachineIndependent/glslang_tab.cpp" +#line 5558 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 601 "MachineIndependent/glslang.y" +#line 602 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5597 "MachineIndependent/glslang_tab.cpp" +#line 5567 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 605 "MachineIndependent/glslang.y" +#line 606 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5606 "MachineIndependent/glslang_tab.cpp" +#line 5576 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 609 "MachineIndependent/glslang.y" +#line 610 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5623,179 +5593,179 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5627 "MachineIndependent/glslang_tab.cpp" +#line 5597 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 629 "MachineIndependent/glslang.y" +#line 630 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5633 "MachineIndependent/glslang_tab.cpp" +#line 5603 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 630 "MachineIndependent/glslang.y" +#line 631 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5639 "MachineIndependent/glslang_tab.cpp" +#line 5609 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 631 "MachineIndependent/glslang.y" +#line 632 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5645 "MachineIndependent/glslang_tab.cpp" +#line 5615 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 632 "MachineIndependent/glslang.y" +#line 633 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5652 "MachineIndependent/glslang_tab.cpp" +#line 5622 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 638 "MachineIndependent/glslang.y" +#line 639 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5658 "MachineIndependent/glslang_tab.cpp" +#line 5628 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 639 "MachineIndependent/glslang.y" +#line 640 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5668 "MachineIndependent/glslang_tab.cpp" +#line 5638 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 644 "MachineIndependent/glslang.y" +#line 645 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5678 "MachineIndependent/glslang_tab.cpp" +#line 5648 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 649 "MachineIndependent/glslang.y" +#line 650 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5689 "MachineIndependent/glslang_tab.cpp" +#line 5659 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 658 "MachineIndependent/glslang.y" +#line 659 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5695 "MachineIndependent/glslang_tab.cpp" +#line 5665 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 659 "MachineIndependent/glslang.y" +#line 660 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5705 "MachineIndependent/glslang_tab.cpp" +#line 5675 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 664 "MachineIndependent/glslang.y" +#line 665 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5715 "MachineIndependent/glslang_tab.cpp" +#line 5685 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 672 "MachineIndependent/glslang.y" +#line 673 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5721 "MachineIndependent/glslang_tab.cpp" +#line 5691 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 673 "MachineIndependent/glslang.y" +#line 674 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5732 "MachineIndependent/glslang_tab.cpp" +#line 5702 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 679 "MachineIndependent/glslang.y" +#line 680 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5743 "MachineIndependent/glslang_tab.cpp" +#line 5713 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 688 "MachineIndependent/glslang.y" +#line 689 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5749 "MachineIndependent/glslang_tab.cpp" +#line 5719 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 689 "MachineIndependent/glslang.y" +#line 690 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5759 "MachineIndependent/glslang_tab.cpp" +#line 5729 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 694 "MachineIndependent/glslang.y" +#line 695 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5769 "MachineIndependent/glslang_tab.cpp" +#line 5739 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 699 "MachineIndependent/glslang.y" +#line 700 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5779 "MachineIndependent/glslang_tab.cpp" +#line 5749 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 704 "MachineIndependent/glslang.y" +#line 705 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5789 "MachineIndependent/glslang_tab.cpp" +#line 5759 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 712 "MachineIndependent/glslang.y" +#line 713 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5795 "MachineIndependent/glslang_tab.cpp" +#line 5765 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 713 "MachineIndependent/glslang.y" +#line 714 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5805,11 +5775,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5809 "MachineIndependent/glslang_tab.cpp" +#line 5779 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 722 "MachineIndependent/glslang.y" +#line 723 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5819,124 +5789,124 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5823 "MachineIndependent/glslang_tab.cpp" +#line 5793 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 734 "MachineIndependent/glslang.y" +#line 735 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5829 "MachineIndependent/glslang_tab.cpp" +#line 5799 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 735 "MachineIndependent/glslang.y" +#line 736 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5840 "MachineIndependent/glslang_tab.cpp" +#line 5810 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 744 "MachineIndependent/glslang.y" +#line 745 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5846 "MachineIndependent/glslang_tab.cpp" +#line 5816 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 745 "MachineIndependent/glslang.y" +#line 746 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5857 "MachineIndependent/glslang_tab.cpp" +#line 5827 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 754 "MachineIndependent/glslang.y" +#line 755 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5863 "MachineIndependent/glslang_tab.cpp" +#line 5833 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 755 "MachineIndependent/glslang.y" +#line 756 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5874 "MachineIndependent/glslang_tab.cpp" +#line 5844 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 764 "MachineIndependent/glslang.y" +#line 765 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5880 "MachineIndependent/glslang_tab.cpp" +#line 5850 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 765 "MachineIndependent/glslang.y" +#line 766 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5890 "MachineIndependent/glslang_tab.cpp" +#line 5860 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 773 "MachineIndependent/glslang.y" +#line 774 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5896 "MachineIndependent/glslang_tab.cpp" +#line 5866 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 774 "MachineIndependent/glslang.y" +#line 775 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5906 "MachineIndependent/glslang_tab.cpp" +#line 5876 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 782 "MachineIndependent/glslang.y" +#line 783 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5912 "MachineIndependent/glslang_tab.cpp" +#line 5882 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 783 "MachineIndependent/glslang.y" +#line 784 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5922 "MachineIndependent/glslang_tab.cpp" +#line 5892 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 791 "MachineIndependent/glslang.y" +#line 792 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5928 "MachineIndependent/glslang_tab.cpp" +#line 5898 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 792 "MachineIndependent/glslang.y" +#line 793 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5936 "MachineIndependent/glslang_tab.cpp" +#line 5906 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 795 "MachineIndependent/glslang.y" +#line 796 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5949,17 +5919,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5953 "MachineIndependent/glslang_tab.cpp" +#line 5923 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 810 "MachineIndependent/glslang.y" +#line 811 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5959 "MachineIndependent/glslang_tab.cpp" +#line 5929 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 811 "MachineIndependent/glslang.y" +#line 812 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5973,119 +5943,119 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5977 "MachineIndependent/glslang_tab.cpp" +#line 5947 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 827 "MachineIndependent/glslang.y" +#line 828 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5986 "MachineIndependent/glslang_tab.cpp" +#line 5956 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 831 "MachineIndependent/glslang.y" +#line 832 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5995 "MachineIndependent/glslang_tab.cpp" +#line 5965 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 835 "MachineIndependent/glslang.y" +#line 836 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 6004 "MachineIndependent/glslang_tab.cpp" +#line 5974 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 839 "MachineIndependent/glslang.y" +#line 840 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 6014 "MachineIndependent/glslang_tab.cpp" +#line 5984 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 844 "MachineIndependent/glslang.y" +#line 845 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 6023 "MachineIndependent/glslang_tab.cpp" +#line 5993 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 848 "MachineIndependent/glslang.y" +#line 849 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6032 "MachineIndependent/glslang_tab.cpp" +#line 6002 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 852 "MachineIndependent/glslang.y" +#line 853 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6041 "MachineIndependent/glslang_tab.cpp" +#line 6011 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 856 "MachineIndependent/glslang.y" +#line 857 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6050 "MachineIndependent/glslang_tab.cpp" +#line 6020 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 860 "MachineIndependent/glslang.y" +#line 861 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6059 "MachineIndependent/glslang_tab.cpp" +#line 6029 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 864 "MachineIndependent/glslang.y" +#line 865 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6068 "MachineIndependent/glslang_tab.cpp" +#line 6038 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 868 "MachineIndependent/glslang.y" +#line 869 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6077 "MachineIndependent/glslang_tab.cpp" +#line 6047 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 875 "MachineIndependent/glslang.y" +#line 876 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6085 "MachineIndependent/glslang_tab.cpp" +#line 6055 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 878 "MachineIndependent/glslang.y" +#line 879 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6094,30 +6064,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6098 "MachineIndependent/glslang_tab.cpp" +#line 6068 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 889 "MachineIndependent/glslang.y" +#line 890 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6107 "MachineIndependent/glslang_tab.cpp" +#line 6077 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 896 "MachineIndependent/glslang.y" +#line 897 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6117 "MachineIndependent/glslang_tab.cpp" +#line 6087 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 902 "MachineIndependent/glslang.y" +#line 903 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6125,31 +6095,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6129 "MachineIndependent/glslang_tab.cpp" +#line 6099 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 909 "MachineIndependent/glslang.y" +#line 910 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6139 "MachineIndependent/glslang_tab.cpp" +#line 6109 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 915 "MachineIndependent/glslang.y" +#line 916 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6149 "MachineIndependent/glslang_tab.cpp" +#line 6119 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 920 "MachineIndependent/glslang.y" +#line 921 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6157,75 +6127,75 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6161 "MachineIndependent/glslang_tab.cpp" +#line 6131 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 927 "MachineIndependent/glslang.y" +#line 928 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6170 "MachineIndependent/glslang_tab.cpp" +#line 6140 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 931 "MachineIndependent/glslang.y" +#line 932 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6179 "MachineIndependent/glslang_tab.cpp" +#line 6149 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 935 "MachineIndependent/glslang.y" +#line 936 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6188 "MachineIndependent/glslang_tab.cpp" +#line 6158 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 939 "MachineIndependent/glslang.y" +#line 940 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6198 "MachineIndependent/glslang_tab.cpp" +#line 6168 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 944 "MachineIndependent/glslang.y" +#line 945 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6208 "MachineIndependent/glslang_tab.cpp" +#line 6178 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 949 "MachineIndependent/glslang.y" +#line 950 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6219 "MachineIndependent/glslang_tab.cpp" +#line 6189 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ -#line 958 "MachineIndependent/glslang.y" +#line 959 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6225 "MachineIndependent/glslang_tab.cpp" +#line 6195 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 958 "MachineIndependent/glslang.y" +#line 959 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6235,60 +6205,60 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6239 "MachineIndependent/glslang_tab.cpp" +#line 6209 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 969 "MachineIndependent/glslang.y" +#line 970 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6248 "MachineIndependent/glslang_tab.cpp" +#line 6218 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 973 "MachineIndependent/glslang.y" +#line 974 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6257 "MachineIndependent/glslang_tab.cpp" +#line 6227 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 980 "MachineIndependent/glslang.y" +#line 981 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6266 "MachineIndependent/glslang_tab.cpp" +#line 6236 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 984 "MachineIndependent/glslang.y" +#line 985 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6277 "MachineIndependent/glslang_tab.cpp" +#line 6247 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 990 "MachineIndependent/glslang.y" +#line 991 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); (yyval.interm).loc = (yyvsp[0].lex).loc; parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6288 "MachineIndependent/glslang_tab.cpp" +#line 6258 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 996 "MachineIndependent/glslang.y" +#line 997 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); (yyval.interm).loc = (yyvsp[-1].lex).loc; @@ -6296,27 +6266,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6300 "MachineIndependent/glslang_tab.cpp" +#line 6270 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 1006 "MachineIndependent/glslang.y" +#line 1007 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6308 "MachineIndependent/glslang_tab.cpp" +#line 6278 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 1009 "MachineIndependent/glslang.y" +#line 1010 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6316 "MachineIndependent/glslang_tab.cpp" +#line 6286 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1016 "MachineIndependent/glslang.y" +#line 1017 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6325,11 +6295,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6329 "MachineIndependent/glslang_tab.cpp" +#line 6299 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1024 "MachineIndependent/glslang.y" +#line 1025 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6347,11 +6317,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6351 "MachineIndependent/glslang_tab.cpp" +#line 6321 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1044 "MachineIndependent/glslang.y" +#line 1045 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6371,11 +6341,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6375 "MachineIndependent/glslang_tab.cpp" +#line 6345 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1067 "MachineIndependent/glslang.y" +#line 1068 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6391,11 +6361,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6395 "MachineIndependent/glslang_tab.cpp" +#line 6365 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1082 "MachineIndependent/glslang.y" +#line 1083 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6415,123 +6385,123 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6419 "MachineIndependent/glslang_tab.cpp" +#line 6389 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1107 "MachineIndependent/glslang.y" +#line 1108 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6435 "MachineIndependent/glslang_tab.cpp" +#line 6405 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1118 "MachineIndependent/glslang.y" +#line 1119 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6447 "MachineIndependent/glslang_tab.cpp" +#line 6417 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1128 "MachineIndependent/glslang.y" +#line 1129 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) (yyval.interm).param.type->getQualifier().precision = (yyvsp[-1].interm.type).qualifier.precision; - parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + parseContext.precisionQualifierCheck((yyvsp[-1].interm.type).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); parseContext.checkNoShaderLayouts((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6462 "MachineIndependent/glslang_tab.cpp" +#line 6432 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1138 "MachineIndependent/glslang.y" +#line 1139 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, EvqIn, *(yyvsp[0].interm).param.type); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); - parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier()); + parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6474 "MachineIndependent/glslang_tab.cpp" +#line 6444 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1148 "MachineIndependent/glslang.y" +#line 1149 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6485 "MachineIndependent/glslang_tab.cpp" +#line 6455 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1157 "MachineIndependent/glslang.y" +#line 1158 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6493 "MachineIndependent/glslang_tab.cpp" +#line 6463 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1160 "MachineIndependent/glslang.y" +#line 1161 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6502 "MachineIndependent/glslang_tab.cpp" +#line 6472 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1164 "MachineIndependent/glslang.y" +#line 1165 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6511 "MachineIndependent/glslang_tab.cpp" +#line 6481 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1168 "MachineIndependent/glslang.y" +#line 1169 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6521 "MachineIndependent/glslang_tab.cpp" +#line 6491 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1173 "MachineIndependent/glslang.y" +#line 1174 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6531 "MachineIndependent/glslang_tab.cpp" +#line 6501 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1181 "MachineIndependent/glslang.y" +#line 1182 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; @@ -6539,51 +6509,51 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6543 "MachineIndependent/glslang_tab.cpp" +#line 6513 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1188 "MachineIndependent/glslang.y" +#line 1189 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6553 "MachineIndependent/glslang_tab.cpp" +#line 6523 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1193 "MachineIndependent/glslang.y" +#line 1194 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6563 "MachineIndependent/glslang_tab.cpp" +#line 6533 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1198 "MachineIndependent/glslang.y" +#line 1199 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6573 "MachineIndependent/glslang_tab.cpp" +#line 6543 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1203 "MachineIndependent/glslang.y" +#line 1204 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6583 "MachineIndependent/glslang_tab.cpp" +#line 6553 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1212 "MachineIndependent/glslang.y" +#line 1213 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6592,13 +6562,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.profileRequires((yyvsp[0].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); parseContext.profileRequires((yyvsp[0].interm.type).loc, EEsProfile, 300, 0, "arrayed type"); } - parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier); + parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat()); } -#line 6598 "MachineIndependent/glslang_tab.cpp" +#line 6568 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1222 "MachineIndependent/glslang.y" +#line 1223 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6614,7 +6584,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.checkNoShaderLayouts((yyvsp[0].interm.type).loc, (yyvsp[-1].interm.type).shaderQualifiers); (yyvsp[0].interm.type).shaderQualifiers.merge((yyvsp[-1].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier, (yyvsp[-1].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier); + parseContext.precisionQualifierCheck((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).basicType, (yyvsp[0].interm.type).qualifier, (yyvsp[0].interm.type).isCoopmat()); (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6623,22 +6593,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6627 "MachineIndependent/glslang_tab.cpp" +#line 6597 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1249 "MachineIndependent/glslang.y" +#line 1250 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6638 "MachineIndependent/glslang_tab.cpp" +#line 6608 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1258 "MachineIndependent/glslang.y" +#line 1259 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6646,11 +6616,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6650 "MachineIndependent/glslang_tab.cpp" +#line 6620 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1265 "MachineIndependent/glslang.y" +#line 1266 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6658,11 +6628,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6662 "MachineIndependent/glslang_tab.cpp" +#line 6632 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1273 "MachineIndependent/glslang.y" +#line 1274 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6670,11 +6640,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6674 "MachineIndependent/glslang_tab.cpp" +#line 6644 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1280 "MachineIndependent/glslang.y" +#line 1281 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6682,11 +6652,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6686 "MachineIndependent/glslang_tab.cpp" +#line 6656 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1287 "MachineIndependent/glslang.y" +#line 1288 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6695,11 +6665,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6699 "MachineIndependent/glslang_tab.cpp" +#line 6669 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1295 "MachineIndependent/glslang.y" +#line 1296 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6708,11 +6678,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6712 "MachineIndependent/glslang_tab.cpp" +#line 6682 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1303 "MachineIndependent/glslang.y" +#line 1304 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6723,11 +6693,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6727 "MachineIndependent/glslang_tab.cpp" +#line 6697 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1313 "MachineIndependent/glslang.y" +#line 1314 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6738,11 +6708,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6742 "MachineIndependent/glslang_tab.cpp" +#line 6712 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1323 "MachineIndependent/glslang.y" +#line 1324 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6750,11 +6720,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6754 "MachineIndependent/glslang_tab.cpp" +#line 6724 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1330 "MachineIndependent/glslang.y" +#line 1331 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6762,84 +6732,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6766 "MachineIndependent/glslang_tab.cpp" +#line 6736 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1341 "MachineIndependent/glslang.y" +#line 1342 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6774 "MachineIndependent/glslang_tab.cpp" +#line 6744 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1347 "MachineIndependent/glslang.y" +#line 1348 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6782 "MachineIndependent/glslang_tab.cpp" +#line 6752 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1350 "MachineIndependent/glslang.y" +#line 1351 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6792 "MachineIndependent/glslang_tab.cpp" +#line 6762 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1357 "MachineIndependent/glslang.y" +#line 1358 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6801 "MachineIndependent/glslang_tab.cpp" +#line 6771 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1361 "MachineIndependent/glslang.y" +#line 1362 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6810 "MachineIndependent/glslang_tab.cpp" +#line 6780 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1365 "MachineIndependent/glslang.y" +#line 1366 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6820 "MachineIndependent/glslang_tab.cpp" +#line 6790 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1374 "MachineIndependent/glslang.y" +#line 1375 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6831 "MachineIndependent/glslang_tab.cpp" +#line 6801 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1384 "MachineIndependent/glslang.y" +#line 1385 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6839 "MachineIndependent/glslang_tab.cpp" +#line 6809 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1387 "MachineIndependent/glslang.y" +#line 1388 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6848,151 +6818,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6852 "MachineIndependent/glslang_tab.cpp" +#line 6822 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1398 "MachineIndependent/glslang.y" +#line 1399 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6860 "MachineIndependent/glslang_tab.cpp" +#line 6830 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1401 "MachineIndependent/glslang.y" +#line 1402 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6868 "MachineIndependent/glslang_tab.cpp" +#line 6838 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1404 "MachineIndependent/glslang.y" +#line 1405 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6877 "MachineIndependent/glslang_tab.cpp" +#line 6847 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1408 "MachineIndependent/glslang.y" +#line 1409 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6886 "MachineIndependent/glslang_tab.cpp" +#line 6856 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1412 "MachineIndependent/glslang.y" +#line 1413 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6895 "MachineIndependent/glslang_tab.cpp" +#line 6865 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1417 "MachineIndependent/glslang.y" +#line 1418 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6904 "MachineIndependent/glslang_tab.cpp" +#line 6874 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1421 "MachineIndependent/glslang.y" +#line 1422 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6912 "MachineIndependent/glslang_tab.cpp" +#line 6882 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1424 "MachineIndependent/glslang.y" +#line 1425 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6922 "MachineIndependent/glslang_tab.cpp" +#line 6892 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1429 "MachineIndependent/glslang.y" +#line 1430 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6931 "MachineIndependent/glslang_tab.cpp" +#line 6901 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1433 "MachineIndependent/glslang.y" +#line 1434 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6941 "MachineIndependent/glslang_tab.cpp" +#line 6911 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1438 "MachineIndependent/glslang.y" +#line 1439 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6951 "MachineIndependent/glslang_tab.cpp" +#line 6921 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1447 "MachineIndependent/glslang.y" +#line 1448 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6960 "MachineIndependent/glslang_tab.cpp" +#line 6930 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1451 "MachineIndependent/glslang.y" +#line 1452 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6970 "MachineIndependent/glslang_tab.cpp" +#line 6940 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1456 "MachineIndependent/glslang.y" +#line 1457 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6981 "MachineIndependent/glslang_tab.cpp" +#line 6951 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1462 "MachineIndependent/glslang.y" +#line 1463 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6992 "MachineIndependent/glslang_tab.cpp" +#line 6962 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1468 "MachineIndependent/glslang.y" +#line 1469 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -7000,31 +6970,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 7004 "MachineIndependent/glslang_tab.cpp" +#line 6974 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1475 "MachineIndependent/glslang.y" +#line 1476 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 7014 "MachineIndependent/glslang_tab.cpp" +#line 6984 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: TILEIMAGEEXT */ -#line 1480 "MachineIndependent/glslang.y" +#line 1481 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 7024 "MachineIndependent/glslang_tab.cpp" +#line 6994 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: SHARED */ -#line 1485 "MachineIndependent/glslang.y" +#line 1486 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7033,21 +7003,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7037 "MachineIndependent/glslang_tab.cpp" +#line 7007 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: BUFFER */ -#line 1493 "MachineIndependent/glslang.y" +#line 1494 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7047 "MachineIndependent/glslang_tab.cpp" +#line 7017 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: ATTRIBUTE */ -#line 1499 "MachineIndependent/glslang.y" +#line 1500 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7060,11 +7030,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7064 "MachineIndependent/glslang_tab.cpp" +#line 7034 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: VARYING */ -#line 1511 "MachineIndependent/glslang.y" +#line 1512 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7079,32 +7049,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7083 "MachineIndependent/glslang_tab.cpp" +#line 7053 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: PATCH */ -#line 1525 "MachineIndependent/glslang.y" +#line 1526 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7094 "MachineIndependent/glslang_tab.cpp" +#line 7064 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: SAMPLE */ -#line 1531 "MachineIndependent/glslang.y" +#line 1532 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7104 "MachineIndependent/glslang_tab.cpp" +#line 7074 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITATTRNV */ -#line 1536 "MachineIndependent/glslang.y" +#line 1537 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7113,11 +7083,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7117 "MachineIndependent/glslang_tab.cpp" +#line 7087 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1544 "MachineIndependent/glslang.y" +#line 1545 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7126,11 +7096,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7130 "MachineIndependent/glslang_tab.cpp" +#line 7100 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITATTREXT */ -#line 1552 "MachineIndependent/glslang.y" +#line 1553 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7139,11 +7109,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7143 "MachineIndependent/glslang_tab.cpp" +#line 7113 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADNV */ -#line 1560 "MachineIndependent/glslang.y" +#line 1561 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7152,11 +7122,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7156 "MachineIndependent/glslang_tab.cpp" +#line 7126 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADEXT */ -#line 1568 "MachineIndependent/glslang.y" +#line 1569 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7165,11 +7135,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7169 "MachineIndependent/glslang_tab.cpp" +#line 7139 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINNV */ -#line 1576 "MachineIndependent/glslang.y" +#line 1577 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7178,11 +7148,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7182 "MachineIndependent/glslang_tab.cpp" +#line 7152 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINEXT */ -#line 1584 "MachineIndependent/glslang.y" +#line 1585 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7191,11 +7161,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7195 "MachineIndependent/glslang_tab.cpp" +#line 7165 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATANV */ -#line 1592 "MachineIndependent/glslang.y" +#line 1593 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7204,11 +7174,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7208 "MachineIndependent/glslang_tab.cpp" +#line 7178 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAEXT */ -#line 1600 "MachineIndependent/glslang.y" +#line 1601 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7217,11 +7187,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7221 "MachineIndependent/glslang_tab.cpp" +#line 7191 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINNV */ -#line 1608 "MachineIndependent/glslang.y" +#line 1609 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7229,11 +7199,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7233 "MachineIndependent/glslang_tab.cpp" +#line 7203 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINEXT */ -#line 1615 "MachineIndependent/glslang.y" +#line 1616 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7241,138 +7211,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7245 "MachineIndependent/glslang_tab.cpp" +#line 7215 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: COHERENT */ -#line 1622 "MachineIndependent/glslang.y" +#line 1623 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7254 "MachineIndependent/glslang_tab.cpp" +#line 7224 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: DEVICECOHERENT */ -#line 1626 "MachineIndependent/glslang.y" +#line 1627 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7264 "MachineIndependent/glslang_tab.cpp" +#line 7234 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1631 "MachineIndependent/glslang.y" +#line 1632 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7274 "MachineIndependent/glslang_tab.cpp" +#line 7244 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1636 "MachineIndependent/glslang.y" +#line 1637 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7284 "MachineIndependent/glslang_tab.cpp" +#line 7254 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1641 "MachineIndependent/glslang.y" +#line 1642 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7294 "MachineIndependent/glslang_tab.cpp" +#line 7264 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: NONPRIVATE */ -#line 1646 "MachineIndependent/glslang.y" +#line 1647 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7304 "MachineIndependent/glslang_tab.cpp" +#line 7274 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1651 "MachineIndependent/glslang.y" +#line 1652 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7314 "MachineIndependent/glslang_tab.cpp" +#line 7284 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: VOLATILE */ -#line 1656 "MachineIndependent/glslang.y" +#line 1657 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7323 "MachineIndependent/glslang_tab.cpp" +#line 7293 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: RESTRICT */ -#line 1660 "MachineIndependent/glslang.y" +#line 1661 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7332 "MachineIndependent/glslang_tab.cpp" +#line 7302 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: READONLY */ -#line 1664 "MachineIndependent/glslang.y" +#line 1665 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7341 "MachineIndependent/glslang_tab.cpp" +#line 7311 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: WRITEONLY */ -#line 1668 "MachineIndependent/glslang.y" +#line 1669 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7350 "MachineIndependent/glslang_tab.cpp" +#line 7320 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE */ -#line 1672 "MachineIndependent/glslang.y" +#line 1673 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7361 "MachineIndependent/glslang_tab.cpp" +#line 7331 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1678 "MachineIndependent/glslang.y" +#line 1679 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7372 "MachineIndependent/glslang_tab.cpp" +#line 7342 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1684 "MachineIndependent/glslang.y" +#line 1685 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7380,70 +7350,73 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7384 "MachineIndependent/glslang_tab.cpp" +#line 7354 "MachineIndependent/glslang_tab.cpp" break; case 206: /* non_uniform_qualifier: NONUNIFORM */ -#line 1696 "MachineIndependent/glslang.y" +#line 1697 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7393 "MachineIndependent/glslang_tab.cpp" +#line 7363 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: IDENTIFIER */ -#line 1703 "MachineIndependent/glslang.y" +#line 1704 "MachineIndependent/glslang.y" { // TODO } -#line 7401 "MachineIndependent/glslang_tab.cpp" +#line 7371 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1706 "MachineIndependent/glslang.y" +#line 1707 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7411 "MachineIndependent/glslang_tab.cpp" +#line 7381 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1715 "MachineIndependent/glslang.y" +#line 1716 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[0].interm.typeParameters); + parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); + } -#line 7421 "MachineIndependent/glslang_tab.cpp" +#line 7393 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1720 "MachineIndependent/glslang.y" +#line 1723 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); (yyval.interm.type).typeParameters = (yyvsp[-1].interm.typeParameters); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; + parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7433 "MachineIndependent/glslang_tab.cpp" +#line 7406 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1730 "MachineIndependent/glslang.y" +#line 1734 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7443 "MachineIndependent/glslang_tab.cpp" +#line 7416 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1735 "MachineIndependent/glslang.y" +#line 1739 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7452,20 +7425,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7456 "MachineIndependent/glslang_tab.cpp" +#line 7429 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1743 "MachineIndependent/glslang.y" +#line 1747 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7465 "MachineIndependent/glslang_tab.cpp" +#line 7438 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1747 "MachineIndependent/glslang.y" +#line 1751 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7473,348 +7446,359 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7477 "MachineIndependent/glslang_tab.cpp" +#line 7450 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1757 "MachineIndependent/glslang.y" +#line 1761 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7485 "MachineIndependent/glslang_tab.cpp" +#line 7458 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier_opt: %empty */ -#line 1760 "MachineIndependent/glslang.y" +#line 1764 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7493 "MachineIndependent/glslang_tab.cpp" +#line 7466 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1766 "MachineIndependent/glslang.y" +#line 1770 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7501 "MachineIndependent/glslang_tab.cpp" +#line 7474 "MachineIndependent/glslang_tab.cpp" + break; + + case 218: /* type_parameter_specifier_list: type_specifier */ +#line 1776 "MachineIndependent/glslang.y" + { + (yyval.interm.typeParameters) = new TTypeParameters; + (yyval.interm.typeParameters)->arraySizes = new TArraySizes; + (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; + } +#line 7484 "MachineIndependent/glslang_tab.cpp" break; - case 218: /* type_parameter_specifier_list: unary_expression */ -#line 1772 "MachineIndependent/glslang.y" + case 219: /* type_parameter_specifier_list: unary_expression */ +#line 1781 "MachineIndependent/glslang.y" { - (yyval.interm.typeParameters) = new TArraySizes; + (yyval.interm.typeParameters) = new TTypeParameters; + (yyval.interm.typeParameters)->arraySizes = new TArraySizes; TArraySize size; - parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); - (yyval.interm.typeParameters)->addInnerSize(size); + parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); + (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7513 "MachineIndependent/glslang_tab.cpp" +#line 7497 "MachineIndependent/glslang_tab.cpp" break; - case 219: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1779 "MachineIndependent/glslang.y" + case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ +#line 1789 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); TArraySize size; - parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter"); - (yyval.interm.typeParameters)->addInnerSize(size); + parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); + (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7525 "MachineIndependent/glslang_tab.cpp" +#line 7509 "MachineIndependent/glslang_tab.cpp" break; - case 220: /* type_specifier_nonarray: VOID */ -#line 1789 "MachineIndependent/glslang.y" + case 221: /* type_specifier_nonarray: VOID */ +#line 1799 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7534 "MachineIndependent/glslang_tab.cpp" +#line 7518 "MachineIndependent/glslang_tab.cpp" break; - case 221: /* type_specifier_nonarray: FLOAT */ -#line 1793 "MachineIndependent/glslang.y" + case 222: /* type_specifier_nonarray: FLOAT */ +#line 1803 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7543 "MachineIndependent/glslang_tab.cpp" +#line 7527 "MachineIndependent/glslang_tab.cpp" break; - case 222: /* type_specifier_nonarray: INT */ -#line 1797 "MachineIndependent/glslang.y" + case 223: /* type_specifier_nonarray: INT */ +#line 1807 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7552 "MachineIndependent/glslang_tab.cpp" +#line 7536 "MachineIndependent/glslang_tab.cpp" break; - case 223: /* type_specifier_nonarray: UINT */ -#line 1801 "MachineIndependent/glslang.y" + case 224: /* type_specifier_nonarray: UINT */ +#line 1811 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7562 "MachineIndependent/glslang_tab.cpp" +#line 7546 "MachineIndependent/glslang_tab.cpp" break; - case 224: /* type_specifier_nonarray: BOOL */ -#line 1806 "MachineIndependent/glslang.y" + case 225: /* type_specifier_nonarray: BOOL */ +#line 1816 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7571 "MachineIndependent/glslang_tab.cpp" +#line 7555 "MachineIndependent/glslang_tab.cpp" break; - case 225: /* type_specifier_nonarray: VEC2 */ -#line 1810 "MachineIndependent/glslang.y" + case 226: /* type_specifier_nonarray: VEC2 */ +#line 1820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7581 "MachineIndependent/glslang_tab.cpp" +#line 7565 "MachineIndependent/glslang_tab.cpp" break; - case 226: /* type_specifier_nonarray: VEC3 */ -#line 1815 "MachineIndependent/glslang.y" + case 227: /* type_specifier_nonarray: VEC3 */ +#line 1825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7591 "MachineIndependent/glslang_tab.cpp" +#line 7575 "MachineIndependent/glslang_tab.cpp" break; - case 227: /* type_specifier_nonarray: VEC4 */ -#line 1820 "MachineIndependent/glslang.y" + case 228: /* type_specifier_nonarray: VEC4 */ +#line 1830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7601 "MachineIndependent/glslang_tab.cpp" +#line 7585 "MachineIndependent/glslang_tab.cpp" break; - case 228: /* type_specifier_nonarray: BVEC2 */ -#line 1825 "MachineIndependent/glslang.y" + case 229: /* type_specifier_nonarray: BVEC2 */ +#line 1835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7611 "MachineIndependent/glslang_tab.cpp" +#line 7595 "MachineIndependent/glslang_tab.cpp" break; - case 229: /* type_specifier_nonarray: BVEC3 */ -#line 1830 "MachineIndependent/glslang.y" + case 230: /* type_specifier_nonarray: BVEC3 */ +#line 1840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7621 "MachineIndependent/glslang_tab.cpp" +#line 7605 "MachineIndependent/glslang_tab.cpp" break; - case 230: /* type_specifier_nonarray: BVEC4 */ -#line 1835 "MachineIndependent/glslang.y" + case 231: /* type_specifier_nonarray: BVEC4 */ +#line 1845 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7631 "MachineIndependent/glslang_tab.cpp" +#line 7615 "MachineIndependent/glslang_tab.cpp" break; - case 231: /* type_specifier_nonarray: IVEC2 */ -#line 1840 "MachineIndependent/glslang.y" + case 232: /* type_specifier_nonarray: IVEC2 */ +#line 1850 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7641 "MachineIndependent/glslang_tab.cpp" +#line 7625 "MachineIndependent/glslang_tab.cpp" break; - case 232: /* type_specifier_nonarray: IVEC3 */ -#line 1845 "MachineIndependent/glslang.y" + case 233: /* type_specifier_nonarray: IVEC3 */ +#line 1855 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7651 "MachineIndependent/glslang_tab.cpp" +#line 7635 "MachineIndependent/glslang_tab.cpp" break; - case 233: /* type_specifier_nonarray: IVEC4 */ -#line 1850 "MachineIndependent/glslang.y" + case 234: /* type_specifier_nonarray: IVEC4 */ +#line 1860 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7661 "MachineIndependent/glslang_tab.cpp" +#line 7645 "MachineIndependent/glslang_tab.cpp" break; - case 234: /* type_specifier_nonarray: UVEC2 */ -#line 1855 "MachineIndependent/glslang.y" + case 235: /* type_specifier_nonarray: UVEC2 */ +#line 1865 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7672 "MachineIndependent/glslang_tab.cpp" +#line 7656 "MachineIndependent/glslang_tab.cpp" break; - case 235: /* type_specifier_nonarray: UVEC3 */ -#line 1861 "MachineIndependent/glslang.y" + case 236: /* type_specifier_nonarray: UVEC3 */ +#line 1871 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7683 "MachineIndependent/glslang_tab.cpp" +#line 7667 "MachineIndependent/glslang_tab.cpp" break; - case 236: /* type_specifier_nonarray: UVEC4 */ -#line 1867 "MachineIndependent/glslang.y" + case 237: /* type_specifier_nonarray: UVEC4 */ +#line 1877 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7694 "MachineIndependent/glslang_tab.cpp" +#line 7678 "MachineIndependent/glslang_tab.cpp" break; - case 237: /* type_specifier_nonarray: MAT2 */ -#line 1873 "MachineIndependent/glslang.y" + case 238: /* type_specifier_nonarray: MAT2 */ +#line 1883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7704 "MachineIndependent/glslang_tab.cpp" +#line 7688 "MachineIndependent/glslang_tab.cpp" break; - case 238: /* type_specifier_nonarray: MAT3 */ -#line 1878 "MachineIndependent/glslang.y" + case 239: /* type_specifier_nonarray: MAT3 */ +#line 1888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7714 "MachineIndependent/glslang_tab.cpp" +#line 7698 "MachineIndependent/glslang_tab.cpp" break; - case 239: /* type_specifier_nonarray: MAT4 */ -#line 1883 "MachineIndependent/glslang.y" + case 240: /* type_specifier_nonarray: MAT4 */ +#line 1893 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7724 "MachineIndependent/glslang_tab.cpp" +#line 7708 "MachineIndependent/glslang_tab.cpp" break; - case 240: /* type_specifier_nonarray: MAT2X2 */ -#line 1888 "MachineIndependent/glslang.y" + case 241: /* type_specifier_nonarray: MAT2X2 */ +#line 1898 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7734 "MachineIndependent/glslang_tab.cpp" +#line 7718 "MachineIndependent/glslang_tab.cpp" break; - case 241: /* type_specifier_nonarray: MAT2X3 */ -#line 1893 "MachineIndependent/glslang.y" + case 242: /* type_specifier_nonarray: MAT2X3 */ +#line 1903 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7744 "MachineIndependent/glslang_tab.cpp" +#line 7728 "MachineIndependent/glslang_tab.cpp" break; - case 242: /* type_specifier_nonarray: MAT2X4 */ -#line 1898 "MachineIndependent/glslang.y" + case 243: /* type_specifier_nonarray: MAT2X4 */ +#line 1908 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7754 "MachineIndependent/glslang_tab.cpp" +#line 7738 "MachineIndependent/glslang_tab.cpp" break; - case 243: /* type_specifier_nonarray: MAT3X2 */ -#line 1903 "MachineIndependent/glslang.y" + case 244: /* type_specifier_nonarray: MAT3X2 */ +#line 1913 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7764 "MachineIndependent/glslang_tab.cpp" +#line 7748 "MachineIndependent/glslang_tab.cpp" break; - case 244: /* type_specifier_nonarray: MAT3X3 */ -#line 1908 "MachineIndependent/glslang.y" + case 245: /* type_specifier_nonarray: MAT3X3 */ +#line 1918 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7774 "MachineIndependent/glslang_tab.cpp" +#line 7758 "MachineIndependent/glslang_tab.cpp" break; - case 245: /* type_specifier_nonarray: MAT3X4 */ -#line 1913 "MachineIndependent/glslang.y" + case 246: /* type_specifier_nonarray: MAT3X4 */ +#line 1923 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7784 "MachineIndependent/glslang_tab.cpp" +#line 7768 "MachineIndependent/glslang_tab.cpp" break; - case 246: /* type_specifier_nonarray: MAT4X2 */ -#line 1918 "MachineIndependent/glslang.y" + case 247: /* type_specifier_nonarray: MAT4X2 */ +#line 1928 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7794 "MachineIndependent/glslang_tab.cpp" +#line 7778 "MachineIndependent/glslang_tab.cpp" break; - case 247: /* type_specifier_nonarray: MAT4X3 */ -#line 1923 "MachineIndependent/glslang.y" + case 248: /* type_specifier_nonarray: MAT4X3 */ +#line 1933 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7804 "MachineIndependent/glslang_tab.cpp" +#line 7788 "MachineIndependent/glslang_tab.cpp" break; - case 248: /* type_specifier_nonarray: MAT4X4 */ -#line 1928 "MachineIndependent/glslang.y" + case 249: /* type_specifier_nonarray: MAT4X4 */ +#line 1938 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7814 "MachineIndependent/glslang_tab.cpp" +#line 7798 "MachineIndependent/glslang_tab.cpp" break; - case 249: /* type_specifier_nonarray: DOUBLE */ -#line 1934 "MachineIndependent/glslang.y" + case 250: /* type_specifier_nonarray: DOUBLE */ +#line 1944 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7822,121 +7806,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7826 "MachineIndependent/glslang_tab.cpp" +#line 7810 "MachineIndependent/glslang_tab.cpp" break; - case 250: /* type_specifier_nonarray: FLOAT16_T */ -#line 1941 "MachineIndependent/glslang.y" + case 251: /* type_specifier_nonarray: FLOAT16_T */ +#line 1951 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7836 "MachineIndependent/glslang_tab.cpp" +#line 7820 "MachineIndependent/glslang_tab.cpp" break; - case 251: /* type_specifier_nonarray: FLOAT32_T */ -#line 1946 "MachineIndependent/glslang.y" + case 252: /* type_specifier_nonarray: FLOAT32_T */ +#line 1956 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7846 "MachineIndependent/glslang_tab.cpp" +#line 7830 "MachineIndependent/glslang_tab.cpp" break; - case 252: /* type_specifier_nonarray: FLOAT64_T */ -#line 1951 "MachineIndependent/glslang.y" + case 253: /* type_specifier_nonarray: FLOAT64_T */ +#line 1961 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7856 "MachineIndependent/glslang_tab.cpp" +#line 7840 "MachineIndependent/glslang_tab.cpp" break; - case 253: /* type_specifier_nonarray: INT8_T */ -#line 1956 "MachineIndependent/glslang.y" + case 254: /* type_specifier_nonarray: INT8_T */ +#line 1966 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7866 "MachineIndependent/glslang_tab.cpp" +#line 7850 "MachineIndependent/glslang_tab.cpp" break; - case 254: /* type_specifier_nonarray: UINT8_T */ -#line 1961 "MachineIndependent/glslang.y" + case 255: /* type_specifier_nonarray: UINT8_T */ +#line 1971 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7876 "MachineIndependent/glslang_tab.cpp" +#line 7860 "MachineIndependent/glslang_tab.cpp" break; - case 255: /* type_specifier_nonarray: INT16_T */ -#line 1966 "MachineIndependent/glslang.y" + case 256: /* type_specifier_nonarray: INT16_T */ +#line 1976 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7886 "MachineIndependent/glslang_tab.cpp" +#line 7870 "MachineIndependent/glslang_tab.cpp" break; - case 256: /* type_specifier_nonarray: UINT16_T */ -#line 1971 "MachineIndependent/glslang.y" + case 257: /* type_specifier_nonarray: UINT16_T */ +#line 1981 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7896 "MachineIndependent/glslang_tab.cpp" +#line 7880 "MachineIndependent/glslang_tab.cpp" break; - case 257: /* type_specifier_nonarray: INT32_T */ -#line 1976 "MachineIndependent/glslang.y" + case 258: /* type_specifier_nonarray: INT32_T */ +#line 1986 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7906 "MachineIndependent/glslang_tab.cpp" +#line 7890 "MachineIndependent/glslang_tab.cpp" break; - case 258: /* type_specifier_nonarray: UINT32_T */ -#line 1981 "MachineIndependent/glslang.y" + case 259: /* type_specifier_nonarray: UINT32_T */ +#line 1991 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7916 "MachineIndependent/glslang_tab.cpp" +#line 7900 "MachineIndependent/glslang_tab.cpp" break; - case 259: /* type_specifier_nonarray: INT64_T */ -#line 1986 "MachineIndependent/glslang.y" + case 260: /* type_specifier_nonarray: INT64_T */ +#line 1996 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7926 "MachineIndependent/glslang_tab.cpp" +#line 7910 "MachineIndependent/glslang_tab.cpp" break; - case 260: /* type_specifier_nonarray: UINT64_T */ -#line 1991 "MachineIndependent/glslang.y" + case 261: /* type_specifier_nonarray: UINT64_T */ +#line 2001 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7936 "MachineIndependent/glslang_tab.cpp" +#line 7920 "MachineIndependent/glslang_tab.cpp" break; - case 261: /* type_specifier_nonarray: DVEC2 */ -#line 1996 "MachineIndependent/glslang.y" + case 262: /* type_specifier_nonarray: DVEC2 */ +#line 2006 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7945,11 +7929,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7949 "MachineIndependent/glslang_tab.cpp" +#line 7933 "MachineIndependent/glslang_tab.cpp" break; - case 262: /* type_specifier_nonarray: DVEC3 */ -#line 2004 "MachineIndependent/glslang.y" + case 263: /* type_specifier_nonarray: DVEC3 */ +#line 2014 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7958,11 +7942,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7962 "MachineIndependent/glslang_tab.cpp" +#line 7946 "MachineIndependent/glslang_tab.cpp" break; - case 263: /* type_specifier_nonarray: DVEC4 */ -#line 2012 "MachineIndependent/glslang.y" + case 264: /* type_specifier_nonarray: DVEC4 */ +#line 2022 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7971,374 +7955,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7975 "MachineIndependent/glslang_tab.cpp" +#line 7959 "MachineIndependent/glslang_tab.cpp" break; - case 264: /* type_specifier_nonarray: F16VEC2 */ -#line 2020 "MachineIndependent/glslang.y" + case 265: /* type_specifier_nonarray: F16VEC2 */ +#line 2030 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7986 "MachineIndependent/glslang_tab.cpp" +#line 7970 "MachineIndependent/glslang_tab.cpp" break; - case 265: /* type_specifier_nonarray: F16VEC3 */ -#line 2026 "MachineIndependent/glslang.y" + case 266: /* type_specifier_nonarray: F16VEC3 */ +#line 2036 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7997 "MachineIndependent/glslang_tab.cpp" +#line 7981 "MachineIndependent/glslang_tab.cpp" break; - case 266: /* type_specifier_nonarray: F16VEC4 */ -#line 2032 "MachineIndependent/glslang.y" + case 267: /* type_specifier_nonarray: F16VEC4 */ +#line 2042 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8008 "MachineIndependent/glslang_tab.cpp" +#line 7992 "MachineIndependent/glslang_tab.cpp" break; - case 267: /* type_specifier_nonarray: F32VEC2 */ -#line 2038 "MachineIndependent/glslang.y" + case 268: /* type_specifier_nonarray: F32VEC2 */ +#line 2048 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8019 "MachineIndependent/glslang_tab.cpp" +#line 8003 "MachineIndependent/glslang_tab.cpp" break; - case 268: /* type_specifier_nonarray: F32VEC3 */ -#line 2044 "MachineIndependent/glslang.y" + case 269: /* type_specifier_nonarray: F32VEC3 */ +#line 2054 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8030 "MachineIndependent/glslang_tab.cpp" +#line 8014 "MachineIndependent/glslang_tab.cpp" break; - case 269: /* type_specifier_nonarray: F32VEC4 */ -#line 2050 "MachineIndependent/glslang.y" + case 270: /* type_specifier_nonarray: F32VEC4 */ +#line 2060 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8041 "MachineIndependent/glslang_tab.cpp" +#line 8025 "MachineIndependent/glslang_tab.cpp" break; - case 270: /* type_specifier_nonarray: F64VEC2 */ -#line 2056 "MachineIndependent/glslang.y" + case 271: /* type_specifier_nonarray: F64VEC2 */ +#line 2066 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8052 "MachineIndependent/glslang_tab.cpp" +#line 8036 "MachineIndependent/glslang_tab.cpp" break; - case 271: /* type_specifier_nonarray: F64VEC3 */ -#line 2062 "MachineIndependent/glslang.y" + case 272: /* type_specifier_nonarray: F64VEC3 */ +#line 2072 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8063 "MachineIndependent/glslang_tab.cpp" +#line 8047 "MachineIndependent/glslang_tab.cpp" break; - case 272: /* type_specifier_nonarray: F64VEC4 */ -#line 2068 "MachineIndependent/glslang.y" + case 273: /* type_specifier_nonarray: F64VEC4 */ +#line 2078 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8074 "MachineIndependent/glslang_tab.cpp" +#line 8058 "MachineIndependent/glslang_tab.cpp" break; - case 273: /* type_specifier_nonarray: I8VEC2 */ -#line 2074 "MachineIndependent/glslang.y" + case 274: /* type_specifier_nonarray: I8VEC2 */ +#line 2084 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8085 "MachineIndependent/glslang_tab.cpp" +#line 8069 "MachineIndependent/glslang_tab.cpp" break; - case 274: /* type_specifier_nonarray: I8VEC3 */ -#line 2080 "MachineIndependent/glslang.y" + case 275: /* type_specifier_nonarray: I8VEC3 */ +#line 2090 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8096 "MachineIndependent/glslang_tab.cpp" +#line 8080 "MachineIndependent/glslang_tab.cpp" break; - case 275: /* type_specifier_nonarray: I8VEC4 */ -#line 2086 "MachineIndependent/glslang.y" + case 276: /* type_specifier_nonarray: I8VEC4 */ +#line 2096 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8107 "MachineIndependent/glslang_tab.cpp" +#line 8091 "MachineIndependent/glslang_tab.cpp" break; - case 276: /* type_specifier_nonarray: I16VEC2 */ -#line 2092 "MachineIndependent/glslang.y" + case 277: /* type_specifier_nonarray: I16VEC2 */ +#line 2102 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8118 "MachineIndependent/glslang_tab.cpp" +#line 8102 "MachineIndependent/glslang_tab.cpp" break; - case 277: /* type_specifier_nonarray: I16VEC3 */ -#line 2098 "MachineIndependent/glslang.y" + case 278: /* type_specifier_nonarray: I16VEC3 */ +#line 2108 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8129 "MachineIndependent/glslang_tab.cpp" +#line 8113 "MachineIndependent/glslang_tab.cpp" break; - case 278: /* type_specifier_nonarray: I16VEC4 */ -#line 2104 "MachineIndependent/glslang.y" + case 279: /* type_specifier_nonarray: I16VEC4 */ +#line 2114 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8140 "MachineIndependent/glslang_tab.cpp" +#line 8124 "MachineIndependent/glslang_tab.cpp" break; - case 279: /* type_specifier_nonarray: I32VEC2 */ -#line 2110 "MachineIndependent/glslang.y" + case 280: /* type_specifier_nonarray: I32VEC2 */ +#line 2120 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8151 "MachineIndependent/glslang_tab.cpp" +#line 8135 "MachineIndependent/glslang_tab.cpp" break; - case 280: /* type_specifier_nonarray: I32VEC3 */ -#line 2116 "MachineIndependent/glslang.y" + case 281: /* type_specifier_nonarray: I32VEC3 */ +#line 2126 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8162 "MachineIndependent/glslang_tab.cpp" +#line 8146 "MachineIndependent/glslang_tab.cpp" break; - case 281: /* type_specifier_nonarray: I32VEC4 */ -#line 2122 "MachineIndependent/glslang.y" + case 282: /* type_specifier_nonarray: I32VEC4 */ +#line 2132 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8173 "MachineIndependent/glslang_tab.cpp" +#line 8157 "MachineIndependent/glslang_tab.cpp" break; - case 282: /* type_specifier_nonarray: I64VEC2 */ -#line 2128 "MachineIndependent/glslang.y" + case 283: /* type_specifier_nonarray: I64VEC2 */ +#line 2138 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8184 "MachineIndependent/glslang_tab.cpp" +#line 8168 "MachineIndependent/glslang_tab.cpp" break; - case 283: /* type_specifier_nonarray: I64VEC3 */ -#line 2134 "MachineIndependent/glslang.y" + case 284: /* type_specifier_nonarray: I64VEC3 */ +#line 2144 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8195 "MachineIndependent/glslang_tab.cpp" +#line 8179 "MachineIndependent/glslang_tab.cpp" break; - case 284: /* type_specifier_nonarray: I64VEC4 */ -#line 2140 "MachineIndependent/glslang.y" + case 285: /* type_specifier_nonarray: I64VEC4 */ +#line 2150 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8206 "MachineIndependent/glslang_tab.cpp" +#line 8190 "MachineIndependent/glslang_tab.cpp" break; - case 285: /* type_specifier_nonarray: U8VEC2 */ -#line 2146 "MachineIndependent/glslang.y" + case 286: /* type_specifier_nonarray: U8VEC2 */ +#line 2156 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8217 "MachineIndependent/glslang_tab.cpp" +#line 8201 "MachineIndependent/glslang_tab.cpp" break; - case 286: /* type_specifier_nonarray: U8VEC3 */ -#line 2152 "MachineIndependent/glslang.y" + case 287: /* type_specifier_nonarray: U8VEC3 */ +#line 2162 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8228 "MachineIndependent/glslang_tab.cpp" +#line 8212 "MachineIndependent/glslang_tab.cpp" break; - case 287: /* type_specifier_nonarray: U8VEC4 */ -#line 2158 "MachineIndependent/glslang.y" + case 288: /* type_specifier_nonarray: U8VEC4 */ +#line 2168 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8239 "MachineIndependent/glslang_tab.cpp" +#line 8223 "MachineIndependent/glslang_tab.cpp" break; - case 288: /* type_specifier_nonarray: U16VEC2 */ -#line 2164 "MachineIndependent/glslang.y" + case 289: /* type_specifier_nonarray: U16VEC2 */ +#line 2174 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8250 "MachineIndependent/glslang_tab.cpp" +#line 8234 "MachineIndependent/glslang_tab.cpp" break; - case 289: /* type_specifier_nonarray: U16VEC3 */ -#line 2170 "MachineIndependent/glslang.y" + case 290: /* type_specifier_nonarray: U16VEC3 */ +#line 2180 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8261 "MachineIndependent/glslang_tab.cpp" +#line 8245 "MachineIndependent/glslang_tab.cpp" break; - case 290: /* type_specifier_nonarray: U16VEC4 */ -#line 2176 "MachineIndependent/glslang.y" + case 291: /* type_specifier_nonarray: U16VEC4 */ +#line 2186 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8272 "MachineIndependent/glslang_tab.cpp" +#line 8256 "MachineIndependent/glslang_tab.cpp" break; - case 291: /* type_specifier_nonarray: U32VEC2 */ -#line 2182 "MachineIndependent/glslang.y" + case 292: /* type_specifier_nonarray: U32VEC2 */ +#line 2192 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8283 "MachineIndependent/glslang_tab.cpp" +#line 8267 "MachineIndependent/glslang_tab.cpp" break; - case 292: /* type_specifier_nonarray: U32VEC3 */ -#line 2188 "MachineIndependent/glslang.y" + case 293: /* type_specifier_nonarray: U32VEC3 */ +#line 2198 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8294 "MachineIndependent/glslang_tab.cpp" +#line 8278 "MachineIndependent/glslang_tab.cpp" break; - case 293: /* type_specifier_nonarray: U32VEC4 */ -#line 2194 "MachineIndependent/glslang.y" + case 294: /* type_specifier_nonarray: U32VEC4 */ +#line 2204 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8305 "MachineIndependent/glslang_tab.cpp" +#line 8289 "MachineIndependent/glslang_tab.cpp" break; - case 294: /* type_specifier_nonarray: U64VEC2 */ -#line 2200 "MachineIndependent/glslang.y" + case 295: /* type_specifier_nonarray: U64VEC2 */ +#line 2210 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8316 "MachineIndependent/glslang_tab.cpp" +#line 8300 "MachineIndependent/glslang_tab.cpp" break; - case 295: /* type_specifier_nonarray: U64VEC3 */ -#line 2206 "MachineIndependent/glslang.y" + case 296: /* type_specifier_nonarray: U64VEC3 */ +#line 2216 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8327 "MachineIndependent/glslang_tab.cpp" +#line 8311 "MachineIndependent/glslang_tab.cpp" break; - case 296: /* type_specifier_nonarray: U64VEC4 */ -#line 2212 "MachineIndependent/glslang.y" + case 297: /* type_specifier_nonarray: U64VEC4 */ +#line 2222 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8338 "MachineIndependent/glslang_tab.cpp" +#line 8322 "MachineIndependent/glslang_tab.cpp" break; - case 297: /* type_specifier_nonarray: DMAT2 */ -#line 2218 "MachineIndependent/glslang.y" + case 298: /* type_specifier_nonarray: DMAT2 */ +#line 2228 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8347,11 +8331,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8351 "MachineIndependent/glslang_tab.cpp" +#line 8335 "MachineIndependent/glslang_tab.cpp" break; - case 298: /* type_specifier_nonarray: DMAT3 */ -#line 2226 "MachineIndependent/glslang.y" + case 299: /* type_specifier_nonarray: DMAT3 */ +#line 2236 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8360,11 +8344,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8364 "MachineIndependent/glslang_tab.cpp" +#line 8348 "MachineIndependent/glslang_tab.cpp" break; - case 299: /* type_specifier_nonarray: DMAT4 */ -#line 2234 "MachineIndependent/glslang.y" + case 300: /* type_specifier_nonarray: DMAT4 */ +#line 2244 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8373,11 +8357,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8377 "MachineIndependent/glslang_tab.cpp" +#line 8361 "MachineIndependent/glslang_tab.cpp" break; - case 300: /* type_specifier_nonarray: DMAT2X2 */ -#line 2242 "MachineIndependent/glslang.y" + case 301: /* type_specifier_nonarray: DMAT2X2 */ +#line 2252 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8386,11 +8370,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8390 "MachineIndependent/glslang_tab.cpp" +#line 8374 "MachineIndependent/glslang_tab.cpp" break; - case 301: /* type_specifier_nonarray: DMAT2X3 */ -#line 2250 "MachineIndependent/glslang.y" + case 302: /* type_specifier_nonarray: DMAT2X3 */ +#line 2260 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8399,11 +8383,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8403 "MachineIndependent/glslang_tab.cpp" +#line 8387 "MachineIndependent/glslang_tab.cpp" break; - case 302: /* type_specifier_nonarray: DMAT2X4 */ -#line 2258 "MachineIndependent/glslang.y" + case 303: /* type_specifier_nonarray: DMAT2X4 */ +#line 2268 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8412,11 +8396,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8416 "MachineIndependent/glslang_tab.cpp" +#line 8400 "MachineIndependent/glslang_tab.cpp" break; - case 303: /* type_specifier_nonarray: DMAT3X2 */ -#line 2266 "MachineIndependent/glslang.y" + case 304: /* type_specifier_nonarray: DMAT3X2 */ +#line 2276 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8425,11 +8409,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8429 "MachineIndependent/glslang_tab.cpp" +#line 8413 "MachineIndependent/glslang_tab.cpp" break; - case 304: /* type_specifier_nonarray: DMAT3X3 */ -#line 2274 "MachineIndependent/glslang.y" + case 305: /* type_specifier_nonarray: DMAT3X3 */ +#line 2284 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8438,11 +8422,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8442 "MachineIndependent/glslang_tab.cpp" +#line 8426 "MachineIndependent/glslang_tab.cpp" break; - case 305: /* type_specifier_nonarray: DMAT3X4 */ -#line 2282 "MachineIndependent/glslang.y" + case 306: /* type_specifier_nonarray: DMAT3X4 */ +#line 2292 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8451,11 +8435,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8455 "MachineIndependent/glslang_tab.cpp" +#line 8439 "MachineIndependent/glslang_tab.cpp" break; - case 306: /* type_specifier_nonarray: DMAT4X2 */ -#line 2290 "MachineIndependent/glslang.y" + case 307: /* type_specifier_nonarray: DMAT4X2 */ +#line 2300 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8464,11 +8448,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8468 "MachineIndependent/glslang_tab.cpp" +#line 8452 "MachineIndependent/glslang_tab.cpp" break; - case 307: /* type_specifier_nonarray: DMAT4X3 */ -#line 2298 "MachineIndependent/glslang.y" + case 308: /* type_specifier_nonarray: DMAT4X3 */ +#line 2308 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8477,11 +8461,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8481 "MachineIndependent/glslang_tab.cpp" +#line 8465 "MachineIndependent/glslang_tab.cpp" break; - case 308: /* type_specifier_nonarray: DMAT4X4 */ -#line 2306 "MachineIndependent/glslang.y" + case 309: /* type_specifier_nonarray: DMAT4X4 */ +#line 2316 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8490,2261 +8474,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8494 "MachineIndependent/glslang_tab.cpp" +#line 8478 "MachineIndependent/glslang_tab.cpp" break; - case 309: /* type_specifier_nonarray: F16MAT2 */ -#line 2314 "MachineIndependent/glslang.y" + case 310: /* type_specifier_nonarray: F16MAT2 */ +#line 2324 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8505 "MachineIndependent/glslang_tab.cpp" +#line 8489 "MachineIndependent/glslang_tab.cpp" break; - case 310: /* type_specifier_nonarray: F16MAT3 */ -#line 2320 "MachineIndependent/glslang.y" + case 311: /* type_specifier_nonarray: F16MAT3 */ +#line 2330 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8516 "MachineIndependent/glslang_tab.cpp" +#line 8500 "MachineIndependent/glslang_tab.cpp" break; - case 311: /* type_specifier_nonarray: F16MAT4 */ -#line 2326 "MachineIndependent/glslang.y" + case 312: /* type_specifier_nonarray: F16MAT4 */ +#line 2336 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8527 "MachineIndependent/glslang_tab.cpp" +#line 8511 "MachineIndependent/glslang_tab.cpp" break; - case 312: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2332 "MachineIndependent/glslang.y" + case 313: /* type_specifier_nonarray: F16MAT2X2 */ +#line 2342 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8538 "MachineIndependent/glslang_tab.cpp" +#line 8522 "MachineIndependent/glslang_tab.cpp" break; - case 313: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2338 "MachineIndependent/glslang.y" + case 314: /* type_specifier_nonarray: F16MAT2X3 */ +#line 2348 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8549 "MachineIndependent/glslang_tab.cpp" +#line 8533 "MachineIndependent/glslang_tab.cpp" break; - case 314: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2344 "MachineIndependent/glslang.y" + case 315: /* type_specifier_nonarray: F16MAT2X4 */ +#line 2354 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8560 "MachineIndependent/glslang_tab.cpp" +#line 8544 "MachineIndependent/glslang_tab.cpp" break; - case 315: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2350 "MachineIndependent/glslang.y" + case 316: /* type_specifier_nonarray: F16MAT3X2 */ +#line 2360 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8571 "MachineIndependent/glslang_tab.cpp" +#line 8555 "MachineIndependent/glslang_tab.cpp" break; - case 316: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2356 "MachineIndependent/glslang.y" + case 317: /* type_specifier_nonarray: F16MAT3X3 */ +#line 2366 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8582 "MachineIndependent/glslang_tab.cpp" +#line 8566 "MachineIndependent/glslang_tab.cpp" break; - case 317: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2362 "MachineIndependent/glslang.y" + case 318: /* type_specifier_nonarray: F16MAT3X4 */ +#line 2372 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8593 "MachineIndependent/glslang_tab.cpp" +#line 8577 "MachineIndependent/glslang_tab.cpp" break; - case 318: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2368 "MachineIndependent/glslang.y" + case 319: /* type_specifier_nonarray: F16MAT4X2 */ +#line 2378 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8604 "MachineIndependent/glslang_tab.cpp" +#line 8588 "MachineIndependent/glslang_tab.cpp" break; - case 319: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2374 "MachineIndependent/glslang.y" + case 320: /* type_specifier_nonarray: F16MAT4X3 */ +#line 2384 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8615 "MachineIndependent/glslang_tab.cpp" +#line 8599 "MachineIndependent/glslang_tab.cpp" break; - case 320: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2380 "MachineIndependent/glslang.y" + case 321: /* type_specifier_nonarray: F16MAT4X4 */ +#line 2390 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8626 "MachineIndependent/glslang_tab.cpp" +#line 8610 "MachineIndependent/glslang_tab.cpp" break; - case 321: /* type_specifier_nonarray: F32MAT2 */ -#line 2386 "MachineIndependent/glslang.y" + case 322: /* type_specifier_nonarray: F32MAT2 */ +#line 2396 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8637 "MachineIndependent/glslang_tab.cpp" +#line 8621 "MachineIndependent/glslang_tab.cpp" break; - case 322: /* type_specifier_nonarray: F32MAT3 */ -#line 2392 "MachineIndependent/glslang.y" + case 323: /* type_specifier_nonarray: F32MAT3 */ +#line 2402 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8648 "MachineIndependent/glslang_tab.cpp" +#line 8632 "MachineIndependent/glslang_tab.cpp" break; - case 323: /* type_specifier_nonarray: F32MAT4 */ -#line 2398 "MachineIndependent/glslang.y" + case 324: /* type_specifier_nonarray: F32MAT4 */ +#line 2408 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8659 "MachineIndependent/glslang_tab.cpp" +#line 8643 "MachineIndependent/glslang_tab.cpp" break; - case 324: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2404 "MachineIndependent/glslang.y" + case 325: /* type_specifier_nonarray: F32MAT2X2 */ +#line 2414 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8670 "MachineIndependent/glslang_tab.cpp" +#line 8654 "MachineIndependent/glslang_tab.cpp" break; - case 325: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2410 "MachineIndependent/glslang.y" + case 326: /* type_specifier_nonarray: F32MAT2X3 */ +#line 2420 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8681 "MachineIndependent/glslang_tab.cpp" +#line 8665 "MachineIndependent/glslang_tab.cpp" break; - case 326: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2416 "MachineIndependent/glslang.y" + case 327: /* type_specifier_nonarray: F32MAT2X4 */ +#line 2426 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8692 "MachineIndependent/glslang_tab.cpp" +#line 8676 "MachineIndependent/glslang_tab.cpp" break; - case 327: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2422 "MachineIndependent/glslang.y" + case 328: /* type_specifier_nonarray: F32MAT3X2 */ +#line 2432 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8703 "MachineIndependent/glslang_tab.cpp" +#line 8687 "MachineIndependent/glslang_tab.cpp" break; - case 328: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2428 "MachineIndependent/glslang.y" + case 329: /* type_specifier_nonarray: F32MAT3X3 */ +#line 2438 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8714 "MachineIndependent/glslang_tab.cpp" +#line 8698 "MachineIndependent/glslang_tab.cpp" break; - case 329: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2434 "MachineIndependent/glslang.y" + case 330: /* type_specifier_nonarray: F32MAT3X4 */ +#line 2444 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8725 "MachineIndependent/glslang_tab.cpp" +#line 8709 "MachineIndependent/glslang_tab.cpp" break; - case 330: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2440 "MachineIndependent/glslang.y" + case 331: /* type_specifier_nonarray: F32MAT4X2 */ +#line 2450 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8736 "MachineIndependent/glslang_tab.cpp" +#line 8720 "MachineIndependent/glslang_tab.cpp" break; - case 331: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2446 "MachineIndependent/glslang.y" + case 332: /* type_specifier_nonarray: F32MAT4X3 */ +#line 2456 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8747 "MachineIndependent/glslang_tab.cpp" +#line 8731 "MachineIndependent/glslang_tab.cpp" break; - case 332: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2452 "MachineIndependent/glslang.y" + case 333: /* type_specifier_nonarray: F32MAT4X4 */ +#line 2462 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8758 "MachineIndependent/glslang_tab.cpp" +#line 8742 "MachineIndependent/glslang_tab.cpp" break; - case 333: /* type_specifier_nonarray: F64MAT2 */ -#line 2458 "MachineIndependent/glslang.y" + case 334: /* type_specifier_nonarray: F64MAT2 */ +#line 2468 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8769 "MachineIndependent/glslang_tab.cpp" +#line 8753 "MachineIndependent/glslang_tab.cpp" break; - case 334: /* type_specifier_nonarray: F64MAT3 */ -#line 2464 "MachineIndependent/glslang.y" + case 335: /* type_specifier_nonarray: F64MAT3 */ +#line 2474 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8780 "MachineIndependent/glslang_tab.cpp" +#line 8764 "MachineIndependent/glslang_tab.cpp" break; - case 335: /* type_specifier_nonarray: F64MAT4 */ -#line 2470 "MachineIndependent/glslang.y" + case 336: /* type_specifier_nonarray: F64MAT4 */ +#line 2480 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8791 "MachineIndependent/glslang_tab.cpp" +#line 8775 "MachineIndependent/glslang_tab.cpp" break; - case 336: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2476 "MachineIndependent/glslang.y" + case 337: /* type_specifier_nonarray: F64MAT2X2 */ +#line 2486 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8802 "MachineIndependent/glslang_tab.cpp" +#line 8786 "MachineIndependent/glslang_tab.cpp" break; - case 337: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2482 "MachineIndependent/glslang.y" + case 338: /* type_specifier_nonarray: F64MAT2X3 */ +#line 2492 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8813 "MachineIndependent/glslang_tab.cpp" +#line 8797 "MachineIndependent/glslang_tab.cpp" break; - case 338: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2488 "MachineIndependent/glslang.y" + case 339: /* type_specifier_nonarray: F64MAT2X4 */ +#line 2498 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8824 "MachineIndependent/glslang_tab.cpp" +#line 8808 "MachineIndependent/glslang_tab.cpp" break; - case 339: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2494 "MachineIndependent/glslang.y" + case 340: /* type_specifier_nonarray: F64MAT3X2 */ +#line 2504 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8835 "MachineIndependent/glslang_tab.cpp" +#line 8819 "MachineIndependent/glslang_tab.cpp" break; - case 340: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2500 "MachineIndependent/glslang.y" + case 341: /* type_specifier_nonarray: F64MAT3X3 */ +#line 2510 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8846 "MachineIndependent/glslang_tab.cpp" +#line 8830 "MachineIndependent/glslang_tab.cpp" break; - case 341: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2506 "MachineIndependent/glslang.y" + case 342: /* type_specifier_nonarray: F64MAT3X4 */ +#line 2516 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8857 "MachineIndependent/glslang_tab.cpp" +#line 8841 "MachineIndependent/glslang_tab.cpp" break; - case 342: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2512 "MachineIndependent/glslang.y" + case 343: /* type_specifier_nonarray: F64MAT4X2 */ +#line 2522 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8868 "MachineIndependent/glslang_tab.cpp" +#line 8852 "MachineIndependent/glslang_tab.cpp" break; - case 343: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2518 "MachineIndependent/glslang.y" + case 344: /* type_specifier_nonarray: F64MAT4X3 */ +#line 2528 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8879 "MachineIndependent/glslang_tab.cpp" +#line 8863 "MachineIndependent/glslang_tab.cpp" break; - case 344: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2524 "MachineIndependent/glslang.y" + case 345: /* type_specifier_nonarray: F64MAT4X4 */ +#line 2534 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8890 "MachineIndependent/glslang_tab.cpp" +#line 8874 "MachineIndependent/glslang_tab.cpp" break; - case 345: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2530 "MachineIndependent/glslang.y" + case 346: /* type_specifier_nonarray: ACCSTRUCTNV */ +#line 2540 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8899 "MachineIndependent/glslang_tab.cpp" +#line 8883 "MachineIndependent/glslang_tab.cpp" break; - case 346: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2534 "MachineIndependent/glslang.y" + case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */ +#line 2544 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8908 "MachineIndependent/glslang_tab.cpp" +#line 8892 "MachineIndependent/glslang_tab.cpp" break; - case 347: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2538 "MachineIndependent/glslang.y" + case 348: /* type_specifier_nonarray: RAYQUERYEXT */ +#line 2548 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8917 "MachineIndependent/glslang_tab.cpp" +#line 8901 "MachineIndependent/glslang_tab.cpp" break; - case 348: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2542 "MachineIndependent/glslang.y" + case 349: /* type_specifier_nonarray: ATOMIC_UINT */ +#line 2552 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8927 "MachineIndependent/glslang_tab.cpp" +#line 8911 "MachineIndependent/glslang_tab.cpp" break; - case 349: /* type_specifier_nonarray: SAMPLER1D */ -#line 2547 "MachineIndependent/glslang.y" + case 350: /* type_specifier_nonarray: SAMPLER1D */ +#line 2557 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8937 "MachineIndependent/glslang_tab.cpp" +#line 8921 "MachineIndependent/glslang_tab.cpp" break; - case 350: /* type_specifier_nonarray: SAMPLER2D */ -#line 2553 "MachineIndependent/glslang.y" + case 351: /* type_specifier_nonarray: SAMPLER2D */ +#line 2563 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8947 "MachineIndependent/glslang_tab.cpp" +#line 8931 "MachineIndependent/glslang_tab.cpp" break; - case 351: /* type_specifier_nonarray: SAMPLER3D */ -#line 2558 "MachineIndependent/glslang.y" + case 352: /* type_specifier_nonarray: SAMPLER3D */ +#line 2568 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8957 "MachineIndependent/glslang_tab.cpp" +#line 8941 "MachineIndependent/glslang_tab.cpp" break; - case 352: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2563 "MachineIndependent/glslang.y" + case 353: /* type_specifier_nonarray: SAMPLERCUBE */ +#line 2573 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8967 "MachineIndependent/glslang_tab.cpp" +#line 8951 "MachineIndependent/glslang_tab.cpp" break; - case 353: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2568 "MachineIndependent/glslang.y" + case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */ +#line 2578 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8977 "MachineIndependent/glslang_tab.cpp" +#line 8961 "MachineIndependent/glslang_tab.cpp" break; - case 354: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2573 "MachineIndependent/glslang.y" + case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ +#line 2583 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8987 "MachineIndependent/glslang_tab.cpp" +#line 8971 "MachineIndependent/glslang_tab.cpp" break; - case 355: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2578 "MachineIndependent/glslang.y" + case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */ +#line 2588 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8997 "MachineIndependent/glslang_tab.cpp" +#line 8981 "MachineIndependent/glslang_tab.cpp" break; - case 356: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2583 "MachineIndependent/glslang.y" + case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ +#line 2593 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9007 "MachineIndependent/glslang_tab.cpp" +#line 8991 "MachineIndependent/glslang_tab.cpp" break; - case 357: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2589 "MachineIndependent/glslang.y" + case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */ +#line 2599 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9017 "MachineIndependent/glslang_tab.cpp" +#line 9001 "MachineIndependent/glslang_tab.cpp" break; - case 358: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2594 "MachineIndependent/glslang.y" + case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */ +#line 2604 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9027 "MachineIndependent/glslang_tab.cpp" +#line 9011 "MachineIndependent/glslang_tab.cpp" break; - case 359: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2599 "MachineIndependent/glslang.y" + case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ +#line 2609 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9037 "MachineIndependent/glslang_tab.cpp" +#line 9021 "MachineIndependent/glslang_tab.cpp" break; - case 360: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2604 "MachineIndependent/glslang.y" + case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ +#line 2614 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9047 "MachineIndependent/glslang_tab.cpp" +#line 9031 "MachineIndependent/glslang_tab.cpp" break; - case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2609 "MachineIndependent/glslang.y" + case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ +#line 2619 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9057 "MachineIndependent/glslang_tab.cpp" +#line 9041 "MachineIndependent/glslang_tab.cpp" break; - case 362: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2614 "MachineIndependent/glslang.y" + case 363: /* type_specifier_nonarray: F16SAMPLER1D */ +#line 2624 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9068 "MachineIndependent/glslang_tab.cpp" +#line 9052 "MachineIndependent/glslang_tab.cpp" break; - case 363: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2620 "MachineIndependent/glslang.y" + case 364: /* type_specifier_nonarray: F16SAMPLER2D */ +#line 2630 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9079 "MachineIndependent/glslang_tab.cpp" +#line 9063 "MachineIndependent/glslang_tab.cpp" break; - case 364: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2626 "MachineIndependent/glslang.y" + case 365: /* type_specifier_nonarray: F16SAMPLER3D */ +#line 2636 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9090 "MachineIndependent/glslang_tab.cpp" +#line 9074 "MachineIndependent/glslang_tab.cpp" break; - case 365: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2632 "MachineIndependent/glslang.y" + case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */ +#line 2642 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9101 "MachineIndependent/glslang_tab.cpp" +#line 9085 "MachineIndependent/glslang_tab.cpp" break; - case 366: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2638 "MachineIndependent/glslang.y" + case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ +#line 2648 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9112 "MachineIndependent/glslang_tab.cpp" +#line 9096 "MachineIndependent/glslang_tab.cpp" break; - case 367: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2644 "MachineIndependent/glslang.y" + case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ +#line 2654 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9123 "MachineIndependent/glslang_tab.cpp" +#line 9107 "MachineIndependent/glslang_tab.cpp" break; - case 368: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2650 "MachineIndependent/glslang.y" + case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ +#line 2660 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9134 "MachineIndependent/glslang_tab.cpp" +#line 9118 "MachineIndependent/glslang_tab.cpp" break; - case 369: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2656 "MachineIndependent/glslang.y" + case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ +#line 2666 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9145 "MachineIndependent/glslang_tab.cpp" +#line 9129 "MachineIndependent/glslang_tab.cpp" break; - case 370: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2662 "MachineIndependent/glslang.y" + case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ +#line 2672 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9156 "MachineIndependent/glslang_tab.cpp" +#line 9140 "MachineIndependent/glslang_tab.cpp" break; - case 371: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2668 "MachineIndependent/glslang.y" + case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ +#line 2678 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9167 "MachineIndependent/glslang_tab.cpp" +#line 9151 "MachineIndependent/glslang_tab.cpp" break; - case 372: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2674 "MachineIndependent/glslang.y" + case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ +#line 2684 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9178 "MachineIndependent/glslang_tab.cpp" +#line 9162 "MachineIndependent/glslang_tab.cpp" break; - case 373: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2680 "MachineIndependent/glslang.y" + case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ +#line 2690 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9189 "MachineIndependent/glslang_tab.cpp" +#line 9173 "MachineIndependent/glslang_tab.cpp" break; - case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2686 "MachineIndependent/glslang.y" + case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ +#line 2696 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9200 "MachineIndependent/glslang_tab.cpp" +#line 9184 "MachineIndependent/glslang_tab.cpp" break; - case 375: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2692 "MachineIndependent/glslang.y" + case 376: /* type_specifier_nonarray: ISAMPLER1D */ +#line 2702 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9210 "MachineIndependent/glslang_tab.cpp" +#line 9194 "MachineIndependent/glslang_tab.cpp" break; - case 376: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2698 "MachineIndependent/glslang.y" + case 377: /* type_specifier_nonarray: ISAMPLER2D */ +#line 2708 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9220 "MachineIndependent/glslang_tab.cpp" +#line 9204 "MachineIndependent/glslang_tab.cpp" break; - case 377: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2703 "MachineIndependent/glslang.y" + case 378: /* type_specifier_nonarray: ISAMPLER3D */ +#line 2713 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9230 "MachineIndependent/glslang_tab.cpp" +#line 9214 "MachineIndependent/glslang_tab.cpp" break; - case 378: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2708 "MachineIndependent/glslang.y" + case 379: /* type_specifier_nonarray: ISAMPLERCUBE */ +#line 2718 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9240 "MachineIndependent/glslang_tab.cpp" +#line 9224 "MachineIndependent/glslang_tab.cpp" break; - case 379: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2713 "MachineIndependent/glslang.y" + case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */ +#line 2723 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9250 "MachineIndependent/glslang_tab.cpp" +#line 9234 "MachineIndependent/glslang_tab.cpp" break; - case 380: /* type_specifier_nonarray: USAMPLER2D */ -#line 2718 "MachineIndependent/glslang.y" + case 381: /* type_specifier_nonarray: USAMPLER2D */ +#line 2728 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9260 "MachineIndependent/glslang_tab.cpp" +#line 9244 "MachineIndependent/glslang_tab.cpp" break; - case 381: /* type_specifier_nonarray: USAMPLER3D */ -#line 2723 "MachineIndependent/glslang.y" + case 382: /* type_specifier_nonarray: USAMPLER3D */ +#line 2733 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9270 "MachineIndependent/glslang_tab.cpp" +#line 9254 "MachineIndependent/glslang_tab.cpp" break; - case 382: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2728 "MachineIndependent/glslang.y" + case 383: /* type_specifier_nonarray: USAMPLERCUBE */ +#line 2738 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9280 "MachineIndependent/glslang_tab.cpp" +#line 9264 "MachineIndependent/glslang_tab.cpp" break; - case 383: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2734 "MachineIndependent/glslang.y" + case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */ +#line 2744 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9290 "MachineIndependent/glslang_tab.cpp" +#line 9274 "MachineIndependent/glslang_tab.cpp" break; - case 384: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2739 "MachineIndependent/glslang.y" + case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ +#line 2749 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9300 "MachineIndependent/glslang_tab.cpp" +#line 9284 "MachineIndependent/glslang_tab.cpp" break; - case 385: /* type_specifier_nonarray: USAMPLER1D */ -#line 2744 "MachineIndependent/glslang.y" + case 386: /* type_specifier_nonarray: USAMPLER1D */ +#line 2754 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9310 "MachineIndependent/glslang_tab.cpp" +#line 9294 "MachineIndependent/glslang_tab.cpp" break; - case 386: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2749 "MachineIndependent/glslang.y" + case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */ +#line 2759 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9320 "MachineIndependent/glslang_tab.cpp" +#line 9304 "MachineIndependent/glslang_tab.cpp" break; - case 387: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2754 "MachineIndependent/glslang.y" + case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ +#line 2764 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9330 "MachineIndependent/glslang_tab.cpp" +#line 9314 "MachineIndependent/glslang_tab.cpp" break; - case 388: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2759 "MachineIndependent/glslang.y" + case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */ +#line 2769 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9340 "MachineIndependent/glslang_tab.cpp" +#line 9324 "MachineIndependent/glslang_tab.cpp" break; - case 389: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2764 "MachineIndependent/glslang.y" + case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ +#line 2774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9350 "MachineIndependent/glslang_tab.cpp" +#line 9334 "MachineIndependent/glslang_tab.cpp" break; - case 390: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2769 "MachineIndependent/glslang.y" + case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ +#line 2779 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9360 "MachineIndependent/glslang_tab.cpp" +#line 9344 "MachineIndependent/glslang_tab.cpp" break; - case 391: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2775 "MachineIndependent/glslang.y" + case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */ +#line 2785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9370 "MachineIndependent/glslang_tab.cpp" +#line 9354 "MachineIndependent/glslang_tab.cpp" break; - case 392: /* type_specifier_nonarray: TEXTURE2D */ -#line 2780 "MachineIndependent/glslang.y" + case 393: /* type_specifier_nonarray: TEXTURE2D */ +#line 2790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9380 "MachineIndependent/glslang_tab.cpp" +#line 9364 "MachineIndependent/glslang_tab.cpp" break; - case 393: /* type_specifier_nonarray: TEXTURE3D */ -#line 2785 "MachineIndependent/glslang.y" + case 394: /* type_specifier_nonarray: TEXTURE3D */ +#line 2795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9390 "MachineIndependent/glslang_tab.cpp" +#line 9374 "MachineIndependent/glslang_tab.cpp" break; - case 394: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2790 "MachineIndependent/glslang.y" + case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */ +#line 2800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9400 "MachineIndependent/glslang_tab.cpp" +#line 9384 "MachineIndependent/glslang_tab.cpp" break; - case 395: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2795 "MachineIndependent/glslang.y" + case 396: /* type_specifier_nonarray: TEXTURECUBE */ +#line 2805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9410 "MachineIndependent/glslang_tab.cpp" +#line 9394 "MachineIndependent/glslang_tab.cpp" break; - case 396: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2800 "MachineIndependent/glslang.y" + case 397: /* type_specifier_nonarray: ITEXTURE2D */ +#line 2810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9420 "MachineIndependent/glslang_tab.cpp" +#line 9404 "MachineIndependent/glslang_tab.cpp" break; - case 397: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2805 "MachineIndependent/glslang.y" + case 398: /* type_specifier_nonarray: ITEXTURE3D */ +#line 2815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9430 "MachineIndependent/glslang_tab.cpp" +#line 9414 "MachineIndependent/glslang_tab.cpp" break; - case 398: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2810 "MachineIndependent/glslang.y" + case 399: /* type_specifier_nonarray: ITEXTURECUBE */ +#line 2820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9440 "MachineIndependent/glslang_tab.cpp" +#line 9424 "MachineIndependent/glslang_tab.cpp" break; - case 399: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2815 "MachineIndependent/glslang.y" + case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */ +#line 2825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9450 "MachineIndependent/glslang_tab.cpp" +#line 9434 "MachineIndependent/glslang_tab.cpp" break; - case 400: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2820 "MachineIndependent/glslang.y" + case 401: /* type_specifier_nonarray: UTEXTURE2D */ +#line 2830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9460 "MachineIndependent/glslang_tab.cpp" +#line 9444 "MachineIndependent/glslang_tab.cpp" break; - case 401: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2825 "MachineIndependent/glslang.y" + case 402: /* type_specifier_nonarray: UTEXTURE3D */ +#line 2835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9470 "MachineIndependent/glslang_tab.cpp" +#line 9454 "MachineIndependent/glslang_tab.cpp" break; - case 402: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2830 "MachineIndependent/glslang.y" + case 403: /* type_specifier_nonarray: UTEXTURECUBE */ +#line 2840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9480 "MachineIndependent/glslang_tab.cpp" +#line 9464 "MachineIndependent/glslang_tab.cpp" break; - case 403: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2835 "MachineIndependent/glslang.y" + case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */ +#line 2845 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9490 "MachineIndependent/glslang_tab.cpp" +#line 9474 "MachineIndependent/glslang_tab.cpp" break; - case 404: /* type_specifier_nonarray: SAMPLER */ -#line 2840 "MachineIndependent/glslang.y" + case 405: /* type_specifier_nonarray: SAMPLER */ +#line 2850 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9500 "MachineIndependent/glslang_tab.cpp" +#line 9484 "MachineIndependent/glslang_tab.cpp" break; - case 405: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2845 "MachineIndependent/glslang.y" + case 406: /* type_specifier_nonarray: SAMPLERSHADOW */ +#line 2855 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9510 "MachineIndependent/glslang_tab.cpp" +#line 9494 "MachineIndependent/glslang_tab.cpp" break; - case 406: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2851 "MachineIndependent/glslang.y" + case 407: /* type_specifier_nonarray: SAMPLER2DRECT */ +#line 2861 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9520 "MachineIndependent/glslang_tab.cpp" +#line 9504 "MachineIndependent/glslang_tab.cpp" break; - case 407: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2856 "MachineIndependent/glslang.y" + case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ +#line 2866 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9530 "MachineIndependent/glslang_tab.cpp" +#line 9514 "MachineIndependent/glslang_tab.cpp" break; - case 408: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2861 "MachineIndependent/glslang.y" + case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */ +#line 2871 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9541 "MachineIndependent/glslang_tab.cpp" +#line 9525 "MachineIndependent/glslang_tab.cpp" break; - case 409: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2867 "MachineIndependent/glslang.y" + case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ +#line 2877 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9552 "MachineIndependent/glslang_tab.cpp" +#line 9536 "MachineIndependent/glslang_tab.cpp" break; - case 410: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2873 "MachineIndependent/glslang.y" + case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */ +#line 2883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9562 "MachineIndependent/glslang_tab.cpp" +#line 9546 "MachineIndependent/glslang_tab.cpp" break; - case 411: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2878 "MachineIndependent/glslang.y" + case 412: /* type_specifier_nonarray: USAMPLER2DRECT */ +#line 2888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9572 "MachineIndependent/glslang_tab.cpp" +#line 9556 "MachineIndependent/glslang_tab.cpp" break; - case 412: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2883 "MachineIndependent/glslang.y" + case 413: /* type_specifier_nonarray: SAMPLERBUFFER */ +#line 2893 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9582 "MachineIndependent/glslang_tab.cpp" +#line 9566 "MachineIndependent/glslang_tab.cpp" break; - case 413: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2888 "MachineIndependent/glslang.y" + case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */ +#line 2898 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9593 "MachineIndependent/glslang_tab.cpp" +#line 9577 "MachineIndependent/glslang_tab.cpp" break; - case 414: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2894 "MachineIndependent/glslang.y" + case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */ +#line 2904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9603 "MachineIndependent/glslang_tab.cpp" +#line 9587 "MachineIndependent/glslang_tab.cpp" break; - case 415: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2899 "MachineIndependent/glslang.y" + case 416: /* type_specifier_nonarray: USAMPLERBUFFER */ +#line 2909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9613 "MachineIndependent/glslang_tab.cpp" +#line 9597 "MachineIndependent/glslang_tab.cpp" break; - case 416: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2904 "MachineIndependent/glslang.y" + case 417: /* type_specifier_nonarray: SAMPLER2DMS */ +#line 2914 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9623 "MachineIndependent/glslang_tab.cpp" +#line 9607 "MachineIndependent/glslang_tab.cpp" break; - case 417: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2909 "MachineIndependent/glslang.y" + case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */ +#line 2919 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9634 "MachineIndependent/glslang_tab.cpp" +#line 9618 "MachineIndependent/glslang_tab.cpp" break; - case 418: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2915 "MachineIndependent/glslang.y" + case 419: /* type_specifier_nonarray: ISAMPLER2DMS */ +#line 2925 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9644 "MachineIndependent/glslang_tab.cpp" +#line 9628 "MachineIndependent/glslang_tab.cpp" break; - case 419: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2920 "MachineIndependent/glslang.y" + case 420: /* type_specifier_nonarray: USAMPLER2DMS */ +#line 2930 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9654 "MachineIndependent/glslang_tab.cpp" +#line 9638 "MachineIndependent/glslang_tab.cpp" break; - case 420: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2925 "MachineIndependent/glslang.y" + case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ +#line 2935 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9664 "MachineIndependent/glslang_tab.cpp" +#line 9648 "MachineIndependent/glslang_tab.cpp" break; - case 421: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2930 "MachineIndependent/glslang.y" + case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ +#line 2940 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9675 "MachineIndependent/glslang_tab.cpp" +#line 9659 "MachineIndependent/glslang_tab.cpp" break; - case 422: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2936 "MachineIndependent/glslang.y" + case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ +#line 2946 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9685 "MachineIndependent/glslang_tab.cpp" +#line 9669 "MachineIndependent/glslang_tab.cpp" break; - case 423: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2941 "MachineIndependent/glslang.y" + case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ +#line 2951 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9695 "MachineIndependent/glslang_tab.cpp" +#line 9679 "MachineIndependent/glslang_tab.cpp" break; - case 424: /* type_specifier_nonarray: TEXTURE1D */ -#line 2946 "MachineIndependent/glslang.y" + case 425: /* type_specifier_nonarray: TEXTURE1D */ +#line 2956 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9705 "MachineIndependent/glslang_tab.cpp" +#line 9689 "MachineIndependent/glslang_tab.cpp" break; - case 425: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2951 "MachineIndependent/glslang.y" + case 426: /* type_specifier_nonarray: F16TEXTURE1D */ +#line 2961 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9716 "MachineIndependent/glslang_tab.cpp" +#line 9700 "MachineIndependent/glslang_tab.cpp" break; - case 426: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2957 "MachineIndependent/glslang.y" + case 427: /* type_specifier_nonarray: F16TEXTURE2D */ +#line 2967 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9727 "MachineIndependent/glslang_tab.cpp" +#line 9711 "MachineIndependent/glslang_tab.cpp" break; - case 427: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2963 "MachineIndependent/glslang.y" + case 428: /* type_specifier_nonarray: F16TEXTURE3D */ +#line 2973 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9738 "MachineIndependent/glslang_tab.cpp" +#line 9722 "MachineIndependent/glslang_tab.cpp" break; - case 428: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2969 "MachineIndependent/glslang.y" + case 429: /* type_specifier_nonarray: F16TEXTURECUBE */ +#line 2979 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9749 "MachineIndependent/glslang_tab.cpp" +#line 9733 "MachineIndependent/glslang_tab.cpp" break; - case 429: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2975 "MachineIndependent/glslang.y" + case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */ +#line 2985 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9759 "MachineIndependent/glslang_tab.cpp" +#line 9743 "MachineIndependent/glslang_tab.cpp" break; - case 430: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2980 "MachineIndependent/glslang.y" + case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ +#line 2990 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9770 "MachineIndependent/glslang_tab.cpp" +#line 9754 "MachineIndependent/glslang_tab.cpp" break; - case 431: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2986 "MachineIndependent/glslang.y" + case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ +#line 2996 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9781 "MachineIndependent/glslang_tab.cpp" +#line 9765 "MachineIndependent/glslang_tab.cpp" break; - case 432: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2992 "MachineIndependent/glslang.y" + case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ +#line 3002 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9792 "MachineIndependent/glslang_tab.cpp" +#line 9776 "MachineIndependent/glslang_tab.cpp" break; - case 433: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2998 "MachineIndependent/glslang.y" + case 434: /* type_specifier_nonarray: ITEXTURE1D */ +#line 3008 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9802 "MachineIndependent/glslang_tab.cpp" +#line 9786 "MachineIndependent/glslang_tab.cpp" break; - case 434: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 3003 "MachineIndependent/glslang.y" + case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */ +#line 3013 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9812 "MachineIndependent/glslang_tab.cpp" +#line 9796 "MachineIndependent/glslang_tab.cpp" break; - case 435: /* type_specifier_nonarray: UTEXTURE1D */ -#line 3008 "MachineIndependent/glslang.y" + case 436: /* type_specifier_nonarray: UTEXTURE1D */ +#line 3018 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9822 "MachineIndependent/glslang_tab.cpp" +#line 9806 "MachineIndependent/glslang_tab.cpp" break; - case 436: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 3013 "MachineIndependent/glslang.y" + case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */ +#line 3023 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9832 "MachineIndependent/glslang_tab.cpp" +#line 9816 "MachineIndependent/glslang_tab.cpp" break; - case 437: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3018 "MachineIndependent/glslang.y" + case 438: /* type_specifier_nonarray: TEXTURE2DRECT */ +#line 3028 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9842 "MachineIndependent/glslang_tab.cpp" +#line 9826 "MachineIndependent/glslang_tab.cpp" break; - case 438: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3023 "MachineIndependent/glslang.y" + case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */ +#line 3033 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9853 "MachineIndependent/glslang_tab.cpp" +#line 9837 "MachineIndependent/glslang_tab.cpp" break; - case 439: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3029 "MachineIndependent/glslang.y" + case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */ +#line 3039 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9863 "MachineIndependent/glslang_tab.cpp" +#line 9847 "MachineIndependent/glslang_tab.cpp" break; - case 440: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3034 "MachineIndependent/glslang.y" + case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */ +#line 3044 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9873 "MachineIndependent/glslang_tab.cpp" +#line 9857 "MachineIndependent/glslang_tab.cpp" break; - case 441: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3039 "MachineIndependent/glslang.y" + case 442: /* type_specifier_nonarray: TEXTUREBUFFER */ +#line 3049 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9883 "MachineIndependent/glslang_tab.cpp" +#line 9867 "MachineIndependent/glslang_tab.cpp" break; - case 442: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3044 "MachineIndependent/glslang.y" + case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */ +#line 3054 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9894 "MachineIndependent/glslang_tab.cpp" +#line 9878 "MachineIndependent/glslang_tab.cpp" break; - case 443: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3050 "MachineIndependent/glslang.y" + case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */ +#line 3060 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9904 "MachineIndependent/glslang_tab.cpp" +#line 9888 "MachineIndependent/glslang_tab.cpp" break; - case 444: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3055 "MachineIndependent/glslang.y" + case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */ +#line 3065 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9914 "MachineIndependent/glslang_tab.cpp" +#line 9898 "MachineIndependent/glslang_tab.cpp" break; - case 445: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3060 "MachineIndependent/glslang.y" + case 446: /* type_specifier_nonarray: TEXTURE2DMS */ +#line 3070 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9924 "MachineIndependent/glslang_tab.cpp" +#line 9908 "MachineIndependent/glslang_tab.cpp" break; - case 446: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3065 "MachineIndependent/glslang.y" + case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */ +#line 3075 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9935 "MachineIndependent/glslang_tab.cpp" +#line 9919 "MachineIndependent/glslang_tab.cpp" break; - case 447: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3071 "MachineIndependent/glslang.y" + case 448: /* type_specifier_nonarray: ITEXTURE2DMS */ +#line 3081 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9945 "MachineIndependent/glslang_tab.cpp" +#line 9929 "MachineIndependent/glslang_tab.cpp" break; - case 448: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3076 "MachineIndependent/glslang.y" + case 449: /* type_specifier_nonarray: UTEXTURE2DMS */ +#line 3086 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9955 "MachineIndependent/glslang_tab.cpp" +#line 9939 "MachineIndependent/glslang_tab.cpp" break; - case 449: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3081 "MachineIndependent/glslang.y" + case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ +#line 3091 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9965 "MachineIndependent/glslang_tab.cpp" +#line 9949 "MachineIndependent/glslang_tab.cpp" break; - case 450: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3086 "MachineIndependent/glslang.y" + case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ +#line 3096 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9976 "MachineIndependent/glslang_tab.cpp" +#line 9960 "MachineIndependent/glslang_tab.cpp" break; - case 451: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3092 "MachineIndependent/glslang.y" + case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ +#line 3102 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9986 "MachineIndependent/glslang_tab.cpp" +#line 9970 "MachineIndependent/glslang_tab.cpp" break; - case 452: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3097 "MachineIndependent/glslang.y" + case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ +#line 3107 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9996 "MachineIndependent/glslang_tab.cpp" +#line 9980 "MachineIndependent/glslang_tab.cpp" break; - case 453: /* type_specifier_nonarray: IMAGE1D */ -#line 3102 "MachineIndependent/glslang.y" + case 454: /* type_specifier_nonarray: IMAGE1D */ +#line 3112 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10006 "MachineIndependent/glslang_tab.cpp" +#line 9990 "MachineIndependent/glslang_tab.cpp" break; - case 454: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3107 "MachineIndependent/glslang.y" + case 455: /* type_specifier_nonarray: F16IMAGE1D */ +#line 3117 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10017 "MachineIndependent/glslang_tab.cpp" +#line 10001 "MachineIndependent/glslang_tab.cpp" break; - case 455: /* type_specifier_nonarray: IIMAGE1D */ -#line 3113 "MachineIndependent/glslang.y" + case 456: /* type_specifier_nonarray: IIMAGE1D */ +#line 3123 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10027 "MachineIndependent/glslang_tab.cpp" +#line 10011 "MachineIndependent/glslang_tab.cpp" break; - case 456: /* type_specifier_nonarray: UIMAGE1D */ -#line 3118 "MachineIndependent/glslang.y" + case 457: /* type_specifier_nonarray: UIMAGE1D */ +#line 3128 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10037 "MachineIndependent/glslang_tab.cpp" +#line 10021 "MachineIndependent/glslang_tab.cpp" break; - case 457: /* type_specifier_nonarray: IMAGE2D */ -#line 3123 "MachineIndependent/glslang.y" + case 458: /* type_specifier_nonarray: IMAGE2D */ +#line 3133 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10047 "MachineIndependent/glslang_tab.cpp" +#line 10031 "MachineIndependent/glslang_tab.cpp" break; - case 458: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3128 "MachineIndependent/glslang.y" + case 459: /* type_specifier_nonarray: F16IMAGE2D */ +#line 3138 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10058 "MachineIndependent/glslang_tab.cpp" +#line 10042 "MachineIndependent/glslang_tab.cpp" break; - case 459: /* type_specifier_nonarray: IIMAGE2D */ -#line 3134 "MachineIndependent/glslang.y" + case 460: /* type_specifier_nonarray: IIMAGE2D */ +#line 3144 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10068 "MachineIndependent/glslang_tab.cpp" +#line 10052 "MachineIndependent/glslang_tab.cpp" break; - case 460: /* type_specifier_nonarray: UIMAGE2D */ -#line 3139 "MachineIndependent/glslang.y" + case 461: /* type_specifier_nonarray: UIMAGE2D */ +#line 3149 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10078 "MachineIndependent/glslang_tab.cpp" +#line 10062 "MachineIndependent/glslang_tab.cpp" break; - case 461: /* type_specifier_nonarray: IMAGE3D */ -#line 3144 "MachineIndependent/glslang.y" + case 462: /* type_specifier_nonarray: IMAGE3D */ +#line 3154 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10088 "MachineIndependent/glslang_tab.cpp" +#line 10072 "MachineIndependent/glslang_tab.cpp" break; - case 462: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3149 "MachineIndependent/glslang.y" + case 463: /* type_specifier_nonarray: F16IMAGE3D */ +#line 3159 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10099 "MachineIndependent/glslang_tab.cpp" +#line 10083 "MachineIndependent/glslang_tab.cpp" break; - case 463: /* type_specifier_nonarray: IIMAGE3D */ -#line 3155 "MachineIndependent/glslang.y" + case 464: /* type_specifier_nonarray: IIMAGE3D */ +#line 3165 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10109 "MachineIndependent/glslang_tab.cpp" +#line 10093 "MachineIndependent/glslang_tab.cpp" break; - case 464: /* type_specifier_nonarray: UIMAGE3D */ -#line 3160 "MachineIndependent/glslang.y" + case 465: /* type_specifier_nonarray: UIMAGE3D */ +#line 3170 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10119 "MachineIndependent/glslang_tab.cpp" +#line 10103 "MachineIndependent/glslang_tab.cpp" break; - case 465: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3165 "MachineIndependent/glslang.y" + case 466: /* type_specifier_nonarray: IMAGE2DRECT */ +#line 3175 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10129 "MachineIndependent/glslang_tab.cpp" +#line 10113 "MachineIndependent/glslang_tab.cpp" break; - case 466: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3170 "MachineIndependent/glslang.y" + case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */ +#line 3180 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10140 "MachineIndependent/glslang_tab.cpp" +#line 10124 "MachineIndependent/glslang_tab.cpp" break; - case 467: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3176 "MachineIndependent/glslang.y" + case 468: /* type_specifier_nonarray: IIMAGE2DRECT */ +#line 3186 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10150 "MachineIndependent/glslang_tab.cpp" +#line 10134 "MachineIndependent/glslang_tab.cpp" break; - case 468: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3181 "MachineIndependent/glslang.y" + case 469: /* type_specifier_nonarray: UIMAGE2DRECT */ +#line 3191 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10160 "MachineIndependent/glslang_tab.cpp" +#line 10144 "MachineIndependent/glslang_tab.cpp" break; - case 469: /* type_specifier_nonarray: IMAGECUBE */ -#line 3186 "MachineIndependent/glslang.y" + case 470: /* type_specifier_nonarray: IMAGECUBE */ +#line 3196 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10170 "MachineIndependent/glslang_tab.cpp" +#line 10154 "MachineIndependent/glslang_tab.cpp" break; - case 470: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3191 "MachineIndependent/glslang.y" + case 471: /* type_specifier_nonarray: F16IMAGECUBE */ +#line 3201 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10181 "MachineIndependent/glslang_tab.cpp" +#line 10165 "MachineIndependent/glslang_tab.cpp" break; - case 471: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3197 "MachineIndependent/glslang.y" + case 472: /* type_specifier_nonarray: IIMAGECUBE */ +#line 3207 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10191 "MachineIndependent/glslang_tab.cpp" +#line 10175 "MachineIndependent/glslang_tab.cpp" break; - case 472: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3202 "MachineIndependent/glslang.y" + case 473: /* type_specifier_nonarray: UIMAGECUBE */ +#line 3212 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10201 "MachineIndependent/glslang_tab.cpp" +#line 10185 "MachineIndependent/glslang_tab.cpp" break; - case 473: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3207 "MachineIndependent/glslang.y" + case 474: /* type_specifier_nonarray: IMAGEBUFFER */ +#line 3217 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10211 "MachineIndependent/glslang_tab.cpp" +#line 10195 "MachineIndependent/glslang_tab.cpp" break; - case 474: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3212 "MachineIndependent/glslang.y" + case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */ +#line 3222 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10222 "MachineIndependent/glslang_tab.cpp" +#line 10206 "MachineIndependent/glslang_tab.cpp" break; - case 475: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3218 "MachineIndependent/glslang.y" + case 476: /* type_specifier_nonarray: IIMAGEBUFFER */ +#line 3228 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10232 "MachineIndependent/glslang_tab.cpp" +#line 10216 "MachineIndependent/glslang_tab.cpp" break; - case 476: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3223 "MachineIndependent/glslang.y" + case 477: /* type_specifier_nonarray: UIMAGEBUFFER */ +#line 3233 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10242 "MachineIndependent/glslang_tab.cpp" +#line 10226 "MachineIndependent/glslang_tab.cpp" break; - case 477: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3228 "MachineIndependent/glslang.y" + case 478: /* type_specifier_nonarray: IMAGE1DARRAY */ +#line 3238 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10252 "MachineIndependent/glslang_tab.cpp" +#line 10236 "MachineIndependent/glslang_tab.cpp" break; - case 478: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3233 "MachineIndependent/glslang.y" + case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */ +#line 3243 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10263 "MachineIndependent/glslang_tab.cpp" +#line 10247 "MachineIndependent/glslang_tab.cpp" break; - case 479: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3239 "MachineIndependent/glslang.y" + case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */ +#line 3249 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10273 "MachineIndependent/glslang_tab.cpp" +#line 10257 "MachineIndependent/glslang_tab.cpp" break; - case 480: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3244 "MachineIndependent/glslang.y" + case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */ +#line 3254 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10283 "MachineIndependent/glslang_tab.cpp" +#line 10267 "MachineIndependent/glslang_tab.cpp" break; - case 481: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3249 "MachineIndependent/glslang.y" + case 482: /* type_specifier_nonarray: IMAGE2DARRAY */ +#line 3259 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10293 "MachineIndependent/glslang_tab.cpp" +#line 10277 "MachineIndependent/glslang_tab.cpp" break; - case 482: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3254 "MachineIndependent/glslang.y" + case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */ +#line 3264 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10304 "MachineIndependent/glslang_tab.cpp" +#line 10288 "MachineIndependent/glslang_tab.cpp" break; - case 483: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3260 "MachineIndependent/glslang.y" + case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */ +#line 3270 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10314 "MachineIndependent/glslang_tab.cpp" +#line 10298 "MachineIndependent/glslang_tab.cpp" break; - case 484: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3265 "MachineIndependent/glslang.y" + case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */ +#line 3275 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10324 "MachineIndependent/glslang_tab.cpp" +#line 10308 "MachineIndependent/glslang_tab.cpp" break; - case 485: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3270 "MachineIndependent/glslang.y" + case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */ +#line 3280 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10334 "MachineIndependent/glslang_tab.cpp" +#line 10318 "MachineIndependent/glslang_tab.cpp" break; - case 486: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3275 "MachineIndependent/glslang.y" + case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ +#line 3285 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10345 "MachineIndependent/glslang_tab.cpp" +#line 10329 "MachineIndependent/glslang_tab.cpp" break; - case 487: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3281 "MachineIndependent/glslang.y" + case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */ +#line 3291 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10355 "MachineIndependent/glslang_tab.cpp" +#line 10339 "MachineIndependent/glslang_tab.cpp" break; - case 488: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3286 "MachineIndependent/glslang.y" + case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */ +#line 3296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10365 "MachineIndependent/glslang_tab.cpp" +#line 10349 "MachineIndependent/glslang_tab.cpp" break; - case 489: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3291 "MachineIndependent/glslang.y" + case 490: /* type_specifier_nonarray: IMAGE2DMS */ +#line 3301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10375 "MachineIndependent/glslang_tab.cpp" +#line 10359 "MachineIndependent/glslang_tab.cpp" break; - case 490: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3296 "MachineIndependent/glslang.y" + case 491: /* type_specifier_nonarray: F16IMAGE2DMS */ +#line 3306 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10386 "MachineIndependent/glslang_tab.cpp" +#line 10370 "MachineIndependent/glslang_tab.cpp" break; - case 491: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3302 "MachineIndependent/glslang.y" + case 492: /* type_specifier_nonarray: IIMAGE2DMS */ +#line 3312 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10396 "MachineIndependent/glslang_tab.cpp" +#line 10380 "MachineIndependent/glslang_tab.cpp" break; - case 492: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3307 "MachineIndependent/glslang.y" + case 493: /* type_specifier_nonarray: UIMAGE2DMS */ +#line 3317 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10406 "MachineIndependent/glslang_tab.cpp" +#line 10390 "MachineIndependent/glslang_tab.cpp" break; - case 493: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3312 "MachineIndependent/glslang.y" + case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */ +#line 3322 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10416 "MachineIndependent/glslang_tab.cpp" +#line 10400 "MachineIndependent/glslang_tab.cpp" break; - case 494: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3317 "MachineIndependent/glslang.y" + case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ +#line 3327 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10427 "MachineIndependent/glslang_tab.cpp" +#line 10411 "MachineIndependent/glslang_tab.cpp" break; - case 495: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3323 "MachineIndependent/glslang.y" + case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ +#line 3333 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10437 "MachineIndependent/glslang_tab.cpp" +#line 10421 "MachineIndependent/glslang_tab.cpp" break; - case 496: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3328 "MachineIndependent/glslang.y" + case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ +#line 3338 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10447 "MachineIndependent/glslang_tab.cpp" +#line 10431 "MachineIndependent/glslang_tab.cpp" break; - case 497: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3333 "MachineIndependent/glslang.y" + case 498: /* type_specifier_nonarray: I64IMAGE1D */ +#line 3343 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10457 "MachineIndependent/glslang_tab.cpp" +#line 10441 "MachineIndependent/glslang_tab.cpp" break; - case 498: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3338 "MachineIndependent/glslang.y" + case 499: /* type_specifier_nonarray: U64IMAGE1D */ +#line 3348 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10467 "MachineIndependent/glslang_tab.cpp" +#line 10451 "MachineIndependent/glslang_tab.cpp" break; - case 499: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3343 "MachineIndependent/glslang.y" + case 500: /* type_specifier_nonarray: I64IMAGE2D */ +#line 3353 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10477 "MachineIndependent/glslang_tab.cpp" +#line 10461 "MachineIndependent/glslang_tab.cpp" break; - case 500: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3348 "MachineIndependent/glslang.y" + case 501: /* type_specifier_nonarray: U64IMAGE2D */ +#line 3358 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10487 "MachineIndependent/glslang_tab.cpp" +#line 10471 "MachineIndependent/glslang_tab.cpp" break; - case 501: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3353 "MachineIndependent/glslang.y" + case 502: /* type_specifier_nonarray: I64IMAGE3D */ +#line 3363 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10497 "MachineIndependent/glslang_tab.cpp" +#line 10481 "MachineIndependent/glslang_tab.cpp" break; - case 502: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3358 "MachineIndependent/glslang.y" + case 503: /* type_specifier_nonarray: U64IMAGE3D */ +#line 3368 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10507 "MachineIndependent/glslang_tab.cpp" +#line 10491 "MachineIndependent/glslang_tab.cpp" break; - case 503: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3363 "MachineIndependent/glslang.y" + case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */ +#line 3373 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10517 "MachineIndependent/glslang_tab.cpp" +#line 10501 "MachineIndependent/glslang_tab.cpp" break; - case 504: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3368 "MachineIndependent/glslang.y" + case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */ +#line 3378 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10527 "MachineIndependent/glslang_tab.cpp" +#line 10511 "MachineIndependent/glslang_tab.cpp" break; - case 505: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3373 "MachineIndependent/glslang.y" + case 506: /* type_specifier_nonarray: I64IMAGECUBE */ +#line 3383 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10537 "MachineIndependent/glslang_tab.cpp" +#line 10521 "MachineIndependent/glslang_tab.cpp" break; - case 506: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3378 "MachineIndependent/glslang.y" + case 507: /* type_specifier_nonarray: U64IMAGECUBE */ +#line 3388 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10547 "MachineIndependent/glslang_tab.cpp" +#line 10531 "MachineIndependent/glslang_tab.cpp" break; - case 507: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3383 "MachineIndependent/glslang.y" + case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */ +#line 3393 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10557 "MachineIndependent/glslang_tab.cpp" +#line 10541 "MachineIndependent/glslang_tab.cpp" break; - case 508: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3388 "MachineIndependent/glslang.y" + case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */ +#line 3398 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10567 "MachineIndependent/glslang_tab.cpp" +#line 10551 "MachineIndependent/glslang_tab.cpp" break; - case 509: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3393 "MachineIndependent/glslang.y" + case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */ +#line 3403 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10577 "MachineIndependent/glslang_tab.cpp" +#line 10561 "MachineIndependent/glslang_tab.cpp" break; - case 510: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3398 "MachineIndependent/glslang.y" + case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */ +#line 3408 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10587 "MachineIndependent/glslang_tab.cpp" +#line 10571 "MachineIndependent/glslang_tab.cpp" break; - case 511: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3403 "MachineIndependent/glslang.y" + case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */ +#line 3413 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10597 "MachineIndependent/glslang_tab.cpp" +#line 10581 "MachineIndependent/glslang_tab.cpp" break; - case 512: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3408 "MachineIndependent/glslang.y" + case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */ +#line 3418 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10607 "MachineIndependent/glslang_tab.cpp" +#line 10591 "MachineIndependent/glslang_tab.cpp" break; - case 513: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3413 "MachineIndependent/glslang.y" + case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ +#line 3423 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10617 "MachineIndependent/glslang_tab.cpp" +#line 10601 "MachineIndependent/glslang_tab.cpp" break; - case 514: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3418 "MachineIndependent/glslang.y" + case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ +#line 3428 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10627 "MachineIndependent/glslang_tab.cpp" +#line 10611 "MachineIndependent/glslang_tab.cpp" break; - case 515: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3423 "MachineIndependent/glslang.y" + case 516: /* type_specifier_nonarray: I64IMAGE2DMS */ +#line 3433 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10637 "MachineIndependent/glslang_tab.cpp" +#line 10621 "MachineIndependent/glslang_tab.cpp" break; - case 516: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3428 "MachineIndependent/glslang.y" + case 517: /* type_specifier_nonarray: U64IMAGE2DMS */ +#line 3438 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10647 "MachineIndependent/glslang_tab.cpp" +#line 10631 "MachineIndependent/glslang_tab.cpp" break; - case 517: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3433 "MachineIndependent/glslang.y" + case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ +#line 3443 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10657 "MachineIndependent/glslang_tab.cpp" +#line 10641 "MachineIndependent/glslang_tab.cpp" break; - case 518: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3438 "MachineIndependent/glslang.y" + case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ +#line 3448 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10667 "MachineIndependent/glslang_tab.cpp" +#line 10651 "MachineIndependent/glslang_tab.cpp" break; - case 519: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3443 "MachineIndependent/glslang.y" + case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ +#line 3453 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10678 "MachineIndependent/glslang_tab.cpp" +#line 10662 "MachineIndependent/glslang_tab.cpp" break; - case 520: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3449 "MachineIndependent/glslang.y" + case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ +#line 3459 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10689 "MachineIndependent/glslang_tab.cpp" +#line 10673 "MachineIndependent/glslang_tab.cpp" break; - case 521: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3455 "MachineIndependent/glslang.y" + case 522: /* type_specifier_nonarray: ATTACHMENTEXT */ +#line 3465 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10700 "MachineIndependent/glslang_tab.cpp" +#line 10684 "MachineIndependent/glslang_tab.cpp" break; - case 522: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3461 "MachineIndependent/glslang.y" + case 523: /* type_specifier_nonarray: IATTACHMENTEXT */ +#line 3471 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10711 "MachineIndependent/glslang_tab.cpp" +#line 10695 "MachineIndependent/glslang_tab.cpp" break; - case 523: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3467 "MachineIndependent/glslang.y" + case 524: /* type_specifier_nonarray: UATTACHMENTEXT */ +#line 3477 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10722 "MachineIndependent/glslang_tab.cpp" +#line 10706 "MachineIndependent/glslang_tab.cpp" break; - case 524: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3473 "MachineIndependent/glslang.y" + case 525: /* type_specifier_nonarray: SUBPASSINPUT */ +#line 3483 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10733 "MachineIndependent/glslang_tab.cpp" +#line 10717 "MachineIndependent/glslang_tab.cpp" break; - case 525: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3479 "MachineIndependent/glslang.y" + case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */ +#line 3489 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10744 "MachineIndependent/glslang_tab.cpp" +#line 10728 "MachineIndependent/glslang_tab.cpp" break; - case 526: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3485 "MachineIndependent/glslang.y" + case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */ +#line 3495 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10752,11 +10736,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10756 "MachineIndependent/glslang_tab.cpp" +#line 10740 "MachineIndependent/glslang_tab.cpp" break; - case 527: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3492 "MachineIndependent/glslang.y" + case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ +#line 3502 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10764,116 +10748,131 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10768 "MachineIndependent/glslang_tab.cpp" +#line 10752 "MachineIndependent/glslang_tab.cpp" break; - case 528: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3499 "MachineIndependent/glslang.y" + case 529: /* type_specifier_nonarray: ISUBPASSINPUT */ +#line 3509 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10779 "MachineIndependent/glslang_tab.cpp" +#line 10763 "MachineIndependent/glslang_tab.cpp" break; - case 529: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3505 "MachineIndependent/glslang.y" + case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */ +#line 3515 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10790 "MachineIndependent/glslang_tab.cpp" +#line 10774 "MachineIndependent/glslang_tab.cpp" break; - case 530: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3511 "MachineIndependent/glslang.y" + case 531: /* type_specifier_nonarray: USUBPASSINPUT */ +#line 3521 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10801 "MachineIndependent/glslang_tab.cpp" +#line 10785 "MachineIndependent/glslang_tab.cpp" break; - case 531: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3517 "MachineIndependent/glslang.y" + case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */ +#line 3527 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10812 "MachineIndependent/glslang_tab.cpp" +#line 10796 "MachineIndependent/glslang_tab.cpp" break; - case 532: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3523 "MachineIndependent/glslang.y" + case 533: /* type_specifier_nonarray: FCOOPMATNV */ +#line 3533 "MachineIndependent/glslang.y" { - parseContext.fcoopmatCheck((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; - (yyval.interm.type).coopmat = true; + (yyval.interm.type).coopmatNV = true; + (yyval.interm.type).coopmatKHR = false; } -#line 10823 "MachineIndependent/glslang_tab.cpp" +#line 10808 "MachineIndependent/glslang_tab.cpp" break; - case 533: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3529 "MachineIndependent/glslang.y" + case 534: /* type_specifier_nonarray: ICOOPMATNV */ +#line 3540 "MachineIndependent/glslang.y" { - parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; - (yyval.interm.type).coopmat = true; + (yyval.interm.type).coopmatNV = true; + (yyval.interm.type).coopmatKHR = false; } -#line 10834 "MachineIndependent/glslang_tab.cpp" +#line 10820 "MachineIndependent/glslang_tab.cpp" break; - case 534: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3535 "MachineIndependent/glslang.y" + case 535: /* type_specifier_nonarray: UCOOPMATNV */ +#line 3547 "MachineIndependent/glslang.y" { - parseContext.intcoopmatCheck((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); + parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; - (yyval.interm.type).coopmat = true; + (yyval.interm.type).coopmatNV = true; + (yyval.interm.type).coopmatKHR = false; + } +#line 10832 "MachineIndependent/glslang_tab.cpp" + break; + + case 536: /* type_specifier_nonarray: COOPMAT */ +#line 3554 "MachineIndependent/glslang.y" + { + parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); + (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); + (yyval.interm.type).basicType = EbtCoopmat; + (yyval.interm.type).coopmatNV = false; + (yyval.interm.type).coopmatKHR = true; } -#line 10845 "MachineIndependent/glslang_tab.cpp" +#line 10844 "MachineIndependent/glslang_tab.cpp" break; - case 535: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3541 "MachineIndependent/glslang.y" + case 537: /* type_specifier_nonarray: spirv_type_specifier */ +#line 3561 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10854 "MachineIndependent/glslang_tab.cpp" +#line 10853 "MachineIndependent/glslang_tab.cpp" break; - case 536: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3545 "MachineIndependent/glslang.y" + case 538: /* type_specifier_nonarray: HITOBJECTNV */ +#line 3565 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10863 "MachineIndependent/glslang_tab.cpp" +#line 10862 "MachineIndependent/glslang_tab.cpp" break; - case 537: /* type_specifier_nonarray: struct_specifier */ -#line 3550 "MachineIndependent/glslang.y" + case 539: /* type_specifier_nonarray: struct_specifier */ +#line 3570 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10873 "MachineIndependent/glslang_tab.cpp" +#line 10872 "MachineIndependent/glslang_tab.cpp" break; - case 538: /* type_specifier_nonarray: TYPE_NAME */ -#line 3555 "MachineIndependent/glslang.y" + case 540: /* type_specifier_nonarray: TYPE_NAME */ +#line 3575 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10887,47 +10886,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10891 "MachineIndependent/glslang_tab.cpp" +#line 10890 "MachineIndependent/glslang_tab.cpp" break; - case 539: /* precision_qualifier: HIGH_PRECISION */ -#line 3571 "MachineIndependent/glslang.y" + case 541: /* precision_qualifier: HIGH_PRECISION */ +#line 3591 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10901 "MachineIndependent/glslang_tab.cpp" +#line 10900 "MachineIndependent/glslang_tab.cpp" break; - case 540: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3576 "MachineIndependent/glslang.y" + case 542: /* precision_qualifier: MEDIUM_PRECISION */ +#line 3596 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10911 "MachineIndependent/glslang_tab.cpp" +#line 10910 "MachineIndependent/glslang_tab.cpp" break; - case 541: /* precision_qualifier: LOW_PRECISION */ -#line 3581 "MachineIndependent/glslang.y" + case 543: /* precision_qualifier: LOW_PRECISION */ +#line 3601 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10921 "MachineIndependent/glslang_tab.cpp" +#line 10920 "MachineIndependent/glslang_tab.cpp" break; - case 542: /* $@3: %empty */ -#line 3589 "MachineIndependent/glslang.y" + case 544: /* $@3: %empty */ +#line 3609 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10927 "MachineIndependent/glslang_tab.cpp" +#line 10926 "MachineIndependent/glslang_tab.cpp" break; - case 543: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3589 "MachineIndependent/glslang.y" + case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ +#line 3609 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10939,17 +10938,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10943 "MachineIndependent/glslang_tab.cpp" +#line 10942 "MachineIndependent/glslang_tab.cpp" break; - case 544: /* $@4: %empty */ -#line 3600 "MachineIndependent/glslang.y" + case 546: /* $@4: %empty */ +#line 3620 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10949 "MachineIndependent/glslang_tab.cpp" +#line 10948 "MachineIndependent/glslang_tab.cpp" break; - case 545: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3600 "MachineIndependent/glslang.y" + case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ +#line 3620 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10957,19 +10956,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10961 "MachineIndependent/glslang_tab.cpp" +#line 10960 "MachineIndependent/glslang_tab.cpp" break; - case 546: /* struct_declaration_list: struct_declaration */ -#line 3610 "MachineIndependent/glslang.y" + case 548: /* struct_declaration_list: struct_declaration */ +#line 3630 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10969 "MachineIndependent/glslang_tab.cpp" +#line 10968 "MachineIndependent/glslang_tab.cpp" break; - case 547: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3613 "MachineIndependent/glslang.y" + case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */ +#line 3633 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10980,11 +10979,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10984 "MachineIndependent/glslang_tab.cpp" +#line 10983 "MachineIndependent/glslang_tab.cpp" break; - case 548: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3626 "MachineIndependent/glslang.y" + case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ +#line 3646 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -10996,7 +10995,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); + parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).isCoopmat()); for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { TType type((yyvsp[-2].interm.type)); @@ -11007,11 +11006,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11011 "MachineIndependent/glslang_tab.cpp" +#line 11010 "MachineIndependent/glslang_tab.cpp" break; - case 549: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3648 "MachineIndependent/glslang.y" + case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ +#line 3668 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11025,7 +11024,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.memberQualifierCheck((yyvsp[-3].interm.type)); parseContext.voidErrorCheck((yyvsp[-2].interm.type).loc, (*(yyvsp[-1].interm.typeList))[0].type->getFieldName(), (yyvsp[-2].interm.type).basicType); parseContext.mergeQualifiers((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, (yyvsp[-3].interm.type).qualifier, true); - parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier); + parseContext.precisionQualifierCheck((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).basicType, (yyvsp[-2].interm.type).qualifier, (yyvsp[-2].interm.type).isCoopmat()); for (unsigned int i = 0; i < (yyval.interm.typeList)->size(); ++i) { TType type((yyvsp[-2].interm.type)); @@ -11036,38 +11035,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11040 "MachineIndependent/glslang_tab.cpp" +#line 11039 "MachineIndependent/glslang_tab.cpp" break; - case 550: /* struct_declarator_list: struct_declarator */ -#line 3675 "MachineIndependent/glslang.y" + case 552: /* struct_declarator_list: struct_declarator */ +#line 3695 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11049 "MachineIndependent/glslang_tab.cpp" +#line 11048 "MachineIndependent/glslang_tab.cpp" break; - case 551: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3679 "MachineIndependent/glslang.y" + case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ +#line 3699 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11057 "MachineIndependent/glslang_tab.cpp" +#line 11056 "MachineIndependent/glslang_tab.cpp" break; - case 552: /* struct_declarator: IDENTIFIER */ -#line 3685 "MachineIndependent/glslang.y" + case 554: /* struct_declarator: IDENTIFIER */ +#line 3705 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11067 "MachineIndependent/glslang_tab.cpp" +#line 11066 "MachineIndependent/glslang_tab.cpp" break; - case 553: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3690 "MachineIndependent/glslang.y" + case 555: /* struct_declarator: IDENTIFIER array_specifier */ +#line 3710 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11076,246 +11075,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11080 "MachineIndependent/glslang_tab.cpp" +#line 11079 "MachineIndependent/glslang_tab.cpp" break; - case 554: /* initializer: assignment_expression */ -#line 3701 "MachineIndependent/glslang.y" + case 556: /* initializer: assignment_expression */ +#line 3721 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11088 "MachineIndependent/glslang_tab.cpp" +#line 11087 "MachineIndependent/glslang_tab.cpp" break; - case 555: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3705 "MachineIndependent/glslang.y" + case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ +#line 3725 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11099 "MachineIndependent/glslang_tab.cpp" +#line 11098 "MachineIndependent/glslang_tab.cpp" break; - case 556: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3711 "MachineIndependent/glslang.y" + case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ +#line 3731 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11110 "MachineIndependent/glslang_tab.cpp" +#line 11109 "MachineIndependent/glslang_tab.cpp" break; - case 557: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3717 "MachineIndependent/glslang.y" + case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */ +#line 3737 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11121 "MachineIndependent/glslang_tab.cpp" +#line 11120 "MachineIndependent/glslang_tab.cpp" break; - case 558: /* initializer_list: initializer */ -#line 3728 "MachineIndependent/glslang.y" + case 560: /* initializer_list: initializer */ +#line 3748 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11129 "MachineIndependent/glslang_tab.cpp" +#line 11128 "MachineIndependent/glslang_tab.cpp" break; - case 559: /* initializer_list: initializer_list COMMA initializer */ -#line 3731 "MachineIndependent/glslang.y" + case 561: /* initializer_list: initializer_list COMMA initializer */ +#line 3751 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11137 "MachineIndependent/glslang_tab.cpp" +#line 11136 "MachineIndependent/glslang_tab.cpp" break; - case 560: /* declaration_statement: declaration */ -#line 3738 "MachineIndependent/glslang.y" + case 562: /* declaration_statement: declaration */ +#line 3758 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11143 "MachineIndependent/glslang_tab.cpp" +#line 11142 "MachineIndependent/glslang_tab.cpp" break; - case 561: /* statement: compound_statement */ -#line 3742 "MachineIndependent/glslang.y" + case 563: /* statement: compound_statement */ +#line 3762 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11149 "MachineIndependent/glslang_tab.cpp" +#line 11148 "MachineIndependent/glslang_tab.cpp" break; - case 562: /* statement: simple_statement */ -#line 3743 "MachineIndependent/glslang.y" + case 564: /* statement: simple_statement */ +#line 3763 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11155 "MachineIndependent/glslang_tab.cpp" +#line 11154 "MachineIndependent/glslang_tab.cpp" break; - case 563: /* simple_statement: declaration_statement */ -#line 3749 "MachineIndependent/glslang.y" + case 565: /* simple_statement: declaration_statement */ +#line 3769 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11161 "MachineIndependent/glslang_tab.cpp" +#line 11160 "MachineIndependent/glslang_tab.cpp" break; - case 564: /* simple_statement: expression_statement */ -#line 3750 "MachineIndependent/glslang.y" + case 566: /* simple_statement: expression_statement */ +#line 3770 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11167 "MachineIndependent/glslang_tab.cpp" +#line 11166 "MachineIndependent/glslang_tab.cpp" break; - case 565: /* simple_statement: selection_statement */ -#line 3751 "MachineIndependent/glslang.y" + case 567: /* simple_statement: selection_statement */ +#line 3771 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11173 "MachineIndependent/glslang_tab.cpp" +#line 11172 "MachineIndependent/glslang_tab.cpp" break; - case 566: /* simple_statement: switch_statement */ -#line 3752 "MachineIndependent/glslang.y" + case 568: /* simple_statement: switch_statement */ +#line 3772 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11179 "MachineIndependent/glslang_tab.cpp" +#line 11178 "MachineIndependent/glslang_tab.cpp" break; - case 567: /* simple_statement: case_label */ -#line 3753 "MachineIndependent/glslang.y" + case 569: /* simple_statement: case_label */ +#line 3773 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11185 "MachineIndependent/glslang_tab.cpp" +#line 11184 "MachineIndependent/glslang_tab.cpp" break; - case 568: /* simple_statement: iteration_statement */ -#line 3754 "MachineIndependent/glslang.y" + case 570: /* simple_statement: iteration_statement */ +#line 3774 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11191 "MachineIndependent/glslang_tab.cpp" +#line 11190 "MachineIndependent/glslang_tab.cpp" break; - case 569: /* simple_statement: jump_statement */ -#line 3755 "MachineIndependent/glslang.y" + case 571: /* simple_statement: jump_statement */ +#line 3775 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11197 "MachineIndependent/glslang_tab.cpp" +#line 11196 "MachineIndependent/glslang_tab.cpp" break; - case 570: /* simple_statement: demote_statement */ -#line 3757 "MachineIndependent/glslang.y" + case 572: /* simple_statement: demote_statement */ +#line 3777 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11203 "MachineIndependent/glslang_tab.cpp" +#line 11202 "MachineIndependent/glslang_tab.cpp" break; - case 571: /* demote_statement: DEMOTE SEMICOLON */ -#line 3763 "MachineIndependent/glslang.y" + case 573: /* demote_statement: DEMOTE SEMICOLON */ +#line 3783 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11213 "MachineIndependent/glslang_tab.cpp" +#line 11212 "MachineIndependent/glslang_tab.cpp" break; - case 572: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3772 "MachineIndependent/glslang.y" + case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ +#line 3792 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11219 "MachineIndependent/glslang_tab.cpp" +#line 11218 "MachineIndependent/glslang_tab.cpp" break; - case 573: /* $@5: %empty */ -#line 3773 "MachineIndependent/glslang.y" + case 575: /* $@5: %empty */ +#line 3793 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11228 "MachineIndependent/glslang_tab.cpp" +#line 11227 "MachineIndependent/glslang_tab.cpp" break; - case 574: /* $@6: %empty */ -#line 3777 "MachineIndependent/glslang.y" + case 576: /* $@6: %empty */ +#line 3797 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11237 "MachineIndependent/glslang_tab.cpp" +#line 11236 "MachineIndependent/glslang_tab.cpp" break; - case 575: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3781 "MachineIndependent/glslang.y" + case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ +#line 3801 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11247 "MachineIndependent/glslang_tab.cpp" +#line 11246 "MachineIndependent/glslang_tab.cpp" break; - case 576: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3789 "MachineIndependent/glslang.y" + case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ +#line 3809 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11253 "MachineIndependent/glslang_tab.cpp" +#line 11252 "MachineIndependent/glslang_tab.cpp" break; - case 577: /* statement_no_new_scope: simple_statement */ -#line 3790 "MachineIndependent/glslang.y" + case 579: /* statement_no_new_scope: simple_statement */ +#line 3810 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11259 "MachineIndependent/glslang_tab.cpp" +#line 11258 "MachineIndependent/glslang_tab.cpp" break; - case 578: /* $@7: %empty */ -#line 3794 "MachineIndependent/glslang.y" + case 580: /* $@7: %empty */ +#line 3814 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11267 "MachineIndependent/glslang_tab.cpp" +#line 11266 "MachineIndependent/glslang_tab.cpp" break; - case 579: /* statement_scoped: $@7 compound_statement */ -#line 3797 "MachineIndependent/glslang.y" + case 581: /* statement_scoped: $@7 compound_statement */ +#line 3817 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11276 "MachineIndependent/glslang_tab.cpp" +#line 11275 "MachineIndependent/glslang_tab.cpp" break; - case 580: /* $@8: %empty */ -#line 3801 "MachineIndependent/glslang.y" + case 582: /* $@8: %empty */ +#line 3821 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11286 "MachineIndependent/glslang_tab.cpp" +#line 11285 "MachineIndependent/glslang_tab.cpp" break; - case 581: /* statement_scoped: $@8 simple_statement */ -#line 3806 "MachineIndependent/glslang.y" + case 583: /* statement_scoped: $@8 simple_statement */ +#line 3826 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11297 "MachineIndependent/glslang_tab.cpp" +#line 11296 "MachineIndependent/glslang_tab.cpp" break; - case 582: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3815 "MachineIndependent/glslang.y" + case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ +#line 3835 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11305 "MachineIndependent/glslang_tab.cpp" +#line 11304 "MachineIndependent/glslang_tab.cpp" break; - case 583: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3818 "MachineIndependent/glslang.y" + case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ +#line 3838 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11315 "MachineIndependent/glslang_tab.cpp" +#line 11314 "MachineIndependent/glslang_tab.cpp" break; - case 584: /* statement_list: statement */ -#line 3826 "MachineIndependent/glslang.y" + case 586: /* statement_list: statement */ +#line 3846 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11324,11 +11323,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11328 "MachineIndependent/glslang_tab.cpp" +#line 11327 "MachineIndependent/glslang_tab.cpp" break; - case 585: /* statement_list: statement_list statement */ -#line 3834 "MachineIndependent/glslang.y" + case 587: /* statement_list: statement_list statement */ +#line 3854 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11337,77 +11336,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11341 "MachineIndependent/glslang_tab.cpp" +#line 11340 "MachineIndependent/glslang_tab.cpp" break; - case 586: /* expression_statement: SEMICOLON */ -#line 3845 "MachineIndependent/glslang.y" + case 588: /* expression_statement: SEMICOLON */ +#line 3865 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11347 "MachineIndependent/glslang_tab.cpp" +#line 11346 "MachineIndependent/glslang_tab.cpp" break; - case 587: /* expression_statement: expression SEMICOLON */ -#line 3846 "MachineIndependent/glslang.y" + case 589: /* expression_statement: expression SEMICOLON */ +#line 3866 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11353 "MachineIndependent/glslang_tab.cpp" +#line 11352 "MachineIndependent/glslang_tab.cpp" break; - case 588: /* selection_statement: selection_statement_nonattributed */ -#line 3850 "MachineIndependent/glslang.y" + case 590: /* selection_statement: selection_statement_nonattributed */ +#line 3870 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11361 "MachineIndependent/glslang_tab.cpp" +#line 11360 "MachineIndependent/glslang_tab.cpp" break; - case 589: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3854 "MachineIndependent/glslang.y" + case 591: /* selection_statement: attribute selection_statement_nonattributed */ +#line 3874 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11371 "MachineIndependent/glslang_tab.cpp" +#line 11370 "MachineIndependent/glslang_tab.cpp" break; - case 590: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3862 "MachineIndependent/glslang.y" + case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ +#line 3882 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11380 "MachineIndependent/glslang_tab.cpp" +#line 11379 "MachineIndependent/glslang_tab.cpp" break; - case 591: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3869 "MachineIndependent/glslang.y" + case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ +#line 3889 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11389 "MachineIndependent/glslang_tab.cpp" +#line 11388 "MachineIndependent/glslang_tab.cpp" break; - case 592: /* selection_rest_statement: statement_scoped */ -#line 3873 "MachineIndependent/glslang.y" + case 594: /* selection_rest_statement: statement_scoped */ +#line 3893 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11398 "MachineIndependent/glslang_tab.cpp" +#line 11397 "MachineIndependent/glslang_tab.cpp" break; - case 593: /* condition: expression */ -#line 3881 "MachineIndependent/glslang.y" + case 595: /* condition: expression */ +#line 3901 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11407 "MachineIndependent/glslang_tab.cpp" +#line 11406 "MachineIndependent/glslang_tab.cpp" break; - case 594: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3885 "MachineIndependent/glslang.y" + case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ +#line 3905 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11418,29 +11417,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11422 "MachineIndependent/glslang_tab.cpp" +#line 11421 "MachineIndependent/glslang_tab.cpp" break; - case 595: /* switch_statement: switch_statement_nonattributed */ -#line 3898 "MachineIndependent/glslang.y" + case 597: /* switch_statement: switch_statement_nonattributed */ +#line 3918 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11430 "MachineIndependent/glslang_tab.cpp" +#line 11429 "MachineIndependent/glslang_tab.cpp" break; - case 596: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3902 "MachineIndependent/glslang.y" + case 598: /* switch_statement: attribute switch_statement_nonattributed */ +#line 3922 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11440 "MachineIndependent/glslang_tab.cpp" +#line 11439 "MachineIndependent/glslang_tab.cpp" break; - case 597: /* $@9: %empty */ -#line 3910 "MachineIndependent/glslang.y" + case 599: /* $@9: %empty */ +#line 3930 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11449,11 +11448,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11453 "MachineIndependent/glslang_tab.cpp" +#line 11452 "MachineIndependent/glslang_tab.cpp" break; - case 598: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3918 "MachineIndependent/glslang.y" + case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ +#line 3938 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11463,27 +11462,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11467 "MachineIndependent/glslang_tab.cpp" +#line 11466 "MachineIndependent/glslang_tab.cpp" break; - case 599: /* switch_statement_list: %empty */ -#line 3930 "MachineIndependent/glslang.y" + case 601: /* switch_statement_list: %empty */ +#line 3950 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11475 "MachineIndependent/glslang_tab.cpp" +#line 11474 "MachineIndependent/glslang_tab.cpp" break; - case 600: /* switch_statement_list: statement_list */ -#line 3933 "MachineIndependent/glslang.y" + case 602: /* switch_statement_list: statement_list */ +#line 3953 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11483 "MachineIndependent/glslang_tab.cpp" +#line 11482 "MachineIndependent/glslang_tab.cpp" break; - case 601: /* case_label: CASE expression COLON */ -#line 3939 "MachineIndependent/glslang.y" + case 603: /* case_label: CASE expression COLON */ +#line 3959 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11496,11 +11495,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11500 "MachineIndependent/glslang_tab.cpp" +#line 11499 "MachineIndependent/glslang_tab.cpp" break; - case 602: /* case_label: DEFAULT COLON */ -#line 3951 "MachineIndependent/glslang.y" + case 604: /* case_label: DEFAULT COLON */ +#line 3971 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11510,29 +11509,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11514 "MachineIndependent/glslang_tab.cpp" +#line 11513 "MachineIndependent/glslang_tab.cpp" break; - case 603: /* iteration_statement: iteration_statement_nonattributed */ -#line 3963 "MachineIndependent/glslang.y" + case 605: /* iteration_statement: iteration_statement_nonattributed */ +#line 3983 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11522 "MachineIndependent/glslang_tab.cpp" +#line 11521 "MachineIndependent/glslang_tab.cpp" break; - case 604: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3967 "MachineIndependent/glslang.y" + case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ +#line 3987 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11532 "MachineIndependent/glslang_tab.cpp" +#line 11531 "MachineIndependent/glslang_tab.cpp" break; - case 605: /* $@10: %empty */ -#line 3975 "MachineIndependent/glslang.y" + case 607: /* $@10: %empty */ +#line 3995 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11541,11 +11540,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11545 "MachineIndependent/glslang_tab.cpp" +#line 11544 "MachineIndependent/glslang_tab.cpp" break; - case 606: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3983 "MachineIndependent/glslang.y" + case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ +#line 4003 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11553,22 +11552,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11557 "MachineIndependent/glslang_tab.cpp" +#line 11556 "MachineIndependent/glslang_tab.cpp" break; - case 607: /* $@11: %empty */ -#line 3990 "MachineIndependent/glslang.y" + case 609: /* $@11: %empty */ +#line 4010 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11568 "MachineIndependent/glslang_tab.cpp" +#line 11567 "MachineIndependent/glslang_tab.cpp" break; - case 608: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3996 "MachineIndependent/glslang.y" + case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ +#line 4016 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11581,22 +11580,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11585 "MachineIndependent/glslang_tab.cpp" +#line 11584 "MachineIndependent/glslang_tab.cpp" break; - case 609: /* $@12: %empty */ -#line 4008 "MachineIndependent/glslang.y" + case 611: /* $@12: %empty */ +#line 4028 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11596 "MachineIndependent/glslang_tab.cpp" +#line 11595 "MachineIndependent/glslang_tab.cpp" break; - case 610: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 4014 "MachineIndependent/glslang.y" + case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ +#line 4034 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11609,81 +11608,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11613 "MachineIndependent/glslang_tab.cpp" +#line 11612 "MachineIndependent/glslang_tab.cpp" break; - case 611: /* for_init_statement: expression_statement */ -#line 4029 "MachineIndependent/glslang.y" + case 613: /* for_init_statement: expression_statement */ +#line 4049 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11621 "MachineIndependent/glslang_tab.cpp" +#line 11620 "MachineIndependent/glslang_tab.cpp" break; - case 612: /* for_init_statement: declaration_statement */ -#line 4032 "MachineIndependent/glslang.y" + case 614: /* for_init_statement: declaration_statement */ +#line 4052 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11629 "MachineIndependent/glslang_tab.cpp" +#line 11628 "MachineIndependent/glslang_tab.cpp" break; - case 613: /* conditionopt: condition */ -#line 4038 "MachineIndependent/glslang.y" + case 615: /* conditionopt: condition */ +#line 4058 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11637 "MachineIndependent/glslang_tab.cpp" +#line 11636 "MachineIndependent/glslang_tab.cpp" break; - case 614: /* conditionopt: %empty */ -#line 4041 "MachineIndependent/glslang.y" + case 616: /* conditionopt: %empty */ +#line 4061 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11645 "MachineIndependent/glslang_tab.cpp" +#line 11644 "MachineIndependent/glslang_tab.cpp" break; - case 615: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4047 "MachineIndependent/glslang.y" + case 617: /* for_rest_statement: conditionopt SEMICOLON */ +#line 4067 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11654 "MachineIndependent/glslang_tab.cpp" +#line 11653 "MachineIndependent/glslang_tab.cpp" break; - case 616: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4051 "MachineIndependent/glslang.y" + case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ +#line 4071 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11663 "MachineIndependent/glslang_tab.cpp" +#line 11662 "MachineIndependent/glslang_tab.cpp" break; - case 617: /* jump_statement: CONTINUE SEMICOLON */ -#line 4058 "MachineIndependent/glslang.y" + case 619: /* jump_statement: CONTINUE SEMICOLON */ +#line 4078 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11673 "MachineIndependent/glslang_tab.cpp" +#line 11672 "MachineIndependent/glslang_tab.cpp" break; - case 618: /* jump_statement: BREAK SEMICOLON */ -#line 4063 "MachineIndependent/glslang.y" + case 620: /* jump_statement: BREAK SEMICOLON */ +#line 4083 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11683 "MachineIndependent/glslang_tab.cpp" +#line 11682 "MachineIndependent/glslang_tab.cpp" break; - case 619: /* jump_statement: RETURN SEMICOLON */ -#line 4068 "MachineIndependent/glslang.y" + case 621: /* jump_statement: RETURN SEMICOLON */ +#line 4088 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11691,101 +11690,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11695 "MachineIndependent/glslang_tab.cpp" +#line 11694 "MachineIndependent/glslang_tab.cpp" break; - case 620: /* jump_statement: RETURN expression SEMICOLON */ -#line 4075 "MachineIndependent/glslang.y" + case 622: /* jump_statement: RETURN expression SEMICOLON */ +#line 4095 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11703 "MachineIndependent/glslang_tab.cpp" +#line 11702 "MachineIndependent/glslang_tab.cpp" break; - case 621: /* jump_statement: DISCARD SEMICOLON */ -#line 4078 "MachineIndependent/glslang.y" + case 623: /* jump_statement: DISCARD SEMICOLON */ +#line 4098 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11712 "MachineIndependent/glslang_tab.cpp" +#line 11711 "MachineIndependent/glslang_tab.cpp" break; - case 622: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4082 "MachineIndependent/glslang.y" + case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ +#line 4102 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11721 "MachineIndependent/glslang_tab.cpp" +#line 11720 "MachineIndependent/glslang_tab.cpp" break; - case 623: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4087 "MachineIndependent/glslang.y" + case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ +#line 4107 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11730 "MachineIndependent/glslang_tab.cpp" +#line 11729 "MachineIndependent/glslang_tab.cpp" break; - case 624: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4091 "MachineIndependent/glslang.y" + case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ +#line 4111 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11739 "MachineIndependent/glslang_tab.cpp" +#line 11738 "MachineIndependent/glslang_tab.cpp" break; - case 625: /* translation_unit: external_declaration */ -#line 4101 "MachineIndependent/glslang.y" + case 627: /* translation_unit: external_declaration */ +#line 4121 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11748 "MachineIndependent/glslang_tab.cpp" +#line 11747 "MachineIndependent/glslang_tab.cpp" break; - case 626: /* translation_unit: translation_unit external_declaration */ -#line 4105 "MachineIndependent/glslang.y" + case 628: /* translation_unit: translation_unit external_declaration */ +#line 4125 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11759 "MachineIndependent/glslang_tab.cpp" +#line 11758 "MachineIndependent/glslang_tab.cpp" break; - case 627: /* external_declaration: function_definition */ -#line 4114 "MachineIndependent/glslang.y" + case 629: /* external_declaration: function_definition */ +#line 4134 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11767 "MachineIndependent/glslang_tab.cpp" +#line 11766 "MachineIndependent/glslang_tab.cpp" break; - case 628: /* external_declaration: declaration */ -#line 4117 "MachineIndependent/glslang.y" + case 630: /* external_declaration: declaration */ +#line 4137 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11775 "MachineIndependent/glslang_tab.cpp" +#line 11774 "MachineIndependent/glslang_tab.cpp" break; - case 629: /* external_declaration: SEMICOLON */ -#line 4121 "MachineIndependent/glslang.y" + case 631: /* external_declaration: SEMICOLON */ +#line 4141 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11785 "MachineIndependent/glslang_tab.cpp" +#line 11784 "MachineIndependent/glslang_tab.cpp" break; - case 630: /* $@13: %empty */ -#line 4130 "MachineIndependent/glslang.y" + case 632: /* $@13: %empty */ +#line 4150 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11798,11 +11797,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11802 "MachineIndependent/glslang_tab.cpp" +#line 11801 "MachineIndependent/glslang_tab.cpp" break; - case 631: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4142 "MachineIndependent/glslang.y" + case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ +#line 4162 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11829,228 +11828,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11833 "MachineIndependent/glslang_tab.cpp" +#line 11832 "MachineIndependent/glslang_tab.cpp" break; - case 632: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4172 "MachineIndependent/glslang.y" + case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ +#line 4192 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11841 "MachineIndependent/glslang_tab.cpp" +#line 11840 "MachineIndependent/glslang_tab.cpp" break; - case 633: /* attribute_list: single_attribute */ -#line 4177 "MachineIndependent/glslang.y" + case 635: /* attribute_list: single_attribute */ +#line 4197 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11849 "MachineIndependent/glslang_tab.cpp" +#line 11848 "MachineIndependent/glslang_tab.cpp" break; - case 634: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4180 "MachineIndependent/glslang.y" + case 636: /* attribute_list: attribute_list COMMA single_attribute */ +#line 4200 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11857 "MachineIndependent/glslang_tab.cpp" +#line 11856 "MachineIndependent/glslang_tab.cpp" break; - case 635: /* single_attribute: IDENTIFIER */ -#line 4185 "MachineIndependent/glslang.y" + case 637: /* single_attribute: IDENTIFIER */ +#line 4205 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11865 "MachineIndependent/glslang_tab.cpp" +#line 11864 "MachineIndependent/glslang_tab.cpp" break; - case 636: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4188 "MachineIndependent/glslang.y" + case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ +#line 4208 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11873 "MachineIndependent/glslang_tab.cpp" +#line 11872 "MachineIndependent/glslang_tab.cpp" break; - case 637: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4195 "MachineIndependent/glslang.y" + case 639: /* spirv_requirements_list: spirv_requirements_parameter */ +#line 4215 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11881 "MachineIndependent/glslang_tab.cpp" +#line 11880 "MachineIndependent/glslang_tab.cpp" break; - case 638: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4198 "MachineIndependent/glslang.y" + case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ +#line 4218 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11889 "MachineIndependent/glslang_tab.cpp" +#line 11888 "MachineIndependent/glslang_tab.cpp" break; - case 639: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4203 "MachineIndependent/glslang.y" + case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ +#line 4223 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11897 "MachineIndependent/glslang_tab.cpp" +#line 11896 "MachineIndependent/glslang_tab.cpp" break; - case 640: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4206 "MachineIndependent/glslang.y" + case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ +#line 4226 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11905 "MachineIndependent/glslang_tab.cpp" +#line 11904 "MachineIndependent/glslang_tab.cpp" break; - case 641: /* spirv_extension_list: STRING_LITERAL */ -#line 4211 "MachineIndependent/glslang.y" + case 643: /* spirv_extension_list: STRING_LITERAL */ +#line 4231 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11913 "MachineIndependent/glslang_tab.cpp" +#line 11912 "MachineIndependent/glslang_tab.cpp" break; - case 642: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4214 "MachineIndependent/glslang.y" + case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ +#line 4234 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11921 "MachineIndependent/glslang_tab.cpp" +#line 11920 "MachineIndependent/glslang_tab.cpp" break; - case 643: /* spirv_capability_list: INTCONSTANT */ -#line 4219 "MachineIndependent/glslang.y" + case 645: /* spirv_capability_list: INTCONSTANT */ +#line 4239 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11929 "MachineIndependent/glslang_tab.cpp" +#line 11928 "MachineIndependent/glslang_tab.cpp" break; - case 644: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4222 "MachineIndependent/glslang.y" + case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ +#line 4242 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11937 "MachineIndependent/glslang_tab.cpp" +#line 11936 "MachineIndependent/glslang_tab.cpp" break; - case 645: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4227 "MachineIndependent/glslang.y" + case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4247 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11946 "MachineIndependent/glslang_tab.cpp" +#line 11945 "MachineIndependent/glslang_tab.cpp" break; - case 646: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4231 "MachineIndependent/glslang.y" + case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4251 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11956 "MachineIndependent/glslang_tab.cpp" +#line 11955 "MachineIndependent/glslang_tab.cpp" break; - case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4236 "MachineIndependent/glslang.y" + case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4256 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11965 "MachineIndependent/glslang_tab.cpp" +#line 11964 "MachineIndependent/glslang_tab.cpp" break; - case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4240 "MachineIndependent/glslang.y" + case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ +#line 4260 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11975 "MachineIndependent/glslang_tab.cpp" +#line 11974 "MachineIndependent/glslang_tab.cpp" break; - case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4245 "MachineIndependent/glslang.y" + case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4265 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11984 "MachineIndependent/glslang_tab.cpp" +#line 11983 "MachineIndependent/glslang_tab.cpp" break; - case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4249 "MachineIndependent/glslang.y" + case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ +#line 4269 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11994 "MachineIndependent/glslang_tab.cpp" +#line 11993 "MachineIndependent/glslang_tab.cpp" break; - case 651: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4256 "MachineIndependent/glslang.y" + case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ +#line 4276 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12002 "MachineIndependent/glslang_tab.cpp" +#line 12001 "MachineIndependent/glslang_tab.cpp" break; - case 652: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4259 "MachineIndependent/glslang.y" + case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ +#line 4279 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12010 "MachineIndependent/glslang_tab.cpp" +#line 12009 "MachineIndependent/glslang_tab.cpp" break; - case 653: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4264 "MachineIndependent/glslang.y" + case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ +#line 4284 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12018 "MachineIndependent/glslang_tab.cpp" +#line 12017 "MachineIndependent/glslang_tab.cpp" break; - case 654: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4267 "MachineIndependent/glslang.y" + case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ +#line 4287 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12026 "MachineIndependent/glslang_tab.cpp" +#line 12025 "MachineIndependent/glslang_tab.cpp" break; - case 655: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4270 "MachineIndependent/glslang.y" + case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ +#line 4290 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12034 "MachineIndependent/glslang_tab.cpp" +#line 12033 "MachineIndependent/glslang_tab.cpp" break; - case 656: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4273 "MachineIndependent/glslang.y" + case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ +#line 4293 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12042 "MachineIndependent/glslang_tab.cpp" +#line 12041 "MachineIndependent/glslang_tab.cpp" break; - case 657: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4276 "MachineIndependent/glslang.y" + case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ +#line 4296 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12050 "MachineIndependent/glslang_tab.cpp" +#line 12049 "MachineIndependent/glslang_tab.cpp" break; - case 658: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4281 "MachineIndependent/glslang.y" + case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ +#line 4301 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12060,11 +12059,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12064 "MachineIndependent/glslang_tab.cpp" +#line 12063 "MachineIndependent/glslang_tab.cpp" break; - case 659: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4290 "MachineIndependent/glslang.y" + case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ +#line 4310 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12074,351 +12073,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12078 "MachineIndependent/glslang_tab.cpp" +#line 12077 "MachineIndependent/glslang_tab.cpp" break; - case 660: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4301 "MachineIndependent/glslang.y" + case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4321 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12088 "MachineIndependent/glslang_tab.cpp" +#line 12087 "MachineIndependent/glslang_tab.cpp" break; - case 661: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4306 "MachineIndependent/glslang.y" + case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4326 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12099 "MachineIndependent/glslang_tab.cpp" +#line 12098 "MachineIndependent/glslang_tab.cpp" break; - case 662: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4314 "MachineIndependent/glslang.y" + case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ +#line 4334 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12108 "MachineIndependent/glslang_tab.cpp" +#line 12107 "MachineIndependent/glslang_tab.cpp" break; - case 663: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4318 "MachineIndependent/glslang.y" + case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ +#line 4338 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12118 "MachineIndependent/glslang_tab.cpp" +#line 12117 "MachineIndependent/glslang_tab.cpp" break; - case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4323 "MachineIndependent/glslang.y" + case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4343 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12127 "MachineIndependent/glslang_tab.cpp" +#line 12126 "MachineIndependent/glslang_tab.cpp" break; - case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4327 "MachineIndependent/glslang.y" + case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ +#line 4347 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12137 "MachineIndependent/glslang_tab.cpp" +#line 12136 "MachineIndependent/glslang_tab.cpp" break; - case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4332 "MachineIndependent/glslang.y" + case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4352 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12146 "MachineIndependent/glslang_tab.cpp" +#line 12145 "MachineIndependent/glslang_tab.cpp" break; - case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4336 "MachineIndependent/glslang.y" + case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ +#line 4356 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12156 "MachineIndependent/glslang_tab.cpp" +#line 12155 "MachineIndependent/glslang_tab.cpp" break; - case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4341 "MachineIndependent/glslang.y" + case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4361 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12165 "MachineIndependent/glslang_tab.cpp" +#line 12164 "MachineIndependent/glslang_tab.cpp" break; - case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4345 "MachineIndependent/glslang.y" + case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ +#line 4365 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12175 "MachineIndependent/glslang_tab.cpp" +#line 12174 "MachineIndependent/glslang_tab.cpp" break; - case 670: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4352 "MachineIndependent/glslang.y" + case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ +#line 4372 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12183 "MachineIndependent/glslang_tab.cpp" +#line 12182 "MachineIndependent/glslang_tab.cpp" break; - case 671: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4355 "MachineIndependent/glslang.y" + case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ +#line 4375 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12191 "MachineIndependent/glslang_tab.cpp" +#line 12190 "MachineIndependent/glslang_tab.cpp" break; - case 672: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4360 "MachineIndependent/glslang.y" + case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ +#line 4380 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12199 "MachineIndependent/glslang_tab.cpp" +#line 12198 "MachineIndependent/glslang_tab.cpp" break; - case 673: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4363 "MachineIndependent/glslang.y" + case 675: /* spirv_decorate_parameter: INTCONSTANT */ +#line 4383 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12207 "MachineIndependent/glslang_tab.cpp" +#line 12206 "MachineIndependent/glslang_tab.cpp" break; - case 674: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4366 "MachineIndependent/glslang.y" + case 676: /* spirv_decorate_parameter: UINTCONSTANT */ +#line 4386 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12215 "MachineIndependent/glslang_tab.cpp" +#line 12214 "MachineIndependent/glslang_tab.cpp" break; - case 675: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4369 "MachineIndependent/glslang.y" + case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ +#line 4389 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12223 "MachineIndependent/glslang_tab.cpp" +#line 12222 "MachineIndependent/glslang_tab.cpp" break; - case 676: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4374 "MachineIndependent/glslang.y" + case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ +#line 4394 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12231 "MachineIndependent/glslang_tab.cpp" +#line 12230 "MachineIndependent/glslang_tab.cpp" break; - case 677: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4377 "MachineIndependent/glslang.y" + case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ +#line 4397 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12239 "MachineIndependent/glslang_tab.cpp" +#line 12238 "MachineIndependent/glslang_tab.cpp" break; - case 678: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4382 "MachineIndependent/glslang.y" + case 680: /* spirv_decorate_id_parameter: variable_identifier */ +#line 4402 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12250 "MachineIndependent/glslang_tab.cpp" +#line 12249 "MachineIndependent/glslang_tab.cpp" break; - case 679: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4388 "MachineIndependent/glslang.y" + case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ +#line 4408 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12258 "MachineIndependent/glslang_tab.cpp" +#line 12257 "MachineIndependent/glslang_tab.cpp" break; - case 680: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4391 "MachineIndependent/glslang.y" + case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ +#line 4411 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12266 "MachineIndependent/glslang_tab.cpp" +#line 12265 "MachineIndependent/glslang_tab.cpp" break; - case 681: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4394 "MachineIndependent/glslang.y" + case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ +#line 4414 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12274 "MachineIndependent/glslang_tab.cpp" +#line 12273 "MachineIndependent/glslang_tab.cpp" break; - case 682: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4397 "MachineIndependent/glslang.y" + case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ +#line 4417 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12282 "MachineIndependent/glslang_tab.cpp" +#line 12281 "MachineIndependent/glslang_tab.cpp" break; - case 683: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4402 "MachineIndependent/glslang.y" + case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ +#line 4422 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12291 "MachineIndependent/glslang_tab.cpp" +#line 12290 "MachineIndependent/glslang_tab.cpp" break; - case 684: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4406 "MachineIndependent/glslang.y" + case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ +#line 4426 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12299 "MachineIndependent/glslang_tab.cpp" +#line 12298 "MachineIndependent/glslang_tab.cpp" break; - case 685: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4411 "MachineIndependent/glslang.y" + case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4431 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12308 "MachineIndependent/glslang_tab.cpp" +#line 12307 "MachineIndependent/glslang_tab.cpp" break; - case 686: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4415 "MachineIndependent/glslang.y" + case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ +#line 4435 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12318 "MachineIndependent/glslang_tab.cpp" +#line 12317 "MachineIndependent/glslang_tab.cpp" break; - case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4420 "MachineIndependent/glslang.y" + case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4440 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12327 "MachineIndependent/glslang_tab.cpp" +#line 12326 "MachineIndependent/glslang_tab.cpp" break; - case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4424 "MachineIndependent/glslang.y" + case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4444 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12337 "MachineIndependent/glslang_tab.cpp" +#line 12336 "MachineIndependent/glslang_tab.cpp" break; - case 689: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4431 "MachineIndependent/glslang.y" + case 691: /* spirv_type_parameter_list: spirv_type_parameter */ +#line 4451 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12345 "MachineIndependent/glslang_tab.cpp" +#line 12344 "MachineIndependent/glslang_tab.cpp" break; - case 690: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4434 "MachineIndependent/glslang.y" + case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ +#line 4454 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12353 "MachineIndependent/glslang_tab.cpp" +#line 12352 "MachineIndependent/glslang_tab.cpp" break; - case 691: /* spirv_type_parameter: constant_expression */ -#line 4439 "MachineIndependent/glslang.y" + case 693: /* spirv_type_parameter: constant_expression */ +#line 4459 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12361 "MachineIndependent/glslang_tab.cpp" +#line 12360 "MachineIndependent/glslang_tab.cpp" break; - case 692: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4442 "MachineIndependent/glslang.y" + case 694: /* spirv_type_parameter: type_specifier_nonarray */ +#line 4462 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12369 "MachineIndependent/glslang_tab.cpp" +#line 12368 "MachineIndependent/glslang_tab.cpp" break; - case 693: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4447 "MachineIndependent/glslang.y" + case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4467 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12377 "MachineIndependent/glslang_tab.cpp" +#line 12376 "MachineIndependent/glslang_tab.cpp" break; - case 694: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4450 "MachineIndependent/glslang.y" + case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ +#line 4470 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12386 "MachineIndependent/glslang_tab.cpp" +#line 12385 "MachineIndependent/glslang_tab.cpp" break; - case 695: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4456 "MachineIndependent/glslang.y" + case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ +#line 4476 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12394 "MachineIndependent/glslang_tab.cpp" +#line 12393 "MachineIndependent/glslang_tab.cpp" break; - case 696: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4459 "MachineIndependent/glslang.y" + case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ +#line 4479 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12402 "MachineIndependent/glslang_tab.cpp" +#line 12401 "MachineIndependent/glslang_tab.cpp" break; - case 697: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4464 "MachineIndependent/glslang.y" + case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ +#line 4484 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12410 "MachineIndependent/glslang_tab.cpp" +#line 12409 "MachineIndependent/glslang_tab.cpp" break; - case 698: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4467 "MachineIndependent/glslang.y" + case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ +#line 4487 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12418 "MachineIndependent/glslang_tab.cpp" +#line 12417 "MachineIndependent/glslang_tab.cpp" break; -#line 12422 "MachineIndependent/glslang_tab.cpp" +#line 12421 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12494,7 +12493,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } yyerror (pParseContext, yymsgp); if (yysyntax_error_status == YYENOMEM) - goto yyexhaustedlab; + YYNOMEM; } } @@ -12530,6 +12529,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); label yyerrorlab therefore never appears in user code. */ if (0) YYERROR; + ++yynerrs; /* Do not reclaim the symbols of the rule whose action triggered this YYERROR. */ @@ -12590,7 +12590,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); `-------------------------------------*/ yyacceptlab: yyresult = 0; - goto yyreturn; + goto yyreturnlab; /*-----------------------------------. @@ -12598,24 +12598,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); `-----------------------------------*/ yyabortlab: yyresult = 1; - goto yyreturn; + goto yyreturnlab; -#if 1 -/*-------------------------------------------------. -| yyexhaustedlab -- memory exhaustion comes here. | -`-------------------------------------------------*/ +/*-----------------------------------------------------------. +| yyexhaustedlab -- YYNOMEM (memory exhaustion) comes here. | +`-----------------------------------------------------------*/ yyexhaustedlab: yyerror (pParseContext, YY_("memory exhausted")); yyresult = 2; - goto yyreturn; -#endif + goto yyreturnlab; -/*-------------------------------------------------------. -| yyreturn -- parsing is finished, clean up and return. | -`-------------------------------------------------------*/ -yyreturn: +/*----------------------------------------------------------. +| yyreturnlab -- parsing is finished, clean up and return. | +`----------------------------------------------------------*/ +yyreturnlab: if (yychar != YYEMPTY) { /* Make sure we have latest lookahead translation. See comments at @@ -12643,5 +12641,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4472 "MachineIndependent/glslang.y" +#line 4492 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index d2dd5e3539..39455f276d 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -1,8 +1,8 @@ -/* A Bison parser, made by GNU Bison 3.7.4. */ +/* A Bison parser, made by GNU Bison 3.8.2. */ /* Bison interface for Yacc-like parsers in C - Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2020 Free Software Foundation, + Copyright (C) 1984, 1989-1990, 2000-2015, 2018-2021 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -16,7 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . */ + along with this program. If not, see . */ /* As a special exception, you may create a larger work that contains part or all of the Bison parser skeleton and distribute that work @@ -217,304 +217,305 @@ extern int yydebug; FCOOPMATNV = 418, /* FCOOPMATNV */ ICOOPMATNV = 419, /* ICOOPMATNV */ UCOOPMATNV = 420, /* UCOOPMATNV */ - HITOBJECTNV = 421, /* HITOBJECTNV */ - HITOBJECTATTRNV = 422, /* HITOBJECTATTRNV */ - SAMPLERCUBEARRAY = 423, /* SAMPLERCUBEARRAY */ - SAMPLERCUBEARRAYSHADOW = 424, /* SAMPLERCUBEARRAYSHADOW */ - ISAMPLERCUBEARRAY = 425, /* ISAMPLERCUBEARRAY */ - USAMPLERCUBEARRAY = 426, /* USAMPLERCUBEARRAY */ - SAMPLER1D = 427, /* SAMPLER1D */ - SAMPLER1DARRAY = 428, /* SAMPLER1DARRAY */ - SAMPLER1DARRAYSHADOW = 429, /* SAMPLER1DARRAYSHADOW */ - ISAMPLER1D = 430, /* ISAMPLER1D */ - SAMPLER1DSHADOW = 431, /* SAMPLER1DSHADOW */ - SAMPLER2DRECT = 432, /* SAMPLER2DRECT */ - SAMPLER2DRECTSHADOW = 433, /* SAMPLER2DRECTSHADOW */ - ISAMPLER2DRECT = 434, /* ISAMPLER2DRECT */ - USAMPLER2DRECT = 435, /* USAMPLER2DRECT */ - SAMPLERBUFFER = 436, /* SAMPLERBUFFER */ - ISAMPLERBUFFER = 437, /* ISAMPLERBUFFER */ - USAMPLERBUFFER = 438, /* USAMPLERBUFFER */ - SAMPLER2DMS = 439, /* SAMPLER2DMS */ - ISAMPLER2DMS = 440, /* ISAMPLER2DMS */ - USAMPLER2DMS = 441, /* USAMPLER2DMS */ - SAMPLER2DMSARRAY = 442, /* SAMPLER2DMSARRAY */ - ISAMPLER2DMSARRAY = 443, /* ISAMPLER2DMSARRAY */ - USAMPLER2DMSARRAY = 444, /* USAMPLER2DMSARRAY */ - SAMPLEREXTERNALOES = 445, /* SAMPLEREXTERNALOES */ - SAMPLEREXTERNAL2DY2YEXT = 446, /* SAMPLEREXTERNAL2DY2YEXT */ - ISAMPLER1DARRAY = 447, /* ISAMPLER1DARRAY */ - USAMPLER1D = 448, /* USAMPLER1D */ - USAMPLER1DARRAY = 449, /* USAMPLER1DARRAY */ - F16SAMPLER1D = 450, /* F16SAMPLER1D */ - F16SAMPLER2D = 451, /* F16SAMPLER2D */ - F16SAMPLER3D = 452, /* F16SAMPLER3D */ - F16SAMPLER2DRECT = 453, /* F16SAMPLER2DRECT */ - F16SAMPLERCUBE = 454, /* F16SAMPLERCUBE */ - F16SAMPLER1DARRAY = 455, /* F16SAMPLER1DARRAY */ - F16SAMPLER2DARRAY = 456, /* F16SAMPLER2DARRAY */ - F16SAMPLERCUBEARRAY = 457, /* F16SAMPLERCUBEARRAY */ - F16SAMPLERBUFFER = 458, /* F16SAMPLERBUFFER */ - F16SAMPLER2DMS = 459, /* F16SAMPLER2DMS */ - F16SAMPLER2DMSARRAY = 460, /* F16SAMPLER2DMSARRAY */ - F16SAMPLER1DSHADOW = 461, /* F16SAMPLER1DSHADOW */ - F16SAMPLER2DSHADOW = 462, /* F16SAMPLER2DSHADOW */ - F16SAMPLER1DARRAYSHADOW = 463, /* F16SAMPLER1DARRAYSHADOW */ - F16SAMPLER2DARRAYSHADOW = 464, /* F16SAMPLER2DARRAYSHADOW */ - F16SAMPLER2DRECTSHADOW = 465, /* F16SAMPLER2DRECTSHADOW */ - F16SAMPLERCUBESHADOW = 466, /* F16SAMPLERCUBESHADOW */ - F16SAMPLERCUBEARRAYSHADOW = 467, /* F16SAMPLERCUBEARRAYSHADOW */ - IMAGE1D = 468, /* IMAGE1D */ - IIMAGE1D = 469, /* IIMAGE1D */ - UIMAGE1D = 470, /* UIMAGE1D */ - IMAGE2D = 471, /* IMAGE2D */ - IIMAGE2D = 472, /* IIMAGE2D */ - UIMAGE2D = 473, /* UIMAGE2D */ - IMAGE3D = 474, /* IMAGE3D */ - IIMAGE3D = 475, /* IIMAGE3D */ - UIMAGE3D = 476, /* UIMAGE3D */ - IMAGE2DRECT = 477, /* IMAGE2DRECT */ - IIMAGE2DRECT = 478, /* IIMAGE2DRECT */ - UIMAGE2DRECT = 479, /* UIMAGE2DRECT */ - IMAGECUBE = 480, /* IMAGECUBE */ - IIMAGECUBE = 481, /* IIMAGECUBE */ - UIMAGECUBE = 482, /* UIMAGECUBE */ - IMAGEBUFFER = 483, /* IMAGEBUFFER */ - IIMAGEBUFFER = 484, /* IIMAGEBUFFER */ - UIMAGEBUFFER = 485, /* UIMAGEBUFFER */ - IMAGE1DARRAY = 486, /* IMAGE1DARRAY */ - IIMAGE1DARRAY = 487, /* IIMAGE1DARRAY */ - UIMAGE1DARRAY = 488, /* UIMAGE1DARRAY */ - IMAGE2DARRAY = 489, /* IMAGE2DARRAY */ - IIMAGE2DARRAY = 490, /* IIMAGE2DARRAY */ - UIMAGE2DARRAY = 491, /* UIMAGE2DARRAY */ - IMAGECUBEARRAY = 492, /* IMAGECUBEARRAY */ - IIMAGECUBEARRAY = 493, /* IIMAGECUBEARRAY */ - UIMAGECUBEARRAY = 494, /* UIMAGECUBEARRAY */ - IMAGE2DMS = 495, /* IMAGE2DMS */ - IIMAGE2DMS = 496, /* IIMAGE2DMS */ - UIMAGE2DMS = 497, /* UIMAGE2DMS */ - IMAGE2DMSARRAY = 498, /* IMAGE2DMSARRAY */ - IIMAGE2DMSARRAY = 499, /* IIMAGE2DMSARRAY */ - UIMAGE2DMSARRAY = 500, /* UIMAGE2DMSARRAY */ - F16IMAGE1D = 501, /* F16IMAGE1D */ - F16IMAGE2D = 502, /* F16IMAGE2D */ - F16IMAGE3D = 503, /* F16IMAGE3D */ - F16IMAGE2DRECT = 504, /* F16IMAGE2DRECT */ - F16IMAGECUBE = 505, /* F16IMAGECUBE */ - F16IMAGE1DARRAY = 506, /* F16IMAGE1DARRAY */ - F16IMAGE2DARRAY = 507, /* F16IMAGE2DARRAY */ - F16IMAGECUBEARRAY = 508, /* F16IMAGECUBEARRAY */ - F16IMAGEBUFFER = 509, /* F16IMAGEBUFFER */ - F16IMAGE2DMS = 510, /* F16IMAGE2DMS */ - F16IMAGE2DMSARRAY = 511, /* F16IMAGE2DMSARRAY */ - I64IMAGE1D = 512, /* I64IMAGE1D */ - U64IMAGE1D = 513, /* U64IMAGE1D */ - I64IMAGE2D = 514, /* I64IMAGE2D */ - U64IMAGE2D = 515, /* U64IMAGE2D */ - I64IMAGE3D = 516, /* I64IMAGE3D */ - U64IMAGE3D = 517, /* U64IMAGE3D */ - I64IMAGE2DRECT = 518, /* I64IMAGE2DRECT */ - U64IMAGE2DRECT = 519, /* U64IMAGE2DRECT */ - I64IMAGECUBE = 520, /* I64IMAGECUBE */ - U64IMAGECUBE = 521, /* U64IMAGECUBE */ - I64IMAGEBUFFER = 522, /* I64IMAGEBUFFER */ - U64IMAGEBUFFER = 523, /* U64IMAGEBUFFER */ - I64IMAGE1DARRAY = 524, /* I64IMAGE1DARRAY */ - U64IMAGE1DARRAY = 525, /* U64IMAGE1DARRAY */ - I64IMAGE2DARRAY = 526, /* I64IMAGE2DARRAY */ - U64IMAGE2DARRAY = 527, /* U64IMAGE2DARRAY */ - I64IMAGECUBEARRAY = 528, /* I64IMAGECUBEARRAY */ - U64IMAGECUBEARRAY = 529, /* U64IMAGECUBEARRAY */ - I64IMAGE2DMS = 530, /* I64IMAGE2DMS */ - U64IMAGE2DMS = 531, /* U64IMAGE2DMS */ - I64IMAGE2DMSARRAY = 532, /* I64IMAGE2DMSARRAY */ - U64IMAGE2DMSARRAY = 533, /* U64IMAGE2DMSARRAY */ - TEXTURECUBEARRAY = 534, /* TEXTURECUBEARRAY */ - ITEXTURECUBEARRAY = 535, /* ITEXTURECUBEARRAY */ - UTEXTURECUBEARRAY = 536, /* UTEXTURECUBEARRAY */ - TEXTURE1D = 537, /* TEXTURE1D */ - ITEXTURE1D = 538, /* ITEXTURE1D */ - UTEXTURE1D = 539, /* UTEXTURE1D */ - TEXTURE1DARRAY = 540, /* TEXTURE1DARRAY */ - ITEXTURE1DARRAY = 541, /* ITEXTURE1DARRAY */ - UTEXTURE1DARRAY = 542, /* UTEXTURE1DARRAY */ - TEXTURE2DRECT = 543, /* TEXTURE2DRECT */ - ITEXTURE2DRECT = 544, /* ITEXTURE2DRECT */ - UTEXTURE2DRECT = 545, /* UTEXTURE2DRECT */ - TEXTUREBUFFER = 546, /* TEXTUREBUFFER */ - ITEXTUREBUFFER = 547, /* ITEXTUREBUFFER */ - UTEXTUREBUFFER = 548, /* UTEXTUREBUFFER */ - TEXTURE2DMS = 549, /* TEXTURE2DMS */ - ITEXTURE2DMS = 550, /* ITEXTURE2DMS */ - UTEXTURE2DMS = 551, /* UTEXTURE2DMS */ - TEXTURE2DMSARRAY = 552, /* TEXTURE2DMSARRAY */ - ITEXTURE2DMSARRAY = 553, /* ITEXTURE2DMSARRAY */ - UTEXTURE2DMSARRAY = 554, /* UTEXTURE2DMSARRAY */ - F16TEXTURE1D = 555, /* F16TEXTURE1D */ - F16TEXTURE2D = 556, /* F16TEXTURE2D */ - F16TEXTURE3D = 557, /* F16TEXTURE3D */ - F16TEXTURE2DRECT = 558, /* F16TEXTURE2DRECT */ - F16TEXTURECUBE = 559, /* F16TEXTURECUBE */ - F16TEXTURE1DARRAY = 560, /* F16TEXTURE1DARRAY */ - F16TEXTURE2DARRAY = 561, /* F16TEXTURE2DARRAY */ - F16TEXTURECUBEARRAY = 562, /* F16TEXTURECUBEARRAY */ - F16TEXTUREBUFFER = 563, /* F16TEXTUREBUFFER */ - F16TEXTURE2DMS = 564, /* F16TEXTURE2DMS */ - F16TEXTURE2DMSARRAY = 565, /* F16TEXTURE2DMSARRAY */ - SUBPASSINPUT = 566, /* SUBPASSINPUT */ - SUBPASSINPUTMS = 567, /* SUBPASSINPUTMS */ - ISUBPASSINPUT = 568, /* ISUBPASSINPUT */ - ISUBPASSINPUTMS = 569, /* ISUBPASSINPUTMS */ - USUBPASSINPUT = 570, /* USUBPASSINPUT */ - USUBPASSINPUTMS = 571, /* USUBPASSINPUTMS */ - F16SUBPASSINPUT = 572, /* F16SUBPASSINPUT */ - F16SUBPASSINPUTMS = 573, /* F16SUBPASSINPUTMS */ - SPIRV_INSTRUCTION = 574, /* SPIRV_INSTRUCTION */ - SPIRV_EXECUTION_MODE = 575, /* SPIRV_EXECUTION_MODE */ - SPIRV_EXECUTION_MODE_ID = 576, /* SPIRV_EXECUTION_MODE_ID */ - SPIRV_DECORATE = 577, /* SPIRV_DECORATE */ - SPIRV_DECORATE_ID = 578, /* SPIRV_DECORATE_ID */ - SPIRV_DECORATE_STRING = 579, /* SPIRV_DECORATE_STRING */ - SPIRV_TYPE = 580, /* SPIRV_TYPE */ - SPIRV_STORAGE_CLASS = 581, /* SPIRV_STORAGE_CLASS */ - SPIRV_BY_REFERENCE = 582, /* SPIRV_BY_REFERENCE */ - SPIRV_LITERAL = 583, /* SPIRV_LITERAL */ - ATTACHMENTEXT = 584, /* ATTACHMENTEXT */ - IATTACHMENTEXT = 585, /* IATTACHMENTEXT */ - UATTACHMENTEXT = 586, /* UATTACHMENTEXT */ - LEFT_OP = 587, /* LEFT_OP */ - RIGHT_OP = 588, /* RIGHT_OP */ - INC_OP = 589, /* INC_OP */ - DEC_OP = 590, /* DEC_OP */ - LE_OP = 591, /* LE_OP */ - GE_OP = 592, /* GE_OP */ - EQ_OP = 593, /* EQ_OP */ - NE_OP = 594, /* NE_OP */ - AND_OP = 595, /* AND_OP */ - OR_OP = 596, /* OR_OP */ - XOR_OP = 597, /* XOR_OP */ - MUL_ASSIGN = 598, /* MUL_ASSIGN */ - DIV_ASSIGN = 599, /* DIV_ASSIGN */ - ADD_ASSIGN = 600, /* ADD_ASSIGN */ - MOD_ASSIGN = 601, /* MOD_ASSIGN */ - LEFT_ASSIGN = 602, /* LEFT_ASSIGN */ - RIGHT_ASSIGN = 603, /* RIGHT_ASSIGN */ - AND_ASSIGN = 604, /* AND_ASSIGN */ - XOR_ASSIGN = 605, /* XOR_ASSIGN */ - OR_ASSIGN = 606, /* OR_ASSIGN */ - SUB_ASSIGN = 607, /* SUB_ASSIGN */ - STRING_LITERAL = 608, /* STRING_LITERAL */ - LEFT_PAREN = 609, /* LEFT_PAREN */ - RIGHT_PAREN = 610, /* RIGHT_PAREN */ - LEFT_BRACKET = 611, /* LEFT_BRACKET */ - RIGHT_BRACKET = 612, /* RIGHT_BRACKET */ - LEFT_BRACE = 613, /* LEFT_BRACE */ - RIGHT_BRACE = 614, /* RIGHT_BRACE */ - DOT = 615, /* DOT */ - COMMA = 616, /* COMMA */ - COLON = 617, /* COLON */ - EQUAL = 618, /* EQUAL */ - SEMICOLON = 619, /* SEMICOLON */ - BANG = 620, /* BANG */ - DASH = 621, /* DASH */ - TILDE = 622, /* TILDE */ - PLUS = 623, /* PLUS */ - STAR = 624, /* STAR */ - SLASH = 625, /* SLASH */ - PERCENT = 626, /* PERCENT */ - LEFT_ANGLE = 627, /* LEFT_ANGLE */ - RIGHT_ANGLE = 628, /* RIGHT_ANGLE */ - VERTICAL_BAR = 629, /* VERTICAL_BAR */ - CARET = 630, /* CARET */ - AMPERSAND = 631, /* AMPERSAND */ - QUESTION = 632, /* QUESTION */ - INVARIANT = 633, /* INVARIANT */ - HIGH_PRECISION = 634, /* HIGH_PRECISION */ - MEDIUM_PRECISION = 635, /* MEDIUM_PRECISION */ - LOW_PRECISION = 636, /* LOW_PRECISION */ - PRECISION = 637, /* PRECISION */ - PACKED = 638, /* PACKED */ - RESOURCE = 639, /* RESOURCE */ - SUPERP = 640, /* SUPERP */ - FLOATCONSTANT = 641, /* FLOATCONSTANT */ - INTCONSTANT = 642, /* INTCONSTANT */ - UINTCONSTANT = 643, /* UINTCONSTANT */ - BOOLCONSTANT = 644, /* BOOLCONSTANT */ - IDENTIFIER = 645, /* IDENTIFIER */ - TYPE_NAME = 646, /* TYPE_NAME */ - CENTROID = 647, /* CENTROID */ - IN = 648, /* IN */ - OUT = 649, /* OUT */ - INOUT = 650, /* INOUT */ - STRUCT = 651, /* STRUCT */ - VOID = 652, /* VOID */ - WHILE = 653, /* WHILE */ - BREAK = 654, /* BREAK */ - CONTINUE = 655, /* CONTINUE */ - DO = 656, /* DO */ - ELSE = 657, /* ELSE */ - FOR = 658, /* FOR */ - IF = 659, /* IF */ - DISCARD = 660, /* DISCARD */ - RETURN = 661, /* RETURN */ - SWITCH = 662, /* SWITCH */ - CASE = 663, /* CASE */ - DEFAULT = 664, /* DEFAULT */ - TERMINATE_INVOCATION = 665, /* TERMINATE_INVOCATION */ - TERMINATE_RAY = 666, /* TERMINATE_RAY */ - IGNORE_INTERSECTION = 667, /* IGNORE_INTERSECTION */ - UNIFORM = 668, /* UNIFORM */ - SHARED = 669, /* SHARED */ - BUFFER = 670, /* BUFFER */ - TILEIMAGEEXT = 671, /* TILEIMAGEEXT */ - FLAT = 672, /* FLAT */ - SMOOTH = 673, /* SMOOTH */ - LAYOUT = 674, /* LAYOUT */ - DOUBLECONSTANT = 675, /* DOUBLECONSTANT */ - INT16CONSTANT = 676, /* INT16CONSTANT */ - UINT16CONSTANT = 677, /* UINT16CONSTANT */ - FLOAT16CONSTANT = 678, /* FLOAT16CONSTANT */ - INT32CONSTANT = 679, /* INT32CONSTANT */ - UINT32CONSTANT = 680, /* UINT32CONSTANT */ - INT64CONSTANT = 681, /* INT64CONSTANT */ - UINT64CONSTANT = 682, /* UINT64CONSTANT */ - SUBROUTINE = 683, /* SUBROUTINE */ - DEMOTE = 684, /* DEMOTE */ - PAYLOADNV = 685, /* PAYLOADNV */ - PAYLOADINNV = 686, /* PAYLOADINNV */ - HITATTRNV = 687, /* HITATTRNV */ - CALLDATANV = 688, /* CALLDATANV */ - CALLDATAINNV = 689, /* CALLDATAINNV */ - PAYLOADEXT = 690, /* PAYLOADEXT */ - PAYLOADINEXT = 691, /* PAYLOADINEXT */ - HITATTREXT = 692, /* HITATTREXT */ - CALLDATAEXT = 693, /* CALLDATAEXT */ - CALLDATAINEXT = 694, /* CALLDATAINEXT */ - PATCH = 695, /* PATCH */ - SAMPLE = 696, /* SAMPLE */ - NONUNIFORM = 697, /* NONUNIFORM */ - COHERENT = 698, /* COHERENT */ - VOLATILE = 699, /* VOLATILE */ - RESTRICT = 700, /* RESTRICT */ - READONLY = 701, /* READONLY */ - WRITEONLY = 702, /* WRITEONLY */ - DEVICECOHERENT = 703, /* DEVICECOHERENT */ - QUEUEFAMILYCOHERENT = 704, /* QUEUEFAMILYCOHERENT */ - WORKGROUPCOHERENT = 705, /* WORKGROUPCOHERENT */ - SUBGROUPCOHERENT = 706, /* SUBGROUPCOHERENT */ - NONPRIVATE = 707, /* NONPRIVATE */ - SHADERCALLCOHERENT = 708, /* SHADERCALLCOHERENT */ - NOPERSPECTIVE = 709, /* NOPERSPECTIVE */ - EXPLICITINTERPAMD = 710, /* EXPLICITINTERPAMD */ - PERVERTEXEXT = 711, /* PERVERTEXEXT */ - PERVERTEXNV = 712, /* PERVERTEXNV */ - PERPRIMITIVENV = 713, /* PERPRIMITIVENV */ - PERVIEWNV = 714, /* PERVIEWNV */ - PERTASKNV = 715, /* PERTASKNV */ - PERPRIMITIVEEXT = 716, /* PERPRIMITIVEEXT */ - TASKPAYLOADWORKGROUPEXT = 717, /* TASKPAYLOADWORKGROUPEXT */ - PRECISE = 718 /* PRECISE */ + COOPMAT = 421, /* COOPMAT */ + HITOBJECTNV = 422, /* HITOBJECTNV */ + HITOBJECTATTRNV = 423, /* HITOBJECTATTRNV */ + SAMPLERCUBEARRAY = 424, /* SAMPLERCUBEARRAY */ + SAMPLERCUBEARRAYSHADOW = 425, /* SAMPLERCUBEARRAYSHADOW */ + ISAMPLERCUBEARRAY = 426, /* ISAMPLERCUBEARRAY */ + USAMPLERCUBEARRAY = 427, /* USAMPLERCUBEARRAY */ + SAMPLER1D = 428, /* SAMPLER1D */ + SAMPLER1DARRAY = 429, /* SAMPLER1DARRAY */ + SAMPLER1DARRAYSHADOW = 430, /* SAMPLER1DARRAYSHADOW */ + ISAMPLER1D = 431, /* ISAMPLER1D */ + SAMPLER1DSHADOW = 432, /* SAMPLER1DSHADOW */ + SAMPLER2DRECT = 433, /* SAMPLER2DRECT */ + SAMPLER2DRECTSHADOW = 434, /* SAMPLER2DRECTSHADOW */ + ISAMPLER2DRECT = 435, /* ISAMPLER2DRECT */ + USAMPLER2DRECT = 436, /* USAMPLER2DRECT */ + SAMPLERBUFFER = 437, /* SAMPLERBUFFER */ + ISAMPLERBUFFER = 438, /* ISAMPLERBUFFER */ + USAMPLERBUFFER = 439, /* USAMPLERBUFFER */ + SAMPLER2DMS = 440, /* SAMPLER2DMS */ + ISAMPLER2DMS = 441, /* ISAMPLER2DMS */ + USAMPLER2DMS = 442, /* USAMPLER2DMS */ + SAMPLER2DMSARRAY = 443, /* SAMPLER2DMSARRAY */ + ISAMPLER2DMSARRAY = 444, /* ISAMPLER2DMSARRAY */ + USAMPLER2DMSARRAY = 445, /* USAMPLER2DMSARRAY */ + SAMPLEREXTERNALOES = 446, /* SAMPLEREXTERNALOES */ + SAMPLEREXTERNAL2DY2YEXT = 447, /* SAMPLEREXTERNAL2DY2YEXT */ + ISAMPLER1DARRAY = 448, /* ISAMPLER1DARRAY */ + USAMPLER1D = 449, /* USAMPLER1D */ + USAMPLER1DARRAY = 450, /* USAMPLER1DARRAY */ + F16SAMPLER1D = 451, /* F16SAMPLER1D */ + F16SAMPLER2D = 452, /* F16SAMPLER2D */ + F16SAMPLER3D = 453, /* F16SAMPLER3D */ + F16SAMPLER2DRECT = 454, /* F16SAMPLER2DRECT */ + F16SAMPLERCUBE = 455, /* F16SAMPLERCUBE */ + F16SAMPLER1DARRAY = 456, /* F16SAMPLER1DARRAY */ + F16SAMPLER2DARRAY = 457, /* F16SAMPLER2DARRAY */ + F16SAMPLERCUBEARRAY = 458, /* F16SAMPLERCUBEARRAY */ + F16SAMPLERBUFFER = 459, /* F16SAMPLERBUFFER */ + F16SAMPLER2DMS = 460, /* F16SAMPLER2DMS */ + F16SAMPLER2DMSARRAY = 461, /* F16SAMPLER2DMSARRAY */ + F16SAMPLER1DSHADOW = 462, /* F16SAMPLER1DSHADOW */ + F16SAMPLER2DSHADOW = 463, /* F16SAMPLER2DSHADOW */ + F16SAMPLER1DARRAYSHADOW = 464, /* F16SAMPLER1DARRAYSHADOW */ + F16SAMPLER2DARRAYSHADOW = 465, /* F16SAMPLER2DARRAYSHADOW */ + F16SAMPLER2DRECTSHADOW = 466, /* F16SAMPLER2DRECTSHADOW */ + F16SAMPLERCUBESHADOW = 467, /* F16SAMPLERCUBESHADOW */ + F16SAMPLERCUBEARRAYSHADOW = 468, /* F16SAMPLERCUBEARRAYSHADOW */ + IMAGE1D = 469, /* IMAGE1D */ + IIMAGE1D = 470, /* IIMAGE1D */ + UIMAGE1D = 471, /* UIMAGE1D */ + IMAGE2D = 472, /* IMAGE2D */ + IIMAGE2D = 473, /* IIMAGE2D */ + UIMAGE2D = 474, /* UIMAGE2D */ + IMAGE3D = 475, /* IMAGE3D */ + IIMAGE3D = 476, /* IIMAGE3D */ + UIMAGE3D = 477, /* UIMAGE3D */ + IMAGE2DRECT = 478, /* IMAGE2DRECT */ + IIMAGE2DRECT = 479, /* IIMAGE2DRECT */ + UIMAGE2DRECT = 480, /* UIMAGE2DRECT */ + IMAGECUBE = 481, /* IMAGECUBE */ + IIMAGECUBE = 482, /* IIMAGECUBE */ + UIMAGECUBE = 483, /* UIMAGECUBE */ + IMAGEBUFFER = 484, /* IMAGEBUFFER */ + IIMAGEBUFFER = 485, /* IIMAGEBUFFER */ + UIMAGEBUFFER = 486, /* UIMAGEBUFFER */ + IMAGE1DARRAY = 487, /* IMAGE1DARRAY */ + IIMAGE1DARRAY = 488, /* IIMAGE1DARRAY */ + UIMAGE1DARRAY = 489, /* UIMAGE1DARRAY */ + IMAGE2DARRAY = 490, /* IMAGE2DARRAY */ + IIMAGE2DARRAY = 491, /* IIMAGE2DARRAY */ + UIMAGE2DARRAY = 492, /* UIMAGE2DARRAY */ + IMAGECUBEARRAY = 493, /* IMAGECUBEARRAY */ + IIMAGECUBEARRAY = 494, /* IIMAGECUBEARRAY */ + UIMAGECUBEARRAY = 495, /* UIMAGECUBEARRAY */ + IMAGE2DMS = 496, /* IMAGE2DMS */ + IIMAGE2DMS = 497, /* IIMAGE2DMS */ + UIMAGE2DMS = 498, /* UIMAGE2DMS */ + IMAGE2DMSARRAY = 499, /* IMAGE2DMSARRAY */ + IIMAGE2DMSARRAY = 500, /* IIMAGE2DMSARRAY */ + UIMAGE2DMSARRAY = 501, /* UIMAGE2DMSARRAY */ + F16IMAGE1D = 502, /* F16IMAGE1D */ + F16IMAGE2D = 503, /* F16IMAGE2D */ + F16IMAGE3D = 504, /* F16IMAGE3D */ + F16IMAGE2DRECT = 505, /* F16IMAGE2DRECT */ + F16IMAGECUBE = 506, /* F16IMAGECUBE */ + F16IMAGE1DARRAY = 507, /* F16IMAGE1DARRAY */ + F16IMAGE2DARRAY = 508, /* F16IMAGE2DARRAY */ + F16IMAGECUBEARRAY = 509, /* F16IMAGECUBEARRAY */ + F16IMAGEBUFFER = 510, /* F16IMAGEBUFFER */ + F16IMAGE2DMS = 511, /* F16IMAGE2DMS */ + F16IMAGE2DMSARRAY = 512, /* F16IMAGE2DMSARRAY */ + I64IMAGE1D = 513, /* I64IMAGE1D */ + U64IMAGE1D = 514, /* U64IMAGE1D */ + I64IMAGE2D = 515, /* I64IMAGE2D */ + U64IMAGE2D = 516, /* U64IMAGE2D */ + I64IMAGE3D = 517, /* I64IMAGE3D */ + U64IMAGE3D = 518, /* U64IMAGE3D */ + I64IMAGE2DRECT = 519, /* I64IMAGE2DRECT */ + U64IMAGE2DRECT = 520, /* U64IMAGE2DRECT */ + I64IMAGECUBE = 521, /* I64IMAGECUBE */ + U64IMAGECUBE = 522, /* U64IMAGECUBE */ + I64IMAGEBUFFER = 523, /* I64IMAGEBUFFER */ + U64IMAGEBUFFER = 524, /* U64IMAGEBUFFER */ + I64IMAGE1DARRAY = 525, /* I64IMAGE1DARRAY */ + U64IMAGE1DARRAY = 526, /* U64IMAGE1DARRAY */ + I64IMAGE2DARRAY = 527, /* I64IMAGE2DARRAY */ + U64IMAGE2DARRAY = 528, /* U64IMAGE2DARRAY */ + I64IMAGECUBEARRAY = 529, /* I64IMAGECUBEARRAY */ + U64IMAGECUBEARRAY = 530, /* U64IMAGECUBEARRAY */ + I64IMAGE2DMS = 531, /* I64IMAGE2DMS */ + U64IMAGE2DMS = 532, /* U64IMAGE2DMS */ + I64IMAGE2DMSARRAY = 533, /* I64IMAGE2DMSARRAY */ + U64IMAGE2DMSARRAY = 534, /* U64IMAGE2DMSARRAY */ + TEXTURECUBEARRAY = 535, /* TEXTURECUBEARRAY */ + ITEXTURECUBEARRAY = 536, /* ITEXTURECUBEARRAY */ + UTEXTURECUBEARRAY = 537, /* UTEXTURECUBEARRAY */ + TEXTURE1D = 538, /* TEXTURE1D */ + ITEXTURE1D = 539, /* ITEXTURE1D */ + UTEXTURE1D = 540, /* UTEXTURE1D */ + TEXTURE1DARRAY = 541, /* TEXTURE1DARRAY */ + ITEXTURE1DARRAY = 542, /* ITEXTURE1DARRAY */ + UTEXTURE1DARRAY = 543, /* UTEXTURE1DARRAY */ + TEXTURE2DRECT = 544, /* TEXTURE2DRECT */ + ITEXTURE2DRECT = 545, /* ITEXTURE2DRECT */ + UTEXTURE2DRECT = 546, /* UTEXTURE2DRECT */ + TEXTUREBUFFER = 547, /* TEXTUREBUFFER */ + ITEXTUREBUFFER = 548, /* ITEXTUREBUFFER */ + UTEXTUREBUFFER = 549, /* UTEXTUREBUFFER */ + TEXTURE2DMS = 550, /* TEXTURE2DMS */ + ITEXTURE2DMS = 551, /* ITEXTURE2DMS */ + UTEXTURE2DMS = 552, /* UTEXTURE2DMS */ + TEXTURE2DMSARRAY = 553, /* TEXTURE2DMSARRAY */ + ITEXTURE2DMSARRAY = 554, /* ITEXTURE2DMSARRAY */ + UTEXTURE2DMSARRAY = 555, /* UTEXTURE2DMSARRAY */ + F16TEXTURE1D = 556, /* F16TEXTURE1D */ + F16TEXTURE2D = 557, /* F16TEXTURE2D */ + F16TEXTURE3D = 558, /* F16TEXTURE3D */ + F16TEXTURE2DRECT = 559, /* F16TEXTURE2DRECT */ + F16TEXTURECUBE = 560, /* F16TEXTURECUBE */ + F16TEXTURE1DARRAY = 561, /* F16TEXTURE1DARRAY */ + F16TEXTURE2DARRAY = 562, /* F16TEXTURE2DARRAY */ + F16TEXTURECUBEARRAY = 563, /* F16TEXTURECUBEARRAY */ + F16TEXTUREBUFFER = 564, /* F16TEXTUREBUFFER */ + F16TEXTURE2DMS = 565, /* F16TEXTURE2DMS */ + F16TEXTURE2DMSARRAY = 566, /* F16TEXTURE2DMSARRAY */ + SUBPASSINPUT = 567, /* SUBPASSINPUT */ + SUBPASSINPUTMS = 568, /* SUBPASSINPUTMS */ + ISUBPASSINPUT = 569, /* ISUBPASSINPUT */ + ISUBPASSINPUTMS = 570, /* ISUBPASSINPUTMS */ + USUBPASSINPUT = 571, /* USUBPASSINPUT */ + USUBPASSINPUTMS = 572, /* USUBPASSINPUTMS */ + F16SUBPASSINPUT = 573, /* F16SUBPASSINPUT */ + F16SUBPASSINPUTMS = 574, /* F16SUBPASSINPUTMS */ + SPIRV_INSTRUCTION = 575, /* SPIRV_INSTRUCTION */ + SPIRV_EXECUTION_MODE = 576, /* SPIRV_EXECUTION_MODE */ + SPIRV_EXECUTION_MODE_ID = 577, /* SPIRV_EXECUTION_MODE_ID */ + SPIRV_DECORATE = 578, /* SPIRV_DECORATE */ + SPIRV_DECORATE_ID = 579, /* SPIRV_DECORATE_ID */ + SPIRV_DECORATE_STRING = 580, /* SPIRV_DECORATE_STRING */ + SPIRV_TYPE = 581, /* SPIRV_TYPE */ + SPIRV_STORAGE_CLASS = 582, /* SPIRV_STORAGE_CLASS */ + SPIRV_BY_REFERENCE = 583, /* SPIRV_BY_REFERENCE */ + SPIRV_LITERAL = 584, /* SPIRV_LITERAL */ + ATTACHMENTEXT = 585, /* ATTACHMENTEXT */ + IATTACHMENTEXT = 586, /* IATTACHMENTEXT */ + UATTACHMENTEXT = 587, /* UATTACHMENTEXT */ + LEFT_OP = 588, /* LEFT_OP */ + RIGHT_OP = 589, /* RIGHT_OP */ + INC_OP = 590, /* INC_OP */ + DEC_OP = 591, /* DEC_OP */ + LE_OP = 592, /* LE_OP */ + GE_OP = 593, /* GE_OP */ + EQ_OP = 594, /* EQ_OP */ + NE_OP = 595, /* NE_OP */ + AND_OP = 596, /* AND_OP */ + OR_OP = 597, /* OR_OP */ + XOR_OP = 598, /* XOR_OP */ + MUL_ASSIGN = 599, /* MUL_ASSIGN */ + DIV_ASSIGN = 600, /* DIV_ASSIGN */ + ADD_ASSIGN = 601, /* ADD_ASSIGN */ + MOD_ASSIGN = 602, /* MOD_ASSIGN */ + LEFT_ASSIGN = 603, /* LEFT_ASSIGN */ + RIGHT_ASSIGN = 604, /* RIGHT_ASSIGN */ + AND_ASSIGN = 605, /* AND_ASSIGN */ + XOR_ASSIGN = 606, /* XOR_ASSIGN */ + OR_ASSIGN = 607, /* OR_ASSIGN */ + SUB_ASSIGN = 608, /* SUB_ASSIGN */ + STRING_LITERAL = 609, /* STRING_LITERAL */ + LEFT_PAREN = 610, /* LEFT_PAREN */ + RIGHT_PAREN = 611, /* RIGHT_PAREN */ + LEFT_BRACKET = 612, /* LEFT_BRACKET */ + RIGHT_BRACKET = 613, /* RIGHT_BRACKET */ + LEFT_BRACE = 614, /* LEFT_BRACE */ + RIGHT_BRACE = 615, /* RIGHT_BRACE */ + DOT = 616, /* DOT */ + COMMA = 617, /* COMMA */ + COLON = 618, /* COLON */ + EQUAL = 619, /* EQUAL */ + SEMICOLON = 620, /* SEMICOLON */ + BANG = 621, /* BANG */ + DASH = 622, /* DASH */ + TILDE = 623, /* TILDE */ + PLUS = 624, /* PLUS */ + STAR = 625, /* STAR */ + SLASH = 626, /* SLASH */ + PERCENT = 627, /* PERCENT */ + LEFT_ANGLE = 628, /* LEFT_ANGLE */ + RIGHT_ANGLE = 629, /* RIGHT_ANGLE */ + VERTICAL_BAR = 630, /* VERTICAL_BAR */ + CARET = 631, /* CARET */ + AMPERSAND = 632, /* AMPERSAND */ + QUESTION = 633, /* QUESTION */ + INVARIANT = 634, /* INVARIANT */ + HIGH_PRECISION = 635, /* HIGH_PRECISION */ + MEDIUM_PRECISION = 636, /* MEDIUM_PRECISION */ + LOW_PRECISION = 637, /* LOW_PRECISION */ + PRECISION = 638, /* PRECISION */ + PACKED = 639, /* PACKED */ + RESOURCE = 640, /* RESOURCE */ + SUPERP = 641, /* SUPERP */ + FLOATCONSTANT = 642, /* FLOATCONSTANT */ + INTCONSTANT = 643, /* INTCONSTANT */ + UINTCONSTANT = 644, /* UINTCONSTANT */ + BOOLCONSTANT = 645, /* BOOLCONSTANT */ + IDENTIFIER = 646, /* IDENTIFIER */ + TYPE_NAME = 647, /* TYPE_NAME */ + CENTROID = 648, /* CENTROID */ + IN = 649, /* IN */ + OUT = 650, /* OUT */ + INOUT = 651, /* INOUT */ + STRUCT = 652, /* STRUCT */ + VOID = 653, /* VOID */ + WHILE = 654, /* WHILE */ + BREAK = 655, /* BREAK */ + CONTINUE = 656, /* CONTINUE */ + DO = 657, /* DO */ + ELSE = 658, /* ELSE */ + FOR = 659, /* FOR */ + IF = 660, /* IF */ + DISCARD = 661, /* DISCARD */ + RETURN = 662, /* RETURN */ + SWITCH = 663, /* SWITCH */ + CASE = 664, /* CASE */ + DEFAULT = 665, /* DEFAULT */ + TERMINATE_INVOCATION = 666, /* TERMINATE_INVOCATION */ + TERMINATE_RAY = 667, /* TERMINATE_RAY */ + IGNORE_INTERSECTION = 668, /* IGNORE_INTERSECTION */ + UNIFORM = 669, /* UNIFORM */ + SHARED = 670, /* SHARED */ + BUFFER = 671, /* BUFFER */ + TILEIMAGEEXT = 672, /* TILEIMAGEEXT */ + FLAT = 673, /* FLAT */ + SMOOTH = 674, /* SMOOTH */ + LAYOUT = 675, /* LAYOUT */ + DOUBLECONSTANT = 676, /* DOUBLECONSTANT */ + INT16CONSTANT = 677, /* INT16CONSTANT */ + UINT16CONSTANT = 678, /* UINT16CONSTANT */ + FLOAT16CONSTANT = 679, /* FLOAT16CONSTANT */ + INT32CONSTANT = 680, /* INT32CONSTANT */ + UINT32CONSTANT = 681, /* UINT32CONSTANT */ + INT64CONSTANT = 682, /* INT64CONSTANT */ + UINT64CONSTANT = 683, /* UINT64CONSTANT */ + SUBROUTINE = 684, /* SUBROUTINE */ + DEMOTE = 685, /* DEMOTE */ + PAYLOADNV = 686, /* PAYLOADNV */ + PAYLOADINNV = 687, /* PAYLOADINNV */ + HITATTRNV = 688, /* HITATTRNV */ + CALLDATANV = 689, /* CALLDATANV */ + CALLDATAINNV = 690, /* CALLDATAINNV */ + PAYLOADEXT = 691, /* PAYLOADEXT */ + PAYLOADINEXT = 692, /* PAYLOADINEXT */ + HITATTREXT = 693, /* HITATTREXT */ + CALLDATAEXT = 694, /* CALLDATAEXT */ + CALLDATAINEXT = 695, /* CALLDATAINEXT */ + PATCH = 696, /* PATCH */ + SAMPLE = 697, /* SAMPLE */ + NONUNIFORM = 698, /* NONUNIFORM */ + COHERENT = 699, /* COHERENT */ + VOLATILE = 700, /* VOLATILE */ + RESTRICT = 701, /* RESTRICT */ + READONLY = 702, /* READONLY */ + WRITEONLY = 703, /* WRITEONLY */ + DEVICECOHERENT = 704, /* DEVICECOHERENT */ + QUEUEFAMILYCOHERENT = 705, /* QUEUEFAMILYCOHERENT */ + WORKGROUPCOHERENT = 706, /* WORKGROUPCOHERENT */ + SUBGROUPCOHERENT = 707, /* SUBGROUPCOHERENT */ + NONPRIVATE = 708, /* NONPRIVATE */ + SHADERCALLCOHERENT = 709, /* SHADERCALLCOHERENT */ + NOPERSPECTIVE = 710, /* NOPERSPECTIVE */ + EXPLICITINTERPAMD = 711, /* EXPLICITINTERPAMD */ + PERVERTEXEXT = 712, /* PERVERTEXEXT */ + PERVERTEXNV = 713, /* PERVERTEXNV */ + PERPRIMITIVENV = 714, /* PERPRIMITIVENV */ + PERVIEWNV = 715, /* PERVIEWNV */ + PERTASKNV = 716, /* PERTASKNV */ + PERPRIMITIVEEXT = 717, /* PERPRIMITIVEEXT */ + TASKPAYLOADWORKGROUPEXT = 718, /* TASKPAYLOADWORKGROUPEXT */ + PRECISE = 719 /* PRECISE */ }; typedef enum yytokentype yytoken_kind_t; #endif @@ -559,10 +560,10 @@ union YYSTYPE glslang::TArraySizes* arraySizes; glslang::TIdentifierList* identifierList; }; - glslang::TArraySizes* typeParameters; + glslang::TTypeParameters* typeParameters; } interm; -#line 566 "MachineIndependent/glslang_tab.cpp.h" +#line 567 "MachineIndependent/glslang_tab.cpp.h" }; typedef union YYSTYPE YYSTYPE; @@ -572,6 +573,8 @@ typedef union YYSTYPE YYSTYPE; + int yyparse (glslang::TParseContext* pParseContext); + #endif /* !YY_YY_MACHINEINDEPENDENT_GLSLANG_TAB_CPP_H_INCLUDED */ diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index b79bd464d3..007aa037f8 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -809,7 +809,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpConstructStruct: out.debug << "Construct structure"; break; case EOpConstructTextureSampler: out.debug << "Construct combined texture-sampler"; break; case EOpConstructReference: out.debug << "Construct reference"; break; - case EOpConstructCooperativeMatrix: out.debug << "Construct cooperative matrix"; break; + case EOpConstructCooperativeMatrixNV: out.debug << "Construct cooperative matrix NV"; break; + case EOpConstructCooperativeMatrixKHR: out.debug << "Construct cooperative matrix KHR"; break; case EOpConstructAccStruct: out.debug << "Construct acceleration structure"; break; case EOpLessThan: out.debug << "Compare Less Than"; break; @@ -1103,9 +1104,12 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpRayQueryGetIntersectionWorldToObject: out.debug << "rayQueryGetIntersectionWorldToObjectEXT"; break; case EOpRayQueryGetIntersectionTriangleVertexPositionsEXT: out.debug << "rayQueryGetIntersectionTriangleVertexPositionsEXT"; break; - case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix"; break; - case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix"; break; - case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices"; break; + case EOpCooperativeMatrixLoad: out.debug << "Load cooperative matrix KHR"; break; + case EOpCooperativeMatrixStore: out.debug << "Store cooperative matrix KHR"; break; + case EOpCooperativeMatrixMulAdd: out.debug << "MulAdd cooperative matrices KHR"; break; + case EOpCooperativeMatrixLoadNV: out.debug << "Load cooperative matrix NV"; break; + case EOpCooperativeMatrixStoreNV: out.debug << "Store cooperative matrix NV"; break; + case EOpCooperativeMatrixMulAddNV: out.debug << "MulAdd cooperative matrices NV"; break; case EOpIsHelperInvocation: out.debug << "IsHelperInvocation"; break; case EOpDebugPrintf: out.debug << "Debug printf"; break; diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index c9f82d05d8..d0507d361c 100644 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -162,8 +162,9 @@ class TParseVersions { virtual void explicitInt32Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false); virtual void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false); - virtual void fcoopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false); - virtual void intcoopmatCheck(const TSourceLoc&, const char *op, bool builtIn = false); + virtual void fcoopmatCheckNV(const TSourceLoc&, const char* op, bool builtIn = false); + virtual void intcoopmatCheckNV(const TSourceLoc&, const char *op, bool builtIn = false); + virtual void coopmatCheck(const TSourceLoc&, const char* op, bool builtIn = false); bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; } bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; } bool isForwardCompatible() const { return forwardCompatible; } diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 2aee2d1eee..e918d16d14 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -345,6 +345,12 @@ INSTANTIATE_TEST_SUITE_P( "spv.conversion.frag", "spv.coopmat.comp", "spv.coopmat_Error.comp", + "spv.coopmatKHR.comp", + "spv.coopmatKHR_arithmetic.comp", + "spv.coopmatKHR_arithmeticError.comp", + "spv.coopmatKHR_Error.comp", + "spv.coopmatKHR_constructor.comp", + "spv.coopmatKHR_constructorError.comp", "spv.dataOut.frag", "spv.dataOutIndirect.frag", "spv.dataOutIndirect.vert", From 775864ef74fe1aa1a2a46f354e616908c475c77f Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Tue, 14 Jul 2020 18:32:12 +0100 Subject: [PATCH 245/594] Simplify PoolAlloc with use of thread_local. glslang is using C++ 11, which has first class support for variables of the `thread_local` storage class. By dropping the use of the `OS_[GS]etTLSValue`, we can simplify the logic, and have it support a thread-local default allocator if none is provided. Issue: #2346 --- glslang/Include/InitializeGlobals.h | 2 +- glslang/MachineIndependent/PoolAlloc.cpp | 28 ++++++++++-------------- 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/glslang/Include/InitializeGlobals.h b/glslang/Include/InitializeGlobals.h index 95d0a40e99..b7fdd7aabc 100644 --- a/glslang/Include/InitializeGlobals.h +++ b/glslang/Include/InitializeGlobals.h @@ -37,7 +37,7 @@ namespace glslang { -bool InitializePoolIndex(); +inline bool InitializePoolIndex() { return true; } // DEPRECATED: No need to call } // end namespace glslang diff --git a/glslang/MachineIndependent/PoolAlloc.cpp b/glslang/MachineIndependent/PoolAlloc.cpp index c3a3928ce3..471a980409 100644 --- a/glslang/MachineIndependent/PoolAlloc.cpp +++ b/glslang/MachineIndependent/PoolAlloc.cpp @@ -35,34 +35,28 @@ #include "../Include/Common.h" #include "../Include/PoolAlloc.h" -#include "../Include/InitializeGlobals.h" -#include "../OSDependent/osinclude.h" - namespace glslang { -// Process-wide TLS index -OS_TLSIndex PoolIndex; +namespace { +thread_local TPoolAllocator* threadPoolAllocator = nullptr; + +TPoolAllocator* GetDefaultThreadPoolAllocator() +{ + thread_local TPoolAllocator defaultAllocator; + return &defaultAllocator; +} +} // anonymous namespace // Return the thread-specific current pool. TPoolAllocator& GetThreadPoolAllocator() { - return *static_cast(OS_GetTLSValue(PoolIndex)); + return *(threadPoolAllocator ? threadPoolAllocator : GetDefaultThreadPoolAllocator()); } // Set the thread-specific current pool. void SetThreadPoolAllocator(TPoolAllocator* poolAllocator) { - OS_SetTLSValue(PoolIndex, poolAllocator); -} - -// Process-wide set up of the TLS pool storage. -bool InitializePoolIndex() -{ - // Allocate a TLS index. - if ((PoolIndex = OS_AllocTLSIndex()) == OS_INVALID_TLS_INDEX) - return false; - - return true; + threadPoolAllocator = poolAllocator; } // From a0010e27baebaffc8db896103c0993392c662fbe Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Tue, 14 Jul 2020 18:34:45 +0100 Subject: [PATCH 246/594] Deprecate InitializeDll functions These were only used for TThreadPool, which now uses `thread_local`. --- OGLCompilersDLL/InitializeDll.cpp | 128 ------------------------------ OGLCompilersDLL/InitializeDll.h | 8 +- 2 files changed, 4 insertions(+), 132 deletions(-) diff --git a/OGLCompilersDLL/InitializeDll.cpp b/OGLCompilersDLL/InitializeDll.cpp index 9d81f57878..ab3762e011 100644 --- a/OGLCompilersDLL/InitializeDll.cpp +++ b/OGLCompilersDLL/InitializeDll.cpp @@ -32,134 +32,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#define SH_EXPORTING - -#include - -#include "InitializeDll.h" -#include "../glslang/Include/InitializeGlobals.h" -#include "../glslang/Public/ShaderLang.h" -#include "../glslang/Include/PoolAlloc.h" - namespace glslang { -OS_TLSIndex ThreadInitializeIndex = OS_INVALID_TLS_INDEX; - -// Per-process initialization. -// Needs to be called at least once before parsing, etc. is done. -// Will also do thread initialization for the calling thread; other -// threads will need to do that explicitly. -bool InitProcess() -{ - glslang::GetGlobalLock(); - - if (ThreadInitializeIndex != OS_INVALID_TLS_INDEX) { - // - // Function is re-entrant. - // - - glslang::ReleaseGlobalLock(); - return true; - } - - ThreadInitializeIndex = OS_AllocTLSIndex(); - - if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) { - assert(0 && "InitProcess(): Failed to allocate TLS area for init flag"); - - glslang::ReleaseGlobalLock(); - return false; - } - - if (! InitializePoolIndex()) { - assert(0 && "InitProcess(): Failed to initialize global pool"); - - glslang::ReleaseGlobalLock(); - return false; - } - - if (! InitThread()) { - assert(0 && "InitProcess(): Failed to initialize thread"); - - glslang::ReleaseGlobalLock(); - return false; - } - - glslang::ReleaseGlobalLock(); - return true; -} - -// Per-thread scoped initialization. -// Must be called at least once by each new thread sharing the -// symbol tables, etc., needed to parse. -bool InitThread() -{ - // - // This function is re-entrant - // - if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) { - assert(0 && "InitThread(): Process hasn't been initalised."); - return false; - } - - if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) - return true; - - if (! OS_SetTLSValue(ThreadInitializeIndex, (void *)1)) { - assert(0 && "InitThread(): Unable to set init flag."); - return false; - } - - glslang::SetThreadPoolAllocator(nullptr); - - return true; -} - -// Not necessary to call this: InitThread() is reentrant, and the need -// to do per thread tear down has been removed. -// -// This is kept, with memory management removed, to satisfy any exiting -// calls to it that rely on it. -bool DetachThread() -{ - bool success = true; - - if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) - return true; - - // - // Function is re-entrant and this thread may not have been initialized. - // - if (OS_GetTLSValue(ThreadInitializeIndex) != nullptr) { - if (!OS_SetTLSValue(ThreadInitializeIndex, nullptr)) { - assert(0 && "DetachThread(): Unable to clear init flag."); - success = false; - } - } - - return success; -} - -// Not necessary to call this: InitProcess() is reentrant. -// -// This is kept, with memory management removed, to satisfy any exiting -// calls to it that rely on it. -// -// Users of glslang should call shFinalize() or glslang::FinalizeProcess() for -// process-scoped memory tear down. -bool DetachProcess() -{ - bool success = true; - - if (ThreadInitializeIndex == OS_INVALID_TLS_INDEX) - return true; - - success = DetachThread(); - - OS_FreeTLSIndex(ThreadInitializeIndex); - ThreadInitializeIndex = OS_INVALID_TLS_INDEX; - - return success; -} - } // end namespace glslang diff --git a/OGLCompilersDLL/InitializeDll.h b/OGLCompilersDLL/InitializeDll.h index 661cee4d24..b18e2ab3c5 100644 --- a/OGLCompilersDLL/InitializeDll.h +++ b/OGLCompilersDLL/InitializeDll.h @@ -38,10 +38,10 @@ namespace glslang { -bool InitProcess(); -bool InitThread(); -bool DetachThread(); // not called from standalone, perhaps other tools rely on parts of it -bool DetachProcess(); // not called from standalone, perhaps other tools rely on parts of it +inline bool InitProcess() { return true; } // DEPRECATED +inline bool InitThread() { return true; } // DEPRECATED +inline bool DetachThread() { return true; } // DEPRECATED +inline bool DetachProcess() { return true; } // DEPRECATED } // end namespace glslang From 4420f9b33ba44928d5c82d9eae0c3bb4d5674c05 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 19 Jul 2023 12:18:21 -0600 Subject: [PATCH 247/594] Remove OSDependent TLS functions These are no longer used now that the PoolAllocator uses the standard c++11 thread_local storage mechanism. --- glslang/OSDependent/Unix/ossource.cpp | 70 ------------------------ glslang/OSDependent/Windows/ossource.cpp | 56 ------------------- glslang/OSDependent/osinclude.h | 11 ---- 3 files changed, 137 deletions(-) diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index 9a31a9aadb..2b20349dc2 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -52,76 +52,6 @@ namespace glslang { -// -// Thread cleanup -// - -// -// Thread Local Storage Operations -// -inline OS_TLSIndex PthreadKeyToTLSIndex(pthread_key_t key) -{ - return (OS_TLSIndex)((uintptr_t)key + 1); -} - -inline pthread_key_t TLSIndexToPthreadKey(OS_TLSIndex nIndex) -{ - return (pthread_key_t)((uintptr_t)nIndex - 1); -} - -OS_TLSIndex OS_AllocTLSIndex() -{ - pthread_key_t pPoolIndex; - - // - // Create global pool key. - // - if ((pthread_key_create(&pPoolIndex, nullptr)) != 0) { - assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage"); - return OS_INVALID_TLS_INDEX; - } - else - return PthreadKeyToTLSIndex(pPoolIndex); -} - -bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue) -{ - if (nIndex == OS_INVALID_TLS_INDEX) { - assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); - return false; - } - - if (pthread_setspecific(TLSIndexToPthreadKey(nIndex), lpvValue) == 0) - return true; - else - return false; -} - -void* OS_GetTLSValue(OS_TLSIndex nIndex) -{ - // - // This function should return 0 if nIndex is invalid. - // - assert(nIndex != OS_INVALID_TLS_INDEX); - return pthread_getspecific(TLSIndexToPthreadKey(nIndex)); -} - -bool OS_FreeTLSIndex(OS_TLSIndex nIndex) -{ - if (nIndex == OS_INVALID_TLS_INDEX) { - assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); - return false; - } - - // - // Delete the global pool key. - // - if (pthread_key_delete(TLSIndexToPthreadKey(nIndex)) == 0) - return true; - else - return false; -} - namespace { pthread_mutex_t gMutex; } diff --git a/glslang/OSDependent/Windows/ossource.cpp b/glslang/OSDependent/Windows/ossource.cpp index fa372a2ccd..64d0b174e3 100644 --- a/glslang/OSDependent/Windows/ossource.cpp +++ b/glslang/OSDependent/Windows/ossource.cpp @@ -53,62 +53,6 @@ namespace glslang { -inline OS_TLSIndex ToGenericTLSIndex (DWORD handle) -{ - return (OS_TLSIndex)((uintptr_t)handle + 1); -} - -inline DWORD ToNativeTLSIndex (OS_TLSIndex nIndex) -{ - return (DWORD)((uintptr_t)nIndex - 1); -} - -// -// Thread Local Storage Operations -// -OS_TLSIndex OS_AllocTLSIndex() -{ - DWORD dwIndex = TlsAlloc(); - if (dwIndex == TLS_OUT_OF_INDEXES) { - assert(0 && "OS_AllocTLSIndex(): Unable to allocate Thread Local Storage"); - return OS_INVALID_TLS_INDEX; - } - - return ToGenericTLSIndex(dwIndex); -} - -bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue) -{ - if (nIndex == OS_INVALID_TLS_INDEX) { - assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); - return false; - } - - if (TlsSetValue(ToNativeTLSIndex(nIndex), lpvValue)) - return true; - else - return false; -} - -void* OS_GetTLSValue(OS_TLSIndex nIndex) -{ - assert(nIndex != OS_INVALID_TLS_INDEX); - return TlsGetValue(ToNativeTLSIndex(nIndex)); -} - -bool OS_FreeTLSIndex(OS_TLSIndex nIndex) -{ - if (nIndex == OS_INVALID_TLS_INDEX) { - assert(0 && "OS_SetTLSValue(): Invalid TLS Index"); - return false; - } - - if (TlsFree(ToNativeTLSIndex(nIndex))) - return true; - else - return false; -} - HANDLE GlobalLock; void InitGlobalLock() diff --git a/glslang/OSDependent/osinclude.h b/glslang/OSDependent/osinclude.h index 7eaa113402..c118b553c5 100644 --- a/glslang/OSDependent/osinclude.h +++ b/glslang/OSDependent/osinclude.h @@ -37,17 +37,6 @@ namespace glslang { -// -// Thread Local Storage Operations -// -typedef void* OS_TLSIndex; -#define OS_INVALID_TLS_INDEX nullptr - -OS_TLSIndex OS_AllocTLSIndex(); -bool OS_SetTLSValue(OS_TLSIndex nIndex, void *lpvValue); -bool OS_FreeTLSIndex(OS_TLSIndex nIndex); -void* OS_GetTLSValue(OS_TLSIndex nIndex); - void InitGlobalLock(); void GetGlobalLock(); void ReleaseGlobalLock(); From 3c98026a1c1ab0610d0a6839101521177935b5dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=94=BB=E5=8D=A6=E4=BC=8F=E7=BE=B2?= Date: Fri, 28 Jul 2023 01:34:20 +0800 Subject: [PATCH 248/594] Fix [type] command file url forward slashes issue when use mingw --- glslang/OSDependent/Web/CMakeLists.txt | 30 +++++++++++++++++--------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt index 6232b8091d..5d17496088 100644 --- a/glslang/OSDependent/Web/CMakeLists.txt +++ b/glslang/OSDependent/Web/CMakeLists.txt @@ -67,18 +67,28 @@ if(ENABLE_GLSLANG_JS) endif() if(NOT ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE) - if (CMAKE_HOST_SYSTEM MATCHES "Windows.*") - # There are several ways we could append one file to another on Windows, but unfortunately 'cat' is not one of them - # (there is no 'cat' command in cmd). Also, since this will ultimately run in cmd and not pwsh, we need to ensure - # Windows path separators are used. - file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/glslang.js" glslang_js_path) - file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js" glslang_after_js_path) + if (CMAKE_VERSION VERSION_GREATER_EQUAL "3.18") add_custom_command(TARGET glslang.js POST_BUILD - COMMAND type "${glslang_after_js_path}" >> "${glslang_js_path}") + COMMAND ${CMAKE_COMMAND} -E cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js + ) else() - add_custom_command(TARGET glslang.js POST_BUILD - COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + if (MINGW) + message(FATAL_ERROR "Must use at least CMake 3.18") + endif() + + if (CMAKE_HOST_SYSTEM MATCHES "Windows.*") + # There are several ways we could append one file to another on Windows, but unfortunately 'cat' is not one of them + # (there is no 'cat' command in cmd). Also, since this will ultimately run in cmd and not pwsh, we need to ensure + # Windows path separators are used. + file(TO_NATIVE_PATH "${CMAKE_CURRENT_BINARY_DIR}/glslang.js" glslang_js_path) + file(TO_NATIVE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js" glslang_after_js_path) + add_custom_command(TARGET glslang.js POST_BUILD + COMMAND type "${glslang_after_js_path}" >> "${glslang_js_path}") + else() + add_custom_command(TARGET glslang.js POST_BUILD + COMMAND cat ${CMAKE_CURRENT_SOURCE_DIR}/glslang.after.js >> ${CMAKE_CURRENT_BINARY_DIR}/glslang.js) + endif() endif() endif() endif() -endif() +endif() \ No newline at end of file From 47454f5078cdf54f1d37171b10d8c27107e47a63 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Thu, 27 Jul 2023 15:31:20 -0600 Subject: [PATCH 249/594] cmake: Raise minimum to 3.17.2 Build fails due to external dependency on SPIRV-Tools. EX: ``` -- Looking for pthread_create in pthread -- Looking for pthread_create in pthread - found -- Found Threads: TRUE CMake Error at External/spirv-tools/CMakeLists.txt:15 (cmake_minimum_required): CMake 3.17.2 or higher is required. You are running version 3.14.0 ``` --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cb8eb169b..ccd5b83951 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 The Khronos Group Inc. +# Copyright (C) 2020-2023 The Khronos Group Inc. # # All rights reserved. # @@ -30,7 +30,7 @@ # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -cmake_minimum_required(VERSION 3.14.0) +cmake_minimum_required(VERSION 3.17.2) project(glslang) set_property(GLOBAL PROPERTY USE_FOLDERS ON) From 0f873e757e6f3a58461f99bbfd2b5735c4e74c34 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Wed, 26 Jul 2023 16:26:38 -0600 Subject: [PATCH 250/594] ci: Test CMake minimum --- .github/workflows/continuous_integration.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index a2d769f8ba..2de827bd86 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -73,6 +73,9 @@ jobs: - uses: actions/setup-python@v4 with: python-version: '3.7' + - uses: lukka/get-cmake@latest + with: + cmakeVersion: 3.17.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@v1.2 with: From c8c669fc2aad9c44603278ca97d892bb47a819f3 Mon Sep 17 00:00:00 2001 From: Allan MacKinnon Date: Fri, 28 Jul 2023 12:13:55 -0400 Subject: [PATCH 251/594] `spirv-remap`: Support outputting each SPIR-V module to a filename The `spirv-remap` tool now supports two output modes: * Outputting one or more inputs to a single directory -- the previous behavior * One output file per input -- new behavior. --- StandAlone/spirv-remap.cpp | 93 +++++++++++++++++++++++++------------- 1 file changed, 61 insertions(+), 32 deletions(-) diff --git a/StandAlone/spirv-remap.cpp b/StandAlone/spirv-remap.cpp index c54cbb9d5c..1bd4a2d6a6 100644 --- a/StandAlone/spirv-remap.cpp +++ b/StandAlone/spirv-remap.cpp @@ -37,7 +37,11 @@ #include #include #include +#include +// +// Include remapper +// #include "../SPIRV/SPVRemapper.h" namespace { @@ -172,7 +176,7 @@ namespace { << " [--strip-all | --strip all | -s]" << " [--strip-white-list]" << " [--do-everything]" - << " --input | -i file1 [file2...] --output|-o DESTDIR" + << " --input | -i file1 [file2...] --output|-o DESTDIR | destfile1 [destfile2...]" << std::endl; std::cout << " " << basename(name) << " [--version | -V]" << std::endl; @@ -182,32 +186,45 @@ namespace { } // grind through each SPIR in turn - void execute(const std::vector& inputFile, const std::string& outputDir, - const std::string& whiteListFile, int opts, int verbosity) + void execute(const std::vector& inputFiles, + const std::vector& outputDirOrFiles, + const bool isSingleOutputDir, + const std::string& whiteListFile, + int opts, + int verbosity) { std::vector whiteListStrings; - if(!whiteListFile.empty()) + if (!whiteListFile.empty()) read(whiteListStrings, whiteListFile, verbosity); - for (auto it = inputFile.cbegin(); it != inputFile.cend(); ++it) { - const std::string &filename = *it; + for (std::size_t ii=0; ii spv; - read(spv, filename, verbosity); + read(spv, inputFiles[ii], verbosity); + spv::spirvbin_t(verbosity).remap(spv, whiteListStrings, opts); - const std::string outfile = outputDir + path_sep_char() + basename(filename); - write(spv, outfile, verbosity); + + if (isSingleOutputDir) { + // write all outputs to same directory + const std::string outFile = outputDirOrFiles[0] + path_sep_char() + basename(inputFiles[ii]); + write(spv, outFile, verbosity); + } else { + // write each input to its associated output + write(spv, outputDirOrFiles[ii], verbosity); + } } if (verbosity > 0) - std::cout << "Done: " << inputFile.size() << " file(s) processed" << std::endl; + std::cout << "Done: " << inputFiles.size() << " file(s) processed" << std::endl; } // Parse command line options - void parseCmdLine(int argc, char** argv, std::vector& inputFile, - std::string& outputDir, - std::string& stripWhiteListFile, - int& options, - int& verbosity) + void parseCmdLine(int argc, + char** argv, + std::vector& inputFiles, + std::vector& outputDirOrFiles, + std::string& stripWhiteListFile, + int& options, + int& verbosity) { if (argc < 2) usage(argv[0]); @@ -222,18 +239,19 @@ namespace { const std::string arg = argv[a]; if (arg == "--output" || arg == "-o") { - // Output directory - if (++a >= argc) - usage(argv[0], "--output requires an argument"); - if (!outputDir.empty()) - usage(argv[0], "--output can be provided only once"); - - outputDir = argv[a++]; + // Collect output dirs or files + for (++a; a < argc && argv[a][0] != '-'; ++a) + outputDirOrFiles.push_back(argv[a]); - // Remove trailing directory separator characters - while (!outputDir.empty() && outputDir.back() == path_sep_char()) - outputDir.pop_back(); + if (outputDirOrFiles.size() == 0) + usage(argv[0], "--output requires an argument"); + // Remove trailing directory separator characters from all paths + for (std::size_t ii=0; ii inputFile; - std::string outputDir; + std::vector inputFiles; + std::vector outputDirOrFiles; std::string whiteListFile; int opts; int verbosity; @@ -361,13 +379,24 @@ int main(int argc, char** argv) if (argc < 2) usage(argv[0]); - parseCmdLine(argc, argv, inputFile, outputDir, whiteListFile, opts, verbosity); + parseCmdLine(argc, argv, inputFiles, outputDirOrFiles, whiteListFile, opts, verbosity); + + if (outputDirOrFiles.empty()) + usage(argv[0], "Output directory or file(s) required."); + + const bool isMultiInput = inputFiles.size() > 1; + const bool isMultiOutput = outputDirOrFiles.size() > 1; + const bool isSingleOutputDir = !isMultiOutput && std::filesystem::is_directory(outputDirOrFiles[0]); + + if (isMultiInput && !isMultiOutput && !isSingleOutputDir) + usage(argv[0], "Output is not a directory."); + - if (outputDir.empty()) - usage(argv[0], "Output directory required"); + if (isMultiInput && isMultiOutput && (outputDirOrFiles.size() != inputFiles.size())) + usage(argv[0], "Output must be either a single directory or one output file per input."); // Main operations: read, remap, and write. - execute(inputFile, outputDir, whiteListFile, opts, verbosity); + execute(inputFiles, outputDirOrFiles, isSingleOutputDir, whiteListFile, opts, verbosity); // If we get here, everything went OK! Nothing more to be done. } From d291b1591180b52f13db9a699762dbad1ef83029 Mon Sep 17 00:00:00 2001 From: dan sinclair Date: Fri, 28 Jul 2023 13:49:10 -0400 Subject: [PATCH 252/594] Remove GLSLANG_WEB and GLSLANG_WEB_DEVEL This CL removes the GLSLANG_WEB and GLSLANG_WEB_DEVEL cmake build options and their usage in the codebase. Issue #2958 --- CMakeLists.txt | 27 +-- README.md | 6 - SPIRV/GlslangToSpv.cpp | 182 +------------- SPIRV/Logger.cpp | 4 - SPIRV/Logger.h | 9 - SPIRV/SpvBuilder.cpp | 43 ---- SPIRV/SpvBuilder.h | 12 - SPIRV/SpvPostProcess.cpp | 6 - StandAlone/StandAlone.cpp | 14 -- glslang/Include/BaseTypes.h | 11 - glslang/Include/ConstantUnion.h | 36 --- glslang/Include/SpirvIntrinsics.h | 4 - glslang/Include/Types.h | 228 ++---------------- glslang/Include/intermediate.h | 31 +-- glslang/MachineIndependent/Constant.cpp | 14 -- glslang/MachineIndependent/Initialize.cpp | 134 +--------- glslang/MachineIndependent/Intermediate.cpp | 63 ----- .../MachineIndependent/ParseContextBase.cpp | 8 - glslang/MachineIndependent/ParseHelper.cpp | 227 +---------------- glslang/MachineIndependent/ParseHelper.h | 11 - glslang/MachineIndependent/Scan.cpp | 19 +- glslang/MachineIndependent/ShaderLang.cpp | 55 +---- .../MachineIndependent/SpirvIntrinsics.cpp | 4 - glslang/MachineIndependent/SymbolTable.cpp | 12 - glslang/MachineIndependent/SymbolTable.h | 16 -- glslang/MachineIndependent/Versions.cpp | 28 +-- glslang/MachineIndependent/attribute.cpp | 4 - glslang/MachineIndependent/glslang.m4 | 73 ------ glslang/MachineIndependent/glslang.y | 73 ------ glslang/MachineIndependent/intermOut.cpp | 8 - glslang/MachineIndependent/iomapper.cpp | 4 - glslang/MachineIndependent/iomapper.h | 4 - glslang/MachineIndependent/limits.cpp | 2 - glslang/MachineIndependent/linkValidate.cpp | 29 +-- .../MachineIndependent/localintermediate.h | 51 +--- glslang/MachineIndependent/parseVersions.h | 65 +---- .../MachineIndependent/preprocessor/Pp.cpp | 7 +- .../preprocessor/PpScanner.cpp | 12 - .../preprocessor/PpTokens.cpp | 2 - .../propagateNoContraction.cpp | 4 - glslang/MachineIndependent/reflection.cpp | 4 - glslang/MachineIndependent/reflection.h | 4 - glslang/Public/ShaderLang.h | 9 - glslang/updateGrammar | 14 +- gtests/GlslMapIO.FromFile.cpp | 2 - gtests/Link.FromFile.Vk.cpp | 6 +- gtests/TestFixture.h | 6 - gtests/VkRelaxed.FromFile.cpp | 2 - 48 files changed, 49 insertions(+), 1540 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ccd5b83951..b48f6324fd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,14 +69,6 @@ option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON) option(ENABLE_GLSLANG_JS "If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing." OFF) -CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN - "Reduces glslang to minimum needed for web use" - OFF "ENABLE_GLSLANG_JS" - OFF) -CMAKE_DEPENDENT_OPTION(ENABLE_GLSLANG_WEBMIN_DEVEL - "For ENABLE_GLSLANG_WEBMIN builds, enables compilation error messages" - OFF "ENABLE_GLSLANG_WEBMIN" - OFF) CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using Emscripten, enables SINGLE_FILE build" OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN" @@ -86,11 +78,7 @@ CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN" OFF) -CMAKE_DEPENDENT_OPTION(ENABLE_HLSL - "Enables HLSL input support" - ON "NOT ENABLE_GLSLANG_WEBMIN" - OFF) - +option(ENABLE_HLSL "Enables HLSL input support" ON) option(ENABLE_RTTI "Enables RTTI" OFF) option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) option(ENABLE_OPT "Enables spirv-opt capability if present" ON) @@ -112,13 +100,6 @@ if(ENABLE_HLSL) add_definitions(-DENABLE_HLSL) endif() -if(ENABLE_GLSLANG_WEBMIN) - add_definitions(-DGLSLANG_WEB) - if(ENABLE_GLSLANG_WEBMIN_DEVEL) - add_definitions(-DGLSLANG_WEB_DEVEL) - endif() -endif() - if(WIN32) set(CMAKE_DEBUG_POSTFIX "d") option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON) @@ -355,18 +336,18 @@ if(ENABLE_GLSLANG_INSTALL) PATH_EXPORT_TARGETS INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME} ) - + write_basic_package_version_file("${CMAKE_CURRENT_BINARY_DIR}/glslang-config-version.cmake" VERSION ${GLSLANG_VERSION} COMPATIBILITY SameMajorVersion ) - + install( EXPORT glslang-targets NAMESPACE "glslang::" DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) - + install( FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake" diff --git a/README.md b/README.md index 8ebf940da6..a27af38c9b 100644 --- a/README.md +++ b/README.md @@ -256,12 +256,6 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception * Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`. * Set `-DENABLE_HLSL=OFF` if HLSL is not needed. * For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`. -* For building a minimum-size web subset of core glslang: - + turn on `-DENABLE_GLSLANG_WEBMIN=ON` (disables HLSL) - + execute `updateGrammar web` from the glslang subdirectory - (or if using your own scripts, `m4` needs a `-DGLSLANG_WEB` argument) - + optionally, for GLSL compilation error messages, turn on - `-DENABLE_GLSLANG_WEBMIN_DEVEL=ON` * To get a fully minimized build, make sure to use `brotli` to compress the .js and .wasm files diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 444498740d..71ce52b424 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -95,26 +95,18 @@ struct OpDecorations { public: OpDecorations(spv::Decoration precision, spv::Decoration noContraction, spv::Decoration nonUniform) : precision(precision) -#ifndef GLSLANG_WEB , noContraction(noContraction), nonUniform(nonUniform) -#endif { } spv::Decoration precision; -#ifdef GLSLANG_WEB - void addNoContraction(spv::Builder&, spv::Id) const { } - void addNonUniform(spv::Builder&, spv::Id) const { } -#else void addNoContraction(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, noContraction); } void addNonUniform(spv::Builder& builder, spv::Id t) { builder.addDecoration(t, nonUniform); } protected: spv::Decoration noContraction; spv::Decoration nonUniform; -#endif - }; } // namespace @@ -291,10 +283,6 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { // Translate glslang profile to SPIR-V source language. spv::SourceLanguage TranslateSourceLanguage(glslang::EShSource source, EProfile profile) { -#ifdef GLSLANG_WEB - return spv::SourceLanguageESSL; -#endif - switch (source) { case glslang::EShSourceGlsl: switch (profile) { @@ -321,7 +309,6 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShader case EShLangVertex: return spv::ExecutionModelVertex; case EShLangFragment: return spv::ExecutionModelFragment; case EShLangCompute: return spv::ExecutionModelGLCompute; -#ifndef GLSLANG_WEB case EShLangTessControl: return spv::ExecutionModelTessellationControl; case EShLangTessEvaluation: return spv::ExecutionModelTessellationEvaluation; case EShLangGeometry: return spv::ExecutionModelGeometry; @@ -333,7 +320,6 @@ spv::ExecutionModel TranslateExecutionModel(EShLanguage stage, bool isMeshShader case EShLangCallable: return spv::ExecutionModelCallableKHR; case EShLangTask: return (isMeshShaderEXT)? spv::ExecutionModelTaskEXT : spv::ExecutionModelTaskNV; case EShLangMesh: return (isMeshShaderEXT)? spv::ExecutionModelMeshEXT: spv::ExecutionModelMeshNV; -#endif default: assert(0); return spv::ExecutionModelFragment; @@ -384,14 +370,12 @@ spv::Decoration TranslateBlockDecoration(const glslang::TStorageQualifier storag case glslang::EvqVaryingIn: return spv::DecorationBlock; case glslang::EvqVaryingOut: return spv::DecorationBlock; case glslang::EvqShared: return spv::DecorationBlock; -#ifndef GLSLANG_WEB case glslang::EvqPayload: return spv::DecorationBlock; case glslang::EvqPayloadIn: return spv::DecorationBlock; case glslang::EvqHitAttr: return spv::DecorationBlock; case glslang::EvqCallableData: return spv::DecorationBlock; case glslang::EvqCallableDataIn: return spv::DecorationBlock; case glslang::EvqHitObjectAttrNV: return spv::DecorationBlock; -#endif default: assert(0); break; @@ -461,7 +445,6 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T assert(type.getQualifier().layoutPacking == glslang::ElpNone); } return spv::DecorationMax; -#ifndef GLSLANG_WEB case glslang::EvqPayload: case glslang::EvqPayloadIn: case glslang::EvqHitAttr: @@ -469,7 +452,6 @@ spv::Decoration TranslateLayoutDecoration(const glslang::TType& type, glslang::T case glslang::EvqCallableDataIn: case glslang::EvqHitObjectAttrNV: return spv::DecorationMax; -#endif default: assert(0); return spv::DecorationMax; @@ -505,14 +487,12 @@ spv::Decoration TGlslangToSpvTraverser::TranslateAuxiliaryStorageDecoration(cons { if (qualifier.centroid) return spv::DecorationCentroid; -#ifndef GLSLANG_WEB else if (qualifier.patch) return spv::DecorationPatch; else if (qualifier.sample) { builder.addCapability(spv::CapabilitySampleRateShading); return spv::DecorationSample; } -#endif return spv::DecorationMax; } @@ -529,24 +509,20 @@ spv::Decoration TranslateInvariantDecoration(const glslang::TQualifier& qualifie // If glslang type is noContraction, return SPIR-V NoContraction decoration. spv::Decoration TranslateNoContractionDecoration(const glslang::TQualifier& qualifier) { -#ifndef GLSLANG_WEB if (qualifier.isNoContraction()) return spv::DecorationNoContraction; else -#endif return spv::DecorationMax; } // If glslang type is nonUniform, return SPIR-V NonUniform decoration. spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glslang::TQualifier& qualifier) { -#ifndef GLSLANG_WEB if (qualifier.isNonUniform()) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderNonUniformEXT); return spv::DecorationNonUniformEXT; } else -#endif return spv::DecorationMax; } @@ -554,13 +530,11 @@ spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration(const glsl spv::Decoration TGlslangToSpvTraverser::TranslateNonUniformDecoration( const spv::Builder::AccessChain::CoherentFlags& coherentFlags) { -#ifndef GLSLANG_WEB if (coherentFlags.isNonUniform()) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityShaderNonUniformEXT); return spv::DecorationNonUniformEXT; } else -#endif return spv::DecorationMax; } @@ -569,7 +543,6 @@ spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess( { spv::MemoryAccessMask mask = spv::MemoryAccessMaskNone; -#ifndef GLSLANG_WEB if (!glslangIntermediate->usingVulkanMemoryModel() || coherentFlags.isImage) return mask; @@ -587,7 +560,6 @@ spv::MemoryAccessMask TGlslangToSpvTraverser::TranslateMemoryAccess( if (mask != spv::MemoryAccessMaskNone) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } -#endif return mask; } @@ -597,7 +569,6 @@ spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands( { spv::ImageOperandsMask mask = spv::ImageOperandsMaskNone; -#ifndef GLSLANG_WEB if (!glslangIntermediate->usingVulkanMemoryModel()) return mask; @@ -615,7 +586,6 @@ spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands( if (mask != spv::ImageOperandsMaskNone) { builder.addCapability(spv::CapabilityVulkanMemoryModelKHR); } -#endif return mask; } @@ -623,7 +593,6 @@ spv::ImageOperandsMask TGlslangToSpvTraverser::TranslateImageOperands( spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCoherent(const glslang::TType& type) { spv::Builder::AccessChain::CoherentFlags flags = {}; -#ifndef GLSLANG_WEB flags.coherent = type.getQualifier().coherent; flags.devicecoherent = type.getQualifier().devicecoherent; flags.queuefamilycoherent = type.getQualifier().queuefamilycoherent; @@ -638,7 +607,6 @@ spv::Builder::AccessChain::CoherentFlags TGlslangToSpvTraverser::TranslateCohere flags.anyCoherent() || flags.volatil; flags.isImage = type.getBasicType() == glslang::EbtSampler; -#endif flags.nonUniform = type.getQualifier().nonUniform; return flags; } @@ -648,7 +616,6 @@ spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope( { spv::Scope scope = spv::ScopeMax; -#ifndef GLSLANG_WEB if (coherentFlags.volatil || coherentFlags.coherent) { // coherent defaults to Device scope in the old model, QueueFamilyKHR scope in the new model scope = glslangIntermediate->usingVulkanMemoryModel() ? spv::ScopeQueueFamilyKHR : spv::ScopeDevice; @@ -666,7 +633,6 @@ spv::Scope TGlslangToSpvTraverser::TranslateMemoryScope( if (glslangIntermediate->usingVulkanMemoryModel() && scope == spv::ScopeDevice) { builder.addCapability(spv::CapabilityVulkanMemoryModelDeviceScopeKHR); } -#endif return scope; } @@ -681,7 +647,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI { switch (builtIn) { case glslang::EbvPointSize: -#ifndef GLSLANG_WEB // Defer adding the capability until the built-in is actually used. if (! memberDeclaration) { switch (glslangIntermediate->getStage()) { @@ -696,7 +661,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI break; } } -#endif return spv::BuiltInPointSize; case glslang::EbvPosition: return spv::BuiltInPosition; @@ -717,7 +681,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI case glslang::EbvLocalInvocationIndex: return spv::BuiltInLocalInvocationIndex; case glslang::EbvGlobalInvocationId: return spv::BuiltInGlobalInvocationId; -#ifndef GLSLANG_WEB // These *Distance capabilities logically belong here, but if the member is declared and // then never used, consumers of SPIR-V prefer the capability not be declared. // They are now generated when used, rather than here when declared. @@ -1130,7 +1093,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI builder.addExtension(spv::E_SPV_ARM_core_builtins); builder.addCapability(spv::CapabilityCoreBuiltinsARM); return spv::BuiltInWarpMaxIDARM; -#endif default: return spv::BuiltInMax; @@ -1142,10 +1104,6 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy { assert(type.getBasicType() == glslang::EbtSampler); -#ifdef GLSLANG_WEB - return spv::ImageFormatUnknown; -#endif - // Check for capabilities switch (type.getQualifier().getFormat()) { case glslang::ElfRg32f: @@ -1302,12 +1260,10 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T { if (type.getBasicType() == glslang::EbtRayQuery || type.getBasicType() == glslang::EbtHitObjectNV) return spv::StorageClassPrivate; -#ifndef GLSLANG_WEB if (type.getQualifier().isSpirvByReference()) { if (type.getQualifier().isParamInput() || type.getQualifier().isParamOutput()) return spv::StorageClassFunction; } -#endif if (type.getQualifier().isPipeInput()) return spv::StorageClassInput; if (type.getQualifier().isPipeOutput()) @@ -1355,7 +1311,6 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqConstReadOnly: return spv::StorageClassFunction; case glslang::EvqTemporary: return spv::StorageClassFunction; case glslang::EvqShared: return spv::StorageClassWorkgroup; -#ifndef GLSLANG_WEB case glslang::EvqPayload: return spv::StorageClassRayPayloadKHR; case glslang::EvqPayloadIn: return spv::StorageClassIncomingRayPayloadKHR; case glslang::EvqHitAttr: return spv::StorageClassHitAttributeKHR; @@ -1364,7 +1319,6 @@ spv::StorageClass TGlslangToSpvTraverser::TranslateStorageClass(const glslang::T case glslang::EvqtaskPayloadSharedEXT : return spv::StorageClassTaskPayloadWorkgroupEXT; case glslang::EvqHitObjectAttrNV: return spv::StorageClassHitObjectAttributeNV; case glslang::EvqSpirvStorageClass: return static_cast(type.getQualifier().spirvStorageClass); -#endif default: assert(0); break; @@ -1425,7 +1379,6 @@ void TGlslangToSpvTraverser::TranslateLiterals(const glslang::TVectorgetSubgroupUniformControlFlow()) { builder.addExtension(spv::E_SPV_KHR_subgroup_uniform_control_flow); builder.addExecutionMode(shaderEntry, spv::ExecutionModeSubgroupUniformControlFlowKHR); } -#endif unsigned int mode; switch (glslangIntermediate->getStage()) { @@ -1717,8 +1665,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, if (glslangIntermediate->isStencilReplacing()) builder.addExecutionMode(shaderEntry, spv::ExecutionModeStencilRefReplacingEXT); -#ifndef GLSLANG_WEB - switch(glslangIntermediate->getDepth()) { case glslang::EldGreater: mode = spv::ExecutionModeDepthGreater; break; case glslang::EldLess: mode = spv::ExecutionModeDepthLess; break; @@ -1770,7 +1716,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, } builder.addExtension(spv::E_SPV_EXT_fragment_shader_interlock); } -#endif break; case EShLangCompute: @@ -1801,7 +1746,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); } break; -#ifndef GLSLANG_WEB case EShLangTessEvaluation: case EShLangTessControl: builder.addCapability(spv::CapabilityTessellation); @@ -1941,13 +1885,11 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExecutionMode(shaderEntry, (spv::ExecutionMode)mode); } break; -#endif default: break; } -#ifndef GLSLANG_WEB // // Add SPIR-V requirements (GL_EXT_spirv_intrinsics) // @@ -1992,7 +1934,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExecutionModeId(shaderEntry, static_cast(modeId.first), operandIds); } } -#endif } // Finish creating SPV, after the traversal is complete. @@ -2654,7 +2595,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI } }; -#ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpAtomicCounterIncrement || node->getOp() == glslang::EOpAtomicCounterDecrement || node->getOp() == glslang::EOpAtomicCounter || @@ -2676,9 +2616,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI } else if (operandNode->getAsTyped()->getQualifier().isSpirvLiteral()) { // Will be translated to a literal value, make a placeholder here operand = spv::NoResult; - } else -#endif - { + } else { operand = accessChainLoad(node->getOperand()->getType()); } @@ -2696,7 +2634,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, node->getOperand()->getBasicType(), lvalueCoherentFlags); -#ifndef GLSLANG_WEB // it could be attached to a SPIR-V intruction if (!result) { if (node->getOp() == glslang::EOpSpirvInst) { @@ -2726,7 +2663,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI return false; // done with this node } } -#endif if (result) { if (invertedType) { @@ -2751,7 +2687,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI spv::Id one = 0; if (node->getBasicType() == glslang::EbtFloat) one = builder.makeFloatConstant(1.0F); -#ifndef GLSLANG_WEB else if (node->getBasicType() == glslang::EbtDouble) one = builder.makeDoubleConstant(1.0); else if (node->getBasicType() == glslang::EbtFloat16) @@ -2762,7 +2697,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI one = builder.makeInt16Constant(1); else if (node->getBasicType() == glslang::EbtInt64 || node->getBasicType() == glslang::EbtUint64) one = builder.makeInt64Constant(1); -#endif else one = builder.makeIntConstant(1); glslang::TOperator op; @@ -2791,7 +2725,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI return false; -#ifndef GLSLANG_WEB case glslang::EOpEmitStreamVertex: builder.createNoResultOp(spv::OpEmitStreamVertex, operand); return false; @@ -2810,7 +2743,6 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI case glslang::EOpHitObjectRecordEmptyNV: builder.createNoResultOp(spv::OpHitObjectRecordEmptyNV, operand); return false; -#endif default: logger->missingFunctionality("unknown glslang unary"); @@ -2875,15 +2807,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.setAccessChainRValue(result); return false; - } -#ifndef GLSLANG_WEB - else if (node->getOp() == glslang::EOpImageStore || + } else if (node->getOp() == glslang::EOpImageStore || node->getOp() == glslang::EOpImageStoreLod || node->getOp() == glslang::EOpImageAtomicStore) { // "imageStore" is a special case, which has no result return false; } -#endif glslang::TOperator binOp = glslang::EOpNull; bool reduceComparison = true; @@ -3219,7 +3148,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt atomic = true; break; -#ifndef GLSLANG_WEB case glslang::EOpAtomicStore: noReturnValue = true; // fallthrough @@ -3347,7 +3275,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.addCapability(spv::CapabilityRayQueryPositionFetchKHR); noReturnValue = true; break; -#endif case glslang::EOpDebugPrintf: noReturnValue = true; @@ -3455,7 +3382,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt lvalue = true; break; -#ifndef GLSLANG_WEB case glslang::EOpFrexp: if (arg == 1) lvalue = true; @@ -3531,7 +3457,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt if (arg == 0 || arg == 2) lvalue = true; break; -#endif default: break; } @@ -3541,7 +3466,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt else glslangOperands[arg]->traverse(this); -#ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpCooperativeMatrixLoad || node->getOp() == glslang::EOpCooperativeMatrixStore || node->getOp() == glslang::EOpCooperativeMatrixLoadNV || @@ -3592,7 +3516,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt continue; } } -#endif // for l-values, pass the address, for r-values, pass the value if (lvalue) { @@ -3655,11 +3578,9 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt visitSymbol(itNode->second); spv::Id symId = getSymbolId(itNode->second); operands.push_back(symId); -#ifndef GLSLANG_WEB } else if (glslangOperands[arg]->getAsTyped()->getQualifier().isSpirvLiteral()) { // Will be translated to a literal value, make a placeholder here operands.push_back(spv::NoResult); -#endif } else { operands.push_back(accessChainLoad(glslangOperands[arg]->getAsTyped()->getType())); } @@ -3667,7 +3588,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } builder.setLine(node->getLoc().line, node->getLoc().getFilename()); -#ifndef GLSLANG_WEB if (node->getOp() == glslang::EOpCooperativeMatrixLoad || node->getOp() == glslang::EOpCooperativeMatrixLoadNV) { std::vector idImmOps; @@ -3750,15 +3670,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt idImmOps.push_back(spv::IdImmediate(false, matrixOperands)); result = builder.createOp(spv::OpCooperativeMatrixMulAddKHR, resultType(), idImmOps); - } else -#endif - if (atomic) { + } else if (atomic) { // Handle all atomics glslang::TBasicType typeProxy = (node->getOp() == glslang::EOpAtomicStore) ? node->getSequence()[0]->getAsTyped()->getBasicType() : node->getBasicType(); result = createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy, lvalueCoherentFlags); -#ifndef GLSLANG_WEB } else if (node->getOp() == glslang::EOpSpirvInst) { const auto& spirvInst = node->getSpirvInstruction(); if (spirvInst.set == "") { @@ -3785,7 +3702,6 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spirvInst.id, operands); } noReturnValue = node->getBasicType() == glslang::EbtVoid; -#endif } else if (node->getOp() == glslang::EOpDebugPrintf) { if (!nonSemanticDebugPrintf) { nonSemanticDebugPrintf = builder.import("NonSemantic.DebugPrintf"); @@ -4090,10 +4006,8 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* node) { -#ifndef GLSLANG_WEB if (node->getQualifier().isSpirvLiteral()) return; // Translated to a literal value, skip further processing -#endif int nextConst = 0; spv::Id constant = createSpvConstantFromConstUnionArray(node->getType(), node->getConstArray(), nextConst, false); @@ -4224,7 +4138,6 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T builder.clearAccessChain(); break; -#ifndef GLSLANG_WEB case glslang::EOpDemote: builder.createNoResultOp(spv::OpDemoteToHelperInvocationEXT); builder.addExtension(spv::E_SPV_EXT_demote_to_helper_invocation); @@ -4236,7 +4149,6 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T case glslang::EOpIgnoreIntersectionKHR: builder.makeStatementTerminator(spv::OpIgnoreIntersectionKHR, "post-ignoreIntersectionKHR"); break; -#endif default: assert(0); @@ -4278,7 +4190,6 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* else builder.addCapability(spv::CapabilityStorageUniform16); break; -#ifndef GLSLANG_WEB case spv::StorageClassPushConstant: builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStoragePushConstant16); @@ -4288,7 +4199,6 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* builder.addIncorporatedExtension(spv::E_SPV_KHR_16bit_storage, spv::Spv_1_3); builder.addCapability(spv::CapabilityStorageUniformBufferBlock16); break; -#endif default: if (storageClass == spv::StorageClassWorkgroup && node->getType().getBasicType() == glslang::EbtBlock) { @@ -4347,7 +4257,6 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) case glslang::EbtInt: return builder.makeIntType(32); case glslang::EbtUint: return builder.makeUintType(32); case glslang::EbtFloat: return builder.makeFloatType(32); -#ifndef GLSLANG_WEB case glslang::EbtFloat16: builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float_fetch); builder.addCapability(spv::CapabilityFloat16ImageAMD); @@ -4360,7 +4269,6 @@ spv::Id TGlslangToSpvTraverser::getSampledType(const glslang::TSampler& sampler) builder.addExtension(spv::E_SPV_EXT_shader_image_int64); builder.addCapability(spv::CapabilityInt64ImageEXT); return builder.makeUintType(64); -#endif default: assert(0); return builder.makeFloatType(32); @@ -4436,7 +4344,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty case glslang::EbtFloat: spvType = builder.makeFloatType(32); break; -#ifndef GLSLANG_WEB case glslang::EbtDouble: spvType = builder.makeFloatType(64); break; @@ -4514,7 +4421,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty } } break; -#endif case glslang::EbtSampler: { const glslang::TSampler& sampler = type.getSampler(); @@ -4563,7 +4469,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty spvType = builder.makeHitObjectNVType(); } break; -#ifndef GLSLANG_WEB case glslang::EbtSpirvType: { // GL_EXT_spirv_intrinsics const auto& spirvType = type.getSpirvType(); @@ -4628,7 +4533,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty break; } -#endif default: assert(0); break; @@ -4716,12 +4620,10 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty if (type.isSizedArray()) spvType = builder.makeArrayType(spvType, makeArraySizeId(*type.getArraySizes(), 0), stride); else { -#ifndef GLSLANG_WEB if (!lastBufferBlockMember) { builder.addIncorporatedExtension("SPV_EXT_descriptor_indexing", spv::Spv_1_5); builder.addCapability(spv::CapabilityRuntimeDescriptorArrayEXT); } -#endif spvType = builder.makeRuntimeArray(spvType); } if (stride > 0) @@ -4737,7 +4639,6 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty // bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) { -#ifndef GLSLANG_WEB auto& extensions = glslangIntermediate->getRequestedExtensions(); if (member.getFieldName() == "gl_SecondaryViewportMaskNV" && @@ -4758,7 +4659,6 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) extensions.find("GL_NVX_multiview_per_view_attributes") == extensions.end()) return true; } -#endif return false; }; @@ -4889,14 +4789,11 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, glslangIntermediate->getSource() == glslang::EShSourceHlsl) { builder.addMemberDecoration(spvType, member, TranslateInterpolationDecoration(memberQualifier)); builder.addMemberDecoration(spvType, member, TranslateAuxiliaryStorageDecoration(memberQualifier)); -#ifndef GLSLANG_WEB addMeshNVDecoration(spvType, member, memberQualifier); -#endif } } builder.addMemberDecoration(spvType, member, TranslateInvariantDecoration(memberQualifier)); -#ifndef GLSLANG_WEB if (type.getBasicType() == glslang::EbtBlock && qualifier.storage == glslang::EvqBuffer) { // Add memory decorations only to top-level members of shader storage block @@ -4906,8 +4803,6 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, builder.addMemberDecoration(spvType, member, memory[i]); } -#endif - // Location assignment was already completed correctly by the front end, // just track whether a member needs to be decorated. // Ignore member locations if the container is an array, as that's @@ -4940,7 +4835,6 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, if (builtIn != spv::BuiltInMax) builder.addMemberDecoration(spvType, member, spv::DecorationBuiltIn, (int)builtIn); -#ifndef GLSLANG_WEB // nonuniform builder.addMemberDecoration(spvType, member, TranslateNonUniformDecoration(glslangMember.getQualifier())); @@ -5002,7 +4896,6 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, builder.addDecoration(spvType, static_cast(decorateString.first), strings); } } -#endif } // Decorate the structure @@ -5348,7 +5241,6 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& switch (glslangBuiltIn) { case glslang::EbvPointSize: -#ifndef GLSLANG_WEB case glslang::EbvClipDistance: case glslang::EbvCullDistance: case glslang::EbvViewportMaskNV: @@ -5364,7 +5256,6 @@ void TGlslangToSpvTraverser::declareUseOfStructMember(const glslang::TTypeList& case glslang::EbvLayerPerViewNV: case glslang::EbvMeshViewCountNV: case glslang::EbvMeshViewIndicesNV: -#endif // Generate the associated capability. Delegate to TranslateBuiltInDecoration. // Alternately, we could just call this for any glslang built-in, since the // capability already guards against duplicates. @@ -5404,9 +5295,7 @@ bool TGlslangToSpvTraverser::originalParam(glslang::TStorageQualifier qualifier, if (glslangIntermediate->getSource() == glslang::EShSourceHlsl) return paramType.getBasicType() == glslang::EbtBlock; return (paramType.containsOpaque() && !glslangIntermediate->getBindlessMode()) || // sampler, etc. -#ifndef GLSLANG_WEB paramType.getQualifier().isSpirvByReference() || // spirv_by_reference -#endif (paramType.getBasicType() == glslang::EbtBlock && qualifier == glslang::EvqBuffer); // SSBO } @@ -5590,23 +5479,18 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& glslang::TSampler sampler = {}; bool cubeCompare = false; -#ifndef GLSLANG_WEB bool f16ShadowCompare = false; -#endif if (node.isTexture() || node.isImage()) { sampler = glslangArguments[0]->getAsTyped()->getType().getSampler(); cubeCompare = sampler.dim == glslang::EsdCube && sampler.arrayed && sampler.shadow; -#ifndef GLSLANG_WEB f16ShadowCompare = sampler.shadow && glslangArguments[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16; -#endif } for (int i = 0; i < (int)glslangArguments.size(); ++i) { builder.clearAccessChain(); glslangArguments[i]->traverse(this); -#ifndef GLSLANG_WEB // Special case l-value operands bool lvalue = false; switch (node.getOp()) { @@ -5717,7 +5601,6 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& builder.addDecoration(lvalue_id, TranslateNonUniformDecoration(lvalueCoherentFlags)); lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType()); } else -#endif arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType())); } } @@ -5742,13 +5625,9 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO ? node->getAsAggregate()->getSequence()[0]->getAsTyped()->getType() : node->getAsUnaryNode()->getOperand()->getAsTyped()->getType(); const glslang::TSampler sampler = imageType.getSampler(); -#ifdef GLSLANG_WEB - const bool f16ShadowCompare = false; -#else bool f16ShadowCompare = (sampler.shadow && node->getAsAggregate()) ? node->getAsAggregate()->getSequence()[1]->getAsTyped()->getType().getBasicType() == glslang::EbtFloat16 : false; -#endif const auto signExtensionMask = [&]() { if (builder.getSpvVersion() >= spv::Spv_1_4) { @@ -5794,7 +5673,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO return builder.createTextureQueryCall(spv::OpImageQuerySizeLod, params, isUnsignedResult); } else return builder.createTextureQueryCall(spv::OpImageQuerySize, params, isUnsignedResult); -#ifndef GLSLANG_WEB case glslang::EOpImageQuerySamples: case glslang::EOpTextureQuerySamples: return builder.createTextureQueryCall(spv::OpImageQuerySamples, params, isUnsignedResult); @@ -5805,7 +5683,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO return builder.createTextureQueryCall(spv::OpImageQueryLevels, params, isUnsignedResult); case glslang::EOpSparseTexelsResident: return builder.createUnaryOp(spv::OpImageSparseTexelsResident, builder.makeBoolType(), arguments[0]); -#endif default: assert(0); break; @@ -6047,7 +5924,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } } -#ifndef GLSLANG_WEB // Check for fragment mask functions other than queries if (cracked.fragMask) { assert(sampler.ms); @@ -6081,7 +5957,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO builder.addCapability(spv::CapabilityFragmentMaskAMD); return builder.createOp(fragMaskOp, resultType(), operands); } -#endif // Check for texture functions other than queries bool sparse = node->isSparseTexture(); @@ -6115,7 +5990,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO bias = true; } -#ifndef GLSLANG_WEB if (cracked.gather) { const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); if (bias || cracked.lod || @@ -6124,7 +5998,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO builder.addCapability(spv::CapabilityImageGatherBiasLodAMD); } } -#endif // set the rest of the arguments @@ -6184,7 +6057,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO ++extraArgs; } -#ifndef GLSLANG_WEB // lod clamp if (cracked.lodClamp) { params.lodClamp = arguments[2 + extraArgs]; @@ -6213,14 +6085,13 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO resultStruct = arguments[4 + extraArgs]; extraArgs += 3; } -#endif + // bias if (bias) { params.bias = arguments[2 + extraArgs]; ++extraArgs; } -#ifndef GLSLANG_WEB if (imageFootprint) { builder.addExtension(spv::E_SPV_NV_shader_image_footprint); builder.addCapability(spv::CapabilityImageFootprintNV); @@ -6278,7 +6149,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } return builder.createCompositeExtract(res, resultType(), 0); } -#endif // projective component (might not to move) // GLSL: "The texture coordinates consumed from P, not including the last component of P, @@ -6303,7 +6173,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO } } -#ifndef GLSLANG_WEB // nonprivate if (imageType.getQualifier().nonprivate) { params.nonprivate = true; @@ -6313,7 +6182,6 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO if (imageType.getQualifier().volatil) { params.volatil = true; } -#endif std::vector result( 1, builder.createTextureCall(precision, resultType(), sparse, cracked.fetch, cracked.proj, cracked.gather, @@ -6967,7 +6835,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpUnpackHalf2x16: libCall = spv::GLSLstd450UnpackHalf2x16; break; -#ifndef GLSLANG_WEB case glslang::EOpPackSnorm4x8: libCall = spv::GLSLstd450PackSnorm4x8; break; @@ -6986,7 +6853,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpUnpackDouble2x32: libCall = spv::GLSLstd450UnpackDouble2x32; break; -#endif case glslang::EOpPackInt2x32: case glslang::EOpUnpackInt2x32: @@ -7041,7 +6907,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe libCall = spv::GLSLstd450SSign; break; -#ifndef GLSLANG_WEB case glslang::EOpDPdxFine: unaryOp = spv::OpDPdxFine; break; @@ -7290,8 +7155,6 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe unaryOp = spv::OpHitObjectGetShaderRecordBufferHandleNV; break; -#endif - case glslang::EOpCopyObject: unaryOp = spv::OpCopyObject; break; @@ -7474,13 +7337,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvBoolToInt: case glslang::EOpConvBoolToInt64: -#ifndef GLSLANG_WEB if (op == glslang::EOpConvBoolToInt64) { zero = builder.makeInt64Constant(0); one = builder.makeInt64Constant(1); - } else -#endif - { + } else { zero = builder.makeIntConstant(0); one = builder.makeIntConstant(1); } @@ -7490,13 +7350,10 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvBoolToUint: case glslang::EOpConvBoolToUint64: -#ifndef GLSLANG_WEB if (op == glslang::EOpConvBoolToUint64) { zero = builder.makeUint64Constant(0); one = builder.makeUint64Constant(1); - } else -#endif - { + } else { zero = builder.makeUintConstant(0); one = builder.makeUintConstant(1); } @@ -7559,16 +7416,13 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvInt64ToUint64: if (builder.isInSpecConstCodeGenMode()) { // Build zero scalar or vector for OpIAdd. -#ifndef GLSLANG_WEB if(op == glslang::EOpConvUint8ToInt8 || op == glslang::EOpConvInt8ToUint8) { zero = builder.makeUint8Constant(0); } else if (op == glslang::EOpConvUint16ToInt16 || op == glslang::EOpConvInt16ToUint16) { zero = builder.makeUint16Constant(0); } else if (op == glslang::EOpConvUint64ToInt64 || op == glslang::EOpConvInt64ToUint64) { zero = builder.makeUint64Constant(0); - } else -#endif - { + } else { zero = builder.makeUintConstant(0); } zero = makeSmearedConstant(zero, vectorSize); @@ -7595,7 +7449,6 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora convOp = spv::OpConvertFToU; break; -#ifndef GLSLANG_WEB case glslang::EOpConvInt8ToBool: case glslang::EOpConvUint8ToBool: zero = builder.makeUint8Constant(0); @@ -7774,7 +7627,6 @@ spv::Id TGlslangToSpvTraverser::createConversion(glslang::TOperator op, OpDecora case glslang::EOpConvUvec2ToPtr: convOp = spv::OpBitcast; break; -#endif default: break; @@ -8766,7 +8618,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: } break; -#ifndef GLSLANG_WEB case glslang::EOpInterpolateAtSample: if (typeProxy == glslang::EbtFloat16) builder.addExtension(spv::E_SPV_AMD_gpu_shader_half_float); @@ -9167,7 +9018,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: } break; -#endif // GLSLANG_WEB default: return 0; } @@ -9211,7 +9061,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: } } -#ifndef GLSLANG_WEB // Decode the return types that were structures switch (op) { case glslang::EOpAddCarry: @@ -9241,7 +9090,6 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: default: break; } -#endif return builder.setPrecision(id, precision); } @@ -9286,7 +9134,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.createMemoryBarrier(spv::ScopeWorkgroup, spv::MemorySemanticsAllMemory | spv::MemorySemanticsAcquireReleaseMask); return 0; -#ifndef GLSLANG_WEB case glslang::EOpMemoryBarrierAtomicCounter: builder.createMemoryBarrier(memoryBarrierScope, spv::MemorySemanticsAtomicCounterMemoryMask | spv::MemorySemanticsAcquireReleaseMask); @@ -9405,7 +9252,6 @@ spv::Id TGlslangToSpvTraverser::createNoArgOperation(glslang::TOperator op, spv: builder.addCapability(spv::CapabilityShaderClockKHR); return builder.createOp(spv::OpReadClockKHR, typeId, args); } -#endif case glslang::EOpStencilAttachmentReadEXT: case glslang::EOpDepthAttachmentReadEXT: { @@ -9485,13 +9331,11 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, TranslatePrecisionDecoration(symbol->getType())); builder.addDecoration(id, TranslateInterpolationDecoration(symbol->getType().getQualifier())); builder.addDecoration(id, TranslateAuxiliaryStorageDecoration(symbol->getType().getQualifier())); -#ifndef GLSLANG_WEB addMeshNVDecoration(id, /*member*/ -1, symbol->getType().getQualifier()); if (symbol->getQualifier().hasComponent()) builder.addDecoration(id, spv::DecorationComponent, symbol->getQualifier().layoutComponent); if (symbol->getQualifier().hasIndex()) builder.addDecoration(id, spv::DecorationIndex, symbol->getQualifier().layoutIndex); -#endif if (symbol->getType().getQualifier().hasSpecConstantId()) builder.addDecoration(id, spv::DecorationSpecId, symbol->getType().getQualifier().layoutSpecConstantId); // atomic counters use this: @@ -9561,7 +9405,6 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, spv::DecorationVolatile); } -#ifndef GLSLANG_WEB // Subgroup builtins which have input storage class are volatile for ray tracing stages. if (symbol->getType().isImage() || symbol->getQualifier().isPipeInput()) { std::vector memory; @@ -9668,12 +9511,10 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol builder.addDecoration(id, static_cast(decorateString.first), strings); } } -#endif return id; } -#ifndef GLSLANG_WEB // add per-primitive, per-view. per-task decorations to a struct member (member >= 0) or an object void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier& qualifier) { @@ -9720,7 +9561,6 @@ void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const g builder.addDecoration(id, spv::DecorationPerTaskNV); } } -#endif // Make a full tree of instructions to build a SPIR-V specialization constant, // or regular constant if possible. @@ -9848,7 +9688,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtBool: spvConsts.push_back(builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst())); break; -#ifndef GLSLANG_WEB case glslang::EbtInt8: builder.addCapability(spv::CapabilityInt8); spvConsts.push_back(builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const())); @@ -9878,7 +9717,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla builder.addCapability(spv::CapabilityFloat16); spvConsts.push_back(builder.makeFloat16Constant(zero ? 0.0F : (float)consts[nextConst].getDConst())); break; -#endif default: assert(0); break; @@ -9902,7 +9740,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla case glslang::EbtBool: scalar = builder.makeBoolConstant(zero ? false : consts[nextConst].getBConst(), specConstant); break; -#ifndef GLSLANG_WEB case glslang::EbtInt8: builder.addCapability(spv::CapabilityInt8); scalar = builder.makeInt8Constant(zero ? 0 : consts[nextConst].getI8Const(), specConstant); @@ -9936,7 +9773,6 @@ spv::Id TGlslangToSpvTraverser::createSpvConstantFromConstUnionArray(const glsla scalar = builder.makeUint64Constant(zero ? 0 : consts[nextConst].getU64Const(), specConstant); scalar = builder.createUnaryOp(spv::OpBitcast, typeId, scalar); break; -#endif case glslang::EbtString: scalar = builder.getStringId(consts[nextConst].getSConst()->c_str()); break; @@ -10084,7 +9920,6 @@ spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslan return builder.createOp(spv::OpPhi, boolTypeId, phiOperands); } -#ifndef GLSLANG_WEB // Return type Id of the imported set of extended instructions corresponds to the name. // Import this set if it has not been imported yet. spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name) @@ -10098,7 +9933,6 @@ spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name) return extBuiltins; } } -#endif }; // end anonymous namespace @@ -10151,7 +9985,6 @@ bool OutputSpvBin(const std::vector& spirv, const char* baseName) // Write SPIR-V out to a text file with 32-bit hexadecimal words bool OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName) { -#if !defined(GLSLANG_WEB) std::ofstream out; out.open(baseName, std::ios::binary | std::ios::out); if (out.fail()) { @@ -10183,7 +10016,6 @@ bool OutputSpvHex(const std::vector& spirv, const char* baseName, out << std::endl; } out.close(); -#endif return true; } diff --git a/SPIRV/Logger.cpp b/SPIRV/Logger.cpp index cdc8469c44..48bd4e3ade 100644 --- a/SPIRV/Logger.cpp +++ b/SPIRV/Logger.cpp @@ -32,8 +32,6 @@ // ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. -#ifndef GLSLANG_WEB - #include "Logger.h" #include @@ -68,5 +66,3 @@ std::string SpvBuildLogger::getAllMessages() const { } } // end spv namespace - -#endif diff --git a/SPIRV/Logger.h b/SPIRV/Logger.h index 411367c030..2e4ddaf517 100644 --- a/SPIRV/Logger.h +++ b/SPIRV/Logger.h @@ -46,14 +46,6 @@ class SpvBuildLogger { public: SpvBuildLogger() {} -#ifdef GLSLANG_WEB - void tbdFunctionality(const std::string& f) { } - void missingFunctionality(const std::string& f) { } - void warning(const std::string& w) { } - void error(const std::string& e) { errors.push_back(e); } - std::string getAllMessages() { return ""; } -#else - // Registers a TBD functionality. void tbdFunctionality(const std::string& f); // Registers a missing functionality. @@ -67,7 +59,6 @@ class SpvBuildLogger { // Returns all messages accumulated in the order of: // TBD functionalities, missing functionalities, warnings, errors. std::string getAllMessages() const; -#endif private: SpvBuildLogger(const SpvBuildLogger&); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index eb8cb7a550..57e03d5d6b 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -46,10 +46,7 @@ #include #include "SpvBuilder.h" - -#ifndef GLSLANG_WEB #include "hex_float.h" -#endif #ifndef _WIN32 #include @@ -283,11 +280,6 @@ Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardP Id Builder::makeIntegerType(int width, bool hasSign) { -#ifdef GLSLANG_WEB - assert(width == 32); - width = 32; -#endif - // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[OpTypeInt].size(); ++t) { @@ -329,11 +321,6 @@ Id Builder::makeIntegerType(int width, bool hasSign) Id Builder::makeFloatType(int width) { -#ifdef GLSLANG_WEB - assert(width == 32); - width = 32; -#endif - // try to find it Instruction* type; for (int t = 0; t < (int)groupedTypes[OpTypeFloat].size(); ++t) { @@ -733,7 +720,6 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); -#ifndef GLSLANG_WEB // deal with capabilities switch (dim) { case DimBuffer: @@ -779,7 +765,6 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo addCapability(CapabilityImageMSArray); } } -#endif if (emitNonSemanticShaderDebugInfo) { @@ -1196,7 +1181,6 @@ Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable return inst->getResultId(); } -#ifndef GLSLANG_WEB Id Builder::makeAccelerationStructureType() { Instruction *type; @@ -1241,7 +1225,6 @@ Id Builder::makeHitObjectNVType() return type->getResultId(); } -#endif Id Builder::getDerefTypeId(Id resultId) const { @@ -1643,10 +1626,6 @@ Id Builder::makeFloatConstant(float f, bool specConstant) Id Builder::makeDoubleConstant(double d, bool specConstant) { -#ifdef GLSLANG_WEB - assert(0); - return NoResult; -#else Op opcode = specConstant ? OpSpecConstant : OpConstant; Id typeId = makeFloatType(64); union { double db; unsigned long long ull; } u; @@ -1671,15 +1650,10 @@ Id Builder::makeDoubleConstant(double d, bool specConstant) module.mapInstruction(c); return c->getResultId(); -#endif } Id Builder::makeFloat16Constant(float f16, bool specConstant) { -#ifdef GLSLANG_WEB - assert(0); - return NoResult; -#else Op opcode = specConstant ? OpSpecConstant : OpConstant; Id typeId = makeFloatType(16); @@ -1704,17 +1678,11 @@ Id Builder::makeFloat16Constant(float f16, bool specConstant) module.mapInstruction(c); return c->getResultId(); -#endif } Id Builder::makeFpConstant(Id type, double d, bool specConstant) { -#ifdef GLSLANG_WEB - const int width = 32; - assert(width == getScalarTypeWidth(type)); -#else const int width = getScalarTypeWidth(type); -#endif assert(isFloatType(type)); @@ -2846,12 +2814,10 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, if (parameters.component != NoResult) texArgs.push_back(parameters.component); -#ifndef GLSLANG_WEB if (parameters.granularity != NoResult) texArgs.push_back(parameters.granularity); if (parameters.coarse != NoResult) texArgs.push_back(parameters.coarse); -#endif // // Set up the optional arguments @@ -2892,7 +2858,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, mask = (ImageOperandsMask)(mask | ImageOperandsConstOffsetsMask); texArgs.push_back(parameters.offsets); } -#ifndef GLSLANG_WEB if (parameters.sample) { mask = (ImageOperandsMask)(mask | ImageOperandsSampleMask); texArgs.push_back(parameters.sample); @@ -2910,7 +2875,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, if (parameters.volatil) { mask = mask | ImageOperandsVolatileTexelKHRMask; } -#endif mask = mask | signExtensionMask; // insert the operand for the mask, if any bits were set. if (mask != ImageOperandsMaskNone) @@ -2925,7 +2889,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, opCode = OpImageSparseFetch; else opCode = OpImageFetch; -#ifndef GLSLANG_WEB } else if (parameters.granularity && parameters.coarse) { opCode = OpImageSampleFootprintNV; } else if (gather) { @@ -2939,7 +2902,6 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, opCode = OpImageSparseGather; else opCode = OpImageGather; -#endif } else if (explicitLod) { if (parameters.Dref) { if (proj) @@ -3302,12 +3264,7 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& int numRows = getTypeNumRows(resultTypeId); Instruction* instr = module.getInstruction(componentTypeId); -#ifdef GLSLANG_WEB - const unsigned bitCount = 32; - assert(bitCount == instr->getImmediateOperand(0)); -#else const unsigned bitCount = instr->getImmediateOperand(0); -#endif // Optimize matrix constructed from a bigger matrix if (isMatrix(sources[0]) && getNumColumns(sources[0]) >= numCols && getNumRows(sources[0]) >= numRows) { diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index b28b9a1a62..1f38e7899d 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -285,14 +285,10 @@ class Builder { bool isMatrixType(Id typeId) const { return getTypeClass(typeId) == OpTypeMatrix; } bool isStructType(Id typeId) const { return getTypeClass(typeId) == OpTypeStruct; } bool isArrayType(Id typeId) const { return getTypeClass(typeId) == OpTypeArray; } -#ifdef GLSLANG_WEB - bool isCooperativeMatrixType(Id typeId)const { return false; } -#else bool isCooperativeMatrixType(Id typeId)const { return getTypeClass(typeId) == OpTypeCooperativeMatrixKHR || getTypeClass(typeId) == OpTypeCooperativeMatrixNV; } -#endif bool isAggregateType(Id typeId) const { return isArrayType(typeId) || isStructType(typeId) || isCooperativeMatrixType(typeId); } bool isImageType(Id typeId) const { return getTypeClass(typeId) == OpTypeImage; } @@ -707,11 +703,6 @@ class Builder { // Accumulate whether anything in the chain of structures has coherent decorations. struct CoherentFlags { CoherentFlags() { clear(); } -#ifdef GLSLANG_WEB - void clear() { } - bool isVolatile() const { return false; } - CoherentFlags operator |=(const CoherentFlags &other) { return *this; } -#else bool isVolatile() const { return volatil; } bool isNonUniform() const { return nonUniform; } bool anyCoherent() const { @@ -756,7 +747,6 @@ class Builder { nonUniform |= other.nonUniform; return *this; } -#endif }; CoherentFlags coherentFlags; }; @@ -842,14 +832,12 @@ class Builder { // Prune unreachable blocks in the CFG and remove unneeded decorations. void postProcessCFG(); -#ifndef GLSLANG_WEB // Add capabilities, extensions based on instructions in the module. void postProcessFeatures(); // Hook to visit each instruction in a block in a function void postProcess(Instruction&); // Hook to visit each non-32-bit sized float/int operation in a block. void postProcessType(const Instruction&, spv::Id typeId); -#endif void dump(std::vector&) const; diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index b185f61bb8..c4be365527 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -57,7 +57,6 @@ namespace spv { namespace spv { -#ifndef GLSLANG_WEB // Hook to visit each operand type and result type of an instruction. // Will be called multiple times for one instruction, once for each typed // operand and the result. @@ -334,7 +333,6 @@ void Builder::postProcess(Instruction& inst) } } } -#endif // comment in header void Builder::postProcessCFG() @@ -395,7 +393,6 @@ void Builder::postProcessCFG() decorations.end()); } -#ifndef GLSLANG_WEB // comment in header void Builder::postProcessFeatures() { // Add per-instruction capabilities, extensions, etc., @@ -483,14 +480,11 @@ void Builder::postProcessFeatures() { } } } -#endif // comment in header void Builder::postProcess() { postProcessCFG(); -#ifndef GLSLANG_WEB postProcessFeatures(); -#endif } }; // end spv namespace diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 8a78b21fc5..d6ef52257f 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -158,13 +158,11 @@ void ProcessConfigFile() { if (ConfigFile.size() == 0) *GetResources() = *GetDefaultResources(); -#ifndef GLSLANG_WEB else { char* configString = ReadFileData(ConfigFile.c_str()); DecodeResourceLimits(GetResources(), configString); FreeFileData(configString); } -#endif } int ReflectOptions = EShReflectionDefault; @@ -1342,7 +1340,6 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setPreamble(PreambleString.c_str()); shader->addProcesses(Processes); -#ifndef GLSLANG_WEB // Set IO mapper binding shift values for (int r = 0; r < glslang::EResCount; ++r) { const glslang::TResourceType res = glslang::TResourceType(r); @@ -1374,7 +1371,6 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } shader->setUniformLocationBase(uniformBase); -#endif if (VulkanRulesRelaxed) { for (auto& storageOverride : blockStorageOverrides) { @@ -1434,7 +1430,6 @@ void CompileAndLinkShaderUnits(std::vector compUnits) const int defaultVersion = Options & EOptionDefaultDesktop ? 110 : 100; -#ifndef GLSLANG_WEB if (Options & EOptionOutputPreprocessed) { std::string str; if (shader->preprocess(GetResources(), defaultVersion, ENoProfile, false, false, messages, &str, includer)) { @@ -1446,7 +1441,6 @@ void CompileAndLinkShaderUnits(std::vector compUnits) StderrIfNonEmpty(shader->getInfoDebugLog()); continue; } -#endif if (! shader->parse(GetResources(), defaultVersion, false, messages, includer)) CompileFailed = true; @@ -1470,13 +1464,11 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages)) LinkFailed = true; -#ifndef GLSLANG_WEB // Map IO if (Options & EOptionSpv) { if (!program.mapIO()) LinkFailed = true; } -#endif // Report if (! (Options & EOptionSuppressInfolog) && @@ -1485,13 +1477,11 @@ void CompileAndLinkShaderUnits(std::vector compUnits) PutsIfNonEmpty(program.getInfoDebugLog()); } -#ifndef GLSLANG_WEB // Reflect if (Options & EOptionDumpReflection) { program.buildReflection(ReflectOptions); program.dumpReflection(); } -#endif std::vector outputFiles; @@ -1534,10 +1524,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } outputFiles.push_back(GetBinaryName((EShLanguage)stage)); -#ifndef GLSLANG_WEB if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv)) spv::Disassemble(std::cout, spirv); -#endif } } } @@ -1632,13 +1620,11 @@ int singleMain() workList.add(item.get()); }); -#ifndef GLSLANG_WEB if (Options & EOptionDumpConfig) { printf("%s", GetDefaultTBuiltInResourceString().c_str()); if (workList.empty()) return ESuccess; } -#endif if (Options & EOptionDumpBareVersion) { printf("%d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR, diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 537597b69b..ae49a936a1 100755 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -67,10 +67,8 @@ enum TBasicType { EbtRayQuery, EbtHitObjectNV, EbtCoopmat, -#ifndef GLSLANG_WEB // SPIR-V type defined by spirv_type EbtSpirvType, -#endif // HLSL types that live only temporarily. EbtString, @@ -97,9 +95,7 @@ enum TStorageQualifier { EvqUniform, // read only, shared with app EvqBuffer, // read/write, shared with app EvqShared, // compute shader's read/write 'shared' qualifier -#ifndef GLSLANG_WEB EvqSpirvStorageClass, // spirv_storage_class -#endif EvqPayload, EvqPayloadIn, @@ -342,10 +338,6 @@ enum TPrecisionQualifier { EpqHigh }; -#ifdef GLSLANG_WEB -__inline const char* GetStorageQualifierString(TStorageQualifier q) { return ""; } -__inline const char* GetPrecisionQualifierString(TPrecisionQualifier p) { return ""; } -#else // These will show up in error messages __inline const char* GetStorageQualifierString(TStorageQualifier q) { @@ -354,9 +346,7 @@ __inline const char* GetStorageQualifierString(TStorageQualifier q) case EvqGlobal: return "global"; break; case EvqConst: return "const"; break; case EvqConstReadOnly: return "const (read only)"; break; -#ifndef GLSLANG_WEB case EvqSpirvStorageClass: return "spirv_storage_class"; break; -#endif case EvqVaryingIn: return "in"; break; case EvqVaryingOut: return "out"; break; case EvqUniform: return "uniform"; break; @@ -547,7 +537,6 @@ __inline const char* GetPrecisionQualifierString(TPrecisionQualifier p) default: return "unknown precision qualifier"; } } -#endif __inline bool isTypeSignedInt(TBasicType type) { diff --git a/glslang/Include/ConstantUnion.h b/glslang/Include/ConstantUnion.h index c4ffb85771..1f39fc5930 100644 --- a/glslang/Include/ConstantUnion.h +++ b/glslang/Include/ConstantUnion.h @@ -234,7 +234,6 @@ class TConstUnion { break; -#ifndef GLSLANG_WEB case EbtInt16: if (constant.i16Const == i16Const) return true; @@ -265,7 +264,6 @@ class TConstUnion { return true; break; -#endif default: assert(false && "Default missing"); } @@ -347,7 +345,6 @@ class TConstUnion { return true; return false; -#ifndef GLSLANG_WEB case EbtInt8: if (i8Const > constant.i8Const) return true; @@ -378,7 +375,6 @@ class TConstUnion { return true; return false; -#endif default: assert(false && "Default missing"); return false; @@ -389,7 +385,6 @@ class TConstUnion { { assert(type == constant.type); switch (type) { -#ifndef GLSLANG_WEB case EbtInt8: if (i8Const < constant.i8Const) return true; @@ -419,7 +414,6 @@ class TConstUnion { return true; return false; -#endif case EbtDouble: if (dConst < constant.dConst) return true; @@ -449,14 +443,12 @@ class TConstUnion { case EbtInt: returnValue.setIConst(iConst + constant.iConst); break; case EbtUint: returnValue.setUConst(uConst + constant.uConst); break; case EbtDouble: returnValue.setDConst(dConst + constant.dConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const + constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const + constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const + constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const + constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const + constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const + constant.u64Const); break; -#endif default: assert(false && "Default missing"); } @@ -471,14 +463,12 @@ class TConstUnion { case EbtInt: returnValue.setIConst(iConst - constant.iConst); break; case EbtUint: returnValue.setUConst(uConst - constant.uConst); break; case EbtDouble: returnValue.setDConst(dConst - constant.dConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const - constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const - constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const - constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const - constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const - constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const - constant.u64Const); break; -#endif default: assert(false && "Default missing"); } @@ -493,14 +483,12 @@ class TConstUnion { case EbtInt: returnValue.setIConst(iConst * constant.iConst); break; case EbtUint: returnValue.setUConst(uConst * constant.uConst); break; case EbtDouble: returnValue.setDConst(dConst * constant.dConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const * constant.i8Const); break; case EbtInt16: returnValue.setI16Const(i16Const * constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const * constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const * constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const * constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const * constant.u64Const); break; -#endif default: assert(false && "Default missing"); } @@ -514,14 +502,12 @@ class TConstUnion { switch (type) { case EbtInt: returnValue.setIConst(iConst % constant.iConst); break; case EbtUint: returnValue.setUConst(uConst % constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const % constant.i8Const); break; case EbtInt16: returnValue.setI8Const(i8Const % constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const % constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const % constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const % constant.u16Const); break; case EbtUint64: returnValue.setU64Const(u64Const % constant.u64Const); break; -#endif default: assert(false && "Default missing"); } @@ -532,7 +518,6 @@ class TConstUnion { { TConstUnion returnValue; switch (type) { -#ifndef GLSLANG_WEB case EbtInt8: switch (constant.type) { case EbtInt8: returnValue.setI8Const(i8Const >> constant.i8Const); break; @@ -585,19 +570,16 @@ class TConstUnion { default: assert(false && "Default missing"); } break; -#endif case EbtInt: switch (constant.type) { case EbtInt: returnValue.setIConst(iConst >> constant.iConst); break; case EbtUint: returnValue.setIConst(iConst >> constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setIConst(iConst >> constant.i8Const); break; case EbtUint8: returnValue.setIConst(iConst >> constant.u8Const); break; case EbtInt16: returnValue.setIConst(iConst >> constant.i16Const); break; case EbtUint16: returnValue.setIConst(iConst >> constant.u16Const); break; case EbtInt64: returnValue.setIConst(iConst >> constant.i64Const); break; case EbtUint64: returnValue.setIConst(iConst >> constant.u64Const); break; -#endif default: assert(false && "Default missing"); } break; @@ -605,18 +587,15 @@ class TConstUnion { switch (constant.type) { case EbtInt: returnValue.setUConst(uConst >> constant.iConst); break; case EbtUint: returnValue.setUConst(uConst >> constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setUConst(uConst >> constant.i8Const); break; case EbtUint8: returnValue.setUConst(uConst >> constant.u8Const); break; case EbtInt16: returnValue.setUConst(uConst >> constant.i16Const); break; case EbtUint16: returnValue.setUConst(uConst >> constant.u16Const); break; case EbtInt64: returnValue.setUConst(uConst >> constant.i64Const); break; case EbtUint64: returnValue.setUConst(uConst >> constant.u64Const); break; -#endif default: assert(false && "Default missing"); } break; -#ifndef GLSLANG_WEB case EbtInt64: switch (constant.type) { case EbtInt8: returnValue.setI64Const(i64Const >> constant.i8Const); break; @@ -643,7 +622,6 @@ class TConstUnion { default: assert(false && "Default missing"); } break; -#endif default: assert(false && "Default missing"); } @@ -654,7 +632,6 @@ class TConstUnion { { TConstUnion returnValue; switch (type) { -#ifndef GLSLANG_WEB case EbtInt8: switch (constant.type) { case EbtInt8: returnValue.setI8Const(i8Const << constant.i8Const); break; @@ -733,19 +710,16 @@ class TConstUnion { default: assert(false && "Default missing"); } break; -#endif case EbtInt: switch (constant.type) { case EbtInt: returnValue.setIConst(iConst << constant.iConst); break; case EbtUint: returnValue.setIConst(iConst << constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setIConst(iConst << constant.i8Const); break; case EbtUint8: returnValue.setIConst(iConst << constant.u8Const); break; case EbtInt16: returnValue.setIConst(iConst << constant.i16Const); break; case EbtUint16: returnValue.setIConst(iConst << constant.u16Const); break; case EbtInt64: returnValue.setIConst(iConst << constant.i64Const); break; case EbtUint64: returnValue.setIConst(iConst << constant.u64Const); break; -#endif default: assert(false && "Default missing"); } break; @@ -753,14 +727,12 @@ class TConstUnion { switch (constant.type) { case EbtInt: returnValue.setUConst(uConst << constant.iConst); break; case EbtUint: returnValue.setUConst(uConst << constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setUConst(uConst << constant.i8Const); break; case EbtUint8: returnValue.setUConst(uConst << constant.u8Const); break; case EbtInt16: returnValue.setUConst(uConst << constant.i16Const); break; case EbtUint16: returnValue.setUConst(uConst << constant.u16Const); break; case EbtInt64: returnValue.setUConst(uConst << constant.i64Const); break; case EbtUint64: returnValue.setUConst(uConst << constant.u64Const); break; -#endif default: assert(false && "Default missing"); } break; @@ -777,14 +749,12 @@ class TConstUnion { switch (type) { case EbtInt: returnValue.setIConst(iConst & constant.iConst); break; case EbtUint: returnValue.setUConst(uConst & constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const & constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const & constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const & constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const & constant.u16Const); break; case EbtInt64: returnValue.setI64Const(i64Const & constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const & constant.u64Const); break; -#endif default: assert(false && "Default missing"); } @@ -798,14 +768,12 @@ class TConstUnion { switch (type) { case EbtInt: returnValue.setIConst(iConst | constant.iConst); break; case EbtUint: returnValue.setUConst(uConst | constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const | constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const | constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const | constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const | constant.u16Const); break; case EbtInt64: returnValue.setI64Const(i64Const | constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const | constant.u64Const); break; -#endif default: assert(false && "Default missing"); } @@ -819,14 +787,12 @@ class TConstUnion { switch (type) { case EbtInt: returnValue.setIConst(iConst ^ constant.iConst); break; case EbtUint: returnValue.setUConst(uConst ^ constant.uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(i8Const ^ constant.i8Const); break; case EbtUint8: returnValue.setU8Const(u8Const ^ constant.u8Const); break; case EbtInt16: returnValue.setI16Const(i16Const ^ constant.i16Const); break; case EbtUint16: returnValue.setU16Const(u16Const ^ constant.u16Const); break; case EbtInt64: returnValue.setI64Const(i64Const ^ constant.i64Const); break; case EbtUint64: returnValue.setU64Const(u64Const ^ constant.u64Const); break; -#endif default: assert(false && "Default missing"); } @@ -839,14 +805,12 @@ class TConstUnion { switch (type) { case EbtInt: returnValue.setIConst(~iConst); break; case EbtUint: returnValue.setUConst(~uConst); break; -#ifndef GLSLANG_WEB case EbtInt8: returnValue.setI8Const(~i8Const); break; case EbtUint8: returnValue.setU8Const(~u8Const); break; case EbtInt16: returnValue.setI16Const(~i16Const); break; case EbtUint16: returnValue.setU16Const(~u16Const); break; case EbtInt64: returnValue.setI64Const(~i64Const); break; case EbtUint64: returnValue.setU64Const(~u64Const); break; -#endif default: assert(false && "Default missing"); } diff --git a/glslang/Include/SpirvIntrinsics.h b/glslang/Include/SpirvIntrinsics.h index d56c65dec0..bfb551e445 100644 --- a/glslang/Include/SpirvIntrinsics.h +++ b/glslang/Include/SpirvIntrinsics.h @@ -35,8 +35,6 @@ #pragma once -#ifndef GLSLANG_WEB - // // GL_EXT_spirv_intrinsics // @@ -135,5 +133,3 @@ struct TSpirvType { }; } // end namespace glslang - -#endif // GLSLANG_WEB diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 6868c219a4..26aba9bbf4 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -86,20 +86,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool combined : 1; // true means texture is combined with a sampler, false means texture with no sampler bool sampler : 1; // true means a pure sampler, other fields should be clear() -#ifdef GLSLANG_WEB - bool is1D() const { return false; } - bool isBuffer() const { return false; } - bool isRect() const { return false; } - bool isSubpass() const { return false; } - bool isAttachmentEXT() const { return false; } - bool isCombined() const { return true; } - bool isImage() const { return false; } - bool isImageClass() const { return false; } - bool isMultiSample() const { return false; } - bool isExternal() const { return false; } - void setExternal(bool e) { } - bool isYuv() const { return false; } -#else unsigned int vectorSize : 3; // vector return type size. // Some languages support structures as sample results. Storing the whole structure in the // TSampler is too large, so there is an index to a separate table. @@ -132,7 +118,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, bool isExternal() const { return external; } void setExternal(bool e) { external = e; } bool isYuv() const { return yuv; } -#endif bool isTexture() const { return !sampler && !image; } bool isPureSampler() const { return sampler; } @@ -152,10 +137,8 @@ struct TSampler { // misnomer now; includes images, textures without sampler, image = false; combined = false; sampler = false; -#ifndef GLSLANG_WEB external = false; yuv = false; -#endif #ifdef ENABLE_HLSL clearReturnStruct(); @@ -207,7 +190,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, shadow = s; } -#ifndef GLSLANG_WEB // make a subpass input attachment void setSubpass(TBasicType t, bool m = false) { @@ -226,7 +208,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, image = true; dim = EsdAttachmentEXT; } -#endif bool operator==(const TSampler& right) const { @@ -264,7 +245,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, switch (type) { case EbtInt: s.append("i"); break; case EbtUint: s.append("u"); break; -#ifndef GLSLANG_WEB case EbtFloat16: s.append("f16"); break; case EbtInt8: s.append("i8"); break; case EbtUint16: s.append("u8"); break; @@ -272,7 +252,6 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case EbtUint8: s.append("u16"); break; case EbtInt64: s.append("i64"); break; case EbtUint64: s.append("u64"); break; -#endif default: break; } if (isImageClass()) { @@ -298,13 +277,11 @@ struct TSampler { // misnomer now; includes images, textures without sampler, case Esd2D: s.append("2D"); break; case Esd3D: s.append("3D"); break; case EsdCube: s.append("Cube"); break; -#ifndef GLSLANG_WEB case Esd1D: s.append("1D"); break; case EsdRect: s.append("2DRect"); break; case EsdBuffer: s.append("Buffer"); break; case EsdSubpass: s.append("Input"); break; case EsdAttachmentEXT: s.append(""); break; -#endif default: break; // some compilers want this } if (isMultiSample()) @@ -533,12 +510,10 @@ class TQualifier { invariant = false; makeTemporary(); declaredBuiltIn = EbvNone; -#ifndef GLSLANG_WEB noContraction = false; nullInit = false; spirvByReference = false; spirvLiteral = false; -#endif defaultBlock = false; } @@ -555,21 +530,17 @@ class TQualifier { nullInit = false; defaultBlock = false; clearLayout(); -#ifndef GLSLANG_WEB spirvStorageClass = -1; spirvDecorate = nullptr; spirvByReference = false; spirvLiteral = false; -#endif } void clearInterstage() { clearInterpolation(); -#ifndef GLSLANG_WEB patch = false; sample = false; -#endif } void clearInterpolation() @@ -577,20 +548,17 @@ class TQualifier { centroid = false; smooth = false; flat = false; -#ifndef GLSLANG_WEB nopersp = false; explicitInterp = false; pervertexNV = false; perPrimitiveNV = false; perViewNV = false; perTaskNV = false; -#endif pervertexEXT = false; } void clearMemory() { -#ifndef GLSLANG_WEB coherent = false; devicecoherent = false; queuefamilycoherent = false; @@ -602,7 +570,6 @@ class TQualifier { restrict = false; readonly = false; writeonly = false; -#endif } const char* semanticName; @@ -621,31 +588,6 @@ class TQualifier { bool explicitOffset : 1; bool defaultBlock : 1; // default blocks with matching names have structures merged when linking -#ifdef GLSLANG_WEB - bool isWriteOnly() const { return false; } - bool isReadOnly() const { return false; } - bool isRestrict() const { return false; } - bool isCoherent() const { return false; } - bool isVolatile() const { return false; } - bool isSample() const { return false; } - bool isMemory() const { return false; } - bool isMemoryQualifierImageAndSSBOOnly() const { return false; } - bool bufferReferenceNeedsVulkanMemoryModel() const { return false; } - bool isInterpolation() const { return flat || smooth; } - bool isExplicitInterpolation() const { return false; } - bool isAuxiliary() const { return centroid; } - bool isPatch() const { return false; } - bool isNoContraction() const { return false; } - void setNoContraction() { } - bool isPervertexNV() const { return false; } - bool isPervertexEXT() const { return pervertexEXT; } - void setNullInit() {} - bool isNullInit() const { return false; } - void setSpirvByReference() { } - bool isSpirvByReference() { return false; } - void setSpirvLiteral() { } - bool isSpirvLiteral() { return false; } -#else bool noContraction: 1; // prevent contraction and reassociation, e.g., for 'precise' keyword, and expressions it affects bool nopersp : 1; bool explicitInterp : 1; @@ -712,7 +654,6 @@ class TQualifier { bool isSpirvByReference() const { return spirvByReference; } void setSpirvLiteral() { spirvLiteral = true; } bool isSpirvLiteral() const { return spirvLiteral; } -#endif bool isPipeInput() const { @@ -843,9 +784,7 @@ class TQualifier { } void setBlockStorage(TBlockStorageClass newBacking) { -#ifndef GLSLANG_WEB layoutPushConstant = (newBacking == EbsPushConstant); -#endif switch (newBacking) { case EbsUniform : if (layoutPacking == ElpStd430) { @@ -857,23 +796,16 @@ class TQualifier { case EbsStorageBuffer : storage = EvqBuffer; break; -#ifndef GLSLANG_WEB case EbsPushConstant : storage = EvqUniform; layoutSet = TQualifier::layoutSetEnd; layoutBinding = TQualifier::layoutBindingEnd; break; -#endif default: break; } } -#ifdef GLSLANG_WEB - bool isPerView() const { return false; } - bool isTaskMemory() const { return false; } - bool isArrayedIo(EShLanguage language) const { return false; } -#else bool isPerPrimitive() const { return perPrimitiveNV; } bool isPerView() const { return perViewNV; } bool isTaskMemory() const { return perTaskNV; } @@ -907,14 +839,12 @@ class TQualifier { return false; } } -#endif // Implementing an embedded layout-qualifier class here, since C++ can't have a real class bitfield void clearLayout() // all layout { clearUniformLayout(); -#ifndef GLSLANG_WEB layoutPushConstant = false; layoutBufferReference = false; layoutPassthrough = false; @@ -927,7 +857,6 @@ class TQualifier { layoutBindlessImage = false; layoutBufferReferenceAlign = layoutBufferReferenceAlignEnd; layoutFormat = ElfNone; -#endif clearInterstageLayout(); @@ -937,14 +866,11 @@ class TQualifier { { layoutLocation = layoutLocationEnd; layoutComponent = layoutComponentEnd; -#ifndef GLSLANG_WEB layoutIndex = layoutIndexEnd; clearStreamLayout(); clearXfbLayout(); -#endif } -#ifndef GLSLANG_WEB void clearStreamLayout() { layoutStream = layoutStreamEnd; @@ -955,7 +881,6 @@ class TQualifier { layoutXfbStride = layoutXfbStrideEnd; layoutXfbOffset = layoutXfbOffsetEnd; } -#endif bool hasNonXfbLayout() const { @@ -1011,7 +936,6 @@ class TQualifier { unsigned int layoutSpecConstantId : 11; static const unsigned int layoutSpecConstantIdEnd = 0x7FF; -#ifndef GLSLANG_WEB // stored as log2 of the actual alignment value unsigned int layoutBufferReferenceAlign : 6; static const unsigned int layoutBufferReferenceAlignEnd = 0x3F; @@ -1032,7 +956,6 @@ class TQualifier { bool layoutBindlessSampler; bool layoutBindlessImage; -#endif bool hasUniformLayout() const { @@ -1052,9 +975,7 @@ class TQualifier { layoutSet = layoutSetEnd; layoutBinding = layoutBindingEnd; -#ifndef GLSLANG_WEB layoutAttachment = layoutAttachmentEnd; -#endif } bool hasMatrix() const @@ -1087,26 +1008,6 @@ class TQualifier { { return layoutBinding != layoutBindingEnd; } -#ifdef GLSLANG_WEB - bool hasOffset() const { return false; } - bool isNonPerspective() const { return false; } - bool hasIndex() const { return false; } - unsigned getIndex() const { return 0; } - bool hasComponent() const { return false; } - bool hasStream() const { return false; } - bool hasFormat() const { return false; } - bool hasXfb() const { return false; } - bool hasXfbBuffer() const { return false; } - bool hasXfbStride() const { return false; } - bool hasXfbOffset() const { return false; } - bool hasAttachment() const { return false; } - TLayoutFormat getFormat() const { return ElfNone; } - bool isPushConstant() const { return false; } - bool isShaderRecord() const { return false; } - bool hasBufferReference() const { return false; } - bool hasBufferReferenceAlign() const { return false; } - bool isNonUniform() const { return false; } -#else bool hasOffset() const { return layoutOffset != layoutNotSet; @@ -1181,7 +1082,7 @@ class TQualifier { const TSpirvDecorate& getSpirvDecorate() const { assert(spirvDecorate); return *spirvDecorate; } TSpirvDecorate& getSpirvDecorate() { assert(spirvDecorate); return *spirvDecorate; } TString getSpirvDecorateQualifierString() const; -#endif + bool hasSpecConstantId() const { // Not the same thing as being a specialization constant, this @@ -1215,12 +1116,10 @@ class TQualifier { { switch (packing) { case ElpStd140: return "std140"; -#ifndef GLSLANG_WEB case ElpPacked: return "packed"; case ElpShared: return "shared"; case ElpStd430: return "std430"; case ElpScalar: return "scalar"; -#endif default: return "none"; } } @@ -1232,9 +1131,6 @@ class TQualifier { default: return "none"; } } -#ifdef GLSLANG_WEB - static const char* getLayoutFormatString(TLayoutFormat f) { return "none"; } -#else static const char* getLayoutFormatString(TLayoutFormat f) { switch (f) { @@ -1388,7 +1284,6 @@ class TQualifier { default: return "none"; } } -#endif }; // Qualifiers that don't need to be keep per object. They have shader scope, not object scope. @@ -1405,7 +1300,6 @@ struct TShaderQualifiers { int localSize[3]; // compute shader bool localSizeNotDefault[3]; // compute shader int localSizeSpecId[3]; // compute shader specialization id for gl_WorkGroupSize -#ifndef GLSLANG_WEB bool earlyFragmentTests; // fragment input bool postDepthCoverage; // fragment input bool earlyAndLateFragmentTestsAMD; //fragment input @@ -1424,9 +1318,6 @@ struct TShaderQualifiers { bool layoutPrimitiveCulling; // true if layout primitive_culling set TLayoutDepth getDepth() const { return layoutDepth; } TLayoutStencil getStencil() const { return layoutStencil; } -#else - TLayoutDepth getDepth() const { return EldNone; } -#endif void init() { @@ -1447,7 +1338,6 @@ struct TShaderQualifiers { localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; -#ifndef GLSLANG_WEB earlyFragmentTests = false; earlyAndLateFragmentTestsAMD = false; postDepthCoverage = false; @@ -1464,14 +1354,9 @@ struct TShaderQualifiers { layoutPrimitiveCulling = false; primitives = TQualifier::layoutNotSet; interlockOrdering = EioNone; -#endif } -#ifdef GLSLANG_WEB - bool hasBlendEquation() const { return false; } -#else bool hasBlendEquation() const { return blendEquation; } -#endif // Merge in characteristics from the 'src' qualifier. They can override when // set, but never erase when not set. @@ -1504,7 +1389,6 @@ struct TShaderQualifiers { if (src.localSizeSpecId[i] != TQualifier::layoutNotSet) localSizeSpecId[i] = src.localSizeSpecId[i]; } -#ifndef GLSLANG_WEB if (src.earlyFragmentTests) earlyFragmentTests = true; if (src.earlyAndLateFragmentTestsAMD) @@ -1537,7 +1421,6 @@ struct TShaderQualifiers { interlockOrdering = src.interlockOrdering; if (src.layoutPrimitiveCulling) layoutPrimitiveCulling = src.layoutPrimitiveCulling; -#endif } }; @@ -1577,20 +1460,12 @@ class TPublicType { const TType* userDef; TSourceLoc loc; TTypeParameters* typeParameters; -#ifndef GLSLANG_WEB // SPIR-V type defined by spirv_type directive TSpirvType* spirvType; -#endif -#ifdef GLSLANG_WEB - bool isCoopmat() const { return false; } - bool isCoopmatNV() const { return false; } - bool isCoopmatKHR() const { return false; } -#else bool isCoopmat() const { return coopmatNV || coopmatKHR; } bool isCoopmatNV() const { return coopmatNV; } bool isCoopmatKHR() const { return coopmatKHR; } -#endif void initType(const TSourceLoc& l) { @@ -1604,9 +1479,7 @@ class TPublicType { typeParameters = nullptr; coopmatNV = false; coopmatKHR = false; -#ifndef GLSLANG_WEB spirvType = nullptr; -#endif } void initQualifiers(bool global = false) @@ -1643,10 +1516,8 @@ class TPublicType { return matrixCols == 0 && vectorSize == 1 && arraySizes == nullptr && userDef == nullptr; } -#ifndef GLSLANG_WEB // GL_EXT_spirv_intrinsics void setSpirvType(const TSpirvInstruction& spirvInst, const TSpirvTypeParameters* typeParams = nullptr); -#endif // "Image" is a superset of "Subpass" bool isImage() const { return basicType == EbtSampler && sampler.isImage(); } @@ -1665,10 +1536,8 @@ class TType { explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), - arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) -#ifndef GLSLANG_WEB - , spirvType(nullptr) -#endif + arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), + spirvType(nullptr) { sampler.clear(); qualifier.clear(); @@ -1679,10 +1548,8 @@ class TType { TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), - arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) -#ifndef GLSLANG_WEB - , spirvType(nullptr) -#endif + arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), + spirvType(nullptr) { sampler.clear(); qualifier.clear(); @@ -1695,10 +1562,8 @@ class TType { explicit TType(const TPublicType& p) : basicType(p.basicType), vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(-1), - arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters) -#ifndef GLSLANG_WEB - , spirvType(p.spirvType) -#endif + arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters), + spirvType(p.spirvType) { if (basicType == EbtSampler) sampler = p.sampler; @@ -1746,10 +1611,7 @@ class TType { TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) : basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), - sampler(sampler), typeParameters(nullptr) -#ifndef GLSLANG_WEB - , spirvType(nullptr) -#endif + sampler(sampler), typeParameters(nullptr), spirvType(nullptr) { qualifier.clear(); qualifier.storage = q; @@ -1801,10 +1663,8 @@ class TType { // for making structures, ... TType(TTypeList* userDef, const TString& n) : basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), - arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr) -#ifndef GLSLANG_WEB - , spirvType(nullptr) -#endif + arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), + spirvType(nullptr) { sampler.clear(); qualifier.clear(); @@ -1813,10 +1673,8 @@ class TType { // For interface blocks TType(TTypeList* userDef, const TString& n, const TQualifier& q) : basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), - qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr) -#ifndef GLSLANG_WEB - , spirvType(nullptr) -#endif + qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), + spirvType(nullptr) { sampler.clear(); typeName = NewPoolTString(n.c_str()); @@ -1824,10 +1682,8 @@ class TType { // for block reference (first parameter must be EbtReference) explicit TType(TBasicType t, const TType &p, const TString& n) : basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), - arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr) -#ifndef GLSLANG_WEB - , spirvType(nullptr) -#endif + arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), + spirvType(nullptr) { assert(t == EbtReference); typeName = NewPoolTString(n.c_str()); @@ -1859,9 +1715,7 @@ class TType { referentType = copyOf.referentType; } typeParameters = copyOf.typeParameters; -#ifndef GLSLANG_WEB spirvType = copyOf.spirvType; -#endif coopmatNV = copyOf.isCoopMatNV(); coopmatKHR = copyOf.isCoopMatKHR(); coopmatKHRuse = copyOf.coopmatKHRuse; @@ -1940,11 +1794,7 @@ class TType { virtual int getOuterArraySize() const { return arraySizes->getOuterSize(); } virtual TIntermTyped* getOuterArrayNode() const { return arraySizes->getOuterNode(); } virtual int getCumulativeArraySize() const { return arraySizes->getCumulativeSize(); } -#ifdef GLSLANG_WEB - bool isArrayOfArrays() const { return false; } -#else bool isArrayOfArrays() const { return arraySizes != nullptr && arraySizes->getNumDims() > 1; } -#endif virtual int getImplicitArraySize() const { return arraySizes->getImplicitSize(); } virtual const TArraySizes* getArraySizes() const { return arraySizes; } virtual TArraySizes* getArraySizes() { return arraySizes; } @@ -1986,11 +1836,8 @@ class TType { return false; } virtual bool isOpaque() const { return basicType == EbtSampler -#ifndef GLSLANG_WEB - || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery - || basicType == EbtHitObjectNV -#endif - ; } + || basicType == EbtAtomicUint || basicType == EbtAccStruct || basicType == EbtRayQuery + || basicType == EbtHitObjectNV; } virtual bool isBuiltIn() const { return getQualifier().builtIn != EbvNone; } virtual bool isAttachmentEXT() const { return basicType == EbtSampler && getSampler().isAttachmentEXT(); } @@ -2002,21 +1849,12 @@ class TType { // Check the block-name convention of creating a block without populating it's members: virtual bool isUnusableName() const { return isStruct() && structure == nullptr; } virtual bool isParameterized() const { return typeParameters != nullptr; } -#ifdef GLSLANG_WEB - bool isAtomic() const { return false; } - bool isCoopMat() const { return false; } - bool isCoopMatNV() const { return false; } - bool isCoopMatKHR() const { return false; } - bool isReference() const { return false; } - bool isSpirvType() const { return false; } -#else bool isAtomic() const { return basicType == EbtAtomicUint; } bool isCoopMat() const { return coopmatNV || coopmatKHR; } bool isCoopMatNV() const { return coopmatNV; } bool isCoopMatKHR() const { return coopmatKHR; } bool isReference() const { return getBasicType() == EbtReference; } bool isSpirvType() const { return getBasicType() == EbtSpirvType; } -#endif int getCoopMatKHRuse() const { return coopmatKHRuse; } // return true if this type contains any subtype which satisfies the given predicate. @@ -2103,15 +1941,6 @@ class TType { return contains([](const TType* t) { return t->isArray() && t->arraySizes->isOuterSpecialization(); } ); } -#ifdef GLSLANG_WEB - bool containsDouble() const { return false; } - bool contains16BitFloat() const { return false; } - bool contains64BitInt() const { return false; } - bool contains16BitInt() const { return false; } - bool contains8BitInt() const { return false; } - bool containsCoopMat() const { return false; } - bool containsReference() const { return false; } -#else bool containsDouble() const { return containsBasicType(EbtDouble); @@ -2140,7 +1969,6 @@ class TType { { return containsBasicType(EbtReference); } -#endif // Array editing methods. Array descriptors can be shared across // type instances. This allows all uses of the same array @@ -2235,7 +2063,6 @@ class TType { case EbtInt: return "int"; case EbtUint: return "uint"; case EbtSampler: return "sampler/image"; -#ifndef GLSLANG_WEB case EbtVoid: return "void"; case EbtDouble: return "double"; case EbtFloat16: return "float16_t"; @@ -2255,18 +2082,10 @@ class TType { case EbtString: return "string"; case EbtSpirvType: return "spirv_type"; case EbtCoopmat: return "coopmat"; -#endif default: return "unknown type"; } } -#ifdef GLSLANG_WEB - TString getCompleteString() const { return ""; } - const char* getStorageQualifierString() const { return ""; } - const char* getBuiltInVariableString() const { return ""; } - const char* getPrecisionQualifierString() const { return ""; } - TString getBasicTypeString() const { return ""; } -#else TString getCompleteString(bool syntactic = false, bool getQualifiers = true, bool getPrecision = true, bool getType = true, TString name = "", TString structName = "") const { @@ -2640,7 +2459,6 @@ class TType { const char* getStorageQualifierString() const { return GetStorageQualifierString(qualifier.storage); } const char* getBuiltInVariableString() const { return GetBuiltInVariableString(qualifier.builtIn); } const char* getPrecisionQualifierString() const { return GetPrecisionQualifierString(qualifier.precision); } -#endif const TTypeList* getStruct() const { assert(isStruct()); return structure; } void setStruct(TTypeList* s) { assert(isStruct()); structure = s; } @@ -2834,14 +2652,12 @@ class TType { (typeParameters != nullptr && right.typeParameters != nullptr && *typeParameters == *right.typeParameters)); } -#ifndef GLSLANG_WEB // See if two type's SPIR-V type contents match bool sameSpirvType(const TType& right) const { return ((spirvType == nullptr && right.spirvType == nullptr) || (spirvType != nullptr && right.spirvType != nullptr && *spirvType == *right.spirvType)); } -#endif // See if two type's elements match in all ways except basic type // If mismatch in structure members, return member indices in lpidx and rpidx. @@ -2928,11 +2744,7 @@ class TType { // See if two types match in all ways (just the actual type, not qualification) bool operator==(const TType& right) const { -#ifndef GLSLANG_WEB return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right) && sameCoopMatUse(right) && sameSpirvType(right); -#else - return sameElementType(right) && sameArrayness(right) && sameTypeParameters(right); -#endif } bool operator!=(const TType& right) const @@ -2942,18 +2754,14 @@ class TType { unsigned int getBufferReferenceAlignment() const { -#ifndef GLSLANG_WEB if (getBasicType() == glslang::EbtReference) { return getReferentType()->getQualifier().hasBufferReferenceAlign() ? (1u << getReferentType()->getQualifier().layoutBufferReferenceAlign) : 16u; } -#endif return 0; } -#ifndef GLSLANG_WEB const TSpirvType& getSpirvType() const { assert(spirvType); return *spirvType; } -#endif protected: // Require consumer to pick between deep copy and shallow copy. @@ -2967,7 +2775,6 @@ class TType { { shallowCopy(copyOf); -#ifndef GLSLANG_WEB // GL_EXT_spirv_intrinsics if (copyOf.qualifier.spirvDecorate) { qualifier.spirvDecorate = new TSpirvDecorate; @@ -2978,7 +2785,6 @@ class TType { spirvType = new TSpirvType; *spirvType = *copyOf.spirvType; } -#endif if (copyOf.arraySizes) { arraySizes = new TArraySizes; @@ -3043,9 +2849,7 @@ class TType { TString *typeName; // for structure type name TSampler sampler; TTypeParameters *typeParameters;// nullptr unless a parameterized type; can be shared across types -#ifndef GLSLANG_WEB TSpirvType* spirvType; // SPIR-V type defined by spirv_type directive -#endif }; } // end namespace glslang diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 3363f71339..b002ce889d 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -72,9 +72,7 @@ enum TOperator { EOpFunctionCall, EOpFunction, // For function definition EOpParameters, // an aggregate listing the parameters to a function -#ifndef GLSLANG_WEB EOpSpirvInst, -#endif // // Unary operators @@ -1335,12 +1333,7 @@ class TIntermSymbol : public TIntermTyped { // per process threadPoolAllocator, then it causes increased memory usage per compile // it is essential to use "symbol = sym" to assign to symbol TIntermSymbol(long long i, const TString& n, const TType& t) - : TIntermTyped(t), id(i), -#ifndef GLSLANG_WEB - flattenSubset(-1), -#endif - constSubtree(nullptr) - { name = n; } + : TIntermTyped(t), id(i), flattenSubset(-1), constSubtree(nullptr) { name = n; } virtual long long getId() const { return id; } virtual void changeId(long long i) { id = i; } virtual const TString& getName() const { return name; } @@ -1351,12 +1344,10 @@ class TIntermSymbol : public TIntermTyped { const TConstUnionArray& getConstArray() const { return constArray; } void setConstSubtree(TIntermTyped* subtree) { constSubtree = subtree; } TIntermTyped* getConstSubtree() const { return constSubtree; } -#ifndef GLSLANG_WEB void setFlattenSubset(int subset) { flattenSubset = subset; } virtual const TString& getAccessName() const; int getFlattenSubset() const { return flattenSubset; } // -1 means full object -#endif // This is meant for cases where a node has already been constructed, and // later on, it becomes necessary to switch to a different symbol. @@ -1364,9 +1355,7 @@ class TIntermSymbol : public TIntermTyped { protected: long long id; // the unique id of the symbol this node represents -#ifndef GLSLANG_WEB int flattenSubset; // how deeply the flattened object rooted at id has been dereferenced -#endif TString name; // the name of the symbol this node represents TConstUnionArray constArray; // if the symbol is a front-end compile-time constant, this is its value TIntermTyped* constSubtree; @@ -1421,19 +1410,11 @@ class TIntermOperator : public TIntermTyped { bool isConstructor() const; bool isTexture() const { return op > EOpTextureGuardBegin && op < EOpTextureGuardEnd; } bool isSampling() const { return op > EOpSamplingGuardBegin && op < EOpSamplingGuardEnd; } -#ifdef GLSLANG_WEB - bool isImage() const { return false; } - bool isSparseTexture() const { return false; } - bool isImageFootprint() const { return false; } - bool isSparseImage() const { return false; } - bool isSubgroup() const { return false; } -#else bool isImage() const { return op > EOpImageGuardBegin && op < EOpImageGuardEnd; } bool isSparseTexture() const { return op > EOpSparseTextureGuardBegin && op < EOpSparseTextureGuardEnd; } bool isImageFootprint() const { return op > EOpImageFootprintGuardBegin && op < EOpImageFootprintGuardEnd; } bool isSparseImage() const { return op == EOpSparseImageLoad; } bool isSubgroup() const { return op > EOpSubgroupGuardStart && op < EOpSubgroupGuardStop; } -#endif void setOperationPrecision(TPrecisionQualifier p) { operationPrecision = p; } TPrecisionQualifier getOperationPrecision() const { return operationPrecision != EpqNone ? @@ -1539,7 +1520,6 @@ class TIntermOperator : public TIntermTyped { cracked.offset = true; cracked.proj = true; break; -#ifndef GLSLANG_WEB case EOpTextureClamp: case EOpSparseTextureClamp: cracked.lodClamp = true; @@ -1626,7 +1606,6 @@ class TIntermOperator : public TIntermTyped { case EOpColorAttachmentReadEXT: cracked.attachmentEXT = true; break; -#endif default: break; } @@ -1677,15 +1656,11 @@ class TIntermUnary : public TIntermOperator { virtual TIntermUnary* getAsUnaryNode() { return this; } virtual const TIntermUnary* getAsUnaryNode() const { return this; } virtual void updatePrecision(); -#ifndef GLSLANG_WEB void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } -#endif protected: TIntermTyped* operand; -#ifndef GLSLANG_WEB TSpirvInstruction spirvInst; -#endif }; typedef TVector TIntermSequence; @@ -1717,10 +1692,8 @@ class TIntermAggregate : public TIntermOperator { bool getDebug() const { return debug; } void setPragmaTable(const TPragmaTable& pTable); const TPragmaTable& getPragmaTable() const { return *pragmaTable; } -#ifndef GLSLANG_WEB void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } -#endif protected: TIntermAggregate(const TIntermAggregate&); // disallow copy constructor TIntermAggregate& operator=(const TIntermAggregate&); // disallow assignment operator @@ -1731,9 +1704,7 @@ class TIntermAggregate : public TIntermOperator { bool optimize; bool debug; TPragmaTable* pragmaTable; -#ifndef GLSLANG_WEB TSpirvInstruction spirvInst; -#endif }; // diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index f6916cbef6..8acf9e5526 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -177,7 +177,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right newConstArray[i].setUConst(leftUnionArray[i].getUConst() / rightUnionArray[i].getUConst()); break; -#ifndef GLSLANG_WEB case EbtInt8: if (rightUnionArray[i] == (signed char)0) newConstArray[i].setI8Const((signed char)0x7F); @@ -227,7 +226,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right break; default: return nullptr; -#endif } } break; @@ -266,7 +264,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right newConstArray[i].setIConst(0); break; } else goto modulo_default; -#ifndef GLSLANG_WEB case EbtInt64: if (rightUnionArray[i].getI64Const() == -1 && leftUnionArray[i].getI64Const() == LLONG_MIN) { newConstArray[i].setI64Const(0); @@ -277,7 +274,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TIntermTyped* right newConstArray[i].setIConst(0); break; } else goto modulo_default; -#endif default: modulo_default: newConstArray[i] = leftUnionArray[i] % rightUnionArray[i]; @@ -507,14 +503,12 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) : -unionArray[i].getIConst()); break; case EbtUint: newConstArray[i].setUConst(static_cast(-static_cast(unionArray[i].getUConst()))); break; -#ifndef GLSLANG_WEB case EbtInt8: newConstArray[i].setI8Const(-unionArray[i].getI8Const()); break; case EbtUint8: newConstArray[i].setU8Const(static_cast(-static_cast(unionArray[i].getU8Const()))); break; case EbtInt16: newConstArray[i].setI16Const(-unionArray[i].getI16Const()); break; case EbtUint16:newConstArray[i].setU16Const(static_cast(-static_cast(unionArray[i].getU16Const()))); break; case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break; case EbtUint64: newConstArray[i].setU64Const(static_cast(-static_cast(unionArray[i].getU64Const()))); break; -#endif default: return nullptr; } @@ -684,7 +678,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpConvDoubleToInt: newConstArray[i].setIConst(static_cast(unionArray[i].getDConst())); break; -#ifndef GLSLANG_WEB case EOpConvInt8ToBool: newConstArray[i].setBConst(unionArray[i].getI8Const() != 0); break; case EOpConvUint8ToBool: @@ -919,7 +912,6 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpConvUint64ToPtr: case EOpConstructReference: newConstArray[i].setU64Const(unionArray[i].getU64Const()); break; -#endif // TODO: 3.0 Functionality: unary constant folding: the rest of the ops have to be fleshed out @@ -1066,7 +1058,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) case EbtUint: newConstArray[comp].setUConst(std::min(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); break; -#ifndef GLSLANG_WEB case EbtInt8: newConstArray[comp].setI8Const(std::min(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const())); break; @@ -1085,7 +1076,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) case EbtUint64: newConstArray[comp].setU64Const(std::min(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const())); break; -#endif default: assert(false && "Default missing"); } break; @@ -1102,7 +1092,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) case EbtUint: newConstArray[comp].setUConst(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst())); break; -#ifndef GLSLANG_WEB case EbtInt8: newConstArray[comp].setI8Const(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const())); break; @@ -1121,7 +1110,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) case EbtUint64: newConstArray[comp].setU64Const(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const())); break; -#endif default: assert(false && "Default missing"); } break; @@ -1137,7 +1125,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) newConstArray[comp].setUConst(std::min(std::max(childConstUnions[0][arg0comp].getUConst(), childConstUnions[1][arg1comp].getUConst()), childConstUnions[2][arg2comp].getUConst())); break; -#ifndef GLSLANG_WEB case EbtInt8: newConstArray[comp].setI8Const(std::min(std::max(childConstUnions[0][arg0comp].getI8Const(), childConstUnions[1][arg1comp].getI8Const()), childConstUnions[2][arg2comp].getI8Const())); @@ -1166,7 +1153,6 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) newConstArray[comp].setU64Const(std::min(std::max(childConstUnions[0][arg0comp].getU64Const(), childConstUnions[1][arg1comp].getU64Const()), childConstUnions[2][arg2comp].getU64Const())); break; -#endif default: assert(false && "Default missing"); } break; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 373e7be071..95ccc6c877 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -144,10 +144,6 @@ struct Versioning { EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECompatibilityProfile); // Declare pointers to put into the table for versioning. -#ifdef GLSLANG_WEB - const Versioning* Es300Desktop130 = nullptr; - const Versioning* Es310Desktop420 = nullptr; -#else const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, { EDesktopProfile, 0, 130, 0, nullptr }, { EBadProfile } }; @@ -162,7 +158,6 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo { EDesktopProfile, 0, 450, 0, nullptr }, { EBadProfile } }; const Versioning* Es310Desktop450 = &Es310Desktop450Version[0]; -#endif // The main descriptor of what a set of function prototypes can look like, and // a pointer to extra versioning information, when needed. @@ -264,10 +259,8 @@ const BuiltInFunction BaseFunctions[] = { { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop420 }, -#ifndef GLSLANG_WEB { EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 }, { EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 }, -#endif { EOpNull } }; @@ -386,10 +379,8 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) if (arg == function.numArguments - 1 && (function.classes & ClassLO)) decls.append("out "); if (arg == 0) { -#ifndef GLSLANG_WEB if (function.classes & ClassCV) decls.append("coherent volatile "); -#endif if (function.classes & ClassFIO) decls.append("inout "); if (function.classes & ClassFO) @@ -416,11 +407,6 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) // See if the tabled versioning information allows the current version. bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */) { -#if defined(GLSLANG_WEB) - // all entries in table are valid - return true; -#endif - // nullptr means always valid if (function.versioning == nullptr) return true; @@ -501,7 +487,6 @@ TBuiltIns::TBuiltIns() prefixes[EbtFloat] = ""; prefixes[EbtInt] = "i"; prefixes[EbtUint] = "u"; -#if !defined(GLSLANG_WEB) prefixes[EbtFloat16] = "f16"; prefixes[EbtInt8] = "i8"; prefixes[EbtUint8] = "u8"; @@ -509,7 +494,6 @@ TBuiltIns::TBuiltIns() prefixes[EbtUint16] = "u16"; prefixes[EbtInt64] = "i64"; prefixes[EbtUint64] = "u64"; -#endif postfixes[2] = "2"; postfixes[3] = "3"; @@ -519,13 +503,11 @@ TBuiltIns::TBuiltIns() dimMap[Esd2D] = 2; dimMap[Esd3D] = 3; dimMap[EsdCube] = 3; -#ifndef GLSLANG_WEB dimMap[Esd1D] = 1; dimMap[EsdRect] = 2; dimMap[EsdBuffer] = 1; dimMap[EsdSubpass] = 2; // potentially unused for now dimMap[EsdAttachmentEXT] = 2; // potentially unused for now -#endif } TBuiltIns::~TBuiltIns() @@ -543,10 +525,6 @@ TBuiltIns::~TBuiltIns() // void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvVersion) { -#ifdef GLSLANG_WEB - version = 310; - profile = EEsProfile; -#endif addTabledBuiltins(version, profile, spvVersion); //============================================================================ @@ -555,7 +533,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // //============================================================================ -#ifndef GLSLANG_WEB // // Derivatives Functions. // @@ -1500,7 +1477,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void atomicStore(coherent volatile out double, double, int, int, int);" "\n"); } -#endif // !GLSLANG_WEB if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding @@ -1528,7 +1504,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_WEB if ((profile != EEsProfile && version >= 400) || (profile == EEsProfile && version >= 310)) { // GL_OES_gpu_shader5 @@ -1606,7 +1581,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#endif if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 150)) { @@ -1635,7 +1609,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_WEB if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 150)) { commonBuiltins.append( @@ -1655,7 +1628,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "vec4 unpackUnorm4x8(highp uint);" "\n"); } -#endif // // Matrix Functions. @@ -1714,7 +1686,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } } -#ifndef GLSLANG_WEB // // Original-style texture functions existing in all stages. // (Per-stage functions below.) @@ -4257,7 +4228,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void EndPrimitive();" "\n"); } -#endif // !GLSLANG_WEB //============================================================================ // @@ -4294,7 +4264,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void groupMemoryBarrier();" ); } -#ifndef GLSLANG_WEB if ((profile != EEsProfile && version >= 420) || esBarrier) { if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) { commonBuiltins.append("void memoryBarrierAtomicCounter();"); @@ -4842,7 +4811,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void SetMeshOutputsEXT(uint, uint);" "\n"); } -#endif // !GLSLANG_WEB //============================================================================ // @@ -4864,13 +4832,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "highp float diff;" // f - n ); } else { -#ifndef GLSLANG_WEB commonBuiltins.append( "float near;" // n "float far;" // f "float diff;" // f - n ); -#endif } commonBuiltins.append( @@ -4879,7 +4845,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#if !defined(GLSLANG_WEB) if (spvVersion.spv == 0 && IncludeLegacy(version, profile, spvVersion)) { // // Matrix state. p. 31, 32, 37, 39, 40. @@ -4997,7 +4962,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#endif // !GLSLANG_WEB //============================================================================ // @@ -5027,7 +4991,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } -#ifndef GLSLANG_WEB //============================================================================ // // Define the interface to the mesh/task shader. @@ -5310,19 +5273,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in highp int gl_InstanceID;" // needs qualifier fixed later ); if (spvVersion.vulkan > 0) -#endif stageBuiltins[EShLangVertex].append( "in highp int gl_VertexIndex;" "in highp int gl_InstanceIndex;" ); -#ifndef GLSLANG_WEB if (version < 310) -#endif stageBuiltins[EShLangVertex].append( "highp vec4 gl_Position;" // needs qualifier fixed later "highp float gl_PointSize;" // needs qualifier fixed later ); -#ifndef GLSLANG_WEB else stageBuiltins[EShLangVertex].append( "out gl_PerVertex {" @@ -5800,7 +5759,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "mediump vec2 gl_PointCoord;" // needs qualifier fixed later ); } -#endif if (version >= 300) { stageBuiltins[EShLangFragment].append( "highp vec4 gl_FragCoord;" // needs qualifier fixed later @@ -5809,7 +5767,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "highp float gl_FragDepth;" // needs qualifier fixed later ); } -#ifndef GLSLANG_WEB if (version >= 310) { stageBuiltins[EShLangFragment].append( "bool gl_HelperInvocation;" // needs qualifier fixed later @@ -5854,15 +5811,12 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "flat in highp int gl_ShadingRateEXT;" // GL_EXT_fragment_shading_rate ); } -#endif stageBuiltins[EShLangFragment].append("\n"); if (version >= 130) add2ndGenerationSamplingImaging(version, profile, spvVersion); -#ifndef GLSLANG_WEB - if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { stageBuiltins[EShLangFragment].append( @@ -6254,7 +6208,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } } } -#endif // !GLSLANG_WEB // printf("%s\n", commonBuiltins.c_str()); // printf("%s\n", stageBuiltins[EShLangFragment].c_str()); @@ -6273,26 +6226,14 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c // enumerate all the types const TBasicType bTypes[] = { EbtFloat, EbtInt, EbtUint, -#if !defined(GLSLANG_WEB) - EbtFloat16 -#endif + EbtFloat16 }; -#ifdef GLSLANG_WEB - bool skipBuffer = true; - bool skipCubeArrayed = true; - const int image = 0; -#else bool skipBuffer = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 140); bool skipCubeArrayed = (profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 130); for (int image = 0; image <= 1; ++image) // loop over "bool" image vs sampler -#endif { for (int shadow = 0; shadow <= 1; ++shadow) { // loop over "bool" shadow or not -#ifdef GLSLANG_WEB - const int ms = 0; -#else for (int ms = 0; ms <= 1; ++ms) // loop over "bool" multisample or not -#endif { if ((ms || image) && shadow) continue; @@ -6304,9 +6245,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c continue; for (int arrayed = 0; arrayed <= 1; ++arrayed) { // loop over "bool" arrayed or not -#ifdef GLSLANG_WEB - for (int dim = Esd2D; dim <= EsdCube; ++dim) { // 2D, 3D, and Cube -#else for (int dim = Esd1D; dim < EsdNumDims; ++dim) { // 1D, ..., buffer, subpass if (dim == EsdAttachmentEXT) continue; @@ -6330,7 +6268,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c continue; if (ms && arrayed && profile == EEsProfile && version < 310) continue; -#endif if (dim == Esd3D && shadow) continue; if (dim == EsdCube && arrayed && skipCubeArrayed) @@ -6340,25 +6277,21 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c // Loop over the bTypes for (size_t bType = 0; bType < sizeof(bTypes)/sizeof(TBasicType); ++bType) { -#ifndef GLSLANG_WEB if (bTypes[bType] == EbtFloat16 && (profile == EEsProfile || version < 450)) continue; if (dim == EsdRect && version < 140 && bType > 0) continue; -#endif if (shadow && (bTypes[bType] == EbtInt || bTypes[bType] == EbtUint)) continue; // // Now, make all the function prototypes for the type we just built... // TSampler sampler; -#ifndef GLSLANG_WEB if (dim == EsdSubpass) { sampler.setSubpass(bTypes[bType], ms ? true : false); } else if (dim == EsdAttachmentEXT) { sampler.setAttachmentEXT(bTypes[bType]); } else -#endif if (image) { sampler.setImage(bTypes[bType], (TSamplerDim)dim, arrayed ? true : false, shadow ? true : false, @@ -6371,12 +6304,10 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c TString typeName = sampler.getString(); -#ifndef GLSLANG_WEB if (dim == EsdSubpass) { addSubpassSampling(sampler, typeName, version, profile); continue; } -#endif addQueryFunctions(sampler, typeName, version, profile); @@ -6384,7 +6315,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c addImageFunctions(sampler, typeName, version, profile); else { addSamplingFunctions(sampler, typeName, version, profile); -#ifndef GLSLANG_WEB addGatherFunctions(sampler, typeName, version, profile); if (spvVersion.vulkan > 0 && sampler.isCombined() && !sampler.shadow) { // Base Vulkan allows texelFetch() for @@ -6400,7 +6330,6 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c addSamplingFunctions(sampler, textureTypeName, version, profile); addQueryFunctions(sampler, textureTypeName, version, profile); } -#endif } } } @@ -6431,16 +6360,6 @@ void TBuiltIns::addQueryFunctions(TSampler sampler, const TString& typeName, int int sizeDims = dimMap[sampler.dim] + (sampler.arrayed ? 1 : 0) - (sampler.dim == EsdCube ? 1 : 0); -#ifdef GLSLANG_WEB - commonBuiltins.append("highp "); - commonBuiltins.append("ivec"); - commonBuiltins.append(postfixes[sizeDims]); - commonBuiltins.append(" textureSize("); - commonBuiltins.append(typeName); - commonBuiltins.append(",int);\n"); - return; -#endif - if (sampler.isImage() && ((profile == EEsProfile && version < 310) || (profile != EEsProfile && version < 420))) return; @@ -6760,11 +6679,6 @@ void TBuiltIns::addSubpassSampling(TSampler sampler, const TString& typeName, in // void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { -#ifdef GLSLANG_WEB - profile = EEsProfile; - version = 310; -#endif - // // texturing // @@ -6839,11 +6753,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, continue; // loop over 16-bit floating-point texel addressing -#if defined(GLSLANG_WEB) - const int f16TexAddr = 0; -#else for (int f16TexAddr = 0; f16TexAddr <= 1; ++f16TexAddr) -#endif { if (f16TexAddr && sampler.type != EbtFloat16) continue; @@ -6852,11 +6762,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, totalDims--; } // loop over "bool" lod clamp -#if defined(GLSLANG_WEB) - const int lodClamp = 0; -#else for (int lodClamp = 0; lodClamp <= 1 ;++lodClamp) -#endif { if (lodClamp && (profile == EEsProfile || version < 450)) continue; @@ -6864,11 +6770,7 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, continue; // loop over "bool" sparse or not -#if defined(GLSLANG_WEB) - const int sparse = 0; -#else for (int sparse = 0; sparse <= 1; ++sparse) -#endif { if (sparse && (profile == EEsProfile || version < 450)) continue; @@ -7045,11 +6947,6 @@ void TBuiltIns::addSamplingFunctions(TSampler sampler, const TString& typeName, // void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, int version, EProfile profile) { -#ifdef GLSLANG_WEB - profile = EEsProfile; - version = 310; -#endif - switch (sampler.dim) { case Esd2D: case EsdRect: @@ -7288,11 +7185,6 @@ void TBuiltIns::addGatherFunctions(TSampler sampler, const TString& typeName, in // void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language) { -#ifdef GLSLANG_WEB - version = 310; - profile = EEsProfile; -#endif - // // Initialize the context-dependent (resource-dependent) built-in strings for parsing. // @@ -7350,7 +7242,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append(builtInConstant); } -#ifndef GLSLANG_WEB if (version >= 310) { // geometry @@ -7673,7 +7564,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf snprintf(builtInConstant, maxSize, "const int gl_MaxTransformFeedbackInterleavedComponents = %d;", resources.maxTransformFeedbackInterleavedComponents); s.append(builtInConstant); } -#endif } // compute @@ -7695,7 +7585,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } -#ifndef GLSLANG_WEB // images (some in compute below) if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 130)) { @@ -7797,7 +7686,6 @@ void TBuiltIns::initialize(const TBuiltInResource &resources, int version, EProf s.append("\n"); } -#endif s.append("\n"); } @@ -7900,11 +7788,6 @@ static void BuiltInVariable(const char* blockName, const char* name, TBuiltInVar // void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable) { -#ifdef GLSLANG_WEB - version = 310; - profile = EEsProfile; -#endif - // // Tag built-in variables and functions with additional qualifier and extension information // that cannot be declared with the text strings. @@ -7924,7 +7807,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_InstanceIndex", EbvInstanceIndex, symbolTable); } -#ifndef GLSLANG_WEB if (spvVersion.vulkan == 0) { SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable); SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable); @@ -8098,7 +7980,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion case EShLangTessEvaluation: case EShLangGeometry: -#endif // !GLSLANG_WEB SpecialQualifier("gl_Position", EvqPosition, EbvPosition, symbolTable); SpecialQualifier("gl_PointSize", EvqPointSize, EbvPointSize, symbolTable); @@ -8108,7 +7989,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_out", "gl_Position", EbvPosition, symbolTable); BuiltInVariable("gl_out", "gl_PointSize", EbvPointSize, symbolTable); -#ifndef GLSLANG_WEB SpecialQualifier("gl_ClipVertex", EvqClipVertex, EbvClipVertex, symbolTable); BuiltInVariable("gl_in", "gl_ClipDistance", EbvClipDistance, symbolTable); @@ -8288,8 +8168,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } } - -#endif // !GLSLANG_WEB break; case EShLangFragment: @@ -8306,7 +8184,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion } } SpecialQualifier("gl_FragDepth", EvqFragDepth, EbvFragDepth, symbolTable); -#ifndef GLSLANG_WEB SpecialQualifier("gl_FragDepthEXT", EvqFragDepth, EbvFragDepth, symbolTable); SpecialQualifier("gl_FragStencilRefARB", EvqFragStencil, EbvFragStencilRef, symbolTable); SpecialQualifier("gl_HelperInvocation", EvqVaryingIn, EbvHelperInvocation, symbolTable); @@ -8848,7 +8725,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("stencilAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); symbolTable.setFunctionExtensions("depthAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); symbolTable.setFunctionExtensions("colorAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); -#endif // !GLSLANG_WEB break; case EShLangCompute: @@ -8861,7 +8737,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); -#ifndef GLSLANG_WEB if ((profile != EEsProfile && version >= 140) || (profile == EEsProfile && version >= 310)) { symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); @@ -9010,10 +8885,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } -#endif // !GLSLANG_WEB break; -#if !defined(GLSLANG_WEB) case EShLangRayGen: case EShLangIntersect: case EShLangAnyHit: @@ -9582,7 +9455,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } break; -#endif default: assert(false && "Language not supported"); @@ -9598,7 +9470,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion relateTabledBuiltins(version, profile, spvVersion, language, symbolTable); -#ifndef GLSLANG_WEB symbolTable.relateToOperator("doubleBitsToInt64", EOpDoubleBitsToInt64); symbolTable.relateToOperator("doubleBitsToUint64", EOpDoubleBitsToUint64); symbolTable.relateToOperator("int64BitsToDouble", EOpInt64BitsToDouble); @@ -10195,7 +10066,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion default: assert(false && "Language not supported"); } -#endif // !GLSLANG_WEB } // @@ -10209,7 +10079,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion // void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion& spvVersion, EShLanguage language, TSymbolTable& symbolTable, const TBuiltInResource &resources) { -#ifndef GLSLANG_WEB if (profile != EEsProfile && version >= 430 && version < 440) { symbolTable.setVariableExtensions("gl_MaxTransformFeedbackBuffers", 1, &E_GL_ARB_enhanced_layouts); symbolTable.setVariableExtensions("gl_MaxTransformFeedbackInterleavedComponents", 1, &E_GL_ARB_enhanced_layouts); @@ -10281,7 +10150,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion default: break; } -#endif } } // end namespace glslang diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 15dea37f8f..a8e3b38bfd 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -388,7 +388,6 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, case EOpConstructFloat: newType = EbtFloat; break; case EOpConstructInt: newType = EbtInt; break; case EOpConstructUint: newType = EbtUint; break; -#ifndef GLSLANG_WEB case EOpConstructInt8: newType = EbtInt8; break; case EOpConstructUint8: newType = EbtUint8; break; case EOpConstructInt16: newType = EbtInt16; break; @@ -397,7 +396,6 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, case EOpConstructUint64: newType = EbtUint64; break; case EOpConstructDouble: newType = EbtDouble; break; case EOpConstructFloat16: newType = EbtFloat16; break; -#endif default: break; // some compilers want this } @@ -569,7 +567,6 @@ bool TIntermediate::isConversionAllowed(TOperator op, TIntermTyped* node) const bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& newOp) const { switch (dst) { -#ifndef GLSLANG_WEB case EbtDouble: switch (src) { case EbtUint: newOp = EOpConvUintToDouble; break; @@ -587,13 +584,11 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne return false; } break; -#endif case EbtFloat: switch (src) { case EbtInt: newOp = EOpConvIntToFloat; break; case EbtUint: newOp = EOpConvUintToFloat; break; case EbtBool: newOp = EOpConvBoolToFloat; break; -#ifndef GLSLANG_WEB case EbtDouble: newOp = EOpConvDoubleToFloat; break; case EbtInt8: newOp = EOpConvInt8ToFloat; break; case EbtUint8: newOp = EOpConvUint8ToFloat; break; @@ -602,12 +597,10 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne case EbtFloat16: newOp = EOpConvFloat16ToFloat; break; case EbtInt64: newOp = EOpConvInt64ToFloat; break; case EbtUint64: newOp = EOpConvUint64ToFloat; break; -#endif default: return false; } break; -#ifndef GLSLANG_WEB case EbtFloat16: switch (src) { case EbtInt8: newOp = EOpConvInt8ToFloat16; break; @@ -625,13 +618,11 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne return false; } break; -#endif case EbtBool: switch (src) { case EbtInt: newOp = EOpConvIntToBool; break; case EbtUint: newOp = EOpConvUintToBool; break; case EbtFloat: newOp = EOpConvFloatToBool; break; -#ifndef GLSLANG_WEB case EbtDouble: newOp = EOpConvDoubleToBool; break; case EbtInt8: newOp = EOpConvInt8ToBool; break; case EbtUint8: newOp = EOpConvUint8ToBool; break; @@ -640,12 +631,10 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne case EbtFloat16: newOp = EOpConvFloat16ToBool; break; case EbtInt64: newOp = EOpConvInt64ToBool; break; case EbtUint64: newOp = EOpConvUint64ToBool; break; -#endif default: return false; } break; -#ifndef GLSLANG_WEB case EbtInt8: switch (src) { case EbtUint8: newOp = EOpConvUint8ToInt8; break; @@ -715,14 +704,12 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne return false; } break; -#endif case EbtInt: switch (src) { case EbtUint: newOp = EOpConvUintToInt; break; case EbtBool: newOp = EOpConvBoolToInt; break; case EbtFloat: newOp = EOpConvFloatToInt; break; -#ifndef GLSLANG_WEB case EbtInt8: newOp = EOpConvInt8ToInt; break; case EbtUint8: newOp = EOpConvUint8ToInt; break; case EbtInt16: newOp = EOpConvInt16ToInt; break; @@ -731,7 +718,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne case EbtFloat16: newOp = EOpConvFloat16ToInt; break; case EbtInt64: newOp = EOpConvInt64ToInt; break; case EbtUint64: newOp = EOpConvUint64ToInt; break; -#endif default: return false; } @@ -741,7 +727,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne case EbtInt: newOp = EOpConvIntToUint; break; case EbtBool: newOp = EOpConvBoolToUint; break; case EbtFloat: newOp = EOpConvFloatToUint; break; -#ifndef GLSLANG_WEB case EbtInt8: newOp = EOpConvInt8ToUint; break; case EbtUint8: newOp = EOpConvUint8ToUint; break; case EbtInt16: newOp = EOpConvInt16ToUint; break; @@ -750,7 +735,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne case EbtFloat16: newOp = EOpConvFloat16ToUint; break; case EbtInt64: newOp = EOpConvInt64ToUint; break; case EbtUint64: newOp = EOpConvUint64ToUint; break; -#endif // For bindless texture type conversion, add a dummy convert op, just // to generate a new TIntermTyped // uvec2(any sampler type) @@ -760,7 +744,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne return false; } break; -#ifndef GLSLANG_WEB case EbtInt64: switch (src) { case EbtInt8: newOp = EOpConvInt8ToInt64; break; @@ -795,7 +778,6 @@ bool TIntermediate::buildConvertOp(TBasicType dst, TBasicType src, TOperator& ne return false; } break; -#endif default: return false; } @@ -811,7 +793,6 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped // Add a new newNode for the conversion. // -#ifndef GLSLANG_WEB bool convertToIntTypes = (convertTo == EbtInt8 || convertTo == EbtUint8 || convertTo == EbtInt16 || convertTo == EbtUint16 || convertTo == EbtInt || convertTo == EbtUint || @@ -848,7 +829,6 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped return nullptr; } } -#endif TIntermUnary* newNode = nullptr; TOperator newOp = EOpNull; @@ -860,13 +840,11 @@ TIntermTyped* TIntermediate::createConversion(TBasicType convertTo, TIntermTyped newNode = addUnaryNode(newOp, node, node->getLoc(), newType); if (node->getAsConstantUnion()) { -#ifndef GLSLANG_WEB // 8/16-bit storage extensions don't support 8/16-bit constants, so don't fold conversions // to those types if ((getArithemeticInt8Enabled() || !(convertTo == EbtInt8 || convertTo == EbtUint8)) && (getArithemeticInt16Enabled() || !(convertTo == EbtInt16 || convertTo == EbtUint16)) && (getArithemeticFloat16Enabled() || !(convertTo == EbtFloat16))) -#endif { TIntermTyped* folded = node->getAsConstantUnion()->fold(newOp, newType); if (folded) @@ -1066,7 +1044,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpConstructFloat: case EOpConstructInt: case EOpConstructUint: -#ifndef GLSLANG_WEB case EOpConstructDouble: case EOpConstructFloat16: case EOpConstructInt8: @@ -1077,8 +1054,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt case EOpConstructUint64: break; -#endif - // // Implicit conversions // @@ -1166,7 +1141,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt } bool canPromoteConstant = true; -#ifndef GLSLANG_WEB // GL_EXT_shader_16bit_storage can't do OpConstantComposite with // 16-bit types, so disable promotion for those types. // Many issues with this, from JohnK: @@ -1194,7 +1168,6 @@ TIntermTyped* TIntermediate::addConversion(TOperator op, const TType& type, TInt default: break; } -#endif if (canPromoteConstant && node->getAsConstantUnion()) return promoteConstantUnion(type.getBasicType(), node->getAsConstantUnion()); @@ -1491,10 +1464,6 @@ bool TIntermediate::isFPPromotion(TBasicType from, TBasicType to) const bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const { -#ifdef GLSLANG_WEB - return false; -#endif - switch (from) { case EbtInt: switch(to) { @@ -1575,10 +1544,6 @@ bool TIntermediate::isIntegralConversion(TBasicType from, TBasicType to) const bool TIntermediate::isFPConversion(TBasicType from, TBasicType to) const { -#ifdef GLSLANG_WEB - return false; -#endif - if (to == EbtFloat && from == EbtFloat16) { return true; } else { @@ -1599,7 +1564,6 @@ bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const break; } break; -#ifndef GLSLANG_WEB case EbtInt8: case EbtUint8: case EbtInt16: @@ -1619,7 +1583,6 @@ bool TIntermediate::isFPIntegralConversion(TBasicType from, TBasicType to) const return true; } break; -#endif default: break; } @@ -1821,10 +1784,6 @@ bool TIntermediate::canImplicitlyPromote(TBasicType from, TBasicType to, TOperat static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBasicType uintType) { -#ifdef GLSLANG_WEB - return false; -#endif - switch(sintType) { case EbtInt8: switch(uintType) { @@ -1885,11 +1844,6 @@ static bool canSignedIntTypeRepresentAllUnsignedValues(TBasicType sintType, TBas static TBasicType getCorrespondingUnsignedType(TBasicType type) { -#ifdef GLSLANG_WEB - assert(type == EbtInt); - return EbtUint; -#endif - switch(type) { case EbtInt8: return EbtUint8; @@ -2182,7 +2136,6 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const } } break; -#ifndef GLSLANG_WEB case EbtDouble: if (type.getMatrixCols()) { switch (type.getMatrixCols()) { @@ -2321,7 +2274,6 @@ TOperator TIntermediate::mapTypeToConstructorOp(const TType& type) const case EbtAccStruct: op = EOpConstructAccStruct; break; -#endif default: break; } @@ -2802,7 +2754,6 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/) if (aggRoot && aggRoot->getOp() == EOpNull) aggRoot->setOperator(EOpSequence); -#ifndef GLSLANG_WEB // Propagate 'noContraction' label in backward from 'precise' variables. glslang::PropagateNoContraction(*this); @@ -2816,7 +2767,6 @@ bool TIntermediate::postProcess(TIntermNode* root, EShLanguage /*language*/) assert(0); break; } -#endif return true; } @@ -3910,16 +3860,6 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC #define PROMOTE(Set, CType, Get) leftUnionArray[i].Set(static_cast(rightUnionArray[i].Get())) #define PROMOTE_TO_BOOL(Get) leftUnionArray[i].setBConst(rightUnionArray[i].Get() != 0) -#ifdef GLSLANG_WEB -#define TO_ALL(Get) \ - switch (promoteTo) { \ - case EbtFloat: PROMOTE(setDConst, double, Get); break; \ - case EbtInt: PROMOTE(setIConst, int, Get); break; \ - case EbtUint: PROMOTE(setUConst, unsigned int, Get); break; \ - case EbtBool: PROMOTE_TO_BOOL(Get); break; \ - default: return node; \ - } -#else #define TO_ALL(Get) \ switch (promoteTo) { \ case EbtFloat16: PROMOTE(setDConst, double, Get); break; \ @@ -3936,14 +3876,12 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC case EbtBool: PROMOTE_TO_BOOL(Get); break; \ default: return node; \ } -#endif switch (node->getType().getBasicType()) { case EbtFloat: TO_ALL(getDConst); break; case EbtInt: TO_ALL(getIConst); break; case EbtUint: TO_ALL(getUConst); break; case EbtBool: TO_ALL(getBConst); break; -#ifndef GLSLANG_WEB case EbtFloat16: TO_ALL(getDConst); break; case EbtDouble: TO_ALL(getDConst); break; case EbtInt8: TO_ALL(getI8Const); break; @@ -3952,7 +3890,6 @@ TIntermTyped* TIntermediate::promoteConstantUnion(TBasicType promoteTo, TIntermC case EbtUint8: TO_ALL(getU8Const); break; case EbtUint16: TO_ALL(getU16Const); break; case EbtUint64: TO_ALL(getU64Const); break; -#endif default: return node; } } diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index c34c04f6c7..d73f403b80 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -67,8 +67,6 @@ void TParseContextBase::outputMessage(const TSourceLoc& loc, const char* szReaso } } -#if !defined(GLSLANG_WEB) || defined(GLSLANG_WEB_DEVEL) - void C_DECL TParseContextBase::error(const TSourceLoc& loc, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) { @@ -118,8 +116,6 @@ void C_DECL TParseContextBase::ppWarn(const TSourceLoc& loc, const char* szReaso va_end(args); } -#endif - // // Both test and if necessary, spit out an error, to see if the node is really // an l-value that can be operated on this way. @@ -140,7 +136,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EvqConst: message = "can't modify a const"; break; case EvqConstReadOnly: message = "can't modify a const"; break; case EvqUniform: message = "can't modify a uniform"; break; -#ifndef GLSLANG_WEB case EvqBuffer: if (node->getQualifier().isReadOnly()) message = "can't modify a readonly buffer"; @@ -151,7 +146,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, if (language != EShLangIntersect) message = "cannot modify hitAttributeNV in this stage"; break; -#endif default: // @@ -165,7 +159,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EbtVoid: message = "can't modify void"; break; -#ifndef GLSLANG_WEB case EbtAtomicUint: message = "can't modify an atomic_uint"; break; @@ -178,7 +171,6 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, case EbtHitObjectNV: message = "can't modify hitObjectNV"; break; -#endif default: break; } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f36d143924..a2c908304d 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -57,11 +57,8 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b infoSink, forwardCompatible, messages, entryPoint), inMain(false), blockName(nullptr), - limits(resources.limits) -#ifndef GLSLANG_WEB - , + limits(resources.limits), atomicUintOffsets(nullptr), anyIndexLimits(false) -#endif { // decide whether precision qualifiers should be ignored or respected if (isEsProfile() || spvVersion.vulkan > 0) { @@ -87,7 +84,6 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b globalSharedDefaults.layoutMatrix = ElmColumnMajor; globalSharedDefaults.layoutPacking = ElpStd430; -#ifndef GLSLANG_WEB // "Shaders in the transform // feedback capturing mode have an initial global default of // layout(xfb_buffer = 0) out;" @@ -99,7 +95,6 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b if (language == EShLangGeometry) globalOutputDefaults.layoutStream = 0; -#endif if (entryPoint != nullptr && entryPoint->size() > 0 && *entryPoint != "main") infoSink.info.message(EPrefixError, "Source entry point must be \"main\""); @@ -107,9 +102,7 @@ TParseContext::TParseContext(TSymbolTable& symbolTable, TIntermediate& interm, b TParseContext::~TParseContext() { -#ifndef GLSLANG_WEB delete [] atomicUintOffsets; -#endif } // Set up all default precisions as needed by the current environment. @@ -173,7 +166,6 @@ void TParseContext::setLimits(const TBuiltInResource& r) resources = r; intermediate.setLimits(r); -#ifndef GLSLANG_WEB anyIndexLimits = ! limits.generalAttributeMatrixVectorIndexing || ! limits.generalConstantMatrixVectorIndexing || ! limits.generalSamplerIndexing || @@ -188,7 +180,6 @@ void TParseContext::setLimits(const TBuiltInResource& r) atomicUintOffsets = new int[resources.maxAtomicCounterBindings]; for (int b = 0; b < resources.maxAtomicCounterBindings; ++b) atomicUintOffsets[b] = 0; -#endif } // @@ -335,7 +326,6 @@ void TParseContext::setInvariant(const TSourceLoc& loc, const char* builtin) { void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& tokens) { -#ifndef GLSLANG_WEB if (pragmaCallback) pragmaCallback(loc.line, tokens); @@ -437,7 +427,6 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& setInvariant(loc, "gl_FragColor"); setInvariant(loc, "gl_FragData"); } -#endif } // @@ -451,7 +440,6 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb if (symbol && symbol->getNumExtensions()) requireExtensions(loc, symbol->getNumExtensions(), symbol->getExtensions(), symbol->getName().c_str()); -#ifndef GLSLANG_WEB if (symbol && symbol->isReadOnly()) { // All shared things containing an unsized array must be copied up // on first use, so that all future references will share its array structure, @@ -471,7 +459,6 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb makeEditable(symbol); } } -#endif const TVariable* variable; const TAnonMember* anon = symbol ? symbol->getAsAnonMember() : nullptr; @@ -576,7 +563,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn // at least one of base and index is not a front-end constant variable... TIntermTyped* result = nullptr; -#ifndef GLSLANG_WEB if (base->isReference() && ! base->isArray()) { requireExtensions(loc, 1, &E_GL_EXT_buffer_reference2, "buffer reference indexing"); if (base->getType().getReferentType()->containsUnsizedArray()) { @@ -595,13 +581,11 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn } if (base->getAsSymbolNode() && isIoResizeArray(base->getType())) handleIoResizeArrayAccess(loc, base); -#endif if (index->getQualifier().isFrontEndConstant()) checkIndex(loc, base->getType(), indexValue); if (index->getQualifier().isFrontEndConstant()) { -#ifndef GLSLANG_WEB if (base->getType().isUnsizedArray()) { base->getWritableType().updateImplicitArraySize(indexValue + 1); base->getWritableType().setImplicitlySized(true); @@ -624,11 +608,9 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn } } } else -#endif checkIndex(loc, base->getType(), indexValue); result = intermediate.addIndex(EOpIndexDirect, base, index, loc); } else { -#ifndef GLSLANG_WEB if (base->getType().isUnsizedArray()) { // we have a variable index into an unsized array, which is okay, // depending on the situation @@ -640,7 +622,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn } base->getWritableType().setArrayVariablyIndexed(); } -#endif if (base->getBasicType() == EbtBlock) { if (base->getQualifier().storage == EvqBuffer) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing buffer block array"); @@ -676,7 +657,6 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn } result->setType(newType); -#ifndef GLSLANG_WEB inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); // Propagate nonuniform @@ -685,13 +665,10 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn if (anyIndexLimits) handleIndexLimits(loc, base, index); -#endif return result; } -#ifndef GLSLANG_WEB - // for ES 2.0 (version 100) limitations for almost all index operations except vertex-shader uniforms void TParseContext::handleIndexLimits(const TSourceLoc& /*loc*/, TIntermTyped* base, TIntermTyped* index) { @@ -885,8 +862,6 @@ void TParseContext::checkIoArrayConsistency(const TSourceLoc& loc, int requiredS } } -#endif // GLSLANG_WEB - // Handle seeing a binary node with a math operation. // Returns nullptr if not semantically allowed. TIntermTyped* TParseContext::handleBinaryMath(const TSourceLoc& loc, const char* str, TOperator op, TIntermTyped* left, TIntermTyped* right) @@ -1165,7 +1140,6 @@ TFunction* TParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunct TSymbol* symbol = symbolTable.find(function.getMangledName(), &builtIn); if (symbol && symbol->getAsFunction() && builtIn) requireProfile(loc, ~EEsProfile, "redefinition of built-in function"); -#ifndef GLSLANG_WEB // Check the validity of using spirv_literal qualifier for (int i = 0; i < function.getParamCount(); ++i) { if (function[i].type->getQualifier().isSpirvLiteral() && function.getBuiltInOp() != EOpSpirvInst) @@ -1177,19 +1151,16 @@ TFunction* TParseContext::handleFunctionDeclarator(const TSourceLoc& loc, TFunct // respect this redeclared one. if (symbol && builtIn && function.getBuiltInOp() == EOpSpirvInst) symbol = nullptr; -#endif const TFunction* prevDec = symbol ? symbol->getAsFunction() : nullptr; if (prevDec) { if (prevDec->isPrototyped() && prototype) profileRequires(loc, EEsProfile, 300, nullptr, "multiple prototypes for same function"); if (prevDec->getType() != function.getType()) error(loc, "overloaded functions must have the same return type", function.getName().c_str(), ""); -#ifndef GLSLANG_WEB if (prevDec->getSpirvInstruction() != function.getSpirvInstruction()) { error(loc, "overloaded functions must have the same qualifiers", function.getName().c_str(), "spirv_instruction"); } -#endif for (int i = 0; i < prevDec->getParamCount(); ++i) { if ((*prevDec)[i].type->getQualifier().storage != function[i].type->getQualifier().storage) error(loc, "overloaded functions must have the same parameter storage qualifiers for argument", function[i].type->getStorageQualifierString(), "%d", i+1); @@ -1391,7 +1362,6 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction if (lValueErrorCheck(arguments->getLoc(), "assign", arg->getAsTyped())) error(arguments->getLoc(), "Non-L-value cannot be passed for 'out' or 'inout' parameters.", "out", ""); } -#ifndef GLSLANG_WEB if (formalQualifier.isSpirvLiteral()) { if (!arg->getAsTyped()->getQualifier().isFrontEndConstant()) { error(arguments->getLoc(), @@ -1399,13 +1369,11 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction "spirv_literal", ""); } } -#endif const TType& argType = arg->getAsTyped()->getType(); const TQualifier& argQualifier = argType.getQualifier(); bool containsBindlessSampler = intermediate.getBindlessMode() && argType.containsSampler(); if (argQualifier.isMemory() && !containsBindlessSampler && (argType.containsOpaque() || argType.isReference())) { const char* message = "argument cannot drop memory qualifier when passed to formal parameter"; -#ifndef GLSLANG_WEB if (argQualifier.volatil && ! formalQualifier.volatil) error(arguments->getLoc(), message, "volatile", ""); if (argQualifier.coherent && ! (formalQualifier.devicecoherent || formalQualifier.coherent)) @@ -1425,7 +1393,6 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // Don't check 'restrict', it is different than the rest: // "...but only restrict can be taken away from a calling argument, by a formal parameter that // lacks the restrict qualifier..." -#endif } if (!builtIn && argQualifier.getFormat() != formalQualifier.getFormat()) { // we have mismatched formats, which should only be allowed if writeonly @@ -1455,11 +1422,9 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction if (builtIn && fnCandidate->getBuiltInOp() != EOpNull) { // A function call mapped to a built-in operation. result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate); -#ifndef GLSLANG_WEB } else if (fnCandidate->getBuiltInOp() == EOpSpirvInst) { // When SPIR-V instruction qualifier is specified, the function call is still mapped to a built-in operation. result = handleBuiltInFunctionCall(loc, arguments, *fnCandidate); -#endif } else { // This is a function call not mapped to built-in operator. // It could still be a built-in function, but only if PureOperatorBuiltins == false. @@ -1479,11 +1444,9 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction intermediate.addToCallGraph(infoSink, currentCaller, fnCandidate->getMangledName()); } -#ifndef GLSLANG_WEB if (builtIn) nonOpBuiltInCheck(loc, *fnCandidate, *call); else -#endif userFunctionCallCheck(loc, *call); } @@ -1538,7 +1501,6 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo } else if (result->getAsOperator()) builtInOpCheck(loc, function, *result->getAsOperator()); -#ifndef GLSLANG_WEB // Special handling for function call with SPIR-V instruction qualifier specified if (function.getBuiltInOp() == EOpSpirvInst) { if (auto agg = result->getAsAggregate()) { @@ -1565,7 +1527,6 @@ TIntermTyped* TParseContext::handleBuiltInFunctionCall(TSourceLoc loc, TIntermNo } else assert(0); } -#endif return result; } @@ -1668,9 +1629,7 @@ void TParseContext::computeBuiltinPrecisions(TIntermTyped& node, const TFunction TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermTyped* value) { -#ifndef GLSLANG_WEB storage16BitAssignmentCheck(loc, value->getType(), "return"); -#endif functionReturnsValue = true; TIntermBranch* branch = nullptr; @@ -1704,7 +1663,6 @@ TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermType // See if the operation is being done in an illegal location. void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op) { -#ifndef GLSLANG_WEB switch (op) { case EOpBarrier: if (language == EShLangTessControl) { @@ -1757,7 +1715,6 @@ void TParseContext::checkLocation(const TSourceLoc& loc, TOperator op) default: break; } -#endif } // Finish processing object.length(). This started earlier in handleDotDereference(), where @@ -1775,7 +1732,6 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction const TType& type = intermNode->getAsTyped()->getType(); if (type.isArray()) { if (type.isUnsizedArray()) { -#ifndef GLSLANG_WEB if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) { // We could be between a layout declaration that gives a built-in io array implicit size and // a user redeclaration of that array, meaning we have to substitute its implicit size here @@ -1787,16 +1743,13 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction length = getIoArrayImplicitSize(type.getQualifier()); } } -#endif if (length == 0) { -#ifndef GLSLANG_WEB if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) error(loc, "", function->getName().c_str(), "array must first be sized by a redeclaration or layout qualifier"); else if (isRuntimeLength(*intermNode->getAsTyped())) { // Create a unary op and let the back end handle it return intermediate.addBuiltInFunctionCall(loc, EOpArrayLength, true, intermNode, TType(EbtInt)); } else -#endif error(loc, "", function->getName().c_str(), "array must be declared with a size before using this method"); } } else if (type.getOuterArrayNode()) { @@ -1829,7 +1782,6 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction // void TParseContext::addInputArgumentConversions(const TFunction& function, TIntermNode*& arguments) const { -#ifndef GLSLANG_WEB TIntermAggregate* aggregate = arguments->getAsAggregate(); // Process each argument's conversion @@ -1857,7 +1809,6 @@ void TParseContext::addInputArgumentConversions(const TFunction& function, TInte } } } -#endif } // @@ -1869,9 +1820,6 @@ void TParseContext::addInputArgumentConversions(const TFunction& function, TInte // TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& function, TIntermAggregate& intermNode) const { -#ifdef GLSLANG_WEB - return &intermNode; -#else TIntermSequence& arguments = intermNode.getSequence(); // Will there be any output conversions? @@ -1939,7 +1887,6 @@ TIntermTyped* TParseContext::addOutputArgumentConversions(const TFunction& funct conversionTree = intermediate.setAggregateOperator(conversionTree, EOpComma, intermNode.getType(), intermNode.getLoc()); return conversionTree; -#endif } TIntermTyped* TParseContext::addAssign(const TSourceLoc& loc, TOperator op, TIntermTyped* left, TIntermTyped* right) @@ -2149,7 +2096,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan TString featureString; const char* feature = nullptr; switch (callNode.getOp()) { -#ifndef GLSLANG_WEB case EOpTextureGather: case EOpTextureGatherOffset: case EOpTextureGatherOffsets: @@ -2290,7 +2236,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; } -#endif case EOpTextureOffset: case EOpTextureFetchOffset: @@ -2318,12 +2263,10 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan if (arg > 0) { -#ifndef GLSLANG_WEB bool f16ShadowCompare = (*argp)[1]->getAsTyped()->getBasicType() == EbtFloat16 && arg0->getType().getSampler().shadow; if (f16ShadowCompare) ++arg; -#endif if (! (*argp)[arg]->getAsTyped()->getQualifier().isConstant()) error(loc, "argument must be compile-time constant", "texel offset", ""); else if ((*argp)[arg]->getAsConstantUnion()) { @@ -2350,7 +2293,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan break; } -#ifndef GLSLANG_WEB case EOpTraceNV: if (!(*argp)[10]->getAsConstantUnion()) error(loc, "argument must be compile-time constant", "payload number", "a"); @@ -2681,7 +2623,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } break; -#endif default: break; @@ -2744,8 +2685,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } } -#ifndef GLSLANG_WEB - extern bool PureOperatorBuiltins; // Deprecated! Use PureOperatorBuiltins == true instead, in which case this @@ -2872,8 +2811,6 @@ void TParseContext::nonOpBuiltInCheck(const TSourceLoc& loc, const TFunction& fn } } -#endif - // // Do any extra checking for a user function call. // @@ -3032,7 +2969,6 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt bool errorReturn = false; switch(binaryNode->getOp()) { -#ifndef GLSLANG_WEB case EOpIndexDirect: case EOpIndexIndirect: // ... tessellation control shader ... @@ -3049,7 +2985,6 @@ bool TParseContext::lValueErrorCheck(const TSourceLoc& loc, const char* op, TInt } } break; // left node is checked by base class -#endif case EOpVectorSwizzle: errorReturn = lValueErrorCheck(loc, op, binaryNode->getLeft()); if (!errorReturn) { @@ -3267,10 +3202,6 @@ void TParseContext::reservedPpErrorCheck(const TSourceLoc& loc, const char* iden // bool TParseContext::lineContinuationCheck(const TSourceLoc& loc, bool endOfComment) { -#ifdef GLSLANG_WEB - return true; -#endif - const char* message = "line continuation"; bool lineContinuationAllowed = (isEsProfile() && version >= 300) || @@ -3327,7 +3258,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T // it, in which case the type comes from the argument instead of from the // constructor function. switch (op) { -#ifndef GLSLANG_WEB case EOpConstructNonuniform: if (node != nullptr && node->getAsTyped() != nullptr) { type.shallowCopy(node->getAsTyped()->getType()); @@ -3335,7 +3265,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T type.getQualifier().nonUniform = true; } break; -#endif default: type.shallowCopy(function.getType()); break; @@ -3361,7 +3290,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructMat4x2: case EOpConstructMat4x3: case EOpConstructMat4x4: -#ifndef GLSLANG_WEB case EOpConstructDMat2x2: case EOpConstructDMat2x3: case EOpConstructDMat2x4: @@ -3380,7 +3308,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructF16Mat4x2: case EOpConstructF16Mat4x3: case EOpConstructF16Mat4x4: -#endif constructingMatrix = true; break; default: @@ -3447,7 +3374,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T if (op == EOpConstructNonuniform) constType = false; -#ifndef GLSLANG_WEB switch (op) { case EOpConstructFloat16: case EOpConstructF16Vec2: @@ -3487,7 +3413,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T default: break; } -#endif // inherit constness from children if (constType) { @@ -3508,7 +3433,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructUVec2: case EOpConstructUVec3: case EOpConstructUVec4: -#ifndef GLSLANG_WEB case EOpConstructUint8: case EOpConstructInt16: case EOpConstructUint16: @@ -3532,7 +3456,6 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T case EOpConstructU64Vec2: case EOpConstructU64Vec3: case EOpConstructU64Vec4: -#endif // This was the list of valid ones, if they aren't converting from float // and aren't making an array. makeSpecConst = ! floatArgument && ! type.isArray(); @@ -3827,8 +3750,6 @@ void TParseContext::samplerCheck(const TSourceLoc& loc, const TType& type, const } } -#ifndef GLSLANG_WEB - void TParseContext::atomicUintCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (type.getQualifier().storage == EvqUniform) @@ -3853,8 +3774,6 @@ void TParseContext::accStructCheck(const TSourceLoc& loc, const TType& type, con } -#endif // GLSLANG_WEB - void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (parsingBuiltins) @@ -3938,13 +3857,11 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q if (!nonuniformOkay && qualifier.isNonUniform()) error(loc, "for non-parameter, can only apply to 'in' or no storage qualifier", "nonuniformEXT", ""); -#ifndef GLSLANG_WEB if (qualifier.isSpirvByReference()) error(loc, "can only apply to parameter", "spirv_by_reference", ""); if (qualifier.isSpirvLiteral()) error(loc, "can only apply to parameter", "spirv_literal", ""); -#endif // Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it. if (!isMemberCheck || structNestingLevel > 0) @@ -4050,12 +3967,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali if (! symbolTable.atBuiltInLevel()) error(loc, "global storage input qualifier cannot be used in a compute shader", "in", ""); break; -#ifndef GLSLANG_WEB case EShLangTessControl: if (qualifier.patch) error(loc, "can only use on output in tessellation-control shader", "patch", ""); break; -#endif default: break; } @@ -4094,12 +4009,10 @@ void TParseContext::globalQualifierTypeCheck(const TSourceLoc& loc, const TQuali case EShLangCompute: error(loc, "global storage output qualifier cannot be used in a compute shader", "out", ""); break; -#ifndef GLSLANG_WEB case EShLangTessEvaluation: if (qualifier.patch) error(loc, "can only use on input in tessellation-evaluation shader", "patch", ""); break; -#endif default: break; } @@ -4167,7 +4080,6 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons if (dst.precision == EpqNone || (force && src.precision != EpqNone)) dst.precision = src.precision; -#ifndef GLSLANG_WEB if (!force && ((src.coherent && (dst.devicecoherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.devicecoherent && (dst.coherent || dst.queuefamilycoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || (src.queuefamilycoherent && (dst.coherent || dst.devicecoherent || dst.workgroupcoherent || dst.subgroupcoherent || dst.shadercallcoherent)) || @@ -4177,7 +4089,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons error(loc, "only one coherent/devicecoherent/queuefamilycoherent/workgroupcoherent/subgroupcoherent/shadercallcoherent qualifier allowed", GetPrecisionQualifierString(src.precision), ""); } -#endif + // Layout qualifiers mergeObjectLayoutQualifiers(dst, src, false); @@ -4189,7 +4101,6 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons MERGE_SINGLETON(smooth); MERGE_SINGLETON(flat); MERGE_SINGLETON(specConstant); -#ifndef GLSLANG_WEB MERGE_SINGLETON(noContraction); MERGE_SINGLETON(nopersp); MERGE_SINGLETON(explicitInterp); @@ -4210,9 +4121,7 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons MERGE_SINGLETON(readonly); MERGE_SINGLETON(writeonly); MERGE_SINGLETON(nonUniform); -#endif -#ifndef GLSLANG_WEB // SPIR-V storage class qualifier (GL_EXT_spirv_intrinsics) dst.spirvStorageClass = src.spirvStorageClass; @@ -4245,7 +4154,6 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons dst.spirvDecorate = src.spirvDecorate; } } -#endif if (repeated) error(loc, "replicated qualifiers", "", ""); @@ -4316,10 +4224,8 @@ void TParseContext::precisionQualifierCheck(const TSourceLoc& loc, TBasicType ba if (! obeyPrecisionQualifiers() || parsingBuiltins) return; -#ifndef GLSLANG_WEB if (baseType == EbtAtomicUint && qualifier.precision != EpqNone && qualifier.precision != EpqHigh) error(loc, "atomic counters can only be highp", "atomic_uint", ""); -#endif if (isCoopMat) return; @@ -4511,8 +4417,6 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua (qualifier.storage != EvqTemporary && qualifier.storage != EvqGlobal && qualifier.storage != EvqShared && qualifier.storage != EvqConst)) error(loc, "only outermost dimension of an array of arrays can be a specialization constant", "[]", ""); -#ifndef GLSLANG_WEB - // desktop always allows outer-dimension-unsized variable arrays, if (!isEsProfile()) return; @@ -4552,8 +4456,6 @@ void TParseContext::arraySizesCheck(const TSourceLoc& loc, const TQualifier& qua break; } -#endif - // last member of ssbo block exception: if (qualifier.storage == EvqBuffer && lastMember) return; @@ -4598,7 +4500,6 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie if (symbolTable.atGlobalLevel()) trackLinkage(*symbol); -#ifndef GLSLANG_WEB if (! symbolTable.atBuiltInLevel()) { if (isIoResizeArray(type)) { ioArraySymbolResizeList.push_back(symbol); @@ -4606,7 +4507,6 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie } else fixIoArraySize(loc, symbol->getWritableType()); } -#endif return; } @@ -4644,7 +4544,6 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie return; } -#ifndef GLSLANG_WEB if (existingType.isSizedArray()) { // be more leniant for input arrays to geometry shaders and tessellation control outputs, where the redeclaration is the same size if (! (isIoResizeArray(type) && existingType.getOuterArraySize() == type.getOuterArraySize())) @@ -4658,11 +4557,8 @@ void TParseContext::declareArray(const TSourceLoc& loc, const TString& identifie if (isIoResizeArray(type)) checkIoArraysConsistency(loc); -#endif } -#ifndef GLSLANG_WEB - // Policy and error check for needing a runtime sized array. void TParseContext::checkRuntimeSizable(const TSourceLoc& loc, const TIntermTyped& base) { @@ -4745,8 +4641,6 @@ void TParseContext::checkAndResizeMeshViewDim(const TSourceLoc& loc, TType& type } } -#endif // GLSLANG_WEB - // Returns true if the first argument to the #line directive is the line number for the next line. // // Desktop, pre-version 3.30: "After processing this directive @@ -4789,7 +4683,6 @@ void TParseContext::nonInitConstCheck(const TSourceLoc& loc, TString& identifier TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TString& identifier, const TQualifier& qualifier, const TShaderQualifiers& publicType) { -#ifndef GLSLANG_WEB if (! builtInName(identifier) || symbolTable.atBuiltInLevel() || ! symbolTable.atGlobalLevel()) return nullptr; @@ -4952,7 +4845,6 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS return symbol; } -#endif return nullptr; } @@ -4964,7 +4856,6 @@ TSymbol* TParseContext::redeclareBuiltinVariable(const TSourceLoc& loc, const TS void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newTypeList, const TString& blockName, const TString* instanceName, TArraySizes* arraySizes) { -#ifndef GLSLANG_WEB const char* feature = "built-in block redeclaration"; profileRequires(loc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); profileRequires(loc, ~EEsProfile, 410, E_GL_ARB_separate_shader_objects, feature); @@ -5180,7 +5071,6 @@ void TParseContext::redeclareBuiltinBlock(const TSourceLoc& loc, TTypeList& newT // Save it in the AST for linker use. trackLinkage(*block); -#endif // GLSLANG_WEB } void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQualifier& qualifier, TType& type) @@ -5209,7 +5099,6 @@ void TParseContext::paramCheckFixStorage(const TSourceLoc& loc, const TStorageQu void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& qualifier, TType& type) { -#ifndef GLSLANG_WEB if (qualifier.isMemory()) { type.getQualifier().volatil = qualifier.volatil; type.getQualifier().coherent = qualifier.coherent; @@ -5223,7 +5112,6 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali type.getQualifier().writeonly = qualifier.writeonly; type.getQualifier().restrict = qualifier.restrict; } -#endif if (qualifier.isAuxiliary() || qualifier.isInterpolation()) @@ -5240,7 +5128,6 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali } if (qualifier.isNonUniform()) type.getQualifier().nonUniform = qualifier.nonUniform; -#ifndef GLSLANG_WEB if (qualifier.isSpirvByReference()) type.getQualifier().setSpirvByReference(); if (qualifier.isSpirvLiteral()) { @@ -5249,7 +5136,6 @@ void TParseContext::paramCheckFix(const TSourceLoc& loc, const TQualifier& quali type.getQualifier().setSpirvLiteral(); else error(loc, "cannot use spirv_literal qualifier", type.getBasicTypeString().c_str(), ""); -#endif } paramCheckFixStorage(loc, qualifier.storage, type); @@ -5286,15 +5172,12 @@ void TParseContext::opaqueCheck(const TSourceLoc& loc, const TType& type, const void TParseContext::referenceCheck(const TSourceLoc& loc, const TType& type, const char* op) { -#ifndef GLSLANG_WEB if (containsFieldWithBasicType(type, EbtReference)) error(loc, "can't use with reference types", op, ""); -#endif } void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TType& type, const char* op) { -#ifndef GLSLANG_WEB if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtFloat16)) requireFloat16Arithmetic(loc, op, "can't use with structs containing float16"); @@ -5324,7 +5207,6 @@ void TParseContext::storage16BitAssignmentCheck(const TSourceLoc& loc, const TTy if (type.isArray() && type.getBasicType() == EbtUint8) requireInt8Arithmetic(loc, op, "can't use with arrays containing uint8"); -#endif } void TParseContext::specializationCheck(const TSourceLoc& loc, const TType& type, const char* op) @@ -5376,7 +5258,6 @@ void TParseContext::structTypeCheck(const TSourceLoc& /*loc*/, TPublicType& publ // void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, TIntermLoop* loop) { -#ifndef GLSLANG_WEB // loop index init must exist and be a declaration, which shows up in the AST as an aggregate of size 1 of the declaration bool badInit = false; if (! init || ! init->getAsAggregate() || init->getAsAggregate()->getSequence().size() != 1) @@ -5472,10 +5353,8 @@ void TParseContext::inductiveLoopCheck(const TSourceLoc& loc, TIntermNode* init, // the body inductiveLoopBodyCheck(loop->getBody(), loopIndex, symbolTable); -#endif } -#ifndef GLSLANG_WEB // Do limit checks for built-in arrays. void TParseContext::arrayLimitCheck(const TSourceLoc& loc, const TString& identifier, int size) { @@ -5490,7 +5369,6 @@ void TParseContext::arrayLimitCheck(const TSourceLoc& loc, const TString& identi else if (identifier.compare("gl_CullDistancePerViewNV") == 0) limitCheck(loc, size, "gl_MaxCullDistances", "gl_CullDistancePerViewNV array size"); } -#endif // GLSLANG_WEB // See if the provided value is less than or equal to the symbol indicated by limit, // which should be a constant in the symbol table. @@ -5504,8 +5382,6 @@ void TParseContext::limitCheck(const TSourceLoc& loc, int value, const char* lim error(loc, "must be less than or equal to", feature, "%s (%d)", limit, constArray[0].getIConst()); } -#ifndef GLSLANG_WEB - // // Do any additional error checking, etc., once we know the parsing is done. // @@ -5571,7 +5447,6 @@ void TParseContext::finish() } } } -#endif // GLSLANG_WEB // // Layout qualifier stuff. @@ -5615,7 +5490,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi publicType.qualifier.layoutPacking = ElpStd140; return; } -#ifndef GLSLANG_WEB if (id == TQualifier::getLayoutPackingString(ElpStd430)) { requireProfile(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, "std430"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_shader_storage_buffer_object, "std430"); @@ -5913,7 +5787,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi publicType.shaderQualifiers.layoutPrimitiveCulling = true; return; } -#endif error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), ""); } @@ -6001,10 +5874,8 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi error(loc, "needs a literal integer", "set", ""); return; } else if (id == "binding") { -#ifndef GLSLANG_WEB profileRequires(loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, "binding"); profileRequires(loc, EEsProfile, 310, nullptr, "binding"); -#endif if ((unsigned int)value >= TQualifier::layoutBindingEnd) error(loc, "binding is too large", id.c_str(), ""); else @@ -6027,7 +5898,6 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi error(loc, "needs a literal integer", "constant_id", ""); return; } -#ifndef GLSLANG_WEB if (id == "component") { requireProfile(loc, ECoreProfile | ECompatibilityProfile, "component"); profileRequires(loc, ECoreProfile | ECompatibilityProfile, 440, E_GL_ARB_enhanced_layouts, "component"); @@ -6125,10 +5995,8 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi error(loc, "needs a literal integer", "buffer_reference_align", ""); return; } -#endif switch (language) { -#ifndef GLSLANG_WEB case EShLangTessControl: if (id == "vertices") { if (value == 0) @@ -6225,17 +6093,14 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi case EShLangTask: // Fall through -#endif case EShLangCompute: if (id.compare(0, 11, "local_size_") == 0) { -#ifndef GLSLANG_WEB if (language == EShLangMesh || language == EShLangTask) { requireExtensions(loc, Num_AEP_mesh_shader, AEP_mesh_shader, "gl_WorkGroupSize"); } else { profileRequires(loc, EEsProfile, 310, nullptr, "gl_WorkGroupSize"); profileRequires(loc, ~EEsProfile, 430, E_GL_ARB_compute_shader, "gl_WorkGroupSize"); } -#endif if (nonLiteral) error(loc, "needs a literal integer", "local_size", ""); if (id.size() == 12 && value == 0) { @@ -6302,7 +6167,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie if (src.hasPacking()) dst.layoutPacking = src.layoutPacking; -#ifndef GLSLANG_WEB if (src.hasStream()) dst.layoutStream = src.layoutStream; if (src.hasFormat()) @@ -6311,7 +6175,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.layoutXfbBuffer = src.layoutXfbBuffer; if (src.hasBufferReferenceAlign()) dst.layoutBufferReferenceAlign = src.layoutBufferReferenceAlign; -#endif if (src.hasAlign()) dst.layoutAlign = src.layoutAlign; @@ -6329,7 +6192,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie if (src.hasSpecConstantId()) dst.layoutSpecConstantId = src.layoutSpecConstantId; -#ifndef GLSLANG_WEB if (src.hasComponent()) dst.layoutComponent = src.layoutComponent; if (src.hasIndex()) @@ -6364,7 +6226,6 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.pervertexEXT = true; if (src.layoutHitObjectShaderRecordNV) dst.layoutHitObjectShaderRecordNV = true; -#endif } } @@ -6401,9 +6262,7 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb case EvqVaryingIn: case EvqVaryingOut: if (!type.getQualifier().isTaskMemory() && -#ifndef GLSLANG_WEB !type.getQualifier().hasSprivDecorate() && -#endif (type.getBasicType() != EbtBlock || (!(*type.getStruct())[0].type->getQualifier().hasLocation() && (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone))) @@ -6465,10 +6324,8 @@ void TParseContext::layoutMemberLocationArrayCheck(const TSourceLoc& loc, bool m // Do layout error checking with respect to a type. void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) { -#ifndef GLSLANG_WEB if (extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) return; // Skip any check if GL_EXT_spirv_intrinsics is turned on -#endif const TQualifier& qualifier = type.getQualifier(); @@ -6517,7 +6374,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqtaskPayloadSharedEXT: error(loc, "cannot apply to taskPayloadSharedEXT", "location", ""); break; -#ifndef GLSLANG_WEB case EvqPayload: case EvqPayloadIn: case EvqHitAttr: @@ -6525,7 +6381,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqCallableDataIn: case EvqHitObjectAttrNV: break; -#endif case EvqTileImageEXT: break; default: @@ -6543,7 +6398,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) error(loc, "fragment outputs or tileImageEXTs sharing the same location", "location", "%d must be the same basic type", repeated); } -#ifndef GLSLANG_WEB if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) { if (type.isUnsizedArray()) { error(loc, "unsized array", "xfb_offset", "in buffer %d", qualifier.layoutXfbBuffer); @@ -6572,7 +6426,6 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (! intermediate.setXfbBufferStride(qualifier.layoutXfbBuffer, qualifier.layoutXfbStride)) error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer); } -#endif if (qualifier.hasBinding()) { // Binding checking, from the spec: @@ -6592,16 +6445,12 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) if (type.isSizedArray()) lastBinding += (type.getCumulativeArraySize() - 1); else { -#ifndef GLSLANG_WEB warn(loc, "assuming binding count of one for compile-time checking of binding numbers for unsized array", "[]", ""); -#endif } } } -#ifndef GLSLANG_WEB if (spvVersion.vulkan == 0 && lastBinding >= resources.maxCombinedTextureImageUnits) error(loc, "sampler binding not less than gl_MaxCombinedTextureImageUnits", "binding", type.isArray() ? "(using array)" : ""); -#endif } if (type.isAtomic() && !spvVersion.vulkanRelaxed) { if (qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { @@ -6757,7 +6606,6 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier // output block declarations, and output block member declarations." switch (qualifier.storage) { -#ifndef GLSLANG_WEB case EvqVaryingIn: { const char* feature = "location qualifier on input"; @@ -6792,7 +6640,6 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier } break; } -#endif case EvqUniform: case EvqBuffer: { @@ -6871,7 +6718,6 @@ void TParseContext::layoutQualifierCheck(const TSourceLoc& loc, const TQualifier // For places that can't have shader-level layout qualifiers void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQualifiers& shaderQualifiers) { -#ifndef GLSLANG_WEB const char* message = "can only apply to a standalone qualifier"; if (shaderQualifiers.geometry != ElgNone) @@ -6922,14 +6768,12 @@ void TParseContext::checkNoShaderLayouts(const TSourceLoc& loc, const TShaderQua error(loc, message, TQualifier::getInterlockOrderingString(shaderQualifiers.interlockOrdering), ""); if (shaderQualifiers.layoutPrimitiveCulling) error(loc, "can only be applied as standalone", "primitive_culling", ""); -#endif } // Correct and/or advance an object's offset layout qualifier. void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol) { const TQualifier& qualifier = symbol.getType().getQualifier(); -#ifndef GLSLANG_WEB if (symbol.getType().isAtomic()) { if (qualifier.hasBinding() && (int)qualifier.layoutBinding < resources.maxAtomicCounterBindings) { @@ -6963,7 +6807,6 @@ void TParseContext::fixOffset(const TSourceLoc& loc, TSymbol& symbol) atomicUintOffsets[qualifier.layoutBinding] = offset + numOffsets; } } -#endif } // @@ -6978,10 +6821,6 @@ const TFunction* TParseContext::findFunction(const TSourceLoc& loc, const TFunct return nullptr; } -#ifdef GLSLANG_WEB - return findFunctionExact(loc, call, builtIn); -#endif - const TFunction* function = nullptr; // debugPrintfEXT has var args and is in the symbol table as "debugPrintfEXT()", @@ -7308,7 +7147,6 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T { TIntermTyped* result = nullptr; -#ifndef GLSLANG_WEB if (function->getBuiltInOp() != EOpNull) { return nullptr; } @@ -7359,7 +7197,6 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T result = arguments->getAsTyped(); } } -#endif return result; } @@ -7368,7 +7205,6 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T // to establish defaults. void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType& publicType) { -#ifndef GLSLANG_WEB if (publicType.basicType == EbtAtomicUint && publicType.qualifier.hasBinding()) { if (publicType.qualifier.layoutBinding >= (unsigned int)resources.maxAtomicCounterBindings) { error(loc, "atomic_uint binding is too large", "binding", ""); @@ -7385,7 +7221,6 @@ void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType if (publicType.qualifier.hasLayout() && !publicType.qualifier.hasBufferReference()) warn(loc, "useless application of layout qualifier", "layout", ""); -#endif } void TParseContext::coopMatTypeParametersCheck(const TSourceLoc& loc, const TPublicType& publicType) @@ -7430,11 +7265,7 @@ bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString { if (parsingBuiltins || symbolTable.atBuiltInLevel() || !symbolTable.atGlobalLevel() || type.getQualifier().storage != EvqUniform || - !(type.containsNonOpaque() -#ifndef GLSLANG_WEB - || type.getBasicType() == EbtAtomicUint -#endif - )) { + !(type.containsNonOpaque()|| type.getBasicType() == EbtAtomicUint)) { return false; } @@ -7463,7 +7294,6 @@ bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString int bufferBinding = TQualifier::layoutBindingEnd; TVariable* updatedBlock = nullptr; -#ifndef GLSLANG_WEB // Convert atomic_uint into members of a buffer block if (type.isAtomic()) { type.setBasicType(EbtUint); @@ -7479,7 +7309,6 @@ bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString growAtomicCounterBlock(bufferBinding, loc, type, identifier, nullptr); updatedBlock = atomicCounterBuffers[bufferBinding]; } -#endif if (!updatedBlock) { growGlobalUniformBlock(loc, type, identifier, nullptr); @@ -7591,11 +7420,9 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden samplerCheck(loc, type, identifier, initializer); transparentOpaqueCheck(loc, type, identifier); -#ifndef GLSLANG_WEB atomicUintCheck(loc, type, identifier); accStructCheck(loc, type, identifier); checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false); -#endif if (type.getQualifier().storage == EvqConst && type.containsReference()) { error(loc, "variables with reference type can't have qualifier 'const'", "qualifier", ""); } @@ -7698,14 +7525,12 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden // Pick up global defaults from the provide global defaults into dst. void TParseContext::inheritGlobalDefaults(TQualifier& dst) const { -#ifndef GLSLANG_WEB if (dst.storage == EvqVaryingOut) { if (! dst.hasStream() && language == EShLangGeometry) dst.layoutStream = globalOutputDefaults.layoutStream; if (! dst.hasXfbBuffer()) dst.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } -#endif } // @@ -7734,9 +7559,7 @@ TVariable* TParseContext::declareNonArray(const TSourceLoc& loc, const TString& // make a new variable TVariable* variable = new TVariable(&identifier, type); -#ifndef GLSLANG_WEB ioArrayCheck(loc, type, identifier); -#endif // add variable to symbol table if (symbolTable.insert(*variable)) { @@ -7813,9 +7636,7 @@ TIntermNode* TParseContext::executeInitializer(const TSourceLoc& loc, TIntermTyp TType skeletalType; skeletalType.shallowCopy(variable->getType()); skeletalType.getQualifier().makeTemporary(); -#ifndef GLSLANG_WEB initializer = convertInitializerList(loc, skeletalType, initializer); -#endif if (! initializer) { // error recovery; don't leave const without constant values if (qualifier == EvqConst) @@ -8217,8 +8038,6 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T intermediate.addBuiltInFunctionCall(node->getLoc(), EOpPackUint2x32, true, node, type); return newNode; } -#ifndef GLSLANG_WEB - case EOpConstructDVec2: case EOpConstructDVec3: case EOpConstructDVec4: @@ -8541,7 +8360,6 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T type); } else return nullptr; -#endif // GLSLANG_WEB default: error(loc, "unsupported construction", "", ""); @@ -8588,7 +8406,6 @@ TIntermTyped* TParseContext::constructAggregate(TIntermNode* node, const TType& // If a memory qualifier is present in 'to', also make it present in 'from'. void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier& to) { -#ifndef GLSLANG_WEB if (from.isReadOnly()) to.readonly = from.readonly; if (from.isWriteOnly()) @@ -8599,7 +8416,6 @@ void TParseContext::inheritMemoryQualifiers(const TQualifier& from, TQualifier& to.volatil = from.volatil; if (from.restrict) to.restrict = from.restrict; -#endif } // @@ -8652,7 +8468,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con error(memberLoc, "member storage qualifier cannot contradict block storage qualifier", memberType.getFieldName().c_str(), ""); memberQualifier.storage = currentBlockQualifier.storage; globalQualifierFixCheck(memberLoc, memberQualifier); -#ifndef GLSLANG_WEB inheritMemoryQualifiers(currentBlockQualifier, memberQualifier); if (currentBlockQualifier.perPrimitiveNV) memberQualifier.perPrimitiveNV = currentBlockQualifier.perPrimitiveNV; @@ -8666,7 +8481,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), ""); if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty()) error(memberLoc, "member cannot have a spirv_decorate_id qualifier", memberType.getFieldName().c_str(), ""); -#endif if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary())) error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), ""); if (memberType.isArray()) @@ -8746,7 +8560,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con for (unsigned int member = 0; member < typeList.size(); ++member) { TQualifier& memberQualifier = typeList[member].type->getQualifier(); const TSourceLoc& memberLoc = typeList[member].loc; -#ifndef GLSLANG_WEB if (memberQualifier.hasStream()) { if (defaultQualification.layoutStream != memberQualifier.layoutStream) error(memberLoc, "member cannot contradict block", "stream", ""); @@ -8760,14 +8573,12 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (defaultQualification.layoutXfbBuffer != memberQualifier.layoutXfbBuffer) error(memberLoc, "member cannot contradict block (or what block inherited from global)", "xfb_buffer", ""); } -#endif if (memberQualifier.hasPacking()) error(memberLoc, "member of block cannot have a packing layout qualifier", typeList[member].type->getFieldName().c_str(), ""); if (memberQualifier.hasLocation()) { const char* feature = "location on block member"; switch (currentBlockQualifier.storage) { -#ifndef GLSLANG_WEB case EvqVaryingIn: case EvqVaryingOut: requireProfile(memberLoc, ECoreProfile | ECompatibilityProfile | EEsProfile, feature); @@ -8775,7 +8586,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con profileRequires(memberLoc, EEsProfile, 320, Num_AEP_shader_io_blocks, AEP_shader_io_blocks, feature); memberWithLocation = true; break; -#endif default: error(memberLoc, "can only use in an in/out block", feature, ""); break; @@ -8803,7 +8613,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con layoutMemberLocationArrayCheck(loc, memberWithLocation, arraySizes); -#ifndef GLSLANG_WEB // Ensure that the block has an XfbBuffer assigned. This is needed // because if the block has a XfbOffset assigned, then it is // assumed that it has implicitly assigned the current global @@ -8813,7 +8622,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (!currentBlockQualifier.hasXfbBuffer() && currentBlockQualifier.hasXfbOffset()) currentBlockQualifier.layoutXfbBuffer = globalOutputDefaults.layoutXfbBuffer; } -#endif // Process the members fixBlockLocations(loc, currentBlockQualifier, typeList, memberWithLocation, memberWithoutLocation); @@ -8824,13 +8632,11 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con for (unsigned int member = 0; member < typeList.size(); ++member) layoutTypeCheck(typeList[member].loc, *typeList[member].type); -#ifndef GLSLANG_WEB if (memberWithPerViewQualifier) { for (unsigned int member = 0; member < typeList.size(); ++member) { checkAndResizeMeshViewDim(typeList[member].loc, *typeList[member].type, /*isBlockMember*/ true); } } -#endif // reverse merge, so that currentBlockQualifier now has all layout information // (can't use defaultQualification directly, it's missing other non-layout-default-class qualifiers) @@ -8844,7 +8650,6 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (arraySizes != nullptr) blockType.transferArraySizes(arraySizes); -#ifndef GLSLANG_WEB if (arraySizes == nullptr) ioArrayCheck(loc, blockType, instanceName ? *instanceName : *blockName); if (currentBlockQualifier.hasBufferReference()) { @@ -8871,9 +8676,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con if (!instanceName) { return; } - } else -#endif - { + } else { // // Don't make a user-defined type out of block name; that will cause an error // if the same block name gets reused in a different interface. @@ -8921,14 +8724,12 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con // Check for general layout qualifier errors layoutObjectCheck(loc, variable); -#ifndef GLSLANG_WEB // fix up if (isIoResizeArray(blockType)) { ioArraySymbolResizeList.push_back(&variable); checkIoArraysConsistency(loc, true); } else fixIoArraySize(loc, variable.getWritableType()); -#endif // Save it in the AST for linker use. trackLinkage(variable); @@ -8993,7 +8794,6 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q } profileRequires(loc, EEsProfile | ECoreProfile | ECompatibilityProfile, 0, E_GL_EXT_shared_memory_block, "shared block"); break; -#ifndef GLSLANG_WEB case EvqPayload: profileRequires(loc, ~EEsProfile, 460, 2, extsrt, "rayPayloadNV block"); requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangAnyHitMask | EShLangClosestHitMask | EShLangMissMask), @@ -9021,7 +8821,6 @@ void TParseContext::blockStageIoCheck(const TSourceLoc& loc, const TQualifier& q profileRequires(loc, ~EEsProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV block"); requireStage(loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | EShLangMissMask), "hitObjectAttributeNV block"); break; -#endif default: error(loc, "only uniform, buffer, in, or out blocks are supported", blockName->c_str(), ""); break; @@ -9110,7 +8909,6 @@ void TParseContext::fixBlockLocations(const TSourceLoc& loc, TQualifier& qualifi void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList) { -#ifndef GLSLANG_WEB // "If a block is qualified with xfb_offset, all its // members are assigned transform feedback buffer offsets. If a block is not qualified with xfb_offset, any // members of that block not qualified with an xfb_offset will not be assigned transform feedback buffer @@ -9144,7 +8942,6 @@ void TParseContext::fixXfbOffsets(TQualifier& qualifier, TTypeList& typeList) // The above gave all block members an offset, so we can take it off the block now, // which will avoid double counting the offset usage. qualifier.layoutXfbOffset = TQualifier::layoutXfbOffsetEnd; -#endif } // Calculate and save the offset of each block member, using the recursively @@ -9400,7 +9197,6 @@ void TParseContext::invariantCheck(const TSourceLoc& loc, const TQualifier& qual // void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, const TPublicType& publicType) { -#ifndef GLSLANG_WEB if (publicType.shaderQualifiers.vertices != TQualifier::layoutNotSet) { assert(language == EShLangTessControl || language == EShLangGeometry || language == EShLangMesh); const char* id = (language == EShLangTessControl) ? "vertices" : "max_vertices"; @@ -9492,7 +9288,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con else error(loc, "can only apply to 'in'", "point_mode", ""); } -#endif + for (int i = 0; i < 3; ++i) { if (publicType.shaderQualifiers.localSizeNotDefault[i]) { if (publicType.qualifier.storage == EvqVaryingIn) { @@ -9509,9 +9305,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } if (intermediate.getLocalSize(i) > (unsigned int)max) error(loc, "too large; see gl_MaxComputeWorkGroupSize", "local_size", ""); - } -#ifndef GLSLANG_WEB - else if (language == EShLangMesh) { + } else if (language == EShLangMesh) { switch (i) { case 0: max = extensionTurnedOn(E_GL_EXT_mesh_shader) ? @@ -9561,9 +9355,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con "gl_MaxTaskWorkGroupSizeEXT" : "gl_MaxTaskWorkGroupSizeNV"); error(loc, maxsErrtring.c_str(), "local_size", ""); } - } -#endif - else { + } else { assert(0); } @@ -9588,7 +9380,6 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } } -#ifndef GLSLANG_WEB if (publicType.shaderQualifiers.earlyFragmentTests) { if (publicType.qualifier.storage == EvqVaryingIn) intermediate.setEarlyFragmentTests(); @@ -9684,7 +9475,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con // Exit early as further checks are not valid return; } -#endif + const TQualifier& qualifier = publicType.qualifier; if (qualifier.isAuxiliary() || @@ -9717,7 +9508,6 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con case EvqVaryingIn: break; case EvqVaryingOut: -#ifndef GLSLANG_WEB if (qualifier.hasStream()) globalOutputDefaults.layoutStream = qualifier.layoutStream; if (qualifier.hasXfbBuffer()) @@ -9726,7 +9516,6 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con if (! intermediate.setXfbBufferStride(globalOutputDefaults.layoutXfbBuffer, qualifier.layoutXfbStride)) error(loc, "all stride settings must match for xfb buffer", "xfb_stride", "%d", qualifier.layoutXfbBuffer); } -#endif break; case EvqShared: if (qualifier.hasMatrix()) diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 47ee31d1c0..d74662939f 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -104,7 +104,6 @@ class TParseContextBase : public TParseVersions { } virtual ~TParseContextBase() { } -#if !defined(GLSLANG_WEB) || defined(GLSLANG_WEB_DEVEL) virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, @@ -113,7 +112,6 @@ class TParseContextBase : public TParseVersions { const char* szExtraInfoFormat, ...); virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...); -#endif virtual void setLimits(const TBuiltInResource&) = 0; @@ -331,10 +329,8 @@ class TParseContext : public TParseContextBase { TIntermTyped* handleBracketDereference(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); void handleIndexLimits(const TSourceLoc&, TIntermTyped* base, TIntermTyped* index); -#ifndef GLSLANG_WEB void makeEditable(TSymbol*&) override; void ioArrayCheck(const TSourceLoc&, const TType&, const TString& identifier); -#endif bool isIoResizeArray(const TType&) const; void fixIoArraySize(const TSourceLoc&, TType&); void handleIoResizeArrayAccess(const TSourceLoc&, TIntermTyped* base); @@ -467,7 +463,6 @@ class TParseContext : public TParseContextBase { const TTypeList* recordStructCopy(TStructRecord&, const TType*, const TType*); TLayoutFormat mapLegacyLayoutFormat(TLayoutFormat legacyLayoutFormat, TBasicType imageType); -#ifndef GLSLANG_WEB TAttributeType attributeFromName(const TString& name) const; TAttributes* makeAttributes(const TString& identifier) const; TAttributes* makeAttributes(const TString& identifier, TIntermNode* node) const; @@ -494,8 +489,6 @@ class TParseContext : public TParseContextBase { TSpirvInstruction* makeSpirvInstruction(const TSourceLoc& loc, const TString& name, int value); TSpirvInstruction* mergeSpirvInstruction(const TSourceLoc& loc, TSpirvInstruction* spirvInst1, TSpirvInstruction* spirvInst2); -#endif - void checkAndResizeMeshViewDim(const TSourceLoc&, TType&, bool isBlockMember); protected: @@ -508,9 +501,7 @@ class TParseContext : public TParseContextBase { bool isRuntimeLength(const TIntermTyped&) const; TIntermNode* executeInitializer(const TSourceLoc&, TIntermTyped* initializer, TVariable* variable); TIntermTyped* convertInitializerList(const TSourceLoc&, const TType&, TIntermTyped* initializer); -#ifndef GLSLANG_WEB void finish() override; -#endif virtual const char* getGlobalUniformBlockName() const override; virtual void finalizeGlobalUniformBlockLayout(TVariable&) override; @@ -547,7 +538,6 @@ class TParseContext : public TParseContextBase { TQualifier globalOutputDefaults; TQualifier globalSharedDefaults; TString currentCaller; // name of last function body entered (not valid when at global scope) -#ifndef GLSLANG_WEB int* atomicUintOffsets; // to become an array of the right size to hold an offset per binding point bool anyIndexLimits; TIdSetType inductiveLoopIds; @@ -588,7 +578,6 @@ class TParseContext : public TParseContextBase { // array-sizing declarations // TVector ioArraySymbolResizeList; -#endif }; } // end namespace glslang diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index e9420fa5ec..99c9ecbbba 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -324,9 +324,7 @@ struct str_hash // A single global usable by all threads, by all versions, by all languages. // After a single process-level initialization, this is read only and thread safe std::unordered_map* KeywordMap = nullptr; -#ifndef GLSLANG_WEB std::unordered_set* ReservedSet = nullptr; -#endif } @@ -409,7 +407,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["uvec3"] = UVEC3; (*KeywordMap)["uvec4"] = UVEC4; -#ifndef GLSLANG_WEB (*KeywordMap)["nonuniformEXT"] = NONUNIFORM; (*KeywordMap)["demote"] = DEMOTE; (*KeywordMap)["attribute"] = ATTRIBUTE; @@ -599,7 +596,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["spirv_storage_class"] = SPIRV_STORAGE_CLASS; (*KeywordMap)["spirv_by_reference"] = SPIRV_BY_REFERENCE; (*KeywordMap)["spirv_literal"] = SPIRV_LITERAL; -#endif (*KeywordMap)["sampler2D"] = SAMPLER2D; (*KeywordMap)["samplerCube"] = SAMPLERCUBE; @@ -633,7 +629,6 @@ void TScanContext::fillInKeywordMap() (*KeywordMap)["sampler"] = SAMPLER; (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW; -#ifndef GLSLANG_WEB (*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY; (*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY; (*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY; @@ -814,17 +809,14 @@ void TScanContext::fillInKeywordMap() ReservedSet->insert("cast"); ReservedSet->insert("namespace"); ReservedSet->insert("using"); -#endif } void TScanContext::deleteKeywordMap() { delete KeywordMap; KeywordMap = nullptr; -#ifndef GLSLANG_WEB delete ReservedSet; ReservedSet = nullptr; -#endif } // Called by yylex to get the next token. @@ -905,14 +897,12 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) case PpAtomConstInt: parserToken->sType.lex.i = ppToken.ival; return INTCONSTANT; case PpAtomConstUint: parserToken->sType.lex.i = ppToken.ival; return UINTCONSTANT; case PpAtomConstFloat: parserToken->sType.lex.d = ppToken.dval; return FLOATCONSTANT; -#ifndef GLSLANG_WEB case PpAtomConstInt16: parserToken->sType.lex.i = ppToken.ival; return INT16CONSTANT; case PpAtomConstUint16: parserToken->sType.lex.i = ppToken.ival; return UINT16CONSTANT; case PpAtomConstInt64: parserToken->sType.lex.i64 = ppToken.i64val; return INT64CONSTANT; case PpAtomConstUint64: parserToken->sType.lex.i64 = ppToken.i64val; return UINT64CONSTANT; case PpAtomConstDouble: parserToken->sType.lex.d = ppToken.dval; return DOUBLECONSTANT; case PpAtomConstFloat16: parserToken->sType.lex.d = ppToken.dval; return FLOAT16CONSTANT; -#endif case PpAtomIdentifier: { int token = tokenizeIdentifier(); @@ -934,10 +924,8 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) int TScanContext::tokenizeIdentifier() { -#ifndef GLSLANG_WEB if (ReservedSet->find(tokenText) != ReservedSet->end()) return reservedWord(); -#endif auto it = KeywordMap->find(tokenText); if (it == KeywordMap->end()) { @@ -1060,7 +1048,6 @@ int TScanContext::tokenizeIdentifier() return identifierOrReserved(reserved); } -#ifndef GLSLANG_WEB case NOPERSPECTIVE: if (parseContext.extensionTurnedOn(E_GL_NV_shader_noperspective_interpolation)) return keyword; @@ -1147,7 +1134,7 @@ int TScanContext::tokenizeIdentifier() case SUBROUTINE: return es30ReservedFromGLSL(400); -#endif + case SHARED: if ((parseContext.isEsProfile() && parseContext.version < 300) || (!parseContext.isEsProfile() && parseContext.version < 140)) @@ -1182,7 +1169,6 @@ int TScanContext::tokenizeIdentifier() case MAT4X4: return matNxM(); -#ifndef GLSLANG_WEB case DMAT2: case DMAT3: case DMAT4: @@ -1487,7 +1473,6 @@ int TScanContext::tokenizeIdentifier() return keyword; else return identifierOrType(); -#endif case UINT: case UVEC2: @@ -1542,7 +1527,6 @@ int TScanContext::tokenizeIdentifier() else return identifierOrType(); -#ifndef GLSLANG_WEB case ISAMPLER1D: case ISAMPLER1DARRAY: case SAMPLER1DARRAYSHADOW: @@ -1824,7 +1808,6 @@ int TScanContext::tokenizeIdentifier() && parseContext.extensionTurnedOn(E_GL_NV_shader_invocation_reorder))) return keyword; return identifierOrType(); -#endif default: parseContext.infoSink.info.message(EPrefixInternalError, "Unknown glslang keyword", loc); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 5d16361cc4..400a5bdebb 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -295,11 +295,6 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi EShLanguage language, EShSource source, TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables) { -#ifdef GLSLANG_WEB - profile = EEsProfile; - version = 310; -#endif - (*symbolTables[language]).adoptLevels(*commonTable[CommonIndex(profile, language)]); InitializeSymbolTable(builtInParseables.getStageString(language), version, profile, spvVersion, language, source, infoSink, *symbolTables[language]); @@ -316,11 +311,6 @@ void InitializeStageSymbolTable(TBuiltInParseables& builtInParseables, int versi // bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TSymbolTable** symbolTables, int version, EProfile profile, const SpvVersion& spvVersion, EShSource source) { -#ifdef GLSLANG_WEB - profile = EEsProfile; - version = 310; -#endif - std::unique_ptr builtInParseables(CreateBuiltInParseables(infoSink, source)); if (builtInParseables == nullptr) @@ -343,7 +333,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangFragment, source, infoSink, commonTable, symbolTables); -#ifndef GLSLANG_WEB // check for tessellation if ((profile != EEsProfile && version >= 150) || (profile == EEsProfile && version >= 310)) { @@ -392,7 +381,6 @@ bool InitializeSymbolTables(TInfoSink& infoSink, TSymbolTable** commonTable, TS (profile == EEsProfile && version >= 320)) InitializeStageSymbolTable(*builtInParseables, version, profile, spvVersion, EShLangTask, source, infoSink, commonTable, symbolTables); -#endif // !GLSLANG_WEB return true; } @@ -494,13 +482,11 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp // Function to Print all builtins void DumpBuiltinSymbolTable(TInfoSink& infoSink, const TSymbolTable& symbolTable) { -#if !defined(GLSLANG_WEB) infoSink.debug << "BuiltinSymbolTable {\n"; symbolTable.dump(infoSink, true); infoSink.debug << "}\n"; -#endif } // Return true if the shader was correctly specified for version/profile/stage. @@ -598,7 +584,6 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo break; } -#if !defined(GLSLANG_WEB) // Correct for stage type... switch (stage) { case EShLangGeometry: @@ -686,7 +671,6 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo break; } } -#endif return correct; } @@ -876,7 +860,6 @@ bool ProcessDeferred( : userInput.scanVersion(version, profile, versionNotFirstToken); bool versionNotFound = version == 0; if (forceDefaultVersionAndProfile && source == EShSourceGlsl) { -#if !defined(GLSLANG_WEB) if (! (messages & EShMsgSuppressWarnings) && ! versionNotFound && (version != defaultVersion || profile != defaultProfile)) { compiler->infoSink.info << "Warning, (version, profile) forced to be (" @@ -884,7 +867,7 @@ bool ProcessDeferred( << "), while in source code it is (" << version << ", " << ProfileName(profile) << ")\n"; } -#endif + if (versionNotFound) { versionNotFirstToken = false; versionNotFirst = false; @@ -899,13 +882,7 @@ bool ProcessDeferred( bool goodVersion = DeduceVersionProfile(compiler->infoSink, stage, versionNotFirst, defaultVersion, source, version, profile, spvVersion); -#ifdef GLSLANG_WEB - profile = EEsProfile; - version = 310; -#endif - bool versionWillBeError = (versionNotFound || (profile == EEsProfile && version >= 300 && versionNotFirst)); -#if !defined(GLSLANG_WEB) bool warnVersionNotFirst = false; if (! versionWillBeError && versionNotFirstToken) { if (messages & EShMsgRelaxedErrors) @@ -913,7 +890,6 @@ bool ProcessDeferred( else versionWillBeError = true; } -#endif intermediate.setSource(source); intermediate.setVersion(version); @@ -978,13 +954,11 @@ bool ProcessDeferred( parseContext->setLimits(*resources); if (! goodVersion) parseContext->addError(); -#if !defined(GLSLANG_WEB) if (warnVersionNotFirst) { TSourceLoc loc; loc.init(); parseContext->warn(loc, "Illegal to have non-comment, non-whitespace tokens before #version", "#version", ""); } -#endif parseContext->initializeExtensionBehavior(); @@ -1016,8 +990,6 @@ bool ProcessDeferred( return success; } -#if !defined(GLSLANG_WEB) - // Responsible for keeping track of the most recent source string and line in // the preprocessor and outputting newlines appropriately if the source string // or line changes. @@ -1214,8 +1186,6 @@ struct DoPreprocessing { std::string* outputString; }; -#endif - // DoFullParse is a valid ProcessingConext template argument for fully // parsing the shader. It populates the "intermediate" with the AST. struct DoFullParse{ @@ -1246,7 +1216,6 @@ struct DoFullParse{ } }; -#if !defined(GLSLANG_WEB) // Take a single compilation unit, and run the preprocessor on it. // Return: True if there were no issues found in preprocessing, // False if during preprocessing any unknown version, pragmas or @@ -1281,7 +1250,6 @@ bool PreprocessDeferred( forwardCompatible, messages, intermediate, parser, false, includer, "", environment); } -#endif // // do a partial compile on the given strings for a single compilation unit @@ -1831,8 +1799,6 @@ void TShader::setDxPositionW(bool invert) { intermediate->setDxPos void TShader::setEnhancedMsgs() { intermediate->setEnhancedMsgs(); } void TShader::setNanMinMaxClamp(bool useNonNan) { intermediate->setNanMinMaxClamp(useNonNan); } -#ifndef GLSLANG_WEB - // Set binding base for given resource type void TShader::setShiftBinding(TResourceType res, unsigned int base) { intermediate->setShiftBinding(res, base); @@ -1874,7 +1840,6 @@ void TShader::setUniformLocationBase(int base) void TShader::setNoStorageFormat(bool useUnknownFormat) { intermediate->setNoStorageFormat(useUnknownFormat); } void TShader::setResourceSetBinding(const std::vector& base) { intermediate->setResourceSetBinding(base); } void TShader::setTextureSamplerTransformMode(EShTextureSamplerTransformMode mode) { intermediate->setTextureSamplerTransformMode(mode); } -#endif void TShader::addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) { intermediate->addBlockStorageOverride(nameStr, backing); } @@ -1913,7 +1878,6 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion &environment); } -#if !defined(GLSLANG_WEB) // Fill in a string with the result of preprocessing ShaderStrings // Returns true if all extensions, pragmas and version strings were valid. // @@ -1939,7 +1903,6 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources, forwardCompatible, message, includer, *intermediate, output_string, &environment); } -#endif const char* TShader::getInfoLog() { @@ -1951,11 +1914,7 @@ const char* TShader::getInfoDebugLog() return infoSink->debug.c_str(); } -TProgram::TProgram() : -#if !defined(GLSLANG_WEB) - reflection(nullptr), -#endif - linked(false) +TProgram::TProgram() : reflection(nullptr), linked(false) { pool = new TPoolAllocator; infoSink = new TInfoSink; @@ -1968,9 +1927,7 @@ TProgram::TProgram() : TProgram::~TProgram() { delete infoSink; -#if !defined(GLSLANG_WEB) delete reflection; -#endif for (int s = 0; s < EShLangCount; ++s) if (newedIntermediate[s]) @@ -2018,7 +1975,6 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) if (stages[stage].size() == 0) return true; -#if !defined(GLSLANG_WEB) int numEsShaders = 0, numNonEsShaders = 0; for (auto it = stages[stage].begin(); it != stages[stage].end(); ++it) { if ((*it)->intermediate->getProfile() == EEsProfile) { @@ -2069,9 +2025,6 @@ bool TProgram::linkStage(EShLanguage stage, EShMessages messages) for (it = stages[stage].begin(); it != stages[stage].end(); ++it) intermediate[stage]->merge(*infoSink, *(*it)->intermediate); } -#else - intermediate[stage] = stages[stage].front()->intermediate; -#endif intermediate[stage]->finalCheck(*infoSink, (messages & EShMsgKeepUncalled) != 0); if (messages & EShMsgAST) @@ -2153,8 +2106,6 @@ const char* TProgram::getInfoDebugLog() return infoSink->debug.c_str(); } -#if !defined(GLSLANG_WEB) - // // Reflection implementation. // @@ -2235,6 +2186,4 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper) return ioMapper->doMap(pResolver, *infoSink); } -#endif // !GLSLANG_WEB - } // end namespace glslang diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp index 5d495dbf51..4e130c31be 100644 --- a/glslang/MachineIndependent/SpirvIntrinsics.cpp +++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -33,8 +33,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#ifndef GLSLANG_WEB - // // GL_EXT_spirv_intrinsics // @@ -360,5 +358,3 @@ TSpirvInstruction* TParseContext::mergeSpirvInstruction(const TSourceLoc& loc, T } } // end namespace glslang - -#endif // GLSLANG_WEB diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 43f8dbe3ef..1e007a7120 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -65,7 +65,6 @@ void TType::buildMangledName(TString& mangledName) const case EbtInt: mangledName += 'i'; break; case EbtUint: mangledName += 'u'; break; case EbtBool: mangledName += 'b'; break; -#ifndef GLSLANG_WEB case EbtDouble: mangledName += 'd'; break; case EbtFloat16: mangledName += "f16"; break; case EbtInt8: mangledName += "i8"; break; @@ -79,12 +78,9 @@ void TType::buildMangledName(TString& mangledName) const case EbtRayQuery: mangledName += "rq"; break; case EbtSpirvType: mangledName += "spv-t"; break; case EbtHitObjectNV: mangledName += "ho"; break; -#endif case EbtSampler: switch (sampler.type) { -#ifndef GLSLANG_WEB case EbtFloat16: mangledName += "f16"; break; -#endif case EbtInt: mangledName += "i"; break; case EbtUint: mangledName += "u"; break; case EbtInt64: mangledName += "i64"; break; @@ -111,12 +107,10 @@ void TType::buildMangledName(TString& mangledName) const case Esd2D: mangledName += "2"; break; case Esd3D: mangledName += "3"; break; case EsdCube: mangledName += "C"; break; -#ifndef GLSLANG_WEB case Esd1D: mangledName += "1"; break; case EsdRect: mangledName += "R2"; break; case EsdBuffer: mangledName += "B"; break; case EsdSubpass: mangledName += "P"; break; -#endif default: break; // some compilers want this } @@ -184,8 +178,6 @@ void TType::buildMangledName(TString& mangledName) const } } -#if !defined(GLSLANG_WEB) - // // Dump functions. // @@ -264,8 +256,6 @@ void TSymbolTable::dump(TInfoSink& infoSink, bool complete) const } } -#endif - // // Functions have buried pointers to delete. // @@ -398,9 +388,7 @@ TFunction::TFunction(const TFunction& copyOf) : TSymbol(copyOf) implicitThis = copyOf.implicitThis; illegalImplicitThis = copyOf.illegalImplicitThis; defaultParamCount = copyOf.defaultParamCount; -#ifndef GLSLANG_WEB spirvInst = copyOf.spirvInst; -#endif } TFunction* TFunction::clone() const diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index c2b386e807..fc86ad6229 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -117,10 +117,8 @@ class TSymbol { virtual int getNumExtensions() const { return extensions == nullptr ? 0 : (int)extensions->size(); } virtual const char** getExtensions() const { return extensions->data(); } -#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const = 0; void dumpExtensions(TInfoSink& infoSink) const; -#endif virtual bool isReadOnly() const { return ! writable; } virtual void makeReadOnly() { writable = false; } @@ -196,9 +194,7 @@ class TVariable : public TSymbol { } virtual const char** getMemberExtensions(int member) const { return (*memberExtensions)[member].data(); } -#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const; -#endif protected: explicit TVariable(const TVariable&); @@ -321,18 +317,14 @@ class TFunction : public TSymbol { virtual const TParameter& operator[](int i) const { return parameters[i]; } const TQualifier& getQualifier() const { return returnType.getQualifier(); } -#ifndef GLSLANG_WEB virtual void setSpirvInstruction(const TSpirvInstruction& inst) { relateToOperator(EOpSpirvInst); spirvInst = inst; } virtual const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } -#endif -#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const override; -#endif protected: explicit TFunction(const TFunction&); @@ -354,9 +346,7 @@ class TFunction : public TSymbol { // but is not allowed to use them, or see hidden symbols instead. int defaultParamCount; -#ifndef GLSLANG_WEB TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers -#endif }; // @@ -396,9 +386,7 @@ class TAnonMember : public TSymbol { virtual const char** getExtensions() const override { return anonContainer.getMemberExtensions(memberNumber); } virtual int getAnonId() const { return anonId; } -#if !defined(GLSLANG_WEB) virtual void dump(TInfoSink& infoSink, bool complete = false) const override; -#endif protected: explicit TAnonMember(const TAnonMember&); @@ -583,9 +571,7 @@ class TSymbolTableLevel { void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); -#if !defined(GLSLANG_WEB) void dump(TInfoSink& infoSink, bool complete = false) const; -#endif TSymbolTableLevel* clone() const; void readOnly(); @@ -913,9 +899,7 @@ class TSymbolTable { } long long getMaxSymbolId() { return uniqueId; } -#if !defined(GLSLANG_WEB) void dump(TInfoSink& infoSink, bool complete = false) const; -#endif void copyTable(const TSymbolTable& copyOf); void setPreviousDefaultPrecisions(TPrecisionQualifier *p) { table[currentLevel()]->setPreviousDefaultPrecisions(p); } diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index d6808a7aef..40cf3ed81e 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -151,8 +151,6 @@ namespace glslang { -#ifndef GLSLANG_WEB - // // Initialize all extensions, almost always to 'disable', as once their features // are incorporated into a core version, their features are supported through allowing that @@ -385,8 +383,6 @@ void TParseVersions::initializeExtensionBehavior() spvUnsupportedExt.push_back(E_GL_ARB_bindless_texture); } -#endif // GLSLANG_WEB - // Get code that is not part of a shared symbol table, is specific to this shader, // or needed by the preprocessor (which does not use a shared symbol table). void TParseVersions::getPreamble(std::string& preamble) @@ -395,9 +391,6 @@ void TParseVersions::getPreamble(std::string& preamble) preamble = "#define GL_ES 1\n" "#define GL_FRAGMENT_PRECISION_HIGH 1\n" -#ifdef GLSLANG_WEB - ; -#else "#define GL_OES_texture_3D 1\n" "#define GL_OES_standard_derivatives 1\n" "#define GL_EXT_frag_depth 1\n" @@ -596,11 +589,8 @@ void TParseVersions::getPreamble(std::string& preamble) if (version >= 130) { preamble +="#define GL_FRAGMENT_PRECISION_HIGH 1\n"; } - -#endif // GLSLANG_WEB } -#ifndef GLSLANG_WEB if ((!isEsProfile() && version >= 140) || (isEsProfile() && version >= 310)) { preamble += @@ -628,7 +618,6 @@ void TParseVersions::getPreamble(std::string& preamble) preamble += "#define GL_EXT_terminate_invocation 1\n" ; -#endif // #define VULKAN XXXX const int numberBufSize = 12; @@ -640,7 +629,6 @@ void TParseVersions::getPreamble(std::string& preamble) preamble += "\n"; } -#ifndef GLSLANG_WEB // #define GL_SPIRV XXXX if (spvVersion.openGl > 0) { preamble += "#define GL_SPIRV "; @@ -648,9 +636,7 @@ void TParseVersions::getPreamble(std::string& preamble) preamble += numberBuf; preamble += "\n"; } -#endif -#ifndef GLSLANG_WEB // GL_EXT_spirv_intrinsics if (!isEsProfile()) { switch (language) { @@ -671,7 +657,6 @@ void TParseVersions::getPreamble(std::string& preamble) default: break; } } -#endif } // @@ -683,7 +668,6 @@ const char* StageName(EShLanguage stage) case EShLangVertex: return "vertex"; case EShLangFragment: return "fragment"; case EShLangCompute: return "compute"; -#ifndef GLSLANG_WEB case EShLangTessControl: return "tessellation control"; case EShLangTessEvaluation: return "tessellation evaluation"; case EShLangGeometry: return "geometry"; @@ -695,7 +679,6 @@ const char* StageName(EShLanguage stage) case EShLangCallable: return "callable"; case EShLangMesh: return "mesh"; case EShLangTask: return "task"; -#endif default: return "unknown stage"; } } @@ -720,7 +703,6 @@ void TParseVersions::requireStage(const TSourceLoc& loc, EShLanguage stage, cons requireStage(loc, static_cast(1 << stage), featureDesc); } -#ifndef GLSLANG_WEB // // When to use requireProfile(): // @@ -758,7 +740,6 @@ void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int { if (profile & profileMask) { bool okay = minVersion > 0 && version >= minVersion; -#ifndef GLSLANG_WEB for (int i = 0; i < numExtensions; ++i) { switch (getExtensionBehavior(extensions[i])) { case EBhWarn: @@ -771,7 +752,6 @@ void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int default: break; // some compilers want this } } -#endif if (! okay) error(loc, "not supported for this version or the enabled extensions", featureDesc, ""); } @@ -1362,7 +1342,7 @@ void TParseVersions::coopmatCheck(const TSourceLoc& loc, const char* op, bool bu requireExtensions(loc, sizeof(extensions)/sizeof(extensions[0]), extensions, op); } } -#endif // GLSLANG_WEB + // Call for any operation removed because SPIR-V is in use. void TParseVersions::spvRemoved(const TSourceLoc& loc, const char* op) { @@ -1380,26 +1360,20 @@ void TParseVersions::vulkanRemoved(const TSourceLoc& loc, const char* op) // Call for any operation that requires Vulkan. void TParseVersions::requireVulkan(const TSourceLoc& loc, const char* op) { -#ifndef GLSLANG_WEB if (spvVersion.vulkan == 0) error(loc, "only allowed when using GLSL for Vulkan", op, ""); -#endif } // Call for any operation that requires SPIR-V. void TParseVersions::requireSpv(const TSourceLoc& loc, const char* op) { -#ifndef GLSLANG_WEB if (spvVersion.spv == 0) error(loc, "only allowed when generating SPIR-V", op, ""); -#endif } void TParseVersions::requireSpv(const TSourceLoc& loc, const char *op, unsigned int version) { -#ifndef GLSLANG_WEB if (spvVersion.spv < version) error(loc, "not supported for current targeted SPIR-V version", op, ""); -#endif } } // end namespace glslang diff --git a/glslang/MachineIndependent/attribute.cpp b/glslang/MachineIndependent/attribute.cpp index df7fdc2a60..21ef736870 100644 --- a/glslang/MachineIndependent/attribute.cpp +++ b/glslang/MachineIndependent/attribute.cpp @@ -34,8 +34,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#ifndef GLSLANG_WEB - #include "attribute.h" #include "../Include/intermediate.h" #include "ParseHelper.h" @@ -367,5 +365,3 @@ void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttri } } // end namespace glslang - -#endif // GLSLANG_WEB diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 index 387ef25221..7463581ae8 100644 --- a/glslang/MachineIndependent/glslang.m4 +++ b/glslang/MachineIndependent/glslang.m4 @@ -42,26 +42,9 @@ // The .y bison file is not a source file, it is a derivative of the .m4 file. // The m4 file needs to be processed by m4 to generate the .y bison file. // -// Code sandwiched between a pair: -// -// GLSLANG_WEB_EXCLUDE_ON -// ... -// ... -// ... -// GLSLANG_WEB_EXCLUDE_OFF -// -// Will be excluded from the grammar when m4 is executed as: -// -// m4 -P -DGLSLANG_WEB -// -// It will be included when m4 is executed as: -// // m4 -P // -m4_define(`GLSLANG_WEB_EXCLUDE_ON', `m4_ifdef(`GLSLANG_WEB', `m4_divert(`-1')')') -m4_define(`GLSLANG_WEB_EXCLUDE_OFF', `m4_ifdef(`GLSLANG_WEB', `m4_divert')') - /** * This is bison grammar and productions for parsing all versions of the * GLSL shading languages. @@ -177,8 +160,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY %token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY -GLSLANG_WEB_EXCLUDE_ON - %token ATTRIBUTE VARYING %token FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T %token INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T @@ -282,8 +263,6 @@ GLSLANG_WEB_EXCLUDE_ON %token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL %token ATTACHMENTEXT IATTACHMENTEXT UATTACHMENTEXT -GLSLANG_WEB_EXCLUDE_OFF - %token LEFT_OP RIGHT_OP %token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN @@ -309,7 +288,6 @@ GLSLANG_WEB_EXCLUDE_OFF %token UNIFORM SHARED BUFFER TILEIMAGEEXT %token FLAT SMOOTH LAYOUT -GLSLANG_WEB_EXCLUDE_ON %token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE @@ -320,7 +298,6 @@ GLSLANG_WEB_EXCLUDE_ON %token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT %token PRECISE -GLSLANG_WEB_EXCLUDE_OFF %type assignment_operator unary_operator %type variable_identifier primary_expression postfix_expression @@ -367,7 +344,6 @@ GLSLANG_WEB_EXCLUDE_OFF %type identifier_list -GLSLANG_WEB_EXCLUDE_ON %type precise_qualifier non_uniform_qualifier %type type_name_list %type attribute attribute_list single_attribute @@ -386,7 +362,6 @@ GLSLANG_WEB_EXCLUDE_ON %type spirv_type_parameter_list spirv_type_parameter %type spirv_instruction_qualifier %type spirv_instruction_qualifier_list spirv_instruction_qualifier_id -GLSLANG_WEB_EXCLUDE_OFF %start translation_unit %% @@ -419,7 +394,6 @@ primary_expression | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } -GLSLANG_WEB_EXCLUDE_ON | STRING_LITERAL { $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); } @@ -457,7 +431,6 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.float16Check($1.loc, "half float literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); } -GLSLANG_WEB_EXCLUDE_OFF ; postfix_expression @@ -583,13 +556,11 @@ function_identifier $$.function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -GLSLANG_WEB_EXCLUDE_ON | non_uniform_qualifier { // Constructor $$.intermNode = 0; $$.function = parseContext.handleConstructorCall($1.loc, $1); } -GLSLANG_WEB_EXCLUDE_OFF ; unary_expression @@ -899,7 +870,6 @@ declaration $$ = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -GLSLANG_WEB_EXCLUDE_ON | spirv_instruction_qualifier function_prototype SEMICOLON { parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier @@ -912,7 +882,6 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); $$ = 0; } -GLSLANG_WEB_EXCLUDE_OFF | init_declarator_list SEMICOLON { if ($1.intermNode && $1.intermNode->getAsAggregate()) $1.intermNode->getAsAggregate()->setOperator(EOpSequence); @@ -1182,9 +1151,7 @@ single_declaration : fully_specified_type { $$.type = $1; $$.intermNode = 0; -GLSLANG_WEB_EXCLUDE_ON parseContext.declareTypeDefaults($$.loc, $$.type); -GLSLANG_WEB_EXCLUDE_OFF } | fully_specified_type IDENTIFIER { $$.type = $1; @@ -1270,7 +1237,6 @@ interpolation_qualifier $$.init($1.loc); $$.qualifier.flat = true; } -GLSLANG_WEB_EXCLUDE_ON | NOPERSPECTIVE { parseContext.globalCheck($1.loc, "noperspective"); parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -1335,7 +1301,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc); $$.qualifier.perTaskNV = true; } -GLSLANG_WEB_EXCLUDE_OFF ; layout_qualifier @@ -1370,7 +1335,6 @@ layout_qualifier_id } ; -GLSLANG_WEB_EXCLUDE_ON precise_qualifier : PRECISE { parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); @@ -1379,7 +1343,6 @@ precise_qualifier $$.qualifier.noContraction = true; } ; -GLSLANG_WEB_EXCLUDE_OFF type_qualifier : single_type_qualifier { @@ -1414,7 +1377,6 @@ single_type_qualifier // allow inheritance of storage qualifier from block declaration $$ = $1; } -GLSLANG_WEB_EXCLUDE_ON | precise_qualifier { // allow inheritance of storage qualifier from block declaration $$ = $1; @@ -1441,7 +1403,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc); $$.qualifier.setSpirvLiteral(); } -GLSLANG_WEB_EXCLUDE_OFF ; storage_qualifier @@ -1496,7 +1457,6 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqBuffer; } -GLSLANG_WEB_EXCLUDE_ON | ATTRIBUTE { parseContext.requireStage($1.loc, EShLangVertex, "attribute"); parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); @@ -1689,10 +1649,8 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc); $$.qualifier.storage = EvqtaskPayloadSharedEXT; } -GLSLANG_WEB_EXCLUDE_OFF ; -GLSLANG_WEB_EXCLUDE_ON non_uniform_qualifier : NONUNIFORM { $$.init($1.loc); @@ -1710,7 +1668,6 @@ type_name_list // 2) save all of the identifiers for future comparison with the declared function } ; -GLSLANG_WEB_EXCLUDE_OFF type_specifier : type_specifier_nonarray type_parameter_specifier_opt { @@ -1940,7 +1897,6 @@ type_specifier_nonarray $$.basicType = EbtFloat; $$.setMatrix(4, 4); } -GLSLANG_WEB_EXCLUDE_ON | DOUBLE { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -2559,7 +2515,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D); } -GLSLANG_WEB_EXCLUDE_OFF | SAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2595,7 +2550,6 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, true, true); } -GLSLANG_WEB_EXCLUDE_ON | SAMPLER1DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2704,7 +2658,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd1D); } -GLSLANG_WEB_EXCLUDE_OFF | ISAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2740,7 +2693,6 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.set(EbtUint, EsdCube); } -GLSLANG_WEB_EXCLUDE_ON | ISAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2781,7 +2733,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, EsdCube, true); } -GLSLANG_WEB_EXCLUDE_OFF | USAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2857,7 +2808,6 @@ GLSLANG_WEB_EXCLUDE_OFF $$.basicType = EbtSampler; $$.sampler.setPureSampler(true); } -GLSLANG_WEB_EXCLUDE_ON | SAMPLER2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -3566,7 +3516,6 @@ GLSLANG_WEB_EXCLUDE_ON $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtHitObjectNV; } -GLSLANG_WEB_EXCLUDE_OFF | struct_specifier { $$ = $1; $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; @@ -3721,7 +3670,6 @@ initializer : assignment_expression { $$ = $1; } -GLSLANG_WEB_EXCLUDE_ON | LEFT_BRACE initializer_list RIGHT_BRACE { const char* initFeature = "{ } style initializers"; parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); @@ -3740,10 +3688,8 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); $$ = parseContext.intermediate.makeAggregate($1.loc); } -GLSLANG_WEB_EXCLUDE_OFF ; -GLSLANG_WEB_EXCLUDE_ON initializer_list : initializer { $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); @@ -3752,7 +3698,6 @@ initializer_list $$ = parseContext.intermediate.growAggregate($1, $3); } ; -GLSLANG_WEB_EXCLUDE_OFF declaration_statement : declaration { $$ = $1; } @@ -3773,12 +3718,9 @@ simple_statement | case_label { $$ = $1; } | iteration_statement { $$ = $1; } | jump_statement { $$ = $1; } -GLSLANG_WEB_EXCLUDE_ON | demote_statement { $$ = $1; } -GLSLANG_WEB_EXCLUDE_OFF ; -GLSLANG_WEB_EXCLUDE_ON demote_statement : DEMOTE SEMICOLON { parseContext.requireStage($1.loc, EShLangFragment, "demote"); @@ -3786,7 +3728,6 @@ demote_statement $$ = parseContext.intermediate.addBranch(EOpDemote, $1.loc); } ; -GLSLANG_WEB_EXCLUDE_OFF compound_statement : LEFT_BRACE RIGHT_BRACE { $$ = 0; } @@ -3870,13 +3811,11 @@ selection_statement : selection_statement_nonattributed { $$ = $1; } -GLSLANG_WEB_EXCLUDE_ON | attribute selection_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*$1, $2); $$ = $2; } -GLSLANG_WEB_EXCLUDE_OFF selection_statement_nonattributed : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { @@ -3918,13 +3857,11 @@ switch_statement : switch_statement_nonattributed { $$ = $1; } -GLSLANG_WEB_EXCLUDE_ON | attribute switch_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*$1, $2); $$ = $2; } -GLSLANG_WEB_EXCLUDE_OFF switch_statement_nonattributed : SWITCH LEFT_PAREN expression RIGHT_PAREN { @@ -3983,13 +3920,11 @@ iteration_statement : iteration_statement_nonattributed { $$ = $1; } -GLSLANG_WEB_EXCLUDE_ON | attribute iteration_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*$1, $2); $$ = $2; } -GLSLANG_WEB_EXCLUDE_OFF iteration_statement_nonattributed : WHILE LEFT_PAREN { @@ -4103,7 +4038,6 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); } -GLSLANG_WEB_EXCLUDE_ON | TERMINATE_RAY SEMICOLON { parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); @@ -4112,7 +4046,6 @@ GLSLANG_WEB_EXCLUDE_ON parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); } -GLSLANG_WEB_EXCLUDE_OFF ; // Grammar Note: No 'goto'. Gotos are not supported. @@ -4137,13 +4070,11 @@ external_declaration | declaration { $$ = $1; } -GLSLANG_WEB_EXCLUDE_ON | SEMICOLON { parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); $$ = nullptr; } -GLSLANG_WEB_EXCLUDE_OFF ; function_definition @@ -4187,7 +4118,6 @@ function_definition } ; -GLSLANG_WEB_EXCLUDE_ON attribute : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { $$ = $3; @@ -4208,9 +4138,7 @@ single_attribute | IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN { $$ = parseContext.makeAttributes(*$1.string, $3); } -GLSLANG_WEB_EXCLUDE_OFF -GLSLANG_WEB_EXCLUDE_ON spirv_requirements_list : spirv_requirements_parameter { $$ = $1; @@ -4487,6 +4415,5 @@ spirv_instruction_qualifier_id | IDENTIFIER EQUAL INTCONSTANT { $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i); } -GLSLANG_WEB_EXCLUDE_OFF %% diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 6f673a7800..7463581ae8 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -42,26 +42,9 @@ // The .y bison file is not a source file, it is a derivative of the .m4 file. // The m4 file needs to be processed by m4 to generate the .y bison file. // -// Code sandwiched between a pair: -// -// GLSLANG_WEB_EXCLUDE_ON -// ... -// ... -// ... -// GLSLANG_WEB_EXCLUDE_OFF -// -// Will be excluded from the grammar when m4 is executed as: -// -// m4 -P -DGLSLANG_WEB -// -// It will be included when m4 is executed as: -// // m4 -P // - - - /** * This is bison grammar and productions for parsing all versions of the * GLSL shading languages. @@ -177,8 +160,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY %token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY - - %token ATTRIBUTE VARYING %token FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T %token INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T @@ -282,8 +263,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL %token ATTACHMENTEXT IATTACHMENTEXT UATTACHMENTEXT - - %token LEFT_OP RIGHT_OP %token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP %token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN @@ -309,7 +288,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %token UNIFORM SHARED BUFFER TILEIMAGEEXT %token FLAT SMOOTH LAYOUT - %token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT %token INT64CONSTANT UINT64CONSTANT %token SUBROUTINE DEMOTE @@ -321,7 +299,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT %token PRECISE - %type assignment_operator unary_operator %type variable_identifier primary_expression postfix_expression %type expression integer_expression assignment_expression @@ -367,7 +344,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %type identifier_list - %type precise_qualifier non_uniform_qualifier %type type_name_list %type attribute attribute_list single_attribute @@ -387,7 +363,6 @@ extern int yylex(YYSTYPE*, TParseContext&); %type spirv_instruction_qualifier %type spirv_instruction_qualifier_list spirv_instruction_qualifier_id - %start translation_unit %% @@ -419,7 +394,6 @@ primary_expression | BOOLCONSTANT { $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); } - | STRING_LITERAL { $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); } @@ -457,7 +431,6 @@ primary_expression parseContext.float16Check($1.loc, "half float literal"); $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); } - ; postfix_expression @@ -583,13 +556,11 @@ function_identifier $$.function = new TFunction(empty, TType(EbtVoid), EOpNull); } } - | non_uniform_qualifier { // Constructor $$.intermNode = 0; $$.function = parseContext.handleConstructorCall($1.loc, $1); } - ; unary_expression @@ -899,7 +870,6 @@ declaration $$ = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } - | spirv_instruction_qualifier function_prototype SEMICOLON { parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier @@ -912,7 +882,6 @@ declaration parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); $$ = 0; } - | init_declarator_list SEMICOLON { if ($1.intermNode && $1.intermNode->getAsAggregate()) $1.intermNode->getAsAggregate()->setOperator(EOpSequence); @@ -1182,9 +1151,7 @@ single_declaration : fully_specified_type { $$.type = $1; $$.intermNode = 0; - parseContext.declareTypeDefaults($$.loc, $$.type); - } | fully_specified_type IDENTIFIER { $$.type = $1; @@ -1270,7 +1237,6 @@ interpolation_qualifier $$.init($1.loc); $$.qualifier.flat = true; } - | NOPERSPECTIVE { parseContext.globalCheck($1.loc, "noperspective"); parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -1335,7 +1301,6 @@ interpolation_qualifier $$.init($1.loc); $$.qualifier.perTaskNV = true; } - ; layout_qualifier @@ -1370,7 +1335,6 @@ layout_qualifier_id } ; - precise_qualifier : PRECISE { parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); @@ -1380,7 +1344,6 @@ precise_qualifier } ; - type_qualifier : single_type_qualifier { $$ = $1; @@ -1414,7 +1377,6 @@ single_type_qualifier // allow inheritance of storage qualifier from block declaration $$ = $1; } - | precise_qualifier { // allow inheritance of storage qualifier from block declaration $$ = $1; @@ -1441,7 +1403,6 @@ single_type_qualifier $$.init($1.loc); $$.qualifier.setSpirvLiteral(); } - ; storage_qualifier @@ -1496,7 +1457,6 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqBuffer; } - | ATTRIBUTE { parseContext.requireStage($1.loc, EShLangVertex, "attribute"); parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); @@ -1689,10 +1649,8 @@ storage_qualifier $$.init($1.loc); $$.qualifier.storage = EvqtaskPayloadSharedEXT; } - ; - non_uniform_qualifier : NONUNIFORM { $$.init($1.loc); @@ -1711,7 +1669,6 @@ type_name_list } ; - type_specifier : type_specifier_nonarray type_parameter_specifier_opt { $$ = $1; @@ -1940,7 +1897,6 @@ type_specifier_nonarray $$.basicType = EbtFloat; $$.setMatrix(4, 4); } - | DOUBLE { parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -2559,7 +2515,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd1D); } - | SAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2595,7 +2550,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtFloat, Esd2D, true, true); } - | SAMPLER1DSHADOW { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2704,7 +2658,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtInt, Esd1D); } - | ISAMPLER2D { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2740,7 +2693,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.set(EbtUint, EsdCube); } - | ISAMPLER1DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2781,7 +2733,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setTexture(EbtUint, EsdCube, true); } - | USAMPLER2DARRAY { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -2857,7 +2808,6 @@ type_specifier_nonarray $$.basicType = EbtSampler; $$.sampler.setPureSampler(true); } - | SAMPLER2DRECT { $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtSampler; @@ -3566,7 +3516,6 @@ type_specifier_nonarray $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); $$.basicType = EbtHitObjectNV; } - | struct_specifier { $$ = $1; $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; @@ -3721,7 +3670,6 @@ initializer : assignment_expression { $$ = $1; } - | LEFT_BRACE initializer_list RIGHT_BRACE { const char* initFeature = "{ } style initializers"; parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); @@ -3740,10 +3688,8 @@ initializer parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); $$ = parseContext.intermediate.makeAggregate($1.loc); } - ; - initializer_list : initializer { $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); @@ -3753,7 +3699,6 @@ initializer_list } ; - declaration_statement : declaration { $$ = $1; } ; @@ -3773,12 +3718,9 @@ simple_statement | case_label { $$ = $1; } | iteration_statement { $$ = $1; } | jump_statement { $$ = $1; } - | demote_statement { $$ = $1; } - ; - demote_statement : DEMOTE SEMICOLON { parseContext.requireStage($1.loc, EShLangFragment, "demote"); @@ -3787,7 +3729,6 @@ demote_statement } ; - compound_statement : LEFT_BRACE RIGHT_BRACE { $$ = 0; } | LEFT_BRACE { @@ -3870,14 +3811,12 @@ selection_statement : selection_statement_nonattributed { $$ = $1; } - | attribute selection_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*$1, $2); $$ = $2; } - selection_statement_nonattributed : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { parseContext.boolCheck($1.loc, $3); @@ -3918,14 +3857,12 @@ switch_statement : switch_statement_nonattributed { $$ = $1; } - | attribute switch_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*$1, $2); $$ = $2; } - switch_statement_nonattributed : SWITCH LEFT_PAREN expression RIGHT_PAREN { // start new switch sequence on the switch stack @@ -3983,14 +3920,12 @@ iteration_statement : iteration_statement_nonattributed { $$ = $1; } - | attribute iteration_statement_nonattributed { parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*$1, $2); $$ = $2; } - iteration_statement_nonattributed : WHILE LEFT_PAREN { if (! parseContext.limits.whileLoops) @@ -4103,7 +4038,6 @@ jump_statement parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); } - | TERMINATE_RAY SEMICOLON { parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); @@ -4112,7 +4046,6 @@ jump_statement parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); } - ; // Grammar Note: No 'goto'. Gotos are not supported. @@ -4137,13 +4070,11 @@ external_declaration | declaration { $$ = $1; } - | SEMICOLON { parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); $$ = nullptr; } - ; function_definition @@ -4187,7 +4118,6 @@ function_definition } ; - attribute : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { $$ = $3; @@ -4209,8 +4139,6 @@ single_attribute $$ = parseContext.makeAttributes(*$1.string, $3); } - - spirv_requirements_list : spirv_requirements_parameter { $$ = $1; @@ -4488,5 +4416,4 @@ spirv_instruction_qualifier_id $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i); } - %% diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 007aa037f8..d5fc26bbf2 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -36,8 +36,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) - #include "localintermediate.h" #include "../Include/InfoSink.h" @@ -669,9 +667,7 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpDeclare: out.debug << "Declare"; break; -#ifndef GLSLANG_WEB case EOpSpirvInst: out.debug << "spirv_instruction"; break; -#endif default: out.debug.message(EPrefixError, "Bad unary op"); } @@ -1146,9 +1142,7 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpHitObjectGetShaderRecordBufferHandleNV: out.debug << "HitObjectReadShaderRecordBufferHandleNV"; break; case EOpReorderThreadNV: out.debug << "ReorderThreadNV"; break; -#ifndef GLSLANG_WEB case EOpSpirvInst: out.debug << "spirv_instruction"; break; -#endif case EOpStencilAttachmentReadEXT: out.debug << "stencilAttachmentReadEXT"; break; case EOpDepthAttachmentReadEXT: out.debug << "depthAttachmentReadEXT"; break; @@ -1611,5 +1605,3 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) } } // end namespace glslang - -#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index efb26b83db..63dedf76c6 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -33,8 +33,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) - #include "../Include/Common.h" #include "../Include/InfoSink.h" #include "../Include/Types.h" @@ -1714,5 +1712,3 @@ bool TGlslIoMapper::doMap(TIoMapResolver* resolver, TInfoSink& infoSink) { } } // end namespace glslang - -#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 464d73eaca..35babbce1b 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -33,8 +33,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) - #ifndef _IOMAPPER_INCLUDED #define _IOMAPPER_INCLUDED @@ -359,5 +357,3 @@ class TGlslIoMapper : public TIoMapper { } // end namespace glslang #endif // _IOMAPPER_INCLUDED - -#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/limits.cpp b/glslang/MachineIndependent/limits.cpp index 391570579d..4404beca4f 100644 --- a/glslang/MachineIndependent/limits.cpp +++ b/glslang/MachineIndependent/limits.cpp @@ -187,14 +187,12 @@ bool TIndexTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node) // void TParseContext::constantIndexExpressionCheck(TIntermNode* index) { -#ifndef GLSLANG_WEB TIndexTraverser it(inductiveLoopIds); index->traverse(&it); if (it.bad) error(it.badLoc, "Non-constant-index-expression", "limitations", ""); -#endif } } // end namespace glslang diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index bbfa0223d8..d69300b84d 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -57,13 +57,11 @@ namespace glslang { // void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { -#ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixError); if (unitStage < EShLangCount) infoSink.info << "Linking " << StageName(getStage()) << " and " << StageName(unitStage) << " stages: " << message << "\n"; else infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; -#endif ++numErrors; } @@ -71,13 +69,11 @@ void TIntermediate::error(TInfoSink& infoSink, const char* message, EShLanguage // Link-time warning. void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage unitStage) { -#ifndef GLSLANG_WEB infoSink.info.prefix(EPrefixWarning); if (unitStage < EShLangCount) infoSink.info << "Linking " << StageName(language) << " and " << StageName(unitStage) << " stages: " << message << "\n"; else infoSink.info << "Linking " << StageName(language) << " stage: " << message << "\n"; -#endif } // TODO: 4.4 offset/align: "Two blocks linked together in the same program with the same block @@ -89,11 +85,9 @@ void TIntermediate::warn(TInfoSink& infoSink, const char* message, EShLanguage u // void TIntermediate::merge(TInfoSink& infoSink, TIntermediate& unit) { -#if !defined(GLSLANG_WEB) mergeCallGraphs(infoSink, unit); mergeModes(infoSink, unit); mergeTrees(infoSink, unit); -#endif } // @@ -161,8 +155,6 @@ void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) callGraph.insert(callGraph.end(), unit.callGraph.begin(), unit.callGraph.end()); } -#if !defined(GLSLANG_WEB) - #define MERGE_MAX(member) member = std::max(member, unit.member) #define MERGE_TRUE(member) if (unit.member) member = unit.member; @@ -381,8 +373,6 @@ void TIntermediate::mergeTrees(TInfoSink& infoSink, TIntermediate& unit) ioAccessed.insert(unit.ioAccessed.begin(), unit.ioAccessed.end()); } -#endif - static const TString& getNameForIdMap(TIntermSymbol* symbol) { TShaderInterface si = symbol->getType().getShaderInterface(); @@ -859,7 +849,6 @@ void TIntermediate::mergeImplicitArraySizes(TType& type, const TType& unitType) // void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& symbol, const TIntermSymbol& unitSymbol, EShLanguage unitStage) { -#if !defined(GLSLANG_WEB) bool crossStage = getStage() != unitStage; bool writeTypeComparison = false; bool errorReported = false; @@ -1187,7 +1176,6 @@ void TIntermediate::mergeErrorCheck(TInfoSink& infoSink, const TIntermSymbol& sy } } } -#endif } void TIntermediate::sharedBlockCheck(TInfoSink& infoSink) @@ -1234,7 +1222,6 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) // overlap/alias/missing I/O, etc. inOutLocationCheck(infoSink); -#ifndef GLSLANG_WEB if (getNumPushConstants() > 1) error(infoSink, "Only one push_constant block is allowed per stage"); @@ -1392,7 +1379,6 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) } finalLinkTraverser; treeRoot->traverse(&finalLinkTraverser); -#endif } // @@ -1687,7 +1673,6 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // For raytracing IO (payloads and callabledata) each declaration occupies a single // slot irrespective of type. int collision = -1; // no collision -#ifndef GLSLANG_WEB if (qualifier.isAnyPayload() || qualifier.isAnyCallable() || qualifier.isHitObjectAttrNV()) { TRange range(qualifier.layoutLocation, qualifier.layoutLocation); collision = checkLocationRT(set, qualifier.layoutLocation); @@ -1723,7 +1708,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ } return collision; } -#endif + // Not a dvec3 in/out split across two locations, generic path. // Need a single IO-range block. @@ -1846,10 +1831,8 @@ int TIntermediate::computeTypeLocationSize(const TType& type, EShLanguage stage) if (type.isSizedArray() && !type.getQualifier().isPerView()) return type.getOuterArraySize() * computeTypeLocationSize(elementType, stage); else { -#ifndef GLSLANG_WEB // unset perViewNV attributes for arrayed per-view outputs: "perviewNV vec4 v[MAX_VIEWS][3];" elementType.getQualifier().perViewNV = false; -#endif return computeTypeLocationSize(elementType, stage); } } @@ -1925,8 +1908,6 @@ int TIntermediate::computeTypeUniformLocationSize(const TType& type) return 1; } -#ifndef GLSLANG_WEB - // Accumulate xfb buffer ranges and check for collisions as the accumulation is done. // // Returns < 0 if no collision, >= 0 if collision and the value returned is a colliding value. @@ -2044,8 +2025,6 @@ unsigned int TIntermediate::computeTypeXfbSize(const TType& type, bool& contains } } -#endif - const int baseAlignmentVec4Std140 = 16; // Return the size and alignment of a component of the given type. @@ -2053,10 +2032,6 @@ const int baseAlignmentVec4Std140 = 16; // Return value is the alignment.. int TIntermediate::getBaseAlignmentScalar(const TType& type, int& size) { -#ifdef GLSLANG_WEB - size = 4; return 4; -#endif - switch (type.getBasicType()) { case EbtInt64: case EbtUint64: @@ -2396,7 +2371,6 @@ int TIntermediate::computeBufferReferenceTypeSize(const TType& type) return size; } -#ifndef GLSLANG_WEB bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { return type.isArray() && ((language == EShLangGeometry && type.getQualifier().storage == EvqVaryingIn) || @@ -2408,6 +2382,5 @@ bool TIntermediate::isIoResizeArray(const TType& type, EShLanguage language) { (language == EShLangMesh && type.getQualifier().storage == EvqVaryingOut && !type.getQualifier().perTaskNV)); } -#endif // not GLSLANG_WEB } // end namespace glslang diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 2aa766a5e0..2f0e65ce39 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -147,7 +147,6 @@ struct TOffsetRange { TRange offset; }; -#ifndef GLSLANG_WEB // Things that need to be tracked per xfb buffer. struct TXfbBuffer { TXfbBuffer() : stride(TQualifier::layoutXfbStrideEnd), implicitStride(0), contains64BitType(false), @@ -159,7 +158,6 @@ struct TXfbBuffer { bool contains32BitType; bool contains16BitType; }; -#endif // Track a set of strings describing how the module was processed. // This includes command line options, transforms, etc., ideally inclusive enough @@ -311,9 +309,7 @@ class TIntermediate { atomicCounterBlockName(""), globalUniformBlockSet(TQualifier::layoutSetEnd), globalUniformBlockBinding(TQualifier::layoutBindingEnd), - atomicCounterBlockSet(TQualifier::layoutSetEnd) -#ifndef GLSLANG_WEB - , + atomicCounterBlockSet(TQualifier::layoutSetEnd), implicitThisName("@this"), implicitCounterName("@count"), source(EShSourceNone), useVulkanMemoryModel(false), @@ -352,7 +348,6 @@ class TIntermediate { spirvRequirement(nullptr), spirvExecutionMode(nullptr), uniformLocationBase(0) -#endif { localSize[0] = 1; localSize[1] = 1; @@ -363,10 +358,8 @@ class TIntermediate { localSizeSpecId[0] = TQualifier::layoutNotSet; localSizeSpecId[1] = TQualifier::layoutNotSet; localSizeSpecId[2] = TQualifier::layoutNotSet; -#ifndef GLSLANG_WEB xfbBuffers.resize(TQualifier::layoutXfbBufferEnd); shiftBinding.fill(0); -#endif } void setVersion(int v) @@ -636,38 +629,6 @@ class TIntermediate { localSizeSpecId[1] != TQualifier::layoutNotSet || localSizeSpecId[2] != TQualifier::layoutNotSet; } -#ifdef GLSLANG_WEB - void output(TInfoSink&, bool tree) { } - - bool isEsProfile() const { return false; } - bool getXfbMode() const { return false; } - bool isMultiStream() const { return false; } - TLayoutGeometry getOutputPrimitive() const { return ElgNone; } - bool getNonCoherentColorAttachmentReadEXT() const { return false; } - bool getNonCoherentDepthAttachmentReadEXT() const { return false; } - bool getNonCoherentStencilAttachmentReadEXT() const { return false; } - bool getPostDepthCoverage() const { return false; } - bool getEarlyFragmentTests() const { return false; } - TLayoutDepth getDepth() const { return EldNone; } - bool getPixelCenterInteger() const { return false; } - void setOriginUpperLeft() { } - bool getOriginUpperLeft() const { return true; } - TInterlockOrdering getInterlockOrdering() const { return EioNone; } - - bool getAutoMapBindings() const { return false; } - bool getAutoMapLocations() const { return false; } - int getNumPushConstants() const { return 0; } - void addShaderRecordCount() { } - void addTaskNVCount() { } - void addTaskPayloadEXTCount() { } - void setUseVulkanMemoryModel() { } - bool usingVulkanMemoryModel() const { return false; } - bool usingPhysicalStorageBuffer() const { return false; } - bool usingVariablePointers() const { return false; } - unsigned getXfbStride(int buffer) const { return 0; } - bool hasLayoutDerivativeModeNone() const { return false; } - ComputeDerivativeMode getLayoutDerivativeModeNone() const { return LayoutDerivativeNone; } -#else void output(TInfoSink&, bool tree); bool isEsProfile() const { return profile == EEsProfile; } @@ -1006,7 +967,6 @@ class TIntermediate { void insertSpirvExecutionModeId(int executionMode, const TIntermAggregate* args); bool hasSpirvExecutionMode() const { return spirvExecutionMode != nullptr; } const TSpirvExecutionMode& getSpirvExecutionMode() const { return *spirvExecutionMode; } -#endif // GLSLANG_WEB void addBlockStorageOverride(const char* nameStr, TBlockStorageClass backing) { @@ -1113,12 +1073,6 @@ class TIntermediate { void setUniqueId(unsigned long long id) { uniqueId = id; } // Certain explicit conversions are allowed conditionally -#ifdef GLSLANG_WEB - bool getArithemeticInt8Enabled() const { return false; } - bool getArithemeticInt16Enabled() const { return false; } - bool getArithemeticFloat16Enabled() const { return false; } - void updateNumericFeature(TNumericFeatures::feature f, bool on) { } -#else bool getArithemeticInt8Enabled() const { return numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types) || numericFeatures.contains(TNumericFeatures::shader_explicit_arithmetic_types_int8); @@ -1136,7 +1090,6 @@ class TIntermediate { } void updateNumericFeature(TNumericFeatures::feature f, bool on) { on ? numericFeatures.insert(f) : numericFeatures.erase(f); } -#endif protected: TIntermSymbol* addSymbol(long long Id, const TString&, const TType&, const TConstUnionArray&, TIntermTyped* subtree, const TSourceLoc&); @@ -1208,7 +1161,6 @@ class TIntermediate { unsigned int globalUniformBlockBinding; unsigned int atomicCounterBlockSet; -#ifndef GLSLANG_WEB public: const char* const implicitThisName; const char* const implicitCounterName; @@ -1279,7 +1231,6 @@ class TIntermediate { std::unordered_map uniformLocationOverrides; int uniformLocationBase; TNumericFeatures numericFeatures; -#endif std::unordered_map blockBackingOverrides; std::unordered_set usedConstantId; // specialization constant ids used diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index d0507d361c..63841c408a 100644 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -58,10 +58,8 @@ class TParseVersions { const SpvVersion& spvVersion, EShLanguage language, TInfoSink& infoSink, bool forwardCompatible, EShMessages messages) : -#if !defined(GLSLANG_WEB) forwardCompatible(forwardCompatible), profile(profile), -#endif infoSink(infoSink), version(version), language(language), spvVersion(spvVersion), @@ -69,54 +67,7 @@ class TParseVersions { virtual ~TParseVersions() { } void requireStage(const TSourceLoc&, EShLanguageMask, const char* featureDesc); void requireStage(const TSourceLoc&, EShLanguage, const char* featureDesc); -#ifdef GLSLANG_WEB - const EProfile profile = EEsProfile; - bool isEsProfile() const { return true; } - void requireProfile(const TSourceLoc& loc, int profileMask, const char* featureDesc) - { - if (! (EEsProfile & profileMask)) - error(loc, "not supported with this profile:", featureDesc, ProfileName(profile)); - } - void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, int numExtensions, - const char* const extensions[], const char* featureDesc) - { - if ((EEsProfile & profileMask) && (minVersion == 0 || version < minVersion)) - error(loc, "not supported for this version or the enabled extensions", featureDesc, ""); - } - void profileRequires(const TSourceLoc& loc, int profileMask, int minVersion, const char* extension, - const char* featureDesc) - { - profileRequires(loc, profileMask, minVersion, extension ? 1 : 0, &extension, featureDesc); - } - void initializeExtensionBehavior() { } - void checkDeprecated(const TSourceLoc&, int queryProfiles, int depVersion, const char* featureDesc) { } - void requireNotRemoved(const TSourceLoc&, int queryProfiles, int removedVersion, const char* featureDesc) { } - void requireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], - const char* featureDesc) { } - void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], - const char* featureDesc) { } - TExtensionBehavior getExtensionBehavior(const char*) { return EBhMissing; } - bool extensionTurnedOn(const char* const extension) { return false; } - bool extensionsTurnedOn(int numExtensions, const char* const extensions[]) { return false; } - void updateExtensionBehavior(int line, const char* const extension, const char* behavior) { } - void updateExtensionBehavior(const char* const extension, TExtensionBehavior) { } - void checkExtensionStage(const TSourceLoc&, const char* const extension) { } - void extensionRequires(const TSourceLoc&, const char* const extension, const char* behavior) { } - void fullIntegerCheck(const TSourceLoc&, const char* op) { } - void doubleCheck(const TSourceLoc&, const char* op) { } - bool float16Arithmetic() { return false; } - void requireFloat16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { } - bool int16Arithmetic() { return false; } - void requireInt16Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { } - bool int8Arithmetic() { return false; } - void requireInt8Arithmetic(const TSourceLoc& loc, const char* op, const char* featureDesc) { } - void int64Check(const TSourceLoc&, const char* op, bool builtIn = false) { } - void explicitFloat32Check(const TSourceLoc&, const char* op, bool builtIn = false) { } - void explicitFloat64Check(const TSourceLoc&, const char* op, bool builtIn = false) { } - bool relaxedErrors() const { return false; } - bool suppressWarnings() const { return true; } - bool isForwardCompatible() const { return false; } -#else + bool forwardCompatible; // true if errors are to be given for use of deprecated features EProfile profile; // the declared profile in the shader (core by default) bool isEsProfile() const { return profile == EEsProfile; } @@ -168,24 +119,13 @@ class TParseVersions { bool relaxedErrors() const { return (messages & EShMsgRelaxedErrors) != 0; } bool suppressWarnings() const { return (messages & EShMsgSuppressWarnings) != 0; } bool isForwardCompatible() const { return forwardCompatible; } -#endif // GLSLANG_WEB + virtual void spvRemoved(const TSourceLoc&, const char* op); virtual void vulkanRemoved(const TSourceLoc&, const char* op); virtual void requireVulkan(const TSourceLoc&, const char* op); virtual void requireSpv(const TSourceLoc&, const char* op); virtual void requireSpv(const TSourceLoc&, const char *op, unsigned int version); - -#if defined(GLSLANG_WEB) && !defined(GLSLANG_WEB_DEVEL) - void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) { addError(); } - void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) { } - void C_DECL ppError(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) { addError(); } - void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, - const char* szExtraInfoFormat, ...) { } -#else virtual void C_DECL error(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; virtual void C_DECL warn(const TSourceLoc&, const char* szReason, const char* szToken, @@ -194,7 +134,6 @@ class TParseVersions { const char* szExtraInfoFormat, ...) = 0; virtual void C_DECL ppWarn(const TSourceLoc&, const char* szReason, const char* szToken, const char* szExtraInfoFormat, ...) = 0; -#endif void addError() { ++numErrors; } int getNumErrors() const { return numErrors; } diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index d5a710918f..8d2e85f0be 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -736,7 +736,6 @@ int TPpContext::CPPline(TPpToken* ppToken) parseContext.setCurrentLine(lineRes); if (token != '\n') { -#ifndef GLSLANG_WEB if (token == PpAtomConstString) { parseContext.ppRequireExtensions(directiveLoc, 1, &E_GL_GOOGLE_cpp_style_line_directive, "filename-based #line"); // We need to save a copy of the string instead of pointing @@ -746,9 +745,7 @@ int TPpContext::CPPline(TPpToken* ppToken) parseContext.setCurrentSourceName(sourceName); hasFile = true; token = scanToken(ppToken); - } else -#endif - { + } else { token = eval(token, MIN_PRECEDENCE, false, fileRes, fileErr, ppToken); if (! fileErr) { parseContext.setCurrentString(fileRes); @@ -974,7 +971,6 @@ int TPpContext::readCPPline(TPpToken* ppToken) case PpAtomLine: token = CPPline(ppToken); break; -#ifndef GLSLANG_WEB case PpAtomInclude: if(!parseContext.isReadingHLSL()) { parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_include_directive, "#include"); @@ -984,7 +980,6 @@ int TPpContext::readCPPline(TPpToken* ppToken) case PpAtomPragma: token = CPPpragma(ppToken); break; -#endif case PpAtomUndef: token = CPPundef(ppToken); break; diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index 25b9bbd098..34dec20769 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -260,7 +260,6 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) // Suffix: bool isDouble = false; bool isFloat16 = false; -#ifndef GLSLANG_WEB if (ch == 'l' || ch == 'L') { if (ifdepth == 0 && parseContext.intermediate.getSource() == EShSourceGlsl) parseContext.doubleCheck(ppToken->loc, "double floating-point suffix"); @@ -300,14 +299,11 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) isFloat16 = true; } } else -#endif if (ch == 'f' || ch == 'F') { -#ifndef GLSLANG_WEB if (ifdepth == 0) parseContext.profileRequires(ppToken->loc, EEsProfile, 300, nullptr, "floating-point suffix"); if (ifdepth == 0 && !parseContext.relaxedErrors()) parseContext.profileRequires(ppToken->loc, ~EEsProfile, 120, nullptr, "floating-point suffix"); -#endif if (ifdepth == 0 && !hasDecimalOrExponent) parseContext.ppError(ppToken->loc, "float literal needs a decimal point or exponent", "", ""); saveName(ch); @@ -583,7 +579,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ppToken->name[len++] = (char)ch; isUnsigned = true; -#ifndef GLSLANG_WEB int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) @@ -609,7 +604,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; -#endif } else ungetch(); ppToken->name[len] = '\0'; @@ -687,7 +681,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ppToken->name[len++] = (char)ch; isUnsigned = true; -#ifndef GLSLANG_WEB int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) @@ -713,7 +706,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; -#endif } else { ungetch(); } @@ -795,7 +787,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ppToken->name[len++] = (char)ch; isUnsigned = true; -#ifndef GLSLANG_WEB int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) @@ -821,7 +812,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; -#endif } else ungetch(); ppToken->name[len] = '\0'; @@ -884,7 +874,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) ppToken->name[len++] = (char)ch; isUnsigned = true; -#ifndef GLSLANG_WEB int nextCh = getch(); if (nextCh == 'l' || nextCh == 'L') { if (len < MaxTokenLength) @@ -910,7 +899,6 @@ int TPpContext::tStringInput::scan(TPpToken* ppToken) if (len < MaxTokenLength) ppToken->name[len++] = (char)ch; isInt16 = true; -#endif } else ungetch(); diff --git a/glslang/MachineIndependent/preprocessor/PpTokens.cpp b/glslang/MachineIndependent/preprocessor/PpTokens.cpp index 121bfca312..e6ee64cf9e 100644 --- a/glslang/MachineIndependent/preprocessor/PpTokens.cpp +++ b/glslang/MachineIndependent/preprocessor/PpTokens.cpp @@ -113,7 +113,6 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken int atom = stream[currentPos++].get(*ppToken); ppToken->loc = parseContext.getCurrentLoc(); -#ifndef GLSLANG_WEB // Check for ##, unless the current # is the last character if (atom == '#') { if (peekToken('#')) { @@ -123,7 +122,6 @@ int TPpContext::TokenStream::getToken(TParseContextBase& parseContext, TPpToken atom = PpAtomPaste; } } -#endif return atom; } diff --git a/glslang/MachineIndependent/propagateNoContraction.cpp b/glslang/MachineIndependent/propagateNoContraction.cpp index 67102ba123..7b5cd03fa6 100644 --- a/glslang/MachineIndependent/propagateNoContraction.cpp +++ b/glslang/MachineIndependent/propagateNoContraction.cpp @@ -37,8 +37,6 @@ // propagate the 'noContraction' qualifier. // -#ifndef GLSLANG_WEB - #include "propagateNoContraction.h" #include @@ -866,5 +864,3 @@ void PropagateNoContraction(const glslang::TIntermediate& intermediate) } } } - -#endif // GLSLANG_WEB diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index 144f85bdb7..6c7d3a2c99 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -33,8 +33,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) - #include "../Include/Common.h" #include "reflection.h" #include "LiveTraverser.h" @@ -1270,5 +1268,3 @@ void TReflection::dump() } } // end namespace glslang - -#endif // !GLSLANG_WEB diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h index bfd5452666..221d93f8b5 100644 --- a/glslang/MachineIndependent/reflection.h +++ b/glslang/MachineIndependent/reflection.h @@ -33,8 +33,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -#if !defined(GLSLANG_WEB) - #ifndef _REFLECTION_INCLUDED #define _REFLECTION_INCLUDED @@ -219,5 +217,3 @@ class TReflection { } // end namespace glslang #endif // _REFLECTION_INCLUDED - -#endif // !GLSLANG_WEB diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 90a5302a82..e037e63f0b 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -728,8 +728,6 @@ class TShader { TShader& operator=(TShader&); }; -#if !defined(GLSLANG_WEB) - // // A reflection database and its interface, consistent with the OpenGL API reflection queries. // @@ -846,8 +844,6 @@ class TIoMapResolver virtual void addStage(EShLanguage stage, TIntermediate& stageIntermediate) = 0; }; -#endif // !GLSLANG_WEB - // Make one TProgram per set of shaders that will get linked together. Add all // the shaders that are to be linked together. After calling shader.parse() // for all shaders, call link(). @@ -867,8 +863,6 @@ class TProgram { TIntermediate* getIntermediate(EShLanguage stage) const { return intermediate[stage]; } -#if !defined(GLSLANG_WEB) - // Reflection Interface // call first, to do liveness analysis, index mapping, etc.; returns false on failure @@ -961,7 +955,6 @@ class TProgram { // If resolver is not provided it uses the previous approach // and respects auto assignment and offsets. GLSLANG_EXPORT bool mapIO(TIoMapResolver* pResolver = nullptr, TIoMapper* pIoMapper = nullptr); -#endif // !GLSLANG_WEB protected: GLSLANG_EXPORT bool linkStage(EShLanguage, EShMessages); @@ -972,9 +965,7 @@ class TProgram { TIntermediate* intermediate[EShLangCount]; bool newedIntermediate[EShLangCount]; // track which intermediate were "new" versus reusing a singleton unit in a stage TInfoSink* infoSink; -#if !defined(GLSLANG_WEB) TReflection* reflection; -#endif bool linked; private: diff --git a/glslang/updateGrammar b/glslang/updateGrammar index 9209493f38..4746d89dc6 100755 --- a/glslang/updateGrammar +++ b/glslang/updateGrammar @@ -33,17 +33,5 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -if [ "$1" = 'web' ] -then - m4 -P -DGLSLANG_WEB MachineIndependent/glslang.m4 > MachineIndependent/glslang.y -elif [ "$#" -eq 0 ] -then - m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y -else - echo usage: - echo $0 web - echo $0 - exit -fi - +m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp index aabb4ae203..1dba5c0c99 100644 --- a/gtests/GlslMapIO.FromFile.cpp +++ b/gtests/GlslMapIO.FromFile.cpp @@ -42,7 +42,6 @@ #include "glslang/MachineIndependent/iomapper.h" #include "glslang/MachineIndependent/reflection.h" -#ifndef GLSLANG_WEB namespace glslangtest { namespace { @@ -352,4 +351,3 @@ INSTANTIATE_TEST_SUITE_P( } // anonymous namespace } // namespace glslangtest -#endif diff --git a/gtests/Link.FromFile.Vk.cpp b/gtests/Link.FromFile.Vk.cpp index 6015c331ee..fed5d260cf 100644 --- a/gtests/Link.FromFile.Vk.cpp +++ b/gtests/Link.FromFile.Vk.cpp @@ -75,10 +75,8 @@ TEST_P(LinkTestVulkan, FromFile) result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); -#if !defined(GLSLANG_WEB) - if (success) - program.mapIO(); -#endif + if (success) + program.mapIO(); if (success && (controls & EShMsgSpvRules)) { spv::SpvBuildLogger logger; diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 962855c494..629179bdac 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -254,10 +254,8 @@ class GlslangTest : public GT { glslang::TProgram program; program.addShader(&shader); success &= program.link(controls); -#if !defined(GLSLANG_WEB) if (success) program.mapIO(); -#endif if (success && (controls & EShMsgSpvRules)) { spv::SpvBuildLogger logger; @@ -318,10 +316,8 @@ class GlslangTest : public GT { program.addShader(&shader); success &= program.link(controls); -#if !defined(GLSLANG_WEB) if (success) program.mapIO(); -#endif spv::SpvBuildLogger logger; @@ -363,10 +359,8 @@ class GlslangTest : public GT { glslang::TProgram program; program.addShader(&shader); success &= program.link(controls); -#if !defined(GLSLANG_WEB) if (success) program.mapIO(); -#endif if (success && (controls & EShMsgSpvRules)) { spv::SpvBuildLogger logger; diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp index 96cd3cf69a..67e5501714 100644 --- a/gtests/VkRelaxed.FromFile.cpp +++ b/gtests/VkRelaxed.FromFile.cpp @@ -42,7 +42,6 @@ #include "glslang/MachineIndependent/iomapper.h" #include "glslang/MachineIndependent/reflection.h" -#ifndef GLSLANG_WEB namespace glslangtest { namespace { @@ -303,4 +302,3 @@ INSTANTIATE_TEST_SUITE_P( } // anonymous namespace } // namespace glslangtest -#endif From 6bc35749ec5434c0a552646eeb567dc1b5f03e87 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 28 Jul 2023 11:53:30 -0600 Subject: [PATCH 253/594] Remove a stray GLSLANG_WEB ifdef --- glslang/MachineIndependent/ParseHelper.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index a2c908304d..b8c64e0985 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7225,7 +7225,6 @@ void TParseContext::declareTypeDefaults(const TSourceLoc& loc, const TPublicType void TParseContext::coopMatTypeParametersCheck(const TSourceLoc& loc, const TPublicType& publicType) { -#ifndef GLSLANG_WEB if (parsingBuiltins) return; if (publicType.isCoopmatKHR()) { @@ -7257,7 +7256,6 @@ void TParseContext::coopMatTypeParametersCheck(const TSourceLoc& loc, const TPub return; } } -#endif } bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType&, From 54726b3c1c5cb70043174365750ab0f1b7e1a6a0 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 28 Jul 2023 12:02:44 -0600 Subject: [PATCH 254/594] Remove glslang.m4 The m4 grammar build mechanism was only ever needed as a preprocessor for bison, to be used with GLSLANG_WEB, which has now been removed. Fixes #2958 --- README.md | 5 +- glslang/CMakeLists.txt | 1 - glslang/MachineIndependent/glslang.m4 | 4419 ------------------------- glslang/MachineIndependent/glslang.y | 8 - glslang/updateGrammar | 3 +- 5 files changed, 2 insertions(+), 4434 deletions(-) delete mode 100644 glslang/MachineIndependent/glslang.m4 diff --git a/README.md b/README.md index a27af38c9b..d153fa99f2 100644 --- a/README.md +++ b/README.md @@ -234,16 +234,13 @@ changes are quite infrequent. For windows you can get binaries from The command to rebuild is: ```bash -m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp ``` -The above commands are also available in the bash script in `updateGrammar`, +The above command is also available in the bash script in `updateGrammar`, when executed from the glslang subdirectory of the glslang repository. -With no arguments it builds the full grammar, and with a "web" argument, -the web grammar subset (see more about the web subset in the next section). ### Building to WASM for the Web and Node ### Building a standalone JS/WASM library for the Web and Node diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index f9ba5ebcbb..d4df9396ea 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -57,7 +57,6 @@ set_property(TARGET GenericCodeGen PROPERTY FOLDER glslang) # MachineIndependent ################################################################################ set(MACHINEINDEPENDENT_SOURCES - MachineIndependent/glslang.m4 MachineIndependent/glslang.y MachineIndependent/glslang_tab.cpp MachineIndependent/attribute.cpp diff --git a/glslang/MachineIndependent/glslang.m4 b/glslang/MachineIndependent/glslang.m4 deleted file mode 100644 index 7463581ae8..0000000000 --- a/glslang/MachineIndependent/glslang.m4 +++ /dev/null @@ -1,4419 +0,0 @@ -// -// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -// Copyright (C) 2012-2013 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. -// Copyright (C) 2015-2019 Google, Inc. -// Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// - -// -// Do not edit the .y file, only edit the .m4 file. -// The .y bison file is not a source file, it is a derivative of the .m4 file. -// The m4 file needs to be processed by m4 to generate the .y bison file. -// -// m4 -P -// - -/** - * This is bison grammar and productions for parsing all versions of the - * GLSL shading languages. - */ -%{ - -/* Based on: -ANSI C Yacc grammar - -In 1985, Jeff Lee published his Yacc grammar (which is accompanied by a -matching Lex specification) for the April 30, 1985 draft version of the -ANSI C standard. Tom Stockfisch reposted it to net.sources in 1987; that -original, as mentioned in the answer to question 17.25 of the comp.lang.c -FAQ, can be ftp'ed from ftp.uu.net, file usenet/net.sources/ansi.c.grammar.Z. - -I intend to keep this version as close to the current C Standard grammar as -possible; please let me know if you discover discrepancies. - -Jutta Degener, 1995 -*/ - -#include "SymbolTable.h" -#include "ParseHelper.h" -#include "../Public/ShaderLang.h" -#include "attribute.h" - -using namespace glslang; - -%} - -%define parse.error verbose - -%union { - struct { - glslang::TSourceLoc loc; - union { - glslang::TString *string; - int i; - unsigned int u; - long long i64; - unsigned long long u64; - bool b; - double d; - }; - glslang::TSymbol* symbol; - } lex; - struct { - glslang::TSourceLoc loc; - glslang::TOperator op; - union { - TIntermNode* intermNode; - glslang::TIntermNodePair nodePair; - glslang::TIntermTyped* intermTypedNode; - glslang::TAttributes* attributes; - glslang::TSpirvRequirement* spirvReq; - glslang::TSpirvInstruction* spirvInst; - glslang::TSpirvTypeParameters* spirvTypeParams; - }; - union { - glslang::TPublicType type; - glslang::TFunction* function; - glslang::TParameter param; - glslang::TTypeLoc typeLine; - glslang::TTypeList* typeList; - glslang::TArraySizes* arraySizes; - glslang::TIdentifierList* identifierList; - }; - glslang::TTypeParameters* typeParameters; - } interm; -} - -%{ - -/* windows only pragma */ -#ifdef _MSC_VER - #pragma warning(disable : 4065) - #pragma warning(disable : 4127) - #pragma warning(disable : 4244) -#endif - -#define parseContext (*pParseContext) -#define yyerror(context, msg) context->parserError(msg) - -extern int yylex(YYSTYPE*, TParseContext&); - -%} - -%parse-param {glslang::TParseContext* pParseContext} -%lex-param {parseContext} -%pure-parser // enable thread safety -%expect 1 // One shift reduce conflict because of if | else - -%token CONST BOOL INT UINT FLOAT -%token BVEC2 BVEC3 BVEC4 -%token IVEC2 IVEC3 IVEC4 -%token UVEC2 UVEC3 UVEC4 -%token VEC2 VEC3 VEC4 -%token MAT2 MAT3 MAT4 -%token MAT2X2 MAT2X3 MAT2X4 -%token MAT3X2 MAT3X3 MAT3X4 -%token MAT4X2 MAT4X3 MAT4X4 - -// combined image/sampler -%token SAMPLER2D SAMPLER3D SAMPLERCUBE SAMPLER2DSHADOW -%token SAMPLERCUBESHADOW SAMPLER2DARRAY -%token SAMPLER2DARRAYSHADOW ISAMPLER2D ISAMPLER3D ISAMPLERCUBE -%token ISAMPLER2DARRAY USAMPLER2D USAMPLER3D -%token USAMPLERCUBE USAMPLER2DARRAY - -// separate image/sampler -%token SAMPLER SAMPLERSHADOW -%token TEXTURE2D TEXTURE3D TEXTURECUBE TEXTURE2DARRAY -%token ITEXTURE2D ITEXTURE3D ITEXTURECUBE ITEXTURE2DARRAY -%token UTEXTURE2D UTEXTURE3D UTEXTURECUBE UTEXTURE2DARRAY - -%token ATTRIBUTE VARYING -%token FLOAT16_T FLOAT32_T DOUBLE FLOAT64_T -%token INT64_T UINT64_T INT32_T UINT32_T INT16_T UINT16_T INT8_T UINT8_T -%token I64VEC2 I64VEC3 I64VEC4 -%token U64VEC2 U64VEC3 U64VEC4 -%token I32VEC2 I32VEC3 I32VEC4 -%token U32VEC2 U32VEC3 U32VEC4 -%token I16VEC2 I16VEC3 I16VEC4 -%token U16VEC2 U16VEC3 U16VEC4 -%token I8VEC2 I8VEC3 I8VEC4 -%token U8VEC2 U8VEC3 U8VEC4 -%token DVEC2 DVEC3 DVEC4 DMAT2 DMAT3 DMAT4 -%token F16VEC2 F16VEC3 F16VEC4 F16MAT2 F16MAT3 F16MAT4 -%token F32VEC2 F32VEC3 F32VEC4 F32MAT2 F32MAT3 F32MAT4 -%token F64VEC2 F64VEC3 F64VEC4 F64MAT2 F64MAT3 F64MAT4 -%token DMAT2X2 DMAT2X3 DMAT2X4 -%token DMAT3X2 DMAT3X3 DMAT3X4 -%token DMAT4X2 DMAT4X3 DMAT4X4 -%token F16MAT2X2 F16MAT2X3 F16MAT2X4 -%token F16MAT3X2 F16MAT3X3 F16MAT3X4 -%token F16MAT4X2 F16MAT4X3 F16MAT4X4 -%token F32MAT2X2 F32MAT2X3 F32MAT2X4 -%token F32MAT3X2 F32MAT3X3 F32MAT3X4 -%token F32MAT4X2 F32MAT4X3 F32MAT4X4 -%token F64MAT2X2 F64MAT2X3 F64MAT2X4 -%token F64MAT3X2 F64MAT3X3 F64MAT3X4 -%token F64MAT4X2 F64MAT4X3 F64MAT4X4 -%token ATOMIC_UINT -%token ACCSTRUCTNV -%token ACCSTRUCTEXT -%token RAYQUERYEXT -%token FCOOPMATNV ICOOPMATNV UCOOPMATNV -%token COOPMAT -%token HITOBJECTNV HITOBJECTATTRNV - -// combined image/sampler -%token SAMPLERCUBEARRAY SAMPLERCUBEARRAYSHADOW -%token ISAMPLERCUBEARRAY USAMPLERCUBEARRAY -%token SAMPLER1D SAMPLER1DARRAY SAMPLER1DARRAYSHADOW ISAMPLER1D SAMPLER1DSHADOW -%token SAMPLER2DRECT SAMPLER2DRECTSHADOW ISAMPLER2DRECT USAMPLER2DRECT -%token SAMPLERBUFFER ISAMPLERBUFFER USAMPLERBUFFER -%token SAMPLER2DMS ISAMPLER2DMS USAMPLER2DMS -%token SAMPLER2DMSARRAY ISAMPLER2DMSARRAY USAMPLER2DMSARRAY -%token SAMPLEREXTERNALOES -%token SAMPLEREXTERNAL2DY2YEXT -%token ISAMPLER1DARRAY USAMPLER1D USAMPLER1DARRAY -%token F16SAMPLER1D F16SAMPLER2D F16SAMPLER3D F16SAMPLER2DRECT F16SAMPLERCUBE -%token F16SAMPLER1DARRAY F16SAMPLER2DARRAY F16SAMPLERCUBEARRAY -%token F16SAMPLERBUFFER F16SAMPLER2DMS F16SAMPLER2DMSARRAY -%token F16SAMPLER1DSHADOW F16SAMPLER2DSHADOW F16SAMPLER1DARRAYSHADOW F16SAMPLER2DARRAYSHADOW -%token F16SAMPLER2DRECTSHADOW F16SAMPLERCUBESHADOW F16SAMPLERCUBEARRAYSHADOW - -// images -%token IMAGE1D IIMAGE1D UIMAGE1D IMAGE2D IIMAGE2D -%token UIMAGE2D IMAGE3D IIMAGE3D UIMAGE3D -%token IMAGE2DRECT IIMAGE2DRECT UIMAGE2DRECT -%token IMAGECUBE IIMAGECUBE UIMAGECUBE -%token IMAGEBUFFER IIMAGEBUFFER UIMAGEBUFFER -%token IMAGE1DARRAY IIMAGE1DARRAY UIMAGE1DARRAY -%token IMAGE2DARRAY IIMAGE2DARRAY UIMAGE2DARRAY -%token IMAGECUBEARRAY IIMAGECUBEARRAY UIMAGECUBEARRAY -%token IMAGE2DMS IIMAGE2DMS UIMAGE2DMS -%token IMAGE2DMSARRAY IIMAGE2DMSARRAY UIMAGE2DMSARRAY - -%token F16IMAGE1D F16IMAGE2D F16IMAGE3D F16IMAGE2DRECT -%token F16IMAGECUBE F16IMAGE1DARRAY F16IMAGE2DARRAY F16IMAGECUBEARRAY -%token F16IMAGEBUFFER F16IMAGE2DMS F16IMAGE2DMSARRAY - -%token I64IMAGE1D U64IMAGE1D -%token I64IMAGE2D U64IMAGE2D -%token I64IMAGE3D U64IMAGE3D -%token I64IMAGE2DRECT U64IMAGE2DRECT -%token I64IMAGECUBE U64IMAGECUBE -%token I64IMAGEBUFFER U64IMAGEBUFFER -%token I64IMAGE1DARRAY U64IMAGE1DARRAY -%token I64IMAGE2DARRAY U64IMAGE2DARRAY -%token I64IMAGECUBEARRAY U64IMAGECUBEARRAY -%token I64IMAGE2DMS U64IMAGE2DMS -%token I64IMAGE2DMSARRAY U64IMAGE2DMSARRAY - -// texture without sampler -%token TEXTURECUBEARRAY ITEXTURECUBEARRAY UTEXTURECUBEARRAY -%token TEXTURE1D ITEXTURE1D UTEXTURE1D -%token TEXTURE1DARRAY ITEXTURE1DARRAY UTEXTURE1DARRAY -%token TEXTURE2DRECT ITEXTURE2DRECT UTEXTURE2DRECT -%token TEXTUREBUFFER ITEXTUREBUFFER UTEXTUREBUFFER -%token TEXTURE2DMS ITEXTURE2DMS UTEXTURE2DMS -%token TEXTURE2DMSARRAY ITEXTURE2DMSARRAY UTEXTURE2DMSARRAY - -%token F16TEXTURE1D F16TEXTURE2D F16TEXTURE3D F16TEXTURE2DRECT F16TEXTURECUBE -%token F16TEXTURE1DARRAY F16TEXTURE2DARRAY F16TEXTURECUBEARRAY -%token F16TEXTUREBUFFER F16TEXTURE2DMS F16TEXTURE2DMSARRAY - -// input attachments -%token SUBPASSINPUT SUBPASSINPUTMS ISUBPASSINPUT ISUBPASSINPUTMS USUBPASSINPUT USUBPASSINPUTMS -%token F16SUBPASSINPUT F16SUBPASSINPUTMS - -// spirv intrinsics -%token SPIRV_INSTRUCTION SPIRV_EXECUTION_MODE SPIRV_EXECUTION_MODE_ID -%token SPIRV_DECORATE SPIRV_DECORATE_ID SPIRV_DECORATE_STRING -%token SPIRV_TYPE SPIRV_STORAGE_CLASS SPIRV_BY_REFERENCE SPIRV_LITERAL -%token ATTACHMENTEXT IATTACHMENTEXT UATTACHMENTEXT - -%token LEFT_OP RIGHT_OP -%token INC_OP DEC_OP LE_OP GE_OP EQ_OP NE_OP -%token AND_OP OR_OP XOR_OP MUL_ASSIGN DIV_ASSIGN ADD_ASSIGN -%token MOD_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN XOR_ASSIGN OR_ASSIGN -%token SUB_ASSIGN -%token STRING_LITERAL - -%token LEFT_PAREN RIGHT_PAREN LEFT_BRACKET RIGHT_BRACKET LEFT_BRACE RIGHT_BRACE DOT -%token COMMA COLON EQUAL SEMICOLON BANG DASH TILDE PLUS STAR SLASH PERCENT -%token LEFT_ANGLE RIGHT_ANGLE VERTICAL_BAR CARET AMPERSAND QUESTION - -%token INVARIANT -%token HIGH_PRECISION MEDIUM_PRECISION LOW_PRECISION PRECISION -%token PACKED RESOURCE SUPERP - -%token FLOATCONSTANT INTCONSTANT UINTCONSTANT BOOLCONSTANT -%token IDENTIFIER TYPE_NAME -%token CENTROID IN OUT INOUT -%token STRUCT VOID WHILE -%token BREAK CONTINUE DO ELSE FOR IF DISCARD RETURN SWITCH CASE DEFAULT -%token TERMINATE_INVOCATION -%token TERMINATE_RAY IGNORE_INTERSECTION -%token UNIFORM SHARED BUFFER TILEIMAGEEXT -%token FLAT SMOOTH LAYOUT - -%token DOUBLECONSTANT INT16CONSTANT UINT16CONSTANT FLOAT16CONSTANT INT32CONSTANT UINT32CONSTANT -%token INT64CONSTANT UINT64CONSTANT -%token SUBROUTINE DEMOTE -%token PAYLOADNV PAYLOADINNV HITATTRNV CALLDATANV CALLDATAINNV -%token PAYLOADEXT PAYLOADINEXT HITATTREXT CALLDATAEXT CALLDATAINEXT -%token PATCH SAMPLE NONUNIFORM -%token COHERENT VOLATILE RESTRICT READONLY WRITEONLY DEVICECOHERENT QUEUEFAMILYCOHERENT WORKGROUPCOHERENT -%token SUBGROUPCOHERENT NONPRIVATE SHADERCALLCOHERENT -%token NOPERSPECTIVE EXPLICITINTERPAMD PERVERTEXEXT PERVERTEXNV PERPRIMITIVENV PERVIEWNV PERTASKNV PERPRIMITIVEEXT TASKPAYLOADWORKGROUPEXT -%token PRECISE - -%type assignment_operator unary_operator -%type variable_identifier primary_expression postfix_expression -%type expression integer_expression assignment_expression -%type unary_expression multiplicative_expression additive_expression -%type relational_expression equality_expression -%type conditional_expression constant_expression -%type logical_or_expression logical_xor_expression logical_and_expression -%type shift_expression and_expression exclusive_or_expression inclusive_or_expression -%type function_call initializer condition conditionopt - -%type translation_unit function_definition -%type statement simple_statement -%type statement_list switch_statement_list compound_statement -%type declaration_statement selection_statement selection_statement_nonattributed expression_statement -%type switch_statement switch_statement_nonattributed case_label -%type declaration external_declaration -%type for_init_statement compound_statement_no_new_scope -%type selection_rest_statement for_rest_statement -%type iteration_statement iteration_statement_nonattributed jump_statement statement_no_new_scope statement_scoped -%type single_declaration init_declarator_list - -%type parameter_declaration parameter_declarator parameter_type_specifier - -%type array_specifier -%type invariant_qualifier interpolation_qualifier storage_qualifier precision_qualifier -%type layout_qualifier layout_qualifier_id_list layout_qualifier_id - -%type type_parameter_specifier -%type type_parameter_specifier_opt -%type type_parameter_specifier_list - -%type type_qualifier fully_specified_type type_specifier -%type single_type_qualifier -%type type_specifier_nonarray -%type struct_specifier -%type struct_declarator -%type struct_declarator_list struct_declaration struct_declaration_list -%type block_structure -%type function_header function_declarator -%type function_header_with_parameters -%type function_call_header_with_parameters function_call_header_no_parameters function_call_generic function_prototype -%type function_call_or_method function_identifier function_call_header - -%type identifier_list - -%type precise_qualifier non_uniform_qualifier -%type type_name_list -%type attribute attribute_list single_attribute -%type demote_statement -%type initializer_list -%type spirv_requirements_list spirv_requirements_parameter -%type spirv_extension_list spirv_capability_list -%type spirv_execution_mode_qualifier -%type spirv_execution_mode_parameter_list spirv_execution_mode_parameter spirv_execution_mode_id_parameter_list -%type spirv_storage_class_qualifier -%type spirv_decorate_qualifier -%type spirv_decorate_parameter_list spirv_decorate_parameter -%type spirv_decorate_id_parameter_list spirv_decorate_id_parameter -%type spirv_decorate_string_parameter_list -%type spirv_type_specifier -%type spirv_type_parameter_list spirv_type_parameter -%type spirv_instruction_qualifier -%type spirv_instruction_qualifier_list spirv_instruction_qualifier_id - -%start translation_unit -%% - -variable_identifier - : IDENTIFIER { - $$ = parseContext.handleVariable($1.loc, $1.symbol, $1.string); - } - ; - -primary_expression - : variable_identifier { - $$ = $1; - } - | LEFT_PAREN expression RIGHT_PAREN { - $$ = $2; - if ($$->getAsConstantUnion()) - $$->getAsConstantUnion()->setExpression(); - } - | FLOATCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); - } - | INTCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); - } - | UINTCONSTANT { - parseContext.fullIntegerCheck($1.loc, "unsigned literal"); - $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); - } - | BOOLCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); - } - | STRING_LITERAL { - $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); - } - | INT32CONSTANT { - parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); - $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); - } - | UINT32CONSTANT { - parseContext.explicitInt32Check($1.loc, "32-bit signed literal"); - $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); - } - | INT64CONSTANT { - parseContext.int64Check($1.loc, "64-bit integer literal"); - $$ = parseContext.intermediate.addConstantUnion($1.i64, $1.loc, true); - } - | UINT64CONSTANT { - parseContext.int64Check($1.loc, "64-bit unsigned integer literal"); - $$ = parseContext.intermediate.addConstantUnion($1.u64, $1.loc, true); - } - | INT16CONSTANT { - parseContext.explicitInt16Check($1.loc, "16-bit integer literal"); - $$ = parseContext.intermediate.addConstantUnion((short)$1.i, $1.loc, true); - } - | UINT16CONSTANT { - parseContext.explicitInt16Check($1.loc, "16-bit unsigned integer literal"); - $$ = parseContext.intermediate.addConstantUnion((unsigned short)$1.u, $1.loc, true); - } - | DOUBLECONSTANT { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double literal"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double literal"); - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtDouble, $1.loc, true); - } - | FLOAT16CONSTANT { - parseContext.float16Check($1.loc, "half float literal"); - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat16, $1.loc, true); - } - ; - -postfix_expression - : primary_expression { - $$ = $1; - } - | postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET { - $$ = parseContext.handleBracketDereference($2.loc, $1, $3); - } - | function_call { - $$ = $1; - } - | postfix_expression DOT IDENTIFIER { - $$ = parseContext.handleDotDereference($3.loc, $1, *$3.string); - } - | postfix_expression INC_OP { - parseContext.variableCheck($1); - parseContext.lValueErrorCheck($2.loc, "++", $1); - $$ = parseContext.handleUnaryMath($2.loc, "++", EOpPostIncrement, $1); - } - | postfix_expression DEC_OP { - parseContext.variableCheck($1); - parseContext.lValueErrorCheck($2.loc, "--", $1); - $$ = parseContext.handleUnaryMath($2.loc, "--", EOpPostDecrement, $1); - } - ; - -integer_expression - : expression { - parseContext.integerCheck($1, "[]"); - $$ = $1; - } - ; - -function_call - : function_call_or_method { - $$ = parseContext.handleFunctionCall($1.loc, $1.function, $1.intermNode); - delete $1.function; - } - ; - -function_call_or_method - : function_call_generic { - $$ = $1; - } - ; - -function_call_generic - : function_call_header_with_parameters RIGHT_PAREN { - $$ = $1; - $$.loc = $2.loc; - } - | function_call_header_no_parameters RIGHT_PAREN { - $$ = $1; - $$.loc = $2.loc; - } - ; - -function_call_header_no_parameters - : function_call_header VOID { - $$ = $1; - } - | function_call_header { - $$ = $1; - } - ; - -function_call_header_with_parameters - : function_call_header assignment_expression { - TParameter param = { 0, new TType }; - param.type->shallowCopy($2->getType()); - $1.function->addParameter(param); - $$.function = $1.function; - $$.intermNode = $2; - } - | function_call_header_with_parameters COMMA assignment_expression { - TParameter param = { 0, new TType }; - param.type->shallowCopy($3->getType()); - $1.function->addParameter(param); - $$.function = $1.function; - $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, $3, $2.loc); - } - ; - -function_call_header - : function_identifier LEFT_PAREN { - $$ = $1; - } - ; - -// Grammar Note: Constructors look like functions, but are recognized as types. - -function_identifier - : type_specifier { - // Constructor - $$.intermNode = 0; - $$.function = parseContext.handleConstructorCall($1.loc, $1); - } - | postfix_expression { - // - // Should be a method or subroutine call, but we haven't recognized the arguments yet. - // - $$.function = 0; - $$.intermNode = 0; - - TIntermMethod* method = $1->getAsMethodNode(); - if (method) { - $$.function = new TFunction(&method->getMethodName(), TType(EbtInt), EOpArrayLength); - $$.intermNode = method->getObject(); - } else { - TIntermSymbol* symbol = $1->getAsSymbolNode(); - if (symbol) { - parseContext.reservedErrorCheck(symbol->getLoc(), symbol->getName()); - TFunction *function = new TFunction(&symbol->getName(), TType(EbtVoid)); - $$.function = function; - } else - parseContext.error($1->getLoc(), "function call, method, or subroutine call expected", "", ""); - } - - if ($$.function == 0) { - // error recover - TString* empty = NewPoolTString(""); - $$.function = new TFunction(empty, TType(EbtVoid), EOpNull); - } - } - | non_uniform_qualifier { - // Constructor - $$.intermNode = 0; - $$.function = parseContext.handleConstructorCall($1.loc, $1); - } - ; - -unary_expression - : postfix_expression { - parseContext.variableCheck($1); - $$ = $1; - if (TIntermMethod* method = $1->getAsMethodNode()) - parseContext.error($1->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); - } - | INC_OP unary_expression { - parseContext.lValueErrorCheck($1.loc, "++", $2); - $$ = parseContext.handleUnaryMath($1.loc, "++", EOpPreIncrement, $2); - } - | DEC_OP unary_expression { - parseContext.lValueErrorCheck($1.loc, "--", $2); - $$ = parseContext.handleUnaryMath($1.loc, "--", EOpPreDecrement, $2); - } - | unary_operator unary_expression { - if ($1.op != EOpNull) { - char errorOp[2] = {0, 0}; - switch($1.op) { - case EOpNegative: errorOp[0] = '-'; break; - case EOpLogicalNot: errorOp[0] = '!'; break; - case EOpBitwiseNot: errorOp[0] = '~'; break; - default: break; // some compilers want this - } - $$ = parseContext.handleUnaryMath($1.loc, errorOp, $1.op, $2); - } else { - $$ = $2; - if ($$->getAsConstantUnion()) - $$->getAsConstantUnion()->setExpression(); - } - } - ; -// Grammar Note: No traditional style type casts. - -unary_operator - : PLUS { $$.loc = $1.loc; $$.op = EOpNull; } - | DASH { $$.loc = $1.loc; $$.op = EOpNegative; } - | BANG { $$.loc = $1.loc; $$.op = EOpLogicalNot; } - | TILDE { $$.loc = $1.loc; $$.op = EOpBitwiseNot; - parseContext.fullIntegerCheck($1.loc, "bitwise not"); } - ; -// Grammar Note: No '*' or '&' unary ops. Pointers are not supported. - -multiplicative_expression - : unary_expression { $$ = $1; } - | multiplicative_expression STAR unary_expression { - $$ = parseContext.handleBinaryMath($2.loc, "*", EOpMul, $1, $3); - if ($$ == 0) - $$ = $1; - } - | multiplicative_expression SLASH unary_expression { - $$ = parseContext.handleBinaryMath($2.loc, "/", EOpDiv, $1, $3); - if ($$ == 0) - $$ = $1; - } - | multiplicative_expression PERCENT unary_expression { - parseContext.fullIntegerCheck($2.loc, "%"); - $$ = parseContext.handleBinaryMath($2.loc, "%", EOpMod, $1, $3); - if ($$ == 0) - $$ = $1; - } - ; - -additive_expression - : multiplicative_expression { $$ = $1; } - | additive_expression PLUS multiplicative_expression { - $$ = parseContext.handleBinaryMath($2.loc, "+", EOpAdd, $1, $3); - if ($$ == 0) - $$ = $1; - } - | additive_expression DASH multiplicative_expression { - $$ = parseContext.handleBinaryMath($2.loc, "-", EOpSub, $1, $3); - if ($$ == 0) - $$ = $1; - } - ; - -shift_expression - : additive_expression { $$ = $1; } - | shift_expression LEFT_OP additive_expression { - parseContext.fullIntegerCheck($2.loc, "bit shift left"); - $$ = parseContext.handleBinaryMath($2.loc, "<<", EOpLeftShift, $1, $3); - if ($$ == 0) - $$ = $1; - } - | shift_expression RIGHT_OP additive_expression { - parseContext.fullIntegerCheck($2.loc, "bit shift right"); - $$ = parseContext.handleBinaryMath($2.loc, ">>", EOpRightShift, $1, $3); - if ($$ == 0) - $$ = $1; - } - ; - -relational_expression - : shift_expression { $$ = $1; } - | relational_expression LEFT_ANGLE shift_expression { - $$ = parseContext.handleBinaryMath($2.loc, "<", EOpLessThan, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - | relational_expression RIGHT_ANGLE shift_expression { - $$ = parseContext.handleBinaryMath($2.loc, ">", EOpGreaterThan, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - | relational_expression LE_OP shift_expression { - $$ = parseContext.handleBinaryMath($2.loc, "<=", EOpLessThanEqual, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - | relational_expression GE_OP shift_expression { - $$ = parseContext.handleBinaryMath($2.loc, ">=", EOpGreaterThanEqual, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - ; - -equality_expression - : relational_expression { $$ = $1; } - | equality_expression EQ_OP relational_expression { - parseContext.arrayObjectCheck($2.loc, $1->getType(), "array comparison"); - parseContext.opaqueCheck($2.loc, $1->getType(), "=="); - parseContext.specializationCheck($2.loc, $1->getType(), "=="); - parseContext.referenceCheck($2.loc, $1->getType(), "=="); - $$ = parseContext.handleBinaryMath($2.loc, "==", EOpEqual, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - | equality_expression NE_OP relational_expression { - parseContext.arrayObjectCheck($2.loc, $1->getType(), "array comparison"); - parseContext.opaqueCheck($2.loc, $1->getType(), "!="); - parseContext.specializationCheck($2.loc, $1->getType(), "!="); - parseContext.referenceCheck($2.loc, $1->getType(), "!="); - $$ = parseContext.handleBinaryMath($2.loc, "!=", EOpNotEqual, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - ; - -and_expression - : equality_expression { $$ = $1; } - | and_expression AMPERSAND equality_expression { - parseContext.fullIntegerCheck($2.loc, "bitwise and"); - $$ = parseContext.handleBinaryMath($2.loc, "&", EOpAnd, $1, $3); - if ($$ == 0) - $$ = $1; - } - ; - -exclusive_or_expression - : and_expression { $$ = $1; } - | exclusive_or_expression CARET and_expression { - parseContext.fullIntegerCheck($2.loc, "bitwise exclusive or"); - $$ = parseContext.handleBinaryMath($2.loc, "^", EOpExclusiveOr, $1, $3); - if ($$ == 0) - $$ = $1; - } - ; - -inclusive_or_expression - : exclusive_or_expression { $$ = $1; } - | inclusive_or_expression VERTICAL_BAR exclusive_or_expression { - parseContext.fullIntegerCheck($2.loc, "bitwise inclusive or"); - $$ = parseContext.handleBinaryMath($2.loc, "|", EOpInclusiveOr, $1, $3); - if ($$ == 0) - $$ = $1; - } - ; - -logical_and_expression - : inclusive_or_expression { $$ = $1; } - | logical_and_expression AND_OP inclusive_or_expression { - $$ = parseContext.handleBinaryMath($2.loc, "&&", EOpLogicalAnd, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - ; - -logical_xor_expression - : logical_and_expression { $$ = $1; } - | logical_xor_expression XOR_OP logical_and_expression { - $$ = parseContext.handleBinaryMath($2.loc, "^^", EOpLogicalXor, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - ; - -logical_or_expression - : logical_xor_expression { $$ = $1; } - | logical_or_expression OR_OP logical_xor_expression { - $$ = parseContext.handleBinaryMath($2.loc, "||", EOpLogicalOr, $1, $3); - if ($$ == 0) - $$ = parseContext.intermediate.addConstantUnion(false, $2.loc); - } - ; - -conditional_expression - : logical_or_expression { $$ = $1; } - | logical_or_expression QUESTION { - ++parseContext.controlFlowNestingLevel; - } - expression COLON assignment_expression { - --parseContext.controlFlowNestingLevel; - parseContext.boolCheck($2.loc, $1); - parseContext.rValueErrorCheck($2.loc, "?", $1); - parseContext.rValueErrorCheck($5.loc, ":", $4); - parseContext.rValueErrorCheck($5.loc, ":", $6); - $$ = parseContext.intermediate.addSelection($1, $4, $6, $2.loc); - if ($$ == 0) { - parseContext.binaryOpError($2.loc, ":", $4->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $6->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); - $$ = $6; - } - } - ; - -assignment_expression - : conditional_expression { $$ = $1; } - | unary_expression assignment_operator assignment_expression { - parseContext.arrayObjectCheck($2.loc, $1->getType(), "array assignment"); - parseContext.opaqueCheck($2.loc, $1->getType(), "="); - parseContext.storage16BitAssignmentCheck($2.loc, $1->getType(), "="); - parseContext.specializationCheck($2.loc, $1->getType(), "="); - parseContext.lValueErrorCheck($2.loc, "assign", $1); - parseContext.rValueErrorCheck($2.loc, "assign", $3); - $$ = parseContext.addAssign($2.loc, $2.op, $1, $3); - if ($$ == 0) { - parseContext.assignError($2.loc, "assign", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); - $$ = $1; - } - } - ; - -assignment_operator - : EQUAL { - $$.loc = $1.loc; - $$.op = EOpAssign; - } - | MUL_ASSIGN { - $$.loc = $1.loc; - $$.op = EOpMulAssign; - } - | DIV_ASSIGN { - $$.loc = $1.loc; - $$.op = EOpDivAssign; - } - | MOD_ASSIGN { - parseContext.fullIntegerCheck($1.loc, "%="); - $$.loc = $1.loc; - $$.op = EOpModAssign; - } - | ADD_ASSIGN { - $$.loc = $1.loc; - $$.op = EOpAddAssign; - } - | SUB_ASSIGN { - $$.loc = $1.loc; - $$.op = EOpSubAssign; - } - | LEFT_ASSIGN { - parseContext.fullIntegerCheck($1.loc, "bit-shift left assign"); - $$.loc = $1.loc; $$.op = EOpLeftShiftAssign; - } - | RIGHT_ASSIGN { - parseContext.fullIntegerCheck($1.loc, "bit-shift right assign"); - $$.loc = $1.loc; $$.op = EOpRightShiftAssign; - } - | AND_ASSIGN { - parseContext.fullIntegerCheck($1.loc, "bitwise-and assign"); - $$.loc = $1.loc; $$.op = EOpAndAssign; - } - | XOR_ASSIGN { - parseContext.fullIntegerCheck($1.loc, "bitwise-xor assign"); - $$.loc = $1.loc; $$.op = EOpExclusiveOrAssign; - } - | OR_ASSIGN { - parseContext.fullIntegerCheck($1.loc, "bitwise-or assign"); - $$.loc = $1.loc; $$.op = EOpInclusiveOrAssign; - } - ; - -expression - : assignment_expression { - $$ = $1; - } - | expression COMMA assignment_expression { - parseContext.samplerConstructorLocationCheck($2.loc, ",", $3); - $$ = parseContext.intermediate.addComma($1, $3, $2.loc); - if ($$ == 0) { - parseContext.binaryOpError($2.loc, ",", $1->getCompleteString(parseContext.intermediate.getEnhancedMsgs()), $3->getCompleteString(parseContext.intermediate.getEnhancedMsgs())); - $$ = $3; - } - } - ; - -constant_expression - : conditional_expression { - parseContext.constantValueCheck($1, ""); - $$ = $1; - } - ; - -declaration - : function_prototype SEMICOLON { - parseContext.handleFunctionDeclarator($1.loc, *$1.function, true /* prototype */); - $$ = 0; - // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature - } - | spirv_instruction_qualifier function_prototype SEMICOLON { - parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); - $2.function->setSpirvInstruction(*$1); // Attach SPIR-V intruction qualifier - parseContext.handleFunctionDeclarator($2.loc, *$2.function, true /* prototype */); - $$ = 0; - // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature - } - | spirv_execution_mode_qualifier SEMICOLON { - parseContext.globalCheck($2.loc, "SPIR-V execution mode qualifier"); - parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); - $$ = 0; - } - | init_declarator_list SEMICOLON { - if ($1.intermNode && $1.intermNode->getAsAggregate()) - $1.intermNode->getAsAggregate()->setOperator(EOpSequence); - $$ = $1.intermNode; - } - | PRECISION precision_qualifier type_specifier SEMICOLON { - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "precision statement"); - // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope - parseContext.symbolTable.setPreviousDefaultPrecisions(&parseContext.defaultPrecision[0]); - parseContext.setDefaultPrecision($1.loc, $3, $2.qualifier.precision); - $$ = 0; - } - | block_structure SEMICOLON { - parseContext.declareBlock($1.loc, *$1.typeList); - $$ = 0; - } - | block_structure IDENTIFIER SEMICOLON { - parseContext.declareBlock($1.loc, *$1.typeList, $2.string); - $$ = 0; - } - | block_structure IDENTIFIER array_specifier SEMICOLON { - parseContext.declareBlock($1.loc, *$1.typeList, $2.string, $3.arraySizes); - $$ = 0; - } - | type_qualifier SEMICOLON { - parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); - parseContext.updateStandaloneQualifierDefaults($1.loc, $1); - $$ = 0; - } - | type_qualifier IDENTIFIER SEMICOLON { - parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); - parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$2.string); - $$ = 0; - } - | type_qualifier IDENTIFIER identifier_list SEMICOLON { - parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); - $3->push_back($2.string); - parseContext.addQualifierToExisting($1.loc, $1.qualifier, *$3); - $$ = 0; - } - ; - -block_structure - : type_qualifier IDENTIFIER LEFT_BRACE { parseContext.nestedBlockCheck($1.loc); } struct_declaration_list RIGHT_BRACE { - --parseContext.blockNestingLevel; - parseContext.blockName = $2.string; - parseContext.globalQualifierFixCheck($1.loc, $1.qualifier); - parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); - parseContext.currentBlockQualifier = $1.qualifier; - $$.loc = $1.loc; - $$.typeList = $5; - } - -identifier_list - : COMMA IDENTIFIER { - $$ = new TIdentifierList; - $$->push_back($2.string); - } - | identifier_list COMMA IDENTIFIER { - $$ = $1; - $$->push_back($3.string); - } - ; - -function_prototype - : function_declarator RIGHT_PAREN { - $$.function = $1; - $$.loc = $2.loc; - } - | function_declarator RIGHT_PAREN attribute { - $$.function = $1; - $$.loc = $2.loc; - parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($2.loc, *$3); - } - | attribute function_declarator RIGHT_PAREN { - $$.function = $2; - $$.loc = $3.loc; - parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($3.loc, *$1); - } - | attribute function_declarator RIGHT_PAREN attribute { - $$.function = $2; - $$.loc = $3.loc; - parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); - parseContext.handleFunctionAttributes($3.loc, *$1); - parseContext.handleFunctionAttributes($3.loc, *$4); - } - ; - -function_declarator - : function_header { - $$ = $1; - } - | function_header_with_parameters { - $$ = $1; - } - ; - - -function_header_with_parameters - : function_header parameter_declaration { - // Add the parameter - $$ = $1; - if ($2.param.type->getBasicType() != EbtVoid) - $1->addParameter($2.param); - else - delete $2.param.type; - } - | function_header_with_parameters COMMA parameter_declaration { - // - // Only first parameter of one-parameter functions can be void - // The check for named parameters not being void is done in parameter_declarator - // - if ($3.param.type->getBasicType() == EbtVoid) { - // - // This parameter > first is void - // - parseContext.error($2.loc, "cannot be an argument type except for '(void)'", "void", ""); - delete $3.param.type; - } else { - // Add the parameter - $$ = $1; - $1->addParameter($3.param); - } - } - ; - -function_header - : fully_specified_type IDENTIFIER LEFT_PAREN { - if ($1.qualifier.storage != EvqGlobal && $1.qualifier.storage != EvqTemporary) { - parseContext.error($2.loc, "no qualifiers allowed for function return", - GetStorageQualifierString($1.qualifier.storage), ""); - } - if ($1.arraySizes) - parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); - - // Add the function as a prototype after parsing it (we do not support recursion) - TFunction *function; - TType type($1); - - // Potentially rename shader entry point function. No-op most of the time. - parseContext.renameShaderFunction($2.string); - - // Make the function - function = new TFunction($2.string, type); - $$ = function; - } - ; - -parameter_declarator - // Type + name - : type_specifier IDENTIFIER { - if ($1.arraySizes) { - parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); - } - if ($1.basicType == EbtVoid) { - parseContext.error($2.loc, "illegal use of type 'void'", $2.string->c_str(), ""); - } - parseContext.reservedErrorCheck($2.loc, *$2.string); - - TParameter param = {$2.string, new TType($1)}; - $$.loc = $2.loc; - $$.param = param; - } - | type_specifier IDENTIFIER array_specifier { - if ($1.arraySizes) { - parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); - parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); - } - TType* type = new TType($1); - type->transferArraySizes($3.arraySizes); - type->copyArrayInnerSizes($1.arraySizes); - - parseContext.arrayOfArrayVersionCheck($2.loc, type->getArraySizes()); - parseContext.arraySizeRequiredCheck($3.loc, *$3.arraySizes); - parseContext.reservedErrorCheck($2.loc, *$2.string); - - TParameter param = { $2.string, type }; - - $$.loc = $2.loc; - $$.param = param; - } - ; - -parameter_declaration - // - // With name - // - : type_qualifier parameter_declarator { - $$ = $2; - if ($1.qualifier.precision != EpqNone) - $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); - - parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); - parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); - parseContext.paramCheckFix($1.loc, $1.qualifier, *$$.param.type); - - } - | parameter_declarator { - $$ = $1; - - parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); - parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); - } - // - // Without name - // - | type_qualifier parameter_type_specifier { - $$ = $2; - if ($1.qualifier.precision != EpqNone) - $$.param.type->getQualifier().precision = $1.qualifier.precision; - parseContext.precisionQualifierCheck($1.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); - - parseContext.checkNoShaderLayouts($1.loc, $1.shaderQualifiers); - parseContext.parameterTypeCheck($2.loc, $1.qualifier.storage, *$$.param.type); - parseContext.paramCheckFix($1.loc, $1.qualifier, *$$.param.type); - } - | parameter_type_specifier { - $$ = $1; - - parseContext.parameterTypeCheck($1.loc, EvqIn, *$1.param.type); - parseContext.paramCheckFixStorage($1.loc, EvqTemporary, *$$.param.type); - parseContext.precisionQualifierCheck($$.loc, $$.param.type->getBasicType(), $$.param.type->getQualifier(), $$.param.type->isCoopMat()); - } - ; - -parameter_type_specifier - : type_specifier { - TParameter param = { 0, new TType($1) }; - $$.param = param; - if ($1.arraySizes) - parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); - } - ; - -init_declarator_list - : single_declaration { - $$ = $1; - } - | init_declarator_list COMMA IDENTIFIER { - $$ = $1; - parseContext.declareVariable($3.loc, *$3.string, $1.type); - } - | init_declarator_list COMMA IDENTIFIER array_specifier { - $$ = $1; - parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes); - } - | init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer { - $$.type = $1.type; - TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, $4.arraySizes, $6); - $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $5.loc); - } - | init_declarator_list COMMA IDENTIFIER EQUAL initializer { - $$.type = $1.type; - TIntermNode* initNode = parseContext.declareVariable($3.loc, *$3.string, $1.type, 0, $5); - $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, initNode, $4.loc); - } - ; - -single_declaration - : fully_specified_type { - $$.type = $1; - $$.intermNode = 0; - parseContext.declareTypeDefaults($$.loc, $$.type); - } - | fully_specified_type IDENTIFIER { - $$.type = $1; - $$.intermNode = 0; - parseContext.declareVariable($2.loc, *$2.string, $1); - } - | fully_specified_type IDENTIFIER array_specifier { - $$.type = $1; - $$.intermNode = 0; - parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes); - } - | fully_specified_type IDENTIFIER array_specifier EQUAL initializer { - $$.type = $1; - TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, $3.arraySizes, $5); - $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $4.loc); - } - | fully_specified_type IDENTIFIER EQUAL initializer { - $$.type = $1; - TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); - $$.intermNode = parseContext.intermediate.growAggregate(0, initNode, $3.loc); - } - -// Grammar Note: No 'enum', or 'typedef'. - -fully_specified_type - : type_specifier { - $$ = $1; - - parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $$); - if ($1.arraySizes) { - parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); - } - parseContext.precisionQualifierCheck($$.loc, $$.basicType, $$.qualifier, $$.isCoopmat()); - } - | type_qualifier type_specifier { - parseContext.globalQualifierFixCheck($1.loc, $1.qualifier, false, &$2); - parseContext.globalQualifierTypeCheck($1.loc, $1.qualifier, $2); - - if ($2.arraySizes) { - parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); - } - - if ($2.arraySizes && parseContext.arrayQualifierError($2.loc, $1.qualifier)) - $2.arraySizes = nullptr; - - parseContext.checkNoShaderLayouts($2.loc, $1.shaderQualifiers); - $2.shaderQualifiers.merge($1.shaderQualifiers); - parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat()); - - $$ = $2; - - if (! $$.qualifier.isInterpolation() && - ((parseContext.language == EShLangVertex && $$.qualifier.storage == EvqVaryingOut) || - (parseContext.language == EShLangFragment && $$.qualifier.storage == EvqVaryingIn))) - $$.qualifier.smooth = true; - } - ; - -invariant_qualifier - : INVARIANT { - parseContext.globalCheck($1.loc, "invariant"); - parseContext.profileRequires($$.loc, ENoProfile, 120, 0, "invariant"); - $$.init($1.loc); - $$.qualifier.invariant = true; - } - ; - -interpolation_qualifier - : SMOOTH { - parseContext.globalCheck($1.loc, "smooth"); - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "smooth"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "smooth"); - $$.init($1.loc); - $$.qualifier.smooth = true; - } - | FLAT { - parseContext.globalCheck($1.loc, "flat"); - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "flat"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "flat"); - $$.init($1.loc); - $$.qualifier.flat = true; - } - | NOPERSPECTIVE { - parseContext.globalCheck($1.loc, "noperspective"); - parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "noperspective"); - $$.init($1.loc); - $$.qualifier.nopersp = true; - } - | EXPLICITINTERPAMD { - parseContext.globalCheck($1.loc, "__explicitInterpAMD"); - parseContext.profileRequires($1.loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - parseContext.profileRequires($1.loc, ECompatibilityProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); - $$.init($1.loc); - $$.qualifier.explicitInterp = true; - } - | PERVERTEXNV { - parseContext.globalCheck($1.loc, "pervertexNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); - $$.init($1.loc); - $$.qualifier.pervertexNV = true; - } - | PERVERTEXEXT { - parseContext.globalCheck($1.loc, "pervertexEXT"); - parseContext.profileRequires($1.loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires($1.loc, ECompatibilityProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); - parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); - $$.init($1.loc); - $$.qualifier.pervertexEXT = true; - } - | PERPRIMITIVENV { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "perprimitiveNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveNV"); - // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. - if (parseContext.language == EShLangFragment) - parseContext.requireExtensions($1.loc, 1, &E_GL_NV_mesh_shader, "perprimitiveNV"); - $$.init($1.loc); - $$.qualifier.perPrimitiveNV = true; - } - | PERPRIMITIVEEXT { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "perprimitiveEXT"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangFragmentMask | EShLangMeshMask), "perprimitiveEXT"); - // Fragment shader stage doesn't check for extension. So we explicitly add below extension check. - if (parseContext.language == EShLangFragment) - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_mesh_shader, "perprimitiveEXT"); - $$.init($1.loc); - $$.qualifier.perPrimitiveNV = true; - } - | PERVIEWNV { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "perviewNV"); - parseContext.requireStage($1.loc, EShLangMesh, "perviewNV"); - $$.init($1.loc); - $$.qualifier.perViewNV = true; - } - | PERTASKNV { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "taskNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskNV"); - $$.init($1.loc); - $$.qualifier.perTaskNV = true; - } - ; - -layout_qualifier - : LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN { - $$ = $3; - } - ; - -layout_qualifier_id_list - : layout_qualifier_id { - $$ = $1; - } - | layout_qualifier_id_list COMMA layout_qualifier_id { - $$ = $1; - $$.shaderQualifiers.merge($3.shaderQualifiers); - parseContext.mergeObjectLayoutQualifiers($$.qualifier, $3.qualifier, false); - } - -layout_qualifier_id - : IDENTIFIER { - $$.init($1.loc); - parseContext.setLayoutQualifier($1.loc, $$, *$1.string); - } - | IDENTIFIER EQUAL constant_expression { - $$.init($1.loc); - parseContext.setLayoutQualifier($1.loc, $$, *$1.string, $3); - } - | SHARED { // because "shared" is both an identifier and a keyword - $$.init($1.loc); - TString strShared("shared"); - parseContext.setLayoutQualifier($1.loc, $$, strShared); - } - ; - -precise_qualifier - : PRECISE { - parseContext.profileRequires($$.loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); - parseContext.profileRequires($1.loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); - $$.init($1.loc); - $$.qualifier.noContraction = true; - } - ; - -type_qualifier - : single_type_qualifier { - $$ = $1; - } - | type_qualifier single_type_qualifier { - $$ = $1; - if ($$.basicType == EbtVoid) - $$.basicType = $2.basicType; - - $$.shaderQualifiers.merge($2.shaderQualifiers); - parseContext.mergeQualifiers($$.loc, $$.qualifier, $2.qualifier, false); - } - ; - -single_type_qualifier - : storage_qualifier { - $$ = $1; - } - | layout_qualifier { - $$ = $1; - } - | precision_qualifier { - parseContext.checkPrecisionQualifier($1.loc, $1.qualifier.precision); - $$ = $1; - } - | interpolation_qualifier { - // allow inheritance of storage qualifier from block declaration - $$ = $1; - } - | invariant_qualifier { - // allow inheritance of storage qualifier from block declaration - $$ = $1; - } - | precise_qualifier { - // allow inheritance of storage qualifier from block declaration - $$ = $1; - } - | non_uniform_qualifier { - $$ = $1; - } - | spirv_storage_class_qualifier { - parseContext.globalCheck($1.loc, "spirv_storage_class"); - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); - $$ = $1; - } - | spirv_decorate_qualifier { - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); - $$ = $1; - } - | SPIRV_BY_REFERENCE { - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); - $$.init($1.loc); - $$.qualifier.setSpirvByReference(); - } - | SPIRV_LITERAL { - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); - $$.init($1.loc); - $$.qualifier.setSpirvLiteral(); - } - ; - -storage_qualifier - : CONST { - $$.init($1.loc); - $$.qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant - } - | INOUT { - parseContext.globalCheck($1.loc, "inout"); - $$.init($1.loc); - $$.qualifier.storage = EvqInOut; - } - | IN { - parseContext.globalCheck($1.loc, "in"); - $$.init($1.loc); - // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later - $$.qualifier.storage = EvqIn; - } - | OUT { - parseContext.globalCheck($1.loc, "out"); - $$.init($1.loc); - // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later - $$.qualifier.storage = EvqOut; - } - | CENTROID { - parseContext.profileRequires($1.loc, ENoProfile, 120, 0, "centroid"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "centroid"); - parseContext.globalCheck($1.loc, "centroid"); - $$.init($1.loc); - $$.qualifier.centroid = true; - } - | UNIFORM { - parseContext.globalCheck($1.loc, "uniform"); - $$.init($1.loc); - $$.qualifier.storage = EvqUniform; - } - | TILEIMAGEEXT { - parseContext.globalCheck($1.loc, "tileImageEXT"); - $$.init($1.loc); - $$.qualifier.storage = EvqTileImageEXT; - } - | SHARED { - parseContext.globalCheck($1.loc, "shared"); - parseContext.profileRequires($1.loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); - parseContext.profileRequires($1.loc, EEsProfile, 310, 0, "shared"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangComputeMask | EShLangMeshMask | EShLangTaskMask), "shared"); - $$.init($1.loc); - $$.qualifier.storage = EvqShared; - } - | BUFFER { - parseContext.globalCheck($1.loc, "buffer"); - $$.init($1.loc); - $$.qualifier.storage = EvqBuffer; - } - | ATTRIBUTE { - parseContext.requireStage($1.loc, EShLangVertex, "attribute"); - parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "attribute"); - parseContext.checkDeprecated($1.loc, ENoProfile, 130, "attribute"); - parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "attribute"); - parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "attribute"); - - parseContext.globalCheck($1.loc, "attribute"); - - $$.init($1.loc); - $$.qualifier.storage = EvqVaryingIn; - } - | VARYING { - parseContext.checkDeprecated($1.loc, ENoProfile, 130, "varying"); - parseContext.checkDeprecated($1.loc, ECoreProfile, 130, "varying"); - parseContext.requireNotRemoved($1.loc, ECoreProfile, 420, "varying"); - parseContext.requireNotRemoved($1.loc, EEsProfile, 300, "varying"); - - parseContext.globalCheck($1.loc, "varying"); - - $$.init($1.loc); - if (parseContext.language == EShLangVertex) - $$.qualifier.storage = EvqVaryingOut; - else - $$.qualifier.storage = EvqVaryingIn; - } - | PATCH { - parseContext.globalCheck($1.loc, "patch"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); - $$.init($1.loc); - $$.qualifier.patch = true; - } - | SAMPLE { - parseContext.globalCheck($1.loc, "sample"); - $$.init($1.loc); - $$.qualifier.sample = true; - } - | HITATTRNV { - parseContext.globalCheck($1.loc, "hitAttributeNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask - | EShLangAnyHitMask), "hitAttributeNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "hitAttributeNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqHitAttr; - } - | HITOBJECTATTRNV { - parseContext.globalCheck($1.loc, "hitAttributeNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask - | EShLangMissMask), "hitObjectAttributeNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_shader_invocation_reorder, "hitObjectAttributeNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqHitObjectAttrNV; - } - | HITATTREXT { - parseContext.globalCheck($1.loc, "hitAttributeEXT"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask - | EShLangAnyHitMask), "hitAttributeEXT"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "hitAttributeNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqHitAttr; - } - | PAYLOADNV { - parseContext.globalCheck($1.loc, "rayPayloadNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | - EShLangAnyHitMask | EShLangMissMask), "rayPayloadNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqPayload; - } - | PAYLOADEXT { - parseContext.globalCheck($1.loc, "rayPayloadEXT"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | - EShLangAnyHitMask | EShLangMissMask), "rayPayloadEXT"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadEXT"); - $$.init($1.loc); - $$.qualifier.storage = EvqPayload; - } - | PAYLOADINNV { - parseContext.globalCheck($1.loc, "rayPayloadInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | - EShLangAnyHitMask | EShLangMissMask), "rayPayloadInNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "rayPayloadInNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqPayloadIn; - } - | PAYLOADINEXT { - parseContext.globalCheck($1.loc, "rayPayloadInEXT"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangClosestHitMask | - EShLangAnyHitMask | EShLangMissMask), "rayPayloadInEXT"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "rayPayloadInEXT"); - $$.init($1.loc); - $$.qualifier.storage = EvqPayloadIn; - } - | CALLDATANV { - parseContext.globalCheck($1.loc, "callableDataNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | - EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqCallableData; - } - | CALLDATAEXT { - parseContext.globalCheck($1.loc, "callableDataEXT"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangRayGenMask | - EShLangClosestHitMask | EShLangMissMask | EShLangCallableMask), "callableDataEXT"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataEXT"); - $$.init($1.loc); - $$.qualifier.storage = EvqCallableData; - } - | CALLDATAINNV { - parseContext.globalCheck($1.loc, "callableDataInNV"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_NV_ray_tracing, "callableDataInNV"); - $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataIn; - } - | CALLDATAINEXT { - parseContext.globalCheck($1.loc, "callableDataInEXT"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); - parseContext.profileRequires($1.loc, ECoreProfile, 460, E_GL_EXT_ray_tracing, "callableDataInEXT"); - $$.init($1.loc); - $$.qualifier.storage = EvqCallableDataIn; - } - | COHERENT { - $$.init($1.loc); - $$.qualifier.coherent = true; - } - | DEVICECOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); - $$.qualifier.devicecoherent = true; - } - | QUEUEFAMILYCOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); - $$.qualifier.queuefamilycoherent = true; - } - | WORKGROUPCOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); - $$.qualifier.workgroupcoherent = true; - } - | SUBGROUPCOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); - $$.qualifier.subgroupcoherent = true; - } - | NONPRIVATE { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); - $$.qualifier.nonprivate = true; - } - | SHADERCALLCOHERENT { - $$.init($1.loc); - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); - $$.qualifier.shadercallcoherent = true; - } - | VOLATILE { - $$.init($1.loc); - $$.qualifier.volatil = true; - } - | RESTRICT { - $$.init($1.loc); - $$.qualifier.restrict = true; - } - | READONLY { - $$.init($1.loc); - $$.qualifier.readonly = true; - } - | WRITEONLY { - $$.init($1.loc); - $$.qualifier.writeonly = true; - } - | SUBROUTINE { - parseContext.spvRemoved($1.loc, "subroutine"); - parseContext.globalCheck($1.loc, "subroutine"); - parseContext.unimplemented($1.loc, "subroutine"); - $$.init($1.loc); - } - | SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN { - parseContext.spvRemoved($1.loc, "subroutine"); - parseContext.globalCheck($1.loc, "subroutine"); - parseContext.unimplemented($1.loc, "subroutine"); - $$.init($1.loc); - } - | TASKPAYLOADWORKGROUPEXT { - // No need for profile version or extension check. Shader stage already checks both. - parseContext.globalCheck($1.loc, "taskPayloadSharedEXT"); - parseContext.requireStage($1.loc, (EShLanguageMask)(EShLangTaskMask | EShLangMeshMask), "taskPayloadSharedEXT "); - $$.init($1.loc); - $$.qualifier.storage = EvqtaskPayloadSharedEXT; - } - ; - -non_uniform_qualifier - : NONUNIFORM { - $$.init($1.loc); - $$.qualifier.nonUniform = true; - } - ; - -type_name_list - : IDENTIFIER { - // TODO - } - | type_name_list COMMA IDENTIFIER { - // TODO: 4.0 semantics: subroutines - // 1) make sure each identifier is a type declared earlier with SUBROUTINE - // 2) save all of the identifiers for future comparison with the declared function - } - ; - -type_specifier - : type_specifier_nonarray type_parameter_specifier_opt { - $$ = $1; - $$.qualifier.precision = parseContext.getDefaultPrecision($$); - $$.typeParameters = $2; - parseContext.coopMatTypeParametersCheck($1.loc, $$); - - } - | type_specifier_nonarray type_parameter_specifier_opt array_specifier { - parseContext.arrayOfArrayVersionCheck($3.loc, $3.arraySizes); - $$ = $1; - $$.qualifier.precision = parseContext.getDefaultPrecision($$); - $$.typeParameters = $2; - $$.arraySizes = $3.arraySizes; - parseContext.coopMatTypeParametersCheck($1.loc, $$); - } - ; - -array_specifier - : LEFT_BRACKET RIGHT_BRACKET { - $$.loc = $1.loc; - $$.arraySizes = new TArraySizes; - $$.arraySizes->addInnerSize(); - } - | LEFT_BRACKET conditional_expression RIGHT_BRACKET { - $$.loc = $1.loc; - $$.arraySizes = new TArraySizes; - - TArraySize size; - parseContext.arraySizeCheck($2->getLoc(), $2, size, "array size"); - $$.arraySizes->addInnerSize(size); - } - | array_specifier LEFT_BRACKET RIGHT_BRACKET { - $$ = $1; - $$.arraySizes->addInnerSize(); - } - | array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET { - $$ = $1; - - TArraySize size; - parseContext.arraySizeCheck($3->getLoc(), $3, size, "array size"); - $$.arraySizes->addInnerSize(size); - } - ; - -type_parameter_specifier_opt - : type_parameter_specifier { - $$ = $1; - } - | /* May be null */ { - $$ = 0; - } - ; - -type_parameter_specifier - : LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE { - $$ = $2; - } - ; - -type_parameter_specifier_list - : type_specifier { - $$ = new TTypeParameters; - $$->arraySizes = new TArraySizes; - $$->basicType = $1.basicType; - } - | unary_expression { - $$ = new TTypeParameters; - $$->arraySizes = new TArraySizes; - - TArraySize size; - parseContext.arraySizeCheck($1->getLoc(), $1, size, "type parameter", true); - $$->arraySizes->addInnerSize(size); - } - | type_parameter_specifier_list COMMA unary_expression { - $$ = $1; - - TArraySize size; - parseContext.arraySizeCheck($3->getLoc(), $3, size, "type parameter", true); - $$->arraySizes->addInnerSize(size); - } - ; - -type_specifier_nonarray - : VOID { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtVoid; - } - | FLOAT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - } - | INT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - } - | UINT { - parseContext.fullIntegerCheck($1.loc, "unsigned integer"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - } - | BOOL { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - } - | VEC2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(2); - } - | VEC3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(3); - } - | VEC4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(4); - } - | BVEC2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - $$.setVector(2); - } - | BVEC3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - $$.setVector(3); - } - | BVEC4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtBool; - $$.setVector(4); - } - | IVEC2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(2); - } - | IVEC3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(3); - } - | IVEC4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(4); - } - | UVEC2 { - parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(2); - } - | UVEC3 { - parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(3); - } - | UVEC4 { - parseContext.fullIntegerCheck($1.loc, "unsigned integer vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(4); - } - | MAT2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | MAT3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | MAT4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } - | MAT2X2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | MAT2X3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 3); - } - | MAT2X4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 4); - } - | MAT3X2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 2); - } - | MAT3X3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | MAT3X4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 4); - } - | MAT4X2 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 2); - } - | MAT4X3 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 3); - } - | MAT4X4 { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } - | DOUBLE { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - } - | FLOAT16_T { - parseContext.float16ScalarVectorCheck($1.loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - } - | FLOAT32_T { - parseContext.explicitFloat32Check($1.loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - } - | FLOAT64_T { - parseContext.explicitFloat64Check($1.loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - } - | INT8_T { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - } - | UINT8_T { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - } - | INT16_T { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - } - | UINT16_T { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - } - | INT32_T { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - } - | UINT32_T { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - } - | INT64_T { - parseContext.int64Check($1.loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - } - | UINT64_T { - parseContext.int64Check($1.loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - } - | DVEC2 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(2); - } - | DVEC3 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(3); - } - | DVEC4 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double vector"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double vector"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(4); - } - | F16VEC2 { - parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setVector(2); - } - | F16VEC3 { - parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setVector(3); - } - | F16VEC4 { - parseContext.float16ScalarVectorCheck($1.loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setVector(4); - } - | F32VEC2 { - parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(2); - } - | F32VEC3 { - parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(3); - } - | F32VEC4 { - parseContext.explicitFloat32Check($1.loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setVector(4); - } - | F64VEC2 { - parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(2); - } - | F64VEC3 { - parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(3); - } - | F64VEC4 { - parseContext.explicitFloat64Check($1.loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setVector(4); - } - | I8VEC2 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - $$.setVector(2); - } - | I8VEC3 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - $$.setVector(3); - } - | I8VEC4 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt8; - $$.setVector(4); - } - | I16VEC2 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - $$.setVector(2); - } - | I16VEC3 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - $$.setVector(3); - } - | I16VEC4 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt16; - $$.setVector(4); - } - | I32VEC2 { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(2); - } - | I32VEC3 { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(3); - } - | I32VEC4 { - parseContext.explicitInt32Check($1.loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.setVector(4); - } - | I64VEC2 { - parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - $$.setVector(2); - } - | I64VEC3 { - parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - $$.setVector(3); - } - | I64VEC4 { - parseContext.int64Check($1.loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt64; - $$.setVector(4); - } - | U8VEC2 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - $$.setVector(2); - } - | U8VEC3 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - $$.setVector(3); - } - | U8VEC4 { - parseContext.int8ScalarVectorCheck($1.loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint8; - $$.setVector(4); - } - | U16VEC2 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - $$.setVector(2); - } - | U16VEC3 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - $$.setVector(3); - } - | U16VEC4 { - parseContext.int16ScalarVectorCheck($1.loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint16; - $$.setVector(4); - } - | U32VEC2 { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(2); - } - | U32VEC3 { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(3); - } - | U32VEC4 { - parseContext.explicitInt32Check($1.loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.setVector(4); - } - | U64VEC2 { - parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - $$.setVector(2); - } - | U64VEC3 { - parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - $$.setVector(3); - } - | U64VEC4 { - parseContext.int64Check($1.loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint64; - $$.setVector(4); - } - | DMAT2 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | DMAT3 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | DMAT4 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | DMAT2X2 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | DMAT2X3 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 3); - } - | DMAT2X4 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 4); - } - | DMAT3X2 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 2); - } - | DMAT3X3 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | DMAT3X4 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 4); - } - | DMAT4X2 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 2); - } - | DMAT4X3 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 3); - } - | DMAT4X4 { - parseContext.requireProfile($1.loc, ECoreProfile | ECompatibilityProfile, "double matrix"); - if (! parseContext.symbolTable.atBuiltInLevel()) - parseContext.doubleCheck($1.loc, "double matrix"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | F16MAT2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 2); - } - | F16MAT3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 3); - } - | F16MAT4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 4); - } - | F16MAT2X2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 2); - } - | F16MAT2X3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 3); - } - | F16MAT2X4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(2, 4); - } - | F16MAT3X2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 2); - } - | F16MAT3X3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 3); - } - | F16MAT3X4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(3, 4); - } - | F16MAT4X2 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 2); - } - | F16MAT4X3 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 3); - } - | F16MAT4X4 { - parseContext.float16Check($1.loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat16; - $$.setMatrix(4, 4); - } - | F32MAT2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | F32MAT3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | F32MAT4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } - | F32MAT2X2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 2); - } - | F32MAT2X3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 3); - } - | F32MAT2X4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(2, 4); - } - | F32MAT3X2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 2); - } - | F32MAT3X3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 3); - } - | F32MAT3X4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(3, 4); - } - | F32MAT4X2 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 2); - } - | F32MAT4X3 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 3); - } - | F32MAT4X4 { - parseContext.explicitFloat32Check($1.loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.setMatrix(4, 4); - } - | F64MAT2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | F64MAT3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | F64MAT4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | F64MAT2X2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 2); - } - | F64MAT2X3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 3); - } - | F64MAT2X4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(2, 4); - } - | F64MAT3X2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 2); - } - | F64MAT3X3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 3); - } - | F64MAT3X4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(3, 4); - } - | F64MAT4X2 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 2); - } - | F64MAT4X3 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 3); - } - | F64MAT4X4 { - parseContext.explicitFloat64Check($1.loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtDouble; - $$.setMatrix(4, 4); - } - | ACCSTRUCTNV { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtAccStruct; - } - | ACCSTRUCTEXT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtAccStruct; - } - | RAYQUERYEXT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtRayQuery; - } - | ATOMIC_UINT { - parseContext.vulkanRemoved($1.loc, "atomic counter types"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtAtomicUint; - } - | SAMPLER1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D); - } - | SAMPLER2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D); - } - | SAMPLER3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd3D); - } - | SAMPLERCUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdCube); - } - | SAMPLER2DSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, false, true); - } - | SAMPLERCUBESHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdCube, false, true); - } - | SAMPLER2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true); - } - | SAMPLER2DARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true, true); - } - | SAMPLER1DSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, false, true); - } - | SAMPLER1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, true); - } - | SAMPLER1DARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd1D, true, true); - } - | SAMPLERCUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdCube, true); - } - | SAMPLERCUBEARRAYSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdCube, true, true); - } - | F16SAMPLER1D { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D); - } - | F16SAMPLER2D { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D); - } - | F16SAMPLER3D { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd3D); - } - | F16SAMPLERCUBE { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube); - } - | F16SAMPLER1DSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, false, true); - } - | F16SAMPLER2DSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, false, true); - } - | F16SAMPLERCUBESHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, false, true); - } - | F16SAMPLER1DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, true); - } - | F16SAMPLER2DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true); - } - | F16SAMPLER1DARRAYSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd1D, true, true); - } - | F16SAMPLER2DARRAYSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true, true); - } - | F16SAMPLERCUBEARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, true); - } - | F16SAMPLERCUBEARRAYSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdCube, true, true); - } - | ISAMPLER1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D); - } - | ISAMPLER2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D); - } - | ISAMPLER3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd3D); - } - | ISAMPLERCUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdCube); - } - | ISAMPLER2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, true); - } - | USAMPLER2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D); - } - | USAMPLER3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd3D); - } - | USAMPLERCUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube); - } - | ISAMPLER1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd1D, true); - } - | ISAMPLERCUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdCube, true); - } - | USAMPLER1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D); - } - | USAMPLER1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd1D, true); - } - | USAMPLERCUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdCube, true); - } - | TEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube, true); - } - | ITEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube, true); - } - | UTEXTURECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube, true); - } - | USAMPLER2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D, true); - } - | TEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D); - } - | TEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd3D); - } - | TEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, true); - } - | TEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdCube); - } - | ITEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D); - } - | ITEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd3D); - } - | ITEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdCube); - } - | ITEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, true); - } - | UTEXTURE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D); - } - | UTEXTURE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd3D); - } - | UTEXTURECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdCube); - } - | UTEXTURE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, true); - } - | SAMPLER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(false); - } - | SAMPLERSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setPureSampler(true); - } - | SAMPLER2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdRect); - } - | SAMPLER2DRECTSHADOW { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdRect, false, true); - } - | F16SAMPLER2DRECT { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdRect); - } - | F16SAMPLER2DRECTSHADOW { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdRect, false, true); - } - | ISAMPLER2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdRect); - } - | USAMPLER2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdRect); - } - | SAMPLERBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, EsdBuffer); - } - | F16SAMPLERBUFFER { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, EsdBuffer); - } - | ISAMPLERBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, EsdBuffer); - } - | USAMPLERBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, EsdBuffer); - } - | SAMPLER2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, false, false, true); - } - | F16SAMPLER2DMS { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, false, false, true); - } - | ISAMPLER2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, false, false, true); - } - | USAMPLER2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D, false, false, true); - } - | SAMPLER2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D, true, false, true); - } - | F16SAMPLER2DMSARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat16, Esd2D, true, false, true); - } - | ISAMPLER2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtInt, Esd2D, true, false, true); - } - | USAMPLER2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtUint, Esd2D, true, false, true); - } - | TEXTURE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd1D); - } - | F16TEXTURE1D { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd1D); - } - | F16TEXTURE2D { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D); - } - | F16TEXTURE3D { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd3D); - } - | F16TEXTURECUBE { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdCube); - } - | TEXTURE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd1D, true); - } - | F16TEXTURE1DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd1D, true); - } - | F16TEXTURE2DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D, true); - } - | F16TEXTURECUBEARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdCube, true); - } - | ITEXTURE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd1D); - } - | ITEXTURE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd1D, true); - } - | UTEXTURE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd1D); - } - | UTEXTURE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd1D, true); - } - | TEXTURE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdRect); - } - | F16TEXTURE2DRECT { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdRect); - } - | ITEXTURE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdRect); - } - | UTEXTURE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdRect); - } - | TEXTUREBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, EsdBuffer); - } - | F16TEXTUREBUFFER { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, EsdBuffer); - } - | ITEXTUREBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, EsdBuffer); - } - | UTEXTUREBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, EsdBuffer); - } - | TEXTURE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, false, false, true); - } - | F16TEXTURE2DMS { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D, false, false, true); - } - | ITEXTURE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, false, false, true); - } - | UTEXTURE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, false, false, true); - } - | TEXTURE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat, Esd2D, true, false, true); - } - | F16TEXTURE2DMSARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtFloat16, Esd2D, true, false, true); - } - | ITEXTURE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtInt, Esd2D, true, false, true); - } - | UTEXTURE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setTexture(EbtUint, Esd2D, true, false, true); - } - | IMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd1D); - } - | F16IMAGE1D { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd1D); - } - | IIMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd1D); - } - | UIMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd1D); - } - | IMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D); - } - | F16IMAGE2D { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D); - } - | IIMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D); - } - | UIMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D); - } - | IMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd3D); - } - | F16IMAGE3D { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd3D); - } - | IIMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd3D); - } - | UIMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd3D); - } - | IMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdRect); - } - | F16IMAGE2DRECT { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdRect); - } - | IIMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdRect); - } - | UIMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdRect); - } - | IMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdCube); - } - | F16IMAGECUBE { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdCube); - } - | IIMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdCube); - } - | UIMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdCube); - } - | IMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdBuffer); - } - | F16IMAGEBUFFER { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdBuffer); - } - | IIMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdBuffer); - } - | UIMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdBuffer); - } - | IMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd1D, true); - } - | F16IMAGE1DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd1D, true); - } - | IIMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd1D, true); - } - | UIMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd1D, true); - } - | IMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D, true); - } - | F16IMAGE2DARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D, true); - } - | IIMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D, true); - } - | UIMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D, true); - } - | IMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, EsdCube, true); - } - | F16IMAGECUBEARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, EsdCube, true); - } - | IIMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, EsdCube, true); - } - | UIMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, EsdCube, true); - } - | IMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D, false, false, true); - } - | F16IMAGE2DMS { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D, false, false, true); - } - | IIMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D, false, false, true); - } - | UIMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D, false, false, true); - } - | IMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat, Esd2D, true, false, true); - } - | F16IMAGE2DMSARRAY { - parseContext.float16OpaqueCheck($1.loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtFloat16, Esd2D, true, false, true); - } - | IIMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt, Esd2D, true, false, true); - } - | UIMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint, Esd2D, true, false, true); - } - | I64IMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, Esd1D); - } - | U64IMAGE1D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, Esd1D); - } - | I64IMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, Esd2D); - } - | U64IMAGE2D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, Esd2D); - } - | I64IMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, Esd3D); - } - | U64IMAGE3D { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, Esd3D); - } - | I64IMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, EsdRect); - } - | U64IMAGE2DRECT { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, EsdRect); - } - | I64IMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, EsdCube); - } - | U64IMAGECUBE { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, EsdCube); - } - | I64IMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, EsdBuffer); - } - | U64IMAGEBUFFER { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, EsdBuffer); - } - | I64IMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, Esd1D, true); - } - | U64IMAGE1DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, Esd1D, true); - } - | I64IMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, Esd2D, true); - } - | U64IMAGE2DARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, Esd2D, true); - } - | I64IMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, EsdCube, true); - } - | U64IMAGECUBEARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, EsdCube, true); - } - | I64IMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, Esd2D, false, false, true); - } - | U64IMAGE2DMS { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, Esd2D, false, false, true); - } - | I64IMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtInt64, Esd2D, true, false, true); - } - | U64IMAGE2DMSARRAY { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setImage(EbtUint64, Esd2D, true, false, true); - } - | SAMPLEREXTERNALOES { // GL_OES_EGL_image_external - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D); - $$.sampler.external = true; - } - | SAMPLEREXTERNAL2DY2YEXT { // GL_EXT_YUV_target - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.set(EbtFloat, Esd2D); - $$.sampler.yuv = true; - } - | ATTACHMENTEXT { - parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setAttachmentEXT(EbtFloat); - } - | IATTACHMENTEXT { - parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setAttachmentEXT(EbtInt); - } - | UATTACHMENTEXT { - parseContext.requireStage($1.loc, EShLangFragment, "attachmentEXT input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setAttachmentEXT(EbtUint); - } - | SUBPASSINPUT { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat); - } - | SUBPASSINPUTMS { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat, true); - } - | F16SUBPASSINPUT { - parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat16); - } - | F16SUBPASSINPUTMS { - parseContext.float16OpaqueCheck($1.loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtFloat16, true); - } - | ISUBPASSINPUT { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtInt); - } - | ISUBPASSINPUTMS { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtInt, true); - } - | USUBPASSINPUT { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtUint); - } - | USUBPASSINPUTMS { - parseContext.requireStage($1.loc, EShLangFragment, "subpass input"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtSampler; - $$.sampler.setSubpass(EbtUint, true); - } - | FCOOPMATNV { - parseContext.fcoopmatCheckNV($1.loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtFloat; - $$.coopmatNV = true; - $$.coopmatKHR = false; - } - | ICOOPMATNV { - parseContext.intcoopmatCheckNV($1.loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtInt; - $$.coopmatNV = true; - $$.coopmatKHR = false; - } - | UCOOPMATNV { - parseContext.intcoopmatCheckNV($1.loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtUint; - $$.coopmatNV = true; - $$.coopmatKHR = false; - } - | COOPMAT { - parseContext.coopmatCheck($1.loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtCoopmat; - $$.coopmatNV = false; - $$.coopmatKHR = true; - } - | spirv_type_specifier { - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); - $$ = $1; - } - | HITOBJECTNV { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtHitObjectNV; - } - | struct_specifier { - $$ = $1; - $$.qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; - parseContext.structTypeCheck($$.loc, $$); - } - | TYPE_NAME { - // - // This is for user defined type names. The lexical phase looked up the - // type. - // - if (const TVariable* variable = ($1.symbol)->getAsVariable()) { - const TType& structure = variable->getType(); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.basicType = EbtStruct; - $$.userDef = &structure; - } else - parseContext.error($1.loc, "expected type name", $1.string->c_str(), ""); - } - ; - -precision_qualifier - : HIGH_PRECISION { - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "highp precision qualifier"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqHigh); - } - | MEDIUM_PRECISION { - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "mediump precision qualifier"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqMedium); - } - | LOW_PRECISION { - parseContext.profileRequires($1.loc, ENoProfile, 130, 0, "lowp precision qualifier"); - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.handlePrecisionQualifier($1.loc, $$.qualifier, EpqLow); - } - ; - -struct_specifier - : STRUCT IDENTIFIER LEFT_BRACE { parseContext.nestedStructCheck($1.loc); } struct_declaration_list RIGHT_BRACE { - TType* structure = new TType($5, *$2.string); - parseContext.structArrayCheck($2.loc, *structure); - TVariable* userTypeDef = new TVariable($2.string, *structure, true); - if (! parseContext.symbolTable.insert(*userTypeDef)) - parseContext.error($2.loc, "redefinition", $2.string->c_str(), "struct"); - $$.init($1.loc); - $$.basicType = EbtStruct; - $$.userDef = structure; - --parseContext.structNestingLevel; - } - | STRUCT LEFT_BRACE { parseContext.nestedStructCheck($1.loc); } struct_declaration_list RIGHT_BRACE { - TType* structure = new TType($4, TString("")); - $$.init($1.loc); - $$.basicType = EbtStruct; - $$.userDef = structure; - --parseContext.structNestingLevel; - } - ; - -struct_declaration_list - : struct_declaration { - $$ = $1; - } - | struct_declaration_list struct_declaration { - $$ = $1; - for (unsigned int i = 0; i < $2->size(); ++i) { - for (unsigned int j = 0; j < $$->size(); ++j) { - if ((*$$)[j].type->getFieldName() == (*$2)[i].type->getFieldName()) - parseContext.error((*$2)[i].loc, "duplicate member name:", "", (*$2)[i].type->getFieldName().c_str()); - } - $$->push_back((*$2)[i]); - } - } - ; - -struct_declaration - : type_specifier struct_declarator_list SEMICOLON { - if ($1.arraySizes) { - parseContext.profileRequires($1.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires($1.loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.isEsProfile()) - parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); - } - - $$ = $2; - - parseContext.voidErrorCheck($1.loc, (*$2)[0].type->getFieldName(), $1.basicType); - parseContext.precisionQualifierCheck($1.loc, $1.basicType, $1.qualifier, $1.isCoopmat()); - - for (unsigned int i = 0; i < $$->size(); ++i) { - TType type($1); - type.setFieldName((*$$)[i].type->getFieldName()); - type.transferArraySizes((*$$)[i].type->getArraySizes()); - type.copyArrayInnerSizes($1.arraySizes); - parseContext.arrayOfArrayVersionCheck((*$$)[i].loc, type.getArraySizes()); - (*$$)[i].type->shallowCopy(type); - } - } - | type_qualifier type_specifier struct_declarator_list SEMICOLON { - if ($2.arraySizes) { - parseContext.profileRequires($2.loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); - parseContext.profileRequires($2.loc, EEsProfile, 300, 0, "arrayed type"); - if (parseContext.isEsProfile()) - parseContext.arraySizeRequiredCheck($2.loc, *$2.arraySizes); - } - - $$ = $3; - - parseContext.memberQualifierCheck($1); - parseContext.voidErrorCheck($2.loc, (*$3)[0].type->getFieldName(), $2.basicType); - parseContext.mergeQualifiers($2.loc, $2.qualifier, $1.qualifier, true); - parseContext.precisionQualifierCheck($2.loc, $2.basicType, $2.qualifier, $2.isCoopmat()); - - for (unsigned int i = 0; i < $$->size(); ++i) { - TType type($2); - type.setFieldName((*$$)[i].type->getFieldName()); - type.transferArraySizes((*$$)[i].type->getArraySizes()); - type.copyArrayInnerSizes($2.arraySizes); - parseContext.arrayOfArrayVersionCheck((*$$)[i].loc, type.getArraySizes()); - (*$$)[i].type->shallowCopy(type); - } - } - ; - -struct_declarator_list - : struct_declarator { - $$ = new TTypeList; - $$->push_back($1); - } - | struct_declarator_list COMMA struct_declarator { - $$->push_back($3); - } - ; - -struct_declarator - : IDENTIFIER { - $$.type = new TType(EbtVoid); - $$.loc = $1.loc; - $$.type->setFieldName(*$1.string); - } - | IDENTIFIER array_specifier { - parseContext.arrayOfArrayVersionCheck($1.loc, $2.arraySizes); - - $$.type = new TType(EbtVoid); - $$.loc = $1.loc; - $$.type->setFieldName(*$1.string); - $$.type->transferArraySizes($2.arraySizes); - } - ; - -initializer - : assignment_expression { - $$ = $1; - } - | LEFT_BRACE initializer_list RIGHT_BRACE { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); - parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - $$ = $2; - } - | LEFT_BRACE initializer_list COMMA RIGHT_BRACE { - const char* initFeature = "{ } style initializers"; - parseContext.requireProfile($1.loc, ~EEsProfile, initFeature); - parseContext.profileRequires($1.loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); - $$ = $2; - } - | LEFT_BRACE RIGHT_BRACE { - const char* initFeature = "empty { } initializer"; - parseContext.profileRequires($1.loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); - parseContext.profileRequires($1.loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); - $$ = parseContext.intermediate.makeAggregate($1.loc); - } - ; - -initializer_list - : initializer { - $$ = parseContext.intermediate.growAggregate(0, $1, $1->getLoc()); - } - | initializer_list COMMA initializer { - $$ = parseContext.intermediate.growAggregate($1, $3); - } - ; - -declaration_statement - : declaration { $$ = $1; } - ; - -statement - : compound_statement { $$ = $1; } - | simple_statement { $$ = $1; } - ; - -// Grammar Note: labeled statements for switch statements only; 'goto' is not supported. - -simple_statement - : declaration_statement { $$ = $1; } - | expression_statement { $$ = $1; } - | selection_statement { $$ = $1; } - | switch_statement { $$ = $1; } - | case_label { $$ = $1; } - | iteration_statement { $$ = $1; } - | jump_statement { $$ = $1; } - | demote_statement { $$ = $1; } - ; - -demote_statement - : DEMOTE SEMICOLON { - parseContext.requireStage($1.loc, EShLangFragment, "demote"); - parseContext.requireExtensions($1.loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); - $$ = parseContext.intermediate.addBranch(EOpDemote, $1.loc); - } - ; - -compound_statement - : LEFT_BRACE RIGHT_BRACE { $$ = 0; } - | LEFT_BRACE { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; - } - statement_list { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.statementNestingLevel; - } - RIGHT_BRACE { - if ($3 && $3->getAsAggregate()) - $3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); - $$ = $3; - } - ; - -statement_no_new_scope - : compound_statement_no_new_scope { $$ = $1; } - | simple_statement { $$ = $1; } - ; - -statement_scoped - : { - ++parseContext.controlFlowNestingLevel; - } - compound_statement { - --parseContext.controlFlowNestingLevel; - $$ = $2; - } - | { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; - } - simple_statement { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; - $$ = $2; - } - -compound_statement_no_new_scope - // Statement that doesn't create a new scope, for selection_statement, iteration_statement - : LEFT_BRACE RIGHT_BRACE { - $$ = 0; - } - | LEFT_BRACE statement_list RIGHT_BRACE { - if ($2 && $2->getAsAggregate()) - $2->getAsAggregate()->setOperator(EOpSequence); - $$ = $2; - } - ; - -statement_list - : statement { - $$ = parseContext.intermediate.makeAggregate($1); - if ($1 && $1->getAsBranchNode() && ($1->getAsBranchNode()->getFlowOp() == EOpCase || - $1->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence(0, $1); - $$ = 0; // start a fresh subsequence for what's after this case - } - } - | statement_list statement { - if ($2 && $2->getAsBranchNode() && ($2->getAsBranchNode()->getFlowOp() == EOpCase || - $2->getAsBranchNode()->getFlowOp() == EOpDefault)) { - parseContext.wrapupSwitchSubsequence($1 ? $1->getAsAggregate() : 0, $2); - $$ = 0; // start a fresh subsequence for what's after this case - } else - $$ = parseContext.intermediate.growAggregate($1, $2); - } - ; - -expression_statement - : SEMICOLON { $$ = 0; } - | expression SEMICOLON { $$ = static_cast($1); } - ; - -selection_statement - : selection_statement_nonattributed { - $$ = $1; - } - | attribute selection_statement_nonattributed { - parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); - parseContext.handleSelectionAttributes(*$1, $2); - $$ = $2; - } - -selection_statement_nonattributed - : IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement { - parseContext.boolCheck($1.loc, $3); - $$ = parseContext.intermediate.addSelection($3, $5, $1.loc); - } - ; - -selection_rest_statement - : statement_scoped ELSE statement_scoped { - $$.node1 = $1; - $$.node2 = $3; - } - | statement_scoped { - $$.node1 = $1; - $$.node2 = 0; - } - ; - -condition - // In 1996 c++ draft, conditions can include single declarations - : expression { - $$ = $1; - parseContext.boolCheck($1->getLoc(), $1); - } - | fully_specified_type IDENTIFIER EQUAL initializer { - parseContext.boolCheck($2.loc, $1); - - TType type($1); - TIntermNode* initNode = parseContext.declareVariable($2.loc, *$2.string, $1, 0, $4); - if (initNode) - $$ = initNode->getAsTyped(); - else - $$ = 0; - } - ; - -switch_statement - : switch_statement_nonattributed { - $$ = $1; - } - | attribute switch_statement_nonattributed { - parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); - parseContext.handleSwitchAttributes(*$1, $2); - $$ = $2; - } - -switch_statement_nonattributed - : SWITCH LEFT_PAREN expression RIGHT_PAREN { - // start new switch sequence on the switch stack - ++parseContext.controlFlowNestingLevel; - ++parseContext.statementNestingLevel; - parseContext.switchSequenceStack.push_back(new TIntermSequence); - parseContext.switchLevel.push_back(parseContext.statementNestingLevel); - parseContext.symbolTable.push(); - } - LEFT_BRACE switch_statement_list RIGHT_BRACE { - $$ = parseContext.addSwitch($1.loc, $3, $7 ? $7->getAsAggregate() : 0); - delete parseContext.switchSequenceStack.back(); - parseContext.switchSequenceStack.pop_back(); - parseContext.switchLevel.pop_back(); - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; - } - ; - -switch_statement_list - : /* nothing */ { - $$ = 0; - } - | statement_list { - $$ = $1; - } - ; - -case_label - : CASE expression COLON { - $$ = 0; - if (parseContext.switchLevel.size() == 0) - parseContext.error($1.loc, "cannot appear outside switch statement", "case", ""); - else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error($1.loc, "cannot be nested inside control flow", "case", ""); - else { - parseContext.constantValueCheck($2, "case"); - parseContext.integerCheck($2, "case"); - $$ = parseContext.intermediate.addBranch(EOpCase, $2, $1.loc); - } - } - | DEFAULT COLON { - $$ = 0; - if (parseContext.switchLevel.size() == 0) - parseContext.error($1.loc, "cannot appear outside switch statement", "default", ""); - else if (parseContext.switchLevel.back() != parseContext.statementNestingLevel) - parseContext.error($1.loc, "cannot be nested inside control flow", "default", ""); - else - $$ = parseContext.intermediate.addBranch(EOpDefault, $1.loc); - } - ; - -iteration_statement - : iteration_statement_nonattributed { - $$ = $1; - } - | attribute iteration_statement_nonattributed { - parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); - parseContext.handleLoopAttributes(*$1, $2); - $$ = $2; - } - -iteration_statement_nonattributed - : WHILE LEFT_PAREN { - if (! parseContext.limits.whileLoops) - parseContext.error($1.loc, "while loops not available", "limitation", ""); - parseContext.symbolTable.push(); - ++parseContext.loopNestingLevel; - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; - } - condition RIGHT_PAREN statement_no_new_scope { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - $$ = parseContext.intermediate.addLoop($6, $4, 0, true, $1.loc); - --parseContext.loopNestingLevel; - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; - } - | DO { - parseContext.symbolTable.push(); - ++parseContext.loopNestingLevel; - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; - } - statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON { - if (! parseContext.limits.whileLoops) - parseContext.error($1.loc, "do-while loops not available", "limitation", ""); - - parseContext.boolCheck($8.loc, $6); - - $$ = parseContext.intermediate.addLoop($3, $6, 0, false, $4.loc); - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.loopNestingLevel; - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; - } - | FOR LEFT_PAREN { - parseContext.symbolTable.push(); - ++parseContext.loopNestingLevel; - ++parseContext.statementNestingLevel; - ++parseContext.controlFlowNestingLevel; - } - for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - $$ = parseContext.intermediate.makeAggregate($4, $2.loc); - TIntermLoop* forLoop = parseContext.intermediate.addLoop($7, reinterpret_cast($5.node1), reinterpret_cast($5.node2), true, $1.loc); - if (! parseContext.limits.nonInductiveForLoops) - parseContext.inductiveLoopCheck($1.loc, $4, forLoop); - $$ = parseContext.intermediate.growAggregate($$, forLoop, $1.loc); - $$->getAsAggregate()->setOperator(EOpSequence); - --parseContext.loopNestingLevel; - --parseContext.statementNestingLevel; - --parseContext.controlFlowNestingLevel; - } - ; - -for_init_statement - : expression_statement { - $$ = $1; - } - | declaration_statement { - $$ = $1; - } - ; - -conditionopt - : condition { - $$ = $1; - } - | /* May be null */ { - $$ = 0; - } - ; - -for_rest_statement - : conditionopt SEMICOLON { - $$.node1 = $1; - $$.node2 = 0; - } - | conditionopt SEMICOLON expression { - $$.node1 = $1; - $$.node2 = $3; - } - ; - -jump_statement - : CONTINUE SEMICOLON { - if (parseContext.loopNestingLevel <= 0) - parseContext.error($1.loc, "continue statement only allowed in loops", "", ""); - $$ = parseContext.intermediate.addBranch(EOpContinue, $1.loc); - } - | BREAK SEMICOLON { - if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) - parseContext.error($1.loc, "break statement only allowed in switch and loops", "", ""); - $$ = parseContext.intermediate.addBranch(EOpBreak, $1.loc); - } - | RETURN SEMICOLON { - $$ = parseContext.intermediate.addBranch(EOpReturn, $1.loc); - if (parseContext.currentFunctionType->getBasicType() != EbtVoid) - parseContext.error($1.loc, "non-void function must return a value", "return", ""); - if (parseContext.inMain) - parseContext.postEntryPointReturn = true; - } - | RETURN expression SEMICOLON { - $$ = parseContext.handleReturnValue($1.loc, $2); - } - | DISCARD SEMICOLON { - parseContext.requireStage($1.loc, EShLangFragment, "discard"); - $$ = parseContext.intermediate.addBranch(EOpKill, $1.loc); - } - | TERMINATE_INVOCATION SEMICOLON { - parseContext.requireStage($1.loc, EShLangFragment, "terminateInvocation"); - $$ = parseContext.intermediate.addBranch(EOpTerminateInvocation, $1.loc); - } - | TERMINATE_RAY SEMICOLON { - parseContext.requireStage($1.loc, EShLangAnyHit, "terminateRayEXT"); - $$ = parseContext.intermediate.addBranch(EOpTerminateRayKHR, $1.loc); - } - | IGNORE_INTERSECTION SEMICOLON { - parseContext.requireStage($1.loc, EShLangAnyHit, "ignoreIntersectionEXT"); - $$ = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, $1.loc); - } - ; - -// Grammar Note: No 'goto'. Gotos are not supported. - -translation_unit - : external_declaration { - $$ = $1; - parseContext.intermediate.setTreeRoot($$); - } - | translation_unit external_declaration { - if ($2 != nullptr) { - $$ = parseContext.intermediate.growAggregate($1, $2); - parseContext.intermediate.setTreeRoot($$); - } - } - ; - -external_declaration - : function_definition { - $$ = $1; - } - | declaration { - $$ = $1; - } - | SEMICOLON { - parseContext.requireProfile($1.loc, ~EEsProfile, "extraneous semicolon"); - parseContext.profileRequires($1.loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); - $$ = nullptr; - } - ; - -function_definition - : function_prototype { - $1.function = parseContext.handleFunctionDeclarator($1.loc, *$1.function, false /* not prototype */); - $1.intermNode = parseContext.handleFunctionDefinition($1.loc, *$1.function); - - // For ES 100 only, according to ES shading language 100 spec: A function - // body has a scope nested inside the function's definition. - if (parseContext.profile == EEsProfile && parseContext.version == 100) - { - parseContext.symbolTable.push(); - ++parseContext.statementNestingLevel; - } - } - compound_statement_no_new_scope { - // May be best done as post process phase on intermediate code - if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) - parseContext.error($1.loc, "function does not return a value:", "", $1.function->getName().c_str()); - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - $$ = parseContext.intermediate.growAggregate($1.intermNode, $3); - parseContext.intermediate.setAggregateOperator($$, EOpFunction, $1.function->getType(), $1.loc); - $$->getAsAggregate()->setName($1.function->getMangledName().c_str()); - - // store the pragma information for debug and optimize and other vendor specific - // information. This information can be queried from the parse tree - $$->getAsAggregate()->setOptimize(parseContext.contextPragma.optimize); - $$->getAsAggregate()->setDebug(parseContext.contextPragma.debug); - $$->getAsAggregate()->setPragmaTable(parseContext.contextPragma.pragmaTable); - - // Set currentFunctionType to empty pointer when goes outside of the function - parseContext.currentFunctionType = nullptr; - - // For ES 100 only, according to ES shading language 100 spec: A function - // body has a scope nested inside the function's definition. - if (parseContext.profile == EEsProfile && parseContext.version == 100) - { - parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); - --parseContext.statementNestingLevel; - } - } - ; - -attribute - : LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET { - $$ = $3; - } - -attribute_list - : single_attribute { - $$ = $1; - } - | attribute_list COMMA single_attribute { - $$ = parseContext.mergeAttributes($1, $3); - } - -single_attribute - : IDENTIFIER { - $$ = parseContext.makeAttributes(*$1.string); - } - | IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN { - $$ = parseContext.makeAttributes(*$1.string, $3); - } - -spirv_requirements_list - : spirv_requirements_parameter { - $$ = $1; - } - | spirv_requirements_list COMMA spirv_requirements_parameter { - $$ = parseContext.mergeSpirvRequirements($2.loc, $1, $3); - } - -spirv_requirements_parameter - : IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET { - $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, $4->getAsAggregate(), nullptr); - } - | IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET { - $$ = parseContext.makeSpirvRequirement($2.loc, *$1.string, nullptr, $4->getAsAggregate()); - } - -spirv_extension_list - : STRING_LITERAL { - $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); - } - | spirv_extension_list COMMA STRING_LITERAL { - $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); - } - -spirv_capability_list - : INTCONSTANT { - $$ = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion($1.i, $1.loc, true)); - } - | spirv_capability_list COMMA INTCONSTANT { - $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.i, $3.loc, true)); - } - -spirv_execution_mode_qualifier - : SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN { - parseContext.intermediate.insertSpirvExecutionMode($3.i); - $$ = 0; - } - | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { - parseContext.intermediate.insertSpirvRequirement($3); - parseContext.intermediate.insertSpirvExecutionMode($5.i); - $$ = 0; - } - | SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { - parseContext.intermediate.insertSpirvExecutionMode($3.i, $5->getAsAggregate()); - $$ = 0; - } - | SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN { - parseContext.intermediate.insertSpirvRequirement($3); - parseContext.intermediate.insertSpirvExecutionMode($5.i, $7->getAsAggregate()); - $$ = 0; - } - | SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { - parseContext.intermediate.insertSpirvExecutionModeId($3.i, $5->getAsAggregate()); - $$ = 0; - } - | SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN { - parseContext.intermediate.insertSpirvRequirement($3); - parseContext.intermediate.insertSpirvExecutionModeId($5.i, $7->getAsAggregate()); - $$ = 0; - } - -spirv_execution_mode_parameter_list - : spirv_execution_mode_parameter { - $$ = parseContext.intermediate.makeAggregate($1); - } - | spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter { - $$ = parseContext.intermediate.growAggregate($1, $3); - } - -spirv_execution_mode_parameter - : FLOATCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); - } - | INTCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); - } - | UINTCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); - } - | BOOLCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); - } - | STRING_LITERAL { - $$ = parseContext.intermediate.addConstantUnion($1.string, $1.loc, true); - } - -spirv_execution_mode_id_parameter_list - : constant_expression { - if ($1->getBasicType() != EbtFloat && - $1->getBasicType() != EbtInt && - $1->getBasicType() != EbtUint && - $1->getBasicType() != EbtBool && - $1->getBasicType() != EbtString) - parseContext.error($1->getLoc(), "this type not allowed", $1->getType().getBasicString(), ""); - $$ = parseContext.intermediate.makeAggregate($1); - } - | spirv_execution_mode_id_parameter_list COMMA constant_expression { - if ($3->getBasicType() != EbtFloat && - $3->getBasicType() != EbtInt && - $3->getBasicType() != EbtUint && - $3->getBasicType() != EbtBool && - $3->getBasicType() != EbtString) - parseContext.error($3->getLoc(), "this type not allowed", $3->getType().getBasicString(), ""); - $$ = parseContext.intermediate.growAggregate($1, $3); - } - -spirv_storage_class_qualifier - : SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN { - $$.init($1.loc); - $$.qualifier.storage = EvqSpirvStorageClass; - $$.qualifier.spirvStorageClass = $3.i; - } - | SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN { - $$.init($1.loc); - parseContext.intermediate.insertSpirvRequirement($3); - $$.qualifier.storage = EvqSpirvStorageClass; - $$.qualifier.spirvStorageClass = $5.i; - } - -spirv_decorate_qualifier - : SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN{ - $$.init($1.loc); - $$.qualifier.setSpirvDecorate($3.i); - } - | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN{ - $$.init($1.loc); - parseContext.intermediate.insertSpirvRequirement($3); - $$.qualifier.setSpirvDecorate($5.i); - } - | SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { - $$.init($1.loc); - $$.qualifier.setSpirvDecorate($3.i, $5->getAsAggregate()); - } - | SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN { - $$.init($1.loc); - parseContext.intermediate.insertSpirvRequirement($3); - $$.qualifier.setSpirvDecorate($5.i, $7->getAsAggregate()); - } - | SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { - $$.init($1.loc); - $$.qualifier.setSpirvDecorateId($3.i, $5->getAsAggregate()); - } - | SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN { - $$.init($1.loc); - parseContext.intermediate.insertSpirvRequirement($3); - $$.qualifier.setSpirvDecorateId($5.i, $7->getAsAggregate()); - } - | SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { - $$.init($1.loc); - $$.qualifier.setSpirvDecorateString($3.i, $5->getAsAggregate()); - } - | SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN { - $$.init($1.loc); - parseContext.intermediate.insertSpirvRequirement($3); - $$.qualifier.setSpirvDecorateString($5.i, $7->getAsAggregate()); - } - -spirv_decorate_parameter_list - : spirv_decorate_parameter { - $$ = parseContext.intermediate.makeAggregate($1); - } - | spirv_decorate_parameter_list COMMA spirv_decorate_parameter { - $$ = parseContext.intermediate.growAggregate($1, $3); - } - -spirv_decorate_parameter - : FLOATCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); - } - | INTCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); - } - | UINTCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); - } - | BOOLCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); - } - -spirv_decorate_id_parameter_list - : spirv_decorate_id_parameter { - $$ = parseContext.intermediate.makeAggregate($1); - } - | spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter { - $$ = parseContext.intermediate.growAggregate($1, $3); - } - -spirv_decorate_id_parameter - : variable_identifier { - if ($1->getAsConstantUnion() || $1->getAsSymbolNode()) - $$ = $1; - else - parseContext.error($1->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); - } - | FLOATCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.d, EbtFloat, $1.loc, true); - } - | INTCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.i, $1.loc, true); - } - | UINTCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.u, $1.loc, true); - } - | BOOLCONSTANT { - $$ = parseContext.intermediate.addConstantUnion($1.b, $1.loc, true); - } - -spirv_decorate_string_parameter_list - : STRING_LITERAL { - $$ = parseContext.intermediate.makeAggregate( - parseContext.intermediate.addConstantUnion($1.string, $1.loc, true)); - } - | spirv_decorate_string_parameter_list COMMA STRING_LITERAL { - $$ = parseContext.intermediate.growAggregate($1, parseContext.intermediate.addConstantUnion($3.string, $3.loc, true)); - } - -spirv_type_specifier - : SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.setSpirvType(*$3, $5); - } - | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.intermediate.insertSpirvRequirement($3); - $$.setSpirvType(*$5, $7); - } - | SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - $$.setSpirvType(*$3); - } - | SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { - $$.init($1.loc, parseContext.symbolTable.atGlobalLevel()); - parseContext.intermediate.insertSpirvRequirement($3); - $$.setSpirvType(*$5); - } - -spirv_type_parameter_list - : spirv_type_parameter { - $$ = $1; - } - | spirv_type_parameter_list COMMA spirv_type_parameter { - $$ = parseContext.mergeSpirvTypeParameters($1, $3); - } - -spirv_type_parameter - : constant_expression { - $$ = parseContext.makeSpirvTypeParameters($1->getLoc(), $1->getAsConstantUnion()); - } - | type_specifier_nonarray { - $$ = parseContext.makeSpirvTypeParameters($1.loc, $1); - } - -spirv_instruction_qualifier - : SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN { - $$ = $3; - } - | SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN { - parseContext.intermediate.insertSpirvRequirement($3); - $$ = $5; - } - -spirv_instruction_qualifier_list - : spirv_instruction_qualifier_id { - $$ = $1; - } - | spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id { - $$ = parseContext.mergeSpirvInstruction($2.loc, $1, $3); - } - -spirv_instruction_qualifier_id - : IDENTIFIER EQUAL STRING_LITERAL { - $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, *$3.string); - } - | IDENTIFIER EQUAL INTCONSTANT { - $$ = parseContext.makeSpirvInstruction($2.loc, *$1.string, $3.i); - } - -%% diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 7463581ae8..d47f29259a 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -37,14 +37,6 @@ // POSSIBILITY OF SUCH DAMAGE. // -// -// Do not edit the .y file, only edit the .m4 file. -// The .y bison file is not a source file, it is a derivative of the .m4 file. -// The m4 file needs to be processed by m4 to generate the .y bison file. -// -// m4 -P -// - /** * This is bison grammar and productions for parsing all versions of the * GLSL shading languages. diff --git a/glslang/updateGrammar b/glslang/updateGrammar index 4746d89dc6..a15dc24b30 100755 --- a/glslang/updateGrammar +++ b/glslang/updateGrammar @@ -1,4 +1,4 @@ -#!/bin/bash +#!/bin/sh # Copyright (C) 2020 The Khronos Group Inc. # @@ -33,5 +33,4 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -m4 -P MachineIndependent/glslang.m4 > MachineIndependent/glslang.y bison --defines=MachineIndependent/glslang_tab.cpp.h -t MachineIndependent/glslang.y -o MachineIndependent/glslang_tab.cpp From 171a322025bb7b9ab10c1a968e5fe60bd3325694 Mon Sep 17 00:00:00 2001 From: Tim Biermann Date: Sun, 23 Jul 2023 16:56:12 +0200 Subject: [PATCH 255/594] respect destdir for compat symlink --- StandAlone/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index d146063007..b09665456b 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -121,7 +121,7 @@ if(ENABLE_GLSLANG_INSTALL) # Create the same symlink at install time install(CODE "execute_process( \ COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} \ - WORKING_DIRECTORY ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") + WORKING_DIRECTORY \$ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") if(ENABLE_SPVREMAPPER) install(TARGETS spirv-remap EXPORT glslang-targets) From 396596ca4a5fa12872783505568aac9c6bdd9d1d Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 31 Jul 2023 14:45:11 -0600 Subject: [PATCH 256/594] Replace GlobalLock functions with std::mutex The usage of GetGlobalLock/ReleaseGlobalLock/InitGlobalLock is replaced by std::lock_guard which is available as of c++11, and the functions are removed from the OSDependent ossource.cpp files. The standalone glslang binary now explicitly depends on OSDependent, as nothing in in the glslang library uses those functions anymore and they are not implicitly picked up by the linker. --- StandAlone/CMakeLists.txt | 1 + glslang/MachineIndependent/ShaderLang.cpp | 26 ++++++----------- glslang/OSDependent/Unix/ossource.cpp | 35 ----------------------- glslang/OSDependent/Windows/ossource.cpp | 24 ---------------- glslang/OSDependent/osinclude.h | 6 ---- 5 files changed, 10 insertions(+), 82 deletions(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index b09665456b..e25f5db869 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -54,6 +54,7 @@ glslang_set_link_args(glslang-standalone) set(LIBRARIES glslang + OSDependent SPIRV glslang-default-resource-limits) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 400a5bdebb..51c524bbec 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include "SymbolTable.h" #include "ParseHelper.h" #include "Scan.h" @@ -81,6 +82,9 @@ namespace { // anonymous namespace for file-local functions and symbols // Shared global; access should be protected by a global mutex/critical section. int NumberOfClients = 0; +// global initialization lock +std::mutex init_lock; + using namespace glslang; // Create a language specific version of parseables. @@ -417,18 +421,15 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp TInfoSink infoSink; // Make sure only one thread tries to do this at a time - glslang::GetGlobalLock(); + const std::lock_guard lock(init_lock); // See if it's already been done for this version/profile combination int versionIndex = MapVersionToIndex(version); int spvVersionIndex = MapSpvVersionToIndex(spvVersion); int profileIndex = MapProfileToIndex(profile); int sourceIndex = MapSourceToIndex(source); - if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) { - glslang::ReleaseGlobalLock(); - + if (CommonSymbolTable[versionIndex][spvVersionIndex][profileIndex][sourceIndex][EPcGeneral]) return; - } // Switch to a new pool TPoolAllocator& previousAllocator = GetThreadPoolAllocator(); @@ -475,8 +476,6 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp delete builtInPoolAllocator; SetThreadPoolAllocator(&previousAllocator); - - glslang::ReleaseGlobalLock(); } // Function to Print all builtins @@ -1297,12 +1296,10 @@ bool CompileDeferred( // int ShInitialize() { - glslang::InitGlobalLock(); - if (! InitProcess()) return 0; - glslang::GetGlobalLock(); + const std::lock_guard lock(init_lock); ++NumberOfClients; if (PerProcessGPA == nullptr) @@ -1313,7 +1310,6 @@ int ShInitialize() glslang::HlslScanContext::fillInKeywordMap(); #endif - glslang::ReleaseGlobalLock(); return 1; } @@ -1372,14 +1368,11 @@ void ShDestruct(ShHandle handle) // int ShFinalize() { - glslang::GetGlobalLock(); + const std::lock_guard lock(init_lock); --NumberOfClients; assert(NumberOfClients >= 0); - bool finalize = NumberOfClients == 0; - if (! finalize) { - glslang::ReleaseGlobalLock(); + if (NumberOfClients > 0) return 1; - } for (int version = 0; version < VersionCount; ++version) { for (int spvVersion = 0; spvVersion < SpvVersionCount; ++spvVersion) { @@ -1417,7 +1410,6 @@ int ShFinalize() glslang::HlslScanContext::deleteKeywordMap(); #endif - glslang::ReleaseGlobalLock(); return 1; } diff --git a/glslang/OSDependent/Unix/ossource.cpp b/glslang/OSDependent/Unix/ossource.cpp index 2b20349dc2..fbb51f7bd1 100644 --- a/glslang/OSDependent/Unix/ossource.cpp +++ b/glslang/OSDependent/Unix/ossource.cpp @@ -36,15 +36,8 @@ // This file contains the Linux-specific functions // #include "../osinclude.h" -#include "../../../OGLCompilersDLL/InitializeDll.h" -#include -#include -#include -#include -#include #include -#include #if !defined(__Fuchsia__) #include @@ -52,34 +45,6 @@ namespace glslang { -namespace { - pthread_mutex_t gMutex; -} - -static void InitMutex(void) -{ - pthread_mutexattr_t mutexattr; - pthread_mutexattr_init(&mutexattr); - pthread_mutexattr_settype(&mutexattr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(&gMutex, &mutexattr); -} - -void InitGlobalLock() -{ - static pthread_once_t once = PTHREAD_ONCE_INIT; - pthread_once(&once, InitMutex); -} - -void GetGlobalLock() -{ - pthread_mutex_lock(&gMutex); -} - -void ReleaseGlobalLock() -{ - pthread_mutex_unlock(&gMutex); -} - // #define DUMP_COUNTERS void OS_DumpMemoryCounters() diff --git a/glslang/OSDependent/Windows/ossource.cpp b/glslang/OSDependent/Windows/ossource.cpp index 64d0b174e3..d7f89f71b6 100644 --- a/glslang/OSDependent/Windows/ossource.cpp +++ b/glslang/OSDependent/Windows/ossource.cpp @@ -37,11 +37,9 @@ #define STRICT #define VC_EXTRALEAN 1 #include -#include #include #include #include -#include // // This file contains the Window-OS-specific functions @@ -53,28 +51,6 @@ namespace glslang { -HANDLE GlobalLock; - -void InitGlobalLock() -{ - GlobalLock = CreateMutex(nullptr, false, nullptr); -} - -void GetGlobalLock() -{ - WaitForSingleObject(GlobalLock, INFINITE); -} - -void ReleaseGlobalLock() -{ - ReleaseMutex(GlobalLock); -} - -unsigned int __stdcall EnterGenericThread (void* entry) -{ - return ((TThreadEntrypoint)entry)(nullptr); -} - //#define DUMP_COUNTERS void OS_DumpMemoryCounters() diff --git a/glslang/OSDependent/osinclude.h b/glslang/OSDependent/osinclude.h index c118b553c5..0d677e4afd 100644 --- a/glslang/OSDependent/osinclude.h +++ b/glslang/OSDependent/osinclude.h @@ -37,12 +37,6 @@ namespace glslang { -void InitGlobalLock(); -void GetGlobalLock(); -void ReleaseGlobalLock(); - -typedef unsigned int (*TThreadEntrypoint)(void*); - void OS_DumpMemoryCounters(); } // end namespace glslang From bfd96d3044e1e2b0522a71166203ed4ddcf8d6e5 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 1 Aug 2023 17:53:23 -0600 Subject: [PATCH 257/594] Add emscripten build to CI Adds a build-only (no test) job for testing the emscripten (web) build on github actions. --- .github/workflows/continuous_integration.yml | 24 ++++++++++++++++++++ README.md | 4 ++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 2de827bd86..4b72962a25 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -227,3 +227,27 @@ jobs: CMAKE_CXX_COMPILER_LAUNCHER: ccache - name: Build run: cmake --build build/ + + emscripten: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: '3.7' + - uses: lukka/get-cmake@latest + - name: Setup ccache + uses: hendrikmuhs/ccache-action@v1.2 + with: + key: ubuntu-emscripten + - uses: mymindstorm/setup-emsdk@v11 + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DBUILD_TESTING=OFF -DENABLE_OPT=OFF + env: + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build/web diff --git a/README.md b/README.md index d153fa99f2..f5b8ef65d3 100644 --- a/README.md +++ b/README.md @@ -250,7 +250,7 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception Bash-like environments: + [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) * Wrap cmake call: `emcmake cmake` -* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF`. +* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF`. * Set `-DENABLE_HLSL=OFF` if HLSL is not needed. * For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`. * To get a fully minimized build, make sure to use `brotli` to compress the .js @@ -260,7 +260,7 @@ Example: ```sh emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \ - -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF -DINSTALL_GTEST=OFF .. + -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF .. ``` ## Building glslang - Using vcpkg From 79a9f7f652229a1af39b580b0abadba1f7ec6d02 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Thu, 3 Aug 2023 16:44:28 -0600 Subject: [PATCH 258/594] Fix continuous deployment There should not be a '/' after $ENV{DESTDIR} in the cmake install script. This change also: - Uses lukka/get-cmake github action consistently across jobs - Add the glslang binary to the continuous deployment archive --- .github/workflows/continuous_deployment.yml | 7 +++++++ .github/workflows/continuous_integration.yml | 1 + StandAlone/CMakeLists.txt | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 6425a040e2..aa546669aa 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -48,6 +48,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v3 + - uses: lukka/get-cmake@latest - uses: actions/setup-python@v4 with: python-version: '3.7' @@ -90,6 +91,7 @@ jobs: run: | cd build/install zip ${ARCHIVE} \ + bin/glslang \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ @@ -126,6 +128,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v3 + - uses: lukka/get-cmake@latest - uses: actions/setup-python@v4 with: python-version: '3.7' @@ -163,6 +166,7 @@ jobs: run: | cd build/install zip ${ARCHIVE} \ + bin/glslang \ bin/glslangValidator \ include/glslang/* \ include/glslang/**/* \ @@ -197,6 +201,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v3 + - uses: lukka/get-cmake@latest - uses: actions/setup-python@v4 with: python-version: '3.7' @@ -231,6 +236,7 @@ jobs: run: | cd build/install 7z a ${{env.ARCHIVE}} ` + bin/glslang.exe ` bin/glslangValidator.exe ` bin/spirv-remap.exe ` include/glslang/* ` @@ -252,6 +258,7 @@ jobs: run: | cd build/install 7z a ${{env.ARCHIVE}} ` + bin/glslang.exe ` bin/glslangValidator.exe ` bin/spirv-remap.exe ` include/glslang/* ` diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 4b72962a25..fb39a71c7c 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -163,6 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@v3 + - uses: lukka/get-cmake@latest - uses: actions/setup-python@v4 with: python-version: '3.7' diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index e25f5db869..b000cbd4cd 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -122,7 +122,7 @@ if(ENABLE_GLSLANG_INSTALL) # Create the same symlink at install time install(CODE "execute_process( \ COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} \ - WORKING_DIRECTORY \$ENV{DESTDIR}/${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") + WORKING_DIRECTORY \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") if(ENABLE_SPVREMAPPER) install(TARGETS spirv-remap EXPORT glslang-targets) From 34d4f78f03b32960a4e94419ea1c58613726d159 Mon Sep 17 00:00:00 2001 From: Arseny Kapoulkine Date: Mon, 7 Aug 2023 10:38:17 -0700 Subject: [PATCH 259/594] Fix interaction between GL_EXT_mesh_shader and GL_EXT_fragment_shading_rate Before this change, using gl_MeshPrimitivesEXT in mesh shader would unconditionally create gl_MeshPrimitivesEXT.gl_PrimitiveShadingRateEXT field and add PrimitiveShadingRateKHR capability to the output SPIRV file, which would subsequently trigger validation errors when creating the shader module unless the application requested primitive shading rate feature. What should happen instead is that unless GL_EXT_fragment_shading_rate extension is enabled, we should not allow using gl_PrimitiveShadingRateEXT and should not emit the associated fields into the output. This change fixes this by using existing filterMember mechanism that is already used in a few other cases like this, and adjusting the required extension on the field member which will generate an error when gl_PrimitiveShadingRateEXT is used without enabling the extension. --- SPIRV/GlslangToSpv.cpp | 6 + Test/baseResults/spv.460.subgroupEXT.mesh.out | 7 +- .../spv.ext.meshShaderBuiltins.mesh.out | 7 +- ...ext.meshShaderBuiltinsShadingRate.mesh.out | 281 ++++++++++++++++++ .../spv.ext.meshShaderRedeclBuiltins.mesh.out | 7 +- ...spv.ext.meshShaderBuiltinsShadingRate.mesh | 77 +++++ glslang/MachineIndependent/Initialize.cpp | 6 +- gtests/Spv.FromFile.cpp | 1 + 8 files changed, 373 insertions(+), 19 deletions(-) create mode 100644 Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out create mode 100644 Test/spv.ext.meshShaderBuiltinsShadingRate.mesh diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 71ce52b424..a3047cbd48 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4648,6 +4648,12 @@ bool TGlslangToSpvTraverser::filterMember(const glslang::TType& member) extensions.find("GL_NV_stereo_view_rendering") == extensions.end()) return true; + if (glslangIntermediate->getStage() == EShLangMesh) { + if (member.getFieldName() == "gl_PrimitiveShadingRateEXT" && + extensions.find("GL_EXT_fragment_shading_rate") == extensions.end()) + return true; + } + if (glslangIntermediate->getStage() != EShLangMesh) { if (member.getFieldName() == "gl_ViewportMask" && extensions.find("GL_NV_viewport_array2") == extensions.end()) diff --git a/Test/baseResults/spv.460.subgroupEXT.mesh.out b/Test/baseResults/spv.460.subgroupEXT.mesh.out index dd3de81421..f41895fd4b 100644 --- a/Test/baseResults/spv.460.subgroupEXT.mesh.out +++ b/Test/baseResults/spv.460.subgroupEXT.mesh.out @@ -13,10 +13,8 @@ spv.460.subgroupEXT.mesh Capability GroupNonUniformShuffleRelative Capability GroupNonUniformClustered Capability GroupNonUniformQuad - Capability FragmentShadingRateKHR Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" - Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshEXT 4 "main" 35 41 57 109 147 161 162 167 168 171 172 173 174 175 @@ -65,7 +63,6 @@ spv.460.subgroupEXT.mesh MemberName 106(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" MemberName 106(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" MemberName 106(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" - MemberName 106(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" Name 109 "gl_MeshPrimitivesEXT" Name 147 "gl_PrimitiveTriangleIndicesEXT" Name 161 "gl_SubgroupSize" @@ -95,8 +92,6 @@ spv.460.subgroupEXT.mesh MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT - MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV - MemberDecorate 106(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR Decorate 106(gl_MeshPerPrimitiveEXT) Block Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 161(gl_SubgroupSize) RelaxedPrecision @@ -151,7 +146,7 @@ spv.460.subgroupEXT.mesh 79: 30(int) Constant 264 80: 30(int) Constant 2 105: TypeBool -106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 59(int) +106(gl_MeshPerPrimitiveEXT): TypeStruct 59(int) 59(int) 59(int) 105(bool) 107: TypeArray 106(gl_MeshPerPrimitiveEXT) 47 108: TypePointer Output 107 109(gl_MeshPrimitivesEXT): 108(ptr) Variable Output diff --git a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out index 4db6112903..a1d71a5b07 100644 --- a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out @@ -5,12 +5,10 @@ spv.ext.meshShaderBuiltins.mesh Capability ClipDistance Capability CullDistance - Capability FragmentShadingRateKHR Capability DrawParameters Capability MultiView Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" - Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshEXT 4 "main" 13 19 24 41 93 134 152 155 @@ -43,7 +41,6 @@ spv.ext.meshShaderBuiltins.mesh MemberName 90(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" MemberName 90(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" - MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" Name 93 "gl_MeshPrimitivesEXT" Name 134 "gl_PrimitiveTriangleIndicesEXT" Name 150 "id" @@ -66,8 +63,6 @@ spv.ext.meshShaderBuiltins.mesh MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR Decorate 90(gl_MeshPerPrimitiveEXT) Block Decorate 134(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 152(gl_DrawIDARB) BuiltIn DrawIndex @@ -113,7 +108,7 @@ spv.ext.meshShaderBuiltins.mesh 63: 8(int) Constant 264 64: 8(int) Constant 2 89: TypeBool -90(gl_MeshPerPrimitiveEXT): TypeStruct 43(int) 43(int) 43(int) 89(bool) 43(int) +90(gl_MeshPerPrimitiveEXT): TypeStruct 43(int) 43(int) 43(int) 89(bool) 91: TypeArray 90(gl_MeshPerPrimitiveEXT) 29 92: TypePointer Output 91 93(gl_MeshPrimitivesEXT): 92(ptr) Variable Output diff --git a/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out new file mode 100644 index 0000000000..65bd740d44 --- /dev/null +++ b/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out @@ -0,0 +1,281 @@ +spv.ext.meshShaderBuiltinsShadingRate.mesh +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 164 + + Capability ClipDistance + Capability CullDistance + Capability FragmentShadingRateKHR + Capability DrawParameters + Capability MultiView + Capability MeshShadingEXT + Extension "SPV_EXT_mesh_shader" + Extension "SPV_KHR_fragment_shading_rate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshEXT 4 "main" 13 19 24 41 93 140 158 161 + ExecutionMode 4 LocalSize 32 1 1 + ExecutionMode 4 OutputVertices 81 + ExecutionMode 4 OutputPrimitivesNV 32 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 460 + SourceExtension "GL_ARB_shader_draw_parameters" + SourceExtension "GL_EXT_fragment_shading_rate" + SourceExtension "GL_EXT_mesh_shader" + SourceExtension "GL_EXT_multiview" + Name 4 "main" + Name 6 "testAdditionalBuiltins(" + Name 10 "iid" + Name 13 "gl_LocalInvocationID" + Name 18 "gid" + Name 19 "gl_WorkGroupID" + Name 23 "numWorkGrous" + Name 24 "gl_NumWorkGroups" + Name 26 "vertexCount" + Name 28 "primitiveCount" + Name 38 "gl_MeshPerVertexEXT" + MemberName 38(gl_MeshPerVertexEXT) 0 "gl_Position" + MemberName 38(gl_MeshPerVertexEXT) 1 "gl_PointSize" + MemberName 38(gl_MeshPerVertexEXT) 2 "gl_ClipDistance" + MemberName 38(gl_MeshPerVertexEXT) 3 "gl_CullDistance" + Name 41 "gl_MeshVerticesEXT" + Name 90 "gl_MeshPerPrimitiveEXT" + MemberName 90(gl_MeshPerPrimitiveEXT) 0 "gl_PrimitiveID" + MemberName 90(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" + MemberName 90(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" + MemberName 90(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" + MemberName 90(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" + Name 93 "gl_MeshPrimitivesEXT" + Name 140 "gl_PrimitiveTriangleIndicesEXT" + Name 156 "id" + Name 158 "gl_DrawIDARB" + Name 160 "viewIdx" + Name 161 "gl_ViewIndex" + Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId + Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups + MemberDecorate 38(gl_MeshPerVertexEXT) 0 BuiltIn Position + MemberDecorate 38(gl_MeshPerVertexEXT) 1 BuiltIn PointSize + MemberDecorate 38(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance + MemberDecorate 38(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance + Decorate 38(gl_MeshPerVertexEXT) Block + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR + Decorate 90(gl_MeshPerPrimitiveEXT) Block + Decorate 140(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT + Decorate 158(gl_DrawIDARB) BuiltIn DrawIndex + Decorate 161(gl_ViewIndex) BuiltIn ViewIndex + Decorate 163 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeInt 32 0 + 9: TypePointer Function 8(int) + 11: TypeVector 8(int) 3 + 12: TypePointer Input 11(ivec3) +13(gl_LocalInvocationID): 12(ptr) Variable Input + 14: 8(int) Constant 0 + 15: TypePointer Input 8(int) +19(gl_WorkGroupID): 12(ptr) Variable Input + 22: TypePointer Function 11(ivec3) +24(gl_NumWorkGroups): 12(ptr) Variable Input + 27: 8(int) Constant 81 + 29: 8(int) Constant 32 + 32: TypeFloat 32 + 33: TypeVector 32(float) 4 + 34: 8(int) Constant 4 + 35: TypeArray 32(float) 34 + 36: 8(int) Constant 3 + 37: TypeArray 32(float) 36 +38(gl_MeshPerVertexEXT): TypeStruct 33(fvec4) 32(float) 35 37 + 39: TypeArray 38(gl_MeshPerVertexEXT) 27 + 40: TypePointer Output 39 +41(gl_MeshVerticesEXT): 40(ptr) Variable Output + 43: TypeInt 32 1 + 44: 43(int) Constant 0 + 45: 32(float) Constant 1065353216 + 46: 33(fvec4) ConstantComposite 45 45 45 45 + 47: TypePointer Output 33(fvec4) + 50: 43(int) Constant 1 + 51: 32(float) Constant 1073741824 + 52: TypePointer Output 32(float) + 55: 43(int) Constant 2 + 56: 43(int) Constant 3 + 57: 32(float) Constant 1077936128 + 60: 32(float) Constant 1082130432 + 62: 8(int) Constant 1 + 63: 8(int) Constant 264 + 64: 8(int) Constant 2 + 89: TypeBool +90(gl_MeshPerPrimitiveEXT): TypeStruct 43(int) 43(int) 43(int) 89(bool) 43(int) + 91: TypeArray 90(gl_MeshPerPrimitiveEXT) 29 + 92: TypePointer Output 91 +93(gl_MeshPrimitivesEXT): 92(ptr) Variable Output + 95: 43(int) Constant 6 + 96: TypePointer Output 43(int) + 99: 43(int) Constant 7 + 102: 43(int) Constant 8 + 105: 89(bool) ConstantFalse + 106: TypePointer Output 89(bool) + 109: 43(int) Constant 4 + 138: TypeArray 11(ivec3) 29 + 139: TypePointer Output 138 +140(gl_PrimitiveTriangleIndicesEXT): 139(ptr) Variable Output + 141: 8(int) Constant 257 + 142: 11(ivec3) ConstantComposite 141 141 141 + 143: TypePointer Output 11(ivec3) + 147: 11(ivec3) ConstantComposite 64 64 64 + 155: TypePointer Function 43(int) + 157: TypePointer Input 43(int) +158(gl_DrawIDARB): 157(ptr) Variable Input +161(gl_ViewIndex): 157(ptr) Variable Input + 163: 11(ivec3) ConstantComposite 29 62 62 + 4(main): 2 Function None 3 + 5: Label + 10(iid): 9(ptr) Variable Function + 18(gid): 9(ptr) Variable Function +23(numWorkGrous): 22(ptr) Variable Function + 26(vertexCount): 9(ptr) Variable Function +28(primitiveCount): 9(ptr) Variable Function + 16: 15(ptr) AccessChain 13(gl_LocalInvocationID) 14 + 17: 8(int) Load 16 + Store 10(iid) 17 + 20: 15(ptr) AccessChain 19(gl_WorkGroupID) 14 + 21: 8(int) Load 20 + Store 18(gid) 21 + 25: 11(ivec3) Load 24(gl_NumWorkGroups) + Store 23(numWorkGrous) 25 + Store 26(vertexCount) 27 + Store 28(primitiveCount) 29 + 30: 8(int) Load 26(vertexCount) + 31: 8(int) Load 28(primitiveCount) + SetMeshOutputsEXT 30 31 + 42: 8(int) Load 10(iid) + 48: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 42 44 + Store 48 46 + 49: 8(int) Load 10(iid) + 53: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 49 50 + Store 53 51 + 54: 8(int) Load 10(iid) + 58: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 54 55 56 + Store 58 57 + 59: 8(int) Load 10(iid) + 61: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 59 56 55 + Store 61 60 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 65: 8(int) Load 10(iid) + 66: 8(int) IAdd 65 62 + 67: 8(int) Load 10(iid) + 68: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 67 44 + 69: 33(fvec4) Load 68 + 70: 47(ptr) AccessChain 41(gl_MeshVerticesEXT) 66 44 + Store 70 69 + 71: 8(int) Load 10(iid) + 72: 8(int) IAdd 71 62 + 73: 8(int) Load 10(iid) + 74: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 73 50 + 75: 32(float) Load 74 + 76: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 72 50 + Store 76 75 + 77: 8(int) Load 10(iid) + 78: 8(int) IAdd 77 62 + 79: 8(int) Load 10(iid) + 80: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 79 55 56 + 81: 32(float) Load 80 + 82: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 78 55 56 + Store 82 81 + 83: 8(int) Load 10(iid) + 84: 8(int) IAdd 83 62 + 85: 8(int) Load 10(iid) + 86: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 85 56 55 + 87: 32(float) Load 86 + 88: 52(ptr) AccessChain 41(gl_MeshVerticesEXT) 84 56 55 + Store 88 87 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 94: 8(int) Load 10(iid) + 97: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 94 44 + Store 97 95 + 98: 8(int) Load 10(iid) + 100: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 98 50 + Store 100 99 + 101: 8(int) Load 10(iid) + 103: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 101 55 + Store 103 102 + 104: 8(int) Load 10(iid) + 107: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 104 56 + Store 107 105 + 108: 8(int) Load 10(iid) + 110: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 108 109 + Store 110 44 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 111: 8(int) Load 10(iid) + 112: 8(int) IAdd 111 62 + 113: 8(int) Load 10(iid) + 114: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 113 44 + 115: 43(int) Load 114 + 116: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 112 44 + Store 116 115 + 117: 8(int) Load 10(iid) + 118: 8(int) IAdd 117 62 + 119: 8(int) Load 10(iid) + 120: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 119 50 + 121: 43(int) Load 120 + 122: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 118 50 + Store 122 121 + 123: 8(int) Load 10(iid) + 124: 8(int) IAdd 123 62 + 125: 8(int) Load 10(iid) + 126: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 125 55 + 127: 43(int) Load 126 + 128: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 124 55 + Store 128 127 + 129: 8(int) Load 10(iid) + 130: 8(int) IAdd 129 62 + 131: 8(int) Load 10(iid) + 132: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 131 56 + 133: 89(bool) Load 132 + 134: 106(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 130 56 + Store 134 133 + 135: 8(int) Load 10(iid) + 136: 8(int) IAdd 135 62 + 137: 96(ptr) AccessChain 93(gl_MeshPrimitivesEXT) 136 109 + Store 137 44 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + 144: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 44 + Store 144 142 + 145: 8(int) Load 28(primitiveCount) + 146: 8(int) ISub 145 62 + 148: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 146 + Store 148 147 + 149: 8(int) Load 18(gid) + 150: 8(int) Load 18(gid) + 151: 8(int) ISub 150 62 + 152: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 151 + 153: 11(ivec3) Load 152 + 154: 143(ptr) AccessChain 140(gl_PrimitiveTriangleIndicesEXT) 149 + Store 154 153 + MemoryBarrier 62 63 + ControlBarrier 64 64 63 + Return + FunctionEnd +6(testAdditionalBuiltins(): 2 Function None 3 + 7: Label + 156(id): 155(ptr) Variable Function + 160(viewIdx): 155(ptr) Variable Function + 159: 43(int) Load 158(gl_DrawIDARB) + Store 156(id) 159 + 162: 43(int) Load 161(gl_ViewIndex) + Store 160(viewIdx) 162 + Return + FunctionEnd diff --git a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out index a331a471d4..357730076c 100644 --- a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out @@ -5,10 +5,8 @@ spv.ext.meshShaderRedeclBuiltins.mesh Capability ClipDistance Capability CullDistance - Capability FragmentShadingRateKHR Capability MeshShadingEXT Extension "SPV_EXT_mesh_shader" - Extension "SPV_KHR_fragment_shading_rate" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint MeshEXT 4 "main" 11 17 29 81 122 @@ -34,7 +32,6 @@ spv.ext.meshShaderRedeclBuiltins.mesh MemberName 78(gl_MeshPerPrimitiveEXT) 1 "gl_Layer" MemberName 78(gl_MeshPerPrimitiveEXT) 2 "gl_ViewportIndex" MemberName 78(gl_MeshPerPrimitiveEXT) 3 "gl_CullPrimitiveEXT" - MemberName 78(gl_MeshPerPrimitiveEXT) 4 "gl_PrimitiveShadingRateEXT" Name 81 "gl_MeshPrimitivesEXT" Name 122 "gl_PrimitivePointIndicesEXT" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId @@ -52,8 +49,6 @@ spv.ext.meshShaderRedeclBuiltins.mesh MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT - MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV - MemberDecorate 78(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR Decorate 78(gl_MeshPerPrimitiveEXT) Block Decorate 122(gl_PrimitivePointIndicesEXT) BuiltIn PrimitivePointIndicesEXT Decorate 127 BuiltIn WorkgroupSize @@ -93,7 +88,7 @@ spv.ext.meshShaderRedeclBuiltins.mesh 51: 6(int) Constant 264 52: 6(int) Constant 2 77: TypeBool -78(gl_MeshPerPrimitiveEXT): TypeStruct 31(int) 31(int) 31(int) 77(bool) 31(int) +78(gl_MeshPerPrimitiveEXT): TypeStruct 31(int) 31(int) 31(int) 77(bool) 79: TypeArray 78(gl_MeshPerPrimitiveEXT) 21 80: TypePointer Output 79 81(gl_MeshPrimitivesEXT): 80(ptr) Variable Output diff --git a/Test/spv.ext.meshShaderBuiltinsShadingRate.mesh b/Test/spv.ext.meshShaderBuiltinsShadingRate.mesh new file mode 100644 index 0000000000..b99125dc22 --- /dev/null +++ b/Test/spv.ext.meshShaderBuiltinsShadingRate.mesh @@ -0,0 +1,77 @@ +#version 460 + +#define MAX_VER 81 +#define MAX_PRIM 32 + +#define BARRIER() \ + memoryBarrierShared(); \ + barrier(); + +#extension GL_EXT_mesh_shader : enable +#extension GL_EXT_fragment_shading_rate : enable + +layout(local_size_x = 32, local_size_y=1, local_size_z=1) in; + +layout(max_vertices=MAX_VER) out; +layout(max_primitives=MAX_PRIM) out; +layout(triangles) out; + +// test use of builtins in mesh shaders: + +void main() +{ + uint iid = gl_LocalInvocationID.x; + uint gid = gl_WorkGroupID.x; + uvec3 numWorkGrous = gl_NumWorkGroups; + uint vertexCount = MAX_VER; // vertexCount <= max_vertices + uint primitiveCount = MAX_PRIM; // primitiveCount <= max_primtives + SetMeshOutputsEXT(vertexCount, primitiveCount); + + gl_MeshVerticesEXT[iid].gl_Position = vec4(1.0); + gl_MeshVerticesEXT[iid].gl_PointSize = 2.0; + gl_MeshVerticesEXT[iid].gl_ClipDistance[3] = 3.0; + gl_MeshVerticesEXT[iid].gl_CullDistance[2] = 4.0; + + BARRIER(); + + gl_MeshVerticesEXT[iid+1].gl_Position = gl_MeshVerticesEXT[iid].gl_Position; + gl_MeshVerticesEXT[iid+1].gl_PointSize = gl_MeshVerticesEXT[iid].gl_PointSize; + gl_MeshVerticesEXT[iid+1].gl_ClipDistance[3] = gl_MeshVerticesEXT[iid].gl_ClipDistance[3]; + gl_MeshVerticesEXT[iid+1].gl_CullDistance[2] = gl_MeshVerticesEXT[iid].gl_CullDistance[2]; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid].gl_PrimitiveID = 6; + gl_MeshPrimitivesEXT[iid].gl_Layer = 7; + gl_MeshPrimitivesEXT[iid].gl_ViewportIndex = 8; + gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT = false; + gl_MeshPrimitivesEXT[iid].gl_PrimitiveShadingRateEXT = 0; + + BARRIER(); + + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveID = gl_MeshPrimitivesEXT[iid].gl_PrimitiveID; + gl_MeshPrimitivesEXT[iid+1].gl_Layer = gl_MeshPrimitivesEXT[iid].gl_Layer; + gl_MeshPrimitivesEXT[iid+1].gl_ViewportIndex = gl_MeshPrimitivesEXT[iid].gl_ViewportIndex; + gl_MeshPrimitivesEXT[iid+1].gl_CullPrimitiveEXT = gl_MeshPrimitivesEXT[iid].gl_CullPrimitiveEXT; + gl_MeshPrimitivesEXT[iid+1].gl_PrimitiveShadingRateEXT = 0; + + BARRIER(); + + // check bound limits + gl_PrimitiveTriangleIndicesEXT[0] = uvec3(257); // should truncate 257 -> 1, range is between [0, vertexCount-1] + gl_PrimitiveTriangleIndicesEXT[primitiveCount - 1] = uvec3(2); // array size is primitiveCount*3 for triangle + gl_PrimitiveTriangleIndicesEXT[gid] = gl_PrimitiveTriangleIndicesEXT[gid-1]; + + BARRIER(); +} + +// test use of builtins enabled by other extensions +#extension GL_ARB_shader_draw_parameters : enable +#extension GL_EXT_multiview : enable + +void testAdditionalBuiltins() +{ + int id = gl_DrawIDARB; // GL_ARB_shader_draw_parameters + int viewIdx = gl_ViewIndex; // GL_EXT_multiview + +} \ No newline at end of file diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 95ccc6c877..3c7aaea3ff 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -9206,7 +9206,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_Layer", 1, &E_GL_EXT_mesh_shader); symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_ViewportIndex", 1, &E_GL_EXT_mesh_shader); symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_CullPrimitiveEXT", 1, &E_GL_EXT_mesh_shader); - symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_mesh_shader); + + // note: technically this member requires both GL_EXT_mesh_shader and GL_EXT_fragment_shading_rate + // since setVariableExtensions only needs *one of* the extensions to validate, it's more useful to specify EXT_fragment_shading_rate + // GL_EXT_mesh_shader will be required in practice by use of other fields of gl_MeshPrimitivesEXT + symbolTable.setVariableExtensions("gl_MeshPrimitivesEXT", "gl_PrimitiveShadingRateEXT", 1, &E_GL_EXT_fragment_shading_rate); BuiltInVariable("gl_MeshPrimitivesEXT", "gl_PrimitiveID", EbvPrimitiveId, symbolTable); BuiltInVariable("gl_MeshPrimitivesEXT", "gl_Layer", EbvLayer, symbolTable); diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index e918d16d14..88b3ea00d9 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -660,6 +660,7 @@ INSTANTIATE_TEST_SUITE_P( // SPV_EXT_mesh_shader "spv.ext.meshShaderBuiltins.mesh", + "spv.ext.meshShaderBuiltinsShadingRate.mesh", "spv.ext.meshShaderRedeclBuiltins.mesh", "spv.ext.meshShaderTaskMem.mesh", "spv.ext.meshShaderUserDefined.mesh", From 76b52ebf77833908dc4c0dd6c70a9c357ac720bd Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 8 Aug 2023 10:22:10 -0600 Subject: [PATCH 260/594] Update known_good.json SPIRV-Tools: v2023.4.rc2 --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 61645cb964..cb600dbae7 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "4b6bd5a665ba0529747af3a0bc808732b7e78f48" + "commit" : "v2023.4.rc2" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "f1ba373ef03752ee9f6f2b898bea1213f93e1ef2" + "commit" : "124a9665e464ef98b8b718d572d5f329311061eb" } ] } From b70669a0593f022af1d10f77d29856e24cfaaa50 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Wed, 5 Jul 2023 14:44:40 +0800 Subject: [PATCH 261/594] Spirv_intrinsics: Remove early return in layoutTypeCheck Previously, when GL_EXT_spirv_intrinsics are enabled, we disable all checks in layoutTypeCheck. This is too coarse because we can use nothing in GL_EXT_spirv_intrinsics in a shader while the necessary processing is skipped, such as addUsedLocation. In this change, we apply fine check and more might be added if we encounter new cases in the future. --- Test/baseResults/spv.intrinsicsFakeEnable.vert.out | 6 ++++++ Test/spv.intrinsicsFakeEnable.vert | 10 ++++++++++ glslang/MachineIndependent/ParseHelper.cpp | 6 ++---- gtests/Spv.FromFile.cpp | 1 + 4 files changed, 19 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/spv.intrinsicsFakeEnable.vert.out create mode 100644 Test/spv.intrinsicsFakeEnable.vert diff --git a/Test/baseResults/spv.intrinsicsFakeEnable.vert.out b/Test/baseResults/spv.intrinsicsFakeEnable.vert.out new file mode 100644 index 0000000000..da1cbf7656 --- /dev/null +++ b/Test/baseResults/spv.intrinsicsFakeEnable.vert.out @@ -0,0 +1,6 @@ +spv.intrinsicsFakeEnable.vert +ERROR: 0:7: 'location' : overlapping use of location 0 +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/spv.intrinsicsFakeEnable.vert b/Test/spv.intrinsicsFakeEnable.vert new file mode 100644 index 0000000000..a6d6a312f5 --- /dev/null +++ b/Test/spv.intrinsicsFakeEnable.vert @@ -0,0 +1,10 @@ +#version 460 core +#extension GL_EXT_spirv_intrinsics : enable + +// ERROR: Overlapped input location. Make sure it could be detected even +// if GL_EXT_spirv_intrinsics is enabled. +layout(location = 0) in vec4 v4; +layout(location = 0) in vec3 v3; + +void main() { +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index b8c64e0985..4416a264c4 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -6324,9 +6324,6 @@ void TParseContext::layoutMemberLocationArrayCheck(const TSourceLoc& loc, bool m // Do layout error checking with respect to a type. void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) { - if (extensionTurnedOn(E_GL_EXT_spirv_intrinsics)) - return; // Skip any check if GL_EXT_spirv_intrinsics is turned on - const TQualifier& qualifier = type.getQualifier(); // first, intra-layout qualifier-only error checking @@ -6380,6 +6377,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) case EvqCallableData: case EvqCallableDataIn: case EvqHitObjectAttrNV: + case EvqSpirvStorageClass: break; case EvqTileImageEXT: break; @@ -6436,7 +6434,7 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) // an array of size N, all elements of the array from binding through binding + N - 1 must be within this // range." // - if (! type.isOpaque() && type.getBasicType() != EbtBlock) + if (!type.isOpaque() && type.getBasicType() != EbtBlock && type.getBasicType() != EbtSpirvType) error(loc, "requires block, or sampler/image, or atomic-counter type", "binding", ""); if (type.getBasicType() == EbtSampler) { int lastBinding = qualifier.layoutBinding; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 88b3ea00d9..537bc589e8 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -757,6 +757,7 @@ INSTANTIATE_TEST_SUITE_P( "vulkan.vert", "vulkan.comp", "samplerlessTextureFunctions.frag", + "spv.intrinsicsFakeEnable.vert", "spv.specConstArrayCheck.vert", })), FileNameAsCustomTestSuffix From 3805888a57c07904b6bbdec639bfe5f078e26342 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kacper=20Michaj=C5=82ow?= Date: Fri, 3 Mar 2023 18:20:24 +0100 Subject: [PATCH 262/594] Look for external SPIR-V Tools build, if not building in-tree MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This allows to build with optimizer enabled, if external SPIR-V tools libraries are available in the system. It is quite common in *nix world to package spirv-tools and glslang separately. Signed-off-by: Kacper Michajłow --- CMakeLists.txt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b48f6324fd..c3a4f322a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -264,8 +264,15 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) add_subdirectory(External) endif() +option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt" OFF) if(NOT TARGET SPIRV-Tools-opt) - set(ENABLE_OPT OFF) + if(ALLOW_EXTERNAL_SPIRV_TOOLS) + # Look for external SPIR-V Tools build, if not building in-tree + find_package(SPIRV-Tools-opt) + endif() + if(NOT TARGET SPIRV-Tools-opt) + set(ENABLE_OPT OFF) + endif() endif() if(ENABLE_OPT) From 98aa6944221291a8fd1602f4916c60edf0814e06 Mon Sep 17 00:00:00 2001 From: Pedro Olsen Ferreira Date: Fri, 18 Aug 2023 12:38:37 +0100 Subject: [PATCH 263/594] [cmake] Use CMake property for symbol visibility CMake provides a target property to set default symbol visibility which supports different toolchains transparently. --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c3a4f322a5..c1e0b05e05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -234,10 +234,9 @@ endfunction() function(glslang_only_export_explicit_symbols target) if(BUILD_SHARED_LIBS) target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1") + set_target_properties(${target} PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden) if(WIN32) target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1") - else() - target_compile_options(${target} PRIVATE "-fvisibility=hidden") endif() endif() endfunction() From 70d125b924fc6a0192c8ef94d5d95237312da7fb Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Thu, 17 Aug 2023 17:21:21 +0100 Subject: [PATCH 264/594] cmake: Don't link SPVRemapper into glslang executable The functionality of `libSPVRemapper` is only used by the `spirv-remap` executable, so don't link it into the `glslang` executable. --- StandAlone/CMakeLists.txt | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index b000cbd4cd..ad88442c91 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -58,10 +58,6 @@ set(LIBRARIES SPIRV glslang-default-resource-limits) -if(ENABLE_SPVREMAPPER) - set(LIBRARIES ${LIBRARIES} SPVRemapper) -endif() - if(WIN32) set(LIBRARIES ${LIBRARIES} psapi) elseif(UNIX) @@ -86,7 +82,7 @@ if(ENABLE_SPVREMAPPER) add_executable(spirv-remap ${REMAPPER_SOURCES}) set_property(TARGET spirv-remap PROPERTY FOLDER tools) glslang_set_link_args(spirv-remap) - target_link_libraries(spirv-remap ${LIBRARIES}) + target_link_libraries(spirv-remap SPVRemapper ${LIBRARIES}) endif() if(WIN32) From c5117b328afc86e16edff6ed6afe0fe7872a7cf3 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 18 Aug 2023 13:56:28 -0600 Subject: [PATCH 265/594] Fix CI build badge Replaces the appveyor build (which is no longer used) with a badge pointing to the continuous_integration.yml job status. --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f5b8ef65d3..7d5255c37c 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ git remote set-head origin -a 2. C++17 (all platforms) and Visual Studio 2019 (Windows) are now required. This change was driven by the external dependency on SPIRV-Tools. -[![appveyor status](https://ci.appveyor.com/api/projects/status/q6fi9cb0qnhkla68/branch/main?svg=true)](https://ci.appveyor.com/project/Khronoswebmaster/glslang/branch/main) +![Continuous Integration](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_integration.yml/badge.svg) ![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) # Glslang Components and Status From d072aa66760b5f2aaca320e5cd3aa74afd8d227e Mon Sep 17 00:00:00 2001 From: Joyce Date: Fri, 18 Aug 2023 15:23:07 -0300 Subject: [PATCH 266/594] Create scorecard.yml Signed-off-by: Joyce --- .github/workflows/scorecard.yml | 53 +++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 .github/workflows/scorecard.yml diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml new file mode 100644 index 0000000000..b45d0915f2 --- /dev/null +++ b/.github/workflows/scorecard.yml @@ -0,0 +1,53 @@ +name: Scorecard supply-chain security +on: + # For Branch-Protection check. Only the default branch is supported. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection + branch_protection_rule: + # To guarantee Maintained check is occasionally updated. See + # https://github.com/ossf/scorecard/blob/main/docs/checks.md#maintained + schedule: + - cron: '36 17 * * 5' + push: + branches: [ "main" ] + +# Declare default permissions as read only. +permissions: read-all + +jobs: + analysis: + name: Scorecard analysis + runs-on: ubuntu-latest + permissions: + security-events: write # to upload the results to code-scanning dashboard + id-token: write # to publish results and get a badge + + steps: + - name: "Checkout code" + uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + with: + persist-credentials: false + + - name: "Run analysis" + uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + with: + results_file: results.sarif + results_format: sarif + # To enable Branch-Protection uncomment the `repo_token` line below + # To create the Fine-grained PAT, follow the steps in https://github.com/ossf/scorecard-action#authentication-with-fine-grained-pat-optional. + # repo_token: ${{ secrets.SCORECARD_TOKEN }} + publish_results: true # allows the repo to include the Scorecard badge + + # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF + # format to the repository Actions tab. + - name: "Upload artifact" + uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + with: + name: SARIF file + path: results.sarif + retention-days: 5 + + # Upload the results to GitHub's code scanning dashboard. + - name: "Upload to code-scanning" + uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + with: + sarif_file: results.sarif From 4e7ccd4af558217eb9bc0726db9c0c356b923e93 Mon Sep 17 00:00:00 2001 From: Joyce Date: Fri, 18 Aug 2023 15:25:01 -0300 Subject: [PATCH 267/594] Add badge to README.md Signed-off-by: Joyce --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 7d5255c37c..ea1e867b46 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,7 @@ git remote set-head origin -a ![Continuous Integration](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_integration.yml/badge.svg) ![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/KhronosGroup/glslang/badge)](https://securityscorecards.dev/viewer/?uri=github.com/KhronosGroup/glslang) # Glslang Components and Status From db8719ae079665ffab564c614b8614e56f325aea Mon Sep 17 00:00:00 2001 From: Wooyoung Kim Date: Mon, 21 Aug 2023 17:14:52 -0700 Subject: [PATCH 268/594] extension: GL_QCOM_image_processing support --- BUILD.gn | 1 + SPIRV/GLSL.ext.QCOM.h | 41 ++++++ SPIRV/GlslangToSpv.cpp | 51 +++++++ SPIRV/SpvBuilder.h | 1 + SPIRV/SpvPostProcess.cpp | 1 + SPIRV/disassemble.cpp | 1 + SPIRV/doc.cpp | 43 +++++- SPIRV/spirv.hpp | 13 ++ .../spv.tpipBlockMatchSAD.frag.out | 123 +++++++++++++++++ .../spv.tpipBlockMatchSSD.frag.out | 123 +++++++++++++++++ Test/baseResults/spv.tpipBoxFilter.frag.out | 81 +++++++++++ .../spv.tpipSampleWeighted.frag.out | 84 ++++++++++++ .../spv.tpipTextureArrays.frag.out | 128 ++++++++++++++++++ Test/spv.tpipBlockMatchSAD.frag | 38 ++++++ Test/spv.tpipBlockMatchSSD.frag | 38 ++++++ Test/spv.tpipBoxFilter.frag | 32 +++++ Test/spv.tpipSampleWeighted.frag | 32 +++++ Test/spv.tpipTextureArrays.frag | 40 ++++++ glslang/Include/intermediate.h | 6 + glslang/MachineIndependent/Initialize.cpp | 34 ++++- glslang/MachineIndependent/Versions.cpp | 7 + glslang/MachineIndependent/Versions.h | 2 + gtests/Spv.FromFile.cpp | 22 +++ known_good.json | 2 +- 24 files changed, 939 insertions(+), 5 deletions(-) create mode 100644 SPIRV/GLSL.ext.QCOM.h create mode 100644 Test/baseResults/spv.tpipBlockMatchSAD.frag.out create mode 100644 Test/baseResults/spv.tpipBlockMatchSSD.frag.out create mode 100644 Test/baseResults/spv.tpipBoxFilter.frag.out create mode 100644 Test/baseResults/spv.tpipSampleWeighted.frag.out create mode 100644 Test/baseResults/spv.tpipTextureArrays.frag.out create mode 100644 Test/spv.tpipBlockMatchSAD.frag create mode 100644 Test/spv.tpipBlockMatchSSD.frag create mode 100644 Test/spv.tpipBoxFilter.frag create mode 100644 Test/spv.tpipSampleWeighted.frag create mode 100644 Test/spv.tpipTextureArrays.frag diff --git a/BUILD.gn b/BUILD.gn index 85a4bed2e0..0bb0d42ec8 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -124,6 +124,7 @@ template("glslang_sources_common") { "SPIRV/GLSL.ext.KHR.h", "SPIRV/GLSL.ext.NV.h", "SPIRV/GLSL.ext.ARM.h", + "SPIRV/GLSL.ext.QCOM.h", "SPIRV/GLSL.std.450.h", "SPIRV/GlslangToSpv.cpp", "SPIRV/GlslangToSpv.h", diff --git a/SPIRV/GLSL.ext.QCOM.h b/SPIRV/GLSL.ext.QCOM.h new file mode 100644 index 0000000000..f13bb69359 --- /dev/null +++ b/SPIRV/GLSL.ext.QCOM.h @@ -0,0 +1,41 @@ +/* +** Copyright (c) 2021 The Khronos Group Inc. +** +** Permission is hereby granted, free of charge, to any person obtaining a copy +** of this software and/or associated documentation files (the "Materials"), +** to deal in the Materials without restriction, including without limitation +** the rights to use, copy, modify, merge, publish, distribute, sublicense, +** and/or sell copies of the Materials, and to permit persons to whom the +** Materials are furnished to do so, subject to the following conditions: +** +** The above copyright notice and this permission notice shall be included in +** all copies or substantial portions of the Materials. +** +** MODIFICATIONS TO THIS FILE MAY MEAN IT NO LONGER ACCURATELY REFLECTS KHRONOS +** STANDARDS. THE UNMODIFIED, NORMATIVE VERSIONS OF KHRONOS SPECIFICATIONS AND +** HEADER INFORMATION ARE LOCATED AT https://www.khronos.org/registry/ +** +** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +** OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +** FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +** THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +** LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +** FROM,OUT OF OR IN CONNECTION WITH THE MATERIALS OR THE USE OR OTHER DEALINGS +** IN THE MATERIALS. +*/ + +#ifndef GLSLextQCOM_H +#define GLSLextQCOM_H + +enum BuiltIn; +enum Decoration; +enum Op; +enum Capability; + +static const int GLSLextQCOMVersion = 100; +static const int GLSLextQCOMRevision = 1; + +//SPV_QCOM_image_processing +const char* const E_SPV_QCOM_image_processing = "SPV_QCOM_image_processing"; + +#endif // #ifndef GLSLextQCOM_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index a3047cbd48..395315a176 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -50,6 +50,7 @@ namespace spv { #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" + #include "GLSL.ext.QCOM.h" #include "NonSemanticDebugPrintf.h" } @@ -220,6 +221,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier); + void addImageProcessingQCOMDecoration(spv::Id id, spv::Decoration decor); spv::Id createSpvConstant(const glslang::TIntermTyped&); spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, int& nextConst, bool specConstant); @@ -3276,6 +3278,20 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt noReturnValue = true; break; + case glslang::EOpImageSampleWeightedQCOM: + builder.addCapability(spv::CapabilityTextureSampleWeightedQCOM); + builder.addExtension(spv::E_SPV_QCOM_image_processing); + break; + case glslang::EOpImageBoxFilterQCOM: + builder.addCapability(spv::CapabilityTextureBoxFilterQCOM); + builder.addExtension(spv::E_SPV_QCOM_image_processing); + break; + case glslang::EOpImageBlockMatchSADQCOM: + case glslang::EOpImageBlockMatchSSDQCOM: + builder.addCapability(spv::CapabilityTextureBlockMatchQCOM); + builder.addExtension(spv::E_SPV_QCOM_image_processing); + break; + case glslang::EOpDebugPrintf: noReturnValue = true; break; @@ -9023,6 +9039,27 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: return 0; } + + case glslang::EOpImageSampleWeightedQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageSampleWeightedQCOM; + addImageProcessingQCOMDecoration(operands[2], spv::DecorationWeightTextureQCOM); + break; + case glslang::EOpImageBoxFilterQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageBoxFilterQCOM; + break; + case glslang::EOpImageBlockMatchSADQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageBlockMatchSADQCOM; + addImageProcessingQCOMDecoration(operands[0], spv::DecorationBlockMatchTextureQCOM); + addImageProcessingQCOMDecoration(operands[2], spv::DecorationBlockMatchTextureQCOM); + break; + case glslang::EOpImageBlockMatchSSDQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageBlockMatchSSDQCOM; + addImageProcessingQCOMDecoration(operands[0], spv::DecorationBlockMatchTextureQCOM); + addImageProcessingQCOMDecoration(operands[2], spv::DecorationBlockMatchTextureQCOM); break; default: return 0; @@ -9568,6 +9605,20 @@ void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const g } } +void TGlslangToSpvTraverser::addImageProcessingQCOMDecoration(spv::Id id, spv::Decoration decor) +{ + spv::Op opc = builder.getOpCode(id); + if (opc == spv::OpSampledImage) { + id = builder.getIdOperand(id, 0); + opc = builder.getOpCode(id); + } + + if (opc == spv::OpLoad) { + spv::Id texid = builder.getIdOperand(id, 0); + builder.addDecoration(texid, decor); + } +} + // Make a full tree of instructions to build a SPIR-V specialization constant, // or regular constant if possible. // diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 1f38e7899d..79d2681f12 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -261,6 +261,7 @@ class Builder { ImageFormat getImageTypeFormat(Id typeId) const { return (ImageFormat)module.getInstruction(typeId)->getImmediateOperand(6); } Id getResultingAccessChainType() const; + Id getIdOperand(Id resultId, int idx) { return module.getInstruction(resultId)->getIdOperand(idx); } bool isPointer(Id resultId) const { return isPointerType(getTypeId(resultId)); } bool isScalar(Id resultId) const { return isScalarType(getTypeId(resultId)); } diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index c4be365527..50fb793b4c 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -53,6 +53,7 @@ namespace spv { #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" + #include "GLSL.ext.QCOM.h" } namespace spv { diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 479f4a64eb..c5e961cf02 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -56,6 +56,7 @@ namespace spv { #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" #include "NonSemanticShaderDebugInfo100.h" + #include "GLSL.ext.QCOM.h" } } const char* GlslStd450DebugNames[spv::GLSLstd450Count]; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index b7f0053dd6..417e6e08a1 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -55,6 +55,7 @@ namespace spv { #include "GLSL.ext.AMD.h" #include "GLSL.ext.NV.h" #include "GLSL.ext.ARM.h" + #include "GLSL.ext.QCOM.h" } } @@ -311,7 +312,9 @@ const char* DecorationString(int decoration) case DecorationCeiling: default: return "Bad"; - case DecorationExplicitInterpAMD: return "ExplicitInterpAMD"; + case DecorationWeightTextureQCOM: return "DecorationWeightTextureQCOM"; + case DecorationBlockMatchTextureQCOM: return "DecorationBlockMatchTextureQCOM"; + case DecorationExplicitInterpAMD: return "ExplicitInterpAMD"; case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; case DecorationPassthroughNV: return "PassthroughNV"; case DecorationViewportRelativeNV: return "ViewportRelativeNV"; @@ -1040,6 +1043,11 @@ const char* CapabilityString(int info) case CapabilityCoreBuiltinsARM: return "CoreBuiltinsARM"; case CapabilityShaderInvocationReorderNV: return "ShaderInvocationReorderNV"; + + case CapabilityTextureSampleWeightedQCOM: return "TextureSampleWeightedQCOM"; + case CapabilityTextureBoxFilterQCOM: return "TextureBoxFilterQCOM"; + case CapabilityTextureBlockMatchQCOM: return "TextureBlockMatchQCOM"; + default: return "Bad"; } } @@ -1538,6 +1546,11 @@ const char* OpcodeString(int op) case OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT"; case OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT"; + case OpImageSampleWeightedQCOM: return "OpImageSampleWeightedQCOM"; + case OpImageBoxFilterQCOM: return "OpImageBoxFilterQCOM"; + case OpImageBlockMatchSADQCOM: return "OpImageBlockMatchSADQCOM"; + case OpImageBlockMatchSSDQCOM: return "OpImageBlockMatchSSDQCOM"; + default: return "Bad"; } @@ -3339,6 +3352,34 @@ void Parameterize() InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); InstructionDesc[OpDepthAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); + + InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandId, "'source texture'"); + InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandId, "'texture coordinates'"); + InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandId, "'weights texture'"); + InstructionDesc[OpImageSampleWeightedQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageSampleWeightedQCOM].setResultAndType(true, true); + + InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandId, "'source texture'"); + InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandId, "'texture coordinates'"); + InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandId, "'box size'"); + InstructionDesc[OpImageBoxFilterQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageBoxFilterQCOM].setResultAndType(true, true); + + InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'target texture'"); + InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'target coordinates'"); + InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'reference texture'"); + InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'reference coordinates'"); + InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandId, "'block size'"); + InstructionDesc[OpImageBlockMatchSADQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageBlockMatchSADQCOM].setResultAndType(true, true); + + InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'target texture'"); + InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'target coordinates'"); + InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'reference texture'"); + InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'reference coordinates'"); + InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'block size'"); + InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageBlockMatchSSDQCOM].setResultAndType(true, true); }); } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 4fb721ef18..bdc96fa399 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -513,6 +513,8 @@ enum Decoration { DecorationMaxByteOffsetId = 47, DecorationNoSignedWrap = 4469, DecorationNoUnsignedWrap = 4470, + DecorationWeightTextureQCOM = 4487, + DecorationBlockMatchTextureQCOM = 4488, DecorationExplicitInterpAMD = 4999, DecorationOverrideCoverageNV = 5248, DecorationPassthroughNV = 5250, @@ -1023,6 +1025,9 @@ enum Capability { CapabilityRayQueryKHR = 4472, CapabilityRayTraversalPrimitiveCullingKHR = 4478, CapabilityRayTracingKHR = 4479, + CapabilityTextureSampleWeightedQCOM = 4484, + CapabilityTextureBoxFilterQCOM = 4485, + CapabilityTextureBlockMatchQCOM = 4486, CapabilityFloat16ImageAMD = 5008, CapabilityImageGatherBiasLodAMD = 5009, CapabilityFragmentMaskAMD = 5010, @@ -1678,6 +1683,10 @@ enum Op { OpRayQueryConfirmIntersectionKHR = 4476, OpRayQueryProceedKHR = 4477, OpRayQueryGetIntersectionTypeKHR = 4479, + OpImageSampleWeightedQCOM = 4480, + OpImageBoxFilterQCOM = 4481, + OpImageBlockMatchSSDQCOM = 4482, + OpImageBlockMatchSADQCOM = 4483, OpGroupIAddNonUniformAMD = 5000, OpGroupFAddNonUniformAMD = 5001, OpGroupFMinNonUniformAMD = 5002, @@ -2395,6 +2404,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpRayQueryConfirmIntersectionKHR: *hasResult = false; *hasResultType = false; break; case OpRayQueryProceedKHR: *hasResult = true; *hasResultType = true; break; case OpRayQueryGetIntersectionTypeKHR: *hasResult = true; *hasResultType = true; break; + case OpImageSampleWeightedQCOM: *hasResult = true; *hasResultType = true; break; + case OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break; + case OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break; + case OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break; case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; diff --git a/Test/baseResults/spv.tpipBlockMatchSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchSAD.frag.out new file mode 100644 index 0000000000..a807d9238c --- /dev/null +++ b/Test/baseResults/spv.tpipBlockMatchSAD.frag.out @@ -0,0 +1,123 @@ +spv.tpipBlockMatchSAD.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 72 + + Capability Shader + Capability TextureBlockMatchQCOM + Extension "SPV_QCOM_image_processing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 41 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" + Name 4 "main" + Name 9 "tgt_coords" + Name 13 "v_texcoord" + Name 26 "ref_coords" + Name 37 "blockSize" + Name 41 "fragColor" + Name 44 "tex2D_src1" + Name 48 "samp" + Name 53 "tex2D_src2" + Name 61 "target_samp" + Name 64 "ref_samp" + Name 71 "tex2DArray_weights" + Decorate 13(v_texcoord) Location 0 + Decorate 41(fragColor) Location 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) Binding 1 + Decorate 48(samp) DescriptorSet 0 + Decorate 48(samp) Binding 3 + Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM + Decorate 61(target_samp) DescriptorSet 0 + Decorate 61(target_samp) Binding 4 + Decorate 64(ref_samp) DescriptorSet 0 + Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM + Decorate 71(tex2DArray_weights) DescriptorSet 0 + Decorate 71(tex2DArray_weights) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Input 11(fvec4) + 13(v_texcoord): 12(ptr) Variable Input + 14: 6(int) Constant 0 + 15: TypePointer Input 10(float) + 19: TypePointer Function 6(int) + 21: 6(int) Constant 1 + 27: 6(int) Constant 2 + 32: 6(int) Constant 3 + 38: 6(int) Constant 4 + 39: 7(ivec2) ConstantComposite 38 38 + 40: TypePointer Output 11(fvec4) + 41(fragColor): 40(ptr) Variable Output + 42: TypeImage 10(float) 2D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(tex2D_src1): 43(ptr) Variable UniformConstant + 46: TypeSampler + 47: TypePointer UniformConstant 46 + 48(samp): 47(ptr) Variable UniformConstant + 50: TypeSampledImage 42 + 53(tex2D_src2): 43(ptr) Variable UniformConstant + 60: TypePointer UniformConstant 50 + 61(target_samp): 60(ptr) Variable UniformConstant + 64(ref_samp): 60(ptr) Variable UniformConstant + 69: TypeImage 10(float) 2D array sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(tex2DArray_weights): 70(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(tgt_coords): 8(ptr) Variable Function + 26(ref_coords): 8(ptr) Variable Function + 37(blockSize): 8(ptr) Variable Function + 16: 15(ptr) AccessChain 13(v_texcoord) 14 + 17: 10(float) Load 16 + 18: 6(int) ConvertFToU 17 + 20: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 20 18 + 22: 15(ptr) AccessChain 13(v_texcoord) 21 + 23: 10(float) Load 22 + 24: 6(int) ConvertFToU 23 + 25: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 25 24 + 28: 15(ptr) AccessChain 13(v_texcoord) 27 + 29: 10(float) Load 28 + 30: 6(int) ConvertFToU 29 + 31: 19(ptr) AccessChain 26(ref_coords) 14 + Store 31 30 + 33: 15(ptr) AccessChain 13(v_texcoord) 32 + 34: 10(float) Load 33 + 35: 6(int) ConvertFToU 34 + 36: 19(ptr) AccessChain 26(ref_coords) 21 + Store 36 35 + Store 37(blockSize) 39 + 45: 42 Load 44(tex2D_src1) + 49: 46 Load 48(samp) + 51: 50 SampledImage 45 49 + 52: 7(ivec2) Load 9(tgt_coords) + 54: 42 Load 53(tex2D_src2) + 55: 46 Load 48(samp) + 56: 50 SampledImage 54 55 + 57: 7(ivec2) Load 26(ref_coords) + 58: 7(ivec2) Load 37(blockSize) + 59: 11(fvec4) ImageBlockMatchSADQCOM 51 52 56 57 58 + Store 41(fragColor) 59 + 62: 50 Load 61(target_samp) + 63: 7(ivec2) Load 9(tgt_coords) + 65: 50 Load 64(ref_samp) + 66: 7(ivec2) Load 26(ref_coords) + 67: 7(ivec2) Load 37(blockSize) + 68: 11(fvec4) ImageBlockMatchSADQCOM 62 63 65 66 67 + Store 41(fragColor) 68 + Return + FunctionEnd diff --git a/Test/baseResults/spv.tpipBlockMatchSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchSSD.frag.out new file mode 100644 index 0000000000..e7ac73b636 --- /dev/null +++ b/Test/baseResults/spv.tpipBlockMatchSSD.frag.out @@ -0,0 +1,123 @@ +spv.tpipBlockMatchSSD.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 72 + + Capability Shader + Capability TextureBlockMatchQCOM + Extension "SPV_QCOM_image_processing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 41 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" + Name 4 "main" + Name 9 "tgt_coords" + Name 13 "v_texcoord" + Name 26 "ref_coords" + Name 37 "blockSize" + Name 41 "fragColor" + Name 44 "tex2D_src1" + Name 48 "samp" + Name 53 "tex2D_src2" + Name 61 "target_samp" + Name 64 "ref_samp" + Name 71 "tex2DArray_weights" + Decorate 13(v_texcoord) Location 0 + Decorate 41(fragColor) Location 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) Binding 1 + Decorate 48(samp) DescriptorSet 0 + Decorate 48(samp) Binding 3 + Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM + Decorate 61(target_samp) DescriptorSet 0 + Decorate 61(target_samp) Binding 4 + Decorate 64(ref_samp) DescriptorSet 0 + Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM + Decorate 71(tex2DArray_weights) DescriptorSet 0 + Decorate 71(tex2DArray_weights) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Input 11(fvec4) + 13(v_texcoord): 12(ptr) Variable Input + 14: 6(int) Constant 0 + 15: TypePointer Input 10(float) + 19: TypePointer Function 6(int) + 21: 6(int) Constant 1 + 27: 6(int) Constant 2 + 32: 6(int) Constant 3 + 38: 6(int) Constant 4 + 39: 7(ivec2) ConstantComposite 38 38 + 40: TypePointer Output 11(fvec4) + 41(fragColor): 40(ptr) Variable Output + 42: TypeImage 10(float) 2D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(tex2D_src1): 43(ptr) Variable UniformConstant + 46: TypeSampler + 47: TypePointer UniformConstant 46 + 48(samp): 47(ptr) Variable UniformConstant + 50: TypeSampledImage 42 + 53(tex2D_src2): 43(ptr) Variable UniformConstant + 60: TypePointer UniformConstant 50 + 61(target_samp): 60(ptr) Variable UniformConstant + 64(ref_samp): 60(ptr) Variable UniformConstant + 69: TypeImage 10(float) 2D array sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(tex2DArray_weights): 70(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(tgt_coords): 8(ptr) Variable Function + 26(ref_coords): 8(ptr) Variable Function + 37(blockSize): 8(ptr) Variable Function + 16: 15(ptr) AccessChain 13(v_texcoord) 14 + 17: 10(float) Load 16 + 18: 6(int) ConvertFToU 17 + 20: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 20 18 + 22: 15(ptr) AccessChain 13(v_texcoord) 21 + 23: 10(float) Load 22 + 24: 6(int) ConvertFToU 23 + 25: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 25 24 + 28: 15(ptr) AccessChain 13(v_texcoord) 27 + 29: 10(float) Load 28 + 30: 6(int) ConvertFToU 29 + 31: 19(ptr) AccessChain 26(ref_coords) 14 + Store 31 30 + 33: 15(ptr) AccessChain 13(v_texcoord) 32 + 34: 10(float) Load 33 + 35: 6(int) ConvertFToU 34 + 36: 19(ptr) AccessChain 26(ref_coords) 21 + Store 36 35 + Store 37(blockSize) 39 + 45: 42 Load 44(tex2D_src1) + 49: 46 Load 48(samp) + 51: 50 SampledImage 45 49 + 52: 7(ivec2) Load 9(tgt_coords) + 54: 42 Load 53(tex2D_src2) + 55: 46 Load 48(samp) + 56: 50 SampledImage 54 55 + 57: 7(ivec2) Load 26(ref_coords) + 58: 7(ivec2) Load 37(blockSize) + 59: 11(fvec4) ImageBlockMatchSSDQCOM 51 52 56 57 58 + Store 41(fragColor) 59 + 62: 50 Load 61(target_samp) + 63: 7(ivec2) Load 9(tgt_coords) + 65: 50 Load 64(ref_samp) + 66: 7(ivec2) Load 26(ref_coords) + 67: 7(ivec2) Load 37(blockSize) + 68: 11(fvec4) ImageBlockMatchSSDQCOM 62 63 65 66 67 + Store 41(fragColor) 68 + Return + FunctionEnd diff --git a/Test/baseResults/spv.tpipBoxFilter.frag.out b/Test/baseResults/spv.tpipBoxFilter.frag.out new file mode 100644 index 0000000000..5620a81625 --- /dev/null +++ b/Test/baseResults/spv.tpipBoxFilter.frag.out @@ -0,0 +1,81 @@ +spv.tpipBoxFilter.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 43 + + Capability Shader + Capability TextureBoxFilterQCOM + Extension "SPV_QCOM_image_processing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 15 27 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" + Name 4 "main" + Name 9 "boxSize" + Name 15 "fragColor" + Name 18 "tex2D_src1" + Name 22 "samp" + Name 27 "v_texcoord" + Name 33 "tex_samp" + Name 41 "tex2DArray_weights" + Name 42 "tex2D_src2" + Decorate 15(fragColor) Location 0 + Decorate 18(tex2D_src1) DescriptorSet 0 + Decorate 18(tex2D_src1) Binding 1 + Decorate 22(samp) DescriptorSet 0 + Decorate 22(samp) Binding 3 + Decorate 27(v_texcoord) Location 0 + Decorate 33(tex_samp) DescriptorSet 0 + Decorate 33(tex_samp) Binding 4 + Decorate 41(tex2DArray_weights) DescriptorSet 0 + Decorate 41(tex2DArray_weights) Binding 0 + Decorate 42(tex2D_src2) DescriptorSet 0 + Decorate 42(tex2D_src2) Binding 2 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 2 + 8: TypePointer Function 7(fvec2) + 10: 6(float) Constant 1075838976 + 11: 6(float) Constant 1083179008 + 12: 7(fvec2) ConstantComposite 10 11 + 13: TypeVector 6(float) 4 + 14: TypePointer Output 13(fvec4) + 15(fragColor): 14(ptr) Variable Output + 16: TypeImage 6(float) 2D sampled format:Unknown + 17: TypePointer UniformConstant 16 + 18(tex2D_src1): 17(ptr) Variable UniformConstant + 20: TypeSampler + 21: TypePointer UniformConstant 20 + 22(samp): 21(ptr) Variable UniformConstant + 24: TypeSampledImage 16 + 26: TypePointer Input 13(fvec4) + 27(v_texcoord): 26(ptr) Variable Input + 32: TypePointer UniformConstant 24 + 33(tex_samp): 32(ptr) Variable UniformConstant + 39: TypeImage 6(float) 2D array sampled format:Unknown + 40: TypePointer UniformConstant 39 +41(tex2DArray_weights): 40(ptr) Variable UniformConstant + 42(tex2D_src2): 17(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(boxSize): 8(ptr) Variable Function + Store 9(boxSize) 12 + 19: 16 Load 18(tex2D_src1) + 23: 20 Load 22(samp) + 25: 24 SampledImage 19 23 + 28: 13(fvec4) Load 27(v_texcoord) + 29: 7(fvec2) VectorShuffle 28 28 0 1 + 30: 7(fvec2) Load 9(boxSize) + 31: 13(fvec4) ImageBoxFilterQCOM 25 29 30 + Store 15(fragColor) 31 + 34: 24 Load 33(tex_samp) + 35: 13(fvec4) Load 27(v_texcoord) + 36: 7(fvec2) VectorShuffle 35 35 0 1 + 37: 7(fvec2) Load 9(boxSize) + 38: 13(fvec4) ImageBoxFilterQCOM 34 36 37 + Store 15(fragColor) 38 + Return + FunctionEnd diff --git a/Test/baseResults/spv.tpipSampleWeighted.frag.out b/Test/baseResults/spv.tpipSampleWeighted.frag.out new file mode 100644 index 0000000000..bf108742d0 --- /dev/null +++ b/Test/baseResults/spv.tpipSampleWeighted.frag.out @@ -0,0 +1,84 @@ +spv.tpipSampleWeighted.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 43 + + Capability Shader + Capability TextureSampleWeightedQCOM + Extension "SPV_QCOM_image_processing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 9 21 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" + Name 4 "main" + Name 9 "fragColor" + Name 12 "tex2D_src1" + Name 16 "samp" + Name 21 "v_texcoord" + Name 27 "tex2DArray_weights" + Name 34 "tex_samp" + Name 39 "tex_samp_array" + Name 42 "tex2D_src2" + Decorate 9(fragColor) Location 0 + Decorate 12(tex2D_src1) DescriptorSet 0 + Decorate 12(tex2D_src1) Binding 1 + Decorate 16(samp) DescriptorSet 0 + Decorate 16(samp) Binding 3 + Decorate 21(v_texcoord) Location 0 + Decorate 27(tex2DArray_weights) DescriptorSet 0 + Decorate 27(tex2DArray_weights) Binding 0 + Decorate 27(tex2DArray_weights) DecorationWeightTextureQCOM + Decorate 34(tex_samp) DescriptorSet 0 + Decorate 34(tex_samp) Binding 4 + Decorate 39(tex_samp_array) DescriptorSet 0 + Decorate 39(tex_samp_array) Binding 5 + Decorate 39(tex_samp_array) DecorationWeightTextureQCOM + Decorate 42(tex2D_src2) DescriptorSet 0 + Decorate 42(tex2D_src2) Binding 2 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Output 7(fvec4) + 9(fragColor): 8(ptr) Variable Output + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(tex2D_src1): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(samp): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypePointer Input 7(fvec4) + 21(v_texcoord): 20(ptr) Variable Input + 22: TypeVector 6(float) 2 + 25: TypeImage 6(float) 2D array sampled format:Unknown + 26: TypePointer UniformConstant 25 +27(tex2DArray_weights): 26(ptr) Variable UniformConstant + 30: TypeSampledImage 25 + 33: TypePointer UniformConstant 18 + 34(tex_samp): 33(ptr) Variable UniformConstant + 38: TypePointer UniformConstant 30 +39(tex_samp_array): 38(ptr) Variable UniformConstant + 42(tex2D_src2): 11(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 13: 10 Load 12(tex2D_src1) + 17: 14 Load 16(samp) + 19: 18 SampledImage 13 17 + 23: 7(fvec4) Load 21(v_texcoord) + 24: 22(fvec2) VectorShuffle 23 23 0 1 + 28: 25 Load 27(tex2DArray_weights) + 29: 14 Load 16(samp) + 31: 30 SampledImage 28 29 + 32: 7(fvec4) ImageSampleWeightedQCOM 19 24 31 + Store 9(fragColor) 32 + 35: 18 Load 34(tex_samp) + 36: 7(fvec4) Load 21(v_texcoord) + 37: 22(fvec2) VectorShuffle 36 36 0 1 + 40: 30 Load 39(tex_samp_array) + 41: 7(fvec4) ImageSampleWeightedQCOM 35 37 40 + Store 9(fragColor) 41 + Return + FunctionEnd diff --git a/Test/baseResults/spv.tpipTextureArrays.frag.out b/Test/baseResults/spv.tpipTextureArrays.frag.out new file mode 100644 index 0000000000..28b63f5714 --- /dev/null +++ b/Test/baseResults/spv.tpipTextureArrays.frag.out @@ -0,0 +1,128 @@ +spv.tpipTextureArrays.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 84 + + Capability Shader + Capability TextureBlockMatchQCOM + Extension "SPV_QCOM_image_processing" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 46 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" + Name 4 "main" + Name 9 "tgt_coords" + Name 13 "v_texcoord" + Name 26 "ref_coords" + Name 37 "blockSize" + Name 40 "ii" + Name 46 "fragColor" + Name 51 "samplers" + Name 60 "tex2D_srcs" + Name 67 "samp" + Decorate 13(v_texcoord) Location 0 + Decorate 46(fragColor) Location 0 + Decorate 51(samplers) DescriptorSet 0 + Decorate 51(samplers) Binding 5 + Decorate 60(tex2D_srcs) DescriptorSet 0 + Decorate 60(tex2D_srcs) Binding 4 + Decorate 67(samp) DescriptorSet 0 + Decorate 67(samp) Binding 3 + Decorate 55 DecorationBlockMatchTextureQCOM + Decorate 63 DecorationBlockMatchTextureQCOM + Decorate 74 DecorationBlockMatchTextureQCOM + Decorate 79 DecorationBlockMatchTextureQCOM + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Input 11(fvec4) + 13(v_texcoord): 12(ptr) Variable Input + 14: 6(int) Constant 0 + 15: TypePointer Input 10(float) + 19: TypePointer Function 6(int) + 21: 6(int) Constant 1 + 27: 6(int) Constant 2 + 32: 6(int) Constant 3 + 38: 6(int) Constant 4 + 39: 7(ivec2) ConstantComposite 38 38 + 43: 6(int) Constant 8 + 45: TypePointer Output 11(fvec4) + 46(fragColor): 45(ptr) Variable Output + 47: TypeImage 10(float) 2D sampled format:Unknown + 48: TypeSampledImage 47 + 49: TypeArray 48 32 + 50: TypePointer UniformConstant 49 + 51(samplers): 50(ptr) Variable UniformConstant + 52: TypeInt 32 1 + 53: 52(int) Constant 0 + 54: TypePointer UniformConstant 48 + 58: TypeArray 47 43 + 59: TypePointer UniformConstant 58 + 60(tex2D_srcs): 59(ptr) Variable UniformConstant + 62: TypePointer UniformConstant 47 + 65: TypeSampler + 66: TypePointer UniformConstant 65 + 67(samp): 66(ptr) Variable UniformConstant + 73: 52(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + 9(tgt_coords): 8(ptr) Variable Function + 26(ref_coords): 8(ptr) Variable Function + 37(blockSize): 8(ptr) Variable Function + 40(ii): 19(ptr) Variable Function + 16: 15(ptr) AccessChain 13(v_texcoord) 14 + 17: 10(float) Load 16 + 18: 6(int) ConvertFToU 17 + 20: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 20 18 + 22: 15(ptr) AccessChain 13(v_texcoord) 21 + 23: 10(float) Load 22 + 24: 6(int) ConvertFToU 23 + 25: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 25 24 + 28: 15(ptr) AccessChain 13(v_texcoord) 27 + 29: 10(float) Load 28 + 30: 6(int) ConvertFToU 29 + 31: 19(ptr) AccessChain 26(ref_coords) 14 + Store 31 30 + 33: 15(ptr) AccessChain 13(v_texcoord) 32 + 34: 10(float) Load 33 + 35: 6(int) ConvertFToU 34 + 36: 19(ptr) AccessChain 26(ref_coords) 21 + Store 36 35 + Store 37(blockSize) 39 + 41: 19(ptr) AccessChain 9(tgt_coords) 14 + 42: 6(int) Load 41 + 44: 6(int) UMod 42 43 + Store 40(ii) 44 + 55: 54(ptr) AccessChain 51(samplers) 53 + 56: 48 Load 55 + 57: 7(ivec2) Load 9(tgt_coords) + 61: 6(int) Load 40(ii) + 63: 62(ptr) AccessChain 60(tex2D_srcs) 61 + 64: 47 Load 63 + 68: 65 Load 67(samp) + 69: 48 SampledImage 64 68 + 70: 7(ivec2) Load 26(ref_coords) + 71: 7(ivec2) Load 37(blockSize) + 72: 11(fvec4) ImageBlockMatchSSDQCOM 56 57 69 70 71 + Store 46(fragColor) 72 + 74: 62(ptr) AccessChain 60(tex2D_srcs) 73 + 75: 47 Load 74 + 76: 65 Load 67(samp) + 77: 48 SampledImage 75 76 + 78: 7(ivec2) Load 9(tgt_coords) + 79: 54(ptr) AccessChain 51(samplers) 73 + 80: 48 Load 79 + 81: 7(ivec2) Load 26(ref_coords) + 82: 7(ivec2) Load 37(blockSize) + 83: 11(fvec4) ImageBlockMatchSADQCOM 77 78 80 81 82 + Store 46(fragColor) 83 + Return + FunctionEnd diff --git a/Test/spv.tpipBlockMatchSAD.frag b/Test/spv.tpipBlockMatchSAD.frag new file mode 100644 index 0000000000..832f59d491 --- /dev/null +++ b/Test/spv.tpipBlockMatchSAD.frag @@ -0,0 +1,38 @@ +#version 450 +#extension GL_QCOM_image_processing : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D target_samp; +layout(set = 0, binding = 5) uniform sampler2D ref_samp; + +void main() +{ + + uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); + uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); + uvec2 blockSize = uvec2(4, 4); + fragColor = textureBlockMatchSADQCOM( + sampler2D(tex2D_src1, samp), // target texture + tgt_coords, // target coords + sampler2D(tex2D_src2, samp), // reference texture + ref_coords, // reference coords + blockSize); // block size + fragColor = textureBlockMatchSADQCOM( + target_samp, // target texture + tgt_coords, // target coords + ref_samp, // reference texture + ref_coords, // reference coords + blockSize); // block size +} + diff --git a/Test/spv.tpipBlockMatchSSD.frag b/Test/spv.tpipBlockMatchSSD.frag new file mode 100644 index 0000000000..aa3ff2a951 --- /dev/null +++ b/Test/spv.tpipBlockMatchSSD.frag @@ -0,0 +1,38 @@ +#version 450 +#extension GL_QCOM_image_processing : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D target_samp; +layout(set = 0, binding = 5) uniform sampler2D ref_samp; + +void main() +{ + + uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); + uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); + uvec2 blockSize = uvec2(4, 4); + fragColor = textureBlockMatchSSDQCOM( + sampler2D(tex2D_src1, samp), // target texture + tgt_coords, // target coords + sampler2D(tex2D_src2, samp), // reference texture + ref_coords, // reference coords + blockSize); // block size + fragColor = textureBlockMatchSSDQCOM( + target_samp, // target texture + tgt_coords, // target coords + ref_samp, // reference texture + ref_coords, // reference coords + blockSize); // block size +} + diff --git a/Test/spv.tpipBoxFilter.frag b/Test/spv.tpipBoxFilter.frag new file mode 100644 index 0000000000..d86d531e25 --- /dev/null +++ b/Test/spv.tpipBoxFilter.frag @@ -0,0 +1,32 @@ +#version 450 +#extension GL_QCOM_image_processing : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D tex_samp; + +void main() +{ + + vec2 boxSize = vec2(2.5, 4.5); + fragColor = textureBoxFilterQCOM( + sampler2D(tex2D_src1, samp), // source texture + v_texcoord.xy, // tex coords + boxSize); // box size + fragColor = textureBoxFilterQCOM( + tex_samp, // combined source texture + v_texcoord.xy, // tex coords + boxSize); // box size + +} + diff --git a/Test/spv.tpipSampleWeighted.frag b/Test/spv.tpipSampleWeighted.frag new file mode 100644 index 0000000000..0d10028936 --- /dev/null +++ b/Test/spv.tpipSampleWeighted.frag @@ -0,0 +1,32 @@ +#version 450 +#extension GL_QCOM_image_processing : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D tex_samp; +layout(set = 0, binding = 5) uniform sampler2DArray tex_samp_array; + +void main() +{ + + fragColor = textureWeightedQCOM( + sampler2D(tex2D_src1, samp), // source texture + v_texcoord.xy, // tex coords + sampler2DArray(tex2DArray_weights, samp)); // weight texture + fragColor = textureWeightedQCOM( + tex_samp, // combined source texture + v_texcoord.xy, // tex coords + tex_samp_array); // combined weight texture + +} + diff --git a/Test/spv.tpipTextureArrays.frag b/Test/spv.tpipTextureArrays.frag new file mode 100644 index 0000000000..332acb318c --- /dev/null +++ b/Test/spv.tpipTextureArrays.frag @@ -0,0 +1,40 @@ +#version 450 +#extension GL_QCOM_image_processing : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 3) uniform sampler samp; + + +layout(set = 0, binding = 4) uniform texture2D tex2D_srcs[8]; +layout(set = 0, binding = 5) uniform sampler2D samplers[3]; + +void main() +{ + + uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); + uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); + uvec2 blockSize = uvec2(4, 4); + uint ii = tgt_coords.x % 8; + fragColor = textureBlockMatchSSDQCOM( + samplers[0], // target texture + tgt_coords, // target coords + sampler2D(tex2D_srcs[ii], samp), // reference texture + ref_coords, // reference coords + blockSize); // block size + + fragColor = textureBlockMatchSADQCOM( + sampler2D(tex2D_srcs[1], samp), // target texture + tgt_coords, // target coords + samplers[1], // reference texture + ref_coords, // reference coords + blockSize); // block size + +} + diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index b002ce889d..604f08b6ec 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1100,6 +1100,12 @@ enum TOperator { // Shader tile image ops EOpStencilAttachmentReadEXT, // Fragment only EOpDepthAttachmentReadEXT, // Fragment only + + // Image processing + EOpImageSampleWeightedQCOM, + EOpImageBoxFilterQCOM, + EOpImageBlockMatchSADQCOM, + EOpImageBlockMatchSSDQCOM, }; class TIntermTraverser; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 3c7aaea3ff..c23bda163f 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4135,6 +4135,18 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } + // QCOM_image_processing + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 140)) { + commonBuiltins.append( + "vec4 textureWeightedQCOM(sampler2D, vec2, sampler2DArray);" + "vec4 textureWeightedQCOM(sampler2D, vec2, sampler1DArray);" + "vec4 textureBoxFilterQCOM(sampler2D, vec2, vec2);" + "vec4 textureBlockMatchSADQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" + "vec4 textureBlockMatchSSDQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" + "\n"); + } + //============================================================================ // // Prototypes for built-in functions seen by vertex shaders only. @@ -4624,7 +4636,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "uvec4 fragmentFetchAMD(usubpassInputMS, uint);" "\n"); - } + } // Builtins for GL_NV_ray_tracing/GL_NV_ray_tracing_motion_blur/GL_EXT_ray_tracing/GL_EXT_ray_query/ // GL_NV_shader_invocation_reorder/GL_KHR_ray_tracing_position_Fetch @@ -8095,7 +8107,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_ViewIndex", EbvViewIndex, symbolTable); } - if (profile != EEsProfile) { + if (profile != EEsProfile) { BuiltInVariable("gl_SubGroupInvocationARB", EbvSubGroupInvocation, symbolTable); BuiltInVariable("gl_SubGroupEqMaskARB", EbvSubGroupEqMask, symbolTable); BuiltInVariable("gl_SubGroupGeMaskARB", EbvSubGroupGeMask, symbolTable); @@ -8725,6 +8737,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("stencilAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); symbolTable.setFunctionExtensions("depthAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); symbolTable.setFunctionExtensions("colorAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 140)) { + symbolTable.setFunctionExtensions("textureWeightedQCOM", 1, &E_GL_QCOM_image_processing); + symbolTable.setFunctionExtensions("textureBoxFilterQCOM", 1, &E_GL_QCOM_image_processing); + symbolTable.setFunctionExtensions("textureBlockMatchSADQCOM", 1, &E_GL_QCOM_image_processing); + symbolTable.setFunctionExtensions("textureBlockMatchSSDQCOM", 1, &E_GL_QCOM_image_processing); + } break; case EShLangCompute: @@ -9890,6 +9910,14 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("shadow2DEXT", EOpTexture); symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj); } + + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 140)) { + symbolTable.relateToOperator("textureWeightedQCOM", EOpImageSampleWeightedQCOM); + symbolTable.relateToOperator("textureBoxFilterQCOM", EOpImageBoxFilterQCOM); + symbolTable.relateToOperator("textureBlockMatchSADQCOM", EOpImageBlockMatchSADQCOM); + symbolTable.relateToOperator("textureBlockMatchSSDQCOM", EOpImageBlockMatchSSDQCOM); + } } switch(language) { @@ -10030,7 +10058,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("reportIntersectionNV", EOpReportIntersection); symbolTable.relateToOperator("reportIntersectionEXT", EOpReportIntersection); - } + } break; case EShLangAnyHit: if (profile != EEsProfile && version >= 460) { diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 40cf3ed81e..38cbf3e1ff 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -307,6 +307,9 @@ void TParseVersions::initializeExtensionBehavior() // ARM extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; + // QCOM + extensionBehavior[E_GL_QCOM_image_processing] = EBhDisable; + // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; extensionBehavior[E_GL_KHR_blend_equation_advanced] = EBhDisable; @@ -431,6 +434,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_OES_texture_buffer 1\n" "#define GL_OES_texture_cube_map_array 1\n" "#define GL_EXT_shader_non_constant_global_initializers 1\n" + + "#define GL_QCOM_image_processing 1\n" ; if (version >= 300) { @@ -555,6 +560,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_NV_integer_cooperative_matrix 1\n" "#define GL_NV_shader_invocation_reorder 1\n" + "#define GL_QCOM_image_processing 1\n" + "#define GL_EXT_shader_explicit_arithmetic_types 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int16 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 29ebed248e..564995b275 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -281,6 +281,8 @@ const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_ const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer_cooperative_matrix"; const char* const E_GL_NV_shader_invocation_reorder = "GL_NV_shader_invocation_reorder"; +const char* const E_GL_QCOM_image_processing = "GL_QCOM_image_processing"; + // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; const char* const E_GL_KHR_blend_equation_advanced = "GL_KHR_blend_equation_advanced"; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 537bc589e8..4482161cd1 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -76,6 +76,7 @@ using OpenGLSemantics = GlslangTest<::testing::TestWithParam>; using VulkanAstSemantics = GlslangTest<::testing::TestWithParam>; using HlslIoMap = GlslangTest<::testing::TestWithParam>; using GlslIoMap = GlslangTest<::testing::TestWithParam>; +using CompileVulkanToSpirvTestQCOM = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestNV = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam>; @@ -196,6 +197,15 @@ TEST_P(GlslIoMap, FromFile) GetParam().flattenUniforms); } +// Compiling GLSL to SPIR-V under Vulkan semantics (QCOM extensions enabled). +// Expected to successfully generate SPIR-V. +TEST_P(CompileVulkanToSpirvTestQCOM, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), + Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, + Target::Spv); +} + // Compiling GLSL to SPIR-V under Vulkan semantics (AMD extensions enabled). // Expected to successfully generate SPIR-V. TEST_P(CompileVulkanToSpirvTestAMD, FromFile) @@ -783,6 +793,18 @@ INSTANTIATE_TEST_SUITE_P( FileNameAsCustomTestSuffix ); +INSTANTIATE_TEST_SUITE_P( + Glsl, CompileVulkanToSpirvTestQCOM, + ::testing::ValuesIn(std::vector({ + "spv.tpipSampleWeighted.frag", + "spv.tpipBoxFilter.frag", + "spv.tpipBlockMatchSSD.frag", + "spv.tpipBlockMatchSAD.frag", + "spv.tpipTextureArrays.frag", + })), + FileNameAsCustomTestSuffix +); + INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkanToSpirvTestAMD, ::testing::ValuesIn(std::vector({ diff --git a/known_good.json b/known_good.json index cb600dbae7..95029bd9f4 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "v2023.4.rc2" + "commit" : "89ca3aa571fe238944b31e88d5d8fe75fab0227a" }, { "name" : "spirv-tools/external/spirv-headers", From f1cb8608b390a7f51b4ae0d62cd415ba47a59b86 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 23 Aug 2023 12:04:01 -0600 Subject: [PATCH 269/594] Update CHANGES for release 13.0.0 --- CHANGES.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index b56469d3ee..74c454202b 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,22 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 13.0.0 2023-08-23 + +### Breaking changes +* Simplify PoolAlloc via thread_local + * Remove InitializeDLL functions + * Remove OSDependent TLS functions +* Remove GLSLANG_WEB and GLSLANG_WEB_DEVEL code paths + +### Other changes +* Raise CMAKE minimum to 3.17.2 +* Support GL_KHR_cooperative_matrix +* Support GL_QCOM_image_processing_support +* Support outputting each module to a filename with spirv-remap +* Generate an error when gl_PrimitiveShaderRateEXT is used without enabling the extension +* Improve layout checking when GL_EXT_spirv_intrinsics is enabled + ## 12.3.1 2023-07-20 ### Other changes From adfcaba7ae7bac77037e68d7fb755efff3bae74c Mon Sep 17 00:00:00 2001 From: Pedro Olsen Ferreira Date: Mon, 21 Aug 2023 09:28:46 +0100 Subject: [PATCH 270/594] Fix ODR violations On a shared build, these symbols exist in both libglslang.so and libSPIRV.so, leading to an ODR violation at runtime. --- glslang/Include/PoolAlloc.h | 13 +++++++++---- glslang/MachineIndependent/Initialize.cpp | 4 ---- glslang/MachineIndependent/Initialize.h | 3 +++ glslang/MachineIndependent/ParseHelper.cpp | 2 +- glslang/MachineIndependent/PoolAlloc.cpp | 10 ---------- glslang/MachineIndependent/preprocessor/Pp.cpp | 4 ++-- 6 files changed, 15 insertions(+), 21 deletions(-) diff --git a/glslang/Include/PoolAlloc.h b/glslang/Include/PoolAlloc.h index 3e67d6edff..e84ac52cd2 100644 --- a/glslang/Include/PoolAlloc.h +++ b/glslang/Include/PoolAlloc.h @@ -118,11 +118,16 @@ class TAllocation { unsigned char* mem; // beginning of our allocation (pts to header) TAllocation* prevAlloc; // prior allocation in the chain - const static unsigned char guardBlockBeginVal; - const static unsigned char guardBlockEndVal; - const static unsigned char userDataFill; + static inline constexpr unsigned char guardBlockBeginVal = 0xfb; + static inline constexpr unsigned char guardBlockEndVal = 0xfe; + static inline constexpr unsigned char userDataFill = 0xcd; + +# ifdef GUARD_BLOCKS + static inline constexpr size_t guardBlockSize = 16; +# else + static inline constexpr size_t guardBlockSize = 0; +# endif - const static size_t guardBlockSize; # ifdef GUARD_BLOCKS inline static size_t headerSize() { return sizeof(TAllocation); } # else diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index c23bda163f..2f8ce29525 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -61,10 +61,6 @@ const bool ARBCompatibility = true; const bool ForwardCompatibility = false; -// change this back to false if depending on textual spellings of texturing calls when consuming the AST -// Using PureOperatorBuiltins=false is deprecated. -bool PureOperatorBuiltins = true; - namespace { // diff --git a/glslang/MachineIndependent/Initialize.h b/glslang/MachineIndependent/Initialize.h index ac8ec33e99..42c32ddbb7 100644 --- a/glslang/MachineIndependent/Initialize.h +++ b/glslang/MachineIndependent/Initialize.h @@ -107,6 +107,9 @@ class TBuiltIns : public TBuiltInParseables { int dimMap[EsdNumDims]; }; +// change this back to false if depending on textual spellings of texturing calls when consuming the AST +// Using PureOperatorBuiltins=false is deprecated. +constexpr bool PureOperatorBuiltins = true; } // end namespace glslang #endif // _INITIALIZE_INCLUDED_ diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 4416a264c4..806983a1dc 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -38,6 +38,7 @@ // #include "ParseHelper.h" +#include "Initialize.h" #include "Scan.h" #include "../OSDependent/osinclude.h" @@ -2685,7 +2686,6 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } } -extern bool PureOperatorBuiltins; // Deprecated! Use PureOperatorBuiltins == true instead, in which case this // functionality is handled in builtInOpCheck() instead of here. diff --git a/glslang/MachineIndependent/PoolAlloc.cpp b/glslang/MachineIndependent/PoolAlloc.cpp index 471a980409..5d7173c9db 100644 --- a/glslang/MachineIndependent/PoolAlloc.cpp +++ b/glslang/MachineIndependent/PoolAlloc.cpp @@ -131,16 +131,6 @@ TPoolAllocator::~TPoolAllocator() } } -const unsigned char TAllocation::guardBlockBeginVal = 0xfb; -const unsigned char TAllocation::guardBlockEndVal = 0xfe; -const unsigned char TAllocation::userDataFill = 0xcd; - -# ifdef GUARD_BLOCKS - const size_t TAllocation::guardBlockSize = 16; -# else - const size_t TAllocation::guardBlockSize = 0; -# endif - // // Check a single guard block for damage // diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 8d2e85f0be..16b9d24376 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -378,8 +378,6 @@ namespace { int op_cmpl(int a) { return ~a; } int op_not(int a) { return !a; } -}; - struct TBinop { int token, precedence, (*op)(int, int); } binop[] = { @@ -412,6 +410,8 @@ struct TUnop { { '!', op_not }, }; +} // anonymous namespace + #define NUM_ELEMENTS(A) (sizeof(A) / sizeof(A[0])) int TPpContext::eval(int token, int precedence, bool shortCircuit, int& res, bool& err, TPpToken* ppToken) From a1f8cd429fed66ae107b5809ae6e727640b421a5 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 22 Aug 2023 17:51:20 -0600 Subject: [PATCH 271/594] Fix ByteAddressBuffer as function parameter Make sure that an id represents a variable before adding it to an entry point's interface. Fixes #3297. --- SPIRV/GlslangToSpv.cpp | 2 +- .../hlsl.buffer_ref_parameter.comp.out | 390 ++++++++++++++++++ Test/hlsl.buffer_ref_parameter.comp | 13 + gtests/Hlsl.FromFile.cpp | 16 + 4 files changed, 420 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/hlsl.buffer_ref_parameter.comp.out create mode 100644 Test/hlsl.buffer_ref_parameter.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 395315a176..373e95f0ae 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2014,7 +2014,7 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) spv::StorageClass sc = builder.getStorageClass(id); // Before SPIR-V 1.4, we only want to include Input and Output. // Starting with SPIR-V 1.4, we want all globals. - if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && builder.isGlobalStorage(id)) || + if ((glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4 && builder.isGlobalVariable(id)) || (sc == spv::StorageClassInput || sc == spv::StorageClassOutput)) { iOSet.insert(id); } diff --git a/Test/baseResults/hlsl.buffer_ref_parameter.comp.out b/Test/baseResults/hlsl.buffer_ref_parameter.comp.out new file mode 100644 index 0000000000..4ddf6f706e --- /dev/null +++ b/Test/baseResults/hlsl.buffer_ref_parameter.comp.out @@ -0,0 +1,390 @@ +hlsl.buffer_ref_parameter.comp +Shader version: 500 +local_size = (64, 1, 1) +0:? Sequence +0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) +0:4 Function Parameters: +0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:4 'vertex_id' ( in uint) +0:? Sequence +0:5 Branch: Return with expression +0:? intBitsToFloat ( temp 3-component vector of float) +0:? Sequence +0:5 move second child to first child ( temp int) +0:5 'byteAddrTemp' ( temp int) +0:5 right-shift ( temp int) +0:5 component-wise multiply ( temp uint) +0:5 component-wise multiply ( temp uint) +0:5 'vertex_id' ( in uint) +0:5 Constant: +0:5 3 (const uint) +0:5 Constant: +0:5 4 (const uint) +0:5 Constant: +0:5 2 (const int) +0:? Construct vec3 ( temp 3-component vector of uint) +0:5 indirect index ( temp uint) +0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:5 Constant: +0:5 0 (const uint) +0:5 'byteAddrTemp' ( temp int) +0:5 indirect index ( temp uint) +0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:5 Constant: +0:5 0 (const uint) +0:5 add ( temp int) +0:5 'byteAddrTemp' ( temp int) +0:5 Constant: +0:5 1 (const int) +0:5 indirect index ( temp uint) +0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:5 Constant: +0:5 0 (const uint) +0:5 add ( temp int) +0:5 'byteAddrTemp' ( temp int) +0:5 Constant: +0:5 2 (const int) +0:9 Function Definition: @main(u1; ( temp void) +0:9 Function Parameters: +0:9 'gi' ( in uint) +0:? Sequence +0:10 Sequence +0:10 move second child to first child ( temp 3-component vector of float) +0:10 'position_ms' ( temp 3-component vector of float) +0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) +0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:10 'gi' ( in uint) +0:? Sequence +0:12 move second child to first child ( temp int) +0:12 'byteAddrTemp' ( temp int) +0:12 right-shift ( temp int) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp uint) +0:12 indirect index (layout( row_major std430) buffer uint) +0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:12 Constant: +0:12 0 (const uint) +0:12 'byteAddrTemp' ( temp int) +0:12 direct index ( temp uint) +0:12 floatBitsToUint ( temp 3-component vector of uint) +0:12 'position_ms' ( temp 3-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp uint) +0:12 indirect index (layout( row_major std430) buffer uint) +0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:12 Constant: +0:12 0 (const uint) +0:12 add ( temp int) +0:12 'byteAddrTemp' ( temp int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( temp uint) +0:12 floatBitsToUint ( temp 3-component vector of uint) +0:12 'position_ms' ( temp 3-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp uint) +0:12 indirect index (layout( row_major std430) buffer uint) +0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:12 Constant: +0:12 0 (const uint) +0:12 add ( temp int) +0:12 'byteAddrTemp' ( temp int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( temp uint) +0:12 floatBitsToUint ( temp 3-component vector of uint) +0:12 'position_ms' ( temp 3-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:9 Function Definition: main( ( temp void) +0:9 Function Parameters: +0:? Sequence +0:9 move second child to first child ( temp uint) +0:? 'gi' ( temp uint) +0:? 'gi' ( in uint LocalInvocationIndex) +0:9 Function Call: @main(u1; ( temp void) +0:? 'gi' ( temp uint) +0:? Linker Objects +0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:? 'gi' ( in uint LocalInvocationIndex) + + +Linked compute stage: + + +Shader version: 500 +local_size = (64, 1, 1) +0:? Sequence +0:4 Function Definition: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) +0:4 Function Parameters: +0:4 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:4 'vertex_id' ( in uint) +0:? Sequence +0:5 Branch: Return with expression +0:? intBitsToFloat ( temp 3-component vector of float) +0:? Sequence +0:5 move second child to first child ( temp int) +0:5 'byteAddrTemp' ( temp int) +0:5 right-shift ( temp int) +0:5 component-wise multiply ( temp uint) +0:5 component-wise multiply ( temp uint) +0:5 'vertex_id' ( in uint) +0:5 Constant: +0:5 3 (const uint) +0:5 Constant: +0:5 4 (const uint) +0:5 Constant: +0:5 2 (const int) +0:? Construct vec3 ( temp 3-component vector of uint) +0:5 indirect index ( temp uint) +0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:5 Constant: +0:5 0 (const uint) +0:5 'byteAddrTemp' ( temp int) +0:5 indirect index ( temp uint) +0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:5 Constant: +0:5 0 (const uint) +0:5 add ( temp int) +0:5 'byteAddrTemp' ( temp int) +0:5 Constant: +0:5 1 (const int) +0:5 indirect index ( temp uint) +0:5 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:5 'buffer_position' (layout( row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:5 Constant: +0:5 0 (const uint) +0:5 add ( temp int) +0:5 'byteAddrTemp' ( temp int) +0:5 Constant: +0:5 2 (const int) +0:9 Function Definition: @main(u1; ( temp void) +0:9 Function Parameters: +0:9 'gi' ( in uint) +0:? Sequence +0:10 Sequence +0:10 move second child to first child ( temp 3-component vector of float) +0:10 'position_ms' ( temp 3-component vector of float) +0:10 Function Call: pull_position(block--u1[0]1;u1; ( temp 3-component vector of float) +0:10 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:10 'gi' ( in uint) +0:? Sequence +0:12 move second child to first child ( temp int) +0:12 'byteAddrTemp' ( temp int) +0:12 right-shift ( temp int) +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 2 (const int) +0:12 move second child to first child ( temp uint) +0:12 indirect index (layout( row_major std430) buffer uint) +0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:12 Constant: +0:12 0 (const uint) +0:12 'byteAddrTemp' ( temp int) +0:12 direct index ( temp uint) +0:12 floatBitsToUint ( temp 3-component vector of uint) +0:12 'position_ms' ( temp 3-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 move second child to first child ( temp uint) +0:12 indirect index (layout( row_major std430) buffer uint) +0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:12 Constant: +0:12 0 (const uint) +0:12 add ( temp int) +0:12 'byteAddrTemp' ( temp int) +0:12 Constant: +0:12 1 (const int) +0:12 direct index ( temp uint) +0:12 floatBitsToUint ( temp 3-component vector of uint) +0:12 'position_ms' ( temp 3-component vector of float) +0:12 Constant: +0:12 1 (const int) +0:12 move second child to first child ( temp uint) +0:12 indirect index (layout( row_major std430) buffer uint) +0:12 @data: direct index for structure (layout( row_major std430) buffer unsized 1-element array of uint) +0:12 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:12 Constant: +0:12 0 (const uint) +0:12 add ( temp int) +0:12 'byteAddrTemp' ( temp int) +0:12 Constant: +0:12 2 (const int) +0:12 direct index ( temp uint) +0:12 floatBitsToUint ( temp 3-component vector of uint) +0:12 'position_ms' ( temp 3-component vector of float) +0:12 Constant: +0:12 2 (const int) +0:9 Function Definition: main( ( temp void) +0:9 Function Parameters: +0:? Sequence +0:9 move second child to first child ( temp uint) +0:? 'gi' ( temp uint) +0:? 'gi' ( in uint LocalInvocationIndex) +0:9 Function Call: @main(u1; ( temp void) +0:? 'gi' ( temp uint) +0:? Linker Objects +0:? 'buffer_position_ms' (layout( set=0 binding=0 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:? 'r' (layout( set=0 binding=1 row_major std430) buffer block{layout( row_major std430) buffer unsized 1-element array of uint @data}) +0:? 'gi' ( in uint LocalInvocationIndex) + +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 90 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 53 62 85 + ExecutionMode 4 LocalSize 64 1 1 + Source HLSL 500 + Name 4 "main" + Name 8 "" + MemberName 8 0 "@data" + Name 16 "pull_position(block--u1[0]1;u1;" + Name 14 "buffer_position" + Name 15 "vertex_id" + Name 20 "@main(u1;" + Name 19 "gi" + Name 24 "byteAddrTemp" + Name 52 "position_ms" + Name 53 "buffer_position_ms" + Name 54 "param" + Name 57 "byteAddrTemp" + Name 60 "r" + MemberName 60(r) 0 "@data" + Name 62 "r" + Name 83 "gi" + Name 85 "gi" + Name 87 "param" + Decorate 7 ArrayStride 4 + MemberDecorate 8 0 NonWritable + MemberDecorate 8 0 Offset 0 + Decorate 8 Block + Decorate 14(buffer_position) NonWritable + Decorate 53(buffer_position_ms) DescriptorSet 0 + Decorate 53(buffer_position_ms) Binding 0 + Decorate 59 ArrayStride 4 + MemberDecorate 60(r) 0 Offset 0 + Decorate 60(r) Block + Decorate 62(r) DescriptorSet 0 + Decorate 62(r) Binding 1 + Decorate 85(gi) BuiltIn LocalInvocationIndex + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeRuntimeArray 6(int) + 8: TypeStruct 7 + 9: TypePointer StorageBuffer 8(struct) + 10: TypePointer Function 6(int) + 11: TypeFloat 32 + 12: TypeVector 11(float) 3 + 13: TypeFunction 12(fvec3) 9(ptr) 10(ptr) + 18: TypeFunction 2 10(ptr) + 22: TypeInt 32 1 + 23: TypePointer Function 22(int) + 26: 6(int) Constant 3 + 28: 6(int) Constant 4 + 30: 22(int) Constant 2 + 32: 22(int) Constant 0 + 34: TypePointer StorageBuffer 6(int) + 38: 22(int) Constant 1 + 46: TypeVector 6(int) 3 + 51: TypePointer Function 12(fvec3) +53(buffer_position_ms): 9(ptr) Variable StorageBuffer + 59: TypeRuntimeArray 6(int) + 60(r): TypeStruct 59 + 61: TypePointer StorageBuffer 60(r) + 62(r): 61(ptr) Variable StorageBuffer + 66: 6(int) Constant 0 + 73: 6(int) Constant 1 + 80: 6(int) Constant 2 + 84: TypePointer Input 6(int) + 85(gi): 84(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 83(gi): 10(ptr) Variable Function + 87(param): 10(ptr) Variable Function + 86: 6(int) Load 85(gi) + Store 83(gi) 86 + 88: 6(int) Load 83(gi) + Store 87(param) 88 + 89: 2 FunctionCall 20(@main(u1;) 87(param) + Return + FunctionEnd +16(pull_position(block--u1[0]1;u1;): 12(fvec3) Function None 13 +14(buffer_position): 9(ptr) FunctionParameter + 15(vertex_id): 10(ptr) FunctionParameter + 17: Label +24(byteAddrTemp): 23(ptr) Variable Function + 25: 6(int) Load 15(vertex_id) + 27: 6(int) IMul 25 26 + 29: 6(int) IMul 27 28 + 31: 22(int) ShiftRightLogical 29 30 + Store 24(byteAddrTemp) 31 + 33: 22(int) Load 24(byteAddrTemp) + 35: 34(ptr) AccessChain 14(buffer_position) 32 33 + 36: 6(int) Load 35 + 37: 22(int) Load 24(byteAddrTemp) + 39: 22(int) IAdd 37 38 + 40: 34(ptr) AccessChain 14(buffer_position) 32 39 + 41: 6(int) Load 40 + 42: 22(int) Load 24(byteAddrTemp) + 43: 22(int) IAdd 42 30 + 44: 34(ptr) AccessChain 14(buffer_position) 32 43 + 45: 6(int) Load 44 + 47: 46(ivec3) CompositeConstruct 36 41 45 + 48: 12(fvec3) Bitcast 47 + ReturnValue 48 + FunctionEnd + 20(@main(u1;): 2 Function None 18 + 19(gi): 10(ptr) FunctionParameter + 21: Label + 52(position_ms): 51(ptr) Variable Function + 54(param): 10(ptr) Variable Function +57(byteAddrTemp): 23(ptr) Variable Function + 55: 6(int) Load 19(gi) + Store 54(param) 55 + 56: 12(fvec3) FunctionCall 16(pull_position(block--u1[0]1;u1;) 53(buffer_position_ms) 54(param) + Store 52(position_ms) 56 + 58: 22(int) ShiftRightArithmetic 32 30 + Store 57(byteAddrTemp) 58 + 63: 22(int) Load 57(byteAddrTemp) + 64: 12(fvec3) Load 52(position_ms) + 65: 46(ivec3) Bitcast 64 + 67: 6(int) CompositeExtract 65 0 + 68: 34(ptr) AccessChain 62(r) 32 63 + Store 68 67 + 69: 22(int) Load 57(byteAddrTemp) + 70: 22(int) IAdd 69 38 + 71: 12(fvec3) Load 52(position_ms) + 72: 46(ivec3) Bitcast 71 + 74: 6(int) CompositeExtract 72 1 + 75: 34(ptr) AccessChain 62(r) 32 70 + Store 75 74 + 76: 22(int) Load 57(byteAddrTemp) + 77: 22(int) IAdd 76 30 + 78: 12(fvec3) Load 52(position_ms) + 79: 46(ivec3) Bitcast 78 + 81: 6(int) CompositeExtract 79 2 + 82: 34(ptr) AccessChain 62(r) 32 77 + Store 82 81 + Return + FunctionEnd diff --git a/Test/hlsl.buffer_ref_parameter.comp b/Test/hlsl.buffer_ref_parameter.comp new file mode 100644 index 0000000000..acd08b3781 --- /dev/null +++ b/Test/hlsl.buffer_ref_parameter.comp @@ -0,0 +1,13 @@ +[[vk::binding(0, 0)]] ByteAddressBuffer buffer_position_ms; +[[vk::binding(1, 0)]] RWByteAddressBuffer r; + +float3 pull_position(ByteAddressBuffer buffer_position, uint vertex_id) { + return asfloat(buffer_position.Load3(vertex_id * 3 * 4)); +} + +[numthreads(64, 1, 1)] +void main(uint gi : SV_GroupIndex) { + float3 position_ms = pull_position(buffer_position_ms, gi); + + r.Store3(0, asuint(position_ms)); +} \ No newline at end of file diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index db882feb83..9f32495580 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -59,6 +59,7 @@ std::string FileNameAsCustomTestSuffix( using HlslCompileTest = GlslangTest<::testing::TestWithParam>; using HlslVulkan1_1CompileTest = GlslangTest<::testing::TestWithParam>; +using HlslVulkan1_2CompileTest = GlslangTest<::testing::TestWithParam>; using HlslSpv1_6CompileTest = GlslangTest<::testing::TestWithParam>; using HlslCompileAndFlattenTest = GlslangTest<::testing::TestWithParam>; using HlslLegalizeTest = GlslangTest<::testing::TestWithParam>; @@ -83,6 +84,13 @@ TEST_P(HlslVulkan1_1CompileTest, FromFile) Target::BothASTAndSpv, true, GetParam().entryPoint); } +TEST_P(HlslVulkan1_2CompileTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, Source::HLSL, Semantics::Vulkan, + glslang::EShTargetVulkan_1_2, glslang::EShTargetSpv_1_4, Target::BothASTAndSpv, true, + GetParam().entryPoint); +} + TEST_P(HlslSpv1_6CompileTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam().fileName, @@ -469,6 +477,14 @@ INSTANTIATE_TEST_SUITE_P( }), FileNameAsCustomTestSuffix ); + +INSTANTIATE_TEST_SUITE_P( + ToSpirv, HlslVulkan1_2CompileTest, + ::testing::ValuesIn(std::vector{ + {"hlsl.buffer_ref_parameter.comp", "main"}, + }), + FileNameAsCustomTestSuffix +); // clang-format on // clang-format off From e3a711b6fc942307be7cb634698015dfd13c37fe Mon Sep 17 00:00:00 2001 From: Joyce Brum Date: Tue, 29 Aug 2023 17:19:43 -0300 Subject: [PATCH 272/594] Squashed changes about hash pin and dependabot Signed-off-by: Joyce Brum --- .github/dependabot.yml | 8 ++++ .github/workflows/continuous_deployment.yml | 24 +++++----- .github/workflows/continuous_integration.yml | 46 ++++++++++---------- .github/workflows/scorecard.yml | 8 ++-- 4 files changed, 47 insertions(+), 39 deletions(-) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..1717aebc5b --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" # Necessary to update action hashes + directory: "/" + schedule: + interval: "weekly" + # Allow up to 3 opened pull requests for github-actions versions + open-pull-requests-limit: 3 diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index aa546669aa..237c3959b4 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -47,9 +47,9 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v3 - - uses: lukka/get-cmake@latest - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies @@ -110,7 +110,7 @@ jobs: if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@v6 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: script: | const script = require('.github/workflows/deploy.js') @@ -127,9 +127,9 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v3 - - uses: lukka/get-cmake@latest - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - name: Install GoogleTest @@ -184,7 +184,7 @@ jobs: - name: Deploy env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@v6 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: script: | const script = require('.github/workflows/deploy.js') @@ -200,9 +200,9 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v3 - - uses: lukka/get-cmake@latest - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - name: Install GoogleTest @@ -276,7 +276,7 @@ jobs: - name: Deploy env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@v6 + uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 with: script: | const script = require('.github/workflows/deploy.js') diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index fb39a71c7c..063cc8c655 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,13 +23,13 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v3 - - uses: lukka/get-cmake@latest - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - name: Install GoogleTest @@ -69,15 +69,15 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@latest + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 with: cmakeVersion: 3.17.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: linux_backcompat - name: Install GoogleTest @@ -118,11 +118,11 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v3 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@latest + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - name: Install GoogleTest run: | # check out pre-breakage version of googletest; can be deleted when @@ -162,9 +162,9 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@v3 - - uses: lukka/get-cmake@latest - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - name: Install GoogleTest @@ -203,13 +203,13 @@ jobs: # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android NDK: [23.2.8568313, 25.2.9519653] steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@latest + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: android-${{ matrix.LEGACY }}-${{ matrix.NDK }} - name: Update Glslang Sources @@ -232,16 +232,16 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 + - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@latest + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - name: Setup ccache - uses: hendrikmuhs/ccache-action@v1.2 + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: ubuntu-emscripten - - uses: mymindstorm/setup-emsdk@v11 + - uses: mymindstorm/setup-emsdk@ab889da2abbcbb280f91ec4c215d3bb4f3a8f775 # v12 - name: Update Glslang Sources run: ./update_glslang_sources.py - name: Configure diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index b45d0915f2..6bd40ef085 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,12 +23,12 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8 # v3.1.0 + uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 with: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@e38b1902ae4f44df626f11ba0734b14fb91f8f86 # v2.1.2 + uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0 with: results_file: results.sarif results_format: sarif @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@3cea5372237819ed00197afe530f5a7ea3e805c8 # v3.1.0 + uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 with: name: SARIF file path: results.sarif @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@17573ee1cc1b9d061760f3a006fc4aac4f944fd5 # v2.2.4 + uses: github/codeql-action/upload-sarif@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8 # v2.21.5 with: sarif_file: results.sarif From 3787b6947f9a9eccc1b2d8976087dded3aa08092 Mon Sep 17 00:00:00 2001 From: Ralf Habacker Date: Wed, 23 Aug 2023 10:08:05 +0200 Subject: [PATCH 273/594] Revert "CMake: Make glslang-default-resource-limits STATIC" Fixes #3316 This reverts commit 6f22e41e0de13aff75807cca9662730d8b3e54b6. --- glslang/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index d4df9396ea..57fb1b9ea5 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -195,7 +195,7 @@ set(RESOURCELIMITS_HEADERS Public/resource_limits_c.h ) -add_library(glslang-default-resource-limits STATIC ${RESOURCELIMITS_SOURCES} ${RESOURCELIMITS_HEADERS}) +add_library(glslang-default-resource-limits ${RESOURCELIMITS_SOURCES} ${RESOURCELIMITS_HEADERS}) set_target_properties(glslang-default-resource-limits PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}" From ffefbcd9f36efcec0a940aa96eb99f0c6055cd2a Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 11 Aug 2023 15:19:35 -0600 Subject: [PATCH 274/594] Add GL_EXT_texture_shadow_lod support Closes #3302. --- .../spv.ext.texture_shadow_lod.error.frag.out | 6 ++ .../spv.ext.texture_shadow_lod.frag.out | 94 +++++++++++++++++++ Test/spv.ext.texture_shadow_lod.error.frag | 13 +++ Test/spv.ext.texture_shadow_lod.frag | 21 +++++ glslang/MachineIndependent/Initialize.cpp | 57 +++++++++++ glslang/MachineIndependent/SymbolTable.cpp | 10 ++ glslang/MachineIndependent/SymbolTable.h | 7 ++ glslang/MachineIndependent/Versions.cpp | 1 + glslang/MachineIndependent/Versions.h | 2 + gtests/Spv.FromFile.cpp | 2 + 10 files changed, 213 insertions(+) create mode 100644 Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out create mode 100644 Test/baseResults/spv.ext.texture_shadow_lod.frag.out create mode 100644 Test/spv.ext.texture_shadow_lod.error.frag create mode 100644 Test/spv.ext.texture_shadow_lod.frag diff --git a/Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out b/Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out new file mode 100644 index 0000000000..b6aa88e3da --- /dev/null +++ b/Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out @@ -0,0 +1,6 @@ +spv.ext.texture_shadow_lod.error.frag +ERROR: 0:11: 'textureLod' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ext.texture_shadow_lod.frag.out b/Test/baseResults/spv.ext.texture_shadow_lod.frag.out new file mode 100644 index 0000000000..0428f18256 --- /dev/null +++ b/Test/baseResults/spv.ext.texture_shadow_lod.frag.out @@ -0,0 +1,94 @@ +spv.ext.texture_shadow_lod.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 59 + + Capability Shader + Capability SampledCubeArray + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 8 16 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_EXT_texture_shadow_lod" + Name 4 "main" + Name 8 "c" + Name 12 "s2da" + Name 16 "tc" + Name 24 "sca" + Name 47 "sc" + Decorate 8(c) Location 0 + Decorate 12(s2da) DescriptorSet 0 + Decorate 12(s2da) Binding 0 + Decorate 16(tc) Location 0 + Decorate 24(sca) DescriptorSet 0 + Decorate 24(sca) Binding 1 + Decorate 47(sc) DescriptorSet 0 + Decorate 47(sc) Binding 2 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypePointer Output 6(float) + 8(c): 7(ptr) Variable Output + 9: TypeImage 6(float) 2D depth array sampled format:Unknown + 10: TypeSampledImage 9 + 11: TypePointer UniformConstant 10 + 12(s2da): 11(ptr) Variable UniformConstant + 14: TypeVector 6(float) 4 + 15: TypePointer Input 14(fvec4) + 16(tc): 15(ptr) Variable Input + 18: 6(float) Constant 0 + 21: TypeImage 6(float) Cube depth array sampled format:Unknown + 22: TypeSampledImage 21 + 23: TypePointer UniformConstant 22 + 24(sca): 23(ptr) Variable UniformConstant + 30: TypeInt 32 1 + 31: TypeVector 30(int) 2 + 32: 30(int) Constant 0 + 33: 31(ivec2) ConstantComposite 32 32 + 44: TypeImage 6(float) Cube depth sampled format:Unknown + 45: TypeSampledImage 44 + 46: TypePointer UniformConstant 45 + 47(sc): 46(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 13: 10 Load 12(s2da) + 17: 14(fvec4) Load 16(tc) + 19: 6(float) CompositeExtract 17 3 + 20: 6(float) ImageSampleDrefImplicitLod 13 17 19 Bias 18 + Store 8(c) 20 + 25: 22 Load 24(sca) + 26: 14(fvec4) Load 16(tc) + 27: 6(float) ImageSampleDrefImplicitLod 25 26 18 + Store 8(c) 27 + 28: 10 Load 12(s2da) + 29: 14(fvec4) Load 16(tc) + 34: 6(float) CompositeExtract 29 3 + 35: 6(float) ImageSampleDrefImplicitLod 28 29 34 ConstOffset 33 + Store 8(c) 35 + 36: 10 Load 12(s2da) + 37: 14(fvec4) Load 16(tc) + 38: 6(float) CompositeExtract 37 3 + 39: 6(float) ImageSampleDrefImplicitLod 36 37 38 Bias ConstOffset 18 33 + Store 8(c) 39 + 40: 10 Load 12(s2da) + 41: 14(fvec4) Load 16(tc) + 42: 6(float) CompositeExtract 41 3 + 43: 6(float) ImageSampleDrefExplicitLod 40 41 42 Lod 18 + Store 8(c) 43 + 48: 45 Load 47(sc) + 49: 14(fvec4) Load 16(tc) + 50: 6(float) CompositeExtract 49 3 + 51: 6(float) ImageSampleDrefExplicitLod 48 49 50 Lod 18 + Store 8(c) 51 + 52: 22 Load 24(sca) + 53: 14(fvec4) Load 16(tc) + 54: 6(float) ImageSampleDrefExplicitLod 52 53 18 Lod 18 + Store 8(c) 54 + 55: 10 Load 12(s2da) + 56: 14(fvec4) Load 16(tc) + 57: 6(float) CompositeExtract 56 3 + 58: 6(float) ImageSampleDrefExplicitLod 55 56 57 Lod ConstOffset 18 33 + Store 8(c) 58 + Return + FunctionEnd diff --git a/Test/spv.ext.texture_shadow_lod.error.frag b/Test/spv.ext.texture_shadow_lod.error.frag new file mode 100644 index 0000000000..ef6ec21d44 --- /dev/null +++ b/Test/spv.ext.texture_shadow_lod.error.frag @@ -0,0 +1,13 @@ +#version 450 + +layout(binding = 0) uniform sampler2DArrayShadow s2da; + +layout(location = 0) out vec4 c_out; + +layout(location = 0) in vec4 tc; + +void main() +{ + float c = textureLod(s2da, tc, 0); + c_out = vec4(c); +} diff --git a/Test/spv.ext.texture_shadow_lod.frag b/Test/spv.ext.texture_shadow_lod.frag new file mode 100644 index 0000000000..2d9db7bbee --- /dev/null +++ b/Test/spv.ext.texture_shadow_lod.frag @@ -0,0 +1,21 @@ +#version 450 +#extension GL_EXT_texture_shadow_lod : enable + +layout(binding = 0) uniform sampler2DArrayShadow s2da; +layout(binding = 1) uniform samplerCubeArrayShadow sca; +layout(binding = 2) uniform samplerCubeShadow sc; + +layout(location = 0) out float c; + +layout(location = 0) in vec4 tc; + +void main() { + c = texture(s2da, tc, 0.0); + c = texture(sca, tc, 0.0, 0.0); + c = textureOffset(s2da, tc, ivec2(0.0)); + c = textureOffset(s2da, tc, ivec2(0.0), 0.0); + c = textureLod(s2da, tc, 0.0); + c = textureLod(sc, tc, 0.0); + c = textureLod(sca, tc, 0.0, 0.0); + c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); +} diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 2f8ce29525..e3c54d0f4f 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4820,6 +4820,33 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + // GL_EXT_texture_shadow_lod overloads + if (profile == EEsProfile) { // ES + if (version >= 300) { + commonBuiltins.append("float texture(sampler2DArrayShadow, vec4, float);" + "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" + "float textureLod(sampler2DArrayShadow, vec4, float);" + "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" + "\n"); + } + if (version >= 320) { + commonBuiltins.append("float texture(samplerCubeArrayShadow, vec4, float, float);" + "float textureLod(samplerCubeShadow, vec4, float);" + "float textureLod(samplerCubeArrayShadow, vec4, float, float);" + "\n"); + } + } else if (version >= 130) { // Desktop + commonBuiltins.append("float texture(sampler2DArrayShadow, vec4, float);" + "float texture(samplerCubeArrayShadow, vec4, float, float);" + "float textureOffset(sampler2DArrayShadow, vec4, ivec2);" + "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" + "float textureLod(sampler2DArrayShadow, vec4, float);" + "float textureLod(samplerCubeShadow, vec4, float);" + "float textureLod(samplerCubeArrayShadow, vec4, float, float);" + "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" + "\n"); + } + //============================================================================ // // Standard Uniforms @@ -8741,6 +8768,36 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("textureBlockMatchSADQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBlockMatchSSDQCOM", 1, &E_GL_QCOM_image_processing); } + + // GL_EXT_texture_shadow_lod + // NOTE: These are the mangled names of individual overloads, since this extension adds overloads for + // existing built-in functions. + if (profile == EEsProfile) { + if (version >= 300) { + symbolTable.setSingleFunctionExtensions("texture(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureOffset(sAS21;vf4;vi2;f1;", 1, + &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLod(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLodOffset(sAS21;vf4;f1;vi2;", 1, + &E_GL_EXT_texture_shadow_lod); + } + if (version >= 320) { + symbolTable.setSingleFunctionExtensions("texture(sASC1;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("texture(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLod(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLod(sSC1;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); + } + } else if (version >= 130) { + symbolTable.setSingleFunctionExtensions("texture(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("texture(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureOffset(sAS21;vf4;vi2;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureOffset(sAS21;vf4;vi2;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLod(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLod(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLod(sSC1;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); + symbolTable.setSingleFunctionExtensions("textureLodOffset(sAS21;vf4;f1;vi2;", 1, + &E_GL_EXT_texture_shadow_lod); + } break; case EShLangCompute: diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index 1e007a7120..dae5a8b918 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -318,6 +318,16 @@ void TSymbolTableLevel::setFunctionExtensions(const char* name, int num, const c } } +// Make a single function require an extension(s). i.e., this will only set the extensions for the symbol that matches 'name' exactly. +// This is different from setFunctionExtensions, which uses std::map::lower_bound to effectively set all symbols that start with 'name'. +// Should only be used for a version/profile that actually needs the extension(s). +void TSymbolTableLevel::setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]) +{ + if (auto candidate = level.find(name); candidate != level.end()) { + candidate->second->setExtensions(num, extensions); + } +} + // // Make all symbols in this table level read only. // diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index fc86ad6229..edc79cb546 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -571,6 +571,7 @@ class TSymbolTableLevel { void relateToOperator(const char* name, TOperator op); void setFunctionExtensions(const char* name, int num, const char* const extensions[]); + void setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]); void dump(TInfoSink& infoSink, bool complete = false) const; TSymbolTableLevel* clone() const; void readOnly(); @@ -872,6 +873,12 @@ class TSymbolTable { table[level]->setFunctionExtensions(name, num, extensions); } + void setSingleFunctionExtensions(const char* name, int num, const char* const extensions[]) + { + for (unsigned int level = 0; level < table.size(); ++level) + table[level]->setSingleFunctionExtensions(name, num, extensions); + } + void setVariableExtensions(const char* name, int numExts, const char* const extensions[]) { TSymbol* symbol = find(TString(name)); diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 38cbf3e1ff..1bcd3884aa 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -359,6 +359,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_opacity_micromap] = EBhDisable; extensionBehavior[E_GL_EXT_ray_tracing_position_fetch] = EBhDisable; extensionBehavior[E_GL_EXT_shader_tile_image] = EBhDisable; + extensionBehavior[E_GL_EXT_texture_shadow_lod] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 564995b275..aee53296ca 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -333,6 +333,8 @@ const char* const E_GL_EXT_shader_atomic_float2 = "GL_EXT_shader_atomic_float2"; const char* const E_GL_EXT_shader_tile_image = "GL_EXT_shader_tile_image"; +const char* const E_GL_EXT_texture_shadow_lod = "GL_EXT_texture_shadow_lod"; + // Arrays of extensions for the above AEP duplications const char* const AEP_geometry_shader[] = { E_GL_EXT_geometry_shader, E_GL_OES_geometry_shader }; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4482161cd1..4dea5dd07e 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -526,6 +526,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.atomicAdd.bufferReference.comp", "spv.fragmentShaderBarycentric3.frag", "spv.fragmentShaderBarycentric4.frag", + "spv.ext.texture_shadow_lod.frag", + "spv.ext.texture_shadow_lod.error.frag", })), FileNameAsCustomTestSuffix ); From 0bbe74c7094138f08ee5493ac288ed9e70d4f3ea Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Wed, 23 Aug 2023 22:44:33 -0600 Subject: [PATCH 275/594] Use temporary parser for mangled names Use a temporary parser to retrieve the mangled names of specific function overloads. This is necessary for GL_EXT_texture_shadow_lod. --- glslang/MachineIndependent/Initialize.cpp | 102 ++++++++++++---------- glslang/MachineIndependent/Initialize.h | 5 ++ glslang/MachineIndependent/SymbolTable.h | 15 ++++ 3 files changed, 74 insertions(+), 48 deletions(-) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index e3c54d0f4f..fc0a36fac6 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -51,8 +51,10 @@ // including identifying what extensions are needed if a version does not allow a symbol // -#include "../Include/intermediate.h" #include "Initialize.h" +#include "../Include/intermediate.h" +#include "ScanContext.h" +#include "preprocessor/PpContext.h" namespace glslang { @@ -322,6 +324,32 @@ const CustomFunction CustomFunctions[] = { { EOpNull } }; +// Creates a parser that is separate from the main parsing context and meant for temporary use +struct TempParser { + TempParser(const TString& str, EShLanguage language, int version, EProfile profile, SpvVersion spvVersion) + : interm(language), parseContext(table, interm, false, version, profile, spvVersion, language, sink, true, + EShMsgDefault, &dummyEntryPoint), + inputStr(str.data()), stringSize(str.size()) + { + table.push(); + parseContext.setScanContext(&scanContext); + parseContext.setPpContext(&context); + parseContext.parseShaderStrings(context, input, false); + } + + TSymbolTable table; + TIntermediate interm; + TInfoSink sink; + TString dummyEntryPoint; + TParseContext parseContext; + TShader::ForbidIncluder includer; + TPpContext context{parseContext, "", includer}; + TScanContext scanContext{parseContext}; + const char* inputStr; + size_t stringSize; + TInputScanner input{1, &inputStr, &stringSize}; +}; + // For the given table of functions, add all the indicated prototypes for each // one, to be returned in the passed in decls. void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) @@ -4823,29 +4851,30 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV // GL_EXT_texture_shadow_lod overloads if (profile == EEsProfile) { // ES if (version >= 300) { - commonBuiltins.append("float texture(sampler2DArrayShadow, vec4, float);" - "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" - "float textureLod(sampler2DArrayShadow, vec4, float);" - "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" - "\n"); + textureShadowLodFunctions += "float texture(sampler2DArrayShadow, vec4, float);" + "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" + "float textureLod(sampler2DArrayShadow, vec4, float);" + "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" + "\n"; } if (version >= 320) { - commonBuiltins.append("float texture(samplerCubeArrayShadow, vec4, float, float);" - "float textureLod(samplerCubeShadow, vec4, float);" - "float textureLod(samplerCubeArrayShadow, vec4, float, float);" - "\n"); + textureShadowLodFunctions += "float texture(samplerCubeArrayShadow, vec4, float, float);" + "float textureLod(samplerCubeShadow, vec4, float);" + "float textureLod(samplerCubeArrayShadow, vec4, float, float);" + "\n"; } } else if (version >= 130) { // Desktop - commonBuiltins.append("float texture(sampler2DArrayShadow, vec4, float);" - "float texture(samplerCubeArrayShadow, vec4, float, float);" - "float textureOffset(sampler2DArrayShadow, vec4, ivec2);" - "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" - "float textureLod(sampler2DArrayShadow, vec4, float);" - "float textureLod(samplerCubeShadow, vec4, float);" - "float textureLod(samplerCubeArrayShadow, vec4, float, float);" - "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" - "\n"); - } + textureShadowLodFunctions += "float texture(sampler2DArrayShadow, vec4, float);" + "float texture(samplerCubeArrayShadow, vec4, float, float);" + "float textureOffset(sampler2DArrayShadow, vec4, ivec2);" + "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" + "float textureLod(sampler2DArrayShadow, vec4, float);" + "float textureLod(samplerCubeShadow, vec4, float);" + "float textureLod(samplerCubeArrayShadow, vec4, float, float);" + "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" + "\n"; + } + commonBuiltins.append(textureShadowLodFunctions); //============================================================================ // @@ -8769,34 +8798,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("textureBlockMatchSSDQCOM", 1, &E_GL_QCOM_image_processing); } - // GL_EXT_texture_shadow_lod - // NOTE: These are the mangled names of individual overloads, since this extension adds overloads for - // existing built-in functions. - if (profile == EEsProfile) { - if (version >= 300) { - symbolTable.setSingleFunctionExtensions("texture(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureOffset(sAS21;vf4;vi2;f1;", 1, - &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLod(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLodOffset(sAS21;vf4;f1;vi2;", 1, - &E_GL_EXT_texture_shadow_lod); - } - if (version >= 320) { - symbolTable.setSingleFunctionExtensions("texture(sASC1;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("texture(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLod(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLod(sSC1;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); - } - } else if (version >= 130) { - symbolTable.setSingleFunctionExtensions("texture(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("texture(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureOffset(sAS21;vf4;vi2;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureOffset(sAS21;vf4;vi2;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLod(sAS21;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLod(sASC1;vf4;f1;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLod(sSC1;vf4;f1;", 1, &E_GL_EXT_texture_shadow_lod); - symbolTable.setSingleFunctionExtensions("textureLodOffset(sAS21;vf4;f1;vi2;", 1, - &E_GL_EXT_texture_shadow_lod); + { + TempParser parser(textureShadowLodFunctions, language, version, profile, spvVersion); + parser.table.processAllSymbols([&symbolTable](TSymbol* sym) { + symbolTable.setSingleFunctionExtensions(sym->getMangledName().data(), 1, &E_GL_EXT_texture_shadow_lod); + }); } break; diff --git a/glslang/MachineIndependent/Initialize.h b/glslang/MachineIndependent/Initialize.h index 42c32ddbb7..b5652d37b3 100644 --- a/glslang/MachineIndependent/Initialize.h +++ b/glslang/MachineIndependent/Initialize.h @@ -105,6 +105,11 @@ class TBuiltIns : public TBuiltInParseables { const char* postfixes[5]; const char* prefixes[EbtNumTypes]; int dimMap[EsdNumDims]; + +private: + // Holds the function declarations for GL_EXT_texture_shadow_lod + // This extension is somewhat unique in the sense it defines overloads for built-in functions, rather than new functions. + TString textureShadowLodFunctions; }; // change this back to false if depending on textual spellings of texturing calls when consuming the AST diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index edc79cb546..da23bbb89d 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -487,6 +487,12 @@ class TSymbolTableLevel { return (*it).second; } + template void processAllSymbols(ProcSymFn procSym) const + { + for (auto itr : level) + procSym(itr.second); + } + void findFunctionNameList(const TString& name, TVector& list) { size_t parenAt = name.find_first_of('('); @@ -796,6 +802,15 @@ class TSymbolTable { return symbol; } + template void processAllSymbols(ProcSymFn procSym) + { + int level = currentLevel(); + do { + table[level]->processAllSymbols(procSym); + --level; + } while (level >= 0); + } + void retargetSymbol(const TString& from, const TString& to) { int level = currentLevel(); table[level]->retargetSymbol(from, to); From 589431af5c86b0be3cc23175258451be1f5d25b3 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 9 Aug 2023 17:00:04 -0600 Subject: [PATCH 276/594] cmake: add more verbose messages if SPIRV-Tools is not found This makes it more clear to users when SPIR-V optimization is disabled because SPIRV-Tools could not be found, and suggests alternatives for finding it. --- CMakeLists.txt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c1e0b05e05..a734ad1f87 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,10 +267,19 @@ option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools if(NOT TARGET SPIRV-Tools-opt) if(ALLOW_EXTERNAL_SPIRV_TOOLS) # Look for external SPIR-V Tools build, if not building in-tree + message(STATUS "Trying to find local SPIR-V tools") find_package(SPIRV-Tools-opt) - endif() - if(NOT TARGET SPIRV-Tools-opt) - set(ENABLE_OPT OFF) + if(NOT TARGET SPIRV-Tools-opt) + if(ENABLE_OPT) + message(WARNING "ENABLE_OPT set but SPIR-V tools not found! Disabling SPIR-V optimization.") + endif() + set(ENABLE_OPT OFF) + endif() + else() + if(ENABLE_OPT) + message(SEND_ERROR "ENABLE_OPT set but SPIR-V tools not found. Please run update_glslang_sources.py, " + "set the ALLOW_EXTERNAL_SPIRV_TOOLS option to use a local install of SPIRV-Tools, or set ENABLE_OPT=0.") + endif() endif() endif() From fb2882a3c34fe451d0d22fbaabef025a8c6f77b9 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 21 Aug 2023 11:17:02 -0600 Subject: [PATCH 277/594] kokoro: explicitly set ENABLE_OPT=0 in cmake builds This is needed now that we force the user to explicitly choose between disabling use of SPIRV-Tools, using a version installed on the system, or using the version obtained by update_glslang_source.py --- kokoro/linux-clang-cmake/build-docker.sh | 2 +- kokoro/linux-gcc-cmake/build-docker.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kokoro/linux-clang-cmake/build-docker.sh b/kokoro/linux-clang-cmake/build-docker.sh index c5fdcd2356..6b1d3e1ae1 100755 --- a/kokoro/linux-clang-cmake/build-docker.sh +++ b/kokoro/linux-clang-cmake/build-docker.sh @@ -46,5 +46,5 @@ using ninja-1.10.0 echo "Building..." mkdir /build && cd /build -cmake "$ROOT_DIR" -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS +cmake "$ROOT_DIR" -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DENABLE_OPT=0 ninja install diff --git a/kokoro/linux-gcc-cmake/build-docker.sh b/kokoro/linux-gcc-cmake/build-docker.sh index 0edc05e24b..558695c8a7 100755 --- a/kokoro/linux-gcc-cmake/build-docker.sh +++ b/kokoro/linux-gcc-cmake/build-docker.sh @@ -46,5 +46,5 @@ using ninja-1.10.0 echo "Building..." mkdir /build && cd /build -cmake "$ROOT_DIR" -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS +cmake "$ROOT_DIR" -GNinja -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX="$(pwd)/install" -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DENABLE_OPT=0 ninja install From e8d657bdbe228ae045e9902e14b6dd8119402b8a Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 8 Sep 2023 13:44:08 -0600 Subject: [PATCH 278/594] Fix textureOffset overload float textureOffset(sampler2DArrayShadow sampler, vec4 P, ivec2 offset) was incorrectly requiring the GL_EXT_texture_shadow_lod extension. NOTE: Prior to GLSL 440, this prototype was defined as float textureOffset(sampler2DArrayShadow sampler, vec4 P, vec2 offset) i.e., the type of 'offset' was specified as 'vec2' rather than 'ivec2'. This is believed to be a typo. Fixes #3325. --- .../spv.ext.texture_shadow_lod.frag.out | 49 +++++++++---------- Test/spv.ext.texture_shadow_lod.frag | 1 - glslang/MachineIndependent/Initialize.cpp | 1 - 3 files changed, 22 insertions(+), 29 deletions(-) diff --git a/Test/baseResults/spv.ext.texture_shadow_lod.frag.out b/Test/baseResults/spv.ext.texture_shadow_lod.frag.out index 0428f18256..0cc54a9b5e 100644 --- a/Test/baseResults/spv.ext.texture_shadow_lod.frag.out +++ b/Test/baseResults/spv.ext.texture_shadow_lod.frag.out @@ -1,7 +1,7 @@ spv.ext.texture_shadow_lod.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 59 +// Id's are bound by 55 Capability Shader Capability SampledCubeArray @@ -16,15 +16,15 @@ spv.ext.texture_shadow_lod.frag Name 12 "s2da" Name 16 "tc" Name 24 "sca" - Name 47 "sc" + Name 43 "sc" Decorate 8(c) Location 0 Decorate 12(s2da) DescriptorSet 0 Decorate 12(s2da) Binding 0 Decorate 16(tc) Location 0 Decorate 24(sca) DescriptorSet 0 Decorate 24(sca) Binding 1 - Decorate 47(sc) DescriptorSet 0 - Decorate 47(sc) Binding 2 + Decorate 43(sc) DescriptorSet 0 + Decorate 43(sc) Binding 2 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -46,10 +46,10 @@ spv.ext.texture_shadow_lod.frag 31: TypeVector 30(int) 2 32: 30(int) Constant 0 33: 31(ivec2) ConstantComposite 32 32 - 44: TypeImage 6(float) Cube depth sampled format:Unknown - 45: TypeSampledImage 44 - 46: TypePointer UniformConstant 45 - 47(sc): 46(ptr) Variable UniformConstant + 40: TypeImage 6(float) Cube depth sampled format:Unknown + 41: TypeSampledImage 40 + 42: TypePointer UniformConstant 41 + 43(sc): 42(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label 13: 10 Load 12(s2da) @@ -64,31 +64,26 @@ spv.ext.texture_shadow_lod.frag 28: 10 Load 12(s2da) 29: 14(fvec4) Load 16(tc) 34: 6(float) CompositeExtract 29 3 - 35: 6(float) ImageSampleDrefImplicitLod 28 29 34 ConstOffset 33 + 35: 6(float) ImageSampleDrefImplicitLod 28 29 34 Bias ConstOffset 18 33 Store 8(c) 35 36: 10 Load 12(s2da) 37: 14(fvec4) Load 16(tc) 38: 6(float) CompositeExtract 37 3 - 39: 6(float) ImageSampleDrefImplicitLod 36 37 38 Bias ConstOffset 18 33 + 39: 6(float) ImageSampleDrefExplicitLod 36 37 38 Lod 18 Store 8(c) 39 - 40: 10 Load 12(s2da) - 41: 14(fvec4) Load 16(tc) - 42: 6(float) CompositeExtract 41 3 - 43: 6(float) ImageSampleDrefExplicitLod 40 41 42 Lod 18 - Store 8(c) 43 - 48: 45 Load 47(sc) + 44: 41 Load 43(sc) + 45: 14(fvec4) Load 16(tc) + 46: 6(float) CompositeExtract 45 3 + 47: 6(float) ImageSampleDrefExplicitLod 44 45 46 Lod 18 + Store 8(c) 47 + 48: 22 Load 24(sca) 49: 14(fvec4) Load 16(tc) - 50: 6(float) CompositeExtract 49 3 - 51: 6(float) ImageSampleDrefExplicitLod 48 49 50 Lod 18 - Store 8(c) 51 - 52: 22 Load 24(sca) - 53: 14(fvec4) Load 16(tc) - 54: 6(float) ImageSampleDrefExplicitLod 52 53 18 Lod 18 + 50: 6(float) ImageSampleDrefExplicitLod 48 49 18 Lod 18 + Store 8(c) 50 + 51: 10 Load 12(s2da) + 52: 14(fvec4) Load 16(tc) + 53: 6(float) CompositeExtract 52 3 + 54: 6(float) ImageSampleDrefExplicitLod 51 52 53 Lod ConstOffset 18 33 Store 8(c) 54 - 55: 10 Load 12(s2da) - 56: 14(fvec4) Load 16(tc) - 57: 6(float) CompositeExtract 56 3 - 58: 6(float) ImageSampleDrefExplicitLod 55 56 57 Lod ConstOffset 18 33 - Store 8(c) 58 Return FunctionEnd diff --git a/Test/spv.ext.texture_shadow_lod.frag b/Test/spv.ext.texture_shadow_lod.frag index 2d9db7bbee..8c879d9b12 100644 --- a/Test/spv.ext.texture_shadow_lod.frag +++ b/Test/spv.ext.texture_shadow_lod.frag @@ -12,7 +12,6 @@ layout(location = 0) in vec4 tc; void main() { c = texture(s2da, tc, 0.0); c = texture(sca, tc, 0.0, 0.0); - c = textureOffset(s2da, tc, ivec2(0.0)); c = textureOffset(s2da, tc, ivec2(0.0), 0.0); c = textureLod(s2da, tc, 0.0); c = textureLod(sc, tc, 0.0); diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index fc0a36fac6..25d87370bc 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4866,7 +4866,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } else if (version >= 130) { // Desktop textureShadowLodFunctions += "float texture(sampler2DArrayShadow, vec4, float);" "float texture(samplerCubeArrayShadow, vec4, float, float);" - "float textureOffset(sampler2DArrayShadow, vec4, ivec2);" "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" "float textureLod(sampler2DArrayShadow, vec4, float);" "float textureLod(samplerCubeShadow, vec4, float);" From f3f23fece3b82d2687d0b2ea3471891e116cfc9b Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Mon, 11 Sep 2023 09:52:22 -0600 Subject: [PATCH 279/594] Add a generic texel fetch test Test all core sampler functions. --- Test/baseResults/spv.floatFetch.frag.out | 4423 ++++++++++++++++++++++ Test/spv.floatFetch.frag | 941 +++++ gtests/Spv.FromFile.cpp | 1 + 3 files changed, 5365 insertions(+) create mode 100644 Test/baseResults/spv.floatFetch.frag.out create mode 100644 Test/spv.floatFetch.frag diff --git a/Test/baseResults/spv.floatFetch.frag.out b/Test/baseResults/spv.floatFetch.frag.out new file mode 100644 index 0000000000..8b9fc7290a --- /dev/null +++ b/Test/baseResults/spv.floatFetch.frag.out @@ -0,0 +1,4423 @@ +spv.floatFetch.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 3599 + + Capability Shader + Capability ImageGatherExtended + Capability StorageImageMultisample + Capability ImageCubeArray + Capability ImageRect + Capability SampledRect + Capability InputAttachment + Capability SparseResidency + Capability MinLod + Capability Sampled1D + Capability Image1D + Capability SampledCubeArray + Capability SampledBuffer + Capability ImageBuffer + Capability ImageMSArray + Capability ImageQuery + Capability ImageGatherBiasLodAMD + Extension "SPV_AMD_texture_gather_bias_lod" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 127 138 150 197 283 371 866 874 882 2665 3590 3598 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_AMD_texture_gather_bias_lod" + SourceExtension "GL_ARB_sparse_texture2" + SourceExtension "GL_ARB_sparse_texture_clamp" + Name 4 "main" + Name 9 "testTexture(" + Name 11 "testTextureProj(" + Name 13 "testTextureLod(" + Name 15 "testTextureOffset(" + Name 17 "testTextureProjOffset(" + Name 19 "testTextureLodOffset(" + Name 21 "testTextureProjLodOffset(" + Name 23 "testTexelFetch(" + Name 25 "testTexelFetchOffset(" + Name 27 "testTextureGrad(" + Name 29 "testTextureGradOffset(" + Name 31 "testTextureProjGrad(" + Name 33 "testTextureProjGradoffset(" + Name 35 "testTextureGather(" + Name 37 "testTextureGatherOffset(" + Name 39 "testTextureGatherOffsets(" + Name 41 "testTextureGatherLod(" + Name 43 "testTextureGatherLodOffset(" + Name 45 "testTextureGatherLodOffsets(" + Name 50 "testTextureSize(" + Name 54 "testTextureQueryLod(" + Name 57 "testTextureQueryLevels(" + Name 59 "testTextureSamples(" + Name 61 "testImageLoad(" + Name 66 "testImageStore(vf4;" + Name 65 "data" + Name 68 "testSparseTexture(" + Name 70 "testSparseTextureLod(" + Name 72 "testSparseTextureOffset(" + Name 74 "testSparseTextureLodOffset(" + Name 76 "testSparseTextureGrad(" + Name 78 "testSparseTextureGradOffset(" + Name 80 "testSparseTexelFetch(" + Name 82 "testSparseTexelFetchOffset(" + Name 84 "testSparseTextureGather(" + Name 86 "testSparseTextureGatherOffset(" + Name 88 "testSparseTextureGatherOffsets(" + Name 90 "testSparseTextureGatherLod(" + Name 92 "testSparseTextureGatherLodOffset(" + Name 94 "testSparseTextureGatherLodOffsets(" + Name 96 "testSparseImageLoad(" + Name 98 "testSparseTextureClamp(" + Name 100 "testTextureClamp(" + Name 102 "testSparseTextureOffsetClamp(" + Name 104 "testTextureOffsetClamp(" + Name 106 "testSparseTextureGradClamp(" + Name 108 "testTextureGradClamp(" + Name 110 "testSparseTextureGradOffsetClamp(" + Name 112 "testTextureGradOffsetClamp(" + Name 114 "testCombinedTextureSampler(" + Name 116 "testSubpassLoad(" + Name 118 "texel" + Name 124 "s1D" + Name 127 "c1" + Name 135 "s2D" + Name 138 "c2" + Name 146 "s3D" + Name 150 "c3" + Name 158 "sCube" + Name 167 "s1DShadow" + Name 182 "s2DShadow" + Name 194 "sCubeShadow" + Name 197 "c4" + Name 208 "s1DArray" + Name 217 "s2DArray" + Name 226 "sCubeArray" + Name 235 "s1DArrayShadow" + Name 247 "s2DArrayShadow" + Name 259 "s2DRect" + Name 268 "s2DRectShadow" + Name 280 "sCubeArrayShadow" + Name 283 "compare" + Name 293 "texel" + Name 368 "texel" + Name 371 "lod" + Name 442 "texel" + Name 521 "texel" + Name 596 "texel" + Name 657 "texel" + Name 717 "texel" + Name 773 "sBuffer" + Name 784 "s2DMS" + Name 795 "s2DMSArray" + Name 807 "texel" + Name 863 "texel" + Name 866 "dPdxy1" + Name 874 "dPdxy2" + Name 882 "dPdxy3" + Name 986 "texel" + Name 1082 "texel" + Name 1177 "texel" + Name 1272 "texel" + Name 1332 "texel" + Name 1369 "texel" + Name 1409 "texel" + Name 1437 "texel" + Name 1453 "texel" + Name 1470 "size" + Name 1688 "lod" + Name 1758 "levels" + Name 1827 "samples" + Name 1841 "texel" + Name 1844 "i1D" + Name 1853 "i2D" + Name 1862 "i3D" + Name 1871 "i2DRect" + Name 1880 "iCube" + Name 1889 "iBuffer" + Name 1898 "i1DArray" + Name 1907 "i2DArray" + Name 1916 "iCubeArray" + Name 1925 "i2DMS" + Name 1934 "i2DMSArray" + Name 1988 "texel" + Name 1991 "ResType" + Name 2009 "ResType" + Name 2059 "texel" + Name 2101 "texel" + Name 2146 "texel" + Name 2176 "texel" + Name 2258 "texel" + Name 2317 "texel" + Name 2369 "texel" + Name 2407 "texel" + Name 2466 "texel" + Name 2503 "texel" + Name 2550 "texel" + Name 2578 "texel" + Name 2594 "texel" + Name 2610 "texel" + Name 2662 "texel" + Name 2665 "lodClamp" + Name 2729 "texel" + Name 2829 "texel" + Name 2867 "texel" + Name 2937 "texel" + Name 3011 "texel" + Name 3126 "texel" + Name 3174 "texel" + Name 3262 "texel" + Name 3264 "t1D" + Name 3268 "s" + Name 3276 "t2D" + Name 3285 "t3D" + Name 3294 "tCube" + Name 3303 "sShadow" + Name 3334 "t1DArray" + Name 3343 "t2DArray" + Name 3352 "tCubeArray" + Name 3381 "t2DRect" + Name 3414 "subpass" + Name 3420 "subpassMS" + Name 3426 "result" + Name 3511 "param" + Name 3590 "fragColor" + Name 3593 "tBuffer" + Name 3595 "t2DMS" + Name 3597 "t2DMSArray" + Name 3598 "bias" + Decorate 124(s1D) DescriptorSet 0 + Decorate 124(s1D) Binding 0 + Decorate 127(c1) Location 0 + Decorate 135(s2D) DescriptorSet 0 + Decorate 135(s2D) Binding 1 + Decorate 138(c2) Location 1 + Decorate 146(s3D) DescriptorSet 0 + Decorate 146(s3D) Binding 2 + Decorate 150(c3) Location 2 + Decorate 158(sCube) DescriptorSet 0 + Decorate 158(sCube) Binding 4 + Decorate 167(s1DShadow) DescriptorSet 0 + Decorate 167(s1DShadow) Binding 11 + Decorate 182(s2DShadow) DescriptorSet 0 + Decorate 182(s2DShadow) Binding 12 + Decorate 194(sCubeShadow) DescriptorSet 0 + Decorate 194(sCubeShadow) Binding 14 + Decorate 197(c4) Location 3 + Decorate 208(s1DArray) DescriptorSet 0 + Decorate 208(s1DArray) Binding 7 + Decorate 217(s2DArray) DescriptorSet 0 + Decorate 217(s2DArray) Binding 8 + Decorate 226(sCubeArray) DescriptorSet 0 + Decorate 226(sCubeArray) Binding 9 + Decorate 235(s1DArrayShadow) DescriptorSet 0 + Decorate 235(s1DArrayShadow) Binding 15 + Decorate 247(s2DArrayShadow) DescriptorSet 0 + Decorate 247(s2DArrayShadow) Binding 16 + Decorate 259(s2DRect) DescriptorSet 0 + Decorate 259(s2DRect) Binding 3 + Decorate 268(s2DRectShadow) DescriptorSet 0 + Decorate 268(s2DRectShadow) Binding 13 + Decorate 280(sCubeArrayShadow) DescriptorSet 0 + Decorate 280(sCubeArrayShadow) Binding 17 + Decorate 283(compare) Location 4 + Decorate 371(lod) Location 5 + Decorate 773(sBuffer) DescriptorSet 0 + Decorate 773(sBuffer) Binding 5 + Decorate 784(s2DMS) DescriptorSet 0 + Decorate 784(s2DMS) Binding 6 + Decorate 795(s2DMSArray) DescriptorSet 0 + Decorate 795(s2DMSArray) Binding 10 + Decorate 866(dPdxy1) Location 8 + Decorate 874(dPdxy2) Location 9 + Decorate 882(dPdxy3) Location 10 + Decorate 1844(i1D) DescriptorSet 1 + Decorate 1844(i1D) Binding 0 + Decorate 1853(i2D) DescriptorSet 1 + Decorate 1853(i2D) Binding 1 + Decorate 1862(i3D) DescriptorSet 1 + Decorate 1862(i3D) Binding 2 + Decorate 1871(i2DRect) DescriptorSet 1 + Decorate 1871(i2DRect) Binding 3 + Decorate 1880(iCube) DescriptorSet 1 + Decorate 1880(iCube) Binding 4 + Decorate 1889(iBuffer) DescriptorSet 1 + Decorate 1889(iBuffer) Binding 8 + Decorate 1898(i1DArray) DescriptorSet 1 + Decorate 1898(i1DArray) Binding 5 + Decorate 1907(i2DArray) DescriptorSet 1 + Decorate 1907(i2DArray) Binding 6 + Decorate 1916(iCubeArray) DescriptorSet 1 + Decorate 1916(iCubeArray) Binding 7 + Decorate 1925(i2DMS) DescriptorSet 1 + Decorate 1925(i2DMS) Binding 9 + Decorate 1934(i2DMSArray) DescriptorSet 1 + Decorate 1934(i2DMSArray) Binding 10 + Decorate 2665(lodClamp) Location 7 + Decorate 3264(t1D) DescriptorSet 2 + Decorate 3264(t1D) Binding 0 + Decorate 3268(s) DescriptorSet 2 + Decorate 3268(s) Binding 11 + Decorate 3276(t2D) DescriptorSet 2 + Decorate 3276(t2D) Binding 1 + Decorate 3285(t3D) DescriptorSet 2 + Decorate 3285(t3D) Binding 2 + Decorate 3294(tCube) DescriptorSet 2 + Decorate 3294(tCube) Binding 4 + Decorate 3303(sShadow) DescriptorSet 2 + Decorate 3303(sShadow) Binding 12 + Decorate 3334(t1DArray) DescriptorSet 2 + Decorate 3334(t1DArray) Binding 5 + Decorate 3343(t2DArray) DescriptorSet 2 + Decorate 3343(t2DArray) Binding 6 + Decorate 3352(tCubeArray) DescriptorSet 2 + Decorate 3352(tCubeArray) Binding 7 + Decorate 3381(t2DRect) DescriptorSet 2 + Decorate 3381(t2DRect) Binding 3 + Decorate 3414(subpass) DescriptorSet 3 + Decorate 3414(subpass) Binding 0 + Decorate 3414(subpass) InputAttachmentIndex 0 + Decorate 3420(subpassMS) DescriptorSet 3 + Decorate 3420(subpassMS) Binding 1 + Decorate 3420(subpassMS) InputAttachmentIndex 0 + Decorate 3590(fragColor) Location 0 + Decorate 3593(tBuffer) DescriptorSet 2 + Decorate 3593(tBuffer) Binding 8 + Decorate 3595(t2DMS) DescriptorSet 2 + Decorate 3595(t2DMS) Binding 9 + Decorate 3597(t2DMSArray) DescriptorSet 2 + Decorate 3597(t2DMSArray) Binding 10 + Decorate 3598(bias) Location 6 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypeFunction 7(fvec4) + 47: TypeInt 32 1 + 48: TypeVector 47(int) 4 + 49: TypeFunction 48(ivec4) + 52: TypeVector 6(float) 2 + 53: TypeFunction 52(fvec2) + 56: TypeFunction 47(int) + 63: TypePointer Function 7(fvec4) + 64: TypeFunction 2 63(ptr) + 119: 6(float) Constant 0 + 120: 7(fvec4) ConstantComposite 119 119 119 119 + 121: TypeImage 6(float) 1D sampled format:Unknown + 122: TypeSampledImage 121 + 123: TypePointer UniformConstant 122 + 124(s1D): 123(ptr) Variable UniformConstant + 126: TypePointer Input 6(float) + 127(c1): 126(ptr) Variable Input + 132: TypeImage 6(float) 2D sampled format:Unknown + 133: TypeSampledImage 132 + 134: TypePointer UniformConstant 133 + 135(s2D): 134(ptr) Variable UniformConstant + 137: TypePointer Input 52(fvec2) + 138(c2): 137(ptr) Variable Input + 143: TypeImage 6(float) 3D sampled format:Unknown + 144: TypeSampledImage 143 + 145: TypePointer UniformConstant 144 + 146(s3D): 145(ptr) Variable UniformConstant + 148: TypeVector 6(float) 3 + 149: TypePointer Input 148(fvec3) + 150(c3): 149(ptr) Variable Input + 155: TypeImage 6(float) Cube sampled format:Unknown + 156: TypeSampledImage 155 + 157: TypePointer UniformConstant 156 + 158(sCube): 157(ptr) Variable UniformConstant + 164: TypeImage 6(float) 1D depth sampled format:Unknown + 165: TypeSampledImage 164 + 166: TypePointer UniformConstant 165 + 167(s1DShadow): 166(ptr) Variable UniformConstant + 172: TypeInt 32 0 + 173: 172(int) Constant 0 + 174: TypePointer Function 6(float) + 179: TypeImage 6(float) 2D depth sampled format:Unknown + 180: TypeSampledImage 179 + 181: TypePointer UniformConstant 180 + 182(s2DShadow): 181(ptr) Variable UniformConstant + 191: TypeImage 6(float) Cube depth sampled format:Unknown + 192: TypeSampledImage 191 + 193: TypePointer UniformConstant 192 +194(sCubeShadow): 193(ptr) Variable UniformConstant + 196: TypePointer Input 7(fvec4) + 197(c4): 196(ptr) Variable Input + 205: TypeImage 6(float) 1D array sampled format:Unknown + 206: TypeSampledImage 205 + 207: TypePointer UniformConstant 206 + 208(s1DArray): 207(ptr) Variable UniformConstant + 214: TypeImage 6(float) 2D array sampled format:Unknown + 215: TypeSampledImage 214 + 216: TypePointer UniformConstant 215 + 217(s2DArray): 216(ptr) Variable UniformConstant + 223: TypeImage 6(float) Cube array sampled format:Unknown + 224: TypeSampledImage 223 + 225: TypePointer UniformConstant 224 + 226(sCubeArray): 225(ptr) Variable UniformConstant + 232: TypeImage 6(float) 1D depth array sampled format:Unknown + 233: TypeSampledImage 232 + 234: TypePointer UniformConstant 233 +235(s1DArrayShadow): 234(ptr) Variable UniformConstant + 244: TypeImage 6(float) 2D depth array sampled format:Unknown + 245: TypeSampledImage 244 + 246: TypePointer UniformConstant 245 +247(s2DArrayShadow): 246(ptr) Variable UniformConstant + 256: TypeImage 6(float) Rect sampled format:Unknown + 257: TypeSampledImage 256 + 258: TypePointer UniformConstant 257 + 259(s2DRect): 258(ptr) Variable UniformConstant + 265: TypeImage 6(float) Rect depth sampled format:Unknown + 266: TypeSampledImage 265 + 267: TypePointer UniformConstant 266 +268(s2DRectShadow): 267(ptr) Variable UniformConstant + 277: TypeImage 6(float) Cube depth array sampled format:Unknown + 278: TypeSampledImage 277 + 279: TypePointer UniformConstant 278 +280(sCubeArrayShadow): 279(ptr) Variable UniformConstant + 283(compare): 126(ptr) Variable Input + 371(lod): 126(ptr) Variable Input + 445: 47(int) Constant 1 + 451: TypeVector 47(int) 2 + 452: 451(ivec2) ConstantComposite 445 445 + 458: TypeVector 47(int) 3 + 459: 458(ivec3) ConstantComposite 445 445 445 + 770: TypeImage 6(float) Buffer sampled format:Unknown + 771: TypeSampledImage 770 + 772: TypePointer UniformConstant 771 + 773(sBuffer): 772(ptr) Variable UniformConstant + 781: TypeImage 6(float) 2D multi-sampled sampled format:Unknown + 782: TypeSampledImage 781 + 783: TypePointer UniformConstant 782 + 784(s2DMS): 783(ptr) Variable UniformConstant + 792: TypeImage 6(float) 2D array multi-sampled sampled format:Unknown + 793: TypeSampledImage 792 + 794: TypePointer UniformConstant 793 + 795(s2DMSArray): 794(ptr) Variable UniformConstant + 799: 47(int) Constant 2 + 866(dPdxy1): 126(ptr) Variable Input + 874(dPdxy2): 137(ptr) Variable Input + 882(dPdxy3): 149(ptr) Variable Input + 1275: 47(int) Constant 0 + 1372: 172(int) Constant 4 + 1373: TypeArray 451(ivec2) 1372 + 1374: 1373 ConstantComposite 452 452 452 452 + 1469: TypePointer Function 48(ivec4) + 1471: 48(ivec4) ConstantComposite 1275 1275 1275 1275 + 1477: TypePointer Function 47(int) + 1492: 172(int) Constant 1 + 1507: 172(int) Constant 2 + 1687: TypePointer Function 52(fvec2) + 1689: 52(fvec2) ConstantComposite 119 119 + 1842: TypeImage 6(float) 1D nonsampled format:Rgba16f + 1843: TypePointer UniformConstant 1842 + 1844(i1D): 1843(ptr) Variable UniformConstant + 1851: TypeImage 6(float) 2D nonsampled format:Rgba16f + 1852: TypePointer UniformConstant 1851 + 1853(i2D): 1852(ptr) Variable UniformConstant + 1860: TypeImage 6(float) 3D nonsampled format:Rgba16f + 1861: TypePointer UniformConstant 1860 + 1862(i3D): 1861(ptr) Variable UniformConstant + 1869: TypeImage 6(float) Rect nonsampled format:Rgba16f + 1870: TypePointer UniformConstant 1869 + 1871(i2DRect): 1870(ptr) Variable UniformConstant + 1878: TypeImage 6(float) Cube nonsampled format:Rgba16f + 1879: TypePointer UniformConstant 1878 + 1880(iCube): 1879(ptr) Variable UniformConstant + 1887: TypeImage 6(float) Buffer nonsampled format:Rgba16f + 1888: TypePointer UniformConstant 1887 + 1889(iBuffer): 1888(ptr) Variable UniformConstant + 1896: TypeImage 6(float) 1D array nonsampled format:Rgba16f + 1897: TypePointer UniformConstant 1896 + 1898(i1DArray): 1897(ptr) Variable UniformConstant + 1905: TypeImage 6(float) 2D array nonsampled format:Rgba16f + 1906: TypePointer UniformConstant 1905 + 1907(i2DArray): 1906(ptr) Variable UniformConstant + 1914: TypeImage 6(float) Cube array nonsampled format:Rgba16f + 1915: TypePointer UniformConstant 1914 +1916(iCubeArray): 1915(ptr) Variable UniformConstant + 1923: TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba16f + 1924: TypePointer UniformConstant 1923 + 1925(i2DMS): 1924(ptr) Variable UniformConstant + 1932: TypeImage 6(float) 2D array multi-sampled nonsampled format:Rgba16f + 1933: TypePointer UniformConstant 1932 +1934(i2DMSArray): 1933(ptr) Variable UniformConstant + 1991(ResType): TypeStruct 47(int) 7(fvec4) + 2009(ResType): TypeStruct 47(int) 6(float) + 2506: 451(ivec2) ConstantComposite 445 799 + 2507: 47(int) Constant 3 + 2508: 47(int) Constant 4 + 2509: 451(ivec2) ConstantComposite 2507 2508 + 2510: 47(int) Constant 15 + 2511: 47(int) Constant 16 + 2512: 451(ivec2) ConstantComposite 2510 2511 + 2513: 47(int) Constant 4294967294 + 2514: 451(ivec2) ConstantComposite 2513 1275 + 2515: 1373 ConstantComposite 2506 2509 2512 2514 + 2665(lodClamp): 126(ptr) Variable Input + 3263: TypePointer UniformConstant 121 + 3264(t1D): 3263(ptr) Variable UniformConstant + 3266: TypeSampler + 3267: TypePointer UniformConstant 3266 + 3268(s): 3267(ptr) Variable UniformConstant + 3275: TypePointer UniformConstant 132 + 3276(t2D): 3275(ptr) Variable UniformConstant + 3284: TypePointer UniformConstant 143 + 3285(t3D): 3284(ptr) Variable UniformConstant + 3293: TypePointer UniformConstant 155 + 3294(tCube): 3293(ptr) Variable UniformConstant + 3303(sShadow): 3267(ptr) Variable UniformConstant + 3333: TypePointer UniformConstant 205 + 3334(t1DArray): 3333(ptr) Variable UniformConstant + 3342: TypePointer UniformConstant 214 + 3343(t2DArray): 3342(ptr) Variable UniformConstant + 3351: TypePointer UniformConstant 223 +3352(tCubeArray): 3351(ptr) Variable UniformConstant + 3380: TypePointer UniformConstant 256 + 3381(t2DRect): 3380(ptr) Variable UniformConstant + 3412: TypeImage 6(float) SubpassData nonsampled format:Unknown + 3413: TypePointer UniformConstant 3412 + 3414(subpass): 3413(ptr) Variable UniformConstant + 3416: 451(ivec2) ConstantComposite 1275 1275 + 3418: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown + 3419: TypePointer UniformConstant 3418 + 3420(subpassMS): 3419(ptr) Variable UniformConstant + 3589: TypePointer Output 7(fvec4) + 3590(fragColor): 3589(ptr) Variable Output + 3592: TypePointer UniformConstant 770 + 3593(tBuffer): 3592(ptr) Variable UniformConstant + 3594: TypePointer UniformConstant 781 + 3595(t2DMS): 3594(ptr) Variable UniformConstant + 3596: TypePointer UniformConstant 792 +3597(t2DMSArray): 3596(ptr) Variable UniformConstant + 3598(bias): 126(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + 3426(result): 63(ptr) Variable Function + 3511(param): 63(ptr) Variable Function + Store 3426(result) 120 + 3427: 7(fvec4) FunctionCall 9(testTexture() + 3428: 7(fvec4) Load 3426(result) + 3429: 7(fvec4) FAdd 3428 3427 + Store 3426(result) 3429 + 3430: 7(fvec4) FunctionCall 11(testTextureProj() + 3431: 7(fvec4) Load 3426(result) + 3432: 7(fvec4) FAdd 3431 3430 + Store 3426(result) 3432 + 3433: 7(fvec4) FunctionCall 13(testTextureLod() + 3434: 7(fvec4) Load 3426(result) + 3435: 7(fvec4) FAdd 3434 3433 + Store 3426(result) 3435 + 3436: 7(fvec4) FunctionCall 15(testTextureOffset() + 3437: 7(fvec4) Load 3426(result) + 3438: 7(fvec4) FAdd 3437 3436 + Store 3426(result) 3438 + 3439: 7(fvec4) FunctionCall 19(testTextureLodOffset() + 3440: 7(fvec4) Load 3426(result) + 3441: 7(fvec4) FAdd 3440 3439 + Store 3426(result) 3441 + 3442: 7(fvec4) FunctionCall 21(testTextureProjLodOffset() + 3443: 7(fvec4) Load 3426(result) + 3444: 7(fvec4) FAdd 3443 3442 + Store 3426(result) 3444 + 3445: 7(fvec4) FunctionCall 23(testTexelFetch() + 3446: 7(fvec4) Load 3426(result) + 3447: 7(fvec4) FAdd 3446 3445 + Store 3426(result) 3447 + 3448: 7(fvec4) FunctionCall 25(testTexelFetchOffset() + 3449: 7(fvec4) Load 3426(result) + 3450: 7(fvec4) FAdd 3449 3448 + Store 3426(result) 3450 + 3451: 7(fvec4) FunctionCall 27(testTextureGrad() + 3452: 7(fvec4) Load 3426(result) + 3453: 7(fvec4) FAdd 3452 3451 + Store 3426(result) 3453 + 3454: 7(fvec4) FunctionCall 29(testTextureGradOffset() + 3455: 7(fvec4) Load 3426(result) + 3456: 7(fvec4) FAdd 3455 3454 + Store 3426(result) 3456 + 3457: 7(fvec4) FunctionCall 31(testTextureProjGrad() + 3458: 7(fvec4) Load 3426(result) + 3459: 7(fvec4) FAdd 3458 3457 + Store 3426(result) 3459 + 3460: 7(fvec4) FunctionCall 33(testTextureProjGradoffset() + 3461: 7(fvec4) Load 3426(result) + 3462: 7(fvec4) FAdd 3461 3460 + Store 3426(result) 3462 + 3463: 7(fvec4) FunctionCall 35(testTextureGather() + 3464: 7(fvec4) Load 3426(result) + 3465: 7(fvec4) FAdd 3464 3463 + Store 3426(result) 3465 + 3466: 7(fvec4) FunctionCall 37(testTextureGatherOffset() + 3467: 7(fvec4) Load 3426(result) + 3468: 7(fvec4) FAdd 3467 3466 + Store 3426(result) 3468 + 3469: 7(fvec4) FunctionCall 39(testTextureGatherOffsets() + 3470: 7(fvec4) Load 3426(result) + 3471: 7(fvec4) FAdd 3470 3469 + Store 3426(result) 3471 + 3472: 7(fvec4) FunctionCall 41(testTextureGatherLod() + 3473: 7(fvec4) Load 3426(result) + 3474: 7(fvec4) FAdd 3473 3472 + Store 3426(result) 3474 + 3475: 7(fvec4) FunctionCall 43(testTextureGatherLodOffset() + 3476: 7(fvec4) Load 3426(result) + 3477: 7(fvec4) FAdd 3476 3475 + Store 3426(result) 3477 + 3478: 7(fvec4) FunctionCall 45(testTextureGatherLodOffsets() + 3479: 7(fvec4) Load 3426(result) + 3480: 7(fvec4) FAdd 3479 3478 + Store 3426(result) 3480 + 3481: 48(ivec4) FunctionCall 50(testTextureSize() + 3482: 7(fvec4) ConvertSToF 3481 + 3483: 7(fvec4) Load 3426(result) + 3484: 7(fvec4) FAdd 3483 3482 + Store 3426(result) 3484 + 3485: 52(fvec2) FunctionCall 54(testTextureQueryLod() + 3486: 6(float) CompositeExtract 3485 0 + 3487: 6(float) CompositeExtract 3485 1 + 3488: 52(fvec2) CompositeConstruct 3486 3487 + 3489: 7(fvec4) Load 3426(result) + 3490: 52(fvec2) VectorShuffle 3489 3489 0 1 + 3491: 52(fvec2) FAdd 3490 3488 + 3492: 174(ptr) AccessChain 3426(result) 173 + 3493: 6(float) CompositeExtract 3491 0 + Store 3492 3493 + 3494: 174(ptr) AccessChain 3426(result) 1492 + 3495: 6(float) CompositeExtract 3491 1 + Store 3494 3495 + 3496: 47(int) FunctionCall 57(testTextureQueryLevels() + 3497: 6(float) ConvertSToF 3496 + 3498: 174(ptr) AccessChain 3426(result) 173 + 3499: 6(float) Load 3498 + 3500: 6(float) FAdd 3499 3497 + 3501: 174(ptr) AccessChain 3426(result) 173 + Store 3501 3500 + 3502: 47(int) FunctionCall 59(testTextureSamples() + 3503: 6(float) ConvertSToF 3502 + 3504: 174(ptr) AccessChain 3426(result) 173 + 3505: 6(float) Load 3504 + 3506: 6(float) FAdd 3505 3503 + 3507: 174(ptr) AccessChain 3426(result) 173 + Store 3507 3506 + 3508: 7(fvec4) FunctionCall 61(testImageLoad() + 3509: 7(fvec4) Load 3426(result) + 3510: 7(fvec4) FAdd 3509 3508 + Store 3426(result) 3510 + 3512: 7(fvec4) Load 3426(result) + Store 3511(param) 3512 + 3513: 2 FunctionCall 66(testImageStore(vf4;) 3511(param) + 3514: 7(fvec4) FunctionCall 68(testSparseTexture() + 3515: 7(fvec4) Load 3426(result) + 3516: 7(fvec4) FAdd 3515 3514 + Store 3426(result) 3516 + 3517: 7(fvec4) FunctionCall 70(testSparseTextureLod() + 3518: 7(fvec4) Load 3426(result) + 3519: 7(fvec4) FAdd 3518 3517 + Store 3426(result) 3519 + 3520: 7(fvec4) FunctionCall 72(testSparseTextureOffset() + 3521: 7(fvec4) Load 3426(result) + 3522: 7(fvec4) FAdd 3521 3520 + Store 3426(result) 3522 + 3523: 7(fvec4) FunctionCall 74(testSparseTextureLodOffset() + 3524: 7(fvec4) Load 3426(result) + 3525: 7(fvec4) FAdd 3524 3523 + Store 3426(result) 3525 + 3526: 7(fvec4) FunctionCall 76(testSparseTextureGrad() + 3527: 7(fvec4) Load 3426(result) + 3528: 7(fvec4) FAdd 3527 3526 + Store 3426(result) 3528 + 3529: 7(fvec4) FunctionCall 78(testSparseTextureGradOffset() + 3530: 7(fvec4) Load 3426(result) + 3531: 7(fvec4) FAdd 3530 3529 + Store 3426(result) 3531 + 3532: 7(fvec4) FunctionCall 80(testSparseTexelFetch() + 3533: 7(fvec4) Load 3426(result) + 3534: 7(fvec4) FAdd 3533 3532 + Store 3426(result) 3534 + 3535: 7(fvec4) FunctionCall 82(testSparseTexelFetchOffset() + 3536: 7(fvec4) Load 3426(result) + 3537: 7(fvec4) FAdd 3536 3535 + Store 3426(result) 3537 + 3538: 7(fvec4) FunctionCall 84(testSparseTextureGather() + 3539: 7(fvec4) Load 3426(result) + 3540: 7(fvec4) FAdd 3539 3538 + Store 3426(result) 3540 + 3541: 7(fvec4) FunctionCall 86(testSparseTextureGatherOffset() + 3542: 7(fvec4) Load 3426(result) + 3543: 7(fvec4) FAdd 3542 3541 + Store 3426(result) 3543 + 3544: 7(fvec4) FunctionCall 88(testSparseTextureGatherOffsets() + 3545: 7(fvec4) Load 3426(result) + 3546: 7(fvec4) FAdd 3545 3544 + Store 3426(result) 3546 + 3547: 7(fvec4) FunctionCall 90(testSparseTextureGatherLod() + 3548: 7(fvec4) Load 3426(result) + 3549: 7(fvec4) FAdd 3548 3547 + Store 3426(result) 3549 + 3550: 7(fvec4) FunctionCall 92(testSparseTextureGatherLodOffset() + 3551: 7(fvec4) Load 3426(result) + 3552: 7(fvec4) FAdd 3551 3550 + Store 3426(result) 3552 + 3553: 7(fvec4) FunctionCall 94(testSparseTextureGatherLodOffsets() + 3554: 7(fvec4) Load 3426(result) + 3555: 7(fvec4) FAdd 3554 3553 + Store 3426(result) 3555 + 3556: 7(fvec4) FunctionCall 96(testSparseImageLoad() + 3557: 7(fvec4) Load 3426(result) + 3558: 7(fvec4) FAdd 3557 3556 + Store 3426(result) 3558 + 3559: 7(fvec4) FunctionCall 98(testSparseTextureClamp() + 3560: 7(fvec4) Load 3426(result) + 3561: 7(fvec4) FAdd 3560 3559 + Store 3426(result) 3561 + 3562: 7(fvec4) FunctionCall 100(testTextureClamp() + 3563: 7(fvec4) Load 3426(result) + 3564: 7(fvec4) FAdd 3563 3562 + Store 3426(result) 3564 + 3565: 7(fvec4) FunctionCall 102(testSparseTextureOffsetClamp() + 3566: 7(fvec4) Load 3426(result) + 3567: 7(fvec4) FAdd 3566 3565 + Store 3426(result) 3567 + 3568: 7(fvec4) FunctionCall 104(testTextureOffsetClamp() + 3569: 7(fvec4) Load 3426(result) + 3570: 7(fvec4) FAdd 3569 3568 + Store 3426(result) 3570 + 3571: 7(fvec4) FunctionCall 76(testSparseTextureGrad() + 3572: 7(fvec4) Load 3426(result) + 3573: 7(fvec4) FAdd 3572 3571 + Store 3426(result) 3573 + 3574: 7(fvec4) FunctionCall 27(testTextureGrad() + 3575: 7(fvec4) Load 3426(result) + 3576: 7(fvec4) FAdd 3575 3574 + Store 3426(result) 3576 + 3577: 7(fvec4) FunctionCall 110(testSparseTextureGradOffsetClamp() + 3578: 7(fvec4) Load 3426(result) + 3579: 7(fvec4) FAdd 3578 3577 + Store 3426(result) 3579 + 3580: 7(fvec4) FunctionCall 112(testTextureGradOffsetClamp() + 3581: 7(fvec4) Load 3426(result) + 3582: 7(fvec4) FAdd 3581 3580 + Store 3426(result) 3582 + 3583: 7(fvec4) FunctionCall 114(testCombinedTextureSampler() + 3584: 7(fvec4) Load 3426(result) + 3585: 7(fvec4) FAdd 3584 3583 + Store 3426(result) 3585 + 3586: 7(fvec4) FunctionCall 116(testSubpassLoad() + 3587: 7(fvec4) Load 3426(result) + 3588: 7(fvec4) FAdd 3587 3586 + Store 3426(result) 3588 + 3591: 7(fvec4) Load 3426(result) + Store 3590(fragColor) 3591 + Return + FunctionEnd + 9(testTexture(): 7(fvec4) Function None 8 + 10: Label + 118(texel): 63(ptr) Variable Function + Store 118(texel) 120 + 125: 122 Load 124(s1D) + 128: 6(float) Load 127(c1) + 129: 7(fvec4) ImageSampleImplicitLod 125 128 + 130: 7(fvec4) Load 118(texel) + 131: 7(fvec4) FAdd 130 129 + Store 118(texel) 131 + 136: 133 Load 135(s2D) + 139: 52(fvec2) Load 138(c2) + 140: 7(fvec4) ImageSampleImplicitLod 136 139 + 141: 7(fvec4) Load 118(texel) + 142: 7(fvec4) FAdd 141 140 + Store 118(texel) 142 + 147: 144 Load 146(s3D) + 151: 148(fvec3) Load 150(c3) + 152: 7(fvec4) ImageSampleImplicitLod 147 151 + 153: 7(fvec4) Load 118(texel) + 154: 7(fvec4) FAdd 153 152 + Store 118(texel) 154 + 159: 156 Load 158(sCube) + 160: 148(fvec3) Load 150(c3) + 161: 7(fvec4) ImageSampleImplicitLod 159 160 + 162: 7(fvec4) Load 118(texel) + 163: 7(fvec4) FAdd 162 161 + Store 118(texel) 163 + 168: 165 Load 167(s1DShadow) + 169: 148(fvec3) Load 150(c3) + 170: 6(float) CompositeExtract 169 2 + 171: 6(float) ImageSampleDrefImplicitLod 168 169 170 + 175: 174(ptr) AccessChain 118(texel) 173 + 176: 6(float) Load 175 + 177: 6(float) FAdd 176 171 + 178: 174(ptr) AccessChain 118(texel) 173 + Store 178 177 + 183: 180 Load 182(s2DShadow) + 184: 148(fvec3) Load 150(c3) + 185: 6(float) CompositeExtract 184 2 + 186: 6(float) ImageSampleDrefImplicitLod 183 184 185 + 187: 174(ptr) AccessChain 118(texel) 173 + 188: 6(float) Load 187 + 189: 6(float) FAdd 188 186 + 190: 174(ptr) AccessChain 118(texel) 173 + Store 190 189 + 195: 192 Load 194(sCubeShadow) + 198: 7(fvec4) Load 197(c4) + 199: 6(float) CompositeExtract 198 3 + 200: 6(float) ImageSampleDrefImplicitLod 195 198 199 + 201: 174(ptr) AccessChain 118(texel) 173 + 202: 6(float) Load 201 + 203: 6(float) FAdd 202 200 + 204: 174(ptr) AccessChain 118(texel) 173 + Store 204 203 + 209: 206 Load 208(s1DArray) + 210: 52(fvec2) Load 138(c2) + 211: 7(fvec4) ImageSampleImplicitLod 209 210 + 212: 7(fvec4) Load 118(texel) + 213: 7(fvec4) FAdd 212 211 + Store 118(texel) 213 + 218: 215 Load 217(s2DArray) + 219: 148(fvec3) Load 150(c3) + 220: 7(fvec4) ImageSampleImplicitLod 218 219 + 221: 7(fvec4) Load 118(texel) + 222: 7(fvec4) FAdd 221 220 + Store 118(texel) 222 + 227: 224 Load 226(sCubeArray) + 228: 7(fvec4) Load 197(c4) + 229: 7(fvec4) ImageSampleImplicitLod 227 228 + 230: 7(fvec4) Load 118(texel) + 231: 7(fvec4) FAdd 230 229 + Store 118(texel) 231 + 236: 233 Load 235(s1DArrayShadow) + 237: 148(fvec3) Load 150(c3) + 238: 6(float) CompositeExtract 237 2 + 239: 6(float) ImageSampleDrefImplicitLod 236 237 238 + 240: 174(ptr) AccessChain 118(texel) 173 + 241: 6(float) Load 240 + 242: 6(float) FAdd 241 239 + 243: 174(ptr) AccessChain 118(texel) 173 + Store 243 242 + 248: 245 Load 247(s2DArrayShadow) + 249: 7(fvec4) Load 197(c4) + 250: 6(float) CompositeExtract 249 3 + 251: 6(float) ImageSampleDrefImplicitLod 248 249 250 + 252: 174(ptr) AccessChain 118(texel) 173 + 253: 6(float) Load 252 + 254: 6(float) FAdd 253 251 + 255: 174(ptr) AccessChain 118(texel) 173 + Store 255 254 + 260: 257 Load 259(s2DRect) + 261: 52(fvec2) Load 138(c2) + 262: 7(fvec4) ImageSampleImplicitLod 260 261 + 263: 7(fvec4) Load 118(texel) + 264: 7(fvec4) FAdd 263 262 + Store 118(texel) 264 + 269: 266 Load 268(s2DRectShadow) + 270: 148(fvec3) Load 150(c3) + 271: 6(float) CompositeExtract 270 2 + 272: 6(float) ImageSampleDrefImplicitLod 269 270 271 + 273: 174(ptr) AccessChain 118(texel) 173 + 274: 6(float) Load 273 + 275: 6(float) FAdd 274 272 + 276: 174(ptr) AccessChain 118(texel) 173 + Store 276 275 + 281: 278 Load 280(sCubeArrayShadow) + 282: 7(fvec4) Load 197(c4) + 284: 6(float) Load 283(compare) + 285: 6(float) ImageSampleDrefImplicitLod 281 282 284 + 286: 174(ptr) AccessChain 118(texel) 173 + 287: 6(float) Load 286 + 288: 6(float) FAdd 287 285 + 289: 174(ptr) AccessChain 118(texel) 173 + Store 289 288 + 290: 7(fvec4) Load 118(texel) + ReturnValue 290 + FunctionEnd +11(testTextureProj(): 7(fvec4) Function None 8 + 12: Label + 293(texel): 63(ptr) Variable Function + Store 293(texel) 120 + 294: 122 Load 124(s1D) + 295: 52(fvec2) Load 138(c2) + 296: 7(fvec4) ImageSampleProjImplicitLod 294 295 + 297: 7(fvec4) Load 293(texel) + 298: 7(fvec4) FAdd 297 296 + Store 293(texel) 298 + 299: 122 Load 124(s1D) + 300: 7(fvec4) Load 197(c4) + 301: 6(float) CompositeExtract 300 3 + 302: 7(fvec4) CompositeInsert 301 300 1 + 303: 7(fvec4) ImageSampleProjImplicitLod 299 302 + 304: 7(fvec4) Load 293(texel) + 305: 7(fvec4) FAdd 304 303 + Store 293(texel) 305 + 306: 133 Load 135(s2D) + 307: 148(fvec3) Load 150(c3) + 308: 7(fvec4) ImageSampleProjImplicitLod 306 307 + 309: 7(fvec4) Load 293(texel) + 310: 7(fvec4) FAdd 309 308 + Store 293(texel) 310 + 311: 133 Load 135(s2D) + 312: 7(fvec4) Load 197(c4) + 313: 6(float) CompositeExtract 312 3 + 314: 7(fvec4) CompositeInsert 313 312 2 + 315: 7(fvec4) ImageSampleProjImplicitLod 311 314 + 316: 7(fvec4) Load 293(texel) + 317: 7(fvec4) FAdd 316 315 + Store 293(texel) 317 + 318: 144 Load 146(s3D) + 319: 7(fvec4) Load 197(c4) + 320: 7(fvec4) ImageSampleProjImplicitLod 318 319 + 321: 7(fvec4) Load 293(texel) + 322: 7(fvec4) FAdd 321 320 + Store 293(texel) 322 + 323: 165 Load 167(s1DShadow) + 324: 7(fvec4) Load 197(c4) + 325: 6(float) CompositeExtract 324 2 + 326: 6(float) CompositeExtract 324 3 + 327: 7(fvec4) CompositeInsert 326 324 1 + 328: 6(float) ImageSampleProjDrefImplicitLod 323 327 325 + 329: 174(ptr) AccessChain 293(texel) 173 + 330: 6(float) Load 329 + 331: 6(float) FAdd 330 328 + 332: 174(ptr) AccessChain 293(texel) 173 + Store 332 331 + 333: 180 Load 182(s2DShadow) + 334: 7(fvec4) Load 197(c4) + 335: 6(float) CompositeExtract 334 2 + 336: 6(float) CompositeExtract 334 3 + 337: 7(fvec4) CompositeInsert 336 334 2 + 338: 6(float) ImageSampleProjDrefImplicitLod 333 337 335 + 339: 174(ptr) AccessChain 293(texel) 173 + 340: 6(float) Load 339 + 341: 6(float) FAdd 340 338 + 342: 174(ptr) AccessChain 293(texel) 173 + Store 342 341 + 343: 257 Load 259(s2DRect) + 344: 148(fvec3) Load 150(c3) + 345: 7(fvec4) ImageSampleProjImplicitLod 343 344 + 346: 7(fvec4) Load 293(texel) + 347: 7(fvec4) FAdd 346 345 + Store 293(texel) 347 + 348: 257 Load 259(s2DRect) + 349: 7(fvec4) Load 197(c4) + 350: 6(float) CompositeExtract 349 3 + 351: 7(fvec4) CompositeInsert 350 349 2 + 352: 7(fvec4) ImageSampleProjImplicitLod 348 351 + 353: 7(fvec4) Load 293(texel) + 354: 7(fvec4) FAdd 353 352 + Store 293(texel) 354 + 355: 266 Load 268(s2DRectShadow) + 356: 7(fvec4) Load 197(c4) + 357: 6(float) CompositeExtract 356 2 + 358: 6(float) CompositeExtract 356 3 + 359: 7(fvec4) CompositeInsert 358 356 2 + 360: 6(float) ImageSampleProjDrefImplicitLod 355 359 357 + 361: 174(ptr) AccessChain 293(texel) 173 + 362: 6(float) Load 361 + 363: 6(float) FAdd 362 360 + 364: 174(ptr) AccessChain 293(texel) 173 + Store 364 363 + 365: 7(fvec4) Load 293(texel) + ReturnValue 365 + FunctionEnd +13(testTextureLod(): 7(fvec4) Function None 8 + 14: Label + 368(texel): 63(ptr) Variable Function + Store 368(texel) 120 + 369: 122 Load 124(s1D) + 370: 6(float) Load 127(c1) + 372: 6(float) Load 371(lod) + 373: 7(fvec4) ImageSampleExplicitLod 369 370 Lod 372 + 374: 7(fvec4) Load 368(texel) + 375: 7(fvec4) FAdd 374 373 + Store 368(texel) 375 + 376: 133 Load 135(s2D) + 377: 52(fvec2) Load 138(c2) + 378: 6(float) Load 371(lod) + 379: 7(fvec4) ImageSampleExplicitLod 376 377 Lod 378 + 380: 7(fvec4) Load 368(texel) + 381: 7(fvec4) FAdd 380 379 + Store 368(texel) 381 + 382: 144 Load 146(s3D) + 383: 148(fvec3) Load 150(c3) + 384: 6(float) Load 371(lod) + 385: 7(fvec4) ImageSampleExplicitLod 382 383 Lod 384 + 386: 7(fvec4) Load 368(texel) + 387: 7(fvec4) FAdd 386 385 + Store 368(texel) 387 + 388: 156 Load 158(sCube) + 389: 148(fvec3) Load 150(c3) + 390: 6(float) Load 371(lod) + 391: 7(fvec4) ImageSampleExplicitLod 388 389 Lod 390 + 392: 7(fvec4) Load 368(texel) + 393: 7(fvec4) FAdd 392 391 + Store 368(texel) 393 + 394: 165 Load 167(s1DShadow) + 395: 148(fvec3) Load 150(c3) + 396: 6(float) Load 371(lod) + 397: 6(float) CompositeExtract 395 2 + 398: 6(float) ImageSampleDrefExplicitLod 394 395 397 Lod 396 + 399: 174(ptr) AccessChain 368(texel) 173 + 400: 6(float) Load 399 + 401: 6(float) FAdd 400 398 + 402: 174(ptr) AccessChain 368(texel) 173 + Store 402 401 + 403: 180 Load 182(s2DShadow) + 404: 148(fvec3) Load 150(c3) + 405: 6(float) Load 371(lod) + 406: 6(float) CompositeExtract 404 2 + 407: 6(float) ImageSampleDrefExplicitLod 403 404 406 Lod 405 + 408: 174(ptr) AccessChain 368(texel) 173 + 409: 6(float) Load 408 + 410: 6(float) FAdd 409 407 + 411: 174(ptr) AccessChain 368(texel) 173 + Store 411 410 + 412: 206 Load 208(s1DArray) + 413: 52(fvec2) Load 138(c2) + 414: 6(float) Load 371(lod) + 415: 7(fvec4) ImageSampleExplicitLod 412 413 Lod 414 + 416: 7(fvec4) Load 368(texel) + 417: 7(fvec4) FAdd 416 415 + Store 368(texel) 417 + 418: 215 Load 217(s2DArray) + 419: 148(fvec3) Load 150(c3) + 420: 6(float) Load 371(lod) + 421: 7(fvec4) ImageSampleExplicitLod 418 419 Lod 420 + 422: 7(fvec4) Load 368(texel) + 423: 7(fvec4) FAdd 422 421 + Store 368(texel) 423 + 424: 233 Load 235(s1DArrayShadow) + 425: 148(fvec3) Load 150(c3) + 426: 6(float) Load 371(lod) + 427: 6(float) CompositeExtract 425 2 + 428: 6(float) ImageSampleDrefExplicitLod 424 425 427 Lod 426 + 429: 174(ptr) AccessChain 368(texel) 173 + 430: 6(float) Load 429 + 431: 6(float) FAdd 430 428 + 432: 174(ptr) AccessChain 368(texel) 173 + Store 432 431 + 433: 224 Load 226(sCubeArray) + 434: 7(fvec4) Load 197(c4) + 435: 6(float) Load 371(lod) + 436: 7(fvec4) ImageSampleExplicitLod 433 434 Lod 435 + 437: 7(fvec4) Load 368(texel) + 438: 7(fvec4) FAdd 437 436 + Store 368(texel) 438 + 439: 7(fvec4) Load 368(texel) + ReturnValue 439 + FunctionEnd +15(testTextureOffset(): 7(fvec4) Function None 8 + 16: Label + 442(texel): 63(ptr) Variable Function + Store 442(texel) 120 + 443: 122 Load 124(s1D) + 444: 6(float) Load 127(c1) + 446: 7(fvec4) ImageSampleImplicitLod 443 444 ConstOffset 445 + 447: 7(fvec4) Load 442(texel) + 448: 7(fvec4) FAdd 447 446 + Store 442(texel) 448 + 449: 133 Load 135(s2D) + 450: 52(fvec2) Load 138(c2) + 453: 7(fvec4) ImageSampleImplicitLod 449 450 ConstOffset 452 + 454: 7(fvec4) Load 442(texel) + 455: 7(fvec4) FAdd 454 453 + Store 442(texel) 455 + 456: 144 Load 146(s3D) + 457: 148(fvec3) Load 150(c3) + 460: 7(fvec4) ImageSampleImplicitLod 456 457 ConstOffset 459 + 461: 7(fvec4) Load 442(texel) + 462: 7(fvec4) FAdd 461 460 + Store 442(texel) 462 + 463: 257 Load 259(s2DRect) + 464: 52(fvec2) Load 138(c2) + 465: 7(fvec4) ImageSampleImplicitLod 463 464 ConstOffset 452 + 466: 7(fvec4) Load 442(texel) + 467: 7(fvec4) FAdd 466 465 + Store 442(texel) 467 + 468: 266 Load 268(s2DRectShadow) + 469: 148(fvec3) Load 150(c3) + 470: 6(float) CompositeExtract 469 2 + 471: 6(float) ImageSampleDrefImplicitLod 468 469 470 ConstOffset 452 + 472: 174(ptr) AccessChain 442(texel) 173 + 473: 6(float) Load 472 + 474: 6(float) FAdd 473 471 + 475: 174(ptr) AccessChain 442(texel) 173 + Store 475 474 + 476: 165 Load 167(s1DShadow) + 477: 148(fvec3) Load 150(c3) + 478: 6(float) CompositeExtract 477 2 + 479: 6(float) ImageSampleDrefImplicitLod 476 477 478 ConstOffset 445 + 480: 174(ptr) AccessChain 442(texel) 173 + 481: 6(float) Load 480 + 482: 6(float) FAdd 481 479 + 483: 174(ptr) AccessChain 442(texel) 173 + Store 483 482 + 484: 180 Load 182(s2DShadow) + 485: 148(fvec3) Load 150(c3) + 486: 6(float) CompositeExtract 485 2 + 487: 6(float) ImageSampleDrefImplicitLod 484 485 486 ConstOffset 452 + 488: 174(ptr) AccessChain 442(texel) 173 + 489: 6(float) Load 488 + 490: 6(float) FAdd 489 487 + 491: 174(ptr) AccessChain 442(texel) 173 + Store 491 490 + 492: 206 Load 208(s1DArray) + 493: 52(fvec2) Load 138(c2) + 494: 7(fvec4) ImageSampleImplicitLod 492 493 ConstOffset 445 + 495: 7(fvec4) Load 442(texel) + 496: 7(fvec4) FAdd 495 494 + Store 442(texel) 496 + 497: 215 Load 217(s2DArray) + 498: 148(fvec3) Load 150(c3) + 499: 7(fvec4) ImageSampleImplicitLod 497 498 ConstOffset 452 + 500: 7(fvec4) Load 442(texel) + 501: 7(fvec4) FAdd 500 499 + Store 442(texel) 501 + 502: 233 Load 235(s1DArrayShadow) + 503: 148(fvec3) Load 150(c3) + 504: 6(float) CompositeExtract 503 2 + 505: 6(float) ImageSampleDrefImplicitLod 502 503 504 ConstOffset 445 + 506: 174(ptr) AccessChain 442(texel) 173 + 507: 6(float) Load 506 + 508: 6(float) FAdd 507 505 + 509: 174(ptr) AccessChain 442(texel) 173 + Store 509 508 + 510: 245 Load 247(s2DArrayShadow) + 511: 7(fvec4) Load 197(c4) + 512: 6(float) CompositeExtract 511 3 + 513: 6(float) ImageSampleDrefImplicitLod 510 511 512 ConstOffset 452 + 514: 174(ptr) AccessChain 442(texel) 173 + 515: 6(float) Load 514 + 516: 6(float) FAdd 515 513 + 517: 174(ptr) AccessChain 442(texel) 173 + Store 517 516 + 518: 7(fvec4) Load 442(texel) + ReturnValue 518 + FunctionEnd +17(testTextureProjOffset(): 7(fvec4) Function None 8 + 18: Label + 521(texel): 63(ptr) Variable Function + Store 521(texel) 120 + 522: 122 Load 124(s1D) + 523: 52(fvec2) Load 138(c2) + 524: 7(fvec4) ImageSampleProjImplicitLod 522 523 ConstOffset 445 + 525: 7(fvec4) Load 521(texel) + 526: 7(fvec4) FAdd 525 524 + Store 521(texel) 526 + 527: 122 Load 124(s1D) + 528: 7(fvec4) Load 197(c4) + 529: 6(float) CompositeExtract 528 3 + 530: 7(fvec4) CompositeInsert 529 528 1 + 531: 7(fvec4) ImageSampleProjImplicitLod 527 530 ConstOffset 445 + 532: 7(fvec4) Load 521(texel) + 533: 7(fvec4) FAdd 532 531 + Store 521(texel) 533 + 534: 133 Load 135(s2D) + 535: 148(fvec3) Load 150(c3) + 536: 7(fvec4) ImageSampleProjImplicitLod 534 535 ConstOffset 452 + 537: 7(fvec4) Load 521(texel) + 538: 7(fvec4) FAdd 537 536 + Store 521(texel) 538 + 539: 133 Load 135(s2D) + 540: 7(fvec4) Load 197(c4) + 541: 6(float) CompositeExtract 540 3 + 542: 7(fvec4) CompositeInsert 541 540 2 + 543: 7(fvec4) ImageSampleProjImplicitLod 539 542 ConstOffset 452 + 544: 7(fvec4) Load 521(texel) + 545: 7(fvec4) FAdd 544 543 + Store 521(texel) 545 + 546: 144 Load 146(s3D) + 547: 7(fvec4) Load 197(c4) + 548: 7(fvec4) ImageSampleProjImplicitLod 546 547 ConstOffset 459 + 549: 7(fvec4) Load 521(texel) + 550: 7(fvec4) FAdd 549 548 + Store 521(texel) 550 + 551: 257 Load 259(s2DRect) + 552: 148(fvec3) Load 150(c3) + 553: 7(fvec4) ImageSampleProjImplicitLod 551 552 ConstOffset 452 + 554: 7(fvec4) Load 521(texel) + 555: 7(fvec4) FAdd 554 553 + Store 521(texel) 555 + 556: 257 Load 259(s2DRect) + 557: 7(fvec4) Load 197(c4) + 558: 6(float) CompositeExtract 557 3 + 559: 7(fvec4) CompositeInsert 558 557 2 + 560: 7(fvec4) ImageSampleProjImplicitLod 556 559 ConstOffset 452 + 561: 7(fvec4) Load 521(texel) + 562: 7(fvec4) FAdd 561 560 + Store 521(texel) 562 + 563: 266 Load 268(s2DRectShadow) + 564: 7(fvec4) Load 197(c4) + 565: 6(float) CompositeExtract 564 2 + 566: 6(float) CompositeExtract 564 3 + 567: 7(fvec4) CompositeInsert 566 564 2 + 568: 6(float) ImageSampleProjDrefImplicitLod 563 567 565 ConstOffset 452 + 569: 174(ptr) AccessChain 521(texel) 173 + 570: 6(float) Load 569 + 571: 6(float) FAdd 570 568 + 572: 174(ptr) AccessChain 521(texel) 173 + Store 572 571 + 573: 165 Load 167(s1DShadow) + 574: 7(fvec4) Load 197(c4) + 575: 6(float) CompositeExtract 574 2 + 576: 6(float) CompositeExtract 574 3 + 577: 7(fvec4) CompositeInsert 576 574 1 + 578: 6(float) ImageSampleProjDrefImplicitLod 573 577 575 ConstOffset 445 + 579: 174(ptr) AccessChain 521(texel) 173 + 580: 6(float) Load 579 + 581: 6(float) FAdd 580 578 + 582: 174(ptr) AccessChain 521(texel) 173 + Store 582 581 + 583: 180 Load 182(s2DShadow) + 584: 7(fvec4) Load 197(c4) + 585: 6(float) CompositeExtract 584 2 + 586: 6(float) CompositeExtract 584 3 + 587: 7(fvec4) CompositeInsert 586 584 2 + 588: 6(float) ImageSampleProjDrefImplicitLod 583 587 585 ConstOffset 452 + 589: 174(ptr) AccessChain 521(texel) 173 + 590: 6(float) Load 589 + 591: 6(float) FAdd 590 588 + 592: 174(ptr) AccessChain 521(texel) 173 + Store 592 591 + 593: 7(fvec4) Load 521(texel) + ReturnValue 593 + FunctionEnd +19(testTextureLodOffset(): 7(fvec4) Function None 8 + 20: Label + 596(texel): 63(ptr) Variable Function + Store 596(texel) 120 + 597: 122 Load 124(s1D) + 598: 6(float) Load 127(c1) + 599: 6(float) Load 371(lod) + 600: 7(fvec4) ImageSampleExplicitLod 597 598 Lod ConstOffset 599 445 + 601: 7(fvec4) Load 596(texel) + 602: 7(fvec4) FAdd 601 600 + Store 596(texel) 602 + 603: 133 Load 135(s2D) + 604: 52(fvec2) Load 138(c2) + 605: 6(float) Load 371(lod) + 606: 7(fvec4) ImageSampleExplicitLod 603 604 Lod ConstOffset 605 452 + 607: 7(fvec4) Load 596(texel) + 608: 7(fvec4) FAdd 607 606 + Store 596(texel) 608 + 609: 144 Load 146(s3D) + 610: 148(fvec3) Load 150(c3) + 611: 6(float) Load 371(lod) + 612: 7(fvec4) ImageSampleExplicitLod 609 610 Lod ConstOffset 611 459 + 613: 7(fvec4) Load 596(texel) + 614: 7(fvec4) FAdd 613 612 + Store 596(texel) 614 + 615: 165 Load 167(s1DShadow) + 616: 148(fvec3) Load 150(c3) + 617: 6(float) Load 371(lod) + 618: 6(float) CompositeExtract 616 2 + 619: 6(float) ImageSampleDrefExplicitLod 615 616 618 Lod ConstOffset 617 445 + 620: 174(ptr) AccessChain 596(texel) 173 + 621: 6(float) Load 620 + 622: 6(float) FAdd 621 619 + 623: 174(ptr) AccessChain 596(texel) 173 + Store 623 622 + 624: 180 Load 182(s2DShadow) + 625: 148(fvec3) Load 150(c3) + 626: 6(float) Load 371(lod) + 627: 6(float) CompositeExtract 625 2 + 628: 6(float) ImageSampleDrefExplicitLod 624 625 627 Lod ConstOffset 626 452 + 629: 174(ptr) AccessChain 596(texel) 173 + 630: 6(float) Load 629 + 631: 6(float) FAdd 630 628 + 632: 174(ptr) AccessChain 596(texel) 173 + Store 632 631 + 633: 206 Load 208(s1DArray) + 634: 52(fvec2) Load 138(c2) + 635: 6(float) Load 371(lod) + 636: 7(fvec4) ImageSampleExplicitLod 633 634 Lod ConstOffset 635 445 + 637: 7(fvec4) Load 596(texel) + 638: 7(fvec4) FAdd 637 636 + Store 596(texel) 638 + 639: 215 Load 217(s2DArray) + 640: 148(fvec3) Load 150(c3) + 641: 6(float) Load 371(lod) + 642: 7(fvec4) ImageSampleExplicitLod 639 640 Lod ConstOffset 641 452 + 643: 7(fvec4) Load 596(texel) + 644: 7(fvec4) FAdd 643 642 + Store 596(texel) 644 + 645: 233 Load 235(s1DArrayShadow) + 646: 148(fvec3) Load 150(c3) + 647: 6(float) Load 371(lod) + 648: 6(float) CompositeExtract 646 2 + 649: 6(float) ImageSampleDrefExplicitLod 645 646 648 Lod ConstOffset 647 445 + 650: 174(ptr) AccessChain 596(texel) 173 + 651: 6(float) Load 650 + 652: 6(float) FAdd 651 649 + 653: 174(ptr) AccessChain 596(texel) 173 + Store 653 652 + 654: 7(fvec4) Load 596(texel) + ReturnValue 654 + FunctionEnd +21(testTextureProjLodOffset(): 7(fvec4) Function None 8 + 22: Label + 657(texel): 63(ptr) Variable Function + Store 657(texel) 120 + 658: 122 Load 124(s1D) + 659: 52(fvec2) Load 138(c2) + 660: 6(float) Load 371(lod) + 661: 7(fvec4) ImageSampleProjExplicitLod 658 659 Lod ConstOffset 660 445 + 662: 7(fvec4) Load 657(texel) + 663: 7(fvec4) FAdd 662 661 + Store 657(texel) 663 + 664: 122 Load 124(s1D) + 665: 7(fvec4) Load 197(c4) + 666: 6(float) Load 371(lod) + 667: 6(float) CompositeExtract 665 3 + 668: 7(fvec4) CompositeInsert 667 665 1 + 669: 7(fvec4) ImageSampleProjExplicitLod 664 668 Lod ConstOffset 666 445 + 670: 7(fvec4) Load 657(texel) + 671: 7(fvec4) FAdd 670 669 + Store 657(texel) 671 + 672: 133 Load 135(s2D) + 673: 148(fvec3) Load 150(c3) + 674: 6(float) Load 371(lod) + 675: 7(fvec4) ImageSampleProjExplicitLod 672 673 Lod ConstOffset 674 452 + 676: 7(fvec4) Load 657(texel) + 677: 7(fvec4) FAdd 676 675 + Store 657(texel) 677 + 678: 133 Load 135(s2D) + 679: 7(fvec4) Load 197(c4) + 680: 6(float) Load 371(lod) + 681: 6(float) CompositeExtract 679 3 + 682: 7(fvec4) CompositeInsert 681 679 2 + 683: 7(fvec4) ImageSampleProjExplicitLod 678 682 Lod ConstOffset 680 452 + 684: 7(fvec4) Load 657(texel) + 685: 7(fvec4) FAdd 684 683 + Store 657(texel) 685 + 686: 144 Load 146(s3D) + 687: 7(fvec4) Load 197(c4) + 688: 6(float) Load 371(lod) + 689: 7(fvec4) ImageSampleProjExplicitLod 686 687 Lod ConstOffset 688 459 + 690: 7(fvec4) Load 657(texel) + 691: 7(fvec4) FAdd 690 689 + Store 657(texel) 691 + 692: 165 Load 167(s1DShadow) + 693: 7(fvec4) Load 197(c4) + 694: 6(float) Load 371(lod) + 695: 6(float) CompositeExtract 693 2 + 696: 6(float) CompositeExtract 693 3 + 697: 7(fvec4) CompositeInsert 696 693 1 + 698: 6(float) ImageSampleProjDrefExplicitLod 692 697 695 Lod ConstOffset 694 445 + 699: 174(ptr) AccessChain 657(texel) 173 + 700: 6(float) Load 699 + 701: 6(float) FAdd 700 698 + 702: 174(ptr) AccessChain 657(texel) 173 + Store 702 701 + 703: 180 Load 182(s2DShadow) + 704: 7(fvec4) Load 197(c4) + 705: 6(float) Load 371(lod) + 706: 6(float) CompositeExtract 704 2 + 707: 6(float) CompositeExtract 704 3 + 708: 7(fvec4) CompositeInsert 707 704 2 + 709: 6(float) ImageSampleProjDrefExplicitLod 703 708 706 Lod ConstOffset 705 452 + 710: 174(ptr) AccessChain 657(texel) 173 + 711: 6(float) Load 710 + 712: 6(float) FAdd 711 709 + 713: 174(ptr) AccessChain 657(texel) 173 + Store 713 712 + 714: 7(fvec4) Load 657(texel) + ReturnValue 714 + FunctionEnd +23(testTexelFetch(): 7(fvec4) Function None 8 + 24: Label + 717(texel): 63(ptr) Variable Function + Store 717(texel) 120 + 718: 122 Load 124(s1D) + 719: 6(float) Load 127(c1) + 720: 47(int) ConvertFToS 719 + 721: 6(float) Load 371(lod) + 722: 47(int) ConvertFToS 721 + 723: 121 Image 718 + 724: 7(fvec4) ImageFetch 723 720 Lod 722 + 725: 7(fvec4) Load 717(texel) + 726: 7(fvec4) FAdd 725 724 + Store 717(texel) 726 + 727: 133 Load 135(s2D) + 728: 52(fvec2) Load 138(c2) + 729: 451(ivec2) ConvertFToS 728 + 730: 6(float) Load 371(lod) + 731: 47(int) ConvertFToS 730 + 732: 132 Image 727 + 733: 7(fvec4) ImageFetch 732 729 Lod 731 + 734: 7(fvec4) Load 717(texel) + 735: 7(fvec4) FAdd 734 733 + Store 717(texel) 735 + 736: 144 Load 146(s3D) + 737: 148(fvec3) Load 150(c3) + 738: 458(ivec3) ConvertFToS 737 + 739: 6(float) Load 371(lod) + 740: 47(int) ConvertFToS 739 + 741: 143 Image 736 + 742: 7(fvec4) ImageFetch 741 738 Lod 740 + 743: 7(fvec4) Load 717(texel) + 744: 7(fvec4) FAdd 743 742 + Store 717(texel) 744 + 745: 257 Load 259(s2DRect) + 746: 52(fvec2) Load 138(c2) + 747: 451(ivec2) ConvertFToS 746 + 748: 256 Image 745 + 749: 7(fvec4) ImageFetch 748 747 + 750: 7(fvec4) Load 717(texel) + 751: 7(fvec4) FAdd 750 749 + Store 717(texel) 751 + 752: 206 Load 208(s1DArray) + 753: 52(fvec2) Load 138(c2) + 754: 451(ivec2) ConvertFToS 753 + 755: 6(float) Load 371(lod) + 756: 47(int) ConvertFToS 755 + 757: 205 Image 752 + 758: 7(fvec4) ImageFetch 757 754 Lod 756 + 759: 7(fvec4) Load 717(texel) + 760: 7(fvec4) FAdd 759 758 + Store 717(texel) 760 + 761: 215 Load 217(s2DArray) + 762: 148(fvec3) Load 150(c3) + 763: 458(ivec3) ConvertFToS 762 + 764: 6(float) Load 371(lod) + 765: 47(int) ConvertFToS 764 + 766: 214 Image 761 + 767: 7(fvec4) ImageFetch 766 763 Lod 765 + 768: 7(fvec4) Load 717(texel) + 769: 7(fvec4) FAdd 768 767 + Store 717(texel) 769 + 774: 771 Load 773(sBuffer) + 775: 6(float) Load 127(c1) + 776: 47(int) ConvertFToS 775 + 777: 770 Image 774 + 778: 7(fvec4) ImageFetch 777 776 + 779: 7(fvec4) Load 717(texel) + 780: 7(fvec4) FAdd 779 778 + Store 717(texel) 780 + 785: 782 Load 784(s2DMS) + 786: 52(fvec2) Load 138(c2) + 787: 451(ivec2) ConvertFToS 786 + 788: 781 Image 785 + 789: 7(fvec4) ImageFetch 788 787 Sample 445 + 790: 7(fvec4) Load 717(texel) + 791: 7(fvec4) FAdd 790 789 + Store 717(texel) 791 + 796: 793 Load 795(s2DMSArray) + 797: 148(fvec3) Load 150(c3) + 798: 458(ivec3) ConvertFToS 797 + 800: 792 Image 796 + 801: 7(fvec4) ImageFetch 800 798 Sample 799 + 802: 7(fvec4) Load 717(texel) + 803: 7(fvec4) FAdd 802 801 + Store 717(texel) 803 + 804: 7(fvec4) Load 717(texel) + ReturnValue 804 + FunctionEnd +25(testTexelFetchOffset(): 7(fvec4) Function None 8 + 26: Label + 807(texel): 63(ptr) Variable Function + Store 807(texel) 120 + 808: 122 Load 124(s1D) + 809: 6(float) Load 127(c1) + 810: 47(int) ConvertFToS 809 + 811: 6(float) Load 371(lod) + 812: 47(int) ConvertFToS 811 + 813: 121 Image 808 + 814: 7(fvec4) ImageFetch 813 810 Lod ConstOffset 812 445 + 815: 7(fvec4) Load 807(texel) + 816: 7(fvec4) FAdd 815 814 + Store 807(texel) 816 + 817: 133 Load 135(s2D) + 818: 52(fvec2) Load 138(c2) + 819: 451(ivec2) ConvertFToS 818 + 820: 6(float) Load 371(lod) + 821: 47(int) ConvertFToS 820 + 822: 132 Image 817 + 823: 7(fvec4) ImageFetch 822 819 Lod ConstOffset 821 452 + 824: 7(fvec4) Load 807(texel) + 825: 7(fvec4) FAdd 824 823 + Store 807(texel) 825 + 826: 144 Load 146(s3D) + 827: 148(fvec3) Load 150(c3) + 828: 458(ivec3) ConvertFToS 827 + 829: 6(float) Load 371(lod) + 830: 47(int) ConvertFToS 829 + 831: 143 Image 826 + 832: 7(fvec4) ImageFetch 831 828 Lod ConstOffset 830 459 + 833: 7(fvec4) Load 807(texel) + 834: 7(fvec4) FAdd 833 832 + Store 807(texel) 834 + 835: 257 Load 259(s2DRect) + 836: 52(fvec2) Load 138(c2) + 837: 451(ivec2) ConvertFToS 836 + 838: 256 Image 835 + 839: 7(fvec4) ImageFetch 838 837 ConstOffset 452 + 840: 7(fvec4) Load 807(texel) + 841: 7(fvec4) FAdd 840 839 + Store 807(texel) 841 + 842: 206 Load 208(s1DArray) + 843: 52(fvec2) Load 138(c2) + 844: 451(ivec2) ConvertFToS 843 + 845: 6(float) Load 371(lod) + 846: 47(int) ConvertFToS 845 + 847: 205 Image 842 + 848: 7(fvec4) ImageFetch 847 844 Lod ConstOffset 846 445 + 849: 7(fvec4) Load 807(texel) + 850: 7(fvec4) FAdd 849 848 + Store 807(texel) 850 + 851: 215 Load 217(s2DArray) + 852: 148(fvec3) Load 150(c3) + 853: 458(ivec3) ConvertFToS 852 + 854: 6(float) Load 371(lod) + 855: 47(int) ConvertFToS 854 + 856: 214 Image 851 + 857: 7(fvec4) ImageFetch 856 853 Lod ConstOffset 855 452 + 858: 7(fvec4) Load 807(texel) + 859: 7(fvec4) FAdd 858 857 + Store 807(texel) 859 + 860: 7(fvec4) Load 807(texel) + ReturnValue 860 + FunctionEnd +27(testTextureGrad(): 7(fvec4) Function None 8 + 28: Label + 863(texel): 63(ptr) Variable Function + Store 863(texel) 120 + 864: 122 Load 124(s1D) + 865: 6(float) Load 127(c1) + 867: 6(float) Load 866(dPdxy1) + 868: 6(float) Load 866(dPdxy1) + 869: 7(fvec4) ImageSampleExplicitLod 864 865 Grad 867 868 + 870: 7(fvec4) Load 863(texel) + 871: 7(fvec4) FAdd 870 869 + Store 863(texel) 871 + 872: 133 Load 135(s2D) + 873: 52(fvec2) Load 138(c2) + 875: 52(fvec2) Load 874(dPdxy2) + 876: 52(fvec2) Load 874(dPdxy2) + 877: 7(fvec4) ImageSampleExplicitLod 872 873 Grad 875 876 + 878: 7(fvec4) Load 863(texel) + 879: 7(fvec4) FAdd 878 877 + Store 863(texel) 879 + 880: 144 Load 146(s3D) + 881: 148(fvec3) Load 150(c3) + 883: 148(fvec3) Load 882(dPdxy3) + 884: 148(fvec3) Load 882(dPdxy3) + 885: 7(fvec4) ImageSampleExplicitLod 880 881 Grad 883 884 + 886: 7(fvec4) Load 863(texel) + 887: 7(fvec4) FAdd 886 885 + Store 863(texel) 887 + 888: 156 Load 158(sCube) + 889: 148(fvec3) Load 150(c3) + 890: 148(fvec3) Load 882(dPdxy3) + 891: 148(fvec3) Load 882(dPdxy3) + 892: 7(fvec4) ImageSampleExplicitLod 888 889 Grad 890 891 + 893: 7(fvec4) Load 863(texel) + 894: 7(fvec4) FAdd 893 892 + Store 863(texel) 894 + 895: 257 Load 259(s2DRect) + 896: 52(fvec2) Load 138(c2) + 897: 52(fvec2) Load 874(dPdxy2) + 898: 52(fvec2) Load 874(dPdxy2) + 899: 7(fvec4) ImageSampleExplicitLod 895 896 Grad 897 898 + 900: 7(fvec4) Load 863(texel) + 901: 7(fvec4) FAdd 900 899 + Store 863(texel) 901 + 902: 266 Load 268(s2DRectShadow) + 903: 148(fvec3) Load 150(c3) + 904: 52(fvec2) Load 874(dPdxy2) + 905: 52(fvec2) Load 874(dPdxy2) + 906: 6(float) CompositeExtract 903 2 + 907: 6(float) ImageSampleDrefExplicitLod 902 903 906 Grad 904 905 + 908: 174(ptr) AccessChain 863(texel) 173 + 909: 6(float) Load 908 + 910: 6(float) FAdd 909 907 + 911: 174(ptr) AccessChain 863(texel) 173 + Store 911 910 + 912: 165 Load 167(s1DShadow) + 913: 148(fvec3) Load 150(c3) + 914: 6(float) Load 866(dPdxy1) + 915: 6(float) Load 866(dPdxy1) + 916: 6(float) CompositeExtract 913 2 + 917: 6(float) ImageSampleDrefExplicitLod 912 913 916 Grad 914 915 + 918: 174(ptr) AccessChain 863(texel) 173 + 919: 6(float) Load 918 + 920: 6(float) FAdd 919 917 + 921: 174(ptr) AccessChain 863(texel) 173 + Store 921 920 + 922: 180 Load 182(s2DShadow) + 923: 148(fvec3) Load 150(c3) + 924: 52(fvec2) Load 874(dPdxy2) + 925: 52(fvec2) Load 874(dPdxy2) + 926: 6(float) CompositeExtract 923 2 + 927: 6(float) ImageSampleDrefExplicitLod 922 923 926 Grad 924 925 + 928: 174(ptr) AccessChain 863(texel) 173 + 929: 6(float) Load 928 + 930: 6(float) FAdd 929 927 + 931: 174(ptr) AccessChain 863(texel) 173 + Store 931 930 + 932: 192 Load 194(sCubeShadow) + 933: 7(fvec4) Load 197(c4) + 934: 148(fvec3) Load 882(dPdxy3) + 935: 148(fvec3) Load 882(dPdxy3) + 936: 6(float) CompositeExtract 933 3 + 937: 6(float) ImageSampleDrefExplicitLod 932 933 936 Grad 934 935 + 938: 174(ptr) AccessChain 863(texel) 173 + 939: 6(float) Load 938 + 940: 6(float) FAdd 939 937 + 941: 174(ptr) AccessChain 863(texel) 173 + Store 941 940 + 942: 206 Load 208(s1DArray) + 943: 52(fvec2) Load 138(c2) + 944: 6(float) Load 866(dPdxy1) + 945: 6(float) Load 866(dPdxy1) + 946: 7(fvec4) ImageSampleExplicitLod 942 943 Grad 944 945 + 947: 7(fvec4) Load 863(texel) + 948: 7(fvec4) FAdd 947 946 + Store 863(texel) 948 + 949: 215 Load 217(s2DArray) + 950: 148(fvec3) Load 150(c3) + 951: 52(fvec2) Load 874(dPdxy2) + 952: 52(fvec2) Load 874(dPdxy2) + 953: 7(fvec4) ImageSampleExplicitLod 949 950 Grad 951 952 + 954: 7(fvec4) Load 863(texel) + 955: 7(fvec4) FAdd 954 953 + Store 863(texel) 955 + 956: 233 Load 235(s1DArrayShadow) + 957: 148(fvec3) Load 150(c3) + 958: 6(float) Load 866(dPdxy1) + 959: 6(float) Load 866(dPdxy1) + 960: 6(float) CompositeExtract 957 2 + 961: 6(float) ImageSampleDrefExplicitLod 956 957 960 Grad 958 959 + 962: 174(ptr) AccessChain 863(texel) 173 + 963: 6(float) Load 962 + 964: 6(float) FAdd 963 961 + 965: 174(ptr) AccessChain 863(texel) 173 + Store 965 964 + 966: 245 Load 247(s2DArrayShadow) + 967: 7(fvec4) Load 197(c4) + 968: 52(fvec2) Load 874(dPdxy2) + 969: 52(fvec2) Load 874(dPdxy2) + 970: 6(float) CompositeExtract 967 3 + 971: 6(float) ImageSampleDrefExplicitLod 966 967 970 Grad 968 969 + 972: 174(ptr) AccessChain 863(texel) 173 + 973: 6(float) Load 972 + 974: 6(float) FAdd 973 971 + 975: 174(ptr) AccessChain 863(texel) 173 + Store 975 974 + 976: 224 Load 226(sCubeArray) + 977: 7(fvec4) Load 197(c4) + 978: 148(fvec3) Load 882(dPdxy3) + 979: 148(fvec3) Load 882(dPdxy3) + 980: 7(fvec4) ImageSampleExplicitLod 976 977 Grad 978 979 + 981: 7(fvec4) Load 863(texel) + 982: 7(fvec4) FAdd 981 980 + Store 863(texel) 982 + 983: 7(fvec4) Load 863(texel) + ReturnValue 983 + FunctionEnd +29(testTextureGradOffset(): 7(fvec4) Function None 8 + 30: Label + 986(texel): 63(ptr) Variable Function + Store 986(texel) 120 + 987: 122 Load 124(s1D) + 988: 6(float) Load 127(c1) + 989: 6(float) Load 866(dPdxy1) + 990: 6(float) Load 866(dPdxy1) + 991: 7(fvec4) ImageSampleExplicitLod 987 988 Grad ConstOffset 989 990 445 + 992: 7(fvec4) Load 986(texel) + 993: 7(fvec4) FAdd 992 991 + Store 986(texel) 993 + 994: 133 Load 135(s2D) + 995: 52(fvec2) Load 138(c2) + 996: 52(fvec2) Load 874(dPdxy2) + 997: 52(fvec2) Load 874(dPdxy2) + 998: 7(fvec4) ImageSampleExplicitLod 994 995 Grad ConstOffset 996 997 452 + 999: 7(fvec4) Load 986(texel) + 1000: 7(fvec4) FAdd 999 998 + Store 986(texel) 1000 + 1001: 144 Load 146(s3D) + 1002: 148(fvec3) Load 150(c3) + 1003: 148(fvec3) Load 882(dPdxy3) + 1004: 148(fvec3) Load 882(dPdxy3) + 1005: 7(fvec4) ImageSampleExplicitLod 1001 1002 Grad ConstOffset 1003 1004 459 + 1006: 7(fvec4) Load 986(texel) + 1007: 7(fvec4) FAdd 1006 1005 + Store 986(texel) 1007 + 1008: 257 Load 259(s2DRect) + 1009: 52(fvec2) Load 138(c2) + 1010: 52(fvec2) Load 874(dPdxy2) + 1011: 52(fvec2) Load 874(dPdxy2) + 1012: 7(fvec4) ImageSampleExplicitLod 1008 1009 Grad ConstOffset 1010 1011 452 + 1013: 7(fvec4) Load 986(texel) + 1014: 7(fvec4) FAdd 1013 1012 + Store 986(texel) 1014 + 1015: 266 Load 268(s2DRectShadow) + 1016: 148(fvec3) Load 150(c3) + 1017: 52(fvec2) Load 874(dPdxy2) + 1018: 52(fvec2) Load 874(dPdxy2) + 1019: 6(float) CompositeExtract 1016 2 + 1020: 6(float) ImageSampleDrefExplicitLod 1015 1016 1019 Grad ConstOffset 1017 1018 452 + 1021: 174(ptr) AccessChain 986(texel) 173 + 1022: 6(float) Load 1021 + 1023: 6(float) FAdd 1022 1020 + 1024: 174(ptr) AccessChain 986(texel) 173 + Store 1024 1023 + 1025: 165 Load 167(s1DShadow) + 1026: 148(fvec3) Load 150(c3) + 1027: 6(float) Load 866(dPdxy1) + 1028: 6(float) Load 866(dPdxy1) + 1029: 6(float) CompositeExtract 1026 2 + 1030: 6(float) ImageSampleDrefExplicitLod 1025 1026 1029 Grad ConstOffset 1027 1028 445 + 1031: 174(ptr) AccessChain 986(texel) 173 + 1032: 6(float) Load 1031 + 1033: 6(float) FAdd 1032 1030 + 1034: 174(ptr) AccessChain 986(texel) 173 + Store 1034 1033 + 1035: 180 Load 182(s2DShadow) + 1036: 148(fvec3) Load 150(c3) + 1037: 52(fvec2) Load 874(dPdxy2) + 1038: 52(fvec2) Load 874(dPdxy2) + 1039: 6(float) CompositeExtract 1036 2 + 1040: 6(float) ImageSampleDrefExplicitLod 1035 1036 1039 Grad ConstOffset 1037 1038 452 + 1041: 174(ptr) AccessChain 986(texel) 173 + 1042: 6(float) Load 1041 + 1043: 6(float) FAdd 1042 1040 + 1044: 174(ptr) AccessChain 986(texel) 173 + Store 1044 1043 + 1045: 206 Load 208(s1DArray) + 1046: 52(fvec2) Load 138(c2) + 1047: 6(float) Load 866(dPdxy1) + 1048: 6(float) Load 866(dPdxy1) + 1049: 7(fvec4) ImageSampleExplicitLod 1045 1046 Grad ConstOffset 1047 1048 445 + 1050: 7(fvec4) Load 986(texel) + 1051: 7(fvec4) FAdd 1050 1049 + Store 986(texel) 1051 + 1052: 215 Load 217(s2DArray) + 1053: 148(fvec3) Load 150(c3) + 1054: 52(fvec2) Load 874(dPdxy2) + 1055: 52(fvec2) Load 874(dPdxy2) + 1056: 7(fvec4) ImageSampleExplicitLod 1052 1053 Grad ConstOffset 1054 1055 452 + 1057: 7(fvec4) Load 986(texel) + 1058: 7(fvec4) FAdd 1057 1056 + Store 986(texel) 1058 + 1059: 233 Load 235(s1DArrayShadow) + 1060: 148(fvec3) Load 150(c3) + 1061: 6(float) Load 866(dPdxy1) + 1062: 6(float) Load 866(dPdxy1) + 1063: 6(float) CompositeExtract 1060 2 + 1064: 6(float) ImageSampleDrefExplicitLod 1059 1060 1063 Grad ConstOffset 1061 1062 445 + 1065: 174(ptr) AccessChain 986(texel) 173 + 1066: 6(float) Load 1065 + 1067: 6(float) FAdd 1066 1064 + 1068: 174(ptr) AccessChain 986(texel) 173 + Store 1068 1067 + 1069: 245 Load 247(s2DArrayShadow) + 1070: 7(fvec4) Load 197(c4) + 1071: 52(fvec2) Load 874(dPdxy2) + 1072: 52(fvec2) Load 874(dPdxy2) + 1073: 6(float) CompositeExtract 1070 3 + 1074: 6(float) ImageSampleDrefExplicitLod 1069 1070 1073 Grad ConstOffset 1071 1072 452 + 1075: 174(ptr) AccessChain 986(texel) 173 + 1076: 6(float) Load 1075 + 1077: 6(float) FAdd 1076 1074 + 1078: 174(ptr) AccessChain 986(texel) 173 + Store 1078 1077 + 1079: 7(fvec4) Load 986(texel) + ReturnValue 1079 + FunctionEnd +31(testTextureProjGrad(): 7(fvec4) Function None 8 + 32: Label + 1082(texel): 63(ptr) Variable Function + Store 1082(texel) 120 + 1083: 122 Load 124(s1D) + 1084: 52(fvec2) Load 138(c2) + 1085: 6(float) Load 866(dPdxy1) + 1086: 6(float) Load 866(dPdxy1) + 1087: 7(fvec4) ImageSampleProjExplicitLod 1083 1084 Grad 1085 1086 + 1088: 7(fvec4) Load 1082(texel) + 1089: 7(fvec4) FAdd 1088 1087 + Store 1082(texel) 1089 + 1090: 122 Load 124(s1D) + 1091: 7(fvec4) Load 197(c4) + 1092: 6(float) Load 866(dPdxy1) + 1093: 6(float) Load 866(dPdxy1) + 1094: 6(float) CompositeExtract 1091 3 + 1095: 7(fvec4) CompositeInsert 1094 1091 1 + 1096: 7(fvec4) ImageSampleProjExplicitLod 1090 1095 Grad 1092 1093 + 1097: 7(fvec4) Load 1082(texel) + 1098: 7(fvec4) FAdd 1097 1096 + Store 1082(texel) 1098 + 1099: 133 Load 135(s2D) + 1100: 148(fvec3) Load 150(c3) + 1101: 52(fvec2) Load 874(dPdxy2) + 1102: 52(fvec2) Load 874(dPdxy2) + 1103: 7(fvec4) ImageSampleProjExplicitLod 1099 1100 Grad 1101 1102 + 1104: 7(fvec4) Load 1082(texel) + 1105: 7(fvec4) FAdd 1104 1103 + Store 1082(texel) 1105 + 1106: 133 Load 135(s2D) + 1107: 7(fvec4) Load 197(c4) + 1108: 52(fvec2) Load 874(dPdxy2) + 1109: 52(fvec2) Load 874(dPdxy2) + 1110: 6(float) CompositeExtract 1107 3 + 1111: 7(fvec4) CompositeInsert 1110 1107 2 + 1112: 7(fvec4) ImageSampleProjExplicitLod 1106 1111 Grad 1108 1109 + 1113: 7(fvec4) Load 1082(texel) + 1114: 7(fvec4) FAdd 1113 1112 + Store 1082(texel) 1114 + 1115: 144 Load 146(s3D) + 1116: 7(fvec4) Load 197(c4) + 1117: 148(fvec3) Load 882(dPdxy3) + 1118: 148(fvec3) Load 882(dPdxy3) + 1119: 7(fvec4) ImageSampleProjExplicitLod 1115 1116 Grad 1117 1118 + 1120: 7(fvec4) Load 1082(texel) + 1121: 7(fvec4) FAdd 1120 1119 + Store 1082(texel) 1121 + 1122: 257 Load 259(s2DRect) + 1123: 148(fvec3) Load 150(c3) + 1124: 52(fvec2) Load 874(dPdxy2) + 1125: 52(fvec2) Load 874(dPdxy2) + 1126: 7(fvec4) ImageSampleProjExplicitLod 1122 1123 Grad 1124 1125 + 1127: 7(fvec4) Load 1082(texel) + 1128: 7(fvec4) FAdd 1127 1126 + Store 1082(texel) 1128 + 1129: 257 Load 259(s2DRect) + 1130: 7(fvec4) Load 197(c4) + 1131: 52(fvec2) Load 874(dPdxy2) + 1132: 52(fvec2) Load 874(dPdxy2) + 1133: 6(float) CompositeExtract 1130 3 + 1134: 7(fvec4) CompositeInsert 1133 1130 2 + 1135: 7(fvec4) ImageSampleProjExplicitLod 1129 1134 Grad 1131 1132 + 1136: 7(fvec4) Load 1082(texel) + 1137: 7(fvec4) FAdd 1136 1135 + Store 1082(texel) 1137 + 1138: 266 Load 268(s2DRectShadow) + 1139: 7(fvec4) Load 197(c4) + 1140: 52(fvec2) Load 874(dPdxy2) + 1141: 52(fvec2) Load 874(dPdxy2) + 1142: 6(float) CompositeExtract 1139 2 + 1143: 6(float) CompositeExtract 1139 3 + 1144: 7(fvec4) CompositeInsert 1143 1139 2 + 1145: 6(float) ImageSampleProjDrefExplicitLod 1138 1144 1142 Grad 1140 1141 + 1146: 174(ptr) AccessChain 1082(texel) 173 + 1147: 6(float) Load 1146 + 1148: 6(float) FAdd 1147 1145 + 1149: 174(ptr) AccessChain 1082(texel) 173 + Store 1149 1148 + 1150: 165 Load 167(s1DShadow) + 1151: 7(fvec4) Load 197(c4) + 1152: 6(float) Load 866(dPdxy1) + 1153: 6(float) Load 866(dPdxy1) + 1154: 6(float) CompositeExtract 1151 2 + 1155: 6(float) CompositeExtract 1151 3 + 1156: 7(fvec4) CompositeInsert 1155 1151 1 + 1157: 6(float) ImageSampleProjDrefExplicitLod 1150 1156 1154 Grad 1152 1153 + 1158: 174(ptr) AccessChain 1082(texel) 173 + 1159: 6(float) Load 1158 + 1160: 6(float) FAdd 1159 1157 + 1161: 174(ptr) AccessChain 1082(texel) 173 + Store 1161 1160 + 1162: 180 Load 182(s2DShadow) + 1163: 7(fvec4) Load 197(c4) + 1164: 52(fvec2) Load 874(dPdxy2) + 1165: 52(fvec2) Load 874(dPdxy2) + 1166: 6(float) CompositeExtract 1163 2 + 1167: 6(float) CompositeExtract 1163 3 + 1168: 7(fvec4) CompositeInsert 1167 1163 2 + 1169: 6(float) ImageSampleProjDrefExplicitLod 1162 1168 1166 Grad 1164 1165 + 1170: 174(ptr) AccessChain 1082(texel) 173 + 1171: 6(float) Load 1170 + 1172: 6(float) FAdd 1171 1169 + 1173: 174(ptr) AccessChain 1082(texel) 173 + Store 1173 1172 + 1174: 7(fvec4) Load 1082(texel) + ReturnValue 1174 + FunctionEnd +33(testTextureProjGradoffset(): 7(fvec4) Function None 8 + 34: Label + 1177(texel): 63(ptr) Variable Function + Store 1177(texel) 120 + 1178: 122 Load 124(s1D) + 1179: 52(fvec2) Load 138(c2) + 1180: 6(float) Load 866(dPdxy1) + 1181: 6(float) Load 866(dPdxy1) + 1182: 7(fvec4) ImageSampleProjExplicitLod 1178 1179 Grad ConstOffset 1180 1181 445 + 1183: 7(fvec4) Load 1177(texel) + 1184: 7(fvec4) FAdd 1183 1182 + Store 1177(texel) 1184 + 1185: 122 Load 124(s1D) + 1186: 7(fvec4) Load 197(c4) + 1187: 6(float) Load 866(dPdxy1) + 1188: 6(float) Load 866(dPdxy1) + 1189: 6(float) CompositeExtract 1186 3 + 1190: 7(fvec4) CompositeInsert 1189 1186 1 + 1191: 7(fvec4) ImageSampleProjExplicitLod 1185 1190 Grad ConstOffset 1187 1188 445 + 1192: 7(fvec4) Load 1177(texel) + 1193: 7(fvec4) FAdd 1192 1191 + Store 1177(texel) 1193 + 1194: 133 Load 135(s2D) + 1195: 148(fvec3) Load 150(c3) + 1196: 52(fvec2) Load 874(dPdxy2) + 1197: 52(fvec2) Load 874(dPdxy2) + 1198: 7(fvec4) ImageSampleProjExplicitLod 1194 1195 Grad ConstOffset 1196 1197 452 + 1199: 7(fvec4) Load 1177(texel) + 1200: 7(fvec4) FAdd 1199 1198 + Store 1177(texel) 1200 + 1201: 133 Load 135(s2D) + 1202: 7(fvec4) Load 197(c4) + 1203: 52(fvec2) Load 874(dPdxy2) + 1204: 52(fvec2) Load 874(dPdxy2) + 1205: 6(float) CompositeExtract 1202 3 + 1206: 7(fvec4) CompositeInsert 1205 1202 2 + 1207: 7(fvec4) ImageSampleProjExplicitLod 1201 1206 Grad ConstOffset 1203 1204 452 + 1208: 7(fvec4) Load 1177(texel) + 1209: 7(fvec4) FAdd 1208 1207 + Store 1177(texel) 1209 + 1210: 257 Load 259(s2DRect) + 1211: 148(fvec3) Load 150(c3) + 1212: 52(fvec2) Load 874(dPdxy2) + 1213: 52(fvec2) Load 874(dPdxy2) + 1214: 7(fvec4) ImageSampleProjExplicitLod 1210 1211 Grad ConstOffset 1212 1213 452 + 1215: 7(fvec4) Load 1177(texel) + 1216: 7(fvec4) FAdd 1215 1214 + Store 1177(texel) 1216 + 1217: 257 Load 259(s2DRect) + 1218: 7(fvec4) Load 197(c4) + 1219: 52(fvec2) Load 874(dPdxy2) + 1220: 52(fvec2) Load 874(dPdxy2) + 1221: 6(float) CompositeExtract 1218 3 + 1222: 7(fvec4) CompositeInsert 1221 1218 2 + 1223: 7(fvec4) ImageSampleProjExplicitLod 1217 1222 Grad ConstOffset 1219 1220 452 + 1224: 7(fvec4) Load 1177(texel) + 1225: 7(fvec4) FAdd 1224 1223 + Store 1177(texel) 1225 + 1226: 266 Load 268(s2DRectShadow) + 1227: 7(fvec4) Load 197(c4) + 1228: 52(fvec2) Load 874(dPdxy2) + 1229: 52(fvec2) Load 874(dPdxy2) + 1230: 6(float) CompositeExtract 1227 2 + 1231: 6(float) CompositeExtract 1227 3 + 1232: 7(fvec4) CompositeInsert 1231 1227 2 + 1233: 6(float) ImageSampleProjDrefExplicitLod 1226 1232 1230 Grad ConstOffset 1228 1229 452 + 1234: 174(ptr) AccessChain 1177(texel) 173 + 1235: 6(float) Load 1234 + 1236: 6(float) FAdd 1235 1233 + 1237: 174(ptr) AccessChain 1177(texel) 173 + Store 1237 1236 + 1238: 144 Load 146(s3D) + 1239: 7(fvec4) Load 197(c4) + 1240: 148(fvec3) Load 882(dPdxy3) + 1241: 148(fvec3) Load 882(dPdxy3) + 1242: 7(fvec4) ImageSampleProjExplicitLod 1238 1239 Grad ConstOffset 1240 1241 459 + 1243: 7(fvec4) Load 1177(texel) + 1244: 7(fvec4) FAdd 1243 1242 + Store 1177(texel) 1244 + 1245: 165 Load 167(s1DShadow) + 1246: 7(fvec4) Load 197(c4) + 1247: 6(float) Load 866(dPdxy1) + 1248: 6(float) Load 866(dPdxy1) + 1249: 6(float) CompositeExtract 1246 2 + 1250: 6(float) CompositeExtract 1246 3 + 1251: 7(fvec4) CompositeInsert 1250 1246 1 + 1252: 6(float) ImageSampleProjDrefExplicitLod 1245 1251 1249 Grad ConstOffset 1247 1248 445 + 1253: 174(ptr) AccessChain 1177(texel) 173 + 1254: 6(float) Load 1253 + 1255: 6(float) FAdd 1254 1252 + 1256: 174(ptr) AccessChain 1177(texel) 173 + Store 1256 1255 + 1257: 180 Load 182(s2DShadow) + 1258: 7(fvec4) Load 197(c4) + 1259: 52(fvec2) Load 874(dPdxy2) + 1260: 52(fvec2) Load 874(dPdxy2) + 1261: 6(float) CompositeExtract 1258 2 + 1262: 6(float) CompositeExtract 1258 3 + 1263: 7(fvec4) CompositeInsert 1262 1258 2 + 1264: 6(float) ImageSampleProjDrefExplicitLod 1257 1263 1261 Grad ConstOffset 1259 1260 452 + 1265: 174(ptr) AccessChain 1177(texel) 173 + 1266: 6(float) Load 1265 + 1267: 6(float) FAdd 1266 1264 + 1268: 174(ptr) AccessChain 1177(texel) 173 + Store 1268 1267 + 1269: 7(fvec4) Load 1177(texel) + ReturnValue 1269 + FunctionEnd +35(testTextureGather(): 7(fvec4) Function None 8 + 36: Label + 1272(texel): 63(ptr) Variable Function + Store 1272(texel) 120 + 1273: 133 Load 135(s2D) + 1274: 52(fvec2) Load 138(c2) + 1276: 7(fvec4) ImageGather 1273 1274 1275 + 1277: 7(fvec4) Load 1272(texel) + 1278: 7(fvec4) FAdd 1277 1276 + Store 1272(texel) 1278 + 1279: 215 Load 217(s2DArray) + 1280: 148(fvec3) Load 150(c3) + 1281: 7(fvec4) ImageGather 1279 1280 1275 + 1282: 7(fvec4) Load 1272(texel) + 1283: 7(fvec4) FAdd 1282 1281 + Store 1272(texel) 1283 + 1284: 156 Load 158(sCube) + 1285: 148(fvec3) Load 150(c3) + 1286: 7(fvec4) ImageGather 1284 1285 1275 + 1287: 7(fvec4) Load 1272(texel) + 1288: 7(fvec4) FAdd 1287 1286 + Store 1272(texel) 1288 + 1289: 224 Load 226(sCubeArray) + 1290: 7(fvec4) Load 197(c4) + 1291: 7(fvec4) ImageGather 1289 1290 1275 + 1292: 7(fvec4) Load 1272(texel) + 1293: 7(fvec4) FAdd 1292 1291 + Store 1272(texel) 1293 + 1294: 257 Load 259(s2DRect) + 1295: 52(fvec2) Load 138(c2) + 1296: 7(fvec4) ImageGather 1294 1295 1275 + 1297: 7(fvec4) Load 1272(texel) + 1298: 7(fvec4) FAdd 1297 1296 + Store 1272(texel) 1298 + 1299: 180 Load 182(s2DShadow) + 1300: 52(fvec2) Load 138(c2) + 1301: 6(float) Load 283(compare) + 1302: 7(fvec4) ImageDrefGather 1299 1300 1301 + 1303: 7(fvec4) Load 1272(texel) + 1304: 7(fvec4) FAdd 1303 1302 + Store 1272(texel) 1304 + 1305: 245 Load 247(s2DArrayShadow) + 1306: 148(fvec3) Load 150(c3) + 1307: 6(float) Load 283(compare) + 1308: 7(fvec4) ImageDrefGather 1305 1306 1307 + 1309: 7(fvec4) Load 1272(texel) + 1310: 7(fvec4) FAdd 1309 1308 + Store 1272(texel) 1310 + 1311: 192 Load 194(sCubeShadow) + 1312: 148(fvec3) Load 150(c3) + 1313: 6(float) Load 283(compare) + 1314: 7(fvec4) ImageDrefGather 1311 1312 1313 + 1315: 7(fvec4) Load 1272(texel) + 1316: 7(fvec4) FAdd 1315 1314 + Store 1272(texel) 1316 + 1317: 278 Load 280(sCubeArrayShadow) + 1318: 7(fvec4) Load 197(c4) + 1319: 6(float) Load 283(compare) + 1320: 7(fvec4) ImageDrefGather 1317 1318 1319 + 1321: 7(fvec4) Load 1272(texel) + 1322: 7(fvec4) FAdd 1321 1320 + Store 1272(texel) 1322 + 1323: 266 Load 268(s2DRectShadow) + 1324: 52(fvec2) Load 138(c2) + 1325: 6(float) Load 283(compare) + 1326: 7(fvec4) ImageDrefGather 1323 1324 1325 + 1327: 7(fvec4) Load 1272(texel) + 1328: 7(fvec4) FAdd 1327 1326 + Store 1272(texel) 1328 + 1329: 7(fvec4) Load 1272(texel) + ReturnValue 1329 + FunctionEnd +37(testTextureGatherOffset(): 7(fvec4) Function None 8 + 38: Label + 1332(texel): 63(ptr) Variable Function + Store 1332(texel) 120 + 1333: 133 Load 135(s2D) + 1334: 52(fvec2) Load 138(c2) + 1335: 7(fvec4) ImageGather 1333 1334 1275 ConstOffset 452 + 1336: 7(fvec4) Load 1332(texel) + 1337: 7(fvec4) FAdd 1336 1335 + Store 1332(texel) 1337 + 1338: 215 Load 217(s2DArray) + 1339: 148(fvec3) Load 150(c3) + 1340: 7(fvec4) ImageGather 1338 1339 1275 ConstOffset 452 + 1341: 7(fvec4) Load 1332(texel) + 1342: 7(fvec4) FAdd 1341 1340 + Store 1332(texel) 1342 + 1343: 257 Load 259(s2DRect) + 1344: 52(fvec2) Load 138(c2) + 1345: 7(fvec4) ImageGather 1343 1344 1275 ConstOffset 452 + 1346: 7(fvec4) Load 1332(texel) + 1347: 7(fvec4) FAdd 1346 1345 + Store 1332(texel) 1347 + 1348: 180 Load 182(s2DShadow) + 1349: 52(fvec2) Load 138(c2) + 1350: 6(float) Load 283(compare) + 1351: 7(fvec4) ImageDrefGather 1348 1349 1350 ConstOffset 452 + 1352: 7(fvec4) Load 1332(texel) + 1353: 7(fvec4) FAdd 1352 1351 + Store 1332(texel) 1353 + 1354: 245 Load 247(s2DArrayShadow) + 1355: 148(fvec3) Load 150(c3) + 1356: 6(float) Load 283(compare) + 1357: 7(fvec4) ImageDrefGather 1354 1355 1356 ConstOffset 452 + 1358: 7(fvec4) Load 1332(texel) + 1359: 7(fvec4) FAdd 1358 1357 + Store 1332(texel) 1359 + 1360: 266 Load 268(s2DRectShadow) + 1361: 52(fvec2) Load 138(c2) + 1362: 6(float) Load 283(compare) + 1363: 7(fvec4) ImageDrefGather 1360 1361 1362 ConstOffset 452 + 1364: 7(fvec4) Load 1332(texel) + 1365: 7(fvec4) FAdd 1364 1363 + Store 1332(texel) 1365 + 1366: 7(fvec4) Load 1332(texel) + ReturnValue 1366 + FunctionEnd +39(testTextureGatherOffsets(): 7(fvec4) Function None 8 + 40: Label + 1369(texel): 63(ptr) Variable Function + Store 1369(texel) 120 + 1370: 133 Load 135(s2D) + 1371: 52(fvec2) Load 138(c2) + 1375: 7(fvec4) ImageGather 1370 1371 1275 ConstOffsets 1374 + 1376: 7(fvec4) Load 1369(texel) + 1377: 7(fvec4) FAdd 1376 1375 + Store 1369(texel) 1377 + 1378: 215 Load 217(s2DArray) + 1379: 148(fvec3) Load 150(c3) + 1380: 7(fvec4) ImageGather 1378 1379 1275 ConstOffsets 1374 + 1381: 7(fvec4) Load 1369(texel) + 1382: 7(fvec4) FAdd 1381 1380 + Store 1369(texel) 1382 + 1383: 257 Load 259(s2DRect) + 1384: 52(fvec2) Load 138(c2) + 1385: 7(fvec4) ImageGather 1383 1384 1275 ConstOffsets 1374 + 1386: 7(fvec4) Load 1369(texel) + 1387: 7(fvec4) FAdd 1386 1385 + Store 1369(texel) 1387 + 1388: 180 Load 182(s2DShadow) + 1389: 52(fvec2) Load 138(c2) + 1390: 6(float) Load 283(compare) + 1391: 7(fvec4) ImageDrefGather 1388 1389 1390 ConstOffsets 1374 + 1392: 7(fvec4) Load 1369(texel) + 1393: 7(fvec4) FAdd 1392 1391 + Store 1369(texel) 1393 + 1394: 245 Load 247(s2DArrayShadow) + 1395: 148(fvec3) Load 150(c3) + 1396: 6(float) Load 283(compare) + 1397: 7(fvec4) ImageDrefGather 1394 1395 1396 ConstOffsets 1374 + 1398: 7(fvec4) Load 1369(texel) + 1399: 7(fvec4) FAdd 1398 1397 + Store 1369(texel) 1399 + 1400: 266 Load 268(s2DRectShadow) + 1401: 52(fvec2) Load 138(c2) + 1402: 6(float) Load 283(compare) + 1403: 7(fvec4) ImageDrefGather 1400 1401 1402 ConstOffsets 1374 + 1404: 7(fvec4) Load 1369(texel) + 1405: 7(fvec4) FAdd 1404 1403 + Store 1369(texel) 1405 + 1406: 7(fvec4) Load 1369(texel) + ReturnValue 1406 + FunctionEnd +41(testTextureGatherLod(): 7(fvec4) Function None 8 + 42: Label + 1409(texel): 63(ptr) Variable Function + Store 1409(texel) 120 + 1410: 133 Load 135(s2D) + 1411: 52(fvec2) Load 138(c2) + 1412: 6(float) Load 371(lod) + 1413: 7(fvec4) ImageGather 1410 1411 1275 Lod 1412 + 1414: 7(fvec4) Load 1409(texel) + 1415: 7(fvec4) FAdd 1414 1413 + Store 1409(texel) 1415 + 1416: 215 Load 217(s2DArray) + 1417: 148(fvec3) Load 150(c3) + 1418: 6(float) Load 371(lod) + 1419: 7(fvec4) ImageGather 1416 1417 1275 Lod 1418 + 1420: 7(fvec4) Load 1409(texel) + 1421: 7(fvec4) FAdd 1420 1419 + Store 1409(texel) 1421 + 1422: 156 Load 158(sCube) + 1423: 148(fvec3) Load 150(c3) + 1424: 6(float) Load 371(lod) + 1425: 7(fvec4) ImageGather 1422 1423 1275 Lod 1424 + 1426: 7(fvec4) Load 1409(texel) + 1427: 7(fvec4) FAdd 1426 1425 + Store 1409(texel) 1427 + 1428: 224 Load 226(sCubeArray) + 1429: 7(fvec4) Load 197(c4) + 1430: 6(float) Load 371(lod) + 1431: 7(fvec4) ImageGather 1428 1429 1275 Lod 1430 + 1432: 7(fvec4) Load 1409(texel) + 1433: 7(fvec4) FAdd 1432 1431 + Store 1409(texel) 1433 + 1434: 7(fvec4) Load 1409(texel) + ReturnValue 1434 + FunctionEnd +43(testTextureGatherLodOffset(): 7(fvec4) Function None 8 + 44: Label + 1437(texel): 63(ptr) Variable Function + Store 1437(texel) 120 + 1438: 133 Load 135(s2D) + 1439: 52(fvec2) Load 138(c2) + 1440: 6(float) Load 371(lod) + 1441: 7(fvec4) ImageGather 1438 1439 1275 Lod ConstOffset 1440 452 + 1442: 7(fvec4) Load 1437(texel) + 1443: 7(fvec4) FAdd 1442 1441 + Store 1437(texel) 1443 + 1444: 215 Load 217(s2DArray) + 1445: 148(fvec3) Load 150(c3) + 1446: 6(float) Load 371(lod) + 1447: 7(fvec4) ImageGather 1444 1445 1275 Lod ConstOffset 1446 452 + 1448: 7(fvec4) Load 1437(texel) + 1449: 7(fvec4) FAdd 1448 1447 + Store 1437(texel) 1449 + 1450: 7(fvec4) Load 1437(texel) + ReturnValue 1450 + FunctionEnd +45(testTextureGatherLodOffsets(): 7(fvec4) Function None 8 + 46: Label + 1453(texel): 63(ptr) Variable Function + Store 1453(texel) 120 + 1454: 133 Load 135(s2D) + 1455: 52(fvec2) Load 138(c2) + 1456: 6(float) Load 371(lod) + 1457: 7(fvec4) ImageGather 1454 1455 1275 Lod ConstOffsets 1456 1374 + 1458: 7(fvec4) Load 1453(texel) + 1459: 7(fvec4) FAdd 1458 1457 + Store 1453(texel) 1459 + 1460: 215 Load 217(s2DArray) + 1461: 148(fvec3) Load 150(c3) + 1462: 6(float) Load 371(lod) + 1463: 7(fvec4) ImageGather 1460 1461 1275 Lod ConstOffsets 1462 1374 + 1464: 7(fvec4) Load 1453(texel) + 1465: 7(fvec4) FAdd 1464 1463 + Store 1453(texel) 1465 + 1466: 7(fvec4) Load 1453(texel) + ReturnValue 1466 + FunctionEnd +50(testTextureSize(): 48(ivec4) Function None 49 + 51: Label + 1470(size): 1469(ptr) Variable Function + Store 1470(size) 1471 + 1472: 122 Load 124(s1D) + 1473: 6(float) Load 371(lod) + 1474: 47(int) ConvertFToS 1473 + 1475: 121 Image 1472 + 1476: 47(int) ImageQuerySizeLod 1475 1474 + 1478: 1477(ptr) AccessChain 1470(size) 173 + 1479: 47(int) Load 1478 + 1480: 47(int) IAdd 1479 1476 + 1481: 1477(ptr) AccessChain 1470(size) 173 + Store 1481 1480 + 1482: 133 Load 135(s2D) + 1483: 6(float) Load 371(lod) + 1484: 47(int) ConvertFToS 1483 + 1485: 132 Image 1482 + 1486: 451(ivec2) ImageQuerySizeLod 1485 1484 + 1487: 48(ivec4) Load 1470(size) + 1488: 451(ivec2) VectorShuffle 1487 1487 0 1 + 1489: 451(ivec2) IAdd 1488 1486 + 1490: 1477(ptr) AccessChain 1470(size) 173 + 1491: 47(int) CompositeExtract 1489 0 + Store 1490 1491 + 1493: 1477(ptr) AccessChain 1470(size) 1492 + 1494: 47(int) CompositeExtract 1489 1 + Store 1493 1494 + 1495: 144 Load 146(s3D) + 1496: 6(float) Load 371(lod) + 1497: 47(int) ConvertFToS 1496 + 1498: 143 Image 1495 + 1499: 458(ivec3) ImageQuerySizeLod 1498 1497 + 1500: 48(ivec4) Load 1470(size) + 1501: 458(ivec3) VectorShuffle 1500 1500 0 1 2 + 1502: 458(ivec3) IAdd 1501 1499 + 1503: 1477(ptr) AccessChain 1470(size) 173 + 1504: 47(int) CompositeExtract 1502 0 + Store 1503 1504 + 1505: 1477(ptr) AccessChain 1470(size) 1492 + 1506: 47(int) CompositeExtract 1502 1 + Store 1505 1506 + 1508: 1477(ptr) AccessChain 1470(size) 1507 + 1509: 47(int) CompositeExtract 1502 2 + Store 1508 1509 + 1510: 156 Load 158(sCube) + 1511: 6(float) Load 371(lod) + 1512: 47(int) ConvertFToS 1511 + 1513: 155 Image 1510 + 1514: 451(ivec2) ImageQuerySizeLod 1513 1512 + 1515: 48(ivec4) Load 1470(size) + 1516: 451(ivec2) VectorShuffle 1515 1515 0 1 + 1517: 451(ivec2) IAdd 1516 1514 + 1518: 1477(ptr) AccessChain 1470(size) 173 + 1519: 47(int) CompositeExtract 1517 0 + Store 1518 1519 + 1520: 1477(ptr) AccessChain 1470(size) 1492 + 1521: 47(int) CompositeExtract 1517 1 + Store 1520 1521 + 1522: 165 Load 167(s1DShadow) + 1523: 6(float) Load 371(lod) + 1524: 47(int) ConvertFToS 1523 + 1525: 164 Image 1522 + 1526: 47(int) ImageQuerySizeLod 1525 1524 + 1527: 1477(ptr) AccessChain 1470(size) 173 + 1528: 47(int) Load 1527 + 1529: 47(int) IAdd 1528 1526 + 1530: 1477(ptr) AccessChain 1470(size) 173 + Store 1530 1529 + 1531: 180 Load 182(s2DShadow) + 1532: 6(float) Load 371(lod) + 1533: 47(int) ConvertFToS 1532 + 1534: 179 Image 1531 + 1535: 451(ivec2) ImageQuerySizeLod 1534 1533 + 1536: 48(ivec4) Load 1470(size) + 1537: 451(ivec2) VectorShuffle 1536 1536 0 1 + 1538: 451(ivec2) IAdd 1537 1535 + 1539: 1477(ptr) AccessChain 1470(size) 173 + 1540: 47(int) CompositeExtract 1538 0 + Store 1539 1540 + 1541: 1477(ptr) AccessChain 1470(size) 1492 + 1542: 47(int) CompositeExtract 1538 1 + Store 1541 1542 + 1543: 192 Load 194(sCubeShadow) + 1544: 6(float) Load 371(lod) + 1545: 47(int) ConvertFToS 1544 + 1546: 191 Image 1543 + 1547: 451(ivec2) ImageQuerySizeLod 1546 1545 + 1548: 48(ivec4) Load 1470(size) + 1549: 451(ivec2) VectorShuffle 1548 1548 0 1 + 1550: 451(ivec2) IAdd 1549 1547 + 1551: 1477(ptr) AccessChain 1470(size) 173 + 1552: 47(int) CompositeExtract 1550 0 + Store 1551 1552 + 1553: 1477(ptr) AccessChain 1470(size) 1492 + 1554: 47(int) CompositeExtract 1550 1 + Store 1553 1554 + 1555: 224 Load 226(sCubeArray) + 1556: 6(float) Load 371(lod) + 1557: 47(int) ConvertFToS 1556 + 1558: 223 Image 1555 + 1559: 458(ivec3) ImageQuerySizeLod 1558 1557 + 1560: 48(ivec4) Load 1470(size) + 1561: 458(ivec3) VectorShuffle 1560 1560 0 1 2 + 1562: 458(ivec3) IAdd 1561 1559 + 1563: 1477(ptr) AccessChain 1470(size) 173 + 1564: 47(int) CompositeExtract 1562 0 + Store 1563 1564 + 1565: 1477(ptr) AccessChain 1470(size) 1492 + 1566: 47(int) CompositeExtract 1562 1 + Store 1565 1566 + 1567: 1477(ptr) AccessChain 1470(size) 1507 + 1568: 47(int) CompositeExtract 1562 2 + Store 1567 1568 + 1569: 278 Load 280(sCubeArrayShadow) + 1570: 6(float) Load 371(lod) + 1571: 47(int) ConvertFToS 1570 + 1572: 277 Image 1569 + 1573: 458(ivec3) ImageQuerySizeLod 1572 1571 + 1574: 48(ivec4) Load 1470(size) + 1575: 458(ivec3) VectorShuffle 1574 1574 0 1 2 + 1576: 458(ivec3) IAdd 1575 1573 + 1577: 1477(ptr) AccessChain 1470(size) 173 + 1578: 47(int) CompositeExtract 1576 0 + Store 1577 1578 + 1579: 1477(ptr) AccessChain 1470(size) 1492 + 1580: 47(int) CompositeExtract 1576 1 + Store 1579 1580 + 1581: 1477(ptr) AccessChain 1470(size) 1507 + 1582: 47(int) CompositeExtract 1576 2 + Store 1581 1582 + 1583: 257 Load 259(s2DRect) + 1584: 256 Image 1583 + 1585: 451(ivec2) ImageQuerySize 1584 + 1586: 48(ivec4) Load 1470(size) + 1587: 451(ivec2) VectorShuffle 1586 1586 0 1 + 1588: 451(ivec2) IAdd 1587 1585 + 1589: 1477(ptr) AccessChain 1470(size) 173 + 1590: 47(int) CompositeExtract 1588 0 + Store 1589 1590 + 1591: 1477(ptr) AccessChain 1470(size) 1492 + 1592: 47(int) CompositeExtract 1588 1 + Store 1591 1592 + 1593: 266 Load 268(s2DRectShadow) + 1594: 265 Image 1593 + 1595: 451(ivec2) ImageQuerySize 1594 + 1596: 48(ivec4) Load 1470(size) + 1597: 451(ivec2) VectorShuffle 1596 1596 0 1 + 1598: 451(ivec2) IAdd 1597 1595 + 1599: 1477(ptr) AccessChain 1470(size) 173 + 1600: 47(int) CompositeExtract 1598 0 + Store 1599 1600 + 1601: 1477(ptr) AccessChain 1470(size) 1492 + 1602: 47(int) CompositeExtract 1598 1 + Store 1601 1602 + 1603: 206 Load 208(s1DArray) + 1604: 6(float) Load 371(lod) + 1605: 47(int) ConvertFToS 1604 + 1606: 205 Image 1603 + 1607: 451(ivec2) ImageQuerySizeLod 1606 1605 + 1608: 48(ivec4) Load 1470(size) + 1609: 451(ivec2) VectorShuffle 1608 1608 0 1 + 1610: 451(ivec2) IAdd 1609 1607 + 1611: 1477(ptr) AccessChain 1470(size) 173 + 1612: 47(int) CompositeExtract 1610 0 + Store 1611 1612 + 1613: 1477(ptr) AccessChain 1470(size) 1492 + 1614: 47(int) CompositeExtract 1610 1 + Store 1613 1614 + 1615: 215 Load 217(s2DArray) + 1616: 6(float) Load 371(lod) + 1617: 47(int) ConvertFToS 1616 + 1618: 214 Image 1615 + 1619: 458(ivec3) ImageQuerySizeLod 1618 1617 + 1620: 48(ivec4) Load 1470(size) + 1621: 458(ivec3) VectorShuffle 1620 1620 0 1 2 + 1622: 458(ivec3) IAdd 1621 1619 + 1623: 1477(ptr) AccessChain 1470(size) 173 + 1624: 47(int) CompositeExtract 1622 0 + Store 1623 1624 + 1625: 1477(ptr) AccessChain 1470(size) 1492 + 1626: 47(int) CompositeExtract 1622 1 + Store 1625 1626 + 1627: 1477(ptr) AccessChain 1470(size) 1507 + 1628: 47(int) CompositeExtract 1622 2 + Store 1627 1628 + 1629: 233 Load 235(s1DArrayShadow) + 1630: 6(float) Load 371(lod) + 1631: 47(int) ConvertFToS 1630 + 1632: 232 Image 1629 + 1633: 451(ivec2) ImageQuerySizeLod 1632 1631 + 1634: 48(ivec4) Load 1470(size) + 1635: 451(ivec2) VectorShuffle 1634 1634 0 1 + 1636: 451(ivec2) IAdd 1635 1633 + 1637: 1477(ptr) AccessChain 1470(size) 173 + 1638: 47(int) CompositeExtract 1636 0 + Store 1637 1638 + 1639: 1477(ptr) AccessChain 1470(size) 1492 + 1640: 47(int) CompositeExtract 1636 1 + Store 1639 1640 + 1641: 245 Load 247(s2DArrayShadow) + 1642: 6(float) Load 371(lod) + 1643: 47(int) ConvertFToS 1642 + 1644: 244 Image 1641 + 1645: 458(ivec3) ImageQuerySizeLod 1644 1643 + 1646: 48(ivec4) Load 1470(size) + 1647: 458(ivec3) VectorShuffle 1646 1646 0 1 2 + 1648: 458(ivec3) IAdd 1647 1645 + 1649: 1477(ptr) AccessChain 1470(size) 173 + 1650: 47(int) CompositeExtract 1648 0 + Store 1649 1650 + 1651: 1477(ptr) AccessChain 1470(size) 1492 + 1652: 47(int) CompositeExtract 1648 1 + Store 1651 1652 + 1653: 1477(ptr) AccessChain 1470(size) 1507 + 1654: 47(int) CompositeExtract 1648 2 + Store 1653 1654 + 1655: 771 Load 773(sBuffer) + 1656: 770 Image 1655 + 1657: 47(int) ImageQuerySize 1656 + 1658: 1477(ptr) AccessChain 1470(size) 173 + 1659: 47(int) Load 1658 + 1660: 47(int) IAdd 1659 1657 + 1661: 1477(ptr) AccessChain 1470(size) 173 + Store 1661 1660 + 1662: 782 Load 784(s2DMS) + 1663: 781 Image 1662 + 1664: 451(ivec2) ImageQuerySize 1663 + 1665: 48(ivec4) Load 1470(size) + 1666: 451(ivec2) VectorShuffle 1665 1665 0 1 + 1667: 451(ivec2) IAdd 1666 1664 + 1668: 1477(ptr) AccessChain 1470(size) 173 + 1669: 47(int) CompositeExtract 1667 0 + Store 1668 1669 + 1670: 1477(ptr) AccessChain 1470(size) 1492 + 1671: 47(int) CompositeExtract 1667 1 + Store 1670 1671 + 1672: 793 Load 795(s2DMSArray) + 1673: 792 Image 1672 + 1674: 458(ivec3) ImageQuerySize 1673 + 1675: 48(ivec4) Load 1470(size) + 1676: 458(ivec3) VectorShuffle 1675 1675 0 1 2 + 1677: 458(ivec3) IAdd 1676 1674 + 1678: 1477(ptr) AccessChain 1470(size) 173 + 1679: 47(int) CompositeExtract 1677 0 + Store 1678 1679 + 1680: 1477(ptr) AccessChain 1470(size) 1492 + 1681: 47(int) CompositeExtract 1677 1 + Store 1680 1681 + 1682: 1477(ptr) AccessChain 1470(size) 1507 + 1683: 47(int) CompositeExtract 1677 2 + Store 1682 1683 + 1684: 48(ivec4) Load 1470(size) + ReturnValue 1684 + FunctionEnd +54(testTextureQueryLod(): 52(fvec2) Function None 53 + 55: Label + 1688(lod): 1687(ptr) Variable Function + Store 1688(lod) 1689 + 1690: 122 Load 124(s1D) + 1691: 6(float) Load 127(c1) + 1692: 52(fvec2) ImageQueryLod 1690 1691 + 1693: 52(fvec2) Load 1688(lod) + 1694: 52(fvec2) FAdd 1693 1692 + Store 1688(lod) 1694 + 1695: 133 Load 135(s2D) + 1696: 52(fvec2) Load 138(c2) + 1697: 52(fvec2) ImageQueryLod 1695 1696 + 1698: 52(fvec2) Load 1688(lod) + 1699: 52(fvec2) FAdd 1698 1697 + Store 1688(lod) 1699 + 1700: 144 Load 146(s3D) + 1701: 148(fvec3) Load 150(c3) + 1702: 52(fvec2) ImageQueryLod 1700 1701 + 1703: 52(fvec2) Load 1688(lod) + 1704: 52(fvec2) FAdd 1703 1702 + Store 1688(lod) 1704 + 1705: 156 Load 158(sCube) + 1706: 148(fvec3) Load 150(c3) + 1707: 52(fvec2) ImageQueryLod 1705 1706 + 1708: 52(fvec2) Load 1688(lod) + 1709: 52(fvec2) FAdd 1708 1707 + Store 1688(lod) 1709 + 1710: 206 Load 208(s1DArray) + 1711: 6(float) Load 127(c1) + 1712: 52(fvec2) ImageQueryLod 1710 1711 + 1713: 52(fvec2) Load 1688(lod) + 1714: 52(fvec2) FAdd 1713 1712 + Store 1688(lod) 1714 + 1715: 215 Load 217(s2DArray) + 1716: 52(fvec2) Load 138(c2) + 1717: 52(fvec2) ImageQueryLod 1715 1716 + 1718: 52(fvec2) Load 1688(lod) + 1719: 52(fvec2) FAdd 1718 1717 + Store 1688(lod) 1719 + 1720: 224 Load 226(sCubeArray) + 1721: 148(fvec3) Load 150(c3) + 1722: 52(fvec2) ImageQueryLod 1720 1721 + 1723: 52(fvec2) Load 1688(lod) + 1724: 52(fvec2) FAdd 1723 1722 + Store 1688(lod) 1724 + 1725: 165 Load 167(s1DShadow) + 1726: 6(float) Load 127(c1) + 1727: 52(fvec2) ImageQueryLod 1725 1726 + 1728: 52(fvec2) Load 1688(lod) + 1729: 52(fvec2) FAdd 1728 1727 + Store 1688(lod) 1729 + 1730: 180 Load 182(s2DShadow) + 1731: 52(fvec2) Load 138(c2) + 1732: 52(fvec2) ImageQueryLod 1730 1731 + 1733: 52(fvec2) Load 1688(lod) + 1734: 52(fvec2) FAdd 1733 1732 + Store 1688(lod) 1734 + 1735: 278 Load 280(sCubeArrayShadow) + 1736: 148(fvec3) Load 150(c3) + 1737: 52(fvec2) ImageQueryLod 1735 1736 + 1738: 52(fvec2) Load 1688(lod) + 1739: 52(fvec2) FAdd 1738 1737 + Store 1688(lod) 1739 + 1740: 233 Load 235(s1DArrayShadow) + 1741: 6(float) Load 127(c1) + 1742: 52(fvec2) ImageQueryLod 1740 1741 + 1743: 52(fvec2) Load 1688(lod) + 1744: 52(fvec2) FAdd 1743 1742 + Store 1688(lod) 1744 + 1745: 245 Load 247(s2DArrayShadow) + 1746: 52(fvec2) Load 138(c2) + 1747: 52(fvec2) ImageQueryLod 1745 1746 + 1748: 52(fvec2) Load 1688(lod) + 1749: 52(fvec2) FAdd 1748 1747 + Store 1688(lod) 1749 + 1750: 278 Load 280(sCubeArrayShadow) + 1751: 148(fvec3) Load 150(c3) + 1752: 52(fvec2) ImageQueryLod 1750 1751 + 1753: 52(fvec2) Load 1688(lod) + 1754: 52(fvec2) FAdd 1753 1752 + Store 1688(lod) 1754 + 1755: 52(fvec2) Load 1688(lod) + ReturnValue 1755 + FunctionEnd +57(testTextureQueryLevels(): 47(int) Function None 56 + 58: Label + 1758(levels): 1477(ptr) Variable Function + Store 1758(levels) 1275 + 1759: 122 Load 124(s1D) + 1760: 121 Image 1759 + 1761: 47(int) ImageQueryLevels 1760 + 1762: 47(int) Load 1758(levels) + 1763: 47(int) IAdd 1762 1761 + Store 1758(levels) 1763 + 1764: 133 Load 135(s2D) + 1765: 132 Image 1764 + 1766: 47(int) ImageQueryLevels 1765 + 1767: 47(int) Load 1758(levels) + 1768: 47(int) IAdd 1767 1766 + Store 1758(levels) 1768 + 1769: 144 Load 146(s3D) + 1770: 143 Image 1769 + 1771: 47(int) ImageQueryLevels 1770 + 1772: 47(int) Load 1758(levels) + 1773: 47(int) IAdd 1772 1771 + Store 1758(levels) 1773 + 1774: 156 Load 158(sCube) + 1775: 155 Image 1774 + 1776: 47(int) ImageQueryLevels 1775 + 1777: 47(int) Load 1758(levels) + 1778: 47(int) IAdd 1777 1776 + Store 1758(levels) 1778 + 1779: 165 Load 167(s1DShadow) + 1780: 164 Image 1779 + 1781: 47(int) ImageQueryLevels 1780 + 1782: 47(int) Load 1758(levels) + 1783: 47(int) IAdd 1782 1781 + Store 1758(levels) 1783 + 1784: 180 Load 182(s2DShadow) + 1785: 179 Image 1784 + 1786: 47(int) ImageQueryLevels 1785 + 1787: 47(int) Load 1758(levels) + 1788: 47(int) IAdd 1787 1786 + Store 1758(levels) 1788 + 1789: 192 Load 194(sCubeShadow) + 1790: 191 Image 1789 + 1791: 47(int) ImageQueryLevels 1790 + 1792: 47(int) Load 1758(levels) + 1793: 47(int) IAdd 1792 1791 + Store 1758(levels) 1793 + 1794: 224 Load 226(sCubeArray) + 1795: 223 Image 1794 + 1796: 47(int) ImageQueryLevels 1795 + 1797: 47(int) Load 1758(levels) + 1798: 47(int) IAdd 1797 1796 + Store 1758(levels) 1798 + 1799: 278 Load 280(sCubeArrayShadow) + 1800: 277 Image 1799 + 1801: 47(int) ImageQueryLevels 1800 + 1802: 47(int) Load 1758(levels) + 1803: 47(int) IAdd 1802 1801 + Store 1758(levels) 1803 + 1804: 206 Load 208(s1DArray) + 1805: 205 Image 1804 + 1806: 47(int) ImageQueryLevels 1805 + 1807: 47(int) Load 1758(levels) + 1808: 47(int) IAdd 1807 1806 + Store 1758(levels) 1808 + 1809: 215 Load 217(s2DArray) + 1810: 214 Image 1809 + 1811: 47(int) ImageQueryLevels 1810 + 1812: 47(int) Load 1758(levels) + 1813: 47(int) IAdd 1812 1811 + Store 1758(levels) 1813 + 1814: 233 Load 235(s1DArrayShadow) + 1815: 232 Image 1814 + 1816: 47(int) ImageQueryLevels 1815 + 1817: 47(int) Load 1758(levels) + 1818: 47(int) IAdd 1817 1816 + Store 1758(levels) 1818 + 1819: 245 Load 247(s2DArrayShadow) + 1820: 244 Image 1819 + 1821: 47(int) ImageQueryLevels 1820 + 1822: 47(int) Load 1758(levels) + 1823: 47(int) IAdd 1822 1821 + Store 1758(levels) 1823 + 1824: 47(int) Load 1758(levels) + ReturnValue 1824 + FunctionEnd +59(testTextureSamples(): 47(int) Function None 56 + 60: Label + 1827(samples): 1477(ptr) Variable Function + Store 1827(samples) 1275 + 1828: 782 Load 784(s2DMS) + 1829: 781 Image 1828 + 1830: 47(int) ImageQuerySamples 1829 + 1831: 47(int) Load 1827(samples) + 1832: 47(int) IAdd 1831 1830 + Store 1827(samples) 1832 + 1833: 793 Load 795(s2DMSArray) + 1834: 792 Image 1833 + 1835: 47(int) ImageQuerySamples 1834 + 1836: 47(int) Load 1827(samples) + 1837: 47(int) IAdd 1836 1835 + Store 1827(samples) 1837 + 1838: 47(int) Load 1827(samples) + ReturnValue 1838 + FunctionEnd +61(testImageLoad(): 7(fvec4) Function None 8 + 62: Label + 1841(texel): 63(ptr) Variable Function + Store 1841(texel) 120 + 1845: 1842 Load 1844(i1D) + 1846: 6(float) Load 127(c1) + 1847: 47(int) ConvertFToS 1846 + 1848: 7(fvec4) ImageRead 1845 1847 + 1849: 7(fvec4) Load 1841(texel) + 1850: 7(fvec4) FAdd 1849 1848 + Store 1841(texel) 1850 + 1854: 1851 Load 1853(i2D) + 1855: 52(fvec2) Load 138(c2) + 1856: 451(ivec2) ConvertFToS 1855 + 1857: 7(fvec4) ImageRead 1854 1856 + 1858: 7(fvec4) Load 1841(texel) + 1859: 7(fvec4) FAdd 1858 1857 + Store 1841(texel) 1859 + 1863: 1860 Load 1862(i3D) + 1864: 148(fvec3) Load 150(c3) + 1865: 458(ivec3) ConvertFToS 1864 + 1866: 7(fvec4) ImageRead 1863 1865 + 1867: 7(fvec4) Load 1841(texel) + 1868: 7(fvec4) FAdd 1867 1866 + Store 1841(texel) 1868 + 1872: 1869 Load 1871(i2DRect) + 1873: 52(fvec2) Load 138(c2) + 1874: 451(ivec2) ConvertFToS 1873 + 1875: 7(fvec4) ImageRead 1872 1874 + 1876: 7(fvec4) Load 1841(texel) + 1877: 7(fvec4) FAdd 1876 1875 + Store 1841(texel) 1877 + 1881: 1878 Load 1880(iCube) + 1882: 148(fvec3) Load 150(c3) + 1883: 458(ivec3) ConvertFToS 1882 + 1884: 7(fvec4) ImageRead 1881 1883 + 1885: 7(fvec4) Load 1841(texel) + 1886: 7(fvec4) FAdd 1885 1884 + Store 1841(texel) 1886 + 1890: 1887 Load 1889(iBuffer) + 1891: 6(float) Load 127(c1) + 1892: 47(int) ConvertFToS 1891 + 1893: 7(fvec4) ImageRead 1890 1892 + 1894: 7(fvec4) Load 1841(texel) + 1895: 7(fvec4) FAdd 1894 1893 + Store 1841(texel) 1895 + 1899: 1896 Load 1898(i1DArray) + 1900: 52(fvec2) Load 138(c2) + 1901: 451(ivec2) ConvertFToS 1900 + 1902: 7(fvec4) ImageRead 1899 1901 + 1903: 7(fvec4) Load 1841(texel) + 1904: 7(fvec4) FAdd 1903 1902 + Store 1841(texel) 1904 + 1908: 1905 Load 1907(i2DArray) + 1909: 148(fvec3) Load 150(c3) + 1910: 458(ivec3) ConvertFToS 1909 + 1911: 7(fvec4) ImageRead 1908 1910 + 1912: 7(fvec4) Load 1841(texel) + 1913: 7(fvec4) FAdd 1912 1911 + Store 1841(texel) 1913 + 1917: 1914 Load 1916(iCubeArray) + 1918: 148(fvec3) Load 150(c3) + 1919: 458(ivec3) ConvertFToS 1918 + 1920: 7(fvec4) ImageRead 1917 1919 + 1921: 7(fvec4) Load 1841(texel) + 1922: 7(fvec4) FAdd 1921 1920 + Store 1841(texel) 1922 + 1926: 1923 Load 1925(i2DMS) + 1927: 52(fvec2) Load 138(c2) + 1928: 451(ivec2) ConvertFToS 1927 + 1929: 7(fvec4) ImageRead 1926 1928 Sample 445 + 1930: 7(fvec4) Load 1841(texel) + 1931: 7(fvec4) FAdd 1930 1929 + Store 1841(texel) 1931 + 1935: 1932 Load 1934(i2DMSArray) + 1936: 148(fvec3) Load 150(c3) + 1937: 458(ivec3) ConvertFToS 1936 + 1938: 7(fvec4) ImageRead 1935 1937 Sample 445 + 1939: 7(fvec4) Load 1841(texel) + 1940: 7(fvec4) FAdd 1939 1938 + Store 1841(texel) 1940 + 1941: 7(fvec4) Load 1841(texel) + ReturnValue 1941 + FunctionEnd +66(testImageStore(vf4;): 2 Function None 64 + 65(data): 63(ptr) FunctionParameter + 67: Label + 1944: 1842 Load 1844(i1D) + 1945: 6(float) Load 127(c1) + 1946: 47(int) ConvertFToS 1945 + 1947: 7(fvec4) Load 65(data) + ImageWrite 1944 1946 1947 + 1948: 1851 Load 1853(i2D) + 1949: 52(fvec2) Load 138(c2) + 1950: 451(ivec2) ConvertFToS 1949 + 1951: 7(fvec4) Load 65(data) + ImageWrite 1948 1950 1951 + 1952: 1860 Load 1862(i3D) + 1953: 148(fvec3) Load 150(c3) + 1954: 458(ivec3) ConvertFToS 1953 + 1955: 7(fvec4) Load 65(data) + ImageWrite 1952 1954 1955 + 1956: 1869 Load 1871(i2DRect) + 1957: 52(fvec2) Load 138(c2) + 1958: 451(ivec2) ConvertFToS 1957 + 1959: 7(fvec4) Load 65(data) + ImageWrite 1956 1958 1959 + 1960: 1878 Load 1880(iCube) + 1961: 148(fvec3) Load 150(c3) + 1962: 458(ivec3) ConvertFToS 1961 + 1963: 7(fvec4) Load 65(data) + ImageWrite 1960 1962 1963 + 1964: 1887 Load 1889(iBuffer) + 1965: 6(float) Load 127(c1) + 1966: 47(int) ConvertFToS 1965 + 1967: 7(fvec4) Load 65(data) + ImageWrite 1964 1966 1967 + 1968: 1896 Load 1898(i1DArray) + 1969: 52(fvec2) Load 138(c2) + 1970: 451(ivec2) ConvertFToS 1969 + 1971: 7(fvec4) Load 65(data) + ImageWrite 1968 1970 1971 + 1972: 1905 Load 1907(i2DArray) + 1973: 148(fvec3) Load 150(c3) + 1974: 458(ivec3) ConvertFToS 1973 + 1975: 7(fvec4) Load 65(data) + ImageWrite 1972 1974 1975 + 1976: 1914 Load 1916(iCubeArray) + 1977: 148(fvec3) Load 150(c3) + 1978: 458(ivec3) ConvertFToS 1977 + 1979: 7(fvec4) Load 65(data) + ImageWrite 1976 1978 1979 + 1980: 1923 Load 1925(i2DMS) + 1981: 52(fvec2) Load 138(c2) + 1982: 451(ivec2) ConvertFToS 1981 + 1983: 7(fvec4) Load 65(data) + ImageWrite 1980 1982 1983 Sample 445 + 1984: 1932 Load 1934(i2DMSArray) + 1985: 148(fvec3) Load 150(c3) + 1986: 458(ivec3) ConvertFToS 1985 + 1987: 7(fvec4) Load 65(data) + ImageWrite 1984 1986 1987 Sample 445 + Return + FunctionEnd +68(testSparseTexture(): 7(fvec4) Function None 8 + 69: Label + 1988(texel): 63(ptr) Variable Function + Store 1988(texel) 120 + 1989: 133 Load 135(s2D) + 1990: 52(fvec2) Load 138(c2) + 1992:1991(ResType) ImageSparseSampleImplicitLod 1989 1990 + 1993: 7(fvec4) CompositeExtract 1992 1 + Store 1988(texel) 1993 + 1994: 47(int) CompositeExtract 1992 0 + 1995: 144 Load 146(s3D) + 1996: 148(fvec3) Load 150(c3) + 1997:1991(ResType) ImageSparseSampleImplicitLod 1995 1996 + 1998: 7(fvec4) CompositeExtract 1997 1 + Store 1988(texel) 1998 + 1999: 47(int) CompositeExtract 1997 0 + 2000: 156 Load 158(sCube) + 2001: 148(fvec3) Load 150(c3) + 2002:1991(ResType) ImageSparseSampleImplicitLod 2000 2001 + 2003: 7(fvec4) CompositeExtract 2002 1 + Store 1988(texel) 2003 + 2004: 47(int) CompositeExtract 2002 0 + 2005: 180 Load 182(s2DShadow) + 2006: 148(fvec3) Load 150(c3) + 2007: 174(ptr) AccessChain 1988(texel) 173 + 2008: 6(float) CompositeExtract 2006 2 + 2010:2009(ResType) ImageSparseSampleDrefImplicitLod 2005 2006 2008 + 2011: 6(float) CompositeExtract 2010 1 + Store 2007 2011 + 2012: 47(int) CompositeExtract 2010 0 + 2013: 192 Load 194(sCubeShadow) + 2014: 7(fvec4) Load 197(c4) + 2015: 174(ptr) AccessChain 1988(texel) 173 + 2016: 6(float) CompositeExtract 2014 3 + 2017:2009(ResType) ImageSparseSampleDrefImplicitLod 2013 2014 2016 + 2018: 6(float) CompositeExtract 2017 1 + Store 2015 2018 + 2019: 47(int) CompositeExtract 2017 0 + 2020: 215 Load 217(s2DArray) + 2021: 148(fvec3) Load 150(c3) + 2022:1991(ResType) ImageSparseSampleImplicitLod 2020 2021 + 2023: 7(fvec4) CompositeExtract 2022 1 + Store 1988(texel) 2023 + 2024: 47(int) CompositeExtract 2022 0 + 2025: 224 Load 226(sCubeArray) + 2026: 7(fvec4) Load 197(c4) + 2027:1991(ResType) ImageSparseSampleImplicitLod 2025 2026 + 2028: 7(fvec4) CompositeExtract 2027 1 + Store 1988(texel) 2028 + 2029: 47(int) CompositeExtract 2027 0 + 2030: 245 Load 247(s2DArrayShadow) + 2031: 7(fvec4) Load 197(c4) + 2032: 174(ptr) AccessChain 1988(texel) 173 + 2033: 6(float) CompositeExtract 2031 3 + 2034:2009(ResType) ImageSparseSampleDrefImplicitLod 2030 2031 2033 + 2035: 6(float) CompositeExtract 2034 1 + Store 2032 2035 + 2036: 47(int) CompositeExtract 2034 0 + 2037: 257 Load 259(s2DRect) + 2038: 52(fvec2) Load 138(c2) + 2039:1991(ResType) ImageSparseSampleImplicitLod 2037 2038 + 2040: 7(fvec4) CompositeExtract 2039 1 + Store 1988(texel) 2040 + 2041: 47(int) CompositeExtract 2039 0 + 2042: 266 Load 268(s2DRectShadow) + 2043: 148(fvec3) Load 150(c3) + 2044: 174(ptr) AccessChain 1988(texel) 173 + 2045: 6(float) CompositeExtract 2043 2 + 2046:2009(ResType) ImageSparseSampleDrefImplicitLod 2042 2043 2045 + 2047: 6(float) CompositeExtract 2046 1 + Store 2044 2047 + 2048: 47(int) CompositeExtract 2046 0 + 2049: 278 Load 280(sCubeArrayShadow) + 2050: 7(fvec4) Load 197(c4) + 2051: 6(float) Load 283(compare) + 2052: 174(ptr) AccessChain 1988(texel) 173 + 2053:2009(ResType) ImageSparseSampleDrefImplicitLod 2049 2050 2051 + 2054: 6(float) CompositeExtract 2053 1 + Store 2052 2054 + 2055: 47(int) CompositeExtract 2053 0 + 2056: 7(fvec4) Load 1988(texel) + ReturnValue 2056 + FunctionEnd +70(testSparseTextureLod(): 7(fvec4) Function None 8 + 71: Label + 2059(texel): 63(ptr) Variable Function + Store 2059(texel) 120 + 2060: 133 Load 135(s2D) + 2061: 52(fvec2) Load 138(c2) + 2062: 6(float) Load 371(lod) + 2063:1991(ResType) ImageSparseSampleExplicitLod 2060 2061 Lod 2062 + 2064: 7(fvec4) CompositeExtract 2063 1 + Store 2059(texel) 2064 + 2065: 47(int) CompositeExtract 2063 0 + 2066: 144 Load 146(s3D) + 2067: 148(fvec3) Load 150(c3) + 2068: 6(float) Load 371(lod) + 2069:1991(ResType) ImageSparseSampleExplicitLod 2066 2067 Lod 2068 + 2070: 7(fvec4) CompositeExtract 2069 1 + Store 2059(texel) 2070 + 2071: 47(int) CompositeExtract 2069 0 + 2072: 156 Load 158(sCube) + 2073: 148(fvec3) Load 150(c3) + 2074: 6(float) Load 371(lod) + 2075:1991(ResType) ImageSparseSampleExplicitLod 2072 2073 Lod 2074 + 2076: 7(fvec4) CompositeExtract 2075 1 + Store 2059(texel) 2076 + 2077: 47(int) CompositeExtract 2075 0 + 2078: 180 Load 182(s2DShadow) + 2079: 148(fvec3) Load 150(c3) + 2080: 6(float) Load 371(lod) + 2081: 174(ptr) AccessChain 2059(texel) 173 + 2082: 6(float) CompositeExtract 2079 2 + 2083:2009(ResType) ImageSparseSampleDrefExplicitLod 2078 2079 2082 Lod 2080 + 2084: 6(float) CompositeExtract 2083 1 + Store 2081 2084 + 2085: 47(int) CompositeExtract 2083 0 + 2086: 215 Load 217(s2DArray) + 2087: 148(fvec3) Load 150(c3) + 2088: 6(float) Load 371(lod) + 2089:1991(ResType) ImageSparseSampleExplicitLod 2086 2087 Lod 2088 + 2090: 7(fvec4) CompositeExtract 2089 1 + Store 2059(texel) 2090 + 2091: 47(int) CompositeExtract 2089 0 + 2092: 224 Load 226(sCubeArray) + 2093: 7(fvec4) Load 197(c4) + 2094: 6(float) Load 371(lod) + 2095:1991(ResType) ImageSparseSampleExplicitLod 2092 2093 Lod 2094 + 2096: 7(fvec4) CompositeExtract 2095 1 + Store 2059(texel) 2096 + 2097: 47(int) CompositeExtract 2095 0 + 2098: 7(fvec4) Load 2059(texel) + ReturnValue 2098 + FunctionEnd +72(testSparseTextureOffset(): 7(fvec4) Function None 8 + 73: Label + 2101(texel): 63(ptr) Variable Function + Store 2101(texel) 120 + 2102: 133 Load 135(s2D) + 2103: 52(fvec2) Load 138(c2) + 2104:1991(ResType) ImageSparseSampleImplicitLod 2102 2103 ConstOffset 452 + 2105: 7(fvec4) CompositeExtract 2104 1 + Store 2101(texel) 2105 + 2106: 47(int) CompositeExtract 2104 0 + 2107: 144 Load 146(s3D) + 2108: 148(fvec3) Load 150(c3) + 2109:1991(ResType) ImageSparseSampleImplicitLod 2107 2108 ConstOffset 459 + 2110: 7(fvec4) CompositeExtract 2109 1 + Store 2101(texel) 2110 + 2111: 47(int) CompositeExtract 2109 0 + 2112: 257 Load 259(s2DRect) + 2113: 52(fvec2) Load 138(c2) + 2114:1991(ResType) ImageSparseSampleImplicitLod 2112 2113 ConstOffset 452 + 2115: 7(fvec4) CompositeExtract 2114 1 + Store 2101(texel) 2115 + 2116: 47(int) CompositeExtract 2114 0 + 2117: 266 Load 268(s2DRectShadow) + 2118: 148(fvec3) Load 150(c3) + 2119: 174(ptr) AccessChain 2101(texel) 173 + 2120: 6(float) CompositeExtract 2118 2 + 2121:2009(ResType) ImageSparseSampleDrefImplicitLod 2117 2118 2120 ConstOffset 452 + 2122: 6(float) CompositeExtract 2121 1 + Store 2119 2122 + 2123: 47(int) CompositeExtract 2121 0 + 2124: 180 Load 182(s2DShadow) + 2125: 148(fvec3) Load 150(c3) + 2126: 174(ptr) AccessChain 2101(texel) 173 + 2127: 6(float) CompositeExtract 2125 2 + 2128:2009(ResType) ImageSparseSampleDrefImplicitLod 2124 2125 2127 ConstOffset 452 + 2129: 6(float) CompositeExtract 2128 1 + Store 2126 2129 + 2130: 47(int) CompositeExtract 2128 0 + 2131: 215 Load 217(s2DArray) + 2132: 148(fvec3) Load 150(c3) + 2133:1991(ResType) ImageSparseSampleImplicitLod 2131 2132 ConstOffset 452 + 2134: 7(fvec4) CompositeExtract 2133 1 + Store 2101(texel) 2134 + 2135: 47(int) CompositeExtract 2133 0 + 2136: 245 Load 247(s2DArrayShadow) + 2137: 7(fvec4) Load 197(c4) + 2138: 174(ptr) AccessChain 2101(texel) 173 + 2139: 6(float) CompositeExtract 2137 3 + 2140:2009(ResType) ImageSparseSampleDrefImplicitLod 2136 2137 2139 ConstOffset 452 + 2141: 6(float) CompositeExtract 2140 1 + Store 2138 2141 + 2142: 47(int) CompositeExtract 2140 0 + 2143: 7(fvec4) Load 2101(texel) + ReturnValue 2143 + FunctionEnd +74(testSparseTextureLodOffset(): 7(fvec4) Function None 8 + 75: Label + 2146(texel): 63(ptr) Variable Function + Store 2146(texel) 120 + 2147: 133 Load 135(s2D) + 2148: 52(fvec2) Load 138(c2) + 2149: 6(float) Load 371(lod) + 2150:1991(ResType) ImageSparseSampleExplicitLod 2147 2148 Lod ConstOffset 2149 452 + 2151: 7(fvec4) CompositeExtract 2150 1 + Store 2146(texel) 2151 + 2152: 47(int) CompositeExtract 2150 0 + 2153: 144 Load 146(s3D) + 2154: 148(fvec3) Load 150(c3) + 2155: 6(float) Load 371(lod) + 2156:1991(ResType) ImageSparseSampleExplicitLod 2153 2154 Lod ConstOffset 2155 459 + 2157: 7(fvec4) CompositeExtract 2156 1 + Store 2146(texel) 2157 + 2158: 47(int) CompositeExtract 2156 0 + 2159: 180 Load 182(s2DShadow) + 2160: 148(fvec3) Load 150(c3) + 2161: 6(float) Load 371(lod) + 2162: 174(ptr) AccessChain 2146(texel) 173 + 2163: 6(float) CompositeExtract 2160 2 + 2164:2009(ResType) ImageSparseSampleDrefExplicitLod 2159 2160 2163 Lod ConstOffset 2161 452 + 2165: 6(float) CompositeExtract 2164 1 + Store 2162 2165 + 2166: 47(int) CompositeExtract 2164 0 + 2167: 215 Load 217(s2DArray) + 2168: 148(fvec3) Load 150(c3) + 2169: 6(float) Load 371(lod) + 2170:1991(ResType) ImageSparseSampleExplicitLod 2167 2168 Lod ConstOffset 2169 452 + 2171: 7(fvec4) CompositeExtract 2170 1 + Store 2146(texel) 2171 + 2172: 47(int) CompositeExtract 2170 0 + 2173: 7(fvec4) Load 2146(texel) + ReturnValue 2173 + FunctionEnd +76(testSparseTextureGrad(): 7(fvec4) Function None 8 + 77: Label + 2176(texel): 63(ptr) Variable Function + Store 2176(texel) 120 + 2177: 133 Load 135(s2D) + 2178: 52(fvec2) Load 138(c2) + 2179: 52(fvec2) Load 874(dPdxy2) + 2180: 52(fvec2) Load 874(dPdxy2) + 2181:1991(ResType) ImageSparseSampleExplicitLod 2177 2178 Grad 2179 2180 + 2182: 7(fvec4) CompositeExtract 2181 1 + Store 2176(texel) 2182 + 2183: 47(int) CompositeExtract 2181 0 + 2184: 144 Load 146(s3D) + 2185: 148(fvec3) Load 150(c3) + 2186: 148(fvec3) Load 882(dPdxy3) + 2187: 148(fvec3) Load 882(dPdxy3) + 2188:1991(ResType) ImageSparseSampleExplicitLod 2184 2185 Grad 2186 2187 + 2189: 7(fvec4) CompositeExtract 2188 1 + Store 2176(texel) 2189 + 2190: 47(int) CompositeExtract 2188 0 + 2191: 156 Load 158(sCube) + 2192: 148(fvec3) Load 150(c3) + 2193: 148(fvec3) Load 882(dPdxy3) + 2194: 148(fvec3) Load 882(dPdxy3) + 2195:1991(ResType) ImageSparseSampleExplicitLod 2191 2192 Grad 2193 2194 + 2196: 7(fvec4) CompositeExtract 2195 1 + Store 2176(texel) 2196 + 2197: 47(int) CompositeExtract 2195 0 + 2198: 257 Load 259(s2DRect) + 2199: 52(fvec2) Load 138(c2) + 2200: 52(fvec2) Load 874(dPdxy2) + 2201: 52(fvec2) Load 874(dPdxy2) + 2202:1991(ResType) ImageSparseSampleExplicitLod 2198 2199 Grad 2200 2201 + 2203: 7(fvec4) CompositeExtract 2202 1 + Store 2176(texel) 2203 + 2204: 47(int) CompositeExtract 2202 0 + 2205: 266 Load 268(s2DRectShadow) + 2206: 148(fvec3) Load 150(c3) + 2207: 52(fvec2) Load 874(dPdxy2) + 2208: 52(fvec2) Load 874(dPdxy2) + 2209: 174(ptr) AccessChain 2176(texel) 173 + 2210: 6(float) CompositeExtract 2206 2 + 2211:2009(ResType) ImageSparseSampleDrefExplicitLod 2205 2206 2210 Grad 2207 2208 + 2212: 6(float) CompositeExtract 2211 1 + Store 2209 2212 + 2213: 47(int) CompositeExtract 2211 0 + 2214: 180 Load 182(s2DShadow) + 2215: 148(fvec3) Load 150(c3) + 2216: 52(fvec2) Load 874(dPdxy2) + 2217: 52(fvec2) Load 874(dPdxy2) + 2218: 174(ptr) AccessChain 2176(texel) 173 + 2219: 6(float) CompositeExtract 2215 2 + 2220:2009(ResType) ImageSparseSampleDrefExplicitLod 2214 2215 2219 Grad 2216 2217 + 2221: 6(float) CompositeExtract 2220 1 + Store 2218 2221 + 2222: 47(int) CompositeExtract 2220 0 + 2223: 192 Load 194(sCubeShadow) + 2224: 7(fvec4) Load 197(c4) + 2225: 148(fvec3) Load 882(dPdxy3) + 2226: 148(fvec3) Load 882(dPdxy3) + 2227: 174(ptr) AccessChain 2176(texel) 173 + 2228: 6(float) CompositeExtract 2224 3 + 2229:2009(ResType) ImageSparseSampleDrefExplicitLod 2223 2224 2228 Grad 2225 2226 + 2230: 6(float) CompositeExtract 2229 1 + Store 2227 2230 + 2231: 47(int) CompositeExtract 2229 0 + 2232: 215 Load 217(s2DArray) + 2233: 148(fvec3) Load 150(c3) + 2234: 52(fvec2) Load 874(dPdxy2) + 2235: 52(fvec2) Load 874(dPdxy2) + 2236:1991(ResType) ImageSparseSampleExplicitLod 2232 2233 Grad 2234 2235 + 2237: 7(fvec4) CompositeExtract 2236 1 + Store 2176(texel) 2237 + 2238: 47(int) CompositeExtract 2236 0 + 2239: 245 Load 247(s2DArrayShadow) + 2240: 7(fvec4) Load 197(c4) + 2241: 52(fvec2) Load 874(dPdxy2) + 2242: 52(fvec2) Load 874(dPdxy2) + 2243: 174(ptr) AccessChain 2176(texel) 173 + 2244: 6(float) CompositeExtract 2240 3 + 2245:2009(ResType) ImageSparseSampleDrefExplicitLod 2239 2240 2244 Grad 2241 2242 + 2246: 6(float) CompositeExtract 2245 1 + Store 2243 2246 + 2247: 47(int) CompositeExtract 2245 0 + 2248: 224 Load 226(sCubeArray) + 2249: 7(fvec4) Load 197(c4) + 2250: 148(fvec3) Load 882(dPdxy3) + 2251: 148(fvec3) Load 882(dPdxy3) + 2252:1991(ResType) ImageSparseSampleExplicitLod 2248 2249 Grad 2250 2251 + 2253: 7(fvec4) CompositeExtract 2252 1 + Store 2176(texel) 2253 + 2254: 47(int) CompositeExtract 2252 0 + 2255: 7(fvec4) Load 2176(texel) + ReturnValue 2255 + FunctionEnd +78(testSparseTextureGradOffset(): 7(fvec4) Function None 8 + 79: Label + 2258(texel): 63(ptr) Variable Function + Store 2258(texel) 120 + 2259: 133 Load 135(s2D) + 2260: 52(fvec2) Load 138(c2) + 2261: 52(fvec2) Load 874(dPdxy2) + 2262: 52(fvec2) Load 874(dPdxy2) + 2263:1991(ResType) ImageSparseSampleExplicitLod 2259 2260 Grad ConstOffset 2261 2262 452 + 2264: 7(fvec4) CompositeExtract 2263 1 + Store 2258(texel) 2264 + 2265: 47(int) CompositeExtract 2263 0 + 2266: 144 Load 146(s3D) + 2267: 148(fvec3) Load 150(c3) + 2268: 148(fvec3) Load 882(dPdxy3) + 2269: 148(fvec3) Load 882(dPdxy3) + 2270:1991(ResType) ImageSparseSampleExplicitLod 2266 2267 Grad ConstOffset 2268 2269 459 + 2271: 7(fvec4) CompositeExtract 2270 1 + Store 2258(texel) 2271 + 2272: 47(int) CompositeExtract 2270 0 + 2273: 257 Load 259(s2DRect) + 2274: 52(fvec2) Load 138(c2) + 2275: 52(fvec2) Load 874(dPdxy2) + 2276: 52(fvec2) Load 874(dPdxy2) + 2277:1991(ResType) ImageSparseSampleExplicitLod 2273 2274 Grad ConstOffset 2275 2276 452 + 2278: 7(fvec4) CompositeExtract 2277 1 + Store 2258(texel) 2278 + 2279: 47(int) CompositeExtract 2277 0 + 2280: 266 Load 268(s2DRectShadow) + 2281: 148(fvec3) Load 150(c3) + 2282: 52(fvec2) Load 874(dPdxy2) + 2283: 52(fvec2) Load 874(dPdxy2) + 2284: 174(ptr) AccessChain 2258(texel) 173 + 2285: 6(float) CompositeExtract 2281 2 + 2286:2009(ResType) ImageSparseSampleDrefExplicitLod 2280 2281 2285 Grad ConstOffset 2282 2283 452 + 2287: 6(float) CompositeExtract 2286 1 + Store 2284 2287 + 2288: 47(int) CompositeExtract 2286 0 + 2289: 180 Load 182(s2DShadow) + 2290: 148(fvec3) Load 150(c3) + 2291: 52(fvec2) Load 874(dPdxy2) + 2292: 52(fvec2) Load 874(dPdxy2) + 2293: 174(ptr) AccessChain 2258(texel) 173 + 2294: 6(float) CompositeExtract 2290 2 + 2295:2009(ResType) ImageSparseSampleDrefExplicitLod 2289 2290 2294 Grad ConstOffset 2291 2292 452 + 2296: 6(float) CompositeExtract 2295 1 + Store 2293 2296 + 2297: 47(int) CompositeExtract 2295 0 + 2298: 215 Load 217(s2DArray) + 2299: 148(fvec3) Load 150(c3) + 2300: 52(fvec2) Load 874(dPdxy2) + 2301: 52(fvec2) Load 874(dPdxy2) + 2302:1991(ResType) ImageSparseSampleExplicitLod 2298 2299 Grad ConstOffset 2300 2301 452 + 2303: 7(fvec4) CompositeExtract 2302 1 + Store 2258(texel) 2303 + 2304: 47(int) CompositeExtract 2302 0 + 2305: 245 Load 247(s2DArrayShadow) + 2306: 7(fvec4) Load 197(c4) + 2307: 52(fvec2) Load 874(dPdxy2) + 2308: 52(fvec2) Load 874(dPdxy2) + 2309: 174(ptr) AccessChain 2258(texel) 173 + 2310: 6(float) CompositeExtract 2306 3 + 2311:2009(ResType) ImageSparseSampleDrefExplicitLod 2305 2306 2310 Grad ConstOffset 2307 2308 452 + 2312: 6(float) CompositeExtract 2311 1 + Store 2309 2312 + 2313: 47(int) CompositeExtract 2311 0 + 2314: 7(fvec4) Load 2258(texel) + ReturnValue 2314 + FunctionEnd +80(testSparseTexelFetch(): 7(fvec4) Function None 8 + 81: Label + 2317(texel): 63(ptr) Variable Function + Store 2317(texel) 120 + 2318: 133 Load 135(s2D) + 2319: 52(fvec2) Load 138(c2) + 2320: 451(ivec2) ConvertFToS 2319 + 2321: 6(float) Load 371(lod) + 2322: 47(int) ConvertFToS 2321 + 2323: 132 Image 2318 + 2324:1991(ResType) ImageSparseFetch 2323 2320 Lod 2322 + 2325: 7(fvec4) CompositeExtract 2324 1 + Store 2317(texel) 2325 + 2326: 47(int) CompositeExtract 2324 0 + 2327: 144 Load 146(s3D) + 2328: 148(fvec3) Load 150(c3) + 2329: 458(ivec3) ConvertFToS 2328 + 2330: 6(float) Load 371(lod) + 2331: 47(int) ConvertFToS 2330 + 2332: 143 Image 2327 + 2333:1991(ResType) ImageSparseFetch 2332 2329 Lod 2331 + 2334: 7(fvec4) CompositeExtract 2333 1 + Store 2317(texel) 2334 + 2335: 47(int) CompositeExtract 2333 0 + 2336: 257 Load 259(s2DRect) + 2337: 52(fvec2) Load 138(c2) + 2338: 451(ivec2) ConvertFToS 2337 + 2339: 256 Image 2336 + 2340:1991(ResType) ImageSparseFetch 2339 2338 + 2341: 7(fvec4) CompositeExtract 2340 1 + Store 2317(texel) 2341 + 2342: 47(int) CompositeExtract 2340 0 + 2343: 215 Load 217(s2DArray) + 2344: 148(fvec3) Load 150(c3) + 2345: 458(ivec3) ConvertFToS 2344 + 2346: 6(float) Load 371(lod) + 2347: 47(int) ConvertFToS 2346 + 2348: 214 Image 2343 + 2349:1991(ResType) ImageSparseFetch 2348 2345 Lod 2347 + 2350: 7(fvec4) CompositeExtract 2349 1 + Store 2317(texel) 2350 + 2351: 47(int) CompositeExtract 2349 0 + 2352: 782 Load 784(s2DMS) + 2353: 52(fvec2) Load 138(c2) + 2354: 451(ivec2) ConvertFToS 2353 + 2355: 781 Image 2352 + 2356:1991(ResType) ImageSparseFetch 2355 2354 Sample 445 + 2357: 7(fvec4) CompositeExtract 2356 1 + Store 2317(texel) 2357 + 2358: 47(int) CompositeExtract 2356 0 + 2359: 793 Load 795(s2DMSArray) + 2360: 148(fvec3) Load 150(c3) + 2361: 458(ivec3) ConvertFToS 2360 + 2362: 792 Image 2359 + 2363:1991(ResType) ImageSparseFetch 2362 2361 Sample 799 + 2364: 7(fvec4) CompositeExtract 2363 1 + Store 2317(texel) 2364 + 2365: 47(int) CompositeExtract 2363 0 + 2366: 7(fvec4) Load 2317(texel) + ReturnValue 2366 + FunctionEnd +82(testSparseTexelFetchOffset(): 7(fvec4) Function None 8 + 83: Label + 2369(texel): 63(ptr) Variable Function + Store 2369(texel) 120 + 2370: 133 Load 135(s2D) + 2371: 52(fvec2) Load 138(c2) + 2372: 451(ivec2) ConvertFToS 2371 + 2373: 6(float) Load 371(lod) + 2374: 47(int) ConvertFToS 2373 + 2375: 132 Image 2370 + 2376:1991(ResType) ImageSparseFetch 2375 2372 Lod ConstOffset 2374 452 + 2377: 7(fvec4) CompositeExtract 2376 1 + Store 2369(texel) 2377 + 2378: 47(int) CompositeExtract 2376 0 + 2379: 144 Load 146(s3D) + 2380: 148(fvec3) Load 150(c3) + 2381: 458(ivec3) ConvertFToS 2380 + 2382: 6(float) Load 371(lod) + 2383: 47(int) ConvertFToS 2382 + 2384: 143 Image 2379 + 2385:1991(ResType) ImageSparseFetch 2384 2381 Lod ConstOffset 2383 459 + 2386: 7(fvec4) CompositeExtract 2385 1 + Store 2369(texel) 2386 + 2387: 47(int) CompositeExtract 2385 0 + 2388: 257 Load 259(s2DRect) + 2389: 52(fvec2) Load 138(c2) + 2390: 451(ivec2) ConvertFToS 2389 + 2391: 256 Image 2388 + 2392:1991(ResType) ImageSparseFetch 2391 2390 ConstOffset 452 + 2393: 7(fvec4) CompositeExtract 2392 1 + Store 2369(texel) 2393 + 2394: 47(int) CompositeExtract 2392 0 + 2395: 215 Load 217(s2DArray) + 2396: 148(fvec3) Load 150(c3) + 2397: 458(ivec3) ConvertFToS 2396 + 2398: 6(float) Load 371(lod) + 2399: 47(int) ConvertFToS 2398 + 2400: 214 Image 2395 + 2401:1991(ResType) ImageSparseFetch 2400 2397 Lod ConstOffset 2399 452 + 2402: 7(fvec4) CompositeExtract 2401 1 + Store 2369(texel) 2402 + 2403: 47(int) CompositeExtract 2401 0 + 2404: 7(fvec4) Load 2369(texel) + ReturnValue 2404 + FunctionEnd +84(testSparseTextureGather(): 7(fvec4) Function None 8 + 85: Label + 2407(texel): 63(ptr) Variable Function + Store 2407(texel) 120 + 2408: 133 Load 135(s2D) + 2409: 52(fvec2) Load 138(c2) + 2410:1991(ResType) ImageSparseGather 2408 2409 1275 + 2411: 7(fvec4) CompositeExtract 2410 1 + Store 2407(texel) 2411 + 2412: 47(int) CompositeExtract 2410 0 + 2413: 215 Load 217(s2DArray) + 2414: 148(fvec3) Load 150(c3) + 2415:1991(ResType) ImageSparseGather 2413 2414 1275 + 2416: 7(fvec4) CompositeExtract 2415 1 + Store 2407(texel) 2416 + 2417: 47(int) CompositeExtract 2415 0 + 2418: 156 Load 158(sCube) + 2419: 148(fvec3) Load 150(c3) + 2420:1991(ResType) ImageSparseGather 2418 2419 1275 + 2421: 7(fvec4) CompositeExtract 2420 1 + Store 2407(texel) 2421 + 2422: 47(int) CompositeExtract 2420 0 + 2423: 224 Load 226(sCubeArray) + 2424: 7(fvec4) Load 197(c4) + 2425:1991(ResType) ImageSparseGather 2423 2424 1275 + 2426: 7(fvec4) CompositeExtract 2425 1 + Store 2407(texel) 2426 + 2427: 47(int) CompositeExtract 2425 0 + 2428: 257 Load 259(s2DRect) + 2429: 52(fvec2) Load 138(c2) + 2430:1991(ResType) ImageSparseGather 2428 2429 1275 + 2431: 7(fvec4) CompositeExtract 2430 1 + Store 2407(texel) 2431 + 2432: 47(int) CompositeExtract 2430 0 + 2433: 180 Load 182(s2DShadow) + 2434: 52(fvec2) Load 138(c2) + 2435: 6(float) Load 283(compare) + 2436:1991(ResType) ImageSparseDrefGather 2433 2434 2435 + 2437: 7(fvec4) CompositeExtract 2436 1 + Store 2407(texel) 2437 + 2438: 47(int) CompositeExtract 2436 0 + 2439: 245 Load 247(s2DArrayShadow) + 2440: 148(fvec3) Load 150(c3) + 2441: 6(float) Load 283(compare) + 2442:1991(ResType) ImageSparseDrefGather 2439 2440 2441 + 2443: 7(fvec4) CompositeExtract 2442 1 + Store 2407(texel) 2443 + 2444: 47(int) CompositeExtract 2442 0 + 2445: 192 Load 194(sCubeShadow) + 2446: 148(fvec3) Load 150(c3) + 2447: 6(float) Load 283(compare) + 2448:1991(ResType) ImageSparseDrefGather 2445 2446 2447 + 2449: 7(fvec4) CompositeExtract 2448 1 + Store 2407(texel) 2449 + 2450: 47(int) CompositeExtract 2448 0 + 2451: 278 Load 280(sCubeArrayShadow) + 2452: 7(fvec4) Load 197(c4) + 2453: 6(float) Load 283(compare) + 2454:1991(ResType) ImageSparseDrefGather 2451 2452 2453 + 2455: 7(fvec4) CompositeExtract 2454 1 + Store 2407(texel) 2455 + 2456: 47(int) CompositeExtract 2454 0 + 2457: 266 Load 268(s2DRectShadow) + 2458: 52(fvec2) Load 138(c2) + 2459: 6(float) Load 283(compare) + 2460:1991(ResType) ImageSparseDrefGather 2457 2458 2459 + 2461: 7(fvec4) CompositeExtract 2460 1 + Store 2407(texel) 2461 + 2462: 47(int) CompositeExtract 2460 0 + 2463: 7(fvec4) Load 2407(texel) + ReturnValue 2463 + FunctionEnd +86(testSparseTextureGatherOffset(): 7(fvec4) Function None 8 + 87: Label + 2466(texel): 63(ptr) Variable Function + Store 2466(texel) 120 + 2467: 133 Load 135(s2D) + 2468: 52(fvec2) Load 138(c2) + 2469:1991(ResType) ImageSparseGather 2467 2468 1275 ConstOffset 452 + 2470: 7(fvec4) CompositeExtract 2469 1 + Store 2466(texel) 2470 + 2471: 47(int) CompositeExtract 2469 0 + 2472: 215 Load 217(s2DArray) + 2473: 148(fvec3) Load 150(c3) + 2474:1991(ResType) ImageSparseGather 2472 2473 1275 ConstOffset 452 + 2475: 7(fvec4) CompositeExtract 2474 1 + Store 2466(texel) 2475 + 2476: 47(int) CompositeExtract 2474 0 + 2477: 257 Load 259(s2DRect) + 2478: 52(fvec2) Load 138(c2) + 2479:1991(ResType) ImageSparseGather 2477 2478 1275 ConstOffset 452 + 2480: 7(fvec4) CompositeExtract 2479 1 + Store 2466(texel) 2480 + 2481: 47(int) CompositeExtract 2479 0 + 2482: 180 Load 182(s2DShadow) + 2483: 52(fvec2) Load 138(c2) + 2484: 6(float) Load 283(compare) + 2485:1991(ResType) ImageSparseDrefGather 2482 2483 2484 ConstOffset 452 + 2486: 7(fvec4) CompositeExtract 2485 1 + Store 2466(texel) 2486 + 2487: 47(int) CompositeExtract 2485 0 + 2488: 245 Load 247(s2DArrayShadow) + 2489: 148(fvec3) Load 150(c3) + 2490: 6(float) Load 283(compare) + 2491:1991(ResType) ImageSparseDrefGather 2488 2489 2490 ConstOffset 452 + 2492: 7(fvec4) CompositeExtract 2491 1 + Store 2466(texel) 2492 + 2493: 47(int) CompositeExtract 2491 0 + 2494: 266 Load 268(s2DRectShadow) + 2495: 52(fvec2) Load 138(c2) + 2496: 6(float) Load 283(compare) + 2497:1991(ResType) ImageSparseDrefGather 2494 2495 2496 ConstOffset 452 + 2498: 7(fvec4) CompositeExtract 2497 1 + Store 2466(texel) 2498 + 2499: 47(int) CompositeExtract 2497 0 + 2500: 7(fvec4) Load 2466(texel) + ReturnValue 2500 + FunctionEnd +88(testSparseTextureGatherOffsets(): 7(fvec4) Function None 8 + 89: Label + 2503(texel): 63(ptr) Variable Function + Store 2503(texel) 120 + 2504: 133 Load 135(s2D) + 2505: 52(fvec2) Load 138(c2) + 2516:1991(ResType) ImageSparseGather 2504 2505 1275 ConstOffsets 2515 + 2517: 7(fvec4) CompositeExtract 2516 1 + Store 2503(texel) 2517 + 2518: 47(int) CompositeExtract 2516 0 + 2519: 215 Load 217(s2DArray) + 2520: 148(fvec3) Load 150(c3) + 2521:1991(ResType) ImageSparseGather 2519 2520 1275 ConstOffsets 2515 + 2522: 7(fvec4) CompositeExtract 2521 1 + Store 2503(texel) 2522 + 2523: 47(int) CompositeExtract 2521 0 + 2524: 257 Load 259(s2DRect) + 2525: 52(fvec2) Load 138(c2) + 2526:1991(ResType) ImageSparseGather 2524 2525 1275 ConstOffsets 2515 + 2527: 7(fvec4) CompositeExtract 2526 1 + Store 2503(texel) 2527 + 2528: 47(int) CompositeExtract 2526 0 + 2529: 180 Load 182(s2DShadow) + 2530: 52(fvec2) Load 138(c2) + 2531: 6(float) Load 283(compare) + 2532:1991(ResType) ImageSparseDrefGather 2529 2530 2531 ConstOffsets 2515 + 2533: 7(fvec4) CompositeExtract 2532 1 + Store 2503(texel) 2533 + 2534: 47(int) CompositeExtract 2532 0 + 2535: 245 Load 247(s2DArrayShadow) + 2536: 148(fvec3) Load 150(c3) + 2537: 6(float) Load 283(compare) + 2538:1991(ResType) ImageSparseDrefGather 2535 2536 2537 ConstOffsets 2515 + 2539: 7(fvec4) CompositeExtract 2538 1 + Store 2503(texel) 2539 + 2540: 47(int) CompositeExtract 2538 0 + 2541: 266 Load 268(s2DRectShadow) + 2542: 52(fvec2) Load 138(c2) + 2543: 6(float) Load 283(compare) + 2544:1991(ResType) ImageSparseDrefGather 2541 2542 2543 ConstOffsets 2515 + 2545: 7(fvec4) CompositeExtract 2544 1 + Store 2503(texel) 2545 + 2546: 47(int) CompositeExtract 2544 0 + 2547: 7(fvec4) Load 2503(texel) + ReturnValue 2547 + FunctionEnd +90(testSparseTextureGatherLod(): 7(fvec4) Function None 8 + 91: Label + 2550(texel): 63(ptr) Variable Function + Store 2550(texel) 120 + 2551: 133 Load 135(s2D) + 2552: 52(fvec2) Load 138(c2) + 2553: 6(float) Load 371(lod) + 2554:1991(ResType) ImageSparseGather 2551 2552 1275 Lod 2553 + 2555: 7(fvec4) CompositeExtract 2554 1 + Store 2550(texel) 2555 + 2556: 47(int) CompositeExtract 2554 0 + 2557: 215 Load 217(s2DArray) + 2558: 148(fvec3) Load 150(c3) + 2559: 6(float) Load 371(lod) + 2560:1991(ResType) ImageSparseGather 2557 2558 1275 Lod 2559 + 2561: 7(fvec4) CompositeExtract 2560 1 + Store 2550(texel) 2561 + 2562: 47(int) CompositeExtract 2560 0 + 2563: 156 Load 158(sCube) + 2564: 148(fvec3) Load 150(c3) + 2565: 6(float) Load 371(lod) + 2566:1991(ResType) ImageSparseGather 2563 2564 1275 Lod 2565 + 2567: 7(fvec4) CompositeExtract 2566 1 + Store 2550(texel) 2567 + 2568: 47(int) CompositeExtract 2566 0 + 2569: 224 Load 226(sCubeArray) + 2570: 7(fvec4) Load 197(c4) + 2571: 6(float) Load 371(lod) + 2572:1991(ResType) ImageSparseGather 2569 2570 1275 Lod 2571 + 2573: 7(fvec4) CompositeExtract 2572 1 + Store 2550(texel) 2573 + 2574: 47(int) CompositeExtract 2572 0 + 2575: 7(fvec4) Load 2550(texel) + ReturnValue 2575 + FunctionEnd +92(testSparseTextureGatherLodOffset(): 7(fvec4) Function None 8 + 93: Label + 2578(texel): 63(ptr) Variable Function + Store 2578(texel) 120 + 2579: 133 Load 135(s2D) + 2580: 52(fvec2) Load 138(c2) + 2581: 6(float) Load 371(lod) + 2582:1991(ResType) ImageSparseGather 2579 2580 1275 Lod ConstOffset 2581 452 + 2583: 7(fvec4) CompositeExtract 2582 1 + Store 2578(texel) 2583 + 2584: 47(int) CompositeExtract 2582 0 + 2585: 215 Load 217(s2DArray) + 2586: 148(fvec3) Load 150(c3) + 2587: 6(float) Load 371(lod) + 2588:1991(ResType) ImageSparseGather 2585 2586 1275 Lod ConstOffset 2587 452 + 2589: 7(fvec4) CompositeExtract 2588 1 + Store 2578(texel) 2589 + 2590: 47(int) CompositeExtract 2588 0 + 2591: 7(fvec4) Load 2578(texel) + ReturnValue 2591 + FunctionEnd +94(testSparseTextureGatherLodOffsets(): 7(fvec4) Function None 8 + 95: Label + 2594(texel): 63(ptr) Variable Function + Store 2594(texel) 120 + 2595: 133 Load 135(s2D) + 2596: 52(fvec2) Load 138(c2) + 2597: 6(float) Load 371(lod) + 2598:1991(ResType) ImageSparseGather 2595 2596 1275 Lod ConstOffsets 2597 1374 + 2599: 7(fvec4) CompositeExtract 2598 1 + Store 2594(texel) 2599 + 2600: 47(int) CompositeExtract 2598 0 + 2601: 215 Load 217(s2DArray) + 2602: 148(fvec3) Load 150(c3) + 2603: 6(float) Load 371(lod) + 2604:1991(ResType) ImageSparseGather 2601 2602 1275 Lod ConstOffsets 2603 1374 + 2605: 7(fvec4) CompositeExtract 2604 1 + Store 2594(texel) 2605 + 2606: 47(int) CompositeExtract 2604 0 + 2607: 7(fvec4) Load 2594(texel) + ReturnValue 2607 + FunctionEnd +96(testSparseImageLoad(): 7(fvec4) Function None 8 + 97: Label + 2610(texel): 63(ptr) Variable Function + Store 2610(texel) 120 + 2611: 1851 Load 1853(i2D) + 2612: 52(fvec2) Load 138(c2) + 2613: 451(ivec2) ConvertFToS 2612 + 2614:1991(ResType) ImageSparseRead 2611 2613 + 2615: 7(fvec4) CompositeExtract 2614 1 + Store 2610(texel) 2615 + 2616: 47(int) CompositeExtract 2614 0 + 2617: 1860 Load 1862(i3D) + 2618: 148(fvec3) Load 150(c3) + 2619: 458(ivec3) ConvertFToS 2618 + 2620:1991(ResType) ImageSparseRead 2617 2619 + 2621: 7(fvec4) CompositeExtract 2620 1 + Store 2610(texel) 2621 + 2622: 47(int) CompositeExtract 2620 0 + 2623: 1869 Load 1871(i2DRect) + 2624: 52(fvec2) Load 138(c2) + 2625: 451(ivec2) ConvertFToS 2624 + 2626:1991(ResType) ImageSparseRead 2623 2625 + 2627: 7(fvec4) CompositeExtract 2626 1 + Store 2610(texel) 2627 + 2628: 47(int) CompositeExtract 2626 0 + 2629: 1878 Load 1880(iCube) + 2630: 148(fvec3) Load 150(c3) + 2631: 458(ivec3) ConvertFToS 2630 + 2632:1991(ResType) ImageSparseRead 2629 2631 + 2633: 7(fvec4) CompositeExtract 2632 1 + Store 2610(texel) 2633 + 2634: 47(int) CompositeExtract 2632 0 + 2635: 1905 Load 1907(i2DArray) + 2636: 148(fvec3) Load 150(c3) + 2637: 458(ivec3) ConvertFToS 2636 + 2638:1991(ResType) ImageSparseRead 2635 2637 + 2639: 7(fvec4) CompositeExtract 2638 1 + Store 2610(texel) 2639 + 2640: 47(int) CompositeExtract 2638 0 + 2641: 1914 Load 1916(iCubeArray) + 2642: 148(fvec3) Load 150(c3) + 2643: 458(ivec3) ConvertFToS 2642 + 2644:1991(ResType) ImageSparseRead 2641 2643 + 2645: 7(fvec4) CompositeExtract 2644 1 + Store 2610(texel) 2645 + 2646: 47(int) CompositeExtract 2644 0 + 2647: 1923 Load 1925(i2DMS) + 2648: 52(fvec2) Load 138(c2) + 2649: 451(ivec2) ConvertFToS 2648 + 2650:1991(ResType) ImageSparseRead 2647 2649 Sample 445 + 2651: 7(fvec4) CompositeExtract 2650 1 + Store 2610(texel) 2651 + 2652: 47(int) CompositeExtract 2650 0 + 2653: 1932 Load 1934(i2DMSArray) + 2654: 148(fvec3) Load 150(c3) + 2655: 458(ivec3) ConvertFToS 2654 + 2656:1991(ResType) ImageSparseRead 2653 2655 Sample 799 + 2657: 7(fvec4) CompositeExtract 2656 1 + Store 2610(texel) 2657 + 2658: 47(int) CompositeExtract 2656 0 + 2659: 7(fvec4) Load 2610(texel) + ReturnValue 2659 + FunctionEnd +98(testSparseTextureClamp(): 7(fvec4) Function None 8 + 99: Label + 2662(texel): 63(ptr) Variable Function + Store 2662(texel) 120 + 2663: 133 Load 135(s2D) + 2664: 52(fvec2) Load 138(c2) + 2666: 6(float) Load 2665(lodClamp) + 2667:1991(ResType) ImageSparseSampleImplicitLod 2663 2664 MinLod 2666 + 2668: 7(fvec4) CompositeExtract 2667 1 + Store 2662(texel) 2668 + 2669: 47(int) CompositeExtract 2667 0 + 2670: 144 Load 146(s3D) + 2671: 148(fvec3) Load 150(c3) + 2672: 6(float) Load 2665(lodClamp) + 2673:1991(ResType) ImageSparseSampleImplicitLod 2670 2671 MinLod 2672 + 2674: 7(fvec4) CompositeExtract 2673 1 + Store 2662(texel) 2674 + 2675: 47(int) CompositeExtract 2673 0 + 2676: 156 Load 158(sCube) + 2677: 148(fvec3) Load 150(c3) + 2678: 6(float) Load 2665(lodClamp) + 2679:1991(ResType) ImageSparseSampleImplicitLod 2676 2677 MinLod 2678 + 2680: 7(fvec4) CompositeExtract 2679 1 + Store 2662(texel) 2680 + 2681: 47(int) CompositeExtract 2679 0 + 2682: 180 Load 182(s2DShadow) + 2683: 148(fvec3) Load 150(c3) + 2684: 6(float) Load 2665(lodClamp) + 2685: 174(ptr) AccessChain 2662(texel) 173 + 2686: 6(float) CompositeExtract 2683 2 + 2687:2009(ResType) ImageSparseSampleDrefImplicitLod 2682 2683 2686 MinLod 2684 + 2688: 6(float) CompositeExtract 2687 1 + Store 2685 2688 + 2689: 47(int) CompositeExtract 2687 0 + 2690: 192 Load 194(sCubeShadow) + 2691: 7(fvec4) Load 197(c4) + 2692: 6(float) Load 2665(lodClamp) + 2693: 174(ptr) AccessChain 2662(texel) 173 + 2694: 6(float) CompositeExtract 2691 3 + 2695:2009(ResType) ImageSparseSampleDrefImplicitLod 2690 2691 2694 MinLod 2692 + 2696: 6(float) CompositeExtract 2695 1 + Store 2693 2696 + 2697: 47(int) CompositeExtract 2695 0 + 2698: 215 Load 217(s2DArray) + 2699: 148(fvec3) Load 150(c3) + 2700: 6(float) Load 2665(lodClamp) + 2701:1991(ResType) ImageSparseSampleImplicitLod 2698 2699 MinLod 2700 + 2702: 7(fvec4) CompositeExtract 2701 1 + Store 2662(texel) 2702 + 2703: 47(int) CompositeExtract 2701 0 + 2704: 224 Load 226(sCubeArray) + 2705: 7(fvec4) Load 197(c4) + 2706: 6(float) Load 2665(lodClamp) + 2707:1991(ResType) ImageSparseSampleImplicitLod 2704 2705 MinLod 2706 + 2708: 7(fvec4) CompositeExtract 2707 1 + Store 2662(texel) 2708 + 2709: 47(int) CompositeExtract 2707 0 + 2710: 245 Load 247(s2DArrayShadow) + 2711: 7(fvec4) Load 197(c4) + 2712: 6(float) Load 2665(lodClamp) + 2713: 174(ptr) AccessChain 2662(texel) 173 + 2714: 6(float) CompositeExtract 2711 3 + 2715:2009(ResType) ImageSparseSampleDrefImplicitLod 2710 2711 2714 MinLod 2712 + 2716: 6(float) CompositeExtract 2715 1 + Store 2713 2716 + 2717: 47(int) CompositeExtract 2715 0 + 2718: 278 Load 280(sCubeArrayShadow) + 2719: 7(fvec4) Load 197(c4) + 2720: 6(float) Load 283(compare) + 2721: 6(float) Load 2665(lodClamp) + 2722: 174(ptr) AccessChain 2662(texel) 173 + 2723:2009(ResType) ImageSparseSampleDrefImplicitLod 2718 2719 2720 MinLod 2721 + 2724: 6(float) CompositeExtract 2723 1 + Store 2722 2724 + 2725: 47(int) CompositeExtract 2723 0 + 2726: 7(fvec4) Load 2662(texel) + ReturnValue 2726 + FunctionEnd +100(testTextureClamp(): 7(fvec4) Function None 8 + 101: Label + 2729(texel): 63(ptr) Variable Function + Store 2729(texel) 120 + 2730: 122 Load 124(s1D) + 2731: 6(float) Load 127(c1) + 2732: 6(float) Load 2665(lodClamp) + 2733: 7(fvec4) ImageSampleImplicitLod 2730 2731 MinLod 2732 + 2734: 7(fvec4) Load 2729(texel) + 2735: 7(fvec4) FAdd 2734 2733 + Store 2729(texel) 2735 + 2736: 133 Load 135(s2D) + 2737: 52(fvec2) Load 138(c2) + 2738: 6(float) Load 2665(lodClamp) + 2739: 7(fvec4) ImageSampleImplicitLod 2736 2737 MinLod 2738 + 2740: 7(fvec4) Load 2729(texel) + 2741: 7(fvec4) FAdd 2740 2739 + Store 2729(texel) 2741 + 2742: 144 Load 146(s3D) + 2743: 148(fvec3) Load 150(c3) + 2744: 6(float) Load 2665(lodClamp) + 2745: 7(fvec4) ImageSampleImplicitLod 2742 2743 MinLod 2744 + 2746: 7(fvec4) Load 2729(texel) + 2747: 7(fvec4) FAdd 2746 2745 + Store 2729(texel) 2747 + 2748: 156 Load 158(sCube) + 2749: 148(fvec3) Load 150(c3) + 2750: 6(float) Load 2665(lodClamp) + 2751: 7(fvec4) ImageSampleImplicitLod 2748 2749 MinLod 2750 + 2752: 7(fvec4) Load 2729(texel) + 2753: 7(fvec4) FAdd 2752 2751 + Store 2729(texel) 2753 + 2754: 165 Load 167(s1DShadow) + 2755: 148(fvec3) Load 150(c3) + 2756: 6(float) Load 2665(lodClamp) + 2757: 6(float) CompositeExtract 2755 2 + 2758: 6(float) ImageSampleDrefImplicitLod 2754 2755 2757 MinLod 2756 + 2759: 174(ptr) AccessChain 2729(texel) 173 + 2760: 6(float) Load 2759 + 2761: 6(float) FAdd 2760 2758 + 2762: 174(ptr) AccessChain 2729(texel) 173 + Store 2762 2761 + 2763: 180 Load 182(s2DShadow) + 2764: 148(fvec3) Load 150(c3) + 2765: 6(float) Load 2665(lodClamp) + 2766: 6(float) CompositeExtract 2764 2 + 2767: 6(float) ImageSampleDrefImplicitLod 2763 2764 2766 MinLod 2765 + 2768: 174(ptr) AccessChain 2729(texel) 173 + 2769: 6(float) Load 2768 + 2770: 6(float) FAdd 2769 2767 + 2771: 174(ptr) AccessChain 2729(texel) 173 + Store 2771 2770 + 2772: 192 Load 194(sCubeShadow) + 2773: 7(fvec4) Load 197(c4) + 2774: 6(float) Load 2665(lodClamp) + 2775: 6(float) CompositeExtract 2773 3 + 2776: 6(float) ImageSampleDrefImplicitLod 2772 2773 2775 MinLod 2774 + 2777: 174(ptr) AccessChain 2729(texel) 173 + 2778: 6(float) Load 2777 + 2779: 6(float) FAdd 2778 2776 + 2780: 174(ptr) AccessChain 2729(texel) 173 + Store 2780 2779 + 2781: 206 Load 208(s1DArray) + 2782: 52(fvec2) Load 138(c2) + 2783: 6(float) Load 2665(lodClamp) + 2784: 7(fvec4) ImageSampleImplicitLod 2781 2782 MinLod 2783 + 2785: 7(fvec4) Load 2729(texel) + 2786: 7(fvec4) FAdd 2785 2784 + Store 2729(texel) 2786 + 2787: 215 Load 217(s2DArray) + 2788: 148(fvec3) Load 150(c3) + 2789: 6(float) Load 2665(lodClamp) + 2790: 7(fvec4) ImageSampleImplicitLod 2787 2788 MinLod 2789 + 2791: 7(fvec4) Load 2729(texel) + 2792: 7(fvec4) FAdd 2791 2790 + Store 2729(texel) 2792 + 2793: 224 Load 226(sCubeArray) + 2794: 7(fvec4) Load 197(c4) + 2795: 6(float) Load 2665(lodClamp) + 2796: 7(fvec4) ImageSampleImplicitLod 2793 2794 MinLod 2795 + 2797: 7(fvec4) Load 2729(texel) + 2798: 7(fvec4) FAdd 2797 2796 + Store 2729(texel) 2798 + 2799: 233 Load 235(s1DArrayShadow) + 2800: 148(fvec3) Load 150(c3) + 2801: 6(float) Load 2665(lodClamp) + 2802: 6(float) CompositeExtract 2800 2 + 2803: 6(float) ImageSampleDrefImplicitLod 2799 2800 2802 MinLod 2801 + 2804: 174(ptr) AccessChain 2729(texel) 173 + 2805: 6(float) Load 2804 + 2806: 6(float) FAdd 2805 2803 + 2807: 174(ptr) AccessChain 2729(texel) 173 + Store 2807 2806 + 2808: 245 Load 247(s2DArrayShadow) + 2809: 7(fvec4) Load 197(c4) + 2810: 6(float) Load 2665(lodClamp) + 2811: 6(float) CompositeExtract 2809 3 + 2812: 6(float) ImageSampleDrefImplicitLod 2808 2809 2811 MinLod 2810 + 2813: 174(ptr) AccessChain 2729(texel) 173 + 2814: 6(float) Load 2813 + 2815: 6(float) FAdd 2814 2812 + 2816: 174(ptr) AccessChain 2729(texel) 173 + Store 2816 2815 + 2817: 278 Load 280(sCubeArrayShadow) + 2818: 7(fvec4) Load 197(c4) + 2819: 6(float) Load 283(compare) + 2820: 6(float) Load 2665(lodClamp) + 2821: 6(float) ImageSampleDrefImplicitLod 2817 2818 2819 MinLod 2820 + 2822: 174(ptr) AccessChain 2729(texel) 173 + 2823: 6(float) Load 2822 + 2824: 6(float) FAdd 2823 2821 + 2825: 174(ptr) AccessChain 2729(texel) 173 + Store 2825 2824 + 2826: 7(fvec4) Load 2729(texel) + ReturnValue 2826 + FunctionEnd +102(testSparseTextureOffsetClamp(): 7(fvec4) Function None 8 + 103: Label + 2829(texel): 63(ptr) Variable Function + Store 2829(texel) 120 + 2830: 133 Load 135(s2D) + 2831: 52(fvec2) Load 138(c2) + 2832: 6(float) Load 2665(lodClamp) + 2833:1991(ResType) ImageSparseSampleImplicitLod 2830 2831 ConstOffset MinLod 452 2832 + 2834: 7(fvec4) CompositeExtract 2833 1 + Store 2829(texel) 2834 + 2835: 47(int) CompositeExtract 2833 0 + 2836: 144 Load 146(s3D) + 2837: 148(fvec3) Load 150(c3) + 2838: 6(float) Load 2665(lodClamp) + 2839:1991(ResType) ImageSparseSampleImplicitLod 2836 2837 ConstOffset MinLod 459 2838 + 2840: 7(fvec4) CompositeExtract 2839 1 + Store 2829(texel) 2840 + 2841: 47(int) CompositeExtract 2839 0 + 2842: 180 Load 182(s2DShadow) + 2843: 148(fvec3) Load 150(c3) + 2844: 6(float) Load 2665(lodClamp) + 2845: 174(ptr) AccessChain 2829(texel) 173 + 2846: 6(float) CompositeExtract 2843 2 + 2847:2009(ResType) ImageSparseSampleDrefImplicitLod 2842 2843 2846 ConstOffset MinLod 452 2844 + 2848: 6(float) CompositeExtract 2847 1 + Store 2845 2848 + 2849: 47(int) CompositeExtract 2847 0 + 2850: 215 Load 217(s2DArray) + 2851: 148(fvec3) Load 150(c3) + 2852: 6(float) Load 2665(lodClamp) + 2853:1991(ResType) ImageSparseSampleImplicitLod 2850 2851 ConstOffset MinLod 452 2852 + 2854: 7(fvec4) CompositeExtract 2853 1 + Store 2829(texel) 2854 + 2855: 47(int) CompositeExtract 2853 0 + 2856: 245 Load 247(s2DArrayShadow) + 2857: 7(fvec4) Load 197(c4) + 2858: 6(float) Load 2665(lodClamp) + 2859: 174(ptr) AccessChain 2829(texel) 173 + 2860: 6(float) CompositeExtract 2857 3 + 2861:2009(ResType) ImageSparseSampleDrefImplicitLod 2856 2857 2860 ConstOffset MinLod 452 2858 + 2862: 6(float) CompositeExtract 2861 1 + Store 2859 2862 + 2863: 47(int) CompositeExtract 2861 0 + 2864: 7(fvec4) Load 2829(texel) + ReturnValue 2864 + FunctionEnd +104(testTextureOffsetClamp(): 7(fvec4) Function None 8 + 105: Label + 2867(texel): 63(ptr) Variable Function + Store 2867(texel) 120 + 2868: 122 Load 124(s1D) + 2869: 6(float) Load 127(c1) + 2870: 6(float) Load 2665(lodClamp) + 2871: 7(fvec4) ImageSampleImplicitLod 2868 2869 ConstOffset MinLod 445 2870 + 2872: 7(fvec4) Load 2867(texel) + 2873: 7(fvec4) FAdd 2872 2871 + Store 2867(texel) 2873 + 2874: 133 Load 135(s2D) + 2875: 52(fvec2) Load 138(c2) + 2876: 6(float) Load 2665(lodClamp) + 2877: 7(fvec4) ImageSampleImplicitLod 2874 2875 ConstOffset MinLod 452 2876 + 2878: 7(fvec4) Load 2867(texel) + 2879: 7(fvec4) FAdd 2878 2877 + Store 2867(texel) 2879 + 2880: 144 Load 146(s3D) + 2881: 148(fvec3) Load 150(c3) + 2882: 6(float) Load 2665(lodClamp) + 2883: 7(fvec4) ImageSampleImplicitLod 2880 2881 ConstOffset MinLod 459 2882 + 2884: 7(fvec4) Load 2867(texel) + 2885: 7(fvec4) FAdd 2884 2883 + Store 2867(texel) 2885 + 2886: 165 Load 167(s1DShadow) + 2887: 148(fvec3) Load 150(c3) + 2888: 6(float) Load 2665(lodClamp) + 2889: 6(float) CompositeExtract 2887 2 + 2890: 6(float) ImageSampleDrefImplicitLod 2886 2887 2889 ConstOffset MinLod 445 2888 + 2891: 174(ptr) AccessChain 2867(texel) 173 + 2892: 6(float) Load 2891 + 2893: 6(float) FAdd 2892 2890 + 2894: 174(ptr) AccessChain 2867(texel) 173 + Store 2894 2893 + 2895: 180 Load 182(s2DShadow) + 2896: 148(fvec3) Load 150(c3) + 2897: 6(float) Load 2665(lodClamp) + 2898: 6(float) CompositeExtract 2896 2 + 2899: 6(float) ImageSampleDrefImplicitLod 2895 2896 2898 ConstOffset MinLod 452 2897 + 2900: 174(ptr) AccessChain 2867(texel) 173 + 2901: 6(float) Load 2900 + 2902: 6(float) FAdd 2901 2899 + 2903: 174(ptr) AccessChain 2867(texel) 173 + Store 2903 2902 + 2904: 206 Load 208(s1DArray) + 2905: 52(fvec2) Load 138(c2) + 2906: 6(float) Load 2665(lodClamp) + 2907: 7(fvec4) ImageSampleImplicitLod 2904 2905 ConstOffset MinLod 445 2906 + 2908: 7(fvec4) Load 2867(texel) + 2909: 7(fvec4) FAdd 2908 2907 + Store 2867(texel) 2909 + 2910: 215 Load 217(s2DArray) + 2911: 148(fvec3) Load 150(c3) + 2912: 6(float) Load 2665(lodClamp) + 2913: 7(fvec4) ImageSampleImplicitLod 2910 2911 ConstOffset MinLod 452 2912 + 2914: 7(fvec4) Load 2867(texel) + 2915: 7(fvec4) FAdd 2914 2913 + Store 2867(texel) 2915 + 2916: 233 Load 235(s1DArrayShadow) + 2917: 148(fvec3) Load 150(c3) + 2918: 6(float) Load 2665(lodClamp) + 2919: 6(float) CompositeExtract 2917 2 + 2920: 6(float) ImageSampleDrefImplicitLod 2916 2917 2919 ConstOffset MinLod 445 2918 + 2921: 174(ptr) AccessChain 2867(texel) 173 + 2922: 6(float) Load 2921 + 2923: 6(float) FAdd 2922 2920 + 2924: 174(ptr) AccessChain 2867(texel) 173 + Store 2924 2923 + 2925: 245 Load 247(s2DArrayShadow) + 2926: 7(fvec4) Load 197(c4) + 2927: 6(float) Load 2665(lodClamp) + 2928: 6(float) CompositeExtract 2926 3 + 2929: 6(float) ImageSampleDrefImplicitLod 2925 2926 2928 ConstOffset MinLod 452 2927 + 2930: 174(ptr) AccessChain 2867(texel) 173 + 2931: 6(float) Load 2930 + 2932: 6(float) FAdd 2931 2929 + 2933: 174(ptr) AccessChain 2867(texel) 173 + Store 2933 2932 + 2934: 7(fvec4) Load 2867(texel) + ReturnValue 2934 + FunctionEnd +106(testSparseTextureGradClamp(): 7(fvec4) Function None 8 + 107: Label + 2937(texel): 63(ptr) Variable Function + Store 2937(texel) 120 + 2938: 133 Load 135(s2D) + 2939: 52(fvec2) Load 138(c2) + 2940: 52(fvec2) Load 874(dPdxy2) + 2941: 52(fvec2) Load 874(dPdxy2) + 2942: 6(float) Load 2665(lodClamp) + 2943:1991(ResType) ImageSparseSampleExplicitLod 2938 2939 Grad MinLod 2940 2941 2942 + 2944: 7(fvec4) CompositeExtract 2943 1 + Store 2937(texel) 2944 + 2945: 47(int) CompositeExtract 2943 0 + 2946: 144 Load 146(s3D) + 2947: 148(fvec3) Load 150(c3) + 2948: 148(fvec3) Load 882(dPdxy3) + 2949: 148(fvec3) Load 882(dPdxy3) + 2950: 6(float) Load 2665(lodClamp) + 2951:1991(ResType) ImageSparseSampleExplicitLod 2946 2947 Grad MinLod 2948 2949 2950 + 2952: 7(fvec4) CompositeExtract 2951 1 + Store 2937(texel) 2952 + 2953: 47(int) CompositeExtract 2951 0 + 2954: 156 Load 158(sCube) + 2955: 148(fvec3) Load 150(c3) + 2956: 148(fvec3) Load 882(dPdxy3) + 2957: 148(fvec3) Load 882(dPdxy3) + 2958: 6(float) Load 2665(lodClamp) + 2959:1991(ResType) ImageSparseSampleExplicitLod 2954 2955 Grad MinLod 2956 2957 2958 + 2960: 7(fvec4) CompositeExtract 2959 1 + Store 2937(texel) 2960 + 2961: 47(int) CompositeExtract 2959 0 + 2962: 180 Load 182(s2DShadow) + 2963: 148(fvec3) Load 150(c3) + 2964: 52(fvec2) Load 874(dPdxy2) + 2965: 52(fvec2) Load 874(dPdxy2) + 2966: 6(float) Load 2665(lodClamp) + 2967: 174(ptr) AccessChain 2937(texel) 173 + 2968: 6(float) CompositeExtract 2963 2 + 2969:2009(ResType) ImageSparseSampleDrefExplicitLod 2962 2963 2968 Grad MinLod 2964 2965 2966 + 2970: 6(float) CompositeExtract 2969 1 + Store 2967 2970 + 2971: 47(int) CompositeExtract 2969 0 + 2972: 192 Load 194(sCubeShadow) + 2973: 7(fvec4) Load 197(c4) + 2974: 148(fvec3) Load 882(dPdxy3) + 2975: 148(fvec3) Load 882(dPdxy3) + 2976: 6(float) Load 2665(lodClamp) + 2977: 174(ptr) AccessChain 2937(texel) 173 + 2978: 6(float) CompositeExtract 2973 3 + 2979:2009(ResType) ImageSparseSampleDrefExplicitLod 2972 2973 2978 Grad MinLod 2974 2975 2976 + 2980: 6(float) CompositeExtract 2979 1 + Store 2977 2980 + 2981: 47(int) CompositeExtract 2979 0 + 2982: 215 Load 217(s2DArray) + 2983: 148(fvec3) Load 150(c3) + 2984: 52(fvec2) Load 874(dPdxy2) + 2985: 52(fvec2) Load 874(dPdxy2) + 2986: 6(float) Load 2665(lodClamp) + 2987:1991(ResType) ImageSparseSampleExplicitLod 2982 2983 Grad MinLod 2984 2985 2986 + 2988: 7(fvec4) CompositeExtract 2987 1 + Store 2937(texel) 2988 + 2989: 47(int) CompositeExtract 2987 0 + 2990: 245 Load 247(s2DArrayShadow) + 2991: 7(fvec4) Load 197(c4) + 2992: 52(fvec2) Load 874(dPdxy2) + 2993: 52(fvec2) Load 874(dPdxy2) + 2994: 6(float) Load 2665(lodClamp) + 2995: 174(ptr) AccessChain 2937(texel) 173 + 2996: 6(float) CompositeExtract 2991 3 + 2997:2009(ResType) ImageSparseSampleDrefExplicitLod 2990 2991 2996 Grad MinLod 2992 2993 2994 + 2998: 6(float) CompositeExtract 2997 1 + Store 2995 2998 + 2999: 47(int) CompositeExtract 2997 0 + 3000: 224 Load 226(sCubeArray) + 3001: 7(fvec4) Load 197(c4) + 3002: 148(fvec3) Load 882(dPdxy3) + 3003: 148(fvec3) Load 882(dPdxy3) + 3004: 6(float) Load 2665(lodClamp) + 3005:1991(ResType) ImageSparseSampleExplicitLod 3000 3001 Grad MinLod 3002 3003 3004 + 3006: 7(fvec4) CompositeExtract 3005 1 + Store 2937(texel) 3006 + 3007: 47(int) CompositeExtract 3005 0 + 3008: 7(fvec4) Load 2937(texel) + ReturnValue 3008 + FunctionEnd +108(testTextureGradClamp(): 7(fvec4) Function None 8 + 109: Label + 3011(texel): 63(ptr) Variable Function + Store 3011(texel) 120 + 3012: 122 Load 124(s1D) + 3013: 6(float) Load 127(c1) + 3014: 6(float) Load 866(dPdxy1) + 3015: 6(float) Load 866(dPdxy1) + 3016: 6(float) Load 2665(lodClamp) + 3017: 7(fvec4) ImageSampleExplicitLod 3012 3013 Grad MinLod 3014 3015 3016 + 3018: 7(fvec4) Load 3011(texel) + 3019: 7(fvec4) FAdd 3018 3017 + Store 3011(texel) 3019 + 3020: 133 Load 135(s2D) + 3021: 52(fvec2) Load 138(c2) + 3022: 52(fvec2) Load 874(dPdxy2) + 3023: 52(fvec2) Load 874(dPdxy2) + 3024: 6(float) Load 2665(lodClamp) + 3025: 7(fvec4) ImageSampleExplicitLod 3020 3021 Grad MinLod 3022 3023 3024 + 3026: 7(fvec4) Load 3011(texel) + 3027: 7(fvec4) FAdd 3026 3025 + Store 3011(texel) 3027 + 3028: 144 Load 146(s3D) + 3029: 148(fvec3) Load 150(c3) + 3030: 148(fvec3) Load 882(dPdxy3) + 3031: 148(fvec3) Load 882(dPdxy3) + 3032: 6(float) Load 2665(lodClamp) + 3033: 7(fvec4) ImageSampleExplicitLod 3028 3029 Grad MinLod 3030 3031 3032 + 3034: 7(fvec4) Load 3011(texel) + 3035: 7(fvec4) FAdd 3034 3033 + Store 3011(texel) 3035 + 3036: 156 Load 158(sCube) + 3037: 148(fvec3) Load 150(c3) + 3038: 148(fvec3) Load 882(dPdxy3) + 3039: 148(fvec3) Load 882(dPdxy3) + 3040: 6(float) Load 2665(lodClamp) + 3041: 7(fvec4) ImageSampleExplicitLod 3036 3037 Grad MinLod 3038 3039 3040 + 3042: 7(fvec4) Load 3011(texel) + 3043: 7(fvec4) FAdd 3042 3041 + Store 3011(texel) 3043 + 3044: 165 Load 167(s1DShadow) + 3045: 148(fvec3) Load 150(c3) + 3046: 6(float) Load 866(dPdxy1) + 3047: 6(float) Load 866(dPdxy1) + 3048: 6(float) Load 2665(lodClamp) + 3049: 6(float) CompositeExtract 3045 2 + 3050: 6(float) ImageSampleDrefExplicitLod 3044 3045 3049 Grad MinLod 3046 3047 3048 + 3051: 174(ptr) AccessChain 3011(texel) 173 + 3052: 6(float) Load 3051 + 3053: 6(float) FAdd 3052 3050 + 3054: 174(ptr) AccessChain 3011(texel) 173 + Store 3054 3053 + 3055: 180 Load 182(s2DShadow) + 3056: 148(fvec3) Load 150(c3) + 3057: 52(fvec2) Load 874(dPdxy2) + 3058: 52(fvec2) Load 874(dPdxy2) + 3059: 6(float) Load 2665(lodClamp) + 3060: 6(float) CompositeExtract 3056 2 + 3061: 6(float) ImageSampleDrefExplicitLod 3055 3056 3060 Grad MinLod 3057 3058 3059 + 3062: 174(ptr) AccessChain 3011(texel) 173 + 3063: 6(float) Load 3062 + 3064: 6(float) FAdd 3063 3061 + 3065: 174(ptr) AccessChain 3011(texel) 173 + Store 3065 3064 + 3066: 192 Load 194(sCubeShadow) + 3067: 7(fvec4) Load 197(c4) + 3068: 148(fvec3) Load 882(dPdxy3) + 3069: 148(fvec3) Load 882(dPdxy3) + 3070: 6(float) Load 2665(lodClamp) + 3071: 6(float) CompositeExtract 3067 3 + 3072: 6(float) ImageSampleDrefExplicitLod 3066 3067 3071 Grad MinLod 3068 3069 3070 + 3073: 174(ptr) AccessChain 3011(texel) 173 + 3074: 6(float) Load 3073 + 3075: 6(float) FAdd 3074 3072 + 3076: 174(ptr) AccessChain 3011(texel) 173 + Store 3076 3075 + 3077: 206 Load 208(s1DArray) + 3078: 52(fvec2) Load 138(c2) + 3079: 6(float) Load 866(dPdxy1) + 3080: 6(float) Load 866(dPdxy1) + 3081: 6(float) Load 2665(lodClamp) + 3082: 7(fvec4) ImageSampleExplicitLod 3077 3078 Grad MinLod 3079 3080 3081 + 3083: 7(fvec4) Load 3011(texel) + 3084: 7(fvec4) FAdd 3083 3082 + Store 3011(texel) 3084 + 3085: 215 Load 217(s2DArray) + 3086: 148(fvec3) Load 150(c3) + 3087: 52(fvec2) Load 874(dPdxy2) + 3088: 52(fvec2) Load 874(dPdxy2) + 3089: 6(float) Load 2665(lodClamp) + 3090: 7(fvec4) ImageSampleExplicitLod 3085 3086 Grad MinLod 3087 3088 3089 + 3091: 7(fvec4) Load 3011(texel) + 3092: 7(fvec4) FAdd 3091 3090 + Store 3011(texel) 3092 + 3093: 233 Load 235(s1DArrayShadow) + 3094: 148(fvec3) Load 150(c3) + 3095: 6(float) Load 866(dPdxy1) + 3096: 6(float) Load 866(dPdxy1) + 3097: 6(float) Load 2665(lodClamp) + 3098: 6(float) CompositeExtract 3094 2 + 3099: 6(float) ImageSampleDrefExplicitLod 3093 3094 3098 Grad MinLod 3095 3096 3097 + 3100: 174(ptr) AccessChain 3011(texel) 173 + 3101: 6(float) Load 3100 + 3102: 6(float) FAdd 3101 3099 + 3103: 174(ptr) AccessChain 3011(texel) 173 + Store 3103 3102 + 3104: 245 Load 247(s2DArrayShadow) + 3105: 7(fvec4) Load 197(c4) + 3106: 52(fvec2) Load 874(dPdxy2) + 3107: 52(fvec2) Load 874(dPdxy2) + 3108: 6(float) Load 2665(lodClamp) + 3109: 6(float) CompositeExtract 3105 3 + 3110: 6(float) ImageSampleDrefExplicitLod 3104 3105 3109 Grad MinLod 3106 3107 3108 + 3111: 174(ptr) AccessChain 3011(texel) 173 + 3112: 6(float) Load 3111 + 3113: 6(float) FAdd 3112 3110 + 3114: 174(ptr) AccessChain 3011(texel) 173 + Store 3114 3113 + 3115: 224 Load 226(sCubeArray) + 3116: 7(fvec4) Load 197(c4) + 3117: 148(fvec3) Load 882(dPdxy3) + 3118: 148(fvec3) Load 882(dPdxy3) + 3119: 6(float) Load 2665(lodClamp) + 3120: 7(fvec4) ImageSampleExplicitLod 3115 3116 Grad MinLod 3117 3118 3119 + 3121: 7(fvec4) Load 3011(texel) + 3122: 7(fvec4) FAdd 3121 3120 + Store 3011(texel) 3122 + 3123: 7(fvec4) Load 3011(texel) + ReturnValue 3123 + FunctionEnd +110(testSparseTextureGradOffsetClamp(): 7(fvec4) Function None 8 + 111: Label + 3126(texel): 63(ptr) Variable Function + Store 3126(texel) 120 + 3127: 133 Load 135(s2D) + 3128: 52(fvec2) Load 138(c2) + 3129: 52(fvec2) Load 874(dPdxy2) + 3130: 52(fvec2) Load 874(dPdxy2) + 3131: 6(float) Load 2665(lodClamp) + 3132:1991(ResType) ImageSparseSampleExplicitLod 3127 3128 Grad ConstOffset MinLod 3129 3130 452 3131 + 3133: 7(fvec4) CompositeExtract 3132 1 + Store 3126(texel) 3133 + 3134: 47(int) CompositeExtract 3132 0 + 3135: 144 Load 146(s3D) + 3136: 148(fvec3) Load 150(c3) + 3137: 148(fvec3) Load 882(dPdxy3) + 3138: 148(fvec3) Load 882(dPdxy3) + 3139: 6(float) Load 2665(lodClamp) + 3140:1991(ResType) ImageSparseSampleExplicitLod 3135 3136 Grad ConstOffset MinLod 3137 3138 459 3139 + 3141: 7(fvec4) CompositeExtract 3140 1 + Store 3126(texel) 3141 + 3142: 47(int) CompositeExtract 3140 0 + 3143: 180 Load 182(s2DShadow) + 3144: 148(fvec3) Load 150(c3) + 3145: 52(fvec2) Load 874(dPdxy2) + 3146: 52(fvec2) Load 874(dPdxy2) + 3147: 6(float) Load 2665(lodClamp) + 3148: 174(ptr) AccessChain 3126(texel) 173 + 3149: 6(float) CompositeExtract 3144 2 + 3150:2009(ResType) ImageSparseSampleDrefExplicitLod 3143 3144 3149 Grad ConstOffset MinLod 3145 3146 452 3147 + 3151: 6(float) CompositeExtract 3150 1 + Store 3148 3151 + 3152: 47(int) CompositeExtract 3150 0 + 3153: 215 Load 217(s2DArray) + 3154: 148(fvec3) Load 150(c3) + 3155: 52(fvec2) Load 874(dPdxy2) + 3156: 52(fvec2) Load 874(dPdxy2) + 3157: 6(float) Load 2665(lodClamp) + 3158:1991(ResType) ImageSparseSampleExplicitLod 3153 3154 Grad ConstOffset MinLod 3155 3156 452 3157 + 3159: 7(fvec4) CompositeExtract 3158 1 + Store 3126(texel) 3159 + 3160: 47(int) CompositeExtract 3158 0 + 3161: 245 Load 247(s2DArrayShadow) + 3162: 7(fvec4) Load 197(c4) + 3163: 52(fvec2) Load 874(dPdxy2) + 3164: 52(fvec2) Load 874(dPdxy2) + 3165: 6(float) Load 2665(lodClamp) + 3166: 174(ptr) AccessChain 3126(texel) 173 + 3167: 6(float) CompositeExtract 3162 3 + 3168:2009(ResType) ImageSparseSampleDrefExplicitLod 3161 3162 3167 Grad ConstOffset MinLod 3163 3164 452 3165 + 3169: 6(float) CompositeExtract 3168 1 + Store 3166 3169 + 3170: 47(int) CompositeExtract 3168 0 + 3171: 7(fvec4) Load 3126(texel) + ReturnValue 3171 + FunctionEnd +112(testTextureGradOffsetClamp(): 7(fvec4) Function None 8 + 113: Label + 3174(texel): 63(ptr) Variable Function + Store 3174(texel) 120 + 3175: 122 Load 124(s1D) + 3176: 6(float) Load 127(c1) + 3177: 6(float) Load 866(dPdxy1) + 3178: 6(float) Load 866(dPdxy1) + 3179: 6(float) Load 2665(lodClamp) + 3180: 7(fvec4) ImageSampleExplicitLod 3175 3176 Grad ConstOffset MinLod 3177 3178 445 3179 + 3181: 7(fvec4) Load 3174(texel) + 3182: 7(fvec4) FAdd 3181 3180 + Store 3174(texel) 3182 + 3183: 133 Load 135(s2D) + 3184: 52(fvec2) Load 138(c2) + 3185: 52(fvec2) Load 874(dPdxy2) + 3186: 52(fvec2) Load 874(dPdxy2) + 3187: 6(float) Load 2665(lodClamp) + 3188: 7(fvec4) ImageSampleExplicitLod 3183 3184 Grad ConstOffset MinLod 3185 3186 452 3187 + 3189: 7(fvec4) Load 3174(texel) + 3190: 7(fvec4) FAdd 3189 3188 + Store 3174(texel) 3190 + 3191: 144 Load 146(s3D) + 3192: 148(fvec3) Load 150(c3) + 3193: 148(fvec3) Load 882(dPdxy3) + 3194: 148(fvec3) Load 882(dPdxy3) + 3195: 6(float) Load 2665(lodClamp) + 3196: 7(fvec4) ImageSampleExplicitLod 3191 3192 Grad ConstOffset MinLod 3193 3194 459 3195 + 3197: 7(fvec4) Load 3174(texel) + 3198: 7(fvec4) FAdd 3197 3196 + Store 3174(texel) 3198 + 3199: 165 Load 167(s1DShadow) + 3200: 148(fvec3) Load 150(c3) + 3201: 6(float) Load 866(dPdxy1) + 3202: 6(float) Load 866(dPdxy1) + 3203: 6(float) Load 2665(lodClamp) + 3204: 6(float) CompositeExtract 3200 2 + 3205: 6(float) ImageSampleDrefExplicitLod 3199 3200 3204 Grad ConstOffset MinLod 3201 3202 445 3203 + 3206: 174(ptr) AccessChain 3174(texel) 173 + 3207: 6(float) Load 3206 + 3208: 6(float) FAdd 3207 3205 + 3209: 174(ptr) AccessChain 3174(texel) 173 + Store 3209 3208 + 3210: 180 Load 182(s2DShadow) + 3211: 148(fvec3) Load 150(c3) + 3212: 52(fvec2) Load 874(dPdxy2) + 3213: 52(fvec2) Load 874(dPdxy2) + 3214: 6(float) Load 2665(lodClamp) + 3215: 6(float) CompositeExtract 3211 2 + 3216: 6(float) ImageSampleDrefExplicitLod 3210 3211 3215 Grad ConstOffset MinLod 3212 3213 452 3214 + 3217: 174(ptr) AccessChain 3174(texel) 173 + 3218: 6(float) Load 3217 + 3219: 6(float) FAdd 3218 3216 + 3220: 174(ptr) AccessChain 3174(texel) 173 + Store 3220 3219 + 3221: 206 Load 208(s1DArray) + 3222: 52(fvec2) Load 138(c2) + 3223: 6(float) Load 866(dPdxy1) + 3224: 6(float) Load 866(dPdxy1) + 3225: 6(float) Load 2665(lodClamp) + 3226: 7(fvec4) ImageSampleExplicitLod 3221 3222 Grad ConstOffset MinLod 3223 3224 445 3225 + 3227: 7(fvec4) Load 3174(texel) + 3228: 7(fvec4) FAdd 3227 3226 + Store 3174(texel) 3228 + 3229: 215 Load 217(s2DArray) + 3230: 148(fvec3) Load 150(c3) + 3231: 52(fvec2) Load 874(dPdxy2) + 3232: 52(fvec2) Load 874(dPdxy2) + 3233: 6(float) Load 2665(lodClamp) + 3234: 7(fvec4) ImageSampleExplicitLod 3229 3230 Grad ConstOffset MinLod 3231 3232 452 3233 + 3235: 7(fvec4) Load 3174(texel) + 3236: 7(fvec4) FAdd 3235 3234 + Store 3174(texel) 3236 + 3237: 233 Load 235(s1DArrayShadow) + 3238: 148(fvec3) Load 150(c3) + 3239: 6(float) Load 866(dPdxy1) + 3240: 6(float) Load 866(dPdxy1) + 3241: 6(float) Load 2665(lodClamp) + 3242: 6(float) CompositeExtract 3238 2 + 3243: 6(float) ImageSampleDrefExplicitLod 3237 3238 3242 Grad ConstOffset MinLod 3239 3240 445 3241 + 3244: 174(ptr) AccessChain 3174(texel) 173 + 3245: 6(float) Load 3244 + 3246: 6(float) FAdd 3245 3243 + 3247: 174(ptr) AccessChain 3174(texel) 173 + Store 3247 3246 + 3248: 245 Load 247(s2DArrayShadow) + 3249: 7(fvec4) Load 197(c4) + 3250: 52(fvec2) Load 874(dPdxy2) + 3251: 52(fvec2) Load 874(dPdxy2) + 3252: 6(float) Load 2665(lodClamp) + 3253: 6(float) CompositeExtract 3249 3 + 3254: 6(float) ImageSampleDrefExplicitLod 3248 3249 3253 Grad ConstOffset MinLod 3250 3251 452 3252 + 3255: 174(ptr) AccessChain 3174(texel) 173 + 3256: 6(float) Load 3255 + 3257: 6(float) FAdd 3256 3254 + 3258: 174(ptr) AccessChain 3174(texel) 173 + Store 3258 3257 + 3259: 7(fvec4) Load 3174(texel) + ReturnValue 3259 + FunctionEnd +114(testCombinedTextureSampler(): 7(fvec4) Function None 8 + 115: Label + 3262(texel): 63(ptr) Variable Function + Store 3262(texel) 120 + 3265: 121 Load 3264(t1D) + 3269: 3266 Load 3268(s) + 3270: 122 SampledImage 3265 3269 + 3271: 6(float) Load 127(c1) + 3272: 7(fvec4) ImageSampleImplicitLod 3270 3271 + 3273: 7(fvec4) Load 3262(texel) + 3274: 7(fvec4) FAdd 3273 3272 + Store 3262(texel) 3274 + 3277: 132 Load 3276(t2D) + 3278: 3266 Load 3268(s) + 3279: 133 SampledImage 3277 3278 + 3280: 52(fvec2) Load 138(c2) + 3281: 7(fvec4) ImageSampleImplicitLod 3279 3280 + 3282: 7(fvec4) Load 3262(texel) + 3283: 7(fvec4) FAdd 3282 3281 + Store 3262(texel) 3283 + 3286: 143 Load 3285(t3D) + 3287: 3266 Load 3268(s) + 3288: 144 SampledImage 3286 3287 + 3289: 148(fvec3) Load 150(c3) + 3290: 7(fvec4) ImageSampleImplicitLod 3288 3289 + 3291: 7(fvec4) Load 3262(texel) + 3292: 7(fvec4) FAdd 3291 3290 + Store 3262(texel) 3292 + 3295: 155 Load 3294(tCube) + 3296: 3266 Load 3268(s) + 3297: 156 SampledImage 3295 3296 + 3298: 148(fvec3) Load 150(c3) + 3299: 7(fvec4) ImageSampleImplicitLod 3297 3298 + 3300: 7(fvec4) Load 3262(texel) + 3301: 7(fvec4) FAdd 3300 3299 + Store 3262(texel) 3301 + 3302: 121 Load 3264(t1D) + 3304: 3266 Load 3303(sShadow) + 3305: 165 SampledImage 3302 3304 + 3306: 148(fvec3) Load 150(c3) + 3307: 6(float) CompositeExtract 3306 2 + 3308: 6(float) ImageSampleDrefImplicitLod 3305 3306 3307 + 3309: 174(ptr) AccessChain 3262(texel) 173 + 3310: 6(float) Load 3309 + 3311: 6(float) FAdd 3310 3308 + 3312: 174(ptr) AccessChain 3262(texel) 173 + Store 3312 3311 + 3313: 132 Load 3276(t2D) + 3314: 3266 Load 3303(sShadow) + 3315: 180 SampledImage 3313 3314 + 3316: 148(fvec3) Load 150(c3) + 3317: 6(float) CompositeExtract 3316 2 + 3318: 6(float) ImageSampleDrefImplicitLod 3315 3316 3317 + 3319: 174(ptr) AccessChain 3262(texel) 173 + 3320: 6(float) Load 3319 + 3321: 6(float) FAdd 3320 3318 + 3322: 174(ptr) AccessChain 3262(texel) 173 + Store 3322 3321 + 3323: 155 Load 3294(tCube) + 3324: 3266 Load 3303(sShadow) + 3325: 192 SampledImage 3323 3324 + 3326: 7(fvec4) Load 197(c4) + 3327: 6(float) CompositeExtract 3326 3 + 3328: 6(float) ImageSampleDrefImplicitLod 3325 3326 3327 + 3329: 174(ptr) AccessChain 3262(texel) 173 + 3330: 6(float) Load 3329 + 3331: 6(float) FAdd 3330 3328 + 3332: 174(ptr) AccessChain 3262(texel) 173 + Store 3332 3331 + 3335: 205 Load 3334(t1DArray) + 3336: 3266 Load 3268(s) + 3337: 206 SampledImage 3335 3336 + 3338: 52(fvec2) Load 138(c2) + 3339: 7(fvec4) ImageSampleImplicitLod 3337 3338 + 3340: 7(fvec4) Load 3262(texel) + 3341: 7(fvec4) FAdd 3340 3339 + Store 3262(texel) 3341 + 3344: 214 Load 3343(t2DArray) + 3345: 3266 Load 3268(s) + 3346: 215 SampledImage 3344 3345 + 3347: 148(fvec3) Load 150(c3) + 3348: 7(fvec4) ImageSampleImplicitLod 3346 3347 + 3349: 7(fvec4) Load 3262(texel) + 3350: 7(fvec4) FAdd 3349 3348 + Store 3262(texel) 3350 + 3353: 223 Load 3352(tCubeArray) + 3354: 3266 Load 3268(s) + 3355: 224 SampledImage 3353 3354 + 3356: 7(fvec4) Load 197(c4) + 3357: 7(fvec4) ImageSampleImplicitLod 3355 3356 + 3358: 7(fvec4) Load 3262(texel) + 3359: 7(fvec4) FAdd 3358 3357 + Store 3262(texel) 3359 + 3360: 205 Load 3334(t1DArray) + 3361: 3266 Load 3303(sShadow) + 3362: 233 SampledImage 3360 3361 + 3363: 148(fvec3) Load 150(c3) + 3364: 6(float) CompositeExtract 3363 2 + 3365: 6(float) ImageSampleDrefImplicitLod 3362 3363 3364 + 3366: 174(ptr) AccessChain 3262(texel) 173 + 3367: 6(float) Load 3366 + 3368: 6(float) FAdd 3367 3365 + 3369: 174(ptr) AccessChain 3262(texel) 173 + Store 3369 3368 + 3370: 214 Load 3343(t2DArray) + 3371: 3266 Load 3303(sShadow) + 3372: 245 SampledImage 3370 3371 + 3373: 7(fvec4) Load 197(c4) + 3374: 6(float) CompositeExtract 3373 3 + 3375: 6(float) ImageSampleDrefImplicitLod 3372 3373 3374 + 3376: 174(ptr) AccessChain 3262(texel) 173 + 3377: 6(float) Load 3376 + 3378: 6(float) FAdd 3377 3375 + 3379: 174(ptr) AccessChain 3262(texel) 173 + Store 3379 3378 + 3382: 256 Load 3381(t2DRect) + 3383: 3266 Load 3268(s) + 3384: 257 SampledImage 3382 3383 + 3385: 52(fvec2) Load 138(c2) + 3386: 7(fvec4) ImageSampleImplicitLod 3384 3385 + 3387: 7(fvec4) Load 3262(texel) + 3388: 7(fvec4) FAdd 3387 3386 + Store 3262(texel) 3388 + 3389: 256 Load 3381(t2DRect) + 3390: 3266 Load 3303(sShadow) + 3391: 266 SampledImage 3389 3390 + 3392: 148(fvec3) Load 150(c3) + 3393: 6(float) CompositeExtract 3392 2 + 3394: 6(float) ImageSampleDrefImplicitLod 3391 3392 3393 + 3395: 174(ptr) AccessChain 3262(texel) 173 + 3396: 6(float) Load 3395 + 3397: 6(float) FAdd 3396 3394 + 3398: 174(ptr) AccessChain 3262(texel) 173 + Store 3398 3397 + 3399: 223 Load 3352(tCubeArray) + 3400: 3266 Load 3303(sShadow) + 3401: 278 SampledImage 3399 3400 + 3402: 7(fvec4) Load 197(c4) + 3403: 6(float) Load 283(compare) + 3404: 6(float) ImageSampleDrefImplicitLod 3401 3402 3403 + 3405: 174(ptr) AccessChain 3262(texel) 173 + 3406: 6(float) Load 3405 + 3407: 6(float) FAdd 3406 3404 + 3408: 174(ptr) AccessChain 3262(texel) 173 + Store 3408 3407 + 3409: 7(fvec4) Load 3262(texel) + ReturnValue 3409 + FunctionEnd +116(testSubpassLoad(): 7(fvec4) Function None 8 + 117: Label + 3415: 3412 Load 3414(subpass) + 3417: 7(fvec4) ImageRead 3415 3416 + 3421: 3418 Load 3420(subpassMS) + 3422: 7(fvec4) ImageRead 3421 3416 Sample 799 + 3423: 7(fvec4) FAdd 3417 3422 + ReturnValue 3423 + FunctionEnd diff --git a/Test/spv.floatFetch.frag b/Test/spv.floatFetch.frag new file mode 100644 index 0000000000..c02ddf35fa --- /dev/null +++ b/Test/spv.floatFetch.frag @@ -0,0 +1,941 @@ +#version 450 core + +#extension GL_ARB_sparse_texture2: enable +#extension GL_ARB_sparse_texture_clamp: enable +#extension GL_AMD_texture_gather_bias_lod: enable + +layout(set = 0, binding = 0) uniform sampler1D s1D; +layout(set = 0, binding = 1) uniform sampler2D s2D; +layout(set = 0, binding = 2) uniform sampler3D s3D; +layout(set = 0, binding = 3) uniform sampler2DRect s2DRect; +layout(set = 0, binding = 4) uniform samplerCube sCube; +layout(set = 0, binding = 5) uniform samplerBuffer sBuffer; +layout(set = 0, binding = 6) uniform sampler2DMS s2DMS; +layout(set = 0, binding = 7) uniform sampler1DArray s1DArray; +layout(set = 0, binding = 8) uniform sampler2DArray s2DArray; +layout(set = 0, binding = 9) uniform samplerCubeArray sCubeArray; +layout(set = 0, binding = 10) uniform sampler2DMSArray s2DMSArray; + +layout(set = 0, binding = 11) uniform sampler1DShadow s1DShadow; +layout(set = 0, binding = 12) uniform sampler2DShadow s2DShadow; +layout(set = 0, binding = 13) uniform sampler2DRectShadow s2DRectShadow; +layout(set = 0, binding = 14) uniform samplerCubeShadow sCubeShadow; +layout(set = 0, binding = 15) uniform sampler1DArrayShadow s1DArrayShadow; +layout(set = 0, binding = 16) uniform sampler2DArrayShadow s2DArrayShadow; +layout(set = 0, binding = 17) uniform samplerCubeArrayShadow sCubeArrayShadow; + +layout(set = 1, binding = 0) layout(rgba16f) uniform image1D i1D; +layout(set = 1, binding = 1) layout(rgba16f) uniform image2D i2D; +layout(set = 1, binding = 2) layout(rgba16f) uniform image3D i3D; +layout(set = 1, binding = 3) layout(rgba16f) uniform image2DRect i2DRect; +layout(set = 1, binding = 4) layout(rgba16f) uniform imageCube iCube; +layout(set = 1, binding = 5) layout(rgba16f) uniform image1DArray i1DArray; +layout(set = 1, binding = 6) layout(rgba16f) uniform image2DArray i2DArray; +layout(set = 1, binding = 7) layout(rgba16f) uniform imageCubeArray iCubeArray; +layout(set = 1, binding = 8) layout(rgba16f) uniform imageBuffer iBuffer; +layout(set = 1, binding = 9) layout(rgba16f) uniform image2DMS i2DMS; +layout(set = 1, binding = 10) layout(rgba16f) uniform image2DMSArray i2DMSArray; + +layout(set = 2, binding = 0) uniform texture1D t1D; +layout(set = 2, binding = 1) uniform texture2D t2D; +layout(set = 2, binding = 2) uniform texture3D t3D; +layout(set = 2, binding = 3) uniform texture2DRect t2DRect; +layout(set = 2, binding = 4) uniform textureCube tCube; +layout(set = 2, binding = 5) uniform texture1DArray t1DArray; +layout(set = 2, binding = 6) uniform texture2DArray t2DArray; +layout(set = 2, binding = 7) uniform textureCubeArray tCubeArray; +layout(set = 2, binding = 8) uniform textureBuffer tBuffer; +layout(set = 2, binding = 9) uniform texture2DMS t2DMS; +layout(set = 2, binding = 10) uniform texture2DMSArray t2DMSArray; + +layout(set = 2, binding = 11) uniform sampler s; +layout(set = 2, binding = 12) uniform samplerShadow sShadow; + +layout(set = 3, binding = 0, input_attachment_index = 0) uniform subpassInput subpass; +layout(set = 3, binding = 1, input_attachment_index = 0) uniform subpassInputMS subpassMS; + +layout(location = 0) in float c1; +layout(location = 1) in vec2 c2; +layout(location = 2) in vec3 c3; +layout(location = 3) in vec4 c4; + +layout(location = 4) in float compare; +layout(location = 5) in float lod; +layout(location = 6) in float bias; +layout(location = 7) in float lodClamp; + +layout(location = 8) in float dPdxy1; +layout(location = 9) in vec2 dPdxy2; +layout(location = 10) in vec3 dPdxy3; + +const int offset1 = 1; +const ivec2 offset2 = ivec2(1); +const ivec3 offset3 = ivec3(1); +const ivec2 offsets[4] = { offset2, offset2, offset2, offset2 }; + +layout(location = 0) out vec4 fragColor; + +vec4 testTexture() +{ + vec4 texel = vec4(0.0); + + texel += texture(s1D, c1); + texel += texture(s2D, c2); + texel += texture(s3D, c3); + texel += texture(sCube, c3); + texel.x += texture(s1DShadow, c3); + texel.x += texture(s2DShadow, c3); + texel.x += texture(sCubeShadow, c4); + texel += texture(s1DArray, c2); + texel += texture(s2DArray, c3); + texel += texture(sCubeArray, c4); + texel.x += texture(s1DArrayShadow, c3); + texel.x += texture(s2DArrayShadow, c4); + texel += texture(s2DRect, c2); + texel.x += texture(s2DRectShadow, c3); + texel.x += texture(sCubeArrayShadow, c4, compare); + + return texel; +} + +vec4 testTextureProj() +{ + vec4 texel = vec4(0.0); + + texel += textureProj(s1D, c2); + texel += textureProj(s1D, c4); + texel += textureProj(s2D, c3); + texel += textureProj(s2D, c4); + texel += textureProj(s3D, c4); + texel.x += textureProj(s1DShadow, c4); + texel.x += textureProj(s2DShadow, c4); + texel += textureProj(s2DRect, c3); + texel += textureProj(s2DRect, c4); + texel.x += textureProj(s2DRectShadow, c4); + + return texel; +} + +vec4 testTextureLod() +{ + vec4 texel = vec4(0.0); + + texel += textureLod(s1D, c1, lod); + texel += textureLod(s2D, c2, lod); + texel += textureLod(s3D, c3, lod); + texel += textureLod(sCube, c3, lod); + texel.x += textureLod(s1DShadow, c3, lod); + texel.x += textureLod(s2DShadow, c3, lod); + texel += textureLod(s1DArray, c2, lod); + texel += textureLod(s2DArray, c3, lod); + texel.x += textureLod(s1DArrayShadow, c3, lod); + texel += textureLod(sCubeArray, c4, lod); + + return texel; +} + +vec4 testTextureOffset() +{ + vec4 texel = vec4(0.0); + + texel += textureOffset(s1D, c1, offset1); + texel += textureOffset(s2D, c2, offset2); + texel += textureOffset(s3D, c3, offset3); + texel += textureOffset(s2DRect, c2, offset2); + texel.x += textureOffset(s2DRectShadow, c3, offset2); + texel.x += textureOffset(s1DShadow, c3, offset1); + texel.x += textureOffset(s2DShadow, c3, offset2); + texel += textureOffset(s1DArray, c2, offset1); + texel += textureOffset(s2DArray, c3, offset2); + texel.x += textureOffset(s1DArrayShadow, c3, offset1); + texel.x += textureOffset(s2DArrayShadow, c4, offset2); + + return texel; +} + +vec4 testTextureProjOffset() +{ + vec4 texel = vec4(0.0); + + texel += textureProjOffset(s1D, c2, offset1); + texel += textureProjOffset(s1D, c4, offset1); + texel += textureProjOffset(s2D, c3, offset2); + texel += textureProjOffset(s2D, c4, offset2); + texel += textureProjOffset(s3D, c4, offset3); + texel += textureProjOffset(s2DRect, c3, offset2); + texel += textureProjOffset(s2DRect, c4, offset2); + texel.x += textureProjOffset(s2DRectShadow, c4, offset2); + texel.x += textureProjOffset(s1DShadow, c4, offset1); + texel.x += textureProjOffset(s2DShadow, c4, offset2); + + return texel; +} + +vec4 testTextureLodOffset() +{ + vec4 texel = vec4(0.0); + + texel += textureLodOffset(s1D, c1, lod, offset1); + texel += textureLodOffset(s2D, c2, lod, offset2); + texel += textureLodOffset(s3D, c3, lod, offset3); + texel.x += textureLodOffset(s1DShadow, c3, lod, offset1); + texel.x += textureLodOffset(s2DShadow, c3, lod, offset2); + texel += textureLodOffset(s1DArray, c2, lod, offset1); + texel += textureLodOffset(s2DArray, c3, lod, offset2); + texel.x += textureLodOffset(s1DArrayShadow, c3, lod, offset1); + + return texel; +} + +vec4 testTextureProjLodOffset() +{ + vec4 texel = vec4(0.0); + + texel += textureProjLodOffset(s1D, c2, lod, offset1); + texel += textureProjLodOffset(s1D, c4, lod, offset1); + texel += textureProjLodOffset(s2D, c3, lod, offset2); + texel += textureProjLodOffset(s2D, c4, lod, offset2); + texel += textureProjLodOffset(s3D, c4, lod, offset3); + texel.x += textureProjLodOffset(s1DShadow, c4, lod, offset1); + texel.x += textureProjLodOffset(s2DShadow, c4, lod, offset2); + + return texel; +} + +vec4 testTexelFetch() +{ + vec4 texel = vec4(0.0); + + texel += texelFetch(s1D, int(c1), int(lod)); + texel += texelFetch(s2D, ivec2(c2), int(lod)); + texel += texelFetch(s3D, ivec3(c3), int(lod)); + texel += texelFetch(s2DRect, ivec2(c2)); + texel += texelFetch(s1DArray, ivec2(c2), int(lod)); + texel += texelFetch(s2DArray, ivec3(c3), int(lod)); + texel += texelFetch(sBuffer, int(c1)); + texel += texelFetch(s2DMS, ivec2(c2), 1); + texel += texelFetch(s2DMSArray, ivec3(c3), 2); + + return texel; +} + +vec4 testTexelFetchOffset() +{ + vec4 texel = vec4(0.0); + + texel += texelFetchOffset(s1D, int(c1), int(lod), offset1); + texel += texelFetchOffset(s2D, ivec2(c2), int(lod), offset2); + texel += texelFetchOffset(s3D, ivec3(c3), int(lod), offset3); + texel += texelFetchOffset(s2DRect, ivec2(c2), offset2); + texel += texelFetchOffset(s1DArray, ivec2(c2), int(lod), offset1); + texel += texelFetchOffset(s2DArray, ivec3(c3), int(lod), offset2); + + return texel; +} + +vec4 testTextureGrad() +{ + vec4 texel = vec4(0.0); + + texel += textureGrad(s1D, c1, dPdxy1, dPdxy1); + texel += textureGrad(s2D, c2, dPdxy2, dPdxy2); + texel += textureGrad(s3D, c3, dPdxy3, dPdxy3); + texel += textureGrad(sCube, c3, dPdxy3, dPdxy3); + texel += textureGrad(s2DRect, c2, dPdxy2, dPdxy2); + texel.x += textureGrad(s2DRectShadow, c3, dPdxy2, dPdxy2); + texel.x += textureGrad(s1DShadow, c3, dPdxy1, dPdxy1); + texel.x += textureGrad(s2DShadow, c3, dPdxy2, dPdxy2); + texel.x += textureGrad(sCubeShadow, c4, dPdxy3, dPdxy3); + texel += textureGrad(s1DArray, c2, dPdxy1, dPdxy1); + texel += textureGrad(s2DArray, c3, dPdxy2, dPdxy2); + texel.x += textureGrad(s1DArrayShadow, c3, dPdxy1, dPdxy1); + texel.x += textureGrad(s2DArrayShadow, c4, dPdxy2, dPdxy2); + texel += textureGrad(sCubeArray, c4, dPdxy3, dPdxy3); + + return texel; +} + +vec4 testTextureGradOffset() +{ + vec4 texel = vec4(0.0); + + texel += textureGradOffset(s1D, c1, dPdxy1, dPdxy1, offset1); + texel += textureGradOffset(s2D, c2, dPdxy2, dPdxy2, offset2); + texel += textureGradOffset(s3D, c3, dPdxy3, dPdxy3, offset3); + texel += textureGradOffset(s2DRect, c2, dPdxy2, dPdxy2, offset2); + texel.x += textureGradOffset(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2); + texel.x += textureGradOffset(s1DShadow, c3, dPdxy1, dPdxy1, offset1); + texel.x += textureGradOffset(s2DShadow, c3, dPdxy2, dPdxy2, offset2); + texel += textureGradOffset(s1DArray, c2, dPdxy1, dPdxy1, offset1); + texel += textureGradOffset(s2DArray, c3, dPdxy2, dPdxy2, offset2); + texel.x += textureGradOffset(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1); + texel.x += textureGradOffset(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2); + + return texel; +} + +vec4 testTextureProjGrad() +{ + vec4 texel = vec4(0.0); + + texel += textureProjGrad(s1D, c2, dPdxy1, dPdxy1); + texel += textureProjGrad(s1D, c4, dPdxy1, dPdxy1); + texel += textureProjGrad(s2D, c3, dPdxy2, dPdxy2); + texel += textureProjGrad(s2D, c4, dPdxy2, dPdxy2); + texel += textureProjGrad(s3D, c4, dPdxy3, dPdxy3); + texel += textureProjGrad(s2DRect, c3, dPdxy2, dPdxy2); + texel += textureProjGrad(s2DRect, c4, dPdxy2, dPdxy2); + texel.x += textureProjGrad(s2DRectShadow, c4, dPdxy2, dPdxy2); + texel.x += textureProjGrad(s1DShadow, c4, dPdxy1, dPdxy1); + texel.x += textureProjGrad(s2DShadow, c4, dPdxy2, dPdxy2); + + return texel; +} + +vec4 testTextureProjGradoffset() +{ + vec4 texel = vec4(0.0); + + texel += textureProjGradOffset(s1D, c2, dPdxy1, dPdxy1, offset1); + texel += textureProjGradOffset(s1D, c4, dPdxy1, dPdxy1, offset1); + texel += textureProjGradOffset(s2D, c3, dPdxy2, dPdxy2, offset2); + texel += textureProjGradOffset(s2D, c4, dPdxy2, dPdxy2, offset2); + texel += textureProjGradOffset(s2DRect, c3, dPdxy2, dPdxy2, offset2); + texel += textureProjGradOffset(s2DRect, c4, dPdxy2, dPdxy2, offset2); + texel.x += textureProjGradOffset(s2DRectShadow, c4, dPdxy2, dPdxy2, offset2); + texel += textureProjGradOffset(s3D, c4, dPdxy3, dPdxy3, offset3); + texel.x += textureProjGradOffset(s1DShadow, c4, dPdxy1, dPdxy1, offset1); + texel.x += textureProjGradOffset(s2DShadow, c4, dPdxy2, dPdxy2, offset2); + + return texel; +} + +vec4 testTextureGather() +{ + vec4 texel = vec4(0.0); + + texel += textureGather(s2D, c2, 0); + texel += textureGather(s2DArray, c3, 0); + texel += textureGather(sCube, c3, 0); + texel += textureGather(sCubeArray, c4, 0); + texel += textureGather(s2DRect, c2, 0); + texel += textureGather(s2DShadow, c2, compare); + texel += textureGather(s2DArrayShadow, c3, compare); + texel += textureGather(sCubeShadow, c3, compare); + texel += textureGather(sCubeArrayShadow, c4, compare); + texel += textureGather(s2DRectShadow, c2, compare); + + return texel; +} + +vec4 testTextureGatherOffset() +{ + vec4 texel = vec4(0.0); + + texel += textureGatherOffset(s2D, c2, offset2, 0); + texel += textureGatherOffset(s2DArray, c3, offset2, 0); + texel += textureGatherOffset(s2DRect, c2, offset2, 0); + texel += textureGatherOffset(s2DShadow, c2, compare, offset2); + texel += textureGatherOffset(s2DArrayShadow, c3, compare, offset2); + texel += textureGatherOffset(s2DRectShadow, c2, compare, offset2); + + return texel; +} + +vec4 testTextureGatherOffsets() +{ + vec4 texel = vec4(0.0); + + texel += textureGatherOffsets(s2D, c2, offsets, 0); + texel += textureGatherOffsets(s2DArray, c3, offsets, 0); + texel += textureGatherOffsets(s2DRect, c2, offsets, 0); + texel += textureGatherOffsets(s2DShadow, c2, compare, offsets); + texel += textureGatherOffsets(s2DArrayShadow, c3, compare, offsets); + texel += textureGatherOffsets(s2DRectShadow, c2, compare, offsets); + + return texel; +} + +vec4 testTextureGatherLod() +{ + vec4 texel = vec4(0.0); + + texel += textureGatherLodAMD(s2D, c2, lod, 0); + texel += textureGatherLodAMD(s2DArray, c3, lod, 0); + texel += textureGatherLodAMD(sCube, c3, lod, 0); + texel += textureGatherLodAMD(sCubeArray, c4, lod, 0); + + return texel; +} + +vec4 testTextureGatherLodOffset() +{ + vec4 texel = vec4(0.0); + + texel += textureGatherLodOffsetAMD(s2D, c2, lod, offset2, 0); + texel += textureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, 0); + + return texel; +} + +vec4 testTextureGatherLodOffsets() +{ + vec4 texel = vec4(0.0); + + texel += textureGatherLodOffsetsAMD(s2D, c2, lod, offsets, 0); + texel += textureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, 0); + + return texel; +} + +ivec4 testTextureSize() +{ + ivec4 size = ivec4(0); + + size.x += textureSize(s1D, int(lod)); + size.xy += textureSize(s2D, int(lod)); + size.xyz += textureSize(s3D, int(lod)); + size.xy += textureSize(sCube, int(lod)); + size.x += textureSize(s1DShadow, int(lod)); + size.xy += textureSize(s2DShadow, int(lod)); + size.xy += textureSize(sCubeShadow, int(lod)); + size.xyz += textureSize(sCubeArray, int(lod)); + size.xyz += textureSize(sCubeArrayShadow, int(lod)); + size.xy += textureSize(s2DRect); + size.xy += textureSize(s2DRectShadow); + size.xy += textureSize(s1DArray, int(lod)); + size.xyz += textureSize(s2DArray, int(lod)); + size.xy += textureSize(s1DArrayShadow, int(lod)); + size.xyz += textureSize(s2DArrayShadow, int(lod)); + size.x += textureSize(sBuffer); + size.xy += textureSize(s2DMS); + size.xyz += textureSize(s2DMSArray); + + return size; +} + +vec2 testTextureQueryLod() +{ + vec2 lod = vec2(0.0); + + lod += textureQueryLod(s1D, c1); + lod += textureQueryLod(s2D, c2); + lod += textureQueryLod(s3D, c3); + lod += textureQueryLod(sCube, c3); + lod += textureQueryLod(s1DArray, c1); + lod += textureQueryLod(s2DArray, c2); + lod += textureQueryLod(sCubeArray, c3); + lod += textureQueryLod(s1DShadow, c1); + lod += textureQueryLod(s2DShadow, c2); + lod += textureQueryLod(sCubeArrayShadow, c3); + lod += textureQueryLod(s1DArrayShadow, c1); + lod += textureQueryLod(s2DArrayShadow, c2); + lod += textureQueryLod(sCubeArrayShadow, c3); + + return lod; +} + +int testTextureQueryLevels() +{ + int levels = 0; + + levels += textureQueryLevels(s1D); + levels += textureQueryLevels(s2D); + levels += textureQueryLevels(s3D); + levels += textureQueryLevels(sCube); + levels += textureQueryLevels(s1DShadow); + levels += textureQueryLevels(s2DShadow); + levels += textureQueryLevels(sCubeShadow); + levels += textureQueryLevels(sCubeArray); + levels += textureQueryLevels(sCubeArrayShadow); + levels += textureQueryLevels(s1DArray); + levels += textureQueryLevels(s2DArray); + levels += textureQueryLevels(s1DArrayShadow); + levels += textureQueryLevels(s2DArrayShadow); + + return levels; +} + +int testTextureSamples() +{ + int samples = 0; + + samples += textureSamples(s2DMS); + samples += textureSamples(s2DMSArray); + + return samples; +} + +vec4 testImageLoad() +{ + vec4 texel = vec4(0.0); + + texel += imageLoad(i1D, int(c1)); + texel += imageLoad(i2D, ivec2(c2)); + texel += imageLoad(i3D, ivec3(c3)); + texel += imageLoad(i2DRect, ivec2(c2)); + texel += imageLoad(iCube, ivec3(c3)); + texel += imageLoad(iBuffer, int(c1)); + texel += imageLoad(i1DArray, ivec2(c2)); + texel += imageLoad(i2DArray, ivec3(c3)); + texel += imageLoad(iCubeArray, ivec3(c3)); + texel += imageLoad(i2DMS, ivec2(c2), 1); + texel += imageLoad(i2DMSArray, ivec3(c3), 1); + + return texel; +} + +void testImageStore(vec4 data) +{ + imageStore(i1D, int(c1), data); + imageStore(i2D, ivec2(c2), data); + imageStore(i3D, ivec3(c3), data); + imageStore(i2DRect, ivec2(c2), data); + imageStore(iCube, ivec3(c3), data); + imageStore(iBuffer, int(c1), data); + imageStore(i1DArray, ivec2(c2), data); + imageStore(i2DArray, ivec3(c3), data); + imageStore(iCubeArray, ivec3(c3), data); + imageStore(i2DMS, ivec2(c2), 1, data); + imageStore(i2DMSArray, ivec3(c3), 1, data); +} + +vec4 testSparseTexture() +{ + vec4 texel = vec4(0.0); + + sparseTextureARB(s2D, c2, texel); + sparseTextureARB(s3D, c3, texel); + sparseTextureARB(sCube, c3, texel); + sparseTextureARB(s2DShadow, c3, texel.x); + sparseTextureARB(sCubeShadow, c4, texel.x); + sparseTextureARB(s2DArray, c3, texel); + sparseTextureARB(sCubeArray, c4, texel); + sparseTextureARB(s2DArrayShadow, c4, texel.x); + sparseTextureARB(s2DRect, c2, texel); + sparseTextureARB(s2DRectShadow, c3, texel.x); + sparseTextureARB(sCubeArrayShadow, c4, compare, texel.x); + + return texel; +} + +vec4 testSparseTextureLod() +{ + vec4 texel = vec4(0.0); + + sparseTextureLodARB(s2D, c2, lod, texel); + sparseTextureLodARB(s3D, c3, lod, texel); + sparseTextureLodARB(sCube, c3, lod, texel); + sparseTextureLodARB(s2DShadow, c3, lod, texel.x); + sparseTextureLodARB(s2DArray, c3, lod, texel); + sparseTextureLodARB(sCubeArray, c4, lod, texel); + + return texel; +} + +vec4 testSparseTextureOffset() +{ + vec4 texel = vec4(0.0); + + sparseTextureOffsetARB(s2D, c2, offset2, texel); + sparseTextureOffsetARB(s3D, c3, offset3, texel); + sparseTextureOffsetARB(s2DRect, c2, offset2, texel); + sparseTextureOffsetARB(s2DRectShadow, c3, offset2, texel.x); + sparseTextureOffsetARB(s2DShadow, c3, offset2, texel.x); + sparseTextureOffsetARB(s2DArray, c3, offset2, texel); + sparseTextureOffsetARB(s2DArrayShadow, c4, offset2, texel.x); + + return texel; +} + +vec4 testSparseTextureLodOffset() +{ + vec4 texel = vec4(0.0); + + sparseTextureLodOffsetARB(s2D, c2, lod, offset2, texel); + sparseTextureLodOffsetARB(s3D, c3, lod, offset3, texel); + sparseTextureLodOffsetARB(s2DShadow, c3, lod, offset2, texel.x); + sparseTextureLodOffsetARB(s2DArray, c3, lod, offset2, texel); + + return texel; +} + +vec4 testSparseTextureGrad() +{ + vec4 texel = vec4(0.0); + + sparseTextureGradARB(s2D, c2, dPdxy2, dPdxy2, texel); + sparseTextureGradARB(s3D, c3, dPdxy3, dPdxy3, texel); + sparseTextureGradARB(sCube, c3, dPdxy3, dPdxy3, texel); + sparseTextureGradARB(s2DRect, c2, dPdxy2, dPdxy2, texel); + sparseTextureGradARB(s2DRectShadow, c3, dPdxy2, dPdxy2, texel.x); + sparseTextureGradARB(s2DShadow, c3, dPdxy2, dPdxy2, texel.x); + sparseTextureGradARB(sCubeShadow, c4, dPdxy3, dPdxy3, texel.x); + sparseTextureGradARB(s2DArray, c3, dPdxy2, dPdxy2, texel); + sparseTextureGradARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, texel.x); + sparseTextureGradARB(sCubeArray, c4, dPdxy3, dPdxy3, texel); + + return texel; +} + +vec4 testSparseTextureGradOffset() +{ + vec4 texel = vec4(0.0); + + sparseTextureGradOffsetARB(s2D, c2, dPdxy2, dPdxy2, offset2, texel); + sparseTextureGradOffsetARB(s3D, c3, dPdxy3, dPdxy3, offset3, texel); + sparseTextureGradOffsetARB(s2DRect, c2, dPdxy2, dPdxy2, offset2, texel); + sparseTextureGradOffsetARB(s2DRectShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); + sparseTextureGradOffsetARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, texel.x); + sparseTextureGradOffsetARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, texel); + sparseTextureGradOffsetARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, texel.x); + + return texel; +} + +vec4 testSparseTexelFetch() +{ + vec4 texel = vec4(0.0); + + sparseTexelFetchARB(s2D, ivec2(c2), int(lod), texel); + sparseTexelFetchARB(s3D, ivec3(c3), int(lod), texel); + sparseTexelFetchARB(s2DRect, ivec2(c2), texel); + sparseTexelFetchARB(s2DArray, ivec3(c3), int(lod), texel); + sparseTexelFetchARB(s2DMS, ivec2(c2), 1, texel); + sparseTexelFetchARB(s2DMSArray, ivec3(c3), 2, texel); + + return texel; +} + +vec4 testSparseTexelFetchOffset() +{ + vec4 texel = vec4(0.0); + + sparseTexelFetchOffsetARB(s2D, ivec2(c2), int(lod), offset2, texel); + sparseTexelFetchOffsetARB(s3D, ivec3(c3), int(lod), offset3, texel); + sparseTexelFetchOffsetARB(s2DRect, ivec2(c2), offset2, texel); + sparseTexelFetchOffsetARB(s2DArray, ivec3(c3), int(lod), offset2, texel); + + return texel; +} + +vec4 testSparseTextureGather() +{ + vec4 texel = vec4(0.0); + + sparseTextureGatherARB(s2D, c2, texel, 0); + sparseTextureGatherARB(s2DArray, c3, texel, 0); + sparseTextureGatherARB(sCube, c3, texel, 0); + sparseTextureGatherARB(sCubeArray, c4, texel, 0); + sparseTextureGatherARB(s2DRect, c2, texel, 0); + sparseTextureGatherARB(s2DShadow, c2, compare, texel); + sparseTextureGatherARB(s2DArrayShadow, c3, compare, texel); + sparseTextureGatherARB(sCubeShadow, c3, compare, texel); + sparseTextureGatherARB(sCubeArrayShadow, c4, compare, texel); + sparseTextureGatherARB(s2DRectShadow, c2, compare, texel); + + return texel; +} + +vec4 testSparseTextureGatherOffset() +{ + vec4 texel = vec4(0.0); + + sparseTextureGatherOffsetARB(s2D, c2, offset2, texel, 0); + sparseTextureGatherOffsetARB(s2DArray, c3, offset2, texel, 0); + sparseTextureGatherOffsetARB(s2DRect, c2, offset2, texel, 0); + sparseTextureGatherOffsetARB(s2DShadow, c2, compare, offset2, texel); + sparseTextureGatherOffsetARB(s2DArrayShadow, c3, compare, offset2, texel); + sparseTextureGatherOffsetARB(s2DRectShadow, c2, compare, offset2, texel); + + return texel; +} + +vec4 testSparseTextureGatherOffsets() +{ + vec4 texel = vec4(0.0); + const ivec2 constOffsets[4] = ivec2[4](ivec2(1,2), ivec2(3,4), ivec2(15,16), ivec2(-2,0)); + + sparseTextureGatherOffsetsARB(s2D, c2, constOffsets, texel, 0); + sparseTextureGatherOffsetsARB(s2DArray, c3, constOffsets, texel, 0); + sparseTextureGatherOffsetsARB(s2DRect, c2, constOffsets, texel, 0); + sparseTextureGatherOffsetsARB(s2DShadow, c2, compare, constOffsets, texel); + sparseTextureGatherOffsetsARB(s2DArrayShadow, c3, compare, constOffsets, texel); + sparseTextureGatherOffsetsARB(s2DRectShadow, c2, compare, constOffsets, texel); + + return texel; +} + +vec4 testSparseTextureGatherLod() +{ + vec4 texel = vec4(0.0); + + sparseTextureGatherLodAMD(s2D, c2, lod, texel, 0); + sparseTextureGatherLodAMD(s2DArray, c3, lod, texel, 0); + sparseTextureGatherLodAMD(sCube, c3, lod, texel, 0); + sparseTextureGatherLodAMD(sCubeArray, c4, lod, texel, 0); + + return texel; +} + +vec4 testSparseTextureGatherLodOffset() +{ + vec4 texel = vec4(0.0); + + sparseTextureGatherLodOffsetAMD(s2D, c2, lod, offset2, texel, 0); + sparseTextureGatherLodOffsetAMD(s2DArray, c3, lod, offset2, texel, 0); + + return texel; +} + +vec4 testSparseTextureGatherLodOffsets() +{ + vec4 texel = vec4(0.0); + + sparseTextureGatherLodOffsetsAMD(s2D, c2, lod, offsets, texel, 0); + sparseTextureGatherLodOffsetsAMD(s2DArray, c3, lod, offsets, texel, 0); + + return texel; +} + +vec4 testSparseImageLoad() +{ + vec4 texel = vec4(0.0); + + sparseImageLoadARB(i2D, ivec2(c2), texel); + sparseImageLoadARB(i3D, ivec3(c3), texel); + sparseImageLoadARB(i2DRect, ivec2(c2), texel); + sparseImageLoadARB(iCube, ivec3(c3), texel); + sparseImageLoadARB(i2DArray, ivec3(c3), texel); + sparseImageLoadARB(iCubeArray, ivec3(c3), texel); + sparseImageLoadARB(i2DMS, ivec2(c2), 1, texel); + sparseImageLoadARB(i2DMSArray, ivec3(c3), 2, texel); + + return texel; +} + +vec4 testSparseTextureClamp() +{ + vec4 texel = vec4(0.0); + + sparseTextureClampARB(s2D, c2, lodClamp, texel); + sparseTextureClampARB(s3D, c3, lodClamp, texel); + sparseTextureClampARB(sCube, c3, lodClamp, texel); + sparseTextureClampARB(s2DShadow, c3, lodClamp, texel.x); + sparseTextureClampARB(sCubeShadow, c4, lodClamp, texel.x); + sparseTextureClampARB(s2DArray, c3, lodClamp, texel); + sparseTextureClampARB(sCubeArray, c4, lodClamp, texel); + sparseTextureClampARB(s2DArrayShadow, c4, lodClamp, texel.x); + sparseTextureClampARB(sCubeArrayShadow, c4, compare, lodClamp, texel.x); + + return texel; +} + +vec4 testTextureClamp() +{ + vec4 texel = vec4(0.0); + + texel += textureClampARB(s1D, c1, lodClamp); + texel += textureClampARB(s2D, c2, lodClamp); + texel += textureClampARB(s3D, c3, lodClamp); + texel += textureClampARB(sCube, c3, lodClamp); + texel.x += textureClampARB(s1DShadow, c3, lodClamp); + texel.x += textureClampARB(s2DShadow, c3, lodClamp); + texel.x += textureClampARB(sCubeShadow, c4, lodClamp); + texel += textureClampARB(s1DArray, c2, lodClamp); + texel += textureClampARB(s2DArray, c3, lodClamp); + texel += textureClampARB(sCubeArray, c4, lodClamp); + texel.x += textureClampARB(s1DArrayShadow, c3, lodClamp); + texel.x += textureClampARB(s2DArrayShadow, c4, lodClamp); + texel.x += textureClampARB(sCubeArrayShadow, c4, compare, lodClamp); + + return texel; +} + +vec4 testSparseTextureOffsetClamp() +{ + vec4 texel = vec4(0.0); + + sparseTextureOffsetClampARB(s2D, c2, offset2, lodClamp, texel); + sparseTextureOffsetClampARB(s3D, c3, offset3, lodClamp, texel); + sparseTextureOffsetClampARB(s2DShadow, c3, offset2, lodClamp, texel.x); + sparseTextureOffsetClampARB(s2DArray, c3, offset2, lodClamp, texel); + sparseTextureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp, texel.x); + + return texel; +} + +vec4 testTextureOffsetClamp() +{ + vec4 texel = vec4(0.0); + + texel += textureOffsetClampARB(s1D, c1, offset1, lodClamp); + texel += textureOffsetClampARB(s2D, c2, offset2, lodClamp); + texel += textureOffsetClampARB(s3D, c3, offset3, lodClamp); + texel.x += textureOffsetClampARB(s1DShadow, c3, offset1, lodClamp); + texel.x += textureOffsetClampARB(s2DShadow, c3, offset2, lodClamp); + texel += textureOffsetClampARB(s1DArray, c2, offset1, lodClamp); + texel += textureOffsetClampARB(s2DArray, c3, offset2, lodClamp); + texel.x += textureOffsetClampARB(s1DArrayShadow, c3, offset1, lodClamp); + texel.x += textureOffsetClampARB(s2DArrayShadow, c4, offset2, lodClamp); + + return texel; +} + +vec4 testSparseTextureGradClamp() +{ + vec4 texel = vec4(0.0); + + sparseTextureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp, texel); + sparseTextureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp, texel); + sparseTextureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp, texel); + sparseTextureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp, texel.x); + sparseTextureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp, texel.x); + sparseTextureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp, texel); + sparseTextureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp, texel.x); + sparseTextureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp, texel); + + return texel; +} + +vec4 testTextureGradClamp() +{ + vec4 texel = vec4(0.0); + + texel += textureGradClampARB(s1D, c1, dPdxy1, dPdxy1, lodClamp); + texel += textureGradClampARB(s2D, c2, dPdxy2, dPdxy2, lodClamp); + texel += textureGradClampARB(s3D, c3, dPdxy3, dPdxy3, lodClamp); + texel += textureGradClampARB(sCube, c3, dPdxy3, dPdxy3, lodClamp); + texel.x += textureGradClampARB(s1DShadow, c3, dPdxy1, dPdxy1, lodClamp); + texel.x += textureGradClampARB(s2DShadow, c3, dPdxy2, dPdxy2, lodClamp); + texel.x += textureGradClampARB(sCubeShadow, c4, dPdxy3, dPdxy3, lodClamp); + texel += textureGradClampARB(s1DArray, c2, dPdxy1, dPdxy1, lodClamp); + texel += textureGradClampARB(s2DArray, c3, dPdxy2, dPdxy2, lodClamp); + texel.x += textureGradClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, lodClamp); + texel.x += textureGradClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, lodClamp); + texel += textureGradClampARB(sCubeArray, c4, dPdxy3, dPdxy3, lodClamp); + + return texel; +} + +vec4 testSparseTextureGradOffsetClamp() +{ + vec4 texel = vec4(0.0); + + sparseTextureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp, texel); + sparseTextureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp, texel); + sparseTextureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); + sparseTextureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp, texel); + sparseTextureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp, texel.x); + + return texel; +} + +vec4 testTextureGradOffsetClamp() +{ + vec4 texel = vec4(0.0); + + texel += textureGradOffsetClampARB(s1D, c1, dPdxy1, dPdxy1, offset1, lodClamp); + texel += textureGradOffsetClampARB(s2D, c2, dPdxy2, dPdxy2, offset2, lodClamp); + texel += textureGradOffsetClampARB(s3D, c3, dPdxy3, dPdxy3, offset3, lodClamp); + texel.x += textureGradOffsetClampARB(s1DShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); + texel.x += textureGradOffsetClampARB(s2DShadow, c3, dPdxy2, dPdxy2, offset2, lodClamp); + texel += textureGradOffsetClampARB(s1DArray, c2, dPdxy1, dPdxy1, offset1, lodClamp); + texel += textureGradOffsetClampARB(s2DArray, c3, dPdxy2, dPdxy2, offset2, lodClamp); + texel.x += textureGradOffsetClampARB(s1DArrayShadow, c3, dPdxy1, dPdxy1, offset1, lodClamp); + texel.x += textureGradOffsetClampARB(s2DArrayShadow, c4, dPdxy2, dPdxy2, offset2, lodClamp); + + return texel; +} + +vec4 testCombinedTextureSampler() +{ + vec4 texel = vec4(0.0); + + texel += texture(sampler1D(t1D, s), c1); + texel += texture(sampler2D(t2D, s), c2); + texel += texture(sampler3D(t3D, s), c3); + texel += texture(samplerCube(tCube, s), c3); + texel.x += texture(sampler1DShadow(t1D, sShadow), c3); + texel.x += texture(sampler2DShadow(t2D, sShadow), c3); + texel.x += texture(samplerCubeShadow(tCube, sShadow), c4); + texel += texture(sampler1DArray(t1DArray, s), c2); + texel += texture(sampler2DArray(t2DArray, s), c3); + texel += texture(samplerCubeArray(tCubeArray, s), c4); + texel.x += texture(sampler1DArrayShadow(t1DArray, sShadow), c3); + texel.x += texture(sampler2DArrayShadow(t2DArray, sShadow), c4); + texel += texture(sampler2DRect(t2DRect, s), c2); + texel.x += texture(sampler2DRectShadow(t2DRect, sShadow), c3); + texel.x += texture(samplerCubeArrayShadow(tCubeArray, sShadow), c4, compare); + + return texel; +} + +vec4 testSubpassLoad() +{ + return subpassLoad(subpass) + subpassLoad(subpassMS, 2); +} + +void main() +{ + vec4 result = vec4(0.0); + + result += testTexture(); + result += testTextureProj(); + result += testTextureLod(); + result += testTextureOffset(); + result += testTextureLodOffset(); + result += testTextureProjLodOffset(); + result += testTexelFetch(); + result += testTexelFetchOffset(); + result += testTextureGrad(); + result += testTextureGradOffset(); + result += testTextureProjGrad(); + result += testTextureProjGradoffset(); + result += testTextureGather(); + result += testTextureGatherOffset(); + result += testTextureGatherOffsets(); + result += testTextureGatherLod(); + result += testTextureGatherLodOffset(); + result += testTextureGatherLodOffsets(); + + result += vec4(testTextureSize()); + result.xy += vec2(testTextureQueryLod()); + result.x += testTextureQueryLevels(); + result.x += testTextureSamples(); + + result += testImageLoad(); + testImageStore(result); + + result += testSparseTexture(); + result += testSparseTextureLod(); + result += testSparseTextureOffset(); + result += testSparseTextureLodOffset(); + result += testSparseTextureGrad(); + result += testSparseTextureGradOffset(); + result += testSparseTexelFetch(); + result += testSparseTexelFetchOffset(); + result += testSparseTextureGather(); + result += testSparseTextureGatherOffset(); + result += testSparseTextureGatherOffsets(); + result += testSparseTextureGatherLod(); + result += testSparseTextureGatherLodOffset(); + result += testSparseTextureGatherLodOffsets(); + + result += testSparseImageLoad(); + + result += testSparseTextureClamp(); + result += testTextureClamp(); + result += testSparseTextureOffsetClamp(); + result += testTextureOffsetClamp(); + result += testSparseTextureGrad(); + result += testTextureGrad(); + result += testSparseTextureGradOffsetClamp(); + result += testTextureGradOffsetClamp(); + + result += testCombinedTextureSampler(); + result += testSubpassLoad(); + + fragColor = result; +} + diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4dea5dd07e..ee8f8f2a56 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -528,6 +528,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.fragmentShaderBarycentric4.frag", "spv.ext.texture_shadow_lod.frag", "spv.ext.texture_shadow_lod.error.frag", + "spv.floatFetch.frag", })), FileNameAsCustomTestSuffix ); From d3b8d91a93a5eee7c627bc8879cb6af35915c54d Mon Sep 17 00:00:00 2001 From: Joyce Date: Mon, 11 Sep 2023 13:46:24 -0300 Subject: [PATCH 280/594] Add license to dependabot.yml Signed-off-by: Joyce --- .github/dependabot.yml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1717aebc5b..2190055972 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,3 +1,17 @@ +# Copyright 2023 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + version: 2 updates: - package-ecosystem: "github-actions" # Necessary to update action hashes From f89684110b5ca9d24bb3ac3d2931e95b0249b939 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 06:41:20 +0000 Subject: [PATCH 281/594] Bump actions/checkout from 3.6.0 to 4.0.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 3.6.0 to 4.0.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/f43a0e5ff2bd294095638e18286ca9a3d1956744...3df4ab11eba7bda6032a0b82a6bb43b11571feac) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 12 ++++++------ .github/workflows/scorecard.yml | 2 +- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 237c3959b4..835c1d9c00 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -47,7 +47,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -127,7 +127,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -200,7 +200,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 063cc8c655..73446847b2 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,7 +23,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -69,7 +69,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -118,7 +118,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -162,7 +162,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -203,7 +203,7 @@ jobs: # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android NDK: [23.2.8568313, 25.2.9519653] steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -232,7 +232,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 6bd40ef085..05eb6e517a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@f43a0e5ff2bd294095638e18286ca9a3d1956744 # v3.6.0 + uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 with: persist-credentials: false From b2dc622fafcdd6ed4f028f4dd9126b42eebb75ff Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Sep 2023 06:41:23 +0000 Subject: [PATCH 282/594] Bump actions/upload-artifact from 3.1.2 to 3.1.3 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.2 to 3.1.3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/0b7f8abb1508181956e8e162db84b466c27e18ce...a8a3f3ad30e3422c9c7b888a15615d19a852ae32) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 05eb6e517a..c379fffd43 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2 + uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 with: name: SARIF file path: results.sarif From afe6e781bd3ade96fb3f9cc91053d95bf9174dfb Mon Sep 17 00:00:00 2001 From: Sajjad Mirza <90873047+sajjadmirzanv@users.noreply.github.com> Date: Mon, 11 Sep 2023 17:11:22 -0700 Subject: [PATCH 283/594] Emit correct nonsemantic debug info for explicitly sized types Previously, the type names in the nonsemantic shader debug info would be "int", "uint", or "float" for all numeric types. This change makes the correct names such as "int8_t" or "float16_t" get emitted. --- SPIRV/SpvBuilder.cpp | 27 ++- .../spv.debuginfo.const_params.glsl.comp.out | 4 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 10 +- Test/baseResults/spv.debuginfo.glsl.frag.out | 4 +- Test/baseResults/spv.debuginfo.glsl.geom.out | 4 +- Test/baseResults/spv.debuginfo.glsl.tesc.out | 4 +- Test/baseResults/spv.debuginfo.glsl.tese.out | 4 +- Test/baseResults/spv.debuginfo.glsl.vert.out | 4 +- Test/baseResults/spv.debuginfo.hlsl.comp.out | 40 ++-- Test/baseResults/spv.debuginfo.hlsl.frag.out | 56 ++--- Test/baseResults/spv.debuginfo.hlsl.geom.out | 26 +-- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 32 +-- Test/baseResults/spv.debuginfo.hlsl.tese.out | 24 +-- Test/baseResults/spv.debuginfo.hlsl.vert.out | 24 +-- .../spv.debuginfo.scalar_types.glsl.frag.out | 196 ++++++++++++++++++ Test/spv.debuginfo.scalar_types.glsl.frag | 55 +++++ gtests/Spv.FromFile.cpp | 3 +- 17 files changed, 390 insertions(+), 127 deletions(-) create mode 100644 Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out create mode 100644 Test/spv.debuginfo.scalar_types.glsl.frag diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 57e03d5d6b..8aa6fbc3e6 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -859,11 +859,19 @@ Id Builder::makeBoolDebugType(int const size) Id Builder::makeIntegerDebugType(int const width, bool const hasSign) { + const char* typeName = nullptr; + switch (width) { + case 8: typeName = hasSign ? "int8_t" : "uint8_t"; break; + case 16: typeName = hasSign ? "int16_t" : "uint16_t"; break; + case 64: typeName = hasSign ? "int64_t" : "uint64_t"; break; + default: typeName = hasSign ? "int" : "uint"; + } + auto nameId = getStringId(typeName); // try to find it Instruction* type; for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) { type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t]; - if (type->getIdOperand(0) == (hasSign ? getStringId("int") : getStringId("uint")) && + if (type->getIdOperand(0) == nameId && type->getIdOperand(1) == static_cast(width) && type->getIdOperand(2) == (hasSign ? NonSemanticShaderDebugInfo100Signed : NonSemanticShaderDebugInfo100Unsigned)) return type->getResultId(); @@ -873,11 +881,7 @@ Id Builder::makeIntegerDebugType(int const width, bool const hasSign) type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); - if(hasSign == true) { - type->addIdOperand(getStringId("int")); // name id - } else { - type->addIdOperand(getStringId("uint")); // name id - } + type->addIdOperand(nameId); // name id type->addIdOperand(makeUintConstant(width)); // size id if(hasSign == true) { type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Signed)); // encoding id @@ -895,11 +899,18 @@ Id Builder::makeIntegerDebugType(int const width, bool const hasSign) Id Builder::makeFloatDebugType(int const width) { + const char* typeName = nullptr; + switch (width) { + case 16: typeName = "float16_t"; break; + case 64: typeName = "double"; break; + default: typeName = "float"; break; + } + auto nameId = getStringId(typeName); // try to find it Instruction* type; for (int t = 0; t < (int)groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic].size(); ++t) { type = groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypeBasic][t]; - if (type->getIdOperand(0) == getStringId("float") && + if (type->getIdOperand(0) == nameId && type->getIdOperand(1) == static_cast(width) && type->getIdOperand(2) == NonSemanticShaderDebugInfo100Float) return type->getResultId(); @@ -909,7 +920,7 @@ Id Builder::makeFloatDebugType(int const width) type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); - type->addIdOperand(getStringId("float")); // name id + type->addIdOperand(nameId); // name id type->addIdOperand(makeUintConstant(width)); // size id type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100Float)); // encoding id type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100None)); // flags id diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index ad431a4779..846e0e36e1 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -11,7 +11,7 @@ spv.debuginfo.const_params.glsl.comp EntryPoint GLCompute 14 "main" ExecutionMode 14 LocalSize 1 1 1 1: String "" - 9: String "uint" + 8: String "uint" 15: String "main" 18: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -39,7 +39,7 @@ spv.debuginfo.const_params.glsl.comp 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 234878f541..9026bf46d9 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -11,7 +11,7 @@ spv.debuginfo.glsl.comp EntryPoint GLCompute 14 "main" 124 ExecutionMode 14 LocalSize 10 10 1 1: String "" - 9: String "uint" + 8: String "uint" 15: String "main" 18: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -164,7 +164,7 @@ spv.debuginfo.glsl.comp 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 @@ -220,7 +220,7 @@ spv.debuginfo.glsl.comp 101: TypePointer Uniform 24(float) 115: 7(int) Constant 74 116: TypeVector 7(int) 3 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 8 13 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 118: TypePointer Function 116(ivec3) 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 117 17 115 12 16 21 123: TypePointer Input 116(ivec3) @@ -228,7 +228,7 @@ spv.debuginfo.glsl.comp 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 126 117 17 115 12 19 126 124(gl_GlobalInvocationID) 78 129: 7(int) Constant 76 130: TypePointer Function 7(int) - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 8 17 129 12 16 21 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 9 17 129 12 16 21 137: 69(int) Constant 10 138: TypePointer Uniform 69(int) 147: 7(int) Constant 77 @@ -330,7 +330,7 @@ spv.debuginfo.glsl.comp 670: 7(int) Constant 144 671(PushConsts): TypeStruct 7(int) 674: 7(int) Constant 63 - 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 673 8 17 674 89 12 12 13 + 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 673 9 17 674 89 12 12 13 675: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 676 20 17 670 12 19 676 12 13 672 677: TypePointer PushConstant 671(PushConsts) 678(pushConsts): 677(ptr) Variable PushConstant diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 72777c5fcf..464e321734 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -12,7 +12,7 @@ spv.debuginfo.glsl.frag EntryPoint Fragment 14 "main" 478 533 ExecutionMode 14 OriginUpperLeft 1: String "" - 9: String "uint" + 8: String "uint" 15: String "main" 18: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -187,7 +187,7 @@ spv.debuginfo.glsl.frag 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 58edd36868..84b9807418 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -15,7 +15,7 @@ spv.debuginfo.glsl.geom ExecutionMode 14 OutputTriangleStrip ExecutionMode 14 OutputVertices 3 1: String "" - 9: String "uint" + 8: String "uint" 15: String "main" 18: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -123,7 +123,7 @@ spv.debuginfo.glsl.geom 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index f3e7d20e20..b19528cbca 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -11,7 +11,7 @@ spv.debuginfo.glsl.tesc EntryPoint TessellationControl 14 "main" 249 253 279 370 383 498 512 519 533 ExecutionMode 14 OutputVertices 4 1: String "" - 9: String "uint" + 8: String "uint" 15: String "main" 18: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -153,7 +153,7 @@ spv.debuginfo.glsl.tesc 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index 0625c278d3..fdb1ee9825 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -13,7 +13,7 @@ spv.debuginfo.glsl.tese ExecutionMode 14 SpacingEqual ExecutionMode 14 VertexOrderCw 1: String "" - 9: String "uint" + 8: String "uint" 15: String "main" 18: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -141,7 +141,7 @@ spv.debuginfo.glsl.tese 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index e0c9d60003..c485255081 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -10,7 +10,7 @@ spv.debuginfo.glsl.vert MemoryModel Logical GLSL450 EntryPoint Vertex 14 "main" 34 39 45 51 59 75 289 307 312 337 353 370 409 418 1: String "" - 9: String "uint" + 8: String "uint" 15: String "main" 18: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -127,7 +127,7 @@ spv.debuginfo.glsl.vert 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 8: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 10 11 12 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index b427c6167a..30cd581a73 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -11,8 +11,8 @@ spv.debuginfo.hlsl.comp EntryPoint GLCompute 6 "main" 971 ExecutionMode 6 LocalSize 10 10 1 1: String "" - 10: String "float" - 13: String "uint" + 9: String "float" + 12: String "uint" 28: String "springForce" 31: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -177,15 +177,15 @@ spv.debuginfo.hlsl.comp 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 3 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 20: TypePointer Function 18(fvec3) 21: TypePointer Function 8(float) 22: TypeFunction 18(fvec3) 20(ptr) 20(ptr) 21(ptr) - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 9 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 10 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 31 33: 11(int) Constant 1 34: 11(int) Constant 4 @@ -196,9 +196,9 @@ spv.debuginfo.hlsl.comp 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 45: 11(int) Constant 2 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 19 30 16 16 29 34 45 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 9 30 16 16 29 34 17 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 10 30 16 16 29 34 17 50: TypeVector 11(int) 3 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 12 17 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 52: TypePointer Function 50(ivec3) 53: TypeFunction 4 52(ptr) 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 51 @@ -208,7 +208,7 @@ spv.debuginfo.hlsl.comp 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 71 19 30 68 16 29 34 77: 11(int) Constant 77 80: TypeVector 8(float) 4 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 34 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 34 82: TypeInt 32 1 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 83 14 34 16 85: TypeVector 82(int) 2 @@ -216,14 +216,14 @@ spv.debuginfo.hlsl.comp 87(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 80(fvec4) 80(fvec4) 85(ivec2) 90: 11(int) Constant 48 91: 11(int) Constant 20 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 9 30 90 91 16 16 17 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 101: 11(int) Constant 50 102: 11(int) Constant 16 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 81 30 101 102 16 16 17 @@ -245,7 +245,7 @@ spv.debuginfo.hlsl.comp 122: TypePointer Uniform 8(float) 136: 11(int) Constant 83 137: TypePointer Function 11(int) - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 12 30 136 16 58 34 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 13 30 136 16 58 34 144: 82(int) Constant 10 145: TypePointer Uniform 82(int) 154: 11(int) Constant 84 @@ -262,7 +262,7 @@ spv.debuginfo.hlsl.comp 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 185: 11(int) Constant 31 186: 11(int) Constant 14 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 9 30 185 186 16 16 17 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 10 30 185 186 16 16 17 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 188 33 30 174 16 32 188 16 17 176 180 181 182 183 189: TypeRuntimeArray 175(Particle) 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 16 @@ -354,7 +354,7 @@ spv.debuginfo.hlsl.comp 667(PushConstants): TypeStruct 11(int) 670: 11(int) Constant 67 671: 11(int) Constant 23 - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 669 12 30 670 671 16 16 17 + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 669 13 30 670 671 16 16 17 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 673 33 30 666 16 32 673 16 17 668 674($Global): TypeStruct 667(PushConstants) 677: 11(int) Constant 71 diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 5dad54931d..600976c8bf 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -12,8 +12,8 @@ spv.debuginfo.hlsl.frag EntryPoint Fragment 6 "main" 879 882 ExecutionMode 6 OriginUpperLeft 1: String "" - 10: String "float" - 13: String "uint" + 9: String "float" + 12: String "uint" 33: String "textureProj" 36: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -216,20 +216,20 @@ spv.debuginfo.hlsl.frag 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 19 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) 22: TypePointer Function 8(float) 23: TypeVector 8(float) 2 24: 11(int) Constant 2 - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 24 + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 24 26: TypePointer Function 23(fvec2) 27: TypeFunction 8(float) 21(ptr) 22(ptr) 26(ptr) - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 9 20 9 25 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 25 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 36 38: 11(int) Constant 1 39: 11(int) Constant 5 @@ -237,15 +237,15 @@ spv.debuginfo.hlsl.frag 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 28 35 16 16 37 33 17 16 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 20 35 16 16 34 19 38 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 9 35 16 16 34 19 24 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 10 35 16 16 34 19 24 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 51 25 35 16 16 34 19 17 53: TypeFunction 8(float) 21(ptr) 22(ptr) - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 9 20 9 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 54 35 16 16 37 58 17 16 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 20 35 16 16 59 19 38 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 9 35 16 16 59 19 24 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 10 35 16 16 59 19 24 68: TypeVector 8(float) 3 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 70: TypePointer Function 68(fvec3) 71: TypeFunction 68(fvec3) 70(ptr) 70(ptr) 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 69 69 69 @@ -257,7 +257,7 @@ spv.debuginfo.hlsl.frag 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 91 88 35 16 16 37 91 17 16 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 97 25 35 16 16 92 19 38 102: 11(int) Constant 62 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 76 9 35 102 16 34 19 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 76 10 35 102 16 34 19 106: 8(float) Constant 1065353216 108: 11(int) Constant 63 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 111 20 35 108 16 34 19 @@ -270,7 +270,7 @@ spv.debuginfo.hlsl.frag 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 149: 11(int) Constant 68 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 9 35 149 16 34 19 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 35 149 16 34 19 154: TypeImage 8(float) 2D array sampled format:Unknown 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 16 35 149 16 37 157 158 17 @@ -295,7 +295,7 @@ spv.debuginfo.hlsl.frag 211: 11(int) Constant 74 218: 11(int) Constant 80 219: TypeVector 11(int) 3 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 12 17 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 221: TypePointer Function 219(ivec3) 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 224 220 35 218 16 59 19 228: TypeInt 32 1 @@ -309,14 +309,14 @@ spv.debuginfo.hlsl.frag 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 230 35 218 16 59 19 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 257 230 35 218 16 59 19 263: 11(int) Constant 81 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 9 35 263 16 59 19 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 10 35 263 16 59 19 268: 8(float) Constant 1069547520 270: 11(int) Constant 82 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 9 35 270 16 59 19 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 10 35 270 16 59 19 282: 11(int) Constant 83 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 285 9 35 282 16 59 19 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 285 10 35 282 16 59 19 294: 11(int) Constant 85 - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 9 35 294 16 59 19 + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 10 35 294 16 59 19 300: 11(int) Constant 86 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 230 35 300 16 59 19 305: 228(int) Constant 0 @@ -372,7 +372,7 @@ spv.debuginfo.hlsl.frag 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 465 35 420 16 37 1 467 163 470: TypePointer Uniform 430 475: 11(int) Constant 108 - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 9 35 475 16 77 19 + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 10 35 475 16 77 19 486: 11(int) Constant 113 496: 11(int) Constant 115 503: 11(int) Constant 121 @@ -429,36 +429,36 @@ spv.debuginfo.hlsl.frag 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 673 69 35 670 16 92 19 676: TypePointer Uniform 18(fvec4) 683: 11(int) Constant 159 - 685: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 9 35 683 16 92 19 + 685: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 35 683 16 92 19 690: 11(int) Constant 160 694: 11(int) Constant 163 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 697 69 35 694 16 92 19 705: 11(int) Constant 164 709: 11(int) Constant 166 - 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 9 35 709 16 92 19 + 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 10 35 709 16 92 19 714: 8(float) Constant 1064781546 716: 11(int) Constant 167 - 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 9 35 716 16 92 19 + 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 10 35 716 16 92 19 721: 8(float) Constant 1063781322 723: 11(int) Constant 168 - 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 726 9 35 723 16 92 19 + 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 726 10 35 723 16 92 19 728: 8(float) Constant 1120403456 730: 11(int) Constant 171 732: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 733 69 35 730 16 92 19 746: 11(int) Constant 174 - 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 9 35 746 16 92 19 + 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 10 35 746 16 92 19 755: 11(int) Constant 175 - 757: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 758 9 35 755 16 92 19 + 757: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 758 10 35 755 16 92 19 765: 11(int) Constant 176 - 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 768 9 35 765 16 92 19 + 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 768 10 35 765 16 92 19 774: 11(int) Constant 179 - 776: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 777 9 35 774 16 92 19 + 776: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 777 10 35 774 16 92 19 784: 11(int) Constant 180 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 69 35 784 16 92 19 792: 11(int) Constant 183 794: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 795 69 35 792 16 92 19 802: 11(int) Constant 184 - 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 805 9 35 802 16 92 19 + 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 805 10 35 802 16 92 19 812: 11(int) Constant 185 814: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 815 69 35 812 16 92 19 818: 8(float) Constant 1098907648 diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index 3bb8b31895..c4d39a1fed 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -15,8 +15,8 @@ spv.debuginfo.hlsl.geom ExecutionMode 6 OutputTriangleStrip ExecutionMode 6 OutputVertices 3 1: String "" - 10: String "float" - 13: String "uint" + 9: String "float" + 12: String "uint" 25: String "Pos" 27: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -137,14 +137,14 @@ spv.debuginfo.hlsl.geom 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 19 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypeVector 8(float) 3 - 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 23(VSOutput): TypeStruct 18(fvec4) 21(fvec3) 21(fvec3) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 27 28: 11(int) Constant 37 @@ -166,8 +166,8 @@ spv.debuginfo.hlsl.geom 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 45 29 16 16 17 48: 11(int) Constant 46 49: 11(int) Constant 19 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 12 26 48 49 16 16 17 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 12 26 48 49 16 16 17 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 13 26 48 49 16 16 17 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 13 26 48 49 16 16 17 53: 11(int) Constant 50 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 @@ -177,14 +177,14 @@ spv.debuginfo.hlsl.geom 59: TypePointer Function 43(GSOutput) 60: TypePointer Function 11(int) 61: TypeFunction 4 42(ptr) 59(ptr) 60(ptr) 60(ptr) - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 57 12 12 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 57 13 13 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 68 62 26 16 16 38 68 17 16 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 74 41 26 16 16 69 19 37 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 79: 11(int) Constant 2 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 57 26 16 16 69 19 79 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 12 26 16 16 69 19 17 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 12 26 16 16 69 19 19 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 13 26 16 16 69 19 17 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 13 26 16 16 69 19 19 89: 11(int) Constant 57 90: TypeInt 32 1 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 91 14 19 16 @@ -256,9 +256,9 @@ spv.debuginfo.hlsl.geom 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 20 26 253 16 38 257 255(outStream.Pos) 162 260: TypePointer Output 11(int) 261(outStream.ViewportIndex): 260(ptr) Variable Output - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 263 12 26 253 16 38 263 261(outStream.ViewportIndex) 162 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 263 13 26 253 16 38 263 261(outStream.ViewportIndex) 162 266(outStream.PrimitiveID): 260(ptr) Variable Output - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 268 12 26 253 16 38 268 266(outStream.PrimitiveID) 162 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 268 13 26 253 16 38 268 266(outStream.PrimitiveID) 162 271: TypePointer Output 21(fvec3) 272(outStream.Normal): 271(ptr) Variable Output 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 274 22 26 253 16 38 274 272(outStream.Normal) 162 diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index aa419a4359..998eef5f87 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -16,8 +16,8 @@ WARNING: 0:158: '' : attribute does not apply to entry point ExecutionMode 6 SpacingEqual ExecutionMode 6 VertexOrderCw 1: String "" - 10: String "float" - 13: String "uint" + 9: String "float" + 12: String "uint" 27: String "screenSpaceTessFactor" 30: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -180,15 +180,15 @@ WARNING: 0:158: '' : attribute does not apply to entry point 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 19 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) 22: TypeFunction 8(float) 21(ptr) 21(ptr) - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 9 20 20 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 20 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 30 32: 11(int) Constant 1 33: 11(int) Constant 5 @@ -199,7 +199,7 @@ WARNING: 0:158: '' : attribute does not apply to entry point 43: 11(int) Constant 2 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 20 29 16 16 28 19 43 45: TypeVector 8(float) 2 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 43 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 43 47: TypePointer Function 45(fvec2) 48: TypeBool 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 @@ -209,7 +209,7 @@ WARNING: 0:158: '' : attribute does not apply to entry point 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 62 20 29 16 16 57 19 32 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 46 29 16 16 57 19 43 67: TypeVector 8(float) 3 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 69(VSOutput): TypeStruct 18(fvec4) 67(fvec3) 45(fvec2) 71: 11(int) Constant 44 72: 11(int) Constant 13 @@ -225,9 +225,9 @@ WARNING: 0:158: '' : attribute does not apply to entry point 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 81 19 85: TypePointer Function 83 86: TypeArray 8(float) 19 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 19 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 88: TypeArray 8(float) 43 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 43 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 43 90(ConstantsHSOutput): TypeStruct 86 88 93: 11(int) Constant 58 94: 11(int) Constant 25 @@ -249,16 +249,16 @@ WARNING: 0:158: '' : attribute does not apply to entry point 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 46 29 119 80 16 16 17 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 121 32 29 16 16 31 121 16 17 114 116 118 122: TypeFunction 113(HSOutput) 85(ptr) 112(ptr) - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 120 84 12 + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 120 84 13 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 127 123 29 16 16 31 127 17 16 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 110 84 29 16 16 128 19 32 - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 12 29 16 16 128 19 43 + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 13 29 16 16 128 19 43 140: 11(int) Constant 67 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 20 29 140 16 28 19 145: 8(float) Constant 1056964608 151: 11(int) Constant 69 152: TypePointer Function 8(float) - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 9 29 151 16 28 19 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 10 29 151 16 28 19 160: 8(float) Constant 1073741824 163: 11(int) Constant 72 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 20 29 163 16 28 19 @@ -278,11 +278,11 @@ WARNING: 0:158: '' : attribute does not apply to entry point 186: 11(int) Constant 22 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 173 29 80 186 16 16 17 189: 11(int) Constant 27 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 9 29 76 189 16 16 17 - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 9 29 76 189 16 16 17 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 10 29 76 189 16 16 17 + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 10 29 76 189 16 16 17 193: 11(int) Constant 34 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 46 29 193 178 16 16 17 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 9 29 76 189 16 16 17 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 10 29 76 189 16 16 17 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 196 32 29 163 16 31 196 16 17 175 179 180 184 187 190 191 194 197(ubo): TypeStruct 174(UBO) 200: 11(int) Constant 37 diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index d5b571c873..d0901eb615 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -11,8 +11,8 @@ spv.debuginfo.hlsl.tese EntryPoint TessellationEvaluation 6 "main" 352 367 376 385 392 398 438 442 446 449 452 455 458 ExecutionMode 6 Quads 1: String "" - 10: String "float" - 13: String "uint" + 9: String "float" + 12: String "uint" 26: String "TessLevelOuter" 28: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -164,15 +164,15 @@ spv.debuginfo.hlsl.tese 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: 11(int) Constant 4 19: TypeArray 8(float) 18 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 18 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 18 21: 11(int) Constant 2 22: TypeArray 8(float) 21 - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 9 21 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 21 24(ConstantsHSOutput): TypeStruct 19 22 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 28 29: 11(int) Constant 51 @@ -186,12 +186,12 @@ spv.debuginfo.hlsl.tese 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 16 16 37 35 16 17 25 31 39: TypePointer Function 24(ConstantsHSOutput) 40: TypeVector 8(float) 2 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 21 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 42: TypePointer Function 40(fvec2) 43: TypeVector 8(float) 4 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 18 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 45: TypeVector 8(float) 3 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 47(HSOutput): TypeStruct 43(fvec4) 45(fvec3) 40(fvec2) 50: 11(int) Constant 44 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 44 27 50 14 16 16 17 @@ -290,11 +290,11 @@ spv.debuginfo.hlsl.tese 275: 11(int) Constant 22 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 274 262 27 58 275 16 16 17 278: 11(int) Constant 27 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 9 27 54 278 16 16 17 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 9 27 54 278 16 16 17 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 10 27 54 278 16 16 17 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 10 27 54 278 16 16 17 282: 11(int) Constant 34 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 281 41 27 282 267 16 16 17 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 9 27 54 278 16 16 17 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 10 27 54 278 16 16 17 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 285 36 27 227 16 37 285 16 17 264 268 269 273 276 279 280 283 286(ubo): TypeStruct 263(UBO) 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 284 27 70 70 16 16 17 diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 2fa1774b71..94431eddaa 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -10,8 +10,8 @@ spv.debuginfo.hlsl.vert MemoryModel Logical GLSL450 EntryPoint Vertex 6 "main" 444 447 451 454 457 460 464 468 476 480 483 486 489 492 1: String "" - 10: String "float" - 13: String "uint" + 9: String "float" + 12: String "uint" 24: String "int" 29: String "instanceRot" 31: String "// OpModuleProcessed auto-map-locations @@ -138,14 +138,14 @@ spv.debuginfo.hlsl.vert 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 12: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 13 14 15 16 + 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 10 14 17 16 + 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 3 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 17 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 20: TypeVector 8(float) 2 21: 11(int) Constant 2 - 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 21 + 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 23: TypeInt 32 1 26: 11(int) Constant 4 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 14 26 16 @@ -163,7 +163,7 @@ spv.debuginfo.hlsl.vert 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 44: 11(int) Constant 36 45: 11(int) Constant 41 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 43 9 30 44 45 16 16 17 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 43 10 30 44 45 16 16 17 48: 11(int) Constant 37 49: 11(int) Constant 42 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 25 30 48 49 16 16 17 @@ -173,7 +173,7 @@ spv.debuginfo.hlsl.vert 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 16 16 53 51 16 17 28 34 35 39 40 41 42 46 55: TypePointer Function 27(VSInput) 56: TypeVector 8(float) 4 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 26 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 58(VSOutput): TypeStruct 56(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 61: 11(int) Constant 53 62: 11(int) Constant 13 @@ -207,7 +207,7 @@ spv.debuginfo.hlsl.vert 112: TypePointer Function 23(int) 121: 11(int) Constant 68 122: TypePointer Function 8(float) - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 9 30 121 16 77 26 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 10 30 121 16 77 26 127: 23(int) Constant 5 130: TypeMatrix 56(fvec4) 4 132: TypeBool @@ -222,8 +222,8 @@ spv.debuginfo.hlsl.vert 143: 11(int) Constant 17 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 141 57 30 142 143 16 16 17 146: 11(int) Constant 46 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 9 30 146 143 16 16 17 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 9 30 146 143 16 16 17 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 10 30 146 143 16 16 17 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 10 30 146 143 16 16 17 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 149 52 30 121 16 53 149 16 17 135 139 140 144 147 150(ubo): TypeStruct 134(UBO) 153: 11(int) Constant 49 @@ -236,7 +236,7 @@ spv.debuginfo.hlsl.vert 159: 23(int) Constant 0 160: TypePointer Uniform 8(float) 166: 11(int) Constant 69 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 169 9 30 166 16 77 26 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 169 10 30 166 16 77 26 178: 11(int) Constant 71 179: TypeMatrix 18(fvec3) 3 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 133 diff --git a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out new file mode 100644 index 0000000000..30ad60c823 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out @@ -0,0 +1,196 @@ +spv.debuginfo.scalar_types.glsl.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 146 + + Capability Shader + Capability Float16 + Capability Float64 + Capability Int64 + Capability Int16 + Capability Int8 + Extension "SPV_KHR_non_semantic_info" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 14 "main" + ExecutionMode 14 OriginUpperLeft + 1: String "" + 8: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 29: String "bool" + 34: String "VAR_bool" + 41: String "int" + 46: String "VAR_int" + 53: String "VAR_uint" + 57: String "float" + 62: String "VAR_float" + 67: String "double" + 73: String "VAR_double" + 78: String "int8_t" + 83: String "VAR_int8_t" + 88: String "uint8_t" + 93: String "VAR_uint8_t" + 98: String "int16_t" + 104: String "VAR_int16_t" + 109: String "uint16_t" + 114: String "VAR_uint16_t" + 119: String "int64_t" + 124: String "VAR_int64_t" + 129: String "uint64_t" + 134: String "VAR_uint64_t" + 139: String "float16_t" + 144: String "VAR_float16_t" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + Name 14 "main" + Name 32 "VAR_bool" + Name 44 "VAR_int" + Name 51 "VAR_uint" + Name 60 "VAR_float" + Name 71 "VAR_double" + Name 81 "VAR_int8_t" + Name 91 "VAR_uint8_t" + Name 102 "VAR_int16_t" + Name 112 "VAR_uint16_t" + Name 122 "VAR_int64_t" + Name 132 "VAR_uint64_t" + Name 142 "VAR_float16_t" + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 27: 7(int) Constant 43 + 28: TypeBool + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 22 12 + 31: TypePointer Private 28(bool) + 32(VAR_bool): 31(ptr) Variable Private + 35: 7(int) Constant 8 + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 34 30 17 27 12 19 34 32(VAR_bool) 35 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 22 12 + 37: 28(bool) ConstantFalse + 39: 7(int) Constant 44 + 40: TypeInt 32 1 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 41 10 21 12 + 43: TypePointer Private 40(int) + 44(VAR_int): 43(ptr) Variable Private + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 46 42 17 39 12 19 46 44(VAR_int) 35 + 47: 40(int) Constant 0 + 49: 7(int) Constant 45 + 50: TypePointer Private 7(int) + 51(VAR_uint): 50(ptr) Variable Private + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 53 9 17 49 12 19 53 51(VAR_uint) 35 + 55: 7(int) Constant 46 + 56: TypeFloat 32 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 13 12 + 59: TypePointer Private 56(float) + 60(VAR_float): 59(ptr) Variable Private + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 17 55 12 19 62 60(VAR_float) 35 + 63: 56(float) Constant 0 + 65: 7(int) Constant 47 + 66: TypeFloat 64 + 69: 7(int) Constant 64 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 67 69 13 12 + 70: TypePointer Private 66(float64_t) + 71(VAR_double): 70(ptr) Variable Private + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 73 68 17 65 12 19 73 71(VAR_double) 35 + 74:66(float64_t) Constant 0 0 + 76: 7(int) Constant 48 + 77: TypeInt 8 1 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 78 35 21 12 + 80: TypePointer Private 77(int8_t) + 81(VAR_int8_t): 80(ptr) Variable Private + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 79 17 76 12 19 83 81(VAR_int8_t) 35 + 84: 77(int8_t) Constant 0 + 86: 7(int) Constant 49 + 87: TypeInt 8 0 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 88 35 11 12 + 90: TypePointer Private 87(int8_t) + 91(VAR_uint8_t): 90(ptr) Variable Private + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 93 89 17 86 12 19 93 91(VAR_uint8_t) 35 + 94: 87(int8_t) Constant 0 + 96: 7(int) Constant 50 + 97: TypeInt 16 1 + 100: 7(int) Constant 16 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 100 21 12 + 101: TypePointer Private 97(int16_t) +102(VAR_int16_t): 101(ptr) Variable Private + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 104 99 17 96 12 19 104 102(VAR_int16_t) 35 + 105: 97(int16_t) Constant 0 + 107: 7(int) Constant 51 + 108: TypeInt 16 0 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 109 100 11 12 + 111: TypePointer Private 108(int16_t) +112(VAR_uint16_t): 111(ptr) Variable Private + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 110 17 107 12 19 114 112(VAR_uint16_t) 35 + 115:108(int16_t) Constant 0 + 117: 7(int) Constant 52 + 118: TypeInt 64 1 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 119 69 21 12 + 121: TypePointer Private 118(int64_t) +122(VAR_int64_t): 121(ptr) Variable Private + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 120 17 117 12 19 124 122(VAR_int64_t) 35 + 125:118(int64_t) Constant 0 0 + 127: 7(int) Constant 53 + 128: TypeInt 64 0 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 129 69 11 12 + 131: TypePointer Private 128(int64_t) +132(VAR_uint64_t): 131(ptr) Variable Private + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 130 17 127 12 19 134 132(VAR_uint64_t) 35 + 135:128(int64_t) Constant 0 0 + 137: 7(int) Constant 54 + 138: TypeFloat 16 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 100 13 12 + 141: TypePointer Private 138(float16_t) +142(VAR_float16_t): 141(ptr) Variable Private + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 144 140 17 137 12 19 144 142(VAR_float16_t) 35 + 145:138(float16_t) Constant 0 + Line 1 42 11 + 14(main): 4 Function None 5 + 23: Label + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + Store 32(VAR_bool) 37 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 39 39 12 12 + Store 44(VAR_int) 47 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 49 49 12 12 + Store 51(VAR_uint) 12 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 55 55 12 12 + Store 60(VAR_float) 63 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 65 65 12 12 + Store 71(VAR_double) 74 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 76 76 12 12 + Store 81(VAR_int8_t) 84 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 86 86 12 12 + Store 91(VAR_uint8_t) 94 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 96 96 12 12 + Store 102(VAR_int16_t) 105 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 107 107 12 12 + Store 112(VAR_uint16_t) 115 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 117 117 12 12 + Store 122(VAR_int64_t) 125 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 127 127 12 12 + Store 132(VAR_uint64_t) 135 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 137 137 12 12 + Store 142(VAR_float16_t) 145 + Return + FunctionEnd diff --git a/Test/spv.debuginfo.scalar_types.glsl.frag b/Test/spv.debuginfo.scalar_types.glsl.frag new file mode 100644 index 0000000000..36595ea7cf --- /dev/null +++ b/Test/spv.debuginfo.scalar_types.glsl.frag @@ -0,0 +1,55 @@ +/* +The MIT License (MIT) + +Copyright (c) 2023 NVIDIA CORPORATION. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 460 + +#extension GL_EXT_shader_explicit_arithmetic_types : require + +bool VAR_bool; +int VAR_int; +uint VAR_uint; +float VAR_float; +double VAR_double; +int8_t VAR_int8_t; +uint8_t VAR_uint8_t; +int16_t VAR_int16_t; +uint16_t VAR_uint16_t; +int64_t VAR_int64_t; +uint64_t VAR_uint64_t; +float16_t VAR_float16_t; + +void main() { + VAR_bool = bool(0); + VAR_int = int(0); + VAR_uint = uint(0); + VAR_float = float(0); + VAR_double = double(0); + VAR_int8_t = int8_t(0); + VAR_uint8_t = uint8_t(0); + VAR_int16_t = int16_t(0); + VAR_uint16_t = uint16_t(0); + VAR_int64_t = int64_t(0); + VAR_uint64_t = uint64_t(0); + VAR_float16_t = float16_t(0); +} \ No newline at end of file diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index ee8f8f2a56..81b84d1f16 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -902,7 +902,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.debuginfo.glsl.geom", "spv.debuginfo.glsl.tesc", "spv.debuginfo.glsl.tese", - "spv.debuginfo.const_params.glsl.comp" + "spv.debuginfo.const_params.glsl.comp", + "spv.debuginfo.scalar_types.glsl.frag", })), FileNameAsCustomTestSuffix ); From 323836e46b9e453806e9eb5c1bf76c659c870fb2 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Sun, 10 Sep 2023 19:27:58 +0800 Subject: [PATCH 284/594] Use std::variant to represent TSpirvTypeParameter This PR is try to address the review comment: https://github.com/KhronosGroup/glslang/pull/3253#discussion_r1254932979. --- SPIRV/GlslangToSpv.cpp | 31 ++++++++++--------- glslang/Include/SpirvIntrinsics.h | 23 ++++++++------ .../MachineIndependent/SpirvIntrinsics.cpp | 8 ++--- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 373e95f0ae..12445ed412 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4492,26 +4492,27 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty std::vector operands; for (const auto& typeParam : spirvType.typeParams) { - if (typeParam.constant != nullptr) { + if (typeParam.getAsConstant() != nullptr) { // Constant expression - if (typeParam.constant->isLiteral()) { - if (typeParam.constant->getBasicType() == glslang::EbtFloat) { - float floatValue = static_cast(typeParam.constant->getConstArray()[0].getDConst()); + auto constant = typeParam.getAsConstant(); + if (constant->isLiteral()) { + if (constant->getBasicType() == glslang::EbtFloat) { + float floatValue = static_cast(constant->getConstArray()[0].getDConst()); unsigned literal; static_assert(sizeof(literal) == sizeof(floatValue), "sizeof(unsigned) != sizeof(float)"); memcpy(&literal, &floatValue, sizeof(literal)); operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtInt) { - unsigned literal = typeParam.constant->getConstArray()[0].getIConst(); + } else if (constant->getBasicType() == glslang::EbtInt) { + unsigned literal = constant->getConstArray()[0].getIConst(); operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtUint) { - unsigned literal = typeParam.constant->getConstArray()[0].getUConst(); + } else if (constant->getBasicType() == glslang::EbtUint) { + unsigned literal = constant->getConstArray()[0].getUConst(); operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtBool) { - unsigned literal = typeParam.constant->getConstArray()[0].getBConst(); + } else if (constant->getBasicType() == glslang::EbtBool) { + unsigned literal = constant->getConstArray()[0].getBConst(); operands.push_back({false, literal}); - } else if (typeParam.constant->getBasicType() == glslang::EbtString) { - auto str = typeParam.constant->getConstArray()[0].getSConst()->c_str(); + } else if (constant->getBasicType() == glslang::EbtString) { + auto str = constant->getConstArray()[0].getSConst()->c_str(); unsigned literal = 0; char* literalPtr = reinterpret_cast(&literal); unsigned charCount = 0; @@ -4536,11 +4537,11 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty } else assert(0); // Unexpected type } else - operands.push_back({true, createSpvConstant(*typeParam.constant)}); + operands.push_back({true, createSpvConstant(*constant)}); } else { // Type specifier - assert(typeParam.type != nullptr); - operands.push_back({true, convertGlslangToSpvType(*typeParam.type)}); + assert(typeParam.getAsType() != nullptr); + operands.push_back({true, convertGlslangToSpvType(*typeParam.getAsType())}); } } diff --git a/glslang/Include/SpirvIntrinsics.h b/glslang/Include/SpirvIntrinsics.h index bfb551e445..0082a4d4eb 100644 --- a/glslang/Include/SpirvIntrinsics.h +++ b/glslang/Include/SpirvIntrinsics.h @@ -39,6 +39,7 @@ // GL_EXT_spirv_intrinsics // #include "Common.h" +#include namespace glslang { @@ -96,23 +97,27 @@ struct TSpirvInstruction { struct TSpirvTypeParameter { POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - TSpirvTypeParameter(const TIntermConstantUnion* arg) + TSpirvTypeParameter(const TIntermConstantUnion* arg) { value = arg; } + TSpirvTypeParameter(const TType* arg) { value = arg; } + + const TIntermConstantUnion* getAsConstant() const { - constant = arg; - type = nullptr; + if (value.index() == 0) + return std::get(value); + return nullptr; } - - TSpirvTypeParameter(const TType *arg) + const TType* getAsType() const { - constant = nullptr; - type = arg; + if (value.index() == 1) + return std::get(value); + return nullptr; } bool operator==(const TSpirvTypeParameter& rhs) const; bool operator!=(const TSpirvTypeParameter& rhs) const { return !operator==(rhs); } - const TIntermConstantUnion* constant; // Constant expression - const TType* type; // Type specifier + // Parameter value: constant expression or type specifier + std::variant value; }; typedef TVector TSpirvTypeParameters; diff --git a/glslang/MachineIndependent/SpirvIntrinsics.cpp b/glslang/MachineIndependent/SpirvIntrinsics.cpp index 4e130c31be..1d08797ac2 100644 --- a/glslang/MachineIndependent/SpirvIntrinsics.cpp +++ b/glslang/MachineIndependent/SpirvIntrinsics.cpp @@ -45,11 +45,11 @@ namespace glslang { bool TSpirvTypeParameter::operator==(const TSpirvTypeParameter& rhs) const { - if (constant != nullptr) - return constant->getConstArray() == rhs.constant->getConstArray(); + if (getAsConstant() != nullptr) + return getAsConstant()->getConstArray() == rhs.getAsConstant()->getConstArray(); - assert(type != nullptr); - return *type == *rhs.type; + assert(getAsType() != nullptr); + return *getAsType() == *rhs.getAsType(); } // From efc33d1ee5f159722cea1cca28c76e09ad916ba3 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 15 Sep 2023 12:14:19 -0600 Subject: [PATCH 285/594] Fix segfault with atomic arg check Makes sure that we have an l-value before checking the storage type of the mem argument passed to an atomic memory operation. Fixes #3332. --- Test/baseResults/atomicAdd.comp.out | 2 +- .../baseResults/spv.atomicRvalue.error.vert.out | 9 +++++++++ Test/spv.atomicRvalue.error.vert | 7 +++++++ glslang/MachineIndependent/ParseHelper.cpp | 17 ++++++++++++----- gtests/Spv.FromFile.cpp | 1 + 5 files changed, 30 insertions(+), 6 deletions(-) create mode 100644 Test/baseResults/spv.atomicRvalue.error.vert.out create mode 100644 Test/spv.atomicRvalue.error.vert diff --git a/Test/baseResults/atomicAdd.comp.out b/Test/baseResults/atomicAdd.comp.out index 6752a713ff..5c9afc8976 100644 --- a/Test/baseResults/atomicAdd.comp.out +++ b/Test/baseResults/atomicAdd.comp.out @@ -1,5 +1,5 @@ atomicAdd.comp -ERROR: 0:18: 'atomicAdd' : Atomic memory function can only be used for shader storage block member or shared variable. +ERROR: 0:18: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions. ERROR: 1 compilation errors. No code generated. diff --git a/Test/baseResults/spv.atomicRvalue.error.vert.out b/Test/baseResults/spv.atomicRvalue.error.vert.out new file mode 100644 index 0000000000..a340141e7b --- /dev/null +++ b/Test/baseResults/spv.atomicRvalue.error.vert.out @@ -0,0 +1,9 @@ +spv.atomicRvalue.error.vert +ERROR: 0:5: 'assign' : l-value required +ERROR: 0:5: 'out' : Non-L-value cannot be passed for 'out' or 'inout' parameters. +ERROR: 0:5: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions. +ERROR: 0:6: 'atomicAdd' : Only l-values corresponding to shader block storage or shared variables can be used with atomic memory functions. +ERROR: 4 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/spv.atomicRvalue.error.vert b/Test/spv.atomicRvalue.error.vert new file mode 100644 index 0000000000..74b7c3bdbe --- /dev/null +++ b/Test/spv.atomicRvalue.error.vert @@ -0,0 +1,7 @@ +#version 440 + +void main() { + uint a = 5; + atomicAdd(a * 2, 0); + atomicAdd(a, 0); +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 806983a1dc..a144cba240 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2514,11 +2514,18 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true , true); - const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr; - const TQualifier& qualifier = (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier(); - if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer && qualifier.storage != EvqtaskPayloadSharedEXT) - error(loc,"Atomic memory function can only be used for shader storage block member or shared variable.", - fnCandidate.getName().c_str(), ""); + const char* errMsg = "Only l-values corresponding to shader block storage or shared variables can be used with " + "atomic memory functions."; + if (base) { + const TType* refType = (base->getType().isReference()) ? base->getType().getReferentType() : nullptr; + const TQualifier& qualifier = + (refType != nullptr) ? refType->getQualifier() : base->getType().getQualifier(); + if (qualifier.storage != EvqShared && qualifier.storage != EvqBuffer && + qualifier.storage != EvqtaskPayloadSharedEXT) + error(loc, errMsg, fnCandidate.getName().c_str(), ""); + } else { + error(loc, errMsg, fnCandidate.getName().c_str(), ""); + } break; } diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 81b84d1f16..b429ff77e6 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -529,6 +529,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.ext.texture_shadow_lod.frag", "spv.ext.texture_shadow_lod.error.frag", "spv.floatFetch.frag", + "spv.atomicRvalue.error.vert", })), FileNameAsCustomTestSuffix ); From a4aceb57de16c8362a9b142670185464937f684b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 06:15:42 +0000 Subject: [PATCH 286/594] Bump github/codeql-action from 2.21.5 to 2.21.7 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.21.5 to 2.21.7. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/00e563ead9f72a8461b24876bee2d0c2e8bd2ee8...04daf014b50eaf774287bf3f0f1869d4b4c4b913) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index c379fffd43..87bd834bb4 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@00e563ead9f72a8461b24876bee2d0c2e8bd2ee8 # v2.21.5 + uses: github/codeql-action/upload-sarif@04daf014b50eaf774287bf3f0f1869d4b4c4b913 # v2.21.7 with: sarif_file: results.sarif From 4c57db1595462c51d5080893f65c42fc1f318146 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Thu, 17 Aug 2023 13:49:18 -0600 Subject: [PATCH 287/594] Add --no-link option Adds the --no-link option which outputs the compiled shader binaries without linking them. This is a first step towards allowing users to create SPIR-v binary, non-executable libraries. When using the --no-link option, all functions are decorated with the Export linkage attribute. --- SPIRV/GlslangToSpv.cpp | 63 +- SPIRV/SpvBuilder.cpp | 34 +- SPIRV/SpvBuilder.h | 6 +- SPIRV/SpvPostProcess.cpp | 10 +- SPIRV/SpvTools.h | 1 + SPIRV/spvIR.h | 17 +- StandAlone/StandAlone.cpp | 206 +- Test/baseResults/spv.exportFunctions.comp.out | 36 + Test/spv.exportFunctions.comp | 9 + glslang/HLSL/hlslAttributes.cpp | 2 + glslang/Include/glslang_c_interface.h | 1 + glslang/Include/intermediate.h | 11 + glslang/MachineIndependent/ParseHelper.cpp | 3 + glslang/MachineIndependent/ParseHelper.h | 1 + glslang/MachineIndependent/ShaderLang.cpp | 11 +- glslang/MachineIndependent/SymbolTable.h | 7 +- glslang/MachineIndependent/attribute.cpp | 3 + glslang/MachineIndependent/attribute.h | 1 + glslang/MachineIndependent/glslang.y | 8 +- glslang/MachineIndependent/glslang_tab.cpp | 2604 ++++++++--------- glslang/MachineIndependent/glslang_tab.cpp.h | 2 +- glslang/Public/ShaderLang.h | 6 + gtests/Spv.FromFile.cpp | 19 + gtests/TestFixture.h | 64 +- 24 files changed, 1671 insertions(+), 1454 deletions(-) create mode 100644 Test/baseResults/spv.exportFunctions.comp.out create mode 100644 Test/spv.exportFunctions.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 12445ed412..79bcd139ea 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -133,7 +133,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { bool visitLoop(glslang::TVisit, glslang::TIntermLoop*); bool visitBranch(glslang::TVisit visit, glslang::TIntermBranch*); - void finishSpv(); + void finishSpv(bool compileOnly); void dumpSpv(std::vector& out); protected: @@ -167,6 +167,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { bool filterMember(const glslang::TType& member); spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, const glslang::TQualifier&); + spv::LinkageType convertGlslangLinkageToSpv(glslang::TLinkType glslangLinkType); void decorateStructType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, const glslang::TQualifier&, spv::Id, const std::vector& spvMembers); spv::Id makeArraySizeId(const glslang::TArraySizes&, int dim, bool allowZero = false); @@ -1588,8 +1589,12 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addCapability(spv::CapabilityVariablePointers); } - shaderEntry = builder.makeEntryPoint(glslangIntermediate->getEntryPointName().c_str()); - entryPoint = builder.addEntryPoint(executionModel, shaderEntry, glslangIntermediate->getEntryPointName().c_str()); + // If not linking, there is no entry point + if (!options.compileOnly) { + shaderEntry = builder.makeEntryPoint(glslangIntermediate->getEntryPointName().c_str()); + entryPoint = + builder.addEntryPoint(executionModel, shaderEntry, glslangIntermediate->getEntryPointName().c_str()); + } // Add the source extensions const auto& sourceExtensions = glslangIntermediate->getRequestedExtensions(); @@ -1939,23 +1944,26 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, } // Finish creating SPV, after the traversal is complete. -void TGlslangToSpvTraverser::finishSpv() +void TGlslangToSpvTraverser::finishSpv(bool compileOnly) { - // Finish the entry point function - if (! entryPointTerminated) { - builder.setBuildPoint(shaderEntry->getLastBlock()); - builder.leaveFunction(); - } + // If not linking, an entry point is not expected + if (!compileOnly) { + // Finish the entry point function + if (!entryPointTerminated) { + builder.setBuildPoint(shaderEntry->getLastBlock()); + builder.leaveFunction(); + } - // finish off the entry-point SPV instruction by adding the Input/Output - for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it) - entryPoint->addIdOperand(*it); + // finish off the entry-point SPV instruction by adding the Input/Output + for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it) + entryPoint->addIdOperand(*it); + } // Add capabilities, extensions, remove unneeded decorations, etc., // based on the resulting SPIR-V. // Note: WebGPU code generation must have the opportunity to aggressively // prune unreachable merge blocks and continue targets. - builder.postProcess(); + builder.postProcess(compileOnly); } // Write the SPV into 'out'. @@ -2840,9 +2848,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // In all cases, still let the traverser visit the children for us. makeFunctions(node->getAsAggregate()->getSequence()); - // Also, we want all globals initializers to go into the beginning of the entry point, before - // anything else gets there, so visit out of order, doing them all now. - makeGlobalInitializers(node->getAsAggregate()->getSequence()); + // Global initializers is specific to the shader entry point, which does not exist in compile-only mode + if (!options.compileOnly) { + // Also, we want all globals initializers to go into the beginning of the entry point, before + // anything else gets there, so visit out of order, doing them all now. + makeGlobalInitializers(node->getAsAggregate()->getSequence()); + } //Pre process linker objects for ray tracing stages if (glslangIntermediate->isRayTracingStage()) @@ -4329,6 +4340,16 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty return convertGlslangToSpvType(type, getExplicitLayout(type), type.getQualifier(), false, forwardReferenceOnly); } +spv::LinkageType TGlslangToSpvTraverser::convertGlslangLinkageToSpv(glslang::TLinkType linkType) +{ + switch (linkType) { + case glslang::ELinkExport: + return spv::LinkageTypeExport; + default: + return spv::LinkageTypeMax; + } +} + // Do full recursive conversion of an arbitrary glslang type to a SPIR-V Id. // explicitLayout can be kept the same throughout the hierarchical recursive walk. // Mutually recursive with convertGlslangStructToSpvType(). @@ -5396,10 +5417,10 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF } spv::Block* functionBlock; - spv::Function *function = builder.makeFunctionEntry(TranslatePrecisionDecoration(glslFunction->getType()), - convertGlslangToSpvType(glslFunction->getType()), - glslFunction->getName().c_str(), paramTypes, paramNames, - paramDecorations, &functionBlock); + spv::Function* function = builder.makeFunctionEntry( + TranslatePrecisionDecoration(glslFunction->getType()), convertGlslangToSpvType(glslFunction->getType()), + glslFunction->getName().c_str(), convertGlslangLinkageToSpv(glslFunction->getLinkType()), paramTypes, + paramNames, paramDecorations, &functionBlock); if (implicitThis) function->setImplicitThis(); @@ -10102,7 +10123,7 @@ void GlslangToSpv(const TIntermediate& intermediate, std::vector& TGlslangToSpvTraverser it(intermediate.getSpv().spv, &intermediate, logger, *options); root->traverse(&it); - it.finishSpv(); + it.finishSpv(options->compileOnly); it.dumpSpv(spirv); #if ENABLE_OPT diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 8aa6fbc3e6..49244bb393 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1835,6 +1835,10 @@ Instruction* Builder::addEntryPoint(ExecutionModel model, Function* function, co // Currently relying on the fact that all 'value' of interest are small non-negative values. void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int value1, int value2, int value3) { + // entryPoint can be null if we are in compile-only mode + if (!entryPoint) + return; + Instruction* instr = new Instruction(OpExecutionMode); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); @@ -1850,6 +1854,10 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int val void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const std::vector& literals) { + // entryPoint can be null if we are in compile-only mode + if (!entryPoint) + return; + Instruction* instr = new Instruction(OpExecutionMode); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); @@ -1861,6 +1869,10 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const s void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const std::vector& operandIds) { + // entryPoint can be null if we are in compile-only mode + if (!entryPoint) + return; + Instruction* instr = new Instruction(OpExecutionModeId); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); @@ -1944,6 +1956,16 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vector(dec)); } +void Builder::addLinkageDecoration(Id id, const char* name, spv::LinkageType linkType) { + Instruction* dec = new Instruction(OpDecorate); + dec->addIdOperand(id); + dec->addImmediateOperand(spv::DecorationLinkageAttributes); + dec->addStringOperand(name); + dec->addImmediateOperand(linkType); + + decorations.push_back(std::unique_ptr(dec)); +} + void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) { if (decoration == spv::DecorationMax) @@ -2048,7 +2070,7 @@ Function* Builder::makeEntryPoint(const char* entryPoint) emitNonSemanticShaderDebugInfo = false; } - entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, paramsTypes, paramNames, decorations, &entry); + entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, LinkageTypeMax, paramsTypes, paramNames, decorations, &entry); emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; @@ -2056,7 +2078,7 @@ Function* Builder::makeEntryPoint(const char* entryPoint) } // Comments in header -Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, +Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, LinkageType linkType, const std::vector& paramTypes, const std::vector& paramNames, const std::vector>& decorations, Block **entry) { @@ -2064,7 +2086,7 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const Id typeId = makeFunctionType(returnType, paramTypes); Id firstParamId = paramTypes.size() == 0 ? 0 : getUniqueIds((int)paramTypes.size()); Id funcId = getUniqueId(); - Function* function = new Function(funcId, returnType, typeId, firstParamId, module); + Function* function = new Function(funcId, returnType, typeId, firstParamId, linkType, name, module); // Set up the precisions setPrecision(function->getId(), precision); @@ -2234,6 +2256,12 @@ void Builder::enterFunction(Function const* function) defInst->addIdOperand(funcId); buildPoint->addInstruction(std::unique_ptr(defInst)); } + + if (auto linkType = function->getLinkType(); linkType != LinkageTypeMax) { + Id funcId = function->getFuncId(); + addCapability(CapabilityLinkage); + addLinkageDecoration(funcId, function->getExportName(), linkType); + } } // Comments in header diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 79d2681f12..2e1c07d49d 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -393,6 +393,7 @@ class Builder { void addDecoration(Id, Decoration, const char*); void addDecoration(Id, Decoration, const std::vector& literals); void addDecoration(Id, Decoration, const std::vector& strings); + void addLinkageDecoration(Id id, const char* name, spv::LinkageType linkType); void addDecorationId(Id id, Decoration, Id idDecoration); void addDecorationId(Id id, Decoration, const std::vector& operandIds); void addMemberDecoration(Id, unsigned int member, Decoration, int num = -1); @@ -417,7 +418,8 @@ class Builder { // Return the function, pass back the entry. // The returned pointer is only valid for the lifetime of this builder. Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, - const std::vector& paramTypes, const std::vector& paramNames, + LinkageType linkType, const std::vector& paramTypes, + const std::vector& paramNames, const std::vector>& precisions, Block **entry = nullptr); // Create a return. An 'implicit' return is one not appearing in the source @@ -828,7 +830,7 @@ class Builder { // Add capabilities, extensions, remove unneeded decorations, etc., // based on the resulting SPIR-V. - void postProcess(); + void postProcess(bool compileOnly); // Prune unreachable blocks in the CFG and remove unneeded decorations. void postProcessCFG(); diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index 50fb793b4c..13001a67a1 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -483,9 +483,13 @@ void Builder::postProcessFeatures() { } // comment in header -void Builder::postProcess() { - postProcessCFG(); - postProcessFeatures(); +void Builder::postProcess(bool compileOnly) +{ + // postProcessCFG needs an entrypoint to determine what is reachable, but if we are not creating an "executable" shader, we don't have an entrypoint + if (!compileOnly) + postProcessCFG(); + + postProcessFeatures(); } }; // end spv namespace diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index 6fc4e40b02..a4ce11b887 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -61,6 +61,7 @@ struct SpvOptions { bool validate {false}; bool emitNonSemanticShaderDebugInfo {false}; bool emitNonSemanticShaderDebugSource{ false }; + bool compileOnly{false}; }; #if ENABLE_OPT diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 5cbffec25f..1f8e28ff46 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -323,7 +323,7 @@ void inReadableOrder(Block* root, std::function reducedPrecisionParams; // list of parameter indexes that need a relaxed precision arg + LinkageType linkType; + std::string exportName; }; // @@ -473,10 +478,11 @@ class Module { // Add both // - the OpFunction instruction // - all the OpFunctionParameter instructions -__inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, Module& parent) +__inline Function::Function(Id id, Id resultType, Id functionType, Id firstParamId, LinkageType linkage, const std::string& name, Module& parent) : parent(parent), lineInstruction(nullptr), functionInstruction(id, resultType, OpFunction), implicitThis(false), - reducedPrecisionReturn(false) + reducedPrecisionReturn(false), + linkType(linkage) { // OpFunction functionInstruction.addImmediateOperand(FunctionControlMaskNone); @@ -492,6 +498,11 @@ __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParam parent.mapInstruction(param); parameterInstructions.push_back(param); } + + // If importing/exporting, save the function name (without the mangled parameters) for the linkage decoration + if (linkType != LinkageTypeMax) { + exportName = name.substr(0, name.find_first_of('(')); + } } __inline void Function::addLocalVariable(std::unique_ptr inst) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index d6ef52257f..8833e38eb2 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -73,40 +73,41 @@ extern "C" { } // Command-line options -enum TOptions { - EOptionNone = 0, - EOptionIntermediate = (1 << 0), - EOptionSuppressInfolog = (1 << 1), - EOptionMemoryLeakMode = (1 << 2), - EOptionRelaxedErrors = (1 << 3), - EOptionGiveWarnings = (1 << 4), - EOptionLinkProgram = (1 << 5), - EOptionMultiThreaded = (1 << 6), - EOptionDumpConfig = (1 << 7), - EOptionDumpReflection = (1 << 8), - EOptionSuppressWarnings = (1 << 9), - EOptionDumpVersions = (1 << 10), - EOptionSpv = (1 << 11), - EOptionHumanReadableSpv = (1 << 12), - EOptionVulkanRules = (1 << 13), - EOptionDefaultDesktop = (1 << 14), - EOptionOutputPreprocessed = (1 << 15), - EOptionOutputHexadecimal = (1 << 16), - EOptionReadHlsl = (1 << 17), - EOptionCascadingErrors = (1 << 18), - EOptionAutoMapBindings = (1 << 19), - EOptionFlattenUniformArrays = (1 << 20), - EOptionNoStorageFormat = (1 << 21), - EOptionKeepUncalled = (1 << 22), - EOptionHlslOffsets = (1 << 23), - EOptionHlslIoMapping = (1 << 24), - EOptionAutoMapLocations = (1 << 25), - EOptionDebug = (1 << 26), - EOptionStdin = (1 << 27), - EOptionOptimizeDisable = (1 << 28), - EOptionOptimizeSize = (1 << 29), - EOptionInvertY = (1 << 30), - EOptionDumpBareVersion = (1 << 31), +enum TOptions : uint64_t { + EOptionNone = 0, + EOptionIntermediate = (1ull << 0), + EOptionSuppressInfolog = (1ull << 1), + EOptionMemoryLeakMode = (1ull << 2), + EOptionRelaxedErrors = (1ull << 3), + EOptionGiveWarnings = (1ull << 4), + EOptionLinkProgram = (1ull << 5), + EOptionMultiThreaded = (1ull << 6), + EOptionDumpConfig = (1ull << 7), + EOptionDumpReflection = (1ull << 8), + EOptionSuppressWarnings = (1ull << 9), + EOptionDumpVersions = (1ull << 10), + EOptionSpv = (1ull << 11), + EOptionHumanReadableSpv = (1ull << 12), + EOptionVulkanRules = (1ull << 13), + EOptionDefaultDesktop = (1ull << 14), + EOptionOutputPreprocessed = (1ull << 15), + EOptionOutputHexadecimal = (1ull << 16), + EOptionReadHlsl = (1ull << 17), + EOptionCascadingErrors = (1ull << 18), + EOptionAutoMapBindings = (1ull << 19), + EOptionFlattenUniformArrays = (1ull << 20), + EOptionNoStorageFormat = (1ull << 21), + EOptionKeepUncalled = (1ull << 22), + EOptionHlslOffsets = (1ull << 23), + EOptionHlslIoMapping = (1ull << 24), + EOptionAutoMapLocations = (1ull << 25), + EOptionDebug = (1ull << 26), + EOptionStdin = (1ull << 27), + EOptionOptimizeDisable = (1ull << 28), + EOptionOptimizeSize = (1ull << 29), + EOptionInvertY = (1ull << 30), + EOptionDumpBareVersion = (1ull << 31), + EOptionCompileOnly = (1ull << 32), }; bool targetHlslFunctionality1 = false; bool SpvToolsDisassembler = false; @@ -166,7 +167,7 @@ void ProcessConfigFile() } int ReflectOptions = EShReflectionDefault; -int Options = 0; +std::underlying_type_t Options = EOptionNone; const char* ExecutableName = nullptr; const char* binaryFileName = nullptr; const char* depencyFileName = nullptr; @@ -889,6 +890,8 @@ void ProcessArguments(std::vector>& workItem bumpArg(); } else if (lowerword == "version") { Options |= EOptionDumpVersions; + } else if (lowerword == "no-link") { + Options |= EOptionCompileOnly; } else if (lowerword == "help") { usage(); break; @@ -1310,6 +1313,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) // glslang::TProgram& program = *new glslang::TProgram; + const bool compileOnly = (Options & EOptionCompileOnly) != 0; for (auto it = compUnits.cbegin(); it != compUnits.cend(); ++it) { const auto &compUnit = *it; for (int i = 0; i < compUnit.count; i++) { @@ -1326,6 +1330,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) shader->setSourceEntryPoint(sourceEntryPointName); } + if (compileOnly) + shader->setCompileOnly(); + shader->setOverrideVersion(GlslVersion); std::string intrinsicString = getIntrinsic(compUnit.text, compUnit.count); @@ -1445,7 +1452,8 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (! shader->parse(GetResources(), defaultVersion, false, messages, includer)) CompileFailed = true; - program.addShader(shader); + if (!compileOnly) + program.addShader(shader); if (! (Options & EOptionSuppressInfolog) && ! (Options & EOptionMemoryLeakMode)) { @@ -1460,27 +1468,28 @@ void CompileAndLinkShaderUnits(std::vector compUnits) // Program-level processing... // - // Link - if (! (Options & EOptionOutputPreprocessed) && ! program.link(messages)) - LinkFailed = true; - - // Map IO - if (Options & EOptionSpv) { - if (!program.mapIO()) + if (!compileOnly) { + // Link + if (!(Options & EOptionOutputPreprocessed) && !program.link(messages)) LinkFailed = true; - } - // Report - if (! (Options & EOptionSuppressInfolog) && - ! (Options & EOptionMemoryLeakMode)) { - PutsIfNonEmpty(program.getInfoLog()); - PutsIfNonEmpty(program.getInfoDebugLog()); - } + // Map IO + if (Options & EOptionSpv) { + if (!program.mapIO()) + LinkFailed = true; + } + + // Report + if (!(Options & EOptionSuppressInfolog) && !(Options & EOptionMemoryLeakMode)) { + PutsIfNonEmpty(program.getInfoLog()); + PutsIfNonEmpty(program.getInfoDebugLog()); + } - // Reflect - if (Options & EOptionDumpReflection) { - program.buildReflection(ReflectOptions); - program.dumpReflection(); + // Reflect + if (Options & EOptionDumpReflection) { + program.buildReflection(ReflectOptions); + program.dumpReflection(); + } } std::vector outputFiles; @@ -1490,43 +1499,57 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (CompileFailed || LinkFailed) printf("SPIR-V is not generated for failed compile or link\n"); else { - for (int stage = 0; stage < EShLangCount; ++stage) { - if (program.getIntermediate((EShLanguage)stage)) { - std::vector spirv; - spv::SpvBuildLogger logger; - glslang::SpvOptions spvOptions; - if (Options & EOptionDebug) { - spvOptions.generateDebugInfo = true; - if (emitNonSemanticShaderDebugInfo) { - spvOptions.emitNonSemanticShaderDebugInfo = true; - if (emitNonSemanticShaderDebugSource) { - spvOptions.emitNonSemanticShaderDebugSource = true; - } - } - } else if (stripDebugInfo) - spvOptions.stripDebugInfo = true; - spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0; - spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0; - spvOptions.disassemble = SpvToolsDisassembler; - spvOptions.validate = SpvToolsValidate; - glslang::GlslangToSpv(*program.getIntermediate((EShLanguage)stage), spirv, &logger, &spvOptions); - - // Dump the spv to a file or stdout, etc., but only if not doing - // memory/perf testing, as it's not internal to programmatic use. - if (! (Options & EOptionMemoryLeakMode)) { - printf("%s", logger.getAllMessages().c_str()); - if (Options & EOptionOutputHexadecimal) { - if (!glslang::OutputSpvHex(spirv, GetBinaryName((EShLanguage)stage), variableName)) - exit(EFailUsage); - } else { - if (!glslang::OutputSpvBin(spirv, GetBinaryName((EShLanguage)stage))) - exit(EFailUsage); + std::vector intermediates; + if (!compileOnly) { + for (int stage = 0; stage < EShLangCount; ++stage) { + if (auto* i = program.getIntermediate((EShLanguage)stage)) { + intermediates.emplace_back(i); + } + } + } else { + for (const auto* shader : shaders) { + if (auto* i = shader->getIntermediate()) { + intermediates.emplace_back(i); + } + } + } + for (auto* intermediate : intermediates) { + std::vector spirv; + spv::SpvBuildLogger logger; + glslang::SpvOptions spvOptions; + if (Options & EOptionDebug) { + spvOptions.generateDebugInfo = true; + if (emitNonSemanticShaderDebugInfo) { + spvOptions.emitNonSemanticShaderDebugInfo = true; + if (emitNonSemanticShaderDebugSource) { + spvOptions.emitNonSemanticShaderDebugSource = true; } - - outputFiles.push_back(GetBinaryName((EShLanguage)stage)); - if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv)) - spv::Disassemble(std::cout, spirv); } + } else if (stripDebugInfo) + spvOptions.stripDebugInfo = true; + spvOptions.disableOptimizer = (Options & EOptionOptimizeDisable) != 0; + spvOptions.optimizeSize = (Options & EOptionOptimizeSize) != 0; + spvOptions.disassemble = SpvToolsDisassembler; + spvOptions.validate = SpvToolsValidate; + spvOptions.compileOnly = compileOnly; + glslang::GlslangToSpv(*intermediate, spirv, &logger, &spvOptions); + + // Dump the spv to a file or stdout, etc., but only if not doing + // memory/perf testing, as it's not internal to programmatic use. + if (!(Options & EOptionMemoryLeakMode)) { + printf("%s", logger.getAllMessages().c_str()); + const auto filename = GetBinaryName(intermediate->getStage()); + if (Options & EOptionOutputHexadecimal) { + if (!glslang::OutputSpvHex(spirv, filename, variableName)) + exit(EFailUsage); + } else { + if (!glslang::OutputSpvBin(spirv, filename)) + exit(EFailUsage); + } + + outputFiles.push_back(filename); + if (!SpvToolsDisassembler && (Options & EOptionHumanReadableSpv)) + spv::Disassemble(std::cout, spirv); } } } @@ -2075,7 +2098,10 @@ void usage() " --variable-name \n" " --vn creates a C header file that contains a\n" " uint32_t array named \n" - " initialized with the shader binary code\n"); + " initialized with the shader binary code\n" + " --no-link Only compile shader; do not link (GLSL-only)\n" + " NOTE: this option will set the export linkage\n" + " attribute on all functions\n"); exit(EFailUsage); } diff --git a/Test/baseResults/spv.exportFunctions.comp.out b/Test/baseResults/spv.exportFunctions.comp.out new file mode 100644 index 0000000000..958cf680e8 --- /dev/null +++ b/Test/baseResults/spv.exportFunctions.comp.out @@ -0,0 +1,36 @@ +spv.exportFunctions.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 22 + + Capability Shader + Capability Linkage + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + Source GLSL 450 + Name 7 "add(f1;f1;" + Name 5 "a" + Name 6 "b" + Name 11 "foo(" + Decorate 7(add(f1;f1;) Linkage Attributes 6579297 0 + Decorate 11(foo() Linkage Attributes 7303014 0 + 2: TypeFloat 32 + 3: TypePointer Function 2(float) + 4: TypeFunction 2(float) 3(ptr) 3(ptr) + 9: TypeInt 32 1 + 10: TypeFunction 9(int) + 17: TypeVoid + 19: 9(int) Constant 0 + 7(add(f1;f1;): 2(float) Function None 4 + 5(a): 3(ptr) FunctionParameter + 6(b): 3(ptr) FunctionParameter + 8: Label + 13: 2(float) Load 5(a) + 14: 2(float) Load 6(b) + 15: 2(float) FAdd 13 14 + ReturnValue 15 + FunctionEnd + 11(foo(): 9(int) Function None 10 + 12: Label + ReturnValue 19 + FunctionEnd diff --git a/Test/spv.exportFunctions.comp b/Test/spv.exportFunctions.comp new file mode 100644 index 0000000000..9332c65b61 --- /dev/null +++ b/Test/spv.exportFunctions.comp @@ -0,0 +1,9 @@ +#version 450 + +float add(float a, float b) { + return a + b; +} + +int foo() { + return 0; +} diff --git a/glslang/HLSL/hlslAttributes.cpp b/glslang/HLSL/hlslAttributes.cpp index 0cc0d3f4fc..973054931c 100644 --- a/glslang/HLSL/hlslAttributes.cpp +++ b/glslang/HLSL/hlslAttributes.cpp @@ -101,6 +101,8 @@ namespace glslang { if (name == "nonwritable") return EatNonWritable; if (name == "nonreadable") return EatNonReadable; + + if (name == "export") return EatExport; } else if (nameSpace.size() > 0) return EatNone; diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index fd636cf5fd..7fa1a05d51 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -226,6 +226,7 @@ typedef struct glslang_spv_options_s { bool validate; bool emit_nonsemantic_shader_debug_info; bool emit_nonsemantic_shader_debug_source; + bool compile_only; } glslang_spv_options_t; #ifdef __cplusplus diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 604f08b6ec..4a4fe1a071 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1108,6 +1108,11 @@ enum TOperator { EOpImageBlockMatchSSDQCOM, }; +enum TLinkType { + ELinkNone, + ELinkExport, +}; + class TIntermTraverser; class TIntermOperator; class TIntermAggregate; @@ -1325,9 +1330,11 @@ class TIntermMethod : public TIntermTyped { virtual const TString& getMethodName() const { return method; } virtual TIntermTyped* getObject() const { return object; } virtual void traverse(TIntermTraverser*); + void setExport() { linkType = ELinkExport; } protected: TIntermTyped* object; TString method; + TLinkType linkType; }; // @@ -1700,6 +1707,9 @@ class TIntermAggregate : public TIntermOperator { const TPragmaTable& getPragmaTable() const { return *pragmaTable; } void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } + + void setLinkType(TLinkType l) { linkType = l; } + TLinkType getLinkType() const { return linkType; } protected: TIntermAggregate(const TIntermAggregate&); // disallow copy constructor TIntermAggregate& operator=(const TIntermAggregate&); // disallow assignment operator @@ -1711,6 +1721,7 @@ class TIntermAggregate : public TIntermOperator { bool debug; TPragmaTable* pragmaTable; TSpirvInstruction spirvInst; + TLinkType linkType = ELinkNone; }; // diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index a144cba240..f81440dcd9 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1243,6 +1243,8 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc, error(loc, "function cannot take any parameter(s)", function.getName().c_str(), ""); if (function.getType().getBasicType() != EbtVoid) error(loc, "", function.getType().getBasicTypeString().c_str(), "entry point cannot return a value"); + if (function.getLinkType() != ELinkNone) + error(loc, "main function cannot be exported", "", ""); } // @@ -1279,6 +1281,7 @@ TIntermAggregate* TParseContext::handleFunctionDefinition(const TSourceLoc& loc, } else paramNodes = intermediate.growAggregate(paramNodes, intermediate.addSymbol(*param.type, loc), loc); } + paramNodes->setLinkType(function.getLinkType()); intermediate.setAggregateOperator(paramNodes, EOpParameters, TType(EbtVoid), loc); loopNestingLevel = 0; statementNestingLevel = 0; diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index d74662939f..05ebca275d 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -196,6 +196,7 @@ class TParseContextBase : public TParseVersions { struct TPragma contextPragma; int beginInvocationInterlockCount; int endInvocationInterlockCount; + bool compileOnly = false; protected: TParseContextBase(TParseContextBase&); diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 51c524bbec..2c77e2fd2e 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -796,7 +796,8 @@ bool ProcessDeferred( bool requireNonempty, TShader::Includer& includer, const std::string sourceEntryPointName = "", - const TEnvironment* environment = nullptr) // optional way of fully setting all versions, overriding the above + const TEnvironment* environment = nullptr, // optional way of fully setting all versions, overriding the above + bool compileOnly = false) { // This must be undone (.pop()) by the caller, after it finishes consuming the created tree. GetThreadPoolAllocator().push(); @@ -942,6 +943,7 @@ bool ProcessDeferred( std::unique_ptr parseContext(CreateParseContext(*symbolTable, intermediate, version, profile, source, stage, compiler->infoSink, spvVersion, forwardCompatible, messages, false, sourceEntryPointName)); + parseContext->compileOnly = compileOnly; TPpContext ppContext(*parseContext, names[numPre] ? names[numPre] : "", includer); // only GLSL (bison triggered, really) needs an externally set scan context @@ -1279,14 +1281,15 @@ bool CompileDeferred( TIntermediate& intermediate,// returned tree, etc. TShader::Includer& includer, const std::string sourceEntryPointName = "", - TEnvironment* environment = nullptr) + TEnvironment* environment = nullptr, + bool compileOnly = false) { DoFullParse parser; return ProcessDeferred(compiler, shaderStrings, numStrings, inputLengths, stringNames, preamble, optLevel, resources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, intermediate, parser, - true, includer, sourceEntryPointName, environment); + true, includer, sourceEntryPointName, environment, compileOnly); } } // end anonymous namespace for local functions @@ -1867,7 +1870,7 @@ bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion preamble, EShOptNone, builtInResources, defaultVersion, defaultProfile, forceDefaultVersionAndProfile, overrideVersion, forwardCompatible, messages, *intermediate, includer, sourceEntryPointName, - &environment); + &environment, compileOnly); } // Fill in a string with the result of preprocessing ShaderStrings diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index da23bbb89d..9c453c8268 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -246,7 +246,8 @@ class TFunction : public TSymbol { TSymbol(name), mangledName(*name + '('), op(tOp), - defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), defaultParamCount(0) + defined(false), prototyped(false), implicitThis(false), illegalImplicitThis(false), defaultParamCount(0), + linkType(ELinkNone) { returnType.shallowCopy(retType); declaredBuiltIn = retType.getQualifier().builtIn; @@ -326,6 +327,9 @@ class TFunction : public TSymbol { virtual void dump(TInfoSink& infoSink, bool complete = false) const override; + void setExport() { linkType = ELinkExport; } + TLinkType getLinkType() const { return linkType; } + protected: explicit TFunction(const TFunction&); TFunction& operator=(const TFunction&); @@ -347,6 +351,7 @@ class TFunction : public TSymbol { int defaultParamCount; TSpirvInstruction spirvInst; // SPIR-V instruction qualifiers + TLinkType linkType; }; // diff --git a/glslang/MachineIndependent/attribute.cpp b/glslang/MachineIndependent/attribute.cpp index 21ef736870..a167c494fb 100644 --- a/glslang/MachineIndependent/attribute.cpp +++ b/glslang/MachineIndependent/attribute.cpp @@ -123,6 +123,8 @@ TAttributeType TParseContext::attributeFromName(const TString& name) const return EatPartialCount; else if (name == "subgroup_uniform_control_flow") return EatSubgroupUniformControlFlow; + else if (name == "export") + return EatExport; else return EatNone; } @@ -355,6 +357,7 @@ void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttri switch (it->name) { case EatSubgroupUniformControlFlow: + requireExtensions(loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); intermediate.setSubgroupUniformControlFlow(); break; default: diff --git a/glslang/MachineIndependent/attribute.h b/glslang/MachineIndependent/attribute.h index c5b29176c4..a0c4c43d45 100644 --- a/glslang/MachineIndependent/attribute.h +++ b/glslang/MachineIndependent/attribute.h @@ -120,6 +120,7 @@ namespace glslang { EatNonWritable, EatNonReadable, EatSubgroupUniformControlFlow, + EatExport, }; class TIntermAggregate; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index d47f29259a..99f0d388bc 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -941,24 +941,25 @@ identifier_list function_prototype : function_declarator RIGHT_PAREN { $$.function = $1; + if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $2.loc; } | function_declarator RIGHT_PAREN attribute { $$.function = $1; + if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $2.loc; - parseContext.requireExtensions($2.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes($2.loc, *$3); } | attribute function_declarator RIGHT_PAREN { $$.function = $2; + if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $3.loc; - parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes($3.loc, *$1); } | attribute function_declarator RIGHT_PAREN attribute { $$.function = $2; + if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $3.loc; - parseContext.requireExtensions($3.loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes($3.loc, *$1); parseContext.handleFunctionAttributes($3.loc, *$4); } @@ -4088,6 +4089,7 @@ function_definition parseContext.error($1.loc, "function does not return a value:", "", $1.function->getName().c_str()); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); $$ = parseContext.intermediate.growAggregate($1.intermNode, $3); + $$->getAsAggregate()->setLinkType($1.function->getLinkType()); parseContext.intermediate.setAggregateOperator($$, EOpFunction, $1.function->getType(), $1.loc); $$->getAsAggregate()->setName($1.function->getMangledName().c_str()); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index a265abc802..534bee13cb 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -67,7 +67,7 @@ /* First part of user prologue. */ -#line 69 "MachineIndependent/glslang.y" +#line 44 "MachineIndependent/glslang.y" /* Based on: @@ -723,7 +723,7 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; /* Second part of user prologue. */ -#line 136 "MachineIndependent/glslang.y" +#line 111 "MachineIndependent/glslang.y" /* windows only pragma */ @@ -1167,77 +1167,77 @@ static const yytype_int16 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 395, 395, 401, 404, 409, 412, 415, 419, 423, - 426, 430, 434, 438, 442, 446, 450, 456, 464, 467, - 470, 473, 476, 481, 489, 496, 503, 509, 513, 520, - 523, 529, 536, 546, 554, 559, 587, 596, 602, 606, - 610, 630, 631, 632, 633, 639, 640, 645, 650, 659, - 660, 665, 673, 674, 680, 689, 690, 695, 700, 705, - 713, 714, 723, 735, 736, 745, 746, 755, 756, 765, - 766, 774, 775, 783, 784, 792, 793, 793, 811, 812, - 828, 832, 836, 840, 845, 849, 853, 857, 861, 865, - 869, 876, 879, 890, 897, 903, 910, 916, 921, 928, - 932, 936, 940, 945, 950, 959, 959, 970, 974, 981, - 985, 991, 997, 1007, 1010, 1017, 1025, 1045, 1068, 1083, - 1108, 1119, 1129, 1139, 1149, 1158, 1161, 1165, 1169, 1174, - 1182, 1189, 1194, 1199, 1204, 1213, 1223, 1250, 1259, 1266, - 1274, 1281, 1288, 1296, 1304, 1314, 1324, 1331, 1342, 1348, - 1351, 1358, 1362, 1366, 1375, 1385, 1388, 1399, 1402, 1405, - 1409, 1413, 1418, 1422, 1425, 1430, 1434, 1439, 1448, 1452, - 1457, 1463, 1469, 1476, 1481, 1486, 1494, 1500, 1512, 1526, - 1532, 1537, 1545, 1553, 1561, 1569, 1577, 1585, 1593, 1601, - 1609, 1616, 1623, 1627, 1632, 1637, 1642, 1647, 1652, 1657, - 1661, 1665, 1669, 1673, 1679, 1685, 1697, 1704, 1707, 1716, - 1723, 1734, 1739, 1747, 1751, 1761, 1764, 1770, 1776, 1781, - 1789, 1799, 1803, 1807, 1811, 1816, 1820, 1825, 1830, 1835, - 1840, 1845, 1850, 1855, 1860, 1865, 1871, 1877, 1883, 1888, - 1893, 1898, 1903, 1908, 1913, 1918, 1923, 1928, 1933, 1938, - 1944, 1951, 1956, 1961, 1966, 1971, 1976, 1981, 1986, 1991, - 1996, 2001, 2006, 2014, 2022, 2030, 2036, 2042, 2048, 2054, - 2060, 2066, 2072, 2078, 2084, 2090, 2096, 2102, 2108, 2114, - 2120, 2126, 2132, 2138, 2144, 2150, 2156, 2162, 2168, 2174, - 2180, 2186, 2192, 2198, 2204, 2210, 2216, 2222, 2228, 2236, - 2244, 2252, 2260, 2268, 2276, 2284, 2292, 2300, 2308, 2316, - 2324, 2330, 2336, 2342, 2348, 2354, 2360, 2366, 2372, 2378, - 2384, 2390, 2396, 2402, 2408, 2414, 2420, 2426, 2432, 2438, - 2444, 2450, 2456, 2462, 2468, 2474, 2480, 2486, 2492, 2498, - 2504, 2510, 2516, 2522, 2528, 2534, 2540, 2544, 2548, 2552, - 2557, 2563, 2568, 2573, 2578, 2583, 2588, 2593, 2599, 2604, - 2609, 2614, 2619, 2624, 2630, 2636, 2642, 2648, 2654, 2660, - 2666, 2672, 2678, 2684, 2690, 2696, 2702, 2708, 2713, 2718, - 2723, 2728, 2733, 2738, 2744, 2749, 2754, 2759, 2764, 2769, - 2774, 2779, 2785, 2790, 2795, 2800, 2805, 2810, 2815, 2820, - 2825, 2830, 2835, 2840, 2845, 2850, 2855, 2861, 2866, 2871, - 2877, 2883, 2888, 2893, 2898, 2904, 2909, 2914, 2919, 2925, - 2930, 2935, 2940, 2946, 2951, 2956, 2961, 2967, 2973, 2979, - 2985, 2990, 2996, 3002, 3008, 3013, 3018, 3023, 3028, 3033, - 3039, 3044, 3049, 3054, 3060, 3065, 3070, 3075, 3081, 3086, - 3091, 3096, 3102, 3107, 3112, 3117, 3123, 3128, 3133, 3138, - 3144, 3149, 3154, 3159, 3165, 3170, 3175, 3180, 3186, 3191, - 3196, 3201, 3207, 3212, 3217, 3222, 3228, 3233, 3238, 3243, - 3249, 3254, 3259, 3264, 3270, 3275, 3280, 3285, 3291, 3296, - 3301, 3306, 3312, 3317, 3322, 3327, 3333, 3338, 3343, 3348, - 3353, 3358, 3363, 3368, 3373, 3378, 3383, 3388, 3393, 3398, - 3403, 3408, 3413, 3418, 3423, 3428, 3433, 3438, 3443, 3448, - 3453, 3459, 3465, 3471, 3477, 3483, 3489, 3495, 3502, 3509, - 3515, 3521, 3527, 3533, 3540, 3547, 3554, 3561, 3565, 3570, - 3575, 3591, 3596, 3601, 3609, 3609, 3620, 3620, 3630, 3633, - 3646, 3668, 3695, 3699, 3705, 3710, 3721, 3725, 3731, 3737, - 3748, 3751, 3758, 3762, 3763, 3769, 3770, 3771, 3772, 3773, - 3774, 3775, 3777, 3783, 3792, 3793, 3797, 3793, 3809, 3810, - 3814, 3814, 3821, 3821, 3835, 3838, 3846, 3854, 3865, 3866, - 3870, 3874, 3882, 3889, 3893, 3901, 3905, 3918, 3922, 3930, - 3930, 3950, 3953, 3959, 3971, 3983, 3987, 3995, 3995, 4010, - 4010, 4028, 4028, 4049, 4052, 4058, 4061, 4067, 4071, 4078, - 4083, 4088, 4095, 4098, 4102, 4107, 4111, 4121, 4125, 4134, - 4137, 4141, 4150, 4150, 4192, 4197, 4200, 4205, 4208, 4215, - 4218, 4223, 4226, 4231, 4234, 4239, 4242, 4247, 4251, 4256, - 4260, 4265, 4269, 4276, 4279, 4284, 4287, 4290, 4293, 4296, - 4301, 4310, 4321, 4326, 4334, 4338, 4343, 4347, 4352, 4356, - 4361, 4365, 4372, 4375, 4380, 4383, 4386, 4389, 4394, 4397, - 4402, 4408, 4411, 4414, 4417, 4422, 4426, 4431, 4435, 4440, - 4444, 4451, 4454, 4459, 4462, 4467, 4470, 4476, 4479, 4484, - 4487 + 0, 362, 362, 368, 371, 376, 379, 382, 386, 389, + 392, 396, 400, 404, 408, 412, 416, 422, 429, 432, + 435, 438, 441, 446, 454, 461, 468, 474, 478, 485, + 488, 494, 501, 511, 519, 524, 551, 559, 565, 569, + 573, 593, 594, 595, 596, 602, 603, 608, 613, 622, + 623, 628, 636, 637, 643, 652, 653, 658, 663, 668, + 676, 677, 686, 698, 699, 708, 709, 718, 719, 728, + 729, 737, 738, 746, 747, 755, 756, 756, 774, 775, + 791, 795, 799, 803, 808, 812, 816, 820, 824, 828, + 832, 839, 842, 853, 860, 865, 872, 877, 882, 889, + 893, 897, 901, 906, 911, 920, 920, 931, 935, 942, + 947, 953, 959, 969, 972, 979, 987, 1007, 1030, 1045, + 1070, 1081, 1091, 1101, 1111, 1120, 1123, 1127, 1131, 1136, + 1144, 1149, 1154, 1159, 1164, 1173, 1183, 1210, 1219, 1226, + 1233, 1240, 1247, 1255, 1263, 1273, 1283, 1290, 1300, 1306, + 1309, 1316, 1320, 1324, 1332, 1341, 1344, 1355, 1358, 1361, + 1365, 1369, 1373, 1377, 1380, 1385, 1389, 1394, 1402, 1406, + 1411, 1417, 1423, 1430, 1435, 1440, 1448, 1453, 1465, 1479, + 1485, 1490, 1498, 1506, 1514, 1522, 1530, 1538, 1546, 1554, + 1562, 1569, 1576, 1580, 1585, 1590, 1595, 1600, 1605, 1610, + 1614, 1618, 1622, 1626, 1632, 1638, 1648, 1655, 1658, 1666, + 1673, 1684, 1689, 1697, 1701, 1711, 1714, 1720, 1726, 1731, + 1739, 1749, 1753, 1757, 1761, 1766, 1770, 1775, 1780, 1785, + 1790, 1795, 1800, 1805, 1810, 1815, 1821, 1827, 1833, 1838, + 1843, 1848, 1853, 1858, 1863, 1868, 1873, 1878, 1883, 1888, + 1893, 1900, 1905, 1910, 1915, 1920, 1925, 1930, 1935, 1940, + 1945, 1950, 1955, 1963, 1971, 1979, 1985, 1991, 1997, 2003, + 2009, 2015, 2021, 2027, 2033, 2039, 2045, 2051, 2057, 2063, + 2069, 2075, 2081, 2087, 2093, 2099, 2105, 2111, 2117, 2123, + 2129, 2135, 2141, 2147, 2153, 2159, 2165, 2171, 2177, 2185, + 2193, 2201, 2209, 2217, 2225, 2233, 2241, 2249, 2257, 2265, + 2273, 2279, 2285, 2291, 2297, 2303, 2309, 2315, 2321, 2327, + 2333, 2339, 2345, 2351, 2357, 2363, 2369, 2375, 2381, 2387, + 2393, 2399, 2405, 2411, 2417, 2423, 2429, 2435, 2441, 2447, + 2453, 2459, 2465, 2471, 2477, 2483, 2489, 2493, 2497, 2501, + 2506, 2511, 2516, 2521, 2526, 2531, 2536, 2541, 2546, 2551, + 2556, 2561, 2566, 2571, 2577, 2583, 2589, 2595, 2601, 2607, + 2613, 2619, 2625, 2631, 2637, 2643, 2649, 2654, 2659, 2664, + 2669, 2674, 2679, 2684, 2689, 2694, 2699, 2704, 2709, 2714, + 2719, 2724, 2729, 2734, 2739, 2744, 2749, 2754, 2759, 2764, + 2769, 2774, 2779, 2784, 2789, 2794, 2799, 2804, 2809, 2814, + 2820, 2826, 2831, 2836, 2841, 2847, 2852, 2857, 2862, 2868, + 2873, 2878, 2883, 2889, 2894, 2899, 2904, 2910, 2916, 2922, + 2928, 2933, 2939, 2945, 2951, 2956, 2961, 2966, 2971, 2976, + 2982, 2987, 2992, 2997, 3003, 3008, 3013, 3018, 3024, 3029, + 3034, 3039, 3045, 3050, 3055, 3060, 3066, 3071, 3076, 3081, + 3087, 3092, 3097, 3102, 3108, 3113, 3118, 3123, 3129, 3134, + 3139, 3144, 3150, 3155, 3160, 3165, 3171, 3176, 3181, 3186, + 3192, 3197, 3202, 3207, 3213, 3218, 3223, 3228, 3234, 3239, + 3244, 3249, 3255, 3260, 3265, 3270, 3276, 3281, 3286, 3291, + 3296, 3301, 3306, 3311, 3316, 3321, 3326, 3331, 3336, 3341, + 3346, 3351, 3356, 3361, 3366, 3371, 3376, 3381, 3386, 3391, + 3396, 3402, 3408, 3414, 3420, 3426, 3432, 3438, 3445, 3452, + 3458, 3464, 3470, 3476, 3483, 3490, 3497, 3504, 3508, 3512, + 3517, 3533, 3538, 3543, 3551, 3551, 3562, 3562, 3572, 3575, + 3588, 3610, 3637, 3641, 3647, 3652, 3663, 3666, 3672, 3678, + 3687, 3690, 3696, 3700, 3701, 3707, 3708, 3709, 3710, 3711, + 3712, 3713, 3714, 3718, 3726, 3727, 3731, 3727, 3743, 3744, + 3748, 3748, 3755, 3755, 3769, 3772, 3780, 3788, 3799, 3800, + 3804, 3807, 3814, 3821, 3825, 3833, 3837, 3850, 3853, 3860, + 3860, 3880, 3883, 3889, 3901, 3913, 3916, 3923, 3923, 3938, + 3938, 3956, 3956, 3977, 3980, 3986, 3989, 3995, 3999, 4006, + 4011, 4016, 4023, 4026, 4030, 4034, 4038, 4047, 4051, 4060, + 4063, 4066, 4074, 4074, 4116, 4121, 4124, 4129, 4132, 4137, + 4140, 4145, 4148, 4153, 4156, 4161, 4164, 4169, 4173, 4178, + 4182, 4187, 4191, 4198, 4201, 4206, 4209, 4212, 4215, 4218, + 4223, 4232, 4243, 4248, 4256, 4260, 4265, 4269, 4274, 4278, + 4283, 4287, 4294, 4297, 4302, 4305, 4308, 4311, 4316, 4319, + 4324, 4330, 4333, 4336, 4339, 4344, 4348, 4353, 4357, 4362, + 4366, 4373, 4376, 4381, 4384, 4389, 4392, 4398, 4401, 4406, + 4409 }; #endif @@ -5210,7 +5210,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 395 "MachineIndependent/glslang.y" +#line 362 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } @@ -5218,7 +5218,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 3: /* primary_expression: variable_identifier */ -#line 401 "MachineIndependent/glslang.y" +#line 368 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -5226,7 +5226,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 404 "MachineIndependent/glslang.y" +#line 371 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) @@ -5236,7 +5236,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 409 "MachineIndependent/glslang.y" +#line 376 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } @@ -5244,7 +5244,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 6: /* primary_expression: INTCONSTANT */ -#line 412 "MachineIndependent/glslang.y" +#line 379 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } @@ -5252,7 +5252,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 7: /* primary_expression: UINTCONSTANT */ -#line 415 "MachineIndependent/glslang.y" +#line 382 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); @@ -5261,7 +5261,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 8: /* primary_expression: BOOLCONSTANT */ -#line 419 "MachineIndependent/glslang.y" +#line 386 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } @@ -5269,7 +5269,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 9: /* primary_expression: STRING_LITERAL */ -#line 423 "MachineIndependent/glslang.y" +#line 389 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } @@ -5277,7 +5277,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 10: /* primary_expression: INT32CONSTANT */ -#line 426 "MachineIndependent/glslang.y" +#line 392 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); @@ -5286,7 +5286,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 11: /* primary_expression: UINT32CONSTANT */ -#line 430 "MachineIndependent/glslang.y" +#line 396 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); @@ -5295,7 +5295,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 12: /* primary_expression: INT64CONSTANT */ -#line 434 "MachineIndependent/glslang.y" +#line 400 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); @@ -5304,7 +5304,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 438 "MachineIndependent/glslang.y" +#line 404 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); @@ -5313,7 +5313,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 14: /* primary_expression: INT16CONSTANT */ -#line 442 "MachineIndependent/glslang.y" +#line 408 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); @@ -5322,7 +5322,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 446 "MachineIndependent/glslang.y" +#line 412 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); @@ -5331,7 +5331,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 450 "MachineIndependent/glslang.y" +#line 416 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -5342,7 +5342,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 456 "MachineIndependent/glslang.y" +#line 422 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); @@ -5351,7 +5351,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 18: /* postfix_expression: primary_expression */ -#line 464 "MachineIndependent/glslang.y" +#line 429 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -5359,7 +5359,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 467 "MachineIndependent/glslang.y" +#line 432 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } @@ -5367,7 +5367,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 20: /* postfix_expression: function_call */ -#line 470 "MachineIndependent/glslang.y" +#line 435 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -5375,7 +5375,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 473 "MachineIndependent/glslang.y" +#line 438 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } @@ -5383,7 +5383,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 476 "MachineIndependent/glslang.y" +#line 441 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); @@ -5393,7 +5393,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 481 "MachineIndependent/glslang.y" +#line 446 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); @@ -5403,7 +5403,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 24: /* integer_expression: expression */ -#line 489 "MachineIndependent/glslang.y" +#line 454 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); @@ -5412,7 +5412,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 25: /* function_call: function_call_or_method */ -#line 496 "MachineIndependent/glslang.y" +#line 461 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; @@ -5421,7 +5421,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 26: /* function_call_or_method: function_call_generic */ -#line 503 "MachineIndependent/glslang.y" +#line 468 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } @@ -5429,7 +5429,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 509 "MachineIndependent/glslang.y" +#line 474 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; @@ -5438,7 +5438,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 513 "MachineIndependent/glslang.y" +#line 478 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; @@ -5447,7 +5447,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 520 "MachineIndependent/glslang.y" +#line 485 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } @@ -5455,7 +5455,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 30: /* function_call_header_no_parameters: function_call_header */ -#line 523 "MachineIndependent/glslang.y" +#line 488 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } @@ -5463,7 +5463,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 529 "MachineIndependent/glslang.y" +#line 494 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -5475,7 +5475,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 536 "MachineIndependent/glslang.y" +#line 501 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); @@ -5487,7 +5487,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 546 "MachineIndependent/glslang.y" +#line 511 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } @@ -5495,7 +5495,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 34: /* function_identifier: type_specifier */ -#line 554 "MachineIndependent/glslang.y" +#line 519 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; @@ -5505,7 +5505,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 35: /* function_identifier: postfix_expression */ -#line 559 "MachineIndependent/glslang.y" +#line 524 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5537,7 +5537,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 587 "MachineIndependent/glslang.y" +#line 551 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; @@ -5547,7 +5547,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 37: /* unary_expression: postfix_expression */ -#line 596 "MachineIndependent/glslang.y" +#line 559 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); @@ -5558,7 +5558,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 602 "MachineIndependent/glslang.y" +#line 565 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); @@ -5567,7 +5567,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 606 "MachineIndependent/glslang.y" +#line 569 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); @@ -5576,7 +5576,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 610 "MachineIndependent/glslang.y" +#line 573 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5597,38 +5597,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 41: /* unary_operator: PLUS */ -#line 630 "MachineIndependent/glslang.y" +#line 593 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } #line 5603 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 631 "MachineIndependent/glslang.y" +#line 594 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } #line 5609 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 632 "MachineIndependent/glslang.y" +#line 595 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } #line 5615 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 633 "MachineIndependent/glslang.y" +#line 596 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } #line 5622 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 639 "MachineIndependent/glslang.y" +#line 602 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5628 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 640 "MachineIndependent/glslang.y" +#line 603 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5638,7 +5638,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 645 "MachineIndependent/glslang.y" +#line 608 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5648,7 +5648,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 650 "MachineIndependent/glslang.y" +#line 613 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); @@ -5659,13 +5659,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 49: /* additive_expression: multiplicative_expression */ -#line 659 "MachineIndependent/glslang.y" +#line 622 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5665 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 660 "MachineIndependent/glslang.y" +#line 623 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5675,7 +5675,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 665 "MachineIndependent/glslang.y" +#line 628 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5685,13 +5685,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 52: /* shift_expression: additive_expression */ -#line 673 "MachineIndependent/glslang.y" +#line 636 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5691 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 674 "MachineIndependent/glslang.y" +#line 637 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); @@ -5702,7 +5702,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 680 "MachineIndependent/glslang.y" +#line 643 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); @@ -5713,13 +5713,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 55: /* relational_expression: shift_expression */ -#line 689 "MachineIndependent/glslang.y" +#line 652 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5719 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 690 "MachineIndependent/glslang.y" +#line 653 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5729,7 +5729,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 695 "MachineIndependent/glslang.y" +#line 658 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5739,7 +5739,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 700 "MachineIndependent/glslang.y" +#line 663 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5749,7 +5749,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 705 "MachineIndependent/glslang.y" +#line 668 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5759,13 +5759,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 60: /* equality_expression: relational_expression */ -#line 713 "MachineIndependent/glslang.y" +#line 676 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5765 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 714 "MachineIndependent/glslang.y" +#line 677 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5779,7 +5779,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 723 "MachineIndependent/glslang.y" +#line 686 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5793,13 +5793,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 63: /* and_expression: equality_expression */ -#line 735 "MachineIndependent/glslang.y" +#line 698 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5799 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 736 "MachineIndependent/glslang.y" +#line 699 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); @@ -5810,13 +5810,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 65: /* exclusive_or_expression: and_expression */ -#line 745 "MachineIndependent/glslang.y" +#line 708 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5816 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 746 "MachineIndependent/glslang.y" +#line 709 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); @@ -5827,13 +5827,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 755 "MachineIndependent/glslang.y" +#line 718 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5833 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 756 "MachineIndependent/glslang.y" +#line 719 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); @@ -5844,13 +5844,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 765 "MachineIndependent/glslang.y" +#line 728 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5850 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 766 "MachineIndependent/glslang.y" +#line 729 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5860,13 +5860,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 774 "MachineIndependent/glslang.y" +#line 737 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5866 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 775 "MachineIndependent/glslang.y" +#line 738 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5876,13 +5876,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 783 "MachineIndependent/glslang.y" +#line 746 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5882 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 784 "MachineIndependent/glslang.y" +#line 747 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) @@ -5892,13 +5892,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 75: /* conditional_expression: logical_or_expression */ -#line 792 "MachineIndependent/glslang.y" +#line 755 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5898 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 793 "MachineIndependent/glslang.y" +#line 756 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } @@ -5906,7 +5906,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 796 "MachineIndependent/glslang.y" +#line 759 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5923,13 +5923,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 78: /* assignment_expression: conditional_expression */ -#line 811 "MachineIndependent/glslang.y" +#line 774 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } #line 5929 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 812 "MachineIndependent/glslang.y" +#line 775 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5947,7 +5947,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 80: /* assignment_operator: EQUAL */ -#line 828 "MachineIndependent/glslang.y" +#line 791 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; @@ -5956,7 +5956,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 832 "MachineIndependent/glslang.y" +#line 795 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; @@ -5965,7 +5965,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 836 "MachineIndependent/glslang.y" +#line 799 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; @@ -5974,7 +5974,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 840 "MachineIndependent/glslang.y" +#line 803 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; @@ -5984,7 +5984,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 845 "MachineIndependent/glslang.y" +#line 808 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; @@ -5993,7 +5993,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 849 "MachineIndependent/glslang.y" +#line 812 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; @@ -6002,7 +6002,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 853 "MachineIndependent/glslang.y" +#line 816 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; @@ -6011,7 +6011,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 857 "MachineIndependent/glslang.y" +#line 820 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; @@ -6020,7 +6020,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 861 "MachineIndependent/glslang.y" +#line 824 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; @@ -6029,7 +6029,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 865 "MachineIndependent/glslang.y" +#line 828 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; @@ -6038,7 +6038,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 869 "MachineIndependent/glslang.y" +#line 832 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; @@ -6047,7 +6047,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 91: /* expression: assignment_expression */ -#line 876 "MachineIndependent/glslang.y" +#line 839 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } @@ -6055,7 +6055,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 92: /* expression: expression COMMA assignment_expression */ -#line 879 "MachineIndependent/glslang.y" +#line 842 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6068,7 +6068,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 93: /* constant_expression: conditional_expression */ -#line 890 "MachineIndependent/glslang.y" +#line 853 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); @@ -6077,7 +6077,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 897 "MachineIndependent/glslang.y" +#line 860 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; @@ -6087,7 +6087,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 903 "MachineIndependent/glslang.y" +#line 865 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6099,7 +6099,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 910 "MachineIndependent/glslang.y" +#line 872 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); @@ -6109,7 +6109,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 916 "MachineIndependent/glslang.y" +#line 877 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); @@ -6119,7 +6119,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 921 "MachineIndependent/glslang.y" +#line 882 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6131,7 +6131,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 99: /* declaration: block_structure SEMICOLON */ -#line 928 "MachineIndependent/glslang.y" +#line 889 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; @@ -6140,7 +6140,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 932 "MachineIndependent/glslang.y" +#line 893 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; @@ -6149,7 +6149,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 936 "MachineIndependent/glslang.y" +#line 897 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; @@ -6158,7 +6158,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 940 "MachineIndependent/glslang.y" +#line 901 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); @@ -6168,7 +6168,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 945 "MachineIndependent/glslang.y" +#line 906 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); @@ -6178,7 +6178,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 950 "MachineIndependent/glslang.y" +#line 911 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); @@ -6189,13 +6189,13 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 105: /* $@2: %empty */ -#line 959 "MachineIndependent/glslang.y" +#line 920 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } #line 6195 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 959 "MachineIndependent/glslang.y" +#line 920 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6209,7 +6209,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 970 "MachineIndependent/glslang.y" +#line 931 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); @@ -6218,7 +6218,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 974 "MachineIndependent/glslang.y" +#line 935 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); @@ -6227,66 +6227,67 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 981 "MachineIndependent/glslang.y" +#line 942 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); + if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6236 "MachineIndependent/glslang_tab.cpp" +#line 6237 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 985 "MachineIndependent/glslang.y" +#line 947 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); + if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; - parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6247 "MachineIndependent/glslang_tab.cpp" +#line 6248 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 991 "MachineIndependent/glslang.y" +#line 953 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); + if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; - parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6258 "MachineIndependent/glslang_tab.cpp" +#line 6259 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 997 "MachineIndependent/glslang.y" +#line 959 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); + if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; - parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6270 "MachineIndependent/glslang_tab.cpp" +#line 6271 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 1007 "MachineIndependent/glslang.y" +#line 969 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6278 "MachineIndependent/glslang_tab.cpp" +#line 6279 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 1010 "MachineIndependent/glslang.y" +#line 972 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6286 "MachineIndependent/glslang_tab.cpp" +#line 6287 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1017 "MachineIndependent/glslang.y" +#line 979 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6295,11 +6296,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6299 "MachineIndependent/glslang_tab.cpp" +#line 6300 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1025 "MachineIndependent/glslang.y" +#line 987 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6317,11 +6318,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); } } -#line 6321 "MachineIndependent/glslang_tab.cpp" +#line 6322 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1045 "MachineIndependent/glslang.y" +#line 1007 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6341,11 +6342,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6345 "MachineIndependent/glslang_tab.cpp" +#line 6346 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1068 "MachineIndependent/glslang.y" +#line 1030 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6361,11 +6362,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6365 "MachineIndependent/glslang_tab.cpp" +#line 6366 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1083 "MachineIndependent/glslang.y" +#line 1045 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6385,11 +6386,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6389 "MachineIndependent/glslang_tab.cpp" +#line 6390 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1108 "MachineIndependent/glslang.y" +#line 1070 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6401,11 +6402,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6405 "MachineIndependent/glslang_tab.cpp" +#line 6406 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1119 "MachineIndependent/glslang.y" +#line 1081 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6413,11 +6414,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6417 "MachineIndependent/glslang_tab.cpp" +#line 6418 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1129 "MachineIndependent/glslang.y" +#line 1091 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6428,11 +6429,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6432 "MachineIndependent/glslang_tab.cpp" +#line 6433 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1139 "MachineIndependent/glslang.y" +#line 1101 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6440,120 +6441,118 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6444 "MachineIndependent/glslang_tab.cpp" +#line 6445 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1149 "MachineIndependent/glslang.y" +#line 1111 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6455 "MachineIndependent/glslang_tab.cpp" +#line 6456 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1158 "MachineIndependent/glslang.y" +#line 1120 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6463 "MachineIndependent/glslang_tab.cpp" +#line 6464 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1161 "MachineIndependent/glslang.y" +#line 1123 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6472 "MachineIndependent/glslang_tab.cpp" +#line 6473 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1165 "MachineIndependent/glslang.y" +#line 1127 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6481 "MachineIndependent/glslang_tab.cpp" +#line 6482 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1169 "MachineIndependent/glslang.y" +#line 1131 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6491 "MachineIndependent/glslang_tab.cpp" +#line 6492 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1174 "MachineIndependent/glslang.y" +#line 1136 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6501 "MachineIndependent/glslang_tab.cpp" +#line 6502 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1182 "MachineIndependent/glslang.y" +#line 1144 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; - parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); - } -#line 6513 "MachineIndependent/glslang_tab.cpp" +#line 6512 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1189 "MachineIndependent/glslang.y" +#line 1149 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6523 "MachineIndependent/glslang_tab.cpp" +#line 6522 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1194 "MachineIndependent/glslang.y" +#line 1154 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6533 "MachineIndependent/glslang_tab.cpp" +#line 6532 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1199 "MachineIndependent/glslang.y" +#line 1159 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6543 "MachineIndependent/glslang_tab.cpp" +#line 6542 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1204 "MachineIndependent/glslang.y" +#line 1164 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6553 "MachineIndependent/glslang_tab.cpp" +#line 6552 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1213 "MachineIndependent/glslang.y" +#line 1173 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6564,11 +6563,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat()); } -#line 6568 "MachineIndependent/glslang_tab.cpp" +#line 6567 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1223 "MachineIndependent/glslang.y" +#line 1183 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6593,22 +6592,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6597 "MachineIndependent/glslang_tab.cpp" +#line 6596 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1250 "MachineIndependent/glslang.y" +#line 1210 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6608 "MachineIndependent/glslang_tab.cpp" +#line 6607 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1259 "MachineIndependent/glslang.y" +#line 1219 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6616,11 +6615,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6620 "MachineIndependent/glslang_tab.cpp" +#line 6619 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1266 "MachineIndependent/glslang.y" +#line 1226 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6628,11 +6627,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6632 "MachineIndependent/glslang_tab.cpp" +#line 6631 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1274 "MachineIndependent/glslang.y" +#line 1233 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6640,11 +6639,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6644 "MachineIndependent/glslang_tab.cpp" +#line 6643 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1281 "MachineIndependent/glslang.y" +#line 1240 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6652,11 +6651,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6656 "MachineIndependent/glslang_tab.cpp" +#line 6655 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1288 "MachineIndependent/glslang.y" +#line 1247 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6665,11 +6664,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6669 "MachineIndependent/glslang_tab.cpp" +#line 6668 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1296 "MachineIndependent/glslang.y" +#line 1255 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6678,11 +6677,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6682 "MachineIndependent/glslang_tab.cpp" +#line 6681 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1304 "MachineIndependent/glslang.y" +#line 1263 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6693,11 +6692,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6697 "MachineIndependent/glslang_tab.cpp" +#line 6696 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1314 "MachineIndependent/glslang.y" +#line 1273 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6708,11 +6707,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6712 "MachineIndependent/glslang_tab.cpp" +#line 6711 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1324 "MachineIndependent/glslang.y" +#line 1283 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6720,11 +6719,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6724 "MachineIndependent/glslang_tab.cpp" +#line 6723 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1331 "MachineIndependent/glslang.y" +#line 1290 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6732,84 +6731,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6736 "MachineIndependent/glslang_tab.cpp" +#line 6735 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1342 "MachineIndependent/glslang.y" +#line 1300 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6744 "MachineIndependent/glslang_tab.cpp" +#line 6743 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1348 "MachineIndependent/glslang.y" +#line 1306 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6752 "MachineIndependent/glslang_tab.cpp" +#line 6751 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1351 "MachineIndependent/glslang.y" +#line 1309 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6762 "MachineIndependent/glslang_tab.cpp" +#line 6761 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1358 "MachineIndependent/glslang.y" +#line 1316 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6771 "MachineIndependent/glslang_tab.cpp" +#line 6770 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1362 "MachineIndependent/glslang.y" +#line 1320 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6780 "MachineIndependent/glslang_tab.cpp" +#line 6779 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1366 "MachineIndependent/glslang.y" +#line 1324 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6790 "MachineIndependent/glslang_tab.cpp" +#line 6789 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1375 "MachineIndependent/glslang.y" +#line 1332 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6801 "MachineIndependent/glslang_tab.cpp" +#line 6800 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1385 "MachineIndependent/glslang.y" +#line 1341 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6809 "MachineIndependent/glslang_tab.cpp" +#line 6808 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1388 "MachineIndependent/glslang.y" +#line 1344 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6818,151 +6817,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6822 "MachineIndependent/glslang_tab.cpp" +#line 6821 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1399 "MachineIndependent/glslang.y" +#line 1355 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6830 "MachineIndependent/glslang_tab.cpp" +#line 6829 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1402 "MachineIndependent/glslang.y" +#line 1358 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6838 "MachineIndependent/glslang_tab.cpp" +#line 6837 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1405 "MachineIndependent/glslang.y" +#line 1361 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6847 "MachineIndependent/glslang_tab.cpp" +#line 6846 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1409 "MachineIndependent/glslang.y" +#line 1365 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6856 "MachineIndependent/glslang_tab.cpp" +#line 6855 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1413 "MachineIndependent/glslang.y" +#line 1369 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6865 "MachineIndependent/glslang_tab.cpp" +#line 6864 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1418 "MachineIndependent/glslang.y" +#line 1373 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6874 "MachineIndependent/glslang_tab.cpp" +#line 6873 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1422 "MachineIndependent/glslang.y" +#line 1377 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6882 "MachineIndependent/glslang_tab.cpp" +#line 6881 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1425 "MachineIndependent/glslang.y" +#line 1380 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6892 "MachineIndependent/glslang_tab.cpp" +#line 6891 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1430 "MachineIndependent/glslang.y" +#line 1385 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6901 "MachineIndependent/glslang_tab.cpp" +#line 6900 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1434 "MachineIndependent/glslang.y" +#line 1389 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6911 "MachineIndependent/glslang_tab.cpp" +#line 6910 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1439 "MachineIndependent/glslang.y" +#line 1394 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6921 "MachineIndependent/glslang_tab.cpp" +#line 6920 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1448 "MachineIndependent/glslang.y" +#line 1402 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6930 "MachineIndependent/glslang_tab.cpp" +#line 6929 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1452 "MachineIndependent/glslang.y" +#line 1406 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6940 "MachineIndependent/glslang_tab.cpp" +#line 6939 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1457 "MachineIndependent/glslang.y" +#line 1411 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6951 "MachineIndependent/glslang_tab.cpp" +#line 6950 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1463 "MachineIndependent/glslang.y" +#line 1417 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6962 "MachineIndependent/glslang_tab.cpp" +#line 6961 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1469 "MachineIndependent/glslang.y" +#line 1423 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6970,31 +6969,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6974 "MachineIndependent/glslang_tab.cpp" +#line 6973 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1476 "MachineIndependent/glslang.y" +#line 1430 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6984 "MachineIndependent/glslang_tab.cpp" +#line 6983 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: TILEIMAGEEXT */ -#line 1481 "MachineIndependent/glslang.y" +#line 1435 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 6994 "MachineIndependent/glslang_tab.cpp" +#line 6993 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: SHARED */ -#line 1486 "MachineIndependent/glslang.y" +#line 1440 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7003,21 +7002,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7007 "MachineIndependent/glslang_tab.cpp" +#line 7006 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: BUFFER */ -#line 1494 "MachineIndependent/glslang.y" +#line 1448 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7017 "MachineIndependent/glslang_tab.cpp" +#line 7016 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: ATTRIBUTE */ -#line 1500 "MachineIndependent/glslang.y" +#line 1453 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7030,11 +7029,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7034 "MachineIndependent/glslang_tab.cpp" +#line 7033 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: VARYING */ -#line 1512 "MachineIndependent/glslang.y" +#line 1465 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7049,32 +7048,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7053 "MachineIndependent/glslang_tab.cpp" +#line 7052 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: PATCH */ -#line 1526 "MachineIndependent/glslang.y" +#line 1479 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7064 "MachineIndependent/glslang_tab.cpp" +#line 7063 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: SAMPLE */ -#line 1532 "MachineIndependent/glslang.y" +#line 1485 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7074 "MachineIndependent/glslang_tab.cpp" +#line 7073 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITATTRNV */ -#line 1537 "MachineIndependent/glslang.y" +#line 1490 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7083,11 +7082,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7087 "MachineIndependent/glslang_tab.cpp" +#line 7086 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1545 "MachineIndependent/glslang.y" +#line 1498 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7096,11 +7095,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7100 "MachineIndependent/glslang_tab.cpp" +#line 7099 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITATTREXT */ -#line 1553 "MachineIndependent/glslang.y" +#line 1506 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7109,11 +7108,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7113 "MachineIndependent/glslang_tab.cpp" +#line 7112 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADNV */ -#line 1561 "MachineIndependent/glslang.y" +#line 1514 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7122,11 +7121,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7126 "MachineIndependent/glslang_tab.cpp" +#line 7125 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADEXT */ -#line 1569 "MachineIndependent/glslang.y" +#line 1522 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7135,11 +7134,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7139 "MachineIndependent/glslang_tab.cpp" +#line 7138 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINNV */ -#line 1577 "MachineIndependent/glslang.y" +#line 1530 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7148,11 +7147,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7152 "MachineIndependent/glslang_tab.cpp" +#line 7151 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINEXT */ -#line 1585 "MachineIndependent/glslang.y" +#line 1538 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7161,11 +7160,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7165 "MachineIndependent/glslang_tab.cpp" +#line 7164 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATANV */ -#line 1593 "MachineIndependent/glslang.y" +#line 1546 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7174,11 +7173,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7178 "MachineIndependent/glslang_tab.cpp" +#line 7177 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAEXT */ -#line 1601 "MachineIndependent/glslang.y" +#line 1554 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7187,11 +7186,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7191 "MachineIndependent/glslang_tab.cpp" +#line 7190 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINNV */ -#line 1609 "MachineIndependent/glslang.y" +#line 1562 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7199,11 +7198,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7203 "MachineIndependent/glslang_tab.cpp" +#line 7202 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINEXT */ -#line 1616 "MachineIndependent/glslang.y" +#line 1569 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7211,138 +7210,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7215 "MachineIndependent/glslang_tab.cpp" +#line 7214 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: COHERENT */ -#line 1623 "MachineIndependent/glslang.y" +#line 1576 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7224 "MachineIndependent/glslang_tab.cpp" +#line 7223 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: DEVICECOHERENT */ -#line 1627 "MachineIndependent/glslang.y" +#line 1580 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7234 "MachineIndependent/glslang_tab.cpp" +#line 7233 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1632 "MachineIndependent/glslang.y" +#line 1585 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7244 "MachineIndependent/glslang_tab.cpp" +#line 7243 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1637 "MachineIndependent/glslang.y" +#line 1590 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7254 "MachineIndependent/glslang_tab.cpp" +#line 7253 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1642 "MachineIndependent/glslang.y" +#line 1595 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7264 "MachineIndependent/glslang_tab.cpp" +#line 7263 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: NONPRIVATE */ -#line 1647 "MachineIndependent/glslang.y" +#line 1600 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7274 "MachineIndependent/glslang_tab.cpp" +#line 7273 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1652 "MachineIndependent/glslang.y" +#line 1605 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7284 "MachineIndependent/glslang_tab.cpp" +#line 7283 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: VOLATILE */ -#line 1657 "MachineIndependent/glslang.y" +#line 1610 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7293 "MachineIndependent/glslang_tab.cpp" +#line 7292 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: RESTRICT */ -#line 1661 "MachineIndependent/glslang.y" +#line 1614 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7302 "MachineIndependent/glslang_tab.cpp" +#line 7301 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: READONLY */ -#line 1665 "MachineIndependent/glslang.y" +#line 1618 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7311 "MachineIndependent/glslang_tab.cpp" +#line 7310 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: WRITEONLY */ -#line 1669 "MachineIndependent/glslang.y" +#line 1622 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7320 "MachineIndependent/glslang_tab.cpp" +#line 7319 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE */ -#line 1673 "MachineIndependent/glslang.y" +#line 1626 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7331 "MachineIndependent/glslang_tab.cpp" +#line 7330 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1679 "MachineIndependent/glslang.y" +#line 1632 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7342 "MachineIndependent/glslang_tab.cpp" +#line 7341 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1685 "MachineIndependent/glslang.y" +#line 1638 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7350,38 +7349,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7354 "MachineIndependent/glslang_tab.cpp" +#line 7353 "MachineIndependent/glslang_tab.cpp" break; case 206: /* non_uniform_qualifier: NONUNIFORM */ -#line 1697 "MachineIndependent/glslang.y" +#line 1648 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7363 "MachineIndependent/glslang_tab.cpp" +#line 7362 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: IDENTIFIER */ -#line 1704 "MachineIndependent/glslang.y" +#line 1655 "MachineIndependent/glslang.y" { // TODO } -#line 7371 "MachineIndependent/glslang_tab.cpp" +#line 7370 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1707 "MachineIndependent/glslang.y" +#line 1658 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7381 "MachineIndependent/glslang_tab.cpp" +#line 7380 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1716 "MachineIndependent/glslang.y" +#line 1666 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); @@ -7389,11 +7388,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } -#line 7393 "MachineIndependent/glslang_tab.cpp" +#line 7392 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1723 "MachineIndependent/glslang.y" +#line 1673 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7402,21 +7401,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7406 "MachineIndependent/glslang_tab.cpp" +#line 7405 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1734 "MachineIndependent/glslang.y" +#line 1684 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7416 "MachineIndependent/glslang_tab.cpp" +#line 7415 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1739 "MachineIndependent/glslang.y" +#line 1689 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7425,20 +7424,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7429 "MachineIndependent/glslang_tab.cpp" +#line 7428 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1747 "MachineIndependent/glslang.y" +#line 1697 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7438 "MachineIndependent/glslang_tab.cpp" +#line 7437 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1751 "MachineIndependent/glslang.y" +#line 1701 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7446,45 +7445,45 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7450 "MachineIndependent/glslang_tab.cpp" +#line 7449 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1761 "MachineIndependent/glslang.y" +#line 1711 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7458 "MachineIndependent/glslang_tab.cpp" +#line 7457 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier_opt: %empty */ -#line 1764 "MachineIndependent/glslang.y" +#line 1714 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7466 "MachineIndependent/glslang_tab.cpp" +#line 7465 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1770 "MachineIndependent/glslang.y" +#line 1720 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7474 "MachineIndependent/glslang_tab.cpp" +#line 7473 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_list: type_specifier */ -#line 1776 "MachineIndependent/glslang.y" +#line 1726 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7484 "MachineIndependent/glslang_tab.cpp" +#line 7483 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier_list: unary_expression */ -#line 1781 "MachineIndependent/glslang.y" +#line 1731 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7493,11 +7492,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7497 "MachineIndependent/glslang_tab.cpp" +#line 7496 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1789 "MachineIndependent/glslang.y" +#line 1739 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7505,300 +7504,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7509 "MachineIndependent/glslang_tab.cpp" +#line 7508 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: VOID */ -#line 1799 "MachineIndependent/glslang.y" +#line 1749 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7518 "MachineIndependent/glslang_tab.cpp" +#line 7517 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: FLOAT */ -#line 1803 "MachineIndependent/glslang.y" +#line 1753 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7527 "MachineIndependent/glslang_tab.cpp" +#line 7526 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: INT */ -#line 1807 "MachineIndependent/glslang.y" +#line 1757 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7536 "MachineIndependent/glslang_tab.cpp" +#line 7535 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: UINT */ -#line 1811 "MachineIndependent/glslang.y" +#line 1761 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7546 "MachineIndependent/glslang_tab.cpp" +#line 7545 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: BOOL */ -#line 1816 "MachineIndependent/glslang.y" +#line 1766 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7555 "MachineIndependent/glslang_tab.cpp" +#line 7554 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC2 */ -#line 1820 "MachineIndependent/glslang.y" +#line 1770 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7565 "MachineIndependent/glslang_tab.cpp" +#line 7564 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: VEC3 */ -#line 1825 "MachineIndependent/glslang.y" +#line 1775 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7575 "MachineIndependent/glslang_tab.cpp" +#line 7574 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: VEC4 */ -#line 1830 "MachineIndependent/glslang.y" +#line 1780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7585 "MachineIndependent/glslang_tab.cpp" +#line 7584 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC2 */ -#line 1835 "MachineIndependent/glslang.y" +#line 1785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7595 "MachineIndependent/glslang_tab.cpp" +#line 7594 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: BVEC3 */ -#line 1840 "MachineIndependent/glslang.y" +#line 1790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7605 "MachineIndependent/glslang_tab.cpp" +#line 7604 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: BVEC4 */ -#line 1845 "MachineIndependent/glslang.y" +#line 1795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7615 "MachineIndependent/glslang_tab.cpp" +#line 7614 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC2 */ -#line 1850 "MachineIndependent/glslang.y" +#line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7625 "MachineIndependent/glslang_tab.cpp" +#line 7624 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: IVEC3 */ -#line 1855 "MachineIndependent/glslang.y" +#line 1805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7635 "MachineIndependent/glslang_tab.cpp" +#line 7634 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: IVEC4 */ -#line 1860 "MachineIndependent/glslang.y" +#line 1810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7645 "MachineIndependent/glslang_tab.cpp" +#line 7644 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC2 */ -#line 1865 "MachineIndependent/glslang.y" +#line 1815 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7656 "MachineIndependent/glslang_tab.cpp" +#line 7655 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: UVEC3 */ -#line 1871 "MachineIndependent/glslang.y" +#line 1821 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7667 "MachineIndependent/glslang_tab.cpp" +#line 7666 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: UVEC4 */ -#line 1877 "MachineIndependent/glslang.y" +#line 1827 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7678 "MachineIndependent/glslang_tab.cpp" +#line 7677 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT2 */ -#line 1883 "MachineIndependent/glslang.y" +#line 1833 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7688 "MachineIndependent/glslang_tab.cpp" +#line 7687 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT3 */ -#line 1888 "MachineIndependent/glslang.y" +#line 1838 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7698 "MachineIndependent/glslang_tab.cpp" +#line 7697 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT4 */ -#line 1893 "MachineIndependent/glslang.y" +#line 1843 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7708 "MachineIndependent/glslang_tab.cpp" +#line 7707 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X2 */ -#line 1898 "MachineIndependent/glslang.y" +#line 1848 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7718 "MachineIndependent/glslang_tab.cpp" +#line 7717 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT2X3 */ -#line 1903 "MachineIndependent/glslang.y" +#line 1853 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7728 "MachineIndependent/glslang_tab.cpp" +#line 7727 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT2X4 */ -#line 1908 "MachineIndependent/glslang.y" +#line 1858 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7738 "MachineIndependent/glslang_tab.cpp" +#line 7737 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X2 */ -#line 1913 "MachineIndependent/glslang.y" +#line 1863 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7748 "MachineIndependent/glslang_tab.cpp" +#line 7747 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT3X3 */ -#line 1918 "MachineIndependent/glslang.y" +#line 1868 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7758 "MachineIndependent/glslang_tab.cpp" +#line 7757 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT3X4 */ -#line 1923 "MachineIndependent/glslang.y" +#line 1873 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7768 "MachineIndependent/glslang_tab.cpp" +#line 7767 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X2 */ -#line 1928 "MachineIndependent/glslang.y" +#line 1878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7778 "MachineIndependent/glslang_tab.cpp" +#line 7777 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT4X3 */ -#line 1933 "MachineIndependent/glslang.y" +#line 1883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7788 "MachineIndependent/glslang_tab.cpp" +#line 7787 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: MAT4X4 */ -#line 1938 "MachineIndependent/glslang.y" +#line 1888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7798 "MachineIndependent/glslang_tab.cpp" +#line 7797 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: DOUBLE */ -#line 1944 "MachineIndependent/glslang.y" +#line 1893 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7806,121 +7805,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7810 "MachineIndependent/glslang_tab.cpp" +#line 7809 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT16_T */ -#line 1951 "MachineIndependent/glslang.y" +#line 1900 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7820 "MachineIndependent/glslang_tab.cpp" +#line 7819 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: FLOAT32_T */ -#line 1956 "MachineIndependent/glslang.y" +#line 1905 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7830 "MachineIndependent/glslang_tab.cpp" +#line 7829 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: FLOAT64_T */ -#line 1961 "MachineIndependent/glslang.y" +#line 1910 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7840 "MachineIndependent/glslang_tab.cpp" +#line 7839 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: INT8_T */ -#line 1966 "MachineIndependent/glslang.y" +#line 1915 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7850 "MachineIndependent/glslang_tab.cpp" +#line 7849 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: UINT8_T */ -#line 1971 "MachineIndependent/glslang.y" +#line 1920 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7860 "MachineIndependent/glslang_tab.cpp" +#line 7859 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: INT16_T */ -#line 1976 "MachineIndependent/glslang.y" +#line 1925 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7870 "MachineIndependent/glslang_tab.cpp" +#line 7869 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: UINT16_T */ -#line 1981 "MachineIndependent/glslang.y" +#line 1930 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7880 "MachineIndependent/glslang_tab.cpp" +#line 7879 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: INT32_T */ -#line 1986 "MachineIndependent/glslang.y" +#line 1935 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7890 "MachineIndependent/glslang_tab.cpp" +#line 7889 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: UINT32_T */ -#line 1991 "MachineIndependent/glslang.y" +#line 1940 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7900 "MachineIndependent/glslang_tab.cpp" +#line 7899 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: INT64_T */ -#line 1996 "MachineIndependent/glslang.y" +#line 1945 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7910 "MachineIndependent/glslang_tab.cpp" +#line 7909 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: UINT64_T */ -#line 2001 "MachineIndependent/glslang.y" +#line 1950 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7920 "MachineIndependent/glslang_tab.cpp" +#line 7919 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC2 */ -#line 2006 "MachineIndependent/glslang.y" +#line 1955 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7929,11 +7928,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7933 "MachineIndependent/glslang_tab.cpp" +#line 7932 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: DVEC3 */ -#line 2014 "MachineIndependent/glslang.y" +#line 1963 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7942,11 +7941,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7946 "MachineIndependent/glslang_tab.cpp" +#line 7945 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: DVEC4 */ -#line 2022 "MachineIndependent/glslang.y" +#line 1971 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7955,374 +7954,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7959 "MachineIndependent/glslang_tab.cpp" +#line 7958 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC2 */ -#line 2030 "MachineIndependent/glslang.y" +#line 1979 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7970 "MachineIndependent/glslang_tab.cpp" +#line 7969 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F16VEC3 */ -#line 2036 "MachineIndependent/glslang.y" +#line 1985 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7981 "MachineIndependent/glslang_tab.cpp" +#line 7980 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F16VEC4 */ -#line 2042 "MachineIndependent/glslang.y" +#line 1991 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7992 "MachineIndependent/glslang_tab.cpp" +#line 7991 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC2 */ -#line 2048 "MachineIndependent/glslang.y" +#line 1997 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8003 "MachineIndependent/glslang_tab.cpp" +#line 8002 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F32VEC3 */ -#line 2054 "MachineIndependent/glslang.y" +#line 2003 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8014 "MachineIndependent/glslang_tab.cpp" +#line 8013 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F32VEC4 */ -#line 2060 "MachineIndependent/glslang.y" +#line 2009 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8025 "MachineIndependent/glslang_tab.cpp" +#line 8024 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC2 */ -#line 2066 "MachineIndependent/glslang.y" +#line 2015 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8036 "MachineIndependent/glslang_tab.cpp" +#line 8035 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: F64VEC3 */ -#line 2072 "MachineIndependent/glslang.y" +#line 2021 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8047 "MachineIndependent/glslang_tab.cpp" +#line 8046 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: F64VEC4 */ -#line 2078 "MachineIndependent/glslang.y" +#line 2027 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8058 "MachineIndependent/glslang_tab.cpp" +#line 8057 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC2 */ -#line 2084 "MachineIndependent/glslang.y" +#line 2033 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8069 "MachineIndependent/glslang_tab.cpp" +#line 8068 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I8VEC3 */ -#line 2090 "MachineIndependent/glslang.y" +#line 2039 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8080 "MachineIndependent/glslang_tab.cpp" +#line 8079 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I8VEC4 */ -#line 2096 "MachineIndependent/glslang.y" +#line 2045 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8091 "MachineIndependent/glslang_tab.cpp" +#line 8090 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC2 */ -#line 2102 "MachineIndependent/glslang.y" +#line 2051 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8102 "MachineIndependent/glslang_tab.cpp" +#line 8101 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I16VEC3 */ -#line 2108 "MachineIndependent/glslang.y" +#line 2057 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8113 "MachineIndependent/glslang_tab.cpp" +#line 8112 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I16VEC4 */ -#line 2114 "MachineIndependent/glslang.y" +#line 2063 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8124 "MachineIndependent/glslang_tab.cpp" +#line 8123 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC2 */ -#line 2120 "MachineIndependent/glslang.y" +#line 2069 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8135 "MachineIndependent/glslang_tab.cpp" +#line 8134 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I32VEC3 */ -#line 2126 "MachineIndependent/glslang.y" +#line 2075 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8146 "MachineIndependent/glslang_tab.cpp" +#line 8145 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I32VEC4 */ -#line 2132 "MachineIndependent/glslang.y" +#line 2081 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8157 "MachineIndependent/glslang_tab.cpp" +#line 8156 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC2 */ -#line 2138 "MachineIndependent/glslang.y" +#line 2087 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8168 "MachineIndependent/glslang_tab.cpp" +#line 8167 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: I64VEC3 */ -#line 2144 "MachineIndependent/glslang.y" +#line 2093 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8179 "MachineIndependent/glslang_tab.cpp" +#line 8178 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: I64VEC4 */ -#line 2150 "MachineIndependent/glslang.y" +#line 2099 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8190 "MachineIndependent/glslang_tab.cpp" +#line 8189 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC2 */ -#line 2156 "MachineIndependent/glslang.y" +#line 2105 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8201 "MachineIndependent/glslang_tab.cpp" +#line 8200 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U8VEC3 */ -#line 2162 "MachineIndependent/glslang.y" +#line 2111 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8212 "MachineIndependent/glslang_tab.cpp" +#line 8211 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U8VEC4 */ -#line 2168 "MachineIndependent/glslang.y" +#line 2117 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8223 "MachineIndependent/glslang_tab.cpp" +#line 8222 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC2 */ -#line 2174 "MachineIndependent/glslang.y" +#line 2123 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8234 "MachineIndependent/glslang_tab.cpp" +#line 8233 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U16VEC3 */ -#line 2180 "MachineIndependent/glslang.y" +#line 2129 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8245 "MachineIndependent/glslang_tab.cpp" +#line 8244 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U16VEC4 */ -#line 2186 "MachineIndependent/glslang.y" +#line 2135 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8256 "MachineIndependent/glslang_tab.cpp" +#line 8255 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC2 */ -#line 2192 "MachineIndependent/glslang.y" +#line 2141 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8267 "MachineIndependent/glslang_tab.cpp" +#line 8266 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U32VEC3 */ -#line 2198 "MachineIndependent/glslang.y" +#line 2147 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8278 "MachineIndependent/glslang_tab.cpp" +#line 8277 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U32VEC4 */ -#line 2204 "MachineIndependent/glslang.y" +#line 2153 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8289 "MachineIndependent/glslang_tab.cpp" +#line 8288 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC2 */ -#line 2210 "MachineIndependent/glslang.y" +#line 2159 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8300 "MachineIndependent/glslang_tab.cpp" +#line 8299 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: U64VEC3 */ -#line 2216 "MachineIndependent/glslang.y" +#line 2165 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8311 "MachineIndependent/glslang_tab.cpp" +#line 8310 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: U64VEC4 */ -#line 2222 "MachineIndependent/glslang.y" +#line 2171 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8322 "MachineIndependent/glslang_tab.cpp" +#line 8321 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT2 */ -#line 2228 "MachineIndependent/glslang.y" +#line 2177 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8331,11 +8330,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8335 "MachineIndependent/glslang_tab.cpp" +#line 8334 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT3 */ -#line 2236 "MachineIndependent/glslang.y" +#line 2185 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8344,11 +8343,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8348 "MachineIndependent/glslang_tab.cpp" +#line 8347 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT4 */ -#line 2244 "MachineIndependent/glslang.y" +#line 2193 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8357,11 +8356,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8361 "MachineIndependent/glslang_tab.cpp" +#line 8360 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X2 */ -#line 2252 "MachineIndependent/glslang.y" +#line 2201 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8370,11 +8369,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8374 "MachineIndependent/glslang_tab.cpp" +#line 8373 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT2X3 */ -#line 2260 "MachineIndependent/glslang.y" +#line 2209 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8383,11 +8382,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8387 "MachineIndependent/glslang_tab.cpp" +#line 8386 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT2X4 */ -#line 2268 "MachineIndependent/glslang.y" +#line 2217 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8396,11 +8395,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8400 "MachineIndependent/glslang_tab.cpp" +#line 8399 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X2 */ -#line 2276 "MachineIndependent/glslang.y" +#line 2225 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8409,11 +8408,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8413 "MachineIndependent/glslang_tab.cpp" +#line 8412 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT3X3 */ -#line 2284 "MachineIndependent/glslang.y" +#line 2233 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8422,11 +8421,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8426 "MachineIndependent/glslang_tab.cpp" +#line 8425 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT3X4 */ -#line 2292 "MachineIndependent/glslang.y" +#line 2241 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8435,11 +8434,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8439 "MachineIndependent/glslang_tab.cpp" +#line 8438 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X2 */ -#line 2300 "MachineIndependent/glslang.y" +#line 2249 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8448,11 +8447,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8452 "MachineIndependent/glslang_tab.cpp" +#line 8451 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: DMAT4X3 */ -#line 2308 "MachineIndependent/glslang.y" +#line 2257 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8461,11 +8460,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8465 "MachineIndependent/glslang_tab.cpp" +#line 8464 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: DMAT4X4 */ -#line 2316 "MachineIndependent/glslang.y" +#line 2265 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8474,2261 +8473,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8478 "MachineIndependent/glslang_tab.cpp" +#line 8477 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT2 */ -#line 2324 "MachineIndependent/glslang.y" +#line 2273 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8489 "MachineIndependent/glslang_tab.cpp" +#line 8488 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT3 */ -#line 2330 "MachineIndependent/glslang.y" +#line 2279 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8500 "MachineIndependent/glslang_tab.cpp" +#line 8499 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT4 */ -#line 2336 "MachineIndependent/glslang.y" +#line 2285 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8511 "MachineIndependent/glslang_tab.cpp" +#line 8510 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2342 "MachineIndependent/glslang.y" +#line 2291 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8522 "MachineIndependent/glslang_tab.cpp" +#line 8521 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2348 "MachineIndependent/glslang.y" +#line 2297 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8533 "MachineIndependent/glslang_tab.cpp" +#line 8532 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2354 "MachineIndependent/glslang.y" +#line 2303 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8544 "MachineIndependent/glslang_tab.cpp" +#line 8543 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2360 "MachineIndependent/glslang.y" +#line 2309 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8555 "MachineIndependent/glslang_tab.cpp" +#line 8554 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2366 "MachineIndependent/glslang.y" +#line 2315 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8566 "MachineIndependent/glslang_tab.cpp" +#line 8565 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2372 "MachineIndependent/glslang.y" +#line 2321 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8577 "MachineIndependent/glslang_tab.cpp" +#line 8576 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2378 "MachineIndependent/glslang.y" +#line 2327 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8588 "MachineIndependent/glslang_tab.cpp" +#line 8587 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2384 "MachineIndependent/glslang.y" +#line 2333 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8599 "MachineIndependent/glslang_tab.cpp" +#line 8598 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2390 "MachineIndependent/glslang.y" +#line 2339 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8610 "MachineIndependent/glslang_tab.cpp" +#line 8609 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT2 */ -#line 2396 "MachineIndependent/glslang.y" +#line 2345 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8621 "MachineIndependent/glslang_tab.cpp" +#line 8620 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT3 */ -#line 2402 "MachineIndependent/glslang.y" +#line 2351 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8632 "MachineIndependent/glslang_tab.cpp" +#line 8631 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT4 */ -#line 2408 "MachineIndependent/glslang.y" +#line 2357 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8643 "MachineIndependent/glslang_tab.cpp" +#line 8642 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2414 "MachineIndependent/glslang.y" +#line 2363 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8654 "MachineIndependent/glslang_tab.cpp" +#line 8653 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2420 "MachineIndependent/glslang.y" +#line 2369 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8665 "MachineIndependent/glslang_tab.cpp" +#line 8664 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2426 "MachineIndependent/glslang.y" +#line 2375 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8676 "MachineIndependent/glslang_tab.cpp" +#line 8675 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2432 "MachineIndependent/glslang.y" +#line 2381 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8687 "MachineIndependent/glslang_tab.cpp" +#line 8686 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2438 "MachineIndependent/glslang.y" +#line 2387 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8698 "MachineIndependent/glslang_tab.cpp" +#line 8697 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2444 "MachineIndependent/glslang.y" +#line 2393 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8709 "MachineIndependent/glslang_tab.cpp" +#line 8708 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2450 "MachineIndependent/glslang.y" +#line 2399 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8720 "MachineIndependent/glslang_tab.cpp" +#line 8719 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2456 "MachineIndependent/glslang.y" +#line 2405 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8731 "MachineIndependent/glslang_tab.cpp" +#line 8730 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2462 "MachineIndependent/glslang.y" +#line 2411 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8742 "MachineIndependent/glslang_tab.cpp" +#line 8741 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT2 */ -#line 2468 "MachineIndependent/glslang.y" +#line 2417 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8753 "MachineIndependent/glslang_tab.cpp" +#line 8752 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT3 */ -#line 2474 "MachineIndependent/glslang.y" +#line 2423 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8764 "MachineIndependent/glslang_tab.cpp" +#line 8763 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT4 */ -#line 2480 "MachineIndependent/glslang.y" +#line 2429 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8775 "MachineIndependent/glslang_tab.cpp" +#line 8774 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2486 "MachineIndependent/glslang.y" +#line 2435 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8786 "MachineIndependent/glslang_tab.cpp" +#line 8785 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2492 "MachineIndependent/glslang.y" +#line 2441 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8797 "MachineIndependent/glslang_tab.cpp" +#line 8796 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2498 "MachineIndependent/glslang.y" +#line 2447 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8808 "MachineIndependent/glslang_tab.cpp" +#line 8807 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2504 "MachineIndependent/glslang.y" +#line 2453 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8819 "MachineIndependent/glslang_tab.cpp" +#line 8818 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2510 "MachineIndependent/glslang.y" +#line 2459 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8830 "MachineIndependent/glslang_tab.cpp" +#line 8829 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2516 "MachineIndependent/glslang.y" +#line 2465 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8841 "MachineIndependent/glslang_tab.cpp" +#line 8840 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2522 "MachineIndependent/glslang.y" +#line 2471 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8852 "MachineIndependent/glslang_tab.cpp" +#line 8851 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2528 "MachineIndependent/glslang.y" +#line 2477 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8863 "MachineIndependent/glslang_tab.cpp" +#line 8862 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2534 "MachineIndependent/glslang.y" +#line 2483 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8874 "MachineIndependent/glslang_tab.cpp" +#line 8873 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2540 "MachineIndependent/glslang.y" +#line 2489 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8883 "MachineIndependent/glslang_tab.cpp" +#line 8882 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2544 "MachineIndependent/glslang.y" +#line 2493 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8892 "MachineIndependent/glslang_tab.cpp" +#line 8891 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2548 "MachineIndependent/glslang.y" +#line 2497 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8901 "MachineIndependent/glslang_tab.cpp" +#line 8900 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2552 "MachineIndependent/glslang.y" +#line 2501 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8911 "MachineIndependent/glslang_tab.cpp" +#line 8910 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER1D */ -#line 2557 "MachineIndependent/glslang.y" +#line 2506 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8921 "MachineIndependent/glslang_tab.cpp" +#line 8920 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLER2D */ -#line 2563 "MachineIndependent/glslang.y" +#line 2511 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8931 "MachineIndependent/glslang_tab.cpp" +#line 8930 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLER3D */ -#line 2568 "MachineIndependent/glslang.y" +#line 2516 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8941 "MachineIndependent/glslang_tab.cpp" +#line 8940 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2573 "MachineIndependent/glslang.y" +#line 2521 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8951 "MachineIndependent/glslang_tab.cpp" +#line 8950 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2578 "MachineIndependent/glslang.y" +#line 2526 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8961 "MachineIndependent/glslang_tab.cpp" +#line 8960 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2583 "MachineIndependent/glslang.y" +#line 2531 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8971 "MachineIndependent/glslang_tab.cpp" +#line 8970 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2588 "MachineIndependent/glslang.y" +#line 2536 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8981 "MachineIndependent/glslang_tab.cpp" +#line 8980 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2593 "MachineIndependent/glslang.y" +#line 2541 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8991 "MachineIndependent/glslang_tab.cpp" +#line 8990 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2599 "MachineIndependent/glslang.y" +#line 2546 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9001 "MachineIndependent/glslang_tab.cpp" +#line 9000 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2604 "MachineIndependent/glslang.y" +#line 2551 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9011 "MachineIndependent/glslang_tab.cpp" +#line 9010 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2609 "MachineIndependent/glslang.y" +#line 2556 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9021 "MachineIndependent/glslang_tab.cpp" +#line 9020 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2614 "MachineIndependent/glslang.y" +#line 2561 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9031 "MachineIndependent/glslang_tab.cpp" +#line 9030 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2619 "MachineIndependent/glslang.y" +#line 2566 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9041 "MachineIndependent/glslang_tab.cpp" +#line 9040 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2624 "MachineIndependent/glslang.y" +#line 2571 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9052 "MachineIndependent/glslang_tab.cpp" +#line 9051 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2630 "MachineIndependent/glslang.y" +#line 2577 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9063 "MachineIndependent/glslang_tab.cpp" +#line 9062 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2636 "MachineIndependent/glslang.y" +#line 2583 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9074 "MachineIndependent/glslang_tab.cpp" +#line 9073 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2642 "MachineIndependent/glslang.y" +#line 2589 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9085 "MachineIndependent/glslang_tab.cpp" +#line 9084 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2648 "MachineIndependent/glslang.y" +#line 2595 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9096 "MachineIndependent/glslang_tab.cpp" +#line 9095 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2654 "MachineIndependent/glslang.y" +#line 2601 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9107 "MachineIndependent/glslang_tab.cpp" +#line 9106 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2660 "MachineIndependent/glslang.y" +#line 2607 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9118 "MachineIndependent/glslang_tab.cpp" +#line 9117 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2666 "MachineIndependent/glslang.y" +#line 2613 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9129 "MachineIndependent/glslang_tab.cpp" +#line 9128 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2672 "MachineIndependent/glslang.y" +#line 2619 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9140 "MachineIndependent/glslang_tab.cpp" +#line 9139 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2678 "MachineIndependent/glslang.y" +#line 2625 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9151 "MachineIndependent/glslang_tab.cpp" +#line 9150 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2684 "MachineIndependent/glslang.y" +#line 2631 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9162 "MachineIndependent/glslang_tab.cpp" +#line 9161 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2690 "MachineIndependent/glslang.y" +#line 2637 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9173 "MachineIndependent/glslang_tab.cpp" +#line 9172 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2696 "MachineIndependent/glslang.y" +#line 2643 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9184 "MachineIndependent/glslang_tab.cpp" +#line 9183 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2702 "MachineIndependent/glslang.y" +#line 2649 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9194 "MachineIndependent/glslang_tab.cpp" +#line 9193 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2708 "MachineIndependent/glslang.y" +#line 2654 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9204 "MachineIndependent/glslang_tab.cpp" +#line 9203 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2713 "MachineIndependent/glslang.y" +#line 2659 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9214 "MachineIndependent/glslang_tab.cpp" +#line 9213 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2718 "MachineIndependent/glslang.y" +#line 2664 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9224 "MachineIndependent/glslang_tab.cpp" +#line 9223 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2723 "MachineIndependent/glslang.y" +#line 2669 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9234 "MachineIndependent/glslang_tab.cpp" +#line 9233 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLER2D */ -#line 2728 "MachineIndependent/glslang.y" +#line 2674 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9244 "MachineIndependent/glslang_tab.cpp" +#line 9243 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: USAMPLER3D */ -#line 2733 "MachineIndependent/glslang.y" +#line 2679 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9254 "MachineIndependent/glslang_tab.cpp" +#line 9253 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2738 "MachineIndependent/glslang.y" +#line 2684 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9264 "MachineIndependent/glslang_tab.cpp" +#line 9263 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2744 "MachineIndependent/glslang.y" +#line 2689 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9274 "MachineIndependent/glslang_tab.cpp" +#line 9273 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2749 "MachineIndependent/glslang.y" +#line 2694 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9284 "MachineIndependent/glslang_tab.cpp" +#line 9283 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLER1D */ -#line 2754 "MachineIndependent/glslang.y" +#line 2699 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9294 "MachineIndependent/glslang_tab.cpp" +#line 9293 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2759 "MachineIndependent/glslang.y" +#line 2704 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9304 "MachineIndependent/glslang_tab.cpp" +#line 9303 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2764 "MachineIndependent/glslang.y" +#line 2709 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9314 "MachineIndependent/glslang_tab.cpp" +#line 9313 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2769 "MachineIndependent/glslang.y" +#line 2714 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9324 "MachineIndependent/glslang_tab.cpp" +#line 9323 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2774 "MachineIndependent/glslang.y" +#line 2719 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9334 "MachineIndependent/glslang_tab.cpp" +#line 9333 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2779 "MachineIndependent/glslang.y" +#line 2724 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9344 "MachineIndependent/glslang_tab.cpp" +#line 9343 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2785 "MachineIndependent/glslang.y" +#line 2729 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9354 "MachineIndependent/glslang_tab.cpp" +#line 9353 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE2D */ -#line 2790 "MachineIndependent/glslang.y" +#line 2734 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9364 "MachineIndependent/glslang_tab.cpp" +#line 9363 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURE3D */ -#line 2795 "MachineIndependent/glslang.y" +#line 2739 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9374 "MachineIndependent/glslang_tab.cpp" +#line 9373 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2800 "MachineIndependent/glslang.y" +#line 2744 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9384 "MachineIndependent/glslang_tab.cpp" +#line 9383 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2805 "MachineIndependent/glslang.y" +#line 2749 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9394 "MachineIndependent/glslang_tab.cpp" +#line 9393 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2810 "MachineIndependent/glslang.y" +#line 2754 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9404 "MachineIndependent/glslang_tab.cpp" +#line 9403 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2815 "MachineIndependent/glslang.y" +#line 2759 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9414 "MachineIndependent/glslang_tab.cpp" +#line 9413 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2820 "MachineIndependent/glslang.y" +#line 2764 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9424 "MachineIndependent/glslang_tab.cpp" +#line 9423 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2825 "MachineIndependent/glslang.y" +#line 2769 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9434 "MachineIndependent/glslang_tab.cpp" +#line 9433 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2830 "MachineIndependent/glslang.y" +#line 2774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9444 "MachineIndependent/glslang_tab.cpp" +#line 9443 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2835 "MachineIndependent/glslang.y" +#line 2779 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9454 "MachineIndependent/glslang_tab.cpp" +#line 9453 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2840 "MachineIndependent/glslang.y" +#line 2784 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9464 "MachineIndependent/glslang_tab.cpp" +#line 9463 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2845 "MachineIndependent/glslang.y" +#line 2789 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9474 "MachineIndependent/glslang_tab.cpp" +#line 9473 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLER */ -#line 2850 "MachineIndependent/glslang.y" +#line 2794 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9484 "MachineIndependent/glslang_tab.cpp" +#line 9483 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2855 "MachineIndependent/glslang.y" +#line 2799 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9494 "MachineIndependent/glslang_tab.cpp" +#line 9493 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2861 "MachineIndependent/glslang.y" +#line 2804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9504 "MachineIndependent/glslang_tab.cpp" +#line 9503 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2866 "MachineIndependent/glslang.y" +#line 2809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9514 "MachineIndependent/glslang_tab.cpp" +#line 9513 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2871 "MachineIndependent/glslang.y" +#line 2814 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9525 "MachineIndependent/glslang_tab.cpp" +#line 9524 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2877 "MachineIndependent/glslang.y" +#line 2820 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9536 "MachineIndependent/glslang_tab.cpp" +#line 9535 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2883 "MachineIndependent/glslang.y" +#line 2826 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9546 "MachineIndependent/glslang_tab.cpp" +#line 9545 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2888 "MachineIndependent/glslang.y" +#line 2831 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9556 "MachineIndependent/glslang_tab.cpp" +#line 9555 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2893 "MachineIndependent/glslang.y" +#line 2836 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9566 "MachineIndependent/glslang_tab.cpp" +#line 9565 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2898 "MachineIndependent/glslang.y" +#line 2841 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9577 "MachineIndependent/glslang_tab.cpp" +#line 9576 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2904 "MachineIndependent/glslang.y" +#line 2847 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9587 "MachineIndependent/glslang_tab.cpp" +#line 9586 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2909 "MachineIndependent/glslang.y" +#line 2852 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9597 "MachineIndependent/glslang_tab.cpp" +#line 9596 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2914 "MachineIndependent/glslang.y" +#line 2857 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9607 "MachineIndependent/glslang_tab.cpp" +#line 9606 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2919 "MachineIndependent/glslang.y" +#line 2862 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9618 "MachineIndependent/glslang_tab.cpp" +#line 9617 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2925 "MachineIndependent/glslang.y" +#line 2868 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9628 "MachineIndependent/glslang_tab.cpp" +#line 9627 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2930 "MachineIndependent/glslang.y" +#line 2873 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9638 "MachineIndependent/glslang_tab.cpp" +#line 9637 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2935 "MachineIndependent/glslang.y" +#line 2878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9648 "MachineIndependent/glslang_tab.cpp" +#line 9647 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2940 "MachineIndependent/glslang.y" +#line 2883 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9659 "MachineIndependent/glslang_tab.cpp" +#line 9658 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2946 "MachineIndependent/glslang.y" +#line 2889 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9669 "MachineIndependent/glslang_tab.cpp" +#line 9668 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2951 "MachineIndependent/glslang.y" +#line 2894 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9679 "MachineIndependent/glslang_tab.cpp" +#line 9678 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: TEXTURE1D */ -#line 2956 "MachineIndependent/glslang.y" +#line 2899 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9689 "MachineIndependent/glslang_tab.cpp" +#line 9688 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2961 "MachineIndependent/glslang.y" +#line 2904 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9700 "MachineIndependent/glslang_tab.cpp" +#line 9699 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2967 "MachineIndependent/glslang.y" +#line 2910 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9711 "MachineIndependent/glslang_tab.cpp" +#line 9710 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2973 "MachineIndependent/glslang.y" +#line 2916 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9722 "MachineIndependent/glslang_tab.cpp" +#line 9721 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2979 "MachineIndependent/glslang.y" +#line 2922 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9733 "MachineIndependent/glslang_tab.cpp" +#line 9732 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2985 "MachineIndependent/glslang.y" +#line 2928 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9743 "MachineIndependent/glslang_tab.cpp" +#line 9742 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2990 "MachineIndependent/glslang.y" +#line 2933 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9754 "MachineIndependent/glslang_tab.cpp" +#line 9753 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2996 "MachineIndependent/glslang.y" +#line 2939 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9765 "MachineIndependent/glslang_tab.cpp" +#line 9764 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 3002 "MachineIndependent/glslang.y" +#line 2945 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9776 "MachineIndependent/glslang_tab.cpp" +#line 9775 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: ITEXTURE1D */ -#line 3008 "MachineIndependent/glslang.y" +#line 2951 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9786 "MachineIndependent/glslang_tab.cpp" +#line 9785 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 3013 "MachineIndependent/glslang.y" +#line 2956 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9796 "MachineIndependent/glslang_tab.cpp" +#line 9795 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: UTEXTURE1D */ -#line 3018 "MachineIndependent/glslang.y" +#line 2961 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9806 "MachineIndependent/glslang_tab.cpp" +#line 9805 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 3023 "MachineIndependent/glslang.y" +#line 2966 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9816 "MachineIndependent/glslang_tab.cpp" +#line 9815 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3028 "MachineIndependent/glslang.y" +#line 2971 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9826 "MachineIndependent/glslang_tab.cpp" +#line 9825 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3033 "MachineIndependent/glslang.y" +#line 2976 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9837 "MachineIndependent/glslang_tab.cpp" +#line 9836 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3039 "MachineIndependent/glslang.y" +#line 2982 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9847 "MachineIndependent/glslang_tab.cpp" +#line 9846 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3044 "MachineIndependent/glslang.y" +#line 2987 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9857 "MachineIndependent/glslang_tab.cpp" +#line 9856 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3049 "MachineIndependent/glslang.y" +#line 2992 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9867 "MachineIndependent/glslang_tab.cpp" +#line 9866 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3054 "MachineIndependent/glslang.y" +#line 2997 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9878 "MachineIndependent/glslang_tab.cpp" +#line 9877 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3060 "MachineIndependent/glslang.y" +#line 3003 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9888 "MachineIndependent/glslang_tab.cpp" +#line 9887 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3065 "MachineIndependent/glslang.y" +#line 3008 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9898 "MachineIndependent/glslang_tab.cpp" +#line 9897 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3070 "MachineIndependent/glslang.y" +#line 3013 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9908 "MachineIndependent/glslang_tab.cpp" +#line 9907 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3075 "MachineIndependent/glslang.y" +#line 3018 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9919 "MachineIndependent/glslang_tab.cpp" +#line 9918 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3081 "MachineIndependent/glslang.y" +#line 3024 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9929 "MachineIndependent/glslang_tab.cpp" +#line 9928 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3086 "MachineIndependent/glslang.y" +#line 3029 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9939 "MachineIndependent/glslang_tab.cpp" +#line 9938 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3091 "MachineIndependent/glslang.y" +#line 3034 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9949 "MachineIndependent/glslang_tab.cpp" +#line 9948 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3096 "MachineIndependent/glslang.y" +#line 3039 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9960 "MachineIndependent/glslang_tab.cpp" +#line 9959 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3102 "MachineIndependent/glslang.y" +#line 3045 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9970 "MachineIndependent/glslang_tab.cpp" +#line 9969 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3107 "MachineIndependent/glslang.y" +#line 3050 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9980 "MachineIndependent/glslang_tab.cpp" +#line 9979 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: IMAGE1D */ -#line 3112 "MachineIndependent/glslang.y" +#line 3055 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9990 "MachineIndependent/glslang_tab.cpp" +#line 9989 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3117 "MachineIndependent/glslang.y" +#line 3060 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10001 "MachineIndependent/glslang_tab.cpp" +#line 10000 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: IIMAGE1D */ -#line 3123 "MachineIndependent/glslang.y" +#line 3066 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10011 "MachineIndependent/glslang_tab.cpp" +#line 10010 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: UIMAGE1D */ -#line 3128 "MachineIndependent/glslang.y" +#line 3071 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10021 "MachineIndependent/glslang_tab.cpp" +#line 10020 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: IMAGE2D */ -#line 3133 "MachineIndependent/glslang.y" +#line 3076 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10031 "MachineIndependent/glslang_tab.cpp" +#line 10030 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3138 "MachineIndependent/glslang.y" +#line 3081 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10042 "MachineIndependent/glslang_tab.cpp" +#line 10041 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: IIMAGE2D */ -#line 3144 "MachineIndependent/glslang.y" +#line 3087 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10052 "MachineIndependent/glslang_tab.cpp" +#line 10051 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: UIMAGE2D */ -#line 3149 "MachineIndependent/glslang.y" +#line 3092 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10062 "MachineIndependent/glslang_tab.cpp" +#line 10061 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: IMAGE3D */ -#line 3154 "MachineIndependent/glslang.y" +#line 3097 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10072 "MachineIndependent/glslang_tab.cpp" +#line 10071 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3159 "MachineIndependent/glslang.y" +#line 3102 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10083 "MachineIndependent/glslang_tab.cpp" +#line 10082 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: IIMAGE3D */ -#line 3165 "MachineIndependent/glslang.y" +#line 3108 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10093 "MachineIndependent/glslang_tab.cpp" +#line 10092 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: UIMAGE3D */ -#line 3170 "MachineIndependent/glslang.y" +#line 3113 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10103 "MachineIndependent/glslang_tab.cpp" +#line 10102 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3175 "MachineIndependent/glslang.y" +#line 3118 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10113 "MachineIndependent/glslang_tab.cpp" +#line 10112 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3180 "MachineIndependent/glslang.y" +#line 3123 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10124 "MachineIndependent/glslang_tab.cpp" +#line 10123 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3186 "MachineIndependent/glslang.y" +#line 3129 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10134 "MachineIndependent/glslang_tab.cpp" +#line 10133 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3191 "MachineIndependent/glslang.y" +#line 3134 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10144 "MachineIndependent/glslang_tab.cpp" +#line 10143 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IMAGECUBE */ -#line 3196 "MachineIndependent/glslang.y" +#line 3139 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10154 "MachineIndependent/glslang_tab.cpp" +#line 10153 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3201 "MachineIndependent/glslang.y" +#line 3144 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10165 "MachineIndependent/glslang_tab.cpp" +#line 10164 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3207 "MachineIndependent/glslang.y" +#line 3150 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10175 "MachineIndependent/glslang_tab.cpp" +#line 10174 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3212 "MachineIndependent/glslang.y" +#line 3155 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10185 "MachineIndependent/glslang_tab.cpp" +#line 10184 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3217 "MachineIndependent/glslang.y" +#line 3160 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10195 "MachineIndependent/glslang_tab.cpp" +#line 10194 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3222 "MachineIndependent/glslang.y" +#line 3165 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10206 "MachineIndependent/glslang_tab.cpp" +#line 10205 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3228 "MachineIndependent/glslang.y" +#line 3171 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10216 "MachineIndependent/glslang_tab.cpp" +#line 10215 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3233 "MachineIndependent/glslang.y" +#line 3176 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10226 "MachineIndependent/glslang_tab.cpp" +#line 10225 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3238 "MachineIndependent/glslang.y" +#line 3181 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10236 "MachineIndependent/glslang_tab.cpp" +#line 10235 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3243 "MachineIndependent/glslang.y" +#line 3186 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10247 "MachineIndependent/glslang_tab.cpp" +#line 10246 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3249 "MachineIndependent/glslang.y" +#line 3192 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10257 "MachineIndependent/glslang_tab.cpp" +#line 10256 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3254 "MachineIndependent/glslang.y" +#line 3197 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10267 "MachineIndependent/glslang_tab.cpp" +#line 10266 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3259 "MachineIndependent/glslang.y" +#line 3202 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10277 "MachineIndependent/glslang_tab.cpp" +#line 10276 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3264 "MachineIndependent/glslang.y" +#line 3207 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10288 "MachineIndependent/glslang_tab.cpp" +#line 10287 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3270 "MachineIndependent/glslang.y" +#line 3213 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10298 "MachineIndependent/glslang_tab.cpp" +#line 10297 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3275 "MachineIndependent/glslang.y" +#line 3218 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10308 "MachineIndependent/glslang_tab.cpp" +#line 10307 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3280 "MachineIndependent/glslang.y" +#line 3223 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10318 "MachineIndependent/glslang_tab.cpp" +#line 10317 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3285 "MachineIndependent/glslang.y" +#line 3228 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10329 "MachineIndependent/glslang_tab.cpp" +#line 10328 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3291 "MachineIndependent/glslang.y" +#line 3234 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10339 "MachineIndependent/glslang_tab.cpp" +#line 10338 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3296 "MachineIndependent/glslang.y" +#line 3239 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10349 "MachineIndependent/glslang_tab.cpp" +#line 10348 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3301 "MachineIndependent/glslang.y" +#line 3244 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10359 "MachineIndependent/glslang_tab.cpp" +#line 10358 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3306 "MachineIndependent/glslang.y" +#line 3249 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10370 "MachineIndependent/glslang_tab.cpp" +#line 10369 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3312 "MachineIndependent/glslang.y" +#line 3255 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10380 "MachineIndependent/glslang_tab.cpp" +#line 10379 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3317 "MachineIndependent/glslang.y" +#line 3260 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10390 "MachineIndependent/glslang_tab.cpp" +#line 10389 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3322 "MachineIndependent/glslang.y" +#line 3265 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10400 "MachineIndependent/glslang_tab.cpp" +#line 10399 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3327 "MachineIndependent/glslang.y" +#line 3270 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10411 "MachineIndependent/glslang_tab.cpp" +#line 10410 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3333 "MachineIndependent/glslang.y" +#line 3276 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10421 "MachineIndependent/glslang_tab.cpp" +#line 10420 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3338 "MachineIndependent/glslang.y" +#line 3281 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10431 "MachineIndependent/glslang_tab.cpp" +#line 10430 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3343 "MachineIndependent/glslang.y" +#line 3286 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10441 "MachineIndependent/glslang_tab.cpp" +#line 10440 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3348 "MachineIndependent/glslang.y" +#line 3291 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10451 "MachineIndependent/glslang_tab.cpp" +#line 10450 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3353 "MachineIndependent/glslang.y" +#line 3296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10461 "MachineIndependent/glslang_tab.cpp" +#line 10460 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3358 "MachineIndependent/glslang.y" +#line 3301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10471 "MachineIndependent/glslang_tab.cpp" +#line 10470 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3363 "MachineIndependent/glslang.y" +#line 3306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10481 "MachineIndependent/glslang_tab.cpp" +#line 10480 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3368 "MachineIndependent/glslang.y" +#line 3311 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10491 "MachineIndependent/glslang_tab.cpp" +#line 10490 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3373 "MachineIndependent/glslang.y" +#line 3316 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10501 "MachineIndependent/glslang_tab.cpp" +#line 10500 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3378 "MachineIndependent/glslang.y" +#line 3321 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10511 "MachineIndependent/glslang_tab.cpp" +#line 10510 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3383 "MachineIndependent/glslang.y" +#line 3326 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10521 "MachineIndependent/glslang_tab.cpp" +#line 10520 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3388 "MachineIndependent/glslang.y" +#line 3331 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10531 "MachineIndependent/glslang_tab.cpp" +#line 10530 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3393 "MachineIndependent/glslang.y" +#line 3336 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10541 "MachineIndependent/glslang_tab.cpp" +#line 10540 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3398 "MachineIndependent/glslang.y" +#line 3341 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10551 "MachineIndependent/glslang_tab.cpp" +#line 10550 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3403 "MachineIndependent/glslang.y" +#line 3346 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10561 "MachineIndependent/glslang_tab.cpp" +#line 10560 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3408 "MachineIndependent/glslang.y" +#line 3351 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10571 "MachineIndependent/glslang_tab.cpp" +#line 10570 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3413 "MachineIndependent/glslang.y" +#line 3356 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10581 "MachineIndependent/glslang_tab.cpp" +#line 10580 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3418 "MachineIndependent/glslang.y" +#line 3361 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10591 "MachineIndependent/glslang_tab.cpp" +#line 10590 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3423 "MachineIndependent/glslang.y" +#line 3366 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10601 "MachineIndependent/glslang_tab.cpp" +#line 10600 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3428 "MachineIndependent/glslang.y" +#line 3371 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10611 "MachineIndependent/glslang_tab.cpp" +#line 10610 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3433 "MachineIndependent/glslang.y" +#line 3376 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10621 "MachineIndependent/glslang_tab.cpp" +#line 10620 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3438 "MachineIndependent/glslang.y" +#line 3381 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10631 "MachineIndependent/glslang_tab.cpp" +#line 10630 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3443 "MachineIndependent/glslang.y" +#line 3386 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10641 "MachineIndependent/glslang_tab.cpp" +#line 10640 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3448 "MachineIndependent/glslang.y" +#line 3391 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10651 "MachineIndependent/glslang_tab.cpp" +#line 10650 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3453 "MachineIndependent/glslang.y" +#line 3396 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10662 "MachineIndependent/glslang_tab.cpp" +#line 10661 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3459 "MachineIndependent/glslang.y" +#line 3402 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10673 "MachineIndependent/glslang_tab.cpp" +#line 10672 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3465 "MachineIndependent/glslang.y" +#line 3408 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10684 "MachineIndependent/glslang_tab.cpp" +#line 10683 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3471 "MachineIndependent/glslang.y" +#line 3414 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10695 "MachineIndependent/glslang_tab.cpp" +#line 10694 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3477 "MachineIndependent/glslang.y" +#line 3420 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10706 "MachineIndependent/glslang_tab.cpp" +#line 10705 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3483 "MachineIndependent/glslang.y" +#line 3426 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10717 "MachineIndependent/glslang_tab.cpp" +#line 10716 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3489 "MachineIndependent/glslang.y" +#line 3432 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10728 "MachineIndependent/glslang_tab.cpp" +#line 10727 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3495 "MachineIndependent/glslang.y" +#line 3438 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10736,11 +10735,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10740 "MachineIndependent/glslang_tab.cpp" +#line 10739 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3502 "MachineIndependent/glslang.y" +#line 3445 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10748,55 +10747,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10752 "MachineIndependent/glslang_tab.cpp" +#line 10751 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3509 "MachineIndependent/glslang.y" +#line 3452 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10763 "MachineIndependent/glslang_tab.cpp" +#line 10762 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3515 "MachineIndependent/glslang.y" +#line 3458 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10774 "MachineIndependent/glslang_tab.cpp" +#line 10773 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3521 "MachineIndependent/glslang.y" +#line 3464 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10785 "MachineIndependent/glslang_tab.cpp" +#line 10784 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3527 "MachineIndependent/glslang.y" +#line 3470 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10796 "MachineIndependent/glslang_tab.cpp" +#line 10795 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3533 "MachineIndependent/glslang.y" +#line 3476 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10804,11 +10803,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10808 "MachineIndependent/glslang_tab.cpp" +#line 10807 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3540 "MachineIndependent/glslang.y" +#line 3483 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10816,11 +10815,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10820 "MachineIndependent/glslang_tab.cpp" +#line 10819 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3547 "MachineIndependent/glslang.y" +#line 3490 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10828,11 +10827,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10832 "MachineIndependent/glslang_tab.cpp" +#line 10831 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: COOPMAT */ -#line 3554 "MachineIndependent/glslang.y" +#line 3497 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10840,39 +10839,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 10844 "MachineIndependent/glslang_tab.cpp" +#line 10843 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3561 "MachineIndependent/glslang.y" +#line 3504 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10853 "MachineIndependent/glslang_tab.cpp" +#line 10852 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3565 "MachineIndependent/glslang.y" +#line 3508 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10862 "MachineIndependent/glslang_tab.cpp" +#line 10861 "MachineIndependent/glslang_tab.cpp" break; case 539: /* type_specifier_nonarray: struct_specifier */ -#line 3570 "MachineIndependent/glslang.y" +#line 3512 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10872 "MachineIndependent/glslang_tab.cpp" +#line 10871 "MachineIndependent/glslang_tab.cpp" break; case 540: /* type_specifier_nonarray: TYPE_NAME */ -#line 3575 "MachineIndependent/glslang.y" +#line 3517 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10886,47 +10885,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10890 "MachineIndependent/glslang_tab.cpp" +#line 10889 "MachineIndependent/glslang_tab.cpp" break; case 541: /* precision_qualifier: HIGH_PRECISION */ -#line 3591 "MachineIndependent/glslang.y" +#line 3533 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10900 "MachineIndependent/glslang_tab.cpp" +#line 10899 "MachineIndependent/glslang_tab.cpp" break; case 542: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3596 "MachineIndependent/glslang.y" +#line 3538 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10910 "MachineIndependent/glslang_tab.cpp" +#line 10909 "MachineIndependent/glslang_tab.cpp" break; case 543: /* precision_qualifier: LOW_PRECISION */ -#line 3601 "MachineIndependent/glslang.y" +#line 3543 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10920 "MachineIndependent/glslang_tab.cpp" +#line 10919 "MachineIndependent/glslang_tab.cpp" break; case 544: /* $@3: %empty */ -#line 3609 "MachineIndependent/glslang.y" +#line 3551 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10926 "MachineIndependent/glslang_tab.cpp" +#line 10925 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3609 "MachineIndependent/glslang.y" +#line 3551 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); @@ -10938,17 +10937,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10942 "MachineIndependent/glslang_tab.cpp" +#line 10941 "MachineIndependent/glslang_tab.cpp" break; case 546: /* $@4: %empty */ -#line 3620 "MachineIndependent/glslang.y" +#line 3562 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10948 "MachineIndependent/glslang_tab.cpp" +#line 10947 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3620 "MachineIndependent/glslang.y" +#line 3562 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10956,19 +10955,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10960 "MachineIndependent/glslang_tab.cpp" +#line 10959 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declaration_list: struct_declaration */ -#line 3630 "MachineIndependent/glslang.y" +#line 3572 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10968 "MachineIndependent/glslang_tab.cpp" +#line 10967 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3633 "MachineIndependent/glslang.y" +#line 3575 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10979,11 +10978,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10983 "MachineIndependent/glslang_tab.cpp" +#line 10982 "MachineIndependent/glslang_tab.cpp" break; case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3646 "MachineIndependent/glslang.y" +#line 3588 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11006,11 +11005,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11010 "MachineIndependent/glslang_tab.cpp" +#line 11009 "MachineIndependent/glslang_tab.cpp" break; case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3668 "MachineIndependent/glslang.y" +#line 3610 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11035,38 +11034,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11039 "MachineIndependent/glslang_tab.cpp" +#line 11038 "MachineIndependent/glslang_tab.cpp" break; case 552: /* struct_declarator_list: struct_declarator */ -#line 3695 "MachineIndependent/glslang.y" +#line 3637 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11048 "MachineIndependent/glslang_tab.cpp" +#line 11047 "MachineIndependent/glslang_tab.cpp" break; case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3699 "MachineIndependent/glslang.y" +#line 3641 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11056 "MachineIndependent/glslang_tab.cpp" +#line 11055 "MachineIndependent/glslang_tab.cpp" break; case 554: /* struct_declarator: IDENTIFIER */ -#line 3705 "MachineIndependent/glslang.y" +#line 3647 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11066 "MachineIndependent/glslang_tab.cpp" +#line 11065 "MachineIndependent/glslang_tab.cpp" break; case 555: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3710 "MachineIndependent/glslang.y" +#line 3652 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11075,246 +11074,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11079 "MachineIndependent/glslang_tab.cpp" +#line 11078 "MachineIndependent/glslang_tab.cpp" break; case 556: /* initializer: assignment_expression */ -#line 3721 "MachineIndependent/glslang.y" +#line 3663 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11087 "MachineIndependent/glslang_tab.cpp" +#line 11086 "MachineIndependent/glslang_tab.cpp" break; case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3725 "MachineIndependent/glslang.y" +#line 3666 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11098 "MachineIndependent/glslang_tab.cpp" +#line 11097 "MachineIndependent/glslang_tab.cpp" break; case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3731 "MachineIndependent/glslang.y" +#line 3672 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11109 "MachineIndependent/glslang_tab.cpp" +#line 11108 "MachineIndependent/glslang_tab.cpp" break; case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3737 "MachineIndependent/glslang.y" +#line 3678 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11120 "MachineIndependent/glslang_tab.cpp" +#line 11119 "MachineIndependent/glslang_tab.cpp" break; case 560: /* initializer_list: initializer */ -#line 3748 "MachineIndependent/glslang.y" +#line 3687 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11128 "MachineIndependent/glslang_tab.cpp" +#line 11127 "MachineIndependent/glslang_tab.cpp" break; case 561: /* initializer_list: initializer_list COMMA initializer */ -#line 3751 "MachineIndependent/glslang.y" +#line 3690 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11136 "MachineIndependent/glslang_tab.cpp" +#line 11135 "MachineIndependent/glslang_tab.cpp" break; case 562: /* declaration_statement: declaration */ -#line 3758 "MachineIndependent/glslang.y" +#line 3696 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11142 "MachineIndependent/glslang_tab.cpp" +#line 11141 "MachineIndependent/glslang_tab.cpp" break; case 563: /* statement: compound_statement */ -#line 3762 "MachineIndependent/glslang.y" +#line 3700 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11148 "MachineIndependent/glslang_tab.cpp" +#line 11147 "MachineIndependent/glslang_tab.cpp" break; case 564: /* statement: simple_statement */ -#line 3763 "MachineIndependent/glslang.y" +#line 3701 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11154 "MachineIndependent/glslang_tab.cpp" +#line 11153 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: declaration_statement */ -#line 3769 "MachineIndependent/glslang.y" +#line 3707 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11160 "MachineIndependent/glslang_tab.cpp" +#line 11159 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: expression_statement */ -#line 3770 "MachineIndependent/glslang.y" +#line 3708 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11166 "MachineIndependent/glslang_tab.cpp" +#line 11165 "MachineIndependent/glslang_tab.cpp" break; case 567: /* simple_statement: selection_statement */ -#line 3771 "MachineIndependent/glslang.y" +#line 3709 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11172 "MachineIndependent/glslang_tab.cpp" +#line 11171 "MachineIndependent/glslang_tab.cpp" break; case 568: /* simple_statement: switch_statement */ -#line 3772 "MachineIndependent/glslang.y" +#line 3710 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11178 "MachineIndependent/glslang_tab.cpp" +#line 11177 "MachineIndependent/glslang_tab.cpp" break; case 569: /* simple_statement: case_label */ -#line 3773 "MachineIndependent/glslang.y" +#line 3711 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11184 "MachineIndependent/glslang_tab.cpp" +#line 11183 "MachineIndependent/glslang_tab.cpp" break; case 570: /* simple_statement: iteration_statement */ -#line 3774 "MachineIndependent/glslang.y" +#line 3712 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11190 "MachineIndependent/glslang_tab.cpp" +#line 11189 "MachineIndependent/glslang_tab.cpp" break; case 571: /* simple_statement: jump_statement */ -#line 3775 "MachineIndependent/glslang.y" +#line 3713 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11196 "MachineIndependent/glslang_tab.cpp" +#line 11195 "MachineIndependent/glslang_tab.cpp" break; case 572: /* simple_statement: demote_statement */ -#line 3777 "MachineIndependent/glslang.y" +#line 3714 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11202 "MachineIndependent/glslang_tab.cpp" +#line 11201 "MachineIndependent/glslang_tab.cpp" break; case 573: /* demote_statement: DEMOTE SEMICOLON */ -#line 3783 "MachineIndependent/glslang.y" +#line 3718 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11212 "MachineIndependent/glslang_tab.cpp" +#line 11211 "MachineIndependent/glslang_tab.cpp" break; case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3792 "MachineIndependent/glslang.y" +#line 3726 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11218 "MachineIndependent/glslang_tab.cpp" +#line 11217 "MachineIndependent/glslang_tab.cpp" break; case 575: /* $@5: %empty */ -#line 3793 "MachineIndependent/glslang.y" +#line 3727 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11227 "MachineIndependent/glslang_tab.cpp" +#line 11226 "MachineIndependent/glslang_tab.cpp" break; case 576: /* $@6: %empty */ -#line 3797 "MachineIndependent/glslang.y" +#line 3731 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11236 "MachineIndependent/glslang_tab.cpp" +#line 11235 "MachineIndependent/glslang_tab.cpp" break; case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3801 "MachineIndependent/glslang.y" +#line 3735 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11246 "MachineIndependent/glslang_tab.cpp" +#line 11245 "MachineIndependent/glslang_tab.cpp" break; case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3809 "MachineIndependent/glslang.y" +#line 3743 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11252 "MachineIndependent/glslang_tab.cpp" +#line 11251 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_no_new_scope: simple_statement */ -#line 3810 "MachineIndependent/glslang.y" +#line 3744 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11258 "MachineIndependent/glslang_tab.cpp" +#line 11257 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@7: %empty */ -#line 3814 "MachineIndependent/glslang.y" +#line 3748 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11266 "MachineIndependent/glslang_tab.cpp" +#line 11265 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@7 compound_statement */ -#line 3817 "MachineIndependent/glslang.y" +#line 3751 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11275 "MachineIndependent/glslang_tab.cpp" +#line 11274 "MachineIndependent/glslang_tab.cpp" break; case 582: /* $@8: %empty */ -#line 3821 "MachineIndependent/glslang.y" +#line 3755 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11285 "MachineIndependent/glslang_tab.cpp" +#line 11284 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement_scoped: $@8 simple_statement */ -#line 3826 "MachineIndependent/glslang.y" +#line 3760 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11296 "MachineIndependent/glslang_tab.cpp" +#line 11295 "MachineIndependent/glslang_tab.cpp" break; case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3835 "MachineIndependent/glslang.y" +#line 3769 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11304 "MachineIndependent/glslang_tab.cpp" +#line 11303 "MachineIndependent/glslang_tab.cpp" break; case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3838 "MachineIndependent/glslang.y" +#line 3772 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11314 "MachineIndependent/glslang_tab.cpp" +#line 11313 "MachineIndependent/glslang_tab.cpp" break; case 586: /* statement_list: statement */ -#line 3846 "MachineIndependent/glslang.y" +#line 3780 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11323,11 +11322,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11327 "MachineIndependent/glslang_tab.cpp" +#line 11326 "MachineIndependent/glslang_tab.cpp" break; case 587: /* statement_list: statement_list statement */ -#line 3854 "MachineIndependent/glslang.y" +#line 3788 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11336,77 +11335,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11340 "MachineIndependent/glslang_tab.cpp" +#line 11339 "MachineIndependent/glslang_tab.cpp" break; case 588: /* expression_statement: SEMICOLON */ -#line 3865 "MachineIndependent/glslang.y" +#line 3799 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11346 "MachineIndependent/glslang_tab.cpp" +#line 11345 "MachineIndependent/glslang_tab.cpp" break; case 589: /* expression_statement: expression SEMICOLON */ -#line 3866 "MachineIndependent/glslang.y" +#line 3800 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11352 "MachineIndependent/glslang_tab.cpp" +#line 11351 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement: selection_statement_nonattributed */ -#line 3870 "MachineIndependent/glslang.y" +#line 3804 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11360 "MachineIndependent/glslang_tab.cpp" +#line 11359 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3874 "MachineIndependent/glslang.y" +#line 3807 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11370 "MachineIndependent/glslang_tab.cpp" +#line 11369 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3882 "MachineIndependent/glslang.y" +#line 3814 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11379 "MachineIndependent/glslang_tab.cpp" +#line 11378 "MachineIndependent/glslang_tab.cpp" break; case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3889 "MachineIndependent/glslang.y" +#line 3821 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11388 "MachineIndependent/glslang_tab.cpp" +#line 11387 "MachineIndependent/glslang_tab.cpp" break; case 594: /* selection_rest_statement: statement_scoped */ -#line 3893 "MachineIndependent/glslang.y" +#line 3825 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11397 "MachineIndependent/glslang_tab.cpp" +#line 11396 "MachineIndependent/glslang_tab.cpp" break; case 595: /* condition: expression */ -#line 3901 "MachineIndependent/glslang.y" +#line 3833 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11406 "MachineIndependent/glslang_tab.cpp" +#line 11405 "MachineIndependent/glslang_tab.cpp" break; case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3905 "MachineIndependent/glslang.y" +#line 3837 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11417,29 +11416,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11421 "MachineIndependent/glslang_tab.cpp" +#line 11420 "MachineIndependent/glslang_tab.cpp" break; case 597: /* switch_statement: switch_statement_nonattributed */ -#line 3918 "MachineIndependent/glslang.y" +#line 3850 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11429 "MachineIndependent/glslang_tab.cpp" +#line 11428 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3922 "MachineIndependent/glslang.y" +#line 3853 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11439 "MachineIndependent/glslang_tab.cpp" +#line 11438 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@9: %empty */ -#line 3930 "MachineIndependent/glslang.y" +#line 3860 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11448,11 +11447,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11452 "MachineIndependent/glslang_tab.cpp" +#line 11451 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3938 "MachineIndependent/glslang.y" +#line 3868 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11462,27 +11461,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11466 "MachineIndependent/glslang_tab.cpp" +#line 11465 "MachineIndependent/glslang_tab.cpp" break; case 601: /* switch_statement_list: %empty */ -#line 3950 "MachineIndependent/glslang.y" +#line 3880 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11474 "MachineIndependent/glslang_tab.cpp" +#line 11473 "MachineIndependent/glslang_tab.cpp" break; case 602: /* switch_statement_list: statement_list */ -#line 3953 "MachineIndependent/glslang.y" +#line 3883 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11482 "MachineIndependent/glslang_tab.cpp" +#line 11481 "MachineIndependent/glslang_tab.cpp" break; case 603: /* case_label: CASE expression COLON */ -#line 3959 "MachineIndependent/glslang.y" +#line 3889 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11495,11 +11494,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11499 "MachineIndependent/glslang_tab.cpp" +#line 11498 "MachineIndependent/glslang_tab.cpp" break; case 604: /* case_label: DEFAULT COLON */ -#line 3971 "MachineIndependent/glslang.y" +#line 3901 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11509,29 +11508,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11513 "MachineIndependent/glslang_tab.cpp" +#line 11512 "MachineIndependent/glslang_tab.cpp" break; case 605: /* iteration_statement: iteration_statement_nonattributed */ -#line 3983 "MachineIndependent/glslang.y" +#line 3913 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11521 "MachineIndependent/glslang_tab.cpp" +#line 11520 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3987 "MachineIndependent/glslang.y" +#line 3916 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11531 "MachineIndependent/glslang_tab.cpp" +#line 11530 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3995 "MachineIndependent/glslang.y" +#line 3923 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11540,11 +11539,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11544 "MachineIndependent/glslang_tab.cpp" +#line 11543 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 4003 "MachineIndependent/glslang.y" +#line 3931 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11552,22 +11551,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11556 "MachineIndependent/glslang_tab.cpp" +#line 11555 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 4010 "MachineIndependent/glslang.y" +#line 3938 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11567 "MachineIndependent/glslang_tab.cpp" +#line 11566 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 4016 "MachineIndependent/glslang.y" +#line 3944 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11580,22 +11579,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11584 "MachineIndependent/glslang_tab.cpp" +#line 11583 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 4028 "MachineIndependent/glslang.y" +#line 3956 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11595 "MachineIndependent/glslang_tab.cpp" +#line 11594 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 4034 "MachineIndependent/glslang.y" +#line 3962 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11608,81 +11607,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11612 "MachineIndependent/glslang_tab.cpp" +#line 11611 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 4049 "MachineIndependent/glslang.y" +#line 3977 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11620 "MachineIndependent/glslang_tab.cpp" +#line 11619 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 4052 "MachineIndependent/glslang.y" +#line 3980 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11628 "MachineIndependent/glslang_tab.cpp" +#line 11627 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 4058 "MachineIndependent/glslang.y" +#line 3986 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11636 "MachineIndependent/glslang_tab.cpp" +#line 11635 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 4061 "MachineIndependent/glslang.y" +#line 3989 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11644 "MachineIndependent/glslang_tab.cpp" +#line 11643 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4067 "MachineIndependent/glslang.y" +#line 3995 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11653 "MachineIndependent/glslang_tab.cpp" +#line 11652 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4071 "MachineIndependent/glslang.y" +#line 3999 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11662 "MachineIndependent/glslang_tab.cpp" +#line 11661 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4078 "MachineIndependent/glslang.y" +#line 4006 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11672 "MachineIndependent/glslang_tab.cpp" +#line 11671 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4083 "MachineIndependent/glslang.y" +#line 4011 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11682 "MachineIndependent/glslang_tab.cpp" +#line 11681 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4088 "MachineIndependent/glslang.y" +#line 4016 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11690,101 +11689,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11694 "MachineIndependent/glslang_tab.cpp" +#line 11693 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4095 "MachineIndependent/glslang.y" +#line 4023 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11702 "MachineIndependent/glslang_tab.cpp" +#line 11701 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4098 "MachineIndependent/glslang.y" +#line 4026 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11711 "MachineIndependent/glslang_tab.cpp" +#line 11710 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4102 "MachineIndependent/glslang.y" +#line 4030 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11720 "MachineIndependent/glslang_tab.cpp" +#line 11719 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4107 "MachineIndependent/glslang.y" +#line 4034 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11729 "MachineIndependent/glslang_tab.cpp" +#line 11728 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4111 "MachineIndependent/glslang.y" +#line 4038 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11738 "MachineIndependent/glslang_tab.cpp" +#line 11737 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4121 "MachineIndependent/glslang.y" +#line 4047 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11747 "MachineIndependent/glslang_tab.cpp" +#line 11746 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4125 "MachineIndependent/glslang.y" +#line 4051 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11758 "MachineIndependent/glslang_tab.cpp" +#line 11757 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4134 "MachineIndependent/glslang.y" +#line 4060 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11766 "MachineIndependent/glslang_tab.cpp" +#line 11765 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4137 "MachineIndependent/glslang.y" +#line 4063 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11774 "MachineIndependent/glslang_tab.cpp" +#line 11773 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4141 "MachineIndependent/glslang.y" +#line 4066 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11784 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4150 "MachineIndependent/glslang.y" +#line 4074 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11797,17 +11796,18 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11801 "MachineIndependent/glslang_tab.cpp" +#line 11800 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4162 "MachineIndependent/glslang.y" +#line 4086 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) parseContext.error((yyvsp[-2].interm).loc, "function does not return a value:", "", (yyvsp[-2].interm).function->getName().c_str()); parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermNode)); + (yyval.interm.intermNode)->getAsAggregate()->setLinkType((yyvsp[-2].interm).function->getLinkType()); parseContext.intermediate.setAggregateOperator((yyval.interm.intermNode), EOpFunction, (yyvsp[-2].interm).function->getType(), (yyvsp[-2].interm).loc); (yyval.interm.intermNode)->getAsAggregate()->setName((yyvsp[-2].interm).function->getMangledName().c_str()); @@ -11832,7 +11832,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4192 "MachineIndependent/glslang.y" +#line 4116 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } @@ -11840,7 +11840,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 635: /* attribute_list: single_attribute */ -#line 4197 "MachineIndependent/glslang.y" +#line 4121 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } @@ -11848,7 +11848,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4200 "MachineIndependent/glslang.y" +#line 4124 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } @@ -11856,7 +11856,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 637: /* single_attribute: IDENTIFIER */ -#line 4205 "MachineIndependent/glslang.y" +#line 4129 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } @@ -11864,7 +11864,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4208 "MachineIndependent/glslang.y" +#line 4132 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } @@ -11872,7 +11872,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4215 "MachineIndependent/glslang.y" +#line 4137 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } @@ -11880,7 +11880,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4218 "MachineIndependent/glslang.y" +#line 4140 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } @@ -11888,7 +11888,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4223 "MachineIndependent/glslang.y" +#line 4145 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } @@ -11896,7 +11896,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4226 "MachineIndependent/glslang.y" +#line 4148 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } @@ -11904,7 +11904,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4231 "MachineIndependent/glslang.y" +#line 4153 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } @@ -11912,7 +11912,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4234 "MachineIndependent/glslang.y" +#line 4156 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } @@ -11920,7 +11920,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4239 "MachineIndependent/glslang.y" +#line 4161 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } @@ -11928,7 +11928,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4242 "MachineIndependent/glslang.y" +#line 4164 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } @@ -11936,7 +11936,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4247 "MachineIndependent/glslang.y" +#line 4169 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; @@ -11945,7 +11945,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4251 "MachineIndependent/glslang.y" +#line 4173 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); @@ -11955,7 +11955,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4256 "MachineIndependent/glslang.y" +#line 4178 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; @@ -11964,7 +11964,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4260 "MachineIndependent/glslang.y" +#line 4182 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); @@ -11974,7 +11974,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4265 "MachineIndependent/glslang.y" +#line 4187 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; @@ -11983,7 +11983,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4269 "MachineIndependent/glslang.y" +#line 4191 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); @@ -11993,7 +11993,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4276 "MachineIndependent/glslang.y" +#line 4198 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } @@ -12001,7 +12001,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4279 "MachineIndependent/glslang.y" +#line 4201 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } @@ -12009,7 +12009,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4284 "MachineIndependent/glslang.y" +#line 4206 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } @@ -12017,7 +12017,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4287 "MachineIndependent/glslang.y" +#line 4209 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } @@ -12025,7 +12025,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4290 "MachineIndependent/glslang.y" +#line 4212 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } @@ -12033,7 +12033,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4293 "MachineIndependent/glslang.y" +#line 4215 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } @@ -12041,7 +12041,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4296 "MachineIndependent/glslang.y" +#line 4218 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } @@ -12049,7 +12049,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4301 "MachineIndependent/glslang.y" +#line 4223 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12063,7 +12063,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4310 "MachineIndependent/glslang.y" +#line 4232 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12077,7 +12077,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4321 "MachineIndependent/glslang.y" +#line 4243 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; @@ -12087,7 +12087,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4326 "MachineIndependent/glslang.y" +#line 4248 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); @@ -12098,7 +12098,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4334 "MachineIndependent/glslang.y" +#line 4256 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); @@ -12107,7 +12107,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4338 "MachineIndependent/glslang.y" +#line 4260 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); @@ -12117,7 +12117,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4343 "MachineIndependent/glslang.y" +#line 4265 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); @@ -12126,7 +12126,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4347 "MachineIndependent/glslang.y" +#line 4269 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); @@ -12136,7 +12136,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4352 "MachineIndependent/glslang.y" +#line 4274 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); @@ -12145,7 +12145,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4356 "MachineIndependent/glslang.y" +#line 4278 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); @@ -12155,7 +12155,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4361 "MachineIndependent/glslang.y" +#line 4283 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); @@ -12164,7 +12164,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4365 "MachineIndependent/glslang.y" +#line 4287 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); @@ -12174,7 +12174,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4372 "MachineIndependent/glslang.y" +#line 4294 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } @@ -12182,7 +12182,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4375 "MachineIndependent/glslang.y" +#line 4297 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } @@ -12190,7 +12190,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4380 "MachineIndependent/glslang.y" +#line 4302 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } @@ -12198,7 +12198,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4383 "MachineIndependent/glslang.y" +#line 4305 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } @@ -12206,7 +12206,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4386 "MachineIndependent/glslang.y" +#line 4308 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } @@ -12214,7 +12214,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4389 "MachineIndependent/glslang.y" +#line 4311 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } @@ -12222,7 +12222,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4394 "MachineIndependent/glslang.y" +#line 4316 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } @@ -12230,7 +12230,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4397 "MachineIndependent/glslang.y" +#line 4319 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } @@ -12238,7 +12238,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4402 "MachineIndependent/glslang.y" +#line 4324 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); @@ -12249,7 +12249,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4408 "MachineIndependent/glslang.y" +#line 4330 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } @@ -12257,7 +12257,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4411 "MachineIndependent/glslang.y" +#line 4333 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } @@ -12265,7 +12265,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4414 "MachineIndependent/glslang.y" +#line 4336 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } @@ -12273,7 +12273,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4417 "MachineIndependent/glslang.y" +#line 4339 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } @@ -12281,7 +12281,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4422 "MachineIndependent/glslang.y" +#line 4344 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); @@ -12290,7 +12290,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4426 "MachineIndependent/glslang.y" +#line 4348 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } @@ -12298,7 +12298,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4431 "MachineIndependent/glslang.y" +#line 4353 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); @@ -12307,7 +12307,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4435 "MachineIndependent/glslang.y" +#line 4357 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); @@ -12317,7 +12317,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4440 "MachineIndependent/glslang.y" +#line 4362 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); @@ -12326,7 +12326,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4444 "MachineIndependent/glslang.y" +#line 4366 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); @@ -12336,7 +12336,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4451 "MachineIndependent/glslang.y" +#line 4373 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } @@ -12344,7 +12344,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4454 "MachineIndependent/glslang.y" +#line 4376 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } @@ -12352,7 +12352,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4459 "MachineIndependent/glslang.y" +#line 4381 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } @@ -12360,7 +12360,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4462 "MachineIndependent/glslang.y" +#line 4384 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } @@ -12368,7 +12368,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4467 "MachineIndependent/glslang.y" +#line 4389 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } @@ -12376,7 +12376,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4470 "MachineIndependent/glslang.y" +#line 4392 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); @@ -12385,7 +12385,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4476 "MachineIndependent/glslang.y" +#line 4398 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } @@ -12393,7 +12393,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4479 "MachineIndependent/glslang.y" +#line 4401 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } @@ -12401,7 +12401,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4484 "MachineIndependent/glslang.y" +#line 4406 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } @@ -12409,7 +12409,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4487 "MachineIndependent/glslang.y" +#line 4409 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } @@ -12641,5 +12641,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4492 "MachineIndependent/glslang.y" +#line 4413 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/glslang_tab.cpp.h b/glslang/MachineIndependent/glslang_tab.cpp.h index 39455f276d..d6484924d6 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp.h +++ b/glslang/MachineIndependent/glslang_tab.cpp.h @@ -524,7 +524,7 @@ extern int yydebug; #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED union YYSTYPE { -#line 97 "MachineIndependent/glslang.y" +#line 72 "MachineIndependent/glslang.y" struct { glslang::TSourceLoc loc; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index e037e63f0b..c22cb2b43e 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -573,6 +573,9 @@ class TShader { void setEnvInputVulkanRulesRelaxed() { environment.input.vulkanRulesRelaxed = true; } bool getEnvInputVulkanRulesRelaxed() const { return environment.input.vulkanRulesRelaxed; } + void setCompileOnly() { compileOnly = true; } + bool getCompileOnly() const { return compileOnly; } + // Interface to #include handlers. // // To support #include, a client of Glslang does the following: @@ -722,6 +725,9 @@ class TShader { TEnvironment environment; + // Indicates this shader is meant to be used without linking + bool compileOnly = false; + friend class TProgram; private: diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index b429ff77e6..3cce445630 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -65,6 +65,7 @@ std::string FileNameAsCustomTestSuffixIoMap( } using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam>; +using CompileVulkanToSpirvTestNoLink = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam>; using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam>; @@ -92,6 +93,16 @@ TEST_P(CompileVulkanToSpirvTest, FromFile) Target::Spv); } +// Compiling GLSL to SPIR-V under Vulkan semantics without linking. Expected to successfully generate SPIR-V. +TEST_P(CompileVulkanToSpirvTestNoLink, FromFile) +{ + options().compileOnly = true; + // NOTE: Vulkan 1.3 is currently required to use the linkage capability + // TODO(ncesario) make sure this is actually necessary + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, + glslang::EShTargetVulkan_1_3, glslang::EShTargetSpv_1_0, Target::Spv); +} + TEST_P(CompileVulkanToSpirvDeadCodeElimTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), @@ -534,6 +545,14 @@ INSTANTIATE_TEST_SUITE_P( FileNameAsCustomTestSuffix ); +INSTANTIATE_TEST_SUITE_P( + Glsl, CompileVulkanToSpirvTestNoLink, + ::testing::ValuesIn(std::vector({ + "spv.exportFunctions.comp", + })), + FileNameAsCustomTestSuffix +); + // Cases with deliberately unreachable code. // By default the compiler will aggressively eliminate // unreachable merges and continues. diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 629179bdac..df3433bfce 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -248,36 +248,58 @@ class GlslangTest : public GT { } } + if (options().compileOnly) + shader.setCompileOnly(); + bool success = compile( &shader, code, entryPointName, controls, nullptr, &shaderName); glslang::TProgram program; - program.addShader(&shader); - success &= program.link(controls); - if (success) - program.mapIO(); - - if (success && (controls & EShMsgSpvRules)) { - spv::SpvBuildLogger logger; - std::vector spirv_binary; + spv::SpvBuildLogger logger; + std::vector spirv_binary; + + if (!options().compileOnly) { + program.addShader(&shader); + success &= program.link(controls); + if (success) + program.mapIO(); + + if (success && (controls & EShMsgSpvRules)) { + options().disableOptimizer = !enableOptimizer; + options().generateDebugInfo = enableDebug; + options().emitNonSemanticShaderDebugInfo = enableNonSemanticShaderDebugInfo; + options().emitNonSemanticShaderDebugSource = enableNonSemanticShaderDebugInfo; + glslang::GlslangToSpv(*program.getIntermediate(stage), spirv_binary, &logger, &options()); + } else { + return {{ + {shaderName, shader.getInfoLog(), shader.getInfoDebugLog()}, + }, + program.getInfoLog(), + program.getInfoDebugLog(), + true, + "", + ""}; + } + } else { options().disableOptimizer = !enableOptimizer; options().generateDebugInfo = enableDebug; options().emitNonSemanticShaderDebugInfo = enableNonSemanticShaderDebugInfo; options().emitNonSemanticShaderDebugSource = enableNonSemanticShaderDebugInfo; - glslang::GlslangToSpv(*program.getIntermediate(stage), - spirv_binary, &logger, &options()); - - std::ostringstream disassembly_stream; - spv::Parameterize(); - spv::Disassemble(disassembly_stream, spirv_binary); - bool validation_result = !options().validate || logger.getAllMessages().empty(); - return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, - program.getInfoLog(), program.getInfoDebugLog(), - validation_result, logger.getAllMessages(), disassembly_stream.str()}; - } else { - return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, - program.getInfoLog(), program.getInfoDebugLog(), true, "", ""}; + glslang::GlslangToSpv(*shader.getIntermediate(), spirv_binary, &logger, &options()); } + + std::ostringstream disassembly_stream; + spv::Parameterize(); + spv::Disassemble(disassembly_stream, spirv_binary); + bool validation_result = !options().validate || logger.getAllMessages().empty(); + return {{ + {shaderName, shader.getInfoLog(), shader.getInfoDebugLog()}, + }, + program.getInfoLog(), + program.getInfoDebugLog(), + validation_result, + logger.getAllMessages(), + disassembly_stream.str()}; } // Compiles and links the given source |code| of the given shader From 2bfacdac91d5d9ba6bab7b4da52eb79c2300cd45 Mon Sep 17 00:00:00 2001 From: chirsz-ever Date: Fri, 22 Sep 2023 16:49:37 +0800 Subject: [PATCH 288/594] Improve preprocessor ouput format Modify preprocessor.simple.vert to test spaces before parenthesis. --- Test/baseResults/hlsl.pp.expand.frag.out | 2 +- .../preprocessor.edge_cases.vert.out | 2 +- .../preprocessor.extensions.vert.out | 2 +- .../preprocessor.function_macro.vert.out | 4 +-- Test/baseResults/preprocessor.line.frag.out | 2 +- Test/baseResults/preprocessor.line.vert.out | 2 +- Test/baseResults/preprocessor.pragma.vert.out | 2 +- Test/baseResults/preprocessor.simple.vert.out | 25 +++++++++++------- ...essor.success_if_parse_would_fail.vert.out | 2 +- Test/preprocessor.simple.vert | 5 ++++ glslang/MachineIndependent/ShaderLang.cpp | 26 ++++++++++++++----- 11 files changed, 48 insertions(+), 26 deletions(-) diff --git a/Test/baseResults/hlsl.pp.expand.frag.out b/Test/baseResults/hlsl.pp.expand.frag.out index adfe02c12e..97df910ad0 100644 --- a/Test/baseResults/hlsl.pp.expand.frag.out +++ b/Test/baseResults/hlsl.pp.expand.frag.out @@ -9,7 +9,7 @@ struct A float4 a; float4 b; float4 c = { 1, 2, 3, 4 }; - float4 d = {({ {(({ 1, 2, 3, 4 }))} })}, { { 1, 2, 3, 4 } }; + float4 d = { ({ { ( ({ 1, 2, 3, 4 })) } }) }, { { 1, 2, 3, 4 } }; }; void main() diff --git a/Test/baseResults/preprocessor.edge_cases.vert.out b/Test/baseResults/preprocessor.edge_cases.vert.out index 17d9049bfd..6a4ad4a7e1 100644 --- a/Test/baseResults/preprocessor.edge_cases.vert.out +++ b/Test/baseResults/preprocessor.edge_cases.vert.out @@ -10,7 +10,7 @@ -void main(){ +void main() { gl_Position = vec4(3 + 2 + 2 * 4 + 2 + 3 * 2); } diff --git a/Test/baseResults/preprocessor.extensions.vert.out b/Test/baseResults/preprocessor.extensions.vert.out index 57d2e199fb..59c6e8567f 100644 --- a/Test/baseResults/preprocessor.extensions.vert.out +++ b/Test/baseResults/preprocessor.extensions.vert.out @@ -7,6 +7,6 @@ #extension unknown_extension : require -int main(){ +int main() { } diff --git a/Test/baseResults/preprocessor.function_macro.vert.out b/Test/baseResults/preprocessor.function_macro.vert.out index 010251e0cd..84b0a87276 100644 --- a/Test/baseResults/preprocessor.function_macro.vert.out +++ b/Test/baseResults/preprocessor.function_macro.vert.out @@ -15,10 +15,10 @@ -int main(){ +int main() { gl_Position = vec4(3 + 1, 3 + 4, 3 + 1); gl_Position = vec4(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 + 11 + 12); gl_Position = vec4(4 + 3 + 3); - gl_Position = 4 + 3 + F . a; + gl_Position = 4 + 3 + F.a; } diff --git a/Test/baseResults/preprocessor.line.frag.out b/Test/baseResults/preprocessor.line.frag.out index 3e2206f888..76877943ca 100644 --- a/Test/baseResults/preprocessor.line.frag.out +++ b/Test/baseResults/preprocessor.line.frag.out @@ -1,5 +1,5 @@ #version 310 es #line 1 2 #pragma something -void main(){ } +void main() { } diff --git a/Test/baseResults/preprocessor.line.vert.out b/Test/baseResults/preprocessor.line.vert.out index 2bf0903277..fbd851cb2d 100644 --- a/Test/baseResults/preprocessor.line.vert.out +++ b/Test/baseResults/preprocessor.line.vert.out @@ -23,7 +23,7 @@ #line 8 -void main(){ +void main() { gl_Position = vec4(10); } diff --git a/Test/baseResults/preprocessor.pragma.vert.out b/Test/baseResults/preprocessor.pragma.vert.out index ebe1e4a749..8fa3d338da 100644 --- a/Test/baseResults/preprocessor.pragma.vert.out +++ b/Test/baseResults/preprocessor.pragma.vert.out @@ -9,6 +9,6 @@ #pragma once -int main(){ +int main() { } diff --git a/Test/baseResults/preprocessor.simple.vert.out b/Test/baseResults/preprocessor.simple.vert.out index 57b020c676..b54e0a0042 100644 --- a/Test/baseResults/preprocessor.simple.vert.out +++ b/Test/baseResults/preprocessor.simple.vert.out @@ -11,15 +11,15 @@ - float fn(float x){ return x + 4.0;} + float fn(float x) { return x + 4.0; } -int main(){ +int main() { gl_Position = vec4(1); gl_Position = clamp(1, 2, 3); gl_Position = vec4(1); gl_Position = vec4(1, 2); gl_Position = vec4(fn(3)); - []. ++ -- + [].++ -- + - * % / - ! ~ << >> < > <= >= == != @@ -46,16 +46,21 @@ struct S { +void bar(int x) { } + void foo() { S s; - s . member2 + s . member1; - s . member3 . zyx; - s . member2 . xxyz; - s . member2 . yyz; - s . member2 . xxyz(); - s . member2 . yzy; - vec3 a = vec3(0);vec3 b = a . zxyz;vec3 b = a . xxyz;vec3 b = a . yyz;vec3 b = a . xxyz();vec3 b = a . yzy;vec3 b = a . z; + s.member2 + s.member1; + s.member3.zyx; + s.member2.xxyz; + s.member2.yyz; + s.member2.xxyz(); + s.member2.yzy; + for (int i = 0; i < 100; i = i + 1) { + bar(i) + } + vec3 a = vec3(0); vec3 b = a.zxyz; vec3 b = a.xxyz; vec3 b = a.yyz; vec3 b = a.xxyz(); vec3 b = a.yzy; vec3 b = a.z; yyz; diff --git a/Test/baseResults/preprocessor.success_if_parse_would_fail.vert.out b/Test/baseResults/preprocessor.success_if_parse_would_fail.vert.out index 624813a01d..ed1ad0c0ee 100644 --- a/Test/baseResults/preprocessor.success_if_parse_would_fail.vert.out +++ b/Test/baseResults/preprocessor.success_if_parse_would_fail.vert.out @@ -1,4 +1,4 @@ -int x(){ +int x() { something that shouldnt compile; } diff --git a/Test/preprocessor.simple.vert b/Test/preprocessor.simple.vert index 788df76ce5..6c44850086 100644 --- a/Test/preprocessor.simple.vert +++ b/Test/preprocessor.simple.vert @@ -46,6 +46,8 @@ struct S { vec3 b = a.yzy; \ vec3 b = a.z; +void bar(int x) {} + void foo() { S s; @@ -55,6 +57,9 @@ void foo() s.member2.yzy(); s.member2.xyz(); s.member2.yzy; + for(int i = 0;i < 100; i = i + 1) { + bar (i) + } FUN_MAC() yzy diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 2c77e2fd2e..9a42acae91 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1068,8 +1068,8 @@ struct DoPreprocessing { EShOptimizationLevel, EShMessages) { // This is a list of tokens that do not require a space before or after. - static const std::string unNeededSpaceTokens = ";()[]"; - static const std::string noSpaceBeforeTokens = ","; + static const std::string noNeededSpaceBeforeTokens = ";)[].,"; + static const std::string noNeededSpaceAfterTokens = ".(["; glslang::TPpToken ppToken; parseContext.setScanner(&input); @@ -1142,6 +1142,7 @@ struct DoPreprocessing { }); int lastToken = EndOfInput; // lastToken records the last token processed. + std::string lastTokenName; do { int token = ppContext.tokenize(ppToken); if (token == EndOfInput) @@ -1160,12 +1161,23 @@ struct DoPreprocessing { // Output a space in between tokens, but not at the start of a line, // and also not around special tokens. This helps with readability // and consistency. - if (!isNewString && !isNewLine && lastToken != EndOfInput && - (unNeededSpaceTokens.find((char)token) == std::string::npos) && - (unNeededSpaceTokens.find((char)lastToken) == std::string::npos) && - (noSpaceBeforeTokens.find((char)token) == std::string::npos)) { - outputBuffer += ' '; + if (!isNewString && !isNewLine && lastToken != EndOfInput) { + // left parenthesis need a leading space, except it is in a function-call-like context. + // examples: `for (xxx)`, `a * (b + c)`, `vec(2.0)`, `foo(x, y, z)` + if (token == '(') { + if (lastToken != PpAtomIdentifier || + lastTokenName == "if" || + lastTokenName == "for" || + lastTokenName == "while" || + lastTokenName == "switch") + outputBuffer += ' '; + } else if ((noNeededSpaceBeforeTokens.find((char)token) == std::string::npos) && + (noNeededSpaceAfterTokens.find((char)lastToken) == std::string::npos)) { + outputBuffer += ' '; + } } + if (token == PpAtomIdentifier) + lastTokenName = ppToken.name; lastToken = token; if (token == PpAtomConstString) outputBuffer += "\""; From 90f7810584a56713ee338a305aa50b6cc925a107 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Mon, 25 Sep 2023 11:30:52 -0600 Subject: [PATCH 289/594] Add ASAN integration testing Add jobs for testing with -fsanitize=address and -fsanitize=thread. --- .github/workflows/continuous_integration.yml | 53 ++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 73446847b2..090fbaa4e4 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -64,6 +64,59 @@ jobs: ctest --output-on-failure && cd ../Test && ./runtests + linux-asan: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + compiler: [{cc: gcc, cxx: g++}] + cmake_build_type: [Debug] + flags: ['-fsanitize=address', '-fsanitize=thread'] + steps: + - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + with: + python-version: '3.7' + - name: Setup ccache + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + with: + key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + CFLAGS: ${{matrix.flags}} + CXXFLAGS: ${{matrix.flags}} + LDFLAGS: ${{matrix.flags}} + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install + - name: Test + run: | + cd build + ctest --output-on-failure && + cd ../Test && ./runtests + # Ensure we can compile/run on an older distro linux_min: name: Linux Backcompat From b0ed4788858157e271779a7726cccc1149a05407 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 26 Sep 2023 11:50:10 -0600 Subject: [PATCH 290/594] Fix race condition identified by TSAN Guard global variables 'CompileFailed' and 'LinkFailed' in the StandAlone application with atomics. --- StandAlone/StandAlone.cpp | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 8833e38eb2..b31a644941 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -51,15 +51,16 @@ #include "../SPIRV/doc.h" #include "../SPIRV/disassemble.h" -#include -#include +#include +#include #include #include -#include +#include +#include #include #include -#include #include +#include #include "../glslang/OSDependent/osinclude.h" @@ -144,8 +145,9 @@ void FreeFileData(char* data); void InfoLogMsg(const char* msg, const char* name, const int num); // Globally track if any compile or link failure. -bool CompileFailed = false; -bool LinkFailed = false; +std::atomic CompileFailed{0}; +std::atomic LinkFailed{0}; +std::atomic CompileOrLinkFailed{0}; // array of unique places to leave the shader names and infologs for the asynchronous compiles std::vector> WorkItems; @@ -1166,6 +1168,7 @@ void CompileShaders(glslang::TWorklist& worklist) if (Options & EOptionDebug) Error("cannot generate debug information unless linking to generate code"); + // NOTE: TWorkList::remove is thread-safe glslang::TWorkItem* workItem; if (Options & EOptionStdin) { if (worklist.remove(workItem)) { @@ -1442,7 +1445,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) if (shader->preprocess(GetResources(), defaultVersion, ENoProfile, false, false, messages, &str, includer)) { PutsIfNonEmpty(str.c_str()); } else { - CompileFailed = true; + CompileFailed = 1; } StderrIfNonEmpty(shader->getInfoLog()); StderrIfNonEmpty(shader->getInfoDebugLog()); @@ -1450,7 +1453,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } if (! shader->parse(GetResources(), defaultVersion, false, messages, includer)) - CompileFailed = true; + CompileFailed = 1; if (!compileOnly) program.addShader(shader); @@ -1496,7 +1499,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) // Dump SPIR-V if (Options & EOptionSpv) { - if (CompileFailed || LinkFailed) + CompileOrLinkFailed.fetch_or(CompileFailed); + CompileOrLinkFailed.fetch_or(LinkFailed); + if (static_cast(CompileOrLinkFailed.load())) printf("SPIR-V is not generated for failed compile or link\n"); else { std::vector intermediates; @@ -1555,7 +1560,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } } - if (depencyFileName && !(CompileFailed || LinkFailed)) { + CompileOrLinkFailed.fetch_or(CompileFailed); + CompileOrLinkFailed.fetch_or(LinkFailed); + if (depencyFileName && !static_cast(CompileOrLinkFailed.load())) { std::set includedFiles = includer.getIncludedFiles(); sources.insert(sources.end(), includedFiles.begin(), includedFiles.end()); @@ -1731,9 +1738,9 @@ int singleMain() ShFinalize(); } - if (CompileFailed) + if (CompileFailed.load()) return EFailCompile; - if (LinkFailed) + if (LinkFailed.load()) return EFailLink; return 0; From 3359d240cf1f942b0d7a05c77874dfc1f70c3a2c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 29 Sep 2023 22:39:58 +0000 Subject: [PATCH 291/594] Bump actions/checkout from 4.0.0 to 4.1.0 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.0.0 to 4.1.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/3df4ab11eba7bda6032a0b82a6bb43b11571feac...8ade135a41bc03ea155e62e844d188df1ea18608) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 14 +++++++------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 835c1d9c00..c433ad6716 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -47,7 +47,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -127,7 +127,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -200,7 +200,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 090fbaa4e4..8c136d96a2 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,7 +23,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -73,7 +73,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -122,7 +122,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -171,7 +171,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -215,7 +215,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: @@ -256,7 +256,7 @@ jobs: # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android NDK: [23.2.8568313, 25.2.9519653] steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -285,7 +285,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 87bd834bb4..3658069d86 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 + uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 with: persist-credentials: false From 95c29a9a786389e9165f6d2f2bd5e74b5ad6ff18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 16:36:43 +0000 Subject: [PATCH 292/594] Bump lukka/get-cmake from 3.27.4 to 3.27.6 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.27.4 to 3.27.6. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/4dcd3eb73017c61159eb130746fbca35d78a3d5f...aa2e3cb80fe066994ceef094c573ed89500610e6) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index c433ad6716..228fe6014f 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -48,7 +48,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -128,7 +128,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -201,7 +201,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 8c136d96a2..9a3a96a9a8 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -24,7 +24,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -74,7 +74,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -126,7 +126,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -175,7 +175,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - name: Install GoogleTest run: | # check out pre-breakage version of googletest; can be deleted when @@ -216,7 +216,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -260,7 +260,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -289,7 +289,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4dcd3eb73017c61159eb130746fbca35d78a3d5f # v3.27.4 + - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: From 86151772b2efd112610f254e51a7073b6ae7c73b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Oct 2023 06:35:25 +0000 Subject: [PATCH 293/594] Bump github/codeql-action from 2.21.7 to 2.21.9 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.21.7 to 2.21.9. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/04daf014b50eaf774287bf3f0f1869d4b4c4b913...ddccb873888234080b77e9bc2d4764d5ccaaccf9) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3658069d86..7cc4e59287 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@04daf014b50eaf774287bf3f0f1869d4b4c4b913 # v2.21.7 + uses: github/codeql-action/upload-sarif@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9 with: sarif_file: results.sarif From 3f0213266832c4a8e4f5bb61322f5c7cb98d3c09 Mon Sep 17 00:00:00 2001 From: alelenv <40001162+alelenv@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:07:50 -0700 Subject: [PATCH 294/594] Add support for GL_NV_displacement_micromap. * Add support for GL_NV_displacement_micromap. * Update known_good for spirv-headers and spirv-tools. --- SPIRV/GLSL.ext.NV.h | 3 + SPIRV/GlslangToSpv.cpp | 46 ++++++- SPIRV/doc.cpp | 25 +++- SPIRV/spirv.hpp | 8 ++ Test/baseResults/spv.nv.dmm-allops.comp.out | 96 ++++++++++++++ Test/baseResults/spv.nv.dmm-allops.mesh.out | 95 ++++++++++++++ Test/baseResults/spv.nv.dmm-allops.rahit.out | 126 +++++++++++++++++++ Test/baseResults/spv.nv.dmm-allops.rchit.out | 126 +++++++++++++++++++ Test/baseResults/spv.nv.dmm-allops.rgen.out | 108 ++++++++++++++++ Test/spv.nv.dmm-allops.comp | 19 +++ Test/spv.nv.dmm-allops.mesh | 20 +++ Test/spv.nv.dmm-allops.rahit | 26 ++++ Test/spv.nv.dmm-allops.rchit | 26 ++++ Test/spv.nv.dmm-allops.rgen | 24 ++++ glslang/Include/BaseTypes.h | 9 ++ glslang/Include/intermediate.h | 2 + glslang/MachineIndependent/Initialize.cpp | 55 ++++++++ glslang/MachineIndependent/Scan.cpp | 8 +- glslang/MachineIndependent/Versions.cpp | 3 +- glslang/MachineIndependent/Versions.h | 9 +- glslang/MachineIndependent/intermOut.cpp | 2 + gtests/Spv.FromFile.cpp | 9 ++ known_good.json | 4 +- 23 files changed, 838 insertions(+), 11 deletions(-) create mode 100644 Test/baseResults/spv.nv.dmm-allops.comp.out create mode 100644 Test/baseResults/spv.nv.dmm-allops.mesh.out create mode 100644 Test/baseResults/spv.nv.dmm-allops.rahit.out create mode 100644 Test/baseResults/spv.nv.dmm-allops.rchit.out create mode 100644 Test/baseResults/spv.nv.dmm-allops.rgen.out create mode 100644 Test/spv.nv.dmm-allops.comp create mode 100644 Test/spv.nv.dmm-allops.mesh create mode 100644 Test/spv.nv.dmm-allops.rahit create mode 100644 Test/spv.nv.dmm-allops.rchit create mode 100644 Test/spv.nv.dmm-allops.rgen diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h index 5b0f7eb17e..9889bc9f9b 100644 --- a/SPIRV/GLSL.ext.NV.h +++ b/SPIRV/GLSL.ext.NV.h @@ -84,4 +84,7 @@ const char* const E_SPV_NV_shader_sm_builtins = "SPV_NV_shader_sm_builtins"; //SPV_NV_shader_execution_reorder const char* const E_SPV_NV_shader_invocation_reorder = "SPV_NV_shader_invocation_reorder"; +//SPV_NV_displacement_micromap +const char* const E_SPV_NV_displacement_micromap = "SPV_NV_displacement_micromap"; + #endif // #ifndef GLSLextNV_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 79bcd139ea..6eae76d689 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1009,6 +1009,22 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI builder.addExtension(spv::E_SPV_NV_ray_tracing_motion_blur); builder.addCapability(spv::CapabilityRayTracingMotionBlurNV); return spv::BuiltInCurrentRayTimeNV; + case glslang::EbvMicroTrianglePositionNV: + builder.addCapability(spv::CapabilityRayTracingDisplacementMicromapNV); + builder.addExtension("SPV_NV_displacement_micromap"); + return spv::BuiltInHitMicroTriangleVertexPositionsNV; + case glslang::EbvMicroTriangleBaryNV: + builder.addCapability(spv::CapabilityRayTracingDisplacementMicromapNV); + builder.addExtension("SPV_NV_displacement_micromap"); + return spv::BuiltInHitMicroTriangleVertexBarycentricsNV; + case glslang::EbvHitKindFrontFacingMicroTriangleNV: + builder.addCapability(spv::CapabilityRayTracingDisplacementMicromapNV); + builder.addExtension("SPV_NV_displacement_micromap"); + return spv::BuiltInHitKindFrontFacingMicroTriangleNV; + case glslang::EbvHitKindBackFacingMicroTriangleNV: + builder.addCapability(spv::CapabilityRayTracingDisplacementMicromapNV); + builder.addExtension("SPV_NV_displacement_micromap"); + return spv::BuiltInHitKindBackFacingMicroTriangleNV; // barycentrics case glslang::EbvBaryCoordNV: @@ -3303,6 +3319,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.addExtension(spv::E_SPV_QCOM_image_processing); break; + case glslang::EOpFetchMicroTriangleVertexPositionNV: + case glslang::EOpFetchMicroTriangleVertexBarycentricNV: + builder.addExtension(spv::E_SPV_NV_displacement_micromap); + builder.addCapability(spv::CapabilityDisplacementMicromapNV); + break; + case glslang::EOpDebugPrintf: noReturnValue = true; break; @@ -3667,7 +3689,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt spv::Id typeId = builder.makeArrayType(builder.makeVectorType(builder.makeFloatType(32), 3), builder.makeUintConstant(3), 0); // do the op - spv::Id result = builder.createOp(spv::OpRayQueryGetIntersectionTriangleVertexPositionsKHR, typeId, idImmOps); + + spv::Op spvOp = spv::OpRayQueryGetIntersectionTriangleVertexPositionsKHR; + + spv::Id result = builder.createOp(spvOp, typeId, idImmOps); // store the result to the pointer (out param 'm') builder.createStore(result, operands[2]); result = 0; @@ -7199,6 +7224,14 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe unaryOp = spv::OpHitObjectGetShaderRecordBufferHandleNV; break; + case glslang::EOpFetchMicroTriangleVertexPositionNV: + unaryOp = spv::OpFetchMicroTriangleVertexPositionNV; + break; + + case glslang::EOpFetchMicroTriangleVertexBarycentricNV: + unaryOp = spv::OpFetchMicroTriangleVertexBarycentricNV; + break; + case glslang::EOpCopyObject: unaryOp = spv::OpCopyObject; break; @@ -9083,6 +9116,17 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: addImageProcessingQCOMDecoration(operands[0], spv::DecorationBlockMatchTextureQCOM); addImageProcessingQCOMDecoration(operands[2], spv::DecorationBlockMatchTextureQCOM); break; + + case glslang::EOpFetchMicroTriangleVertexBarycentricNV: + typeId = builder.makeVectorType(builder.makeFloatType(32), 2); + opCode = spv::OpFetchMicroTriangleVertexBarycentricNV; + break; + + case glslang::EOpFetchMicroTriangleVertexPositionNV: + typeId = builder.makeVectorType(builder.makeFloatType(32), 3); + opCode = spv::OpFetchMicroTriangleVertexPositionNV; + break; + default: return 0; } diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 417e6e08a1..53ce9e152b 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -414,6 +414,10 @@ const char* BuiltInString(int builtIn) case BuiltInRayTmaxKHR: return "RayTmaxKHR"; case BuiltInCullMaskKHR: return "CullMaskKHR"; case BuiltInHitTriangleVertexPositionsKHR: return "HitTriangleVertexPositionsKHR"; + case BuiltInHitMicroTriangleVertexPositionsNV: return "HitMicroTriangleVertexPositionsNV"; + case BuiltInHitMicroTriangleVertexBarycentricsNV: return "HitMicroTriangleVertexBarycentricsNV"; + case BuiltInHitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV"; + case BuiltInHitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV"; case BuiltInInstanceCustomIndexKHR: return "InstanceCustomIndexKHR"; case BuiltInRayGeometryIndexKHR: return "RayGeometryIndexKHR"; case BuiltInObjectToWorldKHR: return "ObjectToWorldKHR"; @@ -977,6 +981,8 @@ const char* CapabilityString(int info) case CapabilityRayTracingProvisionalKHR: return "RayTracingProvisionalKHR"; case CapabilityRayTraversalPrimitiveCullingKHR: return "RayTraversalPrimitiveCullingKHR"; case CapabilityRayTracingPositionFetchKHR: return "RayTracingPositionFetchKHR"; + case CapabilityDisplacementMicromapNV: return "DisplacementMicromapNV"; + case CapabilityRayTracingDisplacementMicromapNV: return "CapabilityRayTracingDisplacementMicromapNV"; case CapabilityRayQueryPositionFetchKHR: return "RayQueryPositionFetchKHR"; case CapabilityComputeDerivativeGroupQuadsNV: return "ComputeDerivativeGroupQuadsNV"; case CapabilityComputeDerivativeGroupLinearNV: return "ComputeDerivativeGroupLinearNV"; @@ -1542,6 +1548,9 @@ const char* OpcodeString(int op) case OpHitObjectGetShaderBindingTableRecordIndexNV: return "OpHitObjectGetShaderBindingTableRecordIndexNV"; case OpHitObjectGetShaderRecordBufferHandleNV: return "OpHitObjectGetShaderRecordBufferHandleNV"; + case OpFetchMicroTriangleVertexBarycentricNV: return "OpFetchMicroTriangleVertexBarycentricNV"; + case OpFetchMicroTriangleVertexPositionNV: return "OpFetchMicroTriangleVertexPositionNV"; + case OpColorAttachmentReadEXT: return "OpColorAttachmentReadEXT"; case OpDepthAttachmentReadEXT: return "OpDepthAttachmentReadEXT"; case OpStencilAttachmentReadEXT: return "OpStencilAttachmentReadEXT"; @@ -3082,7 +3091,7 @@ void Parameterize() InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'RayQuery'"); InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].operands.push(OperandId, "'Committed'"); - InstructionDesc[OpRayQueryGetIntersectionWorldToObjectKHR].setResultAndType(true, true); + InstructionDesc[OpRayQueryGetIntersectionTriangleVertexPositionsKHR].setResultAndType(true, true); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Sampled Image'"); InstructionDesc[OpImageSampleFootprintNV].operands.push(OperandId, "'Coordinate'"); @@ -3348,6 +3357,20 @@ void Parameterize() InstructionDesc[OpHitObjectTraceRayMotionNV].operands.push(OperandId, "'Payload'"); InstructionDesc[OpHitObjectTraceRayMotionNV].setResultAndType(false, false); + InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Instance ID'"); + InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Geometry Index'"); + InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Primitive Index'"); + InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].operands.push(OperandId, "'Barycentrics'"); + InstructionDesc[OpFetchMicroTriangleVertexBarycentricNV].setResultAndType(true, true); + + InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Acceleration Structure'"); + InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Instance ID'"); + InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Geometry Index'"); + InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Primitive Index'"); + InstructionDesc[OpFetchMicroTriangleVertexPositionNV].operands.push(OperandId, "'Barycentrics'"); + InstructionDesc[OpFetchMicroTriangleVertexPositionNV].setResultAndType(true, true); + InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Attachment'"); InstructionDesc[OpColorAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); InstructionDesc[OpStencilAttachmentReadEXT].operands.push(OperandId, "'Sample'", true); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index bdc96fa399..02c1eded73 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -720,6 +720,10 @@ enum BuiltIn { BuiltInHitKindNV = 5333, BuiltInCurrentRayTimeNV = 5334, BuiltInHitTriangleVertexPositionsKHR = 5335, + BuiltInHitMicroTriangleVertexPositionsNV = 5337, + BuiltInHitMicroTriangleVertexBarycentricsNV = 5344, + BuiltInHitKindFrontFacingMicroTriangleNV = 5405, + BuiltInHitKindBackFacingMicroTriangleNV = 5406, BuiltInIncomingRayFlagsKHR = 5351, BuiltInIncomingRayFlagsNV = 5351, BuiltInRayGeometryIndexKHR = 5352, @@ -1094,6 +1098,8 @@ enum Capability { CapabilityFragmentShaderPixelInterlockEXT = 5378, CapabilityDemoteToHelperInvocation = 5379, CapabilityDemoteToHelperInvocationEXT = 5379, + CapabilityDisplacementMicromapNV = 5380, + CapabilityRayTracingDisplacementMicromapNV = 5409, CapabilityRayTracingOpacityMicromapEXT = 5381, CapabilityShaderInvocationReorderNV = 5383, CapabilityBindlessTextureNV = 5390, @@ -1736,6 +1742,8 @@ enum Op { OpSetMeshOutputsEXT = 5295, OpGroupNonUniformPartitionNV = 5296, OpWritePackedPrimitiveIndices4x8NV = 5299, + OpFetchMicroTriangleVertexPositionNV = 5300, + OpFetchMicroTriangleVertexBarycentricNV = 5301, OpReportIntersectionKHR = 5334, OpReportIntersectionNV = 5334, OpIgnoreIntersectionNV = 5335, diff --git a/Test/baseResults/spv.nv.dmm-allops.comp.out b/Test/baseResults/spv.nv.dmm-allops.comp.out new file mode 100644 index 0000000000..b98071425a --- /dev/null +++ b/Test/baseResults/spv.nv.dmm-allops.comp.out @@ -0,0 +1,96 @@ +spv.nv.dmm-allops.comp +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 59 + + Capability Shader + Capability RayQueryKHR + Capability DisplacementMicromapNV + Extension "SPV_KHR_ray_query" + Extension "SPV_NV_displacement_micromap" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" 11 16 + ExecutionMode 4 LocalSize 16 1 1 + Source GLSL 460 + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_NV_displacement_micromap" + Name 4 "main" + Name 9 "block" + MemberName 9(block) 0 "op_pos" + MemberName 9(block) 1 "op_bary" + Name 11 "" + Name 16 "as" + MemberDecorate 9(block) 0 Offset 0 + MemberDecorate 9(block) 1 Offset 16 + Decorate 9(block) Block + Decorate 11 DescriptorSet 0 + Decorate 11 Binding 0 + Decorate 16(as) DescriptorSet 0 + Decorate 16(as) Binding 1 + Decorate 58 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeVector 6(float) 2 + 9(block): TypeStruct 7(fvec3) 8(fvec2) + 10: TypePointer StorageBuffer 9(block) + 11: 10(ptr) Variable StorageBuffer + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: TypeAccelerationStructureKHR + 15: TypePointer UniformConstant 14 + 16(as): 15(ptr) Variable UniformConstant + 18: 12(int) Constant 1 + 19: TypeVector 12(int) 2 + 20: 19(ivec2) ConstantComposite 13 13 + 22: TypePointer StorageBuffer 7(fvec3) + 25: 19(ivec2) ConstantComposite 13 18 + 32: 19(ivec2) ConstantComposite 18 13 + 40: TypePointer StorageBuffer 8(fvec2) + 54: TypeInt 32 0 + 55: TypeVector 54(int) 3 + 56: 54(int) Constant 16 + 57: 54(int) Constant 1 + 58: 55(ivec3) ConstantComposite 56 57 57 + 4(main): 2 Function None 3 + 5: Label + 17: 14 Load 16(as) + 21: 7(fvec3) FetchMicroTriangleVertexPositionNV 17 18 18 18 20 + 23: 22(ptr) AccessChain 11 13 + Store 23 21 + 24: 14 Load 16(as) + 26: 7(fvec3) FetchMicroTriangleVertexPositionNV 24 18 18 18 25 + 27: 22(ptr) AccessChain 11 13 + 28: 7(fvec3) Load 27 + 29: 7(fvec3) FAdd 28 26 + 30: 22(ptr) AccessChain 11 13 + Store 30 29 + 31: 14 Load 16(as) + 33: 7(fvec3) FetchMicroTriangleVertexPositionNV 31 18 18 18 32 + 34: 22(ptr) AccessChain 11 13 + 35: 7(fvec3) Load 34 + 36: 7(fvec3) FAdd 35 33 + 37: 22(ptr) AccessChain 11 13 + Store 37 36 + 38: 14 Load 16(as) + 39: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 38 18 18 18 20 + 41: 40(ptr) AccessChain 11 18 + Store 41 39 + 42: 14 Load 16(as) + 43: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 42 18 18 18 25 + 44: 40(ptr) AccessChain 11 18 + 45: 8(fvec2) Load 44 + 46: 8(fvec2) FAdd 45 43 + 47: 40(ptr) AccessChain 11 18 + Store 47 46 + 48: 14 Load 16(as) + 49: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 48 18 18 18 32 + 50: 40(ptr) AccessChain 11 18 + 51: 8(fvec2) Load 50 + 52: 8(fvec2) FAdd 51 49 + 53: 40(ptr) AccessChain 11 18 + Store 53 52 + Return + FunctionEnd diff --git a/Test/baseResults/spv.nv.dmm-allops.mesh.out b/Test/baseResults/spv.nv.dmm-allops.mesh.out new file mode 100644 index 0000000000..9f626c212c --- /dev/null +++ b/Test/baseResults/spv.nv.dmm-allops.mesh.out @@ -0,0 +1,95 @@ +spv.nv.dmm-allops.mesh +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 54 + + Capability RayQueryKHR + Capability MeshShadingNV + Capability DisplacementMicromapNV + Extension "SPV_KHR_ray_query" + Extension "SPV_NV_displacement_micromap" + Extension "SPV_NV_mesh_shader" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint MeshNV 4 "main" 11 16 + ExecutionMode 4 LocalSize 1 1 1 + ExecutionMode 4 OutputVertices 8 + ExecutionMode 4 OutputPrimitivesNV 16 + ExecutionMode 4 OutputTrianglesNV + Source GLSL 460 + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_NV_displacement_micromap" + SourceExtension "GL_NV_mesh_shader" + Name 4 "main" + Name 9 "block" + MemberName 9(block) 0 "op_pos" + MemberName 9(block) 1 "op_bary" + Name 11 "" + Name 16 "as" + MemberDecorate 9(block) 0 Offset 0 + MemberDecorate 9(block) 1 Offset 16 + Decorate 9(block) Block + Decorate 11 DescriptorSet 0 + Decorate 11 Binding 0 + Decorate 16(as) DescriptorSet 0 + Decorate 16(as) Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeVector 6(float) 2 + 9(block): TypeStruct 7(fvec3) 8(fvec2) + 10: TypePointer StorageBuffer 9(block) + 11: 10(ptr) Variable StorageBuffer + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: TypeAccelerationStructureKHR + 15: TypePointer UniformConstant 14 + 16(as): 15(ptr) Variable UniformConstant + 18: 12(int) Constant 1 + 19: TypeVector 12(int) 2 + 20: 19(ivec2) ConstantComposite 13 13 + 22: TypePointer StorageBuffer 7(fvec3) + 25: 19(ivec2) ConstantComposite 13 18 + 32: 19(ivec2) ConstantComposite 18 13 + 40: TypePointer StorageBuffer 8(fvec2) + 4(main): 2 Function None 3 + 5: Label + 17: 14 Load 16(as) + 21: 7(fvec3) FetchMicroTriangleVertexPositionNV 17 18 18 18 20 + 23: 22(ptr) AccessChain 11 13 + Store 23 21 + 24: 14 Load 16(as) + 26: 7(fvec3) FetchMicroTriangleVertexPositionNV 24 18 18 18 25 + 27: 22(ptr) AccessChain 11 13 + 28: 7(fvec3) Load 27 + 29: 7(fvec3) FAdd 28 26 + 30: 22(ptr) AccessChain 11 13 + Store 30 29 + 31: 14 Load 16(as) + 33: 7(fvec3) FetchMicroTriangleVertexPositionNV 31 18 18 18 32 + 34: 22(ptr) AccessChain 11 13 + 35: 7(fvec3) Load 34 + 36: 7(fvec3) FAdd 35 33 + 37: 22(ptr) AccessChain 11 13 + Store 37 36 + 38: 14 Load 16(as) + 39: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 38 18 18 18 20 + 41: 40(ptr) AccessChain 11 18 + Store 41 39 + 42: 14 Load 16(as) + 43: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 42 18 18 18 25 + 44: 40(ptr) AccessChain 11 18 + 45: 8(fvec2) Load 44 + 46: 8(fvec2) FAdd 45 43 + 47: 40(ptr) AccessChain 11 18 + Store 47 46 + 48: 14 Load 16(as) + 49: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 48 18 18 18 32 + 50: 40(ptr) AccessChain 11 18 + 51: 8(fvec2) Load 50 + 52: 8(fvec2) FAdd 51 49 + 53: 40(ptr) AccessChain 11 18 + Store 53 52 + Return + FunctionEnd diff --git a/Test/baseResults/spv.nv.dmm-allops.rahit.out b/Test/baseResults/spv.nv.dmm-allops.rahit.out new file mode 100644 index 0000000000..388ab04eaa --- /dev/null +++ b/Test/baseResults/spv.nv.dmm-allops.rahit.out @@ -0,0 +1,126 @@ +spv.nv.dmm-allops.rahit +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 77 + + Capability RayTracingKHR + Capability CapabilityRayTracingDisplacementMicromapNV + Extension "SPV_KHR_ray_tracing" + Extension "SPV_NV_displacement_micromap" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint AnyHitKHR 4 "main" 12 18 40 59 64 67 76 + Source GLSL 460 + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_NV_displacement_micromap" + Name 4 "main" + Name 10 "block" + MemberName 10(block) 0 "op_pos" + MemberName 10(block) 1 "op_bary" + MemberName 10(block) 2 "op_hit" + Name 12 "" + Name 18 "gl_HitMicroTriangleVertexPositionsNV" + Name 40 "gl_HitMicroTriangleVertexBarycentricsNV" + Name 59 "gl_HitKindEXT" + Name 64 "gl_HitKindFrontFacingMicroTriangleNV" + Name 67 "gl_HitKindBackFacingMicroTriangleNV" + Name 76 "as" + MemberDecorate 10(block) 0 Offset 0 + MemberDecorate 10(block) 1 Offset 16 + MemberDecorate 10(block) 2 Offset 24 + Decorate 10(block) Block + Decorate 12 DescriptorSet 0 + Decorate 12 Binding 0 + Decorate 18(gl_HitMicroTriangleVertexPositionsNV) BuiltIn HitMicroTriangleVertexPositionsNV + Decorate 40(gl_HitMicroTriangleVertexBarycentricsNV) BuiltIn HitMicroTriangleVertexBarycentricsNV + Decorate 59(gl_HitKindEXT) BuiltIn HitKindKHR + Decorate 64(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV + Decorate 67(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV + Decorate 76(as) DescriptorSet 0 + Decorate 76(as) Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeVector 6(float) 2 + 9: TypeInt 32 0 + 10(block): TypeStruct 7(fvec3) 8(fvec2) 9(int) + 11: TypePointer StorageBuffer 10(block) + 12: 11(ptr) Variable StorageBuffer + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 15: 9(int) Constant 3 + 16: TypeArray 7(fvec3) 15 + 17: TypePointer Input 16 +18(gl_HitMicroTriangleVertexPositionsNV): 17(ptr) Variable Input + 19: TypePointer Input 7(fvec3) + 22: TypePointer StorageBuffer 7(fvec3) + 24: 13(int) Constant 1 + 31: 13(int) Constant 2 + 38: TypeArray 8(fvec2) 15 + 39: TypePointer Input 38 +40(gl_HitMicroTriangleVertexBarycentricsNV): 39(ptr) Variable Input + 41: TypePointer Input 8(fvec2) + 44: TypePointer StorageBuffer 8(fvec2) + 58: TypePointer Input 9(int) +59(gl_HitKindEXT): 58(ptr) Variable Input + 61: TypePointer StorageBuffer 9(int) + 63: 9(int) Constant 255 +64(gl_HitKindFrontFacingMicroTriangleNV): 58(ptr) Variable Input +67(gl_HitKindBackFacingMicroTriangleNV): 58(ptr) Variable Input + 74: TypeAccelerationStructureKHR + 75: TypePointer UniformConstant 74 + 76(as): 75(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 20: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 14 + 21: 7(fvec3) Load 20 + 23: 22(ptr) AccessChain 12 14 + Store 23 21 + 25: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 24 + 26: 7(fvec3) Load 25 + 27: 22(ptr) AccessChain 12 14 + 28: 7(fvec3) Load 27 + 29: 7(fvec3) FAdd 28 26 + 30: 22(ptr) AccessChain 12 14 + Store 30 29 + 32: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 31 + 33: 7(fvec3) Load 32 + 34: 22(ptr) AccessChain 12 14 + 35: 7(fvec3) Load 34 + 36: 7(fvec3) FAdd 35 33 + 37: 22(ptr) AccessChain 12 14 + Store 37 36 + 42: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 14 + 43: 8(fvec2) Load 42 + 45: 44(ptr) AccessChain 12 24 + Store 45 43 + 46: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 24 + 47: 8(fvec2) Load 46 + 48: 44(ptr) AccessChain 12 24 + 49: 8(fvec2) Load 48 + 50: 8(fvec2) FAdd 49 47 + 51: 44(ptr) AccessChain 12 24 + Store 51 50 + 52: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 31 + 53: 8(fvec2) Load 52 + 54: 44(ptr) AccessChain 12 24 + 55: 8(fvec2) Load 54 + 56: 8(fvec2) FAdd 55 53 + 57: 44(ptr) AccessChain 12 24 + Store 57 56 + 60: 9(int) Load 59(gl_HitKindEXT) + 62: 61(ptr) AccessChain 12 31 + Store 62 60 + 65: 9(int) Load 64(gl_HitKindFrontFacingMicroTriangleNV) + 66: 9(int) BitwiseOr 63 65 + 68: 9(int) Load 67(gl_HitKindBackFacingMicroTriangleNV) + 69: 9(int) BitwiseOr 66 68 + 70: 61(ptr) AccessChain 12 31 + 71: 9(int) Load 70 + 72: 9(int) BitwiseAnd 71 69 + 73: 61(ptr) AccessChain 12 31 + Store 73 72 + Return + FunctionEnd diff --git a/Test/baseResults/spv.nv.dmm-allops.rchit.out b/Test/baseResults/spv.nv.dmm-allops.rchit.out new file mode 100644 index 0000000000..c53bc8c17c --- /dev/null +++ b/Test/baseResults/spv.nv.dmm-allops.rchit.out @@ -0,0 +1,126 @@ +spv.nv.dmm-allops.rchit +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 77 + + Capability RayTracingKHR + Capability CapabilityRayTracingDisplacementMicromapNV + Extension "SPV_KHR_ray_tracing" + Extension "SPV_NV_displacement_micromap" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint ClosestHitKHR 4 "main" 12 18 40 59 64 67 76 + Source GLSL 460 + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_EXT_ray_tracing" + SourceExtension "GL_NV_displacement_micromap" + Name 4 "main" + Name 10 "block" + MemberName 10(block) 0 "op_pos" + MemberName 10(block) 1 "op_bary" + MemberName 10(block) 2 "op_hit" + Name 12 "" + Name 18 "gl_HitMicroTriangleVertexPositionsNV" + Name 40 "gl_HitMicroTriangleVertexBarycentricsNV" + Name 59 "gl_HitKindEXT" + Name 64 "gl_HitKindFrontFacingMicroTriangleNV" + Name 67 "gl_HitKindBackFacingMicroTriangleNV" + Name 76 "as" + MemberDecorate 10(block) 0 Offset 0 + MemberDecorate 10(block) 1 Offset 16 + MemberDecorate 10(block) 2 Offset 24 + Decorate 10(block) Block + Decorate 12 DescriptorSet 0 + Decorate 12 Binding 0 + Decorate 18(gl_HitMicroTriangleVertexPositionsNV) BuiltIn HitMicroTriangleVertexPositionsNV + Decorate 40(gl_HitMicroTriangleVertexBarycentricsNV) BuiltIn HitMicroTriangleVertexBarycentricsNV + Decorate 59(gl_HitKindEXT) BuiltIn HitKindKHR + Decorate 64(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV + Decorate 67(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV + Decorate 76(as) DescriptorSet 0 + Decorate 76(as) Binding 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeVector 6(float) 2 + 9: TypeInt 32 0 + 10(block): TypeStruct 7(fvec3) 8(fvec2) 9(int) + 11: TypePointer StorageBuffer 10(block) + 12: 11(ptr) Variable StorageBuffer + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 15: 9(int) Constant 3 + 16: TypeArray 7(fvec3) 15 + 17: TypePointer Input 16 +18(gl_HitMicroTriangleVertexPositionsNV): 17(ptr) Variable Input + 19: TypePointer Input 7(fvec3) + 22: TypePointer StorageBuffer 7(fvec3) + 24: 13(int) Constant 1 + 31: 13(int) Constant 2 + 38: TypeArray 8(fvec2) 15 + 39: TypePointer Input 38 +40(gl_HitMicroTriangleVertexBarycentricsNV): 39(ptr) Variable Input + 41: TypePointer Input 8(fvec2) + 44: TypePointer StorageBuffer 8(fvec2) + 58: TypePointer Input 9(int) +59(gl_HitKindEXT): 58(ptr) Variable Input + 61: TypePointer StorageBuffer 9(int) + 63: 9(int) Constant 255 +64(gl_HitKindFrontFacingMicroTriangleNV): 58(ptr) Variable Input +67(gl_HitKindBackFacingMicroTriangleNV): 58(ptr) Variable Input + 74: TypeAccelerationStructureKHR + 75: TypePointer UniformConstant 74 + 76(as): 75(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 20: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 14 + 21: 7(fvec3) Load 20 + 23: 22(ptr) AccessChain 12 14 + Store 23 21 + 25: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 24 + 26: 7(fvec3) Load 25 + 27: 22(ptr) AccessChain 12 14 + 28: 7(fvec3) Load 27 + 29: 7(fvec3) FAdd 28 26 + 30: 22(ptr) AccessChain 12 14 + Store 30 29 + 32: 19(ptr) AccessChain 18(gl_HitMicroTriangleVertexPositionsNV) 31 + 33: 7(fvec3) Load 32 + 34: 22(ptr) AccessChain 12 14 + 35: 7(fvec3) Load 34 + 36: 7(fvec3) FAdd 35 33 + 37: 22(ptr) AccessChain 12 14 + Store 37 36 + 42: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 14 + 43: 8(fvec2) Load 42 + 45: 44(ptr) AccessChain 12 24 + Store 45 43 + 46: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 24 + 47: 8(fvec2) Load 46 + 48: 44(ptr) AccessChain 12 24 + 49: 8(fvec2) Load 48 + 50: 8(fvec2) FAdd 49 47 + 51: 44(ptr) AccessChain 12 24 + Store 51 50 + 52: 41(ptr) AccessChain 40(gl_HitMicroTriangleVertexBarycentricsNV) 31 + 53: 8(fvec2) Load 52 + 54: 44(ptr) AccessChain 12 24 + 55: 8(fvec2) Load 54 + 56: 8(fvec2) FAdd 55 53 + 57: 44(ptr) AccessChain 12 24 + Store 57 56 + 60: 9(int) Load 59(gl_HitKindEXT) + 62: 61(ptr) AccessChain 12 31 + Store 62 60 + 65: 9(int) Load 64(gl_HitKindFrontFacingMicroTriangleNV) + 66: 9(int) BitwiseOr 63 65 + 68: 9(int) Load 67(gl_HitKindBackFacingMicroTriangleNV) + 69: 9(int) BitwiseOr 66 68 + 70: 61(ptr) AccessChain 12 31 + 71: 9(int) Load 70 + 72: 9(int) BitwiseAnd 71 69 + 73: 61(ptr) AccessChain 12 31 + Store 73 72 + Return + FunctionEnd diff --git a/Test/baseResults/spv.nv.dmm-allops.rgen.out b/Test/baseResults/spv.nv.dmm-allops.rgen.out new file mode 100644 index 0000000000..78001e1fea --- /dev/null +++ b/Test/baseResults/spv.nv.dmm-allops.rgen.out @@ -0,0 +1,108 @@ +spv.nv.dmm-allops.rgen +// Module Version 10400 +// Generated by (magic number): 8000b +// Id's are bound by 66 + + Capability RayTracingKHR + Capability DisplacementMicromapNV + Capability CapabilityRayTracingDisplacementMicromapNV + Extension "SPV_KHR_ray_tracing" + Extension "SPV_NV_displacement_micromap" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 4 "main" 12 17 58 61 + Source GLSL 460 + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_NV_displacement_micromap" + Name 4 "main" + Name 10 "block" + MemberName 10(block) 0 "op_pos" + MemberName 10(block) 1 "op_bary" + MemberName 10(block) 2 "op_hitmask" + Name 12 "" + Name 17 "as" + Name 58 "gl_HitKindFrontFacingMicroTriangleNV" + Name 61 "gl_HitKindBackFacingMicroTriangleNV" + MemberDecorate 10(block) 0 Offset 0 + MemberDecorate 10(block) 1 Offset 16 + MemberDecorate 10(block) 2 Offset 24 + Decorate 10(block) Block + Decorate 12 DescriptorSet 0 + Decorate 12 Binding 0 + Decorate 17(as) DescriptorSet 0 + Decorate 17(as) Binding 1 + Decorate 58(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV + Decorate 61(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 3 + 8: TypeVector 6(float) 2 + 9: TypeInt 32 0 + 10(block): TypeStruct 7(fvec3) 8(fvec2) 9(int) + 11: TypePointer StorageBuffer 10(block) + 12: 11(ptr) Variable StorageBuffer + 13: TypeInt 32 1 + 14: 13(int) Constant 0 + 15: TypeAccelerationStructureKHR + 16: TypePointer UniformConstant 15 + 17(as): 16(ptr) Variable UniformConstant + 19: 13(int) Constant 1 + 20: TypeVector 13(int) 2 + 21: 20(ivec2) ConstantComposite 14 14 + 23: TypePointer StorageBuffer 7(fvec3) + 26: 20(ivec2) ConstantComposite 14 19 + 33: 20(ivec2) ConstantComposite 19 14 + 41: TypePointer StorageBuffer 8(fvec2) + 55: 13(int) Constant 2 + 56: 9(int) Constant 255 + 57: TypePointer Input 9(int) +58(gl_HitKindFrontFacingMicroTriangleNV): 57(ptr) Variable Input +61(gl_HitKindBackFacingMicroTriangleNV): 57(ptr) Variable Input + 64: TypePointer StorageBuffer 9(int) + 4(main): 2 Function None 3 + 5: Label + 18: 15 Load 17(as) + 22: 7(fvec3) FetchMicroTriangleVertexPositionNV 18 19 19 19 21 + 24: 23(ptr) AccessChain 12 14 + Store 24 22 + 25: 15 Load 17(as) + 27: 7(fvec3) FetchMicroTriangleVertexPositionNV 25 19 19 19 26 + 28: 23(ptr) AccessChain 12 14 + 29: 7(fvec3) Load 28 + 30: 7(fvec3) FAdd 29 27 + 31: 23(ptr) AccessChain 12 14 + Store 31 30 + 32: 15 Load 17(as) + 34: 7(fvec3) FetchMicroTriangleVertexPositionNV 32 19 19 19 33 + 35: 23(ptr) AccessChain 12 14 + 36: 7(fvec3) Load 35 + 37: 7(fvec3) FAdd 36 34 + 38: 23(ptr) AccessChain 12 14 + Store 38 37 + 39: 15 Load 17(as) + 40: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 39 19 19 19 21 + 42: 41(ptr) AccessChain 12 19 + Store 42 40 + 43: 15 Load 17(as) + 44: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 43 19 19 19 26 + 45: 41(ptr) AccessChain 12 19 + 46: 8(fvec2) Load 45 + 47: 8(fvec2) FAdd 46 44 + 48: 41(ptr) AccessChain 12 19 + Store 48 47 + 49: 15 Load 17(as) + 50: 8(fvec2) FetchMicroTriangleVertexBarycentricNV 49 19 19 19 33 + 51: 41(ptr) AccessChain 12 19 + 52: 8(fvec2) Load 51 + 53: 8(fvec2) FAdd 52 50 + 54: 41(ptr) AccessChain 12 19 + Store 54 53 + 59: 9(int) Load 58(gl_HitKindFrontFacingMicroTriangleNV) + 60: 9(int) BitwiseOr 56 59 + 62: 9(int) Load 61(gl_HitKindBackFacingMicroTriangleNV) + 63: 9(int) BitwiseOr 60 62 + 65: 64(ptr) AccessChain 12 55 + Store 65 63 + Return + FunctionEnd diff --git a/Test/spv.nv.dmm-allops.comp b/Test/spv.nv.dmm-allops.comp new file mode 100644 index 0000000000..5c6ed360fa --- /dev/null +++ b/Test/spv.nv.dmm-allops.comp @@ -0,0 +1,19 @@ +#version 460 +#extension GL_NV_displacement_micromap : enable +#extension GL_EXT_ray_query : enable +layout(local_size_x = 16) in; +layout(binding = 1) uniform accelerationStructureEXT as; +layout(binding = 0) buffer block { + vec3 op_pos; + vec2 op_bary; +}; +void main() +{ + op_pos = fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,0)); + op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,1)); + op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(1,0)); + + op_bary = fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,0)); + op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,1)); + op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(1,0)); +} diff --git a/Test/spv.nv.dmm-allops.mesh b/Test/spv.nv.dmm-allops.mesh new file mode 100644 index 0000000000..6cb945b89b --- /dev/null +++ b/Test/spv.nv.dmm-allops.mesh @@ -0,0 +1,20 @@ +#version 460 +#extension GL_NV_displacement_micromap : enable +#extension GL_NV_mesh_shader : enable +#extension GL_EXT_ray_query : enable +layout(max_vertices = 8, max_primitives = 16, triangles) out; +layout(binding = 1) uniform accelerationStructureEXT as; +layout(binding = 0) buffer block { + vec3 op_pos; + vec2 op_bary; +}; +void main() +{ + op_pos = fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,0)); + op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,1)); + op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(1,0)); + + op_bary = fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,0)); + op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,1)); + op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(1,0)); +} diff --git a/Test/spv.nv.dmm-allops.rahit b/Test/spv.nv.dmm-allops.rahit new file mode 100644 index 0000000000..3edb676f6b --- /dev/null +++ b/Test/spv.nv.dmm-allops.rahit @@ -0,0 +1,26 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_EXT_ray_query : enable +#extension GL_NV_displacement_micromap : enable +layout(binding = 1) uniform accelerationStructureEXT as; +layout(binding = 0) buffer block { + vec3 op_pos; + vec2 op_bary; + uint op_hit; +}; +void main() +{ + op_pos = gl_HitMicroTriangleVertexPositionsNV[0]; + op_pos += gl_HitMicroTriangleVertexPositionsNV[1]; + op_pos += gl_HitMicroTriangleVertexPositionsNV[2]; + + op_bary = gl_HitMicroTriangleVertexBarycentricsNV[0]; + op_bary += gl_HitMicroTriangleVertexBarycentricsNV[1]; + op_bary += gl_HitMicroTriangleVertexBarycentricsNV[2]; + + op_hit = gl_HitKindEXT; + op_hit &= gl_HitKindFrontFacingTriangleEXT | + gl_HitKindBackFacingTriangleEXT | + gl_HitKindFrontFacingMicroTriangleNV | + gl_HitKindBackFacingMicroTriangleNV; +} diff --git a/Test/spv.nv.dmm-allops.rchit b/Test/spv.nv.dmm-allops.rchit new file mode 100644 index 0000000000..3edb676f6b --- /dev/null +++ b/Test/spv.nv.dmm-allops.rchit @@ -0,0 +1,26 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_EXT_ray_query : enable +#extension GL_NV_displacement_micromap : enable +layout(binding = 1) uniform accelerationStructureEXT as; +layout(binding = 0) buffer block { + vec3 op_pos; + vec2 op_bary; + uint op_hit; +}; +void main() +{ + op_pos = gl_HitMicroTriangleVertexPositionsNV[0]; + op_pos += gl_HitMicroTriangleVertexPositionsNV[1]; + op_pos += gl_HitMicroTriangleVertexPositionsNV[2]; + + op_bary = gl_HitMicroTriangleVertexBarycentricsNV[0]; + op_bary += gl_HitMicroTriangleVertexBarycentricsNV[1]; + op_bary += gl_HitMicroTriangleVertexBarycentricsNV[2]; + + op_hit = gl_HitKindEXT; + op_hit &= gl_HitKindFrontFacingTriangleEXT | + gl_HitKindBackFacingTriangleEXT | + gl_HitKindFrontFacingMicroTriangleNV | + gl_HitKindBackFacingMicroTriangleNV; +} diff --git a/Test/spv.nv.dmm-allops.rgen b/Test/spv.nv.dmm-allops.rgen new file mode 100644 index 0000000000..447df68aaf --- /dev/null +++ b/Test/spv.nv.dmm-allops.rgen @@ -0,0 +1,24 @@ +#version 460 +#extension GL_NV_displacement_micromap : enable +#extension GL_EXT_ray_query : enable +layout(binding = 1) uniform accelerationStructureEXT as; +layout(binding = 0) buffer block { + vec3 op_pos; + vec2 op_bary; + uint op_hitmask; +}; +void main() +{ + op_pos = fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,0)); + op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(0,1)); + op_pos += fetchMicroTriangleVertexPositionNV(as, 1, 1, 1, ivec2(1,0)); + + op_bary = fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,0)); + op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(0,1)); + op_bary += fetchMicroTriangleVertexBarycentricNV(as, 1, 1, 1, ivec2(1,0)); + + op_hitmask = gl_HitKindFrontFacingTriangleEXT | + gl_HitKindBackFacingTriangleEXT | + gl_HitKindFrontFacingMicroTriangleNV | + gl_HitKindBackFacingMicroTriangleNV; +} diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index ae49a936a1..64bffa8926 100755 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -290,6 +290,12 @@ enum TBuiltInVariable { EbvLayerPerViewNV, EbvMeshViewCountNV, EbvMeshViewIndicesNV, + + EbvMicroTrianglePositionNV, + EbvMicroTriangleBaryNV, + EbvHitKindFrontFacingMicroTriangleNV, + EbvHitKindBackFacingMicroTriangleNV, + //GL_EXT_mesh_shader EbvPrimitivePointIndicesEXT, EbvPrimitiveLineIndicesEXT, @@ -523,6 +529,9 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvShadingRateKHR: return "ShadingRateKHR"; case EbvPrimitiveShadingRateKHR: return "PrimitiveShadingRateKHR"; + case EbvHitKindFrontFacingMicroTriangleNV: return "HitKindFrontFacingMicroTriangleNV"; + case EbvHitKindBackFacingMicroTriangleNV: return "HitKindBackFacingMicroTriangleNV"; + default: return "unknown built-in variable"; } } diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 4a4fe1a071..9d311d60b5 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1006,6 +1006,8 @@ enum TOperator { EOpHitObjectGetAttributesNV, EOpHitObjectGetCurrentTimeNV, EOpReorderThreadNV, + EOpFetchMicroTriangleVertexPositionNV, + EOpFetchMicroTriangleVertexBarycentricNV, // HLSL operations // diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 25d87370bc..8f29453704 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4730,6 +4730,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void reorderThreadNV(uint, uint);" "void reorderThreadNV(hitObjectNV);" "void reorderThreadNV(hitObjectNV, uint, uint);" + "vec3 fetchMicroTriangleVertexPositionNV(accelerationStructureEXT, int, int, int, ivec2);" + "vec2 fetchMicroTriangleVertexBarycentricNV(accelerationStructureEXT, int, int, int, ivec2);" "\n"); stageBuiltins[EShLangIntersect].append( "bool reportIntersectionNV(float, uint);" @@ -4847,6 +4849,19 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "void SetMeshOutputsEXT(uint, uint);" "\n"); } + // Builtins for GL_NV_displacement_micromap + if ((profile != EEsProfile && version >= 460) || (profile == EEsProfile && version >= 320)) { + stageBuiltins[EShLangMesh].append( + "vec3 fetchMicroTriangleVertexPositionNV(accelerationStructureEXT, int, int, int, ivec2);" + "vec2 fetchMicroTriangleVertexBarycentricNV(accelerationStructureEXT, int, int, int, ivec2);" + "\n"); + + stageBuiltins[EShLangCompute].append( + "vec3 fetchMicroTriangleVertexPositionNV(accelerationStructureEXT, int, int, int, ivec2);" + "vec2 fetchMicroTriangleVertexBarycentricNV(accelerationStructureEXT, int, int, int, ivec2);" + "\n"); + + } // GL_EXT_texture_shadow_lod overloads if (profile == EEsProfile) { // ES @@ -6056,6 +6071,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "const uint gl_RayFlagsForceOpacityMicromap2StateEXT = 1024U;" "const uint gl_HitKindFrontFacingTriangleEXT = 254U;" "const uint gl_HitKindBackFacingTriangleEXT = 255U;" + "in uint gl_HitKindFrontFacingMicroTriangleNV;" + "in uint gl_HitKindBackFacingMicroTriangleNV;" "\n"; const char *constRayQueryIntersection = @@ -6144,7 +6161,10 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "in float gl_CurrentRayTimeNV;" "in uint gl_CullMaskEXT;" "in vec3 gl_HitTriangleVertexPositionsEXT[3];" + "in vec3 gl_HitMicroTriangleVertexPositionsNV[3];" + "in vec2 gl_HitMicroTriangleVertexBarycentricsNV[3];" "\n"; + const char *missDecls = "in uvec3 gl_LaunchIDNV;" "in uvec3 gl_LaunchIDEXT;" @@ -8963,6 +8983,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } + + if ((profile != EEsProfile && version >= 460)) { + symbolTable.setFunctionExtensions("fetchMicroTriangleVertexPositionNV", 1, &E_GL_NV_displacement_micromap); + symbolTable.setFunctionExtensions("fetchMicroTriangleVertexBarycentricNV", 1, &E_GL_NV_displacement_micromap); + } break; case EShLangRayGen: @@ -9009,6 +9034,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_IncomingRayFlagsEXT", 1, &E_GL_EXT_ray_tracing); symbolTable.setVariableExtensions("gl_CurrentRayTimeNV", 1, &E_GL_NV_ray_tracing_motion_blur); symbolTable.setVariableExtensions("gl_HitTriangleVertexPositionsEXT", 1, &E_GL_EXT_ray_tracing_position_fetch); + symbolTable.setVariableExtensions("gl_HitMicroTriangleVertexPositionsNV", 1, &E_GL_NV_displacement_micromap); + symbolTable.setVariableExtensions("gl_HitMicroTriangleVertexBarycentricsNV", 1, &E_GL_NV_displacement_micromap); symbolTable.setVariableExtensions("gl_DeviceIndex", 1, &E_GL_EXT_device_group); @@ -9054,6 +9081,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("hitObjectGetShaderBindingTableRecordIndexNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("hitObjectGetShaderRecordBufferHandleNV", 1, &E_GL_NV_shader_invocation_reorder); symbolTable.setFunctionExtensions("reorderThreadNV", 1, &E_GL_NV_shader_invocation_reorder); + symbolTable.setFunctionExtensions("fetchMicroTriangleVertexPositionNV", 1, &E_GL_NV_displacement_micromap); + symbolTable.setFunctionExtensions("fetchMicroTriangleVertexBarycentricNV", 1, &E_GL_NV_displacement_micromap); BuiltInVariable("gl_LaunchIDNV", EbvLaunchId, symbolTable); @@ -9093,6 +9122,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_DeviceIndex", EbvDeviceIndex, symbolTable); BuiltInVariable("gl_CurrentRayTimeNV", EbvCurrentRayTimeNV, symbolTable); BuiltInVariable("gl_HitTriangleVertexPositionsEXT", EbvPositionFetch, symbolTable); + BuiltInVariable("gl_HitMicroTriangleVertexPositionsNV", EbvMicroTrianglePositionNV, symbolTable); + BuiltInVariable("gl_HitMicroTriangleVertexBarycentricsNV", EbvMicroTriangleBaryNV, symbolTable); + BuiltInVariable("gl_HitKindFrontFacingMicroTriangleNV", EbvHitKindFrontFacingMicroTriangleNV, symbolTable); + BuiltInVariable("gl_HitKindBackFacingMicroTriangleNV", EbvHitKindBackFacingMicroTriangleNV, symbolTable); // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); @@ -9394,6 +9427,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ShadingRateFlag2HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } + + // Builtins for GL_NV_displacment_micromap + if ((profile != EEsProfile && version >= 460)) { + symbolTable.setFunctionExtensions("fetchMicroTriangleVertexPositionNV", 1, &E_GL_NV_displacement_micromap); + symbolTable.setFunctionExtensions("fetchMicroTriangleVertexBarycentricNV", 1, &E_GL_NV_displacement_micromap); + } + break; case EShLangTask: @@ -10067,9 +10107,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("coopMatLoad", EOpCooperativeMatrixLoad); symbolTable.relateToOperator("coopMatStore", EOpCooperativeMatrixStore); symbolTable.relateToOperator("coopMatMulAdd", EOpCooperativeMatrixMulAdd); + + if (profile != EEsProfile && version >= 460) { + symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); + symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); + } break; case EShLangRayGen: + if (profile != EEsProfile && version >= 460) { + symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); + symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); + } // fallthrough case EShLangClosestHit: case EShLangMiss: if (profile != EEsProfile && version >= 460) { @@ -10141,6 +10190,12 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if (profile != EEsProfile && version >= 450) { symbolTable.relateToOperator("SetMeshOutputsEXT", EOpSetMeshOutputsEXT); } + + if (profile != EEsProfile && version >= 460) { + // Builtins for GL_NV_displacement_micromap. + symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); + symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); + } break; case EShLangTask: if ((profile != EEsProfile && version >= 450) || (profile == EEsProfile && version >= 320)) { diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 99c9ecbbba..5c7e2e662e 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -1073,12 +1073,18 @@ int TScanContext::tokenizeIdentifier() parseContext.extensionTurnedOn(E_GL_NV_ray_tracing)) return keyword; return identifierOrType(); + case ACCSTRUCTEXT: + if (parseContext.symbolTable.atBuiltInLevel() || + parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing) || + parseContext.extensionTurnedOn(E_GL_EXT_ray_query) || + parseContext.extensionTurnedOn(E_GL_NV_displacement_micromap)) + return keyword; + return identifierOrType(); case PAYLOADEXT: case PAYLOADINEXT: case HITATTREXT: case CALLDATAEXT: case CALLDATAINEXT: - case ACCSTRUCTEXT: if (parseContext.symbolTable.atBuiltInLevel() || parseContext.extensionTurnedOn(E_GL_EXT_ray_tracing) || parseContext.extensionTurnedOn(E_GL_EXT_ray_query)) diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 1bcd3884aa..bede71604e 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -297,12 +297,11 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_NV_compute_shader_derivatives] = EBhDisable; extensionBehavior[E_GL_NV_shader_texture_footprint] = EBhDisable; extensionBehavior[E_GL_NV_mesh_shader] = EBhDisable; - extensionBehavior[E_GL_NV_cooperative_matrix] = EBhDisable; extensionBehavior[E_GL_NV_shader_sm_builtins] = EBhDisable; extensionBehavior[E_GL_NV_integer_cooperative_matrix] = EBhDisable; - extensionBehavior[E_GL_NV_shader_invocation_reorder] = EBhDisable; + extensionBehavior[E_GL_NV_displacement_micromap] = EBhDisable; // ARM extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index aee53296ca..0ebace9bb2 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -266,7 +266,12 @@ const char* const E_GL_NV_fragment_shader_barycentric = "GL_NV_fragmen const char* const E_GL_NV_compute_shader_derivatives = "GL_NV_compute_shader_derivatives"; const char* const E_GL_NV_shader_texture_footprint = "GL_NV_shader_texture_footprint"; const char* const E_GL_NV_mesh_shader = "GL_NV_mesh_shader"; +const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix"; +const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins"; +const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer_cooperative_matrix"; +const char* const E_GL_NV_shader_invocation_reorder = "GL_NV_shader_invocation_reorder"; const char* const E_GL_EXT_ray_tracing_position_fetch = "GL_EXT_ray_tracing_position_fetch"; +const char* const E_GL_NV_displacement_micromap = "GL_NV_displacement_micromap"; // ARM const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader_core_builtins"; @@ -276,10 +281,6 @@ const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader const char* const viewportEXTs[] = { E_GL_ARB_shader_viewport_layer_array, E_GL_NV_viewport_array2 }; const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]); -const char* const E_GL_NV_cooperative_matrix = "GL_NV_cooperative_matrix"; -const char* const E_GL_NV_shader_sm_builtins = "GL_NV_shader_sm_builtins"; -const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer_cooperative_matrix"; -const char* const E_GL_NV_shader_invocation_reorder = "GL_NV_shader_invocation_reorder"; const char* const E_GL_QCOM_image_processing = "GL_QCOM_image_processing"; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index d5fc26bbf2..32c3c573f9 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1141,6 +1141,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpHitObjectGetShaderBindingTableRecordIndexNV: out.debug << "HitObjectGetShaderBindingTableRecordIndexNV"; break; case EOpHitObjectGetShaderRecordBufferHandleNV: out.debug << "HitObjectReadShaderRecordBufferHandleNV"; break; case EOpReorderThreadNV: out.debug << "ReorderThreadNV"; break; + case EOpFetchMicroTriangleVertexPositionNV: out.debug << "MicroTriangleVertexPositionNV"; break; + case EOpFetchMicroTriangleVertexBarycentricNV: out.debug << "MicroTriangleVertexBarycentricNV"; break; case EOpSpirvInst: out.debug << "spirv_instruction"; break; case EOpStencilAttachmentReadEXT: out.debug << "stencilAttachmentReadEXT"; break; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 3cce445630..f9390a28a1 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -708,6 +708,15 @@ INSTANTIATE_TEST_SUITE_P( "spv.nv.hitobject-allops.rgen", "spv.nv.hitobject-allops.rchit", "spv.nv.hitobject-allops.rmiss", + + + // SPV_NV_displacment_micromap + + "spv.nv.dmm-allops.rgen", + "spv.nv.dmm-allops.rchit", + "spv.nv.dmm-allops.rahit", + "spv.nv.dmm-allops.mesh", + "spv.nv.dmm-allops.comp", })), FileNameAsCustomTestSuffix ); diff --git a/known_good.json b/known_good.json index 95029bd9f4..a523015e0b 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "89ca3aa571fe238944b31e88d5d8fe75fab0227a" + "commit" : "a996591b1c67e789e88e99ae3881272f5fc47374" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "124a9665e464ef98b8b718d572d5f329311061eb" + "commit" : "f8a4f5d876e56c9930344041171192f04f244f61" } ] } From 5ff0c048b7242e173357bf28024cdee79edbcea8 Mon Sep 17 00:00:00 2001 From: Pankaj Mistry <63069047+pmistryNV@users.noreply.github.com> Date: Mon, 2 Oct 2023 12:10:11 -0700 Subject: [PATCH 295/594] Clean the implementation of GL_EXT_texture_shadow_lod. Move the parameter verifictation to a centralized place where all the builtins are verified for correctness. Add verification for the new builtins with version and extension check These builtins are supported on GLSL since version 130 and GLES since version 300. --- .../glsl.es320.extTextureShadowLod.frag.out | 149 ++++++++++++++++ .../glsl.ext.textureShadowLod.frag.out | 160 ++++++++++++++++++ .../spv.ext.textureShadowLod.error.frag.out | 6 + ....out => spv.ext.textureShadowLod.frag.out} | 2 +- .../spv.ext.texture_shadow_lod.error.frag.out | 6 - Test/glsl.es320.extTextureShadowLod.frag | 22 +++ Test/glsl.ext.textureShadowLod.frag | 32 ++++ ...ag => spv.ext.textureShadowLod.error.frag} | 0 ...lod.frag => spv.ext.textureShadowLod.frag} | 0 glslang/MachineIndependent/Initialize.cpp | 75 ++------ glslang/MachineIndependent/Initialize.h | 5 - glslang/MachineIndependent/ParseHelper.cpp | 57 ++++++- glslang/MachineIndependent/SymbolTable.h | 15 -- gtests/AST.FromFile.cpp | 2 + gtests/Spv.FromFile.cpp | 4 +- 15 files changed, 443 insertions(+), 92 deletions(-) create mode 100644 Test/baseResults/glsl.es320.extTextureShadowLod.frag.out create mode 100644 Test/baseResults/glsl.ext.textureShadowLod.frag.out create mode 100644 Test/baseResults/spv.ext.textureShadowLod.error.frag.out rename Test/baseResults/{spv.ext.texture_shadow_lod.frag.out => spv.ext.textureShadowLod.frag.out} (99%) delete mode 100644 Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out create mode 100644 Test/glsl.es320.extTextureShadowLod.frag create mode 100644 Test/glsl.ext.textureShadowLod.frag rename Test/{spv.ext.texture_shadow_lod.error.frag => spv.ext.textureShadowLod.error.frag} (100%) rename Test/{spv.ext.texture_shadow_lod.frag => spv.ext.textureShadowLod.frag} (100%) diff --git a/Test/baseResults/glsl.es320.extTextureShadowLod.frag.out b/Test/baseResults/glsl.es320.extTextureShadowLod.frag.out new file mode 100644 index 0000000000..ae385ae196 --- /dev/null +++ b/Test/baseResults/glsl.es320.extTextureShadowLod.frag.out @@ -0,0 +1,149 @@ +glsl.es320.extTextureShadowLod.frag +Shader version: 320 +Requested GL_EXT_texture_shadow_lod +0:? Sequence +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 move second child to first child ( temp lowp float) +0:14 'c' ( out lowp float) +0:14 texture ( global lowp float) +0:14 's2da' ( uniform lowp sampler2DArrayShadow) +0:14 'tc' ( smooth in lowp 4-component vector of float) +0:14 Constant: +0:14 0.000000 +0:15 move second child to first child ( temp lowp float) +0:15 'c' ( out lowp float) +0:15 texture ( global lowp float) +0:15 'sca' ( uniform lowp samplerCubeArrayShadow) +0:15 'tc' ( smooth in lowp 4-component vector of float) +0:15 Constant: +0:15 0.000000 +0:15 Constant: +0:15 0.000000 +0:16 move second child to first child ( temp lowp float) +0:16 'c' ( out lowp float) +0:16 textureOffset ( global lowp float) +0:16 's2da' ( uniform lowp sampler2DArrayShadow) +0:16 'tc' ( smooth in lowp 4-component vector of float) +0:16 Constant: +0:16 0 (const int) +0:16 0 (const int) +0:16 Constant: +0:16 0.000000 +0:17 move second child to first child ( temp lowp float) +0:17 'c' ( out lowp float) +0:17 textureLod ( global lowp float) +0:17 's2da' ( uniform lowp sampler2DArrayShadow) +0:17 'tc' ( smooth in lowp 4-component vector of float) +0:17 Constant: +0:17 0.000000 +0:18 move second child to first child ( temp lowp float) +0:18 'c' ( out lowp float) +0:18 textureLod ( global lowp float) +0:18 'sc' ( uniform lowp samplerCubeShadow) +0:18 'tc' ( smooth in lowp 4-component vector of float) +0:18 Constant: +0:18 0.000000 +0:19 move second child to first child ( temp lowp float) +0:19 'c' ( out lowp float) +0:19 textureLod ( global lowp float) +0:19 'sca' ( uniform lowp samplerCubeArrayShadow) +0:19 'tc' ( smooth in lowp 4-component vector of float) +0:19 Constant: +0:19 0.000000 +0:19 Constant: +0:19 0.000000 +0:20 move second child to first child ( temp lowp float) +0:20 'c' ( out lowp float) +0:20 textureLodOffset ( global lowp float) +0:20 's2da' ( uniform lowp sampler2DArrayShadow) +0:20 'tc' ( smooth in lowp 4-component vector of float) +0:20 Constant: +0:20 0.000000 +0:20 Constant: +0:20 0 (const int) +0:20 0 (const int) +0:? Linker Objects +0:? 's2da' ( uniform lowp sampler2DArrayShadow) +0:? 'sca' ( uniform lowp samplerCubeArrayShadow) +0:? 'sc' ( uniform lowp samplerCubeShadow) +0:? 'tc' ( smooth in lowp 4-component vector of float) +0:? 'c' ( out lowp float) + + +Linked fragment stage: + + +Shader version: 320 +Requested GL_EXT_texture_shadow_lod +0:? Sequence +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 move second child to first child ( temp lowp float) +0:14 'c' ( out lowp float) +0:14 texture ( global lowp float) +0:14 's2da' ( uniform lowp sampler2DArrayShadow) +0:14 'tc' ( smooth in lowp 4-component vector of float) +0:14 Constant: +0:14 0.000000 +0:15 move second child to first child ( temp lowp float) +0:15 'c' ( out lowp float) +0:15 texture ( global lowp float) +0:15 'sca' ( uniform lowp samplerCubeArrayShadow) +0:15 'tc' ( smooth in lowp 4-component vector of float) +0:15 Constant: +0:15 0.000000 +0:15 Constant: +0:15 0.000000 +0:16 move second child to first child ( temp lowp float) +0:16 'c' ( out lowp float) +0:16 textureOffset ( global lowp float) +0:16 's2da' ( uniform lowp sampler2DArrayShadow) +0:16 'tc' ( smooth in lowp 4-component vector of float) +0:16 Constant: +0:16 0 (const int) +0:16 0 (const int) +0:16 Constant: +0:16 0.000000 +0:17 move second child to first child ( temp lowp float) +0:17 'c' ( out lowp float) +0:17 textureLod ( global lowp float) +0:17 's2da' ( uniform lowp sampler2DArrayShadow) +0:17 'tc' ( smooth in lowp 4-component vector of float) +0:17 Constant: +0:17 0.000000 +0:18 move second child to first child ( temp lowp float) +0:18 'c' ( out lowp float) +0:18 textureLod ( global lowp float) +0:18 'sc' ( uniform lowp samplerCubeShadow) +0:18 'tc' ( smooth in lowp 4-component vector of float) +0:18 Constant: +0:18 0.000000 +0:19 move second child to first child ( temp lowp float) +0:19 'c' ( out lowp float) +0:19 textureLod ( global lowp float) +0:19 'sca' ( uniform lowp samplerCubeArrayShadow) +0:19 'tc' ( smooth in lowp 4-component vector of float) +0:19 Constant: +0:19 0.000000 +0:19 Constant: +0:19 0.000000 +0:20 move second child to first child ( temp lowp float) +0:20 'c' ( out lowp float) +0:20 textureLodOffset ( global lowp float) +0:20 's2da' ( uniform lowp sampler2DArrayShadow) +0:20 'tc' ( smooth in lowp 4-component vector of float) +0:20 Constant: +0:20 0.000000 +0:20 Constant: +0:20 0 (const int) +0:20 0 (const int) +0:? Linker Objects +0:? 's2da' ( uniform lowp sampler2DArrayShadow) +0:? 'sca' ( uniform lowp samplerCubeArrayShadow) +0:? 'sc' ( uniform lowp samplerCubeShadow) +0:? 'tc' ( smooth in lowp 4-component vector of float) +0:? 'c' ( out lowp float) + diff --git a/Test/baseResults/glsl.ext.textureShadowLod.frag.out b/Test/baseResults/glsl.ext.textureShadowLod.frag.out new file mode 100644 index 0000000000..b84183f897 --- /dev/null +++ b/Test/baseResults/glsl.ext.textureShadowLod.frag.out @@ -0,0 +1,160 @@ +glsl.ext.textureShadowLod.frag +ERROR: 0:24: 'texture(..., float bias)' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 0:25: 'texture(..., float bias)' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 0:26: 'textureOffset for sampler2DArrayShadow' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 0:27: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 0:28: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 0:29: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 0:30: 'textureLodOffset for sampler2DArrayShadow' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 7 compilation errors. No code generated. + + +Shader version: 450 +Requested GL_EXT_texture_shadow_lod +ERROR: node is still EOpNull! +0:11 Function Definition: pass( ( global void) +0:11 Function Parameters: +0:12 Sequence +0:12 move second child to first child ( temp float) +0:12 'c' ( out float) +0:12 texture ( global float) +0:12 's2da' ( uniform sampler2DArrayShadow) +0:12 'tc' ( smooth in 4-component vector of float) +0:12 Constant: +0:12 0.000000 +0:13 move second child to first child ( temp float) +0:13 'c' ( out float) +0:13 texture ( global float) +0:13 'sca' ( uniform samplerCubeArrayShadow) +0:13 'tc' ( smooth in 4-component vector of float) +0:13 Constant: +0:13 0.000000 +0:13 Constant: +0:13 0.000000 +0:14 move second child to first child ( temp float) +0:14 'c' ( out float) +0:14 textureOffset ( global float) +0:14 's2da' ( uniform sampler2DArrayShadow) +0:14 'tc' ( smooth in 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:14 0 (const int) +0:14 Constant: +0:14 0.000000 +0:15 move second child to first child ( temp float) +0:15 'c' ( out float) +0:15 textureLod ( global float) +0:15 's2da' ( uniform sampler2DArrayShadow) +0:15 'tc' ( smooth in 4-component vector of float) +0:15 Constant: +0:15 0.000000 +0:16 move second child to first child ( temp float) +0:16 'c' ( out float) +0:16 textureLod ( global float) +0:16 'sc' ( uniform samplerCubeShadow) +0:16 'tc' ( smooth in 4-component vector of float) +0:16 Constant: +0:16 0.000000 +0:17 move second child to first child ( temp float) +0:17 'c' ( out float) +0:17 textureLod ( global float) +0:17 'sca' ( uniform samplerCubeArrayShadow) +0:17 'tc' ( smooth in 4-component vector of float) +0:17 Constant: +0:17 0.000000 +0:17 Constant: +0:17 0.000000 +0:18 move second child to first child ( temp float) +0:18 'c' ( out float) +0:18 textureLodOffset ( global float) +0:18 's2da' ( uniform sampler2DArrayShadow) +0:18 'tc' ( smooth in 4-component vector of float) +0:18 Constant: +0:18 0.000000 +0:18 Constant: +0:18 0 (const int) +0:18 0 (const int) +0:22 Function Definition: fail( ( global void) +0:22 Function Parameters: +0:24 Sequence +0:24 move second child to first child ( temp float) +0:24 'c' ( out float) +0:24 texture ( global float) +0:24 's2da' ( uniform sampler2DArrayShadow) +0:24 'tc' ( smooth in 4-component vector of float) +0:24 Constant: +0:24 0.000000 +0:25 move second child to first child ( temp float) +0:25 'c' ( out float) +0:25 texture ( global float) +0:25 'sca' ( uniform samplerCubeArrayShadow) +0:25 'tc' ( smooth in 4-component vector of float) +0:25 Constant: +0:25 0.000000 +0:25 Constant: +0:25 0.000000 +0:26 move second child to first child ( temp float) +0:26 'c' ( out float) +0:26 textureOffset ( global float) +0:26 's2da' ( uniform sampler2DArrayShadow) +0:26 'tc' ( smooth in 4-component vector of float) +0:26 Constant: +0:26 0 (const int) +0:26 0 (const int) +0:26 Constant: +0:26 0.000000 +0:27 move second child to first child ( temp float) +0:27 'c' ( out float) +0:27 textureLod ( global float) +0:27 's2da' ( uniform sampler2DArrayShadow) +0:27 'tc' ( smooth in 4-component vector of float) +0:27 Constant: +0:27 0.000000 +0:28 move second child to first child ( temp float) +0:28 'c' ( out float) +0:28 textureLod ( global float) +0:28 'sc' ( uniform samplerCubeShadow) +0:28 'tc' ( smooth in 4-component vector of float) +0:28 Constant: +0:28 0.000000 +0:29 move second child to first child ( temp float) +0:29 'c' ( out float) +0:29 textureLod ( global float) +0:29 'sca' ( uniform samplerCubeArrayShadow) +0:29 'tc' ( smooth in 4-component vector of float) +0:29 Constant: +0:29 0.000000 +0:29 Constant: +0:29 0.000000 +0:30 move second child to first child ( temp float) +0:30 'c' ( out float) +0:30 textureLodOffset ( global float) +0:30 's2da' ( uniform sampler2DArrayShadow) +0:30 'tc' ( smooth in 4-component vector of float) +0:30 Constant: +0:30 0.000000 +0:30 Constant: +0:30 0 (const int) +0:30 0 (const int) +0:? Linker Objects +0:? 's2da' ( uniform sampler2DArrayShadow) +0:? 'sca' ( uniform samplerCubeArrayShadow) +0:? 'sc' ( uniform samplerCubeShadow) +0:? 'c' ( out float) +0:? 'tc' ( smooth in 4-component vector of float) + + +Linked fragment stage: + +ERROR: Linking fragment stage: Missing entry point: Each stage requires one entry point + +Shader version: 450 +Requested GL_EXT_texture_shadow_lod +ERROR: node is still EOpNull! +0:? Linker Objects +0:? 's2da' ( uniform sampler2DArrayShadow) +0:? 'sca' ( uniform samplerCubeArrayShadow) +0:? 'sc' ( uniform samplerCubeShadow) +0:? 'c' ( out float) +0:? 'tc' ( smooth in 4-component vector of float) + diff --git a/Test/baseResults/spv.ext.textureShadowLod.error.frag.out b/Test/baseResults/spv.ext.textureShadowLod.error.frag.out new file mode 100644 index 0000000000..18adb05962 --- /dev/null +++ b/Test/baseResults/spv.ext.textureShadowLod.error.frag.out @@ -0,0 +1,6 @@ +spv.ext.textureShadowLod.error.frag +ERROR: 0:11: 'textureLod(..., float lod)' : required extension not requested: GL_EXT_texture_shadow_lod +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.ext.texture_shadow_lod.frag.out b/Test/baseResults/spv.ext.textureShadowLod.frag.out similarity index 99% rename from Test/baseResults/spv.ext.texture_shadow_lod.frag.out rename to Test/baseResults/spv.ext.textureShadowLod.frag.out index 0cc54a9b5e..ca4a872777 100644 --- a/Test/baseResults/spv.ext.texture_shadow_lod.frag.out +++ b/Test/baseResults/spv.ext.textureShadowLod.frag.out @@ -1,4 +1,4 @@ -spv.ext.texture_shadow_lod.frag +spv.ext.textureShadowLod.frag // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 55 diff --git a/Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out b/Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out deleted file mode 100644 index b6aa88e3da..0000000000 --- a/Test/baseResults/spv.ext.texture_shadow_lod.error.frag.out +++ /dev/null @@ -1,6 +0,0 @@ -spv.ext.texture_shadow_lod.error.frag -ERROR: 0:11: 'textureLod' : required extension not requested: GL_EXT_texture_shadow_lod -ERROR: 1 compilation errors. No code generated. - - -SPIR-V is not generated for failed compile or link diff --git a/Test/glsl.es320.extTextureShadowLod.frag b/Test/glsl.es320.extTextureShadowLod.frag new file mode 100644 index 0000000000..49125633c8 --- /dev/null +++ b/Test/glsl.es320.extTextureShadowLod.frag @@ -0,0 +1,22 @@ +#version 320 es + +#extension GL_EXT_texture_shadow_lod : enable + + +uniform lowp sampler2DArrayShadow s2da; +uniform lowp samplerCubeArrayShadow sca; +uniform lowp samplerCubeShadow sc; + +in lowp vec4 tc; +out lowp float c; +void main() +{ + c = texture(s2da, tc, 0.0); + c = texture(sca, tc, 0.0, 0.0); + c = textureOffset(s2da, tc, ivec2(0.0), 0.0); + c = textureLod(s2da, tc, 0.0); + c = textureLod(sc, tc, 0.0); + c = textureLod(sca, tc, 0.0, 0.0); + c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); + +} diff --git a/Test/glsl.ext.textureShadowLod.frag b/Test/glsl.ext.textureShadowLod.frag new file mode 100644 index 0000000000..79c22ff041 --- /dev/null +++ b/Test/glsl.ext.textureShadowLod.frag @@ -0,0 +1,32 @@ +#version 450 +#extension GL_EXT_texture_shadow_lod : enable + +uniform sampler2DArrayShadow s2da; +uniform samplerCubeArrayShadow sca; +uniform samplerCubeShadow sc; + +out float c; +in vec4 tc; + +void pass() { + c = texture(s2da, tc, 0.0); + c = texture(sca, tc, 0.0, 0.0); + c = textureOffset(s2da, tc, ivec2(0.0), 0.0); + c = textureLod(s2da, tc, 0.0); + c = textureLod(sc, tc, 0.0); + c = textureLod(sca, tc, 0.0, 0.0); + c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); +} + +#extension GL_EXT_texture_shadow_lod : disable +void fail() { + // All these builtins should fail to compile + c = texture(s2da, tc, 0.0); + c = texture(sca, tc, 0.0, 0.0); + c = textureOffset(s2da, tc, ivec2(0.0), 0.0); + c = textureLod(s2da, tc, 0.0); + c = textureLod(sc, tc, 0.0); + c = textureLod(sca, tc, 0.0, 0.0); + c = textureLodOffset(s2da, tc, 0.0, ivec2(0.0)); +} + diff --git a/Test/spv.ext.texture_shadow_lod.error.frag b/Test/spv.ext.textureShadowLod.error.frag similarity index 100% rename from Test/spv.ext.texture_shadow_lod.error.frag rename to Test/spv.ext.textureShadowLod.error.frag diff --git a/Test/spv.ext.texture_shadow_lod.frag b/Test/spv.ext.textureShadowLod.frag similarity index 100% rename from Test/spv.ext.texture_shadow_lod.frag rename to Test/spv.ext.textureShadowLod.frag diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8f29453704..8d5ce9af8c 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -52,9 +52,6 @@ // #include "Initialize.h" -#include "../Include/intermediate.h" -#include "ScanContext.h" -#include "preprocessor/PpContext.h" namespace glslang { @@ -324,32 +321,6 @@ const CustomFunction CustomFunctions[] = { { EOpNull } }; -// Creates a parser that is separate from the main parsing context and meant for temporary use -struct TempParser { - TempParser(const TString& str, EShLanguage language, int version, EProfile profile, SpvVersion spvVersion) - : interm(language), parseContext(table, interm, false, version, profile, spvVersion, language, sink, true, - EShMsgDefault, &dummyEntryPoint), - inputStr(str.data()), stringSize(str.size()) - { - table.push(); - parseContext.setScanContext(&scanContext); - parseContext.setPpContext(&context); - parseContext.parseShaderStrings(context, input, false); - } - - TSymbolTable table; - TIntermediate interm; - TInfoSink sink; - TString dummyEntryPoint; - TParseContext parseContext; - TShader::ForbidIncluder includer; - TPpContext context{parseContext, "", includer}; - TScanContext scanContext{parseContext}; - const char* inputStr; - size_t stringSize; - TInputScanner input{1, &inputStr, &stringSize}; -}; - // For the given table of functions, add all the indicated prototypes for each // one, to be returned in the passed in decls. void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) @@ -4137,6 +4108,19 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + // Builtins for GL_EXT_texture_shadow_lod + if ((profile == EEsProfile && version >= 300) || ((profile != EEsProfile && version >= 130))) { + commonBuiltins.append( + "float texture(sampler2DArrayShadow, vec4, float);" + "float texture(samplerCubeArrayShadow, vec4, float, float);" + "float textureLod(sampler2DArrayShadow, vec4, float);" + "float textureLod(samplerCubeShadow, vec4, float);" + "float textureLod(samplerCubeArrayShadow, vec4, float, float);" + "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" + "float textureOffset(sampler2DArrayShadow, vec4 , ivec2, float);" + "\n"); + } + if (profile != EEsProfile && version >= 450) { stageBuiltins[EShLangFragment].append(derivativesAndControl64bits); stageBuiltins[EShLangFragment].append( @@ -4863,32 +4847,6 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } - // GL_EXT_texture_shadow_lod overloads - if (profile == EEsProfile) { // ES - if (version >= 300) { - textureShadowLodFunctions += "float texture(sampler2DArrayShadow, vec4, float);" - "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" - "float textureLod(sampler2DArrayShadow, vec4, float);" - "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" - "\n"; - } - if (version >= 320) { - textureShadowLodFunctions += "float texture(samplerCubeArrayShadow, vec4, float, float);" - "float textureLod(samplerCubeShadow, vec4, float);" - "float textureLod(samplerCubeArrayShadow, vec4, float, float);" - "\n"; - } - } else if (version >= 130) { // Desktop - textureShadowLodFunctions += "float texture(sampler2DArrayShadow, vec4, float);" - "float texture(samplerCubeArrayShadow, vec4, float, float);" - "float textureOffset(sampler2DArrayShadow, vec4, ivec2, float);" - "float textureLod(sampler2DArrayShadow, vec4, float);" - "float textureLod(samplerCubeShadow, vec4, float);" - "float textureLod(samplerCubeArrayShadow, vec4, float, float);" - "float textureLodOffset(sampler2DArrayShadow, vec4, float, ivec2);" - "\n"; - } - commonBuiltins.append(textureShadowLodFunctions); //============================================================================ // @@ -8816,13 +8774,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("textureBlockMatchSADQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBlockMatchSSDQCOM", 1, &E_GL_QCOM_image_processing); } - - { - TempParser parser(textureShadowLodFunctions, language, version, profile, spvVersion); - parser.table.processAllSymbols([&symbolTable](TSymbol* sym) { - symbolTable.setSingleFunctionExtensions(sym->getMangledName().data(), 1, &E_GL_EXT_texture_shadow_lod); - }); - } break; case EShLangCompute: diff --git a/glslang/MachineIndependent/Initialize.h b/glslang/MachineIndependent/Initialize.h index b5652d37b3..42c32ddbb7 100644 --- a/glslang/MachineIndependent/Initialize.h +++ b/glslang/MachineIndependent/Initialize.h @@ -105,11 +105,6 @@ class TBuiltIns : public TBuiltInParseables { const char* postfixes[5]; const char* prefixes[EbtNumTypes]; int dimMap[EsdNumDims]; - -private: - // Holds the function declarations for GL_EXT_texture_shadow_lod - // This extension is somewhat unique in the sense it defines overloads for built-in functions, rather than new functions. - TString textureShadowLodFunctions; }; // change this back to false if depending on textual spellings of texturing calls when consuming the AST diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f81440dcd9..592e9aa8ad 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2172,6 +2172,37 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } break; } + + case EOpTexture: + case EOpTextureLod: + { + if ((fnCandidate.getParamCount() > 2) && ((*argp)[1]->getAsTyped()->getType().getBasicType() == EbtFloat) && + ((*argp)[1]->getAsTyped()->getType().getVectorSize() == 4) && fnCandidate[0].type->getSampler().shadow) { + featureString = fnCandidate.getName(); + if (callNode.getOp() == EOpTexture) + featureString += "(..., float bias)"; + else + featureString += "(..., float lod)"; + feature = featureString.c_str(); + + if ((fnCandidate[0].type->getSampler().dim == Esd2D && fnCandidate[0].type->getSampler().arrayed) || //2D Array Shadow + (fnCandidate[0].type->getSampler().dim == EsdCube && fnCandidate[0].type->getSampler().arrayed && fnCandidate.getParamCount() > 3) || // Cube Array Shadow + (fnCandidate[0].type->getSampler().dim == EsdCube && callNode.getOp() == EOpTextureLod)) { // Cube Shadow + requireExtensions(loc, 1, &E_GL_EXT_texture_shadow_lod, feature); + if (isEsProfile()) { + if (version < 320 && + !extensionsTurnedOn(Num_AEP_texture_cube_map_array, AEP_texture_cube_map_array)) + error(loc, "GL_EXT_texture_shadow_lod not supported for this ES version", feature, ""); + else + profileRequires(loc, EEsProfile, 320, nullptr, feature); + } else { // Desktop + profileRequires(loc, ~EEsProfile, 130, nullptr, feature); + } + } + } + break; + } + case EOpSparseTextureGather: case EOpSparseTextureGatherOffset: case EOpSparseTextureGatherOffsets: @@ -2286,12 +2317,36 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan if (callNode.getOp() == EOpTextureOffset) { TSampler s = arg0->getType().getSampler(); if (s.is2D() && s.isArrayed() && s.isShadow()) { - if (isEsProfile()) + if ( + ((*argp)[1]->getAsTyped()->getType().getBasicType() == EbtFloat) && + ((*argp)[1]->getAsTyped()->getType().getVectorSize() == 4) && + (fnCandidate.getParamCount() == 4)) { + featureString = fnCandidate.getName() + " for sampler2DArrayShadow"; + feature = featureString.c_str(); + requireExtensions(loc, 1, &E_GL_EXT_texture_shadow_lod, feature); + profileRequires(loc, EEsProfile, 300, nullptr, feature); + profileRequires(loc, ~EEsProfile, 130, nullptr, feature); + } + else if (isEsProfile()) error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "ES Profile"); else if (version <= 420) error(loc, "TextureOffset does not support sampler2DArrayShadow : ", "sampler", "version <= 420"); } } + + if (callNode.getOp() == EOpTextureLodOffset) { + TSampler s = arg0->getType().getSampler(); + if (s.is2D() && s.isArrayed() && s.isShadow() && + ((*argp)[1]->getAsTyped()->getType().getBasicType() == EbtFloat) && + ((*argp)[1]->getAsTyped()->getType().getVectorSize() == 4) && + (fnCandidate.getParamCount() == 4)) { + featureString = fnCandidate.getName() + " for sampler2DArrayShadow"; + feature = featureString.c_str(); + profileRequires(loc, EEsProfile, 300, nullptr, feature); + profileRequires(loc, ~EEsProfile, 130, nullptr, feature); + requireExtensions(loc, 1, &E_GL_EXT_texture_shadow_lod, feature); + } + } } break; diff --git a/glslang/MachineIndependent/SymbolTable.h b/glslang/MachineIndependent/SymbolTable.h index 9c453c8268..94c3929da2 100644 --- a/glslang/MachineIndependent/SymbolTable.h +++ b/glslang/MachineIndependent/SymbolTable.h @@ -492,12 +492,6 @@ class TSymbolTableLevel { return (*it).second; } - template void processAllSymbols(ProcSymFn procSym) const - { - for (auto itr : level) - procSym(itr.second); - } - void findFunctionNameList(const TString& name, TVector& list) { size_t parenAt = name.find_first_of('('); @@ -807,15 +801,6 @@ class TSymbolTable { return symbol; } - template void processAllSymbols(ProcSymFn procSym) - { - int level = currentLevel(); - do { - table[level]->processAllSymbols(procSym); - --level; - } while (level >= 0); - } - void retargetSymbol(const TString& from, const TString& to) { int level = currentLevel(); table[level]->retargetSymbol(from, to); diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 12e0137d0e..828dabec47 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -281,6 +281,8 @@ INSTANTIATE_TEST_SUITE_P( "glsl.es320.subgroupShuffleRelative.comp", "glsl.es320.subgroupQuad.comp", "glsl.es320.subgroupVote.comp", + "glsl.es320.extTextureShadowLod.frag", + "glsl.ext.textureShadowLod.frag", "terminate.frag", "terminate.vert", "negativeWorkGroupSize.comp", diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index f9390a28a1..80eff330e7 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -537,8 +537,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.atomicAdd.bufferReference.comp", "spv.fragmentShaderBarycentric3.frag", "spv.fragmentShaderBarycentric4.frag", - "spv.ext.texture_shadow_lod.frag", - "spv.ext.texture_shadow_lod.error.frag", + "spv.ext.textureShadowLod.frag", + "spv.ext.textureShadowLod.error.frag", "spv.floatFetch.frag", "spv.atomicRvalue.error.vert", })), From 715e36a0cc98b0b77ee7435d8de8c8f31ef101c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 06:10:18 +0000 Subject: [PATCH 296/594] Bump lukka/get-cmake from 3.27.6 to 3.27.7 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.27.6 to 3.27.7. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/aa2e3cb80fe066994ceef094c573ed89500610e6...8be6cca406b575906541e8e3b885d46f416bba39) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 228fe6014f..68cad7a3d3 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -48,7 +48,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -128,7 +128,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -201,7 +201,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 9a3a96a9a8..ca0b9a42b5 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -24,7 +24,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -74,7 +74,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -126,7 +126,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -175,7 +175,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - name: Install GoogleTest run: | # check out pre-breakage version of googletest; can be deleted when @@ -216,7 +216,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' @@ -260,7 +260,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -289,7 +289,7 @@ jobs: - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 with: python-version: '3.7' - - uses: lukka/get-cmake@aa2e3cb80fe066994ceef094c573ed89500610e6 # v3.27.6 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: From 43ec5f13f4bb0771fe3c29e02ab79068c9274498 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 06:10:28 +0000 Subject: [PATCH 297/594] Bump github/codeql-action from 2.21.9 to 2.22.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.21.9 to 2.22.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/ddccb873888234080b77e9bc2d4764d5ccaaccf9...2cb752a87e96af96708ab57187ab6372ee1973ab) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7cc4e59287..f225559a81 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@ddccb873888234080b77e9bc2d4764d5ccaaccf9 # v2.21.9 + uses: github/codeql-action/upload-sarif@2cb752a87e96af96708ab57187ab6372ee1973ab # v2.22.0 with: sarif_file: results.sarif From 277d09e679f0f4d9469c463c00cb11c6a040e65f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Oct 2023 06:10:36 +0000 Subject: [PATCH 298/594] Bump ossf/scorecard-action from 2.2.0 to 2.3.0 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.2.0 to 2.3.0. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/08b4669551908b1024bb425080c797723083c031...483ef80eb98fb506c348f7d62e28055e49fe2398) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f225559a81..fe3833a5ba 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@08b4669551908b1024bb425080c797723083c031 # v2.2.0 + uses: ossf/scorecard-action@483ef80eb98fb506c348f7d62e28055e49fe2398 # v2.3.0 with: results_file: results.sarif results_format: sarif From 4ce1a1a68d1a92e63cf354a98c9431a90072edf1 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 11 Oct 2023 15:47:07 -0600 Subject: [PATCH 299/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index a523015e0b..1cbcb09646 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "a996591b1c67e789e88e99ae3881272f5fc47374" + "commit" : "360d469b9eac54d6c6e20f609f9ec35e3a5380ad" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "f8a4f5d876e56c9930344041171192f04f244f61" + "commit" : "e867c06631767a2d96424cbec530f9ee5e78180f" } ] } From 48f9ed8b08be974f4e463ef38136c8f23513b2cf Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 6 Oct 2023 17:50:27 -0400 Subject: [PATCH 300/594] spirv: only set LocalSizeId mode when necessary SPIR-V 1.6 added the LocalSizeId execution mode that allows using spec constants for setting the work-group size, however it does not deprecate the LocalSize mode. This change causes the LocalSizeId mode to only be used when at least one of the workgroup size is actually specified with a spec constant. Fixes #3200 --- SPIRV/GlslangToSpv.cpp | 37 ++++--- .../hlsl.structcopylogical.comp.out | 100 +++++++++--------- 2 files changed, 73 insertions(+), 64 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 6eae76d689..576c680f96 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1741,23 +1741,31 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, } break; - case EShLangCompute: + case EShLangCompute: { builder.addCapability(spv::CapabilityShader); - if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6) { - std::vector dimConstId; - for (int dim = 0; dim < 3; ++dim) { - bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet); - dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst)); - if (specConst) { - builder.addDecoration(dimConstId.back(), spv::DecorationSpecId, - glslangIntermediate->getLocalSizeSpecId(dim)); + bool needSizeId = false; + for (int dim = 0; dim < 3; ++dim) { + if ((glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet)) { + needSizeId = true; + break; } - } - builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId); + } + if (glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_6 && needSizeId) { + std::vector dimConstId; + for (int dim = 0; dim < 3; ++dim) { + bool specConst = (glslangIntermediate->getLocalSizeSpecId(dim) != glslang::TQualifier::layoutNotSet); + dimConstId.push_back(builder.makeUintConstant(glslangIntermediate->getLocalSize(dim), specConst)); + if (specConst) { + builder.addDecoration(dimConstId.back(), spv::DecorationSpecId, + glslangIntermediate->getLocalSizeSpecId(dim)); + needSizeId = true; + } + } + builder.addExecutionModeId(shaderEntry, spv::ExecutionModeLocalSizeId, dimConstId); } else { - builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), - glslangIntermediate->getLocalSize(1), - glslangIntermediate->getLocalSize(2)); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeLocalSize, glslangIntermediate->getLocalSize(0), + glslangIntermediate->getLocalSize(1), + glslangIntermediate->getLocalSize(2)); } if (glslangIntermediate->getLayoutDerivativeModeNone() == glslang::LayoutDerivativeGroupQuads) { builder.addCapability(spv::CapabilityComputeDerivativeGroupQuadsNV); @@ -1769,6 +1777,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExtension(spv::E_SPV_NV_compute_shader_derivatives); } break; + } case EShLangTessEvaluation: case EShLangTessControl: builder.addCapability(spv::CapabilityTessellation); diff --git a/Test/baseResults/hlsl.structcopylogical.comp.out b/Test/baseResults/hlsl.structcopylogical.comp.out index 31206566f4..a9b849be71 100644 --- a/Test/baseResults/hlsl.structcopylogical.comp.out +++ b/Test/baseResults/hlsl.structcopylogical.comp.out @@ -248,17 +248,17 @@ local_size = (128, 1, 1) Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 4 "main" 17 32 57 74 - ExecutionModeId 4 LocalSizeId 7 8 8 + EntryPoint GLCompute 4 "main" 16 32 57 74 + ExecutionMode 4 LocalSize 128 1 1 Source HLSL 500 Name 4 "main" - Name 12 "@main(u1;" - Name 11 "id" - Name 14 "MyStruct" - MemberName 14(MyStruct) 0 "a" - MemberName 14(MyStruct) 1 "b" - MemberName 14(MyStruct) 2 "c" - Name 17 "s" + Name 10 "@main(u1;" + Name 9 "id" + Name 12 "MyStruct" + MemberName 12(MyStruct) 0 "a" + MemberName 12(MyStruct) 1 "b" + MemberName 12(MyStruct) 2 "c" + Name 16 "s" Name 25 "count" Name 26 "MyStruct" MemberName 26(MyStruct) 0 "a" @@ -300,20 +300,20 @@ local_size = (128, 1, 1) 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 - 7: 6(int) Constant 128 - 8: 6(int) Constant 1 - 9: TypePointer Function 6(int) - 10: TypeFunction 2 9(ptr) - 14(MyStruct): TypeStruct 6(int) 6(int) 6(int) - 15: TypeArray 14(MyStruct) 7 - 16: TypePointer Workgroup 15 - 17(s): 16(ptr) Variable Workgroup - 18: TypeInt 32 1 - 19: 18(int) Constant 0 + 7: TypePointer Function 6(int) + 8: TypeFunction 2 7(ptr) + 12(MyStruct): TypeStruct 6(int) 6(int) 6(int) + 13: 6(int) Constant 128 + 14: TypeArray 12(MyStruct) 13 + 15: TypePointer Workgroup 14 + 16(s): 15(ptr) Variable Workgroup + 17: TypeInt 32 1 + 18: 17(int) Constant 0 + 19: 6(int) Constant 1 20: 6(int) Constant 2 21: 6(int) Constant 3 - 22:14(MyStruct) ConstantComposite 8 20 21 - 23: TypePointer Workgroup 14(MyStruct) + 22:12(MyStruct) ConstantComposite 19 20 21 + 23: TypePointer Workgroup 12(MyStruct) 26(MyStruct): TypeStruct 6(int) 6(int) 6(int) 27: TypeRuntimeArray 26(MyStruct) 28(MyStructs): TypeStruct 6(int) 27 @@ -322,64 +322,64 @@ local_size = (128, 1, 1) 31: TypePointer StorageBuffer 30(sb) 32(sb): 31(ptr) Variable StorageBuffer 33: TypePointer StorageBuffer 6(int) - 36: TypePointer Function 14(MyStruct) + 36: TypePointer Function 12(MyStruct) 40: TypeBool - 47: 18(int) Constant 1 + 47: 17(int) Constant 1 49: TypePointer StorageBuffer 26(MyStruct) 54: TypeRuntimeArray 26(MyStruct) 55(o): TypeStruct 54 56: TypePointer StorageBuffer 55(o) 57(o): 56(ptr) Variable StorageBuffer 61: 6(int) Constant 0 - 67: 18(int) Constant 2 + 67: 17(int) Constant 2 73: TypePointer Input 6(int) 74(id): 73(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 72(id): 9(ptr) Variable Function - 76(param): 9(ptr) Variable Function + 72(id): 7(ptr) Variable Function + 76(param): 7(ptr) Variable Function 75: 6(int) Load 74(id) Store 72(id) 75 77: 6(int) Load 72(id) Store 76(param) 77 - 78: 2 FunctionCall 12(@main(u1;) 76(param) + 78: 2 FunctionCall 10(@main(u1;) 76(param) Return FunctionEnd - 12(@main(u1;): 2 Function None 10 - 11(id): 9(ptr) FunctionParameter - 13: Label - 25(count): 9(ptr) Variable Function + 10(@main(u1;): 2 Function None 8 + 9(id): 7(ptr) FunctionParameter + 11: Label + 25(count): 7(ptr) Variable Function 37(ms): 36(ptr) Variable Function - 24: 23(ptr) AccessChain 17(s) 19 + 24: 23(ptr) AccessChain 16(s) 18 Store 24 22 - 34: 33(ptr) AccessChain 32(sb) 19 19 19 + 34: 33(ptr) AccessChain 32(sb) 18 18 18 35: 6(int) Load 34 Store 25(count) 35 - 38: 6(int) Load 11(id) + 38: 6(int) Load 9(id) 39: 6(int) Load 25(count) 41: 40(bool) UGreaterThan 38 39 - 42: 6(int) Load 11(id) + 42: 6(int) Load 9(id) 43: 6(int) Load 25(count) 44: 6(int) ISub 42 43 - 45: 23(ptr) AccessChain 17(s) 44 - 46:14(MyStruct) Load 45 - 48: 6(int) Load 11(id) - 50: 49(ptr) AccessChain 32(sb) 19 19 47 48 + 45: 23(ptr) AccessChain 16(s) 44 + 46:12(MyStruct) Load 45 + 48: 6(int) Load 9(id) + 50: 49(ptr) AccessChain 32(sb) 18 18 47 48 51:26(MyStruct) Load 50 - 52:14(MyStruct) CopyLogical 51 - 53:14(MyStruct) Select 41 46 52 + 52:12(MyStruct) CopyLogical 51 + 53:12(MyStruct) Select 41 46 52 Store 37(ms) 53 - 58: 33(ptr) AccessChain 57(o) 19 19 19 - 59: 9(ptr) AccessChain 37(ms) 19 + 58: 33(ptr) AccessChain 57(o) 18 18 18 + 59: 7(ptr) AccessChain 37(ms) 18 60: 6(int) Load 59 - 62: 6(int) AtomicIAdd 58 8 61 60 - 63: 33(ptr) AccessChain 57(o) 19 19 47 - 64: 9(ptr) AccessChain 37(ms) 47 + 62: 6(int) AtomicIAdd 58 19 61 60 + 63: 33(ptr) AccessChain 57(o) 18 18 47 + 64: 7(ptr) AccessChain 37(ms) 47 65: 6(int) Load 64 - 66: 6(int) AtomicIAdd 63 8 61 65 - 68: 33(ptr) AccessChain 57(o) 19 19 67 - 69: 9(ptr) AccessChain 37(ms) 67 + 66: 6(int) AtomicIAdd 63 19 61 65 + 68: 33(ptr) AccessChain 57(o) 18 18 67 + 69: 7(ptr) AccessChain 37(ms) 67 70: 6(int) Load 69 - 71: 6(int) AtomicIAdd 68 8 61 70 + 71: 6(int) AtomicIAdd 68 19 61 70 Return FunctionEnd From 0504953b3501f8307c94db525608a75bf7b226c1 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 12 Oct 2023 13:42:32 -0400 Subject: [PATCH 301/594] spirv: don't emit invalid debuginfo for buffer references Currently no debug info is emitted for buffer reference types, which resulted in the SPIR-V backend code asserting when trying to emit the debug info for struct member that had such a type. Instead, the code now skips such struct members. Full debug info for buffer references may require forward references in the debug info instructions, which is currently prohibited by the spec. --- SPIRV/SpvBuilder.cpp | 5 +- .../spv.debuginfo.bufferref.glsl.frag.out | 186 ++++++++++++++++++ Test/spv.debuginfo.bufferref.glsl.frag | 28 +++ gtests/Spv.FromFile.cpp | 1 + 4 files changed, 219 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out create mode 100644 Test/spv.debuginfo.bufferref.glsl.frag diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 49244bb393..d42f728816 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1029,7 +1029,10 @@ Id Builder::makeCompositeDebugType(std::vector const& memberTypes, char cons for(auto const memberType : memberTypes) { assert(debugTypeLocs.find(memberType) != debugTypeLocs.end()); - memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType])); + // There _should_ be debug types for all the member types but currently buffer references + // do not have member debug info generated. + if (debugId[memberType]) + memberDebugTypes.emplace_back(makeMemberDebugType(memberType, debugTypeLocs[memberType])); // TODO: Need to rethink this method of passing location information. // debugTypeLocs.erase(memberType); diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out new file mode 100644 index 0000000000..f52e001a9f --- /dev/null +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -0,0 +1,186 @@ +spv.debuginfo.bufferref.glsl.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 131 + + Capability Shader + Capability PhysicalStorageBufferAddressesEXT + Extension "SPV_KHR_non_semantic_info" + Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_KHR_storage_buffer_storage_class" + 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" + MemoryModel PhysicalStorageBuffer64EXT GLSL450 + EntryPoint Fragment 14 "main" 69 122 + ExecutionMode 14 OriginUpperLeft + 1: String "" + 8: String "uint" + 15: String "main" + 18: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 31: String "Mesh" + 33: String "float" + 39: String "data" + 43: String "MeshVertexPositions" + 47: String "meshData" + 59: String "PerPass_meshes" + 63: String "perPass_meshes" + 65: String "int" + 71: String "tri_idx0" + 86: String "vertex_pos0" + 124: String "out_fragColor" + SourceExtension "GL_EXT_buffer_reference" + Name 14 "main" + Name 29 "Mesh" + MemberName 29(Mesh) 0 "positions" + Name 37 "MeshVertexPositions" + MemberName 37(MeshVertexPositions) 0 "data" + Name 45 "meshData" + Name 50 "Mesh" + MemberName 50(Mesh) 0 "positions" + Name 54 "PerPass_meshes" + MemberName 54(PerPass_meshes) 0 "data" + Name 61 "perPass_meshes" + Name 69 "tri_idx0" + Name 84 "vertex_pos0" + Name 122 "out_fragColor" + Decorate 35 ArrayStride 4 + MemberDecorate 37(MeshVertexPositions) 0 Offset 0 + Decorate 37(MeshVertexPositions) Block + MemberDecorate 50(Mesh) 0 Offset 0 + Decorate 52 ArrayStride 8 + MemberDecorate 54(PerPass_meshes) 0 NonWritable + MemberDecorate 54(PerPass_meshes) 0 Offset 0 + Decorate 54(PerPass_meshes) Block + Decorate 61(perPass_meshes) DescriptorSet 0 + Decorate 61(perPass_meshes) Binding 0 + Decorate 69(tri_idx0) Flat + Decorate 69(tri_idx0) Location 0 + Decorate 122(out_fragColor) Location 0 + Decorate 45(meshData) DecorationAliasedPointerEXT + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 + 20: 7(int) Constant 1 + 21: 7(int) Constant 4 + 22: 7(int) Constant 2 + 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 + 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 + 27: 7(int) Constant 21 + TypeForwardPointer 28 PhysicalStorageBufferEXT + 29(Mesh): TypeStruct 28 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 20 17 27 12 19 31 12 13 + 32: TypeFloat 32 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 33 10 13 12 + 35: TypeRuntimeArray 32(float) + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 34 12 +37(MeshVertexPositions): TypeStruct 35 + 40: 7(int) Constant 5 + 41: 7(int) Constant 9 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 39 36 17 40 41 12 12 13 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 43 20 17 27 12 19 43 12 13 38 + 28: TypePointer PhysicalStorageBufferEXT 37(MeshVertexPositions) + 44: TypePointer Function 29(Mesh) + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 30 17 27 12 16 21 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 50(Mesh): TypeStruct 28(ptr) + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 20 17 27 12 19 31 12 13 + 52: TypeRuntimeArray 50(Mesh) + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 51 12 +54(PerPass_meshes): TypeStruct 52 + 56: 7(int) Constant 13 + 57: 7(int) Constant 8 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 39 53 17 56 57 12 12 13 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 59 20 17 27 12 19 59 12 13 55 + 60: TypePointer StorageBuffer 54(PerPass_meshes) +61(perPass_meshes): 60(ptr) Variable StorageBuffer + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 63 58 17 27 12 19 63 61(perPass_meshes) 57 + 64: TypeInt 32 1 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 65 10 21 12 + 67: 64(int) Constant 0 + 68: TypePointer Input 7(int) + 69(tri_idx0): 68(ptr) Variable Input + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 71 9 17 27 12 19 71 69(tri_idx0) 57 + 73: TypePointer StorageBuffer 50(Mesh) + 77: TypePointer Function 28(ptr) + 80: 7(int) Constant 23 + 81: TypeVector 32(float) 3 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 34 13 + 83: TypePointer Function 81(fvec3) + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 86 82 17 80 12 16 21 + 89: 7(int) Constant 25 + 95: TypePointer PhysicalStorageBufferEXT 32(float) + 99: 7(int) Constant 24 + 118: 7(int) Constant 27 + 119: TypeVector 32(float) 4 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 34 21 + 121: TypePointer Output 119(fvec4) +122(out_fragColor): 121(ptr) Variable Output + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 120 17 118 12 19 124 122(out_fragColor) 57 + 126: 32(float) Constant 1065353216 + Line 1 20 11 + 14(main): 4 Function None 5 + 23: Label + 45(meshData): 44(ptr) Variable Function + 84(vertex_pos0): 83(ptr) Variable Function + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 45(meshData) 49 + 72: 7(int) Load 69(tri_idx0) + 74: 73(ptr) AccessChain 61(perPass_meshes) 67 72 + 75: 50(Mesh) Load 74 + 76: 28(ptr) CompositeExtract 75 0 + 78: 77(ptr) AccessChain 45(meshData) 67 + Store 78 76 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 84(vertex_pos0) 49 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 89 89 12 12 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12 + 91: 77(ptr) AccessChain 45(meshData) 67 + 92: 28(ptr) Load 91 + 93: 7(int) Load 69(tri_idx0) + 94: 7(int) IMul 13 93 + 96: 95(ptr) AccessChain 92 67 94 + 97: 32(float) Load 96 Aligned 4 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 99 99 12 12 + 100: 77(ptr) AccessChain 45(meshData) 67 + 101: 28(ptr) Load 100 + 102: 7(int) Load 69(tri_idx0) + 103: 7(int) IMul 13 102 + 104: 7(int) IAdd 103 20 + 105: 95(ptr) AccessChain 101 67 104 + 106: 32(float) Load 105 Aligned 4 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 89 89 12 12 + 108: 77(ptr) AccessChain 45(meshData) 67 + 109: 28(ptr) Load 108 + 110: 7(int) Load 69(tri_idx0) + 111: 7(int) IMul 13 110 + 112: 7(int) IAdd 111 22 + 113: 95(ptr) AccessChain 109 67 112 + 114: 32(float) Load 113 Aligned 4 + 115: 81(fvec3) CompositeConstruct 97 106 114 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12 + Store 84(vertex_pos0) 115 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 118 118 12 12 + 125: 81(fvec3) Load 84(vertex_pos0) + 127: 32(float) CompositeExtract 125 0 + 128: 32(float) CompositeExtract 125 1 + 129: 32(float) CompositeExtract 125 2 + 130: 119(fvec4) CompositeConstruct 127 128 129 126 + Store 122(out_fragColor) 130 + Return + FunctionEnd diff --git a/Test/spv.debuginfo.bufferref.glsl.frag b/Test/spv.debuginfo.bufferref.glsl.frag new file mode 100644 index 0000000000..c2002fa2ce --- /dev/null +++ b/Test/spv.debuginfo.bufferref.glsl.frag @@ -0,0 +1,28 @@ +#version 450 core +#extension GL_EXT_buffer_reference : enable + +layout(buffer_reference, std430) buffer MeshVertexPositions { + float data[]; +}; + +struct Mesh { + MeshVertexPositions positions; +}; + +layout(set = 0, binding = 0) readonly buffer PerPass_meshes { + Mesh data[]; +} perPass_meshes; + +layout(location = 0) out vec4 out_fragColor; + +layout(location = 0) in flat uint tri_idx0; + +void main() { + Mesh meshData = perPass_meshes.data[tri_idx0]; + + vec3 vertex_pos0 = vec3(meshData.positions.data[3 * tri_idx0], + meshData.positions.data[3 * tri_idx0 + 1], + meshData.positions.data[3 * tri_idx0 + 2]); + + out_fragColor = vec4(vertex_pos0, 1.0); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 80eff330e7..90fb2fc668 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -931,6 +931,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.debuginfo.glsl.geom", "spv.debuginfo.glsl.tesc", "spv.debuginfo.glsl.tese", + "spv.debuginfo.bufferref.glsl.frag", "spv.debuginfo.const_params.glsl.comp", "spv.debuginfo.scalar_types.glsl.frag", })), From be564292f00c5bf0d7251c11f1c9618eb1117762 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Fri, 13 Oct 2023 16:51:50 -0600 Subject: [PATCH 302/594] Update CHANGES for release 13.1.0 --- CHANGES.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 74c454202b..88ddf068fc 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 13.1.0 2023-10-13 +* Support GL_EXT_texture_shadow_lod +* Support GL_NV_displacement_micromap +* Fix ByteAddressBuffer when used a function parameter +* Add more verbose messages if SPIRV-Tools is not found +* Fix names for explicitly sized types when emitting nonsemantic debug info +* Emit error for r-value arguments in atomic memory operations +* Add --no-link option +* Beautify preprocessor output format +* Fix race condition in glslangValidator +* Only set LocalSizeId mode when necessary +* Don't emit invalid debug info for buffer references + ## 13.0.0 2023-08-23 ### Breaking changes From fd1f96d2020496760290e5cef5d68ae83e5dd5c4 Mon Sep 17 00:00:00 2001 From: Andrew MacDonald Date: Mon, 16 Oct 2023 10:45:57 -0300 Subject: [PATCH 303/594] Add missing initialization of `compile_only` field for SPIRV C interface --- SPIRV/CInterface/spirv_c_interface.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index d56ad46e24..5e7316e4fa 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -92,6 +92,7 @@ GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, g spv_options.optimize_size = false; spv_options.disassemble = false; spv_options.validate = true; + spv_options.compile_only = false; glslang_program_SPIRV_generate_with_options(program, stage, &spv_options); } From 36d08c0d940cf307a23928299ef52c7970d8cee6 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Mon, 16 Oct 2023 17:35:05 -0600 Subject: [PATCH 304/594] Update CHANGES for release 13.1.1 --- CHANGES.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 88ddf068fc..8a97ff4f72 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,9 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 13.1.1 2023-10-16 +* Initialize compile_only field in C interface + ## 13.1.0 2023-10-13 * Support GL_EXT_texture_shadow_lod * Support GL_NV_displacement_micromap From 6a6fcc292edfcb686f6c411cbda65472c26b07f0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 06:30:33 +0000 Subject: [PATCH 305/594] Bump actions/setup-python from 4.7.0 to 4.7.1 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.7.0 to 4.7.1. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/61a6322f88396a6271a6ee3565807d608ecaddd1...65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 14 +++++++------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 68cad7a3d3..f8de58a5f9 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -49,7 +49,7 @@ jobs: steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies @@ -129,7 +129,7 @@ jobs: steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - name: Install GoogleTest @@ -202,7 +202,7 @@ jobs: steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - name: Install GoogleTest diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index ca0b9a42b5..51c1ba52e7 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -25,7 +25,7 @@ jobs: steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - name: Setup ccache @@ -75,7 +75,7 @@ jobs: steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - name: Setup ccache @@ -123,7 +123,7 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 @@ -172,7 +172,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 @@ -217,7 +217,7 @@ jobs: steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - name: Install GoogleTest @@ -257,7 +257,7 @@ jobs: NDK: [23.2.8568313, 25.2.9519653] steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 @@ -286,7 +286,7 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 - - uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 From ebb0a8b28e5ea7a13146a24b3ad87b1966dbdfa3 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Oct 2023 06:30:42 +0000 Subject: [PATCH 306/594] Bump github/codeql-action from 2.22.0 to 2.22.3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.0 to 2.22.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/2cb752a87e96af96708ab57187ab6372ee1973ab...0116bc2df50751f9724a2e35ef1f24d22f90e4e1) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index fe3833a5ba..9826e9c433 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2cb752a87e96af96708ab57187ab6372ee1973ab # v2.22.0 + uses: github/codeql-action/upload-sarif@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3 with: sarif_file: results.sarif From 7fa0731a803e8c02347756df41e0b606a4a34e2d Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 18 Oct 2023 12:46:46 -0400 Subject: [PATCH 307/594] Initialize spv_options in glslang_program_SPIRV_generate This will prevent any recurrence of issues like the one addressed by PR #3364. --- SPIRV/CInterface/spirv_c_interface.cpp | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index 5e7316e4fa..f421ea5a8e 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -83,16 +83,9 @@ static EShLanguage c_shader_stage(glslang_stage_t stage) GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage) { - glslang_spv_options_t spv_options; - spv_options.generate_debug_info = false; - spv_options.strip_debug_info = false; - spv_options.emit_nonsemantic_shader_debug_info = false; - spv_options.emit_nonsemantic_shader_debug_source = false; + glslang_spv_options_t spv_options {}; spv_options.disable_optimizer = true; - spv_options.optimize_size = false; - spv_options.disassemble = false; spv_options.validate = true; - spv_options.compile_only = false; glslang_program_SPIRV_generate_with_options(program, stage, &spv_options); } From ab030e9fc2135e6792ced68eb486e2f4f8098ad7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Oct 2023 06:36:17 +0000 Subject: [PATCH 308/594] Bump actions/checkout from 4.1.0 to 4.1.1 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.0 to 4.1.1. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/8ade135a41bc03ea155e62e844d188df1ea18608...b4ffde65f46336ab88eb53be808477a3936bae11) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 14 +++++++------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index f8de58a5f9..06dc34f10f 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -47,7 +47,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: @@ -127,7 +127,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: @@ -200,7 +200,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 51c1ba52e7..fcadd98b21 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,7 +23,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: @@ -73,7 +73,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: @@ -122,7 +122,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -171,7 +171,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -215,7 +215,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: @@ -256,7 +256,7 @@ jobs: # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android NDK: [23.2.8568313, 25.2.9519653] steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -285,7 +285,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 9826e9c433..82e79d672f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@8ade135a41bc03ea155e62e844d188df1ea18608 # v4.1.0 + uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 with: persist-credentials: false From a2fb1ba2ad7227cc5a5478728589ccba1d5a2159 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Oct 2023 06:36:07 +0000 Subject: [PATCH 309/594] Bump github/codeql-action from 2.22.3 to 2.22.4 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.3 to 2.22.4. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/0116bc2df50751f9724a2e35ef1f24d22f90e4e1...49abf0ba24d0b7953cb586944e918a0b92074c80) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 82e79d672f..0abb48eb86 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0116bc2df50751f9724a2e35ef1f24d22f90e4e1 # v2.22.3 + uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 with: sarif_file: results.sarif From 979423d84f49eb6682fabda025a8e908356268bd Mon Sep 17 00:00:00 2001 From: Chao Chen Date: Thu, 12 Oct 2023 05:42:55 +0100 Subject: [PATCH 310/594] Add correct line number to OpDebugFunction and OpDebugScope for function: 1. Pull OpDebugFunction, OpDebugScope and OpDebugVariable for params out of makeFunctionEntry. 2. Put above in a separate function called setupDebugFunctionEntry, which also accept line number and set it correctly in builder. 3. Call setupDebugFunctionEntry in makeFunction. Also special case handle entry function since it's created ealier elsewhere. --- SPIRV/GlslangToSpv.cpp | 14 +- SPIRV/SpvBuilder.cpp | 65 +- SPIRV/SpvBuilder.h | 3 + SPIRV/spvIR.h | 1 + .../spv.debuginfo.bufferref.glsl.frag.out | 299 +-- .../spv.debuginfo.const_params.glsl.comp.out | 120 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 2354 +++++++++-------- Test/baseResults/spv.debuginfo.glsl.frag.out | 2088 +++++++-------- Test/baseResults/spv.debuginfo.glsl.geom.out | 649 ++--- Test/baseResults/spv.debuginfo.glsl.tesc.out | 1333 +++++----- Test/baseResults/spv.debuginfo.glsl.tese.out | 821 +++--- Test/baseResults/spv.debuginfo.glsl.vert.out | 1019 +++---- Test/baseResults/spv.debuginfo.hlsl.comp.out | 2332 ++++++++-------- Test/baseResults/spv.debuginfo.hlsl.frag.out | 2144 +++++++-------- Test/baseResults/spv.debuginfo.hlsl.geom.out | 767 +++--- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 1704 ++++++------ Test/baseResults/spv.debuginfo.hlsl.tese.out | 1001 +++---- Test/baseResults/spv.debuginfo.hlsl.vert.out | 1055 ++++---- .../spv.debuginfo.scalar_types.glsl.frag.out | 313 +-- 19 files changed, 9071 insertions(+), 9011 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 576c680f96..b6ac812900 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -5403,9 +5403,17 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF for (int f = 0; f < (int)glslFunctions.size(); ++f) { glslang::TIntermAggregate* glslFunction = glslFunctions[f]->getAsAggregate(); - if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction || isShaderEntryPoint(glslFunction)) + if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction) continue; - + if (isShaderEntryPoint(glslFunction)) { + if (glslangIntermediate->getSource() != glslang::EShSourceHlsl) { + builder.setupDebugFunctionEntry(shaderEntry, glslangIntermediate->getEntryPointMangledName().c_str(), + glslFunction->getLoc().line, + std::vector(), // main function has no param + std::vector()); + } + continue; + } // We're on a user function. Set up the basic interface for the function now, // so that it's available to call. Translating the body will happen later. // @@ -5455,6 +5463,8 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF TranslatePrecisionDecoration(glslFunction->getType()), convertGlslangToSpvType(glslFunction->getType()), glslFunction->getName().c_str(), convertGlslangLinkageToSpv(glslFunction->getLinkType()), paramTypes, paramNames, paramDecorations, &functionBlock); + builder.setupDebugFunctionEntry(function, glslFunction->getName().c_str(), glslFunction->getLoc().line, + paramTypes, paramNames); if (implicitThis) function->setImplicitThis(); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index d42f728816..7586ecf59d 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2101,12 +2101,8 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const } } - // Make the debug function instruction + // reset last debug scope if (emitNonSemanticShaderDebugInfo) { - Id nameId = getStringId(unmangleFunctionName(name)); - Id debugFuncId = makeDebugFunction(function, nameId, typeId); - debugId[funcId] = debugFuncId; - currentDebugScopeId.push(debugFuncId); lastDebugScopeId = NoResult; } @@ -2116,41 +2112,62 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const function->addBlock(*entry); setBuildPoint(*entry); + if (name) + addName(function->getId(), name); + + functions.push_back(std::unique_ptr(function)); + + return function; +} + +void Builder::setupDebugFunctionEntry(Function* function, const char* name, int line, const std::vector& paramTypes, + const std::vector& paramNames) +{ + + if (!emitNonSemanticShaderDebugInfo) + return; + + currentLine = line; + Id nameId = getStringId(unmangleFunctionName(name)); + Id funcTypeId = function->getFuncTypeId(); + assert(debugId[funcTypeId] != 0); + Id funcId = function->getId(); + + assert(funcId != 0); + + // Make the debug function instruction + Id debugFuncId = makeDebugFunction(function, nameId, funcTypeId); + debugId[funcId] = debugFuncId; + currentDebugScopeId.push(debugFuncId); + // DebugScope and DebugLine for parameter DebugDeclares - if (emitNonSemanticShaderDebugInfo && (int)paramTypes.size() > 0) { + assert(paramTypes.size() == paramNames.size()); + if ((int)paramTypes.size() > 0) { addDebugScopeAndLine(currentFileId, currentLine, 0); - } - if (emitNonSemanticShaderDebugInfo) { - assert(paramTypes.size() == paramNames.size()); - for(size_t p = 0; p < paramTypes.size(); ++p) - { + Id firstParamId = function->getParamId(0); + + for (size_t p = 0; p < paramTypes.size(); ++p) { auto getParamTypeId = [this](Id const& typeId) { if (isPointerType(typeId) || isArrayType(typeId)) { return getContainedTypeId(typeId); - } - else { + } else { return typeId; } }; auto const& paramName = paramNames[p]; - auto const debugLocalVariableId = createDebugLocalVariable(debugId[getParamTypeId(paramTypes[p])], paramName, p+1); + auto const debugLocalVariableId = + createDebugLocalVariable(debugId[getParamTypeId(paramTypes[p])], paramName, p + 1); + debugId[firstParamId + p] = debugLocalVariableId; makeDebugDeclare(debugLocalVariableId, firstParamId + p); } } - if (name) - addName(function->getId(), name); - - functions.push_back(std::unique_ptr(function)); - // Clear debug scope stack if (emitNonSemanticShaderDebugInfo) currentDebugScopeId.pop(); - - return function; } Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id funcTypeId) @@ -2166,13 +2183,13 @@ Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunction); type->addIdOperand(nameId); type->addIdOperand(debugId[funcTypeId]); - type->addIdOperand(makeDebugSource(currentFileId)); // Will be fixed later when true filename available - type->addIdOperand(makeUintConstant(currentLine)); // Will be fixed later when true line available + type->addIdOperand(makeDebugSource(currentFileId)); // TODO: This points to file of definition instead of declaration + type->addIdOperand(makeUintConstant(currentLine)); // TODO: This points to line of definition instead of declaration type->addIdOperand(makeUintConstant(0)); // column type->addIdOperand(makeDebugCompilationUnit()); // scope type->addIdOperand(nameId); // linkage name type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); - type->addIdOperand(makeUintConstant(currentLine)); // TODO(greg-lunarg): correct scope line + type->addIdOperand(makeUintConstant(currentLine)); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); return funcId; diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 2e1c07d49d..1a85b1d673 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -237,6 +237,9 @@ class Builder { Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId); Id makeDebugLexicalBlock(uint32_t line); std::string unmangleFunctionName(std::string const& name) const; + void setupDebugFunctionEntry(Function* function, const char* name, int line, + const std::vector& paramTypes, + const std::vector& paramNames); // accelerationStructureNV type Id makeAccelerationStructureType(); diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 1f8e28ff46..8849f42e75 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -352,6 +352,7 @@ class Function { void addLocalVariable(std::unique_ptr inst); Id getReturnType() const { return functionInstruction.getTypeId(); } Id getFuncId() const { return functionInstruction.getResultId(); } + Id getFuncTypeId() const { return functionInstruction.getIdOperand(1); } void setReturnPrecision(Decoration precision) { if (precision == DecorationRelaxedPrecision) diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index f52e001a9f..f196fb0b5a 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.bufferref.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 131 +// Id's are bound by 132 Capability Shader Capability PhysicalStorageBufferAddressesEXT @@ -11,12 +11,12 @@ spv.debuginfo.bufferref.glsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 - EntryPoint Fragment 14 "main" 69 122 + EntryPoint Fragment 14 "main" 70 123 ExecutionMode 14 OriginUpperLeft 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 16: String "main" + 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -24,46 +24,46 @@ spv.debuginfo.bufferref.glsl.frag // OpModuleProcessed entry-point main #line 1 " - 31: String "Mesh" - 33: String "float" - 39: String "data" - 43: String "MeshVertexPositions" - 47: String "meshData" - 59: String "PerPass_meshes" - 63: String "perPass_meshes" - 65: String "int" - 71: String "tri_idx0" - 86: String "vertex_pos0" - 124: String "out_fragColor" + 32: String "Mesh" + 34: String "float" + 40: String "data" + 44: String "MeshVertexPositions" + 48: String "meshData" + 60: String "PerPass_meshes" + 64: String "perPass_meshes" + 66: String "int" + 72: String "tri_idx0" + 87: String "vertex_pos0" + 125: String "out_fragColor" SourceExtension "GL_EXT_buffer_reference" Name 14 "main" - Name 29 "Mesh" - MemberName 29(Mesh) 0 "positions" - Name 37 "MeshVertexPositions" - MemberName 37(MeshVertexPositions) 0 "data" - Name 45 "meshData" - Name 50 "Mesh" - MemberName 50(Mesh) 0 "positions" - Name 54 "PerPass_meshes" - MemberName 54(PerPass_meshes) 0 "data" - Name 61 "perPass_meshes" - Name 69 "tri_idx0" - Name 84 "vertex_pos0" - Name 122 "out_fragColor" - Decorate 35 ArrayStride 4 - MemberDecorate 37(MeshVertexPositions) 0 Offset 0 - Decorate 37(MeshVertexPositions) Block - MemberDecorate 50(Mesh) 0 Offset 0 - Decorate 52 ArrayStride 8 - MemberDecorate 54(PerPass_meshes) 0 NonWritable - MemberDecorate 54(PerPass_meshes) 0 Offset 0 - Decorate 54(PerPass_meshes) Block - Decorate 61(perPass_meshes) DescriptorSet 0 - Decorate 61(perPass_meshes) Binding 0 - Decorate 69(tri_idx0) Flat - Decorate 69(tri_idx0) Location 0 - Decorate 122(out_fragColor) Location 0 - Decorate 45(meshData) DecorationAliasedPointerEXT + Name 30 "Mesh" + MemberName 30(Mesh) 0 "positions" + Name 38 "MeshVertexPositions" + MemberName 38(MeshVertexPositions) 0 "data" + Name 46 "meshData" + Name 51 "Mesh" + MemberName 51(Mesh) 0 "positions" + Name 55 "PerPass_meshes" + MemberName 55(PerPass_meshes) 0 "data" + Name 62 "perPass_meshes" + Name 70 "tri_idx0" + Name 85 "vertex_pos0" + Name 123 "out_fragColor" + Decorate 36 ArrayStride 4 + MemberDecorate 38(MeshVertexPositions) 0 Offset 0 + Decorate 38(MeshVertexPositions) Block + MemberDecorate 51(Mesh) 0 Offset 0 + Decorate 53 ArrayStride 8 + MemberDecorate 55(PerPass_meshes) 0 NonWritable + MemberDecorate 55(PerPass_meshes) 0 Offset 0 + Decorate 55(PerPass_meshes) Block + Decorate 62(perPass_meshes) DescriptorSet 0 + Decorate 62(perPass_meshes) Binding 0 + Decorate 70(tri_idx0) Flat + Decorate 70(tri_idx0) Location 0 + Decorate 123(out_fragColor) Location 0 + Decorate 46(meshData) DecorationAliasedPointerEXT 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -73,114 +73,115 @@ spv.debuginfo.bufferref.glsl.frag 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 27: 7(int) Constant 21 - TypeForwardPointer 28 PhysicalStorageBufferEXT - 29(Mesh): TypeStruct 28 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 20 17 27 12 19 31 12 13 - 32: TypeFloat 32 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 33 10 13 12 - 35: TypeRuntimeArray 32(float) - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 34 12 -37(MeshVertexPositions): TypeStruct 35 - 40: 7(int) Constant 5 - 41: 7(int) Constant 9 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 39 36 17 40 41 12 12 13 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 43 20 17 27 12 19 43 12 13 38 - 28: TypePointer PhysicalStorageBufferEXT 37(MeshVertexPositions) - 44: TypePointer Function 29(Mesh) - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 30 17 27 12 16 21 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 50(Mesh): TypeStruct 28(ptr) - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 20 17 27 12 19 31 12 13 - 52: TypeRuntimeArray 50(Mesh) - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 51 12 -54(PerPass_meshes): TypeStruct 52 - 56: 7(int) Constant 13 - 57: 7(int) Constant 8 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 39 53 17 56 57 12 12 13 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 59 20 17 27 12 19 59 12 13 55 - 60: TypePointer StorageBuffer 54(PerPass_meshes) -61(perPass_meshes): 60(ptr) Variable StorageBuffer - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 63 58 17 27 12 19 63 61(perPass_meshes) 57 - 64: TypeInt 32 1 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 65 10 21 12 - 67: 64(int) Constant 0 - 68: TypePointer Input 7(int) - 69(tri_idx0): 68(ptr) Variable Input - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 71 9 17 27 12 19 71 69(tri_idx0) 57 - 73: TypePointer StorageBuffer 50(Mesh) - 77: TypePointer Function 28(ptr) - 80: 7(int) Constant 23 - 81: TypeVector 32(float) 3 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 34 13 - 83: TypePointer Function 81(fvec3) - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 86 82 17 80 12 16 21 - 89: 7(int) Constant 25 - 95: TypePointer PhysicalStorageBufferEXT 32(float) - 99: 7(int) Constant 24 - 118: 7(int) Constant 27 - 119: TypeVector 32(float) 4 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 34 21 - 121: TypePointer Output 119(fvec4) -122(out_fragColor): 121(ptr) Variable Output - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 120 17 118 12 19 124 122(out_fragColor) 57 - 126: 32(float) Constant 1065353216 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 20: 7(int) Constant 20 + 22: 7(int) Constant 1 + 23: 7(int) Constant 4 + 24: 7(int) Constant 2 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: 7(int) Constant 21 + TypeForwardPointer 29 PhysicalStorageBufferEXT + 30(Mesh): TypeStruct 29 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 32 22 18 28 12 21 32 12 13 + 33: TypeFloat 32 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 34 10 13 12 + 36: TypeRuntimeArray 33(float) + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 12 +38(MeshVertexPositions): TypeStruct 36 + 41: 7(int) Constant 5 + 42: 7(int) Constant 9 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 37 18 41 42 12 12 13 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 44 22 18 28 12 21 44 12 13 39 + 29: TypePointer PhysicalStorageBufferEXT 38(MeshVertexPositions) + 45: TypePointer Function 30(Mesh) + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 31 18 28 12 17 23 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 51(Mesh): TypeStruct 29(ptr) + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 32 22 18 28 12 21 32 12 13 + 53: TypeRuntimeArray 51(Mesh) + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 52 12 +55(PerPass_meshes): TypeStruct 53 + 57: 7(int) Constant 13 + 58: 7(int) Constant 8 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 54 18 57 58 12 12 13 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 22 18 28 12 21 60 12 13 56 + 61: TypePointer StorageBuffer 55(PerPass_meshes) +62(perPass_meshes): 61(ptr) Variable StorageBuffer + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 64 59 18 28 12 21 64 62(perPass_meshes) 58 + 65: TypeInt 32 1 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 66 10 23 12 + 68: 65(int) Constant 0 + 69: TypePointer Input 7(int) + 70(tri_idx0): 69(ptr) Variable Input + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 72 9 18 28 12 21 72 70(tri_idx0) 58 + 74: TypePointer StorageBuffer 51(Mesh) + 78: TypePointer Function 29(ptr) + 81: 7(int) Constant 23 + 82: TypeVector 33(float) 3 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 13 + 84: TypePointer Function 82(fvec3) + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 83 18 81 12 17 23 + 90: 7(int) Constant 25 + 96: TypePointer PhysicalStorageBufferEXT 33(float) + 100: 7(int) Constant 24 + 119: 7(int) Constant 27 + 120: TypeVector 33(float) 4 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 23 + 122: TypePointer Output 120(fvec4) +123(out_fragColor): 122(ptr) Variable Output + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 121 18 119 12 21 125 123(out_fragColor) 58 + 127: 33(float) Constant 1065353216 Line 1 20 11 14(main): 4 Function None 5 - 23: Label - 45(meshData): 44(ptr) Variable Function - 84(vertex_pos0): 83(ptr) Variable Function - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 45(meshData) 49 - 72: 7(int) Load 69(tri_idx0) - 74: 73(ptr) AccessChain 61(perPass_meshes) 67 72 - 75: 50(Mesh) Load 74 - 76: 28(ptr) CompositeExtract 75 0 - 78: 77(ptr) AccessChain 45(meshData) 67 - Store 78 76 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 84(vertex_pos0) 49 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 89 89 12 12 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12 - 91: 77(ptr) AccessChain 45(meshData) 67 - 92: 28(ptr) Load 91 - 93: 7(int) Load 69(tri_idx0) - 94: 7(int) IMul 13 93 - 96: 95(ptr) AccessChain 92 67 94 - 97: 32(float) Load 96 Aligned 4 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 99 99 12 12 - 100: 77(ptr) AccessChain 45(meshData) 67 - 101: 28(ptr) Load 100 - 102: 7(int) Load 69(tri_idx0) - 103: 7(int) IMul 13 102 - 104: 7(int) IAdd 103 20 - 105: 95(ptr) AccessChain 101 67 104 - 106: 32(float) Load 105 Aligned 4 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 89 89 12 12 - 108: 77(ptr) AccessChain 45(meshData) 67 - 109: 28(ptr) Load 108 - 110: 7(int) Load 69(tri_idx0) - 111: 7(int) IMul 13 110 - 112: 7(int) IAdd 111 22 - 113: 95(ptr) AccessChain 109 67 112 - 114: 32(float) Load 113 Aligned 4 - 115: 81(fvec3) CompositeConstruct 97 106 114 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 80 80 12 12 - Store 84(vertex_pos0) 115 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 118 118 12 12 - 125: 81(fvec3) Load 84(vertex_pos0) - 127: 32(float) CompositeExtract 125 0 - 128: 32(float) CompositeExtract 125 1 - 129: 32(float) CompositeExtract 125 2 - 130: 119(fvec4) CompositeConstruct 127 128 129 126 - Store 122(out_fragColor) 130 + 15: Label + 46(meshData): 45(ptr) Variable Function + 85(vertex_pos0): 84(ptr) Variable Function + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 46(meshData) 50 + 73: 7(int) Load 70(tri_idx0) + 75: 74(ptr) AccessChain 62(perPass_meshes) 68 73 + 76: 51(Mesh) Load 75 + 77: 29(ptr) CompositeExtract 76 0 + 79: 78(ptr) AccessChain 46(meshData) 68 + Store 79 77 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 85(vertex_pos0) 50 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 90 90 12 12 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 + 92: 78(ptr) AccessChain 46(meshData) 68 + 93: 29(ptr) Load 92 + 94: 7(int) Load 70(tri_idx0) + 95: 7(int) IMul 13 94 + 97: 96(ptr) AccessChain 93 68 95 + 98: 33(float) Load 97 Aligned 4 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 100 100 12 12 + 101: 78(ptr) AccessChain 46(meshData) 68 + 102: 29(ptr) Load 101 + 103: 7(int) Load 70(tri_idx0) + 104: 7(int) IMul 13 103 + 105: 7(int) IAdd 104 22 + 106: 96(ptr) AccessChain 102 68 105 + 107: 33(float) Load 106 Aligned 4 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 90 90 12 12 + 109: 78(ptr) AccessChain 46(meshData) 68 + 110: 29(ptr) Load 109 + 111: 7(int) Load 70(tri_idx0) + 112: 7(int) IMul 13 111 + 113: 7(int) IAdd 112 24 + 114: 96(ptr) AccessChain 110 68 113 + 115: 33(float) Load 114 Aligned 4 + 116: 82(fvec3) CompositeConstruct 98 107 115 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 + Store 85(vertex_pos0) 116 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 119 119 12 12 + 126: 82(fvec3) Load 85(vertex_pos0) + 128: 33(float) CompositeExtract 126 0 + 129: 33(float) CompositeExtract 126 1 + 130: 33(float) CompositeExtract 126 2 + 131: 120(fvec4) CompositeConstruct 128 129 130 127 + Store 123(out_fragColor) 131 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index 846e0e36e1..48f373377c 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -1,7 +1,7 @@ spv.debuginfo.const_params.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 68 +// Id's are bound by 70 Capability Shader Extension "SPV_KHR_non_semantic_info" @@ -12,8 +12,9 @@ spv.debuginfo.const_params.glsl.comp ExecutionMode 14 LocalSize 1 1 1 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 17: String "float" + 35: String "function" + 38: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -21,18 +22,17 @@ spv.debuginfo.const_params.glsl.comp // OpModuleProcessed entry-point main #line 1 " - 25: String "float" - 40: String "function" - 46: String "f" - 50: String "f2" - 53: String "f3" - 56: String "f4" + 45: String "f" + 49: String "f2" + 52: String "f3" + 55: String "f4" + 57: String "main" Name 14 "main" - Name 39 "function(f1;vf2;vf3;vf4;" - Name 35 "f" - Name 36 "f2" - Name 37 "f3" - Name 38 "f4" + Name 33 "function(f1;vf2;vf3;vf4;" + Name 29 "f" + Name 30 "f2" + Name 31 "f3" + Name 32 "f4" 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -42,55 +42,57 @@ spv.debuginfo.const_params.glsl.comp 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 24: TypeFloat 32 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 - 27: TypeVector 24(float) 2 - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 22 - 29: TypeVector 24(float) 3 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 - 31: TypeVector 24(float) 4 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 - 33: TypeFunction 4 24(float) 27(fvec2) 29(fvec3) 31(fvec4) - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 26 28 30 32 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 40 34 17 12 12 19 40 13 12 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 26 17 12 12 41 21 20 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 28 17 12 12 41 21 22 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 30 17 12 12 41 21 13 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 32 17 12 12 41 21 21 - 62: 7(int) Constant 13 - 63: 24(float) Constant 0 - 64: 27(fvec2) ConstantComposite 63 63 - 65: 29(fvec3) ConstantComposite 63 63 63 - 66: 31(fvec4) ConstantComposite 63 63 63 63 + 16: TypeFloat 32 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 19: TypeVector 16(float) 2 + 20: 7(int) Constant 2 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 + 22: TypeVector 16(float) 3 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 24: TypeVector 16(float) 4 + 25: 7(int) Constant 4 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 25 + 27: TypeFunction 4 16(float) 19(fvec2) 22(fvec3) 24(fvec4) + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18 21 23 26 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 38 + 39: 7(int) Constant 7 + 41: 7(int) Constant 1 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 41 25 37 20 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 28 37 39 12 40 35 13 39 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 18 37 39 12 36 25 41 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 21 37 39 12 36 25 20 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 23 37 39 12 36 25 13 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 26 37 39 12 36 25 25 + 59: 7(int) Constant 11 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 6 37 59 12 40 57 13 59 + 64: 7(int) Constant 13 + 65: 16(float) Constant 0 + 66: 19(fvec2) ConstantComposite 65 65 + 67: 22(fvec3) ConstantComposite 65 65 65 + 68: 24(fvec4) ConstantComposite 65 65 65 65 Line 1 11 11 14(main): 4 Function None 5 - 23: Label - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 62 62 12 12 - 67: 4 FunctionCall 39(function(f1;vf2;vf3;vf4;) 63 64 65 66 + 15: Label + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 14(main) + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 64 64 12 12 + 69: 4 FunctionCall 33(function(f1;vf2;vf3;vf4;) 65 66 67 68 Return FunctionEnd Line 1 7 18 -39(function(f1;vf2;vf3;vf4;): 4 Function None 33 - 35(f): 24(float) FunctionParameter - 36(f2): 27(fvec2) FunctionParameter - 37(f3): 29(fvec3) FunctionParameter - 38(f4): 31(fvec4) FunctionParameter - 42: Label - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 35(f) 48 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 36(f2) 48 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 37(f3) 48 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 38(f4) 48 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 41 39(function(f1;vf2;vf3;vf4;) +33(function(f1;vf2;vf3;vf4;): 4 Function None 27 + 29(f): 16(float) FunctionParameter + 30(f2): 19(fvec2) FunctionParameter + 31(f3): 22(fvec3) FunctionParameter + 32(f4): 24(fvec4) FunctionParameter + 34: Label + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 29(f) 47 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 30(f2) 47 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 31(f3) 47 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 54 32(f4) 47 + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(function(f1;vf2;vf3;vf4;) Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 9026bf46d9..6781ee8bff 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,19 +1,20 @@ spv.debuginfo.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 969 +// Id's are bound by 971 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 14 "main" 124 + EntryPoint GLCompute 14 "main" 126 ExecutionMode 14 LocalSize 10 10 1 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 17: String "float" + 30: String "springForce" + 33: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -21,143 +22,142 @@ spv.debuginfo.glsl.comp // OpModuleProcessed entry-point main #line 1 " - 25: String "float" - 37: String "springForce" - 43: String "p0" - 47: String "p1" - 50: String "restDist" - 58: String "dist" - 70: String "int" - 76: String "sphereRadius" - 87: String "gravity" - 92: String "particleCount" - 95: String "UBO" - 99: String "params" - 121: String "id" - 126: String "gl_GlobalInvocationID" - 133: String "index" - 156: String "bool" - 170: String "normal" - 176: String "pinned" - 178: String "Particle" - 183: String "particleIn" - 187: String "ParticleIn" - 208: String "particleOut" - 211: String "ParticleOut" - 236: String "force" - 249: String "pos" - 259: String "vel" - 571: String "f" - 620: String "sphereDist" - 673: String "calculateNormals" - 676: String "PushConsts" - 680: String "pushConsts" - 717: String "a" - 730: String "b" - 747: String "c" + 42: String "p0" + 46: String "p1" + 49: String "restDist" + 51: String "main" + 60: String "dist" + 72: String "int" + 78: String "sphereRadius" + 89: String "gravity" + 94: String "particleCount" + 97: String "UBO" + 101: String "params" + 123: String "id" + 128: String "gl_GlobalInvocationID" + 135: String "index" + 158: String "bool" + 172: String "normal" + 178: String "pinned" + 180: String "Particle" + 185: String "particleIn" + 189: String "ParticleIn" + 210: String "particleOut" + 213: String "ParticleOut" + 238: String "force" + 251: String "pos" + 261: String "vel" + 573: String "f" + 622: String "sphereDist" + 675: String "calculateNormals" + 678: String "PushConsts" + 682: String "pushConsts" + 719: String "a" + 732: String "b" + 749: String "c" Name 14 "main" - Name 36 "springForce(vf3;vf3;f1;" - Name 33 "p0" - Name 34 "p1" - Name 35 "restDist" - Name 56 "dist" - Name 74 "UBO" - MemberName 74(UBO) 0 "deltaT" - MemberName 74(UBO) 1 "particleMass" - MemberName 74(UBO) 2 "springStiffness" - MemberName 74(UBO) 3 "damping" - MemberName 74(UBO) 4 "restDistH" - MemberName 74(UBO) 5 "restDistV" - MemberName 74(UBO) 6 "restDistD" - MemberName 74(UBO) 7 "sphereRadius" - MemberName 74(UBO) 8 "spherePos" - MemberName 74(UBO) 9 "gravity" - MemberName 74(UBO) 10 "particleCount" - Name 97 "params" - Name 119 "id" - Name 124 "gl_GlobalInvocationID" - Name 131 "index" - Name 168 "Particle" - MemberName 168(Particle) 0 "pos" - MemberName 168(Particle) 1 "vel" - MemberName 168(Particle) 2 "uv" - MemberName 168(Particle) 3 "normal" - MemberName 168(Particle) 4 "pinned" - Name 181 "ParticleIn" - MemberName 181(ParticleIn) 0 "particleIn" - Name 189 "" - Name 206 "ParticleOut" - MemberName 206(ParticleOut) 0 "particleOut" - Name 213 "" - Name 234 "force" - Name 247 "pos" - Name 257 "vel" - Name 278 "param" - Name 282 "param" + Name 28 "springForce(vf3;vf3;f1;" + Name 25 "p0" + Name 26 "p1" + Name 27 "restDist" + Name 58 "dist" + Name 76 "UBO" + MemberName 76(UBO) 0 "deltaT" + MemberName 76(UBO) 1 "particleMass" + MemberName 76(UBO) 2 "springStiffness" + MemberName 76(UBO) 3 "damping" + MemberName 76(UBO) 4 "restDistH" + MemberName 76(UBO) 5 "restDistV" + MemberName 76(UBO) 6 "restDistD" + MemberName 76(UBO) 7 "sphereRadius" + MemberName 76(UBO) 8 "spherePos" + MemberName 76(UBO) 9 "gravity" + MemberName 76(UBO) 10 "particleCount" + Name 99 "params" + Name 121 "id" + Name 126 "gl_GlobalInvocationID" + Name 133 "index" + Name 170 "Particle" + MemberName 170(Particle) 0 "pos" + MemberName 170(Particle) 1 "vel" + MemberName 170(Particle) 2 "uv" + MemberName 170(Particle) 3 "normal" + MemberName 170(Particle) 4 "pinned" + Name 183 "ParticleIn" + MemberName 183(ParticleIn) 0 "particleIn" + Name 191 "" + Name 208 "ParticleOut" + MemberName 208(ParticleOut) 0 "particleOut" + Name 215 "" + Name 236 "force" + Name 249 "pos" + Name 259 "vel" + Name 280 "param" Name 284 "param" - Name 308 "param" - Name 312 "param" + Name 286 "param" + Name 310 "param" Name 314 "param" - Name 342 "param" - Name 346 "param" + Name 316 "param" + Name 344 "param" Name 348 "param" - Name 371 "param" - Name 375 "param" + Name 350 "param" + Name 373 "param" Name 377 "param" - Name 415 "param" - Name 419 "param" + Name 379 "param" + Name 417 "param" Name 421 "param" - Name 454 "param" - Name 458 "param" + Name 423 "param" + Name 456 "param" Name 460 "param" - Name 501 "param" - Name 505 "param" + Name 462 "param" + Name 503 "param" Name 507 "param" - Name 544 "param" - Name 548 "param" + Name 509 "param" + Name 546 "param" Name 550 "param" - Name 569 "f" - Name 618 "sphereDist" - Name 671 "PushConsts" - MemberName 671(PushConsts) 0 "calculateNormals" - Name 678 "pushConsts" - Name 691 "normal" - Name 715 "a" - Name 728 "b" - Name 745 "c" - MemberDecorate 74(UBO) 0 Offset 0 - MemberDecorate 74(UBO) 1 Offset 4 - MemberDecorate 74(UBO) 2 Offset 8 - MemberDecorate 74(UBO) 3 Offset 12 - MemberDecorate 74(UBO) 4 Offset 16 - MemberDecorate 74(UBO) 5 Offset 20 - MemberDecorate 74(UBO) 6 Offset 24 - MemberDecorate 74(UBO) 7 Offset 28 - MemberDecorate 74(UBO) 8 Offset 32 - MemberDecorate 74(UBO) 9 Offset 48 - MemberDecorate 74(UBO) 10 Offset 64 - Decorate 74(UBO) Block - Decorate 97(params) DescriptorSet 0 - Decorate 97(params) Binding 2 - Decorate 124(gl_GlobalInvocationID) BuiltIn GlobalInvocationId - MemberDecorate 168(Particle) 0 Offset 0 - MemberDecorate 168(Particle) 1 Offset 16 - MemberDecorate 168(Particle) 2 Offset 32 - MemberDecorate 168(Particle) 3 Offset 48 - MemberDecorate 168(Particle) 4 Offset 64 - Decorate 179 ArrayStride 80 - MemberDecorate 181(ParticleIn) 0 Offset 0 - Decorate 181(ParticleIn) BufferBlock - Decorate 189 DescriptorSet 0 - Decorate 189 Binding 0 - Decorate 204 ArrayStride 80 - MemberDecorate 206(ParticleOut) 0 Offset 0 - Decorate 206(ParticleOut) BufferBlock - Decorate 213 DescriptorSet 0 - Decorate 213 Binding 1 - MemberDecorate 671(PushConsts) 0 Offset 0 - Decorate 671(PushConsts) Block - Decorate 968 BuiltIn WorkgroupSize + Name 552 "param" + Name 571 "f" + Name 620 "sphereDist" + Name 673 "PushConsts" + MemberName 673(PushConsts) 0 "calculateNormals" + Name 680 "pushConsts" + Name 693 "normal" + Name 717 "a" + Name 730 "b" + Name 747 "c" + MemberDecorate 76(UBO) 0 Offset 0 + MemberDecorate 76(UBO) 1 Offset 4 + MemberDecorate 76(UBO) 2 Offset 8 + MemberDecorate 76(UBO) 3 Offset 12 + MemberDecorate 76(UBO) 4 Offset 16 + MemberDecorate 76(UBO) 5 Offset 20 + MemberDecorate 76(UBO) 6 Offset 24 + MemberDecorate 76(UBO) 7 Offset 28 + MemberDecorate 76(UBO) 8 Offset 32 + MemberDecorate 76(UBO) 9 Offset 48 + MemberDecorate 76(UBO) 10 Offset 64 + Decorate 76(UBO) Block + Decorate 99(params) DescriptorSet 0 + Decorate 99(params) Binding 2 + Decorate 126(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + MemberDecorate 170(Particle) 0 Offset 0 + MemberDecorate 170(Particle) 1 Offset 16 + MemberDecorate 170(Particle) 2 Offset 32 + MemberDecorate 170(Particle) 3 Offset 48 + MemberDecorate 170(Particle) 4 Offset 64 + Decorate 181 ArrayStride 80 + MemberDecorate 183(ParticleIn) 0 Offset 0 + Decorate 183(ParticleIn) BufferBlock + Decorate 191 DescriptorSet 0 + Decorate 191 Binding 0 + Decorate 206 ArrayStride 80 + MemberDecorate 208(ParticleOut) 0 Offset 0 + Decorate 208(ParticleOut) BufferBlock + Decorate 215 DescriptorSet 0 + Decorate 215 Binding 1 + MemberDecorate 673(PushConsts) 0 Offset 0 + Decorate 673(PushConsts) Block + Decorate 970 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -167,1057 +167,1059 @@ spv.debuginfo.glsl.comp 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 24: TypeFloat 32 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 - 27: TypeVector 24(float) 3 - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 - 29: TypePointer Function 27(fvec3) - 30: TypePointer Function 24(float) - 31: TypeFunction 27(fvec3) 29(ptr) 29(ptr) 30(ptr) - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 28 28 28 26 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 37 32 17 12 12 19 37 13 12 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 28 17 12 12 38 21 20 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 28 17 12 12 38 21 22 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 26 17 12 12 38 21 13 - 55: 7(int) Constant 68 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 58 28 17 55 12 38 21 - 64: 7(int) Constant 69 - 67: TypeVector 24(float) 4 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 - 69: TypeInt 32 1 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 70 10 21 12 - 72: TypeVector 69(int) 2 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 71 22 - 74(UBO): TypeStruct 24(float) 24(float) 24(float) 24(float) 24(float) 24(float) 24(float) 24(float) 67(fvec4) 67(fvec4) 72(ivec2) - 77: 7(int) Constant 56 - 78: 7(int) Constant 8 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 26 17 77 78 12 12 13 - 88: 7(int) Constant 58 - 89: 7(int) Constant 7 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 68 17 88 89 12 12 13 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 68 17 88 89 12 12 13 - 93: 7(int) Constant 59 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 73 17 93 78 12 12 13 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 95 20 17 64 12 19 95 12 13 75 79 80 81 82 83 84 85 86 90 91 - 96: TypePointer Uniform 74(UBO) - 97(params): 96(ptr) Variable Uniform - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 99 94 17 64 12 19 99 97(params) 78 - 100: 69(int) Constant 2 - 101: TypePointer Uniform 24(float) - 115: 7(int) Constant 74 - 116: TypeVector 7(int) 3 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 - 118: TypePointer Function 116(ivec3) - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 117 17 115 12 16 21 - 123: TypePointer Input 116(ivec3) -124(gl_GlobalInvocationID): 123(ptr) Variable Input - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 126 117 17 115 12 19 126 124(gl_GlobalInvocationID) 78 - 129: 7(int) Constant 76 - 130: TypePointer Function 7(int) - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 9 17 129 12 16 21 - 137: 69(int) Constant 10 - 138: TypePointer Uniform 69(int) - 147: 7(int) Constant 77 - 155: TypeBool - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 163: 7(int) Constant 78 - 167: 7(int) Constant 81 - 168(Particle): TypeStruct 67(fvec4) 67(fvec4) 67(fvec4) 67(fvec4) 24(float) - 171: 7(int) Constant 31 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 68 17 171 89 12 12 13 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 26 17 10 78 12 12 13 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 20 17 167 12 19 178 12 13 169 172 173 174 175 - 179: TypeRuntimeArray 168(Particle) - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 177 12 - 181(ParticleIn): TypeStruct 179 - 184: 7(int) Constant 36 - 185: 7(int) Constant 11 - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 183 180 17 184 185 12 12 13 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 187 20 17 167 12 19 187 12 13 182 - 188: TypePointer Uniform 181(ParticleIn) - 189: 188(ptr) Variable Uniform - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 186 17 167 12 19 1 189 78 - 191: 69(int) Constant 0 - 193: 69(int) Constant 4 - 196: 24(float) Constant 1065353216 - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 203: 7(int) Constant 82 - 204: TypeRuntimeArray 168(Particle) - 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 177 12 -206(ParticleOut): TypeStruct 204 - 209: 7(int) Constant 40 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 208 205 17 209 185 12 12 13 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 211 20 17 203 12 19 211 12 13 207 - 212: TypePointer Uniform 206(ParticleOut) - 213: 212(ptr) Variable Uniform - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 210 17 203 12 19 1 213 78 - 217: TypePointer Uniform 67(fvec4) - 222: 7(int) Constant 83 - 224: 69(int) Constant 1 - 225: 24(float) Constant 0 - 226: 67(fvec4) ConstantComposite 225 225 225 225 - 229: 7(int) Constant 84 - 233: 7(int) Constant 88 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 236 28 17 233 12 16 21 - 238: 69(int) Constant 9 - 246: 7(int) Constant 90 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 28 17 246 12 16 21 - 256: 7(int) Constant 91 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 259 28 17 256 12 16 21 - 266: 7(int) Constant 95 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 275: 7(int) Constant 96 - 292: 7(int) Constant 99 - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 305: 7(int) Constant 100 - 322: 7(int) Constant 103 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 335: 7(int) Constant 104 - 341: 69(int) Constant 5 - 356: 7(int) Constant 107 - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 365: 7(int) Constant 108 - 385: 7(int) Constant 111 - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 407: 7(int) Constant 112 - 414: 69(int) Constant 6 - 429: 7(int) Constant 115 - 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 447: 7(int) Constant 116 - 468: 7(int) Constant 119 - 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 494: 7(int) Constant 120 - 515: 7(int) Constant 123 - 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 537: 7(int) Constant 124 - 558: 7(int) Constant 127 - 559: 69(int) Constant 3 - 568: 7(int) Constant 130 - 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 571 28 17 568 12 16 21 - 579: 7(int) Constant 131 - 587: 24(float) Constant 1056964608 - 603: 7(int) Constant 132 - 617: 7(int) Constant 135 - 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 620 28 17 617 12 16 21 - 626: 69(int) Constant 8 - 632: 7(int) Constant 136 - 635: 69(int) Constant 7 - 638: 24(float) Constant 1008981770 - 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 646: 7(int) Constant 138 - 665: 7(int) Constant 140 - 670: 7(int) Constant 144 - 671(PushConsts): TypeStruct 7(int) - 674: 7(int) Constant 63 - 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 673 9 17 674 89 12 12 13 - 675: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 676 20 17 670 12 19 676 12 13 672 - 677: TypePointer PushConstant 671(PushConsts) - 678(pushConsts): 677(ptr) Variable PushConstant - 679: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 680 675 17 670 12 19 680 678(pushConsts) 78 - 681: TypePointer PushConstant 7(int) - 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 690: 7(int) Constant 145 - 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 28 17 690 12 16 21 - 694: 27(fvec3) ConstantComposite 225 225 225 - 696: 7(int) Constant 147 - 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 705: 7(int) Constant 148 - 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 714: 7(int) Constant 149 - 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 717 28 17 714 12 16 21 - 727: 7(int) Constant 150 - 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 730 28 17 727 12 16 21 - 744: 7(int) Constant 151 - 746: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 747 28 17 744 12 16 21 - 760: 7(int) Constant 152 - 772: 7(int) Constant 154 - 779: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 785: 7(int) Constant 155 - 797: 7(int) Constant 156 - 810: 7(int) Constant 157 - 819: 7(int) Constant 158 - 831: 7(int) Constant 161 - 838: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 844: 7(int) Constant 162 - 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 853: 7(int) Constant 163 - 865: 7(int) Constant 164 - 878: 7(int) Constant 165 - 887: 7(int) Constant 166 - 899: 7(int) Constant 168 - 906: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 156 10 22 12 - 912: 7(int) Constant 169 - 921: 7(int) Constant 170 - 934: 7(int) Constant 171 - 946: 7(int) Constant 172 - 958: 7(int) Constant 175 - 967: 7(int) Constant 10 - 968: 116(ivec3) ConstantComposite 967 967 20 + 16: TypeFloat 32 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 19: TypeVector 16(float) 3 + 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 21: TypePointer Function 19(fvec3) + 22: TypePointer Function 16(float) + 23: TypeFunction 19(fvec3) 21(ptr) 21(ptr) 22(ptr) + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 20 20 20 18 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 33 + 34: 7(int) Constant 66 + 36: 7(int) Constant 1 + 37: 7(int) Constant 4 + 38: 7(int) Constant 2 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 37 32 38 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 30 24 32 34 12 35 30 13 34 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 20 32 34 12 31 37 36 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 20 32 34 12 31 37 38 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 18 32 34 12 31 37 13 + 53: 7(int) Constant 72 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 51 6 32 53 12 35 51 13 53 + 57: 7(int) Constant 68 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 60 20 32 57 12 31 37 + 66: 7(int) Constant 69 + 69: TypeVector 16(float) 4 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 37 + 71: TypeInt 32 1 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 72 10 37 12 + 74: TypeVector 71(int) 2 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 73 38 + 76(UBO): TypeStruct 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 69(fvec4) 69(fvec4) 74(ivec2) + 79: 7(int) Constant 56 + 80: 7(int) Constant 8 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 + 90: 7(int) Constant 58 + 91: 7(int) Constant 7 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 70 32 90 91 12 12 13 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 70 32 90 91 12 12 13 + 95: 7(int) Constant 59 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 75 32 95 80 12 12 13 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 97 36 32 66 12 35 97 12 13 77 81 82 83 84 85 86 87 88 92 93 + 98: TypePointer Uniform 76(UBO) + 99(params): 98(ptr) Variable Uniform + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 101 96 32 66 12 35 101 99(params) 80 + 102: 71(int) Constant 2 + 103: TypePointer Uniform 16(float) + 117: 7(int) Constant 74 + 118: TypeVector 7(int) 3 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 + 120: TypePointer Function 118(ivec3) + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 119 32 117 12 52 37 + 125: TypePointer Input 118(ivec3) +126(gl_GlobalInvocationID): 125(ptr) Variable Input + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 128 119 32 117 12 35 128 126(gl_GlobalInvocationID) 80 + 131: 7(int) Constant 76 + 132: TypePointer Function 7(int) + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 9 32 131 12 52 37 + 139: 71(int) Constant 10 + 140: TypePointer Uniform 71(int) + 149: 7(int) Constant 77 + 157: TypeBool + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 165: 7(int) Constant 78 + 169: 7(int) Constant 81 + 170(Particle): TypeStruct 69(fvec4) 69(fvec4) 69(fvec4) 69(fvec4) 16(float) + 173: 7(int) Constant 31 + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 178 18 32 10 80 12 12 13 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 180 36 32 169 12 35 180 12 13 171 174 175 176 177 + 181: TypeRuntimeArray 170(Particle) + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 179 12 + 183(ParticleIn): TypeStruct 181 + 186: 7(int) Constant 36 + 187: 7(int) Constant 11 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 182 32 186 187 12 12 13 + 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 189 36 32 169 12 35 189 12 13 184 + 190: TypePointer Uniform 183(ParticleIn) + 191: 190(ptr) Variable Uniform + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 188 32 169 12 35 1 191 80 + 193: 71(int) Constant 0 + 195: 71(int) Constant 4 + 198: 16(float) Constant 1065353216 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 205: 7(int) Constant 82 + 206: TypeRuntimeArray 170(Particle) + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 179 12 +208(ParticleOut): TypeStruct 206 + 211: 7(int) Constant 40 + 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 210 207 32 211 187 12 12 13 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 213 36 32 205 12 35 213 12 13 209 + 214: TypePointer Uniform 208(ParticleOut) + 215: 214(ptr) Variable Uniform + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 212 32 205 12 35 1 215 80 + 219: TypePointer Uniform 69(fvec4) + 224: 7(int) Constant 83 + 226: 71(int) Constant 1 + 227: 16(float) Constant 0 + 228: 69(fvec4) ConstantComposite 227 227 227 227 + 231: 7(int) Constant 84 + 235: 7(int) Constant 88 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 238 20 32 235 12 52 37 + 240: 71(int) Constant 9 + 248: 7(int) Constant 90 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 251 20 32 248 12 52 37 + 258: 7(int) Constant 91 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 20 32 258 12 52 37 + 268: 7(int) Constant 95 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 277: 7(int) Constant 96 + 294: 7(int) Constant 99 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 307: 7(int) Constant 100 + 324: 7(int) Constant 103 + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 337: 7(int) Constant 104 + 343: 71(int) Constant 5 + 358: 7(int) Constant 107 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 367: 7(int) Constant 108 + 387: 7(int) Constant 111 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 409: 7(int) Constant 112 + 416: 71(int) Constant 6 + 431: 7(int) Constant 115 + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 449: 7(int) Constant 116 + 470: 7(int) Constant 119 + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 496: 7(int) Constant 120 + 517: 7(int) Constant 123 + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 539: 7(int) Constant 124 + 560: 7(int) Constant 127 + 561: 71(int) Constant 3 + 570: 7(int) Constant 130 + 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 573 20 32 570 12 52 37 + 581: 7(int) Constant 131 + 589: 16(float) Constant 1056964608 + 605: 7(int) Constant 132 + 619: 7(int) Constant 135 + 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 622 20 32 619 12 52 37 + 628: 71(int) Constant 8 + 634: 7(int) Constant 136 + 637: 71(int) Constant 7 + 640: 16(float) Constant 1008981770 + 642: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 648: 7(int) Constant 138 + 667: 7(int) Constant 140 + 672: 7(int) Constant 144 + 673(PushConsts): TypeStruct 7(int) + 676: 7(int) Constant 63 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 675 9 32 676 91 12 12 13 + 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 678 36 32 672 12 35 678 12 13 674 + 679: TypePointer PushConstant 673(PushConsts) + 680(pushConsts): 679(ptr) Variable PushConstant + 681: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 682 677 32 672 12 35 682 680(pushConsts) 80 + 683: TypePointer PushConstant 7(int) + 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 692: 7(int) Constant 145 + 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 20 32 692 12 52 37 + 696: 19(fvec3) ConstantComposite 227 227 227 + 698: 7(int) Constant 147 + 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 707: 7(int) Constant 148 + 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 716: 7(int) Constant 149 + 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 20 32 716 12 52 37 + 729: 7(int) Constant 150 + 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 732 20 32 729 12 52 37 + 746: 7(int) Constant 151 + 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 20 32 746 12 52 37 + 762: 7(int) Constant 152 + 774: 7(int) Constant 154 + 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 787: 7(int) Constant 155 + 799: 7(int) Constant 156 + 812: 7(int) Constant 157 + 821: 7(int) Constant 158 + 833: 7(int) Constant 161 + 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 846: 7(int) Constant 162 + 849: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 855: 7(int) Constant 163 + 867: 7(int) Constant 164 + 880: 7(int) Constant 165 + 889: 7(int) Constant 166 + 901: 7(int) Constant 168 + 908: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 + 914: 7(int) Constant 169 + 923: 7(int) Constant 170 + 936: 7(int) Constant 171 + 948: 7(int) Constant 172 + 960: 7(int) Constant 175 + 969: 7(int) Constant 10 + 970: 118(ivec3) ConstantComposite 969 969 36 Line 1 72 11 14(main): 4 Function None 5 - 23: Label - 119(id): 118(ptr) Variable Function - 131(index): 130(ptr) Variable Function - 234(force): 29(ptr) Variable Function - 247(pos): 29(ptr) Variable Function - 257(vel): 29(ptr) Variable Function - 278(param): 29(ptr) Variable Function - 282(param): 29(ptr) Variable Function - 284(param): 30(ptr) Variable Function - 308(param): 29(ptr) Variable Function - 312(param): 29(ptr) Variable Function - 314(param): 30(ptr) Variable Function - 342(param): 29(ptr) Variable Function - 346(param): 29(ptr) Variable Function - 348(param): 30(ptr) Variable Function - 371(param): 29(ptr) Variable Function - 375(param): 29(ptr) Variable Function - 377(param): 30(ptr) Variable Function - 415(param): 29(ptr) Variable Function - 419(param): 29(ptr) Variable Function - 421(param): 30(ptr) Variable Function - 454(param): 29(ptr) Variable Function - 458(param): 29(ptr) Variable Function - 460(param): 30(ptr) Variable Function - 501(param): 29(ptr) Variable Function - 505(param): 29(ptr) Variable Function - 507(param): 30(ptr) Variable Function - 544(param): 29(ptr) Variable Function - 548(param): 29(ptr) Variable Function - 550(param): 30(ptr) Variable Function - 569(f): 29(ptr) Variable Function - 618(sphereDist): 29(ptr) Variable Function - 691(normal): 29(ptr) Variable Function - 715(a): 29(ptr) Variable Function - 728(b): 29(ptr) Variable Function - 745(c): 29(ptr) Variable Function - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 115 115 12 12 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 120 119(id) 45 - 127: 116(ivec3) Load 124(gl_GlobalInvocationID) - Store 119(id) 127 - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 129 129 12 12 - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(index) 45 - 135: 130(ptr) AccessChain 119(id) 20 - 136: 7(int) Load 135 - 139: 138(ptr) AccessChain 97(params) 137 12 - 140: 69(int) Load 139 - 141: 7(int) Bitcast 140 - 142: 7(int) IMul 136 141 - 143: 130(ptr) AccessChain 119(id) 12 - 144: 7(int) Load 143 - 145: 7(int) IAdd 142 144 - Store 131(index) 145 - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 147 147 12 12 - 148: 7(int) Load 131(index) - 149: 138(ptr) AccessChain 97(params) 137 12 - 150: 69(int) Load 149 - 151: 138(ptr) AccessChain 97(params) 137 20 - 152: 69(int) Load 151 - 153: 69(int) IMul 150 152 - 154: 7(int) Bitcast 153 - 158: 155(bool) UGreaterThan 148 154 - SelectionMerge 160 None - BranchConditional 158 159 160 - 159: Label - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 163 163 12 12 + 15: Label + 121(id): 120(ptr) Variable Function + 133(index): 132(ptr) Variable Function + 236(force): 21(ptr) Variable Function + 249(pos): 21(ptr) Variable Function + 259(vel): 21(ptr) Variable Function + 280(param): 21(ptr) Variable Function + 284(param): 21(ptr) Variable Function + 286(param): 22(ptr) Variable Function + 310(param): 21(ptr) Variable Function + 314(param): 21(ptr) Variable Function + 316(param): 22(ptr) Variable Function + 344(param): 21(ptr) Variable Function + 348(param): 21(ptr) Variable Function + 350(param): 22(ptr) Variable Function + 373(param): 21(ptr) Variable Function + 377(param): 21(ptr) Variable Function + 379(param): 22(ptr) Variable Function + 417(param): 21(ptr) Variable Function + 421(param): 21(ptr) Variable Function + 423(param): 22(ptr) Variable Function + 456(param): 21(ptr) Variable Function + 460(param): 21(ptr) Variable Function + 462(param): 22(ptr) Variable Function + 503(param): 21(ptr) Variable Function + 507(param): 21(ptr) Variable Function + 509(param): 22(ptr) Variable Function + 546(param): 21(ptr) Variable Function + 550(param): 21(ptr) Variable Function + 552(param): 22(ptr) Variable Function + 571(f): 21(ptr) Variable Function + 620(sphereDist): 21(ptr) Variable Function + 693(normal): 21(ptr) Variable Function + 717(a): 21(ptr) Variable Function + 730(b): 21(ptr) Variable Function + 747(c): 21(ptr) Variable Function + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 52 14(main) + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 117 117 12 12 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(id) 44 + 129: 118(ivec3) Load 126(gl_GlobalInvocationID) + Store 121(id) 129 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 131 131 12 12 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 134 133(index) 44 + 137: 132(ptr) AccessChain 121(id) 36 + 138: 7(int) Load 137 + 141: 140(ptr) AccessChain 99(params) 139 12 + 142: 71(int) Load 141 + 143: 7(int) Bitcast 142 + 144: 7(int) IMul 138 143 + 145: 132(ptr) AccessChain 121(id) 12 + 146: 7(int) Load 145 + 147: 7(int) IAdd 144 146 + Store 133(index) 147 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 149 149 12 12 + 150: 7(int) Load 133(index) + 151: 140(ptr) AccessChain 99(params) 139 12 + 152: 71(int) Load 151 + 153: 140(ptr) AccessChain 99(params) 139 36 + 154: 71(int) Load 153 + 155: 71(int) IMul 152 154 + 156: 7(int) Bitcast 155 + 160: 157(bool) UGreaterThan 150 156 + SelectionMerge 162 None + BranchConditional 160 161 162 + 161: Label + 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 165 165 12 12 Return - 160: Label - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 167 167 12 12 - 192: 7(int) Load 131(index) - 194: 101(ptr) AccessChain 189 191 192 193 - 195: 24(float) Load 194 - 198: 155(bool) FOrdEqual 195 196 - SelectionMerge 200 None - BranchConditional 198 199 200 - 199: Label - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 203 203 12 12 - 215: 7(int) Load 131(index) - 216: 7(int) Load 131(index) - 218: 217(ptr) AccessChain 213 191 216 191 - 219: 67(fvec4) Load 218 - 220: 217(ptr) AccessChain 213 191 215 191 - Store 220 219 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 222 222 12 12 - 223: 7(int) Load 131(index) - 227: 217(ptr) AccessChain 213 191 223 224 - Store 227 226 - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 229 229 12 12 + 162: Label + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 169 169 12 12 + 194: 7(int) Load 133(index) + 196: 103(ptr) AccessChain 191 193 194 195 + 197: 16(float) Load 196 + 200: 157(bool) FOrdEqual 197 198 + SelectionMerge 202 None + BranchConditional 200 201 202 + 201: Label + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 205 205 12 12 + 217: 7(int) Load 133(index) + 218: 7(int) Load 133(index) + 220: 219(ptr) AccessChain 215 193 218 193 + 221: 69(fvec4) Load 220 + 222: 219(ptr) AccessChain 215 193 217 193 + Store 222 221 + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 224 224 12 12 + 225: 7(int) Load 133(index) + 229: 219(ptr) AccessChain 215 193 225 226 + Store 229 228 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 231 231 12 12 Return - 200: Label - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 233 233 12 12 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 235 234(force) 45 - 239: 217(ptr) AccessChain 97(params) 238 - 240: 67(fvec4) Load 239 - 241: 27(fvec3) VectorShuffle 240 240 0 1 2 - 242: 101(ptr) AccessChain 97(params) 224 - 243: 24(float) Load 242 - 244: 27(fvec3) VectorTimesScalar 241 243 - Store 234(force) 244 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 246 246 12 12 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(pos) 45 - 251: 7(int) Load 131(index) - 252: 217(ptr) AccessChain 189 191 251 191 - 253: 67(fvec4) Load 252 - 254: 27(fvec3) VectorShuffle 253 253 0 1 2 - Store 247(pos) 254 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 256 256 12 12 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 258 257(vel) 45 - 261: 7(int) Load 131(index) - 262: 217(ptr) AccessChain 189 191 261 224 - 263: 67(fvec4) Load 262 - 264: 27(fvec3) VectorShuffle 263 263 0 1 2 - Store 257(vel) 264 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 266 266 12 12 - 267: 130(ptr) AccessChain 119(id) 12 - 268: 7(int) Load 267 - 270: 155(bool) UGreaterThan 268 12 - SelectionMerge 272 None - BranchConditional 270 271 272 - 271: Label - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 275 275 12 12 - 276: 7(int) Load 131(index) - 277: 7(int) ISub 276 20 - 279: 217(ptr) AccessChain 189 191 277 191 - 280: 67(fvec4) Load 279 - 281: 27(fvec3) VectorShuffle 280 280 0 1 2 - Store 278(param) 281 - 283: 27(fvec3) Load 247(pos) - Store 282(param) 283 - 285: 101(ptr) AccessChain 97(params) 193 - 286: 24(float) Load 285 - Store 284(param) 286 - 287: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 278(param) 282(param) 284(param) - 288: 27(fvec3) Load 234(force) - 289: 27(fvec3) FAdd 288 287 - Store 234(force) 289 - Branch 272 - 272: Label - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 292 292 12 12 - 293: 130(ptr) AccessChain 119(id) 12 - 294: 7(int) Load 293 - 295: 138(ptr) AccessChain 97(params) 137 12 - 296: 69(int) Load 295 - 297: 69(int) ISub 296 224 - 298: 7(int) Bitcast 297 - 300: 155(bool) ULessThan 294 298 - SelectionMerge 302 None - BranchConditional 300 301 302 - 301: Label - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 305 305 12 12 - 306: 7(int) Load 131(index) - 307: 7(int) IAdd 306 20 - 309: 217(ptr) AccessChain 189 191 307 191 - 310: 67(fvec4) Load 309 - 311: 27(fvec3) VectorShuffle 310 310 0 1 2 - Store 308(param) 311 - 313: 27(fvec3) Load 247(pos) - Store 312(param) 313 - 315: 101(ptr) AccessChain 97(params) 193 - 316: 24(float) Load 315 - Store 314(param) 316 - 317: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 308(param) 312(param) 314(param) - 318: 27(fvec3) Load 234(force) - 319: 27(fvec3) FAdd 318 317 - Store 234(force) 319 - Branch 302 - 302: Label - 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 322 322 12 12 - 323: 130(ptr) AccessChain 119(id) 20 - 324: 7(int) Load 323 - 325: 138(ptr) AccessChain 97(params) 137 20 - 326: 69(int) Load 325 - 327: 69(int) ISub 326 224 - 328: 7(int) Bitcast 327 - 330: 155(bool) ULessThan 324 328 - SelectionMerge 332 None - BranchConditional 330 331 332 - 331: Label - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 335 335 12 12 - 336: 7(int) Load 131(index) - 337: 138(ptr) AccessChain 97(params) 137 12 - 338: 69(int) Load 337 - 339: 7(int) Bitcast 338 - 340: 7(int) IAdd 336 339 - 343: 217(ptr) AccessChain 189 191 340 191 - 344: 67(fvec4) Load 343 - 345: 27(fvec3) VectorShuffle 344 344 0 1 2 - Store 342(param) 345 - 347: 27(fvec3) Load 247(pos) - Store 346(param) 347 - 349: 101(ptr) AccessChain 97(params) 341 - 350: 24(float) Load 349 - Store 348(param) 350 - 351: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 342(param) 346(param) 348(param) - 352: 27(fvec3) Load 234(force) - 353: 27(fvec3) FAdd 352 351 - Store 234(force) 353 - Branch 332 - 332: Label - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 356 356 12 12 - 357: 130(ptr) AccessChain 119(id) 20 - 358: 7(int) Load 357 - 360: 155(bool) UGreaterThan 358 12 - SelectionMerge 362 None - BranchConditional 360 361 362 - 361: Label - 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 365 365 12 12 - 366: 7(int) Load 131(index) - 367: 138(ptr) AccessChain 97(params) 137 12 - 368: 69(int) Load 367 - 369: 7(int) Bitcast 368 - 370: 7(int) ISub 366 369 - 372: 217(ptr) AccessChain 189 191 370 191 - 373: 67(fvec4) Load 372 - 374: 27(fvec3) VectorShuffle 373 373 0 1 2 - Store 371(param) 374 - 376: 27(fvec3) Load 247(pos) - Store 375(param) 376 - 378: 101(ptr) AccessChain 97(params) 341 - 379: 24(float) Load 378 - Store 377(param) 379 - 380: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 371(param) 375(param) 377(param) - 381: 27(fvec3) Load 234(force) - 382: 27(fvec3) FAdd 381 380 - Store 234(force) 382 - Branch 362 - 362: Label - 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 385 385 12 12 - 386: 130(ptr) AccessChain 119(id) 12 - 387: 7(int) Load 386 - 389: 155(bool) UGreaterThan 387 12 - SelectionMerge 391 None - BranchConditional 389 390 391 - 390: Label - 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 385 385 12 12 - 394: 130(ptr) AccessChain 119(id) 20 - 395: 7(int) Load 394 - 396: 138(ptr) AccessChain 97(params) 137 20 - 397: 69(int) Load 396 - 398: 69(int) ISub 397 224 - 399: 7(int) Bitcast 398 - 401: 155(bool) ULessThan 395 399 - Branch 391 - 391: Label - 402: 155(bool) Phi 389 362 401 390 - SelectionMerge 404 None - BranchConditional 402 403 404 - 403: Label - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 407 407 12 12 - 408: 7(int) Load 131(index) - 409: 138(ptr) AccessChain 97(params) 137 12 - 410: 69(int) Load 409 - 411: 7(int) Bitcast 410 - 412: 7(int) IAdd 408 411 - 413: 7(int) ISub 412 20 - 416: 217(ptr) AccessChain 189 191 413 191 - 417: 67(fvec4) Load 416 - 418: 27(fvec3) VectorShuffle 417 417 0 1 2 - Store 415(param) 418 - 420: 27(fvec3) Load 247(pos) - Store 419(param) 420 - 422: 101(ptr) AccessChain 97(params) 414 - 423: 24(float) Load 422 - Store 421(param) 423 - 424: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 415(param) 419(param) 421(param) - 425: 27(fvec3) Load 234(force) - 426: 27(fvec3) FAdd 425 424 - Store 234(force) 426 - Branch 404 - 404: Label - 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 429 429 12 12 - 430: 130(ptr) AccessChain 119(id) 12 - 431: 7(int) Load 430 - 433: 155(bool) UGreaterThan 431 12 - SelectionMerge 435 None - BranchConditional 433 434 435 - 434: Label - 436: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 429 429 12 12 - 438: 130(ptr) AccessChain 119(id) 20 - 439: 7(int) Load 438 - 441: 155(bool) UGreaterThan 439 12 - Branch 435 - 435: Label - 442: 155(bool) Phi 433 404 441 434 - SelectionMerge 444 None - BranchConditional 442 443 444 - 443: Label - 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 447 447 12 12 - 448: 7(int) Load 131(index) - 449: 138(ptr) AccessChain 97(params) 137 12 - 450: 69(int) Load 449 - 451: 7(int) Bitcast 450 - 452: 7(int) ISub 448 451 - 453: 7(int) ISub 452 20 - 455: 217(ptr) AccessChain 189 191 453 191 - 456: 67(fvec4) Load 455 - 457: 27(fvec3) VectorShuffle 456 456 0 1 2 - Store 454(param) 457 - 459: 27(fvec3) Load 247(pos) - Store 458(param) 459 - 461: 101(ptr) AccessChain 97(params) 414 - 462: 24(float) Load 461 - Store 460(param) 462 - 463: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 454(param) 458(param) 460(param) - 464: 27(fvec3) Load 234(force) - 465: 27(fvec3) FAdd 464 463 - Store 234(force) 465 - Branch 444 - 444: Label - 466: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 468 468 12 12 - 469: 130(ptr) AccessChain 119(id) 12 - 470: 7(int) Load 469 - 471: 138(ptr) AccessChain 97(params) 137 12 - 472: 69(int) Load 471 - 473: 69(int) ISub 472 224 - 474: 7(int) Bitcast 473 - 476: 155(bool) ULessThan 470 474 - SelectionMerge 478 None - BranchConditional 476 477 478 - 477: Label - 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 468 468 12 12 - 481: 130(ptr) AccessChain 119(id) 20 - 482: 7(int) Load 481 - 483: 138(ptr) AccessChain 97(params) 137 20 - 484: 69(int) Load 483 - 485: 69(int) ISub 484 224 - 486: 7(int) Bitcast 485 - 488: 155(bool) ULessThan 482 486 - Branch 478 - 478: Label - 489: 155(bool) Phi 476 444 488 477 - SelectionMerge 491 None - BranchConditional 489 490 491 - 490: Label - 492: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 494 494 12 12 - 495: 7(int) Load 131(index) - 496: 138(ptr) AccessChain 97(params) 137 12 - 497: 69(int) Load 496 - 498: 7(int) Bitcast 497 - 499: 7(int) IAdd 495 498 - 500: 7(int) IAdd 499 20 - 502: 217(ptr) AccessChain 189 191 500 191 - 503: 67(fvec4) Load 502 - 504: 27(fvec3) VectorShuffle 503 503 0 1 2 - Store 501(param) 504 - 506: 27(fvec3) Load 247(pos) - Store 505(param) 506 - 508: 101(ptr) AccessChain 97(params) 414 - 509: 24(float) Load 508 - Store 507(param) 509 - 510: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 501(param) 505(param) 507(param) - 511: 27(fvec3) Load 234(force) - 512: 27(fvec3) FAdd 511 510 - Store 234(force) 512 - Branch 491 - 491: Label - 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 515 515 12 12 - 516: 130(ptr) AccessChain 119(id) 12 - 517: 7(int) Load 516 - 518: 138(ptr) AccessChain 97(params) 137 12 - 519: 69(int) Load 518 - 520: 69(int) ISub 519 224 - 521: 7(int) Bitcast 520 - 523: 155(bool) ULessThan 517 521 - SelectionMerge 525 None - BranchConditional 523 524 525 - 524: Label - 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 515 515 12 12 - 528: 130(ptr) AccessChain 119(id) 20 - 529: 7(int) Load 528 - 531: 155(bool) UGreaterThan 529 12 - Branch 525 - 525: Label - 532: 155(bool) Phi 523 491 531 524 - SelectionMerge 534 None - BranchConditional 532 533 534 - 533: Label - 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 537 537 12 12 - 538: 7(int) Load 131(index) - 539: 138(ptr) AccessChain 97(params) 137 12 - 540: 69(int) Load 539 - 541: 7(int) Bitcast 540 - 542: 7(int) ISub 538 541 - 543: 7(int) IAdd 542 20 - 545: 217(ptr) AccessChain 189 191 543 191 - 546: 67(fvec4) Load 545 - 547: 27(fvec3) VectorShuffle 546 546 0 1 2 - Store 544(param) 547 - 549: 27(fvec3) Load 247(pos) - Store 548(param) 549 - 551: 101(ptr) AccessChain 97(params) 414 - 552: 24(float) Load 551 - Store 550(param) 552 - 553: 27(fvec3) FunctionCall 36(springForce(vf3;vf3;f1;) 544(param) 548(param) 550(param) - 554: 27(fvec3) Load 234(force) - 555: 27(fvec3) FAdd 554 553 - Store 234(force) 555 - Branch 534 - 534: Label - 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 558 558 12 12 - 560: 101(ptr) AccessChain 97(params) 559 - 561: 24(float) Load 560 - 562: 24(float) FNegate 561 - 563: 27(fvec3) Load 257(vel) - 564: 27(fvec3) VectorTimesScalar 563 562 - 565: 27(fvec3) Load 234(force) - 566: 27(fvec3) FAdd 565 564 - Store 234(force) 566 - 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 568 568 12 12 - 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 570 569(f) 45 - 573: 27(fvec3) Load 234(force) - 574: 101(ptr) AccessChain 97(params) 224 - 575: 24(float) Load 574 - 576: 24(float) FDiv 196 575 - 577: 27(fvec3) VectorTimesScalar 573 576 - Store 569(f) 577 - 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 579 579 12 12 - 580: 7(int) Load 131(index) - 581: 27(fvec3) Load 247(pos) - 582: 27(fvec3) Load 257(vel) - 583: 101(ptr) AccessChain 97(params) 191 - 584: 24(float) Load 583 - 585: 27(fvec3) VectorTimesScalar 582 584 - 586: 27(fvec3) FAdd 581 585 - 588: 27(fvec3) Load 569(f) - 589: 27(fvec3) VectorTimesScalar 588 587 - 590: 101(ptr) AccessChain 97(params) 191 - 591: 24(float) Load 590 - 592: 27(fvec3) VectorTimesScalar 589 591 - 593: 101(ptr) AccessChain 97(params) 191 - 594: 24(float) Load 593 - 595: 27(fvec3) VectorTimesScalar 592 594 - 596: 27(fvec3) FAdd 586 595 - 597: 24(float) CompositeExtract 596 0 - 598: 24(float) CompositeExtract 596 1 - 599: 24(float) CompositeExtract 596 2 - 600: 67(fvec4) CompositeConstruct 597 598 599 196 - 601: 217(ptr) AccessChain 213 191 580 191 - Store 601 600 - 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 603 603 12 12 - 604: 7(int) Load 131(index) - 605: 27(fvec3) Load 257(vel) - 606: 27(fvec3) Load 569(f) - 607: 101(ptr) AccessChain 97(params) 191 - 608: 24(float) Load 607 - 609: 27(fvec3) VectorTimesScalar 606 608 - 610: 27(fvec3) FAdd 605 609 - 611: 24(float) CompositeExtract 610 0 - 612: 24(float) CompositeExtract 610 1 - 613: 24(float) CompositeExtract 610 2 - 614: 67(fvec4) CompositeConstruct 611 612 613 225 - 615: 217(ptr) AccessChain 213 191 604 224 - Store 615 614 - 616: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 617 617 12 12 - 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 619 618(sphereDist) 45 - 622: 7(int) Load 131(index) - 623: 217(ptr) AccessChain 213 191 622 191 - 624: 67(fvec4) Load 623 - 625: 27(fvec3) VectorShuffle 624 624 0 1 2 - 627: 217(ptr) AccessChain 97(params) 626 - 628: 67(fvec4) Load 627 - 629: 27(fvec3) VectorShuffle 628 628 0 1 2 - 630: 27(fvec3) FSub 625 629 - Store 618(sphereDist) 630 - 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 - 633: 27(fvec3) Load 618(sphereDist) - 634: 24(float) ExtInst 3(GLSL.std.450) 66(Length) 633 - 636: 101(ptr) AccessChain 97(params) 635 - 637: 24(float) Load 636 - 639: 24(float) FAdd 637 638 - 641: 155(bool) FOrdLessThan 634 639 - SelectionMerge 643 None - BranchConditional 641 642 643 - 642: Label - 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 645: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 646 646 12 12 - 647: 7(int) Load 131(index) - 648: 217(ptr) AccessChain 97(params) 626 - 649: 67(fvec4) Load 648 - 650: 27(fvec3) VectorShuffle 649 649 0 1 2 - 651: 27(fvec3) Load 618(sphereDist) - 652: 27(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 651 - 653: 101(ptr) AccessChain 97(params) 635 - 654: 24(float) Load 653 - 655: 24(float) FAdd 654 638 - 656: 27(fvec3) VectorTimesScalar 652 655 - 657: 27(fvec3) FAdd 650 656 - 658: 101(ptr) AccessChain 213 191 647 191 12 - 659: 24(float) CompositeExtract 657 0 - Store 658 659 - 660: 101(ptr) AccessChain 213 191 647 191 20 - 661: 24(float) CompositeExtract 657 1 + 202: Label + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 235 235 12 12 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 237 236(force) 44 + 241: 219(ptr) AccessChain 99(params) 240 + 242: 69(fvec4) Load 241 + 243: 19(fvec3) VectorShuffle 242 242 0 1 2 + 244: 103(ptr) AccessChain 99(params) 226 + 245: 16(float) Load 244 + 246: 19(fvec3) VectorTimesScalar 243 245 + Store 236(force) 246 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 248 248 12 12 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 250 249(pos) 44 + 253: 7(int) Load 133(index) + 254: 219(ptr) AccessChain 191 193 253 193 + 255: 69(fvec4) Load 254 + 256: 19(fvec3) VectorShuffle 255 255 0 1 2 + Store 249(pos) 256 + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 258 258 12 12 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(vel) 44 + 263: 7(int) Load 133(index) + 264: 219(ptr) AccessChain 191 193 263 226 + 265: 69(fvec4) Load 264 + 266: 19(fvec3) VectorShuffle 265 265 0 1 2 + Store 259(vel) 266 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 268 268 12 12 + 269: 132(ptr) AccessChain 121(id) 12 + 270: 7(int) Load 269 + 272: 157(bool) UGreaterThan 270 12 + SelectionMerge 274 None + BranchConditional 272 273 274 + 273: Label + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 277 277 12 12 + 278: 7(int) Load 133(index) + 279: 7(int) ISub 278 36 + 281: 219(ptr) AccessChain 191 193 279 193 + 282: 69(fvec4) Load 281 + 283: 19(fvec3) VectorShuffle 282 282 0 1 2 + Store 280(param) 283 + 285: 19(fvec3) Load 249(pos) + Store 284(param) 285 + 287: 103(ptr) AccessChain 99(params) 195 + 288: 16(float) Load 287 + Store 286(param) 288 + 289: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 280(param) 284(param) 286(param) + 290: 19(fvec3) Load 236(force) + 291: 19(fvec3) FAdd 290 289 + Store 236(force) 291 + Branch 274 + 274: Label + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 294 294 12 12 + 295: 132(ptr) AccessChain 121(id) 12 + 296: 7(int) Load 295 + 297: 140(ptr) AccessChain 99(params) 139 12 + 298: 71(int) Load 297 + 299: 71(int) ISub 298 226 + 300: 7(int) Bitcast 299 + 302: 157(bool) ULessThan 296 300 + SelectionMerge 304 None + BranchConditional 302 303 304 + 303: Label + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 307 307 12 12 + 308: 7(int) Load 133(index) + 309: 7(int) IAdd 308 36 + 311: 219(ptr) AccessChain 191 193 309 193 + 312: 69(fvec4) Load 311 + 313: 19(fvec3) VectorShuffle 312 312 0 1 2 + Store 310(param) 313 + 315: 19(fvec3) Load 249(pos) + Store 314(param) 315 + 317: 103(ptr) AccessChain 99(params) 195 + 318: 16(float) Load 317 + Store 316(param) 318 + 319: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 310(param) 314(param) 316(param) + 320: 19(fvec3) Load 236(force) + 321: 19(fvec3) FAdd 320 319 + Store 236(force) 321 + Branch 304 + 304: Label + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 324 324 12 12 + 325: 132(ptr) AccessChain 121(id) 36 + 326: 7(int) Load 325 + 327: 140(ptr) AccessChain 99(params) 139 36 + 328: 71(int) Load 327 + 329: 71(int) ISub 328 226 + 330: 7(int) Bitcast 329 + 332: 157(bool) ULessThan 326 330 + SelectionMerge 334 None + BranchConditional 332 333 334 + 333: Label + 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 337 337 12 12 + 338: 7(int) Load 133(index) + 339: 140(ptr) AccessChain 99(params) 139 12 + 340: 71(int) Load 339 + 341: 7(int) Bitcast 340 + 342: 7(int) IAdd 338 341 + 345: 219(ptr) AccessChain 191 193 342 193 + 346: 69(fvec4) Load 345 + 347: 19(fvec3) VectorShuffle 346 346 0 1 2 + Store 344(param) 347 + 349: 19(fvec3) Load 249(pos) + Store 348(param) 349 + 351: 103(ptr) AccessChain 99(params) 343 + 352: 16(float) Load 351 + Store 350(param) 352 + 353: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 344(param) 348(param) 350(param) + 354: 19(fvec3) Load 236(force) + 355: 19(fvec3) FAdd 354 353 + Store 236(force) 355 + Branch 334 + 334: Label + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 358 358 12 12 + 359: 132(ptr) AccessChain 121(id) 36 + 360: 7(int) Load 359 + 362: 157(bool) UGreaterThan 360 12 + SelectionMerge 364 None + BranchConditional 362 363 364 + 363: Label + 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 366: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 367 367 12 12 + 368: 7(int) Load 133(index) + 369: 140(ptr) AccessChain 99(params) 139 12 + 370: 71(int) Load 369 + 371: 7(int) Bitcast 370 + 372: 7(int) ISub 368 371 + 374: 219(ptr) AccessChain 191 193 372 193 + 375: 69(fvec4) Load 374 + 376: 19(fvec3) VectorShuffle 375 375 0 1 2 + Store 373(param) 376 + 378: 19(fvec3) Load 249(pos) + Store 377(param) 378 + 380: 103(ptr) AccessChain 99(params) 343 + 381: 16(float) Load 380 + Store 379(param) 381 + 382: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 373(param) 377(param) 379(param) + 383: 19(fvec3) Load 236(force) + 384: 19(fvec3) FAdd 383 382 + Store 236(force) 384 + Branch 364 + 364: Label + 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 387 387 12 12 + 388: 132(ptr) AccessChain 121(id) 12 + 389: 7(int) Load 388 + 391: 157(bool) UGreaterThan 389 12 + SelectionMerge 393 None + BranchConditional 391 392 393 + 392: Label + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 387 387 12 12 + 396: 132(ptr) AccessChain 121(id) 36 + 397: 7(int) Load 396 + 398: 140(ptr) AccessChain 99(params) 139 36 + 399: 71(int) Load 398 + 400: 71(int) ISub 399 226 + 401: 7(int) Bitcast 400 + 403: 157(bool) ULessThan 397 401 + Branch 393 + 393: Label + 404: 157(bool) Phi 391 364 403 392 + SelectionMerge 406 None + BranchConditional 404 405 406 + 405: Label + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 409 409 12 12 + 410: 7(int) Load 133(index) + 411: 140(ptr) AccessChain 99(params) 139 12 + 412: 71(int) Load 411 + 413: 7(int) Bitcast 412 + 414: 7(int) IAdd 410 413 + 415: 7(int) ISub 414 36 + 418: 219(ptr) AccessChain 191 193 415 193 + 419: 69(fvec4) Load 418 + 420: 19(fvec3) VectorShuffle 419 419 0 1 2 + Store 417(param) 420 + 422: 19(fvec3) Load 249(pos) + Store 421(param) 422 + 424: 103(ptr) AccessChain 99(params) 416 + 425: 16(float) Load 424 + Store 423(param) 425 + 426: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 417(param) 421(param) 423(param) + 427: 19(fvec3) Load 236(force) + 428: 19(fvec3) FAdd 427 426 + Store 236(force) 428 + Branch 406 + 406: Label + 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 431 431 12 12 + 432: 132(ptr) AccessChain 121(id) 12 + 433: 7(int) Load 432 + 435: 157(bool) UGreaterThan 433 12 + SelectionMerge 437 None + BranchConditional 435 436 437 + 436: Label + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 431 431 12 12 + 440: 132(ptr) AccessChain 121(id) 36 + 441: 7(int) Load 440 + 443: 157(bool) UGreaterThan 441 12 + Branch 437 + 437: Label + 444: 157(bool) Phi 435 406 443 436 + SelectionMerge 446 None + BranchConditional 444 445 446 + 445: Label + 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 449 449 12 12 + 450: 7(int) Load 133(index) + 451: 140(ptr) AccessChain 99(params) 139 12 + 452: 71(int) Load 451 + 453: 7(int) Bitcast 452 + 454: 7(int) ISub 450 453 + 455: 7(int) ISub 454 36 + 457: 219(ptr) AccessChain 191 193 455 193 + 458: 69(fvec4) Load 457 + 459: 19(fvec3) VectorShuffle 458 458 0 1 2 + Store 456(param) 459 + 461: 19(fvec3) Load 249(pos) + Store 460(param) 461 + 463: 103(ptr) AccessChain 99(params) 416 + 464: 16(float) Load 463 + Store 462(param) 464 + 465: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 456(param) 460(param) 462(param) + 466: 19(fvec3) Load 236(force) + 467: 19(fvec3) FAdd 466 465 + Store 236(force) 467 + Branch 446 + 446: Label + 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 470 470 12 12 + 471: 132(ptr) AccessChain 121(id) 12 + 472: 7(int) Load 471 + 473: 140(ptr) AccessChain 99(params) 139 12 + 474: 71(int) Load 473 + 475: 71(int) ISub 474 226 + 476: 7(int) Bitcast 475 + 478: 157(bool) ULessThan 472 476 + SelectionMerge 480 None + BranchConditional 478 479 480 + 479: Label + 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 470 470 12 12 + 483: 132(ptr) AccessChain 121(id) 36 + 484: 7(int) Load 483 + 485: 140(ptr) AccessChain 99(params) 139 36 + 486: 71(int) Load 485 + 487: 71(int) ISub 486 226 + 488: 7(int) Bitcast 487 + 490: 157(bool) ULessThan 484 488 + Branch 480 + 480: Label + 491: 157(bool) Phi 478 446 490 479 + SelectionMerge 493 None + BranchConditional 491 492 493 + 492: Label + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 496 496 12 12 + 497: 7(int) Load 133(index) + 498: 140(ptr) AccessChain 99(params) 139 12 + 499: 71(int) Load 498 + 500: 7(int) Bitcast 499 + 501: 7(int) IAdd 497 500 + 502: 7(int) IAdd 501 36 + 504: 219(ptr) AccessChain 191 193 502 193 + 505: 69(fvec4) Load 504 + 506: 19(fvec3) VectorShuffle 505 505 0 1 2 + Store 503(param) 506 + 508: 19(fvec3) Load 249(pos) + Store 507(param) 508 + 510: 103(ptr) AccessChain 99(params) 416 + 511: 16(float) Load 510 + Store 509(param) 511 + 512: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 503(param) 507(param) 509(param) + 513: 19(fvec3) Load 236(force) + 514: 19(fvec3) FAdd 513 512 + Store 236(force) 514 + Branch 493 + 493: Label + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 517 517 12 12 + 518: 132(ptr) AccessChain 121(id) 12 + 519: 7(int) Load 518 + 520: 140(ptr) AccessChain 99(params) 139 12 + 521: 71(int) Load 520 + 522: 71(int) ISub 521 226 + 523: 7(int) Bitcast 522 + 525: 157(bool) ULessThan 519 523 + SelectionMerge 527 None + BranchConditional 525 526 527 + 526: Label + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 517 517 12 12 + 530: 132(ptr) AccessChain 121(id) 36 + 531: 7(int) Load 530 + 533: 157(bool) UGreaterThan 531 12 + Branch 527 + 527: Label + 534: 157(bool) Phi 525 493 533 526 + SelectionMerge 536 None + BranchConditional 534 535 536 + 535: Label + 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 539 539 12 12 + 540: 7(int) Load 133(index) + 541: 140(ptr) AccessChain 99(params) 139 12 + 542: 71(int) Load 541 + 543: 7(int) Bitcast 542 + 544: 7(int) ISub 540 543 + 545: 7(int) IAdd 544 36 + 547: 219(ptr) AccessChain 191 193 545 193 + 548: 69(fvec4) Load 547 + 549: 19(fvec3) VectorShuffle 548 548 0 1 2 + Store 546(param) 549 + 551: 19(fvec3) Load 249(pos) + Store 550(param) 551 + 553: 103(ptr) AccessChain 99(params) 416 + 554: 16(float) Load 553 + Store 552(param) 554 + 555: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 546(param) 550(param) 552(param) + 556: 19(fvec3) Load 236(force) + 557: 19(fvec3) FAdd 556 555 + Store 236(force) 557 + Branch 536 + 536: Label + 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 560 560 12 12 + 562: 103(ptr) AccessChain 99(params) 561 + 563: 16(float) Load 562 + 564: 16(float) FNegate 563 + 565: 19(fvec3) Load 259(vel) + 566: 19(fvec3) VectorTimesScalar 565 564 + 567: 19(fvec3) Load 236(force) + 568: 19(fvec3) FAdd 567 566 + Store 236(force) 568 + 569: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 570 570 12 12 + 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 572 571(f) 44 + 575: 19(fvec3) Load 236(force) + 576: 103(ptr) AccessChain 99(params) 226 + 577: 16(float) Load 576 + 578: 16(float) FDiv 198 577 + 579: 19(fvec3) VectorTimesScalar 575 578 + Store 571(f) 579 + 580: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 581 581 12 12 + 582: 7(int) Load 133(index) + 583: 19(fvec3) Load 249(pos) + 584: 19(fvec3) Load 259(vel) + 585: 103(ptr) AccessChain 99(params) 193 + 586: 16(float) Load 585 + 587: 19(fvec3) VectorTimesScalar 584 586 + 588: 19(fvec3) FAdd 583 587 + 590: 19(fvec3) Load 571(f) + 591: 19(fvec3) VectorTimesScalar 590 589 + 592: 103(ptr) AccessChain 99(params) 193 + 593: 16(float) Load 592 + 594: 19(fvec3) VectorTimesScalar 591 593 + 595: 103(ptr) AccessChain 99(params) 193 + 596: 16(float) Load 595 + 597: 19(fvec3) VectorTimesScalar 594 596 + 598: 19(fvec3) FAdd 588 597 + 599: 16(float) CompositeExtract 598 0 + 600: 16(float) CompositeExtract 598 1 + 601: 16(float) CompositeExtract 598 2 + 602: 69(fvec4) CompositeConstruct 599 600 601 198 + 603: 219(ptr) AccessChain 215 193 582 193 + Store 603 602 + 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 605 605 12 12 + 606: 7(int) Load 133(index) + 607: 19(fvec3) Load 259(vel) + 608: 19(fvec3) Load 571(f) + 609: 103(ptr) AccessChain 99(params) 193 + 610: 16(float) Load 609 + 611: 19(fvec3) VectorTimesScalar 608 610 + 612: 19(fvec3) FAdd 607 611 + 613: 16(float) CompositeExtract 612 0 + 614: 16(float) CompositeExtract 612 1 + 615: 16(float) CompositeExtract 612 2 + 616: 69(fvec4) CompositeConstruct 613 614 615 227 + 617: 219(ptr) AccessChain 215 193 606 226 + Store 617 616 + 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 619 619 12 12 + 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 621 620(sphereDist) 44 + 624: 7(int) Load 133(index) + 625: 219(ptr) AccessChain 215 193 624 193 + 626: 69(fvec4) Load 625 + 627: 19(fvec3) VectorShuffle 626 626 0 1 2 + 629: 219(ptr) AccessChain 99(params) 628 + 630: 69(fvec4) Load 629 + 631: 19(fvec3) VectorShuffle 630 630 0 1 2 + 632: 19(fvec3) FSub 627 631 + Store 620(sphereDist) 632 + 633: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 634 634 12 12 + 635: 19(fvec3) Load 620(sphereDist) + 636: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 635 + 638: 103(ptr) AccessChain 99(params) 637 + 639: 16(float) Load 638 + 641: 16(float) FAdd 639 640 + 643: 157(bool) FOrdLessThan 636 641 + SelectionMerge 645 None + BranchConditional 643 644 645 + 644: Label + 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 648 648 12 12 + 649: 7(int) Load 133(index) + 650: 219(ptr) AccessChain 99(params) 628 + 651: 69(fvec4) Load 650 + 652: 19(fvec3) VectorShuffle 651 651 0 1 2 + 653: 19(fvec3) Load 620(sphereDist) + 654: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 653 + 655: 103(ptr) AccessChain 99(params) 637 + 656: 16(float) Load 655 + 657: 16(float) FAdd 656 640 + 658: 19(fvec3) VectorTimesScalar 654 657 + 659: 19(fvec3) FAdd 652 658 + 660: 103(ptr) AccessChain 215 193 649 193 12 + 661: 16(float) CompositeExtract 659 0 Store 660 661 - 662: 101(ptr) AccessChain 213 191 647 191 22 - 663: 24(float) CompositeExtract 657 2 + 662: 103(ptr) AccessChain 215 193 649 193 36 + 663: 16(float) CompositeExtract 659 1 Store 662 663 - 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 665 665 12 12 - 666: 7(int) Load 131(index) - 667: 217(ptr) AccessChain 213 191 666 224 - Store 667 226 - Branch 643 - 643: Label - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 670 670 12 12 - 682: 681(ptr) AccessChain 678(pushConsts) 191 - 683: 7(int) Load 682 - 685: 155(bool) IEqual 683 20 - SelectionMerge 687 None - BranchConditional 685 686 687 - 686: Label - 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 690 690 12 12 - 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 692 691(normal) 45 - Store 691(normal) 694 - 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 696 696 12 12 - 697: 130(ptr) AccessChain 119(id) 20 - 698: 7(int) Load 697 - 700: 155(bool) UGreaterThan 698 12 - SelectionMerge 702 None - BranchConditional 700 701 702 - 701: Label - 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 705 705 12 12 - 706: 130(ptr) AccessChain 119(id) 12 - 707: 7(int) Load 706 - 709: 155(bool) UGreaterThan 707 12 - SelectionMerge 711 None - BranchConditional 709 710 711 - 710: Label - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 713: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 714 714 12 12 - 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 716 715(a) 45 - 719: 7(int) Load 131(index) - 720: 7(int) ISub 719 20 - 721: 217(ptr) AccessChain 189 191 720 191 - 722: 67(fvec4) Load 721 - 723: 27(fvec3) VectorShuffle 722 722 0 1 2 - 724: 27(fvec3) Load 247(pos) - 725: 27(fvec3) FSub 723 724 - Store 715(a) 725 - 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 727 727 12 12 - 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 729 728(b) 45 - 732: 7(int) Load 131(index) - 733: 138(ptr) AccessChain 97(params) 137 12 - 734: 69(int) Load 733 - 735: 7(int) Bitcast 734 - 736: 7(int) ISub 732 735 - 737: 7(int) ISub 736 20 - 738: 217(ptr) AccessChain 189 191 737 191 - 739: 67(fvec4) Load 738 - 740: 27(fvec3) VectorShuffle 739 739 0 1 2 - 741: 27(fvec3) Load 247(pos) - 742: 27(fvec3) FSub 740 741 - Store 728(b) 742 - 743: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 744 744 12 12 - 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 746 745(c) 45 - 749: 7(int) Load 131(index) - 750: 138(ptr) AccessChain 97(params) 137 12 - 751: 69(int) Load 750 - 752: 7(int) Bitcast 751 - 753: 7(int) ISub 749 752 - 754: 217(ptr) AccessChain 189 191 753 191 - 755: 67(fvec4) Load 754 - 756: 27(fvec3) VectorShuffle 755 755 0 1 2 - 757: 27(fvec3) Load 247(pos) - 758: 27(fvec3) FSub 756 757 - Store 745(c) 758 - 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 760 760 12 12 - 761: 27(fvec3) Load 715(a) - 762: 27(fvec3) Load 728(b) - 763: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 761 762 - 764: 27(fvec3) Load 728(b) - 765: 27(fvec3) Load 745(c) - 766: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 764 765 - 767: 27(fvec3) FAdd 763 766 - 768: 27(fvec3) Load 691(normal) - 769: 27(fvec3) FAdd 768 767 - Store 691(normal) 769 - Branch 711 - 711: Label - 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 771: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 772 772 12 12 - 773: 130(ptr) AccessChain 119(id) 12 - 774: 7(int) Load 773 - 775: 138(ptr) AccessChain 97(params) 137 12 - 776: 69(int) Load 775 - 777: 69(int) ISub 776 224 - 778: 7(int) Bitcast 777 - 780: 155(bool) ULessThan 774 778 - SelectionMerge 782 None - BranchConditional 780 781 782 - 781: Label - 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 784: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 785 785 12 12 - 786: 7(int) Load 131(index) - 787: 138(ptr) AccessChain 97(params) 137 12 - 788: 69(int) Load 787 - 789: 7(int) Bitcast 788 - 790: 7(int) ISub 786 789 - 791: 217(ptr) AccessChain 189 191 790 191 - 792: 67(fvec4) Load 791 - 793: 27(fvec3) VectorShuffle 792 792 0 1 2 - 794: 27(fvec3) Load 247(pos) - 795: 27(fvec3) FSub 793 794 - Store 715(a) 795 - 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 797 797 12 12 - 798: 7(int) Load 131(index) - 799: 138(ptr) AccessChain 97(params) 137 12 - 800: 69(int) Load 799 - 801: 7(int) Bitcast 800 - 802: 7(int) ISub 798 801 - 803: 7(int) IAdd 802 20 - 804: 217(ptr) AccessChain 189 191 803 191 - 805: 67(fvec4) Load 804 - 806: 27(fvec3) VectorShuffle 805 805 0 1 2 - 807: 27(fvec3) Load 247(pos) - 808: 27(fvec3) FSub 806 807 - Store 728(b) 808 - 809: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 810 810 12 12 - 811: 7(int) Load 131(index) - 812: 7(int) IAdd 811 20 - 813: 217(ptr) AccessChain 189 191 812 191 - 814: 67(fvec4) Load 813 - 815: 27(fvec3) VectorShuffle 814 814 0 1 2 - 816: 27(fvec3) Load 247(pos) - 817: 27(fvec3) FSub 815 816 - Store 745(c) 817 - 818: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 819 819 12 12 - 820: 27(fvec3) Load 715(a) - 821: 27(fvec3) Load 728(b) - 822: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 820 821 - 823: 27(fvec3) Load 728(b) - 824: 27(fvec3) Load 745(c) - 825: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 823 824 - 826: 27(fvec3) FAdd 822 825 - 827: 27(fvec3) Load 691(normal) - 828: 27(fvec3) FAdd 827 826 - Store 691(normal) 828 - Branch 782 - 782: Label - Branch 702 - 702: Label - 829: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 831 831 12 12 - 832: 130(ptr) AccessChain 119(id) 20 - 833: 7(int) Load 832 - 834: 138(ptr) AccessChain 97(params) 137 20 - 835: 69(int) Load 834 - 836: 69(int) ISub 835 224 - 837: 7(int) Bitcast 836 - 839: 155(bool) ULessThan 833 837 - SelectionMerge 841 None - BranchConditional 839 840 841 - 840: Label - 842: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 844 844 12 12 - 845: 130(ptr) AccessChain 119(id) 12 - 846: 7(int) Load 845 - 848: 155(bool) UGreaterThan 846 12 - SelectionMerge 850 None - BranchConditional 848 849 850 - 849: Label - 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 852: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 853 853 12 12 - 854: 7(int) Load 131(index) - 855: 138(ptr) AccessChain 97(params) 137 12 - 856: 69(int) Load 855 - 857: 7(int) Bitcast 856 - 858: 7(int) IAdd 854 857 - 859: 217(ptr) AccessChain 189 191 858 191 - 860: 67(fvec4) Load 859 - 861: 27(fvec3) VectorShuffle 860 860 0 1 2 - 862: 27(fvec3) Load 247(pos) - 863: 27(fvec3) FSub 861 862 - Store 715(a) 863 - 864: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 865 865 12 12 - 866: 7(int) Load 131(index) - 867: 138(ptr) AccessChain 97(params) 137 12 - 868: 69(int) Load 867 - 869: 7(int) Bitcast 868 - 870: 7(int) IAdd 866 869 - 871: 7(int) ISub 870 20 - 872: 217(ptr) AccessChain 189 191 871 191 - 873: 67(fvec4) Load 872 - 874: 27(fvec3) VectorShuffle 873 873 0 1 2 - 875: 27(fvec3) Load 247(pos) - 876: 27(fvec3) FSub 874 875 - Store 728(b) 876 - 877: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 878 878 12 12 - 879: 7(int) Load 131(index) - 880: 7(int) ISub 879 20 - 881: 217(ptr) AccessChain 189 191 880 191 - 882: 67(fvec4) Load 881 - 883: 27(fvec3) VectorShuffle 882 882 0 1 2 - 884: 27(fvec3) Load 247(pos) - 885: 27(fvec3) FSub 883 884 - Store 745(c) 885 - 886: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 887 887 12 12 - 888: 27(fvec3) Load 715(a) - 889: 27(fvec3) Load 728(b) - 890: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 888 889 - 891: 27(fvec3) Load 728(b) - 892: 27(fvec3) Load 745(c) - 893: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 891 892 - 894: 27(fvec3) FAdd 890 893 - 895: 27(fvec3) Load 691(normal) - 896: 27(fvec3) FAdd 895 894 - Store 691(normal) 896 - Branch 850 - 850: Label - 897: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 898: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 899 899 12 12 - 900: 130(ptr) AccessChain 119(id) 12 - 901: 7(int) Load 900 - 902: 138(ptr) AccessChain 97(params) 137 12 - 903: 69(int) Load 902 - 904: 69(int) ISub 903 224 - 905: 7(int) Bitcast 904 - 907: 155(bool) ULessThan 901 905 - SelectionMerge 909 None - BranchConditional 907 908 909 - 908: Label - 910: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 911: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 912 912 12 12 - 913: 7(int) Load 131(index) - 914: 7(int) IAdd 913 20 - 915: 217(ptr) AccessChain 189 191 914 191 - 916: 67(fvec4) Load 915 - 917: 27(fvec3) VectorShuffle 916 916 0 1 2 - 918: 27(fvec3) Load 247(pos) - 919: 27(fvec3) FSub 917 918 - Store 715(a) 919 - 920: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 921 921 12 12 - 922: 7(int) Load 131(index) - 923: 138(ptr) AccessChain 97(params) 137 12 - 924: 69(int) Load 923 - 925: 7(int) Bitcast 924 - 926: 7(int) IAdd 922 925 - 927: 7(int) IAdd 926 20 - 928: 217(ptr) AccessChain 189 191 927 191 - 929: 67(fvec4) Load 928 - 930: 27(fvec3) VectorShuffle 929 929 0 1 2 - 931: 27(fvec3) Load 247(pos) - 932: 27(fvec3) FSub 930 931 - Store 728(b) 932 - 933: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 934 934 12 12 - 935: 7(int) Load 131(index) - 936: 138(ptr) AccessChain 97(params) 137 12 - 937: 69(int) Load 936 - 938: 7(int) Bitcast 937 - 939: 7(int) IAdd 935 938 - 940: 217(ptr) AccessChain 189 191 939 191 - 941: 67(fvec4) Load 940 - 942: 27(fvec3) VectorShuffle 941 941 0 1 2 - 943: 27(fvec3) Load 247(pos) - 944: 27(fvec3) FSub 942 943 - Store 745(c) 944 - 945: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 946 946 12 12 - 947: 27(fvec3) Load 715(a) - 948: 27(fvec3) Load 728(b) - 949: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 947 948 - 950: 27(fvec3) Load 728(b) - 951: 27(fvec3) Load 745(c) - 952: 27(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 950 951 - 953: 27(fvec3) FAdd 949 952 - 954: 27(fvec3) Load 691(normal) - 955: 27(fvec3) FAdd 954 953 - Store 691(normal) 955 - Branch 909 - 909: Label - Branch 841 - 841: Label - 956: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 957: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 958 958 12 12 - 959: 7(int) Load 131(index) - 960: 27(fvec3) Load 691(normal) - 961: 27(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 960 - 962: 24(float) CompositeExtract 961 0 - 963: 24(float) CompositeExtract 961 1 - 964: 24(float) CompositeExtract 961 2 - 965: 67(fvec4) CompositeConstruct 962 963 964 225 - 966: 217(ptr) AccessChain 213 191 959 559 - Store 966 965 - Branch 687 - 687: Label + 664: 103(ptr) AccessChain 215 193 649 193 38 + 665: 16(float) CompositeExtract 659 2 + Store 664 665 + 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 667 667 12 12 + 668: 7(int) Load 133(index) + 669: 219(ptr) AccessChain 215 193 668 226 + Store 669 228 + Branch 645 + 645: Label + 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 671: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 672 672 12 12 + 684: 683(ptr) AccessChain 680(pushConsts) 193 + 685: 7(int) Load 684 + 687: 157(bool) IEqual 685 36 + SelectionMerge 689 None + BranchConditional 687 688 689 + 688: Label + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 692 692 12 12 + 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 694 693(normal) 44 + Store 693(normal) 696 + 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 698 698 12 12 + 699: 132(ptr) AccessChain 121(id) 36 + 700: 7(int) Load 699 + 702: 157(bool) UGreaterThan 700 12 + SelectionMerge 704 None + BranchConditional 702 703 704 + 703: Label + 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 707 707 12 12 + 708: 132(ptr) AccessChain 121(id) 12 + 709: 7(int) Load 708 + 711: 157(bool) UGreaterThan 709 12 + SelectionMerge 713 None + BranchConditional 711 712 713 + 712: Label + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 716 716 12 12 + 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 718 717(a) 44 + 721: 7(int) Load 133(index) + 722: 7(int) ISub 721 36 + 723: 219(ptr) AccessChain 191 193 722 193 + 724: 69(fvec4) Load 723 + 725: 19(fvec3) VectorShuffle 724 724 0 1 2 + 726: 19(fvec3) Load 249(pos) + 727: 19(fvec3) FSub 725 726 + Store 717(a) 727 + 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 729 729 12 12 + 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 731 730(b) 44 + 734: 7(int) Load 133(index) + 735: 140(ptr) AccessChain 99(params) 139 12 + 736: 71(int) Load 735 + 737: 7(int) Bitcast 736 + 738: 7(int) ISub 734 737 + 739: 7(int) ISub 738 36 + 740: 219(ptr) AccessChain 191 193 739 193 + 741: 69(fvec4) Load 740 + 742: 19(fvec3) VectorShuffle 741 741 0 1 2 + 743: 19(fvec3) Load 249(pos) + 744: 19(fvec3) FSub 742 743 + Store 730(b) 744 + 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 746 746 12 12 + 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 748 747(c) 44 + 751: 7(int) Load 133(index) + 752: 140(ptr) AccessChain 99(params) 139 12 + 753: 71(int) Load 752 + 754: 7(int) Bitcast 753 + 755: 7(int) ISub 751 754 + 756: 219(ptr) AccessChain 191 193 755 193 + 757: 69(fvec4) Load 756 + 758: 19(fvec3) VectorShuffle 757 757 0 1 2 + 759: 19(fvec3) Load 249(pos) + 760: 19(fvec3) FSub 758 759 + Store 747(c) 760 + 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 762 762 12 12 + 763: 19(fvec3) Load 717(a) + 764: 19(fvec3) Load 730(b) + 765: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 763 764 + 766: 19(fvec3) Load 730(b) + 767: 19(fvec3) Load 747(c) + 768: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 766 767 + 769: 19(fvec3) FAdd 765 768 + 770: 19(fvec3) Load 693(normal) + 771: 19(fvec3) FAdd 770 769 + Store 693(normal) 771 + Branch 713 + 713: Label + 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 774 774 12 12 + 775: 132(ptr) AccessChain 121(id) 12 + 776: 7(int) Load 775 + 777: 140(ptr) AccessChain 99(params) 139 12 + 778: 71(int) Load 777 + 779: 71(int) ISub 778 226 + 780: 7(int) Bitcast 779 + 782: 157(bool) ULessThan 776 780 + SelectionMerge 784 None + BranchConditional 782 783 784 + 783: Label + 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 787 787 12 12 + 788: 7(int) Load 133(index) + 789: 140(ptr) AccessChain 99(params) 139 12 + 790: 71(int) Load 789 + 791: 7(int) Bitcast 790 + 792: 7(int) ISub 788 791 + 793: 219(ptr) AccessChain 191 193 792 193 + 794: 69(fvec4) Load 793 + 795: 19(fvec3) VectorShuffle 794 794 0 1 2 + 796: 19(fvec3) Load 249(pos) + 797: 19(fvec3) FSub 795 796 + Store 717(a) 797 + 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 799 799 12 12 + 800: 7(int) Load 133(index) + 801: 140(ptr) AccessChain 99(params) 139 12 + 802: 71(int) Load 801 + 803: 7(int) Bitcast 802 + 804: 7(int) ISub 800 803 + 805: 7(int) IAdd 804 36 + 806: 219(ptr) AccessChain 191 193 805 193 + 807: 69(fvec4) Load 806 + 808: 19(fvec3) VectorShuffle 807 807 0 1 2 + 809: 19(fvec3) Load 249(pos) + 810: 19(fvec3) FSub 808 809 + Store 730(b) 810 + 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 812 812 12 12 + 813: 7(int) Load 133(index) + 814: 7(int) IAdd 813 36 + 815: 219(ptr) AccessChain 191 193 814 193 + 816: 69(fvec4) Load 815 + 817: 19(fvec3) VectorShuffle 816 816 0 1 2 + 818: 19(fvec3) Load 249(pos) + 819: 19(fvec3) FSub 817 818 + Store 747(c) 819 + 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 821 821 12 12 + 822: 19(fvec3) Load 717(a) + 823: 19(fvec3) Load 730(b) + 824: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 822 823 + 825: 19(fvec3) Load 730(b) + 826: 19(fvec3) Load 747(c) + 827: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 825 826 + 828: 19(fvec3) FAdd 824 827 + 829: 19(fvec3) Load 693(normal) + 830: 19(fvec3) FAdd 829 828 + Store 693(normal) 830 + Branch 784 + 784: Label + Branch 704 + 704: Label + 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 832: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 833 833 12 12 + 834: 132(ptr) AccessChain 121(id) 36 + 835: 7(int) Load 834 + 836: 140(ptr) AccessChain 99(params) 139 36 + 837: 71(int) Load 836 + 838: 71(int) ISub 837 226 + 839: 7(int) Bitcast 838 + 841: 157(bool) ULessThan 835 839 + SelectionMerge 843 None + BranchConditional 841 842 843 + 842: Label + 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 846 846 12 12 + 847: 132(ptr) AccessChain 121(id) 12 + 848: 7(int) Load 847 + 850: 157(bool) UGreaterThan 848 12 + SelectionMerge 852 None + BranchConditional 850 851 852 + 851: Label + 853: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 855 855 12 12 + 856: 7(int) Load 133(index) + 857: 140(ptr) AccessChain 99(params) 139 12 + 858: 71(int) Load 857 + 859: 7(int) Bitcast 858 + 860: 7(int) IAdd 856 859 + 861: 219(ptr) AccessChain 191 193 860 193 + 862: 69(fvec4) Load 861 + 863: 19(fvec3) VectorShuffle 862 862 0 1 2 + 864: 19(fvec3) Load 249(pos) + 865: 19(fvec3) FSub 863 864 + Store 717(a) 865 + 866: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 867 867 12 12 + 868: 7(int) Load 133(index) + 869: 140(ptr) AccessChain 99(params) 139 12 + 870: 71(int) Load 869 + 871: 7(int) Bitcast 870 + 872: 7(int) IAdd 868 871 + 873: 7(int) ISub 872 36 + 874: 219(ptr) AccessChain 191 193 873 193 + 875: 69(fvec4) Load 874 + 876: 19(fvec3) VectorShuffle 875 875 0 1 2 + 877: 19(fvec3) Load 249(pos) + 878: 19(fvec3) FSub 876 877 + Store 730(b) 878 + 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 880 880 12 12 + 881: 7(int) Load 133(index) + 882: 7(int) ISub 881 36 + 883: 219(ptr) AccessChain 191 193 882 193 + 884: 69(fvec4) Load 883 + 885: 19(fvec3) VectorShuffle 884 884 0 1 2 + 886: 19(fvec3) Load 249(pos) + 887: 19(fvec3) FSub 885 886 + Store 747(c) 887 + 888: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 889 889 12 12 + 890: 19(fvec3) Load 717(a) + 891: 19(fvec3) Load 730(b) + 892: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 890 891 + 893: 19(fvec3) Load 730(b) + 894: 19(fvec3) Load 747(c) + 895: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 893 894 + 896: 19(fvec3) FAdd 892 895 + 897: 19(fvec3) Load 693(normal) + 898: 19(fvec3) FAdd 897 896 + Store 693(normal) 898 + Branch 852 + 852: Label + 899: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 900: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 901 901 12 12 + 902: 132(ptr) AccessChain 121(id) 12 + 903: 7(int) Load 902 + 904: 140(ptr) AccessChain 99(params) 139 12 + 905: 71(int) Load 904 + 906: 71(int) ISub 905 226 + 907: 7(int) Bitcast 906 + 909: 157(bool) ULessThan 903 907 + SelectionMerge 911 None + BranchConditional 909 910 911 + 910: Label + 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 913: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 914 914 12 12 + 915: 7(int) Load 133(index) + 916: 7(int) IAdd 915 36 + 917: 219(ptr) AccessChain 191 193 916 193 + 918: 69(fvec4) Load 917 + 919: 19(fvec3) VectorShuffle 918 918 0 1 2 + 920: 19(fvec3) Load 249(pos) + 921: 19(fvec3) FSub 919 920 + Store 717(a) 921 + 922: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 923 923 12 12 + 924: 7(int) Load 133(index) + 925: 140(ptr) AccessChain 99(params) 139 12 + 926: 71(int) Load 925 + 927: 7(int) Bitcast 926 + 928: 7(int) IAdd 924 927 + 929: 7(int) IAdd 928 36 + 930: 219(ptr) AccessChain 191 193 929 193 + 931: 69(fvec4) Load 930 + 932: 19(fvec3) VectorShuffle 931 931 0 1 2 + 933: 19(fvec3) Load 249(pos) + 934: 19(fvec3) FSub 932 933 + Store 730(b) 934 + 935: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 936 936 12 12 + 937: 7(int) Load 133(index) + 938: 140(ptr) AccessChain 99(params) 139 12 + 939: 71(int) Load 938 + 940: 7(int) Bitcast 939 + 941: 7(int) IAdd 937 940 + 942: 219(ptr) AccessChain 191 193 941 193 + 943: 69(fvec4) Load 942 + 944: 19(fvec3) VectorShuffle 943 943 0 1 2 + 945: 19(fvec3) Load 249(pos) + 946: 19(fvec3) FSub 944 945 + Store 747(c) 946 + 947: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 948 948 12 12 + 949: 19(fvec3) Load 717(a) + 950: 19(fvec3) Load 730(b) + 951: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 949 950 + 952: 19(fvec3) Load 730(b) + 953: 19(fvec3) Load 747(c) + 954: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 952 953 + 955: 19(fvec3) FAdd 951 954 + 956: 19(fvec3) Load 693(normal) + 957: 19(fvec3) FAdd 956 955 + Store 693(normal) 957 + Branch 911 + 911: Label + Branch 843 + 843: Label + 958: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 959: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 960 960 12 12 + 961: 7(int) Load 133(index) + 962: 19(fvec3) Load 693(normal) + 963: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 962 + 964: 16(float) CompositeExtract 963 0 + 965: 16(float) CompositeExtract 963 1 + 966: 16(float) CompositeExtract 963 2 + 967: 69(fvec4) CompositeConstruct 964 965 966 227 + 968: 219(ptr) AccessChain 215 193 961 561 + Store 968 967 + Branch 689 + 689: Label Return FunctionEnd Line 1 66 50 -36(springForce(vf3;vf3;f1;): 27(fvec3) Function None 31 - 33(p0): 29(ptr) FunctionParameter - 34(p1): 29(ptr) FunctionParameter - 35(restDist): 30(ptr) FunctionParameter - 39: Label - 56(dist): 29(ptr) Variable Function - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 38 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 33(p0) 45 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(p1) 45 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 35(restDist) 45 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 38 36(springForce(vf3;vf3;f1;) - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 38 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 55 55 12 12 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 57 56(dist) 45 - 60: 27(fvec3) Load 33(p0) - 61: 27(fvec3) Load 34(p1) - 62: 27(fvec3) FSub 60 61 - Store 56(dist) 62 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 64 64 12 12 - 65: 27(fvec3) Load 56(dist) - 66: 27(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 65 - 102: 101(ptr) AccessChain 97(params) 100 - 103: 24(float) Load 102 - 104: 27(fvec3) VectorTimesScalar 66 103 - 105: 27(fvec3) Load 56(dist) - 106: 24(float) ExtInst 3(GLSL.std.450) 66(Length) 105 - 107: 24(float) Load 35(restDist) - 108: 24(float) FSub 106 107 - 109: 27(fvec3) VectorTimesScalar 104 108 - ReturnValue 109 +28(springForce(vf3;vf3;f1;): 19(fvec3) Function None 23 + 25(p0): 21(ptr) FunctionParameter + 26(p1): 21(ptr) FunctionParameter + 27(restDist): 22(ptr) FunctionParameter + 29: Label + 58(dist): 21(ptr) Variable Function + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 34 34 12 12 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 25(p0) 44 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 26(p1) 44 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 27(restDist) 44 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(springForce(vf3;vf3;f1;) + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 57 57 12 12 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 59 58(dist) 44 + 62: 19(fvec3) Load 25(p0) + 63: 19(fvec3) Load 26(p1) + 64: 19(fvec3) FSub 62 63 + Store 58(dist) 64 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 66 66 12 12 + 67: 19(fvec3) Load 58(dist) + 68: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 67 + 104: 103(ptr) AccessChain 99(params) 102 + 105: 16(float) Load 104 + 106: 19(fvec3) VectorTimesScalar 68 105 + 107: 19(fvec3) Load 58(dist) + 108: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 107 + 109: 16(float) Load 27(restDist) + 110: 16(float) FSub 108 109 + 111: 19(fvec3) VectorTimesScalar 106 110 + ReturnValue 111 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 464e321734..35dfd13e74 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 859 +// Id's are bound by 863 Capability Shader Capability ImageQuery @@ -9,12 +9,13 @@ spv.debuginfo.glsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 14 "main" 478 533 + EntryPoint Fragment 14 "main" 482 537 ExecutionMode 14 OriginUpperLeft 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 17: String "float" + 35: String "textureProj" + 38: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -22,165 +23,164 @@ spv.debuginfo.glsl.frag // OpModuleProcessed entry-point main #line 1 " - 25: String "float" - 40: String "textureProj" - 46: String "P" - 50: String "layer" - 53: String "offset" + 45: String "P" + 49: String "layer" + 52: String "offset" 60: String "filterPCF" 66: String "sc" - 78: String "shadow" - 84: String "fragcolor" - 87: String "fragpos" - 93: String "int" - 98: String "global_var" - 113: String "shadowCoord" - 138: String "bool" - 157: String "dist" - 161: String "type.2d.image" - 162: String "@type.2d.image" - 166: String "type.sampled.image" - 167: String "@type.sampled.image" - 171: String "samplerShadowMap" - 221: String "texDim" - 233: String "scale" - 240: String "dx" - 253: String "dy" - 265: String "shadowFactor" - 271: String "count" - 277: String "range" - 284: String "x" - 306: String "y" - 370: String "i" - 390: String "shadowClip" - 397: String "color" - 403: String "viewMatrix" - 406: String "Light" - 412: String "lights" - 415: String "debugDisplayTarget" - 419: String "UBO" - 423: String "ubo" - 466: String "fragPos" - 475: String "samplerposition" - 480: String "inUV" - 488: String "normal" - 492: String "samplerNormal" - 501: String "albedo" - 505: String "samplerAlbedo" - 535: String "outFragColor" - 627: String "N" - 653: String "L" - 677: String "V" - 692: String "lightCosInnerAngle" - 699: String "lightCosOuterAngle" - 706: String "lightRange" - 713: String "dir" - 729: String "cosDir" - 738: String "spotEffect" - 748: String "heightAttenuation" - 757: String "NdotL" - 767: String "diff" - 775: String "R" - 785: String "NdotR" - 795: String "spec" + 79: String "shadow" + 85: String "fragcolor" + 88: String "fragpos" + 90: String "main" + 97: String "int" + 102: String "global_var" + 117: String "shadowCoord" + 142: String "bool" + 161: String "dist" + 165: String "type.2d.image" + 166: String "@type.2d.image" + 170: String "type.sampled.image" + 171: String "@type.sampled.image" + 175: String "samplerShadowMap" + 225: String "texDim" + 237: String "scale" + 244: String "dx" + 257: String "dy" + 269: String "shadowFactor" + 275: String "count" + 281: String "range" + 288: String "x" + 310: String "y" + 374: String "i" + 394: String "shadowClip" + 401: String "color" + 407: String "viewMatrix" + 410: String "Light" + 416: String "lights" + 419: String "debugDisplayTarget" + 423: String "UBO" + 427: String "ubo" + 470: String "fragPos" + 479: String "samplerposition" + 484: String "inUV" + 492: String "normal" + 496: String "samplerNormal" + 505: String "albedo" + 509: String "samplerAlbedo" + 539: String "outFragColor" + 631: String "N" + 657: String "L" + 681: String "V" + 696: String "lightCosInnerAngle" + 703: String "lightCosOuterAngle" + 710: String "lightRange" + 717: String "dir" + 733: String "cosDir" + 742: String "spotEffect" + 752: String "heightAttenuation" + 761: String "NdotL" + 771: String "diff" + 779: String "R" + 789: String "NdotR" + 799: String "spec" Name 14 "main" - Name 39 "textureProj(vf4;f1;vf2;" - Name 36 "P" - Name 37 "layer" - Name 38 "offset" - Name 59 "filterPCF(vf4;f1;" - Name 57 "sc" - Name 58 "layer" + Name 33 "textureProj(vf4;f1;vf2;" + Name 30 "P" + Name 31 "layer" + Name 32 "offset" + Name 58 "filterPCF(vf4;f1;" + Name 56 "sc" + Name 57 "layer" Name 77 "shadow(vf3;vf3;" Name 75 "fragcolor" Name 76 "fragpos" - Name 96 "global_var" - Name 105 "shadow" - Name 111 "shadowCoord" - Name 155 "dist" - Name 169 "samplerShadowMap" - Name 219 "texDim" - Name 231 "scale" - Name 238 "dx" - Name 251 "dy" - Name 263 "shadowFactor" - Name 269 "count" - Name 275 "range" - Name 282 "x" - Name 304 "y" - Name 335 "param" - Name 337 "param" + Name 100 "global_var" + Name 109 "shadow" + Name 115 "shadowCoord" + Name 159 "dist" + Name 173 "samplerShadowMap" + Name 223 "texDim" + Name 235 "scale" + Name 242 "dx" + Name 255 "dy" + Name 267 "shadowFactor" + Name 273 "count" + Name 279 "range" + Name 286 "x" + Name 308 "y" Name 339 "param" - Name 368 "i" - Name 388 "shadowClip" - Name 395 "Light" - MemberName 395(Light) 0 "position" - MemberName 395(Light) 1 "target" - MemberName 395(Light) 2 "color" - MemberName 395(Light) 3 "viewMatrix" - Name 409 "UBO" - MemberName 409(UBO) 0 "viewPos" - MemberName 409(UBO) 1 "lights" - MemberName 409(UBO) 2 "useShadows" - MemberName 409(UBO) 3 "debugDisplayTarget" - Name 421 "ubo" - Name 436 "shadowFactor" - Name 441 "param" - Name 443 "param" - Name 464 "fragPos" - Name 473 "samplerposition" - Name 478 "inUV" - Name 486 "normal" - Name 490 "samplerNormal" - Name 499 "albedo" - Name 503 "samplerAlbedo" - Name 533 "outFragColor" - Name 537 "param" - Name 538 "param" - Name 616 "fragcolor" - Name 625 "N" - Name 633 "i" - Name 651 "L" - Name 664 "dist" - Name 675 "V" - Name 690 "lightCosInnerAngle" - Name 697 "lightCosOuterAngle" - Name 704 "lightRange" - Name 711 "dir" - Name 727 "cosDir" - Name 736 "spotEffect" - Name 746 "heightAttenuation" - Name 755 "NdotL" - Name 765 "diff" - Name 773 "R" - Name 783 "NdotR" - Name 793 "spec" - Name 846 "param" - Name 848 "param" - Decorate 169(samplerShadowMap) DescriptorSet 0 - Decorate 169(samplerShadowMap) Binding 5 - MemberDecorate 395(Light) 0 Offset 0 - MemberDecorate 395(Light) 1 Offset 16 - MemberDecorate 395(Light) 2 Offset 32 - MemberDecorate 395(Light) 3 ColMajor - MemberDecorate 395(Light) 3 Offset 48 - MemberDecorate 395(Light) 3 MatrixStride 16 - Decorate 407 ArrayStride 112 - MemberDecorate 409(UBO) 0 Offset 0 - MemberDecorate 409(UBO) 1 Offset 16 - MemberDecorate 409(UBO) 2 Offset 352 - MemberDecorate 409(UBO) 3 Offset 356 - Decorate 409(UBO) Block - Decorate 421(ubo) DescriptorSet 0 - Decorate 421(ubo) Binding 4 - Decorate 473(samplerposition) DescriptorSet 0 - Decorate 473(samplerposition) Binding 1 - Decorate 478(inUV) Location 0 - Decorate 490(samplerNormal) DescriptorSet 0 - Decorate 490(samplerNormal) Binding 2 - Decorate 503(samplerAlbedo) DescriptorSet 0 - Decorate 503(samplerAlbedo) Binding 3 - Decorate 533(outFragColor) Location 0 + Name 341 "param" + Name 343 "param" + Name 372 "i" + Name 392 "shadowClip" + Name 399 "Light" + MemberName 399(Light) 0 "position" + MemberName 399(Light) 1 "target" + MemberName 399(Light) 2 "color" + MemberName 399(Light) 3 "viewMatrix" + Name 413 "UBO" + MemberName 413(UBO) 0 "viewPos" + MemberName 413(UBO) 1 "lights" + MemberName 413(UBO) 2 "useShadows" + MemberName 413(UBO) 3 "debugDisplayTarget" + Name 425 "ubo" + Name 440 "shadowFactor" + Name 445 "param" + Name 447 "param" + Name 468 "fragPos" + Name 477 "samplerposition" + Name 482 "inUV" + Name 490 "normal" + Name 494 "samplerNormal" + Name 503 "albedo" + Name 507 "samplerAlbedo" + Name 537 "outFragColor" + Name 541 "param" + Name 542 "param" + Name 620 "fragcolor" + Name 629 "N" + Name 637 "i" + Name 655 "L" + Name 668 "dist" + Name 679 "V" + Name 694 "lightCosInnerAngle" + Name 701 "lightCosOuterAngle" + Name 708 "lightRange" + Name 715 "dir" + Name 731 "cosDir" + Name 740 "spotEffect" + Name 750 "heightAttenuation" + Name 759 "NdotL" + Name 769 "diff" + Name 777 "R" + Name 787 "NdotR" + Name 797 "spec" + Name 850 "param" + Name 852 "param" + Decorate 173(samplerShadowMap) DescriptorSet 0 + Decorate 173(samplerShadowMap) Binding 5 + MemberDecorate 399(Light) 0 Offset 0 + MemberDecorate 399(Light) 1 Offset 16 + MemberDecorate 399(Light) 2 Offset 32 + MemberDecorate 399(Light) 3 ColMajor + MemberDecorate 399(Light) 3 Offset 48 + MemberDecorate 399(Light) 3 MatrixStride 16 + Decorate 411 ArrayStride 112 + MemberDecorate 413(UBO) 0 Offset 0 + MemberDecorate 413(UBO) 1 Offset 16 + MemberDecorate 413(UBO) 2 Offset 352 + MemberDecorate 413(UBO) 3 Offset 356 + Decorate 413(UBO) Block + Decorate 425(ubo) DescriptorSet 0 + Decorate 425(ubo) Binding 4 + Decorate 477(samplerposition) DescriptorSet 0 + Decorate 477(samplerposition) Binding 1 + Decorate 482(inUV) Location 0 + Decorate 494(samplerNormal) DescriptorSet 0 + Decorate 494(samplerNormal) Binding 2 + Decorate 507(samplerAlbedo) DescriptorSet 0 + Decorate 507(samplerAlbedo) Binding 3 + Decorate 537(outFragColor) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -190,915 +190,919 @@ spv.debuginfo.glsl.frag 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 24: TypeFloat 32 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 - 27: TypeVector 24(float) 4 - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 - 29: TypePointer Function 27(fvec4) - 30: TypePointer Function 24(float) - 31: TypeVector 24(float) 2 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 22 - 33: TypePointer Function 31(fvec2) - 34: TypeFunction 24(float) 29(ptr) 30(ptr) 33(ptr) - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 26 28 26 32 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 40 35 17 12 12 19 40 13 12 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 28 17 12 12 41 21 20 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 26 17 12 12 41 21 22 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 32 17 12 12 41 21 13 - 55: TypeFunction 24(float) 29(ptr) 30(ptr) - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 26 28 26 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 60 56 17 12 12 19 60 13 12 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 28 17 12 12 61 21 20 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 26 17 12 12 61 21 22 - 70: TypeVector 24(float) 3 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 + 16: TypeFloat 32 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 19: TypeVector 16(float) 4 + 20: 7(int) Constant 4 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 + 22: TypePointer Function 19(fvec4) + 23: TypePointer Function 16(float) + 24: TypeVector 16(float) 2 + 25: 7(int) Constant 2 + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 25 + 27: TypePointer Function 24(fvec2) + 28: TypeFunction 16(float) 22(ptr) 23(ptr) 27(ptr) + 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 26 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 38 + 39: 7(int) Constant 59 + 41: 7(int) Constant 1 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 41 20 37 25 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 29 37 39 12 40 35 13 39 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 21 37 39 12 36 20 41 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 18 37 39 12 36 20 25 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 26 37 39 12 36 20 13 + 54: TypeFunction 16(float) 22(ptr) 23(ptr) + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 + 62: 7(int) Constant 76 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 60 55 37 62 12 40 60 13 62 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 21 37 62 12 61 20 41 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 18 37 62 12 61 20 25 + 70: TypeVector 16(float) 3 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 72: TypePointer Function 70(fvec3) 73: TypeFunction 70(fvec3) 72(ptr) 72(ptr) 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 71 71 71 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 78 74 17 12 12 19 78 13 12 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 71 17 12 12 79 21 20 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 71 17 12 12 79 21 22 - 91: 7(int) Constant 41 - 92: TypeInt 32 1 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 93 10 21 12 - 95: TypePointer Private 92(int) - 96(global_var): 95(ptr) Variable Private - 99: 7(int) Constant 8 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 98 94 17 91 12 19 98 96(global_var) 99 - 100: 92(int) Constant 0 - 104: 7(int) Constant 61 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 26 17 104 12 41 21 - 108: 24(float) Constant 1065353216 - 110: 7(int) Constant 62 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 28 17 110 12 41 21 - 121: 7(int) Constant 63 - 124: 24(float) Constant 1056964608 - 133: 7(int) Constant 65 - 134: TypeBool - 137: 24(float) Constant 3212836864 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 154: 7(int) Constant 67 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 26 17 154 12 41 21 - 159: TypeImage 24(float) 2D array sampled format:Unknown - 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 161 12 17 154 12 19 162 163 13 - 164: TypeSampledImage 159 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 12 17 154 12 19 167 163 13 - 168: TypePointer UniformConstant 164 -169(samplerShadowMap): 168(ptr) Variable UniformConstant - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 171 165 17 154 12 19 171 169(samplerShadowMap) 99 - 184: 7(int) Constant 68 - 187: 24(float) Constant 0 - 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 204: 7(int) Constant 70 - 205: 24(float) Constant 1048576000 - 208: 7(int) Constant 73 - 215: 7(int) Constant 78 - 216: TypeVector 92(int) 2 - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 94 22 - 218: TypePointer Function 216(ivec2) - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 221 217 17 215 12 61 21 - 225: TypeVector 92(int) 3 - 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 94 13 - 230: 7(int) Constant 79 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 233 26 17 230 12 61 21 - 235: 24(float) Constant 1069547520 - 237: 7(int) Constant 80 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 240 26 17 237 12 61 21 - 244: TypePointer Function 92(int) - 250: 7(int) Constant 81 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 253 26 17 250 12 61 21 - 262: 7(int) Constant 83 - 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 26 17 262 12 61 21 - 268: 7(int) Constant 84 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 271 94 17 268 12 61 21 - 274: 7(int) Constant 85 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 277 94 17 274 12 61 21 - 279: 92(int) Constant 1 - 281: 7(int) Constant 87 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 94 17 281 12 61 21 - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 303: 7(int) Constant 89 - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 306 94 17 303 12 61 21 - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 325: 7(int) Constant 91 - 344: 7(int) Constant 92 - 357: 7(int) Constant 96 - 367: 7(int) Constant 100 - 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 370 94 17 367 12 79 21 - 382: 92(int) Constant 3 - 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 387: 7(int) Constant 102 - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 390 28 17 387 12 79 21 - 392: TypeMatrix 27(fvec4) 4 - 394: 134(bool) ConstantTrue - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 28 21 394 - 395(Light): TypeStruct 27(fvec4) 27(fvec4) 27(fvec4) 392 - 398: 7(int) Constant 47 - 399: 7(int) Constant 7 - 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 - 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 - 404: 7(int) Constant 48 - 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 403 393 17 404 399 12 12 13 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 406 20 17 387 12 19 406 12 13 396 400 401 402 - 407: TypeArray 395(Light) 13 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 405 13 - 409(UBO): TypeStruct 27(fvec4) 407 92(int) 92(int) - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 397 28 17 398 399 12 12 13 - 413: 7(int) Constant 54 - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 412 408 17 413 99 12 12 13 - 416: 7(int) Constant 56 - 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 94 17 416 11 12 12 13 - 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 415 94 17 416 11 12 12 13 - 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 419 20 17 387 12 19 419 12 13 410 411 414 417 - 420: TypePointer Uniform 409(UBO) - 421(ubo): 420(ptr) Variable Uniform - 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 423 418 17 387 12 19 423 421(ubo) 99 - 425: TypePointer Uniform 392 - 435: 7(int) Constant 106 - 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 26 17 435 12 79 21 - 446: 7(int) Constant 111 - 456: 7(int) Constant 113 - 463: 7(int) Constant 119 - 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 466 71 17 463 12 16 21 - 468: TypeImage 24(float) 2D sampled format:Unknown - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 161 12 17 463 12 19 162 163 13 - 470: TypeSampledImage 468 - 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 12 17 463 12 19 167 163 13 - 472: TypePointer UniformConstant 470 -473(samplerposition): 472(ptr) Variable UniformConstant - 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 475 471 17 463 12 19 475 473(samplerposition) 99 - 477: TypePointer Input 31(fvec2) - 478(inUV): 477(ptr) Variable Input - 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 480 32 17 463 12 19 480 478(inUV) 99 - 485: 7(int) Constant 120 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 488 71 17 485 12 16 21 -490(samplerNormal): 472(ptr) Variable UniformConstant - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 492 471 17 485 12 19 492 490(samplerNormal) 99 - 498: 7(int) Constant 121 - 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 501 28 17 498 12 16 21 -503(samplerAlbedo): 472(ptr) Variable UniformConstant - 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 505 471 17 498 12 19 505 503(samplerAlbedo) 99 - 510: 7(int) Constant 124 - 511: TypePointer Uniform 92(int) - 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 520: 7(int) Constant 125 - 531: 7(int) Constant 127 - 532: TypePointer Output 27(fvec4) -533(outFragColor): 532(ptr) Variable Output - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 535 28 17 531 12 19 535 533(outFragColor) 99 - 536: 70(fvec3) ConstantComposite 108 108 108 - 541: TypePointer Output 24(float) - 549: 7(int) Constant 128 - 553: 7(int) Constant 130 - 562: 7(int) Constant 131 - 566: 7(int) Constant 133 - 575: 7(int) Constant 134 - 579: 7(int) Constant 136 - 589: 7(int) Constant 137 - 593: 7(int) Constant 139 - 603: 7(int) Constant 140 - 608: 7(int) Constant 142 - 611: 7(int) Constant 143 - 615: 7(int) Constant 147 - 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 71 17 615 12 16 21 - 621: 24(float) Constant 1036831949 - 624: 7(int) Constant 149 - 626: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 627 71 17 624 12 16 21 - 632: 7(int) Constant 151 - 634: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 370 94 17 632 12 16 21 - 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 650: 7(int) Constant 154 - 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 653 71 17 650 12 16 21 - 656: TypePointer Uniform 27(fvec4) - 663: 7(int) Constant 156 - 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 26 17 663 12 16 21 - 670: 7(int) Constant 157 - 674: 7(int) Constant 160 - 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 677 71 17 674 12 16 21 - 685: 7(int) Constant 161 - 689: 7(int) Constant 163 - 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 692 26 17 689 12 16 21 - 694: 24(float) Constant 1064781546 - 696: 7(int) Constant 164 - 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 699 26 17 696 12 16 21 - 701: 24(float) Constant 1063781322 - 703: 7(int) Constant 165 - 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 706 26 17 703 12 16 21 - 708: 24(float) Constant 1120403456 - 710: 7(int) Constant 168 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 71 17 710 12 16 21 - 726: 7(int) Constant 171 - 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 729 26 17 726 12 16 21 - 735: 7(int) Constant 172 - 737: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 738 26 17 735 12 16 21 - 745: 7(int) Constant 173 - 747: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 748 26 17 745 12 16 21 - 754: 7(int) Constant 176 - 756: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 757 26 17 754 12 16 21 - 764: 7(int) Constant 177 - 766: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 767 71 17 764 12 16 21 - 772: 7(int) Constant 180 - 774: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 775 71 17 772 12 16 21 - 782: 7(int) Constant 181 - 784: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 785 26 17 782 12 16 21 - 792: 7(int) Constant 182 - 794: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 795 71 17 792 12 16 21 - 798: 24(float) Constant 1098907648 - 803: 24(float) Constant 1075838976 - 807: 7(int) Constant 184 - 820: 92(int) Constant 2 - 836: 7(int) Constant 188 - 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 10 22 12 - 845: 7(int) Constant 190 - 853: 7(int) Constant 193 + 81: 7(int) Constant 99 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 74 37 81 12 40 79 13 81 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 37 81 12 80 20 41 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 37 81 12 80 20 25 + 92: 7(int) Constant 116 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 90 6 37 92 12 40 90 13 92 + 95: 7(int) Constant 41 + 96: TypeInt 32 1 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 10 20 12 + 99: TypePointer Private 96(int) + 100(global_var): 99(ptr) Variable Private + 103: 7(int) Constant 8 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 102 98 37 95 12 40 102 100(global_var) 103 + 104: 96(int) Constant 0 + 108: 7(int) Constant 61 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 18 37 108 12 36 20 + 112: 16(float) Constant 1065353216 + 114: 7(int) Constant 62 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 21 37 114 12 36 20 + 125: 7(int) Constant 63 + 128: 16(float) Constant 1056964608 + 137: 7(int) Constant 65 + 138: TypeBool + 141: 16(float) Constant 3212836864 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 158: 7(int) Constant 67 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 37 158 12 36 20 + 163: TypeImage 16(float) 2D array sampled format:Unknown + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 12 37 158 12 40 166 167 13 + 168: TypeSampledImage 163 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 37 158 12 40 171 167 13 + 172: TypePointer UniformConstant 168 +173(samplerShadowMap): 172(ptr) Variable UniformConstant + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 175 169 37 158 12 40 175 173(samplerShadowMap) 103 + 188: 7(int) Constant 68 + 191: 16(float) Constant 0 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 208: 7(int) Constant 70 + 209: 16(float) Constant 1048576000 + 212: 7(int) Constant 73 + 219: 7(int) Constant 78 + 220: TypeVector 96(int) 2 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 25 + 222: TypePointer Function 220(ivec2) + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 221 37 219 12 61 20 + 229: TypeVector 96(int) 3 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 13 + 234: 7(int) Constant 79 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 18 37 234 12 61 20 + 239: 16(float) Constant 1069547520 + 241: 7(int) Constant 80 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 18 37 241 12 61 20 + 248: TypePointer Function 96(int) + 254: 7(int) Constant 81 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 257 18 37 254 12 61 20 + 266: 7(int) Constant 83 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 18 37 266 12 61 20 + 272: 7(int) Constant 84 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 98 37 272 12 61 20 + 278: 7(int) Constant 85 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 281 98 37 278 12 61 20 + 283: 96(int) Constant 1 + 285: 7(int) Constant 87 + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 288 98 37 285 12 61 20 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 307: 7(int) Constant 89 + 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 310 98 37 307 12 61 20 + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 329: 7(int) Constant 91 + 348: 7(int) Constant 92 + 361: 7(int) Constant 96 + 371: 7(int) Constant 100 + 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 374 98 37 371 12 80 20 + 386: 96(int) Constant 3 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 391: 7(int) Constant 102 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 394 21 37 391 12 80 20 + 396: TypeMatrix 19(fvec4) 4 + 398: 138(bool) ConstantTrue + 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 398 + 399(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 396 + 402: 7(int) Constant 47 + 403: 7(int) Constant 7 + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 + 408: 7(int) Constant 48 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 397 37 408 403 12 12 13 + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 410 41 37 391 12 40 410 12 13 400 404 405 406 + 411: TypeArray 399(Light) 13 + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 409 13 + 413(UBO): TypeStruct 19(fvec4) 411 96(int) 96(int) + 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 + 417: 7(int) Constant 54 + 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 416 412 37 417 103 12 12 13 + 420: 7(int) Constant 56 + 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 419 98 37 420 11 12 12 13 + 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 419 98 37 420 11 12 12 13 + 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 423 41 37 391 12 40 423 12 13 414 415 418 421 + 424: TypePointer Uniform 413(UBO) + 425(ubo): 424(ptr) Variable Uniform + 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 427 422 37 391 12 40 427 425(ubo) 103 + 429: TypePointer Uniform 396 + 439: 7(int) Constant 106 + 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 18 37 439 12 80 20 + 450: 7(int) Constant 111 + 460: 7(int) Constant 113 + 467: 7(int) Constant 119 + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 470 71 37 467 12 91 20 + 472: TypeImage 16(float) 2D sampled format:Unknown + 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 12 37 467 12 40 166 167 13 + 474: TypeSampledImage 472 + 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 37 467 12 40 171 167 13 + 476: TypePointer UniformConstant 474 +477(samplerposition): 476(ptr) Variable UniformConstant + 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 479 475 37 467 12 40 479 477(samplerposition) 103 + 481: TypePointer Input 24(fvec2) + 482(inUV): 481(ptr) Variable Input + 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 484 26 37 467 12 40 484 482(inUV) 103 + 489: 7(int) Constant 120 + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 492 71 37 489 12 91 20 +494(samplerNormal): 476(ptr) Variable UniformConstant + 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 496 475 37 489 12 40 496 494(samplerNormal) 103 + 502: 7(int) Constant 121 + 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 505 21 37 502 12 91 20 +507(samplerAlbedo): 476(ptr) Variable UniformConstant + 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 509 475 37 502 12 40 509 507(samplerAlbedo) 103 + 514: 7(int) Constant 124 + 515: TypePointer Uniform 96(int) + 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 524: 7(int) Constant 125 + 535: 7(int) Constant 127 + 536: TypePointer Output 19(fvec4) +537(outFragColor): 536(ptr) Variable Output + 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 539 21 37 535 12 40 539 537(outFragColor) 103 + 540: 70(fvec3) ConstantComposite 112 112 112 + 545: TypePointer Output 16(float) + 553: 7(int) Constant 128 + 557: 7(int) Constant 130 + 566: 7(int) Constant 131 + 570: 7(int) Constant 133 + 579: 7(int) Constant 134 + 583: 7(int) Constant 136 + 593: 7(int) Constant 137 + 597: 7(int) Constant 139 + 607: 7(int) Constant 140 + 612: 7(int) Constant 142 + 615: 7(int) Constant 143 + 619: 7(int) Constant 147 + 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 37 619 12 91 20 + 625: 16(float) Constant 1036831949 + 628: 7(int) Constant 149 + 630: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 631 71 37 628 12 91 20 + 636: 7(int) Constant 151 + 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 374 98 37 636 12 91 20 + 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 654: 7(int) Constant 154 + 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 657 71 37 654 12 91 20 + 660: TypePointer Uniform 19(fvec4) + 667: 7(int) Constant 156 + 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 37 667 12 91 20 + 674: 7(int) Constant 157 + 678: 7(int) Constant 160 + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 681 71 37 678 12 91 20 + 689: 7(int) Constant 161 + 693: 7(int) Constant 163 + 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 696 18 37 693 12 91 20 + 698: 16(float) Constant 1064781546 + 700: 7(int) Constant 164 + 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 703 18 37 700 12 91 20 + 705: 16(float) Constant 1063781322 + 707: 7(int) Constant 165 + 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 710 18 37 707 12 91 20 + 712: 16(float) Constant 1120403456 + 714: 7(int) Constant 168 + 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 717 71 37 714 12 91 20 + 730: 7(int) Constant 171 + 732: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 733 18 37 730 12 91 20 + 739: 7(int) Constant 172 + 741: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 742 18 37 739 12 91 20 + 749: 7(int) Constant 173 + 751: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 752 18 37 749 12 91 20 + 758: 7(int) Constant 176 + 760: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 761 18 37 758 12 91 20 + 768: 7(int) Constant 177 + 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 771 71 37 768 12 91 20 + 776: 7(int) Constant 180 + 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 779 71 37 776 12 91 20 + 786: 7(int) Constant 181 + 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 789 18 37 786 12 91 20 + 796: 7(int) Constant 182 + 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 799 71 37 796 12 91 20 + 802: 16(float) Constant 1098907648 + 807: 16(float) Constant 1075838976 + 811: 7(int) Constant 184 + 824: 96(int) Constant 2 + 840: 7(int) Constant 188 + 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 + 849: 7(int) Constant 190 + 857: 7(int) Constant 193 Line 1 116 11 14(main): 4 Function None 5 - 23: Label - 464(fragPos): 72(ptr) Variable Function - 486(normal): 72(ptr) Variable Function - 499(albedo): 29(ptr) Variable Function - 537(param): 72(ptr) Variable Function - 538(param): 72(ptr) Variable Function - 616(fragcolor): 72(ptr) Variable Function - 625(N): 72(ptr) Variable Function - 633(i): 244(ptr) Variable Function - 651(L): 72(ptr) Variable Function - 664(dist): 30(ptr) Variable Function - 675(V): 72(ptr) Variable Function -690(lightCosInnerAngle): 30(ptr) Variable Function -697(lightCosOuterAngle): 30(ptr) Variable Function - 704(lightRange): 30(ptr) Variable Function - 711(dir): 72(ptr) Variable Function - 727(cosDir): 30(ptr) Variable Function - 736(spotEffect): 30(ptr) Variable Function -746(heightAttenuation): 30(ptr) Variable Function - 755(NdotL): 30(ptr) Variable Function - 765(diff): 72(ptr) Variable Function - 773(R): 72(ptr) Variable Function - 783(NdotR): 30(ptr) Variable Function - 793(spec): 72(ptr) Variable Function - 846(param): 72(ptr) Variable Function - 848(param): 72(ptr) Variable Function - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 19 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 91 91 12 12 - Store 96(global_var) 100 - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 462: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 463 463 12 12 - 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 465 464(fragPos) 48 - 476: 470 Load 473(samplerposition) - 481: 31(fvec2) Load 478(inUV) - 482: 27(fvec4) ImageSampleImplicitLod 476 481 - 483: 70(fvec3) VectorShuffle 482 482 0 1 2 - Store 464(fragPos) 483 - 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 485 485 12 12 - 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 487 486(normal) 48 - 493: 470 Load 490(samplerNormal) - 494: 31(fvec2) Load 478(inUV) - 495: 27(fvec4) ImageSampleImplicitLod 493 494 - 496: 70(fvec3) VectorShuffle 495 495 0 1 2 - Store 486(normal) 496 - 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 498 498 12 12 - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 500 499(albedo) 48 - 506: 470 Load 503(samplerAlbedo) - 507: 31(fvec2) Load 478(inUV) - 508: 27(fvec4) ImageSampleImplicitLod 506 507 - Store 499(albedo) 508 - 509: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 510 510 12 12 - 512: 511(ptr) AccessChain 421(ubo) 382 - 513: 92(int) Load 512 - 515: 134(bool) SGreaterThan 513 100 - SelectionMerge 517 None - BranchConditional 515 516 517 - 516: Label - 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 520 520 12 12 - 521: 511(ptr) AccessChain 421(ubo) 382 - 522: 92(int) Load 521 - SelectionMerge 528 None - Switch 522 528 - case 1: 523 - case 2: 524 - case 3: 525 - case 4: 526 - case 5: 527 - 523: Label - 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 531 531 12 12 - Store 537(param) 536 - 539: 70(fvec3) Load 464(fragPos) - Store 538(param) 539 - 540: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 537(param) 538(param) - 542: 541(ptr) AccessChain 533(outFragColor) 12 - 543: 24(float) CompositeExtract 540 0 - Store 542 543 - 544: 541(ptr) AccessChain 533(outFragColor) 20 - 545: 24(float) CompositeExtract 540 1 - Store 544 545 - 546: 541(ptr) AccessChain 533(outFragColor) 22 - 547: 24(float) CompositeExtract 540 2 + 15: Label + 468(fragPos): 72(ptr) Variable Function + 490(normal): 72(ptr) Variable Function + 503(albedo): 22(ptr) Variable Function + 541(param): 72(ptr) Variable Function + 542(param): 72(ptr) Variable Function + 620(fragcolor): 72(ptr) Variable Function + 629(N): 72(ptr) Variable Function + 637(i): 248(ptr) Variable Function + 655(L): 72(ptr) Variable Function + 668(dist): 23(ptr) Variable Function + 679(V): 72(ptr) Variable Function +694(lightCosInnerAngle): 23(ptr) Variable Function +701(lightCosOuterAngle): 23(ptr) Variable Function + 708(lightRange): 23(ptr) Variable Function + 715(dir): 72(ptr) Variable Function + 731(cosDir): 23(ptr) Variable Function + 740(spotEffect): 23(ptr) Variable Function +750(heightAttenuation): 23(ptr) Variable Function + 759(NdotL): 23(ptr) Variable Function + 769(diff): 72(ptr) Variable Function + 777(R): 72(ptr) Variable Function + 787(NdotR): 23(ptr) Variable Function + 797(spec): 72(ptr) Variable Function + 850(param): 72(ptr) Variable Function + 852(param): 72(ptr) Variable Function + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 95 95 12 12 + Store 100(global_var) 104 + 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 14(main) + 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 466: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 467 467 12 12 + 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 469 468(fragPos) 47 + 480: 474 Load 477(samplerposition) + 485: 24(fvec2) Load 482(inUV) + 486: 19(fvec4) ImageSampleImplicitLod 480 485 + 487: 70(fvec3) VectorShuffle 486 486 0 1 2 + Store 468(fragPos) 487 + 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 489 489 12 12 + 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 491 490(normal) 47 + 497: 474 Load 494(samplerNormal) + 498: 24(fvec2) Load 482(inUV) + 499: 19(fvec4) ImageSampleImplicitLod 497 498 + 500: 70(fvec3) VectorShuffle 499 499 0 1 2 + Store 490(normal) 500 + 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 502 502 12 12 + 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 504 503(albedo) 47 + 510: 474 Load 507(samplerAlbedo) + 511: 24(fvec2) Load 482(inUV) + 512: 19(fvec4) ImageSampleImplicitLod 510 511 + Store 503(albedo) 512 + 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 514 514 12 12 + 516: 515(ptr) AccessChain 425(ubo) 386 + 517: 96(int) Load 516 + 519: 138(bool) SGreaterThan 517 104 + SelectionMerge 521 None + BranchConditional 519 520 521 + 520: Label + 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 524 524 12 12 + 525: 515(ptr) AccessChain 425(ubo) 386 + 526: 96(int) Load 525 + SelectionMerge 532 None + Switch 526 532 + case 1: 527 + case 2: 528 + case 3: 529 + case 4: 530 + case 5: 531 + 527: Label + 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 535 535 12 12 + Store 541(param) 540 + 543: 70(fvec3) Load 468(fragPos) + Store 542(param) 543 + 544: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 541(param) 542(param) + 546: 545(ptr) AccessChain 537(outFragColor) 12 + 547: 16(float) CompositeExtract 544 0 Store 546 547 - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 549 549 12 12 - Branch 528 - 524: Label - 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 553 553 12 12 - 554: 70(fvec3) Load 464(fragPos) - 555: 541(ptr) AccessChain 533(outFragColor) 12 - 556: 24(float) CompositeExtract 554 0 - Store 555 556 - 557: 541(ptr) AccessChain 533(outFragColor) 20 - 558: 24(float) CompositeExtract 554 1 - Store 557 558 - 559: 541(ptr) AccessChain 533(outFragColor) 22 - 560: 24(float) CompositeExtract 554 2 + 548: 545(ptr) AccessChain 537(outFragColor) 41 + 549: 16(float) CompositeExtract 544 1 + Store 548 549 + 550: 545(ptr) AccessChain 537(outFragColor) 25 + 551: 16(float) CompositeExtract 544 2 + Store 550 551 + 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 553 553 12 12 + Branch 532 + 528: Label + 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 557 557 12 12 + 558: 70(fvec3) Load 468(fragPos) + 559: 545(ptr) AccessChain 537(outFragColor) 12 + 560: 16(float) CompositeExtract 558 0 Store 559 560 - 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 562 562 12 12 - Branch 528 - 525: Label - 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 565: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 566 566 12 12 - 567: 70(fvec3) Load 486(normal) - 568: 541(ptr) AccessChain 533(outFragColor) 12 - 569: 24(float) CompositeExtract 567 0 - Store 568 569 - 570: 541(ptr) AccessChain 533(outFragColor) 20 - 571: 24(float) CompositeExtract 567 1 - Store 570 571 - 572: 541(ptr) AccessChain 533(outFragColor) 22 - 573: 24(float) CompositeExtract 567 2 + 561: 545(ptr) AccessChain 537(outFragColor) 41 + 562: 16(float) CompositeExtract 558 1 + Store 561 562 + 563: 545(ptr) AccessChain 537(outFragColor) 25 + 564: 16(float) CompositeExtract 558 2 + Store 563 564 + 565: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 566 566 12 12 + Branch 532 + 529: Label + 568: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 569: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 570 570 12 12 + 571: 70(fvec3) Load 490(normal) + 572: 545(ptr) AccessChain 537(outFragColor) 12 + 573: 16(float) CompositeExtract 571 0 Store 572 573 - 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 575 575 12 12 - Branch 528 - 526: Label - 577: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 579 579 12 12 - 580: 27(fvec4) Load 499(albedo) - 581: 70(fvec3) VectorShuffle 580 580 0 1 2 - 582: 541(ptr) AccessChain 533(outFragColor) 12 - 583: 24(float) CompositeExtract 581 0 - Store 582 583 - 584: 541(ptr) AccessChain 533(outFragColor) 20 - 585: 24(float) CompositeExtract 581 1 - Store 584 585 - 586: 541(ptr) AccessChain 533(outFragColor) 22 - 587: 24(float) CompositeExtract 581 2 + 574: 545(ptr) AccessChain 537(outFragColor) 41 + 575: 16(float) CompositeExtract 571 1 + Store 574 575 + 576: 545(ptr) AccessChain 537(outFragColor) 25 + 577: 16(float) CompositeExtract 571 2 + Store 576 577 + 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 579 579 12 12 + Branch 532 + 530: Label + 581: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 583 583 12 12 + 584: 19(fvec4) Load 503(albedo) + 585: 70(fvec3) VectorShuffle 584 584 0 1 2 + 586: 545(ptr) AccessChain 537(outFragColor) 12 + 587: 16(float) CompositeExtract 585 0 Store 586 587 - 588: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 589 589 12 12 - Branch 528 - 527: Label - 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 593 593 12 12 - 594: 27(fvec4) Load 499(albedo) - 595: 70(fvec3) VectorShuffle 594 594 3 3 3 - 596: 541(ptr) AccessChain 533(outFragColor) 12 - 597: 24(float) CompositeExtract 595 0 - Store 596 597 - 598: 541(ptr) AccessChain 533(outFragColor) 20 - 599: 24(float) CompositeExtract 595 1 - Store 598 599 - 600: 541(ptr) AccessChain 533(outFragColor) 22 - 601: 24(float) CompositeExtract 595 2 + 588: 545(ptr) AccessChain 537(outFragColor) 41 + 589: 16(float) CompositeExtract 585 1 + Store 588 589 + 590: 545(ptr) AccessChain 537(outFragColor) 25 + 591: 16(float) CompositeExtract 585 2 + Store 590 591 + 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 593 593 12 12 + Branch 532 + 531: Label + 595: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 596: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 597 597 12 12 + 598: 19(fvec4) Load 503(albedo) + 599: 70(fvec3) VectorShuffle 598 598 3 3 3 + 600: 545(ptr) AccessChain 537(outFragColor) 12 + 601: 16(float) CompositeExtract 599 0 Store 600 601 - 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 603 603 12 12 - Branch 528 - 528: Label - 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 608 608 12 12 - 609: 541(ptr) AccessChain 533(outFragColor) 13 - Store 609 108 - 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 611 611 12 12 + 602: 545(ptr) AccessChain 537(outFragColor) 41 + 603: 16(float) CompositeExtract 599 1 + Store 602 603 + 604: 545(ptr) AccessChain 537(outFragColor) 25 + 605: 16(float) CompositeExtract 599 2 + Store 604 605 + 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 607 607 12 12 + Branch 532 + 532: Label + 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 612 612 12 12 + 613: 545(ptr) AccessChain 537(outFragColor) 13 + Store 613 112 + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 615 615 12 12 Return - 517: Label - 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 615 615 12 12 - 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 617 616(fragcolor) 48 - 619: 27(fvec4) Load 499(albedo) - 620: 70(fvec3) VectorShuffle 619 619 0 1 2 - 622: 70(fvec3) VectorTimesScalar 620 621 - Store 616(fragcolor) 622 - 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 624 624 12 12 - 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 626 625(N) 48 - 629: 70(fvec3) Load 486(normal) - 630: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 629 - Store 625(N) 630 - 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 - 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 634 633(i) 48 - Store 633(i) 100 - Branch 636 - 636: Label - 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 - LoopMerge 638 639 None - Branch 642 - 642: Label - 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 - 645: 92(int) Load 633(i) - 647: 134(bool) SLessThan 645 382 - BranchConditional 647 637 638 - 637: Label - 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 649: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 650 650 12 12 - 654: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 652 651(L) 48 - 655: 92(int) Load 633(i) - 657: 656(ptr) AccessChain 421(ubo) 279 655 100 - 658: 27(fvec4) Load 657 - 659: 70(fvec3) VectorShuffle 658 658 0 1 2 - 660: 70(fvec3) Load 464(fragPos) - 661: 70(fvec3) FSub 659 660 - Store 651(L) 661 - 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 663 663 12 12 - 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 665 664(dist) 48 - 667: 70(fvec3) Load 651(L) - 668: 24(float) ExtInst 3(GLSL.std.450) 66(Length) 667 - Store 664(dist) 668 - 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 670 670 12 12 - 671: 70(fvec3) Load 651(L) - 672: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 671 - Store 651(L) 672 - 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 674 674 12 12 - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 676 675(V) 48 - 679: 656(ptr) AccessChain 421(ubo) 100 - 680: 27(fvec4) Load 679 - 681: 70(fvec3) VectorShuffle 680 680 0 1 2 - 682: 70(fvec3) Load 464(fragPos) - 683: 70(fvec3) FSub 681 682 - Store 675(V) 683 - 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 685 685 12 12 - 686: 70(fvec3) Load 675(V) - 687: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 686 - Store 675(V) 687 - 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 689 689 12 12 - 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 691 690(lightCosInnerAngle) 48 - Store 690(lightCosInnerAngle) 694 - 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 696 696 12 12 - 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 698 697(lightCosOuterAngle) 48 - Store 697(lightCosOuterAngle) 701 - 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 703 703 12 12 - 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 705 704(lightRange) 48 - Store 704(lightRange) 708 - 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 710 710 12 12 - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(dir) 48 - 715: 92(int) Load 633(i) - 716: 656(ptr) AccessChain 421(ubo) 279 715 100 - 717: 27(fvec4) Load 716 - 718: 70(fvec3) VectorShuffle 717 717 0 1 2 - 719: 92(int) Load 633(i) - 720: 656(ptr) AccessChain 421(ubo) 279 719 279 - 721: 27(fvec4) Load 720 + 521: Label + 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 619 619 12 12 + 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 621 620(fragcolor) 47 + 623: 19(fvec4) Load 503(albedo) + 624: 70(fvec3) VectorShuffle 623 623 0 1 2 + 626: 70(fvec3) VectorTimesScalar 624 625 + Store 620(fragcolor) 626 + 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 628 628 12 12 + 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 630 629(N) 47 + 633: 70(fvec3) Load 490(normal) + 634: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 633 + Store 629(N) 634 + 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 + 639: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 638 637(i) 47 + Store 637(i) 104 + Branch 640 + 640: Label + 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 645: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 + LoopMerge 642 643 None + Branch 646 + 646: Label + 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 + 649: 96(int) Load 637(i) + 651: 138(bool) SLessThan 649 386 + BranchConditional 651 641 642 + 641: Label + 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 653: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 654 654 12 12 + 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 656 655(L) 47 + 659: 96(int) Load 637(i) + 661: 660(ptr) AccessChain 425(ubo) 283 659 104 + 662: 19(fvec4) Load 661 + 663: 70(fvec3) VectorShuffle 662 662 0 1 2 + 664: 70(fvec3) Load 468(fragPos) + 665: 70(fvec3) FSub 663 664 + Store 655(L) 665 + 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 667 667 12 12 + 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 669 668(dist) 47 + 671: 70(fvec3) Load 655(L) + 672: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 671 + Store 668(dist) 672 + 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 674 674 12 12 + 675: 70(fvec3) Load 655(L) + 676: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 675 + Store 655(L) 676 + 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 678 678 12 12 + 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 680 679(V) 47 + 683: 660(ptr) AccessChain 425(ubo) 104 + 684: 19(fvec4) Load 683 + 685: 70(fvec3) VectorShuffle 684 684 0 1 2 + 686: 70(fvec3) Load 468(fragPos) + 687: 70(fvec3) FSub 685 686 + Store 679(V) 687 + 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 689 689 12 12 + 690: 70(fvec3) Load 679(V) + 691: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 690 + Store 679(V) 691 + 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 693 693 12 12 + 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 695 694(lightCosInnerAngle) 47 + Store 694(lightCosInnerAngle) 698 + 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 700 700 12 12 + 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 702 701(lightCosOuterAngle) 47 + Store 701(lightCosOuterAngle) 705 + 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 707 707 12 12 + 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 709 708(lightRange) 47 + Store 708(lightRange) 712 + 713: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 714 714 12 12 + 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 716 715(dir) 47 + 719: 96(int) Load 637(i) + 720: 660(ptr) AccessChain 425(ubo) 283 719 104 + 721: 19(fvec4) Load 720 722: 70(fvec3) VectorShuffle 721 721 0 1 2 - 723: 70(fvec3) FSub 718 722 - 724: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 723 - Store 711(dir) 724 - 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 726 726 12 12 - 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 728 727(cosDir) 48 - 731: 70(fvec3) Load 651(L) - 732: 70(fvec3) Load 711(dir) - 733: 24(float) Dot 731 732 - Store 727(cosDir) 733 - 734: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 735 735 12 12 - 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 737 736(spotEffect) 48 - 740: 24(float) Load 697(lightCosOuterAngle) - 741: 24(float) Load 690(lightCosInnerAngle) - 742: 24(float) Load 727(cosDir) - 743: 24(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 740 741 742 - Store 736(spotEffect) 743 - 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 745 745 12 12 - 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 747 746(heightAttenuation) 48 - 750: 24(float) Load 704(lightRange) - 751: 24(float) Load 664(dist) - 752: 24(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 750 187 751 - Store 746(heightAttenuation) 752 - 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 754 754 12 12 - 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 756 755(NdotL) 48 - 759: 70(fvec3) Load 625(N) - 760: 70(fvec3) Load 651(L) - 761: 24(float) Dot 759 760 - 762: 24(float) ExtInst 3(GLSL.std.450) 40(FMax) 187 761 - Store 755(NdotL) 762 - 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 764 764 12 12 - 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 766 765(diff) 48 - 769: 24(float) Load 755(NdotL) - 770: 70(fvec3) CompositeConstruct 769 769 769 - Store 765(diff) 770 - 771: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 772 772 12 12 - 776: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 774 773(R) 48 - 777: 70(fvec3) Load 651(L) - 778: 70(fvec3) FNegate 777 - 779: 70(fvec3) Load 625(N) - 780: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 778 779 - Store 773(R) 780 - 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 782 782 12 12 - 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 784 783(NdotR) 48 - 787: 70(fvec3) Load 773(R) - 788: 70(fvec3) Load 675(V) - 789: 24(float) Dot 787 788 - 790: 24(float) ExtInst 3(GLSL.std.450) 40(FMax) 187 789 - Store 783(NdotR) 790 - 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 792 792 12 12 - 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 794 793(spec) 48 - 797: 24(float) Load 783(NdotR) - 799: 24(float) ExtInst 3(GLSL.std.450) 26(Pow) 797 798 - 800: 30(ptr) AccessChain 499(albedo) 13 - 801: 24(float) Load 800 - 802: 24(float) FMul 799 801 - 804: 24(float) FMul 802 803 - 805: 70(fvec3) CompositeConstruct 804 804 804 - Store 793(spec) 805 - 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 807 807 12 12 - 808: 70(fvec3) Load 765(diff) - 809: 70(fvec3) Load 793(spec) - 810: 70(fvec3) FAdd 808 809 - 811: 24(float) Load 736(spotEffect) - 812: 70(fvec3) VectorTimesScalar 810 811 - 813: 24(float) Load 746(heightAttenuation) - 814: 70(fvec3) VectorTimesScalar 812 813 - 815: 24(float) CompositeExtract 814 0 - 816: 24(float) CompositeExtract 814 1 - 817: 24(float) CompositeExtract 814 2 - 818: 70(fvec3) CompositeConstruct 815 816 817 - 819: 92(int) Load 633(i) - 821: 656(ptr) AccessChain 421(ubo) 279 819 820 - 822: 27(fvec4) Load 821 - 823: 70(fvec3) VectorShuffle 822 822 0 1 2 - 824: 70(fvec3) FMul 818 823 - 825: 27(fvec4) Load 499(albedo) - 826: 70(fvec3) VectorShuffle 825 825 0 1 2 - 827: 70(fvec3) FMul 824 826 - 828: 70(fvec3) Load 616(fragcolor) - 829: 70(fvec3) FAdd 828 827 - Store 616(fragcolor) 829 - Branch 639 - 639: Label - 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 632 632 12 12 - 832: 92(int) Load 633(i) - 833: 92(int) IAdd 832 279 - Store 633(i) 833 - Branch 636 - 638: Label - 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 835: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 836 836 12 12 - 837: 511(ptr) AccessChain 421(ubo) 820 - 838: 92(int) Load 837 - 840: 134(bool) SGreaterThan 838 100 - SelectionMerge 842 None - BranchConditional 840 841 842 - 841: Label - 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 845 845 12 12 - 847: 70(fvec3) Load 616(fragcolor) - Store 846(param) 847 - 849: 70(fvec3) Load 464(fragPos) - Store 848(param) 849 - 850: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 846(param) 848(param) - Store 616(fragcolor) 850 - Branch 842 - 842: Label - 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 852: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 853 853 12 12 - 854: 70(fvec3) Load 616(fragcolor) - 855: 24(float) CompositeExtract 854 0 - 856: 24(float) CompositeExtract 854 1 - 857: 24(float) CompositeExtract 854 2 - 858: 27(fvec4) CompositeConstruct 855 856 857 108 - Store 533(outFragColor) 858 + 723: 96(int) Load 637(i) + 724: 660(ptr) AccessChain 425(ubo) 283 723 283 + 725: 19(fvec4) Load 724 + 726: 70(fvec3) VectorShuffle 725 725 0 1 2 + 727: 70(fvec3) FSub 722 726 + 728: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 727 + Store 715(dir) 728 + 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 730 730 12 12 + 734: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 732 731(cosDir) 47 + 735: 70(fvec3) Load 655(L) + 736: 70(fvec3) Load 715(dir) + 737: 16(float) Dot 735 736 + Store 731(cosDir) 737 + 738: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 739 739 12 12 + 743: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 741 740(spotEffect) 47 + 744: 16(float) Load 701(lightCosOuterAngle) + 745: 16(float) Load 694(lightCosInnerAngle) + 746: 16(float) Load 731(cosDir) + 747: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 744 745 746 + Store 740(spotEffect) 747 + 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 749 749 12 12 + 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 751 750(heightAttenuation) 47 + 754: 16(float) Load 708(lightRange) + 755: 16(float) Load 668(dist) + 756: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 754 191 755 + Store 750(heightAttenuation) 756 + 757: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 758 758 12 12 + 762: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 760 759(NdotL) 47 + 763: 70(fvec3) Load 629(N) + 764: 70(fvec3) Load 655(L) + 765: 16(float) Dot 763 764 + 766: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 191 765 + Store 759(NdotL) 766 + 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 768 768 12 12 + 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 770 769(diff) 47 + 773: 16(float) Load 759(NdotL) + 774: 70(fvec3) CompositeConstruct 773 773 773 + Store 769(diff) 774 + 775: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 776 776 12 12 + 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 778 777(R) 47 + 781: 70(fvec3) Load 655(L) + 782: 70(fvec3) FNegate 781 + 783: 70(fvec3) Load 629(N) + 784: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 782 783 + Store 777(R) 784 + 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 786 786 12 12 + 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 788 787(NdotR) 47 + 791: 70(fvec3) Load 777(R) + 792: 70(fvec3) Load 679(V) + 793: 16(float) Dot 791 792 + 794: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 191 793 + Store 787(NdotR) 794 + 795: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 796 796 12 12 + 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 798 797(spec) 47 + 801: 16(float) Load 787(NdotR) + 803: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 801 802 + 804: 23(ptr) AccessChain 503(albedo) 13 + 805: 16(float) Load 804 + 806: 16(float) FMul 803 805 + 808: 16(float) FMul 806 807 + 809: 70(fvec3) CompositeConstruct 808 808 808 + Store 797(spec) 809 + 810: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 811 811 12 12 + 812: 70(fvec3) Load 769(diff) + 813: 70(fvec3) Load 797(spec) + 814: 70(fvec3) FAdd 812 813 + 815: 16(float) Load 740(spotEffect) + 816: 70(fvec3) VectorTimesScalar 814 815 + 817: 16(float) Load 750(heightAttenuation) + 818: 70(fvec3) VectorTimesScalar 816 817 + 819: 16(float) CompositeExtract 818 0 + 820: 16(float) CompositeExtract 818 1 + 821: 16(float) CompositeExtract 818 2 + 822: 70(fvec3) CompositeConstruct 819 820 821 + 823: 96(int) Load 637(i) + 825: 660(ptr) AccessChain 425(ubo) 283 823 824 + 826: 19(fvec4) Load 825 + 827: 70(fvec3) VectorShuffle 826 826 0 1 2 + 828: 70(fvec3) FMul 822 827 + 829: 19(fvec4) Load 503(albedo) + 830: 70(fvec3) VectorShuffle 829 829 0 1 2 + 831: 70(fvec3) FMul 828 830 + 832: 70(fvec3) Load 620(fragcolor) + 833: 70(fvec3) FAdd 832 831 + Store 620(fragcolor) 833 + Branch 643 + 643: Label + 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 835: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 + 836: 96(int) Load 637(i) + 837: 96(int) IAdd 836 283 + Store 637(i) 837 + Branch 640 + 642: Label + 838: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 840 840 12 12 + 841: 515(ptr) AccessChain 425(ubo) 824 + 842: 96(int) Load 841 + 844: 138(bool) SGreaterThan 842 104 + SelectionMerge 846 None + BranchConditional 844 845 846 + 845: Label + 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 848: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 849 849 12 12 + 851: 70(fvec3) Load 620(fragcolor) + Store 850(param) 851 + 853: 70(fvec3) Load 468(fragPos) + Store 852(param) 853 + 854: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 850(param) 852(param) + Store 620(fragcolor) 854 + Branch 846 + 846: Label + 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 856: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 857 857 12 12 + 858: 70(fvec3) Load 620(fragcolor) + 859: 16(float) CompositeExtract 858 0 + 860: 16(float) CompositeExtract 858 1 + 861: 16(float) CompositeExtract 858 2 + 862: 19(fvec4) CompositeConstruct 859 860 861 112 + Store 537(outFragColor) 862 Return FunctionEnd Line 1 59 51 -39(textureProj(vf4;f1;vf2;): 24(float) Function None 34 - 36(P): 29(ptr) FunctionParameter - 37(layer): 30(ptr) FunctionParameter - 38(offset): 33(ptr) FunctionParameter - 42: Label - 105(shadow): 30(ptr) Variable Function -111(shadowCoord): 29(ptr) Variable Function - 155(dist): 30(ptr) Variable Function - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 36(P) 48 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 37(layer) 48 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 38(offset) 48 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 41 39(textureProj(vf4;f1;vf2;) - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 104 104 12 12 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 106 105(shadow) 48 - Store 105(shadow) 108 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 110 110 12 12 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 112 111(shadowCoord) 48 - 115: 27(fvec4) Load 36(P) - 116: 30(ptr) AccessChain 36(P) 13 - 117: 24(float) Load 116 - 118: 27(fvec4) CompositeConstruct 117 117 117 117 - 119: 27(fvec4) FDiv 115 118 - Store 111(shadowCoord) 119 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 121 121 12 12 - 122: 27(fvec4) Load 111(shadowCoord) - 123: 31(fvec2) VectorShuffle 122 122 0 1 - 125: 31(fvec2) VectorTimesScalar 123 124 - 126: 31(fvec2) CompositeConstruct 124 124 - 127: 31(fvec2) FAdd 125 126 - 128: 30(ptr) AccessChain 111(shadowCoord) 12 - 129: 24(float) CompositeExtract 127 0 - Store 128 129 - 130: 30(ptr) AccessChain 111(shadowCoord) 20 - 131: 24(float) CompositeExtract 127 1 - Store 130 131 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 133 133 12 12 - 135: 30(ptr) AccessChain 111(shadowCoord) 22 - 136: 24(float) Load 135 - 140: 134(bool) FOrdGreaterThan 136 137 - SelectionMerge 142 None - BranchConditional 140 141 142 - 141: Label - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 133 133 12 12 - 145: 30(ptr) AccessChain 111(shadowCoord) 22 - 146: 24(float) Load 145 - 148: 134(bool) FOrdLessThan 146 108 - Branch 142 - 142: Label - 149: 134(bool) Phi 140 42 148 141 - SelectionMerge 151 None - BranchConditional 149 150 151 - 150: Label - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 154 154 12 12 - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 156 155(dist) 48 - 172: 164 Load 169(samplerShadowMap) - 173: 27(fvec4) Load 111(shadowCoord) - 174: 31(fvec2) VectorShuffle 173 173 0 1 - 175: 31(fvec2) Load 38(offset) - 176: 31(fvec2) FAdd 174 175 - 177: 24(float) Load 37(layer) - 178: 24(float) CompositeExtract 176 0 - 179: 24(float) CompositeExtract 176 1 - 180: 70(fvec3) CompositeConstruct 178 179 177 - 181: 27(fvec4) ImageSampleImplicitLod 172 180 - 182: 24(float) CompositeExtract 181 0 - Store 155(dist) 182 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 184 184 12 12 - 185: 30(ptr) AccessChain 111(shadowCoord) 13 - 186: 24(float) Load 185 - 189: 134(bool) FOrdGreaterThan 186 187 - SelectionMerge 191 None - BranchConditional 189 190 191 - 190: Label - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 184 184 12 12 - 194: 24(float) Load 155(dist) - 195: 30(ptr) AccessChain 111(shadowCoord) 22 - 196: 24(float) Load 195 - 198: 134(bool) FOrdLessThan 194 196 - Branch 191 - 191: Label - 199: 134(bool) Phi 189 150 198 190 - SelectionMerge 201 None - BranchConditional 199 200 201 - 200: Label - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 204 204 12 12 - Store 105(shadow) 205 - Branch 201 - 201: Label - Branch 151 - 151: Label - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 208 208 12 12 - 209: 24(float) Load 105(shadow) - ReturnValue 209 +33(textureProj(vf4;f1;vf2;): 16(float) Function None 28 + 30(P): 22(ptr) FunctionParameter + 31(layer): 23(ptr) FunctionParameter + 32(offset): 27(ptr) FunctionParameter + 34: Label + 109(shadow): 23(ptr) Variable Function +115(shadowCoord): 22(ptr) Variable Function + 159(dist): 23(ptr) Variable Function + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 30(P) 47 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 31(layer) 47 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 32(offset) 47 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(textureProj(vf4;f1;vf2;) + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 108 108 12 12 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 110 109(shadow) 47 + Store 109(shadow) 112 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 114 114 12 12 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 115(shadowCoord) 47 + 119: 19(fvec4) Load 30(P) + 120: 23(ptr) AccessChain 30(P) 13 + 121: 16(float) Load 120 + 122: 19(fvec4) CompositeConstruct 121 121 121 121 + 123: 19(fvec4) FDiv 119 122 + Store 115(shadowCoord) 123 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 125 125 12 12 + 126: 19(fvec4) Load 115(shadowCoord) + 127: 24(fvec2) VectorShuffle 126 126 0 1 + 129: 24(fvec2) VectorTimesScalar 127 128 + 130: 24(fvec2) CompositeConstruct 128 128 + 131: 24(fvec2) FAdd 129 130 + 132: 23(ptr) AccessChain 115(shadowCoord) 12 + 133: 16(float) CompositeExtract 131 0 + Store 132 133 + 134: 23(ptr) AccessChain 115(shadowCoord) 41 + 135: 16(float) CompositeExtract 131 1 + Store 134 135 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 137 137 12 12 + 139: 23(ptr) AccessChain 115(shadowCoord) 25 + 140: 16(float) Load 139 + 144: 138(bool) FOrdGreaterThan 140 141 + SelectionMerge 146 None + BranchConditional 144 145 146 + 145: Label + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 137 137 12 12 + 149: 23(ptr) AccessChain 115(shadowCoord) 25 + 150: 16(float) Load 149 + 152: 138(bool) FOrdLessThan 150 112 + Branch 146 + 146: Label + 153: 138(bool) Phi 144 34 152 145 + SelectionMerge 155 None + BranchConditional 153 154 155 + 154: Label + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 158 158 12 12 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(dist) 47 + 176: 168 Load 173(samplerShadowMap) + 177: 19(fvec4) Load 115(shadowCoord) + 178: 24(fvec2) VectorShuffle 177 177 0 1 + 179: 24(fvec2) Load 32(offset) + 180: 24(fvec2) FAdd 178 179 + 181: 16(float) Load 31(layer) + 182: 16(float) CompositeExtract 180 0 + 183: 16(float) CompositeExtract 180 1 + 184: 70(fvec3) CompositeConstruct 182 183 181 + 185: 19(fvec4) ImageSampleImplicitLod 176 184 + 186: 16(float) CompositeExtract 185 0 + Store 159(dist) 186 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 188 188 12 12 + 189: 23(ptr) AccessChain 115(shadowCoord) 13 + 190: 16(float) Load 189 + 193: 138(bool) FOrdGreaterThan 190 191 + SelectionMerge 195 None + BranchConditional 193 194 195 + 194: Label + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 188 188 12 12 + 198: 16(float) Load 159(dist) + 199: 23(ptr) AccessChain 115(shadowCoord) 25 + 200: 16(float) Load 199 + 202: 138(bool) FOrdLessThan 198 200 + Branch 195 + 195: Label + 203: 138(bool) Phi 193 154 202 194 + SelectionMerge 205 None + BranchConditional 203 204 205 + 204: Label + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 208 208 12 12 + Store 109(shadow) 209 + Branch 205 + 205: Label + Branch 155 + 155: Label + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 212 212 12 12 + 213: 16(float) Load 109(shadow) + ReturnValue 213 FunctionEnd Line 1 76 37 -59(filterPCF(vf4;f1;): 24(float) Function None 55 - 57(sc): 29(ptr) FunctionParameter - 58(layer): 30(ptr) FunctionParameter - 62: Label - 219(texDim): 218(ptr) Variable Function - 231(scale): 30(ptr) Variable Function - 238(dx): 30(ptr) Variable Function - 251(dy): 30(ptr) Variable Function -263(shadowFactor): 30(ptr) Variable Function - 269(count): 244(ptr) Variable Function - 275(range): 244(ptr) Variable Function - 282(x): 244(ptr) Variable Function - 304(y): 244(ptr) Variable Function - 335(param): 29(ptr) Variable Function - 337(param): 30(ptr) Variable Function - 339(param): 33(ptr) Variable Function +58(filterPCF(vf4;f1;): 16(float) Function None 54 + 56(sc): 22(ptr) FunctionParameter + 57(layer): 23(ptr) FunctionParameter + 59: Label + 223(texDim): 222(ptr) Variable Function + 235(scale): 23(ptr) Variable Function + 242(dx): 23(ptr) Variable Function + 255(dy): 23(ptr) Variable Function +267(shadowFactor): 23(ptr) Variable Function + 273(count): 248(ptr) Variable Function + 279(range): 248(ptr) Variable Function + 286(x): 248(ptr) Variable Function + 308(y): 248(ptr) Variable Function + 339(param): 22(ptr) Variable Function + 341(param): 23(ptr) Variable Function + 343(param): 27(ptr) Variable Function 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 57(sc) 48 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 58(layer) 48 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 59(filterPCF(vf4;f1;) - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 215 215 12 12 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 220 219(texDim) 48 - 223: 164 Load 169(samplerShadowMap) - 224: 159 Image 223 - 227: 225(ivec3) ImageQuerySizeLod 224 100 - 228: 216(ivec2) VectorShuffle 227 227 0 1 - Store 219(texDim) 228 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 230 230 12 12 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 232 231(scale) 48 - Store 231(scale) 235 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 237 237 12 12 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 239 238(dx) 48 - 242: 24(float) Load 231(scale) - 243: 24(float) FMul 242 108 - 245: 244(ptr) AccessChain 219(texDim) 12 - 246: 92(int) Load 245 - 247: 24(float) ConvertSToF 246 - 248: 24(float) FDiv 243 247 - Store 238(dx) 248 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 250 250 12 12 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 252 251(dy) 48 - 255: 24(float) Load 231(scale) - 256: 24(float) FMul 255 108 - 257: 244(ptr) AccessChain 219(texDim) 20 - 258: 92(int) Load 257 - 259: 24(float) ConvertSToF 258 - 260: 24(float) FDiv 256 259 - Store 251(dy) 260 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 262 262 12 12 - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 264 263(shadowFactor) 48 - Store 263(shadowFactor) 187 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 268 268 12 12 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 270 269(count) 48 - Store 269(count) 100 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 274 274 12 12 - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 276 275(range) 48 - Store 275(range) 279 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(x) 48 - 286: 92(int) Load 275(range) - 287: 92(int) SNegate 286 - Store 282(x) 287 - Branch 288 - 288: Label - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 - LoopMerge 290 291 None - Branch 294 - 294: Label - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 - 297: 92(int) Load 282(x) - 298: 92(int) Load 275(range) - 300: 134(bool) SLessThanEqual 297 298 - BranchConditional 300 289 290 - 289: Label - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 305 304(y) 48 - 308: 92(int) Load 275(range) - 309: 92(int) SNegate 308 - Store 304(y) 309 - Branch 310 - 310: Label - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 - LoopMerge 312 313 None - Branch 316 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 62 62 12 12 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 56(sc) 47 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 57(layer) 47 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 219 219 12 12 + 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(texDim) 47 + 227: 168 Load 173(samplerShadowMap) + 228: 163 Image 227 + 231: 229(ivec3) ImageQuerySizeLod 228 104 + 232: 220(ivec2) VectorShuffle 231 231 0 1 + Store 223(texDim) 232 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 234 234 12 12 + 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(scale) 47 + Store 235(scale) 239 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 241 241 12 12 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(dx) 47 + 246: 16(float) Load 235(scale) + 247: 16(float) FMul 246 112 + 249: 248(ptr) AccessChain 223(texDim) 12 + 250: 96(int) Load 249 + 251: 16(float) ConvertSToF 250 + 252: 16(float) FDiv 247 251 + Store 242(dx) 252 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 254 254 12 12 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 256 255(dy) 47 + 259: 16(float) Load 235(scale) + 260: 16(float) FMul 259 112 + 261: 248(ptr) AccessChain 223(texDim) 41 + 262: 96(int) Load 261 + 263: 16(float) ConvertSToF 262 + 264: 16(float) FDiv 260 263 + Store 255(dy) 264 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 266 266 12 12 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 268 267(shadowFactor) 47 + Store 267(shadowFactor) 191 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 272 272 12 12 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(count) 47 + Store 273(count) 104 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 278 278 12 12 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(range) 47 + Store 279(range) 283 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 + 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 287 286(x) 47 + 290: 96(int) Load 279(range) + 291: 96(int) SNegate 290 + Store 286(x) 291 + Branch 292 + 292: Label + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 + LoopMerge 294 295 None + Branch 298 + 298: Label + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 + 301: 96(int) Load 286(x) + 302: 96(int) Load 279(range) + 304: 138(bool) SLessThanEqual 301 302 + BranchConditional 304 293 294 + 293: Label + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 309 308(y) 47 + 312: 96(int) Load 279(range) + 313: 96(int) SNegate 312 + Store 308(y) 313 + Branch 314 + 314: Label + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 + LoopMerge 316 317 None + Branch 320 + 320: Label + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 + 323: 96(int) Load 308(y) + 324: 96(int) Load 279(range) + 326: 138(bool) SLessThanEqual 323 324 + BranchConditional 326 315 316 + 315: Label + 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 329 329 12 12 + 330: 16(float) Load 242(dx) + 331: 96(int) Load 286(x) + 332: 16(float) ConvertSToF 331 + 333: 16(float) FMul 330 332 + 334: 16(float) Load 255(dy) + 335: 96(int) Load 308(y) + 336: 16(float) ConvertSToF 335 + 337: 16(float) FMul 334 336 + 338: 24(fvec2) CompositeConstruct 333 337 + 340: 19(fvec4) Load 56(sc) + Store 339(param) 340 + 342: 16(float) Load 57(layer) + Store 341(param) 342 + Store 343(param) 338 + 344: 16(float) FunctionCall 33(textureProj(vf4;f1;vf2;) 339(param) 341(param) 343(param) + 345: 16(float) Load 267(shadowFactor) + 346: 16(float) FAdd 345 344 + Store 267(shadowFactor) 346 + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 348 348 12 12 + 349: 96(int) Load 273(count) + 350: 96(int) IAdd 349 283 + Store 273(count) 350 + Branch 317 + 317: Label + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 + 353: 96(int) Load 308(y) + 354: 96(int) IAdd 353 283 + Store 308(y) 354 + Branch 314 316: Label - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 - 319: 92(int) Load 304(y) - 320: 92(int) Load 275(range) - 322: 134(bool) SLessThanEqual 319 320 - BranchConditional 322 311 312 - 311: Label - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 325 325 12 12 - 326: 24(float) Load 238(dx) - 327: 92(int) Load 282(x) - 328: 24(float) ConvertSToF 327 - 329: 24(float) FMul 326 328 - 330: 24(float) Load 251(dy) - 331: 92(int) Load 304(y) - 332: 24(float) ConvertSToF 331 - 333: 24(float) FMul 330 332 - 334: 31(fvec2) CompositeConstruct 329 333 - 336: 27(fvec4) Load 57(sc) - Store 335(param) 336 - 338: 24(float) Load 58(layer) - Store 337(param) 338 - Store 339(param) 334 - 340: 24(float) FunctionCall 39(textureProj(vf4;f1;vf2;) 335(param) 337(param) 339(param) - 341: 24(float) Load 263(shadowFactor) - 342: 24(float) FAdd 341 340 - Store 263(shadowFactor) 342 - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 344 344 12 12 - 345: 92(int) Load 269(count) - 346: 92(int) IAdd 345 279 - Store 269(count) 346 - Branch 313 - 313: Label - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 303 303 12 12 - 349: 92(int) Load 304(y) - 350: 92(int) IAdd 349 279 - Store 304(y) 350 - Branch 310 - 312: Label - Branch 291 - 291: Label - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 281 281 12 12 - 353: 92(int) Load 282(x) - 354: 92(int) IAdd 353 279 - Store 282(x) 354 - Branch 288 - 290: Label - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 357 357 12 12 - 358: 24(float) Load 263(shadowFactor) - 359: 92(int) Load 269(count) - 360: 24(float) ConvertSToF 359 - 361: 24(float) FDiv 358 360 - ReturnValue 361 + Branch 295 + 295: Label + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 + 357: 96(int) Load 286(x) + 358: 96(int) IAdd 357 283 + Store 286(x) 358 + Branch 292 + 294: Label + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 361 361 12 12 + 362: 16(float) Load 267(shadowFactor) + 363: 96(int) Load 273(count) + 364: 16(float) ConvertSToF 363 + 365: 16(float) FDiv 362 364 + ReturnValue 365 FunctionEnd Line 1 99 41 77(shadow(vf3;vf3;): 70(fvec3) Function None 73 75(fragcolor): 72(ptr) FunctionParameter 76(fragpos): 72(ptr) FunctionParameter - 80: Label - 368(i): 244(ptr) Variable Function - 388(shadowClip): 29(ptr) Variable Function -436(shadowFactor): 30(ptr) Variable Function - 441(param): 29(ptr) Variable Function - 443(param): 30(ptr) Variable Function - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 83 75(fragcolor) 48 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 76(fragpos) 48 - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 79 77(shadow(vf3;vf3;) - 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 - 366: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 369 368(i) 48 - Store 368(i) 100 - Branch 372 - 372: Label - 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 - 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 - LoopMerge 374 375 None - Branch 378 + 78: Label + 372(i): 248(ptr) Variable Function + 392(shadowClip): 22(ptr) Variable Function +440(shadowFactor): 23(ptr) Variable Function + 445(param): 22(ptr) Variable Function + 447(param): 23(ptr) Variable Function + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 81 81 12 12 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 75(fragcolor) 47 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 76(fragpos) 47 + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) + 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 370: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 373 372(i) 47 + Store 372(i) 104 + Branch 376 + 376: Label + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 + LoopMerge 378 379 None + Branch 382 + 382: Label + 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 + 385: 96(int) Load 372(i) + 388: 138(bool) SLessThan 385 386 + BranchConditional 388 377 378 + 377: Label + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 391 391 12 12 + 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 393 392(shadowClip) 47 + 428: 96(int) Load 372(i) + 430: 429(ptr) AccessChain 425(ubo) 283 428 386 + 431: 396 Load 430 + 432: 70(fvec3) Load 76(fragpos) + 433: 16(float) CompositeExtract 432 0 + 434: 16(float) CompositeExtract 432 1 + 435: 16(float) CompositeExtract 432 2 + 436: 19(fvec4) CompositeConstruct 433 434 435 112 + 437: 19(fvec4) MatrixTimesVector 431 436 + Store 392(shadowClip) 437 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 439 439 12 12 + 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 441 440(shadowFactor) 47 + 443: 96(int) Load 372(i) + 444: 16(float) ConvertSToF 443 + 446: 19(fvec4) Load 392(shadowClip) + Store 445(param) 446 + Store 447(param) 444 + 448: 16(float) FunctionCall 58(filterPCF(vf4;f1;) 445(param) 447(param) + Store 440(shadowFactor) 448 + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 450 450 12 12 + 451: 16(float) Load 440(shadowFactor) + 452: 70(fvec3) Load 75(fragcolor) + 453: 70(fvec3) VectorTimesScalar 452 451 + Store 75(fragcolor) 453 + Branch 379 + 379: Label + 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 + 456: 96(int) Load 372(i) + 457: 96(int) IAdd 456 283 + Store 372(i) 457 + Branch 376 378: Label - 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 - 381: 92(int) Load 368(i) - 384: 134(bool) SLessThan 381 382 - BranchConditional 384 373 374 - 373: Label - 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 - 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 387 387 12 12 - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 389 388(shadowClip) 48 - 424: 92(int) Load 368(i) - 426: 425(ptr) AccessChain 421(ubo) 279 424 382 - 427: 392 Load 426 - 428: 70(fvec3) Load 76(fragpos) - 429: 24(float) CompositeExtract 428 0 - 430: 24(float) CompositeExtract 428 1 - 431: 24(float) CompositeExtract 428 2 - 432: 27(fvec4) CompositeConstruct 429 430 431 108 - 433: 27(fvec4) MatrixTimesVector 427 432 - Store 388(shadowClip) 433 - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 435 435 12 12 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 437 436(shadowFactor) 48 - 439: 92(int) Load 368(i) - 440: 24(float) ConvertSToF 439 - 442: 27(fvec4) Load 388(shadowClip) - Store 441(param) 442 - Store 443(param) 440 - 444: 24(float) FunctionCall 59(filterPCF(vf4;f1;) 441(param) 443(param) - Store 436(shadowFactor) 444 - 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 446 446 12 12 - 447: 24(float) Load 436(shadowFactor) - 448: 70(fvec3) Load 75(fragcolor) - 449: 70(fvec3) VectorTimesScalar 448 447 - Store 75(fragcolor) 449 - Branch 375 - 375: Label - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 - 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 367 367 12 12 - 452: 92(int) Load 368(i) - 453: 92(int) IAdd 452 279 - Store 368(i) 453 - Branch 372 - 374: Label - 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 79 - 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 456 456 12 12 - 457: 70(fvec3) Load 75(fragcolor) - ReturnValue 457 + 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 460 460 12 12 + 461: 70(fvec3) Load 75(fragcolor) + ReturnValue 461 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 84b9807418..51a67155ab 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 256 +// Id's are bound by 257 Capability Geometry Capability MultiViewport @@ -9,15 +9,15 @@ spv.debuginfo.glsl.geom 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 14 "main" 62 94 113 123 126 157 196 205 222 234 240 243 + EntryPoint Geometry 14 "main" 63 95 114 124 127 158 197 206 223 235 241 244 ExecutionMode 14 Triangles ExecutionMode 14 Invocations 2 ExecutionMode 14 OutputTriangleStrip ExecutionMode 14 OutputVertices 3 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 16: String "main" + 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -25,98 +25,98 @@ spv.debuginfo.glsl.geom // OpModuleProcessed entry-point main #line 1 " - 29: String "int" - 34: String "i" - 50: String "bool" - 57: String "float" - 64: String "outNormal" - 77: String "projection" - 81: String "modelview" - 84: String "lightPos" - 87: String "UBO" - 91: String "ubo" - 96: String "gl_InvocationID" - 115: String "inNormal" - 125: String "outColor" - 128: String "inColor" - 137: String "pos" - 143: String "gl_Position" - 146: String "gl_PointSize" - 149: String "gl_CullDistance" - 153: String "gl_PerVertex" - 159: String "gl_in" - 168: String "worldPos" - 180: String "lPos" - 198: String "outLightVec" - 207: String "outViewVec" - 236: String "gl_ViewportIndex" - 242: String "gl_PrimitiveID" - 245: String "gl_PrimitiveIDIn" + 30: String "int" + 35: String "i" + 51: String "bool" + 58: String "float" + 65: String "outNormal" + 78: String "projection" + 82: String "modelview" + 85: String "lightPos" + 88: String "UBO" + 92: String "ubo" + 97: String "gl_InvocationID" + 116: String "inNormal" + 126: String "outColor" + 129: String "inColor" + 138: String "pos" + 144: String "gl_Position" + 147: String "gl_PointSize" + 150: String "gl_CullDistance" + 154: String "gl_PerVertex" + 160: String "gl_in" + 169: String "worldPos" + 181: String "lPos" + 199: String "outLightVec" + 208: String "outViewVec" + 237: String "gl_ViewportIndex" + 243: String "gl_PrimitiveID" + 246: String "gl_PrimitiveIDIn" SourceExtension "GL_ARB_viewport_array" Name 14 "main" - Name 32 "i" - Name 62 "outNormal" - Name 75 "UBO" - MemberName 75(UBO) 0 "projection" - MemberName 75(UBO) 1 "modelview" - MemberName 75(UBO) 2 "lightPos" - Name 89 "ubo" - Name 94 "gl_InvocationID" - Name 113 "inNormal" - Name 123 "outColor" - Name 126 "inColor" - Name 135 "pos" - Name 141 "gl_PerVertex" - MemberName 141(gl_PerVertex) 0 "gl_Position" - MemberName 141(gl_PerVertex) 1 "gl_PointSize" - MemberName 141(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 141(gl_PerVertex) 3 "gl_CullDistance" - Name 157 "gl_in" - Name 166 "worldPos" - Name 178 "lPos" - Name 196 "outLightVec" - Name 205 "outViewVec" - Name 213 "gl_PerVertex" - MemberName 213(gl_PerVertex) 0 "gl_Position" - MemberName 213(gl_PerVertex) 1 "gl_PointSize" - MemberName 213(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 213(gl_PerVertex) 3 "gl_CullDistance" - Name 222 "" - Name 234 "gl_ViewportIndex" - Name 240 "gl_PrimitiveID" - Name 243 "gl_PrimitiveIDIn" - Decorate 62(outNormal) Location 0 - Decorate 71 ArrayStride 64 - Decorate 73 ArrayStride 64 - MemberDecorate 75(UBO) 0 ColMajor - MemberDecorate 75(UBO) 0 Offset 0 - MemberDecorate 75(UBO) 0 MatrixStride 16 - MemberDecorate 75(UBO) 1 ColMajor - MemberDecorate 75(UBO) 1 Offset 128 - MemberDecorate 75(UBO) 1 MatrixStride 16 - MemberDecorate 75(UBO) 2 Offset 256 - Decorate 75(UBO) Block - Decorate 89(ubo) DescriptorSet 0 - Decorate 89(ubo) Binding 0 - Decorate 94(gl_InvocationID) BuiltIn InvocationId - Decorate 113(inNormal) Location 0 - Decorate 123(outColor) Location 1 - Decorate 126(inColor) Location 1 - MemberDecorate 141(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 141(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 141(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 141(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 141(gl_PerVertex) Block - Decorate 196(outLightVec) Location 3 - Decorate 205(outViewVec) Location 2 - MemberDecorate 213(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 213(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 213(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 213(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 213(gl_PerVertex) Block - Decorate 234(gl_ViewportIndex) BuiltIn ViewportIndex - Decorate 240(gl_PrimitiveID) BuiltIn PrimitiveId - Decorate 243(gl_PrimitiveIDIn) BuiltIn PrimitiveId + Name 33 "i" + Name 63 "outNormal" + Name 76 "UBO" + MemberName 76(UBO) 0 "projection" + MemberName 76(UBO) 1 "modelview" + MemberName 76(UBO) 2 "lightPos" + Name 90 "ubo" + Name 95 "gl_InvocationID" + Name 114 "inNormal" + Name 124 "outColor" + Name 127 "inColor" + Name 136 "pos" + Name 142 "gl_PerVertex" + MemberName 142(gl_PerVertex) 0 "gl_Position" + MemberName 142(gl_PerVertex) 1 "gl_PointSize" + MemberName 142(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 142(gl_PerVertex) 3 "gl_CullDistance" + Name 158 "gl_in" + Name 167 "worldPos" + Name 179 "lPos" + Name 197 "outLightVec" + Name 206 "outViewVec" + Name 214 "gl_PerVertex" + MemberName 214(gl_PerVertex) 0 "gl_Position" + MemberName 214(gl_PerVertex) 1 "gl_PointSize" + MemberName 214(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 214(gl_PerVertex) 3 "gl_CullDistance" + Name 223 "" + Name 235 "gl_ViewportIndex" + Name 241 "gl_PrimitiveID" + Name 244 "gl_PrimitiveIDIn" + Decorate 63(outNormal) Location 0 + Decorate 72 ArrayStride 64 + Decorate 74 ArrayStride 64 + MemberDecorate 76(UBO) 0 ColMajor + MemberDecorate 76(UBO) 0 Offset 0 + MemberDecorate 76(UBO) 0 MatrixStride 16 + MemberDecorate 76(UBO) 1 ColMajor + MemberDecorate 76(UBO) 1 Offset 128 + MemberDecorate 76(UBO) 1 MatrixStride 16 + MemberDecorate 76(UBO) 2 Offset 256 + Decorate 76(UBO) Block + Decorate 90(ubo) DescriptorSet 0 + Decorate 90(ubo) Binding 0 + Decorate 95(gl_InvocationID) BuiltIn InvocationId + Decorate 114(inNormal) Location 0 + Decorate 124(outColor) Location 1 + Decorate 127(inColor) Location 1 + MemberDecorate 142(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 142(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 142(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 142(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 142(gl_PerVertex) Block + Decorate 197(outLightVec) Location 3 + Decorate 206(outViewVec) Location 2 + MemberDecorate 214(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 214(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 214(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 214(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 214(gl_PerVertex) Block + Decorate 235(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 241(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 244(gl_PrimitiveIDIn) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -126,239 +126,240 @@ spv.debuginfo.glsl.geom 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 27: 7(int) Constant 49 - 28: TypeInt 32 1 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 21 12 - 31: TypePointer Function 28(int) - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 34 30 17 27 12 16 21 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 37: 28(int) Constant 0 - 48: 28(int) Constant 3 - 49: TypeBool - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 10 22 12 - 55: 7(int) Constant 51 - 56: TypeFloat 32 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 13 12 - 59: TypeVector 56(float) 3 - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 58 13 - 61: TypePointer Output 59(fvec3) - 62(outNormal): 61(ptr) Variable Output - 65: 7(int) Constant 8 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 64 60 17 55 12 19 64 62(outNormal) 65 - 66: TypeVector 56(float) 4 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 58 21 - 68: TypeMatrix 66(fvec4) 4 - 70: 49(bool) ConstantTrue - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 67 21 70 - 71: TypeArray 68 22 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 69 22 - 73: TypeArray 68 22 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 69 22 - 75(UBO): TypeStruct 71 73 66(fvec4) - 78: 7(int) Constant 34 - 79: 7(int) Constant 7 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 77 72 17 78 79 12 12 13 - 82: 7(int) Constant 35 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 74 17 82 79 12 12 13 - 85: 7(int) Constant 36 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 67 17 85 79 12 12 13 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 87 20 17 55 12 19 87 12 13 76 80 83 - 88: TypePointer Uniform 75(UBO) - 89(ubo): 88(ptr) Variable Uniform - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 91 86 17 55 12 19 91 89(ubo) 65 - 92: 28(int) Constant 1 - 93: TypePointer Input 28(int) -94(gl_InvocationID): 93(ptr) Variable Input - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 30 17 55 12 19 96 94(gl_InvocationID) 65 - 98: TypePointer Uniform 68 - 101: TypeMatrix 59(fvec3) 3 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 60 13 70 - 110: TypeArray 59(fvec3) 13 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 60 13 - 112: TypePointer Input 110 - 113(inNormal): 112(ptr) Variable Input - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 115 111 17 55 12 19 115 113(inNormal) 65 - 117: TypePointer Input 59(fvec3) - 122: 7(int) Constant 52 - 123(outColor): 61(ptr) Variable Output - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 60 17 122 12 19 125 123(outColor) 65 - 126(inColor): 112(ptr) Variable Input - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 128 111 17 122 12 19 128 126(inColor) 65 - 133: 7(int) Constant 54 - 134: TypePointer Function 66(fvec4) - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 137 67 17 133 12 16 21 - 139: TypeArray 56(float) 20 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 58 20 -141(gl_PerVertex): TypeStruct 66(fvec4) 56(float) 139 139 - 144: 7(int) Constant 23 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 143 67 17 22 144 12 12 13 - 147: 7(int) Constant 41 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 58 17 22 147 12 12 13 - 150: 7(int) Constant 84 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 22 150 12 12 13 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 22 150 12 12 13 - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 20 17 133 12 19 153 12 13 142 145 148 151 - 154: TypeArray 141(gl_PerVertex) 13 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 152 13 - 156: TypePointer Input 154 - 157(gl_in): 156(ptr) Variable Input - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 159 155 17 133 12 19 159 157(gl_in) 65 - 161: TypePointer Input 66(fvec4) - 165: 7(int) Constant 55 - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 168 67 17 165 12 16 21 - 176: 7(int) Constant 57 - 177: TypePointer Function 59(fvec3) - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 60 17 176 12 16 21 - 185: 28(int) Constant 2 - 186: TypePointer Uniform 66(fvec4) - 195: 7(int) Constant 58 -196(outLightVec): 61(ptr) Variable Output - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 198 60 17 195 12 19 198 196(outLightVec) 65 - 204: 7(int) Constant 59 - 205(outViewVec): 61(ptr) Variable Output - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 207 60 17 204 12 19 207 205(outViewVec) 65 - 212: 7(int) Constant 61 -213(gl_PerVertex): TypeStruct 66(fvec4) 56(float) 139 139 - 215: 7(int) Constant 215 - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 143 67 17 22 215 12 12 13 - 217: 7(int) Constant 233 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 58 17 22 217 12 12 13 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 13 79 12 12 13 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 140 17 13 79 12 12 13 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 20 17 212 12 19 153 12 13 214 216 218 219 - 221: TypePointer Output 213(gl_PerVertex) - 222: 221(ptr) Variable Output - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 220 17 212 12 19 1 222 65 - 229: TypePointer Output 66(fvec4) - 232: 7(int) Constant 64 - 233: TypePointer Output 28(int) -234(gl_ViewportIndex): 233(ptr) Variable Output - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 30 17 232 12 19 236 234(gl_ViewportIndex) 65 - 239: 7(int) Constant 65 -240(gl_PrimitiveID): 233(ptr) Variable Output - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 242 30 17 239 12 19 242 240(gl_PrimitiveID) 65 -243(gl_PrimitiveIDIn): 93(ptr) Variable Input - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 245 30 17 239 12 19 245 243(gl_PrimitiveIDIn) 65 - 248: 7(int) Constant 66 - 255: 7(int) Constant 68 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 20: 7(int) Constant 47 + 22: 7(int) Constant 1 + 23: 7(int) Constant 4 + 24: 7(int) Constant 2 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: 7(int) Constant 49 + 29: TypeInt 32 1 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 23 12 + 32: TypePointer Function 29(int) + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 35 31 18 28 12 17 23 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 38: 29(int) Constant 0 + 49: 29(int) Constant 3 + 50: TypeBool + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 51 10 24 12 + 56: 7(int) Constant 51 + 57: TypeFloat 32 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 58 10 13 12 + 60: TypeVector 57(float) 3 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 13 + 62: TypePointer Output 60(fvec3) + 63(outNormal): 62(ptr) Variable Output + 66: 7(int) Constant 8 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 65 61 18 56 12 21 65 63(outNormal) 66 + 67: TypeVector 57(float) 4 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 23 + 69: TypeMatrix 67(fvec4) 4 + 71: 50(bool) ConstantTrue + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 68 23 71 + 72: TypeArray 69 24 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 70 24 + 74: TypeArray 69 24 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 70 24 + 76(UBO): TypeStruct 72 74 67(fvec4) + 79: 7(int) Constant 34 + 80: 7(int) Constant 7 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 73 18 79 80 12 12 13 + 83: 7(int) Constant 35 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 75 18 83 80 12 12 13 + 86: 7(int) Constant 36 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 85 68 18 86 80 12 12 13 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 88 22 18 56 12 21 88 12 13 77 81 84 + 89: TypePointer Uniform 76(UBO) + 90(ubo): 89(ptr) Variable Uniform + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 92 87 18 56 12 21 92 90(ubo) 66 + 93: 29(int) Constant 1 + 94: TypePointer Input 29(int) +95(gl_InvocationID): 94(ptr) Variable Input + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 97 31 18 56 12 21 97 95(gl_InvocationID) 66 + 99: TypePointer Uniform 69 + 102: TypeMatrix 60(fvec3) 3 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 61 13 71 + 111: TypeArray 60(fvec3) 13 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 13 + 113: TypePointer Input 111 + 114(inNormal): 113(ptr) Variable Input + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 116 112 18 56 12 21 116 114(inNormal) 66 + 118: TypePointer Input 60(fvec3) + 123: 7(int) Constant 52 + 124(outColor): 62(ptr) Variable Output + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 126 61 18 123 12 21 126 124(outColor) 66 + 127(inColor): 113(ptr) Variable Input + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 129 112 18 123 12 21 129 127(inColor) 66 + 134: 7(int) Constant 54 + 135: TypePointer Function 67(fvec4) + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 138 68 18 134 12 17 23 + 140: TypeArray 57(float) 22 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 59 22 +142(gl_PerVertex): TypeStruct 67(fvec4) 57(float) 140 140 + 145: 7(int) Constant 23 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 68 18 24 145 12 12 13 + 148: 7(int) Constant 41 + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 147 59 18 24 148 12 12 13 + 151: 7(int) Constant 84 + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 24 151 12 12 13 + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 24 151 12 12 13 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 154 22 18 134 12 21 154 12 13 143 146 149 152 + 155: TypeArray 142(gl_PerVertex) 13 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 153 13 + 157: TypePointer Input 155 + 158(gl_in): 157(ptr) Variable Input + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 160 156 18 134 12 21 160 158(gl_in) 66 + 162: TypePointer Input 67(fvec4) + 166: 7(int) Constant 55 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 169 68 18 166 12 17 23 + 177: 7(int) Constant 57 + 178: TypePointer Function 60(fvec3) + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 181 61 18 177 12 17 23 + 186: 29(int) Constant 2 + 187: TypePointer Uniform 67(fvec4) + 196: 7(int) Constant 58 +197(outLightVec): 62(ptr) Variable Output + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 199 61 18 196 12 21 199 197(outLightVec) 66 + 205: 7(int) Constant 59 + 206(outViewVec): 62(ptr) Variable Output + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 208 61 18 205 12 21 208 206(outViewVec) 66 + 213: 7(int) Constant 61 +214(gl_PerVertex): TypeStruct 67(fvec4) 57(float) 140 140 + 216: 7(int) Constant 215 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 68 18 24 216 12 12 13 + 218: 7(int) Constant 233 + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 147 59 18 24 218 12 12 13 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 13 80 12 12 13 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 13 80 12 12 13 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 154 22 18 213 12 21 154 12 13 215 217 219 220 + 222: TypePointer Output 214(gl_PerVertex) + 223: 222(ptr) Variable Output + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 221 18 213 12 21 1 223 66 + 230: TypePointer Output 67(fvec4) + 233: 7(int) Constant 64 + 234: TypePointer Output 29(int) +235(gl_ViewportIndex): 234(ptr) Variable Output + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 237 31 18 233 12 21 237 235(gl_ViewportIndex) 66 + 240: 7(int) Constant 65 +241(gl_PrimitiveID): 234(ptr) Variable Output + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 243 31 18 240 12 21 243 241(gl_PrimitiveID) 66 +244(gl_PrimitiveIDIn): 94(ptr) Variable Input + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 246 31 18 240 12 21 246 244(gl_PrimitiveIDIn) 66 + 249: 7(int) Constant 66 + 256: 7(int) Constant 68 Line 1 47 15 14(main): 4 Function None 5 - 23: Label - 32(i): 31(ptr) Variable Function - 135(pos): 134(ptr) Variable Function - 166(worldPos): 134(ptr) Variable Function - 178(lPos): 177(ptr) Variable Function - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 33 32(i) 36 - Store 32(i) 37 - Branch 38 - 38: Label - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - LoopMerge 40 41 None - Branch 44 - 44: Label - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - 47: 28(int) Load 32(i) - 52: 49(bool) SLessThan 47 48 - BranchConditional 52 39 40 - 39: Label - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 55 55 12 12 - 97: 28(int) Load 94(gl_InvocationID) - 99: 98(ptr) AccessChain 89(ubo) 92 97 - 100: 68 Load 99 - 103: 66(fvec4) CompositeExtract 100 0 - 104: 59(fvec3) VectorShuffle 103 103 0 1 2 - 105: 66(fvec4) CompositeExtract 100 1 - 106: 59(fvec3) VectorShuffle 105 105 0 1 2 - 107: 66(fvec4) CompositeExtract 100 2 - 108: 59(fvec3) VectorShuffle 107 107 0 1 2 - 109: 101 CompositeConstruct 104 106 108 - 116: 28(int) Load 32(i) - 118: 117(ptr) AccessChain 113(inNormal) 116 - 119: 59(fvec3) Load 118 - 120: 59(fvec3) MatrixTimesVector 109 119 - Store 62(outNormal) 120 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 122 122 12 12 - 129: 28(int) Load 32(i) - 130: 117(ptr) AccessChain 126(inColor) 129 - 131: 59(fvec3) Load 130 - Store 123(outColor) 131 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 133 133 12 12 - 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 135(pos) 36 - 160: 28(int) Load 32(i) - 162: 161(ptr) AccessChain 157(gl_in) 160 37 - 163: 66(fvec4) Load 162 - Store 135(pos) 163 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 165 165 12 12 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 167 166(worldPos) 36 - 170: 28(int) Load 94(gl_InvocationID) - 171: 98(ptr) AccessChain 89(ubo) 92 170 - 172: 68 Load 171 - 173: 66(fvec4) Load 135(pos) - 174: 66(fvec4) MatrixTimesVector 172 173 - Store 166(worldPos) 174 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 176 176 12 12 - 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 179 178(lPos) 36 - 182: 28(int) Load 94(gl_InvocationID) - 183: 98(ptr) AccessChain 89(ubo) 92 182 - 184: 68 Load 183 - 187: 186(ptr) AccessChain 89(ubo) 185 - 188: 66(fvec4) Load 187 - 189: 66(fvec4) MatrixTimesVector 184 188 - 190: 56(float) CompositeExtract 189 0 - 191: 56(float) CompositeExtract 189 1 - 192: 56(float) CompositeExtract 189 2 - 193: 59(fvec3) CompositeConstruct 190 191 192 - Store 178(lPos) 193 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 195 195 12 12 - 199: 59(fvec3) Load 178(lPos) - 200: 66(fvec4) Load 166(worldPos) - 201: 59(fvec3) VectorShuffle 200 200 0 1 2 - 202: 59(fvec3) FSub 199 201 - Store 196(outLightVec) 202 - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 204 204 12 12 - 208: 66(fvec4) Load 166(worldPos) - 209: 59(fvec3) VectorShuffle 208 208 0 1 2 - 210: 59(fvec3) FNegate 209 - Store 205(outViewVec) 210 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 212 212 12 12 - 224: 28(int) Load 94(gl_InvocationID) - 225: 98(ptr) AccessChain 89(ubo) 37 224 - 226: 68 Load 225 - 227: 66(fvec4) Load 166(worldPos) - 228: 66(fvec4) MatrixTimesVector 226 227 - 230: 229(ptr) AccessChain 222 37 - Store 230 228 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 232 232 12 12 - 237: 28(int) Load 94(gl_InvocationID) - Store 234(gl_ViewportIndex) 237 - 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 239 239 12 12 - 246: 28(int) Load 243(gl_PrimitiveIDIn) - Store 240(gl_PrimitiveID) 246 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 248 248 12 12 + 15: Label + 33(i): 32(ptr) Variable Function + 136(pos): 135(ptr) Variable Function + 167(worldPos): 135(ptr) Variable Function + 179(lPos): 178(ptr) Variable Function + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 34 33(i) 37 + Store 33(i) 38 + Branch 39 + 39: Label + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + LoopMerge 41 42 None + Branch 45 + 45: Label + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 48: 29(int) Load 33(i) + 53: 50(bool) SLessThan 48 49 + BranchConditional 53 40 41 + 40: Label + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 56 56 12 12 + 98: 29(int) Load 95(gl_InvocationID) + 100: 99(ptr) AccessChain 90(ubo) 93 98 + 101: 69 Load 100 + 104: 67(fvec4) CompositeExtract 101 0 + 105: 60(fvec3) VectorShuffle 104 104 0 1 2 + 106: 67(fvec4) CompositeExtract 101 1 + 107: 60(fvec3) VectorShuffle 106 106 0 1 2 + 108: 67(fvec4) CompositeExtract 101 2 + 109: 60(fvec3) VectorShuffle 108 108 0 1 2 + 110: 102 CompositeConstruct 105 107 109 + 117: 29(int) Load 33(i) + 119: 118(ptr) AccessChain 114(inNormal) 117 + 120: 60(fvec3) Load 119 + 121: 60(fvec3) MatrixTimesVector 110 120 + Store 63(outNormal) 121 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 123 123 12 12 + 130: 29(int) Load 33(i) + 131: 118(ptr) AccessChain 127(inColor) 130 + 132: 60(fvec3) Load 131 + Store 124(outColor) 132 + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 134 134 12 12 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 137 136(pos) 37 + 161: 29(int) Load 33(i) + 163: 162(ptr) AccessChain 158(gl_in) 161 38 + 164: 67(fvec4) Load 163 + Store 136(pos) 164 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 166 166 12 12 + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 168 167(worldPos) 37 + 171: 29(int) Load 95(gl_InvocationID) + 172: 99(ptr) AccessChain 90(ubo) 93 171 + 173: 69 Load 172 + 174: 67(fvec4) Load 136(pos) + 175: 67(fvec4) MatrixTimesVector 173 174 + Store 167(worldPos) 175 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 177 177 12 12 + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 180 179(lPos) 37 + 183: 29(int) Load 95(gl_InvocationID) + 184: 99(ptr) AccessChain 90(ubo) 93 183 + 185: 69 Load 184 + 188: 187(ptr) AccessChain 90(ubo) 186 + 189: 67(fvec4) Load 188 + 190: 67(fvec4) MatrixTimesVector 185 189 + 191: 57(float) CompositeExtract 190 0 + 192: 57(float) CompositeExtract 190 1 + 193: 57(float) CompositeExtract 190 2 + 194: 60(fvec3) CompositeConstruct 191 192 193 + Store 179(lPos) 194 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 196 196 12 12 + 200: 60(fvec3) Load 179(lPos) + 201: 67(fvec4) Load 167(worldPos) + 202: 60(fvec3) VectorShuffle 201 201 0 1 2 + 203: 60(fvec3) FSub 200 202 + Store 197(outLightVec) 203 + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 205 205 12 12 + 209: 67(fvec4) Load 167(worldPos) + 210: 60(fvec3) VectorShuffle 209 209 0 1 2 + 211: 60(fvec3) FNegate 210 + Store 206(outViewVec) 211 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 + 225: 29(int) Load 95(gl_InvocationID) + 226: 99(ptr) AccessChain 90(ubo) 38 225 + 227: 69 Load 226 + 228: 67(fvec4) Load 167(worldPos) + 229: 67(fvec4) MatrixTimesVector 227 228 + 231: 230(ptr) AccessChain 223 38 + Store 231 229 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12 + 238: 29(int) Load 95(gl_InvocationID) + Store 235(gl_ViewportIndex) 238 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 240 240 12 12 + 247: 29(int) Load 244(gl_PrimitiveIDIn) + Store 241(gl_PrimitiveID) 247 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 249 249 12 12 EmitVertex - Branch 41 - 41: Label - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - 251: 28(int) Load 32(i) - 252: 28(int) IAdd 251 92 - Store 32(i) 252 - Branch 38 - 40: Label - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 255 255 12 12 + Branch 42 + 42: Label + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 252: 29(int) Load 33(i) + 253: 29(int) IAdd 252 93 + Store 33(i) 253 + Branch 39 + 41: Label + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 256 256 12 12 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index b19528cbca..17ac15502b 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -1,19 +1,20 @@ spv.debuginfo.glsl.tesc // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 542 +// Id's are bound by 545 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 14 "main" 249 253 279 370 383 498 512 519 533 + EntryPoint TessellationControl 14 "main" 252 256 282 373 386 501 515 522 536 ExecutionMode 14 OutputVertices 4 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 17: String "float" + 29: String "screenSpaceTessFactor" + 32: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -21,132 +22,131 @@ spv.debuginfo.glsl.tesc // OpModuleProcessed entry-point main #line 1 " - 25: String "float" - 35: String "screenSpaceTessFactor" - 41: String "p0" - 45: String "p1" - 48: String "bool" + 40: String "p0" + 44: String "p1" + 47: String "bool" 53: String "frustumCheck" - 62: String "midPoint" - 74: String "radius" - 85: String "v0" - 96: String "modelview" - 101: String "lightPos" - 104: String "frustumPlanes" - 106: String "tessellatedEdgeSize" - 111: String "viewportDim" - 115: String "UBO" - 119: String "ubo" - 121: String "int" - 133: String "clip0" - 154: String "clip1" - 229: String "pos" - 235: String "gl_Position" - 238: String "gl_PointSize" - 241: String "gl_CullDistance" - 245: String "gl_PerVertex" - 251: String "gl_in" - 255: String "gl_InvocationID" - 264: String "type.2d.image" - 265: String "@type.2d.image" - 269: String "type.sampled.image" - 270: String "@type.sampled.image" - 274: String "samplerHeight" - 281: String "inUV" - 300: String "i" - 372: String "gl_TessLevelInner" - 385: String "gl_TessLevelOuter" - 500: String "gl_out" - 514: String "outNormal" - 521: String "inNormal" - 535: String "outUV" + 56: String "main" + 65: String "midPoint" + 77: String "radius" + 88: String "v0" + 99: String "modelview" + 104: String "lightPos" + 107: String "frustumPlanes" + 109: String "tessellatedEdgeSize" + 114: String "viewportDim" + 118: String "UBO" + 122: String "ubo" + 124: String "int" + 136: String "clip0" + 157: String "clip1" + 232: String "pos" + 238: String "gl_Position" + 241: String "gl_PointSize" + 244: String "gl_CullDistance" + 248: String "gl_PerVertex" + 254: String "gl_in" + 258: String "gl_InvocationID" + 267: String "type.2d.image" + 268: String "@type.2d.image" + 272: String "type.sampled.image" + 273: String "@type.sampled.image" + 277: String "samplerHeight" + 284: String "inUV" + 303: String "i" + 375: String "gl_TessLevelInner" + 388: String "gl_TessLevelOuter" + 503: String "gl_out" + 517: String "outNormal" + 524: String "inNormal" + 538: String "outUV" Name 14 "main" - Name 34 "screenSpaceTessFactor(vf4;vf4;" - Name 32 "p0" - Name 33 "p1" - Name 52 "frustumCheck(" - Name 60 "midPoint" - Name 72 "radius" - Name 83 "v0" - Name 94 "UBO" - MemberName 94(UBO) 0 "projection" - MemberName 94(UBO) 1 "modelview" - MemberName 94(UBO) 2 "lightPos" - MemberName 94(UBO) 3 "frustumPlanes" - MemberName 94(UBO) 4 "displacementFactor" - MemberName 94(UBO) 5 "tessellationFactor" - MemberName 94(UBO) 6 "viewportDim" - MemberName 94(UBO) 7 "tessellatedEdgeSize" - Name 117 "ubo" - Name 131 "clip0" - Name 152 "clip1" - Name 227 "pos" - Name 233 "gl_PerVertex" - MemberName 233(gl_PerVertex) 0 "gl_Position" - MemberName 233(gl_PerVertex) 1 "gl_PointSize" - MemberName 233(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 233(gl_PerVertex) 3 "gl_CullDistance" - Name 249 "gl_in" - Name 253 "gl_InvocationID" - Name 272 "samplerHeight" - Name 279 "inUV" - Name 298 "i" - Name 370 "gl_TessLevelInner" - Name 383 "gl_TessLevelOuter" - Name 410 "param" + Name 27 "screenSpaceTessFactor(vf4;vf4;" + Name 25 "p0" + Name 26 "p1" + Name 51 "frustumCheck(" + Name 63 "midPoint" + Name 75 "radius" + Name 86 "v0" + Name 97 "UBO" + MemberName 97(UBO) 0 "projection" + MemberName 97(UBO) 1 "modelview" + MemberName 97(UBO) 2 "lightPos" + MemberName 97(UBO) 3 "frustumPlanes" + MemberName 97(UBO) 4 "displacementFactor" + MemberName 97(UBO) 5 "tessellationFactor" + MemberName 97(UBO) 6 "viewportDim" + MemberName 97(UBO) 7 "tessellatedEdgeSize" + Name 120 "ubo" + Name 134 "clip0" + Name 155 "clip1" + Name 230 "pos" + Name 236 "gl_PerVertex" + MemberName 236(gl_PerVertex) 0 "gl_Position" + MemberName 236(gl_PerVertex) 1 "gl_PointSize" + MemberName 236(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 236(gl_PerVertex) 3 "gl_CullDistance" + Name 252 "gl_in" + Name 256 "gl_InvocationID" + Name 275 "samplerHeight" + Name 282 "inUV" + Name 301 "i" + Name 373 "gl_TessLevelInner" + Name 386 "gl_TessLevelOuter" Name 413 "param" - Name 420 "param" + Name 416 "param" Name 423 "param" - Name 430 "param" + Name 426 "param" Name 433 "param" - Name 440 "param" + Name 436 "param" Name 443 "param" - Name 487 "gl_PerVertex" - MemberName 487(gl_PerVertex) 0 "gl_Position" - MemberName 487(gl_PerVertex) 1 "gl_PointSize" - MemberName 487(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 487(gl_PerVertex) 3 "gl_CullDistance" - Name 498 "gl_out" - Name 512 "outNormal" - Name 519 "inNormal" - Name 533 "outUV" - Decorate 90 ArrayStride 16 - MemberDecorate 94(UBO) 0 ColMajor - MemberDecorate 94(UBO) 0 Offset 0 - MemberDecorate 94(UBO) 0 MatrixStride 16 - MemberDecorate 94(UBO) 1 ColMajor - MemberDecorate 94(UBO) 1 Offset 64 - MemberDecorate 94(UBO) 1 MatrixStride 16 - MemberDecorate 94(UBO) 2 Offset 128 - MemberDecorate 94(UBO) 3 Offset 144 - MemberDecorate 94(UBO) 4 Offset 240 - MemberDecorate 94(UBO) 5 Offset 244 - MemberDecorate 94(UBO) 6 Offset 248 - MemberDecorate 94(UBO) 7 Offset 256 - Decorate 94(UBO) Block - Decorate 117(ubo) DescriptorSet 0 - Decorate 117(ubo) Binding 0 - MemberDecorate 233(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 233(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 233(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 233(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 233(gl_PerVertex) Block - Decorate 253(gl_InvocationID) BuiltIn InvocationId - Decorate 272(samplerHeight) DescriptorSet 0 - Decorate 272(samplerHeight) Binding 1 - Decorate 279(inUV) Location 1 - Decorate 370(gl_TessLevelInner) Patch - Decorate 370(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 383(gl_TessLevelOuter) Patch - Decorate 383(gl_TessLevelOuter) BuiltIn TessLevelOuter - MemberDecorate 487(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 487(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 487(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 487(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 487(gl_PerVertex) Block - Decorate 512(outNormal) Location 0 - Decorate 519(inNormal) Location 0 - Decorate 533(outUV) Location 1 + Name 446 "param" + Name 490 "gl_PerVertex" + MemberName 490(gl_PerVertex) 0 "gl_Position" + MemberName 490(gl_PerVertex) 1 "gl_PointSize" + MemberName 490(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 490(gl_PerVertex) 3 "gl_CullDistance" + Name 501 "gl_out" + Name 515 "outNormal" + Name 522 "inNormal" + Name 536 "outUV" + Decorate 93 ArrayStride 16 + MemberDecorate 97(UBO) 0 ColMajor + MemberDecorate 97(UBO) 0 Offset 0 + MemberDecorate 97(UBO) 0 MatrixStride 16 + MemberDecorate 97(UBO) 1 ColMajor + MemberDecorate 97(UBO) 1 Offset 64 + MemberDecorate 97(UBO) 1 MatrixStride 16 + MemberDecorate 97(UBO) 2 Offset 128 + MemberDecorate 97(UBO) 3 Offset 144 + MemberDecorate 97(UBO) 4 Offset 240 + MemberDecorate 97(UBO) 5 Offset 244 + MemberDecorate 97(UBO) 6 Offset 248 + MemberDecorate 97(UBO) 7 Offset 256 + Decorate 97(UBO) Block + Decorate 120(ubo) DescriptorSet 0 + Decorate 120(ubo) Binding 0 + MemberDecorate 236(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 236(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 236(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 236(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 236(gl_PerVertex) Block + Decorate 256(gl_InvocationID) BuiltIn InvocationId + Decorate 275(samplerHeight) DescriptorSet 0 + Decorate 275(samplerHeight) Binding 1 + Decorate 282(inUV) Location 1 + Decorate 373(gl_TessLevelInner) Patch + Decorate 373(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 386(gl_TessLevelOuter) Patch + Decorate 386(gl_TessLevelOuter) BuiltIn TessLevelOuter + MemberDecorate 490(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 490(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 490(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 490(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 490(gl_PerVertex) Block + Decorate 515(outNormal) Location 0 + Decorate 522(inNormal) Location 0 + Decorate 536(outUV) Location 1 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -156,558 +156,561 @@ spv.debuginfo.glsl.tesc 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 24: TypeFloat 32 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 25 10 13 12 - 27: TypeVector 24(float) 4 - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 21 - 29: TypePointer Function 27(fvec4) - 30: TypeFunction 24(float) 29(ptr) 29(ptr) - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 26 28 28 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 31 17 12 12 19 35 13 12 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 28 17 12 12 36 21 20 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 28 17 12 12 36 21 22 - 47: TypeBool - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 50: TypeFunction 47(bool) - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 49 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 53 51 17 12 12 19 53 13 12 - 59: 7(int) Constant 54 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 62 28 17 59 12 36 21 - 64: 24(float) Constant 1056964608 - 70: 7(int) Constant 56 - 71: TypePointer Function 24(float) - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 74 26 17 70 12 36 21 - 79: 24(float) Constant 1073741824 - 82: 7(int) Constant 59 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 28 17 82 12 36 21 - 87: TypeMatrix 27(fvec4) 4 - 89: 47(bool) ConstantTrue - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 28 21 89 - 90: TypeArray 27(fvec4) 11 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 28 11 - 92: TypeVector 24(float) 2 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 22 - 94(UBO): TypeStruct 87 87 27(fvec4) 90 24(float) 24(float) 92(fvec2) 24(float) - 97: 7(int) Constant 30 - 98: 7(int) Constant 7 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 88 17 97 98 12 12 13 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 88 17 97 98 12 12 13 - 102: 7(int) Constant 31 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 28 17 102 98 12 12 13 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 91 17 10 98 12 12 13 - 107: 7(int) Constant 36 - 108: 7(int) Constant 8 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 26 17 107 108 12 12 13 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 26 17 107 108 12 12 13 - 112: 7(int) Constant 35 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 93 17 112 98 12 12 13 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 26 17 107 108 12 12 13 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 115 20 17 82 12 19 115 12 13 95 99 100 103 105 109 110 113 - 116: TypePointer Uniform 94(UBO) - 117(ubo): 116(ptr) Variable Uniform - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 119 114 17 82 12 19 119 117(ubo) 108 - 120: TypeInt 32 1 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 121 10 21 12 - 123: 120(int) Constant 1 - 124: TypePointer Uniform 87 - 130: 7(int) Constant 62 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 28 17 130 12 36 21 - 135: 120(int) Constant 0 - 140: TypeVector 24(float) 3 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 26 13 - 142: 24(float) Constant 0 - 143: 140(fvec3) ConstantComposite 142 142 142 - 151: 7(int) Constant 63 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 154 28 17 151 12 36 21 - 167: 7(int) Constant 66 - 174: 7(int) Constant 67 - 181: 7(int) Constant 70 - 182: 120(int) Constant 6 - 183: TypePointer Uniform 92(fvec2) - 194: 7(int) Constant 71 - 205: 7(int) Constant 76 - 209: 120(int) Constant 7 - 210: TypePointer Uniform 24(float) - 214: 120(int) Constant 5 - 218: 24(float) Constant 1065353216 - 219: 24(float) Constant 1115684864 - 226: 7(int) Constant 85 - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 28 17 226 12 54 21 - 231: TypeArray 24(float) 20 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 20 -233(gl_PerVertex): TypeStruct 27(fvec4) 24(float) 231 231 - 236: 7(int) Constant 1756 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 28 17 20 236 12 12 13 - 239: 7(int) Constant 1774 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 26 17 20 239 12 12 13 - 242: 7(int) Constant 1817 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 242 12 12 13 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 242 12 12 13 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 245 20 17 226 12 19 245 12 13 234 237 240 243 - 246: TypeArray 233(gl_PerVertex) 10 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 244 10 - 248: TypePointer Input 246 - 249(gl_in): 248(ptr) Variable Input - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 251 247 17 226 12 19 251 249(gl_in) 108 - 252: TypePointer Input 120(int) -253(gl_InvocationID): 252(ptr) Variable Input - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 255 122 17 226 12 19 255 253(gl_InvocationID) 108 - 257: TypePointer Input 27(fvec4) - 261: 7(int) Constant 86 - 262: TypeImage 24(float) 2D sampled format:Unknown - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 264 12 17 261 12 19 265 266 13 - 267: TypeSampledImage 262 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 269 12 17 261 12 19 270 266 13 - 271: TypePointer UniformConstant 267 -272(samplerHeight): 271(ptr) Variable UniformConstant - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 274 268 17 261 12 19 274 272(samplerHeight) 108 - 276: TypeArray 92(fvec2) 10 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 93 10 - 278: TypePointer Input 276 - 279(inUV): 278(ptr) Variable Input - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 281 277 17 261 12 19 281 279(inUV) 108 - 282: TypePointer Input 92(fvec2) - 287: 120(int) Constant 4 - 296: 7(int) Constant 89 - 297: TypePointer Function 120(int) - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 300 122 17 296 12 54 21 - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 316: 7(int) Constant 90 - 318: 120(int) Constant 3 - 320: TypePointer Uniform 27(fvec4) - 324: 24(float) Constant 1090519040 - 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 331: 47(bool) ConstantFalse - 334: 7(int) Constant 92 - 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 343: 7(int) Constant 95 - 349: 7(int) Constant 100 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 357: 7(int) Constant 102 - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 366: 7(int) Constant 104 - 367: TypeArray 24(float) 22 - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 22 - 369: TypePointer Output 367 -370(gl_TessLevelInner): 369(ptr) Variable Output - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 372 368 17 366 12 19 372 370(gl_TessLevelInner) 108 - 373: TypePointer Output 24(float) - 376: 7(int) Constant 105 - 379: 7(int) Constant 106 - 380: TypeArray 24(float) 21 - 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 26 21 - 382: TypePointer Output 380 -383(gl_TessLevelOuter): 382(ptr) Variable Output - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 385 381 17 379 12 19 385 383(gl_TessLevelOuter) 108 - 388: 7(int) Constant 107 - 391: 7(int) Constant 108 - 392: 120(int) Constant 2 - 395: 7(int) Constant 109 - 400: 7(int) Constant 113 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 22 12 - 409: 7(int) Constant 115 - 419: 7(int) Constant 116 - 429: 7(int) Constant 117 - 439: 7(int) Constant 118 - 449: 7(int) Constant 119 - 457: 7(int) Constant 120 - 467: 7(int) Constant 126 - 470: 7(int) Constant 127 - 473: 7(int) Constant 128 - 476: 7(int) Constant 129 - 479: 7(int) Constant 130 - 482: 7(int) Constant 131 - 486: 7(int) Constant 137 -487(gl_PerVertex): TypeStruct 27(fvec4) 24(float) 231 231 - 489: 7(int) Constant 110 - 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 28 17 20 489 12 12 13 - 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 26 17 20 473 12 12 13 - 492: 7(int) Constant 171 - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 492 12 12 13 - 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 232 17 20 492 12 12 13 - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 245 20 17 486 12 19 245 12 13 488 490 491 493 - 495: TypeArray 487(gl_PerVertex) 21 - 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 494 21 - 497: TypePointer Output 495 - 498(gl_out): 497(ptr) Variable Output - 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 500 496 17 486 12 19 500 498(gl_out) 108 - 505: TypePointer Output 27(fvec4) - 508: 7(int) Constant 138 - 509: TypeArray 140(fvec3) 21 - 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 141 21 - 511: TypePointer Output 509 - 512(outNormal): 511(ptr) Variable Output - 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 514 510 17 508 12 19 514 512(outNormal) 108 - 516: TypeArray 140(fvec3) 10 - 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 141 10 - 518: TypePointer Input 516 - 519(inNormal): 518(ptr) Variable Input - 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 521 517 17 508 12 19 521 519(inNormal) 108 - 523: TypePointer Input 140(fvec3) - 526: TypePointer Output 140(fvec3) - 529: 7(int) Constant 139 - 530: TypeArray 92(fvec2) 21 - 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 93 21 - 532: TypePointer Output 530 - 533(outUV): 532(ptr) Variable Output - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 535 531 17 529 12 19 535 533(outUV) 108 - 540: TypePointer Output 92(fvec2) + 16: TypeFloat 32 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 19: TypeVector 16(float) 4 + 20: 7(int) Constant 4 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 + 22: TypePointer Function 19(fvec4) + 23: TypeFunction 16(float) 22(ptr) 22(ptr) + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 21 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 32 + 33: 7(int) Constant 51 + 35: 7(int) Constant 1 + 36: 7(int) Constant 2 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 35 20 31 36 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 29 24 31 33 12 34 29 13 33 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 21 31 33 12 30 20 35 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 21 31 33 12 30 20 36 + 46: TypeBool + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 49: TypeFunction 46(bool) + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 48 + 55: 7(int) Constant 81 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 53 50 31 55 12 34 53 13 55 + 58: 7(int) Constant 98 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 56 6 31 58 12 34 56 13 58 + 62: 7(int) Constant 54 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 21 31 62 12 30 20 + 67: 16(float) Constant 1056964608 + 73: 7(int) Constant 56 + 74: TypePointer Function 16(float) + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 18 31 73 12 30 20 + 82: 16(float) Constant 1073741824 + 85: 7(int) Constant 59 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 21 31 85 12 30 20 + 90: TypeMatrix 19(fvec4) 4 + 92: 46(bool) ConstantTrue + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 92 + 93: TypeArray 19(fvec4) 11 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 21 11 + 95: TypeVector 16(float) 2 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 36 + 97(UBO): TypeStruct 90 90 19(fvec4) 93 16(float) 16(float) 95(fvec2) 16(float) + 100: 7(int) Constant 30 + 101: 7(int) Constant 7 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 91 31 100 101 12 12 13 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 91 31 100 101 12 12 13 + 105: 7(int) Constant 31 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 21 31 105 101 12 12 13 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 94 31 10 101 12 12 13 + 110: 7(int) Constant 36 + 111: 7(int) Constant 8 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 18 31 110 111 12 12 13 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 18 31 110 111 12 12 13 + 115: 7(int) Constant 35 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 114 96 31 115 101 12 12 13 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 18 31 110 111 12 12 13 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 118 35 31 85 12 34 118 12 13 98 102 103 106 108 112 113 116 + 119: TypePointer Uniform 97(UBO) + 120(ubo): 119(ptr) Variable Uniform + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 122 117 31 85 12 34 122 120(ubo) 111 + 123: TypeInt 32 1 + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 124 10 20 12 + 126: 123(int) Constant 1 + 127: TypePointer Uniform 90 + 133: 7(int) Constant 62 + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 136 21 31 133 12 30 20 + 138: 123(int) Constant 0 + 143: TypeVector 16(float) 3 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 145: 16(float) Constant 0 + 146: 143(fvec3) ConstantComposite 145 145 145 + 154: 7(int) Constant 63 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 21 31 154 12 30 20 + 170: 7(int) Constant 66 + 177: 7(int) Constant 67 + 184: 7(int) Constant 70 + 185: 123(int) Constant 6 + 186: TypePointer Uniform 95(fvec2) + 197: 7(int) Constant 71 + 208: 7(int) Constant 76 + 212: 123(int) Constant 7 + 213: TypePointer Uniform 16(float) + 217: 123(int) Constant 5 + 221: 16(float) Constant 1065353216 + 222: 16(float) Constant 1115684864 + 229: 7(int) Constant 85 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 232 21 31 229 12 54 20 + 234: TypeArray 16(float) 35 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 35 +236(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 234 234 + 239: 7(int) Constant 1756 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 21 31 35 239 12 12 13 + 242: 7(int) Constant 1774 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 18 31 35 242 12 12 13 + 245: 7(int) Constant 1817 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 245 12 12 13 + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 245 12 12 13 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 248 35 31 229 12 34 248 12 13 237 240 243 246 + 249: TypeArray 236(gl_PerVertex) 10 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 247 10 + 251: TypePointer Input 249 + 252(gl_in): 251(ptr) Variable Input + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 254 250 31 229 12 34 254 252(gl_in) 111 + 255: TypePointer Input 123(int) +256(gl_InvocationID): 255(ptr) Variable Input + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 125 31 229 12 34 258 256(gl_InvocationID) 111 + 260: TypePointer Input 19(fvec4) + 264: 7(int) Constant 86 + 265: TypeImage 16(float) 2D sampled format:Unknown + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 267 12 31 264 12 34 268 269 13 + 270: TypeSampledImage 265 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 272 12 31 264 12 34 273 269 13 + 274: TypePointer UniformConstant 270 +275(samplerHeight): 274(ptr) Variable UniformConstant + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 277 271 31 264 12 34 277 275(samplerHeight) 111 + 279: TypeArray 95(fvec2) 10 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 96 10 + 281: TypePointer Input 279 + 282(inUV): 281(ptr) Variable Input + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 284 280 31 264 12 34 284 282(inUV) 111 + 285: TypePointer Input 95(fvec2) + 290: 123(int) Constant 4 + 299: 7(int) Constant 89 + 300: TypePointer Function 123(int) + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 125 31 299 12 54 20 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 319: 7(int) Constant 90 + 321: 123(int) Constant 3 + 323: TypePointer Uniform 19(fvec4) + 327: 16(float) Constant 1090519040 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 334: 46(bool) ConstantFalse + 337: 7(int) Constant 92 + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 346: 7(int) Constant 95 + 352: 7(int) Constant 100 + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 360: 7(int) Constant 102 + 362: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 369: 7(int) Constant 104 + 370: TypeArray 16(float) 36 + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 36 + 372: TypePointer Output 370 +373(gl_TessLevelInner): 372(ptr) Variable Output + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 375 371 31 369 12 34 375 373(gl_TessLevelInner) 111 + 376: TypePointer Output 16(float) + 379: 7(int) Constant 105 + 382: 7(int) Constant 106 + 383: TypeArray 16(float) 20 + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 + 385: TypePointer Output 383 +386(gl_TessLevelOuter): 385(ptr) Variable Output + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 388 384 31 382 12 34 388 386(gl_TessLevelOuter) 111 + 391: 7(int) Constant 107 + 394: 7(int) Constant 108 + 395: 123(int) Constant 2 + 398: 7(int) Constant 109 + 403: 7(int) Constant 113 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 + 412: 7(int) Constant 115 + 422: 7(int) Constant 116 + 432: 7(int) Constant 117 + 442: 7(int) Constant 118 + 452: 7(int) Constant 119 + 460: 7(int) Constant 120 + 470: 7(int) Constant 126 + 473: 7(int) Constant 127 + 476: 7(int) Constant 128 + 479: 7(int) Constant 129 + 482: 7(int) Constant 130 + 485: 7(int) Constant 131 + 489: 7(int) Constant 137 +490(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 234 234 + 492: 7(int) Constant 110 + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 21 31 35 492 12 12 13 + 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 18 31 35 476 12 12 13 + 495: 7(int) Constant 171 + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 495 12 12 13 + 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 495 12 12 13 + 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 248 35 31 489 12 34 248 12 13 491 493 494 496 + 498: TypeArray 490(gl_PerVertex) 20 + 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 497 20 + 500: TypePointer Output 498 + 501(gl_out): 500(ptr) Variable Output + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 503 499 31 489 12 34 503 501(gl_out) 111 + 508: TypePointer Output 19(fvec4) + 511: 7(int) Constant 138 + 512: TypeArray 143(fvec3) 20 + 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 20 + 514: TypePointer Output 512 + 515(outNormal): 514(ptr) Variable Output + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 517 513 31 511 12 34 517 515(outNormal) 111 + 519: TypeArray 143(fvec3) 10 + 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 10 + 521: TypePointer Input 519 + 522(inNormal): 521(ptr) Variable Input + 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 524 520 31 511 12 34 524 522(inNormal) 111 + 526: TypePointer Input 143(fvec3) + 529: TypePointer Output 143(fvec3) + 532: 7(int) Constant 139 + 533: TypeArray 95(fvec2) 20 + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 96 20 + 535: TypePointer Output 533 + 536(outUV): 535(ptr) Variable Output + 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 538 534 31 532 12 34 538 536(outUV) 111 + 543: TypePointer Output 95(fvec2) Line 1 98 11 14(main): 4 Function None 5 - 23: Label - 410(param): 29(ptr) Variable Function - 413(param): 29(ptr) Variable Function - 420(param): 29(ptr) Variable Function - 423(param): 29(ptr) Variable Function - 430(param): 29(ptr) Variable Function - 433(param): 29(ptr) Variable Function - 440(param): 29(ptr) Variable Function - 443(param): 29(ptr) Variable Function - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 349 349 12 12 - 350: 120(int) Load 253(gl_InvocationID) - 352: 47(bool) IEqual 350 135 - SelectionMerge 354 None - BranchConditional 352 353 354 - 353: Label - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 357 357 12 12 - 358: 47(bool) FunctionCall 52(frustumCheck() - 361: 47(bool) LogicalNot 358 - SelectionMerge 363 None - BranchConditional 361 362 397 - 362: Label - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 366 366 12 12 - 374: 373(ptr) AccessChain 370(gl_TessLevelInner) 135 - Store 374 142 - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 376 376 12 12 - 377: 373(ptr) AccessChain 370(gl_TessLevelInner) 123 - Store 377 142 - 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 379 379 12 12 - 386: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 - Store 386 142 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 388 388 12 12 - 389: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 - Store 389 142 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 391 391 12 12 - 393: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 - Store 393 142 - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 395 395 12 12 - 396: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 - Store 396 142 - Branch 363 - 397: Label - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 400 400 12 12 - 401: 210(ptr) AccessChain 117(ubo) 214 - 402: 24(float) Load 401 - 404: 47(bool) FOrdGreaterThan 402 142 - SelectionMerge 406 None - BranchConditional 404 405 464 - 405: Label - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 409 409 12 12 - 411: 257(ptr) AccessChain 249(gl_in) 318 135 - 412: 27(fvec4) Load 411 - Store 410(param) 412 - 414: 257(ptr) AccessChain 249(gl_in) 135 135 - 415: 27(fvec4) Load 414 + 15: Label + 413(param): 22(ptr) Variable Function + 416(param): 22(ptr) Variable Function + 423(param): 22(ptr) Variable Function + 426(param): 22(ptr) Variable Function + 433(param): 22(ptr) Variable Function + 436(param): 22(ptr) Variable Function + 443(param): 22(ptr) Variable Function + 446(param): 22(ptr) Variable Function + 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 14(main) + 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 352 352 12 12 + 353: 123(int) Load 256(gl_InvocationID) + 355: 46(bool) IEqual 353 138 + SelectionMerge 357 None + BranchConditional 355 356 357 + 356: Label + 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 360 360 12 12 + 361: 46(bool) FunctionCall 51(frustumCheck() + 364: 46(bool) LogicalNot 361 + SelectionMerge 366 None + BranchConditional 364 365 400 + 365: Label + 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 369 369 12 12 + 377: 376(ptr) AccessChain 373(gl_TessLevelInner) 138 + Store 377 145 + 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 379 379 12 12 + 380: 376(ptr) AccessChain 373(gl_TessLevelInner) 126 + Store 380 145 + 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 382 382 12 12 + 389: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 + Store 389 145 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 391 391 12 12 + 392: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 + Store 392 145 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 394 394 12 12 + 396: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 + Store 396 145 + 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 398 398 12 12 + 399: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 + Store 399 145 + Branch 366 + 400: Label + 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 403 403 12 12 + 404: 213(ptr) AccessChain 120(ubo) 217 + 405: 16(float) Load 404 + 407: 46(bool) FOrdGreaterThan 405 145 + SelectionMerge 409 None + BranchConditional 407 408 467 + 408: Label + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 412 412 12 12 + 414: 260(ptr) AccessChain 252(gl_in) 321 138 + 415: 19(fvec4) Load 414 Store 413(param) 415 - 416: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 410(param) 413(param) - 417: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 - Store 417 416 - 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 419 419 12 12 - 421: 257(ptr) AccessChain 249(gl_in) 135 135 - 422: 27(fvec4) Load 421 - Store 420(param) 422 - 424: 257(ptr) AccessChain 249(gl_in) 123 135 - 425: 27(fvec4) Load 424 + 417: 260(ptr) AccessChain 252(gl_in) 138 138 + 418: 19(fvec4) Load 417 + Store 416(param) 418 + 419: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 413(param) 416(param) + 420: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 + Store 420 419 + 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 422 422 12 12 + 424: 260(ptr) AccessChain 252(gl_in) 138 138 + 425: 19(fvec4) Load 424 Store 423(param) 425 - 426: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 420(param) 423(param) - 427: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 - Store 427 426 - 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 429 429 12 12 - 431: 257(ptr) AccessChain 249(gl_in) 123 135 - 432: 27(fvec4) Load 431 - Store 430(param) 432 - 434: 257(ptr) AccessChain 249(gl_in) 392 135 - 435: 27(fvec4) Load 434 + 427: 260(ptr) AccessChain 252(gl_in) 126 138 + 428: 19(fvec4) Load 427 + Store 426(param) 428 + 429: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 423(param) 426(param) + 430: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 + Store 430 429 + 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 432 432 12 12 + 434: 260(ptr) AccessChain 252(gl_in) 126 138 + 435: 19(fvec4) Load 434 Store 433(param) 435 - 436: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 430(param) 433(param) - 437: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 - Store 437 436 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 439 439 12 12 - 441: 257(ptr) AccessChain 249(gl_in) 392 135 - 442: 27(fvec4) Load 441 - Store 440(param) 442 - 444: 257(ptr) AccessChain 249(gl_in) 318 135 - 445: 27(fvec4) Load 444 + 437: 260(ptr) AccessChain 252(gl_in) 395 138 + 438: 19(fvec4) Load 437 + Store 436(param) 438 + 439: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 433(param) 436(param) + 440: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 + Store 440 439 + 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 442 442 12 12 + 444: 260(ptr) AccessChain 252(gl_in) 395 138 + 445: 19(fvec4) Load 444 Store 443(param) 445 - 446: 24(float) FunctionCall 34(screenSpaceTessFactor(vf4;vf4;) 440(param) 443(param) - 447: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 - Store 447 446 - 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 449 449 12 12 - 450: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 - 451: 24(float) Load 450 - 452: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 - 453: 24(float) Load 452 - 454: 24(float) ExtInst 3(GLSL.std.450) 46(FMix) 451 453 64 - 455: 373(ptr) AccessChain 370(gl_TessLevelInner) 135 - Store 455 454 - 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 457 457 12 12 - 458: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 - 459: 24(float) Load 458 - 460: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 - 461: 24(float) Load 460 - 462: 24(float) ExtInst 3(GLSL.std.450) 46(FMix) 459 461 64 - 463: 373(ptr) AccessChain 370(gl_TessLevelInner) 123 - Store 463 462 - Branch 406 - 464: Label - 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 466: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 467 467 12 12 - 468: 373(ptr) AccessChain 370(gl_TessLevelInner) 135 - Store 468 218 - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 470 470 12 12 - 471: 373(ptr) AccessChain 370(gl_TessLevelInner) 123 - Store 471 218 - 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 473 473 12 12 - 474: 373(ptr) AccessChain 383(gl_TessLevelOuter) 135 - Store 474 218 - 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 476 476 12 12 - 477: 373(ptr) AccessChain 383(gl_TessLevelOuter) 123 - Store 477 218 - 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 479 479 12 12 - 480: 373(ptr) AccessChain 383(gl_TessLevelOuter) 392 - Store 480 218 - 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 482 482 12 12 - 483: 373(ptr) AccessChain 383(gl_TessLevelOuter) 318 - Store 483 218 - Branch 406 - 406: Label - Branch 363 - 363: Label - Branch 354 - 354: Label - 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 486 486 12 12 - 501: 120(int) Load 253(gl_InvocationID) - 502: 120(int) Load 253(gl_InvocationID) - 503: 257(ptr) AccessChain 249(gl_in) 502 135 - 504: 27(fvec4) Load 503 - 506: 505(ptr) AccessChain 498(gl_out) 501 135 - Store 506 504 - 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 508 508 12 12 - 515: 120(int) Load 253(gl_InvocationID) - 522: 120(int) Load 253(gl_InvocationID) - 524: 523(ptr) AccessChain 519(inNormal) 522 - 525: 140(fvec3) Load 524 - 527: 526(ptr) AccessChain 512(outNormal) 515 - Store 527 525 - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 529 529 12 12 - 536: 120(int) Load 253(gl_InvocationID) - 537: 120(int) Load 253(gl_InvocationID) - 538: 282(ptr) AccessChain 279(inUV) 537 - 539: 92(fvec2) Load 538 - 541: 540(ptr) AccessChain 533(outUV) 536 - Store 541 539 + 447: 260(ptr) AccessChain 252(gl_in) 321 138 + 448: 19(fvec4) Load 447 + Store 446(param) 448 + 449: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 443(param) 446(param) + 450: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 + Store 450 449 + 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 452 452 12 12 + 453: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 + 454: 16(float) Load 453 + 455: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 + 456: 16(float) Load 455 + 457: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 454 456 67 + 458: 376(ptr) AccessChain 373(gl_TessLevelInner) 138 + Store 458 457 + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 460 460 12 12 + 461: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 + 462: 16(float) Load 461 + 463: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 + 464: 16(float) Load 463 + 465: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 462 464 67 + 466: 376(ptr) AccessChain 373(gl_TessLevelInner) 126 + Store 466 465 + Branch 409 + 467: Label + 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 470 470 12 12 + 471: 376(ptr) AccessChain 373(gl_TessLevelInner) 138 + Store 471 221 + 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 473 473 12 12 + 474: 376(ptr) AccessChain 373(gl_TessLevelInner) 126 + Store 474 221 + 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 476 476 12 12 + 477: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 + Store 477 221 + 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 479 479 12 12 + 480: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 + Store 480 221 + 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 482 482 12 12 + 483: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 + Store 483 221 + 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 485 485 12 12 + 486: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 + Store 486 221 + Branch 409 + 409: Label + Branch 366 + 366: Label + Branch 357 + 357: Label + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 489 489 12 12 + 504: 123(int) Load 256(gl_InvocationID) + 505: 123(int) Load 256(gl_InvocationID) + 506: 260(ptr) AccessChain 252(gl_in) 505 138 + 507: 19(fvec4) Load 506 + 509: 508(ptr) AccessChain 501(gl_out) 504 138 + Store 509 507 + 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 511 511 12 12 + 518: 123(int) Load 256(gl_InvocationID) + 525: 123(int) Load 256(gl_InvocationID) + 527: 526(ptr) AccessChain 522(inNormal) 525 + 528: 143(fvec3) Load 527 + 530: 529(ptr) AccessChain 515(outNormal) 518 + Store 530 528 + 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 532 532 12 12 + 539: 123(int) Load 256(gl_InvocationID) + 540: 123(int) Load 256(gl_InvocationID) + 541: 285(ptr) AccessChain 282(inUV) 540 + 542: 95(fvec2) Load 541 + 544: 543(ptr) AccessChain 536(outUV) 539 + Store 544 542 Return FunctionEnd Line 1 51 45 -34(screenSpaceTessFactor(vf4;vf4;): 24(float) Function None 30 - 32(p0): 29(ptr) FunctionParameter - 33(p1): 29(ptr) FunctionParameter - 37: Label - 60(midPoint): 29(ptr) Variable Function - 72(radius): 71(ptr) Variable Function - 83(v0): 29(ptr) Variable Function - 131(clip0): 29(ptr) Variable Function - 152(clip1): 29(ptr) Variable Function - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 32(p0) 43 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 33(p1) 43 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 34(screenSpaceTessFactor(vf4;vf4;) - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 59 59 12 12 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 61 60(midPoint) 43 - 65: 27(fvec4) Load 32(p0) - 66: 27(fvec4) Load 33(p1) - 67: 27(fvec4) FAdd 65 66 - 68: 27(fvec4) VectorTimesScalar 67 64 - Store 60(midPoint) 68 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 70 70 12 12 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 73 72(radius) 43 - 76: 27(fvec4) Load 32(p0) - 77: 27(fvec4) Load 33(p1) - 78: 24(float) ExtInst 3(GLSL.std.450) 67(Distance) 76 77 - 80: 24(float) FDiv 78 79 - Store 72(radius) 80 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 82 82 12 12 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 83(v0) 43 - 125: 124(ptr) AccessChain 117(ubo) 123 - 126: 87 Load 125 - 127: 27(fvec4) Load 60(midPoint) - 128: 27(fvec4) MatrixTimesVector 126 127 - Store 83(v0) 128 - 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 130 130 12 12 - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(clip0) 43 - 136: 124(ptr) AccessChain 117(ubo) 135 - 137: 87 Load 136 - 138: 27(fvec4) Load 83(v0) - 139: 24(float) Load 72(radius) - 144: 24(float) CompositeExtract 143 0 - 145: 24(float) CompositeExtract 143 1 - 146: 24(float) CompositeExtract 143 2 - 147: 27(fvec4) CompositeConstruct 139 144 145 146 - 148: 27(fvec4) FSub 138 147 - 149: 27(fvec4) MatrixTimesVector 137 148 - Store 131(clip0) 149 - 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 151 151 12 12 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 153 152(clip1) 43 - 156: 124(ptr) AccessChain 117(ubo) 135 - 157: 87 Load 156 - 158: 27(fvec4) Load 83(v0) - 159: 24(float) Load 72(radius) - 160: 24(float) CompositeExtract 143 0 - 161: 24(float) CompositeExtract 143 1 - 162: 24(float) CompositeExtract 143 2 - 163: 27(fvec4) CompositeConstruct 159 160 161 162 - 164: 27(fvec4) FAdd 158 163 - 165: 27(fvec4) MatrixTimesVector 157 164 - Store 152(clip1) 165 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 167 167 12 12 - 168: 71(ptr) AccessChain 131(clip0) 13 - 169: 24(float) Load 168 - 170: 27(fvec4) Load 131(clip0) - 171: 27(fvec4) CompositeConstruct 169 169 169 169 - 172: 27(fvec4) FDiv 170 171 - Store 131(clip0) 172 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 174 174 12 12 - 175: 71(ptr) AccessChain 152(clip1) 13 - 176: 24(float) Load 175 - 177: 27(fvec4) Load 152(clip1) - 178: 27(fvec4) CompositeConstruct 176 176 176 176 - 179: 27(fvec4) FDiv 177 178 - Store 152(clip1) 179 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 181 181 12 12 - 184: 183(ptr) AccessChain 117(ubo) 182 - 185: 92(fvec2) Load 184 - 186: 27(fvec4) Load 131(clip0) - 187: 92(fvec2) VectorShuffle 186 186 0 1 - 188: 92(fvec2) FMul 187 185 - 189: 71(ptr) AccessChain 131(clip0) 12 - 190: 24(float) CompositeExtract 188 0 - Store 189 190 - 191: 71(ptr) AccessChain 131(clip0) 20 - 192: 24(float) CompositeExtract 188 1 - Store 191 192 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 194 194 12 12 - 195: 183(ptr) AccessChain 117(ubo) 182 - 196: 92(fvec2) Load 195 - 197: 27(fvec4) Load 152(clip1) - 198: 92(fvec2) VectorShuffle 197 197 0 1 - 199: 92(fvec2) FMul 198 196 - 200: 71(ptr) AccessChain 152(clip1) 12 - 201: 24(float) CompositeExtract 199 0 - Store 200 201 - 202: 71(ptr) AccessChain 152(clip1) 20 - 203: 24(float) CompositeExtract 199 1 - Store 202 203 - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 205 205 12 12 - 206: 27(fvec4) Load 131(clip0) - 207: 27(fvec4) Load 152(clip1) - 208: 24(float) ExtInst 3(GLSL.std.450) 67(Distance) 206 207 - 211: 210(ptr) AccessChain 117(ubo) 209 - 212: 24(float) Load 211 - 213: 24(float) FDiv 208 212 - 215: 210(ptr) AccessChain 117(ubo) 214 - 216: 24(float) Load 215 - 217: 24(float) FMul 213 216 - 220: 24(float) ExtInst 3(GLSL.std.450) 43(FClamp) 217 218 219 - ReturnValue 220 +27(screenSpaceTessFactor(vf4;vf4;): 16(float) Function None 23 + 25(p0): 22(ptr) FunctionParameter + 26(p1): 22(ptr) FunctionParameter + 28: Label + 63(midPoint): 22(ptr) Variable Function + 75(radius): 74(ptr) Variable Function + 86(v0): 22(ptr) Variable Function + 134(clip0): 22(ptr) Variable Function + 155(clip1): 22(ptr) Variable Function + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 33 33 12 12 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 25(p0) 42 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 26(p1) 42 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 30 27(screenSpaceTessFactor(vf4;vf4;) + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 62 62 12 12 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 63(midPoint) 42 + 68: 19(fvec4) Load 25(p0) + 69: 19(fvec4) Load 26(p1) + 70: 19(fvec4) FAdd 68 69 + 71: 19(fvec4) VectorTimesScalar 70 67 + Store 63(midPoint) 71 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 73 73 12 12 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(radius) 42 + 79: 19(fvec4) Load 25(p0) + 80: 19(fvec4) Load 26(p1) + 81: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 79 80 + 83: 16(float) FDiv 81 82 + Store 75(radius) 83 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 85 85 12 12 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 86(v0) 42 + 128: 127(ptr) AccessChain 120(ubo) 126 + 129: 90 Load 128 + 130: 19(fvec4) Load 63(midPoint) + 131: 19(fvec4) MatrixTimesVector 129 130 + Store 86(v0) 131 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 133 133 12 12 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 135 134(clip0) 42 + 139: 127(ptr) AccessChain 120(ubo) 138 + 140: 90 Load 139 + 141: 19(fvec4) Load 86(v0) + 142: 16(float) Load 75(radius) + 147: 16(float) CompositeExtract 146 0 + 148: 16(float) CompositeExtract 146 1 + 149: 16(float) CompositeExtract 146 2 + 150: 19(fvec4) CompositeConstruct 142 147 148 149 + 151: 19(fvec4) FSub 141 150 + 152: 19(fvec4) MatrixTimesVector 140 151 + Store 134(clip0) 152 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 154 154 12 12 + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 156 155(clip1) 42 + 159: 127(ptr) AccessChain 120(ubo) 138 + 160: 90 Load 159 + 161: 19(fvec4) Load 86(v0) + 162: 16(float) Load 75(radius) + 163: 16(float) CompositeExtract 146 0 + 164: 16(float) CompositeExtract 146 1 + 165: 16(float) CompositeExtract 146 2 + 166: 19(fvec4) CompositeConstruct 162 163 164 165 + 167: 19(fvec4) FAdd 161 166 + 168: 19(fvec4) MatrixTimesVector 160 167 + Store 155(clip1) 168 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 170 170 12 12 + 171: 74(ptr) AccessChain 134(clip0) 13 + 172: 16(float) Load 171 + 173: 19(fvec4) Load 134(clip0) + 174: 19(fvec4) CompositeConstruct 172 172 172 172 + 175: 19(fvec4) FDiv 173 174 + Store 134(clip0) 175 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 177 177 12 12 + 178: 74(ptr) AccessChain 155(clip1) 13 + 179: 16(float) Load 178 + 180: 19(fvec4) Load 155(clip1) + 181: 19(fvec4) CompositeConstruct 179 179 179 179 + 182: 19(fvec4) FDiv 180 181 + Store 155(clip1) 182 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 184 184 12 12 + 187: 186(ptr) AccessChain 120(ubo) 185 + 188: 95(fvec2) Load 187 + 189: 19(fvec4) Load 134(clip0) + 190: 95(fvec2) VectorShuffle 189 189 0 1 + 191: 95(fvec2) FMul 190 188 + 192: 74(ptr) AccessChain 134(clip0) 12 + 193: 16(float) CompositeExtract 191 0 + Store 192 193 + 194: 74(ptr) AccessChain 134(clip0) 35 + 195: 16(float) CompositeExtract 191 1 + Store 194 195 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 197 197 12 12 + 198: 186(ptr) AccessChain 120(ubo) 185 + 199: 95(fvec2) Load 198 + 200: 19(fvec4) Load 155(clip1) + 201: 95(fvec2) VectorShuffle 200 200 0 1 + 202: 95(fvec2) FMul 201 199 + 203: 74(ptr) AccessChain 155(clip1) 12 + 204: 16(float) CompositeExtract 202 0 + Store 203 204 + 205: 74(ptr) AccessChain 155(clip1) 35 + 206: 16(float) CompositeExtract 202 1 + Store 205 206 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 208 208 12 12 + 209: 19(fvec4) Load 134(clip0) + 210: 19(fvec4) Load 155(clip1) + 211: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 209 210 + 214: 213(ptr) AccessChain 120(ubo) 212 + 215: 16(float) Load 214 + 216: 16(float) FDiv 211 215 + 218: 213(ptr) AccessChain 120(ubo) 217 + 219: 16(float) Load 218 + 220: 16(float) FMul 216 219 + 223: 16(float) ExtInst 3(GLSL.std.450) 43(FClamp) 220 221 222 + ReturnValue 223 FunctionEnd Line 1 81 19 -52(frustumCheck(): 47(bool) Function None 50 - 55: Label - 227(pos): 29(ptr) Variable Function - 298(i): 297(ptr) Variable Function - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 54 52(frustumCheck() - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 226 226 12 12 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(pos) 43 - 256: 120(int) Load 253(gl_InvocationID) - 258: 257(ptr) AccessChain 249(gl_in) 256 135 - 259: 27(fvec4) Load 258 - Store 227(pos) 259 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 261 261 12 12 - 275: 267 Load 272(samplerHeight) - 283: 282(ptr) AccessChain 279(inUV) 135 - 284: 92(fvec2) Load 283 - 285: 27(fvec4) ImageSampleExplicitLod 275 284 Lod 142 - 286: 24(float) CompositeExtract 285 0 - 288: 210(ptr) AccessChain 117(ubo) 287 - 289: 24(float) Load 288 - 290: 24(float) FMul 286 289 - 291: 71(ptr) AccessChain 227(pos) 20 - 292: 24(float) Load 291 - 293: 24(float) FSub 292 290 - 294: 71(ptr) AccessChain 227(pos) 20 - Store 294 293 - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 299 298(i) 43 - Store 298(i) 135 - Branch 302 - 302: Label - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 - LoopMerge 304 305 None - Branch 308 - 308: Label +51(frustumCheck(): 46(bool) Function None 49 + 52: Label + 230(pos): 22(ptr) Variable Function + 301(i): 300(ptr) Variable Function + 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 54 51(frustumCheck() + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 229 229 12 12 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 231 230(pos) 42 + 259: 123(int) Load 256(gl_InvocationID) + 261: 260(ptr) AccessChain 252(gl_in) 259 138 + 262: 19(fvec4) Load 261 + Store 230(pos) 262 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 264 264 12 12 + 278: 270 Load 275(samplerHeight) + 286: 285(ptr) AccessChain 282(inUV) 138 + 287: 95(fvec2) Load 286 + 288: 19(fvec4) ImageSampleExplicitLod 278 287 Lod 145 + 289: 16(float) CompositeExtract 288 0 + 291: 213(ptr) AccessChain 120(ubo) 290 + 292: 16(float) Load 291 + 293: 16(float) FMul 289 292 + 294: 74(ptr) AccessChain 230(pos) 35 + 295: 16(float) Load 294 + 296: 16(float) FSub 295 293 + 297: 74(ptr) AccessChain 230(pos) 35 + Store 297 296 + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 + 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(i) 42 + Store 301(i) 138 + Branch 305 + 305: Label 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 - 311: 120(int) Load 298(i) - 313: 47(bool) SLessThan 311 182 - BranchConditional 313 303 304 - 303: Label - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 316 316 12 12 - 317: 27(fvec4) Load 227(pos) - 319: 120(int) Load 298(i) - 321: 320(ptr) AccessChain 117(ubo) 318 319 - 322: 27(fvec4) Load 321 - 323: 24(float) Dot 317 322 - 325: 24(float) FAdd 323 324 - 327: 47(bool) FOrdLessThan 325 142 - SelectionMerge 329 None - BranchConditional 327 328 329 - 328: Label - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 334 334 12 12 - ReturnValue 331 - 329: Label + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 + LoopMerge 307 308 None + Branch 311 + 311: Label + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 + 314: 123(int) Load 301(i) + 316: 46(bool) SLessThan 314 185 + BranchConditional 316 306 307 + 306: Label + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 319 319 12 12 + 320: 19(fvec4) Load 230(pos) + 322: 123(int) Load 301(i) + 324: 323(ptr) AccessChain 120(ubo) 321 322 + 325: 19(fvec4) Load 324 + 326: 16(float) Dot 320 325 + 328: 16(float) FAdd 326 327 + 330: 46(bool) FOrdLessThan 328 145 + SelectionMerge 332 None + BranchConditional 330 331 332 + 331: Label + 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 337 337 12 12 + ReturnValue 334 + 332: Label + Branch 308 + 308: Label + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 + 341: 123(int) Load 301(i) + 342: 123(int) IAdd 341 126 + Store 301(i) 342 Branch 305 - 305: Label - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 296 296 12 12 - 338: 120(int) Load 298(i) - 339: 120(int) IAdd 338 123 - Store 298(i) 339 - Branch 302 - 304: Label - 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 343 343 12 12 - ReturnValue 89 + 307: Label + 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 346 346 12 12 + ReturnValue 92 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index fdb1ee9825..5f494598a0 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,21 +1,21 @@ spv.debuginfo.glsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 332 +// Id's are bound by 333 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 14 "main" 42 59 86 105 133 169 280 294 302 314 321 + EntryPoint TessellationEvaluation 14 "main" 43 60 87 106 134 170 281 295 303 315 322 ExecutionMode 14 Quads ExecutionMode 14 SpacingEqual ExecutionMode 14 VertexOrderCw 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 16: String "main" + 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -23,118 +23,118 @@ spv.debuginfo.glsl.tese // OpModuleProcessed entry-point main #line 1 " - 29: String "float" - 36: String "uv1" - 44: String "inUV" - 47: String "int" - 61: String "gl_TessCoord" - 71: String "uv2" - 88: String "outUV" - 100: String "n1" - 107: String "inNormal" - 120: String "n2" - 135: String "outNormal" - 149: String "pos1" - 155: String "gl_Position" - 158: String "gl_PointSize" - 161: String "gl_CullDistance" - 165: String "gl_PerVertex" - 171: String "gl_in" - 185: String "pos2" - 199: String "pos" - 211: String "type.2d.image" - 212: String "@type.2d.image" - 216: String "type.sampled.image" - 217: String "@type.sampled.image" - 221: String "displacementMap" - 235: String "modelview" - 240: String "lightPos" - 243: String "frustumPlanes" - 245: String "tessellatedEdgeSize" - 249: String "viewportDim" - 253: String "UBO" - 257: String "ubo" - 296: String "outViewVec" - 304: String "outLightVec" - 316: String "outWorldPos" - 323: String "outEyePos" + 30: String "float" + 37: String "uv1" + 45: String "inUV" + 48: String "int" + 62: String "gl_TessCoord" + 72: String "uv2" + 89: String "outUV" + 101: String "n1" + 108: String "inNormal" + 121: String "n2" + 136: String "outNormal" + 150: String "pos1" + 156: String "gl_Position" + 159: String "gl_PointSize" + 162: String "gl_CullDistance" + 166: String "gl_PerVertex" + 172: String "gl_in" + 186: String "pos2" + 200: String "pos" + 212: String "type.2d.image" + 213: String "@type.2d.image" + 217: String "type.sampled.image" + 218: String "@type.sampled.image" + 222: String "displacementMap" + 236: String "modelview" + 241: String "lightPos" + 244: String "frustumPlanes" + 246: String "tessellatedEdgeSize" + 250: String "viewportDim" + 254: String "UBO" + 258: String "ubo" + 297: String "outViewVec" + 305: String "outLightVec" + 317: String "outWorldPos" + 324: String "outEyePos" Name 14 "main" - Name 34 "uv1" - Name 42 "inUV" - Name 59 "gl_TessCoord" - Name 69 "uv2" - Name 86 "outUV" - Name 98 "n1" - Name 105 "inNormal" - Name 118 "n2" - Name 133 "outNormal" - Name 147 "pos1" - Name 153 "gl_PerVertex" - MemberName 153(gl_PerVertex) 0 "gl_Position" - MemberName 153(gl_PerVertex) 1 "gl_PointSize" - MemberName 153(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 153(gl_PerVertex) 3 "gl_CullDistance" - Name 169 "gl_in" - Name 183 "pos2" - Name 197 "pos" - Name 219 "displacementMap" - Name 233 "UBO" - MemberName 233(UBO) 0 "projection" - MemberName 233(UBO) 1 "modelview" - MemberName 233(UBO) 2 "lightPos" - MemberName 233(UBO) 3 "frustumPlanes" - MemberName 233(UBO) 4 "displacementFactor" - MemberName 233(UBO) 5 "tessellationFactor" - MemberName 233(UBO) 6 "viewportDim" - MemberName 233(UBO) 7 "tessellatedEdgeSize" - Name 255 "ubo" - Name 270 "gl_PerVertex" - MemberName 270(gl_PerVertex) 0 "gl_Position" - MemberName 270(gl_PerVertex) 1 "gl_PointSize" - MemberName 270(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 270(gl_PerVertex) 3 "gl_CullDistance" - Name 280 "" - Name 294 "outViewVec" - Name 302 "outLightVec" - Name 314 "outWorldPos" - Name 321 "outEyePos" - Decorate 42(inUV) Location 1 - Decorate 59(gl_TessCoord) BuiltIn TessCoord - Decorate 86(outUV) Location 1 - Decorate 105(inNormal) Location 0 - Decorate 133(outNormal) Location 0 - MemberDecorate 153(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 153(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 153(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 153(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 153(gl_PerVertex) Block - Decorate 219(displacementMap) DescriptorSet 0 - Decorate 219(displacementMap) Binding 1 - Decorate 231 ArrayStride 16 - MemberDecorate 233(UBO) 0 ColMajor - MemberDecorate 233(UBO) 0 Offset 0 - MemberDecorate 233(UBO) 0 MatrixStride 16 - MemberDecorate 233(UBO) 1 ColMajor - MemberDecorate 233(UBO) 1 Offset 64 - MemberDecorate 233(UBO) 1 MatrixStride 16 - MemberDecorate 233(UBO) 2 Offset 128 - MemberDecorate 233(UBO) 3 Offset 144 - MemberDecorate 233(UBO) 4 Offset 240 - MemberDecorate 233(UBO) 5 Offset 244 - MemberDecorate 233(UBO) 6 Offset 248 - MemberDecorate 233(UBO) 7 Offset 256 - Decorate 233(UBO) Block - Decorate 255(ubo) DescriptorSet 0 - Decorate 255(ubo) Binding 0 - MemberDecorate 270(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 270(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 270(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 270(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 270(gl_PerVertex) Block - Decorate 294(outViewVec) Location 2 - Decorate 302(outLightVec) Location 3 - Decorate 314(outWorldPos) Location 5 - Decorate 321(outEyePos) Location 4 + Name 35 "uv1" + Name 43 "inUV" + Name 60 "gl_TessCoord" + Name 70 "uv2" + Name 87 "outUV" + Name 99 "n1" + Name 106 "inNormal" + Name 119 "n2" + Name 134 "outNormal" + Name 148 "pos1" + Name 154 "gl_PerVertex" + MemberName 154(gl_PerVertex) 0 "gl_Position" + MemberName 154(gl_PerVertex) 1 "gl_PointSize" + MemberName 154(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 154(gl_PerVertex) 3 "gl_CullDistance" + Name 170 "gl_in" + Name 184 "pos2" + Name 198 "pos" + Name 220 "displacementMap" + Name 234 "UBO" + MemberName 234(UBO) 0 "projection" + MemberName 234(UBO) 1 "modelview" + MemberName 234(UBO) 2 "lightPos" + MemberName 234(UBO) 3 "frustumPlanes" + MemberName 234(UBO) 4 "displacementFactor" + MemberName 234(UBO) 5 "tessellationFactor" + MemberName 234(UBO) 6 "viewportDim" + MemberName 234(UBO) 7 "tessellatedEdgeSize" + Name 256 "ubo" + Name 271 "gl_PerVertex" + MemberName 271(gl_PerVertex) 0 "gl_Position" + MemberName 271(gl_PerVertex) 1 "gl_PointSize" + MemberName 271(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 271(gl_PerVertex) 3 "gl_CullDistance" + Name 281 "" + Name 295 "outViewVec" + Name 303 "outLightVec" + Name 315 "outWorldPos" + Name 322 "outEyePos" + Decorate 43(inUV) Location 1 + Decorate 60(gl_TessCoord) BuiltIn TessCoord + Decorate 87(outUV) Location 1 + Decorate 106(inNormal) Location 0 + Decorate 134(outNormal) Location 0 + MemberDecorate 154(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 154(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 154(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 154(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 154(gl_PerVertex) Block + Decorate 220(displacementMap) DescriptorSet 0 + Decorate 220(displacementMap) Binding 1 + Decorate 232 ArrayStride 16 + MemberDecorate 234(UBO) 0 ColMajor + MemberDecorate 234(UBO) 0 Offset 0 + MemberDecorate 234(UBO) 0 MatrixStride 16 + MemberDecorate 234(UBO) 1 ColMajor + MemberDecorate 234(UBO) 1 Offset 64 + MemberDecorate 234(UBO) 1 MatrixStride 16 + MemberDecorate 234(UBO) 2 Offset 128 + MemberDecorate 234(UBO) 3 Offset 144 + MemberDecorate 234(UBO) 4 Offset 240 + MemberDecorate 234(UBO) 5 Offset 244 + MemberDecorate 234(UBO) 6 Offset 248 + MemberDecorate 234(UBO) 7 Offset 256 + Decorate 234(UBO) Block + Decorate 256(ubo) DescriptorSet 0 + Decorate 256(ubo) Binding 0 + MemberDecorate 271(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 271(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 271(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 271(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 271(gl_PerVertex) Block + Decorate 295(outViewVec) Location 2 + Decorate 303(outLightVec) Location 3 + Decorate 315(outWorldPos) Location 5 + Decorate 322(outEyePos) Location 4 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -144,302 +144,303 @@ spv.debuginfo.glsl.tese 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 27: 7(int) Constant 56 - 28: TypeFloat 32 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 - 31: TypeVector 28(float) 2 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 22 - 33: TypePointer Function 31(fvec2) - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 36 32 17 27 12 16 21 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 39: TypeArray 31(fvec2) 10 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 32 10 - 41: TypePointer Input 39 - 42(inUV): 41(ptr) Variable Input - 45: 7(int) Constant 8 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 44 40 17 27 12 19 44 42(inUV) 45 - 46: TypeInt 32 1 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 21 12 - 49: 46(int) Constant 0 - 50: TypePointer Input 31(fvec2) - 53: 46(int) Constant 1 - 56: TypeVector 28(float) 3 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 - 58: TypePointer Input 56(fvec3) -59(gl_TessCoord): 58(ptr) Variable Input - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 61 57 17 27 12 19 61 59(gl_TessCoord) 45 - 62: TypePointer Input 28(float) - 68: 7(int) Constant 57 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 71 32 17 68 12 16 21 - 73: 46(int) Constant 3 - 76: 46(int) Constant 2 - 84: 7(int) Constant 58 - 85: TypePointer Output 31(fvec2) - 86(outUV): 85(ptr) Variable Output - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 88 32 17 84 12 19 88 86(outUV) 45 - 96: 7(int) Constant 60 - 97: TypePointer Function 56(fvec3) - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 100 57 17 96 12 16 21 - 102: TypeArray 56(fvec3) 10 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 57 10 - 104: TypePointer Input 102 - 105(inNormal): 104(ptr) Variable Input - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 107 103 17 96 12 19 107 105(inNormal) 45 - 117: 7(int) Constant 61 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 57 17 117 12 16 21 - 131: 7(int) Constant 62 - 132: TypePointer Output 56(fvec3) - 133(outNormal): 132(ptr) Variable Output - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 135 57 17 131 12 19 135 133(outNormal) 45 - 143: 7(int) Constant 65 - 144: TypeVector 28(float) 4 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 21 - 146: TypePointer Function 144(fvec4) - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 149 145 17 143 12 16 21 - 151: TypeArray 28(float) 20 - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 20 -153(gl_PerVertex): TypeStruct 144(fvec4) 28(float) 151 151 - 156: 7(int) Constant 1756 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 145 17 20 156 12 12 13 - 159: 7(int) Constant 1774 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 30 17 20 159 12 12 13 - 162: 7(int) Constant 1817 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 162 12 12 13 - 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 162 12 12 13 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 20 17 143 12 19 165 12 13 154 157 160 163 - 166: TypeArray 153(gl_PerVertex) 10 - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 164 10 - 168: TypePointer Input 166 - 169(gl_in): 168(ptr) Variable Input - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 171 167 17 143 12 19 171 169(gl_in) 45 - 172: TypePointer Input 144(fvec4) - 182: 7(int) Constant 66 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 145 17 182 12 16 21 - 196: 7(int) Constant 67 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 199 145 17 196 12 16 21 - 208: 7(int) Constant 69 - 209: TypeImage 28(float) 2D sampled format:Unknown - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 211 12 17 208 12 19 212 213 13 - 214: TypeSampledImage 209 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 216 12 17 208 12 19 217 213 13 - 218: TypePointer UniformConstant 214 -219(displacementMap): 218(ptr) Variable UniformConstant - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 221 215 17 208 12 19 221 219(displacementMap) 45 - 224: 28(float) Constant 0 - 227: TypeMatrix 144(fvec4) 4 - 229: TypeBool - 230: 229(bool) ConstantTrue - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 145 21 230 - 231: TypeArray 144(fvec4) 11 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 145 11 - 233(UBO): TypeStruct 227 227 144(fvec4) 231 28(float) 28(float) 31(fvec2) 28(float) - 236: 7(int) Constant 30 - 237: 7(int) Constant 7 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 228 17 236 237 12 12 13 - 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 235 228 17 236 237 12 12 13 - 241: 7(int) Constant 31 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 240 145 17 241 237 12 12 13 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 243 232 17 10 237 12 12 13 - 246: 7(int) Constant 36 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 30 17 246 45 12 12 13 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 30 17 246 45 12 12 13 - 250: 7(int) Constant 35 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 249 32 17 250 237 12 12 13 - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 30 17 246 45 12 12 13 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 253 20 17 208 12 19 253 12 13 234 238 239 242 244 247 248 251 - 254: TypePointer Uniform 233(UBO) - 255(ubo): 254(ptr) Variable Uniform - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 252 17 208 12 19 257 255(ubo) 45 - 258: 46(int) Constant 4 - 259: TypePointer Uniform 28(float) - 263: TypePointer Function 28(float) - 269: 7(int) Constant 71 -270(gl_PerVertex): TypeStruct 144(fvec4) 28(float) 151 151 - 272: 7(int) Constant 165 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 145 17 20 272 12 12 13 - 274: 7(int) Constant 183 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 30 17 20 274 12 12 13 - 276: 7(int) Constant 226 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 276 12 12 13 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 152 17 20 276 12 12 13 - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 20 17 269 12 19 165 12 13 271 273 275 277 - 279: TypePointer Output 270(gl_PerVertex) - 280: 279(ptr) Variable Output - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 278 17 269 12 19 1 280 45 - 282: TypePointer Uniform 227 - 290: TypePointer Output 144(fvec4) - 293: 7(int) Constant 74 - 294(outViewVec): 132(ptr) Variable Output - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 296 57 17 293 12 19 296 294(outViewVec) 45 - 301: 7(int) Constant 75 -302(outLightVec): 132(ptr) Variable Output - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 304 57 17 301 12 19 304 302(outLightVec) 45 - 305: TypePointer Uniform 144(fvec4) - 313: 7(int) Constant 76 -314(outWorldPos): 132(ptr) Variable Output - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 316 57 17 313 12 19 316 314(outWorldPos) 45 - 320: 7(int) Constant 77 - 321(outEyePos): 132(ptr) Variable Output - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 323 57 17 320 12 19 323 321(outEyePos) 45 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 20: 7(int) Constant 53 + 22: 7(int) Constant 1 + 23: 7(int) Constant 4 + 24: 7(int) Constant 2 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: 7(int) Constant 56 + 29: TypeFloat 32 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 13 12 + 32: TypeVector 29(float) 2 + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 24 + 34: TypePointer Function 32(fvec2) + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 37 33 18 28 12 17 23 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 40: TypeArray 32(fvec2) 10 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 33 10 + 42: TypePointer Input 40 + 43(inUV): 42(ptr) Variable Input + 46: 7(int) Constant 8 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 45 41 18 28 12 21 45 43(inUV) 46 + 47: TypeInt 32 1 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 23 12 + 50: 47(int) Constant 0 + 51: TypePointer Input 32(fvec2) + 54: 47(int) Constant 1 + 57: TypeVector 29(float) 3 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 13 + 59: TypePointer Input 57(fvec3) +60(gl_TessCoord): 59(ptr) Variable Input + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 18 28 12 21 62 60(gl_TessCoord) 46 + 63: TypePointer Input 29(float) + 69: 7(int) Constant 57 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 72 33 18 69 12 17 23 + 74: 47(int) Constant 3 + 77: 47(int) Constant 2 + 85: 7(int) Constant 58 + 86: TypePointer Output 32(fvec2) + 87(outUV): 86(ptr) Variable Output + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 89 33 18 85 12 21 89 87(outUV) 46 + 97: 7(int) Constant 60 + 98: TypePointer Function 57(fvec3) + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 101 58 18 97 12 17 23 + 103: TypeArray 57(fvec3) 10 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 58 10 + 105: TypePointer Input 103 + 106(inNormal): 105(ptr) Variable Input + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 108 104 18 97 12 21 108 106(inNormal) 46 + 118: 7(int) Constant 61 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 58 18 118 12 17 23 + 132: 7(int) Constant 62 + 133: TypePointer Output 57(fvec3) + 134(outNormal): 133(ptr) Variable Output + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 58 18 132 12 21 136 134(outNormal) 46 + 144: 7(int) Constant 65 + 145: TypeVector 29(float) 4 + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 + 147: TypePointer Function 145(fvec4) + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 150 146 18 144 12 17 23 + 152: TypeArray 29(float) 22 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 +154(gl_PerVertex): TypeStruct 145(fvec4) 29(float) 152 152 + 157: 7(int) Constant 1756 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 146 18 22 157 12 12 13 + 160: 7(int) Constant 1774 + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 31 18 22 160 12 12 13 + 163: 7(int) Constant 1817 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 163 12 12 13 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 163 12 12 13 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 22 18 144 12 21 166 12 13 155 158 161 164 + 167: TypeArray 154(gl_PerVertex) 10 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 165 10 + 169: TypePointer Input 167 + 170(gl_in): 169(ptr) Variable Input + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 172 168 18 144 12 21 172 170(gl_in) 46 + 173: TypePointer Input 145(fvec4) + 183: 7(int) Constant 66 + 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 186 146 18 183 12 17 23 + 197: 7(int) Constant 67 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 146 18 197 12 17 23 + 209: 7(int) Constant 69 + 210: TypeImage 29(float) 2D sampled format:Unknown + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 212 12 18 209 12 21 213 214 13 + 215: TypeSampledImage 210 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 217 12 18 209 12 21 218 214 13 + 219: TypePointer UniformConstant 215 +220(displacementMap): 219(ptr) Variable UniformConstant + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 222 216 18 209 12 21 222 220(displacementMap) 46 + 225: 29(float) Constant 0 + 228: TypeMatrix 145(fvec4) 4 + 230: TypeBool + 231: 230(bool) ConstantTrue + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 146 23 231 + 232: TypeArray 145(fvec4) 11 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 146 11 + 234(UBO): TypeStruct 228 228 145(fvec4) 232 29(float) 29(float) 32(fvec2) 29(float) + 237: 7(int) Constant 30 + 238: 7(int) Constant 7 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 236 229 18 237 238 12 12 13 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 236 229 18 237 238 12 12 13 + 242: 7(int) Constant 31 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 146 18 242 238 12 12 13 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 233 18 10 238 12 12 13 + 247: 7(int) Constant 36 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 31 18 247 46 12 12 13 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 31 18 247 46 12 12 13 + 251: 7(int) Constant 35 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 33 18 251 238 12 12 13 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 31 18 247 46 12 12 13 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 254 22 18 209 12 21 254 12 13 235 239 240 243 245 248 249 252 + 255: TypePointer Uniform 234(UBO) + 256(ubo): 255(ptr) Variable Uniform + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 253 18 209 12 21 258 256(ubo) 46 + 259: 47(int) Constant 4 + 260: TypePointer Uniform 29(float) + 264: TypePointer Function 29(float) + 270: 7(int) Constant 71 +271(gl_PerVertex): TypeStruct 145(fvec4) 29(float) 152 152 + 273: 7(int) Constant 165 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 146 18 22 273 12 12 13 + 275: 7(int) Constant 183 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 31 18 22 275 12 12 13 + 277: 7(int) Constant 226 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 277 12 12 13 + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 277 12 12 13 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 22 18 270 12 21 166 12 13 272 274 276 278 + 280: TypePointer Output 271(gl_PerVertex) + 281: 280(ptr) Variable Output + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 279 18 270 12 21 1 281 46 + 283: TypePointer Uniform 228 + 291: TypePointer Output 145(fvec4) + 294: 7(int) Constant 74 + 295(outViewVec): 133(ptr) Variable Output + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 297 58 18 294 12 21 297 295(outViewVec) 46 + 302: 7(int) Constant 75 +303(outLightVec): 133(ptr) Variable Output + 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 305 58 18 302 12 21 305 303(outLightVec) 46 + 306: TypePointer Uniform 145(fvec4) + 314: 7(int) Constant 76 +315(outWorldPos): 133(ptr) Variable Output + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 317 58 18 314 12 21 317 315(outWorldPos) 46 + 321: 7(int) Constant 77 + 322(outEyePos): 133(ptr) Variable Output + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 324 58 18 321 12 21 324 322(outEyePos) 46 Line 1 53 11 14(main): 4 Function None 5 - 23: Label - 34(uv1): 33(ptr) Variable Function - 69(uv2): 33(ptr) Variable Function - 98(n1): 97(ptr) Variable Function - 118(n2): 97(ptr) Variable Function - 147(pos1): 146(ptr) Variable Function - 183(pos2): 146(ptr) Variable Function - 197(pos): 146(ptr) Variable Function - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 35 34(uv1) 38 - 51: 50(ptr) AccessChain 42(inUV) 49 - 52: 31(fvec2) Load 51 - 54: 50(ptr) AccessChain 42(inUV) 53 - 55: 31(fvec2) Load 54 - 63: 62(ptr) AccessChain 59(gl_TessCoord) 12 - 64: 28(float) Load 63 - 65: 31(fvec2) CompositeConstruct 64 64 - 66: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 52 55 65 - Store 34(uv1) 66 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 68 68 12 12 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 70 69(uv2) 38 - 74: 50(ptr) AccessChain 42(inUV) 73 - 75: 31(fvec2) Load 74 - 77: 50(ptr) AccessChain 42(inUV) 76 - 78: 31(fvec2) Load 77 - 79: 62(ptr) AccessChain 59(gl_TessCoord) 12 - 80: 28(float) Load 79 - 81: 31(fvec2) CompositeConstruct 80 80 - 82: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 75 78 81 - Store 69(uv2) 82 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 84 84 12 12 - 89: 31(fvec2) Load 34(uv1) - 90: 31(fvec2) Load 69(uv2) - 91: 62(ptr) AccessChain 59(gl_TessCoord) 20 - 92: 28(float) Load 91 - 93: 31(fvec2) CompositeConstruct 92 92 - 94: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 89 90 93 - Store 86(outUV) 94 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 96 96 12 12 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 99 98(n1) 38 - 108: 58(ptr) AccessChain 105(inNormal) 49 - 109: 56(fvec3) Load 108 - 110: 58(ptr) AccessChain 105(inNormal) 53 - 111: 56(fvec3) Load 110 - 112: 62(ptr) AccessChain 59(gl_TessCoord) 12 - 113: 28(float) Load 112 - 114: 56(fvec3) CompositeConstruct 113 113 113 - 115: 56(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 109 111 114 - Store 98(n1) 115 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 117 117 12 12 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(n2) 38 - 122: 58(ptr) AccessChain 105(inNormal) 73 - 123: 56(fvec3) Load 122 - 124: 58(ptr) AccessChain 105(inNormal) 76 - 125: 56(fvec3) Load 124 - 126: 62(ptr) AccessChain 59(gl_TessCoord) 12 - 127: 28(float) Load 126 - 128: 56(fvec3) CompositeConstruct 127 127 127 - 129: 56(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 123 125 128 - Store 118(n2) 129 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 131 131 12 12 - 136: 56(fvec3) Load 98(n1) - 137: 56(fvec3) Load 118(n2) - 138: 62(ptr) AccessChain 59(gl_TessCoord) 20 - 139: 28(float) Load 138 - 140: 56(fvec3) CompositeConstruct 139 139 139 - 141: 56(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 136 137 140 - Store 133(outNormal) 141 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 143 143 12 12 - 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 148 147(pos1) 38 - 173: 172(ptr) AccessChain 169(gl_in) 49 49 - 174: 144(fvec4) Load 173 - 175: 172(ptr) AccessChain 169(gl_in) 53 49 - 176: 144(fvec4) Load 175 - 177: 62(ptr) AccessChain 59(gl_TessCoord) 12 - 178: 28(float) Load 177 - 179: 144(fvec4) CompositeConstruct 178 178 178 178 - 180: 144(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 174 176 179 - Store 147(pos1) 180 - 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 182 182 12 12 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(pos2) 38 - 187: 172(ptr) AccessChain 169(gl_in) 73 49 - 188: 144(fvec4) Load 187 - 189: 172(ptr) AccessChain 169(gl_in) 76 49 - 190: 144(fvec4) Load 189 - 191: 62(ptr) AccessChain 59(gl_TessCoord) 12 - 192: 28(float) Load 191 - 193: 144(fvec4) CompositeConstruct 192 192 192 192 - 194: 144(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 188 190 193 - Store 183(pos2) 194 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 196 196 12 12 - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 198 197(pos) 38 - 201: 144(fvec4) Load 147(pos1) - 202: 144(fvec4) Load 183(pos2) - 203: 62(ptr) AccessChain 59(gl_TessCoord) 20 - 204: 28(float) Load 203 - 205: 144(fvec4) CompositeConstruct 204 204 204 204 - 206: 144(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 201 202 205 - Store 197(pos) 206 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 208 208 12 12 - 222: 214 Load 219(displacementMap) - 223: 31(fvec2) Load 86(outUV) - 225: 144(fvec4) ImageSampleExplicitLod 222 223 Lod 224 - 226: 28(float) CompositeExtract 225 0 - 260: 259(ptr) AccessChain 255(ubo) 258 - 261: 28(float) Load 260 - 262: 28(float) FMul 226 261 - 264: 263(ptr) AccessChain 197(pos) 20 - 265: 28(float) Load 264 - 266: 28(float) FSub 265 262 - 267: 263(ptr) AccessChain 197(pos) 20 - Store 267 266 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 269 269 12 12 - 283: 282(ptr) AccessChain 255(ubo) 49 - 284: 227 Load 283 - 285: 282(ptr) AccessChain 255(ubo) 53 - 286: 227 Load 285 - 287: 227 MatrixTimesMatrix 284 286 - 288: 144(fvec4) Load 197(pos) - 289: 144(fvec4) MatrixTimesVector 287 288 - 291: 290(ptr) AccessChain 280 49 - Store 291 289 - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 293 293 12 12 - 297: 144(fvec4) Load 197(pos) - 298: 56(fvec3) VectorShuffle 297 297 0 1 2 - 299: 56(fvec3) FNegate 298 - Store 294(outViewVec) 299 - 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 301 301 12 12 - 306: 305(ptr) AccessChain 255(ubo) 76 - 307: 144(fvec4) Load 306 - 308: 56(fvec3) VectorShuffle 307 307 0 1 2 - 309: 56(fvec3) Load 294(outViewVec) - 310: 56(fvec3) FAdd 308 309 - 311: 56(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 310 - Store 302(outLightVec) 311 - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 313 313 12 12 - 317: 144(fvec4) Load 197(pos) - 318: 56(fvec3) VectorShuffle 317 317 0 1 2 - Store 314(outWorldPos) 318 - 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 320 320 12 12 - 324: 282(ptr) AccessChain 255(ubo) 53 - 325: 227 Load 324 - 326: 144(fvec4) Load 197(pos) - 327: 144(fvec4) MatrixTimesVector 325 326 - 328: 28(float) CompositeExtract 327 0 - 329: 28(float) CompositeExtract 327 1 - 330: 28(float) CompositeExtract 327 2 - 331: 56(fvec3) CompositeConstruct 328 329 330 - Store 321(outEyePos) 331 + 15: Label + 35(uv1): 34(ptr) Variable Function + 70(uv2): 34(ptr) Variable Function + 99(n1): 98(ptr) Variable Function + 119(n2): 98(ptr) Variable Function + 148(pos1): 147(ptr) Variable Function + 184(pos2): 147(ptr) Variable Function + 198(pos): 147(ptr) Variable Function + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 36 35(uv1) 39 + 52: 51(ptr) AccessChain 43(inUV) 50 + 53: 32(fvec2) Load 52 + 55: 51(ptr) AccessChain 43(inUV) 54 + 56: 32(fvec2) Load 55 + 64: 63(ptr) AccessChain 60(gl_TessCoord) 12 + 65: 29(float) Load 64 + 66: 32(fvec2) CompositeConstruct 65 65 + 67: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 53 56 66 + Store 35(uv1) 67 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 69 69 12 12 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 70(uv2) 39 + 75: 51(ptr) AccessChain 43(inUV) 74 + 76: 32(fvec2) Load 75 + 78: 51(ptr) AccessChain 43(inUV) 77 + 79: 32(fvec2) Load 78 + 80: 63(ptr) AccessChain 60(gl_TessCoord) 12 + 81: 29(float) Load 80 + 82: 32(fvec2) CompositeConstruct 81 81 + 83: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 76 79 82 + Store 70(uv2) 83 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 85 85 12 12 + 90: 32(fvec2) Load 35(uv1) + 91: 32(fvec2) Load 70(uv2) + 92: 63(ptr) AccessChain 60(gl_TessCoord) 22 + 93: 29(float) Load 92 + 94: 32(fvec2) CompositeConstruct 93 93 + 95: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 90 91 94 + Store 87(outUV) 95 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 97 97 12 12 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 99(n1) 39 + 109: 59(ptr) AccessChain 106(inNormal) 50 + 110: 57(fvec3) Load 109 + 111: 59(ptr) AccessChain 106(inNormal) 54 + 112: 57(fvec3) Load 111 + 113: 63(ptr) AccessChain 60(gl_TessCoord) 12 + 114: 29(float) Load 113 + 115: 57(fvec3) CompositeConstruct 114 114 114 + 116: 57(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 110 112 115 + Store 99(n1) 116 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 118 118 12 12 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 120 119(n2) 39 + 123: 59(ptr) AccessChain 106(inNormal) 74 + 124: 57(fvec3) Load 123 + 125: 59(ptr) AccessChain 106(inNormal) 77 + 126: 57(fvec3) Load 125 + 127: 63(ptr) AccessChain 60(gl_TessCoord) 12 + 128: 29(float) Load 127 + 129: 57(fvec3) CompositeConstruct 128 128 128 + 130: 57(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 124 126 129 + Store 119(n2) 130 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 132 132 12 12 + 137: 57(fvec3) Load 99(n1) + 138: 57(fvec3) Load 119(n2) + 139: 63(ptr) AccessChain 60(gl_TessCoord) 22 + 140: 29(float) Load 139 + 141: 57(fvec3) CompositeConstruct 140 140 140 + 142: 57(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 137 138 141 + Store 134(outNormal) 142 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 144 144 12 12 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 149 148(pos1) 39 + 174: 173(ptr) AccessChain 170(gl_in) 50 50 + 175: 145(fvec4) Load 174 + 176: 173(ptr) AccessChain 170(gl_in) 54 50 + 177: 145(fvec4) Load 176 + 178: 63(ptr) AccessChain 60(gl_TessCoord) 12 + 179: 29(float) Load 178 + 180: 145(fvec4) CompositeConstruct 179 179 179 179 + 181: 145(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 175 177 180 + Store 148(pos1) 181 + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 183 183 12 12 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 185 184(pos2) 39 + 188: 173(ptr) AccessChain 170(gl_in) 74 50 + 189: 145(fvec4) Load 188 + 190: 173(ptr) AccessChain 170(gl_in) 77 50 + 191: 145(fvec4) Load 190 + 192: 63(ptr) AccessChain 60(gl_TessCoord) 12 + 193: 29(float) Load 192 + 194: 145(fvec4) CompositeConstruct 193 193 193 193 + 195: 145(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 189 191 194 + Store 184(pos2) 195 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 197 197 12 12 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(pos) 39 + 202: 145(fvec4) Load 148(pos1) + 203: 145(fvec4) Load 184(pos2) + 204: 63(ptr) AccessChain 60(gl_TessCoord) 22 + 205: 29(float) Load 204 + 206: 145(fvec4) CompositeConstruct 205 205 205 205 + 207: 145(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 202 203 206 + Store 198(pos) 207 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 209 209 12 12 + 223: 215 Load 220(displacementMap) + 224: 32(fvec2) Load 87(outUV) + 226: 145(fvec4) ImageSampleExplicitLod 223 224 Lod 225 + 227: 29(float) CompositeExtract 226 0 + 261: 260(ptr) AccessChain 256(ubo) 259 + 262: 29(float) Load 261 + 263: 29(float) FMul 227 262 + 265: 264(ptr) AccessChain 198(pos) 22 + 266: 29(float) Load 265 + 267: 29(float) FSub 266 263 + 268: 264(ptr) AccessChain 198(pos) 22 + Store 268 267 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 270 270 12 12 + 284: 283(ptr) AccessChain 256(ubo) 50 + 285: 228 Load 284 + 286: 283(ptr) AccessChain 256(ubo) 54 + 287: 228 Load 286 + 288: 228 MatrixTimesMatrix 285 287 + 289: 145(fvec4) Load 198(pos) + 290: 145(fvec4) MatrixTimesVector 288 289 + 292: 291(ptr) AccessChain 281 50 + Store 292 290 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 294 294 12 12 + 298: 145(fvec4) Load 198(pos) + 299: 57(fvec3) VectorShuffle 298 298 0 1 2 + 300: 57(fvec3) FNegate 299 + Store 295(outViewVec) 300 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 302 302 12 12 + 307: 306(ptr) AccessChain 256(ubo) 77 + 308: 145(fvec4) Load 307 + 309: 57(fvec3) VectorShuffle 308 308 0 1 2 + 310: 57(fvec3) Load 295(outViewVec) + 311: 57(fvec3) FAdd 309 310 + 312: 57(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 311 + Store 303(outLightVec) 312 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 314 314 12 12 + 318: 145(fvec4) Load 198(pos) + 319: 57(fvec3) VectorShuffle 318 318 0 1 2 + Store 315(outWorldPos) 319 + 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 321 321 12 12 + 325: 283(ptr) AccessChain 256(ubo) 54 + 326: 228 Load 325 + 327: 145(fvec4) Load 198(pos) + 328: 145(fvec4) MatrixTimesVector 326 327 + 329: 29(float) CompositeExtract 328 0 + 330: 29(float) CompositeExtract 328 1 + 331: 29(float) CompositeExtract 328 2 + 332: 57(fvec3) CompositeConstruct 329 330 331 + Store 322(outEyePos) 332 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index c485255081..932ecc8f26 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,18 +1,18 @@ spv.debuginfo.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 424 +// Id's are bound by 425 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 14 "main" 34 39 45 51 59 75 289 307 312 337 353 370 409 418 + EntryPoint Vertex 14 "main" 35 40 46 52 60 76 290 308 313 338 354 371 410 419 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 16: String "main" + 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -20,107 +20,107 @@ spv.debuginfo.glsl.vert // OpModuleProcessed entry-point main #line 1 " - 29: String "float" - 36: String "outColor" - 41: String "inColor" - 47: String "outUV" - 53: String "inUV" - 56: String "int" - 61: String "instanceTexIndex" - 72: String "s" - 77: String "instanceRot" - 89: String "modelview" - 94: String "lightPos" - 97: String "globSpeed" - 101: String "UBO" - 105: String "ubo" - 116: String "c" - 131: String "mx" - 174: String "my" - 211: String "mz" - 232: String "rotMat" - 261: String "gRotMat" - 287: String "locPos" - 291: String "inPos" - 303: String "pos" - 309: String "instanceScale" - 314: String "instancePos" - 327: String "gl_Position" - 330: String "gl_PointSize" - 332: String "gl_CullDistance" - 335: String "gl_PerVertex" - 355: String "outNormal" - 372: String "inNormal" - 391: String "lPos" - 411: String "outLightVec" - 420: String "outViewVec" + 30: String "float" + 37: String "outColor" + 42: String "inColor" + 48: String "outUV" + 54: String "inUV" + 57: String "int" + 62: String "instanceTexIndex" + 73: String "s" + 78: String "instanceRot" + 90: String "modelview" + 95: String "lightPos" + 98: String "globSpeed" + 102: String "UBO" + 106: String "ubo" + 117: String "c" + 132: String "mx" + 175: String "my" + 212: String "mz" + 233: String "rotMat" + 262: String "gRotMat" + 288: String "locPos" + 292: String "inPos" + 304: String "pos" + 310: String "instanceScale" + 315: String "instancePos" + 328: String "gl_Position" + 331: String "gl_PointSize" + 333: String "gl_CullDistance" + 336: String "gl_PerVertex" + 356: String "outNormal" + 373: String "inNormal" + 392: String "lPos" + 412: String "outLightVec" + 421: String "outViewVec" Name 14 "main" - Name 34 "outColor" - Name 39 "inColor" - Name 45 "outUV" - Name 51 "inUV" - Name 59 "instanceTexIndex" - Name 70 "s" - Name 75 "instanceRot" - Name 87 "UBO" - MemberName 87(UBO) 0 "projection" - MemberName 87(UBO) 1 "modelview" - MemberName 87(UBO) 2 "lightPos" - MemberName 87(UBO) 3 "locSpeed" - MemberName 87(UBO) 4 "globSpeed" - Name 103 "ubo" - Name 114 "c" - Name 129 "mx" - Name 172 "my" - Name 209 "mz" - Name 230 "rotMat" - Name 259 "gRotMat" - Name 285 "locPos" - Name 289 "inPos" - Name 301 "pos" - Name 307 "instanceScale" - Name 312 "instancePos" - Name 325 "gl_PerVertex" - MemberName 325(gl_PerVertex) 0 "gl_Position" - MemberName 325(gl_PerVertex) 1 "gl_PointSize" - MemberName 325(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 325(gl_PerVertex) 3 "gl_CullDistance" - Name 337 "" - Name 353 "outNormal" - Name 370 "inNormal" - Name 389 "lPos" - Name 409 "outLightVec" - Name 418 "outViewVec" - Decorate 34(outColor) Location 1 - Decorate 39(inColor) Location 3 - Decorate 45(outUV) Location 2 - Decorate 51(inUV) Location 2 - Decorate 59(instanceTexIndex) Location 7 - Decorate 75(instanceRot) Location 5 - MemberDecorate 87(UBO) 0 ColMajor - MemberDecorate 87(UBO) 0 Offset 0 - MemberDecorate 87(UBO) 0 MatrixStride 16 - MemberDecorate 87(UBO) 1 ColMajor - MemberDecorate 87(UBO) 1 Offset 64 - MemberDecorate 87(UBO) 1 MatrixStride 16 - MemberDecorate 87(UBO) 2 Offset 128 - MemberDecorate 87(UBO) 3 Offset 144 - MemberDecorate 87(UBO) 4 Offset 148 - Decorate 87(UBO) Block - Decorate 103(ubo) DescriptorSet 0 - Decorate 103(ubo) Binding 0 - Decorate 289(inPos) Location 0 - Decorate 307(instanceScale) Location 6 - Decorate 312(instancePos) Location 4 - MemberDecorate 325(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 325(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 325(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 325(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 325(gl_PerVertex) Block - Decorate 353(outNormal) Location 0 - Decorate 370(inNormal) Location 1 - Decorate 409(outLightVec) Location 4 - Decorate 418(outViewVec) Location 3 + Name 35 "outColor" + Name 40 "inColor" + Name 46 "outUV" + Name 52 "inUV" + Name 60 "instanceTexIndex" + Name 71 "s" + Name 76 "instanceRot" + Name 88 "UBO" + MemberName 88(UBO) 0 "projection" + MemberName 88(UBO) 1 "modelview" + MemberName 88(UBO) 2 "lightPos" + MemberName 88(UBO) 3 "locSpeed" + MemberName 88(UBO) 4 "globSpeed" + Name 104 "ubo" + Name 115 "c" + Name 130 "mx" + Name 173 "my" + Name 210 "mz" + Name 231 "rotMat" + Name 260 "gRotMat" + Name 286 "locPos" + Name 290 "inPos" + Name 302 "pos" + Name 308 "instanceScale" + Name 313 "instancePos" + Name 326 "gl_PerVertex" + MemberName 326(gl_PerVertex) 0 "gl_Position" + MemberName 326(gl_PerVertex) 1 "gl_PointSize" + MemberName 326(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 326(gl_PerVertex) 3 "gl_CullDistance" + Name 338 "" + Name 354 "outNormal" + Name 371 "inNormal" + Name 390 "lPos" + Name 410 "outLightVec" + Name 419 "outViewVec" + Decorate 35(outColor) Location 1 + Decorate 40(inColor) Location 3 + Decorate 46(outUV) Location 2 + Decorate 52(inUV) Location 2 + Decorate 60(instanceTexIndex) Location 7 + Decorate 76(instanceRot) Location 5 + MemberDecorate 88(UBO) 0 ColMajor + MemberDecorate 88(UBO) 0 Offset 0 + MemberDecorate 88(UBO) 0 MatrixStride 16 + MemberDecorate 88(UBO) 1 ColMajor + MemberDecorate 88(UBO) 1 Offset 64 + MemberDecorate 88(UBO) 1 MatrixStride 16 + MemberDecorate 88(UBO) 2 Offset 128 + MemberDecorate 88(UBO) 3 Offset 144 + MemberDecorate 88(UBO) 4 Offset 148 + Decorate 88(UBO) Block + Decorate 104(ubo) DescriptorSet 0 + Decorate 104(ubo) Binding 0 + Decorate 290(inPos) Location 0 + Decorate 308(instanceScale) Location 6 + Decorate 313(instancePos) Location 4 + MemberDecorate 326(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 326(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 326(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 326(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 326(gl_PerVertex) Block + Decorate 354(outNormal) Location 0 + Decorate 371(inNormal) Location 1 + Decorate 410(outLightVec) Location 4 + Decorate 419(outViewVec) Location 3 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -130,412 +130,413 @@ spv.debuginfo.glsl.vert 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 27: 7(int) Constant 56 - 28: TypeFloat 32 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 - 31: TypeVector 28(float) 3 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 - 33: TypePointer Output 31(fvec3) - 34(outColor): 33(ptr) Variable Output - 37: 7(int) Constant 8 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 36 32 17 27 12 19 36 34(outColor) 37 - 38: TypePointer Input 31(fvec3) - 39(inColor): 38(ptr) Variable Input - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 41 32 17 27 12 19 41 39(inColor) 37 - 44: 7(int) Constant 57 - 45(outUV): 33(ptr) Variable Output - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 47 32 17 44 12 19 47 45(outUV) 37 - 48: TypeVector 28(float) 2 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 22 - 50: TypePointer Input 48(fvec2) - 51(inUV): 50(ptr) Variable Input - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 53 49 17 44 12 19 53 51(inUV) 37 - 55: TypeInt 32 1 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 56 10 21 12 - 58: TypePointer Input 55(int) -59(instanceTexIndex): 58(ptr) Variable Input - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 61 57 17 44 12 19 61 59(instanceTexIndex) 37 - 68: 7(int) Constant 62 - 69: TypePointer Function 28(float) - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 72 30 17 68 12 16 21 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 75(instanceRot): 38(ptr) Variable Input - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 32 17 68 12 19 77 75(instanceRot) 37 - 78: TypePointer Input 28(float) - 81: TypeVector 28(float) 4 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 21 - 83: TypeMatrix 81(fvec4) 4 - 85: TypeBool - 86: 85(bool) ConstantTrue - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 82 21 86 - 87(UBO): TypeStruct 83 83 81(fvec4) 28(float) 28(float) - 90: 7(int) Constant 42 - 91: 7(int) Constant 7 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 84 17 90 91 12 12 13 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 84 17 90 91 12 12 13 - 95: 7(int) Constant 43 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 82 17 95 91 12 12 13 - 98: 7(int) Constant 45 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 30 17 98 37 12 12 13 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 30 17 98 37 12 12 13 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 101 20 17 68 12 19 101 12 13 88 92 93 96 99 - 102: TypePointer Uniform 87(UBO) - 103(ubo): 102(ptr) Variable Uniform - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 105 100 17 68 12 19 105 103(ubo) 37 - 106: 55(int) Constant 3 - 107: TypePointer Uniform 28(float) - 113: 7(int) Constant 63 - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 116 30 17 113 12 16 21 - 125: 7(int) Constant 65 - 126: TypeMatrix 31(fvec3) 3 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 32 13 86 - 128: TypePointer Function 126 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 131 127 17 125 12 16 21 - 133: 55(int) Constant 0 - 136: 28(float) Constant 0 - 138: TypePointer Function 31(fvec3) - 141: 7(int) Constant 66 - 142: 55(int) Constant 1 - 149: 7(int) Constant 67 - 150: 55(int) Constant 2 - 151: 28(float) Constant 1065353216 - 152: 31(fvec3) ConstantComposite 136 136 151 - 155: 7(int) Constant 70 - 163: 7(int) Constant 71 - 171: 7(int) Constant 73 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 174 127 17 171 12 16 21 - 181: 7(int) Constant 74 - 182: 31(fvec3) ConstantComposite 136 151 136 - 185: 7(int) Constant 75 - 192: 7(int) Constant 78 - 200: 7(int) Constant 79 - 208: 7(int) Constant 81 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 127 17 208 12 16 21 - 213: 31(fvec3) ConstantComposite 151 136 136 - 216: 7(int) Constant 82 - 222: 7(int) Constant 83 - 229: 7(int) Constant 85 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 232 127 17 229 12 16 21 - 240: 7(int) Constant 88 - 243: 55(int) Constant 4 - 249: 7(int) Constant 89 - 257: 7(int) Constant 90 - 258: TypePointer Function 83 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 84 17 257 12 16 21 - 266: TypePointer Function 81(fvec4) - 269: 7(int) Constant 91 - 270: 81(fvec4) ConstantComposite 136 151 136 136 - 273: 7(int) Constant 92 - 280: 7(int) Constant 93 - 281: 81(fvec4) ConstantComposite 136 136 136 151 - 284: 7(int) Constant 95 - 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 287 82 17 284 12 16 21 - 289(inPos): 38(ptr) Variable Input - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 291 32 17 284 12 19 291 289(inPos) 37 - 300: 7(int) Constant 96 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 82 17 300 12 16 21 -307(instanceScale): 78(ptr) Variable Input - 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 309 30 17 300 12 19 309 307(instanceScale) 37 -312(instancePos): 38(ptr) Variable Input - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 314 32 17 300 12 19 314 312(instancePos) 37 - 322: 7(int) Constant 98 - 323: TypeArray 28(float) 20 - 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 20 -325(gl_PerVertex): TypeStruct 81(fvec4) 28(float) 323 323 - 328: 7(int) Constant 24 - 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 327 82 17 20 328 12 12 13 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 330 30 17 20 90 12 12 13 - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 332 324 17 20 229 12 12 13 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 332 324 17 20 229 12 12 13 - 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 335 20 17 322 12 19 335 12 13 326 329 331 333 - 336: TypePointer Output 325(gl_PerVertex) - 337: 336(ptr) Variable Output - 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 334 17 322 12 19 1 337 37 - 339: TypePointer Uniform 83 - 349: TypePointer Output 81(fvec4) - 352: 7(int) Constant 99 - 353(outNormal): 33(ptr) Variable Output - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 32 17 352 12 19 355 353(outNormal) 37 - 370(inNormal): 38(ptr) Variable Input - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 372 32 17 352 12 19 372 370(inNormal) 37 - 376: 7(int) Constant 101 - 388: 7(int) Constant 102 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 391 32 17 388 12 16 21 - 402: TypePointer Uniform 81(fvec4) - 408: 7(int) Constant 103 -409(outLightVec): 33(ptr) Variable Output - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 411 32 17 408 12 19 411 409(outLightVec) 37 - 417: 7(int) Constant 104 - 418(outViewVec): 33(ptr) Variable Output - 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 420 32 17 417 12 19 420 418(outViewVec) 37 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 20: 7(int) Constant 54 + 22: 7(int) Constant 1 + 23: 7(int) Constant 4 + 24: 7(int) Constant 2 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: 7(int) Constant 56 + 29: TypeFloat 32 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 13 12 + 32: TypeVector 29(float) 3 + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 13 + 34: TypePointer Output 32(fvec3) + 35(outColor): 34(ptr) Variable Output + 38: 7(int) Constant 8 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 37 33 18 28 12 21 37 35(outColor) 38 + 39: TypePointer Input 32(fvec3) + 40(inColor): 39(ptr) Variable Input + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 42 33 18 28 12 21 42 40(inColor) 38 + 45: 7(int) Constant 57 + 46(outUV): 34(ptr) Variable Output + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 48 33 18 45 12 21 48 46(outUV) 38 + 49: TypeVector 29(float) 2 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 24 + 51: TypePointer Input 49(fvec2) + 52(inUV): 51(ptr) Variable Input + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 54 50 18 45 12 21 54 52(inUV) 38 + 56: TypeInt 32 1 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 23 12 + 59: TypePointer Input 56(int) +60(instanceTexIndex): 59(ptr) Variable Input + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 18 45 12 21 62 60(instanceTexIndex) 38 + 69: 7(int) Constant 62 + 70: TypePointer Function 29(float) + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 31 18 69 12 17 23 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 76(instanceRot): 39(ptr) Variable Input + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 33 18 69 12 21 78 76(instanceRot) 38 + 79: TypePointer Input 29(float) + 82: TypeVector 29(float) 4 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 + 84: TypeMatrix 82(fvec4) 4 + 86: TypeBool + 87: 86(bool) ConstantTrue + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 83 23 87 + 88(UBO): TypeStruct 84 84 82(fvec4) 29(float) 29(float) + 91: 7(int) Constant 42 + 92: 7(int) Constant 7 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 90 85 18 91 92 12 12 13 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 90 85 18 91 92 12 12 13 + 96: 7(int) Constant 43 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 83 18 96 92 12 12 13 + 99: 7(int) Constant 45 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 31 18 99 38 12 12 13 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 31 18 99 38 12 12 13 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 102 22 18 69 12 21 102 12 13 89 93 94 97 100 + 103: TypePointer Uniform 88(UBO) + 104(ubo): 103(ptr) Variable Uniform + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 106 101 18 69 12 21 106 104(ubo) 38 + 107: 56(int) Constant 3 + 108: TypePointer Uniform 29(float) + 114: 7(int) Constant 63 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 31 18 114 12 17 23 + 126: 7(int) Constant 65 + 127: TypeMatrix 32(fvec3) 3 + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 33 13 87 + 129: TypePointer Function 127 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 132 128 18 126 12 17 23 + 134: 56(int) Constant 0 + 137: 29(float) Constant 0 + 139: TypePointer Function 32(fvec3) + 142: 7(int) Constant 66 + 143: 56(int) Constant 1 + 150: 7(int) Constant 67 + 151: 56(int) Constant 2 + 152: 29(float) Constant 1065353216 + 153: 32(fvec3) ConstantComposite 137 137 152 + 156: 7(int) Constant 70 + 164: 7(int) Constant 71 + 172: 7(int) Constant 73 + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 175 128 18 172 12 17 23 + 182: 7(int) Constant 74 + 183: 32(fvec3) ConstantComposite 137 152 137 + 186: 7(int) Constant 75 + 193: 7(int) Constant 78 + 201: 7(int) Constant 79 + 209: 7(int) Constant 81 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 128 18 209 12 17 23 + 214: 32(fvec3) ConstantComposite 152 137 137 + 217: 7(int) Constant 82 + 223: 7(int) Constant 83 + 230: 7(int) Constant 85 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 233 128 18 230 12 17 23 + 241: 7(int) Constant 88 + 244: 56(int) Constant 4 + 250: 7(int) Constant 89 + 258: 7(int) Constant 90 + 259: TypePointer Function 84 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 262 85 18 258 12 17 23 + 267: TypePointer Function 82(fvec4) + 270: 7(int) Constant 91 + 271: 82(fvec4) ConstantComposite 137 152 137 137 + 274: 7(int) Constant 92 + 281: 7(int) Constant 93 + 282: 82(fvec4) ConstantComposite 137 137 137 152 + 285: 7(int) Constant 95 + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 288 83 18 285 12 17 23 + 290(inPos): 39(ptr) Variable Input + 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 292 33 18 285 12 21 292 290(inPos) 38 + 301: 7(int) Constant 96 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 304 83 18 301 12 17 23 +308(instanceScale): 79(ptr) Variable Input + 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 310 31 18 301 12 21 310 308(instanceScale) 38 +313(instancePos): 39(ptr) Variable Input + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 315 33 18 301 12 21 315 313(instancePos) 38 + 323: 7(int) Constant 98 + 324: TypeArray 29(float) 22 + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 +326(gl_PerVertex): TypeStruct 82(fvec4) 29(float) 324 324 + 329: 7(int) Constant 24 + 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 328 83 18 22 329 12 12 13 + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 331 31 18 22 91 12 12 13 + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 333 325 18 22 230 12 12 13 + 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 333 325 18 22 230 12 12 13 + 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 336 22 18 323 12 21 336 12 13 327 330 332 334 + 337: TypePointer Output 326(gl_PerVertex) + 338: 337(ptr) Variable Output + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 335 18 323 12 21 1 338 38 + 340: TypePointer Uniform 84 + 350: TypePointer Output 82(fvec4) + 353: 7(int) Constant 99 + 354(outNormal): 34(ptr) Variable Output + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 356 33 18 353 12 21 356 354(outNormal) 38 + 371(inNormal): 39(ptr) Variable Input + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 373 33 18 353 12 21 373 371(inNormal) 38 + 377: 7(int) Constant 101 + 389: 7(int) Constant 102 + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 392 33 18 389 12 17 23 + 403: TypePointer Uniform 82(fvec4) + 409: 7(int) Constant 103 +410(outLightVec): 34(ptr) Variable Output + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 412 33 18 409 12 21 412 410(outLightVec) 38 + 418: 7(int) Constant 104 + 419(outViewVec): 34(ptr) Variable Output + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 421 33 18 418 12 21 421 419(outViewVec) 38 Line 1 54 11 14(main): 4 Function None 5 - 23: Label - 70(s): 69(ptr) Variable Function - 114(c): 69(ptr) Variable Function - 129(mx): 128(ptr) Variable Function - 172(my): 128(ptr) Variable Function - 209(mz): 128(ptr) Variable Function - 230(rotMat): 128(ptr) Variable Function - 259(gRotMat): 258(ptr) Variable Function - 285(locPos): 266(ptr) Variable Function - 301(pos): 266(ptr) Variable Function - 389(lPos): 138(ptr) Variable Function - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - 42: 31(fvec3) Load 39(inColor) - Store 34(outColor) 42 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 44 44 12 12 - 54: 48(fvec2) Load 51(inUV) - 62: 55(int) Load 59(instanceTexIndex) - 63: 28(float) ConvertSToF 62 - 64: 28(float) CompositeExtract 54 0 - 65: 28(float) CompositeExtract 54 1 - 66: 31(fvec3) CompositeConstruct 64 65 63 - Store 45(outUV) 66 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 68 68 12 12 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 70(s) 74 - 79: 78(ptr) AccessChain 75(instanceRot) 12 - 80: 28(float) Load 79 - 108: 107(ptr) AccessChain 103(ubo) 106 - 109: 28(float) Load 108 - 110: 28(float) FAdd 80 109 - 111: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 110 - Store 70(s) 111 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 113 113 12 12 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 115 114(c) 74 - 118: 78(ptr) AccessChain 75(instanceRot) 12 - 119: 28(float) Load 118 - 120: 107(ptr) AccessChain 103(ubo) 106 - 121: 28(float) Load 120 - 122: 28(float) FAdd 119 121 - 123: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 122 - Store 114(c) 123 - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 125 125 12 12 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 130 129(mx) 74 - 134: 28(float) Load 114(c) - 135: 28(float) Load 70(s) - 137: 31(fvec3) CompositeConstruct 134 135 136 - 139: 138(ptr) AccessChain 129(mx) 133 - Store 139 137 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 141 141 12 12 - 143: 28(float) Load 70(s) - 144: 28(float) FNegate 143 - 145: 28(float) Load 114(c) - 146: 31(fvec3) CompositeConstruct 144 145 136 - 147: 138(ptr) AccessChain 129(mx) 142 - Store 147 146 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 149 149 12 12 - 153: 138(ptr) AccessChain 129(mx) 150 - Store 153 152 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 155 155 12 12 - 156: 78(ptr) AccessChain 75(instanceRot) 20 - 157: 28(float) Load 156 - 158: 107(ptr) AccessChain 103(ubo) 106 - 159: 28(float) Load 158 - 160: 28(float) FAdd 157 159 - 161: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 160 - Store 70(s) 161 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 163 163 12 12 - 164: 78(ptr) AccessChain 75(instanceRot) 20 - 165: 28(float) Load 164 - 166: 107(ptr) AccessChain 103(ubo) 106 - 167: 28(float) Load 166 - 168: 28(float) FAdd 165 167 - 169: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 168 - Store 114(c) 169 - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 171 171 12 12 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 173 172(my) 74 - 176: 28(float) Load 114(c) - 177: 28(float) Load 70(s) - 178: 31(fvec3) CompositeConstruct 176 136 177 - 179: 138(ptr) AccessChain 172(my) 133 - Store 179 178 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 181 181 12 12 - 183: 138(ptr) AccessChain 172(my) 142 - Store 183 182 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 185 185 12 12 - 186: 28(float) Load 70(s) - 187: 28(float) FNegate 186 - 188: 28(float) Load 114(c) - 189: 31(fvec3) CompositeConstruct 187 136 188 - 190: 138(ptr) AccessChain 172(my) 150 - Store 190 189 - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 192 192 12 12 - 193: 78(ptr) AccessChain 75(instanceRot) 22 - 194: 28(float) Load 193 - 195: 107(ptr) AccessChain 103(ubo) 106 - 196: 28(float) Load 195 - 197: 28(float) FAdd 194 196 - 198: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 197 - Store 70(s) 198 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 200 200 12 12 - 201: 78(ptr) AccessChain 75(instanceRot) 22 - 202: 28(float) Load 201 - 203: 107(ptr) AccessChain 103(ubo) 106 - 204: 28(float) Load 203 - 205: 28(float) FAdd 202 204 - 206: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 205 - Store 114(c) 206 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 208 208 12 12 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(mz) 74 - 214: 138(ptr) AccessChain 209(mz) 133 - Store 214 213 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 216 216 12 12 - 217: 28(float) Load 114(c) - 218: 28(float) Load 70(s) - 219: 31(fvec3) CompositeConstruct 136 217 218 - 220: 138(ptr) AccessChain 209(mz) 142 - Store 220 219 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 222 222 12 12 - 223: 28(float) Load 70(s) - 224: 28(float) FNegate 223 - 225: 28(float) Load 114(c) - 226: 31(fvec3) CompositeConstruct 136 224 225 - 227: 138(ptr) AccessChain 209(mz) 150 - Store 227 226 - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 229 229 12 12 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 231 230(rotMat) 74 - 234: 126 Load 209(mz) - 235: 126 Load 172(my) - 236: 126 MatrixTimesMatrix 234 235 - 237: 126 Load 129(mx) - 238: 126 MatrixTimesMatrix 236 237 - Store 230(rotMat) 238 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 240 240 12 12 - 241: 78(ptr) AccessChain 75(instanceRot) 20 - 242: 28(float) Load 241 - 244: 107(ptr) AccessChain 103(ubo) 243 - 245: 28(float) Load 244 - 246: 28(float) FAdd 242 245 - 247: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 246 - Store 70(s) 247 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 249 249 12 12 - 250: 78(ptr) AccessChain 75(instanceRot) 20 - 251: 28(float) Load 250 - 252: 107(ptr) AccessChain 103(ubo) 243 - 253: 28(float) Load 252 - 254: 28(float) FAdd 251 253 - 255: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 254 - Store 114(c) 255 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 257 257 12 12 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(gRotMat) 74 - 263: 28(float) Load 114(c) - 264: 28(float) Load 70(s) - 265: 81(fvec4) CompositeConstruct 263 136 264 136 - 267: 266(ptr) AccessChain 259(gRotMat) 133 - Store 267 265 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 269 269 12 12 - 271: 266(ptr) AccessChain 259(gRotMat) 142 - Store 271 270 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 273 273 12 12 - 274: 28(float) Load 70(s) - 275: 28(float) FNegate 274 - 276: 28(float) Load 114(c) - 277: 81(fvec4) CompositeConstruct 275 136 276 136 - 278: 266(ptr) AccessChain 259(gRotMat) 150 - Store 278 277 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 280 280 12 12 - 282: 266(ptr) AccessChain 259(gRotMat) 106 - Store 282 281 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 284 284 12 12 - 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 286 285(locPos) 74 - 292: 31(fvec3) Load 289(inPos) - 293: 126 Load 230(rotMat) - 294: 31(fvec3) VectorTimesMatrix 292 293 - 295: 28(float) CompositeExtract 294 0 - 296: 28(float) CompositeExtract 294 1 - 297: 28(float) CompositeExtract 294 2 - 298: 81(fvec4) CompositeConstruct 295 296 297 151 - Store 285(locPos) 298 - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 300 300 12 12 - 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(pos) 74 - 305: 81(fvec4) Load 285(locPos) - 306: 31(fvec3) VectorShuffle 305 305 0 1 2 - 310: 28(float) Load 307(instanceScale) - 311: 31(fvec3) VectorTimesScalar 306 310 - 315: 31(fvec3) Load 312(instancePos) - 316: 31(fvec3) FAdd 311 315 - 317: 28(float) CompositeExtract 316 0 - 318: 28(float) CompositeExtract 316 1 - 319: 28(float) CompositeExtract 316 2 - 320: 81(fvec4) CompositeConstruct 317 318 319 151 - Store 301(pos) 320 - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 322 322 12 12 - 340: 339(ptr) AccessChain 103(ubo) 133 - 341: 83 Load 340 - 342: 339(ptr) AccessChain 103(ubo) 142 - 343: 83 Load 342 - 344: 83 MatrixTimesMatrix 341 343 - 345: 83 Load 259(gRotMat) - 346: 83 MatrixTimesMatrix 344 345 - 347: 81(fvec4) Load 301(pos) - 348: 81(fvec4) MatrixTimesVector 346 347 - 350: 349(ptr) AccessChain 337 133 - Store 350 348 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 352 352 12 12 - 356: 339(ptr) AccessChain 103(ubo) 142 - 357: 83 Load 356 - 358: 83 Load 259(gRotMat) - 359: 83 MatrixTimesMatrix 357 358 - 360: 81(fvec4) CompositeExtract 359 0 - 361: 31(fvec3) VectorShuffle 360 360 0 1 2 - 362: 81(fvec4) CompositeExtract 359 1 - 363: 31(fvec3) VectorShuffle 362 362 0 1 2 - 364: 81(fvec4) CompositeExtract 359 2 - 365: 31(fvec3) VectorShuffle 364 364 0 1 2 - 366: 126 CompositeConstruct 361 363 365 - 367: 126 Load 230(rotMat) - 368: 126 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 367 - 369: 126 MatrixTimesMatrix 366 368 - 373: 31(fvec3) Load 370(inNormal) - 374: 31(fvec3) MatrixTimesVector 369 373 - Store 353(outNormal) 374 - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 376 376 12 12 - 377: 339(ptr) AccessChain 103(ubo) 142 - 378: 83 Load 377 - 379: 31(fvec3) Load 289(inPos) - 380: 31(fvec3) Load 312(instancePos) - 381: 31(fvec3) FAdd 379 380 - 382: 28(float) CompositeExtract 381 0 - 383: 28(float) CompositeExtract 381 1 - 384: 28(float) CompositeExtract 381 2 - 385: 81(fvec4) CompositeConstruct 382 383 384 151 - 386: 81(fvec4) MatrixTimesVector 378 385 - Store 301(pos) 386 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 388 388 12 12 - 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 390 389(lPos) 74 - 393: 339(ptr) AccessChain 103(ubo) 142 - 394: 83 Load 393 - 395: 81(fvec4) CompositeExtract 394 0 - 396: 31(fvec3) VectorShuffle 395 395 0 1 2 - 397: 81(fvec4) CompositeExtract 394 1 - 398: 31(fvec3) VectorShuffle 397 397 0 1 2 - 399: 81(fvec4) CompositeExtract 394 2 - 400: 31(fvec3) VectorShuffle 399 399 0 1 2 - 401: 126 CompositeConstruct 396 398 400 - 403: 402(ptr) AccessChain 103(ubo) 150 - 404: 81(fvec4) Load 403 - 405: 31(fvec3) VectorShuffle 404 404 0 1 2 - 406: 31(fvec3) MatrixTimesVector 401 405 - Store 389(lPos) 406 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 408 408 12 12 - 412: 31(fvec3) Load 389(lPos) - 413: 81(fvec4) Load 301(pos) - 414: 31(fvec3) VectorShuffle 413 413 0 1 2 - 415: 31(fvec3) FSub 412 414 - Store 409(outLightVec) 415 - 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 417 417 12 12 - 421: 81(fvec4) Load 301(pos) - 422: 31(fvec3) VectorShuffle 421 421 0 1 2 - 423: 31(fvec3) FNegate 422 - Store 418(outViewVec) 423 + 15: Label + 71(s): 70(ptr) Variable Function + 115(c): 70(ptr) Variable Function + 130(mx): 129(ptr) Variable Function + 173(my): 129(ptr) Variable Function + 210(mz): 129(ptr) Variable Function + 231(rotMat): 129(ptr) Variable Function + 260(gRotMat): 259(ptr) Variable Function + 286(locPos): 267(ptr) Variable Function + 302(pos): 267(ptr) Variable Function + 390(lPos): 139(ptr) Variable Function + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 43: 32(fvec3) Load 40(inColor) + Store 35(outColor) 43 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 45 45 12 12 + 55: 49(fvec2) Load 52(inUV) + 63: 56(int) Load 60(instanceTexIndex) + 64: 29(float) ConvertSToF 63 + 65: 29(float) CompositeExtract 55 0 + 66: 29(float) CompositeExtract 55 1 + 67: 32(fvec3) CompositeConstruct 65 66 64 + Store 46(outUV) 67 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 69 69 12 12 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 71(s) 75 + 80: 79(ptr) AccessChain 76(instanceRot) 12 + 81: 29(float) Load 80 + 109: 108(ptr) AccessChain 104(ubo) 107 + 110: 29(float) Load 109 + 111: 29(float) FAdd 81 110 + 112: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 111 + Store 71(s) 112 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 114 114 12 12 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 115(c) 75 + 119: 79(ptr) AccessChain 76(instanceRot) 12 + 120: 29(float) Load 119 + 121: 108(ptr) AccessChain 104(ubo) 107 + 122: 29(float) Load 121 + 123: 29(float) FAdd 120 122 + 124: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 123 + Store 115(c) 124 + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 126 126 12 12 + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 131 130(mx) 75 + 135: 29(float) Load 115(c) + 136: 29(float) Load 71(s) + 138: 32(fvec3) CompositeConstruct 135 136 137 + 140: 139(ptr) AccessChain 130(mx) 134 + Store 140 138 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 142 142 12 12 + 144: 29(float) Load 71(s) + 145: 29(float) FNegate 144 + 146: 29(float) Load 115(c) + 147: 32(fvec3) CompositeConstruct 145 146 137 + 148: 139(ptr) AccessChain 130(mx) 143 + Store 148 147 + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 150 150 12 12 + 154: 139(ptr) AccessChain 130(mx) 151 + Store 154 153 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 + 157: 79(ptr) AccessChain 76(instanceRot) 22 + 158: 29(float) Load 157 + 159: 108(ptr) AccessChain 104(ubo) 107 + 160: 29(float) Load 159 + 161: 29(float) FAdd 158 160 + 162: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 161 + Store 71(s) 162 + 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 164 164 12 12 + 165: 79(ptr) AccessChain 76(instanceRot) 22 + 166: 29(float) Load 165 + 167: 108(ptr) AccessChain 104(ubo) 107 + 168: 29(float) Load 167 + 169: 29(float) FAdd 166 168 + 170: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 169 + Store 115(c) 170 + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 172 172 12 12 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 174 173(my) 75 + 177: 29(float) Load 115(c) + 178: 29(float) Load 71(s) + 179: 32(fvec3) CompositeConstruct 177 137 178 + 180: 139(ptr) AccessChain 173(my) 134 + Store 180 179 + 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 182 182 12 12 + 184: 139(ptr) AccessChain 173(my) 143 + Store 184 183 + 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 186 186 12 12 + 187: 29(float) Load 71(s) + 188: 29(float) FNegate 187 + 189: 29(float) Load 115(c) + 190: 32(fvec3) CompositeConstruct 188 137 189 + 191: 139(ptr) AccessChain 173(my) 151 + Store 191 190 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 193 193 12 12 + 194: 79(ptr) AccessChain 76(instanceRot) 24 + 195: 29(float) Load 194 + 196: 108(ptr) AccessChain 104(ubo) 107 + 197: 29(float) Load 196 + 198: 29(float) FAdd 195 197 + 199: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 198 + Store 71(s) 199 + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 201 201 12 12 + 202: 79(ptr) AccessChain 76(instanceRot) 24 + 203: 29(float) Load 202 + 204: 108(ptr) AccessChain 104(ubo) 107 + 205: 29(float) Load 204 + 206: 29(float) FAdd 203 205 + 207: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 206 + Store 115(c) 207 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 209 209 12 12 + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(mz) 75 + 215: 139(ptr) AccessChain 210(mz) 134 + Store 215 214 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 217 217 12 12 + 218: 29(float) Load 115(c) + 219: 29(float) Load 71(s) + 220: 32(fvec3) CompositeConstruct 137 218 219 + 221: 139(ptr) AccessChain 210(mz) 143 + Store 221 220 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 223 223 12 12 + 224: 29(float) Load 71(s) + 225: 29(float) FNegate 224 + 226: 29(float) Load 115(c) + 227: 32(fvec3) CompositeConstruct 137 225 226 + 228: 139(ptr) AccessChain 210(mz) 151 + Store 228 227 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 230 230 12 12 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 232 231(rotMat) 75 + 235: 127 Load 210(mz) + 236: 127 Load 173(my) + 237: 127 MatrixTimesMatrix 235 236 + 238: 127 Load 130(mx) + 239: 127 MatrixTimesMatrix 237 238 + Store 231(rotMat) 239 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 241 241 12 12 + 242: 79(ptr) AccessChain 76(instanceRot) 22 + 243: 29(float) Load 242 + 245: 108(ptr) AccessChain 104(ubo) 244 + 246: 29(float) Load 245 + 247: 29(float) FAdd 243 246 + 248: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 247 + Store 71(s) 248 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12 + 251: 79(ptr) AccessChain 76(instanceRot) 22 + 252: 29(float) Load 251 + 253: 108(ptr) AccessChain 104(ubo) 244 + 254: 29(float) Load 253 + 255: 29(float) FAdd 252 254 + 256: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 255 + Store 115(c) 256 + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 258 258 12 12 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 261 260(gRotMat) 75 + 264: 29(float) Load 115(c) + 265: 29(float) Load 71(s) + 266: 82(fvec4) CompositeConstruct 264 137 265 137 + 268: 267(ptr) AccessChain 260(gRotMat) 134 + Store 268 266 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 270 270 12 12 + 272: 267(ptr) AccessChain 260(gRotMat) 143 + Store 272 271 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 274 274 12 12 + 275: 29(float) Load 71(s) + 276: 29(float) FNegate 275 + 277: 29(float) Load 115(c) + 278: 82(fvec4) CompositeConstruct 276 137 277 137 + 279: 267(ptr) AccessChain 260(gRotMat) 151 + Store 279 278 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 281 281 12 12 + 283: 267(ptr) AccessChain 260(gRotMat) 107 + Store 283 282 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 285 285 12 12 + 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 287 286(locPos) 75 + 293: 32(fvec3) Load 290(inPos) + 294: 127 Load 231(rotMat) + 295: 32(fvec3) VectorTimesMatrix 293 294 + 296: 29(float) CompositeExtract 295 0 + 297: 29(float) CompositeExtract 295 1 + 298: 29(float) CompositeExtract 295 2 + 299: 82(fvec4) CompositeConstruct 296 297 298 152 + Store 286(locPos) 299 + 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 301 301 12 12 + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 303 302(pos) 75 + 306: 82(fvec4) Load 286(locPos) + 307: 32(fvec3) VectorShuffle 306 306 0 1 2 + 311: 29(float) Load 308(instanceScale) + 312: 32(fvec3) VectorTimesScalar 307 311 + 316: 32(fvec3) Load 313(instancePos) + 317: 32(fvec3) FAdd 312 316 + 318: 29(float) CompositeExtract 317 0 + 319: 29(float) CompositeExtract 317 1 + 320: 29(float) CompositeExtract 317 2 + 321: 82(fvec4) CompositeConstruct 318 319 320 152 + Store 302(pos) 321 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 323 323 12 12 + 341: 340(ptr) AccessChain 104(ubo) 134 + 342: 84 Load 341 + 343: 340(ptr) AccessChain 104(ubo) 143 + 344: 84 Load 343 + 345: 84 MatrixTimesMatrix 342 344 + 346: 84 Load 260(gRotMat) + 347: 84 MatrixTimesMatrix 345 346 + 348: 82(fvec4) Load 302(pos) + 349: 82(fvec4) MatrixTimesVector 347 348 + 351: 350(ptr) AccessChain 338 134 + Store 351 349 + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 353 353 12 12 + 357: 340(ptr) AccessChain 104(ubo) 143 + 358: 84 Load 357 + 359: 84 Load 260(gRotMat) + 360: 84 MatrixTimesMatrix 358 359 + 361: 82(fvec4) CompositeExtract 360 0 + 362: 32(fvec3) VectorShuffle 361 361 0 1 2 + 363: 82(fvec4) CompositeExtract 360 1 + 364: 32(fvec3) VectorShuffle 363 363 0 1 2 + 365: 82(fvec4) CompositeExtract 360 2 + 366: 32(fvec3) VectorShuffle 365 365 0 1 2 + 367: 127 CompositeConstruct 362 364 366 + 368: 127 Load 231(rotMat) + 369: 127 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 368 + 370: 127 MatrixTimesMatrix 367 369 + 374: 32(fvec3) Load 371(inNormal) + 375: 32(fvec3) MatrixTimesVector 370 374 + Store 354(outNormal) 375 + 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 377 377 12 12 + 378: 340(ptr) AccessChain 104(ubo) 143 + 379: 84 Load 378 + 380: 32(fvec3) Load 290(inPos) + 381: 32(fvec3) Load 313(instancePos) + 382: 32(fvec3) FAdd 380 381 + 383: 29(float) CompositeExtract 382 0 + 384: 29(float) CompositeExtract 382 1 + 385: 29(float) CompositeExtract 382 2 + 386: 82(fvec4) CompositeConstruct 383 384 385 152 + 387: 82(fvec4) MatrixTimesVector 379 386 + Store 302(pos) 387 + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 389 389 12 12 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 391 390(lPos) 75 + 394: 340(ptr) AccessChain 104(ubo) 143 + 395: 84 Load 394 + 396: 82(fvec4) CompositeExtract 395 0 + 397: 32(fvec3) VectorShuffle 396 396 0 1 2 + 398: 82(fvec4) CompositeExtract 395 1 + 399: 32(fvec3) VectorShuffle 398 398 0 1 2 + 400: 82(fvec4) CompositeExtract 395 2 + 401: 32(fvec3) VectorShuffle 400 400 0 1 2 + 402: 127 CompositeConstruct 397 399 401 + 404: 403(ptr) AccessChain 104(ubo) 151 + 405: 82(fvec4) Load 404 + 406: 32(fvec3) VectorShuffle 405 405 0 1 2 + 407: 32(fvec3) MatrixTimesVector 402 406 + Store 390(lPos) 407 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 409 409 12 12 + 413: 32(fvec3) Load 390(lPos) + 414: 82(fvec4) Load 302(pos) + 415: 32(fvec3) VectorShuffle 414 414 0 1 2 + 416: 32(fvec3) FSub 413 415 + Store 410(outLightVec) 416 + 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 418 418 12 12 + 422: 82(fvec4) Load 302(pos) + 423: 32(fvec3) VectorShuffle 422 422 0 1 2 + 424: 32(fvec3) FNegate 423 + Store 419(outViewVec) 424 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index 30cd581a73..1845cfe075 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -1,20 +1,20 @@ spv.debuginfo.hlsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 976 +// Id's are bound by 978 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 6 "main" 971 + EntryPoint GLCompute 6 "main" 973 ExecutionMode 6 LocalSize 10 10 1 1: String "" 9: String "float" 12: String "uint" - 28: String "springForce" - 31: String "// OpModuleProcessed auto-map-locations + 29: String "springForce" + 32: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 @@ -23,153 +23,153 @@ spv.debuginfo.hlsl.comp // OpModuleProcessed hlsl-offsets #line 1 " - 40: String "p0" - 44: String "p1" - 48: String "restDist" - 57: String "@main" - 63: String "id" - 71: String "dist" - 83: String "int" - 89: String "sphereRadius" - 100: String "gravity" - 105: String "particleCount" - 108: String "UBO" - 111: String "params" - 115: String "ubo" - 140: String "index" - 163: String "bool" - 177: String "normal" - 184: String "pinned" - 188: String "Particle" - 193: String "@data" - 197: String "particleIn" - 219: String "particleOut" - 244: String "force" - 257: String "pos" - 267: String "vel" - 567: String "f" - 616: String "sphereDist" - 669: String "calculateNormals" - 673: String "PushConstants" - 676: String "pushConstants" - 679: String "$Global" - 719: String "a" - 732: String "b" - 749: String "c" + 41: String "p0" + 45: String "p1" + 49: String "restDist" + 59: String "@main" + 65: String "id" + 73: String "dist" + 85: String "int" + 91: String "sphereRadius" + 102: String "gravity" + 107: String "particleCount" + 110: String "UBO" + 113: String "params" + 117: String "ubo" + 142: String "index" + 165: String "bool" + 179: String "normal" + 186: String "pinned" + 190: String "Particle" + 195: String "@data" + 199: String "particleIn" + 221: String "particleOut" + 246: String "force" + 259: String "pos" + 269: String "vel" + 569: String "f" + 618: String "sphereDist" + 671: String "calculateNormals" + 675: String "PushConstants" + 678: String "pushConstants" + 681: String "$Global" + 721: String "a" + 734: String "b" + 751: String "c" Name 6 "main" Name 27 "springForce(vf3;vf3;f1;" Name 24 "p0" Name 25 "p1" Name 26 "restDist" - Name 56 "@main(vu3;" - Name 55 "id" - Name 69 "dist" - Name 87 "UBO" - MemberName 87(UBO) 0 "deltaT" - MemberName 87(UBO) 1 "particleMass" - MemberName 87(UBO) 2 "springStiffness" - MemberName 87(UBO) 3 "damping" - MemberName 87(UBO) 4 "restDistH" - MemberName 87(UBO) 5 "restDistV" - MemberName 87(UBO) 6 "restDistD" - MemberName 87(UBO) 7 "sphereRadius" - MemberName 87(UBO) 8 "spherePos" - MemberName 87(UBO) 9 "gravity" - MemberName 87(UBO) 10 "particleCount" - Name 109 "ubo" - MemberName 109(ubo) 0 "params" - Name 117 "" - Name 138 "index" - Name 175 "Particle" - MemberName 175(Particle) 0 "pos" - MemberName 175(Particle) 1 "vel" - MemberName 175(Particle) 2 "uv" - MemberName 175(Particle) 3 "normal" - MemberName 175(Particle) 4 "pinned" - Name 191 "particleIn" - MemberName 191(particleIn) 0 "@data" - Name 199 "particleIn" - Name 215 "particleOut" - MemberName 215(particleOut) 0 "@data" - Name 221 "particleOut" - Name 242 "force" - Name 255 "pos" - Name 265 "vel" - Name 286 "param" - Name 290 "param" + Name 57 "@main(vu3;" + Name 56 "id" + Name 71 "dist" + Name 89 "UBO" + MemberName 89(UBO) 0 "deltaT" + MemberName 89(UBO) 1 "particleMass" + MemberName 89(UBO) 2 "springStiffness" + MemberName 89(UBO) 3 "damping" + MemberName 89(UBO) 4 "restDistH" + MemberName 89(UBO) 5 "restDistV" + MemberName 89(UBO) 6 "restDistD" + MemberName 89(UBO) 7 "sphereRadius" + MemberName 89(UBO) 8 "spherePos" + MemberName 89(UBO) 9 "gravity" + MemberName 89(UBO) 10 "particleCount" + Name 111 "ubo" + MemberName 111(ubo) 0 "params" + Name 119 "" + Name 140 "index" + Name 177 "Particle" + MemberName 177(Particle) 0 "pos" + MemberName 177(Particle) 1 "vel" + MemberName 177(Particle) 2 "uv" + MemberName 177(Particle) 3 "normal" + MemberName 177(Particle) 4 "pinned" + Name 193 "particleIn" + MemberName 193(particleIn) 0 "@data" + Name 201 "particleIn" + Name 217 "particleOut" + MemberName 217(particleOut) 0 "@data" + Name 223 "particleOut" + Name 244 "force" + Name 257 "pos" + Name 267 "vel" + Name 288 "param" Name 292 "param" - Name 316 "param" - Name 320 "param" + Name 294 "param" + Name 318 "param" Name 322 "param" - Name 350 "param" - Name 354 "param" + Name 324 "param" + Name 352 "param" Name 356 "param" - Name 379 "param" - Name 383 "param" + Name 358 "param" + Name 381 "param" Name 385 "param" - Name 420 "param" - Name 424 "param" + Name 387 "param" + Name 422 "param" Name 426 "param" - Name 456 "param" - Name 460 "param" + Name 428 "param" + Name 458 "param" Name 462 "param" - Name 500 "param" - Name 504 "param" + Name 464 "param" + Name 502 "param" Name 506 "param" - Name 540 "param" - Name 544 "param" + Name 508 "param" + Name 542 "param" Name 546 "param" - Name 565 "f" - Name 614 "sphereDist" - Name 667 "PushConstants" - MemberName 667(PushConstants) 0 "calculateNormals" - Name 674 "$Global" - MemberName 674($Global) 0 "pushConstants" - Name 681 "" - Name 693 "normal" - Name 717 "a" - Name 730 "b" - Name 747 "c" - Name 969 "id" + Name 548 "param" + Name 567 "f" + Name 616 "sphereDist" + Name 669 "PushConstants" + MemberName 669(PushConstants) 0 "calculateNormals" + Name 676 "$Global" + MemberName 676($Global) 0 "pushConstants" + Name 683 "" + Name 695 "normal" + Name 719 "a" + Name 732 "b" + Name 749 "c" Name 971 "id" - Name 973 "param" - MemberDecorate 87(UBO) 0 Offset 0 - MemberDecorate 87(UBO) 1 Offset 4 - MemberDecorate 87(UBO) 2 Offset 8 - MemberDecorate 87(UBO) 3 Offset 12 - MemberDecorate 87(UBO) 4 Offset 16 - MemberDecorate 87(UBO) 5 Offset 20 - MemberDecorate 87(UBO) 6 Offset 24 - MemberDecorate 87(UBO) 7 Offset 28 - MemberDecorate 87(UBO) 8 Offset 32 - MemberDecorate 87(UBO) 9 Offset 48 - MemberDecorate 87(UBO) 10 Offset 64 - MemberDecorate 109(ubo) 0 Offset 0 - Decorate 109(ubo) Block - Decorate 117 DescriptorSet 0 - Decorate 117 Binding 2 - MemberDecorate 175(Particle) 0 Offset 0 - MemberDecorate 175(Particle) 1 Offset 16 - MemberDecorate 175(Particle) 2 Offset 32 - MemberDecorate 175(Particle) 3 Offset 48 - MemberDecorate 175(Particle) 4 Offset 64 - Decorate 189 ArrayStride 80 - MemberDecorate 191(particleIn) 0 NonWritable - MemberDecorate 191(particleIn) 0 Offset 0 - Decorate 191(particleIn) BufferBlock - Decorate 199(particleIn) DescriptorSet 0 - Decorate 199(particleIn) Binding 0 - Decorate 213 ArrayStride 80 - MemberDecorate 215(particleOut) 0 Offset 0 - Decorate 215(particleOut) BufferBlock - Decorate 221(particleOut) DescriptorSet 0 - Decorate 221(particleOut) Binding 1 - MemberDecorate 667(PushConstants) 0 Offset 0 - MemberDecorate 674($Global) 0 Offset 0 - Decorate 674($Global) Block - Decorate 681 DescriptorSet 0 - Decorate 681 Binding 3 - Decorate 971(id) BuiltIn GlobalInvocationId + Name 973 "id" + Name 975 "param" + MemberDecorate 89(UBO) 0 Offset 0 + MemberDecorate 89(UBO) 1 Offset 4 + MemberDecorate 89(UBO) 2 Offset 8 + MemberDecorate 89(UBO) 3 Offset 12 + MemberDecorate 89(UBO) 4 Offset 16 + MemberDecorate 89(UBO) 5 Offset 20 + MemberDecorate 89(UBO) 6 Offset 24 + MemberDecorate 89(UBO) 7 Offset 28 + MemberDecorate 89(UBO) 8 Offset 32 + MemberDecorate 89(UBO) 9 Offset 48 + MemberDecorate 89(UBO) 10 Offset 64 + MemberDecorate 111(ubo) 0 Offset 0 + Decorate 111(ubo) Block + Decorate 119 DescriptorSet 0 + Decorate 119 Binding 2 + MemberDecorate 177(Particle) 0 Offset 0 + MemberDecorate 177(Particle) 1 Offset 16 + MemberDecorate 177(Particle) 2 Offset 32 + MemberDecorate 177(Particle) 3 Offset 48 + MemberDecorate 177(Particle) 4 Offset 64 + Decorate 191 ArrayStride 80 + MemberDecorate 193(particleIn) 0 NonWritable + MemberDecorate 193(particleIn) 0 Offset 0 + Decorate 193(particleIn) BufferBlock + Decorate 201(particleIn) DescriptorSet 0 + Decorate 201(particleIn) Binding 0 + Decorate 215 ArrayStride 80 + MemberDecorate 217(particleOut) 0 Offset 0 + Decorate 217(particleOut) BufferBlock + Decorate 223(particleOut) DescriptorSet 0 + Decorate 223(particleOut) Binding 1 + MemberDecorate 669(PushConstants) 0 Offset 0 + MemberDecorate 676($Global) 0 Offset 0 + Decorate 676($Global) Block + Decorate 683 DescriptorSet 0 + Decorate 683 Binding 3 + Decorate 973(id) BuiltIn GlobalInvocationId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -186,233 +186,235 @@ spv.debuginfo.hlsl.comp 21: TypePointer Function 8(float) 22: TypeFunction 18(fvec3) 20(ptr) 20(ptr) 21(ptr) 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 10 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 31 - 33: 11(int) Constant 1 - 34: 11(int) Constant 4 - 35: 11(int) Constant 5 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 33 34 30 35 - 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 28 23 30 16 16 32 28 17 16 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 19 30 16 16 29 34 33 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 45: 11(int) Constant 2 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 19 30 16 16 29 34 45 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 10 30 16 16 29 34 17 - 50: TypeVector 11(int) 3 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 - 52: TypePointer Function 50(ivec3) - 53: TypeFunction 4 52(ptr) - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 51 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 54 30 16 16 32 57 17 16 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 63 51 30 16 16 58 34 33 - 68: 11(int) Constant 76 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 71 19 30 68 16 29 34 - 77: 11(int) Constant 77 - 80: TypeVector 8(float) 4 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 34 - 82: TypeInt 32 1 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 83 14 34 16 - 85: TypeVector 82(int) 2 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 84 45 - 87(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 80(fvec4) 80(fvec4) 85(ivec2) - 90: 11(int) Constant 48 - 91: 11(int) Constant 20 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 10 30 90 91 16 16 17 - 101: 11(int) Constant 50 - 102: 11(int) Constant 16 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 81 30 101 102 16 16 17 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 81 30 101 102 16 16 17 - 106: 11(int) Constant 51 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 105 86 30 106 91 16 16 17 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 108 33 30 77 16 32 108 16 17 88 92 93 94 95 96 97 98 99 103 104 - 109(ubo): TypeStruct 87(UBO) - 112: 11(int) Constant 56 - 113: 11(int) Constant 12 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 107 30 112 113 16 16 17 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 115 33 30 77 16 32 115 16 17 110 - 116: TypePointer Uniform 109(ubo) - 117: 116(ptr) Variable Uniform - 119: 11(int) Constant 8 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 114 30 77 16 32 1 117 119 - 120: 82(int) Constant 0 - 121: 82(int) Constant 2 - 122: TypePointer Uniform 8(float) - 136: 11(int) Constant 83 - 137: TypePointer Function 11(int) - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 13 30 136 16 58 34 - 144: 82(int) Constant 10 - 145: TypePointer Uniform 82(int) - 154: 11(int) Constant 84 - 162: TypeBool - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 170: 11(int) Constant 85 - 174: 11(int) Constant 88 - 175(Particle): TypeStruct 80(fvec4) 80(fvec4) 80(fvec4) 80(fvec4) 8(float) - 178: 11(int) Constant 30 - 179: 11(int) Constant 15 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 - 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 177 81 30 178 179 16 16 17 - 185: 11(int) Constant 31 - 186: 11(int) Constant 14 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 10 30 185 186 16 16 17 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 188 33 30 174 16 32 188 16 17 176 180 181 182 183 - 189: TypeRuntimeArray 175(Particle) - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 16 - 191(particleIn): TypeStruct 189 - 194: 11(int) Constant 35 - 195: 11(int) Constant 28 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 190 30 194 195 16 16 17 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 197 33 30 174 16 32 197 16 17 192 - 198: TypePointer Uniform 191(particleIn) - 199(particleIn): 198(ptr) Variable Uniform - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 197 196 30 174 16 32 197 199(particleIn) 119 - 202: 82(int) Constant 4 - 205: 8(float) Constant 1065353216 - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 212: 11(int) Constant 89 - 213: TypeRuntimeArray 175(Particle) - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 16 -215(particleOut): TypeStruct 213 - 217: 11(int) Constant 37 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 214 30 217 178 16 16 17 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 219 33 30 212 16 32 219 16 17 216 - 220: TypePointer Uniform 215(particleOut) -221(particleOut): 220(ptr) Variable Uniform - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 219 218 30 212 16 32 219 221(particleOut) 119 - 225: TypePointer Uniform 80(fvec4) - 230: 11(int) Constant 90 - 232: 82(int) Constant 1 - 233: 8(float) Constant 0 - 234: 80(fvec4) ConstantComposite 233 233 233 233 - 237: 11(int) Constant 91 - 241: 11(int) Constant 95 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 19 30 241 16 58 34 - 246: 82(int) Constant 9 - 254: 11(int) Constant 97 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 257 19 30 254 16 58 34 - 264: 11(int) Constant 98 - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 267 19 30 264 16 58 34 - 274: 11(int) Constant 102 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 283: 11(int) Constant 103 - 300: 11(int) Constant 106 - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 313: 11(int) Constant 107 - 330: 11(int) Constant 110 - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 343: 11(int) Constant 111 - 349: 82(int) Constant 5 - 364: 11(int) Constant 114 - 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 373: 11(int) Constant 115 - 393: 11(int) Constant 118 - 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 412: 11(int) Constant 119 - 419: 82(int) Constant 6 - 434: 11(int) Constant 122 - 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 449: 11(int) Constant 123 - 470: 11(int) Constant 126 - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 493: 11(int) Constant 127 - 514: 11(int) Constant 130 - 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 533: 11(int) Constant 131 - 554: 11(int) Constant 134 - 555: 82(int) Constant 3 - 564: 11(int) Constant 137 - 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 567 19 30 564 16 58 34 - 575: 11(int) Constant 138 - 583: 8(float) Constant 1056964608 - 599: 11(int) Constant 139 - 613: 11(int) Constant 142 - 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 616 19 30 613 16 58 34 - 622: 82(int) Constant 8 - 628: 11(int) Constant 143 - 631: 82(int) Constant 7 - 634: 8(float) Constant 1008981770 - 636: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 642: 11(int) Constant 145 - 661: 11(int) Constant 147 - 666: 11(int) Constant 151 -667(PushConstants): TypeStruct 11(int) - 670: 11(int) Constant 67 - 671: 11(int) Constant 23 - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 669 13 30 670 671 16 16 17 - 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 673 33 30 666 16 32 673 16 17 668 - 674($Global): TypeStruct 667(PushConstants) - 677: 11(int) Constant 71 - 675: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 676 672 30 677 179 16 16 17 - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 679 33 30 666 16 32 679 16 17 675 - 680: TypePointer Uniform 674($Global) - 681: 680(ptr) Variable Uniform - 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 678 30 666 16 32 1 681 119 - 683: TypePointer Uniform 11(int) - 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 692: 11(int) Constant 152 - 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 177 19 30 692 16 58 34 - 696: 18(fvec3) ConstantComposite 233 233 233 - 698: 11(int) Constant 154 - 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 707: 11(int) Constant 155 - 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 716: 11(int) Constant 156 - 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 19 30 716 16 58 34 - 729: 11(int) Constant 157 - 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 732 19 30 729 16 58 34 - 746: 11(int) Constant 158 - 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 19 30 746 16 58 34 - 762: 11(int) Constant 159 - 774: 11(int) Constant 161 - 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 787: 11(int) Constant 162 - 799: 11(int) Constant 163 - 812: 11(int) Constant 164 - 821: 11(int) Constant 165 - 833: 11(int) Constant 168 - 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 846: 11(int) Constant 169 - 849: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 855: 11(int) Constant 170 - 867: 11(int) Constant 171 - 880: 11(int) Constant 172 - 889: 11(int) Constant 173 - 901: 11(int) Constant 175 - 908: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 163 14 45 16 - 914: 11(int) Constant 176 - 923: 11(int) Constant 177 - 936: 11(int) Constant 178 - 948: 11(int) Constant 179 - 960: 11(int) Constant 182 - 970: TypePointer Input 50(ivec3) - 971(id): 970(ptr) Variable Input + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 32 + 33: 11(int) Constant 75 + 35: 11(int) Constant 1 + 36: 11(int) Constant 4 + 37: 11(int) Constant 5 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 35 36 31 37 + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 29 23 31 33 16 34 29 17 33 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 19 31 33 16 30 36 35 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 46: 11(int) Constant 2 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 19 31 33 16 30 36 46 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 10 31 33 16 30 36 17 + 51: TypeVector 11(int) 3 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 53: TypePointer Function 51(ivec3) + 54: TypeFunction 4 53(ptr) + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 52 + 61: 11(int) Constant 82 + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 59 55 31 61 16 34 59 17 61 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 52 31 61 16 60 36 35 + 70: 11(int) Constant 76 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 19 31 70 16 30 36 + 79: 11(int) Constant 77 + 82: TypeVector 8(float) 4 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 36 + 84: TypeInt 32 1 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 85 14 36 16 + 87: TypeVector 84(int) 2 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 86 46 + 89(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 82(fvec4) 82(fvec4) 87(ivec2) + 92: 11(int) Constant 48 + 93: 11(int) Constant 20 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 + 103: 11(int) Constant 50 + 104: 11(int) Constant 16 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 83 31 103 104 16 16 17 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 83 31 103 104 16 16 17 + 108: 11(int) Constant 51 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 88 31 108 93 16 16 17 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 110 35 31 79 16 34 110 16 17 90 94 95 96 97 98 99 100 101 105 106 + 111(ubo): TypeStruct 89(UBO) + 114: 11(int) Constant 56 + 115: 11(int) Constant 12 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 113 109 31 114 115 16 16 17 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 117 35 31 79 16 34 117 16 17 112 + 118: TypePointer Uniform 111(ubo) + 119: 118(ptr) Variable Uniform + 121: 11(int) Constant 8 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 116 31 79 16 34 1 119 121 + 122: 84(int) Constant 0 + 123: 84(int) Constant 2 + 124: TypePointer Uniform 8(float) + 138: 11(int) Constant 83 + 139: TypePointer Function 11(int) + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 13 31 138 16 60 36 + 146: 84(int) Constant 10 + 147: TypePointer Uniform 84(int) + 156: 11(int) Constant 84 + 164: TypeBool + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 172: 11(int) Constant 85 + 176: 11(int) Constant 88 + 177(Particle): TypeStruct 82(fvec4) 82(fvec4) 82(fvec4) 82(fvec4) 8(float) + 180: 11(int) Constant 30 + 181: 11(int) Constant 15 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 + 187: 11(int) Constant 31 + 188: 11(int) Constant 14 + 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 10 31 187 188 16 16 17 + 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 190 35 31 176 16 34 190 16 17 178 182 183 184 185 + 191: TypeRuntimeArray 177(Particle) + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 189 16 + 193(particleIn): TypeStruct 191 + 196: 11(int) Constant 35 + 197: 11(int) Constant 28 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 192 31 196 197 16 16 17 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 199 35 31 176 16 34 199 16 17 194 + 200: TypePointer Uniform 193(particleIn) + 201(particleIn): 200(ptr) Variable Uniform + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 199 198 31 176 16 34 199 201(particleIn) 121 + 204: 84(int) Constant 4 + 207: 8(float) Constant 1065353216 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 214: 11(int) Constant 89 + 215: TypeRuntimeArray 177(Particle) + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 189 16 +217(particleOut): TypeStruct 215 + 219: 11(int) Constant 37 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 216 31 219 180 16 16 17 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 221 35 31 214 16 34 221 16 17 218 + 222: TypePointer Uniform 217(particleOut) +223(particleOut): 222(ptr) Variable Uniform + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 221 220 31 214 16 34 221 223(particleOut) 121 + 227: TypePointer Uniform 82(fvec4) + 232: 11(int) Constant 90 + 234: 84(int) Constant 1 + 235: 8(float) Constant 0 + 236: 82(fvec4) ConstantComposite 235 235 235 235 + 239: 11(int) Constant 91 + 243: 11(int) Constant 95 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 246 19 31 243 16 60 36 + 248: 84(int) Constant 9 + 256: 11(int) Constant 97 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 259 19 31 256 16 60 36 + 266: 11(int) Constant 98 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 19 31 266 16 60 36 + 276: 11(int) Constant 102 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 285: 11(int) Constant 103 + 302: 11(int) Constant 106 + 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 315: 11(int) Constant 107 + 332: 11(int) Constant 110 + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 345: 11(int) Constant 111 + 351: 84(int) Constant 5 + 366: 11(int) Constant 114 + 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 375: 11(int) Constant 115 + 395: 11(int) Constant 118 + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 414: 11(int) Constant 119 + 421: 84(int) Constant 6 + 436: 11(int) Constant 122 + 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 451: 11(int) Constant 123 + 472: 11(int) Constant 126 + 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 495: 11(int) Constant 127 + 516: 11(int) Constant 130 + 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 535: 11(int) Constant 131 + 556: 11(int) Constant 134 + 557: 84(int) Constant 3 + 566: 11(int) Constant 137 + 568: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 569 19 31 566 16 60 36 + 577: 11(int) Constant 138 + 585: 8(float) Constant 1056964608 + 601: 11(int) Constant 139 + 615: 11(int) Constant 142 + 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 618 19 31 615 16 60 36 + 624: 84(int) Constant 8 + 630: 11(int) Constant 143 + 633: 84(int) Constant 7 + 636: 8(float) Constant 1008981770 + 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 644: 11(int) Constant 145 + 663: 11(int) Constant 147 + 668: 11(int) Constant 151 +669(PushConstants): TypeStruct 11(int) + 672: 11(int) Constant 67 + 673: 11(int) Constant 23 + 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 671 13 31 672 673 16 16 17 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 675 35 31 668 16 34 675 16 17 670 + 676($Global): TypeStruct 669(PushConstants) + 679: 11(int) Constant 71 + 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 678 674 31 679 181 16 16 17 + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 681 35 31 668 16 34 681 16 17 677 + 682: TypePointer Uniform 676($Global) + 683: 682(ptr) Variable Uniform + 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 680 31 668 16 34 1 683 121 + 685: TypePointer Uniform 11(int) + 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 694: 11(int) Constant 152 + 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 19 31 694 16 60 36 + 698: 18(fvec3) ConstantComposite 235 235 235 + 700: 11(int) Constant 154 + 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 709: 11(int) Constant 155 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 718: 11(int) Constant 156 + 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 721 19 31 718 16 60 36 + 731: 11(int) Constant 157 + 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 19 31 731 16 60 36 + 748: 11(int) Constant 158 + 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 751 19 31 748 16 60 36 + 764: 11(int) Constant 159 + 776: 11(int) Constant 161 + 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 789: 11(int) Constant 162 + 801: 11(int) Constant 163 + 814: 11(int) Constant 164 + 823: 11(int) Constant 165 + 835: 11(int) Constant 168 + 842: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 848: 11(int) Constant 169 + 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 857: 11(int) Constant 170 + 869: 11(int) Constant 171 + 882: 11(int) Constant 172 + 891: 11(int) Constant 173 + 903: 11(int) Constant 175 + 910: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 + 916: 11(int) Constant 176 + 925: 11(int) Constant 177 + 938: 11(int) Constant 178 + 950: 11(int) Constant 179 + 962: 11(int) Constant 182 + 972: TypePointer Input 51(ivec3) + 973(id): 972(ptr) Variable Input Line 1 82 1 6(main): 4 Function None 5 7: Label - 969(id): 52(ptr) Variable Function - 973(param): 52(ptr) Variable Function + 971(id): 53(ptr) Variable Function + 975(param): 53(ptr) Variable Function Line 1 82 0 - 972: 50(ivec3) Load 971(id) - Store 969(id) 972 - 974: 50(ivec3) Load 969(id) - Store 973(param) 974 - 975: 4 FunctionCall 56(@main(vu3;) 973(param) + 974: 51(ivec3) Load 973(id) + Store 971(id) 974 + 976: 51(ivec3) Load 971(id) + Store 975(param) 976 + 977: 4 FunctionCall 57(@main(vu3;) 975(param) Return FunctionEnd Line 1 75 1 @@ -420,816 +422,816 @@ spv.debuginfo.hlsl.comp 24(p0): 20(ptr) FunctionParameter 25(p1): 20(ptr) FunctionParameter 26(restDist): 21(ptr) FunctionParameter - 36: Label - 69(dist): 20(ptr) Variable Function - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 16 16 16 16 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 24(p0) 42 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 25(p1) 42 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 26(restDist) 42 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 29 27(springForce(vf3;vf3;f1;) - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 68 68 16 16 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 70 69(dist) 42 - 73: 18(fvec3) Load 24(p0) - 74: 18(fvec3) Load 25(p1) - 75: 18(fvec3) FSub 73 74 - Store 69(dist) 75 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 77 77 16 16 - 78: 18(fvec3) Load 69(dist) - 79: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 78 - 123: 122(ptr) AccessChain 117 120 121 - 124: 8(float) Load 123 - 125: 18(fvec3) VectorTimesScalar 79 124 - 126: 18(fvec3) Load 69(dist) - 127: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 126 - 128: 8(float) Load 26(restDist) - 129: 8(float) FSub 127 128 - 130: 18(fvec3) VectorTimesScalar 125 129 - ReturnValue 130 + 28: Label + 71(dist): 20(ptr) Variable Function + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 33 33 16 16 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 24(p0) 43 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 25(p1) 43 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 26(restDist) 43 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 30 27(springForce(vf3;vf3;f1;) + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 70 70 16 16 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 71(dist) 43 + 75: 18(fvec3) Load 24(p0) + 76: 18(fvec3) Load 25(p1) + 77: 18(fvec3) FSub 75 76 + Store 71(dist) 77 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 79 79 16 16 + 80: 18(fvec3) Load 71(dist) + 81: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 80 + 125: 124(ptr) AccessChain 119 122 123 + 126: 8(float) Load 125 + 127: 18(fvec3) VectorTimesScalar 81 126 + 128: 18(fvec3) Load 71(dist) + 129: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 128 + 130: 8(float) Load 26(restDist) + 131: 8(float) FSub 129 130 + 132: 18(fvec3) VectorTimesScalar 127 131 + ReturnValue 132 FunctionEnd Line 1 82 1 - 56(@main(vu3;): 4 Function None 53 - 55(id): 52(ptr) FunctionParameter - 59: Label - 138(index): 137(ptr) Variable Function - 242(force): 20(ptr) Variable Function - 255(pos): 20(ptr) Variable Function - 265(vel): 20(ptr) Variable Function - 286(param): 20(ptr) Variable Function - 290(param): 20(ptr) Variable Function - 292(param): 21(ptr) Variable Function - 316(param): 20(ptr) Variable Function - 320(param): 20(ptr) Variable Function - 322(param): 21(ptr) Variable Function - 350(param): 20(ptr) Variable Function - 354(param): 20(ptr) Variable Function - 356(param): 21(ptr) Variable Function - 379(param): 20(ptr) Variable Function - 383(param): 20(ptr) Variable Function - 385(param): 21(ptr) Variable Function - 420(param): 20(ptr) Variable Function - 424(param): 20(ptr) Variable Function - 426(param): 21(ptr) Variable Function - 456(param): 20(ptr) Variable Function - 460(param): 20(ptr) Variable Function - 462(param): 21(ptr) Variable Function - 500(param): 20(ptr) Variable Function - 504(param): 20(ptr) Variable Function - 506(param): 21(ptr) Variable Function - 540(param): 20(ptr) Variable Function - 544(param): 20(ptr) Variable Function - 546(param): 21(ptr) Variable Function - 565(f): 20(ptr) Variable Function - 614(sphereDist): 20(ptr) Variable Function - 693(normal): 20(ptr) Variable Function - 717(a): 20(ptr) Variable Function - 730(b): 20(ptr) Variable Function - 747(c): 20(ptr) Variable Function - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 16 16 16 16 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 62 55(id) 42 - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 56(@main(vu3;) - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 136 136 16 16 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 138(index) 42 - 142: 137(ptr) AccessChain 55(id) 33 - 143: 11(int) Load 142 - 146: 145(ptr) AccessChain 117 120 144 16 - 147: 82(int) Load 146 - 148: 11(int) Bitcast 147 - 149: 11(int) IMul 143 148 - 150: 137(ptr) AccessChain 55(id) 16 - 151: 11(int) Load 150 - 152: 11(int) IAdd 149 151 - Store 138(index) 152 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 154 154 16 16 - 155: 11(int) Load 138(index) - 156: 145(ptr) AccessChain 117 120 144 16 - 157: 82(int) Load 156 - 158: 145(ptr) AccessChain 117 120 144 33 - 159: 82(int) Load 158 - 160: 82(int) IMul 157 159 - 161: 11(int) Bitcast 160 - 165: 162(bool) UGreaterThan 155 161 - SelectionMerge 167 None - BranchConditional 165 166 167 - 166: Label - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 170 170 16 16 + 57(@main(vu3;): 4 Function None 54 + 56(id): 53(ptr) FunctionParameter + 58: Label + 140(index): 139(ptr) Variable Function + 244(force): 20(ptr) Variable Function + 257(pos): 20(ptr) Variable Function + 267(vel): 20(ptr) Variable Function + 288(param): 20(ptr) Variable Function + 292(param): 20(ptr) Variable Function + 294(param): 21(ptr) Variable Function + 318(param): 20(ptr) Variable Function + 322(param): 20(ptr) Variable Function + 324(param): 21(ptr) Variable Function + 352(param): 20(ptr) Variable Function + 356(param): 20(ptr) Variable Function + 358(param): 21(ptr) Variable Function + 381(param): 20(ptr) Variable Function + 385(param): 20(ptr) Variable Function + 387(param): 21(ptr) Variable Function + 422(param): 20(ptr) Variable Function + 426(param): 20(ptr) Variable Function + 428(param): 21(ptr) Variable Function + 458(param): 20(ptr) Variable Function + 462(param): 20(ptr) Variable Function + 464(param): 21(ptr) Variable Function + 502(param): 20(ptr) Variable Function + 506(param): 20(ptr) Variable Function + 508(param): 21(ptr) Variable Function + 542(param): 20(ptr) Variable Function + 546(param): 20(ptr) Variable Function + 548(param): 21(ptr) Variable Function + 567(f): 20(ptr) Variable Function + 616(sphereDist): 20(ptr) Variable Function + 695(normal): 20(ptr) Variable Function + 719(a): 20(ptr) Variable Function + 732(b): 20(ptr) Variable Function + 749(c): 20(ptr) Variable Function + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 61 61 16 16 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 56(id) 43 + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 60 57(@main(vu3;) + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 138 138 16 16 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(index) 43 + 144: 139(ptr) AccessChain 56(id) 35 + 145: 11(int) Load 144 + 148: 147(ptr) AccessChain 119 122 146 16 + 149: 84(int) Load 148 + 150: 11(int) Bitcast 149 + 151: 11(int) IMul 145 150 + 152: 139(ptr) AccessChain 56(id) 16 + 153: 11(int) Load 152 + 154: 11(int) IAdd 151 153 + Store 140(index) 154 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 156 156 16 16 + 157: 11(int) Load 140(index) + 158: 147(ptr) AccessChain 119 122 146 16 + 159: 84(int) Load 158 + 160: 147(ptr) AccessChain 119 122 146 35 + 161: 84(int) Load 160 + 162: 84(int) IMul 159 161 + 163: 11(int) Bitcast 162 + 167: 164(bool) UGreaterThan 157 163 + SelectionMerge 169 None + BranchConditional 167 168 169 + 168: Label + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 172 172 16 16 Return - 167: Label - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 174 174 16 16 - 201: 11(int) Load 138(index) - 203: 122(ptr) AccessChain 199(particleIn) 120 201 202 - 204: 8(float) Load 203 - 207: 162(bool) FOrdEqual 204 205 - SelectionMerge 209 None - BranchConditional 207 208 209 - 208: Label - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 212 212 16 16 - 223: 11(int) Load 138(index) - 224: 11(int) Load 138(index) - 226: 225(ptr) AccessChain 221(particleOut) 120 224 120 - 227: 80(fvec4) Load 226 - 228: 225(ptr) AccessChain 221(particleOut) 120 223 120 - Store 228 227 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 230 230 16 16 - 231: 11(int) Load 138(index) - 235: 225(ptr) AccessChain 221(particleOut) 120 231 232 - Store 235 234 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 237 237 16 16 + 169: Label + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 176 176 16 16 + 203: 11(int) Load 140(index) + 205: 124(ptr) AccessChain 201(particleIn) 122 203 204 + 206: 8(float) Load 205 + 209: 164(bool) FOrdEqual 206 207 + SelectionMerge 211 None + BranchConditional 209 210 211 + 210: Label + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 214 214 16 16 + 225: 11(int) Load 140(index) + 226: 11(int) Load 140(index) + 228: 227(ptr) AccessChain 223(particleOut) 122 226 122 + 229: 82(fvec4) Load 228 + 230: 227(ptr) AccessChain 223(particleOut) 122 225 122 + Store 230 229 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 232 232 16 16 + 233: 11(int) Load 140(index) + 237: 227(ptr) AccessChain 223(particleOut) 122 233 234 + Store 237 236 + 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 239 239 16 16 Return - 209: Label - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 241 241 16 16 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(force) 42 - 247: 225(ptr) AccessChain 117 120 246 - 248: 80(fvec4) Load 247 - 249: 18(fvec3) VectorShuffle 248 248 0 1 2 - 250: 122(ptr) AccessChain 117 120 232 - 251: 8(float) Load 250 - 252: 18(fvec3) VectorTimesScalar 249 251 - Store 242(force) 252 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 254 254 16 16 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 256 255(pos) 42 - 259: 11(int) Load 138(index) - 260: 225(ptr) AccessChain 199(particleIn) 120 259 120 - 261: 80(fvec4) Load 260 - 262: 18(fvec3) VectorShuffle 261 261 0 1 2 - Store 255(pos) 262 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 266 265(vel) 42 - 269: 11(int) Load 138(index) - 270: 225(ptr) AccessChain 199(particleIn) 120 269 232 - 271: 80(fvec4) Load 270 - 272: 18(fvec3) VectorShuffle 271 271 0 1 2 - Store 265(vel) 272 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 274 274 16 16 - 275: 137(ptr) AccessChain 55(id) 16 - 276: 11(int) Load 275 - 278: 162(bool) UGreaterThan 276 16 - SelectionMerge 280 None - BranchConditional 278 279 280 - 279: Label - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 283 283 16 16 - 284: 11(int) Load 138(index) - 285: 11(int) ISub 284 33 - 287: 225(ptr) AccessChain 199(particleIn) 120 285 120 - 288: 80(fvec4) Load 287 - 289: 18(fvec3) VectorShuffle 288 288 0 1 2 - Store 286(param) 289 - 291: 18(fvec3) Load 255(pos) - Store 290(param) 291 - 293: 122(ptr) AccessChain 117 120 202 - 294: 8(float) Load 293 - Store 292(param) 294 - 295: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 286(param) 290(param) 292(param) - 296: 18(fvec3) Load 242(force) - 297: 18(fvec3) FAdd 296 295 - Store 242(force) 297 - Branch 280 - 280: Label - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 300 300 16 16 - 301: 137(ptr) AccessChain 55(id) 16 - 302: 11(int) Load 301 - 303: 145(ptr) AccessChain 117 120 144 16 - 304: 82(int) Load 303 - 305: 82(int) ISub 304 232 - 306: 11(int) Bitcast 305 - 308: 162(bool) ULessThan 302 306 - SelectionMerge 310 None - BranchConditional 308 309 310 - 309: Label - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 313 313 16 16 - 314: 11(int) Load 138(index) - 315: 11(int) IAdd 314 33 - 317: 225(ptr) AccessChain 199(particleIn) 120 315 120 - 318: 80(fvec4) Load 317 - 319: 18(fvec3) VectorShuffle 318 318 0 1 2 - Store 316(param) 319 - 321: 18(fvec3) Load 255(pos) - Store 320(param) 321 - 323: 122(ptr) AccessChain 117 120 202 - 324: 8(float) Load 323 - Store 322(param) 324 - 325: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 316(param) 320(param) 322(param) - 326: 18(fvec3) Load 242(force) - 327: 18(fvec3) FAdd 326 325 - Store 242(force) 327 - Branch 310 - 310: Label - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 330 330 16 16 - 331: 137(ptr) AccessChain 55(id) 33 - 332: 11(int) Load 331 - 333: 145(ptr) AccessChain 117 120 144 33 - 334: 82(int) Load 333 - 335: 82(int) ISub 334 232 - 336: 11(int) Bitcast 335 - 338: 162(bool) ULessThan 332 336 - SelectionMerge 340 None - BranchConditional 338 339 340 - 339: Label - 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 343 343 16 16 - 344: 11(int) Load 138(index) - 345: 145(ptr) AccessChain 117 120 144 16 - 346: 82(int) Load 345 - 347: 11(int) Bitcast 346 - 348: 11(int) IAdd 344 347 - 351: 225(ptr) AccessChain 199(particleIn) 120 348 120 - 352: 80(fvec4) Load 351 - 353: 18(fvec3) VectorShuffle 352 352 0 1 2 - Store 350(param) 353 - 355: 18(fvec3) Load 255(pos) - Store 354(param) 355 - 357: 122(ptr) AccessChain 117 120 349 - 358: 8(float) Load 357 - Store 356(param) 358 - 359: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 350(param) 354(param) 356(param) - 360: 18(fvec3) Load 242(force) - 361: 18(fvec3) FAdd 360 359 - Store 242(force) 361 - Branch 340 - 340: Label - 362: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 364 364 16 16 - 365: 137(ptr) AccessChain 55(id) 33 - 366: 11(int) Load 365 - 368: 162(bool) UGreaterThan 366 16 - SelectionMerge 370 None - BranchConditional 368 369 370 - 369: Label - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 373 373 16 16 - 374: 11(int) Load 138(index) - 375: 145(ptr) AccessChain 117 120 144 16 - 376: 82(int) Load 375 - 377: 11(int) Bitcast 376 - 378: 11(int) ISub 374 377 - 380: 225(ptr) AccessChain 199(particleIn) 120 378 120 - 381: 80(fvec4) Load 380 - 382: 18(fvec3) VectorShuffle 381 381 0 1 2 - Store 379(param) 382 - 384: 18(fvec3) Load 255(pos) - Store 383(param) 384 - 386: 122(ptr) AccessChain 117 120 349 - 387: 8(float) Load 386 - Store 385(param) 387 - 388: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 379(param) 383(param) 385(param) - 389: 18(fvec3) Load 242(force) - 390: 18(fvec3) FAdd 389 388 - Store 242(force) 390 - Branch 370 - 370: Label - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 393 393 16 16 - 394: 137(ptr) AccessChain 55(id) 16 - 395: 11(int) Load 394 - 397: 162(bool) UGreaterThan 395 16 - 398: 137(ptr) AccessChain 55(id) 33 - 399: 11(int) Load 398 - 400: 145(ptr) AccessChain 117 120 144 33 - 401: 82(int) Load 400 - 402: 82(int) ISub 401 232 - 403: 11(int) Bitcast 402 - 405: 162(bool) ULessThan 399 403 - 407: 162(bool) LogicalAnd 397 405 - SelectionMerge 409 None - BranchConditional 407 408 409 - 408: Label - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 412 412 16 16 - 413: 11(int) Load 138(index) - 414: 145(ptr) AccessChain 117 120 144 16 - 415: 82(int) Load 414 - 416: 11(int) Bitcast 415 - 417: 11(int) IAdd 413 416 - 418: 11(int) ISub 417 33 - 421: 225(ptr) AccessChain 199(particleIn) 120 418 120 - 422: 80(fvec4) Load 421 - 423: 18(fvec3) VectorShuffle 422 422 0 1 2 - Store 420(param) 423 - 425: 18(fvec3) Load 255(pos) - Store 424(param) 425 - 427: 122(ptr) AccessChain 117 120 419 - 428: 8(float) Load 427 - Store 426(param) 428 - 429: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 420(param) 424(param) 426(param) - 430: 18(fvec3) Load 242(force) - 431: 18(fvec3) FAdd 430 429 - Store 242(force) 431 - Branch 409 - 409: Label - 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 434 434 16 16 - 435: 137(ptr) AccessChain 55(id) 16 - 436: 11(int) Load 435 - 438: 162(bool) UGreaterThan 436 16 - 439: 137(ptr) AccessChain 55(id) 33 - 440: 11(int) Load 439 - 442: 162(bool) UGreaterThan 440 16 - 444: 162(bool) LogicalAnd 438 442 - SelectionMerge 446 None - BranchConditional 444 445 446 - 445: Label - 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 449 449 16 16 - 450: 11(int) Load 138(index) - 451: 145(ptr) AccessChain 117 120 144 16 - 452: 82(int) Load 451 - 453: 11(int) Bitcast 452 - 454: 11(int) ISub 450 453 - 455: 11(int) ISub 454 33 - 457: 225(ptr) AccessChain 199(particleIn) 120 455 120 - 458: 80(fvec4) Load 457 - 459: 18(fvec3) VectorShuffle 458 458 0 1 2 - Store 456(param) 459 - 461: 18(fvec3) Load 255(pos) - Store 460(param) 461 - 463: 122(ptr) AccessChain 117 120 419 - 464: 8(float) Load 463 - Store 462(param) 464 - 465: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 456(param) 460(param) 462(param) - 466: 18(fvec3) Load 242(force) - 467: 18(fvec3) FAdd 466 465 - Store 242(force) 467 - Branch 446 - 446: Label - 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 470 470 16 16 - 471: 137(ptr) AccessChain 55(id) 16 - 472: 11(int) Load 471 - 473: 145(ptr) AccessChain 117 120 144 16 - 474: 82(int) Load 473 - 475: 82(int) ISub 474 232 - 476: 11(int) Bitcast 475 - 478: 162(bool) ULessThan 472 476 - 479: 137(ptr) AccessChain 55(id) 33 - 480: 11(int) Load 479 - 481: 145(ptr) AccessChain 117 120 144 33 - 482: 82(int) Load 481 - 483: 82(int) ISub 482 232 - 484: 11(int) Bitcast 483 - 486: 162(bool) ULessThan 480 484 - 488: 162(bool) LogicalAnd 478 486 - SelectionMerge 490 None - BranchConditional 488 489 490 - 489: Label - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 492: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 493 493 16 16 - 494: 11(int) Load 138(index) - 495: 145(ptr) AccessChain 117 120 144 16 - 496: 82(int) Load 495 - 497: 11(int) Bitcast 496 - 498: 11(int) IAdd 494 497 - 499: 11(int) IAdd 498 33 - 501: 225(ptr) AccessChain 199(particleIn) 120 499 120 - 502: 80(fvec4) Load 501 - 503: 18(fvec3) VectorShuffle 502 502 0 1 2 - Store 500(param) 503 - 505: 18(fvec3) Load 255(pos) - Store 504(param) 505 - 507: 122(ptr) AccessChain 117 120 419 - 508: 8(float) Load 507 - Store 506(param) 508 - 509: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 500(param) 504(param) 506(param) - 510: 18(fvec3) Load 242(force) - 511: 18(fvec3) FAdd 510 509 - Store 242(force) 511 - Branch 490 - 490: Label - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 514 514 16 16 - 515: 137(ptr) AccessChain 55(id) 16 - 516: 11(int) Load 515 - 517: 145(ptr) AccessChain 117 120 144 16 - 518: 82(int) Load 517 - 519: 82(int) ISub 518 232 - 520: 11(int) Bitcast 519 - 522: 162(bool) ULessThan 516 520 - 523: 137(ptr) AccessChain 55(id) 33 - 524: 11(int) Load 523 - 526: 162(bool) UGreaterThan 524 16 - 528: 162(bool) LogicalAnd 522 526 - SelectionMerge 530 None - BranchConditional 528 529 530 - 529: Label - 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 533 533 16 16 - 534: 11(int) Load 138(index) - 535: 145(ptr) AccessChain 117 120 144 16 - 536: 82(int) Load 535 - 537: 11(int) Bitcast 536 - 538: 11(int) ISub 534 537 - 539: 11(int) IAdd 538 33 - 541: 225(ptr) AccessChain 199(particleIn) 120 539 120 - 542: 80(fvec4) Load 541 - 543: 18(fvec3) VectorShuffle 542 542 0 1 2 - Store 540(param) 543 - 545: 18(fvec3) Load 255(pos) - Store 544(param) 545 - 547: 122(ptr) AccessChain 117 120 419 - 548: 8(float) Load 547 - Store 546(param) 548 - 549: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 540(param) 544(param) 546(param) - 550: 18(fvec3) Load 242(force) - 551: 18(fvec3) FAdd 550 549 - Store 242(force) 551 - Branch 530 - 530: Label - 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 554 554 16 16 - 556: 122(ptr) AccessChain 117 120 555 - 557: 8(float) Load 556 - 558: 8(float) FNegate 557 - 559: 18(fvec3) Load 265(vel) - 560: 18(fvec3) VectorTimesScalar 559 558 - 561: 18(fvec3) Load 242(force) - 562: 18(fvec3) FAdd 561 560 - Store 242(force) 562 - 563: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 564 564 16 16 - 568: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 566 565(f) 42 - 569: 18(fvec3) Load 242(force) - 570: 122(ptr) AccessChain 117 120 232 - 571: 8(float) Load 570 - 572: 8(float) FDiv 205 571 - 573: 18(fvec3) VectorTimesScalar 569 572 - Store 565(f) 573 - 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 575 575 16 16 - 576: 11(int) Load 138(index) - 577: 18(fvec3) Load 255(pos) - 578: 18(fvec3) Load 265(vel) - 579: 122(ptr) AccessChain 117 120 120 - 580: 8(float) Load 579 - 581: 18(fvec3) VectorTimesScalar 578 580 - 582: 18(fvec3) FAdd 577 581 - 584: 18(fvec3) Load 565(f) - 585: 18(fvec3) VectorTimesScalar 584 583 - 586: 122(ptr) AccessChain 117 120 120 - 587: 8(float) Load 586 - 588: 18(fvec3) VectorTimesScalar 585 587 - 589: 122(ptr) AccessChain 117 120 120 - 590: 8(float) Load 589 - 591: 18(fvec3) VectorTimesScalar 588 590 - 592: 18(fvec3) FAdd 582 591 - 593: 8(float) CompositeExtract 592 0 - 594: 8(float) CompositeExtract 592 1 - 595: 8(float) CompositeExtract 592 2 - 596: 80(fvec4) CompositeConstruct 593 594 595 205 - 597: 225(ptr) AccessChain 221(particleOut) 120 576 120 - Store 597 596 - 598: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 599 599 16 16 - 600: 11(int) Load 138(index) - 601: 18(fvec3) Load 265(vel) - 602: 18(fvec3) Load 565(f) - 603: 122(ptr) AccessChain 117 120 120 - 604: 8(float) Load 603 - 605: 18(fvec3) VectorTimesScalar 602 604 - 606: 18(fvec3) FAdd 601 605 - 607: 8(float) CompositeExtract 606 0 - 608: 8(float) CompositeExtract 606 1 - 609: 8(float) CompositeExtract 606 2 - 610: 80(fvec4) CompositeConstruct 607 608 609 233 - 611: 225(ptr) AccessChain 221(particleOut) 120 600 232 - Store 611 610 - 612: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 613 613 16 16 - 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 615 614(sphereDist) 42 - 618: 11(int) Load 138(index) - 619: 225(ptr) AccessChain 221(particleOut) 120 618 120 - 620: 80(fvec4) Load 619 - 621: 18(fvec3) VectorShuffle 620 620 0 1 2 - 623: 225(ptr) AccessChain 117 120 622 - 624: 80(fvec4) Load 623 - 625: 18(fvec3) VectorShuffle 624 624 0 1 2 - 626: 18(fvec3) FSub 621 625 - Store 614(sphereDist) 626 - 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 628 628 16 16 - 629: 18(fvec3) Load 614(sphereDist) - 630: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 629 - 632: 122(ptr) AccessChain 117 120 631 - 633: 8(float) Load 632 - 635: 8(float) FAdd 633 634 - 637: 162(bool) FOrdLessThan 630 635 - SelectionMerge 639 None - BranchConditional 637 638 639 - 638: Label - 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 642 642 16 16 - 643: 11(int) Load 138(index) - 644: 225(ptr) AccessChain 117 120 622 - 645: 80(fvec4) Load 644 - 646: 18(fvec3) VectorShuffle 645 645 0 1 2 - 647: 18(fvec3) Load 614(sphereDist) - 648: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 647 - 649: 122(ptr) AccessChain 117 120 631 - 650: 8(float) Load 649 - 651: 8(float) FAdd 650 634 - 652: 18(fvec3) VectorTimesScalar 648 651 - 653: 18(fvec3) FAdd 646 652 - 654: 122(ptr) AccessChain 221(particleOut) 120 643 120 16 - 655: 8(float) CompositeExtract 653 0 - Store 654 655 - 656: 122(ptr) AccessChain 221(particleOut) 120 643 120 33 - 657: 8(float) CompositeExtract 653 1 + 211: Label + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 243 243 16 16 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 245 244(force) 43 + 249: 227(ptr) AccessChain 119 122 248 + 250: 82(fvec4) Load 249 + 251: 18(fvec3) VectorShuffle 250 250 0 1 2 + 252: 124(ptr) AccessChain 119 122 234 + 253: 8(float) Load 252 + 254: 18(fvec3) VectorTimesScalar 251 253 + Store 244(force) 254 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 256 256 16 16 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 258 257(pos) 43 + 261: 11(int) Load 140(index) + 262: 227(ptr) AccessChain 201(particleIn) 122 261 122 + 263: 82(fvec4) Load 262 + 264: 18(fvec3) VectorShuffle 263 263 0 1 2 + Store 257(pos) 264 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 266 266 16 16 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 268 267(vel) 43 + 271: 11(int) Load 140(index) + 272: 227(ptr) AccessChain 201(particleIn) 122 271 234 + 273: 82(fvec4) Load 272 + 274: 18(fvec3) VectorShuffle 273 273 0 1 2 + Store 267(vel) 274 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 276 276 16 16 + 277: 139(ptr) AccessChain 56(id) 16 + 278: 11(int) Load 277 + 280: 164(bool) UGreaterThan 278 16 + SelectionMerge 282 None + BranchConditional 280 281 282 + 281: Label + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 285 285 16 16 + 286: 11(int) Load 140(index) + 287: 11(int) ISub 286 35 + 289: 227(ptr) AccessChain 201(particleIn) 122 287 122 + 290: 82(fvec4) Load 289 + 291: 18(fvec3) VectorShuffle 290 290 0 1 2 + Store 288(param) 291 + 293: 18(fvec3) Load 257(pos) + Store 292(param) 293 + 295: 124(ptr) AccessChain 119 122 204 + 296: 8(float) Load 295 + Store 294(param) 296 + 297: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 288(param) 292(param) 294(param) + 298: 18(fvec3) Load 244(force) + 299: 18(fvec3) FAdd 298 297 + Store 244(force) 299 + Branch 282 + 282: Label + 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 302 302 16 16 + 303: 139(ptr) AccessChain 56(id) 16 + 304: 11(int) Load 303 + 305: 147(ptr) AccessChain 119 122 146 16 + 306: 84(int) Load 305 + 307: 84(int) ISub 306 234 + 308: 11(int) Bitcast 307 + 310: 164(bool) ULessThan 304 308 + SelectionMerge 312 None + BranchConditional 310 311 312 + 311: Label + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 315 315 16 16 + 316: 11(int) Load 140(index) + 317: 11(int) IAdd 316 35 + 319: 227(ptr) AccessChain 201(particleIn) 122 317 122 + 320: 82(fvec4) Load 319 + 321: 18(fvec3) VectorShuffle 320 320 0 1 2 + Store 318(param) 321 + 323: 18(fvec3) Load 257(pos) + Store 322(param) 323 + 325: 124(ptr) AccessChain 119 122 204 + 326: 8(float) Load 325 + Store 324(param) 326 + 327: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 318(param) 322(param) 324(param) + 328: 18(fvec3) Load 244(force) + 329: 18(fvec3) FAdd 328 327 + Store 244(force) 329 + Branch 312 + 312: Label + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 332 332 16 16 + 333: 139(ptr) AccessChain 56(id) 35 + 334: 11(int) Load 333 + 335: 147(ptr) AccessChain 119 122 146 35 + 336: 84(int) Load 335 + 337: 84(int) ISub 336 234 + 338: 11(int) Bitcast 337 + 340: 164(bool) ULessThan 334 338 + SelectionMerge 342 None + BranchConditional 340 341 342 + 341: Label + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 345 345 16 16 + 346: 11(int) Load 140(index) + 347: 147(ptr) AccessChain 119 122 146 16 + 348: 84(int) Load 347 + 349: 11(int) Bitcast 348 + 350: 11(int) IAdd 346 349 + 353: 227(ptr) AccessChain 201(particleIn) 122 350 122 + 354: 82(fvec4) Load 353 + 355: 18(fvec3) VectorShuffle 354 354 0 1 2 + Store 352(param) 355 + 357: 18(fvec3) Load 257(pos) + Store 356(param) 357 + 359: 124(ptr) AccessChain 119 122 351 + 360: 8(float) Load 359 + Store 358(param) 360 + 361: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 352(param) 356(param) 358(param) + 362: 18(fvec3) Load 244(force) + 363: 18(fvec3) FAdd 362 361 + Store 244(force) 363 + Branch 342 + 342: Label + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 366 366 16 16 + 367: 139(ptr) AccessChain 56(id) 35 + 368: 11(int) Load 367 + 370: 164(bool) UGreaterThan 368 16 + SelectionMerge 372 None + BranchConditional 370 371 372 + 371: Label + 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 375 375 16 16 + 376: 11(int) Load 140(index) + 377: 147(ptr) AccessChain 119 122 146 16 + 378: 84(int) Load 377 + 379: 11(int) Bitcast 378 + 380: 11(int) ISub 376 379 + 382: 227(ptr) AccessChain 201(particleIn) 122 380 122 + 383: 82(fvec4) Load 382 + 384: 18(fvec3) VectorShuffle 383 383 0 1 2 + Store 381(param) 384 + 386: 18(fvec3) Load 257(pos) + Store 385(param) 386 + 388: 124(ptr) AccessChain 119 122 351 + 389: 8(float) Load 388 + Store 387(param) 389 + 390: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 381(param) 385(param) 387(param) + 391: 18(fvec3) Load 244(force) + 392: 18(fvec3) FAdd 391 390 + Store 244(force) 392 + Branch 372 + 372: Label + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 395 395 16 16 + 396: 139(ptr) AccessChain 56(id) 16 + 397: 11(int) Load 396 + 399: 164(bool) UGreaterThan 397 16 + 400: 139(ptr) AccessChain 56(id) 35 + 401: 11(int) Load 400 + 402: 147(ptr) AccessChain 119 122 146 35 + 403: 84(int) Load 402 + 404: 84(int) ISub 403 234 + 405: 11(int) Bitcast 404 + 407: 164(bool) ULessThan 401 405 + 409: 164(bool) LogicalAnd 399 407 + SelectionMerge 411 None + BranchConditional 409 410 411 + 410: Label + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 414 414 16 16 + 415: 11(int) Load 140(index) + 416: 147(ptr) AccessChain 119 122 146 16 + 417: 84(int) Load 416 + 418: 11(int) Bitcast 417 + 419: 11(int) IAdd 415 418 + 420: 11(int) ISub 419 35 + 423: 227(ptr) AccessChain 201(particleIn) 122 420 122 + 424: 82(fvec4) Load 423 + 425: 18(fvec3) VectorShuffle 424 424 0 1 2 + Store 422(param) 425 + 427: 18(fvec3) Load 257(pos) + Store 426(param) 427 + 429: 124(ptr) AccessChain 119 122 421 + 430: 8(float) Load 429 + Store 428(param) 430 + 431: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 422(param) 426(param) 428(param) + 432: 18(fvec3) Load 244(force) + 433: 18(fvec3) FAdd 432 431 + Store 244(force) 433 + Branch 411 + 411: Label + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 436 436 16 16 + 437: 139(ptr) AccessChain 56(id) 16 + 438: 11(int) Load 437 + 440: 164(bool) UGreaterThan 438 16 + 441: 139(ptr) AccessChain 56(id) 35 + 442: 11(int) Load 441 + 444: 164(bool) UGreaterThan 442 16 + 446: 164(bool) LogicalAnd 440 444 + SelectionMerge 448 None + BranchConditional 446 447 448 + 447: Label + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 451 451 16 16 + 452: 11(int) Load 140(index) + 453: 147(ptr) AccessChain 119 122 146 16 + 454: 84(int) Load 453 + 455: 11(int) Bitcast 454 + 456: 11(int) ISub 452 455 + 457: 11(int) ISub 456 35 + 459: 227(ptr) AccessChain 201(particleIn) 122 457 122 + 460: 82(fvec4) Load 459 + 461: 18(fvec3) VectorShuffle 460 460 0 1 2 + Store 458(param) 461 + 463: 18(fvec3) Load 257(pos) + Store 462(param) 463 + 465: 124(ptr) AccessChain 119 122 421 + 466: 8(float) Load 465 + Store 464(param) 466 + 467: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 458(param) 462(param) 464(param) + 468: 18(fvec3) Load 244(force) + 469: 18(fvec3) FAdd 468 467 + Store 244(force) 469 + Branch 448 + 448: Label + 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 472 472 16 16 + 473: 139(ptr) AccessChain 56(id) 16 + 474: 11(int) Load 473 + 475: 147(ptr) AccessChain 119 122 146 16 + 476: 84(int) Load 475 + 477: 84(int) ISub 476 234 + 478: 11(int) Bitcast 477 + 480: 164(bool) ULessThan 474 478 + 481: 139(ptr) AccessChain 56(id) 35 + 482: 11(int) Load 481 + 483: 147(ptr) AccessChain 119 122 146 35 + 484: 84(int) Load 483 + 485: 84(int) ISub 484 234 + 486: 11(int) Bitcast 485 + 488: 164(bool) ULessThan 482 486 + 490: 164(bool) LogicalAnd 480 488 + SelectionMerge 492 None + BranchConditional 490 491 492 + 491: Label + 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 495 495 16 16 + 496: 11(int) Load 140(index) + 497: 147(ptr) AccessChain 119 122 146 16 + 498: 84(int) Load 497 + 499: 11(int) Bitcast 498 + 500: 11(int) IAdd 496 499 + 501: 11(int) IAdd 500 35 + 503: 227(ptr) AccessChain 201(particleIn) 122 501 122 + 504: 82(fvec4) Load 503 + 505: 18(fvec3) VectorShuffle 504 504 0 1 2 + Store 502(param) 505 + 507: 18(fvec3) Load 257(pos) + Store 506(param) 507 + 509: 124(ptr) AccessChain 119 122 421 + 510: 8(float) Load 509 + Store 508(param) 510 + 511: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 502(param) 506(param) 508(param) + 512: 18(fvec3) Load 244(force) + 513: 18(fvec3) FAdd 512 511 + Store 244(force) 513 + Branch 492 + 492: Label + 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 516 516 16 16 + 517: 139(ptr) AccessChain 56(id) 16 + 518: 11(int) Load 517 + 519: 147(ptr) AccessChain 119 122 146 16 + 520: 84(int) Load 519 + 521: 84(int) ISub 520 234 + 522: 11(int) Bitcast 521 + 524: 164(bool) ULessThan 518 522 + 525: 139(ptr) AccessChain 56(id) 35 + 526: 11(int) Load 525 + 528: 164(bool) UGreaterThan 526 16 + 530: 164(bool) LogicalAnd 524 528 + SelectionMerge 532 None + BranchConditional 530 531 532 + 531: Label + 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 535 535 16 16 + 536: 11(int) Load 140(index) + 537: 147(ptr) AccessChain 119 122 146 16 + 538: 84(int) Load 537 + 539: 11(int) Bitcast 538 + 540: 11(int) ISub 536 539 + 541: 11(int) IAdd 540 35 + 543: 227(ptr) AccessChain 201(particleIn) 122 541 122 + 544: 82(fvec4) Load 543 + 545: 18(fvec3) VectorShuffle 544 544 0 1 2 + Store 542(param) 545 + 547: 18(fvec3) Load 257(pos) + Store 546(param) 547 + 549: 124(ptr) AccessChain 119 122 421 + 550: 8(float) Load 549 + Store 548(param) 550 + 551: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 542(param) 546(param) 548(param) + 552: 18(fvec3) Load 244(force) + 553: 18(fvec3) FAdd 552 551 + Store 244(force) 553 + Branch 532 + 532: Label + 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 556 556 16 16 + 558: 124(ptr) AccessChain 119 122 557 + 559: 8(float) Load 558 + 560: 8(float) FNegate 559 + 561: 18(fvec3) Load 267(vel) + 562: 18(fvec3) VectorTimesScalar 561 560 + 563: 18(fvec3) Load 244(force) + 564: 18(fvec3) FAdd 563 562 + Store 244(force) 564 + 565: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 566 566 16 16 + 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 568 567(f) 43 + 571: 18(fvec3) Load 244(force) + 572: 124(ptr) AccessChain 119 122 234 + 573: 8(float) Load 572 + 574: 8(float) FDiv 207 573 + 575: 18(fvec3) VectorTimesScalar 571 574 + Store 567(f) 575 + 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 577 577 16 16 + 578: 11(int) Load 140(index) + 579: 18(fvec3) Load 257(pos) + 580: 18(fvec3) Load 267(vel) + 581: 124(ptr) AccessChain 119 122 122 + 582: 8(float) Load 581 + 583: 18(fvec3) VectorTimesScalar 580 582 + 584: 18(fvec3) FAdd 579 583 + 586: 18(fvec3) Load 567(f) + 587: 18(fvec3) VectorTimesScalar 586 585 + 588: 124(ptr) AccessChain 119 122 122 + 589: 8(float) Load 588 + 590: 18(fvec3) VectorTimesScalar 587 589 + 591: 124(ptr) AccessChain 119 122 122 + 592: 8(float) Load 591 + 593: 18(fvec3) VectorTimesScalar 590 592 + 594: 18(fvec3) FAdd 584 593 + 595: 8(float) CompositeExtract 594 0 + 596: 8(float) CompositeExtract 594 1 + 597: 8(float) CompositeExtract 594 2 + 598: 82(fvec4) CompositeConstruct 595 596 597 207 + 599: 227(ptr) AccessChain 223(particleOut) 122 578 122 + Store 599 598 + 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 601 601 16 16 + 602: 11(int) Load 140(index) + 603: 18(fvec3) Load 267(vel) + 604: 18(fvec3) Load 567(f) + 605: 124(ptr) AccessChain 119 122 122 + 606: 8(float) Load 605 + 607: 18(fvec3) VectorTimesScalar 604 606 + 608: 18(fvec3) FAdd 603 607 + 609: 8(float) CompositeExtract 608 0 + 610: 8(float) CompositeExtract 608 1 + 611: 8(float) CompositeExtract 608 2 + 612: 82(fvec4) CompositeConstruct 609 610 611 235 + 613: 227(ptr) AccessChain 223(particleOut) 122 602 234 + Store 613 612 + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 615 615 16 16 + 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 617 616(sphereDist) 43 + 620: 11(int) Load 140(index) + 621: 227(ptr) AccessChain 223(particleOut) 122 620 122 + 622: 82(fvec4) Load 621 + 623: 18(fvec3) VectorShuffle 622 622 0 1 2 + 625: 227(ptr) AccessChain 119 122 624 + 626: 82(fvec4) Load 625 + 627: 18(fvec3) VectorShuffle 626 626 0 1 2 + 628: 18(fvec3) FSub 623 627 + Store 616(sphereDist) 628 + 629: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 630 630 16 16 + 631: 18(fvec3) Load 616(sphereDist) + 632: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 631 + 634: 124(ptr) AccessChain 119 122 633 + 635: 8(float) Load 634 + 637: 8(float) FAdd 635 636 + 639: 164(bool) FOrdLessThan 632 637 + SelectionMerge 641 None + BranchConditional 639 640 641 + 640: Label + 642: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 644 644 16 16 + 645: 11(int) Load 140(index) + 646: 227(ptr) AccessChain 119 122 624 + 647: 82(fvec4) Load 646 + 648: 18(fvec3) VectorShuffle 647 647 0 1 2 + 649: 18(fvec3) Load 616(sphereDist) + 650: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 649 + 651: 124(ptr) AccessChain 119 122 633 + 652: 8(float) Load 651 + 653: 8(float) FAdd 652 636 + 654: 18(fvec3) VectorTimesScalar 650 653 + 655: 18(fvec3) FAdd 648 654 + 656: 124(ptr) AccessChain 223(particleOut) 122 645 122 16 + 657: 8(float) CompositeExtract 655 0 Store 656 657 - 658: 122(ptr) AccessChain 221(particleOut) 120 643 120 45 - 659: 8(float) CompositeExtract 653 2 + 658: 124(ptr) AccessChain 223(particleOut) 122 645 122 35 + 659: 8(float) CompositeExtract 655 1 Store 658 659 - 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 661 661 16 16 - 662: 11(int) Load 138(index) - 663: 225(ptr) AccessChain 221(particleOut) 120 662 232 - Store 663 234 - Branch 639 - 639: Label - 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 666 666 16 16 - 684: 683(ptr) AccessChain 681 120 120 - 685: 11(int) Load 684 - 687: 162(bool) IEqual 685 33 - SelectionMerge 689 None - BranchConditional 687 688 689 - 688: Label - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 692 692 16 16 - 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 694 693(normal) 42 - Store 693(normal) 696 - 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 698 698 16 16 - 699: 137(ptr) AccessChain 55(id) 33 - 700: 11(int) Load 699 - 702: 162(bool) UGreaterThan 700 16 - SelectionMerge 704 None - BranchConditional 702 703 704 - 703: Label - 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 707 707 16 16 - 708: 137(ptr) AccessChain 55(id) 16 - 709: 11(int) Load 708 - 711: 162(bool) UGreaterThan 709 16 - SelectionMerge 713 None - BranchConditional 711 712 713 - 712: Label - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 716 716 16 16 - 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 718 717(a) 42 - 721: 11(int) Load 138(index) - 722: 11(int) ISub 721 33 - 723: 225(ptr) AccessChain 199(particleIn) 120 722 120 - 724: 80(fvec4) Load 723 - 725: 18(fvec3) VectorShuffle 724 724 0 1 2 - 726: 18(fvec3) Load 255(pos) - 727: 18(fvec3) FSub 725 726 - Store 717(a) 727 - 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 729 729 16 16 - 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 731 730(b) 42 - 734: 11(int) Load 138(index) - 735: 145(ptr) AccessChain 117 120 144 16 - 736: 82(int) Load 735 - 737: 11(int) Bitcast 736 - 738: 11(int) ISub 734 737 - 739: 11(int) ISub 738 33 - 740: 225(ptr) AccessChain 199(particleIn) 120 739 120 - 741: 80(fvec4) Load 740 - 742: 18(fvec3) VectorShuffle 741 741 0 1 2 - 743: 18(fvec3) Load 255(pos) - 744: 18(fvec3) FSub 742 743 - Store 730(b) 744 - 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 746 746 16 16 - 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 748 747(c) 42 - 751: 11(int) Load 138(index) - 752: 145(ptr) AccessChain 117 120 144 16 - 753: 82(int) Load 752 - 754: 11(int) Bitcast 753 - 755: 11(int) ISub 751 754 - 756: 225(ptr) AccessChain 199(particleIn) 120 755 120 - 757: 80(fvec4) Load 756 - 758: 18(fvec3) VectorShuffle 757 757 0 1 2 - 759: 18(fvec3) Load 255(pos) - 760: 18(fvec3) FSub 758 759 - Store 747(c) 760 - 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 762 762 16 16 - 763: 18(fvec3) Load 717(a) - 764: 18(fvec3) Load 730(b) - 765: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 763 764 - 766: 18(fvec3) Load 730(b) - 767: 18(fvec3) Load 747(c) - 768: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 766 767 - 769: 18(fvec3) FAdd 765 768 - 770: 18(fvec3) Load 693(normal) - 771: 18(fvec3) FAdd 770 769 - Store 693(normal) 771 - Branch 713 - 713: Label - 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 774 774 16 16 - 775: 137(ptr) AccessChain 55(id) 16 - 776: 11(int) Load 775 - 777: 145(ptr) AccessChain 117 120 144 16 - 778: 82(int) Load 777 - 779: 82(int) ISub 778 232 - 780: 11(int) Bitcast 779 - 782: 162(bool) ULessThan 776 780 - SelectionMerge 784 None - BranchConditional 782 783 784 - 783: Label - 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 787 787 16 16 - 788: 11(int) Load 138(index) - 789: 145(ptr) AccessChain 117 120 144 16 - 790: 82(int) Load 789 - 791: 11(int) Bitcast 790 - 792: 11(int) ISub 788 791 - 793: 225(ptr) AccessChain 199(particleIn) 120 792 120 - 794: 80(fvec4) Load 793 - 795: 18(fvec3) VectorShuffle 794 794 0 1 2 - 796: 18(fvec3) Load 255(pos) - 797: 18(fvec3) FSub 795 796 - Store 717(a) 797 - 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 799 799 16 16 - 800: 11(int) Load 138(index) - 801: 145(ptr) AccessChain 117 120 144 16 - 802: 82(int) Load 801 - 803: 11(int) Bitcast 802 - 804: 11(int) ISub 800 803 - 805: 11(int) IAdd 804 33 - 806: 225(ptr) AccessChain 199(particleIn) 120 805 120 - 807: 80(fvec4) Load 806 - 808: 18(fvec3) VectorShuffle 807 807 0 1 2 - 809: 18(fvec3) Load 255(pos) - 810: 18(fvec3) FSub 808 809 - Store 730(b) 810 - 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 812 812 16 16 - 813: 11(int) Load 138(index) - 814: 11(int) IAdd 813 33 - 815: 225(ptr) AccessChain 199(particleIn) 120 814 120 - 816: 80(fvec4) Load 815 - 817: 18(fvec3) VectorShuffle 816 816 0 1 2 - 818: 18(fvec3) Load 255(pos) - 819: 18(fvec3) FSub 817 818 - Store 747(c) 819 - 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 821 821 16 16 - 822: 18(fvec3) Load 717(a) - 823: 18(fvec3) Load 730(b) - 824: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 822 823 - 825: 18(fvec3) Load 730(b) - 826: 18(fvec3) Load 747(c) - 827: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 825 826 - 828: 18(fvec3) FAdd 824 827 - 829: 18(fvec3) Load 693(normal) - 830: 18(fvec3) FAdd 829 828 - Store 693(normal) 830 - Branch 784 - 784: Label - Branch 704 - 704: Label - 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 832: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 833 833 16 16 - 834: 137(ptr) AccessChain 55(id) 33 - 835: 11(int) Load 834 - 836: 145(ptr) AccessChain 117 120 144 33 - 837: 82(int) Load 836 - 838: 82(int) ISub 837 232 - 839: 11(int) Bitcast 838 - 841: 162(bool) ULessThan 835 839 - SelectionMerge 843 None - BranchConditional 841 842 843 - 842: Label - 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 846 846 16 16 - 847: 137(ptr) AccessChain 55(id) 16 - 848: 11(int) Load 847 - 850: 162(bool) UGreaterThan 848 16 - SelectionMerge 852 None - BranchConditional 850 851 852 - 851: Label - 853: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 855 855 16 16 - 856: 11(int) Load 138(index) - 857: 145(ptr) AccessChain 117 120 144 16 - 858: 82(int) Load 857 - 859: 11(int) Bitcast 858 - 860: 11(int) IAdd 856 859 - 861: 225(ptr) AccessChain 199(particleIn) 120 860 120 - 862: 80(fvec4) Load 861 - 863: 18(fvec3) VectorShuffle 862 862 0 1 2 - 864: 18(fvec3) Load 255(pos) - 865: 18(fvec3) FSub 863 864 - Store 717(a) 865 - 866: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 867 867 16 16 - 868: 11(int) Load 138(index) - 869: 145(ptr) AccessChain 117 120 144 16 - 870: 82(int) Load 869 - 871: 11(int) Bitcast 870 - 872: 11(int) IAdd 868 871 - 873: 11(int) ISub 872 33 - 874: 225(ptr) AccessChain 199(particleIn) 120 873 120 - 875: 80(fvec4) Load 874 - 876: 18(fvec3) VectorShuffle 875 875 0 1 2 - 877: 18(fvec3) Load 255(pos) - 878: 18(fvec3) FSub 876 877 - Store 730(b) 878 - 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 880 880 16 16 - 881: 11(int) Load 138(index) - 882: 11(int) ISub 881 33 - 883: 225(ptr) AccessChain 199(particleIn) 120 882 120 - 884: 80(fvec4) Load 883 - 885: 18(fvec3) VectorShuffle 884 884 0 1 2 - 886: 18(fvec3) Load 255(pos) - 887: 18(fvec3) FSub 885 886 - Store 747(c) 887 - 888: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 889 889 16 16 - 890: 18(fvec3) Load 717(a) - 891: 18(fvec3) Load 730(b) - 892: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 890 891 - 893: 18(fvec3) Load 730(b) - 894: 18(fvec3) Load 747(c) - 895: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 893 894 - 896: 18(fvec3) FAdd 892 895 - 897: 18(fvec3) Load 693(normal) - 898: 18(fvec3) FAdd 897 896 - Store 693(normal) 898 - Branch 852 - 852: Label - 899: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 900: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 901 901 16 16 - 902: 137(ptr) AccessChain 55(id) 16 - 903: 11(int) Load 902 - 904: 145(ptr) AccessChain 117 120 144 16 - 905: 82(int) Load 904 - 906: 82(int) ISub 905 232 - 907: 11(int) Bitcast 906 - 909: 162(bool) ULessThan 903 907 - SelectionMerge 911 None - BranchConditional 909 910 911 - 910: Label - 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 913: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 914 914 16 16 - 915: 11(int) Load 138(index) - 916: 11(int) IAdd 915 33 - 917: 225(ptr) AccessChain 199(particleIn) 120 916 120 - 918: 80(fvec4) Load 917 - 919: 18(fvec3) VectorShuffle 918 918 0 1 2 - 920: 18(fvec3) Load 255(pos) - 921: 18(fvec3) FSub 919 920 - Store 717(a) 921 - 922: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 923 923 16 16 - 924: 11(int) Load 138(index) - 925: 145(ptr) AccessChain 117 120 144 16 - 926: 82(int) Load 925 - 927: 11(int) Bitcast 926 - 928: 11(int) IAdd 924 927 - 929: 11(int) IAdd 928 33 - 930: 225(ptr) AccessChain 199(particleIn) 120 929 120 - 931: 80(fvec4) Load 930 - 932: 18(fvec3) VectorShuffle 931 931 0 1 2 - 933: 18(fvec3) Load 255(pos) - 934: 18(fvec3) FSub 932 933 - Store 730(b) 934 - 935: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 936 936 16 16 - 937: 11(int) Load 138(index) - 938: 145(ptr) AccessChain 117 120 144 16 - 939: 82(int) Load 938 - 940: 11(int) Bitcast 939 - 941: 11(int) IAdd 937 940 - 942: 225(ptr) AccessChain 199(particleIn) 120 941 120 - 943: 80(fvec4) Load 942 - 944: 18(fvec3) VectorShuffle 943 943 0 1 2 - 945: 18(fvec3) Load 255(pos) - 946: 18(fvec3) FSub 944 945 - Store 747(c) 946 - 947: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 948 948 16 16 - 949: 18(fvec3) Load 717(a) - 950: 18(fvec3) Load 730(b) - 951: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 949 950 - 952: 18(fvec3) Load 730(b) - 953: 18(fvec3) Load 747(c) - 954: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 952 953 - 955: 18(fvec3) FAdd 951 954 - 956: 18(fvec3) Load 693(normal) - 957: 18(fvec3) FAdd 956 955 - Store 693(normal) 957 - Branch 911 - 911: Label - Branch 843 - 843: Label - 958: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 959: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 960 960 16 16 - 961: 11(int) Load 138(index) - 962: 18(fvec3) Load 693(normal) - 963: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 962 - 964: 8(float) CompositeExtract 963 0 - 965: 8(float) CompositeExtract 963 1 - 966: 8(float) CompositeExtract 963 2 - 967: 80(fvec4) CompositeConstruct 964 965 966 233 - 968: 225(ptr) AccessChain 221(particleOut) 120 961 555 - Store 968 967 - Branch 689 - 689: Label + 660: 124(ptr) AccessChain 223(particleOut) 122 645 122 46 + 661: 8(float) CompositeExtract 655 2 + Store 660 661 + 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 663 663 16 16 + 664: 11(int) Load 140(index) + 665: 227(ptr) AccessChain 223(particleOut) 122 664 234 + Store 665 236 + Branch 641 + 641: Label + 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 668 668 16 16 + 686: 685(ptr) AccessChain 683 122 122 + 687: 11(int) Load 686 + 689: 164(bool) IEqual 687 35 + SelectionMerge 691 None + BranchConditional 689 690 691 + 690: Label + 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 694 694 16 16 + 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 696 695(normal) 43 + Store 695(normal) 698 + 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 700 700 16 16 + 701: 139(ptr) AccessChain 56(id) 35 + 702: 11(int) Load 701 + 704: 164(bool) UGreaterThan 702 16 + SelectionMerge 706 None + BranchConditional 704 705 706 + 705: Label + 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 709 709 16 16 + 710: 139(ptr) AccessChain 56(id) 16 + 711: 11(int) Load 710 + 713: 164(bool) UGreaterThan 711 16 + SelectionMerge 715 None + BranchConditional 713 714 715 + 714: Label + 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 718 718 16 16 + 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 720 719(a) 43 + 723: 11(int) Load 140(index) + 724: 11(int) ISub 723 35 + 725: 227(ptr) AccessChain 201(particleIn) 122 724 122 + 726: 82(fvec4) Load 725 + 727: 18(fvec3) VectorShuffle 726 726 0 1 2 + 728: 18(fvec3) Load 257(pos) + 729: 18(fvec3) FSub 727 728 + Store 719(a) 729 + 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 731 731 16 16 + 735: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(b) 43 + 736: 11(int) Load 140(index) + 737: 147(ptr) AccessChain 119 122 146 16 + 738: 84(int) Load 737 + 739: 11(int) Bitcast 738 + 740: 11(int) ISub 736 739 + 741: 11(int) ISub 740 35 + 742: 227(ptr) AccessChain 201(particleIn) 122 741 122 + 743: 82(fvec4) Load 742 + 744: 18(fvec3) VectorShuffle 743 743 0 1 2 + 745: 18(fvec3) Load 257(pos) + 746: 18(fvec3) FSub 744 745 + Store 732(b) 746 + 747: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 748 748 16 16 + 752: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 750 749(c) 43 + 753: 11(int) Load 140(index) + 754: 147(ptr) AccessChain 119 122 146 16 + 755: 84(int) Load 754 + 756: 11(int) Bitcast 755 + 757: 11(int) ISub 753 756 + 758: 227(ptr) AccessChain 201(particleIn) 122 757 122 + 759: 82(fvec4) Load 758 + 760: 18(fvec3) VectorShuffle 759 759 0 1 2 + 761: 18(fvec3) Load 257(pos) + 762: 18(fvec3) FSub 760 761 + Store 749(c) 762 + 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 764 764 16 16 + 765: 18(fvec3) Load 719(a) + 766: 18(fvec3) Load 732(b) + 767: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 765 766 + 768: 18(fvec3) Load 732(b) + 769: 18(fvec3) Load 749(c) + 770: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 768 769 + 771: 18(fvec3) FAdd 767 770 + 772: 18(fvec3) Load 695(normal) + 773: 18(fvec3) FAdd 772 771 + Store 695(normal) 773 + Branch 715 + 715: Label + 774: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 775: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 776 776 16 16 + 777: 139(ptr) AccessChain 56(id) 16 + 778: 11(int) Load 777 + 779: 147(ptr) AccessChain 119 122 146 16 + 780: 84(int) Load 779 + 781: 84(int) ISub 780 234 + 782: 11(int) Bitcast 781 + 784: 164(bool) ULessThan 778 782 + SelectionMerge 786 None + BranchConditional 784 785 786 + 785: Label + 787: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 789 789 16 16 + 790: 11(int) Load 140(index) + 791: 147(ptr) AccessChain 119 122 146 16 + 792: 84(int) Load 791 + 793: 11(int) Bitcast 792 + 794: 11(int) ISub 790 793 + 795: 227(ptr) AccessChain 201(particleIn) 122 794 122 + 796: 82(fvec4) Load 795 + 797: 18(fvec3) VectorShuffle 796 796 0 1 2 + 798: 18(fvec3) Load 257(pos) + 799: 18(fvec3) FSub 797 798 + Store 719(a) 799 + 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 801 801 16 16 + 802: 11(int) Load 140(index) + 803: 147(ptr) AccessChain 119 122 146 16 + 804: 84(int) Load 803 + 805: 11(int) Bitcast 804 + 806: 11(int) ISub 802 805 + 807: 11(int) IAdd 806 35 + 808: 227(ptr) AccessChain 201(particleIn) 122 807 122 + 809: 82(fvec4) Load 808 + 810: 18(fvec3) VectorShuffle 809 809 0 1 2 + 811: 18(fvec3) Load 257(pos) + 812: 18(fvec3) FSub 810 811 + Store 732(b) 812 + 813: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 814 814 16 16 + 815: 11(int) Load 140(index) + 816: 11(int) IAdd 815 35 + 817: 227(ptr) AccessChain 201(particleIn) 122 816 122 + 818: 82(fvec4) Load 817 + 819: 18(fvec3) VectorShuffle 818 818 0 1 2 + 820: 18(fvec3) Load 257(pos) + 821: 18(fvec3) FSub 819 820 + Store 749(c) 821 + 822: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 823 823 16 16 + 824: 18(fvec3) Load 719(a) + 825: 18(fvec3) Load 732(b) + 826: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 824 825 + 827: 18(fvec3) Load 732(b) + 828: 18(fvec3) Load 749(c) + 829: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 827 828 + 830: 18(fvec3) FAdd 826 829 + 831: 18(fvec3) Load 695(normal) + 832: 18(fvec3) FAdd 831 830 + Store 695(normal) 832 + Branch 786 + 786: Label + Branch 706 + 706: Label + 833: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 835 835 16 16 + 836: 139(ptr) AccessChain 56(id) 35 + 837: 11(int) Load 836 + 838: 147(ptr) AccessChain 119 122 146 35 + 839: 84(int) Load 838 + 840: 84(int) ISub 839 234 + 841: 11(int) Bitcast 840 + 843: 164(bool) ULessThan 837 841 + SelectionMerge 845 None + BranchConditional 843 844 845 + 844: Label + 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 848 848 16 16 + 849: 139(ptr) AccessChain 56(id) 16 + 850: 11(int) Load 849 + 852: 164(bool) UGreaterThan 850 16 + SelectionMerge 854 None + BranchConditional 852 853 854 + 853: Label + 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 856: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 857 857 16 16 + 858: 11(int) Load 140(index) + 859: 147(ptr) AccessChain 119 122 146 16 + 860: 84(int) Load 859 + 861: 11(int) Bitcast 860 + 862: 11(int) IAdd 858 861 + 863: 227(ptr) AccessChain 201(particleIn) 122 862 122 + 864: 82(fvec4) Load 863 + 865: 18(fvec3) VectorShuffle 864 864 0 1 2 + 866: 18(fvec3) Load 257(pos) + 867: 18(fvec3) FSub 865 866 + Store 719(a) 867 + 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 869 869 16 16 + 870: 11(int) Load 140(index) + 871: 147(ptr) AccessChain 119 122 146 16 + 872: 84(int) Load 871 + 873: 11(int) Bitcast 872 + 874: 11(int) IAdd 870 873 + 875: 11(int) ISub 874 35 + 876: 227(ptr) AccessChain 201(particleIn) 122 875 122 + 877: 82(fvec4) Load 876 + 878: 18(fvec3) VectorShuffle 877 877 0 1 2 + 879: 18(fvec3) Load 257(pos) + 880: 18(fvec3) FSub 878 879 + Store 732(b) 880 + 881: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 882 882 16 16 + 883: 11(int) Load 140(index) + 884: 11(int) ISub 883 35 + 885: 227(ptr) AccessChain 201(particleIn) 122 884 122 + 886: 82(fvec4) Load 885 + 887: 18(fvec3) VectorShuffle 886 886 0 1 2 + 888: 18(fvec3) Load 257(pos) + 889: 18(fvec3) FSub 887 888 + Store 749(c) 889 + 890: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 891 891 16 16 + 892: 18(fvec3) Load 719(a) + 893: 18(fvec3) Load 732(b) + 894: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 892 893 + 895: 18(fvec3) Load 732(b) + 896: 18(fvec3) Load 749(c) + 897: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 895 896 + 898: 18(fvec3) FAdd 894 897 + 899: 18(fvec3) Load 695(normal) + 900: 18(fvec3) FAdd 899 898 + Store 695(normal) 900 + Branch 854 + 854: Label + 901: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 902: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 903 903 16 16 + 904: 139(ptr) AccessChain 56(id) 16 + 905: 11(int) Load 904 + 906: 147(ptr) AccessChain 119 122 146 16 + 907: 84(int) Load 906 + 908: 84(int) ISub 907 234 + 909: 11(int) Bitcast 908 + 911: 164(bool) ULessThan 905 909 + SelectionMerge 913 None + BranchConditional 911 912 913 + 912: Label + 914: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 915: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 916 916 16 16 + 917: 11(int) Load 140(index) + 918: 11(int) IAdd 917 35 + 919: 227(ptr) AccessChain 201(particleIn) 122 918 122 + 920: 82(fvec4) Load 919 + 921: 18(fvec3) VectorShuffle 920 920 0 1 2 + 922: 18(fvec3) Load 257(pos) + 923: 18(fvec3) FSub 921 922 + Store 719(a) 923 + 924: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 925 925 16 16 + 926: 11(int) Load 140(index) + 927: 147(ptr) AccessChain 119 122 146 16 + 928: 84(int) Load 927 + 929: 11(int) Bitcast 928 + 930: 11(int) IAdd 926 929 + 931: 11(int) IAdd 930 35 + 932: 227(ptr) AccessChain 201(particleIn) 122 931 122 + 933: 82(fvec4) Load 932 + 934: 18(fvec3) VectorShuffle 933 933 0 1 2 + 935: 18(fvec3) Load 257(pos) + 936: 18(fvec3) FSub 934 935 + Store 732(b) 936 + 937: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 938 938 16 16 + 939: 11(int) Load 140(index) + 940: 147(ptr) AccessChain 119 122 146 16 + 941: 84(int) Load 940 + 942: 11(int) Bitcast 941 + 943: 11(int) IAdd 939 942 + 944: 227(ptr) AccessChain 201(particleIn) 122 943 122 + 945: 82(fvec4) Load 944 + 946: 18(fvec3) VectorShuffle 945 945 0 1 2 + 947: 18(fvec3) Load 257(pos) + 948: 18(fvec3) FSub 946 947 + Store 749(c) 948 + 949: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 950 950 16 16 + 951: 18(fvec3) Load 719(a) + 952: 18(fvec3) Load 732(b) + 953: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 951 952 + 954: 18(fvec3) Load 732(b) + 955: 18(fvec3) Load 749(c) + 956: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 954 955 + 957: 18(fvec3) FAdd 953 956 + 958: 18(fvec3) Load 695(normal) + 959: 18(fvec3) FAdd 958 957 + Store 695(normal) 959 + Branch 913 + 913: Label + Branch 845 + 845: Label + 960: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 961: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 962 962 16 16 + 963: 11(int) Load 140(index) + 964: 18(fvec3) Load 695(normal) + 965: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 964 + 966: 8(float) CompositeExtract 965 0 + 967: 8(float) CompositeExtract 965 1 + 968: 8(float) CompositeExtract 965 2 + 969: 82(fvec4) CompositeConstruct 966 967 968 235 + 970: 227(ptr) AccessChain 223(particleOut) 122 963 557 + Store 970 969 + Branch 691 + 691: Label Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 600976c8bf..42bf069daa 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 886 +// Id's are bound by 890 Capability Shader Capability ImageQuery @@ -9,13 +9,13 @@ spv.debuginfo.hlsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 6 "main" 879 882 + EntryPoint Fragment 6 "main" 883 886 ExecutionMode 6 OriginUpperLeft 1: String "" 9: String "float" 12: String "uint" - 33: String "textureProj" - 36: String "// OpModuleProcessed auto-map-locations + 34: String "textureProj" + 37: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 @@ -24,191 +24,191 @@ spv.debuginfo.hlsl.frag // OpModuleProcessed hlsl-offsets #line 1 " - 44: String "P" - 48: String "layer" - 51: String "offset" - 58: String "filterPCF" - 64: String "sc" - 76: String "shadow" - 82: String "fragcolor" - 85: String "fragPos" - 91: String "@main" - 97: String "inUV" - 111: String "shadowCoord" - 136: String "bool" - 152: String "dist" - 156: String "type.2d.image" - 157: String "@type.2d.image" - 162: String "textureShadowMap" - 167: String "type.sampler" - 168: String "@type.sampler" - 172: String "samplerShadowMap" - 176: String "type.sampled.image" - 177: String "@type.sampled.image" - 224: String "sizeQueryTemp" - 229: String "int" - 236: String "texDim" - 250: String "elements" - 257: String "levels" - 266: String "scale" - 273: String "dx" - 285: String "dy" - 297: String "shadowFactor" - 303: String "count" - 310: String "range" - 317: String "x" - 339: String "y" - 403: String "i" - 423: String "shadowClip" - 435: String "color" - 441: String "viewMatrix" - 445: String "Light" - 451: String "lights" - 454: String "displayDebugTarget" - 459: String "UBO" - 462: String "ubo" - 512: String "textureposition" - 517: String "samplerposition" - 529: String "normal" - 533: String "textureNormal" - 538: String "samplerNormal" - 548: String "albedo" - 552: String "textureAlbedo" - 557: String "samplerAlbedo" - 647: String "N" - 673: String "L" - 697: String "V" - 712: String "lightCosInnerAngle" - 719: String "lightCosOuterAngle" - 726: String "lightRange" - 733: String "dir" - 749: String "cosDir" - 758: String "spotEffect" - 768: String "heightAttenuation" - 777: String "NdotL" - 787: String "diff" - 795: String "R" - 805: String "NdotR" - 815: String "spec" + 45: String "P" + 49: String "layer" + 52: String "offset" + 60: String "filterPCF" + 66: String "sc" + 79: String "shadow" + 85: String "fragcolor" + 88: String "fragPos" + 95: String "@main" + 101: String "inUV" + 115: String "shadowCoord" + 140: String "bool" + 156: String "dist" + 160: String "type.2d.image" + 161: String "@type.2d.image" + 166: String "textureShadowMap" + 171: String "type.sampler" + 172: String "@type.sampler" + 176: String "samplerShadowMap" + 180: String "type.sampled.image" + 181: String "@type.sampled.image" + 228: String "sizeQueryTemp" + 233: String "int" + 240: String "texDim" + 254: String "elements" + 261: String "levels" + 270: String "scale" + 277: String "dx" + 289: String "dy" + 301: String "shadowFactor" + 307: String "count" + 314: String "range" + 321: String "x" + 343: String "y" + 407: String "i" + 427: String "shadowClip" + 439: String "color" + 445: String "viewMatrix" + 449: String "Light" + 455: String "lights" + 458: String "displayDebugTarget" + 463: String "UBO" + 466: String "ubo" + 516: String "textureposition" + 521: String "samplerposition" + 533: String "normal" + 537: String "textureNormal" + 542: String "samplerNormal" + 552: String "albedo" + 556: String "textureAlbedo" + 561: String "samplerAlbedo" + 651: String "N" + 677: String "L" + 701: String "V" + 716: String "lightCosInnerAngle" + 723: String "lightCosOuterAngle" + 730: String "lightRange" + 737: String "dir" + 753: String "cosDir" + 762: String "spotEffect" + 772: String "heightAttenuation" + 781: String "NdotL" + 791: String "diff" + 799: String "R" + 809: String "NdotR" + 819: String "spec" Name 6 "main" Name 32 "textureProj(vf4;f1;vf2;" Name 29 "P" Name 30 "layer" Name 31 "offset" - Name 57 "filterPCF(vf4;f1;" - Name 55 "sc" - Name 56 "layer" - Name 75 "shadow(vf3;vf3;" - Name 73 "fragcolor" - Name 74 "fragPos" - Name 90 "@main(vf2;" - Name 89 "inUV" - Name 103 "shadow" - Name 109 "shadowCoord" - Name 150 "dist" - Name 160 "textureShadowMap" - Name 170 "samplerShadowMap" - Name 222 "sizeQueryTemp" - Name 234 "texDim" - Name 248 "elements" - Name 255 "levels" - Name 264 "scale" - Name 271 "dx" - Name 283 "dy" - Name 295 "shadowFactor" - Name 301 "count" - Name 308 "range" - Name 315 "x" - Name 337 "y" - Name 368 "param" - Name 370 "param" + Name 58 "filterPCF(vf4;f1;" + Name 56 "sc" + Name 57 "layer" + Name 77 "shadow(vf3;vf3;" + Name 75 "fragcolor" + Name 76 "fragPos" + Name 93 "@main(vf2;" + Name 92 "inUV" + Name 107 "shadow" + Name 113 "shadowCoord" + Name 154 "dist" + Name 164 "textureShadowMap" + Name 174 "samplerShadowMap" + Name 226 "sizeQueryTemp" + Name 238 "texDim" + Name 252 "elements" + Name 259 "levels" + Name 268 "scale" + Name 275 "dx" + Name 287 "dy" + Name 299 "shadowFactor" + Name 305 "count" + Name 312 "range" + Name 319 "x" + Name 341 "y" Name 372 "param" - Name 401 "i" - Name 421 "shadowClip" - Name 433 "Light" - MemberName 433(Light) 0 "position" - MemberName 433(Light) 1 "target" - MemberName 433(Light) 2 "color" - MemberName 433(Light) 3 "viewMatrix" - Name 448 "UBO" - MemberName 448(UBO) 0 "viewPos" - MemberName 448(UBO) 1 "lights" - MemberName 448(UBO) 2 "useShadows" - MemberName 448(UBO) 3 "displayDebugTarget" - Name 460 "ubo" - MemberName 460(ubo) 0 "ubo" - Name 467 "" - Name 476 "shadowFactor" - Name 481 "param" - Name 483 "param" - Name 504 "fragPos" - Name 510 "textureposition" - Name 515 "samplerposition" - Name 527 "normal" - Name 531 "textureNormal" - Name 536 "samplerNormal" - Name 546 "albedo" - Name 550 "textureAlbedo" - Name 555 "samplerAlbedo" - Name 585 "fragcolor" - Name 589 "param" - Name 590 "param" - Name 645 "N" - Name 653 "i" - Name 671 "L" - Name 684 "dist" - Name 695 "V" - Name 710 "lightCosInnerAngle" - Name 717 "lightCosOuterAngle" - Name 724 "lightRange" - Name 731 "dir" - Name 747 "cosDir" - Name 756 "spotEffect" - Name 766 "heightAttenuation" - Name 775 "NdotL" - Name 785 "diff" - Name 793 "R" - Name 803 "NdotR" - Name 813 "spec" - Name 862 "param" - Name 864 "param" - Name 877 "inUV" - Name 879 "inUV" - Name 882 "@entryPointOutput" - Name 883 "param" - Decorate 160(textureShadowMap) DescriptorSet 0 - Decorate 160(textureShadowMap) Binding 5 - Decorate 170(samplerShadowMap) DescriptorSet 0 - Decorate 170(samplerShadowMap) Binding 5 - MemberDecorate 433(Light) 0 Offset 0 - MemberDecorate 433(Light) 1 Offset 16 - MemberDecorate 433(Light) 2 Offset 32 - MemberDecorate 433(Light) 3 RowMajor - MemberDecorate 433(Light) 3 Offset 48 - MemberDecorate 433(Light) 3 MatrixStride 16 - Decorate 446 ArrayStride 112 - MemberDecorate 448(UBO) 0 Offset 0 - MemberDecorate 448(UBO) 1 Offset 16 - MemberDecorate 448(UBO) 2 Offset 352 - MemberDecorate 448(UBO) 3 Offset 356 - MemberDecorate 460(ubo) 0 Offset 0 - Decorate 460(ubo) Block - Decorate 467 DescriptorSet 0 - Decorate 467 Binding 4 - Decorate 510(textureposition) DescriptorSet 0 - Decorate 510(textureposition) Binding 1 - Decorate 515(samplerposition) DescriptorSet 0 - Decorate 515(samplerposition) Binding 1 - Decorate 531(textureNormal) DescriptorSet 0 - Decorate 531(textureNormal) Binding 2 - Decorate 536(samplerNormal) DescriptorSet 0 - Decorate 536(samplerNormal) Binding 2 - Decorate 550(textureAlbedo) DescriptorSet 0 - Decorate 550(textureAlbedo) Binding 3 - Decorate 555(samplerAlbedo) DescriptorSet 0 - Decorate 555(samplerAlbedo) Binding 3 - Decorate 879(inUV) Location 0 - Decorate 882(@entryPointOutput) Location 0 + Name 374 "param" + Name 376 "param" + Name 405 "i" + Name 425 "shadowClip" + Name 437 "Light" + MemberName 437(Light) 0 "position" + MemberName 437(Light) 1 "target" + MemberName 437(Light) 2 "color" + MemberName 437(Light) 3 "viewMatrix" + Name 452 "UBO" + MemberName 452(UBO) 0 "viewPos" + MemberName 452(UBO) 1 "lights" + MemberName 452(UBO) 2 "useShadows" + MemberName 452(UBO) 3 "displayDebugTarget" + Name 464 "ubo" + MemberName 464(ubo) 0 "ubo" + Name 471 "" + Name 480 "shadowFactor" + Name 485 "param" + Name 487 "param" + Name 508 "fragPos" + Name 514 "textureposition" + Name 519 "samplerposition" + Name 531 "normal" + Name 535 "textureNormal" + Name 540 "samplerNormal" + Name 550 "albedo" + Name 554 "textureAlbedo" + Name 559 "samplerAlbedo" + Name 589 "fragcolor" + Name 593 "param" + Name 594 "param" + Name 649 "N" + Name 657 "i" + Name 675 "L" + Name 688 "dist" + Name 699 "V" + Name 714 "lightCosInnerAngle" + Name 721 "lightCosOuterAngle" + Name 728 "lightRange" + Name 735 "dir" + Name 751 "cosDir" + Name 760 "spotEffect" + Name 770 "heightAttenuation" + Name 779 "NdotL" + Name 789 "diff" + Name 797 "R" + Name 807 "NdotR" + Name 817 "spec" + Name 866 "param" + Name 868 "param" + Name 881 "inUV" + Name 883 "inUV" + Name 886 "@entryPointOutput" + Name 887 "param" + Decorate 164(textureShadowMap) DescriptorSet 0 + Decorate 164(textureShadowMap) Binding 5 + Decorate 174(samplerShadowMap) DescriptorSet 0 + Decorate 174(samplerShadowMap) Binding 5 + MemberDecorate 437(Light) 0 Offset 0 + MemberDecorate 437(Light) 1 Offset 16 + MemberDecorate 437(Light) 2 Offset 32 + MemberDecorate 437(Light) 3 RowMajor + MemberDecorate 437(Light) 3 Offset 48 + MemberDecorate 437(Light) 3 MatrixStride 16 + Decorate 450 ArrayStride 112 + MemberDecorate 452(UBO) 0 Offset 0 + MemberDecorate 452(UBO) 1 Offset 16 + MemberDecorate 452(UBO) 2 Offset 352 + MemberDecorate 452(UBO) 3 Offset 356 + MemberDecorate 464(ubo) 0 Offset 0 + Decorate 464(ubo) Block + Decorate 471 DescriptorSet 0 + Decorate 471 Binding 4 + Decorate 514(textureposition) DescriptorSet 0 + Decorate 514(textureposition) Binding 1 + Decorate 519(samplerposition) DescriptorSet 0 + Decorate 519(samplerposition) Binding 1 + Decorate 535(textureNormal) DescriptorSet 0 + Decorate 535(textureNormal) Binding 2 + Decorate 540(samplerNormal) DescriptorSet 0 + Decorate 540(samplerNormal) Binding 2 + Decorate 554(textureAlbedo) DescriptorSet 0 + Decorate 554(textureAlbedo) Binding 3 + Decorate 559(samplerAlbedo) DescriptorSet 0 + Decorate 559(samplerAlbedo) Binding 3 + Decorate 883(inUV) Location 0 + Decorate 886(@entryPointOutput) Location 0 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -230,261 +230,265 @@ spv.debuginfo.hlsl.frag 26: TypePointer Function 23(fvec2) 27: TypeFunction 8(float) 21(ptr) 22(ptr) 26(ptr) 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 25 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 36 - 38: 11(int) Constant 1 - 39: 11(int) Constant 5 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 38 19 35 39 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 28 35 16 16 37 33 17 16 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 20 35 16 16 34 19 38 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 10 35 16 16 34 19 24 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 51 25 35 16 16 34 19 17 - 53: TypeFunction 8(float) 21(ptr) 22(ptr) - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 54 35 16 16 37 58 17 16 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 20 35 16 16 59 19 38 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 10 35 16 16 59 19 24 - 68: TypeVector 8(float) 3 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 70: TypePointer Function 68(fvec3) - 71: TypeFunction 68(fvec3) 70(ptr) 70(ptr) - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 69 69 69 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 76 72 35 16 16 37 76 17 16 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 69 35 16 16 77 19 38 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 69 35 16 16 77 19 24 - 87: TypeFunction 18(fvec4) 26(ptr) - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 25 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 91 88 35 16 16 37 91 17 16 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 97 25 35 16 16 92 19 38 - 102: 11(int) Constant 62 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 76 10 35 102 16 34 19 - 106: 8(float) Constant 1065353216 - 108: 11(int) Constant 63 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 111 20 35 108 16 34 19 - 119: 11(int) Constant 64 - 122: 8(float) Constant 1056964608 - 131: 11(int) Constant 66 - 134: 8(float) Constant 3212836864 - 135: TypeBool - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 149: 11(int) Constant 68 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 35 149 16 34 19 - 154: TypeImage 8(float) 2D array sampled format:Unknown - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 16 35 149 16 37 157 158 17 - 159: TypePointer UniformConstant 154 -160(textureShadowMap): 159(ptr) Variable UniformConstant - 163: 11(int) Constant 8 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 162 155 35 149 16 37 162 160(textureShadowMap) 163 - 165: TypeSampler - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 149 16 37 168 158 17 - 169: TypePointer UniformConstant 165 -170(samplerShadowMap): 169(ptr) Variable UniformConstant - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 172 166 35 149 16 37 172 170(samplerShadowMap) 163 - 174: TypeSampledImage 154 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 16 35 149 16 37 177 158 17 - 190: 11(int) Constant 69 - 193: 8(float) Constant 0 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 207: 11(int) Constant 71 - 208: 8(float) Constant 1048576000 - 211: 11(int) Constant 74 - 218: 11(int) Constant 80 - 219: TypeVector 11(int) 3 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 - 221: TypePointer Function 219(ivec3) - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 224 220 35 218 16 59 19 - 228: TypeInt 32 1 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 229 14 19 16 - 231: TypeVector 228(int) 2 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 230 24 - 233: TypePointer Function 231(ivec2) - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 236 232 35 218 16 59 19 - 238: TypePointer Function 11(int) - 242: TypePointer Function 228(int) - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 230 35 218 16 59 19 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 257 230 35 218 16 59 19 - 263: 11(int) Constant 81 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 10 35 263 16 59 19 - 268: 8(float) Constant 1069547520 - 270: 11(int) Constant 82 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 10 35 270 16 59 19 - 282: 11(int) Constant 83 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 285 10 35 282 16 59 19 - 294: 11(int) Constant 85 - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 10 35 294 16 59 19 - 300: 11(int) Constant 86 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 230 35 300 16 59 19 - 305: 228(int) Constant 0 - 307: 11(int) Constant 87 - 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 310 230 35 307 16 59 19 - 312: 228(int) Constant 1 - 314: 11(int) Constant 89 - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 230 35 314 16 59 19 - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 336: 11(int) Constant 91 - 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 339 230 35 336 16 59 19 - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 358: 11(int) Constant 93 - 377: 11(int) Constant 94 - 390: 11(int) Constant 98 - 400: 11(int) Constant 102 - 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 403 230 35 400 16 77 19 - 415: 228(int) Constant 3 - 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 420: 11(int) Constant 104 - 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 423 20 35 420 16 77 19 - 430: TypeMatrix 18(fvec4) 4 - 432: 135(bool) ConstantTrue - 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 432 - 433(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 430 - 436: 11(int) Constant 46 - 437: 11(int) Constant 14 - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 - 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 - 442: 11(int) Constant 47 - 443: 11(int) Constant 21 - 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 441 431 35 442 443 16 16 17 - 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 445 38 35 420 16 37 445 16 17 434 438 439 440 - 446: TypeArray 433(Light) 17 - 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 444 17 - 448(UBO): TypeStruct 18(fvec4) 446 228(int) 228(int) - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 435 20 35 436 437 16 16 17 - 452: 11(int) Constant 53 - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 451 447 35 452 437 16 16 17 - 455: 11(int) Constant 55 - 456: 11(int) Constant 24 - 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 454 230 35 455 456 16 16 17 - 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 454 230 35 455 456 16 16 17 - 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 459 38 35 420 16 37 459 16 17 449 450 453 457 - 460(ubo): TypeStruct 448(UBO) - 463: 11(int) Constant 58 - 464: 11(int) Constant 37 - 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 458 35 463 464 16 16 17 - 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 462 38 35 420 16 37 462 16 17 461 - 466: TypePointer Uniform 460(ubo) - 467: 466(ptr) Variable Uniform - 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 465 35 420 16 37 1 467 163 - 470: TypePointer Uniform 430 - 475: 11(int) Constant 108 - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 10 35 475 16 77 19 - 486: 11(int) Constant 113 - 496: 11(int) Constant 115 - 503: 11(int) Constant 121 - 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 69 35 503 16 92 19 - 507: TypeImage 8(float) 2D sampled format:Unknown - 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 16 35 503 16 37 157 158 17 - 509: TypePointer UniformConstant 507 -510(textureposition): 509(ptr) Variable UniformConstant - 511: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 512 508 35 503 16 37 512 510(textureposition) 163 - 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 503 16 37 168 158 17 -515(samplerposition): 169(ptr) Variable UniformConstant - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 517 514 35 503 16 37 517 515(samplerposition) 163 - 519: TypeSampledImage 507 - 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 16 35 503 16 37 177 158 17 - 526: 11(int) Constant 122 - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 529 69 35 526 16 92 19 -531(textureNormal): 509(ptr) Variable UniformConstant - 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 533 508 35 526 16 37 533 531(textureNormal) 163 - 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 526 16 37 168 158 17 -536(samplerNormal): 169(ptr) Variable UniformConstant - 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 538 535 35 526 16 37 538 536(samplerNormal) 163 - 545: 11(int) Constant 123 - 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 548 20 35 545 16 92 19 -550(textureAlbedo): 509(ptr) Variable UniformConstant - 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 552 508 35 545 16 37 552 550(textureAlbedo) 163 - 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 167 38 35 545 16 37 168 158 17 -555(samplerAlbedo): 169(ptr) Variable UniformConstant - 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 557 554 35 545 16 37 557 555(samplerAlbedo) 163 - 563: 11(int) Constant 128 - 564: TypePointer Uniform 228(int) - 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 573: 11(int) Constant 129 - 584: 11(int) Constant 131 - 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 69 35 584 16 92 19 - 588: 68(fvec3) ConstantComposite 106 106 106 - 594: 11(int) Constant 132 - 598: 11(int) Constant 134 - 601: 11(int) Constant 135 - 605: 11(int) Constant 137 - 608: 11(int) Constant 138 - 612: 11(int) Constant 140 - 616: 11(int) Constant 141 - 620: 11(int) Constant 143 - 624: 11(int) Constant 144 - 629: 11(int) Constant 146 - 638: 11(int) Constant 150 - 641: 8(float) Constant 1036831949 - 644: 11(int) Constant 152 - 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 647 69 35 644 16 92 19 - 652: 11(int) Constant 154 - 654: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 403 230 35 652 16 92 19 - 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 670: 11(int) Constant 157 - 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 673 69 35 670 16 92 19 - 676: TypePointer Uniform 18(fvec4) - 683: 11(int) Constant 159 - 685: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 35 683 16 92 19 - 690: 11(int) Constant 160 - 694: 11(int) Constant 163 - 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 697 69 35 694 16 92 19 - 705: 11(int) Constant 164 - 709: 11(int) Constant 166 - 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 10 35 709 16 92 19 - 714: 8(float) Constant 1064781546 - 716: 11(int) Constant 167 - 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 10 35 716 16 92 19 - 721: 8(float) Constant 1063781322 - 723: 11(int) Constant 168 - 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 726 10 35 723 16 92 19 - 728: 8(float) Constant 1120403456 - 730: 11(int) Constant 171 - 732: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 733 69 35 730 16 92 19 - 746: 11(int) Constant 174 - 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 10 35 746 16 92 19 - 755: 11(int) Constant 175 - 757: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 758 10 35 755 16 92 19 - 765: 11(int) Constant 176 - 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 768 10 35 765 16 92 19 - 774: 11(int) Constant 179 - 776: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 777 10 35 774 16 92 19 - 784: 11(int) Constant 180 - 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 69 35 784 16 92 19 - 792: 11(int) Constant 183 - 794: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 795 69 35 792 16 92 19 - 802: 11(int) Constant 184 - 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 805 10 35 802 16 92 19 - 812: 11(int) Constant 185 - 814: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 815 69 35 812 16 92 19 - 818: 8(float) Constant 1098907648 - 823: 8(float) Constant 1075838976 - 827: 11(int) Constant 187 - 836: 228(int) Constant 2 - 852: 11(int) Constant 191 - 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 136 14 24 16 - 861: 11(int) Constant 193 - 869: 11(int) Constant 196 - 878: TypePointer Input 23(fvec2) - 879(inUV): 878(ptr) Variable Input - 881: TypePointer Output 18(fvec4) -882(@entryPointOutput): 881(ptr) Variable Output + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 37 + 38: 11(int) Constant 61 + 40: 11(int) Constant 1 + 41: 11(int) Constant 5 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 40 19 36 41 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 34 28 36 38 16 39 34 17 38 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 36 38 16 35 19 40 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 10 36 38 16 35 19 24 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 25 36 38 16 35 19 17 + 54: TypeFunction 8(float) 21(ptr) 22(ptr) + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 + 62: 11(int) Constant 78 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 60 55 36 62 16 39 60 17 62 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 20 36 62 16 61 19 40 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 10 36 62 16 61 19 24 + 70: TypeVector 8(float) 3 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 72: TypePointer Function 70(fvec3) + 73: TypeFunction 70(fvec3) 72(ptr) 72(ptr) + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 71 71 71 + 81: 11(int) Constant 101 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 74 36 81 16 39 79 17 81 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 36 81 16 80 19 40 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 36 81 16 80 19 24 + 90: TypeFunction 18(fvec4) 26(ptr) + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 25 + 97: 11(int) Constant 119 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 95 91 36 97 16 39 95 17 97 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 101 25 36 97 16 96 19 40 + 106: 11(int) Constant 62 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 10 36 106 16 35 19 + 110: 8(float) Constant 1065353216 + 112: 11(int) Constant 63 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 115 20 36 112 16 35 19 + 123: 11(int) Constant 64 + 126: 8(float) Constant 1056964608 + 135: 11(int) Constant 66 + 138: 8(float) Constant 3212836864 + 139: TypeBool + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 153: 11(int) Constant 68 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 156 10 36 153 16 35 19 + 158: TypeImage 8(float) 2D array sampled format:Unknown + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 160 16 36 153 16 39 161 162 17 + 163: TypePointer UniformConstant 158 +164(textureShadowMap): 163(ptr) Variable UniformConstant + 167: 11(int) Constant 8 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 166 159 36 153 16 39 166 164(textureShadowMap) 167 + 169: TypeSampler + 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 153 16 39 172 162 17 + 173: TypePointer UniformConstant 169 +174(samplerShadowMap): 173(ptr) Variable UniformConstant + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 176 170 36 153 16 39 176 174(samplerShadowMap) 167 + 178: TypeSampledImage 158 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 180 16 36 153 16 39 181 162 17 + 194: 11(int) Constant 69 + 197: 8(float) Constant 0 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 211: 11(int) Constant 71 + 212: 8(float) Constant 1048576000 + 215: 11(int) Constant 74 + 222: 11(int) Constant 80 + 223: TypeVector 11(int) 3 + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 225: TypePointer Function 223(ivec3) + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 228 224 36 222 16 61 19 + 232: TypeInt 32 1 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 233 14 19 16 + 235: TypeVector 232(int) 2 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 234 24 + 237: TypePointer Function 235(ivec2) + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 240 236 36 222 16 61 19 + 242: TypePointer Function 11(int) + 246: TypePointer Function 232(int) + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 234 36 222 16 61 19 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 234 36 222 16 61 19 + 267: 11(int) Constant 81 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 270 10 36 267 16 61 19 + 272: 8(float) Constant 1069547520 + 274: 11(int) Constant 82 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 277 10 36 274 16 61 19 + 286: 11(int) Constant 83 + 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 289 10 36 286 16 61 19 + 298: 11(int) Constant 85 + 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 10 36 298 16 61 19 + 304: 11(int) Constant 86 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 234 36 304 16 61 19 + 309: 232(int) Constant 0 + 311: 11(int) Constant 87 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 314 234 36 311 16 61 19 + 316: 232(int) Constant 1 + 318: 11(int) Constant 89 + 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 321 234 36 318 16 61 19 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 340: 11(int) Constant 91 + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 343 234 36 340 16 61 19 + 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 362: 11(int) Constant 93 + 381: 11(int) Constant 94 + 394: 11(int) Constant 98 + 404: 11(int) Constant 102 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 407 234 36 404 16 80 19 + 419: 232(int) Constant 3 + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 424: 11(int) Constant 104 + 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 427 20 36 424 16 80 19 + 434: TypeMatrix 18(fvec4) 4 + 436: 139(bool) ConstantTrue + 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 436 + 437(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 434 + 440: 11(int) Constant 46 + 441: 11(int) Constant 14 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 + 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 + 446: 11(int) Constant 47 + 447: 11(int) Constant 21 + 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 445 435 36 446 447 16 16 17 + 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 449 40 36 424 16 39 449 16 17 438 442 443 444 + 450: TypeArray 437(Light) 17 + 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 448 17 + 452(UBO): TypeStruct 18(fvec4) 450 232(int) 232(int) + 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 + 456: 11(int) Constant 53 + 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 455 451 36 456 441 16 16 17 + 459: 11(int) Constant 55 + 460: 11(int) Constant 24 + 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 234 36 459 460 16 16 17 + 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 234 36 459 460 16 16 17 + 462: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 463 40 36 424 16 39 463 16 17 453 454 457 461 + 464(ubo): TypeStruct 452(UBO) + 467: 11(int) Constant 58 + 468: 11(int) Constant 37 + 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 466 462 36 467 468 16 16 17 + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 466 40 36 424 16 39 466 16 17 465 + 470: TypePointer Uniform 464(ubo) + 471: 470(ptr) Variable Uniform + 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 469 36 424 16 39 1 471 167 + 474: TypePointer Uniform 434 + 479: 11(int) Constant 108 + 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 10 36 479 16 80 19 + 490: 11(int) Constant 113 + 500: 11(int) Constant 115 + 507: 11(int) Constant 121 + 509: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 36 507 16 96 19 + 511: TypeImage 8(float) 2D sampled format:Unknown + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 160 16 36 507 16 39 161 162 17 + 513: TypePointer UniformConstant 511 +514(textureposition): 513(ptr) Variable UniformConstant + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 516 512 36 507 16 39 516 514(textureposition) 167 + 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 507 16 39 172 162 17 +519(samplerposition): 173(ptr) Variable UniformConstant + 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 521 518 36 507 16 39 521 519(samplerposition) 167 + 523: TypeSampledImage 511 + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 180 16 36 507 16 39 181 162 17 + 530: 11(int) Constant 122 + 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 533 71 36 530 16 96 19 +535(textureNormal): 513(ptr) Variable UniformConstant + 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 537 512 36 530 16 39 537 535(textureNormal) 167 + 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 530 16 39 172 162 17 +540(samplerNormal): 173(ptr) Variable UniformConstant + 541: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 542 539 36 530 16 39 542 540(samplerNormal) 167 + 549: 11(int) Constant 123 + 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 552 20 36 549 16 96 19 +554(textureAlbedo): 513(ptr) Variable UniformConstant + 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 556 512 36 549 16 39 556 554(textureAlbedo) 167 + 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 549 16 39 172 162 17 +559(samplerAlbedo): 173(ptr) Variable UniformConstant + 560: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 561 558 36 549 16 39 561 559(samplerAlbedo) 167 + 567: 11(int) Constant 128 + 568: TypePointer Uniform 232(int) + 571: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 577: 11(int) Constant 129 + 588: 11(int) Constant 131 + 590: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 36 588 16 96 19 + 592: 70(fvec3) ConstantComposite 110 110 110 + 598: 11(int) Constant 132 + 602: 11(int) Constant 134 + 605: 11(int) Constant 135 + 609: 11(int) Constant 137 + 612: 11(int) Constant 138 + 616: 11(int) Constant 140 + 620: 11(int) Constant 141 + 624: 11(int) Constant 143 + 628: 11(int) Constant 144 + 633: 11(int) Constant 146 + 642: 11(int) Constant 150 + 645: 8(float) Constant 1036831949 + 648: 11(int) Constant 152 + 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 651 71 36 648 16 96 19 + 656: 11(int) Constant 154 + 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 407 234 36 656 16 96 19 + 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 674: 11(int) Constant 157 + 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 677 71 36 674 16 96 19 + 680: TypePointer Uniform 18(fvec4) + 687: 11(int) Constant 159 + 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 156 10 36 687 16 96 19 + 694: 11(int) Constant 160 + 698: 11(int) Constant 163 + 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 701 71 36 698 16 96 19 + 709: 11(int) Constant 164 + 713: 11(int) Constant 166 + 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 716 10 36 713 16 96 19 + 718: 8(float) Constant 1064781546 + 720: 11(int) Constant 167 + 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 723 10 36 720 16 96 19 + 725: 8(float) Constant 1063781322 + 727: 11(int) Constant 168 + 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 730 10 36 727 16 96 19 + 732: 8(float) Constant 1120403456 + 734: 11(int) Constant 171 + 736: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 737 71 36 734 16 96 19 + 750: 11(int) Constant 174 + 752: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 753 10 36 750 16 96 19 + 759: 11(int) Constant 175 + 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 762 10 36 759 16 96 19 + 769: 11(int) Constant 176 + 771: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 772 10 36 769 16 96 19 + 778: 11(int) Constant 179 + 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 781 10 36 778 16 96 19 + 788: 11(int) Constant 180 + 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 791 71 36 788 16 96 19 + 796: 11(int) Constant 183 + 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 799 71 36 796 16 96 19 + 806: 11(int) Constant 184 + 808: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 809 10 36 806 16 96 19 + 816: 11(int) Constant 185 + 818: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 819 71 36 816 16 96 19 + 822: 8(float) Constant 1098907648 + 827: 8(float) Constant 1075838976 + 831: 11(int) Constant 187 + 840: 232(int) Constant 2 + 856: 11(int) Constant 191 + 859: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 + 865: 11(int) Constant 193 + 873: 11(int) Constant 196 + 882: TypePointer Input 23(fvec2) + 883(inUV): 882(ptr) Variable Input + 885: TypePointer Output 18(fvec4) +886(@entryPointOutput): 885(ptr) Variable Output Line 1 119 1 6(main): 4 Function None 5 7: Label - 877(inUV): 26(ptr) Variable Function - 883(param): 26(ptr) Variable Function + 881(inUV): 26(ptr) Variable Function + 887(param): 26(ptr) Variable Function Line 1 119 0 - 880: 23(fvec2) Load 879(inUV) - Store 877(inUV) 880 - 884: 23(fvec2) Load 877(inUV) - Store 883(param) 884 - 885: 18(fvec4) FunctionCall 90(@main(vf2;) 883(param) - Store 882(@entryPointOutput) 885 + 884: 23(fvec2) Load 883(inUV) + Store 881(inUV) 884 + 888: 23(fvec2) Load 881(inUV) + Store 887(param) 888 + 889: 18(fvec4) FunctionCall 93(@main(vf2;) 887(param) + Store 886(@entryPointOutput) 889 Return FunctionEnd Line 1 61 1 @@ -492,652 +496,652 @@ spv.debuginfo.hlsl.frag 29(P): 21(ptr) FunctionParameter 30(layer): 22(ptr) FunctionParameter 31(offset): 26(ptr) FunctionParameter - 40: Label - 103(shadow): 22(ptr) Variable Function -109(shadowCoord): 21(ptr) Variable Function - 150(dist): 22(ptr) Variable Function - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 29(P) 46 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 30(layer) 46 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 50 31(offset) 46 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 32(textureProj(vf4;f1;vf2;) - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 102 102 16 16 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 104 103(shadow) 46 - Store 103(shadow) 106 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 108 108 16 16 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 110 109(shadowCoord) 46 - 113: 18(fvec4) Load 29(P) - 114: 22(ptr) AccessChain 29(P) 17 - 115: 8(float) Load 114 - 116: 18(fvec4) CompositeConstruct 115 115 115 115 - 117: 18(fvec4) FDiv 113 116 - Store 109(shadowCoord) 117 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 119 119 16 16 - 120: 18(fvec4) Load 109(shadowCoord) - 121: 23(fvec2) VectorShuffle 120 120 0 1 - 123: 23(fvec2) VectorTimesScalar 121 122 - 124: 23(fvec2) CompositeConstruct 122 122 - 125: 23(fvec2) FAdd 123 124 - 126: 22(ptr) AccessChain 109(shadowCoord) 16 - 127: 8(float) CompositeExtract 125 0 - Store 126 127 - 128: 22(ptr) AccessChain 109(shadowCoord) 38 - 129: 8(float) CompositeExtract 125 1 - Store 128 129 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 131 131 16 16 - 132: 22(ptr) AccessChain 109(shadowCoord) 24 - 133: 8(float) Load 132 - 138: 135(bool) FOrdGreaterThan 133 134 - 139: 22(ptr) AccessChain 109(shadowCoord) 24 - 140: 8(float) Load 139 - 142: 135(bool) FOrdLessThan 140 106 - 144: 135(bool) LogicalAnd 138 142 - SelectionMerge 146 None - BranchConditional 144 145 146 - 145: Label - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 149 149 16 16 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 151 150(dist) 46 - 164: 154 Load 160(textureShadowMap) - 173: 165 Load 170(samplerShadowMap) - 178: 174 SampledImage 164 173 - 179: 18(fvec4) Load 109(shadowCoord) - 180: 23(fvec2) VectorShuffle 179 179 0 1 - 181: 23(fvec2) Load 31(offset) - 182: 23(fvec2) FAdd 180 181 - 183: 8(float) Load 30(layer) - 184: 8(float) CompositeExtract 182 0 - 185: 8(float) CompositeExtract 182 1 - 186: 68(fvec3) CompositeConstruct 184 185 183 - 187: 18(fvec4) ImageSampleImplicitLod 178 186 - 188: 8(float) CompositeExtract 187 0 - Store 150(dist) 188 - 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 190 190 16 16 - 191: 22(ptr) AccessChain 109(shadowCoord) 17 - 192: 8(float) Load 191 - 195: 135(bool) FOrdGreaterThan 192 193 - 196: 8(float) Load 150(dist) - 197: 22(ptr) AccessChain 109(shadowCoord) 24 - 198: 8(float) Load 197 - 200: 135(bool) FOrdLessThan 196 198 - 202: 135(bool) LogicalAnd 195 200 - SelectionMerge 204 None - BranchConditional 202 203 204 - 203: Label - 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 207 207 16 16 - Store 103(shadow) 208 - Branch 204 - 204: Label - Branch 146 - 146: Label - 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 211 211 16 16 - 212: 8(float) Load 103(shadow) - ReturnValue 212 + 33: Label + 107(shadow): 22(ptr) Variable Function +113(shadowCoord): 21(ptr) Variable Function + 154(dist): 22(ptr) Variable Function + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 38 38 16 16 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 29(P) 47 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 30(layer) 47 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 31(offset) 47 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 35 32(textureProj(vf4;f1;vf2;) + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 106 106 16 16 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(shadow) 47 + Store 107(shadow) 110 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 112 112 16 16 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 114 113(shadowCoord) 47 + 117: 18(fvec4) Load 29(P) + 118: 22(ptr) AccessChain 29(P) 17 + 119: 8(float) Load 118 + 120: 18(fvec4) CompositeConstruct 119 119 119 119 + 121: 18(fvec4) FDiv 117 120 + Store 113(shadowCoord) 121 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 123 123 16 16 + 124: 18(fvec4) Load 113(shadowCoord) + 125: 23(fvec2) VectorShuffle 124 124 0 1 + 127: 23(fvec2) VectorTimesScalar 125 126 + 128: 23(fvec2) CompositeConstruct 126 126 + 129: 23(fvec2) FAdd 127 128 + 130: 22(ptr) AccessChain 113(shadowCoord) 16 + 131: 8(float) CompositeExtract 129 0 + Store 130 131 + 132: 22(ptr) AccessChain 113(shadowCoord) 40 + 133: 8(float) CompositeExtract 129 1 + Store 132 133 + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 135 135 16 16 + 136: 22(ptr) AccessChain 113(shadowCoord) 24 + 137: 8(float) Load 136 + 142: 139(bool) FOrdGreaterThan 137 138 + 143: 22(ptr) AccessChain 113(shadowCoord) 24 + 144: 8(float) Load 143 + 146: 139(bool) FOrdLessThan 144 110 + 148: 139(bool) LogicalAnd 142 146 + SelectionMerge 150 None + BranchConditional 148 149 150 + 149: Label + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 153 153 16 16 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 155 154(dist) 47 + 168: 158 Load 164(textureShadowMap) + 177: 169 Load 174(samplerShadowMap) + 182: 178 SampledImage 168 177 + 183: 18(fvec4) Load 113(shadowCoord) + 184: 23(fvec2) VectorShuffle 183 183 0 1 + 185: 23(fvec2) Load 31(offset) + 186: 23(fvec2) FAdd 184 185 + 187: 8(float) Load 30(layer) + 188: 8(float) CompositeExtract 186 0 + 189: 8(float) CompositeExtract 186 1 + 190: 70(fvec3) CompositeConstruct 188 189 187 + 191: 18(fvec4) ImageSampleImplicitLod 182 190 + 192: 8(float) CompositeExtract 191 0 + Store 154(dist) 192 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 194 194 16 16 + 195: 22(ptr) AccessChain 113(shadowCoord) 17 + 196: 8(float) Load 195 + 199: 139(bool) FOrdGreaterThan 196 197 + 200: 8(float) Load 154(dist) + 201: 22(ptr) AccessChain 113(shadowCoord) 24 + 202: 8(float) Load 201 + 204: 139(bool) FOrdLessThan 200 202 + 206: 139(bool) LogicalAnd 199 204 + SelectionMerge 208 None + BranchConditional 206 207 208 + 207: Label + 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 211 211 16 16 + Store 107(shadow) 212 + Branch 208 + 208: Label + Branch 150 + 150: Label + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 215 215 16 16 + 216: 8(float) Load 107(shadow) + ReturnValue 216 FunctionEnd Line 1 78 1 -57(filterPCF(vf4;f1;): 8(float) Function None 53 - 55(sc): 21(ptr) FunctionParameter - 56(layer): 22(ptr) FunctionParameter - 60: Label -222(sizeQueryTemp): 221(ptr) Variable Function - 234(texDim): 233(ptr) Variable Function - 248(elements): 242(ptr) Variable Function - 255(levels): 242(ptr) Variable Function - 264(scale): 22(ptr) Variable Function - 271(dx): 22(ptr) Variable Function - 283(dy): 22(ptr) Variable Function -295(shadowFactor): 22(ptr) Variable Function - 301(count): 242(ptr) Variable Function - 308(range): 242(ptr) Variable Function - 315(x): 242(ptr) Variable Function - 337(y): 242(ptr) Variable Function - 368(param): 21(ptr) Variable Function - 370(param): 22(ptr) Variable Function - 372(param): 26(ptr) Variable Function - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 55(sc) 46 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 56(layer) 46 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 57(filterPCF(vf4;f1;) - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 218 218 16 16 - 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 223 222(sizeQueryTemp) 46 - 226: 154 Load 160(textureShadowMap) - 227: 219(ivec3) ImageQuerySizeLod 226 16 - Store 222(sizeQueryTemp) 227 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 235 234(texDim) 46 - 239: 238(ptr) AccessChain 222(sizeQueryTemp) 16 - 240: 11(int) Load 239 - 241: 228(int) Bitcast 240 - 243: 242(ptr) AccessChain 234(texDim) 16 - Store 243 241 - 244: 238(ptr) AccessChain 222(sizeQueryTemp) 38 - 245: 11(int) Load 244 - 246: 228(int) Bitcast 245 - 247: 242(ptr) AccessChain 234(texDim) 38 - Store 247 246 - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(elements) 46 - 252: 238(ptr) AccessChain 222(sizeQueryTemp) 24 - 253: 11(int) Load 252 - 254: 228(int) Bitcast 253 - Store 248(elements) 254 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 256 255(levels) 46 - 259: 154 Load 160(textureShadowMap) - 260: 11(int) ImageQueryLevels 259 - 261: 228(int) Bitcast 260 - Store 255(levels) 261 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 263 263 16 16 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(scale) 46 - Store 264(scale) 268 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 270 270 16 16 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 272 271(dx) 46 - 275: 8(float) Load 264(scale) - 276: 8(float) FMul 275 106 - 277: 242(ptr) AccessChain 234(texDim) 16 - 278: 228(int) Load 277 - 279: 8(float) ConvertSToF 278 - 280: 8(float) FDiv 276 279 - Store 271(dx) 280 - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 282 282 16 16 - 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 284 283(dy) 46 - 287: 8(float) Load 264(scale) - 288: 8(float) FMul 287 106 - 289: 242(ptr) AccessChain 234(texDim) 38 - 290: 228(int) Load 289 - 291: 8(float) ConvertSToF 290 - 292: 8(float) FDiv 288 291 - Store 283(dy) 292 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 294 294 16 16 - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 296 295(shadowFactor) 46 - Store 295(shadowFactor) 193 - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 300 300 16 16 - 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(count) 46 - Store 301(count) 305 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 307 307 16 16 - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 309 308(range) 46 - Store 308(range) 312 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(x) 46 - 319: 228(int) Load 308(range) - 320: 228(int) SNegate 319 - Store 315(x) 320 - Branch 321 - 321: Label - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 - LoopMerge 323 324 None - Branch 327 - 327: Label - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 - 330: 228(int) Load 315(x) - 331: 228(int) Load 308(range) - 333: 135(bool) SLessThanEqual 330 331 - BranchConditional 333 322 323 - 322: Label - 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 - 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 338 337(y) 46 - 341: 228(int) Load 308(range) - 342: 228(int) SNegate 341 - Store 337(y) 342 - Branch 343 - 343: Label - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 - LoopMerge 345 346 None - Branch 349 - 349: Label - 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 - 352: 228(int) Load 337(y) - 353: 228(int) Load 308(range) - 355: 135(bool) SLessThanEqual 352 353 - BranchConditional 355 344 345 - 344: Label - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 358 358 16 16 - 359: 8(float) Load 271(dx) - 360: 228(int) Load 315(x) - 361: 8(float) ConvertSToF 360 - 362: 8(float) FMul 359 361 - 363: 8(float) Load 283(dy) - 364: 228(int) Load 337(y) +58(filterPCF(vf4;f1;): 8(float) Function None 54 + 56(sc): 21(ptr) FunctionParameter + 57(layer): 22(ptr) FunctionParameter + 59: Label +226(sizeQueryTemp): 225(ptr) Variable Function + 238(texDim): 237(ptr) Variable Function + 252(elements): 246(ptr) Variable Function + 259(levels): 246(ptr) Variable Function + 268(scale): 22(ptr) Variable Function + 275(dx): 22(ptr) Variable Function + 287(dy): 22(ptr) Variable Function +299(shadowFactor): 22(ptr) Variable Function + 305(count): 246(ptr) Variable Function + 312(range): 246(ptr) Variable Function + 319(x): 246(ptr) Variable Function + 341(y): 246(ptr) Variable Function + 372(param): 21(ptr) Variable Function + 374(param): 22(ptr) Variable Function + 376(param): 26(ptr) Variable Function + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 62 62 16 16 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 56(sc) 47 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 57(layer) 47 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 222 222 16 16 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 227 226(sizeQueryTemp) 47 + 230: 158 Load 164(textureShadowMap) + 231: 223(ivec3) ImageQuerySizeLod 230 16 + Store 226(sizeQueryTemp) 231 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 239 238(texDim) 47 + 243: 242(ptr) AccessChain 226(sizeQueryTemp) 16 + 244: 11(int) Load 243 + 245: 232(int) Bitcast 244 + 247: 246(ptr) AccessChain 238(texDim) 16 + Store 247 245 + 248: 242(ptr) AccessChain 226(sizeQueryTemp) 40 + 249: 11(int) Load 248 + 250: 232(int) Bitcast 249 + 251: 246(ptr) AccessChain 238(texDim) 40 + Store 251 250 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(elements) 47 + 256: 242(ptr) AccessChain 226(sizeQueryTemp) 24 + 257: 11(int) Load 256 + 258: 232(int) Bitcast 257 + Store 252(elements) 258 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(levels) 47 + 263: 158 Load 164(textureShadowMap) + 264: 11(int) ImageQueryLevels 263 + 265: 232(int) Bitcast 264 + Store 259(levels) 265 + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 267 267 16 16 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 269 268(scale) 47 + Store 268(scale) 272 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 274 274 16 16 + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 276 275(dx) 47 + 279: 8(float) Load 268(scale) + 280: 8(float) FMul 279 110 + 281: 246(ptr) AccessChain 238(texDim) 16 + 282: 232(int) Load 281 + 283: 8(float) ConvertSToF 282 + 284: 8(float) FDiv 280 283 + Store 275(dx) 284 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 286 286 16 16 + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 288 287(dy) 47 + 291: 8(float) Load 268(scale) + 292: 8(float) FMul 291 110 + 293: 246(ptr) AccessChain 238(texDim) 40 + 294: 232(int) Load 293 + 295: 8(float) ConvertSToF 294 + 296: 8(float) FDiv 292 295 + Store 287(dy) 296 + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 298 298 16 16 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 300 299(shadowFactor) 47 + Store 299(shadowFactor) 197 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 304 304 16 16 + 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 306 305(count) 47 + Store 305(count) 309 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 311 311 16 16 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 313 312(range) 47 + Store 312(range) 316 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 320 319(x) 47 + 323: 232(int) Load 312(range) + 324: 232(int) SNegate 323 + Store 319(x) 324 + Branch 325 + 325: Label + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 + LoopMerge 327 328 None + Branch 331 + 331: Label + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 + 334: 232(int) Load 319(x) + 335: 232(int) Load 312(range) + 337: 139(bool) SLessThanEqual 334 335 + BranchConditional 337 326 327 + 326: Label + 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 + 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 342 341(y) 47 + 345: 232(int) Load 312(range) + 346: 232(int) SNegate 345 + Store 341(y) 346 + Branch 347 + 347: Label + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 + LoopMerge 349 350 None + Branch 353 + 353: Label + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 + 356: 232(int) Load 341(y) + 357: 232(int) Load 312(range) + 359: 139(bool) SLessThanEqual 356 357 + BranchConditional 359 348 349 + 348: Label + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 362 362 16 16 + 363: 8(float) Load 275(dx) + 364: 232(int) Load 319(x) 365: 8(float) ConvertSToF 364 366: 8(float) FMul 363 365 - 367: 23(fvec2) CompositeConstruct 362 366 - 369: 18(fvec4) Load 55(sc) - Store 368(param) 369 - 371: 8(float) Load 56(layer) - Store 370(param) 371 - Store 372(param) 367 - 373: 8(float) FunctionCall 32(textureProj(vf4;f1;vf2;) 368(param) 370(param) 372(param) - 374: 8(float) Load 295(shadowFactor) - 375: 8(float) FAdd 374 373 - Store 295(shadowFactor) 375 - 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 377 377 16 16 - 378: 228(int) Load 301(count) - 379: 228(int) IAdd 378 312 - Store 301(count) 379 - Branch 346 - 346: Label - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 16 16 - 382: 228(int) Load 337(y) - 383: 228(int) IAdd 382 312 - Store 337(y) 383 - Branch 343 - 345: Label - Branch 324 - 324: Label - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 314 314 16 16 - 386: 228(int) Load 315(x) - 387: 228(int) IAdd 386 312 - Store 315(x) 387 - Branch 321 - 323: Label - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 390 390 16 16 - 391: 8(float) Load 295(shadowFactor) - 392: 228(int) Load 301(count) - 393: 8(float) ConvertSToF 392 - 394: 8(float) FDiv 391 393 - ReturnValue 394 + 367: 8(float) Load 287(dy) + 368: 232(int) Load 341(y) + 369: 8(float) ConvertSToF 368 + 370: 8(float) FMul 367 369 + 371: 23(fvec2) CompositeConstruct 366 370 + 373: 18(fvec4) Load 56(sc) + Store 372(param) 373 + 375: 8(float) Load 57(layer) + Store 374(param) 375 + Store 376(param) 371 + 377: 8(float) FunctionCall 32(textureProj(vf4;f1;vf2;) 372(param) 374(param) 376(param) + 378: 8(float) Load 299(shadowFactor) + 379: 8(float) FAdd 378 377 + Store 299(shadowFactor) 379 + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 381 381 16 16 + 382: 232(int) Load 305(count) + 383: 232(int) IAdd 382 316 + Store 305(count) 383 + Branch 350 + 350: Label + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 + 386: 232(int) Load 341(y) + 387: 232(int) IAdd 386 316 + Store 341(y) 387 + Branch 347 + 349: Label + Branch 328 + 328: Label + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 + 390: 232(int) Load 319(x) + 391: 232(int) IAdd 390 316 + Store 319(x) 391 + Branch 325 + 327: Label + 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 394 394 16 16 + 395: 8(float) Load 299(shadowFactor) + 396: 232(int) Load 305(count) + 397: 8(float) ConvertSToF 396 + 398: 8(float) FDiv 395 397 + ReturnValue 398 FunctionEnd Line 1 101 49 -75(shadow(vf3;vf3;): 68(fvec3) Function None 71 - 73(fragcolor): 70(ptr) FunctionParameter - 74(fragPos): 70(ptr) FunctionParameter +77(shadow(vf3;vf3;): 70(fvec3) Function None 73 + 75(fragcolor): 72(ptr) FunctionParameter + 76(fragPos): 72(ptr) FunctionParameter 78: Label - 401(i): 242(ptr) Variable Function - 421(shadowClip): 21(ptr) Variable Function -476(shadowFactor): 22(ptr) Variable Function - 481(param): 21(ptr) Variable Function - 483(param): 22(ptr) Variable Function - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 81 73(fragcolor) 46 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 74(fragPos) 46 - 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 77 75(shadow(vf3;vf3;) - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 402 401(i) 46 - Store 401(i) 305 - Branch 405 - 405: Label - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 - LoopMerge 407 408 None - Branch 411 + 405(i): 246(ptr) Variable Function + 425(shadowClip): 21(ptr) Variable Function +480(shadowFactor): 22(ptr) Variable Function + 485(param): 21(ptr) Variable Function + 487(param): 22(ptr) Variable Function + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 81 81 16 16 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 75(fragcolor) 47 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 76(fragPos) 47 + 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) + 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 406 405(i) 47 + Store 405(i) 309 + Branch 409 + 409: Label + 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 + LoopMerge 411 412 None + Branch 415 + 415: Label + 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 + 418: 232(int) Load 405(i) + 421: 139(bool) SLessThan 418 419 + BranchConditional 421 410 411 + 410: Label + 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 424 424 16 16 + 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 426 425(shadowClip) 47 + 429: 70(fvec3) Load 76(fragPos) + 430: 8(float) CompositeExtract 429 0 + 431: 8(float) CompositeExtract 429 1 + 432: 8(float) CompositeExtract 429 2 + 433: 18(fvec4) CompositeConstruct 430 431 432 110 + 473: 232(int) Load 405(i) + 475: 474(ptr) AccessChain 471 309 316 473 419 + 476: 434 Load 475 + 477: 18(fvec4) VectorTimesMatrix 433 476 + Store 425(shadowClip) 477 + 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 479 479 16 16 + 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 481 480(shadowFactor) 47 + 483: 232(int) Load 405(i) + 484: 8(float) ConvertSToF 483 + 486: 18(fvec4) Load 425(shadowClip) + Store 485(param) 486 + Store 487(param) 484 + 488: 8(float) FunctionCall 58(filterPCF(vf4;f1;) 485(param) 487(param) + Store 480(shadowFactor) 488 + 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 490 490 16 16 + 491: 8(float) Load 480(shadowFactor) + 492: 70(fvec3) Load 75(fragcolor) + 493: 70(fvec3) VectorTimesScalar 492 491 + Store 75(fragcolor) 493 + Branch 412 + 412: Label + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 + 496: 232(int) Load 405(i) + 497: 232(int) IAdd 496 316 + Store 405(i) 497 + Branch 409 411: Label - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 - 414: 228(int) Load 401(i) - 417: 135(bool) SLessThan 414 415 - BranchConditional 417 406 407 - 406: Label - 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 420 420 16 16 - 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 422 421(shadowClip) 46 - 425: 68(fvec3) Load 74(fragPos) - 426: 8(float) CompositeExtract 425 0 - 427: 8(float) CompositeExtract 425 1 - 428: 8(float) CompositeExtract 425 2 - 429: 18(fvec4) CompositeConstruct 426 427 428 106 - 469: 228(int) Load 401(i) - 471: 470(ptr) AccessChain 467 305 312 469 415 - 472: 430 Load 471 - 473: 18(fvec4) VectorTimesMatrix 429 472 - Store 421(shadowClip) 473 - 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 475 475 16 16 - 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 477 476(shadowFactor) 46 - 479: 228(int) Load 401(i) - 480: 8(float) ConvertSToF 479 - 482: 18(fvec4) Load 421(shadowClip) - Store 481(param) 482 - Store 483(param) 480 - 484: 8(float) FunctionCall 57(filterPCF(vf4;f1;) 481(param) 483(param) - Store 476(shadowFactor) 484 - 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 486 486 16 16 - 487: 8(float) Load 476(shadowFactor) - 488: 68(fvec3) Load 73(fragcolor) - 489: 68(fvec3) VectorTimesScalar 488 487 - Store 73(fragcolor) 489 - Branch 408 - 408: Label - 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 400 400 16 16 - 492: 228(int) Load 401(i) - 493: 228(int) IAdd 492 312 - Store 401(i) 493 - Branch 405 - 407: Label - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 496 496 16 16 - 497: 68(fvec3) Load 73(fragcolor) - ReturnValue 497 + 498: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 500 500 16 16 + 501: 70(fvec3) Load 75(fragcolor) + ReturnValue 501 FunctionEnd Line 1 119 1 - 90(@main(vf2;): 18(fvec4) Function None 87 - 89(inUV): 26(ptr) FunctionParameter - 93: Label - 504(fragPos): 70(ptr) Variable Function - 527(normal): 70(ptr) Variable Function - 546(albedo): 21(ptr) Variable Function - 585(fragcolor): 70(ptr) Variable Function - 589(param): 70(ptr) Variable Function - 590(param): 70(ptr) Variable Function - 645(N): 70(ptr) Variable Function - 653(i): 242(ptr) Variable Function - 671(L): 70(ptr) Variable Function - 684(dist): 22(ptr) Variable Function - 695(V): 70(ptr) Variable Function -710(lightCosInnerAngle): 22(ptr) Variable Function -717(lightCosOuterAngle): 22(ptr) Variable Function - 724(lightRange): 22(ptr) Variable Function - 731(dir): 70(ptr) Variable Function - 747(cosDir): 22(ptr) Variable Function - 756(spotEffect): 22(ptr) Variable Function -766(heightAttenuation): 22(ptr) Variable Function - 775(NdotL): 22(ptr) Variable Function - 785(diff): 70(ptr) Variable Function - 793(R): 70(ptr) Variable Function - 803(NdotR): 22(ptr) Variable Function - 813(spec): 70(ptr) Variable Function - 862(param): 70(ptr) Variable Function - 864(param): 70(ptr) Variable Function - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 16 16 16 16 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 96 89(inUV) 46 - 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 92 90(@main(vf2;) - 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 503 503 16 16 - 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 505 504(fragPos) 46 - 513: 507 Load 510(textureposition) - 518: 165 Load 515(samplerposition) - 521: 519 SampledImage 513 518 - 522: 23(fvec2) Load 89(inUV) - 523: 18(fvec4) ImageSampleImplicitLod 521 522 - 524: 68(fvec3) VectorShuffle 523 523 0 1 2 - Store 504(fragPos) 524 - 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 526 526 16 16 - 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 528 527(normal) 46 - 534: 507 Load 531(textureNormal) - 539: 165 Load 536(samplerNormal) - 540: 519 SampledImage 534 539 - 541: 23(fvec2) Load 89(inUV) - 542: 18(fvec4) ImageSampleImplicitLod 540 541 - 543: 68(fvec3) VectorShuffle 542 542 0 1 2 - Store 527(normal) 543 - 544: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 545 545 16 16 - 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 547 546(albedo) 46 - 553: 507 Load 550(textureAlbedo) - 558: 165 Load 555(samplerAlbedo) - 559: 519 SampledImage 553 558 - 560: 23(fvec2) Load 89(inUV) - 561: 18(fvec4) ImageSampleImplicitLod 559 560 - Store 546(albedo) 561 - 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 563 563 16 16 - 565: 564(ptr) AccessChain 467 305 415 - 566: 228(int) Load 565 - 568: 135(bool) SGreaterThan 566 305 - SelectionMerge 570 None - BranchConditional 568 569 570 - 569: Label - 571: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 573 573 16 16 - 574: 564(ptr) AccessChain 467 305 415 - 575: 228(int) Load 574 - SelectionMerge 581 None - Switch 575 581 - case 1: 576 - case 2: 577 - case 3: 578 - case 4: 579 - case 5: 580 - 576: Label - 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 583: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 584 584 16 16 - 587: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 586 585(fragcolor) 46 - Store 589(param) 588 - 591: 68(fvec3) Load 504(fragPos) - Store 590(param) 591 - 592: 68(fvec3) FunctionCall 75(shadow(vf3;vf3;) 589(param) 590(param) - Store 585(fragcolor) 592 - 593: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 594 594 16 16 - Branch 581 - 577: Label - 596: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 598 598 16 16 - 599: 68(fvec3) Load 504(fragPos) - Store 585(fragcolor) 599 - 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 601 601 16 16 - Branch 581 - 578: Label - 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 605 605 16 16 - 606: 68(fvec3) Load 527(normal) - Store 585(fragcolor) 606 - 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 608 608 16 16 - Branch 581 - 579: Label - 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 612 612 16 16 - 613: 18(fvec4) Load 546(albedo) - 614: 68(fvec3) VectorShuffle 613 613 0 1 2 - Store 585(fragcolor) 614 - 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 616 616 16 16 - Branch 581 + 93(@main(vf2;): 18(fvec4) Function None 90 + 92(inUV): 26(ptr) FunctionParameter + 94: Label + 508(fragPos): 72(ptr) Variable Function + 531(normal): 72(ptr) Variable Function + 550(albedo): 21(ptr) Variable Function + 589(fragcolor): 72(ptr) Variable Function + 593(param): 72(ptr) Variable Function + 594(param): 72(ptr) Variable Function + 649(N): 72(ptr) Variable Function + 657(i): 246(ptr) Variable Function + 675(L): 72(ptr) Variable Function + 688(dist): 22(ptr) Variable Function + 699(V): 72(ptr) Variable Function +714(lightCosInnerAngle): 22(ptr) Variable Function +721(lightCosOuterAngle): 22(ptr) Variable Function + 728(lightRange): 22(ptr) Variable Function + 735(dir): 72(ptr) Variable Function + 751(cosDir): 22(ptr) Variable Function + 760(spotEffect): 22(ptr) Variable Function +770(heightAttenuation): 22(ptr) Variable Function + 779(NdotL): 22(ptr) Variable Function + 789(diff): 72(ptr) Variable Function + 797(R): 72(ptr) Variable Function + 807(NdotR): 22(ptr) Variable Function + 817(spec): 72(ptr) Variable Function + 866(param): 72(ptr) Variable Function + 868(param): 72(ptr) Variable Function + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 97 97 16 16 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 92(inUV) 47 + 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 93(@main(vf2;) + 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 507 507 16 16 + 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 509 508(fragPos) 47 + 517: 511 Load 514(textureposition) + 522: 169 Load 519(samplerposition) + 525: 523 SampledImage 517 522 + 526: 23(fvec2) Load 92(inUV) + 527: 18(fvec4) ImageSampleImplicitLod 525 526 + 528: 70(fvec3) VectorShuffle 527 527 0 1 2 + Store 508(fragPos) 528 + 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 530 530 16 16 + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 532 531(normal) 47 + 538: 511 Load 535(textureNormal) + 543: 169 Load 540(samplerNormal) + 544: 523 SampledImage 538 543 + 545: 23(fvec2) Load 92(inUV) + 546: 18(fvec4) ImageSampleImplicitLod 544 545 + 547: 70(fvec3) VectorShuffle 546 546 0 1 2 + Store 531(normal) 547 + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 549 549 16 16 + 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 551 550(albedo) 47 + 557: 511 Load 554(textureAlbedo) + 562: 169 Load 559(samplerAlbedo) + 563: 523 SampledImage 557 562 + 564: 23(fvec2) Load 92(inUV) + 565: 18(fvec4) ImageSampleImplicitLod 563 564 + Store 550(albedo) 565 + 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 567 567 16 16 + 569: 568(ptr) AccessChain 471 309 419 + 570: 232(int) Load 569 + 572: 139(bool) SGreaterThan 570 309 + SelectionMerge 574 None + BranchConditional 572 573 574 + 573: Label + 575: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 577 577 16 16 + 578: 568(ptr) AccessChain 471 309 419 + 579: 232(int) Load 578 + SelectionMerge 585 None + Switch 579 585 + case 1: 580 + case 2: 581 + case 3: 582 + case 4: 583 + case 5: 584 580: Label - 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 620 620 16 16 - 621: 18(fvec4) Load 546(albedo) - 622: 68(fvec3) VectorShuffle 621 621 3 3 3 - Store 585(fragcolor) 622 - 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 624 624 16 16 - Branch 581 - 581: Label - 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 629 629 16 16 - 630: 68(fvec3) Load 585(fragcolor) - 631: 8(float) CompositeExtract 630 0 - 632: 8(float) CompositeExtract 630 1 - 633: 8(float) CompositeExtract 630 2 - 634: 18(fvec4) CompositeConstruct 631 632 633 106 - ReturnValue 634 - 570: Label - 636: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 637: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 638 638 16 16 - 639: 18(fvec4) Load 546(albedo) - 640: 68(fvec3) VectorShuffle 639 639 0 1 2 - 642: 68(fvec3) VectorTimesScalar 640 641 - Store 585(fragcolor) 642 - 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 644 644 16 16 - 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 646 645(N) 46 - 649: 68(fvec3) Load 527(normal) - 650: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 649 - Store 645(N) 650 - 651: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 - 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 654 653(i) 46 - Store 653(i) 305 - Branch 656 - 656: Label - 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 661: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 - LoopMerge 658 659 None - Branch 662 - 662: Label - 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 - 665: 228(int) Load 653(i) - 667: 135(bool) SLessThan 665 415 - BranchConditional 667 657 658 - 657: Label - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 670 670 16 16 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 672 671(L) 46 - 675: 228(int) Load 653(i) - 677: 676(ptr) AccessChain 467 305 312 675 305 - 678: 18(fvec4) Load 677 - 679: 68(fvec3) VectorShuffle 678 678 0 1 2 - 680: 68(fvec3) Load 504(fragPos) - 681: 68(fvec3) FSub 679 680 - Store 671(L) 681 - 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 683 683 16 16 - 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 685 684(dist) 46 - 687: 68(fvec3) Load 671(L) - 688: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 687 - Store 684(dist) 688 - 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 690 690 16 16 - 691: 68(fvec3) Load 671(L) - 692: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 691 - Store 671(L) 692 - 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 694 694 16 16 - 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 696 695(V) 46 - 699: 676(ptr) AccessChain 467 305 305 - 700: 18(fvec4) Load 699 - 701: 68(fvec3) VectorShuffle 700 700 0 1 2 - 702: 68(fvec3) Load 504(fragPos) - 703: 68(fvec3) FSub 701 702 - Store 695(V) 703 - 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 705 705 16 16 - 706: 68(fvec3) Load 695(V) - 707: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 706 - Store 695(V) 707 - 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 709 709 16 16 - 713: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 711 710(lightCosInnerAngle) 46 - Store 710(lightCosInnerAngle) 714 - 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 716 716 16 16 - 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 718 717(lightCosOuterAngle) 46 - Store 717(lightCosOuterAngle) 721 - 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 723 723 16 16 - 727: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 725 724(lightRange) 46 - Store 724(lightRange) 728 - 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 730 730 16 16 - 734: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 732 731(dir) 46 - 735: 228(int) Load 653(i) - 736: 676(ptr) AccessChain 467 305 312 735 305 - 737: 18(fvec4) Load 736 - 738: 68(fvec3) VectorShuffle 737 737 0 1 2 - 739: 228(int) Load 653(i) - 740: 676(ptr) AccessChain 467 305 312 739 312 + 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 587: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 588 588 16 16 + 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 590 589(fragcolor) 47 + Store 593(param) 592 + 595: 70(fvec3) Load 508(fragPos) + Store 594(param) 595 + 596: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 593(param) 594(param) + Store 589(fragcolor) 596 + 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 598 598 16 16 + Branch 585 + 581: Label + 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 601: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 602 602 16 16 + 603: 70(fvec3) Load 508(fragPos) + Store 589(fragcolor) 603 + 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 605 605 16 16 + Branch 585 + 582: Label + 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 608: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 609 609 16 16 + 610: 70(fvec3) Load 531(normal) + Store 589(fragcolor) 610 + 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 612 612 16 16 + Branch 585 + 583: Label + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 616 616 16 16 + 617: 18(fvec4) Load 550(albedo) + 618: 70(fvec3) VectorShuffle 617 617 0 1 2 + Store 589(fragcolor) 618 + 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 620 620 16 16 + Branch 585 + 584: Label + 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 624 624 16 16 + 625: 18(fvec4) Load 550(albedo) + 626: 70(fvec3) VectorShuffle 625 625 3 3 3 + Store 589(fragcolor) 626 + 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 628 628 16 16 + Branch 585 + 585: Label + 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 633 633 16 16 + 634: 70(fvec3) Load 589(fragcolor) + 635: 8(float) CompositeExtract 634 0 + 636: 8(float) CompositeExtract 634 1 + 637: 8(float) CompositeExtract 634 2 + 638: 18(fvec4) CompositeConstruct 635 636 637 110 + ReturnValue 638 + 574: Label + 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 642 642 16 16 + 643: 18(fvec4) Load 550(albedo) + 644: 70(fvec3) VectorShuffle 643 643 0 1 2 + 646: 70(fvec3) VectorTimesScalar 644 645 + Store 589(fragcolor) 646 + 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 648 648 16 16 + 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 650 649(N) 47 + 653: 70(fvec3) Load 531(normal) + 654: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 653 + Store 649(N) 654 + 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 + 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 658 657(i) 47 + Store 657(i) 309 + Branch 660 + 660: Label + 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 + LoopMerge 662 663 None + Branch 666 + 666: Label + 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 + 669: 232(int) Load 657(i) + 671: 139(bool) SLessThan 669 419 + BranchConditional 671 661 662 + 661: Label + 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 674 674 16 16 + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 676 675(L) 47 + 679: 232(int) Load 657(i) + 681: 680(ptr) AccessChain 471 309 316 679 309 + 682: 18(fvec4) Load 681 + 683: 70(fvec3) VectorShuffle 682 682 0 1 2 + 684: 70(fvec3) Load 508(fragPos) + 685: 70(fvec3) FSub 683 684 + Store 675(L) 685 + 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 687 687 16 16 + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 689 688(dist) 47 + 691: 70(fvec3) Load 675(L) + 692: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 691 + Store 688(dist) 692 + 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 694 694 16 16 + 695: 70(fvec3) Load 675(L) + 696: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 695 + Store 675(L) 696 + 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 698 698 16 16 + 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 700 699(V) 47 + 703: 680(ptr) AccessChain 471 309 309 + 704: 18(fvec4) Load 703 + 705: 70(fvec3) VectorShuffle 704 704 0 1 2 + 706: 70(fvec3) Load 508(fragPos) + 707: 70(fvec3) FSub 705 706 + Store 699(V) 707 + 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 709 709 16 16 + 710: 70(fvec3) Load 699(V) + 711: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 710 + Store 699(V) 711 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 713 713 16 16 + 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 715 714(lightCosInnerAngle) 47 + Store 714(lightCosInnerAngle) 718 + 719: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 720 720 16 16 + 724: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 722 721(lightCosOuterAngle) 47 + Store 721(lightCosOuterAngle) 725 + 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 727 727 16 16 + 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 729 728(lightRange) 47 + Store 728(lightRange) 732 + 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 734 734 16 16 + 738: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 736 735(dir) 47 + 739: 232(int) Load 657(i) + 740: 680(ptr) AccessChain 471 309 316 739 309 741: 18(fvec4) Load 740 - 742: 68(fvec3) VectorShuffle 741 741 0 1 2 - 743: 68(fvec3) FSub 738 742 - 744: 68(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 743 - Store 731(dir) 744 - 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 746 746 16 16 - 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 748 747(cosDir) 46 - 751: 68(fvec3) Load 671(L) - 752: 68(fvec3) Load 731(dir) - 753: 8(float) Dot 751 752 - Store 747(cosDir) 753 - 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 755 755 16 16 - 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 757 756(spotEffect) 46 - 760: 8(float) Load 717(lightCosOuterAngle) - 761: 8(float) Load 710(lightCosInnerAngle) - 762: 8(float) Load 747(cosDir) - 763: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 760 761 762 - Store 756(spotEffect) 763 - 764: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 765 765 16 16 - 769: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 767 766(heightAttenuation) 46 - 770: 8(float) Load 724(lightRange) - 771: 8(float) Load 684(dist) - 772: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 770 193 771 - Store 766(heightAttenuation) 772 - 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 774 774 16 16 - 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 776 775(NdotL) 46 - 779: 68(fvec3) Load 645(N) - 780: 68(fvec3) Load 671(L) - 781: 8(float) Dot 779 780 - 782: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 193 781 - Store 775(NdotL) 782 - 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 784 784 16 16 - 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 786 785(diff) 46 - 789: 8(float) Load 775(NdotL) - 790: 68(fvec3) CompositeConstruct 789 789 789 - Store 785(diff) 790 - 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 792 792 16 16 - 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 794 793(R) 46 - 797: 68(fvec3) Load 671(L) - 798: 68(fvec3) FNegate 797 - 799: 68(fvec3) Load 645(N) - 800: 68(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 798 799 - Store 793(R) 800 - 801: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 802 802 16 16 - 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 804 803(NdotR) 46 - 807: 68(fvec3) Load 793(R) - 808: 68(fvec3) Load 695(V) - 809: 8(float) Dot 807 808 - 810: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 193 809 - Store 803(NdotR) 810 - 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 812 812 16 16 - 816: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 814 813(spec) 46 - 817: 8(float) Load 803(NdotR) - 819: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 817 818 - 820: 22(ptr) AccessChain 546(albedo) 17 - 821: 8(float) Load 820 - 822: 8(float) FMul 819 821 - 824: 8(float) FMul 822 823 - 825: 68(fvec3) CompositeConstruct 824 824 824 - Store 813(spec) 825 - 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 827 827 16 16 - 828: 68(fvec3) Load 785(diff) - 829: 68(fvec3) Load 813(spec) - 830: 68(fvec3) FAdd 828 829 - 831: 8(float) Load 756(spotEffect) - 832: 68(fvec3) VectorTimesScalar 830 831 - 833: 8(float) Load 766(heightAttenuation) - 834: 68(fvec3) VectorTimesScalar 832 833 - 835: 228(int) Load 653(i) - 837: 676(ptr) AccessChain 467 305 312 835 836 - 838: 18(fvec4) Load 837 - 839: 68(fvec3) VectorShuffle 838 838 0 1 2 - 840: 68(fvec3) FMul 834 839 - 841: 18(fvec4) Load 546(albedo) - 842: 68(fvec3) VectorShuffle 841 841 0 1 2 - 843: 68(fvec3) FMul 840 842 - 844: 68(fvec3) Load 585(fragcolor) - 845: 68(fvec3) FAdd 844 843 - Store 585(fragcolor) 845 - Branch 659 - 659: Label - 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 652 652 16 16 - 848: 228(int) Load 653(i) - 849: 228(int) IAdd 848 312 - Store 653(i) 849 - Branch 656 - 658: Label - 850: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 852 852 16 16 - 853: 564(ptr) AccessChain 467 305 836 - 854: 228(int) Load 853 - 856: 135(bool) SGreaterThan 854 305 - SelectionMerge 858 None - BranchConditional 856 857 858 - 857: Label - 859: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 861 861 16 16 - 863: 68(fvec3) Load 585(fragcolor) - Store 862(param) 863 - 865: 68(fvec3) Load 504(fragPos) - Store 864(param) 865 - 866: 68(fvec3) FunctionCall 75(shadow(vf3;vf3;) 862(param) 864(param) - Store 585(fragcolor) 866 - Branch 858 - 858: Label - 867: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 92 - 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 869 869 16 16 - 870: 68(fvec3) Load 585(fragcolor) - 871: 8(float) CompositeExtract 870 0 - 872: 8(float) CompositeExtract 870 1 - 873: 8(float) CompositeExtract 870 2 - 874: 18(fvec4) CompositeConstruct 871 872 873 106 - ReturnValue 874 + 742: 70(fvec3) VectorShuffle 741 741 0 1 2 + 743: 232(int) Load 657(i) + 744: 680(ptr) AccessChain 471 309 316 743 316 + 745: 18(fvec4) Load 744 + 746: 70(fvec3) VectorShuffle 745 745 0 1 2 + 747: 70(fvec3) FSub 742 746 + 748: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 747 + Store 735(dir) 748 + 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 750 750 16 16 + 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 752 751(cosDir) 47 + 755: 70(fvec3) Load 675(L) + 756: 70(fvec3) Load 735(dir) + 757: 8(float) Dot 755 756 + Store 751(cosDir) 757 + 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 759 759 16 16 + 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 761 760(spotEffect) 47 + 764: 8(float) Load 721(lightCosOuterAngle) + 765: 8(float) Load 714(lightCosInnerAngle) + 766: 8(float) Load 751(cosDir) + 767: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 764 765 766 + Store 760(spotEffect) 767 + 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 769 769 16 16 + 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 771 770(heightAttenuation) 47 + 774: 8(float) Load 728(lightRange) + 775: 8(float) Load 688(dist) + 776: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 774 197 775 + Store 770(heightAttenuation) 776 + 777: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 778 778 16 16 + 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 780 779(NdotL) 47 + 783: 70(fvec3) Load 649(N) + 784: 70(fvec3) Load 675(L) + 785: 8(float) Dot 783 784 + 786: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 785 + Store 779(NdotL) 786 + 787: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 788 788 16 16 + 792: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 790 789(diff) 47 + 793: 8(float) Load 779(NdotL) + 794: 70(fvec3) CompositeConstruct 793 793 793 + Store 789(diff) 794 + 795: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 796 796 16 16 + 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 798 797(R) 47 + 801: 70(fvec3) Load 675(L) + 802: 70(fvec3) FNegate 801 + 803: 70(fvec3) Load 649(N) + 804: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 802 803 + Store 797(R) 804 + 805: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 806 806 16 16 + 810: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 808 807(NdotR) 47 + 811: 70(fvec3) Load 797(R) + 812: 70(fvec3) Load 699(V) + 813: 8(float) Dot 811 812 + 814: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 813 + Store 807(NdotR) 814 + 815: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 816 816 16 16 + 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 818 817(spec) 47 + 821: 8(float) Load 807(NdotR) + 823: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 821 822 + 824: 22(ptr) AccessChain 550(albedo) 17 + 825: 8(float) Load 824 + 826: 8(float) FMul 823 825 + 828: 8(float) FMul 826 827 + 829: 70(fvec3) CompositeConstruct 828 828 828 + Store 817(spec) 829 + 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 831 831 16 16 + 832: 70(fvec3) Load 789(diff) + 833: 70(fvec3) Load 817(spec) + 834: 70(fvec3) FAdd 832 833 + 835: 8(float) Load 760(spotEffect) + 836: 70(fvec3) VectorTimesScalar 834 835 + 837: 8(float) Load 770(heightAttenuation) + 838: 70(fvec3) VectorTimesScalar 836 837 + 839: 232(int) Load 657(i) + 841: 680(ptr) AccessChain 471 309 316 839 840 + 842: 18(fvec4) Load 841 + 843: 70(fvec3) VectorShuffle 842 842 0 1 2 + 844: 70(fvec3) FMul 838 843 + 845: 18(fvec4) Load 550(albedo) + 846: 70(fvec3) VectorShuffle 845 845 0 1 2 + 847: 70(fvec3) FMul 844 846 + 848: 70(fvec3) Load 589(fragcolor) + 849: 70(fvec3) FAdd 848 847 + Store 589(fragcolor) 849 + Branch 663 + 663: Label + 850: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 + 852: 232(int) Load 657(i) + 853: 232(int) IAdd 852 316 + Store 657(i) 853 + Branch 660 + 662: Label + 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 856 856 16 16 + 857: 568(ptr) AccessChain 471 309 840 + 858: 232(int) Load 857 + 860: 139(bool) SGreaterThan 858 309 + SelectionMerge 862 None + BranchConditional 860 861 862 + 861: Label + 863: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 864: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 865 865 16 16 + 867: 70(fvec3) Load 589(fragcolor) + Store 866(param) 867 + 869: 70(fvec3) Load 508(fragPos) + Store 868(param) 869 + 870: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 866(param) 868(param) + Store 589(fragcolor) 870 + Branch 862 + 862: Label + 871: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 872: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 873 873 16 16 + 874: 70(fvec3) Load 589(fragcolor) + 875: 8(float) CompositeExtract 874 0 + 876: 8(float) CompositeExtract 874 1 + 877: 8(float) CompositeExtract 874 2 + 878: 18(fvec4) CompositeConstruct 875 876 877 110 + ReturnValue 878 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index c4d39a1fed..07acacc14d 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 353 +// Id's are bound by 354 Capability Geometry Capability MultiViewport @@ -9,7 +9,7 @@ spv.debuginfo.hlsl.geom 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 6 "main" 255 261 266 272 277 282 287 302 309 314 338 341 + EntryPoint Geometry 6 "main" 256 262 267 273 278 283 288 303 310 315 339 342 ExecutionMode 6 Triangles ExecutionMode 6 Invocations 2 ExecutionMode 6 OutputTriangleStrip @@ -32,29 +32,29 @@ spv.debuginfo.hlsl.geom 47: String "PrimitiveID" 52: String "LightVec" 58: String "GSOutput" - 68: String "@main" - 74: String "input" - 78: String "outStream" - 82: String "InvocationID" - 91: String "int" - 96: String "i" - 111: String "bool" - 119: String "output" - 141: String "projection" - 145: String "modelview" - 149: String "lightPos" - 153: String "UBO" - 156: String "ubo" - 191: String "pos" - 200: String "worldPos" - 211: String "lPos" - 257: String "outStream.Pos" - 263: String "outStream.ViewportIndex" - 268: String "outStream.PrimitiveID" - 274: String "outStream.Normal" - 279: String "outStream.Color" - 284: String "outStream.ViewVec" - 289: String "outStream.LightVec" + 69: String "@main" + 75: String "input" + 79: String "outStream" + 83: String "InvocationID" + 92: String "int" + 97: String "i" + 112: String "bool" + 120: String "output" + 142: String "projection" + 146: String "modelview" + 150: String "lightPos" + 154: String "UBO" + 157: String "ubo" + 192: String "pos" + 201: String "worldPos" + 212: String "lPos" + 258: String "outStream.Pos" + 264: String "outStream.ViewportIndex" + 269: String "outStream.PrimitiveID" + 275: String "outStream.Normal" + 280: String "outStream.Color" + 285: String "outStream.ViewVec" + 290: String "outStream.LightVec" Name 6 "main" Name 23 "VSOutput" MemberName 23(VSOutput) 0 "Pos" @@ -73,63 +73,63 @@ spv.debuginfo.hlsl.geom Name 64 "outStream" Name 65 "InvocationID" Name 66 "PrimitiveID" - Name 94 "i" - Name 117 "output" - Name 139 "UBO" - MemberName 139(UBO) 0 "projection" - MemberName 139(UBO) 1 "modelview" - MemberName 139(UBO) 2 "lightPos" - Name 154 "ubo" - MemberName 154(ubo) 0 "ubo" - Name 160 "" - Name 189 "pos" - Name 198 "worldPos" - Name 209 "lPos" - Name 255 "outStream.Pos" - Name 261 "outStream.ViewportIndex" - Name 266 "outStream.PrimitiveID" - Name 272 "outStream.Normal" - Name 277 "outStream.Color" - Name 282 "outStream.ViewVec" - Name 287 "outStream.LightVec" - Name 299 "input" - Name 302 "input.Pos" - Name 309 "input.Normal" - Name 314 "input.Color" - Name 336 "InvocationID" - Name 338 "InvocationID" - Name 340 "PrimitiveID" + Name 95 "i" + Name 118 "output" + Name 140 "UBO" + MemberName 140(UBO) 0 "projection" + MemberName 140(UBO) 1 "modelview" + MemberName 140(UBO) 2 "lightPos" + Name 155 "ubo" + MemberName 155(ubo) 0 "ubo" + Name 161 "" + Name 190 "pos" + Name 199 "worldPos" + Name 210 "lPos" + Name 256 "outStream.Pos" + Name 262 "outStream.ViewportIndex" + Name 267 "outStream.PrimitiveID" + Name 273 "outStream.Normal" + Name 278 "outStream.Color" + Name 283 "outStream.ViewVec" + Name 288 "outStream.LightVec" + Name 300 "input" + Name 303 "input.Pos" + Name 310 "input.Normal" + Name 315 "input.Color" + Name 337 "InvocationID" + Name 339 "InvocationID" Name 341 "PrimitiveID" - Name 343 "outStream" - Name 344 "param" - Name 346 "param" + Name 342 "PrimitiveID" + Name 344 "outStream" + Name 345 "param" Name 347 "param" - Name 349 "param" - Decorate 135 ArrayStride 64 - Decorate 137 ArrayStride 64 - MemberDecorate 139(UBO) 0 RowMajor - MemberDecorate 139(UBO) 0 Offset 0 - MemberDecorate 139(UBO) 0 MatrixStride 16 - MemberDecorate 139(UBO) 1 RowMajor - MemberDecorate 139(UBO) 1 Offset 128 - MemberDecorate 139(UBO) 1 MatrixStride 16 - MemberDecorate 139(UBO) 2 Offset 256 - MemberDecorate 154(ubo) 0 Offset 0 - Decorate 154(ubo) Block - Decorate 160 DescriptorSet 0 - Decorate 160 Binding 0 - Decorate 255(outStream.Pos) BuiltIn Position - Decorate 261(outStream.ViewportIndex) BuiltIn ViewportIndex - Decorate 266(outStream.PrimitiveID) BuiltIn PrimitiveId - Decorate 272(outStream.Normal) Location 0 - Decorate 277(outStream.Color) Location 1 - Decorate 282(outStream.ViewVec) Location 2 - Decorate 287(outStream.LightVec) Location 3 - Decorate 302(input.Pos) BuiltIn Position - Decorate 309(input.Normal) Location 0 - Decorate 314(input.Color) Location 1 - Decorate 338(InvocationID) BuiltIn InvocationId - Decorate 341(PrimitiveID) BuiltIn PrimitiveId + Name 348 "param" + Name 350 "param" + Decorate 136 ArrayStride 64 + Decorate 138 ArrayStride 64 + MemberDecorate 140(UBO) 0 RowMajor + MemberDecorate 140(UBO) 0 Offset 0 + MemberDecorate 140(UBO) 0 MatrixStride 16 + MemberDecorate 140(UBO) 1 RowMajor + MemberDecorate 140(UBO) 1 Offset 128 + MemberDecorate 140(UBO) 1 MatrixStride 16 + MemberDecorate 140(UBO) 2 Offset 256 + MemberDecorate 155(ubo) 0 Offset 0 + Decorate 155(ubo) Block + Decorate 161 DescriptorSet 0 + Decorate 161 Binding 0 + Decorate 256(outStream.Pos) BuiltIn Position + Decorate 262(outStream.ViewportIndex) BuiltIn ViewportIndex + Decorate 267(outStream.PrimitiveID) BuiltIn PrimitiveId + Decorate 273(outStream.Normal) Location 0 + Decorate 278(outStream.Color) Location 1 + Decorate 283(outStream.ViewVec) Location 2 + Decorate 288(outStream.LightVec) Location 3 + Decorate 303(input.Pos) BuiltIn Position + Decorate 310(input.Normal) Location 0 + Decorate 315(input.Color) Location 1 + Decorate 339(InvocationID) BuiltIn InvocationId + Decorate 342(PrimitiveID) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -178,170 +178,171 @@ spv.debuginfo.hlsl.geom 60: TypePointer Function 11(int) 61: TypeFunction 4 42(ptr) 59(ptr) 60(ptr) 60(ptr) 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 57 13 13 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 68 62 26 16 16 38 68 17 16 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 74 41 26 16 16 69 19 37 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 79: 11(int) Constant 2 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 57 26 16 16 69 19 79 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 13 26 16 16 69 19 17 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 13 26 16 16 69 19 19 - 89: 11(int) Constant 57 - 90: TypeInt 32 1 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 91 14 19 16 - 93: TypePointer Function 90(int) - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 92 26 89 16 69 19 - 98: 90(int) Constant 0 - 109: 90(int) Constant 3 - 110: TypeBool - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 111 14 79 16 - 116: 11(int) Constant 59 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 119 57 26 116 16 69 19 - 121: 8(float) Constant 0 - 122: 18(fvec4) ConstantComposite 121 121 121 121 - 123: 21(fvec3) ConstantComposite 121 121 121 - 124:43(GSOutput) ConstantComposite 122 16 16 123 123 123 123 - 126: 11(int) Constant 60 - 128: 90(int) Constant 1 - 129: TypePointer Function 21(fvec3) - 132: TypeMatrix 18(fvec4) 4 - 134: 110(bool) ConstantTrue - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 134 - 135: TypeArray 132 79 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 133 79 - 137: TypeArray 132 79 - 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 133 79 - 139(UBO): TypeStruct 135 137 18(fvec4) - 142: 11(int) Constant 28 - 143: 11(int) Constant 21 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 141 136 26 142 143 16 16 17 - 146: 11(int) Constant 29 - 147: 11(int) Constant 20 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 138 26 146 147 16 16 17 - 150: 11(int) Constant 30 - 151: 11(int) Constant 17 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 149 20 26 150 151 16 16 17 - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 37 26 126 16 38 153 16 17 140 144 148 - 154(ubo): TypeStruct 139(UBO) - 157: 11(int) Constant 33 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 152 26 157 28 16 16 17 - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 156 37 26 126 16 38 156 16 17 155 - 159: TypePointer Uniform 154(ubo) - 160: 159(ptr) Variable Uniform - 162: 11(int) Constant 8 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 158 26 126 16 38 1 160 162 - 164: TypePointer Uniform 132 - 167: TypeMatrix 21(fvec3) 3 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 134 - 179: 11(int) Constant 61 - 180: 90(int) Constant 4 - 182: 90(int) Constant 2 - 187: 11(int) Constant 63 - 188: TypePointer Function 18(fvec4) - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 191 20 26 187 16 69 19 - 197: 11(int) Constant 64 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 20 26 197 16 69 19 - 208: 11(int) Constant 66 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 22 26 208 16 69 19 - 213: TypePointer Uniform 18(fvec4) - 222: 11(int) Constant 67 - 223: 90(int) Constant 6 - 230: 11(int) Constant 68 - 231: 90(int) Constant 5 - 237: 11(int) Constant 70 - 245: 11(int) Constant 73 - 249: 11(int) Constant 74 - 253: 11(int) Constant 75 - 254: TypePointer Output 18(fvec4) -255(outStream.Pos): 254(ptr) Variable Output - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 20 26 253 16 38 257 255(outStream.Pos) 162 - 260: TypePointer Output 11(int) -261(outStream.ViewportIndex): 260(ptr) Variable Output - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 263 13 26 253 16 38 263 261(outStream.ViewportIndex) 162 -266(outStream.PrimitiveID): 260(ptr) Variable Output - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 268 13 26 253 16 38 268 266(outStream.PrimitiveID) 162 - 271: TypePointer Output 21(fvec3) -272(outStream.Normal): 271(ptr) Variable Output - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 274 22 26 253 16 38 274 272(outStream.Normal) 162 -277(outStream.Color): 271(ptr) Variable Output - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 279 22 26 253 16 38 279 277(outStream.Color) 162 -282(outStream.ViewVec): 271(ptr) Variable Output - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 284 22 26 253 16 38 284 282(outStream.ViewVec) 162 -287(outStream.LightVec): 271(ptr) Variable Output - 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 289 22 26 253 16 38 289 287(outStream.LightVec) 162 - 298: 11(int) Constant 78 - 300: TypeArray 18(fvec4) 17 - 301: TypePointer Input 300 - 302(input.Pos): 301(ptr) Variable Input - 303: TypePointer Input 18(fvec4) - 307: TypeArray 21(fvec3) 17 - 308: TypePointer Input 307 -309(input.Normal): 308(ptr) Variable Input - 310: TypePointer Input 21(fvec3) -314(input.Color): 308(ptr) Variable Input - 337: TypePointer Input 11(int) -338(InvocationID): 337(ptr) Variable Input -341(PrimitiveID): 337(ptr) Variable Input + 71: 11(int) Constant 56 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 69 62 26 71 16 38 69 17 71 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 75 41 26 71 16 70 19 37 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 80: 11(int) Constant 2 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 57 26 71 16 70 19 80 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 13 26 71 16 70 19 17 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 13 26 71 16 70 19 19 + 90: 11(int) Constant 57 + 91: TypeInt 32 1 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 92 14 19 16 + 94: TypePointer Function 91(int) + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 97 93 26 90 16 70 19 + 99: 91(int) Constant 0 + 110: 91(int) Constant 3 + 111: TypeBool + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 112 14 80 16 + 117: 11(int) Constant 59 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 57 26 117 16 70 19 + 122: 8(float) Constant 0 + 123: 18(fvec4) ConstantComposite 122 122 122 122 + 124: 21(fvec3) ConstantComposite 122 122 122 + 125:43(GSOutput) ConstantComposite 123 16 16 124 124 124 124 + 127: 11(int) Constant 60 + 129: 91(int) Constant 1 + 130: TypePointer Function 21(fvec3) + 133: TypeMatrix 18(fvec4) 4 + 135: 111(bool) ConstantTrue + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 135 + 136: TypeArray 133 80 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 134 80 + 138: TypeArray 133 80 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 134 80 + 140(UBO): TypeStruct 136 138 18(fvec4) + 143: 11(int) Constant 28 + 144: 11(int) Constant 21 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 142 137 26 143 144 16 16 17 + 147: 11(int) Constant 29 + 148: 11(int) Constant 20 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 139 26 147 148 16 16 17 + 151: 11(int) Constant 30 + 152: 11(int) Constant 17 + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 20 26 151 152 16 16 17 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 154 37 26 127 16 38 154 16 17 141 145 149 + 155(ubo): TypeStruct 140(UBO) + 158: 11(int) Constant 33 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 157 153 26 158 28 16 16 17 + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 26 127 16 38 157 16 17 156 + 160: TypePointer Uniform 155(ubo) + 161: 160(ptr) Variable Uniform + 163: 11(int) Constant 8 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 159 26 127 16 38 1 161 163 + 165: TypePointer Uniform 133 + 168: TypeMatrix 21(fvec3) 3 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 135 + 180: 11(int) Constant 61 + 181: 91(int) Constant 4 + 183: 91(int) Constant 2 + 188: 11(int) Constant 63 + 189: TypePointer Function 18(fvec4) + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 192 20 26 188 16 70 19 + 198: 11(int) Constant 64 + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 201 20 26 198 16 70 19 + 209: 11(int) Constant 66 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 22 26 209 16 70 19 + 214: TypePointer Uniform 18(fvec4) + 223: 11(int) Constant 67 + 224: 91(int) Constant 6 + 231: 11(int) Constant 68 + 232: 91(int) Constant 5 + 238: 11(int) Constant 70 + 246: 11(int) Constant 73 + 250: 11(int) Constant 74 + 254: 11(int) Constant 75 + 255: TypePointer Output 18(fvec4) +256(outStream.Pos): 255(ptr) Variable Output + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 20 26 254 16 38 258 256(outStream.Pos) 163 + 261: TypePointer Output 11(int) +262(outStream.ViewportIndex): 261(ptr) Variable Output + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 264 13 26 254 16 38 264 262(outStream.ViewportIndex) 163 +267(outStream.PrimitiveID): 261(ptr) Variable Output + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 269 13 26 254 16 38 269 267(outStream.PrimitiveID) 163 + 272: TypePointer Output 21(fvec3) +273(outStream.Normal): 272(ptr) Variable Output + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 275 22 26 254 16 38 275 273(outStream.Normal) 163 +278(outStream.Color): 272(ptr) Variable Output + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 280 22 26 254 16 38 280 278(outStream.Color) 163 +283(outStream.ViewVec): 272(ptr) Variable Output + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 285 22 26 254 16 38 285 283(outStream.ViewVec) 163 +288(outStream.LightVec): 272(ptr) Variable Output + 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 290 22 26 254 16 38 290 288(outStream.LightVec) 163 + 299: 11(int) Constant 78 + 301: TypeArray 18(fvec4) 17 + 302: TypePointer Input 301 + 303(input.Pos): 302(ptr) Variable Input + 304: TypePointer Input 18(fvec4) + 308: TypeArray 21(fvec3) 17 + 309: TypePointer Input 308 +310(input.Normal): 309(ptr) Variable Input + 311: TypePointer Input 21(fvec3) +315(input.Color): 309(ptr) Variable Input + 338: TypePointer Input 11(int) +339(InvocationID): 338(ptr) Variable Input +342(PrimitiveID): 338(ptr) Variable Input Line 1 56 1 6(main): 4 Function None 5 7: Label - 299(input): 42(ptr) Variable Function -336(InvocationID): 60(ptr) Variable Function -340(PrimitiveID): 60(ptr) Variable Function - 343(outStream): 59(ptr) Variable Function - 344(param): 42(ptr) Variable Function - 346(param): 59(ptr) Variable Function - 347(param): 60(ptr) Variable Function - 349(param): 60(ptr) Variable Function + 300(input): 42(ptr) Variable Function +337(InvocationID): 60(ptr) Variable Function +341(PrimitiveID): 60(ptr) Variable Function + 344(outStream): 59(ptr) Variable Function + 345(param): 42(ptr) Variable Function + 347(param): 59(ptr) Variable Function + 348(param): 60(ptr) Variable Function + 350(param): 60(ptr) Variable Function Line 1 56 0 - 304: 303(ptr) AccessChain 302(input.Pos) 98 - 305: 18(fvec4) Load 304 - 306: 188(ptr) AccessChain 299(input) 98 98 - Store 306 305 - 311: 310(ptr) AccessChain 309(input.Normal) 98 - 312: 21(fvec3) Load 311 - 313: 129(ptr) AccessChain 299(input) 98 128 - Store 313 312 - 315: 310(ptr) AccessChain 314(input.Color) 98 - 316: 21(fvec3) Load 315 - 317: 129(ptr) AccessChain 299(input) 98 182 - Store 317 316 - 318: 303(ptr) AccessChain 302(input.Pos) 128 - 319: 18(fvec4) Load 318 - 320: 188(ptr) AccessChain 299(input) 128 98 - Store 320 319 - 321: 310(ptr) AccessChain 309(input.Normal) 128 - 322: 21(fvec3) Load 321 - 323: 129(ptr) AccessChain 299(input) 128 128 - Store 323 322 - 324: 310(ptr) AccessChain 314(input.Color) 128 - 325: 21(fvec3) Load 324 - 326: 129(ptr) AccessChain 299(input) 128 182 - Store 326 325 - 327: 303(ptr) AccessChain 302(input.Pos) 182 - 328: 18(fvec4) Load 327 - 329: 188(ptr) AccessChain 299(input) 182 98 - Store 329 328 - 330: 310(ptr) AccessChain 309(input.Normal) 182 - 331: 21(fvec3) Load 330 - 332: 129(ptr) AccessChain 299(input) 182 128 - Store 332 331 - 333: 310(ptr) AccessChain 314(input.Color) 182 - 334: 21(fvec3) Load 333 - 335: 129(ptr) AccessChain 299(input) 182 182 - Store 335 334 - 339: 11(int) Load 338(InvocationID) - Store 336(InvocationID) 339 - 342: 11(int) Load 341(PrimitiveID) - Store 340(PrimitiveID) 342 - 345: 40 Load 299(input) - Store 344(param) 345 - 348: 11(int) Load 336(InvocationID) - Store 347(param) 348 - 350: 11(int) Load 340(PrimitiveID) - Store 349(param) 350 - 351: 4 FunctionCall 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 344(param) 346(param) 347(param) 349(param) - 352:43(GSOutput) Load 346(param) - Store 343(outStream) 352 + 305: 304(ptr) AccessChain 303(input.Pos) 99 + 306: 18(fvec4) Load 305 + 307: 189(ptr) AccessChain 300(input) 99 99 + Store 307 306 + 312: 311(ptr) AccessChain 310(input.Normal) 99 + 313: 21(fvec3) Load 312 + 314: 130(ptr) AccessChain 300(input) 99 129 + Store 314 313 + 316: 311(ptr) AccessChain 315(input.Color) 99 + 317: 21(fvec3) Load 316 + 318: 130(ptr) AccessChain 300(input) 99 183 + Store 318 317 + 319: 304(ptr) AccessChain 303(input.Pos) 129 + 320: 18(fvec4) Load 319 + 321: 189(ptr) AccessChain 300(input) 129 99 + Store 321 320 + 322: 311(ptr) AccessChain 310(input.Normal) 129 + 323: 21(fvec3) Load 322 + 324: 130(ptr) AccessChain 300(input) 129 129 + Store 324 323 + 325: 311(ptr) AccessChain 315(input.Color) 129 + 326: 21(fvec3) Load 325 + 327: 130(ptr) AccessChain 300(input) 129 183 + Store 327 326 + 328: 304(ptr) AccessChain 303(input.Pos) 183 + 329: 18(fvec4) Load 328 + 330: 189(ptr) AccessChain 300(input) 183 99 + Store 330 329 + 331: 311(ptr) AccessChain 310(input.Normal) 183 + 332: 21(fvec3) Load 331 + 333: 130(ptr) AccessChain 300(input) 183 129 + Store 333 332 + 334: 311(ptr) AccessChain 315(input.Color) 183 + 335: 21(fvec3) Load 334 + 336: 130(ptr) AccessChain 300(input) 183 183 + Store 336 335 + 340: 11(int) Load 339(InvocationID) + Store 337(InvocationID) 340 + 343: 11(int) Load 342(PrimitiveID) + Store 341(PrimitiveID) 343 + 346: 40 Load 300(input) + Store 345(param) 346 + 349: 11(int) Load 337(InvocationID) + Store 348(param) 349 + 351: 11(int) Load 341(PrimitiveID) + Store 350(param) 351 + 352: 4 FunctionCall 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 345(param) 347(param) 348(param) 350(param) + 353:43(GSOutput) Load 347(param) + Store 344(outStream) 353 Return FunctionEnd Line 1 56 1 @@ -350,150 +351,150 @@ spv.debuginfo.hlsl.geom 64(outStream): 59(ptr) FunctionParameter 65(InvocationID): 60(ptr) FunctionParameter 66(PrimitiveID): 60(ptr) FunctionParameter - 70: Label - 94(i): 93(ptr) Variable Function - 117(output): 59(ptr) Variable Function - 189(pos): 188(ptr) Variable Function - 198(worldPos): 188(ptr) Variable Function - 209(lPos): 129(ptr) Variable Function - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 16 16 16 16 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 73 63(input) 76 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 77 64(outStream) 76 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 81 65(InvocationID) 76 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 66(PrimitiveID) 76 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 69 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 94(i) 76 - Store 94(i) 98 - Branch 99 - 99: Label - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 - LoopMerge 101 102 None - Branch 105 - 105: Label - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 - 108: 90(int) Load 94(i) - 113: 110(bool) SLessThan 108 109 - BranchConditional 113 100 101 - 100: Label - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 116 116 16 16 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 118 117(output) 76 - Store 117(output) 124 - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 126 126 16 16 - 127: 90(int) Load 94(i) - 130: 129(ptr) AccessChain 63(input) 127 128 - 131: 21(fvec3) Load 130 - 163: 11(int) Load 65(InvocationID) - 165: 164(ptr) AccessChain 160 98 128 163 - 166: 132 Load 165 - 169: 18(fvec4) CompositeExtract 166 0 - 170: 21(fvec3) VectorShuffle 169 169 0 1 2 - 171: 18(fvec4) CompositeExtract 166 1 - 172: 21(fvec3) VectorShuffle 171 171 0 1 2 - 173: 18(fvec4) CompositeExtract 166 2 - 174: 21(fvec3) VectorShuffle 173 173 0 1 2 - 175: 167 CompositeConstruct 170 172 174 - 176: 21(fvec3) VectorTimesMatrix 131 175 - 177: 129(ptr) AccessChain 117(output) 109 - Store 177 176 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 179 179 16 16 - 181: 90(int) Load 94(i) - 183: 129(ptr) AccessChain 63(input) 181 182 - 184: 21(fvec3) Load 183 - 185: 129(ptr) AccessChain 117(output) 180 - Store 185 184 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 187 187 16 16 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 190 189(pos) 76 - 193: 90(int) Load 94(i) - 194: 188(ptr) AccessChain 63(input) 193 98 - 195: 18(fvec4) Load 194 - Store 189(pos) 195 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 197 197 16 16 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(worldPos) 76 - 202: 18(fvec4) Load 189(pos) - 203: 11(int) Load 65(InvocationID) - 204: 164(ptr) AccessChain 160 98 128 203 - 205: 132 Load 204 - 206: 18(fvec4) VectorTimesMatrix 202 205 - Store 198(worldPos) 206 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 208 208 16 16 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(lPos) 76 - 214: 213(ptr) AccessChain 160 98 182 - 215: 18(fvec4) Load 214 - 216: 11(int) Load 65(InvocationID) - 217: 164(ptr) AccessChain 160 98 128 216 - 218: 132 Load 217 - 219: 18(fvec4) VectorTimesMatrix 215 218 - 220: 21(fvec3) VectorShuffle 219 219 0 1 2 - Store 209(lPos) 220 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 222 222 16 16 - 224: 21(fvec3) Load 209(lPos) - 225: 18(fvec4) Load 198(worldPos) - 226: 21(fvec3) VectorShuffle 225 225 0 1 2 - 227: 21(fvec3) FSub 224 226 - 228: 129(ptr) AccessChain 117(output) 223 - Store 228 227 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 230 230 16 16 - 232: 18(fvec4) Load 198(worldPos) - 233: 21(fvec3) VectorShuffle 232 232 0 1 2 - 234: 21(fvec3) FNegate 233 - 235: 129(ptr) AccessChain 117(output) 231 - Store 235 234 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 237 237 16 16 - 238: 18(fvec4) Load 198(worldPos) - 239: 11(int) Load 65(InvocationID) - 240: 164(ptr) AccessChain 160 98 98 239 - 241: 132 Load 240 - 242: 18(fvec4) VectorTimesMatrix 238 241 - 243: 188(ptr) AccessChain 117(output) 98 - Store 243 242 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 245 245 16 16 - 246: 11(int) Load 65(InvocationID) - 247: 60(ptr) AccessChain 117(output) 128 - Store 247 246 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 249 249 16 16 - 250: 11(int) Load 66(PrimitiveID) - 251: 60(ptr) AccessChain 117(output) 182 - Store 251 250 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 253 253 16 16 - 258: 188(ptr) AccessChain 117(output) 98 - 259: 18(fvec4) Load 258 - Store 255(outStream.Pos) 259 - 264: 60(ptr) AccessChain 117(output) 128 - 265: 11(int) Load 264 - Store 261(outStream.ViewportIndex) 265 - 269: 60(ptr) AccessChain 117(output) 182 - 270: 11(int) Load 269 - Store 266(outStream.PrimitiveID) 270 - 275: 129(ptr) AccessChain 117(output) 109 - 276: 21(fvec3) Load 275 - Store 272(outStream.Normal) 276 - 280: 129(ptr) AccessChain 117(output) 180 - 281: 21(fvec3) Load 280 - Store 277(outStream.Color) 281 - 285: 129(ptr) AccessChain 117(output) 231 - 286: 21(fvec3) Load 285 - Store 282(outStream.ViewVec) 286 - 290: 129(ptr) AccessChain 117(output) 223 - 291: 21(fvec3) Load 290 - Store 287(outStream.LightVec) 291 + 68: Label + 95(i): 94(ptr) Variable Function + 118(output): 59(ptr) Variable Function + 190(pos): 189(ptr) Variable Function + 199(worldPos): 189(ptr) Variable Function + 210(lPos): 130(ptr) Variable Function + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 71 71 16 16 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 74 63(input) 77 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 64(outStream) 77 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 65(InvocationID) 77 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 66(PrimitiveID) 77 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 70 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 96 95(i) 77 + Store 95(i) 99 + Branch 100 + 100: Label + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 + LoopMerge 102 103 None + Branch 106 + 106: Label + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 + 109: 91(int) Load 95(i) + 114: 111(bool) SLessThan 109 110 + BranchConditional 114 101 102 + 101: Label + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 117 117 16 16 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(output) 77 + Store 118(output) 125 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 127 127 16 16 + 128: 91(int) Load 95(i) + 131: 130(ptr) AccessChain 63(input) 128 129 + 132: 21(fvec3) Load 131 + 164: 11(int) Load 65(InvocationID) + 166: 165(ptr) AccessChain 161 99 129 164 + 167: 133 Load 166 + 170: 18(fvec4) CompositeExtract 167 0 + 171: 21(fvec3) VectorShuffle 170 170 0 1 2 + 172: 18(fvec4) CompositeExtract 167 1 + 173: 21(fvec3) VectorShuffle 172 172 0 1 2 + 174: 18(fvec4) CompositeExtract 167 2 + 175: 21(fvec3) VectorShuffle 174 174 0 1 2 + 176: 168 CompositeConstruct 171 173 175 + 177: 21(fvec3) VectorTimesMatrix 132 176 + 178: 130(ptr) AccessChain 118(output) 110 + Store 178 177 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 180 180 16 16 + 182: 91(int) Load 95(i) + 184: 130(ptr) AccessChain 63(input) 182 183 + 185: 21(fvec3) Load 184 + 186: 130(ptr) AccessChain 118(output) 181 + Store 186 185 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 188 188 16 16 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 191 190(pos) 77 + 194: 91(int) Load 95(i) + 195: 189(ptr) AccessChain 63(input) 194 99 + 196: 18(fvec4) Load 195 + Store 190(pos) 196 + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 198 198 16 16 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 200 199(worldPos) 77 + 203: 18(fvec4) Load 190(pos) + 204: 11(int) Load 65(InvocationID) + 205: 165(ptr) AccessChain 161 99 129 204 + 206: 133 Load 205 + 207: 18(fvec4) VectorTimesMatrix 203 206 + Store 199(worldPos) 207 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 209 209 16 16 + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(lPos) 77 + 215: 214(ptr) AccessChain 161 99 183 + 216: 18(fvec4) Load 215 + 217: 11(int) Load 65(InvocationID) + 218: 165(ptr) AccessChain 161 99 129 217 + 219: 133 Load 218 + 220: 18(fvec4) VectorTimesMatrix 216 219 + 221: 21(fvec3) VectorShuffle 220 220 0 1 2 + Store 210(lPos) 221 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 223 223 16 16 + 225: 21(fvec3) Load 210(lPos) + 226: 18(fvec4) Load 199(worldPos) + 227: 21(fvec3) VectorShuffle 226 226 0 1 2 + 228: 21(fvec3) FSub 225 227 + 229: 130(ptr) AccessChain 118(output) 224 + Store 229 228 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 231 231 16 16 + 233: 18(fvec4) Load 199(worldPos) + 234: 21(fvec3) VectorShuffle 233 233 0 1 2 + 235: 21(fvec3) FNegate 234 + 236: 130(ptr) AccessChain 118(output) 232 + Store 236 235 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 238 238 16 16 + 239: 18(fvec4) Load 199(worldPos) + 240: 11(int) Load 65(InvocationID) + 241: 165(ptr) AccessChain 161 99 99 240 + 242: 133 Load 241 + 243: 18(fvec4) VectorTimesMatrix 239 242 + 244: 189(ptr) AccessChain 118(output) 99 + Store 244 243 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 246 246 16 16 + 247: 11(int) Load 65(InvocationID) + 248: 60(ptr) AccessChain 118(output) 129 + Store 248 247 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 250 250 16 16 + 251: 11(int) Load 66(PrimitiveID) + 252: 60(ptr) AccessChain 118(output) 183 + Store 252 251 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 254 254 16 16 + 259: 189(ptr) AccessChain 118(output) 99 + 260: 18(fvec4) Load 259 + Store 256(outStream.Pos) 260 + 265: 60(ptr) AccessChain 118(output) 129 + 266: 11(int) Load 265 + Store 262(outStream.ViewportIndex) 266 + 270: 60(ptr) AccessChain 118(output) 183 + 271: 11(int) Load 270 + Store 267(outStream.PrimitiveID) 271 + 276: 130(ptr) AccessChain 118(output) 110 + 277: 21(fvec3) Load 276 + Store 273(outStream.Normal) 277 + 281: 130(ptr) AccessChain 118(output) 181 + 282: 21(fvec3) Load 281 + Store 278(outStream.Color) 282 + 286: 130(ptr) AccessChain 118(output) 232 + 287: 21(fvec3) Load 286 + Store 283(outStream.ViewVec) 287 + 291: 130(ptr) AccessChain 118(output) 224 + 292: 21(fvec3) Load 291 + Store 288(outStream.LightVec) 292 EmitVertex - Branch 102 - 102: Label - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 89 89 16 16 - 294: 90(int) Load 94(i) - 295: 90(int) IAdd 294 128 - Store 94(i) 295 - Branch 99 - 101: Label - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 69 - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 298 298 16 16 + Branch 103 + 103: Label + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 + 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 + 295: 91(int) Load 95(i) + 296: 91(int) IAdd 295 129 + Store 95(i) 296 + Branch 100 + 102: Label + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 299 299 16 16 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index 998eef5f87..34a6d0a854 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -3,14 +3,14 @@ WARNING: 0:158: '' : attribute does not apply to entry point // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 688 +// Id's are bound by 692 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 6 "main" 580 587 594 628 637 644 651 666 681 + EntryPoint TessellationControl 6 "main" 584 591 598 632 641 648 655 670 685 ExecutionMode 6 OutputVertices 4 ExecutionMode 6 Quads ExecutionMode 6 SpacingEqual @@ -18,8 +18,8 @@ WARNING: 0:158: '' : attribute does not apply to entry point 1: String "" 9: String "float" 12: String "uint" - 27: String "screenSpaceTessFactor" - 30: String "// OpModuleProcessed auto-map-locations + 28: String "screenSpaceTessFactor" + 31: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 @@ -28,151 +28,151 @@ WARNING: 0:158: '' : attribute does not apply to entry point // OpModuleProcessed hlsl-offsets #line 1 " - 38: String "p0" - 42: String "p1" - 49: String "bool" - 56: String "frustumCheck" - 62: String "Pos" - 65: String "inUV" - 74: String "Normal" - 78: String "UV" - 82: String "VSOutput" - 92: String "TessLevelOuter" - 96: String "TessLevelInner" - 99: String "ConstantsHSOutput" - 104: String "ConstantsHS" - 110: String "patch" - 121: String "HSOutput" - 127: String "@main" - 135: String "InvocationID" - 143: String "midPoint" - 155: String "radius" - 166: String "v0" - 176: String "modelview" - 181: String "lightPos" - 185: String "frustumPlanes" - 188: String "tessellatedEdgeSize" - 192: String "viewportDim" - 196: String "UBO" - 199: String "ubo" - 207: String "int" - 219: String "clip0" - 237: String "clip1" - 312: String "pos" - 319: String "type.2d.image" - 320: String "@type.2d.image" - 325: String "textureHeight" - 329: String "type.sampler" - 330: String "@type.sampler" - 334: String "samplerHeight" - 338: String "type.sampled.image" - 339: String "@type.sampled.image" - 357: String "i" - 410: String "output" + 39: String "p0" + 43: String "p1" + 50: String "bool" + 58: String "frustumCheck" + 64: String "Pos" + 67: String "inUV" + 76: String "Normal" + 80: String "UV" + 84: String "VSOutput" + 94: String "TessLevelOuter" + 98: String "TessLevelInner" + 101: String "ConstantsHSOutput" + 107: String "ConstantsHS" + 113: String "patch" + 124: String "HSOutput" + 131: String "@main" + 139: String "InvocationID" + 147: String "midPoint" + 159: String "radius" + 170: String "v0" + 180: String "modelview" + 185: String "lightPos" + 189: String "frustumPlanes" + 192: String "tessellatedEdgeSize" + 196: String "viewportDim" + 200: String "UBO" + 203: String "ubo" + 211: String "int" + 223: String "clip0" + 241: String "clip1" + 316: String "pos" + 323: String "type.2d.image" + 324: String "@type.2d.image" + 329: String "textureHeight" + 333: String "type.sampler" + 334: String "@type.sampler" + 338: String "samplerHeight" + 342: String "type.sampled.image" + 343: String "@type.sampled.image" + 361: String "i" + 414: String "output" Name 6 "main" Name 26 "screenSpaceTessFactor(vf4;vf4;" Name 24 "p0" Name 25 "p1" - Name 55 "frustumCheck(vf4;vf2;" - Name 53 "Pos" - Name 54 "inUV" - Name 69 "VSOutput" - MemberName 69(VSOutput) 0 "Pos" - MemberName 69(VSOutput) 1 "Normal" - MemberName 69(VSOutput) 2 "UV" - Name 90 "ConstantsHSOutput" - MemberName 90(ConstantsHSOutput) 0 "TessLevelOuter" - MemberName 90(ConstantsHSOutput) 1 "TessLevelInner" - Name 103 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" - Name 102 "patch" - Name 113 "HSOutput" - MemberName 113(HSOutput) 0 "Pos" - MemberName 113(HSOutput) 1 "Normal" - MemberName 113(HSOutput) 2 "UV" - Name 126 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" - Name 124 "patch" - Name 125 "InvocationID" - Name 141 "midPoint" - Name 153 "radius" - Name 164 "v0" - Name 174 "UBO" - MemberName 174(UBO) 0 "projection" - MemberName 174(UBO) 1 "modelview" - MemberName 174(UBO) 2 "lightPos" - MemberName 174(UBO) 3 "frustumPlanes" - MemberName 174(UBO) 4 "displacementFactor" - MemberName 174(UBO) 5 "tessellationFactor" - MemberName 174(UBO) 6 "viewportDim" - MemberName 174(UBO) 7 "tessellatedEdgeSize" - Name 197 "ubo" - MemberName 197(ubo) 0 "ubo" - Name 203 "" - Name 217 "clip0" - Name 235 "clip1" - Name 310 "pos" - Name 323 "textureHeight" - Name 332 "samplerHeight" - Name 355 "i" - Name 408 "output" - Name 418 "param" - Name 421 "param" - Name 462 "param" - Name 465 "param" - Name 472 "param" - Name 475 "param" - Name 482 "param" - Name 485 "param" - Name 492 "param" - Name 495 "param" - Name 547 "output" - Name 577 "patch" - Name 580 "patch.Pos" - Name 587 "patch.Normal" - Name 594 "patch.UV" - Name 626 "InvocationID" - Name 628 "InvocationID" - Name 630 "flattenTemp" - Name 631 "param" - Name 633 "param" - Name 637 "@entryPointOutput.Pos" - Name 644 "@entryPointOutput.Normal" - Name 651 "@entryPointOutput.UV" - Name 661 "@patchConstantResult" - Name 662 "param" - Name 666 "@patchConstantOutput.TessLevelOuter" - Name 681 "@patchConstantOutput.TessLevelInner" - Decorate 172 ArrayStride 16 - MemberDecorate 174(UBO) 0 RowMajor - MemberDecorate 174(UBO) 0 Offset 0 - MemberDecorate 174(UBO) 0 MatrixStride 16 - MemberDecorate 174(UBO) 1 RowMajor - MemberDecorate 174(UBO) 1 Offset 64 - MemberDecorate 174(UBO) 1 MatrixStride 16 - MemberDecorate 174(UBO) 2 Offset 128 - MemberDecorate 174(UBO) 3 Offset 144 - MemberDecorate 174(UBO) 4 Offset 240 - MemberDecorate 174(UBO) 5 Offset 244 - MemberDecorate 174(UBO) 6 Offset 248 - MemberDecorate 174(UBO) 7 Offset 256 - MemberDecorate 197(ubo) 0 Offset 0 - Decorate 197(ubo) Block - Decorate 203 DescriptorSet 0 - Decorate 203 Binding 0 - Decorate 323(textureHeight) DescriptorSet 0 - Decorate 323(textureHeight) Binding 1 - Decorate 332(samplerHeight) DescriptorSet 0 - Decorate 332(samplerHeight) Binding 1 - Decorate 580(patch.Pos) BuiltIn Position - Decorate 587(patch.Normal) Location 0 - Decorate 594(patch.UV) Location 1 - Decorate 628(InvocationID) BuiltIn InvocationId - Decorate 637(@entryPointOutput.Pos) BuiltIn Position - Decorate 644(@entryPointOutput.Normal) Location 0 - Decorate 651(@entryPointOutput.UV) Location 1 - Decorate 666(@patchConstantOutput.TessLevelOuter) Patch - Decorate 666(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 681(@patchConstantOutput.TessLevelInner) Patch - Decorate 681(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + Name 56 "frustumCheck(vf4;vf2;" + Name 54 "Pos" + Name 55 "inUV" + Name 71 "VSOutput" + MemberName 71(VSOutput) 0 "Pos" + MemberName 71(VSOutput) 1 "Normal" + MemberName 71(VSOutput) 2 "UV" + Name 92 "ConstantsHSOutput" + MemberName 92(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 92(ConstantsHSOutput) 1 "TessLevelInner" + Name 105 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" + Name 104 "patch" + Name 116 "HSOutput" + MemberName 116(HSOutput) 0 "Pos" + MemberName 116(HSOutput) 1 "Normal" + MemberName 116(HSOutput) 2 "UV" + Name 129 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" + Name 127 "patch" + Name 128 "InvocationID" + Name 145 "midPoint" + Name 157 "radius" + Name 168 "v0" + Name 178 "UBO" + MemberName 178(UBO) 0 "projection" + MemberName 178(UBO) 1 "modelview" + MemberName 178(UBO) 2 "lightPos" + MemberName 178(UBO) 3 "frustumPlanes" + MemberName 178(UBO) 4 "displacementFactor" + MemberName 178(UBO) 5 "tessellationFactor" + MemberName 178(UBO) 6 "viewportDim" + MemberName 178(UBO) 7 "tessellatedEdgeSize" + Name 201 "ubo" + MemberName 201(ubo) 0 "ubo" + Name 207 "" + Name 221 "clip0" + Name 239 "clip1" + Name 314 "pos" + Name 327 "textureHeight" + Name 336 "samplerHeight" + Name 359 "i" + Name 412 "output" + Name 422 "param" + Name 425 "param" + Name 466 "param" + Name 469 "param" + Name 476 "param" + Name 479 "param" + Name 486 "param" + Name 489 "param" + Name 496 "param" + Name 499 "param" + Name 551 "output" + Name 581 "patch" + Name 584 "patch.Pos" + Name 591 "patch.Normal" + Name 598 "patch.UV" + Name 630 "InvocationID" + Name 632 "InvocationID" + Name 634 "flattenTemp" + Name 635 "param" + Name 637 "param" + Name 641 "@entryPointOutput.Pos" + Name 648 "@entryPointOutput.Normal" + Name 655 "@entryPointOutput.UV" + Name 665 "@patchConstantResult" + Name 666 "param" + Name 670 "@patchConstantOutput.TessLevelOuter" + Name 685 "@patchConstantOutput.TessLevelInner" + Decorate 176 ArrayStride 16 + MemberDecorate 178(UBO) 0 RowMajor + MemberDecorate 178(UBO) 0 Offset 0 + MemberDecorate 178(UBO) 0 MatrixStride 16 + MemberDecorate 178(UBO) 1 RowMajor + MemberDecorate 178(UBO) 1 Offset 64 + MemberDecorate 178(UBO) 1 MatrixStride 16 + MemberDecorate 178(UBO) 2 Offset 128 + MemberDecorate 178(UBO) 3 Offset 144 + MemberDecorate 178(UBO) 4 Offset 240 + MemberDecorate 178(UBO) 5 Offset 244 + MemberDecorate 178(UBO) 6 Offset 248 + MemberDecorate 178(UBO) 7 Offset 256 + MemberDecorate 201(ubo) 0 Offset 0 + Decorate 201(ubo) Block + Decorate 207 DescriptorSet 0 + Decorate 207 Binding 0 + Decorate 327(textureHeight) DescriptorSet 0 + Decorate 327(textureHeight) Binding 1 + Decorate 336(samplerHeight) DescriptorSet 0 + Decorate 336(samplerHeight) Binding 1 + Decorate 584(patch.Pos) BuiltIn Position + Decorate 591(patch.Normal) Location 0 + Decorate 598(patch.UV) Location 1 + Decorate 632(InvocationID) BuiltIn InvocationId + Decorate 641(@entryPointOutput.Pos) BuiltIn Position + Decorate 648(@entryPointOutput.Normal) Location 0 + Decorate 655(@entryPointOutput.UV) Location 1 + Decorate 670(@patchConstantOutput.TessLevelOuter) Patch + Decorate 670(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 685(@patchConstantOutput.TessLevelInner) Patch + Decorate 685(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -189,729 +189,733 @@ WARNING: 0:158: '' : attribute does not apply to entry point 21: TypePointer Function 18(fvec4) 22: TypeFunction 8(float) 21(ptr) 21(ptr) 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 20 - 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 30 - 32: 11(int) Constant 1 - 33: 11(int) Constant 5 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 32 19 29 33 - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 27 23 29 16 16 31 27 17 16 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 38 20 29 16 16 28 19 32 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 43: 11(int) Constant 2 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 20 29 16 16 28 19 43 - 45: TypeVector 8(float) 2 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 43 - 47: TypePointer Function 45(fvec2) - 48: TypeBool - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 51: TypeFunction 48(bool) 21(ptr) 47(ptr) - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 50 20 46 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 56 52 29 16 16 31 56 17 16 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 62 20 29 16 16 57 19 32 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 46 29 16 16 57 19 43 - 67: TypeVector 8(float) 3 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 69(VSOutput): TypeStruct 18(fvec4) 67(fvec3) 45(fvec2) - 71: 11(int) Constant 44 - 72: 11(int) Constant 13 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 20 29 71 72 16 16 17 - 75: 11(int) Constant 45 - 76: 11(int) Constant 35 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 74 68 29 75 76 16 16 17 - 79: 11(int) Constant 46 - 80: 11(int) Constant 31 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 46 29 79 80 16 16 17 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 82 32 29 16 16 31 82 16 17 70 73 77 - 83: TypeArray 69(VSOutput) 19 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 81 19 - 85: TypePointer Function 83 - 86: TypeArray 8(float) 19 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 - 88: TypeArray 8(float) 43 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 43 -90(ConstantsHSOutput): TypeStruct 86 88 - 93: 11(int) Constant 58 - 94: 11(int) Constant 25 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 87 29 93 94 16 16 17 - 97: 11(int) Constant 59 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 89 29 97 94 16 16 17 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 99 32 29 16 16 31 99 16 17 91 95 - 100: TypeFunction 90(ConstantsHSOutput) 85(ptr) - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 98 84 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 104 101 29 16 16 31 104 17 16 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 110 84 29 16 16 105 19 32 - 112: TypePointer Function 11(int) - 113(HSOutput): TypeStruct 18(fvec4) 67(fvec3) 45(fvec2) - 115: 11(int) Constant 51 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 20 29 115 14 16 16 17 - 117: 11(int) Constant 52 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 74 68 29 117 76 16 16 17 - 119: 11(int) Constant 53 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 46 29 119 80 16 16 17 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 121 32 29 16 16 31 121 16 17 114 116 118 - 122: TypeFunction 113(HSOutput) 85(ptr) 112(ptr) - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 120 84 13 - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 127 123 29 16 16 31 127 17 16 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 110 84 29 16 16 128 19 32 - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 13 29 16 16 128 19 43 - 140: 11(int) Constant 67 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 20 29 140 16 28 19 - 145: 8(float) Constant 1056964608 - 151: 11(int) Constant 69 - 152: TypePointer Function 8(float) - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 10 29 151 16 28 19 - 160: 8(float) Constant 1073741824 - 163: 11(int) Constant 72 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 20 29 163 16 28 19 - 169: TypeMatrix 18(fvec4) 4 - 171: 48(bool) ConstantTrue - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 171 - 172: TypeArray 18(fvec4) 15 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 - 174(UBO): TypeStruct 169 169 18(fvec4) 172 8(float) 8(float) 45(fvec2) 8(float) - 177: 11(int) Constant 29 - 178: 11(int) Constant 20 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 170 29 177 178 16 16 17 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 176 170 29 177 178 16 16 17 - 182: 11(int) Constant 30 - 183: 11(int) Constant 17 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 181 20 29 182 183 16 16 17 - 186: 11(int) Constant 22 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 173 29 80 186 16 16 17 - 189: 11(int) Constant 27 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 10 29 76 189 16 16 17 - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 10 29 76 189 16 16 17 - 193: 11(int) Constant 34 - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 46 29 193 178 16 16 17 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 188 10 29 76 189 16 16 17 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 196 32 29 163 16 31 196 16 17 175 179 180 184 187 190 191 194 - 197(ubo): TypeStruct 174(UBO) - 200: 11(int) Constant 37 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 199 195 29 200 200 16 16 17 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 199 32 29 163 16 31 199 16 17 198 - 202: TypePointer Uniform 197(ubo) - 203: 202(ptr) Variable Uniform - 205: 11(int) Constant 8 - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 201 29 163 16 31 1 203 205 - 206: TypeInt 32 1 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 207 14 19 16 - 209: 206(int) Constant 0 - 210: 206(int) Constant 1 - 211: TypePointer Uniform 169 - 216: 11(int) Constant 75 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 219 20 29 216 16 28 19 - 223: 8(float) Constant 0 - 224: 67(fvec3) ConstantComposite 223 223 223 - 234: 11(int) Constant 76 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 20 29 234 16 28 19 - 250: 11(int) Constant 79 - 257: 11(int) Constant 80 - 264: 11(int) Constant 83 - 265: 206(int) Constant 6 - 266: TypePointer Uniform 45(fvec2) - 277: 11(int) Constant 84 - 288: 11(int) Constant 89 - 292: 206(int) Constant 7 - 293: TypePointer Uniform 8(float) - 297: 206(int) Constant 5 - 301: 8(float) Constant 1065353216 - 302: 8(float) Constant 1115684864 - 309: 11(int) Constant 98 - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 312 20 29 309 16 57 19 - 316: 11(int) Constant 99 - 317: TypeImage 8(float) 2D sampled format:Unknown - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 319 16 29 316 16 31 320 321 17 - 322: TypePointer UniformConstant 317 -323(textureHeight): 322(ptr) Variable UniformConstant - 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 325 318 29 316 16 31 325 323(textureHeight) 205 - 327: TypeSampler - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 329 32 29 316 16 31 330 321 17 - 331: TypePointer UniformConstant 327 -332(samplerHeight): 331(ptr) Variable UniformConstant - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 334 328 29 316 16 31 334 332(samplerHeight) 205 - 336: TypeSampledImage 317 - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 338 16 29 316 16 31 339 321 17 - 344: 206(int) Constant 4 - 353: 11(int) Constant 102 - 354: TypePointer Function 206(int) - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 357 208 29 353 16 57 19 - 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 373: 11(int) Constant 103 - 375: 206(int) Constant 3 - 377: TypePointer Uniform 18(fvec4) - 381: 8(float) Constant 1090519040 - 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 388: 48(bool) ConstantFalse - 391: 11(int) Constant 105 - 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 400: 11(int) Constant 108 - 406: 11(int) Constant 113 - 407: TypePointer Function 90(ConstantsHSOutput) - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 98 29 406 16 105 19 - 412: 86 ConstantComposite 223 223 223 223 - 413: 88 ConstantComposite 223 223 - 414:90(ConstantsHSOutput) ConstantComposite 412 413 - 416: 11(int) Constant 115 - 417: 206(int) Constant 2 - 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 432: 11(int) Constant 117 - 435: 11(int) Constant 118 - 438: 11(int) Constant 119 - 441: 11(int) Constant 120 - 444: 11(int) Constant 121 - 447: 11(int) Constant 122 - 452: 11(int) Constant 126 - 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 14 43 16 - 461: 11(int) Constant 128 - 471: 11(int) Constant 129 - 481: 11(int) Constant 130 - 491: 11(int) Constant 131 - 501: 11(int) Constant 132 - 509: 11(int) Constant 133 - 519: 11(int) Constant 139 - 522: 11(int) Constant 140 - 525: 11(int) Constant 141 - 528: 11(int) Constant 142 - 531: 11(int) Constant 143 - 534: 11(int) Constant 144 - 538: 11(int) Constant 148 - 545: 11(int) Constant 159 - 546: TypePointer Function 113(HSOutput) - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 120 29 545 16 128 19 - 550: 18(fvec4) ConstantComposite 223 223 223 223 - 551: 45(fvec2) ConstantComposite 223 223 - 552:113(HSOutput) ConstantComposite 550 224 551 - 554: 11(int) Constant 160 - 560: 11(int) Constant 161 - 562: TypePointer Function 67(fvec3) - 567: 11(int) Constant 162 - 573: 11(int) Constant 163 - 578: TypeArray 18(fvec4) 19 - 579: TypePointer Input 578 - 580(patch.Pos): 579(ptr) Variable Input - 581: TypePointer Input 18(fvec4) - 585: TypeArray 67(fvec3) 19 - 586: TypePointer Input 585 -587(patch.Normal): 586(ptr) Variable Input - 588: TypePointer Input 67(fvec3) - 592: TypeArray 45(fvec2) 19 - 593: TypePointer Input 592 - 594(patch.UV): 593(ptr) Variable Input - 595: TypePointer Input 45(fvec2) - 627: TypePointer Input 11(int) -628(InvocationID): 627(ptr) Variable Input - 636: TypePointer Output 578 -637(@entryPointOutput.Pos): 636(ptr) Variable Output - 641: TypePointer Output 18(fvec4) - 643: TypePointer Output 585 -644(@entryPointOutput.Normal): 643(ptr) Variable Output - 648: TypePointer Output 67(fvec3) - 650: TypePointer Output 592 -651(@entryPointOutput.UV): 650(ptr) Variable Output - 655: TypePointer Output 45(fvec2) - 665: TypePointer Output 86 -666(@patchConstantOutput.TessLevelOuter): 665(ptr) Variable Output - 669: TypePointer Output 8(float) - 680: TypePointer Output 88 -681(@patchConstantOutput.TessLevelInner): 680(ptr) Variable Output + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 31 + 32: 11(int) Constant 65 + 34: 11(int) Constant 1 + 35: 11(int) Constant 5 + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 34 19 30 35 + 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 28 23 30 32 16 33 28 17 32 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 20 30 32 16 29 19 34 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 44: 11(int) Constant 2 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 20 30 32 16 29 19 44 + 46: TypeVector 8(float) 2 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 44 + 48: TypePointer Function 46(fvec2) + 49: TypeBool + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 52: TypeFunction 49(bool) 21(ptr) 48(ptr) + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 51 20 47 + 60: 11(int) Constant 95 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 53 30 60 16 33 58 17 60 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 20 30 60 16 59 19 34 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 47 30 60 16 59 19 44 + 69: TypeVector 8(float) 3 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 71(VSOutput): TypeStruct 18(fvec4) 69(fvec3) 46(fvec2) + 73: 11(int) Constant 44 + 74: 11(int) Constant 13 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 20 30 73 74 16 16 17 + 77: 11(int) Constant 45 + 78: 11(int) Constant 35 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 70 30 77 78 16 16 17 + 81: 11(int) Constant 46 + 82: 11(int) Constant 31 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 47 30 81 82 16 16 17 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 84 34 30 60 16 33 84 16 17 72 75 79 + 85: TypeArray 71(VSOutput) 19 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 83 19 + 87: TypePointer Function 85 + 88: TypeArray 8(float) 19 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 + 90: TypeArray 8(float) 44 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 44 +92(ConstantsHSOutput): TypeStruct 88 90 + 95: 11(int) Constant 58 + 96: 11(int) Constant 25 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 89 30 95 96 16 16 17 + 99: 11(int) Constant 59 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 91 30 99 96 16 16 17 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 101 34 30 60 16 33 101 16 17 93 97 + 102: TypeFunction 92(ConstantsHSOutput) 87(ptr) + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 100 86 + 109: 11(int) Constant 112 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 107 103 30 109 16 33 107 17 109 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 86 30 109 16 108 19 34 + 115: TypePointer Function 11(int) + 116(HSOutput): TypeStruct 18(fvec4) 69(fvec3) 46(fvec2) + 118: 11(int) Constant 51 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 20 30 118 14 16 16 17 + 120: 11(int) Constant 52 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 70 30 120 78 16 16 17 + 122: 11(int) Constant 53 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 47 30 122 82 16 16 17 + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 124 34 30 109 16 33 124 16 17 117 119 121 + 125: TypeFunction 116(HSOutput) 87(ptr) 115(ptr) + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 123 86 13 + 133: 11(int) Constant 158 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 131 126 30 133 16 33 131 17 133 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 86 30 133 16 132 19 34 + 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 139 13 30 133 16 132 19 44 + 144: 11(int) Constant 67 + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 147 20 30 144 16 29 19 + 149: 8(float) Constant 1056964608 + 155: 11(int) Constant 69 + 156: TypePointer Function 8(float) + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 30 155 16 29 19 + 164: 8(float) Constant 1073741824 + 167: 11(int) Constant 72 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 20 30 167 16 29 19 + 173: TypeMatrix 18(fvec4) 4 + 175: 49(bool) ConstantTrue + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 175 + 176: TypeArray 18(fvec4) 15 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 + 178(UBO): TypeStruct 173 173 18(fvec4) 176 8(float) 8(float) 46(fvec2) 8(float) + 181: 11(int) Constant 29 + 182: 11(int) Constant 20 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 174 30 181 182 16 16 17 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 174 30 181 182 16 16 17 + 186: 11(int) Constant 30 + 187: 11(int) Constant 17 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 20 30 186 187 16 16 17 + 190: 11(int) Constant 22 + 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 189 177 30 82 190 16 16 17 + 193: 11(int) Constant 27 + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 10 30 78 193 16 16 17 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 10 30 78 193 16 16 17 + 197: 11(int) Constant 34 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 196 47 30 197 182 16 16 17 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 10 30 78 193 16 16 17 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 200 34 30 167 16 33 200 16 17 179 183 184 188 191 194 195 198 + 201(ubo): TypeStruct 178(UBO) + 204: 11(int) Constant 37 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 203 199 30 204 204 16 16 17 + 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 203 34 30 167 16 33 203 16 17 202 + 206: TypePointer Uniform 201(ubo) + 207: 206(ptr) Variable Uniform + 209: 11(int) Constant 8 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 205 30 167 16 33 1 207 209 + 210: TypeInt 32 1 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 211 14 19 16 + 213: 210(int) Constant 0 + 214: 210(int) Constant 1 + 215: TypePointer Uniform 173 + 220: 11(int) Constant 75 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 20 30 220 16 29 19 + 227: 8(float) Constant 0 + 228: 69(fvec3) ConstantComposite 227 227 227 + 238: 11(int) Constant 76 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 241 20 30 238 16 29 19 + 254: 11(int) Constant 79 + 261: 11(int) Constant 80 + 268: 11(int) Constant 83 + 269: 210(int) Constant 6 + 270: TypePointer Uniform 46(fvec2) + 281: 11(int) Constant 84 + 292: 11(int) Constant 89 + 296: 210(int) Constant 7 + 297: TypePointer Uniform 8(float) + 301: 210(int) Constant 5 + 305: 8(float) Constant 1065353216 + 306: 8(float) Constant 1115684864 + 313: 11(int) Constant 98 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 20 30 313 16 59 19 + 320: 11(int) Constant 99 + 321: TypeImage 8(float) 2D sampled format:Unknown + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 323 16 30 320 16 33 324 325 17 + 326: TypePointer UniformConstant 321 +327(textureHeight): 326(ptr) Variable UniformConstant + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 329 322 30 320 16 33 329 327(textureHeight) 209 + 331: TypeSampler + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 333 34 30 320 16 33 334 325 17 + 335: TypePointer UniformConstant 331 +336(samplerHeight): 335(ptr) Variable UniformConstant + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 338 332 30 320 16 33 338 336(samplerHeight) 209 + 340: TypeSampledImage 321 + 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 342 16 30 320 16 33 343 325 17 + 348: 210(int) Constant 4 + 357: 11(int) Constant 102 + 358: TypePointer Function 210(int) + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 361 212 30 357 16 59 19 + 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 377: 11(int) Constant 103 + 379: 210(int) Constant 3 + 381: TypePointer Uniform 18(fvec4) + 385: 8(float) Constant 1090519040 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 392: 49(bool) ConstantFalse + 395: 11(int) Constant 105 + 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 404: 11(int) Constant 108 + 410: 11(int) Constant 113 + 411: TypePointer Function 92(ConstantsHSOutput) + 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 414 100 30 410 16 108 19 + 416: 88 ConstantComposite 227 227 227 227 + 417: 90 ConstantComposite 227 227 + 418:92(ConstantsHSOutput) ConstantComposite 416 417 + 420: 11(int) Constant 115 + 421: 210(int) Constant 2 + 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 436: 11(int) Constant 117 + 439: 11(int) Constant 118 + 442: 11(int) Constant 119 + 445: 11(int) Constant 120 + 448: 11(int) Constant 121 + 451: 11(int) Constant 122 + 456: 11(int) Constant 126 + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 + 465: 11(int) Constant 128 + 475: 11(int) Constant 129 + 485: 11(int) Constant 130 + 495: 11(int) Constant 131 + 505: 11(int) Constant 132 + 513: 11(int) Constant 133 + 523: 11(int) Constant 139 + 526: 11(int) Constant 140 + 529: 11(int) Constant 141 + 532: 11(int) Constant 142 + 535: 11(int) Constant 143 + 538: 11(int) Constant 144 + 542: 11(int) Constant 148 + 549: 11(int) Constant 159 + 550: TypePointer Function 116(HSOutput) + 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 414 123 30 549 16 132 19 + 554: 18(fvec4) ConstantComposite 227 227 227 227 + 555: 46(fvec2) ConstantComposite 227 227 + 556:116(HSOutput) ConstantComposite 554 228 555 + 558: 11(int) Constant 160 + 564: 11(int) Constant 161 + 566: TypePointer Function 69(fvec3) + 571: 11(int) Constant 162 + 577: 11(int) Constant 163 + 582: TypeArray 18(fvec4) 19 + 583: TypePointer Input 582 + 584(patch.Pos): 583(ptr) Variable Input + 585: TypePointer Input 18(fvec4) + 589: TypeArray 69(fvec3) 19 + 590: TypePointer Input 589 +591(patch.Normal): 590(ptr) Variable Input + 592: TypePointer Input 69(fvec3) + 596: TypeArray 46(fvec2) 19 + 597: TypePointer Input 596 + 598(patch.UV): 597(ptr) Variable Input + 599: TypePointer Input 46(fvec2) + 631: TypePointer Input 11(int) +632(InvocationID): 631(ptr) Variable Input + 640: TypePointer Output 582 +641(@entryPointOutput.Pos): 640(ptr) Variable Output + 645: TypePointer Output 18(fvec4) + 647: TypePointer Output 589 +648(@entryPointOutput.Normal): 647(ptr) Variable Output + 652: TypePointer Output 69(fvec3) + 654: TypePointer Output 596 +655(@entryPointOutput.UV): 654(ptr) Variable Output + 659: TypePointer Output 46(fvec2) + 669: TypePointer Output 88 +670(@patchConstantOutput.TessLevelOuter): 669(ptr) Variable Output + 673: TypePointer Output 8(float) + 684: TypePointer Output 90 +685(@patchConstantOutput.TessLevelInner): 684(ptr) Variable Output Line 1 158 1 6(main): 4 Function None 5 7: Label - 577(patch): 85(ptr) Variable Function -626(InvocationID): 112(ptr) Variable Function -630(flattenTemp): 546(ptr) Variable Function - 631(param): 85(ptr) Variable Function - 633(param): 112(ptr) Variable Function -661(@patchConstantResult): 407(ptr) Variable Function - 662(param): 85(ptr) Variable Function + 581(patch): 87(ptr) Variable Function +630(InvocationID): 115(ptr) Variable Function +634(flattenTemp): 550(ptr) Variable Function + 635(param): 87(ptr) Variable Function + 637(param): 115(ptr) Variable Function +665(@patchConstantResult): 411(ptr) Variable Function + 666(param): 87(ptr) Variable Function Line 1 158 0 - 582: 581(ptr) AccessChain 580(patch.Pos) 209 - 583: 18(fvec4) Load 582 - 584: 21(ptr) AccessChain 577(patch) 209 209 - Store 584 583 - 589: 588(ptr) AccessChain 587(patch.Normal) 209 - 590: 67(fvec3) Load 589 - 591: 562(ptr) AccessChain 577(patch) 209 210 - Store 591 590 - 596: 595(ptr) AccessChain 594(patch.UV) 209 - 597: 45(fvec2) Load 596 - 598: 47(ptr) AccessChain 577(patch) 209 417 - Store 598 597 - 599: 581(ptr) AccessChain 580(patch.Pos) 210 - 600: 18(fvec4) Load 599 - 601: 21(ptr) AccessChain 577(patch) 210 209 - Store 601 600 - 602: 588(ptr) AccessChain 587(patch.Normal) 210 - 603: 67(fvec3) Load 602 - 604: 562(ptr) AccessChain 577(patch) 210 210 - Store 604 603 - 605: 595(ptr) AccessChain 594(patch.UV) 210 - 606: 45(fvec2) Load 605 - 607: 47(ptr) AccessChain 577(patch) 210 417 - Store 607 606 - 608: 581(ptr) AccessChain 580(patch.Pos) 417 - 609: 18(fvec4) Load 608 - 610: 21(ptr) AccessChain 577(patch) 417 209 - Store 610 609 - 611: 588(ptr) AccessChain 587(patch.Normal) 417 - 612: 67(fvec3) Load 611 - 613: 562(ptr) AccessChain 577(patch) 417 210 - Store 613 612 - 614: 595(ptr) AccessChain 594(patch.UV) 417 - 615: 45(fvec2) Load 614 - 616: 47(ptr) AccessChain 577(patch) 417 417 - Store 616 615 - 617: 581(ptr) AccessChain 580(patch.Pos) 375 - 618: 18(fvec4) Load 617 - 619: 21(ptr) AccessChain 577(patch) 375 209 - Store 619 618 - 620: 588(ptr) AccessChain 587(patch.Normal) 375 - 621: 67(fvec3) Load 620 - 622: 562(ptr) AccessChain 577(patch) 375 210 - Store 622 621 - 623: 595(ptr) AccessChain 594(patch.UV) 375 - 624: 45(fvec2) Load 623 - 625: 47(ptr) AccessChain 577(patch) 375 417 - Store 625 624 - 629: 11(int) Load 628(InvocationID) - Store 626(InvocationID) 629 - 632: 83 Load 577(patch) - Store 631(param) 632 - 634: 11(int) Load 626(InvocationID) - Store 633(param) 634 - 635:113(HSOutput) FunctionCall 126(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 631(param) 633(param) - Store 630(flattenTemp) 635 - 638: 11(int) Load 628(InvocationID) - 639: 21(ptr) AccessChain 630(flattenTemp) 209 - 640: 18(fvec4) Load 639 - 642: 641(ptr) AccessChain 637(@entryPointOutput.Pos) 638 - Store 642 640 - 645: 11(int) Load 628(InvocationID) - 646: 562(ptr) AccessChain 630(flattenTemp) 210 - 647: 67(fvec3) Load 646 - 649: 648(ptr) AccessChain 644(@entryPointOutput.Normal) 645 - Store 649 647 - 652: 11(int) Load 628(InvocationID) - 653: 47(ptr) AccessChain 630(flattenTemp) 417 - 654: 45(fvec2) Load 653 - 656: 655(ptr) AccessChain 651(@entryPointOutput.UV) 652 - Store 656 654 - ControlBarrier 43 19 16 - 657: 11(int) Load 628(InvocationID) - 658: 48(bool) IEqual 657 209 - SelectionMerge 660 None - BranchConditional 658 659 660 - 659: Label - 663: 83 Load 577(patch) - Store 662(param) 663 - 664:90(ConstantsHSOutput) FunctionCall 103(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 662(param) - Store 661(@patchConstantResult) 664 - 667: 152(ptr) AccessChain 661(@patchConstantResult) 209 209 - 668: 8(float) Load 667 - 670: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 209 - Store 670 668 - 671: 152(ptr) AccessChain 661(@patchConstantResult) 209 210 + 586: 585(ptr) AccessChain 584(patch.Pos) 213 + 587: 18(fvec4) Load 586 + 588: 21(ptr) AccessChain 581(patch) 213 213 + Store 588 587 + 593: 592(ptr) AccessChain 591(patch.Normal) 213 + 594: 69(fvec3) Load 593 + 595: 566(ptr) AccessChain 581(patch) 213 214 + Store 595 594 + 600: 599(ptr) AccessChain 598(patch.UV) 213 + 601: 46(fvec2) Load 600 + 602: 48(ptr) AccessChain 581(patch) 213 421 + Store 602 601 + 603: 585(ptr) AccessChain 584(patch.Pos) 214 + 604: 18(fvec4) Load 603 + 605: 21(ptr) AccessChain 581(patch) 214 213 + Store 605 604 + 606: 592(ptr) AccessChain 591(patch.Normal) 214 + 607: 69(fvec3) Load 606 + 608: 566(ptr) AccessChain 581(patch) 214 214 + Store 608 607 + 609: 599(ptr) AccessChain 598(patch.UV) 214 + 610: 46(fvec2) Load 609 + 611: 48(ptr) AccessChain 581(patch) 214 421 + Store 611 610 + 612: 585(ptr) AccessChain 584(patch.Pos) 421 + 613: 18(fvec4) Load 612 + 614: 21(ptr) AccessChain 581(patch) 421 213 + Store 614 613 + 615: 592(ptr) AccessChain 591(patch.Normal) 421 + 616: 69(fvec3) Load 615 + 617: 566(ptr) AccessChain 581(patch) 421 214 + Store 617 616 + 618: 599(ptr) AccessChain 598(patch.UV) 421 + 619: 46(fvec2) Load 618 + 620: 48(ptr) AccessChain 581(patch) 421 421 + Store 620 619 + 621: 585(ptr) AccessChain 584(patch.Pos) 379 + 622: 18(fvec4) Load 621 + 623: 21(ptr) AccessChain 581(patch) 379 213 + Store 623 622 + 624: 592(ptr) AccessChain 591(patch.Normal) 379 + 625: 69(fvec3) Load 624 + 626: 566(ptr) AccessChain 581(patch) 379 214 + Store 626 625 + 627: 599(ptr) AccessChain 598(patch.UV) 379 + 628: 46(fvec2) Load 627 + 629: 48(ptr) AccessChain 581(patch) 379 421 + Store 629 628 + 633: 11(int) Load 632(InvocationID) + Store 630(InvocationID) 633 + 636: 85 Load 581(patch) + Store 635(param) 636 + 638: 11(int) Load 630(InvocationID) + Store 637(param) 638 + 639:116(HSOutput) FunctionCall 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 635(param) 637(param) + Store 634(flattenTemp) 639 + 642: 11(int) Load 632(InvocationID) + 643: 21(ptr) AccessChain 634(flattenTemp) 213 + 644: 18(fvec4) Load 643 + 646: 645(ptr) AccessChain 641(@entryPointOutput.Pos) 642 + Store 646 644 + 649: 11(int) Load 632(InvocationID) + 650: 566(ptr) AccessChain 634(flattenTemp) 214 + 651: 69(fvec3) Load 650 + 653: 652(ptr) AccessChain 648(@entryPointOutput.Normal) 649 + Store 653 651 + 656: 11(int) Load 632(InvocationID) + 657: 48(ptr) AccessChain 634(flattenTemp) 421 + 658: 46(fvec2) Load 657 + 660: 659(ptr) AccessChain 655(@entryPointOutput.UV) 656 + Store 660 658 + ControlBarrier 44 19 16 + 661: 11(int) Load 632(InvocationID) + 662: 49(bool) IEqual 661 213 + SelectionMerge 664 None + BranchConditional 662 663 664 + 663: Label + 667: 85 Load 581(patch) + Store 666(param) 667 + 668:92(ConstantsHSOutput) FunctionCall 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 666(param) + Store 665(@patchConstantResult) 668 + 671: 156(ptr) AccessChain 665(@patchConstantResult) 213 213 672: 8(float) Load 671 - 673: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 210 - Store 673 672 - 674: 152(ptr) AccessChain 661(@patchConstantResult) 209 417 - 675: 8(float) Load 674 - 676: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 417 - Store 676 675 - 677: 152(ptr) AccessChain 661(@patchConstantResult) 209 375 - 678: 8(float) Load 677 - 679: 669(ptr) AccessChain 666(@patchConstantOutput.TessLevelOuter) 375 - Store 679 678 - 682: 152(ptr) AccessChain 661(@patchConstantResult) 210 209 - 683: 8(float) Load 682 - 684: 669(ptr) AccessChain 681(@patchConstantOutput.TessLevelInner) 209 - Store 684 683 - 685: 152(ptr) AccessChain 661(@patchConstantResult) 210 210 - 686: 8(float) Load 685 - 687: 669(ptr) AccessChain 681(@patchConstantOutput.TessLevelInner) 210 - Store 687 686 - Branch 660 - 660: Label + 674: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 213 + Store 674 672 + 675: 156(ptr) AccessChain 665(@patchConstantResult) 213 214 + 676: 8(float) Load 675 + 677: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 214 + Store 677 676 + 678: 156(ptr) AccessChain 665(@patchConstantResult) 213 421 + 679: 8(float) Load 678 + 680: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 421 + Store 680 679 + 681: 156(ptr) AccessChain 665(@patchConstantResult) 213 379 + 682: 8(float) Load 681 + 683: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 379 + Store 683 682 + 686: 156(ptr) AccessChain 665(@patchConstantResult) 214 213 + 687: 8(float) Load 686 + 688: 673(ptr) AccessChain 685(@patchConstantOutput.TessLevelInner) 213 + Store 688 687 + 689: 156(ptr) AccessChain 665(@patchConstantResult) 214 214 + 690: 8(float) Load 689 + 691: 673(ptr) AccessChain 685(@patchConstantOutput.TessLevelInner) 214 + Store 691 690 + Branch 664 + 664: Label Return FunctionEnd Line 1 65 1 26(screenSpaceTessFactor(vf4;vf4;): 8(float) Function None 22 24(p0): 21(ptr) FunctionParameter 25(p1): 21(ptr) FunctionParameter - 34: Label - 141(midPoint): 21(ptr) Variable Function - 153(radius): 152(ptr) Variable Function - 164(v0): 21(ptr) Variable Function - 217(clip0): 21(ptr) Variable Function - 235(clip1): 21(ptr) Variable Function - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 28 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 37 24(p0) 40 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 25(p1) 40 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 28 26(screenSpaceTessFactor(vf4;vf4;) - 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 28 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 140 140 16 16 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(midPoint) 40 - 146: 18(fvec4) Load 24(p0) - 147: 18(fvec4) Load 25(p1) - 148: 18(fvec4) FAdd 146 147 - 149: 18(fvec4) VectorTimesScalar 148 145 - Store 141(midPoint) 149 - 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 151 151 16 16 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 154 153(radius) 40 - 157: 18(fvec4) Load 24(p0) - 158: 18(fvec4) Load 25(p1) - 159: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 157 158 - 161: 8(float) FDiv 159 160 - Store 153(radius) 161 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 163 163 16 16 - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 165 164(v0) 40 - 168: 18(fvec4) Load 141(midPoint) - 212: 211(ptr) AccessChain 203 209 210 - 213: 169 Load 212 - 214: 18(fvec4) VectorTimesMatrix 168 213 - Store 164(v0) 214 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 216 216 16 16 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 218 217(clip0) 40 - 221: 18(fvec4) Load 164(v0) - 222: 8(float) Load 153(radius) - 225: 8(float) CompositeExtract 224 0 - 226: 8(float) CompositeExtract 224 1 - 227: 8(float) CompositeExtract 224 2 - 228: 18(fvec4) CompositeConstruct 222 225 226 227 - 229: 18(fvec4) FSub 221 228 - 230: 211(ptr) AccessChain 203 209 209 - 231: 169 Load 230 - 232: 18(fvec4) VectorTimesMatrix 229 231 - Store 217(clip0) 232 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 234 234 16 16 - 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(clip1) 40 - 239: 18(fvec4) Load 164(v0) - 240: 8(float) Load 153(radius) - 241: 8(float) CompositeExtract 224 0 - 242: 8(float) CompositeExtract 224 1 - 243: 8(float) CompositeExtract 224 2 - 244: 18(fvec4) CompositeConstruct 240 241 242 243 - 245: 18(fvec4) FAdd 239 244 - 246: 211(ptr) AccessChain 203 209 209 - 247: 169 Load 246 - 248: 18(fvec4) VectorTimesMatrix 245 247 - Store 235(clip1) 248 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 250 250 16 16 - 251: 152(ptr) AccessChain 217(clip0) 17 - 252: 8(float) Load 251 - 253: 18(fvec4) Load 217(clip0) - 254: 18(fvec4) CompositeConstruct 252 252 252 252 - 255: 18(fvec4) FDiv 253 254 - Store 217(clip0) 255 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 257 257 16 16 - 258: 152(ptr) AccessChain 235(clip1) 17 - 259: 8(float) Load 258 - 260: 18(fvec4) Load 235(clip1) - 261: 18(fvec4) CompositeConstruct 259 259 259 259 - 262: 18(fvec4) FDiv 260 261 - Store 235(clip1) 262 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 264 264 16 16 - 267: 266(ptr) AccessChain 203 209 265 - 268: 45(fvec2) Load 267 - 269: 18(fvec4) Load 217(clip0) - 270: 45(fvec2) VectorShuffle 269 269 0 1 - 271: 45(fvec2) FMul 270 268 - 272: 152(ptr) AccessChain 217(clip0) 16 - 273: 8(float) CompositeExtract 271 0 - Store 272 273 - 274: 152(ptr) AccessChain 217(clip0) 32 - 275: 8(float) CompositeExtract 271 1 - Store 274 275 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 277 277 16 16 - 278: 266(ptr) AccessChain 203 209 265 - 279: 45(fvec2) Load 278 - 280: 18(fvec4) Load 235(clip1) - 281: 45(fvec2) VectorShuffle 280 280 0 1 - 282: 45(fvec2) FMul 281 279 - 283: 152(ptr) AccessChain 235(clip1) 16 - 284: 8(float) CompositeExtract 282 0 - Store 283 284 - 285: 152(ptr) AccessChain 235(clip1) 32 - 286: 8(float) CompositeExtract 282 1 - Store 285 286 - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 288 288 16 16 - 289: 18(fvec4) Load 217(clip0) - 290: 18(fvec4) Load 235(clip1) - 291: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 289 290 - 294: 293(ptr) AccessChain 203 209 292 - 295: 8(float) Load 294 - 296: 8(float) FDiv 291 295 - 298: 293(ptr) AccessChain 203 209 297 + 27: Label + 145(midPoint): 21(ptr) Variable Function + 157(radius): 156(ptr) Variable Function + 168(v0): 21(ptr) Variable Function + 221(clip0): 21(ptr) Variable Function + 239(clip1): 21(ptr) Variable Function + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 32 32 16 16 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 24(p0) 41 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 25(p1) 41 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 29 26(screenSpaceTessFactor(vf4;vf4;) + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 144 144 16 16 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 146 145(midPoint) 41 + 150: 18(fvec4) Load 24(p0) + 151: 18(fvec4) Load 25(p1) + 152: 18(fvec4) FAdd 150 151 + 153: 18(fvec4) VectorTimesScalar 152 149 + Store 145(midPoint) 153 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 155 155 16 16 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(radius) 41 + 161: 18(fvec4) Load 24(p0) + 162: 18(fvec4) Load 25(p1) + 163: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 161 162 + 165: 8(float) FDiv 163 164 + Store 157(radius) 165 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 167 167 16 16 + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 169 168(v0) 41 + 172: 18(fvec4) Load 145(midPoint) + 216: 215(ptr) AccessChain 207 213 214 + 217: 173 Load 216 + 218: 18(fvec4) VectorTimesMatrix 172 217 + Store 168(v0) 218 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 220 220 16 16 + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(clip0) 41 + 225: 18(fvec4) Load 168(v0) + 226: 8(float) Load 157(radius) + 229: 8(float) CompositeExtract 228 0 + 230: 8(float) CompositeExtract 228 1 + 231: 8(float) CompositeExtract 228 2 + 232: 18(fvec4) CompositeConstruct 226 229 230 231 + 233: 18(fvec4) FSub 225 232 + 234: 215(ptr) AccessChain 207 213 213 + 235: 173 Load 234 + 236: 18(fvec4) VectorTimesMatrix 233 235 + Store 221(clip0) 236 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 238 238 16 16 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 240 239(clip1) 41 + 243: 18(fvec4) Load 168(v0) + 244: 8(float) Load 157(radius) + 245: 8(float) CompositeExtract 228 0 + 246: 8(float) CompositeExtract 228 1 + 247: 8(float) CompositeExtract 228 2 + 248: 18(fvec4) CompositeConstruct 244 245 246 247 + 249: 18(fvec4) FAdd 243 248 + 250: 215(ptr) AccessChain 207 213 213 + 251: 173 Load 250 + 252: 18(fvec4) VectorTimesMatrix 249 251 + Store 239(clip1) 252 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 254 254 16 16 + 255: 156(ptr) AccessChain 221(clip0) 17 + 256: 8(float) Load 255 + 257: 18(fvec4) Load 221(clip0) + 258: 18(fvec4) CompositeConstruct 256 256 256 256 + 259: 18(fvec4) FDiv 257 258 + Store 221(clip0) 259 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 261 261 16 16 + 262: 156(ptr) AccessChain 239(clip1) 17 + 263: 8(float) Load 262 + 264: 18(fvec4) Load 239(clip1) + 265: 18(fvec4) CompositeConstruct 263 263 263 263 + 266: 18(fvec4) FDiv 264 265 + Store 239(clip1) 266 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 268 268 16 16 + 271: 270(ptr) AccessChain 207 213 269 + 272: 46(fvec2) Load 271 + 273: 18(fvec4) Load 221(clip0) + 274: 46(fvec2) VectorShuffle 273 273 0 1 + 275: 46(fvec2) FMul 274 272 + 276: 156(ptr) AccessChain 221(clip0) 16 + 277: 8(float) CompositeExtract 275 0 + Store 276 277 + 278: 156(ptr) AccessChain 221(clip0) 34 + 279: 8(float) CompositeExtract 275 1 + Store 278 279 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 281 281 16 16 + 282: 270(ptr) AccessChain 207 213 269 + 283: 46(fvec2) Load 282 + 284: 18(fvec4) Load 239(clip1) + 285: 46(fvec2) VectorShuffle 284 284 0 1 + 286: 46(fvec2) FMul 285 283 + 287: 156(ptr) AccessChain 239(clip1) 16 + 288: 8(float) CompositeExtract 286 0 + Store 287 288 + 289: 156(ptr) AccessChain 239(clip1) 34 + 290: 8(float) CompositeExtract 286 1 + Store 289 290 + 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 292 292 16 16 + 293: 18(fvec4) Load 221(clip0) + 294: 18(fvec4) Load 239(clip1) + 295: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 293 294 + 298: 297(ptr) AccessChain 207 213 296 299: 8(float) Load 298 - 300: 8(float) FMul 296 299 - 303: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 300 301 302 - ReturnValue 303 + 300: 8(float) FDiv 295 299 + 302: 297(ptr) AccessChain 207 213 301 + 303: 8(float) Load 302 + 304: 8(float) FMul 300 303 + 307: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 304 305 306 + ReturnValue 307 FunctionEnd Line 1 95 1 -55(frustumCheck(vf4;vf2;): 48(bool) Function None 51 - 53(Pos): 21(ptr) FunctionParameter - 54(inUV): 47(ptr) FunctionParameter - 58: Label - 310(pos): 21(ptr) Variable Function - 355(i): 354(ptr) Variable Function - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 61 53(Pos) 40 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 54(inUV) 40 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 55(frustumCheck(vf4;vf2;) - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 309 309 16 16 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 311 310(pos) 40 - 314: 18(fvec4) Load 53(Pos) - Store 310(pos) 314 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 316 316 16 16 - 326: 317 Load 323(textureHeight) - 335: 327 Load 332(samplerHeight) - 340: 336 SampledImage 326 335 - 341: 45(fvec2) Load 54(inUV) - 342: 18(fvec4) ImageSampleExplicitLod 340 341 Lod 223 - 343: 8(float) CompositeExtract 342 0 - 345: 293(ptr) AccessChain 203 209 344 - 346: 8(float) Load 345 - 347: 8(float) FMul 343 346 - 348: 152(ptr) AccessChain 310(pos) 32 - 349: 8(float) Load 348 - 350: 8(float) FSub 349 347 - 351: 152(ptr) AccessChain 310(pos) 32 - Store 351 350 - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 - 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 356 355(i) 40 - Store 355(i) 209 - Branch 359 - 359: Label - 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 - LoopMerge 361 362 None - Branch 365 +56(frustumCheck(vf4;vf2;): 49(bool) Function None 52 + 54(Pos): 21(ptr) FunctionParameter + 55(inUV): 48(ptr) FunctionParameter + 57: Label + 314(pos): 21(ptr) Variable Function + 359(i): 358(ptr) Variable Function + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 60 60 16 16 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 54(Pos) 41 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 55(inUV) 41 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 56(frustumCheck(vf4;vf2;) + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 313 313 16 16 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(pos) 41 + 318: 18(fvec4) Load 54(Pos) + Store 314(pos) 318 + 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 320 320 16 16 + 330: 321 Load 327(textureHeight) + 339: 331 Load 336(samplerHeight) + 344: 340 SampledImage 330 339 + 345: 46(fvec2) Load 55(inUV) + 346: 18(fvec4) ImageSampleExplicitLod 344 345 Lod 227 + 347: 8(float) CompositeExtract 346 0 + 349: 297(ptr) AccessChain 207 213 348 + 350: 8(float) Load 349 + 351: 8(float) FMul 347 350 + 352: 156(ptr) AccessChain 314(pos) 34 + 353: 8(float) Load 352 + 354: 8(float) FSub 353 351 + 355: 156(ptr) AccessChain 314(pos) 34 + Store 355 354 + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 + 362: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 360 359(i) 41 + Store 359(i) 213 + Branch 363 + 363: Label + 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 + LoopMerge 365 366 None + Branch 369 + 369: Label + 370: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 + 372: 210(int) Load 359(i) + 374: 49(bool) SLessThan 372 269 + BranchConditional 374 364 365 + 364: Label + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 377 377 16 16 + 378: 18(fvec4) Load 314(pos) + 380: 210(int) Load 359(i) + 382: 381(ptr) AccessChain 207 213 379 380 + 383: 18(fvec4) Load 382 + 384: 8(float) Dot 378 383 + 386: 8(float) FAdd 384 385 + 388: 49(bool) FOrdLessThan 386 227 + SelectionMerge 390 None + BranchConditional 388 389 390 + 389: Label + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 395 395 16 16 + ReturnValue 392 + 390: Label + Branch 366 + 366: Label + 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 + 399: 210(int) Load 359(i) + 400: 210(int) IAdd 399 214 + Store 359(i) 400 + Branch 363 365: Label - 366: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 - 368: 206(int) Load 355(i) - 370: 48(bool) SLessThan 368 265 - BranchConditional 370 360 361 - 360: Label - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 373 373 16 16 - 374: 18(fvec4) Load 310(pos) - 376: 206(int) Load 355(i) - 378: 377(ptr) AccessChain 203 209 375 376 - 379: 18(fvec4) Load 378 - 380: 8(float) Dot 374 379 - 382: 8(float) FAdd 380 381 - 384: 48(bool) FOrdLessThan 382 223 - SelectionMerge 386 None - BranchConditional 384 385 386 - 385: Label - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 391 391 16 16 - ReturnValue 388 - 386: Label - Branch 362 - 362: Label - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 353 353 16 16 - 395: 206(int) Load 355(i) - 396: 206(int) IAdd 395 210 - Store 355(i) 396 - Branch 359 - 361: Label - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 400 400 16 16 - ReturnValue 171 + 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 404 404 16 16 + ReturnValue 175 FunctionEnd Line 1 112 1 -103(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):90(ConstantsHSOutput) Function None 100 - 102(patch): 85(ptr) FunctionParameter +105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):92(ConstantsHSOutput) Function None 102 + 104(patch): 87(ptr) FunctionParameter 106: Label - 408(output): 407(ptr) Variable Function - 418(param): 21(ptr) Variable Function - 421(param): 47(ptr) Variable Function - 462(param): 21(ptr) Variable Function - 465(param): 21(ptr) Variable Function - 472(param): 21(ptr) Variable Function - 475(param): 21(ptr) Variable Function - 482(param): 21(ptr) Variable Function - 485(param): 21(ptr) Variable Function - 492(param): 21(ptr) Variable Function - 495(param): 21(ptr) Variable Function - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 109 102(patch) 40 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 105 103(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 406 406 16 16 - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 409 408(output) 40 - Store 408(output) 414 - 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 416 416 16 16 - 419: 21(ptr) AccessChain 102(patch) 209 209 - 420: 18(fvec4) Load 419 - Store 418(param) 420 - 422: 47(ptr) AccessChain 102(patch) 209 417 - 423: 45(fvec2) Load 422 - Store 421(param) 423 - 424: 48(bool) FunctionCall 55(frustumCheck(vf4;vf2;) 418(param) 421(param) - 427: 48(bool) LogicalNot 424 - SelectionMerge 429 None - BranchConditional 427 428 449 - 428: Label - 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 - 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 432 432 16 16 - 433: 152(ptr) AccessChain 408(output) 210 209 - Store 433 223 - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 435 435 16 16 - 436: 152(ptr) AccessChain 408(output) 210 210 - Store 436 223 - 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 438 438 16 16 - 439: 152(ptr) AccessChain 408(output) 209 209 - Store 439 223 - 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 441 441 16 16 - 442: 152(ptr) AccessChain 408(output) 209 210 - Store 442 223 - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 444 444 16 16 - 445: 152(ptr) AccessChain 408(output) 209 417 - Store 445 223 - 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 447 447 16 16 - 448: 152(ptr) AccessChain 408(output) 209 375 - Store 448 223 - Branch 429 - 449: Label - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 - 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 452 452 16 16 - 453: 293(ptr) AccessChain 203 209 297 - 454: 8(float) Load 453 - 456: 48(bool) FOrdGreaterThan 454 223 - SelectionMerge 458 None - BranchConditional 456 457 516 - 457: Label - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 461 461 16 16 - 463: 21(ptr) AccessChain 102(patch) 375 209 - 464: 18(fvec4) Load 463 - Store 462(param) 464 - 466: 21(ptr) AccessChain 102(patch) 209 209 - 467: 18(fvec4) Load 466 - Store 465(param) 467 - 468: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 462(param) 465(param) - 469: 152(ptr) AccessChain 408(output) 209 209 - Store 469 468 - 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 471 471 16 16 - 473: 21(ptr) AccessChain 102(patch) 209 209 - 474: 18(fvec4) Load 473 - Store 472(param) 474 - 476: 21(ptr) AccessChain 102(patch) 210 209 - 477: 18(fvec4) Load 476 - Store 475(param) 477 - 478: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 472(param) 475(param) - 479: 152(ptr) AccessChain 408(output) 209 210 - Store 479 478 - 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 481 481 16 16 - 483: 21(ptr) AccessChain 102(patch) 210 209 - 484: 18(fvec4) Load 483 - Store 482(param) 484 - 486: 21(ptr) AccessChain 102(patch) 417 209 - 487: 18(fvec4) Load 486 - Store 485(param) 487 - 488: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 482(param) 485(param) - 489: 152(ptr) AccessChain 408(output) 209 417 - Store 489 488 - 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 491 491 16 16 - 493: 21(ptr) AccessChain 102(patch) 417 209 - 494: 18(fvec4) Load 493 - Store 492(param) 494 - 496: 21(ptr) AccessChain 102(patch) 375 209 - 497: 18(fvec4) Load 496 - Store 495(param) 497 - 498: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 492(param) 495(param) - 499: 152(ptr) AccessChain 408(output) 209 375 - Store 499 498 - 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 501 501 16 16 - 502: 152(ptr) AccessChain 408(output) 209 209 - 503: 8(float) Load 502 - 504: 152(ptr) AccessChain 408(output) 209 375 - 505: 8(float) Load 504 - 506: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 503 505 145 - 507: 152(ptr) AccessChain 408(output) 210 209 - Store 507 506 - 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 509 509 16 16 - 510: 152(ptr) AccessChain 408(output) 209 417 - 511: 8(float) Load 510 - 512: 152(ptr) AccessChain 408(output) 209 210 - 513: 8(float) Load 512 - 514: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 511 513 145 - 515: 152(ptr) AccessChain 408(output) 210 210 - Store 515 514 - Branch 458 - 516: Label - 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 - 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 519 519 16 16 - 520: 152(ptr) AccessChain 408(output) 210 209 - Store 520 301 - 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 522 522 16 16 - 523: 152(ptr) AccessChain 408(output) 210 210 - Store 523 301 - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 525 525 16 16 - 526: 152(ptr) AccessChain 408(output) 209 209 - Store 526 301 - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 528 528 16 16 - 529: 152(ptr) AccessChain 408(output) 209 210 - Store 529 301 - 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 531 531 16 16 - 532: 152(ptr) AccessChain 408(output) 209 417 - Store 532 301 - 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 534 534 16 16 - 535: 152(ptr) AccessChain 408(output) 209 375 - Store 535 301 - Branch 458 - 458: Label - Branch 429 - 429: Label - 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 105 - 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 538 538 16 16 - 539:90(ConstantsHSOutput) Load 408(output) - ReturnValue 539 + 412(output): 411(ptr) Variable Function + 422(param): 21(ptr) Variable Function + 425(param): 48(ptr) Variable Function + 466(param): 21(ptr) Variable Function + 469(param): 21(ptr) Variable Function + 476(param): 21(ptr) Variable Function + 479(param): 21(ptr) Variable Function + 486(param): 21(ptr) Variable Function + 489(param): 21(ptr) Variable Function + 496(param): 21(ptr) Variable Function + 499(param): 21(ptr) Variable Function + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 109 109 16 16 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 112 104(patch) 41 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 108 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 410 410 16 16 + 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 413 412(output) 41 + Store 412(output) 418 + 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 420 420 16 16 + 423: 21(ptr) AccessChain 104(patch) 213 213 + 424: 18(fvec4) Load 423 + Store 422(param) 424 + 426: 48(ptr) AccessChain 104(patch) 213 421 + 427: 46(fvec2) Load 426 + Store 425(param) 427 + 428: 49(bool) FunctionCall 56(frustumCheck(vf4;vf2;) 422(param) 425(param) + 431: 49(bool) LogicalNot 428 + SelectionMerge 433 None + BranchConditional 431 432 453 + 432: Label + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 436 436 16 16 + 437: 156(ptr) AccessChain 412(output) 214 213 + Store 437 227 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 439 439 16 16 + 440: 156(ptr) AccessChain 412(output) 214 214 + Store 440 227 + 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 442 442 16 16 + 443: 156(ptr) AccessChain 412(output) 213 213 + Store 443 227 + 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 445 445 16 16 + 446: 156(ptr) AccessChain 412(output) 213 214 + Store 446 227 + 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 448 448 16 16 + 449: 156(ptr) AccessChain 412(output) 213 421 + Store 449 227 + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 451 451 16 16 + 452: 156(ptr) AccessChain 412(output) 213 379 + Store 452 227 + Branch 433 + 453: Label + 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 456 456 16 16 + 457: 297(ptr) AccessChain 207 213 301 + 458: 8(float) Load 457 + 460: 49(bool) FOrdGreaterThan 458 227 + SelectionMerge 462 None + BranchConditional 460 461 520 + 461: Label + 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 465 465 16 16 + 467: 21(ptr) AccessChain 104(patch) 379 213 + 468: 18(fvec4) Load 467 + Store 466(param) 468 + 470: 21(ptr) AccessChain 104(patch) 213 213 + 471: 18(fvec4) Load 470 + Store 469(param) 471 + 472: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 466(param) 469(param) + 473: 156(ptr) AccessChain 412(output) 213 213 + Store 473 472 + 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 475 475 16 16 + 477: 21(ptr) AccessChain 104(patch) 213 213 + 478: 18(fvec4) Load 477 + Store 476(param) 478 + 480: 21(ptr) AccessChain 104(patch) 214 213 + 481: 18(fvec4) Load 480 + Store 479(param) 481 + 482: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 476(param) 479(param) + 483: 156(ptr) AccessChain 412(output) 213 214 + Store 483 482 + 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 485 485 16 16 + 487: 21(ptr) AccessChain 104(patch) 214 213 + 488: 18(fvec4) Load 487 + Store 486(param) 488 + 490: 21(ptr) AccessChain 104(patch) 421 213 + 491: 18(fvec4) Load 490 + Store 489(param) 491 + 492: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 486(param) 489(param) + 493: 156(ptr) AccessChain 412(output) 213 421 + Store 493 492 + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 495 495 16 16 + 497: 21(ptr) AccessChain 104(patch) 421 213 + 498: 18(fvec4) Load 497 + Store 496(param) 498 + 500: 21(ptr) AccessChain 104(patch) 379 213 + 501: 18(fvec4) Load 500 + Store 499(param) 501 + 502: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 496(param) 499(param) + 503: 156(ptr) AccessChain 412(output) 213 379 + Store 503 502 + 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 505 505 16 16 + 506: 156(ptr) AccessChain 412(output) 213 213 + 507: 8(float) Load 506 + 508: 156(ptr) AccessChain 412(output) 213 379 + 509: 8(float) Load 508 + 510: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 507 509 149 + 511: 156(ptr) AccessChain 412(output) 214 213 + Store 511 510 + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 513 513 16 16 + 514: 156(ptr) AccessChain 412(output) 213 421 + 515: 8(float) Load 514 + 516: 156(ptr) AccessChain 412(output) 213 214 + 517: 8(float) Load 516 + 518: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 515 517 149 + 519: 156(ptr) AccessChain 412(output) 214 214 + Store 519 518 + Branch 462 + 520: Label + 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 523 523 16 16 + 524: 156(ptr) AccessChain 412(output) 214 213 + Store 524 305 + 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 526 526 16 16 + 527: 156(ptr) AccessChain 412(output) 214 214 + Store 527 305 + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 529 529 16 16 + 530: 156(ptr) AccessChain 412(output) 213 213 + Store 530 305 + 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 532 532 16 16 + 533: 156(ptr) AccessChain 412(output) 213 214 + Store 533 305 + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 535 535 16 16 + 536: 156(ptr) AccessChain 412(output) 213 421 + Store 536 305 + 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 538 538 16 16 + 539: 156(ptr) AccessChain 412(output) 213 379 + Store 539 305 + Branch 462 + 462: Label + Branch 433 + 433: Label + 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 541: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 542 542 16 16 + 543:92(ConstantsHSOutput) Load 412(output) + ReturnValue 543 FunctionEnd Line 1 158 1 -126(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):113(HSOutput) Function None 122 - 124(patch): 85(ptr) FunctionParameter -125(InvocationID): 112(ptr) FunctionParameter - 129: Label - 547(output): 546(ptr) Variable Function - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 128 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 16 16 16 16 - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 124(patch) 40 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 134 125(InvocationID) 40 - 542: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 128 126(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) - 543: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 128 - 544: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 545 545 16 16 - 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 548 547(output) 40 - Store 547(output) 552 - 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 554 554 16 16 - 555: 11(int) Load 125(InvocationID) - 556: 21(ptr) AccessChain 124(patch) 555 209 - 557: 18(fvec4) Load 556 - 558: 21(ptr) AccessChain 547(output) 209 - Store 558 557 - 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 560 560 16 16 - 561: 11(int) Load 125(InvocationID) - 563: 562(ptr) AccessChain 124(patch) 561 210 - 564: 67(fvec3) Load 563 - 565: 562(ptr) AccessChain 547(output) 210 - Store 565 564 - 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 567 567 16 16 - 568: 11(int) Load 125(InvocationID) - 569: 47(ptr) AccessChain 124(patch) 568 417 - 570: 45(fvec2) Load 569 - 571: 47(ptr) AccessChain 547(output) 417 - Store 571 570 - 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 29 573 573 16 16 - 574:113(HSOutput) Load 547(output) - ReturnValue 574 +129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):116(HSOutput) Function None 125 + 127(patch): 87(ptr) FunctionParameter +128(InvocationID): 115(ptr) FunctionParameter + 130: Label + 551(output): 550(ptr) Variable Function + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 132 + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 133 133 16 16 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 127(patch) 41 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 138 128(InvocationID) 41 + 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 132 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 132 + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 549 549 16 16 + 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 552 551(output) 41 + Store 551(output) 556 + 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 558 558 16 16 + 559: 11(int) Load 128(InvocationID) + 560: 21(ptr) AccessChain 127(patch) 559 213 + 561: 18(fvec4) Load 560 + 562: 21(ptr) AccessChain 551(output) 213 + Store 562 561 + 563: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 564 564 16 16 + 565: 11(int) Load 128(InvocationID) + 567: 566(ptr) AccessChain 127(patch) 565 214 + 568: 69(fvec3) Load 567 + 569: 566(ptr) AccessChain 551(output) 214 + Store 569 568 + 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 571 571 16 16 + 572: 11(int) Load 128(InvocationID) + 573: 48(ptr) AccessChain 127(patch) 572 421 + 574: 46(fvec2) Load 573 + 575: 48(ptr) AccessChain 551(output) 421 + Store 575 574 + 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 577 577 16 16 + 578:116(HSOutput) Load 551(output) + ReturnValue 578 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index d0901eb615..47ee2bd526 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 461 +// Id's are bound by 462 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 6 "main" 352 367 376 385 392 398 438 442 446 449 452 455 458 + EntryPoint TessellationEvaluation 6 "main" 353 368 377 386 393 399 439 443 447 450 453 456 459 ExecutionMode 6 Quads 1: String "" 9: String "float" @@ -31,34 +31,34 @@ spv.debuginfo.hlsl.tese 60: String "HSOutput" 68: String "WorldPos" 78: String "DSOutput" - 85: String "@main" - 91: String "input" - 95: String "TessCoord" - 98: String "patch" - 107: String "output" - 118: String "uv1" - 121: String "int" - 137: String "uv2" - 160: String "n1" - 172: String "n2" - 194: String "pos1" - 206: String "pos2" - 218: String "pos" - 230: String "type.2d.image" - 231: String "@type.2d.image" - 236: String "displacementMapTexture" - 241: String "type.sampler" - 242: String "@type.sampler" - 246: String "displacementMapSampler" - 250: String "type.sampled.image" - 251: String "@type.sampled.image" - 265: String "modelview" - 270: String "lightPos" - 274: String "frustumPlanes" - 277: String "tessellatedEdgeSize" - 281: String "viewportDim" - 285: String "UBO" - 288: String "ubo" + 86: String "@main" + 92: String "input" + 96: String "TessCoord" + 99: String "patch" + 108: String "output" + 119: String "uv1" + 122: String "int" + 138: String "uv2" + 161: String "n1" + 173: String "n2" + 195: String "pos1" + 207: String "pos2" + 219: String "pos" + 231: String "type.2d.image" + 232: String "@type.2d.image" + 237: String "displacementMapTexture" + 242: String "type.sampler" + 243: String "@type.sampler" + 247: String "displacementMapSampler" + 251: String "type.sampled.image" + 252: String "@type.sampled.image" + 266: String "modelview" + 271: String "lightPos" + 275: String "frustumPlanes" + 278: String "tessellatedEdgeSize" + 282: String "viewportDim" + 286: String "UBO" + 289: String "ubo" Name 6 "main" Name 24 "ConstantsHSOutput" MemberName 24(ConstantsHSOutput) 0 "TessLevelOuter" @@ -79,84 +79,84 @@ spv.debuginfo.hlsl.tese Name 81 "input" Name 82 "TessCoord" Name 83 "patch" - Name 105 "output" - Name 116 "uv1" - Name 135 "uv2" - Name 158 "n1" - Name 170 "n2" - Name 192 "pos1" - Name 204 "pos2" - Name 216 "pos" - Name 234 "displacementMapTexture" - Name 244 "displacementMapSampler" - Name 263 "UBO" - MemberName 263(UBO) 0 "projection" - MemberName 263(UBO) 1 "modelview" - MemberName 263(UBO) 2 "lightPos" - MemberName 263(UBO) 3 "frustumPlanes" - MemberName 263(UBO) 4 "displacementFactor" - MemberName 263(UBO) 5 "tessellationFactor" - MemberName 263(UBO) 6 "viewportDim" - MemberName 263(UBO) 7 "tessellatedEdgeSize" - Name 286 "ubo" - MemberName 286(ubo) 0 "ubo" - Name 291 "" - Name 350 "input" - Name 352 "input.TessLevelOuter" - Name 367 "input.TessLevelInner" - Name 374 "TessCoord" - Name 376 "TessCoord" - Name 382 "patch" - Name 385 "patch.Pos" - Name 392 "patch.Normal" - Name 398 "patch.UV" - Name 430 "flattenTemp" - Name 432 "param" - Name 434 "param" - Name 438 "@entryPointOutput.Pos" - Name 442 "@entryPointOutput.Normal" - Name 446 "@entryPointOutput.UV" - Name 449 "@entryPointOutput.ViewVec" - Name 452 "@entryPointOutput.LightVec" - Name 455 "@entryPointOutput.EyePos" - Name 458 "@entryPointOutput.WorldPos" - Decorate 234(displacementMapTexture) DescriptorSet 0 - Decorate 234(displacementMapTexture) Binding 1 - Decorate 244(displacementMapSampler) DescriptorSet 0 - Decorate 244(displacementMapSampler) Binding 1 - Decorate 261 ArrayStride 16 - MemberDecorate 263(UBO) 0 RowMajor - MemberDecorate 263(UBO) 0 Offset 0 - MemberDecorate 263(UBO) 0 MatrixStride 16 - MemberDecorate 263(UBO) 1 RowMajor - MemberDecorate 263(UBO) 1 Offset 64 - MemberDecorate 263(UBO) 1 MatrixStride 16 - MemberDecorate 263(UBO) 2 Offset 128 - MemberDecorate 263(UBO) 3 Offset 144 - MemberDecorate 263(UBO) 4 Offset 240 - MemberDecorate 263(UBO) 5 Offset 244 - MemberDecorate 263(UBO) 6 Offset 248 - MemberDecorate 263(UBO) 7 Offset 256 - MemberDecorate 286(ubo) 0 Offset 0 - Decorate 286(ubo) Block - Decorate 291 DescriptorSet 0 - Decorate 291 Binding 0 - Decorate 352(input.TessLevelOuter) Patch - Decorate 352(input.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 367(input.TessLevelInner) Patch - Decorate 367(input.TessLevelInner) BuiltIn TessLevelInner - Decorate 376(TessCoord) Patch - Decorate 376(TessCoord) BuiltIn TessCoord - Decorate 385(patch.Pos) BuiltIn Position - Decorate 392(patch.Normal) Location 0 - Decorate 398(patch.UV) Location 1 - Decorate 438(@entryPointOutput.Pos) BuiltIn Position - Decorate 442(@entryPointOutput.Normal) Location 0 - Decorate 446(@entryPointOutput.UV) Location 1 - Decorate 449(@entryPointOutput.ViewVec) Location 2 - Decorate 452(@entryPointOutput.LightVec) Location 3 - Decorate 455(@entryPointOutput.EyePos) Location 4 - Decorate 458(@entryPointOutput.WorldPos) Location 5 + Name 106 "output" + Name 117 "uv1" + Name 136 "uv2" + Name 159 "n1" + Name 171 "n2" + Name 193 "pos1" + Name 205 "pos2" + Name 217 "pos" + Name 235 "displacementMapTexture" + Name 245 "displacementMapSampler" + Name 264 "UBO" + MemberName 264(UBO) 0 "projection" + MemberName 264(UBO) 1 "modelview" + MemberName 264(UBO) 2 "lightPos" + MemberName 264(UBO) 3 "frustumPlanes" + MemberName 264(UBO) 4 "displacementFactor" + MemberName 264(UBO) 5 "tessellationFactor" + MemberName 264(UBO) 6 "viewportDim" + MemberName 264(UBO) 7 "tessellatedEdgeSize" + Name 287 "ubo" + MemberName 287(ubo) 0 "ubo" + Name 292 "" + Name 351 "input" + Name 353 "input.TessLevelOuter" + Name 368 "input.TessLevelInner" + Name 375 "TessCoord" + Name 377 "TessCoord" + Name 383 "patch" + Name 386 "patch.Pos" + Name 393 "patch.Normal" + Name 399 "patch.UV" + Name 431 "flattenTemp" + Name 433 "param" + Name 435 "param" + Name 439 "@entryPointOutput.Pos" + Name 443 "@entryPointOutput.Normal" + Name 447 "@entryPointOutput.UV" + Name 450 "@entryPointOutput.ViewVec" + Name 453 "@entryPointOutput.LightVec" + Name 456 "@entryPointOutput.EyePos" + Name 459 "@entryPointOutput.WorldPos" + Decorate 235(displacementMapTexture) DescriptorSet 0 + Decorate 235(displacementMapTexture) Binding 1 + Decorate 245(displacementMapSampler) DescriptorSet 0 + Decorate 245(displacementMapSampler) Binding 1 + Decorate 262 ArrayStride 16 + MemberDecorate 264(UBO) 0 RowMajor + MemberDecorate 264(UBO) 0 Offset 0 + MemberDecorate 264(UBO) 0 MatrixStride 16 + MemberDecorate 264(UBO) 1 RowMajor + MemberDecorate 264(UBO) 1 Offset 64 + MemberDecorate 264(UBO) 1 MatrixStride 16 + MemberDecorate 264(UBO) 2 Offset 128 + MemberDecorate 264(UBO) 3 Offset 144 + MemberDecorate 264(UBO) 4 Offset 240 + MemberDecorate 264(UBO) 5 Offset 244 + MemberDecorate 264(UBO) 6 Offset 248 + MemberDecorate 264(UBO) 7 Offset 256 + MemberDecorate 287(ubo) 0 Offset 0 + Decorate 287(ubo) Block + Decorate 292 DescriptorSet 0 + Decorate 292 Binding 0 + Decorate 353(input.TessLevelOuter) Patch + Decorate 353(input.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 368(input.TessLevelInner) Patch + Decorate 368(input.TessLevelInner) BuiltIn TessLevelInner + Decorate 377(TessCoord) Patch + Decorate 377(TessCoord) BuiltIn TessCoord + Decorate 386(patch.Pos) BuiltIn Position + Decorate 393(patch.Normal) Location 0 + Decorate 399(patch.UV) Location 1 + Decorate 439(@entryPointOutput.Pos) BuiltIn Position + Decorate 443(@entryPointOutput.Normal) Location 0 + Decorate 447(@entryPointOutput.UV) Location 1 + Decorate 450(@entryPointOutput.ViewVec) Location 2 + Decorate 453(@entryPointOutput.LightVec) Location 3 + Decorate 456(@entryPointOutput.EyePos) Location 4 + Decorate 459(@entryPointOutput.WorldPos) Location 5 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -220,244 +220,245 @@ spv.debuginfo.hlsl.tese 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 78 36 27 16 16 37 78 16 17 64 67 71 73 74 75 76 79: TypeFunction 63(DSOutput) 39(ptr) 42(ptr) 61 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 77 34 41 59 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 85 80 27 16 16 37 85 17 16 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 34 27 16 16 86 18 36 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 95 41 27 16 16 86 18 21 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 98 59 27 16 16 86 18 17 - 103: 11(int) Constant 70 - 104: TypePointer Function 63(DSOutput) - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 107 77 27 103 16 86 18 - 109: 8(float) Constant 0 - 110: 43(fvec4) ConstantComposite 109 109 109 109 - 111: 45(fvec3) ConstantComposite 109 109 109 - 112: 40(fvec2) ConstantComposite 109 109 - 113:63(DSOutput) ConstantComposite 110 111 112 111 111 111 111 - 115: 11(int) Constant 71 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 118 41 27 115 16 86 18 - 120: TypeInt 32 1 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 121 14 18 16 - 123: 120(int) Constant 0 - 124: 120(int) Constant 2 - 126: 120(int) Constant 1 - 128: TypePointer Function 8(float) - 134: 11(int) Constant 72 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 137 41 27 134 16 86 18 - 139: 120(int) Constant 3 - 147: 11(int) Constant 73 - 156: 11(int) Constant 75 - 157: TypePointer Function 45(fvec3) - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 46 27 156 16 86 18 - 169: 11(int) Constant 76 - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 46 27 169 16 86 18 - 181: 11(int) Constant 77 - 190: 11(int) Constant 80 - 191: TypePointer Function 43(fvec4) - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 194 44 27 190 16 86 18 - 203: 11(int) Constant 81 - 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 206 44 27 203 16 86 18 - 215: 11(int) Constant 82 - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 218 44 27 215 16 86 18 - 227: 11(int) Constant 84 - 228: TypeImage 8(float) 2D sampled format:Unknown - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 230 16 27 227 16 37 231 232 17 - 233: TypePointer UniformConstant 228 -234(displacementMapTexture): 233(ptr) Variable UniformConstant - 237: 11(int) Constant 8 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 229 27 227 16 37 236 234(displacementMapTexture) 237 - 239: TypeSampler - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 241 36 27 227 16 37 242 232 17 - 243: TypePointer UniformConstant 239 -244(displacementMapSampler): 243(ptr) Variable UniformConstant - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 246 240 27 227 16 37 246 244(displacementMapSampler) 237 - 248: TypeSampledImage 228 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 250 16 27 227 16 37 251 232 17 - 257: TypeMatrix 43(fvec4) 4 - 259: TypeBool - 260: 259(bool) ConstantTrue - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 44 18 260 - 261: TypeArray 43(fvec4) 15 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 44 15 - 263(UBO): TypeStruct 257 257 43(fvec4) 261 8(float) 8(float) 40(fvec2) 8(float) - 266: 11(int) Constant 29 - 267: 11(int) Constant 20 - 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 265 258 27 266 267 16 16 17 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 265 258 27 266 267 16 16 17 - 271: 11(int) Constant 30 - 272: 11(int) Constant 17 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 270 44 27 271 272 16 16 17 - 275: 11(int) Constant 22 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 274 262 27 58 275 16 16 17 - 278: 11(int) Constant 27 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 10 27 54 278 16 16 17 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 10 27 54 278 16 16 17 - 282: 11(int) Constant 34 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 281 41 27 282 267 16 16 17 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 10 27 54 278 16 16 17 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 285 36 27 227 16 37 285 16 17 264 268 269 273 276 279 280 283 - 286(ubo): TypeStruct 263(UBO) - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 284 27 70 70 16 16 17 - 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 288 36 27 227 16 37 288 16 17 287 - 290: TypePointer Uniform 286(ubo) - 291: 290(ptr) Variable Uniform - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 289 27 227 16 37 1 291 237 - 293: 120(int) Constant 4 - 294: TypePointer Uniform 8(float) - 303: 11(int) Constant 86 - 305: TypePointer Uniform 257 - 314: 11(int) Constant 89 - 320: 11(int) Constant 90 - 321: TypePointer Uniform 43(fvec4) - 331: 11(int) Constant 91 - 332: 120(int) Constant 6 - 337: 11(int) Constant 92 - 338: 120(int) Constant 5 - 346: 11(int) Constant 93 - 351: TypePointer Input 19 -352(input.TessLevelOuter): 351(ptr) Variable Input - 353: TypePointer Input 8(float) - 366: TypePointer Input 22 -367(input.TessLevelInner): 366(ptr) Variable Input - 375: TypePointer Input 45(fvec3) - 376(TessCoord): 375(ptr) Variable Input - 381: TypePointer Function 61 - 383: TypeArray 43(fvec4) 18 - 384: TypePointer Input 383 - 385(patch.Pos): 384(ptr) Variable Input - 386: TypePointer Input 43(fvec4) - 390: TypeArray 45(fvec3) 18 - 391: TypePointer Input 390 -392(patch.Normal): 391(ptr) Variable Input - 396: TypeArray 40(fvec2) 18 - 397: TypePointer Input 396 - 398(patch.UV): 397(ptr) Variable Input - 399: TypePointer Input 40(fvec2) - 437: TypePointer Output 43(fvec4) -438(@entryPointOutput.Pos): 437(ptr) Variable Output - 441: TypePointer Output 45(fvec3) -442(@entryPointOutput.Normal): 441(ptr) Variable Output - 445: TypePointer Output 40(fvec2) -446(@entryPointOutput.UV): 445(ptr) Variable Output -449(@entryPointOutput.ViewVec): 441(ptr) Variable Output -452(@entryPointOutput.LightVec): 441(ptr) Variable Output -455(@entryPointOutput.EyePos): 441(ptr) Variable Output -458(@entryPointOutput.WorldPos): 441(ptr) Variable Output + 88: 11(int) Constant 68 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 86 80 27 88 16 37 86 17 88 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 92 34 27 88 16 87 18 36 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 41 27 88 16 87 18 21 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 59 27 88 16 87 18 17 + 104: 11(int) Constant 70 + 105: TypePointer Function 63(DSOutput) + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 108 77 27 104 16 87 18 + 110: 8(float) Constant 0 + 111: 43(fvec4) ConstantComposite 110 110 110 110 + 112: 45(fvec3) ConstantComposite 110 110 110 + 113: 40(fvec2) ConstantComposite 110 110 + 114:63(DSOutput) ConstantComposite 111 112 113 112 112 112 112 + 116: 11(int) Constant 71 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 119 41 27 116 16 87 18 + 121: TypeInt 32 1 + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 122 14 18 16 + 124: 121(int) Constant 0 + 125: 121(int) Constant 2 + 127: 121(int) Constant 1 + 129: TypePointer Function 8(float) + 135: 11(int) Constant 72 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 138 41 27 135 16 87 18 + 140: 121(int) Constant 3 + 148: 11(int) Constant 73 + 157: 11(int) Constant 75 + 158: TypePointer Function 45(fvec3) + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 46 27 157 16 87 18 + 170: 11(int) Constant 76 + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 173 46 27 170 16 87 18 + 182: 11(int) Constant 77 + 191: 11(int) Constant 80 + 192: TypePointer Function 43(fvec4) + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 195 44 27 191 16 87 18 + 204: 11(int) Constant 81 + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 207 44 27 204 16 87 18 + 216: 11(int) Constant 82 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 219 44 27 216 16 87 18 + 228: 11(int) Constant 84 + 229: TypeImage 8(float) 2D sampled format:Unknown + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 231 16 27 228 16 37 232 233 17 + 234: TypePointer UniformConstant 229 +235(displacementMapTexture): 234(ptr) Variable UniformConstant + 238: 11(int) Constant 8 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 237 230 27 228 16 37 237 235(displacementMapTexture) 238 + 240: TypeSampler + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 242 36 27 228 16 37 243 233 17 + 244: TypePointer UniformConstant 240 +245(displacementMapSampler): 244(ptr) Variable UniformConstant + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 247 241 27 228 16 37 247 245(displacementMapSampler) 238 + 249: TypeSampledImage 229 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 251 16 27 228 16 37 252 233 17 + 258: TypeMatrix 43(fvec4) 4 + 260: TypeBool + 261: 260(bool) ConstantTrue + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 44 18 261 + 262: TypeArray 43(fvec4) 15 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 44 15 + 264(UBO): TypeStruct 258 258 43(fvec4) 262 8(float) 8(float) 40(fvec2) 8(float) + 267: 11(int) Constant 29 + 268: 11(int) Constant 20 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 259 27 267 268 16 16 17 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 259 27 267 268 16 16 17 + 272: 11(int) Constant 30 + 273: 11(int) Constant 17 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 271 44 27 272 273 16 16 17 + 276: 11(int) Constant 22 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 275 263 27 58 276 16 16 17 + 279: 11(int) Constant 27 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 10 27 54 279 16 16 17 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 10 27 54 279 16 16 17 + 283: 11(int) Constant 34 + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 282 41 27 283 268 16 16 17 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 10 27 54 279 16 16 17 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 286 36 27 228 16 37 286 16 17 265 269 270 274 277 280 281 284 + 287(ubo): TypeStruct 264(UBO) + 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 285 27 70 70 16 16 17 + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 289 36 27 228 16 37 289 16 17 288 + 291: TypePointer Uniform 287(ubo) + 292: 291(ptr) Variable Uniform + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 290 27 228 16 37 1 292 238 + 294: 121(int) Constant 4 + 295: TypePointer Uniform 8(float) + 304: 11(int) Constant 86 + 306: TypePointer Uniform 258 + 315: 11(int) Constant 89 + 321: 11(int) Constant 90 + 322: TypePointer Uniform 43(fvec4) + 332: 11(int) Constant 91 + 333: 121(int) Constant 6 + 338: 11(int) Constant 92 + 339: 121(int) Constant 5 + 347: 11(int) Constant 93 + 352: TypePointer Input 19 +353(input.TessLevelOuter): 352(ptr) Variable Input + 354: TypePointer Input 8(float) + 367: TypePointer Input 22 +368(input.TessLevelInner): 367(ptr) Variable Input + 376: TypePointer Input 45(fvec3) + 377(TessCoord): 376(ptr) Variable Input + 382: TypePointer Function 61 + 384: TypeArray 43(fvec4) 18 + 385: TypePointer Input 384 + 386(patch.Pos): 385(ptr) Variable Input + 387: TypePointer Input 43(fvec4) + 391: TypeArray 45(fvec3) 18 + 392: TypePointer Input 391 +393(patch.Normal): 392(ptr) Variable Input + 397: TypeArray 40(fvec2) 18 + 398: TypePointer Input 397 + 399(patch.UV): 398(ptr) Variable Input + 400: TypePointer Input 40(fvec2) + 438: TypePointer Output 43(fvec4) +439(@entryPointOutput.Pos): 438(ptr) Variable Output + 442: TypePointer Output 45(fvec3) +443(@entryPointOutput.Normal): 442(ptr) Variable Output + 446: TypePointer Output 40(fvec2) +447(@entryPointOutput.UV): 446(ptr) Variable Output +450(@entryPointOutput.ViewVec): 442(ptr) Variable Output +453(@entryPointOutput.LightVec): 442(ptr) Variable Output +456(@entryPointOutput.EyePos): 442(ptr) Variable Output +459(@entryPointOutput.WorldPos): 442(ptr) Variable Output Line 1 68 1 6(main): 4 Function None 5 7: Label - 350(input): 39(ptr) Variable Function - 374(TessCoord): 42(ptr) Variable Function - 382(patch): 381(ptr) Variable Function -430(flattenTemp): 104(ptr) Variable Function - 432(param): 39(ptr) Variable Function - 434(param): 42(ptr) Variable Function + 351(input): 39(ptr) Variable Function + 375(TessCoord): 42(ptr) Variable Function + 383(patch): 382(ptr) Variable Function +431(flattenTemp): 105(ptr) Variable Function + 433(param): 39(ptr) Variable Function + 435(param): 42(ptr) Variable Function Line 1 68 0 - 354: 353(ptr) AccessChain 352(input.TessLevelOuter) 123 - 355: 8(float) Load 354 - 356: 128(ptr) AccessChain 350(input) 123 123 - Store 356 355 - 357: 353(ptr) AccessChain 352(input.TessLevelOuter) 126 - 358: 8(float) Load 357 - 359: 128(ptr) AccessChain 350(input) 123 126 - Store 359 358 - 360: 353(ptr) AccessChain 352(input.TessLevelOuter) 124 - 361: 8(float) Load 360 - 362: 128(ptr) AccessChain 350(input) 123 124 - Store 362 361 - 363: 353(ptr) AccessChain 352(input.TessLevelOuter) 139 - 364: 8(float) Load 363 - 365: 128(ptr) AccessChain 350(input) 123 139 - Store 365 364 - 368: 353(ptr) AccessChain 367(input.TessLevelInner) 123 - 369: 8(float) Load 368 - 370: 128(ptr) AccessChain 350(input) 126 123 - Store 370 369 - 371: 353(ptr) AccessChain 367(input.TessLevelInner) 126 - 372: 8(float) Load 371 - 373: 128(ptr) AccessChain 350(input) 126 126 - Store 373 372 - 377: 45(fvec3) Load 376(TessCoord) - 378: 8(float) CompositeExtract 377 0 - 379: 8(float) CompositeExtract 377 1 - 380: 40(fvec2) CompositeConstruct 378 379 - Store 374(TessCoord) 380 - 387: 386(ptr) AccessChain 385(patch.Pos) 123 - 388: 43(fvec4) Load 387 - 389: 191(ptr) AccessChain 382(patch) 123 123 - Store 389 388 - 393: 375(ptr) AccessChain 392(patch.Normal) 123 - 394: 45(fvec3) Load 393 - 395: 157(ptr) AccessChain 382(patch) 123 126 - Store 395 394 - 400: 399(ptr) AccessChain 398(patch.UV) 123 - 401: 40(fvec2) Load 400 - 402: 42(ptr) AccessChain 382(patch) 123 124 - Store 402 401 - 403: 386(ptr) AccessChain 385(patch.Pos) 126 - 404: 43(fvec4) Load 403 - 405: 191(ptr) AccessChain 382(patch) 126 123 - Store 405 404 - 406: 375(ptr) AccessChain 392(patch.Normal) 126 - 407: 45(fvec3) Load 406 - 408: 157(ptr) AccessChain 382(patch) 126 126 - Store 408 407 - 409: 399(ptr) AccessChain 398(patch.UV) 126 - 410: 40(fvec2) Load 409 - 411: 42(ptr) AccessChain 382(patch) 126 124 - Store 411 410 - 412: 386(ptr) AccessChain 385(patch.Pos) 124 - 413: 43(fvec4) Load 412 - 414: 191(ptr) AccessChain 382(patch) 124 123 - Store 414 413 - 415: 375(ptr) AccessChain 392(patch.Normal) 124 - 416: 45(fvec3) Load 415 - 417: 157(ptr) AccessChain 382(patch) 124 126 - Store 417 416 - 418: 399(ptr) AccessChain 398(patch.UV) 124 - 419: 40(fvec2) Load 418 - 420: 42(ptr) AccessChain 382(patch) 124 124 - Store 420 419 - 421: 386(ptr) AccessChain 385(patch.Pos) 139 - 422: 43(fvec4) Load 421 - 423: 191(ptr) AccessChain 382(patch) 139 123 - Store 423 422 - 424: 375(ptr) AccessChain 392(patch.Normal) 139 - 425: 45(fvec3) Load 424 - 426: 157(ptr) AccessChain 382(patch) 139 126 - Store 426 425 - 427: 399(ptr) AccessChain 398(patch.UV) 139 - 428: 40(fvec2) Load 427 - 429: 42(ptr) AccessChain 382(patch) 139 124 - Store 429 428 - 431: 61 Load 382(patch) - 433:24(ConstantsHSOutput) Load 350(input) - Store 432(param) 433 - 435: 40(fvec2) Load 374(TessCoord) - Store 434(param) 435 - 436:63(DSOutput) FunctionCall 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 432(param) 434(param) 431 - Store 430(flattenTemp) 436 - 439: 191(ptr) AccessChain 430(flattenTemp) 123 - 440: 43(fvec4) Load 439 - Store 438(@entryPointOutput.Pos) 440 - 443: 157(ptr) AccessChain 430(flattenTemp) 126 - 444: 45(fvec3) Load 443 - Store 442(@entryPointOutput.Normal) 444 - 447: 42(ptr) AccessChain 430(flattenTemp) 124 - 448: 40(fvec2) Load 447 - Store 446(@entryPointOutput.UV) 448 - 450: 157(ptr) AccessChain 430(flattenTemp) 139 - 451: 45(fvec3) Load 450 - Store 449(@entryPointOutput.ViewVec) 451 - 453: 157(ptr) AccessChain 430(flattenTemp) 293 - 454: 45(fvec3) Load 453 - Store 452(@entryPointOutput.LightVec) 454 - 456: 157(ptr) AccessChain 430(flattenTemp) 338 - 457: 45(fvec3) Load 456 - Store 455(@entryPointOutput.EyePos) 457 - 459: 157(ptr) AccessChain 430(flattenTemp) 332 - 460: 45(fvec3) Load 459 - Store 458(@entryPointOutput.WorldPos) 460 + 355: 354(ptr) AccessChain 353(input.TessLevelOuter) 124 + 356: 8(float) Load 355 + 357: 129(ptr) AccessChain 351(input) 124 124 + Store 357 356 + 358: 354(ptr) AccessChain 353(input.TessLevelOuter) 127 + 359: 8(float) Load 358 + 360: 129(ptr) AccessChain 351(input) 124 127 + Store 360 359 + 361: 354(ptr) AccessChain 353(input.TessLevelOuter) 125 + 362: 8(float) Load 361 + 363: 129(ptr) AccessChain 351(input) 124 125 + Store 363 362 + 364: 354(ptr) AccessChain 353(input.TessLevelOuter) 140 + 365: 8(float) Load 364 + 366: 129(ptr) AccessChain 351(input) 124 140 + Store 366 365 + 369: 354(ptr) AccessChain 368(input.TessLevelInner) 124 + 370: 8(float) Load 369 + 371: 129(ptr) AccessChain 351(input) 127 124 + Store 371 370 + 372: 354(ptr) AccessChain 368(input.TessLevelInner) 127 + 373: 8(float) Load 372 + 374: 129(ptr) AccessChain 351(input) 127 127 + Store 374 373 + 378: 45(fvec3) Load 377(TessCoord) + 379: 8(float) CompositeExtract 378 0 + 380: 8(float) CompositeExtract 378 1 + 381: 40(fvec2) CompositeConstruct 379 380 + Store 375(TessCoord) 381 + 388: 387(ptr) AccessChain 386(patch.Pos) 124 + 389: 43(fvec4) Load 388 + 390: 192(ptr) AccessChain 383(patch) 124 124 + Store 390 389 + 394: 376(ptr) AccessChain 393(patch.Normal) 124 + 395: 45(fvec3) Load 394 + 396: 158(ptr) AccessChain 383(patch) 124 127 + Store 396 395 + 401: 400(ptr) AccessChain 399(patch.UV) 124 + 402: 40(fvec2) Load 401 + 403: 42(ptr) AccessChain 383(patch) 124 125 + Store 403 402 + 404: 387(ptr) AccessChain 386(patch.Pos) 127 + 405: 43(fvec4) Load 404 + 406: 192(ptr) AccessChain 383(patch) 127 124 + Store 406 405 + 407: 376(ptr) AccessChain 393(patch.Normal) 127 + 408: 45(fvec3) Load 407 + 409: 158(ptr) AccessChain 383(patch) 127 127 + Store 409 408 + 410: 400(ptr) AccessChain 399(patch.UV) 127 + 411: 40(fvec2) Load 410 + 412: 42(ptr) AccessChain 383(patch) 127 125 + Store 412 411 + 413: 387(ptr) AccessChain 386(patch.Pos) 125 + 414: 43(fvec4) Load 413 + 415: 192(ptr) AccessChain 383(patch) 125 124 + Store 415 414 + 416: 376(ptr) AccessChain 393(patch.Normal) 125 + 417: 45(fvec3) Load 416 + 418: 158(ptr) AccessChain 383(patch) 125 127 + Store 418 417 + 419: 400(ptr) AccessChain 399(patch.UV) 125 + 420: 40(fvec2) Load 419 + 421: 42(ptr) AccessChain 383(patch) 125 125 + Store 421 420 + 422: 387(ptr) AccessChain 386(patch.Pos) 140 + 423: 43(fvec4) Load 422 + 424: 192(ptr) AccessChain 383(patch) 140 124 + Store 424 423 + 425: 376(ptr) AccessChain 393(patch.Normal) 140 + 426: 45(fvec3) Load 425 + 427: 158(ptr) AccessChain 383(patch) 140 127 + Store 427 426 + 428: 400(ptr) AccessChain 399(patch.UV) 140 + 429: 40(fvec2) Load 428 + 430: 42(ptr) AccessChain 383(patch) 140 125 + Store 430 429 + 432: 61 Load 383(patch) + 434:24(ConstantsHSOutput) Load 351(input) + Store 433(param) 434 + 436: 40(fvec2) Load 375(TessCoord) + Store 435(param) 436 + 437:63(DSOutput) FunctionCall 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 433(param) 435(param) 432 + Store 431(flattenTemp) 437 + 440: 192(ptr) AccessChain 431(flattenTemp) 124 + 441: 43(fvec4) Load 440 + Store 439(@entryPointOutput.Pos) 441 + 444: 158(ptr) AccessChain 431(flattenTemp) 127 + 445: 45(fvec3) Load 444 + Store 443(@entryPointOutput.Normal) 445 + 448: 42(ptr) AccessChain 431(flattenTemp) 125 + 449: 40(fvec2) Load 448 + Store 447(@entryPointOutput.UV) 449 + 451: 158(ptr) AccessChain 431(flattenTemp) 140 + 452: 45(fvec3) Load 451 + Store 450(@entryPointOutput.ViewVec) 452 + 454: 158(ptr) AccessChain 431(flattenTemp) 294 + 455: 45(fvec3) Load 454 + Store 453(@entryPointOutput.LightVec) 455 + 457: 158(ptr) AccessChain 431(flattenTemp) 339 + 458: 45(fvec3) Load 457 + Store 456(@entryPointOutput.EyePos) 458 + 460: 158(ptr) AccessChain 431(flattenTemp) 333 + 461: 45(fvec3) Load 460 + Store 459(@entryPointOutput.WorldPos) 461 Return FunctionEnd Line 1 68 1 @@ -465,162 +466,162 @@ spv.debuginfo.hlsl.tese 81(input): 39(ptr) FunctionParameter 82(TessCoord): 42(ptr) FunctionParameter 83(patch): 61 FunctionParameter - 87: Label - 105(output): 104(ptr) Variable Function - 116(uv1): 42(ptr) Variable Function - 135(uv2): 42(ptr) Variable Function - 158(n1): 157(ptr) Variable Function - 170(n2): 157(ptr) Variable Function - 192(pos1): 191(ptr) Variable Function - 204(pos2): 191(ptr) Variable Function - 216(pos): 191(ptr) Variable Function - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 86 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 16 16 16 16 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 81(input) 93 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 94 82(TessCoord) 93 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 97 83(patch) 93 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 86 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 86 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 103 103 16 16 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 106 105(output) 93 - Store 105(output) 113 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 115 115 16 16 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 117 116(uv1) 93 - 125: 40(fvec2) CompositeExtract 83(patch) 0 2 - 127: 40(fvec2) CompositeExtract 83(patch) 1 2 - 129: 128(ptr) AccessChain 82(TessCoord) 16 - 130: 8(float) Load 129 - 131: 40(fvec2) CompositeConstruct 130 130 - 132: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 125 127 131 - Store 116(uv1) 132 - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 134 134 16 16 - 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 135(uv2) 93 - 140: 40(fvec2) CompositeExtract 83(patch) 3 2 - 141: 40(fvec2) CompositeExtract 83(patch) 2 2 - 142: 128(ptr) AccessChain 82(TessCoord) 16 - 143: 8(float) Load 142 - 144: 40(fvec2) CompositeConstruct 143 143 - 145: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 140 141 144 - Store 135(uv2) 145 - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 147 147 16 16 - 148: 40(fvec2) Load 116(uv1) - 149: 40(fvec2) Load 135(uv2) - 150: 128(ptr) AccessChain 82(TessCoord) 36 - 151: 8(float) Load 150 - 152: 40(fvec2) CompositeConstruct 151 151 - 153: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 148 149 152 - 154: 42(ptr) AccessChain 105(output) 124 - Store 154 153 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 156 156 16 16 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(n1) 93 - 162: 45(fvec3) CompositeExtract 83(patch) 0 1 - 163: 45(fvec3) CompositeExtract 83(patch) 1 1 - 164: 128(ptr) AccessChain 82(TessCoord) 16 - 165: 8(float) Load 164 - 166: 45(fvec3) CompositeConstruct 165 165 165 - 167: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 162 163 166 - Store 158(n1) 167 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 169 169 16 16 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 171 170(n2) 93 - 174: 45(fvec3) CompositeExtract 83(patch) 3 1 - 175: 45(fvec3) CompositeExtract 83(patch) 2 1 - 176: 128(ptr) AccessChain 82(TessCoord) 16 - 177: 8(float) Load 176 - 178: 45(fvec3) CompositeConstruct 177 177 177 - 179: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 174 175 178 - Store 170(n2) 179 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 181 181 16 16 - 182: 45(fvec3) Load 158(n1) - 183: 45(fvec3) Load 170(n2) - 184: 128(ptr) AccessChain 82(TessCoord) 36 - 185: 8(float) Load 184 - 186: 45(fvec3) CompositeConstruct 185 185 185 - 187: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 182 183 186 - 188: 157(ptr) AccessChain 105(output) 126 - Store 188 187 - 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 190 190 16 16 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 193 192(pos1) 93 - 196: 43(fvec4) CompositeExtract 83(patch) 0 0 - 197: 43(fvec4) CompositeExtract 83(patch) 1 0 - 198: 128(ptr) AccessChain 82(TessCoord) 16 - 199: 8(float) Load 198 - 200: 43(fvec4) CompositeConstruct 199 199 199 199 - 201: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 196 197 200 - Store 192(pos1) 201 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 203 203 16 16 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 205 204(pos2) 93 - 208: 43(fvec4) CompositeExtract 83(patch) 3 0 - 209: 43(fvec4) CompositeExtract 83(patch) 2 0 - 210: 128(ptr) AccessChain 82(TessCoord) 16 - 211: 8(float) Load 210 - 212: 43(fvec4) CompositeConstruct 211 211 211 211 - 213: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 208 209 212 - Store 204(pos2) 213 - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 215 215 16 16 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 217 216(pos) 93 - 220: 43(fvec4) Load 192(pos1) - 221: 43(fvec4) Load 204(pos2) - 222: 128(ptr) AccessChain 82(TessCoord) 36 - 223: 8(float) Load 222 - 224: 43(fvec4) CompositeConstruct 223 223 223 223 - 225: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 220 221 224 - Store 216(pos) 225 - 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 227 227 16 16 - 238: 228 Load 234(displacementMapTexture) - 247: 239 Load 244(displacementMapSampler) - 252: 248 SampledImage 238 247 - 253: 42(ptr) AccessChain 105(output) 124 - 254: 40(fvec2) Load 253 - 255: 43(fvec4) ImageSampleExplicitLod 252 254 Lod 109 - 256: 8(float) CompositeExtract 255 0 - 295: 294(ptr) AccessChain 291 123 293 - 296: 8(float) Load 295 - 297: 8(float) FMul 256 296 - 298: 128(ptr) AccessChain 216(pos) 36 - 299: 8(float) Load 298 - 300: 8(float) FSub 299 297 - 301: 128(ptr) AccessChain 216(pos) 36 - Store 301 300 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 303 303 16 16 - 304: 43(fvec4) Load 216(pos) - 306: 305(ptr) AccessChain 291 123 126 - 307: 257 Load 306 - 308: 43(fvec4) VectorTimesMatrix 304 307 - 309: 305(ptr) AccessChain 291 123 123 - 310: 257 Load 309 - 311: 43(fvec4) VectorTimesMatrix 308 310 - 312: 191(ptr) AccessChain 105(output) 123 - Store 312 311 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 314 314 16 16 - 315: 43(fvec4) Load 216(pos) - 316: 45(fvec3) VectorShuffle 315 315 0 1 2 - 317: 45(fvec3) FNegate 316 - 318: 157(ptr) AccessChain 105(output) 139 - Store 318 317 - 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 320 320 16 16 - 322: 321(ptr) AccessChain 291 123 124 - 323: 43(fvec4) Load 322 - 324: 45(fvec3) VectorShuffle 323 323 0 1 2 - 325: 157(ptr) AccessChain 105(output) 139 - 326: 45(fvec3) Load 325 - 327: 45(fvec3) FAdd 324 326 - 328: 45(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 327 - 329: 157(ptr) AccessChain 105(output) 293 - Store 329 328 - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 331 331 16 16 - 333: 43(fvec4) Load 216(pos) - 334: 45(fvec3) VectorShuffle 333 333 0 1 2 - 335: 157(ptr) AccessChain 105(output) 332 - Store 335 334 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 337 337 16 16 - 339: 43(fvec4) Load 216(pos) - 340: 305(ptr) AccessChain 291 123 126 - 341: 257 Load 340 - 342: 43(fvec4) VectorTimesMatrix 339 341 - 343: 45(fvec3) VectorShuffle 342 342 0 1 2 - 344: 157(ptr) AccessChain 105(output) 338 - Store 344 343 - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 346 346 16 16 - 347:63(DSOutput) Load 105(output) - ReturnValue 347 + 85: Label + 106(output): 105(ptr) Variable Function + 117(uv1): 42(ptr) Variable Function + 136(uv2): 42(ptr) Variable Function + 159(n1): 158(ptr) Variable Function + 171(n2): 158(ptr) Variable Function + 193(pos1): 192(ptr) Variable Function + 205(pos2): 192(ptr) Variable Function + 217(pos): 192(ptr) Variable Function + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 87 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 88 88 16 16 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 91 81(input) 94 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 82(TessCoord) 94 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 83(patch) 94 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 87 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 87 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 104 104 16 16 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 107 106(output) 94 + Store 106(output) 114 + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 116 116 16 16 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 118 117(uv1) 94 + 126: 40(fvec2) CompositeExtract 83(patch) 0 2 + 128: 40(fvec2) CompositeExtract 83(patch) 1 2 + 130: 129(ptr) AccessChain 82(TessCoord) 16 + 131: 8(float) Load 130 + 132: 40(fvec2) CompositeConstruct 131 131 + 133: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 126 128 132 + Store 117(uv1) 133 + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 135 135 16 16 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 137 136(uv2) 94 + 141: 40(fvec2) CompositeExtract 83(patch) 3 2 + 142: 40(fvec2) CompositeExtract 83(patch) 2 2 + 143: 129(ptr) AccessChain 82(TessCoord) 16 + 144: 8(float) Load 143 + 145: 40(fvec2) CompositeConstruct 144 144 + 146: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 141 142 145 + Store 136(uv2) 146 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 148 148 16 16 + 149: 40(fvec2) Load 117(uv1) + 150: 40(fvec2) Load 136(uv2) + 151: 129(ptr) AccessChain 82(TessCoord) 36 + 152: 8(float) Load 151 + 153: 40(fvec2) CompositeConstruct 152 152 + 154: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 149 150 153 + 155: 42(ptr) AccessChain 106(output) 125 + Store 155 154 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 157 157 16 16 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(n1) 94 + 163: 45(fvec3) CompositeExtract 83(patch) 0 1 + 164: 45(fvec3) CompositeExtract 83(patch) 1 1 + 165: 129(ptr) AccessChain 82(TessCoord) 16 + 166: 8(float) Load 165 + 167: 45(fvec3) CompositeConstruct 166 166 166 + 168: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 163 164 167 + Store 159(n1) 168 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 170 170 16 16 + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 172 171(n2) 94 + 175: 45(fvec3) CompositeExtract 83(patch) 3 1 + 176: 45(fvec3) CompositeExtract 83(patch) 2 1 + 177: 129(ptr) AccessChain 82(TessCoord) 16 + 178: 8(float) Load 177 + 179: 45(fvec3) CompositeConstruct 178 178 178 + 180: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 175 176 179 + Store 171(n2) 180 + 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 182 182 16 16 + 183: 45(fvec3) Load 159(n1) + 184: 45(fvec3) Load 171(n2) + 185: 129(ptr) AccessChain 82(TessCoord) 36 + 186: 8(float) Load 185 + 187: 45(fvec3) CompositeConstruct 186 186 186 + 188: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 183 184 187 + 189: 158(ptr) AccessChain 106(output) 127 + Store 189 188 + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 191 191 16 16 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 194 193(pos1) 94 + 197: 43(fvec4) CompositeExtract 83(patch) 0 0 + 198: 43(fvec4) CompositeExtract 83(patch) 1 0 + 199: 129(ptr) AccessChain 82(TessCoord) 16 + 200: 8(float) Load 199 + 201: 43(fvec4) CompositeConstruct 200 200 200 200 + 202: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 197 198 201 + Store 193(pos1) 202 + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 204 204 16 16 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 206 205(pos2) 94 + 209: 43(fvec4) CompositeExtract 83(patch) 3 0 + 210: 43(fvec4) CompositeExtract 83(patch) 2 0 + 211: 129(ptr) AccessChain 82(TessCoord) 16 + 212: 8(float) Load 211 + 213: 43(fvec4) CompositeConstruct 212 212 212 212 + 214: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 209 210 213 + Store 205(pos2) 214 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 216 216 16 16 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 218 217(pos) 94 + 221: 43(fvec4) Load 193(pos1) + 222: 43(fvec4) Load 205(pos2) + 223: 129(ptr) AccessChain 82(TessCoord) 36 + 224: 8(float) Load 223 + 225: 43(fvec4) CompositeConstruct 224 224 224 224 + 226: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 221 222 225 + Store 217(pos) 226 + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 228 228 16 16 + 239: 229 Load 235(displacementMapTexture) + 248: 240 Load 245(displacementMapSampler) + 253: 249 SampledImage 239 248 + 254: 42(ptr) AccessChain 106(output) 125 + 255: 40(fvec2) Load 254 + 256: 43(fvec4) ImageSampleExplicitLod 253 255 Lod 110 + 257: 8(float) CompositeExtract 256 0 + 296: 295(ptr) AccessChain 292 124 294 + 297: 8(float) Load 296 + 298: 8(float) FMul 257 297 + 299: 129(ptr) AccessChain 217(pos) 36 + 300: 8(float) Load 299 + 301: 8(float) FSub 300 298 + 302: 129(ptr) AccessChain 217(pos) 36 + Store 302 301 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 304 304 16 16 + 305: 43(fvec4) Load 217(pos) + 307: 306(ptr) AccessChain 292 124 127 + 308: 258 Load 307 + 309: 43(fvec4) VectorTimesMatrix 305 308 + 310: 306(ptr) AccessChain 292 124 124 + 311: 258 Load 310 + 312: 43(fvec4) VectorTimesMatrix 309 311 + 313: 192(ptr) AccessChain 106(output) 124 + Store 313 312 + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 315 315 16 16 + 316: 43(fvec4) Load 217(pos) + 317: 45(fvec3) VectorShuffle 316 316 0 1 2 + 318: 45(fvec3) FNegate 317 + 319: 158(ptr) AccessChain 106(output) 140 + Store 319 318 + 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 321 321 16 16 + 323: 322(ptr) AccessChain 292 124 125 + 324: 43(fvec4) Load 323 + 325: 45(fvec3) VectorShuffle 324 324 0 1 2 + 326: 158(ptr) AccessChain 106(output) 140 + 327: 45(fvec3) Load 326 + 328: 45(fvec3) FAdd 325 327 + 329: 45(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 328 + 330: 158(ptr) AccessChain 106(output) 294 + Store 330 329 + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 332 332 16 16 + 334: 43(fvec4) Load 217(pos) + 335: 45(fvec3) VectorShuffle 334 334 0 1 2 + 336: 158(ptr) AccessChain 106(output) 333 + Store 336 335 + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 338 338 16 16 + 340: 43(fvec4) Load 217(pos) + 341: 306(ptr) AccessChain 292 124 127 + 342: 258 Load 341 + 343: 43(fvec4) VectorTimesMatrix 340 342 + 344: 45(fvec3) VectorShuffle 343 343 0 1 2 + 345: 158(ptr) AccessChain 106(output) 339 + Store 345 344 + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 347 347 16 16 + 348:63(DSOutput) Load 106(output) + ReturnValue 348 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 94431eddaa..b436bc83dd 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 495 +// Id's are bound by 496 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 6 "main" 444 447 451 454 457 460 464 468 476 480 483 486 489 492 + EntryPoint Vertex 6 "main" 445 448 452 455 458 461 465 469 477 481 484 487 490 493 1: String "" 9: String "float" 12: String "uint" @@ -30,24 +30,24 @@ spv.debuginfo.hlsl.vert 60: String "Pos" 64: String "LightVec" 71: String "VSOutput" - 76: String "@main" - 82: String "input" - 92: String "output" - 125: String "s" - 136: String "modelview" - 141: String "lightPos" - 145: String "globSpeed" - 149: String "UBO" - 152: String "ubo" - 169: String "c" - 184: String "mx" - 219: String "my" - 253: String "mz" - 273: String "rotMat" - 302: String "gRotMat" - 329: String "locPos" - 343: String "pos" - 408: String "lPos" + 77: String "@main" + 83: String "input" + 93: String "output" + 126: String "s" + 137: String "modelview" + 142: String "lightPos" + 146: String "globSpeed" + 150: String "UBO" + 153: String "ubo" + 170: String "c" + 185: String "mx" + 220: String "my" + 254: String "mz" + 274: String "rotMat" + 303: String "gRotMat" + 330: String "locPos" + 344: String "pos" + 409: String "lPos" Name 6 "main" Name 27 "VSInput" MemberName 27(VSInput) 0 "Pos" @@ -67,70 +67,70 @@ spv.debuginfo.hlsl.vert MemberName 58(VSOutput) 5 "LightVec" Name 75 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" Name 74 "input" - Name 90 "output" - Name 123 "s" - Name 134 "UBO" - MemberName 134(UBO) 0 "projection" - MemberName 134(UBO) 1 "modelview" - MemberName 134(UBO) 2 "lightPos" - MemberName 134(UBO) 3 "locSpeed" - MemberName 134(UBO) 4 "globSpeed" - Name 150 "ubo" - MemberName 150(ubo) 0 "ubo" - Name 156 "" - Name 167 "c" - Name 182 "mx" - Name 217 "my" - Name 251 "mz" - Name 271 "rotMat" - Name 300 "gRotMat" - Name 327 "locPos" - Name 341 "pos" - Name 406 "lPos" - Name 442 "input" - Name 444 "input.Pos" - Name 447 "input.Normal" - Name 451 "input.UV" - Name 454 "input.Color" - Name 457 "input.instancePos" - Name 460 "input.instanceRot" - Name 464 "input.instanceScale" - Name 468 "input.instanceTexIndex" - Name 471 "flattenTemp" - Name 472 "param" - Name 476 "@entryPointOutput.Pos" - Name 480 "@entryPointOutput.Normal" - Name 483 "@entryPointOutput.Color" - Name 486 "@entryPointOutput.UV" - Name 489 "@entryPointOutput.ViewVec" - Name 492 "@entryPointOutput.LightVec" - MemberDecorate 134(UBO) 0 RowMajor - MemberDecorate 134(UBO) 0 Offset 0 - MemberDecorate 134(UBO) 0 MatrixStride 16 - MemberDecorate 134(UBO) 1 RowMajor - MemberDecorate 134(UBO) 1 Offset 64 - MemberDecorate 134(UBO) 1 MatrixStride 16 - MemberDecorate 134(UBO) 2 Offset 128 - MemberDecorate 134(UBO) 3 Offset 144 - MemberDecorate 134(UBO) 4 Offset 148 - MemberDecorate 150(ubo) 0 Offset 0 - Decorate 150(ubo) Block - Decorate 156 DescriptorSet 0 - Decorate 156 Binding 0 - Decorate 444(input.Pos) Location 0 - Decorate 447(input.Normal) Location 1 - Decorate 451(input.UV) Location 2 - Decorate 454(input.Color) Location 3 - Decorate 457(input.instancePos) Location 4 - Decorate 460(input.instanceRot) Location 5 - Decorate 464(input.instanceScale) Location 6 - Decorate 468(input.instanceTexIndex) Location 7 - Decorate 476(@entryPointOutput.Pos) BuiltIn Position - Decorate 480(@entryPointOutput.Normal) Location 0 - Decorate 483(@entryPointOutput.Color) Location 1 - Decorate 486(@entryPointOutput.UV) Location 2 - Decorate 489(@entryPointOutput.ViewVec) Location 3 - Decorate 492(@entryPointOutput.LightVec) Location 4 + Name 91 "output" + Name 124 "s" + Name 135 "UBO" + MemberName 135(UBO) 0 "projection" + MemberName 135(UBO) 1 "modelview" + MemberName 135(UBO) 2 "lightPos" + MemberName 135(UBO) 3 "locSpeed" + MemberName 135(UBO) 4 "globSpeed" + Name 151 "ubo" + MemberName 151(ubo) 0 "ubo" + Name 157 "" + Name 168 "c" + Name 183 "mx" + Name 218 "my" + Name 252 "mz" + Name 272 "rotMat" + Name 301 "gRotMat" + Name 328 "locPos" + Name 342 "pos" + Name 407 "lPos" + Name 443 "input" + Name 445 "input.Pos" + Name 448 "input.Normal" + Name 452 "input.UV" + Name 455 "input.Color" + Name 458 "input.instancePos" + Name 461 "input.instanceRot" + Name 465 "input.instanceScale" + Name 469 "input.instanceTexIndex" + Name 472 "flattenTemp" + Name 473 "param" + Name 477 "@entryPointOutput.Pos" + Name 481 "@entryPointOutput.Normal" + Name 484 "@entryPointOutput.Color" + Name 487 "@entryPointOutput.UV" + Name 490 "@entryPointOutput.ViewVec" + Name 493 "@entryPointOutput.LightVec" + MemberDecorate 135(UBO) 0 RowMajor + MemberDecorate 135(UBO) 0 Offset 0 + MemberDecorate 135(UBO) 0 MatrixStride 16 + MemberDecorate 135(UBO) 1 RowMajor + MemberDecorate 135(UBO) 1 Offset 64 + MemberDecorate 135(UBO) 1 MatrixStride 16 + MemberDecorate 135(UBO) 2 Offset 128 + MemberDecorate 135(UBO) 3 Offset 144 + MemberDecorate 135(UBO) 4 Offset 148 + MemberDecorate 151(ubo) 0 Offset 0 + Decorate 151(ubo) Block + Decorate 157 DescriptorSet 0 + Decorate 157 Binding 0 + Decorate 445(input.Pos) Location 0 + Decorate 448(input.Normal) Location 1 + Decorate 452(input.UV) Location 2 + Decorate 455(input.Color) Location 3 + Decorate 458(input.instancePos) Location 4 + Decorate 461(input.instanceRot) Location 5 + Decorate 465(input.instanceScale) Location 6 + Decorate 469(input.instanceTexIndex) Location 7 + Decorate 477(@entryPointOutput.Pos) BuiltIn Position + Decorate 481(@entryPointOutput.Normal) Location 0 + Decorate 484(@entryPointOutput.Color) Location 1 + Decorate 487(@entryPointOutput.UV) Location 2 + Decorate 490(@entryPointOutput.ViewVec) Location 3 + Decorate 493(@entryPointOutput.LightVec) Location 4 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -187,456 +187,457 @@ spv.debuginfo.hlsl.vert 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 71 52 30 16 16 53 71 16 17 59 63 66 67 68 69 72: TypeFunction 58(VSOutput) 55(ptr) 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 70 50 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 76 73 30 16 16 53 76 17 16 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 82 50 30 16 16 77 26 52 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 88: 11(int) Constant 63 - 89: TypePointer Function 58(VSOutput) - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 92 70 30 88 16 77 26 - 94: 8(float) Constant 0 - 95: 56(fvec4) ConstantComposite 94 94 94 94 - 96: 18(fvec3) ConstantComposite 94 94 94 - 97:58(VSOutput) ConstantComposite 95 96 96 96 96 96 - 99: 11(int) Constant 64 - 100: 23(int) Constant 2 - 101: 23(int) Constant 3 - 102: TypePointer Function 18(fvec3) - 107: 11(int) Constant 65 - 108: TypePointer Function 20(fvec2) - 111: 23(int) Constant 7 - 112: TypePointer Function 23(int) - 121: 11(int) Constant 68 - 122: TypePointer Function 8(float) - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 10 30 121 16 77 26 - 127: 23(int) Constant 5 - 130: TypeMatrix 56(fvec4) 4 - 132: TypeBool - 133: 132(bool) ConstantTrue - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 57 26 133 - 134(UBO): TypeStruct 130 130 56(fvec4) 8(float) 8(float) - 137: 11(int) Constant 43 - 138: 11(int) Constant 20 - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 136 131 30 137 138 16 16 17 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 136 131 30 137 138 16 16 17 - 142: 11(int) Constant 44 - 143: 11(int) Constant 17 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 141 57 30 142 143 16 16 17 - 146: 11(int) Constant 46 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 10 30 146 143 16 16 17 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 10 30 146 143 16 16 17 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 149 52 30 121 16 53 149 16 17 135 139 140 144 147 - 150(ubo): TypeStruct 134(UBO) - 153: 11(int) Constant 49 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 148 30 153 48 16 16 17 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 52 30 121 16 53 152 16 17 151 - 155: TypePointer Uniform 150(ubo) - 156: 155(ptr) Variable Uniform - 158: 11(int) Constant 8 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 154 30 121 16 53 1 156 158 - 159: 23(int) Constant 0 - 160: TypePointer Uniform 8(float) - 166: 11(int) Constant 69 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 169 10 30 166 16 77 26 - 178: 11(int) Constant 71 - 179: TypeMatrix 18(fvec3) 3 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 133 - 181: TypePointer Function 179 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 184 180 30 178 16 77 26 - 190: 11(int) Constant 72 - 193: 8(float) Constant 1065353216 - 200: 11(int) Constant 76 - 208: 11(int) Constant 77 - 216: 11(int) Constant 79 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 219 180 30 216 16 77 26 - 225: 11(int) Constant 81 - 234: 11(int) Constant 84 - 242: 11(int) Constant 85 - 250: 11(int) Constant 87 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 253 180 30 250 16 77 26 - 256: 11(int) Constant 88 - 261: 11(int) Constant 89 - 270: 11(int) Constant 91 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 180 30 270 16 77 26 - 281: 11(int) Constant 94 - 284: 23(int) Constant 4 - 290: 11(int) Constant 95 - 298: 11(int) Constant 96 - 299: TypePointer Function 130 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 302 131 30 298 16 77 26 - 308: TypePointer Function 56(fvec4) - 311: 11(int) Constant 97 - 312: 23(int) Constant 1 - 313: 56(fvec4) ConstantComposite 94 193 94 94 - 316: 11(int) Constant 98 - 322: 11(int) Constant 99 - 323: 56(fvec4) ConstantComposite 94 94 94 193 - 326: 11(int) Constant 101 - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 329 57 30 326 16 77 26 - 340: 11(int) Constant 102 - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 343 57 30 340 16 77 26 - 347: 23(int) Constant 6 - 359: 11(int) Constant 104 - 363: TypePointer Uniform 130 - 372: 11(int) Constant 105 - 391: 11(int) Constant 107 - 405: 11(int) Constant 108 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 408 19 30 405 16 77 26 - 410: TypePointer Uniform 56(fvec4) - 425: 11(int) Constant 109 - 432: 11(int) Constant 110 - 438: 11(int) Constant 111 - 443: TypePointer Input 18(fvec3) - 444(input.Pos): 443(ptr) Variable Input -447(input.Normal): 443(ptr) Variable Input - 450: TypePointer Input 20(fvec2) - 451(input.UV): 450(ptr) Variable Input -454(input.Color): 443(ptr) Variable Input -457(input.instancePos): 443(ptr) Variable Input -460(input.instanceRot): 443(ptr) Variable Input - 463: TypePointer Input 8(float) -464(input.instanceScale): 463(ptr) Variable Input - 467: TypePointer Input 23(int) -468(input.instanceTexIndex): 467(ptr) Variable Input - 475: TypePointer Output 56(fvec4) -476(@entryPointOutput.Pos): 475(ptr) Variable Output - 479: TypePointer Output 18(fvec3) -480(@entryPointOutput.Normal): 479(ptr) Variable Output -483(@entryPointOutput.Color): 479(ptr) Variable Output -486(@entryPointOutput.UV): 479(ptr) Variable Output -489(@entryPointOutput.ViewVec): 479(ptr) Variable Output -492(@entryPointOutput.LightVec): 479(ptr) Variable Output + 79: 11(int) Constant 62 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 77 73 30 79 16 53 77 17 79 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 50 30 79 16 78 26 52 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 89: 11(int) Constant 63 + 90: TypePointer Function 58(VSOutput) + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 70 30 89 16 78 26 + 95: 8(float) Constant 0 + 96: 56(fvec4) ConstantComposite 95 95 95 95 + 97: 18(fvec3) ConstantComposite 95 95 95 + 98:58(VSOutput) ConstantComposite 96 97 97 97 97 97 + 100: 11(int) Constant 64 + 101: 23(int) Constant 2 + 102: 23(int) Constant 3 + 103: TypePointer Function 18(fvec3) + 108: 11(int) Constant 65 + 109: TypePointer Function 20(fvec2) + 112: 23(int) Constant 7 + 113: TypePointer Function 23(int) + 122: 11(int) Constant 68 + 123: TypePointer Function 8(float) + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 126 10 30 122 16 78 26 + 128: 23(int) Constant 5 + 131: TypeMatrix 56(fvec4) 4 + 133: TypeBool + 134: 133(bool) ConstantTrue + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 57 26 134 + 135(UBO): TypeStruct 131 131 56(fvec4) 8(float) 8(float) + 138: 11(int) Constant 43 + 139: 11(int) Constant 20 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 132 30 138 139 16 16 17 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 132 30 138 139 16 16 17 + 143: 11(int) Constant 44 + 144: 11(int) Constant 17 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 142 57 30 143 144 16 16 17 + 147: 11(int) Constant 46 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 10 30 147 144 16 16 17 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 10 30 147 144 16 16 17 + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 150 52 30 122 16 53 150 16 17 136 140 141 145 148 + 151(ubo): TypeStruct 135(UBO) + 154: 11(int) Constant 49 + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 153 149 30 154 48 16 16 17 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 52 30 122 16 53 153 16 17 152 + 156: TypePointer Uniform 151(ubo) + 157: 156(ptr) Variable Uniform + 159: 11(int) Constant 8 + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 155 30 122 16 53 1 157 159 + 160: 23(int) Constant 0 + 161: TypePointer Uniform 8(float) + 167: 11(int) Constant 69 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 10 30 167 16 78 26 + 179: 11(int) Constant 71 + 180: TypeMatrix 18(fvec3) 3 + 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 134 + 182: TypePointer Function 180 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 181 30 179 16 78 26 + 191: 11(int) Constant 72 + 194: 8(float) Constant 1065353216 + 201: 11(int) Constant 76 + 209: 11(int) Constant 77 + 217: 11(int) Constant 79 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 220 181 30 217 16 78 26 + 226: 11(int) Constant 81 + 235: 11(int) Constant 84 + 243: 11(int) Constant 85 + 251: 11(int) Constant 87 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 181 30 251 16 78 26 + 257: 11(int) Constant 88 + 262: 11(int) Constant 89 + 271: 11(int) Constant 91 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 181 30 271 16 78 26 + 282: 11(int) Constant 94 + 285: 23(int) Constant 4 + 291: 11(int) Constant 95 + 299: 11(int) Constant 96 + 300: TypePointer Function 131 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 132 30 299 16 78 26 + 309: TypePointer Function 56(fvec4) + 312: 11(int) Constant 97 + 313: 23(int) Constant 1 + 314: 56(fvec4) ConstantComposite 95 194 95 95 + 317: 11(int) Constant 98 + 323: 11(int) Constant 99 + 324: 56(fvec4) ConstantComposite 95 95 95 194 + 327: 11(int) Constant 101 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 330 57 30 327 16 78 26 + 341: 11(int) Constant 102 + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 344 57 30 341 16 78 26 + 348: 23(int) Constant 6 + 360: 11(int) Constant 104 + 364: TypePointer Uniform 131 + 373: 11(int) Constant 105 + 392: 11(int) Constant 107 + 406: 11(int) Constant 108 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 19 30 406 16 78 26 + 411: TypePointer Uniform 56(fvec4) + 426: 11(int) Constant 109 + 433: 11(int) Constant 110 + 439: 11(int) Constant 111 + 444: TypePointer Input 18(fvec3) + 445(input.Pos): 444(ptr) Variable Input +448(input.Normal): 444(ptr) Variable Input + 451: TypePointer Input 20(fvec2) + 452(input.UV): 451(ptr) Variable Input +455(input.Color): 444(ptr) Variable Input +458(input.instancePos): 444(ptr) Variable Input +461(input.instanceRot): 444(ptr) Variable Input + 464: TypePointer Input 8(float) +465(input.instanceScale): 464(ptr) Variable Input + 468: TypePointer Input 23(int) +469(input.instanceTexIndex): 468(ptr) Variable Input + 476: TypePointer Output 56(fvec4) +477(@entryPointOutput.Pos): 476(ptr) Variable Output + 480: TypePointer Output 18(fvec3) +481(@entryPointOutput.Normal): 480(ptr) Variable Output +484(@entryPointOutput.Color): 480(ptr) Variable Output +487(@entryPointOutput.UV): 480(ptr) Variable Output +490(@entryPointOutput.ViewVec): 480(ptr) Variable Output +493(@entryPointOutput.LightVec): 480(ptr) Variable Output Line 1 62 1 6(main): 4 Function None 5 7: Label - 442(input): 55(ptr) Variable Function -471(flattenTemp): 89(ptr) Variable Function - 472(param): 55(ptr) Variable Function + 443(input): 55(ptr) Variable Function +472(flattenTemp): 90(ptr) Variable Function + 473(param): 55(ptr) Variable Function Line 1 62 0 - 445: 18(fvec3) Load 444(input.Pos) - 446: 102(ptr) AccessChain 442(input) 159 - Store 446 445 - 448: 18(fvec3) Load 447(input.Normal) - 449: 102(ptr) AccessChain 442(input) 312 - Store 449 448 - 452: 20(fvec2) Load 451(input.UV) - 453: 108(ptr) AccessChain 442(input) 100 - Store 453 452 - 455: 18(fvec3) Load 454(input.Color) - 456: 102(ptr) AccessChain 442(input) 101 - Store 456 455 - 458: 18(fvec3) Load 457(input.instancePos) - 459: 102(ptr) AccessChain 442(input) 284 - Store 459 458 - 461: 18(fvec3) Load 460(input.instanceRot) - 462: 102(ptr) AccessChain 442(input) 127 - Store 462 461 - 465: 8(float) Load 464(input.instanceScale) - 466: 122(ptr) AccessChain 442(input) 347 - Store 466 465 - 469: 23(int) Load 468(input.instanceTexIndex) - 470: 112(ptr) AccessChain 442(input) 111 - Store 470 469 - 473: 27(VSInput) Load 442(input) - Store 472(param) 473 - 474:58(VSOutput) FunctionCall 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 472(param) - Store 471(flattenTemp) 474 - 477: 308(ptr) AccessChain 471(flattenTemp) 159 - 478: 56(fvec4) Load 477 - Store 476(@entryPointOutput.Pos) 478 - 481: 102(ptr) AccessChain 471(flattenTemp) 312 - 482: 18(fvec3) Load 481 - Store 480(@entryPointOutput.Normal) 482 - 484: 102(ptr) AccessChain 471(flattenTemp) 100 - 485: 18(fvec3) Load 484 - Store 483(@entryPointOutput.Color) 485 - 487: 102(ptr) AccessChain 471(flattenTemp) 101 - 488: 18(fvec3) Load 487 - Store 486(@entryPointOutput.UV) 488 - 490: 102(ptr) AccessChain 471(flattenTemp) 284 - 491: 18(fvec3) Load 490 - Store 489(@entryPointOutput.ViewVec) 491 - 493: 102(ptr) AccessChain 471(flattenTemp) 127 - 494: 18(fvec3) Load 493 - Store 492(@entryPointOutput.LightVec) 494 + 446: 18(fvec3) Load 445(input.Pos) + 447: 103(ptr) AccessChain 443(input) 160 + Store 447 446 + 449: 18(fvec3) Load 448(input.Normal) + 450: 103(ptr) AccessChain 443(input) 313 + Store 450 449 + 453: 20(fvec2) Load 452(input.UV) + 454: 109(ptr) AccessChain 443(input) 101 + Store 454 453 + 456: 18(fvec3) Load 455(input.Color) + 457: 103(ptr) AccessChain 443(input) 102 + Store 457 456 + 459: 18(fvec3) Load 458(input.instancePos) + 460: 103(ptr) AccessChain 443(input) 285 + Store 460 459 + 462: 18(fvec3) Load 461(input.instanceRot) + 463: 103(ptr) AccessChain 443(input) 128 + Store 463 462 + 466: 8(float) Load 465(input.instanceScale) + 467: 123(ptr) AccessChain 443(input) 348 + Store 467 466 + 470: 23(int) Load 469(input.instanceTexIndex) + 471: 113(ptr) AccessChain 443(input) 112 + Store 471 470 + 474: 27(VSInput) Load 443(input) + Store 473(param) 474 + 475:58(VSOutput) FunctionCall 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 473(param) + Store 472(flattenTemp) 475 + 478: 309(ptr) AccessChain 472(flattenTemp) 160 + 479: 56(fvec4) Load 478 + Store 477(@entryPointOutput.Pos) 479 + 482: 103(ptr) AccessChain 472(flattenTemp) 313 + 483: 18(fvec3) Load 482 + Store 481(@entryPointOutput.Normal) 483 + 485: 103(ptr) AccessChain 472(flattenTemp) 101 + 486: 18(fvec3) Load 485 + Store 484(@entryPointOutput.Color) 486 + 488: 103(ptr) AccessChain 472(flattenTemp) 102 + 489: 18(fvec3) Load 488 + Store 487(@entryPointOutput.UV) 489 + 491: 103(ptr) AccessChain 472(flattenTemp) 285 + 492: 18(fvec3) Load 491 + Store 490(@entryPointOutput.ViewVec) 492 + 494: 103(ptr) AccessChain 472(flattenTemp) 128 + 495: 18(fvec3) Load 494 + Store 493(@entryPointOutput.LightVec) 495 Return FunctionEnd Line 1 62 1 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):58(VSOutput) Function None 72 74(input): 55(ptr) FunctionParameter - 78: Label - 90(output): 89(ptr) Variable Function - 123(s): 122(ptr) Variable Function - 167(c): 122(ptr) Variable Function - 182(mx): 181(ptr) Variable Function - 217(my): 181(ptr) Variable Function - 251(mz): 181(ptr) Variable Function - 271(rotMat): 181(ptr) Variable Function - 300(gRotMat): 299(ptr) Variable Function - 327(locPos): 308(ptr) Variable Function - 341(pos): 308(ptr) Variable Function - 406(lPos): 102(ptr) Variable Function - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 16 16 16 16 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 81 74(input) 84 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 77 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 77 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 88 88 16 16 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 91 90(output) 84 - Store 90(output) 97 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 99 99 16 16 - 103: 102(ptr) AccessChain 74(input) 101 - 104: 18(fvec3) Load 103 - 105: 102(ptr) AccessChain 90(output) 100 - Store 105 104 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 107 107 16 16 - 109: 108(ptr) AccessChain 74(input) 100 - 110: 20(fvec2) Load 109 - 113: 112(ptr) AccessChain 74(input) 111 - 114: 23(int) Load 113 - 115: 8(float) ConvertSToF 114 - 116: 8(float) CompositeExtract 110 0 - 117: 8(float) CompositeExtract 110 1 - 118: 18(fvec3) CompositeConstruct 116 117 115 - 119: 102(ptr) AccessChain 90(output) 101 - Store 119 118 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 121 121 16 16 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(s) 84 - 128: 122(ptr) AccessChain 74(input) 127 16 - 129: 8(float) Load 128 - 161: 160(ptr) AccessChain 156 159 101 - 162: 8(float) Load 161 - 163: 8(float) FAdd 129 162 - 164: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 163 - Store 123(s) 164 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 166 166 16 16 - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 168 167(c) 84 - 171: 122(ptr) AccessChain 74(input) 127 16 - 172: 8(float) Load 171 - 173: 160(ptr) AccessChain 156 159 101 - 174: 8(float) Load 173 - 175: 8(float) FAdd 172 174 - 176: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 175 - Store 167(c) 176 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 178 178 16 16 - 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 183 182(mx) 84 - 186: 8(float) Load 167(c) - 187: 8(float) Load 123(s) - 188: 8(float) FNegate 187 - 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 190 190 16 16 - 191: 8(float) Load 123(s) - 192: 8(float) Load 167(c) - 194: 18(fvec3) CompositeConstruct 186 188 94 - 195: 18(fvec3) CompositeConstruct 191 192 94 - 196: 18(fvec3) CompositeConstruct 94 94 193 - 197: 179 CompositeConstruct 194 195 196 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 178 178 16 16 - Store 182(mx) 197 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 200 200 16 16 - 201: 122(ptr) AccessChain 74(input) 127 52 - 202: 8(float) Load 201 - 203: 160(ptr) AccessChain 156 159 101 - 204: 8(float) Load 203 - 205: 8(float) FAdd 202 204 - 206: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 205 - Store 123(s) 206 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 208 208 16 16 - 209: 122(ptr) AccessChain 74(input) 127 52 - 210: 8(float) Load 209 - 211: 160(ptr) AccessChain 156 159 101 - 212: 8(float) Load 211 - 213: 8(float) FAdd 210 212 - 214: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 213 - Store 167(c) 214 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 216 216 16 16 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 218 217(my) 84 - 221: 8(float) Load 167(c) - 222: 8(float) Load 123(s) - 223: 8(float) FNegate 222 - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 225 225 16 16 - 226: 8(float) Load 123(s) - 227: 8(float) Load 167(c) - 228: 18(fvec3) CompositeConstruct 221 94 223 - 229: 18(fvec3) CompositeConstruct 94 193 94 - 230: 18(fvec3) CompositeConstruct 226 94 227 - 231: 179 CompositeConstruct 228 229 230 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 216 216 16 16 - Store 217(my) 231 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 234 234 16 16 - 235: 122(ptr) AccessChain 74(input) 127 21 - 236: 8(float) Load 235 - 237: 160(ptr) AccessChain 156 159 101 - 238: 8(float) Load 237 - 239: 8(float) FAdd 236 238 - 240: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 239 - Store 123(s) 240 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 242 242 16 16 - 243: 122(ptr) AccessChain 74(input) 127 21 - 244: 8(float) Load 243 - 245: 160(ptr) AccessChain 156 159 101 - 246: 8(float) Load 245 - 247: 8(float) FAdd 244 246 - 248: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 247 - Store 167(c) 248 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 250 250 16 16 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 252 251(mz) 84 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 256 256 16 16 - 257: 8(float) Load 167(c) - 258: 8(float) Load 123(s) - 259: 8(float) FNegate 258 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 261 261 16 16 - 262: 8(float) Load 123(s) - 263: 8(float) Load 167(c) - 264: 18(fvec3) CompositeConstruct 193 94 94 - 265: 18(fvec3) CompositeConstruct 94 257 259 - 266: 18(fvec3) CompositeConstruct 94 262 263 - 267: 179 CompositeConstruct 264 265 266 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 250 250 16 16 - Store 251(mz) 267 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 270 270 16 16 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 272 271(rotMat) 84 - 275: 179 Load 182(mx) - 276: 179 Load 217(my) - 277: 179 MatrixTimesMatrix 275 276 - 278: 179 Load 251(mz) - 279: 179 MatrixTimesMatrix 277 278 - Store 271(rotMat) 279 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 281 281 16 16 - 282: 122(ptr) AccessChain 74(input) 127 52 - 283: 8(float) Load 282 - 285: 160(ptr) AccessChain 156 159 284 - 286: 8(float) Load 285 - 287: 8(float) FAdd 283 286 - 288: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 287 - Store 123(s) 288 - 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 290 290 16 16 - 291: 122(ptr) AccessChain 74(input) 127 52 - 292: 8(float) Load 291 - 293: 160(ptr) AccessChain 156 159 284 - 294: 8(float) Load 293 - 295: 8(float) FAdd 292 294 - 296: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 295 - Store 167(c) 296 - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 298 298 16 16 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 301 300(gRotMat) 84 - 304: 8(float) Load 167(c) - 305: 8(float) Load 123(s) - 306: 8(float) FNegate 305 - 307: 56(fvec4) CompositeConstruct 304 94 306 94 - 309: 308(ptr) AccessChain 300(gRotMat) 159 - Store 309 307 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 311 311 16 16 - 314: 308(ptr) AccessChain 300(gRotMat) 312 - Store 314 313 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 316 316 16 16 - 317: 8(float) Load 123(s) - 318: 8(float) Load 167(c) - 319: 56(fvec4) CompositeConstruct 317 94 318 94 - 320: 308(ptr) AccessChain 300(gRotMat) 100 - Store 320 319 - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 322 322 16 16 - 324: 308(ptr) AccessChain 300(gRotMat) 101 - Store 324 323 - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 326 326 16 16 - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 328 327(locPos) 84 - 331: 102(ptr) AccessChain 74(input) 159 - 332: 18(fvec3) Load 331 - 333: 179 Load 271(rotMat) - 334: 18(fvec3) VectorTimesMatrix 332 333 - 335: 8(float) CompositeExtract 334 0 - 336: 8(float) CompositeExtract 334 1 - 337: 8(float) CompositeExtract 334 2 - 338: 56(fvec4) CompositeConstruct 335 336 337 193 - Store 327(locPos) 338 - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 340 340 16 16 - 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 342 341(pos) 84 - 345: 56(fvec4) Load 327(locPos) - 346: 18(fvec3) VectorShuffle 345 345 0 1 2 - 348: 122(ptr) AccessChain 74(input) 347 - 349: 8(float) Load 348 - 350: 18(fvec3) VectorTimesScalar 346 349 - 351: 102(ptr) AccessChain 74(input) 284 - 352: 18(fvec3) Load 351 - 353: 18(fvec3) FAdd 350 352 - 354: 8(float) CompositeExtract 353 0 - 355: 8(float) CompositeExtract 353 1 - 356: 8(float) CompositeExtract 353 2 - 357: 56(fvec4) CompositeConstruct 354 355 356 193 - Store 341(pos) 357 - 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 359 359 16 16 - 360: 56(fvec4) Load 341(pos) - 361: 130 Load 300(gRotMat) - 362: 56(fvec4) VectorTimesMatrix 360 361 - 364: 363(ptr) AccessChain 156 159 312 - 365: 130 Load 364 - 366: 56(fvec4) VectorTimesMatrix 362 365 - 367: 363(ptr) AccessChain 156 159 159 - 368: 130 Load 367 - 369: 56(fvec4) VectorTimesMatrix 366 368 - 370: 308(ptr) AccessChain 90(output) 159 - Store 370 369 - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 372 372 16 16 - 373: 102(ptr) AccessChain 74(input) 312 - 374: 18(fvec3) Load 373 - 375: 179 Load 271(rotMat) - 376: 18(fvec3) VectorTimesMatrix 374 375 - 377: 130 Load 300(gRotMat) - 378: 363(ptr) AccessChain 156 159 312 - 379: 130 Load 378 - 380: 130 MatrixTimesMatrix 377 379 - 381: 56(fvec4) CompositeExtract 380 0 - 382: 18(fvec3) VectorShuffle 381 381 0 1 2 - 383: 56(fvec4) CompositeExtract 380 1 - 384: 18(fvec3) VectorShuffle 383 383 0 1 2 - 385: 56(fvec4) CompositeExtract 380 2 - 386: 18(fvec3) VectorShuffle 385 385 0 1 2 - 387: 179 CompositeConstruct 382 384 386 - 388: 18(fvec3) VectorTimesMatrix 376 387 - 389: 102(ptr) AccessChain 90(output) 312 - Store 389 388 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 391 391 16 16 - 392: 102(ptr) AccessChain 74(input) 159 - 393: 18(fvec3) Load 392 - 394: 102(ptr) AccessChain 74(input) 284 - 395: 18(fvec3) Load 394 - 396: 18(fvec3) FAdd 393 395 - 397: 8(float) CompositeExtract 396 0 - 398: 8(float) CompositeExtract 396 1 - 399: 8(float) CompositeExtract 396 2 - 400: 56(fvec4) CompositeConstruct 397 398 399 193 - 401: 363(ptr) AccessChain 156 159 312 - 402: 130 Load 401 - 403: 56(fvec4) VectorTimesMatrix 400 402 - Store 341(pos) 403 - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 405 405 16 16 - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 407 406(lPos) 84 - 411: 410(ptr) AccessChain 156 159 100 - 412: 56(fvec4) Load 411 - 413: 18(fvec3) VectorShuffle 412 412 0 1 2 - 414: 363(ptr) AccessChain 156 159 312 - 415: 130 Load 414 - 416: 56(fvec4) CompositeExtract 415 0 - 417: 18(fvec3) VectorShuffle 416 416 0 1 2 - 418: 56(fvec4) CompositeExtract 415 1 - 419: 18(fvec3) VectorShuffle 418 418 0 1 2 - 420: 56(fvec4) CompositeExtract 415 2 - 421: 18(fvec3) VectorShuffle 420 420 0 1 2 - 422: 179 CompositeConstruct 417 419 421 - 423: 18(fvec3) VectorTimesMatrix 413 422 - Store 406(lPos) 423 - 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 425 425 16 16 - 426: 18(fvec3) Load 406(lPos) - 427: 56(fvec4) Load 341(pos) - 428: 18(fvec3) VectorShuffle 427 427 0 1 2 - 429: 18(fvec3) FSub 426 428 - 430: 102(ptr) AccessChain 90(output) 127 - Store 430 429 - 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 432 432 16 16 - 433: 56(fvec4) Load 341(pos) - 434: 18(fvec3) VectorShuffle 433 433 0 1 2 - 435: 18(fvec3) FNegate 434 - 436: 102(ptr) AccessChain 90(output) 284 - Store 436 435 - 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 438 438 16 16 - 439:58(VSOutput) Load 90(output) - ReturnValue 439 + 76: Label + 91(output): 90(ptr) Variable Function + 124(s): 123(ptr) Variable Function + 168(c): 123(ptr) Variable Function + 183(mx): 182(ptr) Variable Function + 218(my): 182(ptr) Variable Function + 252(mz): 182(ptr) Variable Function + 272(rotMat): 182(ptr) Variable Function + 301(gRotMat): 300(ptr) Variable Function + 328(locPos): 309(ptr) Variable Function + 342(pos): 309(ptr) Variable Function + 407(lPos): 103(ptr) Variable Function + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 79 79 16 16 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 74(input) 85 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 78 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 89 89 16 16 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 91(output) 85 + Store 91(output) 98 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 100 100 16 16 + 104: 103(ptr) AccessChain 74(input) 102 + 105: 18(fvec3) Load 104 + 106: 103(ptr) AccessChain 91(output) 101 + Store 106 105 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 108 108 16 16 + 110: 109(ptr) AccessChain 74(input) 101 + 111: 20(fvec2) Load 110 + 114: 113(ptr) AccessChain 74(input) 112 + 115: 23(int) Load 114 + 116: 8(float) ConvertSToF 115 + 117: 8(float) CompositeExtract 111 0 + 118: 8(float) CompositeExtract 111 1 + 119: 18(fvec3) CompositeConstruct 117 118 116 + 120: 103(ptr) AccessChain 91(output) 102 + Store 120 119 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 122 122 16 16 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(s) 85 + 129: 123(ptr) AccessChain 74(input) 128 16 + 130: 8(float) Load 129 + 162: 161(ptr) AccessChain 157 160 102 + 163: 8(float) Load 162 + 164: 8(float) FAdd 130 163 + 165: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 164 + Store 124(s) 165 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 167 167 16 16 + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 169 168(c) 85 + 172: 123(ptr) AccessChain 74(input) 128 16 + 173: 8(float) Load 172 + 174: 161(ptr) AccessChain 157 160 102 + 175: 8(float) Load 174 + 176: 8(float) FAdd 173 175 + 177: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 176 + Store 168(c) 177 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 179 179 16 16 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(mx) 85 + 187: 8(float) Load 168(c) + 188: 8(float) Load 124(s) + 189: 8(float) FNegate 188 + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 191 191 16 16 + 192: 8(float) Load 124(s) + 193: 8(float) Load 168(c) + 195: 18(fvec3) CompositeConstruct 187 189 95 + 196: 18(fvec3) CompositeConstruct 192 193 95 + 197: 18(fvec3) CompositeConstruct 95 95 194 + 198: 180 CompositeConstruct 195 196 197 + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 179 179 16 16 + Store 183(mx) 198 + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 201 201 16 16 + 202: 123(ptr) AccessChain 74(input) 128 52 + 203: 8(float) Load 202 + 204: 161(ptr) AccessChain 157 160 102 + 205: 8(float) Load 204 + 206: 8(float) FAdd 203 205 + 207: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 206 + Store 124(s) 207 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 209 209 16 16 + 210: 123(ptr) AccessChain 74(input) 128 52 + 211: 8(float) Load 210 + 212: 161(ptr) AccessChain 157 160 102 + 213: 8(float) Load 212 + 214: 8(float) FAdd 211 213 + 215: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 214 + Store 168(c) 215 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 217 217 16 16 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 219 218(my) 85 + 222: 8(float) Load 168(c) + 223: 8(float) Load 124(s) + 224: 8(float) FNegate 223 + 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 226 226 16 16 + 227: 8(float) Load 124(s) + 228: 8(float) Load 168(c) + 229: 18(fvec3) CompositeConstruct 222 95 224 + 230: 18(fvec3) CompositeConstruct 95 194 95 + 231: 18(fvec3) CompositeConstruct 227 95 228 + 232: 180 CompositeConstruct 229 230 231 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 217 217 16 16 + Store 218(my) 232 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 235 235 16 16 + 236: 123(ptr) AccessChain 74(input) 128 21 + 237: 8(float) Load 236 + 238: 161(ptr) AccessChain 157 160 102 + 239: 8(float) Load 238 + 240: 8(float) FAdd 237 239 + 241: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 240 + Store 124(s) 241 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 243 243 16 16 + 244: 123(ptr) AccessChain 74(input) 128 21 + 245: 8(float) Load 244 + 246: 161(ptr) AccessChain 157 160 102 + 247: 8(float) Load 246 + 248: 8(float) FAdd 245 247 + 249: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 248 + Store 168(c) 249 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 251 251 16 16 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(mz) 85 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 257 257 16 16 + 258: 8(float) Load 168(c) + 259: 8(float) Load 124(s) + 260: 8(float) FNegate 259 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 262 262 16 16 + 263: 8(float) Load 124(s) + 264: 8(float) Load 168(c) + 265: 18(fvec3) CompositeConstruct 194 95 95 + 266: 18(fvec3) CompositeConstruct 95 258 260 + 267: 18(fvec3) CompositeConstruct 95 263 264 + 268: 180 CompositeConstruct 265 266 267 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 251 251 16 16 + Store 252(mz) 268 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 271 271 16 16 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 273 272(rotMat) 85 + 276: 180 Load 183(mx) + 277: 180 Load 218(my) + 278: 180 MatrixTimesMatrix 276 277 + 279: 180 Load 252(mz) + 280: 180 MatrixTimesMatrix 278 279 + Store 272(rotMat) 280 + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 282 282 16 16 + 283: 123(ptr) AccessChain 74(input) 128 52 + 284: 8(float) Load 283 + 286: 161(ptr) AccessChain 157 160 285 + 287: 8(float) Load 286 + 288: 8(float) FAdd 284 287 + 289: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 288 + Store 124(s) 289 + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 291 291 16 16 + 292: 123(ptr) AccessChain 74(input) 128 52 + 293: 8(float) Load 292 + 294: 161(ptr) AccessChain 157 160 285 + 295: 8(float) Load 294 + 296: 8(float) FAdd 293 295 + 297: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 296 + Store 168(c) 297 + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 299 299 16 16 + 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(gRotMat) 85 + 305: 8(float) Load 168(c) + 306: 8(float) Load 124(s) + 307: 8(float) FNegate 306 + 308: 56(fvec4) CompositeConstruct 305 95 307 95 + 310: 309(ptr) AccessChain 301(gRotMat) 160 + Store 310 308 + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 312 312 16 16 + 315: 309(ptr) AccessChain 301(gRotMat) 313 + Store 315 314 + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 317 317 16 16 + 318: 8(float) Load 124(s) + 319: 8(float) Load 168(c) + 320: 56(fvec4) CompositeConstruct 318 95 319 95 + 321: 309(ptr) AccessChain 301(gRotMat) 101 + Store 321 320 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 323 323 16 16 + 325: 309(ptr) AccessChain 301(gRotMat) 102 + Store 325 324 + 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 327 327 16 16 + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 329 328(locPos) 85 + 332: 103(ptr) AccessChain 74(input) 160 + 333: 18(fvec3) Load 332 + 334: 180 Load 272(rotMat) + 335: 18(fvec3) VectorTimesMatrix 333 334 + 336: 8(float) CompositeExtract 335 0 + 337: 8(float) CompositeExtract 335 1 + 338: 8(float) CompositeExtract 335 2 + 339: 56(fvec4) CompositeConstruct 336 337 338 194 + Store 328(locPos) 339 + 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 341 341 16 16 + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 343 342(pos) 85 + 346: 56(fvec4) Load 328(locPos) + 347: 18(fvec3) VectorShuffle 346 346 0 1 2 + 349: 123(ptr) AccessChain 74(input) 348 + 350: 8(float) Load 349 + 351: 18(fvec3) VectorTimesScalar 347 350 + 352: 103(ptr) AccessChain 74(input) 285 + 353: 18(fvec3) Load 352 + 354: 18(fvec3) FAdd 351 353 + 355: 8(float) CompositeExtract 354 0 + 356: 8(float) CompositeExtract 354 1 + 357: 8(float) CompositeExtract 354 2 + 358: 56(fvec4) CompositeConstruct 355 356 357 194 + Store 342(pos) 358 + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 360 360 16 16 + 361: 56(fvec4) Load 342(pos) + 362: 131 Load 301(gRotMat) + 363: 56(fvec4) VectorTimesMatrix 361 362 + 365: 364(ptr) AccessChain 157 160 313 + 366: 131 Load 365 + 367: 56(fvec4) VectorTimesMatrix 363 366 + 368: 364(ptr) AccessChain 157 160 160 + 369: 131 Load 368 + 370: 56(fvec4) VectorTimesMatrix 367 369 + 371: 309(ptr) AccessChain 91(output) 160 + Store 371 370 + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 373 373 16 16 + 374: 103(ptr) AccessChain 74(input) 313 + 375: 18(fvec3) Load 374 + 376: 180 Load 272(rotMat) + 377: 18(fvec3) VectorTimesMatrix 375 376 + 378: 131 Load 301(gRotMat) + 379: 364(ptr) AccessChain 157 160 313 + 380: 131 Load 379 + 381: 131 MatrixTimesMatrix 378 380 + 382: 56(fvec4) CompositeExtract 381 0 + 383: 18(fvec3) VectorShuffle 382 382 0 1 2 + 384: 56(fvec4) CompositeExtract 381 1 + 385: 18(fvec3) VectorShuffle 384 384 0 1 2 + 386: 56(fvec4) CompositeExtract 381 2 + 387: 18(fvec3) VectorShuffle 386 386 0 1 2 + 388: 180 CompositeConstruct 383 385 387 + 389: 18(fvec3) VectorTimesMatrix 377 388 + 390: 103(ptr) AccessChain 91(output) 313 + Store 390 389 + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 392 392 16 16 + 393: 103(ptr) AccessChain 74(input) 160 + 394: 18(fvec3) Load 393 + 395: 103(ptr) AccessChain 74(input) 285 + 396: 18(fvec3) Load 395 + 397: 18(fvec3) FAdd 394 396 + 398: 8(float) CompositeExtract 397 0 + 399: 8(float) CompositeExtract 397 1 + 400: 8(float) CompositeExtract 397 2 + 401: 56(fvec4) CompositeConstruct 398 399 400 194 + 402: 364(ptr) AccessChain 157 160 313 + 403: 131 Load 402 + 404: 56(fvec4) VectorTimesMatrix 401 403 + Store 342(pos) 404 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 406 406 16 16 + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(lPos) 85 + 412: 411(ptr) AccessChain 157 160 101 + 413: 56(fvec4) Load 412 + 414: 18(fvec3) VectorShuffle 413 413 0 1 2 + 415: 364(ptr) AccessChain 157 160 313 + 416: 131 Load 415 + 417: 56(fvec4) CompositeExtract 416 0 + 418: 18(fvec3) VectorShuffle 417 417 0 1 2 + 419: 56(fvec4) CompositeExtract 416 1 + 420: 18(fvec3) VectorShuffle 419 419 0 1 2 + 421: 56(fvec4) CompositeExtract 416 2 + 422: 18(fvec3) VectorShuffle 421 421 0 1 2 + 423: 180 CompositeConstruct 418 420 422 + 424: 18(fvec3) VectorTimesMatrix 414 423 + Store 407(lPos) 424 + 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 426 426 16 16 + 427: 18(fvec3) Load 407(lPos) + 428: 56(fvec4) Load 342(pos) + 429: 18(fvec3) VectorShuffle 428 428 0 1 2 + 430: 18(fvec3) FSub 427 429 + 431: 103(ptr) AccessChain 91(output) 128 + Store 431 430 + 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 433 433 16 16 + 434: 56(fvec4) Load 342(pos) + 435: 18(fvec3) VectorShuffle 434 434 0 1 2 + 436: 18(fvec3) FNegate 435 + 437: 103(ptr) AccessChain 91(output) 285 + Store 437 436 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 439 439 16 16 + 440:58(VSOutput) Load 91(output) + ReturnValue 440 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out index 30ad60c823..f3319c20ee 100644 --- a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.scalar_types.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 146 +// Id's are bound by 147 Capability Shader Capability Float16 @@ -17,8 +17,8 @@ spv.debuginfo.scalar_types.glsl.frag ExecutionMode 14 OriginUpperLeft 1: String "" 8: String "uint" - 15: String "main" - 18: String "// OpModuleProcessed auto-map-locations + 16: String "main" + 19: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -26,43 +26,43 @@ spv.debuginfo.scalar_types.glsl.frag // OpModuleProcessed entry-point main #line 1 " - 29: String "bool" - 34: String "VAR_bool" - 41: String "int" - 46: String "VAR_int" - 53: String "VAR_uint" - 57: String "float" - 62: String "VAR_float" - 67: String "double" - 73: String "VAR_double" - 78: String "int8_t" - 83: String "VAR_int8_t" - 88: String "uint8_t" - 93: String "VAR_uint8_t" - 98: String "int16_t" - 104: String "VAR_int16_t" - 109: String "uint16_t" - 114: String "VAR_uint16_t" - 119: String "int64_t" - 124: String "VAR_int64_t" - 129: String "uint64_t" - 134: String "VAR_uint64_t" - 139: String "float16_t" - 144: String "VAR_float16_t" + 30: String "bool" + 35: String "VAR_bool" + 42: String "int" + 47: String "VAR_int" + 54: String "VAR_uint" + 58: String "float" + 63: String "VAR_float" + 68: String "double" + 74: String "VAR_double" + 79: String "int8_t" + 84: String "VAR_int8_t" + 89: String "uint8_t" + 94: String "VAR_uint8_t" + 99: String "int16_t" + 105: String "VAR_int16_t" + 110: String "uint16_t" + 115: String "VAR_uint16_t" + 120: String "int64_t" + 125: String "VAR_int64_t" + 130: String "uint64_t" + 135: String "VAR_uint64_t" + 140: String "float16_t" + 145: String "VAR_float16_t" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 14 "main" - Name 32 "VAR_bool" - Name 44 "VAR_int" - Name 51 "VAR_uint" - Name 60 "VAR_float" - Name 71 "VAR_double" - Name 81 "VAR_int8_t" - Name 91 "VAR_uint8_t" - Name 102 "VAR_int16_t" - Name 112 "VAR_uint16_t" - Name 122 "VAR_int64_t" - Name 132 "VAR_uint64_t" - Name 142 "VAR_float16_t" + Name 33 "VAR_bool" + Name 45 "VAR_int" + Name 52 "VAR_uint" + Name 61 "VAR_float" + Name 72 "VAR_double" + Name 82 "VAR_int8_t" + Name 92 "VAR_uint8_t" + Name 103 "VAR_int16_t" + Name 113 "VAR_uint16_t" + Name 123 "VAR_int64_t" + Name 133 "VAR_uint64_t" + Name 143 "VAR_float16_t" 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -72,125 +72,126 @@ spv.debuginfo.scalar_types.glsl.frag 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 18 - 20: 7(int) Constant 1 - 21: 7(int) Constant 4 - 22: 7(int) Constant 2 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 20 21 17 22 - 16: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 15 6 17 12 12 19 15 13 12 - 27: 7(int) Constant 43 - 28: TypeBool - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 22 12 - 31: TypePointer Private 28(bool) - 32(VAR_bool): 31(ptr) Variable Private - 35: 7(int) Constant 8 - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 34 30 17 27 12 19 34 32(VAR_bool) 35 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 22 12 - 37: 28(bool) ConstantFalse - 39: 7(int) Constant 44 - 40: TypeInt 32 1 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 41 10 21 12 - 43: TypePointer Private 40(int) - 44(VAR_int): 43(ptr) Variable Private - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 46 42 17 39 12 19 46 44(VAR_int) 35 - 47: 40(int) Constant 0 - 49: 7(int) Constant 45 - 50: TypePointer Private 7(int) - 51(VAR_uint): 50(ptr) Variable Private - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 53 9 17 49 12 19 53 51(VAR_uint) 35 - 55: 7(int) Constant 46 - 56: TypeFloat 32 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 13 12 - 59: TypePointer Private 56(float) - 60(VAR_float): 59(ptr) Variable Private - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 17 55 12 19 62 60(VAR_float) 35 - 63: 56(float) Constant 0 - 65: 7(int) Constant 47 - 66: TypeFloat 64 - 69: 7(int) Constant 64 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 67 69 13 12 - 70: TypePointer Private 66(float64_t) - 71(VAR_double): 70(ptr) Variable Private - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 73 68 17 65 12 19 73 71(VAR_double) 35 - 74:66(float64_t) Constant 0 0 - 76: 7(int) Constant 48 - 77: TypeInt 8 1 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 78 35 21 12 - 80: TypePointer Private 77(int8_t) - 81(VAR_int8_t): 80(ptr) Variable Private - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 79 17 76 12 19 83 81(VAR_int8_t) 35 - 84: 77(int8_t) Constant 0 - 86: 7(int) Constant 49 - 87: TypeInt 8 0 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 88 35 11 12 - 90: TypePointer Private 87(int8_t) - 91(VAR_uint8_t): 90(ptr) Variable Private - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 93 89 17 86 12 19 93 91(VAR_uint8_t) 35 - 94: 87(int8_t) Constant 0 - 96: 7(int) Constant 50 - 97: TypeInt 16 1 - 100: 7(int) Constant 16 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 100 21 12 - 101: TypePointer Private 97(int16_t) -102(VAR_int16_t): 101(ptr) Variable Private - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 104 99 17 96 12 19 104 102(VAR_int16_t) 35 - 105: 97(int16_t) Constant 0 - 107: 7(int) Constant 51 - 108: TypeInt 16 0 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 109 100 11 12 - 111: TypePointer Private 108(int16_t) -112(VAR_uint16_t): 111(ptr) Variable Private - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 110 17 107 12 19 114 112(VAR_uint16_t) 35 - 115:108(int16_t) Constant 0 - 117: 7(int) Constant 52 - 118: TypeInt 64 1 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 119 69 21 12 - 121: TypePointer Private 118(int64_t) -122(VAR_int64_t): 121(ptr) Variable Private - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 120 17 117 12 19 124 122(VAR_int64_t) 35 - 125:118(int64_t) Constant 0 0 - 127: 7(int) Constant 53 - 128: TypeInt 64 0 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 129 69 11 12 - 131: TypePointer Private 128(int64_t) -132(VAR_uint64_t): 131(ptr) Variable Private - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 130 17 127 12 19 134 132(VAR_uint64_t) 35 - 135:128(int64_t) Constant 0 0 - 137: 7(int) Constant 54 - 138: TypeFloat 16 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 100 13 12 - 141: TypePointer Private 138(float16_t) -142(VAR_float16_t): 141(ptr) Variable Private - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 144 140 17 137 12 19 144 142(VAR_float16_t) 35 - 145:138(float16_t) Constant 0 + 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 20: 7(int) Constant 42 + 22: 7(int) Constant 1 + 23: 7(int) Constant 4 + 24: 7(int) Constant 2 + 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: 7(int) Constant 43 + 29: TypeBool + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 24 12 + 32: TypePointer Private 29(bool) + 33(VAR_bool): 32(ptr) Variable Private + 36: 7(int) Constant 8 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 35 31 18 28 12 21 35 33(VAR_bool) 36 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 24 12 + 38: 29(bool) ConstantFalse + 40: 7(int) Constant 44 + 41: TypeInt 32 1 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 42 10 23 12 + 44: TypePointer Private 41(int) + 45(VAR_int): 44(ptr) Variable Private + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 47 43 18 40 12 21 47 45(VAR_int) 36 + 48: 41(int) Constant 0 + 50: 7(int) Constant 45 + 51: TypePointer Private 7(int) + 52(VAR_uint): 51(ptr) Variable Private + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 54 9 18 50 12 21 54 52(VAR_uint) 36 + 56: 7(int) Constant 46 + 57: TypeFloat 32 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 58 10 13 12 + 60: TypePointer Private 57(float) + 61(VAR_float): 60(ptr) Variable Private + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 63 59 18 56 12 21 63 61(VAR_float) 36 + 64: 57(float) Constant 0 + 66: 7(int) Constant 47 + 67: TypeFloat 64 + 70: 7(int) Constant 64 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 68 70 13 12 + 71: TypePointer Private 67(float64_t) + 72(VAR_double): 71(ptr) Variable Private + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 74 69 18 66 12 21 74 72(VAR_double) 36 + 75:67(float64_t) Constant 0 0 + 77: 7(int) Constant 48 + 78: TypeInt 8 1 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 79 36 23 12 + 81: TypePointer Private 78(int8_t) + 82(VAR_int8_t): 81(ptr) Variable Private + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 80 18 77 12 21 84 82(VAR_int8_t) 36 + 85: 78(int8_t) Constant 0 + 87: 7(int) Constant 49 + 88: TypeInt 8 0 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 89 36 11 12 + 91: TypePointer Private 88(int8_t) + 92(VAR_uint8_t): 91(ptr) Variable Private + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 90 18 87 12 21 94 92(VAR_uint8_t) 36 + 95: 88(int8_t) Constant 0 + 97: 7(int) Constant 50 + 98: TypeInt 16 1 + 101: 7(int) Constant 16 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 99 101 23 12 + 102: TypePointer Private 98(int16_t) +103(VAR_int16_t): 102(ptr) Variable Private + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 105 100 18 97 12 21 105 103(VAR_int16_t) 36 + 106: 98(int16_t) Constant 0 + 108: 7(int) Constant 51 + 109: TypeInt 16 0 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 110 101 11 12 + 112: TypePointer Private 109(int16_t) +113(VAR_uint16_t): 112(ptr) Variable Private + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 115 111 18 108 12 21 115 113(VAR_uint16_t) 36 + 116:109(int16_t) Constant 0 + 118: 7(int) Constant 52 + 119: TypeInt 64 1 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 120 70 23 12 + 122: TypePointer Private 119(int64_t) +123(VAR_int64_t): 122(ptr) Variable Private + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 121 18 118 12 21 125 123(VAR_int64_t) 36 + 126:119(int64_t) Constant 0 0 + 128: 7(int) Constant 53 + 129: TypeInt 64 0 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 130 70 11 12 + 132: TypePointer Private 129(int64_t) +133(VAR_uint64_t): 132(ptr) Variable Private + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 135 131 18 128 12 21 135 133(VAR_uint64_t) 36 + 136:129(int64_t) Constant 0 0 + 138: 7(int) Constant 54 + 139: TypeFloat 16 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 101 13 12 + 142: TypePointer Private 139(float16_t) +143(VAR_float16_t): 142(ptr) Variable Private + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 145 141 18 138 12 21 145 143(VAR_float16_t) 36 + 146:139(float16_t) Constant 0 Line 1 42 11 14(main): 4 Function None 5 - 23: Label - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 16 14(main) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 16 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 27 27 12 12 - Store 32(VAR_bool) 37 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 39 39 12 12 - Store 44(VAR_int) 47 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 49 49 12 12 - Store 51(VAR_uint) 12 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 55 55 12 12 - Store 60(VAR_float) 63 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 65 65 12 12 - Store 71(VAR_double) 74 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 76 76 12 12 - Store 81(VAR_int8_t) 84 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 86 86 12 12 - Store 91(VAR_uint8_t) 94 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 96 96 12 12 - Store 102(VAR_int16_t) 105 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 107 107 12 12 - Store 112(VAR_uint16_t) 115 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 117 117 12 12 - Store 122(VAR_int64_t) 125 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 127 127 12 12 - Store 132(VAR_uint64_t) 135 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 137 137 12 12 - Store 142(VAR_float16_t) 145 + 15: Label + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + Store 33(VAR_bool) 38 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 40 40 12 12 + Store 45(VAR_int) 48 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 50 50 12 12 + Store 52(VAR_uint) 12 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 56 56 12 12 + Store 61(VAR_float) 64 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 66 66 12 12 + Store 72(VAR_double) 75 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 77 77 12 12 + Store 82(VAR_int8_t) 85 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 87 87 12 12 + Store 92(VAR_uint8_t) 95 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 97 97 12 12 + Store 103(VAR_int16_t) 106 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 108 108 12 12 + Store 113(VAR_uint16_t) 116 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 118 118 12 12 + Store 123(VAR_int64_t) 126 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 128 128 12 12 + Store 133(VAR_uint64_t) 136 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 138 138 12 12 + Store 143(VAR_float16_t) 146 Return FunctionEnd From ffac211098916b479a141a2bfcf2d4ae2301a162 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 24 Oct 2023 13:58:41 -0600 Subject: [PATCH 311/594] Fix Windows GHA Tests The Windows tests job in Github Actions was incorrectly reporting 'success' on failed runs. This change ensures a single command is run in each test 'step' to help remove any guesswork w.r.t. the shell behavior on each platform. This change also takes the oppportunity to make the formatting more consistent in continuous_integration.yml. --- .github/workflows/continuous_integration.yml | 571 +++++++++---------- 1 file changed, 283 insertions(+), 288 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index fcadd98b21..fee752e94f 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -7,301 +7,296 @@ name: Continuous Integration on: - workflow_dispatch: - pull_request: - branches: - - main + workflow_dispatch: + pull_request: + branches: + - main permissions: read-all jobs: - linux: - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] - cmake_build_type: [Debug, Release] - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 - with: - key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py - - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} - env: - CC: ${{matrix.compiler.cc}} - CXX: ${{matrix.compiler.cxx}} - CMAKE_GENERATOR: Ninja - CMAKE_C_COMPILER_LAUNCHER: ccache - CMAKE_CXX_COMPILER_LAUNCHER: ccache - - name: Build - run: cmake --build build - - name: Install - run: cmake --install build --prefix build/install - - name: Test - run: | - cd build - ctest --output-on-failure && - cd ../Test && ./runtests + linux: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + with: + python-version: '3.7' + - name: Setup ccache + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + with: + key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install + - name: Test + run: ctest --output-on-failure --test-dir build + - name: Test (standalone) + run: cd Test && ./runtests - linux-asan: - runs-on: ubuntu-22.04 - strategy: - fail-fast: false - matrix: - compiler: [{cc: gcc, cxx: g++}] - cmake_build_type: [Debug] - flags: ['-fsanitize=address', '-fsanitize=thread'] - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 - with: - key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py - - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} - env: - CC: ${{matrix.compiler.cc}} - CXX: ${{matrix.compiler.cxx}} - CMAKE_GENERATOR: Ninja - CMAKE_C_COMPILER_LAUNCHER: ccache - CMAKE_CXX_COMPILER_LAUNCHER: ccache - CFLAGS: ${{matrix.flags}} - CXXFLAGS: ${{matrix.flags}} - LDFLAGS: ${{matrix.flags}} - - name: Build - run: cmake --build build - - name: Install - run: cmake --install build --prefix build/install - - name: Test - run: | - cd build - ctest --output-on-failure && - cd ../Test && ./runtests + linux-asan: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + compiler: [{cc: gcc, cxx: g++}] + cmake_build_type: [Debug] + flags: ['-fsanitize=address', '-fsanitize=thread'] + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + with: + python-version: '3.7' + - name: Setup ccache + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + with: + key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + CFLAGS: ${{matrix.flags}} + CXXFLAGS: ${{matrix.flags}} + LDFLAGS: ${{matrix.flags}} + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install + - name: Test + run: ctest --output-on-failure --test-dir build + - name: Test (standalone) + run: cd Test && ./runtests - # Ensure we can compile/run on an older distro - linux_min: - name: Linux Backcompat - runs-on: ubuntu-20.04 - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - with: - cmakeVersion: 3.17.2 - - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 - with: - key: linux_backcompat - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py - - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release - env: - CMAKE_C_COMPILER_LAUNCHER: ccache - CMAKE_CXX_COMPILER_LAUNCHER: ccache - - name: Build - run: cmake --build build - - name: Install - run: cmake --install build --prefix build/install - - name: Test - run: | - cd build - ctest --output-on-failure && - cd ../Test && ./runtests + # Ensure we can compile/run on an older distro + linux_min: + name: Linux Backcompat + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + with: + python-version: '3.7' + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + with: + cmakeVersion: 3.17.2 + - name: Setup ccache + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + with: + key: linux_backcompat + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release + env: + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install + - name: Test + run: ctest --output-on-failure --test-dir build + - name: Test (standalone) + run: cd Test && ./runtests - macos: - runs-on: ${{matrix.os}} - strategy: - fail-fast: false - matrix: - os: [macos-11, macos-12] - compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] - cmake_build_type: [Debug, Release] - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py - - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G "Ninja" - env: - CC: ${{matrix.compiler.cc}} - CXX: ${{matrix.compiler.cxx}} - - name: Build - run: cmake --build build - - name: Install - run: cmake --install build --prefix build/install - - name: Test - run: | - cd build - ctest --output-on-failure && - cd ../Test && ./runtests + macos: + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [macos-11, macos-12] + compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + with: + python-version: '3.7' + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G "Ninja" + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install + - name: Test + run: ctest --output-on-failure --test-dir build + - name: Test (standalone) + run: cd Test && ./runtests - windows: - runs-on: ${{matrix.os.genus}} - permissions: - contents: write - strategy: - fail-fast: false - matrix: - os: [{genus: windows-2019, family: windows}] - cmake_build_type: [Debug, Release] - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: | - python update_glslang_sources.py - - name: Build - run: | - cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" - cmake --build build --config ${{matrix.cmake_build_type}} --target install - - name: Test - run: | - cd build - ctest -C ${{matrix.cmake_build_type}} --output-on-failure - cd ../Test && bash runtests + windows: + runs-on: ${{matrix.os.genus}} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + os: [{genus: windows-2019, family: windows}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + with: + python-version: '3.7' + - name: Install GoogleTest + run: | + # check out pre-breakage version of googletest; can be deleted when + # issue 3128 is fixed + # git clone --depth=1 https://github.com/google/googletest.git External/googletest + mkdir -p External/googletest + cd External/googletest + git init + git remote add origin https://github.com/google/googletest.git + git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 + git reset --hard FETCH_HEAD + cd ../.. + - name: Update Glslang Sources + run: | + python update_glslang_sources.py + - name: Build + run: | + cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" + cmake --build build --config ${{matrix.cmake_build_type}} --target install + - name: Test + run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build + - name: Test (standalone) + run: bash -c 'cd ./Test && ./runtests' - android: - runs-on: ubuntu-22.04 - strategy: - matrix: - # Android NDK currently offers 2 different toolchains. - # Test both to ensure we are compatible with either approach. - LEGACY: [ON, OFF] - # Oldest/newest NDK currently provided by GitHub runners - # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android - NDK: [23.2.8568313, 25.2.9519653] - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 - with: - key: android-${{ matrix.LEGACY }}-${{ matrix.NDK }} - - name: Update Glslang Sources - run: ./update_glslang_sources.py - - name: Configure - run: | - cmake -S . -B build/ \ - --toolchain $ANDROID_HOME/ndk/${{ matrix.NDK }}/build/cmake/android.toolchain.cmake \ - -D CMAKE_BUILD_TYPE=Release \ - -D ANDROID_ABI=armeabi-v7a \ - -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \ - -D BUILD_TESTING=OFF - env: - CMAKE_GENERATOR: Ninja - CMAKE_C_COMPILER_LAUNCHER: ccache - CMAKE_CXX_COMPILER_LAUNCHER: ccache - - name: Build - run: cmake --build build/ + android: + runs-on: ubuntu-22.04 + strategy: + matrix: + # Android NDK currently offers 2 different toolchains. + # Test both to ensure we are compatible with either approach. + LEGACY: [ON, OFF] + # Oldest/newest NDK currently provided by GitHub runners + # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android + NDK: [23.2.8568313, 25.2.9519653] + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + with: + python-version: '3.7' + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - name: Setup ccache + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + with: + key: android-${{ matrix.LEGACY }}-${{ matrix.NDK }} + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: | + cmake -S . -B build/ \ + --toolchain $ANDROID_HOME/ndk/${{ matrix.NDK }}/build/cmake/android.toolchain.cmake \ + -D CMAKE_BUILD_TYPE=Release \ + -D ANDROID_ABI=armeabi-v7a \ + -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \ + -D BUILD_TESTING=OFF + env: + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build/ - emscripten: - runs-on: ubuntu-22.04 - steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 - with: - key: ubuntu-emscripten - - uses: mymindstorm/setup-emsdk@ab889da2abbcbb280f91ec4c215d3bb4f3a8f775 # v12 - - name: Update Glslang Sources - run: ./update_glslang_sources.py - - name: Configure - run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DBUILD_TESTING=OFF -DENABLE_OPT=OFF - env: - CMAKE_GENERATOR: Ninja - CMAKE_C_COMPILER_LAUNCHER: ccache - CMAKE_CXX_COMPILER_LAUNCHER: ccache - - name: Build - run: cmake --build build/web + emscripten: + runs-on: ubuntu-22.04 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + with: + python-version: '3.7' + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - name: Setup ccache + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + with: + key: ubuntu-emscripten + - uses: mymindstorm/setup-emsdk@ab889da2abbcbb280f91ec4c215d3bb4f3a8f775 # v12 + - name: Update Glslang Sources + run: ./update_glslang_sources.py + - name: Configure + run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DBUILD_TESTING=OFF -DENABLE_OPT=OFF + env: + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build/web From a9e698322e34561ce532033f40d4c9996be7ad2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?K=C3=A9vin=20Petit?= Date: Thu, 26 Oct 2023 00:59:52 +0100 Subject: [PATCH 312/594] Align spirv.hpp to SPIRV-Headers for SPV_KHR_cooperative_matrix Some of the enumerants used by this extension were missing a KHR suffix. --- SPIRV/GlslangToSpv.cpp | 8 ++++---- SPIRV/doc.cpp | 10 +++++----- SPIRV/spirv.hpp | 24 ++++++++++++------------ Test/baseResults/spv.coopmatKHR.comp.out | 6 +++--- 4 files changed, 24 insertions(+), 24 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index b6ac812900..daa855cace 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3715,13 +3715,13 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt // Determine Cooperative Matrix Operands bits from the signedness of the types. if (isTypeSignedInt(glslangOperands[0]->getAsTyped()->getBasicType())) - matrixOperands |= spv::CooperativeMatrixOperandsMatrixASignedComponentsMask; + matrixOperands |= spv::CooperativeMatrixOperandsMatrixASignedComponentsKHRMask; if (isTypeSignedInt(glslangOperands[1]->getAsTyped()->getBasicType())) - matrixOperands |= spv::CooperativeMatrixOperandsMatrixBSignedComponentsMask; + matrixOperands |= spv::CooperativeMatrixOperandsMatrixBSignedComponentsKHRMask; if (isTypeSignedInt(glslangOperands[2]->getAsTyped()->getBasicType())) - matrixOperands |= spv::CooperativeMatrixOperandsMatrixCSignedComponentsMask; + matrixOperands |= spv::CooperativeMatrixOperandsMatrixCSignedComponentsKHRMask; if (isTypeSignedInt(node->getBasicType())) - matrixOperands |= spv::CooperativeMatrixOperandsMatrixResultSignedComponentsMask; + matrixOperands |= spv::CooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask; std::vector idImmOps; idImmOps.push_back(spv::IdImmediate(true, operands[0])); diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 53ce9e152b..1a05c67360 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -802,11 +802,11 @@ const int CooperativeMatrixOperandsCeiling = 6; const char* CooperativeMatrixOperandsString(int op) { switch (op) { - case CooperativeMatrixOperandsMatrixASignedComponentsShift: return "ASignedComponents"; - case CooperativeMatrixOperandsMatrixBSignedComponentsShift: return "BSignedComponents"; - case CooperativeMatrixOperandsMatrixCSignedComponentsShift: return "CSignedComponents"; - case CooperativeMatrixOperandsMatrixResultSignedComponentsShift: return "ResultSignedComponents"; - case CooperativeMatrixOperandsSaturatingAccumulationShift: return "SaturatingAccumulation"; + case CooperativeMatrixOperandsMatrixASignedComponentsKHRShift: return "ASignedComponentsKHR"; + case CooperativeMatrixOperandsMatrixBSignedComponentsKHRShift: return "BSignedComponentsKHR"; + case CooperativeMatrixOperandsMatrixCSignedComponentsKHRShift: return "CSignedComponentsKHR"; + case CooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift: return "ResultSignedComponentsKHR"; + case CooperativeMatrixOperandsSaturatingAccumulationKHRShift: return "SaturatingAccumulationKHR"; default: return "Bad"; } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 02c1eded73..5999aba931 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1274,26 +1274,26 @@ enum PackedVectorFormat { }; enum CooperativeMatrixOperandsShift { - CooperativeMatrixOperandsMatrixASignedComponentsShift = 0, - CooperativeMatrixOperandsMatrixBSignedComponentsShift = 1, - CooperativeMatrixOperandsMatrixCSignedComponentsShift = 2, - CooperativeMatrixOperandsMatrixResultSignedComponentsShift = 3, - CooperativeMatrixOperandsSaturatingAccumulationShift = 4, + CooperativeMatrixOperandsMatrixASignedComponentsKHRShift = 0, + CooperativeMatrixOperandsMatrixBSignedComponentsKHRShift = 1, + CooperativeMatrixOperandsMatrixCSignedComponentsKHRShift = 2, + CooperativeMatrixOperandsMatrixResultSignedComponentsKHRShift = 3, + CooperativeMatrixOperandsSaturatingAccumulationKHRShift = 4, CooperativeMatrixOperandsMax = 0x7fffffff, }; enum CooperativeMatrixOperandsMask { CooperativeMatrixOperandsMaskNone = 0, - CooperativeMatrixOperandsMatrixASignedComponentsMask = 0x00000001, - CooperativeMatrixOperandsMatrixBSignedComponentsMask = 0x00000002, - CooperativeMatrixOperandsMatrixCSignedComponentsMask = 0x00000004, - CooperativeMatrixOperandsMatrixResultSignedComponentsMask = 0x00000008, - CooperativeMatrixOperandsSaturatingAccumulationMask = 0x00000010, + CooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001, + CooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002, + CooperativeMatrixOperandsMatrixCSignedComponentsKHRMask = 0x00000004, + CooperativeMatrixOperandsMatrixResultSignedComponentsKHRMask = 0x00000008, + CooperativeMatrixOperandsSaturatingAccumulationKHRMask = 0x00000010, }; enum CooperativeMatrixLayout { - CooperativeMatrixLayoutCooperativeMatrixRowMajorKHR = 0, - CooperativeMatrixLayoutCooperativeMatrixColumnMajorKHR = 1, + CooperativeMatrixLayoutRowMajorKHR = 0, + CooperativeMatrixLayoutColumnMajorKHR = 1, CooperativeMatrixLayoutMax = 0x7fffffff, }; diff --git a/Test/baseResults/spv.coopmatKHR.comp.out b/Test/baseResults/spv.coopmatKHR.comp.out index d72b0678aa..60a454003d 100644 --- a/Test/baseResults/spv.coopmatKHR.comp.out +++ b/Test/baseResults/spv.coopmatKHR.comp.out @@ -372,15 +372,15 @@ spv.coopmatKHR.comp 205: 202 Load 204(ms8A) 209: 206 Load 208(ms8B) 213: 210 Load 212(ms8C) - 214: 210 CooperativeMatrixMulAddKHR 205 209 213 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents + 214: 210 CooperativeMatrixMulAddKHR 205 209 213 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR 215: 202 Load 204(ms8A) 216: 206 Load 208(ms8B) 217: 210 Load 212(ms8C) - 218: 210 CooperativeMatrixMulAddKHR 215 216 217 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents + 218: 210 CooperativeMatrixMulAddKHR 215 216 217 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR 219: 202 Load 204(ms8A) 220: 206 Load 208(ms8B) 221: 210 Load 212(ms8C) - 223: 210 CooperativeMatrixMulAddKHR 219 220 221 ASignedComponents BSignedComponents CSignedComponents ResultSignedComponents SaturatingAccumulation + 223: 210 CooperativeMatrixMulAddKHR 219 220 221 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR SaturatingAccumulationKHR 228: 225 Load 227(m16) 229: 194(ptr) AccessChain 193(shmatrix) 82 CooperativeMatrixStoreKHR 229 228 62 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 From 8fa46582ec517911d053d7c49c8087d8717e191a Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 20 Oct 2023 17:56:16 -0600 Subject: [PATCH 313/594] Remove debugOptions from internal classes The debug options passed down from the public ShConstruct* functions to internal code is unused. This change removes the internal debugOptions fields and attempts to make it more obvious these fields are not used. This change does not change the public-facing interface. This change also adds the -Wshorten-64-to-32 warning to the StandAlone build in order to avoid unwanted 64-to-32 bit conversions in the future. Closes #3348. --- StandAlone/CMakeLists.txt | 5 +++++ StandAlone/StandAlone.cpp | 15 ++++++++------- glslang/GenericCodeGen/CodeGen.cpp | 8 ++------ glslang/GenericCodeGen/Link.cpp | 8 ++------ glslang/MachineIndependent/ShaderLang.cpp | 8 ++++---- glslang/Public/ShaderLang.h | 23 +++++++++-------------- 6 files changed, 30 insertions(+), 37 deletions(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index ad88442c91..8f37e54cb1 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -48,6 +48,11 @@ add_custom_command( set(SOURCES StandAlone.cpp DirStackFileIncluder.h ${GLSLANG_INTRINSIC_H}) add_executable(glslang-standalone ${SOURCES}) +if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") + target_compile_options(glslang-standalone PRIVATE -Wconversion) +elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) + target_compile_options(glslang-standalone PRIVATE -Wshorten-64-to-32) +endif() set_property(TARGET glslang-standalone PROPERTY FOLDER tools) set_property(TARGET glslang-standalone PROPERTY OUTPUT_NAME glslang) glslang_set_link_args(glslang-standalone) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index b31a644941..28565365b6 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -516,7 +516,7 @@ void ProcessGlobalBlockSettings(int& argc, char**& argv, std::string* name, unsi if (set) { errno = 0; - int setVal = ::strtol(argv[curArg], nullptr, 10); + int setVal = static_cast(::strtol(argv[curArg], nullptr, 10)); if (errno || setVal < 0) { printf("%s: invalid set\n", argv[curArg]); usage(); @@ -528,7 +528,7 @@ void ProcessGlobalBlockSettings(int& argc, char**& argv, std::string* name, unsi if (binding) { errno = 0; - int bindingVal = ::strtol(argv[curArg], nullptr, 10); + int bindingVal = static_cast(::strtol(argv[curArg], nullptr, 10)); if (errno || bindingVal < 0) { printf("%s: invalid binding\n", argv[curArg]); usage(); @@ -611,7 +611,7 @@ void ProcessArguments(std::vector>& workItem exit(EFailUsage); } errno = 0; - int location = ::strtol(split + 1, nullptr, 10); + int location = static_cast(::strtol(split + 1, nullptr, 10)); if (errno) { printf("%s: invalid location\n", arg); exit(EFailUsage); @@ -638,7 +638,7 @@ void ProcessArguments(std::vector>& workItem } else if (lowerword == "uniform-base") { if (argc <= 1) Error("no provided", lowerword.c_str()); - uniformBase = ::strtol(argv[1], nullptr, 10); + uniformBase = static_cast(::strtol(argv[1], nullptr, 10)); bumpArg(); break; } else if (lowerword == "client") { @@ -1172,7 +1172,7 @@ void CompileShaders(glslang::TWorklist& worklist) glslang::TWorkItem* workItem; if (Options & EOptionStdin) { if (worklist.remove(workItem)) { - ShHandle compiler = ShConstructCompiler(FindLanguage("stdin"), Options); + ShHandle compiler = ShConstructCompiler(FindLanguage("stdin"), 0); if (compiler == nullptr) return; @@ -1185,7 +1185,7 @@ void CompileShaders(glslang::TWorklist& worklist) } } else { while (worklist.remove(workItem)) { - ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), Options); + ShHandle compiler = ShConstructCompiler(FindLanguage(workItem->name), 0); if (compiler == nullptr) return; @@ -1876,7 +1876,8 @@ void CompileFile(const char* fileName, ShHandle compiler) for (int i = 0; i < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++i) { for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) { // ret = ShCompile(compiler, shaderStrings, NumShaderStrings, lengths, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); - ret = ShCompile(compiler, &shaderString, 1, nullptr, EShOptNone, GetResources(), Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); + ret = ShCompile(compiler, &shaderString, 1, nullptr, EShOptNone, GetResources(), 0, + (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); // const char* multi[12] = { "# ve", "rsion", " 300 e", "s", "\n#err", // "or should be l", "ine 1", "string 5\n", "float glo", "bal", // ";\n#error should be line 2\n void main() {", "global = 2.3;}" }; diff --git a/glslang/GenericCodeGen/CodeGen.cpp b/glslang/GenericCodeGen/CodeGen.cpp index b3c7226dfa..1ef2449625 100644 --- a/glslang/GenericCodeGen/CodeGen.cpp +++ b/glslang/GenericCodeGen/CodeGen.cpp @@ -41,10 +41,9 @@ // class TGenericCompiler : public TCompiler { public: - TGenericCompiler(EShLanguage l, int dOptions) : TCompiler(l, infoSink), debugOptions(dOptions) { } + TGenericCompiler(EShLanguage l) : TCompiler(l, infoSink) {} virtual bool compile(TIntermNode* root, int version = 0, EProfile profile = ENoProfile); TInfoSink infoSink; - int debugOptions; }; // @@ -52,10 +51,7 @@ class TGenericCompiler : public TCompiler { // compile object used by higher level code. It returns // a subclass of TCompiler. // -TCompiler* ConstructCompiler(EShLanguage language, int debugOptions) -{ - return new TGenericCompiler(language, debugOptions); -} +TCompiler* ConstructCompiler(EShLanguage language, int) { return new TGenericCompiler(language); } // // Delete the compiler made by ConstructCompiler diff --git a/glslang/GenericCodeGen/Link.cpp b/glslang/GenericCodeGen/Link.cpp index 5e28405f04..5df39b814a 100644 --- a/glslang/GenericCodeGen/Link.cpp +++ b/glslang/GenericCodeGen/Link.cpp @@ -44,11 +44,10 @@ // class TGenericLinker : public TLinker { public: - TGenericLinker(EShExecutable e, int dOptions) : TLinker(e, infoSink), debugOptions(dOptions) { } + TGenericLinker(EShExecutable e) : TLinker(e, infoSink) {} bool link(TCompilerList&, TUniformMap*) { return true; } void getAttributeBindings(ShBindingTable const **) const { } TInfoSink infoSink; - int debugOptions; }; // @@ -60,10 +59,7 @@ class TUniformLinkedMap : public TUniformMap { virtual int getLocation(const char*) { return 0; } }; -TShHandleBase* ConstructLinker(EShExecutable executable, int debugOptions) -{ - return new TGenericLinker(executable, debugOptions); -} +TShHandleBase* ConstructLinker(EShExecutable executable, int) { return new TGenericLinker(executable); } void DeleteLinker(TShHandleBase* linker) { diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 9a42acae91..b4dfacfa3c 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1333,22 +1333,22 @@ int ShInitialize() // objects. // -ShHandle ShConstructCompiler(const EShLanguage language, int debugOptions) +ShHandle ShConstructCompiler(const EShLanguage language, int /*debugOptions unused*/) { if (!InitThread()) return nullptr; - TShHandleBase* base = static_cast(ConstructCompiler(language, debugOptions)); + TShHandleBase* base = static_cast(ConstructCompiler(language, 0)); return reinterpret_cast(base); } -ShHandle ShConstructLinker(const EShExecutable executable, int debugOptions) +ShHandle ShConstructLinker(const EShExecutable executable, int /*debugOptions unused*/) { if (!InitThread()) return nullptr; - TShHandleBase* base = static_cast(ConstructLinker(executable, debugOptions)); + TShHandleBase* base = static_cast(ConstructLinker(executable, 0)); return reinterpret_cast(base); } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index c22cb2b43e..e0ec47f8fc 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -318,8 +318,8 @@ typedef void* ShHandle; // Driver calls these to create and destroy compiler/linker // objects. // -GLSLANG_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int debugOptions); // one per shader -GLSLANG_EXPORT ShHandle ShConstructLinker(const EShExecutable, int debugOptions); // one per shader pair +GLSLANG_EXPORT ShHandle ShConstructCompiler(const EShLanguage, int /*debugOptions unused*/); // one per shader +GLSLANG_EXPORT ShHandle ShConstructLinker(const EShExecutable, int /*debugOptions unused*/); // one per shader pair GLSLANG_EXPORT ShHandle ShConstructUniformMap(); // one per uniform namespace (currently entire program object) GLSLANG_EXPORT void ShDestruct(ShHandle); @@ -330,18 +330,13 @@ GLSLANG_EXPORT void ShDestruct(ShHandle); // The info-log should be written by ShCompile into // ShHandle, so it can answer future queries. // -GLSLANG_EXPORT int ShCompile( - const ShHandle, - const char* const shaderStrings[], - const int numStrings, - const int* lengths, - const EShOptimizationLevel, - const TBuiltInResource *resources, - int debugOptions, - int defaultVersion = 110, // use 100 for ES environment, overridden by #version in shader - bool forwardCompatible = false, // give errors for use of deprecated features - EShMessages messages = EShMsgDefault // warnings and errors - ); +GLSLANG_EXPORT int ShCompile(const ShHandle, const char* const shaderStrings[], const int numStrings, + const int* lengths, const EShOptimizationLevel, const TBuiltInResource* resources, + int, // debugOptions unused + int defaultVersion = 110, // use 100 for ES environment, overridden by #version in shader + bool forwardCompatible = false, // give errors for use of deprecated features + EShMessages messages = EShMsgDefault // warnings and errors +); GLSLANG_EXPORT int ShLinkExt( const ShHandle, // linker object From 24914a47b2883207a0229f570747ead341049870 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 06:48:38 +0000 Subject: [PATCH 314/594] Bump ossf/scorecard-action from 2.3.0 to 2.3.1 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.3.0 to 2.3.1. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/483ef80eb98fb506c348f7d62e28055e49fe2398...0864cf19026789058feabb7e87baa5f140aac736) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0abb48eb86..d2e95fe36b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@483ef80eb98fb506c348f7d62e28055e49fe2398 # v2.3.0 + uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 with: results_file: results.sarif results_format: sarif From f8dd5adde4cc5aec08243a82d8515c4fcb536b18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 30 Oct 2023 06:48:43 +0000 Subject: [PATCH 315/594] Bump github/codeql-action from 2.22.4 to 2.22.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.4 to 2.22.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/49abf0ba24d0b7953cb586944e918a0b92074c80...74483a38d39275f33fcff5f35b679b5ca4a26a99) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d2e95fe36b..63ee9aae5e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@49abf0ba24d0b7953cb586944e918a0b92074c80 # v2.22.4 + uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5 with: sarif_file: results.sarif From 1dde7113bbdb4472bb15fcad12a33a0cac2c40d1 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Mon, 30 Oct 2023 15:28:36 -0400 Subject: [PATCH 316/594] tweak error behavior for redeclared uniforms for vulkan-relaxed avoids nullptr crash from reading memberType's name, and more user friendly error message. --- .../vk.relaxed.errorcheck.vert.out | 88 +++++++++++-------- Test/vk.relaxed.errorcheck.frag | 7 +- .../MachineIndependent/ParseContextBase.cpp | 6 +- 3 files changed, 59 insertions(+), 42 deletions(-) diff --git a/Test/baseResults/vk.relaxed.errorcheck.vert.out b/Test/baseResults/vk.relaxed.errorcheck.vert.out index 5c6ecf92c1..24cf3efec4 100644 --- a/Test/baseResults/vk.relaxed.errorcheck.vert.out +++ b/Test/baseResults/vk.relaxed.errorcheck.vert.out @@ -32,29 +32,39 @@ Shader version: 460 0:? 'gl_InstanceIndex' ( in int InstanceIndex) vk.relaxed.errorcheck.frag +ERROR: 0:11: 'test' : Redeclaration: already declared as " uniform highp float" +ERROR: 1 compilation errors. No code generated. + + Shader version: 460 gl_FragCoord origin is upper left -0:? Sequence -0:10 Function Definition: foo( ( global highp 4-component vector of float) -0:10 Function Parameters: -0:11 Sequence -0:11 Branch: Return with expression -0:11 a: direct index for structure ( uniform highp 4-component vector of float) -0:11 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a}) -0:11 Constant: -0:11 0 (const uint) -0:14 Function Definition: main( ( global void) -0:14 Function Parameters: -0:15 Sequence -0:15 move second child to first child ( temp highp 4-component vector of float) -0:15 'o' ( out highp 4-component vector of float) -0:15 add ( temp highp 4-component vector of float) -0:15 'io' (layout( location=0) smooth in highp 4-component vector of float) -0:15 Function Call: foo( ( global highp 4-component vector of float) +ERROR: node is still EOpNull! +0:13 Function Definition: foo( ( global highp 4-component vector of float) +0:13 Function Parameters: +0:14 Sequence +0:14 Branch: Return with expression +0:14 add ( temp highp 4-component vector of float) +0:14 a: direct index for structure ( uniform highp 4-component vector of float) +0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) +0:14 Constant: +0:14 0 (const uint) +0:14 Construct vec4 ( temp highp 4-component vector of float) +0:14 test: direct index for structure ( uniform highp float) +0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) +0:14 Constant: +0:14 1 (const uint) +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: +0:18 Sequence +0:18 move second child to first child ( temp highp 4-component vector of float) +0:18 'o' ( out highp 4-component vector of float) +0:18 add ( temp highp 4-component vector of float) +0:18 'io' (layout( location=0) smooth in highp 4-component vector of float) +0:18 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) -0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a}) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) Linked vertex stage: @@ -98,27 +108,33 @@ Shader version: 460 0:? 'gl_InstanceIndex' ( in int InstanceIndex) Shader version: 460 gl_FragCoord origin is upper left -0:? Sequence -0:10 Function Definition: foo( ( global highp 4-component vector of float) -0:10 Function Parameters: -0:11 Sequence -0:11 Branch: Return with expression -0:11 a: direct index for structure ( uniform highp 4-component vector of float) -0:11 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a}) -0:11 Constant: -0:11 0 (const uint) -0:14 Function Definition: main( ( global void) -0:14 Function Parameters: -0:15 Sequence -0:15 move second child to first child ( temp highp 4-component vector of float) -0:15 'o' ( out highp 4-component vector of float) -0:15 add ( temp highp 4-component vector of float) -0:15 'io' (layout( location=0) smooth in highp 4-component vector of float) -0:15 Function Call: foo( ( global highp 4-component vector of float) +ERROR: node is still EOpNull! +0:13 Function Definition: foo( ( global highp 4-component vector of float) +0:13 Function Parameters: +0:14 Sequence +0:14 Branch: Return with expression +0:14 add ( temp highp 4-component vector of float) +0:14 a: direct index for structure ( uniform highp 4-component vector of float) +0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) +0:14 Constant: +0:14 0 (const uint) +0:14 Construct vec4 ( temp highp 4-component vector of float) +0:14 test: direct index for structure ( uniform highp float) +0:14 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) +0:14 Constant: +0:14 1 (const uint) +0:17 Function Definition: main( ( global void) +0:17 Function Parameters: +0:18 Sequence +0:18 move second child to first child ( temp highp 4-component vector of float) +0:18 'o' ( out highp 4-component vector of float) +0:18 add ( temp highp 4-component vector of float) +0:18 'io' (layout( location=0) smooth in highp 4-component vector of float) +0:18 Function Call: foo( ( global highp 4-component vector of float) 0:? Linker Objects 0:? 'io' (layout( location=0) smooth in highp 4-component vector of float) 0:? 'o' ( out highp 4-component vector of float) -0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a}) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp float test}) Validation failed SPIR-V is not generated for failed compile or link diff --git a/Test/vk.relaxed.errorcheck.frag b/Test/vk.relaxed.errorcheck.frag index b75b50b77f..086c1d079f 100644 --- a/Test/vk.relaxed.errorcheck.frag +++ b/Test/vk.relaxed.errorcheck.frag @@ -7,10 +7,13 @@ out vec4 o; // default uniforms will be gathered into a uniform block uniform vec4 a; // declared in both stages with different types +uniform float test; // declared twice in this compilation unit +uniform vec2 test; + vec4 foo() { - return a; + return a + vec4(test); } void main() { o = io + foo(); -} \ No newline at end of file +} diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index d73f403b80..e8e32d9267 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -626,10 +626,8 @@ void TParseContextBase::growGlobalUniformBlock(const TSourceLoc& loc, TType& mem if (symbol) { if (memberType != symbol->getType()) { TString err; - err += "\"" + memberType.getCompleteString() + "\""; - err += " versus "; - err += "\"" + symbol->getType().getCompleteString() + "\""; - error(loc, "Types must match:", memberType.getFieldName().c_str(), err.c_str()); + err += "Redeclaration: already declared as \"" + symbol->getType().getCompleteString() + "\""; + error(loc, "", memberName.c_str(), err.c_str()); } return; } From 302a663a38b89e4d8c3ac8edf754ca4f2d78538c Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 31 Oct 2023 12:29:28 -0600 Subject: [PATCH 317/594] Use googletest version 1.14.0 --- .github/workflows/continuous_deployment.yml | 48 +------------ .github/workflows/continuous_integration.yml | 76 ++------------------ README.md | 18 ----- known_good.json | 7 ++ known_good_khr.json | 7 ++ 5 files changed, 22 insertions(+), 134 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 06dc34f10f..bf4028b107 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -56,21 +56,7 @@ jobs: run: | sudo apt-get -qq update sudo apt-get install -y clang-6.0 - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: | - ./update_glslang_sources.py + - run: ./update_glslang_sources.py - name: Build env: CC: ${{matrix.compiler.cc}} @@ -132,21 +118,7 @@ jobs: - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: | - ./update_glslang_sources.py + - run: ./update_glslang_sources.py - name: Build env: CC: ${{matrix.compiler.cc}} @@ -205,21 +177,7 @@ jobs: - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: | - python update_glslang_sources.py + - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index fee752e94f..4082c1d12e 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -32,20 +32,7 @@ jobs: uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py + - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} env: @@ -81,20 +68,7 @@ jobs: uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py + - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} env: @@ -131,20 +105,7 @@ jobs: uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: linux_backcompat - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py + - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release env: @@ -173,20 +134,7 @@ jobs: with: python-version: '3.7' - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: ./update_glslang_sources.py + - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G "Ninja" env: @@ -216,21 +164,7 @@ jobs: - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - - name: Install GoogleTest - run: | - # check out pre-breakage version of googletest; can be deleted when - # issue 3128 is fixed - # git clone --depth=1 https://github.com/google/googletest.git External/googletest - mkdir -p External/googletest - cd External/googletest - git init - git remote add origin https://github.com/google/googletest.git - git fetch --depth 1 origin 0c400f67fcf305869c5fb113dd296eca266c9725 - git reset --hard FETCH_HEAD - cd ../.. - - name: Update Glslang Sources - run: | - python update_glslang_sources.py + - run: python update_glslang_sources.py - name: Build run: | cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" diff --git a/README.md b/README.md index ea1e867b46..cd43e30b4c 100644 --- a/README.md +++ b/README.md @@ -121,24 +121,6 @@ git clone https://github.com/KhronosGroup/glslang.git #### 2) Check-Out External Projects -```bash -cd -git clone https://github.com/google/googletest.git External/googletest -``` - -TEMPORARY NOTICE: additionally perform the following to avoid a current -breakage in googletest: - -```bash -cd External/googletest -git checkout 0c400f67fcf305869c5fb113dd296eca266c9725 -cd ../.. -``` - -If you wish to assure that SPIR-V generated from HLSL is legal for Vulkan, -wish to invoke -Os to reduce SPIR-V size from HLSL or GLSL, or wish to run the -integrated test suite, install spirv-tools with this: - ```bash ./update_glslang_sources.py ``` diff --git a/known_good.json b/known_good.json index 1cbcb09646..876381cf09 100644 --- a/known_good.json +++ b/known_good.json @@ -13,6 +13,13 @@ "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", "commit" : "e867c06631767a2d96424cbec530f9ee5e78180f" + }, + { + "name": "googletest", + "site": "github", + "subrepo": "google/googletest", + "subdir": "External/googletest", + "commit": "v1.14.0" } ] } diff --git a/known_good_khr.json b/known_good_khr.json index a64198a81f..7911c71441 100644 --- a/known_good_khr.json +++ b/known_good_khr.json @@ -13,6 +13,13 @@ "subrepo" : "spirv/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", "commit" : "gitlab-prelim-rc4" + }, + { + "name": "googletest", + "site": "github", + "subrepo": "google/googletest", + "subdir": "External/googletest", + "commit": "v1.14.0" } ] } From 65f59c81e79b2399f59c5258c3e24d3d1fc575ad Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Mon, 6 Nov 2023 16:04:15 +0800 Subject: [PATCH 318/594] GL_EXT_spirv_intrinsics: Fix a typo in function naming hasSprivDecorate => hasSpirvDecorate Also, revise a comment. --- SPIRV/GlslangToSpv.cpp | 6 +++--- glslang/Include/Types.h | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 9 ++++----- glslang/MachineIndependent/iomapper.cpp | 4 ++-- 4 files changed, 11 insertions(+), 12 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index daa855cace..ace58ec0db 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4946,7 +4946,7 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, // // Add SPIR-V decorations for members (GL_EXT_spirv_intrinsics) // - if (glslangMember.getQualifier().hasSprivDecorate()) { + if (glslangMember.getQualifier().hasSpirvDecorate()) { const glslang::TSpirvDecorate& spirvDecorate = glslangMember.getQualifier().getSpirvDecorate(); // Add spirv_decorate @@ -9599,9 +9599,9 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol } // - // Add SPIR-V decorations for structure (GL_EXT_spirv_intrinsics) + // Add SPIR-V decorations (GL_EXT_spirv_intrinsics) // - if (symbol->getType().getQualifier().hasSprivDecorate()) { + if (symbol->getType().getQualifier().hasSpirvDecorate()) { const glslang::TSpirvDecorate& spirvDecorate = symbol->getType().getQualifier().getSpirvDecorate(); // Add spirv_decorate diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 26aba9bbf4..0a1aff8d2a 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1075,7 +1075,7 @@ class TQualifier { } // GL_EXT_spirv_intrinsics - bool hasSprivDecorate() const { return spirvDecorate != nullptr; } + bool hasSpirvDecorate() const { return spirvDecorate != nullptr; } void setSpirvDecorate(int decoration, const TIntermAggregate* args = nullptr); void setSpirvDecorateId(int decoration, const TIntermAggregate* args); void setSpirvDecorateString(int decoration, const TIntermAggregate* args); @@ -2096,7 +2096,7 @@ class TType { const auto appendInt = [&](int i) { typeString.append(std::to_string(i).c_str()); }; if (getQualifiers) { - if (qualifier.hasSprivDecorate()) + if (qualifier.hasSpirvDecorate()) appendStr(qualifier.getSpirvDecorateQualifierString().c_str()); if (qualifier.hasLayout()) { diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 592e9aa8ad..afc6ab3df2 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4191,8 +4191,8 @@ void TParseContext::mergeQualifiers(const TSourceLoc& loc, TQualifier& dst, cons dst.spirvStorageClass = src.spirvStorageClass; // SPIR-V decorate qualifiers (GL_EXT_spirv_intrinsics) - if (src.hasSprivDecorate()) { - if (dst.hasSprivDecorate()) { + if (src.hasSpirvDecorate()) { + if (dst.hasSpirvDecorate()) { const TSpirvDecorate& srcSpirvDecorate = src.getSpirvDecorate(); TSpirvDecorate& dstSpirvDecorate = dst.getSpirvDecorate(); for (auto& decorate : srcSpirvDecorate.decorates) { @@ -6326,8 +6326,7 @@ void TParseContext::layoutObjectCheck(const TSourceLoc& loc, const TSymbol& symb switch (qualifier.storage) { case EvqVaryingIn: case EvqVaryingOut: - if (!type.getQualifier().isTaskMemory() && - !type.getQualifier().hasSprivDecorate() && + if (!type.getQualifier().isTaskMemory() && !type.getQualifier().hasSpirvDecorate() && (type.getBasicType() != EbtBlock || (!(*type.getStruct())[0].type->getQualifier().hasLocation() && (*type.getStruct())[0].type->getQualifier().builtIn == EbvNone))) @@ -8540,7 +8539,7 @@ void TParseContext::declareBlock(const TSourceLoc& loc, TTypeList& typeList, con memberQualifier.storage = EvqtaskPayloadSharedEXT; if (memberQualifier.storage == EvqSpirvStorageClass) error(memberLoc, "member cannot have a spirv_storage_class qualifier", memberType.getFieldName().c_str(), ""); - if (memberQualifier.hasSprivDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty()) + if (memberQualifier.hasSpirvDecorate() && !memberQualifier.getSpirvDecorate().decorateIds.empty()) error(memberLoc, "member cannot have a spirv_decorate_id qualifier", memberType.getFieldName().c_str(), ""); if ((currentBlockQualifier.storage == EvqUniform || currentBlockQualifier.storage == EvqBuffer) && (memberQualifier.isInterpolation() || memberQualifier.isAuxiliary())) error(memberLoc, "member of uniform or buffer block cannot have an auxiliary or interpolation qualifier", memberType.getFieldName().c_str(), ""); diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 63dedf76c6..ed853256b1 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -866,7 +866,7 @@ int TDefaultIoResolverBase::resolveInOutLocation(EShLanguage stage, TVarEntryInf } // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate - if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) { + if (type.getQualifier().hasLocation() || type.isBuiltIn() || type.getQualifier().hasSpirvDecorate()) { return ent.newLocation = -1; } @@ -953,7 +953,7 @@ int TDefaultGlslIoResolver::resolveInOutLocation(EShLanguage stage, TVarEntryInf return ent.newLocation = type.getQualifier().layoutLocation; } // no locations added if already present, a built-in variable, or a variable with SPIR-V decorate - if (type.isBuiltIn() || type.getQualifier().hasSprivDecorate()) { + if (type.isBuiltIn() || type.getQualifier().hasSpirvDecorate()) { return ent.newLocation = -1; } // no locations on blocks of built-in variables From f102d0f4fa170ae12a891a532341834a61b919b5 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 7 Nov 2023 15:18:48 -0700 Subject: [PATCH 319/594] Fix update_glslang_sources.py to not use distutils The distutils package was removed in Python 3.12, however its only usage in this script can easily be replaced with functionality available in the builtin os package in Python 3.2 and later. Fixes #3393 --- update_glslang_sources.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/update_glslang_sources.py b/update_glslang_sources.py index 20f303ba3b..2e02c96eeb 100755 --- a/update_glslang_sources.py +++ b/update_glslang_sources.py @@ -17,12 +17,9 @@ """Get source files for Glslang and its dependencies from public repositories. """ -from __future__ import print_function - import argparse import json -import distutils.dir_util -import os.path +import os import subprocess import sys @@ -106,7 +103,7 @@ def HasCommit(self): cwd=self.subdir) def Clone(self): - distutils.dir_util.mkpath(self.subdir) + os.makedirs(self.subdir, exist_ok=True) command_output(['git', 'clone', self.GetUrl(), '.'], self.subdir) def Fetch(self): @@ -139,7 +136,7 @@ def main(): commits = GetGoodCommits(args.site) - distutils.dir_util.mkpath(args.dir) + os.makedirs(args.dir, exist_ok=True) print('Change directory to {d}'.format(d=args.dir)) os.chdir(args.dir) From 091b9fd97959a2007f3ddc4ae903915c7b504715 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Mon, 6 Nov 2023 15:59:30 -0700 Subject: [PATCH 320/594] Fix GL_ARB_shader_storage_buffer_object version Ensure that GL_ARB_shader_storage_buffer_object is available from version GL 400 to GL 420. Closes #3263. --- Test/400.frag | 33 + Test/baseResults/400.frag.out | 1261 +++++++++++---------- glslang/MachineIndependent/Initialize.cpp | 22 +- 3 files changed, 700 insertions(+), 616 deletions(-) diff --git a/Test/400.frag b/Test/400.frag index 039d4809f1..b9bc17aac5 100644 --- a/Test/400.frag +++ b/Test/400.frag @@ -7,6 +7,39 @@ uniform sampler2D arrayedSampler[5]; uniform usampler2DRect samp2dr; uniform isampler2DArray isamp2DA; +#extension GL_ARB_shader_storage_buffer_object : enable + +buffer Buffer +{ + int atomi; + uint atomu; +}; + +void atomicOpPass() +{ + int origi = atomicAdd(atomi, 3); + uint origu = atomicAnd(atomu, 7u); + origi = atomicExchange(atomi, 4); + origu = atomicCompSwap(atomu, 10u, 8u); +} + +buffer ssboElem01 +{ + int member01; + int memberArr01[2]; + int memberUnsizedArr01[]; +} ssboStd430Arr[2]; + +// if turns on EShReflectionSharedStd140SSBO, SPIR-V would be different +buffer ssboElem02 +{ + int member02; + int memberArr02[2]; + int memberUnsizedArr02[]; +} ssboSharedArr[2]; + +#extension GL_ARB_shader_storage_buffer_object : disable + void main() { vec4 v; diff --git a/Test/baseResults/400.frag.out b/Test/baseResults/400.frag.out index db3cd24302..a148ae5fac 100644 --- a/Test/baseResults/400.frag.out +++ b/Test/baseResults/400.frag.out @@ -1,510 +1,554 @@ 400.frag -ERROR: 0:18: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument -ERROR: 0:22: 'textureGatherOffset(...)' : must be a compile-time constant: component argument -ERROR: 0:23: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument -ERROR: 0:30: 'location qualifier on input' : not supported for this version or the enabled extensions -ERROR: 0:38: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions -ERROR: 0:40: 'gl_Color' : identifiers starting with "gl_" are reserved -ERROR: 0:41: 'redeclaration' : cannot change qualification of gl_ClipDistance -ERROR: 0:43: 'gl_FragCoord' : cannot redeclare after use -ERROR: 0:51: 'texel offset' : argument must be compile-time constant -ERROR: 0:53: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] -ERROR: 0:53: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] -ERROR: 0:54: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] -ERROR: 0:54: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] -ERROR: 0:57: 'patch' : not supported in this stage: fragment -ERROR: 0:58: 'patch' : not supported in this stage: fragment -ERROR: 0:58: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output -ERROR: 0:73: 'dFdxFine' : required extension not requested: GL_ARB_derivative_control -ERROR: 0:74: 'dFdyCoarse' : required extension not requested: GL_ARB_derivative_control -ERROR: 0:75: 'fwidthCoarse' : required extension not requested: GL_ARB_derivative_control -ERROR: 0:75: 'fwidthFine' : required extension not requested: GL_ARB_derivative_control -ERROR: 0:104: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output -ERROR: 0:123: 'interpolateAtCentroid' : no matching overloaded function found -ERROR: 0:125: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element -ERROR: 0:127: 'interpolateAtSample' : no matching overloaded function found -ERROR: 0:132: 'interpolateAtOffset' : no matching overloaded function found -ERROR: 0:134: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element -ERROR: 0:135: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element -ERROR: 0:136: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element -ERROR: 0:139: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element -ERROR: 0:140: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element -ERROR: 0:183: 'textureQueryLod' : no matching overloaded function found -ERROR: 0:183: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' -ERROR: 0:184: 'textureQueryLod' : no matching overloaded function found -ERROR: 0:184: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' -ERROR: 0:197: 'subroutine' : feature not yet implemented -ERROR: 0:197: '' : default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification -ERROR: 0:198: 'subroutine' : feature not yet implemented -ERROR: 0:199: 'subroutine' : feature not yet implemented -ERROR: 0:201: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER +ERROR: 0:51: 'textureGatherOffsets(...)' : must be a compile-time constant: offsets argument +ERROR: 0:55: 'textureGatherOffset(...)' : must be a compile-time constant: component argument +ERROR: 0:56: 'textureGatherOffset(...)' : must be 0, 1, 2, or 3: component argument +ERROR: 0:63: 'location qualifier on input' : not supported for this version or the enabled extensions +ERROR: 0:71: 'location qualifier on uniform or buffer' : not supported for this version or the enabled extensions +ERROR: 0:73: 'gl_Color' : identifiers starting with "gl_" are reserved +ERROR: 0:74: 'redeclaration' : cannot change qualification of gl_ClipDistance +ERROR: 0:76: 'gl_FragCoord' : cannot redeclare after use +ERROR: 0:84: 'texel offset' : argument must be compile-time constant +ERROR: 0:86: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] +ERROR: 0:86: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] +ERROR: 0:87: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] +ERROR: 0:87: 'texel offset' : value is out of range: [gl_MinProgramTexelOffset, gl_MaxProgramTexelOffset] +ERROR: 0:90: 'patch' : not supported in this stage: fragment +ERROR: 0:91: 'patch' : not supported in this stage: fragment +ERROR: 0:91: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output +ERROR: 0:106: 'dFdxFine' : required extension not requested: GL_ARB_derivative_control +ERROR: 0:107: 'dFdyCoarse' : required extension not requested: GL_ARB_derivative_control +ERROR: 0:108: 'fwidthCoarse' : required extension not requested: GL_ARB_derivative_control +ERROR: 0:108: 'fwidthFine' : required extension not requested: GL_ARB_derivative_control +ERROR: 0:137: 'centroid/sample/patch' : can't use auxiliary qualifier on a fragment output +ERROR: 0:156: 'interpolateAtCentroid' : no matching overloaded function found +ERROR: 0:158: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:160: 'interpolateAtSample' : no matching overloaded function found +ERROR: 0:165: 'interpolateAtOffset' : no matching overloaded function found +ERROR: 0:167: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:168: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:169: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:172: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:173: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:216: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:216: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' +ERROR: 0:217: 'textureQueryLod' : no matching overloaded function found +ERROR: 0:217: 'assign' : cannot convert from ' const float' to ' temp 2-component vector of float' +ERROR: 0:230: 'subroutine' : feature not yet implemented +ERROR: 0:230: '' : default qualifier requires 'uniform', 'buffer', 'in', 'out' or 'shared' storage qualification +ERROR: 0:231: 'subroutine' : feature not yet implemented +ERROR: 0:232: 'subroutine' : feature not yet implemented +ERROR: 0:234: '' : syntax error, unexpected PRECISE, expecting IDENTIFIER ERROR: 39 compilation errors. No code generated. Shader version: 400 Requested GL_ARB_derivative_control Requested GL_ARB_separate_shader_objects +Requested GL_ARB_shader_storage_buffer_object gl_FragCoord pixel center is integer gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:10 Function Definition: main( ( global void) -0:10 Function Parameters: -0:? Sequence -0:13 move second child to first child ( temp 4-component vector of float) -0:13 'v' ( temp 4-component vector of float) -0:13 texture ( global 4-component vector of float) -0:13 indirect index ( temp sampler2D) -0:13 'arrayedSampler' ( uniform 5-element array of sampler2D) -0:13 'i' ( flat in int) -0:13 'c2D' ( smooth in 2-component vector of float) -0:14 move second child to first child ( temp float) -0:14 direct index ( temp float) -0:14 'outp' ( out 4-component vector of float) -0:14 Constant: -0:14 0 (const int) -0:14 direct index ( smooth temp float ClipDistance) -0:14 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) -0:14 Constant: -0:14 1 (const int) -0:18 Sequence -0:18 move second child to first child ( temp 4-component vector of uint) -0:18 'uv4' ( temp 4-component vector of uint) -0:18 textureGatherOffsets ( global 4-component vector of uint) -0:18 'samp2dr' ( uniform usampler2DRect) -0:18 'c2D' ( smooth in 2-component vector of float) -0:18 'offsets' ( temp 4-element array of 2-component vector of int) -0:18 Constant: -0:18 2 (const int) -0:19 move second child to first child ( temp 4-component vector of uint) -0:19 'uv4' ( temp 4-component vector of uint) -0:19 textureGatherOffsets ( global 4-component vector of uint) -0:19 'samp2dr' ( uniform usampler2DRect) -0:19 'c2D' ( smooth in 2-component vector of float) -0:19 Constant: -0:19 1 (const int) -0:19 2 (const int) -0:19 3 (const int) -0:19 4 (const int) -0:19 15 (const int) -0:19 16 (const int) -0:19 -2 (const int) -0:19 0 (const int) -0:19 Constant: -0:19 2 (const int) +0:18 Function Definition: atomicOpPass( ( global void) +0:18 Function Parameters: +0:20 Sequence 0:20 Sequence -0:20 move second child to first child ( temp 4-component vector of float) -0:20 'v4' ( temp 4-component vector of float) -0:20 textureGather ( global 4-component vector of float) -0:20 direct index ( temp sampler2D) -0:20 'arrayedSampler' ( uniform 5-element array of sampler2D) +0:20 move second child to first child ( temp int) +0:20 'origi' ( temp int) +0:20 AtomicAdd ( global int) +0:20 atomi: direct index for structure (layout( column_major shared) buffer int) +0:20 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) 0:20 Constant: -0:20 0 (const int) -0:20 'c2D' ( smooth in 2-component vector of float) +0:20 0 (const uint) +0:20 Constant: +0:20 3 (const int) 0:21 Sequence -0:21 move second child to first child ( temp 4-component vector of int) -0:21 'iv4' ( temp 4-component vector of int) -0:21 textureGatherOffset ( global 4-component vector of int) -0:21 'isamp2DA' ( uniform isampler2DArray) -0:21 Constant: -0:21 0.100000 -0:21 0.100000 -0:21 0.100000 -0:21 Constant: -0:21 1 (const int) -0:21 1 (const int) +0:21 move second child to first child ( temp uint) +0:21 'origu' ( temp uint) +0:21 AtomicAnd ( global uint) +0:21 atomu: direct index for structure (layout( column_major shared) buffer uint) +0:21 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) +0:21 Constant: +0:21 1 (const uint) 0:21 Constant: -0:21 3 (const int) -0:22 move second child to first child ( temp 4-component vector of int) -0:22 'iv4' ( temp 4-component vector of int) -0:22 textureGatherOffset ( global 4-component vector of int) -0:22 'isamp2DA' ( uniform isampler2DArray) +0:21 7 (const uint) +0:22 move second child to first child ( temp int) +0:22 'origi' ( temp int) +0:22 AtomicExchange ( global int) +0:22 atomi: direct index for structure (layout( column_major shared) buffer int) +0:22 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) +0:22 Constant: +0:22 0 (const uint) 0:22 Constant: -0:22 0.100000 -0:22 0.100000 -0:22 0.100000 -0:22 Constant: -0:22 1 (const int) -0:22 1 (const int) -0:22 'i' ( flat in int) -0:23 move second child to first child ( temp 4-component vector of int) -0:23 'iv4' ( temp 4-component vector of int) -0:23 textureGatherOffset ( global 4-component vector of int) -0:23 'isamp2DA' ( uniform isampler2DArray) -0:23 Constant: -0:23 0.100000 -0:23 0.100000 -0:23 0.100000 +0:22 4 (const int) +0:23 move second child to first child ( temp uint) +0:23 'origu' ( temp uint) +0:23 AtomicCompSwap ( global uint) +0:23 atomu: direct index for structure (layout( column_major shared) buffer uint) +0:23 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) +0:23 Constant: +0:23 1 (const uint) 0:23 Constant: -0:23 1 (const int) -0:23 1 (const int) +0:23 10 (const uint) 0:23 Constant: -0:23 4 (const int) -0:24 move second child to first child ( temp 4-component vector of int) -0:24 'iv4' ( temp 4-component vector of int) -0:24 textureGatherOffset ( global 4-component vector of int) -0:24 'isamp2DA' ( uniform isampler2DArray) -0:24 Constant: -0:24 0.100000 -0:24 0.100000 -0:24 0.100000 -0:24 Constant: -0:24 1 (const int) -0:24 1 (const int) -0:24 Constant: -0:24 3 (const int) -0:25 move second child to first child ( temp 4-component vector of int) -0:25 'iv4' ( temp 4-component vector of int) -0:25 textureGatherOffset ( global 4-component vector of int) -0:25 'isamp2DA' ( uniform isampler2DArray) -0:25 Constant: -0:25 0.100000 -0:25 0.100000 -0:25 0.100000 -0:25 Construct ivec2 ( temp 2-component vector of int) -0:25 'i' ( flat in int) -0:27 Sequence -0:27 move second child to first child ( temp 4-component vector of float) -0:27 'c' ( temp 4-component vector of float) -0:27 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) -0:47 Function Definition: foo23( ( global void) -0:47 Function Parameters: +0:23 8 (const uint) +0:43 Function Definition: main( ( global void) +0:43 Function Parameters: 0:? Sequence -0:51 textureProjGradOffset ( global float) -0:51 'u2drs' ( uniform sampler2DRectShadow) -0:51 'outp' ( out 4-component vector of float) -0:51 Constant: -0:51 0.000000 -0:51 0.000000 -0:51 Constant: -0:51 0.000000 -0:51 0.000000 -0:51 Convert float to int ( temp 2-component vector of int) -0:51 'c2D' ( smooth in 2-component vector of float) -0:52 textureProjGradOffset ( global float) -0:52 'u2drs' ( uniform sampler2DRectShadow) -0:52 'outp' ( out 4-component vector of float) -0:52 Constant: -0:52 0.000000 -0:52 0.000000 -0:52 Constant: -0:52 0.000000 -0:52 0.000000 -0:52 Constant: -0:52 3 (const int) -0:52 4 (const int) -0:53 textureProjGradOffset ( global float) -0:53 'u2drs' ( uniform sampler2DRectShadow) -0:53 'outp' ( out 4-component vector of float) -0:53 Constant: -0:53 0.000000 -0:53 0.000000 -0:53 Constant: -0:53 0.000000 -0:53 0.000000 -0:53 Constant: -0:53 15 (const int) -0:53 16 (const int) -0:54 textureProjGradOffset ( global float) -0:54 'u2drs' ( uniform sampler2DRectShadow) -0:54 'outp' ( out 4-component vector of float) -0:54 Constant: -0:54 0.000000 -0:54 0.000000 -0:54 Constant: -0:54 0.000000 -0:54 0.000000 -0:54 Constant: -0:54 -10 (const int) -0:54 20 (const int) -0:60 Function Definition: foo24( ( global void) -0:60 Function Parameters: -0:? Sequence -0:63 move second child to first child ( temp 3-component vector of double) -0:63 'df' ( temp 3-component vector of double) -0:63 modf ( global 3-component vector of double) -0:63 Convert float to double ( temp 3-component vector of double) -0:63 vector swizzle ( temp 3-component vector of float) -0:63 'outp' ( out 4-component vector of float) -0:63 Sequence -0:63 Constant: -0:63 0 (const int) -0:63 Constant: -0:63 1 (const int) -0:63 Constant: -0:63 2 (const int) -0:63 'di' ( temp 3-component vector of double) -0:71 Function Definition: foodc1( ( global void) -0:71 Function Parameters: -0:73 Sequence -0:73 Sequence -0:73 move second child to first child ( temp 2-component vector of float) -0:73 'v2' ( temp 2-component vector of float) -0:73 dPdxFine ( global 2-component vector of float) -0:73 'in2' ( smooth in 2-component vector of float) -0:74 Sequence -0:74 move second child to first child ( temp 3-component vector of float) -0:74 'v3' ( temp 3-component vector of float) -0:74 dPdyCoarse ( global 3-component vector of float) -0:74 'in3' ( smooth in 3-component vector of float) -0:75 Sequence -0:75 move second child to first child ( temp 4-component vector of float) -0:75 'v4' ( temp 4-component vector of float) -0:75 add ( temp 4-component vector of float) -0:75 fwidthCoarse ( global 4-component vector of float) -0:75 'in4' ( smooth in 4-component vector of float) -0:75 fwidthFine ( global 4-component vector of float) -0:75 'in4' ( smooth in 4-component vector of float) -0:80 Function Definition: foodc2( ( global void) +0:46 move second child to first child ( temp 4-component vector of float) +0:46 'v' ( temp 4-component vector of float) +0:46 texture ( global 4-component vector of float) +0:46 indirect index ( temp sampler2D) +0:46 'arrayedSampler' ( uniform 5-element array of sampler2D) +0:46 'i' ( flat in int) +0:46 'c2D' ( smooth in 2-component vector of float) +0:47 move second child to first child ( temp float) +0:47 direct index ( temp float) +0:47 'outp' ( out 4-component vector of float) +0:47 Constant: +0:47 0 (const int) +0:47 direct index ( smooth temp float ClipDistance) +0:47 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) +0:47 Constant: +0:47 1 (const int) +0:51 Sequence +0:51 move second child to first child ( temp 4-component vector of uint) +0:51 'uv4' ( temp 4-component vector of uint) +0:51 textureGatherOffsets ( global 4-component vector of uint) +0:51 'samp2dr' ( uniform usampler2DRect) +0:51 'c2D' ( smooth in 2-component vector of float) +0:51 'offsets' ( temp 4-element array of 2-component vector of int) +0:51 Constant: +0:51 2 (const int) +0:52 move second child to first child ( temp 4-component vector of uint) +0:52 'uv4' ( temp 4-component vector of uint) +0:52 textureGatherOffsets ( global 4-component vector of uint) +0:52 'samp2dr' ( uniform usampler2DRect) +0:52 'c2D' ( smooth in 2-component vector of float) +0:52 Constant: +0:52 1 (const int) +0:52 2 (const int) +0:52 3 (const int) +0:52 4 (const int) +0:52 15 (const int) +0:52 16 (const int) +0:52 -2 (const int) +0:52 0 (const int) +0:52 Constant: +0:52 2 (const int) +0:53 Sequence +0:53 move second child to first child ( temp 4-component vector of float) +0:53 'v4' ( temp 4-component vector of float) +0:53 textureGather ( global 4-component vector of float) +0:53 direct index ( temp sampler2D) +0:53 'arrayedSampler' ( uniform 5-element array of sampler2D) +0:53 Constant: +0:53 0 (const int) +0:53 'c2D' ( smooth in 2-component vector of float) +0:54 Sequence +0:54 move second child to first child ( temp 4-component vector of int) +0:54 'iv4' ( temp 4-component vector of int) +0:54 textureGatherOffset ( global 4-component vector of int) +0:54 'isamp2DA' ( uniform isampler2DArray) +0:54 Constant: +0:54 0.100000 +0:54 0.100000 +0:54 0.100000 +0:54 Constant: +0:54 1 (const int) +0:54 1 (const int) +0:54 Constant: +0:54 3 (const int) +0:55 move second child to first child ( temp 4-component vector of int) +0:55 'iv4' ( temp 4-component vector of int) +0:55 textureGatherOffset ( global 4-component vector of int) +0:55 'isamp2DA' ( uniform isampler2DArray) +0:55 Constant: +0:55 0.100000 +0:55 0.100000 +0:55 0.100000 +0:55 Constant: +0:55 1 (const int) +0:55 1 (const int) +0:55 'i' ( flat in int) +0:56 move second child to first child ( temp 4-component vector of int) +0:56 'iv4' ( temp 4-component vector of int) +0:56 textureGatherOffset ( global 4-component vector of int) +0:56 'isamp2DA' ( uniform isampler2DArray) +0:56 Constant: +0:56 0.100000 +0:56 0.100000 +0:56 0.100000 +0:56 Constant: +0:56 1 (const int) +0:56 1 (const int) +0:56 Constant: +0:56 4 (const int) +0:57 move second child to first child ( temp 4-component vector of int) +0:57 'iv4' ( temp 4-component vector of int) +0:57 textureGatherOffset ( global 4-component vector of int) +0:57 'isamp2DA' ( uniform isampler2DArray) +0:57 Constant: +0:57 0.100000 +0:57 0.100000 +0:57 0.100000 +0:57 Constant: +0:57 1 (const int) +0:57 1 (const int) +0:57 Constant: +0:57 3 (const int) +0:58 move second child to first child ( temp 4-component vector of int) +0:58 'iv4' ( temp 4-component vector of int) +0:58 textureGatherOffset ( global 4-component vector of int) +0:58 'isamp2DA' ( uniform isampler2DArray) +0:58 Constant: +0:58 0.100000 +0:58 0.100000 +0:58 0.100000 +0:58 Construct ivec2 ( temp 2-component vector of int) +0:58 'i' ( flat in int) +0:60 Sequence +0:60 move second child to first child ( temp 4-component vector of float) +0:60 'c' ( temp 4-component vector of float) +0:60 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:80 Function Definition: foo23( ( global void) 0:80 Function Parameters: -0:82 Sequence -0:82 Sequence -0:82 move second child to first child ( temp 2-component vector of float) -0:82 'v2' ( temp 2-component vector of float) -0:82 dPdxFine ( global 2-component vector of float) -0:82 'in2' ( smooth in 2-component vector of float) -0:83 Sequence -0:83 move second child to first child ( temp 3-component vector of float) -0:83 'v3' ( temp 3-component vector of float) -0:83 dPdyCoarse ( global 3-component vector of float) -0:83 'in3' ( smooth in 3-component vector of float) -0:84 Sequence -0:84 move second child to first child ( temp 4-component vector of float) -0:84 'v4' ( temp 4-component vector of float) -0:84 add ( temp 4-component vector of float) -0:84 fwidthCoarse ( global 4-component vector of float) -0:84 'in4' ( smooth in 4-component vector of float) -0:84 fwidthFine ( global 4-component vector of float) -0:84 'in4' ( smooth in 4-component vector of float) -0:89 move second child to first child ( temp 2-component vector of float) -0:89 'v2' ( temp 2-component vector of float) -0:89 frexp ( global 2-component vector of float) -0:89 'v2' ( temp 2-component vector of float) -0:89 'i2' ( temp 2-component vector of int) -0:90 move second child to first child ( temp 3-component vector of float) -0:90 'v3' ( temp 3-component vector of float) -0:90 ldexp ( global 3-component vector of float) -0:90 'v3' ( temp 3-component vector of float) -0:90 'i3' ( temp 3-component vector of int) -0:92 move second child to first child ( temp uint) -0:92 'u1' ( temp uint) -0:92 PackUnorm4x8 ( global uint) -0:92 'v4' ( temp 4-component vector of float) -0:93 move second child to first child ( temp uint) -0:93 'u1' ( temp uint) -0:93 PackSnorm4x8 ( global uint) -0:93 'v4' ( temp 4-component vector of float) -0:94 move second child to first child ( temp 4-component vector of float) -0:94 'v4' ( temp 4-component vector of float) -0:94 UnpackUnorm4x8 ( global 4-component vector of float) -0:94 'u1' ( temp uint) -0:95 move second child to first child ( temp 4-component vector of float) -0:95 'v4' ( temp 4-component vector of float) -0:95 UnpackSnorm4x8 ( global 4-component vector of float) -0:95 'u1' ( temp uint) -0:99 move second child to first child ( temp double) -0:99 'd' ( temp double) -0:99 PackDouble2x32 ( global double) -0:99 'u2' ( temp 2-component vector of uint) -0:100 move second child to first child ( temp 2-component vector of uint) -0:100 'u2' ( temp 2-component vector of uint) -0:100 UnpackDouble2x32 ( global 2-component vector of uint) -0:100 'd' ( temp double) -0:117 Function Definition: interp( ( global void) -0:117 Function Parameters: -0:119 Sequence -0:119 interpolateAtCentroid ( global 2-component vector of float) -0:119 'colorfc' ( centroid flat in 2-component vector of float) -0:120 interpolateAtCentroid ( global 4-component vector of float) -0:120 'colorSampIn' ( smooth sample in 4-component vector of float) -0:121 interpolateAtCentroid ( global 4-component vector of float) -0:121 'colorfsi' ( noperspective in 4-component vector of float) -0:122 interpolateAtCentroid ( global float) -0:122 'scalarIn' ( smooth in float) -0:123 Constant: -0:123 0.000000 -0:124 interpolateAtCentroid ( global 3-component vector of float) -0:124 direct index ( smooth sample temp 3-component vector of float) -0:124 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) -0:124 Constant: -0:124 2 (const int) -0:125 interpolateAtCentroid ( global 2-component vector of float) -0:125 vector swizzle ( temp 2-component vector of float) -0:125 direct index ( smooth sample temp 3-component vector of float) -0:125 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) -0:125 Constant: -0:125 2 (const int) -0:125 Sequence -0:125 Constant: -0:125 0 (const int) -0:125 Constant: -0:125 1 (const int) -0:127 Constant: -0:127 0.000000 -0:128 interpolateAtSample ( global 3-component vector of float) -0:128 indirect index ( smooth sample temp 3-component vector of float) -0:128 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) -0:128 'i' ( flat in int) -0:128 Constant: -0:128 0 (const int) -0:129 interpolateAtSample ( global float) -0:129 x: direct index for structure ( global float) -0:129 's1' ( smooth in structure{ global float x}) -0:129 Constant: -0:129 0 (const int) -0:129 Constant: -0:129 2 (const int) -0:130 interpolateAtSample ( global float) -0:130 'scalarIn' ( smooth in float) -0:130 Constant: -0:130 1 (const int) -0:132 Constant: -0:132 0.000000 -0:133 interpolateAtOffset ( global 3-component vector of float) -0:133 direct index ( smooth sample temp 3-component vector of float) -0:133 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) -0:133 Constant: -0:133 2 (const int) -0:133 Constant: -0:133 0.200000 -0:133 0.200000 -0:134 interpolateAtOffset ( global 2-component vector of float) -0:134 vector swizzle ( temp 2-component vector of float) -0:134 direct index ( smooth sample temp 3-component vector of float) -0:134 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) -0:134 Constant: -0:134 2 (const int) -0:134 Sequence -0:134 Constant: -0:134 0 (const int) -0:134 Constant: -0:134 1 (const int) -0:134 Constant: -0:134 0.200000 -0:134 0.200000 -0:135 interpolateAtOffset ( global float) -0:135 add ( temp float) -0:135 'scalarIn' ( smooth in float) -0:135 'scalarIn' ( smooth in float) -0:135 Constant: -0:135 0.200000 -0:135 0.200000 -0:136 interpolateAtOffset ( global float) -0:136 x: direct index for structure ( global float) -0:136 's2' ( sample temp structure{ global float x}) -0:136 Constant: -0:136 0 (const int) -0:136 Constant: -0:136 0.200000 -0:136 0.200000 -0:139 interpolateAtCentroid ( global float) -0:139 'f' ( temp float) -0:140 interpolateAtSample ( global 4-component vector of float) -0:140 'outp' ( out 4-component vector of float) -0:140 Constant: -0:140 0 (const int) -0:161 Function Definition: qlod( ( global void) -0:161 Function Parameters: 0:? Sequence -0:168 move second child to first child ( temp 2-component vector of float) -0:168 'lod' ( temp 2-component vector of float) -0:168 textureQueryLod ( global 2-component vector of float) -0:168 'samp1D' ( uniform sampler1D) -0:168 'pf' ( temp float) -0:169 move second child to first child ( temp 2-component vector of float) -0:169 'lod' ( temp 2-component vector of float) -0:169 textureQueryLod ( global 2-component vector of float) -0:169 'isamp2D' ( uniform isampler2D) -0:169 'pf2' ( temp 2-component vector of float) -0:170 move second child to first child ( temp 2-component vector of float) -0:170 'lod' ( temp 2-component vector of float) -0:170 textureQueryLod ( global 2-component vector of float) -0:170 'usamp3D' ( uniform usampler3D) -0:170 'pf3' ( temp 3-component vector of float) -0:171 move second child to first child ( temp 2-component vector of float) -0:171 'lod' ( temp 2-component vector of float) -0:171 textureQueryLod ( global 2-component vector of float) -0:171 'sampCube' ( uniform samplerCube) -0:171 'pf3' ( temp 3-component vector of float) -0:172 move second child to first child ( temp 2-component vector of float) -0:172 'lod' ( temp 2-component vector of float) -0:172 textureQueryLod ( global 2-component vector of float) -0:172 'isamp1DA' ( uniform isampler1DArray) -0:172 'pf' ( temp float) -0:173 move second child to first child ( temp 2-component vector of float) -0:173 'lod' ( temp 2-component vector of float) -0:173 textureQueryLod ( global 2-component vector of float) -0:173 'usamp2DA' ( uniform usampler2DArray) -0:173 'pf2' ( temp 2-component vector of float) -0:174 move second child to first child ( temp 2-component vector of float) -0:174 'lod' ( temp 2-component vector of float) -0:174 textureQueryLod ( global 2-component vector of float) -0:174 'isampCubeA' ( uniform isamplerCubeArray) -0:174 'pf3' ( temp 3-component vector of float) -0:176 move second child to first child ( temp 2-component vector of float) -0:176 'lod' ( temp 2-component vector of float) -0:176 textureQueryLod ( global 2-component vector of float) -0:176 'samp1Ds' ( uniform sampler1DShadow) -0:176 'pf' ( temp float) -0:177 move second child to first child ( temp 2-component vector of float) -0:177 'lod' ( temp 2-component vector of float) -0:177 textureQueryLod ( global 2-component vector of float) -0:177 'samp2Ds' ( uniform sampler2DShadow) -0:177 'pf2' ( temp 2-component vector of float) -0:178 move second child to first child ( temp 2-component vector of float) -0:178 'lod' ( temp 2-component vector of float) -0:178 textureQueryLod ( global 2-component vector of float) -0:178 'sampCubes' ( uniform samplerCubeShadow) -0:178 'pf3' ( temp 3-component vector of float) -0:179 move second child to first child ( temp 2-component vector of float) -0:179 'lod' ( temp 2-component vector of float) -0:179 textureQueryLod ( global 2-component vector of float) -0:179 'samp1DAs' ( uniform sampler1DArrayShadow) -0:179 'pf' ( temp float) -0:180 move second child to first child ( temp 2-component vector of float) -0:180 'lod' ( temp 2-component vector of float) -0:180 textureQueryLod ( global 2-component vector of float) -0:180 'samp2DAs' ( uniform sampler2DArrayShadow) -0:180 'pf2' ( temp 2-component vector of float) -0:181 move second child to first child ( temp 2-component vector of float) -0:181 'lod' ( temp 2-component vector of float) -0:181 textureQueryLod ( global 2-component vector of float) -0:181 'sampCubeAs' ( uniform samplerCubeArrayShadow) -0:181 'pf3' ( temp 3-component vector of float) -0:183 'lod' ( temp 2-component vector of float) -0:184 'lod' ( temp 2-component vector of float) -0:190 Function Definition: bitwiseConv( ( global void) -0:190 Function Parameters: -0:192 Sequence -0:192 move second child to first child ( temp uint) -0:192 'iout' ( out uint) -0:192 bitwise and ( temp uint) -0:192 'uu' ( uniform uint) -0:192 Convert int to uint ( temp uint) -0:192 'i' ( flat in int) -0:193 add second child into first child ( temp uint) -0:193 'iout' ( out uint) -0:193 exclusive-or ( temp uint) -0:193 'uu' ( uniform uint) -0:193 Convert int to uint ( temp uint) -0:193 'i' ( flat in int) -0:194 add second child into first child ( temp uint) -0:194 'iout' ( out uint) -0:194 inclusive-or ( temp uint) -0:194 Convert int to uint ( temp uint) -0:194 'i' ( flat in int) -0:194 'uu' ( uniform uint) -0:198 Function Definition: subT1( ( temp float) -0:198 Function Parameters: -0:198 Sequence -0:198 Branch: Return with expression -0:198 Constant: -0:198 1.000000 -0:199 Function Definition: subT2( ( temp float) -0:199 Function Parameters: -0:199 Sequence -0:199 Branch: Return with expression -0:199 Constant: -0:199 1.000000 +0:84 textureProjGradOffset ( global float) +0:84 'u2drs' ( uniform sampler2DRectShadow) +0:84 'outp' ( out 4-component vector of float) +0:84 Constant: +0:84 0.000000 +0:84 0.000000 +0:84 Constant: +0:84 0.000000 +0:84 0.000000 +0:84 Convert float to int ( temp 2-component vector of int) +0:84 'c2D' ( smooth in 2-component vector of float) +0:85 textureProjGradOffset ( global float) +0:85 'u2drs' ( uniform sampler2DRectShadow) +0:85 'outp' ( out 4-component vector of float) +0:85 Constant: +0:85 0.000000 +0:85 0.000000 +0:85 Constant: +0:85 0.000000 +0:85 0.000000 +0:85 Constant: +0:85 3 (const int) +0:85 4 (const int) +0:86 textureProjGradOffset ( global float) +0:86 'u2drs' ( uniform sampler2DRectShadow) +0:86 'outp' ( out 4-component vector of float) +0:86 Constant: +0:86 0.000000 +0:86 0.000000 +0:86 Constant: +0:86 0.000000 +0:86 0.000000 +0:86 Constant: +0:86 15 (const int) +0:86 16 (const int) +0:87 textureProjGradOffset ( global float) +0:87 'u2drs' ( uniform sampler2DRectShadow) +0:87 'outp' ( out 4-component vector of float) +0:87 Constant: +0:87 0.000000 +0:87 0.000000 +0:87 Constant: +0:87 0.000000 +0:87 0.000000 +0:87 Constant: +0:87 -10 (const int) +0:87 20 (const int) +0:93 Function Definition: foo24( ( global void) +0:93 Function Parameters: +0:? Sequence +0:96 move second child to first child ( temp 3-component vector of double) +0:96 'df' ( temp 3-component vector of double) +0:96 modf ( global 3-component vector of double) +0:96 Convert float to double ( temp 3-component vector of double) +0:96 vector swizzle ( temp 3-component vector of float) +0:96 'outp' ( out 4-component vector of float) +0:96 Sequence +0:96 Constant: +0:96 0 (const int) +0:96 Constant: +0:96 1 (const int) +0:96 Constant: +0:96 2 (const int) +0:96 'di' ( temp 3-component vector of double) +0:104 Function Definition: foodc1( ( global void) +0:104 Function Parameters: +0:106 Sequence +0:106 Sequence +0:106 move second child to first child ( temp 2-component vector of float) +0:106 'v2' ( temp 2-component vector of float) +0:106 dPdxFine ( global 2-component vector of float) +0:106 'in2' ( smooth in 2-component vector of float) +0:107 Sequence +0:107 move second child to first child ( temp 3-component vector of float) +0:107 'v3' ( temp 3-component vector of float) +0:107 dPdyCoarse ( global 3-component vector of float) +0:107 'in3' ( smooth in 3-component vector of float) +0:108 Sequence +0:108 move second child to first child ( temp 4-component vector of float) +0:108 'v4' ( temp 4-component vector of float) +0:108 add ( temp 4-component vector of float) +0:108 fwidthCoarse ( global 4-component vector of float) +0:108 'in4' ( smooth in 4-component vector of float) +0:108 fwidthFine ( global 4-component vector of float) +0:108 'in4' ( smooth in 4-component vector of float) +0:113 Function Definition: foodc2( ( global void) +0:113 Function Parameters: +0:115 Sequence +0:115 Sequence +0:115 move second child to first child ( temp 2-component vector of float) +0:115 'v2' ( temp 2-component vector of float) +0:115 dPdxFine ( global 2-component vector of float) +0:115 'in2' ( smooth in 2-component vector of float) +0:116 Sequence +0:116 move second child to first child ( temp 3-component vector of float) +0:116 'v3' ( temp 3-component vector of float) +0:116 dPdyCoarse ( global 3-component vector of float) +0:116 'in3' ( smooth in 3-component vector of float) +0:117 Sequence +0:117 move second child to first child ( temp 4-component vector of float) +0:117 'v4' ( temp 4-component vector of float) +0:117 add ( temp 4-component vector of float) +0:117 fwidthCoarse ( global 4-component vector of float) +0:117 'in4' ( smooth in 4-component vector of float) +0:117 fwidthFine ( global 4-component vector of float) +0:117 'in4' ( smooth in 4-component vector of float) +0:122 move second child to first child ( temp 2-component vector of float) +0:122 'v2' ( temp 2-component vector of float) +0:122 frexp ( global 2-component vector of float) +0:122 'v2' ( temp 2-component vector of float) +0:122 'i2' ( temp 2-component vector of int) +0:123 move second child to first child ( temp 3-component vector of float) +0:123 'v3' ( temp 3-component vector of float) +0:123 ldexp ( global 3-component vector of float) +0:123 'v3' ( temp 3-component vector of float) +0:123 'i3' ( temp 3-component vector of int) +0:125 move second child to first child ( temp uint) +0:125 'u1' ( temp uint) +0:125 PackUnorm4x8 ( global uint) +0:125 'v4' ( temp 4-component vector of float) +0:126 move second child to first child ( temp uint) +0:126 'u1' ( temp uint) +0:126 PackSnorm4x8 ( global uint) +0:126 'v4' ( temp 4-component vector of float) +0:127 move second child to first child ( temp 4-component vector of float) +0:127 'v4' ( temp 4-component vector of float) +0:127 UnpackUnorm4x8 ( global 4-component vector of float) +0:127 'u1' ( temp uint) +0:128 move second child to first child ( temp 4-component vector of float) +0:128 'v4' ( temp 4-component vector of float) +0:128 UnpackSnorm4x8 ( global 4-component vector of float) +0:128 'u1' ( temp uint) +0:132 move second child to first child ( temp double) +0:132 'd' ( temp double) +0:132 PackDouble2x32 ( global double) +0:132 'u2' ( temp 2-component vector of uint) +0:133 move second child to first child ( temp 2-component vector of uint) +0:133 'u2' ( temp 2-component vector of uint) +0:133 UnpackDouble2x32 ( global 2-component vector of uint) +0:133 'd' ( temp double) +0:150 Function Definition: interp( ( global void) +0:150 Function Parameters: +0:152 Sequence +0:152 interpolateAtCentroid ( global 2-component vector of float) +0:152 'colorfc' ( centroid flat in 2-component vector of float) +0:153 interpolateAtCentroid ( global 4-component vector of float) +0:153 'colorSampIn' ( smooth sample in 4-component vector of float) +0:154 interpolateAtCentroid ( global 4-component vector of float) +0:154 'colorfsi' ( noperspective in 4-component vector of float) +0:155 interpolateAtCentroid ( global float) +0:155 'scalarIn' ( smooth in float) +0:156 Constant: +0:156 0.000000 +0:157 interpolateAtCentroid ( global 3-component vector of float) +0:157 direct index ( smooth sample temp 3-component vector of float) +0:157 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) +0:157 Constant: +0:157 2 (const int) +0:158 interpolateAtCentroid ( global 2-component vector of float) +0:158 vector swizzle ( temp 2-component vector of float) +0:158 direct index ( smooth sample temp 3-component vector of float) +0:158 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) +0:158 Constant: +0:158 2 (const int) +0:158 Sequence +0:158 Constant: +0:158 0 (const int) +0:158 Constant: +0:158 1 (const int) +0:160 Constant: +0:160 0.000000 +0:161 interpolateAtSample ( global 3-component vector of float) +0:161 indirect index ( smooth sample temp 3-component vector of float) +0:161 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) +0:161 'i' ( flat in int) +0:161 Constant: +0:161 0 (const int) +0:162 interpolateAtSample ( global float) +0:162 x: direct index for structure ( global float) +0:162 's1' ( smooth in structure{ global float x}) +0:162 Constant: +0:162 0 (const int) +0:162 Constant: +0:162 2 (const int) +0:163 interpolateAtSample ( global float) +0:163 'scalarIn' ( smooth in float) +0:163 Constant: +0:163 1 (const int) +0:165 Constant: +0:165 0.000000 +0:166 interpolateAtOffset ( global 3-component vector of float) +0:166 direct index ( smooth sample temp 3-component vector of float) +0:166 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) +0:166 Constant: +0:166 2 (const int) +0:166 Constant: +0:166 0.200000 +0:166 0.200000 +0:167 interpolateAtOffset ( global 2-component vector of float) +0:167 vector swizzle ( temp 2-component vector of float) +0:167 direct index ( smooth sample temp 3-component vector of float) +0:167 'sampInArray' ( smooth sample in 4-element array of 3-component vector of float) +0:167 Constant: +0:167 2 (const int) +0:167 Sequence +0:167 Constant: +0:167 0 (const int) +0:167 Constant: +0:167 1 (const int) +0:167 Constant: +0:167 0.200000 +0:167 0.200000 +0:168 interpolateAtOffset ( global float) +0:168 add ( temp float) +0:168 'scalarIn' ( smooth in float) +0:168 'scalarIn' ( smooth in float) +0:168 Constant: +0:168 0.200000 +0:168 0.200000 +0:169 interpolateAtOffset ( global float) +0:169 x: direct index for structure ( global float) +0:169 's2' ( sample temp structure{ global float x}) +0:169 Constant: +0:169 0 (const int) +0:169 Constant: +0:169 0.200000 +0:169 0.200000 +0:172 interpolateAtCentroid ( global float) +0:172 'f' ( temp float) +0:173 interpolateAtSample ( global 4-component vector of float) +0:173 'outp' ( out 4-component vector of float) +0:173 Constant: +0:173 0 (const int) +0:194 Function Definition: qlod( ( global void) +0:194 Function Parameters: +0:? Sequence +0:201 move second child to first child ( temp 2-component vector of float) +0:201 'lod' ( temp 2-component vector of float) +0:201 textureQueryLod ( global 2-component vector of float) +0:201 'samp1D' ( uniform sampler1D) +0:201 'pf' ( temp float) +0:202 move second child to first child ( temp 2-component vector of float) +0:202 'lod' ( temp 2-component vector of float) +0:202 textureQueryLod ( global 2-component vector of float) +0:202 'isamp2D' ( uniform isampler2D) +0:202 'pf2' ( temp 2-component vector of float) +0:203 move second child to first child ( temp 2-component vector of float) +0:203 'lod' ( temp 2-component vector of float) +0:203 textureQueryLod ( global 2-component vector of float) +0:203 'usamp3D' ( uniform usampler3D) +0:203 'pf3' ( temp 3-component vector of float) +0:204 move second child to first child ( temp 2-component vector of float) +0:204 'lod' ( temp 2-component vector of float) +0:204 textureQueryLod ( global 2-component vector of float) +0:204 'sampCube' ( uniform samplerCube) +0:204 'pf3' ( temp 3-component vector of float) +0:205 move second child to first child ( temp 2-component vector of float) +0:205 'lod' ( temp 2-component vector of float) +0:205 textureQueryLod ( global 2-component vector of float) +0:205 'isamp1DA' ( uniform isampler1DArray) +0:205 'pf' ( temp float) +0:206 move second child to first child ( temp 2-component vector of float) +0:206 'lod' ( temp 2-component vector of float) +0:206 textureQueryLod ( global 2-component vector of float) +0:206 'usamp2DA' ( uniform usampler2DArray) +0:206 'pf2' ( temp 2-component vector of float) +0:207 move second child to first child ( temp 2-component vector of float) +0:207 'lod' ( temp 2-component vector of float) +0:207 textureQueryLod ( global 2-component vector of float) +0:207 'isampCubeA' ( uniform isamplerCubeArray) +0:207 'pf3' ( temp 3-component vector of float) +0:209 move second child to first child ( temp 2-component vector of float) +0:209 'lod' ( temp 2-component vector of float) +0:209 textureQueryLod ( global 2-component vector of float) +0:209 'samp1Ds' ( uniform sampler1DShadow) +0:209 'pf' ( temp float) +0:210 move second child to first child ( temp 2-component vector of float) +0:210 'lod' ( temp 2-component vector of float) +0:210 textureQueryLod ( global 2-component vector of float) +0:210 'samp2Ds' ( uniform sampler2DShadow) +0:210 'pf2' ( temp 2-component vector of float) +0:211 move second child to first child ( temp 2-component vector of float) +0:211 'lod' ( temp 2-component vector of float) +0:211 textureQueryLod ( global 2-component vector of float) +0:211 'sampCubes' ( uniform samplerCubeShadow) +0:211 'pf3' ( temp 3-component vector of float) +0:212 move second child to first child ( temp 2-component vector of float) +0:212 'lod' ( temp 2-component vector of float) +0:212 textureQueryLod ( global 2-component vector of float) +0:212 'samp1DAs' ( uniform sampler1DArrayShadow) +0:212 'pf' ( temp float) +0:213 move second child to first child ( temp 2-component vector of float) +0:213 'lod' ( temp 2-component vector of float) +0:213 textureQueryLod ( global 2-component vector of float) +0:213 'samp2DAs' ( uniform sampler2DArrayShadow) +0:213 'pf2' ( temp 2-component vector of float) +0:214 move second child to first child ( temp 2-component vector of float) +0:214 'lod' ( temp 2-component vector of float) +0:214 textureQueryLod ( global 2-component vector of float) +0:214 'sampCubeAs' ( uniform samplerCubeArrayShadow) +0:214 'pf3' ( temp 3-component vector of float) +0:216 'lod' ( temp 2-component vector of float) +0:217 'lod' ( temp 2-component vector of float) +0:223 Function Definition: bitwiseConv( ( global void) +0:223 Function Parameters: +0:225 Sequence +0:225 move second child to first child ( temp uint) +0:225 'iout' ( out uint) +0:225 bitwise and ( temp uint) +0:225 'uu' ( uniform uint) +0:225 Convert int to uint ( temp uint) +0:225 'i' ( flat in int) +0:226 add second child into first child ( temp uint) +0:226 'iout' ( out uint) +0:226 exclusive-or ( temp uint) +0:226 'uu' ( uniform uint) +0:226 Convert int to uint ( temp uint) +0:226 'i' ( flat in int) +0:227 add second child into first child ( temp uint) +0:227 'iout' ( out uint) +0:227 inclusive-or ( temp uint) +0:227 Convert int to uint ( temp uint) +0:227 'i' ( flat in int) +0:227 'uu' ( uniform uint) +0:231 Function Definition: subT1( ( temp float) +0:231 Function Parameters: +0:231 Sequence +0:231 Branch: Return with expression +0:231 Constant: +0:231 1.000000 +0:232 Function Definition: subT2( ( temp float) +0:232 Function Parameters: +0:232 Sequence +0:232 Branch: Return with expression +0:232 Constant: +0:232 1.000000 0:? Linker Objects 0:? 'c2D' ( smooth in 2-component vector of float) 0:? 'i' ( flat in int) @@ -512,6 +556,9 @@ ERROR: node is still EOpNull! 0:? 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:? 'samp2dr' ( uniform usampler2DRect) 0:? 'isamp2DA' ( uniform isampler2DArray) +0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) +0:? 'ssboStd430Arr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member01, layout( column_major shared) buffer 2-element array of int memberArr01, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr01}) +0:? 'ssboSharedArr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member02, layout( column_major shared) buffer 2-element array of int memberArr02, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr02}) 0:? 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) @@ -558,128 +605,129 @@ Linked fragment stage: Shader version: 400 Requested GL_ARB_derivative_control Requested GL_ARB_separate_shader_objects +Requested GL_ARB_shader_storage_buffer_object gl_FragCoord pixel center is integer gl_FragCoord origin is upper left ERROR: node is still EOpNull! -0:10 Function Definition: main( ( global void) -0:10 Function Parameters: +0:43 Function Definition: main( ( global void) +0:43 Function Parameters: 0:? Sequence -0:13 move second child to first child ( temp 4-component vector of float) -0:13 'v' ( temp 4-component vector of float) -0:13 texture ( global 4-component vector of float) -0:13 indirect index ( temp sampler2D) -0:13 'arrayedSampler' ( uniform 5-element array of sampler2D) -0:13 'i' ( flat in int) -0:13 'c2D' ( smooth in 2-component vector of float) -0:14 move second child to first child ( temp float) -0:14 direct index ( temp float) -0:14 'outp' ( out 4-component vector of float) -0:14 Constant: -0:14 0 (const int) -0:14 direct index ( smooth temp float ClipDistance) -0:14 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) -0:14 Constant: -0:14 1 (const int) -0:18 Sequence -0:18 move second child to first child ( temp 4-component vector of uint) -0:18 'uv4' ( temp 4-component vector of uint) -0:18 textureGatherOffsets ( global 4-component vector of uint) -0:18 'samp2dr' ( uniform usampler2DRect) -0:18 'c2D' ( smooth in 2-component vector of float) -0:18 'offsets' ( temp 4-element array of 2-component vector of int) -0:18 Constant: -0:18 2 (const int) -0:19 move second child to first child ( temp 4-component vector of uint) -0:19 'uv4' ( temp 4-component vector of uint) -0:19 textureGatherOffsets ( global 4-component vector of uint) -0:19 'samp2dr' ( uniform usampler2DRect) -0:19 'c2D' ( smooth in 2-component vector of float) -0:19 Constant: -0:19 1 (const int) -0:19 2 (const int) -0:19 3 (const int) -0:19 4 (const int) -0:19 15 (const int) -0:19 16 (const int) -0:19 -2 (const int) -0:19 0 (const int) -0:19 Constant: -0:19 2 (const int) -0:20 Sequence -0:20 move second child to first child ( temp 4-component vector of float) -0:20 'v4' ( temp 4-component vector of float) -0:20 textureGather ( global 4-component vector of float) -0:20 direct index ( temp sampler2D) -0:20 'arrayedSampler' ( uniform 5-element array of sampler2D) -0:20 Constant: -0:20 0 (const int) -0:20 'c2D' ( smooth in 2-component vector of float) -0:21 Sequence -0:21 move second child to first child ( temp 4-component vector of int) -0:21 'iv4' ( temp 4-component vector of int) -0:21 textureGatherOffset ( global 4-component vector of int) -0:21 'isamp2DA' ( uniform isampler2DArray) -0:21 Constant: -0:21 0.100000 -0:21 0.100000 -0:21 0.100000 -0:21 Constant: -0:21 1 (const int) -0:21 1 (const int) -0:21 Constant: -0:21 3 (const int) -0:22 move second child to first child ( temp 4-component vector of int) -0:22 'iv4' ( temp 4-component vector of int) -0:22 textureGatherOffset ( global 4-component vector of int) -0:22 'isamp2DA' ( uniform isampler2DArray) -0:22 Constant: -0:22 0.100000 -0:22 0.100000 -0:22 0.100000 -0:22 Constant: -0:22 1 (const int) -0:22 1 (const int) -0:22 'i' ( flat in int) -0:23 move second child to first child ( temp 4-component vector of int) -0:23 'iv4' ( temp 4-component vector of int) -0:23 textureGatherOffset ( global 4-component vector of int) -0:23 'isamp2DA' ( uniform isampler2DArray) -0:23 Constant: -0:23 0.100000 -0:23 0.100000 -0:23 0.100000 -0:23 Constant: -0:23 1 (const int) -0:23 1 (const int) -0:23 Constant: -0:23 4 (const int) -0:24 move second child to first child ( temp 4-component vector of int) -0:24 'iv4' ( temp 4-component vector of int) -0:24 textureGatherOffset ( global 4-component vector of int) -0:24 'isamp2DA' ( uniform isampler2DArray) -0:24 Constant: -0:24 0.100000 -0:24 0.100000 -0:24 0.100000 -0:24 Constant: -0:24 1 (const int) -0:24 1 (const int) -0:24 Constant: -0:24 3 (const int) -0:25 move second child to first child ( temp 4-component vector of int) -0:25 'iv4' ( temp 4-component vector of int) -0:25 textureGatherOffset ( global 4-component vector of int) -0:25 'isamp2DA' ( uniform isampler2DArray) -0:25 Constant: -0:25 0.100000 -0:25 0.100000 -0:25 0.100000 -0:25 Construct ivec2 ( temp 2-component vector of int) -0:25 'i' ( flat in int) -0:27 Sequence -0:27 move second child to first child ( temp 4-component vector of float) -0:27 'c' ( temp 4-component vector of float) -0:27 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) +0:46 move second child to first child ( temp 4-component vector of float) +0:46 'v' ( temp 4-component vector of float) +0:46 texture ( global 4-component vector of float) +0:46 indirect index ( temp sampler2D) +0:46 'arrayedSampler' ( uniform 5-element array of sampler2D) +0:46 'i' ( flat in int) +0:46 'c2D' ( smooth in 2-component vector of float) +0:47 move second child to first child ( temp float) +0:47 direct index ( temp float) +0:47 'outp' ( out 4-component vector of float) +0:47 Constant: +0:47 0 (const int) +0:47 direct index ( smooth temp float ClipDistance) +0:47 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) +0:47 Constant: +0:47 1 (const int) +0:51 Sequence +0:51 move second child to first child ( temp 4-component vector of uint) +0:51 'uv4' ( temp 4-component vector of uint) +0:51 textureGatherOffsets ( global 4-component vector of uint) +0:51 'samp2dr' ( uniform usampler2DRect) +0:51 'c2D' ( smooth in 2-component vector of float) +0:51 'offsets' ( temp 4-element array of 2-component vector of int) +0:51 Constant: +0:51 2 (const int) +0:52 move second child to first child ( temp 4-component vector of uint) +0:52 'uv4' ( temp 4-component vector of uint) +0:52 textureGatherOffsets ( global 4-component vector of uint) +0:52 'samp2dr' ( uniform usampler2DRect) +0:52 'c2D' ( smooth in 2-component vector of float) +0:52 Constant: +0:52 1 (const int) +0:52 2 (const int) +0:52 3 (const int) +0:52 4 (const int) +0:52 15 (const int) +0:52 16 (const int) +0:52 -2 (const int) +0:52 0 (const int) +0:52 Constant: +0:52 2 (const int) +0:53 Sequence +0:53 move second child to first child ( temp 4-component vector of float) +0:53 'v4' ( temp 4-component vector of float) +0:53 textureGather ( global 4-component vector of float) +0:53 direct index ( temp sampler2D) +0:53 'arrayedSampler' ( uniform 5-element array of sampler2D) +0:53 Constant: +0:53 0 (const int) +0:53 'c2D' ( smooth in 2-component vector of float) +0:54 Sequence +0:54 move second child to first child ( temp 4-component vector of int) +0:54 'iv4' ( temp 4-component vector of int) +0:54 textureGatherOffset ( global 4-component vector of int) +0:54 'isamp2DA' ( uniform isampler2DArray) +0:54 Constant: +0:54 0.100000 +0:54 0.100000 +0:54 0.100000 +0:54 Constant: +0:54 1 (const int) +0:54 1 (const int) +0:54 Constant: +0:54 3 (const int) +0:55 move second child to first child ( temp 4-component vector of int) +0:55 'iv4' ( temp 4-component vector of int) +0:55 textureGatherOffset ( global 4-component vector of int) +0:55 'isamp2DA' ( uniform isampler2DArray) +0:55 Constant: +0:55 0.100000 +0:55 0.100000 +0:55 0.100000 +0:55 Constant: +0:55 1 (const int) +0:55 1 (const int) +0:55 'i' ( flat in int) +0:56 move second child to first child ( temp 4-component vector of int) +0:56 'iv4' ( temp 4-component vector of int) +0:56 textureGatherOffset ( global 4-component vector of int) +0:56 'isamp2DA' ( uniform isampler2DArray) +0:56 Constant: +0:56 0.100000 +0:56 0.100000 +0:56 0.100000 +0:56 Constant: +0:56 1 (const int) +0:56 1 (const int) +0:56 Constant: +0:56 4 (const int) +0:57 move second child to first child ( temp 4-component vector of int) +0:57 'iv4' ( temp 4-component vector of int) +0:57 textureGatherOffset ( global 4-component vector of int) +0:57 'isamp2DA' ( uniform isampler2DArray) +0:57 Constant: +0:57 0.100000 +0:57 0.100000 +0:57 0.100000 +0:57 Constant: +0:57 1 (const int) +0:57 1 (const int) +0:57 Constant: +0:57 3 (const int) +0:58 move second child to first child ( temp 4-component vector of int) +0:58 'iv4' ( temp 4-component vector of int) +0:58 textureGatherOffset ( global 4-component vector of int) +0:58 'isamp2DA' ( uniform isampler2DArray) +0:58 Constant: +0:58 0.100000 +0:58 0.100000 +0:58 0.100000 +0:58 Construct ivec2 ( temp 2-component vector of int) +0:58 'i' ( flat in int) +0:60 Sequence +0:60 move second child to first child ( temp 4-component vector of float) +0:60 'c' ( temp 4-component vector of float) +0:60 'gl_FragCoord' ( gl_FragCoord 4-component vector of float FragCoord) 0:? Linker Objects 0:? 'c2D' ( smooth in 2-component vector of float) 0:? 'i' ( flat in int) @@ -687,6 +735,9 @@ ERROR: node is still EOpNull! 0:? 'arrayedSampler' ( uniform 5-element array of sampler2D) 0:? 'samp2dr' ( uniform usampler2DRect) 0:? 'isamp2DA' ( uniform isampler2DArray) +0:? 'anon@0' (layout( column_major shared) buffer block{layout( column_major shared) buffer int atomi, layout( column_major shared) buffer uint atomu}) +0:? 'ssboStd430Arr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member01, layout( column_major shared) buffer 2-element array of int memberArr01, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr01}) +0:? 'ssboSharedArr' (layout( column_major shared) buffer 2-element array of block{layout( column_major shared) buffer int member02, layout( column_major shared) buffer 2-element array of int memberArr02, layout( column_major shared) buffer unsized 1-element array of int memberUnsizedArr02}) 0:? 'gl_ClipDistance' ( smooth in 4-element array of float ClipDistance) 0:? 'vl' (layout( location=4) smooth in 4-component vector of float) 0:? 'vl2' (layout( location=6) smooth in 4-component vector of float) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8d5ce9af8c..9feb261a5c 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -144,10 +144,10 @@ EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECo { EBadProfile } }; const Versioning* Es300Desktop130 = &Es300Desktop130Version[0]; - const Versioning Es310Desktop420Version[] = { { EEsProfile, 0, 310, 0, nullptr }, - { EDesktopProfile, 0, 420, 0, nullptr }, + const Versioning Es310Desktop400Version[] = { { EEsProfile, 0, 310, 0, nullptr }, + { EDesktopProfile, 0, 400, 0, nullptr }, { EBadProfile } }; - const Versioning* Es310Desktop420 = &Es310Desktop420Version[0]; + const Versioning* Es310Desktop400 = &Es310Desktop400Version[0]; const Versioning Es310Desktop450Version[] = { { EEsProfile, 0, 310, 0, nullptr }, { EDesktopProfile, 0, 450, 0, nullptr }, @@ -246,14 +246,14 @@ const BuiltInFunction BaseFunctions[] = { { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorEqual, "equal", 2, TypeU, ClassBNS, Es300Desktop130 }, { EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, - { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, - { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, - { EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, - { EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, - { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, - { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop420 }, - { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop420 }, + { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, + { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, + { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, + { EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, + { EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, + { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, + { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, + { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop400 }, { EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 }, { EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 }, From a8d39f97cdf08cf7eac4ae40dfe7b41420a3be30 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Mon, 6 Nov 2023 15:59:20 +0800 Subject: [PATCH 321/594] Add a helper applySpirvDecorate to handle spirv_decorate_xxx directives Some code paths could be shared. --- SPIRV/GlslangToSpv.cpp | 136 ++++++++++++++++++++--------------------- 1 file changed, 65 insertions(+), 71 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ace58ec0db..25a39777bb 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -66,6 +66,7 @@ namespace spv { #include #include #include +#include #include #include #include @@ -164,6 +165,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id convertGlslangToSpvType(const glslang::TType& type, bool forwardReferenceOnly = false); spv::Id convertGlslangToSpvType(const glslang::TType& type, glslang::TLayoutPacking, const glslang::TQualifier&, bool lastBufferBlockMember, bool forwardReferenceOnly = false); + void applySpirvDecorate(const glslang::TType& type, spv::Id id, std::optional member); bool filterMember(const glslang::TType& member); spv::Id convertGlslangStructToSpvType(const glslang::TType&, const glslang::TTypeList* glslangStruct, glslang::TLayoutPacking, const glslang::TQualifier&); @@ -4705,6 +4707,64 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty return spvType; } +// Apply SPIR-V decorations to the SPIR-V object (provided by SPIR-V ID). If member index is provided, the +// decorations are applied to this member. +void TGlslangToSpvTraverser::applySpirvDecorate(const glslang::TType& type, spv::Id id, std::optional member) +{ + assert(type.getQualifier().hasSpirvDecorate()); + + const glslang::TSpirvDecorate& spirvDecorate = type.getQualifier().getSpirvDecorate(); + + // Add spirv_decorate + for (auto& decorate : spirvDecorate.decorates) { + if (!decorate.second.empty()) { + std::vector literals; + TranslateLiterals(decorate.second, literals); + if (member.has_value()) + builder.addMemberDecoration(id, *member, static_cast(decorate.first), literals); + else + builder.addDecoration(id, static_cast(decorate.first), literals); + } else { + if (member.has_value()) + builder.addMemberDecoration(id, *member, static_cast(decorate.first)); + else + builder.addDecoration(id, static_cast(decorate.first)); + } + } + + // Add spirv_decorate_id + if (member.has_value()) { + // spirv_decorate_id not applied to members + assert(spirvDecorate.decorateIds.empty()); + } else { + for (auto& decorateId : spirvDecorate.decorateIds) { + std::vector operandIds; + assert(!decorateId.second.empty()); + for (auto extraOperand : decorateId.second) { + if (extraOperand->getQualifier().isFrontEndConstant()) + operandIds.push_back(createSpvConstant(*extraOperand)); + else + operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); + } + builder.addDecorationId(id, static_cast(decorateId.first), operandIds); + } + } + + // Add spirv_decorate_string + for (auto& decorateString : spirvDecorate.decorateStrings) { + std::vector strings; + assert(!decorateString.second.empty()); + for (auto extraOperand : decorateString.second) { + const char* string = extraOperand->getConstArray()[0].getSConst()->c_str(); + strings.push_back(string); + } + if (member.has_value()) + builder.addMemberDecoration(id, *member, static_cast(decorateString.first), strings); + else + builder.addDecoration(id, static_cast(decorateString.first), strings); + } +} + // TODO: this functionality should exist at a higher level, in creating the AST // // Identify interface members that don't have their required extension turned on. @@ -4943,37 +5003,9 @@ void TGlslangToSpvTraverser::decorateStructType(const glslang::TType& type, builder.addExtension(spv::E_SPV_NV_geometry_shader_passthrough); } - // - // Add SPIR-V decorations for members (GL_EXT_spirv_intrinsics) - // - if (glslangMember.getQualifier().hasSpirvDecorate()) { - const glslang::TSpirvDecorate& spirvDecorate = glslangMember.getQualifier().getSpirvDecorate(); - - // Add spirv_decorate - for (auto& decorate : spirvDecorate.decorates) { - if (!decorate.second.empty()) { - std::vector literals; - TranslateLiterals(decorate.second, literals); - builder.addMemberDecoration(spvType, member, static_cast(decorate.first), literals); - } - else - builder.addMemberDecoration(spvType, member, static_cast(decorate.first)); - } - - // spirv_decorate_id not applied to members - assert(spirvDecorate.decorateIds.empty()); - - // Add spirv_decorate_string - for (auto& decorateString : spirvDecorate.decorateStrings) { - std::vector strings; - assert(!decorateString.second.empty()); - for (auto extraOperand : decorateString.second) { - const char* string = extraOperand->getConstArray()[0].getSConst()->c_str(); - strings.push_back(string); - } - builder.addDecoration(spvType, static_cast(decorateString.first), strings); - } - } + // Add SPIR-V decorations (GL_EXT_spirv_intrinsics) + if (glslangMember.getQualifier().hasSpirvDecorate()) + applySpirvDecorate(glslangMember, spvType, member); } // Decorate the structure @@ -9598,47 +9630,9 @@ spv::Id TGlslangToSpvTraverser::getSymbolId(const glslang::TIntermSymbol* symbol spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT); } - // // Add SPIR-V decorations (GL_EXT_spirv_intrinsics) - // - if (symbol->getType().getQualifier().hasSpirvDecorate()) { - const glslang::TSpirvDecorate& spirvDecorate = symbol->getType().getQualifier().getSpirvDecorate(); - - // Add spirv_decorate - for (auto& decorate : spirvDecorate.decorates) { - if (!decorate.second.empty()) { - std::vector literals; - TranslateLiterals(decorate.second, literals); - builder.addDecoration(id, static_cast(decorate.first), literals); - } - else - builder.addDecoration(id, static_cast(decorate.first)); - } - - // Add spirv_decorate_id - for (auto& decorateId : spirvDecorate.decorateIds) { - std::vector operandIds; - assert(!decorateId.second.empty()); - for (auto extraOperand : decorateId.second) { - if (extraOperand->getQualifier().isFrontEndConstant()) - operandIds.push_back(createSpvConstant(*extraOperand)); - else - operandIds.push_back(getSymbolId(extraOperand->getAsSymbolNode())); - } - builder.addDecorationId(id, static_cast(decorateId.first), operandIds); - } - - // Add spirv_decorate_string - for (auto& decorateString : spirvDecorate.decorateStrings) { - std::vector strings; - assert(!decorateString.second.empty()); - for (auto extraOperand : decorateString.second) { - const char* string = extraOperand->getConstArray()[0].getSConst()->c_str(); - strings.push_back(string); - } - builder.addDecoration(id, static_cast(decorateString.first), strings); - } - } + if (symbol->getType().getQualifier().hasSpirvDecorate()) + applySpirvDecorate(symbol->getType(), id, {}); return id; } From 52c59ecd3d9065a5d73bce72211a46794646157d Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 12 Sep 2023 14:35:50 -0600 Subject: [PATCH 322/594] Fix interpolant ES error The restriction of no swizzling and no struct fields as an interpolant were not being checked when using the ES profile. Fixes #3277. --- Test/baseResults/glsl.interpOp.error.frag.out | 501 ++++++++++++++++++ Test/glsl.interpOp.error.frag | 73 +++ glslang/MachineIndependent/Intermediate.cpp | 28 +- .../MachineIndependent/ParseContextBase.cpp | 4 +- glslang/MachineIndependent/ParseHelper.cpp | 63 ++- .../MachineIndependent/localintermediate.h | 10 +- gtests/AST.FromFile.cpp | 3 +- 7 files changed, 655 insertions(+), 27 deletions(-) create mode 100644 Test/baseResults/glsl.interpOp.error.frag.out create mode 100644 Test/glsl.interpOp.error.frag diff --git a/Test/baseResults/glsl.interpOp.error.frag.out b/Test/baseResults/glsl.interpOp.error.frag.out new file mode 100644 index 0000000000..36b66aeb4e --- /dev/null +++ b/Test/baseResults/glsl.interpOp.error.frag.out @@ -0,0 +1,501 @@ +glsl.interpOp.error.frag +ERROR: 0:39: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). +ERROR: 0:40: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:41: 'interpolateAtCentroid' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). +ERROR: 0:54: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). +ERROR: 0:55: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:56: 'interpolateAtSample' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). +ERROR: 0:69: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). +ERROR: 0:70: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element +ERROR: 0:71: 'interpolateAtOffset' : first argument must be an interpolant, or interpolant-array element. Using the field of a named struct as an interpolant argument is not allowed (ES-only). +ERROR: 9 compilation errors. No code generated. + + +Shader version: 320 +ERROR: node is still EOpNull! +0:27 Function Definition: main( ( global void) +0:27 Function Parameters: +0:32 Sequence +0:32 Sequence +0:32 move second child to first child ( temp mediump 4-component vector of float) +0:32 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:32 Construct vec4 ( temp mediump 4-component vector of float) +0:32 interpolateAtCentroid ( global highp float) +0:32 'v' (layout( location=2) smooth in highp float) +0:33 move second child to first child ( temp mediump 4-component vector of float) +0:33 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:33 Construct vec4 ( temp mediump 4-component vector of float) +0:33 interpolateAtCentroid ( global highp float) +0:33 x: direct index for structure ( in highp float) +0:33 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:33 Constant: +0:33 0 (const uint) +0:34 move second child to first child ( temp mediump 4-component vector of float) +0:34 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:34 Construct vec4 ( temp mediump 4-component vector of float) +0:34 interpolateAtCentroid ( global highp float) +0:34 direct index (layout( location=7) smooth temp highp float) +0:34 'z' (layout( location=7) smooth in 1-element array of highp float) +0:34 Constant: +0:34 0 (const int) +0:35 move second child to first child ( temp highp 4-component vector of float) +0:35 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:35 interpolateAtCentroid ( global highp 4-component vector of float) +0:35 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:36 move second child to first child ( temp highp 4-component vector of float) +0:36 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:36 interpolateAtCentroid ( global highp 4-component vector of float) +0:36 direct index ( temp highp 4-component vector of float) +0:36 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) +0:36 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:36 Constant: +0:36 1 (const uint) +0:36 Constant: +0:36 0 (const int) +0:39 move second child to first child ( temp mediump 4-component vector of float) +0:39 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:39 Construct vec4 ( temp mediump 4-component vector of float) +0:39 interpolateAtCentroid ( global highp float) +0:39 a: direct index for structure ( global highp float) +0:39 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:39 Constant: +0:39 0 (const int) +0:40 move second child to first child ( temp mediump 4-component vector of float) +0:40 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:40 Construct vec4 ( temp mediump 4-component vector of float) +0:40 interpolateAtCentroid ( global highp float) +0:40 direct index ( temp highp float) +0:40 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:40 Constant: +0:40 0 (const int) +0:41 move second child to first child ( temp mediump 4-component vector of float) +0:41 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:41 Construct vec4 ( temp mediump 4-component vector of float) +0:41 interpolateAtCentroid ( global highp 4-component vector of float) +0:41 s_v: direct index for structure ( global highp 4-component vector of float) +0:41 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) +0:41 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:41 Constant: +0:41 2 (const uint) +0:41 Constant: +0:41 0 (const int) +0:47 Sequence +0:47 move second child to first child ( temp mediump 4-component vector of float) +0:47 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:47 Construct vec4 ( temp mediump 4-component vector of float) +0:47 interpolateAtSample ( global highp float) +0:47 'v' (layout( location=2) smooth in highp float) +0:47 Constant: +0:47 0 (const int) +0:48 move second child to first child ( temp mediump 4-component vector of float) +0:48 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:48 Construct vec4 ( temp mediump 4-component vector of float) +0:48 interpolateAtSample ( global highp float) +0:48 x: direct index for structure ( in highp float) +0:48 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:48 Constant: +0:48 0 (const uint) +0:48 Constant: +0:48 0 (const int) +0:49 move second child to first child ( temp mediump 4-component vector of float) +0:49 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:49 Construct vec4 ( temp mediump 4-component vector of float) +0:49 interpolateAtSample ( global highp float) +0:49 direct index (layout( location=7) smooth temp highp float) +0:49 'z' (layout( location=7) smooth in 1-element array of highp float) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:50 move second child to first child ( temp highp 4-component vector of float) +0:50 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:50 interpolateAtSample ( global highp 4-component vector of float) +0:50 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:50 Constant: +0:50 0 (const int) +0:51 move second child to first child ( temp highp 4-component vector of float) +0:51 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:51 interpolateAtSample ( global highp 4-component vector of float) +0:51 direct index ( temp highp 4-component vector of float) +0:51 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) +0:51 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:51 Constant: +0:51 1 (const uint) +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 0 (const int) +0:54 move second child to first child ( temp mediump 4-component vector of float) +0:54 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:54 Construct vec4 ( temp mediump 4-component vector of float) +0:54 interpolateAtSample ( global highp float) +0:54 a: direct index for structure ( global highp float) +0:54 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 0 (const int) +0:55 move second child to first child ( temp mediump 4-component vector of float) +0:55 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:55 Construct vec4 ( temp mediump 4-component vector of float) +0:55 interpolateAtSample ( global highp float) +0:55 direct index ( temp highp float) +0:55 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 0 (const int) +0:56 move second child to first child ( temp mediump 4-component vector of float) +0:56 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:56 Construct vec4 ( temp mediump 4-component vector of float) +0:56 interpolateAtSample ( global highp 4-component vector of float) +0:56 s_v: direct index for structure ( global highp 4-component vector of float) +0:56 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) +0:56 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:56 Constant: +0:56 2 (const uint) +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 0 (const int) +0:62 Sequence +0:62 move second child to first child ( temp mediump 4-component vector of float) +0:62 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:62 Construct vec4 ( temp mediump 4-component vector of float) +0:62 interpolateAtOffset ( global highp float) +0:62 'v' (layout( location=2) smooth in highp float) +0:62 Constant: +0:62 0.000000 +0:62 0.000000 +0:63 move second child to first child ( temp mediump 4-component vector of float) +0:63 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:63 Construct vec4 ( temp mediump 4-component vector of float) +0:63 interpolateAtOffset ( global highp float) +0:63 x: direct index for structure ( in highp float) +0:63 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:63 Constant: +0:63 0 (const uint) +0:63 Constant: +0:63 0.000000 +0:63 0.000000 +0:64 move second child to first child ( temp mediump 4-component vector of float) +0:64 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:64 Construct vec4 ( temp mediump 4-component vector of float) +0:64 interpolateAtOffset ( global highp float) +0:64 direct index (layout( location=7) smooth temp highp float) +0:64 'z' (layout( location=7) smooth in 1-element array of highp float) +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 0.000000 +0:64 0.000000 +0:65 move second child to first child ( temp highp 4-component vector of float) +0:65 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:65 interpolateAtOffset ( global highp 4-component vector of float) +0:65 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:65 Constant: +0:65 0.000000 +0:65 0.000000 +0:66 move second child to first child ( temp highp 4-component vector of float) +0:66 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:66 interpolateAtOffset ( global highp 4-component vector of float) +0:66 direct index ( temp highp 4-component vector of float) +0:66 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) +0:66 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:66 Constant: +0:66 1 (const uint) +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 0.000000 +0:66 0.000000 +0:69 move second child to first child ( temp mediump 4-component vector of float) +0:69 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:69 Construct vec4 ( temp mediump 4-component vector of float) +0:69 interpolateAtOffset ( global highp float) +0:69 a: direct index for structure ( global highp float) +0:69 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 0.000000 +0:69 0.000000 +0:70 move second child to first child ( temp mediump 4-component vector of float) +0:70 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:70 Construct vec4 ( temp mediump 4-component vector of float) +0:70 interpolateAtOffset ( global highp float) +0:70 direct index ( temp highp float) +0:70 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 0.000000 +0:70 0.000000 +0:71 move second child to first child ( temp mediump 4-component vector of float) +0:71 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:71 Construct vec4 ( temp mediump 4-component vector of float) +0:71 interpolateAtOffset ( global highp 4-component vector of float) +0:71 s_v: direct index for structure ( global highp 4-component vector of float) +0:71 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) +0:71 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:71 Constant: +0:71 2 (const uint) +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 0.000000 +0:71 0.000000 +0:? Linker Objects +0:? 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:? 'v' (layout( location=2) smooth in highp float) +0:? 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:? 'z' (layout( location=7) smooth in 1-element array of highp float) +0:? 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 320 +ERROR: node is still EOpNull! +0:27 Function Definition: main( ( global void) +0:27 Function Parameters: +0:32 Sequence +0:32 Sequence +0:32 move second child to first child ( temp mediump 4-component vector of float) +0:32 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:32 Construct vec4 ( temp mediump 4-component vector of float) +0:32 interpolateAtCentroid ( global highp float) +0:32 'v' (layout( location=2) smooth in highp float) +0:33 move second child to first child ( temp mediump 4-component vector of float) +0:33 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:33 Construct vec4 ( temp mediump 4-component vector of float) +0:33 interpolateAtCentroid ( global highp float) +0:33 x: direct index for structure ( in highp float) +0:33 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:33 Constant: +0:33 0 (const uint) +0:34 move second child to first child ( temp mediump 4-component vector of float) +0:34 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:34 Construct vec4 ( temp mediump 4-component vector of float) +0:34 interpolateAtCentroid ( global highp float) +0:34 direct index (layout( location=7) smooth temp highp float) +0:34 'z' (layout( location=7) smooth in 1-element array of highp float) +0:34 Constant: +0:34 0 (const int) +0:35 move second child to first child ( temp highp 4-component vector of float) +0:35 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:35 interpolateAtCentroid ( global highp 4-component vector of float) +0:35 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:36 move second child to first child ( temp highp 4-component vector of float) +0:36 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:36 interpolateAtCentroid ( global highp 4-component vector of float) +0:36 direct index ( temp highp 4-component vector of float) +0:36 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) +0:36 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:36 Constant: +0:36 1 (const uint) +0:36 Constant: +0:36 0 (const int) +0:39 move second child to first child ( temp mediump 4-component vector of float) +0:39 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:39 Construct vec4 ( temp mediump 4-component vector of float) +0:39 interpolateAtCentroid ( global highp float) +0:39 a: direct index for structure ( global highp float) +0:39 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:39 Constant: +0:39 0 (const int) +0:40 move second child to first child ( temp mediump 4-component vector of float) +0:40 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:40 Construct vec4 ( temp mediump 4-component vector of float) +0:40 interpolateAtCentroid ( global highp float) +0:40 direct index ( temp highp float) +0:40 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:40 Constant: +0:40 0 (const int) +0:41 move second child to first child ( temp mediump 4-component vector of float) +0:41 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:41 Construct vec4 ( temp mediump 4-component vector of float) +0:41 interpolateAtCentroid ( global highp 4-component vector of float) +0:41 s_v: direct index for structure ( global highp 4-component vector of float) +0:41 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) +0:41 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:41 Constant: +0:41 2 (const uint) +0:41 Constant: +0:41 0 (const int) +0:47 Sequence +0:47 move second child to first child ( temp mediump 4-component vector of float) +0:47 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:47 Construct vec4 ( temp mediump 4-component vector of float) +0:47 interpolateAtSample ( global highp float) +0:47 'v' (layout( location=2) smooth in highp float) +0:47 Constant: +0:47 0 (const int) +0:48 move second child to first child ( temp mediump 4-component vector of float) +0:48 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:48 Construct vec4 ( temp mediump 4-component vector of float) +0:48 interpolateAtSample ( global highp float) +0:48 x: direct index for structure ( in highp float) +0:48 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:48 Constant: +0:48 0 (const uint) +0:48 Constant: +0:48 0 (const int) +0:49 move second child to first child ( temp mediump 4-component vector of float) +0:49 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:49 Construct vec4 ( temp mediump 4-component vector of float) +0:49 interpolateAtSample ( global highp float) +0:49 direct index (layout( location=7) smooth temp highp float) +0:49 'z' (layout( location=7) smooth in 1-element array of highp float) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:50 move second child to first child ( temp highp 4-component vector of float) +0:50 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:50 interpolateAtSample ( global highp 4-component vector of float) +0:50 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:50 Constant: +0:50 0 (const int) +0:51 move second child to first child ( temp highp 4-component vector of float) +0:51 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:51 interpolateAtSample ( global highp 4-component vector of float) +0:51 direct index ( temp highp 4-component vector of float) +0:51 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) +0:51 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:51 Constant: +0:51 1 (const uint) +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 0 (const int) +0:54 move second child to first child ( temp mediump 4-component vector of float) +0:54 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:54 Construct vec4 ( temp mediump 4-component vector of float) +0:54 interpolateAtSample ( global highp float) +0:54 a: direct index for structure ( global highp float) +0:54 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 0 (const int) +0:55 move second child to first child ( temp mediump 4-component vector of float) +0:55 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:55 Construct vec4 ( temp mediump 4-component vector of float) +0:55 interpolateAtSample ( global highp float) +0:55 direct index ( temp highp float) +0:55 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 0 (const int) +0:56 move second child to first child ( temp mediump 4-component vector of float) +0:56 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:56 Construct vec4 ( temp mediump 4-component vector of float) +0:56 interpolateAtSample ( global highp 4-component vector of float) +0:56 s_v: direct index for structure ( global highp 4-component vector of float) +0:56 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) +0:56 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:56 Constant: +0:56 2 (const uint) +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 0 (const int) +0:62 Sequence +0:62 move second child to first child ( temp mediump 4-component vector of float) +0:62 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:62 Construct vec4 ( temp mediump 4-component vector of float) +0:62 interpolateAtOffset ( global highp float) +0:62 'v' (layout( location=2) smooth in highp float) +0:62 Constant: +0:62 0.000000 +0:62 0.000000 +0:63 move second child to first child ( temp mediump 4-component vector of float) +0:63 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:63 Construct vec4 ( temp mediump 4-component vector of float) +0:63 interpolateAtOffset ( global highp float) +0:63 x: direct index for structure ( in highp float) +0:63 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:63 Constant: +0:63 0 (const uint) +0:63 Constant: +0:63 0.000000 +0:63 0.000000 +0:64 move second child to first child ( temp mediump 4-component vector of float) +0:64 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:64 Construct vec4 ( temp mediump 4-component vector of float) +0:64 interpolateAtOffset ( global highp float) +0:64 direct index (layout( location=7) smooth temp highp float) +0:64 'z' (layout( location=7) smooth in 1-element array of highp float) +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 0.000000 +0:64 0.000000 +0:65 move second child to first child ( temp highp 4-component vector of float) +0:65 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:65 interpolateAtOffset ( global highp 4-component vector of float) +0:65 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:65 Constant: +0:65 0.000000 +0:65 0.000000 +0:66 move second child to first child ( temp highp 4-component vector of float) +0:66 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:66 interpolateAtOffset ( global highp 4-component vector of float) +0:66 direct index ( temp highp 4-component vector of float) +0:66 xyz: direct index for structure ( in 1-element array of highp 4-component vector of float) +0:66 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:66 Constant: +0:66 1 (const uint) +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 0.000000 +0:66 0.000000 +0:69 move second child to first child ( temp mediump 4-component vector of float) +0:69 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:69 Construct vec4 ( temp mediump 4-component vector of float) +0:69 interpolateAtOffset ( global highp float) +0:69 a: direct index for structure ( global highp float) +0:69 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 0.000000 +0:69 0.000000 +0:70 move second child to first child ( temp mediump 4-component vector of float) +0:70 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:70 Construct vec4 ( temp mediump 4-component vector of float) +0:70 interpolateAtOffset ( global highp float) +0:70 direct index ( temp highp float) +0:70 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 0.000000 +0:70 0.000000 +0:71 move second child to first child ( temp mediump 4-component vector of float) +0:71 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:71 Construct vec4 ( temp mediump 4-component vector of float) +0:71 interpolateAtOffset ( global highp 4-component vector of float) +0:71 s_v: direct index for structure ( global highp 4-component vector of float) +0:71 s0: direct index for structure ( in structure{ global highp 4-component vector of float s_v}) +0:71 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:71 Constant: +0:71 2 (const uint) +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 0.000000 +0:71 0.000000 +0:? Linker Objects +0:? 'v_var' (layout( location=0) smooth in structure{ global highp float a, global highp float b}) +0:? 'v' (layout( location=2) smooth in highp float) +0:? 'anon@0' (layout( location=3) in block{ in highp float x, in 1-element array of highp 4-component vector of float xyz, in structure{ global highp 4-component vector of float s_v} s0}) +0:? 'z' (layout( location=7) smooth in 1-element array of highp float) +0:? 'w' (layout( location=8) smooth in highp 4-component vector of float) +0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) + diff --git a/Test/glsl.interpOp.error.frag b/Test/glsl.interpOp.error.frag new file mode 100644 index 0000000000..7d46f2e632 --- /dev/null +++ b/Test/glsl.interpOp.error.frag @@ -0,0 +1,73 @@ +#version 320 es + +struct S +{ + highp float a; + highp float b; +}; +layout(location = 0) in S v_var; + +layout(location = 2) in highp float v; + +struct S0 { + highp vec4 s_v; +}; + +layout(location = 3) in FIn { + highp float x; + highp vec4 xyz[1]; + S0 s0; +}; + +layout(location = 7) in highp float z[1]; + +layout(location = 8) in highp vec4 w; + +layout(location = 0) out mediump vec4 fragColor; +void main (void) +{ + // Centroid + { + // valid + fragColor = vec4(interpolateAtCentroid(v)); + fragColor = vec4(interpolateAtCentroid(x)); + fragColor = vec4(interpolateAtCentroid(z[0])); + fragColor = interpolateAtCentroid(w); + fragColor = interpolateAtCentroid(xyz[0]); + + //// invalid + fragColor = vec4(interpolateAtCentroid(v_var.a)); + fragColor = vec4(interpolateAtCentroid(w.x)); + fragColor = vec4(interpolateAtCentroid(s0.s_v)); + } + + // Sample + { + // valid + fragColor = vec4(interpolateAtSample(v, 0)); + fragColor = vec4(interpolateAtSample(x, 0)); + fragColor = vec4(interpolateAtSample(z[0], 0)); + fragColor = interpolateAtSample(w, 0); + fragColor = interpolateAtSample(xyz[0], 0); + + // invalid + fragColor = vec4(interpolateAtSample(v_var.a, 0)); + fragColor = vec4(interpolateAtSample(w.x, 0)); + fragColor = vec4(interpolateAtSample(s0.s_v, 0)); + } + + // Offset + { + // valid + fragColor = vec4(interpolateAtOffset(v, vec2(0))); + fragColor = vec4(interpolateAtOffset(x, vec2(0))); + fragColor = vec4(interpolateAtOffset(z[0], vec2(0))); + fragColor = interpolateAtOffset(w, vec2(0)); + fragColor = interpolateAtOffset(xyz[0], vec2(0)); + + // invalid + fragColor = vec4(interpolateAtOffset(v_var.a, vec2(0))); + fragColor = vec4(interpolateAtOffset(w.x, vec2(0))); + fragColor = vec4(interpolateAtOffset(s0.s_v, vec2(0))); + } +} diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index a8e3b38bfd..30450b36a3 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2647,28 +2647,42 @@ TIntermTyped* TIntermediate::addSwizzle(TSwizzleSelectors& selecto // 'swizzleOkay' says whether or not it is okay to consider a swizzle // a valid part of the dereference chain. // -// 'BufferReferenceOk' says if type is buffer_reference, the routine stop to find the most left node. +// 'bufferReferenceOk' says if type is buffer_reference, the routine will stop to find the most left node. // +// 'proc' is an optional function to run on each node that is processed during the traversal. 'proc' must +// return true to continue the traversal, or false to end the traversal early. // -const TIntermTyped* TIntermediate::findLValueBase(const TIntermTyped* node, bool swizzleOkay , bool bufferReferenceOk) +const TIntermTyped* TIntermediate::traverseLValueBase(const TIntermTyped* node, bool swizzleOkay, + bool bufferReferenceOk, + std::function proc) { do { const TIntermBinary* binary = node->getAsBinaryNode(); - if (binary == nullptr) + if (binary == nullptr) { + if (proc) { + proc(*node); + } return node; + } TOperator op = binary->getOp(); - if (op != EOpIndexDirect && op != EOpIndexIndirect && op != EOpIndexDirectStruct && op != EOpVectorSwizzle && op != EOpMatrixSwizzle) + if (op != EOpIndexDirect && op != EOpIndexIndirect && op != EOpIndexDirectStruct && op != EOpVectorSwizzle && + op != EOpMatrixSwizzle) return nullptr; - if (! swizzleOkay) { + if (!swizzleOkay) { if (op == EOpVectorSwizzle || op == EOpMatrixSwizzle) return nullptr; if ((op == EOpIndexDirect || op == EOpIndexIndirect) && (binary->getLeft()->getType().isVector() || binary->getLeft()->getType().isScalar()) && - ! binary->getLeft()->getType().isArray()) + !binary->getLeft()->getType().isArray()) return nullptr; } - node = node->getAsBinaryNode()->getLeft(); + if (proc) { + if (!proc(*node)) { + return node; + } + } + node = binary->getLeft(); if (bufferReferenceOk && node->isReference()) return node; } while (true); diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index e8e32d9267..9b11967275 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -208,7 +208,7 @@ bool TParseContextBase::lValueErrorCheck(const TSourceLoc& loc, const char* op, // // If we get here, we have an error and a message. // - const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true); + const TIntermTyped* leftMostTypeNode = TIntermediate::traverseLValueBase(node, true); if (symNode) error(loc, " l-value required", op, "\"%s\" (%s)", symbol, message); @@ -234,7 +234,7 @@ void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, const TIntermSymbol* symNode = node->getAsSymbolNode(); if (node->getQualifier().isWriteOnly()) { - const TIntermTyped* leftMostTypeNode = TIntermediate::findLValueBase(node, true); + const TIntermTyped* leftMostTypeNode = TIntermediate::traverseLValueBase(node, true); if (symNode != nullptr) error(loc, "can't read from writeonly object: ", op, symNode->getName().c_str()); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index afc6ab3df2..0dad047d75 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2571,7 +2571,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); } - const TIntermTyped* base = TIntermediate::findLValueBase(arg0, true , true); + const TIntermTyped* base = TIntermediate::traverseLValueBase(arg0, true, true); const char* errMsg = "Only l-values corresponding to shader block storage or shared variables can be used with " "atomic memory functions."; if (base) { @@ -2591,20 +2591,57 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan case EOpInterpolateAtCentroid: case EOpInterpolateAtSample: case EOpInterpolateAtOffset: - case EOpInterpolateAtVertex: - // Make sure the first argument is an interpolant, or an array element of an interpolant + case EOpInterpolateAtVertex: { if (arg0->getType().getQualifier().storage != EvqVaryingIn) { - // It might still be an array element. + // Traverse down the left branch of arg0 to ensure this argument is a valid interpolant. // - // We could check more, but the semantics of the first argument are already met; the - // only way to turn an array into a float/vec* is array dereference and swizzle. + // For desktop GL >4.3 we effectively only need to ensure that arg0 represents an l-value from an + // input declaration. // - // ES and desktop 4.3 and earlier: swizzles may not be used - // desktop 4.4 and later: swizzles may be used - bool swizzleOkay = (!isEsProfile()) && (version >= 440); - const TIntermTyped* base = TIntermediate::findLValueBase(arg0, swizzleOkay); - if (base == nullptr || base->getType().getQualifier().storage != EvqVaryingIn) - error(loc, "first argument must be an interpolant, or interpolant-array element", fnCandidate.getName().c_str(), ""); + // For desktop GL <= 4.3 and ES, we must also ensure that swizzling is not used + // + // For ES, we must also ensure that a field selection operator (i.e., '.') is not used on a named + // struct. + + const bool esProfile = isEsProfile(); + const bool swizzleOkay = !esProfile && (version >= 440); + + std::string interpolantErrorMsg = "first argument must be an interpolant, or interpolant-array element"; + bool isValid = true; // Assume that the interpolant is valid until we find a condition making it invalid + bool isIn = false; // Checks whether or not the interpolant is a shader input + bool structAccessOp = false; // Whether or not the previous node in the chain is a struct accessor + TIntermediate::traverseLValueBase( + arg0, swizzleOkay, false, + [&isValid, &isIn, &interpolantErrorMsg, esProfile, &structAccessOp](const TIntermNode& n) -> bool { + auto* type = n.getAsTyped(); + if (type) { + if (type->getType().getQualifier().storage == EvqVaryingIn) { + isIn = true; + } + // If a field accessor was used, it can only be used to access a field with an input block, not a struct. + if (structAccessOp && (type->getType().getBasicType() != EbtBlock)) { + interpolantErrorMsg += + ". Using the field of a named struct as an interpolant argument is not " + "allowed (ES-only)."; + isValid = false; + } + } + + // ES has different requirements for interpolants than GL + if (esProfile) { + // Swizzling will be taken care of by the 'swizzleOkay' argument passsed to traverseLValueBase, + // so we only ned to check whether or not a field accessor has been used with a named struct. + auto* binary = n.getAsBinaryNode(); + if (binary && (binary->getOp() == EOpIndexDirectStruct)) { + structAccessOp = true; + } + } + // Don't continue traversing if we know we have an invalid interpolant at this point. + return isValid; + }); + if (!isIn || !isValid) { + error(loc, interpolantErrorMsg.c_str(), fnCandidate.getName().c_str(), ""); + } } if (callNode.getOp() == EOpInterpolateAtVertex) { @@ -2620,7 +2657,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } } } - break; + } break; case EOpEmitStreamVertex: case EOpEndStreamPrimitive: diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 2f0e65ce39..a7d4e18a40 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -43,11 +43,12 @@ #include "../Public/ShaderLang.h" #include "Versions.h" -#include -#include #include -#include #include +#include +#include +#include +#include class TInfoSink; @@ -572,7 +573,8 @@ class TIntermediate { TIntermTyped* foldSwizzle(TIntermTyped* node, TSwizzleSelectors& fields, const TSourceLoc&); // Tree ops - static const TIntermTyped* findLValueBase(const TIntermTyped*, bool swizzleOkay , bool BufferReferenceOk = false); + static const TIntermTyped* traverseLValueBase(const TIntermTyped*, bool swizzleOkay, bool bufferReferenceOk = false, + std::function proc = {}); // Linkage related void addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguage, TSymbolTable&); diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 828dabec47..cf56dae5b5 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -299,7 +299,8 @@ INSTANTIATE_TEST_SUITE_P( "EndStreamPrimitive.geom", "floatBitsToInt.vert", "coord_conventions.frag", - "gl_FragCoord.frag" + "gl_FragCoord.frag", + "glsl.interpOp.error.frag", })), FileNameAsCustomTestSuffix ); From 62de186c3383feef067feb6ea578f79977910722 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 8 Nov 2023 16:54:54 -0700 Subject: [PATCH 323/594] Remove GlslangToSpv.h dependency on intermediate.h GlslangToSpv.h only declares functions with opaque references to to TIntermediate, for which a simple "class TIntermediate;" declaration is adequate. This means that Include/intermediate.h no longer needs to be installed as part of glslang's public interface. --- SPIRV/GlslangToSpv.h | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h index b9736d7c98..55a30deaed 100644 --- a/SPIRV/GlslangToSpv.h +++ b/SPIRV/GlslangToSpv.h @@ -35,12 +35,7 @@ #pragma once -#if defined(_MSC_VER) && _MSC_VER >= 1900 - #pragma warning(disable : 4464) // relative include path contains '..' -#endif - #include "SpvTools.h" -#include "glslang/Include/intermediate.h" #include #include @@ -48,6 +43,7 @@ #include "Logger.h" namespace glslang { +class TIntermediate; void GetSpirvVersion(std::string&); int GetSpirvGeneratorVersion(); From 6f9ab3c2deb6aca924141e8f64351687b6464436 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 8 Nov 2023 18:13:08 -0700 Subject: [PATCH 324/594] Remove GlslangToSpv.h dependency on SpvTools.h The dependency was only because of the SpvOptions struct which is used in both, but really is part of the glslang public interface and should be in the public GlslangToSpv.h header. --- SPIRV/GlslangToSpv.cpp | 1 + SPIRV/GlslangToSpv.h | 14 ++++++++++++-- SPIRV/SpvTools.h | 13 +------------ StandAlone/StandAlone.cpp | 1 + gtests/TestFixture.h | 1 + 5 files changed, 16 insertions(+), 14 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 25a39777bb..acda1923e8 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -43,6 +43,7 @@ #include "spirv.hpp" #include "GlslangToSpv.h" #include "SpvBuilder.h" +#include "SpvTools.h" namespace spv { #include "GLSL.std.450.h" #include "GLSL.ext.KHR.h" diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h index 55a30deaed..1b9ef3c514 100644 --- a/SPIRV/GlslangToSpv.h +++ b/SPIRV/GlslangToSpv.h @@ -35,8 +35,6 @@ #pragma once -#include "SpvTools.h" - #include #include @@ -45,6 +43,18 @@ namespace glslang { class TIntermediate; +struct SpvOptions { + bool generateDebugInfo {false}; + bool stripDebugInfo {false}; + bool disableOptimizer {true}; + bool optimizeSize {false}; + bool disassemble {false}; + bool validate {false}; + bool emitNonSemanticShaderDebugInfo {false}; + bool emitNonSemanticShaderDebugSource{ false }; + bool compileOnly{false}; +}; + void GetSpirvVersion(std::string&); int GetSpirvGeneratorVersion(); void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index a4ce11b887..eabde46662 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -48,22 +48,11 @@ #endif #include "glslang/MachineIndependent/localintermediate.h" +#include "GlslangToSpv.h" #include "Logger.h" namespace glslang { -struct SpvOptions { - bool generateDebugInfo {false}; - bool stripDebugInfo {false}; - bool disableOptimizer {true}; - bool optimizeSize {false}; - bool disassemble {false}; - bool validate {false}; - bool emitNonSemanticShaderDebugInfo {false}; - bool emitNonSemanticShaderDebugSource{ false }; - bool compileOnly{false}; -}; - #if ENABLE_OPT // Translate glslang's view of target versioning to what SPIRV-Tools uses. diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 28565365b6..ed3deccd05 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -46,6 +46,7 @@ #include "DirStackFileIncluder.h" #include "./../glslang/Include/ShHandle.h" #include "./../glslang/Public/ShaderLang.h" +#include "../glslang/MachineIndependent/localintermediate.h" #include "../SPIRV/GlslangToSpv.h" #include "../SPIRV/GLSL.std.450.h" #include "../SPIRV/doc.h" diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index df3433bfce..b23ba304d0 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -48,6 +48,7 @@ #include "SPIRV/disassemble.h" #include "SPIRV/doc.h" #include "SPIRV/SPVRemapper.h" +#include "glslang/Include/Types.h" #include "glslang/Public/ResourceLimits.h" #include "glslang/Public/ShaderLang.h" From 806d9abbad9c9d84a0d56eb63e5e0e52bb5b05b1 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 8 Nov 2023 19:54:11 -0700 Subject: [PATCH 325/594] Remove SPVRemapper.h dependency on spvIR.h The only thing it uses from spvIR.h is the NoResult constant, which is now defined inline. --- SPIRV/SPVRemapper.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index 42b01686ee..33efe331e4 100644 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -77,9 +77,9 @@ class spirvbin_base_t #include #include "spirv.hpp" -#include "spvIR.h" namespace spv { +const Id NoResult = 0; // class to hold SPIR-V binary data for remapping, DCE, and debug stripping class spirvbin_t : public spirvbin_base_t From 1dcb072cda091180a5b8b03c030bcbe83a54f8e2 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 8 Nov 2023 16:35:41 -0700 Subject: [PATCH 326/594] cmake: only install public headers Only the headers that are part of glslang's public interface are installed. Previously, all of its headers were installed, which exposed a lot of internal implementation details and made it difficult to maintain backward compatiblity. This reduces the API surface somewhat and will make it easier to maintain API and ABI compatibility. --- SPIRV/CMakeLists.txt | 9 ++++++++- glslang/CMakeLists.txt | 16 ++++++++++------ 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index a80e74ed03..2d6d855fa5 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -70,6 +70,13 @@ set(SPVREMAP_HEADERS SPVRemapper.h doc.h) +set(PUBLIC_HEADERS + GlslangToSpv.h + disassemble.h + Logger.h + spirv.hpp + SPVRemapper.h) + add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) set_target_properties(SPIRV PROPERTIES FOLDER glslang @@ -148,5 +155,5 @@ if(ENABLE_GLSLANG_INSTALL) ") install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - install(FILES ${HEADERS} ${SPVREMAP_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) + install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif() diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 57fb1b9ea5..7897b99434 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -163,7 +163,7 @@ set(GLSLANG_HEADERS Include/SpirvIntrinsics.h Include/Types.h) -add_library(glslang ${LIB_TYPE} ${BISON_GLSLParser_OUTPUT_SOURCE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS}) +add_library(glslang ${LIB_TYPE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS}) set_target_properties(glslang PROPERTIES FOLDER glslang POSITION_INDEPENDENT_CODE ON @@ -247,12 +247,16 @@ if(ENABLE_GLSLANG_INSTALL) install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() - set(ALL_HEADERS - ${GLSLANG_HEADERS} - ${MACHINEINDEPENDENT_HEADERS} - ${RESOURCELIMITS_HEADERS}) + set(PUBLIC_HEADERS + Public/ResourceLimits.h + Public/ShaderLang.h + Public/resource_limits_c.h + Include/glslang_c_interface.h + Include/glslang_c_shader_types.h + Include/ResourceLimits.h + MachineIndependent/Versions.h) - foreach(file ${ALL_HEADERS}) + foreach(file ${PUBLIC_HEADERS}) get_filename_component(dir ${file} DIRECTORY) install(FILES ${file} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/${dir}) endforeach() From 109b5979d386ec287c80aa98cc1e34460d468491 Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Tue, 24 Oct 2023 15:41:12 -0700 Subject: [PATCH 327/594] Support NonSemantic DebugValue and generate it for const arg For passing-by-value semantic, DebugDeclare cannot be used for parameters because there's no pointer. --- SPIRV/SpvBuilder.cpp | 46 +++++++++++++------ SPIRV/SpvBuilder.h | 2 +- .../spv.debuginfo.const_params.glsl.comp.out | 26 +++++------ 3 files changed, 46 insertions(+), 28 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 7586ecf59d..b631c4e9b4 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1182,13 +1182,26 @@ Id Builder::makeDebugExpression() return debugExpression; } -Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const localVariable) +Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const pointer) { Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugDeclare); inst->addIdOperand(debugLocalVariable); // debug local variable id - inst->addIdOperand(localVariable); // local variable id + inst->addIdOperand(pointer); // pointer to local variable id + inst->addIdOperand(makeDebugExpression()); // expression id + buildPoint->addInstruction(std::unique_ptr(inst)); + + return inst->getResultId(); +} + +Id Builder::makeDebugValue(Id const debugLocalVariable, Id const value) +{ + Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->addIdOperand(nonSemanticShaderDebugInfo); + inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugValue); + inst->addIdOperand(debugLocalVariable); // debug local variable id + inst->addIdOperand(value); // value of local variable id inst->addIdOperand(makeDebugExpression()); // expression id buildPoint->addInstruction(std::unique_ptr(inst)); @@ -2148,20 +2161,25 @@ void Builder::setupDebugFunctionEntry(Function* function, const char* name, int Id firstParamId = function->getParamId(0); for (size_t p = 0; p < paramTypes.size(); ++p) { - auto getParamTypeId = [this](Id const& typeId) { - if (isPointerType(typeId) || isArrayType(typeId)) { - return getContainedTypeId(typeId); - } else { - return typeId; - } - }; - auto const& paramName = paramNames[p]; - auto const debugLocalVariableId = - createDebugLocalVariable(debugId[getParamTypeId(paramTypes[p])], paramName, p + 1); + bool passByRef = false; + Id paramTypeId = paramTypes[p]; - debugId[firstParamId + p] = debugLocalVariableId; + // For pointer-typed parameters, they are actually passed by reference and we need unwrap the pointer to get the actual parameter type. + if (isPointerType(paramTypeId) || isArrayType(paramTypeId)) { + passByRef = true; + paramTypeId = getContainedTypeId(paramTypeId); + } - makeDebugDeclare(debugLocalVariableId, firstParamId + p); + auto const& paramName = paramNames[p]; + auto const debugLocalVariableId = createDebugLocalVariable(debugId[paramTypeId], paramName, p + 1); + auto const paramId = static_cast(firstParamId + p); + debugId[paramId] = debugLocalVariableId; + + if (passByRef) { + makeDebugDeclare(debugLocalVariableId, paramId); + } else { + makeDebugValue(debugLocalVariableId, paramId); + } } } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 1a85b1d673..6ba7032997 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -231,7 +231,7 @@ class Builder { Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable); Id createDebugLocalVariable(Id type, char const*const name, size_t const argNumber = 0); Id makeDebugExpression(); - Id makeDebugDeclare(Id const debugLocalVariable, Id const localVariable); + Id makeDebugDeclare(Id const debugLocalVariable, Id const pointer); Id makeDebugValue(Id const debugLocalVariable, Id const value); Id makeDebugFunctionType(Id returnType, const std::vector& paramTypes); Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId); diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index 48f373377c..414b32178a 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -81,18 +81,18 @@ spv.debuginfo.const_params.glsl.comp Return FunctionEnd Line 1 7 18 -33(function(f1;vf2;vf3;vf4;): 4 Function None 27 - 29(f): 16(float) FunctionParameter - 30(f2): 19(fvec2) FunctionParameter - 31(f3): 22(fvec3) FunctionParameter - 32(f4): 24(fvec4) FunctionParameter - 34: Label - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 29(f) 47 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 30(f2) 47 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 31(f3) 47 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 54 32(f4) 47 - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(function(f1;vf2;vf3;vf4;) +39(function(f1;vf2;vf3;vf4;): 4 Function None 33 + 35(f): 24(float) FunctionParameter + 36(f2): 27(fvec2) FunctionParameter + 37(f3): 29(fvec3) FunctionParameter + 38(f4): 31(fvec4) FunctionParameter + 42: Label + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 45 35(f) 48 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 49 36(f2) 48 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 52 37(f3) 48 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 55 38(f4) 48 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 41 39(function(f1;vf2;vf3;vf4;) Return FunctionEnd From 845e5d5a28561a25f85d23ef779c828e535bd56f Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Wed, 8 Nov 2023 14:43:49 -0800 Subject: [PATCH 328/594] Fix the corrupted test because of rebase --- .../spv.debuginfo.const_params.glsl.comp.out | 26 +++++++++---------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index 414b32178a..398fd86daf 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -81,18 +81,18 @@ spv.debuginfo.const_params.glsl.comp Return FunctionEnd Line 1 7 18 -39(function(f1;vf2;vf3;vf4;): 4 Function None 33 - 35(f): 24(float) FunctionParameter - 36(f2): 27(fvec2) FunctionParameter - 37(f3): 29(fvec3) FunctionParameter - 38(f4): 31(fvec4) FunctionParameter - 42: Label - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 41 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 17 12 12 12 12 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 45 35(f) 48 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 49 36(f2) 48 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 52 37(f3) 48 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 55 38(f4) 48 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 41 39(function(f1;vf2;vf3;vf4;) +33(function(f1;vf2;vf3;vf4;): 4 Function None 27 + 29(f): 16(float) FunctionParameter + 30(f2): 19(fvec2) FunctionParameter + 31(f3): 22(fvec3) FunctionParameter + 32(f4): 24(fvec4) FunctionParameter + 34: Label + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 44 29(f) 47 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 48 30(f2) 47 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 51 31(f3) 47 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 54 32(f4) 47 + 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(function(f1;vf2;vf3;vf4;) Return FunctionEnd From 854db99ff1371995e015a65dfd88556c5af01027 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjimihe=E2=80=9D?= Date: Fri, 17 Nov 2023 17:02:10 +0800 Subject: [PATCH 329/594] Out-of-range floats should overflow/underflow to infinity/0.0 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit glslang representing literal constants with double precision, so 1.0e40 and 1.0e-50 are normal values. Shader1: precision highp float; out vec4 my_FragColor; void main() { // Out-of-range floats should overflow to infinity // GLSL ES 3.00.6 section 4.1.4 Floats: // "If the value of the floating point number is too large (small) to be stored as a single precision value, it is converted to positive (negative) infinity" float correct = isinf(1.0e40) ? 1.0 : 0.0; my_FragColor = vec4(0.0, correct, 0.0, 1.0); } The expected ouput result of this test is vec4(0.0, 1.0, 0.0, 1.0), but it's vec4(0.0,0.0,0.0,1.0).Because the return value of isInf is false. precision highp float; out vec4 my_FragColor; void main() { // GLSL ES 3.00.6 section 4.1.4 Floats: // "A value with a magnitude too small to be represented as a mantissa and exponent is converted to zero." // 1.0e-50 is small enough that it can't even be stored as subnormal. float correct = (1.0e-50 == 0.0) ? 1.0 : 0.0; my_FragColor = vec4(0.0, correct, 0.0, 1.0); } The expected ouput result of this test is vec4(0.0, 1.0, 0.0, 1.0), but it's vec4(0.0,0.0,0.0,1.0). For f32 and f16 type, when the literal constant out of range of the f32 and f16 number, the value should overflow or underflow to inf or zero. glcts test item KHR-GLES3.number_parsing.float_out_of_range_as_infinity --- .../overflow_underflow_toinf_0.out | 28 +++++++++++++++++++ Test/overflow_underflow_toinf_0.frag | 12 ++++++++ Test/runtests | 2 ++ glslang/MachineIndependent/Intermediate.cpp | 12 ++++++++ 4 files changed, 54 insertions(+) create mode 100644 Test/baseResults/overflow_underflow_toinf_0.out create mode 100644 Test/overflow_underflow_toinf_0.frag diff --git a/Test/baseResults/overflow_underflow_toinf_0.out b/Test/baseResults/overflow_underflow_toinf_0.out new file mode 100644 index 0000000000..3e017b8c89 --- /dev/null +++ b/Test/baseResults/overflow_underflow_toinf_0.out @@ -0,0 +1,28 @@ +overflow_underflow_toinf_0.frag +Shader version: 320 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:9 Sequence +0:9 Sequence +0:9 move second child to first child ( temp highp float) +0:9 'correct' ( temp highp float) +0:9 Constant: +0:9 1.000000 +0:10 Sequence +0:10 move second child to first child ( temp highp float) +0:10 'correct1' ( temp highp float) +0:10 Constant: +0:10 1.000000 +0:11 move second child to first child ( temp highp 4-component vector of float) +0:11 'my_FragColor' ( out highp 4-component vector of float) +0:11 Construct vec4 ( temp highp 4-component vector of float) +0:11 Constant: +0:11 0.000000 +0:11 'correct' ( temp highp float) +0:11 'correct1' ( temp highp float) +0:11 Constant: +0:11 1.000000 +0:? Linker Objects +0:? 'my_FragColor' ( out highp 4-component vector of float) + diff --git a/Test/overflow_underflow_toinf_0.frag b/Test/overflow_underflow_toinf_0.frag new file mode 100644 index 0000000000..2e557577b4 --- /dev/null +++ b/Test/overflow_underflow_toinf_0.frag @@ -0,0 +1,12 @@ + #version 320 es + precision highp float; + out vec4 my_FragColor; + void main() + { + // GLSL ES 3.00.6 section 4.1.4 Floats: + // "A value with a magnitude too small to be represented as a mantissa and exponent is converted to zero." + // 1.0e-50 is small enough that it can't even be stored as subnormal. + float correct = (1.0e-50 == 0.0) ? 1.0 : 0.0; + float correct1 = isinf(1.0e40) ? 1.0 : 0.0; + my_FragColor = vec4(0.0, correct, correct1, 1.0); + } \ No newline at end of file diff --git a/Test/runtests b/Test/runtests index e7e1d33f48..197f7fcdb8 100755 --- a/Test/runtests +++ b/Test/runtests @@ -343,6 +343,8 @@ run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanc diff -b $BASEDIR/enhanced.7.link.out $TARGETDIR/enhanced.7.link.out || HASERROR=1 run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > $TARGETDIR/spv.textureError.frag.out diff -b $BASEDIR/spv.textureError.frag.out $TARGETDIR/spv.textureError.frag.out || HASERROR=1 +run -i overflow_underflow_toinf_0.frag > $TARGETDIR/overflow_underflow_toinf_0.out +diff -b $BASEDIR/overflow_underflow_toinf_0.out $TARGETDIR/overflow_underflow_toinf_0.out || HASERROR=1 # # Final checking diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 30450b36a3..5d3fc8afe7 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2590,6 +2590,18 @@ TIntermConstantUnion* TIntermediate::addConstantUnion(double d, TBasicType baseT { assert(baseType == EbtFloat || baseType == EbtDouble || baseType == EbtFloat16); + if (isEsProfile() && (baseType == EbtFloat || baseType == EbtFloat16)) { + int exponent = 0; + frexp(d, &exponent); + int minExp = baseType == EbtFloat ? -126 : -14; + int maxExp = baseType == EbtFloat ? 127 : 15; + if (exponent > maxExp) { //overflow, d = inf + d = std::numeric_limits::infinity(); + } else if (exponent < minExp) { //underflow, d = 0.0; + d = 0.0; + } + } + TConstUnionArray unionArray(1); unionArray[0].setDConst(d); From eac012fff3a792db1f3a251653d31e2dfbbeb71d Mon Sep 17 00:00:00 2001 From: Moritz Heinemann Date: Mon, 20 Nov 2023 22:01:58 +0100 Subject: [PATCH 330/594] Fix spirv-tools dependency --- SPIRV/CMakeLists.txt | 6 +----- StandAlone/CMakeLists.txt | 6 ------ gtests/CMakeLists.txt | 4 ++-- 3 files changed, 3 insertions(+), 13 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 2d6d855fa5..da59967ec8 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -106,11 +106,7 @@ if(WIN32 AND BUILD_SHARED_LIBS) endif() if(ENABLE_OPT) - target_include_directories(SPIRV - PRIVATE ${spirv-tools_SOURCE_DIR}/include - PRIVATE ${spirv-tools_SOURCE_DIR}/source - ) - target_link_libraries(SPIRV PRIVATE MachineIndependent SPIRV-Tools-opt) + target_link_libraries(SPIRV PRIVATE MachineIndependent PUBLIC SPIRV-Tools-opt) target_include_directories(SPIRV PUBLIC $ $) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 8f37e54cb1..88b8f02302 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -76,12 +76,6 @@ target_include_directories(glslang-standalone PUBLIC $ $) -if(ENABLE_OPT) - target_include_directories(glslang-standalone - PRIVATE ${spirv-tools_SOURCE_DIR}/include - ) -endif() - if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) add_executable(spirv-remap ${REMAPPER_SOURCES}) diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 408a92db53..b73e7f1599 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -97,8 +97,8 @@ if(BUILD_TESTING) ${gtest_SOURCE_DIR}/include) if(ENABLE_OPT) - target_include_directories(glslangtests - PRIVATE ${spirv-tools_SOURCE_DIR}/include + target_link_libraries(glslangtests + PRIVATE SPIRV-Tools-opt ) endif() From 6b72472f2881ff481581b6773cf2e9bc7c223a49 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Mon, 20 Nov 2023 15:09:13 -0700 Subject: [PATCH 331/594] Fix Android CI NDK 23.2.8568313 was removed from the latest runner Hardcoding the NDK versions like before is asking for a CI breakage. Use ANDROID_NDK_HOME environment variable which is set by the runner --- .github/workflows/continuous_integration.yml | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 4082c1d12e..03eade9286 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -181,9 +181,6 @@ jobs: # Android NDK currently offers 2 different toolchains. # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] - # Oldest/newest NDK currently provided by GitHub runners - # https://github.com/actions/runner-images/blob/main/images/linux/Ubuntu2204-Readme.md#android - NDK: [23.2.8568313, 25.2.9519653] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 @@ -193,13 +190,12 @@ jobs: - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: - key: android-${{ matrix.LEGACY }}-${{ matrix.NDK }} + key: android-${{ matrix.LEGACY }} - name: Update Glslang Sources run: ./update_glslang_sources.py - name: Configure run: | - cmake -S . -B build/ \ - --toolchain $ANDROID_HOME/ndk/${{ matrix.NDK }}/build/cmake/android.toolchain.cmake \ + cmake -S . -B build/ --toolchain $ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ -D CMAKE_BUILD_TYPE=Release \ -D ANDROID_ABI=armeabi-v7a \ -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \ From f6cc9394995179ae41c2e1578680d07564d7be56 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 17 Nov 2023 12:40:50 -0500 Subject: [PATCH 332/594] Remove custom implementations of isinf and isnan Use the ones from the header instead, now that that is available on all the currently supported versions of MSVC. --- glslang/Include/Common.h | 28 ------------------------ glslang/MachineIndependent/Constant.cpp | 4 ++-- glslang/MachineIndependent/intermOut.cpp | 4 ++-- 3 files changed, 4 insertions(+), 32 deletions(-) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index 080b8071e4..af7dfe625d 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -292,34 +292,6 @@ template int IntLog2(T n) return result; } -inline bool IsInfinity(double x) { -#ifdef _MSC_VER - switch (_fpclass(x)) { - case _FPCLASS_NINF: - case _FPCLASS_PINF: - return true; - default: - return false; - } -#else - return std::isinf(x); -#endif -} - -inline bool IsNan(double x) { -#ifdef _MSC_VER - switch (_fpclass(x)) { - case _FPCLASS_SNAN: - case _FPCLASS_QNAN: - return true; - default: - return false; - } -#else - return std::isnan(x); -#endif -} - } // end namespace glslang #endif // _COMMON_INCLUDED_ diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 8acf9e5526..4f706cad88 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -628,12 +628,12 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpIsNan: { - newConstArray[i].setBConst(IsNan(unionArray[i].getDConst())); + newConstArray[i].setBConst(std::isnan(unionArray[i].getDConst())); break; } case EOpIsInf: { - newConstArray[i].setBConst(IsInfinity(unionArray[i].getDConst())); + newConstArray[i].setBConst(std::isinf(unionArray[i].getDConst())); break; } diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 32c3c573f9..5b1414c948 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1208,12 +1208,12 @@ bool TOutputTraverser::visitSelection(TVisit /* visit */, TIntermSelection* node // - shows all digits, no premature rounding static void OutputDouble(TInfoSink& out, double value, TOutputTraverser::EExtraOutput extra) { - if (IsInfinity(value)) { + if (std::isinf(value)) { if (value < 0) out.debug << "-1.#INF"; else out.debug << "+1.#INF"; - } else if (IsNan(value)) + } else if (std::isnan(value)) out.debug << "1.#IND"; else { const int maxSize = 340; From 3392416ea4eee895cb5897c52af5a9cfb92fcee5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 06:06:00 +0000 Subject: [PATCH 333/594] Bump github/codeql-action from 2.22.5 to 2.22.7 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.5 to 2.22.7. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/74483a38d39275f33fcff5f35b679b5ca4a26a99...66b90a5db151a8042fa97405c6cf843bbe433f7b) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 63ee9aae5e..fca2f8b207 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@74483a38d39275f33fcff5f35b679b5ca4a26a99 # v2.22.5 + uses: github/codeql-action/upload-sarif@66b90a5db151a8042fa97405c6cf843bbe433f7b # v2.22.7 with: sarif_file: results.sarif From 4efde4c4c153c9fc6a06cefea72eb8962982577f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 Nov 2023 23:55:41 +0000 Subject: [PATCH 334/594] Bump actions/github-script from 6.4.1 to 7.0.1 Bumps [actions/github-script](https://github.com/actions/github-script) from 6.4.1 to 7.0.1. - [Release notes](https://github.com/actions/github-script/releases) - [Commits](https://github.com/actions/github-script/compare/d7906e4ad0b1822421a7e6a35d5ca353c962f410...60a0d83039c74a4aee543508d2ffcb1c3799cdea) --- updated-dependencies: - dependency-name: actions/github-script dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index bf4028b107..f7fd9ce41d 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -96,7 +96,7 @@ jobs: if: ${{ matrix.compiler.cc == 'clang' }} env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const script = require('.github/workflows/deploy.js') @@ -156,7 +156,7 @@ jobs: - name: Deploy env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const script = require('.github/workflows/deploy.js') @@ -234,7 +234,7 @@ jobs: - name: Deploy env: ARCHIVE: glslang-master-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip - uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1 + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 with: script: | const script = require('.github/workflows/deploy.js') From 5fcac839cad8ee085531013c32e657b66be471b8 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 21 Nov 2023 13:06:49 -0700 Subject: [PATCH 335/594] cmake: Cleanup usage of option By default option is OFF --- CMakeLists.txt | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a734ad1f87..c856455bdc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,7 +42,7 @@ include(CMakePackageConfigHelpers) # Needed for CMAKE_DEPENDENT_OPTION macro include(CMakeDependentOption) -option(BUILD_SHARED_LIBS "Build Shared Libraries" OFF) +option(BUILD_SHARED_LIBS "Build Shared Libraries") option(BUILD_EXTERNAL "Build external dependencies in /External" ON) set(LIB_TYPE STATIC) @@ -59,7 +59,7 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE "Debug") endif() -option(SKIP_GLSLANG_INSTALL "Skip installation" ${SKIP_GLSLANG_INSTALL}) +option(SKIP_GLSLANG_INSTALL "Skip installation") if(NOT ${SKIP_GLSLANG_INSTALL}) set(ENABLE_GLSLANG_INSTALL ON) endif() @@ -67,8 +67,7 @@ option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON) -option(ENABLE_GLSLANG_JS - "If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing." OFF) +option(ENABLE_GLSLANG_JS "If using Emscripten, build glslang.js. Otherwise, builds a sample executable for binary-size testing.") CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_SINGLE_FILE "If using Emscripten, enables SINGLE_FILE build" OFF "ENABLE_GLSLANG_JS AND EMSCRIPTEN" @@ -79,14 +78,14 @@ CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE OFF) option(ENABLE_HLSL "Enables HLSL input support" ON) -option(ENABLE_RTTI "Enables RTTI" OFF) -option(ENABLE_EXCEPTIONS "Enables Exceptions" OFF) +option(ENABLE_RTTI "Enables RTTI") +option(ENABLE_EXCEPTIONS "Enables Exceptions") option(ENABLE_OPT "Enables spirv-opt capability if present" ON) if(MINGW OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments # which gcc rejects - option(ENABLE_PCH "Enables Precompiled header" OFF) + option(ENABLE_PCH "Enables Precompiled header") else() option(ENABLE_PCH "Enables Precompiled header" ON) endif() @@ -263,7 +262,7 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) add_subdirectory(External) endif() -option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt" OFF) +option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt") if(NOT TARGET SPIRV-Tools-opt) if(ALLOW_EXTERNAL_SPIRV_TOOLS) # Look for external SPIR-V Tools build, if not building in-tree From a7b18c08d0a9d1b98444adb2dcaa857ee5413dc9 Mon Sep 17 00:00:00 2001 From: Juan Ramos <114601453+juan-lunarg@users.noreply.github.com> Date: Tue, 21 Nov 2023 16:59:26 -0700 Subject: [PATCH 336/594] Add iOS build to CI Fix iOS build as well as minor Android cleanup since the problems for both platforms are so similar --- .github/workflows/continuous_integration.yml | 39 +++++++++++++++----- CMakeLists.txt | 17 +++++++++ 2 files changed, 46 insertions(+), 10 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 03eade9286..28d9c49794 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -174,6 +174,30 @@ jobs: - name: Test (standalone) run: bash -c 'cd ./Test && ./runtests' + iOS: + runs-on: macos-13 + steps: + - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - name: Setup ccache + uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + with: + key: IOS + - run: ./update_glslang_sources.py + # NOTE: The MacOS SDK ships universal binaries. CI should reflect this. + - name: Configure Universal Binary for iOS + run: | + cmake -S . -B build \ + -D CMAKE_BUILD_TYPE=Debug \ + -D CMAKE_SYSTEM_NAME=iOS \ + "-D CMAKE_OSX_ARCHITECTURES=arm64;x86_64" \ + -G Ninja + env: + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - run: cmake --build build + - run: cmake --install build --prefix /tmp + android: runs-on: ubuntu-22.04 strategy: @@ -183,29 +207,24 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: android-${{ matrix.LEGACY }} - - name: Update Glslang Sources - run: ./update_glslang_sources.py - - name: Configure + - run: ./update_glslang_sources.py + - name: Configure for Android run: | cmake -S . -B build/ --toolchain $ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \ -D CMAKE_BUILD_TYPE=Release \ -D ANDROID_ABI=armeabi-v7a \ -D ANDROID_USE_LEGACY_TOOLCHAIN_FILE=${{ matrix.LEGACY }} \ - -D BUILD_TESTING=OFF + -G Ninja env: - CMAKE_GENERATOR: Ninja CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache - - name: Build - run: cmake --build build/ + - run: cmake --build build/ + - run: cmake --install build/ --prefix /tmp emscripten: runs-on: ubuntu-22.04 diff --git a/CMakeLists.txt b/CMakeLists.txt index c856455bdc..c8d215ca7b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -59,7 +59,24 @@ if ("${CMAKE_BUILD_TYPE}" STREQUAL "") set(CMAKE_BUILD_TYPE "Debug") endif() +# Currently iOS and Android are very similar. +# They both have their own packaging (APP/APK). +# Which makes regular executables/testing problematic. +# +# Currently the only deliverables for these platforms are +# libraries (either STATIC or SHARED). +# +# Furthermore testing is equally problematic. +if (IOS OR ANDROID) + set(ENABLE_GLSLANG_BINARIES OFF) + set(SPIRV_SKIP_EXECUTABLES ON) + + set(ENABLE_CTEST OFF) + set(BUILD_TESTING OFF) +endif() + option(SKIP_GLSLANG_INSTALL "Skip installation") + if(NOT ${SKIP_GLSLANG_INSTALL}) set(ENABLE_GLSLANG_INSTALL ON) endif() From b3c8e99b680c4e9f21f54c5e5bc126b04409a4a4 Mon Sep 17 00:00:00 2001 From: Juan Ramos <114601453+juan-lunarg@users.noreply.github.com> Date: Tue, 21 Nov 2023 17:04:52 -0700 Subject: [PATCH 337/594] Cleanup MacOS CI * ci: Test macos-12 and macos-13 instead of macos-11 and macos-12 Developer survey shows little to no users still use MacOS 11 or earlier. * Remove pointless comment about travis * Fix minor indent issue --- .github/workflows/continuous_integration.yml | 30 ++++++-------------- 1 file changed, 9 insertions(+), 21 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 28d9c49794..c90b20bb14 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -1,9 +1,3 @@ -# NOTE: This workflow was ported from Travis. -# Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended. -# Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0. -# Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache. -# Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0 -# name: Continuous Integration on: @@ -89,7 +83,7 @@ jobs: - name: Test (standalone) run: cd Test && ./runtests - # Ensure we can compile/run on an older distro + # Ensure we can compile/run on an older distro linux_min: name: Linux Backcompat runs-on: ubuntu-20.04 @@ -125,29 +119,23 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-11, macos-12] + os: [macos-12, macos-13] compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 - with: - python-version: '3.7' - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - run: ./update_glslang_sources.py - - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G "Ninja" + - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} - - name: Build - run: cmake --build build - - name: Install - run: cmake --install build --prefix build/install - - name: Test - run: ctest --output-on-failure --test-dir build - - name: Test (standalone) - run: cd Test && ./runtests + - run: cmake --build build + - run: cmake --install build --prefix build/install + - run: ctest --output-on-failure --test-dir build + - name: Test Script (standalone) + run: ./runtests + working-directory: Test windows: runs-on: ${{matrix.os.genus}} From cd5ea90aeefc75ac1e3a8ac8ba34f057065af2f1 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 21 Nov 2023 14:18:58 -0700 Subject: [PATCH 338/594] Fix Xcode 15 linker warning XCode 15 includes a completely new linker implementation. Hence some flags are deprecated. The default is now error so we can simply remove the linker option. --- CMakeLists.txt | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c8d215ca7b..044168df81 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -142,9 +142,11 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") add_compile_options(-Werror=deprecated-copy) endif() - if(NOT CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" AND NOT CMAKE_SYSTEM_NAME STREQUAL "Darwin") - # Error if there's symbols that are not found at link time. - add_link_options("-Wl,--no-undefined") + if(NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD")) + if (NOT APPLE) + # Error if there's symbols that are not found at link time. + add_link_options("-Wl,--no-undefined") + endif() endif() elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs @@ -156,11 +158,9 @@ elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) add_compile_options(-fno-exceptions) endif() - if(NOT (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD" OR CMAKE_SYSTEM_NAME STREQUAL "Emscripten")) + if(NOT (CMAKE_SYSTEM_NAME MATCHES "OpenBSD|Emscripten")) # Error if there's symbols that are not found at link time. Some linkers do not support this flag. - if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") - add_link_options("-Wl,-undefined,error") - elseif(NOT APPLE) + if(NOT APPLE) add_link_options("-Wl,--no-undefined") endif() endif() From fd403737d25ca5f167845b5a6d0e9adb0a2bb5ff Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 21 Nov 2023 14:23:59 -0700 Subject: [PATCH 339/594] Replace Darwin check with Apple check Darwin excludes iOS --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 044168df81..eb8e721a56 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,7 +99,7 @@ option(ENABLE_RTTI "Enables RTTI") option(ENABLE_EXCEPTIONS "Enables Exceptions") option(ENABLE_OPT "Enables spirv-opt capability if present" ON) -if(MINGW OR (CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) +if(MINGW OR (APPLE AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments # which gcc rejects option(ENABLE_PCH "Enables Precompiled header") From b008c0ee45dfece07c03fc79455c7b43b2d2194f Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Wed, 22 Nov 2023 12:56:53 -0700 Subject: [PATCH 340/594] Fix unused parameter warning paramNames was going unused in makeFunctionEntry --- SPIRV/GlslangToSpv.cpp | 2 +- SPIRV/SpvBuilder.cpp | 12 ++++-------- SPIRV/SpvBuilder.h | 7 +++---- 3 files changed, 8 insertions(+), 13 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index acda1923e8..671f3db36d 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -5495,7 +5495,7 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF spv::Function* function = builder.makeFunctionEntry( TranslatePrecisionDecoration(glslFunction->getType()), convertGlslangToSpvType(glslFunction->getType()), glslFunction->getName().c_str(), convertGlslangLinkageToSpv(glslFunction->getLinkType()), paramTypes, - paramNames, paramDecorations, &functionBlock); + paramDecorations, &functionBlock); builder.setupDebugFunctionEntry(function, glslFunction->getName().c_str(), glslFunction->getLoc().line, paramTypes, paramNames); if (implicitThis) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index b631c4e9b4..f898b75418 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2074,11 +2074,6 @@ Function* Builder::makeEntryPoint(const char* entryPoint) { assert(! entryPointFunction); - Block* entry; - std::vector paramsTypes; - std::vector paramNames; - std::vector> decorations; - auto const returnType = makeVoidType(); restoreNonSemanticShaderDebugInfo = emitNonSemanticShaderDebugInfo; @@ -2086,7 +2081,8 @@ Function* Builder::makeEntryPoint(const char* entryPoint) emitNonSemanticShaderDebugInfo = false; } - entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, LinkageTypeMax, paramsTypes, paramNames, decorations, &entry); + Block* entry = nullptr; + entryPointFunction = makeFunctionEntry(NoPrecision, returnType, entryPoint, LinkageTypeMax, {}, {}, &entry); emitNonSemanticShaderDebugInfo = restoreNonSemanticShaderDebugInfo; @@ -2095,8 +2091,8 @@ Function* Builder::makeEntryPoint(const char* entryPoint) // Comments in header Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const char* name, LinkageType linkType, - const std::vector& paramTypes, const std::vector& paramNames, - const std::vector>& decorations, Block **entry) + const std::vector& paramTypes, + const std::vector>& decorations, Block** entry) { // Make the function and initial instructions in it Id typeId = makeFunctionType(returnType, paramTypes); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 6ba7032997..eae8d4f56b 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -420,10 +420,9 @@ class Builder { // Make a shader-style function, and create its entry block if entry is non-zero. // Return the function, pass back the entry. // The returned pointer is only valid for the lifetime of this builder. - Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, - LinkageType linkType, const std::vector& paramTypes, - const std::vector& paramNames, - const std::vector>& precisions, Block **entry = nullptr); + Function* makeFunctionEntry(Decoration precision, Id returnType, const char* name, LinkageType linkType, + const std::vector& paramTypes, + const std::vector>& precisions, Block** entry = nullptr); // Create a return. An 'implicit' return is one not appearing in the source // code. In the case of an implicit return, no post-return block is inserted. From 1a370bede991fe1974540526bb859174db225d35 Mon Sep 17 00:00:00 2001 From: Juan Ramos <114601453+juan-lunarg@users.noreply.github.com> Date: Wed, 22 Nov 2023 14:44:30 -0700 Subject: [PATCH 341/594] cmake: Remove OVERRIDE_MSVCCRT CMake 3.15 removes the need for all of this custom code. --- CMakeLists.txt | 4 -- ChooseMSVCCRT.cmake | 138 -------------------------------------------- README.md | 15 ++--- 3 files changed, 5 insertions(+), 152 deletions(-) delete mode 100644 ChooseMSVCCRT.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index eb8e721a56..b5757b839e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -118,10 +118,6 @@ endif() if(WIN32) set(CMAKE_DEBUG_POSTFIX "d") - option(OVERRIDE_MSVCCRT "Overrides runtime of MSVC " ON) - if(MSVC AND OVERRIDE_MSVCCRT) - include(ChooseMSVCCRT.cmake) - endif() add_definitions(-DGLSLANG_OSINCLUDE_WIN32) elseif(UNIX OR ANDROID) add_definitions(-DGLSLANG_OSINCLUDE_UNIX) diff --git a/ChooseMSVCCRT.cmake b/ChooseMSVCCRT.cmake deleted file mode 100644 index b1561263c7..0000000000 --- a/ChooseMSVCCRT.cmake +++ /dev/null @@ -1,138 +0,0 @@ -# Copyright (C) 2020 The Khronos Group Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of The Khronos Group Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# The macro choose_msvc_crt() takes a list of possible -# C runtimes to choose from, in the form of compiler flags, -# to present to the user. (MTd for /MTd, etc) -# -# The macro is invoked at the end of the file. -# -# CMake already sets CRT flags in the CMAKE_CXX_FLAGS_* and -# CMAKE_C_FLAGS_* variables by default. To let the user -# override that for each build type: -# 1. Detect which CRT is already selected, and reflect this in -# LLVM_USE_CRT_* so the user can have a better idea of what -# changes they're making. -# 2. Replace the flags in both variables with the new flag via a regex. -# 3. set() the variables back into the cache so the changes -# are user-visible. - -### Helper macros: ### -macro(make_crt_regex regex crts) - set(${regex} "") - foreach(crt ${${crts}}) - # Trying to match the beginning or end of the string with stuff - # like [ ^]+ didn't work, so use a bunch of parentheses instead. - set(${regex} "${${regex}}|(^| +)/${crt}($| +)") - endforeach(crt) - string(REGEX REPLACE "^\\|" "" ${regex} "${${regex}}") -endmacro(make_crt_regex) - -macro(get_current_crt crt_current regex flagsvar) - # Find the selected-by-CMake CRT for each build type, if any. - # Strip off the leading slash and any whitespace. - string(REGEX MATCH "${${regex}}" ${crt_current} "${${flagsvar}}") - string(REPLACE "/" " " ${crt_current} "${${crt_current}}") - string(STRIP "${${crt_current}}" ${crt_current}) -endmacro(get_current_crt) - -# Replaces or adds a flag to a variable. -# Expects 'flag' to be padded with spaces. -macro(set_flag_in_var flagsvar regex flag) - string(REGEX MATCH "${${regex}}" current_flag "${${flagsvar}}") - if("${current_flag}" STREQUAL "") - set(${flagsvar} "${${flagsvar}}${${flag}}") - else() - string(REGEX REPLACE "${${regex}}" "${${flag}}" ${flagsvar} "${${flagsvar}}") - endif() - string(STRIP "${${flagsvar}}" ${flagsvar}) - # Make sure this change gets reflected in the cache/gui. - # CMake requires the docstring parameter whenever set() touches the cache, - # so get the existing docstring and re-use that. - get_property(flagsvar_docs CACHE ${flagsvar} PROPERTY HELPSTRING) - set(${flagsvar} "${${flagsvar}}" CACHE STRING "${flagsvar_docs}" FORCE) -endmacro(set_flag_in_var) - - -macro(choose_msvc_crt MSVC_CRT) - if(LLVM_USE_CRT) - message(FATAL_ERROR - "LLVM_USE_CRT is deprecated. Use the CMAKE_BUILD_TYPE-specific -variables (LLVM_USE_CRT_DEBUG, etc) instead.") - endif() - - make_crt_regex(MSVC_CRT_REGEX ${MSVC_CRT}) - - foreach(build_type ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE}) - string(TOUPPER "${build_type}" build) - if (NOT LLVM_USE_CRT_${build}) - get_current_crt(LLVM_USE_CRT_${build} - MSVC_CRT_REGEX - CMAKE_CXX_FLAGS_${build}) - set(LLVM_USE_CRT_${build} - "${LLVM_USE_CRT_${build}}" - CACHE STRING "Specify VC++ CRT to use for ${build_type} configurations." - FORCE) - set_property(CACHE LLVM_USE_CRT_${build} - PROPERTY STRINGS ;${${MSVC_CRT}}) - endif(NOT LLVM_USE_CRT_${build}) - endforeach(build_type) - - foreach(build_type ${CMAKE_CONFIGURATION_TYPES} ${CMAKE_BUILD_TYPE}) - string(TOUPPER "${build_type}" build) - if ("${LLVM_USE_CRT_${build}}" STREQUAL "") - set(flag_string " ") - else() - set(flag_string " /${LLVM_USE_CRT_${build}} ") - list(FIND ${MSVC_CRT} ${LLVM_USE_CRT_${build}} idx) - if (idx LESS 0) - message(FATAL_ERROR - "Invalid value for LLVM_USE_CRT_${build}: ${LLVM_USE_CRT_${build}}. Valid options are one of: ${${MSVC_CRT}}") - endif (idx LESS 0) - message(STATUS "Using ${build_type} VC++ CRT: ${LLVM_USE_CRT_${build}}") - endif() - foreach(lang C CXX) - set_flag_in_var(CMAKE_${lang}_FLAGS_${build} MSVC_CRT_REGEX flag_string) - endforeach(lang) - endforeach(build_type) -endmacro(choose_msvc_crt MSVC_CRT) - - -# List of valid CRTs for MSVC -set(MSVC_CRT - MD - MDd - MT - MTd) - -choose_msvc_crt(MSVC_CRT) diff --git a/README.md b/README.md index cd43e30b4c..88b07b5890 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,15 @@ # News -1. [As discussed in #3107](https://github.com/KhronosGroup/glslang/issues/3107), the default branch of this repository is now 'main'. This change should be transparent to repository users, since github rewrites many references to the old 'master' branch to 'main'. However, if you have a checked-out local clone, you may wish to take the following steps as recommended by github: - -```sh -git branch -m master main -git fetch origin -git branch -u origin/main main -git remote set-head origin -a -``` - -2. C++17 (all platforms) and Visual Studio 2019 (Windows) are now required. This change was driven by the external dependency on SPIRV-Tools. +1. C++17 (all platforms) and Visual Studio 2019 (Windows) are now required. This change was driven by the external dependency on SPIRV-Tools. ![Continuous Integration](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_integration.yml/badge.svg) ![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/KhronosGroup/glslang/badge)](https://securityscorecards.dev/viewer/?uri=github.com/KhronosGroup/glslang) +2. `OVERRIDE_MSVCCRT` has been removed in favor of `CMAKE_MSVC_RUNTIME_LIBRARY` + +Users are encouraged to utilize the standard approach via [CMAKE_MSVC_RUNTIME_LIBRARY](https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html). + # Glslang Components and Status There are several components: From 4c121b68c861ddbfa4eb5bbe8858cf5fae9fa343 Mon Sep 17 00:00:00 2001 From: Juan Ramos <114601453+juan-lunarg@users.noreply.github.com> Date: Wed, 22 Nov 2023 14:48:14 -0700 Subject: [PATCH 342/594] cmake: Remove find_host_package macro Originally added in https://github.com/KhronosGroup/glslang/pull/2395 With the rational of causing issues when cross-compiling for iOS. This is no longer the case. --- CMakeLists.txt | 8 -------- StandAlone/CMakeLists.txt | 2 +- 2 files changed, 1 insertion(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b5757b839e..9b37bc79b5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -204,12 +204,6 @@ function(glslang_set_link_args TARGET) endif() endfunction(glslang_set_link_args) -if(NOT COMMAND find_host_package) - macro(find_host_package) - find_package(${ARGN}) - endmacro() -endif() - # Root directory for build-time generated include files set(GLSLANG_GENERATED_INCLUDEDIR "${CMAKE_BINARY_DIR}/include") @@ -269,8 +263,6 @@ else() endif() if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) - find_host_package(Python3 REQUIRED) - # We depend on these for later projects, so they should come first. add_subdirectory(External) endif() diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 88b8f02302..124742a9ea 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -31,7 +31,7 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -find_host_package(Python3 REQUIRED) +find_package(Python3 REQUIRED) set(GLSLANG_INTRINSIC_H "${GLSLANG_GENERATED_INCLUDEDIR}/glslang/glsl_intrinsic_header.h") set(GLSLANG_INTRINSIC_PY "${CMAKE_CURRENT_SOURCE_DIR}/../gen_extension_headers.py") From 7c5fb5c1a8e5d413330f4e5b9817c1ec6a0ad7c9 Mon Sep 17 00:00:00 2001 From: Juan Ramos <114601453+juan-lunarg@users.noreply.github.com> Date: Wed, 22 Nov 2023 14:50:04 -0700 Subject: [PATCH 343/594] cmake: Cleanup ENABLE_PCH Min is 3.17 checks for 3.16 are no longer needed. --- CMakeLists.txt | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9b37bc79b5..45b875a387 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,10 +102,11 @@ option(ENABLE_OPT "Enables spirv-opt capability if present" ON) if(MINGW OR (APPLE AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments # which gcc rejects - option(ENABLE_PCH "Enables Precompiled header") -else() - option(ENABLE_PCH "Enables Precompiled header" ON) + set(ENABLE_PCH OFF) + message(NOTICE "Disabling PCH") endif() + +option(ENABLE_PCH "Enables Precompiled header" ON) option(ENABLE_CTEST "Enables testing" ON) if(ENABLE_CTEST) @@ -250,17 +251,11 @@ endfunction() # glslang_pch() adds precompiled header rules to for the pre-compiled # header file . As target_precompile_headers() was added in CMake 3.16, # this is a no-op if called on earlier versions of CMake. -if(NOT CMAKE_VERSION VERSION_LESS "3.16" AND ENABLE_PCH) - function(glslang_pch target pch) - target_precompile_headers(${target} PRIVATE ${pch}) - endfunction() -else() - function(glslang_pch target pch) - endfunction() +function(glslang_pch target pch) if(ENABLE_PCH) - message("Your CMake version is ${CMAKE_VERSION}. Update to at least 3.16 to enable precompiled headers to speed up incremental builds") + target_precompile_headers(${target} PRIVATE ${pch}) endif() -endif() +endfunction() if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) # We depend on these for later projects, so they should come first. From 153064f2c74978eebacad05a70887ba1d4061b53 Mon Sep 17 00:00:00 2001 From: FrostyLeaves <654065929@qq.com> Date: Wed, 22 Nov 2023 22:21:13 +0800 Subject: [PATCH 344/594] fix: Support SV_ViewID keywords for hlsl. --- Test/baseResults/hlsl.multiView.frag.out | 121 +++++++++++++++++++++++ Test/hlsl.multiView.frag | 5 + glslang/HLSL/hlslParseHelper.cpp | 2 + glslang/HLSL/hlslScanContext.cpp | 1 + gtests/Hlsl.FromFile.cpp | 1 + 5 files changed, 130 insertions(+) create mode 100644 Test/baseResults/hlsl.multiView.frag.out create mode 100644 Test/hlsl.multiView.frag diff --git a/Test/baseResults/hlsl.multiView.frag.out b/Test/baseResults/hlsl.multiView.frag.out new file mode 100644 index 0000000000..32e669cab2 --- /dev/null +++ b/Test/baseResults/hlsl.multiView.frag.out @@ -0,0 +1,121 @@ +hlsl.multiView.frag +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: @main(u1; ( temp 4-component vector of float) +0:3 Function Parameters: +0:3 'ViewIndex' ( in uint) +0:? Sequence +0:4 Branch: Return with expression +0:4 Construct vec4 ( temp 4-component vector of float) +0:4 Convert uint to float ( temp float) +0:4 'ViewIndex' ( in uint) +0:4 Constant: +0:4 0.000000 +0:4 Constant: +0:4 0.000000 +0:4 Constant: +0:4 0.000000 +0:3 Function Definition: main( ( temp void) +0:3 Function Parameters: +0:? Sequence +0:3 move second child to first child ( temp uint) +0:? 'ViewIndex' ( temp uint) +0:? 'ViewIndex' ( flat in uint ViewIndex) +0:3 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:3 Function Call: @main(u1; ( temp 4-component vector of float) +0:? 'ViewIndex' ( temp uint) +0:? Linker Objects +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'ViewIndex' ( flat in uint ViewIndex) + + +Linked fragment stage: + + +Shader version: 500 +gl_FragCoord origin is upper left +0:? Sequence +0:3 Function Definition: @main(u1; ( temp 4-component vector of float) +0:3 Function Parameters: +0:3 'ViewIndex' ( in uint) +0:? Sequence +0:4 Branch: Return with expression +0:4 Construct vec4 ( temp 4-component vector of float) +0:4 Convert uint to float ( temp float) +0:4 'ViewIndex' ( in uint) +0:4 Constant: +0:4 0.000000 +0:4 Constant: +0:4 0.000000 +0:4 Constant: +0:4 0.000000 +0:3 Function Definition: main( ( temp void) +0:3 Function Parameters: +0:? Sequence +0:3 move second child to first child ( temp uint) +0:? 'ViewIndex' ( temp uint) +0:? 'ViewIndex' ( flat in uint ViewIndex) +0:3 move second child to first child ( temp 4-component vector of float) +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:3 Function Call: @main(u1; ( temp 4-component vector of float) +0:? 'ViewIndex' ( temp uint) +0:? Linker Objects +0:? '@entryPointOutput' (layout( location=0) out 4-component vector of float) +0:? 'ViewIndex' ( flat in uint ViewIndex) + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 29 + + Capability Shader + Capability MultiView + Extension "SPV_KHR_multiview" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 22 25 + ExecutionMode 4 OriginUpperLeft + Source HLSL 500 + Name 4 "main" + Name 12 "@main(u1;" + Name 11 "ViewIndex" + Name 20 "ViewIndex" + Name 22 "ViewIndex" + Name 25 "@entryPointOutput" + Name 26 "param" + Decorate 22(ViewIndex) Flat + Decorate 22(ViewIndex) BuiltIn ViewIndex + Decorate 25(@entryPointOutput) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 8: TypeFloat 32 + 9: TypeVector 8(float) 4 + 10: TypeFunction 9(fvec4) 7(ptr) + 16: 8(float) Constant 0 + 21: TypePointer Input 6(int) + 22(ViewIndex): 21(ptr) Variable Input + 24: TypePointer Output 9(fvec4) +25(@entryPointOutput): 24(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 20(ViewIndex): 7(ptr) Variable Function + 26(param): 7(ptr) Variable Function + 23: 6(int) Load 22(ViewIndex) + Store 20(ViewIndex) 23 + 27: 6(int) Load 20(ViewIndex) + Store 26(param) 27 + 28: 9(fvec4) FunctionCall 12(@main(u1;) 26(param) + Store 25(@entryPointOutput) 28 + Return + FunctionEnd + 12(@main(u1;): 9(fvec4) Function None 10 + 11(ViewIndex): 7(ptr) FunctionParameter + 13: Label + 14: 6(int) Load 11(ViewIndex) + 15: 8(float) ConvertUToF 14 + 17: 9(fvec4) CompositeConstruct 15 16 16 16 + ReturnValue 17 + FunctionEnd diff --git a/Test/hlsl.multiView.frag b/Test/hlsl.multiView.frag new file mode 100644 index 0000000000..79e388d6f7 --- /dev/null +++ b/Test/hlsl.multiView.frag @@ -0,0 +1,5 @@ + +float4 main(uint ViewIndex : SV_ViewID) +{ + return float4(ViewIndex, 0.0f, 0.0f, 0.0f); +} diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index ac0dee50ca..b0fb5f4660 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -9551,6 +9551,8 @@ bool HlslParseContext::isInputBuiltIn(const TQualifier& qualifier) const return language == EShLangTessEvaluation; case EbvTessCoord: return language == EShLangTessEvaluation; + case EbvViewIndex: + return language != EShLangCompute; default: return false; } diff --git a/glslang/HLSL/hlslScanContext.cpp b/glslang/HLSL/hlslScanContext.cpp index 823b17aa3f..e9edb61976 100644 --- a/glslang/HLSL/hlslScanContext.cpp +++ b/glslang/HLSL/hlslScanContext.cpp @@ -512,6 +512,7 @@ void HlslScanContext::fillInKeywordMap() (*SemanticMap)["SV_PRIMITIVEID"] = EbvPrimitiveId; (*SemanticMap)["SV_OUTPUTCONTROLPOINTID"] = EbvInvocationId; (*SemanticMap)["SV_ISFRONTFACE"] = EbvFace; + (*SemanticMap)["SV_VIEWID"] = EbvViewIndex; (*SemanticMap)["SV_INSTANCEID"] = EbvInstanceIndex; (*SemanticMap)["SV_INSIDETESSFACTOR"] = EbvTessLevelInner; (*SemanticMap)["SV_GSINSTANCEID"] = EbvInvocationId; diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 9f32495580..5d0d2d6be5 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -318,6 +318,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.mul-truncate.frag", "main"}, {"hlsl.multiEntry.vert", "RealEntrypoint"}, {"hlsl.multiReturn.frag", "main"}, + {"hlsl.multiView.frag", "main"}, {"hlsl.matrixindex.frag", "main"}, {"hlsl.nonstaticMemberFunction.frag", "main"}, {"hlsl.numericsuffixes.frag", "main"}, From bc566d393a0d67c542ab59b5844b5d24439c6879 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Nov 2023 06:23:18 +0000 Subject: [PATCH 345/594] Bump mymindstorm/setup-emsdk from 12 to 13 Bumps [mymindstorm/setup-emsdk](https://github.com/mymindstorm/setup-emsdk) from 12 to 13. - [Release notes](https://github.com/mymindstorm/setup-emsdk/releases) - [Commits](https://github.com/mymindstorm/setup-emsdk/compare/ab889da2abbcbb280f91ec4c215d3bb4f3a8f775...d233ac12b0102f74ca199f5dad7a4e2c13a8a745) --- updated-dependencies: - dependency-name: mymindstorm/setup-emsdk dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index c90b20bb14..58dc2540f9 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -226,7 +226,7 @@ jobs: uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: key: ubuntu-emscripten - - uses: mymindstorm/setup-emsdk@ab889da2abbcbb280f91ec4c215d3bb4f3a8f775 # v12 + - uses: mymindstorm/setup-emsdk@d233ac12b0102f74ca199f5dad7a4e2c13a8a745 # v13 - name: Update Glslang Sources run: ./update_glslang_sources.py - name: Configure From 920a1424c998c4c09f35cdf80ebb482d626e655f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 Nov 2023 06:23:15 +0000 Subject: [PATCH 346/594] Bump github/codeql-action from 2.22.7 to 2.22.8 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.7 to 2.22.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/66b90a5db151a8042fa97405c6cf843bbe433f7b...407ffafae6a767df3e0230c3df91b6443ae8df75) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index fca2f8b207..455e6f14c8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@66b90a5db151a8042fa97405c6cf843bbe433f7b # v2.22.7 + uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8 with: sarif_file: results.sarif From b820431a2cddd41155d5750e1ae6ec3def2831c0 Mon Sep 17 00:00:00 2001 From: Moritz Heinemann Date: Thu, 23 Nov 2023 16:53:30 +0100 Subject: [PATCH 347/594] No external install include dir --- SPIRV/CMakeLists.txt | 3 +-- StandAlone/CMakeLists.txt | 3 +-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index da59967ec8..9918b1de27 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -108,8 +108,7 @@ endif() if(ENABLE_OPT) target_link_libraries(SPIRV PRIVATE MachineIndependent PUBLIC SPIRV-Tools-opt) target_include_directories(SPIRV PUBLIC - $ - $) + $) else() target_link_libraries(SPIRV PRIVATE MachineIndependent) endif() diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 124742a9ea..45ad26ef42 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -73,8 +73,7 @@ endif() target_link_libraries(glslang-standalone ${LIBRARIES}) target_include_directories(glslang-standalone PUBLIC - $ - $) + $) if(ENABLE_SPVREMAPPER) set(REMAPPER_SOURCES spirv-remap.cpp) From 19d541a91d0a0e8f3c2309d24d25c14ff0319061 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 7 Nov 2023 13:15:48 -0700 Subject: [PATCH 348/594] Fix some compiler warnings This change primarily fixes some -Wconversion warnings from gcc, but also silences a warning triggered in glslang_tab.cpp, which is generated code from bison. There are still several GCC conversion warnings in Types.h due to the use of bit fields that will be resolved in a future change. --- SPIRV/doc.h | 4 ++-- Test/baseResults/constFoldIntMin.frag.out | 2 +- glslang/CMakeLists.txt | 5 +++++ glslang/Include/ConstantUnion.h | 2 +- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/SPIRV/doc.h b/SPIRV/doc.h index b60ad34018..521529913f 100644 --- a/SPIRV/doc.h +++ b/SPIRV/doc.h @@ -240,8 +240,8 @@ class InstructionParameters { OperandParameters operands; protected: - int typePresent : 1; - int resultPresent : 1; + bool typePresent : 1; + bool resultPresent : 1; }; // The set of objects that hold all the instruction/operand diff --git a/Test/baseResults/constFoldIntMin.frag.out b/Test/baseResults/constFoldIntMin.frag.out index 2c45ca8018..e7dd353266 100644 --- a/Test/baseResults/constFoldIntMin.frag.out +++ b/Test/baseResults/constFoldIntMin.frag.out @@ -25,7 +25,7 @@ Requested GL_ARB_gpu_shader_int64 0:9 move second child to first child ( temp int16_t) 0:9 'x' ( temp int16_t) 0:9 Constant: -0:9 0 (const int8_t) +0:9 0 (const int16_t) 0:10 Sequence 0:10 move second child to first child ( temp int) 0:10 'y' ( temp int) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 7897b99434..6a44f3aecd 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -134,6 +134,11 @@ add_library(MachineIndependent STATIC ${MACHINEINDEPENDENT_SOURCES} ${MACHINEIND set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET MachineIndependent PROPERTY FOLDER glslang) +if (NOT MSVC) + # -Wunused-but-set-variable is triggered in code generated by bison that we do not control. Turn this warning off, but only for the generated. + set_source_files_properties(MachineIndependent/glslang_tab.cpp PROPERTIES COMPILE_FLAGS -Wno-unused-but-set-variable) +endif() + glslang_add_build_info_dependency(MachineIndependent) glslang_pch(MachineIndependent MachineIndependent/pch.h) diff --git a/glslang/Include/ConstantUnion.h b/glslang/Include/ConstantUnion.h index 1f39fc5930..da4737b65a 100644 --- a/glslang/Include/ConstantUnion.h +++ b/glslang/Include/ConstantUnion.h @@ -503,7 +503,7 @@ class TConstUnion { case EbtInt: returnValue.setIConst(iConst % constant.iConst); break; case EbtUint: returnValue.setUConst(uConst % constant.uConst); break; case EbtInt8: returnValue.setI8Const(i8Const % constant.i8Const); break; - case EbtInt16: returnValue.setI8Const(i8Const % constant.i16Const); break; + case EbtInt16: returnValue.setI16Const(i16Const % constant.i16Const); break; case EbtInt64: returnValue.setI64Const(i64Const % constant.i64Const); break; case EbtUint8: returnValue.setU8Const(u8Const % constant.u8Const); break; case EbtUint16: returnValue.setU16Const(u16Const % constant.u16Const); break; From 40394bf5c66bda9e2f68665552afc71531dcbdad Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 10 Nov 2023 16:44:30 -0700 Subject: [PATCH 349/594] Fix conversion warnings related to bitfields This fixes several GCC warnings about converting from signed integers to signed bitfields. --- glslang/Include/Types.h | 82 +++++++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 31 deletions(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 0a1aff8d2a..1fb59e5bf5 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1451,9 +1451,9 @@ class TPublicType { TSampler sampler; TQualifier qualifier; TShaderQualifiers shaderQualifiers; - int vectorSize : 4; - int matrixCols : 4; - int matrixRows : 4; + uint32_t vectorSize : 4; + uint32_t matrixCols : 4; + uint32_t matrixRows : 4; bool coopmatNV : 1; bool coopmatKHR : 1; TArraySizes* arraySizes; @@ -1470,7 +1470,7 @@ class TPublicType { void initType(const TSourceLoc& l) { basicType = EbtVoid; - vectorSize = 1; + vectorSize = 1u; matrixRows = 0; matrixCols = 0; arraySizes = nullptr; @@ -1501,19 +1501,22 @@ class TPublicType { { matrixRows = 0; matrixCols = 0; - vectorSize = s; + assert(s >= 0); + vectorSize = static_cast(s) & 0b1111; } void setMatrix(int c, int r) { - matrixRows = r; - matrixCols = c; + assert(r >= 0); + matrixRows = static_cast(r) & 0b1111; + assert(c >= 0); + matrixCols = static_cast(c) & 0b1111; vectorSize = 0; } bool isScalar() const { - return matrixCols == 0 && vectorSize == 1 && arraySizes == nullptr && userDef == nullptr; + return matrixCols == 0u && vectorSize == 1u && arraySizes == nullptr && userDef == nullptr; } // GL_EXT_spirv_intrinsics @@ -1535,10 +1538,14 @@ class TType { // for "empty" type (no args) or simple scalar/vector/matrix explicit TType(TBasicType t = EbtVoid, TStorageQualifier q = EvqTemporary, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : - basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), + basicType(t), vectorSize(static_cast(vs) & 0b1111), matrixCols(static_cast(mc) & 0b1111), matrixRows(static_cast(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { + assert(vs >= 0); + assert(mc >= 0); + assert(mr >= 0); + sampler.clear(); qualifier.clear(); qualifier.storage = q; @@ -1547,10 +1554,14 @@ class TType { // for explicit precision qualifier TType(TBasicType t, TStorageQualifier q, TPrecisionQualifier p, int vs = 1, int mc = 0, int mr = 0, bool isVector = false) : - basicType(t), vectorSize(vs), matrixCols(mc), matrixRows(mr), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), + basicType(t), vectorSize(static_cast(vs) & 0b1111), matrixCols(static_cast(mc) & 0b1111), matrixRows(static_cast(mr) & 0b1111), vector1(isVector && vs == 1), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { + assert(vs >= 0); + assert(mc >= 0); + assert(mr >= 0); + sampler.clear(); qualifier.clear(); qualifier.storage = q; @@ -1561,7 +1572,7 @@ class TType { // for turning a TPublicType into a TType, using a shallow copy explicit TType(const TPublicType& p) : basicType(p.basicType), - vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(-1), + vectorSize(p.vectorSize), matrixCols(p.matrixCols), matrixRows(p.matrixRows), vector1(false), coopmatNV(p.coopmatNV), coopmatKHR(p.coopmatKHR), coopmatKHRuse(0), coopmatKHRUseValid(false), arraySizes(p.arraySizes), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(p.typeParameters), spirvType(p.spirvType) { @@ -1602,14 +1613,17 @@ class TType { basicType = p.typeParameters->basicType; if (p.typeParameters->arraySizes->getNumDims() == 4) { - coopmatKHRuse = p.typeParameters->arraySizes->getDimSize(3); + const int dimSize = p.typeParameters->arraySizes->getDimSize(3); + assert(dimSize >= 0); + coopmatKHRuse = static_cast(dimSize) & 0b111; + coopmatKHRUseValid = true; p.typeParameters->arraySizes->removeLastSize(); } } } // for construction of sampler types TType(const TSampler& sampler, TStorageQualifier q = EvqUniform, TArraySizes* as = nullptr) : - basicType(EbtSampler), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), + basicType(EbtSampler), vectorSize(1u), matrixCols(0u), matrixRows(0u), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), arraySizes(as), structure(nullptr), fieldName(nullptr), typeName(nullptr), sampler(sampler), typeParameters(nullptr), spirvType(nullptr) { @@ -1655,14 +1669,15 @@ class TType { } else if (isCoopMat()) { coopmatNV = false; coopmatKHR = false; - coopmatKHRuse = -1; + coopmatKHRuse = 0; + coopmatKHRUseValid = false; typeParameters = nullptr; } } } // for making structures, ... TType(TTypeList* userDef, const TString& n) : - basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), + basicType(EbtStruct), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), spirvType(nullptr) { @@ -1672,7 +1687,7 @@ class TType { } // For interface blocks TType(TTypeList* userDef, const TString& n, const TQualifier& q) : - basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), + basicType(EbtBlock), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), qualifier(q), arraySizes(nullptr), structure(userDef), fieldName(nullptr), typeParameters(nullptr), spirvType(nullptr) { @@ -1681,7 +1696,7 @@ class TType { } // for block reference (first parameter must be EbtReference) explicit TType(TBasicType t, const TType &p, const TString& n) : - basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(-1), + basicType(t), vectorSize(1), matrixCols(0), matrixRows(0), vector1(false), coopmatNV(false), coopmatKHR(false), coopmatKHRuse(0), coopmatKHRUseValid(false), arraySizes(nullptr), structure(nullptr), fieldName(nullptr), typeName(nullptr), typeParameters(nullptr), spirvType(nullptr) { @@ -1719,6 +1734,7 @@ class TType { coopmatNV = copyOf.isCoopMatNV(); coopmatKHR = copyOf.isCoopMatKHR(); coopmatKHRuse = copyOf.coopmatKHRuse; + coopmatKHRUseValid = copyOf.coopmatKHRUseValid; } // Make complete copy of the whole type graph rooted at 'copyOf'. @@ -1748,7 +1764,7 @@ class TType { void makeVector() { vector1 = true; } - virtual void hideMember() { basicType = EbtVoid; vectorSize = 1; } + virtual void hideMember() { basicType = EbtVoid; vectorSize = 1u; } virtual bool hiddenMember() const { return basicType == EbtVoid; } virtual void setFieldName(const TString& n) { fieldName = NewPoolTString(n.c_str()); } @@ -1788,9 +1804,9 @@ class TType { virtual TQualifier& getQualifier() { return qualifier; } virtual const TQualifier& getQualifier() const { return qualifier; } - virtual int getVectorSize() const { return vectorSize; } // returns 1 for either scalar or vector of size 1, valid for both - virtual int getMatrixCols() const { return matrixCols; } - virtual int getMatrixRows() const { return matrixRows; } + virtual int getVectorSize() const { return static_cast(vectorSize); } // returns 1 for either scalar or vector of size 1, valid for both + virtual int getMatrixCols() const { return static_cast(matrixCols); } + virtual int getMatrixRows() const { return static_cast(matrixRows); } virtual int getOuterArraySize() const { return arraySizes->getOuterSize(); } virtual TIntermTyped* getOuterArrayNode() const { return arraySizes->getOuterNode(); } virtual int getCumulativeArraySize() const { return arraySizes->getCumulativeSize(); } @@ -1805,7 +1821,7 @@ class TType { virtual bool isScalar() const { return ! isVector() && ! isMatrix() && ! isStruct() && ! isArray(); } virtual bool isScalarOrVec1() const { return isScalar() || vector1; } virtual bool isScalarOrVector() const { return !isMatrix() && !isStruct() && !isArray(); } - virtual bool isVector() const { return vectorSize > 1 || vector1; } + virtual bool isVector() const { return vectorSize > 1u || vector1; } virtual bool isMatrix() const { return matrixCols ? true : false; } virtual bool isArray() const { return arraySizes != nullptr; } virtual bool isSizedArray() const { return isArray() && arraySizes->isSized(); } @@ -1855,7 +1871,7 @@ class TType { bool isCoopMatKHR() const { return coopmatKHR; } bool isReference() const { return getBasicType() == EbtReference; } bool isSpirvType() const { return getBasicType() == EbtSpirvType; } - int getCoopMatKHRuse() const { return coopmatKHRuse; } + int getCoopMatKHRuse() const { return static_cast(coopmatKHRuse); } // return true if this type contains any subtype which satisfies the given predicate. template @@ -2395,7 +2411,7 @@ class TType { if (i != (int)typeParameters->arraySizes->getNumDims() - 1) appendStr(", "); } - if (coopmatKHRuse != -1) { + if (coopmatKHRUseValid) { appendStr(", "); appendInt(coopmatKHRuse); } @@ -2464,11 +2480,14 @@ class TType { void setStruct(TTypeList* s) { assert(isStruct()); structure = s; } TTypeList* getWritableStruct() const { assert(isStruct()); return structure; } // This should only be used when known to not be sharing with other threads void setBasicType(const TBasicType& t) { basicType = t; } - void setVectorSize(int s) { vectorSize = s; } + void setVectorSize(int s) { + assert(s >= 0); + vectorSize = static_cast(s) & 0b1111; + } int computeNumComponents() const { - int components = 0; + uint32_t components = 0; if (getBasicType() == EbtStruct || getBasicType() == EbtBlock) { for (TTypeList::const_iterator tl = getStruct()->begin(); tl != getStruct()->end(); tl++) @@ -2482,7 +2501,7 @@ class TType { components *= arraySizes->getCumulativeSize(); } - return components; + return static_cast(components); } // append this type's mangled name to the passed in 'name' @@ -2825,9 +2844,9 @@ class TType { void buildMangledName(TString&) const; TBasicType basicType : 8; - int vectorSize : 4; // 1 means either scalar or 1-component vector; see vector1 to disambiguate. - int matrixCols : 4; - int matrixRows : 4; + uint32_t vectorSize : 4; // 1 means either scalar or 1-component vector; see vector1 to disambiguate. + uint32_t matrixCols : 4; + uint32_t matrixRows : 4; bool vector1 : 1; // Backward-compatible tracking of a 1-component vector distinguished from a scalar. // GLSL 4.5 never has a 1-component vector; so this will always be false until such // functionality is added. @@ -2835,7 +2854,8 @@ class TType { // from a scalar. bool coopmatNV : 1; bool coopmatKHR : 1; - int coopmatKHRuse : 4; // Accepts one of three values: 0, 1, 2 (gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator) + uint32_t coopmatKHRuse : 3; // Accepts one of three values: 0, 1, 2 (gl_MatrixUseA, gl_MatrixUseB, gl_MatrixUseAccumulator) + bool coopmatKHRUseValid : 1; // True if coopmatKHRuse has been set TQualifier qualifier; TArraySizes* arraySizes; // nullptr unless an array; can be shared across types From a3069e1df4945c8baf0da89a796edc863d0dcb4c Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 28 Nov 2023 12:00:59 -0700 Subject: [PATCH 350/594] cmake: Remove SPIRV-Tools workaround As of KhronosGroup/SPIRV-Tools/pull/5482 SPIRV-Tools builds cleanly for Android/iOS by default --- CMakeLists.txt | 1 - known_good.json | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 45b875a387..6d71b64fc5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -69,7 +69,6 @@ endif() # Furthermore testing is equally problematic. if (IOS OR ANDROID) set(ENABLE_GLSLANG_BINARIES OFF) - set(SPIRV_SKIP_EXECUTABLES ON) set(ENABLE_CTEST OFF) set(BUILD_TESTING OFF) diff --git a/known_good.json b/known_good.json index 876381cf09..e78cfb01fc 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit" : "360d469b9eac54d6c6e20f609f9ec35e3a5380ad" + "commit": "afaf8fda2ad0364655909b56c8b634ce89095bb5" }, { "name" : "spirv-tools/external/spirv-headers", From c59b876ca0f5b672d7cfeb4d591b346e97b1966c Mon Sep 17 00:00:00 2001 From: Samuel Bourasseau <120011247+sbourasse@users.noreply.github.com> Date: Wed, 29 Nov 2023 01:19:02 +0100 Subject: [PATCH 351/594] Implement relaxed rule for opaque struct members --- Test/baseResults/vk.relaxed.frag.out | 1585 +++++---- Test/vk.relaxed.frag | 17 +- glslang/MachineIndependent/Intermediate.cpp | 34 + .../MachineIndependent/ParseContextBase.cpp | 18 + glslang/MachineIndependent/ParseHelper.cpp | 277 +- glslang/MachineIndependent/ParseHelper.h | 5 + glslang/MachineIndependent/glslang.y | 61 +- glslang/MachineIndependent/glslang_tab.cpp | 2879 +++++++++-------- .../MachineIndependent/localintermediate.h | 2 + 9 files changed, 2739 insertions(+), 2139 deletions(-) diff --git a/Test/baseResults/vk.relaxed.frag.out b/Test/baseResults/vk.relaxed.frag.out index c88782f30e..078dec2020 100644 --- a/Test/baseResults/vk.relaxed.frag.out +++ b/Test/baseResults/vk.relaxed.frag.out @@ -5,111 +5,71 @@ WARNING: 0:8: 'c' : ignoring layout qualifier for uniform location Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence -0:36 Function Definition: bar( ( global highp uint) -0:36 Function Parameters: -0:37 Sequence -0:37 Sequence -0:37 move second child to first child ( temp highp uint) -0:37 'j' ( temp highp uint) -0:37 Constant: -0:37 0 (const uint) -0:38 move second child to first child ( temp highp uint) -0:38 'j' ( temp highp uint) -0:38 AtomicAdd ( global highp uint) -0:38 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:38 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:38 Constant: -0:38 0 (const uint) -0:38 Constant: -0:38 1 (const uint) -0:39 move second child to first child ( temp highp uint) -0:39 'j' ( temp highp uint) -0:39 subtract ( temp highp uint) -0:39 AtomicAdd ( global highp uint) -0:39 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:39 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:39 Constant: -0:39 0 (const uint) -0:39 Constant: -0:39 4294967295 (const uint) -0:39 Constant: -0:39 1 (const uint) -0:40 move second child to first child ( temp highp uint) -0:40 'j' ( temp highp uint) -0:40 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:40 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:40 Constant: -0:40 0 (const uint) -0:42 move second child to first child ( temp highp uint) -0:42 'j' ( temp highp uint) -0:42 AtomicAdd ( global highp uint) -0:42 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:42 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:42 Constant: -0:42 0 (const uint) -0:42 Constant: -0:42 1 (const uint) -0:43 move second child to first child ( temp highp uint) -0:43 'j' ( temp highp uint) -0:43 AtomicAdd ( global highp uint) -0:43 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:43 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:43 Constant: -0:43 0 (const uint) -0:43 Constant: -0:43 4294967295 (const uint) -0:44 move second child to first child ( temp highp uint) -0:44 'j' ( temp highp uint) -0:44 AtomicSubtract ( global highp uint) -0:44 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:44 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:44 Constant: -0:44 0 (const uint) +0:43 Function Definition: bar( ( global highp uint) +0:43 Function Parameters: +0:44 Sequence +0:44 Sequence +0:44 move second child to first child ( temp highp uint) +0:44 'j' ( temp highp uint) 0:44 Constant: -0:44 1 (const uint) +0:44 0 (const uint) +0:45 move second child to first child ( temp highp uint) +0:45 'j' ( temp highp uint) +0:45 AtomicAdd ( global highp uint) +0:45 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:45 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:45 Constant: +0:45 0 (const uint) +0:45 Constant: +0:45 1 (const uint) 0:46 move second child to first child ( temp highp uint) 0:46 'j' ( temp highp uint) -0:46 AtomicMin ( global highp uint) -0:46 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:46 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:46 subtract ( temp highp uint) +0:46 AtomicAdd ( global highp uint) +0:46 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:46 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:46 Constant: +0:46 0 (const uint) 0:46 Constant: -0:46 0 (const uint) -0:46 'j' ( temp highp uint) +0:46 4294967295 (const uint) +0:46 Constant: +0:46 1 (const uint) 0:47 move second child to first child ( temp highp uint) 0:47 'j' ( temp highp uint) -0:47 AtomicMax ( global highp uint) -0:47 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:47 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:47 Constant: -0:47 0 (const uint) -0:47 'j' ( temp highp uint) -0:48 move second child to first child ( temp highp uint) -0:48 'j' ( temp highp uint) -0:48 AtomicAnd ( global highp uint) -0:48 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:48 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:48 Constant: -0:48 0 (const uint) -0:48 'j' ( temp highp uint) +0:47 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:47 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:47 Constant: +0:47 0 (const uint) +0:49 move second child to first child ( temp highp uint) +0:49 'j' ( temp highp uint) +0:49 AtomicAdd ( global highp uint) +0:49 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:49 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:49 Constant: +0:49 0 (const uint) +0:49 Constant: +0:49 1 (const uint) 0:50 move second child to first child ( temp highp uint) 0:50 'j' ( temp highp uint) -0:50 AtomicOr ( global highp uint) +0:50 AtomicAdd ( global highp uint) 0:50 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:50 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:50 Constant: 0:50 0 (const uint) -0:50 'j' ( temp highp uint) +0:50 Constant: +0:50 4294967295 (const uint) 0:51 move second child to first child ( temp highp uint) 0:51 'j' ( temp highp uint) -0:51 AtomicXor ( global highp uint) +0:51 AtomicSubtract ( global highp uint) 0:51 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:51 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:51 Constant: 0:51 0 (const uint) -0:51 'j' ( temp highp uint) +0:51 Constant: +0:51 1 (const uint) 0:53 move second child to first child ( temp highp uint) 0:53 'j' ( temp highp uint) -0:53 AtomicExchange ( global highp uint) +0:53 AtomicMin ( global highp uint) 0:53 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:53 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:53 Constant: @@ -117,158 +77,254 @@ gl_FragCoord origin is upper left 0:53 'j' ( temp highp uint) 0:54 move second child to first child ( temp highp uint) 0:54 'j' ( temp highp uint) -0:54 AtomicCompSwap ( global highp uint) +0:54 AtomicMax ( global highp uint) 0:54 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:54 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:54 Constant: 0:54 0 (const uint) -0:54 Constant: -0:54 0 (const uint) 0:54 'j' ( temp highp uint) -0:56 AtomicAdd ( global highp uint) -0:56 counter2: direct index for structure ( coherent volatile buffer highp uint) -0:56 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:56 Constant: -0:56 1 (const uint) -0:56 Constant: -0:56 1 (const uint) -0:57 AtomicAdd ( global highp uint) -0:57 counter3: direct index for structure ( coherent volatile buffer highp uint) -0:57 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) -0:57 Constant: -0:57 0 (const uint) -0:57 Constant: -0:57 1 (const uint) -0:59 MemoryBarrierBuffer ( global void) -0:61 Branch: Return with expression +0:55 move second child to first child ( temp highp uint) +0:55 'j' ( temp highp uint) +0:55 AtomicAnd ( global highp uint) +0:55 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:55 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:55 Constant: +0:55 0 (const uint) +0:55 'j' ( temp highp uint) +0:57 move second child to first child ( temp highp uint) +0:57 'j' ( temp highp uint) +0:57 AtomicOr ( global highp uint) +0:57 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:57 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:57 Constant: +0:57 0 (const uint) +0:57 'j' ( temp highp uint) +0:58 move second child to first child ( temp highp uint) +0:58 'j' ( temp highp uint) +0:58 AtomicXor ( global highp uint) +0:58 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:58 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:58 Constant: +0:58 0 (const uint) +0:58 'j' ( temp highp uint) +0:60 move second child to first child ( temp highp uint) +0:60 'j' ( temp highp uint) +0:60 AtomicExchange ( global highp uint) +0:60 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:60 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:60 Constant: +0:60 0 (const uint) +0:60 'j' ( temp highp uint) +0:61 move second child to first child ( temp highp uint) 0:61 'j' ( temp highp uint) -0:64 Function Definition: foo( ( global highp 4-component vector of float) -0:64 Function Parameters: -0:65 Sequence -0:65 Sequence -0:65 move second child to first child ( temp highp float) -0:65 'f' ( temp highp float) -0:65 add ( temp highp float) -0:65 add ( temp highp float) -0:65 add ( temp highp float) -0:65 j: direct index for structure (layout( column_major std140) uniform highp float) -0:65 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) -0:65 Constant: -0:65 0 (const uint) -0:65 j: direct index for structure (layout( column_major std430) buffer highp float) -0:65 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) -0:65 Constant: -0:65 0 (const int) -0:65 y: direct index for structure ( global highp float) -0:65 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z}) -0:65 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:65 Constant: -0:65 4 (const uint) -0:65 Constant: -0:65 1 (const int) -0:65 Convert uint to float ( temp highp float) -0:65 z: direct index for structure ( global highp uint) -0:65 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z}) -0:65 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:65 Constant: -0:65 4 (const uint) -0:65 Constant: -0:65 2 (const int) -0:66 Sequence -0:66 move second child to first child ( temp highp 2-component vector of float) -0:66 'v2' ( temp highp 2-component vector of float) -0:66 add ( temp highp 2-component vector of float) -0:66 add ( temp highp 2-component vector of float) -0:66 b: direct index for structure ( uniform highp 2-component vector of float) -0:66 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:66 Constant: -0:66 1 (const uint) -0:66 c: direct index for structure ( uniform highp 2-component vector of float) -0:66 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:66 Constant: -0:66 2 (const uint) -0:66 x: direct index for structure ( global highp 2-component vector of float) -0:66 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z}) -0:66 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:66 Constant: -0:66 4 (const uint) -0:66 Constant: -0:66 0 (const int) -0:67 Sequence -0:67 move second child to first child ( temp highp 4-component vector of float) -0:67 'v4' ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 a: direct index for structure ( uniform highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 0 (const uint) -0:67 direct index ( temp highp 4-component vector of float) -0:67 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 3 (const uint) -0:67 Constant: -0:67 0 (const int) -0:67 direct index ( temp highp 4-component vector of float) -0:67 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 3 (const uint) -0:67 Constant: -0:67 1 (const int) -0:67 direct index ( temp highp 4-component vector of float) -0:67 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 3 (const uint) -0:67 Constant: -0:67 2 (const int) -0:67 k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) -0:67 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) -0:67 Constant: -0:67 1 (const uint) -0:67 k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float) -0:67 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) -0:67 Constant: -0:67 1 (const int) -0:67 texture ( global highp 4-component vector of float) -0:67 't1' ( uniform highp sampler2D) -0:67 Constant: -0:67 0.000000 -0:67 0.000000 +0:61 AtomicCompSwap ( global highp uint) +0:61 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:61 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:61 Constant: +0:61 0 (const uint) +0:61 Constant: +0:61 0 (const uint) +0:61 'j' ( temp highp uint) +0:63 AtomicAdd ( global highp uint) +0:63 counter2: direct index for structure ( coherent volatile buffer highp uint) +0:63 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:63 Constant: +0:63 1 (const uint) +0:63 Constant: +0:63 1 (const uint) +0:64 AtomicAdd ( global highp uint) +0:64 counter3: direct index for structure ( coherent volatile buffer highp uint) +0:64 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) +0:64 Constant: +0:64 0 (const uint) +0:64 Constant: +0:64 1 (const uint) +0:66 MemoryBarrierBuffer ( global void) 0:68 Branch: Return with expression -0:68 component-wise multiply ( temp highp 4-component vector of float) -0:68 component-wise multiply ( temp highp 4-component vector of float) -0:68 Construct vec4 ( temp highp 4-component vector of float) -0:68 'f' ( temp highp float) -0:68 Construct vec4 ( temp highp 4-component vector of float) -0:68 'v2' ( temp highp 2-component vector of float) -0:68 Constant: -0:68 1.000000 -0:68 Constant: -0:68 1.000000 -0:68 'v4' ( temp highp 4-component vector of float) -0:71 Function Definition: main( ( global void) +0:68 'j' ( temp highp uint) +0:71 Function Definition: foo( ( global highp 4-component vector of float) 0:71 Function Parameters: 0:72 Sequence 0:72 Sequence 0:72 move second child to first child ( temp highp float) -0:72 'j' ( temp highp float) -0:72 Convert uint to float ( temp highp float) -0:72 Function Call: bar( ( global highp uint) -0:73 move second child to first child ( temp highp 4-component vector of float) -0:73 'o' ( out highp 4-component vector of float) -0:73 vector-scale ( temp highp 4-component vector of float) -0:73 'j' ( temp highp float) -0:73 Function Call: foo( ( global highp 4-component vector of float) +0:72 'f' ( temp highp float) +0:72 add ( temp highp float) +0:72 add ( temp highp float) +0:72 add ( temp highp float) +0:72 j: direct index for structure (layout( column_major std140) uniform highp float) +0:72 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) +0:72 Constant: +0:72 0 (const uint) +0:72 j: direct index for structure (layout( column_major std430) buffer highp float) +0:72 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) +0:72 Constant: +0:72 0 (const int) +0:72 y: direct index for structure ( global highp float) +0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:72 Constant: +0:72 4 (const uint) +0:72 Constant: +0:72 1 (const int) +0:72 Convert uint to float ( temp highp float) +0:72 z: direct index for structure ( global highp uint) +0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:72 Constant: +0:72 4 (const uint) +0:72 Constant: +0:72 2 (const int) +0:73 Sequence +0:73 move second child to first child ( temp highp 2-component vector of float) +0:73 'v2' ( temp highp 2-component vector of float) +0:73 add ( temp highp 2-component vector of float) +0:73 add ( temp highp 2-component vector of float) +0:73 b: direct index for structure ( uniform highp 2-component vector of float) +0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:73 Constant: +0:73 1 (const uint) +0:73 c: direct index for structure ( uniform highp 2-component vector of float) +0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:73 Constant: +0:73 2 (const uint) +0:73 x: direct index for structure ( global highp 2-component vector of float) +0:73 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:73 Constant: +0:73 4 (const uint) +0:73 Constant: +0:73 0 (const int) +0:74 Sequence +0:74 move second child to first child ( temp highp 4-component vector of float) +0:74 'v4' ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 a: direct index for structure ( uniform highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 0 (const uint) +0:74 direct index ( temp highp 4-component vector of float) +0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 3 (const uint) +0:74 Constant: +0:74 0 (const int) +0:74 direct index ( temp highp 4-component vector of float) +0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 3 (const uint) +0:74 Constant: +0:74 1 (const int) +0:74 direct index ( temp highp 4-component vector of float) +0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 3 (const uint) +0:74 Constant: +0:74 2 (const int) +0:74 k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) +0:74 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) +0:74 Constant: +0:74 1 (const uint) +0:74 k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float) +0:74 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) +0:74 Constant: +0:74 1 (const int) +0:74 texture ( global highp 4-component vector of float) +0:74 't1' ( uniform highp sampler2D) +0:74 Constant: +0:74 0.000000 +0:74 0.000000 +0:74 texture ( global highp 4-component vector of float) +0:74 'structUniform.t0' ( uniform highp sampler2D) +0:74 Constant: +0:74 0.000000 +0:74 0.000000 +0:75 Branch: Return with expression +0:75 component-wise multiply ( temp highp 4-component vector of float) +0:75 component-wise multiply ( temp highp 4-component vector of float) +0:75 Construct vec4 ( temp highp 4-component vector of float) +0:75 'f' ( temp highp float) +0:75 Construct vec4 ( temp highp 4-component vector of float) +0:75 'v2' ( temp highp 2-component vector of float) +0:75 Constant: +0:75 1.000000 +0:75 Constant: +0:75 1.000000 +0:75 'v4' ( temp highp 4-component vector of float) +0:78 Function Definition: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) +0:78 Function Parameters: +0:78 'samplers' ( in structure{ global 4-element array of highp int /*tn*/}) +0:78 'samplers.tn[0]' ( in highp sampler2D) +0:78 'samplers.tn[1]' ( in highp sampler2D) +0:78 'samplers.tn[2]' ( in highp sampler2D) +0:78 'samplers.tn[3]' ( in highp sampler2D) +0:79 Sequence +0:79 Branch: Return with expression +0:79 add ( temp highp 4-component vector of float) +0:79 add ( temp highp 4-component vector of float) +0:79 add ( temp highp 4-component vector of float) +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[0]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[1]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[2]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[3]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:82 Function Definition: main( ( global void) +0:82 Function Parameters: +0:83 Sequence +0:83 Sequence +0:83 move second child to first child ( temp highp float) +0:83 'j' ( temp highp float) +0:83 Convert uint to float ( temp highp float) +0:83 Function Call: bar( ( global highp uint) +0:84 move second child to first child ( temp highp 4-component vector of float) +0:84 'o' ( out highp 4-component vector of float) +0:84 add ( temp highp 4-component vector of float) +0:84 vector-scale ( temp highp 4-component vector of float) +0:84 'j' ( temp highp float) +0:84 Function Call: foo( ( global highp 4-component vector of float) +0:84 Function Call: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) +0:84 samplers: direct index for structure ( global structure{ global 4-element array of highp int /*tn*/}) +0:84 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:84 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:84 Constant: +0:84 4 (const uint) +0:84 Constant: +0:84 4 (const int) +0:84 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) +0:84 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) +0:84 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) +0:84 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? Linker Objects 0:? 'o' ( out highp 4-component vector of float) -0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:? 'structUniform.t0' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? 't1' ( uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:? 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) @@ -282,111 +338,71 @@ Linked fragment stage: Shader version: 460 gl_FragCoord origin is upper left 0:? Sequence -0:36 Function Definition: bar( ( global highp uint) -0:36 Function Parameters: -0:37 Sequence -0:37 Sequence -0:37 move second child to first child ( temp highp uint) -0:37 'j' ( temp highp uint) -0:37 Constant: -0:37 0 (const uint) -0:38 move second child to first child ( temp highp uint) -0:38 'j' ( temp highp uint) -0:38 AtomicAdd ( global highp uint) -0:38 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:38 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:38 Constant: -0:38 0 (const uint) -0:38 Constant: -0:38 1 (const uint) -0:39 move second child to first child ( temp highp uint) -0:39 'j' ( temp highp uint) -0:39 subtract ( temp highp uint) -0:39 AtomicAdd ( global highp uint) -0:39 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:39 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:39 Constant: -0:39 0 (const uint) -0:39 Constant: -0:39 4294967295 (const uint) -0:39 Constant: -0:39 1 (const uint) -0:40 move second child to first child ( temp highp uint) -0:40 'j' ( temp highp uint) -0:40 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:40 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:40 Constant: -0:40 0 (const uint) -0:42 move second child to first child ( temp highp uint) -0:42 'j' ( temp highp uint) -0:42 AtomicAdd ( global highp uint) -0:42 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:42 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:42 Constant: -0:42 0 (const uint) -0:42 Constant: -0:42 1 (const uint) -0:43 move second child to first child ( temp highp uint) -0:43 'j' ( temp highp uint) -0:43 AtomicAdd ( global highp uint) -0:43 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:43 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:43 Constant: -0:43 0 (const uint) -0:43 Constant: -0:43 4294967295 (const uint) -0:44 move second child to first child ( temp highp uint) -0:44 'j' ( temp highp uint) -0:44 AtomicSubtract ( global highp uint) -0:44 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:44 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:44 Constant: -0:44 0 (const uint) +0:43 Function Definition: bar( ( global highp uint) +0:43 Function Parameters: +0:44 Sequence +0:44 Sequence +0:44 move second child to first child ( temp highp uint) +0:44 'j' ( temp highp uint) 0:44 Constant: -0:44 1 (const uint) +0:44 0 (const uint) +0:45 move second child to first child ( temp highp uint) +0:45 'j' ( temp highp uint) +0:45 AtomicAdd ( global highp uint) +0:45 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:45 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:45 Constant: +0:45 0 (const uint) +0:45 Constant: +0:45 1 (const uint) 0:46 move second child to first child ( temp highp uint) 0:46 'j' ( temp highp uint) -0:46 AtomicMin ( global highp uint) -0:46 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:46 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:46 subtract ( temp highp uint) +0:46 AtomicAdd ( global highp uint) +0:46 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:46 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:46 Constant: +0:46 0 (const uint) 0:46 Constant: -0:46 0 (const uint) -0:46 'j' ( temp highp uint) +0:46 4294967295 (const uint) +0:46 Constant: +0:46 1 (const uint) 0:47 move second child to first child ( temp highp uint) 0:47 'j' ( temp highp uint) -0:47 AtomicMax ( global highp uint) -0:47 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:47 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:47 Constant: -0:47 0 (const uint) -0:47 'j' ( temp highp uint) -0:48 move second child to first child ( temp highp uint) -0:48 'j' ( temp highp uint) -0:48 AtomicAnd ( global highp uint) -0:48 counter1: direct index for structure ( coherent volatile buffer highp uint) -0:48 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:48 Constant: -0:48 0 (const uint) -0:48 'j' ( temp highp uint) +0:47 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:47 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:47 Constant: +0:47 0 (const uint) +0:49 move second child to first child ( temp highp uint) +0:49 'j' ( temp highp uint) +0:49 AtomicAdd ( global highp uint) +0:49 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:49 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:49 Constant: +0:49 0 (const uint) +0:49 Constant: +0:49 1 (const uint) 0:50 move second child to first child ( temp highp uint) 0:50 'j' ( temp highp uint) -0:50 AtomicOr ( global highp uint) +0:50 AtomicAdd ( global highp uint) 0:50 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:50 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:50 Constant: 0:50 0 (const uint) -0:50 'j' ( temp highp uint) +0:50 Constant: +0:50 4294967295 (const uint) 0:51 move second child to first child ( temp highp uint) 0:51 'j' ( temp highp uint) -0:51 AtomicXor ( global highp uint) +0:51 AtomicSubtract ( global highp uint) 0:51 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:51 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:51 Constant: 0:51 0 (const uint) -0:51 'j' ( temp highp uint) +0:51 Constant: +0:51 1 (const uint) 0:53 move second child to first child ( temp highp uint) 0:53 'j' ( temp highp uint) -0:53 AtomicExchange ( global highp uint) +0:53 AtomicMin ( global highp uint) 0:53 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:53 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:53 Constant: @@ -394,158 +410,254 @@ gl_FragCoord origin is upper left 0:53 'j' ( temp highp uint) 0:54 move second child to first child ( temp highp uint) 0:54 'j' ( temp highp uint) -0:54 AtomicCompSwap ( global highp uint) +0:54 AtomicMax ( global highp uint) 0:54 counter1: direct index for structure ( coherent volatile buffer highp uint) 0:54 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) 0:54 Constant: 0:54 0 (const uint) -0:54 Constant: -0:54 0 (const uint) 0:54 'j' ( temp highp uint) -0:56 AtomicAdd ( global highp uint) -0:56 counter2: direct index for structure ( coherent volatile buffer highp uint) -0:56 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) -0:56 Constant: -0:56 1 (const uint) -0:56 Constant: -0:56 1 (const uint) -0:57 AtomicAdd ( global highp uint) -0:57 counter3: direct index for structure ( coherent volatile buffer highp uint) -0:57 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) -0:57 Constant: -0:57 0 (const uint) -0:57 Constant: -0:57 1 (const uint) -0:59 MemoryBarrierBuffer ( global void) -0:61 Branch: Return with expression +0:55 move second child to first child ( temp highp uint) +0:55 'j' ( temp highp uint) +0:55 AtomicAnd ( global highp uint) +0:55 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:55 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:55 Constant: +0:55 0 (const uint) +0:55 'j' ( temp highp uint) +0:57 move second child to first child ( temp highp uint) +0:57 'j' ( temp highp uint) +0:57 AtomicOr ( global highp uint) +0:57 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:57 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:57 Constant: +0:57 0 (const uint) +0:57 'j' ( temp highp uint) +0:58 move second child to first child ( temp highp uint) +0:58 'j' ( temp highp uint) +0:58 AtomicXor ( global highp uint) +0:58 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:58 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:58 Constant: +0:58 0 (const uint) +0:58 'j' ( temp highp uint) +0:60 move second child to first child ( temp highp uint) +0:60 'j' ( temp highp uint) +0:60 AtomicExchange ( global highp uint) +0:60 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:60 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:60 Constant: +0:60 0 (const uint) +0:60 'j' ( temp highp uint) +0:61 move second child to first child ( temp highp uint) 0:61 'j' ( temp highp uint) -0:64 Function Definition: foo( ( global highp 4-component vector of float) -0:64 Function Parameters: -0:65 Sequence -0:65 Sequence -0:65 move second child to first child ( temp highp float) -0:65 'f' ( temp highp float) -0:65 add ( temp highp float) -0:65 add ( temp highp float) -0:65 add ( temp highp float) -0:65 j: direct index for structure (layout( column_major std140) uniform highp float) -0:65 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) -0:65 Constant: -0:65 0 (const uint) -0:65 j: direct index for structure (layout( column_major std430) buffer highp float) -0:65 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) -0:65 Constant: -0:65 0 (const int) -0:65 y: direct index for structure ( global highp float) -0:65 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z}) -0:65 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:65 Constant: -0:65 4 (const uint) -0:65 Constant: -0:65 1 (const int) -0:65 Convert uint to float ( temp highp float) -0:65 z: direct index for structure ( global highp uint) -0:65 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z}) -0:65 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:65 Constant: -0:65 4 (const uint) -0:65 Constant: -0:65 2 (const int) -0:66 Sequence -0:66 move second child to first child ( temp highp 2-component vector of float) -0:66 'v2' ( temp highp 2-component vector of float) -0:66 add ( temp highp 2-component vector of float) -0:66 add ( temp highp 2-component vector of float) -0:66 b: direct index for structure ( uniform highp 2-component vector of float) -0:66 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:66 Constant: -0:66 1 (const uint) -0:66 c: direct index for structure ( uniform highp 2-component vector of float) -0:66 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:66 Constant: -0:66 2 (const uint) -0:66 x: direct index for structure ( global highp 2-component vector of float) -0:66 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z}) -0:66 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:66 Constant: -0:66 4 (const uint) -0:66 Constant: -0:66 0 (const int) -0:67 Sequence -0:67 move second child to first child ( temp highp 4-component vector of float) -0:67 'v4' ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 add ( temp highp 4-component vector of float) -0:67 a: direct index for structure ( uniform highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 0 (const uint) -0:67 direct index ( temp highp 4-component vector of float) -0:67 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 3 (const uint) -0:67 Constant: -0:67 0 (const int) -0:67 direct index ( temp highp 4-component vector of float) -0:67 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 3 (const uint) -0:67 Constant: -0:67 1 (const int) -0:67 direct index ( temp highp 4-component vector of float) -0:67 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) -0:67 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) -0:67 Constant: -0:67 3 (const uint) -0:67 Constant: -0:67 2 (const int) -0:67 k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) -0:67 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) -0:67 Constant: -0:67 1 (const uint) -0:67 k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float) -0:67 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) -0:67 Constant: -0:67 1 (const int) -0:67 texture ( global highp 4-component vector of float) -0:67 't1' ( uniform highp sampler2D) -0:67 Constant: -0:67 0.000000 -0:67 0.000000 +0:61 AtomicCompSwap ( global highp uint) +0:61 counter1: direct index for structure ( coherent volatile buffer highp uint) +0:61 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:61 Constant: +0:61 0 (const uint) +0:61 Constant: +0:61 0 (const uint) +0:61 'j' ( temp highp uint) +0:63 AtomicAdd ( global highp uint) +0:63 counter2: direct index for structure ( coherent volatile buffer highp uint) +0:63 'anon@2' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter1, coherent volatile buffer highp uint counter2}) +0:63 Constant: +0:63 1 (const uint) +0:63 Constant: +0:63 1 (const uint) +0:64 AtomicAdd ( global highp uint) +0:64 counter3: direct index for structure ( coherent volatile buffer highp uint) +0:64 'anon@3' (layout( column_major std430) buffer block{ coherent volatile buffer highp uint counter3}) +0:64 Constant: +0:64 0 (const uint) +0:64 Constant: +0:64 1 (const uint) +0:66 MemoryBarrierBuffer ( global void) 0:68 Branch: Return with expression -0:68 component-wise multiply ( temp highp 4-component vector of float) -0:68 component-wise multiply ( temp highp 4-component vector of float) -0:68 Construct vec4 ( temp highp 4-component vector of float) -0:68 'f' ( temp highp float) -0:68 Construct vec4 ( temp highp 4-component vector of float) -0:68 'v2' ( temp highp 2-component vector of float) -0:68 Constant: -0:68 1.000000 -0:68 Constant: -0:68 1.000000 -0:68 'v4' ( temp highp 4-component vector of float) -0:71 Function Definition: main( ( global void) +0:68 'j' ( temp highp uint) +0:71 Function Definition: foo( ( global highp 4-component vector of float) 0:71 Function Parameters: 0:72 Sequence 0:72 Sequence 0:72 move second child to first child ( temp highp float) -0:72 'j' ( temp highp float) -0:72 Convert uint to float ( temp highp float) -0:72 Function Call: bar( ( global highp uint) -0:73 move second child to first child ( temp highp 4-component vector of float) -0:73 'o' ( out highp 4-component vector of float) -0:73 vector-scale ( temp highp 4-component vector of float) -0:73 'j' ( temp highp float) -0:73 Function Call: foo( ( global highp 4-component vector of float) +0:72 'f' ( temp highp float) +0:72 add ( temp highp float) +0:72 add ( temp highp float) +0:72 add ( temp highp float) +0:72 j: direct index for structure (layout( column_major std140) uniform highp float) +0:72 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) +0:72 Constant: +0:72 0 (const uint) +0:72 j: direct index for structure (layout( column_major std430) buffer highp float) +0:72 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) +0:72 Constant: +0:72 0 (const int) +0:72 y: direct index for structure ( global highp float) +0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:72 Constant: +0:72 4 (const uint) +0:72 Constant: +0:72 1 (const int) +0:72 Convert uint to float ( temp highp float) +0:72 z: direct index for structure ( global highp uint) +0:72 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:72 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:72 Constant: +0:72 4 (const uint) +0:72 Constant: +0:72 2 (const int) +0:73 Sequence +0:73 move second child to first child ( temp highp 2-component vector of float) +0:73 'v2' ( temp highp 2-component vector of float) +0:73 add ( temp highp 2-component vector of float) +0:73 add ( temp highp 2-component vector of float) +0:73 b: direct index for structure ( uniform highp 2-component vector of float) +0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:73 Constant: +0:73 1 (const uint) +0:73 c: direct index for structure ( uniform highp 2-component vector of float) +0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:73 Constant: +0:73 2 (const uint) +0:73 x: direct index for structure ( global highp 2-component vector of float) +0:73 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:73 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:73 Constant: +0:73 4 (const uint) +0:73 Constant: +0:73 0 (const int) +0:74 Sequence +0:74 move second child to first child ( temp highp 4-component vector of float) +0:74 'v4' ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 add ( temp highp 4-component vector of float) +0:74 a: direct index for structure ( uniform highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 0 (const uint) +0:74 direct index ( temp highp 4-component vector of float) +0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 3 (const uint) +0:74 Constant: +0:74 0 (const int) +0:74 direct index ( temp highp 4-component vector of float) +0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 3 (const uint) +0:74 Constant: +0:74 1 (const int) +0:74 direct index ( temp highp 4-component vector of float) +0:74 d: direct index for structure ( uniform 10-element array of highp 4-component vector of float) +0:74 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:74 Constant: +0:74 3 (const uint) +0:74 Constant: +0:74 2 (const int) +0:74 k: direct index for structure (layout( column_major std140) uniform highp 4-component vector of float) +0:74 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) +0:74 Constant: +0:74 1 (const uint) +0:74 k: direct index for structure (layout( column_major std430) buffer highp 4-component vector of float) +0:74 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) +0:74 Constant: +0:74 1 (const int) +0:74 texture ( global highp 4-component vector of float) +0:74 't1' ( uniform highp sampler2D) +0:74 Constant: +0:74 0.000000 +0:74 0.000000 +0:74 texture ( global highp 4-component vector of float) +0:74 'structUniform.t0' ( uniform highp sampler2D) +0:74 Constant: +0:74 0.000000 +0:74 0.000000 +0:75 Branch: Return with expression +0:75 component-wise multiply ( temp highp 4-component vector of float) +0:75 component-wise multiply ( temp highp 4-component vector of float) +0:75 Construct vec4 ( temp highp 4-component vector of float) +0:75 'f' ( temp highp float) +0:75 Construct vec4 ( temp highp 4-component vector of float) +0:75 'v2' ( temp highp 2-component vector of float) +0:75 Constant: +0:75 1.000000 +0:75 Constant: +0:75 1.000000 +0:75 'v4' ( temp highp 4-component vector of float) +0:78 Function Definition: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) +0:78 Function Parameters: +0:78 'samplers' ( in structure{ global 4-element array of highp int /*tn*/}) +0:78 'samplers.tn[0]' ( in highp sampler2D) +0:78 'samplers.tn[1]' ( in highp sampler2D) +0:78 'samplers.tn[2]' ( in highp sampler2D) +0:78 'samplers.tn[3]' ( in highp sampler2D) +0:79 Sequence +0:79 Branch: Return with expression +0:79 add ( temp highp 4-component vector of float) +0:79 add ( temp highp 4-component vector of float) +0:79 add ( temp highp 4-component vector of float) +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[0]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[1]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[2]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:79 texture ( global highp 4-component vector of float) +0:79 'samplers.tn[3]' ( in highp sampler2D) +0:79 Constant: +0:79 0.000000 +0:79 0.000000 +0:82 Function Definition: main( ( global void) +0:82 Function Parameters: +0:83 Sequence +0:83 Sequence +0:83 move second child to first child ( temp highp float) +0:83 'j' ( temp highp float) +0:83 Convert uint to float ( temp highp float) +0:83 Function Call: bar( ( global highp uint) +0:84 move second child to first child ( temp highp 4-component vector of float) +0:84 'o' ( out highp 4-component vector of float) +0:84 add ( temp highp 4-component vector of float) +0:84 vector-scale ( temp highp 4-component vector of float) +0:84 'j' ( temp highp float) +0:84 Function Call: foo( ( global highp 4-component vector of float) +0:84 Function Call: baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21; ( global highp 4-component vector of float) +0:84 samplers: direct index for structure ( global structure{ global 4-element array of highp int /*tn*/}) +0:84 structUniform: direct index for structure ( uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers}) +0:84 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:84 Constant: +0:84 4 (const uint) +0:84 Constant: +0:84 4 (const int) +0:84 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) +0:84 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) +0:84 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) +0:84 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? Linker Objects 0:? 'o' ( out highp 4-component vector of float) -0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z} structUniform}) +0:? 'anon@0' (layout( column_major std140) uniform block{ uniform highp 4-component vector of float a, uniform highp 2-component vector of float b, uniform highp 2-component vector of float c, uniform 10-element array of highp 4-component vector of float d, uniform structure{ global highp 2-component vector of float x, global highp float y, global highp uint z, global highp int /*t0*/, global structure{ global 4-element array of highp int /*tn*/} samplers} structUniform}) +0:? 'structUniform.t0' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[0]' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[1]' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[2]' ( uniform highp sampler2D) +0:? 'structUniform.samplers.tn[3]' ( uniform highp sampler2D) 0:? 't1' ( uniform highp sampler2D) 0:? 'anon@1' (layout( column_major std140) uniform block{layout( column_major std140) uniform highp float j, layout( column_major std140) uniform highp 4-component vector of float k}) 0:? 'bufferInstance' (layout( column_major std430) buffer block{layout( column_major std430) buffer highp float j, layout( column_major std430) buffer highp 4-component vector of float k}) @@ -554,93 +666,125 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 163 +// Id's are bound by 216 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 159 + EntryPoint Fragment 4 "main" 190 ExecutionMode 4 OriginUpperLeft Source GLSL 460 Name 4 "main" Name 8 "bar(" Name 13 "foo(" - Name 16 "j" - Name 18 "gl_AtomicCounterBlock_0" - MemberName 18(gl_AtomicCounterBlock_0) 0 "counter1" - MemberName 18(gl_AtomicCounterBlock_0) 1 "counter2" - Name 20 "" - Name 63 "gl_AtomicCounterBlock_1" - MemberName 63(gl_AtomicCounterBlock_1) 0 "counter3" - Name 65 "" - Name 73 "f" - Name 74 "UniformBlock" - MemberName 74(UniformBlock) 0 "j" - MemberName 74(UniformBlock) 1 "k" - Name 76 "" - Name 80 "BufferBlock" - MemberName 80(BufferBlock) 0 "j" - MemberName 80(BufferBlock) 1 "k" - Name 82 "bufferInstance" - Name 89 "e" - MemberName 89(e) 0 "x" - MemberName 89(e) 1 "y" - MemberName 89(e) 2 "z" - Name 90 "gl_DefaultUniformBlock" - MemberName 90(gl_DefaultUniformBlock) 0 "a" - MemberName 90(gl_DefaultUniformBlock) 1 "b" - MemberName 90(gl_DefaultUniformBlock) 2 "c" - MemberName 90(gl_DefaultUniformBlock) 3 "d" - MemberName 90(gl_DefaultUniformBlock) 4 "structUniform" - Name 92 "" - Name 103 "v2" - Name 114 "v4" - Name 137 "t1" - Name 155 "j" - Name 159 "o" - MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Coherent - MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Volatile - MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Coherent - MemberDecorate 18(gl_AtomicCounterBlock_0) 0 Offset 0 - MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Coherent - MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Volatile - MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Coherent - MemberDecorate 18(gl_AtomicCounterBlock_0) 1 Offset 4 - Decorate 18(gl_AtomicCounterBlock_0) BufferBlock - Decorate 20 DescriptorSet 0 - Decorate 20 Binding 4 - MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Coherent - MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Volatile - MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Coherent - MemberDecorate 63(gl_AtomicCounterBlock_1) 0 Offset 0 - Decorate 63(gl_AtomicCounterBlock_1) BufferBlock - Decorate 65 DescriptorSet 0 - Decorate 65 Binding 5 - MemberDecorate 74(UniformBlock) 0 Offset 0 - MemberDecorate 74(UniformBlock) 1 Offset 16 - Decorate 74(UniformBlock) Block - Decorate 76 DescriptorSet 0 - Decorate 76 Binding 2 - MemberDecorate 80(BufferBlock) 0 Offset 0 - MemberDecorate 80(BufferBlock) 1 Offset 16 - Decorate 80(BufferBlock) BufferBlock - Decorate 82(bufferInstance) DescriptorSet 0 - Decorate 82(bufferInstance) Binding 3 - Decorate 88 ArrayStride 16 - MemberDecorate 89(e) 0 Offset 0 - MemberDecorate 89(e) 1 Offset 8 - MemberDecorate 89(e) 2 Offset 12 - MemberDecorate 90(gl_DefaultUniformBlock) 0 Offset 0 - MemberDecorate 90(gl_DefaultUniformBlock) 1 Offset 16 - MemberDecorate 90(gl_DefaultUniformBlock) 2 Offset 24 - MemberDecorate 90(gl_DefaultUniformBlock) 3 Offset 32 - MemberDecorate 90(gl_DefaultUniformBlock) 4 Offset 192 - Decorate 90(gl_DefaultUniformBlock) Block - Decorate 92 DescriptorSet 0 - Decorate 92 Binding 0 - Decorate 137(t1) DescriptorSet 0 - Decorate 137(t1) Binding 1 - Decorate 159(o) Location 0 + Name 18 "SamplerArray" + MemberName 18(SamplerArray) 0 "/*tn*/" + Name 29 "baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21;" + Name 24 "samplers" + Name 25 "samplers.tn[0]" + Name 26 "samplers.tn[1]" + Name 27 "samplers.tn[2]" + Name 28 "samplers.tn[3]" + Name 32 "j" + Name 34 "gl_AtomicCounterBlock_0" + MemberName 34(gl_AtomicCounterBlock_0) 0 "counter1" + MemberName 34(gl_AtomicCounterBlock_0) 1 "counter2" + Name 36 "" + Name 78 "gl_AtomicCounterBlock_1" + MemberName 78(gl_AtomicCounterBlock_1) 0 "counter3" + Name 80 "" + Name 88 "f" + Name 89 "UniformBlock" + MemberName 89(UniformBlock) 0 "j" + MemberName 89(UniformBlock) 1 "k" + Name 91 "" + Name 95 "BufferBlock" + MemberName 95(BufferBlock) 0 "j" + MemberName 95(BufferBlock) 1 "k" + Name 97 "bufferInstance" + Name 105 "SamplerArray" + MemberName 105(SamplerArray) 0 "/*tn*/" + Name 106 "e" + MemberName 106(e) 0 "x" + MemberName 106(e) 1 "y" + MemberName 106(e) 2 "z" + MemberName 106(e) 3 "/*t0*/" + MemberName 106(e) 4 "samplers" + Name 107 "gl_DefaultUniformBlock" + MemberName 107(gl_DefaultUniformBlock) 0 "a" + MemberName 107(gl_DefaultUniformBlock) 1 "b" + MemberName 107(gl_DefaultUniformBlock) 2 "c" + MemberName 107(gl_DefaultUniformBlock) 3 "d" + MemberName 107(gl_DefaultUniformBlock) 4 "structUniform" + Name 109 "" + Name 120 "v2" + Name 131 "v4" + Name 151 "t1" + Name 157 "structUniform.t0" + Name 186 "j" + Name 190 "o" + Name 194 "structUniform.samplers.tn[0]" + Name 195 "structUniform.samplers.tn[1]" + Name 196 "structUniform.samplers.tn[2]" + Name 197 "structUniform.samplers.tn[3]" + Name 198 "param" + MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Coherent + MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Volatile + MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Coherent + MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Offset 0 + MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Coherent + MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Volatile + MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Coherent + MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Offset 4 + Decorate 34(gl_AtomicCounterBlock_0) BufferBlock + Decorate 36 DescriptorSet 0 + Decorate 36 Binding 9 + MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Coherent + MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Volatile + MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Coherent + MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Offset 0 + Decorate 78(gl_AtomicCounterBlock_1) BufferBlock + Decorate 80 DescriptorSet 0 + Decorate 80 Binding 10 + MemberDecorate 89(UniformBlock) 0 Offset 0 + MemberDecorate 89(UniformBlock) 1 Offset 16 + Decorate 89(UniformBlock) Block + Decorate 91 DescriptorSet 0 + Decorate 91 Binding 7 + MemberDecorate 95(BufferBlock) 0 Offset 0 + MemberDecorate 95(BufferBlock) 1 Offset 16 + Decorate 95(BufferBlock) BufferBlock + Decorate 97(bufferInstance) DescriptorSet 0 + Decorate 97(bufferInstance) Binding 8 + Decorate 103 ArrayStride 16 + Decorate 104 ArrayStride 16 + MemberDecorate 105(SamplerArray) 0 Offset 0 + MemberDecorate 106(e) 0 Offset 0 + MemberDecorate 106(e) 1 Offset 8 + MemberDecorate 106(e) 2 Offset 12 + MemberDecorate 106(e) 3 Offset 16 + MemberDecorate 106(e) 4 Offset 32 + MemberDecorate 107(gl_DefaultUniformBlock) 0 Offset 0 + MemberDecorate 107(gl_DefaultUniformBlock) 1 Offset 16 + MemberDecorate 107(gl_DefaultUniformBlock) 2 Offset 24 + MemberDecorate 107(gl_DefaultUniformBlock) 3 Offset 32 + MemberDecorate 107(gl_DefaultUniformBlock) 4 Offset 192 + Decorate 107(gl_DefaultUniformBlock) Block + Decorate 109 DescriptorSet 0 + Decorate 109 Binding 0 + Decorate 151(t1) DescriptorSet 0 + Decorate 151(t1) Binding 6 + Decorate 157(structUniform.t0) DescriptorSet 0 + Decorate 157(structUniform.t0) Binding 1 + Decorate 190(o) Location 0 + Decorate 194(structUniform.samplers.tn[0]) DescriptorSet 0 + Decorate 194(structUniform.samplers.tn[0]) Binding 2 + Decorate 195(structUniform.samplers.tn[1]) DescriptorSet 0 + Decorate 195(structUniform.samplers.tn[1]) Binding 3 + Decorate 196(structUniform.samplers.tn[2]) DescriptorSet 0 + Decorate 196(structUniform.samplers.tn[2]) Binding 4 + Decorate 197(structUniform.samplers.tn[3]) DescriptorSet 0 + Decorate 197(structUniform.samplers.tn[3]) Binding 5 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -648,179 +792,236 @@ gl_FragCoord origin is upper left 10: TypeFloat 32 11: TypeVector 10(float) 4 12: TypeFunction 11(fvec4) - 15: TypePointer Function 6(int) - 17: 6(int) Constant 0 -18(gl_AtomicCounterBlock_0): TypeStruct 6(int) 6(int) - 19: TypePointer Uniform 18(gl_AtomicCounterBlock_0) - 20: 19(ptr) Variable Uniform - 21: TypeInt 32 1 - 22: 21(int) Constant 0 - 23: TypePointer Uniform 6(int) - 25: 6(int) Constant 1 - 28: 6(int) Constant 4294967295 - 60: 21(int) Constant 1 -63(gl_AtomicCounterBlock_1): TypeStruct 6(int) - 64: TypePointer Uniform 63(gl_AtomicCounterBlock_1) - 65: 64(ptr) Variable Uniform - 68: 6(int) Constant 72 - 72: TypePointer Function 10(float) -74(UniformBlock): TypeStruct 10(float) 11(fvec4) - 75: TypePointer Uniform 74(UniformBlock) - 76: 75(ptr) Variable Uniform - 77: TypePointer Uniform 10(float) - 80(BufferBlock): TypeStruct 10(float) 11(fvec4) - 81: TypePointer Uniform 80(BufferBlock) -82(bufferInstance): 81(ptr) Variable Uniform - 86: TypeVector 10(float) 2 - 87: 6(int) Constant 10 - 88: TypeArray 11(fvec4) 87 - 89(e): TypeStruct 86(fvec2) 10(float) 6(int) -90(gl_DefaultUniformBlock): TypeStruct 11(fvec4) 86(fvec2) 86(fvec2) 88 89(e) - 91: TypePointer Uniform 90(gl_DefaultUniformBlock) - 92: 91(ptr) Variable Uniform - 93: 21(int) Constant 4 - 97: 21(int) Constant 2 - 102: TypePointer Function 86(fvec2) - 104: TypePointer Uniform 86(fvec2) - 113: TypePointer Function 11(fvec4) - 115: TypePointer Uniform 11(fvec4) - 118: 21(int) Constant 3 - 134: TypeImage 10(float) 2D sampled format:Unknown - 135: TypeSampledImage 134 - 136: TypePointer UniformConstant 135 - 137(t1): 136(ptr) Variable UniformConstant - 139: 10(float) Constant 0 - 140: 86(fvec2) ConstantComposite 139 139 - 146: 10(float) Constant 1065353216 - 158: TypePointer Output 11(fvec4) - 159(o): 158(ptr) Variable Output + 15: TypeInt 32 1 + 16: 6(int) Constant 4 + 17: TypeArray 15(int) 16 +18(SamplerArray): TypeStruct 17 + 19: TypePointer Function 18(SamplerArray) + 20: TypeImage 10(float) 2D sampled format:Unknown + 21: TypeSampledImage 20 + 22: TypePointer UniformConstant 21 + 23: TypeFunction 11(fvec4) 19(ptr) 22(ptr) 22(ptr) 22(ptr) 22(ptr) + 31: TypePointer Function 6(int) + 33: 6(int) Constant 0 +34(gl_AtomicCounterBlock_0): TypeStruct 6(int) 6(int) + 35: TypePointer Uniform 34(gl_AtomicCounterBlock_0) + 36: 35(ptr) Variable Uniform + 37: 15(int) Constant 0 + 38: TypePointer Uniform 6(int) + 40: 6(int) Constant 1 + 43: 6(int) Constant 4294967295 + 75: 15(int) Constant 1 +78(gl_AtomicCounterBlock_1): TypeStruct 6(int) + 79: TypePointer Uniform 78(gl_AtomicCounterBlock_1) + 80: 79(ptr) Variable Uniform + 83: 6(int) Constant 72 + 87: TypePointer Function 10(float) +89(UniformBlock): TypeStruct 10(float) 11(fvec4) + 90: TypePointer Uniform 89(UniformBlock) + 91: 90(ptr) Variable Uniform + 92: TypePointer Uniform 10(float) + 95(BufferBlock): TypeStruct 10(float) 11(fvec4) + 96: TypePointer Uniform 95(BufferBlock) +97(bufferInstance): 96(ptr) Variable Uniform + 101: TypeVector 10(float) 2 + 102: 6(int) Constant 10 + 103: TypeArray 11(fvec4) 102 + 104: TypeArray 15(int) 16 +105(SamplerArray): TypeStruct 104 + 106(e): TypeStruct 101(fvec2) 10(float) 6(int) 15(int) 105(SamplerArray) +107(gl_DefaultUniformBlock): TypeStruct 11(fvec4) 101(fvec2) 101(fvec2) 103 106(e) + 108: TypePointer Uniform 107(gl_DefaultUniformBlock) + 109: 108(ptr) Variable Uniform + 110: 15(int) Constant 4 + 114: 15(int) Constant 2 + 119: TypePointer Function 101(fvec2) + 121: TypePointer Uniform 101(fvec2) + 130: TypePointer Function 11(fvec4) + 132: TypePointer Uniform 11(fvec4) + 135: 15(int) Constant 3 + 151(t1): 22(ptr) Variable UniformConstant + 153: 10(float) Constant 0 + 154: 101(fvec2) ConstantComposite 153 153 +157(structUniform.t0): 22(ptr) Variable UniformConstant + 164: 10(float) Constant 1065353216 + 189: TypePointer Output 11(fvec4) + 190(o): 189(ptr) Variable Output +194(structUniform.samplers.tn[0]): 22(ptr) Variable UniformConstant +195(structUniform.samplers.tn[1]): 22(ptr) Variable UniformConstant +196(structUniform.samplers.tn[2]): 22(ptr) Variable UniformConstant +197(structUniform.samplers.tn[3]): 22(ptr) Variable UniformConstant + 199: TypePointer Uniform 105(SamplerArray) + 203: TypePointer Function 17 + 206: TypePointer Function 15(int) 4(main): 2 Function None 3 5: Label - 155(j): 72(ptr) Variable Function - 156: 6(int) FunctionCall 8(bar() - 157: 10(float) ConvertUToF 156 - Store 155(j) 157 - 160: 10(float) Load 155(j) - 161: 11(fvec4) FunctionCall 13(foo() - 162: 11(fvec4) VectorTimesScalar 161 160 - Store 159(o) 162 + 186(j): 87(ptr) Variable Function + 198(param): 19(ptr) Variable Function + 187: 6(int) FunctionCall 8(bar() + 188: 10(float) ConvertUToF 187 + Store 186(j) 188 + 191: 10(float) Load 186(j) + 192: 11(fvec4) FunctionCall 13(foo() + 193: 11(fvec4) VectorTimesScalar 192 191 + 200: 199(ptr) AccessChain 109 110 110 + 201:105(SamplerArray) Load 200 + 202: 104 CompositeExtract 201 0 + 204: 203(ptr) AccessChain 198(param) 37 + 205: 15(int) CompositeExtract 202 0 + 207: 206(ptr) AccessChain 204 37 + Store 207 205 + 208: 15(int) CompositeExtract 202 1 + 209: 206(ptr) AccessChain 204 75 + Store 209 208 + 210: 15(int) CompositeExtract 202 2 + 211: 206(ptr) AccessChain 204 114 + Store 211 210 + 212: 15(int) CompositeExtract 202 3 + 213: 206(ptr) AccessChain 204 135 + Store 213 212 + 214: 11(fvec4) FunctionCall 29(baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21;) 198(param) 194(structUniform.samplers.tn[0]) 195(structUniform.samplers.tn[1]) 196(structUniform.samplers.tn[2]) 197(structUniform.samplers.tn[3]) + 215: 11(fvec4) FAdd 193 214 + Store 190(o) 215 Return FunctionEnd 8(bar(): 6(int) Function None 7 9: Label - 16(j): 15(ptr) Variable Function - Store 16(j) 17 - 24: 23(ptr) AccessChain 20 22 - 26: 6(int) AtomicIAdd 24 25 17 25 - Store 16(j) 26 - 27: 23(ptr) AccessChain 20 22 - 29: 6(int) AtomicIAdd 27 25 17 28 - 30: 6(int) ISub 29 25 - Store 16(j) 30 - 31: 23(ptr) AccessChain 20 22 - 32: 6(int) Load 31 - Store 16(j) 32 - 33: 23(ptr) AccessChain 20 22 - 34: 6(int) AtomicIAdd 33 25 17 25 - Store 16(j) 34 - 35: 23(ptr) AccessChain 20 22 - 36: 6(int) AtomicIAdd 35 25 17 28 - Store 16(j) 36 - 37: 23(ptr) AccessChain 20 22 - 38: 6(int) AtomicISub 37 25 17 25 - Store 16(j) 38 - 39: 23(ptr) AccessChain 20 22 - 40: 6(int) Load 16(j) - 41: 6(int) AtomicUMin 39 25 17 40 - Store 16(j) 41 - 42: 23(ptr) AccessChain 20 22 - 43: 6(int) Load 16(j) - 44: 6(int) AtomicUMax 42 25 17 43 - Store 16(j) 44 - 45: 23(ptr) AccessChain 20 22 - 46: 6(int) Load 16(j) - 47: 6(int) AtomicAnd 45 25 17 46 - Store 16(j) 47 - 48: 23(ptr) AccessChain 20 22 - 49: 6(int) Load 16(j) - 50: 6(int) AtomicOr 48 25 17 49 - Store 16(j) 50 - 51: 23(ptr) AccessChain 20 22 - 52: 6(int) Load 16(j) - 53: 6(int) AtomicXor 51 25 17 52 - Store 16(j) 53 - 54: 23(ptr) AccessChain 20 22 - 55: 6(int) Load 16(j) - 56: 6(int) AtomicExchange 54 25 17 55 - Store 16(j) 56 - 57: 23(ptr) AccessChain 20 22 - 58: 6(int) Load 16(j) - 59: 6(int) AtomicCompareExchange 57 25 17 17 58 17 - Store 16(j) 59 - 61: 23(ptr) AccessChain 20 60 - 62: 6(int) AtomicIAdd 61 25 17 25 - 66: 23(ptr) AccessChain 65 22 - 67: 6(int) AtomicIAdd 66 25 17 25 - MemoryBarrier 25 68 - 69: 6(int) Load 16(j) - ReturnValue 69 + 32(j): 31(ptr) Variable Function + Store 32(j) 33 + 39: 38(ptr) AccessChain 36 37 + 41: 6(int) AtomicIAdd 39 40 33 40 + Store 32(j) 41 + 42: 38(ptr) AccessChain 36 37 + 44: 6(int) AtomicIAdd 42 40 33 43 + 45: 6(int) ISub 44 40 + Store 32(j) 45 + 46: 38(ptr) AccessChain 36 37 + 47: 6(int) Load 46 + Store 32(j) 47 + 48: 38(ptr) AccessChain 36 37 + 49: 6(int) AtomicIAdd 48 40 33 40 + Store 32(j) 49 + 50: 38(ptr) AccessChain 36 37 + 51: 6(int) AtomicIAdd 50 40 33 43 + Store 32(j) 51 + 52: 38(ptr) AccessChain 36 37 + 53: 6(int) AtomicISub 52 40 33 40 + Store 32(j) 53 + 54: 38(ptr) AccessChain 36 37 + 55: 6(int) Load 32(j) + 56: 6(int) AtomicUMin 54 40 33 55 + Store 32(j) 56 + 57: 38(ptr) AccessChain 36 37 + 58: 6(int) Load 32(j) + 59: 6(int) AtomicUMax 57 40 33 58 + Store 32(j) 59 + 60: 38(ptr) AccessChain 36 37 + 61: 6(int) Load 32(j) + 62: 6(int) AtomicAnd 60 40 33 61 + Store 32(j) 62 + 63: 38(ptr) AccessChain 36 37 + 64: 6(int) Load 32(j) + 65: 6(int) AtomicOr 63 40 33 64 + Store 32(j) 65 + 66: 38(ptr) AccessChain 36 37 + 67: 6(int) Load 32(j) + 68: 6(int) AtomicXor 66 40 33 67 + Store 32(j) 68 + 69: 38(ptr) AccessChain 36 37 + 70: 6(int) Load 32(j) + 71: 6(int) AtomicExchange 69 40 33 70 + Store 32(j) 71 + 72: 38(ptr) AccessChain 36 37 + 73: 6(int) Load 32(j) + 74: 6(int) AtomicCompareExchange 72 40 33 33 73 33 + Store 32(j) 74 + 76: 38(ptr) AccessChain 36 75 + 77: 6(int) AtomicIAdd 76 40 33 40 + 81: 38(ptr) AccessChain 80 37 + 82: 6(int) AtomicIAdd 81 40 33 40 + MemoryBarrier 40 83 + 84: 6(int) Load 32(j) + ReturnValue 84 FunctionEnd 13(foo(): 11(fvec4) Function None 12 14: Label - 73(f): 72(ptr) Variable Function - 103(v2): 102(ptr) Variable Function - 114(v4): 113(ptr) Variable Function - 78: 77(ptr) AccessChain 76 22 - 79: 10(float) Load 78 - 83: 77(ptr) AccessChain 82(bufferInstance) 22 - 84: 10(float) Load 83 - 85: 10(float) FAdd 79 84 - 94: 77(ptr) AccessChain 92 93 60 - 95: 10(float) Load 94 - 96: 10(float) FAdd 85 95 - 98: 23(ptr) AccessChain 92 93 97 - 99: 6(int) Load 98 - 100: 10(float) ConvertUToF 99 - 101: 10(float) FAdd 96 100 - Store 73(f) 101 - 105: 104(ptr) AccessChain 92 60 - 106: 86(fvec2) Load 105 - 107: 104(ptr) AccessChain 92 97 - 108: 86(fvec2) Load 107 - 109: 86(fvec2) FAdd 106 108 - 110: 104(ptr) AccessChain 92 93 22 - 111: 86(fvec2) Load 110 - 112: 86(fvec2) FAdd 109 111 - Store 103(v2) 112 - 116: 115(ptr) AccessChain 92 22 - 117: 11(fvec4) Load 116 - 119: 115(ptr) AccessChain 92 118 22 - 120: 11(fvec4) Load 119 - 121: 11(fvec4) FAdd 117 120 - 122: 115(ptr) AccessChain 92 118 60 - 123: 11(fvec4) Load 122 - 124: 11(fvec4) FAdd 121 123 - 125: 115(ptr) AccessChain 92 118 97 - 126: 11(fvec4) Load 125 - 127: 11(fvec4) FAdd 124 126 - 128: 115(ptr) AccessChain 76 60 - 129: 11(fvec4) Load 128 - 130: 11(fvec4) FAdd 127 129 - 131: 115(ptr) AccessChain 82(bufferInstance) 60 - 132: 11(fvec4) Load 131 - 133: 11(fvec4) FAdd 130 132 - 138: 135 Load 137(t1) - 141: 11(fvec4) ImageSampleImplicitLod 138 140 - 142: 11(fvec4) FAdd 133 141 - Store 114(v4) 142 - 143: 10(float) Load 73(f) - 144: 11(fvec4) CompositeConstruct 143 143 143 143 - 145: 86(fvec2) Load 103(v2) - 147: 10(float) CompositeExtract 145 0 - 148: 10(float) CompositeExtract 145 1 - 149: 11(fvec4) CompositeConstruct 147 148 146 146 - 150: 11(fvec4) FMul 144 149 - 151: 11(fvec4) Load 114(v4) - 152: 11(fvec4) FMul 150 151 - ReturnValue 152 + 88(f): 87(ptr) Variable Function + 120(v2): 119(ptr) Variable Function + 131(v4): 130(ptr) Variable Function + 93: 92(ptr) AccessChain 91 37 + 94: 10(float) Load 93 + 98: 92(ptr) AccessChain 97(bufferInstance) 37 + 99: 10(float) Load 98 + 100: 10(float) FAdd 94 99 + 111: 92(ptr) AccessChain 109 110 75 + 112: 10(float) Load 111 + 113: 10(float) FAdd 100 112 + 115: 38(ptr) AccessChain 109 110 114 + 116: 6(int) Load 115 + 117: 10(float) ConvertUToF 116 + 118: 10(float) FAdd 113 117 + Store 88(f) 118 + 122: 121(ptr) AccessChain 109 75 + 123: 101(fvec2) Load 122 + 124: 121(ptr) AccessChain 109 114 + 125: 101(fvec2) Load 124 + 126: 101(fvec2) FAdd 123 125 + 127: 121(ptr) AccessChain 109 110 37 + 128: 101(fvec2) Load 127 + 129: 101(fvec2) FAdd 126 128 + Store 120(v2) 129 + 133: 132(ptr) AccessChain 109 37 + 134: 11(fvec4) Load 133 + 136: 132(ptr) AccessChain 109 135 37 + 137: 11(fvec4) Load 136 + 138: 11(fvec4) FAdd 134 137 + 139: 132(ptr) AccessChain 109 135 75 + 140: 11(fvec4) Load 139 + 141: 11(fvec4) FAdd 138 140 + 142: 132(ptr) AccessChain 109 135 114 + 143: 11(fvec4) Load 142 + 144: 11(fvec4) FAdd 141 143 + 145: 132(ptr) AccessChain 91 75 + 146: 11(fvec4) Load 145 + 147: 11(fvec4) FAdd 144 146 + 148: 132(ptr) AccessChain 97(bufferInstance) 75 + 149: 11(fvec4) Load 148 + 150: 11(fvec4) FAdd 147 149 + 152: 21 Load 151(t1) + 155: 11(fvec4) ImageSampleImplicitLod 152 154 + 156: 11(fvec4) FAdd 150 155 + 158: 21 Load 157(structUniform.t0) + 159: 11(fvec4) ImageSampleImplicitLod 158 154 + 160: 11(fvec4) FAdd 156 159 + Store 131(v4) 160 + 161: 10(float) Load 88(f) + 162: 11(fvec4) CompositeConstruct 161 161 161 161 + 163: 101(fvec2) Load 120(v2) + 165: 10(float) CompositeExtract 163 0 + 166: 10(float) CompositeExtract 163 1 + 167: 11(fvec4) CompositeConstruct 165 166 164 164 + 168: 11(fvec4) FMul 162 167 + 169: 11(fvec4) Load 131(v4) + 170: 11(fvec4) FMul 168 169 + ReturnValue 170 + FunctionEnd +29(baz(struct-SamplerArray-s21[4]1;s21;s21;s21;s21;): 11(fvec4) Function None 23 + 24(samplers): 19(ptr) FunctionParameter +25(samplers.tn[0]): 22(ptr) FunctionParameter +26(samplers.tn[1]): 22(ptr) FunctionParameter +27(samplers.tn[2]): 22(ptr) FunctionParameter +28(samplers.tn[3]): 22(ptr) FunctionParameter + 30: Label + 173: 21 Load 25(samplers.tn[0]) + 174: 11(fvec4) ImageSampleImplicitLod 173 154 + 175: 21 Load 26(samplers.tn[1]) + 176: 11(fvec4) ImageSampleImplicitLod 175 154 + 177: 11(fvec4) FAdd 174 176 + 178: 21 Load 27(samplers.tn[2]) + 179: 11(fvec4) ImageSampleImplicitLod 178 154 + 180: 11(fvec4) FAdd 177 179 + 181: 21 Load 28(samplers.tn[3]) + 182: 11(fvec4) ImageSampleImplicitLod 181 154 + 183: 11(fvec4) FAdd 180 182 + ReturnValue 183 FunctionEnd diff --git a/Test/vk.relaxed.frag b/Test/vk.relaxed.frag index d43416e0c0..3dd3c172de 100644 --- a/Test/vk.relaxed.frag +++ b/Test/vk.relaxed.frag @@ -7,10 +7,17 @@ uniform vec4 a; uniform vec2 b = vec2(0, 0); // initializer will be ignored layout(location = 0) uniform vec2 c; // location qualifier will be ignored uniform vec4 d[10]; + +struct SamplerArray{ + sampler2D tn[4]; +}; + uniform struct e { vec2 x; float y; uint z; + sampler2D t0; + SamplerArray samplers; } structUniform; // opaque types will not be grouped into uniform block @@ -64,11 +71,15 @@ uint bar() { vec4 foo() { float f = j + bufferInstance.j + structUniform.y + structUniform.z; vec2 v2 = b + c + structUniform.x; - vec4 v4 = a + d[0] + d[1] + d[2] + k + bufferInstance.k + texture(t1, vec2(0, 0)); + vec4 v4 = a + d[0] + d[1] + d[2] + k + bufferInstance.k + texture(t1, vec2(0, 0)) + texture(structUniform.t0, vec2(0, 0)); return vec4(f) * vec4(v2, 1, 1) * v4; } +vec4 baz(SamplerArray samplers) { + return texture(samplers.tn[0], vec2(0, 0)) + texture(samplers.tn[1], vec2(0, 0)) + texture(samplers.tn[2], vec2(0, 0)) + texture(samplers.tn[3], vec2(0, 0)); +} + void main() { float j = float(bar()); - o = j * foo(); -} \ No newline at end of file + o = j * foo() + baz(structUniform.samplers); +} diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 5d3fc8afe7..45deed708c 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2317,6 +2317,40 @@ TIntermAggregate* TIntermediate::growAggregate(TIntermNode* left, TIntermNode* r return aggNode; } +TIntermAggregate* TIntermediate::mergeAggregate(TIntermNode* left, TIntermNode* right) +{ + if (left == nullptr && right == nullptr) + return nullptr; + + TIntermAggregate* aggNode = nullptr; + if (left != nullptr) + aggNode = left->getAsAggregate(); + if (aggNode == nullptr || aggNode->getOp() != EOpNull) { + aggNode = new TIntermAggregate; + if (left != nullptr) + aggNode->getSequence().push_back(left); + } + + TIntermAggregate* rhsagg = right->getAsAggregate(); + if (rhsagg == nullptr || rhsagg->getOp() != EOpNull) + aggNode->getSequence().push_back(right); + else + aggNode->getSequence().insert(aggNode->getSequence().end(), + rhsagg->getSequence().begin(), + rhsagg->getSequence().end()); + + return aggNode; +} + +TIntermAggregate* TIntermediate::mergeAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc& loc) +{ + TIntermAggregate* aggNode = mergeAggregate(left, right); + if (aggNode) + aggNode->setLoc(loc); + + return aggNode; +} + // // Turn an existing node into an aggregate. // diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 9b11967275..8e8bcd8869 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -722,6 +722,24 @@ void TParseContextBase::finish() if (parsingBuiltins) return; + for (const TString& relaxedSymbol : relaxedSymbols) + { + TSymbol* symbol = symbolTable.find(relaxedSymbol); + TType& type = symbol->getWritableType(); + for (const TTypeLoc& typeLoc : *type.getStruct()) + { + if (typeLoc.type->isOpaque()) + { + typeLoc.type->getSampler() = TSampler{}; + typeLoc.type->setBasicType(EbtInt); + TString fieldName("/*"); + fieldName.append(typeLoc.type->getFieldName()); + fieldName.append("*/"); + typeLoc.type->setFieldName(fieldName); + } + } + } + // Transfer the linkage symbols to AST nodes, preserving order. TIntermAggregate* linkage = new TIntermAggregate; for (auto i = linkageSymbols.begin(); i != linkageSymbols.end(); ++i) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 0dad047d75..7bcfce0ac6 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -993,17 +993,25 @@ TIntermTyped* TParseContext::handleDotDereference(const TSourceLoc& loc, TInterm break; } } + if (fieldFound) { - if (base->getType().getQualifier().isFrontEndConstant()) - result = intermediate.foldDereference(base, member, loc); - else { - blockMemberExtensionCheck(loc, base, member, field); - TIntermTyped* index = intermediate.addConstantUnion(member, loc); - result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc); - result->setType(*(*fields)[member].type); - if ((*fields)[member].type->getQualifier().isIo()) - intermediate.addIoAccessed(field); + if (spvVersion.vulkan != 0 && spvVersion.vulkanRelaxed) + result = vkRelaxedRemapDotDereference(loc, *base, *(*fields)[member].type, field); + + if (result == base) + { + if (base->getType().getQualifier().isFrontEndConstant()) + result = intermediate.foldDereference(base, member, loc); + else { + blockMemberExtensionCheck(loc, base, member, field); + TIntermTyped* index = intermediate.addConstantUnion(member, loc); + result = intermediate.addIndex(EOpIndexDirectStruct, base, index, loc); + result->setType(*(*fields)[member].type); + if ((*fields)[member].type->getQualifier().isIo()) + intermediate.addIoAccessed(field); + } } + inheritMemoryQualifiers(base->getQualifier(), result->getWritableType().getQualifier()); } else { auto baseSymbol = base; @@ -7357,12 +7365,14 @@ void TParseContext::coopMatTypeParametersCheck(const TSourceLoc& loc, const TPub } } -bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType&, +bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString& identifier, const TPublicType& publicType, TArraySizes*, TIntermTyped* initializer, TType& type) { + vkRelaxedRemapUniformMembers(loc, publicType, type, identifier); + if (parsingBuiltins || symbolTable.atBuiltInLevel() || !symbolTable.atGlobalLevel() || type.getQualifier().storage != EvqUniform || - !(type.containsNonOpaque()|| type.getBasicType() == EbtAtomicUint)) { + !(type.containsNonOpaque() || type.getBasicType() == EbtAtomicUint || (type.containsSampler() && type.isStruct()))) { return false; } @@ -7436,6 +7446,251 @@ bool TParseContext::vkRelaxedRemapUniformVariable(const TSourceLoc& loc, TString return true; } +template +static void ForEachOpaque(const TType& type, const TString& path, Function callback) +{ + auto recursion = [&callback](const TType& type, const TString& path, bool skipArray, auto& recursion) -> void { + if (!skipArray && type.isArray()) + { + std::vector indices(type.getArraySizes()->getNumDims()); + for (int flatIndex = 0; + flatIndex < type.getArraySizes()->getCumulativeSize(); + ++flatIndex) + { + TString subscriptPath = path; + for (int dimIndex = 0; dimIndex < indices.size(); ++dimIndex) + { + int index = indices[dimIndex]; + subscriptPath.append("["); + subscriptPath.append(String(index)); + subscriptPath.append("]"); + } + + recursion(type, subscriptPath, true, recursion); + + for (int dimIndex = 0; dimIndex < indices.size(); ++dimIndex) + { + ++indices[dimIndex]; + if (indices[dimIndex] < type.getArraySizes()->getDimSize(dimIndex)) + break; + else + indices[dimIndex] = 0; + } + } + } + + else if (type.isStruct() && type.containsOpaque()) + { + const TTypeList& types = *type.getStruct(); + for (const TTypeLoc& typeLoc : types) + { + TString nextPath = path; + nextPath.append("."); + nextPath.append(typeLoc.type->getFieldName()); + + recursion(*(typeLoc.type), nextPath, false, recursion); + } + } + + else if (type.isOpaque()) + { + callback(type, path); + } + }; + + recursion(type, path, false, recursion); +} + +void TParseContext::vkRelaxedRemapUniformMembers(const TSourceLoc& loc, const TPublicType& publicType, const TType& type, + const TString& identifier) +{ + if (!type.isStruct() || !type.containsOpaque()) + return; + + ForEachOpaque(type, identifier, + [&publicType, &loc, this](const TType& type, const TString& path) { + TArraySizes arraySizes = {}; + if (type.getArraySizes()) arraySizes = *type.getArraySizes(); + TTypeParameters typeParameters = {}; + if (type.getTypeParameters()) typeParameters = *type.getTypeParameters(); + + TPublicType memberType{}; + memberType.basicType = type.getBasicType(); + memberType.sampler = type.getSampler(); + memberType.qualifier = type.getQualifier(); + memberType.vectorSize = type.getVectorSize(); + memberType.matrixCols = type.getMatrixCols(); + memberType.matrixRows = type.getMatrixRows(); + memberType.coopmatNV = type.isCoopMatNV(); + memberType.coopmatKHR = type.isCoopMatKHR(); + memberType.arraySizes = nullptr; + memberType.userDef = nullptr; + memberType.loc = loc; + memberType.typeParameters = (type.getTypeParameters() ? &typeParameters : nullptr); + memberType.spirvType = nullptr; + + memberType.qualifier.storage = publicType.qualifier.storage; + memberType.shaderQualifiers = publicType.shaderQualifiers; + + TString& structMemberName = *NewPoolTString(path.c_str()); // A copy is required due to declareVariable() signature. + declareVariable(loc, structMemberName, memberType, nullptr, nullptr); + }); +} + +void TParseContext::vkRelaxedRemapFunctionParameter(const TSourceLoc& loc, TFunction* function, TParameter& param, std::vector* newParams) +{ + function->addParameter(param); + + if (!param.type->isStruct() || !param.type->containsOpaque()) + return; + + ForEachOpaque(*param.type, (param.name ? *param.name : param.type->getFieldName()), + [function, param, newParams](const TType& type, const TString& path) { + TString* memberName = NewPoolTString(path.c_str()); + + TType* memberType = new TType(); + memberType->shallowCopy(type); + memberType->getQualifier().storage = param.type->getQualifier().storage; + memberType->clearArraySizes(); + + TParameter memberParam = {}; + memberParam.name = memberName; + memberParam.type = memberType; + memberParam.defaultValue = nullptr; + function->addParameter(memberParam); + if (newParams) + newParams->push_back(function->getParamCount()-1); + }); +} + +// +// Generates a valid GLSL dereferencing string for the input TIntermNode +// +struct AccessChainTraverser : public TIntermTraverser { + AccessChainTraverser() : TIntermTraverser(false, false, true) + {} + + TString path = ""; + + bool visitBinary(TVisit, TIntermBinary* binary) override { + if (binary->getOp() == EOpIndexDirectStruct) + { + const TTypeList& members = *binary->getLeft()->getType().getStruct(); + const TTypeLoc& member = + members[binary->getRight()->getAsConstantUnion()->getConstArray()[0].getIConst()]; + TString memberName = member.type->getFieldName(); + + if (path != "") + path.append("."); + + path.append(memberName); + } + + if (binary->getOp() == EOpIndexDirect) + { + const TConstUnionArray& indices = binary->getRight()->getAsConstantUnion()->getConstArray(); + for (int index = 0; index < indices.size(); ++index) + { + path.append("["); + path.append(String(indices[index].getIConst())); + path.append("]"); + } + } + + return true; + } + + void visitSymbol(TIntermSymbol* symbol) override { + if (!IsAnonymous(symbol->getName())) + path.append(symbol->getName()); + } +}; + +TIntermNode* TParseContext::vkRelaxedRemapFunctionArgument(const TSourceLoc& loc, TFunction* function, TIntermTyped* intermTyped) +{ + AccessChainTraverser accessChainTraverser{}; + intermTyped->traverse(&accessChainTraverser); + + TParameter param = { NewPoolTString(accessChainTraverser.path.c_str()), new TType }; + param.type->shallowCopy(intermTyped->getType()); + + std::vector newParams = {}; + vkRelaxedRemapFunctionParameter(loc, function, param, &newParams); + + if (intermTyped->getType().isOpaque()) + { + TIntermNode* remappedArgument = intermTyped; + { + TIntermSymbol* intermSymbol = nullptr; + TSymbol* symbol = symbolTable.find(*param.name); + if (symbol && symbol->getAsVariable()) + intermSymbol = intermediate.addSymbol(*symbol->getAsVariable(), loc); + else + { + TVariable* variable = new TVariable(param.name, *param.type); + intermSymbol = intermediate.addSymbol(*variable, loc); + } + + remappedArgument = intermSymbol; + } + + return remappedArgument; + } + else if (!(intermTyped->isStruct() && intermTyped->getType().containsOpaque())) + return intermTyped; + else + { + TIntermNode* remappedArgument = intermTyped; + { + TSymbol* symbol = symbolTable.find(*param.name); + if (symbol && symbol->getAsVariable()) + remappedArgument = intermediate.addSymbol(*symbol->getAsVariable(), loc); + } + + if (!newParams.empty()) + remappedArgument = intermediate.makeAggregate(remappedArgument, loc); + + for (int paramIndex : newParams) + { + TParameter& newParam = function->operator[](paramIndex); + TIntermSymbol* intermSymbol = nullptr; + TSymbol* symbol = symbolTable.find(*newParam.name); + if (symbol && symbol->getAsVariable()) + intermSymbol = intermediate.addSymbol(*symbol->getAsVariable(), loc); + else + { + TVariable* variable = new TVariable(newParam.name, *newParam.type); + intermSymbol = intermediate.addSymbol(*variable, loc); + } + + remappedArgument = intermediate.growAggregate(remappedArgument, intermSymbol); + } + + return remappedArgument; + } +} + +TIntermTyped* TParseContext::vkRelaxedRemapDotDereference(const TSourceLoc&, TIntermTyped& base, const TType& member, + const TString& identifier) +{ + if (!member.isOpaque()) + return &base; + + AccessChainTraverser traverser{}; + base.traverse(&traverser); + if (!traverser.path.empty()) + traverser.path.append("."); + traverser.path.append(identifier); + + const TSymbol* symbol = symbolTable.find(traverser.path); + if (!symbol) + return &base; + + TIntermTyped* result = intermediate.addSymbol(*symbol->getAsVariable()); + result->setType(symbol->getType()); + return result; +} + // // Do everything necessary to handle a variable (non-block) declaration. // Either redeclaring a variable, or making a new one, updating the symbol diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 05ebca275d..4a08fd37e9 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -180,6 +180,7 @@ class TParseContextBase : public TParseVersions { // Basic parsing state, easily accessible to the grammar TSymbolTable& symbolTable; // symbol table that goes with the current language, version, and profile + TVector relaxedSymbols; int statementNestingLevel; // 0 if outside all flow control or compound statements int loopNestingLevel; // 0 if outside all loops int structNestingLevel; // 0 if outside structures @@ -367,6 +368,10 @@ class TParseContext : public TParseContextBase { TIntermTyped* vkRelaxedRemapFunctionCall(const TSourceLoc&, TFunction*, TIntermNode*); // returns true if the variable was remapped to something else bool vkRelaxedRemapUniformVariable(const TSourceLoc&, TString&, const TPublicType&, TArraySizes*, TIntermTyped*, TType&); + void vkRelaxedRemapUniformMembers(const TSourceLoc&, const TPublicType&, const TType&, const TString&); + void vkRelaxedRemapFunctionParameter(const TSourceLoc&, TFunction*, TParameter&, std::vector* newParams = nullptr); + TIntermNode* vkRelaxedRemapFunctionArgument(const TSourceLoc&, TFunction*, TIntermTyped*); + TIntermTyped* vkRelaxedRemapDotDereference(const TSourceLoc&, TIntermTyped&, const TType&, const TString&); void assignError(const TSourceLoc&, const char* op, TString left, TString right); void unaryOpError(const TSourceLoc&, const char* op, TString operand); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 99f0d388bc..c3aa23c4fc 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -492,18 +492,41 @@ function_call_header_no_parameters function_call_header_with_parameters : function_call_header assignment_expression { - TParameter param = { 0, new TType }; - param.type->shallowCopy($2->getType()); - $1.function->addParameter(param); - $$.function = $1.function; - $$.intermNode = $2; + if (parseContext.spvVersion.vulkan > 0 + && parseContext.spvVersion.vulkanRelaxed + && $2->getType().containsOpaque()) + { + $$.intermNode = parseContext.vkRelaxedRemapFunctionArgument($$.loc, $1.function, $2); + $$.function = $1.function; + } + else + { + TParameter param = { 0, new TType }; + param.type->shallowCopy($2->getType()); + + $1.function->addParameter(param); + $$.function = $1.function; + $$.intermNode = $2; + } } | function_call_header_with_parameters COMMA assignment_expression { - TParameter param = { 0, new TType }; - param.type->shallowCopy($3->getType()); - $1.function->addParameter(param); - $$.function = $1.function; - $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, $3, $2.loc); + if (parseContext.spvVersion.vulkan > 0 + && parseContext.spvVersion.vulkanRelaxed + && $3->getType().containsOpaque()) + { + TIntermNode* remappedNode = parseContext.vkRelaxedRemapFunctionArgument($2.loc, $1.function, $3); + $$.intermNode = parseContext.intermediate.mergeAggregate($1.intermNode, remappedNode, $2.loc); + $$.function = $1.function; + } + else + { + TParameter param = { 0, new TType }; + param.type->shallowCopy($3->getType()); + + $1.function->addParameter(param); + $$.function = $1.function; + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, $3, $2.loc); + } } ; @@ -980,7 +1003,12 @@ function_header_with_parameters // Add the parameter $$ = $1; if ($2.param.type->getBasicType() != EbtVoid) - $1->addParameter($2.param); + { + if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) + $1->addParameter($2.param); + else + parseContext.vkRelaxedRemapFunctionParameter($2.loc, $1, $2.param); + } else delete $2.param.type; } @@ -998,7 +1026,10 @@ function_header_with_parameters } else { // Add the parameter $$ = $1; - $1->addParameter($3.param); + if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) + $1->addParameter($3.param); + else + parseContext.vkRelaxedRemapFunctionParameter($3.loc, $1, $3.param); } } ; @@ -3549,11 +3580,17 @@ precision_qualifier struct_specifier : STRUCT IDENTIFIER LEFT_BRACE { parseContext.nestedStructCheck($1.loc); } struct_declaration_list RIGHT_BRACE { + TType* structure = new TType($5, *$2.string); parseContext.structArrayCheck($2.loc, *structure); + TVariable* userTypeDef = new TVariable($2.string, *structure, true); if (! parseContext.symbolTable.insert(*userTypeDef)) parseContext.error($2.loc, "redefinition", $2.string->c_str(), "struct"); + else if (parseContext.spvVersion.vulkanRelaxed + && structure->containsOpaque()) + parseContext.relaxedSymbols.push_back(structure->getTypeName()); + $$.init($1.loc); $$.basicType = EbtStruct; $$.userDef = structure; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 534bee13cb..190fcc3910 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1170,74 +1170,74 @@ static const yytype_int16 yyrline[] = 0, 362, 362, 368, 371, 376, 379, 382, 386, 389, 392, 396, 400, 404, 408, 412, 416, 422, 429, 432, 435, 438, 441, 446, 454, 461, 468, 474, 478, 485, - 488, 494, 501, 511, 519, 524, 551, 559, 565, 569, - 573, 593, 594, 595, 596, 602, 603, 608, 613, 622, - 623, 628, 636, 637, 643, 652, 653, 658, 663, 668, - 676, 677, 686, 698, 699, 708, 709, 718, 719, 728, - 729, 737, 738, 746, 747, 755, 756, 756, 774, 775, - 791, 795, 799, 803, 808, 812, 816, 820, 824, 828, - 832, 839, 842, 853, 860, 865, 872, 877, 882, 889, - 893, 897, 901, 906, 911, 920, 920, 931, 935, 942, - 947, 953, 959, 969, 972, 979, 987, 1007, 1030, 1045, - 1070, 1081, 1091, 1101, 1111, 1120, 1123, 1127, 1131, 1136, - 1144, 1149, 1154, 1159, 1164, 1173, 1183, 1210, 1219, 1226, - 1233, 1240, 1247, 1255, 1263, 1273, 1283, 1290, 1300, 1306, - 1309, 1316, 1320, 1324, 1332, 1341, 1344, 1355, 1358, 1361, - 1365, 1369, 1373, 1377, 1380, 1385, 1389, 1394, 1402, 1406, - 1411, 1417, 1423, 1430, 1435, 1440, 1448, 1453, 1465, 1479, - 1485, 1490, 1498, 1506, 1514, 1522, 1530, 1538, 1546, 1554, - 1562, 1569, 1576, 1580, 1585, 1590, 1595, 1600, 1605, 1610, - 1614, 1618, 1622, 1626, 1632, 1638, 1648, 1655, 1658, 1666, - 1673, 1684, 1689, 1697, 1701, 1711, 1714, 1720, 1726, 1731, - 1739, 1749, 1753, 1757, 1761, 1766, 1770, 1775, 1780, 1785, - 1790, 1795, 1800, 1805, 1810, 1815, 1821, 1827, 1833, 1838, - 1843, 1848, 1853, 1858, 1863, 1868, 1873, 1878, 1883, 1888, - 1893, 1900, 1905, 1910, 1915, 1920, 1925, 1930, 1935, 1940, - 1945, 1950, 1955, 1963, 1971, 1979, 1985, 1991, 1997, 2003, - 2009, 2015, 2021, 2027, 2033, 2039, 2045, 2051, 2057, 2063, - 2069, 2075, 2081, 2087, 2093, 2099, 2105, 2111, 2117, 2123, - 2129, 2135, 2141, 2147, 2153, 2159, 2165, 2171, 2177, 2185, - 2193, 2201, 2209, 2217, 2225, 2233, 2241, 2249, 2257, 2265, - 2273, 2279, 2285, 2291, 2297, 2303, 2309, 2315, 2321, 2327, - 2333, 2339, 2345, 2351, 2357, 2363, 2369, 2375, 2381, 2387, - 2393, 2399, 2405, 2411, 2417, 2423, 2429, 2435, 2441, 2447, - 2453, 2459, 2465, 2471, 2477, 2483, 2489, 2493, 2497, 2501, - 2506, 2511, 2516, 2521, 2526, 2531, 2536, 2541, 2546, 2551, - 2556, 2561, 2566, 2571, 2577, 2583, 2589, 2595, 2601, 2607, - 2613, 2619, 2625, 2631, 2637, 2643, 2649, 2654, 2659, 2664, - 2669, 2674, 2679, 2684, 2689, 2694, 2699, 2704, 2709, 2714, - 2719, 2724, 2729, 2734, 2739, 2744, 2749, 2754, 2759, 2764, - 2769, 2774, 2779, 2784, 2789, 2794, 2799, 2804, 2809, 2814, - 2820, 2826, 2831, 2836, 2841, 2847, 2852, 2857, 2862, 2868, - 2873, 2878, 2883, 2889, 2894, 2899, 2904, 2910, 2916, 2922, - 2928, 2933, 2939, 2945, 2951, 2956, 2961, 2966, 2971, 2976, - 2982, 2987, 2992, 2997, 3003, 3008, 3013, 3018, 3024, 3029, - 3034, 3039, 3045, 3050, 3055, 3060, 3066, 3071, 3076, 3081, - 3087, 3092, 3097, 3102, 3108, 3113, 3118, 3123, 3129, 3134, - 3139, 3144, 3150, 3155, 3160, 3165, 3171, 3176, 3181, 3186, - 3192, 3197, 3202, 3207, 3213, 3218, 3223, 3228, 3234, 3239, - 3244, 3249, 3255, 3260, 3265, 3270, 3276, 3281, 3286, 3291, - 3296, 3301, 3306, 3311, 3316, 3321, 3326, 3331, 3336, 3341, - 3346, 3351, 3356, 3361, 3366, 3371, 3376, 3381, 3386, 3391, - 3396, 3402, 3408, 3414, 3420, 3426, 3432, 3438, 3445, 3452, - 3458, 3464, 3470, 3476, 3483, 3490, 3497, 3504, 3508, 3512, - 3517, 3533, 3538, 3543, 3551, 3551, 3562, 3562, 3572, 3575, - 3588, 3610, 3637, 3641, 3647, 3652, 3663, 3666, 3672, 3678, - 3687, 3690, 3696, 3700, 3701, 3707, 3708, 3709, 3710, 3711, - 3712, 3713, 3714, 3718, 3726, 3727, 3731, 3727, 3743, 3744, - 3748, 3748, 3755, 3755, 3769, 3772, 3780, 3788, 3799, 3800, - 3804, 3807, 3814, 3821, 3825, 3833, 3837, 3850, 3853, 3860, - 3860, 3880, 3883, 3889, 3901, 3913, 3916, 3923, 3923, 3938, - 3938, 3956, 3956, 3977, 3980, 3986, 3989, 3995, 3999, 4006, - 4011, 4016, 4023, 4026, 4030, 4034, 4038, 4047, 4051, 4060, - 4063, 4066, 4074, 4074, 4116, 4121, 4124, 4129, 4132, 4137, - 4140, 4145, 4148, 4153, 4156, 4161, 4164, 4169, 4173, 4178, - 4182, 4187, 4191, 4198, 4201, 4206, 4209, 4212, 4215, 4218, - 4223, 4232, 4243, 4248, 4256, 4260, 4265, 4269, 4274, 4278, - 4283, 4287, 4294, 4297, 4302, 4305, 4308, 4311, 4316, 4319, - 4324, 4330, 4333, 4336, 4339, 4344, 4348, 4353, 4357, 4362, - 4366, 4373, 4376, 4381, 4384, 4389, 4392, 4398, 4401, 4406, - 4409 + 488, 494, 512, 534, 542, 547, 574, 582, 588, 592, + 596, 616, 617, 618, 619, 625, 626, 631, 636, 645, + 646, 651, 659, 660, 666, 675, 676, 681, 686, 691, + 699, 700, 709, 721, 722, 731, 732, 741, 742, 751, + 752, 760, 761, 769, 770, 778, 779, 779, 797, 798, + 814, 818, 822, 826, 831, 835, 839, 843, 847, 851, + 855, 862, 865, 876, 883, 888, 895, 900, 905, 912, + 916, 920, 924, 929, 934, 943, 943, 954, 958, 965, + 970, 976, 982, 992, 995, 1002, 1015, 1038, 1061, 1076, + 1101, 1112, 1122, 1132, 1142, 1151, 1154, 1158, 1162, 1167, + 1175, 1180, 1185, 1190, 1195, 1204, 1214, 1241, 1250, 1257, + 1264, 1271, 1278, 1286, 1294, 1304, 1314, 1321, 1331, 1337, + 1340, 1347, 1351, 1355, 1363, 1372, 1375, 1386, 1389, 1392, + 1396, 1400, 1404, 1408, 1411, 1416, 1420, 1425, 1433, 1437, + 1442, 1448, 1454, 1461, 1466, 1471, 1479, 1484, 1496, 1510, + 1516, 1521, 1529, 1537, 1545, 1553, 1561, 1569, 1577, 1585, + 1593, 1600, 1607, 1611, 1616, 1621, 1626, 1631, 1636, 1641, + 1645, 1649, 1653, 1657, 1663, 1669, 1679, 1686, 1689, 1697, + 1704, 1715, 1720, 1728, 1732, 1742, 1745, 1751, 1757, 1762, + 1770, 1780, 1784, 1788, 1792, 1797, 1801, 1806, 1811, 1816, + 1821, 1826, 1831, 1836, 1841, 1846, 1852, 1858, 1864, 1869, + 1874, 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919, + 1924, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, + 1976, 1981, 1986, 1994, 2002, 2010, 2016, 2022, 2028, 2034, + 2040, 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094, + 2100, 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154, + 2160, 2166, 2172, 2178, 2184, 2190, 2196, 2202, 2208, 2216, + 2224, 2232, 2240, 2248, 2256, 2264, 2272, 2280, 2288, 2296, + 2304, 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358, + 2364, 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418, + 2424, 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478, + 2484, 2490, 2496, 2502, 2508, 2514, 2520, 2524, 2528, 2532, + 2537, 2542, 2547, 2552, 2557, 2562, 2567, 2572, 2577, 2582, + 2587, 2592, 2597, 2602, 2608, 2614, 2620, 2626, 2632, 2638, + 2644, 2650, 2656, 2662, 2668, 2674, 2680, 2685, 2690, 2695, + 2700, 2705, 2710, 2715, 2720, 2725, 2730, 2735, 2740, 2745, + 2750, 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795, + 2800, 2805, 2810, 2815, 2820, 2825, 2830, 2835, 2840, 2845, + 2851, 2857, 2862, 2867, 2872, 2878, 2883, 2888, 2893, 2899, + 2904, 2909, 2914, 2920, 2925, 2930, 2935, 2941, 2947, 2953, + 2959, 2964, 2970, 2976, 2982, 2987, 2992, 2997, 3002, 3007, + 3013, 3018, 3023, 3028, 3034, 3039, 3044, 3049, 3055, 3060, + 3065, 3070, 3076, 3081, 3086, 3091, 3097, 3102, 3107, 3112, + 3118, 3123, 3128, 3133, 3139, 3144, 3149, 3154, 3160, 3165, + 3170, 3175, 3181, 3186, 3191, 3196, 3202, 3207, 3212, 3217, + 3223, 3228, 3233, 3238, 3244, 3249, 3254, 3259, 3265, 3270, + 3275, 3280, 3286, 3291, 3296, 3301, 3307, 3312, 3317, 3322, + 3327, 3332, 3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372, + 3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412, 3417, 3422, + 3427, 3433, 3439, 3445, 3451, 3457, 3463, 3469, 3476, 3483, + 3489, 3495, 3501, 3507, 3514, 3521, 3528, 3535, 3539, 3543, + 3548, 3564, 3569, 3574, 3582, 3582, 3599, 3599, 3609, 3612, + 3625, 3647, 3674, 3678, 3684, 3689, 3700, 3703, 3709, 3715, + 3724, 3727, 3733, 3737, 3738, 3744, 3745, 3746, 3747, 3748, + 3749, 3750, 3751, 3755, 3763, 3764, 3768, 3764, 3780, 3781, + 3785, 3785, 3792, 3792, 3806, 3809, 3817, 3825, 3836, 3837, + 3841, 3844, 3851, 3858, 3862, 3870, 3874, 3887, 3890, 3897, + 3897, 3917, 3920, 3926, 3938, 3950, 3953, 3960, 3960, 3975, + 3975, 3993, 3993, 4014, 4017, 4023, 4026, 4032, 4036, 4043, + 4048, 4053, 4060, 4063, 4067, 4071, 4075, 4084, 4088, 4097, + 4100, 4103, 4111, 4111, 4153, 4158, 4161, 4166, 4169, 4174, + 4177, 4182, 4185, 4190, 4193, 4198, 4201, 4206, 4210, 4215, + 4219, 4224, 4228, 4235, 4238, 4243, 4246, 4249, 4252, 4255, + 4260, 4269, 4280, 4285, 4293, 4297, 4302, 4306, 4311, 4315, + 4320, 4324, 4331, 4334, 4339, 4342, 4345, 4348, 4353, 4356, + 4361, 4367, 4370, 4373, 4376, 4381, 4385, 4390, 4394, 4399, + 4403, 4410, 4413, 4418, 4421, 4426, 4429, 4435, 4438, 4443, + 4446 }; #endif @@ -5465,47 +5465,70 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ #line 494 "MachineIndependent/glslang.y" { - TParameter param = { 0, new TType }; - param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); - (yyvsp[-1].interm).function->addParameter(param); - (yyval.interm).function = (yyvsp[-1].interm).function; - (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); + if (parseContext.spvVersion.vulkan > 0 + && parseContext.spvVersion.vulkanRelaxed + && (yyvsp[0].interm.intermTypedNode)->getType().containsOpaque()) + { + (yyval.interm).intermNode = parseContext.vkRelaxedRemapFunctionArgument((yyval.interm).loc, (yyvsp[-1].interm).function, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).function = (yyvsp[-1].interm).function; + } + else + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); + + (yyvsp[-1].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[-1].interm).function; + (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); + } } -#line 5475 "MachineIndependent/glslang_tab.cpp" +#line 5486 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 501 "MachineIndependent/glslang.y" +#line 512 "MachineIndependent/glslang.y" { - TParameter param = { 0, new TType }; - param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); - (yyvsp[-2].interm).function->addParameter(param); - (yyval.interm).function = (yyvsp[-2].interm).function; - (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + if (parseContext.spvVersion.vulkan > 0 + && parseContext.spvVersion.vulkanRelaxed + && (yyvsp[0].interm.intermTypedNode)->getType().containsOpaque()) + { + TIntermNode* remappedNode = parseContext.vkRelaxedRemapFunctionArgument((yyvsp[-1].lex).loc, (yyvsp[-2].interm).function, (yyvsp[0].interm.intermTypedNode)); + (yyval.interm).intermNode = parseContext.intermediate.mergeAggregate((yyvsp[-2].interm).intermNode, remappedNode, (yyvsp[-1].lex).loc); + (yyval.interm).function = (yyvsp[-2].interm).function; + } + else + { + TParameter param = { 0, new TType }; + param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); + + (yyvsp[-2].interm).function->addParameter(param); + (yyval.interm).function = (yyvsp[-2].interm).function; + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + } } -#line 5487 "MachineIndependent/glslang_tab.cpp" +#line 5510 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 511 "MachineIndependent/glslang.y" +#line 534 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5495 "MachineIndependent/glslang_tab.cpp" +#line 5518 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 519 "MachineIndependent/glslang.y" +#line 542 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5505 "MachineIndependent/glslang_tab.cpp" +#line 5528 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 524 "MachineIndependent/glslang.y" +#line 547 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5533,50 +5556,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5537 "MachineIndependent/glslang_tab.cpp" +#line 5560 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 551 "MachineIndependent/glslang.y" +#line 574 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5547 "MachineIndependent/glslang_tab.cpp" +#line 5570 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 559 "MachineIndependent/glslang.y" +#line 582 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5558 "MachineIndependent/glslang_tab.cpp" +#line 5581 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 565 "MachineIndependent/glslang.y" +#line 588 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5567 "MachineIndependent/glslang_tab.cpp" +#line 5590 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 569 "MachineIndependent/glslang.y" +#line 592 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5576 "MachineIndependent/glslang_tab.cpp" +#line 5599 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 573 "MachineIndependent/glslang.y" +#line 596 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5593,179 +5616,179 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5597 "MachineIndependent/glslang_tab.cpp" +#line 5620 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 593 "MachineIndependent/glslang.y" +#line 616 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5603 "MachineIndependent/glslang_tab.cpp" +#line 5626 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 594 "MachineIndependent/glslang.y" +#line 617 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5609 "MachineIndependent/glslang_tab.cpp" +#line 5632 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 595 "MachineIndependent/glslang.y" +#line 618 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5615 "MachineIndependent/glslang_tab.cpp" +#line 5638 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 596 "MachineIndependent/glslang.y" +#line 619 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5622 "MachineIndependent/glslang_tab.cpp" +#line 5645 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 602 "MachineIndependent/glslang.y" +#line 625 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5628 "MachineIndependent/glslang_tab.cpp" +#line 5651 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 603 "MachineIndependent/glslang.y" +#line 626 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5638 "MachineIndependent/glslang_tab.cpp" +#line 5661 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 608 "MachineIndependent/glslang.y" +#line 631 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5648 "MachineIndependent/glslang_tab.cpp" +#line 5671 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 613 "MachineIndependent/glslang.y" +#line 636 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5659 "MachineIndependent/glslang_tab.cpp" +#line 5682 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 622 "MachineIndependent/glslang.y" +#line 645 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5665 "MachineIndependent/glslang_tab.cpp" +#line 5688 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 623 "MachineIndependent/glslang.y" +#line 646 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5675 "MachineIndependent/glslang_tab.cpp" +#line 5698 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 628 "MachineIndependent/glslang.y" +#line 651 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5685 "MachineIndependent/glslang_tab.cpp" +#line 5708 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 636 "MachineIndependent/glslang.y" +#line 659 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5691 "MachineIndependent/glslang_tab.cpp" +#line 5714 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 637 "MachineIndependent/glslang.y" +#line 660 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5702 "MachineIndependent/glslang_tab.cpp" +#line 5725 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 643 "MachineIndependent/glslang.y" +#line 666 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5713 "MachineIndependent/glslang_tab.cpp" +#line 5736 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 652 "MachineIndependent/glslang.y" +#line 675 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5719 "MachineIndependent/glslang_tab.cpp" +#line 5742 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 653 "MachineIndependent/glslang.y" +#line 676 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5729 "MachineIndependent/glslang_tab.cpp" +#line 5752 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 658 "MachineIndependent/glslang.y" +#line 681 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5739 "MachineIndependent/glslang_tab.cpp" +#line 5762 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 663 "MachineIndependent/glslang.y" +#line 686 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5749 "MachineIndependent/glslang_tab.cpp" +#line 5772 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 668 "MachineIndependent/glslang.y" +#line 691 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5759 "MachineIndependent/glslang_tab.cpp" +#line 5782 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 676 "MachineIndependent/glslang.y" +#line 699 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5765 "MachineIndependent/glslang_tab.cpp" +#line 5788 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 677 "MachineIndependent/glslang.y" +#line 700 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5775,11 +5798,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5779 "MachineIndependent/glslang_tab.cpp" +#line 5802 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 686 "MachineIndependent/glslang.y" +#line 709 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5789,124 +5812,124 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5793 "MachineIndependent/glslang_tab.cpp" +#line 5816 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 698 "MachineIndependent/glslang.y" +#line 721 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5799 "MachineIndependent/glslang_tab.cpp" +#line 5822 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 699 "MachineIndependent/glslang.y" +#line 722 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5810 "MachineIndependent/glslang_tab.cpp" +#line 5833 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 708 "MachineIndependent/glslang.y" +#line 731 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5816 "MachineIndependent/glslang_tab.cpp" +#line 5839 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 709 "MachineIndependent/glslang.y" +#line 732 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5827 "MachineIndependent/glslang_tab.cpp" +#line 5850 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 718 "MachineIndependent/glslang.y" +#line 741 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5833 "MachineIndependent/glslang_tab.cpp" +#line 5856 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 719 "MachineIndependent/glslang.y" +#line 742 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5844 "MachineIndependent/glslang_tab.cpp" +#line 5867 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 728 "MachineIndependent/glslang.y" +#line 751 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5850 "MachineIndependent/glslang_tab.cpp" +#line 5873 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 729 "MachineIndependent/glslang.y" +#line 752 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5860 "MachineIndependent/glslang_tab.cpp" +#line 5883 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 737 "MachineIndependent/glslang.y" +#line 760 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5866 "MachineIndependent/glslang_tab.cpp" +#line 5889 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 738 "MachineIndependent/glslang.y" +#line 761 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5876 "MachineIndependent/glslang_tab.cpp" +#line 5899 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 746 "MachineIndependent/glslang.y" +#line 769 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5882 "MachineIndependent/glslang_tab.cpp" +#line 5905 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 747 "MachineIndependent/glslang.y" +#line 770 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5892 "MachineIndependent/glslang_tab.cpp" +#line 5915 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 755 "MachineIndependent/glslang.y" +#line 778 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5898 "MachineIndependent/glslang_tab.cpp" +#line 5921 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 756 "MachineIndependent/glslang.y" +#line 779 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5906 "MachineIndependent/glslang_tab.cpp" +#line 5929 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 759 "MachineIndependent/glslang.y" +#line 782 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5919,17 +5942,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5923 "MachineIndependent/glslang_tab.cpp" +#line 5946 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 774 "MachineIndependent/glslang.y" +#line 797 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5929 "MachineIndependent/glslang_tab.cpp" +#line 5952 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 775 "MachineIndependent/glslang.y" +#line 798 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5943,119 +5966,119 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5947 "MachineIndependent/glslang_tab.cpp" +#line 5970 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 791 "MachineIndependent/glslang.y" +#line 814 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5956 "MachineIndependent/glslang_tab.cpp" +#line 5979 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 795 "MachineIndependent/glslang.y" +#line 818 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5965 "MachineIndependent/glslang_tab.cpp" +#line 5988 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 799 "MachineIndependent/glslang.y" +#line 822 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5974 "MachineIndependent/glslang_tab.cpp" +#line 5997 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 803 "MachineIndependent/glslang.y" +#line 826 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 5984 "MachineIndependent/glslang_tab.cpp" +#line 6007 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 808 "MachineIndependent/glslang.y" +#line 831 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 5993 "MachineIndependent/glslang_tab.cpp" +#line 6016 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 812 "MachineIndependent/glslang.y" +#line 835 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6002 "MachineIndependent/glslang_tab.cpp" +#line 6025 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 816 "MachineIndependent/glslang.y" +#line 839 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6011 "MachineIndependent/glslang_tab.cpp" +#line 6034 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 820 "MachineIndependent/glslang.y" +#line 843 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6020 "MachineIndependent/glslang_tab.cpp" +#line 6043 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 824 "MachineIndependent/glslang.y" +#line 847 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6029 "MachineIndependent/glslang_tab.cpp" +#line 6052 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 828 "MachineIndependent/glslang.y" +#line 851 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6038 "MachineIndependent/glslang_tab.cpp" +#line 6061 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 832 "MachineIndependent/glslang.y" +#line 855 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6047 "MachineIndependent/glslang_tab.cpp" +#line 6070 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 839 "MachineIndependent/glslang.y" +#line 862 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6055 "MachineIndependent/glslang_tab.cpp" +#line 6078 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 842 "MachineIndependent/glslang.y" +#line 865 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6064,30 +6087,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6068 "MachineIndependent/glslang_tab.cpp" +#line 6091 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 853 "MachineIndependent/glslang.y" +#line 876 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6077 "MachineIndependent/glslang_tab.cpp" +#line 6100 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 860 "MachineIndependent/glslang.y" +#line 883 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6087 "MachineIndependent/glslang_tab.cpp" +#line 6110 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 865 "MachineIndependent/glslang.y" +#line 888 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6095,31 +6118,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6099 "MachineIndependent/glslang_tab.cpp" +#line 6122 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 872 "MachineIndependent/glslang.y" +#line 895 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6109 "MachineIndependent/glslang_tab.cpp" +#line 6132 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 877 "MachineIndependent/glslang.y" +#line 900 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6119 "MachineIndependent/glslang_tab.cpp" +#line 6142 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 882 "MachineIndependent/glslang.y" +#line 905 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6127,75 +6150,75 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6131 "MachineIndependent/glslang_tab.cpp" +#line 6154 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 889 "MachineIndependent/glslang.y" +#line 912 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6140 "MachineIndependent/glslang_tab.cpp" +#line 6163 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 893 "MachineIndependent/glslang.y" +#line 916 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6149 "MachineIndependent/glslang_tab.cpp" +#line 6172 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 897 "MachineIndependent/glslang.y" +#line 920 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6158 "MachineIndependent/glslang_tab.cpp" +#line 6181 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 901 "MachineIndependent/glslang.y" +#line 924 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6168 "MachineIndependent/glslang_tab.cpp" +#line 6191 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 906 "MachineIndependent/glslang.y" +#line 929 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6178 "MachineIndependent/glslang_tab.cpp" +#line 6201 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 911 "MachineIndependent/glslang.y" +#line 934 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6189 "MachineIndependent/glslang_tab.cpp" +#line 6212 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ -#line 920 "MachineIndependent/glslang.y" +#line 943 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6195 "MachineIndependent/glslang_tab.cpp" +#line 6218 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 920 "MachineIndependent/glslang.y" +#line 943 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6205,61 +6228,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6209 "MachineIndependent/glslang_tab.cpp" +#line 6232 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 931 "MachineIndependent/glslang.y" +#line 954 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6218 "MachineIndependent/glslang_tab.cpp" +#line 6241 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 935 "MachineIndependent/glslang.y" +#line 958 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6227 "MachineIndependent/glslang_tab.cpp" +#line 6250 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 942 "MachineIndependent/glslang.y" +#line 965 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6237 "MachineIndependent/glslang_tab.cpp" +#line 6260 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 947 "MachineIndependent/glslang.y" +#line 970 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6248 "MachineIndependent/glslang_tab.cpp" +#line 6271 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 953 "MachineIndependent/glslang.y" +#line 976 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6259 "MachineIndependent/glslang_tab.cpp" +#line 6282 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 959 "MachineIndependent/glslang.y" +#line 982 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6267,40 +6290,45 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6271 "MachineIndependent/glslang_tab.cpp" +#line 6294 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 969 "MachineIndependent/glslang.y" +#line 992 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6279 "MachineIndependent/glslang_tab.cpp" +#line 6302 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 972 "MachineIndependent/glslang.y" +#line 995 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6287 "MachineIndependent/glslang_tab.cpp" +#line 6310 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 979 "MachineIndependent/glslang.y" +#line 1002 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); if ((yyvsp[0].interm).param.type->getBasicType() != EbtVoid) - (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); + { + if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) + (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); + else + parseContext.vkRelaxedRemapFunctionParameter((yyvsp[0].interm).loc, (yyvsp[-1].interm.function), (yyvsp[0].interm).param); + } else delete (yyvsp[0].interm).param.type; } -#line 6300 "MachineIndependent/glslang_tab.cpp" +#line 6328 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 987 "MachineIndependent/glslang.y" +#line 1015 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6315,14 +6343,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else { // Add the parameter (yyval.interm.function) = (yyvsp[-2].interm.function); - (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); + if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) + (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); + else + parseContext.vkRelaxedRemapFunctionParameter((yyvsp[0].interm).loc, (yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } -#line 6322 "MachineIndependent/glslang_tab.cpp" +#line 6353 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1007 "MachineIndependent/glslang.y" +#line 1038 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6342,11 +6373,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6346 "MachineIndependent/glslang_tab.cpp" +#line 6377 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1030 "MachineIndependent/glslang.y" +#line 1061 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6362,11 +6393,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6366 "MachineIndependent/glslang_tab.cpp" +#line 6397 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1045 "MachineIndependent/glslang.y" +#line 1076 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6386,11 +6417,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6390 "MachineIndependent/glslang_tab.cpp" +#line 6421 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1070 "MachineIndependent/glslang.y" +#line 1101 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6402,11 +6433,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6406 "MachineIndependent/glslang_tab.cpp" +#line 6437 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1081 "MachineIndependent/glslang.y" +#line 1112 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6414,11 +6445,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6418 "MachineIndependent/glslang_tab.cpp" +#line 6449 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1091 "MachineIndependent/glslang.y" +#line 1122 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6429,11 +6460,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6433 "MachineIndependent/glslang_tab.cpp" +#line 6464 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1101 "MachineIndependent/glslang.y" +#line 1132 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6441,118 +6472,118 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6445 "MachineIndependent/glslang_tab.cpp" +#line 6476 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1111 "MachineIndependent/glslang.y" +#line 1142 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6456 "MachineIndependent/glslang_tab.cpp" +#line 6487 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1120 "MachineIndependent/glslang.y" +#line 1151 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6464 "MachineIndependent/glslang_tab.cpp" +#line 6495 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1123 "MachineIndependent/glslang.y" +#line 1154 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6473 "MachineIndependent/glslang_tab.cpp" +#line 6504 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1127 "MachineIndependent/glslang.y" +#line 1158 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6482 "MachineIndependent/glslang_tab.cpp" +#line 6513 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1131 "MachineIndependent/glslang.y" +#line 1162 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6492 "MachineIndependent/glslang_tab.cpp" +#line 6523 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1136 "MachineIndependent/glslang.y" +#line 1167 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6502 "MachineIndependent/glslang_tab.cpp" +#line 6533 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1144 "MachineIndependent/glslang.y" +#line 1175 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6512 "MachineIndependent/glslang_tab.cpp" +#line 6543 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1149 "MachineIndependent/glslang.y" +#line 1180 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6522 "MachineIndependent/glslang_tab.cpp" +#line 6553 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1154 "MachineIndependent/glslang.y" +#line 1185 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6532 "MachineIndependent/glslang_tab.cpp" +#line 6563 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1159 "MachineIndependent/glslang.y" +#line 1190 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6542 "MachineIndependent/glslang_tab.cpp" +#line 6573 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1164 "MachineIndependent/glslang.y" +#line 1195 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6552 "MachineIndependent/glslang_tab.cpp" +#line 6583 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1173 "MachineIndependent/glslang.y" +#line 1204 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6563,11 +6594,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat()); } -#line 6567 "MachineIndependent/glslang_tab.cpp" +#line 6598 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1183 "MachineIndependent/glslang.y" +#line 1214 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6592,22 +6623,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6596 "MachineIndependent/glslang_tab.cpp" +#line 6627 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1210 "MachineIndependent/glslang.y" +#line 1241 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6607 "MachineIndependent/glslang_tab.cpp" +#line 6638 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1219 "MachineIndependent/glslang.y" +#line 1250 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6615,11 +6646,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6619 "MachineIndependent/glslang_tab.cpp" +#line 6650 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1226 "MachineIndependent/glslang.y" +#line 1257 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6627,11 +6658,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6631 "MachineIndependent/glslang_tab.cpp" +#line 6662 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1233 "MachineIndependent/glslang.y" +#line 1264 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6639,11 +6670,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6643 "MachineIndependent/glslang_tab.cpp" +#line 6674 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1240 "MachineIndependent/glslang.y" +#line 1271 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6651,11 +6682,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6655 "MachineIndependent/glslang_tab.cpp" +#line 6686 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1247 "MachineIndependent/glslang.y" +#line 1278 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6664,11 +6695,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6668 "MachineIndependent/glslang_tab.cpp" +#line 6699 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1255 "MachineIndependent/glslang.y" +#line 1286 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6677,11 +6708,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6681 "MachineIndependent/glslang_tab.cpp" +#line 6712 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1263 "MachineIndependent/glslang.y" +#line 1294 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6692,11 +6723,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6696 "MachineIndependent/glslang_tab.cpp" +#line 6727 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1273 "MachineIndependent/glslang.y" +#line 1304 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6707,11 +6738,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6711 "MachineIndependent/glslang_tab.cpp" +#line 6742 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1283 "MachineIndependent/glslang.y" +#line 1314 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6719,11 +6750,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6723 "MachineIndependent/glslang_tab.cpp" +#line 6754 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1290 "MachineIndependent/glslang.y" +#line 1321 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6731,84 +6762,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6735 "MachineIndependent/glslang_tab.cpp" +#line 6766 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1300 "MachineIndependent/glslang.y" +#line 1331 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6743 "MachineIndependent/glslang_tab.cpp" +#line 6774 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1306 "MachineIndependent/glslang.y" +#line 1337 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6751 "MachineIndependent/glslang_tab.cpp" +#line 6782 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1309 "MachineIndependent/glslang.y" +#line 1340 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6761 "MachineIndependent/glslang_tab.cpp" +#line 6792 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1316 "MachineIndependent/glslang.y" +#line 1347 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6770 "MachineIndependent/glslang_tab.cpp" +#line 6801 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1320 "MachineIndependent/glslang.y" +#line 1351 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6779 "MachineIndependent/glslang_tab.cpp" +#line 6810 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1324 "MachineIndependent/glslang.y" +#line 1355 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6789 "MachineIndependent/glslang_tab.cpp" +#line 6820 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1332 "MachineIndependent/glslang.y" +#line 1363 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6800 "MachineIndependent/glslang_tab.cpp" +#line 6831 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1341 "MachineIndependent/glslang.y" +#line 1372 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6808 "MachineIndependent/glslang_tab.cpp" +#line 6839 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1344 "MachineIndependent/glslang.y" +#line 1375 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6817,151 +6848,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6821 "MachineIndependent/glslang_tab.cpp" +#line 6852 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1355 "MachineIndependent/glslang.y" +#line 1386 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6829 "MachineIndependent/glslang_tab.cpp" +#line 6860 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1358 "MachineIndependent/glslang.y" +#line 1389 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6837 "MachineIndependent/glslang_tab.cpp" +#line 6868 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1361 "MachineIndependent/glslang.y" +#line 1392 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6846 "MachineIndependent/glslang_tab.cpp" +#line 6877 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1365 "MachineIndependent/glslang.y" +#line 1396 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6855 "MachineIndependent/glslang_tab.cpp" +#line 6886 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1369 "MachineIndependent/glslang.y" +#line 1400 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6864 "MachineIndependent/glslang_tab.cpp" +#line 6895 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1373 "MachineIndependent/glslang.y" +#line 1404 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6873 "MachineIndependent/glslang_tab.cpp" +#line 6904 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1377 "MachineIndependent/glslang.y" +#line 1408 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6881 "MachineIndependent/glslang_tab.cpp" +#line 6912 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1380 "MachineIndependent/glslang.y" +#line 1411 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6891 "MachineIndependent/glslang_tab.cpp" +#line 6922 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1385 "MachineIndependent/glslang.y" +#line 1416 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6900 "MachineIndependent/glslang_tab.cpp" +#line 6931 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1389 "MachineIndependent/glslang.y" +#line 1420 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6910 "MachineIndependent/glslang_tab.cpp" +#line 6941 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1394 "MachineIndependent/glslang.y" +#line 1425 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6920 "MachineIndependent/glslang_tab.cpp" +#line 6951 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1402 "MachineIndependent/glslang.y" +#line 1433 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6929 "MachineIndependent/glslang_tab.cpp" +#line 6960 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1406 "MachineIndependent/glslang.y" +#line 1437 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6939 "MachineIndependent/glslang_tab.cpp" +#line 6970 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1411 "MachineIndependent/glslang.y" +#line 1442 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6950 "MachineIndependent/glslang_tab.cpp" +#line 6981 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1417 "MachineIndependent/glslang.y" +#line 1448 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6961 "MachineIndependent/glslang_tab.cpp" +#line 6992 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1423 "MachineIndependent/glslang.y" +#line 1454 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6969,31 +7000,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6973 "MachineIndependent/glslang_tab.cpp" +#line 7004 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1430 "MachineIndependent/glslang.y" +#line 1461 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 6983 "MachineIndependent/glslang_tab.cpp" +#line 7014 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: TILEIMAGEEXT */ -#line 1435 "MachineIndependent/glslang.y" +#line 1466 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 6993 "MachineIndependent/glslang_tab.cpp" +#line 7024 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: SHARED */ -#line 1440 "MachineIndependent/glslang.y" +#line 1471 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7002,21 +7033,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7006 "MachineIndependent/glslang_tab.cpp" +#line 7037 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: BUFFER */ -#line 1448 "MachineIndependent/glslang.y" +#line 1479 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7016 "MachineIndependent/glslang_tab.cpp" +#line 7047 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: ATTRIBUTE */ -#line 1453 "MachineIndependent/glslang.y" +#line 1484 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7029,11 +7060,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7033 "MachineIndependent/glslang_tab.cpp" +#line 7064 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: VARYING */ -#line 1465 "MachineIndependent/glslang.y" +#line 1496 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7048,32 +7079,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7052 "MachineIndependent/glslang_tab.cpp" +#line 7083 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: PATCH */ -#line 1479 "MachineIndependent/glslang.y" +#line 1510 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7063 "MachineIndependent/glslang_tab.cpp" +#line 7094 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: SAMPLE */ -#line 1485 "MachineIndependent/glslang.y" +#line 1516 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7073 "MachineIndependent/glslang_tab.cpp" +#line 7104 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITATTRNV */ -#line 1490 "MachineIndependent/glslang.y" +#line 1521 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7082,11 +7113,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7086 "MachineIndependent/glslang_tab.cpp" +#line 7117 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1498 "MachineIndependent/glslang.y" +#line 1529 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7095,11 +7126,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7099 "MachineIndependent/glslang_tab.cpp" +#line 7130 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITATTREXT */ -#line 1506 "MachineIndependent/glslang.y" +#line 1537 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7108,11 +7139,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7112 "MachineIndependent/glslang_tab.cpp" +#line 7143 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADNV */ -#line 1514 "MachineIndependent/glslang.y" +#line 1545 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7121,11 +7152,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7125 "MachineIndependent/glslang_tab.cpp" +#line 7156 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADEXT */ -#line 1522 "MachineIndependent/glslang.y" +#line 1553 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7134,11 +7165,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7138 "MachineIndependent/glslang_tab.cpp" +#line 7169 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINNV */ -#line 1530 "MachineIndependent/glslang.y" +#line 1561 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7147,11 +7178,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7151 "MachineIndependent/glslang_tab.cpp" +#line 7182 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINEXT */ -#line 1538 "MachineIndependent/glslang.y" +#line 1569 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7160,11 +7191,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7164 "MachineIndependent/glslang_tab.cpp" +#line 7195 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATANV */ -#line 1546 "MachineIndependent/glslang.y" +#line 1577 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7173,11 +7204,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7177 "MachineIndependent/glslang_tab.cpp" +#line 7208 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAEXT */ -#line 1554 "MachineIndependent/glslang.y" +#line 1585 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7186,11 +7217,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7190 "MachineIndependent/glslang_tab.cpp" +#line 7221 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINNV */ -#line 1562 "MachineIndependent/glslang.y" +#line 1593 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7198,11 +7229,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7202 "MachineIndependent/glslang_tab.cpp" +#line 7233 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINEXT */ -#line 1569 "MachineIndependent/glslang.y" +#line 1600 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7210,138 +7241,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7214 "MachineIndependent/glslang_tab.cpp" +#line 7245 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: COHERENT */ -#line 1576 "MachineIndependent/glslang.y" +#line 1607 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7223 "MachineIndependent/glslang_tab.cpp" +#line 7254 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: DEVICECOHERENT */ -#line 1580 "MachineIndependent/glslang.y" +#line 1611 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7233 "MachineIndependent/glslang_tab.cpp" +#line 7264 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1585 "MachineIndependent/glslang.y" +#line 1616 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7243 "MachineIndependent/glslang_tab.cpp" +#line 7274 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1590 "MachineIndependent/glslang.y" +#line 1621 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7253 "MachineIndependent/glslang_tab.cpp" +#line 7284 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1595 "MachineIndependent/glslang.y" +#line 1626 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7263 "MachineIndependent/glslang_tab.cpp" +#line 7294 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: NONPRIVATE */ -#line 1600 "MachineIndependent/glslang.y" +#line 1631 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7273 "MachineIndependent/glslang_tab.cpp" +#line 7304 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1605 "MachineIndependent/glslang.y" +#line 1636 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7283 "MachineIndependent/glslang_tab.cpp" +#line 7314 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: VOLATILE */ -#line 1610 "MachineIndependent/glslang.y" +#line 1641 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7292 "MachineIndependent/glslang_tab.cpp" +#line 7323 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: RESTRICT */ -#line 1614 "MachineIndependent/glslang.y" +#line 1645 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7301 "MachineIndependent/glslang_tab.cpp" +#line 7332 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: READONLY */ -#line 1618 "MachineIndependent/glslang.y" +#line 1649 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7310 "MachineIndependent/glslang_tab.cpp" +#line 7341 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: WRITEONLY */ -#line 1622 "MachineIndependent/glslang.y" +#line 1653 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7319 "MachineIndependent/glslang_tab.cpp" +#line 7350 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE */ -#line 1626 "MachineIndependent/glslang.y" +#line 1657 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7330 "MachineIndependent/glslang_tab.cpp" +#line 7361 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1632 "MachineIndependent/glslang.y" +#line 1663 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7341 "MachineIndependent/glslang_tab.cpp" +#line 7372 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1638 "MachineIndependent/glslang.y" +#line 1669 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7349,38 +7380,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7353 "MachineIndependent/glslang_tab.cpp" +#line 7384 "MachineIndependent/glslang_tab.cpp" break; case 206: /* non_uniform_qualifier: NONUNIFORM */ -#line 1648 "MachineIndependent/glslang.y" +#line 1679 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7362 "MachineIndependent/glslang_tab.cpp" +#line 7393 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: IDENTIFIER */ -#line 1655 "MachineIndependent/glslang.y" +#line 1686 "MachineIndependent/glslang.y" { // TODO } -#line 7370 "MachineIndependent/glslang_tab.cpp" +#line 7401 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1658 "MachineIndependent/glslang.y" +#line 1689 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7380 "MachineIndependent/glslang_tab.cpp" +#line 7411 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1666 "MachineIndependent/glslang.y" +#line 1697 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); @@ -7388,11 +7419,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } -#line 7392 "MachineIndependent/glslang_tab.cpp" +#line 7423 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1673 "MachineIndependent/glslang.y" +#line 1704 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7401,21 +7432,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7405 "MachineIndependent/glslang_tab.cpp" +#line 7436 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1684 "MachineIndependent/glslang.y" +#line 1715 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7415 "MachineIndependent/glslang_tab.cpp" +#line 7446 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1689 "MachineIndependent/glslang.y" +#line 1720 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7424,20 +7455,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7428 "MachineIndependent/glslang_tab.cpp" +#line 7459 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1697 "MachineIndependent/glslang.y" +#line 1728 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7437 "MachineIndependent/glslang_tab.cpp" +#line 7468 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1701 "MachineIndependent/glslang.y" +#line 1732 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7445,45 +7476,45 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7449 "MachineIndependent/glslang_tab.cpp" +#line 7480 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1711 "MachineIndependent/glslang.y" +#line 1742 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7457 "MachineIndependent/glslang_tab.cpp" +#line 7488 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier_opt: %empty */ -#line 1714 "MachineIndependent/glslang.y" +#line 1745 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7465 "MachineIndependent/glslang_tab.cpp" +#line 7496 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1720 "MachineIndependent/glslang.y" +#line 1751 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7473 "MachineIndependent/glslang_tab.cpp" +#line 7504 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_list: type_specifier */ -#line 1726 "MachineIndependent/glslang.y" +#line 1757 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7483 "MachineIndependent/glslang_tab.cpp" +#line 7514 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier_list: unary_expression */ -#line 1731 "MachineIndependent/glslang.y" +#line 1762 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7492,11 +7523,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7496 "MachineIndependent/glslang_tab.cpp" +#line 7527 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1739 "MachineIndependent/glslang.y" +#line 1770 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7504,300 +7535,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7508 "MachineIndependent/glslang_tab.cpp" +#line 7539 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: VOID */ -#line 1749 "MachineIndependent/glslang.y" +#line 1780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7517 "MachineIndependent/glslang_tab.cpp" +#line 7548 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: FLOAT */ -#line 1753 "MachineIndependent/glslang.y" +#line 1784 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7526 "MachineIndependent/glslang_tab.cpp" +#line 7557 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: INT */ -#line 1757 "MachineIndependent/glslang.y" +#line 1788 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7535 "MachineIndependent/glslang_tab.cpp" +#line 7566 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: UINT */ -#line 1761 "MachineIndependent/glslang.y" +#line 1792 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7545 "MachineIndependent/glslang_tab.cpp" +#line 7576 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: BOOL */ -#line 1766 "MachineIndependent/glslang.y" +#line 1797 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7554 "MachineIndependent/glslang_tab.cpp" +#line 7585 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC2 */ -#line 1770 "MachineIndependent/glslang.y" +#line 1801 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7564 "MachineIndependent/glslang_tab.cpp" +#line 7595 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: VEC3 */ -#line 1775 "MachineIndependent/glslang.y" +#line 1806 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7574 "MachineIndependent/glslang_tab.cpp" +#line 7605 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: VEC4 */ -#line 1780 "MachineIndependent/glslang.y" +#line 1811 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7584 "MachineIndependent/glslang_tab.cpp" +#line 7615 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC2 */ -#line 1785 "MachineIndependent/glslang.y" +#line 1816 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7594 "MachineIndependent/glslang_tab.cpp" +#line 7625 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: BVEC3 */ -#line 1790 "MachineIndependent/glslang.y" +#line 1821 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7604 "MachineIndependent/glslang_tab.cpp" +#line 7635 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: BVEC4 */ -#line 1795 "MachineIndependent/glslang.y" +#line 1826 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7614 "MachineIndependent/glslang_tab.cpp" +#line 7645 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC2 */ -#line 1800 "MachineIndependent/glslang.y" +#line 1831 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7624 "MachineIndependent/glslang_tab.cpp" +#line 7655 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: IVEC3 */ -#line 1805 "MachineIndependent/glslang.y" +#line 1836 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7634 "MachineIndependent/glslang_tab.cpp" +#line 7665 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: IVEC4 */ -#line 1810 "MachineIndependent/glslang.y" +#line 1841 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7644 "MachineIndependent/glslang_tab.cpp" +#line 7675 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC2 */ -#line 1815 "MachineIndependent/glslang.y" +#line 1846 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7655 "MachineIndependent/glslang_tab.cpp" +#line 7686 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: UVEC3 */ -#line 1821 "MachineIndependent/glslang.y" +#line 1852 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7666 "MachineIndependent/glslang_tab.cpp" +#line 7697 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: UVEC4 */ -#line 1827 "MachineIndependent/glslang.y" +#line 1858 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7677 "MachineIndependent/glslang_tab.cpp" +#line 7708 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT2 */ -#line 1833 "MachineIndependent/glslang.y" +#line 1864 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7687 "MachineIndependent/glslang_tab.cpp" +#line 7718 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT3 */ -#line 1838 "MachineIndependent/glslang.y" +#line 1869 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7697 "MachineIndependent/glslang_tab.cpp" +#line 7728 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT4 */ -#line 1843 "MachineIndependent/glslang.y" +#line 1874 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7707 "MachineIndependent/glslang_tab.cpp" +#line 7738 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X2 */ -#line 1848 "MachineIndependent/glslang.y" +#line 1879 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7717 "MachineIndependent/glslang_tab.cpp" +#line 7748 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT2X3 */ -#line 1853 "MachineIndependent/glslang.y" +#line 1884 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7727 "MachineIndependent/glslang_tab.cpp" +#line 7758 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT2X4 */ -#line 1858 "MachineIndependent/glslang.y" +#line 1889 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7737 "MachineIndependent/glslang_tab.cpp" +#line 7768 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X2 */ -#line 1863 "MachineIndependent/glslang.y" +#line 1894 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7747 "MachineIndependent/glslang_tab.cpp" +#line 7778 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT3X3 */ -#line 1868 "MachineIndependent/glslang.y" +#line 1899 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7757 "MachineIndependent/glslang_tab.cpp" +#line 7788 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT3X4 */ -#line 1873 "MachineIndependent/glslang.y" +#line 1904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7767 "MachineIndependent/glslang_tab.cpp" +#line 7798 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X2 */ -#line 1878 "MachineIndependent/glslang.y" +#line 1909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7777 "MachineIndependent/glslang_tab.cpp" +#line 7808 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT4X3 */ -#line 1883 "MachineIndependent/glslang.y" +#line 1914 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7787 "MachineIndependent/glslang_tab.cpp" +#line 7818 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: MAT4X4 */ -#line 1888 "MachineIndependent/glslang.y" +#line 1919 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7797 "MachineIndependent/glslang_tab.cpp" +#line 7828 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: DOUBLE */ -#line 1893 "MachineIndependent/glslang.y" +#line 1924 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7805,121 +7836,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7809 "MachineIndependent/glslang_tab.cpp" +#line 7840 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT16_T */ -#line 1900 "MachineIndependent/glslang.y" +#line 1931 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7819 "MachineIndependent/glslang_tab.cpp" +#line 7850 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: FLOAT32_T */ -#line 1905 "MachineIndependent/glslang.y" +#line 1936 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7829 "MachineIndependent/glslang_tab.cpp" +#line 7860 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: FLOAT64_T */ -#line 1910 "MachineIndependent/glslang.y" +#line 1941 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7839 "MachineIndependent/glslang_tab.cpp" +#line 7870 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: INT8_T */ -#line 1915 "MachineIndependent/glslang.y" +#line 1946 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7849 "MachineIndependent/glslang_tab.cpp" +#line 7880 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: UINT8_T */ -#line 1920 "MachineIndependent/glslang.y" +#line 1951 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7859 "MachineIndependent/glslang_tab.cpp" +#line 7890 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: INT16_T */ -#line 1925 "MachineIndependent/glslang.y" +#line 1956 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7869 "MachineIndependent/glslang_tab.cpp" +#line 7900 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: UINT16_T */ -#line 1930 "MachineIndependent/glslang.y" +#line 1961 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7879 "MachineIndependent/glslang_tab.cpp" +#line 7910 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: INT32_T */ -#line 1935 "MachineIndependent/glslang.y" +#line 1966 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7889 "MachineIndependent/glslang_tab.cpp" +#line 7920 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: UINT32_T */ -#line 1940 "MachineIndependent/glslang.y" +#line 1971 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7899 "MachineIndependent/glslang_tab.cpp" +#line 7930 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: INT64_T */ -#line 1945 "MachineIndependent/glslang.y" +#line 1976 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7909 "MachineIndependent/glslang_tab.cpp" +#line 7940 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: UINT64_T */ -#line 1950 "MachineIndependent/glslang.y" +#line 1981 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7919 "MachineIndependent/glslang_tab.cpp" +#line 7950 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC2 */ -#line 1955 "MachineIndependent/glslang.y" +#line 1986 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7928,11 +7959,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7932 "MachineIndependent/glslang_tab.cpp" +#line 7963 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: DVEC3 */ -#line 1963 "MachineIndependent/glslang.y" +#line 1994 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7941,11 +7972,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7945 "MachineIndependent/glslang_tab.cpp" +#line 7976 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: DVEC4 */ -#line 1971 "MachineIndependent/glslang.y" +#line 2002 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7954,374 +7985,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7958 "MachineIndependent/glslang_tab.cpp" +#line 7989 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC2 */ -#line 1979 "MachineIndependent/glslang.y" +#line 2010 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7969 "MachineIndependent/glslang_tab.cpp" +#line 8000 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F16VEC3 */ -#line 1985 "MachineIndependent/glslang.y" +#line 2016 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 7980 "MachineIndependent/glslang_tab.cpp" +#line 8011 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F16VEC4 */ -#line 1991 "MachineIndependent/glslang.y" +#line 2022 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 7991 "MachineIndependent/glslang_tab.cpp" +#line 8022 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC2 */ -#line 1997 "MachineIndependent/glslang.y" +#line 2028 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8002 "MachineIndependent/glslang_tab.cpp" +#line 8033 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F32VEC3 */ -#line 2003 "MachineIndependent/glslang.y" +#line 2034 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8013 "MachineIndependent/glslang_tab.cpp" +#line 8044 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F32VEC4 */ -#line 2009 "MachineIndependent/glslang.y" +#line 2040 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8024 "MachineIndependent/glslang_tab.cpp" +#line 8055 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC2 */ -#line 2015 "MachineIndependent/glslang.y" +#line 2046 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8035 "MachineIndependent/glslang_tab.cpp" +#line 8066 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: F64VEC3 */ -#line 2021 "MachineIndependent/glslang.y" +#line 2052 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8046 "MachineIndependent/glslang_tab.cpp" +#line 8077 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: F64VEC4 */ -#line 2027 "MachineIndependent/glslang.y" +#line 2058 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8057 "MachineIndependent/glslang_tab.cpp" +#line 8088 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC2 */ -#line 2033 "MachineIndependent/glslang.y" +#line 2064 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8068 "MachineIndependent/glslang_tab.cpp" +#line 8099 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I8VEC3 */ -#line 2039 "MachineIndependent/glslang.y" +#line 2070 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8079 "MachineIndependent/glslang_tab.cpp" +#line 8110 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I8VEC4 */ -#line 2045 "MachineIndependent/glslang.y" +#line 2076 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8090 "MachineIndependent/glslang_tab.cpp" +#line 8121 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC2 */ -#line 2051 "MachineIndependent/glslang.y" +#line 2082 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8101 "MachineIndependent/glslang_tab.cpp" +#line 8132 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I16VEC3 */ -#line 2057 "MachineIndependent/glslang.y" +#line 2088 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8112 "MachineIndependent/glslang_tab.cpp" +#line 8143 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I16VEC4 */ -#line 2063 "MachineIndependent/glslang.y" +#line 2094 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8123 "MachineIndependent/glslang_tab.cpp" +#line 8154 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC2 */ -#line 2069 "MachineIndependent/glslang.y" +#line 2100 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8134 "MachineIndependent/glslang_tab.cpp" +#line 8165 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I32VEC3 */ -#line 2075 "MachineIndependent/glslang.y" +#line 2106 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8145 "MachineIndependent/glslang_tab.cpp" +#line 8176 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I32VEC4 */ -#line 2081 "MachineIndependent/glslang.y" +#line 2112 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8156 "MachineIndependent/glslang_tab.cpp" +#line 8187 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC2 */ -#line 2087 "MachineIndependent/glslang.y" +#line 2118 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8167 "MachineIndependent/glslang_tab.cpp" +#line 8198 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: I64VEC3 */ -#line 2093 "MachineIndependent/glslang.y" +#line 2124 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8178 "MachineIndependent/glslang_tab.cpp" +#line 8209 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: I64VEC4 */ -#line 2099 "MachineIndependent/glslang.y" +#line 2130 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8189 "MachineIndependent/glslang_tab.cpp" +#line 8220 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC2 */ -#line 2105 "MachineIndependent/glslang.y" +#line 2136 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8200 "MachineIndependent/glslang_tab.cpp" +#line 8231 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U8VEC3 */ -#line 2111 "MachineIndependent/glslang.y" +#line 2142 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8211 "MachineIndependent/glslang_tab.cpp" +#line 8242 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U8VEC4 */ -#line 2117 "MachineIndependent/glslang.y" +#line 2148 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8222 "MachineIndependent/glslang_tab.cpp" +#line 8253 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC2 */ -#line 2123 "MachineIndependent/glslang.y" +#line 2154 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8233 "MachineIndependent/glslang_tab.cpp" +#line 8264 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U16VEC3 */ -#line 2129 "MachineIndependent/glslang.y" +#line 2160 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8244 "MachineIndependent/glslang_tab.cpp" +#line 8275 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U16VEC4 */ -#line 2135 "MachineIndependent/glslang.y" +#line 2166 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8255 "MachineIndependent/glslang_tab.cpp" +#line 8286 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC2 */ -#line 2141 "MachineIndependent/glslang.y" +#line 2172 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8266 "MachineIndependent/glslang_tab.cpp" +#line 8297 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U32VEC3 */ -#line 2147 "MachineIndependent/glslang.y" +#line 2178 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8277 "MachineIndependent/glslang_tab.cpp" +#line 8308 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U32VEC4 */ -#line 2153 "MachineIndependent/glslang.y" +#line 2184 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8288 "MachineIndependent/glslang_tab.cpp" +#line 8319 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC2 */ -#line 2159 "MachineIndependent/glslang.y" +#line 2190 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8299 "MachineIndependent/glslang_tab.cpp" +#line 8330 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: U64VEC3 */ -#line 2165 "MachineIndependent/glslang.y" +#line 2196 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8310 "MachineIndependent/glslang_tab.cpp" +#line 8341 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: U64VEC4 */ -#line 2171 "MachineIndependent/glslang.y" +#line 2202 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8321 "MachineIndependent/glslang_tab.cpp" +#line 8352 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT2 */ -#line 2177 "MachineIndependent/glslang.y" +#line 2208 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8330,11 +8361,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8334 "MachineIndependent/glslang_tab.cpp" +#line 8365 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT3 */ -#line 2185 "MachineIndependent/glslang.y" +#line 2216 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8343,11 +8374,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8347 "MachineIndependent/glslang_tab.cpp" +#line 8378 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT4 */ -#line 2193 "MachineIndependent/glslang.y" +#line 2224 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8356,11 +8387,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8360 "MachineIndependent/glslang_tab.cpp" +#line 8391 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X2 */ -#line 2201 "MachineIndependent/glslang.y" +#line 2232 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8369,11 +8400,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8373 "MachineIndependent/glslang_tab.cpp" +#line 8404 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT2X3 */ -#line 2209 "MachineIndependent/glslang.y" +#line 2240 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8382,11 +8413,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8386 "MachineIndependent/glslang_tab.cpp" +#line 8417 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT2X4 */ -#line 2217 "MachineIndependent/glslang.y" +#line 2248 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8395,11 +8426,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8399 "MachineIndependent/glslang_tab.cpp" +#line 8430 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X2 */ -#line 2225 "MachineIndependent/glslang.y" +#line 2256 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8408,11 +8439,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8412 "MachineIndependent/glslang_tab.cpp" +#line 8443 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT3X3 */ -#line 2233 "MachineIndependent/glslang.y" +#line 2264 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8421,11 +8452,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8425 "MachineIndependent/glslang_tab.cpp" +#line 8456 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT3X4 */ -#line 2241 "MachineIndependent/glslang.y" +#line 2272 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8434,11 +8465,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8438 "MachineIndependent/glslang_tab.cpp" +#line 8469 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X2 */ -#line 2249 "MachineIndependent/glslang.y" +#line 2280 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8447,11 +8478,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8451 "MachineIndependent/glslang_tab.cpp" +#line 8482 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: DMAT4X3 */ -#line 2257 "MachineIndependent/glslang.y" +#line 2288 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8460,11 +8491,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8464 "MachineIndependent/glslang_tab.cpp" +#line 8495 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: DMAT4X4 */ -#line 2265 "MachineIndependent/glslang.y" +#line 2296 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8473,2261 +8504,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8477 "MachineIndependent/glslang_tab.cpp" +#line 8508 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT2 */ -#line 2273 "MachineIndependent/glslang.y" +#line 2304 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8488 "MachineIndependent/glslang_tab.cpp" +#line 8519 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT3 */ -#line 2279 "MachineIndependent/glslang.y" +#line 2310 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8499 "MachineIndependent/glslang_tab.cpp" +#line 8530 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT4 */ -#line 2285 "MachineIndependent/glslang.y" +#line 2316 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8510 "MachineIndependent/glslang_tab.cpp" +#line 8541 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2291 "MachineIndependent/glslang.y" +#line 2322 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8521 "MachineIndependent/glslang_tab.cpp" +#line 8552 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2297 "MachineIndependent/glslang.y" +#line 2328 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8532 "MachineIndependent/glslang_tab.cpp" +#line 8563 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2303 "MachineIndependent/glslang.y" +#line 2334 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8543 "MachineIndependent/glslang_tab.cpp" +#line 8574 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2309 "MachineIndependent/glslang.y" +#line 2340 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8554 "MachineIndependent/glslang_tab.cpp" +#line 8585 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2315 "MachineIndependent/glslang.y" +#line 2346 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8565 "MachineIndependent/glslang_tab.cpp" +#line 8596 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2321 "MachineIndependent/glslang.y" +#line 2352 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8576 "MachineIndependent/glslang_tab.cpp" +#line 8607 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2327 "MachineIndependent/glslang.y" +#line 2358 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8587 "MachineIndependent/glslang_tab.cpp" +#line 8618 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2333 "MachineIndependent/glslang.y" +#line 2364 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8598 "MachineIndependent/glslang_tab.cpp" +#line 8629 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2339 "MachineIndependent/glslang.y" +#line 2370 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8609 "MachineIndependent/glslang_tab.cpp" +#line 8640 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT2 */ -#line 2345 "MachineIndependent/glslang.y" +#line 2376 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8620 "MachineIndependent/glslang_tab.cpp" +#line 8651 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT3 */ -#line 2351 "MachineIndependent/glslang.y" +#line 2382 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8631 "MachineIndependent/glslang_tab.cpp" +#line 8662 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT4 */ -#line 2357 "MachineIndependent/glslang.y" +#line 2388 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8642 "MachineIndependent/glslang_tab.cpp" +#line 8673 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2363 "MachineIndependent/glslang.y" +#line 2394 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8653 "MachineIndependent/glslang_tab.cpp" +#line 8684 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2369 "MachineIndependent/glslang.y" +#line 2400 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8664 "MachineIndependent/glslang_tab.cpp" +#line 8695 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2375 "MachineIndependent/glslang.y" +#line 2406 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8675 "MachineIndependent/glslang_tab.cpp" +#line 8706 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2381 "MachineIndependent/glslang.y" +#line 2412 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8686 "MachineIndependent/glslang_tab.cpp" +#line 8717 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2387 "MachineIndependent/glslang.y" +#line 2418 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8697 "MachineIndependent/glslang_tab.cpp" +#line 8728 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2393 "MachineIndependent/glslang.y" +#line 2424 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8708 "MachineIndependent/glslang_tab.cpp" +#line 8739 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2399 "MachineIndependent/glslang.y" +#line 2430 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8719 "MachineIndependent/glslang_tab.cpp" +#line 8750 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2405 "MachineIndependent/glslang.y" +#line 2436 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8730 "MachineIndependent/glslang_tab.cpp" +#line 8761 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2411 "MachineIndependent/glslang.y" +#line 2442 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8741 "MachineIndependent/glslang_tab.cpp" +#line 8772 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT2 */ -#line 2417 "MachineIndependent/glslang.y" +#line 2448 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8752 "MachineIndependent/glslang_tab.cpp" +#line 8783 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT3 */ -#line 2423 "MachineIndependent/glslang.y" +#line 2454 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8763 "MachineIndependent/glslang_tab.cpp" +#line 8794 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT4 */ -#line 2429 "MachineIndependent/glslang.y" +#line 2460 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8774 "MachineIndependent/glslang_tab.cpp" +#line 8805 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2435 "MachineIndependent/glslang.y" +#line 2466 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8785 "MachineIndependent/glslang_tab.cpp" +#line 8816 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2441 "MachineIndependent/glslang.y" +#line 2472 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8796 "MachineIndependent/glslang_tab.cpp" +#line 8827 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2447 "MachineIndependent/glslang.y" +#line 2478 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8807 "MachineIndependent/glslang_tab.cpp" +#line 8838 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2453 "MachineIndependent/glslang.y" +#line 2484 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8818 "MachineIndependent/glslang_tab.cpp" +#line 8849 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2459 "MachineIndependent/glslang.y" +#line 2490 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8829 "MachineIndependent/glslang_tab.cpp" +#line 8860 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2465 "MachineIndependent/glslang.y" +#line 2496 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8840 "MachineIndependent/glslang_tab.cpp" +#line 8871 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2471 "MachineIndependent/glslang.y" +#line 2502 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8851 "MachineIndependent/glslang_tab.cpp" +#line 8882 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2477 "MachineIndependent/glslang.y" +#line 2508 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8862 "MachineIndependent/glslang_tab.cpp" +#line 8893 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2483 "MachineIndependent/glslang.y" +#line 2514 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8873 "MachineIndependent/glslang_tab.cpp" +#line 8904 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2489 "MachineIndependent/glslang.y" +#line 2520 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8882 "MachineIndependent/glslang_tab.cpp" +#line 8913 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2493 "MachineIndependent/glslang.y" +#line 2524 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8891 "MachineIndependent/glslang_tab.cpp" +#line 8922 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2497 "MachineIndependent/glslang.y" +#line 2528 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8900 "MachineIndependent/glslang_tab.cpp" +#line 8931 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2501 "MachineIndependent/glslang.y" +#line 2532 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8910 "MachineIndependent/glslang_tab.cpp" +#line 8941 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER1D */ -#line 2506 "MachineIndependent/glslang.y" +#line 2537 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8920 "MachineIndependent/glslang_tab.cpp" +#line 8951 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLER2D */ -#line 2511 "MachineIndependent/glslang.y" +#line 2542 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8930 "MachineIndependent/glslang_tab.cpp" +#line 8961 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLER3D */ -#line 2516 "MachineIndependent/glslang.y" +#line 2547 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8940 "MachineIndependent/glslang_tab.cpp" +#line 8971 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2521 "MachineIndependent/glslang.y" +#line 2552 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8950 "MachineIndependent/glslang_tab.cpp" +#line 8981 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2526 "MachineIndependent/glslang.y" +#line 2557 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8960 "MachineIndependent/glslang_tab.cpp" +#line 8991 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2531 "MachineIndependent/glslang.y" +#line 2562 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8970 "MachineIndependent/glslang_tab.cpp" +#line 9001 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2536 "MachineIndependent/glslang.y" +#line 2567 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 8980 "MachineIndependent/glslang_tab.cpp" +#line 9011 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2541 "MachineIndependent/glslang.y" +#line 2572 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 8990 "MachineIndependent/glslang_tab.cpp" +#line 9021 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2546 "MachineIndependent/glslang.y" +#line 2577 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9000 "MachineIndependent/glslang_tab.cpp" +#line 9031 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2551 "MachineIndependent/glslang.y" +#line 2582 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9010 "MachineIndependent/glslang_tab.cpp" +#line 9041 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2556 "MachineIndependent/glslang.y" +#line 2587 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9020 "MachineIndependent/glslang_tab.cpp" +#line 9051 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2561 "MachineIndependent/glslang.y" +#line 2592 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9030 "MachineIndependent/glslang_tab.cpp" +#line 9061 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2566 "MachineIndependent/glslang.y" +#line 2597 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9040 "MachineIndependent/glslang_tab.cpp" +#line 9071 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2571 "MachineIndependent/glslang.y" +#line 2602 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9051 "MachineIndependent/glslang_tab.cpp" +#line 9082 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2577 "MachineIndependent/glslang.y" +#line 2608 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9062 "MachineIndependent/glslang_tab.cpp" +#line 9093 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2583 "MachineIndependent/glslang.y" +#line 2614 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9073 "MachineIndependent/glslang_tab.cpp" +#line 9104 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2589 "MachineIndependent/glslang.y" +#line 2620 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9084 "MachineIndependent/glslang_tab.cpp" +#line 9115 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2595 "MachineIndependent/glslang.y" +#line 2626 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9095 "MachineIndependent/glslang_tab.cpp" +#line 9126 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2601 "MachineIndependent/glslang.y" +#line 2632 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9106 "MachineIndependent/glslang_tab.cpp" +#line 9137 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2607 "MachineIndependent/glslang.y" +#line 2638 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9117 "MachineIndependent/glslang_tab.cpp" +#line 9148 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2613 "MachineIndependent/glslang.y" +#line 2644 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9128 "MachineIndependent/glslang_tab.cpp" +#line 9159 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2619 "MachineIndependent/glslang.y" +#line 2650 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9139 "MachineIndependent/glslang_tab.cpp" +#line 9170 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2625 "MachineIndependent/glslang.y" +#line 2656 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9150 "MachineIndependent/glslang_tab.cpp" +#line 9181 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2631 "MachineIndependent/glslang.y" +#line 2662 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9161 "MachineIndependent/glslang_tab.cpp" +#line 9192 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2637 "MachineIndependent/glslang.y" +#line 2668 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9172 "MachineIndependent/glslang_tab.cpp" +#line 9203 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2643 "MachineIndependent/glslang.y" +#line 2674 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9183 "MachineIndependent/glslang_tab.cpp" +#line 9214 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2649 "MachineIndependent/glslang.y" +#line 2680 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9193 "MachineIndependent/glslang_tab.cpp" +#line 9224 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2654 "MachineIndependent/glslang.y" +#line 2685 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9203 "MachineIndependent/glslang_tab.cpp" +#line 9234 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2659 "MachineIndependent/glslang.y" +#line 2690 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9213 "MachineIndependent/glslang_tab.cpp" +#line 9244 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2664 "MachineIndependent/glslang.y" +#line 2695 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9223 "MachineIndependent/glslang_tab.cpp" +#line 9254 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2669 "MachineIndependent/glslang.y" +#line 2700 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9233 "MachineIndependent/glslang_tab.cpp" +#line 9264 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLER2D */ -#line 2674 "MachineIndependent/glslang.y" +#line 2705 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9243 "MachineIndependent/glslang_tab.cpp" +#line 9274 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: USAMPLER3D */ -#line 2679 "MachineIndependent/glslang.y" +#line 2710 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9253 "MachineIndependent/glslang_tab.cpp" +#line 9284 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2684 "MachineIndependent/glslang.y" +#line 2715 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9263 "MachineIndependent/glslang_tab.cpp" +#line 9294 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2689 "MachineIndependent/glslang.y" +#line 2720 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9273 "MachineIndependent/glslang_tab.cpp" +#line 9304 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2694 "MachineIndependent/glslang.y" +#line 2725 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9283 "MachineIndependent/glslang_tab.cpp" +#line 9314 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLER1D */ -#line 2699 "MachineIndependent/glslang.y" +#line 2730 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9293 "MachineIndependent/glslang_tab.cpp" +#line 9324 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2704 "MachineIndependent/glslang.y" +#line 2735 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9303 "MachineIndependent/glslang_tab.cpp" +#line 9334 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2709 "MachineIndependent/glslang.y" +#line 2740 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9313 "MachineIndependent/glslang_tab.cpp" +#line 9344 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2714 "MachineIndependent/glslang.y" +#line 2745 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9323 "MachineIndependent/glslang_tab.cpp" +#line 9354 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2719 "MachineIndependent/glslang.y" +#line 2750 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9333 "MachineIndependent/glslang_tab.cpp" +#line 9364 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2724 "MachineIndependent/glslang.y" +#line 2755 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9343 "MachineIndependent/glslang_tab.cpp" +#line 9374 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2729 "MachineIndependent/glslang.y" +#line 2760 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9353 "MachineIndependent/glslang_tab.cpp" +#line 9384 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE2D */ -#line 2734 "MachineIndependent/glslang.y" +#line 2765 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9363 "MachineIndependent/glslang_tab.cpp" +#line 9394 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURE3D */ -#line 2739 "MachineIndependent/glslang.y" +#line 2770 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9373 "MachineIndependent/glslang_tab.cpp" +#line 9404 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2744 "MachineIndependent/glslang.y" +#line 2775 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9383 "MachineIndependent/glslang_tab.cpp" +#line 9414 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2749 "MachineIndependent/glslang.y" +#line 2780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9393 "MachineIndependent/glslang_tab.cpp" +#line 9424 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2754 "MachineIndependent/glslang.y" +#line 2785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9403 "MachineIndependent/glslang_tab.cpp" +#line 9434 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2759 "MachineIndependent/glslang.y" +#line 2790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9413 "MachineIndependent/glslang_tab.cpp" +#line 9444 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2764 "MachineIndependent/glslang.y" +#line 2795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9423 "MachineIndependent/glslang_tab.cpp" +#line 9454 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2769 "MachineIndependent/glslang.y" +#line 2800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9433 "MachineIndependent/glslang_tab.cpp" +#line 9464 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2774 "MachineIndependent/glslang.y" +#line 2805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9443 "MachineIndependent/glslang_tab.cpp" +#line 9474 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2779 "MachineIndependent/glslang.y" +#line 2810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9453 "MachineIndependent/glslang_tab.cpp" +#line 9484 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2784 "MachineIndependent/glslang.y" +#line 2815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9463 "MachineIndependent/glslang_tab.cpp" +#line 9494 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2789 "MachineIndependent/glslang.y" +#line 2820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9473 "MachineIndependent/glslang_tab.cpp" +#line 9504 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLER */ -#line 2794 "MachineIndependent/glslang.y" +#line 2825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9483 "MachineIndependent/glslang_tab.cpp" +#line 9514 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2799 "MachineIndependent/glslang.y" +#line 2830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9493 "MachineIndependent/glslang_tab.cpp" +#line 9524 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2804 "MachineIndependent/glslang.y" +#line 2835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9503 "MachineIndependent/glslang_tab.cpp" +#line 9534 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2809 "MachineIndependent/glslang.y" +#line 2840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9513 "MachineIndependent/glslang_tab.cpp" +#line 9544 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2814 "MachineIndependent/glslang.y" +#line 2845 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9524 "MachineIndependent/glslang_tab.cpp" +#line 9555 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2820 "MachineIndependent/glslang.y" +#line 2851 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9535 "MachineIndependent/glslang_tab.cpp" +#line 9566 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2826 "MachineIndependent/glslang.y" +#line 2857 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9545 "MachineIndependent/glslang_tab.cpp" +#line 9576 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2831 "MachineIndependent/glslang.y" +#line 2862 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9555 "MachineIndependent/glslang_tab.cpp" +#line 9586 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2836 "MachineIndependent/glslang.y" +#line 2867 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9565 "MachineIndependent/glslang_tab.cpp" +#line 9596 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2841 "MachineIndependent/glslang.y" +#line 2872 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9576 "MachineIndependent/glslang_tab.cpp" +#line 9607 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2847 "MachineIndependent/glslang.y" +#line 2878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9586 "MachineIndependent/glslang_tab.cpp" +#line 9617 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2852 "MachineIndependent/glslang.y" +#line 2883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9596 "MachineIndependent/glslang_tab.cpp" +#line 9627 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2857 "MachineIndependent/glslang.y" +#line 2888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9606 "MachineIndependent/glslang_tab.cpp" +#line 9637 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2862 "MachineIndependent/glslang.y" +#line 2893 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9617 "MachineIndependent/glslang_tab.cpp" +#line 9648 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2868 "MachineIndependent/glslang.y" +#line 2899 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9627 "MachineIndependent/glslang_tab.cpp" +#line 9658 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2873 "MachineIndependent/glslang.y" +#line 2904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9637 "MachineIndependent/glslang_tab.cpp" +#line 9668 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2878 "MachineIndependent/glslang.y" +#line 2909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9647 "MachineIndependent/glslang_tab.cpp" +#line 9678 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2883 "MachineIndependent/glslang.y" +#line 2914 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9658 "MachineIndependent/glslang_tab.cpp" +#line 9689 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2889 "MachineIndependent/glslang.y" +#line 2920 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9668 "MachineIndependent/glslang_tab.cpp" +#line 9699 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2894 "MachineIndependent/glslang.y" +#line 2925 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9678 "MachineIndependent/glslang_tab.cpp" +#line 9709 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: TEXTURE1D */ -#line 2899 "MachineIndependent/glslang.y" +#line 2930 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9688 "MachineIndependent/glslang_tab.cpp" +#line 9719 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2904 "MachineIndependent/glslang.y" +#line 2935 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9699 "MachineIndependent/glslang_tab.cpp" +#line 9730 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2910 "MachineIndependent/glslang.y" +#line 2941 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9710 "MachineIndependent/glslang_tab.cpp" +#line 9741 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2916 "MachineIndependent/glslang.y" +#line 2947 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9721 "MachineIndependent/glslang_tab.cpp" +#line 9752 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2922 "MachineIndependent/glslang.y" +#line 2953 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9732 "MachineIndependent/glslang_tab.cpp" +#line 9763 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2928 "MachineIndependent/glslang.y" +#line 2959 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9742 "MachineIndependent/glslang_tab.cpp" +#line 9773 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2933 "MachineIndependent/glslang.y" +#line 2964 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9753 "MachineIndependent/glslang_tab.cpp" +#line 9784 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2939 "MachineIndependent/glslang.y" +#line 2970 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9764 "MachineIndependent/glslang_tab.cpp" +#line 9795 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2945 "MachineIndependent/glslang.y" +#line 2976 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9775 "MachineIndependent/glslang_tab.cpp" +#line 9806 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2951 "MachineIndependent/glslang.y" +#line 2982 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9785 "MachineIndependent/glslang_tab.cpp" +#line 9816 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2956 "MachineIndependent/glslang.y" +#line 2987 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9795 "MachineIndependent/glslang_tab.cpp" +#line 9826 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2961 "MachineIndependent/glslang.y" +#line 2992 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9805 "MachineIndependent/glslang_tab.cpp" +#line 9836 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2966 "MachineIndependent/glslang.y" +#line 2997 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9815 "MachineIndependent/glslang_tab.cpp" +#line 9846 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 2971 "MachineIndependent/glslang.y" +#line 3002 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9825 "MachineIndependent/glslang_tab.cpp" +#line 9856 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 2976 "MachineIndependent/glslang.y" +#line 3007 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9836 "MachineIndependent/glslang_tab.cpp" +#line 9867 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 2982 "MachineIndependent/glslang.y" +#line 3013 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9846 "MachineIndependent/glslang_tab.cpp" +#line 9877 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 2987 "MachineIndependent/glslang.y" +#line 3018 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9856 "MachineIndependent/glslang_tab.cpp" +#line 9887 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 2992 "MachineIndependent/glslang.y" +#line 3023 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9866 "MachineIndependent/glslang_tab.cpp" +#line 9897 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 2997 "MachineIndependent/glslang.y" +#line 3028 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9877 "MachineIndependent/glslang_tab.cpp" +#line 9908 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3003 "MachineIndependent/glslang.y" +#line 3034 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9887 "MachineIndependent/glslang_tab.cpp" +#line 9918 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3008 "MachineIndependent/glslang.y" +#line 3039 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9897 "MachineIndependent/glslang_tab.cpp" +#line 9928 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3013 "MachineIndependent/glslang.y" +#line 3044 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9907 "MachineIndependent/glslang_tab.cpp" +#line 9938 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3018 "MachineIndependent/glslang.y" +#line 3049 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9918 "MachineIndependent/glslang_tab.cpp" +#line 9949 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3024 "MachineIndependent/glslang.y" +#line 3055 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9928 "MachineIndependent/glslang_tab.cpp" +#line 9959 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3029 "MachineIndependent/glslang.y" +#line 3060 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9938 "MachineIndependent/glslang_tab.cpp" +#line 9969 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3034 "MachineIndependent/glslang.y" +#line 3065 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9948 "MachineIndependent/glslang_tab.cpp" +#line 9979 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3039 "MachineIndependent/glslang.y" +#line 3070 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9959 "MachineIndependent/glslang_tab.cpp" +#line 9990 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3045 "MachineIndependent/glslang.y" +#line 3076 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9969 "MachineIndependent/glslang_tab.cpp" +#line 10000 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3050 "MachineIndependent/glslang.y" +#line 3081 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 9979 "MachineIndependent/glslang_tab.cpp" +#line 10010 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: IMAGE1D */ -#line 3055 "MachineIndependent/glslang.y" +#line 3086 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 9989 "MachineIndependent/glslang_tab.cpp" +#line 10020 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3060 "MachineIndependent/glslang.y" +#line 3091 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10000 "MachineIndependent/glslang_tab.cpp" +#line 10031 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: IIMAGE1D */ -#line 3066 "MachineIndependent/glslang.y" +#line 3097 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10010 "MachineIndependent/glslang_tab.cpp" +#line 10041 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: UIMAGE1D */ -#line 3071 "MachineIndependent/glslang.y" +#line 3102 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10020 "MachineIndependent/glslang_tab.cpp" +#line 10051 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: IMAGE2D */ -#line 3076 "MachineIndependent/glslang.y" +#line 3107 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10030 "MachineIndependent/glslang_tab.cpp" +#line 10061 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3081 "MachineIndependent/glslang.y" +#line 3112 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10041 "MachineIndependent/glslang_tab.cpp" +#line 10072 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: IIMAGE2D */ -#line 3087 "MachineIndependent/glslang.y" +#line 3118 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10051 "MachineIndependent/glslang_tab.cpp" +#line 10082 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: UIMAGE2D */ -#line 3092 "MachineIndependent/glslang.y" +#line 3123 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10061 "MachineIndependent/glslang_tab.cpp" +#line 10092 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: IMAGE3D */ -#line 3097 "MachineIndependent/glslang.y" +#line 3128 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10071 "MachineIndependent/glslang_tab.cpp" +#line 10102 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3102 "MachineIndependent/glslang.y" +#line 3133 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10082 "MachineIndependent/glslang_tab.cpp" +#line 10113 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: IIMAGE3D */ -#line 3108 "MachineIndependent/glslang.y" +#line 3139 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10092 "MachineIndependent/glslang_tab.cpp" +#line 10123 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: UIMAGE3D */ -#line 3113 "MachineIndependent/glslang.y" +#line 3144 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10102 "MachineIndependent/glslang_tab.cpp" +#line 10133 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3118 "MachineIndependent/glslang.y" +#line 3149 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10112 "MachineIndependent/glslang_tab.cpp" +#line 10143 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3123 "MachineIndependent/glslang.y" +#line 3154 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10123 "MachineIndependent/glslang_tab.cpp" +#line 10154 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3129 "MachineIndependent/glslang.y" +#line 3160 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10133 "MachineIndependent/glslang_tab.cpp" +#line 10164 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3134 "MachineIndependent/glslang.y" +#line 3165 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10143 "MachineIndependent/glslang_tab.cpp" +#line 10174 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IMAGECUBE */ -#line 3139 "MachineIndependent/glslang.y" +#line 3170 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10153 "MachineIndependent/glslang_tab.cpp" +#line 10184 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3144 "MachineIndependent/glslang.y" +#line 3175 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10164 "MachineIndependent/glslang_tab.cpp" +#line 10195 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3150 "MachineIndependent/glslang.y" +#line 3181 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10174 "MachineIndependent/glslang_tab.cpp" +#line 10205 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3155 "MachineIndependent/glslang.y" +#line 3186 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10184 "MachineIndependent/glslang_tab.cpp" +#line 10215 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3160 "MachineIndependent/glslang.y" +#line 3191 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10194 "MachineIndependent/glslang_tab.cpp" +#line 10225 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3165 "MachineIndependent/glslang.y" +#line 3196 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10205 "MachineIndependent/glslang_tab.cpp" +#line 10236 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3171 "MachineIndependent/glslang.y" +#line 3202 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10215 "MachineIndependent/glslang_tab.cpp" +#line 10246 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3176 "MachineIndependent/glslang.y" +#line 3207 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10225 "MachineIndependent/glslang_tab.cpp" +#line 10256 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3181 "MachineIndependent/glslang.y" +#line 3212 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10235 "MachineIndependent/glslang_tab.cpp" +#line 10266 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3186 "MachineIndependent/glslang.y" +#line 3217 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10246 "MachineIndependent/glslang_tab.cpp" +#line 10277 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3192 "MachineIndependent/glslang.y" +#line 3223 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10256 "MachineIndependent/glslang_tab.cpp" +#line 10287 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3197 "MachineIndependent/glslang.y" +#line 3228 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10266 "MachineIndependent/glslang_tab.cpp" +#line 10297 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3202 "MachineIndependent/glslang.y" +#line 3233 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10276 "MachineIndependent/glslang_tab.cpp" +#line 10307 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3207 "MachineIndependent/glslang.y" +#line 3238 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10287 "MachineIndependent/glslang_tab.cpp" +#line 10318 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3213 "MachineIndependent/glslang.y" +#line 3244 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10297 "MachineIndependent/glslang_tab.cpp" +#line 10328 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3218 "MachineIndependent/glslang.y" +#line 3249 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10307 "MachineIndependent/glslang_tab.cpp" +#line 10338 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3223 "MachineIndependent/glslang.y" +#line 3254 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10317 "MachineIndependent/glslang_tab.cpp" +#line 10348 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3228 "MachineIndependent/glslang.y" +#line 3259 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10328 "MachineIndependent/glslang_tab.cpp" +#line 10359 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3234 "MachineIndependent/glslang.y" +#line 3265 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10338 "MachineIndependent/glslang_tab.cpp" +#line 10369 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3239 "MachineIndependent/glslang.y" +#line 3270 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10348 "MachineIndependent/glslang_tab.cpp" +#line 10379 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3244 "MachineIndependent/glslang.y" +#line 3275 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10358 "MachineIndependent/glslang_tab.cpp" +#line 10389 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3249 "MachineIndependent/glslang.y" +#line 3280 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10369 "MachineIndependent/glslang_tab.cpp" +#line 10400 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3255 "MachineIndependent/glslang.y" +#line 3286 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10379 "MachineIndependent/glslang_tab.cpp" +#line 10410 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3260 "MachineIndependent/glslang.y" +#line 3291 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10389 "MachineIndependent/glslang_tab.cpp" +#line 10420 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3265 "MachineIndependent/glslang.y" +#line 3296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10399 "MachineIndependent/glslang_tab.cpp" +#line 10430 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3270 "MachineIndependent/glslang.y" +#line 3301 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10410 "MachineIndependent/glslang_tab.cpp" +#line 10441 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3276 "MachineIndependent/glslang.y" +#line 3307 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10420 "MachineIndependent/glslang_tab.cpp" +#line 10451 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3281 "MachineIndependent/glslang.y" +#line 3312 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10430 "MachineIndependent/glslang_tab.cpp" +#line 10461 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3286 "MachineIndependent/glslang.y" +#line 3317 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10440 "MachineIndependent/glslang_tab.cpp" +#line 10471 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3291 "MachineIndependent/glslang.y" +#line 3322 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10450 "MachineIndependent/glslang_tab.cpp" +#line 10481 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3296 "MachineIndependent/glslang.y" +#line 3327 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10460 "MachineIndependent/glslang_tab.cpp" +#line 10491 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3301 "MachineIndependent/glslang.y" +#line 3332 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10470 "MachineIndependent/glslang_tab.cpp" +#line 10501 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3306 "MachineIndependent/glslang.y" +#line 3337 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10480 "MachineIndependent/glslang_tab.cpp" +#line 10511 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3311 "MachineIndependent/glslang.y" +#line 3342 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10490 "MachineIndependent/glslang_tab.cpp" +#line 10521 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3316 "MachineIndependent/glslang.y" +#line 3347 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10500 "MachineIndependent/glslang_tab.cpp" +#line 10531 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3321 "MachineIndependent/glslang.y" +#line 3352 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10510 "MachineIndependent/glslang_tab.cpp" +#line 10541 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3326 "MachineIndependent/glslang.y" +#line 3357 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10520 "MachineIndependent/glslang_tab.cpp" +#line 10551 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3331 "MachineIndependent/glslang.y" +#line 3362 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10530 "MachineIndependent/glslang_tab.cpp" +#line 10561 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3336 "MachineIndependent/glslang.y" +#line 3367 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10540 "MachineIndependent/glslang_tab.cpp" +#line 10571 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3341 "MachineIndependent/glslang.y" +#line 3372 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10550 "MachineIndependent/glslang_tab.cpp" +#line 10581 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3346 "MachineIndependent/glslang.y" +#line 3377 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10560 "MachineIndependent/glslang_tab.cpp" +#line 10591 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3351 "MachineIndependent/glslang.y" +#line 3382 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10570 "MachineIndependent/glslang_tab.cpp" +#line 10601 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3356 "MachineIndependent/glslang.y" +#line 3387 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10580 "MachineIndependent/glslang_tab.cpp" +#line 10611 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3361 "MachineIndependent/glslang.y" +#line 3392 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10590 "MachineIndependent/glslang_tab.cpp" +#line 10621 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3366 "MachineIndependent/glslang.y" +#line 3397 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10600 "MachineIndependent/glslang_tab.cpp" +#line 10631 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3371 "MachineIndependent/glslang.y" +#line 3402 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10610 "MachineIndependent/glslang_tab.cpp" +#line 10641 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3376 "MachineIndependent/glslang.y" +#line 3407 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10620 "MachineIndependent/glslang_tab.cpp" +#line 10651 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3381 "MachineIndependent/glslang.y" +#line 3412 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10630 "MachineIndependent/glslang_tab.cpp" +#line 10661 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3386 "MachineIndependent/glslang.y" +#line 3417 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10640 "MachineIndependent/glslang_tab.cpp" +#line 10671 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3391 "MachineIndependent/glslang.y" +#line 3422 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10650 "MachineIndependent/glslang_tab.cpp" +#line 10681 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3396 "MachineIndependent/glslang.y" +#line 3427 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10661 "MachineIndependent/glslang_tab.cpp" +#line 10692 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3402 "MachineIndependent/glslang.y" +#line 3433 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10672 "MachineIndependent/glslang_tab.cpp" +#line 10703 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3408 "MachineIndependent/glslang.y" +#line 3439 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10683 "MachineIndependent/glslang_tab.cpp" +#line 10714 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3414 "MachineIndependent/glslang.y" +#line 3445 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10694 "MachineIndependent/glslang_tab.cpp" +#line 10725 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3420 "MachineIndependent/glslang.y" +#line 3451 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10705 "MachineIndependent/glslang_tab.cpp" +#line 10736 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3426 "MachineIndependent/glslang.y" +#line 3457 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10716 "MachineIndependent/glslang_tab.cpp" +#line 10747 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3432 "MachineIndependent/glslang.y" +#line 3463 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10727 "MachineIndependent/glslang_tab.cpp" +#line 10758 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3438 "MachineIndependent/glslang.y" +#line 3469 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10735,11 +10766,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10739 "MachineIndependent/glslang_tab.cpp" +#line 10770 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3445 "MachineIndependent/glslang.y" +#line 3476 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10747,55 +10778,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10751 "MachineIndependent/glslang_tab.cpp" +#line 10782 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3452 "MachineIndependent/glslang.y" +#line 3483 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10762 "MachineIndependent/glslang_tab.cpp" +#line 10793 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3458 "MachineIndependent/glslang.y" +#line 3489 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10773 "MachineIndependent/glslang_tab.cpp" +#line 10804 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3464 "MachineIndependent/glslang.y" +#line 3495 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10784 "MachineIndependent/glslang_tab.cpp" +#line 10815 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3470 "MachineIndependent/glslang.y" +#line 3501 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10795 "MachineIndependent/glslang_tab.cpp" +#line 10826 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3476 "MachineIndependent/glslang.y" +#line 3507 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10803,11 +10834,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10807 "MachineIndependent/glslang_tab.cpp" +#line 10838 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3483 "MachineIndependent/glslang.y" +#line 3514 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10815,11 +10846,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10819 "MachineIndependent/glslang_tab.cpp" +#line 10850 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3490 "MachineIndependent/glslang.y" +#line 3521 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10827,11 +10858,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10831 "MachineIndependent/glslang_tab.cpp" +#line 10862 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: COOPMAT */ -#line 3497 "MachineIndependent/glslang.y" +#line 3528 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10839,39 +10870,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 10843 "MachineIndependent/glslang_tab.cpp" +#line 10874 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3504 "MachineIndependent/glslang.y" +#line 3535 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10852 "MachineIndependent/glslang_tab.cpp" +#line 10883 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3508 "MachineIndependent/glslang.y" +#line 3539 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10861 "MachineIndependent/glslang_tab.cpp" +#line 10892 "MachineIndependent/glslang_tab.cpp" break; case 539: /* type_specifier_nonarray: struct_specifier */ -#line 3512 "MachineIndependent/glslang.y" +#line 3543 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10871 "MachineIndependent/glslang_tab.cpp" +#line 10902 "MachineIndependent/glslang_tab.cpp" break; case 540: /* type_specifier_nonarray: TYPE_NAME */ -#line 3517 "MachineIndependent/glslang.y" +#line 3548 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10885,69 +10916,75 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10889 "MachineIndependent/glslang_tab.cpp" +#line 10920 "MachineIndependent/glslang_tab.cpp" break; case 541: /* precision_qualifier: HIGH_PRECISION */ -#line 3533 "MachineIndependent/glslang.y" +#line 3564 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10899 "MachineIndependent/glslang_tab.cpp" +#line 10930 "MachineIndependent/glslang_tab.cpp" break; case 542: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3538 "MachineIndependent/glslang.y" +#line 3569 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10909 "MachineIndependent/glslang_tab.cpp" +#line 10940 "MachineIndependent/glslang_tab.cpp" break; case 543: /* precision_qualifier: LOW_PRECISION */ -#line 3543 "MachineIndependent/glslang.y" +#line 3574 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10919 "MachineIndependent/glslang_tab.cpp" +#line 10950 "MachineIndependent/glslang_tab.cpp" break; case 544: /* $@3: %empty */ -#line 3551 "MachineIndependent/glslang.y" +#line 3582 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10925 "MachineIndependent/glslang_tab.cpp" +#line 10956 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3551 "MachineIndependent/glslang.y" +#line 3582 "MachineIndependent/glslang.y" { + TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); parseContext.structArrayCheck((yyvsp[-4].lex).loc, *structure); + TVariable* userTypeDef = new TVariable((yyvsp[-4].lex).string, *structure, true); if (! parseContext.symbolTable.insert(*userTypeDef)) parseContext.error((yyvsp[-4].lex).loc, "redefinition", (yyvsp[-4].lex).string->c_str(), "struct"); + else if (parseContext.spvVersion.vulkanRelaxed + && structure->containsOpaque()) + parseContext.relaxedSymbols.push_back(structure->getTypeName()); + (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).basicType = EbtStruct; (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10941 "MachineIndependent/glslang_tab.cpp" +#line 10978 "MachineIndependent/glslang_tab.cpp" break; case 546: /* $@4: %empty */ -#line 3562 "MachineIndependent/glslang.y" +#line 3599 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10947 "MachineIndependent/glslang_tab.cpp" +#line 10984 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3562 "MachineIndependent/glslang.y" +#line 3599 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10955,19 +10992,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10959 "MachineIndependent/glslang_tab.cpp" +#line 10996 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declaration_list: struct_declaration */ -#line 3572 "MachineIndependent/glslang.y" +#line 3609 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10967 "MachineIndependent/glslang_tab.cpp" +#line 11004 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3575 "MachineIndependent/glslang.y" +#line 3612 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -10978,11 +11015,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 10982 "MachineIndependent/glslang_tab.cpp" +#line 11019 "MachineIndependent/glslang_tab.cpp" break; case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3588 "MachineIndependent/glslang.y" +#line 3625 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11005,11 +11042,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11009 "MachineIndependent/glslang_tab.cpp" +#line 11046 "MachineIndependent/glslang_tab.cpp" break; case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3610 "MachineIndependent/glslang.y" +#line 3647 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11034,38 +11071,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11038 "MachineIndependent/glslang_tab.cpp" +#line 11075 "MachineIndependent/glslang_tab.cpp" break; case 552: /* struct_declarator_list: struct_declarator */ -#line 3637 "MachineIndependent/glslang.y" +#line 3674 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11047 "MachineIndependent/glslang_tab.cpp" +#line 11084 "MachineIndependent/glslang_tab.cpp" break; case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3641 "MachineIndependent/glslang.y" +#line 3678 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11055 "MachineIndependent/glslang_tab.cpp" +#line 11092 "MachineIndependent/glslang_tab.cpp" break; case 554: /* struct_declarator: IDENTIFIER */ -#line 3647 "MachineIndependent/glslang.y" +#line 3684 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11065 "MachineIndependent/glslang_tab.cpp" +#line 11102 "MachineIndependent/glslang_tab.cpp" break; case 555: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3652 "MachineIndependent/glslang.y" +#line 3689 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11074,246 +11111,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11078 "MachineIndependent/glslang_tab.cpp" +#line 11115 "MachineIndependent/glslang_tab.cpp" break; case 556: /* initializer: assignment_expression */ -#line 3663 "MachineIndependent/glslang.y" +#line 3700 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11086 "MachineIndependent/glslang_tab.cpp" +#line 11123 "MachineIndependent/glslang_tab.cpp" break; case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3666 "MachineIndependent/glslang.y" +#line 3703 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11097 "MachineIndependent/glslang_tab.cpp" +#line 11134 "MachineIndependent/glslang_tab.cpp" break; case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3672 "MachineIndependent/glslang.y" +#line 3709 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11108 "MachineIndependent/glslang_tab.cpp" +#line 11145 "MachineIndependent/glslang_tab.cpp" break; case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3678 "MachineIndependent/glslang.y" +#line 3715 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11119 "MachineIndependent/glslang_tab.cpp" +#line 11156 "MachineIndependent/glslang_tab.cpp" break; case 560: /* initializer_list: initializer */ -#line 3687 "MachineIndependent/glslang.y" +#line 3724 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11127 "MachineIndependent/glslang_tab.cpp" +#line 11164 "MachineIndependent/glslang_tab.cpp" break; case 561: /* initializer_list: initializer_list COMMA initializer */ -#line 3690 "MachineIndependent/glslang.y" +#line 3727 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11135 "MachineIndependent/glslang_tab.cpp" +#line 11172 "MachineIndependent/glslang_tab.cpp" break; case 562: /* declaration_statement: declaration */ -#line 3696 "MachineIndependent/glslang.y" +#line 3733 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11141 "MachineIndependent/glslang_tab.cpp" +#line 11178 "MachineIndependent/glslang_tab.cpp" break; case 563: /* statement: compound_statement */ -#line 3700 "MachineIndependent/glslang.y" +#line 3737 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11147 "MachineIndependent/glslang_tab.cpp" +#line 11184 "MachineIndependent/glslang_tab.cpp" break; case 564: /* statement: simple_statement */ -#line 3701 "MachineIndependent/glslang.y" +#line 3738 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11153 "MachineIndependent/glslang_tab.cpp" +#line 11190 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: declaration_statement */ -#line 3707 "MachineIndependent/glslang.y" +#line 3744 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11159 "MachineIndependent/glslang_tab.cpp" +#line 11196 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: expression_statement */ -#line 3708 "MachineIndependent/glslang.y" +#line 3745 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11165 "MachineIndependent/glslang_tab.cpp" +#line 11202 "MachineIndependent/glslang_tab.cpp" break; case 567: /* simple_statement: selection_statement */ -#line 3709 "MachineIndependent/glslang.y" +#line 3746 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11171 "MachineIndependent/glslang_tab.cpp" +#line 11208 "MachineIndependent/glslang_tab.cpp" break; case 568: /* simple_statement: switch_statement */ -#line 3710 "MachineIndependent/glslang.y" +#line 3747 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11177 "MachineIndependent/glslang_tab.cpp" +#line 11214 "MachineIndependent/glslang_tab.cpp" break; case 569: /* simple_statement: case_label */ -#line 3711 "MachineIndependent/glslang.y" +#line 3748 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11183 "MachineIndependent/glslang_tab.cpp" +#line 11220 "MachineIndependent/glslang_tab.cpp" break; case 570: /* simple_statement: iteration_statement */ -#line 3712 "MachineIndependent/glslang.y" +#line 3749 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11189 "MachineIndependent/glslang_tab.cpp" +#line 11226 "MachineIndependent/glslang_tab.cpp" break; case 571: /* simple_statement: jump_statement */ -#line 3713 "MachineIndependent/glslang.y" +#line 3750 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11195 "MachineIndependent/glslang_tab.cpp" +#line 11232 "MachineIndependent/glslang_tab.cpp" break; case 572: /* simple_statement: demote_statement */ -#line 3714 "MachineIndependent/glslang.y" +#line 3751 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11201 "MachineIndependent/glslang_tab.cpp" +#line 11238 "MachineIndependent/glslang_tab.cpp" break; case 573: /* demote_statement: DEMOTE SEMICOLON */ -#line 3718 "MachineIndependent/glslang.y" +#line 3755 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11211 "MachineIndependent/glslang_tab.cpp" +#line 11248 "MachineIndependent/glslang_tab.cpp" break; case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3726 "MachineIndependent/glslang.y" +#line 3763 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11217 "MachineIndependent/glslang_tab.cpp" +#line 11254 "MachineIndependent/glslang_tab.cpp" break; case 575: /* $@5: %empty */ -#line 3727 "MachineIndependent/glslang.y" +#line 3764 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11226 "MachineIndependent/glslang_tab.cpp" +#line 11263 "MachineIndependent/glslang_tab.cpp" break; case 576: /* $@6: %empty */ -#line 3731 "MachineIndependent/glslang.y" +#line 3768 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11235 "MachineIndependent/glslang_tab.cpp" +#line 11272 "MachineIndependent/glslang_tab.cpp" break; case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3735 "MachineIndependent/glslang.y" +#line 3772 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11245 "MachineIndependent/glslang_tab.cpp" +#line 11282 "MachineIndependent/glslang_tab.cpp" break; case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3743 "MachineIndependent/glslang.y" +#line 3780 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11251 "MachineIndependent/glslang_tab.cpp" +#line 11288 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_no_new_scope: simple_statement */ -#line 3744 "MachineIndependent/glslang.y" +#line 3781 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11257 "MachineIndependent/glslang_tab.cpp" +#line 11294 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@7: %empty */ -#line 3748 "MachineIndependent/glslang.y" +#line 3785 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11265 "MachineIndependent/glslang_tab.cpp" +#line 11302 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@7 compound_statement */ -#line 3751 "MachineIndependent/glslang.y" +#line 3788 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11274 "MachineIndependent/glslang_tab.cpp" +#line 11311 "MachineIndependent/glslang_tab.cpp" break; case 582: /* $@8: %empty */ -#line 3755 "MachineIndependent/glslang.y" +#line 3792 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11284 "MachineIndependent/glslang_tab.cpp" +#line 11321 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement_scoped: $@8 simple_statement */ -#line 3760 "MachineIndependent/glslang.y" +#line 3797 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11295 "MachineIndependent/glslang_tab.cpp" +#line 11332 "MachineIndependent/glslang_tab.cpp" break; case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3769 "MachineIndependent/glslang.y" +#line 3806 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11303 "MachineIndependent/glslang_tab.cpp" +#line 11340 "MachineIndependent/glslang_tab.cpp" break; case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3772 "MachineIndependent/glslang.y" +#line 3809 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11313 "MachineIndependent/glslang_tab.cpp" +#line 11350 "MachineIndependent/glslang_tab.cpp" break; case 586: /* statement_list: statement */ -#line 3780 "MachineIndependent/glslang.y" +#line 3817 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11322,11 +11359,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11326 "MachineIndependent/glslang_tab.cpp" +#line 11363 "MachineIndependent/glslang_tab.cpp" break; case 587: /* statement_list: statement_list statement */ -#line 3788 "MachineIndependent/glslang.y" +#line 3825 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11335,77 +11372,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11339 "MachineIndependent/glslang_tab.cpp" +#line 11376 "MachineIndependent/glslang_tab.cpp" break; case 588: /* expression_statement: SEMICOLON */ -#line 3799 "MachineIndependent/glslang.y" +#line 3836 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11345 "MachineIndependent/glslang_tab.cpp" +#line 11382 "MachineIndependent/glslang_tab.cpp" break; case 589: /* expression_statement: expression SEMICOLON */ -#line 3800 "MachineIndependent/glslang.y" +#line 3837 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11351 "MachineIndependent/glslang_tab.cpp" +#line 11388 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement: selection_statement_nonattributed */ -#line 3804 "MachineIndependent/glslang.y" +#line 3841 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11359 "MachineIndependent/glslang_tab.cpp" +#line 11396 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3807 "MachineIndependent/glslang.y" +#line 3844 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11369 "MachineIndependent/glslang_tab.cpp" +#line 11406 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3814 "MachineIndependent/glslang.y" +#line 3851 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11378 "MachineIndependent/glslang_tab.cpp" +#line 11415 "MachineIndependent/glslang_tab.cpp" break; case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3821 "MachineIndependent/glslang.y" +#line 3858 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11387 "MachineIndependent/glslang_tab.cpp" +#line 11424 "MachineIndependent/glslang_tab.cpp" break; case 594: /* selection_rest_statement: statement_scoped */ -#line 3825 "MachineIndependent/glslang.y" +#line 3862 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11396 "MachineIndependent/glslang_tab.cpp" +#line 11433 "MachineIndependent/glslang_tab.cpp" break; case 595: /* condition: expression */ -#line 3833 "MachineIndependent/glslang.y" +#line 3870 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11405 "MachineIndependent/glslang_tab.cpp" +#line 11442 "MachineIndependent/glslang_tab.cpp" break; case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3837 "MachineIndependent/glslang.y" +#line 3874 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11416,29 +11453,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11420 "MachineIndependent/glslang_tab.cpp" +#line 11457 "MachineIndependent/glslang_tab.cpp" break; case 597: /* switch_statement: switch_statement_nonattributed */ -#line 3850 "MachineIndependent/glslang.y" +#line 3887 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11428 "MachineIndependent/glslang_tab.cpp" +#line 11465 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3853 "MachineIndependent/glslang.y" +#line 3890 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11438 "MachineIndependent/glslang_tab.cpp" +#line 11475 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@9: %empty */ -#line 3860 "MachineIndependent/glslang.y" +#line 3897 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11447,11 +11484,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11451 "MachineIndependent/glslang_tab.cpp" +#line 11488 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3868 "MachineIndependent/glslang.y" +#line 3905 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11461,27 +11498,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11465 "MachineIndependent/glslang_tab.cpp" +#line 11502 "MachineIndependent/glslang_tab.cpp" break; case 601: /* switch_statement_list: %empty */ -#line 3880 "MachineIndependent/glslang.y" +#line 3917 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11473 "MachineIndependent/glslang_tab.cpp" +#line 11510 "MachineIndependent/glslang_tab.cpp" break; case 602: /* switch_statement_list: statement_list */ -#line 3883 "MachineIndependent/glslang.y" +#line 3920 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11481 "MachineIndependent/glslang_tab.cpp" +#line 11518 "MachineIndependent/glslang_tab.cpp" break; case 603: /* case_label: CASE expression COLON */ -#line 3889 "MachineIndependent/glslang.y" +#line 3926 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11494,11 +11531,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11498 "MachineIndependent/glslang_tab.cpp" +#line 11535 "MachineIndependent/glslang_tab.cpp" break; case 604: /* case_label: DEFAULT COLON */ -#line 3901 "MachineIndependent/glslang.y" +#line 3938 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11508,29 +11545,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11512 "MachineIndependent/glslang_tab.cpp" +#line 11549 "MachineIndependent/glslang_tab.cpp" break; case 605: /* iteration_statement: iteration_statement_nonattributed */ -#line 3913 "MachineIndependent/glslang.y" +#line 3950 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11520 "MachineIndependent/glslang_tab.cpp" +#line 11557 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3916 "MachineIndependent/glslang.y" +#line 3953 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11530 "MachineIndependent/glslang_tab.cpp" +#line 11567 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3923 "MachineIndependent/glslang.y" +#line 3960 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11539,11 +11576,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11543 "MachineIndependent/glslang_tab.cpp" +#line 11580 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3931 "MachineIndependent/glslang.y" +#line 3968 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11551,22 +11588,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11555 "MachineIndependent/glslang_tab.cpp" +#line 11592 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 3938 "MachineIndependent/glslang.y" +#line 3975 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11566 "MachineIndependent/glslang_tab.cpp" +#line 11603 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3944 "MachineIndependent/glslang.y" +#line 3981 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11579,22 +11616,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11583 "MachineIndependent/glslang_tab.cpp" +#line 11620 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 3956 "MachineIndependent/glslang.y" +#line 3993 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11594 "MachineIndependent/glslang_tab.cpp" +#line 11631 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3962 "MachineIndependent/glslang.y" +#line 3999 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11607,81 +11644,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11611 "MachineIndependent/glslang_tab.cpp" +#line 11648 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 3977 "MachineIndependent/glslang.y" +#line 4014 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11619 "MachineIndependent/glslang_tab.cpp" +#line 11656 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 3980 "MachineIndependent/glslang.y" +#line 4017 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11627 "MachineIndependent/glslang_tab.cpp" +#line 11664 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 3986 "MachineIndependent/glslang.y" +#line 4023 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11635 "MachineIndependent/glslang_tab.cpp" +#line 11672 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 3989 "MachineIndependent/glslang.y" +#line 4026 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11643 "MachineIndependent/glslang_tab.cpp" +#line 11680 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 3995 "MachineIndependent/glslang.y" +#line 4032 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11652 "MachineIndependent/glslang_tab.cpp" +#line 11689 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 3999 "MachineIndependent/glslang.y" +#line 4036 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11661 "MachineIndependent/glslang_tab.cpp" +#line 11698 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4006 "MachineIndependent/glslang.y" +#line 4043 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11671 "MachineIndependent/glslang_tab.cpp" +#line 11708 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4011 "MachineIndependent/glslang.y" +#line 4048 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11681 "MachineIndependent/glslang_tab.cpp" +#line 11718 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4016 "MachineIndependent/glslang.y" +#line 4053 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11689,101 +11726,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11693 "MachineIndependent/glslang_tab.cpp" +#line 11730 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4023 "MachineIndependent/glslang.y" +#line 4060 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11701 "MachineIndependent/glslang_tab.cpp" +#line 11738 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4026 "MachineIndependent/glslang.y" +#line 4063 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11710 "MachineIndependent/glslang_tab.cpp" +#line 11747 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4030 "MachineIndependent/glslang.y" +#line 4067 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11719 "MachineIndependent/glslang_tab.cpp" +#line 11756 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4034 "MachineIndependent/glslang.y" +#line 4071 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11728 "MachineIndependent/glslang_tab.cpp" +#line 11765 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4038 "MachineIndependent/glslang.y" +#line 4075 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11737 "MachineIndependent/glslang_tab.cpp" +#line 11774 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4047 "MachineIndependent/glslang.y" +#line 4084 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11746 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4051 "MachineIndependent/glslang.y" +#line 4088 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11757 "MachineIndependent/glslang_tab.cpp" +#line 11794 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4060 "MachineIndependent/glslang.y" +#line 4097 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11765 "MachineIndependent/glslang_tab.cpp" +#line 11802 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4063 "MachineIndependent/glslang.y" +#line 4100 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11773 "MachineIndependent/glslang_tab.cpp" +#line 11810 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4066 "MachineIndependent/glslang.y" +#line 4103 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11783 "MachineIndependent/glslang_tab.cpp" +#line 11820 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4074 "MachineIndependent/glslang.y" +#line 4111 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11796,11 +11833,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11800 "MachineIndependent/glslang_tab.cpp" +#line 11837 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4086 "MachineIndependent/glslang.y" +#line 4123 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11828,228 +11865,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11832 "MachineIndependent/glslang_tab.cpp" +#line 11869 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4116 "MachineIndependent/glslang.y" +#line 4153 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11840 "MachineIndependent/glslang_tab.cpp" +#line 11877 "MachineIndependent/glslang_tab.cpp" break; case 635: /* attribute_list: single_attribute */ -#line 4121 "MachineIndependent/glslang.y" +#line 4158 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11848 "MachineIndependent/glslang_tab.cpp" +#line 11885 "MachineIndependent/glslang_tab.cpp" break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4124 "MachineIndependent/glslang.y" +#line 4161 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11856 "MachineIndependent/glslang_tab.cpp" +#line 11893 "MachineIndependent/glslang_tab.cpp" break; case 637: /* single_attribute: IDENTIFIER */ -#line 4129 "MachineIndependent/glslang.y" +#line 4166 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11864 "MachineIndependent/glslang_tab.cpp" +#line 11901 "MachineIndependent/glslang_tab.cpp" break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4132 "MachineIndependent/glslang.y" +#line 4169 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11872 "MachineIndependent/glslang_tab.cpp" +#line 11909 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4137 "MachineIndependent/glslang.y" +#line 4174 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11880 "MachineIndependent/glslang_tab.cpp" +#line 11917 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4140 "MachineIndependent/glslang.y" +#line 4177 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11888 "MachineIndependent/glslang_tab.cpp" +#line 11925 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4145 "MachineIndependent/glslang.y" +#line 4182 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11896 "MachineIndependent/glslang_tab.cpp" +#line 11933 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4148 "MachineIndependent/glslang.y" +#line 4185 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11904 "MachineIndependent/glslang_tab.cpp" +#line 11941 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4153 "MachineIndependent/glslang.y" +#line 4190 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11912 "MachineIndependent/glslang_tab.cpp" +#line 11949 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4156 "MachineIndependent/glslang.y" +#line 4193 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11920 "MachineIndependent/glslang_tab.cpp" +#line 11957 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4161 "MachineIndependent/glslang.y" +#line 4198 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11928 "MachineIndependent/glslang_tab.cpp" +#line 11965 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4164 "MachineIndependent/glslang.y" +#line 4201 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11936 "MachineIndependent/glslang_tab.cpp" +#line 11973 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4169 "MachineIndependent/glslang.y" +#line 4206 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11945 "MachineIndependent/glslang_tab.cpp" +#line 11982 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4173 "MachineIndependent/glslang.y" +#line 4210 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11955 "MachineIndependent/glslang_tab.cpp" +#line 11992 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4178 "MachineIndependent/glslang.y" +#line 4215 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11964 "MachineIndependent/glslang_tab.cpp" +#line 12001 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4182 "MachineIndependent/glslang.y" +#line 4219 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11974 "MachineIndependent/glslang_tab.cpp" +#line 12011 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4187 "MachineIndependent/glslang.y" +#line 4224 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11983 "MachineIndependent/glslang_tab.cpp" +#line 12020 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4191 "MachineIndependent/glslang.y" +#line 4228 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11993 "MachineIndependent/glslang_tab.cpp" +#line 12030 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4198 "MachineIndependent/glslang.y" +#line 4235 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12001 "MachineIndependent/glslang_tab.cpp" +#line 12038 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4201 "MachineIndependent/glslang.y" +#line 4238 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12009 "MachineIndependent/glslang_tab.cpp" +#line 12046 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4206 "MachineIndependent/glslang.y" +#line 4243 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12017 "MachineIndependent/glslang_tab.cpp" +#line 12054 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4209 "MachineIndependent/glslang.y" +#line 4246 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12025 "MachineIndependent/glslang_tab.cpp" +#line 12062 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4212 "MachineIndependent/glslang.y" +#line 4249 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12033 "MachineIndependent/glslang_tab.cpp" +#line 12070 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4215 "MachineIndependent/glslang.y" +#line 4252 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12041 "MachineIndependent/glslang_tab.cpp" +#line 12078 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4218 "MachineIndependent/glslang.y" +#line 4255 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12049 "MachineIndependent/glslang_tab.cpp" +#line 12086 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4223 "MachineIndependent/glslang.y" +#line 4260 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12059,11 +12096,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12063 "MachineIndependent/glslang_tab.cpp" +#line 12100 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4232 "MachineIndependent/glslang.y" +#line 4269 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12073,351 +12110,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12077 "MachineIndependent/glslang_tab.cpp" +#line 12114 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4243 "MachineIndependent/glslang.y" +#line 4280 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12087 "MachineIndependent/glslang_tab.cpp" +#line 12124 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4248 "MachineIndependent/glslang.y" +#line 4285 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12098 "MachineIndependent/glslang_tab.cpp" +#line 12135 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4256 "MachineIndependent/glslang.y" +#line 4293 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12107 "MachineIndependent/glslang_tab.cpp" +#line 12144 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4260 "MachineIndependent/glslang.y" +#line 4297 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12117 "MachineIndependent/glslang_tab.cpp" +#line 12154 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4265 "MachineIndependent/glslang.y" +#line 4302 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12126 "MachineIndependent/glslang_tab.cpp" +#line 12163 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4269 "MachineIndependent/glslang.y" +#line 4306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12136 "MachineIndependent/glslang_tab.cpp" +#line 12173 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4274 "MachineIndependent/glslang.y" +#line 4311 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12145 "MachineIndependent/glslang_tab.cpp" +#line 12182 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4278 "MachineIndependent/glslang.y" +#line 4315 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12155 "MachineIndependent/glslang_tab.cpp" +#line 12192 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4283 "MachineIndependent/glslang.y" +#line 4320 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12164 "MachineIndependent/glslang_tab.cpp" +#line 12201 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4287 "MachineIndependent/glslang.y" +#line 4324 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12174 "MachineIndependent/glslang_tab.cpp" +#line 12211 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4294 "MachineIndependent/glslang.y" +#line 4331 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12182 "MachineIndependent/glslang_tab.cpp" +#line 12219 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4297 "MachineIndependent/glslang.y" +#line 4334 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12190 "MachineIndependent/glslang_tab.cpp" +#line 12227 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4302 "MachineIndependent/glslang.y" +#line 4339 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12198 "MachineIndependent/glslang_tab.cpp" +#line 12235 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4305 "MachineIndependent/glslang.y" +#line 4342 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12206 "MachineIndependent/glslang_tab.cpp" +#line 12243 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4308 "MachineIndependent/glslang.y" +#line 4345 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12214 "MachineIndependent/glslang_tab.cpp" +#line 12251 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4311 "MachineIndependent/glslang.y" +#line 4348 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12222 "MachineIndependent/glslang_tab.cpp" +#line 12259 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4316 "MachineIndependent/glslang.y" +#line 4353 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12230 "MachineIndependent/glslang_tab.cpp" +#line 12267 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4319 "MachineIndependent/glslang.y" +#line 4356 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12238 "MachineIndependent/glslang_tab.cpp" +#line 12275 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4324 "MachineIndependent/glslang.y" +#line 4361 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12249 "MachineIndependent/glslang_tab.cpp" +#line 12286 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4330 "MachineIndependent/glslang.y" +#line 4367 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12257 "MachineIndependent/glslang_tab.cpp" +#line 12294 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4333 "MachineIndependent/glslang.y" +#line 4370 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12265 "MachineIndependent/glslang_tab.cpp" +#line 12302 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4336 "MachineIndependent/glslang.y" +#line 4373 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12273 "MachineIndependent/glslang_tab.cpp" +#line 12310 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4339 "MachineIndependent/glslang.y" +#line 4376 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12281 "MachineIndependent/glslang_tab.cpp" +#line 12318 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4344 "MachineIndependent/glslang.y" +#line 4381 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12290 "MachineIndependent/glslang_tab.cpp" +#line 12327 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4348 "MachineIndependent/glslang.y" +#line 4385 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12298 "MachineIndependent/glslang_tab.cpp" +#line 12335 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4353 "MachineIndependent/glslang.y" +#line 4390 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12307 "MachineIndependent/glslang_tab.cpp" +#line 12344 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4357 "MachineIndependent/glslang.y" +#line 4394 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12317 "MachineIndependent/glslang_tab.cpp" +#line 12354 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4362 "MachineIndependent/glslang.y" +#line 4399 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12326 "MachineIndependent/glslang_tab.cpp" +#line 12363 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4366 "MachineIndependent/glslang.y" +#line 4403 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12336 "MachineIndependent/glslang_tab.cpp" +#line 12373 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4373 "MachineIndependent/glslang.y" +#line 4410 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12344 "MachineIndependent/glslang_tab.cpp" +#line 12381 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4376 "MachineIndependent/glslang.y" +#line 4413 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12352 "MachineIndependent/glslang_tab.cpp" +#line 12389 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4381 "MachineIndependent/glslang.y" +#line 4418 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12360 "MachineIndependent/glslang_tab.cpp" +#line 12397 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4384 "MachineIndependent/glslang.y" +#line 4421 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12368 "MachineIndependent/glslang_tab.cpp" +#line 12405 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4389 "MachineIndependent/glslang.y" +#line 4426 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12376 "MachineIndependent/glslang_tab.cpp" +#line 12413 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4392 "MachineIndependent/glslang.y" +#line 4429 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12385 "MachineIndependent/glslang_tab.cpp" +#line 12422 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4398 "MachineIndependent/glslang.y" +#line 4435 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12393 "MachineIndependent/glslang_tab.cpp" +#line 12430 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4401 "MachineIndependent/glslang.y" +#line 4438 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12401 "MachineIndependent/glslang_tab.cpp" +#line 12438 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4406 "MachineIndependent/glslang.y" +#line 4443 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12409 "MachineIndependent/glslang_tab.cpp" +#line 12446 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4409 "MachineIndependent/glslang.y" +#line 4446 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12417 "MachineIndependent/glslang_tab.cpp" +#line 12454 "MachineIndependent/glslang_tab.cpp" break; -#line 12421 "MachineIndependent/glslang_tab.cpp" +#line 12458 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12641,5 +12678,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4413 "MachineIndependent/glslang.y" +#line 4450 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index a7d4e18a40..c73f2b4d5f 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -528,6 +528,8 @@ class TIntermediate { TOperator mapTypeToConstructorOp(const TType&) const; TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right); TIntermAggregate* growAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&); + TIntermAggregate* mergeAggregate(TIntermNode* left, TIntermNode* right); + TIntermAggregate* mergeAggregate(TIntermNode* left, TIntermNode* right, const TSourceLoc&); TIntermAggregate* makeAggregate(TIntermNode* node); TIntermAggregate* makeAggregate(TIntermNode* node, const TSourceLoc&); TIntermAggregate* makeAggregate(const TSourceLoc&); From 6be56e45e574b375d759b89dad35f780bbd4792f Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 28 Nov 2023 12:56:32 -0700 Subject: [PATCH 352/594] Remove `OGLCompiler` and `HLSL` stub libraries from build Fixes ranlib warnings complaining about empty archive libraries. Simplifie build/code. --- .github/workflows/continuous_deployment.yml | 8 --- Android.mk | 23 +------ BUILD.gn | 2 - CMakeLists.txt | 6 +- OGLCompilersDLL/CMakeLists.txt | 59 ---------------- OGLCompilersDLL/InitializeDll.cpp | 37 ----------- OGLCompilersDLL/InitializeDll.h | 49 -------------- README.md | 8 +-- glslang/CMakeLists.txt | 4 +- glslang/MachineIndependent/ShaderLang.cpp | 17 ----- glslang/OSDependent/Windows/CMakeLists.txt | 10 ++- glslang/OSDependent/Windows/main.cpp | 74 --------------------- gtests/CMakeLists.txt | 5 +- hlsl/CMakeLists.txt | 64 ------------------ hlsl/stub.cpp | 41 ------------ ndk_test/Android.mk | 2 +- 16 files changed, 17 insertions(+), 392 deletions(-) delete mode 100644 OGLCompilersDLL/CMakeLists.txt delete mode 100644 OGLCompilersDLL/InitializeDll.cpp delete mode 100644 OGLCompilersDLL/InitializeDll.h delete mode 100644 glslang/OSDependent/Windows/main.cpp delete mode 100644 hlsl/CMakeLists.txt delete mode 100644 hlsl/stub.cpp diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index f7fd9ce41d..65548309bf 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -84,9 +84,7 @@ jobs: lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ - lib/libHLSL.a \ lib/libMachineIndependent.a \ - lib/libOGLCompiler.a \ lib/libOSDependent.a \ lib/libSPIRV.a \ lib/libSPVRemapper.a \ @@ -145,9 +143,7 @@ jobs: lib/libGenericCodeGen.a \ lib/libglslang.a \ lib/libglslang-default-resource-limits.a \ - lib/libHLSL.a \ lib/libMachineIndependent.a \ - lib/libOGLCompiler.a \ lib/libOSDependent.a \ lib/libSPIRV.a \ lib/libSPVRemapper.a \ @@ -201,9 +197,7 @@ jobs: lib/GenericCodeGend.lib ` lib/glslangd.lib ` lib/glslang-default-resource-limitsd.lib ` - lib/HLSLd.lib ` lib/MachineIndependentd.lib ` - lib/OGLCompilerd.lib ` lib/OSDependentd.lib ` lib/SPIRVd.lib ` lib/SPVRemapperd.lib ` @@ -223,9 +217,7 @@ jobs: lib/GenericCodeGen.lib ` lib/glslang.lib ` lib/glslang-default-resource-limits.lib ` - lib/HLSL.lib ` lib/MachineIndependent.lib ` - lib/OGLCompiler.lib ` lib/OSDependent.lib ` lib/SPIRV.lib ` lib/SPVRemapper.lib ` diff --git a/Android.mk b/Android.mk index 6787a972a7..dcb9958440 100644 --- a/Android.mk +++ b/Android.mk @@ -64,27 +64,6 @@ LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/ LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/glslang/OSDependent/Unix/ include $(BUILD_STATIC_LIBRARY) -include $(CLEAR_VARS) -LOCAL_MODULE:=OGLCompiler -LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) -LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) -LOCAL_SRC_FILES:=OGLCompilersDLL/InitializeDll.cpp -LOCAL_C_INCLUDES:=$(LOCAL_PATH)/OGLCompiler -LOCAL_STATIC_LIBRARIES:=OSDependent -include $(BUILD_STATIC_LIBRARY) - -# Build the stubbed HLSL library. -# The HLSL source is now directly referenced by the glslang static library -# instead. -include $(CLEAR_VARS) -LOCAL_MODULE:=HLSL -LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) -LOCAL_SRC_FILES:= \ - hlsl/stub.cpp -LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ - $(LOCAL_PATH)/glslang/HLSL -include $(BUILD_STATIC_LIBRARY) - include $(CLEAR_VARS) GLSLANG_OUT_PATH=$(if $(call host-path-is-absolute,$(TARGET_OUT)),$(TARGET_OUT),$(abspath $(TARGET_OUT))) @@ -138,7 +117,7 @@ LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ $(LOCAL_PATH)/glslang/MachineIndependent \ $(GLSLANG_GENERATED_INCLUDEDIR) \ $(GLSLANG_OUT_PATH) -LOCAL_STATIC_LIBRARIES:=OSDependent OGLCompiler HLSL +LOCAL_STATIC_LIBRARIES:=OSDependent include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) diff --git a/BUILD.gn b/BUILD.gn index 0bb0d42ec8..6384de04d5 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -117,8 +117,6 @@ template("glslang_sources_common") { } sources = [ - "OGLCompilersDLL/InitializeDll.cpp", - "OGLCompilersDLL/InitializeDll.h", "SPIRV/GLSL.ext.AMD.h", "SPIRV/GLSL.ext.EXT.h", "SPIRV/GLSL.ext.KHR.h", diff --git a/CMakeLists.txt b/CMakeLists.txt index 6d71b64fc5..5bde68a6be 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,7 +113,7 @@ if(ENABLE_CTEST) endif() if(ENABLE_HLSL) - add_definitions(-DENABLE_HLSL) + add_compile_definitions(ENABLE_HLSL) endif() if(WIN32) @@ -292,14 +292,10 @@ else() endif() add_subdirectory(glslang) -add_subdirectory(OGLCompilersDLL) if(ENABLE_GLSLANG_BINARIES) add_subdirectory(StandAlone) endif() add_subdirectory(SPIRV) -if(ENABLE_HLSL) - add_subdirectory(hlsl) -endif() if(ENABLE_CTEST) add_subdirectory(gtests) endif() diff --git a/OGLCompilersDLL/CMakeLists.txt b/OGLCompilersDLL/CMakeLists.txt deleted file mode 100644 index 71a5675d15..0000000000 --- a/OGLCompilersDLL/CMakeLists.txt +++ /dev/null @@ -1,59 +0,0 @@ -# Copyright (C) 2020 The Khronos Group Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of The Khronos Group Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -set(SOURCES InitializeDll.cpp InitializeDll.h) - -add_library(OGLCompiler STATIC ${SOURCES}) -set_property(TARGET OGLCompiler PROPERTY FOLDER glslang) -set_property(TARGET OGLCompiler PROPERTY POSITION_INDEPENDENT_CODE ON) - -if(WIN32) - source_group("Source" FILES ${SOURCES}) -endif(WIN32) - -if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) - install(TARGETS OGLCompiler EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" " - message(WARNING \"Using `OGLCompilerTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::OGLCompiler) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(OGLCompiler ALIAS glslang::OGLCompiler) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OGLCompilerTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - -endif() diff --git a/OGLCompilersDLL/InitializeDll.cpp b/OGLCompilersDLL/InitializeDll.cpp deleted file mode 100644 index ab3762e011..0000000000 --- a/OGLCompilersDLL/InitializeDll.cpp +++ /dev/null @@ -1,37 +0,0 @@ -// -// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// - -namespace glslang { - -} // end namespace glslang diff --git a/OGLCompilersDLL/InitializeDll.h b/OGLCompilersDLL/InitializeDll.h deleted file mode 100644 index b18e2ab3c5..0000000000 --- a/OGLCompilersDLL/InitializeDll.h +++ /dev/null @@ -1,49 +0,0 @@ -// -// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// -#ifndef __INITIALIZEDLL_H -#define __INITIALIZEDLL_H - -#include "../glslang/OSDependent/osinclude.h" - -namespace glslang { - -inline bool InitProcess() { return true; } // DEPRECATED -inline bool InitThread() { return true; } // DEPRECATED -inline bool DetachThread() { return true; } // DEPRECATED -inline bool DetachProcess() { return true; } // DEPRECATED - -} // end namespace glslang - -#endif // __INITIALIZEDLL_H - diff --git a/README.md b/README.md index 88b07b5890..2ea6c1b72b 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ -# News - -1. C++17 (all platforms) and Visual Studio 2019 (Windows) are now required. This change was driven by the external dependency on SPIRV-Tools. - ![Continuous Integration](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_integration.yml/badge.svg) ![Continuous Deployment](https://github.com/KhronosGroup/glslang/actions/workflows/continuous_deployment.yml/badge.svg) [![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/KhronosGroup/glslang/badge)](https://securityscorecards.dev/viewer/?uri=github.com/KhronosGroup/glslang) +# News + +1. `OGLCompiler` and `HLSL` stub libraries have been fully removed from the build. + 2. `OVERRIDE_MSVCCRT` has been removed in favor of `CMAKE_MSVC_RUNTIME_LIBRARY` Users are encouraged to utilize the standard approach via [CMAKE_MSVC_RUNTIME_LIBRARY](https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html). diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 6a44f3aecd..6552290bfd 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -143,7 +143,7 @@ glslang_add_build_info_dependency(MachineIndependent) glslang_pch(MachineIndependent MachineIndependent/pch.h) -target_link_libraries(MachineIndependent PRIVATE OGLCompiler OSDependent GenericCodeGen) +target_link_libraries(MachineIndependent PRIVATE OSDependent GenericCodeGen) ################################################################################ # glslang @@ -174,7 +174,7 @@ set_target_properties(glslang PROPERTIES POSITION_INDEPENDENT_CODE ON VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") -target_link_libraries(glslang PRIVATE OGLCompiler OSDependent MachineIndependent) +target_link_libraries(glslang PRIVATE OSDependent MachineIndependent) target_include_directories(glslang PUBLIC $ $) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index b4dfacfa3c..6e50a9d45e 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -58,7 +58,6 @@ #endif #include "../Include/ShHandle.h" -#include "../../OGLCompilersDLL/InitializeDll.h" #include "preprocessor/PpContext.h" @@ -1311,9 +1310,6 @@ bool CompileDeferred( // int ShInitialize() { - if (! InitProcess()) - return 0; - const std::lock_guard lock(init_lock); ++NumberOfClients; @@ -1335,9 +1331,6 @@ int ShInitialize() ShHandle ShConstructCompiler(const EShLanguage language, int /*debugOptions unused*/) { - if (!InitThread()) - return nullptr; - TShHandleBase* base = static_cast(ConstructCompiler(language, 0)); return reinterpret_cast(base); @@ -1345,9 +1338,6 @@ ShHandle ShConstructCompiler(const EShLanguage language, int /*debugOptions unus ShHandle ShConstructLinker(const EShExecutable executable, int /*debugOptions unused*/) { - if (!InitThread()) - return nullptr; - TShHandleBase* base = static_cast(ConstructLinker(executable, 0)); return reinterpret_cast(base); @@ -1355,9 +1345,6 @@ ShHandle ShConstructLinker(const EShExecutable executable, int /*debugOptions un ShHandle ShConstructUniformMap() { - if (!InitThread()) - return nullptr; - TShHandleBase* base = static_cast(ConstructUniformMap()); return reinterpret_cast(base); @@ -1871,8 +1858,6 @@ void TShader::setFlattenUniformArrays(bool flatten) { intermediate->setFlatt bool TShader::parse(const TBuiltInResource* builtInResources, int defaultVersion, EProfile defaultProfile, bool forceDefaultVersionAndProfile, bool forwardCompatible, EShMessages messages, Includer& includer) { - if (! InitThread()) - return false; SetThreadPoolAllocator(pool); if (! preamble) @@ -1897,8 +1882,6 @@ bool TShader::preprocess(const TBuiltInResource* builtInResources, std::string* output_string, Includer& includer) { - if (! InitThread()) - return false; SetThreadPoolAllocator(pool); if (! preamble) diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 882133ab30..c9d404a49e 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -31,15 +31,19 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -set(SOURCES ossource.cpp ../osinclude.h) +add_library(OSDependent STATIC) + +target_sources(OSDependent PRIVATE + ../osinclude.h + ossource.cpp +) -add_library(OSDependent STATIC ${SOURCES}) set_property(TARGET OSDependent PROPERTY FOLDER glslang) set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) # MinGW GCC complains about function pointer casts to void*. # Turn that off with -fpermissive. -if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") +if(MINGW AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") target_compile_options(OSDependent PRIVATE -fpermissive) endif() diff --git a/glslang/OSDependent/Windows/main.cpp b/glslang/OSDependent/Windows/main.cpp deleted file mode 100644 index 0bcde7b660..0000000000 --- a/glslang/OSDependent/Windows/main.cpp +++ /dev/null @@ -1,74 +0,0 @@ -// -// Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of 3Dlabs Inc. Ltd. nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// - -#include "InitializeDll.h" - -#define STRICT -#define VC_EXTRALEAN 1 -#include -#include - -BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) -{ - switch (fdwReason) - { - case DLL_PROCESS_ATTACH: - - if (! glslang::InitProcess()) - return FALSE; - break; - case DLL_THREAD_ATTACH: - - if (! glslang::InitThread()) - return FALSE; - break; - - case DLL_THREAD_DETACH: - - if (! glslang::DetachThread()) - return FALSE; - break; - - case DLL_PROCESS_DETACH: - - glslang::DetachProcess(); - break; - - default: - assert(0 && "DllMain(): Reason for calling DLL Main is unknown"); - return FALSE; - } - - return TRUE; -} diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index b73e7f1599..37d2dbb15b 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -103,16 +103,13 @@ if(BUILD_TESTING) endif() set(LIBRARIES - glslang OSDependent OGLCompiler glslang + glslang OSDependent glslang SPIRV glslang-default-resource-limits) if(ENABLE_SPVREMAPPER) set(LIBRARIES ${LIBRARIES} SPVRemapper) endif() - if(ENABLE_HLSL) - set(LIBRARIES ${LIBRARIES} HLSL) - endif() target_link_libraries(glslangtests PRIVATE ${LIBRARIES} gmock) add_test(NAME glslang-gtests diff --git a/hlsl/CMakeLists.txt b/hlsl/CMakeLists.txt deleted file mode 100644 index 058a67b086..0000000000 --- a/hlsl/CMakeLists.txt +++ /dev/null @@ -1,64 +0,0 @@ -# Copyright (C) 2020 The Khronos Group Inc. -# -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# -# Redistributions in binary form must reproduce the above -# copyright notice, this list of conditions and the following -# disclaimer in the documentation and/or other materials provided -# with the distribution. -# -# Neither the name of The Khronos Group Inc. nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -# COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -# POSSIBILITY OF SUCH DAMAGE. - -# The HLSL source is directly embedded into the glslang target when ENABLE_HLSL -# is set. -# This source now lives at: glslang/HLSL/ -# The HLSL target is now just a stub that exists for backwards compatibility for -# projects that referenced this target. - -add_library(HLSL ${LIB_TYPE} "stub.cpp") -set_target_properties(HLSL PROPERTIES - FOLDER hlsl - POSITION_INDEPENDENT_CODE ON - VERSION "${GLSLANG_VERSION}" - SOVERSION "${GLSLANG_VERSION_MAJOR}") - -if(WIN32 AND BUILD_SHARED_LIBS) - set_target_properties(HLSL PROPERTIES PREFIX "") -endif() - -if(ENABLE_GLSLANG_INSTALL) - install(TARGETS HLSL EXPORT glslang-targets) - - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/HLSLTargets.cmake" " - message(WARNING \"Using `HLSLTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::HLSL) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(HLSL ALIAS glslang::HLSL) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/HLSLTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) -endif() diff --git a/hlsl/stub.cpp b/hlsl/stub.cpp deleted file mode 100644 index f1d39c1517..0000000000 --- a/hlsl/stub.cpp +++ /dev/null @@ -1,41 +0,0 @@ -// -// Copyright (C) 2020 Google, Inc. -// -// All rights reserved. -// -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions -// are met: -// -// Redistributions of source code must retain the above copyright -// notice, this list of conditions and the following disclaimer. -// -// Redistributions in binary form must reproduce the above -// copyright notice, this list of conditions and the following -// disclaimer in the documentation and/or other materials provided -// with the distribution. -// -// Neither the name of Google, Inc., nor the names of its -// contributors may be used to endorse or promote products derived -// from this software without specific prior written permission. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -// POSSIBILITY OF SUCH DAMAGE. -// - -// The HLSL source is directly embedded into the glslang target when ENABLE_HLSL -// is set. -// This source now lives at: glslang/HLSL/ -// The HLSL target is now just a stub that exists for backwards compatibility -// for projects that referenced this target. As a target requires at least one -// source file to build, this file acts as that stub. diff --git a/ndk_test/Android.mk b/ndk_test/Android.mk index d2e93da52c..112700c907 100644 --- a/ndk_test/Android.mk +++ b/ndk_test/Android.mk @@ -39,7 +39,7 @@ LOCAL_SRC_FILES:=test.cpp LOCAL_MODULE:=glslang_ndk_test LOCAL_LDLIBS:=-landroid LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror -LOCAL_STATIC_LIBRARIES:=glslang SPIRV HLSL +LOCAL_STATIC_LIBRARIES:=glslang SPIRV include $(BUILD_SHARED_LIBRARY) include $(LOCAL_PATH)/../Android.mk From 719b6b7debbfe75bd427daa0e39c347fce16cf9a Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Tue, 28 Nov 2023 16:10:13 -0700 Subject: [PATCH 353/594] Remove outdated comments about travis --- .github/workflows/continuous_deployment.yml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 65548309bf..08305d5e80 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -1,9 +1,3 @@ -# NOTE: This workflow was ported from Travis. -# Travis was using Ubuntu 14.04. Ubuntu 14.04 is not supportted by GitHub workflows. Ubuntu 20.04 is recommended. -# Travis was using Clang 3.6. The earliest version support by Ubuntu 20.04 is Clang 6.0. -# Travis was caching the clang package. APT package caching is not natively supported by GitHub actions/cache. -# Travis was using Mac OS X 10.13.6 / Xcode 9.4.1 / LLVM 9.1.0 - # NOTE: The following documentation may be useful to maintainers of this workflow. # Github actions: https://docs.github.com/en/actions # Github github-script action: https://github.com/actions/github-script From 3f615ad93ea58264fe6f06995178691ec6b556a7 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Wed, 29 Nov 2023 12:58:56 -0700 Subject: [PATCH 354/594] Add BUILD_WERROR option Adds a cmake BUILD_WERROR option to enable warnings as errors. This option is off by default. This change also cleans up a few more compiler warnings. --- .github/workflows/continuous_integration.yml | 6 +++--- CMakeLists.txt | 10 ++++++++++ glslang/MachineIndependent/ParseHelper.cpp | 8 ++++---- glslang/MachineIndependent/ParseHelper.h | 2 +- glslang/MachineIndependent/glslang.y | 4 ++-- glslang/MachineIndependent/glslang_tab.cpp | 4 ++-- 6 files changed, 22 insertions(+), 12 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 58dc2540f9..8838f5bd15 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -28,7 +28,7 @@ jobs: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} @@ -126,7 +126,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - run: ./update_glslang_sources.py - - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja + - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} @@ -155,7 +155,7 @@ jobs: - run: python update_glslang_sources.py - name: Build run: | - cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" + cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON cmake --build build --config ${{matrix.cmake_build_type}} --target install - name: Test run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build diff --git a/CMakeLists.txt b/CMakeLists.txt index 5bde68a6be..e0802af80a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -44,6 +44,7 @@ include(CMakeDependentOption) option(BUILD_SHARED_LIBS "Build Shared Libraries") option(BUILD_EXTERNAL "Build external dependencies in /External" ON) +option(BUILD_WERROR "Enable warnings as errors (default is OFF)" OFF) set(LIB_TYPE STATIC) @@ -177,6 +178,15 @@ elseif(MSVC) endif() endif() +# NOTE we could potentially replace this logic with COMPILE_WARNING_AS_ERROR if cmake minimum is bumped to >= 3.24 +if (BUILD_WERROR) + if (NOT MSVC) + add_compile_options(-Werror) + else() + add_compile_options(/WX) + endif() +endif() + if(ENABLE_GLSLANG_JS) if(MSVC) add_compile_options(/Os /GR-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 7bcfce0ac6..fcb75e87c6 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7458,7 +7458,7 @@ static void ForEachOpaque(const TType& type, const TString& path, Function callb ++flatIndex) { TString subscriptPath = path; - for (int dimIndex = 0; dimIndex < indices.size(); ++dimIndex) + for (size_t dimIndex = 0; dimIndex < indices.size(); ++dimIndex) { int index = indices[dimIndex]; subscriptPath.append("["); @@ -7468,7 +7468,7 @@ static void ForEachOpaque(const TType& type, const TString& path, Function callb recursion(type, subscriptPath, true, recursion); - for (int dimIndex = 0; dimIndex < indices.size(); ++dimIndex) + for (size_t dimIndex = 0; dimIndex < indices.size(); ++dimIndex) { ++indices[dimIndex]; if (indices[dimIndex] < type.getArraySizes()->getDimSize(dimIndex)) @@ -7537,7 +7537,7 @@ void TParseContext::vkRelaxedRemapUniformMembers(const TSourceLoc& loc, const TP }); } -void TParseContext::vkRelaxedRemapFunctionParameter(const TSourceLoc& loc, TFunction* function, TParameter& param, std::vector* newParams) +void TParseContext::vkRelaxedRemapFunctionParameter(TFunction* function, TParameter& param, std::vector* newParams) { function->addParameter(param); @@ -7615,7 +7615,7 @@ TIntermNode* TParseContext::vkRelaxedRemapFunctionArgument(const TSourceLoc& loc param.type->shallowCopy(intermTyped->getType()); std::vector newParams = {}; - vkRelaxedRemapFunctionParameter(loc, function, param, &newParams); + vkRelaxedRemapFunctionParameter(function, param, &newParams); if (intermTyped->getType().isOpaque()) { diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 4a08fd37e9..16902aefeb 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -369,7 +369,7 @@ class TParseContext : public TParseContextBase { // returns true if the variable was remapped to something else bool vkRelaxedRemapUniformVariable(const TSourceLoc&, TString&, const TPublicType&, TArraySizes*, TIntermTyped*, TType&); void vkRelaxedRemapUniformMembers(const TSourceLoc&, const TPublicType&, const TType&, const TString&); - void vkRelaxedRemapFunctionParameter(const TSourceLoc&, TFunction*, TParameter&, std::vector* newParams = nullptr); + void vkRelaxedRemapFunctionParameter(TFunction*, TParameter&, std::vector* newParams = nullptr); TIntermNode* vkRelaxedRemapFunctionArgument(const TSourceLoc&, TFunction*, TIntermTyped*); TIntermTyped* vkRelaxedRemapDotDereference(const TSourceLoc&, TIntermTyped&, const TType&, const TString&); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index c3aa23c4fc..2ee155ac3d 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -1007,7 +1007,7 @@ function_header_with_parameters if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) $1->addParameter($2.param); else - parseContext.vkRelaxedRemapFunctionParameter($2.loc, $1, $2.param); + parseContext.vkRelaxedRemapFunctionParameter($1, $2.param); } else delete $2.param.type; @@ -1029,7 +1029,7 @@ function_header_with_parameters if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) $1->addParameter($3.param); else - parseContext.vkRelaxedRemapFunctionParameter($3.loc, $1, $3.param); + parseContext.vkRelaxedRemapFunctionParameter($1, $3.param); } } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 190fcc3910..618d15dc25 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -6319,7 +6319,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) (yyvsp[-1].interm.function)->addParameter((yyvsp[0].interm).param); else - parseContext.vkRelaxedRemapFunctionParameter((yyvsp[0].interm).loc, (yyvsp[-1].interm.function), (yyvsp[0].interm).param); + parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-1].interm.function), (yyvsp[0].interm).param); } else delete (yyvsp[0].interm).param.type; @@ -6346,7 +6346,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (!(parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed)) (yyvsp[-2].interm.function)->addParameter((yyvsp[0].interm).param); else - parseContext.vkRelaxedRemapFunctionParameter((yyvsp[0].interm).loc, (yyvsp[-2].interm.function), (yyvsp[0].interm).param); + parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } #line 6353 "MachineIndependent/glslang_tab.cpp" From a187f47e2c71bdc1c9768b8166b81dc0632a5660 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 27 Nov 2023 19:26:25 -0500 Subject: [PATCH 355/594] Move overflow_underflow_toinf_0 from runtests to gtest gtest is the preferred framework for simple tests that don't require passing special command-line options to glslang. --- ...ut => overflow_underflow_toinf_0.frag.out} | 31 +++++++++++++++++++ Test/runtests | 2 -- gtests/AST.FromFile.cpp | 1 + 3 files changed, 32 insertions(+), 2 deletions(-) rename Test/baseResults/{overflow_underflow_toinf_0.out => overflow_underflow_toinf_0.frag.out} (50%) diff --git a/Test/baseResults/overflow_underflow_toinf_0.out b/Test/baseResults/overflow_underflow_toinf_0.frag.out similarity index 50% rename from Test/baseResults/overflow_underflow_toinf_0.out rename to Test/baseResults/overflow_underflow_toinf_0.frag.out index 3e017b8c89..c2551f8a5a 100644 --- a/Test/baseResults/overflow_underflow_toinf_0.out +++ b/Test/baseResults/overflow_underflow_toinf_0.frag.out @@ -26,3 +26,34 @@ Shader version: 320 0:? Linker Objects 0:? 'my_FragColor' ( out highp 4-component vector of float) + +Linked fragment stage: + + +Shader version: 320 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:9 Sequence +0:9 Sequence +0:9 move second child to first child ( temp highp float) +0:9 'correct' ( temp highp float) +0:9 Constant: +0:9 1.000000 +0:10 Sequence +0:10 move second child to first child ( temp highp float) +0:10 'correct1' ( temp highp float) +0:10 Constant: +0:10 1.000000 +0:11 move second child to first child ( temp highp 4-component vector of float) +0:11 'my_FragColor' ( out highp 4-component vector of float) +0:11 Construct vec4 ( temp highp 4-component vector of float) +0:11 Constant: +0:11 0.000000 +0:11 'correct' ( temp highp float) +0:11 'correct1' ( temp highp float) +0:11 Constant: +0:11 1.000000 +0:? Linker Objects +0:? 'my_FragColor' ( out highp 4-component vector of float) + diff --git a/Test/runtests b/Test/runtests index 197f7fcdb8..e7e1d33f48 100755 --- a/Test/runtests +++ b/Test/runtests @@ -343,8 +343,6 @@ run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanc diff -b $BASEDIR/enhanced.7.link.out $TARGETDIR/enhanced.7.link.out || HASERROR=1 run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > $TARGETDIR/spv.textureError.frag.out diff -b $BASEDIR/spv.textureError.frag.out $TARGETDIR/spv.textureError.frag.out || HASERROR=1 -run -i overflow_underflow_toinf_0.frag > $TARGETDIR/overflow_underflow_toinf_0.out -diff -b $BASEDIR/overflow_underflow_toinf_0.out $TARGETDIR/overflow_underflow_toinf_0.out || HASERROR=1 # # Final checking diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index cf56dae5b5..3a7ce2b766 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -301,6 +301,7 @@ INSTANTIATE_TEST_SUITE_P( "coord_conventions.frag", "gl_FragCoord.frag", "glsl.interpOp.error.frag", + "overflow_underflow_toinf_0.frag", })), FileNameAsCustomTestSuffix ); From a1138bacff8069c77bd9a303edd99b5f5712409d Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 29 Nov 2023 19:22:10 -0500 Subject: [PATCH 356/594] Improve overflow_underflow_toinf_0 test somewhat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add test cases that will make explicit ±0.0 and ±INF appear in the AST output to make sure those cases are handled correctly. --- .../overflow_underflow_toinf_0.frag.out | 44 +++++++++++++------ Test/overflow_underflow_toinf_0.frag | 15 ++++--- 2 files changed, 38 insertions(+), 21 deletions(-) diff --git a/Test/baseResults/overflow_underflow_toinf_0.frag.out b/Test/baseResults/overflow_underflow_toinf_0.frag.out index c2551f8a5a..621d197838 100644 --- a/Test/baseResults/overflow_underflow_toinf_0.frag.out +++ b/Test/baseResults/overflow_underflow_toinf_0.frag.out @@ -14,15 +14,23 @@ Shader version: 320 0:10 'correct1' ( temp highp float) 0:10 Constant: 0:10 1.000000 -0:11 move second child to first child ( temp highp 4-component vector of float) -0:11 'my_FragColor' ( out highp 4-component vector of float) -0:11 Construct vec4 ( temp highp 4-component vector of float) +0:11 Sequence +0:11 move second child to first child ( temp highp 4-component vector of float) +0:11 'foo' ( temp highp 4-component vector of float) 0:11 Constant: 0:11 0.000000 -0:11 'correct' ( temp highp float) -0:11 'correct1' ( temp highp float) -0:11 Constant: -0:11 1.000000 +0:11 -0.000000 +0:11 +1.#INF +0:11 -1.#INF +0:12 move second child to first child ( temp highp 4-component vector of float) +0:12 'my_FragColor' ( out highp 4-component vector of float) +0:12 Construct vec4 ( temp highp 4-component vector of float) +0:12 Constant: +0:12 0.000000 +0:12 'correct' ( temp highp float) +0:12 'correct1' ( temp highp float) +0:12 Constant: +0:12 1.000000 0:? Linker Objects 0:? 'my_FragColor' ( out highp 4-component vector of float) @@ -45,15 +53,23 @@ Shader version: 320 0:10 'correct1' ( temp highp float) 0:10 Constant: 0:10 1.000000 -0:11 move second child to first child ( temp highp 4-component vector of float) -0:11 'my_FragColor' ( out highp 4-component vector of float) -0:11 Construct vec4 ( temp highp 4-component vector of float) +0:11 Sequence +0:11 move second child to first child ( temp highp 4-component vector of float) +0:11 'foo' ( temp highp 4-component vector of float) 0:11 Constant: 0:11 0.000000 -0:11 'correct' ( temp highp float) -0:11 'correct1' ( temp highp float) -0:11 Constant: -0:11 1.000000 +0:11 -0.000000 +0:11 +1.#INF +0:11 -1.#INF +0:12 move second child to first child ( temp highp 4-component vector of float) +0:12 'my_FragColor' ( out highp 4-component vector of float) +0:12 Construct vec4 ( temp highp 4-component vector of float) +0:12 Constant: +0:12 0.000000 +0:12 'correct' ( temp highp float) +0:12 'correct1' ( temp highp float) +0:12 Constant: +0:12 1.000000 0:? Linker Objects 0:? 'my_FragColor' ( out highp 4-component vector of float) diff --git a/Test/overflow_underflow_toinf_0.frag b/Test/overflow_underflow_toinf_0.frag index 2e557577b4..0b1d1b9934 100644 --- a/Test/overflow_underflow_toinf_0.frag +++ b/Test/overflow_underflow_toinf_0.frag @@ -1,12 +1,13 @@ - #version 320 es - precision highp float; - out vec4 my_FragColor; - void main() - { +#version 320 es +precision highp float; +out vec4 my_FragColor; +void main() +{ // GLSL ES 3.00.6 section 4.1.4 Floats: // "A value with a magnitude too small to be represented as a mantissa and exponent is converted to zero." // 1.0e-50 is small enough that it can't even be stored as subnormal. float correct = (1.0e-50 == 0.0) ? 1.0 : 0.0; - float correct1 = isinf(1.0e40) ? 1.0 : 0.0; + float correct1 = isinf(1.0e40) ? 1.0 : 0.0; + vec4 foo = vec4(1.0e-50, -1.0e-50, 1.0e50, -1.0e50); my_FragColor = vec4(0.0, correct, correct1, 1.0); - } \ No newline at end of file +} From e854c8de10f582c8577417f61ffe3f9c136a9a46 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 30 Nov 2023 10:50:12 -0500 Subject: [PATCH 357/594] Remove various warning suppression pragmas This requires a small change to to use strncpy() instead of strcpy(), as well as change of include paths to not use "..". The other warnings are just not being hit anymore. --- glslang/Include/intermediate.h | 11 +- glslang/MachineIndependent/glslang.y | 7 - glslang/MachineIndependent/glslang_tab.cpp | 2951 ++++++++--------- .../preprocessor/PpContext.h | 5 - glslang/ResourceLimits/resource_limits_c.cpp | 16 +- 5 files changed, 1476 insertions(+), 1514 deletions(-) diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 9d311d60b5..b0e154e92b 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -48,14 +48,9 @@ #ifndef __INTERMEDIATE_H #define __INTERMEDIATE_H -#if defined(_MSC_VER) && _MSC_VER >= 1900 - #pragma warning(disable : 4464) // relative include path contains '..' - #pragma warning(disable : 5026) // 'glslang::TIntermUnary': move constructor was implicitly defined as deleted -#endif - -#include "../Include/Common.h" -#include "../Include/Types.h" -#include "../Include/ConstantUnion.h" +#include "Common.h" +#include "Types.h" +#include "ConstantUnion.h" namespace glslang { diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 2ee155ac3d..167cdca053 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -110,13 +110,6 @@ using namespace glslang; %{ -/* windows only pragma */ -#ifdef _MSC_VER - #pragma warning(disable : 4065) - #pragma warning(disable : 4127) - #pragma warning(disable : 4244) -#endif - #define parseContext (*pParseContext) #define yyerror(context, msg) context->parserError(msg) diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 618d15dc25..5038bebe5b 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -726,20 +726,13 @@ typedef enum yysymbol_kind_t yysymbol_kind_t; #line 111 "MachineIndependent/glslang.y" -/* windows only pragma */ -#ifdef _MSC_VER - #pragma warning(disable : 4065) - #pragma warning(disable : 4127) - #pragma warning(disable : 4244) -#endif - #define parseContext (*pParseContext) #define yyerror(context, msg) context->parserError(msg) extern int yylex(YYSTYPE*, TParseContext&); -#line 743 "MachineIndependent/glslang_tab.cpp" +#line 736 "MachineIndependent/glslang_tab.cpp" #ifdef short @@ -1167,77 +1160,77 @@ static const yytype_int16 yytranslate[] = /* YYRLINE[YYN] -- Source line where rule number YYN was defined. */ static const yytype_int16 yyrline[] = { - 0, 362, 362, 368, 371, 376, 379, 382, 386, 389, - 392, 396, 400, 404, 408, 412, 416, 422, 429, 432, - 435, 438, 441, 446, 454, 461, 468, 474, 478, 485, - 488, 494, 512, 534, 542, 547, 574, 582, 588, 592, - 596, 616, 617, 618, 619, 625, 626, 631, 636, 645, - 646, 651, 659, 660, 666, 675, 676, 681, 686, 691, - 699, 700, 709, 721, 722, 731, 732, 741, 742, 751, - 752, 760, 761, 769, 770, 778, 779, 779, 797, 798, - 814, 818, 822, 826, 831, 835, 839, 843, 847, 851, - 855, 862, 865, 876, 883, 888, 895, 900, 905, 912, - 916, 920, 924, 929, 934, 943, 943, 954, 958, 965, - 970, 976, 982, 992, 995, 1002, 1015, 1038, 1061, 1076, - 1101, 1112, 1122, 1132, 1142, 1151, 1154, 1158, 1162, 1167, - 1175, 1180, 1185, 1190, 1195, 1204, 1214, 1241, 1250, 1257, - 1264, 1271, 1278, 1286, 1294, 1304, 1314, 1321, 1331, 1337, - 1340, 1347, 1351, 1355, 1363, 1372, 1375, 1386, 1389, 1392, - 1396, 1400, 1404, 1408, 1411, 1416, 1420, 1425, 1433, 1437, - 1442, 1448, 1454, 1461, 1466, 1471, 1479, 1484, 1496, 1510, - 1516, 1521, 1529, 1537, 1545, 1553, 1561, 1569, 1577, 1585, - 1593, 1600, 1607, 1611, 1616, 1621, 1626, 1631, 1636, 1641, - 1645, 1649, 1653, 1657, 1663, 1669, 1679, 1686, 1689, 1697, - 1704, 1715, 1720, 1728, 1732, 1742, 1745, 1751, 1757, 1762, - 1770, 1780, 1784, 1788, 1792, 1797, 1801, 1806, 1811, 1816, - 1821, 1826, 1831, 1836, 1841, 1846, 1852, 1858, 1864, 1869, - 1874, 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919, - 1924, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, - 1976, 1981, 1986, 1994, 2002, 2010, 2016, 2022, 2028, 2034, - 2040, 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094, - 2100, 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154, - 2160, 2166, 2172, 2178, 2184, 2190, 2196, 2202, 2208, 2216, - 2224, 2232, 2240, 2248, 2256, 2264, 2272, 2280, 2288, 2296, - 2304, 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358, - 2364, 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418, - 2424, 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478, - 2484, 2490, 2496, 2502, 2508, 2514, 2520, 2524, 2528, 2532, - 2537, 2542, 2547, 2552, 2557, 2562, 2567, 2572, 2577, 2582, - 2587, 2592, 2597, 2602, 2608, 2614, 2620, 2626, 2632, 2638, - 2644, 2650, 2656, 2662, 2668, 2674, 2680, 2685, 2690, 2695, - 2700, 2705, 2710, 2715, 2720, 2725, 2730, 2735, 2740, 2745, - 2750, 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795, - 2800, 2805, 2810, 2815, 2820, 2825, 2830, 2835, 2840, 2845, - 2851, 2857, 2862, 2867, 2872, 2878, 2883, 2888, 2893, 2899, - 2904, 2909, 2914, 2920, 2925, 2930, 2935, 2941, 2947, 2953, - 2959, 2964, 2970, 2976, 2982, 2987, 2992, 2997, 3002, 3007, - 3013, 3018, 3023, 3028, 3034, 3039, 3044, 3049, 3055, 3060, - 3065, 3070, 3076, 3081, 3086, 3091, 3097, 3102, 3107, 3112, - 3118, 3123, 3128, 3133, 3139, 3144, 3149, 3154, 3160, 3165, - 3170, 3175, 3181, 3186, 3191, 3196, 3202, 3207, 3212, 3217, - 3223, 3228, 3233, 3238, 3244, 3249, 3254, 3259, 3265, 3270, - 3275, 3280, 3286, 3291, 3296, 3301, 3307, 3312, 3317, 3322, - 3327, 3332, 3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372, - 3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412, 3417, 3422, - 3427, 3433, 3439, 3445, 3451, 3457, 3463, 3469, 3476, 3483, - 3489, 3495, 3501, 3507, 3514, 3521, 3528, 3535, 3539, 3543, - 3548, 3564, 3569, 3574, 3582, 3582, 3599, 3599, 3609, 3612, - 3625, 3647, 3674, 3678, 3684, 3689, 3700, 3703, 3709, 3715, - 3724, 3727, 3733, 3737, 3738, 3744, 3745, 3746, 3747, 3748, - 3749, 3750, 3751, 3755, 3763, 3764, 3768, 3764, 3780, 3781, - 3785, 3785, 3792, 3792, 3806, 3809, 3817, 3825, 3836, 3837, - 3841, 3844, 3851, 3858, 3862, 3870, 3874, 3887, 3890, 3897, - 3897, 3917, 3920, 3926, 3938, 3950, 3953, 3960, 3960, 3975, - 3975, 3993, 3993, 4014, 4017, 4023, 4026, 4032, 4036, 4043, - 4048, 4053, 4060, 4063, 4067, 4071, 4075, 4084, 4088, 4097, - 4100, 4103, 4111, 4111, 4153, 4158, 4161, 4166, 4169, 4174, - 4177, 4182, 4185, 4190, 4193, 4198, 4201, 4206, 4210, 4215, - 4219, 4224, 4228, 4235, 4238, 4243, 4246, 4249, 4252, 4255, - 4260, 4269, 4280, 4285, 4293, 4297, 4302, 4306, 4311, 4315, - 4320, 4324, 4331, 4334, 4339, 4342, 4345, 4348, 4353, 4356, - 4361, 4367, 4370, 4373, 4376, 4381, 4385, 4390, 4394, 4399, - 4403, 4410, 4413, 4418, 4421, 4426, 4429, 4435, 4438, 4443, - 4446 + 0, 355, 355, 361, 364, 369, 372, 375, 379, 382, + 385, 389, 393, 397, 401, 405, 409, 415, 422, 425, + 428, 431, 434, 439, 447, 454, 461, 467, 471, 478, + 481, 487, 505, 527, 535, 540, 567, 575, 581, 585, + 589, 609, 610, 611, 612, 618, 619, 624, 629, 638, + 639, 644, 652, 653, 659, 668, 669, 674, 679, 684, + 692, 693, 702, 714, 715, 724, 725, 734, 735, 744, + 745, 753, 754, 762, 763, 771, 772, 772, 790, 791, + 807, 811, 815, 819, 824, 828, 832, 836, 840, 844, + 848, 855, 858, 869, 876, 881, 888, 893, 898, 905, + 909, 913, 917, 922, 927, 936, 936, 947, 951, 958, + 963, 969, 975, 985, 988, 995, 1008, 1031, 1054, 1069, + 1094, 1105, 1115, 1125, 1135, 1144, 1147, 1151, 1155, 1160, + 1168, 1173, 1178, 1183, 1188, 1197, 1207, 1234, 1243, 1250, + 1257, 1264, 1271, 1279, 1287, 1297, 1307, 1314, 1324, 1330, + 1333, 1340, 1344, 1348, 1356, 1365, 1368, 1379, 1382, 1385, + 1389, 1393, 1397, 1401, 1404, 1409, 1413, 1418, 1426, 1430, + 1435, 1441, 1447, 1454, 1459, 1464, 1472, 1477, 1489, 1503, + 1509, 1514, 1522, 1530, 1538, 1546, 1554, 1562, 1570, 1578, + 1586, 1593, 1600, 1604, 1609, 1614, 1619, 1624, 1629, 1634, + 1638, 1642, 1646, 1650, 1656, 1662, 1672, 1679, 1682, 1690, + 1697, 1708, 1713, 1721, 1725, 1735, 1738, 1744, 1750, 1755, + 1763, 1773, 1777, 1781, 1785, 1790, 1794, 1799, 1804, 1809, + 1814, 1819, 1824, 1829, 1834, 1839, 1845, 1851, 1857, 1862, + 1867, 1872, 1877, 1882, 1887, 1892, 1897, 1902, 1907, 1912, + 1917, 1924, 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964, + 1969, 1974, 1979, 1987, 1995, 2003, 2009, 2015, 2021, 2027, + 2033, 2039, 2045, 2051, 2057, 2063, 2069, 2075, 2081, 2087, + 2093, 2099, 2105, 2111, 2117, 2123, 2129, 2135, 2141, 2147, + 2153, 2159, 2165, 2171, 2177, 2183, 2189, 2195, 2201, 2209, + 2217, 2225, 2233, 2241, 2249, 2257, 2265, 2273, 2281, 2289, + 2297, 2303, 2309, 2315, 2321, 2327, 2333, 2339, 2345, 2351, + 2357, 2363, 2369, 2375, 2381, 2387, 2393, 2399, 2405, 2411, + 2417, 2423, 2429, 2435, 2441, 2447, 2453, 2459, 2465, 2471, + 2477, 2483, 2489, 2495, 2501, 2507, 2513, 2517, 2521, 2525, + 2530, 2535, 2540, 2545, 2550, 2555, 2560, 2565, 2570, 2575, + 2580, 2585, 2590, 2595, 2601, 2607, 2613, 2619, 2625, 2631, + 2637, 2643, 2649, 2655, 2661, 2667, 2673, 2678, 2683, 2688, + 2693, 2698, 2703, 2708, 2713, 2718, 2723, 2728, 2733, 2738, + 2743, 2748, 2753, 2758, 2763, 2768, 2773, 2778, 2783, 2788, + 2793, 2798, 2803, 2808, 2813, 2818, 2823, 2828, 2833, 2838, + 2844, 2850, 2855, 2860, 2865, 2871, 2876, 2881, 2886, 2892, + 2897, 2902, 2907, 2913, 2918, 2923, 2928, 2934, 2940, 2946, + 2952, 2957, 2963, 2969, 2975, 2980, 2985, 2990, 2995, 3000, + 3006, 3011, 3016, 3021, 3027, 3032, 3037, 3042, 3048, 3053, + 3058, 3063, 3069, 3074, 3079, 3084, 3090, 3095, 3100, 3105, + 3111, 3116, 3121, 3126, 3132, 3137, 3142, 3147, 3153, 3158, + 3163, 3168, 3174, 3179, 3184, 3189, 3195, 3200, 3205, 3210, + 3216, 3221, 3226, 3231, 3237, 3242, 3247, 3252, 3258, 3263, + 3268, 3273, 3279, 3284, 3289, 3294, 3300, 3305, 3310, 3315, + 3320, 3325, 3330, 3335, 3340, 3345, 3350, 3355, 3360, 3365, + 3370, 3375, 3380, 3385, 3390, 3395, 3400, 3405, 3410, 3415, + 3420, 3426, 3432, 3438, 3444, 3450, 3456, 3462, 3469, 3476, + 3482, 3488, 3494, 3500, 3507, 3514, 3521, 3528, 3532, 3536, + 3541, 3557, 3562, 3567, 3575, 3575, 3592, 3592, 3602, 3605, + 3618, 3640, 3667, 3671, 3677, 3682, 3693, 3696, 3702, 3708, + 3717, 3720, 3726, 3730, 3731, 3737, 3738, 3739, 3740, 3741, + 3742, 3743, 3744, 3748, 3756, 3757, 3761, 3757, 3773, 3774, + 3778, 3778, 3785, 3785, 3799, 3802, 3810, 3818, 3829, 3830, + 3834, 3837, 3844, 3851, 3855, 3863, 3867, 3880, 3883, 3890, + 3890, 3910, 3913, 3919, 3931, 3943, 3946, 3953, 3953, 3968, + 3968, 3986, 3986, 4007, 4010, 4016, 4019, 4025, 4029, 4036, + 4041, 4046, 4053, 4056, 4060, 4064, 4068, 4077, 4081, 4090, + 4093, 4096, 4104, 4104, 4146, 4151, 4154, 4159, 4162, 4167, + 4170, 4175, 4178, 4183, 4186, 4191, 4194, 4199, 4203, 4208, + 4212, 4217, 4221, 4228, 4231, 4236, 4239, 4242, 4245, 4248, + 4253, 4262, 4273, 4278, 4286, 4290, 4295, 4299, 4304, 4308, + 4313, 4317, 4324, 4327, 4332, 4335, 4338, 4341, 4346, 4349, + 4354, 4360, 4363, 4366, 4369, 4374, 4378, 4383, 4387, 4392, + 4396, 4403, 4406, 4411, 4414, 4419, 4422, 4428, 4431, 4436, + 4439 }; #endif @@ -5210,260 +5203,260 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); switch (yyn) { case 2: /* variable_identifier: IDENTIFIER */ -#line 362 "MachineIndependent/glslang.y" +#line 355 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleVariable((yyvsp[0].lex).loc, (yyvsp[0].lex).symbol, (yyvsp[0].lex).string); } -#line 5218 "MachineIndependent/glslang_tab.cpp" +#line 5211 "MachineIndependent/glslang_tab.cpp" break; case 3: /* primary_expression: variable_identifier */ -#line 368 "MachineIndependent/glslang.y" +#line 361 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5226 "MachineIndependent/glslang_tab.cpp" +#line 5219 "MachineIndependent/glslang_tab.cpp" break; case 4: /* primary_expression: LEFT_PAREN expression RIGHT_PAREN */ -#line 371 "MachineIndependent/glslang.y" +#line 364 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); if ((yyval.interm.intermTypedNode)->getAsConstantUnion()) (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } -#line 5236 "MachineIndependent/glslang_tab.cpp" +#line 5229 "MachineIndependent/glslang_tab.cpp" break; case 5: /* primary_expression: FLOATCONSTANT */ -#line 376 "MachineIndependent/glslang.y" +#line 369 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 5244 "MachineIndependent/glslang_tab.cpp" +#line 5237 "MachineIndependent/glslang_tab.cpp" break; case 6: /* primary_expression: INTCONSTANT */ -#line 379 "MachineIndependent/glslang.y" +#line 372 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5252 "MachineIndependent/glslang_tab.cpp" +#line 5245 "MachineIndependent/glslang_tab.cpp" break; case 7: /* primary_expression: UINTCONSTANT */ -#line 382 "MachineIndependent/glslang.y" +#line 375 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5261 "MachineIndependent/glslang_tab.cpp" +#line 5254 "MachineIndependent/glslang_tab.cpp" break; case 8: /* primary_expression: BOOLCONSTANT */ -#line 386 "MachineIndependent/glslang.y" +#line 379 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 5269 "MachineIndependent/glslang_tab.cpp" +#line 5262 "MachineIndependent/glslang_tab.cpp" break; case 9: /* primary_expression: STRING_LITERAL */ -#line 389 "MachineIndependent/glslang.y" +#line 382 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 5277 "MachineIndependent/glslang_tab.cpp" +#line 5270 "MachineIndependent/glslang_tab.cpp" break; case 10: /* primary_expression: INT32CONSTANT */ -#line 392 "MachineIndependent/glslang.y" +#line 385 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5286 "MachineIndependent/glslang_tab.cpp" +#line 5279 "MachineIndependent/glslang_tab.cpp" break; case 11: /* primary_expression: UINT32CONSTANT */ -#line 396 "MachineIndependent/glslang.y" +#line 389 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5295 "MachineIndependent/glslang_tab.cpp" +#line 5288 "MachineIndependent/glslang_tab.cpp" break; case 12: /* primary_expression: INT64CONSTANT */ -#line 400 "MachineIndependent/glslang.y" +#line 393 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i64, (yyvsp[0].lex).loc, true); } -#line 5304 "MachineIndependent/glslang_tab.cpp" +#line 5297 "MachineIndependent/glslang_tab.cpp" break; case 13: /* primary_expression: UINT64CONSTANT */ -#line 404 "MachineIndependent/glslang.y" +#line 397 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u64, (yyvsp[0].lex).loc, true); } -#line 5313 "MachineIndependent/glslang_tab.cpp" +#line 5306 "MachineIndependent/glslang_tab.cpp" break; case 14: /* primary_expression: INT16CONSTANT */ -#line 408 "MachineIndependent/glslang.y" +#line 401 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((short)(yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 5322 "MachineIndependent/glslang_tab.cpp" +#line 5315 "MachineIndependent/glslang_tab.cpp" break; case 15: /* primary_expression: UINT16CONSTANT */ -#line 412 "MachineIndependent/glslang.y" +#line 405 "MachineIndependent/glslang.y" { parseContext.explicitInt16Check((yyvsp[0].lex).loc, "16-bit unsigned integer literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((unsigned short)(yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 5331 "MachineIndependent/glslang_tab.cpp" +#line 5324 "MachineIndependent/glslang_tab.cpp" break; case 16: /* primary_expression: DOUBLECONSTANT */ -#line 416 "MachineIndependent/glslang.y" +#line 409 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double literal"); if (! parseContext.symbolTable.atBuiltInLevel()) parseContext.doubleCheck((yyvsp[0].lex).loc, "double literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtDouble, (yyvsp[0].lex).loc, true); } -#line 5342 "MachineIndependent/glslang_tab.cpp" +#line 5335 "MachineIndependent/glslang_tab.cpp" break; case 17: /* primary_expression: FLOAT16CONSTANT */ -#line 422 "MachineIndependent/glslang.y" +#line 415 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float literal"); (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat16, (yyvsp[0].lex).loc, true); } -#line 5351 "MachineIndependent/glslang_tab.cpp" +#line 5344 "MachineIndependent/glslang_tab.cpp" break; case 18: /* postfix_expression: primary_expression */ -#line 429 "MachineIndependent/glslang.y" +#line 422 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5359 "MachineIndependent/glslang_tab.cpp" +#line 5352 "MachineIndependent/glslang_tab.cpp" break; case 19: /* postfix_expression: postfix_expression LEFT_BRACKET integer_expression RIGHT_BRACKET */ -#line 432 "MachineIndependent/glslang.y" +#line 425 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBracketDereference((yyvsp[-2].lex).loc, (yyvsp[-3].interm.intermTypedNode), (yyvsp[-1].interm.intermTypedNode)); } -#line 5367 "MachineIndependent/glslang_tab.cpp" +#line 5360 "MachineIndependent/glslang_tab.cpp" break; case 20: /* postfix_expression: function_call */ -#line 435 "MachineIndependent/glslang.y" +#line 428 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5375 "MachineIndependent/glslang_tab.cpp" +#line 5368 "MachineIndependent/glslang_tab.cpp" break; case 21: /* postfix_expression: postfix_expression DOT IDENTIFIER */ -#line 438 "MachineIndependent/glslang.y" +#line 431 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleDotDereference((yyvsp[0].lex).loc, (yyvsp[-2].interm.intermTypedNode), *(yyvsp[0].lex).string); } -#line 5383 "MachineIndependent/glslang_tab.cpp" +#line 5376 "MachineIndependent/glslang_tab.cpp" break; case 22: /* postfix_expression: postfix_expression INC_OP */ -#line 441 "MachineIndependent/glslang.y" +#line 434 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "++", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "++", EOpPostIncrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5393 "MachineIndependent/glslang_tab.cpp" +#line 5386 "MachineIndependent/glslang_tab.cpp" break; case 23: /* postfix_expression: postfix_expression DEC_OP */ -#line 446 "MachineIndependent/glslang.y" +#line 439 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[-1].interm.intermTypedNode)); parseContext.lValueErrorCheck((yyvsp[0].lex).loc, "--", (yyvsp[-1].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[0].lex).loc, "--", EOpPostDecrement, (yyvsp[-1].interm.intermTypedNode)); } -#line 5403 "MachineIndependent/glslang_tab.cpp" +#line 5396 "MachineIndependent/glslang_tab.cpp" break; case 24: /* integer_expression: expression */ -#line 454 "MachineIndependent/glslang.y" +#line 447 "MachineIndependent/glslang.y" { parseContext.integerCheck((yyvsp[0].interm.intermTypedNode), "[]"); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5412 "MachineIndependent/glslang_tab.cpp" +#line 5405 "MachineIndependent/glslang_tab.cpp" break; case 25: /* function_call: function_call_or_method */ -#line 461 "MachineIndependent/glslang.y" +#line 454 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleFunctionCall((yyvsp[0].interm).loc, (yyvsp[0].interm).function, (yyvsp[0].interm).intermNode); delete (yyvsp[0].interm).function; } -#line 5421 "MachineIndependent/glslang_tab.cpp" +#line 5414 "MachineIndependent/glslang_tab.cpp" break; case 26: /* function_call_or_method: function_call_generic */ -#line 468 "MachineIndependent/glslang.y" +#line 461 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5429 "MachineIndependent/glslang_tab.cpp" +#line 5422 "MachineIndependent/glslang_tab.cpp" break; case 27: /* function_call_generic: function_call_header_with_parameters RIGHT_PAREN */ -#line 474 "MachineIndependent/glslang.y" +#line 467 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5438 "MachineIndependent/glslang_tab.cpp" +#line 5431 "MachineIndependent/glslang_tab.cpp" break; case 28: /* function_call_generic: function_call_header_no_parameters RIGHT_PAREN */ -#line 478 "MachineIndependent/glslang.y" +#line 471 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 5447 "MachineIndependent/glslang_tab.cpp" +#line 5440 "MachineIndependent/glslang_tab.cpp" break; case 29: /* function_call_header_no_parameters: function_call_header VOID */ -#line 485 "MachineIndependent/glslang.y" +#line 478 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5455 "MachineIndependent/glslang_tab.cpp" +#line 5448 "MachineIndependent/glslang_tab.cpp" break; case 30: /* function_call_header_no_parameters: function_call_header */ -#line 488 "MachineIndependent/glslang.y" +#line 481 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 5463 "MachineIndependent/glslang_tab.cpp" +#line 5456 "MachineIndependent/glslang_tab.cpp" break; case 31: /* function_call_header_with_parameters: function_call_header assignment_expression */ -#line 494 "MachineIndependent/glslang.y" +#line 487 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed @@ -5482,11 +5475,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = (yyvsp[0].interm.intermTypedNode); } } -#line 5486 "MachineIndependent/glslang_tab.cpp" +#line 5479 "MachineIndependent/glslang_tab.cpp" break; case 32: /* function_call_header_with_parameters: function_call_header_with_parameters COMMA assignment_expression */ -#line 512 "MachineIndependent/glslang.y" +#line 505 "MachineIndependent/glslang.y" { if (parseContext.spvVersion.vulkan > 0 && parseContext.spvVersion.vulkanRelaxed @@ -5506,29 +5499,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } } -#line 5510 "MachineIndependent/glslang_tab.cpp" +#line 5503 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 534 "MachineIndependent/glslang.y" +#line 527 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5518 "MachineIndependent/glslang_tab.cpp" +#line 5511 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 542 "MachineIndependent/glslang.y" +#line 535 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5528 "MachineIndependent/glslang_tab.cpp" +#line 5521 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 547 "MachineIndependent/glslang.y" +#line 540 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5556,50 +5549,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5560 "MachineIndependent/glslang_tab.cpp" +#line 5553 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 574 "MachineIndependent/glslang.y" +#line 567 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5570 "MachineIndependent/glslang_tab.cpp" +#line 5563 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 582 "MachineIndependent/glslang.y" +#line 575 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5581 "MachineIndependent/glslang_tab.cpp" +#line 5574 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 588 "MachineIndependent/glslang.y" +#line 581 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5590 "MachineIndependent/glslang_tab.cpp" +#line 5583 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 592 "MachineIndependent/glslang.y" +#line 585 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5599 "MachineIndependent/glslang_tab.cpp" +#line 5592 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 596 "MachineIndependent/glslang.y" +#line 589 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5616,179 +5609,179 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5620 "MachineIndependent/glslang_tab.cpp" +#line 5613 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 616 "MachineIndependent/glslang.y" +#line 609 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5626 "MachineIndependent/glslang_tab.cpp" +#line 5619 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 617 "MachineIndependent/glslang.y" +#line 610 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5632 "MachineIndependent/glslang_tab.cpp" +#line 5625 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 618 "MachineIndependent/glslang.y" +#line 611 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5638 "MachineIndependent/glslang_tab.cpp" +#line 5631 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 619 "MachineIndependent/glslang.y" +#line 612 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5645 "MachineIndependent/glslang_tab.cpp" +#line 5638 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 625 "MachineIndependent/glslang.y" +#line 618 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5651 "MachineIndependent/glslang_tab.cpp" +#line 5644 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 626 "MachineIndependent/glslang.y" +#line 619 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5661 "MachineIndependent/glslang_tab.cpp" +#line 5654 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 631 "MachineIndependent/glslang.y" +#line 624 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5671 "MachineIndependent/glslang_tab.cpp" +#line 5664 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 636 "MachineIndependent/glslang.y" +#line 629 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5682 "MachineIndependent/glslang_tab.cpp" +#line 5675 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 645 "MachineIndependent/glslang.y" +#line 638 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5688 "MachineIndependent/glslang_tab.cpp" +#line 5681 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 646 "MachineIndependent/glslang.y" +#line 639 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5698 "MachineIndependent/glslang_tab.cpp" +#line 5691 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 651 "MachineIndependent/glslang.y" +#line 644 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5708 "MachineIndependent/glslang_tab.cpp" +#line 5701 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 659 "MachineIndependent/glslang.y" +#line 652 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5714 "MachineIndependent/glslang_tab.cpp" +#line 5707 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 660 "MachineIndependent/glslang.y" +#line 653 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5725 "MachineIndependent/glslang_tab.cpp" +#line 5718 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 666 "MachineIndependent/glslang.y" +#line 659 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5736 "MachineIndependent/glslang_tab.cpp" +#line 5729 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 675 "MachineIndependent/glslang.y" +#line 668 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5742 "MachineIndependent/glslang_tab.cpp" +#line 5735 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 676 "MachineIndependent/glslang.y" +#line 669 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5752 "MachineIndependent/glslang_tab.cpp" +#line 5745 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 681 "MachineIndependent/glslang.y" +#line 674 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5762 "MachineIndependent/glslang_tab.cpp" +#line 5755 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 686 "MachineIndependent/glslang.y" +#line 679 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5772 "MachineIndependent/glslang_tab.cpp" +#line 5765 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 691 "MachineIndependent/glslang.y" +#line 684 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5782 "MachineIndependent/glslang_tab.cpp" +#line 5775 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 699 "MachineIndependent/glslang.y" +#line 692 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5788 "MachineIndependent/glslang_tab.cpp" +#line 5781 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 700 "MachineIndependent/glslang.y" +#line 693 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5798,11 +5791,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5802 "MachineIndependent/glslang_tab.cpp" +#line 5795 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 709 "MachineIndependent/glslang.y" +#line 702 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5812,124 +5805,124 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5816 "MachineIndependent/glslang_tab.cpp" +#line 5809 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 721 "MachineIndependent/glslang.y" +#line 714 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5822 "MachineIndependent/glslang_tab.cpp" +#line 5815 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 722 "MachineIndependent/glslang.y" +#line 715 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5833 "MachineIndependent/glslang_tab.cpp" +#line 5826 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 731 "MachineIndependent/glslang.y" +#line 724 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5839 "MachineIndependent/glslang_tab.cpp" +#line 5832 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 732 "MachineIndependent/glslang.y" +#line 725 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5850 "MachineIndependent/glslang_tab.cpp" +#line 5843 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 741 "MachineIndependent/glslang.y" +#line 734 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5856 "MachineIndependent/glslang_tab.cpp" +#line 5849 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 742 "MachineIndependent/glslang.y" +#line 735 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5867 "MachineIndependent/glslang_tab.cpp" +#line 5860 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 751 "MachineIndependent/glslang.y" +#line 744 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5873 "MachineIndependent/glslang_tab.cpp" +#line 5866 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 752 "MachineIndependent/glslang.y" +#line 745 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5883 "MachineIndependent/glslang_tab.cpp" +#line 5876 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 760 "MachineIndependent/glslang.y" +#line 753 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5889 "MachineIndependent/glslang_tab.cpp" +#line 5882 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 761 "MachineIndependent/glslang.y" +#line 754 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5899 "MachineIndependent/glslang_tab.cpp" +#line 5892 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 769 "MachineIndependent/glslang.y" +#line 762 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5905 "MachineIndependent/glslang_tab.cpp" +#line 5898 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 770 "MachineIndependent/glslang.y" +#line 763 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5915 "MachineIndependent/glslang_tab.cpp" +#line 5908 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 778 "MachineIndependent/glslang.y" +#line 771 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5921 "MachineIndependent/glslang_tab.cpp" +#line 5914 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 779 "MachineIndependent/glslang.y" +#line 772 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5929 "MachineIndependent/glslang_tab.cpp" +#line 5922 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 782 "MachineIndependent/glslang.y" +#line 775 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5942,17 +5935,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5946 "MachineIndependent/glslang_tab.cpp" +#line 5939 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 797 "MachineIndependent/glslang.y" +#line 790 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5952 "MachineIndependent/glslang_tab.cpp" +#line 5945 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 798 "MachineIndependent/glslang.y" +#line 791 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5966,119 +5959,119 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5970 "MachineIndependent/glslang_tab.cpp" +#line 5963 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 814 "MachineIndependent/glslang.y" +#line 807 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5979 "MachineIndependent/glslang_tab.cpp" +#line 5972 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 818 "MachineIndependent/glslang.y" +#line 811 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5988 "MachineIndependent/glslang_tab.cpp" +#line 5981 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 822 "MachineIndependent/glslang.y" +#line 815 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5997 "MachineIndependent/glslang_tab.cpp" +#line 5990 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 826 "MachineIndependent/glslang.y" +#line 819 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 6007 "MachineIndependent/glslang_tab.cpp" +#line 6000 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 831 "MachineIndependent/glslang.y" +#line 824 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 6016 "MachineIndependent/glslang_tab.cpp" +#line 6009 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 835 "MachineIndependent/glslang.y" +#line 828 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6025 "MachineIndependent/glslang_tab.cpp" +#line 6018 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 839 "MachineIndependent/glslang.y" +#line 832 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6034 "MachineIndependent/glslang_tab.cpp" +#line 6027 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 843 "MachineIndependent/glslang.y" +#line 836 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6043 "MachineIndependent/glslang_tab.cpp" +#line 6036 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 847 "MachineIndependent/glslang.y" +#line 840 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6052 "MachineIndependent/glslang_tab.cpp" +#line 6045 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 851 "MachineIndependent/glslang.y" +#line 844 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6061 "MachineIndependent/glslang_tab.cpp" +#line 6054 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 855 "MachineIndependent/glslang.y" +#line 848 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6070 "MachineIndependent/glslang_tab.cpp" +#line 6063 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 862 "MachineIndependent/glslang.y" +#line 855 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6078 "MachineIndependent/glslang_tab.cpp" +#line 6071 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 865 "MachineIndependent/glslang.y" +#line 858 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6087,30 +6080,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6091 "MachineIndependent/glslang_tab.cpp" +#line 6084 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 876 "MachineIndependent/glslang.y" +#line 869 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6100 "MachineIndependent/glslang_tab.cpp" +#line 6093 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 883 "MachineIndependent/glslang.y" +#line 876 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6110 "MachineIndependent/glslang_tab.cpp" +#line 6103 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 888 "MachineIndependent/glslang.y" +#line 881 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6118,31 +6111,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6122 "MachineIndependent/glslang_tab.cpp" +#line 6115 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 895 "MachineIndependent/glslang.y" +#line 888 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6132 "MachineIndependent/glslang_tab.cpp" +#line 6125 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 900 "MachineIndependent/glslang.y" +#line 893 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6142 "MachineIndependent/glslang_tab.cpp" +#line 6135 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 905 "MachineIndependent/glslang.y" +#line 898 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6150,75 +6143,75 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6154 "MachineIndependent/glslang_tab.cpp" +#line 6147 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 912 "MachineIndependent/glslang.y" +#line 905 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6163 "MachineIndependent/glslang_tab.cpp" +#line 6156 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 916 "MachineIndependent/glslang.y" +#line 909 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6172 "MachineIndependent/glslang_tab.cpp" +#line 6165 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 920 "MachineIndependent/glslang.y" +#line 913 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6181 "MachineIndependent/glslang_tab.cpp" +#line 6174 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 924 "MachineIndependent/glslang.y" +#line 917 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6191 "MachineIndependent/glslang_tab.cpp" +#line 6184 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 929 "MachineIndependent/glslang.y" +#line 922 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6201 "MachineIndependent/glslang_tab.cpp" +#line 6194 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 934 "MachineIndependent/glslang.y" +#line 927 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6212 "MachineIndependent/glslang_tab.cpp" +#line 6205 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ -#line 943 "MachineIndependent/glslang.y" +#line 936 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6218 "MachineIndependent/glslang_tab.cpp" +#line 6211 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 943 "MachineIndependent/glslang.y" +#line 936 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6228,61 +6221,61 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6232 "MachineIndependent/glslang_tab.cpp" +#line 6225 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 954 "MachineIndependent/glslang.y" +#line 947 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6241 "MachineIndependent/glslang_tab.cpp" +#line 6234 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 958 "MachineIndependent/glslang.y" +#line 951 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6250 "MachineIndependent/glslang_tab.cpp" +#line 6243 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 965 "MachineIndependent/glslang.y" +#line 958 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6260 "MachineIndependent/glslang_tab.cpp" +#line 6253 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 970 "MachineIndependent/glslang.y" +#line 963 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6271 "MachineIndependent/glslang_tab.cpp" +#line 6264 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 976 "MachineIndependent/glslang.y" +#line 969 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6282 "MachineIndependent/glslang_tab.cpp" +#line 6275 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 982 "MachineIndependent/glslang.y" +#line 975 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6290,27 +6283,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6294 "MachineIndependent/glslang_tab.cpp" +#line 6287 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 992 "MachineIndependent/glslang.y" +#line 985 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6302 "MachineIndependent/glslang_tab.cpp" +#line 6295 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 995 "MachineIndependent/glslang.y" +#line 988 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6310 "MachineIndependent/glslang_tab.cpp" +#line 6303 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1002 "MachineIndependent/glslang.y" +#line 995 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6324,11 +6317,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6328 "MachineIndependent/glslang_tab.cpp" +#line 6321 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1015 "MachineIndependent/glslang.y" +#line 1008 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6349,11 +6342,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } -#line 6353 "MachineIndependent/glslang_tab.cpp" +#line 6346 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1038 "MachineIndependent/glslang.y" +#line 1031 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6373,11 +6366,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6377 "MachineIndependent/glslang_tab.cpp" +#line 6370 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1061 "MachineIndependent/glslang.y" +#line 1054 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6393,11 +6386,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6397 "MachineIndependent/glslang_tab.cpp" +#line 6390 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1076 "MachineIndependent/glslang.y" +#line 1069 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6417,11 +6410,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6421 "MachineIndependent/glslang_tab.cpp" +#line 6414 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1101 "MachineIndependent/glslang.y" +#line 1094 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6433,11 +6426,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6437 "MachineIndependent/glslang_tab.cpp" +#line 6430 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1112 "MachineIndependent/glslang.y" +#line 1105 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6445,11 +6438,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6449 "MachineIndependent/glslang_tab.cpp" +#line 6442 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1122 "MachineIndependent/glslang.y" +#line 1115 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6460,11 +6453,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6464 "MachineIndependent/glslang_tab.cpp" +#line 6457 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1132 "MachineIndependent/glslang.y" +#line 1125 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6472,118 +6465,118 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6476 "MachineIndependent/glslang_tab.cpp" +#line 6469 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1142 "MachineIndependent/glslang.y" +#line 1135 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6487 "MachineIndependent/glslang_tab.cpp" +#line 6480 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1151 "MachineIndependent/glslang.y" +#line 1144 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6495 "MachineIndependent/glslang_tab.cpp" +#line 6488 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1154 "MachineIndependent/glslang.y" +#line 1147 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6504 "MachineIndependent/glslang_tab.cpp" +#line 6497 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1158 "MachineIndependent/glslang.y" +#line 1151 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6513 "MachineIndependent/glslang_tab.cpp" +#line 6506 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1162 "MachineIndependent/glslang.y" +#line 1155 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6523 "MachineIndependent/glslang_tab.cpp" +#line 6516 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1167 "MachineIndependent/glslang.y" +#line 1160 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6533 "MachineIndependent/glslang_tab.cpp" +#line 6526 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1175 "MachineIndependent/glslang.y" +#line 1168 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6543 "MachineIndependent/glslang_tab.cpp" +#line 6536 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1180 "MachineIndependent/glslang.y" +#line 1173 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6553 "MachineIndependent/glslang_tab.cpp" +#line 6546 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1185 "MachineIndependent/glslang.y" +#line 1178 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6563 "MachineIndependent/glslang_tab.cpp" +#line 6556 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1190 "MachineIndependent/glslang.y" +#line 1183 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6573 "MachineIndependent/glslang_tab.cpp" +#line 6566 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1195 "MachineIndependent/glslang.y" +#line 1188 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6583 "MachineIndependent/glslang_tab.cpp" +#line 6576 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1204 "MachineIndependent/glslang.y" +#line 1197 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6594,11 +6587,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat()); } -#line 6598 "MachineIndependent/glslang_tab.cpp" +#line 6591 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1214 "MachineIndependent/glslang.y" +#line 1207 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6623,22 +6616,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6627 "MachineIndependent/glslang_tab.cpp" +#line 6620 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1241 "MachineIndependent/glslang.y" +#line 1234 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6638 "MachineIndependent/glslang_tab.cpp" +#line 6631 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1250 "MachineIndependent/glslang.y" +#line 1243 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6646,11 +6639,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6650 "MachineIndependent/glslang_tab.cpp" +#line 6643 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1257 "MachineIndependent/glslang.y" +#line 1250 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6658,11 +6651,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6662 "MachineIndependent/glslang_tab.cpp" +#line 6655 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1264 "MachineIndependent/glslang.y" +#line 1257 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6670,11 +6663,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6674 "MachineIndependent/glslang_tab.cpp" +#line 6667 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1271 "MachineIndependent/glslang.y" +#line 1264 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6682,11 +6675,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6686 "MachineIndependent/glslang_tab.cpp" +#line 6679 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1278 "MachineIndependent/glslang.y" +#line 1271 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6695,11 +6688,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6699 "MachineIndependent/glslang_tab.cpp" +#line 6692 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1286 "MachineIndependent/glslang.y" +#line 1279 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6708,11 +6701,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6712 "MachineIndependent/glslang_tab.cpp" +#line 6705 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1294 "MachineIndependent/glslang.y" +#line 1287 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6723,11 +6716,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6727 "MachineIndependent/glslang_tab.cpp" +#line 6720 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1304 "MachineIndependent/glslang.y" +#line 1297 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6738,11 +6731,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6742 "MachineIndependent/glslang_tab.cpp" +#line 6735 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1314 "MachineIndependent/glslang.y" +#line 1307 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6750,11 +6743,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6754 "MachineIndependent/glslang_tab.cpp" +#line 6747 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1321 "MachineIndependent/glslang.y" +#line 1314 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6762,84 +6755,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6766 "MachineIndependent/glslang_tab.cpp" +#line 6759 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1331 "MachineIndependent/glslang.y" +#line 1324 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6774 "MachineIndependent/glslang_tab.cpp" +#line 6767 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1337 "MachineIndependent/glslang.y" +#line 1330 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6782 "MachineIndependent/glslang_tab.cpp" +#line 6775 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1340 "MachineIndependent/glslang.y" +#line 1333 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6792 "MachineIndependent/glslang_tab.cpp" +#line 6785 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1347 "MachineIndependent/glslang.y" +#line 1340 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6801 "MachineIndependent/glslang_tab.cpp" +#line 6794 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1351 "MachineIndependent/glslang.y" +#line 1344 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6810 "MachineIndependent/glslang_tab.cpp" +#line 6803 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1355 "MachineIndependent/glslang.y" +#line 1348 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6820 "MachineIndependent/glslang_tab.cpp" +#line 6813 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1363 "MachineIndependent/glslang.y" +#line 1356 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6831 "MachineIndependent/glslang_tab.cpp" +#line 6824 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1372 "MachineIndependent/glslang.y" +#line 1365 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6839 "MachineIndependent/glslang_tab.cpp" +#line 6832 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1375 "MachineIndependent/glslang.y" +#line 1368 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6848,151 +6841,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6852 "MachineIndependent/glslang_tab.cpp" +#line 6845 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1386 "MachineIndependent/glslang.y" +#line 1379 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6860 "MachineIndependent/glslang_tab.cpp" +#line 6853 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1389 "MachineIndependent/glslang.y" +#line 1382 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6868 "MachineIndependent/glslang_tab.cpp" +#line 6861 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1392 "MachineIndependent/glslang.y" +#line 1385 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6877 "MachineIndependent/glslang_tab.cpp" +#line 6870 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1396 "MachineIndependent/glslang.y" +#line 1389 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6886 "MachineIndependent/glslang_tab.cpp" +#line 6879 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1400 "MachineIndependent/glslang.y" +#line 1393 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6895 "MachineIndependent/glslang_tab.cpp" +#line 6888 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1404 "MachineIndependent/glslang.y" +#line 1397 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6904 "MachineIndependent/glslang_tab.cpp" +#line 6897 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1408 "MachineIndependent/glslang.y" +#line 1401 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6912 "MachineIndependent/glslang_tab.cpp" +#line 6905 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1411 "MachineIndependent/glslang.y" +#line 1404 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6922 "MachineIndependent/glslang_tab.cpp" +#line 6915 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1416 "MachineIndependent/glslang.y" +#line 1409 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6931 "MachineIndependent/glslang_tab.cpp" +#line 6924 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1420 "MachineIndependent/glslang.y" +#line 1413 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6941 "MachineIndependent/glslang_tab.cpp" +#line 6934 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1425 "MachineIndependent/glslang.y" +#line 1418 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6951 "MachineIndependent/glslang_tab.cpp" +#line 6944 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1433 "MachineIndependent/glslang.y" +#line 1426 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6960 "MachineIndependent/glslang_tab.cpp" +#line 6953 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1437 "MachineIndependent/glslang.y" +#line 1430 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6970 "MachineIndependent/glslang_tab.cpp" +#line 6963 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1442 "MachineIndependent/glslang.y" +#line 1435 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6981 "MachineIndependent/glslang_tab.cpp" +#line 6974 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1448 "MachineIndependent/glslang.y" +#line 1441 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6992 "MachineIndependent/glslang_tab.cpp" +#line 6985 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1454 "MachineIndependent/glslang.y" +#line 1447 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -7000,31 +6993,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 7004 "MachineIndependent/glslang_tab.cpp" +#line 6997 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1461 "MachineIndependent/glslang.y" +#line 1454 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 7014 "MachineIndependent/glslang_tab.cpp" +#line 7007 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: TILEIMAGEEXT */ -#line 1466 "MachineIndependent/glslang.y" +#line 1459 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 7024 "MachineIndependent/glslang_tab.cpp" +#line 7017 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: SHARED */ -#line 1471 "MachineIndependent/glslang.y" +#line 1464 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7033,21 +7026,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7037 "MachineIndependent/glslang_tab.cpp" +#line 7030 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: BUFFER */ -#line 1479 "MachineIndependent/glslang.y" +#line 1472 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7047 "MachineIndependent/glslang_tab.cpp" +#line 7040 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: ATTRIBUTE */ -#line 1484 "MachineIndependent/glslang.y" +#line 1477 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7060,11 +7053,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7064 "MachineIndependent/glslang_tab.cpp" +#line 7057 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: VARYING */ -#line 1496 "MachineIndependent/glslang.y" +#line 1489 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7079,32 +7072,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7083 "MachineIndependent/glslang_tab.cpp" +#line 7076 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: PATCH */ -#line 1510 "MachineIndependent/glslang.y" +#line 1503 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7094 "MachineIndependent/glslang_tab.cpp" +#line 7087 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: SAMPLE */ -#line 1516 "MachineIndependent/glslang.y" +#line 1509 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7104 "MachineIndependent/glslang_tab.cpp" +#line 7097 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITATTRNV */ -#line 1521 "MachineIndependent/glslang.y" +#line 1514 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7113,11 +7106,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7117 "MachineIndependent/glslang_tab.cpp" +#line 7110 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1529 "MachineIndependent/glslang.y" +#line 1522 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7126,11 +7119,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7130 "MachineIndependent/glslang_tab.cpp" +#line 7123 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITATTREXT */ -#line 1537 "MachineIndependent/glslang.y" +#line 1530 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7139,11 +7132,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7143 "MachineIndependent/glslang_tab.cpp" +#line 7136 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADNV */ -#line 1545 "MachineIndependent/glslang.y" +#line 1538 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7152,11 +7145,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7156 "MachineIndependent/glslang_tab.cpp" +#line 7149 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADEXT */ -#line 1553 "MachineIndependent/glslang.y" +#line 1546 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7165,11 +7158,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7169 "MachineIndependent/glslang_tab.cpp" +#line 7162 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINNV */ -#line 1561 "MachineIndependent/glslang.y" +#line 1554 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7178,11 +7171,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7182 "MachineIndependent/glslang_tab.cpp" +#line 7175 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINEXT */ -#line 1569 "MachineIndependent/glslang.y" +#line 1562 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7191,11 +7184,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7195 "MachineIndependent/glslang_tab.cpp" +#line 7188 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATANV */ -#line 1577 "MachineIndependent/glslang.y" +#line 1570 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7204,11 +7197,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7208 "MachineIndependent/glslang_tab.cpp" +#line 7201 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAEXT */ -#line 1585 "MachineIndependent/glslang.y" +#line 1578 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7217,11 +7210,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7221 "MachineIndependent/glslang_tab.cpp" +#line 7214 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINNV */ -#line 1593 "MachineIndependent/glslang.y" +#line 1586 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7229,11 +7222,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7233 "MachineIndependent/glslang_tab.cpp" +#line 7226 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINEXT */ -#line 1600 "MachineIndependent/glslang.y" +#line 1593 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7241,138 +7234,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7245 "MachineIndependent/glslang_tab.cpp" +#line 7238 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: COHERENT */ -#line 1607 "MachineIndependent/glslang.y" +#line 1600 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7254 "MachineIndependent/glslang_tab.cpp" +#line 7247 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: DEVICECOHERENT */ -#line 1611 "MachineIndependent/glslang.y" +#line 1604 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7264 "MachineIndependent/glslang_tab.cpp" +#line 7257 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1616 "MachineIndependent/glslang.y" +#line 1609 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7274 "MachineIndependent/glslang_tab.cpp" +#line 7267 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1621 "MachineIndependent/glslang.y" +#line 1614 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7284 "MachineIndependent/glslang_tab.cpp" +#line 7277 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1626 "MachineIndependent/glslang.y" +#line 1619 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7294 "MachineIndependent/glslang_tab.cpp" +#line 7287 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: NONPRIVATE */ -#line 1631 "MachineIndependent/glslang.y" +#line 1624 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7304 "MachineIndependent/glslang_tab.cpp" +#line 7297 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1636 "MachineIndependent/glslang.y" +#line 1629 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7314 "MachineIndependent/glslang_tab.cpp" +#line 7307 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: VOLATILE */ -#line 1641 "MachineIndependent/glslang.y" +#line 1634 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7323 "MachineIndependent/glslang_tab.cpp" +#line 7316 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: RESTRICT */ -#line 1645 "MachineIndependent/glslang.y" +#line 1638 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7332 "MachineIndependent/glslang_tab.cpp" +#line 7325 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: READONLY */ -#line 1649 "MachineIndependent/glslang.y" +#line 1642 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7341 "MachineIndependent/glslang_tab.cpp" +#line 7334 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: WRITEONLY */ -#line 1653 "MachineIndependent/glslang.y" +#line 1646 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7350 "MachineIndependent/glslang_tab.cpp" +#line 7343 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE */ -#line 1657 "MachineIndependent/glslang.y" +#line 1650 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7361 "MachineIndependent/glslang_tab.cpp" +#line 7354 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1663 "MachineIndependent/glslang.y" +#line 1656 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7372 "MachineIndependent/glslang_tab.cpp" +#line 7365 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1669 "MachineIndependent/glslang.y" +#line 1662 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7380,38 +7373,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7384 "MachineIndependent/glslang_tab.cpp" +#line 7377 "MachineIndependent/glslang_tab.cpp" break; case 206: /* non_uniform_qualifier: NONUNIFORM */ -#line 1679 "MachineIndependent/glslang.y" +#line 1672 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7393 "MachineIndependent/glslang_tab.cpp" +#line 7386 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: IDENTIFIER */ -#line 1686 "MachineIndependent/glslang.y" +#line 1679 "MachineIndependent/glslang.y" { // TODO } -#line 7401 "MachineIndependent/glslang_tab.cpp" +#line 7394 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1689 "MachineIndependent/glslang.y" +#line 1682 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7411 "MachineIndependent/glslang_tab.cpp" +#line 7404 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1697 "MachineIndependent/glslang.y" +#line 1690 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); @@ -7419,11 +7412,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } -#line 7423 "MachineIndependent/glslang_tab.cpp" +#line 7416 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1704 "MachineIndependent/glslang.y" +#line 1697 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7432,21 +7425,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7436 "MachineIndependent/glslang_tab.cpp" +#line 7429 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1715 "MachineIndependent/glslang.y" +#line 1708 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7446 "MachineIndependent/glslang_tab.cpp" +#line 7439 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1720 "MachineIndependent/glslang.y" +#line 1713 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7455,20 +7448,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7459 "MachineIndependent/glslang_tab.cpp" +#line 7452 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1728 "MachineIndependent/glslang.y" +#line 1721 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7468 "MachineIndependent/glslang_tab.cpp" +#line 7461 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1732 "MachineIndependent/glslang.y" +#line 1725 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7476,45 +7469,45 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7480 "MachineIndependent/glslang_tab.cpp" +#line 7473 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1742 "MachineIndependent/glslang.y" +#line 1735 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7488 "MachineIndependent/glslang_tab.cpp" +#line 7481 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier_opt: %empty */ -#line 1745 "MachineIndependent/glslang.y" +#line 1738 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7496 "MachineIndependent/glslang_tab.cpp" +#line 7489 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1751 "MachineIndependent/glslang.y" +#line 1744 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7504 "MachineIndependent/glslang_tab.cpp" +#line 7497 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_list: type_specifier */ -#line 1757 "MachineIndependent/glslang.y" +#line 1750 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7514 "MachineIndependent/glslang_tab.cpp" +#line 7507 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier_list: unary_expression */ -#line 1762 "MachineIndependent/glslang.y" +#line 1755 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7523,11 +7516,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7527 "MachineIndependent/glslang_tab.cpp" +#line 7520 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1770 "MachineIndependent/glslang.y" +#line 1763 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7535,300 +7528,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7539 "MachineIndependent/glslang_tab.cpp" +#line 7532 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: VOID */ -#line 1780 "MachineIndependent/glslang.y" +#line 1773 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7548 "MachineIndependent/glslang_tab.cpp" +#line 7541 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: FLOAT */ -#line 1784 "MachineIndependent/glslang.y" +#line 1777 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7557 "MachineIndependent/glslang_tab.cpp" +#line 7550 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: INT */ -#line 1788 "MachineIndependent/glslang.y" +#line 1781 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7566 "MachineIndependent/glslang_tab.cpp" +#line 7559 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: UINT */ -#line 1792 "MachineIndependent/glslang.y" +#line 1785 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7576 "MachineIndependent/glslang_tab.cpp" +#line 7569 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: BOOL */ -#line 1797 "MachineIndependent/glslang.y" +#line 1790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7585 "MachineIndependent/glslang_tab.cpp" +#line 7578 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC2 */ -#line 1801 "MachineIndependent/glslang.y" +#line 1794 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7595 "MachineIndependent/glslang_tab.cpp" +#line 7588 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: VEC3 */ -#line 1806 "MachineIndependent/glslang.y" +#line 1799 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7605 "MachineIndependent/glslang_tab.cpp" +#line 7598 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: VEC4 */ -#line 1811 "MachineIndependent/glslang.y" +#line 1804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7615 "MachineIndependent/glslang_tab.cpp" +#line 7608 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC2 */ -#line 1816 "MachineIndependent/glslang.y" +#line 1809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7625 "MachineIndependent/glslang_tab.cpp" +#line 7618 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: BVEC3 */ -#line 1821 "MachineIndependent/glslang.y" +#line 1814 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7635 "MachineIndependent/glslang_tab.cpp" +#line 7628 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: BVEC4 */ -#line 1826 "MachineIndependent/glslang.y" +#line 1819 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7645 "MachineIndependent/glslang_tab.cpp" +#line 7638 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC2 */ -#line 1831 "MachineIndependent/glslang.y" +#line 1824 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7655 "MachineIndependent/glslang_tab.cpp" +#line 7648 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: IVEC3 */ -#line 1836 "MachineIndependent/glslang.y" +#line 1829 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7665 "MachineIndependent/glslang_tab.cpp" +#line 7658 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: IVEC4 */ -#line 1841 "MachineIndependent/glslang.y" +#line 1834 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7675 "MachineIndependent/glslang_tab.cpp" +#line 7668 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC2 */ -#line 1846 "MachineIndependent/glslang.y" +#line 1839 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7686 "MachineIndependent/glslang_tab.cpp" +#line 7679 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: UVEC3 */ -#line 1852 "MachineIndependent/glslang.y" +#line 1845 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7697 "MachineIndependent/glslang_tab.cpp" +#line 7690 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: UVEC4 */ -#line 1858 "MachineIndependent/glslang.y" +#line 1851 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7708 "MachineIndependent/glslang_tab.cpp" +#line 7701 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT2 */ -#line 1864 "MachineIndependent/glslang.y" +#line 1857 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7718 "MachineIndependent/glslang_tab.cpp" +#line 7711 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT3 */ -#line 1869 "MachineIndependent/glslang.y" +#line 1862 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7728 "MachineIndependent/glslang_tab.cpp" +#line 7721 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT4 */ -#line 1874 "MachineIndependent/glslang.y" +#line 1867 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7738 "MachineIndependent/glslang_tab.cpp" +#line 7731 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X2 */ -#line 1879 "MachineIndependent/glslang.y" +#line 1872 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7748 "MachineIndependent/glslang_tab.cpp" +#line 7741 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT2X3 */ -#line 1884 "MachineIndependent/glslang.y" +#line 1877 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7758 "MachineIndependent/glslang_tab.cpp" +#line 7751 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT2X4 */ -#line 1889 "MachineIndependent/glslang.y" +#line 1882 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7768 "MachineIndependent/glslang_tab.cpp" +#line 7761 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X2 */ -#line 1894 "MachineIndependent/glslang.y" +#line 1887 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7778 "MachineIndependent/glslang_tab.cpp" +#line 7771 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT3X3 */ -#line 1899 "MachineIndependent/glslang.y" +#line 1892 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7788 "MachineIndependent/glslang_tab.cpp" +#line 7781 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT3X4 */ -#line 1904 "MachineIndependent/glslang.y" +#line 1897 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7798 "MachineIndependent/glslang_tab.cpp" +#line 7791 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X2 */ -#line 1909 "MachineIndependent/glslang.y" +#line 1902 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7808 "MachineIndependent/glslang_tab.cpp" +#line 7801 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT4X3 */ -#line 1914 "MachineIndependent/glslang.y" +#line 1907 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7818 "MachineIndependent/glslang_tab.cpp" +#line 7811 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: MAT4X4 */ -#line 1919 "MachineIndependent/glslang.y" +#line 1912 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7828 "MachineIndependent/glslang_tab.cpp" +#line 7821 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: DOUBLE */ -#line 1924 "MachineIndependent/glslang.y" +#line 1917 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7836,121 +7829,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7840 "MachineIndependent/glslang_tab.cpp" +#line 7833 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT16_T */ -#line 1931 "MachineIndependent/glslang.y" +#line 1924 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7850 "MachineIndependent/glslang_tab.cpp" +#line 7843 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: FLOAT32_T */ -#line 1936 "MachineIndependent/glslang.y" +#line 1929 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7860 "MachineIndependent/glslang_tab.cpp" +#line 7853 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: FLOAT64_T */ -#line 1941 "MachineIndependent/glslang.y" +#line 1934 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7870 "MachineIndependent/glslang_tab.cpp" +#line 7863 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: INT8_T */ -#line 1946 "MachineIndependent/glslang.y" +#line 1939 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7880 "MachineIndependent/glslang_tab.cpp" +#line 7873 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: UINT8_T */ -#line 1951 "MachineIndependent/glslang.y" +#line 1944 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7890 "MachineIndependent/glslang_tab.cpp" +#line 7883 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: INT16_T */ -#line 1956 "MachineIndependent/glslang.y" +#line 1949 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7900 "MachineIndependent/glslang_tab.cpp" +#line 7893 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: UINT16_T */ -#line 1961 "MachineIndependent/glslang.y" +#line 1954 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7910 "MachineIndependent/glslang_tab.cpp" +#line 7903 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: INT32_T */ -#line 1966 "MachineIndependent/glslang.y" +#line 1959 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7920 "MachineIndependent/glslang_tab.cpp" +#line 7913 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: UINT32_T */ -#line 1971 "MachineIndependent/glslang.y" +#line 1964 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7930 "MachineIndependent/glslang_tab.cpp" +#line 7923 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: INT64_T */ -#line 1976 "MachineIndependent/glslang.y" +#line 1969 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7940 "MachineIndependent/glslang_tab.cpp" +#line 7933 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: UINT64_T */ -#line 1981 "MachineIndependent/glslang.y" +#line 1974 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7950 "MachineIndependent/glslang_tab.cpp" +#line 7943 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC2 */ -#line 1986 "MachineIndependent/glslang.y" +#line 1979 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7959,11 +7952,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7963 "MachineIndependent/glslang_tab.cpp" +#line 7956 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: DVEC3 */ -#line 1994 "MachineIndependent/glslang.y" +#line 1987 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7972,11 +7965,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7976 "MachineIndependent/glslang_tab.cpp" +#line 7969 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: DVEC4 */ -#line 2002 "MachineIndependent/glslang.y" +#line 1995 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7985,374 +7978,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7989 "MachineIndependent/glslang_tab.cpp" +#line 7982 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC2 */ -#line 2010 "MachineIndependent/glslang.y" +#line 2003 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 8000 "MachineIndependent/glslang_tab.cpp" +#line 7993 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F16VEC3 */ -#line 2016 "MachineIndependent/glslang.y" +#line 2009 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 8011 "MachineIndependent/glslang_tab.cpp" +#line 8004 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F16VEC4 */ -#line 2022 "MachineIndependent/glslang.y" +#line 2015 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8022 "MachineIndependent/glslang_tab.cpp" +#line 8015 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC2 */ -#line 2028 "MachineIndependent/glslang.y" +#line 2021 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8033 "MachineIndependent/glslang_tab.cpp" +#line 8026 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F32VEC3 */ -#line 2034 "MachineIndependent/glslang.y" +#line 2027 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8044 "MachineIndependent/glslang_tab.cpp" +#line 8037 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F32VEC4 */ -#line 2040 "MachineIndependent/glslang.y" +#line 2033 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8055 "MachineIndependent/glslang_tab.cpp" +#line 8048 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC2 */ -#line 2046 "MachineIndependent/glslang.y" +#line 2039 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8066 "MachineIndependent/glslang_tab.cpp" +#line 8059 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: F64VEC3 */ -#line 2052 "MachineIndependent/glslang.y" +#line 2045 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8077 "MachineIndependent/glslang_tab.cpp" +#line 8070 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: F64VEC4 */ -#line 2058 "MachineIndependent/glslang.y" +#line 2051 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8088 "MachineIndependent/glslang_tab.cpp" +#line 8081 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC2 */ -#line 2064 "MachineIndependent/glslang.y" +#line 2057 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8099 "MachineIndependent/glslang_tab.cpp" +#line 8092 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I8VEC3 */ -#line 2070 "MachineIndependent/glslang.y" +#line 2063 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8110 "MachineIndependent/glslang_tab.cpp" +#line 8103 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I8VEC4 */ -#line 2076 "MachineIndependent/glslang.y" +#line 2069 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8121 "MachineIndependent/glslang_tab.cpp" +#line 8114 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC2 */ -#line 2082 "MachineIndependent/glslang.y" +#line 2075 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8132 "MachineIndependent/glslang_tab.cpp" +#line 8125 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I16VEC3 */ -#line 2088 "MachineIndependent/glslang.y" +#line 2081 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8143 "MachineIndependent/glslang_tab.cpp" +#line 8136 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I16VEC4 */ -#line 2094 "MachineIndependent/glslang.y" +#line 2087 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8154 "MachineIndependent/glslang_tab.cpp" +#line 8147 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC2 */ -#line 2100 "MachineIndependent/glslang.y" +#line 2093 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8165 "MachineIndependent/glslang_tab.cpp" +#line 8158 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I32VEC3 */ -#line 2106 "MachineIndependent/glslang.y" +#line 2099 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8176 "MachineIndependent/glslang_tab.cpp" +#line 8169 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I32VEC4 */ -#line 2112 "MachineIndependent/glslang.y" +#line 2105 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8187 "MachineIndependent/glslang_tab.cpp" +#line 8180 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC2 */ -#line 2118 "MachineIndependent/glslang.y" +#line 2111 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8198 "MachineIndependent/glslang_tab.cpp" +#line 8191 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: I64VEC3 */ -#line 2124 "MachineIndependent/glslang.y" +#line 2117 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8209 "MachineIndependent/glslang_tab.cpp" +#line 8202 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: I64VEC4 */ -#line 2130 "MachineIndependent/glslang.y" +#line 2123 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8220 "MachineIndependent/glslang_tab.cpp" +#line 8213 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC2 */ -#line 2136 "MachineIndependent/glslang.y" +#line 2129 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8231 "MachineIndependent/glslang_tab.cpp" +#line 8224 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U8VEC3 */ -#line 2142 "MachineIndependent/glslang.y" +#line 2135 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8242 "MachineIndependent/glslang_tab.cpp" +#line 8235 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U8VEC4 */ -#line 2148 "MachineIndependent/glslang.y" +#line 2141 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8253 "MachineIndependent/glslang_tab.cpp" +#line 8246 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC2 */ -#line 2154 "MachineIndependent/glslang.y" +#line 2147 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8264 "MachineIndependent/glslang_tab.cpp" +#line 8257 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U16VEC3 */ -#line 2160 "MachineIndependent/glslang.y" +#line 2153 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8275 "MachineIndependent/glslang_tab.cpp" +#line 8268 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U16VEC4 */ -#line 2166 "MachineIndependent/glslang.y" +#line 2159 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8286 "MachineIndependent/glslang_tab.cpp" +#line 8279 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC2 */ -#line 2172 "MachineIndependent/glslang.y" +#line 2165 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8297 "MachineIndependent/glslang_tab.cpp" +#line 8290 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U32VEC3 */ -#line 2178 "MachineIndependent/glslang.y" +#line 2171 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8308 "MachineIndependent/glslang_tab.cpp" +#line 8301 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U32VEC4 */ -#line 2184 "MachineIndependent/glslang.y" +#line 2177 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8319 "MachineIndependent/glslang_tab.cpp" +#line 8312 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC2 */ -#line 2190 "MachineIndependent/glslang.y" +#line 2183 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8330 "MachineIndependent/glslang_tab.cpp" +#line 8323 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: U64VEC3 */ -#line 2196 "MachineIndependent/glslang.y" +#line 2189 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8341 "MachineIndependent/glslang_tab.cpp" +#line 8334 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: U64VEC4 */ -#line 2202 "MachineIndependent/glslang.y" +#line 2195 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8352 "MachineIndependent/glslang_tab.cpp" +#line 8345 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT2 */ -#line 2208 "MachineIndependent/glslang.y" +#line 2201 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8361,11 +8354,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8365 "MachineIndependent/glslang_tab.cpp" +#line 8358 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT3 */ -#line 2216 "MachineIndependent/glslang.y" +#line 2209 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8374,11 +8367,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8378 "MachineIndependent/glslang_tab.cpp" +#line 8371 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT4 */ -#line 2224 "MachineIndependent/glslang.y" +#line 2217 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8387,11 +8380,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8391 "MachineIndependent/glslang_tab.cpp" +#line 8384 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X2 */ -#line 2232 "MachineIndependent/glslang.y" +#line 2225 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8400,11 +8393,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8404 "MachineIndependent/glslang_tab.cpp" +#line 8397 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT2X3 */ -#line 2240 "MachineIndependent/glslang.y" +#line 2233 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8413,11 +8406,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8417 "MachineIndependent/glslang_tab.cpp" +#line 8410 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT2X4 */ -#line 2248 "MachineIndependent/glslang.y" +#line 2241 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8426,11 +8419,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8430 "MachineIndependent/glslang_tab.cpp" +#line 8423 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X2 */ -#line 2256 "MachineIndependent/glslang.y" +#line 2249 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8439,11 +8432,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8443 "MachineIndependent/glslang_tab.cpp" +#line 8436 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT3X3 */ -#line 2264 "MachineIndependent/glslang.y" +#line 2257 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8452,11 +8445,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8456 "MachineIndependent/glslang_tab.cpp" +#line 8449 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT3X4 */ -#line 2272 "MachineIndependent/glslang.y" +#line 2265 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8465,11 +8458,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8469 "MachineIndependent/glslang_tab.cpp" +#line 8462 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X2 */ -#line 2280 "MachineIndependent/glslang.y" +#line 2273 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8478,11 +8471,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8482 "MachineIndependent/glslang_tab.cpp" +#line 8475 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: DMAT4X3 */ -#line 2288 "MachineIndependent/glslang.y" +#line 2281 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8491,11 +8484,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8495 "MachineIndependent/glslang_tab.cpp" +#line 8488 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: DMAT4X4 */ -#line 2296 "MachineIndependent/glslang.y" +#line 2289 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8504,2261 +8497,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8508 "MachineIndependent/glslang_tab.cpp" +#line 8501 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT2 */ -#line 2304 "MachineIndependent/glslang.y" +#line 2297 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8519 "MachineIndependent/glslang_tab.cpp" +#line 8512 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT3 */ -#line 2310 "MachineIndependent/glslang.y" +#line 2303 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8530 "MachineIndependent/glslang_tab.cpp" +#line 8523 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT4 */ -#line 2316 "MachineIndependent/glslang.y" +#line 2309 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8541 "MachineIndependent/glslang_tab.cpp" +#line 8534 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2322 "MachineIndependent/glslang.y" +#line 2315 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8552 "MachineIndependent/glslang_tab.cpp" +#line 8545 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2328 "MachineIndependent/glslang.y" +#line 2321 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8563 "MachineIndependent/glslang_tab.cpp" +#line 8556 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2334 "MachineIndependent/glslang.y" +#line 2327 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8574 "MachineIndependent/glslang_tab.cpp" +#line 8567 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2340 "MachineIndependent/glslang.y" +#line 2333 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8585 "MachineIndependent/glslang_tab.cpp" +#line 8578 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2346 "MachineIndependent/glslang.y" +#line 2339 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8596 "MachineIndependent/glslang_tab.cpp" +#line 8589 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2352 "MachineIndependent/glslang.y" +#line 2345 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8607 "MachineIndependent/glslang_tab.cpp" +#line 8600 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2358 "MachineIndependent/glslang.y" +#line 2351 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8618 "MachineIndependent/glslang_tab.cpp" +#line 8611 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2364 "MachineIndependent/glslang.y" +#line 2357 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8629 "MachineIndependent/glslang_tab.cpp" +#line 8622 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2370 "MachineIndependent/glslang.y" +#line 2363 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8640 "MachineIndependent/glslang_tab.cpp" +#line 8633 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT2 */ -#line 2376 "MachineIndependent/glslang.y" +#line 2369 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8651 "MachineIndependent/glslang_tab.cpp" +#line 8644 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT3 */ -#line 2382 "MachineIndependent/glslang.y" +#line 2375 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8662 "MachineIndependent/glslang_tab.cpp" +#line 8655 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT4 */ -#line 2388 "MachineIndependent/glslang.y" +#line 2381 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8673 "MachineIndependent/glslang_tab.cpp" +#line 8666 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2394 "MachineIndependent/glslang.y" +#line 2387 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8684 "MachineIndependent/glslang_tab.cpp" +#line 8677 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2400 "MachineIndependent/glslang.y" +#line 2393 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8695 "MachineIndependent/glslang_tab.cpp" +#line 8688 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2406 "MachineIndependent/glslang.y" +#line 2399 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8706 "MachineIndependent/glslang_tab.cpp" +#line 8699 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2412 "MachineIndependent/glslang.y" +#line 2405 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8717 "MachineIndependent/glslang_tab.cpp" +#line 8710 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2418 "MachineIndependent/glslang.y" +#line 2411 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8728 "MachineIndependent/glslang_tab.cpp" +#line 8721 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2424 "MachineIndependent/glslang.y" +#line 2417 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8739 "MachineIndependent/glslang_tab.cpp" +#line 8732 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2430 "MachineIndependent/glslang.y" +#line 2423 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8750 "MachineIndependent/glslang_tab.cpp" +#line 8743 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2436 "MachineIndependent/glslang.y" +#line 2429 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8761 "MachineIndependent/glslang_tab.cpp" +#line 8754 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2442 "MachineIndependent/glslang.y" +#line 2435 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8772 "MachineIndependent/glslang_tab.cpp" +#line 8765 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT2 */ -#line 2448 "MachineIndependent/glslang.y" +#line 2441 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8783 "MachineIndependent/glslang_tab.cpp" +#line 8776 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT3 */ -#line 2454 "MachineIndependent/glslang.y" +#line 2447 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8794 "MachineIndependent/glslang_tab.cpp" +#line 8787 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT4 */ -#line 2460 "MachineIndependent/glslang.y" +#line 2453 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8805 "MachineIndependent/glslang_tab.cpp" +#line 8798 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2466 "MachineIndependent/glslang.y" +#line 2459 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8816 "MachineIndependent/glslang_tab.cpp" +#line 8809 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2472 "MachineIndependent/glslang.y" +#line 2465 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8827 "MachineIndependent/glslang_tab.cpp" +#line 8820 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2478 "MachineIndependent/glslang.y" +#line 2471 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8838 "MachineIndependent/glslang_tab.cpp" +#line 8831 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2484 "MachineIndependent/glslang.y" +#line 2477 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8849 "MachineIndependent/glslang_tab.cpp" +#line 8842 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2490 "MachineIndependent/glslang.y" +#line 2483 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8860 "MachineIndependent/glslang_tab.cpp" +#line 8853 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2496 "MachineIndependent/glslang.y" +#line 2489 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8871 "MachineIndependent/glslang_tab.cpp" +#line 8864 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2502 "MachineIndependent/glslang.y" +#line 2495 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8882 "MachineIndependent/glslang_tab.cpp" +#line 8875 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2508 "MachineIndependent/glslang.y" +#line 2501 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8893 "MachineIndependent/glslang_tab.cpp" +#line 8886 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2514 "MachineIndependent/glslang.y" +#line 2507 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8904 "MachineIndependent/glslang_tab.cpp" +#line 8897 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2520 "MachineIndependent/glslang.y" +#line 2513 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8913 "MachineIndependent/glslang_tab.cpp" +#line 8906 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2524 "MachineIndependent/glslang.y" +#line 2517 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8922 "MachineIndependent/glslang_tab.cpp" +#line 8915 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2528 "MachineIndependent/glslang.y" +#line 2521 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8931 "MachineIndependent/glslang_tab.cpp" +#line 8924 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2532 "MachineIndependent/glslang.y" +#line 2525 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8941 "MachineIndependent/glslang_tab.cpp" +#line 8934 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER1D */ -#line 2537 "MachineIndependent/glslang.y" +#line 2530 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8951 "MachineIndependent/glslang_tab.cpp" +#line 8944 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLER2D */ -#line 2542 "MachineIndependent/glslang.y" +#line 2535 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8961 "MachineIndependent/glslang_tab.cpp" +#line 8954 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLER3D */ -#line 2547 "MachineIndependent/glslang.y" +#line 2540 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8971 "MachineIndependent/glslang_tab.cpp" +#line 8964 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2552 "MachineIndependent/glslang.y" +#line 2545 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8981 "MachineIndependent/glslang_tab.cpp" +#line 8974 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2557 "MachineIndependent/glslang.y" +#line 2550 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8991 "MachineIndependent/glslang_tab.cpp" +#line 8984 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2562 "MachineIndependent/glslang.y" +#line 2555 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 9001 "MachineIndependent/glslang_tab.cpp" +#line 8994 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2567 "MachineIndependent/glslang.y" +#line 2560 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 9011 "MachineIndependent/glslang_tab.cpp" +#line 9004 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2572 "MachineIndependent/glslang.y" +#line 2565 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9021 "MachineIndependent/glslang_tab.cpp" +#line 9014 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2577 "MachineIndependent/glslang.y" +#line 2570 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9031 "MachineIndependent/glslang_tab.cpp" +#line 9024 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2582 "MachineIndependent/glslang.y" +#line 2575 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9041 "MachineIndependent/glslang_tab.cpp" +#line 9034 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2587 "MachineIndependent/glslang.y" +#line 2580 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9051 "MachineIndependent/glslang_tab.cpp" +#line 9044 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2592 "MachineIndependent/glslang.y" +#line 2585 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9061 "MachineIndependent/glslang_tab.cpp" +#line 9054 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2597 "MachineIndependent/glslang.y" +#line 2590 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9071 "MachineIndependent/glslang_tab.cpp" +#line 9064 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2602 "MachineIndependent/glslang.y" +#line 2595 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9082 "MachineIndependent/glslang_tab.cpp" +#line 9075 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2608 "MachineIndependent/glslang.y" +#line 2601 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9093 "MachineIndependent/glslang_tab.cpp" +#line 9086 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2614 "MachineIndependent/glslang.y" +#line 2607 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9104 "MachineIndependent/glslang_tab.cpp" +#line 9097 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2620 "MachineIndependent/glslang.y" +#line 2613 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9115 "MachineIndependent/glslang_tab.cpp" +#line 9108 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2626 "MachineIndependent/glslang.y" +#line 2619 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9126 "MachineIndependent/glslang_tab.cpp" +#line 9119 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2632 "MachineIndependent/glslang.y" +#line 2625 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9137 "MachineIndependent/glslang_tab.cpp" +#line 9130 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2638 "MachineIndependent/glslang.y" +#line 2631 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9148 "MachineIndependent/glslang_tab.cpp" +#line 9141 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2644 "MachineIndependent/glslang.y" +#line 2637 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9159 "MachineIndependent/glslang_tab.cpp" +#line 9152 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2650 "MachineIndependent/glslang.y" +#line 2643 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9170 "MachineIndependent/glslang_tab.cpp" +#line 9163 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2656 "MachineIndependent/glslang.y" +#line 2649 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9181 "MachineIndependent/glslang_tab.cpp" +#line 9174 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2662 "MachineIndependent/glslang.y" +#line 2655 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9192 "MachineIndependent/glslang_tab.cpp" +#line 9185 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2668 "MachineIndependent/glslang.y" +#line 2661 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9203 "MachineIndependent/glslang_tab.cpp" +#line 9196 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2674 "MachineIndependent/glslang.y" +#line 2667 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9214 "MachineIndependent/glslang_tab.cpp" +#line 9207 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2680 "MachineIndependent/glslang.y" +#line 2673 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9224 "MachineIndependent/glslang_tab.cpp" +#line 9217 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2685 "MachineIndependent/glslang.y" +#line 2678 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9234 "MachineIndependent/glslang_tab.cpp" +#line 9227 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2690 "MachineIndependent/glslang.y" +#line 2683 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9244 "MachineIndependent/glslang_tab.cpp" +#line 9237 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2695 "MachineIndependent/glslang.y" +#line 2688 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9254 "MachineIndependent/glslang_tab.cpp" +#line 9247 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2700 "MachineIndependent/glslang.y" +#line 2693 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9264 "MachineIndependent/glslang_tab.cpp" +#line 9257 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLER2D */ -#line 2705 "MachineIndependent/glslang.y" +#line 2698 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9274 "MachineIndependent/glslang_tab.cpp" +#line 9267 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: USAMPLER3D */ -#line 2710 "MachineIndependent/glslang.y" +#line 2703 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9284 "MachineIndependent/glslang_tab.cpp" +#line 9277 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2715 "MachineIndependent/glslang.y" +#line 2708 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9294 "MachineIndependent/glslang_tab.cpp" +#line 9287 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2720 "MachineIndependent/glslang.y" +#line 2713 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9304 "MachineIndependent/glslang_tab.cpp" +#line 9297 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2725 "MachineIndependent/glslang.y" +#line 2718 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9314 "MachineIndependent/glslang_tab.cpp" +#line 9307 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLER1D */ -#line 2730 "MachineIndependent/glslang.y" +#line 2723 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9324 "MachineIndependent/glslang_tab.cpp" +#line 9317 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2735 "MachineIndependent/glslang.y" +#line 2728 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9334 "MachineIndependent/glslang_tab.cpp" +#line 9327 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2740 "MachineIndependent/glslang.y" +#line 2733 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9344 "MachineIndependent/glslang_tab.cpp" +#line 9337 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2745 "MachineIndependent/glslang.y" +#line 2738 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9354 "MachineIndependent/glslang_tab.cpp" +#line 9347 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2750 "MachineIndependent/glslang.y" +#line 2743 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9364 "MachineIndependent/glslang_tab.cpp" +#line 9357 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2755 "MachineIndependent/glslang.y" +#line 2748 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9374 "MachineIndependent/glslang_tab.cpp" +#line 9367 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2760 "MachineIndependent/glslang.y" +#line 2753 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9384 "MachineIndependent/glslang_tab.cpp" +#line 9377 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE2D */ -#line 2765 "MachineIndependent/glslang.y" +#line 2758 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9394 "MachineIndependent/glslang_tab.cpp" +#line 9387 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURE3D */ -#line 2770 "MachineIndependent/glslang.y" +#line 2763 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9404 "MachineIndependent/glslang_tab.cpp" +#line 9397 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2775 "MachineIndependent/glslang.y" +#line 2768 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9414 "MachineIndependent/glslang_tab.cpp" +#line 9407 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2780 "MachineIndependent/glslang.y" +#line 2773 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9424 "MachineIndependent/glslang_tab.cpp" +#line 9417 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2785 "MachineIndependent/glslang.y" +#line 2778 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9434 "MachineIndependent/glslang_tab.cpp" +#line 9427 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2790 "MachineIndependent/glslang.y" +#line 2783 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9444 "MachineIndependent/glslang_tab.cpp" +#line 9437 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2795 "MachineIndependent/glslang.y" +#line 2788 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9454 "MachineIndependent/glslang_tab.cpp" +#line 9447 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2800 "MachineIndependent/glslang.y" +#line 2793 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9464 "MachineIndependent/glslang_tab.cpp" +#line 9457 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2805 "MachineIndependent/glslang.y" +#line 2798 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9474 "MachineIndependent/glslang_tab.cpp" +#line 9467 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2810 "MachineIndependent/glslang.y" +#line 2803 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9484 "MachineIndependent/glslang_tab.cpp" +#line 9477 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2815 "MachineIndependent/glslang.y" +#line 2808 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9494 "MachineIndependent/glslang_tab.cpp" +#line 9487 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2820 "MachineIndependent/glslang.y" +#line 2813 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9504 "MachineIndependent/glslang_tab.cpp" +#line 9497 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLER */ -#line 2825 "MachineIndependent/glslang.y" +#line 2818 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9514 "MachineIndependent/glslang_tab.cpp" +#line 9507 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2830 "MachineIndependent/glslang.y" +#line 2823 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9524 "MachineIndependent/glslang_tab.cpp" +#line 9517 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2835 "MachineIndependent/glslang.y" +#line 2828 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9534 "MachineIndependent/glslang_tab.cpp" +#line 9527 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2840 "MachineIndependent/glslang.y" +#line 2833 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9544 "MachineIndependent/glslang_tab.cpp" +#line 9537 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2845 "MachineIndependent/glslang.y" +#line 2838 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9555 "MachineIndependent/glslang_tab.cpp" +#line 9548 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2851 "MachineIndependent/glslang.y" +#line 2844 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9566 "MachineIndependent/glslang_tab.cpp" +#line 9559 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2857 "MachineIndependent/glslang.y" +#line 2850 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9576 "MachineIndependent/glslang_tab.cpp" +#line 9569 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2862 "MachineIndependent/glslang.y" +#line 2855 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9586 "MachineIndependent/glslang_tab.cpp" +#line 9579 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2867 "MachineIndependent/glslang.y" +#line 2860 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9596 "MachineIndependent/glslang_tab.cpp" +#line 9589 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2872 "MachineIndependent/glslang.y" +#line 2865 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9607 "MachineIndependent/glslang_tab.cpp" +#line 9600 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2878 "MachineIndependent/glslang.y" +#line 2871 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9617 "MachineIndependent/glslang_tab.cpp" +#line 9610 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2883 "MachineIndependent/glslang.y" +#line 2876 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9627 "MachineIndependent/glslang_tab.cpp" +#line 9620 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2888 "MachineIndependent/glslang.y" +#line 2881 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9637 "MachineIndependent/glslang_tab.cpp" +#line 9630 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2893 "MachineIndependent/glslang.y" +#line 2886 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9648 "MachineIndependent/glslang_tab.cpp" +#line 9641 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2899 "MachineIndependent/glslang.y" +#line 2892 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9658 "MachineIndependent/glslang_tab.cpp" +#line 9651 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2904 "MachineIndependent/glslang.y" +#line 2897 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9668 "MachineIndependent/glslang_tab.cpp" +#line 9661 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2909 "MachineIndependent/glslang.y" +#line 2902 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9678 "MachineIndependent/glslang_tab.cpp" +#line 9671 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2914 "MachineIndependent/glslang.y" +#line 2907 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9689 "MachineIndependent/glslang_tab.cpp" +#line 9682 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2920 "MachineIndependent/glslang.y" +#line 2913 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9699 "MachineIndependent/glslang_tab.cpp" +#line 9692 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2925 "MachineIndependent/glslang.y" +#line 2918 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9709 "MachineIndependent/glslang_tab.cpp" +#line 9702 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: TEXTURE1D */ -#line 2930 "MachineIndependent/glslang.y" +#line 2923 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9719 "MachineIndependent/glslang_tab.cpp" +#line 9712 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2935 "MachineIndependent/glslang.y" +#line 2928 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9730 "MachineIndependent/glslang_tab.cpp" +#line 9723 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2941 "MachineIndependent/glslang.y" +#line 2934 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9741 "MachineIndependent/glslang_tab.cpp" +#line 9734 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2947 "MachineIndependent/glslang.y" +#line 2940 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9752 "MachineIndependent/glslang_tab.cpp" +#line 9745 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2953 "MachineIndependent/glslang.y" +#line 2946 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9763 "MachineIndependent/glslang_tab.cpp" +#line 9756 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2959 "MachineIndependent/glslang.y" +#line 2952 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9773 "MachineIndependent/glslang_tab.cpp" +#line 9766 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2964 "MachineIndependent/glslang.y" +#line 2957 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9784 "MachineIndependent/glslang_tab.cpp" +#line 9777 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2970 "MachineIndependent/glslang.y" +#line 2963 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9795 "MachineIndependent/glslang_tab.cpp" +#line 9788 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2976 "MachineIndependent/glslang.y" +#line 2969 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9806 "MachineIndependent/glslang_tab.cpp" +#line 9799 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2982 "MachineIndependent/glslang.y" +#line 2975 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9816 "MachineIndependent/glslang_tab.cpp" +#line 9809 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2987 "MachineIndependent/glslang.y" +#line 2980 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9826 "MachineIndependent/glslang_tab.cpp" +#line 9819 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2992 "MachineIndependent/glslang.y" +#line 2985 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9836 "MachineIndependent/glslang_tab.cpp" +#line 9829 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2997 "MachineIndependent/glslang.y" +#line 2990 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9846 "MachineIndependent/glslang_tab.cpp" +#line 9839 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3002 "MachineIndependent/glslang.y" +#line 2995 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9856 "MachineIndependent/glslang_tab.cpp" +#line 9849 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3007 "MachineIndependent/glslang.y" +#line 3000 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9867 "MachineIndependent/glslang_tab.cpp" +#line 9860 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3013 "MachineIndependent/glslang.y" +#line 3006 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9877 "MachineIndependent/glslang_tab.cpp" +#line 9870 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3018 "MachineIndependent/glslang.y" +#line 3011 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9887 "MachineIndependent/glslang_tab.cpp" +#line 9880 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3023 "MachineIndependent/glslang.y" +#line 3016 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9897 "MachineIndependent/glslang_tab.cpp" +#line 9890 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3028 "MachineIndependent/glslang.y" +#line 3021 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9908 "MachineIndependent/glslang_tab.cpp" +#line 9901 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3034 "MachineIndependent/glslang.y" +#line 3027 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9918 "MachineIndependent/glslang_tab.cpp" +#line 9911 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3039 "MachineIndependent/glslang.y" +#line 3032 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9928 "MachineIndependent/glslang_tab.cpp" +#line 9921 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3044 "MachineIndependent/glslang.y" +#line 3037 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9938 "MachineIndependent/glslang_tab.cpp" +#line 9931 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3049 "MachineIndependent/glslang.y" +#line 3042 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9949 "MachineIndependent/glslang_tab.cpp" +#line 9942 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3055 "MachineIndependent/glslang.y" +#line 3048 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9959 "MachineIndependent/glslang_tab.cpp" +#line 9952 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3060 "MachineIndependent/glslang.y" +#line 3053 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9969 "MachineIndependent/glslang_tab.cpp" +#line 9962 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3065 "MachineIndependent/glslang.y" +#line 3058 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9979 "MachineIndependent/glslang_tab.cpp" +#line 9972 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3070 "MachineIndependent/glslang.y" +#line 3063 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9990 "MachineIndependent/glslang_tab.cpp" +#line 9983 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3076 "MachineIndependent/glslang.y" +#line 3069 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 10000 "MachineIndependent/glslang_tab.cpp" +#line 9993 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3081 "MachineIndependent/glslang.y" +#line 3074 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 10010 "MachineIndependent/glslang_tab.cpp" +#line 10003 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: IMAGE1D */ -#line 3086 "MachineIndependent/glslang.y" +#line 3079 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10020 "MachineIndependent/glslang_tab.cpp" +#line 10013 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3091 "MachineIndependent/glslang.y" +#line 3084 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10031 "MachineIndependent/glslang_tab.cpp" +#line 10024 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: IIMAGE1D */ -#line 3097 "MachineIndependent/glslang.y" +#line 3090 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10041 "MachineIndependent/glslang_tab.cpp" +#line 10034 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: UIMAGE1D */ -#line 3102 "MachineIndependent/glslang.y" +#line 3095 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10051 "MachineIndependent/glslang_tab.cpp" +#line 10044 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: IMAGE2D */ -#line 3107 "MachineIndependent/glslang.y" +#line 3100 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10061 "MachineIndependent/glslang_tab.cpp" +#line 10054 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3112 "MachineIndependent/glslang.y" +#line 3105 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10072 "MachineIndependent/glslang_tab.cpp" +#line 10065 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: IIMAGE2D */ -#line 3118 "MachineIndependent/glslang.y" +#line 3111 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10082 "MachineIndependent/glslang_tab.cpp" +#line 10075 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: UIMAGE2D */ -#line 3123 "MachineIndependent/glslang.y" +#line 3116 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10092 "MachineIndependent/glslang_tab.cpp" +#line 10085 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: IMAGE3D */ -#line 3128 "MachineIndependent/glslang.y" +#line 3121 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10102 "MachineIndependent/glslang_tab.cpp" +#line 10095 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3133 "MachineIndependent/glslang.y" +#line 3126 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10113 "MachineIndependent/glslang_tab.cpp" +#line 10106 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: IIMAGE3D */ -#line 3139 "MachineIndependent/glslang.y" +#line 3132 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10123 "MachineIndependent/glslang_tab.cpp" +#line 10116 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: UIMAGE3D */ -#line 3144 "MachineIndependent/glslang.y" +#line 3137 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10133 "MachineIndependent/glslang_tab.cpp" +#line 10126 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3149 "MachineIndependent/glslang.y" +#line 3142 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10143 "MachineIndependent/glslang_tab.cpp" +#line 10136 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3154 "MachineIndependent/glslang.y" +#line 3147 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10154 "MachineIndependent/glslang_tab.cpp" +#line 10147 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3160 "MachineIndependent/glslang.y" +#line 3153 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10164 "MachineIndependent/glslang_tab.cpp" +#line 10157 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3165 "MachineIndependent/glslang.y" +#line 3158 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10174 "MachineIndependent/glslang_tab.cpp" +#line 10167 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IMAGECUBE */ -#line 3170 "MachineIndependent/glslang.y" +#line 3163 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10184 "MachineIndependent/glslang_tab.cpp" +#line 10177 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3175 "MachineIndependent/glslang.y" +#line 3168 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10195 "MachineIndependent/glslang_tab.cpp" +#line 10188 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3181 "MachineIndependent/glslang.y" +#line 3174 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10205 "MachineIndependent/glslang_tab.cpp" +#line 10198 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3186 "MachineIndependent/glslang.y" +#line 3179 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10215 "MachineIndependent/glslang_tab.cpp" +#line 10208 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3191 "MachineIndependent/glslang.y" +#line 3184 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10225 "MachineIndependent/glslang_tab.cpp" +#line 10218 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3196 "MachineIndependent/glslang.y" +#line 3189 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10236 "MachineIndependent/glslang_tab.cpp" +#line 10229 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3202 "MachineIndependent/glslang.y" +#line 3195 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10246 "MachineIndependent/glslang_tab.cpp" +#line 10239 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3207 "MachineIndependent/glslang.y" +#line 3200 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10256 "MachineIndependent/glslang_tab.cpp" +#line 10249 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3212 "MachineIndependent/glslang.y" +#line 3205 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10266 "MachineIndependent/glslang_tab.cpp" +#line 10259 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3217 "MachineIndependent/glslang.y" +#line 3210 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10277 "MachineIndependent/glslang_tab.cpp" +#line 10270 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3223 "MachineIndependent/glslang.y" +#line 3216 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10287 "MachineIndependent/glslang_tab.cpp" +#line 10280 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3228 "MachineIndependent/glslang.y" +#line 3221 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10297 "MachineIndependent/glslang_tab.cpp" +#line 10290 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3233 "MachineIndependent/glslang.y" +#line 3226 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10307 "MachineIndependent/glslang_tab.cpp" +#line 10300 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3238 "MachineIndependent/glslang.y" +#line 3231 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10318 "MachineIndependent/glslang_tab.cpp" +#line 10311 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3244 "MachineIndependent/glslang.y" +#line 3237 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10328 "MachineIndependent/glslang_tab.cpp" +#line 10321 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3249 "MachineIndependent/glslang.y" +#line 3242 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10338 "MachineIndependent/glslang_tab.cpp" +#line 10331 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3254 "MachineIndependent/glslang.y" +#line 3247 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10348 "MachineIndependent/glslang_tab.cpp" +#line 10341 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3259 "MachineIndependent/glslang.y" +#line 3252 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10359 "MachineIndependent/glslang_tab.cpp" +#line 10352 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3265 "MachineIndependent/glslang.y" +#line 3258 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10369 "MachineIndependent/glslang_tab.cpp" +#line 10362 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3270 "MachineIndependent/glslang.y" +#line 3263 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10379 "MachineIndependent/glslang_tab.cpp" +#line 10372 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3275 "MachineIndependent/glslang.y" +#line 3268 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10389 "MachineIndependent/glslang_tab.cpp" +#line 10382 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3280 "MachineIndependent/glslang.y" +#line 3273 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10400 "MachineIndependent/glslang_tab.cpp" +#line 10393 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3286 "MachineIndependent/glslang.y" +#line 3279 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10410 "MachineIndependent/glslang_tab.cpp" +#line 10403 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3291 "MachineIndependent/glslang.y" +#line 3284 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10420 "MachineIndependent/glslang_tab.cpp" +#line 10413 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3296 "MachineIndependent/glslang.y" +#line 3289 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10430 "MachineIndependent/glslang_tab.cpp" +#line 10423 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3301 "MachineIndependent/glslang.y" +#line 3294 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10441 "MachineIndependent/glslang_tab.cpp" +#line 10434 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3307 "MachineIndependent/glslang.y" +#line 3300 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10451 "MachineIndependent/glslang_tab.cpp" +#line 10444 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3312 "MachineIndependent/glslang.y" +#line 3305 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10461 "MachineIndependent/glslang_tab.cpp" +#line 10454 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3317 "MachineIndependent/glslang.y" +#line 3310 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10471 "MachineIndependent/glslang_tab.cpp" +#line 10464 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3322 "MachineIndependent/glslang.y" +#line 3315 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10481 "MachineIndependent/glslang_tab.cpp" +#line 10474 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3327 "MachineIndependent/glslang.y" +#line 3320 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10491 "MachineIndependent/glslang_tab.cpp" +#line 10484 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3332 "MachineIndependent/glslang.y" +#line 3325 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10501 "MachineIndependent/glslang_tab.cpp" +#line 10494 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3337 "MachineIndependent/glslang.y" +#line 3330 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10511 "MachineIndependent/glslang_tab.cpp" +#line 10504 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3342 "MachineIndependent/glslang.y" +#line 3335 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10521 "MachineIndependent/glslang_tab.cpp" +#line 10514 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3347 "MachineIndependent/glslang.y" +#line 3340 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10531 "MachineIndependent/glslang_tab.cpp" +#line 10524 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3352 "MachineIndependent/glslang.y" +#line 3345 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10541 "MachineIndependent/glslang_tab.cpp" +#line 10534 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3357 "MachineIndependent/glslang.y" +#line 3350 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10551 "MachineIndependent/glslang_tab.cpp" +#line 10544 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3362 "MachineIndependent/glslang.y" +#line 3355 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10561 "MachineIndependent/glslang_tab.cpp" +#line 10554 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3367 "MachineIndependent/glslang.y" +#line 3360 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10571 "MachineIndependent/glslang_tab.cpp" +#line 10564 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3372 "MachineIndependent/glslang.y" +#line 3365 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10581 "MachineIndependent/glslang_tab.cpp" +#line 10574 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3377 "MachineIndependent/glslang.y" +#line 3370 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10591 "MachineIndependent/glslang_tab.cpp" +#line 10584 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3382 "MachineIndependent/glslang.y" +#line 3375 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10601 "MachineIndependent/glslang_tab.cpp" +#line 10594 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3387 "MachineIndependent/glslang.y" +#line 3380 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10611 "MachineIndependent/glslang_tab.cpp" +#line 10604 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3392 "MachineIndependent/glslang.y" +#line 3385 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10621 "MachineIndependent/glslang_tab.cpp" +#line 10614 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3397 "MachineIndependent/glslang.y" +#line 3390 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10631 "MachineIndependent/glslang_tab.cpp" +#line 10624 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3402 "MachineIndependent/glslang.y" +#line 3395 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10641 "MachineIndependent/glslang_tab.cpp" +#line 10634 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3407 "MachineIndependent/glslang.y" +#line 3400 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10651 "MachineIndependent/glslang_tab.cpp" +#line 10644 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3412 "MachineIndependent/glslang.y" +#line 3405 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10661 "MachineIndependent/glslang_tab.cpp" +#line 10654 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3417 "MachineIndependent/glslang.y" +#line 3410 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10671 "MachineIndependent/glslang_tab.cpp" +#line 10664 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3422 "MachineIndependent/glslang.y" +#line 3415 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10681 "MachineIndependent/glslang_tab.cpp" +#line 10674 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3427 "MachineIndependent/glslang.y" +#line 3420 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10692 "MachineIndependent/glslang_tab.cpp" +#line 10685 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3433 "MachineIndependent/glslang.y" +#line 3426 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10703 "MachineIndependent/glslang_tab.cpp" +#line 10696 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3439 "MachineIndependent/glslang.y" +#line 3432 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10714 "MachineIndependent/glslang_tab.cpp" +#line 10707 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3445 "MachineIndependent/glslang.y" +#line 3438 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10725 "MachineIndependent/glslang_tab.cpp" +#line 10718 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3451 "MachineIndependent/glslang.y" +#line 3444 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10736 "MachineIndependent/glslang_tab.cpp" +#line 10729 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3457 "MachineIndependent/glslang.y" +#line 3450 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10747 "MachineIndependent/glslang_tab.cpp" +#line 10740 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3463 "MachineIndependent/glslang.y" +#line 3456 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10758 "MachineIndependent/glslang_tab.cpp" +#line 10751 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3469 "MachineIndependent/glslang.y" +#line 3462 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10766,11 +10759,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10770 "MachineIndependent/glslang_tab.cpp" +#line 10763 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3476 "MachineIndependent/glslang.y" +#line 3469 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10778,55 +10771,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10782 "MachineIndependent/glslang_tab.cpp" +#line 10775 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3483 "MachineIndependent/glslang.y" +#line 3476 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10793 "MachineIndependent/glslang_tab.cpp" +#line 10786 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3489 "MachineIndependent/glslang.y" +#line 3482 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10804 "MachineIndependent/glslang_tab.cpp" +#line 10797 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3495 "MachineIndependent/glslang.y" +#line 3488 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10815 "MachineIndependent/glslang_tab.cpp" +#line 10808 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3501 "MachineIndependent/glslang.y" +#line 3494 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10826 "MachineIndependent/glslang_tab.cpp" +#line 10819 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3507 "MachineIndependent/glslang.y" +#line 3500 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10834,11 +10827,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10838 "MachineIndependent/glslang_tab.cpp" +#line 10831 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3514 "MachineIndependent/glslang.y" +#line 3507 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10846,11 +10839,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10850 "MachineIndependent/glslang_tab.cpp" +#line 10843 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3521 "MachineIndependent/glslang.y" +#line 3514 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10858,11 +10851,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10862 "MachineIndependent/glslang_tab.cpp" +#line 10855 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: COOPMAT */ -#line 3528 "MachineIndependent/glslang.y" +#line 3521 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10870,39 +10863,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 10874 "MachineIndependent/glslang_tab.cpp" +#line 10867 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3535 "MachineIndependent/glslang.y" +#line 3528 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10883 "MachineIndependent/glslang_tab.cpp" +#line 10876 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3539 "MachineIndependent/glslang.y" +#line 3532 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10892 "MachineIndependent/glslang_tab.cpp" +#line 10885 "MachineIndependent/glslang_tab.cpp" break; case 539: /* type_specifier_nonarray: struct_specifier */ -#line 3543 "MachineIndependent/glslang.y" +#line 3536 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10902 "MachineIndependent/glslang_tab.cpp" +#line 10895 "MachineIndependent/glslang_tab.cpp" break; case 540: /* type_specifier_nonarray: TYPE_NAME */ -#line 3548 "MachineIndependent/glslang.y" +#line 3541 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10916,47 +10909,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10920 "MachineIndependent/glslang_tab.cpp" +#line 10913 "MachineIndependent/glslang_tab.cpp" break; case 541: /* precision_qualifier: HIGH_PRECISION */ -#line 3564 "MachineIndependent/glslang.y" +#line 3557 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10930 "MachineIndependent/glslang_tab.cpp" +#line 10923 "MachineIndependent/glslang_tab.cpp" break; case 542: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3569 "MachineIndependent/glslang.y" +#line 3562 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10940 "MachineIndependent/glslang_tab.cpp" +#line 10933 "MachineIndependent/glslang_tab.cpp" break; case 543: /* precision_qualifier: LOW_PRECISION */ -#line 3574 "MachineIndependent/glslang.y" +#line 3567 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10950 "MachineIndependent/glslang_tab.cpp" +#line 10943 "MachineIndependent/glslang_tab.cpp" break; case 544: /* $@3: %empty */ -#line 3582 "MachineIndependent/glslang.y" +#line 3575 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10956 "MachineIndependent/glslang_tab.cpp" +#line 10949 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3582 "MachineIndependent/glslang.y" +#line 3575 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); @@ -10974,17 +10967,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10978 "MachineIndependent/glslang_tab.cpp" +#line 10971 "MachineIndependent/glslang_tab.cpp" break; case 546: /* $@4: %empty */ -#line 3599 "MachineIndependent/glslang.y" +#line 3592 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10984 "MachineIndependent/glslang_tab.cpp" +#line 10977 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3599 "MachineIndependent/glslang.y" +#line 3592 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10992,19 +10985,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10996 "MachineIndependent/glslang_tab.cpp" +#line 10989 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declaration_list: struct_declaration */ -#line 3609 "MachineIndependent/glslang.y" +#line 3602 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 11004 "MachineIndependent/glslang_tab.cpp" +#line 10997 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3612 "MachineIndependent/glslang.y" +#line 3605 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -11015,11 +11008,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 11019 "MachineIndependent/glslang_tab.cpp" +#line 11012 "MachineIndependent/glslang_tab.cpp" break; case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3625 "MachineIndependent/glslang.y" +#line 3618 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11042,11 +11035,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11046 "MachineIndependent/glslang_tab.cpp" +#line 11039 "MachineIndependent/glslang_tab.cpp" break; case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3647 "MachineIndependent/glslang.y" +#line 3640 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11071,38 +11064,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11075 "MachineIndependent/glslang_tab.cpp" +#line 11068 "MachineIndependent/glslang_tab.cpp" break; case 552: /* struct_declarator_list: struct_declarator */ -#line 3674 "MachineIndependent/glslang.y" +#line 3667 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11084 "MachineIndependent/glslang_tab.cpp" +#line 11077 "MachineIndependent/glslang_tab.cpp" break; case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3678 "MachineIndependent/glslang.y" +#line 3671 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11092 "MachineIndependent/glslang_tab.cpp" +#line 11085 "MachineIndependent/glslang_tab.cpp" break; case 554: /* struct_declarator: IDENTIFIER */ -#line 3684 "MachineIndependent/glslang.y" +#line 3677 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11102 "MachineIndependent/glslang_tab.cpp" +#line 11095 "MachineIndependent/glslang_tab.cpp" break; case 555: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3689 "MachineIndependent/glslang.y" +#line 3682 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11111,246 +11104,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11115 "MachineIndependent/glslang_tab.cpp" +#line 11108 "MachineIndependent/glslang_tab.cpp" break; case 556: /* initializer: assignment_expression */ -#line 3700 "MachineIndependent/glslang.y" +#line 3693 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11123 "MachineIndependent/glslang_tab.cpp" +#line 11116 "MachineIndependent/glslang_tab.cpp" break; case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3703 "MachineIndependent/glslang.y" +#line 3696 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11134 "MachineIndependent/glslang_tab.cpp" +#line 11127 "MachineIndependent/glslang_tab.cpp" break; case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3709 "MachineIndependent/glslang.y" +#line 3702 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11145 "MachineIndependent/glslang_tab.cpp" +#line 11138 "MachineIndependent/glslang_tab.cpp" break; case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3715 "MachineIndependent/glslang.y" +#line 3708 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11156 "MachineIndependent/glslang_tab.cpp" +#line 11149 "MachineIndependent/glslang_tab.cpp" break; case 560: /* initializer_list: initializer */ -#line 3724 "MachineIndependent/glslang.y" +#line 3717 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11164 "MachineIndependent/glslang_tab.cpp" +#line 11157 "MachineIndependent/glslang_tab.cpp" break; case 561: /* initializer_list: initializer_list COMMA initializer */ -#line 3727 "MachineIndependent/glslang.y" +#line 3720 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11172 "MachineIndependent/glslang_tab.cpp" +#line 11165 "MachineIndependent/glslang_tab.cpp" break; case 562: /* declaration_statement: declaration */ -#line 3733 "MachineIndependent/glslang.y" +#line 3726 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11178 "MachineIndependent/glslang_tab.cpp" +#line 11171 "MachineIndependent/glslang_tab.cpp" break; case 563: /* statement: compound_statement */ -#line 3737 "MachineIndependent/glslang.y" +#line 3730 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11184 "MachineIndependent/glslang_tab.cpp" +#line 11177 "MachineIndependent/glslang_tab.cpp" break; case 564: /* statement: simple_statement */ -#line 3738 "MachineIndependent/glslang.y" +#line 3731 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11190 "MachineIndependent/glslang_tab.cpp" +#line 11183 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: declaration_statement */ -#line 3744 "MachineIndependent/glslang.y" +#line 3737 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11196 "MachineIndependent/glslang_tab.cpp" +#line 11189 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: expression_statement */ -#line 3745 "MachineIndependent/glslang.y" +#line 3738 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11202 "MachineIndependent/glslang_tab.cpp" +#line 11195 "MachineIndependent/glslang_tab.cpp" break; case 567: /* simple_statement: selection_statement */ -#line 3746 "MachineIndependent/glslang.y" +#line 3739 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11208 "MachineIndependent/glslang_tab.cpp" +#line 11201 "MachineIndependent/glslang_tab.cpp" break; case 568: /* simple_statement: switch_statement */ -#line 3747 "MachineIndependent/glslang.y" +#line 3740 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11214 "MachineIndependent/glslang_tab.cpp" +#line 11207 "MachineIndependent/glslang_tab.cpp" break; case 569: /* simple_statement: case_label */ -#line 3748 "MachineIndependent/glslang.y" +#line 3741 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11220 "MachineIndependent/glslang_tab.cpp" +#line 11213 "MachineIndependent/glslang_tab.cpp" break; case 570: /* simple_statement: iteration_statement */ -#line 3749 "MachineIndependent/glslang.y" +#line 3742 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11226 "MachineIndependent/glslang_tab.cpp" +#line 11219 "MachineIndependent/glslang_tab.cpp" break; case 571: /* simple_statement: jump_statement */ -#line 3750 "MachineIndependent/glslang.y" +#line 3743 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11232 "MachineIndependent/glslang_tab.cpp" +#line 11225 "MachineIndependent/glslang_tab.cpp" break; case 572: /* simple_statement: demote_statement */ -#line 3751 "MachineIndependent/glslang.y" +#line 3744 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11238 "MachineIndependent/glslang_tab.cpp" +#line 11231 "MachineIndependent/glslang_tab.cpp" break; case 573: /* demote_statement: DEMOTE SEMICOLON */ -#line 3755 "MachineIndependent/glslang.y" +#line 3748 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11248 "MachineIndependent/glslang_tab.cpp" +#line 11241 "MachineIndependent/glslang_tab.cpp" break; case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3763 "MachineIndependent/glslang.y" +#line 3756 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11254 "MachineIndependent/glslang_tab.cpp" +#line 11247 "MachineIndependent/glslang_tab.cpp" break; case 575: /* $@5: %empty */ -#line 3764 "MachineIndependent/glslang.y" +#line 3757 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11263 "MachineIndependent/glslang_tab.cpp" +#line 11256 "MachineIndependent/glslang_tab.cpp" break; case 576: /* $@6: %empty */ -#line 3768 "MachineIndependent/glslang.y" +#line 3761 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11272 "MachineIndependent/glslang_tab.cpp" +#line 11265 "MachineIndependent/glslang_tab.cpp" break; case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3772 "MachineIndependent/glslang.y" +#line 3765 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11282 "MachineIndependent/glslang_tab.cpp" +#line 11275 "MachineIndependent/glslang_tab.cpp" break; case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3780 "MachineIndependent/glslang.y" +#line 3773 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11288 "MachineIndependent/glslang_tab.cpp" +#line 11281 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_no_new_scope: simple_statement */ -#line 3781 "MachineIndependent/glslang.y" +#line 3774 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11294 "MachineIndependent/glslang_tab.cpp" +#line 11287 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@7: %empty */ -#line 3785 "MachineIndependent/glslang.y" +#line 3778 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11302 "MachineIndependent/glslang_tab.cpp" +#line 11295 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@7 compound_statement */ -#line 3788 "MachineIndependent/glslang.y" +#line 3781 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11311 "MachineIndependent/glslang_tab.cpp" +#line 11304 "MachineIndependent/glslang_tab.cpp" break; case 582: /* $@8: %empty */ -#line 3792 "MachineIndependent/glslang.y" +#line 3785 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11321 "MachineIndependent/glslang_tab.cpp" +#line 11314 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement_scoped: $@8 simple_statement */ -#line 3797 "MachineIndependent/glslang.y" +#line 3790 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11332 "MachineIndependent/glslang_tab.cpp" +#line 11325 "MachineIndependent/glslang_tab.cpp" break; case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3806 "MachineIndependent/glslang.y" +#line 3799 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11340 "MachineIndependent/glslang_tab.cpp" +#line 11333 "MachineIndependent/glslang_tab.cpp" break; case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3809 "MachineIndependent/glslang.y" +#line 3802 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11350 "MachineIndependent/glslang_tab.cpp" +#line 11343 "MachineIndependent/glslang_tab.cpp" break; case 586: /* statement_list: statement */ -#line 3817 "MachineIndependent/glslang.y" +#line 3810 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11359,11 +11352,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11363 "MachineIndependent/glslang_tab.cpp" +#line 11356 "MachineIndependent/glslang_tab.cpp" break; case 587: /* statement_list: statement_list statement */ -#line 3825 "MachineIndependent/glslang.y" +#line 3818 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11372,77 +11365,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11376 "MachineIndependent/glslang_tab.cpp" +#line 11369 "MachineIndependent/glslang_tab.cpp" break; case 588: /* expression_statement: SEMICOLON */ -#line 3836 "MachineIndependent/glslang.y" +#line 3829 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11382 "MachineIndependent/glslang_tab.cpp" +#line 11375 "MachineIndependent/glslang_tab.cpp" break; case 589: /* expression_statement: expression SEMICOLON */ -#line 3837 "MachineIndependent/glslang.y" +#line 3830 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11388 "MachineIndependent/glslang_tab.cpp" +#line 11381 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement: selection_statement_nonattributed */ -#line 3841 "MachineIndependent/glslang.y" +#line 3834 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11396 "MachineIndependent/glslang_tab.cpp" +#line 11389 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3844 "MachineIndependent/glslang.y" +#line 3837 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11406 "MachineIndependent/glslang_tab.cpp" +#line 11399 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3851 "MachineIndependent/glslang.y" +#line 3844 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11415 "MachineIndependent/glslang_tab.cpp" +#line 11408 "MachineIndependent/glslang_tab.cpp" break; case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3858 "MachineIndependent/glslang.y" +#line 3851 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11424 "MachineIndependent/glslang_tab.cpp" +#line 11417 "MachineIndependent/glslang_tab.cpp" break; case 594: /* selection_rest_statement: statement_scoped */ -#line 3862 "MachineIndependent/glslang.y" +#line 3855 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11433 "MachineIndependent/glslang_tab.cpp" +#line 11426 "MachineIndependent/glslang_tab.cpp" break; case 595: /* condition: expression */ -#line 3870 "MachineIndependent/glslang.y" +#line 3863 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11442 "MachineIndependent/glslang_tab.cpp" +#line 11435 "MachineIndependent/glslang_tab.cpp" break; case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3874 "MachineIndependent/glslang.y" +#line 3867 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11453,29 +11446,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11457 "MachineIndependent/glslang_tab.cpp" +#line 11450 "MachineIndependent/glslang_tab.cpp" break; case 597: /* switch_statement: switch_statement_nonattributed */ -#line 3887 "MachineIndependent/glslang.y" +#line 3880 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11465 "MachineIndependent/glslang_tab.cpp" +#line 11458 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3890 "MachineIndependent/glslang.y" +#line 3883 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11475 "MachineIndependent/glslang_tab.cpp" +#line 11468 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@9: %empty */ -#line 3897 "MachineIndependent/glslang.y" +#line 3890 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11484,11 +11477,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11488 "MachineIndependent/glslang_tab.cpp" +#line 11481 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3905 "MachineIndependent/glslang.y" +#line 3898 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11498,27 +11491,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11502 "MachineIndependent/glslang_tab.cpp" +#line 11495 "MachineIndependent/glslang_tab.cpp" break; case 601: /* switch_statement_list: %empty */ -#line 3917 "MachineIndependent/glslang.y" +#line 3910 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11510 "MachineIndependent/glslang_tab.cpp" +#line 11503 "MachineIndependent/glslang_tab.cpp" break; case 602: /* switch_statement_list: statement_list */ -#line 3920 "MachineIndependent/glslang.y" +#line 3913 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11518 "MachineIndependent/glslang_tab.cpp" +#line 11511 "MachineIndependent/glslang_tab.cpp" break; case 603: /* case_label: CASE expression COLON */ -#line 3926 "MachineIndependent/glslang.y" +#line 3919 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11531,11 +11524,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11535 "MachineIndependent/glslang_tab.cpp" +#line 11528 "MachineIndependent/glslang_tab.cpp" break; case 604: /* case_label: DEFAULT COLON */ -#line 3938 "MachineIndependent/glslang.y" +#line 3931 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11545,29 +11538,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11549 "MachineIndependent/glslang_tab.cpp" +#line 11542 "MachineIndependent/glslang_tab.cpp" break; case 605: /* iteration_statement: iteration_statement_nonattributed */ -#line 3950 "MachineIndependent/glslang.y" +#line 3943 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11557 "MachineIndependent/glslang_tab.cpp" +#line 11550 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3953 "MachineIndependent/glslang.y" +#line 3946 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11567 "MachineIndependent/glslang_tab.cpp" +#line 11560 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3960 "MachineIndependent/glslang.y" +#line 3953 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11576,11 +11569,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11580 "MachineIndependent/glslang_tab.cpp" +#line 11573 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3968 "MachineIndependent/glslang.y" +#line 3961 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11588,22 +11581,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11592 "MachineIndependent/glslang_tab.cpp" +#line 11585 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 3975 "MachineIndependent/glslang.y" +#line 3968 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11603 "MachineIndependent/glslang_tab.cpp" +#line 11596 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3981 "MachineIndependent/glslang.y" +#line 3974 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11616,22 +11609,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11620 "MachineIndependent/glslang_tab.cpp" +#line 11613 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 3993 "MachineIndependent/glslang.y" +#line 3986 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11631 "MachineIndependent/glslang_tab.cpp" +#line 11624 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3999 "MachineIndependent/glslang.y" +#line 3992 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11644,81 +11637,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11648 "MachineIndependent/glslang_tab.cpp" +#line 11641 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 4014 "MachineIndependent/glslang.y" +#line 4007 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11656 "MachineIndependent/glslang_tab.cpp" +#line 11649 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 4017 "MachineIndependent/glslang.y" +#line 4010 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11664 "MachineIndependent/glslang_tab.cpp" +#line 11657 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 4023 "MachineIndependent/glslang.y" +#line 4016 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11672 "MachineIndependent/glslang_tab.cpp" +#line 11665 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 4026 "MachineIndependent/glslang.y" +#line 4019 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11680 "MachineIndependent/glslang_tab.cpp" +#line 11673 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4032 "MachineIndependent/glslang.y" +#line 4025 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11689 "MachineIndependent/glslang_tab.cpp" +#line 11682 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4036 "MachineIndependent/glslang.y" +#line 4029 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11698 "MachineIndependent/glslang_tab.cpp" +#line 11691 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4043 "MachineIndependent/glslang.y" +#line 4036 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11708 "MachineIndependent/glslang_tab.cpp" +#line 11701 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4048 "MachineIndependent/glslang.y" +#line 4041 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11718 "MachineIndependent/glslang_tab.cpp" +#line 11711 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4053 "MachineIndependent/glslang.y" +#line 4046 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11726,101 +11719,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11730 "MachineIndependent/glslang_tab.cpp" +#line 11723 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4060 "MachineIndependent/glslang.y" +#line 4053 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11738 "MachineIndependent/glslang_tab.cpp" +#line 11731 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4063 "MachineIndependent/glslang.y" +#line 4056 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11747 "MachineIndependent/glslang_tab.cpp" +#line 11740 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4067 "MachineIndependent/glslang.y" +#line 4060 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11756 "MachineIndependent/glslang_tab.cpp" +#line 11749 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4071 "MachineIndependent/glslang.y" +#line 4064 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11765 "MachineIndependent/glslang_tab.cpp" +#line 11758 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4075 "MachineIndependent/glslang.y" +#line 4068 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11774 "MachineIndependent/glslang_tab.cpp" +#line 11767 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4084 "MachineIndependent/glslang.y" +#line 4077 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11783 "MachineIndependent/glslang_tab.cpp" +#line 11776 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4088 "MachineIndependent/glslang.y" +#line 4081 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11794 "MachineIndependent/glslang_tab.cpp" +#line 11787 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4097 "MachineIndependent/glslang.y" +#line 4090 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11802 "MachineIndependent/glslang_tab.cpp" +#line 11795 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4100 "MachineIndependent/glslang.y" +#line 4093 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11810 "MachineIndependent/glslang_tab.cpp" +#line 11803 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4103 "MachineIndependent/glslang.y" +#line 4096 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11820 "MachineIndependent/glslang_tab.cpp" +#line 11813 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4111 "MachineIndependent/glslang.y" +#line 4104 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11833,11 +11826,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11837 "MachineIndependent/glslang_tab.cpp" +#line 11830 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4123 "MachineIndependent/glslang.y" +#line 4116 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11865,228 +11858,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11869 "MachineIndependent/glslang_tab.cpp" +#line 11862 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4153 "MachineIndependent/glslang.y" +#line 4146 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11877 "MachineIndependent/glslang_tab.cpp" +#line 11870 "MachineIndependent/glslang_tab.cpp" break; case 635: /* attribute_list: single_attribute */ -#line 4158 "MachineIndependent/glslang.y" +#line 4151 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11885 "MachineIndependent/glslang_tab.cpp" +#line 11878 "MachineIndependent/glslang_tab.cpp" break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4161 "MachineIndependent/glslang.y" +#line 4154 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11893 "MachineIndependent/glslang_tab.cpp" +#line 11886 "MachineIndependent/glslang_tab.cpp" break; case 637: /* single_attribute: IDENTIFIER */ -#line 4166 "MachineIndependent/glslang.y" +#line 4159 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11901 "MachineIndependent/glslang_tab.cpp" +#line 11894 "MachineIndependent/glslang_tab.cpp" break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4169 "MachineIndependent/glslang.y" +#line 4162 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11909 "MachineIndependent/glslang_tab.cpp" +#line 11902 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4174 "MachineIndependent/glslang.y" +#line 4167 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11917 "MachineIndependent/glslang_tab.cpp" +#line 11910 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4177 "MachineIndependent/glslang.y" +#line 4170 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11925 "MachineIndependent/glslang_tab.cpp" +#line 11918 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4182 "MachineIndependent/glslang.y" +#line 4175 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11933 "MachineIndependent/glslang_tab.cpp" +#line 11926 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4185 "MachineIndependent/glslang.y" +#line 4178 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11941 "MachineIndependent/glslang_tab.cpp" +#line 11934 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4190 "MachineIndependent/glslang.y" +#line 4183 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11949 "MachineIndependent/glslang_tab.cpp" +#line 11942 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4193 "MachineIndependent/glslang.y" +#line 4186 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11957 "MachineIndependent/glslang_tab.cpp" +#line 11950 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4198 "MachineIndependent/glslang.y" +#line 4191 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11965 "MachineIndependent/glslang_tab.cpp" +#line 11958 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4201 "MachineIndependent/glslang.y" +#line 4194 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11973 "MachineIndependent/glslang_tab.cpp" +#line 11966 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4206 "MachineIndependent/glslang.y" +#line 4199 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11982 "MachineIndependent/glslang_tab.cpp" +#line 11975 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4210 "MachineIndependent/glslang.y" +#line 4203 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11992 "MachineIndependent/glslang_tab.cpp" +#line 11985 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4215 "MachineIndependent/glslang.y" +#line 4208 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12001 "MachineIndependent/glslang_tab.cpp" +#line 11994 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4219 "MachineIndependent/glslang.y" +#line 4212 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12011 "MachineIndependent/glslang_tab.cpp" +#line 12004 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4224 "MachineIndependent/glslang.y" +#line 4217 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12020 "MachineIndependent/glslang_tab.cpp" +#line 12013 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4228 "MachineIndependent/glslang.y" +#line 4221 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12030 "MachineIndependent/glslang_tab.cpp" +#line 12023 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4235 "MachineIndependent/glslang.y" +#line 4228 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12038 "MachineIndependent/glslang_tab.cpp" +#line 12031 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4238 "MachineIndependent/glslang.y" +#line 4231 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12046 "MachineIndependent/glslang_tab.cpp" +#line 12039 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4243 "MachineIndependent/glslang.y" +#line 4236 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12054 "MachineIndependent/glslang_tab.cpp" +#line 12047 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4246 "MachineIndependent/glslang.y" +#line 4239 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12062 "MachineIndependent/glslang_tab.cpp" +#line 12055 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4249 "MachineIndependent/glslang.y" +#line 4242 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12070 "MachineIndependent/glslang_tab.cpp" +#line 12063 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4252 "MachineIndependent/glslang.y" +#line 4245 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12078 "MachineIndependent/glslang_tab.cpp" +#line 12071 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4255 "MachineIndependent/glslang.y" +#line 4248 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12086 "MachineIndependent/glslang_tab.cpp" +#line 12079 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4260 "MachineIndependent/glslang.y" +#line 4253 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12096,11 +12089,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12100 "MachineIndependent/glslang_tab.cpp" +#line 12093 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4269 "MachineIndependent/glslang.y" +#line 4262 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12110,351 +12103,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12114 "MachineIndependent/glslang_tab.cpp" +#line 12107 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4280 "MachineIndependent/glslang.y" +#line 4273 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12124 "MachineIndependent/glslang_tab.cpp" +#line 12117 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4285 "MachineIndependent/glslang.y" +#line 4278 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12135 "MachineIndependent/glslang_tab.cpp" +#line 12128 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4293 "MachineIndependent/glslang.y" +#line 4286 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12144 "MachineIndependent/glslang_tab.cpp" +#line 12137 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4297 "MachineIndependent/glslang.y" +#line 4290 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12154 "MachineIndependent/glslang_tab.cpp" +#line 12147 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4302 "MachineIndependent/glslang.y" +#line 4295 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12163 "MachineIndependent/glslang_tab.cpp" +#line 12156 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4306 "MachineIndependent/glslang.y" +#line 4299 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12173 "MachineIndependent/glslang_tab.cpp" +#line 12166 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4311 "MachineIndependent/glslang.y" +#line 4304 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12182 "MachineIndependent/glslang_tab.cpp" +#line 12175 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4315 "MachineIndependent/glslang.y" +#line 4308 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12192 "MachineIndependent/glslang_tab.cpp" +#line 12185 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4320 "MachineIndependent/glslang.y" +#line 4313 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12201 "MachineIndependent/glslang_tab.cpp" +#line 12194 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4324 "MachineIndependent/glslang.y" +#line 4317 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12211 "MachineIndependent/glslang_tab.cpp" +#line 12204 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4331 "MachineIndependent/glslang.y" +#line 4324 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12219 "MachineIndependent/glslang_tab.cpp" +#line 12212 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4334 "MachineIndependent/glslang.y" +#line 4327 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12227 "MachineIndependent/glslang_tab.cpp" +#line 12220 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4339 "MachineIndependent/glslang.y" +#line 4332 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12235 "MachineIndependent/glslang_tab.cpp" +#line 12228 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4342 "MachineIndependent/glslang.y" +#line 4335 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12243 "MachineIndependent/glslang_tab.cpp" +#line 12236 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4345 "MachineIndependent/glslang.y" +#line 4338 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12251 "MachineIndependent/glslang_tab.cpp" +#line 12244 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4348 "MachineIndependent/glslang.y" +#line 4341 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12259 "MachineIndependent/glslang_tab.cpp" +#line 12252 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4353 "MachineIndependent/glslang.y" +#line 4346 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12267 "MachineIndependent/glslang_tab.cpp" +#line 12260 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4356 "MachineIndependent/glslang.y" +#line 4349 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12275 "MachineIndependent/glslang_tab.cpp" +#line 12268 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4361 "MachineIndependent/glslang.y" +#line 4354 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12286 "MachineIndependent/glslang_tab.cpp" +#line 12279 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4367 "MachineIndependent/glslang.y" +#line 4360 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12294 "MachineIndependent/glslang_tab.cpp" +#line 12287 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4370 "MachineIndependent/glslang.y" +#line 4363 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12302 "MachineIndependent/glslang_tab.cpp" +#line 12295 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4373 "MachineIndependent/glslang.y" +#line 4366 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12310 "MachineIndependent/glslang_tab.cpp" +#line 12303 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4376 "MachineIndependent/glslang.y" +#line 4369 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12318 "MachineIndependent/glslang_tab.cpp" +#line 12311 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4381 "MachineIndependent/glslang.y" +#line 4374 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12327 "MachineIndependent/glslang_tab.cpp" +#line 12320 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4385 "MachineIndependent/glslang.y" +#line 4378 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12335 "MachineIndependent/glslang_tab.cpp" +#line 12328 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4390 "MachineIndependent/glslang.y" +#line 4383 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12344 "MachineIndependent/glslang_tab.cpp" +#line 12337 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4394 "MachineIndependent/glslang.y" +#line 4387 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12354 "MachineIndependent/glslang_tab.cpp" +#line 12347 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4399 "MachineIndependent/glslang.y" +#line 4392 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12363 "MachineIndependent/glslang_tab.cpp" +#line 12356 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4403 "MachineIndependent/glslang.y" +#line 4396 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12373 "MachineIndependent/glslang_tab.cpp" +#line 12366 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4410 "MachineIndependent/glslang.y" +#line 4403 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12381 "MachineIndependent/glslang_tab.cpp" +#line 12374 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4413 "MachineIndependent/glslang.y" +#line 4406 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12389 "MachineIndependent/glslang_tab.cpp" +#line 12382 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4418 "MachineIndependent/glslang.y" +#line 4411 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12397 "MachineIndependent/glslang_tab.cpp" +#line 12390 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4421 "MachineIndependent/glslang.y" +#line 4414 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12405 "MachineIndependent/glslang_tab.cpp" +#line 12398 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4426 "MachineIndependent/glslang.y" +#line 4419 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12413 "MachineIndependent/glslang_tab.cpp" +#line 12406 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4429 "MachineIndependent/glslang.y" +#line 4422 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12422 "MachineIndependent/glslang_tab.cpp" +#line 12415 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4435 "MachineIndependent/glslang.y" +#line 4428 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12430 "MachineIndependent/glslang_tab.cpp" +#line 12423 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4438 "MachineIndependent/glslang.y" +#line 4431 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12438 "MachineIndependent/glslang_tab.cpp" +#line 12431 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4443 "MachineIndependent/glslang.y" +#line 4436 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12446 "MachineIndependent/glslang_tab.cpp" +#line 12439 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4446 "MachineIndependent/glslang.y" +#line 4439 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12454 "MachineIndependent/glslang_tab.cpp" +#line 12447 "MachineIndependent/glslang_tab.cpp" break; -#line 12458 "MachineIndependent/glslang_tab.cpp" +#line 12451 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12678,5 +12671,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4450 "MachineIndependent/glslang.y" +#line 4443 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index 590eab6b20..18342bf6d0 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -86,11 +86,6 @@ NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "../ParseHelper.h" #include "PpTokens.h" -/* windows only pragma */ -#ifdef _MSC_VER - #pragma warning(disable : 4127) -#endif - namespace glslang { class TPpToken { diff --git a/glslang/ResourceLimits/resource_limits_c.cpp b/glslang/ResourceLimits/resource_limits_c.cpp index 0eeac23a5e..8909d9ef5e 100644 --- a/glslang/ResourceLimits/resource_limits_c.cpp +++ b/glslang/ResourceLimits/resource_limits_c.cpp @@ -42,28 +42,14 @@ const glslang_resource_t* glslang_default_resource(void) return reinterpret_cast(GetDefaultResources()); } -#if defined(__clang__) || defined(__GNUC__) -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wdeprecated-declarations" -#elif defined(_MSC_VER) -#pragma warning(push) -#pragma warning(disable : 4996) -#endif - const char* glslang_default_resource_string() { std::string cpp_str = GetDefaultTBuiltInResourceString(); char* c_str = (char*)malloc(cpp_str.length() + 1); - strcpy(c_str, cpp_str.c_str()); + strncpy(c_str, cpp_str.c_str(), cpp_str.length() + 1); return c_str; } -#if defined(__clang__) || defined(__GNUC__) -#pragma GCC diagnostic pop -#elif defined(_MSC_VER) -#pragma warning(pop) -#endif - void glslang_decode_resource_limits(glslang_resource_t* resources, char* config) { DecodeResourceLimits(reinterpret_cast(resources), config); From 3b9912459398d8500d99ce02692df7b1a53e5834 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Thu, 30 Nov 2023 12:33:36 -0700 Subject: [PATCH 358/594] Add GLSLANG_TESTS option 1 variable instead of ENABLE_CTEST and BUILD_TESTING. OFF by default. See README.md for explanation. --- .github/workflows/continuous_integration.yml | 12 ++++++------ CMakeLists.txt | 17 ++++++----------- External/CMakeLists.txt | 2 +- README.md | 8 ++++++-- gtests/CMakeLists.txt | 4 ++-- 5 files changed, 21 insertions(+), 22 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 8838f5bd15..7bdcf22e05 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -28,7 +28,7 @@ jobs: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} @@ -64,7 +64,7 @@ jobs: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} - run: ./update_glslang_sources.py - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -D GLSLANG_TESTS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} @@ -101,7 +101,7 @@ jobs: key: linux_backcompat - run: ./update_glslang_sources.py - name: Configure - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=Release -D GLSLANG_TESTS=ON env: CMAKE_C_COMPILER_LAUNCHER: ccache CMAKE_CXX_COMPILER_LAUNCHER: ccache @@ -126,7 +126,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 - run: ./update_glslang_sources.py - - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON + - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: CC: ${{matrix.compiler.cc}} CXX: ${{matrix.compiler.cxx}} @@ -155,7 +155,7 @@ jobs: - run: python update_glslang_sources.py - name: Build run: | - cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON + cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON cmake --build build --config ${{matrix.cmake_build_type}} --target install - name: Test run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build @@ -230,7 +230,7 @@ jobs: - name: Update Glslang Sources run: ./update_glslang_sources.py - name: Configure - run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DBUILD_TESTING=OFF -DENABLE_OPT=OFF + run: emcmake cmake -GNinja -Bbuild/web -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON -DENABLE_OPT=OFF env: CMAKE_GENERATOR: Ninja CMAKE_C_COMPILER_LAUNCHER: ccache diff --git a/CMakeLists.txt b/CMakeLists.txt index e0802af80a..1b31ff0d83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -70,11 +70,11 @@ endif() # Furthermore testing is equally problematic. if (IOS OR ANDROID) set(ENABLE_GLSLANG_BINARIES OFF) - - set(ENABLE_CTEST OFF) - set(BUILD_TESTING OFF) + set(GLSLANG_TESTS OFF) endif() +option(GLSLANG_TESTS "Enable glslang testing") + option(SKIP_GLSLANG_INSTALL "Skip installation") if(NOT ${SKIP_GLSLANG_INSTALL}) @@ -107,11 +107,6 @@ if(MINGW OR (APPLE AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) endif() option(ENABLE_PCH "Enables Precompiled header" ON) -option(ENABLE_CTEST "Enables testing" ON) - -if(ENABLE_CTEST) - include(CTest) -endif() if(ENABLE_HLSL) add_compile_definitions(ENABLE_HLSL) @@ -306,11 +301,11 @@ if(ENABLE_GLSLANG_BINARIES) add_subdirectory(StandAlone) endif() add_subdirectory(SPIRV) -if(ENABLE_CTEST) + +if(GLSLANG_TESTS) + enable_testing() add_subdirectory(gtests) -endif() -if(ENABLE_CTEST AND BUILD_TESTING) # glslang-testsuite runs a bash script on Windows. # Make sure to use '-o igncr' flag to ignore carriage returns (\r). set(IGNORE_CR_FLAG "") diff --git a/External/CMakeLists.txt b/External/CMakeLists.txt index cbabd2e3b4..47f9aaafdf 100644 --- a/External/CMakeLists.txt +++ b/External/CMakeLists.txt @@ -34,7 +34,7 @@ # Suppress all warnings from external projects. set_property(DIRECTORY APPEND PROPERTY COMPILE_OPTIONS -w) -if(BUILD_TESTING) +if(GLSLANG_TESTS) if(TARGET gmock) message(STATUS "Google Mock already configured - use it") elseif(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/googletest) diff --git a/README.md b/README.md index 2ea6c1b72b..443881083a 100644 --- a/README.md +++ b/README.md @@ -171,6 +171,10 @@ cmake --build . --config Release --target install If using MSVC, after running CMake to configure, use the Configuration Manager to check the `INSTALL` project. +If you want to enable testing via CMake set `GLSLANG_TESTS=ON` when configuring the build. + +`GLSLANG_TESTS` is off by default to streamline the packaging / Vulkan SDK process. + ### Building (GN) glslang can also be built with the [GN build system](https://gn.googlesource.com/gn/). @@ -228,7 +232,7 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception Bash-like environments: + [Instructions located here](https://emscripten.org/docs/getting_started/downloads.html#sdk-download-and-install) * Wrap cmake call: `emcmake cmake` -* Set `-DBUILD_TESTING=OFF -DENABLE_OPT=OFF`. +* Set `-DENABLE_OPT=OFF`. * Set `-DENABLE_HLSL=OFF` if HLSL is not needed. * For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`. * To get a fully minimized build, make sure to use `brotli` to compress the .js @@ -238,7 +242,7 @@ Example: ```sh emcmake cmake -DCMAKE_BUILD_TYPE=Release -DENABLE_GLSLANG_JS=ON \ - -DENABLE_HLSL=OFF -DBUILD_TESTING=OFF -DENABLE_OPT=OFF .. + -DENABLE_HLSL=OFF -DENABLE_OPT=OFF .. ``` ## Building glslang - Using vcpkg diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 37d2dbb15b..3071e0e7f1 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2020 The Khronos Group Inc. +# Copyright (C) 2020-2023 The Khronos Group Inc. # # All rights reserved. # @@ -31,7 +31,7 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -if(BUILD_TESTING) +if(GLSLANG_TESTS) if(TARGET gmock) message(STATUS "Google Mock found - building tests") From cf1fbbff44c0900823b94a2122861d0d593432a8 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Fri, 1 Dec 2023 15:07:03 -0700 Subject: [PATCH 359/594] Only install/test if PROJECT_IS_TOP_LEVEL Further remove installing glslangtests. There isn't a need to do that. glslangtests isn't a deliverable. --- CMakeLists.txt | 63 +++++++++++----------- SPIRV/CMakeLists.txt | 2 +- StandAlone/CMakeLists.txt | 2 +- glslang/CMakeLists.txt | 2 +- glslang/OSDependent/Unix/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 2 +- gtests/CMakeLists.txt | 15 ------ 7 files changed, 38 insertions(+), 50 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1b31ff0d83..5cdd3e31ab 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,11 @@ cmake_minimum_required(VERSION 3.17.2) project(glslang) +if (CMAKE_VERSION VERSION_LESS "3.21") + # https://cmake.org/cmake/help/latest/variable/PROJECT_IS_TOP_LEVEL.html + string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL) +endif() + set_property(GLOBAL PROPERTY USE_FOLDERS ON) # Adhere to GNU filesystem layout conventions @@ -73,13 +78,6 @@ if (IOS OR ANDROID) set(GLSLANG_TESTS OFF) endif() -option(GLSLANG_TESTS "Enable glslang testing") - -option(SKIP_GLSLANG_INSTALL "Skip installation") - -if(NOT ${SKIP_GLSLANG_INSTALL}) - set(ENABLE_GLSLANG_INSTALL ON) -endif() option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON) @@ -302,33 +300,38 @@ if(ENABLE_GLSLANG_BINARIES) endif() add_subdirectory(SPIRV) -if(GLSLANG_TESTS) - enable_testing() - add_subdirectory(gtests) +# Testing / installation only makes sense when the project is top level. +# +# Otherwise add_subdirectory users have a harder time consuming the library. +# Since glslang will pollute the installation and add undesirable testing. +if(PROJECT_IS_TOP_LEVEL) + option(GLSLANG_TESTS "Enable glslang testing") + if(GLSLANG_TESTS) + enable_testing() + add_subdirectory(gtests) + + # glslang-testsuite runs a bash script on Windows. + # Make sure to use '-o igncr' flag to ignore carriage returns (\r). + set(IGNORE_CR_FLAG "") + if(WIN32) + set(IGNORE_CR_FLAG -o igncr) + endif() - # glslang-testsuite runs a bash script on Windows. - # Make sure to use '-o igncr' flag to ignore carriage returns (\r). - set(IGNORE_CR_FLAG "") - if(WIN32) - set(IGNORE_CR_FLAG -o igncr) - endif() + if (CMAKE_CONFIGURATION_TYPES) + set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) + set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslang) + set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) + else() + set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) + set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang) + set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) + endif() - if (CMAKE_CONFIGURATION_TYPES) - set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) - set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslang) - set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) - else() - set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) - set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang) - set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) + add_test(NAME glslang-testsuite + COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) endif() - add_test(NAME glslang-testsuite - COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) -endif() - -if(ENABLE_GLSLANG_INSTALL) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[ @PACKAGE_INIT@ @INSTALL_CONFIG_UNIX@ diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 9918b1de27..61c7a266fc 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -118,7 +118,7 @@ if(WIN32) source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) endif() -if(ENABLE_GLSLANG_INSTALL) +if(PROJECT_IS_TOP_LEVEL) if (ENABLE_SPVREMAPPER) install(TARGETS SPVRemapper EXPORT glslang-targets) endif() diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 45ad26ef42..459657ab98 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -87,7 +87,7 @@ if(WIN32) source_group("Source" FILES ${SOURCES}) endif() -if(ENABLE_GLSLANG_INSTALL) +if(PROJECT_IS_TOP_LEVEL) install(TARGETS glslang-standalone EXPORT glslang-targets) # Backward compatibility diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 6552290bfd..37eecaadd4 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -227,7 +227,7 @@ endif() ################################################################################ # install ################################################################################ -if(ENABLE_GLSLANG_INSTALL) +if(PROJECT_IS_TOP_LEVEL) install(TARGETS glslang EXPORT glslang-targets) if(NOT BUILD_SHARED_LIBS) install(TARGETS MachineIndependent EXPORT glslang-targets) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index f6b1c6afb7..ec35da3085 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -40,7 +40,7 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(OSDependent Threads::Threads) -if(ENABLE_GLSLANG_INSTALL AND NOT BUILD_SHARED_LIBS) +if(PROJECT_IS_TOP_LEVEL AND NOT BUILD_SHARED_LIBS) install(TARGETS OSDependent EXPORT glslang-targets) # Backward compatibility diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index c9d404a49e..b8af046cd7 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -51,7 +51,7 @@ if(WIN32) source_group("Source" FILES ${SOURCES}) endif() -if(ENABLE_GLSLANG_INSTALL) +if(PROJECT_IS_TOP_LEVEL) install(TARGETS OSDependent EXPORT glslang-targets) # Backward compatibility diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 3071e0e7f1..8e0edd4d78 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -68,21 +68,6 @@ if(GLSLANG_TESTS) glslang_pch(glslangtests ${CMAKE_CURRENT_SOURCE_DIR}/pch.h) set_property(TARGET glslangtests PROPERTY FOLDER tests) glslang_set_link_args(glslangtests) - if(ENABLE_GLSLANG_INSTALL) - install(TARGETS glslangtests EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" " - message(WARNING \"Using `glslangtestsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::glslangtests) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(glslangtests ALIAS glslang::glslangtests) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangtestsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - endif() set(GLSLANG_TEST_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/../Test") # Supply a default test root directory, so that manual testing From a9e7326b2df3f60027461c54369eac0deed3d147 Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Sun, 3 Dec 2023 21:43:08 -0700 Subject: [PATCH 360/594] EXCLUDE_FROM_ALL spirv-tools This is also being done for gtest for similar reasons. Currently glslang will build everything from spirv-tools despite this not being neccessary. EXCLUDE_FROM_ALL dramatically improves the build performance. Going from compiling roughly 446 files to 292 Furthermore only the targets we need to install are installed. Which makes it easier to verify the glslang installation. --- External/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/External/CMakeLists.txt b/External/CMakeLists.txt index 47f9aaafdf..301e48f20c 100644 --- a/External/CMakeLists.txt +++ b/External/CMakeLists.txt @@ -71,7 +71,8 @@ endif() if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt) if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools) set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests") - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools spirv-tools) + # EXCLUDE_FROM_ALL will prevent unneccessary build/installation from spirv-tools + add_subdirectory(spirv-tools EXCLUDE_FROM_ALL) endif() endif() From 72b403ad715ee42f17a93a088c3dc755345aea7b Mon Sep 17 00:00:00 2001 From: Juan Ramos Date: Mon, 4 Dec 2023 12:54:41 -0700 Subject: [PATCH 361/594] Fix continous_deployment libSPIRV-Tools.a and libSPIRV-Tools-opt.a aren't being installed. --- External/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/External/CMakeLists.txt b/External/CMakeLists.txt index 301e48f20c..46284fd5ba 100644 --- a/External/CMakeLists.txt +++ b/External/CMakeLists.txt @@ -71,8 +71,7 @@ endif() if(ENABLE_OPT AND NOT TARGET SPIRV-Tools-opt) if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/spirv-tools) set(SPIRV_SKIP_TESTS ON CACHE BOOL "Skip building SPIRV-Tools tests") - # EXCLUDE_FROM_ALL will prevent unneccessary build/installation from spirv-tools - add_subdirectory(spirv-tools EXCLUDE_FROM_ALL) + add_subdirectory(spirv-tools) endif() endif() From 0fedf7d95ad9c183279c279f3912c2da6d7fd0a5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Dec 2023 06:31:04 +0000 Subject: [PATCH 362/594] Bump lukka/get-cmake from 3.27.7 to 3.27.9 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.27.7 to 3.27.9. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/8be6cca406b575906541e8e3b885d46f416bba39...4865386b66955d11be0abf8c112d0230023e742a) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 08305d5e80..fd0b964412 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 7bdcf22e05..5e3bd4270b 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -92,7 +92,7 @@ jobs: - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -124,7 +124,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -148,7 +148,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' @@ -166,7 +166,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -195,7 +195,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -221,7 +221,7 @@ jobs: - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 with: python-version: '3.7' - - uses: lukka/get-cmake@8be6cca406b575906541e8e3b885d46f416bba39 # v3.27.7 + - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: From 9a35abff55440655dda5326c1d07ae23450ae64f Mon Sep 17 00:00:00 2001 From: Chao Chen Date: Wed, 25 Oct 2023 11:50:44 -0700 Subject: [PATCH 363/594] Always enable the generation of OpDebugBasicType for bool type --- SPIRV/GlslangToSpv.cpp | 2 +- SPIRV/SpvBuilder.cpp | 13 +- SPIRV/SpvBuilder.h | 2 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 1827 ++++++++-------- Test/baseResults/spv.debuginfo.glsl.frag.out | 1813 ++++++++-------- Test/baseResults/spv.debuginfo.glsl.tesc.out | 584 +++-- Test/baseResults/spv.debuginfo.glsl.tese.out | 312 +-- Test/baseResults/spv.debuginfo.glsl.vert.out | 828 ++++---- Test/baseResults/spv.debuginfo.hlsl.comp.out | 1827 ++++++++-------- Test/baseResults/spv.debuginfo.hlsl.frag.out | 1883 ++++++++--------- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 787 ++++--- Test/baseResults/spv.debuginfo.hlsl.tese.out | 600 +++--- Test/baseResults/spv.debuginfo.hlsl.vert.out | 912 ++++---- .../spv.debuginfo.scalar_types.glsl.frag.out | 267 ++- 14 files changed, 5792 insertions(+), 5865 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 671f3db36d..ec40f663a7 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4407,7 +4407,7 @@ spv::Id TGlslangToSpvTraverser::convertGlslangToSpvType(const glslang::TType& ty if (explicitLayout != glslang::ElpNone) spvType = builder.makeUintType(32); else - spvType = builder.makeBoolType(false); + spvType = builder.makeBoolType(); break; case glslang::EbtInt: spvType = builder.makeIntType(32); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index f898b75418..c07f3b6705 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -182,7 +182,7 @@ Id Builder::makeVoidType() return type->getResultId(); } -Id Builder::makeBoolType(bool const compilerGenerated) +Id Builder::makeBoolType() { Instruction* type; if (groupedTypes[OpTypeBool].size() == 0) { @@ -190,14 +190,15 @@ Id Builder::makeBoolType(bool const compilerGenerated) groupedTypes[OpTypeBool].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + + if (emitNonSemanticShaderDebugInfo) { + auto const debugResultId = makeBoolDebugType(32); + debugId[type->getResultId()] = debugResultId; + } + } else type = groupedTypes[OpTypeBool].back(); - if (emitNonSemanticShaderDebugInfo && !compilerGenerated) - { - auto const debugResultId = makeBoolDebugType(32); - debugId[type->getResultId()] = debugResultId; - } return type->getResultId(); } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index eae8d4f56b..b1ca6ce1f7 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -185,7 +185,7 @@ class Builder { // For creating new types (will return old type if the requested one was already made). Id makeVoidType(); - Id makeBoolType(bool const compilerGenerated = true); + Id makeBoolType(); Id makePointer(StorageClass, Id pointee); Id makeForwardPointer(StorageClass); Id makePointerFromForwardPointer(StorageClass, Id forwardPointerType, Id pointee); diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 6781ee8bff..ab5d83971e 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 971 +// Id's are bound by 950 Capability Shader Extension "SPV_KHR_non_semantic_info" @@ -42,19 +42,19 @@ spv.debuginfo.glsl.comp 180: String "Particle" 185: String "particleIn" 189: String "ParticleIn" - 210: String "particleOut" - 213: String "ParticleOut" - 238: String "force" - 251: String "pos" - 261: String "vel" - 573: String "f" - 622: String "sphereDist" - 675: String "calculateNormals" - 678: String "PushConsts" - 682: String "pushConsts" - 719: String "a" - 732: String "b" - 749: String "c" + 209: String "particleOut" + 212: String "ParticleOut" + 237: String "force" + 250: String "pos" + 260: String "vel" + 560: String "f" + 609: String "sphereDist" + 661: String "calculateNormals" + 664: String "PushConsts" + 668: String "pushConsts" + 702: String "a" + 715: String "b" + 732: String "c" Name 14 "main" Name 28 "springForce(vf3;vf3;f1;" Name 25 "p0" @@ -86,45 +86,45 @@ spv.debuginfo.glsl.comp Name 183 "ParticleIn" MemberName 183(ParticleIn) 0 "particleIn" Name 191 "" - Name 208 "ParticleOut" - MemberName 208(ParticleOut) 0 "particleOut" - Name 215 "" - Name 236 "force" - Name 249 "pos" - Name 259 "vel" - Name 280 "param" + Name 207 "ParticleOut" + MemberName 207(ParticleOut) 0 "particleOut" + Name 214 "" + Name 235 "force" + Name 248 "pos" + Name 258 "vel" + Name 278 "param" + Name 282 "param" Name 284 "param" - Name 286 "param" - Name 310 "param" - Name 314 "param" - Name 316 "param" + Name 307 "param" + Name 311 "param" + Name 313 "param" + Name 340 "param" Name 344 "param" - Name 348 "param" - Name 350 "param" - Name 373 "param" - Name 377 "param" - Name 379 "param" - Name 417 "param" - Name 421 "param" - Name 423 "param" - Name 456 "param" - Name 460 "param" - Name 462 "param" - Name 503 "param" - Name 507 "param" - Name 509 "param" - Name 546 "param" - Name 550 "param" - Name 552 "param" - Name 571 "f" - Name 620 "sphereDist" - Name 673 "PushConsts" - MemberName 673(PushConsts) 0 "calculateNormals" - Name 680 "pushConsts" - Name 693 "normal" - Name 717 "a" - Name 730 "b" - Name 747 "c" + Name 346 "param" + Name 368 "param" + Name 372 "param" + Name 374 "param" + Name 410 "param" + Name 414 "param" + Name 416 "param" + Name 447 "param" + Name 451 "param" + Name 453 "param" + Name 492 "param" + Name 496 "param" + Name 498 "param" + Name 533 "param" + Name 537 "param" + Name 539 "param" + Name 558 "f" + Name 607 "sphereDist" + Name 659 "PushConsts" + MemberName 659(PushConsts) 0 "calculateNormals" + Name 666 "pushConsts" + Name 678 "normal" + Name 700 "a" + Name 713 "b" + Name 730 "c" MemberDecorate 76(UBO) 0 Offset 0 MemberDecorate 76(UBO) 1 Offset 4 MemberDecorate 76(UBO) 2 Offset 8 @@ -150,14 +150,14 @@ spv.debuginfo.glsl.comp Decorate 183(ParticleIn) BufferBlock Decorate 191 DescriptorSet 0 Decorate 191 Binding 0 - Decorate 206 ArrayStride 80 - MemberDecorate 208(ParticleOut) 0 Offset 0 - Decorate 208(ParticleOut) BufferBlock - Decorate 215 DescriptorSet 0 - Decorate 215 Binding 1 - MemberDecorate 673(PushConsts) 0 Offset 0 - Decorate 673(PushConsts) Block - Decorate 970 BuiltIn WorkgroupSize + Decorate 205 ArrayStride 80 + MemberDecorate 207(ParticleOut) 0 Offset 0 + Decorate 207(ParticleOut) BufferBlock + Decorate 214 DescriptorSet 0 + Decorate 214 Binding 1 + MemberDecorate 659(PushConsts) 0 Offset 0 + Decorate 659(PushConsts) Block + Decorate 949 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -259,161 +259,140 @@ spv.debuginfo.glsl.comp 193: 71(int) Constant 0 195: 71(int) Constant 4 198: 16(float) Constant 1065353216 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 205: 7(int) Constant 82 - 206: TypeRuntimeArray 170(Particle) - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 179 12 -208(ParticleOut): TypeStruct 206 - 211: 7(int) Constant 40 - 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 210 207 32 211 187 12 12 13 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 213 36 32 205 12 35 213 12 13 209 - 214: TypePointer Uniform 208(ParticleOut) - 215: 214(ptr) Variable Uniform - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 212 32 205 12 35 1 215 80 - 219: TypePointer Uniform 69(fvec4) - 224: 7(int) Constant 83 - 226: 71(int) Constant 1 - 227: 16(float) Constant 0 - 228: 69(fvec4) ConstantComposite 227 227 227 227 - 231: 7(int) Constant 84 - 235: 7(int) Constant 88 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 238 20 32 235 12 52 37 - 240: 71(int) Constant 9 - 248: 7(int) Constant 90 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 251 20 32 248 12 52 37 - 258: 7(int) Constant 91 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 20 32 258 12 52 37 - 268: 7(int) Constant 95 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 277: 7(int) Constant 96 - 294: 7(int) Constant 99 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 307: 7(int) Constant 100 - 324: 7(int) Constant 103 - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 337: 7(int) Constant 104 - 343: 71(int) Constant 5 - 358: 7(int) Constant 107 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 367: 7(int) Constant 108 - 387: 7(int) Constant 111 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 409: 7(int) Constant 112 - 416: 71(int) Constant 6 - 431: 7(int) Constant 115 - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 449: 7(int) Constant 116 - 470: 7(int) Constant 119 - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 496: 7(int) Constant 120 - 517: 7(int) Constant 123 - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 539: 7(int) Constant 124 - 560: 7(int) Constant 127 - 561: 71(int) Constant 3 - 570: 7(int) Constant 130 - 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 573 20 32 570 12 52 37 - 581: 7(int) Constant 131 - 589: 16(float) Constant 1056964608 - 605: 7(int) Constant 132 - 619: 7(int) Constant 135 - 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 622 20 32 619 12 52 37 - 628: 71(int) Constant 8 - 634: 7(int) Constant 136 - 637: 71(int) Constant 7 - 640: 16(float) Constant 1008981770 - 642: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 648: 7(int) Constant 138 - 667: 7(int) Constant 140 - 672: 7(int) Constant 144 - 673(PushConsts): TypeStruct 7(int) - 676: 7(int) Constant 63 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 675 9 32 676 91 12 12 13 - 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 678 36 32 672 12 35 678 12 13 674 - 679: TypePointer PushConstant 673(PushConsts) - 680(pushConsts): 679(ptr) Variable PushConstant - 681: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 682 677 32 672 12 35 682 680(pushConsts) 80 - 683: TypePointer PushConstant 7(int) - 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 692: 7(int) Constant 145 - 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 20 32 692 12 52 37 - 696: 19(fvec3) ConstantComposite 227 227 227 - 698: 7(int) Constant 147 - 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 707: 7(int) Constant 148 - 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 716: 7(int) Constant 149 - 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 719 20 32 716 12 52 37 - 729: 7(int) Constant 150 + 204: 7(int) Constant 82 + 205: TypeRuntimeArray 170(Particle) + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 179 12 +207(ParticleOut): TypeStruct 205 + 210: 7(int) Constant 40 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 209 206 32 210 187 12 12 13 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 212 36 32 204 12 35 212 12 13 208 + 213: TypePointer Uniform 207(ParticleOut) + 214: 213(ptr) Variable Uniform + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 211 32 204 12 35 1 214 80 + 218: TypePointer Uniform 69(fvec4) + 223: 7(int) Constant 83 + 225: 71(int) Constant 1 + 226: 16(float) Constant 0 + 227: 69(fvec4) ConstantComposite 226 226 226 226 + 230: 7(int) Constant 84 + 234: 7(int) Constant 88 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 20 32 234 12 52 37 + 239: 71(int) Constant 9 + 247: 7(int) Constant 90 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 20 32 247 12 52 37 + 257: 7(int) Constant 91 + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 260 20 32 257 12 52 37 + 267: 7(int) Constant 95 + 275: 7(int) Constant 96 + 292: 7(int) Constant 99 + 304: 7(int) Constant 100 + 321: 7(int) Constant 103 + 333: 7(int) Constant 104 + 339: 71(int) Constant 5 + 354: 7(int) Constant 107 + 362: 7(int) Constant 108 + 382: 7(int) Constant 111 + 402: 7(int) Constant 112 + 409: 71(int) Constant 6 + 424: 7(int) Constant 115 + 440: 7(int) Constant 116 + 461: 7(int) Constant 119 + 485: 7(int) Constant 120 + 506: 7(int) Constant 123 + 526: 7(int) Constant 124 + 547: 7(int) Constant 127 + 548: 71(int) Constant 3 + 557: 7(int) Constant 130 + 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 560 20 32 557 12 52 37 + 568: 7(int) Constant 131 + 576: 16(float) Constant 1056964608 + 592: 7(int) Constant 132 + 606: 7(int) Constant 135 + 608: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 609 20 32 606 12 52 37 + 615: 71(int) Constant 8 + 621: 7(int) Constant 136 + 624: 71(int) Constant 7 + 627: 16(float) Constant 1008981770 + 634: 7(int) Constant 138 + 653: 7(int) Constant 140 + 658: 7(int) Constant 144 + 659(PushConsts): TypeStruct 7(int) + 662: 7(int) Constant 63 + 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 661 9 32 662 91 12 12 13 + 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 664 36 32 658 12 35 664 12 13 660 + 665: TypePointer PushConstant 659(PushConsts) + 666(pushConsts): 665(ptr) Variable PushConstant + 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 668 663 32 658 12 35 668 666(pushConsts) 80 + 669: TypePointer PushConstant 7(int) + 677: 7(int) Constant 145 + 679: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 20 32 677 12 52 37 + 681: 19(fvec3) ConstantComposite 226 226 226 + 683: 7(int) Constant 147 + 691: 7(int) Constant 148 + 699: 7(int) Constant 149 + 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 702 20 32 699 12 52 37 + 712: 7(int) Constant 150 + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 715 20 32 712 12 52 37 + 729: 7(int) Constant 151 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 732 20 32 729 12 52 37 - 746: 7(int) Constant 151 - 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 749 20 32 746 12 52 37 - 762: 7(int) Constant 152 - 774: 7(int) Constant 154 - 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 787: 7(int) Constant 155 - 799: 7(int) Constant 156 - 812: 7(int) Constant 157 - 821: 7(int) Constant 158 - 833: 7(int) Constant 161 - 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 846: 7(int) Constant 162 - 849: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 855: 7(int) Constant 163 - 867: 7(int) Constant 164 - 880: 7(int) Constant 165 - 889: 7(int) Constant 166 - 901: 7(int) Constant 168 - 908: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 914: 7(int) Constant 169 - 923: 7(int) Constant 170 - 936: 7(int) Constant 171 - 948: 7(int) Constant 172 - 960: 7(int) Constant 175 - 969: 7(int) Constant 10 - 970: 118(ivec3) ConstantComposite 969 969 36 + 745: 7(int) Constant 152 + 757: 7(int) Constant 154 + 769: 7(int) Constant 155 + 781: 7(int) Constant 156 + 794: 7(int) Constant 157 + 803: 7(int) Constant 158 + 815: 7(int) Constant 161 + 827: 7(int) Constant 162 + 835: 7(int) Constant 163 + 847: 7(int) Constant 164 + 860: 7(int) Constant 165 + 869: 7(int) Constant 166 + 881: 7(int) Constant 168 + 893: 7(int) Constant 169 + 902: 7(int) Constant 170 + 915: 7(int) Constant 171 + 927: 7(int) Constant 172 + 939: 7(int) Constant 175 + 948: 7(int) Constant 10 + 949: 118(ivec3) ConstantComposite 948 948 36 Line 1 72 11 14(main): 4 Function None 5 15: Label 121(id): 120(ptr) Variable Function 133(index): 132(ptr) Variable Function - 236(force): 21(ptr) Variable Function - 249(pos): 21(ptr) Variable Function - 259(vel): 21(ptr) Variable Function - 280(param): 21(ptr) Variable Function - 284(param): 21(ptr) Variable Function - 286(param): 22(ptr) Variable Function - 310(param): 21(ptr) Variable Function - 314(param): 21(ptr) Variable Function - 316(param): 22(ptr) Variable Function + 235(force): 21(ptr) Variable Function + 248(pos): 21(ptr) Variable Function + 258(vel): 21(ptr) Variable Function + 278(param): 21(ptr) Variable Function + 282(param): 21(ptr) Variable Function + 284(param): 22(ptr) Variable Function + 307(param): 21(ptr) Variable Function + 311(param): 21(ptr) Variable Function + 313(param): 22(ptr) Variable Function + 340(param): 21(ptr) Variable Function 344(param): 21(ptr) Variable Function - 348(param): 21(ptr) Variable Function - 350(param): 22(ptr) Variable Function - 373(param): 21(ptr) Variable Function - 377(param): 21(ptr) Variable Function - 379(param): 22(ptr) Variable Function - 417(param): 21(ptr) Variable Function - 421(param): 21(ptr) Variable Function - 423(param): 22(ptr) Variable Function - 456(param): 21(ptr) Variable Function - 460(param): 21(ptr) Variable Function - 462(param): 22(ptr) Variable Function - 503(param): 21(ptr) Variable Function - 507(param): 21(ptr) Variable Function - 509(param): 22(ptr) Variable Function - 546(param): 21(ptr) Variable Function - 550(param): 21(ptr) Variable Function - 552(param): 22(ptr) Variable Function - 571(f): 21(ptr) Variable Function - 620(sphereDist): 21(ptr) Variable Function - 693(normal): 21(ptr) Variable Function - 717(a): 21(ptr) Variable Function - 730(b): 21(ptr) Variable Function - 747(c): 21(ptr) Variable Function + 346(param): 22(ptr) Variable Function + 368(param): 21(ptr) Variable Function + 372(param): 21(ptr) Variable Function + 374(param): 22(ptr) Variable Function + 410(param): 21(ptr) Variable Function + 414(param): 21(ptr) Variable Function + 416(param): 22(ptr) Variable Function + 447(param): 21(ptr) Variable Function + 451(param): 21(ptr) Variable Function + 453(param): 22(ptr) Variable Function + 492(param): 21(ptr) Variable Function + 496(param): 21(ptr) Variable Function + 498(param): 22(ptr) Variable Function + 533(param): 21(ptr) Variable Function + 537(param): 21(ptr) Variable Function + 539(param): 22(ptr) Variable Function + 558(f): 21(ptr) Variable Function + 607(sphereDist): 21(ptr) Variable Function + 678(normal): 21(ptr) Variable Function + 700(a): 21(ptr) Variable Function + 713(b): 21(ptr) Variable Function + 730(c): 21(ptr) Variable Function 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 52 14(main) 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 117 117 12 12 @@ -453,741 +432,741 @@ spv.debuginfo.glsl.comp 194: 7(int) Load 133(index) 196: 103(ptr) AccessChain 191 193 194 195 197: 16(float) Load 196 - 200: 157(bool) FOrdEqual 197 198 - SelectionMerge 202 None - BranchConditional 200 201 202 - 201: Label - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 205 205 12 12 + 199: 157(bool) FOrdEqual 197 198 + SelectionMerge 201 None + BranchConditional 199 200 201 + 200: Label + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 204 204 12 12 + 216: 7(int) Load 133(index) 217: 7(int) Load 133(index) - 218: 7(int) Load 133(index) - 220: 219(ptr) AccessChain 215 193 218 193 - 221: 69(fvec4) Load 220 - 222: 219(ptr) AccessChain 215 193 217 193 - Store 222 221 - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 224 224 12 12 - 225: 7(int) Load 133(index) - 229: 219(ptr) AccessChain 215 193 225 226 - Store 229 228 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 231 231 12 12 + 219: 218(ptr) AccessChain 214 193 217 193 + 220: 69(fvec4) Load 219 + 221: 218(ptr) AccessChain 214 193 216 193 + Store 221 220 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 223 223 12 12 + 224: 7(int) Load 133(index) + 228: 218(ptr) AccessChain 214 193 224 225 + Store 228 227 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 230 230 12 12 Return - 202: Label - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 235 235 12 12 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 237 236(force) 44 - 241: 219(ptr) AccessChain 99(params) 240 - 242: 69(fvec4) Load 241 - 243: 19(fvec3) VectorShuffle 242 242 0 1 2 - 244: 103(ptr) AccessChain 99(params) 226 - 245: 16(float) Load 244 - 246: 19(fvec3) VectorTimesScalar 243 245 - Store 236(force) 246 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 248 248 12 12 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 250 249(pos) 44 - 253: 7(int) Load 133(index) - 254: 219(ptr) AccessChain 191 193 253 193 - 255: 69(fvec4) Load 254 - 256: 19(fvec3) VectorShuffle 255 255 0 1 2 - Store 249(pos) 256 - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 258 258 12 12 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(vel) 44 - 263: 7(int) Load 133(index) - 264: 219(ptr) AccessChain 191 193 263 226 - 265: 69(fvec4) Load 264 - 266: 19(fvec3) VectorShuffle 265 265 0 1 2 - Store 259(vel) 266 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 268 268 12 12 - 269: 132(ptr) AccessChain 121(id) 12 - 270: 7(int) Load 269 - 272: 157(bool) UGreaterThan 270 12 - SelectionMerge 274 None - BranchConditional 272 273 274 - 273: Label - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 277 277 12 12 - 278: 7(int) Load 133(index) - 279: 7(int) ISub 278 36 - 281: 219(ptr) AccessChain 191 193 279 193 - 282: 69(fvec4) Load 281 - 283: 19(fvec3) VectorShuffle 282 282 0 1 2 - Store 280(param) 283 - 285: 19(fvec3) Load 249(pos) - Store 284(param) 285 - 287: 103(ptr) AccessChain 99(params) 195 - 288: 16(float) Load 287 - Store 286(param) 288 - 289: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 280(param) 284(param) 286(param) - 290: 19(fvec3) Load 236(force) - 291: 19(fvec3) FAdd 290 289 - Store 236(force) 291 - Branch 274 - 274: Label - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 294 294 12 12 - 295: 132(ptr) AccessChain 121(id) 12 - 296: 7(int) Load 295 - 297: 140(ptr) AccessChain 99(params) 139 12 - 298: 71(int) Load 297 - 299: 71(int) ISub 298 226 - 300: 7(int) Bitcast 299 - 302: 157(bool) ULessThan 296 300 - SelectionMerge 304 None - BranchConditional 302 303 304 - 303: Label - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 307 307 12 12 - 308: 7(int) Load 133(index) - 309: 7(int) IAdd 308 36 - 311: 219(ptr) AccessChain 191 193 309 193 - 312: 69(fvec4) Load 311 - 313: 19(fvec3) VectorShuffle 312 312 0 1 2 - Store 310(param) 313 - 315: 19(fvec3) Load 249(pos) - Store 314(param) 315 - 317: 103(ptr) AccessChain 99(params) 195 - 318: 16(float) Load 317 - Store 316(param) 318 - 319: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 310(param) 314(param) 316(param) - 320: 19(fvec3) Load 236(force) - 321: 19(fvec3) FAdd 320 319 - Store 236(force) 321 - Branch 304 - 304: Label - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 324 324 12 12 - 325: 132(ptr) AccessChain 121(id) 36 - 326: 7(int) Load 325 - 327: 140(ptr) AccessChain 99(params) 139 36 - 328: 71(int) Load 327 - 329: 71(int) ISub 328 226 - 330: 7(int) Bitcast 329 - 332: 157(bool) ULessThan 326 330 - SelectionMerge 334 None - BranchConditional 332 333 334 - 333: Label - 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 337 337 12 12 - 338: 7(int) Load 133(index) - 339: 140(ptr) AccessChain 99(params) 139 12 - 340: 71(int) Load 339 - 341: 7(int) Bitcast 340 - 342: 7(int) IAdd 338 341 - 345: 219(ptr) AccessChain 191 193 342 193 - 346: 69(fvec4) Load 345 - 347: 19(fvec3) VectorShuffle 346 346 0 1 2 - Store 344(param) 347 - 349: 19(fvec3) Load 249(pos) - Store 348(param) 349 - 351: 103(ptr) AccessChain 99(params) 343 - 352: 16(float) Load 351 - Store 350(param) 352 - 353: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 344(param) 348(param) 350(param) - 354: 19(fvec3) Load 236(force) - 355: 19(fvec3) FAdd 354 353 - Store 236(force) 355 - Branch 334 - 334: Label - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 358 358 12 12 - 359: 132(ptr) AccessChain 121(id) 36 - 360: 7(int) Load 359 - 362: 157(bool) UGreaterThan 360 12 - SelectionMerge 364 None - BranchConditional 362 363 364 - 363: Label - 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 366: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 367 367 12 12 - 368: 7(int) Load 133(index) - 369: 140(ptr) AccessChain 99(params) 139 12 - 370: 71(int) Load 369 - 371: 7(int) Bitcast 370 - 372: 7(int) ISub 368 371 - 374: 219(ptr) AccessChain 191 193 372 193 - 375: 69(fvec4) Load 374 - 376: 19(fvec3) VectorShuffle 375 375 0 1 2 - Store 373(param) 376 - 378: 19(fvec3) Load 249(pos) - Store 377(param) 378 - 380: 103(ptr) AccessChain 99(params) 343 - 381: 16(float) Load 380 - Store 379(param) 381 - 382: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 373(param) 377(param) 379(param) - 383: 19(fvec3) Load 236(force) - 384: 19(fvec3) FAdd 383 382 - Store 236(force) 384 - Branch 364 - 364: Label - 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 387 387 12 12 - 388: 132(ptr) AccessChain 121(id) 12 - 389: 7(int) Load 388 - 391: 157(bool) UGreaterThan 389 12 - SelectionMerge 393 None - BranchConditional 391 392 393 - 392: Label - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 387 387 12 12 - 396: 132(ptr) AccessChain 121(id) 36 - 397: 7(int) Load 396 - 398: 140(ptr) AccessChain 99(params) 139 36 - 399: 71(int) Load 398 - 400: 71(int) ISub 399 226 - 401: 7(int) Bitcast 400 - 403: 157(bool) ULessThan 397 401 - Branch 393 - 393: Label - 404: 157(bool) Phi 391 364 403 392 - SelectionMerge 406 None - BranchConditional 404 405 406 - 405: Label - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 409 409 12 12 - 410: 7(int) Load 133(index) - 411: 140(ptr) AccessChain 99(params) 139 12 - 412: 71(int) Load 411 - 413: 7(int) Bitcast 412 - 414: 7(int) IAdd 410 413 - 415: 7(int) ISub 414 36 - 418: 219(ptr) AccessChain 191 193 415 193 - 419: 69(fvec4) Load 418 - 420: 19(fvec3) VectorShuffle 419 419 0 1 2 - Store 417(param) 420 - 422: 19(fvec3) Load 249(pos) - Store 421(param) 422 - 424: 103(ptr) AccessChain 99(params) 416 - 425: 16(float) Load 424 - Store 423(param) 425 - 426: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 417(param) 421(param) 423(param) - 427: 19(fvec3) Load 236(force) - 428: 19(fvec3) FAdd 427 426 - Store 236(force) 428 - Branch 406 - 406: Label - 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 431 431 12 12 - 432: 132(ptr) AccessChain 121(id) 12 - 433: 7(int) Load 432 - 435: 157(bool) UGreaterThan 433 12 + 201: Label + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 234 234 12 12 + 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(force) 44 + 240: 218(ptr) AccessChain 99(params) 239 + 241: 69(fvec4) Load 240 + 242: 19(fvec3) VectorShuffle 241 241 0 1 2 + 243: 103(ptr) AccessChain 99(params) 225 + 244: 16(float) Load 243 + 245: 19(fvec3) VectorTimesScalar 242 244 + Store 235(force) 245 + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 247 247 12 12 + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(pos) 44 + 252: 7(int) Load 133(index) + 253: 218(ptr) AccessChain 191 193 252 193 + 254: 69(fvec4) Load 253 + 255: 19(fvec3) VectorShuffle 254 254 0 1 2 + Store 248(pos) 255 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 257 257 12 12 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 259 258(vel) 44 + 262: 7(int) Load 133(index) + 263: 218(ptr) AccessChain 191 193 262 225 + 264: 69(fvec4) Load 263 + 265: 19(fvec3) VectorShuffle 264 264 0 1 2 + Store 258(vel) 265 + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 267 267 12 12 + 268: 132(ptr) AccessChain 121(id) 12 + 269: 7(int) Load 268 + 270: 157(bool) UGreaterThan 269 12 + SelectionMerge 272 None + BranchConditional 270 271 272 + 271: Label + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 275 275 12 12 + 276: 7(int) Load 133(index) + 277: 7(int) ISub 276 36 + 279: 218(ptr) AccessChain 191 193 277 193 + 280: 69(fvec4) Load 279 + 281: 19(fvec3) VectorShuffle 280 280 0 1 2 + Store 278(param) 281 + 283: 19(fvec3) Load 248(pos) + Store 282(param) 283 + 285: 103(ptr) AccessChain 99(params) 195 + 286: 16(float) Load 285 + Store 284(param) 286 + 287: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 278(param) 282(param) 284(param) + 288: 19(fvec3) Load 235(force) + 289: 19(fvec3) FAdd 288 287 + Store 235(force) 289 + Branch 272 + 272: Label + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 292 292 12 12 + 293: 132(ptr) AccessChain 121(id) 12 + 294: 7(int) Load 293 + 295: 140(ptr) AccessChain 99(params) 139 12 + 296: 71(int) Load 295 + 297: 71(int) ISub 296 225 + 298: 7(int) Bitcast 297 + 299: 157(bool) ULessThan 294 298 + SelectionMerge 301 None + BranchConditional 299 300 301 + 300: Label + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 304 304 12 12 + 305: 7(int) Load 133(index) + 306: 7(int) IAdd 305 36 + 308: 218(ptr) AccessChain 191 193 306 193 + 309: 69(fvec4) Load 308 + 310: 19(fvec3) VectorShuffle 309 309 0 1 2 + Store 307(param) 310 + 312: 19(fvec3) Load 248(pos) + Store 311(param) 312 + 314: 103(ptr) AccessChain 99(params) 195 + 315: 16(float) Load 314 + Store 313(param) 315 + 316: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 307(param) 311(param) 313(param) + 317: 19(fvec3) Load 235(force) + 318: 19(fvec3) FAdd 317 316 + Store 235(force) 318 + Branch 301 + 301: Label + 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 321 321 12 12 + 322: 132(ptr) AccessChain 121(id) 36 + 323: 7(int) Load 322 + 324: 140(ptr) AccessChain 99(params) 139 36 + 325: 71(int) Load 324 + 326: 71(int) ISub 325 225 + 327: 7(int) Bitcast 326 + 328: 157(bool) ULessThan 323 327 + SelectionMerge 330 None + BranchConditional 328 329 330 + 329: Label + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 333 333 12 12 + 334: 7(int) Load 133(index) + 335: 140(ptr) AccessChain 99(params) 139 12 + 336: 71(int) Load 335 + 337: 7(int) Bitcast 336 + 338: 7(int) IAdd 334 337 + 341: 218(ptr) AccessChain 191 193 338 193 + 342: 69(fvec4) Load 341 + 343: 19(fvec3) VectorShuffle 342 342 0 1 2 + Store 340(param) 343 + 345: 19(fvec3) Load 248(pos) + Store 344(param) 345 + 347: 103(ptr) AccessChain 99(params) 339 + 348: 16(float) Load 347 + Store 346(param) 348 + 349: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 340(param) 344(param) 346(param) + 350: 19(fvec3) Load 235(force) + 351: 19(fvec3) FAdd 350 349 + Store 235(force) 351 + Branch 330 + 330: Label + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 354 354 12 12 + 355: 132(ptr) AccessChain 121(id) 36 + 356: 7(int) Load 355 + 357: 157(bool) UGreaterThan 356 12 + SelectionMerge 359 None + BranchConditional 357 358 359 + 358: Label + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 362 362 12 12 + 363: 7(int) Load 133(index) + 364: 140(ptr) AccessChain 99(params) 139 12 + 365: 71(int) Load 364 + 366: 7(int) Bitcast 365 + 367: 7(int) ISub 363 366 + 369: 218(ptr) AccessChain 191 193 367 193 + 370: 69(fvec4) Load 369 + 371: 19(fvec3) VectorShuffle 370 370 0 1 2 + Store 368(param) 371 + 373: 19(fvec3) Load 248(pos) + Store 372(param) 373 + 375: 103(ptr) AccessChain 99(params) 339 + 376: 16(float) Load 375 + Store 374(param) 376 + 377: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 368(param) 372(param) 374(param) + 378: 19(fvec3) Load 235(force) + 379: 19(fvec3) FAdd 378 377 + Store 235(force) 379 + Branch 359 + 359: Label + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 382 382 12 12 + 383: 132(ptr) AccessChain 121(id) 12 + 384: 7(int) Load 383 + 385: 157(bool) UGreaterThan 384 12 + SelectionMerge 387 None + BranchConditional 385 386 387 + 386: Label + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 382 382 12 12 + 390: 132(ptr) AccessChain 121(id) 36 + 391: 7(int) Load 390 + 392: 140(ptr) AccessChain 99(params) 139 36 + 393: 71(int) Load 392 + 394: 71(int) ISub 393 225 + 395: 7(int) Bitcast 394 + 396: 157(bool) ULessThan 391 395 + Branch 387 + 387: Label + 397: 157(bool) Phi 385 359 396 386 + SelectionMerge 399 None + BranchConditional 397 398 399 + 398: Label + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 402 402 12 12 + 403: 7(int) Load 133(index) + 404: 140(ptr) AccessChain 99(params) 139 12 + 405: 71(int) Load 404 + 406: 7(int) Bitcast 405 + 407: 7(int) IAdd 403 406 + 408: 7(int) ISub 407 36 + 411: 218(ptr) AccessChain 191 193 408 193 + 412: 69(fvec4) Load 411 + 413: 19(fvec3) VectorShuffle 412 412 0 1 2 + Store 410(param) 413 + 415: 19(fvec3) Load 248(pos) + Store 414(param) 415 + 417: 103(ptr) AccessChain 99(params) 409 + 418: 16(float) Load 417 + Store 416(param) 418 + 419: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 410(param) 414(param) 416(param) + 420: 19(fvec3) Load 235(force) + 421: 19(fvec3) FAdd 420 419 + Store 235(force) 421 + Branch 399 + 399: Label + 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 424 424 12 12 + 425: 132(ptr) AccessChain 121(id) 12 + 426: 7(int) Load 425 + 427: 157(bool) UGreaterThan 426 12 + SelectionMerge 429 None + BranchConditional 427 428 429 + 428: Label + 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 424 424 12 12 + 432: 132(ptr) AccessChain 121(id) 36 + 433: 7(int) Load 432 + 434: 157(bool) UGreaterThan 433 12 + Branch 429 + 429: Label + 435: 157(bool) Phi 427 399 434 428 SelectionMerge 437 None BranchConditional 435 436 437 436: Label 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 431 431 12 12 - 440: 132(ptr) AccessChain 121(id) 36 - 441: 7(int) Load 440 - 443: 157(bool) UGreaterThan 441 12 + 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 440 440 12 12 + 441: 7(int) Load 133(index) + 442: 140(ptr) AccessChain 99(params) 139 12 + 443: 71(int) Load 442 + 444: 7(int) Bitcast 443 + 445: 7(int) ISub 441 444 + 446: 7(int) ISub 445 36 + 448: 218(ptr) AccessChain 191 193 446 193 + 449: 69(fvec4) Load 448 + 450: 19(fvec3) VectorShuffle 449 449 0 1 2 + Store 447(param) 450 + 452: 19(fvec3) Load 248(pos) + Store 451(param) 452 + 454: 103(ptr) AccessChain 99(params) 409 + 455: 16(float) Load 454 + Store 453(param) 455 + 456: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 447(param) 451(param) 453(param) + 457: 19(fvec3) Load 235(force) + 458: 19(fvec3) FAdd 457 456 + Store 235(force) 458 Branch 437 437: Label - 444: 157(bool) Phi 435 406 443 436 - SelectionMerge 446 None - BranchConditional 444 445 446 - 445: Label - 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 449 449 12 12 - 450: 7(int) Load 133(index) - 451: 140(ptr) AccessChain 99(params) 139 12 - 452: 71(int) Load 451 - 453: 7(int) Bitcast 452 - 454: 7(int) ISub 450 453 - 455: 7(int) ISub 454 36 - 457: 219(ptr) AccessChain 191 193 455 193 - 458: 69(fvec4) Load 457 - 459: 19(fvec3) VectorShuffle 458 458 0 1 2 - Store 456(param) 459 - 461: 19(fvec3) Load 249(pos) - Store 460(param) 461 - 463: 103(ptr) AccessChain 99(params) 416 - 464: 16(float) Load 463 - Store 462(param) 464 - 465: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 456(param) 460(param) 462(param) - 466: 19(fvec3) Load 236(force) - 467: 19(fvec3) FAdd 466 465 - Store 236(force) 467 - Branch 446 - 446: Label - 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 470 470 12 12 - 471: 132(ptr) AccessChain 121(id) 12 - 472: 7(int) Load 471 - 473: 140(ptr) AccessChain 99(params) 139 12 - 474: 71(int) Load 473 - 475: 71(int) ISub 474 226 - 476: 7(int) Bitcast 475 - 478: 157(bool) ULessThan 472 476 - SelectionMerge 480 None - BranchConditional 478 479 480 - 479: Label - 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 470 470 12 12 - 483: 132(ptr) AccessChain 121(id) 36 - 484: 7(int) Load 483 - 485: 140(ptr) AccessChain 99(params) 139 36 - 486: 71(int) Load 485 - 487: 71(int) ISub 486 226 - 488: 7(int) Bitcast 487 - 490: 157(bool) ULessThan 484 488 - Branch 480 - 480: Label - 491: 157(bool) Phi 478 446 490 479 - SelectionMerge 493 None - BranchConditional 491 492 493 - 492: Label - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 496 496 12 12 - 497: 7(int) Load 133(index) - 498: 140(ptr) AccessChain 99(params) 139 12 - 499: 71(int) Load 498 - 500: 7(int) Bitcast 499 - 501: 7(int) IAdd 497 500 - 502: 7(int) IAdd 501 36 - 504: 219(ptr) AccessChain 191 193 502 193 - 505: 69(fvec4) Load 504 - 506: 19(fvec3) VectorShuffle 505 505 0 1 2 - Store 503(param) 506 - 508: 19(fvec3) Load 249(pos) - Store 507(param) 508 - 510: 103(ptr) AccessChain 99(params) 416 - 511: 16(float) Load 510 - Store 509(param) 511 - 512: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 503(param) 507(param) 509(param) - 513: 19(fvec3) Load 236(force) - 514: 19(fvec3) FAdd 513 512 - Store 236(force) 514 - Branch 493 - 493: Label - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 517 517 12 12 - 518: 132(ptr) AccessChain 121(id) 12 - 519: 7(int) Load 518 - 520: 140(ptr) AccessChain 99(params) 139 12 - 521: 71(int) Load 520 - 522: 71(int) ISub 521 226 - 523: 7(int) Bitcast 522 - 525: 157(bool) ULessThan 519 523 - SelectionMerge 527 None - BranchConditional 525 526 527 - 526: Label - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 517 517 12 12 - 530: 132(ptr) AccessChain 121(id) 36 - 531: 7(int) Load 530 - 533: 157(bool) UGreaterThan 531 12 - Branch 527 - 527: Label - 534: 157(bool) Phi 525 493 533 526 - SelectionMerge 536 None - BranchConditional 534 535 536 - 535: Label - 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 539 539 12 12 - 540: 7(int) Load 133(index) - 541: 140(ptr) AccessChain 99(params) 139 12 - 542: 71(int) Load 541 - 543: 7(int) Bitcast 542 - 544: 7(int) ISub 540 543 - 545: 7(int) IAdd 544 36 - 547: 219(ptr) AccessChain 191 193 545 193 - 548: 69(fvec4) Load 547 - 549: 19(fvec3) VectorShuffle 548 548 0 1 2 - Store 546(param) 549 - 551: 19(fvec3) Load 249(pos) - Store 550(param) 551 - 553: 103(ptr) AccessChain 99(params) 416 - 554: 16(float) Load 553 - Store 552(param) 554 - 555: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 546(param) 550(param) 552(param) - 556: 19(fvec3) Load 236(force) - 557: 19(fvec3) FAdd 556 555 - Store 236(force) 557 - Branch 536 - 536: Label - 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 560 560 12 12 - 562: 103(ptr) AccessChain 99(params) 561 - 563: 16(float) Load 562 - 564: 16(float) FNegate 563 - 565: 19(fvec3) Load 259(vel) - 566: 19(fvec3) VectorTimesScalar 565 564 - 567: 19(fvec3) Load 236(force) - 568: 19(fvec3) FAdd 567 566 - Store 236(force) 568 - 569: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 570 570 12 12 - 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 572 571(f) 44 - 575: 19(fvec3) Load 236(force) - 576: 103(ptr) AccessChain 99(params) 226 - 577: 16(float) Load 576 - 578: 16(float) FDiv 198 577 - 579: 19(fvec3) VectorTimesScalar 575 578 - Store 571(f) 579 - 580: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 581 581 12 12 - 582: 7(int) Load 133(index) - 583: 19(fvec3) Load 249(pos) - 584: 19(fvec3) Load 259(vel) - 585: 103(ptr) AccessChain 99(params) 193 - 586: 16(float) Load 585 - 587: 19(fvec3) VectorTimesScalar 584 586 - 588: 19(fvec3) FAdd 583 587 - 590: 19(fvec3) Load 571(f) - 591: 19(fvec3) VectorTimesScalar 590 589 - 592: 103(ptr) AccessChain 99(params) 193 - 593: 16(float) Load 592 - 594: 19(fvec3) VectorTimesScalar 591 593 - 595: 103(ptr) AccessChain 99(params) 193 - 596: 16(float) Load 595 - 597: 19(fvec3) VectorTimesScalar 594 596 - 598: 19(fvec3) FAdd 588 597 - 599: 16(float) CompositeExtract 598 0 - 600: 16(float) CompositeExtract 598 1 - 601: 16(float) CompositeExtract 598 2 - 602: 69(fvec4) CompositeConstruct 599 600 601 198 - 603: 219(ptr) AccessChain 215 193 582 193 - Store 603 602 - 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 605 605 12 12 - 606: 7(int) Load 133(index) - 607: 19(fvec3) Load 259(vel) - 608: 19(fvec3) Load 571(f) - 609: 103(ptr) AccessChain 99(params) 193 - 610: 16(float) Load 609 - 611: 19(fvec3) VectorTimesScalar 608 610 - 612: 19(fvec3) FAdd 607 611 - 613: 16(float) CompositeExtract 612 0 - 614: 16(float) CompositeExtract 612 1 - 615: 16(float) CompositeExtract 612 2 - 616: 69(fvec4) CompositeConstruct 613 614 615 227 - 617: 219(ptr) AccessChain 215 193 606 226 - Store 617 616 - 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 619 619 12 12 - 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 621 620(sphereDist) 44 - 624: 7(int) Load 133(index) - 625: 219(ptr) AccessChain 215 193 624 193 - 626: 69(fvec4) Load 625 - 627: 19(fvec3) VectorShuffle 626 626 0 1 2 - 629: 219(ptr) AccessChain 99(params) 628 - 630: 69(fvec4) Load 629 - 631: 19(fvec3) VectorShuffle 630 630 0 1 2 - 632: 19(fvec3) FSub 627 631 - Store 620(sphereDist) 632 - 633: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 634 634 12 12 - 635: 19(fvec3) Load 620(sphereDist) - 636: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 635 - 638: 103(ptr) AccessChain 99(params) 637 - 639: 16(float) Load 638 - 641: 16(float) FAdd 639 640 - 643: 157(bool) FOrdLessThan 636 641 - SelectionMerge 645 None - BranchConditional 643 644 645 - 644: Label - 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 648 648 12 12 - 649: 7(int) Load 133(index) - 650: 219(ptr) AccessChain 99(params) 628 - 651: 69(fvec4) Load 650 - 652: 19(fvec3) VectorShuffle 651 651 0 1 2 - 653: 19(fvec3) Load 620(sphereDist) - 654: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 653 - 655: 103(ptr) AccessChain 99(params) 637 - 656: 16(float) Load 655 - 657: 16(float) FAdd 656 640 - 658: 19(fvec3) VectorTimesScalar 654 657 - 659: 19(fvec3) FAdd 652 658 - 660: 103(ptr) AccessChain 215 193 649 193 12 - 661: 16(float) CompositeExtract 659 0 - Store 660 661 - 662: 103(ptr) AccessChain 215 193 649 193 36 - 663: 16(float) CompositeExtract 659 1 - Store 662 663 - 664: 103(ptr) AccessChain 215 193 649 193 38 - 665: 16(float) CompositeExtract 659 2 - Store 664 665 - 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 667 667 12 12 - 668: 7(int) Load 133(index) - 669: 219(ptr) AccessChain 215 193 668 226 - Store 669 228 - Branch 645 - 645: Label - 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 671: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 672 672 12 12 - 684: 683(ptr) AccessChain 680(pushConsts) 193 - 685: 7(int) Load 684 - 687: 157(bool) IEqual 685 36 - SelectionMerge 689 None - BranchConditional 687 688 689 - 688: Label - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 692 692 12 12 - 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 694 693(normal) 44 - Store 693(normal) 696 - 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 698 698 12 12 - 699: 132(ptr) AccessChain 121(id) 36 - 700: 7(int) Load 699 - 702: 157(bool) UGreaterThan 700 12 - SelectionMerge 704 None - BranchConditional 702 703 704 - 703: Label - 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 707 707 12 12 - 708: 132(ptr) AccessChain 121(id) 12 - 709: 7(int) Load 708 - 711: 157(bool) UGreaterThan 709 12 - SelectionMerge 713 None - BranchConditional 711 712 713 - 712: Label - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 716 716 12 12 - 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 718 717(a) 44 - 721: 7(int) Load 133(index) + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 461 461 12 12 + 462: 132(ptr) AccessChain 121(id) 12 + 463: 7(int) Load 462 + 464: 140(ptr) AccessChain 99(params) 139 12 + 465: 71(int) Load 464 + 466: 71(int) ISub 465 225 + 467: 7(int) Bitcast 466 + 468: 157(bool) ULessThan 463 467 + SelectionMerge 470 None + BranchConditional 468 469 470 + 469: Label + 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 461 461 12 12 + 473: 132(ptr) AccessChain 121(id) 36 + 474: 7(int) Load 473 + 475: 140(ptr) AccessChain 99(params) 139 36 + 476: 71(int) Load 475 + 477: 71(int) ISub 476 225 + 478: 7(int) Bitcast 477 + 479: 157(bool) ULessThan 474 478 + Branch 470 + 470: Label + 480: 157(bool) Phi 468 437 479 469 + SelectionMerge 482 None + BranchConditional 480 481 482 + 481: Label + 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 485 485 12 12 + 486: 7(int) Load 133(index) + 487: 140(ptr) AccessChain 99(params) 139 12 + 488: 71(int) Load 487 + 489: 7(int) Bitcast 488 + 490: 7(int) IAdd 486 489 + 491: 7(int) IAdd 490 36 + 493: 218(ptr) AccessChain 191 193 491 193 + 494: 69(fvec4) Load 493 + 495: 19(fvec3) VectorShuffle 494 494 0 1 2 + Store 492(param) 495 + 497: 19(fvec3) Load 248(pos) + Store 496(param) 497 + 499: 103(ptr) AccessChain 99(params) 409 + 500: 16(float) Load 499 + Store 498(param) 500 + 501: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 492(param) 496(param) 498(param) + 502: 19(fvec3) Load 235(force) + 503: 19(fvec3) FAdd 502 501 + Store 235(force) 503 + Branch 482 + 482: Label + 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 506 506 12 12 + 507: 132(ptr) AccessChain 121(id) 12 + 508: 7(int) Load 507 + 509: 140(ptr) AccessChain 99(params) 139 12 + 510: 71(int) Load 509 + 511: 71(int) ISub 510 225 + 512: 7(int) Bitcast 511 + 513: 157(bool) ULessThan 508 512 + SelectionMerge 515 None + BranchConditional 513 514 515 + 514: Label + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 506 506 12 12 + 518: 132(ptr) AccessChain 121(id) 36 + 519: 7(int) Load 518 + 520: 157(bool) UGreaterThan 519 12 + Branch 515 + 515: Label + 521: 157(bool) Phi 513 482 520 514 + SelectionMerge 523 None + BranchConditional 521 522 523 + 522: Label + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 526 526 12 12 + 527: 7(int) Load 133(index) + 528: 140(ptr) AccessChain 99(params) 139 12 + 529: 71(int) Load 528 + 530: 7(int) Bitcast 529 + 531: 7(int) ISub 527 530 + 532: 7(int) IAdd 531 36 + 534: 218(ptr) AccessChain 191 193 532 193 + 535: 69(fvec4) Load 534 + 536: 19(fvec3) VectorShuffle 535 535 0 1 2 + Store 533(param) 536 + 538: 19(fvec3) Load 248(pos) + Store 537(param) 538 + 540: 103(ptr) AccessChain 99(params) 409 + 541: 16(float) Load 540 + Store 539(param) 541 + 542: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 533(param) 537(param) 539(param) + 543: 19(fvec3) Load 235(force) + 544: 19(fvec3) FAdd 543 542 + Store 235(force) 544 + Branch 523 + 523: Label + 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 547 547 12 12 + 549: 103(ptr) AccessChain 99(params) 548 + 550: 16(float) Load 549 + 551: 16(float) FNegate 550 + 552: 19(fvec3) Load 258(vel) + 553: 19(fvec3) VectorTimesScalar 552 551 + 554: 19(fvec3) Load 235(force) + 555: 19(fvec3) FAdd 554 553 + Store 235(force) 555 + 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 557 557 12 12 + 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 559 558(f) 44 + 562: 19(fvec3) Load 235(force) + 563: 103(ptr) AccessChain 99(params) 225 + 564: 16(float) Load 563 + 565: 16(float) FDiv 198 564 + 566: 19(fvec3) VectorTimesScalar 562 565 + Store 558(f) 566 + 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 568 568 12 12 + 569: 7(int) Load 133(index) + 570: 19(fvec3) Load 248(pos) + 571: 19(fvec3) Load 258(vel) + 572: 103(ptr) AccessChain 99(params) 193 + 573: 16(float) Load 572 + 574: 19(fvec3) VectorTimesScalar 571 573 + 575: 19(fvec3) FAdd 570 574 + 577: 19(fvec3) Load 558(f) + 578: 19(fvec3) VectorTimesScalar 577 576 + 579: 103(ptr) AccessChain 99(params) 193 + 580: 16(float) Load 579 + 581: 19(fvec3) VectorTimesScalar 578 580 + 582: 103(ptr) AccessChain 99(params) 193 + 583: 16(float) Load 582 + 584: 19(fvec3) VectorTimesScalar 581 583 + 585: 19(fvec3) FAdd 575 584 + 586: 16(float) CompositeExtract 585 0 + 587: 16(float) CompositeExtract 585 1 + 588: 16(float) CompositeExtract 585 2 + 589: 69(fvec4) CompositeConstruct 586 587 588 198 + 590: 218(ptr) AccessChain 214 193 569 193 + Store 590 589 + 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 592 592 12 12 + 593: 7(int) Load 133(index) + 594: 19(fvec3) Load 258(vel) + 595: 19(fvec3) Load 558(f) + 596: 103(ptr) AccessChain 99(params) 193 + 597: 16(float) Load 596 + 598: 19(fvec3) VectorTimesScalar 595 597 + 599: 19(fvec3) FAdd 594 598 + 600: 16(float) CompositeExtract 599 0 + 601: 16(float) CompositeExtract 599 1 + 602: 16(float) CompositeExtract 599 2 + 603: 69(fvec4) CompositeConstruct 600 601 602 226 + 604: 218(ptr) AccessChain 214 193 593 225 + Store 604 603 + 605: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 606 606 12 12 + 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 608 607(sphereDist) 44 + 611: 7(int) Load 133(index) + 612: 218(ptr) AccessChain 214 193 611 193 + 613: 69(fvec4) Load 612 + 614: 19(fvec3) VectorShuffle 613 613 0 1 2 + 616: 218(ptr) AccessChain 99(params) 615 + 617: 69(fvec4) Load 616 + 618: 19(fvec3) VectorShuffle 617 617 0 1 2 + 619: 19(fvec3) FSub 614 618 + Store 607(sphereDist) 619 + 620: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 621 621 12 12 + 622: 19(fvec3) Load 607(sphereDist) + 623: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 622 + 625: 103(ptr) AccessChain 99(params) 624 + 626: 16(float) Load 625 + 628: 16(float) FAdd 626 627 + 629: 157(bool) FOrdLessThan 623 628 + SelectionMerge 631 None + BranchConditional 629 630 631 + 630: Label + 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 633: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 634 634 12 12 + 635: 7(int) Load 133(index) + 636: 218(ptr) AccessChain 99(params) 615 + 637: 69(fvec4) Load 636 + 638: 19(fvec3) VectorShuffle 637 637 0 1 2 + 639: 19(fvec3) Load 607(sphereDist) + 640: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 639 + 641: 103(ptr) AccessChain 99(params) 624 + 642: 16(float) Load 641 + 643: 16(float) FAdd 642 627 + 644: 19(fvec3) VectorTimesScalar 640 643 + 645: 19(fvec3) FAdd 638 644 + 646: 103(ptr) AccessChain 214 193 635 193 12 + 647: 16(float) CompositeExtract 645 0 + Store 646 647 + 648: 103(ptr) AccessChain 214 193 635 193 36 + 649: 16(float) CompositeExtract 645 1 + Store 648 649 + 650: 103(ptr) AccessChain 214 193 635 193 38 + 651: 16(float) CompositeExtract 645 2 + Store 650 651 + 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 653 653 12 12 + 654: 7(int) Load 133(index) + 655: 218(ptr) AccessChain 214 193 654 225 + Store 655 227 + Branch 631 + 631: Label + 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 657: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 658 658 12 12 + 670: 669(ptr) AccessChain 666(pushConsts) 193 + 671: 7(int) Load 670 + 672: 157(bool) IEqual 671 36 + SelectionMerge 674 None + BranchConditional 672 673 674 + 673: Label + 675: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 677 677 12 12 + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 679 678(normal) 44 + Store 678(normal) 681 + 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 683 683 12 12 + 684: 132(ptr) AccessChain 121(id) 36 + 685: 7(int) Load 684 + 686: 157(bool) UGreaterThan 685 12 + SelectionMerge 688 None + BranchConditional 686 687 688 + 687: Label + 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 691 691 12 12 + 692: 132(ptr) AccessChain 121(id) 12 + 693: 7(int) Load 692 + 694: 157(bool) UGreaterThan 693 12 + SelectionMerge 696 None + BranchConditional 694 695 696 + 695: Label + 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 699 699 12 12 + 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 701 700(a) 44 + 704: 7(int) Load 133(index) + 705: 7(int) ISub 704 36 + 706: 218(ptr) AccessChain 191 193 705 193 + 707: 69(fvec4) Load 706 + 708: 19(fvec3) VectorShuffle 707 707 0 1 2 + 709: 19(fvec3) Load 248(pos) + 710: 19(fvec3) FSub 708 709 + Store 700(a) 710 + 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 712 712 12 12 + 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 714 713(b) 44 + 717: 7(int) Load 133(index) + 718: 140(ptr) AccessChain 99(params) 139 12 + 719: 71(int) Load 718 + 720: 7(int) Bitcast 719 + 721: 7(int) ISub 717 720 722: 7(int) ISub 721 36 - 723: 219(ptr) AccessChain 191 193 722 193 + 723: 218(ptr) AccessChain 191 193 722 193 724: 69(fvec4) Load 723 725: 19(fvec3) VectorShuffle 724 724 0 1 2 - 726: 19(fvec3) Load 249(pos) + 726: 19(fvec3) Load 248(pos) 727: 19(fvec3) FSub 725 726 - Store 717(a) 727 + Store 713(b) 727 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 729 729 12 12 - 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 731 730(b) 44 + 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 731 730(c) 44 734: 7(int) Load 133(index) 735: 140(ptr) AccessChain 99(params) 139 12 736: 71(int) Load 735 737: 7(int) Bitcast 736 738: 7(int) ISub 734 737 - 739: 7(int) ISub 738 36 - 740: 219(ptr) AccessChain 191 193 739 193 - 741: 69(fvec4) Load 740 - 742: 19(fvec3) VectorShuffle 741 741 0 1 2 - 743: 19(fvec3) Load 249(pos) - 744: 19(fvec3) FSub 742 743 - Store 730(b) 744 - 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 746 746 12 12 - 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 748 747(c) 44 - 751: 7(int) Load 133(index) - 752: 140(ptr) AccessChain 99(params) 139 12 - 753: 71(int) Load 752 - 754: 7(int) Bitcast 753 - 755: 7(int) ISub 751 754 - 756: 219(ptr) AccessChain 191 193 755 193 - 757: 69(fvec4) Load 756 - 758: 19(fvec3) VectorShuffle 757 757 0 1 2 - 759: 19(fvec3) Load 249(pos) - 760: 19(fvec3) FSub 758 759 - Store 747(c) 760 - 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 762 762 12 12 - 763: 19(fvec3) Load 717(a) - 764: 19(fvec3) Load 730(b) - 765: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 763 764 - 766: 19(fvec3) Load 730(b) - 767: 19(fvec3) Load 747(c) - 768: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 766 767 - 769: 19(fvec3) FAdd 765 768 - 770: 19(fvec3) Load 693(normal) - 771: 19(fvec3) FAdd 770 769 - Store 693(normal) 771 - Branch 713 - 713: Label - 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 774 774 12 12 - 775: 132(ptr) AccessChain 121(id) 12 - 776: 7(int) Load 775 - 777: 140(ptr) AccessChain 99(params) 139 12 - 778: 71(int) Load 777 - 779: 71(int) ISub 778 226 - 780: 7(int) Bitcast 779 - 782: 157(bool) ULessThan 776 780 - SelectionMerge 784 None - BranchConditional 782 783 784 - 783: Label - 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 787 787 12 12 - 788: 7(int) Load 133(index) - 789: 140(ptr) AccessChain 99(params) 139 12 - 790: 71(int) Load 789 - 791: 7(int) Bitcast 790 - 792: 7(int) ISub 788 791 - 793: 219(ptr) AccessChain 191 193 792 193 - 794: 69(fvec4) Load 793 - 795: 19(fvec3) VectorShuffle 794 794 0 1 2 - 796: 19(fvec3) Load 249(pos) - 797: 19(fvec3) FSub 795 796 - Store 717(a) 797 - 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 799 799 12 12 - 800: 7(int) Load 133(index) - 801: 140(ptr) AccessChain 99(params) 139 12 - 802: 71(int) Load 801 - 803: 7(int) Bitcast 802 - 804: 7(int) ISub 800 803 - 805: 7(int) IAdd 804 36 - 806: 219(ptr) AccessChain 191 193 805 193 - 807: 69(fvec4) Load 806 - 808: 19(fvec3) VectorShuffle 807 807 0 1 2 - 809: 19(fvec3) Load 249(pos) - 810: 19(fvec3) FSub 808 809 - Store 730(b) 810 - 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 812 812 12 12 - 813: 7(int) Load 133(index) - 814: 7(int) IAdd 813 36 - 815: 219(ptr) AccessChain 191 193 814 193 - 816: 69(fvec4) Load 815 - 817: 19(fvec3) VectorShuffle 816 816 0 1 2 - 818: 19(fvec3) Load 249(pos) - 819: 19(fvec3) FSub 817 818 - Store 747(c) 819 - 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 821 821 12 12 - 822: 19(fvec3) Load 717(a) - 823: 19(fvec3) Load 730(b) - 824: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 822 823 - 825: 19(fvec3) Load 730(b) - 826: 19(fvec3) Load 747(c) - 827: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 825 826 - 828: 19(fvec3) FAdd 824 827 - 829: 19(fvec3) Load 693(normal) - 830: 19(fvec3) FAdd 829 828 - Store 693(normal) 830 - Branch 784 - 784: Label - Branch 704 - 704: Label - 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 832: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 833 833 12 12 - 834: 132(ptr) AccessChain 121(id) 36 - 835: 7(int) Load 834 - 836: 140(ptr) AccessChain 99(params) 139 36 - 837: 71(int) Load 836 - 838: 71(int) ISub 837 226 - 839: 7(int) Bitcast 838 - 841: 157(bool) ULessThan 835 839 - SelectionMerge 843 None - BranchConditional 841 842 843 - 842: Label - 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 846 846 12 12 - 847: 132(ptr) AccessChain 121(id) 12 - 848: 7(int) Load 847 - 850: 157(bool) UGreaterThan 848 12 - SelectionMerge 852 None - BranchConditional 850 851 852 - 851: Label - 853: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 855 855 12 12 - 856: 7(int) Load 133(index) - 857: 140(ptr) AccessChain 99(params) 139 12 - 858: 71(int) Load 857 - 859: 7(int) Bitcast 858 - 860: 7(int) IAdd 856 859 - 861: 219(ptr) AccessChain 191 193 860 193 - 862: 69(fvec4) Load 861 - 863: 19(fvec3) VectorShuffle 862 862 0 1 2 - 864: 19(fvec3) Load 249(pos) - 865: 19(fvec3) FSub 863 864 - Store 717(a) 865 - 866: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 867 867 12 12 - 868: 7(int) Load 133(index) - 869: 140(ptr) AccessChain 99(params) 139 12 - 870: 71(int) Load 869 - 871: 7(int) Bitcast 870 - 872: 7(int) IAdd 868 871 - 873: 7(int) ISub 872 36 - 874: 219(ptr) AccessChain 191 193 873 193 - 875: 69(fvec4) Load 874 - 876: 19(fvec3) VectorShuffle 875 875 0 1 2 - 877: 19(fvec3) Load 249(pos) - 878: 19(fvec3) FSub 876 877 - Store 730(b) 878 - 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 880 880 12 12 - 881: 7(int) Load 133(index) - 882: 7(int) ISub 881 36 - 883: 219(ptr) AccessChain 191 193 882 193 - 884: 69(fvec4) Load 883 - 885: 19(fvec3) VectorShuffle 884 884 0 1 2 - 886: 19(fvec3) Load 249(pos) - 887: 19(fvec3) FSub 885 886 - Store 747(c) 887 - 888: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 889 889 12 12 - 890: 19(fvec3) Load 717(a) - 891: 19(fvec3) Load 730(b) - 892: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 890 891 - 893: 19(fvec3) Load 730(b) - 894: 19(fvec3) Load 747(c) - 895: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 893 894 - 896: 19(fvec3) FAdd 892 895 - 897: 19(fvec3) Load 693(normal) - 898: 19(fvec3) FAdd 897 896 - Store 693(normal) 898 - Branch 852 - 852: Label - 899: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 900: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 901 901 12 12 - 902: 132(ptr) AccessChain 121(id) 12 - 903: 7(int) Load 902 - 904: 140(ptr) AccessChain 99(params) 139 12 - 905: 71(int) Load 904 - 906: 71(int) ISub 905 226 - 907: 7(int) Bitcast 906 - 909: 157(bool) ULessThan 903 907 - SelectionMerge 911 None - BranchConditional 909 910 911 - 910: Label - 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 913: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 914 914 12 12 - 915: 7(int) Load 133(index) - 916: 7(int) IAdd 915 36 - 917: 219(ptr) AccessChain 191 193 916 193 - 918: 69(fvec4) Load 917 - 919: 19(fvec3) VectorShuffle 918 918 0 1 2 - 920: 19(fvec3) Load 249(pos) - 921: 19(fvec3) FSub 919 920 - Store 717(a) 921 - 922: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 923 923 12 12 - 924: 7(int) Load 133(index) - 925: 140(ptr) AccessChain 99(params) 139 12 - 926: 71(int) Load 925 - 927: 7(int) Bitcast 926 - 928: 7(int) IAdd 924 927 - 929: 7(int) IAdd 928 36 - 930: 219(ptr) AccessChain 191 193 929 193 - 931: 69(fvec4) Load 930 - 932: 19(fvec3) VectorShuffle 931 931 0 1 2 - 933: 19(fvec3) Load 249(pos) - 934: 19(fvec3) FSub 932 933 - Store 730(b) 934 - 935: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 936 936 12 12 - 937: 7(int) Load 133(index) - 938: 140(ptr) AccessChain 99(params) 139 12 - 939: 71(int) Load 938 - 940: 7(int) Bitcast 939 - 941: 7(int) IAdd 937 940 - 942: 219(ptr) AccessChain 191 193 941 193 - 943: 69(fvec4) Load 942 - 944: 19(fvec3) VectorShuffle 943 943 0 1 2 - 945: 19(fvec3) Load 249(pos) - 946: 19(fvec3) FSub 944 945 - Store 747(c) 946 - 947: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 948 948 12 12 - 949: 19(fvec3) Load 717(a) - 950: 19(fvec3) Load 730(b) - 951: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 949 950 - 952: 19(fvec3) Load 730(b) - 953: 19(fvec3) Load 747(c) - 954: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 952 953 - 955: 19(fvec3) FAdd 951 954 - 956: 19(fvec3) Load 693(normal) - 957: 19(fvec3) FAdd 956 955 - Store 693(normal) 957 - Branch 911 - 911: Label - Branch 843 - 843: Label - 958: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 959: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 960 960 12 12 - 961: 7(int) Load 133(index) - 962: 19(fvec3) Load 693(normal) - 963: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 962 - 964: 16(float) CompositeExtract 963 0 - 965: 16(float) CompositeExtract 963 1 - 966: 16(float) CompositeExtract 963 2 - 967: 69(fvec4) CompositeConstruct 964 965 966 227 - 968: 219(ptr) AccessChain 215 193 961 561 - Store 968 967 - Branch 689 - 689: Label + 739: 218(ptr) AccessChain 191 193 738 193 + 740: 69(fvec4) Load 739 + 741: 19(fvec3) VectorShuffle 740 740 0 1 2 + 742: 19(fvec3) Load 248(pos) + 743: 19(fvec3) FSub 741 742 + Store 730(c) 743 + 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 745 745 12 12 + 746: 19(fvec3) Load 700(a) + 747: 19(fvec3) Load 713(b) + 748: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 746 747 + 749: 19(fvec3) Load 713(b) + 750: 19(fvec3) Load 730(c) + 751: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 749 750 + 752: 19(fvec3) FAdd 748 751 + 753: 19(fvec3) Load 678(normal) + 754: 19(fvec3) FAdd 753 752 + Store 678(normal) 754 + Branch 696 + 696: Label + 755: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 756: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 757 757 12 12 + 758: 132(ptr) AccessChain 121(id) 12 + 759: 7(int) Load 758 + 760: 140(ptr) AccessChain 99(params) 139 12 + 761: 71(int) Load 760 + 762: 71(int) ISub 761 225 + 763: 7(int) Bitcast 762 + 764: 157(bool) ULessThan 759 763 + SelectionMerge 766 None + BranchConditional 764 765 766 + 765: Label + 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 769 769 12 12 + 770: 7(int) Load 133(index) + 771: 140(ptr) AccessChain 99(params) 139 12 + 772: 71(int) Load 771 + 773: 7(int) Bitcast 772 + 774: 7(int) ISub 770 773 + 775: 218(ptr) AccessChain 191 193 774 193 + 776: 69(fvec4) Load 775 + 777: 19(fvec3) VectorShuffle 776 776 0 1 2 + 778: 19(fvec3) Load 248(pos) + 779: 19(fvec3) FSub 777 778 + Store 700(a) 779 + 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 781 781 12 12 + 782: 7(int) Load 133(index) + 783: 140(ptr) AccessChain 99(params) 139 12 + 784: 71(int) Load 783 + 785: 7(int) Bitcast 784 + 786: 7(int) ISub 782 785 + 787: 7(int) IAdd 786 36 + 788: 218(ptr) AccessChain 191 193 787 193 + 789: 69(fvec4) Load 788 + 790: 19(fvec3) VectorShuffle 789 789 0 1 2 + 791: 19(fvec3) Load 248(pos) + 792: 19(fvec3) FSub 790 791 + Store 713(b) 792 + 793: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 794 794 12 12 + 795: 7(int) Load 133(index) + 796: 7(int) IAdd 795 36 + 797: 218(ptr) AccessChain 191 193 796 193 + 798: 69(fvec4) Load 797 + 799: 19(fvec3) VectorShuffle 798 798 0 1 2 + 800: 19(fvec3) Load 248(pos) + 801: 19(fvec3) FSub 799 800 + Store 730(c) 801 + 802: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 803 803 12 12 + 804: 19(fvec3) Load 700(a) + 805: 19(fvec3) Load 713(b) + 806: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 804 805 + 807: 19(fvec3) Load 713(b) + 808: 19(fvec3) Load 730(c) + 809: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 807 808 + 810: 19(fvec3) FAdd 806 809 + 811: 19(fvec3) Load 678(normal) + 812: 19(fvec3) FAdd 811 810 + Store 678(normal) 812 + Branch 766 + 766: Label + Branch 688 + 688: Label + 813: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 814: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 815 815 12 12 + 816: 132(ptr) AccessChain 121(id) 36 + 817: 7(int) Load 816 + 818: 140(ptr) AccessChain 99(params) 139 36 + 819: 71(int) Load 818 + 820: 71(int) ISub 819 225 + 821: 7(int) Bitcast 820 + 822: 157(bool) ULessThan 817 821 + SelectionMerge 824 None + BranchConditional 822 823 824 + 823: Label + 825: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 827 827 12 12 + 828: 132(ptr) AccessChain 121(id) 12 + 829: 7(int) Load 828 + 830: 157(bool) UGreaterThan 829 12 + SelectionMerge 832 None + BranchConditional 830 831 832 + 831: Label + 833: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 835 835 12 12 + 836: 7(int) Load 133(index) + 837: 140(ptr) AccessChain 99(params) 139 12 + 838: 71(int) Load 837 + 839: 7(int) Bitcast 838 + 840: 7(int) IAdd 836 839 + 841: 218(ptr) AccessChain 191 193 840 193 + 842: 69(fvec4) Load 841 + 843: 19(fvec3) VectorShuffle 842 842 0 1 2 + 844: 19(fvec3) Load 248(pos) + 845: 19(fvec3) FSub 843 844 + Store 700(a) 845 + 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 847 847 12 12 + 848: 7(int) Load 133(index) + 849: 140(ptr) AccessChain 99(params) 139 12 + 850: 71(int) Load 849 + 851: 7(int) Bitcast 850 + 852: 7(int) IAdd 848 851 + 853: 7(int) ISub 852 36 + 854: 218(ptr) AccessChain 191 193 853 193 + 855: 69(fvec4) Load 854 + 856: 19(fvec3) VectorShuffle 855 855 0 1 2 + 857: 19(fvec3) Load 248(pos) + 858: 19(fvec3) FSub 856 857 + Store 713(b) 858 + 859: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 860 860 12 12 + 861: 7(int) Load 133(index) + 862: 7(int) ISub 861 36 + 863: 218(ptr) AccessChain 191 193 862 193 + 864: 69(fvec4) Load 863 + 865: 19(fvec3) VectorShuffle 864 864 0 1 2 + 866: 19(fvec3) Load 248(pos) + 867: 19(fvec3) FSub 865 866 + Store 730(c) 867 + 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 869 869 12 12 + 870: 19(fvec3) Load 700(a) + 871: 19(fvec3) Load 713(b) + 872: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 870 871 + 873: 19(fvec3) Load 713(b) + 874: 19(fvec3) Load 730(c) + 875: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 873 874 + 876: 19(fvec3) FAdd 872 875 + 877: 19(fvec3) Load 678(normal) + 878: 19(fvec3) FAdd 877 876 + Store 678(normal) 878 + Branch 832 + 832: Label + 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 880: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 881 881 12 12 + 882: 132(ptr) AccessChain 121(id) 12 + 883: 7(int) Load 882 + 884: 140(ptr) AccessChain 99(params) 139 12 + 885: 71(int) Load 884 + 886: 71(int) ISub 885 225 + 887: 7(int) Bitcast 886 + 888: 157(bool) ULessThan 883 887 + SelectionMerge 890 None + BranchConditional 888 889 890 + 889: Label + 891: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 892: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 893 893 12 12 + 894: 7(int) Load 133(index) + 895: 7(int) IAdd 894 36 + 896: 218(ptr) AccessChain 191 193 895 193 + 897: 69(fvec4) Load 896 + 898: 19(fvec3) VectorShuffle 897 897 0 1 2 + 899: 19(fvec3) Load 248(pos) + 900: 19(fvec3) FSub 898 899 + Store 700(a) 900 + 901: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 902 902 12 12 + 903: 7(int) Load 133(index) + 904: 140(ptr) AccessChain 99(params) 139 12 + 905: 71(int) Load 904 + 906: 7(int) Bitcast 905 + 907: 7(int) IAdd 903 906 + 908: 7(int) IAdd 907 36 + 909: 218(ptr) AccessChain 191 193 908 193 + 910: 69(fvec4) Load 909 + 911: 19(fvec3) VectorShuffle 910 910 0 1 2 + 912: 19(fvec3) Load 248(pos) + 913: 19(fvec3) FSub 911 912 + Store 713(b) 913 + 914: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 915 915 12 12 + 916: 7(int) Load 133(index) + 917: 140(ptr) AccessChain 99(params) 139 12 + 918: 71(int) Load 917 + 919: 7(int) Bitcast 918 + 920: 7(int) IAdd 916 919 + 921: 218(ptr) AccessChain 191 193 920 193 + 922: 69(fvec4) Load 921 + 923: 19(fvec3) VectorShuffle 922 922 0 1 2 + 924: 19(fvec3) Load 248(pos) + 925: 19(fvec3) FSub 923 924 + Store 730(c) 925 + 926: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 927 927 12 12 + 928: 19(fvec3) Load 700(a) + 929: 19(fvec3) Load 713(b) + 930: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 928 929 + 931: 19(fvec3) Load 713(b) + 932: 19(fvec3) Load 730(c) + 933: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 931 932 + 934: 19(fvec3) FAdd 930 933 + 935: 19(fvec3) Load 678(normal) + 936: 19(fvec3) FAdd 935 934 + Store 678(normal) 936 + Branch 890 + 890: Label + Branch 824 + 824: Label + 937: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 + 938: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 939 939 12 12 + 940: 7(int) Load 133(index) + 941: 19(fvec3) Load 678(normal) + 942: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 941 + 943: 16(float) CompositeExtract 942 0 + 944: 16(float) CompositeExtract 942 1 + 945: 16(float) CompositeExtract 942 2 + 946: 69(fvec4) CompositeConstruct 943 944 945 226 + 947: 218(ptr) AccessChain 214 193 940 548 + Store 947 946 + Branch 674 + 674: Label Return FunctionEnd Line 1 66 50 diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 35dfd13e74..dda34650b4 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 863 +// Id's are bound by 854 Capability Shader Capability ImageQuery @@ -9,7 +9,7 @@ spv.debuginfo.glsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 14 "main" 482 537 + EntryPoint Fragment 14 "main" 476 530 ExecutionMode 14 OriginUpperLeft 1: String "" 8: String "uint" @@ -35,54 +35,54 @@ spv.debuginfo.glsl.frag 97: String "int" 102: String "global_var" 117: String "shadowCoord" - 142: String "bool" - 161: String "dist" - 165: String "type.2d.image" - 166: String "@type.2d.image" - 170: String "type.sampled.image" - 171: String "@type.sampled.image" - 175: String "samplerShadowMap" - 225: String "texDim" - 237: String "scale" - 244: String "dx" - 257: String "dy" - 269: String "shadowFactor" - 275: String "count" - 281: String "range" - 288: String "x" - 310: String "y" - 374: String "i" - 394: String "shadowClip" - 401: String "color" - 407: String "viewMatrix" - 410: String "Light" - 416: String "lights" - 419: String "debugDisplayTarget" - 423: String "UBO" - 427: String "ubo" - 470: String "fragPos" - 479: String "samplerposition" - 484: String "inUV" - 492: String "normal" - 496: String "samplerNormal" - 505: String "albedo" - 509: String "samplerAlbedo" - 539: String "outFragColor" - 631: String "N" - 657: String "L" - 681: String "V" - 696: String "lightCosInnerAngle" - 703: String "lightCosOuterAngle" - 710: String "lightRange" - 717: String "dir" - 733: String "cosDir" - 742: String "spotEffect" - 752: String "heightAttenuation" - 761: String "NdotL" - 771: String "diff" - 779: String "R" - 789: String "NdotR" - 799: String "spec" + 139: String "bool" + 160: String "dist" + 164: String "type.2d.image" + 165: String "@type.2d.image" + 169: String "type.sampled.image" + 170: String "@type.sampled.image" + 174: String "samplerShadowMap" + 222: String "texDim" + 234: String "scale" + 241: String "dx" + 254: String "dy" + 266: String "shadowFactor" + 272: String "count" + 278: String "range" + 285: String "x" + 306: String "y" + 369: String "i" + 388: String "shadowClip" + 395: String "color" + 401: String "viewMatrix" + 404: String "Light" + 410: String "lights" + 413: String "debugDisplayTarget" + 417: String "UBO" + 421: String "ubo" + 464: String "fragPos" + 473: String "samplerposition" + 478: String "inUV" + 486: String "normal" + 490: String "samplerNormal" + 499: String "albedo" + 503: String "samplerAlbedo" + 532: String "outFragColor" + 624: String "N" + 649: String "L" + 673: String "V" + 688: String "lightCosInnerAngle" + 695: String "lightCosOuterAngle" + 702: String "lightRange" + 709: String "dir" + 725: String "cosDir" + 734: String "spotEffect" + 744: String "heightAttenuation" + 753: String "NdotL" + 763: String "diff" + 771: String "R" + 781: String "NdotR" + 791: String "spec" Name 14 "main" Name 33 "textureProj(vf4;f1;vf2;" Name 30 "P" @@ -97,90 +97,90 @@ spv.debuginfo.glsl.frag Name 100 "global_var" Name 109 "shadow" Name 115 "shadowCoord" - Name 159 "dist" - Name 173 "samplerShadowMap" - Name 223 "texDim" - Name 235 "scale" - Name 242 "dx" - Name 255 "dy" - Name 267 "shadowFactor" - Name 273 "count" - Name 279 "range" - Name 286 "x" - Name 308 "y" - Name 339 "param" - Name 341 "param" - Name 343 "param" - Name 372 "i" - Name 392 "shadowClip" - Name 399 "Light" - MemberName 399(Light) 0 "position" - MemberName 399(Light) 1 "target" - MemberName 399(Light) 2 "color" - MemberName 399(Light) 3 "viewMatrix" - Name 413 "UBO" - MemberName 413(UBO) 0 "viewPos" - MemberName 413(UBO) 1 "lights" - MemberName 413(UBO) 2 "useShadows" - MemberName 413(UBO) 3 "debugDisplayTarget" - Name 425 "ubo" - Name 440 "shadowFactor" - Name 445 "param" - Name 447 "param" - Name 468 "fragPos" - Name 477 "samplerposition" - Name 482 "inUV" - Name 490 "normal" - Name 494 "samplerNormal" - Name 503 "albedo" - Name 507 "samplerAlbedo" - Name 537 "outFragColor" - Name 541 "param" - Name 542 "param" - Name 620 "fragcolor" - Name 629 "N" - Name 637 "i" - Name 655 "L" - Name 668 "dist" - Name 679 "V" - Name 694 "lightCosInnerAngle" - Name 701 "lightCosOuterAngle" - Name 708 "lightRange" - Name 715 "dir" - Name 731 "cosDir" - Name 740 "spotEffect" - Name 750 "heightAttenuation" - Name 759 "NdotL" - Name 769 "diff" - Name 777 "R" - Name 787 "NdotR" - Name 797 "spec" - Name 850 "param" - Name 852 "param" - Decorate 173(samplerShadowMap) DescriptorSet 0 - Decorate 173(samplerShadowMap) Binding 5 - MemberDecorate 399(Light) 0 Offset 0 - MemberDecorate 399(Light) 1 Offset 16 - MemberDecorate 399(Light) 2 Offset 32 - MemberDecorate 399(Light) 3 ColMajor - MemberDecorate 399(Light) 3 Offset 48 - MemberDecorate 399(Light) 3 MatrixStride 16 - Decorate 411 ArrayStride 112 - MemberDecorate 413(UBO) 0 Offset 0 - MemberDecorate 413(UBO) 1 Offset 16 - MemberDecorate 413(UBO) 2 Offset 352 - MemberDecorate 413(UBO) 3 Offset 356 - Decorate 413(UBO) Block - Decorate 425(ubo) DescriptorSet 0 - Decorate 425(ubo) Binding 4 - Decorate 477(samplerposition) DescriptorSet 0 - Decorate 477(samplerposition) Binding 1 - Decorate 482(inUV) Location 0 - Decorate 494(samplerNormal) DescriptorSet 0 - Decorate 494(samplerNormal) Binding 2 - Decorate 507(samplerAlbedo) DescriptorSet 0 - Decorate 507(samplerAlbedo) Binding 3 - Decorate 537(outFragColor) Location 0 + Name 158 "dist" + Name 172 "samplerShadowMap" + Name 220 "texDim" + Name 232 "scale" + Name 239 "dx" + Name 252 "dy" + Name 264 "shadowFactor" + Name 270 "count" + Name 276 "range" + Name 283 "x" + Name 304 "y" + Name 334 "param" + Name 336 "param" + Name 338 "param" + Name 367 "i" + Name 386 "shadowClip" + Name 393 "Light" + MemberName 393(Light) 0 "position" + MemberName 393(Light) 1 "target" + MemberName 393(Light) 2 "color" + MemberName 393(Light) 3 "viewMatrix" + Name 407 "UBO" + MemberName 407(UBO) 0 "viewPos" + MemberName 407(UBO) 1 "lights" + MemberName 407(UBO) 2 "useShadows" + MemberName 407(UBO) 3 "debugDisplayTarget" + Name 419 "ubo" + Name 434 "shadowFactor" + Name 439 "param" + Name 441 "param" + Name 462 "fragPos" + Name 471 "samplerposition" + Name 476 "inUV" + Name 484 "normal" + Name 488 "samplerNormal" + Name 497 "albedo" + Name 501 "samplerAlbedo" + Name 530 "outFragColor" + Name 534 "param" + Name 535 "param" + Name 613 "fragcolor" + Name 622 "N" + Name 630 "i" + Name 647 "L" + Name 660 "dist" + Name 671 "V" + Name 686 "lightCosInnerAngle" + Name 693 "lightCosOuterAngle" + Name 700 "lightRange" + Name 707 "dir" + Name 723 "cosDir" + Name 732 "spotEffect" + Name 742 "heightAttenuation" + Name 751 "NdotL" + Name 761 "diff" + Name 769 "R" + Name 779 "NdotR" + Name 789 "spec" + Name 841 "param" + Name 843 "param" + Decorate 172(samplerShadowMap) DescriptorSet 0 + Decorate 172(samplerShadowMap) Binding 5 + MemberDecorate 393(Light) 0 Offset 0 + MemberDecorate 393(Light) 1 Offset 16 + MemberDecorate 393(Light) 2 Offset 32 + MemberDecorate 393(Light) 3 ColMajor + MemberDecorate 393(Light) 3 Offset 48 + MemberDecorate 393(Light) 3 MatrixStride 16 + Decorate 405 ArrayStride 112 + MemberDecorate 407(UBO) 0 Offset 0 + MemberDecorate 407(UBO) 1 Offset 16 + MemberDecorate 407(UBO) 2 Offset 352 + MemberDecorate 407(UBO) 3 Offset 356 + Decorate 407(UBO) Block + Decorate 419(ubo) DescriptorSet 0 + Decorate 419(ubo) Binding 4 + Decorate 471(samplerposition) DescriptorSet 0 + Decorate 471(samplerposition) Binding 1 + Decorate 476(inUV) Location 0 + Decorate 488(samplerNormal) DescriptorSet 0 + Decorate 488(samplerNormal) Binding 2 + Decorate 501(samplerAlbedo) DescriptorSet 0 + Decorate 501(samplerAlbedo) Binding 3 + Decorate 530(outFragColor) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -246,539 +246,530 @@ spv.debuginfo.glsl.frag 128: 16(float) Constant 1056964608 137: 7(int) Constant 65 138: TypeBool - 141: 16(float) Constant 3212836864 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 158: 7(int) Constant 67 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 37 158 12 36 20 - 163: TypeImage 16(float) 2D array sampled format:Unknown - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 12 37 158 12 40 166 167 13 - 168: TypeSampledImage 163 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 37 158 12 40 171 167 13 - 172: TypePointer UniformConstant 168 -173(samplerShadowMap): 172(ptr) Variable UniformConstant - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 175 169 37 158 12 40 175 173(samplerShadowMap) 103 - 188: 7(int) Constant 68 - 191: 16(float) Constant 0 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 208: 7(int) Constant 70 - 209: 16(float) Constant 1048576000 - 212: 7(int) Constant 73 - 219: 7(int) Constant 78 - 220: TypeVector 96(int) 2 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 25 - 222: TypePointer Function 220(ivec2) - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 221 37 219 12 61 20 - 229: TypeVector 96(int) 3 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 13 - 234: 7(int) Constant 79 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 18 37 234 12 61 20 - 239: 16(float) Constant 1069547520 - 241: 7(int) Constant 80 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 18 37 241 12 61 20 - 248: TypePointer Function 96(int) - 254: 7(int) Constant 81 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 257 18 37 254 12 61 20 - 266: 7(int) Constant 83 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 18 37 266 12 61 20 - 272: 7(int) Constant 84 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 98 37 272 12 61 20 - 278: 7(int) Constant 85 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 281 98 37 278 12 61 20 - 283: 96(int) Constant 1 - 285: 7(int) Constant 87 - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 288 98 37 285 12 61 20 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 307: 7(int) Constant 89 - 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 310 98 37 307 12 61 20 - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 329: 7(int) Constant 91 - 348: 7(int) Constant 92 - 361: 7(int) Constant 96 - 371: 7(int) Constant 100 - 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 374 98 37 371 12 80 20 - 386: 96(int) Constant 3 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 391: 7(int) Constant 102 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 394 21 37 391 12 80 20 - 396: TypeMatrix 19(fvec4) 4 - 398: 138(bool) ConstantTrue - 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 398 - 399(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 396 - 402: 7(int) Constant 47 - 403: 7(int) Constant 7 - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 - 408: 7(int) Constant 48 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 397 37 408 403 12 12 13 - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 410 41 37 391 12 40 410 12 13 400 404 405 406 - 411: TypeArray 399(Light) 13 - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 409 13 - 413(UBO): TypeStruct 19(fvec4) 411 96(int) 96(int) - 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 21 37 402 403 12 12 13 - 417: 7(int) Constant 54 - 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 416 412 37 417 103 12 12 13 - 420: 7(int) Constant 56 - 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 419 98 37 420 11 12 12 13 - 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 419 98 37 420 11 12 12 13 - 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 423 41 37 391 12 40 423 12 13 414 415 418 421 - 424: TypePointer Uniform 413(UBO) - 425(ubo): 424(ptr) Variable Uniform - 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 427 422 37 391 12 40 427 425(ubo) 103 - 429: TypePointer Uniform 396 - 439: 7(int) Constant 106 - 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 18 37 439 12 80 20 - 450: 7(int) Constant 111 - 460: 7(int) Constant 113 - 467: 7(int) Constant 119 - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 470 71 37 467 12 91 20 - 472: TypeImage 16(float) 2D sampled format:Unknown - 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 165 12 37 467 12 40 166 167 13 - 474: TypeSampledImage 472 - 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 37 467 12 40 171 167 13 - 476: TypePointer UniformConstant 474 -477(samplerposition): 476(ptr) Variable UniformConstant - 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 479 475 37 467 12 40 479 477(samplerposition) 103 - 481: TypePointer Input 24(fvec2) - 482(inUV): 481(ptr) Variable Input - 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 484 26 37 467 12 40 484 482(inUV) 103 - 489: 7(int) Constant 120 - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 492 71 37 489 12 91 20 -494(samplerNormal): 476(ptr) Variable UniformConstant - 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 496 475 37 489 12 40 496 494(samplerNormal) 103 - 502: 7(int) Constant 121 - 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 505 21 37 502 12 91 20 -507(samplerAlbedo): 476(ptr) Variable UniformConstant - 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 509 475 37 502 12 40 509 507(samplerAlbedo) 103 - 514: 7(int) Constant 124 - 515: TypePointer Uniform 96(int) - 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 524: 7(int) Constant 125 - 535: 7(int) Constant 127 - 536: TypePointer Output 19(fvec4) -537(outFragColor): 536(ptr) Variable Output - 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 539 21 37 535 12 40 539 537(outFragColor) 103 - 540: 70(fvec3) ConstantComposite 112 112 112 - 545: TypePointer Output 16(float) - 553: 7(int) Constant 128 - 557: 7(int) Constant 130 - 566: 7(int) Constant 131 - 570: 7(int) Constant 133 - 579: 7(int) Constant 134 - 583: 7(int) Constant 136 - 593: 7(int) Constant 137 - 597: 7(int) Constant 139 - 607: 7(int) Constant 140 - 612: 7(int) Constant 142 - 615: 7(int) Constant 143 - 619: 7(int) Constant 147 - 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 37 619 12 91 20 - 625: 16(float) Constant 1036831949 - 628: 7(int) Constant 149 - 630: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 631 71 37 628 12 91 20 - 636: 7(int) Constant 151 - 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 374 98 37 636 12 91 20 - 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 654: 7(int) Constant 154 - 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 657 71 37 654 12 91 20 - 660: TypePointer Uniform 19(fvec4) - 667: 7(int) Constant 156 - 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 37 667 12 91 20 - 674: 7(int) Constant 157 - 678: 7(int) Constant 160 - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 681 71 37 678 12 91 20 - 689: 7(int) Constant 161 - 693: 7(int) Constant 163 - 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 696 18 37 693 12 91 20 - 698: 16(float) Constant 1064781546 - 700: 7(int) Constant 164 - 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 703 18 37 700 12 91 20 - 705: 16(float) Constant 1063781322 - 707: 7(int) Constant 165 - 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 710 18 37 707 12 91 20 - 712: 16(float) Constant 1120403456 - 714: 7(int) Constant 168 - 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 717 71 37 714 12 91 20 - 730: 7(int) Constant 171 - 732: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 733 18 37 730 12 91 20 - 739: 7(int) Constant 172 - 741: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 742 18 37 739 12 91 20 - 749: 7(int) Constant 173 - 751: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 752 18 37 749 12 91 20 - 758: 7(int) Constant 176 - 760: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 761 18 37 758 12 91 20 - 768: 7(int) Constant 177 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 10 25 12 + 143: 16(float) Constant 3212836864 + 157: 7(int) Constant 67 + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 18 37 157 12 36 20 + 162: TypeImage 16(float) 2D array sampled format:Unknown + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 164 12 37 157 12 40 165 166 13 + 167: TypeSampledImage 162 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 37 157 12 40 170 166 13 + 171: TypePointer UniformConstant 167 +172(samplerShadowMap): 171(ptr) Variable UniformConstant + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 174 168 37 157 12 40 174 172(samplerShadowMap) 103 + 187: 7(int) Constant 68 + 190: 16(float) Constant 0 + 205: 7(int) Constant 70 + 206: 16(float) Constant 1048576000 + 209: 7(int) Constant 73 + 216: 7(int) Constant 78 + 217: TypeVector 96(int) 2 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 25 + 219: TypePointer Function 217(ivec2) + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 222 218 37 216 12 61 20 + 226: TypeVector 96(int) 3 + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 13 + 231: 7(int) Constant 79 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 18 37 231 12 61 20 + 236: 16(float) Constant 1069547520 + 238: 7(int) Constant 80 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 241 18 37 238 12 61 20 + 245: TypePointer Function 96(int) + 251: 7(int) Constant 81 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 18 37 251 12 61 20 + 263: 7(int) Constant 83 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 18 37 263 12 61 20 + 269: 7(int) Constant 84 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 98 37 269 12 61 20 + 275: 7(int) Constant 85 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 98 37 275 12 61 20 + 280: 96(int) Constant 1 + 282: 7(int) Constant 87 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 285 98 37 282 12 61 20 + 303: 7(int) Constant 89 + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 306 98 37 303 12 61 20 + 324: 7(int) Constant 91 + 343: 7(int) Constant 92 + 356: 7(int) Constant 96 + 366: 7(int) Constant 100 + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 369 98 37 366 12 80 20 + 381: 96(int) Constant 3 + 385: 7(int) Constant 102 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 388 21 37 385 12 80 20 + 390: TypeMatrix 19(fvec4) 4 + 392: 138(bool) ConstantTrue + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 392 + 393(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 390 + 396: 7(int) Constant 47 + 397: 7(int) Constant 7 + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 + 402: 7(int) Constant 48 + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 391 37 402 397 12 12 13 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 404 41 37 385 12 40 404 12 13 394 398 399 400 + 405: TypeArray 393(Light) 13 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 403 13 + 407(UBO): TypeStruct 19(fvec4) 405 96(int) 96(int) + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 + 411: 7(int) Constant 54 + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 410 406 37 411 103 12 12 13 + 414: 7(int) Constant 56 + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 413 98 37 414 11 12 12 13 + 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 413 98 37 414 11 12 12 13 + 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 417 41 37 385 12 40 417 12 13 408 409 412 415 + 418: TypePointer Uniform 407(UBO) + 419(ubo): 418(ptr) Variable Uniform + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 421 416 37 385 12 40 421 419(ubo) 103 + 423: TypePointer Uniform 390 + 433: 7(int) Constant 106 + 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 18 37 433 12 80 20 + 444: 7(int) Constant 111 + 454: 7(int) Constant 113 + 461: 7(int) Constant 119 + 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 464 71 37 461 12 91 20 + 466: TypeImage 16(float) 2D sampled format:Unknown + 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 164 12 37 461 12 40 165 166 13 + 468: TypeSampledImage 466 + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 37 461 12 40 170 166 13 + 470: TypePointer UniformConstant 468 +471(samplerposition): 470(ptr) Variable UniformConstant + 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 473 469 37 461 12 40 473 471(samplerposition) 103 + 475: TypePointer Input 24(fvec2) + 476(inUV): 475(ptr) Variable Input + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 478 26 37 461 12 40 478 476(inUV) 103 + 483: 7(int) Constant 120 + 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 486 71 37 483 12 91 20 +488(samplerNormal): 470(ptr) Variable UniformConstant + 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 490 469 37 483 12 40 490 488(samplerNormal) 103 + 496: 7(int) Constant 121 + 498: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 499 21 37 496 12 91 20 +501(samplerAlbedo): 470(ptr) Variable UniformConstant + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 503 469 37 496 12 40 503 501(samplerAlbedo) 103 + 508: 7(int) Constant 124 + 509: TypePointer Uniform 96(int) + 517: 7(int) Constant 125 + 528: 7(int) Constant 127 + 529: TypePointer Output 19(fvec4) +530(outFragColor): 529(ptr) Variable Output + 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 532 21 37 528 12 40 532 530(outFragColor) 103 + 533: 70(fvec3) ConstantComposite 112 112 112 + 538: TypePointer Output 16(float) + 546: 7(int) Constant 128 + 550: 7(int) Constant 130 + 559: 7(int) Constant 131 + 563: 7(int) Constant 133 + 572: 7(int) Constant 134 + 576: 7(int) Constant 136 + 586: 7(int) Constant 137 + 590: 7(int) Constant 139 + 600: 7(int) Constant 140 + 605: 7(int) Constant 142 + 608: 7(int) Constant 143 + 612: 7(int) Constant 147 + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 37 612 12 91 20 + 618: 16(float) Constant 1036831949 + 621: 7(int) Constant 149 + 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 624 71 37 621 12 91 20 + 629: 7(int) Constant 151 + 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 369 98 37 629 12 91 20 + 646: 7(int) Constant 154 + 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 649 71 37 646 12 91 20 + 652: TypePointer Uniform 19(fvec4) + 659: 7(int) Constant 156 + 661: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 18 37 659 12 91 20 + 666: 7(int) Constant 157 + 670: 7(int) Constant 160 + 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 673 71 37 670 12 91 20 + 681: 7(int) Constant 161 + 685: 7(int) Constant 163 + 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 688 18 37 685 12 91 20 + 690: 16(float) Constant 1064781546 + 692: 7(int) Constant 164 + 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 695 18 37 692 12 91 20 + 697: 16(float) Constant 1063781322 + 699: 7(int) Constant 165 + 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 702 18 37 699 12 91 20 + 704: 16(float) Constant 1120403456 + 706: 7(int) Constant 168 + 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 709 71 37 706 12 91 20 + 722: 7(int) Constant 171 + 724: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 18 37 722 12 91 20 + 731: 7(int) Constant 172 + 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 18 37 731 12 91 20 + 741: 7(int) Constant 173 + 743: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 744 18 37 741 12 91 20 + 750: 7(int) Constant 176 + 752: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 753 18 37 750 12 91 20 + 760: 7(int) Constant 177 + 762: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 763 71 37 760 12 91 20 + 768: 7(int) Constant 180 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 771 71 37 768 12 91 20 - 776: 7(int) Constant 180 - 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 779 71 37 776 12 91 20 - 786: 7(int) Constant 181 - 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 789 18 37 786 12 91 20 - 796: 7(int) Constant 182 - 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 799 71 37 796 12 91 20 - 802: 16(float) Constant 1098907648 - 807: 16(float) Constant 1075838976 - 811: 7(int) Constant 184 - 824: 96(int) Constant 2 - 840: 7(int) Constant 188 - 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 25 12 - 849: 7(int) Constant 190 - 857: 7(int) Constant 193 + 778: 7(int) Constant 181 + 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 781 18 37 778 12 91 20 + 788: 7(int) Constant 182 + 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 791 71 37 788 12 91 20 + 794: 16(float) Constant 1098907648 + 799: 16(float) Constant 1075838976 + 803: 7(int) Constant 184 + 816: 96(int) Constant 2 + 832: 7(int) Constant 188 + 840: 7(int) Constant 190 + 848: 7(int) Constant 193 Line 1 116 11 14(main): 4 Function None 5 15: Label - 468(fragPos): 72(ptr) Variable Function - 490(normal): 72(ptr) Variable Function - 503(albedo): 22(ptr) Variable Function - 541(param): 72(ptr) Variable Function - 542(param): 72(ptr) Variable Function - 620(fragcolor): 72(ptr) Variable Function - 629(N): 72(ptr) Variable Function - 637(i): 248(ptr) Variable Function - 655(L): 72(ptr) Variable Function - 668(dist): 23(ptr) Variable Function - 679(V): 72(ptr) Variable Function -694(lightCosInnerAngle): 23(ptr) Variable Function -701(lightCosOuterAngle): 23(ptr) Variable Function - 708(lightRange): 23(ptr) Variable Function - 715(dir): 72(ptr) Variable Function - 731(cosDir): 23(ptr) Variable Function - 740(spotEffect): 23(ptr) Variable Function -750(heightAttenuation): 23(ptr) Variable Function - 759(NdotL): 23(ptr) Variable Function - 769(diff): 72(ptr) Variable Function - 777(R): 72(ptr) Variable Function - 787(NdotR): 23(ptr) Variable Function - 797(spec): 72(ptr) Variable Function - 850(param): 72(ptr) Variable Function - 852(param): 72(ptr) Variable Function + 462(fragPos): 72(ptr) Variable Function + 484(normal): 72(ptr) Variable Function + 497(albedo): 22(ptr) Variable Function + 534(param): 72(ptr) Variable Function + 535(param): 72(ptr) Variable Function + 613(fragcolor): 72(ptr) Variable Function + 622(N): 72(ptr) Variable Function + 630(i): 245(ptr) Variable Function + 647(L): 72(ptr) Variable Function + 660(dist): 23(ptr) Variable Function + 671(V): 72(ptr) Variable Function +686(lightCosInnerAngle): 23(ptr) Variable Function +693(lightCosOuterAngle): 23(ptr) Variable Function + 700(lightRange): 23(ptr) Variable Function + 707(dir): 72(ptr) Variable Function + 723(cosDir): 23(ptr) Variable Function + 732(spotEffect): 23(ptr) Variable Function +742(heightAttenuation): 23(ptr) Variable Function + 751(NdotL): 23(ptr) Variable Function + 761(diff): 72(ptr) Variable Function + 769(R): 72(ptr) Variable Function + 779(NdotR): 23(ptr) Variable Function + 789(spec): 72(ptr) Variable Function + 841(param): 72(ptr) Variable Function + 843(param): 72(ptr) Variable Function 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 95 95 12 12 Store 100(global_var) 104 - 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 14(main) - 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 466: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 467 467 12 12 - 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 469 468(fragPos) 47 - 480: 474 Load 477(samplerposition) - 485: 24(fvec2) Load 482(inUV) - 486: 19(fvec4) ImageSampleImplicitLod 480 485 - 487: 70(fvec3) VectorShuffle 486 486 0 1 2 - Store 468(fragPos) 487 - 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 489 489 12 12 - 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 491 490(normal) 47 - 497: 474 Load 494(samplerNormal) - 498: 24(fvec2) Load 482(inUV) - 499: 19(fvec4) ImageSampleImplicitLod 497 498 - 500: 70(fvec3) VectorShuffle 499 499 0 1 2 - Store 490(normal) 500 - 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 502 502 12 12 - 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 504 503(albedo) 47 - 510: 474 Load 507(samplerAlbedo) - 511: 24(fvec2) Load 482(inUV) - 512: 19(fvec4) ImageSampleImplicitLod 510 511 - Store 503(albedo) 512 - 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 514 514 12 12 - 516: 515(ptr) AccessChain 425(ubo) 386 - 517: 96(int) Load 516 - 519: 138(bool) SGreaterThan 517 104 - SelectionMerge 521 None - BranchConditional 519 520 521 - 520: Label - 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 524 524 12 12 - 525: 515(ptr) AccessChain 425(ubo) 386 - 526: 96(int) Load 525 - SelectionMerge 532 None - Switch 526 532 - case 1: 527 - case 2: 528 - case 3: 529 - case 4: 530 - case 5: 531 - 527: Label - 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 535 535 12 12 - Store 541(param) 540 - 543: 70(fvec3) Load 468(fragPos) - Store 542(param) 543 - 544: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 541(param) 542(param) - 546: 545(ptr) AccessChain 537(outFragColor) 12 - 547: 16(float) CompositeExtract 544 0 - Store 546 547 - 548: 545(ptr) AccessChain 537(outFragColor) 41 - 549: 16(float) CompositeExtract 544 1 - Store 548 549 - 550: 545(ptr) AccessChain 537(outFragColor) 25 - 551: 16(float) CompositeExtract 544 2 - Store 550 551 - 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 553 553 12 12 - Branch 532 - 528: Label - 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 557 557 12 12 - 558: 70(fvec3) Load 468(fragPos) - 559: 545(ptr) AccessChain 537(outFragColor) 12 - 560: 16(float) CompositeExtract 558 0 - Store 559 560 - 561: 545(ptr) AccessChain 537(outFragColor) 41 - 562: 16(float) CompositeExtract 558 1 - Store 561 562 - 563: 545(ptr) AccessChain 537(outFragColor) 25 - 564: 16(float) CompositeExtract 558 2 - Store 563 564 - 565: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 566 566 12 12 - Branch 532 - 529: Label - 568: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 569: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 570 570 12 12 - 571: 70(fvec3) Load 490(normal) - 572: 545(ptr) AccessChain 537(outFragColor) 12 - 573: 16(float) CompositeExtract 571 0 - Store 572 573 - 574: 545(ptr) AccessChain 537(outFragColor) 41 - 575: 16(float) CompositeExtract 571 1 - Store 574 575 - 576: 545(ptr) AccessChain 537(outFragColor) 25 - 577: 16(float) CompositeExtract 571 2 - Store 576 577 - 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 579 579 12 12 - Branch 532 - 530: Label - 581: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 583 583 12 12 - 584: 19(fvec4) Load 503(albedo) - 585: 70(fvec3) VectorShuffle 584 584 0 1 2 - 586: 545(ptr) AccessChain 537(outFragColor) 12 - 587: 16(float) CompositeExtract 585 0 - Store 586 587 - 588: 545(ptr) AccessChain 537(outFragColor) 41 - 589: 16(float) CompositeExtract 585 1 - Store 588 589 - 590: 545(ptr) AccessChain 537(outFragColor) 25 - 591: 16(float) CompositeExtract 585 2 - Store 590 591 - 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 593 593 12 12 - Branch 532 - 531: Label - 595: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 596: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 597 597 12 12 - 598: 19(fvec4) Load 503(albedo) - 599: 70(fvec3) VectorShuffle 598 598 3 3 3 - 600: 545(ptr) AccessChain 537(outFragColor) 12 - 601: 16(float) CompositeExtract 599 0 - Store 600 601 - 602: 545(ptr) AccessChain 537(outFragColor) 41 - 603: 16(float) CompositeExtract 599 1 - Store 602 603 - 604: 545(ptr) AccessChain 537(outFragColor) 25 - 605: 16(float) CompositeExtract 599 2 - Store 604 605 - 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 607 607 12 12 - Branch 532 - 532: Label - 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 612 612 12 12 - 613: 545(ptr) AccessChain 537(outFragColor) 13 - Store 613 112 - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 615 615 12 12 + 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 14(main) + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 461 461 12 12 + 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 463 462(fragPos) 47 + 474: 468 Load 471(samplerposition) + 479: 24(fvec2) Load 476(inUV) + 480: 19(fvec4) ImageSampleImplicitLod 474 479 + 481: 70(fvec3) VectorShuffle 480 480 0 1 2 + Store 462(fragPos) 481 + 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 483 483 12 12 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 485 484(normal) 47 + 491: 468 Load 488(samplerNormal) + 492: 24(fvec2) Load 476(inUV) + 493: 19(fvec4) ImageSampleImplicitLod 491 492 + 494: 70(fvec3) VectorShuffle 493 493 0 1 2 + Store 484(normal) 494 + 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 496 496 12 12 + 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 498 497(albedo) 47 + 504: 468 Load 501(samplerAlbedo) + 505: 24(fvec2) Load 476(inUV) + 506: 19(fvec4) ImageSampleImplicitLod 504 505 + Store 497(albedo) 506 + 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 508 508 12 12 + 510: 509(ptr) AccessChain 419(ubo) 381 + 511: 96(int) Load 510 + 512: 138(bool) SGreaterThan 511 104 + SelectionMerge 514 None + BranchConditional 512 513 514 + 513: Label + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 517 517 12 12 + 518: 509(ptr) AccessChain 419(ubo) 381 + 519: 96(int) Load 518 + SelectionMerge 525 None + Switch 519 525 + case 1: 520 + case 2: 521 + case 3: 522 + case 4: 523 + case 5: 524 + 520: Label + 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 528 528 12 12 + Store 534(param) 533 + 536: 70(fvec3) Load 462(fragPos) + Store 535(param) 536 + 537: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 534(param) 535(param) + 539: 538(ptr) AccessChain 530(outFragColor) 12 + 540: 16(float) CompositeExtract 537 0 + Store 539 540 + 541: 538(ptr) AccessChain 530(outFragColor) 41 + 542: 16(float) CompositeExtract 537 1 + Store 541 542 + 543: 538(ptr) AccessChain 530(outFragColor) 25 + 544: 16(float) CompositeExtract 537 2 + Store 543 544 + 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 546 546 12 12 + Branch 525 + 521: Label + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 550 550 12 12 + 551: 70(fvec3) Load 462(fragPos) + 552: 538(ptr) AccessChain 530(outFragColor) 12 + 553: 16(float) CompositeExtract 551 0 + Store 552 553 + 554: 538(ptr) AccessChain 530(outFragColor) 41 + 555: 16(float) CompositeExtract 551 1 + Store 554 555 + 556: 538(ptr) AccessChain 530(outFragColor) 25 + 557: 16(float) CompositeExtract 551 2 + Store 556 557 + 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 559 559 12 12 + Branch 525 + 522: Label + 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 563 563 12 12 + 564: 70(fvec3) Load 484(normal) + 565: 538(ptr) AccessChain 530(outFragColor) 12 + 566: 16(float) CompositeExtract 564 0 + Store 565 566 + 567: 538(ptr) AccessChain 530(outFragColor) 41 + 568: 16(float) CompositeExtract 564 1 + Store 567 568 + 569: 538(ptr) AccessChain 530(outFragColor) 25 + 570: 16(float) CompositeExtract 564 2 + Store 569 570 + 571: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 572 572 12 12 + Branch 525 + 523: Label + 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 575: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 576 576 12 12 + 577: 19(fvec4) Load 497(albedo) + 578: 70(fvec3) VectorShuffle 577 577 0 1 2 + 579: 538(ptr) AccessChain 530(outFragColor) 12 + 580: 16(float) CompositeExtract 578 0 + Store 579 580 + 581: 538(ptr) AccessChain 530(outFragColor) 41 + 582: 16(float) CompositeExtract 578 1 + Store 581 582 + 583: 538(ptr) AccessChain 530(outFragColor) 25 + 584: 16(float) CompositeExtract 578 2 + Store 583 584 + 585: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 586 586 12 12 + Branch 525 + 524: Label + 588: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 589: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 590 590 12 12 + 591: 19(fvec4) Load 497(albedo) + 592: 70(fvec3) VectorShuffle 591 591 3 3 3 + 593: 538(ptr) AccessChain 530(outFragColor) 12 + 594: 16(float) CompositeExtract 592 0 + Store 593 594 + 595: 538(ptr) AccessChain 530(outFragColor) 41 + 596: 16(float) CompositeExtract 592 1 + Store 595 596 + 597: 538(ptr) AccessChain 530(outFragColor) 25 + 598: 16(float) CompositeExtract 592 2 + Store 597 598 + 599: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 600 600 12 12 + Branch 525 + 525: Label + 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 605 605 12 12 + 606: 538(ptr) AccessChain 530(outFragColor) 13 + Store 606 112 + 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 608 608 12 12 Return - 521: Label - 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 619 619 12 12 - 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 621 620(fragcolor) 47 - 623: 19(fvec4) Load 503(albedo) - 624: 70(fvec3) VectorShuffle 623 623 0 1 2 - 626: 70(fvec3) VectorTimesScalar 624 625 - Store 620(fragcolor) 626 - 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 628 628 12 12 - 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 630 629(N) 47 - 633: 70(fvec3) Load 490(normal) - 634: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 633 - Store 629(N) 634 - 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 - 639: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 638 637(i) 47 - Store 637(i) 104 - Branch 640 - 640: Label - 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 645: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 - LoopMerge 642 643 None - Branch 646 - 646: Label - 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 - 649: 96(int) Load 637(i) - 651: 138(bool) SLessThan 649 386 - BranchConditional 651 641 642 - 641: Label - 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 653: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 654 654 12 12 - 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 656 655(L) 47 - 659: 96(int) Load 637(i) - 661: 660(ptr) AccessChain 425(ubo) 283 659 104 - 662: 19(fvec4) Load 661 - 663: 70(fvec3) VectorShuffle 662 662 0 1 2 - 664: 70(fvec3) Load 468(fragPos) - 665: 70(fvec3) FSub 663 664 - Store 655(L) 665 - 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 667 667 12 12 - 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 669 668(dist) 47 - 671: 70(fvec3) Load 655(L) - 672: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 671 - Store 668(dist) 672 - 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 674 674 12 12 - 675: 70(fvec3) Load 655(L) - 676: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 675 - Store 655(L) 676 - 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 678 678 12 12 - 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 680 679(V) 47 - 683: 660(ptr) AccessChain 425(ubo) 104 - 684: 19(fvec4) Load 683 - 685: 70(fvec3) VectorShuffle 684 684 0 1 2 - 686: 70(fvec3) Load 468(fragPos) - 687: 70(fvec3) FSub 685 686 - Store 679(V) 687 - 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 689 689 12 12 - 690: 70(fvec3) Load 679(V) - 691: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 690 - Store 679(V) 691 - 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 693 693 12 12 - 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 695 694(lightCosInnerAngle) 47 - Store 694(lightCosInnerAngle) 698 - 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 700 700 12 12 - 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 702 701(lightCosOuterAngle) 47 - Store 701(lightCosOuterAngle) 705 - 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 707 707 12 12 - 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 709 708(lightRange) 47 - Store 708(lightRange) 712 - 713: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 714 714 12 12 - 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 716 715(dir) 47 - 719: 96(int) Load 637(i) - 720: 660(ptr) AccessChain 425(ubo) 283 719 104 - 721: 19(fvec4) Load 720 - 722: 70(fvec3) VectorShuffle 721 721 0 1 2 - 723: 96(int) Load 637(i) - 724: 660(ptr) AccessChain 425(ubo) 283 723 283 - 725: 19(fvec4) Load 724 - 726: 70(fvec3) VectorShuffle 725 725 0 1 2 - 727: 70(fvec3) FSub 722 726 - 728: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 727 - Store 715(dir) 728 - 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 730 730 12 12 - 734: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 732 731(cosDir) 47 - 735: 70(fvec3) Load 655(L) - 736: 70(fvec3) Load 715(dir) - 737: 16(float) Dot 735 736 - Store 731(cosDir) 737 - 738: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 739 739 12 12 - 743: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 741 740(spotEffect) 47 - 744: 16(float) Load 701(lightCosOuterAngle) - 745: 16(float) Load 694(lightCosInnerAngle) - 746: 16(float) Load 731(cosDir) - 747: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 744 745 746 - Store 740(spotEffect) 747 - 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 749 749 12 12 - 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 751 750(heightAttenuation) 47 - 754: 16(float) Load 708(lightRange) - 755: 16(float) Load 668(dist) - 756: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 754 191 755 - Store 750(heightAttenuation) 756 - 757: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 758 758 12 12 - 762: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 760 759(NdotL) 47 - 763: 70(fvec3) Load 629(N) - 764: 70(fvec3) Load 655(L) - 765: 16(float) Dot 763 764 - 766: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 191 765 - Store 759(NdotL) 766 + 514: Label + 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 612 612 12 12 + 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 614 613(fragcolor) 47 + 616: 19(fvec4) Load 497(albedo) + 617: 70(fvec3) VectorShuffle 616 616 0 1 2 + 619: 70(fvec3) VectorTimesScalar 617 618 + Store 613(fragcolor) 619 + 620: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 621 621 12 12 + 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 623 622(N) 47 + 626: 70(fvec3) Load 484(normal) + 627: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 626 + Store 622(N) 627 + 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 + 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 631 630(i) 47 + Store 630(i) 104 + Branch 633 + 633: Label + 637: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 + LoopMerge 635 636 None + Branch 639 + 639: Label + 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 + 642: 96(int) Load 630(i) + 643: 138(bool) SLessThan 642 381 + BranchConditional 643 634 635 + 634: Label + 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 645: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 646 646 12 12 + 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 648 647(L) 47 + 651: 96(int) Load 630(i) + 653: 652(ptr) AccessChain 419(ubo) 280 651 104 + 654: 19(fvec4) Load 653 + 655: 70(fvec3) VectorShuffle 654 654 0 1 2 + 656: 70(fvec3) Load 462(fragPos) + 657: 70(fvec3) FSub 655 656 + Store 647(L) 657 + 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 659 659 12 12 + 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 661 660(dist) 47 + 663: 70(fvec3) Load 647(L) + 664: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 663 + Store 660(dist) 664 + 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 666 666 12 12 + 667: 70(fvec3) Load 647(L) + 668: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 667 + Store 647(L) 668 + 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 670 670 12 12 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 672 671(V) 47 + 675: 652(ptr) AccessChain 419(ubo) 104 + 676: 19(fvec4) Load 675 + 677: 70(fvec3) VectorShuffle 676 676 0 1 2 + 678: 70(fvec3) Load 462(fragPos) + 679: 70(fvec3) FSub 677 678 + Store 671(V) 679 + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 681 681 12 12 + 682: 70(fvec3) Load 671(V) + 683: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 682 + Store 671(V) 683 + 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 685 685 12 12 + 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 687 686(lightCosInnerAngle) 47 + Store 686(lightCosInnerAngle) 690 + 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 692 692 12 12 + 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 694 693(lightCosOuterAngle) 47 + Store 693(lightCosOuterAngle) 697 + 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 699 699 12 12 + 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 701 700(lightRange) 47 + Store 700(lightRange) 704 + 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 706 706 12 12 + 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 708 707(dir) 47 + 711: 96(int) Load 630(i) + 712: 652(ptr) AccessChain 419(ubo) 280 711 104 + 713: 19(fvec4) Load 712 + 714: 70(fvec3) VectorShuffle 713 713 0 1 2 + 715: 96(int) Load 630(i) + 716: 652(ptr) AccessChain 419(ubo) 280 715 280 + 717: 19(fvec4) Load 716 + 718: 70(fvec3) VectorShuffle 717 717 0 1 2 + 719: 70(fvec3) FSub 714 718 + 720: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 719 + Store 707(dir) 720 + 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 722 722 12 12 + 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(cosDir) 47 + 727: 70(fvec3) Load 647(L) + 728: 70(fvec3) Load 707(dir) + 729: 16(float) Dot 727 728 + Store 723(cosDir) 729 + 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 731 731 12 12 + 735: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(spotEffect) 47 + 736: 16(float) Load 693(lightCosOuterAngle) + 737: 16(float) Load 686(lightCosInnerAngle) + 738: 16(float) Load 723(cosDir) + 739: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 736 737 738 + Store 732(spotEffect) 739 + 740: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 741 741 12 12 + 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 743 742(heightAttenuation) 47 + 746: 16(float) Load 700(lightRange) + 747: 16(float) Load 660(dist) + 748: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 746 190 747 + Store 742(heightAttenuation) 748 + 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 750 750 12 12 + 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 752 751(NdotL) 47 + 755: 70(fvec3) Load 622(N) + 756: 70(fvec3) Load 647(L) + 757: 16(float) Dot 755 756 + 758: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 190 757 + Store 751(NdotL) 758 + 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 760 760 12 12 + 764: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 762 761(diff) 47 + 765: 16(float) Load 751(NdotL) + 766: 70(fvec3) CompositeConstruct 765 765 765 + Store 761(diff) 766 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 768 768 12 12 - 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 770 769(diff) 47 - 773: 16(float) Load 759(NdotL) - 774: 70(fvec3) CompositeConstruct 773 773 773 - Store 769(diff) 774 - 775: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 776 776 12 12 - 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 778 777(R) 47 - 781: 70(fvec3) Load 655(L) - 782: 70(fvec3) FNegate 781 - 783: 70(fvec3) Load 629(N) - 784: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 782 783 - Store 777(R) 784 - 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 786 786 12 12 - 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 788 787(NdotR) 47 - 791: 70(fvec3) Load 777(R) - 792: 70(fvec3) Load 679(V) - 793: 16(float) Dot 791 792 - 794: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 191 793 - Store 787(NdotR) 794 - 795: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 796 796 12 12 - 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 798 797(spec) 47 - 801: 16(float) Load 787(NdotR) - 803: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 801 802 - 804: 23(ptr) AccessChain 503(albedo) 13 - 805: 16(float) Load 804 - 806: 16(float) FMul 803 805 - 808: 16(float) FMul 806 807 - 809: 70(fvec3) CompositeConstruct 808 808 808 - Store 797(spec) 809 - 810: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 811 811 12 12 - 812: 70(fvec3) Load 769(diff) - 813: 70(fvec3) Load 797(spec) - 814: 70(fvec3) FAdd 812 813 - 815: 16(float) Load 740(spotEffect) - 816: 70(fvec3) VectorTimesScalar 814 815 - 817: 16(float) Load 750(heightAttenuation) - 818: 70(fvec3) VectorTimesScalar 816 817 - 819: 16(float) CompositeExtract 818 0 - 820: 16(float) CompositeExtract 818 1 - 821: 16(float) CompositeExtract 818 2 - 822: 70(fvec3) CompositeConstruct 819 820 821 - 823: 96(int) Load 637(i) - 825: 660(ptr) AccessChain 425(ubo) 283 823 824 - 826: 19(fvec4) Load 825 - 827: 70(fvec3) VectorShuffle 826 826 0 1 2 - 828: 70(fvec3) FMul 822 827 - 829: 19(fvec4) Load 503(albedo) - 830: 70(fvec3) VectorShuffle 829 829 0 1 2 - 831: 70(fvec3) FMul 828 830 - 832: 70(fvec3) Load 620(fragcolor) - 833: 70(fvec3) FAdd 832 831 - Store 620(fragcolor) 833 - Branch 643 - 643: Label - 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 835: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 636 636 12 12 - 836: 96(int) Load 637(i) - 837: 96(int) IAdd 836 283 - Store 637(i) 837 - Branch 640 - 642: Label - 838: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 840 840 12 12 - 841: 515(ptr) AccessChain 425(ubo) 824 - 842: 96(int) Load 841 - 844: 138(bool) SGreaterThan 842 104 - SelectionMerge 846 None - BranchConditional 844 845 846 - 845: Label - 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 848: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 849 849 12 12 - 851: 70(fvec3) Load 620(fragcolor) - Store 850(param) 851 - 853: 70(fvec3) Load 468(fragPos) - Store 852(param) 853 - 854: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 850(param) 852(param) - Store 620(fragcolor) 854 - Branch 846 - 846: Label - 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 856: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 857 857 12 12 - 858: 70(fvec3) Load 620(fragcolor) - 859: 16(float) CompositeExtract 858 0 - 860: 16(float) CompositeExtract 858 1 - 861: 16(float) CompositeExtract 858 2 - 862: 19(fvec4) CompositeConstruct 859 860 861 112 - Store 537(outFragColor) 862 + 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 770 769(R) 47 + 773: 70(fvec3) Load 647(L) + 774: 70(fvec3) FNegate 773 + 775: 70(fvec3) Load 622(N) + 776: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 774 775 + Store 769(R) 776 + 777: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 778 778 12 12 + 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 780 779(NdotR) 47 + 783: 70(fvec3) Load 769(R) + 784: 70(fvec3) Load 671(V) + 785: 16(float) Dot 783 784 + 786: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 190 785 + Store 779(NdotR) 786 + 787: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 788 788 12 12 + 792: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 790 789(spec) 47 + 793: 16(float) Load 779(NdotR) + 795: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 793 794 + 796: 23(ptr) AccessChain 497(albedo) 13 + 797: 16(float) Load 796 + 798: 16(float) FMul 795 797 + 800: 16(float) FMul 798 799 + 801: 70(fvec3) CompositeConstruct 800 800 800 + Store 789(spec) 801 + 802: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 803 803 12 12 + 804: 70(fvec3) Load 761(diff) + 805: 70(fvec3) Load 789(spec) + 806: 70(fvec3) FAdd 804 805 + 807: 16(float) Load 732(spotEffect) + 808: 70(fvec3) VectorTimesScalar 806 807 + 809: 16(float) Load 742(heightAttenuation) + 810: 70(fvec3) VectorTimesScalar 808 809 + 811: 16(float) CompositeExtract 810 0 + 812: 16(float) CompositeExtract 810 1 + 813: 16(float) CompositeExtract 810 2 + 814: 70(fvec3) CompositeConstruct 811 812 813 + 815: 96(int) Load 630(i) + 817: 652(ptr) AccessChain 419(ubo) 280 815 816 + 818: 19(fvec4) Load 817 + 819: 70(fvec3) VectorShuffle 818 818 0 1 2 + 820: 70(fvec3) FMul 814 819 + 821: 19(fvec4) Load 497(albedo) + 822: 70(fvec3) VectorShuffle 821 821 0 1 2 + 823: 70(fvec3) FMul 820 822 + 824: 70(fvec3) Load 613(fragcolor) + 825: 70(fvec3) FAdd 824 823 + Store 613(fragcolor) 825 + Branch 636 + 636: Label + 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 827: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 + 828: 96(int) Load 630(i) + 829: 96(int) IAdd 828 280 + Store 630(i) 829 + Branch 633 + 635: Label + 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 832 832 12 12 + 833: 509(ptr) AccessChain 419(ubo) 816 + 834: 96(int) Load 833 + 835: 138(bool) SGreaterThan 834 104 + SelectionMerge 837 None + BranchConditional 835 836 837 + 836: Label + 838: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 840 840 12 12 + 842: 70(fvec3) Load 613(fragcolor) + Store 841(param) 842 + 844: 70(fvec3) Load 462(fragPos) + Store 843(param) 844 + 845: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 841(param) 843(param) + Store 613(fragcolor) 845 + Branch 837 + 837: Label + 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 848 848 12 12 + 849: 70(fvec3) Load 613(fragcolor) + 850: 16(float) CompositeExtract 849 0 + 851: 16(float) CompositeExtract 849 1 + 852: 16(float) CompositeExtract 849 2 + 853: 19(fvec4) CompositeConstruct 850 851 852 112 + Store 530(outFragColor) 853 Return FunctionEnd Line 1 59 51 @@ -789,7 +780,7 @@ spv.debuginfo.glsl.frag 34: Label 109(shadow): 23(ptr) Variable Function 115(shadowCoord): 22(ptr) Variable Function - 159(dist): 23(ptr) Variable Function + 158(dist): 23(ptr) Variable Function 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 30(P) 47 @@ -821,9 +812,9 @@ spv.debuginfo.glsl.frag 135: 16(float) CompositeExtract 131 1 Store 134 135 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 137 137 12 12 - 139: 23(ptr) AccessChain 115(shadowCoord) 25 - 140: 16(float) Load 139 - 144: 138(bool) FOrdGreaterThan 140 141 + 141: 23(ptr) AccessChain 115(shadowCoord) 25 + 142: 16(float) Load 141 + 144: 138(bool) FOrdGreaterThan 142 143 SelectionMerge 146 None BranchConditional 144 145 146 145: Label @@ -831,278 +822,278 @@ spv.debuginfo.glsl.frag 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 137 137 12 12 149: 23(ptr) AccessChain 115(shadowCoord) 25 150: 16(float) Load 149 - 152: 138(bool) FOrdLessThan 150 112 + 151: 138(bool) FOrdLessThan 150 112 Branch 146 146: Label - 153: 138(bool) Phi 144 34 152 145 - SelectionMerge 155 None - BranchConditional 153 154 155 - 154: Label - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 158 158 12 12 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(dist) 47 - 176: 168 Load 173(samplerShadowMap) - 177: 19(fvec4) Load 115(shadowCoord) - 178: 24(fvec2) VectorShuffle 177 177 0 1 - 179: 24(fvec2) Load 32(offset) - 180: 24(fvec2) FAdd 178 179 - 181: 16(float) Load 31(layer) - 182: 16(float) CompositeExtract 180 0 - 183: 16(float) CompositeExtract 180 1 - 184: 70(fvec3) CompositeConstruct 182 183 181 - 185: 19(fvec4) ImageSampleImplicitLod 176 184 - 186: 16(float) CompositeExtract 185 0 - Store 159(dist) 186 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 188 188 12 12 - 189: 23(ptr) AccessChain 115(shadowCoord) 13 - 190: 16(float) Load 189 - 193: 138(bool) FOrdGreaterThan 190 191 - SelectionMerge 195 None - BranchConditional 193 194 195 - 194: Label - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 188 188 12 12 - 198: 16(float) Load 159(dist) - 199: 23(ptr) AccessChain 115(shadowCoord) 25 - 200: 16(float) Load 199 - 202: 138(bool) FOrdLessThan 198 200 - Branch 195 - 195: Label - 203: 138(bool) Phi 193 154 202 194 - SelectionMerge 205 None - BranchConditional 203 204 205 - 204: Label - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 208 208 12 12 - Store 109(shadow) 209 - Branch 205 - 205: Label - Branch 155 - 155: Label - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 212 212 12 12 - 213: 16(float) Load 109(shadow) - ReturnValue 213 + 152: 138(bool) Phi 144 34 151 145 + SelectionMerge 154 None + BranchConditional 152 153 154 + 153: Label + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 157 157 12 12 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(dist) 47 + 175: 167 Load 172(samplerShadowMap) + 176: 19(fvec4) Load 115(shadowCoord) + 177: 24(fvec2) VectorShuffle 176 176 0 1 + 178: 24(fvec2) Load 32(offset) + 179: 24(fvec2) FAdd 177 178 + 180: 16(float) Load 31(layer) + 181: 16(float) CompositeExtract 179 0 + 182: 16(float) CompositeExtract 179 1 + 183: 70(fvec3) CompositeConstruct 181 182 180 + 184: 19(fvec4) ImageSampleImplicitLod 175 183 + 185: 16(float) CompositeExtract 184 0 + Store 158(dist) 185 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 187 187 12 12 + 188: 23(ptr) AccessChain 115(shadowCoord) 13 + 189: 16(float) Load 188 + 191: 138(bool) FOrdGreaterThan 189 190 + SelectionMerge 193 None + BranchConditional 191 192 193 + 192: Label + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 187 187 12 12 + 196: 16(float) Load 158(dist) + 197: 23(ptr) AccessChain 115(shadowCoord) 25 + 198: 16(float) Load 197 + 199: 138(bool) FOrdLessThan 196 198 + Branch 193 + 193: Label + 200: 138(bool) Phi 191 153 199 192 + SelectionMerge 202 None + BranchConditional 200 201 202 + 201: Label + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 205 205 12 12 + Store 109(shadow) 206 + Branch 202 + 202: Label + Branch 154 + 154: Label + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 209 209 12 12 + 210: 16(float) Load 109(shadow) + ReturnValue 210 FunctionEnd Line 1 76 37 58(filterPCF(vf4;f1;): 16(float) Function None 54 56(sc): 22(ptr) FunctionParameter 57(layer): 23(ptr) FunctionParameter 59: Label - 223(texDim): 222(ptr) Variable Function - 235(scale): 23(ptr) Variable Function - 242(dx): 23(ptr) Variable Function - 255(dy): 23(ptr) Variable Function -267(shadowFactor): 23(ptr) Variable Function - 273(count): 248(ptr) Variable Function - 279(range): 248(ptr) Variable Function - 286(x): 248(ptr) Variable Function - 308(y): 248(ptr) Variable Function - 339(param): 22(ptr) Variable Function - 341(param): 23(ptr) Variable Function - 343(param): 27(ptr) Variable Function + 220(texDim): 219(ptr) Variable Function + 232(scale): 23(ptr) Variable Function + 239(dx): 23(ptr) Variable Function + 252(dy): 23(ptr) Variable Function +264(shadowFactor): 23(ptr) Variable Function + 270(count): 245(ptr) Variable Function + 276(range): 245(ptr) Variable Function + 283(x): 245(ptr) Variable Function + 304(y): 245(ptr) Variable Function + 334(param): 22(ptr) Variable Function + 336(param): 23(ptr) Variable Function + 338(param): 27(ptr) Variable Function 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 62 62 12 12 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 56(sc) 47 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 57(layer) 47 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 219 219 12 12 - 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(texDim) 47 - 227: 168 Load 173(samplerShadowMap) - 228: 163 Image 227 - 231: 229(ivec3) ImageQuerySizeLod 228 104 - 232: 220(ivec2) VectorShuffle 231 231 0 1 - Store 223(texDim) 232 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 234 234 12 12 - 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(scale) 47 - Store 235(scale) 239 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 241 241 12 12 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(dx) 47 - 246: 16(float) Load 235(scale) - 247: 16(float) FMul 246 112 - 249: 248(ptr) AccessChain 223(texDim) 12 - 250: 96(int) Load 249 - 251: 16(float) ConvertSToF 250 - 252: 16(float) FDiv 247 251 - Store 242(dx) 252 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 254 254 12 12 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 256 255(dy) 47 - 259: 16(float) Load 235(scale) - 260: 16(float) FMul 259 112 - 261: 248(ptr) AccessChain 223(texDim) 41 - 262: 96(int) Load 261 - 263: 16(float) ConvertSToF 262 - 264: 16(float) FDiv 260 263 - Store 255(dy) 264 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 266 266 12 12 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 268 267(shadowFactor) 47 - Store 267(shadowFactor) 191 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 272 272 12 12 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(count) 47 - Store 273(count) 104 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 278 278 12 12 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(range) 47 - Store 279(range) 283 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 - 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 287 286(x) 47 - 290: 96(int) Load 279(range) - 291: 96(int) SNegate 290 - Store 286(x) 291 - Branch 292 - 292: Label + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 216 216 12 12 + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 221 220(texDim) 47 + 224: 167 Load 172(samplerShadowMap) + 225: 162 Image 224 + 228: 226(ivec3) ImageQuerySizeLod 225 104 + 229: 217(ivec2) VectorShuffle 228 228 0 1 + Store 220(texDim) 229 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 231 231 12 12 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(scale) 47 + Store 232(scale) 236 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 238 238 12 12 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 240 239(dx) 47 + 243: 16(float) Load 232(scale) + 244: 16(float) FMul 243 112 + 246: 245(ptr) AccessChain 220(texDim) 12 + 247: 96(int) Load 246 + 248: 16(float) ConvertSToF 247 + 249: 16(float) FDiv 244 248 + Store 239(dx) 249 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 251 251 12 12 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(dy) 47 + 256: 16(float) Load 232(scale) + 257: 16(float) FMul 256 112 + 258: 245(ptr) AccessChain 220(texDim) 41 + 259: 96(int) Load 258 + 260: 16(float) ConvertSToF 259 + 261: 16(float) FDiv 257 260 + Store 252(dy) 261 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 263 263 12 12 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(shadowFactor) 47 + Store 264(shadowFactor) 190 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 269 269 12 12 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(count) 47 + Store 270(count) 104 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 275 275 12 12 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(range) 47 + Store 276(range) 280 + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 + 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 284 283(x) 47 + 287: 96(int) Load 276(range) + 288: 96(int) SNegate 287 + Store 283(x) 288 + Branch 289 + 289: Label + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 + LoopMerge 291 292 None + Branch 295 + 295: Label 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 - LoopMerge 294 295 None - Branch 298 - 298: Label - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 - 301: 96(int) Load 286(x) - 302: 96(int) Load 279(range) - 304: 138(bool) SLessThanEqual 301 302 - BranchConditional 304 293 294 - 293: Label - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 309 308(y) 47 - 312: 96(int) Load 279(range) - 313: 96(int) SNegate 312 - Store 308(y) 313 - Branch 314 - 314: Label - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 - LoopMerge 316 317 None - Branch 320 - 320: Label - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 - 323: 96(int) Load 308(y) - 324: 96(int) Load 279(range) - 326: 138(bool) SLessThanEqual 323 324 - BranchConditional 326 315 316 - 315: Label - 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 329 329 12 12 - 330: 16(float) Load 242(dx) - 331: 96(int) Load 286(x) - 332: 16(float) ConvertSToF 331 - 333: 16(float) FMul 330 332 - 334: 16(float) Load 255(dy) - 335: 96(int) Load 308(y) - 336: 16(float) ConvertSToF 335 - 337: 16(float) FMul 334 336 - 338: 24(fvec2) CompositeConstruct 333 337 - 340: 19(fvec4) Load 56(sc) - Store 339(param) 340 - 342: 16(float) Load 57(layer) - Store 341(param) 342 - Store 343(param) 338 - 344: 16(float) FunctionCall 33(textureProj(vf4;f1;vf2;) 339(param) 341(param) 343(param) - 345: 16(float) Load 267(shadowFactor) - 346: 16(float) FAdd 345 344 - Store 267(shadowFactor) 346 - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 348 348 12 12 - 349: 96(int) Load 273(count) - 350: 96(int) IAdd 349 283 - Store 273(count) 350 - Branch 317 - 317: Label - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 307 307 12 12 - 353: 96(int) Load 308(y) - 354: 96(int) IAdd 353 283 - Store 308(y) 354 - Branch 314 + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 + 298: 96(int) Load 283(x) + 299: 96(int) Load 276(range) + 300: 138(bool) SLessThanEqual 298 299 + BranchConditional 300 290 291 + 290: Label + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 305 304(y) 47 + 308: 96(int) Load 276(range) + 309: 96(int) SNegate 308 + Store 304(y) 309 + Branch 310 + 310: Label + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 + LoopMerge 312 313 None + Branch 316 316: Label - Branch 295 - 295: Label - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 285 285 12 12 - 357: 96(int) Load 286(x) - 358: 96(int) IAdd 357 283 - Store 286(x) 358 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 + 319: 96(int) Load 304(y) + 320: 96(int) Load 276(range) + 321: 138(bool) SLessThanEqual 319 320 + BranchConditional 321 311 312 + 311: Label + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 324 324 12 12 + 325: 16(float) Load 239(dx) + 326: 96(int) Load 283(x) + 327: 16(float) ConvertSToF 326 + 328: 16(float) FMul 325 327 + 329: 16(float) Load 252(dy) + 330: 96(int) Load 304(y) + 331: 16(float) ConvertSToF 330 + 332: 16(float) FMul 329 331 + 333: 24(fvec2) CompositeConstruct 328 332 + 335: 19(fvec4) Load 56(sc) + Store 334(param) 335 + 337: 16(float) Load 57(layer) + Store 336(param) 337 + Store 338(param) 333 + 339: 16(float) FunctionCall 33(textureProj(vf4;f1;vf2;) 334(param) 336(param) 338(param) + 340: 16(float) Load 264(shadowFactor) + 341: 16(float) FAdd 340 339 + Store 264(shadowFactor) 341 + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 343 343 12 12 + 344: 96(int) Load 270(count) + 345: 96(int) IAdd 344 280 + Store 270(count) 345 + Branch 313 + 313: Label + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 + 348: 96(int) Load 304(y) + 349: 96(int) IAdd 348 280 + Store 304(y) 349 + Branch 310 + 312: Label Branch 292 - 294: Label - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 361 361 12 12 - 362: 16(float) Load 267(shadowFactor) - 363: 96(int) Load 273(count) - 364: 16(float) ConvertSToF 363 - 365: 16(float) FDiv 362 364 - ReturnValue 365 + 292: Label + 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 + 352: 96(int) Load 283(x) + 353: 96(int) IAdd 352 280 + Store 283(x) 353 + Branch 289 + 291: Label + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 356 356 12 12 + 357: 16(float) Load 264(shadowFactor) + 358: 96(int) Load 270(count) + 359: 16(float) ConvertSToF 358 + 360: 16(float) FDiv 357 359 + ReturnValue 360 FunctionEnd Line 1 99 41 77(shadow(vf3;vf3;): 70(fvec3) Function None 73 75(fragcolor): 72(ptr) FunctionParameter 76(fragpos): 72(ptr) FunctionParameter 78: Label - 372(i): 248(ptr) Variable Function - 392(shadowClip): 22(ptr) Variable Function -440(shadowFactor): 23(ptr) Variable Function - 445(param): 22(ptr) Variable Function - 447(param): 23(ptr) Variable Function + 367(i): 245(ptr) Variable Function + 386(shadowClip): 22(ptr) Variable Function +434(shadowFactor): 23(ptr) Variable Function + 439(param): 22(ptr) Variable Function + 441(param): 23(ptr) Variable Function 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 81 81 12 12 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 75(fragcolor) 47 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 76(fragpos) 47 - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) - 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 370: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 373 372(i) 47 - Store 372(i) 104 - Branch 376 - 376: Label - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 - LoopMerge 378 379 None - Branch 382 - 382: Label - 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 - 385: 96(int) Load 372(i) - 388: 138(bool) SLessThan 385 386 - BranchConditional 388 377 378 - 377: Label - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 391 391 12 12 - 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 393 392(shadowClip) 47 - 428: 96(int) Load 372(i) - 430: 429(ptr) AccessChain 425(ubo) 283 428 386 - 431: 396 Load 430 - 432: 70(fvec3) Load 76(fragpos) - 433: 16(float) CompositeExtract 432 0 - 434: 16(float) CompositeExtract 432 1 - 435: 16(float) CompositeExtract 432 2 - 436: 19(fvec4) CompositeConstruct 433 434 435 112 - 437: 19(fvec4) MatrixTimesVector 431 436 - Store 392(shadowClip) 437 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 439 439 12 12 - 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 441 440(shadowFactor) 47 - 443: 96(int) Load 372(i) - 444: 16(float) ConvertSToF 443 - 446: 19(fvec4) Load 392(shadowClip) - Store 445(param) 446 - Store 447(param) 444 - 448: 16(float) FunctionCall 58(filterPCF(vf4;f1;) 445(param) 447(param) - Store 440(shadowFactor) 448 - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 450 450 12 12 - 451: 16(float) Load 440(shadowFactor) - 452: 70(fvec3) Load 75(fragcolor) - 453: 70(fvec3) VectorTimesScalar 452 451 - Store 75(fragcolor) 453 - Branch 379 - 379: Label - 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 371 371 12 12 - 456: 96(int) Load 372(i) - 457: 96(int) IAdd 456 283 - Store 372(i) 457 - Branch 376 - 378: Label - 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 460 460 12 12 - 461: 70(fvec3) Load 75(fragcolor) - ReturnValue 461 + 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 + 370: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 368 367(i) 47 + Store 367(i) 104 + Branch 371 + 371: Label + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 + LoopMerge 373 374 None + Branch 377 + 377: Label + 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 + 380: 96(int) Load 367(i) + 382: 138(bool) SLessThan 380 381 + BranchConditional 382 372 373 + 372: Label + 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 385 385 12 12 + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 387 386(shadowClip) 47 + 422: 96(int) Load 367(i) + 424: 423(ptr) AccessChain 419(ubo) 280 422 381 + 425: 390 Load 424 + 426: 70(fvec3) Load 76(fragpos) + 427: 16(float) CompositeExtract 426 0 + 428: 16(float) CompositeExtract 426 1 + 429: 16(float) CompositeExtract 426 2 + 430: 19(fvec4) CompositeConstruct 427 428 429 112 + 431: 19(fvec4) MatrixTimesVector 425 430 + Store 386(shadowClip) 431 + 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 433 433 12 12 + 436: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 435 434(shadowFactor) 47 + 437: 96(int) Load 367(i) + 438: 16(float) ConvertSToF 437 + 440: 19(fvec4) Load 386(shadowClip) + Store 439(param) 440 + Store 441(param) 438 + 442: 16(float) FunctionCall 58(filterPCF(vf4;f1;) 439(param) 441(param) + Store 434(shadowFactor) 442 + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 444 444 12 12 + 445: 16(float) Load 434(shadowFactor) + 446: 70(fvec3) Load 75(fragcolor) + 447: 70(fvec3) VectorTimesScalar 446 445 + Store 75(fragcolor) 447 + Branch 374 + 374: Label + 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 + 450: 96(int) Load 367(i) + 451: 96(int) IAdd 450 280 + Store 367(i) 451 + Branch 371 + 373: Label + 452: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 454 454 12 12 + 455: 70(fvec3) Load 75(fragcolor) + ReturnValue 455 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index 17ac15502b..13eca5f26f 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -1,14 +1,14 @@ spv.debuginfo.glsl.tesc // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 545 +// Id's are bound by 537 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 14 "main" 252 256 282 373 386 501 515 522 536 + EntryPoint TessellationControl 14 "main" 252 256 282 366 379 493 507 514 528 ExecutionMode 14 OutputVertices 4 1: String "" 8: String "uint" @@ -54,12 +54,12 @@ spv.debuginfo.glsl.tesc 277: String "samplerHeight" 284: String "inUV" 303: String "i" - 375: String "gl_TessLevelInner" - 388: String "gl_TessLevelOuter" - 503: String "gl_out" - 517: String "outNormal" - 524: String "inNormal" - 538: String "outUV" + 368: String "gl_TessLevelInner" + 381: String "gl_TessLevelOuter" + 495: String "gl_out" + 509: String "outNormal" + 516: String "inNormal" + 530: String "outUV" Name 14 "main" Name 27 "screenSpaceTessFactor(vf4;vf4;" Name 25 "p0" @@ -91,25 +91,25 @@ spv.debuginfo.glsl.tesc Name 275 "samplerHeight" Name 282 "inUV" Name 301 "i" - Name 373 "gl_TessLevelInner" - Name 386 "gl_TessLevelOuter" - Name 413 "param" - Name 416 "param" - Name 423 "param" - Name 426 "param" - Name 433 "param" - Name 436 "param" - Name 443 "param" - Name 446 "param" - Name 490 "gl_PerVertex" - MemberName 490(gl_PerVertex) 0 "gl_Position" - MemberName 490(gl_PerVertex) 1 "gl_PointSize" - MemberName 490(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 490(gl_PerVertex) 3 "gl_CullDistance" - Name 501 "gl_out" - Name 515 "outNormal" - Name 522 "inNormal" - Name 536 "outUV" + Name 366 "gl_TessLevelInner" + Name 379 "gl_TessLevelOuter" + Name 405 "param" + Name 408 "param" + Name 415 "param" + Name 418 "param" + Name 425 "param" + Name 428 "param" + Name 435 "param" + Name 438 "param" + Name 482 "gl_PerVertex" + MemberName 482(gl_PerVertex) 0 "gl_Position" + MemberName 482(gl_PerVertex) 1 "gl_PointSize" + MemberName 482(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 482(gl_PerVertex) 3 "gl_CullDistance" + Name 493 "gl_out" + Name 507 "outNormal" + Name 514 "inNormal" + Name 528 "outUV" Decorate 93 ArrayStride 16 MemberDecorate 97(UBO) 0 ColMajor MemberDecorate 97(UBO) 0 Offset 0 @@ -135,18 +135,18 @@ spv.debuginfo.glsl.tesc Decorate 275(samplerHeight) DescriptorSet 0 Decorate 275(samplerHeight) Binding 1 Decorate 282(inUV) Location 1 - Decorate 373(gl_TessLevelInner) Patch - Decorate 373(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 386(gl_TessLevelOuter) Patch - Decorate 386(gl_TessLevelOuter) BuiltIn TessLevelOuter - MemberDecorate 490(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 490(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 490(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 490(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 490(gl_PerVertex) Block - Decorate 515(outNormal) Location 0 - Decorate 522(inNormal) Location 0 - Decorate 536(outUV) Location 1 + Decorate 366(gl_TessLevelInner) Patch + Decorate 366(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 379(gl_TessLevelOuter) Patch + Decorate 379(gl_TessLevelOuter) BuiltIn TessLevelOuter + MemberDecorate 482(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 482(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 482(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 482(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 482(gl_PerVertex) Block + Decorate 507(outNormal) Location 0 + Decorate 514(inNormal) Location 0 + Decorate 528(outUV) Location 1 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -282,250 +282,242 @@ spv.debuginfo.glsl.tesc 299: 7(int) Constant 89 300: TypePointer Function 123(int) 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 125 31 299 12 54 20 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 319: 7(int) Constant 90 - 321: 123(int) Constant 3 - 323: TypePointer Uniform 19(fvec4) - 327: 16(float) Constant 1090519040 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 334: 46(bool) ConstantFalse - 337: 7(int) Constant 92 - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 346: 7(int) Constant 95 - 352: 7(int) Constant 100 - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 360: 7(int) Constant 102 - 362: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 369: 7(int) Constant 104 - 370: TypeArray 16(float) 36 - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 36 - 372: TypePointer Output 370 -373(gl_TessLevelInner): 372(ptr) Variable Output - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 375 371 31 369 12 34 375 373(gl_TessLevelInner) 111 - 376: TypePointer Output 16(float) - 379: 7(int) Constant 105 - 382: 7(int) Constant 106 - 383: TypeArray 16(float) 20 - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 - 385: TypePointer Output 383 -386(gl_TessLevelOuter): 385(ptr) Variable Output - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 388 384 31 382 12 34 388 386(gl_TessLevelOuter) 111 - 391: 7(int) Constant 107 - 394: 7(int) Constant 108 - 395: 123(int) Constant 2 - 398: 7(int) Constant 109 - 403: 7(int) Constant 113 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 412: 7(int) Constant 115 - 422: 7(int) Constant 116 - 432: 7(int) Constant 117 - 442: 7(int) Constant 118 - 452: 7(int) Constant 119 - 460: 7(int) Constant 120 - 470: 7(int) Constant 126 - 473: 7(int) Constant 127 - 476: 7(int) Constant 128 - 479: 7(int) Constant 129 - 482: 7(int) Constant 130 - 485: 7(int) Constant 131 - 489: 7(int) Constant 137 -490(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 234 234 - 492: 7(int) Constant 110 - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 21 31 35 492 12 12 13 - 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 18 31 35 476 12 12 13 - 495: 7(int) Constant 171 - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 495 12 12 13 - 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 495 12 12 13 - 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 248 35 31 489 12 34 248 12 13 491 493 494 496 - 498: TypeArray 490(gl_PerVertex) 20 - 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 497 20 - 500: TypePointer Output 498 - 501(gl_out): 500(ptr) Variable Output - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 503 499 31 489 12 34 503 501(gl_out) 111 - 508: TypePointer Output 19(fvec4) - 511: 7(int) Constant 138 - 512: TypeArray 143(fvec3) 20 - 513: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 20 - 514: TypePointer Output 512 - 515(outNormal): 514(ptr) Variable Output - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 517 513 31 511 12 34 517 515(outNormal) 111 - 519: TypeArray 143(fvec3) 10 - 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 10 - 521: TypePointer Input 519 - 522(inNormal): 521(ptr) Variable Input - 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 524 520 31 511 12 34 524 522(inNormal) 111 - 526: TypePointer Input 143(fvec3) - 529: TypePointer Output 143(fvec3) - 532: 7(int) Constant 139 - 533: TypeArray 95(fvec2) 20 - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 96 20 - 535: TypePointer Output 533 - 536(outUV): 535(ptr) Variable Output - 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 538 534 31 532 12 34 538 536(outUV) 111 - 543: TypePointer Output 95(fvec2) + 318: 7(int) Constant 90 + 320: 123(int) Constant 3 + 322: TypePointer Uniform 19(fvec4) + 326: 16(float) Constant 1090519040 + 331: 46(bool) ConstantFalse + 334: 7(int) Constant 92 + 342: 7(int) Constant 95 + 348: 7(int) Constant 100 + 355: 7(int) Constant 102 + 362: 7(int) Constant 104 + 363: TypeArray 16(float) 36 + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 36 + 365: TypePointer Output 363 +366(gl_TessLevelInner): 365(ptr) Variable Output + 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 368 364 31 362 12 34 368 366(gl_TessLevelInner) 111 + 369: TypePointer Output 16(float) + 372: 7(int) Constant 105 + 375: 7(int) Constant 106 + 376: TypeArray 16(float) 20 + 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 + 378: TypePointer Output 376 +379(gl_TessLevelOuter): 378(ptr) Variable Output + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 381 377 31 375 12 34 381 379(gl_TessLevelOuter) 111 + 384: 7(int) Constant 107 + 387: 7(int) Constant 108 + 388: 123(int) Constant 2 + 391: 7(int) Constant 109 + 396: 7(int) Constant 113 + 404: 7(int) Constant 115 + 414: 7(int) Constant 116 + 424: 7(int) Constant 117 + 434: 7(int) Constant 118 + 444: 7(int) Constant 119 + 452: 7(int) Constant 120 + 462: 7(int) Constant 126 + 465: 7(int) Constant 127 + 468: 7(int) Constant 128 + 471: 7(int) Constant 129 + 474: 7(int) Constant 130 + 477: 7(int) Constant 131 + 481: 7(int) Constant 137 +482(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 234 234 + 484: 7(int) Constant 110 + 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 21 31 35 484 12 12 13 + 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 18 31 35 468 12 12 13 + 487: 7(int) Constant 171 + 486: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 487 12 12 13 + 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 487 12 12 13 + 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 248 35 31 481 12 34 248 12 13 483 485 486 488 + 490: TypeArray 482(gl_PerVertex) 20 + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 489 20 + 492: TypePointer Output 490 + 493(gl_out): 492(ptr) Variable Output + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 491 31 481 12 34 495 493(gl_out) 111 + 500: TypePointer Output 19(fvec4) + 503: 7(int) Constant 138 + 504: TypeArray 143(fvec3) 20 + 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 20 + 506: TypePointer Output 504 + 507(outNormal): 506(ptr) Variable Output + 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 509 505 31 503 12 34 509 507(outNormal) 111 + 511: TypeArray 143(fvec3) 10 + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 10 + 513: TypePointer Input 511 + 514(inNormal): 513(ptr) Variable Input + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 516 512 31 503 12 34 516 514(inNormal) 111 + 518: TypePointer Input 143(fvec3) + 521: TypePointer Output 143(fvec3) + 524: 7(int) Constant 139 + 525: TypeArray 95(fvec2) 20 + 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 96 20 + 527: TypePointer Output 525 + 528(outUV): 527(ptr) Variable Output + 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 530 526 31 524 12 34 530 528(outUV) 111 + 535: TypePointer Output 95(fvec2) Line 1 98 11 14(main): 4 Function None 5 15: Label - 413(param): 22(ptr) Variable Function - 416(param): 22(ptr) Variable Function - 423(param): 22(ptr) Variable Function - 426(param): 22(ptr) Variable Function - 433(param): 22(ptr) Variable Function - 436(param): 22(ptr) Variable Function - 443(param): 22(ptr) Variable Function - 446(param): 22(ptr) Variable Function - 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 14(main) - 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 352 352 12 12 - 353: 123(int) Load 256(gl_InvocationID) - 355: 46(bool) IEqual 353 138 - SelectionMerge 357 None - BranchConditional 355 356 357 - 356: Label - 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 360 360 12 12 - 361: 46(bool) FunctionCall 51(frustumCheck() - 364: 46(bool) LogicalNot 361 - SelectionMerge 366 None - BranchConditional 364 365 400 - 365: Label - 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 369 369 12 12 - 377: 376(ptr) AccessChain 373(gl_TessLevelInner) 138 - Store 377 145 - 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 379 379 12 12 - 380: 376(ptr) AccessChain 373(gl_TessLevelInner) 126 - Store 380 145 - 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 382 382 12 12 - 389: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 + 405(param): 22(ptr) Variable Function + 408(param): 22(ptr) Variable Function + 415(param): 22(ptr) Variable Function + 418(param): 22(ptr) Variable Function + 425(param): 22(ptr) Variable Function + 428(param): 22(ptr) Variable Function + 435(param): 22(ptr) Variable Function + 438(param): 22(ptr) Variable Function + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 14(main) + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 348 348 12 12 + 349: 123(int) Load 256(gl_InvocationID) + 350: 46(bool) IEqual 349 138 + SelectionMerge 352 None + BranchConditional 350 351 352 + 351: Label + 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 355 355 12 12 + 356: 46(bool) FunctionCall 51(frustumCheck() + 357: 46(bool) LogicalNot 356 + SelectionMerge 359 None + BranchConditional 357 358 393 + 358: Label + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 362 362 12 12 + 370: 369(ptr) AccessChain 366(gl_TessLevelInner) 138 + Store 370 145 + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 372 372 12 12 + 373: 369(ptr) AccessChain 366(gl_TessLevelInner) 126 + Store 373 145 + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 375 375 12 12 + 382: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 + Store 382 145 + 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 384 384 12 12 + 385: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 + Store 385 145 + 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 387 387 12 12 + 389: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 Store 389 145 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 391 391 12 12 - 392: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 + 392: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 Store 392 145 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 394 394 12 12 - 396: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 - Store 396 145 - 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 398 398 12 12 - 399: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 - Store 399 145 - Branch 366 - 400: Label - 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 403 403 12 12 - 404: 213(ptr) AccessChain 120(ubo) 217 - 405: 16(float) Load 404 - 407: 46(bool) FOrdGreaterThan 405 145 - SelectionMerge 409 None - BranchConditional 407 408 467 - 408: Label - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 412 412 12 12 - 414: 260(ptr) AccessChain 252(gl_in) 321 138 - 415: 19(fvec4) Load 414 - Store 413(param) 415 - 417: 260(ptr) AccessChain 252(gl_in) 138 138 - 418: 19(fvec4) Load 417 - Store 416(param) 418 - 419: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 413(param) 416(param) - 420: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 - Store 420 419 - 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 422 422 12 12 - 424: 260(ptr) AccessChain 252(gl_in) 138 138 - 425: 19(fvec4) Load 424 - Store 423(param) 425 - 427: 260(ptr) AccessChain 252(gl_in) 126 138 - 428: 19(fvec4) Load 427 - Store 426(param) 428 - 429: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 423(param) 426(param) - 430: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 - Store 430 429 - 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 432 432 12 12 - 434: 260(ptr) AccessChain 252(gl_in) 126 138 - 435: 19(fvec4) Load 434 - Store 433(param) 435 - 437: 260(ptr) AccessChain 252(gl_in) 395 138 - 438: 19(fvec4) Load 437 - Store 436(param) 438 - 439: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 433(param) 436(param) - 440: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 - Store 440 439 - 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 442 442 12 12 - 444: 260(ptr) AccessChain 252(gl_in) 395 138 - 445: 19(fvec4) Load 444 - Store 443(param) 445 - 447: 260(ptr) AccessChain 252(gl_in) 321 138 - 448: 19(fvec4) Load 447 - Store 446(param) 448 - 449: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 443(param) 446(param) - 450: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 + Branch 359 + 393: Label + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 396 396 12 12 + 397: 213(ptr) AccessChain 120(ubo) 217 + 398: 16(float) Load 397 + 399: 46(bool) FOrdGreaterThan 398 145 + SelectionMerge 401 None + BranchConditional 399 400 459 + 400: Label + 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 404 404 12 12 + 406: 260(ptr) AccessChain 252(gl_in) 320 138 + 407: 19(fvec4) Load 406 + Store 405(param) 407 + 409: 260(ptr) AccessChain 252(gl_in) 138 138 + 410: 19(fvec4) Load 409 + Store 408(param) 410 + 411: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 405(param) 408(param) + 412: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 + Store 412 411 + 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 414 414 12 12 + 416: 260(ptr) AccessChain 252(gl_in) 138 138 + 417: 19(fvec4) Load 416 + Store 415(param) 417 + 419: 260(ptr) AccessChain 252(gl_in) 126 138 + 420: 19(fvec4) Load 419 + Store 418(param) 420 + 421: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 415(param) 418(param) + 422: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 + Store 422 421 + 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 424 424 12 12 + 426: 260(ptr) AccessChain 252(gl_in) 126 138 + 427: 19(fvec4) Load 426 + Store 425(param) 427 + 429: 260(ptr) AccessChain 252(gl_in) 388 138 + 430: 19(fvec4) Load 429 + Store 428(param) 430 + 431: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 425(param) 428(param) + 432: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 + Store 432 431 + 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 434 434 12 12 + 436: 260(ptr) AccessChain 252(gl_in) 388 138 + 437: 19(fvec4) Load 436 + Store 435(param) 437 + 439: 260(ptr) AccessChain 252(gl_in) 320 138 + 440: 19(fvec4) Load 439 + Store 438(param) 440 + 441: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 435(param) 438(param) + 442: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 + Store 442 441 + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 444 444 12 12 + 445: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 + 446: 16(float) Load 445 + 447: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 + 448: 16(float) Load 447 + 449: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 446 448 67 + 450: 369(ptr) AccessChain 366(gl_TessLevelInner) 138 Store 450 449 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 452 452 12 12 - 453: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 + 453: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 454: 16(float) Load 453 - 455: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 + 455: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 456: 16(float) Load 455 457: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 454 456 67 - 458: 376(ptr) AccessChain 373(gl_TessLevelInner) 138 + 458: 369(ptr) AccessChain 366(gl_TessLevelInner) 126 Store 458 457 - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 460 460 12 12 - 461: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 - 462: 16(float) Load 461 - 463: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 - 464: 16(float) Load 463 - 465: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 462 464 67 - 466: 376(ptr) AccessChain 373(gl_TessLevelInner) 126 - Store 466 465 - Branch 409 - 467: Label - 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 470 470 12 12 - 471: 376(ptr) AccessChain 373(gl_TessLevelInner) 138 - Store 471 221 - 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 473 473 12 12 - 474: 376(ptr) AccessChain 373(gl_TessLevelInner) 126 - Store 474 221 - 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 476 476 12 12 - 477: 376(ptr) AccessChain 386(gl_TessLevelOuter) 138 - Store 477 221 - 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 479 479 12 12 - 480: 376(ptr) AccessChain 386(gl_TessLevelOuter) 126 - Store 480 221 - 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 482 482 12 12 - 483: 376(ptr) AccessChain 386(gl_TessLevelOuter) 395 - Store 483 221 - 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 485 485 12 12 - 486: 376(ptr) AccessChain 386(gl_TessLevelOuter) 321 - Store 486 221 - Branch 409 - 409: Label - Branch 366 - 366: Label - Branch 357 - 357: Label - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 489 489 12 12 - 504: 123(int) Load 256(gl_InvocationID) - 505: 123(int) Load 256(gl_InvocationID) - 506: 260(ptr) AccessChain 252(gl_in) 505 138 - 507: 19(fvec4) Load 506 - 509: 508(ptr) AccessChain 501(gl_out) 504 138 - Store 509 507 - 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 511 511 12 12 - 518: 123(int) Load 256(gl_InvocationID) - 525: 123(int) Load 256(gl_InvocationID) - 527: 526(ptr) AccessChain 522(inNormal) 525 - 528: 143(fvec3) Load 527 - 530: 529(ptr) AccessChain 515(outNormal) 518 - Store 530 528 - 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 532 532 12 12 - 539: 123(int) Load 256(gl_InvocationID) - 540: 123(int) Load 256(gl_InvocationID) - 541: 285(ptr) AccessChain 282(inUV) 540 - 542: 95(fvec2) Load 541 - 544: 543(ptr) AccessChain 536(outUV) 539 - Store 544 542 + Branch 401 + 459: Label + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 462 462 12 12 + 463: 369(ptr) AccessChain 366(gl_TessLevelInner) 138 + Store 463 221 + 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 465 465 12 12 + 466: 369(ptr) AccessChain 366(gl_TessLevelInner) 126 + Store 466 221 + 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 468 468 12 12 + 469: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 + Store 469 221 + 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 471 471 12 12 + 472: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 + Store 472 221 + 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 474 474 12 12 + 475: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 + Store 475 221 + 476: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 477 477 12 12 + 478: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 + Store 478 221 + Branch 401 + 401: Label + Branch 359 + 359: Label + Branch 352 + 352: Label + 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 + 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 481 481 12 12 + 496: 123(int) Load 256(gl_InvocationID) + 497: 123(int) Load 256(gl_InvocationID) + 498: 260(ptr) AccessChain 252(gl_in) 497 138 + 499: 19(fvec4) Load 498 + 501: 500(ptr) AccessChain 493(gl_out) 496 138 + Store 501 499 + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 503 503 12 12 + 510: 123(int) Load 256(gl_InvocationID) + 517: 123(int) Load 256(gl_InvocationID) + 519: 518(ptr) AccessChain 514(inNormal) 517 + 520: 143(fvec3) Load 519 + 522: 521(ptr) AccessChain 507(outNormal) 510 + Store 522 520 + 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 524 524 12 12 + 531: 123(int) Load 256(gl_InvocationID) + 532: 123(int) Load 256(gl_InvocationID) + 533: 285(ptr) AccessChain 282(inUV) 532 + 534: 95(fvec2) Load 533 + 536: 535(ptr) AccessChain 528(outUV) 531 + Store 536 534 Return FunctionEnd Line 1 51 45 @@ -682,35 +674,35 @@ spv.debuginfo.glsl.tesc 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 314: 123(int) Load 301(i) - 316: 46(bool) SLessThan 314 185 - BranchConditional 316 306 307 + 315: 46(bool) SLessThan 314 185 + BranchConditional 315 306 307 306: Label - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 319 319 12 12 - 320: 19(fvec4) Load 230(pos) - 322: 123(int) Load 301(i) - 324: 323(ptr) AccessChain 120(ubo) 321 322 - 325: 19(fvec4) Load 324 - 326: 16(float) Dot 320 325 - 328: 16(float) FAdd 326 327 - 330: 46(bool) FOrdLessThan 328 145 - SelectionMerge 332 None - BranchConditional 330 331 332 - 331: Label - 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 337 337 12 12 - ReturnValue 334 - 332: Label + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 318 318 12 12 + 319: 19(fvec4) Load 230(pos) + 321: 123(int) Load 301(i) + 323: 322(ptr) AccessChain 120(ubo) 320 321 + 324: 19(fvec4) Load 323 + 325: 16(float) Dot 319 324 + 327: 16(float) FAdd 325 326 + 328: 46(bool) FOrdLessThan 327 145 + SelectionMerge 330 None + BranchConditional 328 329 330 + 329: Label + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 334 334 12 12 + ReturnValue 331 + 330: Label Branch 308 308: Label - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 - 341: 123(int) Load 301(i) - 342: 123(int) IAdd 341 126 - Store 301(i) 342 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 + 338: 123(int) Load 301(i) + 339: 123(int) IAdd 338 126 + Store 301(i) 339 Branch 305 307: Label - 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 346 346 12 12 + 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 + 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 342 342 12 12 ReturnValue 92 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index 5f494598a0..1eec2ff659 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,14 +1,14 @@ spv.debuginfo.glsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 333 +// Id's are bound by 335 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 14 "main" 43 60 87 106 134 170 281 295 303 315 322 + EntryPoint TessellationEvaluation 14 "main" 43 60 87 106 134 170 283 297 305 317 324 ExecutionMode 14 Quads ExecutionMode 14 SpacingEqual ExecutionMode 14 VertexOrderCw @@ -47,17 +47,18 @@ spv.debuginfo.glsl.tese 217: String "type.sampled.image" 218: String "@type.sampled.image" 222: String "displacementMap" - 236: String "modelview" - 241: String "lightPos" - 244: String "frustumPlanes" - 246: String "tessellatedEdgeSize" - 250: String "viewportDim" - 254: String "UBO" - 258: String "ubo" - 297: String "outViewVec" - 305: String "outLightVec" - 317: String "outWorldPos" - 324: String "outEyePos" + 231: String "bool" + 238: String "modelview" + 243: String "lightPos" + 246: String "frustumPlanes" + 248: String "tessellatedEdgeSize" + 252: String "viewportDim" + 256: String "UBO" + 260: String "ubo" + 299: String "outViewVec" + 307: String "outLightVec" + 319: String "outWorldPos" + 326: String "outEyePos" Name 14 "main" Name 35 "uv1" Name 43 "inUV" @@ -78,26 +79,26 @@ spv.debuginfo.glsl.tese Name 184 "pos2" Name 198 "pos" Name 220 "displacementMap" - Name 234 "UBO" - MemberName 234(UBO) 0 "projection" - MemberName 234(UBO) 1 "modelview" - MemberName 234(UBO) 2 "lightPos" - MemberName 234(UBO) 3 "frustumPlanes" - MemberName 234(UBO) 4 "displacementFactor" - MemberName 234(UBO) 5 "tessellationFactor" - MemberName 234(UBO) 6 "viewportDim" - MemberName 234(UBO) 7 "tessellatedEdgeSize" - Name 256 "ubo" - Name 271 "gl_PerVertex" - MemberName 271(gl_PerVertex) 0 "gl_Position" - MemberName 271(gl_PerVertex) 1 "gl_PointSize" - MemberName 271(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 271(gl_PerVertex) 3 "gl_CullDistance" - Name 281 "" - Name 295 "outViewVec" - Name 303 "outLightVec" - Name 315 "outWorldPos" - Name 322 "outEyePos" + Name 236 "UBO" + MemberName 236(UBO) 0 "projection" + MemberName 236(UBO) 1 "modelview" + MemberName 236(UBO) 2 "lightPos" + MemberName 236(UBO) 3 "frustumPlanes" + MemberName 236(UBO) 4 "displacementFactor" + MemberName 236(UBO) 5 "tessellationFactor" + MemberName 236(UBO) 6 "viewportDim" + MemberName 236(UBO) 7 "tessellatedEdgeSize" + Name 258 "ubo" + Name 273 "gl_PerVertex" + MemberName 273(gl_PerVertex) 0 "gl_Position" + MemberName 273(gl_PerVertex) 1 "gl_PointSize" + MemberName 273(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 273(gl_PerVertex) 3 "gl_CullDistance" + Name 283 "" + Name 297 "outViewVec" + Name 305 "outLightVec" + Name 317 "outWorldPos" + Name 324 "outEyePos" Decorate 43(inUV) Location 1 Decorate 60(gl_TessCoord) BuiltIn TessCoord Decorate 87(outUV) Location 1 @@ -110,31 +111,31 @@ spv.debuginfo.glsl.tese Decorate 154(gl_PerVertex) Block Decorate 220(displacementMap) DescriptorSet 0 Decorate 220(displacementMap) Binding 1 - Decorate 232 ArrayStride 16 - MemberDecorate 234(UBO) 0 ColMajor - MemberDecorate 234(UBO) 0 Offset 0 - MemberDecorate 234(UBO) 0 MatrixStride 16 - MemberDecorate 234(UBO) 1 ColMajor - MemberDecorate 234(UBO) 1 Offset 64 - MemberDecorate 234(UBO) 1 MatrixStride 16 - MemberDecorate 234(UBO) 2 Offset 128 - MemberDecorate 234(UBO) 3 Offset 144 - MemberDecorate 234(UBO) 4 Offset 240 - MemberDecorate 234(UBO) 5 Offset 244 - MemberDecorate 234(UBO) 6 Offset 248 - MemberDecorate 234(UBO) 7 Offset 256 - Decorate 234(UBO) Block - Decorate 256(ubo) DescriptorSet 0 - Decorate 256(ubo) Binding 0 - MemberDecorate 271(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 271(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 271(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 271(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 271(gl_PerVertex) Block - Decorate 295(outViewVec) Location 2 - Decorate 303(outLightVec) Location 3 - Decorate 315(outWorldPos) Location 5 - Decorate 322(outEyePos) Location 4 + Decorate 234 ArrayStride 16 + MemberDecorate 236(UBO) 0 ColMajor + MemberDecorate 236(UBO) 0 Offset 0 + MemberDecorate 236(UBO) 0 MatrixStride 16 + MemberDecorate 236(UBO) 1 ColMajor + MemberDecorate 236(UBO) 1 Offset 64 + MemberDecorate 236(UBO) 1 MatrixStride 16 + MemberDecorate 236(UBO) 2 Offset 128 + MemberDecorate 236(UBO) 3 Offset 144 + MemberDecorate 236(UBO) 4 Offset 240 + MemberDecorate 236(UBO) 5 Offset 244 + MemberDecorate 236(UBO) 6 Offset 248 + MemberDecorate 236(UBO) 7 Offset 256 + Decorate 236(UBO) Block + Decorate 258(ubo) DescriptorSet 0 + Decorate 258(ubo) Binding 0 + MemberDecorate 273(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 273(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 273(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 273(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 273(gl_PerVertex) Block + Decorate 297(outViewVec) Location 2 + Decorate 305(outLightVec) Location 3 + Decorate 317(outWorldPos) Location 5 + Decorate 324(outEyePos) Location 4 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -236,59 +237,60 @@ spv.debuginfo.glsl.tese 225: 29(float) Constant 0 228: TypeMatrix 145(fvec4) 4 230: TypeBool - 231: 230(bool) ConstantTrue - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 146 23 231 - 232: TypeArray 145(fvec4) 11 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 146 11 - 234(UBO): TypeStruct 228 228 145(fvec4) 232 29(float) 29(float) 32(fvec2) 29(float) - 237: 7(int) Constant 30 - 238: 7(int) Constant 7 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 236 229 18 237 238 12 12 13 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 236 229 18 237 238 12 12 13 - 242: 7(int) Constant 31 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 146 18 242 238 12 12 13 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 233 18 10 238 12 12 13 - 247: 7(int) Constant 36 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 31 18 247 46 12 12 13 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 31 18 247 46 12 12 13 - 251: 7(int) Constant 35 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 33 18 251 238 12 12 13 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 31 18 247 46 12 12 13 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 254 22 18 209 12 21 254 12 13 235 239 240 243 245 248 249 252 - 255: TypePointer Uniform 234(UBO) - 256(ubo): 255(ptr) Variable Uniform - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 253 18 209 12 21 258 256(ubo) 46 - 259: 47(int) Constant 4 - 260: TypePointer Uniform 29(float) - 264: TypePointer Function 29(float) - 270: 7(int) Constant 71 -271(gl_PerVertex): TypeStruct 145(fvec4) 29(float) 152 152 - 273: 7(int) Constant 165 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 146 18 22 273 12 12 13 - 275: 7(int) Constant 183 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 31 18 22 275 12 12 13 - 277: 7(int) Constant 226 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 277 12 12 13 - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 277 12 12 13 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 22 18 270 12 21 166 12 13 272 274 276 278 - 280: TypePointer Output 271(gl_PerVertex) - 281: 280(ptr) Variable Output - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 279 18 270 12 21 1 281 46 - 283: TypePointer Uniform 228 - 291: TypePointer Output 145(fvec4) - 294: 7(int) Constant 74 - 295(outViewVec): 133(ptr) Variable Output - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 297 58 18 294 12 21 297 295(outViewVec) 46 - 302: 7(int) Constant 75 -303(outLightVec): 133(ptr) Variable Output - 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 305 58 18 302 12 21 305 303(outLightVec) 46 - 306: TypePointer Uniform 145(fvec4) - 314: 7(int) Constant 76 -315(outWorldPos): 133(ptr) Variable Output - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 317 58 18 314 12 21 317 315(outWorldPos) 46 - 321: 7(int) Constant 77 - 322(outEyePos): 133(ptr) Variable Output - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 324 58 18 321 12 21 324 322(outEyePos) 46 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 231 10 24 12 + 233: 230(bool) ConstantTrue + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 146 23 233 + 234: TypeArray 145(fvec4) 11 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 146 11 + 236(UBO): TypeStruct 228 228 145(fvec4) 234 29(float) 29(float) 32(fvec2) 29(float) + 239: 7(int) Constant 30 + 240: 7(int) Constant 7 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 229 18 239 240 12 12 13 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 229 18 239 240 12 12 13 + 244: 7(int) Constant 31 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 243 146 18 244 240 12 12 13 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 235 18 10 240 12 12 13 + 249: 7(int) Constant 36 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 31 18 249 46 12 12 13 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 31 18 249 46 12 12 13 + 253: 7(int) Constant 35 + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 252 33 18 253 240 12 12 13 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 31 18 249 46 12 12 13 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 256 22 18 209 12 21 256 12 13 237 241 242 245 247 250 251 254 + 257: TypePointer Uniform 236(UBO) + 258(ubo): 257(ptr) Variable Uniform + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 260 255 18 209 12 21 260 258(ubo) 46 + 261: 47(int) Constant 4 + 262: TypePointer Uniform 29(float) + 266: TypePointer Function 29(float) + 272: 7(int) Constant 71 +273(gl_PerVertex): TypeStruct 145(fvec4) 29(float) 152 152 + 275: 7(int) Constant 165 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 146 18 22 275 12 12 13 + 277: 7(int) Constant 183 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 31 18 22 277 12 12 13 + 279: 7(int) Constant 226 + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 279 12 12 13 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 279 12 12 13 + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 22 18 272 12 21 166 12 13 274 276 278 280 + 282: TypePointer Output 273(gl_PerVertex) + 283: 282(ptr) Variable Output + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 281 18 272 12 21 1 283 46 + 285: TypePointer Uniform 228 + 293: TypePointer Output 145(fvec4) + 296: 7(int) Constant 74 + 297(outViewVec): 133(ptr) Variable Output + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 299 58 18 296 12 21 299 297(outViewVec) 46 + 304: 7(int) Constant 75 +305(outLightVec): 133(ptr) Variable Output + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 307 58 18 304 12 21 307 305(outLightVec) 46 + 308: TypePointer Uniform 145(fvec4) + 316: 7(int) Constant 76 +317(outWorldPos): 133(ptr) Variable Output + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 319 58 18 316 12 21 319 317(outWorldPos) 46 + 323: 7(int) Constant 77 + 324(outEyePos): 133(ptr) Variable Output + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 326 58 18 323 12 21 326 324(outEyePos) 46 Line 1 53 11 14(main): 4 Function None 5 15: Label @@ -397,50 +399,50 @@ spv.debuginfo.glsl.tese 224: 32(fvec2) Load 87(outUV) 226: 145(fvec4) ImageSampleExplicitLod 223 224 Lod 225 227: 29(float) CompositeExtract 226 0 - 261: 260(ptr) AccessChain 256(ubo) 259 - 262: 29(float) Load 261 - 263: 29(float) FMul 227 262 - 265: 264(ptr) AccessChain 198(pos) 22 - 266: 29(float) Load 265 - 267: 29(float) FSub 266 263 - 268: 264(ptr) AccessChain 198(pos) 22 - Store 268 267 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 270 270 12 12 - 284: 283(ptr) AccessChain 256(ubo) 50 - 285: 228 Load 284 - 286: 283(ptr) AccessChain 256(ubo) 54 + 263: 262(ptr) AccessChain 258(ubo) 261 + 264: 29(float) Load 263 + 265: 29(float) FMul 227 264 + 267: 266(ptr) AccessChain 198(pos) 22 + 268: 29(float) Load 267 + 269: 29(float) FSub 268 265 + 270: 266(ptr) AccessChain 198(pos) 22 + Store 270 269 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 272 272 12 12 + 286: 285(ptr) AccessChain 258(ubo) 50 287: 228 Load 286 - 288: 228 MatrixTimesMatrix 285 287 - 289: 145(fvec4) Load 198(pos) - 290: 145(fvec4) MatrixTimesVector 288 289 - 292: 291(ptr) AccessChain 281 50 - Store 292 290 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 294 294 12 12 - 298: 145(fvec4) Load 198(pos) - 299: 57(fvec3) VectorShuffle 298 298 0 1 2 - 300: 57(fvec3) FNegate 299 - Store 295(outViewVec) 300 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 302 302 12 12 - 307: 306(ptr) AccessChain 256(ubo) 77 - 308: 145(fvec4) Load 307 - 309: 57(fvec3) VectorShuffle 308 308 0 1 2 - 310: 57(fvec3) Load 295(outViewVec) - 311: 57(fvec3) FAdd 309 310 - 312: 57(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 311 - Store 303(outLightVec) 312 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 314 314 12 12 - 318: 145(fvec4) Load 198(pos) - 319: 57(fvec3) VectorShuffle 318 318 0 1 2 - Store 315(outWorldPos) 319 - 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 321 321 12 12 - 325: 283(ptr) AccessChain 256(ubo) 54 - 326: 228 Load 325 - 327: 145(fvec4) Load 198(pos) - 328: 145(fvec4) MatrixTimesVector 326 327 - 329: 29(float) CompositeExtract 328 0 - 330: 29(float) CompositeExtract 328 1 - 331: 29(float) CompositeExtract 328 2 - 332: 57(fvec3) CompositeConstruct 329 330 331 - Store 322(outEyePos) 332 + 288: 285(ptr) AccessChain 258(ubo) 54 + 289: 228 Load 288 + 290: 228 MatrixTimesMatrix 287 289 + 291: 145(fvec4) Load 198(pos) + 292: 145(fvec4) MatrixTimesVector 290 291 + 294: 293(ptr) AccessChain 283 50 + Store 294 292 + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 296 296 12 12 + 300: 145(fvec4) Load 198(pos) + 301: 57(fvec3) VectorShuffle 300 300 0 1 2 + 302: 57(fvec3) FNegate 301 + Store 297(outViewVec) 302 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 304 304 12 12 + 309: 308(ptr) AccessChain 258(ubo) 77 + 310: 145(fvec4) Load 309 + 311: 57(fvec3) VectorShuffle 310 310 0 1 2 + 312: 57(fvec3) Load 297(outViewVec) + 313: 57(fvec3) FAdd 311 312 + 314: 57(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 313 + Store 305(outLightVec) 314 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 316 316 12 12 + 320: 145(fvec4) Load 198(pos) + 321: 57(fvec3) VectorShuffle 320 320 0 1 2 + Store 317(outWorldPos) 321 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 323 323 12 12 + 327: 285(ptr) AccessChain 258(ubo) 54 + 328: 228 Load 327 + 329: 145(fvec4) Load 198(pos) + 330: 145(fvec4) MatrixTimesVector 328 329 + 331: 29(float) CompositeExtract 330 0 + 332: 29(float) CompositeExtract 330 1 + 333: 29(float) CompositeExtract 330 2 + 334: 57(fvec3) CompositeConstruct 331 332 333 + Store 324(outEyePos) 334 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index 932ecc8f26..16858f3f7b 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,14 +1,14 @@ spv.debuginfo.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 425 +// Id's are bound by 427 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 14 "main" 35 40 46 52 60 76 290 308 313 338 354 371 410 419 + EntryPoint Vertex 14 "main" 35 40 46 52 60 76 292 310 315 340 356 373 412 421 1: String "" 8: String "uint" 16: String "main" @@ -29,31 +29,32 @@ spv.debuginfo.glsl.vert 62: String "instanceTexIndex" 73: String "s" 78: String "instanceRot" - 90: String "modelview" - 95: String "lightPos" - 98: String "globSpeed" - 102: String "UBO" - 106: String "ubo" - 117: String "c" - 132: String "mx" - 175: String "my" - 212: String "mz" - 233: String "rotMat" - 262: String "gRotMat" - 288: String "locPos" - 292: String "inPos" - 304: String "pos" - 310: String "instanceScale" - 315: String "instancePos" - 328: String "gl_Position" - 331: String "gl_PointSize" - 333: String "gl_CullDistance" - 336: String "gl_PerVertex" - 356: String "outNormal" - 373: String "inNormal" - 392: String "lPos" - 412: String "outLightVec" - 421: String "outViewVec" + 87: String "bool" + 92: String "modelview" + 97: String "lightPos" + 100: String "globSpeed" + 104: String "UBO" + 108: String "ubo" + 119: String "c" + 134: String "mx" + 177: String "my" + 214: String "mz" + 235: String "rotMat" + 264: String "gRotMat" + 290: String "locPos" + 294: String "inPos" + 306: String "pos" + 312: String "instanceScale" + 317: String "instancePos" + 330: String "gl_Position" + 333: String "gl_PointSize" + 335: String "gl_CullDistance" + 338: String "gl_PerVertex" + 358: String "outNormal" + 375: String "inNormal" + 394: String "lPos" + 414: String "outLightVec" + 423: String "outViewVec" Name 14 "main" Name 35 "outColor" Name 40 "inColor" @@ -62,65 +63,65 @@ spv.debuginfo.glsl.vert Name 60 "instanceTexIndex" Name 71 "s" Name 76 "instanceRot" - Name 88 "UBO" - MemberName 88(UBO) 0 "projection" - MemberName 88(UBO) 1 "modelview" - MemberName 88(UBO) 2 "lightPos" - MemberName 88(UBO) 3 "locSpeed" - MemberName 88(UBO) 4 "globSpeed" - Name 104 "ubo" - Name 115 "c" - Name 130 "mx" - Name 173 "my" - Name 210 "mz" - Name 231 "rotMat" - Name 260 "gRotMat" - Name 286 "locPos" - Name 290 "inPos" - Name 302 "pos" - Name 308 "instanceScale" - Name 313 "instancePos" - Name 326 "gl_PerVertex" - MemberName 326(gl_PerVertex) 0 "gl_Position" - MemberName 326(gl_PerVertex) 1 "gl_PointSize" - MemberName 326(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 326(gl_PerVertex) 3 "gl_CullDistance" - Name 338 "" - Name 354 "outNormal" - Name 371 "inNormal" - Name 390 "lPos" - Name 410 "outLightVec" - Name 419 "outViewVec" + Name 90 "UBO" + MemberName 90(UBO) 0 "projection" + MemberName 90(UBO) 1 "modelview" + MemberName 90(UBO) 2 "lightPos" + MemberName 90(UBO) 3 "locSpeed" + MemberName 90(UBO) 4 "globSpeed" + Name 106 "ubo" + Name 117 "c" + Name 132 "mx" + Name 175 "my" + Name 212 "mz" + Name 233 "rotMat" + Name 262 "gRotMat" + Name 288 "locPos" + Name 292 "inPos" + Name 304 "pos" + Name 310 "instanceScale" + Name 315 "instancePos" + Name 328 "gl_PerVertex" + MemberName 328(gl_PerVertex) 0 "gl_Position" + MemberName 328(gl_PerVertex) 1 "gl_PointSize" + MemberName 328(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 328(gl_PerVertex) 3 "gl_CullDistance" + Name 340 "" + Name 356 "outNormal" + Name 373 "inNormal" + Name 392 "lPos" + Name 412 "outLightVec" + Name 421 "outViewVec" Decorate 35(outColor) Location 1 Decorate 40(inColor) Location 3 Decorate 46(outUV) Location 2 Decorate 52(inUV) Location 2 Decorate 60(instanceTexIndex) Location 7 Decorate 76(instanceRot) Location 5 - MemberDecorate 88(UBO) 0 ColMajor - MemberDecorate 88(UBO) 0 Offset 0 - MemberDecorate 88(UBO) 0 MatrixStride 16 - MemberDecorate 88(UBO) 1 ColMajor - MemberDecorate 88(UBO) 1 Offset 64 - MemberDecorate 88(UBO) 1 MatrixStride 16 - MemberDecorate 88(UBO) 2 Offset 128 - MemberDecorate 88(UBO) 3 Offset 144 - MemberDecorate 88(UBO) 4 Offset 148 - Decorate 88(UBO) Block - Decorate 104(ubo) DescriptorSet 0 - Decorate 104(ubo) Binding 0 - Decorate 290(inPos) Location 0 - Decorate 308(instanceScale) Location 6 - Decorate 313(instancePos) Location 4 - MemberDecorate 326(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 326(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 326(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 326(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 326(gl_PerVertex) Block - Decorate 354(outNormal) Location 0 - Decorate 371(inNormal) Location 1 - Decorate 410(outLightVec) Location 4 - Decorate 419(outViewVec) Location 3 + MemberDecorate 90(UBO) 0 ColMajor + MemberDecorate 90(UBO) 0 Offset 0 + MemberDecorate 90(UBO) 0 MatrixStride 16 + MemberDecorate 90(UBO) 1 ColMajor + MemberDecorate 90(UBO) 1 Offset 64 + MemberDecorate 90(UBO) 1 MatrixStride 16 + MemberDecorate 90(UBO) 2 Offset 128 + MemberDecorate 90(UBO) 3 Offset 144 + MemberDecorate 90(UBO) 4 Offset 148 + Decorate 90(UBO) Block + Decorate 106(ubo) DescriptorSet 0 + Decorate 106(ubo) Binding 0 + Decorate 292(inPos) Location 0 + Decorate 310(instanceScale) Location 6 + Decorate 315(instancePos) Location 4 + MemberDecorate 328(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 328(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 328(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 328(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 328(gl_PerVertex) Block + Decorate 356(outNormal) Location 0 + Decorate 373(inNormal) Location 1 + Decorate 412(outLightVec) Location 4 + Decorate 421(outViewVec) Location 3 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -173,121 +174,122 @@ spv.debuginfo.glsl.vert 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 84: TypeMatrix 82(fvec4) 4 86: TypeBool - 87: 86(bool) ConstantTrue - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 83 23 87 - 88(UBO): TypeStruct 84 84 82(fvec4) 29(float) 29(float) - 91: 7(int) Constant 42 - 92: 7(int) Constant 7 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 90 85 18 91 92 12 12 13 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 90 85 18 91 92 12 12 13 - 96: 7(int) Constant 43 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 83 18 96 92 12 12 13 - 99: 7(int) Constant 45 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 31 18 99 38 12 12 13 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 31 18 99 38 12 12 13 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 102 22 18 69 12 21 102 12 13 89 93 94 97 100 - 103: TypePointer Uniform 88(UBO) - 104(ubo): 103(ptr) Variable Uniform - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 106 101 18 69 12 21 106 104(ubo) 38 - 107: 56(int) Constant 3 - 108: TypePointer Uniform 29(float) - 114: 7(int) Constant 63 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 31 18 114 12 17 23 - 126: 7(int) Constant 65 - 127: TypeMatrix 32(fvec3) 3 - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 33 13 87 - 129: TypePointer Function 127 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 132 128 18 126 12 17 23 - 134: 56(int) Constant 0 - 137: 29(float) Constant 0 - 139: TypePointer Function 32(fvec3) - 142: 7(int) Constant 66 - 143: 56(int) Constant 1 - 150: 7(int) Constant 67 - 151: 56(int) Constant 2 - 152: 29(float) Constant 1065353216 - 153: 32(fvec3) ConstantComposite 137 137 152 - 156: 7(int) Constant 70 - 164: 7(int) Constant 71 - 172: 7(int) Constant 73 - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 175 128 18 172 12 17 23 - 182: 7(int) Constant 74 - 183: 32(fvec3) ConstantComposite 137 152 137 - 186: 7(int) Constant 75 - 193: 7(int) Constant 78 - 201: 7(int) Constant 79 - 209: 7(int) Constant 81 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 128 18 209 12 17 23 - 214: 32(fvec3) ConstantComposite 152 137 137 - 217: 7(int) Constant 82 - 223: 7(int) Constant 83 - 230: 7(int) Constant 85 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 233 128 18 230 12 17 23 - 241: 7(int) Constant 88 - 244: 56(int) Constant 4 - 250: 7(int) Constant 89 - 258: 7(int) Constant 90 - 259: TypePointer Function 84 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 262 85 18 258 12 17 23 - 267: TypePointer Function 82(fvec4) - 270: 7(int) Constant 91 - 271: 82(fvec4) ConstantComposite 137 152 137 137 - 274: 7(int) Constant 92 - 281: 7(int) Constant 93 - 282: 82(fvec4) ConstantComposite 137 137 137 152 - 285: 7(int) Constant 95 - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 288 83 18 285 12 17 23 - 290(inPos): 39(ptr) Variable Input - 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 292 33 18 285 12 21 292 290(inPos) 38 - 301: 7(int) Constant 96 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 304 83 18 301 12 17 23 -308(instanceScale): 79(ptr) Variable Input - 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 310 31 18 301 12 21 310 308(instanceScale) 38 -313(instancePos): 39(ptr) Variable Input - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 315 33 18 301 12 21 315 313(instancePos) 38 - 323: 7(int) Constant 98 - 324: TypeArray 29(float) 22 - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 -326(gl_PerVertex): TypeStruct 82(fvec4) 29(float) 324 324 - 329: 7(int) Constant 24 - 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 328 83 18 22 329 12 12 13 - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 331 31 18 22 91 12 12 13 - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 333 325 18 22 230 12 12 13 - 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 333 325 18 22 230 12 12 13 - 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 336 22 18 323 12 21 336 12 13 327 330 332 334 - 337: TypePointer Output 326(gl_PerVertex) - 338: 337(ptr) Variable Output - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 335 18 323 12 21 1 338 38 - 340: TypePointer Uniform 84 - 350: TypePointer Output 82(fvec4) - 353: 7(int) Constant 99 - 354(outNormal): 34(ptr) Variable Output - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 356 33 18 353 12 21 356 354(outNormal) 38 - 371(inNormal): 39(ptr) Variable Input - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 373 33 18 353 12 21 373 371(inNormal) 38 - 377: 7(int) Constant 101 - 389: 7(int) Constant 102 - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 392 33 18 389 12 17 23 - 403: TypePointer Uniform 82(fvec4) - 409: 7(int) Constant 103 -410(outLightVec): 34(ptr) Variable Output - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 412 33 18 409 12 21 412 410(outLightVec) 38 - 418: 7(int) Constant 104 - 419(outViewVec): 34(ptr) Variable Output - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 421 33 18 418 12 21 421 419(outViewVec) 38 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 87 10 24 12 + 89: 86(bool) ConstantTrue + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 83 23 89 + 90(UBO): TypeStruct 84 84 82(fvec4) 29(float) 29(float) + 93: 7(int) Constant 42 + 94: 7(int) Constant 7 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 85 18 93 94 12 12 13 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 85 18 93 94 12 12 13 + 98: 7(int) Constant 43 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 83 18 98 94 12 12 13 + 101: 7(int) Constant 45 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 31 18 101 38 12 12 13 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 31 18 101 38 12 12 13 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 104 22 18 69 12 21 104 12 13 91 95 96 99 102 + 105: TypePointer Uniform 90(UBO) + 106(ubo): 105(ptr) Variable Uniform + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 108 103 18 69 12 21 108 106(ubo) 38 + 109: 56(int) Constant 3 + 110: TypePointer Uniform 29(float) + 116: 7(int) Constant 63 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 119 31 18 116 12 17 23 + 128: 7(int) Constant 65 + 129: TypeMatrix 32(fvec3) 3 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 33 13 89 + 131: TypePointer Function 129 + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 134 130 18 128 12 17 23 + 136: 56(int) Constant 0 + 139: 29(float) Constant 0 + 141: TypePointer Function 32(fvec3) + 144: 7(int) Constant 66 + 145: 56(int) Constant 1 + 152: 7(int) Constant 67 + 153: 56(int) Constant 2 + 154: 29(float) Constant 1065353216 + 155: 32(fvec3) ConstantComposite 139 139 154 + 158: 7(int) Constant 70 + 166: 7(int) Constant 71 + 174: 7(int) Constant 73 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 177 130 18 174 12 17 23 + 184: 7(int) Constant 74 + 185: 32(fvec3) ConstantComposite 139 154 139 + 188: 7(int) Constant 75 + 195: 7(int) Constant 78 + 203: 7(int) Constant 79 + 211: 7(int) Constant 81 + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 214 130 18 211 12 17 23 + 216: 32(fvec3) ConstantComposite 154 139 139 + 219: 7(int) Constant 82 + 225: 7(int) Constant 83 + 232: 7(int) Constant 85 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 235 130 18 232 12 17 23 + 243: 7(int) Constant 88 + 246: 56(int) Constant 4 + 252: 7(int) Constant 89 + 260: 7(int) Constant 90 + 261: TypePointer Function 84 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 264 85 18 260 12 17 23 + 269: TypePointer Function 82(fvec4) + 272: 7(int) Constant 91 + 273: 82(fvec4) ConstantComposite 139 154 139 139 + 276: 7(int) Constant 92 + 283: 7(int) Constant 93 + 284: 82(fvec4) ConstantComposite 139 139 139 154 + 287: 7(int) Constant 95 + 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 290 83 18 287 12 17 23 + 292(inPos): 39(ptr) Variable Input + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 294 33 18 287 12 21 294 292(inPos) 38 + 303: 7(int) Constant 96 + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 306 83 18 303 12 17 23 +310(instanceScale): 79(ptr) Variable Input + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 312 31 18 303 12 21 312 310(instanceScale) 38 +315(instancePos): 39(ptr) Variable Input + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 317 33 18 303 12 21 317 315(instancePos) 38 + 325: 7(int) Constant 98 + 326: TypeArray 29(float) 22 + 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 +328(gl_PerVertex): TypeStruct 82(fvec4) 29(float) 326 326 + 331: 7(int) Constant 24 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 330 83 18 22 331 12 12 13 + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 333 31 18 22 93 12 12 13 + 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 335 327 18 22 232 12 12 13 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 335 327 18 22 232 12 12 13 + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 338 22 18 325 12 21 338 12 13 329 332 334 336 + 339: TypePointer Output 328(gl_PerVertex) + 340: 339(ptr) Variable Output + 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 337 18 325 12 21 1 340 38 + 342: TypePointer Uniform 84 + 352: TypePointer Output 82(fvec4) + 355: 7(int) Constant 99 + 356(outNormal): 34(ptr) Variable Output + 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 358 33 18 355 12 21 358 356(outNormal) 38 + 373(inNormal): 39(ptr) Variable Input + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 375 33 18 355 12 21 375 373(inNormal) 38 + 379: 7(int) Constant 101 + 391: 7(int) Constant 102 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 394 33 18 391 12 17 23 + 405: TypePointer Uniform 82(fvec4) + 411: 7(int) Constant 103 +412(outLightVec): 34(ptr) Variable Output + 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 414 33 18 411 12 21 414 412(outLightVec) 38 + 420: 7(int) Constant 104 + 421(outViewVec): 34(ptr) Variable Output + 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 423 33 18 420 12 21 423 421(outViewVec) 38 Line 1 54 11 14(main): 4 Function None 5 15: Label 71(s): 70(ptr) Variable Function - 115(c): 70(ptr) Variable Function - 130(mx): 129(ptr) Variable Function - 173(my): 129(ptr) Variable Function - 210(mz): 129(ptr) Variable Function - 231(rotMat): 129(ptr) Variable Function - 260(gRotMat): 259(ptr) Variable Function - 286(locPos): 267(ptr) Variable Function - 302(pos): 267(ptr) Variable Function - 390(lPos): 139(ptr) Variable Function + 117(c): 70(ptr) Variable Function + 132(mx): 131(ptr) Variable Function + 175(my): 131(ptr) Variable Function + 212(mz): 131(ptr) Variable Function + 233(rotMat): 131(ptr) Variable Function + 262(gRotMat): 261(ptr) Variable Function + 288(locPos): 269(ptr) Variable Function + 304(pos): 269(ptr) Variable Function + 392(lPos): 141(ptr) Variable Function 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 @@ -305,238 +307,238 @@ spv.debuginfo.glsl.vert 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 71(s) 75 80: 79(ptr) AccessChain 76(instanceRot) 12 81: 29(float) Load 80 - 109: 108(ptr) AccessChain 104(ubo) 107 - 110: 29(float) Load 109 - 111: 29(float) FAdd 81 110 - 112: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 111 - Store 71(s) 112 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 114 114 12 12 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 115(c) 75 - 119: 79(ptr) AccessChain 76(instanceRot) 12 - 120: 29(float) Load 119 - 121: 108(ptr) AccessChain 104(ubo) 107 + 111: 110(ptr) AccessChain 106(ubo) 109 + 112: 29(float) Load 111 + 113: 29(float) FAdd 81 112 + 114: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 113 + Store 71(s) 114 + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 116 116 12 12 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 118 117(c) 75 + 121: 79(ptr) AccessChain 76(instanceRot) 12 122: 29(float) Load 121 - 123: 29(float) FAdd 120 122 - 124: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 123 - Store 115(c) 124 - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 126 126 12 12 - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 131 130(mx) 75 - 135: 29(float) Load 115(c) - 136: 29(float) Load 71(s) - 138: 32(fvec3) CompositeConstruct 135 136 137 - 140: 139(ptr) AccessChain 130(mx) 134 - Store 140 138 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 142 142 12 12 - 144: 29(float) Load 71(s) - 145: 29(float) FNegate 144 - 146: 29(float) Load 115(c) - 147: 32(fvec3) CompositeConstruct 145 146 137 - 148: 139(ptr) AccessChain 130(mx) 143 - Store 148 147 - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 150 150 12 12 - 154: 139(ptr) AccessChain 130(mx) 151 - Store 154 153 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 - 157: 79(ptr) AccessChain 76(instanceRot) 22 - 158: 29(float) Load 157 - 159: 108(ptr) AccessChain 104(ubo) 107 + 123: 110(ptr) AccessChain 106(ubo) 109 + 124: 29(float) Load 123 + 125: 29(float) FAdd 122 124 + 126: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 125 + Store 117(c) 126 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 128 128 12 12 + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 133 132(mx) 75 + 137: 29(float) Load 117(c) + 138: 29(float) Load 71(s) + 140: 32(fvec3) CompositeConstruct 137 138 139 + 142: 141(ptr) AccessChain 132(mx) 136 + Store 142 140 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 144 144 12 12 + 146: 29(float) Load 71(s) + 147: 29(float) FNegate 146 + 148: 29(float) Load 117(c) + 149: 32(fvec3) CompositeConstruct 147 148 139 + 150: 141(ptr) AccessChain 132(mx) 145 + Store 150 149 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 152 152 12 12 + 156: 141(ptr) AccessChain 132(mx) 153 + Store 156 155 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 158 158 12 12 + 159: 79(ptr) AccessChain 76(instanceRot) 22 160: 29(float) Load 159 - 161: 29(float) FAdd 158 160 - 162: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 161 - Store 71(s) 162 - 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 164 164 12 12 - 165: 79(ptr) AccessChain 76(instanceRot) 22 - 166: 29(float) Load 165 - 167: 108(ptr) AccessChain 104(ubo) 107 + 161: 110(ptr) AccessChain 106(ubo) 109 + 162: 29(float) Load 161 + 163: 29(float) FAdd 160 162 + 164: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 163 + Store 71(s) 164 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 166 166 12 12 + 167: 79(ptr) AccessChain 76(instanceRot) 22 168: 29(float) Load 167 - 169: 29(float) FAdd 166 168 - 170: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 169 - Store 115(c) 170 - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 172 172 12 12 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 174 173(my) 75 - 177: 29(float) Load 115(c) - 178: 29(float) Load 71(s) - 179: 32(fvec3) CompositeConstruct 177 137 178 - 180: 139(ptr) AccessChain 173(my) 134 - Store 180 179 - 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 182 182 12 12 - 184: 139(ptr) AccessChain 173(my) 143 - Store 184 183 - 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 186 186 12 12 - 187: 29(float) Load 71(s) - 188: 29(float) FNegate 187 - 189: 29(float) Load 115(c) - 190: 32(fvec3) CompositeConstruct 188 137 189 - 191: 139(ptr) AccessChain 173(my) 151 - Store 191 190 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 193 193 12 12 - 194: 79(ptr) AccessChain 76(instanceRot) 24 - 195: 29(float) Load 194 - 196: 108(ptr) AccessChain 104(ubo) 107 + 169: 110(ptr) AccessChain 106(ubo) 109 + 170: 29(float) Load 169 + 171: 29(float) FAdd 168 170 + 172: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 171 + Store 117(c) 172 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 174 174 12 12 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 176 175(my) 75 + 179: 29(float) Load 117(c) + 180: 29(float) Load 71(s) + 181: 32(fvec3) CompositeConstruct 179 139 180 + 182: 141(ptr) AccessChain 175(my) 136 + Store 182 181 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 184 184 12 12 + 186: 141(ptr) AccessChain 175(my) 145 + Store 186 185 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 188 188 12 12 + 189: 29(float) Load 71(s) + 190: 29(float) FNegate 189 + 191: 29(float) Load 117(c) + 192: 32(fvec3) CompositeConstruct 190 139 191 + 193: 141(ptr) AccessChain 175(my) 153 + Store 193 192 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 195 195 12 12 + 196: 79(ptr) AccessChain 76(instanceRot) 24 197: 29(float) Load 196 - 198: 29(float) FAdd 195 197 - 199: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 198 - Store 71(s) 199 - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 201 201 12 12 - 202: 79(ptr) AccessChain 76(instanceRot) 24 - 203: 29(float) Load 202 - 204: 108(ptr) AccessChain 104(ubo) 107 + 198: 110(ptr) AccessChain 106(ubo) 109 + 199: 29(float) Load 198 + 200: 29(float) FAdd 197 199 + 201: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 200 + Store 71(s) 201 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 203 203 12 12 + 204: 79(ptr) AccessChain 76(instanceRot) 24 205: 29(float) Load 204 - 206: 29(float) FAdd 203 205 - 207: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 206 - Store 115(c) 207 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 209 209 12 12 - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(mz) 75 - 215: 139(ptr) AccessChain 210(mz) 134 - Store 215 214 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 217 217 12 12 - 218: 29(float) Load 115(c) - 219: 29(float) Load 71(s) - 220: 32(fvec3) CompositeConstruct 137 218 219 - 221: 139(ptr) AccessChain 210(mz) 143 - Store 221 220 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 223 223 12 12 - 224: 29(float) Load 71(s) - 225: 29(float) FNegate 224 - 226: 29(float) Load 115(c) - 227: 32(fvec3) CompositeConstruct 137 225 226 - 228: 139(ptr) AccessChain 210(mz) 151 - Store 228 227 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 230 230 12 12 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 232 231(rotMat) 75 - 235: 127 Load 210(mz) - 236: 127 Load 173(my) - 237: 127 MatrixTimesMatrix 235 236 - 238: 127 Load 130(mx) - 239: 127 MatrixTimesMatrix 237 238 - Store 231(rotMat) 239 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 241 241 12 12 - 242: 79(ptr) AccessChain 76(instanceRot) 22 - 243: 29(float) Load 242 - 245: 108(ptr) AccessChain 104(ubo) 244 - 246: 29(float) Load 245 - 247: 29(float) FAdd 243 246 - 248: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 247 - Store 71(s) 248 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 250 250 12 12 - 251: 79(ptr) AccessChain 76(instanceRot) 22 - 252: 29(float) Load 251 - 253: 108(ptr) AccessChain 104(ubo) 244 + 206: 110(ptr) AccessChain 106(ubo) 109 + 207: 29(float) Load 206 + 208: 29(float) FAdd 205 207 + 209: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 208 + Store 117(c) 209 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 211 211 12 12 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 213 212(mz) 75 + 217: 141(ptr) AccessChain 212(mz) 136 + Store 217 216 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 219 219 12 12 + 220: 29(float) Load 117(c) + 221: 29(float) Load 71(s) + 222: 32(fvec3) CompositeConstruct 139 220 221 + 223: 141(ptr) AccessChain 212(mz) 145 + Store 223 222 + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 225 225 12 12 + 226: 29(float) Load 71(s) + 227: 29(float) FNegate 226 + 228: 29(float) Load 117(c) + 229: 32(fvec3) CompositeConstruct 139 227 228 + 230: 141(ptr) AccessChain 212(mz) 153 + Store 230 229 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 232 232 12 12 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 234 233(rotMat) 75 + 237: 129 Load 212(mz) + 238: 129 Load 175(my) + 239: 129 MatrixTimesMatrix 237 238 + 240: 129 Load 132(mx) + 241: 129 MatrixTimesMatrix 239 240 + Store 233(rotMat) 241 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 243 243 12 12 + 244: 79(ptr) AccessChain 76(instanceRot) 22 + 245: 29(float) Load 244 + 247: 110(ptr) AccessChain 106(ubo) 246 + 248: 29(float) Load 247 + 249: 29(float) FAdd 245 248 + 250: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 249 + Store 71(s) 250 + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 252 252 12 12 + 253: 79(ptr) AccessChain 76(instanceRot) 22 254: 29(float) Load 253 - 255: 29(float) FAdd 252 254 - 256: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 255 - Store 115(c) 256 - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 258 258 12 12 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 261 260(gRotMat) 75 - 264: 29(float) Load 115(c) - 265: 29(float) Load 71(s) - 266: 82(fvec4) CompositeConstruct 264 137 265 137 - 268: 267(ptr) AccessChain 260(gRotMat) 134 - Store 268 266 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 270 270 12 12 - 272: 267(ptr) AccessChain 260(gRotMat) 143 - Store 272 271 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 274 274 12 12 - 275: 29(float) Load 71(s) - 276: 29(float) FNegate 275 - 277: 29(float) Load 115(c) - 278: 82(fvec4) CompositeConstruct 276 137 277 137 - 279: 267(ptr) AccessChain 260(gRotMat) 151 - Store 279 278 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 281 281 12 12 - 283: 267(ptr) AccessChain 260(gRotMat) 107 - Store 283 282 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 285 285 12 12 - 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 287 286(locPos) 75 - 293: 32(fvec3) Load 290(inPos) - 294: 127 Load 231(rotMat) - 295: 32(fvec3) VectorTimesMatrix 293 294 - 296: 29(float) CompositeExtract 295 0 - 297: 29(float) CompositeExtract 295 1 - 298: 29(float) CompositeExtract 295 2 - 299: 82(fvec4) CompositeConstruct 296 297 298 152 - Store 286(locPos) 299 - 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 301 301 12 12 - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 303 302(pos) 75 - 306: 82(fvec4) Load 286(locPos) - 307: 32(fvec3) VectorShuffle 306 306 0 1 2 - 311: 29(float) Load 308(instanceScale) - 312: 32(fvec3) VectorTimesScalar 307 311 - 316: 32(fvec3) Load 313(instancePos) - 317: 32(fvec3) FAdd 312 316 - 318: 29(float) CompositeExtract 317 0 - 319: 29(float) CompositeExtract 317 1 - 320: 29(float) CompositeExtract 317 2 - 321: 82(fvec4) CompositeConstruct 318 319 320 152 - Store 302(pos) 321 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 323 323 12 12 - 341: 340(ptr) AccessChain 104(ubo) 134 - 342: 84 Load 341 - 343: 340(ptr) AccessChain 104(ubo) 143 + 255: 110(ptr) AccessChain 106(ubo) 246 + 256: 29(float) Load 255 + 257: 29(float) FAdd 254 256 + 258: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 257 + Store 117(c) 258 + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 260 260 12 12 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 263 262(gRotMat) 75 + 266: 29(float) Load 117(c) + 267: 29(float) Load 71(s) + 268: 82(fvec4) CompositeConstruct 266 139 267 139 + 270: 269(ptr) AccessChain 262(gRotMat) 136 + Store 270 268 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 272 272 12 12 + 274: 269(ptr) AccessChain 262(gRotMat) 145 + Store 274 273 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 276 276 12 12 + 277: 29(float) Load 71(s) + 278: 29(float) FNegate 277 + 279: 29(float) Load 117(c) + 280: 82(fvec4) CompositeConstruct 278 139 279 139 + 281: 269(ptr) AccessChain 262(gRotMat) 153 + Store 281 280 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 283 283 12 12 + 285: 269(ptr) AccessChain 262(gRotMat) 109 + Store 285 284 + 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 287 287 12 12 + 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 289 288(locPos) 75 + 295: 32(fvec3) Load 292(inPos) + 296: 129 Load 233(rotMat) + 297: 32(fvec3) VectorTimesMatrix 295 296 + 298: 29(float) CompositeExtract 297 0 + 299: 29(float) CompositeExtract 297 1 + 300: 29(float) CompositeExtract 297 2 + 301: 82(fvec4) CompositeConstruct 298 299 300 154 + Store 288(locPos) 301 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 303 303 12 12 + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 305 304(pos) 75 + 308: 82(fvec4) Load 288(locPos) + 309: 32(fvec3) VectorShuffle 308 308 0 1 2 + 313: 29(float) Load 310(instanceScale) + 314: 32(fvec3) VectorTimesScalar 309 313 + 318: 32(fvec3) Load 315(instancePos) + 319: 32(fvec3) FAdd 314 318 + 320: 29(float) CompositeExtract 319 0 + 321: 29(float) CompositeExtract 319 1 + 322: 29(float) CompositeExtract 319 2 + 323: 82(fvec4) CompositeConstruct 320 321 322 154 + Store 304(pos) 323 + 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 325 325 12 12 + 343: 342(ptr) AccessChain 106(ubo) 136 344: 84 Load 343 - 345: 84 MatrixTimesMatrix 342 344 - 346: 84 Load 260(gRotMat) - 347: 84 MatrixTimesMatrix 345 346 - 348: 82(fvec4) Load 302(pos) - 349: 82(fvec4) MatrixTimesVector 347 348 - 351: 350(ptr) AccessChain 338 134 - Store 351 349 - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 353 353 12 12 - 357: 340(ptr) AccessChain 104(ubo) 143 - 358: 84 Load 357 - 359: 84 Load 260(gRotMat) - 360: 84 MatrixTimesMatrix 358 359 - 361: 82(fvec4) CompositeExtract 360 0 - 362: 32(fvec3) VectorShuffle 361 361 0 1 2 - 363: 82(fvec4) CompositeExtract 360 1 + 345: 342(ptr) AccessChain 106(ubo) 145 + 346: 84 Load 345 + 347: 84 MatrixTimesMatrix 344 346 + 348: 84 Load 262(gRotMat) + 349: 84 MatrixTimesMatrix 347 348 + 350: 82(fvec4) Load 304(pos) + 351: 82(fvec4) MatrixTimesVector 349 350 + 353: 352(ptr) AccessChain 340 136 + Store 353 351 + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 355 355 12 12 + 359: 342(ptr) AccessChain 106(ubo) 145 + 360: 84 Load 359 + 361: 84 Load 262(gRotMat) + 362: 84 MatrixTimesMatrix 360 361 + 363: 82(fvec4) CompositeExtract 362 0 364: 32(fvec3) VectorShuffle 363 363 0 1 2 - 365: 82(fvec4) CompositeExtract 360 2 + 365: 82(fvec4) CompositeExtract 362 1 366: 32(fvec3) VectorShuffle 365 365 0 1 2 - 367: 127 CompositeConstruct 362 364 366 - 368: 127 Load 231(rotMat) - 369: 127 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 368 - 370: 127 MatrixTimesMatrix 367 369 - 374: 32(fvec3) Load 371(inNormal) - 375: 32(fvec3) MatrixTimesVector 370 374 - Store 354(outNormal) 375 - 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 377 377 12 12 - 378: 340(ptr) AccessChain 104(ubo) 143 - 379: 84 Load 378 - 380: 32(fvec3) Load 290(inPos) - 381: 32(fvec3) Load 313(instancePos) - 382: 32(fvec3) FAdd 380 381 - 383: 29(float) CompositeExtract 382 0 - 384: 29(float) CompositeExtract 382 1 - 385: 29(float) CompositeExtract 382 2 - 386: 82(fvec4) CompositeConstruct 383 384 385 152 - 387: 82(fvec4) MatrixTimesVector 379 386 - Store 302(pos) 387 - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 389 389 12 12 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 391 390(lPos) 75 - 394: 340(ptr) AccessChain 104(ubo) 143 - 395: 84 Load 394 - 396: 82(fvec4) CompositeExtract 395 0 - 397: 32(fvec3) VectorShuffle 396 396 0 1 2 - 398: 82(fvec4) CompositeExtract 395 1 + 367: 82(fvec4) CompositeExtract 362 2 + 368: 32(fvec3) VectorShuffle 367 367 0 1 2 + 369: 129 CompositeConstruct 364 366 368 + 370: 129 Load 233(rotMat) + 371: 129 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 370 + 372: 129 MatrixTimesMatrix 369 371 + 376: 32(fvec3) Load 373(inNormal) + 377: 32(fvec3) MatrixTimesVector 372 376 + Store 356(outNormal) 377 + 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 379 379 12 12 + 380: 342(ptr) AccessChain 106(ubo) 145 + 381: 84 Load 380 + 382: 32(fvec3) Load 292(inPos) + 383: 32(fvec3) Load 315(instancePos) + 384: 32(fvec3) FAdd 382 383 + 385: 29(float) CompositeExtract 384 0 + 386: 29(float) CompositeExtract 384 1 + 387: 29(float) CompositeExtract 384 2 + 388: 82(fvec4) CompositeConstruct 385 386 387 154 + 389: 82(fvec4) MatrixTimesVector 381 388 + Store 304(pos) 389 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 391 391 12 12 + 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 393 392(lPos) 75 + 396: 342(ptr) AccessChain 106(ubo) 145 + 397: 84 Load 396 + 398: 82(fvec4) CompositeExtract 397 0 399: 32(fvec3) VectorShuffle 398 398 0 1 2 - 400: 82(fvec4) CompositeExtract 395 2 + 400: 82(fvec4) CompositeExtract 397 1 401: 32(fvec3) VectorShuffle 400 400 0 1 2 - 402: 127 CompositeConstruct 397 399 401 - 404: 403(ptr) AccessChain 104(ubo) 151 - 405: 82(fvec4) Load 404 - 406: 32(fvec3) VectorShuffle 405 405 0 1 2 - 407: 32(fvec3) MatrixTimesVector 402 406 - Store 390(lPos) 407 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 409 409 12 12 - 413: 32(fvec3) Load 390(lPos) - 414: 82(fvec4) Load 302(pos) - 415: 32(fvec3) VectorShuffle 414 414 0 1 2 - 416: 32(fvec3) FSub 413 415 - Store 410(outLightVec) 416 - 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 418 418 12 12 - 422: 82(fvec4) Load 302(pos) - 423: 32(fvec3) VectorShuffle 422 422 0 1 2 - 424: 32(fvec3) FNegate 423 - Store 419(outViewVec) 424 + 402: 82(fvec4) CompositeExtract 397 2 + 403: 32(fvec3) VectorShuffle 402 402 0 1 2 + 404: 129 CompositeConstruct 399 401 403 + 406: 405(ptr) AccessChain 106(ubo) 153 + 407: 82(fvec4) Load 406 + 408: 32(fvec3) VectorShuffle 407 407 0 1 2 + 409: 32(fvec3) MatrixTimesVector 404 408 + Store 392(lPos) 409 + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 411 411 12 12 + 415: 32(fvec3) Load 392(lPos) + 416: 82(fvec4) Load 304(pos) + 417: 32(fvec3) VectorShuffle 416 416 0 1 2 + 418: 32(fvec3) FSub 415 417 + Store 412(outLightVec) 418 + 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 420 420 12 12 + 424: 82(fvec4) Load 304(pos) + 425: 32(fvec3) VectorShuffle 424 424 0 1 2 + 426: 32(fvec3) FNegate 425 + Store 421(outViewVec) 426 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index 1845cfe075..65bd8a17fa 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 978 +// Id's are bound by 953 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 6 "main" 973 + EntryPoint GLCompute 6 "main" 948 ExecutionMode 6 LocalSize 10 10 1 1: String "" 9: String "float" @@ -43,19 +43,19 @@ spv.debuginfo.hlsl.comp 190: String "Particle" 195: String "@data" 199: String "particleIn" - 221: String "particleOut" - 246: String "force" - 259: String "pos" - 269: String "vel" - 569: String "f" - 618: String "sphereDist" - 671: String "calculateNormals" - 675: String "PushConstants" - 678: String "pushConstants" - 681: String "$Global" - 721: String "a" - 734: String "b" - 751: String "c" + 220: String "particleOut" + 245: String "force" + 258: String "pos" + 268: String "vel" + 552: String "f" + 601: String "sphereDist" + 653: String "calculateNormals" + 657: String "PushConstants" + 660: String "pushConstants" + 663: String "$Global" + 700: String "a" + 713: String "b" + 730: String "c" Name 6 "main" Name 27 "springForce(vf3;vf3;f1;" Name 24 "p0" @@ -89,50 +89,50 @@ spv.debuginfo.hlsl.comp Name 193 "particleIn" MemberName 193(particleIn) 0 "@data" Name 201 "particleIn" - Name 217 "particleOut" - MemberName 217(particleOut) 0 "@data" - Name 223 "particleOut" - Name 244 "force" - Name 257 "pos" - Name 267 "vel" - Name 288 "param" + Name 216 "particleOut" + MemberName 216(particleOut) 0 "@data" + Name 222 "particleOut" + Name 243 "force" + Name 256 "pos" + Name 266 "vel" + Name 286 "param" + Name 290 "param" Name 292 "param" - Name 294 "param" - Name 318 "param" - Name 322 "param" - Name 324 "param" + Name 315 "param" + Name 319 "param" + Name 321 "param" + Name 348 "param" Name 352 "param" - Name 356 "param" - Name 358 "param" - Name 381 "param" - Name 385 "param" - Name 387 "param" - Name 422 "param" - Name 426 "param" - Name 428 "param" - Name 458 "param" - Name 462 "param" - Name 464 "param" - Name 502 "param" - Name 506 "param" - Name 508 "param" - Name 542 "param" - Name 546 "param" - Name 548 "param" - Name 567 "f" - Name 616 "sphereDist" - Name 669 "PushConstants" - MemberName 669(PushConstants) 0 "calculateNormals" - Name 676 "$Global" - MemberName 676($Global) 0 "pushConstants" - Name 683 "" - Name 695 "normal" - Name 719 "a" - Name 732 "b" - Name 749 "c" - Name 971 "id" - Name 973 "id" - Name 975 "param" + Name 354 "param" + Name 376 "param" + Name 380 "param" + Name 382 "param" + Name 414 "param" + Name 418 "param" + Name 420 "param" + Name 447 "param" + Name 451 "param" + Name 453 "param" + Name 488 "param" + Name 492 "param" + Name 494 "param" + Name 525 "param" + Name 529 "param" + Name 531 "param" + Name 550 "f" + Name 599 "sphereDist" + Name 651 "PushConstants" + MemberName 651(PushConstants) 0 "calculateNormals" + Name 658 "$Global" + MemberName 658($Global) 0 "pushConstants" + Name 665 "" + Name 676 "normal" + Name 698 "a" + Name 711 "b" + Name 728 "c" + Name 946 "id" + Name 948 "id" + Name 950 "param" MemberDecorate 89(UBO) 0 Offset 0 MemberDecorate 89(UBO) 1 Offset 4 MemberDecorate 89(UBO) 2 Offset 8 @@ -159,17 +159,17 @@ spv.debuginfo.hlsl.comp Decorate 193(particleIn) BufferBlock Decorate 201(particleIn) DescriptorSet 0 Decorate 201(particleIn) Binding 0 - Decorate 215 ArrayStride 80 - MemberDecorate 217(particleOut) 0 Offset 0 - Decorate 217(particleOut) BufferBlock - Decorate 223(particleOut) DescriptorSet 0 - Decorate 223(particleOut) Binding 1 - MemberDecorate 669(PushConstants) 0 Offset 0 - MemberDecorate 676($Global) 0 Offset 0 - Decorate 676($Global) Block - Decorate 683 DescriptorSet 0 - Decorate 683 Binding 3 - Decorate 973(id) BuiltIn GlobalInvocationId + Decorate 214 ArrayStride 80 + MemberDecorate 216(particleOut) 0 Offset 0 + Decorate 216(particleOut) BufferBlock + Decorate 222(particleOut) DescriptorSet 0 + Decorate 222(particleOut) Binding 1 + MemberDecorate 651(PushConstants) 0 Offset 0 + MemberDecorate 658($Global) 0 Offset 0 + Decorate 658($Global) Block + Decorate 665 DescriptorSet 0 + Decorate 665 Binding 3 + Decorate 948(id) BuiltIn GlobalInvocationId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -278,143 +278,118 @@ spv.debuginfo.hlsl.comp 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 199 198 31 176 16 34 199 201(particleIn) 121 204: 84(int) Constant 4 207: 8(float) Constant 1065353216 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 214: 11(int) Constant 89 - 215: TypeRuntimeArray 177(Particle) - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 189 16 -217(particleOut): TypeStruct 215 - 219: 11(int) Constant 37 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 216 31 219 180 16 16 17 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 221 35 31 214 16 34 221 16 17 218 - 222: TypePointer Uniform 217(particleOut) -223(particleOut): 222(ptr) Variable Uniform - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 221 220 31 214 16 34 221 223(particleOut) 121 - 227: TypePointer Uniform 82(fvec4) - 232: 11(int) Constant 90 - 234: 84(int) Constant 1 - 235: 8(float) Constant 0 - 236: 82(fvec4) ConstantComposite 235 235 235 235 - 239: 11(int) Constant 91 - 243: 11(int) Constant 95 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 246 19 31 243 16 60 36 - 248: 84(int) Constant 9 - 256: 11(int) Constant 97 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 259 19 31 256 16 60 36 - 266: 11(int) Constant 98 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 19 31 266 16 60 36 - 276: 11(int) Constant 102 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 285: 11(int) Constant 103 - 302: 11(int) Constant 106 - 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 315: 11(int) Constant 107 - 332: 11(int) Constant 110 - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 345: 11(int) Constant 111 - 351: 84(int) Constant 5 - 366: 11(int) Constant 114 - 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 375: 11(int) Constant 115 - 395: 11(int) Constant 118 - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 414: 11(int) Constant 119 - 421: 84(int) Constant 6 - 436: 11(int) Constant 122 - 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 451: 11(int) Constant 123 - 472: 11(int) Constant 126 - 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 495: 11(int) Constant 127 - 516: 11(int) Constant 130 - 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 535: 11(int) Constant 131 - 556: 11(int) Constant 134 - 557: 84(int) Constant 3 - 566: 11(int) Constant 137 - 568: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 569 19 31 566 16 60 36 - 577: 11(int) Constant 138 - 585: 8(float) Constant 1056964608 - 601: 11(int) Constant 139 - 615: 11(int) Constant 142 - 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 618 19 31 615 16 60 36 - 624: 84(int) Constant 8 - 630: 11(int) Constant 143 - 633: 84(int) Constant 7 - 636: 8(float) Constant 1008981770 - 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 644: 11(int) Constant 145 - 663: 11(int) Constant 147 - 668: 11(int) Constant 151 -669(PushConstants): TypeStruct 11(int) - 672: 11(int) Constant 67 - 673: 11(int) Constant 23 - 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 671 13 31 672 673 16 16 17 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 675 35 31 668 16 34 675 16 17 670 - 676($Global): TypeStruct 669(PushConstants) - 679: 11(int) Constant 71 - 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 678 674 31 679 181 16 16 17 - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 681 35 31 668 16 34 681 16 17 677 - 682: TypePointer Uniform 676($Global) - 683: 682(ptr) Variable Uniform - 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 680 31 668 16 34 1 683 121 - 685: TypePointer Uniform 11(int) - 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 694: 11(int) Constant 152 - 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 19 31 694 16 60 36 - 698: 18(fvec3) ConstantComposite 235 235 235 - 700: 11(int) Constant 154 - 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 709: 11(int) Constant 155 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 718: 11(int) Constant 156 - 720: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 721 19 31 718 16 60 36 - 731: 11(int) Constant 157 - 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 19 31 731 16 60 36 - 748: 11(int) Constant 158 - 750: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 751 19 31 748 16 60 36 - 764: 11(int) Constant 159 - 776: 11(int) Constant 161 - 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 789: 11(int) Constant 162 - 801: 11(int) Constant 163 - 814: 11(int) Constant 164 - 823: 11(int) Constant 165 - 835: 11(int) Constant 168 - 842: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 848: 11(int) Constant 169 - 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 857: 11(int) Constant 170 - 869: 11(int) Constant 171 - 882: 11(int) Constant 172 - 891: 11(int) Constant 173 - 903: 11(int) Constant 175 - 910: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 916: 11(int) Constant 176 - 925: 11(int) Constant 177 - 938: 11(int) Constant 178 - 950: 11(int) Constant 179 - 962: 11(int) Constant 182 - 972: TypePointer Input 51(ivec3) - 973(id): 972(ptr) Variable Input + 213: 11(int) Constant 89 + 214: TypeRuntimeArray 177(Particle) + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 189 16 +216(particleOut): TypeStruct 214 + 218: 11(int) Constant 37 + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 215 31 218 180 16 16 17 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 220 35 31 213 16 34 220 16 17 217 + 221: TypePointer Uniform 216(particleOut) +222(particleOut): 221(ptr) Variable Uniform + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 220 219 31 213 16 34 220 222(particleOut) 121 + 226: TypePointer Uniform 82(fvec4) + 231: 11(int) Constant 90 + 233: 84(int) Constant 1 + 234: 8(float) Constant 0 + 235: 82(fvec4) ConstantComposite 234 234 234 234 + 238: 11(int) Constant 91 + 242: 11(int) Constant 95 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 19 31 242 16 60 36 + 247: 84(int) Constant 9 + 255: 11(int) Constant 97 + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 258 19 31 255 16 60 36 + 265: 11(int) Constant 98 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 268 19 31 265 16 60 36 + 275: 11(int) Constant 102 + 283: 11(int) Constant 103 + 300: 11(int) Constant 106 + 312: 11(int) Constant 107 + 329: 11(int) Constant 110 + 341: 11(int) Constant 111 + 347: 84(int) Constant 5 + 362: 11(int) Constant 114 + 370: 11(int) Constant 115 + 390: 11(int) Constant 118 + 406: 11(int) Constant 119 + 413: 84(int) Constant 6 + 428: 11(int) Constant 122 + 440: 11(int) Constant 123 + 461: 11(int) Constant 126 + 481: 11(int) Constant 127 + 502: 11(int) Constant 130 + 518: 11(int) Constant 131 + 539: 11(int) Constant 134 + 540: 84(int) Constant 3 + 549: 11(int) Constant 137 + 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 552 19 31 549 16 60 36 + 560: 11(int) Constant 138 + 568: 8(float) Constant 1056964608 + 584: 11(int) Constant 139 + 598: 11(int) Constant 142 + 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 601 19 31 598 16 60 36 + 607: 84(int) Constant 8 + 613: 11(int) Constant 143 + 616: 84(int) Constant 7 + 619: 8(float) Constant 1008981770 + 626: 11(int) Constant 145 + 645: 11(int) Constant 147 + 650: 11(int) Constant 151 +651(PushConstants): TypeStruct 11(int) + 654: 11(int) Constant 67 + 655: 11(int) Constant 23 + 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 653 13 31 654 655 16 16 17 + 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 657 35 31 650 16 34 657 16 17 652 + 658($Global): TypeStruct 651(PushConstants) + 661: 11(int) Constant 71 + 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 660 656 31 661 181 16 16 17 + 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 663 35 31 650 16 34 663 16 17 659 + 664: TypePointer Uniform 658($Global) + 665: 664(ptr) Variable Uniform + 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 662 31 650 16 34 1 665 121 + 667: TypePointer Uniform 11(int) + 675: 11(int) Constant 152 + 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 19 31 675 16 60 36 + 679: 18(fvec3) ConstantComposite 234 234 234 + 681: 11(int) Constant 154 + 689: 11(int) Constant 155 + 697: 11(int) Constant 156 + 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 700 19 31 697 16 60 36 + 710: 11(int) Constant 157 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 19 31 710 16 60 36 + 727: 11(int) Constant 158 + 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 730 19 31 727 16 60 36 + 743: 11(int) Constant 159 + 755: 11(int) Constant 161 + 767: 11(int) Constant 162 + 779: 11(int) Constant 163 + 792: 11(int) Constant 164 + 801: 11(int) Constant 165 + 813: 11(int) Constant 168 + 825: 11(int) Constant 169 + 833: 11(int) Constant 170 + 845: 11(int) Constant 171 + 858: 11(int) Constant 172 + 867: 11(int) Constant 173 + 879: 11(int) Constant 175 + 891: 11(int) Constant 176 + 900: 11(int) Constant 177 + 913: 11(int) Constant 178 + 925: 11(int) Constant 179 + 937: 11(int) Constant 182 + 947: TypePointer Input 51(ivec3) + 948(id): 947(ptr) Variable Input Line 1 82 1 6(main): 4 Function None 5 7: Label - 971(id): 53(ptr) Variable Function - 975(param): 53(ptr) Variable Function + 946(id): 53(ptr) Variable Function + 950(param): 53(ptr) Variable Function Line 1 82 0 - 974: 51(ivec3) Load 973(id) - Store 971(id) 974 - 976: 51(ivec3) Load 971(id) - Store 975(param) 976 - 977: 4 FunctionCall 57(@main(vu3;) 975(param) + 949: 51(ivec3) Load 948(id) + Store 946(id) 949 + 951: 51(ivec3) Load 946(id) + Store 950(param) 951 + 952: 4 FunctionCall 57(@main(vu3;) 950(param) Return FunctionEnd Line 1 75 1 @@ -455,39 +430,39 @@ spv.debuginfo.hlsl.comp 56(id): 53(ptr) FunctionParameter 58: Label 140(index): 139(ptr) Variable Function - 244(force): 20(ptr) Variable Function - 257(pos): 20(ptr) Variable Function - 267(vel): 20(ptr) Variable Function - 288(param): 20(ptr) Variable Function - 292(param): 20(ptr) Variable Function - 294(param): 21(ptr) Variable Function - 318(param): 20(ptr) Variable Function - 322(param): 20(ptr) Variable Function - 324(param): 21(ptr) Variable Function + 243(force): 20(ptr) Variable Function + 256(pos): 20(ptr) Variable Function + 266(vel): 20(ptr) Variable Function + 286(param): 20(ptr) Variable Function + 290(param): 20(ptr) Variable Function + 292(param): 21(ptr) Variable Function + 315(param): 20(ptr) Variable Function + 319(param): 20(ptr) Variable Function + 321(param): 21(ptr) Variable Function + 348(param): 20(ptr) Variable Function 352(param): 20(ptr) Variable Function - 356(param): 20(ptr) Variable Function - 358(param): 21(ptr) Variable Function - 381(param): 20(ptr) Variable Function - 385(param): 20(ptr) Variable Function - 387(param): 21(ptr) Variable Function - 422(param): 20(ptr) Variable Function - 426(param): 20(ptr) Variable Function - 428(param): 21(ptr) Variable Function - 458(param): 20(ptr) Variable Function - 462(param): 20(ptr) Variable Function - 464(param): 21(ptr) Variable Function - 502(param): 20(ptr) Variable Function - 506(param): 20(ptr) Variable Function - 508(param): 21(ptr) Variable Function - 542(param): 20(ptr) Variable Function - 546(param): 20(ptr) Variable Function - 548(param): 21(ptr) Variable Function - 567(f): 20(ptr) Variable Function - 616(sphereDist): 20(ptr) Variable Function - 695(normal): 20(ptr) Variable Function - 719(a): 20(ptr) Variable Function - 732(b): 20(ptr) Variable Function - 749(c): 20(ptr) Variable Function + 354(param): 21(ptr) Variable Function + 376(param): 20(ptr) Variable Function + 380(param): 20(ptr) Variable Function + 382(param): 21(ptr) Variable Function + 414(param): 20(ptr) Variable Function + 418(param): 20(ptr) Variable Function + 420(param): 21(ptr) Variable Function + 447(param): 20(ptr) Variable Function + 451(param): 20(ptr) Variable Function + 453(param): 21(ptr) Variable Function + 488(param): 20(ptr) Variable Function + 492(param): 20(ptr) Variable Function + 494(param): 21(ptr) Variable Function + 525(param): 20(ptr) Variable Function + 529(param): 20(ptr) Variable Function + 531(param): 21(ptr) Variable Function + 550(f): 20(ptr) Variable Function + 599(sphereDist): 20(ptr) Variable Function + 676(normal): 20(ptr) Variable Function + 698(a): 20(ptr) Variable Function + 711(b): 20(ptr) Variable Function + 728(c): 20(ptr) Variable Function 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 61 61 16 16 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 56(id) 43 @@ -526,712 +501,712 @@ spv.debuginfo.hlsl.comp 203: 11(int) Load 140(index) 205: 124(ptr) AccessChain 201(particleIn) 122 203 204 206: 8(float) Load 205 - 209: 164(bool) FOrdEqual 206 207 - SelectionMerge 211 None - BranchConditional 209 210 211 - 210: Label - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 214 214 16 16 + 208: 164(bool) FOrdEqual 206 207 + SelectionMerge 210 None + BranchConditional 208 209 210 + 209: Label + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 213 213 16 16 + 224: 11(int) Load 140(index) 225: 11(int) Load 140(index) - 226: 11(int) Load 140(index) - 228: 227(ptr) AccessChain 223(particleOut) 122 226 122 - 229: 82(fvec4) Load 228 - 230: 227(ptr) AccessChain 223(particleOut) 122 225 122 - Store 230 229 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 232 232 16 16 - 233: 11(int) Load 140(index) - 237: 227(ptr) AccessChain 223(particleOut) 122 233 234 - Store 237 236 - 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 239 239 16 16 + 227: 226(ptr) AccessChain 222(particleOut) 122 225 122 + 228: 82(fvec4) Load 227 + 229: 226(ptr) AccessChain 222(particleOut) 122 224 122 + Store 229 228 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 231 231 16 16 + 232: 11(int) Load 140(index) + 236: 226(ptr) AccessChain 222(particleOut) 122 232 233 + Store 236 235 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 238 238 16 16 Return - 211: Label - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 243 243 16 16 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 245 244(force) 43 - 249: 227(ptr) AccessChain 119 122 248 - 250: 82(fvec4) Load 249 - 251: 18(fvec3) VectorShuffle 250 250 0 1 2 - 252: 124(ptr) AccessChain 119 122 234 - 253: 8(float) Load 252 - 254: 18(fvec3) VectorTimesScalar 251 253 - Store 244(force) 254 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 256 256 16 16 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 258 257(pos) 43 - 261: 11(int) Load 140(index) - 262: 227(ptr) AccessChain 201(particleIn) 122 261 122 - 263: 82(fvec4) Load 262 - 264: 18(fvec3) VectorShuffle 263 263 0 1 2 - Store 257(pos) 264 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 266 266 16 16 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 268 267(vel) 43 - 271: 11(int) Load 140(index) - 272: 227(ptr) AccessChain 201(particleIn) 122 271 234 - 273: 82(fvec4) Load 272 - 274: 18(fvec3) VectorShuffle 273 273 0 1 2 - Store 267(vel) 274 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 276 276 16 16 - 277: 139(ptr) AccessChain 56(id) 16 - 278: 11(int) Load 277 - 280: 164(bool) UGreaterThan 278 16 - SelectionMerge 282 None - BranchConditional 280 281 282 - 281: Label - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 285 285 16 16 - 286: 11(int) Load 140(index) - 287: 11(int) ISub 286 35 - 289: 227(ptr) AccessChain 201(particleIn) 122 287 122 - 290: 82(fvec4) Load 289 - 291: 18(fvec3) VectorShuffle 290 290 0 1 2 - Store 288(param) 291 - 293: 18(fvec3) Load 257(pos) - Store 292(param) 293 - 295: 124(ptr) AccessChain 119 122 204 - 296: 8(float) Load 295 - Store 294(param) 296 - 297: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 288(param) 292(param) 294(param) - 298: 18(fvec3) Load 244(force) - 299: 18(fvec3) FAdd 298 297 - Store 244(force) 299 - Branch 282 - 282: Label - 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 302 302 16 16 - 303: 139(ptr) AccessChain 56(id) 16 - 304: 11(int) Load 303 - 305: 147(ptr) AccessChain 119 122 146 16 - 306: 84(int) Load 305 - 307: 84(int) ISub 306 234 - 308: 11(int) Bitcast 307 - 310: 164(bool) ULessThan 304 308 - SelectionMerge 312 None - BranchConditional 310 311 312 - 311: Label - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 315 315 16 16 - 316: 11(int) Load 140(index) - 317: 11(int) IAdd 316 35 - 319: 227(ptr) AccessChain 201(particleIn) 122 317 122 - 320: 82(fvec4) Load 319 - 321: 18(fvec3) VectorShuffle 320 320 0 1 2 - Store 318(param) 321 - 323: 18(fvec3) Load 257(pos) - Store 322(param) 323 - 325: 124(ptr) AccessChain 119 122 204 - 326: 8(float) Load 325 - Store 324(param) 326 - 327: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 318(param) 322(param) 324(param) - 328: 18(fvec3) Load 244(force) - 329: 18(fvec3) FAdd 328 327 - Store 244(force) 329 - Branch 312 - 312: Label - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 332 332 16 16 - 333: 139(ptr) AccessChain 56(id) 35 - 334: 11(int) Load 333 - 335: 147(ptr) AccessChain 119 122 146 35 - 336: 84(int) Load 335 - 337: 84(int) ISub 336 234 - 338: 11(int) Bitcast 337 - 340: 164(bool) ULessThan 334 338 - SelectionMerge 342 None - BranchConditional 340 341 342 - 341: Label - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 345 345 16 16 - 346: 11(int) Load 140(index) - 347: 147(ptr) AccessChain 119 122 146 16 - 348: 84(int) Load 347 - 349: 11(int) Bitcast 348 - 350: 11(int) IAdd 346 349 - 353: 227(ptr) AccessChain 201(particleIn) 122 350 122 - 354: 82(fvec4) Load 353 - 355: 18(fvec3) VectorShuffle 354 354 0 1 2 - Store 352(param) 355 - 357: 18(fvec3) Load 257(pos) - Store 356(param) 357 - 359: 124(ptr) AccessChain 119 122 351 - 360: 8(float) Load 359 - Store 358(param) 360 - 361: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 352(param) 356(param) 358(param) - 362: 18(fvec3) Load 244(force) - 363: 18(fvec3) FAdd 362 361 - Store 244(force) 363 - Branch 342 - 342: Label - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 366 366 16 16 - 367: 139(ptr) AccessChain 56(id) 35 - 368: 11(int) Load 367 - 370: 164(bool) UGreaterThan 368 16 - SelectionMerge 372 None - BranchConditional 370 371 372 - 371: Label - 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 375 375 16 16 - 376: 11(int) Load 140(index) - 377: 147(ptr) AccessChain 119 122 146 16 - 378: 84(int) Load 377 - 379: 11(int) Bitcast 378 - 380: 11(int) ISub 376 379 - 382: 227(ptr) AccessChain 201(particleIn) 122 380 122 - 383: 82(fvec4) Load 382 - 384: 18(fvec3) VectorShuffle 383 383 0 1 2 - Store 381(param) 384 - 386: 18(fvec3) Load 257(pos) - Store 385(param) 386 - 388: 124(ptr) AccessChain 119 122 351 - 389: 8(float) Load 388 - Store 387(param) 389 - 390: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 381(param) 385(param) 387(param) - 391: 18(fvec3) Load 244(force) - 392: 18(fvec3) FAdd 391 390 - Store 244(force) 392 - Branch 372 - 372: Label - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 395 395 16 16 - 396: 139(ptr) AccessChain 56(id) 16 - 397: 11(int) Load 396 - 399: 164(bool) UGreaterThan 397 16 - 400: 139(ptr) AccessChain 56(id) 35 - 401: 11(int) Load 400 - 402: 147(ptr) AccessChain 119 122 146 35 - 403: 84(int) Load 402 - 404: 84(int) ISub 403 234 - 405: 11(int) Bitcast 404 - 407: 164(bool) ULessThan 401 405 - 409: 164(bool) LogicalAnd 399 407 - SelectionMerge 411 None - BranchConditional 409 410 411 - 410: Label - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 414 414 16 16 - 415: 11(int) Load 140(index) - 416: 147(ptr) AccessChain 119 122 146 16 - 417: 84(int) Load 416 - 418: 11(int) Bitcast 417 - 419: 11(int) IAdd 415 418 - 420: 11(int) ISub 419 35 - 423: 227(ptr) AccessChain 201(particleIn) 122 420 122 - 424: 82(fvec4) Load 423 - 425: 18(fvec3) VectorShuffle 424 424 0 1 2 - Store 422(param) 425 - 427: 18(fvec3) Load 257(pos) - Store 426(param) 427 - 429: 124(ptr) AccessChain 119 122 421 - 430: 8(float) Load 429 - Store 428(param) 430 - 431: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 422(param) 426(param) 428(param) - 432: 18(fvec3) Load 244(force) - 433: 18(fvec3) FAdd 432 431 - Store 244(force) 433 - Branch 411 - 411: Label - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 436 436 16 16 - 437: 139(ptr) AccessChain 56(id) 16 - 438: 11(int) Load 437 - 440: 164(bool) UGreaterThan 438 16 - 441: 139(ptr) AccessChain 56(id) 35 - 442: 11(int) Load 441 - 444: 164(bool) UGreaterThan 442 16 - 446: 164(bool) LogicalAnd 440 444 - SelectionMerge 448 None - BranchConditional 446 447 448 - 447: Label - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 451 451 16 16 - 452: 11(int) Load 140(index) - 453: 147(ptr) AccessChain 119 122 146 16 - 454: 84(int) Load 453 - 455: 11(int) Bitcast 454 - 456: 11(int) ISub 452 455 - 457: 11(int) ISub 456 35 - 459: 227(ptr) AccessChain 201(particleIn) 122 457 122 - 460: 82(fvec4) Load 459 - 461: 18(fvec3) VectorShuffle 460 460 0 1 2 - Store 458(param) 461 - 463: 18(fvec3) Load 257(pos) - Store 462(param) 463 - 465: 124(ptr) AccessChain 119 122 421 - 466: 8(float) Load 465 - Store 464(param) 466 - 467: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 458(param) 462(param) 464(param) - 468: 18(fvec3) Load 244(force) - 469: 18(fvec3) FAdd 468 467 - Store 244(force) 469 - Branch 448 - 448: Label - 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 472 472 16 16 - 473: 139(ptr) AccessChain 56(id) 16 - 474: 11(int) Load 473 - 475: 147(ptr) AccessChain 119 122 146 16 - 476: 84(int) Load 475 - 477: 84(int) ISub 476 234 - 478: 11(int) Bitcast 477 - 480: 164(bool) ULessThan 474 478 - 481: 139(ptr) AccessChain 56(id) 35 - 482: 11(int) Load 481 - 483: 147(ptr) AccessChain 119 122 146 35 - 484: 84(int) Load 483 - 485: 84(int) ISub 484 234 - 486: 11(int) Bitcast 485 - 488: 164(bool) ULessThan 482 486 - 490: 164(bool) LogicalAnd 480 488 - SelectionMerge 492 None - BranchConditional 490 491 492 - 491: Label - 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 495 495 16 16 - 496: 11(int) Load 140(index) - 497: 147(ptr) AccessChain 119 122 146 16 - 498: 84(int) Load 497 - 499: 11(int) Bitcast 498 - 500: 11(int) IAdd 496 499 - 501: 11(int) IAdd 500 35 - 503: 227(ptr) AccessChain 201(particleIn) 122 501 122 - 504: 82(fvec4) Load 503 - 505: 18(fvec3) VectorShuffle 504 504 0 1 2 - Store 502(param) 505 - 507: 18(fvec3) Load 257(pos) - Store 506(param) 507 - 509: 124(ptr) AccessChain 119 122 421 - 510: 8(float) Load 509 - Store 508(param) 510 - 511: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 502(param) 506(param) 508(param) - 512: 18(fvec3) Load 244(force) - 513: 18(fvec3) FAdd 512 511 - Store 244(force) 513 - Branch 492 - 492: Label - 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 516 516 16 16 - 517: 139(ptr) AccessChain 56(id) 16 - 518: 11(int) Load 517 - 519: 147(ptr) AccessChain 119 122 146 16 - 520: 84(int) Load 519 - 521: 84(int) ISub 520 234 - 522: 11(int) Bitcast 521 - 524: 164(bool) ULessThan 518 522 - 525: 139(ptr) AccessChain 56(id) 35 - 526: 11(int) Load 525 - 528: 164(bool) UGreaterThan 526 16 - 530: 164(bool) LogicalAnd 524 528 - SelectionMerge 532 None - BranchConditional 530 531 532 - 531: Label - 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 535 535 16 16 - 536: 11(int) Load 140(index) - 537: 147(ptr) AccessChain 119 122 146 16 - 538: 84(int) Load 537 - 539: 11(int) Bitcast 538 - 540: 11(int) ISub 536 539 - 541: 11(int) IAdd 540 35 - 543: 227(ptr) AccessChain 201(particleIn) 122 541 122 - 544: 82(fvec4) Load 543 - 545: 18(fvec3) VectorShuffle 544 544 0 1 2 - Store 542(param) 545 - 547: 18(fvec3) Load 257(pos) - Store 546(param) 547 - 549: 124(ptr) AccessChain 119 122 421 - 550: 8(float) Load 549 - Store 548(param) 550 - 551: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 542(param) 546(param) 548(param) - 552: 18(fvec3) Load 244(force) - 553: 18(fvec3) FAdd 552 551 - Store 244(force) 553 - Branch 532 - 532: Label - 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 556 556 16 16 - 558: 124(ptr) AccessChain 119 122 557 - 559: 8(float) Load 558 - 560: 8(float) FNegate 559 - 561: 18(fvec3) Load 267(vel) - 562: 18(fvec3) VectorTimesScalar 561 560 - 563: 18(fvec3) Load 244(force) - 564: 18(fvec3) FAdd 563 562 - Store 244(force) 564 - 565: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 566 566 16 16 - 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 568 567(f) 43 - 571: 18(fvec3) Load 244(force) - 572: 124(ptr) AccessChain 119 122 234 - 573: 8(float) Load 572 - 574: 8(float) FDiv 207 573 - 575: 18(fvec3) VectorTimesScalar 571 574 - Store 567(f) 575 - 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 577 577 16 16 - 578: 11(int) Load 140(index) - 579: 18(fvec3) Load 257(pos) - 580: 18(fvec3) Load 267(vel) - 581: 124(ptr) AccessChain 119 122 122 - 582: 8(float) Load 581 - 583: 18(fvec3) VectorTimesScalar 580 582 - 584: 18(fvec3) FAdd 579 583 - 586: 18(fvec3) Load 567(f) - 587: 18(fvec3) VectorTimesScalar 586 585 + 210: Label + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 242 242 16 16 + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(force) 43 + 248: 226(ptr) AccessChain 119 122 247 + 249: 82(fvec4) Load 248 + 250: 18(fvec3) VectorShuffle 249 249 0 1 2 + 251: 124(ptr) AccessChain 119 122 233 + 252: 8(float) Load 251 + 253: 18(fvec3) VectorTimesScalar 250 252 + Store 243(force) 253 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 255 255 16 16 + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 257 256(pos) 43 + 260: 11(int) Load 140(index) + 261: 226(ptr) AccessChain 201(particleIn) 122 260 122 + 262: 82(fvec4) Load 261 + 263: 18(fvec3) VectorShuffle 262 262 0 1 2 + Store 256(pos) 263 + 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 265 265 16 16 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 267 266(vel) 43 + 270: 11(int) Load 140(index) + 271: 226(ptr) AccessChain 201(particleIn) 122 270 233 + 272: 82(fvec4) Load 271 + 273: 18(fvec3) VectorShuffle 272 272 0 1 2 + Store 266(vel) 273 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 275 275 16 16 + 276: 139(ptr) AccessChain 56(id) 16 + 277: 11(int) Load 276 + 278: 164(bool) UGreaterThan 277 16 + SelectionMerge 280 None + BranchConditional 278 279 280 + 279: Label + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 283 283 16 16 + 284: 11(int) Load 140(index) + 285: 11(int) ISub 284 35 + 287: 226(ptr) AccessChain 201(particleIn) 122 285 122 + 288: 82(fvec4) Load 287 + 289: 18(fvec3) VectorShuffle 288 288 0 1 2 + Store 286(param) 289 + 291: 18(fvec3) Load 256(pos) + Store 290(param) 291 + 293: 124(ptr) AccessChain 119 122 204 + 294: 8(float) Load 293 + Store 292(param) 294 + 295: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 286(param) 290(param) 292(param) + 296: 18(fvec3) Load 243(force) + 297: 18(fvec3) FAdd 296 295 + Store 243(force) 297 + Branch 280 + 280: Label + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 300 300 16 16 + 301: 139(ptr) AccessChain 56(id) 16 + 302: 11(int) Load 301 + 303: 147(ptr) AccessChain 119 122 146 16 + 304: 84(int) Load 303 + 305: 84(int) ISub 304 233 + 306: 11(int) Bitcast 305 + 307: 164(bool) ULessThan 302 306 + SelectionMerge 309 None + BranchConditional 307 308 309 + 308: Label + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 312 312 16 16 + 313: 11(int) Load 140(index) + 314: 11(int) IAdd 313 35 + 316: 226(ptr) AccessChain 201(particleIn) 122 314 122 + 317: 82(fvec4) Load 316 + 318: 18(fvec3) VectorShuffle 317 317 0 1 2 + Store 315(param) 318 + 320: 18(fvec3) Load 256(pos) + Store 319(param) 320 + 322: 124(ptr) AccessChain 119 122 204 + 323: 8(float) Load 322 + Store 321(param) 323 + 324: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 315(param) 319(param) 321(param) + 325: 18(fvec3) Load 243(force) + 326: 18(fvec3) FAdd 325 324 + Store 243(force) 326 + Branch 309 + 309: Label + 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 329 329 16 16 + 330: 139(ptr) AccessChain 56(id) 35 + 331: 11(int) Load 330 + 332: 147(ptr) AccessChain 119 122 146 35 + 333: 84(int) Load 332 + 334: 84(int) ISub 333 233 + 335: 11(int) Bitcast 334 + 336: 164(bool) ULessThan 331 335 + SelectionMerge 338 None + BranchConditional 336 337 338 + 337: Label + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 341 341 16 16 + 342: 11(int) Load 140(index) + 343: 147(ptr) AccessChain 119 122 146 16 + 344: 84(int) Load 343 + 345: 11(int) Bitcast 344 + 346: 11(int) IAdd 342 345 + 349: 226(ptr) AccessChain 201(particleIn) 122 346 122 + 350: 82(fvec4) Load 349 + 351: 18(fvec3) VectorShuffle 350 350 0 1 2 + Store 348(param) 351 + 353: 18(fvec3) Load 256(pos) + Store 352(param) 353 + 355: 124(ptr) AccessChain 119 122 347 + 356: 8(float) Load 355 + Store 354(param) 356 + 357: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 348(param) 352(param) 354(param) + 358: 18(fvec3) Load 243(force) + 359: 18(fvec3) FAdd 358 357 + Store 243(force) 359 + Branch 338 + 338: Label + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 362 362 16 16 + 363: 139(ptr) AccessChain 56(id) 35 + 364: 11(int) Load 363 + 365: 164(bool) UGreaterThan 364 16 + SelectionMerge 367 None + BranchConditional 365 366 367 + 366: Label + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 370 370 16 16 + 371: 11(int) Load 140(index) + 372: 147(ptr) AccessChain 119 122 146 16 + 373: 84(int) Load 372 + 374: 11(int) Bitcast 373 + 375: 11(int) ISub 371 374 + 377: 226(ptr) AccessChain 201(particleIn) 122 375 122 + 378: 82(fvec4) Load 377 + 379: 18(fvec3) VectorShuffle 378 378 0 1 2 + Store 376(param) 379 + 381: 18(fvec3) Load 256(pos) + Store 380(param) 381 + 383: 124(ptr) AccessChain 119 122 347 + 384: 8(float) Load 383 + Store 382(param) 384 + 385: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 376(param) 380(param) 382(param) + 386: 18(fvec3) Load 243(force) + 387: 18(fvec3) FAdd 386 385 + Store 243(force) 387 + Branch 367 + 367: Label + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 390 390 16 16 + 391: 139(ptr) AccessChain 56(id) 16 + 392: 11(int) Load 391 + 393: 164(bool) UGreaterThan 392 16 + 394: 139(ptr) AccessChain 56(id) 35 + 395: 11(int) Load 394 + 396: 147(ptr) AccessChain 119 122 146 35 + 397: 84(int) Load 396 + 398: 84(int) ISub 397 233 + 399: 11(int) Bitcast 398 + 400: 164(bool) ULessThan 395 399 + 401: 164(bool) LogicalAnd 393 400 + SelectionMerge 403 None + BranchConditional 401 402 403 + 402: Label + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 406 406 16 16 + 407: 11(int) Load 140(index) + 408: 147(ptr) AccessChain 119 122 146 16 + 409: 84(int) Load 408 + 410: 11(int) Bitcast 409 + 411: 11(int) IAdd 407 410 + 412: 11(int) ISub 411 35 + 415: 226(ptr) AccessChain 201(particleIn) 122 412 122 + 416: 82(fvec4) Load 415 + 417: 18(fvec3) VectorShuffle 416 416 0 1 2 + Store 414(param) 417 + 419: 18(fvec3) Load 256(pos) + Store 418(param) 419 + 421: 124(ptr) AccessChain 119 122 413 + 422: 8(float) Load 421 + Store 420(param) 422 + 423: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 414(param) 418(param) 420(param) + 424: 18(fvec3) Load 243(force) + 425: 18(fvec3) FAdd 424 423 + Store 243(force) 425 + Branch 403 + 403: Label + 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 428 428 16 16 + 429: 139(ptr) AccessChain 56(id) 16 + 430: 11(int) Load 429 + 431: 164(bool) UGreaterThan 430 16 + 432: 139(ptr) AccessChain 56(id) 35 + 433: 11(int) Load 432 + 434: 164(bool) UGreaterThan 433 16 + 435: 164(bool) LogicalAnd 431 434 + SelectionMerge 437 None + BranchConditional 435 436 437 + 436: Label + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 440 440 16 16 + 441: 11(int) Load 140(index) + 442: 147(ptr) AccessChain 119 122 146 16 + 443: 84(int) Load 442 + 444: 11(int) Bitcast 443 + 445: 11(int) ISub 441 444 + 446: 11(int) ISub 445 35 + 448: 226(ptr) AccessChain 201(particleIn) 122 446 122 + 449: 82(fvec4) Load 448 + 450: 18(fvec3) VectorShuffle 449 449 0 1 2 + Store 447(param) 450 + 452: 18(fvec3) Load 256(pos) + Store 451(param) 452 + 454: 124(ptr) AccessChain 119 122 413 + 455: 8(float) Load 454 + Store 453(param) 455 + 456: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 447(param) 451(param) 453(param) + 457: 18(fvec3) Load 243(force) + 458: 18(fvec3) FAdd 457 456 + Store 243(force) 458 + Branch 437 + 437: Label + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 461 461 16 16 + 462: 139(ptr) AccessChain 56(id) 16 + 463: 11(int) Load 462 + 464: 147(ptr) AccessChain 119 122 146 16 + 465: 84(int) Load 464 + 466: 84(int) ISub 465 233 + 467: 11(int) Bitcast 466 + 468: 164(bool) ULessThan 463 467 + 469: 139(ptr) AccessChain 56(id) 35 + 470: 11(int) Load 469 + 471: 147(ptr) AccessChain 119 122 146 35 + 472: 84(int) Load 471 + 473: 84(int) ISub 472 233 + 474: 11(int) Bitcast 473 + 475: 164(bool) ULessThan 470 474 + 476: 164(bool) LogicalAnd 468 475 + SelectionMerge 478 None + BranchConditional 476 477 478 + 477: Label + 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 481 481 16 16 + 482: 11(int) Load 140(index) + 483: 147(ptr) AccessChain 119 122 146 16 + 484: 84(int) Load 483 + 485: 11(int) Bitcast 484 + 486: 11(int) IAdd 482 485 + 487: 11(int) IAdd 486 35 + 489: 226(ptr) AccessChain 201(particleIn) 122 487 122 + 490: 82(fvec4) Load 489 + 491: 18(fvec3) VectorShuffle 490 490 0 1 2 + Store 488(param) 491 + 493: 18(fvec3) Load 256(pos) + Store 492(param) 493 + 495: 124(ptr) AccessChain 119 122 413 + 496: 8(float) Load 495 + Store 494(param) 496 + 497: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 488(param) 492(param) 494(param) + 498: 18(fvec3) Load 243(force) + 499: 18(fvec3) FAdd 498 497 + Store 243(force) 499 + Branch 478 + 478: Label + 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 502 502 16 16 + 503: 139(ptr) AccessChain 56(id) 16 + 504: 11(int) Load 503 + 505: 147(ptr) AccessChain 119 122 146 16 + 506: 84(int) Load 505 + 507: 84(int) ISub 506 233 + 508: 11(int) Bitcast 507 + 509: 164(bool) ULessThan 504 508 + 510: 139(ptr) AccessChain 56(id) 35 + 511: 11(int) Load 510 + 512: 164(bool) UGreaterThan 511 16 + 513: 164(bool) LogicalAnd 509 512 + SelectionMerge 515 None + BranchConditional 513 514 515 + 514: Label + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 518 518 16 16 + 519: 11(int) Load 140(index) + 520: 147(ptr) AccessChain 119 122 146 16 + 521: 84(int) Load 520 + 522: 11(int) Bitcast 521 + 523: 11(int) ISub 519 522 + 524: 11(int) IAdd 523 35 + 526: 226(ptr) AccessChain 201(particleIn) 122 524 122 + 527: 82(fvec4) Load 526 + 528: 18(fvec3) VectorShuffle 527 527 0 1 2 + Store 525(param) 528 + 530: 18(fvec3) Load 256(pos) + Store 529(param) 530 + 532: 124(ptr) AccessChain 119 122 413 + 533: 8(float) Load 532 + Store 531(param) 533 + 534: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 525(param) 529(param) 531(param) + 535: 18(fvec3) Load 243(force) + 536: 18(fvec3) FAdd 535 534 + Store 243(force) 536 + Branch 515 + 515: Label + 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 539 539 16 16 + 541: 124(ptr) AccessChain 119 122 540 + 542: 8(float) Load 541 + 543: 8(float) FNegate 542 + 544: 18(fvec3) Load 266(vel) + 545: 18(fvec3) VectorTimesScalar 544 543 + 546: 18(fvec3) Load 243(force) + 547: 18(fvec3) FAdd 546 545 + Store 243(force) 547 + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 549 549 16 16 + 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 551 550(f) 43 + 554: 18(fvec3) Load 243(force) + 555: 124(ptr) AccessChain 119 122 233 + 556: 8(float) Load 555 + 557: 8(float) FDiv 207 556 + 558: 18(fvec3) VectorTimesScalar 554 557 + Store 550(f) 558 + 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 560 560 16 16 + 561: 11(int) Load 140(index) + 562: 18(fvec3) Load 256(pos) + 563: 18(fvec3) Load 266(vel) + 564: 124(ptr) AccessChain 119 122 122 + 565: 8(float) Load 564 + 566: 18(fvec3) VectorTimesScalar 563 565 + 567: 18(fvec3) FAdd 562 566 + 569: 18(fvec3) Load 550(f) + 570: 18(fvec3) VectorTimesScalar 569 568 + 571: 124(ptr) AccessChain 119 122 122 + 572: 8(float) Load 571 + 573: 18(fvec3) VectorTimesScalar 570 572 + 574: 124(ptr) AccessChain 119 122 122 + 575: 8(float) Load 574 + 576: 18(fvec3) VectorTimesScalar 573 575 + 577: 18(fvec3) FAdd 567 576 + 578: 8(float) CompositeExtract 577 0 + 579: 8(float) CompositeExtract 577 1 + 580: 8(float) CompositeExtract 577 2 + 581: 82(fvec4) CompositeConstruct 578 579 580 207 + 582: 226(ptr) AccessChain 222(particleOut) 122 561 122 + Store 582 581 + 583: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 584 584 16 16 + 585: 11(int) Load 140(index) + 586: 18(fvec3) Load 266(vel) + 587: 18(fvec3) Load 550(f) 588: 124(ptr) AccessChain 119 122 122 589: 8(float) Load 588 590: 18(fvec3) VectorTimesScalar 587 589 - 591: 124(ptr) AccessChain 119 122 122 - 592: 8(float) Load 591 - 593: 18(fvec3) VectorTimesScalar 590 592 - 594: 18(fvec3) FAdd 584 593 - 595: 8(float) CompositeExtract 594 0 - 596: 8(float) CompositeExtract 594 1 - 597: 8(float) CompositeExtract 594 2 - 598: 82(fvec4) CompositeConstruct 595 596 597 207 - 599: 227(ptr) AccessChain 223(particleOut) 122 578 122 - Store 599 598 - 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 601 601 16 16 - 602: 11(int) Load 140(index) - 603: 18(fvec3) Load 267(vel) - 604: 18(fvec3) Load 567(f) - 605: 124(ptr) AccessChain 119 122 122 - 606: 8(float) Load 605 - 607: 18(fvec3) VectorTimesScalar 604 606 - 608: 18(fvec3) FAdd 603 607 - 609: 8(float) CompositeExtract 608 0 - 610: 8(float) CompositeExtract 608 1 - 611: 8(float) CompositeExtract 608 2 - 612: 82(fvec4) CompositeConstruct 609 610 611 235 - 613: 227(ptr) AccessChain 223(particleOut) 122 602 234 - Store 613 612 - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 615 615 16 16 - 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 617 616(sphereDist) 43 - 620: 11(int) Load 140(index) - 621: 227(ptr) AccessChain 223(particleOut) 122 620 122 - 622: 82(fvec4) Load 621 - 623: 18(fvec3) VectorShuffle 622 622 0 1 2 - 625: 227(ptr) AccessChain 119 122 624 - 626: 82(fvec4) Load 625 - 627: 18(fvec3) VectorShuffle 626 626 0 1 2 - 628: 18(fvec3) FSub 623 627 - Store 616(sphereDist) 628 - 629: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 630 630 16 16 - 631: 18(fvec3) Load 616(sphereDist) - 632: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 631 - 634: 124(ptr) AccessChain 119 122 633 - 635: 8(float) Load 634 - 637: 8(float) FAdd 635 636 - 639: 164(bool) FOrdLessThan 632 637 - SelectionMerge 641 None - BranchConditional 639 640 641 - 640: Label - 642: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 644 644 16 16 - 645: 11(int) Load 140(index) - 646: 227(ptr) AccessChain 119 122 624 - 647: 82(fvec4) Load 646 - 648: 18(fvec3) VectorShuffle 647 647 0 1 2 - 649: 18(fvec3) Load 616(sphereDist) - 650: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 649 - 651: 124(ptr) AccessChain 119 122 633 - 652: 8(float) Load 651 - 653: 8(float) FAdd 652 636 - 654: 18(fvec3) VectorTimesScalar 650 653 - 655: 18(fvec3) FAdd 648 654 - 656: 124(ptr) AccessChain 223(particleOut) 122 645 122 16 - 657: 8(float) CompositeExtract 655 0 - Store 656 657 - 658: 124(ptr) AccessChain 223(particleOut) 122 645 122 35 - 659: 8(float) CompositeExtract 655 1 - Store 658 659 - 660: 124(ptr) AccessChain 223(particleOut) 122 645 122 46 - 661: 8(float) CompositeExtract 655 2 - Store 660 661 - 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 663 663 16 16 - 664: 11(int) Load 140(index) - 665: 227(ptr) AccessChain 223(particleOut) 122 664 234 - Store 665 236 - Branch 641 - 641: Label - 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 668 668 16 16 - 686: 685(ptr) AccessChain 683 122 122 - 687: 11(int) Load 686 - 689: 164(bool) IEqual 687 35 - SelectionMerge 691 None - BranchConditional 689 690 691 - 690: Label - 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 694 694 16 16 - 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 696 695(normal) 43 - Store 695(normal) 698 - 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 700 700 16 16 - 701: 139(ptr) AccessChain 56(id) 35 - 702: 11(int) Load 701 - 704: 164(bool) UGreaterThan 702 16 - SelectionMerge 706 None - BranchConditional 704 705 706 - 705: Label - 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 709 709 16 16 - 710: 139(ptr) AccessChain 56(id) 16 - 711: 11(int) Load 710 - 713: 164(bool) UGreaterThan 711 16 - SelectionMerge 715 None - BranchConditional 713 714 715 - 714: Label - 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 718 718 16 16 - 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 720 719(a) 43 - 723: 11(int) Load 140(index) - 724: 11(int) ISub 723 35 - 725: 227(ptr) AccessChain 201(particleIn) 122 724 122 - 726: 82(fvec4) Load 725 - 727: 18(fvec3) VectorShuffle 726 726 0 1 2 - 728: 18(fvec3) Load 257(pos) - 729: 18(fvec3) FSub 727 728 - Store 719(a) 729 - 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 731 731 16 16 - 735: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(b) 43 - 736: 11(int) Load 140(index) - 737: 147(ptr) AccessChain 119 122 146 16 - 738: 84(int) Load 737 - 739: 11(int) Bitcast 738 - 740: 11(int) ISub 736 739 - 741: 11(int) ISub 740 35 - 742: 227(ptr) AccessChain 201(particleIn) 122 741 122 - 743: 82(fvec4) Load 742 - 744: 18(fvec3) VectorShuffle 743 743 0 1 2 - 745: 18(fvec3) Load 257(pos) - 746: 18(fvec3) FSub 744 745 - Store 732(b) 746 - 747: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 748 748 16 16 - 752: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 750 749(c) 43 - 753: 11(int) Load 140(index) - 754: 147(ptr) AccessChain 119 122 146 16 - 755: 84(int) Load 754 - 756: 11(int) Bitcast 755 - 757: 11(int) ISub 753 756 - 758: 227(ptr) AccessChain 201(particleIn) 122 757 122 - 759: 82(fvec4) Load 758 - 760: 18(fvec3) VectorShuffle 759 759 0 1 2 - 761: 18(fvec3) Load 257(pos) - 762: 18(fvec3) FSub 760 761 - Store 749(c) 762 - 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 764 764 16 16 - 765: 18(fvec3) Load 719(a) - 766: 18(fvec3) Load 732(b) - 767: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 765 766 - 768: 18(fvec3) Load 732(b) - 769: 18(fvec3) Load 749(c) - 770: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 768 769 - 771: 18(fvec3) FAdd 767 770 - 772: 18(fvec3) Load 695(normal) - 773: 18(fvec3) FAdd 772 771 - Store 695(normal) 773 - Branch 715 - 715: Label - 774: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 775: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 776 776 16 16 - 777: 139(ptr) AccessChain 56(id) 16 - 778: 11(int) Load 777 - 779: 147(ptr) AccessChain 119 122 146 16 - 780: 84(int) Load 779 - 781: 84(int) ISub 780 234 - 782: 11(int) Bitcast 781 - 784: 164(bool) ULessThan 778 782 - SelectionMerge 786 None - BranchConditional 784 785 786 - 785: Label - 787: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 789 789 16 16 - 790: 11(int) Load 140(index) - 791: 147(ptr) AccessChain 119 122 146 16 - 792: 84(int) Load 791 - 793: 11(int) Bitcast 792 - 794: 11(int) ISub 790 793 - 795: 227(ptr) AccessChain 201(particleIn) 122 794 122 + 591: 18(fvec3) FAdd 586 590 + 592: 8(float) CompositeExtract 591 0 + 593: 8(float) CompositeExtract 591 1 + 594: 8(float) CompositeExtract 591 2 + 595: 82(fvec4) CompositeConstruct 592 593 594 234 + 596: 226(ptr) AccessChain 222(particleOut) 122 585 233 + Store 596 595 + 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 598 598 16 16 + 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 600 599(sphereDist) 43 + 603: 11(int) Load 140(index) + 604: 226(ptr) AccessChain 222(particleOut) 122 603 122 + 605: 82(fvec4) Load 604 + 606: 18(fvec3) VectorShuffle 605 605 0 1 2 + 608: 226(ptr) AccessChain 119 122 607 + 609: 82(fvec4) Load 608 + 610: 18(fvec3) VectorShuffle 609 609 0 1 2 + 611: 18(fvec3) FSub 606 610 + Store 599(sphereDist) 611 + 612: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 613 613 16 16 + 614: 18(fvec3) Load 599(sphereDist) + 615: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 614 + 617: 124(ptr) AccessChain 119 122 616 + 618: 8(float) Load 617 + 620: 8(float) FAdd 618 619 + 621: 164(bool) FOrdLessThan 615 620 + SelectionMerge 623 None + BranchConditional 621 622 623 + 622: Label + 624: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 626 626 16 16 + 627: 11(int) Load 140(index) + 628: 226(ptr) AccessChain 119 122 607 + 629: 82(fvec4) Load 628 + 630: 18(fvec3) VectorShuffle 629 629 0 1 2 + 631: 18(fvec3) Load 599(sphereDist) + 632: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 631 + 633: 124(ptr) AccessChain 119 122 616 + 634: 8(float) Load 633 + 635: 8(float) FAdd 634 619 + 636: 18(fvec3) VectorTimesScalar 632 635 + 637: 18(fvec3) FAdd 630 636 + 638: 124(ptr) AccessChain 222(particleOut) 122 627 122 16 + 639: 8(float) CompositeExtract 637 0 + Store 638 639 + 640: 124(ptr) AccessChain 222(particleOut) 122 627 122 35 + 641: 8(float) CompositeExtract 637 1 + Store 640 641 + 642: 124(ptr) AccessChain 222(particleOut) 122 627 122 46 + 643: 8(float) CompositeExtract 637 2 + Store 642 643 + 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 645 645 16 16 + 646: 11(int) Load 140(index) + 647: 226(ptr) AccessChain 222(particleOut) 122 646 233 + Store 647 235 + Branch 623 + 623: Label + 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 649: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 650 650 16 16 + 668: 667(ptr) AccessChain 665 122 122 + 669: 11(int) Load 668 + 670: 164(bool) IEqual 669 35 + SelectionMerge 672 None + BranchConditional 670 671 672 + 671: Label + 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 675 675 16 16 + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 677 676(normal) 43 + Store 676(normal) 679 + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 681 681 16 16 + 682: 139(ptr) AccessChain 56(id) 35 + 683: 11(int) Load 682 + 684: 164(bool) UGreaterThan 683 16 + SelectionMerge 686 None + BranchConditional 684 685 686 + 685: Label + 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 689 689 16 16 + 690: 139(ptr) AccessChain 56(id) 16 + 691: 11(int) Load 690 + 692: 164(bool) UGreaterThan 691 16 + SelectionMerge 694 None + BranchConditional 692 693 694 + 693: Label + 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 697 697 16 16 + 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 699 698(a) 43 + 702: 11(int) Load 140(index) + 703: 11(int) ISub 702 35 + 704: 226(ptr) AccessChain 201(particleIn) 122 703 122 + 705: 82(fvec4) Load 704 + 706: 18(fvec3) VectorShuffle 705 705 0 1 2 + 707: 18(fvec3) Load 256(pos) + 708: 18(fvec3) FSub 706 707 + Store 698(a) 708 + 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 710 710 16 16 + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(b) 43 + 715: 11(int) Load 140(index) + 716: 147(ptr) AccessChain 119 122 146 16 + 717: 84(int) Load 716 + 718: 11(int) Bitcast 717 + 719: 11(int) ISub 715 718 + 720: 11(int) ISub 719 35 + 721: 226(ptr) AccessChain 201(particleIn) 122 720 122 + 722: 82(fvec4) Load 721 + 723: 18(fvec3) VectorShuffle 722 722 0 1 2 + 724: 18(fvec3) Load 256(pos) + 725: 18(fvec3) FSub 723 724 + Store 711(b) 725 + 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 727 727 16 16 + 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 729 728(c) 43 + 732: 11(int) Load 140(index) + 733: 147(ptr) AccessChain 119 122 146 16 + 734: 84(int) Load 733 + 735: 11(int) Bitcast 734 + 736: 11(int) ISub 732 735 + 737: 226(ptr) AccessChain 201(particleIn) 122 736 122 + 738: 82(fvec4) Load 737 + 739: 18(fvec3) VectorShuffle 738 738 0 1 2 + 740: 18(fvec3) Load 256(pos) + 741: 18(fvec3) FSub 739 740 + Store 728(c) 741 + 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 743 743 16 16 + 744: 18(fvec3) Load 698(a) + 745: 18(fvec3) Load 711(b) + 746: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 744 745 + 747: 18(fvec3) Load 711(b) + 748: 18(fvec3) Load 728(c) + 749: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 747 748 + 750: 18(fvec3) FAdd 746 749 + 751: 18(fvec3) Load 676(normal) + 752: 18(fvec3) FAdd 751 750 + Store 676(normal) 752 + Branch 694 + 694: Label + 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 755 755 16 16 + 756: 139(ptr) AccessChain 56(id) 16 + 757: 11(int) Load 756 + 758: 147(ptr) AccessChain 119 122 146 16 + 759: 84(int) Load 758 + 760: 84(int) ISub 759 233 + 761: 11(int) Bitcast 760 + 762: 164(bool) ULessThan 757 761 + SelectionMerge 764 None + BranchConditional 762 763 764 + 763: Label + 765: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 766: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 767 767 16 16 + 768: 11(int) Load 140(index) + 769: 147(ptr) AccessChain 119 122 146 16 + 770: 84(int) Load 769 + 771: 11(int) Bitcast 770 + 772: 11(int) ISub 768 771 + 773: 226(ptr) AccessChain 201(particleIn) 122 772 122 + 774: 82(fvec4) Load 773 + 775: 18(fvec3) VectorShuffle 774 774 0 1 2 + 776: 18(fvec3) Load 256(pos) + 777: 18(fvec3) FSub 775 776 + Store 698(a) 777 + 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 779 779 16 16 + 780: 11(int) Load 140(index) + 781: 147(ptr) AccessChain 119 122 146 16 + 782: 84(int) Load 781 + 783: 11(int) Bitcast 782 + 784: 11(int) ISub 780 783 + 785: 11(int) IAdd 784 35 + 786: 226(ptr) AccessChain 201(particleIn) 122 785 122 + 787: 82(fvec4) Load 786 + 788: 18(fvec3) VectorShuffle 787 787 0 1 2 + 789: 18(fvec3) Load 256(pos) + 790: 18(fvec3) FSub 788 789 + Store 711(b) 790 + 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 792 792 16 16 + 793: 11(int) Load 140(index) + 794: 11(int) IAdd 793 35 + 795: 226(ptr) AccessChain 201(particleIn) 122 794 122 796: 82(fvec4) Load 795 797: 18(fvec3) VectorShuffle 796 796 0 1 2 - 798: 18(fvec3) Load 257(pos) + 798: 18(fvec3) Load 256(pos) 799: 18(fvec3) FSub 797 798 - Store 719(a) 799 + Store 728(c) 799 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 801 801 16 16 - 802: 11(int) Load 140(index) - 803: 147(ptr) AccessChain 119 122 146 16 - 804: 84(int) Load 803 - 805: 11(int) Bitcast 804 - 806: 11(int) ISub 802 805 - 807: 11(int) IAdd 806 35 - 808: 227(ptr) AccessChain 201(particleIn) 122 807 122 - 809: 82(fvec4) Load 808 - 810: 18(fvec3) VectorShuffle 809 809 0 1 2 - 811: 18(fvec3) Load 257(pos) - 812: 18(fvec3) FSub 810 811 - Store 732(b) 812 - 813: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 814 814 16 16 - 815: 11(int) Load 140(index) - 816: 11(int) IAdd 815 35 - 817: 227(ptr) AccessChain 201(particleIn) 122 816 122 - 818: 82(fvec4) Load 817 - 819: 18(fvec3) VectorShuffle 818 818 0 1 2 - 820: 18(fvec3) Load 257(pos) - 821: 18(fvec3) FSub 819 820 - Store 749(c) 821 - 822: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 823 823 16 16 - 824: 18(fvec3) Load 719(a) - 825: 18(fvec3) Load 732(b) - 826: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 824 825 - 827: 18(fvec3) Load 732(b) - 828: 18(fvec3) Load 749(c) - 829: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 827 828 - 830: 18(fvec3) FAdd 826 829 - 831: 18(fvec3) Load 695(normal) - 832: 18(fvec3) FAdd 831 830 - Store 695(normal) 832 - Branch 786 - 786: Label - Branch 706 - 706: Label - 833: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 835 835 16 16 - 836: 139(ptr) AccessChain 56(id) 35 - 837: 11(int) Load 836 - 838: 147(ptr) AccessChain 119 122 146 35 - 839: 84(int) Load 838 - 840: 84(int) ISub 839 234 - 841: 11(int) Bitcast 840 - 843: 164(bool) ULessThan 837 841 - SelectionMerge 845 None - BranchConditional 843 844 845 - 844: Label - 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 848 848 16 16 - 849: 139(ptr) AccessChain 56(id) 16 - 850: 11(int) Load 849 - 852: 164(bool) UGreaterThan 850 16 - SelectionMerge 854 None - BranchConditional 852 853 854 - 853: Label - 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 856: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 857 857 16 16 - 858: 11(int) Load 140(index) - 859: 147(ptr) AccessChain 119 122 146 16 - 860: 84(int) Load 859 - 861: 11(int) Bitcast 860 - 862: 11(int) IAdd 858 861 - 863: 227(ptr) AccessChain 201(particleIn) 122 862 122 - 864: 82(fvec4) Load 863 - 865: 18(fvec3) VectorShuffle 864 864 0 1 2 - 866: 18(fvec3) Load 257(pos) - 867: 18(fvec3) FSub 865 866 - Store 719(a) 867 - 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 869 869 16 16 - 870: 11(int) Load 140(index) - 871: 147(ptr) AccessChain 119 122 146 16 - 872: 84(int) Load 871 - 873: 11(int) Bitcast 872 - 874: 11(int) IAdd 870 873 - 875: 11(int) ISub 874 35 - 876: 227(ptr) AccessChain 201(particleIn) 122 875 122 - 877: 82(fvec4) Load 876 - 878: 18(fvec3) VectorShuffle 877 877 0 1 2 - 879: 18(fvec3) Load 257(pos) - 880: 18(fvec3) FSub 878 879 - Store 732(b) 880 - 881: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 882 882 16 16 - 883: 11(int) Load 140(index) - 884: 11(int) ISub 883 35 - 885: 227(ptr) AccessChain 201(particleIn) 122 884 122 - 886: 82(fvec4) Load 885 - 887: 18(fvec3) VectorShuffle 886 886 0 1 2 - 888: 18(fvec3) Load 257(pos) - 889: 18(fvec3) FSub 887 888 - Store 749(c) 889 + 802: 18(fvec3) Load 698(a) + 803: 18(fvec3) Load 711(b) + 804: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 802 803 + 805: 18(fvec3) Load 711(b) + 806: 18(fvec3) Load 728(c) + 807: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 805 806 + 808: 18(fvec3) FAdd 804 807 + 809: 18(fvec3) Load 676(normal) + 810: 18(fvec3) FAdd 809 808 + Store 676(normal) 810 + Branch 764 + 764: Label + Branch 686 + 686: Label + 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 812: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 813 813 16 16 + 814: 139(ptr) AccessChain 56(id) 35 + 815: 11(int) Load 814 + 816: 147(ptr) AccessChain 119 122 146 35 + 817: 84(int) Load 816 + 818: 84(int) ISub 817 233 + 819: 11(int) Bitcast 818 + 820: 164(bool) ULessThan 815 819 + SelectionMerge 822 None + BranchConditional 820 821 822 + 821: Label + 823: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 824: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 825 825 16 16 + 826: 139(ptr) AccessChain 56(id) 16 + 827: 11(int) Load 826 + 828: 164(bool) UGreaterThan 827 16 + SelectionMerge 830 None + BranchConditional 828 829 830 + 829: Label + 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 832: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 833 833 16 16 + 834: 11(int) Load 140(index) + 835: 147(ptr) AccessChain 119 122 146 16 + 836: 84(int) Load 835 + 837: 11(int) Bitcast 836 + 838: 11(int) IAdd 834 837 + 839: 226(ptr) AccessChain 201(particleIn) 122 838 122 + 840: 82(fvec4) Load 839 + 841: 18(fvec3) VectorShuffle 840 840 0 1 2 + 842: 18(fvec3) Load 256(pos) + 843: 18(fvec3) FSub 841 842 + Store 698(a) 843 + 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 845 845 16 16 + 846: 11(int) Load 140(index) + 847: 147(ptr) AccessChain 119 122 146 16 + 848: 84(int) Load 847 + 849: 11(int) Bitcast 848 + 850: 11(int) IAdd 846 849 + 851: 11(int) ISub 850 35 + 852: 226(ptr) AccessChain 201(particleIn) 122 851 122 + 853: 82(fvec4) Load 852 + 854: 18(fvec3) VectorShuffle 853 853 0 1 2 + 855: 18(fvec3) Load 256(pos) + 856: 18(fvec3) FSub 854 855 + Store 711(b) 856 + 857: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 858 858 16 16 + 859: 11(int) Load 140(index) + 860: 11(int) ISub 859 35 + 861: 226(ptr) AccessChain 201(particleIn) 122 860 122 + 862: 82(fvec4) Load 861 + 863: 18(fvec3) VectorShuffle 862 862 0 1 2 + 864: 18(fvec3) Load 256(pos) + 865: 18(fvec3) FSub 863 864 + Store 728(c) 865 + 866: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 867 867 16 16 + 868: 18(fvec3) Load 698(a) + 869: 18(fvec3) Load 711(b) + 870: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 868 869 + 871: 18(fvec3) Load 711(b) + 872: 18(fvec3) Load 728(c) + 873: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 871 872 + 874: 18(fvec3) FAdd 870 873 + 875: 18(fvec3) Load 676(normal) + 876: 18(fvec3) FAdd 875 874 + Store 676(normal) 876 + Branch 830 + 830: Label + 877: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 878: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 879 879 16 16 + 880: 139(ptr) AccessChain 56(id) 16 + 881: 11(int) Load 880 + 882: 147(ptr) AccessChain 119 122 146 16 + 883: 84(int) Load 882 + 884: 84(int) ISub 883 233 + 885: 11(int) Bitcast 884 + 886: 164(bool) ULessThan 881 885 + SelectionMerge 888 None + BranchConditional 886 887 888 + 887: Label + 889: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 890: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 891 891 16 16 - 892: 18(fvec3) Load 719(a) - 893: 18(fvec3) Load 732(b) - 894: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 892 893 - 895: 18(fvec3) Load 732(b) - 896: 18(fvec3) Load 749(c) - 897: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 895 896 - 898: 18(fvec3) FAdd 894 897 - 899: 18(fvec3) Load 695(normal) - 900: 18(fvec3) FAdd 899 898 - Store 695(normal) 900 - Branch 854 - 854: Label - 901: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 902: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 903 903 16 16 - 904: 139(ptr) AccessChain 56(id) 16 - 905: 11(int) Load 904 - 906: 147(ptr) AccessChain 119 122 146 16 - 907: 84(int) Load 906 - 908: 84(int) ISub 907 234 - 909: 11(int) Bitcast 908 - 911: 164(bool) ULessThan 905 909 - SelectionMerge 913 None - BranchConditional 911 912 913 - 912: Label - 914: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 915: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 916 916 16 16 - 917: 11(int) Load 140(index) - 918: 11(int) IAdd 917 35 - 919: 227(ptr) AccessChain 201(particleIn) 122 918 122 + 892: 11(int) Load 140(index) + 893: 11(int) IAdd 892 35 + 894: 226(ptr) AccessChain 201(particleIn) 122 893 122 + 895: 82(fvec4) Load 894 + 896: 18(fvec3) VectorShuffle 895 895 0 1 2 + 897: 18(fvec3) Load 256(pos) + 898: 18(fvec3) FSub 896 897 + Store 698(a) 898 + 899: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 900 900 16 16 + 901: 11(int) Load 140(index) + 902: 147(ptr) AccessChain 119 122 146 16 + 903: 84(int) Load 902 + 904: 11(int) Bitcast 903 + 905: 11(int) IAdd 901 904 + 906: 11(int) IAdd 905 35 + 907: 226(ptr) AccessChain 201(particleIn) 122 906 122 + 908: 82(fvec4) Load 907 + 909: 18(fvec3) VectorShuffle 908 908 0 1 2 + 910: 18(fvec3) Load 256(pos) + 911: 18(fvec3) FSub 909 910 + Store 711(b) 911 + 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 913 913 16 16 + 914: 11(int) Load 140(index) + 915: 147(ptr) AccessChain 119 122 146 16 + 916: 84(int) Load 915 + 917: 11(int) Bitcast 916 + 918: 11(int) IAdd 914 917 + 919: 226(ptr) AccessChain 201(particleIn) 122 918 122 920: 82(fvec4) Load 919 921: 18(fvec3) VectorShuffle 920 920 0 1 2 - 922: 18(fvec3) Load 257(pos) + 922: 18(fvec3) Load 256(pos) 923: 18(fvec3) FSub 921 922 - Store 719(a) 923 + Store 728(c) 923 924: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 925 925 16 16 - 926: 11(int) Load 140(index) - 927: 147(ptr) AccessChain 119 122 146 16 - 928: 84(int) Load 927 - 929: 11(int) Bitcast 928 - 930: 11(int) IAdd 926 929 - 931: 11(int) IAdd 930 35 - 932: 227(ptr) AccessChain 201(particleIn) 122 931 122 - 933: 82(fvec4) Load 932 - 934: 18(fvec3) VectorShuffle 933 933 0 1 2 - 935: 18(fvec3) Load 257(pos) - 936: 18(fvec3) FSub 934 935 - Store 732(b) 936 - 937: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 938 938 16 16 - 939: 11(int) Load 140(index) - 940: 147(ptr) AccessChain 119 122 146 16 - 941: 84(int) Load 940 - 942: 11(int) Bitcast 941 - 943: 11(int) IAdd 939 942 - 944: 227(ptr) AccessChain 201(particleIn) 122 943 122 - 945: 82(fvec4) Load 944 - 946: 18(fvec3) VectorShuffle 945 945 0 1 2 - 947: 18(fvec3) Load 257(pos) - 948: 18(fvec3) FSub 946 947 - Store 749(c) 948 - 949: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 950 950 16 16 - 951: 18(fvec3) Load 719(a) - 952: 18(fvec3) Load 732(b) - 953: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 951 952 - 954: 18(fvec3) Load 732(b) - 955: 18(fvec3) Load 749(c) - 956: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 954 955 - 957: 18(fvec3) FAdd 953 956 - 958: 18(fvec3) Load 695(normal) - 959: 18(fvec3) FAdd 958 957 - Store 695(normal) 959 - Branch 913 - 913: Label - Branch 845 - 845: Label - 960: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 961: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 962 962 16 16 - 963: 11(int) Load 140(index) - 964: 18(fvec3) Load 695(normal) - 965: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 964 - 966: 8(float) CompositeExtract 965 0 - 967: 8(float) CompositeExtract 965 1 - 968: 8(float) CompositeExtract 965 2 - 969: 82(fvec4) CompositeConstruct 966 967 968 235 - 970: 227(ptr) AccessChain 223(particleOut) 122 963 557 - Store 970 969 - Branch 691 - 691: Label + 926: 18(fvec3) Load 698(a) + 927: 18(fvec3) Load 711(b) + 928: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 926 927 + 929: 18(fvec3) Load 711(b) + 930: 18(fvec3) Load 728(c) + 931: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 929 930 + 932: 18(fvec3) FAdd 928 931 + 933: 18(fvec3) Load 676(normal) + 934: 18(fvec3) FAdd 933 932 + Store 676(normal) 934 + Branch 888 + 888: Label + Branch 822 + 822: Label + 935: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 + 936: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 937 937 16 16 + 938: 11(int) Load 140(index) + 939: 18(fvec3) Load 676(normal) + 940: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 939 + 941: 8(float) CompositeExtract 940 0 + 942: 8(float) CompositeExtract 940 1 + 943: 8(float) CompositeExtract 940 2 + 944: 82(fvec4) CompositeConstruct 941 942 943 234 + 945: 226(ptr) AccessChain 222(particleOut) 122 938 540 + Store 945 944 + Branch 672 + 672: Label Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 42bf069daa..9fa17ff112 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 890 +// Id's are bound by 879 Capability Shader Capability ImageQuery @@ -9,7 +9,7 @@ spv.debuginfo.hlsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 6 "main" 883 886 + EntryPoint Fragment 6 "main" 872 875 ExecutionMode 6 OriginUpperLeft 1: String "" 9: String "float" @@ -36,60 +36,60 @@ spv.debuginfo.hlsl.frag 101: String "inUV" 115: String "shadowCoord" 140: String "bool" - 156: String "dist" - 160: String "type.2d.image" - 161: String "@type.2d.image" - 166: String "textureShadowMap" - 171: String "type.sampler" - 172: String "@type.sampler" - 176: String "samplerShadowMap" - 180: String "type.sampled.image" - 181: String "@type.sampled.image" - 228: String "sizeQueryTemp" - 233: String "int" - 240: String "texDim" - 254: String "elements" - 261: String "levels" - 270: String "scale" - 277: String "dx" - 289: String "dy" - 301: String "shadowFactor" - 307: String "count" - 314: String "range" - 321: String "x" - 343: String "y" - 407: String "i" - 427: String "shadowClip" - 439: String "color" - 445: String "viewMatrix" - 449: String "Light" - 455: String "lights" - 458: String "displayDebugTarget" - 463: String "UBO" - 466: String "ubo" - 516: String "textureposition" - 521: String "samplerposition" - 533: String "normal" - 537: String "textureNormal" - 542: String "samplerNormal" - 552: String "albedo" - 556: String "textureAlbedo" - 561: String "samplerAlbedo" - 651: String "N" - 677: String "L" - 701: String "V" - 716: String "lightCosInnerAngle" - 723: String "lightCosOuterAngle" - 730: String "lightRange" - 737: String "dir" - 753: String "cosDir" - 762: String "spotEffect" - 772: String "heightAttenuation" - 781: String "NdotL" - 791: String "diff" - 799: String "R" - 809: String "NdotR" - 819: String "spec" + 154: String "dist" + 158: String "type.2d.image" + 159: String "@type.2d.image" + 164: String "textureShadowMap" + 169: String "type.sampler" + 170: String "@type.sampler" + 174: String "samplerShadowMap" + 178: String "type.sampled.image" + 179: String "@type.sampled.image" + 223: String "sizeQueryTemp" + 228: String "int" + 235: String "texDim" + 249: String "elements" + 256: String "levels" + 265: String "scale" + 272: String "dx" + 284: String "dy" + 296: String "shadowFactor" + 302: String "count" + 309: String "range" + 316: String "x" + 337: String "y" + 400: String "i" + 419: String "shadowClip" + 431: String "color" + 437: String "viewMatrix" + 441: String "Light" + 447: String "lights" + 450: String "displayDebugTarget" + 455: String "UBO" + 458: String "ubo" + 508: String "textureposition" + 513: String "samplerposition" + 525: String "normal" + 529: String "textureNormal" + 534: String "samplerNormal" + 544: String "albedo" + 548: String "textureAlbedo" + 553: String "samplerAlbedo" + 642: String "N" + 667: String "L" + 691: String "V" + 706: String "lightCosInnerAngle" + 713: String "lightCosOuterAngle" + 720: String "lightRange" + 727: String "dir" + 743: String "cosDir" + 752: String "spotEffect" + 762: String "heightAttenuation" + 771: String "NdotL" + 781: String "diff" + 789: String "R" + 799: String "NdotR" + 809: String "spec" Name 6 "main" Name 32 "textureProj(vf4;f1;vf2;" Name 29 "P" @@ -105,110 +105,110 @@ spv.debuginfo.hlsl.frag Name 92 "inUV" Name 107 "shadow" Name 113 "shadowCoord" - Name 154 "dist" - Name 164 "textureShadowMap" - Name 174 "samplerShadowMap" - Name 226 "sizeQueryTemp" - Name 238 "texDim" - Name 252 "elements" - Name 259 "levels" - Name 268 "scale" - Name 275 "dx" - Name 287 "dy" - Name 299 "shadowFactor" - Name 305 "count" - Name 312 "range" - Name 319 "x" - Name 341 "y" - Name 372 "param" - Name 374 "param" - Name 376 "param" - Name 405 "i" - Name 425 "shadowClip" - Name 437 "Light" - MemberName 437(Light) 0 "position" - MemberName 437(Light) 1 "target" - MemberName 437(Light) 2 "color" - MemberName 437(Light) 3 "viewMatrix" - Name 452 "UBO" - MemberName 452(UBO) 0 "viewPos" - MemberName 452(UBO) 1 "lights" - MemberName 452(UBO) 2 "useShadows" - MemberName 452(UBO) 3 "displayDebugTarget" - Name 464 "ubo" - MemberName 464(ubo) 0 "ubo" - Name 471 "" - Name 480 "shadowFactor" - Name 485 "param" - Name 487 "param" - Name 508 "fragPos" - Name 514 "textureposition" - Name 519 "samplerposition" - Name 531 "normal" - Name 535 "textureNormal" - Name 540 "samplerNormal" - Name 550 "albedo" - Name 554 "textureAlbedo" - Name 559 "samplerAlbedo" - Name 589 "fragcolor" - Name 593 "param" - Name 594 "param" - Name 649 "N" - Name 657 "i" - Name 675 "L" - Name 688 "dist" - Name 699 "V" - Name 714 "lightCosInnerAngle" - Name 721 "lightCosOuterAngle" - Name 728 "lightRange" - Name 735 "dir" - Name 751 "cosDir" - Name 760 "spotEffect" - Name 770 "heightAttenuation" - Name 779 "NdotL" - Name 789 "diff" - Name 797 "R" - Name 807 "NdotR" - Name 817 "spec" - Name 866 "param" - Name 868 "param" - Name 881 "inUV" - Name 883 "inUV" - Name 886 "@entryPointOutput" - Name 887 "param" - Decorate 164(textureShadowMap) DescriptorSet 0 - Decorate 164(textureShadowMap) Binding 5 - Decorate 174(samplerShadowMap) DescriptorSet 0 - Decorate 174(samplerShadowMap) Binding 5 - MemberDecorate 437(Light) 0 Offset 0 - MemberDecorate 437(Light) 1 Offset 16 - MemberDecorate 437(Light) 2 Offset 32 - MemberDecorate 437(Light) 3 RowMajor - MemberDecorate 437(Light) 3 Offset 48 - MemberDecorate 437(Light) 3 MatrixStride 16 - Decorate 450 ArrayStride 112 - MemberDecorate 452(UBO) 0 Offset 0 - MemberDecorate 452(UBO) 1 Offset 16 - MemberDecorate 452(UBO) 2 Offset 352 - MemberDecorate 452(UBO) 3 Offset 356 - MemberDecorate 464(ubo) 0 Offset 0 - Decorate 464(ubo) Block - Decorate 471 DescriptorSet 0 - Decorate 471 Binding 4 - Decorate 514(textureposition) DescriptorSet 0 - Decorate 514(textureposition) Binding 1 - Decorate 519(samplerposition) DescriptorSet 0 - Decorate 519(samplerposition) Binding 1 - Decorate 535(textureNormal) DescriptorSet 0 - Decorate 535(textureNormal) Binding 2 - Decorate 540(samplerNormal) DescriptorSet 0 - Decorate 540(samplerNormal) Binding 2 - Decorate 554(textureAlbedo) DescriptorSet 0 - Decorate 554(textureAlbedo) Binding 3 - Decorate 559(samplerAlbedo) DescriptorSet 0 - Decorate 559(samplerAlbedo) Binding 3 - Decorate 883(inUV) Location 0 - Decorate 886(@entryPointOutput) Location 0 + Name 152 "dist" + Name 162 "textureShadowMap" + Name 172 "samplerShadowMap" + Name 221 "sizeQueryTemp" + Name 233 "texDim" + Name 247 "elements" + Name 254 "levels" + Name 263 "scale" + Name 270 "dx" + Name 282 "dy" + Name 294 "shadowFactor" + Name 300 "count" + Name 307 "range" + Name 314 "x" + Name 335 "y" + Name 365 "param" + Name 367 "param" + Name 369 "param" + Name 398 "i" + Name 417 "shadowClip" + Name 429 "Light" + MemberName 429(Light) 0 "position" + MemberName 429(Light) 1 "target" + MemberName 429(Light) 2 "color" + MemberName 429(Light) 3 "viewMatrix" + Name 444 "UBO" + MemberName 444(UBO) 0 "viewPos" + MemberName 444(UBO) 1 "lights" + MemberName 444(UBO) 2 "useShadows" + MemberName 444(UBO) 3 "displayDebugTarget" + Name 456 "ubo" + MemberName 456(ubo) 0 "ubo" + Name 463 "" + Name 472 "shadowFactor" + Name 477 "param" + Name 479 "param" + Name 500 "fragPos" + Name 506 "textureposition" + Name 511 "samplerposition" + Name 523 "normal" + Name 527 "textureNormal" + Name 532 "samplerNormal" + Name 542 "albedo" + Name 546 "textureAlbedo" + Name 551 "samplerAlbedo" + Name 580 "fragcolor" + Name 584 "param" + Name 585 "param" + Name 640 "N" + Name 648 "i" + Name 665 "L" + Name 678 "dist" + Name 689 "V" + Name 704 "lightCosInnerAngle" + Name 711 "lightCosOuterAngle" + Name 718 "lightRange" + Name 725 "dir" + Name 741 "cosDir" + Name 750 "spotEffect" + Name 760 "heightAttenuation" + Name 769 "NdotL" + Name 779 "diff" + Name 787 "R" + Name 797 "NdotR" + Name 807 "spec" + Name 855 "param" + Name 857 "param" + Name 870 "inUV" + Name 872 "inUV" + Name 875 "@entryPointOutput" + Name 876 "param" + Decorate 162(textureShadowMap) DescriptorSet 0 + Decorate 162(textureShadowMap) Binding 5 + Decorate 172(samplerShadowMap) DescriptorSet 0 + Decorate 172(samplerShadowMap) Binding 5 + MemberDecorate 429(Light) 0 Offset 0 + MemberDecorate 429(Light) 1 Offset 16 + MemberDecorate 429(Light) 2 Offset 32 + MemberDecorate 429(Light) 3 RowMajor + MemberDecorate 429(Light) 3 Offset 48 + MemberDecorate 429(Light) 3 MatrixStride 16 + Decorate 442 ArrayStride 112 + MemberDecorate 444(UBO) 0 Offset 0 + MemberDecorate 444(UBO) 1 Offset 16 + MemberDecorate 444(UBO) 2 Offset 352 + MemberDecorate 444(UBO) 3 Offset 356 + MemberDecorate 456(ubo) 0 Offset 0 + Decorate 456(ubo) Block + Decorate 463 DescriptorSet 0 + Decorate 463 Binding 4 + Decorate 506(textureposition) DescriptorSet 0 + Decorate 506(textureposition) Binding 1 + Decorate 511(samplerposition) DescriptorSet 0 + Decorate 511(samplerposition) Binding 1 + Decorate 527(textureNormal) DescriptorSet 0 + Decorate 527(textureNormal) Binding 2 + Decorate 532(samplerNormal) DescriptorSet 0 + Decorate 532(samplerNormal) Binding 2 + Decorate 546(textureAlbedo) DescriptorSet 0 + Decorate 546(textureAlbedo) Binding 3 + Decorate 551(samplerAlbedo) DescriptorSet 0 + Decorate 551(samplerAlbedo) Binding 3 + Decorate 872(inUV) Location 0 + Decorate 875(@entryPointOutput) Location 0 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -271,224 +271,213 @@ spv.debuginfo.hlsl.frag 138: 8(float) Constant 3212836864 139: TypeBool 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 153: 11(int) Constant 68 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 156 10 36 153 16 35 19 - 158: TypeImage 8(float) 2D array sampled format:Unknown - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 160 16 36 153 16 39 161 162 17 - 163: TypePointer UniformConstant 158 -164(textureShadowMap): 163(ptr) Variable UniformConstant - 167: 11(int) Constant 8 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 166 159 36 153 16 39 166 164(textureShadowMap) 167 - 169: TypeSampler - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 153 16 39 172 162 17 - 173: TypePointer UniformConstant 169 -174(samplerShadowMap): 173(ptr) Variable UniformConstant - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 176 170 36 153 16 39 176 174(samplerShadowMap) 167 - 178: TypeSampledImage 158 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 180 16 36 153 16 39 181 162 17 - 194: 11(int) Constant 69 - 197: 8(float) Constant 0 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 211: 11(int) Constant 71 - 212: 8(float) Constant 1048576000 - 215: 11(int) Constant 74 - 222: 11(int) Constant 80 - 223: TypeVector 11(int) 3 - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 - 225: TypePointer Function 223(ivec3) - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 228 224 36 222 16 61 19 - 232: TypeInt 32 1 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 233 14 19 16 - 235: TypeVector 232(int) 2 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 234 24 - 237: TypePointer Function 235(ivec2) - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 240 236 36 222 16 61 19 - 242: TypePointer Function 11(int) - 246: TypePointer Function 232(int) - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 234 36 222 16 61 19 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 234 36 222 16 61 19 - 267: 11(int) Constant 81 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 270 10 36 267 16 61 19 - 272: 8(float) Constant 1069547520 - 274: 11(int) Constant 82 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 277 10 36 274 16 61 19 - 286: 11(int) Constant 83 - 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 289 10 36 286 16 61 19 - 298: 11(int) Constant 85 - 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 10 36 298 16 61 19 - 304: 11(int) Constant 86 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 234 36 304 16 61 19 - 309: 232(int) Constant 0 - 311: 11(int) Constant 87 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 314 234 36 311 16 61 19 - 316: 232(int) Constant 1 - 318: 11(int) Constant 89 - 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 321 234 36 318 16 61 19 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 340: 11(int) Constant 91 - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 343 234 36 340 16 61 19 - 358: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 362: 11(int) Constant 93 - 381: 11(int) Constant 94 - 394: 11(int) Constant 98 - 404: 11(int) Constant 102 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 407 234 36 404 16 80 19 - 419: 232(int) Constant 3 - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 424: 11(int) Constant 104 - 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 427 20 36 424 16 80 19 - 434: TypeMatrix 18(fvec4) 4 - 436: 139(bool) ConstantTrue - 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 436 - 437(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 434 - 440: 11(int) Constant 46 - 441: 11(int) Constant 14 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 - 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 - 446: 11(int) Constant 47 - 447: 11(int) Constant 21 - 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 445 435 36 446 447 16 16 17 - 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 449 40 36 424 16 39 449 16 17 438 442 443 444 - 450: TypeArray 437(Light) 17 - 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 448 17 - 452(UBO): TypeStruct 18(fvec4) 450 232(int) 232(int) - 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 439 20 36 440 441 16 16 17 - 456: 11(int) Constant 53 - 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 455 451 36 456 441 16 16 17 - 459: 11(int) Constant 55 - 460: 11(int) Constant 24 - 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 234 36 459 460 16 16 17 - 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 234 36 459 460 16 16 17 - 462: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 463 40 36 424 16 39 463 16 17 453 454 457 461 - 464(ubo): TypeStruct 452(UBO) - 467: 11(int) Constant 58 - 468: 11(int) Constant 37 - 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 466 462 36 467 468 16 16 17 - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 466 40 36 424 16 39 466 16 17 465 - 470: TypePointer Uniform 464(ubo) - 471: 470(ptr) Variable Uniform - 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 469 36 424 16 39 1 471 167 - 474: TypePointer Uniform 434 - 479: 11(int) Constant 108 - 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 10 36 479 16 80 19 - 490: 11(int) Constant 113 - 500: 11(int) Constant 115 - 507: 11(int) Constant 121 - 509: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 36 507 16 96 19 - 511: TypeImage 8(float) 2D sampled format:Unknown - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 160 16 36 507 16 39 161 162 17 - 513: TypePointer UniformConstant 511 -514(textureposition): 513(ptr) Variable UniformConstant - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 516 512 36 507 16 39 516 514(textureposition) 167 - 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 507 16 39 172 162 17 -519(samplerposition): 173(ptr) Variable UniformConstant - 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 521 518 36 507 16 39 521 519(samplerposition) 167 - 523: TypeSampledImage 511 - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 180 16 36 507 16 39 181 162 17 - 530: 11(int) Constant 122 - 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 533 71 36 530 16 96 19 -535(textureNormal): 513(ptr) Variable UniformConstant - 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 537 512 36 530 16 39 537 535(textureNormal) 167 - 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 530 16 39 172 162 17 -540(samplerNormal): 173(ptr) Variable UniformConstant - 541: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 542 539 36 530 16 39 542 540(samplerNormal) 167 - 549: 11(int) Constant 123 - 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 552 20 36 549 16 96 19 -554(textureAlbedo): 513(ptr) Variable UniformConstant - 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 556 512 36 549 16 39 556 554(textureAlbedo) 167 - 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 40 36 549 16 39 172 162 17 -559(samplerAlbedo): 173(ptr) Variable UniformConstant - 560: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 561 558 36 549 16 39 561 559(samplerAlbedo) 167 - 567: 11(int) Constant 128 - 568: TypePointer Uniform 232(int) - 571: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 577: 11(int) Constant 129 - 588: 11(int) Constant 131 - 590: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 36 588 16 96 19 - 592: 70(fvec3) ConstantComposite 110 110 110 - 598: 11(int) Constant 132 - 602: 11(int) Constant 134 - 605: 11(int) Constant 135 - 609: 11(int) Constant 137 - 612: 11(int) Constant 138 - 616: 11(int) Constant 140 - 620: 11(int) Constant 141 - 624: 11(int) Constant 143 - 628: 11(int) Constant 144 - 633: 11(int) Constant 146 - 642: 11(int) Constant 150 - 645: 8(float) Constant 1036831949 - 648: 11(int) Constant 152 - 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 651 71 36 648 16 96 19 - 656: 11(int) Constant 154 - 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 407 234 36 656 16 96 19 - 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 674: 11(int) Constant 157 - 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 677 71 36 674 16 96 19 - 680: TypePointer Uniform 18(fvec4) - 687: 11(int) Constant 159 - 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 156 10 36 687 16 96 19 - 694: 11(int) Constant 160 - 698: 11(int) Constant 163 - 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 701 71 36 698 16 96 19 - 709: 11(int) Constant 164 - 713: 11(int) Constant 166 - 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 716 10 36 713 16 96 19 - 718: 8(float) Constant 1064781546 - 720: 11(int) Constant 167 - 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 723 10 36 720 16 96 19 - 725: 8(float) Constant 1063781322 - 727: 11(int) Constant 168 - 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 730 10 36 727 16 96 19 - 732: 8(float) Constant 1120403456 - 734: 11(int) Constant 171 - 736: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 737 71 36 734 16 96 19 - 750: 11(int) Constant 174 - 752: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 753 10 36 750 16 96 19 - 759: 11(int) Constant 175 + 151: 11(int) Constant 68 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 154 10 36 151 16 35 19 + 156: TypeImage 8(float) 2D array sampled format:Unknown + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 158 16 36 151 16 39 159 160 17 + 161: TypePointer UniformConstant 156 +162(textureShadowMap): 161(ptr) Variable UniformConstant + 165: 11(int) Constant 8 + 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 164 157 36 151 16 39 164 162(textureShadowMap) 165 + 167: TypeSampler + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 151 16 39 170 160 17 + 171: TypePointer UniformConstant 167 +172(samplerShadowMap): 171(ptr) Variable UniformConstant + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 174 168 36 151 16 39 174 172(samplerShadowMap) 165 + 176: TypeSampledImage 156 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 16 36 151 16 39 179 160 17 + 192: 11(int) Constant 69 + 195: 8(float) Constant 0 + 206: 11(int) Constant 71 + 207: 8(float) Constant 1048576000 + 210: 11(int) Constant 74 + 217: 11(int) Constant 80 + 218: TypeVector 11(int) 3 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 220: TypePointer Function 218(ivec3) + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 219 36 217 16 61 19 + 227: TypeInt 32 1 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 228 14 19 16 + 230: TypeVector 227(int) 2 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 229 24 + 232: TypePointer Function 230(ivec2) + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 235 231 36 217 16 61 19 + 237: TypePointer Function 11(int) + 241: TypePointer Function 227(int) + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 229 36 217 16 61 19 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 229 36 217 16 61 19 + 262: 11(int) Constant 81 + 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 10 36 262 16 61 19 + 267: 8(float) Constant 1069547520 + 269: 11(int) Constant 82 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 10 36 269 16 61 19 + 281: 11(int) Constant 83 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 10 36 281 16 61 19 + 293: 11(int) Constant 85 + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 296 10 36 293 16 61 19 + 299: 11(int) Constant 86 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 302 229 36 299 16 61 19 + 304: 227(int) Constant 0 + 306: 11(int) Constant 87 + 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 309 229 36 306 16 61 19 + 311: 227(int) Constant 1 + 313: 11(int) Constant 89 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 229 36 313 16 61 19 + 334: 11(int) Constant 91 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 337 229 36 334 16 61 19 + 355: 11(int) Constant 93 + 374: 11(int) Constant 94 + 387: 11(int) Constant 98 + 397: 11(int) Constant 102 + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 400 229 36 397 16 80 19 + 412: 227(int) Constant 3 + 416: 11(int) Constant 104 + 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 419 20 36 416 16 80 19 + 426: TypeMatrix 18(fvec4) 4 + 428: 139(bool) ConstantTrue + 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 428 + 429(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 426 + 432: 11(int) Constant 46 + 433: 11(int) Constant 14 + 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 + 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 + 438: 11(int) Constant 47 + 439: 11(int) Constant 21 + 436: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 437 427 36 438 439 16 16 17 + 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 441 40 36 416 16 39 441 16 17 430 434 435 436 + 442: TypeArray 429(Light) 17 + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 440 17 + 444(UBO): TypeStruct 18(fvec4) 442 227(int) 227(int) + 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 + 448: 11(int) Constant 53 + 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 447 443 36 448 433 16 16 17 + 451: 11(int) Constant 55 + 452: 11(int) Constant 24 + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 450 229 36 451 452 16 16 17 + 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 450 229 36 451 452 16 16 17 + 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 455 40 36 416 16 39 455 16 17 445 446 449 453 + 456(ubo): TypeStruct 444(UBO) + 459: 11(int) Constant 58 + 460: 11(int) Constant 37 + 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 454 36 459 460 16 16 17 + 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 458 40 36 416 16 39 458 16 17 457 + 462: TypePointer Uniform 456(ubo) + 463: 462(ptr) Variable Uniform + 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 461 36 416 16 39 1 463 165 + 466: TypePointer Uniform 426 + 471: 11(int) Constant 108 + 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 296 10 36 471 16 80 19 + 482: 11(int) Constant 113 + 492: 11(int) Constant 115 + 499: 11(int) Constant 121 + 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 36 499 16 96 19 + 503: TypeImage 8(float) 2D sampled format:Unknown + 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 158 16 36 499 16 39 159 160 17 + 505: TypePointer UniformConstant 503 +506(textureposition): 505(ptr) Variable UniformConstant + 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 508 504 36 499 16 39 508 506(textureposition) 165 + 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 499 16 39 170 160 17 +511(samplerposition): 171(ptr) Variable UniformConstant + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 513 510 36 499 16 39 513 511(samplerposition) 165 + 515: TypeSampledImage 503 + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 16 36 499 16 39 179 160 17 + 522: 11(int) Constant 122 + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 525 71 36 522 16 96 19 +527(textureNormal): 505(ptr) Variable UniformConstant + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 529 504 36 522 16 39 529 527(textureNormal) 165 + 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 522 16 39 170 160 17 +532(samplerNormal): 171(ptr) Variable UniformConstant + 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 534 531 36 522 16 39 534 532(samplerNormal) 165 + 541: 11(int) Constant 123 + 543: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 544 20 36 541 16 96 19 +546(textureAlbedo): 505(ptr) Variable UniformConstant + 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 504 36 541 16 39 548 546(textureAlbedo) 165 + 550: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 541 16 39 170 160 17 +551(samplerAlbedo): 171(ptr) Variable UniformConstant + 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 553 550 36 541 16 39 553 551(samplerAlbedo) 165 + 559: 11(int) Constant 128 + 560: TypePointer Uniform 227(int) + 568: 11(int) Constant 129 + 579: 11(int) Constant 131 + 581: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 36 579 16 96 19 + 583: 70(fvec3) ConstantComposite 110 110 110 + 589: 11(int) Constant 132 + 593: 11(int) Constant 134 + 596: 11(int) Constant 135 + 600: 11(int) Constant 137 + 603: 11(int) Constant 138 + 607: 11(int) Constant 140 + 611: 11(int) Constant 141 + 615: 11(int) Constant 143 + 619: 11(int) Constant 144 + 624: 11(int) Constant 146 + 633: 11(int) Constant 150 + 636: 8(float) Constant 1036831949 + 639: 11(int) Constant 152 + 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 642 71 36 639 16 96 19 + 647: 11(int) Constant 154 + 649: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 400 229 36 647 16 96 19 + 664: 11(int) Constant 157 + 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 667 71 36 664 16 96 19 + 670: TypePointer Uniform 18(fvec4) + 677: 11(int) Constant 159 + 679: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 154 10 36 677 16 96 19 + 684: 11(int) Constant 160 + 688: 11(int) Constant 163 + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 691 71 36 688 16 96 19 + 699: 11(int) Constant 164 + 703: 11(int) Constant 166 + 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 706 10 36 703 16 96 19 + 708: 8(float) Constant 1064781546 + 710: 11(int) Constant 167 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 10 36 710 16 96 19 + 715: 8(float) Constant 1063781322 + 717: 11(int) Constant 168 + 719: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 10 36 717 16 96 19 + 722: 8(float) Constant 1120403456 + 724: 11(int) Constant 171 + 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 71 36 724 16 96 19 + 740: 11(int) Constant 174 + 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 743 10 36 740 16 96 19 + 749: 11(int) Constant 175 + 751: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 752 10 36 749 16 96 19 + 759: 11(int) Constant 176 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 762 10 36 759 16 96 19 - 769: 11(int) Constant 176 - 771: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 772 10 36 769 16 96 19 - 778: 11(int) Constant 179 - 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 781 10 36 778 16 96 19 - 788: 11(int) Constant 180 - 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 791 71 36 788 16 96 19 - 796: 11(int) Constant 183 - 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 799 71 36 796 16 96 19 - 806: 11(int) Constant 184 - 808: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 809 10 36 806 16 96 19 - 816: 11(int) Constant 185 - 818: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 819 71 36 816 16 96 19 - 822: 8(float) Constant 1098907648 - 827: 8(float) Constant 1075838976 - 831: 11(int) Constant 187 - 840: 232(int) Constant 2 - 856: 11(int) Constant 191 - 859: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 865: 11(int) Constant 193 - 873: 11(int) Constant 196 - 882: TypePointer Input 23(fvec2) - 883(inUV): 882(ptr) Variable Input - 885: TypePointer Output 18(fvec4) -886(@entryPointOutput): 885(ptr) Variable Output + 768: 11(int) Constant 179 + 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 771 10 36 768 16 96 19 + 778: 11(int) Constant 180 + 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 781 71 36 778 16 96 19 + 786: 11(int) Constant 183 + 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 789 71 36 786 16 96 19 + 796: 11(int) Constant 184 + 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 799 10 36 796 16 96 19 + 806: 11(int) Constant 185 + 808: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 809 71 36 806 16 96 19 + 812: 8(float) Constant 1098907648 + 817: 8(float) Constant 1075838976 + 821: 11(int) Constant 187 + 830: 227(int) Constant 2 + 846: 11(int) Constant 191 + 854: 11(int) Constant 193 + 862: 11(int) Constant 196 + 871: TypePointer Input 23(fvec2) + 872(inUV): 871(ptr) Variable Input + 874: TypePointer Output 18(fvec4) +875(@entryPointOutput): 874(ptr) Variable Output Line 1 119 1 6(main): 4 Function None 5 7: Label - 881(inUV): 26(ptr) Variable Function - 887(param): 26(ptr) Variable Function + 870(inUV): 26(ptr) Variable Function + 876(param): 26(ptr) Variable Function Line 1 119 0 - 884: 23(fvec2) Load 883(inUV) - Store 881(inUV) 884 - 888: 23(fvec2) Load 881(inUV) - Store 887(param) 888 - 889: 18(fvec4) FunctionCall 93(@main(vf2;) 887(param) - Store 886(@entryPointOutput) 889 + 873: 23(fvec2) Load 872(inUV) + Store 870(inUV) 873 + 877: 23(fvec2) Load 870(inUV) + Store 876(param) 877 + 878: 18(fvec4) FunctionCall 93(@main(vf2;) 876(param) + Store 875(@entryPointOutput) 878 Return FunctionEnd Line 1 61 1 @@ -499,7 +488,7 @@ spv.debuginfo.hlsl.frag 33: Label 107(shadow): 22(ptr) Variable Function 113(shadowCoord): 21(ptr) Variable Function - 154(dist): 22(ptr) Variable Function + 152(dist): 22(ptr) Variable Function 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 38 38 16 16 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 29(P) 47 @@ -536,612 +525,612 @@ spv.debuginfo.hlsl.frag 142: 139(bool) FOrdGreaterThan 137 138 143: 22(ptr) AccessChain 113(shadowCoord) 24 144: 8(float) Load 143 - 146: 139(bool) FOrdLessThan 144 110 - 148: 139(bool) LogicalAnd 142 146 - SelectionMerge 150 None - BranchConditional 148 149 150 - 149: Label - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 153 153 16 16 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 155 154(dist) 47 - 168: 158 Load 164(textureShadowMap) - 177: 169 Load 174(samplerShadowMap) - 182: 178 SampledImage 168 177 - 183: 18(fvec4) Load 113(shadowCoord) - 184: 23(fvec2) VectorShuffle 183 183 0 1 - 185: 23(fvec2) Load 31(offset) - 186: 23(fvec2) FAdd 184 185 - 187: 8(float) Load 30(layer) - 188: 8(float) CompositeExtract 186 0 - 189: 8(float) CompositeExtract 186 1 - 190: 70(fvec3) CompositeConstruct 188 189 187 - 191: 18(fvec4) ImageSampleImplicitLod 182 190 - 192: 8(float) CompositeExtract 191 0 - Store 154(dist) 192 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 194 194 16 16 - 195: 22(ptr) AccessChain 113(shadowCoord) 17 - 196: 8(float) Load 195 - 199: 139(bool) FOrdGreaterThan 196 197 - 200: 8(float) Load 154(dist) - 201: 22(ptr) AccessChain 113(shadowCoord) 24 - 202: 8(float) Load 201 - 204: 139(bool) FOrdLessThan 200 202 - 206: 139(bool) LogicalAnd 199 204 - SelectionMerge 208 None - BranchConditional 206 207 208 - 207: Label - 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 211 211 16 16 - Store 107(shadow) 212 - Branch 208 - 208: Label - Branch 150 - 150: Label - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 215 215 16 16 - 216: 8(float) Load 107(shadow) - ReturnValue 216 + 145: 139(bool) FOrdLessThan 144 110 + 146: 139(bool) LogicalAnd 142 145 + SelectionMerge 148 None + BranchConditional 146 147 148 + 147: Label + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 151 151 16 16 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 153 152(dist) 47 + 166: 156 Load 162(textureShadowMap) + 175: 167 Load 172(samplerShadowMap) + 180: 176 SampledImage 166 175 + 181: 18(fvec4) Load 113(shadowCoord) + 182: 23(fvec2) VectorShuffle 181 181 0 1 + 183: 23(fvec2) Load 31(offset) + 184: 23(fvec2) FAdd 182 183 + 185: 8(float) Load 30(layer) + 186: 8(float) CompositeExtract 184 0 + 187: 8(float) CompositeExtract 184 1 + 188: 70(fvec3) CompositeConstruct 186 187 185 + 189: 18(fvec4) ImageSampleImplicitLod 180 188 + 190: 8(float) CompositeExtract 189 0 + Store 152(dist) 190 + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 192 192 16 16 + 193: 22(ptr) AccessChain 113(shadowCoord) 17 + 194: 8(float) Load 193 + 196: 139(bool) FOrdGreaterThan 194 195 + 197: 8(float) Load 152(dist) + 198: 22(ptr) AccessChain 113(shadowCoord) 24 + 199: 8(float) Load 198 + 200: 139(bool) FOrdLessThan 197 199 + 201: 139(bool) LogicalAnd 196 200 + SelectionMerge 203 None + BranchConditional 201 202 203 + 202: Label + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 206 206 16 16 + Store 107(shadow) 207 + Branch 203 + 203: Label + Branch 148 + 148: Label + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 + 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 210 210 16 16 + 211: 8(float) Load 107(shadow) + ReturnValue 211 FunctionEnd Line 1 78 1 58(filterPCF(vf4;f1;): 8(float) Function None 54 56(sc): 21(ptr) FunctionParameter 57(layer): 22(ptr) FunctionParameter 59: Label -226(sizeQueryTemp): 225(ptr) Variable Function - 238(texDim): 237(ptr) Variable Function - 252(elements): 246(ptr) Variable Function - 259(levels): 246(ptr) Variable Function - 268(scale): 22(ptr) Variable Function - 275(dx): 22(ptr) Variable Function - 287(dy): 22(ptr) Variable Function -299(shadowFactor): 22(ptr) Variable Function - 305(count): 246(ptr) Variable Function - 312(range): 246(ptr) Variable Function - 319(x): 246(ptr) Variable Function - 341(y): 246(ptr) Variable Function - 372(param): 21(ptr) Variable Function - 374(param): 22(ptr) Variable Function - 376(param): 26(ptr) Variable Function +221(sizeQueryTemp): 220(ptr) Variable Function + 233(texDim): 232(ptr) Variable Function + 247(elements): 241(ptr) Variable Function + 254(levels): 241(ptr) Variable Function + 263(scale): 22(ptr) Variable Function + 270(dx): 22(ptr) Variable Function + 282(dy): 22(ptr) Variable Function +294(shadowFactor): 22(ptr) Variable Function + 300(count): 241(ptr) Variable Function + 307(range): 241(ptr) Variable Function + 314(x): 241(ptr) Variable Function + 335(y): 241(ptr) Variable Function + 365(param): 21(ptr) Variable Function + 367(param): 22(ptr) Variable Function + 369(param): 26(ptr) Variable Function 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 62 62 16 16 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 56(sc) 47 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 57(layer) 47 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 222 222 16 16 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 227 226(sizeQueryTemp) 47 - 230: 158 Load 164(textureShadowMap) - 231: 223(ivec3) ImageQuerySizeLod 230 16 - Store 226(sizeQueryTemp) 231 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 239 238(texDim) 47 - 243: 242(ptr) AccessChain 226(sizeQueryTemp) 16 + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 217 217 16 16 + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(sizeQueryTemp) 47 + 225: 156 Load 162(textureShadowMap) + 226: 218(ivec3) ImageQuerySizeLod 225 16 + Store 221(sizeQueryTemp) 226 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 234 233(texDim) 47 + 238: 237(ptr) AccessChain 221(sizeQueryTemp) 16 + 239: 11(int) Load 238 + 240: 227(int) Bitcast 239 + 242: 241(ptr) AccessChain 233(texDim) 16 + Store 242 240 + 243: 237(ptr) AccessChain 221(sizeQueryTemp) 40 244: 11(int) Load 243 - 245: 232(int) Bitcast 244 - 247: 246(ptr) AccessChain 238(texDim) 16 - Store 247 245 - 248: 242(ptr) AccessChain 226(sizeQueryTemp) 40 - 249: 11(int) Load 248 - 250: 232(int) Bitcast 249 - 251: 246(ptr) AccessChain 238(texDim) 40 - Store 251 250 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(elements) 47 - 256: 242(ptr) AccessChain 226(sizeQueryTemp) 24 - 257: 11(int) Load 256 - 258: 232(int) Bitcast 257 - Store 252(elements) 258 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(levels) 47 - 263: 158 Load 164(textureShadowMap) - 264: 11(int) ImageQueryLevels 263 - 265: 232(int) Bitcast 264 - Store 259(levels) 265 - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 267 267 16 16 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 269 268(scale) 47 - Store 268(scale) 272 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 274 274 16 16 - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 276 275(dx) 47 - 279: 8(float) Load 268(scale) - 280: 8(float) FMul 279 110 - 281: 246(ptr) AccessChain 238(texDim) 16 - 282: 232(int) Load 281 - 283: 8(float) ConvertSToF 282 - 284: 8(float) FDiv 280 283 - Store 275(dx) 284 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 286 286 16 16 - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 288 287(dy) 47 - 291: 8(float) Load 268(scale) - 292: 8(float) FMul 291 110 - 293: 246(ptr) AccessChain 238(texDim) 40 - 294: 232(int) Load 293 - 295: 8(float) ConvertSToF 294 - 296: 8(float) FDiv 292 295 - Store 287(dy) 296 - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 298 298 16 16 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 300 299(shadowFactor) 47 - Store 299(shadowFactor) 197 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 304 304 16 16 - 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 306 305(count) 47 - Store 305(count) 309 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 311 311 16 16 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 313 312(range) 47 - Store 312(range) 316 - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 320 319(x) 47 - 323: 232(int) Load 312(range) - 324: 232(int) SNegate 323 - Store 319(x) 324 - Branch 325 - 325: Label - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 - LoopMerge 327 328 None - Branch 331 - 331: Label - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 - 334: 232(int) Load 319(x) - 335: 232(int) Load 312(range) - 337: 139(bool) SLessThanEqual 334 335 - BranchConditional 337 326 327 - 326: Label - 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 - 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 342 341(y) 47 - 345: 232(int) Load 312(range) - 346: 232(int) SNegate 345 - Store 341(y) 346 + 245: 227(int) Bitcast 244 + 246: 241(ptr) AccessChain 233(texDim) 40 + Store 246 245 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(elements) 47 + 251: 237(ptr) AccessChain 221(sizeQueryTemp) 24 + 252: 11(int) Load 251 + 253: 227(int) Bitcast 252 + Store 247(elements) 253 + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(levels) 47 + 258: 156 Load 162(textureShadowMap) + 259: 11(int) ImageQueryLevels 258 + 260: 227(int) Bitcast 259 + Store 254(levels) 260 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 262 262 16 16 + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 264 263(scale) 47 + Store 263(scale) 267 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 269 269 16 16 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(dx) 47 + 274: 8(float) Load 263(scale) + 275: 8(float) FMul 274 110 + 276: 241(ptr) AccessChain 233(texDim) 16 + 277: 227(int) Load 276 + 278: 8(float) ConvertSToF 277 + 279: 8(float) FDiv 275 278 + Store 270(dx) 279 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 281 281 16 16 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(dy) 47 + 286: 8(float) Load 263(scale) + 287: 8(float) FMul 286 110 + 288: 241(ptr) AccessChain 233(texDim) 40 + 289: 227(int) Load 288 + 290: 8(float) ConvertSToF 289 + 291: 8(float) FDiv 287 290 + Store 282(dy) 291 + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 293 293 16 16 + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 295 294(shadowFactor) 47 + Store 294(shadowFactor) 195 + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 299 299 16 16 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 301 300(count) 47 + Store 300(count) 304 + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 306 306 16 16 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 308 307(range) 47 + Store 307(range) 311 + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(x) 47 + 318: 227(int) Load 307(range) + 319: 227(int) SNegate 318 + Store 314(x) 319 + Branch 320 + 320: Label + 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 + LoopMerge 322 323 None + Branch 326 + 326: Label + 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 + 329: 227(int) Load 314(x) + 330: 227(int) Load 307(range) + 331: 139(bool) SLessThanEqual 329 330 + BranchConditional 331 321 322 + 321: Label + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 + 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 336 335(y) 47 + 339: 227(int) Load 307(range) + 340: 227(int) SNegate 339 + Store 335(y) 340 + Branch 341 + 341: Label + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 + LoopMerge 343 344 None Branch 347 347: Label - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 - LoopMerge 349 350 None - Branch 353 - 353: Label - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 - 356: 232(int) Load 341(y) - 357: 232(int) Load 312(range) - 359: 139(bool) SLessThanEqual 356 357 - BranchConditional 359 348 349 - 348: Label - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 362 362 16 16 - 363: 8(float) Load 275(dx) - 364: 232(int) Load 319(x) - 365: 8(float) ConvertSToF 364 - 366: 8(float) FMul 363 365 - 367: 8(float) Load 287(dy) - 368: 232(int) Load 341(y) - 369: 8(float) ConvertSToF 368 - 370: 8(float) FMul 367 369 - 371: 23(fvec2) CompositeConstruct 366 370 - 373: 18(fvec4) Load 56(sc) - Store 372(param) 373 - 375: 8(float) Load 57(layer) - Store 374(param) 375 - Store 376(param) 371 - 377: 8(float) FunctionCall 32(textureProj(vf4;f1;vf2;) 372(param) 374(param) 376(param) - 378: 8(float) Load 299(shadowFactor) - 379: 8(float) FAdd 378 377 - Store 299(shadowFactor) 379 - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 381 381 16 16 - 382: 232(int) Load 305(count) - 383: 232(int) IAdd 382 316 - Store 305(count) 383 - Branch 350 - 350: Label - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 340 340 16 16 - 386: 232(int) Load 341(y) - 387: 232(int) IAdd 386 316 - Store 341(y) 387 - Branch 347 - 349: Label - Branch 328 - 328: Label - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 318 318 16 16 - 390: 232(int) Load 319(x) - 391: 232(int) IAdd 390 316 - Store 319(x) 391 - Branch 325 - 327: Label - 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 394 394 16 16 - 395: 8(float) Load 299(shadowFactor) - 396: 232(int) Load 305(count) - 397: 8(float) ConvertSToF 396 - 398: 8(float) FDiv 395 397 - ReturnValue 398 + 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 + 350: 227(int) Load 335(y) + 351: 227(int) Load 307(range) + 352: 139(bool) SLessThanEqual 350 351 + BranchConditional 352 342 343 + 342: Label + 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 355 355 16 16 + 356: 8(float) Load 270(dx) + 357: 227(int) Load 314(x) + 358: 8(float) ConvertSToF 357 + 359: 8(float) FMul 356 358 + 360: 8(float) Load 282(dy) + 361: 227(int) Load 335(y) + 362: 8(float) ConvertSToF 361 + 363: 8(float) FMul 360 362 + 364: 23(fvec2) CompositeConstruct 359 363 + 366: 18(fvec4) Load 56(sc) + Store 365(param) 366 + 368: 8(float) Load 57(layer) + Store 367(param) 368 + Store 369(param) 364 + 370: 8(float) FunctionCall 32(textureProj(vf4;f1;vf2;) 365(param) 367(param) 369(param) + 371: 8(float) Load 294(shadowFactor) + 372: 8(float) FAdd 371 370 + Store 294(shadowFactor) 372 + 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 374 374 16 16 + 375: 227(int) Load 300(count) + 376: 227(int) IAdd 375 311 + Store 300(count) 376 + Branch 344 + 344: Label + 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 + 379: 227(int) Load 335(y) + 380: 227(int) IAdd 379 311 + Store 335(y) 380 + Branch 341 + 343: Label + Branch 323 + 323: Label + 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 382: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 + 383: 227(int) Load 314(x) + 384: 227(int) IAdd 383 311 + Store 314(x) 384 + Branch 320 + 322: Label + 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 + 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 387 387 16 16 + 388: 8(float) Load 294(shadowFactor) + 389: 227(int) Load 300(count) + 390: 8(float) ConvertSToF 389 + 391: 8(float) FDiv 388 390 + ReturnValue 391 FunctionEnd Line 1 101 49 77(shadow(vf3;vf3;): 70(fvec3) Function None 73 75(fragcolor): 72(ptr) FunctionParameter 76(fragPos): 72(ptr) FunctionParameter 78: Label - 405(i): 246(ptr) Variable Function - 425(shadowClip): 21(ptr) Variable Function -480(shadowFactor): 22(ptr) Variable Function - 485(param): 21(ptr) Variable Function - 487(param): 22(ptr) Variable Function + 398(i): 241(ptr) Variable Function + 417(shadowClip): 21(ptr) Variable Function +472(shadowFactor): 22(ptr) Variable Function + 477(param): 21(ptr) Variable Function + 479(param): 22(ptr) Variable Function 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 81 81 16 16 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 75(fragcolor) 47 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 76(fragPos) 47 - 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) - 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 406 405(i) 47 - Store 405(i) 309 - Branch 409 - 409: Label - 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 - LoopMerge 411 412 None - Branch 415 - 415: Label - 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 - 418: 232(int) Load 405(i) - 421: 139(bool) SLessThan 418 419 - BranchConditional 421 410 411 - 410: Label - 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 424 424 16 16 - 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 426 425(shadowClip) 47 - 429: 70(fvec3) Load 76(fragPos) - 430: 8(float) CompositeExtract 429 0 - 431: 8(float) CompositeExtract 429 1 - 432: 8(float) CompositeExtract 429 2 - 433: 18(fvec4) CompositeConstruct 430 431 432 110 - 473: 232(int) Load 405(i) - 475: 474(ptr) AccessChain 471 309 316 473 419 - 476: 434 Load 475 - 477: 18(fvec4) VectorTimesMatrix 433 476 - Store 425(shadowClip) 477 - 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 479 479 16 16 - 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 481 480(shadowFactor) 47 - 483: 232(int) Load 405(i) - 484: 8(float) ConvertSToF 483 - 486: 18(fvec4) Load 425(shadowClip) - Store 485(param) 486 - Store 487(param) 484 - 488: 8(float) FunctionCall 58(filterPCF(vf4;f1;) 485(param) 487(param) - Store 480(shadowFactor) 488 - 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 490 490 16 16 - 491: 8(float) Load 480(shadowFactor) - 492: 70(fvec3) Load 75(fragcolor) - 493: 70(fvec3) VectorTimesScalar 492 491 - Store 75(fragcolor) 493 - Branch 412 - 412: Label - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 404 404 16 16 - 496: 232(int) Load 405(i) - 497: 232(int) IAdd 496 316 - Store 405(i) 497 - Branch 409 - 411: Label - 498: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 500 500 16 16 - 501: 70(fvec3) Load 75(fragcolor) - ReturnValue 501 + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) + 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 + 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 399 398(i) 47 + Store 398(i) 304 + Branch 402 + 402: Label + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 + LoopMerge 404 405 None + Branch 408 + 408: Label + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 + 411: 227(int) Load 398(i) + 413: 139(bool) SLessThan 411 412 + BranchConditional 413 403 404 + 403: Label + 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 416 416 16 16 + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 418 417(shadowClip) 47 + 421: 70(fvec3) Load 76(fragPos) + 422: 8(float) CompositeExtract 421 0 + 423: 8(float) CompositeExtract 421 1 + 424: 8(float) CompositeExtract 421 2 + 425: 18(fvec4) CompositeConstruct 422 423 424 110 + 465: 227(int) Load 398(i) + 467: 466(ptr) AccessChain 463 304 311 465 412 + 468: 426 Load 467 + 469: 18(fvec4) VectorTimesMatrix 425 468 + Store 417(shadowClip) 469 + 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 471 471 16 16 + 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 473 472(shadowFactor) 47 + 475: 227(int) Load 398(i) + 476: 8(float) ConvertSToF 475 + 478: 18(fvec4) Load 417(shadowClip) + Store 477(param) 478 + Store 479(param) 476 + 480: 8(float) FunctionCall 58(filterPCF(vf4;f1;) 477(param) 479(param) + Store 472(shadowFactor) 480 + 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 482 482 16 16 + 483: 8(float) Load 472(shadowFactor) + 484: 70(fvec3) Load 75(fragcolor) + 485: 70(fvec3) VectorTimesScalar 484 483 + Store 75(fragcolor) 485 + Branch 405 + 405: Label + 486: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 + 488: 227(int) Load 398(i) + 489: 227(int) IAdd 488 311 + Store 398(i) 489 + Branch 402 + 404: Label + 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 492 492 16 16 + 493: 70(fvec3) Load 75(fragcolor) + ReturnValue 493 FunctionEnd Line 1 119 1 93(@main(vf2;): 18(fvec4) Function None 90 92(inUV): 26(ptr) FunctionParameter 94: Label - 508(fragPos): 72(ptr) Variable Function - 531(normal): 72(ptr) Variable Function - 550(albedo): 21(ptr) Variable Function - 589(fragcolor): 72(ptr) Variable Function - 593(param): 72(ptr) Variable Function - 594(param): 72(ptr) Variable Function - 649(N): 72(ptr) Variable Function - 657(i): 246(ptr) Variable Function - 675(L): 72(ptr) Variable Function - 688(dist): 22(ptr) Variable Function - 699(V): 72(ptr) Variable Function -714(lightCosInnerAngle): 22(ptr) Variable Function -721(lightCosOuterAngle): 22(ptr) Variable Function - 728(lightRange): 22(ptr) Variable Function - 735(dir): 72(ptr) Variable Function - 751(cosDir): 22(ptr) Variable Function - 760(spotEffect): 22(ptr) Variable Function -770(heightAttenuation): 22(ptr) Variable Function - 779(NdotL): 22(ptr) Variable Function - 789(diff): 72(ptr) Variable Function - 797(R): 72(ptr) Variable Function - 807(NdotR): 22(ptr) Variable Function - 817(spec): 72(ptr) Variable Function - 866(param): 72(ptr) Variable Function - 868(param): 72(ptr) Variable Function + 500(fragPos): 72(ptr) Variable Function + 523(normal): 72(ptr) Variable Function + 542(albedo): 21(ptr) Variable Function + 580(fragcolor): 72(ptr) Variable Function + 584(param): 72(ptr) Variable Function + 585(param): 72(ptr) Variable Function + 640(N): 72(ptr) Variable Function + 648(i): 241(ptr) Variable Function + 665(L): 72(ptr) Variable Function + 678(dist): 22(ptr) Variable Function + 689(V): 72(ptr) Variable Function +704(lightCosInnerAngle): 22(ptr) Variable Function +711(lightCosOuterAngle): 22(ptr) Variable Function + 718(lightRange): 22(ptr) Variable Function + 725(dir): 72(ptr) Variable Function + 741(cosDir): 22(ptr) Variable Function + 750(spotEffect): 22(ptr) Variable Function +760(heightAttenuation): 22(ptr) Variable Function + 769(NdotL): 22(ptr) Variable Function + 779(diff): 72(ptr) Variable Function + 787(R): 72(ptr) Variable Function + 797(NdotR): 22(ptr) Variable Function + 807(spec): 72(ptr) Variable Function + 855(param): 72(ptr) Variable Function + 857(param): 72(ptr) Variable Function 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 97 97 16 16 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 92(inUV) 47 - 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 93(@main(vf2;) - 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 507 507 16 16 - 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 509 508(fragPos) 47 - 517: 511 Load 514(textureposition) - 522: 169 Load 519(samplerposition) - 525: 523 SampledImage 517 522 - 526: 23(fvec2) Load 92(inUV) - 527: 18(fvec4) ImageSampleImplicitLod 525 526 - 528: 70(fvec3) VectorShuffle 527 527 0 1 2 - Store 508(fragPos) 528 - 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 530 530 16 16 - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 532 531(normal) 47 - 538: 511 Load 535(textureNormal) - 543: 169 Load 540(samplerNormal) - 544: 523 SampledImage 538 543 - 545: 23(fvec2) Load 92(inUV) - 546: 18(fvec4) ImageSampleImplicitLod 544 545 - 547: 70(fvec3) VectorShuffle 546 546 0 1 2 - Store 531(normal) 547 - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 549 549 16 16 - 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 551 550(albedo) 47 - 557: 511 Load 554(textureAlbedo) - 562: 169 Load 559(samplerAlbedo) - 563: 523 SampledImage 557 562 - 564: 23(fvec2) Load 92(inUV) - 565: 18(fvec4) ImageSampleImplicitLod 563 564 - Store 550(albedo) 565 - 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 567 567 16 16 - 569: 568(ptr) AccessChain 471 309 419 - 570: 232(int) Load 569 - 572: 139(bool) SGreaterThan 570 309 - SelectionMerge 574 None - BranchConditional 572 573 574 - 573: Label - 575: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 577 577 16 16 - 578: 568(ptr) AccessChain 471 309 419 - 579: 232(int) Load 578 - SelectionMerge 585 None - Switch 579 585 - case 1: 580 - case 2: 581 - case 3: 582 - case 4: 583 - case 5: 584 - 580: Label - 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 587: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 588 588 16 16 - 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 590 589(fragcolor) 47 - Store 593(param) 592 - 595: 70(fvec3) Load 508(fragPos) - Store 594(param) 595 - 596: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 593(param) 594(param) - Store 589(fragcolor) 596 - 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 598 598 16 16 - Branch 585 - 581: Label - 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 601: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 602 602 16 16 - 603: 70(fvec3) Load 508(fragPos) - Store 589(fragcolor) 603 - 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 605 605 16 16 - Branch 585 - 582: Label - 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 608: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 609 609 16 16 - 610: 70(fvec3) Load 531(normal) - Store 589(fragcolor) 610 - 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 612 612 16 16 - Branch 585 - 583: Label - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 616 616 16 16 - 617: 18(fvec4) Load 550(albedo) - 618: 70(fvec3) VectorShuffle 617 617 0 1 2 - Store 589(fragcolor) 618 - 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 620 620 16 16 - Branch 585 - 584: Label - 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 624 624 16 16 - 625: 18(fvec4) Load 550(albedo) - 626: 70(fvec3) VectorShuffle 625 625 3 3 3 - Store 589(fragcolor) 626 - 627: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 628 628 16 16 - Branch 585 - 585: Label - 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 633 633 16 16 - 634: 70(fvec3) Load 589(fragcolor) - 635: 8(float) CompositeExtract 634 0 - 636: 8(float) CompositeExtract 634 1 - 637: 8(float) CompositeExtract 634 2 - 638: 18(fvec4) CompositeConstruct 635 636 637 110 - ReturnValue 638 - 574: Label - 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 642 642 16 16 - 643: 18(fvec4) Load 550(albedo) - 644: 70(fvec3) VectorShuffle 643 643 0 1 2 - 646: 70(fvec3) VectorTimesScalar 644 645 - Store 589(fragcolor) 646 - 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 648 648 16 16 - 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 650 649(N) 47 - 653: 70(fvec3) Load 531(normal) - 654: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 653 - Store 649(N) 654 - 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 - 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 658 657(i) 47 - Store 657(i) 309 - Branch 660 - 660: Label - 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 - LoopMerge 662 663 None - Branch 666 - 666: Label - 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 - 669: 232(int) Load 657(i) - 671: 139(bool) SLessThan 669 419 - BranchConditional 671 661 662 - 661: Label - 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 674 674 16 16 - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 676 675(L) 47 - 679: 232(int) Load 657(i) - 681: 680(ptr) AccessChain 471 309 316 679 309 - 682: 18(fvec4) Load 681 - 683: 70(fvec3) VectorShuffle 682 682 0 1 2 - 684: 70(fvec3) Load 508(fragPos) - 685: 70(fvec3) FSub 683 684 - Store 675(L) 685 - 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 687 687 16 16 - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 689 688(dist) 47 - 691: 70(fvec3) Load 675(L) - 692: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 691 - Store 688(dist) 692 - 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 694 694 16 16 - 695: 70(fvec3) Load 675(L) - 696: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 695 - Store 675(L) 696 - 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 698 698 16 16 - 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 700 699(V) 47 - 703: 680(ptr) AccessChain 471 309 309 - 704: 18(fvec4) Load 703 - 705: 70(fvec3) VectorShuffle 704 704 0 1 2 - 706: 70(fvec3) Load 508(fragPos) - 707: 70(fvec3) FSub 705 706 - Store 699(V) 707 - 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 709 709 16 16 - 710: 70(fvec3) Load 699(V) - 711: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 710 - Store 699(V) 711 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 713 713 16 16 - 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 715 714(lightCosInnerAngle) 47 - Store 714(lightCosInnerAngle) 718 - 719: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 720 720 16 16 - 724: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 722 721(lightCosOuterAngle) 47 - Store 721(lightCosOuterAngle) 725 - 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 727 727 16 16 - 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 729 728(lightRange) 47 - Store 728(lightRange) 732 - 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 734 734 16 16 - 738: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 736 735(dir) 47 - 739: 232(int) Load 657(i) - 740: 680(ptr) AccessChain 471 309 316 739 309 - 741: 18(fvec4) Load 740 - 742: 70(fvec3) VectorShuffle 741 741 0 1 2 - 743: 232(int) Load 657(i) - 744: 680(ptr) AccessChain 471 309 316 743 316 - 745: 18(fvec4) Load 744 - 746: 70(fvec3) VectorShuffle 745 745 0 1 2 - 747: 70(fvec3) FSub 742 746 - 748: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 747 - Store 735(dir) 748 - 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 750 750 16 16 - 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 752 751(cosDir) 47 - 755: 70(fvec3) Load 675(L) - 756: 70(fvec3) Load 735(dir) - 757: 8(float) Dot 755 756 - Store 751(cosDir) 757 + 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 93(@main(vf2;) + 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 498: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 499 499 16 16 + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 501 500(fragPos) 47 + 509: 503 Load 506(textureposition) + 514: 167 Load 511(samplerposition) + 517: 515 SampledImage 509 514 + 518: 23(fvec2) Load 92(inUV) + 519: 18(fvec4) ImageSampleImplicitLod 517 518 + 520: 70(fvec3) VectorShuffle 519 519 0 1 2 + Store 500(fragPos) 520 + 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 522 522 16 16 + 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 524 523(normal) 47 + 530: 503 Load 527(textureNormal) + 535: 167 Load 532(samplerNormal) + 536: 515 SampledImage 530 535 + 537: 23(fvec2) Load 92(inUV) + 538: 18(fvec4) ImageSampleImplicitLod 536 537 + 539: 70(fvec3) VectorShuffle 538 538 0 1 2 + Store 523(normal) 539 + 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 541 541 16 16 + 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 543 542(albedo) 47 + 549: 503 Load 546(textureAlbedo) + 554: 167 Load 551(samplerAlbedo) + 555: 515 SampledImage 549 554 + 556: 23(fvec2) Load 92(inUV) + 557: 18(fvec4) ImageSampleImplicitLod 555 556 + Store 542(albedo) 557 + 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 559 559 16 16 + 561: 560(ptr) AccessChain 463 304 412 + 562: 227(int) Load 561 + 563: 139(bool) SGreaterThan 562 304 + SelectionMerge 565 None + BranchConditional 563 564 565 + 564: Label + 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 568 568 16 16 + 569: 560(ptr) AccessChain 463 304 412 + 570: 227(int) Load 569 + SelectionMerge 576 None + Switch 570 576 + case 1: 571 + case 2: 572 + case 3: 573 + case 4: 574 + case 5: 575 + 571: Label + 577: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 579 579 16 16 + 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 581 580(fragcolor) 47 + Store 584(param) 583 + 586: 70(fvec3) Load 500(fragPos) + Store 585(param) 586 + 587: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 584(param) 585(param) + Store 580(fragcolor) 587 + 588: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 589 589 16 16 + Branch 576 + 572: Label + 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 593 593 16 16 + 594: 70(fvec3) Load 500(fragPos) + Store 580(fragcolor) 594 + 595: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 596 596 16 16 + Branch 576 + 573: Label + 598: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 599: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 600 600 16 16 + 601: 70(fvec3) Load 523(normal) + Store 580(fragcolor) 601 + 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 603 603 16 16 + Branch 576 + 574: Label + 605: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 607 607 16 16 + 608: 18(fvec4) Load 542(albedo) + 609: 70(fvec3) VectorShuffle 608 608 0 1 2 + Store 580(fragcolor) 609 + 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 611 611 16 16 + Branch 576 + 575: Label + 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 615 615 16 16 + 616: 18(fvec4) Load 542(albedo) + 617: 70(fvec3) VectorShuffle 616 616 3 3 3 + Store 580(fragcolor) 617 + 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 619 619 16 16 + Branch 576 + 576: Label + 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 624 624 16 16 + 625: 70(fvec3) Load 580(fragcolor) + 626: 8(float) CompositeExtract 625 0 + 627: 8(float) CompositeExtract 625 1 + 628: 8(float) CompositeExtract 625 2 + 629: 18(fvec4) CompositeConstruct 626 627 628 110 + ReturnValue 629 + 565: Label + 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 633 633 16 16 + 634: 18(fvec4) Load 542(albedo) + 635: 70(fvec3) VectorShuffle 634 634 0 1 2 + 637: 70(fvec3) VectorTimesScalar 635 636 + Store 580(fragcolor) 637 + 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 639 639 16 16 + 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 641 640(N) 47 + 644: 70(fvec3) Load 523(normal) + 645: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 644 + Store 640(N) 645 + 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 + 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 649 648(i) 47 + Store 648(i) 304 + Branch 651 + 651: Label + 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 + LoopMerge 653 654 None + Branch 657 + 657: Label + 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 + 660: 227(int) Load 648(i) + 661: 139(bool) SLessThan 660 412 + BranchConditional 661 652 653 + 652: Label + 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 664 664 16 16 + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 666 665(L) 47 + 669: 227(int) Load 648(i) + 671: 670(ptr) AccessChain 463 304 311 669 304 + 672: 18(fvec4) Load 671 + 673: 70(fvec3) VectorShuffle 672 672 0 1 2 + 674: 70(fvec3) Load 500(fragPos) + 675: 70(fvec3) FSub 673 674 + Store 665(L) 675 + 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 677 677 16 16 + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 679 678(dist) 47 + 681: 70(fvec3) Load 665(L) + 682: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 681 + Store 678(dist) 682 + 683: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 684 684 16 16 + 685: 70(fvec3) Load 665(L) + 686: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 685 + Store 665(L) 686 + 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 688 688 16 16 + 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 690 689(V) 47 + 693: 670(ptr) AccessChain 463 304 304 + 694: 18(fvec4) Load 693 + 695: 70(fvec3) VectorShuffle 694 694 0 1 2 + 696: 70(fvec3) Load 500(fragPos) + 697: 70(fvec3) FSub 695 696 + Store 689(V) 697 + 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 699 699 16 16 + 700: 70(fvec3) Load 689(V) + 701: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 700 + Store 689(V) 701 + 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 703 703 16 16 + 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 705 704(lightCosInnerAngle) 47 + Store 704(lightCosInnerAngle) 708 + 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 710 710 16 16 + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(lightCosOuterAngle) 47 + Store 711(lightCosOuterAngle) 715 + 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 717 717 16 16 + 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 719 718(lightRange) 47 + Store 718(lightRange) 722 + 723: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 724 724 16 16 + 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(dir) 47 + 729: 227(int) Load 648(i) + 730: 670(ptr) AccessChain 463 304 311 729 304 + 731: 18(fvec4) Load 730 + 732: 70(fvec3) VectorShuffle 731 731 0 1 2 + 733: 227(int) Load 648(i) + 734: 670(ptr) AccessChain 463 304 311 733 311 + 735: 18(fvec4) Load 734 + 736: 70(fvec3) VectorShuffle 735 735 0 1 2 + 737: 70(fvec3) FSub 732 736 + 738: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 737 + Store 725(dir) 738 + 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 740 740 16 16 + 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 742 741(cosDir) 47 + 745: 70(fvec3) Load 665(L) + 746: 70(fvec3) Load 725(dir) + 747: 8(float) Dot 745 746 + Store 741(cosDir) 747 + 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 749 749 16 16 + 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 751 750(spotEffect) 47 + 754: 8(float) Load 711(lightCosOuterAngle) + 755: 8(float) Load 704(lightCosInnerAngle) + 756: 8(float) Load 741(cosDir) + 757: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 754 755 756 + Store 750(spotEffect) 757 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 759 759 16 16 - 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 761 760(spotEffect) 47 - 764: 8(float) Load 721(lightCosOuterAngle) - 765: 8(float) Load 714(lightCosInnerAngle) - 766: 8(float) Load 751(cosDir) - 767: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 764 765 766 - Store 760(spotEffect) 767 - 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 769 769 16 16 - 773: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 771 770(heightAttenuation) 47 - 774: 8(float) Load 728(lightRange) - 775: 8(float) Load 688(dist) - 776: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 774 197 775 - Store 770(heightAttenuation) 776 + 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 761 760(heightAttenuation) 47 + 764: 8(float) Load 718(lightRange) + 765: 8(float) Load 678(dist) + 766: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 764 195 765 + Store 760(heightAttenuation) 766 + 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 768 768 16 16 + 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 770 769(NdotL) 47 + 773: 70(fvec3) Load 640(N) + 774: 70(fvec3) Load 665(L) + 775: 8(float) Dot 773 774 + 776: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 775 + Store 769(NdotL) 776 777: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 778 778 16 16 - 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 780 779(NdotL) 47 - 783: 70(fvec3) Load 649(N) - 784: 70(fvec3) Load 675(L) - 785: 8(float) Dot 783 784 - 786: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 785 - Store 779(NdotL) 786 - 787: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 788 788 16 16 - 792: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 790 789(diff) 47 - 793: 8(float) Load 779(NdotL) - 794: 70(fvec3) CompositeConstruct 793 793 793 - Store 789(diff) 794 + 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 780 779(diff) 47 + 783: 8(float) Load 769(NdotL) + 784: 70(fvec3) CompositeConstruct 783 783 783 + Store 779(diff) 784 + 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 786 786 16 16 + 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 788 787(R) 47 + 791: 70(fvec3) Load 665(L) + 792: 70(fvec3) FNegate 791 + 793: 70(fvec3) Load 640(N) + 794: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 792 793 + Store 787(R) 794 795: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 796 796 16 16 - 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 798 797(R) 47 - 801: 70(fvec3) Load 675(L) - 802: 70(fvec3) FNegate 801 - 803: 70(fvec3) Load 649(N) - 804: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 802 803 - Store 797(R) 804 + 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 798 797(NdotR) 47 + 801: 70(fvec3) Load 787(R) + 802: 70(fvec3) Load 689(V) + 803: 8(float) Dot 801 802 + 804: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 803 + Store 797(NdotR) 804 805: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 806 806 16 16 - 810: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 808 807(NdotR) 47 - 811: 70(fvec3) Load 797(R) - 812: 70(fvec3) Load 699(V) - 813: 8(float) Dot 811 812 - 814: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 813 - Store 807(NdotR) 814 - 815: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 816 816 16 16 - 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 818 817(spec) 47 - 821: 8(float) Load 807(NdotR) - 823: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 821 822 - 824: 22(ptr) AccessChain 550(albedo) 17 - 825: 8(float) Load 824 - 826: 8(float) FMul 823 825 - 828: 8(float) FMul 826 827 - 829: 70(fvec3) CompositeConstruct 828 828 828 - Store 817(spec) 829 - 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 831 831 16 16 - 832: 70(fvec3) Load 789(diff) - 833: 70(fvec3) Load 817(spec) - 834: 70(fvec3) FAdd 832 833 - 835: 8(float) Load 760(spotEffect) - 836: 70(fvec3) VectorTimesScalar 834 835 - 837: 8(float) Load 770(heightAttenuation) - 838: 70(fvec3) VectorTimesScalar 836 837 - 839: 232(int) Load 657(i) - 841: 680(ptr) AccessChain 471 309 316 839 840 - 842: 18(fvec4) Load 841 - 843: 70(fvec3) VectorShuffle 842 842 0 1 2 - 844: 70(fvec3) FMul 838 843 - 845: 18(fvec4) Load 550(albedo) - 846: 70(fvec3) VectorShuffle 845 845 0 1 2 - 847: 70(fvec3) FMul 844 846 - 848: 70(fvec3) Load 589(fragcolor) - 849: 70(fvec3) FAdd 848 847 - Store 589(fragcolor) 849 - Branch 663 - 663: Label - 850: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 851: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 656 656 16 16 - 852: 232(int) Load 657(i) - 853: 232(int) IAdd 852 316 - Store 657(i) 853 - Branch 660 - 662: Label - 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 856 856 16 16 - 857: 568(ptr) AccessChain 471 309 840 - 858: 232(int) Load 857 - 860: 139(bool) SGreaterThan 858 309 - SelectionMerge 862 None - BranchConditional 860 861 862 - 861: Label - 863: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 864: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 865 865 16 16 - 867: 70(fvec3) Load 589(fragcolor) - Store 866(param) 867 - 869: 70(fvec3) Load 508(fragPos) - Store 868(param) 869 - 870: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 866(param) 868(param) - Store 589(fragcolor) 870 - Branch 862 - 862: Label - 871: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 872: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 873 873 16 16 - 874: 70(fvec3) Load 589(fragcolor) - 875: 8(float) CompositeExtract 874 0 - 876: 8(float) CompositeExtract 874 1 - 877: 8(float) CompositeExtract 874 2 - 878: 18(fvec4) CompositeConstruct 875 876 877 110 - ReturnValue 878 + 810: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 808 807(spec) 47 + 811: 8(float) Load 797(NdotR) + 813: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 811 812 + 814: 22(ptr) AccessChain 542(albedo) 17 + 815: 8(float) Load 814 + 816: 8(float) FMul 813 815 + 818: 8(float) FMul 816 817 + 819: 70(fvec3) CompositeConstruct 818 818 818 + Store 807(spec) 819 + 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 821 821 16 16 + 822: 70(fvec3) Load 779(diff) + 823: 70(fvec3) Load 807(spec) + 824: 70(fvec3) FAdd 822 823 + 825: 8(float) Load 750(spotEffect) + 826: 70(fvec3) VectorTimesScalar 824 825 + 827: 8(float) Load 760(heightAttenuation) + 828: 70(fvec3) VectorTimesScalar 826 827 + 829: 227(int) Load 648(i) + 831: 670(ptr) AccessChain 463 304 311 829 830 + 832: 18(fvec4) Load 831 + 833: 70(fvec3) VectorShuffle 832 832 0 1 2 + 834: 70(fvec3) FMul 828 833 + 835: 18(fvec4) Load 542(albedo) + 836: 70(fvec3) VectorShuffle 835 835 0 1 2 + 837: 70(fvec3) FMul 834 836 + 838: 70(fvec3) Load 580(fragcolor) + 839: 70(fvec3) FAdd 838 837 + Store 580(fragcolor) 839 + Branch 654 + 654: Label + 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 841: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 + 842: 227(int) Load 648(i) + 843: 227(int) IAdd 842 311 + Store 648(i) 843 + Branch 651 + 653: Label + 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 846 846 16 16 + 847: 560(ptr) AccessChain 463 304 830 + 848: 227(int) Load 847 + 849: 139(bool) SGreaterThan 848 304 + SelectionMerge 851 None + BranchConditional 849 850 851 + 850: Label + 852: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 853: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 854 854 16 16 + 856: 70(fvec3) Load 580(fragcolor) + Store 855(param) 856 + 858: 70(fvec3) Load 500(fragPos) + Store 857(param) 858 + 859: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 855(param) 857(param) + Store 580(fragcolor) 859 + Branch 851 + 851: Label + 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 861: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 862 862 16 16 + 863: 70(fvec3) Load 580(fragcolor) + 864: 8(float) CompositeExtract 863 0 + 865: 8(float) CompositeExtract 863 1 + 866: 8(float) CompositeExtract 863 2 + 867: 18(fvec4) CompositeConstruct 864 865 866 110 + ReturnValue 867 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index 34a6d0a854..772aea292e 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -3,14 +3,14 @@ WARNING: 0:158: '' : attribute does not apply to entry point // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 692 +// Id's are bound by 685 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 6 "main" 584 591 598 632 641 648 655 670 685 + EntryPoint TessellationControl 6 "main" 577 584 591 625 634 641 648 663 678 ExecutionMode 6 OutputVertices 4 ExecutionMode 6 Quads ExecutionMode 6 SpacingEqual @@ -68,7 +68,7 @@ WARNING: 0:158: '' : attribute does not apply to entry point 342: String "type.sampled.image" 343: String "@type.sampled.image" 361: String "i" - 414: String "output" + 410: String "output" Name 6 "main" Name 26 "screenSpaceTessFactor(vf4;vf4;" Name 24 "p0" @@ -113,34 +113,34 @@ WARNING: 0:158: '' : attribute does not apply to entry point Name 327 "textureHeight" Name 336 "samplerHeight" Name 359 "i" - Name 412 "output" - Name 422 "param" - Name 425 "param" - Name 466 "param" + Name 408 "output" + Name 418 "param" + Name 421 "param" + Name 459 "param" + Name 462 "param" Name 469 "param" - Name 476 "param" + Name 472 "param" Name 479 "param" - Name 486 "param" + Name 482 "param" Name 489 "param" - Name 496 "param" - Name 499 "param" - Name 551 "output" - Name 581 "patch" - Name 584 "patch.Pos" - Name 591 "patch.Normal" - Name 598 "patch.UV" - Name 630 "InvocationID" - Name 632 "InvocationID" - Name 634 "flattenTemp" - Name 635 "param" - Name 637 "param" - Name 641 "@entryPointOutput.Pos" - Name 648 "@entryPointOutput.Normal" - Name 655 "@entryPointOutput.UV" - Name 665 "@patchConstantResult" - Name 666 "param" - Name 670 "@patchConstantOutput.TessLevelOuter" - Name 685 "@patchConstantOutput.TessLevelInner" + Name 492 "param" + Name 544 "output" + Name 574 "patch" + Name 577 "patch.Pos" + Name 584 "patch.Normal" + Name 591 "patch.UV" + Name 623 "InvocationID" + Name 625 "InvocationID" + Name 627 "flattenTemp" + Name 628 "param" + Name 630 "param" + Name 634 "@entryPointOutput.Pos" + Name 641 "@entryPointOutput.Normal" + Name 648 "@entryPointOutput.UV" + Name 658 "@patchConstantResult" + Name 659 "param" + Name 663 "@patchConstantOutput.TessLevelOuter" + Name 678 "@patchConstantOutput.TessLevelInner" Decorate 176 ArrayStride 16 MemberDecorate 178(UBO) 0 RowMajor MemberDecorate 178(UBO) 0 Offset 0 @@ -162,17 +162,17 @@ WARNING: 0:158: '' : attribute does not apply to entry point Decorate 327(textureHeight) Binding 1 Decorate 336(samplerHeight) DescriptorSet 0 Decorate 336(samplerHeight) Binding 1 - Decorate 584(patch.Pos) BuiltIn Position - Decorate 591(patch.Normal) Location 0 - Decorate 598(patch.UV) Location 1 - Decorate 632(InvocationID) BuiltIn InvocationId - Decorate 641(@entryPointOutput.Pos) BuiltIn Position - Decorate 648(@entryPointOutput.Normal) Location 0 - Decorate 655(@entryPointOutput.UV) Location 1 - Decorate 670(@patchConstantOutput.TessLevelOuter) Patch - Decorate 670(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 685(@patchConstantOutput.TessLevelInner) Patch - Decorate 685(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + Decorate 577(patch.Pos) BuiltIn Position + Decorate 584(patch.Normal) Location 0 + Decorate 591(patch.UV) Location 1 + Decorate 625(InvocationID) BuiltIn InvocationId + Decorate 634(@entryPointOutput.Pos) BuiltIn Position + Decorate 641(@entryPointOutput.Normal) Location 0 + Decorate 648(@entryPointOutput.UV) Location 1 + Decorate 663(@patchConstantOutput.TessLevelOuter) Patch + Decorate 663(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 678(@patchConstantOutput.TessLevelInner) Patch + Decorate 678(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -339,205 +339,198 @@ WARNING: 0:158: '' : attribute does not apply to entry point 357: 11(int) Constant 102 358: TypePointer Function 210(int) 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 361 212 30 357 16 59 19 - 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 377: 11(int) Constant 103 - 379: 210(int) Constant 3 - 381: TypePointer Uniform 18(fvec4) - 385: 8(float) Constant 1090519040 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 392: 49(bool) ConstantFalse - 395: 11(int) Constant 105 - 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 404: 11(int) Constant 108 - 410: 11(int) Constant 113 - 411: TypePointer Function 92(ConstantsHSOutput) - 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 414 100 30 410 16 108 19 - 416: 88 ConstantComposite 227 227 227 227 - 417: 90 ConstantComposite 227 227 - 418:92(ConstantsHSOutput) ConstantComposite 416 417 - 420: 11(int) Constant 115 - 421: 210(int) Constant 2 - 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 436: 11(int) Constant 117 - 439: 11(int) Constant 118 - 442: 11(int) Constant 119 - 445: 11(int) Constant 120 - 448: 11(int) Constant 121 - 451: 11(int) Constant 122 - 456: 11(int) Constant 126 - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 465: 11(int) Constant 128 - 475: 11(int) Constant 129 - 485: 11(int) Constant 130 - 495: 11(int) Constant 131 - 505: 11(int) Constant 132 - 513: 11(int) Constant 133 - 523: 11(int) Constant 139 - 526: 11(int) Constant 140 - 529: 11(int) Constant 141 - 532: 11(int) Constant 142 - 535: 11(int) Constant 143 - 538: 11(int) Constant 144 - 542: 11(int) Constant 148 - 549: 11(int) Constant 159 - 550: TypePointer Function 116(HSOutput) - 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 414 123 30 549 16 132 19 - 554: 18(fvec4) ConstantComposite 227 227 227 227 - 555: 46(fvec2) ConstantComposite 227 227 - 556:116(HSOutput) ConstantComposite 554 228 555 - 558: 11(int) Constant 160 - 564: 11(int) Constant 161 - 566: TypePointer Function 69(fvec3) - 571: 11(int) Constant 162 - 577: 11(int) Constant 163 - 582: TypeArray 18(fvec4) 19 + 376: 11(int) Constant 103 + 378: 210(int) Constant 3 + 380: TypePointer Uniform 18(fvec4) + 384: 8(float) Constant 1090519040 + 389: 49(bool) ConstantFalse + 392: 11(int) Constant 105 + 400: 11(int) Constant 108 + 406: 11(int) Constant 113 + 407: TypePointer Function 92(ConstantsHSOutput) + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 100 30 406 16 108 19 + 412: 88 ConstantComposite 227 227 227 227 + 413: 90 ConstantComposite 227 227 + 414:92(ConstantsHSOutput) ConstantComposite 412 413 + 416: 11(int) Constant 115 + 417: 210(int) Constant 2 + 430: 11(int) Constant 117 + 433: 11(int) Constant 118 + 436: 11(int) Constant 119 + 439: 11(int) Constant 120 + 442: 11(int) Constant 121 + 445: 11(int) Constant 122 + 450: 11(int) Constant 126 + 458: 11(int) Constant 128 + 468: 11(int) Constant 129 + 478: 11(int) Constant 130 + 488: 11(int) Constant 131 + 498: 11(int) Constant 132 + 506: 11(int) Constant 133 + 516: 11(int) Constant 139 + 519: 11(int) Constant 140 + 522: 11(int) Constant 141 + 525: 11(int) Constant 142 + 528: 11(int) Constant 143 + 531: 11(int) Constant 144 + 535: 11(int) Constant 148 + 542: 11(int) Constant 159 + 543: TypePointer Function 116(HSOutput) + 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 123 30 542 16 132 19 + 547: 18(fvec4) ConstantComposite 227 227 227 227 + 548: 46(fvec2) ConstantComposite 227 227 + 549:116(HSOutput) ConstantComposite 547 228 548 + 551: 11(int) Constant 160 + 557: 11(int) Constant 161 + 559: TypePointer Function 69(fvec3) + 564: 11(int) Constant 162 + 570: 11(int) Constant 163 + 575: TypeArray 18(fvec4) 19 + 576: TypePointer Input 575 + 577(patch.Pos): 576(ptr) Variable Input + 578: TypePointer Input 18(fvec4) + 582: TypeArray 69(fvec3) 19 583: TypePointer Input 582 - 584(patch.Pos): 583(ptr) Variable Input - 585: TypePointer Input 18(fvec4) - 589: TypeArray 69(fvec3) 19 +584(patch.Normal): 583(ptr) Variable Input + 585: TypePointer Input 69(fvec3) + 589: TypeArray 46(fvec2) 19 590: TypePointer Input 589 -591(patch.Normal): 590(ptr) Variable Input - 592: TypePointer Input 69(fvec3) - 596: TypeArray 46(fvec2) 19 - 597: TypePointer Input 596 - 598(patch.UV): 597(ptr) Variable Input - 599: TypePointer Input 46(fvec2) - 631: TypePointer Input 11(int) -632(InvocationID): 631(ptr) Variable Input + 591(patch.UV): 590(ptr) Variable Input + 592: TypePointer Input 46(fvec2) + 624: TypePointer Input 11(int) +625(InvocationID): 624(ptr) Variable Input + 633: TypePointer Output 575 +634(@entryPointOutput.Pos): 633(ptr) Variable Output + 638: TypePointer Output 18(fvec4) 640: TypePointer Output 582 -641(@entryPointOutput.Pos): 640(ptr) Variable Output - 645: TypePointer Output 18(fvec4) +641(@entryPointOutput.Normal): 640(ptr) Variable Output + 645: TypePointer Output 69(fvec3) 647: TypePointer Output 589 -648(@entryPointOutput.Normal): 647(ptr) Variable Output - 652: TypePointer Output 69(fvec3) - 654: TypePointer Output 596 -655(@entryPointOutput.UV): 654(ptr) Variable Output - 659: TypePointer Output 46(fvec2) - 669: TypePointer Output 88 -670(@patchConstantOutput.TessLevelOuter): 669(ptr) Variable Output - 673: TypePointer Output 8(float) - 684: TypePointer Output 90 -685(@patchConstantOutput.TessLevelInner): 684(ptr) Variable Output +648(@entryPointOutput.UV): 647(ptr) Variable Output + 652: TypePointer Output 46(fvec2) + 662: TypePointer Output 88 +663(@patchConstantOutput.TessLevelOuter): 662(ptr) Variable Output + 666: TypePointer Output 8(float) + 677: TypePointer Output 90 +678(@patchConstantOutput.TessLevelInner): 677(ptr) Variable Output Line 1 158 1 6(main): 4 Function None 5 7: Label - 581(patch): 87(ptr) Variable Function -630(InvocationID): 115(ptr) Variable Function -634(flattenTemp): 550(ptr) Variable Function - 635(param): 87(ptr) Variable Function - 637(param): 115(ptr) Variable Function -665(@patchConstantResult): 411(ptr) Variable Function - 666(param): 87(ptr) Variable Function + 574(patch): 87(ptr) Variable Function +623(InvocationID): 115(ptr) Variable Function +627(flattenTemp): 543(ptr) Variable Function + 628(param): 87(ptr) Variable Function + 630(param): 115(ptr) Variable Function +658(@patchConstantResult): 407(ptr) Variable Function + 659(param): 87(ptr) Variable Function Line 1 158 0 - 586: 585(ptr) AccessChain 584(patch.Pos) 213 - 587: 18(fvec4) Load 586 - 588: 21(ptr) AccessChain 581(patch) 213 213 + 579: 578(ptr) AccessChain 577(patch.Pos) 213 + 580: 18(fvec4) Load 579 + 581: 21(ptr) AccessChain 574(patch) 213 213 + Store 581 580 + 586: 585(ptr) AccessChain 584(patch.Normal) 213 + 587: 69(fvec3) Load 586 + 588: 559(ptr) AccessChain 574(patch) 213 214 Store 588 587 - 593: 592(ptr) AccessChain 591(patch.Normal) 213 - 594: 69(fvec3) Load 593 - 595: 566(ptr) AccessChain 581(patch) 213 214 + 593: 592(ptr) AccessChain 591(patch.UV) 213 + 594: 46(fvec2) Load 593 + 595: 48(ptr) AccessChain 574(patch) 213 417 Store 595 594 - 600: 599(ptr) AccessChain 598(patch.UV) 213 - 601: 46(fvec2) Load 600 - 602: 48(ptr) AccessChain 581(patch) 213 421 - Store 602 601 - 603: 585(ptr) AccessChain 584(patch.Pos) 214 - 604: 18(fvec4) Load 603 - 605: 21(ptr) AccessChain 581(patch) 214 213 - Store 605 604 - 606: 592(ptr) AccessChain 591(patch.Normal) 214 - 607: 69(fvec3) Load 606 - 608: 566(ptr) AccessChain 581(patch) 214 214 - Store 608 607 - 609: 599(ptr) AccessChain 598(patch.UV) 214 - 610: 46(fvec2) Load 609 - 611: 48(ptr) AccessChain 581(patch) 214 421 - Store 611 610 - 612: 585(ptr) AccessChain 584(patch.Pos) 421 - 613: 18(fvec4) Load 612 - 614: 21(ptr) AccessChain 581(patch) 421 213 - Store 614 613 - 615: 592(ptr) AccessChain 591(patch.Normal) 421 - 616: 69(fvec3) Load 615 - 617: 566(ptr) AccessChain 581(patch) 421 214 - Store 617 616 - 618: 599(ptr) AccessChain 598(patch.UV) 421 - 619: 46(fvec2) Load 618 - 620: 48(ptr) AccessChain 581(patch) 421 421 - Store 620 619 - 621: 585(ptr) AccessChain 584(patch.Pos) 379 - 622: 18(fvec4) Load 621 - 623: 21(ptr) AccessChain 581(patch) 379 213 - Store 623 622 - 624: 592(ptr) AccessChain 591(patch.Normal) 379 - 625: 69(fvec3) Load 624 - 626: 566(ptr) AccessChain 581(patch) 379 214 - Store 626 625 - 627: 599(ptr) AccessChain 598(patch.UV) 379 - 628: 46(fvec2) Load 627 - 629: 48(ptr) AccessChain 581(patch) 379 421 - Store 629 628 - 633: 11(int) Load 632(InvocationID) - Store 630(InvocationID) 633 - 636: 85 Load 581(patch) - Store 635(param) 636 - 638: 11(int) Load 630(InvocationID) - Store 637(param) 638 - 639:116(HSOutput) FunctionCall 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 635(param) 637(param) - Store 634(flattenTemp) 639 - 642: 11(int) Load 632(InvocationID) - 643: 21(ptr) AccessChain 634(flattenTemp) 213 - 644: 18(fvec4) Load 643 - 646: 645(ptr) AccessChain 641(@entryPointOutput.Pos) 642 + 596: 578(ptr) AccessChain 577(patch.Pos) 214 + 597: 18(fvec4) Load 596 + 598: 21(ptr) AccessChain 574(patch) 214 213 + Store 598 597 + 599: 585(ptr) AccessChain 584(patch.Normal) 214 + 600: 69(fvec3) Load 599 + 601: 559(ptr) AccessChain 574(patch) 214 214 + Store 601 600 + 602: 592(ptr) AccessChain 591(patch.UV) 214 + 603: 46(fvec2) Load 602 + 604: 48(ptr) AccessChain 574(patch) 214 417 + Store 604 603 + 605: 578(ptr) AccessChain 577(patch.Pos) 417 + 606: 18(fvec4) Load 605 + 607: 21(ptr) AccessChain 574(patch) 417 213 + Store 607 606 + 608: 585(ptr) AccessChain 584(patch.Normal) 417 + 609: 69(fvec3) Load 608 + 610: 559(ptr) AccessChain 574(patch) 417 214 + Store 610 609 + 611: 592(ptr) AccessChain 591(patch.UV) 417 + 612: 46(fvec2) Load 611 + 613: 48(ptr) AccessChain 574(patch) 417 417 + Store 613 612 + 614: 578(ptr) AccessChain 577(patch.Pos) 378 + 615: 18(fvec4) Load 614 + 616: 21(ptr) AccessChain 574(patch) 378 213 + Store 616 615 + 617: 585(ptr) AccessChain 584(patch.Normal) 378 + 618: 69(fvec3) Load 617 + 619: 559(ptr) AccessChain 574(patch) 378 214 + Store 619 618 + 620: 592(ptr) AccessChain 591(patch.UV) 378 + 621: 46(fvec2) Load 620 + 622: 48(ptr) AccessChain 574(patch) 378 417 + Store 622 621 + 626: 11(int) Load 625(InvocationID) + Store 623(InvocationID) 626 + 629: 85 Load 574(patch) + Store 628(param) 629 + 631: 11(int) Load 623(InvocationID) + Store 630(param) 631 + 632:116(HSOutput) FunctionCall 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 628(param) 630(param) + Store 627(flattenTemp) 632 + 635: 11(int) Load 625(InvocationID) + 636: 21(ptr) AccessChain 627(flattenTemp) 213 + 637: 18(fvec4) Load 636 + 639: 638(ptr) AccessChain 634(@entryPointOutput.Pos) 635 + Store 639 637 + 642: 11(int) Load 625(InvocationID) + 643: 559(ptr) AccessChain 627(flattenTemp) 214 + 644: 69(fvec3) Load 643 + 646: 645(ptr) AccessChain 641(@entryPointOutput.Normal) 642 Store 646 644 - 649: 11(int) Load 632(InvocationID) - 650: 566(ptr) AccessChain 634(flattenTemp) 214 - 651: 69(fvec3) Load 650 - 653: 652(ptr) AccessChain 648(@entryPointOutput.Normal) 649 + 649: 11(int) Load 625(InvocationID) + 650: 48(ptr) AccessChain 627(flattenTemp) 417 + 651: 46(fvec2) Load 650 + 653: 652(ptr) AccessChain 648(@entryPointOutput.UV) 649 Store 653 651 - 656: 11(int) Load 632(InvocationID) - 657: 48(ptr) AccessChain 634(flattenTemp) 421 - 658: 46(fvec2) Load 657 - 660: 659(ptr) AccessChain 655(@entryPointOutput.UV) 656 - Store 660 658 ControlBarrier 44 19 16 - 661: 11(int) Load 632(InvocationID) - 662: 49(bool) IEqual 661 213 - SelectionMerge 664 None - BranchConditional 662 663 664 - 663: Label - 667: 85 Load 581(patch) - Store 666(param) 667 - 668:92(ConstantsHSOutput) FunctionCall 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 666(param) - Store 665(@patchConstantResult) 668 - 671: 156(ptr) AccessChain 665(@patchConstantResult) 213 213 + 654: 11(int) Load 625(InvocationID) + 655: 49(bool) IEqual 654 213 + SelectionMerge 657 None + BranchConditional 655 656 657 + 656: Label + 660: 85 Load 574(patch) + Store 659(param) 660 + 661:92(ConstantsHSOutput) FunctionCall 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 659(param) + Store 658(@patchConstantResult) 661 + 664: 156(ptr) AccessChain 658(@patchConstantResult) 213 213 + 665: 8(float) Load 664 + 667: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 213 + Store 667 665 + 668: 156(ptr) AccessChain 658(@patchConstantResult) 213 214 + 669: 8(float) Load 668 + 670: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 214 + Store 670 669 + 671: 156(ptr) AccessChain 658(@patchConstantResult) 213 417 672: 8(float) Load 671 - 674: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 213 - Store 674 672 - 675: 156(ptr) AccessChain 665(@patchConstantResult) 213 214 - 676: 8(float) Load 675 - 677: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 214 - Store 677 676 - 678: 156(ptr) AccessChain 665(@patchConstantResult) 213 421 - 679: 8(float) Load 678 - 680: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 421 - Store 680 679 - 681: 156(ptr) AccessChain 665(@patchConstantResult) 213 379 - 682: 8(float) Load 681 - 683: 673(ptr) AccessChain 670(@patchConstantOutput.TessLevelOuter) 379 - Store 683 682 - 686: 156(ptr) AccessChain 665(@patchConstantResult) 214 213 - 687: 8(float) Load 686 - 688: 673(ptr) AccessChain 685(@patchConstantOutput.TessLevelInner) 213 - Store 688 687 - 689: 156(ptr) AccessChain 665(@patchConstantResult) 214 214 - 690: 8(float) Load 689 - 691: 673(ptr) AccessChain 685(@patchConstantOutput.TessLevelInner) 214 - Store 691 690 - Branch 664 - 664: Label + 673: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 417 + Store 673 672 + 674: 156(ptr) AccessChain 658(@patchConstantResult) 213 378 + 675: 8(float) Load 674 + 676: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 378 + Store 676 675 + 679: 156(ptr) AccessChain 658(@patchConstantResult) 214 213 + 680: 8(float) Load 679 + 681: 666(ptr) AccessChain 678(@patchConstantOutput.TessLevelInner) 213 + Store 681 680 + 682: 156(ptr) AccessChain 658(@patchConstantResult) 214 214 + 683: 8(float) Load 682 + 684: 666(ptr) AccessChain 678(@patchConstantOutput.TessLevelInner) 214 + Store 684 683 + Branch 657 + 657: Label Return FunctionEnd Line 1 65 1 @@ -699,223 +692,223 @@ WARNING: 0:158: '' : attribute does not apply to entry point 370: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 372: 210(int) Load 359(i) - 374: 49(bool) SLessThan 372 269 - BranchConditional 374 364 365 + 373: 49(bool) SLessThan 372 269 + BranchConditional 373 364 365 364: Label - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 377 377 16 16 - 378: 18(fvec4) Load 314(pos) - 380: 210(int) Load 359(i) - 382: 381(ptr) AccessChain 207 213 379 380 - 383: 18(fvec4) Load 382 - 384: 8(float) Dot 378 383 - 386: 8(float) FAdd 384 385 - 388: 49(bool) FOrdLessThan 386 227 - SelectionMerge 390 None - BranchConditional 388 389 390 - 389: Label - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 395 395 16 16 - ReturnValue 392 - 390: Label + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 376 376 16 16 + 377: 18(fvec4) Load 314(pos) + 379: 210(int) Load 359(i) + 381: 380(ptr) AccessChain 207 213 378 379 + 382: 18(fvec4) Load 381 + 383: 8(float) Dot 377 382 + 385: 8(float) FAdd 383 384 + 386: 49(bool) FOrdLessThan 385 227 + SelectionMerge 388 None + BranchConditional 386 387 388 + 387: Label + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 392 392 16 16 + ReturnValue 389 + 388: Label Branch 366 366: Label - 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 - 399: 210(int) Load 359(i) - 400: 210(int) IAdd 399 214 - Store 359(i) 400 + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 + 396: 210(int) Load 359(i) + 397: 210(int) IAdd 396 214 + Store 359(i) 397 Branch 363 365: Label - 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 404 404 16 16 + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 400 400 16 16 ReturnValue 175 FunctionEnd Line 1 112 1 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):92(ConstantsHSOutput) Function None 102 104(patch): 87(ptr) FunctionParameter 106: Label - 412(output): 411(ptr) Variable Function - 422(param): 21(ptr) Variable Function - 425(param): 48(ptr) Variable Function - 466(param): 21(ptr) Variable Function + 408(output): 407(ptr) Variable Function + 418(param): 21(ptr) Variable Function + 421(param): 48(ptr) Variable Function + 459(param): 21(ptr) Variable Function + 462(param): 21(ptr) Variable Function 469(param): 21(ptr) Variable Function - 476(param): 21(ptr) Variable Function + 472(param): 21(ptr) Variable Function 479(param): 21(ptr) Variable Function - 486(param): 21(ptr) Variable Function + 482(param): 21(ptr) Variable Function 489(param): 21(ptr) Variable Function - 496(param): 21(ptr) Variable Function - 499(param): 21(ptr) Variable Function + 492(param): 21(ptr) Variable Function 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 109 109 16 16 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 112 104(patch) 41 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 108 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 410 410 16 16 - 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 413 412(output) 41 - Store 412(output) 418 - 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 420 420 16 16 - 423: 21(ptr) AccessChain 104(patch) 213 213 - 424: 18(fvec4) Load 423 - Store 422(param) 424 - 426: 48(ptr) AccessChain 104(patch) 213 421 - 427: 46(fvec2) Load 426 - Store 425(param) 427 - 428: 49(bool) FunctionCall 56(frustumCheck(vf4;vf2;) 422(param) 425(param) - 431: 49(bool) LogicalNot 428 - SelectionMerge 433 None - BranchConditional 431 432 453 - 432: Label - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 108 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 406 406 16 16 + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 409 408(output) 41 + Store 408(output) 414 + 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 416 416 16 16 + 419: 21(ptr) AccessChain 104(patch) 213 213 + 420: 18(fvec4) Load 419 + Store 418(param) 420 + 422: 48(ptr) AccessChain 104(patch) 213 417 + 423: 46(fvec2) Load 422 + Store 421(param) 423 + 424: 49(bool) FunctionCall 56(frustumCheck(vf4;vf2;) 418(param) 421(param) + 425: 49(bool) LogicalNot 424 + SelectionMerge 427 None + BranchConditional 425 426 447 + 426: Label + 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 430 430 16 16 + 431: 156(ptr) AccessChain 408(output) 214 213 + Store 431 227 + 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 433 433 16 16 + 434: 156(ptr) AccessChain 408(output) 214 214 + Store 434 227 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 436 436 16 16 - 437: 156(ptr) AccessChain 412(output) 214 213 + 437: 156(ptr) AccessChain 408(output) 213 213 Store 437 227 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 439 439 16 16 - 440: 156(ptr) AccessChain 412(output) 214 214 + 440: 156(ptr) AccessChain 408(output) 213 214 Store 440 227 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 442 442 16 16 - 443: 156(ptr) AccessChain 412(output) 213 213 + 443: 156(ptr) AccessChain 408(output) 213 417 Store 443 227 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 445 445 16 16 - 446: 156(ptr) AccessChain 412(output) 213 214 + 446: 156(ptr) AccessChain 408(output) 213 378 Store 446 227 - 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 448 448 16 16 - 449: 156(ptr) AccessChain 412(output) 213 421 - Store 449 227 - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 451 451 16 16 - 452: 156(ptr) AccessChain 412(output) 213 379 - Store 452 227 - Branch 433 - 453: Label - 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 455: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 456 456 16 16 - 457: 297(ptr) AccessChain 207 213 301 - 458: 8(float) Load 457 - 460: 49(bool) FOrdGreaterThan 458 227 - SelectionMerge 462 None - BranchConditional 460 461 520 - 461: Label - 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 465 465 16 16 - 467: 21(ptr) AccessChain 104(patch) 379 213 - 468: 18(fvec4) Load 467 - Store 466(param) 468 + Branch 427 + 447: Label + 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 450 450 16 16 + 451: 297(ptr) AccessChain 207 213 301 + 452: 8(float) Load 451 + 453: 49(bool) FOrdGreaterThan 452 227 + SelectionMerge 455 None + BranchConditional 453 454 513 + 454: Label + 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 458 458 16 16 + 460: 21(ptr) AccessChain 104(patch) 378 213 + 461: 18(fvec4) Load 460 + Store 459(param) 461 + 463: 21(ptr) AccessChain 104(patch) 213 213 + 464: 18(fvec4) Load 463 + Store 462(param) 464 + 465: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 459(param) 462(param) + 466: 156(ptr) AccessChain 408(output) 213 213 + Store 466 465 + 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 468 468 16 16 470: 21(ptr) AccessChain 104(patch) 213 213 471: 18(fvec4) Load 470 Store 469(param) 471 - 472: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 466(param) 469(param) - 473: 156(ptr) AccessChain 412(output) 213 213 - Store 473 472 - 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 475 475 16 16 - 477: 21(ptr) AccessChain 104(patch) 213 213 - 478: 18(fvec4) Load 477 - Store 476(param) 478 + 473: 21(ptr) AccessChain 104(patch) 214 213 + 474: 18(fvec4) Load 473 + Store 472(param) 474 + 475: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 469(param) 472(param) + 476: 156(ptr) AccessChain 408(output) 213 214 + Store 476 475 + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 478 478 16 16 480: 21(ptr) AccessChain 104(patch) 214 213 481: 18(fvec4) Load 480 Store 479(param) 481 - 482: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 476(param) 479(param) - 483: 156(ptr) AccessChain 412(output) 213 214 - Store 483 482 - 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 485 485 16 16 - 487: 21(ptr) AccessChain 104(patch) 214 213 - 488: 18(fvec4) Load 487 - Store 486(param) 488 - 490: 21(ptr) AccessChain 104(patch) 421 213 + 483: 21(ptr) AccessChain 104(patch) 417 213 + 484: 18(fvec4) Load 483 + Store 482(param) 484 + 485: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 479(param) 482(param) + 486: 156(ptr) AccessChain 408(output) 213 417 + Store 486 485 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 488 488 16 16 + 490: 21(ptr) AccessChain 104(patch) 417 213 491: 18(fvec4) Load 490 Store 489(param) 491 - 492: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 486(param) 489(param) - 493: 156(ptr) AccessChain 412(output) 213 421 - Store 493 492 - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 495 495 16 16 - 497: 21(ptr) AccessChain 104(patch) 421 213 - 498: 18(fvec4) Load 497 - Store 496(param) 498 - 500: 21(ptr) AccessChain 104(patch) 379 213 - 501: 18(fvec4) Load 500 - Store 499(param) 501 - 502: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 496(param) 499(param) - 503: 156(ptr) AccessChain 412(output) 213 379 - Store 503 502 - 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 505 505 16 16 - 506: 156(ptr) AccessChain 412(output) 213 213 - 507: 8(float) Load 506 - 508: 156(ptr) AccessChain 412(output) 213 379 - 509: 8(float) Load 508 - 510: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 507 509 149 - 511: 156(ptr) AccessChain 412(output) 214 213 - Store 511 510 - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 513 513 16 16 - 514: 156(ptr) AccessChain 412(output) 213 421 - 515: 8(float) Load 514 - 516: 156(ptr) AccessChain 412(output) 213 214 - 517: 8(float) Load 516 - 518: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 515 517 149 - 519: 156(ptr) AccessChain 412(output) 214 214 - Store 519 518 - Branch 462 - 520: Label - 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 523 523 16 16 - 524: 156(ptr) AccessChain 412(output) 214 213 - Store 524 305 - 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 526 526 16 16 - 527: 156(ptr) AccessChain 412(output) 214 214 - Store 527 305 - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 529 529 16 16 - 530: 156(ptr) AccessChain 412(output) 213 213 - Store 530 305 - 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 532 532 16 16 - 533: 156(ptr) AccessChain 412(output) 213 214 - Store 533 305 - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 535 535 16 16 - 536: 156(ptr) AccessChain 412(output) 213 421 - Store 536 305 - 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 538 538 16 16 - 539: 156(ptr) AccessChain 412(output) 213 379 - Store 539 305 - Branch 462 - 462: Label - Branch 433 - 433: Label - 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 541: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 542 542 16 16 - 543:92(ConstantsHSOutput) Load 412(output) - ReturnValue 543 + 493: 21(ptr) AccessChain 104(patch) 378 213 + 494: 18(fvec4) Load 493 + Store 492(param) 494 + 495: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 489(param) 492(param) + 496: 156(ptr) AccessChain 408(output) 213 378 + Store 496 495 + 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 498 498 16 16 + 499: 156(ptr) AccessChain 408(output) 213 213 + 500: 8(float) Load 499 + 501: 156(ptr) AccessChain 408(output) 213 378 + 502: 8(float) Load 501 + 503: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 500 502 149 + 504: 156(ptr) AccessChain 408(output) 214 213 + Store 504 503 + 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 506 506 16 16 + 507: 156(ptr) AccessChain 408(output) 213 417 + 508: 8(float) Load 507 + 509: 156(ptr) AccessChain 408(output) 213 214 + 510: 8(float) Load 509 + 511: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 508 510 149 + 512: 156(ptr) AccessChain 408(output) 214 214 + Store 512 511 + Branch 455 + 513: Label + 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 516 516 16 16 + 517: 156(ptr) AccessChain 408(output) 214 213 + Store 517 305 + 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 519 519 16 16 + 520: 156(ptr) AccessChain 408(output) 214 214 + Store 520 305 + 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 522 522 16 16 + 523: 156(ptr) AccessChain 408(output) 213 213 + Store 523 305 + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 525 525 16 16 + 526: 156(ptr) AccessChain 408(output) 213 214 + Store 526 305 + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 528 528 16 16 + 529: 156(ptr) AccessChain 408(output) 213 417 + Store 529 305 + 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 531 531 16 16 + 532: 156(ptr) AccessChain 408(output) 213 378 + Store 532 305 + Branch 455 + 455: Label + Branch 427 + 427: Label + 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 535 535 16 16 + 536:92(ConstantsHSOutput) Load 408(output) + ReturnValue 536 FunctionEnd Line 1 158 1 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):116(HSOutput) Function None 125 127(patch): 87(ptr) FunctionParameter 128(InvocationID): 115(ptr) FunctionParameter 130: Label - 551(output): 550(ptr) Variable Function + 544(output): 543(ptr) Variable Function 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 132 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 133 133 16 16 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 127(patch) 41 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 138 128(InvocationID) 41 - 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 132 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) - 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 132 - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 549 549 16 16 - 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 552 551(output) 41 - Store 551(output) 556 - 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 558 558 16 16 - 559: 11(int) Load 128(InvocationID) - 560: 21(ptr) AccessChain 127(patch) 559 213 - 561: 18(fvec4) Load 560 - 562: 21(ptr) AccessChain 551(output) 213 + 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 132 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 132 + 541: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 542 542 16 16 + 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 545 544(output) 41 + Store 544(output) 549 + 550: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 551 551 16 16 + 552: 11(int) Load 128(InvocationID) + 553: 21(ptr) AccessChain 127(patch) 552 213 + 554: 18(fvec4) Load 553 + 555: 21(ptr) AccessChain 544(output) 213 + Store 555 554 + 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 557 557 16 16 + 558: 11(int) Load 128(InvocationID) + 560: 559(ptr) AccessChain 127(patch) 558 214 + 561: 69(fvec3) Load 560 + 562: 559(ptr) AccessChain 544(output) 214 Store 562 561 563: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 564 564 16 16 565: 11(int) Load 128(InvocationID) - 567: 566(ptr) AccessChain 127(patch) 565 214 - 568: 69(fvec3) Load 567 - 569: 566(ptr) AccessChain 551(output) 214 - Store 569 568 - 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 571 571 16 16 - 572: 11(int) Load 128(InvocationID) - 573: 48(ptr) AccessChain 127(patch) 572 421 - 574: 46(fvec2) Load 573 - 575: 48(ptr) AccessChain 551(output) 421 - Store 575 574 - 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 577 577 16 16 - 578:116(HSOutput) Load 551(output) - ReturnValue 578 + 566: 48(ptr) AccessChain 127(patch) 565 417 + 567: 46(fvec2) Load 566 + 568: 48(ptr) AccessChain 544(output) 417 + Store 568 567 + 569: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 570 570 16 16 + 571:116(HSOutput) Load 544(output) + ReturnValue 571 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 47ee2bd526..cbe38a3410 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 462 +// Id's are bound by 464 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 6 "main" 353 368 377 386 393 399 439 443 447 450 453 456 459 + EntryPoint TessellationEvaluation 6 "main" 355 370 379 388 395 401 441 445 449 452 455 458 461 ExecutionMode 6 Quads 1: String "" 9: String "float" @@ -52,13 +52,14 @@ spv.debuginfo.hlsl.tese 247: String "displacementMapSampler" 251: String "type.sampled.image" 252: String "@type.sampled.image" - 266: String "modelview" - 271: String "lightPos" - 275: String "frustumPlanes" - 278: String "tessellatedEdgeSize" - 282: String "viewportDim" - 286: String "UBO" - 289: String "ubo" + 261: String "bool" + 268: String "modelview" + 273: String "lightPos" + 277: String "frustumPlanes" + 280: String "tessellatedEdgeSize" + 284: String "viewportDim" + 288: String "UBO" + 291: String "ubo" Name 6 "main" Name 24 "ConstantsHSOutput" MemberName 24(ConstantsHSOutput) 0 "TessLevelOuter" @@ -89,74 +90,74 @@ spv.debuginfo.hlsl.tese Name 217 "pos" Name 235 "displacementMapTexture" Name 245 "displacementMapSampler" - Name 264 "UBO" - MemberName 264(UBO) 0 "projection" - MemberName 264(UBO) 1 "modelview" - MemberName 264(UBO) 2 "lightPos" - MemberName 264(UBO) 3 "frustumPlanes" - MemberName 264(UBO) 4 "displacementFactor" - MemberName 264(UBO) 5 "tessellationFactor" - MemberName 264(UBO) 6 "viewportDim" - MemberName 264(UBO) 7 "tessellatedEdgeSize" - Name 287 "ubo" - MemberName 287(ubo) 0 "ubo" - Name 292 "" - Name 351 "input" - Name 353 "input.TessLevelOuter" - Name 368 "input.TessLevelInner" - Name 375 "TessCoord" + Name 266 "UBO" + MemberName 266(UBO) 0 "projection" + MemberName 266(UBO) 1 "modelview" + MemberName 266(UBO) 2 "lightPos" + MemberName 266(UBO) 3 "frustumPlanes" + MemberName 266(UBO) 4 "displacementFactor" + MemberName 266(UBO) 5 "tessellationFactor" + MemberName 266(UBO) 6 "viewportDim" + MemberName 266(UBO) 7 "tessellatedEdgeSize" + Name 289 "ubo" + MemberName 289(ubo) 0 "ubo" + Name 294 "" + Name 353 "input" + Name 355 "input.TessLevelOuter" + Name 370 "input.TessLevelInner" Name 377 "TessCoord" - Name 383 "patch" - Name 386 "patch.Pos" - Name 393 "patch.Normal" - Name 399 "patch.UV" - Name 431 "flattenTemp" - Name 433 "param" + Name 379 "TessCoord" + Name 385 "patch" + Name 388 "patch.Pos" + Name 395 "patch.Normal" + Name 401 "patch.UV" + Name 433 "flattenTemp" Name 435 "param" - Name 439 "@entryPointOutput.Pos" - Name 443 "@entryPointOutput.Normal" - Name 447 "@entryPointOutput.UV" - Name 450 "@entryPointOutput.ViewVec" - Name 453 "@entryPointOutput.LightVec" - Name 456 "@entryPointOutput.EyePos" - Name 459 "@entryPointOutput.WorldPos" + Name 437 "param" + Name 441 "@entryPointOutput.Pos" + Name 445 "@entryPointOutput.Normal" + Name 449 "@entryPointOutput.UV" + Name 452 "@entryPointOutput.ViewVec" + Name 455 "@entryPointOutput.LightVec" + Name 458 "@entryPointOutput.EyePos" + Name 461 "@entryPointOutput.WorldPos" Decorate 235(displacementMapTexture) DescriptorSet 0 Decorate 235(displacementMapTexture) Binding 1 Decorate 245(displacementMapSampler) DescriptorSet 0 Decorate 245(displacementMapSampler) Binding 1 - Decorate 262 ArrayStride 16 - MemberDecorate 264(UBO) 0 RowMajor - MemberDecorate 264(UBO) 0 Offset 0 - MemberDecorate 264(UBO) 0 MatrixStride 16 - MemberDecorate 264(UBO) 1 RowMajor - MemberDecorate 264(UBO) 1 Offset 64 - MemberDecorate 264(UBO) 1 MatrixStride 16 - MemberDecorate 264(UBO) 2 Offset 128 - MemberDecorate 264(UBO) 3 Offset 144 - MemberDecorate 264(UBO) 4 Offset 240 - MemberDecorate 264(UBO) 5 Offset 244 - MemberDecorate 264(UBO) 6 Offset 248 - MemberDecorate 264(UBO) 7 Offset 256 - MemberDecorate 287(ubo) 0 Offset 0 - Decorate 287(ubo) Block - Decorate 292 DescriptorSet 0 - Decorate 292 Binding 0 - Decorate 353(input.TessLevelOuter) Patch - Decorate 353(input.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 368(input.TessLevelInner) Patch - Decorate 368(input.TessLevelInner) BuiltIn TessLevelInner - Decorate 377(TessCoord) Patch - Decorate 377(TessCoord) BuiltIn TessCoord - Decorate 386(patch.Pos) BuiltIn Position - Decorate 393(patch.Normal) Location 0 - Decorate 399(patch.UV) Location 1 - Decorate 439(@entryPointOutput.Pos) BuiltIn Position - Decorate 443(@entryPointOutput.Normal) Location 0 - Decorate 447(@entryPointOutput.UV) Location 1 - Decorate 450(@entryPointOutput.ViewVec) Location 2 - Decorate 453(@entryPointOutput.LightVec) Location 3 - Decorate 456(@entryPointOutput.EyePos) Location 4 - Decorate 459(@entryPointOutput.WorldPos) Location 5 + Decorate 264 ArrayStride 16 + MemberDecorate 266(UBO) 0 RowMajor + MemberDecorate 266(UBO) 0 Offset 0 + MemberDecorate 266(UBO) 0 MatrixStride 16 + MemberDecorate 266(UBO) 1 RowMajor + MemberDecorate 266(UBO) 1 Offset 64 + MemberDecorate 266(UBO) 1 MatrixStride 16 + MemberDecorate 266(UBO) 2 Offset 128 + MemberDecorate 266(UBO) 3 Offset 144 + MemberDecorate 266(UBO) 4 Offset 240 + MemberDecorate 266(UBO) 5 Offset 244 + MemberDecorate 266(UBO) 6 Offset 248 + MemberDecorate 266(UBO) 7 Offset 256 + MemberDecorate 289(ubo) 0 Offset 0 + Decorate 289(ubo) Block + Decorate 294 DescriptorSet 0 + Decorate 294 Binding 0 + Decorate 355(input.TessLevelOuter) Patch + Decorate 355(input.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 370(input.TessLevelInner) Patch + Decorate 370(input.TessLevelInner) BuiltIn TessLevelInner + Decorate 379(TessCoord) Patch + Decorate 379(TessCoord) BuiltIn TessCoord + Decorate 388(patch.Pos) BuiltIn Position + Decorate 395(patch.Normal) Location 0 + Decorate 401(patch.UV) Location 1 + Decorate 441(@entryPointOutput.Pos) BuiltIn Position + Decorate 445(@entryPointOutput.Normal) Location 0 + Decorate 449(@entryPointOutput.UV) Location 1 + Decorate 452(@entryPointOutput.ViewVec) Location 2 + Decorate 455(@entryPointOutput.LightVec) Location 3 + Decorate 458(@entryPointOutput.EyePos) Location 4 + Decorate 461(@entryPointOutput.WorldPos) Location 5 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -276,189 +277,190 @@ spv.debuginfo.hlsl.tese 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 251 16 27 228 16 37 252 233 17 258: TypeMatrix 43(fvec4) 4 260: TypeBool - 261: 260(bool) ConstantTrue - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 44 18 261 - 262: TypeArray 43(fvec4) 15 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 44 15 - 264(UBO): TypeStruct 258 258 43(fvec4) 262 8(float) 8(float) 40(fvec2) 8(float) - 267: 11(int) Constant 29 - 268: 11(int) Constant 20 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 259 27 267 268 16 16 17 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 259 27 267 268 16 16 17 - 272: 11(int) Constant 30 - 273: 11(int) Constant 17 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 271 44 27 272 273 16 16 17 - 276: 11(int) Constant 22 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 275 263 27 58 276 16 16 17 - 279: 11(int) Constant 27 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 10 27 54 279 16 16 17 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 10 27 54 279 16 16 17 - 283: 11(int) Constant 34 - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 282 41 27 283 268 16 16 17 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 278 10 27 54 279 16 16 17 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 286 36 27 228 16 37 286 16 17 265 269 270 274 277 280 281 284 - 287(ubo): TypeStruct 264(UBO) - 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 285 27 70 70 16 16 17 - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 289 36 27 228 16 37 289 16 17 288 - 291: TypePointer Uniform 287(ubo) - 292: 291(ptr) Variable Uniform - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 290 27 228 16 37 1 292 238 - 294: 121(int) Constant 4 - 295: TypePointer Uniform 8(float) - 304: 11(int) Constant 86 - 306: TypePointer Uniform 258 - 315: 11(int) Constant 89 - 321: 11(int) Constant 90 - 322: TypePointer Uniform 43(fvec4) - 332: 11(int) Constant 91 - 333: 121(int) Constant 6 - 338: 11(int) Constant 92 - 339: 121(int) Constant 5 - 347: 11(int) Constant 93 - 352: TypePointer Input 19 -353(input.TessLevelOuter): 352(ptr) Variable Input - 354: TypePointer Input 8(float) - 367: TypePointer Input 22 -368(input.TessLevelInner): 367(ptr) Variable Input - 376: TypePointer Input 45(fvec3) - 377(TessCoord): 376(ptr) Variable Input - 382: TypePointer Function 61 - 384: TypeArray 43(fvec4) 18 - 385: TypePointer Input 384 - 386(patch.Pos): 385(ptr) Variable Input - 387: TypePointer Input 43(fvec4) - 391: TypeArray 45(fvec3) 18 - 392: TypePointer Input 391 -393(patch.Normal): 392(ptr) Variable Input - 397: TypeArray 40(fvec2) 18 - 398: TypePointer Input 397 - 399(patch.UV): 398(ptr) Variable Input - 400: TypePointer Input 40(fvec2) - 438: TypePointer Output 43(fvec4) -439(@entryPointOutput.Pos): 438(ptr) Variable Output - 442: TypePointer Output 45(fvec3) -443(@entryPointOutput.Normal): 442(ptr) Variable Output - 446: TypePointer Output 40(fvec2) -447(@entryPointOutput.UV): 446(ptr) Variable Output -450(@entryPointOutput.ViewVec): 442(ptr) Variable Output -453(@entryPointOutput.LightVec): 442(ptr) Variable Output -456(@entryPointOutput.EyePos): 442(ptr) Variable Output -459(@entryPointOutput.WorldPos): 442(ptr) Variable Output + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 261 14 21 16 + 263: 260(bool) ConstantTrue + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 44 18 263 + 264: TypeArray 43(fvec4) 15 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 44 15 + 266(UBO): TypeStruct 258 258 43(fvec4) 264 8(float) 8(float) 40(fvec2) 8(float) + 269: 11(int) Constant 29 + 270: 11(int) Constant 20 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 268 259 27 269 270 16 16 17 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 268 259 27 269 270 16 16 17 + 274: 11(int) Constant 30 + 275: 11(int) Constant 17 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 273 44 27 274 275 16 16 17 + 278: 11(int) Constant 22 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 265 27 58 278 16 16 17 + 281: 11(int) Constant 27 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 280 10 27 54 281 16 16 17 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 280 10 27 54 281 16 16 17 + 285: 11(int) Constant 34 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 284 41 27 285 270 16 16 17 + 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 280 10 27 54 281 16 16 17 + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 288 36 27 228 16 37 288 16 17 267 271 272 276 279 282 283 286 + 289(ubo): TypeStruct 266(UBO) + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 291 287 27 70 70 16 16 17 + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 291 36 27 228 16 37 291 16 17 290 + 293: TypePointer Uniform 289(ubo) + 294: 293(ptr) Variable Uniform + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 292 27 228 16 37 1 294 238 + 296: 121(int) Constant 4 + 297: TypePointer Uniform 8(float) + 306: 11(int) Constant 86 + 308: TypePointer Uniform 258 + 317: 11(int) Constant 89 + 323: 11(int) Constant 90 + 324: TypePointer Uniform 43(fvec4) + 334: 11(int) Constant 91 + 335: 121(int) Constant 6 + 340: 11(int) Constant 92 + 341: 121(int) Constant 5 + 349: 11(int) Constant 93 + 354: TypePointer Input 19 +355(input.TessLevelOuter): 354(ptr) Variable Input + 356: TypePointer Input 8(float) + 369: TypePointer Input 22 +370(input.TessLevelInner): 369(ptr) Variable Input + 378: TypePointer Input 45(fvec3) + 379(TessCoord): 378(ptr) Variable Input + 384: TypePointer Function 61 + 386: TypeArray 43(fvec4) 18 + 387: TypePointer Input 386 + 388(patch.Pos): 387(ptr) Variable Input + 389: TypePointer Input 43(fvec4) + 393: TypeArray 45(fvec3) 18 + 394: TypePointer Input 393 +395(patch.Normal): 394(ptr) Variable Input + 399: TypeArray 40(fvec2) 18 + 400: TypePointer Input 399 + 401(patch.UV): 400(ptr) Variable Input + 402: TypePointer Input 40(fvec2) + 440: TypePointer Output 43(fvec4) +441(@entryPointOutput.Pos): 440(ptr) Variable Output + 444: TypePointer Output 45(fvec3) +445(@entryPointOutput.Normal): 444(ptr) Variable Output + 448: TypePointer Output 40(fvec2) +449(@entryPointOutput.UV): 448(ptr) Variable Output +452(@entryPointOutput.ViewVec): 444(ptr) Variable Output +455(@entryPointOutput.LightVec): 444(ptr) Variable Output +458(@entryPointOutput.EyePos): 444(ptr) Variable Output +461(@entryPointOutput.WorldPos): 444(ptr) Variable Output Line 1 68 1 6(main): 4 Function None 5 7: Label - 351(input): 39(ptr) Variable Function - 375(TessCoord): 42(ptr) Variable Function - 383(patch): 382(ptr) Variable Function -431(flattenTemp): 105(ptr) Variable Function - 433(param): 39(ptr) Variable Function - 435(param): 42(ptr) Variable Function + 353(input): 39(ptr) Variable Function + 377(TessCoord): 42(ptr) Variable Function + 385(patch): 384(ptr) Variable Function +433(flattenTemp): 105(ptr) Variable Function + 435(param): 39(ptr) Variable Function + 437(param): 42(ptr) Variable Function Line 1 68 0 - 355: 354(ptr) AccessChain 353(input.TessLevelOuter) 124 - 356: 8(float) Load 355 - 357: 129(ptr) AccessChain 351(input) 124 124 - Store 357 356 - 358: 354(ptr) AccessChain 353(input.TessLevelOuter) 127 - 359: 8(float) Load 358 - 360: 129(ptr) AccessChain 351(input) 124 127 - Store 360 359 - 361: 354(ptr) AccessChain 353(input.TessLevelOuter) 125 - 362: 8(float) Load 361 - 363: 129(ptr) AccessChain 351(input) 124 125 - Store 363 362 - 364: 354(ptr) AccessChain 353(input.TessLevelOuter) 140 - 365: 8(float) Load 364 - 366: 129(ptr) AccessChain 351(input) 124 140 - Store 366 365 - 369: 354(ptr) AccessChain 368(input.TessLevelInner) 124 - 370: 8(float) Load 369 - 371: 129(ptr) AccessChain 351(input) 127 124 - Store 371 370 - 372: 354(ptr) AccessChain 368(input.TessLevelInner) 127 - 373: 8(float) Load 372 - 374: 129(ptr) AccessChain 351(input) 127 127 - Store 374 373 - 378: 45(fvec3) Load 377(TessCoord) - 379: 8(float) CompositeExtract 378 0 - 380: 8(float) CompositeExtract 378 1 - 381: 40(fvec2) CompositeConstruct 379 380 - Store 375(TessCoord) 381 - 388: 387(ptr) AccessChain 386(patch.Pos) 124 - 389: 43(fvec4) Load 388 - 390: 192(ptr) AccessChain 383(patch) 124 124 - Store 390 389 - 394: 376(ptr) AccessChain 393(patch.Normal) 124 - 395: 45(fvec3) Load 394 - 396: 158(ptr) AccessChain 383(patch) 124 127 - Store 396 395 - 401: 400(ptr) AccessChain 399(patch.UV) 124 - 402: 40(fvec2) Load 401 - 403: 42(ptr) AccessChain 383(patch) 124 125 - Store 403 402 - 404: 387(ptr) AccessChain 386(patch.Pos) 127 - 405: 43(fvec4) Load 404 - 406: 192(ptr) AccessChain 383(patch) 127 124 - Store 406 405 - 407: 376(ptr) AccessChain 393(patch.Normal) 127 - 408: 45(fvec3) Load 407 - 409: 158(ptr) AccessChain 383(patch) 127 127 - Store 409 408 - 410: 400(ptr) AccessChain 399(patch.UV) 127 - 411: 40(fvec2) Load 410 - 412: 42(ptr) AccessChain 383(patch) 127 125 - Store 412 411 - 413: 387(ptr) AccessChain 386(patch.Pos) 125 - 414: 43(fvec4) Load 413 - 415: 192(ptr) AccessChain 383(patch) 125 124 - Store 415 414 - 416: 376(ptr) AccessChain 393(patch.Normal) 125 - 417: 45(fvec3) Load 416 - 418: 158(ptr) AccessChain 383(patch) 125 127 - Store 418 417 - 419: 400(ptr) AccessChain 399(patch.UV) 125 - 420: 40(fvec2) Load 419 - 421: 42(ptr) AccessChain 383(patch) 125 125 - Store 421 420 - 422: 387(ptr) AccessChain 386(patch.Pos) 140 - 423: 43(fvec4) Load 422 - 424: 192(ptr) AccessChain 383(patch) 140 124 - Store 424 423 - 425: 376(ptr) AccessChain 393(patch.Normal) 140 - 426: 45(fvec3) Load 425 - 427: 158(ptr) AccessChain 383(patch) 140 127 - Store 427 426 - 428: 400(ptr) AccessChain 399(patch.UV) 140 - 429: 40(fvec2) Load 428 - 430: 42(ptr) AccessChain 383(patch) 140 125 - Store 430 429 - 432: 61 Load 383(patch) - 434:24(ConstantsHSOutput) Load 351(input) - Store 433(param) 434 - 436: 40(fvec2) Load 375(TessCoord) + 357: 356(ptr) AccessChain 355(input.TessLevelOuter) 124 + 358: 8(float) Load 357 + 359: 129(ptr) AccessChain 353(input) 124 124 + Store 359 358 + 360: 356(ptr) AccessChain 355(input.TessLevelOuter) 127 + 361: 8(float) Load 360 + 362: 129(ptr) AccessChain 353(input) 124 127 + Store 362 361 + 363: 356(ptr) AccessChain 355(input.TessLevelOuter) 125 + 364: 8(float) Load 363 + 365: 129(ptr) AccessChain 353(input) 124 125 + Store 365 364 + 366: 356(ptr) AccessChain 355(input.TessLevelOuter) 140 + 367: 8(float) Load 366 + 368: 129(ptr) AccessChain 353(input) 124 140 + Store 368 367 + 371: 356(ptr) AccessChain 370(input.TessLevelInner) 124 + 372: 8(float) Load 371 + 373: 129(ptr) AccessChain 353(input) 127 124 + Store 373 372 + 374: 356(ptr) AccessChain 370(input.TessLevelInner) 127 + 375: 8(float) Load 374 + 376: 129(ptr) AccessChain 353(input) 127 127 + Store 376 375 + 380: 45(fvec3) Load 379(TessCoord) + 381: 8(float) CompositeExtract 380 0 + 382: 8(float) CompositeExtract 380 1 + 383: 40(fvec2) CompositeConstruct 381 382 + Store 377(TessCoord) 383 + 390: 389(ptr) AccessChain 388(patch.Pos) 124 + 391: 43(fvec4) Load 390 + 392: 192(ptr) AccessChain 385(patch) 124 124 + Store 392 391 + 396: 378(ptr) AccessChain 395(patch.Normal) 124 + 397: 45(fvec3) Load 396 + 398: 158(ptr) AccessChain 385(patch) 124 127 + Store 398 397 + 403: 402(ptr) AccessChain 401(patch.UV) 124 + 404: 40(fvec2) Load 403 + 405: 42(ptr) AccessChain 385(patch) 124 125 + Store 405 404 + 406: 389(ptr) AccessChain 388(patch.Pos) 127 + 407: 43(fvec4) Load 406 + 408: 192(ptr) AccessChain 385(patch) 127 124 + Store 408 407 + 409: 378(ptr) AccessChain 395(patch.Normal) 127 + 410: 45(fvec3) Load 409 + 411: 158(ptr) AccessChain 385(patch) 127 127 + Store 411 410 + 412: 402(ptr) AccessChain 401(patch.UV) 127 + 413: 40(fvec2) Load 412 + 414: 42(ptr) AccessChain 385(patch) 127 125 + Store 414 413 + 415: 389(ptr) AccessChain 388(patch.Pos) 125 + 416: 43(fvec4) Load 415 + 417: 192(ptr) AccessChain 385(patch) 125 124 + Store 417 416 + 418: 378(ptr) AccessChain 395(patch.Normal) 125 + 419: 45(fvec3) Load 418 + 420: 158(ptr) AccessChain 385(patch) 125 127 + Store 420 419 + 421: 402(ptr) AccessChain 401(patch.UV) 125 + 422: 40(fvec2) Load 421 + 423: 42(ptr) AccessChain 385(patch) 125 125 + Store 423 422 + 424: 389(ptr) AccessChain 388(patch.Pos) 140 + 425: 43(fvec4) Load 424 + 426: 192(ptr) AccessChain 385(patch) 140 124 + Store 426 425 + 427: 378(ptr) AccessChain 395(patch.Normal) 140 + 428: 45(fvec3) Load 427 + 429: 158(ptr) AccessChain 385(patch) 140 127 + Store 429 428 + 430: 402(ptr) AccessChain 401(patch.UV) 140 + 431: 40(fvec2) Load 430 + 432: 42(ptr) AccessChain 385(patch) 140 125 + Store 432 431 + 434: 61 Load 385(patch) + 436:24(ConstantsHSOutput) Load 353(input) Store 435(param) 436 - 437:63(DSOutput) FunctionCall 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 433(param) 435(param) 432 - Store 431(flattenTemp) 437 - 440: 192(ptr) AccessChain 431(flattenTemp) 124 - 441: 43(fvec4) Load 440 - Store 439(@entryPointOutput.Pos) 441 - 444: 158(ptr) AccessChain 431(flattenTemp) 127 - 445: 45(fvec3) Load 444 - Store 443(@entryPointOutput.Normal) 445 - 448: 42(ptr) AccessChain 431(flattenTemp) 125 - 449: 40(fvec2) Load 448 - Store 447(@entryPointOutput.UV) 449 - 451: 158(ptr) AccessChain 431(flattenTemp) 140 - 452: 45(fvec3) Load 451 - Store 450(@entryPointOutput.ViewVec) 452 - 454: 158(ptr) AccessChain 431(flattenTemp) 294 - 455: 45(fvec3) Load 454 - Store 453(@entryPointOutput.LightVec) 455 - 457: 158(ptr) AccessChain 431(flattenTemp) 339 - 458: 45(fvec3) Load 457 - Store 456(@entryPointOutput.EyePos) 458 - 460: 158(ptr) AccessChain 431(flattenTemp) 333 - 461: 45(fvec3) Load 460 - Store 459(@entryPointOutput.WorldPos) 461 + 438: 40(fvec2) Load 377(TessCoord) + Store 437(param) 438 + 439:63(DSOutput) FunctionCall 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 435(param) 437(param) 434 + Store 433(flattenTemp) 439 + 442: 192(ptr) AccessChain 433(flattenTemp) 124 + 443: 43(fvec4) Load 442 + Store 441(@entryPointOutput.Pos) 443 + 446: 158(ptr) AccessChain 433(flattenTemp) 127 + 447: 45(fvec3) Load 446 + Store 445(@entryPointOutput.Normal) 447 + 450: 42(ptr) AccessChain 433(flattenTemp) 125 + 451: 40(fvec2) Load 450 + Store 449(@entryPointOutput.UV) 451 + 453: 158(ptr) AccessChain 433(flattenTemp) 140 + 454: 45(fvec3) Load 453 + Store 452(@entryPointOutput.ViewVec) 454 + 456: 158(ptr) AccessChain 433(flattenTemp) 296 + 457: 45(fvec3) Load 456 + Store 455(@entryPointOutput.LightVec) 457 + 459: 158(ptr) AccessChain 433(flattenTemp) 341 + 460: 45(fvec3) Load 459 + Store 458(@entryPointOutput.EyePos) 460 + 462: 158(ptr) AccessChain 433(flattenTemp) 335 + 463: 45(fvec3) Load 462 + Store 461(@entryPointOutput.WorldPos) 463 Return FunctionEnd Line 1 68 1 @@ -574,54 +576,54 @@ spv.debuginfo.hlsl.tese 255: 40(fvec2) Load 254 256: 43(fvec4) ImageSampleExplicitLod 253 255 Lod 110 257: 8(float) CompositeExtract 256 0 - 296: 295(ptr) AccessChain 292 124 294 - 297: 8(float) Load 296 - 298: 8(float) FMul 257 297 - 299: 129(ptr) AccessChain 217(pos) 36 - 300: 8(float) Load 299 - 301: 8(float) FSub 300 298 - 302: 129(ptr) AccessChain 217(pos) 36 - Store 302 301 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 304 304 16 16 - 305: 43(fvec4) Load 217(pos) - 307: 306(ptr) AccessChain 292 124 127 - 308: 258 Load 307 - 309: 43(fvec4) VectorTimesMatrix 305 308 - 310: 306(ptr) AccessChain 292 124 124 - 311: 258 Load 310 - 312: 43(fvec4) VectorTimesMatrix 309 311 - 313: 192(ptr) AccessChain 106(output) 124 - Store 313 312 - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 315 315 16 16 - 316: 43(fvec4) Load 217(pos) - 317: 45(fvec3) VectorShuffle 316 316 0 1 2 - 318: 45(fvec3) FNegate 317 - 319: 158(ptr) AccessChain 106(output) 140 - Store 319 318 - 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 321 321 16 16 - 323: 322(ptr) AccessChain 292 124 125 - 324: 43(fvec4) Load 323 - 325: 45(fvec3) VectorShuffle 324 324 0 1 2 - 326: 158(ptr) AccessChain 106(output) 140 - 327: 45(fvec3) Load 326 - 328: 45(fvec3) FAdd 325 327 - 329: 45(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 328 - 330: 158(ptr) AccessChain 106(output) 294 - Store 330 329 - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 332 332 16 16 - 334: 43(fvec4) Load 217(pos) - 335: 45(fvec3) VectorShuffle 334 334 0 1 2 - 336: 158(ptr) AccessChain 106(output) 333 - Store 336 335 - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 338 338 16 16 - 340: 43(fvec4) Load 217(pos) - 341: 306(ptr) AccessChain 292 124 127 - 342: 258 Load 341 - 343: 43(fvec4) VectorTimesMatrix 340 342 - 344: 45(fvec3) VectorShuffle 343 343 0 1 2 - 345: 158(ptr) AccessChain 106(output) 339 - Store 345 344 - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 347 347 16 16 - 348:63(DSOutput) Load 106(output) - ReturnValue 348 + 298: 297(ptr) AccessChain 294 124 296 + 299: 8(float) Load 298 + 300: 8(float) FMul 257 299 + 301: 129(ptr) AccessChain 217(pos) 36 + 302: 8(float) Load 301 + 303: 8(float) FSub 302 300 + 304: 129(ptr) AccessChain 217(pos) 36 + Store 304 303 + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 306 306 16 16 + 307: 43(fvec4) Load 217(pos) + 309: 308(ptr) AccessChain 294 124 127 + 310: 258 Load 309 + 311: 43(fvec4) VectorTimesMatrix 307 310 + 312: 308(ptr) AccessChain 294 124 124 + 313: 258 Load 312 + 314: 43(fvec4) VectorTimesMatrix 311 313 + 315: 192(ptr) AccessChain 106(output) 124 + Store 315 314 + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 317 317 16 16 + 318: 43(fvec4) Load 217(pos) + 319: 45(fvec3) VectorShuffle 318 318 0 1 2 + 320: 45(fvec3) FNegate 319 + 321: 158(ptr) AccessChain 106(output) 140 + Store 321 320 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 323 323 16 16 + 325: 324(ptr) AccessChain 294 124 125 + 326: 43(fvec4) Load 325 + 327: 45(fvec3) VectorShuffle 326 326 0 1 2 + 328: 158(ptr) AccessChain 106(output) 140 + 329: 45(fvec3) Load 328 + 330: 45(fvec3) FAdd 327 329 + 331: 45(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 330 + 332: 158(ptr) AccessChain 106(output) 296 + Store 332 331 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 334 334 16 16 + 336: 43(fvec4) Load 217(pos) + 337: 45(fvec3) VectorShuffle 336 336 0 1 2 + 338: 158(ptr) AccessChain 106(output) 335 + Store 338 337 + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 340 340 16 16 + 342: 43(fvec4) Load 217(pos) + 343: 308(ptr) AccessChain 294 124 127 + 344: 258 Load 343 + 345: 43(fvec4) VectorTimesMatrix 342 344 + 346: 45(fvec3) VectorShuffle 345 345 0 1 2 + 347: 158(ptr) AccessChain 106(output) 341 + Store 347 346 + 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 349 349 16 16 + 350:63(DSOutput) Load 106(output) + ReturnValue 350 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index b436bc83dd..8ccd18e605 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 496 +// Id's are bound by 498 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 6 "main" 445 448 452 455 458 461 465 469 477 481 484 487 490 493 + EntryPoint Vertex 6 "main" 447 450 454 457 460 463 467 471 479 483 486 489 492 495 1: String "" 9: String "float" 12: String "uint" @@ -34,20 +34,21 @@ spv.debuginfo.hlsl.vert 83: String "input" 93: String "output" 126: String "s" - 137: String "modelview" - 142: String "lightPos" - 146: String "globSpeed" - 150: String "UBO" - 153: String "ubo" - 170: String "c" - 185: String "mx" - 220: String "my" - 254: String "mz" - 274: String "rotMat" - 303: String "gRotMat" - 330: String "locPos" - 344: String "pos" - 409: String "lPos" + 134: String "bool" + 139: String "modelview" + 144: String "lightPos" + 148: String "globSpeed" + 152: String "UBO" + 155: String "ubo" + 172: String "c" + 187: String "mx" + 222: String "my" + 256: String "mz" + 276: String "rotMat" + 305: String "gRotMat" + 332: String "locPos" + 346: String "pos" + 411: String "lPos" Name 6 "main" Name 27 "VSInput" MemberName 27(VSInput) 0 "Pos" @@ -69,68 +70,68 @@ spv.debuginfo.hlsl.vert Name 74 "input" Name 91 "output" Name 124 "s" - Name 135 "UBO" - MemberName 135(UBO) 0 "projection" - MemberName 135(UBO) 1 "modelview" - MemberName 135(UBO) 2 "lightPos" - MemberName 135(UBO) 3 "locSpeed" - MemberName 135(UBO) 4 "globSpeed" - Name 151 "ubo" - MemberName 151(ubo) 0 "ubo" - Name 157 "" - Name 168 "c" - Name 183 "mx" - Name 218 "my" - Name 252 "mz" - Name 272 "rotMat" - Name 301 "gRotMat" - Name 328 "locPos" - Name 342 "pos" - Name 407 "lPos" - Name 443 "input" - Name 445 "input.Pos" - Name 448 "input.Normal" - Name 452 "input.UV" - Name 455 "input.Color" - Name 458 "input.instancePos" - Name 461 "input.instanceRot" - Name 465 "input.instanceScale" - Name 469 "input.instanceTexIndex" - Name 472 "flattenTemp" - Name 473 "param" - Name 477 "@entryPointOutput.Pos" - Name 481 "@entryPointOutput.Normal" - Name 484 "@entryPointOutput.Color" - Name 487 "@entryPointOutput.UV" - Name 490 "@entryPointOutput.ViewVec" - Name 493 "@entryPointOutput.LightVec" - MemberDecorate 135(UBO) 0 RowMajor - MemberDecorate 135(UBO) 0 Offset 0 - MemberDecorate 135(UBO) 0 MatrixStride 16 - MemberDecorate 135(UBO) 1 RowMajor - MemberDecorate 135(UBO) 1 Offset 64 - MemberDecorate 135(UBO) 1 MatrixStride 16 - MemberDecorate 135(UBO) 2 Offset 128 - MemberDecorate 135(UBO) 3 Offset 144 - MemberDecorate 135(UBO) 4 Offset 148 - MemberDecorate 151(ubo) 0 Offset 0 - Decorate 151(ubo) Block - Decorate 157 DescriptorSet 0 - Decorate 157 Binding 0 - Decorate 445(input.Pos) Location 0 - Decorate 448(input.Normal) Location 1 - Decorate 452(input.UV) Location 2 - Decorate 455(input.Color) Location 3 - Decorate 458(input.instancePos) Location 4 - Decorate 461(input.instanceRot) Location 5 - Decorate 465(input.instanceScale) Location 6 - Decorate 469(input.instanceTexIndex) Location 7 - Decorate 477(@entryPointOutput.Pos) BuiltIn Position - Decorate 481(@entryPointOutput.Normal) Location 0 - Decorate 484(@entryPointOutput.Color) Location 1 - Decorate 487(@entryPointOutput.UV) Location 2 - Decorate 490(@entryPointOutput.ViewVec) Location 3 - Decorate 493(@entryPointOutput.LightVec) Location 4 + Name 137 "UBO" + MemberName 137(UBO) 0 "projection" + MemberName 137(UBO) 1 "modelview" + MemberName 137(UBO) 2 "lightPos" + MemberName 137(UBO) 3 "locSpeed" + MemberName 137(UBO) 4 "globSpeed" + Name 153 "ubo" + MemberName 153(ubo) 0 "ubo" + Name 159 "" + Name 170 "c" + Name 185 "mx" + Name 220 "my" + Name 254 "mz" + Name 274 "rotMat" + Name 303 "gRotMat" + Name 330 "locPos" + Name 344 "pos" + Name 409 "lPos" + Name 445 "input" + Name 447 "input.Pos" + Name 450 "input.Normal" + Name 454 "input.UV" + Name 457 "input.Color" + Name 460 "input.instancePos" + Name 463 "input.instanceRot" + Name 467 "input.instanceScale" + Name 471 "input.instanceTexIndex" + Name 474 "flattenTemp" + Name 475 "param" + Name 479 "@entryPointOutput.Pos" + Name 483 "@entryPointOutput.Normal" + Name 486 "@entryPointOutput.Color" + Name 489 "@entryPointOutput.UV" + Name 492 "@entryPointOutput.ViewVec" + Name 495 "@entryPointOutput.LightVec" + MemberDecorate 137(UBO) 0 RowMajor + MemberDecorate 137(UBO) 0 Offset 0 + MemberDecorate 137(UBO) 0 MatrixStride 16 + MemberDecorate 137(UBO) 1 RowMajor + MemberDecorate 137(UBO) 1 Offset 64 + MemberDecorate 137(UBO) 1 MatrixStride 16 + MemberDecorate 137(UBO) 2 Offset 128 + MemberDecorate 137(UBO) 3 Offset 144 + MemberDecorate 137(UBO) 4 Offset 148 + MemberDecorate 153(ubo) 0 Offset 0 + Decorate 153(ubo) Block + Decorate 159 DescriptorSet 0 + Decorate 159 Binding 0 + Decorate 447(input.Pos) Location 0 + Decorate 450(input.Normal) Location 1 + Decorate 454(input.UV) Location 2 + Decorate 457(input.Color) Location 3 + Decorate 460(input.instancePos) Location 4 + Decorate 463(input.instanceRot) Location 5 + Decorate 467(input.instanceScale) Location 6 + Decorate 471(input.instanceTexIndex) Location 7 + Decorate 479(@entryPointOutput.Pos) BuiltIn Position + Decorate 483(@entryPointOutput.Normal) Location 0 + Decorate 486(@entryPointOutput.Color) Location 1 + Decorate 489(@entryPointOutput.UV) Location 2 + Decorate 492(@entryPointOutput.ViewVec) Location 3 + Decorate 495(@entryPointOutput.LightVec) Location 4 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -212,153 +213,154 @@ spv.debuginfo.hlsl.vert 128: 23(int) Constant 5 131: TypeMatrix 56(fvec4) 4 133: TypeBool - 134: 133(bool) ConstantTrue - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 57 26 134 - 135(UBO): TypeStruct 131 131 56(fvec4) 8(float) 8(float) - 138: 11(int) Constant 43 - 139: 11(int) Constant 20 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 132 30 138 139 16 16 17 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 137 132 30 138 139 16 16 17 - 143: 11(int) Constant 44 - 144: 11(int) Constant 17 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 142 57 30 143 144 16 16 17 - 147: 11(int) Constant 46 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 10 30 147 144 16 16 17 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 10 30 147 144 16 16 17 - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 150 52 30 122 16 53 150 16 17 136 140 141 145 148 - 151(ubo): TypeStruct 135(UBO) - 154: 11(int) Constant 49 - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 153 149 30 154 48 16 16 17 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 153 52 30 122 16 53 153 16 17 152 - 156: TypePointer Uniform 151(ubo) - 157: 156(ptr) Variable Uniform - 159: 11(int) Constant 8 - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 155 30 122 16 53 1 157 159 - 160: 23(int) Constant 0 - 161: TypePointer Uniform 8(float) - 167: 11(int) Constant 69 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 10 30 167 16 78 26 - 179: 11(int) Constant 71 - 180: TypeMatrix 18(fvec3) 3 - 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 134 - 182: TypePointer Function 180 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 185 181 30 179 16 78 26 - 191: 11(int) Constant 72 - 194: 8(float) Constant 1065353216 - 201: 11(int) Constant 76 - 209: 11(int) Constant 77 - 217: 11(int) Constant 79 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 220 181 30 217 16 78 26 - 226: 11(int) Constant 81 - 235: 11(int) Constant 84 - 243: 11(int) Constant 85 - 251: 11(int) Constant 87 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 181 30 251 16 78 26 - 257: 11(int) Constant 88 - 262: 11(int) Constant 89 - 271: 11(int) Constant 91 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 181 30 271 16 78 26 - 282: 11(int) Constant 94 - 285: 23(int) Constant 4 - 291: 11(int) Constant 95 - 299: 11(int) Constant 96 - 300: TypePointer Function 131 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 132 30 299 16 78 26 - 309: TypePointer Function 56(fvec4) - 312: 11(int) Constant 97 - 313: 23(int) Constant 1 - 314: 56(fvec4) ConstantComposite 95 194 95 95 - 317: 11(int) Constant 98 - 323: 11(int) Constant 99 - 324: 56(fvec4) ConstantComposite 95 95 95 194 - 327: 11(int) Constant 101 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 330 57 30 327 16 78 26 - 341: 11(int) Constant 102 - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 344 57 30 341 16 78 26 - 348: 23(int) Constant 6 - 360: 11(int) Constant 104 - 364: TypePointer Uniform 131 - 373: 11(int) Constant 105 - 392: 11(int) Constant 107 - 406: 11(int) Constant 108 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 19 30 406 16 78 26 - 411: TypePointer Uniform 56(fvec4) - 426: 11(int) Constant 109 - 433: 11(int) Constant 110 - 439: 11(int) Constant 111 - 444: TypePointer Input 18(fvec3) - 445(input.Pos): 444(ptr) Variable Input -448(input.Normal): 444(ptr) Variable Input - 451: TypePointer Input 20(fvec2) - 452(input.UV): 451(ptr) Variable Input -455(input.Color): 444(ptr) Variable Input -458(input.instancePos): 444(ptr) Variable Input -461(input.instanceRot): 444(ptr) Variable Input - 464: TypePointer Input 8(float) -465(input.instanceScale): 464(ptr) Variable Input - 468: TypePointer Input 23(int) -469(input.instanceTexIndex): 468(ptr) Variable Input - 476: TypePointer Output 56(fvec4) -477(@entryPointOutput.Pos): 476(ptr) Variable Output - 480: TypePointer Output 18(fvec3) -481(@entryPointOutput.Normal): 480(ptr) Variable Output -484(@entryPointOutput.Color): 480(ptr) Variable Output -487(@entryPointOutput.UV): 480(ptr) Variable Output -490(@entryPointOutput.ViewVec): 480(ptr) Variable Output -493(@entryPointOutput.LightVec): 480(ptr) Variable Output + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 134 14 21 16 + 136: 133(bool) ConstantTrue + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 57 26 136 + 137(UBO): TypeStruct 131 131 56(fvec4) 8(float) 8(float) + 140: 11(int) Constant 43 + 141: 11(int) Constant 20 + 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 139 132 30 140 141 16 16 17 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 139 132 30 140 141 16 16 17 + 145: 11(int) Constant 44 + 146: 11(int) Constant 17 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 57 30 145 146 16 16 17 + 149: 11(int) Constant 46 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 148 10 30 149 146 16 16 17 + 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 148 10 30 149 146 16 16 17 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 52 30 122 16 53 152 16 17 138 142 143 147 150 + 153(ubo): TypeStruct 137(UBO) + 156: 11(int) Constant 49 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 151 30 156 48 16 16 17 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 155 52 30 122 16 53 155 16 17 154 + 158: TypePointer Uniform 153(ubo) + 159: 158(ptr) Variable Uniform + 161: 11(int) Constant 8 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 157 30 122 16 53 1 159 161 + 162: 23(int) Constant 0 + 163: TypePointer Uniform 8(float) + 169: 11(int) Constant 69 + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 10 30 169 16 78 26 + 181: 11(int) Constant 71 + 182: TypeMatrix 18(fvec3) 3 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 136 + 184: TypePointer Function 182 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 183 30 181 16 78 26 + 193: 11(int) Constant 72 + 196: 8(float) Constant 1065353216 + 203: 11(int) Constant 76 + 211: 11(int) Constant 77 + 219: 11(int) Constant 79 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 222 183 30 219 16 78 26 + 228: 11(int) Constant 81 + 237: 11(int) Constant 84 + 245: 11(int) Constant 85 + 253: 11(int) Constant 87 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 183 30 253 16 78 26 + 259: 11(int) Constant 88 + 264: 11(int) Constant 89 + 273: 11(int) Constant 91 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 276 183 30 273 16 78 26 + 284: 11(int) Constant 94 + 287: 23(int) Constant 4 + 293: 11(int) Constant 95 + 301: 11(int) Constant 96 + 302: TypePointer Function 131 + 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 305 132 30 301 16 78 26 + 311: TypePointer Function 56(fvec4) + 314: 11(int) Constant 97 + 315: 23(int) Constant 1 + 316: 56(fvec4) ConstantComposite 95 196 95 95 + 319: 11(int) Constant 98 + 325: 11(int) Constant 99 + 326: 56(fvec4) ConstantComposite 95 95 95 196 + 329: 11(int) Constant 101 + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 332 57 30 329 16 78 26 + 343: 11(int) Constant 102 + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 346 57 30 343 16 78 26 + 350: 23(int) Constant 6 + 362: 11(int) Constant 104 + 366: TypePointer Uniform 131 + 375: 11(int) Constant 105 + 394: 11(int) Constant 107 + 408: 11(int) Constant 108 + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 411 19 30 408 16 78 26 + 413: TypePointer Uniform 56(fvec4) + 428: 11(int) Constant 109 + 435: 11(int) Constant 110 + 441: 11(int) Constant 111 + 446: TypePointer Input 18(fvec3) + 447(input.Pos): 446(ptr) Variable Input +450(input.Normal): 446(ptr) Variable Input + 453: TypePointer Input 20(fvec2) + 454(input.UV): 453(ptr) Variable Input +457(input.Color): 446(ptr) Variable Input +460(input.instancePos): 446(ptr) Variable Input +463(input.instanceRot): 446(ptr) Variable Input + 466: TypePointer Input 8(float) +467(input.instanceScale): 466(ptr) Variable Input + 470: TypePointer Input 23(int) +471(input.instanceTexIndex): 470(ptr) Variable Input + 478: TypePointer Output 56(fvec4) +479(@entryPointOutput.Pos): 478(ptr) Variable Output + 482: TypePointer Output 18(fvec3) +483(@entryPointOutput.Normal): 482(ptr) Variable Output +486(@entryPointOutput.Color): 482(ptr) Variable Output +489(@entryPointOutput.UV): 482(ptr) Variable Output +492(@entryPointOutput.ViewVec): 482(ptr) Variable Output +495(@entryPointOutput.LightVec): 482(ptr) Variable Output Line 1 62 1 6(main): 4 Function None 5 7: Label - 443(input): 55(ptr) Variable Function -472(flattenTemp): 90(ptr) Variable Function - 473(param): 55(ptr) Variable Function + 445(input): 55(ptr) Variable Function +474(flattenTemp): 90(ptr) Variable Function + 475(param): 55(ptr) Variable Function Line 1 62 0 - 446: 18(fvec3) Load 445(input.Pos) - 447: 103(ptr) AccessChain 443(input) 160 - Store 447 446 - 449: 18(fvec3) Load 448(input.Normal) - 450: 103(ptr) AccessChain 443(input) 313 - Store 450 449 - 453: 20(fvec2) Load 452(input.UV) - 454: 109(ptr) AccessChain 443(input) 101 - Store 454 453 - 456: 18(fvec3) Load 455(input.Color) - 457: 103(ptr) AccessChain 443(input) 102 - Store 457 456 - 459: 18(fvec3) Load 458(input.instancePos) - 460: 103(ptr) AccessChain 443(input) 285 - Store 460 459 - 462: 18(fvec3) Load 461(input.instanceRot) - 463: 103(ptr) AccessChain 443(input) 128 - Store 463 462 - 466: 8(float) Load 465(input.instanceScale) - 467: 123(ptr) AccessChain 443(input) 348 - Store 467 466 - 470: 23(int) Load 469(input.instanceTexIndex) - 471: 113(ptr) AccessChain 443(input) 112 - Store 471 470 - 474: 27(VSInput) Load 443(input) - Store 473(param) 474 - 475:58(VSOutput) FunctionCall 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 473(param) - Store 472(flattenTemp) 475 - 478: 309(ptr) AccessChain 472(flattenTemp) 160 - 479: 56(fvec4) Load 478 - Store 477(@entryPointOutput.Pos) 479 - 482: 103(ptr) AccessChain 472(flattenTemp) 313 - 483: 18(fvec3) Load 482 - Store 481(@entryPointOutput.Normal) 483 - 485: 103(ptr) AccessChain 472(flattenTemp) 101 - 486: 18(fvec3) Load 485 - Store 484(@entryPointOutput.Color) 486 - 488: 103(ptr) AccessChain 472(flattenTemp) 102 - 489: 18(fvec3) Load 488 - Store 487(@entryPointOutput.UV) 489 - 491: 103(ptr) AccessChain 472(flattenTemp) 285 - 492: 18(fvec3) Load 491 - Store 490(@entryPointOutput.ViewVec) 492 - 494: 103(ptr) AccessChain 472(flattenTemp) 128 - 495: 18(fvec3) Load 494 - Store 493(@entryPointOutput.LightVec) 495 + 448: 18(fvec3) Load 447(input.Pos) + 449: 103(ptr) AccessChain 445(input) 162 + Store 449 448 + 451: 18(fvec3) Load 450(input.Normal) + 452: 103(ptr) AccessChain 445(input) 315 + Store 452 451 + 455: 20(fvec2) Load 454(input.UV) + 456: 109(ptr) AccessChain 445(input) 101 + Store 456 455 + 458: 18(fvec3) Load 457(input.Color) + 459: 103(ptr) AccessChain 445(input) 102 + Store 459 458 + 461: 18(fvec3) Load 460(input.instancePos) + 462: 103(ptr) AccessChain 445(input) 287 + Store 462 461 + 464: 18(fvec3) Load 463(input.instanceRot) + 465: 103(ptr) AccessChain 445(input) 128 + Store 465 464 + 468: 8(float) Load 467(input.instanceScale) + 469: 123(ptr) AccessChain 445(input) 350 + Store 469 468 + 472: 23(int) Load 471(input.instanceTexIndex) + 473: 113(ptr) AccessChain 445(input) 112 + Store 473 472 + 476: 27(VSInput) Load 445(input) + Store 475(param) 476 + 477:58(VSOutput) FunctionCall 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 475(param) + Store 474(flattenTemp) 477 + 480: 311(ptr) AccessChain 474(flattenTemp) 162 + 481: 56(fvec4) Load 480 + Store 479(@entryPointOutput.Pos) 481 + 484: 103(ptr) AccessChain 474(flattenTemp) 315 + 485: 18(fvec3) Load 484 + Store 483(@entryPointOutput.Normal) 485 + 487: 103(ptr) AccessChain 474(flattenTemp) 101 + 488: 18(fvec3) Load 487 + Store 486(@entryPointOutput.Color) 488 + 490: 103(ptr) AccessChain 474(flattenTemp) 102 + 491: 18(fvec3) Load 490 + Store 489(@entryPointOutput.UV) 491 + 493: 103(ptr) AccessChain 474(flattenTemp) 287 + 494: 18(fvec3) Load 493 + Store 492(@entryPointOutput.ViewVec) 494 + 496: 103(ptr) AccessChain 474(flattenTemp) 128 + 497: 18(fvec3) Load 496 + Store 495(@entryPointOutput.LightVec) 497 Return FunctionEnd Line 1 62 1 @@ -367,15 +369,15 @@ spv.debuginfo.hlsl.vert 76: Label 91(output): 90(ptr) Variable Function 124(s): 123(ptr) Variable Function - 168(c): 123(ptr) Variable Function - 183(mx): 182(ptr) Variable Function - 218(my): 182(ptr) Variable Function - 252(mz): 182(ptr) Variable Function - 272(rotMat): 182(ptr) Variable Function - 301(gRotMat): 300(ptr) Variable Function - 328(locPos): 309(ptr) Variable Function - 342(pos): 309(ptr) Variable Function - 407(lPos): 103(ptr) Variable Function + 170(c): 123(ptr) Variable Function + 185(mx): 184(ptr) Variable Function + 220(my): 184(ptr) Variable Function + 254(mz): 184(ptr) Variable Function + 274(rotMat): 184(ptr) Variable Function + 303(gRotMat): 302(ptr) Variable Function + 330(locPos): 311(ptr) Variable Function + 344(pos): 311(ptr) Variable Function + 409(lPos): 103(ptr) Variable Function 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 79 79 16 16 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 74(input) 85 @@ -404,240 +406,240 @@ spv.debuginfo.hlsl.vert 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(s) 85 129: 123(ptr) AccessChain 74(input) 128 16 130: 8(float) Load 129 - 162: 161(ptr) AccessChain 157 160 102 - 163: 8(float) Load 162 - 164: 8(float) FAdd 130 163 - 165: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 164 - Store 124(s) 165 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 167 167 16 16 - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 169 168(c) 85 - 172: 123(ptr) AccessChain 74(input) 128 16 - 173: 8(float) Load 172 - 174: 161(ptr) AccessChain 157 160 102 + 164: 163(ptr) AccessChain 159 162 102 + 165: 8(float) Load 164 + 166: 8(float) FAdd 130 165 + 167: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 166 + Store 124(s) 167 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 169 169 16 16 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 171 170(c) 85 + 174: 123(ptr) AccessChain 74(input) 128 16 175: 8(float) Load 174 - 176: 8(float) FAdd 173 175 - 177: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 176 - Store 168(c) 177 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 179 179 16 16 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 184 183(mx) 85 - 187: 8(float) Load 168(c) - 188: 8(float) Load 124(s) - 189: 8(float) FNegate 188 - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 191 191 16 16 - 192: 8(float) Load 124(s) - 193: 8(float) Load 168(c) - 195: 18(fvec3) CompositeConstruct 187 189 95 - 196: 18(fvec3) CompositeConstruct 192 193 95 - 197: 18(fvec3) CompositeConstruct 95 95 194 - 198: 180 CompositeConstruct 195 196 197 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 179 179 16 16 - Store 183(mx) 198 - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 201 201 16 16 - 202: 123(ptr) AccessChain 74(input) 128 52 - 203: 8(float) Load 202 - 204: 161(ptr) AccessChain 157 160 102 + 176: 163(ptr) AccessChain 159 162 102 + 177: 8(float) Load 176 + 178: 8(float) FAdd 175 177 + 179: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 178 + Store 170(c) 179 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 181 181 16 16 + 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 186 185(mx) 85 + 189: 8(float) Load 170(c) + 190: 8(float) Load 124(s) + 191: 8(float) FNegate 190 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 193 193 16 16 + 194: 8(float) Load 124(s) + 195: 8(float) Load 170(c) + 197: 18(fvec3) CompositeConstruct 189 191 95 + 198: 18(fvec3) CompositeConstruct 194 195 95 + 199: 18(fvec3) CompositeConstruct 95 95 196 + 200: 182 CompositeConstruct 197 198 199 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 181 181 16 16 + Store 185(mx) 200 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 203 203 16 16 + 204: 123(ptr) AccessChain 74(input) 128 52 205: 8(float) Load 204 - 206: 8(float) FAdd 203 205 - 207: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 206 - Store 124(s) 207 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 209 209 16 16 - 210: 123(ptr) AccessChain 74(input) 128 52 - 211: 8(float) Load 210 - 212: 161(ptr) AccessChain 157 160 102 + 206: 163(ptr) AccessChain 159 162 102 + 207: 8(float) Load 206 + 208: 8(float) FAdd 205 207 + 209: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 208 + Store 124(s) 209 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 211 211 16 16 + 212: 123(ptr) AccessChain 74(input) 128 52 213: 8(float) Load 212 - 214: 8(float) FAdd 211 213 - 215: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 214 - Store 168(c) 215 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 217 217 16 16 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 219 218(my) 85 - 222: 8(float) Load 168(c) - 223: 8(float) Load 124(s) - 224: 8(float) FNegate 223 - 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 226 226 16 16 - 227: 8(float) Load 124(s) - 228: 8(float) Load 168(c) - 229: 18(fvec3) CompositeConstruct 222 95 224 - 230: 18(fvec3) CompositeConstruct 95 194 95 - 231: 18(fvec3) CompositeConstruct 227 95 228 - 232: 180 CompositeConstruct 229 230 231 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 217 217 16 16 - Store 218(my) 232 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 235 235 16 16 - 236: 123(ptr) AccessChain 74(input) 128 21 - 237: 8(float) Load 236 - 238: 161(ptr) AccessChain 157 160 102 + 214: 163(ptr) AccessChain 159 162 102 + 215: 8(float) Load 214 + 216: 8(float) FAdd 213 215 + 217: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 216 + Store 170(c) 217 + 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 219 219 16 16 + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 221 220(my) 85 + 224: 8(float) Load 170(c) + 225: 8(float) Load 124(s) + 226: 8(float) FNegate 225 + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 228 228 16 16 + 229: 8(float) Load 124(s) + 230: 8(float) Load 170(c) + 231: 18(fvec3) CompositeConstruct 224 95 226 + 232: 18(fvec3) CompositeConstruct 95 196 95 + 233: 18(fvec3) CompositeConstruct 229 95 230 + 234: 182 CompositeConstruct 231 232 233 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 219 219 16 16 + Store 220(my) 234 + 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 237 237 16 16 + 238: 123(ptr) AccessChain 74(input) 128 21 239: 8(float) Load 238 - 240: 8(float) FAdd 237 239 - 241: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 240 - Store 124(s) 241 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 243 243 16 16 - 244: 123(ptr) AccessChain 74(input) 128 21 - 245: 8(float) Load 244 - 246: 161(ptr) AccessChain 157 160 102 + 240: 163(ptr) AccessChain 159 162 102 + 241: 8(float) Load 240 + 242: 8(float) FAdd 239 241 + 243: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 242 + Store 124(s) 243 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 245 245 16 16 + 246: 123(ptr) AccessChain 74(input) 128 21 247: 8(float) Load 246 - 248: 8(float) FAdd 245 247 - 249: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 248 - Store 168(c) 249 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 251 251 16 16 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(mz) 85 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 257 257 16 16 - 258: 8(float) Load 168(c) - 259: 8(float) Load 124(s) - 260: 8(float) FNegate 259 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 262 262 16 16 - 263: 8(float) Load 124(s) - 264: 8(float) Load 168(c) - 265: 18(fvec3) CompositeConstruct 194 95 95 - 266: 18(fvec3) CompositeConstruct 95 258 260 - 267: 18(fvec3) CompositeConstruct 95 263 264 - 268: 180 CompositeConstruct 265 266 267 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 251 251 16 16 - Store 252(mz) 268 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 271 271 16 16 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 273 272(rotMat) 85 - 276: 180 Load 183(mx) - 277: 180 Load 218(my) - 278: 180 MatrixTimesMatrix 276 277 - 279: 180 Load 252(mz) - 280: 180 MatrixTimesMatrix 278 279 - Store 272(rotMat) 280 - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 282 282 16 16 - 283: 123(ptr) AccessChain 74(input) 128 52 - 284: 8(float) Load 283 - 286: 161(ptr) AccessChain 157 160 285 - 287: 8(float) Load 286 - 288: 8(float) FAdd 284 287 - 289: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 288 - Store 124(s) 289 - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 291 291 16 16 - 292: 123(ptr) AccessChain 74(input) 128 52 - 293: 8(float) Load 292 - 294: 161(ptr) AccessChain 157 160 285 + 248: 163(ptr) AccessChain 159 162 102 + 249: 8(float) Load 248 + 250: 8(float) FAdd 247 249 + 251: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 250 + Store 170(c) 251 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 253 253 16 16 + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(mz) 85 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 259 259 16 16 + 260: 8(float) Load 170(c) + 261: 8(float) Load 124(s) + 262: 8(float) FNegate 261 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16 + 265: 8(float) Load 124(s) + 266: 8(float) Load 170(c) + 267: 18(fvec3) CompositeConstruct 196 95 95 + 268: 18(fvec3) CompositeConstruct 95 260 262 + 269: 18(fvec3) CompositeConstruct 95 265 266 + 270: 182 CompositeConstruct 267 268 269 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 253 253 16 16 + Store 254(mz) 270 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 273 273 16 16 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 275 274(rotMat) 85 + 278: 182 Load 185(mx) + 279: 182 Load 220(my) + 280: 182 MatrixTimesMatrix 278 279 + 281: 182 Load 254(mz) + 282: 182 MatrixTimesMatrix 280 281 + Store 274(rotMat) 282 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 284 284 16 16 + 285: 123(ptr) AccessChain 74(input) 128 52 + 286: 8(float) Load 285 + 288: 163(ptr) AccessChain 159 162 287 + 289: 8(float) Load 288 + 290: 8(float) FAdd 286 289 + 291: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 290 + Store 124(s) 291 + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 293 293 16 16 + 294: 123(ptr) AccessChain 74(input) 128 52 295: 8(float) Load 294 - 296: 8(float) FAdd 293 295 - 297: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 296 - Store 168(c) 297 - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 299 299 16 16 - 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(gRotMat) 85 - 305: 8(float) Load 168(c) - 306: 8(float) Load 124(s) - 307: 8(float) FNegate 306 - 308: 56(fvec4) CompositeConstruct 305 95 307 95 - 310: 309(ptr) AccessChain 301(gRotMat) 160 - Store 310 308 - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 312 312 16 16 - 315: 309(ptr) AccessChain 301(gRotMat) 313 - Store 315 314 - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 317 317 16 16 - 318: 8(float) Load 124(s) - 319: 8(float) Load 168(c) - 320: 56(fvec4) CompositeConstruct 318 95 319 95 - 321: 309(ptr) AccessChain 301(gRotMat) 101 - Store 321 320 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 323 323 16 16 - 325: 309(ptr) AccessChain 301(gRotMat) 102 - Store 325 324 - 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 327 327 16 16 - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 329 328(locPos) 85 - 332: 103(ptr) AccessChain 74(input) 160 - 333: 18(fvec3) Load 332 - 334: 180 Load 272(rotMat) - 335: 18(fvec3) VectorTimesMatrix 333 334 - 336: 8(float) CompositeExtract 335 0 - 337: 8(float) CompositeExtract 335 1 - 338: 8(float) CompositeExtract 335 2 - 339: 56(fvec4) CompositeConstruct 336 337 338 194 - Store 328(locPos) 339 - 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 341 341 16 16 - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 343 342(pos) 85 - 346: 56(fvec4) Load 328(locPos) - 347: 18(fvec3) VectorShuffle 346 346 0 1 2 - 349: 123(ptr) AccessChain 74(input) 348 - 350: 8(float) Load 349 - 351: 18(fvec3) VectorTimesScalar 347 350 - 352: 103(ptr) AccessChain 74(input) 285 - 353: 18(fvec3) Load 352 - 354: 18(fvec3) FAdd 351 353 - 355: 8(float) CompositeExtract 354 0 - 356: 8(float) CompositeExtract 354 1 - 357: 8(float) CompositeExtract 354 2 - 358: 56(fvec4) CompositeConstruct 355 356 357 194 - Store 342(pos) 358 - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 360 360 16 16 - 361: 56(fvec4) Load 342(pos) - 362: 131 Load 301(gRotMat) - 363: 56(fvec4) VectorTimesMatrix 361 362 - 365: 364(ptr) AccessChain 157 160 313 - 366: 131 Load 365 - 367: 56(fvec4) VectorTimesMatrix 363 366 - 368: 364(ptr) AccessChain 157 160 160 - 369: 131 Load 368 - 370: 56(fvec4) VectorTimesMatrix 367 369 - 371: 309(ptr) AccessChain 91(output) 160 - Store 371 370 - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 373 373 16 16 - 374: 103(ptr) AccessChain 74(input) 313 - 375: 18(fvec3) Load 374 - 376: 180 Load 272(rotMat) - 377: 18(fvec3) VectorTimesMatrix 375 376 - 378: 131 Load 301(gRotMat) - 379: 364(ptr) AccessChain 157 160 313 - 380: 131 Load 379 - 381: 131 MatrixTimesMatrix 378 380 - 382: 56(fvec4) CompositeExtract 381 0 - 383: 18(fvec3) VectorShuffle 382 382 0 1 2 - 384: 56(fvec4) CompositeExtract 381 1 + 296: 163(ptr) AccessChain 159 162 287 + 297: 8(float) Load 296 + 298: 8(float) FAdd 295 297 + 299: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 298 + Store 170(c) 299 + 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 301 301 16 16 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 304 303(gRotMat) 85 + 307: 8(float) Load 170(c) + 308: 8(float) Load 124(s) + 309: 8(float) FNegate 308 + 310: 56(fvec4) CompositeConstruct 307 95 309 95 + 312: 311(ptr) AccessChain 303(gRotMat) 162 + Store 312 310 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 314 314 16 16 + 317: 311(ptr) AccessChain 303(gRotMat) 315 + Store 317 316 + 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 319 319 16 16 + 320: 8(float) Load 124(s) + 321: 8(float) Load 170(c) + 322: 56(fvec4) CompositeConstruct 320 95 321 95 + 323: 311(ptr) AccessChain 303(gRotMat) 101 + Store 323 322 + 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 325 325 16 16 + 327: 311(ptr) AccessChain 303(gRotMat) 102 + Store 327 326 + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 329 329 16 16 + 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 331 330(locPos) 85 + 334: 103(ptr) AccessChain 74(input) 162 + 335: 18(fvec3) Load 334 + 336: 182 Load 274(rotMat) + 337: 18(fvec3) VectorTimesMatrix 335 336 + 338: 8(float) CompositeExtract 337 0 + 339: 8(float) CompositeExtract 337 1 + 340: 8(float) CompositeExtract 337 2 + 341: 56(fvec4) CompositeConstruct 338 339 340 196 + Store 330(locPos) 341 + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 343 343 16 16 + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 345 344(pos) 85 + 348: 56(fvec4) Load 330(locPos) + 349: 18(fvec3) VectorShuffle 348 348 0 1 2 + 351: 123(ptr) AccessChain 74(input) 350 + 352: 8(float) Load 351 + 353: 18(fvec3) VectorTimesScalar 349 352 + 354: 103(ptr) AccessChain 74(input) 287 + 355: 18(fvec3) Load 354 + 356: 18(fvec3) FAdd 353 355 + 357: 8(float) CompositeExtract 356 0 + 358: 8(float) CompositeExtract 356 1 + 359: 8(float) CompositeExtract 356 2 + 360: 56(fvec4) CompositeConstruct 357 358 359 196 + Store 344(pos) 360 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 362 362 16 16 + 363: 56(fvec4) Load 344(pos) + 364: 131 Load 303(gRotMat) + 365: 56(fvec4) VectorTimesMatrix 363 364 + 367: 366(ptr) AccessChain 159 162 315 + 368: 131 Load 367 + 369: 56(fvec4) VectorTimesMatrix 365 368 + 370: 366(ptr) AccessChain 159 162 162 + 371: 131 Load 370 + 372: 56(fvec4) VectorTimesMatrix 369 371 + 373: 311(ptr) AccessChain 91(output) 162 + Store 373 372 + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 375 375 16 16 + 376: 103(ptr) AccessChain 74(input) 315 + 377: 18(fvec3) Load 376 + 378: 182 Load 274(rotMat) + 379: 18(fvec3) VectorTimesMatrix 377 378 + 380: 131 Load 303(gRotMat) + 381: 366(ptr) AccessChain 159 162 315 + 382: 131 Load 381 + 383: 131 MatrixTimesMatrix 380 382 + 384: 56(fvec4) CompositeExtract 383 0 385: 18(fvec3) VectorShuffle 384 384 0 1 2 - 386: 56(fvec4) CompositeExtract 381 2 + 386: 56(fvec4) CompositeExtract 383 1 387: 18(fvec3) VectorShuffle 386 386 0 1 2 - 388: 180 CompositeConstruct 383 385 387 - 389: 18(fvec3) VectorTimesMatrix 377 388 - 390: 103(ptr) AccessChain 91(output) 313 - Store 390 389 - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 392 392 16 16 - 393: 103(ptr) AccessChain 74(input) 160 - 394: 18(fvec3) Load 393 - 395: 103(ptr) AccessChain 74(input) 285 + 388: 56(fvec4) CompositeExtract 383 2 + 389: 18(fvec3) VectorShuffle 388 388 0 1 2 + 390: 182 CompositeConstruct 385 387 389 + 391: 18(fvec3) VectorTimesMatrix 379 390 + 392: 103(ptr) AccessChain 91(output) 315 + Store 392 391 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 394 394 16 16 + 395: 103(ptr) AccessChain 74(input) 162 396: 18(fvec3) Load 395 - 397: 18(fvec3) FAdd 394 396 - 398: 8(float) CompositeExtract 397 0 - 399: 8(float) CompositeExtract 397 1 - 400: 8(float) CompositeExtract 397 2 - 401: 56(fvec4) CompositeConstruct 398 399 400 194 - 402: 364(ptr) AccessChain 157 160 313 - 403: 131 Load 402 - 404: 56(fvec4) VectorTimesMatrix 401 403 - Store 342(pos) 404 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 406 406 16 16 - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(lPos) 85 - 412: 411(ptr) AccessChain 157 160 101 - 413: 56(fvec4) Load 412 - 414: 18(fvec3) VectorShuffle 413 413 0 1 2 - 415: 364(ptr) AccessChain 157 160 313 - 416: 131 Load 415 - 417: 56(fvec4) CompositeExtract 416 0 - 418: 18(fvec3) VectorShuffle 417 417 0 1 2 - 419: 56(fvec4) CompositeExtract 416 1 + 397: 103(ptr) AccessChain 74(input) 287 + 398: 18(fvec3) Load 397 + 399: 18(fvec3) FAdd 396 398 + 400: 8(float) CompositeExtract 399 0 + 401: 8(float) CompositeExtract 399 1 + 402: 8(float) CompositeExtract 399 2 + 403: 56(fvec4) CompositeConstruct 400 401 402 196 + 404: 366(ptr) AccessChain 159 162 315 + 405: 131 Load 404 + 406: 56(fvec4) VectorTimesMatrix 403 405 + Store 344(pos) 406 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 408 408 16 16 + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 410 409(lPos) 85 + 414: 413(ptr) AccessChain 159 162 101 + 415: 56(fvec4) Load 414 + 416: 18(fvec3) VectorShuffle 415 415 0 1 2 + 417: 366(ptr) AccessChain 159 162 315 + 418: 131 Load 417 + 419: 56(fvec4) CompositeExtract 418 0 420: 18(fvec3) VectorShuffle 419 419 0 1 2 - 421: 56(fvec4) CompositeExtract 416 2 + 421: 56(fvec4) CompositeExtract 418 1 422: 18(fvec3) VectorShuffle 421 421 0 1 2 - 423: 180 CompositeConstruct 418 420 422 - 424: 18(fvec3) VectorTimesMatrix 414 423 - Store 407(lPos) 424 - 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 426 426 16 16 - 427: 18(fvec3) Load 407(lPos) - 428: 56(fvec4) Load 342(pos) - 429: 18(fvec3) VectorShuffle 428 428 0 1 2 - 430: 18(fvec3) FSub 427 429 - 431: 103(ptr) AccessChain 91(output) 128 - Store 431 430 - 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 433 433 16 16 - 434: 56(fvec4) Load 342(pos) - 435: 18(fvec3) VectorShuffle 434 434 0 1 2 - 436: 18(fvec3) FNegate 435 - 437: 103(ptr) AccessChain 91(output) 285 - Store 437 436 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 439 439 16 16 - 440:58(VSOutput) Load 91(output) - ReturnValue 440 + 423: 56(fvec4) CompositeExtract 418 2 + 424: 18(fvec3) VectorShuffle 423 423 0 1 2 + 425: 182 CompositeConstruct 420 422 424 + 426: 18(fvec3) VectorTimesMatrix 416 425 + Store 409(lPos) 426 + 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 428 428 16 16 + 429: 18(fvec3) Load 409(lPos) + 430: 56(fvec4) Load 344(pos) + 431: 18(fvec3) VectorShuffle 430 430 0 1 2 + 432: 18(fvec3) FSub 429 431 + 433: 103(ptr) AccessChain 91(output) 128 + Store 433 432 + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 435 435 16 16 + 436: 56(fvec4) Load 344(pos) + 437: 18(fvec3) VectorShuffle 436 436 0 1 2 + 438: 18(fvec3) FNegate 437 + 439: 103(ptr) AccessChain 91(output) 287 + Store 439 438 + 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 441 441 16 16 + 442:58(VSOutput) Load 91(output) + ReturnValue 442 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out index f3319c20ee..d244fd156a 100644 --- a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.scalar_types.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 147 +// Id's are bound by 146 Capability Shader Capability Float16 @@ -28,41 +28,41 @@ spv.debuginfo.scalar_types.glsl.frag " 30: String "bool" 35: String "VAR_bool" - 42: String "int" - 47: String "VAR_int" - 54: String "VAR_uint" - 58: String "float" - 63: String "VAR_float" - 68: String "double" - 74: String "VAR_double" - 79: String "int8_t" - 84: String "VAR_int8_t" - 89: String "uint8_t" - 94: String "VAR_uint8_t" - 99: String "int16_t" - 105: String "VAR_int16_t" - 110: String "uint16_t" - 115: String "VAR_uint16_t" - 120: String "int64_t" - 125: String "VAR_int64_t" - 130: String "uint64_t" - 135: String "VAR_uint64_t" - 140: String "float16_t" - 145: String "VAR_float16_t" + 41: String "int" + 46: String "VAR_int" + 53: String "VAR_uint" + 57: String "float" + 62: String "VAR_float" + 67: String "double" + 73: String "VAR_double" + 78: String "int8_t" + 83: String "VAR_int8_t" + 88: String "uint8_t" + 93: String "VAR_uint8_t" + 98: String "int16_t" + 104: String "VAR_int16_t" + 109: String "uint16_t" + 114: String "VAR_uint16_t" + 119: String "int64_t" + 124: String "VAR_int64_t" + 129: String "uint64_t" + 134: String "VAR_uint64_t" + 139: String "float16_t" + 144: String "VAR_float16_t" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 14 "main" Name 33 "VAR_bool" - Name 45 "VAR_int" - Name 52 "VAR_uint" - Name 61 "VAR_float" - Name 72 "VAR_double" - Name 82 "VAR_int8_t" - Name 92 "VAR_uint8_t" - Name 103 "VAR_int16_t" - Name 113 "VAR_uint16_t" - Name 123 "VAR_int64_t" - Name 133 "VAR_uint64_t" - Name 143 "VAR_float16_t" + Name 44 "VAR_int" + Name 51 "VAR_uint" + Name 60 "VAR_float" + Name 71 "VAR_double" + Name 81 "VAR_int8_t" + Name 91 "VAR_uint8_t" + Name 102 "VAR_int16_t" + Name 112 "VAR_uint16_t" + Name 122 "VAR_int64_t" + Name 132 "VAR_uint64_t" + Name 142 "VAR_float16_t" 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -86,112 +86,111 @@ spv.debuginfo.scalar_types.glsl.frag 33(VAR_bool): 32(ptr) Variable Private 36: 7(int) Constant 8 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 35 31 18 28 12 21 35 33(VAR_bool) 36 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 24 12 - 38: 29(bool) ConstantFalse - 40: 7(int) Constant 44 - 41: TypeInt 32 1 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 42 10 23 12 - 44: TypePointer Private 41(int) - 45(VAR_int): 44(ptr) Variable Private - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 47 43 18 40 12 21 47 45(VAR_int) 36 - 48: 41(int) Constant 0 - 50: 7(int) Constant 45 - 51: TypePointer Private 7(int) - 52(VAR_uint): 51(ptr) Variable Private - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 54 9 18 50 12 21 54 52(VAR_uint) 36 - 56: 7(int) Constant 46 - 57: TypeFloat 32 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 58 10 13 12 - 60: TypePointer Private 57(float) - 61(VAR_float): 60(ptr) Variable Private - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 63 59 18 56 12 21 63 61(VAR_float) 36 - 64: 57(float) Constant 0 - 66: 7(int) Constant 47 - 67: TypeFloat 64 - 70: 7(int) Constant 64 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 68 70 13 12 - 71: TypePointer Private 67(float64_t) - 72(VAR_double): 71(ptr) Variable Private - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 74 69 18 66 12 21 74 72(VAR_double) 36 - 75:67(float64_t) Constant 0 0 - 77: 7(int) Constant 48 - 78: TypeInt 8 1 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 79 36 23 12 - 81: TypePointer Private 78(int8_t) - 82(VAR_int8_t): 81(ptr) Variable Private - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 80 18 77 12 21 84 82(VAR_int8_t) 36 - 85: 78(int8_t) Constant 0 - 87: 7(int) Constant 49 - 88: TypeInt 8 0 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 89 36 11 12 - 91: TypePointer Private 88(int8_t) - 92(VAR_uint8_t): 91(ptr) Variable Private - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 90 18 87 12 21 94 92(VAR_uint8_t) 36 - 95: 88(int8_t) Constant 0 - 97: 7(int) Constant 50 - 98: TypeInt 16 1 - 101: 7(int) Constant 16 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 99 101 23 12 - 102: TypePointer Private 98(int16_t) -103(VAR_int16_t): 102(ptr) Variable Private - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 105 100 18 97 12 21 105 103(VAR_int16_t) 36 - 106: 98(int16_t) Constant 0 - 108: 7(int) Constant 51 - 109: TypeInt 16 0 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 110 101 11 12 - 112: TypePointer Private 109(int16_t) -113(VAR_uint16_t): 112(ptr) Variable Private - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 115 111 18 108 12 21 115 113(VAR_uint16_t) 36 - 116:109(int16_t) Constant 0 - 118: 7(int) Constant 52 - 119: TypeInt 64 1 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 120 70 23 12 - 122: TypePointer Private 119(int64_t) -123(VAR_int64_t): 122(ptr) Variable Private - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 121 18 118 12 21 125 123(VAR_int64_t) 36 - 126:119(int64_t) Constant 0 0 - 128: 7(int) Constant 53 - 129: TypeInt 64 0 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 130 70 11 12 - 132: TypePointer Private 129(int64_t) -133(VAR_uint64_t): 132(ptr) Variable Private - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 135 131 18 128 12 21 135 133(VAR_uint64_t) 36 - 136:129(int64_t) Constant 0 0 - 138: 7(int) Constant 54 - 139: TypeFloat 16 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 101 13 12 - 142: TypePointer Private 139(float16_t) -143(VAR_float16_t): 142(ptr) Variable Private - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 145 141 18 138 12 21 145 143(VAR_float16_t) 36 - 146:139(float16_t) Constant 0 + 37: 29(bool) ConstantFalse + 39: 7(int) Constant 44 + 40: TypeInt 32 1 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 41 10 23 12 + 43: TypePointer Private 40(int) + 44(VAR_int): 43(ptr) Variable Private + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 46 42 18 39 12 21 46 44(VAR_int) 36 + 47: 40(int) Constant 0 + 49: 7(int) Constant 45 + 50: TypePointer Private 7(int) + 51(VAR_uint): 50(ptr) Variable Private + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 53 9 18 49 12 21 53 51(VAR_uint) 36 + 55: 7(int) Constant 46 + 56: TypeFloat 32 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 13 12 + 59: TypePointer Private 56(float) + 60(VAR_float): 59(ptr) Variable Private + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 18 55 12 21 62 60(VAR_float) 36 + 63: 56(float) Constant 0 + 65: 7(int) Constant 47 + 66: TypeFloat 64 + 69: 7(int) Constant 64 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 67 69 13 12 + 70: TypePointer Private 66(float64_t) + 71(VAR_double): 70(ptr) Variable Private + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 73 68 18 65 12 21 73 71(VAR_double) 36 + 74:66(float64_t) Constant 0 0 + 76: 7(int) Constant 48 + 77: TypeInt 8 1 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 78 36 23 12 + 80: TypePointer Private 77(int8_t) + 81(VAR_int8_t): 80(ptr) Variable Private + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 79 18 76 12 21 83 81(VAR_int8_t) 36 + 84: 77(int8_t) Constant 0 + 86: 7(int) Constant 49 + 87: TypeInt 8 0 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 88 36 11 12 + 90: TypePointer Private 87(int8_t) + 91(VAR_uint8_t): 90(ptr) Variable Private + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 93 89 18 86 12 21 93 91(VAR_uint8_t) 36 + 94: 87(int8_t) Constant 0 + 96: 7(int) Constant 50 + 97: TypeInt 16 1 + 100: 7(int) Constant 16 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 100 23 12 + 101: TypePointer Private 97(int16_t) +102(VAR_int16_t): 101(ptr) Variable Private + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 104 99 18 96 12 21 104 102(VAR_int16_t) 36 + 105: 97(int16_t) Constant 0 + 107: 7(int) Constant 51 + 108: TypeInt 16 0 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 109 100 11 12 + 111: TypePointer Private 108(int16_t) +112(VAR_uint16_t): 111(ptr) Variable Private + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 110 18 107 12 21 114 112(VAR_uint16_t) 36 + 115:108(int16_t) Constant 0 + 117: 7(int) Constant 52 + 118: TypeInt 64 1 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 119 69 23 12 + 121: TypePointer Private 118(int64_t) +122(VAR_int64_t): 121(ptr) Variable Private + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 120 18 117 12 21 124 122(VAR_int64_t) 36 + 125:118(int64_t) Constant 0 0 + 127: 7(int) Constant 53 + 128: TypeInt 64 0 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 129 69 11 12 + 131: TypePointer Private 128(int64_t) +132(VAR_uint64_t): 131(ptr) Variable Private + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 130 18 127 12 21 134 132(VAR_uint64_t) 36 + 135:128(int64_t) Constant 0 0 + 137: 7(int) Constant 54 + 138: TypeFloat 16 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 100 13 12 + 141: TypePointer Private 138(float16_t) +142(VAR_float16_t): 141(ptr) Variable Private + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 144 140 18 137 12 21 144 142(VAR_float16_t) 36 + 145:138(float16_t) Constant 0 Line 1 42 11 14(main): 4 Function None 5 15: Label 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - Store 33(VAR_bool) 38 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 40 40 12 12 - Store 45(VAR_int) 48 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 50 50 12 12 - Store 52(VAR_uint) 12 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 56 56 12 12 - Store 61(VAR_float) 64 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 66 66 12 12 - Store 72(VAR_double) 75 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 77 77 12 12 - Store 82(VAR_int8_t) 85 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 87 87 12 12 - Store 92(VAR_uint8_t) 95 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 97 97 12 12 - Store 103(VAR_int16_t) 106 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 108 108 12 12 - Store 113(VAR_uint16_t) 116 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 118 118 12 12 - Store 123(VAR_int64_t) 126 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 128 128 12 12 - Store 133(VAR_uint64_t) 136 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 138 138 12 12 - Store 143(VAR_float16_t) 146 + Store 33(VAR_bool) 37 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 39 39 12 12 + Store 44(VAR_int) 47 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 49 49 12 12 + Store 51(VAR_uint) 12 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12 + Store 60(VAR_float) 63 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 65 65 12 12 + Store 71(VAR_double) 74 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 76 76 12 12 + Store 81(VAR_int8_t) 84 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 86 86 12 12 + Store 91(VAR_uint8_t) 94 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 96 96 12 12 + Store 102(VAR_int16_t) 105 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 107 107 12 12 + Store 112(VAR_uint16_t) 115 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12 + Store 122(VAR_int64_t) 125 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 127 127 12 12 + Store 132(VAR_uint64_t) 135 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 137 137 12 12 + Store 142(VAR_float16_t) 145 Return FunctionEnd From 530a6266b296757adf1d871e0544492c61ff099f Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 7 Dec 2023 18:26:50 -0500 Subject: [PATCH 364/594] Fix tokenLength test to not trigger spurious preprocessor error The preprocessor now reports errors for #'s appearing in the wrong place, which were being triggered by this test. This test is rewritten slightly to only report the errors we want. --- Test/baseResults/tokenLength.vert.out | 6 +++--- Test/tokenLength.vert | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Test/baseResults/tokenLength.vert.out b/Test/baseResults/tokenLength.vert.out index 5f108301f6..43f3534c8f 100644 --- a/Test/baseResults/tokenLength.vert.out +++ b/Test/baseResults/tokenLength.vert.out @@ -16,10 +16,10 @@ ERROR: 0:40: '' : name too long WARNING: 0:40: '#extension' : extension not supported: a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhooooooooooooooooooooooooooooooohhhhhhhhhhhhhhhhh01234 ERROR: 0:43: '' : name too long ERROR: 0:44: '#extension' : ':' missing after extension name -ERROR: 0:47: '#error' : in long non - zero # if -ERROR: 0:50: '#error' : in long zero # if +ERROR: 0:47: '#error' : in long non - zero if +ERROR: 0:50: '#error' : in long zero if ERROR: 0:52: '' : numeric literal too long -ERROR: 0:53: '#error' : in too long # if +ERROR: 0:53: '#error' : in too long if ERROR: 0:56: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 ERROR: 0:59: 'preprocessor evaluation' : undefined macro in expression not allowed in es profile A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ERROR: 0:62: '' : name too long diff --git a/Test/tokenLength.vert b/Test/tokenLength.vert index 325fbcbcb0..2907b327cd 100644 --- a/Test/tokenLength.vert +++ b/Test/tokenLength.vert @@ -44,31 +44,31 @@ float superF = 1.012345678901234567890123456789012345678901234567890123456789012 // Boundary cases #if 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 -#error in long non-zero #if +#error in long non-zero "if" #endif #if 0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 == 0 -#error in long zero #if +#error in long zero "if" #endif #if 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 == 0 -#error in too long #if +#error in too long "if" #endif #if A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001 -#error in long macro #if +#error in long macro "if" #endif #if A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -#error in long macro #if +#error in long macro "if" #endif #if A0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -#error in too long macro #if +#error in too long macro "if" #endif // Super long #if 000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -#error in super long #if +#error in super long "if" #endif #if A000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 -#error in super long macro #if +#error in super long macro "if" #endif int BE = 0b01u; // ERROR (not supported by GLSL) From feb54379427093dca566cbea996e7a57b80d73eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjimihe=E2=80=9D?= Date: Thu, 23 Nov 2023 14:19:58 +0800 Subject: [PATCH 365/594] PP: Report an error when a # is not the first thing on a line According to the GLSL spec Each number sign (#) can be preceded in its line only by spaces or horizontal tabs. It may also be followed by spaces and horizontal tabs, preceding the directive. --- Test/baseResults/cppBad.vert.out | 4 ++- Test/baseResults/cppBad4.vert.out | 3 +- .../preprocessor/PpContext.h | 32 +++++++++++++++++-- 3 files changed, 34 insertions(+), 5 deletions(-) diff --git a/Test/baseResults/cppBad.vert.out b/Test/baseResults/cppBad.vert.out index 8ab04bc0e7..e0a1504a30 100644 --- a/Test/baseResults/cppBad.vert.out +++ b/Test/baseResults/cppBad.vert.out @@ -1,5 +1,7 @@ cppBad.vert WARNING: 0:1: '#define' : missing space after macro name +ERROR: 0:1: '#' : (#) can be preceded in its line only by spaces or horizontal tabs +ERROR: 0:2: '#' : (#) can be preceded in its line only by spaces or horizontal tabs ERROR: 0:3: 'preprocessor evaluation' : bad expression ERROR: 0:3: '#if' : unexpected tokens following directive ERROR: 0:6: 'string' : End of line in string @@ -7,7 +9,7 @@ ERROR: 0:6: 'string literal' : required extension not requested: Possible extens GL_EXT_debug_printf GL_EXT_spirv_intrinsics ERROR: 0:6: '' : syntax error, unexpected INT, expecting COMMA or SEMICOLON -ERROR: 5 compilation errors. No code generated. +ERROR: 7 compilation errors. No code generated. Shader version: 100 diff --git a/Test/baseResults/cppBad4.vert.out b/Test/baseResults/cppBad4.vert.out index 693ea8e8cb..23f149db69 100644 --- a/Test/baseResults/cppBad4.vert.out +++ b/Test/baseResults/cppBad4.vert.out @@ -1,7 +1,8 @@ cppBad4.vert +ERROR: 0:2: '#' : (#) can be preceded in its line only by spaces or horizontal tabs ERROR: 0:4: 'macro expansion' : unexpected '#' g ERROR: 0:5: '' : syntax error, unexpected SEMICOLON, expecting LEFT_PAREN -ERROR: 2 compilation errors. No code generated. +ERROR: 3 compilation errors. No code generated. Shader version: 100 diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index 18342bf6d0..1ec30491ce 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -215,6 +215,7 @@ class TPpContext { virtual bool peekContinuedPasting(int) { return false; } // true when non-spaced tokens can paste virtual bool endOfReplacementList() { return false; } // true when at the end of a macro replacement list (RHS of #define) virtual bool isMacroInput() { return false; } + virtual bool isStringInput() { return false; } // Will be called when we start reading tokens from this instance virtual void notifyActivated() {} @@ -355,7 +356,8 @@ class TPpContext { // Scanner data: int previous_token; TParseContextBase& parseContext; - + std::vector lastLineTokens; + std::vector lastLineTokenLocs; // Get the next token from *stack* of input sources, popping input sources // that are out of tokens, down until an input source is found that has a token. // Return EndOfInput when there are no more tokens to be found by doing this. @@ -369,7 +371,31 @@ class TPpContext { break; popInput(); } - + if (!inputStack.empty() && inputStack.back()->isStringInput()) { + if (token == '\n') { + bool seenNumSign = false; + for (int i = 0; i < (int)lastLineTokens.size() - 1;) { + int curPos = i; + int curToken = lastLineTokens[i++]; + if (curToken == '#' && lastLineTokens[i] == '#') { + curToken = PpAtomPaste; + i++; + } + if (curToken == '#') { + if (seenNumSign) { + parseContext.ppError(lastLineTokenLocs[curPos], "(#) can be preceded in its line only by spaces or horizontal tabs", "#", ""); + } else { + seenNumSign = true; + } + } + } + lastLineTokens.clear(); + lastLineTokenLocs.clear(); + } else { + lastLineTokens.push_back(token); + lastLineTokenLocs.push_back(ppToken->loc); + } + } return token; } int getChar() { return inputStack.back()->getch(); } @@ -522,7 +548,7 @@ class TPpContext { public: tStringInput(TPpContext* pp, TInputScanner& i) : tInput(pp), input(&i) { } virtual int scan(TPpToken*) override; - + bool isStringInput() override { return true; } // Scanner used to get source stream characters. // - Escaped newlines are handled here, invisibly to the caller. // - All forms of newline are handled, and turned into just a '\n'. From 6200ac47a9035c3bc17a5789d38ee5e558c85687 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 06:35:05 +0000 Subject: [PATCH 366/594] Bump actions/setup-python from 4.7.1 to 5.0.0 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.7.1 to 5.0.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236...0a5c61591373683505ea898e09a3ea4f39ef2b9c) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index fd0b964412..0335011870 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -43,7 +43,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies @@ -107,7 +107,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - run: ./update_glslang_sources.py @@ -164,7 +164,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - run: python update_glslang_sources.py diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 5e3bd4270b..d263aaddff 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - name: Setup ccache @@ -55,7 +55,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - name: Setup ccache @@ -89,7 +89,7 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 @@ -149,7 +149,7 @@ jobs: steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - run: python update_glslang_sources.py @@ -218,7 +218,7 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: actions/setup-python@65d7f2d534ac1bc67fcd62888c5f4f3d2cb2b236 # v4.7.1 + - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 From 3bc462c5bc0956ba811807f71d402e51dfe1146d Mon Sep 17 00:00:00 2001 From: Samuel Bourasseau Date: Wed, 6 Dec 2023 11:19:58 +0100 Subject: [PATCH 367/594] Properly advertise GL_ARB_bindless_texture as being unavailable when generating SPIR-V --- glslang/MachineIndependent/ParseHelper.cpp | 4 +++- glslang/MachineIndependent/Versions.cpp | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index fcb75e87c6..d9cb640b2a 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1663,7 +1663,9 @@ TIntermNode* TParseContext::handleReturnValue(const TSourceLoc& loc, TIntermType } } else { if (value->getType().isTexture() || value->getType().isImage()) { - if (!extensionTurnedOn(E_GL_ARB_bindless_texture)) + if (spvVersion.spv != 0) + error(loc, "sampler or image cannot be used as return type when generating SPIR-V", "return", ""); + else if (!extensionTurnedOn(E_GL_ARB_bindless_texture)) error(loc, "sampler or image can be used as return type only when the extension GL_ARB_bindless_texture enabled", "return", ""); } branch = intermediate.addBranch(EOpReturn, value, loc); diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index bede71604e..bf55493278 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -487,7 +487,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_ARB_vertex_attrib_64bit 1\n" "#define GL_ARB_draw_instanced 1\n" "#define GL_ARB_fragment_coord_conventions 1\n" - "#define GL_ARB_bindless_texture 1\n" + "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_EXT_shader_image_load_formatted 1\n" "#define GL_EXT_post_depth_coverage 1\n" @@ -582,6 +582,10 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_fragment_shader_barycentric 1\n" ; + if (spvVersion.spv == 0) { + preamble += "#define GL_ARB_bindless_texture 1\n"; + } + if (version >= 150) { // define GL_core_profile and GL_compatibility_profile preamble += "#define GL_core_profile 1\n"; From 6de514b2ec8c88b98672029f013424897bedc3fb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 21:48:44 +0000 Subject: [PATCH 368/594] Bump lukka/get-cmake from 3.27.9 to 3.28.0 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.27.9 to 3.28.0. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/4865386b66955d11be0abf8c112d0230023e742a...98fde40bf98bdc391abe7227e6b1052d9b36a22f) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 0335011870..bb6f21f4a0 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index d263aaddff..9ec0223892 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -92,7 +92,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -124,7 +124,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -148,7 +148,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -166,7 +166,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -195,7 +195,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -221,7 +221,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4865386b66955d11be0abf8c112d0230023e742a # v3.27.9 + - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: From c4d34471c4c3449495370b309154d18ac8c5b947 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 11 Dec 2023 06:34:52 +0000 Subject: [PATCH 369/594] Bump github/codeql-action from 2.22.8 to 2.22.9 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.8 to 2.22.9. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/407ffafae6a767df3e0230c3df91b6443ae8df75...c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 455e6f14c8..fe47a75bde 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@407ffafae6a767df3e0230c3df91b6443ae8df75 # v2.22.8 + uses: github/codeql-action/upload-sarif@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 with: sarif_file: results.sarif From 07e8220d4efb23f89c1d7b9ef6fa1359d3e7c2ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjimihe=E2=80=9D?= Date: Mon, 11 Dec 2023 17:10:36 +0800 Subject: [PATCH 370/594] support GL_EXT_texture_array extention. --- Test/GL_EXT_texture_array.frag | 34 ++++ .../baseResults/GL_EXT_texture_array.frag.out | 149 ++++++++++++++++++ glslang/MachineIndependent/Initialize.cpp | 33 ++++ glslang/MachineIndependent/Scan.cpp | 16 +- glslang/MachineIndependent/Versions.cpp | 2 + glslang/MachineIndependent/Versions.h | 1 + gtests/AST.FromFile.cpp | 1 + 7 files changed, 235 insertions(+), 1 deletion(-) create mode 100644 Test/GL_EXT_texture_array.frag create mode 100644 Test/baseResults/GL_EXT_texture_array.frag.out diff --git a/Test/GL_EXT_texture_array.frag b/Test/GL_EXT_texture_array.frag new file mode 100644 index 0000000000..50a40a01e6 --- /dev/null +++ b/Test/GL_EXT_texture_array.frag @@ -0,0 +1,34 @@ +#version 110 + +#extension GL_EXT_texture_array : enable + +uniform sampler1DArray s1DA; +uniform sampler2DArray s2DA; +uniform sampler1DArrayShadow s1DAS; +uniform sampler2DArrayShadow s2DAS; + +void foo() +{ + float f; + vec2 v2; + vec3 v3; + vec4 v4; + + v4 = texture1DArray(s1DA, v2); + v4 = texture2DArray(s2DA, v3); + v4 = shadow1DArray(s1DAS, v3); + v4 = shadow2DArray(s2DAS, v4); + + v4 = texture1DArray(s1DA, v2, f); + v4 = texture2DArray(s2DA, v3, f); + v4 = shadow1DArray(s1DAS, v3, f); + + v4 = texture1DArrayLod(s1DA, v2, f); + v4 = texture2DArrayLod(s2DA, v3, f); + v4 = shadow1DArrayLod(s1DAS, v3, f); +} + +void main() +{ + foo(); +} diff --git a/Test/baseResults/GL_EXT_texture_array.frag.out b/Test/baseResults/GL_EXT_texture_array.frag.out new file mode 100644 index 0000000000..977d932d37 --- /dev/null +++ b/Test/baseResults/GL_EXT_texture_array.frag.out @@ -0,0 +1,149 @@ +GL_EXT_texture_array.frag +Shader version: 110 +Requested GL_EXT_texture_array +0:? Sequence +0:10 Function Definition: foo( ( global void) +0:10 Function Parameters: +0:? Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'v4' ( temp 4-component vector of float) +0:17 texture ( global 4-component vector of float) +0:17 's1DA' ( uniform sampler1DArray) +0:17 'v2' ( temp 2-component vector of float) +0:18 move second child to first child ( temp 4-component vector of float) +0:18 'v4' ( temp 4-component vector of float) +0:18 texture ( global 4-component vector of float) +0:18 's2DA' ( uniform sampler2DArray) +0:18 'v3' ( temp 3-component vector of float) +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'v4' ( temp 4-component vector of float) +0:19 texture ( global 4-component vector of float) +0:19 's1DAS' ( uniform sampler1DArrayShadow) +0:19 'v3' ( temp 3-component vector of float) +0:20 move second child to first child ( temp 4-component vector of float) +0:20 'v4' ( temp 4-component vector of float) +0:20 texture ( global 4-component vector of float) +0:20 's2DAS' ( uniform sampler2DArrayShadow) +0:20 'v4' ( temp 4-component vector of float) +0:22 move second child to first child ( temp 4-component vector of float) +0:22 'v4' ( temp 4-component vector of float) +0:22 texture ( global 4-component vector of float) +0:22 's1DA' ( uniform sampler1DArray) +0:22 'v2' ( temp 2-component vector of float) +0:22 'f' ( temp float) +0:23 move second child to first child ( temp 4-component vector of float) +0:23 'v4' ( temp 4-component vector of float) +0:23 texture ( global 4-component vector of float) +0:23 's2DA' ( uniform sampler2DArray) +0:23 'v3' ( temp 3-component vector of float) +0:23 'f' ( temp float) +0:24 move second child to first child ( temp 4-component vector of float) +0:24 'v4' ( temp 4-component vector of float) +0:24 texture ( global 4-component vector of float) +0:24 's1DAS' ( uniform sampler1DArrayShadow) +0:24 'v3' ( temp 3-component vector of float) +0:24 'f' ( temp float) +0:26 move second child to first child ( temp 4-component vector of float) +0:26 'v4' ( temp 4-component vector of float) +0:26 textureLod ( global 4-component vector of float) +0:26 's1DA' ( uniform sampler1DArray) +0:26 'v2' ( temp 2-component vector of float) +0:26 'f' ( temp float) +0:27 move second child to first child ( temp 4-component vector of float) +0:27 'v4' ( temp 4-component vector of float) +0:27 textureLod ( global 4-component vector of float) +0:27 's2DA' ( uniform sampler2DArray) +0:27 'v3' ( temp 3-component vector of float) +0:27 'f' ( temp float) +0:28 move second child to first child ( temp 4-component vector of float) +0:28 'v4' ( temp 4-component vector of float) +0:28 textureLod ( global 4-component vector of float) +0:28 's1DAS' ( uniform sampler1DArrayShadow) +0:28 'v3' ( temp 3-component vector of float) +0:28 'f' ( temp float) +0:31 Function Definition: main( ( global void) +0:31 Function Parameters: +0:33 Sequence +0:33 Function Call: foo( ( global void) +0:? Linker Objects +0:? 's1DA' ( uniform sampler1DArray) +0:? 's2DA' ( uniform sampler2DArray) +0:? 's1DAS' ( uniform sampler1DArrayShadow) +0:? 's2DAS' ( uniform sampler2DArrayShadow) + + +Linked fragment stage: + + +Shader version: 110 +Requested GL_EXT_texture_array +0:? Sequence +0:10 Function Definition: foo( ( global void) +0:10 Function Parameters: +0:? Sequence +0:17 move second child to first child ( temp 4-component vector of float) +0:17 'v4' ( temp 4-component vector of float) +0:17 texture ( global 4-component vector of float) +0:17 's1DA' ( uniform sampler1DArray) +0:17 'v2' ( temp 2-component vector of float) +0:18 move second child to first child ( temp 4-component vector of float) +0:18 'v4' ( temp 4-component vector of float) +0:18 texture ( global 4-component vector of float) +0:18 's2DA' ( uniform sampler2DArray) +0:18 'v3' ( temp 3-component vector of float) +0:19 move second child to first child ( temp 4-component vector of float) +0:19 'v4' ( temp 4-component vector of float) +0:19 texture ( global 4-component vector of float) +0:19 's1DAS' ( uniform sampler1DArrayShadow) +0:19 'v3' ( temp 3-component vector of float) +0:20 move second child to first child ( temp 4-component vector of float) +0:20 'v4' ( temp 4-component vector of float) +0:20 texture ( global 4-component vector of float) +0:20 's2DAS' ( uniform sampler2DArrayShadow) +0:20 'v4' ( temp 4-component vector of float) +0:22 move second child to first child ( temp 4-component vector of float) +0:22 'v4' ( temp 4-component vector of float) +0:22 texture ( global 4-component vector of float) +0:22 's1DA' ( uniform sampler1DArray) +0:22 'v2' ( temp 2-component vector of float) +0:22 'f' ( temp float) +0:23 move second child to first child ( temp 4-component vector of float) +0:23 'v4' ( temp 4-component vector of float) +0:23 texture ( global 4-component vector of float) +0:23 's2DA' ( uniform sampler2DArray) +0:23 'v3' ( temp 3-component vector of float) +0:23 'f' ( temp float) +0:24 move second child to first child ( temp 4-component vector of float) +0:24 'v4' ( temp 4-component vector of float) +0:24 texture ( global 4-component vector of float) +0:24 's1DAS' ( uniform sampler1DArrayShadow) +0:24 'v3' ( temp 3-component vector of float) +0:24 'f' ( temp float) +0:26 move second child to first child ( temp 4-component vector of float) +0:26 'v4' ( temp 4-component vector of float) +0:26 textureLod ( global 4-component vector of float) +0:26 's1DA' ( uniform sampler1DArray) +0:26 'v2' ( temp 2-component vector of float) +0:26 'f' ( temp float) +0:27 move second child to first child ( temp 4-component vector of float) +0:27 'v4' ( temp 4-component vector of float) +0:27 textureLod ( global 4-component vector of float) +0:27 's2DA' ( uniform sampler2DArray) +0:27 'v3' ( temp 3-component vector of float) +0:27 'f' ( temp float) +0:28 move second child to first child ( temp 4-component vector of float) +0:28 'v4' ( temp 4-component vector of float) +0:28 textureLod ( global 4-component vector of float) +0:28 's1DAS' ( uniform sampler1DArrayShadow) +0:28 'v3' ( temp 3-component vector of float) +0:28 'f' ( temp float) +0:31 Function Definition: main( ( global void) +0:31 Function Parameters: +0:33 Sequence +0:33 Function Call: foo( ( global void) +0:? Linker Objects +0:? 's1DA' ( uniform sampler1DArray) +0:? 's2DA' ( uniform sampler2DArray) +0:? 's1DAS' ( uniform sampler1DArrayShadow) +0:? 's2DAS' ( uniform sampler2DArrayShadow) + diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 9feb261a5c..b3ca656f5b 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -1726,6 +1726,16 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "vec4 shadow2DRect(sampler2DRectShadow, vec3);" // GL_ARB_texture_rectangle, caught by keyword check "vec4 shadow2DRectProj(sampler2DRectShadow, vec4);" // GL_ARB_texture_rectangle, caught by keyword check + "vec4 texture1DArray(sampler1DArray, vec2);" // GL_EXT_texture_array + "vec4 texture2DArray(sampler2DArray, vec3);" // GL_EXT_texture_array + "vec4 shadow1DArray(sampler1DArrayShadow, vec3);" // GL_EXT_texture_array + "vec4 shadow2DArray(sampler2DArrayShadow, vec4);" // GL_EXT_texture_array + "vec4 texture1DArray(sampler1DArray, vec2, float);" // GL_EXT_texture_array + "vec4 texture2DArray(sampler2DArray, vec3, float);" // GL_EXT_texture_array + "vec4 shadow1DArray(sampler1DArrayShadow, vec3, float);" // GL_EXT_texture_array + "vec4 texture1DArrayLod(sampler1DArray, vec2, float);" // GL_EXT_texture_array + "vec4 texture2DArrayLod(sampler2DArray, vec3, float);" // GL_EXT_texture_array + "vec4 shadow1DArrayLod(sampler1DArrayShadow, vec3, float);" // GL_EXT_texture_array "\n"); } } @@ -8002,6 +8012,18 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("shadow2DEXT", 1, &E_GL_EXT_shadow_samplers); symbolTable.setFunctionExtensions("shadow2DProjEXT", 1, &E_GL_EXT_shadow_samplers); } + + // E_GL_EXT_texture_array + if (profile != EEsProfile && spvVersion.spv == 0) { + symbolTable.setFunctionExtensions("texture1DArray", 1, &E_GL_EXT_texture_array); + symbolTable.setFunctionExtensions("texture2DArray", 1, &E_GL_EXT_texture_array); + symbolTable.setFunctionExtensions("shadow1DArray", 1, &E_GL_EXT_texture_array); + symbolTable.setFunctionExtensions("shadow2DArray", 1, &E_GL_EXT_texture_array); + + symbolTable.setFunctionExtensions("texture1DArrayLod", 1, &E_GL_EXT_texture_array); + symbolTable.setFunctionExtensions("texture2DArrayLod", 1, &E_GL_EXT_texture_array); + symbolTable.setFunctionExtensions("shadow1DArrayLod", 1, &E_GL_EXT_texture_array); + } // Fall through case EShLangTessControl: @@ -9967,6 +9989,17 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("textureBlockMatchSADQCOM", EOpImageBlockMatchSADQCOM); symbolTable.relateToOperator("textureBlockMatchSSDQCOM", EOpImageBlockMatchSSDQCOM); } + + if (profile != EEsProfile && spvVersion.spv == 0) { + symbolTable.relateToOperator("texture1DArray", EOpTexture); + symbolTable.relateToOperator("texture2DArray", EOpTexture); + symbolTable.relateToOperator("shadow1DArray", EOpTexture); + symbolTable.relateToOperator("shadow2DArray", EOpTexture); + + symbolTable.relateToOperator("texture1DArrayLod", EOpTextureLod); + symbolTable.relateToOperator("texture2DArrayLod", EOpTextureLod); + symbolTable.relateToOperator("shadow1DArrayLod", EOpTextureLod); + } } switch(language) { diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 5c7e2e662e..44546596e4 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -1496,6 +1496,12 @@ int TScanContext::tokenizeIdentifier() case USAMPLERCUBE: case USAMPLER2DARRAY: afterType = true; + if (keyword == SAMPLER2DARRAY || keyword == SAMPLER2DARRAYSHADOW) { + if (!parseContext.isEsProfile() && + (parseContext.extensionTurnedOn(E_GL_EXT_texture_array) || parseContext.symbolTable.atBuiltInLevel())) { + return keyword; + } + } return nonreservedKeyword(300, 130); case SAMPLER3D: @@ -1539,6 +1545,12 @@ int TScanContext::tokenizeIdentifier() case USAMPLER1D: case USAMPLER1DARRAY: afterType = true; + if (keyword == SAMPLER1DARRAYSHADOW) { + if (!parseContext.isEsProfile() && + (parseContext.extensionTurnedOn(E_GL_EXT_texture_array) || parseContext.symbolTable.atBuiltInLevel())) { + return keyword; + } + } return es30ReservedFromGLSL(130); case ISAMPLER2DRECT: case USAMPLER2DRECT: @@ -1608,7 +1620,9 @@ int TScanContext::tokenizeIdentifier() if (parseContext.isEsProfile() && parseContext.version == 300) reservedWord(); else if ((parseContext.isEsProfile() && parseContext.version < 300) || - (!parseContext.isEsProfile() && parseContext.version < 130)) + ((!parseContext.isEsProfile() && parseContext.version < 130) && + !parseContext.symbolTable.atBuiltInLevel() && + !parseContext.extensionTurnedOn(E_GL_EXT_texture_array))) return identifierOrType(); return keyword; diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index bf55493278..ce9899ed15 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -359,6 +359,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_ray_tracing_position_fetch] = EBhDisable; extensionBehavior[E_GL_EXT_shader_tile_image] = EBhDisable; extensionBehavior[E_GL_EXT_texture_shadow_lod] = EBhDisable; + extensionBehavior[E_GL_EXT_texture_array] = EBhDisable; // OVR extensions extensionBehavior[E_GL_OVR_multiview] = EBhDisable; @@ -580,6 +581,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_atomic_float2 1\n" "#define GL_EXT_fragment_shader_barycentric 1\n" + "#define GL_EXT_texture_array 1\n" ; if (spvVersion.spv == 0) { diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 0ebace9bb2..b8f5300b39 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -215,6 +215,7 @@ const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intr const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric"; const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shader"; const char* const E_GL_EXT_opacity_micromap = "GL_EXT_opacity_micromap"; +const char* const E_GL_EXT_texture_array = "GL_EXT_texture_array"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 3a7ce2b766..a6546ca665 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -302,6 +302,7 @@ INSTANTIATE_TEST_SUITE_P( "gl_FragCoord.frag", "glsl.interpOp.error.frag", "overflow_underflow_toinf_0.frag", + "GL_EXT_texture_array.frag", })), FileNameAsCustomTestSuffix ); From a7785ea1ff5b10bfc2d8ca77fdad5929562897b7 Mon Sep 17 00:00:00 2001 From: jimihem <149994911+jimihem@users.noreply.github.com> Date: Wed, 13 Dec 2023 07:22:04 +0800 Subject: [PATCH 371/594] Support GL_EXT_draw_instanced extension. --- Test/GL_EXT_draw_instanced.vert | 18 ++ Test/baseResults/130.vert.out | 11 +- .../GL_EXT_draw_instanced.vert.out | 173 ++++++++++++++++++ glslang/MachineIndependent/Initialize.cpp | 5 +- glslang/MachineIndependent/Intermediate.cpp | 5 +- glslang/MachineIndependent/Versions.cpp | 1 + glslang/MachineIndependent/Versions.h | 1 + gtests/AST.FromFile.cpp | 1 + 8 files changed, 207 insertions(+), 8 deletions(-) create mode 100644 Test/GL_EXT_draw_instanced.vert create mode 100644 Test/baseResults/GL_EXT_draw_instanced.vert.out diff --git a/Test/GL_EXT_draw_instanced.vert b/Test/GL_EXT_draw_instanced.vert new file mode 100644 index 0000000000..601e3d7f60 --- /dev/null +++ b/Test/GL_EXT_draw_instanced.vert @@ -0,0 +1,18 @@ +#version 120 +#extension GL_EXT_draw_instanced : require +#define ID gl_InstanceID + +uniform mat4 gtf_ModelViewProjectionMatrix; +uniform vec3 instanceOffsets[3]; +uniform vec4 va[gl_MaxVertexAttribs]; +vec4 color; + +void main (void) +{ + vec4 vertex = vec4(va[0].xy / 3.0, va[0].zw) + vec4(instanceOffsets[ID], 1.0); + color = vec4(0, 0, 0, 0); + for (int i = 1; i < gl_MaxVertexAttribs; i++) + color += va[i]; + gl_Position = gtf_ModelViewProjectionMatrix * vertex; + gl_PointSize = 1.0; +} \ No newline at end of file diff --git a/Test/baseResults/130.vert.out b/Test/baseResults/130.vert.out index e38043c60b..ee7fddef99 100644 --- a/Test/baseResults/130.vert.out +++ b/Test/baseResults/130.vert.out @@ -1,9 +1,8 @@ 130.vert -ERROR: 0:59: 'gl_InstanceID' : undeclared identifier -ERROR: 0:59: '=' : cannot convert from ' temp float' to ' temp int' +ERROR: 0:59: 'gl_InstanceID' : required extension not requested: GL_EXT_draw_instanced ERROR: 0:61: 'texelFetch' : no matching overloaded function found ERROR: 0:61: 'assign' : cannot convert from ' const float' to ' temp int' -ERROR: 4 compilation errors. No code generated. +ERROR: 3 compilation errors. No code generated. Shader version: 130 @@ -120,7 +119,11 @@ ERROR: node is still EOpNull! 0:46 0.300000 0:57 Function Definition: foo88( ( global void) 0:57 Function Parameters: -0:? Sequence +0:59 Sequence +0:59 Sequence +0:59 move second child to first child ( temp int) +0:59 'id' ( temp int) +0:59 'gl_InstanceID' ( gl_InstanceId int InstanceId) 0:61 'id' ( temp int) 0:63 'gl_ClipVertex' ( gl_ClipVertex 4-component vector of float ClipVertex) 0:64 'gl_Color' ( in 4-component vector of float Color) diff --git a/Test/baseResults/GL_EXT_draw_instanced.vert.out b/Test/baseResults/GL_EXT_draw_instanced.vert.out new file mode 100644 index 0000000000..cce01a17a0 --- /dev/null +++ b/Test/baseResults/GL_EXT_draw_instanced.vert.out @@ -0,0 +1,173 @@ +GL_EXT_draw_instanced.vert +Shader version: 120 +Requested GL_EXT_draw_instanced +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'vertex' ( temp 4-component vector of float) +0:12 add ( temp 4-component vector of float) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 divide ( temp 2-component vector of float) +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( uniform 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3.000000 +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( uniform 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 indirect index ( temp 3-component vector of float) +0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) +0:12 Constant: +0:12 1.000000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 'color' ( global 4-component vector of float) +0:13 Constant: +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp int) +0:14 'i' ( temp int) +0:14 Constant: +0:14 1 (const int) +0:14 Loop with condition tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'i' ( temp int) +0:14 Constant: +0:14 64 (const int) +0:14 Loop Body +0:15 add second child into first child ( temp 4-component vector of float) +0:15 'color' ( global 4-component vector of float) +0:15 indirect index ( temp 4-component vector of float) +0:15 'va' ( uniform 64-element array of 4-component vector of float) +0:15 'i' ( temp int) +0:14 Loop Terminal Expression +0:14 Post-Increment ( temp int) +0:14 'i' ( temp int) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'gl_Position' ( gl_Position 4-component vector of float Position) +0:16 matrix-times-vector ( temp 4-component vector of float) +0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:16 'vertex' ( temp 4-component vector of float) +0:17 move second child to first child ( temp float) +0:17 'gl_PointSize' ( gl_PointSize float PointSize) +0:17 Constant: +0:17 1.000000 +0:? Linker Objects +0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:? 'va' ( uniform 64-element array of 4-component vector of float) +0:? 'color' ( global 4-component vector of float) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 120 +Requested GL_EXT_draw_instanced +0:? Sequence +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'vertex' ( temp 4-component vector of float) +0:12 add ( temp 4-component vector of float) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 divide ( temp 2-component vector of float) +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( uniform 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 0 (const int) +0:12 Constant: +0:12 1 (const int) +0:12 Constant: +0:12 3.000000 +0:12 vector swizzle ( temp 2-component vector of float) +0:12 direct index ( temp 4-component vector of float) +0:12 'va' ( uniform 64-element array of 4-component vector of float) +0:12 Constant: +0:12 0 (const int) +0:12 Sequence +0:12 Constant: +0:12 2 (const int) +0:12 Constant: +0:12 3 (const int) +0:12 Construct vec4 ( temp 4-component vector of float) +0:12 indirect index ( temp 3-component vector of float) +0:12 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:12 'gl_InstanceID' ( gl_InstanceId int InstanceId) +0:12 Constant: +0:12 1.000000 +0:13 move second child to first child ( temp 4-component vector of float) +0:13 'color' ( global 4-component vector of float) +0:13 Constant: +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:13 0.000000 +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp int) +0:14 'i' ( temp int) +0:14 Constant: +0:14 1 (const int) +0:14 Loop with condition tested first +0:14 Loop Condition +0:14 Compare Less Than ( temp bool) +0:14 'i' ( temp int) +0:14 Constant: +0:14 64 (const int) +0:14 Loop Body +0:15 add second child into first child ( temp 4-component vector of float) +0:15 'color' ( global 4-component vector of float) +0:15 indirect index ( temp 4-component vector of float) +0:15 'va' ( uniform 64-element array of 4-component vector of float) +0:15 'i' ( temp int) +0:14 Loop Terminal Expression +0:14 Post-Increment ( temp int) +0:14 'i' ( temp int) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'gl_Position' ( gl_Position 4-component vector of float Position) +0:16 matrix-times-vector ( temp 4-component vector of float) +0:16 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:16 'vertex' ( temp 4-component vector of float) +0:17 move second child to first child ( temp float) +0:17 'gl_PointSize' ( gl_PointSize float PointSize) +0:17 Constant: +0:17 1.000000 +0:? Linker Objects +0:? 'gtf_ModelViewProjectionMatrix' ( uniform 4X4 matrix of float) +0:? 'instanceOffsets' ( uniform 3-element array of 3-component vector of float) +0:? 'va' ( uniform 64-element array of 4-component vector of float) +0:? 'color' ( global 4-component vector of float) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index b3ca656f5b..af333f3f16 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -5256,7 +5256,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangVertex].append( "int gl_VertexID;" // needs qualifier fixed later ); - if (version >= 140 && spvVersion.vulkan == 0) + if (spvVersion.vulkan == 0) stageBuiltins[EShLangVertex].append( "int gl_InstanceID;" // needs qualifier fixed later ); @@ -5311,6 +5311,7 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV stageBuiltins[EShLangVertex].append( "highp vec4 gl_Position;" // needs qualifier fixed later "mediump float gl_PointSize;" // needs qualifier fixed later + "highp int gl_InstanceID;" // needs qualifier fixed later ); } else { if (spvVersion.vulkan == 0 || spvVersion.vulkanRelaxed) @@ -7861,6 +7862,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if (spvVersion.vulkan == 0) { SpecialQualifier("gl_VertexID", EvqVertexId, EbvVertexId, symbolTable); SpecialQualifier("gl_InstanceID", EvqInstanceId, EbvInstanceId, symbolTable); + if (version < 140) + symbolTable.setVariableExtensions("gl_InstanceID", 1, &E_GL_EXT_draw_instanced); } if (spvVersion.vulkan > 0 && spvVersion.vulkanRelaxed) { diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 45deed708c..ae62f1962b 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -2855,10 +2855,9 @@ void TIntermediate::addSymbolLinkageNodes(TIntermAggregate*& linkage, EShLanguag //} if (language == EShLangVertex) { - // the names won't be found in the symbol table unless the versions are right, - // so version logic does not need to be repeated here addSymbolLinkageNode(linkage, symbolTable, "gl_VertexID"); - addSymbolLinkageNode(linkage, symbolTable, "gl_InstanceID"); + if ((version < 140 && requestedExtensions.find(E_GL_EXT_draw_instanced) != requestedExtensions.end()) || version >= 140) + addSymbolLinkageNode(linkage, symbolTable, "gl_InstanceID"); } // Add a child to the root node for the linker objects diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index ce9899ed15..694246cb8f 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -359,6 +359,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_ray_tracing_position_fetch] = EBhDisable; extensionBehavior[E_GL_EXT_shader_tile_image] = EBhDisable; extensionBehavior[E_GL_EXT_texture_shadow_lod] = EBhDisable; + extensionBehavior[E_GL_EXT_draw_instanced] = EBhDisable; extensionBehavior[E_GL_EXT_texture_array] = EBhDisable; // OVR extensions diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index b8f5300b39..475cb89341 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -215,6 +215,7 @@ const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intr const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric"; const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shader"; const char* const E_GL_EXT_opacity_micromap = "GL_EXT_opacity_micromap"; +const char* const E_GL_EXT_draw_instanced = "GL_EXT_draw_instanced"; const char* const E_GL_EXT_texture_array = "GL_EXT_texture_array"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index a6546ca665..621d4fe0b1 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -301,6 +301,7 @@ INSTANTIATE_TEST_SUITE_P( "coord_conventions.frag", "gl_FragCoord.frag", "glsl.interpOp.error.frag", + "GL_EXT_draw_instanced.vert", "overflow_underflow_toinf_0.frag", "GL_EXT_texture_array.frag", })), From db933d7743d20740e46d93e3004cca2051d309c8 Mon Sep 17 00:00:00 2001 From: Herman Semenov Date: Thu, 14 Dec 2023 15:25:26 +0000 Subject: [PATCH 372/594] Fixed check uint64 before set bool --- glslang/MachineIndependent/Constant.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 4f706cad88..ac7fc8cd1a 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -689,7 +689,7 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EOpConvInt64ToBool: newConstArray[i].setBConst(unionArray[i].getI64Const() != 0); break; case EOpConvUint64ToBool: - newConstArray[i].setBConst(unionArray[i].getI64Const() != 0); break; + newConstArray[i].setBConst(unionArray[i].getU64Const() != 0); break; case EOpConvFloat16ToBool: newConstArray[i].setBConst(unionArray[i].getDConst() != 0); break; From 5ad3d413645c1364d25a04a136617ffc3ce573d5 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Thu, 14 Dec 2023 15:34:46 -0700 Subject: [PATCH 373/594] Output 8 and 16 bit capabilities OpSpecConstantOp OpSpecConstants with 8 or 16 width types require the corresponding capabilities. Fixes #3449. --- SPIRV/SpvBuilder.cpp | 8 +++ .../spv.specConstantOp.float16.comp.out | 47 ++++++++++++++++++ .../spv.specConstantOp.int16.comp.out | 49 +++++++++++++++++++ .../spv.specConstantOp.int8.comp.out | 49 +++++++++++++++++++ Test/spv.specConstantOp.float16.comp | 18 +++++++ Test/spv.specConstantOp.int16.comp | 16 ++++++ Test/spv.specConstantOp.int8.comp | 17 +++++++ gtests/Spv.FromFile.cpp | 3 ++ 8 files changed, 207 insertions(+) create mode 100644 Test/baseResults/spv.specConstantOp.float16.comp.out create mode 100644 Test/baseResults/spv.specConstantOp.int16.comp.out create mode 100644 Test/baseResults/spv.specConstantOp.int8.comp.out create mode 100644 Test/spv.specConstantOp.float16.comp create mode 100644 Test/spv.specConstantOp.int16.comp create mode 100644 Test/spv.specConstantOp.int8.comp diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index c07f3b6705..9216817a2a 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2741,6 +2741,14 @@ Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector& op module.mapInstruction(op); constantsTypesGlobals.push_back(std::unique_ptr(op)); + // OpSpecConstantOp's using 8 or 16 bit types require the associated capability + if (containsType(typeId, OpTypeInt, 8)) + addCapability(CapabilityInt8); + if (containsType(typeId, OpTypeInt, 16)) + addCapability(CapabilityInt16); + if (containsType(typeId, OpTypeFloat, 16)) + addCapability(CapabilityFloat16); + return op->getResultId(); } diff --git a/Test/baseResults/spv.specConstantOp.float16.comp.out b/Test/baseResults/spv.specConstantOp.float16.comp.out new file mode 100644 index 0000000000..97631f14ef --- /dev/null +++ b/Test/baseResults/spv.specConstantOp.float16.comp.out @@ -0,0 +1,47 @@ +spv.specConstantOp.float16.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 18 + + Capability Shader + Capability Float16 + Capability StorageUniformBufferBlock16 + Extension "SPV_KHR_16bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + Name 4 "main" + Name 8 "S" + MemberName 8(S) 0 "p_out" + Name 10 "" + Name 14 "c" + Decorate 7 ArrayStride 2 + MemberDecorate 8(S) 0 Restrict + MemberDecorate 8(S) 0 NonReadable + MemberDecorate 8(S) 0 Offset 0 + Decorate 8(S) BufferBlock + Decorate 10 DescriptorSet 0 + Decorate 10 Binding 0 + Decorate 14(c) SpecId 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7: TypeRuntimeArray 6(float16_t) + 8(S): TypeStruct 7 + 9: TypePointer Uniform 8(S) + 10: 9(ptr) Variable Uniform + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13: TypeFloat 32 + 14(c): 13(float) SpecConstant 1090519040 + 15:6(float16_t) SpecConstantOp 115 14(c) + 16: TypePointer Uniform 6(float16_t) + 4(main): 2 Function None 3 + 5: Label + 17: 16(ptr) AccessChain 10 12 12 + Store 17 15 + Return + FunctionEnd diff --git a/Test/baseResults/spv.specConstantOp.int16.comp.out b/Test/baseResults/spv.specConstantOp.int16.comp.out new file mode 100644 index 0000000000..13049bed66 --- /dev/null +++ b/Test/baseResults/spv.specConstantOp.int16.comp.out @@ -0,0 +1,49 @@ +spv.specConstantOp.int16.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 20 + + Capability Shader + Capability Int16 + Capability StorageUniformBufferBlock16 + Extension "SPV_KHR_16bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + Name 4 "main" + Name 8 "S" + MemberName 8(S) 0 "p_out" + Name 10 "" + Name 13 "c" + Decorate 7 ArrayStride 2 + MemberDecorate 8(S) 0 Restrict + MemberDecorate 8(S) 0 NonReadable + MemberDecorate 8(S) 0 Offset 0 + Decorate 8(S) BufferBlock + Decorate 10 DescriptorSet 0 + Decorate 10 Binding 0 + Decorate 13(c) SpecId 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 16 0 + 7: TypeRuntimeArray 6(int16_t) + 8(S): TypeStruct 7 + 9: TypePointer Uniform 8(S) + 10: 9(ptr) Variable Uniform + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13(c): 11(int) SpecConstant 8 + 14: TypeInt 16 1 + 15: 14(int16_t) SpecConstantOp 114 13(c) + 16: 6(int16_t) Constant 0 + 17: 6(int16_t) SpecConstantOp 128 15 16 + 18: TypePointer Uniform 6(int16_t) + 4(main): 2 Function None 3 + 5: Label + 19: 18(ptr) AccessChain 10 12 12 + Store 19 17 + Return + FunctionEnd diff --git a/Test/baseResults/spv.specConstantOp.int8.comp.out b/Test/baseResults/spv.specConstantOp.int8.comp.out new file mode 100644 index 0000000000..1cf53014bb --- /dev/null +++ b/Test/baseResults/spv.specConstantOp.int8.comp.out @@ -0,0 +1,49 @@ +spv.specConstantOp.int8.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 20 + + Capability Shader + Capability Int8 + Capability UniformAndStorageBuffer8BitAccess + Extension "SPV_KHR_8bit_storage" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + Name 4 "main" + Name 8 "S" + MemberName 8(S) 0 "p_out" + Name 10 "" + Name 13 "c" + Decorate 7 ArrayStride 1 + MemberDecorate 8(S) 0 Restrict + MemberDecorate 8(S) 0 NonReadable + MemberDecorate 8(S) 0 Offset 0 + Decorate 8(S) BufferBlock + Decorate 10 DescriptorSet 0 + Decorate 10 Binding 0 + Decorate 13(c) SpecId 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 8 0 + 7: TypeRuntimeArray 6(int8_t) + 8(S): TypeStruct 7 + 9: TypePointer Uniform 8(S) + 10: 9(ptr) Variable Uniform + 11: TypeInt 32 1 + 12: 11(int) Constant 0 + 13(c): 11(int) SpecConstant 8 + 14: TypeInt 8 1 + 15: 14(int8_t) SpecConstantOp 114 13(c) + 16: 6(int8_t) Constant 0 + 17: 6(int8_t) SpecConstantOp 128 15 16 + 18: TypePointer Uniform 6(int8_t) + 4(main): 2 Function None 3 + 5: Label + 19: 18(ptr) AccessChain 10 12 12 + Store 19 17 + Return + FunctionEnd diff --git a/Test/spv.specConstantOp.float16.comp b/Test/spv.specConstantOp.float16.comp new file mode 100644 index 0000000000..c3db60c232 --- /dev/null +++ b/Test/spv.specConstantOp.float16.comp @@ -0,0 +1,18 @@ +#version 450 +#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require + +// Produce an OpSpecConstantOp with 8 bit integer type + +layout(constant_id = 0) const float c = 8; + +layout(binding=0) writeonly restrict buffer S { + float16_t p_out[]; +}; + +void main() +{ + p_out[0] = float16_t(c); +} + + + diff --git a/Test/spv.specConstantOp.int16.comp b/Test/spv.specConstantOp.int16.comp new file mode 100644 index 0000000000..c5078436c7 --- /dev/null +++ b/Test/spv.specConstantOp.int16.comp @@ -0,0 +1,16 @@ +#version 450 +#extension GL_EXT_shader_explicit_arithmetic_types_int16 : require + +// Produce an OpSpecConstantOp with 16 bit integer type + +layout(constant_id = 0) const int c = 8; + +layout(binding=0) writeonly restrict buffer S { + uint16_t p_out[]; +}; + +void main() +{ + p_out[0] = uint16_t(c); +} + diff --git a/Test/spv.specConstantOp.int8.comp b/Test/spv.specConstantOp.int8.comp new file mode 100644 index 0000000000..598821077b --- /dev/null +++ b/Test/spv.specConstantOp.int8.comp @@ -0,0 +1,17 @@ +#version 450 +#extension GL_EXT_shader_explicit_arithmetic_types_int8 : require + +// Produce an OpSpecConstantOp with 8 bit integer type + +layout(constant_id = 0) const int c = 8; + +layout(binding=0) writeonly restrict buffer S { + uint8_t p_out[]; +}; + +void main() +{ + p_out[0] = uint8_t(c); +} + + diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 90fb2fc668..1fd67e6f4e 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -514,6 +514,9 @@ INSTANTIATE_TEST_SUITE_P( "spv.specConstant.float16.comp", "spv.specConstant.int16.comp", "spv.specConstant.int8.comp", + "spv.specConstantOp.int16.comp", + "spv.specConstantOp.int8.comp", + "spv.specConstantOp.float16.comp", "spv.storageBuffer.vert", "spv.terminate.frag", "spv.subgroupUniformControlFlow.vert", From ffb1b07d30ab992b06f944599fd60aa75a865892 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 07:01:50 +0000 Subject: [PATCH 374/594] Bump lukka/get-cmake from 3.28.0 to 3.28.1 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.28.0 to 3.28.1. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/98fde40bf98bdc391abe7227e6b1052d9b36a22f...2654d8ee382b9b6cbbfe6487653b8629b4e062c8) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index bb6f21f4a0..e68f60ca0a 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 9ec0223892..a7ec921129 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -92,7 +92,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -124,7 +124,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -148,7 +148,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -166,7 +166,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -195,7 +195,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: @@ -221,7 +221,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@98fde40bf98bdc391abe7227e6b1052d9b36a22f # v3.28.0 + - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 with: From 89477a5db03460fa31ec4f1d83caad1bd5b50294 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 07:01:40 +0000 Subject: [PATCH 375/594] Bump actions/upload-artifact from 3.1.3 to 4.0.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.3 to 4.0.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/a8a3f3ad30e3422c9c7b888a15615d19a852ae32...c7d193f32edcb7bfad88892161225aeda64e9392) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index fe47a75bde..386719bf6b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 + uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 with: name: SARIF file path: results.sarif From c155f881eed4001f8472bd3aa7037c3e37366d67 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Dec 2023 07:01:45 +0000 Subject: [PATCH 376/594] Bump github/codeql-action from 2.22.9 to 3.22.11 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 2.22.9 to 3.22.11. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2...b374143c1149a9115d881581d29b8390bbcbb59c) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 386719bf6b..cf59ffbb72 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c0d1daa7f7e14667747d73a7dbbe8c074bc8bfe2 # v2.22.9 + uses: github/codeql-action/upload-sarif@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 with: sarif_file: results.sarif From abb79089a89a956ffc39b7c333224d8510305336 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 20 Dec 2023 14:14:24 -0700 Subject: [PATCH 377/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index e78cfb01fc..08f342a7a3 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "afaf8fda2ad0364655909b56c8b634ce89095bb5" + "commit": "f0cc85efdbbe3a46eae90e0f915dc1509836d0fc" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "e867c06631767a2d96424cbec530f9ee5e78180f" + "commit" : "1c6bb2743599e6eb6f37b2969acc0aef812e32e3" }, { "name": "googletest", From a91631b260cba3f22858d6c6827511e636c2458a Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 21 Dec 2023 10:19:11 -0700 Subject: [PATCH 378/594] Update CHANGES for release 14.0.0 --- CHANGES.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 8a97ff4f72..71db4e871e 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,34 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 14.0.0 2023-12-21 + +### Breaking changes +* The legacy libraries named HLSL and OGLCompiler have been removed. To avoid future disruptions, please use cmake's find_package mechanism rather than hardcoding library dependencies. +* Only the headers that are part of glslang's public interface are included in the install target. +* Remove OVERRIDE_MSVCCRT cmake option. + +### Other changes +* Fix spv_options initialization +* Fix line number for OpDebugFunction and OpDebugScope for function +* Fix SPV_KHR_cooperative_matrix enumerants +* Fix nullptr crash +* Fix GL_ARB_shader_storage_buffer_object version +* Fix interpolant ES error +* Generate DebugValue for constant arguments +* Overflow/underflow out-of-range floats to infinity/0.0 respectively +* Support SV_ViewID keywords for HLSL +* Implement relaxed rule for opaque struct members +* Add BUILD_WERROR cmake option +* Add GLSLANG_TESTS cmake option +* Always generate OpDebugBasicType for bool type +* Fix GLSL parsing of '#' when not preceded by space or tab +* Fix GL_ARB_bindless_texture availability +* Support GL_EXT_draw_instanced extension +* Support GL_EXT_texture_array extension +* Fix conversion of 64-bit unsigned integer constants to bool +* Output 8-bit and 16-bit capabilities when appropriate for OpSpecConstant + ## 13.1.1 2023-10-16 * Initialize compile_only field in C interface From 0ae8960087182fbda997a04aca130ec2d7720b66 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Tue, 7 Nov 2023 16:12:24 -0700 Subject: [PATCH 379/594] Use C++ containers for builtin versioning Removes some of the pointers/"end markes" used in the BuiltInFuntion versioning, replacing them with std::arrays and spans. NOTE: The span class used is a copy of the span class that has been in use in the Vulkan-ValidationLayers as a temporary solution until C++20 is available. NOTE: The std::arrays could be constexprs, but this requires some extra work pre-C++20, and is therefore not included in this change, but could be done in a follow up PR. --- glslang/MachineIndependent/Initialize.cpp | 309 +++++++++++----------- glslang/MachineIndependent/span.h | 92 +++++++ 2 files changed, 242 insertions(+), 159 deletions(-) create mode 100644 glslang/MachineIndependent/span.h diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index af333f3f16..8632d6d62f 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -52,6 +52,7 @@ // #include "Initialize.h" +#include "span.h" namespace glslang { @@ -139,20 +140,17 @@ struct Versioning { EProfile EDesktopProfile = static_cast(ENoProfile | ECoreProfile | ECompatibilityProfile); // Declare pointers to put into the table for versioning. - const Versioning Es300Desktop130Version[] = { { EEsProfile, 0, 300, 0, nullptr }, - { EDesktopProfile, 0, 130, 0, nullptr }, - { EBadProfile } }; - const Versioning* Es300Desktop130 = &Es300Desktop130Version[0]; + const std::array Es300Desktop130Version = { Versioning{ EEsProfile, 0, 300, 0, nullptr }, + Versioning{ EDesktopProfile, 0, 130, 0, nullptr }, + }; - const Versioning Es310Desktop400Version[] = { { EEsProfile, 0, 310, 0, nullptr }, - { EDesktopProfile, 0, 400, 0, nullptr }, - { EBadProfile } }; - const Versioning* Es310Desktop400 = &Es310Desktop400Version[0]; + const std::array Es310Desktop400Version = { Versioning{ EEsProfile, 0, 310, 0, nullptr }, + Versioning{ EDesktopProfile, 0, 400, 0, nullptr }, + }; - const Versioning Es310Desktop450Version[] = { { EEsProfile, 0, 310, 0, nullptr }, - { EDesktopProfile, 0, 450, 0, nullptr }, - { EBadProfile } }; - const Versioning* Es310Desktop450 = &Es310Desktop450Version[0]; + const std::array Es310Desktop450Version = { Versioning{ EEsProfile, 0, 310, 0, nullptr }, + Versioning{ EDesktopProfile, 0, 450, 0, nullptr }, + }; // The main descriptor of what a set of function prototypes can look like, and // a pointer to extra versioning information, when needed. @@ -162,7 +160,7 @@ struct BuiltInFunction { int numArguments; // number of arguments (overloads with varying arguments need different entries) ArgType types; // ArgType mask ArgClass classes; // the ways this particular function entry manifests - const Versioning* versioning; // nullptr means always a valid version + const span versioning; // An empty span means always a valid version }; // The tables can have the same built-in function name more than one time, @@ -174,151 +172,146 @@ struct BuiltInFunction { // // Table is terminated by an OpNull TOperator. -const BuiltInFunction BaseFunctions[] = { +const std::array BaseFunctions = { // TOperator, name, arg-count, ArgType, ArgClass, versioning // --------- ---- --------- ------- -------- ---------- - { EOpRadians, "radians", 1, TypeF, ClassRegular, nullptr }, - { EOpDegrees, "degrees", 1, TypeF, ClassRegular, nullptr }, - { EOpSin, "sin", 1, TypeF, ClassRegular, nullptr }, - { EOpCos, "cos", 1, TypeF, ClassRegular, nullptr }, - { EOpTan, "tan", 1, TypeF, ClassRegular, nullptr }, - { EOpAsin, "asin", 1, TypeF, ClassRegular, nullptr }, - { EOpAcos, "acos", 1, TypeF, ClassRegular, nullptr }, - { EOpAtan, "atan", 2, TypeF, ClassRegular, nullptr }, - { EOpAtan, "atan", 1, TypeF, ClassRegular, nullptr }, - { EOpPow, "pow", 2, TypeF, ClassRegular, nullptr }, - { EOpExp, "exp", 1, TypeF, ClassRegular, nullptr }, - { EOpLog, "log", 1, TypeF, ClassRegular, nullptr }, - { EOpExp2, "exp2", 1, TypeF, ClassRegular, nullptr }, - { EOpLog2, "log2", 1, TypeF, ClassRegular, nullptr }, - { EOpSqrt, "sqrt", 1, TypeF, ClassRegular, nullptr }, - { EOpInverseSqrt, "inversesqrt", 1, TypeF, ClassRegular, nullptr }, - { EOpAbs, "abs", 1, TypeF, ClassRegular, nullptr }, - { EOpSign, "sign", 1, TypeF, ClassRegular, nullptr }, - { EOpFloor, "floor", 1, TypeF, ClassRegular, nullptr }, - { EOpCeil, "ceil", 1, TypeF, ClassRegular, nullptr }, - { EOpFract, "fract", 1, TypeF, ClassRegular, nullptr }, - { EOpMod, "mod", 2, TypeF, ClassLS, nullptr }, - { EOpMin, "min", 2, TypeF, ClassLS, nullptr }, - { EOpMax, "max", 2, TypeF, ClassLS, nullptr }, - { EOpClamp, "clamp", 3, TypeF, ClassLS2, nullptr }, - { EOpMix, "mix", 3, TypeF, ClassLS, nullptr }, - { EOpStep, "step", 2, TypeF, ClassFS, nullptr }, - { EOpSmoothStep, "smoothstep", 3, TypeF, ClassFS2, nullptr }, - { EOpNormalize, "normalize", 1, TypeF, ClassRegular, nullptr }, - { EOpFaceForward, "faceforward", 3, TypeF, ClassRegular, nullptr }, - { EOpReflect, "reflect", 2, TypeF, ClassRegular, nullptr }, - { EOpRefract, "refract", 3, TypeF, ClassXLS, nullptr }, - { EOpLength, "length", 1, TypeF, ClassRS, nullptr }, - { EOpDistance, "distance", 2, TypeF, ClassRS, nullptr }, - { EOpDot, "dot", 2, TypeF, ClassRS, nullptr }, - { EOpCross, "cross", 2, TypeF, ClassV3, nullptr }, - { EOpLessThan, "lessThan", 2, TypeFI, ClassBNS, nullptr }, - { EOpLessThanEqual, "lessThanEqual", 2, TypeFI, ClassBNS, nullptr }, - { EOpGreaterThan, "greaterThan", 2, TypeFI, ClassBNS, nullptr }, - { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeFI, ClassBNS, nullptr }, - { EOpVectorEqual, "equal", 2, TypeFIB, ClassBNS, nullptr }, - { EOpVectorNotEqual, "notEqual", 2, TypeFIB, ClassBNS, nullptr }, - { EOpAny, "any", 1, TypeB, ClassRSNS, nullptr }, - { EOpAll, "all", 1, TypeB, ClassRSNS, nullptr }, - { EOpVectorLogicalNot, "not", 1, TypeB, ClassNS, nullptr }, - { EOpSinh, "sinh", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpCosh, "cosh", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpTanh, "tanh", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpAsinh, "asinh", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpAcosh, "acosh", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpAtanh, "atanh", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpAbs, "abs", 1, TypeI, ClassRegular, Es300Desktop130 }, - { EOpSign, "sign", 1, TypeI, ClassRegular, Es300Desktop130 }, - { EOpTrunc, "trunc", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpRound, "round", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpRoundEven, "roundEven", 1, TypeF, ClassRegular, Es300Desktop130 }, - { EOpModf, "modf", 2, TypeF, ClassLO, Es300Desktop130 }, - { EOpMin, "min", 2, TypeIU, ClassLS, Es300Desktop130 }, - { EOpMax, "max", 2, TypeIU, ClassLS, Es300Desktop130 }, - { EOpClamp, "clamp", 3, TypeIU, ClassLS2, Es300Desktop130 }, - { EOpMix, "mix", 3, TypeF, ClassLB, Es300Desktop130 }, - { EOpIsInf, "isinf", 1, TypeF, ClassB, Es300Desktop130 }, - { EOpIsNan, "isnan", 1, TypeF, ClassB, Es300Desktop130 }, - { EOpLessThan, "lessThan", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpLessThanEqual, "lessThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpGreaterThan, "greaterThan", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpVectorEqual, "equal", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, Es300Desktop130 }, - { EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, Es310Desktop400 }, - { EOpMix, "mix", 3, TypeB, ClassRegular, Es310Desktop450 }, - { EOpMix, "mix", 3, TypeIU, ClassLB, Es310Desktop450 }, - - { EOpNull } + BuiltInFunction{ EOpRadians, "radians", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpDegrees, "degrees", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpSin, "sin", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpCos, "cos", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpTan, "tan", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpAsin, "asin", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpAcos, "acos", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpAtan, "atan", 2, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpAtan, "atan", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpPow, "pow", 2, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpExp, "exp", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpLog, "log", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpExp2, "exp2", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpLog2, "log2", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpSqrt, "sqrt", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpInverseSqrt, "inversesqrt", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpAbs, "abs", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpSign, "sign", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpFloor, "floor", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpCeil, "ceil", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpFract, "fract", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpMod, "mod", 2, TypeF, ClassLS, {} }, + BuiltInFunction{ EOpMin, "min", 2, TypeF, ClassLS, {} }, + BuiltInFunction{ EOpMax, "max", 2, TypeF, ClassLS, {} }, + BuiltInFunction{ EOpClamp, "clamp", 3, TypeF, ClassLS2, {} }, + BuiltInFunction{ EOpMix, "mix", 3, TypeF, ClassLS, {} }, + BuiltInFunction{ EOpStep, "step", 2, TypeF, ClassFS, {} }, + BuiltInFunction{ EOpSmoothStep, "smoothstep", 3, TypeF, ClassFS2, {} }, + BuiltInFunction{ EOpNormalize, "normalize", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpFaceForward, "faceforward", 3, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpReflect, "reflect", 2, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpRefract, "refract", 3, TypeF, ClassXLS, {} }, + BuiltInFunction{ EOpLength, "length", 1, TypeF, ClassRS, {} }, + BuiltInFunction{ EOpDistance, "distance", 2, TypeF, ClassRS, {} }, + BuiltInFunction{ EOpDot, "dot", 2, TypeF, ClassRS, {} }, + BuiltInFunction{ EOpCross, "cross", 2, TypeF, ClassV3, {} }, + BuiltInFunction{ EOpLessThan, "lessThan", 2, TypeFI, ClassBNS, {} }, + BuiltInFunction{ EOpLessThanEqual, "lessThanEqual", 2, TypeFI, ClassBNS, {} }, + BuiltInFunction{ EOpGreaterThan, "greaterThan", 2, TypeFI, ClassBNS, {} }, + BuiltInFunction{ EOpGreaterThanEqual, "greaterThanEqual", 2, TypeFI, ClassBNS, {} }, + BuiltInFunction{ EOpVectorEqual, "equal", 2, TypeFIB, ClassBNS, {} }, + BuiltInFunction{ EOpVectorNotEqual, "notEqual", 2, TypeFIB, ClassBNS, {} }, + BuiltInFunction{ EOpAny, "any", 1, TypeB, ClassRSNS, {} }, + BuiltInFunction{ EOpAll, "all", 1, TypeB, ClassRSNS, {} }, + BuiltInFunction{ EOpVectorLogicalNot, "not", 1, TypeB, ClassNS, {} }, + BuiltInFunction{ EOpSinh, "sinh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpCosh, "cosh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpTanh, "tanh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpAsinh, "asinh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpAcosh, "acosh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpAtanh, "atanh", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpAbs, "abs", 1, TypeI, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpSign, "sign", 1, TypeI, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpTrunc, "trunc", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpRound, "round", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpRoundEven, "roundEven", 1, TypeF, ClassRegular, {Es300Desktop130Version} }, + BuiltInFunction{ EOpModf, "modf", 2, TypeF, ClassLO, {Es300Desktop130Version} }, + BuiltInFunction{ EOpMin, "min", 2, TypeIU, ClassLS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpMax, "max", 2, TypeIU, ClassLS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpClamp, "clamp", 3, TypeIU, ClassLS2, {Es300Desktop130Version} }, + BuiltInFunction{ EOpMix, "mix", 3, TypeF, ClassLB, {Es300Desktop130Version} }, + BuiltInFunction{ EOpIsInf, "isinf", 1, TypeF, ClassB, {Es300Desktop130Version} }, + BuiltInFunction{ EOpIsNan, "isnan", 1, TypeF, ClassB, {Es300Desktop130Version} }, + BuiltInFunction{ EOpLessThan, "lessThan", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpLessThanEqual, "lessThanEqual", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpGreaterThan, "greaterThan", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpGreaterThanEqual, "greaterThanEqual", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpVectorEqual, "equal", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpVectorNotEqual, "notEqual", 2, TypeU, ClassBNS, {Es300Desktop130Version} }, + BuiltInFunction{ EOpAtomicAdd, "atomicAdd", 2, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpAtomicMin, "atomicMin", 2, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpAtomicMax, "atomicMax", 2, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpAtomicAnd, "atomicAnd", 2, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpAtomicOr, "atomicOr", 2, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpAtomicXor, "atomicXor", 2, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpAtomicExchange, "atomicExchange", 2, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpAtomicCompSwap, "atomicCompSwap", 3, TypeIU, ClassV1FIOCV, {Es310Desktop400Version} }, + BuiltInFunction{ EOpMix, "mix", 3, TypeB, ClassRegular, {Es310Desktop450Version} }, + BuiltInFunction{ EOpMix, "mix", 3, TypeIU, ClassLB, {Es310Desktop450Version} }, }; -const BuiltInFunction DerivativeFunctions[] = { - { EOpDPdx, "dFdx", 1, TypeF, ClassRegular, nullptr }, - { EOpDPdy, "dFdy", 1, TypeF, ClassRegular, nullptr }, - { EOpFwidth, "fwidth", 1, TypeF, ClassRegular, nullptr }, - { EOpNull } +const std::array DerivativeFunctions = { + BuiltInFunction{ EOpDPdx, "dFdx", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpDPdy, "dFdy", 1, TypeF, ClassRegular, {} }, + BuiltInFunction{ EOpFwidth, "fwidth", 1, TypeF, ClassRegular, {} }, }; // For functions declared some other way, but still use the table to relate to operator. struct CustomFunction { TOperator op; // operator to map the name to const char* name; // function name - const Versioning* versioning; // nullptr means always a valid version + const span versioning; // An empty span means always a valid version }; const CustomFunction CustomFunctions[] = { - { EOpBarrier, "barrier", nullptr }, - { EOpMemoryBarrierShared, "memoryBarrierShared", nullptr }, - { EOpGroupMemoryBarrier, "groupMemoryBarrier", nullptr }, - { EOpMemoryBarrier, "memoryBarrier", nullptr }, - { EOpMemoryBarrierBuffer, "memoryBarrierBuffer", nullptr }, - - { EOpPackSnorm2x16, "packSnorm2x16", nullptr }, - { EOpUnpackSnorm2x16, "unpackSnorm2x16", nullptr }, - { EOpPackUnorm2x16, "packUnorm2x16", nullptr }, - { EOpUnpackUnorm2x16, "unpackUnorm2x16", nullptr }, - { EOpPackHalf2x16, "packHalf2x16", nullptr }, - { EOpUnpackHalf2x16, "unpackHalf2x16", nullptr }, - - { EOpMul, "matrixCompMult", nullptr }, - { EOpOuterProduct, "outerProduct", nullptr }, - { EOpTranspose, "transpose", nullptr }, - { EOpDeterminant, "determinant", nullptr }, - { EOpMatrixInverse, "inverse", nullptr }, - { EOpFloatBitsToInt, "floatBitsToInt", nullptr }, - { EOpFloatBitsToUint, "floatBitsToUint", nullptr }, - { EOpIntBitsToFloat, "intBitsToFloat", nullptr }, - { EOpUintBitsToFloat, "uintBitsToFloat", nullptr }, - - { EOpTextureQuerySize, "textureSize", nullptr }, - { EOpTextureQueryLod, "textureQueryLod", nullptr }, - { EOpTextureQueryLod, "textureQueryLOD", nullptr }, // extension GL_ARB_texture_query_lod - { EOpTextureQueryLevels, "textureQueryLevels", nullptr }, - { EOpTextureQuerySamples, "textureSamples", nullptr }, - { EOpTexture, "texture", nullptr }, - { EOpTextureProj, "textureProj", nullptr }, - { EOpTextureLod, "textureLod", nullptr }, - { EOpTextureOffset, "textureOffset", nullptr }, - { EOpTextureFetch, "texelFetch", nullptr }, - { EOpTextureFetchOffset, "texelFetchOffset", nullptr }, - { EOpTextureProjOffset, "textureProjOffset", nullptr }, - { EOpTextureLodOffset, "textureLodOffset", nullptr }, - { EOpTextureProjLod, "textureProjLod", nullptr }, - { EOpTextureProjLodOffset, "textureProjLodOffset", nullptr }, - { EOpTextureGrad, "textureGrad", nullptr }, - { EOpTextureGradOffset, "textureGradOffset", nullptr }, - { EOpTextureProjGrad, "textureProjGrad", nullptr }, - { EOpTextureProjGradOffset, "textureProjGradOffset", nullptr }, - - { EOpNull } + { EOpBarrier, "barrier", {} }, + { EOpMemoryBarrierShared, "memoryBarrierShared", {} }, + { EOpGroupMemoryBarrier, "groupMemoryBarrier", {} }, + { EOpMemoryBarrier, "memoryBarrier", {} }, + { EOpMemoryBarrierBuffer, "memoryBarrierBuffer", {} }, + + { EOpPackSnorm2x16, "packSnorm2x16", {} }, + { EOpUnpackSnorm2x16, "unpackSnorm2x16", {} }, + { EOpPackUnorm2x16, "packUnorm2x16", {} }, + { EOpUnpackUnorm2x16, "unpackUnorm2x16", {} }, + { EOpPackHalf2x16, "packHalf2x16", {} }, + { EOpUnpackHalf2x16, "unpackHalf2x16", {} }, + + { EOpMul, "matrixCompMult", {} }, + { EOpOuterProduct, "outerProduct", {} }, + { EOpTranspose, "transpose", {} }, + { EOpDeterminant, "determinant", {} }, + { EOpMatrixInverse, "inverse", {} }, + { EOpFloatBitsToInt, "floatBitsToInt", {} }, + { EOpFloatBitsToUint, "floatBitsToUint", {} }, + { EOpIntBitsToFloat, "intBitsToFloat", {} }, + { EOpUintBitsToFloat, "uintBitsToFloat", {} }, + + { EOpTextureQuerySize, "textureSize", {} }, + { EOpTextureQueryLod, "textureQueryLod", {} }, + { EOpTextureQueryLod, "textureQueryLOD", {} }, // extension GL_ARB_texture_query_lod + { EOpTextureQueryLevels, "textureQueryLevels", {} }, + { EOpTextureQuerySamples, "textureSamples", {} }, + { EOpTexture, "texture", {} }, + { EOpTextureProj, "textureProj", {} }, + { EOpTextureLod, "textureLod", {} }, + { EOpTextureOffset, "textureOffset", {} }, + { EOpTextureFetch, "texelFetch", {} }, + { EOpTextureFetchOffset, "texelFetchOffset", {} }, + { EOpTextureProjOffset, "textureProjOffset", {} }, + { EOpTextureLodOffset, "textureLodOffset", {} }, + { EOpTextureProjLod, "textureProjLod", {} }, + { EOpTextureProjLodOffset, "textureProjLodOffset", {} }, + { EOpTextureGrad, "textureGrad", {} }, + { EOpTextureGradOffset, "textureGradOffset", {} }, + { EOpTextureProjGrad, "textureProjGrad", {} }, + { EOpTextureProjGradOffset, "textureProjGradOffset", {} }, }; // For the given table of functions, add all the indicated prototypes for each @@ -403,13 +396,13 @@ void AddTabledBuiltin(TString& decls, const BuiltInFunction& function) bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile, const SpvVersion& /* spVersion */) { // nullptr means always valid - if (function.versioning == nullptr) + if (function.versioning.empty()) return true; // check for what is said about our current profile - for (const Versioning* v = function.versioning; v->profiles != EBadProfile; ++v) { - if ((v->profiles & profile) != 0) { - if (v->minCoreVersion <= version || (v->numExtensions > 0 && v->minExtendedVersion <= version)) + for (const auto& v : function.versioning) { + if ((v.profiles & profile) != 0) { + if (v.minCoreVersion <= version || (v.numExtensions > 0 && v.minExtendedVersion <= version)) return true; } } @@ -422,12 +415,11 @@ bool ValidVersion(const BuiltInFunction& function, int version, EProfile profile // called once per stage). This is a performance issue only, not a correctness // concern. It is done for quality arising from simplicity, as there are subtleties // to get correct if instead trying to do it surgically. -template -void RelateTabledBuiltins(const FunctionT* functions, TSymbolTable& symbolTable) +template +void RelateTabledBuiltins(const FunctionContainer& functions, TSymbolTable& symbolTable) { - while (functions->op != EOpNull) { - symbolTable.relateToOperator(functions->name, functions->op); - ++functions; + for (const auto& fn : functions) { + symbolTable.relateToOperator(fn.name, fn.op); } } @@ -436,11 +428,10 @@ void RelateTabledBuiltins(const FunctionT* functions, TSymbolTable& symbolTable) // Add declarations for all tables of built-in functions. void TBuiltIns::addTabledBuiltins(int version, EProfile profile, const SpvVersion& spvVersion) { - const auto forEachFunction = [&](TString& decls, const BuiltInFunction* function) { - while (function->op != EOpNull) { - if (ValidVersion(*function, version, profile, spvVersion)) - AddTabledBuiltin(decls, *function); - ++function; + const auto forEachFunction = [&](TString& decls, const span& functions) { + for (const auto& fn : functions) { + if (ValidVersion(fn, version, profile, spvVersion)) + AddTabledBuiltin(decls, fn); } }; diff --git a/glslang/MachineIndependent/span.h b/glslang/MachineIndependent/span.h new file mode 100644 index 0000000000..bd705fead1 --- /dev/null +++ b/glslang/MachineIndependent/span.h @@ -0,0 +1,92 @@ +#pragma once + +// +// Copyright (C) 2023 LunarG, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + +// Partial implementation of std::span for C++11 +// Replace with std::span if repo standard is bumped to C++20 +// +// This code was copied from https://github.com/KhronosGroup/Vulkan-ValidationLayers/blob/main/layers/containers/custom_containers.h +template +class span { + public: + using pointer = T *; + using const_pointer = T const *; + using iterator = pointer; + using const_iterator = const_pointer; + + span() = default; + span(pointer start, size_t n) : data_(start), count_(n) {} + template + span(Iterator start, Iterator end) : data_(&(*start)), count_(end - start) {} + template + span(Container &c) : data_(c.data()), count_(c.size()) {} + + iterator begin() { return data_; } + const_iterator begin() const { return data_; } + + iterator end() { return data_ + count_; } + const_iterator end() const { return data_ + count_; } + + T &operator[](int i) { return data_[i]; } + const T &operator[](int i) const { return data_[i]; } + + T &front() { return *data_; } + const T &front() const { return *data_; } + + T &back() { return *(data_ + (count_ - 1)); } + const T &back() const { return *(data_ + (count_ - 1)); } + + size_t size() const { return count_; } + bool empty() const { return count_ == 0; } + + pointer data() { return data_; } + const_pointer data() const { return data_; } + + private: + pointer data_ = {}; + size_t count_ = 0; +}; + +// +// Allow type inference that using the constructor doesn't allow in C++11 +template +span make_span(T *begin, size_t count) { + return span(begin, count); +} +template +span make_span(T *begin, T *end) { + return make_span(begin, end); +} From 809fd43ed62d0b3b7827fcd6913db03588f58b08 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Sat, 23 Dec 2023 20:40:35 -0700 Subject: [PATCH 380/594] Fix MinGW build --- glslang/MachineIndependent/Initialize.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8632d6d62f..39f5a24301 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -51,6 +51,7 @@ // including identifying what extensions are needed if a version does not allow a symbol // +#include #include "Initialize.h" #include "span.h" From 89824a83b7699224eb332dc26d8e230b43ebb74f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Dec 2023 06:17:50 +0000 Subject: [PATCH 381/594] Bump github/codeql-action from 3.22.11 to 3.22.12 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.22.11 to 3.22.12. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b374143c1149a9115d881581d29b8390bbcbb59c...012739e5082ff0c22ca6d6ab32e07c36df03c4a4) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index cf59ffbb72..872ea13fe3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b374143c1149a9115d881581d29b8390bbcbb59c # v3.22.11 + uses: github/codeql-action/upload-sarif@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 with: sarif_file: results.sarif From e17ecb0e8044de9e3982516c903bf631a30197a1 Mon Sep 17 00:00:00 2001 From: Sajjad Mirza <90873047+sajjadmirzanv@users.noreply.github.com> Date: Thu, 28 Dec 2023 08:00:37 -0800 Subject: [PATCH 382/594] Emit DebugTypePointer when non-semantic debug info is enabled --- SPIRV/SpvBuilder.cpp | 33 + SPIRV/SpvBuilder.h | 1 + .../spv.debuginfo.bufferref.glsl.frag.out | 233 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 2330 +++++++++-------- Test/baseResults/spv.debuginfo.glsl.frag.out | 2108 +++++++-------- Test/baseResults/spv.debuginfo.glsl.geom.out | 629 ++--- Test/baseResults/spv.debuginfo.glsl.tesc.out | 1335 +++++----- Test/baseResults/spv.debuginfo.glsl.tese.out | 804 +++--- Test/baseResults/spv.debuginfo.glsl.vert.out | 994 +++---- Test/baseResults/spv.debuginfo.hlsl.comp.out | 2323 ++++++++-------- Test/baseResults/spv.debuginfo.hlsl.frag.out | 2186 ++++++++-------- Test/baseResults/spv.debuginfo.hlsl.geom.out | 853 +++--- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 1729 ++++++------ Test/baseResults/spv.debuginfo.hlsl.tese.out | 1131 ++++---- Test/baseResults/spv.debuginfo.hlsl.vert.out | 1124 ++++---- .../spv.debuginfo.scalar_types.glsl.frag.out | 286 +- 16 files changed, 9174 insertions(+), 8925 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 9216817a2a..b6752d2d74 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -242,6 +242,11 @@ Id Builder::makePointer(StorageClass storageClass, Id pointee) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) { + const Id debugResultId = makePointerDebugType(storageClass, pointee); + debugId[type->getResultId()] = debugResultId; + } + return type->getResultId(); } @@ -1070,6 +1075,34 @@ Id Builder::makeCompositeDebugType(std::vector const& memberTypes, char cons return type->getResultId(); } +Id Builder::makePointerDebugType(StorageClass storageClass, Id const baseType) +{ + const Id debugBaseType = debugId[baseType]; + if (!debugBaseType) { + return makeDebugInfoNone(); + } + const Id scID = makeUintConstant(storageClass); + for (Instruction* otherType : groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypePointer]) { + if (otherType->getIdOperand(2) == debugBaseType && + otherType->getIdOperand(3) == scID) { + return otherType->getResultId(); + } + } + + Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypePointer); + type->addIdOperand(debugBaseType); + type->addIdOperand(scID); + type->addIdOperand(makeUintConstant(0)); + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypePointer].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + Id Builder::makeDebugSource(const Id fileName) { if (debugSourceId.find(fileName) != debugSourceId.end()) return debugSourceId[fileName]; diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index b1ca6ce1f7..dac5881b5b 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -226,6 +226,7 @@ class Builder { Id makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTypeLoc); Id makeCompositeDebugType(std::vector const& memberTypes, char const*const name, NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false); + Id makePointerDebugType(StorageClass storageClass, Id const baseType); Id makeDebugSource(const Id fileName); Id makeDebugCompilationUnit(); Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable); diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index f196fb0b5a..92031461a8 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.bufferref.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 132 +// Id's are bound by 143 Capability Shader Capability PhysicalStorageBufferAddressesEXT @@ -11,7 +11,7 @@ spv.debuginfo.bufferref.glsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 - EntryPoint Fragment 14 "main" 70 123 + EntryPoint Fragment 14 "main" 75 134 ExecutionMode 14 OriginUpperLeft 1: String "" 8: String "uint" @@ -28,42 +28,42 @@ spv.debuginfo.bufferref.glsl.frag 34: String "float" 40: String "data" 44: String "MeshVertexPositions" - 48: String "meshData" - 60: String "PerPass_meshes" - 64: String "perPass_meshes" - 66: String "int" - 72: String "tri_idx0" - 87: String "vertex_pos0" - 125: String "out_fragColor" + 50: String "meshData" + 62: String "PerPass_meshes" + 68: String "perPass_meshes" + 70: String "int" + 77: String "tri_idx0" + 95: String "vertex_pos0" + 136: String "out_fragColor" SourceExtension "GL_EXT_buffer_reference" Name 14 "main" Name 30 "Mesh" MemberName 30(Mesh) 0 "positions" Name 38 "MeshVertexPositions" MemberName 38(MeshVertexPositions) 0 "data" - Name 46 "meshData" - Name 51 "Mesh" - MemberName 51(Mesh) 0 "positions" - Name 55 "PerPass_meshes" - MemberName 55(PerPass_meshes) 0 "data" - Name 62 "perPass_meshes" - Name 70 "tri_idx0" - Name 85 "vertex_pos0" - Name 123 "out_fragColor" + Name 48 "meshData" + Name 53 "Mesh" + MemberName 53(Mesh) 0 "positions" + Name 57 "PerPass_meshes" + MemberName 57(PerPass_meshes) 0 "data" + Name 66 "perPass_meshes" + Name 75 "tri_idx0" + Name 93 "vertex_pos0" + Name 134 "out_fragColor" Decorate 36 ArrayStride 4 MemberDecorate 38(MeshVertexPositions) 0 Offset 0 Decorate 38(MeshVertexPositions) Block - MemberDecorate 51(Mesh) 0 Offset 0 - Decorate 53 ArrayStride 8 - MemberDecorate 55(PerPass_meshes) 0 NonWritable - MemberDecorate 55(PerPass_meshes) 0 Offset 0 - Decorate 55(PerPass_meshes) Block - Decorate 62(perPass_meshes) DescriptorSet 0 - Decorate 62(perPass_meshes) Binding 0 - Decorate 70(tri_idx0) Flat - Decorate 70(tri_idx0) Location 0 - Decorate 123(out_fragColor) Location 0 - Decorate 46(meshData) DecorationAliasedPointerEXT + MemberDecorate 53(Mesh) 0 Offset 0 + Decorate 55 ArrayStride 8 + MemberDecorate 57(PerPass_meshes) 0 NonWritable + MemberDecorate 57(PerPass_meshes) 0 Offset 0 + Decorate 57(PerPass_meshes) Block + Decorate 66(perPass_meshes) DescriptorSet 0 + Decorate 66(perPass_meshes) Binding 0 + Decorate 75(tri_idx0) Flat + Decorate 75(tri_idx0) Location 0 + Decorate 134(out_fragColor) Location 0 + Decorate 48(meshData) DecorationAliasedPointerEXT 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -95,93 +95,104 @@ spv.debuginfo.bufferref.glsl.frag 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 44 22 18 28 12 21 44 12 13 39 29: TypePointer PhysicalStorageBufferEXT 38(MeshVertexPositions) 45: TypePointer Function 30(Mesh) - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 31 18 28 12 17 23 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 51(Mesh): TypeStruct 29(ptr) - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 32 22 18 28 12 21 32 12 13 - 53: TypeRuntimeArray 51(Mesh) - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 52 12 -55(PerPass_meshes): TypeStruct 53 - 57: 7(int) Constant 13 - 58: 7(int) Constant 8 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 54 18 57 58 12 12 13 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 22 18 28 12 21 60 12 13 56 - 61: TypePointer StorageBuffer 55(PerPass_meshes) -62(perPass_meshes): 61(ptr) Variable StorageBuffer - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 64 59 18 28 12 21 64 62(perPass_meshes) 58 - 65: TypeInt 32 1 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 66 10 23 12 - 68: 65(int) Constant 0 - 69: TypePointer Input 7(int) - 70(tri_idx0): 69(ptr) Variable Input - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 72 9 18 28 12 21 72 70(tri_idx0) 58 - 74: TypePointer StorageBuffer 51(Mesh) - 78: TypePointer Function 29(ptr) - 81: 7(int) Constant 23 - 82: TypeVector 33(float) 3 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 13 - 84: TypePointer Function 82(fvec3) - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 83 18 81 12 17 23 - 90: 7(int) Constant 25 - 96: TypePointer PhysicalStorageBufferEXT 33(float) - 100: 7(int) Constant 24 - 119: 7(int) Constant 27 - 120: TypeVector 33(float) 4 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 23 - 122: TypePointer Output 120(fvec4) -123(out_fragColor): 122(ptr) Variable Output - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 121 18 119 12 21 125 123(out_fragColor) 58 - 127: 33(float) Constant 1065353216 + 46: 7(int) Constant 7 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 46 12 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 31 18 28 12 17 23 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 53(Mesh): TypeStruct 29(ptr) + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 32 22 18 28 12 21 32 12 13 + 55: TypeRuntimeArray 53(Mesh) + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 54 12 +57(PerPass_meshes): TypeStruct 55 + 59: 7(int) Constant 13 + 60: 7(int) Constant 8 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 56 18 59 60 12 12 13 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 62 22 18 28 12 21 62 12 13 58 + 63: TypePointer StorageBuffer 57(PerPass_meshes) + 64: 7(int) Constant 12 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 64 12 +66(perPass_meshes): 63(ptr) Variable StorageBuffer + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 61 18 28 12 21 68 66(perPass_meshes) 60 + 69: TypeInt 32 1 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 70 10 23 12 + 72: 69(int) Constant 0 + 73: TypePointer Input 7(int) + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 + 75(tri_idx0): 73(ptr) Variable Input + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 9 18 28 12 21 77 75(tri_idx0) 60 + 79: TypePointer StorageBuffer 53(Mesh) + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 54 64 12 + 84: TypePointer Function 29(ptr) + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 88: 7(int) Constant 23 + 89: TypeVector 33(float) 3 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 13 + 91: TypePointer Function 89(fvec3) + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 46 12 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 95 90 18 88 12 17 23 + 98: 7(int) Constant 25 + 104: TypePointer PhysicalStorageBufferEXT 33(float) + 105: 7(int) Constant 5349 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 35 105 12 + 110: 7(int) Constant 24 + 129: 7(int) Constant 27 + 130: TypeVector 33(float) 4 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 23 + 132: TypePointer Output 130(fvec4) + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 131 13 12 +134(out_fragColor): 132(ptr) Variable Output + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 131 18 129 12 21 136 134(out_fragColor) 60 + 138: 33(float) Constant 1065353216 Line 1 20 11 14(main): 4 Function None 5 15: Label - 46(meshData): 45(ptr) Variable Function - 85(vertex_pos0): 84(ptr) Variable Function + 48(meshData): 45(ptr) Variable Function + 93(vertex_pos0): 91(ptr) Variable Function 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 46(meshData) 50 - 73: 7(int) Load 70(tri_idx0) - 75: 74(ptr) AccessChain 62(perPass_meshes) 68 73 - 76: 51(Mesh) Load 75 - 77: 29(ptr) CompositeExtract 76 0 - 79: 78(ptr) AccessChain 46(meshData) 68 - Store 79 77 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 85(vertex_pos0) 50 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 90 90 12 12 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 - 92: 78(ptr) AccessChain 46(meshData) 68 - 93: 29(ptr) Load 92 - 94: 7(int) Load 70(tri_idx0) - 95: 7(int) IMul 13 94 - 97: 96(ptr) AccessChain 93 68 95 - 98: 33(float) Load 97 Aligned 4 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 100 100 12 12 - 101: 78(ptr) AccessChain 46(meshData) 68 - 102: 29(ptr) Load 101 - 103: 7(int) Load 70(tri_idx0) - 104: 7(int) IMul 13 103 - 105: 7(int) IAdd 104 22 - 106: 96(ptr) AccessChain 102 68 105 - 107: 33(float) Load 106 Aligned 4 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 90 90 12 12 - 109: 78(ptr) AccessChain 46(meshData) 68 - 110: 29(ptr) Load 109 - 111: 7(int) Load 70(tri_idx0) - 112: 7(int) IMul 13 111 - 113: 7(int) IAdd 112 24 - 114: 96(ptr) AccessChain 110 68 113 - 115: 33(float) Load 114 Aligned 4 - 116: 82(fvec3) CompositeConstruct 98 107 115 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 - Store 85(vertex_pos0) 116 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 119 119 12 12 - 126: 82(fvec3) Load 85(vertex_pos0) - 128: 33(float) CompositeExtract 126 0 - 129: 33(float) CompositeExtract 126 1 - 130: 33(float) CompositeExtract 126 2 - 131: 120(fvec4) CompositeConstruct 128 129 130 127 - Store 123(out_fragColor) 131 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 48(meshData) 52 + 78: 7(int) Load 75(tri_idx0) + 81: 79(ptr) AccessChain 66(perPass_meshes) 72 78 + 82: 53(Mesh) Load 81 + 83: 29(ptr) CompositeExtract 82 0 + 86: 84(ptr) AccessChain 48(meshData) 72 + Store 86 83 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 88 88 12 12 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 94 93(vertex_pos0) 52 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 98 98 12 12 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 88 88 12 12 + 100: 84(ptr) AccessChain 48(meshData) 72 + 101: 29(ptr) Load 100 + 102: 7(int) Load 75(tri_idx0) + 103: 7(int) IMul 13 102 + 107: 104(ptr) AccessChain 101 72 103 + 108: 33(float) Load 107 Aligned 4 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 110 110 12 12 + 111: 84(ptr) AccessChain 48(meshData) 72 + 112: 29(ptr) Load 111 + 113: 7(int) Load 75(tri_idx0) + 114: 7(int) IMul 13 113 + 115: 7(int) IAdd 114 22 + 116: 104(ptr) AccessChain 112 72 115 + 117: 33(float) Load 116 Aligned 4 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 98 98 12 12 + 119: 84(ptr) AccessChain 48(meshData) 72 + 120: 29(ptr) Load 119 + 121: 7(int) Load 75(tri_idx0) + 122: 7(int) IMul 13 121 + 123: 7(int) IAdd 122 24 + 124: 104(ptr) AccessChain 120 72 123 + 125: 33(float) Load 124 Aligned 4 + 126: 89(fvec3) CompositeConstruct 108 117 125 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 88 88 12 12 + Store 93(vertex_pos0) 126 + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 129 129 12 12 + 137: 89(fvec3) Load 93(vertex_pos0) + 139: 33(float) CompositeExtract 137 0 + 140: 33(float) CompositeExtract 137 1 + 141: 33(float) CompositeExtract 137 2 + 142: 130(fvec4) CompositeConstruct 139 140 141 138 + Store 134(out_fragColor) 142 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index ab5d83971e..962c99f423 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,20 +1,20 @@ spv.debuginfo.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 950 +// Id's are bound by 964 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 14 "main" 126 + EntryPoint GLCompute 14 "main" 132 ExecutionMode 14 LocalSize 10 10 1 1: String "" 8: String "uint" 17: String "float" - 30: String "springForce" - 33: String "// OpModuleProcessed auto-map-locations + 33: String "springForce" + 36: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -22,142 +22,142 @@ spv.debuginfo.glsl.comp // OpModuleProcessed entry-point main #line 1 " - 42: String "p0" - 46: String "p1" - 49: String "restDist" - 51: String "main" - 60: String "dist" - 72: String "int" - 78: String "sphereRadius" - 89: String "gravity" - 94: String "particleCount" - 97: String "UBO" - 101: String "params" - 123: String "id" - 128: String "gl_GlobalInvocationID" - 135: String "index" - 158: String "bool" - 172: String "normal" - 178: String "pinned" - 180: String "Particle" - 185: String "particleIn" - 189: String "ParticleIn" - 209: String "particleOut" - 212: String "ParticleOut" - 237: String "force" - 250: String "pos" - 260: String "vel" - 560: String "f" - 609: String "sphereDist" - 661: String "calculateNormals" - 664: String "PushConsts" - 668: String "pushConsts" - 702: String "a" - 715: String "b" - 732: String "c" + 45: String "p0" + 49: String "p1" + 52: String "restDist" + 54: String "main" + 63: String "dist" + 75: String "int" + 81: String "sphereRadius" + 92: String "gravity" + 96: String "particleCount" + 99: String "UBO" + 104: String "params" + 128: String "id" + 134: String "gl_GlobalInvocationID" + 142: String "index" + 166: String "bool" + 180: String "normal" + 186: String "pinned" + 188: String "Particle" + 193: String "particleIn" + 197: String "ParticleIn" + 218: String "particleOut" + 221: String "ParticleOut" + 248: String "force" + 261: String "pos" + 271: String "vel" + 571: String "f" + 620: String "sphereDist" + 672: String "calculateNormals" + 675: String "PushConsts" + 681: String "pushConsts" + 716: String "a" + 729: String "b" + 746: String "c" Name 14 "main" - Name 28 "springForce(vf3;vf3;f1;" - Name 25 "p0" - Name 26 "p1" - Name 27 "restDist" - Name 58 "dist" - Name 76 "UBO" - MemberName 76(UBO) 0 "deltaT" - MemberName 76(UBO) 1 "particleMass" - MemberName 76(UBO) 2 "springStiffness" - MemberName 76(UBO) 3 "damping" - MemberName 76(UBO) 4 "restDistH" - MemberName 76(UBO) 5 "restDistV" - MemberName 76(UBO) 6 "restDistD" - MemberName 76(UBO) 7 "sphereRadius" - MemberName 76(UBO) 8 "spherePos" - MemberName 76(UBO) 9 "gravity" - MemberName 76(UBO) 10 "particleCount" - Name 99 "params" - Name 121 "id" - Name 126 "gl_GlobalInvocationID" - Name 133 "index" - Name 170 "Particle" - MemberName 170(Particle) 0 "pos" - MemberName 170(Particle) 1 "vel" - MemberName 170(Particle) 2 "uv" - MemberName 170(Particle) 3 "normal" - MemberName 170(Particle) 4 "pinned" - Name 183 "ParticleIn" - MemberName 183(ParticleIn) 0 "particleIn" - Name 191 "" - Name 207 "ParticleOut" - MemberName 207(ParticleOut) 0 "particleOut" - Name 214 "" - Name 235 "force" - Name 248 "pos" - Name 258 "vel" - Name 278 "param" - Name 282 "param" - Name 284 "param" - Name 307 "param" - Name 311 "param" - Name 313 "param" - Name 340 "param" - Name 344 "param" - Name 346 "param" - Name 368 "param" - Name 372 "param" - Name 374 "param" - Name 410 "param" - Name 414 "param" - Name 416 "param" - Name 447 "param" - Name 451 "param" - Name 453 "param" - Name 492 "param" - Name 496 "param" - Name 498 "param" - Name 533 "param" - Name 537 "param" - Name 539 "param" - Name 558 "f" - Name 607 "sphereDist" - Name 659 "PushConsts" - MemberName 659(PushConsts) 0 "calculateNormals" - Name 666 "pushConsts" - Name 678 "normal" - Name 700 "a" - Name 713 "b" - Name 730 "c" - MemberDecorate 76(UBO) 0 Offset 0 - MemberDecorate 76(UBO) 1 Offset 4 - MemberDecorate 76(UBO) 2 Offset 8 - MemberDecorate 76(UBO) 3 Offset 12 - MemberDecorate 76(UBO) 4 Offset 16 - MemberDecorate 76(UBO) 5 Offset 20 - MemberDecorate 76(UBO) 6 Offset 24 - MemberDecorate 76(UBO) 7 Offset 28 - MemberDecorate 76(UBO) 8 Offset 32 - MemberDecorate 76(UBO) 9 Offset 48 - MemberDecorate 76(UBO) 10 Offset 64 - Decorate 76(UBO) Block - Decorate 99(params) DescriptorSet 0 - Decorate 99(params) Binding 2 - Decorate 126(gl_GlobalInvocationID) BuiltIn GlobalInvocationId - MemberDecorate 170(Particle) 0 Offset 0 - MemberDecorate 170(Particle) 1 Offset 16 - MemberDecorate 170(Particle) 2 Offset 32 - MemberDecorate 170(Particle) 3 Offset 48 - MemberDecorate 170(Particle) 4 Offset 64 - Decorate 181 ArrayStride 80 - MemberDecorate 183(ParticleIn) 0 Offset 0 - Decorate 183(ParticleIn) BufferBlock - Decorate 191 DescriptorSet 0 - Decorate 191 Binding 0 - Decorate 205 ArrayStride 80 - MemberDecorate 207(ParticleOut) 0 Offset 0 - Decorate 207(ParticleOut) BufferBlock - Decorate 214 DescriptorSet 0 - Decorate 214 Binding 1 - MemberDecorate 659(PushConsts) 0 Offset 0 - Decorate 659(PushConsts) Block - Decorate 949 BuiltIn WorkgroupSize + Name 31 "springForce(vf3;vf3;f1;" + Name 28 "p0" + Name 29 "p1" + Name 30 "restDist" + Name 61 "dist" + Name 79 "UBO" + MemberName 79(UBO) 0 "deltaT" + MemberName 79(UBO) 1 "particleMass" + MemberName 79(UBO) 2 "springStiffness" + MemberName 79(UBO) 3 "damping" + MemberName 79(UBO) 4 "restDistH" + MemberName 79(UBO) 5 "restDistV" + MemberName 79(UBO) 6 "restDistD" + MemberName 79(UBO) 7 "sphereRadius" + MemberName 79(UBO) 8 "spherePos" + MemberName 79(UBO) 9 "gravity" + MemberName 79(UBO) 10 "particleCount" + Name 102 "params" + Name 126 "id" + Name 132 "gl_GlobalInvocationID" + Name 140 "index" + Name 178 "Particle" + MemberName 178(Particle) 0 "pos" + MemberName 178(Particle) 1 "vel" + MemberName 178(Particle) 2 "uv" + MemberName 178(Particle) 3 "normal" + MemberName 178(Particle) 4 "pinned" + Name 191 "ParticleIn" + MemberName 191(ParticleIn) 0 "particleIn" + Name 200 "" + Name 216 "ParticleOut" + MemberName 216(ParticleOut) 0 "particleOut" + Name 224 "" + Name 246 "force" + Name 259 "pos" + Name 269 "vel" + Name 289 "param" + Name 293 "param" + Name 295 "param" + Name 318 "param" + Name 322 "param" + Name 324 "param" + Name 351 "param" + Name 355 "param" + Name 357 "param" + Name 379 "param" + Name 383 "param" + Name 385 "param" + Name 421 "param" + Name 425 "param" + Name 427 "param" + Name 458 "param" + Name 462 "param" + Name 464 "param" + Name 503 "param" + Name 507 "param" + Name 509 "param" + Name 544 "param" + Name 548 "param" + Name 550 "param" + Name 569 "f" + Name 618 "sphereDist" + Name 670 "PushConsts" + MemberName 670(PushConsts) 0 "calculateNormals" + Name 679 "pushConsts" + Name 692 "normal" + Name 714 "a" + Name 727 "b" + Name 744 "c" + MemberDecorate 79(UBO) 0 Offset 0 + MemberDecorate 79(UBO) 1 Offset 4 + MemberDecorate 79(UBO) 2 Offset 8 + MemberDecorate 79(UBO) 3 Offset 12 + MemberDecorate 79(UBO) 4 Offset 16 + MemberDecorate 79(UBO) 5 Offset 20 + MemberDecorate 79(UBO) 6 Offset 24 + MemberDecorate 79(UBO) 7 Offset 28 + MemberDecorate 79(UBO) 8 Offset 32 + MemberDecorate 79(UBO) 9 Offset 48 + MemberDecorate 79(UBO) 10 Offset 64 + Decorate 79(UBO) Block + Decorate 102(params) DescriptorSet 0 + Decorate 102(params) Binding 2 + Decorate 132(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + MemberDecorate 178(Particle) 0 Offset 0 + MemberDecorate 178(Particle) 1 Offset 16 + MemberDecorate 178(Particle) 2 Offset 32 + MemberDecorate 178(Particle) 3 Offset 48 + MemberDecorate 178(Particle) 4 Offset 64 + Decorate 189 ArrayStride 80 + MemberDecorate 191(ParticleIn) 0 Offset 0 + Decorate 191(ParticleIn) BufferBlock + Decorate 200 DescriptorSet 0 + Decorate 200 Binding 0 + Decorate 214 ArrayStride 80 + MemberDecorate 216(ParticleOut) 0 Offset 0 + Decorate 216(ParticleOut) BufferBlock + Decorate 224 DescriptorSet 0 + Decorate 224 Binding 1 + MemberDecorate 670(PushConsts) 0 Offset 0 + Decorate 670(PushConsts) Block + Decorate 963 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -172,1033 +172,1047 @@ spv.debuginfo.glsl.comp 19: TypeVector 16(float) 3 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 21: TypePointer Function 19(fvec3) - 22: TypePointer Function 16(float) - 23: TypeFunction 19(fvec3) 21(ptr) 21(ptr) 22(ptr) - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 20 20 20 18 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 33 - 34: 7(int) Constant 66 - 36: 7(int) Constant 1 - 37: 7(int) Constant 4 - 38: 7(int) Constant 2 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 37 32 38 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 30 24 32 34 12 35 30 13 34 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 20 32 34 12 31 37 36 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 20 32 34 12 31 37 38 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 18 32 34 12 31 37 13 - 53: 7(int) Constant 72 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 51 6 32 53 12 35 51 13 53 - 57: 7(int) Constant 68 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 60 20 32 57 12 31 37 - 66: 7(int) Constant 69 - 69: TypeVector 16(float) 4 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 37 - 71: TypeInt 32 1 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 72 10 37 12 - 74: TypeVector 71(int) 2 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 73 38 - 76(UBO): TypeStruct 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 69(fvec4) 69(fvec4) 74(ivec2) - 79: 7(int) Constant 56 - 80: 7(int) Constant 8 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 18 32 79 80 12 12 13 - 90: 7(int) Constant 58 - 91: 7(int) Constant 7 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 70 32 90 91 12 12 13 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 89 70 32 90 91 12 12 13 - 95: 7(int) Constant 59 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 75 32 95 80 12 12 13 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 97 36 32 66 12 35 97 12 13 77 81 82 83 84 85 86 87 88 92 93 - 98: TypePointer Uniform 76(UBO) - 99(params): 98(ptr) Variable Uniform - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 101 96 32 66 12 35 101 99(params) 80 - 102: 71(int) Constant 2 - 103: TypePointer Uniform 16(float) - 117: 7(int) Constant 74 - 118: TypeVector 7(int) 3 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 - 120: TypePointer Function 118(ivec3) - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 119 32 117 12 52 37 - 125: TypePointer Input 118(ivec3) -126(gl_GlobalInvocationID): 125(ptr) Variable Input - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 128 119 32 117 12 35 128 126(gl_GlobalInvocationID) 80 - 131: 7(int) Constant 76 - 132: TypePointer Function 7(int) - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 135 9 32 131 12 52 37 - 139: 71(int) Constant 10 - 140: TypePointer Uniform 71(int) - 149: 7(int) Constant 77 - 157: TypeBool - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 158 10 38 12 - 165: 7(int) Constant 78 - 169: 7(int) Constant 81 - 170(Particle): TypeStruct 69(fvec4) 69(fvec4) 69(fvec4) 69(fvec4) 16(float) - 173: 7(int) Constant 31 - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 172 70 32 173 91 12 12 13 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 178 18 32 10 80 12 12 13 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 180 36 32 169 12 35 180 12 13 171 174 175 176 177 - 181: TypeRuntimeArray 170(Particle) - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 179 12 - 183(ParticleIn): TypeStruct 181 - 186: 7(int) Constant 36 - 187: 7(int) Constant 11 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 182 32 186 187 12 12 13 - 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 189 36 32 169 12 35 189 12 13 184 - 190: TypePointer Uniform 183(ParticleIn) - 191: 190(ptr) Variable Uniform - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 188 32 169 12 35 1 191 80 - 193: 71(int) Constant 0 - 195: 71(int) Constant 4 - 198: 16(float) Constant 1065353216 - 204: 7(int) Constant 82 - 205: TypeRuntimeArray 170(Particle) - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 179 12 -207(ParticleOut): TypeStruct 205 - 210: 7(int) Constant 40 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 209 206 32 210 187 12 12 13 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 212 36 32 204 12 35 212 12 13 208 - 213: TypePointer Uniform 207(ParticleOut) - 214: 213(ptr) Variable Uniform - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 211 32 204 12 35 1 214 80 - 218: TypePointer Uniform 69(fvec4) - 223: 7(int) Constant 83 - 225: 71(int) Constant 1 - 226: 16(float) Constant 0 - 227: 69(fvec4) ConstantComposite 226 226 226 226 - 230: 7(int) Constant 84 - 234: 7(int) Constant 88 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 20 32 234 12 52 37 - 239: 71(int) Constant 9 - 247: 7(int) Constant 90 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 250 20 32 247 12 52 37 - 257: 7(int) Constant 91 - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 260 20 32 257 12 52 37 - 267: 7(int) Constant 95 - 275: 7(int) Constant 96 - 292: 7(int) Constant 99 - 304: 7(int) Constant 100 - 321: 7(int) Constant 103 - 333: 7(int) Constant 104 - 339: 71(int) Constant 5 - 354: 7(int) Constant 107 - 362: 7(int) Constant 108 - 382: 7(int) Constant 111 - 402: 7(int) Constant 112 - 409: 71(int) Constant 6 - 424: 7(int) Constant 115 - 440: 7(int) Constant 116 - 461: 7(int) Constant 119 - 485: 7(int) Constant 120 - 506: 7(int) Constant 123 - 526: 7(int) Constant 124 - 547: 7(int) Constant 127 - 548: 71(int) Constant 3 - 557: 7(int) Constant 130 - 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 560 20 32 557 12 52 37 - 568: 7(int) Constant 131 - 576: 16(float) Constant 1056964608 - 592: 7(int) Constant 132 - 606: 7(int) Constant 135 - 608: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 609 20 32 606 12 52 37 - 615: 71(int) Constant 8 - 621: 7(int) Constant 136 - 624: 71(int) Constant 7 - 627: 16(float) Constant 1008981770 - 634: 7(int) Constant 138 - 653: 7(int) Constant 140 - 658: 7(int) Constant 144 - 659(PushConsts): TypeStruct 7(int) - 662: 7(int) Constant 63 - 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 661 9 32 662 91 12 12 13 - 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 664 36 32 658 12 35 664 12 13 660 - 665: TypePointer PushConstant 659(PushConsts) - 666(pushConsts): 665(ptr) Variable PushConstant - 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 668 663 32 658 12 35 668 666(pushConsts) 80 - 669: TypePointer PushConstant 7(int) - 677: 7(int) Constant 145 - 679: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 20 32 677 12 52 37 - 681: 19(fvec3) ConstantComposite 226 226 226 - 683: 7(int) Constant 147 - 691: 7(int) Constant 148 - 699: 7(int) Constant 149 - 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 702 20 32 699 12 52 37 - 712: 7(int) Constant 150 - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 715 20 32 712 12 52 37 - 729: 7(int) Constant 151 - 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 732 20 32 729 12 52 37 - 745: 7(int) Constant 152 - 757: 7(int) Constant 154 - 769: 7(int) Constant 155 - 781: 7(int) Constant 156 - 794: 7(int) Constant 157 - 803: 7(int) Constant 158 - 815: 7(int) Constant 161 - 827: 7(int) Constant 162 - 835: 7(int) Constant 163 - 847: 7(int) Constant 164 - 860: 7(int) Constant 165 - 869: 7(int) Constant 166 - 881: 7(int) Constant 168 - 893: 7(int) Constant 169 - 902: 7(int) Constant 170 - 915: 7(int) Constant 171 - 927: 7(int) Constant 172 - 939: 7(int) Constant 175 - 948: 7(int) Constant 10 - 949: 118(ivec3) ConstantComposite 948 948 36 + 22: 7(int) Constant 7 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 12 + 24: TypePointer Function 16(float) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 22 12 + 26: TypeFunction 19(fvec3) 21(ptr) 21(ptr) 24(ptr) + 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 20 20 20 18 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 36 + 37: 7(int) Constant 66 + 39: 7(int) Constant 1 + 40: 7(int) Constant 4 + 41: 7(int) Constant 2 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 39 40 35 41 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 27 35 37 12 38 33 13 37 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 35 37 12 34 40 39 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 20 35 37 12 34 40 41 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 18 35 37 12 34 40 13 + 56: 7(int) Constant 72 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 54 6 35 56 12 38 54 13 56 + 60: 7(int) Constant 68 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 63 20 35 60 12 34 40 + 69: 7(int) Constant 69 + 72: TypeVector 16(float) 4 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 40 + 74: TypeInt 32 1 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 75 10 40 12 + 77: TypeVector 74(int) 2 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 76 41 + 79(UBO): TypeStruct 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 72(fvec4) 72(fvec4) 77(ivec2) + 82: 7(int) Constant 56 + 83: 7(int) Constant 8 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 + 93: 7(int) Constant 58 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 73 35 93 22 12 12 13 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 73 35 93 22 12 12 13 + 97: 7(int) Constant 59 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 78 35 97 83 12 12 13 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 99 39 35 69 12 38 99 12 13 80 84 85 86 87 88 89 90 91 94 95 + 100: TypePointer Uniform 79(UBO) + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 41 12 + 102(params): 100(ptr) Variable Uniform + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 104 98 35 69 12 38 104 102(params) 83 + 105: 74(int) Constant 2 + 106: TypePointer Uniform 16(float) + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 41 12 + 121: 7(int) Constant 74 + 122: TypeVector 7(int) 3 + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 + 124: TypePointer Function 122(ivec3) + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 123 22 12 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 128 123 35 121 12 55 40 + 130: TypePointer Input 122(ivec3) + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 123 39 12 +132(gl_GlobalInvocationID): 130(ptr) Variable Input + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 123 35 121 12 38 134 132(gl_GlobalInvocationID) 83 + 137: 7(int) Constant 76 + 138: TypePointer Function 7(int) + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 9 35 137 12 55 40 + 146: 74(int) Constant 10 + 147: TypePointer Uniform 74(int) + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 76 41 12 + 157: 7(int) Constant 77 + 165: TypeBool + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 166 10 41 12 + 173: 7(int) Constant 78 + 177: 7(int) Constant 81 + 178(Particle): TypeStruct 72(fvec4) 72(fvec4) 72(fvec4) 72(fvec4) 16(float) + 181: 7(int) Constant 31 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 + 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 18 35 10 83 12 12 13 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 188 39 35 177 12 38 188 12 13 179 182 183 184 185 + 189: TypeRuntimeArray 178(Particle) + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 + 191(ParticleIn): TypeStruct 189 + 194: 7(int) Constant 36 + 195: 7(int) Constant 11 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 190 35 194 195 12 12 13 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 197 39 35 177 12 38 197 12 13 192 + 198: TypePointer Uniform 191(ParticleIn) + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 196 41 12 + 200: 198(ptr) Variable Uniform + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 196 35 177 12 38 1 200 83 + 202: 74(int) Constant 0 + 204: 74(int) Constant 4 + 207: 16(float) Constant 1065353216 + 213: 7(int) Constant 82 + 214: TypeRuntimeArray 178(Particle) + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 +216(ParticleOut): TypeStruct 214 + 219: 7(int) Constant 40 + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 218 215 35 219 195 12 12 13 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 221 39 35 213 12 38 221 12 13 217 + 222: TypePointer Uniform 216(ParticleOut) + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 220 41 12 + 224: 222(ptr) Variable Uniform + 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 220 35 213 12 38 1 224 83 + 228: TypePointer Uniform 72(fvec4) + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 41 12 + 234: 7(int) Constant 83 + 236: 74(int) Constant 1 + 237: 16(float) Constant 0 + 238: 72(fvec4) ConstantComposite 237 237 237 237 + 241: 7(int) Constant 84 + 245: 7(int) Constant 88 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 248 20 35 245 12 55 40 + 250: 74(int) Constant 9 + 258: 7(int) Constant 90 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 20 35 258 12 55 40 + 268: 7(int) Constant 91 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 271 20 35 268 12 55 40 + 278: 7(int) Constant 95 + 286: 7(int) Constant 96 + 303: 7(int) Constant 99 + 315: 7(int) Constant 100 + 332: 7(int) Constant 103 + 344: 7(int) Constant 104 + 350: 74(int) Constant 5 + 365: 7(int) Constant 107 + 373: 7(int) Constant 108 + 393: 7(int) Constant 111 + 413: 7(int) Constant 112 + 420: 74(int) Constant 6 + 435: 7(int) Constant 115 + 451: 7(int) Constant 116 + 472: 7(int) Constant 119 + 496: 7(int) Constant 120 + 517: 7(int) Constant 123 + 537: 7(int) Constant 124 + 558: 7(int) Constant 127 + 559: 74(int) Constant 3 + 568: 7(int) Constant 130 + 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 571 20 35 568 12 55 40 + 579: 7(int) Constant 131 + 587: 16(float) Constant 1056964608 + 603: 7(int) Constant 132 + 617: 7(int) Constant 135 + 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 620 20 35 617 12 55 40 + 626: 74(int) Constant 8 + 632: 7(int) Constant 136 + 635: 74(int) Constant 7 + 638: 16(float) Constant 1008981770 + 645: 7(int) Constant 138 + 664: 7(int) Constant 140 + 669: 7(int) Constant 144 + 670(PushConsts): TypeStruct 7(int) + 673: 7(int) Constant 63 + 671: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 672 9 35 673 22 12 12 13 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 675 39 35 669 12 38 675 12 13 671 + 676: TypePointer PushConstant 670(PushConsts) + 677: 7(int) Constant 9 + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 674 677 12 + 679(pushConsts): 676(ptr) Variable PushConstant + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 681 674 35 669 12 38 681 679(pushConsts) 83 + 682: TypePointer PushConstant 7(int) + 683: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 677 12 + 691: 7(int) Constant 145 + 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 20 35 691 12 55 40 + 695: 19(fvec3) ConstantComposite 237 237 237 + 697: 7(int) Constant 147 + 705: 7(int) Constant 148 + 713: 7(int) Constant 149 + 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 716 20 35 713 12 55 40 + 726: 7(int) Constant 150 + 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 729 20 35 726 12 55 40 + 743: 7(int) Constant 151 + 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 746 20 35 743 12 55 40 + 759: 7(int) Constant 152 + 771: 7(int) Constant 154 + 783: 7(int) Constant 155 + 795: 7(int) Constant 156 + 808: 7(int) Constant 157 + 817: 7(int) Constant 158 + 829: 7(int) Constant 161 + 841: 7(int) Constant 162 + 849: 7(int) Constant 163 + 861: 7(int) Constant 164 + 874: 7(int) Constant 165 + 883: 7(int) Constant 166 + 895: 7(int) Constant 168 + 907: 7(int) Constant 169 + 916: 7(int) Constant 170 + 929: 7(int) Constant 171 + 941: 7(int) Constant 172 + 953: 7(int) Constant 175 + 962: 7(int) Constant 10 + 963: 122(ivec3) ConstantComposite 962 962 39 Line 1 72 11 14(main): 4 Function None 5 15: Label - 121(id): 120(ptr) Variable Function - 133(index): 132(ptr) Variable Function - 235(force): 21(ptr) Variable Function - 248(pos): 21(ptr) Variable Function - 258(vel): 21(ptr) Variable Function - 278(param): 21(ptr) Variable Function - 282(param): 21(ptr) Variable Function - 284(param): 22(ptr) Variable Function - 307(param): 21(ptr) Variable Function - 311(param): 21(ptr) Variable Function - 313(param): 22(ptr) Variable Function - 340(param): 21(ptr) Variable Function - 344(param): 21(ptr) Variable Function - 346(param): 22(ptr) Variable Function - 368(param): 21(ptr) Variable Function - 372(param): 21(ptr) Variable Function - 374(param): 22(ptr) Variable Function - 410(param): 21(ptr) Variable Function - 414(param): 21(ptr) Variable Function - 416(param): 22(ptr) Variable Function - 447(param): 21(ptr) Variable Function - 451(param): 21(ptr) Variable Function - 453(param): 22(ptr) Variable Function - 492(param): 21(ptr) Variable Function - 496(param): 21(ptr) Variable Function - 498(param): 22(ptr) Variable Function - 533(param): 21(ptr) Variable Function - 537(param): 21(ptr) Variable Function - 539(param): 22(ptr) Variable Function - 558(f): 21(ptr) Variable Function - 607(sphereDist): 21(ptr) Variable Function - 678(normal): 21(ptr) Variable Function - 700(a): 21(ptr) Variable Function - 713(b): 21(ptr) Variable Function - 730(c): 21(ptr) Variable Function - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 52 14(main) - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 117 117 12 12 - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(id) 44 - 129: 118(ivec3) Load 126(gl_GlobalInvocationID) - Store 121(id) 129 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 131 131 12 12 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 134 133(index) 44 - 137: 132(ptr) AccessChain 121(id) 36 - 138: 7(int) Load 137 - 141: 140(ptr) AccessChain 99(params) 139 12 - 142: 71(int) Load 141 - 143: 7(int) Bitcast 142 - 144: 7(int) IMul 138 143 - 145: 132(ptr) AccessChain 121(id) 12 - 146: 7(int) Load 145 - 147: 7(int) IAdd 144 146 - Store 133(index) 147 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 149 149 12 12 - 150: 7(int) Load 133(index) - 151: 140(ptr) AccessChain 99(params) 139 12 - 152: 71(int) Load 151 - 153: 140(ptr) AccessChain 99(params) 139 36 - 154: 71(int) Load 153 - 155: 71(int) IMul 152 154 - 156: 7(int) Bitcast 155 - 160: 157(bool) UGreaterThan 150 156 - SelectionMerge 162 None - BranchConditional 160 161 162 - 161: Label - 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 165 165 12 12 + 126(id): 124(ptr) Variable Function + 140(index): 138(ptr) Variable Function + 246(force): 21(ptr) Variable Function + 259(pos): 21(ptr) Variable Function + 269(vel): 21(ptr) Variable Function + 289(param): 21(ptr) Variable Function + 293(param): 21(ptr) Variable Function + 295(param): 24(ptr) Variable Function + 318(param): 21(ptr) Variable Function + 322(param): 21(ptr) Variable Function + 324(param): 24(ptr) Variable Function + 351(param): 21(ptr) Variable Function + 355(param): 21(ptr) Variable Function + 357(param): 24(ptr) Variable Function + 379(param): 21(ptr) Variable Function + 383(param): 21(ptr) Variable Function + 385(param): 24(ptr) Variable Function + 421(param): 21(ptr) Variable Function + 425(param): 21(ptr) Variable Function + 427(param): 24(ptr) Variable Function + 458(param): 21(ptr) Variable Function + 462(param): 21(ptr) Variable Function + 464(param): 24(ptr) Variable Function + 503(param): 21(ptr) Variable Function + 507(param): 21(ptr) Variable Function + 509(param): 24(ptr) Variable Function + 544(param): 21(ptr) Variable Function + 548(param): 21(ptr) Variable Function + 550(param): 24(ptr) Variable Function + 569(f): 21(ptr) Variable Function + 618(sphereDist): 21(ptr) Variable Function + 692(normal): 21(ptr) Variable Function + 714(a): 21(ptr) Variable Function + 727(b): 21(ptr) Variable Function + 744(c): 21(ptr) Variable Function + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 14(main) + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 121 121 12 12 + 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 127 126(id) 47 + 135: 122(ivec3) Load 132(gl_GlobalInvocationID) + Store 126(id) 135 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 137 137 12 12 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(index) 47 + 144: 138(ptr) AccessChain 126(id) 39 + 145: 7(int) Load 144 + 149: 147(ptr) AccessChain 102(params) 146 12 + 150: 74(int) Load 149 + 151: 7(int) Bitcast 150 + 152: 7(int) IMul 145 151 + 153: 138(ptr) AccessChain 126(id) 12 + 154: 7(int) Load 153 + 155: 7(int) IAdd 152 154 + Store 140(index) 155 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 157 157 12 12 + 158: 7(int) Load 140(index) + 159: 147(ptr) AccessChain 102(params) 146 12 + 160: 74(int) Load 159 + 161: 147(ptr) AccessChain 102(params) 146 39 + 162: 74(int) Load 161 + 163: 74(int) IMul 160 162 + 164: 7(int) Bitcast 163 + 168: 165(bool) UGreaterThan 158 164 + SelectionMerge 170 None + BranchConditional 168 169 170 + 169: Label + 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 173 173 12 12 Return - 162: Label - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 169 169 12 12 - 194: 7(int) Load 133(index) - 196: 103(ptr) AccessChain 191 193 194 195 - 197: 16(float) Load 196 - 199: 157(bool) FOrdEqual 197 198 - SelectionMerge 201 None - BranchConditional 199 200 201 - 200: Label - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 204 204 12 12 - 216: 7(int) Load 133(index) - 217: 7(int) Load 133(index) - 219: 218(ptr) AccessChain 214 193 217 193 - 220: 69(fvec4) Load 219 - 221: 218(ptr) AccessChain 214 193 216 193 - Store 221 220 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 223 223 12 12 - 224: 7(int) Load 133(index) - 228: 218(ptr) AccessChain 214 193 224 225 - Store 228 227 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 230 230 12 12 + 170: Label + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 177 177 12 12 + 203: 7(int) Load 140(index) + 205: 106(ptr) AccessChain 200 202 203 204 + 206: 16(float) Load 205 + 208: 165(bool) FOrdEqual 206 207 + SelectionMerge 210 None + BranchConditional 208 209 210 + 209: Label + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 213 213 12 12 + 226: 7(int) Load 140(index) + 227: 7(int) Load 140(index) + 230: 228(ptr) AccessChain 224 202 227 202 + 231: 72(fvec4) Load 230 + 232: 228(ptr) AccessChain 224 202 226 202 + Store 232 231 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 234 234 12 12 + 235: 7(int) Load 140(index) + 239: 228(ptr) AccessChain 224 202 235 236 + Store 239 238 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 241 241 12 12 Return - 201: Label - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 234 234 12 12 - 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(force) 44 - 240: 218(ptr) AccessChain 99(params) 239 - 241: 69(fvec4) Load 240 - 242: 19(fvec3) VectorShuffle 241 241 0 1 2 - 243: 103(ptr) AccessChain 99(params) 225 - 244: 16(float) Load 243 - 245: 19(fvec3) VectorTimesScalar 242 244 - Store 235(force) 245 - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 247 247 12 12 - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 249 248(pos) 44 - 252: 7(int) Load 133(index) - 253: 218(ptr) AccessChain 191 193 252 193 - 254: 69(fvec4) Load 253 - 255: 19(fvec3) VectorShuffle 254 254 0 1 2 - Store 248(pos) 255 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 257 257 12 12 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 259 258(vel) 44 - 262: 7(int) Load 133(index) - 263: 218(ptr) AccessChain 191 193 262 225 - 264: 69(fvec4) Load 263 - 265: 19(fvec3) VectorShuffle 264 264 0 1 2 - Store 258(vel) 265 - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 267 267 12 12 - 268: 132(ptr) AccessChain 121(id) 12 - 269: 7(int) Load 268 - 270: 157(bool) UGreaterThan 269 12 - SelectionMerge 272 None - BranchConditional 270 271 272 - 271: Label - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 275 275 12 12 - 276: 7(int) Load 133(index) - 277: 7(int) ISub 276 36 - 279: 218(ptr) AccessChain 191 193 277 193 - 280: 69(fvec4) Load 279 - 281: 19(fvec3) VectorShuffle 280 280 0 1 2 - Store 278(param) 281 - 283: 19(fvec3) Load 248(pos) - Store 282(param) 283 - 285: 103(ptr) AccessChain 99(params) 195 - 286: 16(float) Load 285 - Store 284(param) 286 - 287: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 278(param) 282(param) 284(param) - 288: 19(fvec3) Load 235(force) - 289: 19(fvec3) FAdd 288 287 - Store 235(force) 289 - Branch 272 - 272: Label - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 292 292 12 12 - 293: 132(ptr) AccessChain 121(id) 12 - 294: 7(int) Load 293 - 295: 140(ptr) AccessChain 99(params) 139 12 - 296: 71(int) Load 295 - 297: 71(int) ISub 296 225 - 298: 7(int) Bitcast 297 - 299: 157(bool) ULessThan 294 298 - SelectionMerge 301 None - BranchConditional 299 300 301 - 300: Label - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 304 304 12 12 - 305: 7(int) Load 133(index) - 306: 7(int) IAdd 305 36 - 308: 218(ptr) AccessChain 191 193 306 193 - 309: 69(fvec4) Load 308 - 310: 19(fvec3) VectorShuffle 309 309 0 1 2 - Store 307(param) 310 - 312: 19(fvec3) Load 248(pos) - Store 311(param) 312 - 314: 103(ptr) AccessChain 99(params) 195 - 315: 16(float) Load 314 - Store 313(param) 315 - 316: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 307(param) 311(param) 313(param) - 317: 19(fvec3) Load 235(force) - 318: 19(fvec3) FAdd 317 316 - Store 235(force) 318 - Branch 301 - 301: Label - 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 321 321 12 12 - 322: 132(ptr) AccessChain 121(id) 36 - 323: 7(int) Load 322 - 324: 140(ptr) AccessChain 99(params) 139 36 - 325: 71(int) Load 324 - 326: 71(int) ISub 325 225 - 327: 7(int) Bitcast 326 - 328: 157(bool) ULessThan 323 327 - SelectionMerge 330 None - BranchConditional 328 329 330 - 329: Label - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 333 333 12 12 - 334: 7(int) Load 133(index) - 335: 140(ptr) AccessChain 99(params) 139 12 - 336: 71(int) Load 335 - 337: 7(int) Bitcast 336 - 338: 7(int) IAdd 334 337 - 341: 218(ptr) AccessChain 191 193 338 193 - 342: 69(fvec4) Load 341 - 343: 19(fvec3) VectorShuffle 342 342 0 1 2 - Store 340(param) 343 - 345: 19(fvec3) Load 248(pos) - Store 344(param) 345 - 347: 103(ptr) AccessChain 99(params) 339 - 348: 16(float) Load 347 - Store 346(param) 348 - 349: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 340(param) 344(param) 346(param) - 350: 19(fvec3) Load 235(force) - 351: 19(fvec3) FAdd 350 349 - Store 235(force) 351 - Branch 330 - 330: Label - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 354 354 12 12 - 355: 132(ptr) AccessChain 121(id) 36 - 356: 7(int) Load 355 - 357: 157(bool) UGreaterThan 356 12 - SelectionMerge 359 None - BranchConditional 357 358 359 - 358: Label - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 362 362 12 12 - 363: 7(int) Load 133(index) - 364: 140(ptr) AccessChain 99(params) 139 12 - 365: 71(int) Load 364 - 366: 7(int) Bitcast 365 - 367: 7(int) ISub 363 366 - 369: 218(ptr) AccessChain 191 193 367 193 - 370: 69(fvec4) Load 369 - 371: 19(fvec3) VectorShuffle 370 370 0 1 2 - Store 368(param) 371 - 373: 19(fvec3) Load 248(pos) - Store 372(param) 373 - 375: 103(ptr) AccessChain 99(params) 339 - 376: 16(float) Load 375 - Store 374(param) 376 - 377: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 368(param) 372(param) 374(param) - 378: 19(fvec3) Load 235(force) - 379: 19(fvec3) FAdd 378 377 - Store 235(force) 379 - Branch 359 - 359: Label - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 382 382 12 12 - 383: 132(ptr) AccessChain 121(id) 12 - 384: 7(int) Load 383 - 385: 157(bool) UGreaterThan 384 12 - SelectionMerge 387 None - BranchConditional 385 386 387 - 386: Label - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 382 382 12 12 - 390: 132(ptr) AccessChain 121(id) 36 - 391: 7(int) Load 390 - 392: 140(ptr) AccessChain 99(params) 139 36 - 393: 71(int) Load 392 - 394: 71(int) ISub 393 225 - 395: 7(int) Bitcast 394 - 396: 157(bool) ULessThan 391 395 - Branch 387 - 387: Label - 397: 157(bool) Phi 385 359 396 386 - SelectionMerge 399 None - BranchConditional 397 398 399 - 398: Label - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 402 402 12 12 - 403: 7(int) Load 133(index) - 404: 140(ptr) AccessChain 99(params) 139 12 - 405: 71(int) Load 404 + 210: Label + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 245 245 12 12 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 247 246(force) 47 + 251: 228(ptr) AccessChain 102(params) 250 + 252: 72(fvec4) Load 251 + 253: 19(fvec3) VectorShuffle 252 252 0 1 2 + 254: 106(ptr) AccessChain 102(params) 236 + 255: 16(float) Load 254 + 256: 19(fvec3) VectorTimesScalar 253 255 + Store 246(force) 256 + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 258 258 12 12 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(pos) 47 + 263: 7(int) Load 140(index) + 264: 228(ptr) AccessChain 200 202 263 202 + 265: 72(fvec4) Load 264 + 266: 19(fvec3) VectorShuffle 265 265 0 1 2 + Store 259(pos) 266 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 268 268 12 12 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 270 269(vel) 47 + 273: 7(int) Load 140(index) + 274: 228(ptr) AccessChain 200 202 273 236 + 275: 72(fvec4) Load 274 + 276: 19(fvec3) VectorShuffle 275 275 0 1 2 + Store 269(vel) 276 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 278 278 12 12 + 279: 138(ptr) AccessChain 126(id) 12 + 280: 7(int) Load 279 + 281: 165(bool) UGreaterThan 280 12 + SelectionMerge 283 None + BranchConditional 281 282 283 + 282: Label + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 286 286 12 12 + 287: 7(int) Load 140(index) + 288: 7(int) ISub 287 39 + 290: 228(ptr) AccessChain 200 202 288 202 + 291: 72(fvec4) Load 290 + 292: 19(fvec3) VectorShuffle 291 291 0 1 2 + Store 289(param) 292 + 294: 19(fvec3) Load 259(pos) + Store 293(param) 294 + 296: 106(ptr) AccessChain 102(params) 204 + 297: 16(float) Load 296 + Store 295(param) 297 + 298: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 289(param) 293(param) 295(param) + 299: 19(fvec3) Load 246(force) + 300: 19(fvec3) FAdd 299 298 + Store 246(force) 300 + Branch 283 + 283: Label + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 303 303 12 12 + 304: 138(ptr) AccessChain 126(id) 12 + 305: 7(int) Load 304 + 306: 147(ptr) AccessChain 102(params) 146 12 + 307: 74(int) Load 306 + 308: 74(int) ISub 307 236 + 309: 7(int) Bitcast 308 + 310: 165(bool) ULessThan 305 309 + SelectionMerge 312 None + BranchConditional 310 311 312 + 311: Label + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 315 315 12 12 + 316: 7(int) Load 140(index) + 317: 7(int) IAdd 316 39 + 319: 228(ptr) AccessChain 200 202 317 202 + 320: 72(fvec4) Load 319 + 321: 19(fvec3) VectorShuffle 320 320 0 1 2 + Store 318(param) 321 + 323: 19(fvec3) Load 259(pos) + Store 322(param) 323 + 325: 106(ptr) AccessChain 102(params) 204 + 326: 16(float) Load 325 + Store 324(param) 326 + 327: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 318(param) 322(param) 324(param) + 328: 19(fvec3) Load 246(force) + 329: 19(fvec3) FAdd 328 327 + Store 246(force) 329 + Branch 312 + 312: Label + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 332 332 12 12 + 333: 138(ptr) AccessChain 126(id) 39 + 334: 7(int) Load 333 + 335: 147(ptr) AccessChain 102(params) 146 39 + 336: 74(int) Load 335 + 337: 74(int) ISub 336 236 + 338: 7(int) Bitcast 337 + 339: 165(bool) ULessThan 334 338 + SelectionMerge 341 None + BranchConditional 339 340 341 + 340: Label + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 344 344 12 12 + 345: 7(int) Load 140(index) + 346: 147(ptr) AccessChain 102(params) 146 12 + 347: 74(int) Load 346 + 348: 7(int) Bitcast 347 + 349: 7(int) IAdd 345 348 + 352: 228(ptr) AccessChain 200 202 349 202 + 353: 72(fvec4) Load 352 + 354: 19(fvec3) VectorShuffle 353 353 0 1 2 + Store 351(param) 354 + 356: 19(fvec3) Load 259(pos) + Store 355(param) 356 + 358: 106(ptr) AccessChain 102(params) 350 + 359: 16(float) Load 358 + Store 357(param) 359 + 360: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 351(param) 355(param) 357(param) + 361: 19(fvec3) Load 246(force) + 362: 19(fvec3) FAdd 361 360 + Store 246(force) 362 + Branch 341 + 341: Label + 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 365 365 12 12 + 366: 138(ptr) AccessChain 126(id) 39 + 367: 7(int) Load 366 + 368: 165(bool) UGreaterThan 367 12 + SelectionMerge 370 None + BranchConditional 368 369 370 + 369: Label + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 373 373 12 12 + 374: 7(int) Load 140(index) + 375: 147(ptr) AccessChain 102(params) 146 12 + 376: 74(int) Load 375 + 377: 7(int) Bitcast 376 + 378: 7(int) ISub 374 377 + 380: 228(ptr) AccessChain 200 202 378 202 + 381: 72(fvec4) Load 380 + 382: 19(fvec3) VectorShuffle 381 381 0 1 2 + Store 379(param) 382 + 384: 19(fvec3) Load 259(pos) + Store 383(param) 384 + 386: 106(ptr) AccessChain 102(params) 350 + 387: 16(float) Load 386 + Store 385(param) 387 + 388: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 379(param) 383(param) 385(param) + 389: 19(fvec3) Load 246(force) + 390: 19(fvec3) FAdd 389 388 + Store 246(force) 390 + Branch 370 + 370: Label + 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 393 393 12 12 + 394: 138(ptr) AccessChain 126(id) 12 + 395: 7(int) Load 394 + 396: 165(bool) UGreaterThan 395 12 + SelectionMerge 398 None + BranchConditional 396 397 398 + 397: Label + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 393 393 12 12 + 401: 138(ptr) AccessChain 126(id) 39 + 402: 7(int) Load 401 + 403: 147(ptr) AccessChain 102(params) 146 39 + 404: 74(int) Load 403 + 405: 74(int) ISub 404 236 406: 7(int) Bitcast 405 - 407: 7(int) IAdd 403 406 - 408: 7(int) ISub 407 36 - 411: 218(ptr) AccessChain 191 193 408 193 - 412: 69(fvec4) Load 411 - 413: 19(fvec3) VectorShuffle 412 412 0 1 2 - Store 410(param) 413 - 415: 19(fvec3) Load 248(pos) - Store 414(param) 415 - 417: 103(ptr) AccessChain 99(params) 409 - 418: 16(float) Load 417 - Store 416(param) 418 - 419: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 410(param) 414(param) 416(param) - 420: 19(fvec3) Load 235(force) - 421: 19(fvec3) FAdd 420 419 - Store 235(force) 421 - Branch 399 - 399: Label - 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 424 424 12 12 - 425: 132(ptr) AccessChain 121(id) 12 - 426: 7(int) Load 425 - 427: 157(bool) UGreaterThan 426 12 - SelectionMerge 429 None - BranchConditional 427 428 429 - 428: Label - 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 424 424 12 12 - 432: 132(ptr) AccessChain 121(id) 36 - 433: 7(int) Load 432 - 434: 157(bool) UGreaterThan 433 12 - Branch 429 - 429: Label - 435: 157(bool) Phi 427 399 434 428 - SelectionMerge 437 None - BranchConditional 435 436 437 - 436: Label - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 440 440 12 12 - 441: 7(int) Load 133(index) - 442: 140(ptr) AccessChain 99(params) 139 12 - 443: 71(int) Load 442 - 444: 7(int) Bitcast 443 - 445: 7(int) ISub 441 444 - 446: 7(int) ISub 445 36 - 448: 218(ptr) AccessChain 191 193 446 193 - 449: 69(fvec4) Load 448 - 450: 19(fvec3) VectorShuffle 449 449 0 1 2 - Store 447(param) 450 - 452: 19(fvec3) Load 248(pos) - Store 451(param) 452 - 454: 103(ptr) AccessChain 99(params) 409 - 455: 16(float) Load 454 - Store 453(param) 455 - 456: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 447(param) 451(param) 453(param) - 457: 19(fvec3) Load 235(force) - 458: 19(fvec3) FAdd 457 456 - Store 235(force) 458 - Branch 437 - 437: Label - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 461 461 12 12 - 462: 132(ptr) AccessChain 121(id) 12 - 463: 7(int) Load 462 - 464: 140(ptr) AccessChain 99(params) 139 12 - 465: 71(int) Load 464 - 466: 71(int) ISub 465 225 - 467: 7(int) Bitcast 466 - 468: 157(bool) ULessThan 463 467 - SelectionMerge 470 None - BranchConditional 468 469 470 - 469: Label - 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 461 461 12 12 - 473: 132(ptr) AccessChain 121(id) 36 - 474: 7(int) Load 473 - 475: 140(ptr) AccessChain 99(params) 139 36 - 476: 71(int) Load 475 - 477: 71(int) ISub 476 225 - 478: 7(int) Bitcast 477 - 479: 157(bool) ULessThan 474 478 - Branch 470 - 470: Label - 480: 157(bool) Phi 468 437 479 469 - SelectionMerge 482 None - BranchConditional 480 481 482 - 481: Label - 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 485 485 12 12 - 486: 7(int) Load 133(index) - 487: 140(ptr) AccessChain 99(params) 139 12 - 488: 71(int) Load 487 + 407: 165(bool) ULessThan 402 406 + Branch 398 + 398: Label + 408: 165(bool) Phi 396 370 407 397 + SelectionMerge 410 None + BranchConditional 408 409 410 + 409: Label + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 413 413 12 12 + 414: 7(int) Load 140(index) + 415: 147(ptr) AccessChain 102(params) 146 12 + 416: 74(int) Load 415 + 417: 7(int) Bitcast 416 + 418: 7(int) IAdd 414 417 + 419: 7(int) ISub 418 39 + 422: 228(ptr) AccessChain 200 202 419 202 + 423: 72(fvec4) Load 422 + 424: 19(fvec3) VectorShuffle 423 423 0 1 2 + Store 421(param) 424 + 426: 19(fvec3) Load 259(pos) + Store 425(param) 426 + 428: 106(ptr) AccessChain 102(params) 420 + 429: 16(float) Load 428 + Store 427(param) 429 + 430: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 421(param) 425(param) 427(param) + 431: 19(fvec3) Load 246(force) + 432: 19(fvec3) FAdd 431 430 + Store 246(force) 432 + Branch 410 + 410: Label + 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 435 435 12 12 + 436: 138(ptr) AccessChain 126(id) 12 + 437: 7(int) Load 436 + 438: 165(bool) UGreaterThan 437 12 + SelectionMerge 440 None + BranchConditional 438 439 440 + 439: Label + 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 435 435 12 12 + 443: 138(ptr) AccessChain 126(id) 39 + 444: 7(int) Load 443 + 445: 165(bool) UGreaterThan 444 12 + Branch 440 + 440: Label + 446: 165(bool) Phi 438 410 445 439 + SelectionMerge 448 None + BranchConditional 446 447 448 + 447: Label + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 451 451 12 12 + 452: 7(int) Load 140(index) + 453: 147(ptr) AccessChain 102(params) 146 12 + 454: 74(int) Load 453 + 455: 7(int) Bitcast 454 + 456: 7(int) ISub 452 455 + 457: 7(int) ISub 456 39 + 459: 228(ptr) AccessChain 200 202 457 202 + 460: 72(fvec4) Load 459 + 461: 19(fvec3) VectorShuffle 460 460 0 1 2 + Store 458(param) 461 + 463: 19(fvec3) Load 259(pos) + Store 462(param) 463 + 465: 106(ptr) AccessChain 102(params) 420 + 466: 16(float) Load 465 + Store 464(param) 466 + 467: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 458(param) 462(param) 464(param) + 468: 19(fvec3) Load 246(force) + 469: 19(fvec3) FAdd 468 467 + Store 246(force) 469 + Branch 448 + 448: Label + 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 472 472 12 12 + 473: 138(ptr) AccessChain 126(id) 12 + 474: 7(int) Load 473 + 475: 147(ptr) AccessChain 102(params) 146 12 + 476: 74(int) Load 475 + 477: 74(int) ISub 476 236 + 478: 7(int) Bitcast 477 + 479: 165(bool) ULessThan 474 478 + SelectionMerge 481 None + BranchConditional 479 480 481 + 480: Label + 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 472 472 12 12 + 484: 138(ptr) AccessChain 126(id) 39 + 485: 7(int) Load 484 + 486: 147(ptr) AccessChain 102(params) 146 39 + 487: 74(int) Load 486 + 488: 74(int) ISub 487 236 489: 7(int) Bitcast 488 - 490: 7(int) IAdd 486 489 - 491: 7(int) IAdd 490 36 - 493: 218(ptr) AccessChain 191 193 491 193 - 494: 69(fvec4) Load 493 - 495: 19(fvec3) VectorShuffle 494 494 0 1 2 - Store 492(param) 495 - 497: 19(fvec3) Load 248(pos) - Store 496(param) 497 - 499: 103(ptr) AccessChain 99(params) 409 - 500: 16(float) Load 499 - Store 498(param) 500 - 501: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 492(param) 496(param) 498(param) - 502: 19(fvec3) Load 235(force) - 503: 19(fvec3) FAdd 502 501 - Store 235(force) 503 - Branch 482 - 482: Label - 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 506 506 12 12 - 507: 132(ptr) AccessChain 121(id) 12 - 508: 7(int) Load 507 - 509: 140(ptr) AccessChain 99(params) 139 12 - 510: 71(int) Load 509 - 511: 71(int) ISub 510 225 - 512: 7(int) Bitcast 511 - 513: 157(bool) ULessThan 508 512 - SelectionMerge 515 None - BranchConditional 513 514 515 - 514: Label - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 506 506 12 12 - 518: 132(ptr) AccessChain 121(id) 36 - 519: 7(int) Load 518 - 520: 157(bool) UGreaterThan 519 12 - Branch 515 - 515: Label - 521: 157(bool) Phi 513 482 520 514 - SelectionMerge 523 None - BranchConditional 521 522 523 - 522: Label - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 525: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 526 526 12 12 - 527: 7(int) Load 133(index) - 528: 140(ptr) AccessChain 99(params) 139 12 - 529: 71(int) Load 528 - 530: 7(int) Bitcast 529 - 531: 7(int) ISub 527 530 - 532: 7(int) IAdd 531 36 - 534: 218(ptr) AccessChain 191 193 532 193 - 535: 69(fvec4) Load 534 - 536: 19(fvec3) VectorShuffle 535 535 0 1 2 - Store 533(param) 536 - 538: 19(fvec3) Load 248(pos) - Store 537(param) 538 - 540: 103(ptr) AccessChain 99(params) 409 - 541: 16(float) Load 540 - Store 539(param) 541 - 542: 19(fvec3) FunctionCall 28(springForce(vf3;vf3;f1;) 533(param) 537(param) 539(param) - 543: 19(fvec3) Load 235(force) - 544: 19(fvec3) FAdd 543 542 - Store 235(force) 544 - Branch 523 - 523: Label - 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 547 547 12 12 - 549: 103(ptr) AccessChain 99(params) 548 - 550: 16(float) Load 549 - 551: 16(float) FNegate 550 - 552: 19(fvec3) Load 258(vel) - 553: 19(fvec3) VectorTimesScalar 552 551 - 554: 19(fvec3) Load 235(force) - 555: 19(fvec3) FAdd 554 553 - Store 235(force) 555 - 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 557 557 12 12 - 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 559 558(f) 44 - 562: 19(fvec3) Load 235(force) - 563: 103(ptr) AccessChain 99(params) 225 - 564: 16(float) Load 563 - 565: 16(float) FDiv 198 564 - 566: 19(fvec3) VectorTimesScalar 562 565 - Store 558(f) 566 - 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 568 568 12 12 - 569: 7(int) Load 133(index) - 570: 19(fvec3) Load 248(pos) - 571: 19(fvec3) Load 258(vel) - 572: 103(ptr) AccessChain 99(params) 193 - 573: 16(float) Load 572 - 574: 19(fvec3) VectorTimesScalar 571 573 - 575: 19(fvec3) FAdd 570 574 - 577: 19(fvec3) Load 558(f) - 578: 19(fvec3) VectorTimesScalar 577 576 - 579: 103(ptr) AccessChain 99(params) 193 - 580: 16(float) Load 579 - 581: 19(fvec3) VectorTimesScalar 578 580 - 582: 103(ptr) AccessChain 99(params) 193 - 583: 16(float) Load 582 - 584: 19(fvec3) VectorTimesScalar 581 583 - 585: 19(fvec3) FAdd 575 584 - 586: 16(float) CompositeExtract 585 0 - 587: 16(float) CompositeExtract 585 1 - 588: 16(float) CompositeExtract 585 2 - 589: 69(fvec4) CompositeConstruct 586 587 588 198 - 590: 218(ptr) AccessChain 214 193 569 193 - Store 590 589 - 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 592 592 12 12 - 593: 7(int) Load 133(index) - 594: 19(fvec3) Load 258(vel) - 595: 19(fvec3) Load 558(f) - 596: 103(ptr) AccessChain 99(params) 193 - 597: 16(float) Load 596 - 598: 19(fvec3) VectorTimesScalar 595 597 - 599: 19(fvec3) FAdd 594 598 - 600: 16(float) CompositeExtract 599 0 - 601: 16(float) CompositeExtract 599 1 - 602: 16(float) CompositeExtract 599 2 - 603: 69(fvec4) CompositeConstruct 600 601 602 226 - 604: 218(ptr) AccessChain 214 193 593 225 - Store 604 603 - 605: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 606 606 12 12 - 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 608 607(sphereDist) 44 - 611: 7(int) Load 133(index) - 612: 218(ptr) AccessChain 214 193 611 193 - 613: 69(fvec4) Load 612 - 614: 19(fvec3) VectorShuffle 613 613 0 1 2 - 616: 218(ptr) AccessChain 99(params) 615 - 617: 69(fvec4) Load 616 - 618: 19(fvec3) VectorShuffle 617 617 0 1 2 - 619: 19(fvec3) FSub 614 618 - Store 607(sphereDist) 619 - 620: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 621 621 12 12 - 622: 19(fvec3) Load 607(sphereDist) - 623: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 622 - 625: 103(ptr) AccessChain 99(params) 624 - 626: 16(float) Load 625 - 628: 16(float) FAdd 626 627 - 629: 157(bool) FOrdLessThan 623 628 - SelectionMerge 631 None - BranchConditional 629 630 631 - 630: Label - 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 633: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 634 634 12 12 - 635: 7(int) Load 133(index) - 636: 218(ptr) AccessChain 99(params) 615 - 637: 69(fvec4) Load 636 - 638: 19(fvec3) VectorShuffle 637 637 0 1 2 - 639: 19(fvec3) Load 607(sphereDist) - 640: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 639 - 641: 103(ptr) AccessChain 99(params) 624 - 642: 16(float) Load 641 - 643: 16(float) FAdd 642 627 - 644: 19(fvec3) VectorTimesScalar 640 643 - 645: 19(fvec3) FAdd 638 644 - 646: 103(ptr) AccessChain 214 193 635 193 12 - 647: 16(float) CompositeExtract 645 0 - Store 646 647 - 648: 103(ptr) AccessChain 214 193 635 193 36 - 649: 16(float) CompositeExtract 645 1 - Store 648 649 - 650: 103(ptr) AccessChain 214 193 635 193 38 - 651: 16(float) CompositeExtract 645 2 - Store 650 651 - 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 653 653 12 12 - 654: 7(int) Load 133(index) - 655: 218(ptr) AccessChain 214 193 654 225 - Store 655 227 - Branch 631 - 631: Label - 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 657: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 658 658 12 12 - 670: 669(ptr) AccessChain 666(pushConsts) 193 - 671: 7(int) Load 670 - 672: 157(bool) IEqual 671 36 - SelectionMerge 674 None - BranchConditional 672 673 674 - 673: Label - 675: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 677 677 12 12 - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 679 678(normal) 44 - Store 678(normal) 681 - 682: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 683 683 12 12 - 684: 132(ptr) AccessChain 121(id) 36 - 685: 7(int) Load 684 - 686: 157(bool) UGreaterThan 685 12 - SelectionMerge 688 None - BranchConditional 686 687 688 - 687: Label - 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 691 691 12 12 - 692: 132(ptr) AccessChain 121(id) 12 - 693: 7(int) Load 692 - 694: 157(bool) UGreaterThan 693 12 - SelectionMerge 696 None - BranchConditional 694 695 696 - 695: Label - 697: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 699 699 12 12 - 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 701 700(a) 44 - 704: 7(int) Load 133(index) - 705: 7(int) ISub 704 36 - 706: 218(ptr) AccessChain 191 193 705 193 - 707: 69(fvec4) Load 706 - 708: 19(fvec3) VectorShuffle 707 707 0 1 2 - 709: 19(fvec3) Load 248(pos) - 710: 19(fvec3) FSub 708 709 - Store 700(a) 710 - 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 712 712 12 12 - 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 714 713(b) 44 - 717: 7(int) Load 133(index) - 718: 140(ptr) AccessChain 99(params) 139 12 - 719: 71(int) Load 718 - 720: 7(int) Bitcast 719 - 721: 7(int) ISub 717 720 - 722: 7(int) ISub 721 36 - 723: 218(ptr) AccessChain 191 193 722 193 - 724: 69(fvec4) Load 723 - 725: 19(fvec3) VectorShuffle 724 724 0 1 2 - 726: 19(fvec3) Load 248(pos) - 727: 19(fvec3) FSub 725 726 - Store 713(b) 727 - 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 729 729 12 12 - 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 731 730(c) 44 - 734: 7(int) Load 133(index) - 735: 140(ptr) AccessChain 99(params) 139 12 - 736: 71(int) Load 735 - 737: 7(int) Bitcast 736 - 738: 7(int) ISub 734 737 - 739: 218(ptr) AccessChain 191 193 738 193 - 740: 69(fvec4) Load 739 - 741: 19(fvec3) VectorShuffle 740 740 0 1 2 - 742: 19(fvec3) Load 248(pos) - 743: 19(fvec3) FSub 741 742 - Store 730(c) 743 - 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 745 745 12 12 - 746: 19(fvec3) Load 700(a) - 747: 19(fvec3) Load 713(b) - 748: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 746 747 - 749: 19(fvec3) Load 713(b) - 750: 19(fvec3) Load 730(c) - 751: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 749 750 - 752: 19(fvec3) FAdd 748 751 - 753: 19(fvec3) Load 678(normal) - 754: 19(fvec3) FAdd 753 752 - Store 678(normal) 754 - Branch 696 - 696: Label - 755: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 756: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 757 757 12 12 - 758: 132(ptr) AccessChain 121(id) 12 - 759: 7(int) Load 758 - 760: 140(ptr) AccessChain 99(params) 139 12 - 761: 71(int) Load 760 - 762: 71(int) ISub 761 225 - 763: 7(int) Bitcast 762 - 764: 157(bool) ULessThan 759 763 - SelectionMerge 766 None - BranchConditional 764 765 766 - 765: Label - 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 769 769 12 12 - 770: 7(int) Load 133(index) - 771: 140(ptr) AccessChain 99(params) 139 12 - 772: 71(int) Load 771 - 773: 7(int) Bitcast 772 - 774: 7(int) ISub 770 773 - 775: 218(ptr) AccessChain 191 193 774 193 - 776: 69(fvec4) Load 775 - 777: 19(fvec3) VectorShuffle 776 776 0 1 2 - 778: 19(fvec3) Load 248(pos) - 779: 19(fvec3) FSub 777 778 - Store 700(a) 779 - 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 781 781 12 12 - 782: 7(int) Load 133(index) - 783: 140(ptr) AccessChain 99(params) 139 12 - 784: 71(int) Load 783 - 785: 7(int) Bitcast 784 - 786: 7(int) ISub 782 785 - 787: 7(int) IAdd 786 36 - 788: 218(ptr) AccessChain 191 193 787 193 - 789: 69(fvec4) Load 788 - 790: 19(fvec3) VectorShuffle 789 789 0 1 2 - 791: 19(fvec3) Load 248(pos) - 792: 19(fvec3) FSub 790 791 - Store 713(b) 792 - 793: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 794 794 12 12 - 795: 7(int) Load 133(index) - 796: 7(int) IAdd 795 36 - 797: 218(ptr) AccessChain 191 193 796 193 - 798: 69(fvec4) Load 797 - 799: 19(fvec3) VectorShuffle 798 798 0 1 2 - 800: 19(fvec3) Load 248(pos) - 801: 19(fvec3) FSub 799 800 - Store 730(c) 801 - 802: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 803 803 12 12 - 804: 19(fvec3) Load 700(a) - 805: 19(fvec3) Load 713(b) - 806: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 804 805 - 807: 19(fvec3) Load 713(b) - 808: 19(fvec3) Load 730(c) - 809: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 807 808 - 810: 19(fvec3) FAdd 806 809 - 811: 19(fvec3) Load 678(normal) - 812: 19(fvec3) FAdd 811 810 - Store 678(normal) 812 - Branch 766 - 766: Label - Branch 688 - 688: Label - 813: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 814: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 815 815 12 12 - 816: 132(ptr) AccessChain 121(id) 36 - 817: 7(int) Load 816 - 818: 140(ptr) AccessChain 99(params) 139 36 - 819: 71(int) Load 818 - 820: 71(int) ISub 819 225 - 821: 7(int) Bitcast 820 - 822: 157(bool) ULessThan 817 821 - SelectionMerge 824 None - BranchConditional 822 823 824 - 823: Label - 825: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 827 827 12 12 - 828: 132(ptr) AccessChain 121(id) 12 - 829: 7(int) Load 828 - 830: 157(bool) UGreaterThan 829 12 - SelectionMerge 832 None - BranchConditional 830 831 832 - 831: Label - 833: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 834: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 835 835 12 12 - 836: 7(int) Load 133(index) - 837: 140(ptr) AccessChain 99(params) 139 12 - 838: 71(int) Load 837 - 839: 7(int) Bitcast 838 - 840: 7(int) IAdd 836 839 - 841: 218(ptr) AccessChain 191 193 840 193 - 842: 69(fvec4) Load 841 - 843: 19(fvec3) VectorShuffle 842 842 0 1 2 - 844: 19(fvec3) Load 248(pos) - 845: 19(fvec3) FSub 843 844 - Store 700(a) 845 - 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 847 847 12 12 - 848: 7(int) Load 133(index) - 849: 140(ptr) AccessChain 99(params) 139 12 - 850: 71(int) Load 849 - 851: 7(int) Bitcast 850 - 852: 7(int) IAdd 848 851 - 853: 7(int) ISub 852 36 - 854: 218(ptr) AccessChain 191 193 853 193 - 855: 69(fvec4) Load 854 - 856: 19(fvec3) VectorShuffle 855 855 0 1 2 - 857: 19(fvec3) Load 248(pos) - 858: 19(fvec3) FSub 856 857 - Store 713(b) 858 - 859: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 860 860 12 12 - 861: 7(int) Load 133(index) - 862: 7(int) ISub 861 36 - 863: 218(ptr) AccessChain 191 193 862 193 - 864: 69(fvec4) Load 863 - 865: 19(fvec3) VectorShuffle 864 864 0 1 2 - 866: 19(fvec3) Load 248(pos) - 867: 19(fvec3) FSub 865 866 - Store 730(c) 867 - 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 869 869 12 12 - 870: 19(fvec3) Load 700(a) - 871: 19(fvec3) Load 713(b) - 872: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 870 871 - 873: 19(fvec3) Load 713(b) - 874: 19(fvec3) Load 730(c) - 875: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 873 874 - 876: 19(fvec3) FAdd 872 875 - 877: 19(fvec3) Load 678(normal) - 878: 19(fvec3) FAdd 877 876 - Store 678(normal) 878 - Branch 832 - 832: Label - 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 880: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 881 881 12 12 - 882: 132(ptr) AccessChain 121(id) 12 - 883: 7(int) Load 882 - 884: 140(ptr) AccessChain 99(params) 139 12 - 885: 71(int) Load 884 - 886: 71(int) ISub 885 225 - 887: 7(int) Bitcast 886 - 888: 157(bool) ULessThan 883 887 - SelectionMerge 890 None - BranchConditional 888 889 890 - 889: Label - 891: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 892: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 893 893 12 12 - 894: 7(int) Load 133(index) - 895: 7(int) IAdd 894 36 - 896: 218(ptr) AccessChain 191 193 895 193 - 897: 69(fvec4) Load 896 - 898: 19(fvec3) VectorShuffle 897 897 0 1 2 - 899: 19(fvec3) Load 248(pos) - 900: 19(fvec3) FSub 898 899 - Store 700(a) 900 - 901: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 902 902 12 12 - 903: 7(int) Load 133(index) - 904: 140(ptr) AccessChain 99(params) 139 12 - 905: 71(int) Load 904 - 906: 7(int) Bitcast 905 - 907: 7(int) IAdd 903 906 - 908: 7(int) IAdd 907 36 - 909: 218(ptr) AccessChain 191 193 908 193 - 910: 69(fvec4) Load 909 - 911: 19(fvec3) VectorShuffle 910 910 0 1 2 - 912: 19(fvec3) Load 248(pos) - 913: 19(fvec3) FSub 911 912 - Store 713(b) 913 - 914: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 915 915 12 12 - 916: 7(int) Load 133(index) - 917: 140(ptr) AccessChain 99(params) 139 12 - 918: 71(int) Load 917 - 919: 7(int) Bitcast 918 - 920: 7(int) IAdd 916 919 - 921: 218(ptr) AccessChain 191 193 920 193 - 922: 69(fvec4) Load 921 - 923: 19(fvec3) VectorShuffle 922 922 0 1 2 - 924: 19(fvec3) Load 248(pos) - 925: 19(fvec3) FSub 923 924 - Store 730(c) 925 - 926: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 927 927 12 12 - 928: 19(fvec3) Load 700(a) - 929: 19(fvec3) Load 713(b) - 930: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 928 929 - 931: 19(fvec3) Load 713(b) - 932: 19(fvec3) Load 730(c) - 933: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 931 932 - 934: 19(fvec3) FAdd 930 933 - 935: 19(fvec3) Load 678(normal) - 936: 19(fvec3) FAdd 935 934 - Store 678(normal) 936 - Branch 890 - 890: Label - Branch 824 - 824: Label - 937: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 52 - 938: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 939 939 12 12 - 940: 7(int) Load 133(index) - 941: 19(fvec3) Load 678(normal) - 942: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 941 - 943: 16(float) CompositeExtract 942 0 - 944: 16(float) CompositeExtract 942 1 - 945: 16(float) CompositeExtract 942 2 - 946: 69(fvec4) CompositeConstruct 943 944 945 226 - 947: 218(ptr) AccessChain 214 193 940 548 - Store 947 946 - Branch 674 - 674: Label + 490: 165(bool) ULessThan 485 489 + Branch 481 + 481: Label + 491: 165(bool) Phi 479 448 490 480 + SelectionMerge 493 None + BranchConditional 491 492 493 + 492: Label + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 496 496 12 12 + 497: 7(int) Load 140(index) + 498: 147(ptr) AccessChain 102(params) 146 12 + 499: 74(int) Load 498 + 500: 7(int) Bitcast 499 + 501: 7(int) IAdd 497 500 + 502: 7(int) IAdd 501 39 + 504: 228(ptr) AccessChain 200 202 502 202 + 505: 72(fvec4) Load 504 + 506: 19(fvec3) VectorShuffle 505 505 0 1 2 + Store 503(param) 506 + 508: 19(fvec3) Load 259(pos) + Store 507(param) 508 + 510: 106(ptr) AccessChain 102(params) 420 + 511: 16(float) Load 510 + Store 509(param) 511 + 512: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 503(param) 507(param) 509(param) + 513: 19(fvec3) Load 246(force) + 514: 19(fvec3) FAdd 513 512 + Store 246(force) 514 + Branch 493 + 493: Label + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 517 517 12 12 + 518: 138(ptr) AccessChain 126(id) 12 + 519: 7(int) Load 518 + 520: 147(ptr) AccessChain 102(params) 146 12 + 521: 74(int) Load 520 + 522: 74(int) ISub 521 236 + 523: 7(int) Bitcast 522 + 524: 165(bool) ULessThan 519 523 + SelectionMerge 526 None + BranchConditional 524 525 526 + 525: Label + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 517 517 12 12 + 529: 138(ptr) AccessChain 126(id) 39 + 530: 7(int) Load 529 + 531: 165(bool) UGreaterThan 530 12 + Branch 526 + 526: Label + 532: 165(bool) Phi 524 493 531 525 + SelectionMerge 534 None + BranchConditional 532 533 534 + 533: Label + 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 537 537 12 12 + 538: 7(int) Load 140(index) + 539: 147(ptr) AccessChain 102(params) 146 12 + 540: 74(int) Load 539 + 541: 7(int) Bitcast 540 + 542: 7(int) ISub 538 541 + 543: 7(int) IAdd 542 39 + 545: 228(ptr) AccessChain 200 202 543 202 + 546: 72(fvec4) Load 545 + 547: 19(fvec3) VectorShuffle 546 546 0 1 2 + Store 544(param) 547 + 549: 19(fvec3) Load 259(pos) + Store 548(param) 549 + 551: 106(ptr) AccessChain 102(params) 420 + 552: 16(float) Load 551 + Store 550(param) 552 + 553: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 544(param) 548(param) 550(param) + 554: 19(fvec3) Load 246(force) + 555: 19(fvec3) FAdd 554 553 + Store 246(force) 555 + Branch 534 + 534: Label + 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 558 558 12 12 + 560: 106(ptr) AccessChain 102(params) 559 + 561: 16(float) Load 560 + 562: 16(float) FNegate 561 + 563: 19(fvec3) Load 269(vel) + 564: 19(fvec3) VectorTimesScalar 563 562 + 565: 19(fvec3) Load 246(force) + 566: 19(fvec3) FAdd 565 564 + Store 246(force) 566 + 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 568 568 12 12 + 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 570 569(f) 47 + 573: 19(fvec3) Load 246(force) + 574: 106(ptr) AccessChain 102(params) 236 + 575: 16(float) Load 574 + 576: 16(float) FDiv 207 575 + 577: 19(fvec3) VectorTimesScalar 573 576 + Store 569(f) 577 + 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 579 579 12 12 + 580: 7(int) Load 140(index) + 581: 19(fvec3) Load 259(pos) + 582: 19(fvec3) Load 269(vel) + 583: 106(ptr) AccessChain 102(params) 202 + 584: 16(float) Load 583 + 585: 19(fvec3) VectorTimesScalar 582 584 + 586: 19(fvec3) FAdd 581 585 + 588: 19(fvec3) Load 569(f) + 589: 19(fvec3) VectorTimesScalar 588 587 + 590: 106(ptr) AccessChain 102(params) 202 + 591: 16(float) Load 590 + 592: 19(fvec3) VectorTimesScalar 589 591 + 593: 106(ptr) AccessChain 102(params) 202 + 594: 16(float) Load 593 + 595: 19(fvec3) VectorTimesScalar 592 594 + 596: 19(fvec3) FAdd 586 595 + 597: 16(float) CompositeExtract 596 0 + 598: 16(float) CompositeExtract 596 1 + 599: 16(float) CompositeExtract 596 2 + 600: 72(fvec4) CompositeConstruct 597 598 599 207 + 601: 228(ptr) AccessChain 224 202 580 202 + Store 601 600 + 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 603 603 12 12 + 604: 7(int) Load 140(index) + 605: 19(fvec3) Load 269(vel) + 606: 19(fvec3) Load 569(f) + 607: 106(ptr) AccessChain 102(params) 202 + 608: 16(float) Load 607 + 609: 19(fvec3) VectorTimesScalar 606 608 + 610: 19(fvec3) FAdd 605 609 + 611: 16(float) CompositeExtract 610 0 + 612: 16(float) CompositeExtract 610 1 + 613: 16(float) CompositeExtract 610 2 + 614: 72(fvec4) CompositeConstruct 611 612 613 237 + 615: 228(ptr) AccessChain 224 202 604 236 + Store 615 614 + 616: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 617 617 12 12 + 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 619 618(sphereDist) 47 + 622: 7(int) Load 140(index) + 623: 228(ptr) AccessChain 224 202 622 202 + 624: 72(fvec4) Load 623 + 625: 19(fvec3) VectorShuffle 624 624 0 1 2 + 627: 228(ptr) AccessChain 102(params) 626 + 628: 72(fvec4) Load 627 + 629: 19(fvec3) VectorShuffle 628 628 0 1 2 + 630: 19(fvec3) FSub 625 629 + Store 618(sphereDist) 630 + 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 632 632 12 12 + 633: 19(fvec3) Load 618(sphereDist) + 634: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 633 + 636: 106(ptr) AccessChain 102(params) 635 + 637: 16(float) Load 636 + 639: 16(float) FAdd 637 638 + 640: 165(bool) FOrdLessThan 634 639 + SelectionMerge 642 None + BranchConditional 640 641 642 + 641: Label + 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 645 645 12 12 + 646: 7(int) Load 140(index) + 647: 228(ptr) AccessChain 102(params) 626 + 648: 72(fvec4) Load 647 + 649: 19(fvec3) VectorShuffle 648 648 0 1 2 + 650: 19(fvec3) Load 618(sphereDist) + 651: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 650 + 652: 106(ptr) AccessChain 102(params) 635 + 653: 16(float) Load 652 + 654: 16(float) FAdd 653 638 + 655: 19(fvec3) VectorTimesScalar 651 654 + 656: 19(fvec3) FAdd 649 655 + 657: 106(ptr) AccessChain 224 202 646 202 12 + 658: 16(float) CompositeExtract 656 0 + Store 657 658 + 659: 106(ptr) AccessChain 224 202 646 202 39 + 660: 16(float) CompositeExtract 656 1 + Store 659 660 + 661: 106(ptr) AccessChain 224 202 646 202 41 + 662: 16(float) CompositeExtract 656 2 + Store 661 662 + 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 664 664 12 12 + 665: 7(int) Load 140(index) + 666: 228(ptr) AccessChain 224 202 665 236 + Store 666 238 + Branch 642 + 642: Label + 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 669 669 12 12 + 684: 682(ptr) AccessChain 679(pushConsts) 202 + 685: 7(int) Load 684 + 686: 165(bool) IEqual 685 39 + SelectionMerge 688 None + BranchConditional 686 687 688 + 687: Label + 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 691 691 12 12 + 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 693 692(normal) 47 + Store 692(normal) 695 + 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 697 697 12 12 + 698: 138(ptr) AccessChain 126(id) 39 + 699: 7(int) Load 698 + 700: 165(bool) UGreaterThan 699 12 + SelectionMerge 702 None + BranchConditional 700 701 702 + 701: Label + 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 705 705 12 12 + 706: 138(ptr) AccessChain 126(id) 12 + 707: 7(int) Load 706 + 708: 165(bool) UGreaterThan 707 12 + SelectionMerge 710 None + BranchConditional 708 709 710 + 709: Label + 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 713 713 12 12 + 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 715 714(a) 47 + 718: 7(int) Load 140(index) + 719: 7(int) ISub 718 39 + 720: 228(ptr) AccessChain 200 202 719 202 + 721: 72(fvec4) Load 720 + 722: 19(fvec3) VectorShuffle 721 721 0 1 2 + 723: 19(fvec3) Load 259(pos) + 724: 19(fvec3) FSub 722 723 + Store 714(a) 724 + 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 726 726 12 12 + 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 728 727(b) 47 + 731: 7(int) Load 140(index) + 732: 147(ptr) AccessChain 102(params) 146 12 + 733: 74(int) Load 732 + 734: 7(int) Bitcast 733 + 735: 7(int) ISub 731 734 + 736: 7(int) ISub 735 39 + 737: 228(ptr) AccessChain 200 202 736 202 + 738: 72(fvec4) Load 737 + 739: 19(fvec3) VectorShuffle 738 738 0 1 2 + 740: 19(fvec3) Load 259(pos) + 741: 19(fvec3) FSub 739 740 + Store 727(b) 741 + 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 743 743 12 12 + 747: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 745 744(c) 47 + 748: 7(int) Load 140(index) + 749: 147(ptr) AccessChain 102(params) 146 12 + 750: 74(int) Load 749 + 751: 7(int) Bitcast 750 + 752: 7(int) ISub 748 751 + 753: 228(ptr) AccessChain 200 202 752 202 + 754: 72(fvec4) Load 753 + 755: 19(fvec3) VectorShuffle 754 754 0 1 2 + 756: 19(fvec3) Load 259(pos) + 757: 19(fvec3) FSub 755 756 + Store 744(c) 757 + 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 759 759 12 12 + 760: 19(fvec3) Load 714(a) + 761: 19(fvec3) Load 727(b) + 762: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 760 761 + 763: 19(fvec3) Load 727(b) + 764: 19(fvec3) Load 744(c) + 765: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 763 764 + 766: 19(fvec3) FAdd 762 765 + 767: 19(fvec3) Load 692(normal) + 768: 19(fvec3) FAdd 767 766 + Store 692(normal) 768 + Branch 710 + 710: Label + 769: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 771 771 12 12 + 772: 138(ptr) AccessChain 126(id) 12 + 773: 7(int) Load 772 + 774: 147(ptr) AccessChain 102(params) 146 12 + 775: 74(int) Load 774 + 776: 74(int) ISub 775 236 + 777: 7(int) Bitcast 776 + 778: 165(bool) ULessThan 773 777 + SelectionMerge 780 None + BranchConditional 778 779 780 + 779: Label + 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 783 783 12 12 + 784: 7(int) Load 140(index) + 785: 147(ptr) AccessChain 102(params) 146 12 + 786: 74(int) Load 785 + 787: 7(int) Bitcast 786 + 788: 7(int) ISub 784 787 + 789: 228(ptr) AccessChain 200 202 788 202 + 790: 72(fvec4) Load 789 + 791: 19(fvec3) VectorShuffle 790 790 0 1 2 + 792: 19(fvec3) Load 259(pos) + 793: 19(fvec3) FSub 791 792 + Store 714(a) 793 + 794: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 795 795 12 12 + 796: 7(int) Load 140(index) + 797: 147(ptr) AccessChain 102(params) 146 12 + 798: 74(int) Load 797 + 799: 7(int) Bitcast 798 + 800: 7(int) ISub 796 799 + 801: 7(int) IAdd 800 39 + 802: 228(ptr) AccessChain 200 202 801 202 + 803: 72(fvec4) Load 802 + 804: 19(fvec3) VectorShuffle 803 803 0 1 2 + 805: 19(fvec3) Load 259(pos) + 806: 19(fvec3) FSub 804 805 + Store 727(b) 806 + 807: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 808 808 12 12 + 809: 7(int) Load 140(index) + 810: 7(int) IAdd 809 39 + 811: 228(ptr) AccessChain 200 202 810 202 + 812: 72(fvec4) Load 811 + 813: 19(fvec3) VectorShuffle 812 812 0 1 2 + 814: 19(fvec3) Load 259(pos) + 815: 19(fvec3) FSub 813 814 + Store 744(c) 815 + 816: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 817 817 12 12 + 818: 19(fvec3) Load 714(a) + 819: 19(fvec3) Load 727(b) + 820: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 818 819 + 821: 19(fvec3) Load 727(b) + 822: 19(fvec3) Load 744(c) + 823: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 821 822 + 824: 19(fvec3) FAdd 820 823 + 825: 19(fvec3) Load 692(normal) + 826: 19(fvec3) FAdd 825 824 + Store 692(normal) 826 + Branch 780 + 780: Label + Branch 702 + 702: Label + 827: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 828: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 829 829 12 12 + 830: 138(ptr) AccessChain 126(id) 39 + 831: 7(int) Load 830 + 832: 147(ptr) AccessChain 102(params) 146 39 + 833: 74(int) Load 832 + 834: 74(int) ISub 833 236 + 835: 7(int) Bitcast 834 + 836: 165(bool) ULessThan 831 835 + SelectionMerge 838 None + BranchConditional 836 837 838 + 837: Label + 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 841 841 12 12 + 842: 138(ptr) AccessChain 126(id) 12 + 843: 7(int) Load 842 + 844: 165(bool) UGreaterThan 843 12 + SelectionMerge 846 None + BranchConditional 844 845 846 + 845: Label + 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 848: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 849 849 12 12 + 850: 7(int) Load 140(index) + 851: 147(ptr) AccessChain 102(params) 146 12 + 852: 74(int) Load 851 + 853: 7(int) Bitcast 852 + 854: 7(int) IAdd 850 853 + 855: 228(ptr) AccessChain 200 202 854 202 + 856: 72(fvec4) Load 855 + 857: 19(fvec3) VectorShuffle 856 856 0 1 2 + 858: 19(fvec3) Load 259(pos) + 859: 19(fvec3) FSub 857 858 + Store 714(a) 859 + 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 861 861 12 12 + 862: 7(int) Load 140(index) + 863: 147(ptr) AccessChain 102(params) 146 12 + 864: 74(int) Load 863 + 865: 7(int) Bitcast 864 + 866: 7(int) IAdd 862 865 + 867: 7(int) ISub 866 39 + 868: 228(ptr) AccessChain 200 202 867 202 + 869: 72(fvec4) Load 868 + 870: 19(fvec3) VectorShuffle 869 869 0 1 2 + 871: 19(fvec3) Load 259(pos) + 872: 19(fvec3) FSub 870 871 + Store 727(b) 872 + 873: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 874 874 12 12 + 875: 7(int) Load 140(index) + 876: 7(int) ISub 875 39 + 877: 228(ptr) AccessChain 200 202 876 202 + 878: 72(fvec4) Load 877 + 879: 19(fvec3) VectorShuffle 878 878 0 1 2 + 880: 19(fvec3) Load 259(pos) + 881: 19(fvec3) FSub 879 880 + Store 744(c) 881 + 882: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 883 883 12 12 + 884: 19(fvec3) Load 714(a) + 885: 19(fvec3) Load 727(b) + 886: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 884 885 + 887: 19(fvec3) Load 727(b) + 888: 19(fvec3) Load 744(c) + 889: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 887 888 + 890: 19(fvec3) FAdd 886 889 + 891: 19(fvec3) Load 692(normal) + 892: 19(fvec3) FAdd 891 890 + Store 692(normal) 892 + Branch 846 + 846: Label + 893: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 894: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 895 895 12 12 + 896: 138(ptr) AccessChain 126(id) 12 + 897: 7(int) Load 896 + 898: 147(ptr) AccessChain 102(params) 146 12 + 899: 74(int) Load 898 + 900: 74(int) ISub 899 236 + 901: 7(int) Bitcast 900 + 902: 165(bool) ULessThan 897 901 + SelectionMerge 904 None + BranchConditional 902 903 904 + 903: Label + 905: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 906: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 907 907 12 12 + 908: 7(int) Load 140(index) + 909: 7(int) IAdd 908 39 + 910: 228(ptr) AccessChain 200 202 909 202 + 911: 72(fvec4) Load 910 + 912: 19(fvec3) VectorShuffle 911 911 0 1 2 + 913: 19(fvec3) Load 259(pos) + 914: 19(fvec3) FSub 912 913 + Store 714(a) 914 + 915: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 916 916 12 12 + 917: 7(int) Load 140(index) + 918: 147(ptr) AccessChain 102(params) 146 12 + 919: 74(int) Load 918 + 920: 7(int) Bitcast 919 + 921: 7(int) IAdd 917 920 + 922: 7(int) IAdd 921 39 + 923: 228(ptr) AccessChain 200 202 922 202 + 924: 72(fvec4) Load 923 + 925: 19(fvec3) VectorShuffle 924 924 0 1 2 + 926: 19(fvec3) Load 259(pos) + 927: 19(fvec3) FSub 925 926 + Store 727(b) 927 + 928: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 929 929 12 12 + 930: 7(int) Load 140(index) + 931: 147(ptr) AccessChain 102(params) 146 12 + 932: 74(int) Load 931 + 933: 7(int) Bitcast 932 + 934: 7(int) IAdd 930 933 + 935: 228(ptr) AccessChain 200 202 934 202 + 936: 72(fvec4) Load 935 + 937: 19(fvec3) VectorShuffle 936 936 0 1 2 + 938: 19(fvec3) Load 259(pos) + 939: 19(fvec3) FSub 937 938 + Store 744(c) 939 + 940: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 941 941 12 12 + 942: 19(fvec3) Load 714(a) + 943: 19(fvec3) Load 727(b) + 944: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 942 943 + 945: 19(fvec3) Load 727(b) + 946: 19(fvec3) Load 744(c) + 947: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 945 946 + 948: 19(fvec3) FAdd 944 947 + 949: 19(fvec3) Load 692(normal) + 950: 19(fvec3) FAdd 949 948 + Store 692(normal) 950 + Branch 904 + 904: Label + Branch 838 + 838: Label + 951: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 952: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 953 953 12 12 + 954: 7(int) Load 140(index) + 955: 19(fvec3) Load 692(normal) + 956: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 955 + 957: 16(float) CompositeExtract 956 0 + 958: 16(float) CompositeExtract 956 1 + 959: 16(float) CompositeExtract 956 2 + 960: 72(fvec4) CompositeConstruct 957 958 959 237 + 961: 228(ptr) AccessChain 224 202 954 559 + Store 961 960 + Branch 688 + 688: Label Return FunctionEnd Line 1 66 50 -28(springForce(vf3;vf3;f1;): 19(fvec3) Function None 23 - 25(p0): 21(ptr) FunctionParameter - 26(p1): 21(ptr) FunctionParameter - 27(restDist): 22(ptr) FunctionParameter - 29: Label - 58(dist): 21(ptr) Variable Function - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 34 34 12 12 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 25(p0) 44 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 26(p1) 44 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 27(restDist) 44 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(springForce(vf3;vf3;f1;) - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 57 57 12 12 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 59 58(dist) 44 - 62: 19(fvec3) Load 25(p0) - 63: 19(fvec3) Load 26(p1) - 64: 19(fvec3) FSub 62 63 - Store 58(dist) 64 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 66 66 12 12 - 67: 19(fvec3) Load 58(dist) - 68: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 67 - 104: 103(ptr) AccessChain 99(params) 102 - 105: 16(float) Load 104 - 106: 19(fvec3) VectorTimesScalar 68 105 - 107: 19(fvec3) Load 58(dist) - 108: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 107 - 109: 16(float) Load 27(restDist) - 110: 16(float) FSub 108 109 - 111: 19(fvec3) VectorTimesScalar 106 110 - ReturnValue 111 +31(springForce(vf3;vf3;f1;): 19(fvec3) Function None 26 + 28(p0): 21(ptr) FunctionParameter + 29(p1): 21(ptr) FunctionParameter + 30(restDist): 24(ptr) FunctionParameter + 32: Label + 61(dist): 21(ptr) Variable Function + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 37 37 12 12 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 28(p0) 47 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 29(p1) 47 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 30(restDist) 47 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 31(springForce(vf3;vf3;f1;) + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 60 60 12 12 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 62 61(dist) 47 + 65: 19(fvec3) Load 28(p0) + 66: 19(fvec3) Load 29(p1) + 67: 19(fvec3) FSub 65 66 + Store 61(dist) 67 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 69 69 12 12 + 70: 19(fvec3) Load 61(dist) + 71: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 70 + 108: 106(ptr) AccessChain 102(params) 105 + 109: 16(float) Load 108 + 110: 19(fvec3) VectorTimesScalar 71 109 + 111: 19(fvec3) Load 61(dist) + 112: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 111 + 113: 16(float) Load 30(restDist) + 114: 16(float) FSub 112 113 + 115: 19(fvec3) VectorTimesScalar 110 114 + ReturnValue 115 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index dda34650b4..2c7bac82c1 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 854 +// Id's are bound by 870 Capability Shader Capability ImageQuery @@ -9,13 +9,13 @@ spv.debuginfo.glsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 14 "main" 476 530 + EntryPoint Fragment 14 "main" 488 544 ExecutionMode 14 OriginUpperLeft 1: String "" 8: String "uint" 17: String "float" - 35: String "textureProj" - 38: String "// OpModuleProcessed auto-map-locations + 39: String "textureProj" + 42: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -23,164 +23,164 @@ spv.debuginfo.glsl.frag // OpModuleProcessed entry-point main #line 1 " - 45: String "P" - 49: String "layer" - 52: String "offset" - 60: String "filterPCF" - 66: String "sc" - 79: String "shadow" - 85: String "fragcolor" - 88: String "fragpos" - 90: String "main" - 97: String "int" - 102: String "global_var" - 117: String "shadowCoord" - 139: String "bool" - 160: String "dist" - 164: String "type.2d.image" - 165: String "@type.2d.image" - 169: String "type.sampled.image" - 170: String "@type.sampled.image" - 174: String "samplerShadowMap" - 222: String "texDim" - 234: String "scale" - 241: String "dx" - 254: String "dy" - 266: String "shadowFactor" - 272: String "count" - 278: String "range" - 285: String "x" - 306: String "y" - 369: String "i" - 388: String "shadowClip" - 395: String "color" - 401: String "viewMatrix" - 404: String "Light" - 410: String "lights" - 413: String "debugDisplayTarget" - 417: String "UBO" - 421: String "ubo" - 464: String "fragPos" - 473: String "samplerposition" - 478: String "inUV" - 486: String "normal" - 490: String "samplerNormal" - 499: String "albedo" - 503: String "samplerAlbedo" - 532: String "outFragColor" - 624: String "N" - 649: String "L" - 673: String "V" - 688: String "lightCosInnerAngle" - 695: String "lightCosOuterAngle" - 702: String "lightRange" - 709: String "dir" - 725: String "cosDir" - 734: String "spotEffect" - 744: String "heightAttenuation" - 753: String "NdotL" - 763: String "diff" - 771: String "R" - 781: String "NdotR" - 791: String "spec" + 49: String "P" + 53: String "layer" + 56: String "offset" + 64: String "filterPCF" + 70: String "sc" + 84: String "shadow" + 90: String "fragcolor" + 93: String "fragpos" + 95: String "main" + 102: String "int" + 108: String "global_var" + 123: String "shadowCoord" + 145: String "bool" + 166: String "dist" + 170: String "type.2d.image" + 171: String "@type.2d.image" + 175: String "type.sampled.image" + 176: String "@type.sampled.image" + 181: String "samplerShadowMap" + 230: String "texDim" + 242: String "scale" + 249: String "dx" + 263: String "dy" + 275: String "shadowFactor" + 281: String "count" + 287: String "range" + 294: String "x" + 315: String "y" + 378: String "i" + 397: String "shadowClip" + 404: String "color" + 409: String "viewMatrix" + 412: String "Light" + 418: String "lights" + 421: String "debugDisplayTarget" + 425: String "UBO" + 430: String "ubo" + 474: String "fragPos" + 484: String "samplerposition" + 490: String "inUV" + 498: String "normal" + 502: String "samplerNormal" + 511: String "albedo" + 515: String "samplerAlbedo" + 546: String "outFragColor" + 639: String "N" + 664: String "L" + 689: String "V" + 704: String "lightCosInnerAngle" + 711: String "lightCosOuterAngle" + 718: String "lightRange" + 725: String "dir" + 741: String "cosDir" + 750: String "spotEffect" + 760: String "heightAttenuation" + 769: String "NdotL" + 779: String "diff" + 787: String "R" + 797: String "NdotR" + 807: String "spec" Name 14 "main" - Name 33 "textureProj(vf4;f1;vf2;" - Name 30 "P" - Name 31 "layer" - Name 32 "offset" - Name 58 "filterPCF(vf4;f1;" - Name 56 "sc" - Name 57 "layer" - Name 77 "shadow(vf3;vf3;" - Name 75 "fragcolor" - Name 76 "fragpos" - Name 100 "global_var" - Name 109 "shadow" - Name 115 "shadowCoord" - Name 158 "dist" - Name 172 "samplerShadowMap" - Name 220 "texDim" - Name 232 "scale" - Name 239 "dx" - Name 252 "dy" - Name 264 "shadowFactor" - Name 270 "count" - Name 276 "range" - Name 283 "x" - Name 304 "y" - Name 334 "param" - Name 336 "param" - Name 338 "param" - Name 367 "i" - Name 386 "shadowClip" - Name 393 "Light" - MemberName 393(Light) 0 "position" - MemberName 393(Light) 1 "target" - MemberName 393(Light) 2 "color" - MemberName 393(Light) 3 "viewMatrix" - Name 407 "UBO" - MemberName 407(UBO) 0 "viewPos" - MemberName 407(UBO) 1 "lights" - MemberName 407(UBO) 2 "useShadows" - MemberName 407(UBO) 3 "debugDisplayTarget" - Name 419 "ubo" - Name 434 "shadowFactor" - Name 439 "param" - Name 441 "param" - Name 462 "fragPos" - Name 471 "samplerposition" - Name 476 "inUV" - Name 484 "normal" - Name 488 "samplerNormal" - Name 497 "albedo" - Name 501 "samplerAlbedo" - Name 530 "outFragColor" - Name 534 "param" - Name 535 "param" - Name 613 "fragcolor" - Name 622 "N" - Name 630 "i" - Name 647 "L" - Name 660 "dist" - Name 671 "V" - Name 686 "lightCosInnerAngle" - Name 693 "lightCosOuterAngle" - Name 700 "lightRange" - Name 707 "dir" - Name 723 "cosDir" - Name 732 "spotEffect" - Name 742 "heightAttenuation" - Name 751 "NdotL" - Name 761 "diff" - Name 769 "R" - Name 779 "NdotR" - Name 789 "spec" - Name 841 "param" - Name 843 "param" - Decorate 172(samplerShadowMap) DescriptorSet 0 - Decorate 172(samplerShadowMap) Binding 5 - MemberDecorate 393(Light) 0 Offset 0 - MemberDecorate 393(Light) 1 Offset 16 - MemberDecorate 393(Light) 2 Offset 32 - MemberDecorate 393(Light) 3 ColMajor - MemberDecorate 393(Light) 3 Offset 48 - MemberDecorate 393(Light) 3 MatrixStride 16 - Decorate 405 ArrayStride 112 - MemberDecorate 407(UBO) 0 Offset 0 - MemberDecorate 407(UBO) 1 Offset 16 - MemberDecorate 407(UBO) 2 Offset 352 - MemberDecorate 407(UBO) 3 Offset 356 - Decorate 407(UBO) Block - Decorate 419(ubo) DescriptorSet 0 - Decorate 419(ubo) Binding 4 - Decorate 471(samplerposition) DescriptorSet 0 - Decorate 471(samplerposition) Binding 1 - Decorate 476(inUV) Location 0 - Decorate 488(samplerNormal) DescriptorSet 0 - Decorate 488(samplerNormal) Binding 2 - Decorate 501(samplerAlbedo) DescriptorSet 0 - Decorate 501(samplerAlbedo) Binding 3 - Decorate 530(outFragColor) Location 0 + Name 37 "textureProj(vf4;f1;vf2;" + Name 34 "P" + Name 35 "layer" + Name 36 "offset" + Name 62 "filterPCF(vf4;f1;" + Name 60 "sc" + Name 61 "layer" + Name 82 "shadow(vf3;vf3;" + Name 80 "fragcolor" + Name 81 "fragpos" + Name 106 "global_var" + Name 115 "shadow" + Name 121 "shadowCoord" + Name 164 "dist" + Name 179 "samplerShadowMap" + Name 228 "texDim" + Name 240 "scale" + Name 247 "dx" + Name 261 "dy" + Name 273 "shadowFactor" + Name 279 "count" + Name 285 "range" + Name 292 "x" + Name 313 "y" + Name 343 "param" + Name 345 "param" + Name 347 "param" + Name 376 "i" + Name 395 "shadowClip" + Name 402 "Light" + MemberName 402(Light) 0 "position" + MemberName 402(Light) 1 "target" + MemberName 402(Light) 2 "color" + MemberName 402(Light) 3 "viewMatrix" + Name 415 "UBO" + MemberName 415(UBO) 0 "viewPos" + MemberName 415(UBO) 1 "lights" + MemberName 415(UBO) 2 "useShadows" + MemberName 415(UBO) 3 "debugDisplayTarget" + Name 428 "ubo" + Name 444 "shadowFactor" + Name 449 "param" + Name 451 "param" + Name 472 "fragPos" + Name 482 "samplerposition" + Name 488 "inUV" + Name 496 "normal" + Name 500 "samplerNormal" + Name 509 "albedo" + Name 513 "samplerAlbedo" + Name 544 "outFragColor" + Name 548 "param" + Name 549 "param" + Name 628 "fragcolor" + Name 637 "N" + Name 645 "i" + Name 662 "L" + Name 676 "dist" + Name 687 "V" + Name 702 "lightCosInnerAngle" + Name 709 "lightCosOuterAngle" + Name 716 "lightRange" + Name 723 "dir" + Name 739 "cosDir" + Name 748 "spotEffect" + Name 758 "heightAttenuation" + Name 767 "NdotL" + Name 777 "diff" + Name 785 "R" + Name 795 "NdotR" + Name 805 "spec" + Name 857 "param" + Name 859 "param" + Decorate 179(samplerShadowMap) DescriptorSet 0 + Decorate 179(samplerShadowMap) Binding 5 + MemberDecorate 402(Light) 0 Offset 0 + MemberDecorate 402(Light) 1 Offset 16 + MemberDecorate 402(Light) 2 Offset 32 + MemberDecorate 402(Light) 3 ColMajor + MemberDecorate 402(Light) 3 Offset 48 + MemberDecorate 402(Light) 3 MatrixStride 16 + Decorate 413 ArrayStride 112 + MemberDecorate 415(UBO) 0 Offset 0 + MemberDecorate 415(UBO) 1 Offset 16 + MemberDecorate 415(UBO) 2 Offset 352 + MemberDecorate 415(UBO) 3 Offset 356 + Decorate 415(UBO) Block + Decorate 428(ubo) DescriptorSet 0 + Decorate 428(ubo) Binding 4 + Decorate 482(samplerposition) DescriptorSet 0 + Decorate 482(samplerposition) Binding 1 + Decorate 488(inUV) Location 0 + Decorate 500(samplerNormal) DescriptorSet 0 + Decorate 500(samplerNormal) Binding 2 + Decorate 513(samplerAlbedo) DescriptorSet 0 + Decorate 513(samplerAlbedo) Binding 3 + Decorate 544(outFragColor) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -196,904 +196,920 @@ spv.debuginfo.glsl.frag 20: 7(int) Constant 4 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypePointer Function 19(fvec4) - 23: TypePointer Function 16(float) - 24: TypeVector 16(float) 2 - 25: 7(int) Constant 2 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 25 - 27: TypePointer Function 24(fvec2) - 28: TypeFunction 16(float) 22(ptr) 23(ptr) 27(ptr) - 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 26 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 38 - 39: 7(int) Constant 59 - 41: 7(int) Constant 1 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 41 20 37 25 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 29 37 39 12 40 35 13 39 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 21 37 39 12 36 20 41 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 18 37 39 12 36 20 25 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 26 37 39 12 36 20 13 - 54: TypeFunction 16(float) 22(ptr) 23(ptr) - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 - 62: 7(int) Constant 76 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 60 55 37 62 12 40 60 13 62 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 21 37 62 12 61 20 41 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 18 37 62 12 61 20 25 - 70: TypeVector 16(float) 3 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 - 72: TypePointer Function 70(fvec3) - 73: TypeFunction 70(fvec3) 72(ptr) 72(ptr) - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 71 71 71 - 81: 7(int) Constant 99 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 74 37 81 12 40 79 13 81 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 37 81 12 80 20 41 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 37 81 12 80 20 25 - 92: 7(int) Constant 116 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 90 6 37 92 12 40 90 13 92 - 95: 7(int) Constant 41 - 96: TypeInt 32 1 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 10 20 12 - 99: TypePointer Private 96(int) - 100(global_var): 99(ptr) Variable Private - 103: 7(int) Constant 8 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 102 98 37 95 12 40 102 100(global_var) 103 - 104: 96(int) Constant 0 - 108: 7(int) Constant 61 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 18 37 108 12 36 20 - 112: 16(float) Constant 1065353216 - 114: 7(int) Constant 62 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 21 37 114 12 36 20 - 125: 7(int) Constant 63 - 128: 16(float) Constant 1056964608 - 137: 7(int) Constant 65 - 138: TypeBool - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 10 25 12 - 143: 16(float) Constant 3212836864 - 157: 7(int) Constant 67 - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 18 37 157 12 36 20 - 162: TypeImage 16(float) 2D array sampled format:Unknown - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 164 12 37 157 12 40 165 166 13 - 167: TypeSampledImage 162 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 37 157 12 40 170 166 13 - 171: TypePointer UniformConstant 167 -172(samplerShadowMap): 171(ptr) Variable UniformConstant - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 174 168 37 157 12 40 174 172(samplerShadowMap) 103 - 187: 7(int) Constant 68 - 190: 16(float) Constant 0 - 205: 7(int) Constant 70 - 206: 16(float) Constant 1048576000 - 209: 7(int) Constant 73 - 216: 7(int) Constant 78 - 217: TypeVector 96(int) 2 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 25 - 219: TypePointer Function 217(ivec2) - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 222 218 37 216 12 61 20 - 226: TypeVector 96(int) 3 - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 13 - 231: 7(int) Constant 79 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 234 18 37 231 12 61 20 - 236: 16(float) Constant 1069547520 - 238: 7(int) Constant 80 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 241 18 37 238 12 61 20 - 245: TypePointer Function 96(int) - 251: 7(int) Constant 81 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 18 37 251 12 61 20 - 263: 7(int) Constant 83 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 18 37 263 12 61 20 - 269: 7(int) Constant 84 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 98 37 269 12 61 20 - 275: 7(int) Constant 85 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 98 37 275 12 61 20 - 280: 96(int) Constant 1 - 282: 7(int) Constant 87 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 285 98 37 282 12 61 20 - 303: 7(int) Constant 89 - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 306 98 37 303 12 61 20 - 324: 7(int) Constant 91 - 343: 7(int) Constant 92 - 356: 7(int) Constant 96 - 366: 7(int) Constant 100 - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 369 98 37 366 12 80 20 - 381: 96(int) Constant 3 - 385: 7(int) Constant 102 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 388 21 37 385 12 80 20 - 390: TypeMatrix 19(fvec4) 4 - 392: 138(bool) ConstantTrue - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 392 - 393(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 390 - 396: 7(int) Constant 47 - 397: 7(int) Constant 7 - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 - 402: 7(int) Constant 48 - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 401 391 37 402 397 12 12 13 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 404 41 37 385 12 40 404 12 13 394 398 399 400 - 405: TypeArray 393(Light) 13 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 403 13 - 407(UBO): TypeStruct 19(fvec4) 405 96(int) 96(int) - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 395 21 37 396 397 12 12 13 - 411: 7(int) Constant 54 - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 410 406 37 411 103 12 12 13 - 414: 7(int) Constant 56 - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 413 98 37 414 11 12 12 13 - 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 413 98 37 414 11 12 12 13 - 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 417 41 37 385 12 40 417 12 13 408 409 412 415 - 418: TypePointer Uniform 407(UBO) - 419(ubo): 418(ptr) Variable Uniform - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 421 416 37 385 12 40 421 419(ubo) 103 - 423: TypePointer Uniform 390 - 433: 7(int) Constant 106 - 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 18 37 433 12 80 20 - 444: 7(int) Constant 111 - 454: 7(int) Constant 113 - 461: 7(int) Constant 119 - 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 464 71 37 461 12 91 20 - 466: TypeImage 16(float) 2D sampled format:Unknown - 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 164 12 37 461 12 40 165 166 13 - 468: TypeSampledImage 466 - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 37 461 12 40 170 166 13 - 470: TypePointer UniformConstant 468 -471(samplerposition): 470(ptr) Variable UniformConstant - 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 473 469 37 461 12 40 473 471(samplerposition) 103 - 475: TypePointer Input 24(fvec2) - 476(inUV): 475(ptr) Variable Input - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 478 26 37 461 12 40 478 476(inUV) 103 - 483: 7(int) Constant 120 - 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 486 71 37 483 12 91 20 -488(samplerNormal): 470(ptr) Variable UniformConstant - 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 490 469 37 483 12 40 490 488(samplerNormal) 103 - 496: 7(int) Constant 121 - 498: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 499 21 37 496 12 91 20 -501(samplerAlbedo): 470(ptr) Variable UniformConstant - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 503 469 37 496 12 40 503 501(samplerAlbedo) 103 - 508: 7(int) Constant 124 - 509: TypePointer Uniform 96(int) - 517: 7(int) Constant 125 - 528: 7(int) Constant 127 - 529: TypePointer Output 19(fvec4) -530(outFragColor): 529(ptr) Variable Output - 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 532 21 37 528 12 40 532 530(outFragColor) 103 - 533: 70(fvec3) ConstantComposite 112 112 112 - 538: TypePointer Output 16(float) - 546: 7(int) Constant 128 - 550: 7(int) Constant 130 - 559: 7(int) Constant 131 - 563: 7(int) Constant 133 - 572: 7(int) Constant 134 - 576: 7(int) Constant 136 - 586: 7(int) Constant 137 - 590: 7(int) Constant 139 - 600: 7(int) Constant 140 - 605: 7(int) Constant 142 - 608: 7(int) Constant 143 - 612: 7(int) Constant 147 - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 37 612 12 91 20 - 618: 16(float) Constant 1036831949 - 621: 7(int) Constant 149 - 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 624 71 37 621 12 91 20 - 629: 7(int) Constant 151 - 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 369 98 37 629 12 91 20 - 646: 7(int) Constant 154 - 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 649 71 37 646 12 91 20 - 652: TypePointer Uniform 19(fvec4) - 659: 7(int) Constant 156 - 661: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 18 37 659 12 91 20 - 666: 7(int) Constant 157 - 670: 7(int) Constant 160 - 672: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 673 71 37 670 12 91 20 - 681: 7(int) Constant 161 - 685: 7(int) Constant 163 - 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 688 18 37 685 12 91 20 - 690: 16(float) Constant 1064781546 - 692: 7(int) Constant 164 - 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 695 18 37 692 12 91 20 - 697: 16(float) Constant 1063781322 - 699: 7(int) Constant 165 - 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 702 18 37 699 12 91 20 - 704: 16(float) Constant 1120403456 - 706: 7(int) Constant 168 - 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 709 71 37 706 12 91 20 - 722: 7(int) Constant 171 - 724: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 18 37 722 12 91 20 - 731: 7(int) Constant 172 - 733: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 18 37 731 12 91 20 - 741: 7(int) Constant 173 - 743: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 744 18 37 741 12 91 20 - 750: 7(int) Constant 176 - 752: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 753 18 37 750 12 91 20 - 760: 7(int) Constant 177 - 762: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 763 71 37 760 12 91 20 - 768: 7(int) Constant 180 - 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 771 71 37 768 12 91 20 - 778: 7(int) Constant 181 - 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 781 18 37 778 12 91 20 - 788: 7(int) Constant 182 - 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 791 71 37 788 12 91 20 - 794: 16(float) Constant 1098907648 - 799: 16(float) Constant 1075838976 - 803: 7(int) Constant 184 - 816: 96(int) Constant 2 - 832: 7(int) Constant 188 - 840: 7(int) Constant 190 - 848: 7(int) Constant 193 + 23: 7(int) Constant 7 + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 + 25: TypePointer Function 16(float) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 + 27: TypeVector 16(float) 2 + 28: 7(int) Constant 2 + 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 28 + 30: TypePointer Function 27(fvec2) + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 23 12 + 32: TypeFunction 16(float) 22(ptr) 25(ptr) 30(ptr) + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 29 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 42 + 43: 7(int) Constant 59 + 45: 7(int) Constant 1 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 45 20 41 28 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 33 41 43 12 44 39 13 43 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 21 41 43 12 40 20 45 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 43 12 40 20 28 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 29 41 43 12 40 20 13 + 58: TypeFunction 16(float) 22(ptr) 25(ptr) + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 + 66: 7(int) Constant 76 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 41 66 12 44 64 13 66 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 21 41 66 12 65 20 45 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 66 12 65 20 28 + 74: TypeVector 16(float) 3 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 76: TypePointer Function 74(fvec3) + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 23 12 + 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 75 75 75 + 86: 7(int) Constant 99 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 41 86 12 44 84 13 86 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 41 86 12 85 20 45 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 41 86 12 85 20 28 + 97: 7(int) Constant 116 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 95 6 41 97 12 44 95 13 97 + 100: 7(int) Constant 41 + 101: TypeInt 32 1 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 102 10 20 12 + 104: TypePointer Private 101(int) + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 11 12 + 106(global_var): 104(ptr) Variable Private + 109: 7(int) Constant 8 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 108 103 41 100 12 44 108 106(global_var) 109 + 110: 101(int) Constant 0 + 114: 7(int) Constant 61 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 18 41 114 12 40 20 + 118: 16(float) Constant 1065353216 + 120: 7(int) Constant 62 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 21 41 120 12 40 20 + 131: 7(int) Constant 63 + 134: 16(float) Constant 1056964608 + 143: 7(int) Constant 65 + 144: TypeBool + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 145 10 28 12 + 149: 16(float) Constant 3212836864 + 163: 7(int) Constant 67 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 18 41 163 12 40 20 + 168: TypeImage 16(float) 2D array sampled format:Unknown + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 163 12 44 171 172 13 + 173: TypeSampledImage 168 + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 163 12 44 176 172 13 + 177: TypePointer UniformConstant 173 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 174 12 12 +179(samplerShadowMap): 177(ptr) Variable UniformConstant + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 181 174 41 163 12 44 181 179(samplerShadowMap) 109 + 194: 7(int) Constant 68 + 197: 16(float) Constant 0 + 212: 7(int) Constant 70 + 213: 16(float) Constant 1048576000 + 216: 7(int) Constant 73 + 223: 7(int) Constant 78 + 224: TypeVector 101(int) 2 + 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 103 28 + 226: TypePointer Function 224(ivec2) + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 225 23 12 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 230 225 41 223 12 65 20 + 234: TypeVector 101(int) 3 + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 103 13 + 239: 7(int) Constant 79 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 242 18 41 239 12 65 20 + 244: 16(float) Constant 1069547520 + 246: 7(int) Constant 80 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 18 41 246 12 65 20 + 253: TypePointer Function 101(int) + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 23 12 + 260: 7(int) Constant 81 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 18 41 260 12 65 20 + 272: 7(int) Constant 83 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 272 12 65 20 + 278: 7(int) Constant 84 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 281 103 41 278 12 65 20 + 284: 7(int) Constant 85 + 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 287 103 41 284 12 65 20 + 289: 101(int) Constant 1 + 291: 7(int) Constant 87 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 294 103 41 291 12 65 20 + 312: 7(int) Constant 89 + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 315 103 41 312 12 65 20 + 333: 7(int) Constant 91 + 352: 7(int) Constant 92 + 365: 7(int) Constant 96 + 375: 7(int) Constant 100 + 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 378 103 41 375 12 85 20 + 390: 101(int) Constant 3 + 394: 7(int) Constant 102 + 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 397 21 41 394 12 85 20 + 399: TypeMatrix 19(fvec4) 4 + 401: 144(bool) ConstantTrue + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 401 + 402(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 399 + 405: 7(int) Constant 47 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 + 410: 7(int) Constant 48 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 409 400 41 410 23 12 12 13 + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 412 45 41 394 12 44 412 12 13 403 406 407 408 + 413: TypeArray 402(Light) 13 + 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 411 13 + 415(UBO): TypeStruct 19(fvec4) 413 101(int) 101(int) + 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 + 419: 7(int) Constant 54 + 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 418 414 41 419 109 12 12 13 + 422: 7(int) Constant 56 + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 103 41 422 11 12 12 13 + 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 103 41 422 11 12 12 13 + 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 425 45 41 394 12 44 425 12 13 416 417 420 423 + 426: TypePointer Uniform 415(UBO) + 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 424 28 12 + 428(ubo): 426(ptr) Variable Uniform + 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 424 41 394 12 44 430 428(ubo) 109 + 432: TypePointer Uniform 399 + 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 400 28 12 + 443: 7(int) Constant 106 + 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 443 12 85 20 + 454: 7(int) Constant 111 + 464: 7(int) Constant 113 + 471: 7(int) Constant 119 + 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 474 75 41 471 12 96 20 + 476: TypeImage 16(float) 2D sampled format:Unknown + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 471 12 44 171 172 13 + 478: TypeSampledImage 476 + 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 471 12 44 176 172 13 + 480: TypePointer UniformConstant 478 + 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 479 12 12 +482(samplerposition): 480(ptr) Variable UniformConstant + 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 484 479 41 471 12 44 484 482(samplerposition) 109 + 486: TypePointer Input 27(fvec2) + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12 + 488(inUV): 486(ptr) Variable Input + 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 490 29 41 471 12 44 490 488(inUV) 109 + 495: 7(int) Constant 120 + 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 498 75 41 495 12 96 20 +500(samplerNormal): 480(ptr) Variable UniformConstant + 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 502 479 41 495 12 44 502 500(samplerNormal) 109 + 508: 7(int) Constant 121 + 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 511 21 41 508 12 96 20 +513(samplerAlbedo): 480(ptr) Variable UniformConstant + 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 515 479 41 508 12 44 515 513(samplerAlbedo) 109 + 520: 7(int) Constant 124 + 521: TypePointer Uniform 101(int) + 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 28 12 + 530: 7(int) Constant 125 + 541: 7(int) Constant 127 + 542: TypePointer Output 19(fvec4) + 543: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 +544(outFragColor): 542(ptr) Variable Output + 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 546 21 41 541 12 44 546 544(outFragColor) 109 + 547: 74(fvec3) ConstantComposite 118 118 118 + 552: TypePointer Output 16(float) + 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 561: 7(int) Constant 128 + 565: 7(int) Constant 130 + 574: 7(int) Constant 131 + 578: 7(int) Constant 133 + 587: 7(int) Constant 134 + 591: 7(int) Constant 136 + 601: 7(int) Constant 137 + 605: 7(int) Constant 139 + 615: 7(int) Constant 140 + 620: 7(int) Constant 142 + 623: 7(int) Constant 143 + 627: 7(int) Constant 147 + 629: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 41 627 12 96 20 + 633: 16(float) Constant 1036831949 + 636: 7(int) Constant 149 + 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 639 75 41 636 12 96 20 + 644: 7(int) Constant 151 + 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 378 103 41 644 12 96 20 + 661: 7(int) Constant 154 + 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 664 75 41 661 12 96 20 + 667: TypePointer Uniform 19(fvec4) + 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12 + 675: 7(int) Constant 156 + 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 18 41 675 12 96 20 + 682: 7(int) Constant 157 + 686: 7(int) Constant 160 + 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 689 75 41 686 12 96 20 + 697: 7(int) Constant 161 + 701: 7(int) Constant 163 + 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 704 18 41 701 12 96 20 + 706: 16(float) Constant 1064781546 + 708: 7(int) Constant 164 + 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 711 18 41 708 12 96 20 + 713: 16(float) Constant 1063781322 + 715: 7(int) Constant 165 + 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 718 18 41 715 12 96 20 + 720: 16(float) Constant 1120403456 + 722: 7(int) Constant 168 + 724: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 75 41 722 12 96 20 + 738: 7(int) Constant 171 + 740: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 741 18 41 738 12 96 20 + 747: 7(int) Constant 172 + 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 750 18 41 747 12 96 20 + 757: 7(int) Constant 173 + 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 760 18 41 757 12 96 20 + 766: 7(int) Constant 176 + 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 769 18 41 766 12 96 20 + 776: 7(int) Constant 177 + 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 779 75 41 776 12 96 20 + 784: 7(int) Constant 180 + 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 75 41 784 12 96 20 + 794: 7(int) Constant 181 + 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 797 18 41 794 12 96 20 + 804: 7(int) Constant 182 + 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 807 75 41 804 12 96 20 + 810: 16(float) Constant 1098907648 + 815: 16(float) Constant 1075838976 + 819: 7(int) Constant 184 + 832: 101(int) Constant 2 + 848: 7(int) Constant 188 + 856: 7(int) Constant 190 + 864: 7(int) Constant 193 Line 1 116 11 14(main): 4 Function None 5 15: Label - 462(fragPos): 72(ptr) Variable Function - 484(normal): 72(ptr) Variable Function - 497(albedo): 22(ptr) Variable Function - 534(param): 72(ptr) Variable Function - 535(param): 72(ptr) Variable Function - 613(fragcolor): 72(ptr) Variable Function - 622(N): 72(ptr) Variable Function - 630(i): 245(ptr) Variable Function - 647(L): 72(ptr) Variable Function - 660(dist): 23(ptr) Variable Function - 671(V): 72(ptr) Variable Function -686(lightCosInnerAngle): 23(ptr) Variable Function -693(lightCosOuterAngle): 23(ptr) Variable Function - 700(lightRange): 23(ptr) Variable Function - 707(dir): 72(ptr) Variable Function - 723(cosDir): 23(ptr) Variable Function - 732(spotEffect): 23(ptr) Variable Function -742(heightAttenuation): 23(ptr) Variable Function - 751(NdotL): 23(ptr) Variable Function - 761(diff): 72(ptr) Variable Function - 769(R): 72(ptr) Variable Function - 779(NdotR): 23(ptr) Variable Function - 789(spec): 72(ptr) Variable Function - 841(param): 72(ptr) Variable Function - 843(param): 72(ptr) Variable Function - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 95 95 12 12 - Store 100(global_var) 104 - 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 14(main) - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 461 461 12 12 - 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 463 462(fragPos) 47 - 474: 468 Load 471(samplerposition) - 479: 24(fvec2) Load 476(inUV) - 480: 19(fvec4) ImageSampleImplicitLod 474 479 - 481: 70(fvec3) VectorShuffle 480 480 0 1 2 - Store 462(fragPos) 481 - 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 483 483 12 12 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 485 484(normal) 47 - 491: 468 Load 488(samplerNormal) - 492: 24(fvec2) Load 476(inUV) - 493: 19(fvec4) ImageSampleImplicitLod 491 492 - 494: 70(fvec3) VectorShuffle 493 493 0 1 2 - Store 484(normal) 494 - 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 496 496 12 12 - 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 498 497(albedo) 47 - 504: 468 Load 501(samplerAlbedo) - 505: 24(fvec2) Load 476(inUV) - 506: 19(fvec4) ImageSampleImplicitLod 504 505 - Store 497(albedo) 506 - 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 508 508 12 12 - 510: 509(ptr) AccessChain 419(ubo) 381 - 511: 96(int) Load 510 - 512: 138(bool) SGreaterThan 511 104 - SelectionMerge 514 None - BranchConditional 512 513 514 - 513: Label - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 517 517 12 12 - 518: 509(ptr) AccessChain 419(ubo) 381 - 519: 96(int) Load 518 - SelectionMerge 525 None - Switch 519 525 - case 1: 520 - case 2: 521 - case 3: 522 - case 4: 523 - case 5: 524 - 520: Label - 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 528 528 12 12 - Store 534(param) 533 - 536: 70(fvec3) Load 462(fragPos) - Store 535(param) 536 - 537: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 534(param) 535(param) - 539: 538(ptr) AccessChain 530(outFragColor) 12 - 540: 16(float) CompositeExtract 537 0 - Store 539 540 - 541: 538(ptr) AccessChain 530(outFragColor) 41 - 542: 16(float) CompositeExtract 537 1 - Store 541 542 - 543: 538(ptr) AccessChain 530(outFragColor) 25 - 544: 16(float) CompositeExtract 537 2 - Store 543 544 - 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 546 546 12 12 - Branch 525 - 521: Label - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 550 550 12 12 - 551: 70(fvec3) Load 462(fragPos) - 552: 538(ptr) AccessChain 530(outFragColor) 12 - 553: 16(float) CompositeExtract 551 0 - Store 552 553 - 554: 538(ptr) AccessChain 530(outFragColor) 41 - 555: 16(float) CompositeExtract 551 1 + 472(fragPos): 76(ptr) Variable Function + 496(normal): 76(ptr) Variable Function + 509(albedo): 22(ptr) Variable Function + 548(param): 76(ptr) Variable Function + 549(param): 76(ptr) Variable Function + 628(fragcolor): 76(ptr) Variable Function + 637(N): 76(ptr) Variable Function + 645(i): 253(ptr) Variable Function + 662(L): 76(ptr) Variable Function + 676(dist): 25(ptr) Variable Function + 687(V): 76(ptr) Variable Function +702(lightCosInnerAngle): 25(ptr) Variable Function +709(lightCosOuterAngle): 25(ptr) Variable Function + 716(lightRange): 25(ptr) Variable Function + 723(dir): 76(ptr) Variable Function + 739(cosDir): 25(ptr) Variable Function + 748(spotEffect): 25(ptr) Variable Function +758(heightAttenuation): 25(ptr) Variable Function + 767(NdotL): 25(ptr) Variable Function + 777(diff): 76(ptr) Variable Function + 785(R): 76(ptr) Variable Function + 795(NdotR): 25(ptr) Variable Function + 805(spec): 76(ptr) Variable Function + 857(param): 76(ptr) Variable Function + 859(param): 76(ptr) Variable Function + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 100 100 12 12 + Store 106(global_var) 110 + 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 14(main) + 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 471 471 12 12 + 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 473 472(fragPos) 51 + 485: 478 Load 482(samplerposition) + 491: 27(fvec2) Load 488(inUV) + 492: 19(fvec4) ImageSampleImplicitLod 485 491 + 493: 74(fvec3) VectorShuffle 492 492 0 1 2 + Store 472(fragPos) 493 + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 495 495 12 12 + 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 497 496(normal) 51 + 503: 478 Load 500(samplerNormal) + 504: 27(fvec2) Load 488(inUV) + 505: 19(fvec4) ImageSampleImplicitLod 503 504 + 506: 74(fvec3) VectorShuffle 505 505 0 1 2 + Store 496(normal) 506 + 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 508 508 12 12 + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 510 509(albedo) 51 + 516: 478 Load 513(samplerAlbedo) + 517: 27(fvec2) Load 488(inUV) + 518: 19(fvec4) ImageSampleImplicitLod 516 517 + Store 509(albedo) 518 + 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 520 520 12 12 + 523: 521(ptr) AccessChain 428(ubo) 390 + 524: 101(int) Load 523 + 525: 144(bool) SGreaterThan 524 110 + SelectionMerge 527 None + BranchConditional 525 526 527 + 526: Label + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 530 530 12 12 + 531: 521(ptr) AccessChain 428(ubo) 390 + 532: 101(int) Load 531 + SelectionMerge 538 None + Switch 532 538 + case 1: 533 + case 2: 534 + case 3: 535 + case 4: 536 + case 5: 537 + 533: Label + 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 541 541 12 12 + Store 548(param) 547 + 550: 74(fvec3) Load 472(fragPos) + Store 549(param) 550 + 551: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 548(param) 549(param) + 554: 552(ptr) AccessChain 544(outFragColor) 12 + 555: 16(float) CompositeExtract 551 0 Store 554 555 - 556: 538(ptr) AccessChain 530(outFragColor) 25 - 557: 16(float) CompositeExtract 551 2 + 556: 552(ptr) AccessChain 544(outFragColor) 45 + 557: 16(float) CompositeExtract 551 1 Store 556 557 - 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 559 559 12 12 - Branch 525 - 522: Label - 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 563 563 12 12 - 564: 70(fvec3) Load 484(normal) - 565: 538(ptr) AccessChain 530(outFragColor) 12 - 566: 16(float) CompositeExtract 564 0 - Store 565 566 - 567: 538(ptr) AccessChain 530(outFragColor) 41 - 568: 16(float) CompositeExtract 564 1 + 558: 552(ptr) AccessChain 544(outFragColor) 28 + 559: 16(float) CompositeExtract 551 2 + Store 558 559 + 560: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 561 561 12 12 + Branch 538 + 534: Label + 563: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 565 565 12 12 + 566: 74(fvec3) Load 472(fragPos) + 567: 552(ptr) AccessChain 544(outFragColor) 12 + 568: 16(float) CompositeExtract 566 0 Store 567 568 - 569: 538(ptr) AccessChain 530(outFragColor) 25 - 570: 16(float) CompositeExtract 564 2 + 569: 552(ptr) AccessChain 544(outFragColor) 45 + 570: 16(float) CompositeExtract 566 1 Store 569 570 - 571: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 572 572 12 12 - Branch 525 - 523: Label - 574: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 575: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 576 576 12 12 - 577: 19(fvec4) Load 497(albedo) - 578: 70(fvec3) VectorShuffle 577 577 0 1 2 - 579: 538(ptr) AccessChain 530(outFragColor) 12 - 580: 16(float) CompositeExtract 578 0 - Store 579 580 - 581: 538(ptr) AccessChain 530(outFragColor) 41 - 582: 16(float) CompositeExtract 578 1 - Store 581 582 - 583: 538(ptr) AccessChain 530(outFragColor) 25 - 584: 16(float) CompositeExtract 578 2 - Store 583 584 - 585: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 586 586 12 12 - Branch 525 - 524: Label - 588: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 589: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 590 590 12 12 - 591: 19(fvec4) Load 497(albedo) - 592: 70(fvec3) VectorShuffle 591 591 3 3 3 - 593: 538(ptr) AccessChain 530(outFragColor) 12 - 594: 16(float) CompositeExtract 592 0 - Store 593 594 - 595: 538(ptr) AccessChain 530(outFragColor) 41 - 596: 16(float) CompositeExtract 592 1 - Store 595 596 - 597: 538(ptr) AccessChain 530(outFragColor) 25 - 598: 16(float) CompositeExtract 592 2 - Store 597 598 - 599: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 600 600 12 12 - Branch 525 - 525: Label - 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 605 605 12 12 - 606: 538(ptr) AccessChain 530(outFragColor) 13 - Store 606 112 - 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 608 608 12 12 + 571: 552(ptr) AccessChain 544(outFragColor) 28 + 572: 16(float) CompositeExtract 566 2 + Store 571 572 + 573: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 574 574 12 12 + Branch 538 + 535: Label + 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 577: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 578 578 12 12 + 579: 74(fvec3) Load 496(normal) + 580: 552(ptr) AccessChain 544(outFragColor) 12 + 581: 16(float) CompositeExtract 579 0 + Store 580 581 + 582: 552(ptr) AccessChain 544(outFragColor) 45 + 583: 16(float) CompositeExtract 579 1 + Store 582 583 + 584: 552(ptr) AccessChain 544(outFragColor) 28 + 585: 16(float) CompositeExtract 579 2 + Store 584 585 + 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 587 587 12 12 + Branch 538 + 536: Label + 589: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 590: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 591 591 12 12 + 592: 19(fvec4) Load 509(albedo) + 593: 74(fvec3) VectorShuffle 592 592 0 1 2 + 594: 552(ptr) AccessChain 544(outFragColor) 12 + 595: 16(float) CompositeExtract 593 0 + Store 594 595 + 596: 552(ptr) AccessChain 544(outFragColor) 45 + 597: 16(float) CompositeExtract 593 1 + Store 596 597 + 598: 552(ptr) AccessChain 544(outFragColor) 28 + 599: 16(float) CompositeExtract 593 2 + Store 598 599 + 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 601 601 12 12 + Branch 538 + 537: Label + 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 605 605 12 12 + 606: 19(fvec4) Load 509(albedo) + 607: 74(fvec3) VectorShuffle 606 606 3 3 3 + 608: 552(ptr) AccessChain 544(outFragColor) 12 + 609: 16(float) CompositeExtract 607 0 + Store 608 609 + 610: 552(ptr) AccessChain 544(outFragColor) 45 + 611: 16(float) CompositeExtract 607 1 + Store 610 611 + 612: 552(ptr) AccessChain 544(outFragColor) 28 + 613: 16(float) CompositeExtract 607 2 + Store 612 613 + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 615 615 12 12 + Branch 538 + 538: Label + 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 620 620 12 12 + 621: 552(ptr) AccessChain 544(outFragColor) 13 + Store 621 118 + 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 623 623 12 12 Return - 514: Label - 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 612 612 12 12 - 615: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 614 613(fragcolor) 47 - 616: 19(fvec4) Load 497(albedo) - 617: 70(fvec3) VectorShuffle 616 616 0 1 2 - 619: 70(fvec3) VectorTimesScalar 617 618 - Store 613(fragcolor) 619 - 620: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 621 621 12 12 - 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 623 622(N) 47 - 626: 70(fvec3) Load 484(normal) - 627: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 626 - Store 622(N) 627 - 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 - 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 631 630(i) 47 - Store 630(i) 104 - Branch 633 - 633: Label - 637: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 - LoopMerge 635 636 None - Branch 639 - 639: Label - 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 - 642: 96(int) Load 630(i) - 643: 138(bool) SLessThan 642 381 - BranchConditional 643 634 635 - 634: Label - 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 645: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 646 646 12 12 - 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 648 647(L) 47 - 651: 96(int) Load 630(i) - 653: 652(ptr) AccessChain 419(ubo) 280 651 104 - 654: 19(fvec4) Load 653 - 655: 70(fvec3) VectorShuffle 654 654 0 1 2 - 656: 70(fvec3) Load 462(fragPos) - 657: 70(fvec3) FSub 655 656 - Store 647(L) 657 - 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 659 659 12 12 - 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 661 660(dist) 47 - 663: 70(fvec3) Load 647(L) - 664: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 663 - Store 660(dist) 664 - 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 666 666 12 12 - 667: 70(fvec3) Load 647(L) - 668: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 667 - Store 647(L) 668 - 669: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 670 670 12 12 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 672 671(V) 47 - 675: 652(ptr) AccessChain 419(ubo) 104 - 676: 19(fvec4) Load 675 - 677: 70(fvec3) VectorShuffle 676 676 0 1 2 - 678: 70(fvec3) Load 462(fragPos) - 679: 70(fvec3) FSub 677 678 - Store 671(V) 679 - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 681 681 12 12 - 682: 70(fvec3) Load 671(V) - 683: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 682 - Store 671(V) 683 - 684: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 685 685 12 12 - 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 687 686(lightCosInnerAngle) 47 - Store 686(lightCosInnerAngle) 690 - 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 692 692 12 12 - 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 694 693(lightCosOuterAngle) 47 - Store 693(lightCosOuterAngle) 697 - 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 699 699 12 12 - 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 701 700(lightRange) 47 - Store 700(lightRange) 704 - 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 706 706 12 12 - 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 708 707(dir) 47 - 711: 96(int) Load 630(i) - 712: 652(ptr) AccessChain 419(ubo) 280 711 104 - 713: 19(fvec4) Load 712 - 714: 70(fvec3) VectorShuffle 713 713 0 1 2 - 715: 96(int) Load 630(i) - 716: 652(ptr) AccessChain 419(ubo) 280 715 280 - 717: 19(fvec4) Load 716 - 718: 70(fvec3) VectorShuffle 717 717 0 1 2 - 719: 70(fvec3) FSub 714 718 - 720: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 719 - Store 707(dir) 720 - 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 722 722 12 12 - 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(cosDir) 47 - 727: 70(fvec3) Load 647(L) - 728: 70(fvec3) Load 707(dir) - 729: 16(float) Dot 727 728 - Store 723(cosDir) 729 - 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 731 731 12 12 - 735: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(spotEffect) 47 - 736: 16(float) Load 693(lightCosOuterAngle) - 737: 16(float) Load 686(lightCosInnerAngle) - 738: 16(float) Load 723(cosDir) - 739: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 736 737 738 - Store 732(spotEffect) 739 - 740: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 741 741 12 12 - 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 743 742(heightAttenuation) 47 - 746: 16(float) Load 700(lightRange) - 747: 16(float) Load 660(dist) - 748: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 746 190 747 - Store 742(heightAttenuation) 748 - 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 750 750 12 12 - 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 752 751(NdotL) 47 - 755: 70(fvec3) Load 622(N) - 756: 70(fvec3) Load 647(L) - 757: 16(float) Dot 755 756 - 758: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 190 757 - Store 751(NdotL) 758 - 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 760 760 12 12 - 764: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 762 761(diff) 47 - 765: 16(float) Load 751(NdotL) - 766: 70(fvec3) CompositeConstruct 765 765 765 - Store 761(diff) 766 - 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 768 768 12 12 - 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 770 769(R) 47 - 773: 70(fvec3) Load 647(L) - 774: 70(fvec3) FNegate 773 - 775: 70(fvec3) Load 622(N) - 776: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 774 775 - Store 769(R) 776 - 777: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 778 778 12 12 - 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 780 779(NdotR) 47 - 783: 70(fvec3) Load 769(R) - 784: 70(fvec3) Load 671(V) - 785: 16(float) Dot 783 784 - 786: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 190 785 - Store 779(NdotR) 786 - 787: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 788 788 12 12 - 792: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 790 789(spec) 47 - 793: 16(float) Load 779(NdotR) - 795: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 793 794 - 796: 23(ptr) AccessChain 497(albedo) 13 - 797: 16(float) Load 796 - 798: 16(float) FMul 795 797 - 800: 16(float) FMul 798 799 - 801: 70(fvec3) CompositeConstruct 800 800 800 - Store 789(spec) 801 - 802: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 803 803 12 12 - 804: 70(fvec3) Load 761(diff) - 805: 70(fvec3) Load 789(spec) - 806: 70(fvec3) FAdd 804 805 - 807: 16(float) Load 732(spotEffect) - 808: 70(fvec3) VectorTimesScalar 806 807 - 809: 16(float) Load 742(heightAttenuation) - 810: 70(fvec3) VectorTimesScalar 808 809 - 811: 16(float) CompositeExtract 810 0 - 812: 16(float) CompositeExtract 810 1 - 813: 16(float) CompositeExtract 810 2 - 814: 70(fvec3) CompositeConstruct 811 812 813 - 815: 96(int) Load 630(i) - 817: 652(ptr) AccessChain 419(ubo) 280 815 816 - 818: 19(fvec4) Load 817 - 819: 70(fvec3) VectorShuffle 818 818 0 1 2 - 820: 70(fvec3) FMul 814 819 - 821: 19(fvec4) Load 497(albedo) - 822: 70(fvec3) VectorShuffle 821 821 0 1 2 - 823: 70(fvec3) FMul 820 822 - 824: 70(fvec3) Load 613(fragcolor) - 825: 70(fvec3) FAdd 824 823 - Store 613(fragcolor) 825 - Branch 636 - 636: Label - 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 827: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 629 629 12 12 - 828: 96(int) Load 630(i) - 829: 96(int) IAdd 828 280 - Store 630(i) 829 - Branch 633 - 635: Label - 830: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 832 832 12 12 - 833: 509(ptr) AccessChain 419(ubo) 816 - 834: 96(int) Load 833 - 835: 138(bool) SGreaterThan 834 104 - SelectionMerge 837 None - BranchConditional 835 836 837 - 836: Label - 838: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 840 840 12 12 - 842: 70(fvec3) Load 613(fragcolor) - Store 841(param) 842 - 844: 70(fvec3) Load 462(fragPos) - Store 843(param) 844 - 845: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 841(param) 843(param) - Store 613(fragcolor) 845 - Branch 837 - 837: Label - 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 - 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 848 848 12 12 - 849: 70(fvec3) Load 613(fragcolor) - 850: 16(float) CompositeExtract 849 0 - 851: 16(float) CompositeExtract 849 1 - 852: 16(float) CompositeExtract 849 2 - 853: 19(fvec4) CompositeConstruct 850 851 852 112 - Store 530(outFragColor) 853 + 527: Label + 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 626: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 627 627 12 12 + 630: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 629 628(fragcolor) 51 + 631: 19(fvec4) Load 509(albedo) + 632: 74(fvec3) VectorShuffle 631 631 0 1 2 + 634: 74(fvec3) VectorTimesScalar 632 633 + Store 628(fragcolor) 634 + 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 636 636 12 12 + 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 638 637(N) 51 + 641: 74(fvec3) Load 496(normal) + 642: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 641 + Store 637(N) 642 + 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 + 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 646 645(i) 51 + Store 645(i) 110 + Branch 648 + 648: Label + 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 653: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 + LoopMerge 650 651 None + Branch 654 + 654: Label + 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 + 657: 101(int) Load 645(i) + 658: 144(bool) SLessThan 657 390 + BranchConditional 658 649 650 + 649: Label + 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 661 661 12 12 + 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 663 662(L) 51 + 666: 101(int) Load 645(i) + 669: 667(ptr) AccessChain 428(ubo) 289 666 110 + 670: 19(fvec4) Load 669 + 671: 74(fvec3) VectorShuffle 670 670 0 1 2 + 672: 74(fvec3) Load 472(fragPos) + 673: 74(fvec3) FSub 671 672 + Store 662(L) 673 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 675 675 12 12 + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 677 676(dist) 51 + 679: 74(fvec3) Load 662(L) + 680: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 679 + Store 676(dist) 680 + 681: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 682 682 12 12 + 683: 74(fvec3) Load 662(L) + 684: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 683 + Store 662(L) 684 + 685: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 686 686 12 12 + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 688 687(V) 51 + 691: 667(ptr) AccessChain 428(ubo) 110 + 692: 19(fvec4) Load 691 + 693: 74(fvec3) VectorShuffle 692 692 0 1 2 + 694: 74(fvec3) Load 472(fragPos) + 695: 74(fvec3) FSub 693 694 + Store 687(V) 695 + 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 697 697 12 12 + 698: 74(fvec3) Load 687(V) + 699: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 698 + Store 687(V) 699 + 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 701 701 12 12 + 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 703 702(lightCosInnerAngle) 51 + Store 702(lightCosInnerAngle) 706 + 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 708 708 12 12 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 710 709(lightCosOuterAngle) 51 + Store 709(lightCosOuterAngle) 713 + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 715 715 12 12 + 719: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 717 716(lightRange) 51 + Store 716(lightRange) 720 + 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 722 722 12 12 + 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(dir) 51 + 727: 101(int) Load 645(i) + 728: 667(ptr) AccessChain 428(ubo) 289 727 110 + 729: 19(fvec4) Load 728 + 730: 74(fvec3) VectorShuffle 729 729 0 1 2 + 731: 101(int) Load 645(i) + 732: 667(ptr) AccessChain 428(ubo) 289 731 289 + 733: 19(fvec4) Load 732 + 734: 74(fvec3) VectorShuffle 733 733 0 1 2 + 735: 74(fvec3) FSub 730 734 + 736: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 735 + Store 723(dir) 736 + 737: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 738 738 12 12 + 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 740 739(cosDir) 51 + 743: 74(fvec3) Load 662(L) + 744: 74(fvec3) Load 723(dir) + 745: 16(float) Dot 743 744 + Store 739(cosDir) 745 + 746: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 747 747 12 12 + 751: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 749 748(spotEffect) 51 + 752: 16(float) Load 709(lightCosOuterAngle) + 753: 16(float) Load 702(lightCosInnerAngle) + 754: 16(float) Load 739(cosDir) + 755: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 752 753 754 + Store 748(spotEffect) 755 + 756: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 757 757 12 12 + 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 759 758(heightAttenuation) 51 + 762: 16(float) Load 716(lightRange) + 763: 16(float) Load 676(dist) + 764: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 762 197 763 + Store 758(heightAttenuation) 764 + 765: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 766 766 12 12 + 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 768 767(NdotL) 51 + 771: 74(fvec3) Load 637(N) + 772: 74(fvec3) Load 662(L) + 773: 16(float) Dot 771 772 + 774: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 773 + Store 767(NdotL) 774 + 775: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 776 776 12 12 + 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 778 777(diff) 51 + 781: 16(float) Load 767(NdotL) + 782: 74(fvec3) CompositeConstruct 781 781 781 + Store 777(diff) 782 + 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 784 784 12 12 + 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 786 785(R) 51 + 789: 74(fvec3) Load 662(L) + 790: 74(fvec3) FNegate 789 + 791: 74(fvec3) Load 637(N) + 792: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 790 791 + Store 785(R) 792 + 793: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 794 794 12 12 + 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 796 795(NdotR) 51 + 799: 74(fvec3) Load 785(R) + 800: 74(fvec3) Load 687(V) + 801: 16(float) Dot 799 800 + 802: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 801 + Store 795(NdotR) 802 + 803: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 804 804 12 12 + 808: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 806 805(spec) 51 + 809: 16(float) Load 795(NdotR) + 811: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 809 810 + 812: 25(ptr) AccessChain 509(albedo) 13 + 813: 16(float) Load 812 + 814: 16(float) FMul 811 813 + 816: 16(float) FMul 814 815 + 817: 74(fvec3) CompositeConstruct 816 816 816 + Store 805(spec) 817 + 818: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 819 819 12 12 + 820: 74(fvec3) Load 777(diff) + 821: 74(fvec3) Load 805(spec) + 822: 74(fvec3) FAdd 820 821 + 823: 16(float) Load 748(spotEffect) + 824: 74(fvec3) VectorTimesScalar 822 823 + 825: 16(float) Load 758(heightAttenuation) + 826: 74(fvec3) VectorTimesScalar 824 825 + 827: 16(float) CompositeExtract 826 0 + 828: 16(float) CompositeExtract 826 1 + 829: 16(float) CompositeExtract 826 2 + 830: 74(fvec3) CompositeConstruct 827 828 829 + 831: 101(int) Load 645(i) + 833: 667(ptr) AccessChain 428(ubo) 289 831 832 + 834: 19(fvec4) Load 833 + 835: 74(fvec3) VectorShuffle 834 834 0 1 2 + 836: 74(fvec3) FMul 830 835 + 837: 19(fvec4) Load 509(albedo) + 838: 74(fvec3) VectorShuffle 837 837 0 1 2 + 839: 74(fvec3) FMul 836 838 + 840: 74(fvec3) Load 628(fragcolor) + 841: 74(fvec3) FAdd 840 839 + Store 628(fragcolor) 841 + Branch 651 + 651: Label + 842: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 + 844: 101(int) Load 645(i) + 845: 101(int) IAdd 844 289 + Store 645(i) 845 + Branch 648 + 650: Label + 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 848 848 12 12 + 849: 521(ptr) AccessChain 428(ubo) 832 + 850: 101(int) Load 849 + 851: 144(bool) SGreaterThan 850 110 + SelectionMerge 853 None + BranchConditional 851 852 853 + 852: Label + 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 856 856 12 12 + 858: 74(fvec3) Load 628(fragcolor) + Store 857(param) 858 + 860: 74(fvec3) Load 472(fragPos) + Store 859(param) 860 + 861: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 857(param) 859(param) + Store 628(fragcolor) 861 + Branch 853 + 853: Label + 862: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 863: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 864 864 12 12 + 865: 74(fvec3) Load 628(fragcolor) + 866: 16(float) CompositeExtract 865 0 + 867: 16(float) CompositeExtract 865 1 + 868: 16(float) CompositeExtract 865 2 + 869: 19(fvec4) CompositeConstruct 866 867 868 118 + Store 544(outFragColor) 869 Return FunctionEnd Line 1 59 51 -33(textureProj(vf4;f1;vf2;): 16(float) Function None 28 - 30(P): 22(ptr) FunctionParameter - 31(layer): 23(ptr) FunctionParameter - 32(offset): 27(ptr) FunctionParameter - 34: Label - 109(shadow): 23(ptr) Variable Function -115(shadowCoord): 22(ptr) Variable Function - 158(dist): 23(ptr) Variable Function - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 30(P) 47 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 31(layer) 47 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 32(offset) 47 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(textureProj(vf4;f1;vf2;) - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 108 108 12 12 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 110 109(shadow) 47 - Store 109(shadow) 112 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 114 114 12 12 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 115(shadowCoord) 47 - 119: 19(fvec4) Load 30(P) - 120: 23(ptr) AccessChain 30(P) 13 - 121: 16(float) Load 120 - 122: 19(fvec4) CompositeConstruct 121 121 121 121 - 123: 19(fvec4) FDiv 119 122 - Store 115(shadowCoord) 123 - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 125 125 12 12 - 126: 19(fvec4) Load 115(shadowCoord) - 127: 24(fvec2) VectorShuffle 126 126 0 1 - 129: 24(fvec2) VectorTimesScalar 127 128 - 130: 24(fvec2) CompositeConstruct 128 128 - 131: 24(fvec2) FAdd 129 130 - 132: 23(ptr) AccessChain 115(shadowCoord) 12 - 133: 16(float) CompositeExtract 131 0 - Store 132 133 - 134: 23(ptr) AccessChain 115(shadowCoord) 41 - 135: 16(float) CompositeExtract 131 1 - Store 134 135 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 137 137 12 12 - 141: 23(ptr) AccessChain 115(shadowCoord) 25 - 142: 16(float) Load 141 - 144: 138(bool) FOrdGreaterThan 142 143 - SelectionMerge 146 None - BranchConditional 144 145 146 - 145: Label - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 137 137 12 12 - 149: 23(ptr) AccessChain 115(shadowCoord) 25 - 150: 16(float) Load 149 - 151: 138(bool) FOrdLessThan 150 112 - Branch 146 - 146: Label - 152: 138(bool) Phi 144 34 151 145 - SelectionMerge 154 None - BranchConditional 152 153 154 - 153: Label - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 157 157 12 12 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(dist) 47 - 175: 167 Load 172(samplerShadowMap) - 176: 19(fvec4) Load 115(shadowCoord) - 177: 24(fvec2) VectorShuffle 176 176 0 1 - 178: 24(fvec2) Load 32(offset) - 179: 24(fvec2) FAdd 177 178 - 180: 16(float) Load 31(layer) - 181: 16(float) CompositeExtract 179 0 - 182: 16(float) CompositeExtract 179 1 - 183: 70(fvec3) CompositeConstruct 181 182 180 - 184: 19(fvec4) ImageSampleImplicitLod 175 183 - 185: 16(float) CompositeExtract 184 0 - Store 158(dist) 185 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 187 187 12 12 - 188: 23(ptr) AccessChain 115(shadowCoord) 13 - 189: 16(float) Load 188 - 191: 138(bool) FOrdGreaterThan 189 190 - SelectionMerge 193 None - BranchConditional 191 192 193 - 192: Label - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 187 187 12 12 - 196: 16(float) Load 158(dist) - 197: 23(ptr) AccessChain 115(shadowCoord) 25 - 198: 16(float) Load 197 - 199: 138(bool) FOrdLessThan 196 198 - Branch 193 - 193: Label - 200: 138(bool) Phi 191 153 199 192 - SelectionMerge 202 None - BranchConditional 200 201 202 - 201: Label - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 205 205 12 12 - Store 109(shadow) 206 - Branch 202 - 202: Label - Branch 154 - 154: Label - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 209 209 12 12 - 210: 16(float) Load 109(shadow) - ReturnValue 210 +37(textureProj(vf4;f1;vf2;): 16(float) Function None 32 + 34(P): 22(ptr) FunctionParameter + 35(layer): 25(ptr) FunctionParameter + 36(offset): 30(ptr) FunctionParameter + 38: Label + 115(shadow): 25(ptr) Variable Function +121(shadowCoord): 22(ptr) Variable Function + 164(dist): 25(ptr) Variable Function + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 34(P) 51 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 35(layer) 51 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 36(offset) 51 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 37(textureProj(vf4;f1;vf2;) + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 114 114 12 12 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 115(shadow) 51 + Store 115(shadow) 118 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 120 120 12 12 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(shadowCoord) 51 + 125: 19(fvec4) Load 34(P) + 126: 25(ptr) AccessChain 34(P) 13 + 127: 16(float) Load 126 + 128: 19(fvec4) CompositeConstruct 127 127 127 127 + 129: 19(fvec4) FDiv 125 128 + Store 121(shadowCoord) 129 + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 131 131 12 12 + 132: 19(fvec4) Load 121(shadowCoord) + 133: 27(fvec2) VectorShuffle 132 132 0 1 + 135: 27(fvec2) VectorTimesScalar 133 134 + 136: 27(fvec2) CompositeConstruct 134 134 + 137: 27(fvec2) FAdd 135 136 + 138: 25(ptr) AccessChain 121(shadowCoord) 12 + 139: 16(float) CompositeExtract 137 0 + Store 138 139 + 140: 25(ptr) AccessChain 121(shadowCoord) 45 + 141: 16(float) CompositeExtract 137 1 + Store 140 141 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 143 143 12 12 + 147: 25(ptr) AccessChain 121(shadowCoord) 28 + 148: 16(float) Load 147 + 150: 144(bool) FOrdGreaterThan 148 149 + SelectionMerge 152 None + BranchConditional 150 151 152 + 151: Label + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 143 143 12 12 + 155: 25(ptr) AccessChain 121(shadowCoord) 28 + 156: 16(float) Load 155 + 157: 144(bool) FOrdLessThan 156 118 + Branch 152 + 152: Label + 158: 144(bool) Phi 150 38 157 151 + SelectionMerge 160 None + BranchConditional 158 159 160 + 159: Label + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 163 163 12 12 + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 165 164(dist) 51 + 182: 173 Load 179(samplerShadowMap) + 183: 19(fvec4) Load 121(shadowCoord) + 184: 27(fvec2) VectorShuffle 183 183 0 1 + 185: 27(fvec2) Load 36(offset) + 186: 27(fvec2) FAdd 184 185 + 187: 16(float) Load 35(layer) + 188: 16(float) CompositeExtract 186 0 + 189: 16(float) CompositeExtract 186 1 + 190: 74(fvec3) CompositeConstruct 188 189 187 + 191: 19(fvec4) ImageSampleImplicitLod 182 190 + 192: 16(float) CompositeExtract 191 0 + Store 164(dist) 192 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 + 195: 25(ptr) AccessChain 121(shadowCoord) 13 + 196: 16(float) Load 195 + 198: 144(bool) FOrdGreaterThan 196 197 + SelectionMerge 200 None + BranchConditional 198 199 200 + 199: Label + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 + 203: 16(float) Load 164(dist) + 204: 25(ptr) AccessChain 121(shadowCoord) 28 + 205: 16(float) Load 204 + 206: 144(bool) FOrdLessThan 203 205 + Branch 200 + 200: Label + 207: 144(bool) Phi 198 159 206 199 + SelectionMerge 209 None + BranchConditional 207 208 209 + 208: Label + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 212 212 12 12 + Store 115(shadow) 213 + Branch 209 + 209: Label + Branch 160 + 160: Label + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 216 216 12 12 + 217: 16(float) Load 115(shadow) + ReturnValue 217 FunctionEnd Line 1 76 37 -58(filterPCF(vf4;f1;): 16(float) Function None 54 - 56(sc): 22(ptr) FunctionParameter - 57(layer): 23(ptr) FunctionParameter - 59: Label - 220(texDim): 219(ptr) Variable Function - 232(scale): 23(ptr) Variable Function - 239(dx): 23(ptr) Variable Function - 252(dy): 23(ptr) Variable Function -264(shadowFactor): 23(ptr) Variable Function - 270(count): 245(ptr) Variable Function - 276(range): 245(ptr) Variable Function - 283(x): 245(ptr) Variable Function - 304(y): 245(ptr) Variable Function - 334(param): 22(ptr) Variable Function - 336(param): 23(ptr) Variable Function - 338(param): 27(ptr) Variable Function - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 62 62 12 12 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 56(sc) 47 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 57(layer) 47 - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 216 216 12 12 - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 221 220(texDim) 47 - 224: 167 Load 172(samplerShadowMap) - 225: 162 Image 224 - 228: 226(ivec3) ImageQuerySizeLod 225 104 - 229: 217(ivec2) VectorShuffle 228 228 0 1 - Store 220(texDim) 229 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 231 231 12 12 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 233 232(scale) 47 - Store 232(scale) 236 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 238 238 12 12 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 240 239(dx) 47 - 243: 16(float) Load 232(scale) - 244: 16(float) FMul 243 112 - 246: 245(ptr) AccessChain 220(texDim) 12 - 247: 96(int) Load 246 - 248: 16(float) ConvertSToF 247 - 249: 16(float) FDiv 244 248 - Store 239(dx) 249 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 251 251 12 12 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(dy) 47 - 256: 16(float) Load 232(scale) - 257: 16(float) FMul 256 112 - 258: 245(ptr) AccessChain 220(texDim) 41 - 259: 96(int) Load 258 - 260: 16(float) ConvertSToF 259 - 261: 16(float) FDiv 257 260 - Store 252(dy) 261 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 263 263 12 12 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(shadowFactor) 47 - Store 264(shadowFactor) 190 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 269 269 12 12 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(count) 47 - Store 270(count) 104 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 275 275 12 12 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(range) 47 - Store 276(range) 280 - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 - 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 284 283(x) 47 - 287: 96(int) Load 276(range) - 288: 96(int) SNegate 287 - Store 283(x) 288 - Branch 289 - 289: Label - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 - LoopMerge 291 292 None - Branch 295 - 295: Label - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 - 298: 96(int) Load 283(x) - 299: 96(int) Load 276(range) - 300: 138(bool) SLessThanEqual 298 299 - BranchConditional 300 290 291 - 290: Label - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 305 304(y) 47 - 308: 96(int) Load 276(range) - 309: 96(int) SNegate 308 - Store 304(y) 309 - Branch 310 - 310: Label - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 - LoopMerge 312 313 None - Branch 316 - 316: Label - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 - 319: 96(int) Load 304(y) - 320: 96(int) Load 276(range) - 321: 138(bool) SLessThanEqual 319 320 - BranchConditional 321 311 312 - 311: Label - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 324 324 12 12 - 325: 16(float) Load 239(dx) - 326: 96(int) Load 283(x) - 327: 16(float) ConvertSToF 326 - 328: 16(float) FMul 325 327 - 329: 16(float) Load 252(dy) - 330: 96(int) Load 304(y) - 331: 16(float) ConvertSToF 330 - 332: 16(float) FMul 329 331 - 333: 24(fvec2) CompositeConstruct 328 332 - 335: 19(fvec4) Load 56(sc) - Store 334(param) 335 - 337: 16(float) Load 57(layer) - Store 336(param) 337 - Store 338(param) 333 - 339: 16(float) FunctionCall 33(textureProj(vf4;f1;vf2;) 334(param) 336(param) 338(param) - 340: 16(float) Load 264(shadowFactor) - 341: 16(float) FAdd 340 339 - Store 264(shadowFactor) 341 - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 343 343 12 12 - 344: 96(int) Load 270(count) - 345: 96(int) IAdd 344 280 - Store 270(count) 345 - Branch 313 - 313: Label - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 303 303 12 12 - 348: 96(int) Load 304(y) - 349: 96(int) IAdd 348 280 - Store 304(y) 349 - Branch 310 - 312: Label - Branch 292 - 292: Label - 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 282 282 12 12 - 352: 96(int) Load 283(x) - 353: 96(int) IAdd 352 280 - Store 283(x) 353 - Branch 289 - 291: Label - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 356 356 12 12 - 357: 16(float) Load 264(shadowFactor) - 358: 96(int) Load 270(count) - 359: 16(float) ConvertSToF 358 - 360: 16(float) FDiv 357 359 - ReturnValue 360 +62(filterPCF(vf4;f1;): 16(float) Function None 58 + 60(sc): 22(ptr) FunctionParameter + 61(layer): 25(ptr) FunctionParameter + 63: Label + 228(texDim): 226(ptr) Variable Function + 240(scale): 25(ptr) Variable Function + 247(dx): 25(ptr) Variable Function + 261(dy): 25(ptr) Variable Function +273(shadowFactor): 25(ptr) Variable Function + 279(count): 253(ptr) Variable Function + 285(range): 253(ptr) Variable Function + 292(x): 253(ptr) Variable Function + 313(y): 253(ptr) Variable Function + 343(param): 22(ptr) Variable Function + 345(param): 25(ptr) Variable Function + 347(param): 30(ptr) Variable Function + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 60(sc) 51 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 51 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 223 223 12 12 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 229 228(texDim) 51 + 232: 173 Load 179(samplerShadowMap) + 233: 168 Image 232 + 236: 234(ivec3) ImageQuerySizeLod 233 110 + 237: 224(ivec2) VectorShuffle 236 236 0 1 + Store 228(texDim) 237 + 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 239 239 12 12 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 241 240(scale) 51 + Store 240(scale) 244 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 246 246 12 12 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(dx) 51 + 251: 16(float) Load 240(scale) + 252: 16(float) FMul 251 118 + 255: 253(ptr) AccessChain 228(texDim) 12 + 256: 101(int) Load 255 + 257: 16(float) ConvertSToF 256 + 258: 16(float) FDiv 252 257 + Store 247(dx) 258 + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 260 260 12 12 + 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(dy) 51 + 265: 16(float) Load 240(scale) + 266: 16(float) FMul 265 118 + 267: 253(ptr) AccessChain 228(texDim) 45 + 268: 101(int) Load 267 + 269: 16(float) ConvertSToF 268 + 270: 16(float) FDiv 266 269 + Store 261(dy) 270 + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 272 272 12 12 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(shadowFactor) 51 + Store 273(shadowFactor) 197 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 278 278 12 12 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(count) 51 + Store 279(count) 110 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 284 284 12 12 + 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 286 285(range) 51 + Store 285(range) 289 + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 293 292(x) 51 + 296: 101(int) Load 285(range) + 297: 101(int) SNegate 296 + Store 292(x) 297 + Branch 298 + 298: Label + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 + LoopMerge 300 301 None + Branch 304 + 304: Label + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 + 307: 101(int) Load 292(x) + 308: 101(int) Load 285(range) + 309: 144(bool) SLessThanEqual 307 308 + BranchConditional 309 299 300 + 299: Label + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 314 313(y) 51 + 317: 101(int) Load 285(range) + 318: 101(int) SNegate 317 + Store 313(y) 318 + Branch 319 + 319: Label + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 + LoopMerge 321 322 None + Branch 325 + 325: Label + 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 + 328: 101(int) Load 313(y) + 329: 101(int) Load 285(range) + 330: 144(bool) SLessThanEqual 328 329 + BranchConditional 330 320 321 + 320: Label + 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 333 333 12 12 + 334: 16(float) Load 247(dx) + 335: 101(int) Load 292(x) + 336: 16(float) ConvertSToF 335 + 337: 16(float) FMul 334 336 + 338: 16(float) Load 261(dy) + 339: 101(int) Load 313(y) + 340: 16(float) ConvertSToF 339 + 341: 16(float) FMul 338 340 + 342: 27(fvec2) CompositeConstruct 337 341 + 344: 19(fvec4) Load 60(sc) + Store 343(param) 344 + 346: 16(float) Load 61(layer) + Store 345(param) 346 + Store 347(param) 342 + 348: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 343(param) 345(param) 347(param) + 349: 16(float) Load 273(shadowFactor) + 350: 16(float) FAdd 349 348 + Store 273(shadowFactor) 350 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 352 352 12 12 + 353: 101(int) Load 279(count) + 354: 101(int) IAdd 353 289 + Store 279(count) 354 + Branch 322 + 322: Label + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 + 357: 101(int) Load 313(y) + 358: 101(int) IAdd 357 289 + Store 313(y) 358 + Branch 319 + 321: Label + Branch 301 + 301: Label + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 + 361: 101(int) Load 292(x) + 362: 101(int) IAdd 361 289 + Store 292(x) 362 + Branch 298 + 300: Label + 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 365 365 12 12 + 366: 16(float) Load 273(shadowFactor) + 367: 101(int) Load 279(count) + 368: 16(float) ConvertSToF 367 + 369: 16(float) FDiv 366 368 + ReturnValue 369 FunctionEnd Line 1 99 41 -77(shadow(vf3;vf3;): 70(fvec3) Function None 73 - 75(fragcolor): 72(ptr) FunctionParameter - 76(fragpos): 72(ptr) FunctionParameter - 78: Label - 367(i): 245(ptr) Variable Function - 386(shadowClip): 22(ptr) Variable Function -434(shadowFactor): 23(ptr) Variable Function - 439(param): 22(ptr) Variable Function - 441(param): 23(ptr) Variable Function - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 81 81 12 12 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 75(fragcolor) 47 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 76(fragpos) 47 - 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 - 370: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 368 367(i) 47 - Store 367(i) 104 - Branch 371 - 371: Label - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 376: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 - LoopMerge 373 374 None - Branch 377 - 377: Label - 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 - 380: 96(int) Load 367(i) - 382: 138(bool) SLessThan 380 381 - BranchConditional 382 372 373 - 372: Label - 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 385 385 12 12 - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 387 386(shadowClip) 47 - 422: 96(int) Load 367(i) - 424: 423(ptr) AccessChain 419(ubo) 280 422 381 - 425: 390 Load 424 - 426: 70(fvec3) Load 76(fragpos) - 427: 16(float) CompositeExtract 426 0 - 428: 16(float) CompositeExtract 426 1 - 429: 16(float) CompositeExtract 426 2 - 430: 19(fvec4) CompositeConstruct 427 428 429 112 - 431: 19(fvec4) MatrixTimesVector 425 430 - Store 386(shadowClip) 431 - 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 433 433 12 12 - 436: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 435 434(shadowFactor) 47 - 437: 96(int) Load 367(i) - 438: 16(float) ConvertSToF 437 - 440: 19(fvec4) Load 386(shadowClip) - Store 439(param) 440 - Store 441(param) 438 - 442: 16(float) FunctionCall 58(filterPCF(vf4;f1;) 439(param) 441(param) - Store 434(shadowFactor) 442 - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 444 444 12 12 - 445: 16(float) Load 434(shadowFactor) - 446: 70(fvec3) Load 75(fragcolor) - 447: 70(fvec3) VectorTimesScalar 446 445 - Store 75(fragcolor) 447 - Branch 374 - 374: Label - 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 366 366 12 12 - 450: 96(int) Load 367(i) - 451: 96(int) IAdd 450 280 - Store 367(i) 451 - Branch 371 - 373: Label - 452: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 454 454 12 12 - 455: 70(fvec3) Load 75(fragcolor) - ReturnValue 455 +82(shadow(vf3;vf3;): 74(fvec3) Function None 78 + 80(fragcolor): 76(ptr) FunctionParameter + 81(fragpos): 76(ptr) FunctionParameter + 83: Label + 376(i): 253(ptr) Variable Function + 395(shadowClip): 22(ptr) Variable Function +444(shadowFactor): 25(ptr) Variable Function + 449(param): 22(ptr) Variable Function + 451(param): 25(ptr) Variable Function + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 86 86 12 12 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 80(fragcolor) 51 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragpos) 51 + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) + 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 + 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 377 376(i) 51 + Store 376(i) 110 + Branch 380 + 380: Label + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 + LoopMerge 382 383 None + Branch 386 + 386: Label + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 + 389: 101(int) Load 376(i) + 391: 144(bool) SLessThan 389 390 + BranchConditional 391 381 382 + 381: Label + 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 394 394 12 12 + 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 396 395(shadowClip) 51 + 431: 101(int) Load 376(i) + 434: 432(ptr) AccessChain 428(ubo) 289 431 390 + 435: 399 Load 434 + 436: 74(fvec3) Load 81(fragpos) + 437: 16(float) CompositeExtract 436 0 + 438: 16(float) CompositeExtract 436 1 + 439: 16(float) CompositeExtract 436 2 + 440: 19(fvec4) CompositeConstruct 437 438 439 118 + 441: 19(fvec4) MatrixTimesVector 435 440 + Store 395(shadowClip) 441 + 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 443 443 12 12 + 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 445 444(shadowFactor) 51 + 447: 101(int) Load 376(i) + 448: 16(float) ConvertSToF 447 + 450: 19(fvec4) Load 395(shadowClip) + Store 449(param) 450 + Store 451(param) 448 + 452: 16(float) FunctionCall 62(filterPCF(vf4;f1;) 449(param) 451(param) + Store 444(shadowFactor) 452 + 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 454 454 12 12 + 455: 16(float) Load 444(shadowFactor) + 456: 74(fvec3) Load 80(fragcolor) + 457: 74(fvec3) VectorTimesScalar 456 455 + Store 80(fragcolor) 457 + Branch 383 + 383: Label + 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 + 460: 101(int) Load 376(i) + 461: 101(int) IAdd 460 289 + Store 376(i) 461 + Branch 380 + 382: Label + 462: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 464 464 12 12 + 465: 74(fvec3) Load 80(fragcolor) + ReturnValue 465 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 51a67155ab..eff5627f8b 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 257 +// Id's are bound by 272 Capability Geometry Capability MultiViewport @@ -9,7 +9,7 @@ spv.debuginfo.glsl.geom 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 14 "main" 63 95 114 124 127 158 197 206 223 235 241 244 + EntryPoint Geometry 14 "main" 66 99 120 131 134 167 209 218 236 250 256 259 ExecutionMode 14 Triangles ExecutionMode 14 Invocations 2 ExecutionMode 14 OutputTriangleStrip @@ -26,97 +26,97 @@ spv.debuginfo.glsl.geom #line 1 " 30: String "int" - 35: String "i" - 51: String "bool" - 58: String "float" - 65: String "outNormal" - 78: String "projection" - 82: String "modelview" - 85: String "lightPos" - 88: String "UBO" - 92: String "ubo" - 97: String "gl_InvocationID" - 116: String "inNormal" - 126: String "outColor" - 129: String "inColor" - 138: String "pos" - 144: String "gl_Position" - 147: String "gl_PointSize" - 150: String "gl_CullDistance" - 154: String "gl_PerVertex" - 160: String "gl_in" - 169: String "worldPos" - 181: String "lPos" - 199: String "outLightVec" - 208: String "outViewVec" - 237: String "gl_ViewportIndex" - 243: String "gl_PrimitiveID" - 246: String "gl_PrimitiveIDIn" + 37: String "i" + 53: String "bool" + 60: String "float" + 68: String "outNormal" + 81: String "projection" + 84: String "modelview" + 87: String "lightPos" + 90: String "UBO" + 95: String "ubo" + 101: String "gl_InvocationID" + 122: String "inNormal" + 133: String "outColor" + 136: String "inColor" + 146: String "pos" + 152: String "gl_Position" + 155: String "gl_PointSize" + 158: String "gl_CullDistance" + 162: String "gl_PerVertex" + 169: String "gl_in" + 179: String "worldPos" + 192: String "lPos" + 211: String "outLightVec" + 220: String "outViewVec" + 252: String "gl_ViewportIndex" + 258: String "gl_PrimitiveID" + 261: String "gl_PrimitiveIDIn" SourceExtension "GL_ARB_viewport_array" Name 14 "main" - Name 33 "i" - Name 63 "outNormal" - Name 76 "UBO" - MemberName 76(UBO) 0 "projection" - MemberName 76(UBO) 1 "modelview" - MemberName 76(UBO) 2 "lightPos" - Name 90 "ubo" - Name 95 "gl_InvocationID" - Name 114 "inNormal" - Name 124 "outColor" - Name 127 "inColor" - Name 136 "pos" - Name 142 "gl_PerVertex" - MemberName 142(gl_PerVertex) 0 "gl_Position" - MemberName 142(gl_PerVertex) 1 "gl_PointSize" - MemberName 142(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 142(gl_PerVertex) 3 "gl_CullDistance" - Name 158 "gl_in" - Name 167 "worldPos" - Name 179 "lPos" - Name 197 "outLightVec" - Name 206 "outViewVec" - Name 214 "gl_PerVertex" - MemberName 214(gl_PerVertex) 0 "gl_Position" - MemberName 214(gl_PerVertex) 1 "gl_PointSize" - MemberName 214(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 214(gl_PerVertex) 3 "gl_CullDistance" - Name 223 "" - Name 235 "gl_ViewportIndex" - Name 241 "gl_PrimitiveID" - Name 244 "gl_PrimitiveIDIn" - Decorate 63(outNormal) Location 0 - Decorate 72 ArrayStride 64 - Decorate 74 ArrayStride 64 - MemberDecorate 76(UBO) 0 ColMajor - MemberDecorate 76(UBO) 0 Offset 0 - MemberDecorate 76(UBO) 0 MatrixStride 16 - MemberDecorate 76(UBO) 1 ColMajor - MemberDecorate 76(UBO) 1 Offset 128 - MemberDecorate 76(UBO) 1 MatrixStride 16 - MemberDecorate 76(UBO) 2 Offset 256 - Decorate 76(UBO) Block - Decorate 90(ubo) DescriptorSet 0 - Decorate 90(ubo) Binding 0 - Decorate 95(gl_InvocationID) BuiltIn InvocationId - Decorate 114(inNormal) Location 0 - Decorate 124(outColor) Location 1 - Decorate 127(inColor) Location 1 - MemberDecorate 142(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 142(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 142(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 142(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 142(gl_PerVertex) Block - Decorate 197(outLightVec) Location 3 - Decorate 206(outViewVec) Location 2 - MemberDecorate 214(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 214(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 214(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 214(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 214(gl_PerVertex) Block - Decorate 235(gl_ViewportIndex) BuiltIn ViewportIndex - Decorate 241(gl_PrimitiveID) BuiltIn PrimitiveId - Decorate 244(gl_PrimitiveIDIn) BuiltIn PrimitiveId + Name 35 "i" + Name 66 "outNormal" + Name 79 "UBO" + MemberName 79(UBO) 0 "projection" + MemberName 79(UBO) 1 "modelview" + MemberName 79(UBO) 2 "lightPos" + Name 93 "ubo" + Name 99 "gl_InvocationID" + Name 120 "inNormal" + Name 131 "outColor" + Name 134 "inColor" + Name 144 "pos" + Name 150 "gl_PerVertex" + MemberName 150(gl_PerVertex) 0 "gl_Position" + MemberName 150(gl_PerVertex) 1 "gl_PointSize" + MemberName 150(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 150(gl_PerVertex) 3 "gl_CullDistance" + Name 167 "gl_in" + Name 177 "worldPos" + Name 190 "lPos" + Name 209 "outLightVec" + Name 218 "outViewVec" + Name 226 "gl_PerVertex" + MemberName 226(gl_PerVertex) 0 "gl_Position" + MemberName 226(gl_PerVertex) 1 "gl_PointSize" + MemberName 226(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 226(gl_PerVertex) 3 "gl_CullDistance" + Name 236 "" + Name 250 "gl_ViewportIndex" + Name 256 "gl_PrimitiveID" + Name 259 "gl_PrimitiveIDIn" + Decorate 66(outNormal) Location 0 + Decorate 75 ArrayStride 64 + Decorate 77 ArrayStride 64 + MemberDecorate 79(UBO) 0 ColMajor + MemberDecorate 79(UBO) 0 Offset 0 + MemberDecorate 79(UBO) 0 MatrixStride 16 + MemberDecorate 79(UBO) 1 ColMajor + MemberDecorate 79(UBO) 1 Offset 128 + MemberDecorate 79(UBO) 1 MatrixStride 16 + MemberDecorate 79(UBO) 2 Offset 256 + Decorate 79(UBO) Block + Decorate 93(ubo) DescriptorSet 0 + Decorate 93(ubo) Binding 0 + Decorate 99(gl_InvocationID) BuiltIn InvocationId + Decorate 120(inNormal) Location 0 + Decorate 131(outColor) Location 1 + Decorate 134(inColor) Location 1 + MemberDecorate 150(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 150(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 150(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 150(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 150(gl_PerVertex) Block + Decorate 209(outLightVec) Location 3 + Decorate 218(outViewVec) Location 2 + MemberDecorate 226(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 226(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 226(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 226(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 226(gl_PerVertex) Block + Decorate 250(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 256(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 259(gl_PrimitiveIDIn) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -137,229 +137,244 @@ spv.debuginfo.glsl.geom 29: TypeInt 32 1 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 23 12 32: TypePointer Function 29(int) - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 35 31 18 28 12 17 23 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 38: 29(int) Constant 0 - 49: 29(int) Constant 3 - 50: TypeBool - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 51 10 24 12 - 56: 7(int) Constant 51 - 57: TypeFloat 32 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 58 10 13 12 - 60: TypeVector 57(float) 3 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 13 - 62: TypePointer Output 60(fvec3) - 63(outNormal): 62(ptr) Variable Output - 66: 7(int) Constant 8 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 65 61 18 56 12 21 65 63(outNormal) 66 - 67: TypeVector 57(float) 4 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 23 - 69: TypeMatrix 67(fvec4) 4 - 71: 50(bool) ConstantTrue - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 68 23 71 - 72: TypeArray 69 24 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 70 24 - 74: TypeArray 69 24 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 70 24 - 76(UBO): TypeStruct 72 74 67(fvec4) - 79: 7(int) Constant 34 - 80: 7(int) Constant 7 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 73 18 79 80 12 12 13 - 83: 7(int) Constant 35 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 75 18 83 80 12 12 13 - 86: 7(int) Constant 36 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 85 68 18 86 80 12 12 13 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 88 22 18 56 12 21 88 12 13 77 81 84 - 89: TypePointer Uniform 76(UBO) - 90(ubo): 89(ptr) Variable Uniform - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 92 87 18 56 12 21 92 90(ubo) 66 - 93: 29(int) Constant 1 - 94: TypePointer Input 29(int) -95(gl_InvocationID): 94(ptr) Variable Input - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 97 31 18 56 12 21 97 95(gl_InvocationID) 66 - 99: TypePointer Uniform 69 - 102: TypeMatrix 60(fvec3) 3 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 61 13 71 - 111: TypeArray 60(fvec3) 13 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 13 - 113: TypePointer Input 111 - 114(inNormal): 113(ptr) Variable Input - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 116 112 18 56 12 21 116 114(inNormal) 66 - 118: TypePointer Input 60(fvec3) - 123: 7(int) Constant 52 - 124(outColor): 62(ptr) Variable Output - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 126 61 18 123 12 21 126 124(outColor) 66 - 127(inColor): 113(ptr) Variable Input - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 129 112 18 123 12 21 129 127(inColor) 66 - 134: 7(int) Constant 54 - 135: TypePointer Function 67(fvec4) - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 138 68 18 134 12 17 23 - 140: TypeArray 57(float) 22 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 59 22 -142(gl_PerVertex): TypeStruct 67(fvec4) 57(float) 140 140 - 145: 7(int) Constant 23 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 68 18 24 145 12 12 13 - 148: 7(int) Constant 41 - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 147 59 18 24 148 12 12 13 - 151: 7(int) Constant 84 - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 24 151 12 12 13 - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 24 151 12 12 13 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 154 22 18 134 12 21 154 12 13 143 146 149 152 - 155: TypeArray 142(gl_PerVertex) 13 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 153 13 - 157: TypePointer Input 155 - 158(gl_in): 157(ptr) Variable Input - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 160 156 18 134 12 21 160 158(gl_in) 66 - 162: TypePointer Input 67(fvec4) - 166: 7(int) Constant 55 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 169 68 18 166 12 17 23 - 177: 7(int) Constant 57 - 178: TypePointer Function 60(fvec3) - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 181 61 18 177 12 17 23 - 186: 29(int) Constant 2 - 187: TypePointer Uniform 67(fvec4) - 196: 7(int) Constant 58 -197(outLightVec): 62(ptr) Variable Output - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 199 61 18 196 12 21 199 197(outLightVec) 66 - 205: 7(int) Constant 59 - 206(outViewVec): 62(ptr) Variable Output - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 208 61 18 205 12 21 208 206(outViewVec) 66 - 213: 7(int) Constant 61 -214(gl_PerVertex): TypeStruct 67(fvec4) 57(float) 140 140 - 216: 7(int) Constant 215 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 68 18 24 216 12 12 13 - 218: 7(int) Constant 233 - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 147 59 18 24 218 12 12 13 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 13 80 12 12 13 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 141 18 13 80 12 12 13 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 154 22 18 213 12 21 154 12 13 215 217 219 220 - 222: TypePointer Output 214(gl_PerVertex) - 223: 222(ptr) Variable Output - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 221 18 213 12 21 1 223 66 - 230: TypePointer Output 67(fvec4) - 233: 7(int) Constant 64 - 234: TypePointer Output 29(int) -235(gl_ViewportIndex): 234(ptr) Variable Output - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 237 31 18 233 12 21 237 235(gl_ViewportIndex) 66 - 240: 7(int) Constant 65 -241(gl_PrimitiveID): 234(ptr) Variable Output - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 243 31 18 240 12 21 243 241(gl_PrimitiveID) 66 -244(gl_PrimitiveIDIn): 94(ptr) Variable Input - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 246 31 18 240 12 21 246 244(gl_PrimitiveIDIn) 66 - 249: 7(int) Constant 66 - 256: 7(int) Constant 68 + 33: 7(int) Constant 7 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 33 12 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 37 31 18 28 12 17 23 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 40: 29(int) Constant 0 + 51: 29(int) Constant 3 + 52: TypeBool + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 53 10 24 12 + 58: 7(int) Constant 51 + 59: TypeFloat 32 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 60 10 13 12 + 62: TypeVector 59(float) 3 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 61 13 + 64: TypePointer Output 62(fvec3) + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 13 12 + 66(outNormal): 64(ptr) Variable Output + 69: 7(int) Constant 8 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 63 18 58 12 21 68 66(outNormal) 69 + 70: TypeVector 59(float) 4 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 61 23 + 72: TypeMatrix 70(fvec4) 4 + 74: 52(bool) ConstantTrue + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 71 23 74 + 75: TypeArray 72 24 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 73 24 + 77: TypeArray 72 24 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 73 24 + 79(UBO): TypeStruct 75 77 70(fvec4) + 82: 7(int) Constant 34 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 76 18 82 33 12 12 13 + 85: 7(int) Constant 35 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 78 18 85 33 12 12 13 + 88: 7(int) Constant 36 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 71 18 88 33 12 12 13 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 22 18 58 12 21 90 12 13 80 83 86 + 91: TypePointer Uniform 79(UBO) + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 24 12 + 93(ubo): 91(ptr) Variable Uniform + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 89 18 58 12 21 95 93(ubo) 69 + 96: 29(int) Constant 1 + 97: TypePointer Input 29(int) + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 22 12 +99(gl_InvocationID): 97(ptr) Variable Input + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 101 31 18 58 12 21 101 99(gl_InvocationID) 69 + 103: TypePointer Uniform 72 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 24 12 + 107: TypeMatrix 62(fvec3) 3 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 63 13 74 + 116: TypeArray 62(fvec3) 13 + 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 63 13 + 118: TypePointer Input 116 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 117 22 12 + 120(inNormal): 118(ptr) Variable Input + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 122 117 18 58 12 21 122 120(inNormal) 69 + 124: TypePointer Input 62(fvec3) + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 22 12 + 130: 7(int) Constant 52 + 131(outColor): 64(ptr) Variable Output + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 133 63 18 130 12 21 133 131(outColor) 69 + 134(inColor): 118(ptr) Variable Input + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 117 18 130 12 21 136 134(inColor) 69 + 141: 7(int) Constant 54 + 142: TypePointer Function 70(fvec4) + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 33 12 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 71 18 141 12 17 23 + 148: TypeArray 59(float) 22 + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 22 +150(gl_PerVertex): TypeStruct 70(fvec4) 59(float) 148 148 + 153: 7(int) Constant 23 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 71 18 24 153 12 12 13 + 156: 7(int) Constant 41 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 61 18 24 156 12 12 13 + 159: 7(int) Constant 84 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 24 159 12 12 13 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 24 159 12 12 13 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 22 18 141 12 21 162 12 13 151 154 157 160 + 163: TypeArray 150(gl_PerVertex) 13 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 161 13 + 165: TypePointer Input 163 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 164 22 12 + 167(gl_in): 165(ptr) Variable Input + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 169 164 18 141 12 21 169 167(gl_in) 69 + 171: TypePointer Input 70(fvec4) + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 22 12 + 176: 7(int) Constant 55 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 71 18 176 12 17 23 + 187: 7(int) Constant 57 + 188: TypePointer Function 62(fvec3) + 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 33 12 + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 192 63 18 187 12 17 23 + 197: 29(int) Constant 2 + 198: TypePointer Uniform 70(fvec4) + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 24 12 + 208: 7(int) Constant 58 +209(outLightVec): 64(ptr) Variable Output + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 211 63 18 208 12 21 211 209(outLightVec) 69 + 217: 7(int) Constant 59 + 218(outViewVec): 64(ptr) Variable Output + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 220 63 18 217 12 21 220 218(outViewVec) 69 + 225: 7(int) Constant 61 +226(gl_PerVertex): TypeStruct 70(fvec4) 59(float) 148 148 + 228: 7(int) Constant 215 + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 71 18 24 228 12 12 13 + 230: 7(int) Constant 233 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 61 18 24 230 12 12 13 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 13 33 12 12 13 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 13 33 12 12 13 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 22 18 225 12 21 162 12 13 227 229 231 232 + 234: TypePointer Output 226(gl_PerVertex) + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 233 13 12 + 236: 234(ptr) Variable Output + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 233 18 225 12 21 1 236 69 + 243: TypePointer Output 70(fvec4) + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 13 12 + 247: 7(int) Constant 64 + 248: TypePointer Output 29(int) + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 13 12 +250(gl_ViewportIndex): 248(ptr) Variable Output + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 252 31 18 247 12 21 252 250(gl_ViewportIndex) 69 + 255: 7(int) Constant 65 +256(gl_PrimitiveID): 248(ptr) Variable Output + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 31 18 255 12 21 258 256(gl_PrimitiveID) 69 +259(gl_PrimitiveIDIn): 97(ptr) Variable Input + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 31 18 255 12 21 261 259(gl_PrimitiveIDIn) 69 + 264: 7(int) Constant 66 + 271: 7(int) Constant 68 Line 1 47 15 14(main): 4 Function None 5 15: Label - 33(i): 32(ptr) Variable Function - 136(pos): 135(ptr) Variable Function - 167(worldPos): 135(ptr) Variable Function - 179(lPos): 178(ptr) Variable Function + 35(i): 32(ptr) Variable Function + 144(pos): 142(ptr) Variable Function + 177(worldPos): 142(ptr) Variable Function + 190(lPos): 188(ptr) Variable Function 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 34 33(i) 37 - Store 33(i) 38 - Branch 39 - 39: Label - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - LoopMerge 41 42 None - Branch 45 - 45: Label - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 48: 29(int) Load 33(i) - 53: 50(bool) SLessThan 48 49 - BranchConditional 53 40 41 - 40: Label - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 56 56 12 12 - 98: 29(int) Load 95(gl_InvocationID) - 100: 99(ptr) AccessChain 90(ubo) 93 98 - 101: 69 Load 100 - 104: 67(fvec4) CompositeExtract 101 0 - 105: 60(fvec3) VectorShuffle 104 104 0 1 2 - 106: 67(fvec4) CompositeExtract 101 1 - 107: 60(fvec3) VectorShuffle 106 106 0 1 2 - 108: 67(fvec4) CompositeExtract 101 2 - 109: 60(fvec3) VectorShuffle 108 108 0 1 2 - 110: 102 CompositeConstruct 105 107 109 - 117: 29(int) Load 33(i) - 119: 118(ptr) AccessChain 114(inNormal) 117 - 120: 60(fvec3) Load 119 - 121: 60(fvec3) MatrixTimesVector 110 120 - Store 63(outNormal) 121 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 123 123 12 12 - 130: 29(int) Load 33(i) - 131: 118(ptr) AccessChain 127(inColor) 130 - 132: 60(fvec3) Load 131 - Store 124(outColor) 132 - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 134 134 12 12 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 137 136(pos) 37 - 161: 29(int) Load 33(i) - 163: 162(ptr) AccessChain 158(gl_in) 161 38 - 164: 67(fvec4) Load 163 - Store 136(pos) 164 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 166 166 12 12 - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 168 167(worldPos) 37 - 171: 29(int) Load 95(gl_InvocationID) - 172: 99(ptr) AccessChain 90(ubo) 93 171 - 173: 69 Load 172 - 174: 67(fvec4) Load 136(pos) - 175: 67(fvec4) MatrixTimesVector 173 174 - Store 167(worldPos) 175 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 177 177 12 12 - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 180 179(lPos) 37 - 183: 29(int) Load 95(gl_InvocationID) - 184: 99(ptr) AccessChain 90(ubo) 93 183 - 185: 69 Load 184 - 188: 187(ptr) AccessChain 90(ubo) 186 - 189: 67(fvec4) Load 188 - 190: 67(fvec4) MatrixTimesVector 185 189 - 191: 57(float) CompositeExtract 190 0 - 192: 57(float) CompositeExtract 190 1 - 193: 57(float) CompositeExtract 190 2 - 194: 60(fvec3) CompositeConstruct 191 192 193 - Store 179(lPos) 194 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 196 196 12 12 - 200: 60(fvec3) Load 179(lPos) - 201: 67(fvec4) Load 167(worldPos) - 202: 60(fvec3) VectorShuffle 201 201 0 1 2 - 203: 60(fvec3) FSub 200 202 - Store 197(outLightVec) 203 - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 205 205 12 12 - 209: 67(fvec4) Load 167(worldPos) - 210: 60(fvec3) VectorShuffle 209 209 0 1 2 - 211: 60(fvec3) FNegate 210 - Store 206(outViewVec) 211 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 - 225: 29(int) Load 95(gl_InvocationID) - 226: 99(ptr) AccessChain 90(ubo) 38 225 - 227: 69 Load 226 - 228: 67(fvec4) Load 167(worldPos) - 229: 67(fvec4) MatrixTimesVector 227 228 - 231: 230(ptr) AccessChain 223 38 - Store 231 229 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12 - 238: 29(int) Load 95(gl_InvocationID) - Store 235(gl_ViewportIndex) 238 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 240 240 12 12 - 247: 29(int) Load 244(gl_PrimitiveIDIn) - Store 241(gl_PrimitiveID) 247 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 249 249 12 12 - EmitVertex - Branch 42 - 42: Label - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 252: 29(int) Load 33(i) - 253: 29(int) IAdd 252 93 - Store 33(i) 253 - Branch 39 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 36 35(i) 39 + Store 35(i) 40 + Branch 41 41: Label - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 256 256 12 12 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + LoopMerge 43 44 None + Branch 47 + 47: Label + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 50: 29(int) Load 35(i) + 55: 52(bool) SLessThan 50 51 + BranchConditional 55 42 43 + 42: Label + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 58 58 12 12 + 102: 29(int) Load 99(gl_InvocationID) + 105: 103(ptr) AccessChain 93(ubo) 96 102 + 106: 72 Load 105 + 109: 70(fvec4) CompositeExtract 106 0 + 110: 62(fvec3) VectorShuffle 109 109 0 1 2 + 111: 70(fvec4) CompositeExtract 106 1 + 112: 62(fvec3) VectorShuffle 111 111 0 1 2 + 113: 70(fvec4) CompositeExtract 106 2 + 114: 62(fvec3) VectorShuffle 113 113 0 1 2 + 115: 107 CompositeConstruct 110 112 114 + 123: 29(int) Load 35(i) + 126: 124(ptr) AccessChain 120(inNormal) 123 + 127: 62(fvec3) Load 126 + 128: 62(fvec3) MatrixTimesVector 115 127 + Store 66(outNormal) 128 + 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 130 130 12 12 + 137: 29(int) Load 35(i) + 138: 124(ptr) AccessChain 134(inColor) 137 + 139: 62(fvec3) Load 138 + Store 131(outColor) 139 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 141 141 12 12 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(pos) 39 + 170: 29(int) Load 35(i) + 173: 171(ptr) AccessChain 167(gl_in) 170 40 + 174: 70(fvec4) Load 173 + Store 144(pos) 174 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 176 176 12 12 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 178 177(worldPos) 39 + 181: 29(int) Load 99(gl_InvocationID) + 182: 103(ptr) AccessChain 93(ubo) 96 181 + 183: 72 Load 182 + 184: 70(fvec4) Load 144(pos) + 185: 70(fvec4) MatrixTimesVector 183 184 + Store 177(worldPos) 185 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 187 187 12 12 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 191 190(lPos) 39 + 194: 29(int) Load 99(gl_InvocationID) + 195: 103(ptr) AccessChain 93(ubo) 96 194 + 196: 72 Load 195 + 200: 198(ptr) AccessChain 93(ubo) 197 + 201: 70(fvec4) Load 200 + 202: 70(fvec4) MatrixTimesVector 196 201 + 203: 59(float) CompositeExtract 202 0 + 204: 59(float) CompositeExtract 202 1 + 205: 59(float) CompositeExtract 202 2 + 206: 62(fvec3) CompositeConstruct 203 204 205 + Store 190(lPos) 206 + 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 208 208 12 12 + 212: 62(fvec3) Load 190(lPos) + 213: 70(fvec4) Load 177(worldPos) + 214: 62(fvec3) VectorShuffle 213 213 0 1 2 + 215: 62(fvec3) FSub 212 214 + Store 209(outLightVec) 215 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 217 217 12 12 + 221: 70(fvec4) Load 177(worldPos) + 222: 62(fvec3) VectorShuffle 221 221 0 1 2 + 223: 62(fvec3) FNegate 222 + Store 218(outViewVec) 223 + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 225 225 12 12 + 238: 29(int) Load 99(gl_InvocationID) + 239: 103(ptr) AccessChain 93(ubo) 40 238 + 240: 72 Load 239 + 241: 70(fvec4) Load 177(worldPos) + 242: 70(fvec4) MatrixTimesVector 240 241 + 245: 243(ptr) AccessChain 236 40 + Store 245 242 + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 247 247 12 12 + 253: 29(int) Load 99(gl_InvocationID) + Store 250(gl_ViewportIndex) 253 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 255 255 12 12 + 262: 29(int) Load 259(gl_PrimitiveIDIn) + Store 256(gl_PrimitiveID) 262 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 264 264 12 12 + EmitVertex + Branch 44 + 44: Label + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 + 267: 29(int) Load 35(i) + 268: 29(int) IAdd 267 96 + Store 35(i) 268 + Branch 41 + 43: Label + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 271 271 12 12 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index 13eca5f26f..b5a7d037ae 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -1,20 +1,20 @@ spv.debuginfo.glsl.tesc // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 537 +// Id's are bound by 562 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 14 "main" 252 256 282 366 379 493 507 514 528 + EntryPoint TessellationControl 14 "main" 259 264 293 381 396 511 527 535 552 ExecutionMode 14 OutputVertices 4 1: String "" 8: String "uint" 17: String "float" - 29: String "screenSpaceTessFactor" - 32: String "// OpModuleProcessed auto-map-locations + 31: String "screenSpaceTessFactor" + 34: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -22,131 +22,131 @@ spv.debuginfo.glsl.tesc // OpModuleProcessed entry-point main #line 1 " - 40: String "p0" - 44: String "p1" - 47: String "bool" - 53: String "frustumCheck" - 56: String "main" - 65: String "midPoint" - 77: String "radius" - 88: String "v0" - 99: String "modelview" - 104: String "lightPos" - 107: String "frustumPlanes" - 109: String "tessellatedEdgeSize" - 114: String "viewportDim" - 118: String "UBO" - 122: String "ubo" - 124: String "int" - 136: String "clip0" - 157: String "clip1" - 232: String "pos" - 238: String "gl_Position" - 241: String "gl_PointSize" - 244: String "gl_CullDistance" - 248: String "gl_PerVertex" - 254: String "gl_in" - 258: String "gl_InvocationID" - 267: String "type.2d.image" - 268: String "@type.2d.image" - 272: String "type.sampled.image" - 273: String "@type.sampled.image" - 277: String "samplerHeight" - 284: String "inUV" - 303: String "i" - 368: String "gl_TessLevelInner" - 381: String "gl_TessLevelOuter" - 495: String "gl_out" - 509: String "outNormal" - 516: String "inNormal" - 530: String "outUV" + 42: String "p0" + 46: String "p1" + 49: String "bool" + 55: String "frustumCheck" + 58: String "main" + 67: String "midPoint" + 80: String "radius" + 91: String "v0" + 102: String "modelview" + 106: String "lightPos" + 109: String "frustumPlanes" + 111: String "tessellatedEdgeSize" + 116: String "viewportDim" + 120: String "UBO" + 125: String "ubo" + 127: String "int" + 140: String "clip0" + 161: String "clip1" + 238: String "pos" + 244: String "gl_Position" + 247: String "gl_PointSize" + 250: String "gl_CullDistance" + 254: String "gl_PerVertex" + 261: String "gl_in" + 266: String "gl_InvocationID" + 276: String "type.2d.image" + 277: String "@type.2d.image" + 281: String "type.sampled.image" + 282: String "@type.sampled.image" + 287: String "samplerHeight" + 295: String "inUV" + 316: String "i" + 383: String "gl_TessLevelInner" + 398: String "gl_TessLevelOuter" + 513: String "gl_out" + 529: String "outNormal" + 537: String "inNormal" + 554: String "outUV" Name 14 "main" - Name 27 "screenSpaceTessFactor(vf4;vf4;" - Name 25 "p0" - Name 26 "p1" - Name 51 "frustumCheck(" - Name 63 "midPoint" - Name 75 "radius" - Name 86 "v0" - Name 97 "UBO" - MemberName 97(UBO) 0 "projection" - MemberName 97(UBO) 1 "modelview" - MemberName 97(UBO) 2 "lightPos" - MemberName 97(UBO) 3 "frustumPlanes" - MemberName 97(UBO) 4 "displacementFactor" - MemberName 97(UBO) 5 "tessellationFactor" - MemberName 97(UBO) 6 "viewportDim" - MemberName 97(UBO) 7 "tessellatedEdgeSize" - Name 120 "ubo" - Name 134 "clip0" - Name 155 "clip1" - Name 230 "pos" - Name 236 "gl_PerVertex" - MemberName 236(gl_PerVertex) 0 "gl_Position" - MemberName 236(gl_PerVertex) 1 "gl_PointSize" - MemberName 236(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 236(gl_PerVertex) 3 "gl_CullDistance" - Name 252 "gl_in" - Name 256 "gl_InvocationID" - Name 275 "samplerHeight" - Name 282 "inUV" - Name 301 "i" - Name 366 "gl_TessLevelInner" - Name 379 "gl_TessLevelOuter" - Name 405 "param" - Name 408 "param" - Name 415 "param" - Name 418 "param" + Name 29 "screenSpaceTessFactor(vf4;vf4;" + Name 27 "p0" + Name 28 "p1" + Name 53 "frustumCheck(" + Name 65 "midPoint" + Name 78 "radius" + Name 89 "v0" + Name 100 "UBO" + MemberName 100(UBO) 0 "projection" + MemberName 100(UBO) 1 "modelview" + MemberName 100(UBO) 2 "lightPos" + MemberName 100(UBO) 3 "frustumPlanes" + MemberName 100(UBO) 4 "displacementFactor" + MemberName 100(UBO) 5 "tessellationFactor" + MemberName 100(UBO) 6 "viewportDim" + MemberName 100(UBO) 7 "tessellatedEdgeSize" + Name 123 "ubo" + Name 138 "clip0" + Name 159 "clip1" + Name 236 "pos" + Name 242 "gl_PerVertex" + MemberName 242(gl_PerVertex) 0 "gl_Position" + MemberName 242(gl_PerVertex) 1 "gl_PointSize" + MemberName 242(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 242(gl_PerVertex) 3 "gl_CullDistance" + Name 259 "gl_in" + Name 264 "gl_InvocationID" + Name 285 "samplerHeight" + Name 293 "inUV" + Name 314 "i" + Name 381 "gl_TessLevelInner" + Name 396 "gl_TessLevelOuter" + Name 422 "param" Name 425 "param" - Name 428 "param" + Name 432 "param" Name 435 "param" - Name 438 "param" - Name 482 "gl_PerVertex" - MemberName 482(gl_PerVertex) 0 "gl_Position" - MemberName 482(gl_PerVertex) 1 "gl_PointSize" - MemberName 482(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 482(gl_PerVertex) 3 "gl_CullDistance" - Name 493 "gl_out" - Name 507 "outNormal" - Name 514 "inNormal" - Name 528 "outUV" - Decorate 93 ArrayStride 16 - MemberDecorate 97(UBO) 0 ColMajor - MemberDecorate 97(UBO) 0 Offset 0 - MemberDecorate 97(UBO) 0 MatrixStride 16 - MemberDecorate 97(UBO) 1 ColMajor - MemberDecorate 97(UBO) 1 Offset 64 - MemberDecorate 97(UBO) 1 MatrixStride 16 - MemberDecorate 97(UBO) 2 Offset 128 - MemberDecorate 97(UBO) 3 Offset 144 - MemberDecorate 97(UBO) 4 Offset 240 - MemberDecorate 97(UBO) 5 Offset 244 - MemberDecorate 97(UBO) 6 Offset 248 - MemberDecorate 97(UBO) 7 Offset 256 - Decorate 97(UBO) Block - Decorate 120(ubo) DescriptorSet 0 - Decorate 120(ubo) Binding 0 - MemberDecorate 236(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 236(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 236(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 236(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 236(gl_PerVertex) Block - Decorate 256(gl_InvocationID) BuiltIn InvocationId - Decorate 275(samplerHeight) DescriptorSet 0 - Decorate 275(samplerHeight) Binding 1 - Decorate 282(inUV) Location 1 - Decorate 366(gl_TessLevelInner) Patch - Decorate 366(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 379(gl_TessLevelOuter) Patch - Decorate 379(gl_TessLevelOuter) BuiltIn TessLevelOuter - MemberDecorate 482(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 482(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 482(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 482(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 482(gl_PerVertex) Block - Decorate 507(outNormal) Location 0 - Decorate 514(inNormal) Location 0 - Decorate 528(outUV) Location 1 + Name 442 "param" + Name 445 "param" + Name 452 "param" + Name 455 "param" + Name 499 "gl_PerVertex" + MemberName 499(gl_PerVertex) 0 "gl_Position" + MemberName 499(gl_PerVertex) 1 "gl_PointSize" + MemberName 499(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 499(gl_PerVertex) 3 "gl_CullDistance" + Name 511 "gl_out" + Name 527 "outNormal" + Name 535 "inNormal" + Name 552 "outUV" + Decorate 96 ArrayStride 16 + MemberDecorate 100(UBO) 0 ColMajor + MemberDecorate 100(UBO) 0 Offset 0 + MemberDecorate 100(UBO) 0 MatrixStride 16 + MemberDecorate 100(UBO) 1 ColMajor + MemberDecorate 100(UBO) 1 Offset 64 + MemberDecorate 100(UBO) 1 MatrixStride 16 + MemberDecorate 100(UBO) 2 Offset 128 + MemberDecorate 100(UBO) 3 Offset 144 + MemberDecorate 100(UBO) 4 Offset 240 + MemberDecorate 100(UBO) 5 Offset 244 + MemberDecorate 100(UBO) 6 Offset 248 + MemberDecorate 100(UBO) 7 Offset 256 + Decorate 100(UBO) Block + Decorate 123(ubo) DescriptorSet 0 + Decorate 123(ubo) Binding 0 + MemberDecorate 242(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 242(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 242(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 242(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 242(gl_PerVertex) Block + Decorate 264(gl_InvocationID) BuiltIn InvocationId + Decorate 285(samplerHeight) DescriptorSet 0 + Decorate 285(samplerHeight) Binding 1 + Decorate 293(inUV) Location 1 + Decorate 381(gl_TessLevelInner) Patch + Decorate 381(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 396(gl_TessLevelOuter) Patch + Decorate 396(gl_TessLevelOuter) BuiltIn TessLevelOuter + MemberDecorate 499(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 499(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 499(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 499(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 499(gl_PerVertex) Block + Decorate 527(outNormal) Location 0 + Decorate 535(inNormal) Location 0 + Decorate 552(outUV) Location 1 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -162,547 +162,572 @@ spv.debuginfo.glsl.tesc 20: 7(int) Constant 4 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypePointer Function 19(fvec4) - 23: TypeFunction 16(float) 22(ptr) 22(ptr) - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 21 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 32 - 33: 7(int) Constant 51 - 35: 7(int) Constant 1 - 36: 7(int) Constant 2 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 35 20 31 36 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 29 24 31 33 12 34 29 13 33 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 21 31 33 12 30 20 35 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 21 31 33 12 30 20 36 - 46: TypeBool - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 47 10 36 12 - 49: TypeFunction 46(bool) - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 48 - 55: 7(int) Constant 81 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 53 50 31 55 12 34 53 13 55 - 58: 7(int) Constant 98 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 56 6 31 58 12 34 56 13 58 - 62: 7(int) Constant 54 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 21 31 62 12 30 20 - 67: 16(float) Constant 1056964608 - 73: 7(int) Constant 56 - 74: TypePointer Function 16(float) - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 18 31 73 12 30 20 - 82: 16(float) Constant 1073741824 - 85: 7(int) Constant 59 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 21 31 85 12 30 20 - 90: TypeMatrix 19(fvec4) 4 - 92: 46(bool) ConstantTrue - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 92 - 93: TypeArray 19(fvec4) 11 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 21 11 - 95: TypeVector 16(float) 2 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 36 - 97(UBO): TypeStruct 90 90 19(fvec4) 93 16(float) 16(float) 95(fvec2) 16(float) - 100: 7(int) Constant 30 - 101: 7(int) Constant 7 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 91 31 100 101 12 12 13 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 91 31 100 101 12 12 13 - 105: 7(int) Constant 31 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 21 31 105 101 12 12 13 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 94 31 10 101 12 12 13 - 110: 7(int) Constant 36 - 111: 7(int) Constant 8 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 18 31 110 111 12 12 13 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 18 31 110 111 12 12 13 - 115: 7(int) Constant 35 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 114 96 31 115 101 12 12 13 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 18 31 110 111 12 12 13 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 118 35 31 85 12 34 118 12 13 98 102 103 106 108 112 113 116 - 119: TypePointer Uniform 97(UBO) - 120(ubo): 119(ptr) Variable Uniform - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 122 117 31 85 12 34 122 120(ubo) 111 - 123: TypeInt 32 1 - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 124 10 20 12 - 126: 123(int) Constant 1 - 127: TypePointer Uniform 90 - 133: 7(int) Constant 62 - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 136 21 31 133 12 30 20 - 138: 123(int) Constant 0 - 143: TypeVector 16(float) 3 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 - 145: 16(float) Constant 0 - 146: 143(fvec3) ConstantComposite 145 145 145 - 154: 7(int) Constant 63 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 157 21 31 154 12 30 20 - 170: 7(int) Constant 66 - 177: 7(int) Constant 67 - 184: 7(int) Constant 70 - 185: 123(int) Constant 6 - 186: TypePointer Uniform 95(fvec2) - 197: 7(int) Constant 71 - 208: 7(int) Constant 76 - 212: 123(int) Constant 7 - 213: TypePointer Uniform 16(float) - 217: 123(int) Constant 5 - 221: 16(float) Constant 1065353216 - 222: 16(float) Constant 1115684864 - 229: 7(int) Constant 85 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 232 21 31 229 12 54 20 - 234: TypeArray 16(float) 35 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 35 -236(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 234 234 - 239: 7(int) Constant 1756 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 21 31 35 239 12 12 13 - 242: 7(int) Constant 1774 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 18 31 35 242 12 12 13 - 245: 7(int) Constant 1817 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 245 12 12 13 - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 245 12 12 13 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 248 35 31 229 12 34 248 12 13 237 240 243 246 - 249: TypeArray 236(gl_PerVertex) 10 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 247 10 - 251: TypePointer Input 249 - 252(gl_in): 251(ptr) Variable Input - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 254 250 31 229 12 34 254 252(gl_in) 111 - 255: TypePointer Input 123(int) -256(gl_InvocationID): 255(ptr) Variable Input - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 125 31 229 12 34 258 256(gl_InvocationID) 111 - 260: TypePointer Input 19(fvec4) - 264: 7(int) Constant 86 - 265: TypeImage 16(float) 2D sampled format:Unknown - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 267 12 31 264 12 34 268 269 13 - 270: TypeSampledImage 265 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 272 12 31 264 12 34 273 269 13 - 274: TypePointer UniformConstant 270 -275(samplerHeight): 274(ptr) Variable UniformConstant - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 277 271 31 264 12 34 277 275(samplerHeight) 111 - 279: TypeArray 95(fvec2) 10 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 96 10 - 281: TypePointer Input 279 - 282(inUV): 281(ptr) Variable Input - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 284 280 31 264 12 34 284 282(inUV) 111 - 285: TypePointer Input 95(fvec2) - 290: 123(int) Constant 4 - 299: 7(int) Constant 89 - 300: TypePointer Function 123(int) - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 125 31 299 12 54 20 - 318: 7(int) Constant 90 - 320: 123(int) Constant 3 - 322: TypePointer Uniform 19(fvec4) - 326: 16(float) Constant 1090519040 - 331: 46(bool) ConstantFalse - 334: 7(int) Constant 92 - 342: 7(int) Constant 95 - 348: 7(int) Constant 100 - 355: 7(int) Constant 102 - 362: 7(int) Constant 104 - 363: TypeArray 16(float) 36 - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 36 - 365: TypePointer Output 363 -366(gl_TessLevelInner): 365(ptr) Variable Output - 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 368 364 31 362 12 34 368 366(gl_TessLevelInner) 111 - 369: TypePointer Output 16(float) - 372: 7(int) Constant 105 - 375: 7(int) Constant 106 - 376: TypeArray 16(float) 20 - 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 - 378: TypePointer Output 376 -379(gl_TessLevelOuter): 378(ptr) Variable Output - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 381 377 31 375 12 34 381 379(gl_TessLevelOuter) 111 - 384: 7(int) Constant 107 - 387: 7(int) Constant 108 - 388: 123(int) Constant 2 - 391: 7(int) Constant 109 - 396: 7(int) Constant 113 - 404: 7(int) Constant 115 - 414: 7(int) Constant 116 - 424: 7(int) Constant 117 - 434: 7(int) Constant 118 - 444: 7(int) Constant 119 - 452: 7(int) Constant 120 - 462: 7(int) Constant 126 - 465: 7(int) Constant 127 - 468: 7(int) Constant 128 - 471: 7(int) Constant 129 - 474: 7(int) Constant 130 - 477: 7(int) Constant 131 - 481: 7(int) Constant 137 -482(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 234 234 - 484: 7(int) Constant 110 - 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 21 31 35 484 12 12 13 - 485: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 241 18 31 35 468 12 12 13 - 487: 7(int) Constant 171 - 486: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 487 12 12 13 - 488: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 235 31 35 487 12 12 13 - 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 248 35 31 481 12 34 248 12 13 483 485 486 488 - 490: TypeArray 482(gl_PerVertex) 20 - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 489 20 - 492: TypePointer Output 490 - 493(gl_out): 492(ptr) Variable Output - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 491 31 481 12 34 495 493(gl_out) 111 - 500: TypePointer Output 19(fvec4) - 503: 7(int) Constant 138 - 504: TypeArray 143(fvec3) 20 - 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 20 - 506: TypePointer Output 504 - 507(outNormal): 506(ptr) Variable Output - 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 509 505 31 503 12 34 509 507(outNormal) 111 - 511: TypeArray 143(fvec3) 10 - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 144 10 - 513: TypePointer Input 511 - 514(inNormal): 513(ptr) Variable Input - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 516 512 31 503 12 34 516 514(inNormal) 111 - 518: TypePointer Input 143(fvec3) - 521: TypePointer Output 143(fvec3) - 524: 7(int) Constant 139 - 525: TypeArray 95(fvec2) 20 - 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 96 20 - 527: TypePointer Output 525 - 528(outUV): 527(ptr) Variable Output - 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 530 526 31 524 12 34 530 528(outUV) 111 - 535: TypePointer Output 95(fvec2) + 23: 7(int) Constant 7 + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 + 25: TypeFunction 16(float) 22(ptr) 22(ptr) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 21 + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 34 + 35: 7(int) Constant 51 + 37: 7(int) Constant 1 + 38: 7(int) Constant 2 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 20 33 38 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 31 26 33 35 12 36 31 13 35 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 21 33 35 12 32 20 37 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 21 33 35 12 32 20 38 + 48: TypeBool + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 10 38 12 + 51: TypeFunction 48(bool) + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 50 + 57: 7(int) Constant 81 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 55 52 33 57 12 36 55 13 57 + 60: 7(int) Constant 98 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 6 33 60 12 36 58 13 60 + 64: 7(int) Constant 54 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 21 33 64 12 32 20 + 69: 16(float) Constant 1056964608 + 75: 7(int) Constant 56 + 76: TypePointer Function 16(float) + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 80 18 33 75 12 32 20 + 85: 16(float) Constant 1073741824 + 88: 7(int) Constant 59 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 21 33 88 12 32 20 + 93: TypeMatrix 19(fvec4) 4 + 95: 48(bool) ConstantTrue + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 95 + 96: TypeArray 19(fvec4) 11 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 21 11 + 98: TypeVector 16(float) 2 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 38 + 100(UBO): TypeStruct 93 93 19(fvec4) 96 16(float) 16(float) 98(fvec2) 16(float) + 103: 7(int) Constant 30 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 94 33 103 23 12 12 13 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 94 33 103 23 12 12 13 + 107: 7(int) Constant 31 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 21 33 107 23 12 12 13 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 97 33 10 23 12 12 13 + 112: 7(int) Constant 36 + 113: 7(int) Constant 8 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 18 33 112 113 12 12 13 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 18 33 112 113 12 12 13 + 117: 7(int) Constant 35 + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 116 99 33 117 23 12 12 13 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 18 33 112 113 12 12 13 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 120 37 33 88 12 36 120 12 13 101 104 105 108 110 114 115 118 + 121: TypePointer Uniform 100(UBO) + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 119 38 12 + 123(ubo): 121(ptr) Variable Uniform + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 119 33 88 12 36 125 123(ubo) 113 + 126: TypeInt 32 1 + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 127 10 20 12 + 129: 126(int) Constant 1 + 130: TypePointer Uniform 93 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 94 38 12 + 137: 7(int) Constant 62 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 21 33 137 12 32 20 + 142: 126(int) Constant 0 + 147: TypeVector 16(float) 3 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 149: 16(float) Constant 0 + 150: 147(fvec3) ConstantComposite 149 149 149 + 158: 7(int) Constant 63 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 21 33 158 12 32 20 + 174: 7(int) Constant 66 + 181: 7(int) Constant 67 + 188: 7(int) Constant 70 + 189: 126(int) Constant 6 + 190: TypePointer Uniform 98(fvec2) + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 99 38 12 + 202: 7(int) Constant 71 + 213: 7(int) Constant 76 + 217: 126(int) Constant 7 + 218: TypePointer Uniform 16(float) + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 38 12 + 223: 126(int) Constant 5 + 227: 16(float) Constant 1065353216 + 228: 16(float) Constant 1115684864 + 235: 7(int) Constant 85 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 238 21 33 235 12 56 20 + 240: TypeArray 16(float) 37 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 37 +242(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 240 240 + 245: 7(int) Constant 1756 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 21 33 37 245 12 12 13 + 248: 7(int) Constant 1774 + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 18 33 37 248 12 12 13 + 251: 7(int) Constant 1817 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 251 12 12 13 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 251 12 12 13 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 254 37 33 235 12 36 254 12 13 243 246 249 252 + 255: TypeArray 242(gl_PerVertex) 10 + 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 253 10 + 257: TypePointer Input 255 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 256 37 12 + 259(gl_in): 257(ptr) Variable Input + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 256 33 235 12 36 261 259(gl_in) 113 + 262: TypePointer Input 126(int) + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 37 12 +264(gl_InvocationID): 262(ptr) Variable Input + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 266 128 33 235 12 36 266 264(gl_InvocationID) 113 + 268: TypePointer Input 19(fvec4) + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 37 12 + 273: 7(int) Constant 86 + 274: TypeImage 16(float) 2D sampled format:Unknown + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 276 12 33 273 12 36 277 278 13 + 279: TypeSampledImage 274 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 281 12 33 273 12 36 282 278 13 + 283: TypePointer UniformConstant 279 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 280 12 12 +285(samplerHeight): 283(ptr) Variable UniformConstant + 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 287 280 33 273 12 36 287 285(samplerHeight) 113 + 289: TypeArray 98(fvec2) 10 + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 99 10 + 291: TypePointer Input 289 + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 290 37 12 + 293(inUV): 291(ptr) Variable Input + 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 295 290 33 273 12 36 295 293(inUV) 113 + 296: TypePointer Input 98(fvec2) + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 99 37 12 + 302: 126(int) Constant 4 + 311: 7(int) Constant 89 + 312: TypePointer Function 126(int) + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 23 12 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 128 33 311 12 56 20 + 331: 7(int) Constant 90 + 333: 126(int) Constant 3 + 335: TypePointer Uniform 19(fvec4) + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 38 12 + 340: 16(float) Constant 1090519040 + 345: 48(bool) ConstantFalse + 348: 7(int) Constant 92 + 356: 7(int) Constant 95 + 362: 7(int) Constant 100 + 369: 7(int) Constant 102 + 376: 7(int) Constant 104 + 377: TypeArray 16(float) 38 + 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 38 + 379: TypePointer Output 377 + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 378 13 12 +381(gl_TessLevelInner): 379(ptr) Variable Output + 382: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 383 378 33 376 12 36 383 381(gl_TessLevelInner) 113 + 384: TypePointer Output 16(float) + 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 388: 7(int) Constant 105 + 391: 7(int) Constant 106 + 392: TypeArray 16(float) 20 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 + 394: TypePointer Output 392 + 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 393 13 12 +396(gl_TessLevelOuter): 394(ptr) Variable Output + 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 398 393 33 391 12 36 398 396(gl_TessLevelOuter) 113 + 401: 7(int) Constant 107 + 404: 7(int) Constant 108 + 405: 126(int) Constant 2 + 408: 7(int) Constant 109 + 413: 7(int) Constant 113 + 421: 7(int) Constant 115 + 431: 7(int) Constant 116 + 441: 7(int) Constant 117 + 451: 7(int) Constant 118 + 461: 7(int) Constant 119 + 469: 7(int) Constant 120 + 479: 7(int) Constant 126 + 482: 7(int) Constant 127 + 485: 7(int) Constant 128 + 488: 7(int) Constant 129 + 491: 7(int) Constant 130 + 494: 7(int) Constant 131 + 498: 7(int) Constant 137 +499(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 240 240 + 501: 7(int) Constant 110 + 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 21 33 37 501 12 12 13 + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 18 33 37 485 12 12 13 + 504: 7(int) Constant 171 + 503: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 504 12 12 13 + 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 504 12 12 13 + 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 254 37 33 498 12 36 254 12 13 500 502 503 505 + 507: TypeArray 499(gl_PerVertex) 20 + 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 506 20 + 509: TypePointer Output 507 + 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 508 13 12 + 511(gl_out): 509(ptr) Variable Output + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 513 508 33 498 12 36 513 511(gl_out) 113 + 518: TypePointer Output 19(fvec4) + 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 + 522: 7(int) Constant 138 + 523: TypeArray 147(fvec3) 20 + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 148 20 + 525: TypePointer Output 523 + 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 524 13 12 + 527(outNormal): 525(ptr) Variable Output + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 529 524 33 522 12 36 529 527(outNormal) 113 + 531: TypeArray 147(fvec3) 10 + 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 148 10 + 533: TypePointer Input 531 + 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 532 37 12 + 535(inNormal): 533(ptr) Variable Input + 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 537 532 33 522 12 36 537 535(inNormal) 113 + 539: TypePointer Input 147(fvec3) + 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 148 37 12 + 543: TypePointer Output 147(fvec3) + 544: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 148 13 12 + 547: 7(int) Constant 139 + 548: TypeArray 98(fvec2) 20 + 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 99 20 + 550: TypePointer Output 548 + 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 549 13 12 + 552(outUV): 550(ptr) Variable Output + 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 554 549 33 547 12 36 554 552(outUV) 113 + 559: TypePointer Output 98(fvec2) + 560: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 99 13 12 Line 1 98 11 14(main): 4 Function None 5 15: Label - 405(param): 22(ptr) Variable Function - 408(param): 22(ptr) Variable Function - 415(param): 22(ptr) Variable Function - 418(param): 22(ptr) Variable Function + 422(param): 22(ptr) Variable Function 425(param): 22(ptr) Variable Function - 428(param): 22(ptr) Variable Function + 432(param): 22(ptr) Variable Function 435(param): 22(ptr) Variable Function - 438(param): 22(ptr) Variable Function - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 57 14(main) - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 348 348 12 12 - 349: 123(int) Load 256(gl_InvocationID) - 350: 46(bool) IEqual 349 138 - SelectionMerge 352 None - BranchConditional 350 351 352 - 351: Label - 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 355 355 12 12 - 356: 46(bool) FunctionCall 51(frustumCheck() - 357: 46(bool) LogicalNot 356 - SelectionMerge 359 None - BranchConditional 357 358 393 - 358: Label - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 362 362 12 12 - 370: 369(ptr) AccessChain 366(gl_TessLevelInner) 138 - Store 370 145 - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 372 372 12 12 - 373: 369(ptr) AccessChain 366(gl_TessLevelInner) 126 - Store 373 145 - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 375 375 12 12 - 382: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 - Store 382 145 - 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 384 384 12 12 - 385: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 - Store 385 145 - 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 387 387 12 12 - 389: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 - Store 389 145 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 391 391 12 12 - 392: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 - Store 392 145 - Branch 359 - 393: Label - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 396 396 12 12 - 397: 213(ptr) AccessChain 120(ubo) 217 - 398: 16(float) Load 397 - 399: 46(bool) FOrdGreaterThan 398 145 - SelectionMerge 401 None - BranchConditional 399 400 459 - 400: Label - 402: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 404 404 12 12 - 406: 260(ptr) AccessChain 252(gl_in) 320 138 - 407: 19(fvec4) Load 406 - Store 405(param) 407 - 409: 260(ptr) AccessChain 252(gl_in) 138 138 - 410: 19(fvec4) Load 409 - Store 408(param) 410 - 411: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 405(param) 408(param) - 412: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 - Store 412 411 - 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 414 414 12 12 - 416: 260(ptr) AccessChain 252(gl_in) 138 138 - 417: 19(fvec4) Load 416 - Store 415(param) 417 - 419: 260(ptr) AccessChain 252(gl_in) 126 138 - 420: 19(fvec4) Load 419 - Store 418(param) 420 - 421: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 415(param) 418(param) - 422: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 - Store 422 421 - 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 424 424 12 12 - 426: 260(ptr) AccessChain 252(gl_in) 126 138 + 442(param): 22(ptr) Variable Function + 445(param): 22(ptr) Variable Function + 452(param): 22(ptr) Variable Function + 455(param): 22(ptr) Variable Function + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 14(main) + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 362 362 12 12 + 363: 126(int) Load 264(gl_InvocationID) + 364: 48(bool) IEqual 363 142 + SelectionMerge 366 None + BranchConditional 364 365 366 + 365: Label + 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 369 369 12 12 + 370: 48(bool) FunctionCall 53(frustumCheck() + 371: 48(bool) LogicalNot 370 + SelectionMerge 373 None + BranchConditional 371 372 410 + 372: Label + 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 376 376 12 12 + 386: 384(ptr) AccessChain 381(gl_TessLevelInner) 142 + Store 386 149 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 388 388 12 12 + 389: 384(ptr) AccessChain 381(gl_TessLevelInner) 129 + Store 389 149 + 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 391 391 12 12 + 399: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 + Store 399 149 + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 401 401 12 12 + 402: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 + Store 402 149 + 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 404 404 12 12 + 406: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 + Store 406 149 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 408 408 12 12 + 409: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 + Store 409 149 + Branch 373 + 410: Label + 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 413 413 12 12 + 414: 218(ptr) AccessChain 123(ubo) 223 + 415: 16(float) Load 414 + 416: 48(bool) FOrdGreaterThan 415 149 + SelectionMerge 418 None + BranchConditional 416 417 476 + 417: Label + 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 421 421 12 12 + 423: 268(ptr) AccessChain 259(gl_in) 333 142 + 424: 19(fvec4) Load 423 + Store 422(param) 424 + 426: 268(ptr) AccessChain 259(gl_in) 142 142 427: 19(fvec4) Load 426 Store 425(param) 427 - 429: 260(ptr) AccessChain 252(gl_in) 388 138 - 430: 19(fvec4) Load 429 - Store 428(param) 430 - 431: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 425(param) 428(param) - 432: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 - Store 432 431 - 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 434 434 12 12 - 436: 260(ptr) AccessChain 252(gl_in) 388 138 + 428: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 422(param) 425(param) + 429: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 + Store 429 428 + 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 431 431 12 12 + 433: 268(ptr) AccessChain 259(gl_in) 142 142 + 434: 19(fvec4) Load 433 + Store 432(param) 434 + 436: 268(ptr) AccessChain 259(gl_in) 129 142 437: 19(fvec4) Load 436 Store 435(param) 437 - 439: 260(ptr) AccessChain 252(gl_in) 320 138 - 440: 19(fvec4) Load 439 - Store 438(param) 440 - 441: 16(float) FunctionCall 27(screenSpaceTessFactor(vf4;vf4;) 435(param) 438(param) - 442: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 - Store 442 441 - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 444 444 12 12 - 445: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 - 446: 16(float) Load 445 - 447: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 - 448: 16(float) Load 447 - 449: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 446 448 67 - 450: 369(ptr) AccessChain 366(gl_TessLevelInner) 138 - Store 450 449 - 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 452 452 12 12 - 453: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 - 454: 16(float) Load 453 - 455: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 - 456: 16(float) Load 455 - 457: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 454 456 67 - 458: 369(ptr) AccessChain 366(gl_TessLevelInner) 126 - Store 458 457 - Branch 401 - 459: Label - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 462 462 12 12 - 463: 369(ptr) AccessChain 366(gl_TessLevelInner) 138 - Store 463 221 - 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 465 465 12 12 - 466: 369(ptr) AccessChain 366(gl_TessLevelInner) 126 - Store 466 221 - 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 468 468 12 12 - 469: 369(ptr) AccessChain 379(gl_TessLevelOuter) 138 - Store 469 221 - 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 471 471 12 12 - 472: 369(ptr) AccessChain 379(gl_TessLevelOuter) 126 - Store 472 221 - 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 474 474 12 12 - 475: 369(ptr) AccessChain 379(gl_TessLevelOuter) 388 - Store 475 221 - 476: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 477 477 12 12 - 478: 369(ptr) AccessChain 379(gl_TessLevelOuter) 320 - Store 478 221 - Branch 401 - 401: Label - Branch 359 - 359: Label - Branch 352 - 352: Label - 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 57 - 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 481 481 12 12 - 496: 123(int) Load 256(gl_InvocationID) - 497: 123(int) Load 256(gl_InvocationID) - 498: 260(ptr) AccessChain 252(gl_in) 497 138 - 499: 19(fvec4) Load 498 - 501: 500(ptr) AccessChain 493(gl_out) 496 138 - Store 501 499 - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 503 503 12 12 - 510: 123(int) Load 256(gl_InvocationID) - 517: 123(int) Load 256(gl_InvocationID) - 519: 518(ptr) AccessChain 514(inNormal) 517 - 520: 143(fvec3) Load 519 - 522: 521(ptr) AccessChain 507(outNormal) 510 - Store 522 520 - 523: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 524 524 12 12 - 531: 123(int) Load 256(gl_InvocationID) - 532: 123(int) Load 256(gl_InvocationID) - 533: 285(ptr) AccessChain 282(inUV) 532 - 534: 95(fvec2) Load 533 - 536: 535(ptr) AccessChain 528(outUV) 531 - Store 536 534 + 438: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 432(param) 435(param) + 439: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 + Store 439 438 + 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 441 441 12 12 + 443: 268(ptr) AccessChain 259(gl_in) 129 142 + 444: 19(fvec4) Load 443 + Store 442(param) 444 + 446: 268(ptr) AccessChain 259(gl_in) 405 142 + 447: 19(fvec4) Load 446 + Store 445(param) 447 + 448: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 442(param) 445(param) + 449: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 + Store 449 448 + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 451 451 12 12 + 453: 268(ptr) AccessChain 259(gl_in) 405 142 + 454: 19(fvec4) Load 453 + Store 452(param) 454 + 456: 268(ptr) AccessChain 259(gl_in) 333 142 + 457: 19(fvec4) Load 456 + Store 455(param) 457 + 458: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 452(param) 455(param) + 459: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 + Store 459 458 + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 461 461 12 12 + 462: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 + 463: 16(float) Load 462 + 464: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 + 465: 16(float) Load 464 + 466: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 463 465 69 + 467: 384(ptr) AccessChain 381(gl_TessLevelInner) 142 + Store 467 466 + 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 469 469 12 12 + 470: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 + 471: 16(float) Load 470 + 472: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 + 473: 16(float) Load 472 + 474: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 471 473 69 + 475: 384(ptr) AccessChain 381(gl_TessLevelInner) 129 + Store 475 474 + Branch 418 + 476: Label + 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 479 479 12 12 + 480: 384(ptr) AccessChain 381(gl_TessLevelInner) 142 + Store 480 227 + 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 482 482 12 12 + 483: 384(ptr) AccessChain 381(gl_TessLevelInner) 129 + Store 483 227 + 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 485 485 12 12 + 486: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 + Store 486 227 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 488 488 12 12 + 489: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 + Store 489 227 + 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 491 491 12 12 + 492: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 + Store 492 227 + 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 494 494 12 12 + 495: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 + Store 495 227 + Branch 418 + 418: Label + Branch 373 + 373: Label + Branch 366 + 366: Label + 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 498 498 12 12 + 514: 126(int) Load 264(gl_InvocationID) + 515: 126(int) Load 264(gl_InvocationID) + 516: 268(ptr) AccessChain 259(gl_in) 515 142 + 517: 19(fvec4) Load 516 + 520: 518(ptr) AccessChain 511(gl_out) 514 142 + Store 520 517 + 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 522 522 12 12 + 530: 126(int) Load 264(gl_InvocationID) + 538: 126(int) Load 264(gl_InvocationID) + 541: 539(ptr) AccessChain 535(inNormal) 538 + 542: 147(fvec3) Load 541 + 545: 543(ptr) AccessChain 527(outNormal) 530 + Store 545 542 + 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 547 547 12 12 + 555: 126(int) Load 264(gl_InvocationID) + 556: 126(int) Load 264(gl_InvocationID) + 557: 296(ptr) AccessChain 293(inUV) 556 + 558: 98(fvec2) Load 557 + 561: 559(ptr) AccessChain 552(outUV) 555 + Store 561 558 Return FunctionEnd Line 1 51 45 -27(screenSpaceTessFactor(vf4;vf4;): 16(float) Function None 23 - 25(p0): 22(ptr) FunctionParameter - 26(p1): 22(ptr) FunctionParameter - 28: Label - 63(midPoint): 22(ptr) Variable Function - 75(radius): 74(ptr) Variable Function - 86(v0): 22(ptr) Variable Function - 134(clip0): 22(ptr) Variable Function - 155(clip1): 22(ptr) Variable Function - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 33 33 12 12 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 25(p0) 42 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 26(p1) 42 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 30 27(screenSpaceTessFactor(vf4;vf4;) - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 62 62 12 12 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 63(midPoint) 42 - 68: 19(fvec4) Load 25(p0) - 69: 19(fvec4) Load 26(p1) - 70: 19(fvec4) FAdd 68 69 - 71: 19(fvec4) VectorTimesScalar 70 67 - Store 63(midPoint) 71 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 73 73 12 12 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(radius) 42 - 79: 19(fvec4) Load 25(p0) - 80: 19(fvec4) Load 26(p1) - 81: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 79 80 - 83: 16(float) FDiv 81 82 - Store 75(radius) 83 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 85 85 12 12 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 86(v0) 42 - 128: 127(ptr) AccessChain 120(ubo) 126 - 129: 90 Load 128 - 130: 19(fvec4) Load 63(midPoint) - 131: 19(fvec4) MatrixTimesVector 129 130 - Store 86(v0) 131 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 133 133 12 12 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 135 134(clip0) 42 - 139: 127(ptr) AccessChain 120(ubo) 138 - 140: 90 Load 139 - 141: 19(fvec4) Load 86(v0) - 142: 16(float) Load 75(radius) - 147: 16(float) CompositeExtract 146 0 - 148: 16(float) CompositeExtract 146 1 - 149: 16(float) CompositeExtract 146 2 - 150: 19(fvec4) CompositeConstruct 142 147 148 149 - 151: 19(fvec4) FSub 141 150 - 152: 19(fvec4) MatrixTimesVector 140 151 - Store 134(clip0) 152 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 154 154 12 12 - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 156 155(clip1) 42 - 159: 127(ptr) AccessChain 120(ubo) 138 - 160: 90 Load 159 - 161: 19(fvec4) Load 86(v0) - 162: 16(float) Load 75(radius) - 163: 16(float) CompositeExtract 146 0 - 164: 16(float) CompositeExtract 146 1 - 165: 16(float) CompositeExtract 146 2 - 166: 19(fvec4) CompositeConstruct 162 163 164 165 - 167: 19(fvec4) FAdd 161 166 - 168: 19(fvec4) MatrixTimesVector 160 167 - Store 155(clip1) 168 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 170 170 12 12 - 171: 74(ptr) AccessChain 134(clip0) 13 - 172: 16(float) Load 171 - 173: 19(fvec4) Load 134(clip0) - 174: 19(fvec4) CompositeConstruct 172 172 172 172 - 175: 19(fvec4) FDiv 173 174 - Store 134(clip0) 175 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 177 177 12 12 - 178: 74(ptr) AccessChain 155(clip1) 13 - 179: 16(float) Load 178 - 180: 19(fvec4) Load 155(clip1) - 181: 19(fvec4) CompositeConstruct 179 179 179 179 - 182: 19(fvec4) FDiv 180 181 - Store 155(clip1) 182 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 184 184 12 12 - 187: 186(ptr) AccessChain 120(ubo) 185 - 188: 95(fvec2) Load 187 - 189: 19(fvec4) Load 134(clip0) - 190: 95(fvec2) VectorShuffle 189 189 0 1 - 191: 95(fvec2) FMul 190 188 - 192: 74(ptr) AccessChain 134(clip0) 12 - 193: 16(float) CompositeExtract 191 0 - Store 192 193 - 194: 74(ptr) AccessChain 134(clip0) 35 - 195: 16(float) CompositeExtract 191 1 - Store 194 195 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 197 197 12 12 - 198: 186(ptr) AccessChain 120(ubo) 185 - 199: 95(fvec2) Load 198 - 200: 19(fvec4) Load 155(clip1) - 201: 95(fvec2) VectorShuffle 200 200 0 1 - 202: 95(fvec2) FMul 201 199 - 203: 74(ptr) AccessChain 155(clip1) 12 - 204: 16(float) CompositeExtract 202 0 - Store 203 204 - 205: 74(ptr) AccessChain 155(clip1) 35 - 206: 16(float) CompositeExtract 202 1 - Store 205 206 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 208 208 12 12 - 209: 19(fvec4) Load 134(clip0) - 210: 19(fvec4) Load 155(clip1) - 211: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 209 210 - 214: 213(ptr) AccessChain 120(ubo) 212 - 215: 16(float) Load 214 - 216: 16(float) FDiv 211 215 - 218: 213(ptr) AccessChain 120(ubo) 217 - 219: 16(float) Load 218 - 220: 16(float) FMul 216 219 - 223: 16(float) ExtInst 3(GLSL.std.450) 43(FClamp) 220 221 222 - ReturnValue 223 +29(screenSpaceTessFactor(vf4;vf4;): 16(float) Function None 25 + 27(p0): 22(ptr) FunctionParameter + 28(p1): 22(ptr) FunctionParameter + 30: Label + 65(midPoint): 22(ptr) Variable Function + 78(radius): 76(ptr) Variable Function + 89(v0): 22(ptr) Variable Function + 138(clip0): 22(ptr) Variable Function + 159(clip1): 22(ptr) Variable Function + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 12 12 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 27(p0) 44 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 28(p1) 44 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(screenSpaceTessFactor(vf4;vf4;) + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 64 64 12 12 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 65(midPoint) 44 + 70: 19(fvec4) Load 27(p0) + 71: 19(fvec4) Load 28(p1) + 72: 19(fvec4) FAdd 70 71 + 73: 19(fvec4) VectorTimesScalar 72 69 + Store 65(midPoint) 73 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 75 75 12 12 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 79 78(radius) 44 + 82: 19(fvec4) Load 27(p0) + 83: 19(fvec4) Load 28(p1) + 84: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 82 83 + 86: 16(float) FDiv 84 85 + Store 78(radius) 86 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 88 88 12 12 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 89(v0) 44 + 132: 130(ptr) AccessChain 123(ubo) 129 + 133: 93 Load 132 + 134: 19(fvec4) Load 65(midPoint) + 135: 19(fvec4) MatrixTimesVector 133 134 + Store 89(v0) 135 + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 137 137 12 12 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 138(clip0) 44 + 143: 130(ptr) AccessChain 123(ubo) 142 + 144: 93 Load 143 + 145: 19(fvec4) Load 89(v0) + 146: 16(float) Load 78(radius) + 151: 16(float) CompositeExtract 150 0 + 152: 16(float) CompositeExtract 150 1 + 153: 16(float) CompositeExtract 150 2 + 154: 19(fvec4) CompositeConstruct 146 151 152 153 + 155: 19(fvec4) FSub 145 154 + 156: 19(fvec4) MatrixTimesVector 144 155 + Store 138(clip0) 156 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 158 158 12 12 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(clip1) 44 + 163: 130(ptr) AccessChain 123(ubo) 142 + 164: 93 Load 163 + 165: 19(fvec4) Load 89(v0) + 166: 16(float) Load 78(radius) + 167: 16(float) CompositeExtract 150 0 + 168: 16(float) CompositeExtract 150 1 + 169: 16(float) CompositeExtract 150 2 + 170: 19(fvec4) CompositeConstruct 166 167 168 169 + 171: 19(fvec4) FAdd 165 170 + 172: 19(fvec4) MatrixTimesVector 164 171 + Store 159(clip1) 172 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 174 174 12 12 + 175: 76(ptr) AccessChain 138(clip0) 13 + 176: 16(float) Load 175 + 177: 19(fvec4) Load 138(clip0) + 178: 19(fvec4) CompositeConstruct 176 176 176 176 + 179: 19(fvec4) FDiv 177 178 + Store 138(clip0) 179 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 181 181 12 12 + 182: 76(ptr) AccessChain 159(clip1) 13 + 183: 16(float) Load 182 + 184: 19(fvec4) Load 159(clip1) + 185: 19(fvec4) CompositeConstruct 183 183 183 183 + 186: 19(fvec4) FDiv 184 185 + Store 159(clip1) 186 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 188 188 12 12 + 192: 190(ptr) AccessChain 123(ubo) 189 + 193: 98(fvec2) Load 192 + 194: 19(fvec4) Load 138(clip0) + 195: 98(fvec2) VectorShuffle 194 194 0 1 + 196: 98(fvec2) FMul 195 193 + 197: 76(ptr) AccessChain 138(clip0) 12 + 198: 16(float) CompositeExtract 196 0 + Store 197 198 + 199: 76(ptr) AccessChain 138(clip0) 37 + 200: 16(float) CompositeExtract 196 1 + Store 199 200 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 202 202 12 12 + 203: 190(ptr) AccessChain 123(ubo) 189 + 204: 98(fvec2) Load 203 + 205: 19(fvec4) Load 159(clip1) + 206: 98(fvec2) VectorShuffle 205 205 0 1 + 207: 98(fvec2) FMul 206 204 + 208: 76(ptr) AccessChain 159(clip1) 12 + 209: 16(float) CompositeExtract 207 0 + Store 208 209 + 210: 76(ptr) AccessChain 159(clip1) 37 + 211: 16(float) CompositeExtract 207 1 + Store 210 211 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 213 213 12 12 + 214: 19(fvec4) Load 138(clip0) + 215: 19(fvec4) Load 159(clip1) + 216: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 214 215 + 220: 218(ptr) AccessChain 123(ubo) 217 + 221: 16(float) Load 220 + 222: 16(float) FDiv 216 221 + 224: 218(ptr) AccessChain 123(ubo) 223 + 225: 16(float) Load 224 + 226: 16(float) FMul 222 225 + 229: 16(float) ExtInst 3(GLSL.std.450) 43(FClamp) 226 227 228 + ReturnValue 229 FunctionEnd Line 1 81 19 -51(frustumCheck(): 46(bool) Function None 49 - 52: Label - 230(pos): 22(ptr) Variable Function - 301(i): 300(ptr) Variable Function - 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 54 51(frustumCheck() - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 229 229 12 12 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 231 230(pos) 42 - 259: 123(int) Load 256(gl_InvocationID) - 261: 260(ptr) AccessChain 252(gl_in) 259 138 - 262: 19(fvec4) Load 261 - Store 230(pos) 262 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 264 264 12 12 - 278: 270 Load 275(samplerHeight) - 286: 285(ptr) AccessChain 282(inUV) 138 - 287: 95(fvec2) Load 286 - 288: 19(fvec4) ImageSampleExplicitLod 278 287 Lod 145 - 289: 16(float) CompositeExtract 288 0 - 291: 213(ptr) AccessChain 120(ubo) 290 - 292: 16(float) Load 291 - 293: 16(float) FMul 289 292 - 294: 74(ptr) AccessChain 230(pos) 35 - 295: 16(float) Load 294 - 296: 16(float) FSub 295 293 - 297: 74(ptr) AccessChain 230(pos) 35 - Store 297 296 - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 - 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(i) 42 - Store 301(i) 138 - Branch 305 - 305: Label - 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 - LoopMerge 307 308 None - Branch 311 - 311: Label - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 - 314: 123(int) Load 301(i) - 315: 46(bool) SLessThan 314 185 - BranchConditional 315 306 307 - 306: Label - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 318 318 12 12 - 319: 19(fvec4) Load 230(pos) - 321: 123(int) Load 301(i) - 323: 322(ptr) AccessChain 120(ubo) 320 321 - 324: 19(fvec4) Load 323 - 325: 16(float) Dot 319 324 - 327: 16(float) FAdd 325 326 - 328: 46(bool) FOrdLessThan 327 145 - SelectionMerge 330 None - BranchConditional 328 329 330 - 329: Label - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 334 334 12 12 - ReturnValue 331 - 330: Label - Branch 308 - 308: Label - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 299 299 12 12 - 338: 123(int) Load 301(i) - 339: 123(int) IAdd 338 126 - Store 301(i) 339 - Branch 305 - 307: Label - 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 54 - 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 342 342 12 12 - ReturnValue 92 +53(frustumCheck(): 48(bool) Function None 51 + 54: Label + 236(pos): 22(ptr) Variable Function + 314(i): 312(ptr) Variable Function + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 53(frustumCheck() + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 235 235 12 12 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 237 236(pos) 44 + 267: 126(int) Load 264(gl_InvocationID) + 270: 268(ptr) AccessChain 259(gl_in) 267 142 + 271: 19(fvec4) Load 270 + Store 236(pos) 271 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 273 273 12 12 + 288: 279 Load 285(samplerHeight) + 298: 296(ptr) AccessChain 293(inUV) 142 + 299: 98(fvec2) Load 298 + 300: 19(fvec4) ImageSampleExplicitLod 288 299 Lod 149 + 301: 16(float) CompositeExtract 300 0 + 303: 218(ptr) AccessChain 123(ubo) 302 + 304: 16(float) Load 303 + 305: 16(float) FMul 301 304 + 306: 76(ptr) AccessChain 236(pos) 37 + 307: 16(float) Load 306 + 308: 16(float) FSub 307 305 + 309: 76(ptr) AccessChain 236(pos) 37 + Store 309 308 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(i) 44 + Store 314(i) 142 + Branch 318 + 318: Label + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 + LoopMerge 320 321 None + Branch 324 + 324: Label + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 + 327: 126(int) Load 314(i) + 328: 48(bool) SLessThan 327 189 + BranchConditional 328 319 320 + 319: Label + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 331 331 12 12 + 332: 19(fvec4) Load 236(pos) + 334: 126(int) Load 314(i) + 337: 335(ptr) AccessChain 123(ubo) 333 334 + 338: 19(fvec4) Load 337 + 339: 16(float) Dot 332 338 + 341: 16(float) FAdd 339 340 + 342: 48(bool) FOrdLessThan 341 149 + SelectionMerge 344 None + BranchConditional 342 343 344 + 343: Label + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 348 348 12 12 + ReturnValue 345 + 344: Label + Branch 321 + 321: Label + 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 + 352: 126(int) Load 314(i) + 353: 126(int) IAdd 352 129 + Store 314(i) 353 + Branch 318 + 320: Label + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 356 356 12 12 + ReturnValue 95 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index 1eec2ff659..c742d60861 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,14 +1,14 @@ spv.debuginfo.glsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 335 +// Id's are bound by 355 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 14 "main" 43 60 87 106 134 170 283 297 305 317 324 + EntryPoint TessellationEvaluation 14 "main" 46 65 94 115 144 182 300 316 324 337 344 ExecutionMode 14 Quads ExecutionMode 14 SpacingEqual ExecutionMode 14 VertexOrderCw @@ -24,118 +24,118 @@ spv.debuginfo.glsl.tese #line 1 " 30: String "float" - 37: String "uv1" - 45: String "inUV" - 48: String "int" - 62: String "gl_TessCoord" - 72: String "uv2" - 89: String "outUV" - 101: String "n1" - 108: String "inNormal" - 121: String "n2" - 136: String "outNormal" - 150: String "pos1" - 156: String "gl_Position" - 159: String "gl_PointSize" - 162: String "gl_CullDistance" - 166: String "gl_PerVertex" - 172: String "gl_in" - 186: String "pos2" - 200: String "pos" - 212: String "type.2d.image" - 213: String "@type.2d.image" - 217: String "type.sampled.image" - 218: String "@type.sampled.image" - 222: String "displacementMap" - 231: String "bool" - 238: String "modelview" - 243: String "lightPos" - 246: String "frustumPlanes" - 248: String "tessellatedEdgeSize" - 252: String "viewportDim" - 256: String "UBO" - 260: String "ubo" - 299: String "outViewVec" - 307: String "outLightVec" - 319: String "outWorldPos" - 326: String "outEyePos" + 39: String "uv1" + 48: String "inUV" + 51: String "int" + 67: String "gl_TessCoord" + 78: String "uv2" + 96: String "outUV" + 109: String "n1" + 117: String "inNormal" + 130: String "n2" + 146: String "outNormal" + 161: String "pos1" + 167: String "gl_Position" + 170: String "gl_PointSize" + 173: String "gl_CullDistance" + 177: String "gl_PerVertex" + 184: String "gl_in" + 199: String "pos2" + 213: String "pos" + 225: String "type.2d.image" + 226: String "@type.2d.image" + 230: String "type.sampled.image" + 231: String "@type.sampled.image" + 236: String "displacementMap" + 245: String "bool" + 252: String "modelview" + 256: String "lightPos" + 259: String "frustumPlanes" + 261: String "tessellatedEdgeSize" + 265: String "viewportDim" + 269: String "UBO" + 274: String "ubo" + 318: String "outViewVec" + 326: String "outLightVec" + 339: String "outWorldPos" + 346: String "outEyePos" Name 14 "main" - Name 35 "uv1" - Name 43 "inUV" - Name 60 "gl_TessCoord" - Name 70 "uv2" - Name 87 "outUV" - Name 99 "n1" - Name 106 "inNormal" - Name 119 "n2" - Name 134 "outNormal" - Name 148 "pos1" - Name 154 "gl_PerVertex" - MemberName 154(gl_PerVertex) 0 "gl_Position" - MemberName 154(gl_PerVertex) 1 "gl_PointSize" - MemberName 154(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 154(gl_PerVertex) 3 "gl_CullDistance" - Name 170 "gl_in" - Name 184 "pos2" - Name 198 "pos" - Name 220 "displacementMap" - Name 236 "UBO" - MemberName 236(UBO) 0 "projection" - MemberName 236(UBO) 1 "modelview" - MemberName 236(UBO) 2 "lightPos" - MemberName 236(UBO) 3 "frustumPlanes" - MemberName 236(UBO) 4 "displacementFactor" - MemberName 236(UBO) 5 "tessellationFactor" - MemberName 236(UBO) 6 "viewportDim" - MemberName 236(UBO) 7 "tessellatedEdgeSize" - Name 258 "ubo" - Name 273 "gl_PerVertex" - MemberName 273(gl_PerVertex) 0 "gl_Position" - MemberName 273(gl_PerVertex) 1 "gl_PointSize" - MemberName 273(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 273(gl_PerVertex) 3 "gl_CullDistance" - Name 283 "" - Name 297 "outViewVec" - Name 305 "outLightVec" - Name 317 "outWorldPos" - Name 324 "outEyePos" - Decorate 43(inUV) Location 1 - Decorate 60(gl_TessCoord) BuiltIn TessCoord - Decorate 87(outUV) Location 1 - Decorate 106(inNormal) Location 0 - Decorate 134(outNormal) Location 0 - MemberDecorate 154(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 154(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 154(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 154(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 154(gl_PerVertex) Block - Decorate 220(displacementMap) DescriptorSet 0 - Decorate 220(displacementMap) Binding 1 - Decorate 234 ArrayStride 16 - MemberDecorate 236(UBO) 0 ColMajor - MemberDecorate 236(UBO) 0 Offset 0 - MemberDecorate 236(UBO) 0 MatrixStride 16 - MemberDecorate 236(UBO) 1 ColMajor - MemberDecorate 236(UBO) 1 Offset 64 - MemberDecorate 236(UBO) 1 MatrixStride 16 - MemberDecorate 236(UBO) 2 Offset 128 - MemberDecorate 236(UBO) 3 Offset 144 - MemberDecorate 236(UBO) 4 Offset 240 - MemberDecorate 236(UBO) 5 Offset 244 - MemberDecorate 236(UBO) 6 Offset 248 - MemberDecorate 236(UBO) 7 Offset 256 - Decorate 236(UBO) Block - Decorate 258(ubo) DescriptorSet 0 - Decorate 258(ubo) Binding 0 - MemberDecorate 273(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 273(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 273(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 273(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 273(gl_PerVertex) Block - Decorate 297(outViewVec) Location 2 - Decorate 305(outLightVec) Location 3 - Decorate 317(outWorldPos) Location 5 - Decorate 324(outEyePos) Location 4 + Name 37 "uv1" + Name 46 "inUV" + Name 65 "gl_TessCoord" + Name 76 "uv2" + Name 94 "outUV" + Name 107 "n1" + Name 115 "inNormal" + Name 128 "n2" + Name 144 "outNormal" + Name 159 "pos1" + Name 165 "gl_PerVertex" + MemberName 165(gl_PerVertex) 0 "gl_Position" + MemberName 165(gl_PerVertex) 1 "gl_PointSize" + MemberName 165(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 165(gl_PerVertex) 3 "gl_CullDistance" + Name 182 "gl_in" + Name 197 "pos2" + Name 211 "pos" + Name 234 "displacementMap" + Name 250 "UBO" + MemberName 250(UBO) 0 "projection" + MemberName 250(UBO) 1 "modelview" + MemberName 250(UBO) 2 "lightPos" + MemberName 250(UBO) 3 "frustumPlanes" + MemberName 250(UBO) 4 "displacementFactor" + MemberName 250(UBO) 5 "tessellationFactor" + MemberName 250(UBO) 6 "viewportDim" + MemberName 250(UBO) 7 "tessellatedEdgeSize" + Name 272 "ubo" + Name 289 "gl_PerVertex" + MemberName 289(gl_PerVertex) 0 "gl_Position" + MemberName 289(gl_PerVertex) 1 "gl_PointSize" + MemberName 289(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 289(gl_PerVertex) 3 "gl_CullDistance" + Name 300 "" + Name 316 "outViewVec" + Name 324 "outLightVec" + Name 337 "outWorldPos" + Name 344 "outEyePos" + Decorate 46(inUV) Location 1 + Decorate 65(gl_TessCoord) BuiltIn TessCoord + Decorate 94(outUV) Location 1 + Decorate 115(inNormal) Location 0 + Decorate 144(outNormal) Location 0 + MemberDecorate 165(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 165(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 165(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 165(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 165(gl_PerVertex) Block + Decorate 234(displacementMap) DescriptorSet 0 + Decorate 234(displacementMap) Binding 1 + Decorate 248 ArrayStride 16 + MemberDecorate 250(UBO) 0 ColMajor + MemberDecorate 250(UBO) 0 Offset 0 + MemberDecorate 250(UBO) 0 MatrixStride 16 + MemberDecorate 250(UBO) 1 ColMajor + MemberDecorate 250(UBO) 1 Offset 64 + MemberDecorate 250(UBO) 1 MatrixStride 16 + MemberDecorate 250(UBO) 2 Offset 128 + MemberDecorate 250(UBO) 3 Offset 144 + MemberDecorate 250(UBO) 4 Offset 240 + MemberDecorate 250(UBO) 5 Offset 244 + MemberDecorate 250(UBO) 6 Offset 248 + MemberDecorate 250(UBO) 7 Offset 256 + Decorate 250(UBO) Block + Decorate 272(ubo) DescriptorSet 0 + Decorate 272(ubo) Binding 0 + MemberDecorate 289(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 289(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 289(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 289(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 289(gl_PerVertex) Block + Decorate 316(outViewVec) Location 2 + Decorate 324(outLightVec) Location 3 + Decorate 337(outWorldPos) Location 5 + Decorate 344(outEyePos) Location 4 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -158,291 +158,311 @@ spv.debuginfo.glsl.tese 32: TypeVector 29(float) 2 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 24 34: TypePointer Function 32(fvec2) - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 37 33 18 28 12 17 23 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 40: TypeArray 32(fvec2) 10 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 33 10 - 42: TypePointer Input 40 - 43(inUV): 42(ptr) Variable Input - 46: 7(int) Constant 8 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 45 41 18 28 12 21 45 43(inUV) 46 - 47: TypeInt 32 1 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 48 10 23 12 - 50: 47(int) Constant 0 - 51: TypePointer Input 32(fvec2) - 54: 47(int) Constant 1 - 57: TypeVector 29(float) 3 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 13 - 59: TypePointer Input 57(fvec3) -60(gl_TessCoord): 59(ptr) Variable Input - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 18 28 12 21 62 60(gl_TessCoord) 46 - 63: TypePointer Input 29(float) - 69: 7(int) Constant 57 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 72 33 18 69 12 17 23 - 74: 47(int) Constant 3 - 77: 47(int) Constant 2 - 85: 7(int) Constant 58 - 86: TypePointer Output 32(fvec2) - 87(outUV): 86(ptr) Variable Output - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 89 33 18 85 12 21 89 87(outUV) 46 - 97: 7(int) Constant 60 - 98: TypePointer Function 57(fvec3) - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 101 58 18 97 12 17 23 - 103: TypeArray 57(fvec3) 10 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 58 10 - 105: TypePointer Input 103 - 106(inNormal): 105(ptr) Variable Input - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 108 104 18 97 12 21 108 106(inNormal) 46 - 118: 7(int) Constant 61 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 58 18 118 12 17 23 - 132: 7(int) Constant 62 - 133: TypePointer Output 57(fvec3) - 134(outNormal): 133(ptr) Variable Output - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 58 18 132 12 21 136 134(outNormal) 46 - 144: 7(int) Constant 65 - 145: TypeVector 29(float) 4 - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 - 147: TypePointer Function 145(fvec4) - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 150 146 18 144 12 17 23 - 152: TypeArray 29(float) 22 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 -154(gl_PerVertex): TypeStruct 145(fvec4) 29(float) 152 152 - 157: 7(int) Constant 1756 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 146 18 22 157 12 12 13 - 160: 7(int) Constant 1774 - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 31 18 22 160 12 12 13 - 163: 7(int) Constant 1817 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 163 12 12 13 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 163 12 12 13 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 22 18 144 12 21 166 12 13 155 158 161 164 - 167: TypeArray 154(gl_PerVertex) 10 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 165 10 - 169: TypePointer Input 167 - 170(gl_in): 169(ptr) Variable Input - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 172 168 18 144 12 21 172 170(gl_in) 46 - 173: TypePointer Input 145(fvec4) - 183: 7(int) Constant 66 - 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 186 146 18 183 12 17 23 - 197: 7(int) Constant 67 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 200 146 18 197 12 17 23 - 209: 7(int) Constant 69 - 210: TypeImage 29(float) 2D sampled format:Unknown - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 212 12 18 209 12 21 213 214 13 - 215: TypeSampledImage 210 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 217 12 18 209 12 21 218 214 13 - 219: TypePointer UniformConstant 215 -220(displacementMap): 219(ptr) Variable UniformConstant - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 222 216 18 209 12 21 222 220(displacementMap) 46 - 225: 29(float) Constant 0 - 228: TypeMatrix 145(fvec4) 4 - 230: TypeBool - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 231 10 24 12 - 233: 230(bool) ConstantTrue - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 146 23 233 - 234: TypeArray 145(fvec4) 11 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 146 11 - 236(UBO): TypeStruct 228 228 145(fvec4) 234 29(float) 29(float) 32(fvec2) 29(float) - 239: 7(int) Constant 30 - 240: 7(int) Constant 7 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 229 18 239 240 12 12 13 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 238 229 18 239 240 12 12 13 - 244: 7(int) Constant 31 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 243 146 18 244 240 12 12 13 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 246 235 18 10 240 12 12 13 - 249: 7(int) Constant 36 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 31 18 249 46 12 12 13 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 31 18 249 46 12 12 13 - 253: 7(int) Constant 35 - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 252 33 18 253 240 12 12 13 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 31 18 249 46 12 12 13 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 256 22 18 209 12 21 256 12 13 237 241 242 245 247 250 251 254 - 257: TypePointer Uniform 236(UBO) - 258(ubo): 257(ptr) Variable Uniform - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 260 255 18 209 12 21 260 258(ubo) 46 - 261: 47(int) Constant 4 - 262: TypePointer Uniform 29(float) - 266: TypePointer Function 29(float) - 272: 7(int) Constant 71 -273(gl_PerVertex): TypeStruct 145(fvec4) 29(float) 152 152 - 275: 7(int) Constant 165 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 146 18 22 275 12 12 13 - 277: 7(int) Constant 183 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 31 18 22 277 12 12 13 - 279: 7(int) Constant 226 - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 279 12 12 13 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 153 18 22 279 12 12 13 - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 166 22 18 272 12 21 166 12 13 274 276 278 280 - 282: TypePointer Output 273(gl_PerVertex) - 283: 282(ptr) Variable Output - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 281 18 272 12 21 1 283 46 - 285: TypePointer Uniform 228 - 293: TypePointer Output 145(fvec4) - 296: 7(int) Constant 74 - 297(outViewVec): 133(ptr) Variable Output - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 299 58 18 296 12 21 299 297(outViewVec) 46 - 304: 7(int) Constant 75 -305(outLightVec): 133(ptr) Variable Output - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 307 58 18 304 12 21 307 305(outLightVec) 46 - 308: TypePointer Uniform 145(fvec4) - 316: 7(int) Constant 76 -317(outWorldPos): 133(ptr) Variable Output - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 319 58 18 316 12 21 319 317(outWorldPos) 46 - 323: 7(int) Constant 77 - 324(outEyePos): 133(ptr) Variable Output - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 326 58 18 323 12 21 326 324(outEyePos) 46 + 35: 7(int) Constant 7 + 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 35 12 + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 33 18 28 12 17 23 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 42: TypeArray 32(fvec2) 10 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 33 10 + 44: TypePointer Input 42 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 22 12 + 46(inUV): 44(ptr) Variable Input + 49: 7(int) Constant 8 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 48 43 18 28 12 21 48 46(inUV) 49 + 50: TypeInt 32 1 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 51 10 23 12 + 53: 50(int) Constant 0 + 54: TypePointer Input 32(fvec2) + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 22 12 + 58: 50(int) Constant 1 + 61: TypeVector 29(float) 3 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 13 + 63: TypePointer Input 61(fvec3) + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 22 12 +65(gl_TessCoord): 63(ptr) Variable Input + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 67 62 18 28 12 21 67 65(gl_TessCoord) 49 + 68: TypePointer Input 29(float) + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 22 12 + 75: 7(int) Constant 57 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 33 18 75 12 17 23 + 80: 50(int) Constant 3 + 83: 50(int) Constant 2 + 91: 7(int) Constant 58 + 92: TypePointer Output 32(fvec2) + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 13 12 + 94(outUV): 92(ptr) Variable Output + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 33 18 91 12 21 96 94(outUV) 49 + 104: 7(int) Constant 60 + 105: TypePointer Function 61(fvec3) + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 35 12 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 62 18 104 12 17 23 + 111: TypeArray 61(fvec3) 10 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 62 10 + 113: TypePointer Input 111 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 112 22 12 + 115(inNormal): 113(ptr) Variable Input + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 117 112 18 104 12 21 117 115(inNormal) 49 + 127: 7(int) Constant 61 + 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 130 62 18 127 12 17 23 + 141: 7(int) Constant 62 + 142: TypePointer Output 61(fvec3) + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 13 12 + 144(outNormal): 142(ptr) Variable Output + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 146 62 18 141 12 21 146 144(outNormal) 49 + 154: 7(int) Constant 65 + 155: TypeVector 29(float) 4 + 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 + 157: TypePointer Function 155(fvec4) + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 35 12 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 156 18 154 12 17 23 + 163: TypeArray 29(float) 22 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 +165(gl_PerVertex): TypeStruct 155(fvec4) 29(float) 163 163 + 168: 7(int) Constant 1756 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 167 156 18 22 168 12 12 13 + 171: 7(int) Constant 1774 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 31 18 22 171 12 12 13 + 174: 7(int) Constant 1817 + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 174 12 12 13 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 174 12 12 13 + 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 22 18 154 12 21 177 12 13 166 169 172 175 + 178: TypeArray 165(gl_PerVertex) 10 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 176 10 + 180: TypePointer Input 178 + 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 179 22 12 + 182(gl_in): 180(ptr) Variable Input + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 184 179 18 154 12 21 184 182(gl_in) 49 + 185: TypePointer Input 155(fvec4) + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 22 12 + 196: 7(int) Constant 66 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 199 156 18 196 12 17 23 + 210: 7(int) Constant 67 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 213 156 18 210 12 17 23 + 222: 7(int) Constant 69 + 223: TypeImage 29(float) 2D sampled format:Unknown + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 225 12 18 222 12 21 226 227 13 + 228: TypeSampledImage 223 + 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 230 12 18 222 12 21 231 227 13 + 232: TypePointer UniformConstant 228 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 229 12 12 +234(displacementMap): 232(ptr) Variable UniformConstant + 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 229 18 222 12 21 236 234(displacementMap) 49 + 239: 29(float) Constant 0 + 242: TypeMatrix 155(fvec4) 4 + 244: TypeBool + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 245 10 24 12 + 247: 244(bool) ConstantTrue + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 156 23 247 + 248: TypeArray 155(fvec4) 11 + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 156 11 + 250(UBO): TypeStruct 242 242 155(fvec4) 248 29(float) 29(float) 32(fvec2) 29(float) + 253: 7(int) Constant 30 + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 252 243 18 253 35 12 12 13 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 252 243 18 253 35 12 12 13 + 257: 7(int) Constant 31 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 256 156 18 257 35 12 12 13 + 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 259 249 18 10 35 12 12 13 + 262: 7(int) Constant 36 + 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 261 31 18 262 49 12 12 13 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 261 31 18 262 49 12 12 13 + 266: 7(int) Constant 35 + 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 265 33 18 266 35 12 12 13 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 261 31 18 262 49 12 12 13 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 269 22 18 222 12 21 269 12 13 251 254 255 258 260 263 264 267 + 270: TypePointer Uniform 250(UBO) + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 268 24 12 + 272(ubo): 270(ptr) Variable Uniform + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 274 268 18 222 12 21 274 272(ubo) 49 + 275: 50(int) Constant 4 + 276: TypePointer Uniform 29(float) + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 24 12 + 281: TypePointer Function 29(float) + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 35 12 + 288: 7(int) Constant 71 +289(gl_PerVertex): TypeStruct 155(fvec4) 29(float) 163 163 + 291: 7(int) Constant 165 + 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 167 156 18 22 291 12 12 13 + 293: 7(int) Constant 183 + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 31 18 22 293 12 12 13 + 295: 7(int) Constant 226 + 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 295 12 12 13 + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 295 12 12 13 + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 22 18 288 12 21 177 12 13 290 292 294 296 + 298: TypePointer Output 289(gl_PerVertex) + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 297 13 12 + 300: 298(ptr) Variable Output + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 297 18 288 12 21 1 300 49 + 302: TypePointer Uniform 242 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 243 24 12 + 311: TypePointer Output 155(fvec4) + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 13 12 + 315: 7(int) Constant 74 + 316(outViewVec): 142(ptr) Variable Output + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 318 62 18 315 12 21 318 316(outViewVec) 49 + 323: 7(int) Constant 75 +324(outLightVec): 142(ptr) Variable Output + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 326 62 18 323 12 21 326 324(outLightVec) 49 + 327: TypePointer Uniform 155(fvec4) + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 24 12 + 336: 7(int) Constant 76 +337(outWorldPos): 142(ptr) Variable Output + 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 339 62 18 336 12 21 339 337(outWorldPos) 49 + 343: 7(int) Constant 77 + 344(outEyePos): 142(ptr) Variable Output + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 346 62 18 343 12 21 346 344(outEyePos) 49 Line 1 53 11 14(main): 4 Function None 5 15: Label - 35(uv1): 34(ptr) Variable Function - 70(uv2): 34(ptr) Variable Function - 99(n1): 98(ptr) Variable Function - 119(n2): 98(ptr) Variable Function - 148(pos1): 147(ptr) Variable Function - 184(pos2): 147(ptr) Variable Function - 198(pos): 147(ptr) Variable Function + 37(uv1): 34(ptr) Variable Function + 76(uv2): 34(ptr) Variable Function + 107(n1): 105(ptr) Variable Function + 128(n2): 105(ptr) Variable Function + 159(pos1): 157(ptr) Variable Function + 197(pos2): 157(ptr) Variable Function + 211(pos): 157(ptr) Variable Function 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 36 35(uv1) 39 - 52: 51(ptr) AccessChain 43(inUV) 50 - 53: 32(fvec2) Load 52 - 55: 51(ptr) AccessChain 43(inUV) 54 - 56: 32(fvec2) Load 55 - 64: 63(ptr) AccessChain 60(gl_TessCoord) 12 - 65: 29(float) Load 64 - 66: 32(fvec2) CompositeConstruct 65 65 - 67: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 53 56 66 - Store 35(uv1) 67 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 69 69 12 12 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 70(uv2) 39 - 75: 51(ptr) AccessChain 43(inUV) 74 - 76: 32(fvec2) Load 75 - 78: 51(ptr) AccessChain 43(inUV) 77 - 79: 32(fvec2) Load 78 - 80: 63(ptr) AccessChain 60(gl_TessCoord) 12 - 81: 29(float) Load 80 - 82: 32(fvec2) CompositeConstruct 81 81 - 83: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 76 79 82 - Store 70(uv2) 83 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 85 85 12 12 - 90: 32(fvec2) Load 35(uv1) - 91: 32(fvec2) Load 70(uv2) - 92: 63(ptr) AccessChain 60(gl_TessCoord) 22 - 93: 29(float) Load 92 - 94: 32(fvec2) CompositeConstruct 93 93 - 95: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 90 91 94 - Store 87(outUV) 95 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 97 97 12 12 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 99(n1) 39 - 109: 59(ptr) AccessChain 106(inNormal) 50 - 110: 57(fvec3) Load 109 - 111: 59(ptr) AccessChain 106(inNormal) 54 - 112: 57(fvec3) Load 111 - 113: 63(ptr) AccessChain 60(gl_TessCoord) 12 - 114: 29(float) Load 113 - 115: 57(fvec3) CompositeConstruct 114 114 114 - 116: 57(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 110 112 115 - Store 99(n1) 116 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 118 118 12 12 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 120 119(n2) 39 - 123: 59(ptr) AccessChain 106(inNormal) 74 - 124: 57(fvec3) Load 123 - 125: 59(ptr) AccessChain 106(inNormal) 77 - 126: 57(fvec3) Load 125 - 127: 63(ptr) AccessChain 60(gl_TessCoord) 12 - 128: 29(float) Load 127 - 129: 57(fvec3) CompositeConstruct 128 128 128 - 130: 57(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 124 126 129 - Store 119(n2) 130 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 132 132 12 12 - 137: 57(fvec3) Load 99(n1) - 138: 57(fvec3) Load 119(n2) - 139: 63(ptr) AccessChain 60(gl_TessCoord) 22 - 140: 29(float) Load 139 - 141: 57(fvec3) CompositeConstruct 140 140 140 - 142: 57(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 137 138 141 - Store 134(outNormal) 142 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 144 144 12 12 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 149 148(pos1) 39 - 174: 173(ptr) AccessChain 170(gl_in) 50 50 - 175: 145(fvec4) Load 174 - 176: 173(ptr) AccessChain 170(gl_in) 54 50 - 177: 145(fvec4) Load 176 - 178: 63(ptr) AccessChain 60(gl_TessCoord) 12 - 179: 29(float) Load 178 - 180: 145(fvec4) CompositeConstruct 179 179 179 179 - 181: 145(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 175 177 180 - Store 148(pos1) 181 - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 183 183 12 12 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 185 184(pos2) 39 - 188: 173(ptr) AccessChain 170(gl_in) 74 50 - 189: 145(fvec4) Load 188 - 190: 173(ptr) AccessChain 170(gl_in) 77 50 - 191: 145(fvec4) Load 190 - 192: 63(ptr) AccessChain 60(gl_TessCoord) 12 - 193: 29(float) Load 192 - 194: 145(fvec4) CompositeConstruct 193 193 193 193 - 195: 145(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 189 191 194 - Store 184(pos2) 195 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 197 197 12 12 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 199 198(pos) 39 - 202: 145(fvec4) Load 148(pos1) - 203: 145(fvec4) Load 184(pos2) - 204: 63(ptr) AccessChain 60(gl_TessCoord) 22 - 205: 29(float) Load 204 - 206: 145(fvec4) CompositeConstruct 205 205 205 205 - 207: 145(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 202 203 206 - Store 198(pos) 207 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 209 209 12 12 - 223: 215 Load 220(displacementMap) - 224: 32(fvec2) Load 87(outUV) - 226: 145(fvec4) ImageSampleExplicitLod 223 224 Lod 225 - 227: 29(float) CompositeExtract 226 0 - 263: 262(ptr) AccessChain 258(ubo) 261 - 264: 29(float) Load 263 - 265: 29(float) FMul 227 264 - 267: 266(ptr) AccessChain 198(pos) 22 - 268: 29(float) Load 267 - 269: 29(float) FSub 268 265 - 270: 266(ptr) AccessChain 198(pos) 22 - Store 270 269 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 272 272 12 12 - 286: 285(ptr) AccessChain 258(ubo) 50 - 287: 228 Load 286 - 288: 285(ptr) AccessChain 258(ubo) 54 - 289: 228 Load 288 - 290: 228 MatrixTimesMatrix 287 289 - 291: 145(fvec4) Load 198(pos) - 292: 145(fvec4) MatrixTimesVector 290 291 - 294: 293(ptr) AccessChain 283 50 - Store 294 292 - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 296 296 12 12 - 300: 145(fvec4) Load 198(pos) - 301: 57(fvec3) VectorShuffle 300 300 0 1 2 - 302: 57(fvec3) FNegate 301 - Store 297(outViewVec) 302 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 304 304 12 12 - 309: 308(ptr) AccessChain 258(ubo) 77 - 310: 145(fvec4) Load 309 - 311: 57(fvec3) VectorShuffle 310 310 0 1 2 - 312: 57(fvec3) Load 297(outViewVec) - 313: 57(fvec3) FAdd 311 312 - 314: 57(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 313 - Store 305(outLightVec) 314 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 316 316 12 12 - 320: 145(fvec4) Load 198(pos) - 321: 57(fvec3) VectorShuffle 320 320 0 1 2 - Store 317(outWorldPos) 321 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 37(uv1) 41 + 56: 54(ptr) AccessChain 46(inUV) 53 + 57: 32(fvec2) Load 56 + 59: 54(ptr) AccessChain 46(inUV) 58 + 60: 32(fvec2) Load 59 + 70: 68(ptr) AccessChain 65(gl_TessCoord) 12 + 71: 29(float) Load 70 + 72: 32(fvec2) CompositeConstruct 71 71 + 73: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 57 60 72 + Store 37(uv1) 73 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 75 75 12 12 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 77 76(uv2) 41 + 81: 54(ptr) AccessChain 46(inUV) 80 + 82: 32(fvec2) Load 81 + 84: 54(ptr) AccessChain 46(inUV) 83 + 85: 32(fvec2) Load 84 + 86: 68(ptr) AccessChain 65(gl_TessCoord) 12 + 87: 29(float) Load 86 + 88: 32(fvec2) CompositeConstruct 87 87 + 89: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 82 85 88 + Store 76(uv2) 89 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 91 91 12 12 + 97: 32(fvec2) Load 37(uv1) + 98: 32(fvec2) Load 76(uv2) + 99: 68(ptr) AccessChain 65(gl_TessCoord) 22 + 100: 29(float) Load 99 + 101: 32(fvec2) CompositeConstruct 100 100 + 102: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 97 98 101 + Store 94(outUV) 102 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 104 104 12 12 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(n1) 41 + 118: 63(ptr) AccessChain 115(inNormal) 53 + 119: 61(fvec3) Load 118 + 120: 63(ptr) AccessChain 115(inNormal) 58 + 121: 61(fvec3) Load 120 + 122: 68(ptr) AccessChain 65(gl_TessCoord) 12 + 123: 29(float) Load 122 + 124: 61(fvec3) CompositeConstruct 123 123 123 + 125: 61(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 119 121 124 + Store 107(n1) 125 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 127 127 12 12 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 129 128(n2) 41 + 132: 63(ptr) AccessChain 115(inNormal) 80 + 133: 61(fvec3) Load 132 + 134: 63(ptr) AccessChain 115(inNormal) 83 + 135: 61(fvec3) Load 134 + 136: 68(ptr) AccessChain 65(gl_TessCoord) 12 + 137: 29(float) Load 136 + 138: 61(fvec3) CompositeConstruct 137 137 137 + 139: 61(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 133 135 138 + Store 128(n2) 139 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 141 141 12 12 + 147: 61(fvec3) Load 107(n1) + 148: 61(fvec3) Load 128(n2) + 149: 68(ptr) AccessChain 65(gl_TessCoord) 22 + 150: 29(float) Load 149 + 151: 61(fvec3) CompositeConstruct 150 150 150 + 152: 61(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 147 148 151 + Store 144(outNormal) 152 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 154 154 12 12 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(pos1) 41 + 187: 185(ptr) AccessChain 182(gl_in) 53 53 + 188: 155(fvec4) Load 187 + 189: 185(ptr) AccessChain 182(gl_in) 58 53 + 190: 155(fvec4) Load 189 + 191: 68(ptr) AccessChain 65(gl_TessCoord) 12 + 192: 29(float) Load 191 + 193: 155(fvec4) CompositeConstruct 192 192 192 192 + 194: 155(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 188 190 193 + Store 159(pos1) 194 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 196 196 12 12 + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 198 197(pos2) 41 + 201: 185(ptr) AccessChain 182(gl_in) 80 53 + 202: 155(fvec4) Load 201 + 203: 185(ptr) AccessChain 182(gl_in) 83 53 + 204: 155(fvec4) Load 203 + 205: 68(ptr) AccessChain 65(gl_TessCoord) 12 + 206: 29(float) Load 205 + 207: 155(fvec4) CompositeConstruct 206 206 206 206 + 208: 155(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 202 204 207 + Store 197(pos2) 208 + 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 210 210 12 12 + 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 212 211(pos) 41 + 215: 155(fvec4) Load 159(pos1) + 216: 155(fvec4) Load 197(pos2) + 217: 68(ptr) AccessChain 65(gl_TessCoord) 22 + 218: 29(float) Load 217 + 219: 155(fvec4) CompositeConstruct 218 218 218 218 + 220: 155(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 215 216 219 + Store 211(pos) 220 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 222 222 12 12 + 237: 228 Load 234(displacementMap) + 238: 32(fvec2) Load 94(outUV) + 240: 155(fvec4) ImageSampleExplicitLod 237 238 Lod 239 + 241: 29(float) CompositeExtract 240 0 + 278: 276(ptr) AccessChain 272(ubo) 275 + 279: 29(float) Load 278 + 280: 29(float) FMul 241 279 + 283: 281(ptr) AccessChain 211(pos) 22 + 284: 29(float) Load 283 + 285: 29(float) FSub 284 280 + 286: 281(ptr) AccessChain 211(pos) 22 + Store 286 285 + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 288 288 12 12 + 304: 302(ptr) AccessChain 272(ubo) 53 + 305: 242 Load 304 + 306: 302(ptr) AccessChain 272(ubo) 58 + 307: 242 Load 306 + 308: 242 MatrixTimesMatrix 305 307 + 309: 155(fvec4) Load 211(pos) + 310: 155(fvec4) MatrixTimesVector 308 309 + 313: 311(ptr) AccessChain 300 53 + Store 313 310 + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 315 315 12 12 + 319: 155(fvec4) Load 211(pos) + 320: 61(fvec3) VectorShuffle 319 319 0 1 2 + 321: 61(fvec3) FNegate 320 + Store 316(outViewVec) 321 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 323 323 12 12 - 327: 285(ptr) AccessChain 258(ubo) 54 - 328: 228 Load 327 - 329: 145(fvec4) Load 198(pos) - 330: 145(fvec4) MatrixTimesVector 328 329 - 331: 29(float) CompositeExtract 330 0 - 332: 29(float) CompositeExtract 330 1 - 333: 29(float) CompositeExtract 330 2 - 334: 57(fvec3) CompositeConstruct 331 332 333 - Store 324(outEyePos) 334 + 329: 327(ptr) AccessChain 272(ubo) 83 + 330: 155(fvec4) Load 329 + 331: 61(fvec3) VectorShuffle 330 330 0 1 2 + 332: 61(fvec3) Load 316(outViewVec) + 333: 61(fvec3) FAdd 331 332 + 334: 61(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 333 + Store 324(outLightVec) 334 + 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 336 336 12 12 + 340: 155(fvec4) Load 211(pos) + 341: 61(fvec3) VectorShuffle 340 340 0 1 2 + Store 337(outWorldPos) 341 + 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 343 343 12 12 + 347: 302(ptr) AccessChain 272(ubo) 58 + 348: 242 Load 347 + 349: 155(fvec4) Load 211(pos) + 350: 155(fvec4) MatrixTimesVector 348 349 + 351: 29(float) CompositeExtract 350 0 + 352: 29(float) CompositeExtract 350 1 + 353: 29(float) CompositeExtract 350 2 + 354: 61(fvec3) CompositeConstruct 351 352 353 + Store 344(outEyePos) 354 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index 16858f3f7b..b185b1d04e 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,14 +1,14 @@ spv.debuginfo.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 427 +// Id's are bound by 443 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 14 "main" 35 40 46 52 60 76 292 310 315 340 356 373 412 421 + EntryPoint Vertex 14 "main" 36 42 48 55 64 82 304 322 327 353 371 388 428 437 1: String "" 8: String "uint" 16: String "main" @@ -21,107 +21,107 @@ spv.debuginfo.glsl.vert #line 1 " 30: String "float" - 37: String "outColor" - 42: String "inColor" - 48: String "outUV" - 54: String "inUV" - 57: String "int" - 62: String "instanceTexIndex" - 73: String "s" - 78: String "instanceRot" - 87: String "bool" - 92: String "modelview" - 97: String "lightPos" - 100: String "globSpeed" - 104: String "UBO" - 108: String "ubo" - 119: String "c" - 134: String "mx" - 177: String "my" - 214: String "mz" - 235: String "rotMat" - 264: String "gRotMat" - 290: String "locPos" - 294: String "inPos" - 306: String "pos" - 312: String "instanceScale" - 317: String "instancePos" - 330: String "gl_Position" - 333: String "gl_PointSize" - 335: String "gl_CullDistance" - 338: String "gl_PerVertex" - 358: String "outNormal" - 375: String "inNormal" - 394: String "lPos" - 414: String "outLightVec" - 423: String "outViewVec" + 38: String "outColor" + 44: String "inColor" + 50: String "outUV" + 57: String "inUV" + 60: String "int" + 66: String "instanceTexIndex" + 79: String "s" + 84: String "instanceRot" + 94: String "bool" + 99: String "modelview" + 103: String "lightPos" + 106: String "globSpeed" + 110: String "UBO" + 115: String "ubo" + 127: String "c" + 143: String "mx" + 187: String "my" + 224: String "mz" + 245: String "rotMat" + 275: String "gRotMat" + 302: String "locPos" + 306: String "inPos" + 318: String "pos" + 324: String "instanceScale" + 329: String "instancePos" + 342: String "gl_Position" + 345: String "gl_PointSize" + 347: String "gl_CullDistance" + 350: String "gl_PerVertex" + 373: String "outNormal" + 390: String "inNormal" + 409: String "lPos" + 430: String "outLightVec" + 439: String "outViewVec" Name 14 "main" - Name 35 "outColor" - Name 40 "inColor" - Name 46 "outUV" - Name 52 "inUV" - Name 60 "instanceTexIndex" - Name 71 "s" - Name 76 "instanceRot" - Name 90 "UBO" - MemberName 90(UBO) 0 "projection" - MemberName 90(UBO) 1 "modelview" - MemberName 90(UBO) 2 "lightPos" - MemberName 90(UBO) 3 "locSpeed" - MemberName 90(UBO) 4 "globSpeed" - Name 106 "ubo" - Name 117 "c" - Name 132 "mx" - Name 175 "my" - Name 212 "mz" - Name 233 "rotMat" - Name 262 "gRotMat" - Name 288 "locPos" - Name 292 "inPos" - Name 304 "pos" - Name 310 "instanceScale" - Name 315 "instancePos" - Name 328 "gl_PerVertex" - MemberName 328(gl_PerVertex) 0 "gl_Position" - MemberName 328(gl_PerVertex) 1 "gl_PointSize" - MemberName 328(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 328(gl_PerVertex) 3 "gl_CullDistance" - Name 340 "" - Name 356 "outNormal" - Name 373 "inNormal" - Name 392 "lPos" - Name 412 "outLightVec" - Name 421 "outViewVec" - Decorate 35(outColor) Location 1 - Decorate 40(inColor) Location 3 - Decorate 46(outUV) Location 2 - Decorate 52(inUV) Location 2 - Decorate 60(instanceTexIndex) Location 7 - Decorate 76(instanceRot) Location 5 - MemberDecorate 90(UBO) 0 ColMajor - MemberDecorate 90(UBO) 0 Offset 0 - MemberDecorate 90(UBO) 0 MatrixStride 16 - MemberDecorate 90(UBO) 1 ColMajor - MemberDecorate 90(UBO) 1 Offset 64 - MemberDecorate 90(UBO) 1 MatrixStride 16 - MemberDecorate 90(UBO) 2 Offset 128 - MemberDecorate 90(UBO) 3 Offset 144 - MemberDecorate 90(UBO) 4 Offset 148 - Decorate 90(UBO) Block - Decorate 106(ubo) DescriptorSet 0 - Decorate 106(ubo) Binding 0 - Decorate 292(inPos) Location 0 - Decorate 310(instanceScale) Location 6 - Decorate 315(instancePos) Location 4 - MemberDecorate 328(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 328(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 328(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 328(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 328(gl_PerVertex) Block - Decorate 356(outNormal) Location 0 - Decorate 373(inNormal) Location 1 - Decorate 412(outLightVec) Location 4 - Decorate 421(outViewVec) Location 3 + Name 36 "outColor" + Name 42 "inColor" + Name 48 "outUV" + Name 55 "inUV" + Name 64 "instanceTexIndex" + Name 77 "s" + Name 82 "instanceRot" + Name 97 "UBO" + MemberName 97(UBO) 0 "projection" + MemberName 97(UBO) 1 "modelview" + MemberName 97(UBO) 2 "lightPos" + MemberName 97(UBO) 3 "locSpeed" + MemberName 97(UBO) 4 "globSpeed" + Name 113 "ubo" + Name 125 "c" + Name 141 "mx" + Name 185 "my" + Name 222 "mz" + Name 243 "rotMat" + Name 273 "gRotMat" + Name 300 "locPos" + Name 304 "inPos" + Name 316 "pos" + Name 322 "instanceScale" + Name 327 "instancePos" + Name 340 "gl_PerVertex" + MemberName 340(gl_PerVertex) 0 "gl_Position" + MemberName 340(gl_PerVertex) 1 "gl_PointSize" + MemberName 340(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 340(gl_PerVertex) 3 "gl_CullDistance" + Name 353 "" + Name 371 "outNormal" + Name 388 "inNormal" + Name 407 "lPos" + Name 428 "outLightVec" + Name 437 "outViewVec" + Decorate 36(outColor) Location 1 + Decorate 42(inColor) Location 3 + Decorate 48(outUV) Location 2 + Decorate 55(inUV) Location 2 + Decorate 64(instanceTexIndex) Location 7 + Decorate 82(instanceRot) Location 5 + MemberDecorate 97(UBO) 0 ColMajor + MemberDecorate 97(UBO) 0 Offset 0 + MemberDecorate 97(UBO) 0 MatrixStride 16 + MemberDecorate 97(UBO) 1 ColMajor + MemberDecorate 97(UBO) 1 Offset 64 + MemberDecorate 97(UBO) 1 MatrixStride 16 + MemberDecorate 97(UBO) 2 Offset 128 + MemberDecorate 97(UBO) 3 Offset 144 + MemberDecorate 97(UBO) 4 Offset 148 + Decorate 97(UBO) Block + Decorate 113(ubo) DescriptorSet 0 + Decorate 113(ubo) Binding 0 + Decorate 304(inPos) Location 0 + Decorate 322(instanceScale) Location 6 + Decorate 327(instancePos) Location 4 + MemberDecorate 340(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 340(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 340(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 340(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 340(gl_PerVertex) Block + Decorate 371(outNormal) Location 0 + Decorate 388(inNormal) Location 1 + Decorate 428(outLightVec) Location 4 + Decorate 437(outViewVec) Location 3 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -144,401 +144,417 @@ spv.debuginfo.glsl.vert 32: TypeVector 29(float) 3 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 13 34: TypePointer Output 32(fvec3) - 35(outColor): 34(ptr) Variable Output - 38: 7(int) Constant 8 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 37 33 18 28 12 21 37 35(outColor) 38 - 39: TypePointer Input 32(fvec3) - 40(inColor): 39(ptr) Variable Input - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 42 33 18 28 12 21 42 40(inColor) 38 - 45: 7(int) Constant 57 - 46(outUV): 34(ptr) Variable Output - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 48 33 18 45 12 21 48 46(outUV) 38 - 49: TypeVector 29(float) 2 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 24 - 51: TypePointer Input 49(fvec2) - 52(inUV): 51(ptr) Variable Input - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 54 50 18 45 12 21 54 52(inUV) 38 - 56: TypeInt 32 1 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 23 12 - 59: TypePointer Input 56(int) -60(instanceTexIndex): 59(ptr) Variable Input - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 18 45 12 21 62 60(instanceTexIndex) 38 - 69: 7(int) Constant 62 - 70: TypePointer Function 29(float) - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 31 18 69 12 17 23 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 76(instanceRot): 39(ptr) Variable Input - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 33 18 69 12 21 78 76(instanceRot) 38 - 79: TypePointer Input 29(float) - 82: TypeVector 29(float) 4 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 - 84: TypeMatrix 82(fvec4) 4 - 86: TypeBool - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 87 10 24 12 - 89: 86(bool) ConstantTrue - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 83 23 89 - 90(UBO): TypeStruct 84 84 82(fvec4) 29(float) 29(float) - 93: 7(int) Constant 42 - 94: 7(int) Constant 7 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 85 18 93 94 12 12 13 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 85 18 93 94 12 12 13 - 98: 7(int) Constant 43 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 83 18 98 94 12 12 13 - 101: 7(int) Constant 45 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 31 18 101 38 12 12 13 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 31 18 101 38 12 12 13 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 104 22 18 69 12 21 104 12 13 91 95 96 99 102 - 105: TypePointer Uniform 90(UBO) - 106(ubo): 105(ptr) Variable Uniform - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 108 103 18 69 12 21 108 106(ubo) 38 - 109: 56(int) Constant 3 - 110: TypePointer Uniform 29(float) - 116: 7(int) Constant 63 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 119 31 18 116 12 17 23 - 128: 7(int) Constant 65 - 129: TypeMatrix 32(fvec3) 3 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 33 13 89 - 131: TypePointer Function 129 - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 134 130 18 128 12 17 23 - 136: 56(int) Constant 0 - 139: 29(float) Constant 0 - 141: TypePointer Function 32(fvec3) - 144: 7(int) Constant 66 - 145: 56(int) Constant 1 - 152: 7(int) Constant 67 - 153: 56(int) Constant 2 - 154: 29(float) Constant 1065353216 - 155: 32(fvec3) ConstantComposite 139 139 154 - 158: 7(int) Constant 70 - 166: 7(int) Constant 71 - 174: 7(int) Constant 73 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 177 130 18 174 12 17 23 - 184: 7(int) Constant 74 - 185: 32(fvec3) ConstantComposite 139 154 139 - 188: 7(int) Constant 75 - 195: 7(int) Constant 78 - 203: 7(int) Constant 79 - 211: 7(int) Constant 81 - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 214 130 18 211 12 17 23 - 216: 32(fvec3) ConstantComposite 154 139 139 - 219: 7(int) Constant 82 - 225: 7(int) Constant 83 - 232: 7(int) Constant 85 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 235 130 18 232 12 17 23 - 243: 7(int) Constant 88 - 246: 56(int) Constant 4 - 252: 7(int) Constant 89 - 260: 7(int) Constant 90 - 261: TypePointer Function 84 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 264 85 18 260 12 17 23 - 269: TypePointer Function 82(fvec4) - 272: 7(int) Constant 91 - 273: 82(fvec4) ConstantComposite 139 154 139 139 - 276: 7(int) Constant 92 - 283: 7(int) Constant 93 - 284: 82(fvec4) ConstantComposite 139 139 139 154 - 287: 7(int) Constant 95 - 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 290 83 18 287 12 17 23 - 292(inPos): 39(ptr) Variable Input - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 294 33 18 287 12 21 294 292(inPos) 38 - 303: 7(int) Constant 96 - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 306 83 18 303 12 17 23 -310(instanceScale): 79(ptr) Variable Input - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 312 31 18 303 12 21 312 310(instanceScale) 38 -315(instancePos): 39(ptr) Variable Input - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 317 33 18 303 12 21 317 315(instancePos) 38 - 325: 7(int) Constant 98 - 326: TypeArray 29(float) 22 - 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 -328(gl_PerVertex): TypeStruct 82(fvec4) 29(float) 326 326 - 331: 7(int) Constant 24 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 330 83 18 22 331 12 12 13 - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 333 31 18 22 93 12 12 13 - 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 335 327 18 22 232 12 12 13 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 335 327 18 22 232 12 12 13 - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 338 22 18 325 12 21 338 12 13 329 332 334 336 - 339: TypePointer Output 328(gl_PerVertex) - 340: 339(ptr) Variable Output - 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 337 18 325 12 21 1 340 38 - 342: TypePointer Uniform 84 - 352: TypePointer Output 82(fvec4) - 355: 7(int) Constant 99 - 356(outNormal): 34(ptr) Variable Output - 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 358 33 18 355 12 21 358 356(outNormal) 38 - 373(inNormal): 39(ptr) Variable Input - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 375 33 18 355 12 21 375 373(inNormal) 38 - 379: 7(int) Constant 101 - 391: 7(int) Constant 102 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 394 33 18 391 12 17 23 - 405: TypePointer Uniform 82(fvec4) - 411: 7(int) Constant 103 -412(outLightVec): 34(ptr) Variable Output - 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 414 33 18 411 12 21 414 412(outLightVec) 38 - 420: 7(int) Constant 104 - 421(outViewVec): 34(ptr) Variable Output - 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 423 33 18 420 12 21 423 421(outViewVec) 38 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 13 12 + 36(outColor): 34(ptr) Variable Output + 39: 7(int) Constant 8 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 38 33 18 28 12 21 38 36(outColor) 39 + 40: TypePointer Input 32(fvec3) + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 22 12 + 42(inColor): 40(ptr) Variable Input + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 44 33 18 28 12 21 44 42(inColor) 39 + 47: 7(int) Constant 57 + 48(outUV): 34(ptr) Variable Output + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 50 33 18 47 12 21 50 48(outUV) 39 + 51: TypeVector 29(float) 2 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 24 + 53: TypePointer Input 51(fvec2) + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 52 22 12 + 55(inUV): 53(ptr) Variable Input + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 57 52 18 47 12 21 57 55(inUV) 39 + 59: TypeInt 32 1 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 60 10 23 12 + 62: TypePointer Input 59(int) + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 22 12 +64(instanceTexIndex): 62(ptr) Variable Input + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 66 61 18 47 12 21 66 64(instanceTexIndex) 39 + 73: 7(int) Constant 62 + 74: TypePointer Function 29(float) + 75: 7(int) Constant 7 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 75 12 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 31 18 73 12 17 23 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 82(instanceRot): 40(ptr) Variable Input + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 33 18 73 12 21 84 82(instanceRot) 39 + 85: TypePointer Input 29(float) + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 22 12 + 89: TypeVector 29(float) 4 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 + 91: TypeMatrix 89(fvec4) 4 + 93: TypeBool + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 94 10 24 12 + 96: 93(bool) ConstantTrue + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 90 23 96 + 97(UBO): TypeStruct 91 91 89(fvec4) 29(float) 29(float) + 100: 7(int) Constant 42 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 92 18 100 75 12 12 13 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 92 18 100 75 12 12 13 + 104: 7(int) Constant 43 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 103 90 18 104 75 12 12 13 + 107: 7(int) Constant 45 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 31 18 107 39 12 12 13 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 31 18 107 39 12 12 13 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 110 22 18 73 12 21 110 12 13 98 101 102 105 108 + 111: TypePointer Uniform 97(UBO) + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 109 24 12 + 113(ubo): 111(ptr) Variable Uniform + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 115 109 18 73 12 21 115 113(ubo) 39 + 116: 59(int) Constant 3 + 117: TypePointer Uniform 29(float) + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 24 12 + 124: 7(int) Constant 63 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 127 31 18 124 12 17 23 + 136: 7(int) Constant 65 + 137: TypeMatrix 32(fvec3) 3 + 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 33 13 96 + 139: TypePointer Function 137 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 138 75 12 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 138 18 136 12 17 23 + 145: 59(int) Constant 0 + 148: 29(float) Constant 0 + 150: TypePointer Function 32(fvec3) + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 75 12 + 154: 7(int) Constant 66 + 155: 59(int) Constant 1 + 162: 7(int) Constant 67 + 163: 59(int) Constant 2 + 164: 29(float) Constant 1065353216 + 165: 32(fvec3) ConstantComposite 148 148 164 + 168: 7(int) Constant 70 + 176: 7(int) Constant 71 + 184: 7(int) Constant 73 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 138 18 184 12 17 23 + 194: 7(int) Constant 74 + 195: 32(fvec3) ConstantComposite 148 164 148 + 198: 7(int) Constant 75 + 205: 7(int) Constant 78 + 213: 7(int) Constant 79 + 221: 7(int) Constant 81 + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 224 138 18 221 12 17 23 + 226: 32(fvec3) ConstantComposite 164 148 148 + 229: 7(int) Constant 82 + 235: 7(int) Constant 83 + 242: 7(int) Constant 85 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 138 18 242 12 17 23 + 253: 7(int) Constant 88 + 256: 59(int) Constant 4 + 262: 7(int) Constant 89 + 270: 7(int) Constant 90 + 271: TypePointer Function 91 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 92 75 12 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 92 18 270 12 17 23 + 280: TypePointer Function 89(fvec4) + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 75 12 + 284: 7(int) Constant 91 + 285: 89(fvec4) ConstantComposite 148 164 148 148 + 288: 7(int) Constant 92 + 295: 7(int) Constant 93 + 296: 89(fvec4) ConstantComposite 148 148 148 164 + 299: 7(int) Constant 95 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 302 90 18 299 12 17 23 + 304(inPos): 40(ptr) Variable Input + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 306 33 18 299 12 21 306 304(inPos) 39 + 315: 7(int) Constant 96 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 318 90 18 315 12 17 23 +322(instanceScale): 85(ptr) Variable Input + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 324 31 18 315 12 21 324 322(instanceScale) 39 +327(instancePos): 40(ptr) Variable Input + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 329 33 18 315 12 21 329 327(instancePos) 39 + 337: 7(int) Constant 98 + 338: TypeArray 29(float) 22 + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 +340(gl_PerVertex): TypeStruct 89(fvec4) 29(float) 338 338 + 343: 7(int) Constant 24 + 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 342 90 18 22 343 12 12 13 + 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 345 31 18 22 100 12 12 13 + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 339 18 22 242 12 12 13 + 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 339 18 22 242 12 12 13 + 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 350 22 18 337 12 21 350 12 13 341 344 346 348 + 351: TypePointer Output 340(gl_PerVertex) + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 349 13 12 + 353: 351(ptr) Variable Output + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 349 18 337 12 21 1 353 39 + 355: TypePointer Uniform 91 + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 92 24 12 + 366: TypePointer Output 89(fvec4) + 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 13 12 + 370: 7(int) Constant 99 + 371(outNormal): 34(ptr) Variable Output + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 373 33 18 370 12 21 373 371(outNormal) 39 + 388(inNormal): 40(ptr) Variable Input + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 390 33 18 370 12 21 390 388(inNormal) 39 + 394: 7(int) Constant 101 + 406: 7(int) Constant 102 + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 33 18 406 12 17 23 + 420: TypePointer Uniform 89(fvec4) + 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 24 12 + 427: 7(int) Constant 103 +428(outLightVec): 34(ptr) Variable Output + 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 33 18 427 12 21 430 428(outLightVec) 39 + 436: 7(int) Constant 104 + 437(outViewVec): 34(ptr) Variable Output + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 439 33 18 436 12 21 439 437(outViewVec) 39 Line 1 54 11 14(main): 4 Function None 5 15: Label - 71(s): 70(ptr) Variable Function - 117(c): 70(ptr) Variable Function - 132(mx): 131(ptr) Variable Function - 175(my): 131(ptr) Variable Function - 212(mz): 131(ptr) Variable Function - 233(rotMat): 131(ptr) Variable Function - 262(gRotMat): 261(ptr) Variable Function - 288(locPos): 269(ptr) Variable Function - 304(pos): 269(ptr) Variable Function - 392(lPos): 141(ptr) Variable Function + 77(s): 74(ptr) Variable Function + 125(c): 74(ptr) Variable Function + 141(mx): 139(ptr) Variable Function + 185(my): 139(ptr) Variable Function + 222(mz): 139(ptr) Variable Function + 243(rotMat): 139(ptr) Variable Function + 273(gRotMat): 271(ptr) Variable Function + 300(locPos): 280(ptr) Variable Function + 316(pos): 280(ptr) Variable Function + 407(lPos): 150(ptr) Variable Function 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 43: 32(fvec3) Load 40(inColor) - Store 35(outColor) 43 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 45 45 12 12 - 55: 49(fvec2) Load 52(inUV) - 63: 56(int) Load 60(instanceTexIndex) - 64: 29(float) ConvertSToF 63 - 65: 29(float) CompositeExtract 55 0 - 66: 29(float) CompositeExtract 55 1 - 67: 32(fvec3) CompositeConstruct 65 66 64 - Store 46(outUV) 67 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 69 69 12 12 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 71(s) 75 - 80: 79(ptr) AccessChain 76(instanceRot) 12 - 81: 29(float) Load 80 - 111: 110(ptr) AccessChain 106(ubo) 109 - 112: 29(float) Load 111 - 113: 29(float) FAdd 81 112 - 114: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 113 - Store 71(s) 114 - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 116 116 12 12 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 118 117(c) 75 - 121: 79(ptr) AccessChain 76(instanceRot) 12 - 122: 29(float) Load 121 - 123: 110(ptr) AccessChain 106(ubo) 109 - 124: 29(float) Load 123 - 125: 29(float) FAdd 122 124 - 126: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 125 - Store 117(c) 126 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 128 128 12 12 - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 133 132(mx) 75 - 137: 29(float) Load 117(c) - 138: 29(float) Load 71(s) - 140: 32(fvec3) CompositeConstruct 137 138 139 - 142: 141(ptr) AccessChain 132(mx) 136 - Store 142 140 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 144 144 12 12 - 146: 29(float) Load 71(s) - 147: 29(float) FNegate 146 - 148: 29(float) Load 117(c) - 149: 32(fvec3) CompositeConstruct 147 148 139 - 150: 141(ptr) AccessChain 132(mx) 145 - Store 150 149 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 152 152 12 12 - 156: 141(ptr) AccessChain 132(mx) 153 - Store 156 155 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 158 158 12 12 - 159: 79(ptr) AccessChain 76(instanceRot) 22 - 160: 29(float) Load 159 - 161: 110(ptr) AccessChain 106(ubo) 109 - 162: 29(float) Load 161 - 163: 29(float) FAdd 160 162 - 164: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 163 - Store 71(s) 164 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 166 166 12 12 - 167: 79(ptr) AccessChain 76(instanceRot) 22 - 168: 29(float) Load 167 - 169: 110(ptr) AccessChain 106(ubo) 109 + 45: 32(fvec3) Load 42(inColor) + Store 36(outColor) 45 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 47 47 12 12 + 58: 51(fvec2) Load 55(inUV) + 67: 59(int) Load 64(instanceTexIndex) + 68: 29(float) ConvertSToF 67 + 69: 29(float) CompositeExtract 58 0 + 70: 29(float) CompositeExtract 58 1 + 71: 32(fvec3) CompositeConstruct 69 70 68 + Store 48(outUV) 71 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 73 73 12 12 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 77(s) 81 + 87: 85(ptr) AccessChain 82(instanceRot) 12 + 88: 29(float) Load 87 + 119: 117(ptr) AccessChain 113(ubo) 116 + 120: 29(float) Load 119 + 121: 29(float) FAdd 88 120 + 122: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 121 + Store 77(s) 122 + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 124 124 12 12 + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 126 125(c) 81 + 129: 85(ptr) AccessChain 82(instanceRot) 12 + 130: 29(float) Load 129 + 131: 117(ptr) AccessChain 113(ubo) 116 + 132: 29(float) Load 131 + 133: 29(float) FAdd 130 132 + 134: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 133 + Store 125(c) 134 + 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(mx) 81 + 146: 29(float) Load 125(c) + 147: 29(float) Load 77(s) + 149: 32(fvec3) CompositeConstruct 146 147 148 + 152: 150(ptr) AccessChain 141(mx) 145 + Store 152 149 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 154 154 12 12 + 156: 29(float) Load 77(s) + 157: 29(float) FNegate 156 + 158: 29(float) Load 125(c) + 159: 32(fvec3) CompositeConstruct 157 158 148 + 160: 150(ptr) AccessChain 141(mx) 155 + Store 160 159 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 162 162 12 12 + 166: 150(ptr) AccessChain 141(mx) 163 + Store 166 165 + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 168 168 12 12 + 169: 85(ptr) AccessChain 82(instanceRot) 22 170: 29(float) Load 169 - 171: 29(float) FAdd 168 170 - 172: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 171 - Store 117(c) 172 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 174 174 12 12 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 176 175(my) 75 - 179: 29(float) Load 117(c) - 180: 29(float) Load 71(s) - 181: 32(fvec3) CompositeConstruct 179 139 180 - 182: 141(ptr) AccessChain 175(my) 136 - Store 182 181 + 171: 117(ptr) AccessChain 113(ubo) 116 + 172: 29(float) Load 171 + 173: 29(float) FAdd 170 172 + 174: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 173 + Store 77(s) 174 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 176 176 12 12 + 177: 85(ptr) AccessChain 82(instanceRot) 22 + 178: 29(float) Load 177 + 179: 117(ptr) AccessChain 113(ubo) 116 + 180: 29(float) Load 179 + 181: 29(float) FAdd 178 180 + 182: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 181 + Store 125(c) 182 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 184 184 12 12 - 186: 141(ptr) AccessChain 175(my) 145 - Store 186 185 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 188 188 12 12 - 189: 29(float) Load 71(s) - 190: 29(float) FNegate 189 - 191: 29(float) Load 117(c) - 192: 32(fvec3) CompositeConstruct 190 139 191 - 193: 141(ptr) AccessChain 175(my) 153 - Store 193 192 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 195 195 12 12 - 196: 79(ptr) AccessChain 76(instanceRot) 24 - 197: 29(float) Load 196 - 198: 110(ptr) AccessChain 106(ubo) 109 - 199: 29(float) Load 198 - 200: 29(float) FAdd 197 199 - 201: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 200 - Store 71(s) 201 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 203 203 12 12 - 204: 79(ptr) AccessChain 76(instanceRot) 24 - 205: 29(float) Load 204 - 206: 110(ptr) AccessChain 106(ubo) 109 + 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 186 185(my) 81 + 189: 29(float) Load 125(c) + 190: 29(float) Load 77(s) + 191: 32(fvec3) CompositeConstruct 189 148 190 + 192: 150(ptr) AccessChain 185(my) 145 + Store 192 191 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 194 194 12 12 + 196: 150(ptr) AccessChain 185(my) 155 + Store 196 195 + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 198 198 12 12 + 199: 29(float) Load 77(s) + 200: 29(float) FNegate 199 + 201: 29(float) Load 125(c) + 202: 32(fvec3) CompositeConstruct 200 148 201 + 203: 150(ptr) AccessChain 185(my) 163 + Store 203 202 + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 205 205 12 12 + 206: 85(ptr) AccessChain 82(instanceRot) 24 207: 29(float) Load 206 - 208: 29(float) FAdd 205 207 - 209: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 208 - Store 117(c) 209 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 211 211 12 12 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 213 212(mz) 75 - 217: 141(ptr) AccessChain 212(mz) 136 - Store 217 216 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 219 219 12 12 - 220: 29(float) Load 117(c) - 221: 29(float) Load 71(s) - 222: 32(fvec3) CompositeConstruct 139 220 221 - 223: 141(ptr) AccessChain 212(mz) 145 - Store 223 222 - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 225 225 12 12 - 226: 29(float) Load 71(s) - 227: 29(float) FNegate 226 - 228: 29(float) Load 117(c) - 229: 32(fvec3) CompositeConstruct 139 227 228 - 230: 141(ptr) AccessChain 212(mz) 153 - Store 230 229 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 232 232 12 12 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 234 233(rotMat) 75 - 237: 129 Load 212(mz) - 238: 129 Load 175(my) - 239: 129 MatrixTimesMatrix 237 238 - 240: 129 Load 132(mx) - 241: 129 MatrixTimesMatrix 239 240 - Store 233(rotMat) 241 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 243 243 12 12 - 244: 79(ptr) AccessChain 76(instanceRot) 22 - 245: 29(float) Load 244 - 247: 110(ptr) AccessChain 106(ubo) 246 - 248: 29(float) Load 247 - 249: 29(float) FAdd 245 248 - 250: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 249 - Store 71(s) 250 - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 252 252 12 12 - 253: 79(ptr) AccessChain 76(instanceRot) 22 - 254: 29(float) Load 253 - 255: 110(ptr) AccessChain 106(ubo) 246 - 256: 29(float) Load 255 - 257: 29(float) FAdd 254 256 - 258: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 257 - Store 117(c) 258 - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 260 260 12 12 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 263 262(gRotMat) 75 - 266: 29(float) Load 117(c) - 267: 29(float) Load 71(s) - 268: 82(fvec4) CompositeConstruct 266 139 267 139 - 270: 269(ptr) AccessChain 262(gRotMat) 136 - Store 270 268 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 272 272 12 12 - 274: 269(ptr) AccessChain 262(gRotMat) 145 - Store 274 273 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 276 276 12 12 - 277: 29(float) Load 71(s) - 278: 29(float) FNegate 277 - 279: 29(float) Load 117(c) - 280: 82(fvec4) CompositeConstruct 278 139 279 139 - 281: 269(ptr) AccessChain 262(gRotMat) 153 - Store 281 280 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 283 283 12 12 - 285: 269(ptr) AccessChain 262(gRotMat) 109 - Store 285 284 - 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 287 287 12 12 - 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 289 288(locPos) 75 - 295: 32(fvec3) Load 292(inPos) - 296: 129 Load 233(rotMat) - 297: 32(fvec3) VectorTimesMatrix 295 296 - 298: 29(float) CompositeExtract 297 0 - 299: 29(float) CompositeExtract 297 1 - 300: 29(float) CompositeExtract 297 2 - 301: 82(fvec4) CompositeConstruct 298 299 300 154 - Store 288(locPos) 301 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 303 303 12 12 - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 305 304(pos) 75 - 308: 82(fvec4) Load 288(locPos) - 309: 32(fvec3) VectorShuffle 308 308 0 1 2 - 313: 29(float) Load 310(instanceScale) - 314: 32(fvec3) VectorTimesScalar 309 313 - 318: 32(fvec3) Load 315(instancePos) - 319: 32(fvec3) FAdd 314 318 - 320: 29(float) CompositeExtract 319 0 - 321: 29(float) CompositeExtract 319 1 - 322: 29(float) CompositeExtract 319 2 - 323: 82(fvec4) CompositeConstruct 320 321 322 154 - Store 304(pos) 323 - 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 325 325 12 12 - 343: 342(ptr) AccessChain 106(ubo) 136 - 344: 84 Load 343 - 345: 342(ptr) AccessChain 106(ubo) 145 - 346: 84 Load 345 - 347: 84 MatrixTimesMatrix 344 346 - 348: 84 Load 262(gRotMat) - 349: 84 MatrixTimesMatrix 347 348 - 350: 82(fvec4) Load 304(pos) - 351: 82(fvec4) MatrixTimesVector 349 350 - 353: 352(ptr) AccessChain 340 136 - Store 353 351 - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 355 355 12 12 - 359: 342(ptr) AccessChain 106(ubo) 145 - 360: 84 Load 359 - 361: 84 Load 262(gRotMat) - 362: 84 MatrixTimesMatrix 360 361 - 363: 82(fvec4) CompositeExtract 362 0 - 364: 32(fvec3) VectorShuffle 363 363 0 1 2 - 365: 82(fvec4) CompositeExtract 362 1 - 366: 32(fvec3) VectorShuffle 365 365 0 1 2 - 367: 82(fvec4) CompositeExtract 362 2 - 368: 32(fvec3) VectorShuffle 367 367 0 1 2 - 369: 129 CompositeConstruct 364 366 368 - 370: 129 Load 233(rotMat) - 371: 129 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 370 - 372: 129 MatrixTimesMatrix 369 371 - 376: 32(fvec3) Load 373(inNormal) - 377: 32(fvec3) MatrixTimesVector 372 376 - Store 356(outNormal) 377 - 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 379 379 12 12 - 380: 342(ptr) AccessChain 106(ubo) 145 - 381: 84 Load 380 - 382: 32(fvec3) Load 292(inPos) - 383: 32(fvec3) Load 315(instancePos) - 384: 32(fvec3) FAdd 382 383 - 385: 29(float) CompositeExtract 384 0 - 386: 29(float) CompositeExtract 384 1 - 387: 29(float) CompositeExtract 384 2 - 388: 82(fvec4) CompositeConstruct 385 386 387 154 - 389: 82(fvec4) MatrixTimesVector 381 388 - Store 304(pos) 389 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 391 391 12 12 - 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 393 392(lPos) 75 - 396: 342(ptr) AccessChain 106(ubo) 145 - 397: 84 Load 396 - 398: 82(fvec4) CompositeExtract 397 0 - 399: 32(fvec3) VectorShuffle 398 398 0 1 2 - 400: 82(fvec4) CompositeExtract 397 1 - 401: 32(fvec3) VectorShuffle 400 400 0 1 2 - 402: 82(fvec4) CompositeExtract 397 2 - 403: 32(fvec3) VectorShuffle 402 402 0 1 2 - 404: 129 CompositeConstruct 399 401 403 - 406: 405(ptr) AccessChain 106(ubo) 153 - 407: 82(fvec4) Load 406 - 408: 32(fvec3) VectorShuffle 407 407 0 1 2 - 409: 32(fvec3) MatrixTimesVector 404 408 - Store 392(lPos) 409 - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 411 411 12 12 - 415: 32(fvec3) Load 392(lPos) - 416: 82(fvec4) Load 304(pos) - 417: 32(fvec3) VectorShuffle 416 416 0 1 2 - 418: 32(fvec3) FSub 415 417 - Store 412(outLightVec) 418 - 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 420 420 12 12 - 424: 82(fvec4) Load 304(pos) - 425: 32(fvec3) VectorShuffle 424 424 0 1 2 - 426: 32(fvec3) FNegate 425 - Store 421(outViewVec) 426 + 208: 117(ptr) AccessChain 113(ubo) 116 + 209: 29(float) Load 208 + 210: 29(float) FAdd 207 209 + 211: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 210 + Store 77(s) 211 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 + 214: 85(ptr) AccessChain 82(instanceRot) 24 + 215: 29(float) Load 214 + 216: 117(ptr) AccessChain 113(ubo) 116 + 217: 29(float) Load 216 + 218: 29(float) FAdd 215 217 + 219: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 218 + Store 125(c) 219 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 221 221 12 12 + 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 223 222(mz) 81 + 227: 150(ptr) AccessChain 222(mz) 145 + Store 227 226 + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 229 229 12 12 + 230: 29(float) Load 125(c) + 231: 29(float) Load 77(s) + 232: 32(fvec3) CompositeConstruct 148 230 231 + 233: 150(ptr) AccessChain 222(mz) 155 + Store 233 232 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 235 235 12 12 + 236: 29(float) Load 77(s) + 237: 29(float) FNegate 236 + 238: 29(float) Load 125(c) + 239: 32(fvec3) CompositeConstruct 148 237 238 + 240: 150(ptr) AccessChain 222(mz) 163 + Store 240 239 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 242 242 12 12 + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(rotMat) 81 + 247: 137 Load 222(mz) + 248: 137 Load 185(my) + 249: 137 MatrixTimesMatrix 247 248 + 250: 137 Load 141(mx) + 251: 137 MatrixTimesMatrix 249 250 + Store 243(rotMat) 251 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 253 253 12 12 + 254: 85(ptr) AccessChain 82(instanceRot) 22 + 255: 29(float) Load 254 + 257: 117(ptr) AccessChain 113(ubo) 256 + 258: 29(float) Load 257 + 259: 29(float) FAdd 255 258 + 260: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 259 + Store 77(s) 260 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 262 262 12 12 + 263: 85(ptr) AccessChain 82(instanceRot) 22 + 264: 29(float) Load 263 + 265: 117(ptr) AccessChain 113(ubo) 256 + 266: 29(float) Load 265 + 267: 29(float) FAdd 264 266 + 268: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 267 + Store 125(c) 268 + 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 270 270 12 12 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(gRotMat) 81 + 277: 29(float) Load 125(c) + 278: 29(float) Load 77(s) + 279: 89(fvec4) CompositeConstruct 277 148 278 148 + 282: 280(ptr) AccessChain 273(gRotMat) 145 + Store 282 279 + 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 284 284 12 12 + 286: 280(ptr) AccessChain 273(gRotMat) 155 + Store 286 285 + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 288 288 12 12 + 289: 29(float) Load 77(s) + 290: 29(float) FNegate 289 + 291: 29(float) Load 125(c) + 292: 89(fvec4) CompositeConstruct 290 148 291 148 + 293: 280(ptr) AccessChain 273(gRotMat) 163 + Store 293 292 + 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 295 295 12 12 + 297: 280(ptr) AccessChain 273(gRotMat) 116 + Store 297 296 + 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 299 299 12 12 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 301 300(locPos) 81 + 307: 32(fvec3) Load 304(inPos) + 308: 137 Load 243(rotMat) + 309: 32(fvec3) VectorTimesMatrix 307 308 + 310: 29(float) CompositeExtract 309 0 + 311: 29(float) CompositeExtract 309 1 + 312: 29(float) CompositeExtract 309 2 + 313: 89(fvec4) CompositeConstruct 310 311 312 164 + Store 300(locPos) 313 + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 315 315 12 12 + 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 317 316(pos) 81 + 320: 89(fvec4) Load 300(locPos) + 321: 32(fvec3) VectorShuffle 320 320 0 1 2 + 325: 29(float) Load 322(instanceScale) + 326: 32(fvec3) VectorTimesScalar 321 325 + 330: 32(fvec3) Load 327(instancePos) + 331: 32(fvec3) FAdd 326 330 + 332: 29(float) CompositeExtract 331 0 + 333: 29(float) CompositeExtract 331 1 + 334: 29(float) CompositeExtract 331 2 + 335: 89(fvec4) CompositeConstruct 332 333 334 164 + Store 316(pos) 335 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 337 337 12 12 + 357: 355(ptr) AccessChain 113(ubo) 145 + 358: 91 Load 357 + 359: 355(ptr) AccessChain 113(ubo) 155 + 360: 91 Load 359 + 361: 91 MatrixTimesMatrix 358 360 + 362: 91 Load 273(gRotMat) + 363: 91 MatrixTimesMatrix 361 362 + 364: 89(fvec4) Load 316(pos) + 365: 89(fvec4) MatrixTimesVector 363 364 + 368: 366(ptr) AccessChain 353 145 + Store 368 365 + 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 370 370 12 12 + 374: 355(ptr) AccessChain 113(ubo) 155 + 375: 91 Load 374 + 376: 91 Load 273(gRotMat) + 377: 91 MatrixTimesMatrix 375 376 + 378: 89(fvec4) CompositeExtract 377 0 + 379: 32(fvec3) VectorShuffle 378 378 0 1 2 + 380: 89(fvec4) CompositeExtract 377 1 + 381: 32(fvec3) VectorShuffle 380 380 0 1 2 + 382: 89(fvec4) CompositeExtract 377 2 + 383: 32(fvec3) VectorShuffle 382 382 0 1 2 + 384: 137 CompositeConstruct 379 381 383 + 385: 137 Load 243(rotMat) + 386: 137 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 385 + 387: 137 MatrixTimesMatrix 384 386 + 391: 32(fvec3) Load 388(inNormal) + 392: 32(fvec3) MatrixTimesVector 387 391 + Store 371(outNormal) 392 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 394 394 12 12 + 395: 355(ptr) AccessChain 113(ubo) 155 + 396: 91 Load 395 + 397: 32(fvec3) Load 304(inPos) + 398: 32(fvec3) Load 327(instancePos) + 399: 32(fvec3) FAdd 397 398 + 400: 29(float) CompositeExtract 399 0 + 401: 29(float) CompositeExtract 399 1 + 402: 29(float) CompositeExtract 399 2 + 403: 89(fvec4) CompositeConstruct 400 401 402 164 + 404: 89(fvec4) MatrixTimesVector 396 403 + Store 316(pos) 404 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 406 406 12 12 + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(lPos) 81 + 411: 355(ptr) AccessChain 113(ubo) 155 + 412: 91 Load 411 + 413: 89(fvec4) CompositeExtract 412 0 + 414: 32(fvec3) VectorShuffle 413 413 0 1 2 + 415: 89(fvec4) CompositeExtract 412 1 + 416: 32(fvec3) VectorShuffle 415 415 0 1 2 + 417: 89(fvec4) CompositeExtract 412 2 + 418: 32(fvec3) VectorShuffle 417 417 0 1 2 + 419: 137 CompositeConstruct 414 416 418 + 422: 420(ptr) AccessChain 113(ubo) 163 + 423: 89(fvec4) Load 422 + 424: 32(fvec3) VectorShuffle 423 423 0 1 2 + 425: 32(fvec3) MatrixTimesVector 419 424 + Store 407(lPos) 425 + 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 427 427 12 12 + 431: 32(fvec3) Load 407(lPos) + 432: 89(fvec4) Load 316(pos) + 433: 32(fvec3) VectorShuffle 432 432 0 1 2 + 434: 32(fvec3) FSub 431 433 + Store 428(outLightVec) 434 + 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 436 436 12 12 + 440: 89(fvec4) Load 316(pos) + 441: 32(fvec3) VectorShuffle 440 440 0 1 2 + 442: 32(fvec3) FNegate 441 + Store 437(outViewVec) 442 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index 65bd8a17fa..b4dd8371ff 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -1,20 +1,20 @@ spv.debuginfo.hlsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 953 +// Id's are bound by 966 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 6 "main" 948 + EntryPoint GLCompute 6 "main" 961 ExecutionMode 6 LocalSize 10 10 1 1: String "" 9: String "float" 12: String "uint" - 29: String "springForce" - 32: String "// OpModuleProcessed auto-map-locations + 32: String "springForce" + 35: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 @@ -23,153 +23,153 @@ spv.debuginfo.hlsl.comp // OpModuleProcessed hlsl-offsets #line 1 " - 41: String "p0" - 45: String "p1" - 49: String "restDist" - 59: String "@main" - 65: String "id" - 73: String "dist" - 85: String "int" - 91: String "sphereRadius" - 102: String "gravity" - 107: String "particleCount" - 110: String "UBO" - 113: String "params" - 117: String "ubo" - 142: String "index" - 165: String "bool" - 179: String "normal" - 186: String "pinned" - 190: String "Particle" - 195: String "@data" - 199: String "particleIn" - 220: String "particleOut" - 245: String "force" - 258: String "pos" - 268: String "vel" - 552: String "f" - 601: String "sphereDist" - 653: String "calculateNormals" - 657: String "PushConstants" - 660: String "pushConstants" - 663: String "$Global" - 700: String "a" - 713: String "b" - 730: String "c" + 44: String "p0" + 48: String "p1" + 52: String "restDist" + 63: String "@main" + 69: String "id" + 77: String "dist" + 89: String "int" + 95: String "sphereRadius" + 106: String "gravity" + 111: String "particleCount" + 114: String "UBO" + 117: String "params" + 121: String "ubo" + 149: String "index" + 173: String "bool" + 187: String "normal" + 194: String "pinned" + 198: String "Particle" + 203: String "@data" + 207: String "particleIn" + 229: String "particleOut" + 256: String "force" + 269: String "pos" + 279: String "vel" + 563: String "f" + 612: String "sphereDist" + 664: String "calculateNormals" + 668: String "PushConstants" + 671: String "pushConstants" + 674: String "$Global" + 713: String "a" + 726: String "b" + 743: String "c" Name 6 "main" - Name 27 "springForce(vf3;vf3;f1;" - Name 24 "p0" - Name 25 "p1" - Name 26 "restDist" - Name 57 "@main(vu3;" - Name 56 "id" - Name 71 "dist" - Name 89 "UBO" - MemberName 89(UBO) 0 "deltaT" - MemberName 89(UBO) 1 "particleMass" - MemberName 89(UBO) 2 "springStiffness" - MemberName 89(UBO) 3 "damping" - MemberName 89(UBO) 4 "restDistH" - MemberName 89(UBO) 5 "restDistV" - MemberName 89(UBO) 6 "restDistD" - MemberName 89(UBO) 7 "sphereRadius" - MemberName 89(UBO) 8 "spherePos" - MemberName 89(UBO) 9 "gravity" - MemberName 89(UBO) 10 "particleCount" - Name 111 "ubo" - MemberName 111(ubo) 0 "params" - Name 119 "" - Name 140 "index" - Name 177 "Particle" - MemberName 177(Particle) 0 "pos" - MemberName 177(Particle) 1 "vel" - MemberName 177(Particle) 2 "uv" - MemberName 177(Particle) 3 "normal" - MemberName 177(Particle) 4 "pinned" - Name 193 "particleIn" - MemberName 193(particleIn) 0 "@data" + Name 30 "springForce(vf3;vf3;f1;" + Name 27 "p0" + Name 28 "p1" + Name 29 "restDist" + Name 61 "@main(vu3;" + Name 60 "id" + Name 75 "dist" + Name 93 "UBO" + MemberName 93(UBO) 0 "deltaT" + MemberName 93(UBO) 1 "particleMass" + MemberName 93(UBO) 2 "springStiffness" + MemberName 93(UBO) 3 "damping" + MemberName 93(UBO) 4 "restDistH" + MemberName 93(UBO) 5 "restDistV" + MemberName 93(UBO) 6 "restDistD" + MemberName 93(UBO) 7 "sphereRadius" + MemberName 93(UBO) 8 "spherePos" + MemberName 93(UBO) 9 "gravity" + MemberName 93(UBO) 10 "particleCount" + Name 115 "ubo" + MemberName 115(ubo) 0 "params" + Name 124 "" + Name 147 "index" + Name 185 "Particle" + MemberName 185(Particle) 0 "pos" + MemberName 185(Particle) 1 "vel" + MemberName 185(Particle) 2 "uv" + MemberName 185(Particle) 3 "normal" + MemberName 185(Particle) 4 "pinned" Name 201 "particleIn" - Name 216 "particleOut" - MemberName 216(particleOut) 0 "@data" - Name 222 "particleOut" - Name 243 "force" - Name 256 "pos" - Name 266 "vel" - Name 286 "param" - Name 290 "param" - Name 292 "param" - Name 315 "param" - Name 319 "param" - Name 321 "param" - Name 348 "param" - Name 352 "param" - Name 354 "param" - Name 376 "param" - Name 380 "param" - Name 382 "param" - Name 414 "param" - Name 418 "param" - Name 420 "param" - Name 447 "param" - Name 451 "param" - Name 453 "param" - Name 488 "param" - Name 492 "param" - Name 494 "param" - Name 525 "param" - Name 529 "param" - Name 531 "param" - Name 550 "f" - Name 599 "sphereDist" - Name 651 "PushConstants" - MemberName 651(PushConstants) 0 "calculateNormals" - Name 658 "$Global" - MemberName 658($Global) 0 "pushConstants" - Name 665 "" - Name 676 "normal" - Name 698 "a" - Name 711 "b" - Name 728 "c" - Name 946 "id" - Name 948 "id" - Name 950 "param" - MemberDecorate 89(UBO) 0 Offset 0 - MemberDecorate 89(UBO) 1 Offset 4 - MemberDecorate 89(UBO) 2 Offset 8 - MemberDecorate 89(UBO) 3 Offset 12 - MemberDecorate 89(UBO) 4 Offset 16 - MemberDecorate 89(UBO) 5 Offset 20 - MemberDecorate 89(UBO) 6 Offset 24 - MemberDecorate 89(UBO) 7 Offset 28 - MemberDecorate 89(UBO) 8 Offset 32 - MemberDecorate 89(UBO) 9 Offset 48 - MemberDecorate 89(UBO) 10 Offset 64 - MemberDecorate 111(ubo) 0 Offset 0 - Decorate 111(ubo) Block - Decorate 119 DescriptorSet 0 - Decorate 119 Binding 2 - MemberDecorate 177(Particle) 0 Offset 0 - MemberDecorate 177(Particle) 1 Offset 16 - MemberDecorate 177(Particle) 2 Offset 32 - MemberDecorate 177(Particle) 3 Offset 48 - MemberDecorate 177(Particle) 4 Offset 64 - Decorate 191 ArrayStride 80 - MemberDecorate 193(particleIn) 0 NonWritable - MemberDecorate 193(particleIn) 0 Offset 0 - Decorate 193(particleIn) BufferBlock - Decorate 201(particleIn) DescriptorSet 0 - Decorate 201(particleIn) Binding 0 - Decorate 214 ArrayStride 80 - MemberDecorate 216(particleOut) 0 Offset 0 - Decorate 216(particleOut) BufferBlock - Decorate 222(particleOut) DescriptorSet 0 - Decorate 222(particleOut) Binding 1 - MemberDecorate 651(PushConstants) 0 Offset 0 - MemberDecorate 658($Global) 0 Offset 0 - Decorate 658($Global) Block - Decorate 665 DescriptorSet 0 - Decorate 665 Binding 3 - Decorate 948(id) BuiltIn GlobalInvocationId + MemberName 201(particleIn) 0 "@data" + Name 210 "particleIn" + Name 225 "particleOut" + MemberName 225(particleOut) 0 "@data" + Name 232 "particleOut" + Name 254 "force" + Name 267 "pos" + Name 277 "vel" + Name 297 "param" + Name 301 "param" + Name 303 "param" + Name 326 "param" + Name 330 "param" + Name 332 "param" + Name 359 "param" + Name 363 "param" + Name 365 "param" + Name 387 "param" + Name 391 "param" + Name 393 "param" + Name 425 "param" + Name 429 "param" + Name 431 "param" + Name 458 "param" + Name 462 "param" + Name 464 "param" + Name 499 "param" + Name 503 "param" + Name 505 "param" + Name 536 "param" + Name 540 "param" + Name 542 "param" + Name 561 "f" + Name 610 "sphereDist" + Name 662 "PushConstants" + MemberName 662(PushConstants) 0 "calculateNormals" + Name 669 "$Global" + MemberName 669($Global) 0 "pushConstants" + Name 677 "" + Name 689 "normal" + Name 711 "a" + Name 724 "b" + Name 741 "c" + Name 959 "id" + Name 961 "id" + Name 963 "param" + MemberDecorate 93(UBO) 0 Offset 0 + MemberDecorate 93(UBO) 1 Offset 4 + MemberDecorate 93(UBO) 2 Offset 8 + MemberDecorate 93(UBO) 3 Offset 12 + MemberDecorate 93(UBO) 4 Offset 16 + MemberDecorate 93(UBO) 5 Offset 20 + MemberDecorate 93(UBO) 6 Offset 24 + MemberDecorate 93(UBO) 7 Offset 28 + MemberDecorate 93(UBO) 8 Offset 32 + MemberDecorate 93(UBO) 9 Offset 48 + MemberDecorate 93(UBO) 10 Offset 64 + MemberDecorate 115(ubo) 0 Offset 0 + Decorate 115(ubo) Block + Decorate 124 DescriptorSet 0 + Decorate 124 Binding 2 + MemberDecorate 185(Particle) 0 Offset 0 + MemberDecorate 185(Particle) 1 Offset 16 + MemberDecorate 185(Particle) 2 Offset 32 + MemberDecorate 185(Particle) 3 Offset 48 + MemberDecorate 185(Particle) 4 Offset 64 + Decorate 199 ArrayStride 80 + MemberDecorate 201(particleIn) 0 NonWritable + MemberDecorate 201(particleIn) 0 Offset 0 + Decorate 201(particleIn) BufferBlock + Decorate 210(particleIn) DescriptorSet 0 + Decorate 210(particleIn) Binding 0 + Decorate 223 ArrayStride 80 + MemberDecorate 225(particleOut) 0 Offset 0 + Decorate 225(particleOut) BufferBlock + Decorate 232(particleOut) DescriptorSet 0 + Decorate 232(particleOut) Binding 1 + MemberDecorate 662(PushConstants) 0 Offset 0 + MemberDecorate 669($Global) 0 Offset 0 + Decorate 669($Global) Block + Decorate 677 DescriptorSet 0 + Decorate 677 Binding 3 + Decorate 961(id) BuiltIn GlobalInvocationId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -183,1030 +183,1043 @@ spv.debuginfo.hlsl.comp 18: TypeVector 8(float) 3 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 20: TypePointer Function 18(fvec3) - 21: TypePointer Function 8(float) - 22: TypeFunction 18(fvec3) 20(ptr) 20(ptr) 21(ptr) - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 10 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 32 - 33: 11(int) Constant 75 - 35: 11(int) Constant 1 - 36: 11(int) Constant 4 - 37: 11(int) Constant 5 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 35 36 31 37 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 29 23 31 33 16 34 29 17 33 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 19 31 33 16 30 36 35 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 46: 11(int) Constant 2 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 19 31 33 16 30 36 46 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 10 31 33 16 30 36 17 - 51: TypeVector 11(int) 3 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 - 53: TypePointer Function 51(ivec3) - 54: TypeFunction 4 53(ptr) - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 52 - 61: 11(int) Constant 82 - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 59 55 31 61 16 34 59 17 61 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 52 31 61 16 60 36 35 - 70: 11(int) Constant 76 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 19 31 70 16 30 36 - 79: 11(int) Constant 77 - 82: TypeVector 8(float) 4 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 36 - 84: TypeInt 32 1 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 85 14 36 16 - 87: TypeVector 84(int) 2 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 86 46 - 89(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 82(fvec4) 82(fvec4) 87(ivec2) - 92: 11(int) Constant 48 - 93: 11(int) Constant 20 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 10 31 92 93 16 16 17 - 103: 11(int) Constant 50 - 104: 11(int) Constant 16 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 83 31 103 104 16 16 17 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 83 31 103 104 16 16 17 - 108: 11(int) Constant 51 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 88 31 108 93 16 16 17 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 110 35 31 79 16 34 110 16 17 90 94 95 96 97 98 99 100 101 105 106 - 111(ubo): TypeStruct 89(UBO) - 114: 11(int) Constant 56 - 115: 11(int) Constant 12 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 113 109 31 114 115 16 16 17 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 117 35 31 79 16 34 117 16 17 112 - 118: TypePointer Uniform 111(ubo) - 119: 118(ptr) Variable Uniform - 121: 11(int) Constant 8 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 116 31 79 16 34 1 119 121 - 122: 84(int) Constant 0 - 123: 84(int) Constant 2 - 124: TypePointer Uniform 8(float) - 138: 11(int) Constant 83 - 139: TypePointer Function 11(int) - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 13 31 138 16 60 36 - 146: 84(int) Constant 10 - 147: TypePointer Uniform 84(int) - 156: 11(int) Constant 84 - 164: TypeBool - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 165 14 46 16 - 172: 11(int) Constant 85 - 176: 11(int) Constant 88 - 177(Particle): TypeStruct 82(fvec4) 82(fvec4) 82(fvec4) 82(fvec4) 8(float) - 180: 11(int) Constant 30 - 181: 11(int) Constant 15 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 83 31 180 181 16 16 17 - 187: 11(int) Constant 31 - 188: 11(int) Constant 14 - 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 10 31 187 188 16 16 17 - 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 190 35 31 176 16 34 190 16 17 178 182 183 184 185 - 191: TypeRuntimeArray 177(Particle) - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 189 16 - 193(particleIn): TypeStruct 191 - 196: 11(int) Constant 35 - 197: 11(int) Constant 28 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 192 31 196 197 16 16 17 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 199 35 31 176 16 34 199 16 17 194 - 200: TypePointer Uniform 193(particleIn) - 201(particleIn): 200(ptr) Variable Uniform - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 199 198 31 176 16 34 199 201(particleIn) 121 - 204: 84(int) Constant 4 - 207: 8(float) Constant 1065353216 - 213: 11(int) Constant 89 - 214: TypeRuntimeArray 177(Particle) - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 189 16 -216(particleOut): TypeStruct 214 - 218: 11(int) Constant 37 - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 215 31 218 180 16 16 17 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 220 35 31 213 16 34 220 16 17 217 - 221: TypePointer Uniform 216(particleOut) -222(particleOut): 221(ptr) Variable Uniform - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 220 219 31 213 16 34 220 222(particleOut) 121 - 226: TypePointer Uniform 82(fvec4) - 231: 11(int) Constant 90 - 233: 84(int) Constant 1 - 234: 8(float) Constant 0 - 235: 82(fvec4) ConstantComposite 234 234 234 234 - 238: 11(int) Constant 91 - 242: 11(int) Constant 95 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 19 31 242 16 60 36 - 247: 84(int) Constant 9 - 255: 11(int) Constant 97 - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 258 19 31 255 16 60 36 - 265: 11(int) Constant 98 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 268 19 31 265 16 60 36 - 275: 11(int) Constant 102 - 283: 11(int) Constant 103 - 300: 11(int) Constant 106 - 312: 11(int) Constant 107 - 329: 11(int) Constant 110 - 341: 11(int) Constant 111 - 347: 84(int) Constant 5 - 362: 11(int) Constant 114 - 370: 11(int) Constant 115 - 390: 11(int) Constant 118 - 406: 11(int) Constant 119 - 413: 84(int) Constant 6 - 428: 11(int) Constant 122 - 440: 11(int) Constant 123 - 461: 11(int) Constant 126 - 481: 11(int) Constant 127 - 502: 11(int) Constant 130 - 518: 11(int) Constant 131 - 539: 11(int) Constant 134 - 540: 84(int) Constant 3 - 549: 11(int) Constant 137 - 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 552 19 31 549 16 60 36 - 560: 11(int) Constant 138 - 568: 8(float) Constant 1056964608 - 584: 11(int) Constant 139 - 598: 11(int) Constant 142 - 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 601 19 31 598 16 60 36 - 607: 84(int) Constant 8 - 613: 11(int) Constant 143 - 616: 84(int) Constant 7 - 619: 8(float) Constant 1008981770 - 626: 11(int) Constant 145 - 645: 11(int) Constant 147 - 650: 11(int) Constant 151 -651(PushConstants): TypeStruct 11(int) - 654: 11(int) Constant 67 - 655: 11(int) Constant 23 - 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 653 13 31 654 655 16 16 17 - 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 657 35 31 650 16 34 657 16 17 652 - 658($Global): TypeStruct 651(PushConstants) - 661: 11(int) Constant 71 - 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 660 656 31 661 181 16 16 17 - 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 663 35 31 650 16 34 663 16 17 659 - 664: TypePointer Uniform 658($Global) - 665: 664(ptr) Variable Uniform - 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 662 31 650 16 34 1 665 121 - 667: TypePointer Uniform 11(int) - 675: 11(int) Constant 152 - 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 19 31 675 16 60 36 - 679: 18(fvec3) ConstantComposite 234 234 234 - 681: 11(int) Constant 154 - 689: 11(int) Constant 155 - 697: 11(int) Constant 156 - 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 700 19 31 697 16 60 36 - 710: 11(int) Constant 157 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 19 31 710 16 60 36 - 727: 11(int) Constant 158 - 729: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 730 19 31 727 16 60 36 - 743: 11(int) Constant 159 - 755: 11(int) Constant 161 - 767: 11(int) Constant 162 - 779: 11(int) Constant 163 - 792: 11(int) Constant 164 - 801: 11(int) Constant 165 - 813: 11(int) Constant 168 - 825: 11(int) Constant 169 - 833: 11(int) Constant 170 - 845: 11(int) Constant 171 - 858: 11(int) Constant 172 - 867: 11(int) Constant 173 - 879: 11(int) Constant 175 - 891: 11(int) Constant 176 - 900: 11(int) Constant 177 - 913: 11(int) Constant 178 - 925: 11(int) Constant 179 - 937: 11(int) Constant 182 - 947: TypePointer Input 51(ivec3) - 948(id): 947(ptr) Variable Input + 21: 11(int) Constant 7 + 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 21 16 + 23: TypePointer Function 8(float) + 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 + 25: TypeFunction 18(fvec3) 20(ptr) 20(ptr) 23(ptr) + 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 10 + 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 35 + 36: 11(int) Constant 75 + 38: 11(int) Constant 1 + 39: 11(int) Constant 4 + 40: 11(int) Constant 5 + 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 38 39 34 40 + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 32 26 34 36 16 37 32 17 36 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 19 34 36 16 33 39 38 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 49: 11(int) Constant 2 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 19 34 36 16 33 39 49 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 10 34 36 16 33 39 17 + 54: TypeVector 11(int) 3 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 56: TypePointer Function 54(ivec3) + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 55 21 16 + 58: TypeFunction 4 56(ptr) + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 55 + 65: 11(int) Constant 82 + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 63 59 34 65 16 37 63 17 65 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 69 55 34 65 16 64 39 38 + 74: 11(int) Constant 76 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 19 34 74 16 33 39 + 83: 11(int) Constant 77 + 86: TypeVector 8(float) 4 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 39 + 88: TypeInt 32 1 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 89 14 39 16 + 91: TypeVector 88(int) 2 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 90 49 + 93(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 86(fvec4) 86(fvec4) 91(ivec2) + 96: 11(int) Constant 48 + 97: 11(int) Constant 20 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 + 107: 11(int) Constant 50 + 108: 11(int) Constant 16 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 87 34 107 108 16 16 17 + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 87 34 107 108 16 16 17 + 112: 11(int) Constant 51 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 92 34 112 97 16 16 17 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 114 38 34 83 16 37 114 16 17 94 98 99 100 101 102 103 104 105 109 110 + 115(ubo): TypeStruct 93(UBO) + 118: 11(int) Constant 56 + 119: 11(int) Constant 12 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 117 113 34 118 119 16 16 17 + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 121 38 34 83 16 37 121 16 17 116 + 122: TypePointer Uniform 115(ubo) + 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 120 49 16 + 124: 122(ptr) Variable Uniform + 126: 11(int) Constant 8 + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 120 34 83 16 37 1 124 126 + 127: 88(int) Constant 0 + 128: 88(int) Constant 2 + 129: TypePointer Uniform 8(float) + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 49 16 + 144: 11(int) Constant 83 + 145: TypePointer Function 11(int) + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 21 16 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 149 13 34 144 16 64 39 + 153: 88(int) Constant 10 + 154: TypePointer Uniform 88(int) + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 49 16 + 164: 11(int) Constant 84 + 172: TypeBool + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 173 14 49 16 + 180: 11(int) Constant 85 + 184: 11(int) Constant 88 + 185(Particle): TypeStruct 86(fvec4) 86(fvec4) 86(fvec4) 86(fvec4) 8(float) + 188: 11(int) Constant 30 + 189: 11(int) Constant 15 + 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 + 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 + 195: 11(int) Constant 31 + 196: 11(int) Constant 14 + 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 34 195 196 16 16 17 + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 198 38 34 184 16 37 198 16 17 186 190 191 192 193 + 199: TypeRuntimeArray 185(Particle) + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 197 16 + 201(particleIn): TypeStruct 199 + 204: 11(int) Constant 35 + 205: 11(int) Constant 28 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 203 200 34 204 205 16 16 17 + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 207 38 34 184 16 37 207 16 17 202 + 208: TypePointer Uniform 201(particleIn) + 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 206 49 16 + 210(particleIn): 208(ptr) Variable Uniform + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 207 206 34 184 16 37 207 210(particleIn) 126 + 213: 88(int) Constant 4 + 216: 8(float) Constant 1065353216 + 222: 11(int) Constant 89 + 223: TypeRuntimeArray 185(Particle) + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 197 16 +225(particleOut): TypeStruct 223 + 227: 11(int) Constant 37 + 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 203 224 34 227 188 16 16 17 + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 229 38 34 222 16 37 229 16 17 226 + 230: TypePointer Uniform 225(particleOut) + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 228 49 16 +232(particleOut): 230(ptr) Variable Uniform + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 229 228 34 222 16 37 229 232(particleOut) 126 + 236: TypePointer Uniform 86(fvec4) + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 87 49 16 + 242: 11(int) Constant 90 + 244: 88(int) Constant 1 + 245: 8(float) Constant 0 + 246: 86(fvec4) ConstantComposite 245 245 245 245 + 249: 11(int) Constant 91 + 253: 11(int) Constant 95 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 19 34 253 16 64 39 + 258: 88(int) Constant 9 + 266: 11(int) Constant 97 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 19 34 266 16 64 39 + 276: 11(int) Constant 98 + 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 279 19 34 276 16 64 39 + 286: 11(int) Constant 102 + 294: 11(int) Constant 103 + 311: 11(int) Constant 106 + 323: 11(int) Constant 107 + 340: 11(int) Constant 110 + 352: 11(int) Constant 111 + 358: 88(int) Constant 5 + 373: 11(int) Constant 114 + 381: 11(int) Constant 115 + 401: 11(int) Constant 118 + 417: 11(int) Constant 119 + 424: 88(int) Constant 6 + 439: 11(int) Constant 122 + 451: 11(int) Constant 123 + 472: 11(int) Constant 126 + 492: 11(int) Constant 127 + 513: 11(int) Constant 130 + 529: 11(int) Constant 131 + 550: 11(int) Constant 134 + 551: 88(int) Constant 3 + 560: 11(int) Constant 137 + 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 563 19 34 560 16 64 39 + 571: 11(int) Constant 138 + 579: 8(float) Constant 1056964608 + 595: 11(int) Constant 139 + 609: 11(int) Constant 142 + 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 612 19 34 609 16 64 39 + 618: 88(int) Constant 8 + 624: 11(int) Constant 143 + 627: 88(int) Constant 7 + 630: 8(float) Constant 1008981770 + 637: 11(int) Constant 145 + 656: 11(int) Constant 147 + 661: 11(int) Constant 151 +662(PushConstants): TypeStruct 11(int) + 665: 11(int) Constant 67 + 666: 11(int) Constant 23 + 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 664 13 34 665 666 16 16 17 + 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 668 38 34 661 16 37 668 16 17 663 + 669($Global): TypeStruct 662(PushConstants) + 672: 11(int) Constant 71 + 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 671 667 34 672 189 16 16 17 + 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 674 38 34 661 16 37 674 16 17 670 + 675: TypePointer Uniform 669($Global) + 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 673 49 16 + 677: 675(ptr) Variable Uniform + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 673 34 661 16 37 1 677 126 + 679: TypePointer Uniform 11(int) + 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 49 16 + 688: 11(int) Constant 152 + 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 19 34 688 16 64 39 + 692: 18(fvec3) ConstantComposite 245 245 245 + 694: 11(int) Constant 154 + 702: 11(int) Constant 155 + 710: 11(int) Constant 156 + 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 19 34 710 16 64 39 + 723: 11(int) Constant 157 + 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 726 19 34 723 16 64 39 + 740: 11(int) Constant 158 + 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 743 19 34 740 16 64 39 + 756: 11(int) Constant 159 + 768: 11(int) Constant 161 + 780: 11(int) Constant 162 + 792: 11(int) Constant 163 + 805: 11(int) Constant 164 + 814: 11(int) Constant 165 + 826: 11(int) Constant 168 + 838: 11(int) Constant 169 + 846: 11(int) Constant 170 + 858: 11(int) Constant 171 + 871: 11(int) Constant 172 + 880: 11(int) Constant 173 + 892: 11(int) Constant 175 + 904: 11(int) Constant 176 + 913: 11(int) Constant 177 + 926: 11(int) Constant 178 + 938: 11(int) Constant 179 + 950: 11(int) Constant 182 + 960: TypePointer Input 54(ivec3) + 961(id): 960(ptr) Variable Input Line 1 82 1 6(main): 4 Function None 5 7: Label - 946(id): 53(ptr) Variable Function - 950(param): 53(ptr) Variable Function + 959(id): 56(ptr) Variable Function + 963(param): 56(ptr) Variable Function Line 1 82 0 - 949: 51(ivec3) Load 948(id) - Store 946(id) 949 - 951: 51(ivec3) Load 946(id) - Store 950(param) 951 - 952: 4 FunctionCall 57(@main(vu3;) 950(param) + 962: 54(ivec3) Load 961(id) + Store 959(id) 962 + 964: 54(ivec3) Load 959(id) + Store 963(param) 964 + 965: 4 FunctionCall 61(@main(vu3;) 963(param) Return FunctionEnd Line 1 75 1 -27(springForce(vf3;vf3;f1;): 18(fvec3) Function None 22 - 24(p0): 20(ptr) FunctionParameter - 25(p1): 20(ptr) FunctionParameter - 26(restDist): 21(ptr) FunctionParameter - 28: Label - 71(dist): 20(ptr) Variable Function - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 33 33 16 16 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 24(p0) 43 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 25(p1) 43 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 26(restDist) 43 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 30 27(springForce(vf3;vf3;f1;) - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 70 70 16 16 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 71(dist) 43 - 75: 18(fvec3) Load 24(p0) - 76: 18(fvec3) Load 25(p1) - 77: 18(fvec3) FSub 75 76 - Store 71(dist) 77 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 79 79 16 16 - 80: 18(fvec3) Load 71(dist) - 81: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 80 - 125: 124(ptr) AccessChain 119 122 123 - 126: 8(float) Load 125 - 127: 18(fvec3) VectorTimesScalar 81 126 - 128: 18(fvec3) Load 71(dist) - 129: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 128 - 130: 8(float) Load 26(restDist) - 131: 8(float) FSub 129 130 - 132: 18(fvec3) VectorTimesScalar 127 131 - ReturnValue 132 +30(springForce(vf3;vf3;f1;): 18(fvec3) Function None 25 + 27(p0): 20(ptr) FunctionParameter + 28(p1): 20(ptr) FunctionParameter + 29(restDist): 23(ptr) FunctionParameter + 31: Label + 75(dist): 20(ptr) Variable Function + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 36 36 16 16 + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 27(p0) 46 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 28(p1) 46 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 29(restDist) 46 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 30(springForce(vf3;vf3;f1;) + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 74 74 16 16 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(dist) 46 + 79: 18(fvec3) Load 27(p0) + 80: 18(fvec3) Load 28(p1) + 81: 18(fvec3) FSub 79 80 + Store 75(dist) 81 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 83 83 16 16 + 84: 18(fvec3) Load 75(dist) + 85: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 84 + 131: 129(ptr) AccessChain 124 127 128 + 132: 8(float) Load 131 + 133: 18(fvec3) VectorTimesScalar 85 132 + 134: 18(fvec3) Load 75(dist) + 135: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 134 + 136: 8(float) Load 29(restDist) + 137: 8(float) FSub 135 136 + 138: 18(fvec3) VectorTimesScalar 133 137 + ReturnValue 138 FunctionEnd Line 1 82 1 - 57(@main(vu3;): 4 Function None 54 - 56(id): 53(ptr) FunctionParameter - 58: Label - 140(index): 139(ptr) Variable Function - 243(force): 20(ptr) Variable Function - 256(pos): 20(ptr) Variable Function - 266(vel): 20(ptr) Variable Function - 286(param): 20(ptr) Variable Function - 290(param): 20(ptr) Variable Function - 292(param): 21(ptr) Variable Function - 315(param): 20(ptr) Variable Function - 319(param): 20(ptr) Variable Function - 321(param): 21(ptr) Variable Function - 348(param): 20(ptr) Variable Function - 352(param): 20(ptr) Variable Function - 354(param): 21(ptr) Variable Function - 376(param): 20(ptr) Variable Function - 380(param): 20(ptr) Variable Function - 382(param): 21(ptr) Variable Function - 414(param): 20(ptr) Variable Function - 418(param): 20(ptr) Variable Function - 420(param): 21(ptr) Variable Function - 447(param): 20(ptr) Variable Function - 451(param): 20(ptr) Variable Function - 453(param): 21(ptr) Variable Function - 488(param): 20(ptr) Variable Function - 492(param): 20(ptr) Variable Function - 494(param): 21(ptr) Variable Function - 525(param): 20(ptr) Variable Function - 529(param): 20(ptr) Variable Function - 531(param): 21(ptr) Variable Function - 550(f): 20(ptr) Variable Function - 599(sphereDist): 20(ptr) Variable Function - 676(normal): 20(ptr) Variable Function - 698(a): 20(ptr) Variable Function - 711(b): 20(ptr) Variable Function - 728(c): 20(ptr) Variable Function - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 61 61 16 16 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 56(id) 43 - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 60 57(@main(vu3;) - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 138 138 16 16 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(index) 43 - 144: 139(ptr) AccessChain 56(id) 35 - 145: 11(int) Load 144 - 148: 147(ptr) AccessChain 119 122 146 16 - 149: 84(int) Load 148 - 150: 11(int) Bitcast 149 - 151: 11(int) IMul 145 150 - 152: 139(ptr) AccessChain 56(id) 16 - 153: 11(int) Load 152 - 154: 11(int) IAdd 151 153 - Store 140(index) 154 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 156 156 16 16 - 157: 11(int) Load 140(index) - 158: 147(ptr) AccessChain 119 122 146 16 - 159: 84(int) Load 158 - 160: 147(ptr) AccessChain 119 122 146 35 - 161: 84(int) Load 160 - 162: 84(int) IMul 159 161 - 163: 11(int) Bitcast 162 - 167: 164(bool) UGreaterThan 157 163 - SelectionMerge 169 None - BranchConditional 167 168 169 - 168: Label - 170: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 172 172 16 16 + 61(@main(vu3;): 4 Function None 58 + 60(id): 56(ptr) FunctionParameter + 62: Label + 147(index): 145(ptr) Variable Function + 254(force): 20(ptr) Variable Function + 267(pos): 20(ptr) Variable Function + 277(vel): 20(ptr) Variable Function + 297(param): 20(ptr) Variable Function + 301(param): 20(ptr) Variable Function + 303(param): 23(ptr) Variable Function + 326(param): 20(ptr) Variable Function + 330(param): 20(ptr) Variable Function + 332(param): 23(ptr) Variable Function + 359(param): 20(ptr) Variable Function + 363(param): 20(ptr) Variable Function + 365(param): 23(ptr) Variable Function + 387(param): 20(ptr) Variable Function + 391(param): 20(ptr) Variable Function + 393(param): 23(ptr) Variable Function + 425(param): 20(ptr) Variable Function + 429(param): 20(ptr) Variable Function + 431(param): 23(ptr) Variable Function + 458(param): 20(ptr) Variable Function + 462(param): 20(ptr) Variable Function + 464(param): 23(ptr) Variable Function + 499(param): 20(ptr) Variable Function + 503(param): 20(ptr) Variable Function + 505(param): 23(ptr) Variable Function + 536(param): 20(ptr) Variable Function + 540(param): 20(ptr) Variable Function + 542(param): 23(ptr) Variable Function + 561(f): 20(ptr) Variable Function + 610(sphereDist): 20(ptr) Variable Function + 689(normal): 20(ptr) Variable Function + 711(a): 20(ptr) Variable Function + 724(b): 20(ptr) Variable Function + 741(c): 20(ptr) Variable Function + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 65 65 16 16 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 60(id) 46 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 144 144 16 16 + 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 148 147(index) 46 + 151: 145(ptr) AccessChain 60(id) 38 + 152: 11(int) Load 151 + 156: 154(ptr) AccessChain 124 127 153 16 + 157: 88(int) Load 156 + 158: 11(int) Bitcast 157 + 159: 11(int) IMul 152 158 + 160: 145(ptr) AccessChain 60(id) 16 + 161: 11(int) Load 160 + 162: 11(int) IAdd 159 161 + Store 147(index) 162 + 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 164 164 16 16 + 165: 11(int) Load 147(index) + 166: 154(ptr) AccessChain 124 127 153 16 + 167: 88(int) Load 166 + 168: 154(ptr) AccessChain 124 127 153 38 + 169: 88(int) Load 168 + 170: 88(int) IMul 167 169 + 171: 11(int) Bitcast 170 + 175: 172(bool) UGreaterThan 165 171 + SelectionMerge 177 None + BranchConditional 175 176 177 + 176: Label + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 180 180 16 16 Return - 169: Label - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 176 176 16 16 - 203: 11(int) Load 140(index) - 205: 124(ptr) AccessChain 201(particleIn) 122 203 204 - 206: 8(float) Load 205 - 208: 164(bool) FOrdEqual 206 207 - SelectionMerge 210 None - BranchConditional 208 209 210 - 209: Label - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 213 213 16 16 - 224: 11(int) Load 140(index) - 225: 11(int) Load 140(index) - 227: 226(ptr) AccessChain 222(particleOut) 122 225 122 - 228: 82(fvec4) Load 227 - 229: 226(ptr) AccessChain 222(particleOut) 122 224 122 - Store 229 228 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 231 231 16 16 - 232: 11(int) Load 140(index) - 236: 226(ptr) AccessChain 222(particleOut) 122 232 233 - Store 236 235 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 238 238 16 16 + 177: Label + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 184 184 16 16 + 212: 11(int) Load 147(index) + 214: 129(ptr) AccessChain 210(particleIn) 127 212 213 + 215: 8(float) Load 214 + 217: 172(bool) FOrdEqual 215 216 + SelectionMerge 219 None + BranchConditional 217 218 219 + 218: Label + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 222 222 16 16 + 234: 11(int) Load 147(index) + 235: 11(int) Load 147(index) + 238: 236(ptr) AccessChain 232(particleOut) 127 235 127 + 239: 86(fvec4) Load 238 + 240: 236(ptr) AccessChain 232(particleOut) 127 234 127 + Store 240 239 + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 242 242 16 16 + 243: 11(int) Load 147(index) + 247: 236(ptr) AccessChain 232(particleOut) 127 243 244 + Store 247 246 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 249 249 16 16 Return - 210: Label - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 242 242 16 16 - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(force) 43 - 248: 226(ptr) AccessChain 119 122 247 - 249: 82(fvec4) Load 248 - 250: 18(fvec3) VectorShuffle 249 249 0 1 2 - 251: 124(ptr) AccessChain 119 122 233 - 252: 8(float) Load 251 - 253: 18(fvec3) VectorTimesScalar 250 252 - Store 243(force) 253 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 255 255 16 16 - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 257 256(pos) 43 - 260: 11(int) Load 140(index) - 261: 226(ptr) AccessChain 201(particleIn) 122 260 122 - 262: 82(fvec4) Load 261 - 263: 18(fvec3) VectorShuffle 262 262 0 1 2 - Store 256(pos) 263 - 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 265 265 16 16 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 267 266(vel) 43 - 270: 11(int) Load 140(index) - 271: 226(ptr) AccessChain 201(particleIn) 122 270 233 - 272: 82(fvec4) Load 271 - 273: 18(fvec3) VectorShuffle 272 272 0 1 2 - Store 266(vel) 273 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 275 275 16 16 - 276: 139(ptr) AccessChain 56(id) 16 - 277: 11(int) Load 276 - 278: 164(bool) UGreaterThan 277 16 - SelectionMerge 280 None - BranchConditional 278 279 280 - 279: Label - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 283 283 16 16 - 284: 11(int) Load 140(index) - 285: 11(int) ISub 284 35 - 287: 226(ptr) AccessChain 201(particleIn) 122 285 122 - 288: 82(fvec4) Load 287 - 289: 18(fvec3) VectorShuffle 288 288 0 1 2 - Store 286(param) 289 - 291: 18(fvec3) Load 256(pos) - Store 290(param) 291 - 293: 124(ptr) AccessChain 119 122 204 - 294: 8(float) Load 293 - Store 292(param) 294 - 295: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 286(param) 290(param) 292(param) - 296: 18(fvec3) Load 243(force) - 297: 18(fvec3) FAdd 296 295 - Store 243(force) 297 - Branch 280 - 280: Label - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 300 300 16 16 - 301: 139(ptr) AccessChain 56(id) 16 - 302: 11(int) Load 301 - 303: 147(ptr) AccessChain 119 122 146 16 - 304: 84(int) Load 303 - 305: 84(int) ISub 304 233 - 306: 11(int) Bitcast 305 - 307: 164(bool) ULessThan 302 306 - SelectionMerge 309 None - BranchConditional 307 308 309 - 308: Label - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 312 312 16 16 - 313: 11(int) Load 140(index) - 314: 11(int) IAdd 313 35 - 316: 226(ptr) AccessChain 201(particleIn) 122 314 122 - 317: 82(fvec4) Load 316 - 318: 18(fvec3) VectorShuffle 317 317 0 1 2 - Store 315(param) 318 - 320: 18(fvec3) Load 256(pos) - Store 319(param) 320 - 322: 124(ptr) AccessChain 119 122 204 - 323: 8(float) Load 322 - Store 321(param) 323 - 324: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 315(param) 319(param) 321(param) - 325: 18(fvec3) Load 243(force) - 326: 18(fvec3) FAdd 325 324 - Store 243(force) 326 - Branch 309 - 309: Label - 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 329 329 16 16 - 330: 139(ptr) AccessChain 56(id) 35 - 331: 11(int) Load 330 - 332: 147(ptr) AccessChain 119 122 146 35 - 333: 84(int) Load 332 - 334: 84(int) ISub 333 233 - 335: 11(int) Bitcast 334 - 336: 164(bool) ULessThan 331 335 - SelectionMerge 338 None - BranchConditional 336 337 338 - 337: Label - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 341 341 16 16 - 342: 11(int) Load 140(index) - 343: 147(ptr) AccessChain 119 122 146 16 - 344: 84(int) Load 343 - 345: 11(int) Bitcast 344 - 346: 11(int) IAdd 342 345 - 349: 226(ptr) AccessChain 201(particleIn) 122 346 122 - 350: 82(fvec4) Load 349 - 351: 18(fvec3) VectorShuffle 350 350 0 1 2 - Store 348(param) 351 - 353: 18(fvec3) Load 256(pos) - Store 352(param) 353 - 355: 124(ptr) AccessChain 119 122 347 - 356: 8(float) Load 355 - Store 354(param) 356 - 357: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 348(param) 352(param) 354(param) - 358: 18(fvec3) Load 243(force) - 359: 18(fvec3) FAdd 358 357 - Store 243(force) 359 - Branch 338 - 338: Label - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 362 362 16 16 - 363: 139(ptr) AccessChain 56(id) 35 - 364: 11(int) Load 363 - 365: 164(bool) UGreaterThan 364 16 - SelectionMerge 367 None - BranchConditional 365 366 367 - 366: Label - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 370 370 16 16 - 371: 11(int) Load 140(index) - 372: 147(ptr) AccessChain 119 122 146 16 - 373: 84(int) Load 372 - 374: 11(int) Bitcast 373 - 375: 11(int) ISub 371 374 - 377: 226(ptr) AccessChain 201(particleIn) 122 375 122 - 378: 82(fvec4) Load 377 - 379: 18(fvec3) VectorShuffle 378 378 0 1 2 - Store 376(param) 379 - 381: 18(fvec3) Load 256(pos) - Store 380(param) 381 - 383: 124(ptr) AccessChain 119 122 347 - 384: 8(float) Load 383 - Store 382(param) 384 - 385: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 376(param) 380(param) 382(param) - 386: 18(fvec3) Load 243(force) - 387: 18(fvec3) FAdd 386 385 - Store 243(force) 387 - Branch 367 - 367: Label - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 390 390 16 16 - 391: 139(ptr) AccessChain 56(id) 16 - 392: 11(int) Load 391 - 393: 164(bool) UGreaterThan 392 16 - 394: 139(ptr) AccessChain 56(id) 35 - 395: 11(int) Load 394 - 396: 147(ptr) AccessChain 119 122 146 35 - 397: 84(int) Load 396 - 398: 84(int) ISub 397 233 - 399: 11(int) Bitcast 398 - 400: 164(bool) ULessThan 395 399 - 401: 164(bool) LogicalAnd 393 400 - SelectionMerge 403 None - BranchConditional 401 402 403 - 402: Label - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 406 406 16 16 - 407: 11(int) Load 140(index) - 408: 147(ptr) AccessChain 119 122 146 16 - 409: 84(int) Load 408 - 410: 11(int) Bitcast 409 - 411: 11(int) IAdd 407 410 - 412: 11(int) ISub 411 35 - 415: 226(ptr) AccessChain 201(particleIn) 122 412 122 - 416: 82(fvec4) Load 415 - 417: 18(fvec3) VectorShuffle 416 416 0 1 2 - Store 414(param) 417 - 419: 18(fvec3) Load 256(pos) - Store 418(param) 419 - 421: 124(ptr) AccessChain 119 122 413 - 422: 8(float) Load 421 - Store 420(param) 422 - 423: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 414(param) 418(param) 420(param) - 424: 18(fvec3) Load 243(force) - 425: 18(fvec3) FAdd 424 423 - Store 243(force) 425 - Branch 403 - 403: Label - 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 428 428 16 16 - 429: 139(ptr) AccessChain 56(id) 16 - 430: 11(int) Load 429 - 431: 164(bool) UGreaterThan 430 16 - 432: 139(ptr) AccessChain 56(id) 35 - 433: 11(int) Load 432 - 434: 164(bool) UGreaterThan 433 16 - 435: 164(bool) LogicalAnd 431 434 - SelectionMerge 437 None - BranchConditional 435 436 437 - 436: Label - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 439: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 440 440 16 16 - 441: 11(int) Load 140(index) - 442: 147(ptr) AccessChain 119 122 146 16 - 443: 84(int) Load 442 - 444: 11(int) Bitcast 443 - 445: 11(int) ISub 441 444 - 446: 11(int) ISub 445 35 - 448: 226(ptr) AccessChain 201(particleIn) 122 446 122 - 449: 82(fvec4) Load 448 - 450: 18(fvec3) VectorShuffle 449 449 0 1 2 - Store 447(param) 450 - 452: 18(fvec3) Load 256(pos) - Store 451(param) 452 - 454: 124(ptr) AccessChain 119 122 413 - 455: 8(float) Load 454 - Store 453(param) 455 - 456: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 447(param) 451(param) 453(param) - 457: 18(fvec3) Load 243(force) - 458: 18(fvec3) FAdd 457 456 - Store 243(force) 458 - Branch 437 - 437: Label - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 461 461 16 16 - 462: 139(ptr) AccessChain 56(id) 16 - 463: 11(int) Load 462 - 464: 147(ptr) AccessChain 119 122 146 16 - 465: 84(int) Load 464 - 466: 84(int) ISub 465 233 - 467: 11(int) Bitcast 466 - 468: 164(bool) ULessThan 463 467 - 469: 139(ptr) AccessChain 56(id) 35 - 470: 11(int) Load 469 - 471: 147(ptr) AccessChain 119 122 146 35 - 472: 84(int) Load 471 - 473: 84(int) ISub 472 233 - 474: 11(int) Bitcast 473 - 475: 164(bool) ULessThan 470 474 - 476: 164(bool) LogicalAnd 468 475 - SelectionMerge 478 None - BranchConditional 476 477 478 - 477: Label - 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 480: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 481 481 16 16 - 482: 11(int) Load 140(index) - 483: 147(ptr) AccessChain 119 122 146 16 - 484: 84(int) Load 483 - 485: 11(int) Bitcast 484 - 486: 11(int) IAdd 482 485 - 487: 11(int) IAdd 486 35 - 489: 226(ptr) AccessChain 201(particleIn) 122 487 122 - 490: 82(fvec4) Load 489 - 491: 18(fvec3) VectorShuffle 490 490 0 1 2 - Store 488(param) 491 - 493: 18(fvec3) Load 256(pos) - Store 492(param) 493 - 495: 124(ptr) AccessChain 119 122 413 - 496: 8(float) Load 495 - Store 494(param) 496 - 497: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 488(param) 492(param) 494(param) - 498: 18(fvec3) Load 243(force) - 499: 18(fvec3) FAdd 498 497 - Store 243(force) 499 - Branch 478 - 478: Label - 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 502 502 16 16 - 503: 139(ptr) AccessChain 56(id) 16 - 504: 11(int) Load 503 - 505: 147(ptr) AccessChain 119 122 146 16 - 506: 84(int) Load 505 - 507: 84(int) ISub 506 233 - 508: 11(int) Bitcast 507 - 509: 164(bool) ULessThan 504 508 - 510: 139(ptr) AccessChain 56(id) 35 - 511: 11(int) Load 510 - 512: 164(bool) UGreaterThan 511 16 - 513: 164(bool) LogicalAnd 509 512 - SelectionMerge 515 None - BranchConditional 513 514 515 - 514: Label - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 518 518 16 16 - 519: 11(int) Load 140(index) - 520: 147(ptr) AccessChain 119 122 146 16 - 521: 84(int) Load 520 - 522: 11(int) Bitcast 521 - 523: 11(int) ISub 519 522 - 524: 11(int) IAdd 523 35 - 526: 226(ptr) AccessChain 201(particleIn) 122 524 122 - 527: 82(fvec4) Load 526 - 528: 18(fvec3) VectorShuffle 527 527 0 1 2 - Store 525(param) 528 - 530: 18(fvec3) Load 256(pos) - Store 529(param) 530 - 532: 124(ptr) AccessChain 119 122 413 - 533: 8(float) Load 532 - Store 531(param) 533 - 534: 18(fvec3) FunctionCall 27(springForce(vf3;vf3;f1;) 525(param) 529(param) 531(param) - 535: 18(fvec3) Load 243(force) - 536: 18(fvec3) FAdd 535 534 - Store 243(force) 536 - Branch 515 - 515: Label - 537: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 539 539 16 16 - 541: 124(ptr) AccessChain 119 122 540 - 542: 8(float) Load 541 - 543: 8(float) FNegate 542 - 544: 18(fvec3) Load 266(vel) - 545: 18(fvec3) VectorTimesScalar 544 543 - 546: 18(fvec3) Load 243(force) - 547: 18(fvec3) FAdd 546 545 - Store 243(force) 547 - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 549 549 16 16 - 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 551 550(f) 43 - 554: 18(fvec3) Load 243(force) - 555: 124(ptr) AccessChain 119 122 233 - 556: 8(float) Load 555 - 557: 8(float) FDiv 207 556 - 558: 18(fvec3) VectorTimesScalar 554 557 - Store 550(f) 558 - 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 560 560 16 16 - 561: 11(int) Load 140(index) - 562: 18(fvec3) Load 256(pos) - 563: 18(fvec3) Load 266(vel) - 564: 124(ptr) AccessChain 119 122 122 - 565: 8(float) Load 564 - 566: 18(fvec3) VectorTimesScalar 563 565 - 567: 18(fvec3) FAdd 562 566 - 569: 18(fvec3) Load 550(f) - 570: 18(fvec3) VectorTimesScalar 569 568 - 571: 124(ptr) AccessChain 119 122 122 - 572: 8(float) Load 571 - 573: 18(fvec3) VectorTimesScalar 570 572 - 574: 124(ptr) AccessChain 119 122 122 - 575: 8(float) Load 574 - 576: 18(fvec3) VectorTimesScalar 573 575 - 577: 18(fvec3) FAdd 567 576 - 578: 8(float) CompositeExtract 577 0 - 579: 8(float) CompositeExtract 577 1 - 580: 8(float) CompositeExtract 577 2 - 581: 82(fvec4) CompositeConstruct 578 579 580 207 - 582: 226(ptr) AccessChain 222(particleOut) 122 561 122 - Store 582 581 - 583: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 584 584 16 16 - 585: 11(int) Load 140(index) - 586: 18(fvec3) Load 266(vel) - 587: 18(fvec3) Load 550(f) - 588: 124(ptr) AccessChain 119 122 122 - 589: 8(float) Load 588 - 590: 18(fvec3) VectorTimesScalar 587 589 - 591: 18(fvec3) FAdd 586 590 - 592: 8(float) CompositeExtract 591 0 - 593: 8(float) CompositeExtract 591 1 - 594: 8(float) CompositeExtract 591 2 - 595: 82(fvec4) CompositeConstruct 592 593 594 234 - 596: 226(ptr) AccessChain 222(particleOut) 122 585 233 - Store 596 595 - 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 598 598 16 16 - 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 600 599(sphereDist) 43 - 603: 11(int) Load 140(index) - 604: 226(ptr) AccessChain 222(particleOut) 122 603 122 - 605: 82(fvec4) Load 604 - 606: 18(fvec3) VectorShuffle 605 605 0 1 2 - 608: 226(ptr) AccessChain 119 122 607 - 609: 82(fvec4) Load 608 - 610: 18(fvec3) VectorShuffle 609 609 0 1 2 - 611: 18(fvec3) FSub 606 610 - Store 599(sphereDist) 611 - 612: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 613 613 16 16 - 614: 18(fvec3) Load 599(sphereDist) - 615: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 614 - 617: 124(ptr) AccessChain 119 122 616 - 618: 8(float) Load 617 - 620: 8(float) FAdd 618 619 - 621: 164(bool) FOrdLessThan 615 620 - SelectionMerge 623 None - BranchConditional 621 622 623 - 622: Label - 624: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 626 626 16 16 - 627: 11(int) Load 140(index) - 628: 226(ptr) AccessChain 119 122 607 - 629: 82(fvec4) Load 628 - 630: 18(fvec3) VectorShuffle 629 629 0 1 2 - 631: 18(fvec3) Load 599(sphereDist) - 632: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 631 - 633: 124(ptr) AccessChain 119 122 616 - 634: 8(float) Load 633 - 635: 8(float) FAdd 634 619 - 636: 18(fvec3) VectorTimesScalar 632 635 - 637: 18(fvec3) FAdd 630 636 - 638: 124(ptr) AccessChain 222(particleOut) 122 627 122 16 - 639: 8(float) CompositeExtract 637 0 - Store 638 639 - 640: 124(ptr) AccessChain 222(particleOut) 122 627 122 35 - 641: 8(float) CompositeExtract 637 1 - Store 640 641 - 642: 124(ptr) AccessChain 222(particleOut) 122 627 122 46 - 643: 8(float) CompositeExtract 637 2 - Store 642 643 - 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 645 645 16 16 - 646: 11(int) Load 140(index) - 647: 226(ptr) AccessChain 222(particleOut) 122 646 233 - Store 647 235 - Branch 623 - 623: Label - 648: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 649: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 650 650 16 16 - 668: 667(ptr) AccessChain 665 122 122 - 669: 11(int) Load 668 - 670: 164(bool) IEqual 669 35 - SelectionMerge 672 None - BranchConditional 670 671 672 - 671: Label - 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 675 675 16 16 - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 677 676(normal) 43 - Store 676(normal) 679 - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 681 681 16 16 - 682: 139(ptr) AccessChain 56(id) 35 - 683: 11(int) Load 682 - 684: 164(bool) UGreaterThan 683 16 - SelectionMerge 686 None - BranchConditional 684 685 686 - 685: Label - 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 689 689 16 16 - 690: 139(ptr) AccessChain 56(id) 16 - 691: 11(int) Load 690 - 692: 164(bool) UGreaterThan 691 16 - SelectionMerge 694 None - BranchConditional 692 693 694 - 693: Label - 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 697 697 16 16 - 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 699 698(a) 43 - 702: 11(int) Load 140(index) - 703: 11(int) ISub 702 35 - 704: 226(ptr) AccessChain 201(particleIn) 122 703 122 - 705: 82(fvec4) Load 704 - 706: 18(fvec3) VectorShuffle 705 705 0 1 2 - 707: 18(fvec3) Load 256(pos) - 708: 18(fvec3) FSub 706 707 - Store 698(a) 708 - 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 710 710 16 16 - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(b) 43 - 715: 11(int) Load 140(index) - 716: 147(ptr) AccessChain 119 122 146 16 - 717: 84(int) Load 716 - 718: 11(int) Bitcast 717 - 719: 11(int) ISub 715 718 - 720: 11(int) ISub 719 35 - 721: 226(ptr) AccessChain 201(particleIn) 122 720 122 - 722: 82(fvec4) Load 721 - 723: 18(fvec3) VectorShuffle 722 722 0 1 2 - 724: 18(fvec3) Load 256(pos) - 725: 18(fvec3) FSub 723 724 - Store 711(b) 725 - 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 727 727 16 16 - 731: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 729 728(c) 43 - 732: 11(int) Load 140(index) - 733: 147(ptr) AccessChain 119 122 146 16 - 734: 84(int) Load 733 - 735: 11(int) Bitcast 734 - 736: 11(int) ISub 732 735 - 737: 226(ptr) AccessChain 201(particleIn) 122 736 122 - 738: 82(fvec4) Load 737 - 739: 18(fvec3) VectorShuffle 738 738 0 1 2 - 740: 18(fvec3) Load 256(pos) - 741: 18(fvec3) FSub 739 740 - Store 728(c) 741 - 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 743 743 16 16 - 744: 18(fvec3) Load 698(a) - 745: 18(fvec3) Load 711(b) - 746: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 744 745 - 747: 18(fvec3) Load 711(b) - 748: 18(fvec3) Load 728(c) - 749: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 747 748 - 750: 18(fvec3) FAdd 746 749 - 751: 18(fvec3) Load 676(normal) - 752: 18(fvec3) FAdd 751 750 - Store 676(normal) 752 - Branch 694 - 694: Label - 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 754: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 755 755 16 16 - 756: 139(ptr) AccessChain 56(id) 16 - 757: 11(int) Load 756 - 758: 147(ptr) AccessChain 119 122 146 16 - 759: 84(int) Load 758 - 760: 84(int) ISub 759 233 - 761: 11(int) Bitcast 760 - 762: 164(bool) ULessThan 757 761 - SelectionMerge 764 None - BranchConditional 762 763 764 - 763: Label - 765: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 766: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 767 767 16 16 - 768: 11(int) Load 140(index) - 769: 147(ptr) AccessChain 119 122 146 16 - 770: 84(int) Load 769 - 771: 11(int) Bitcast 770 - 772: 11(int) ISub 768 771 - 773: 226(ptr) AccessChain 201(particleIn) 122 772 122 - 774: 82(fvec4) Load 773 - 775: 18(fvec3) VectorShuffle 774 774 0 1 2 - 776: 18(fvec3) Load 256(pos) - 777: 18(fvec3) FSub 775 776 - Store 698(a) 777 - 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 779 779 16 16 - 780: 11(int) Load 140(index) - 781: 147(ptr) AccessChain 119 122 146 16 - 782: 84(int) Load 781 - 783: 11(int) Bitcast 782 - 784: 11(int) ISub 780 783 - 785: 11(int) IAdd 784 35 - 786: 226(ptr) AccessChain 201(particleIn) 122 785 122 - 787: 82(fvec4) Load 786 + 219: Label + 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 253 253 16 16 + 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(force) 46 + 259: 236(ptr) AccessChain 124 127 258 + 260: 86(fvec4) Load 259 + 261: 18(fvec3) VectorShuffle 260 260 0 1 2 + 262: 129(ptr) AccessChain 124 127 244 + 263: 8(float) Load 262 + 264: 18(fvec3) VectorTimesScalar 261 263 + Store 254(force) 264 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 266 266 16 16 + 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 268 267(pos) 46 + 271: 11(int) Load 147(index) + 272: 236(ptr) AccessChain 210(particleIn) 127 271 127 + 273: 86(fvec4) Load 272 + 274: 18(fvec3) VectorShuffle 273 273 0 1 2 + Store 267(pos) 274 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 276 276 16 16 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 278 277(vel) 46 + 281: 11(int) Load 147(index) + 282: 236(ptr) AccessChain 210(particleIn) 127 281 244 + 283: 86(fvec4) Load 282 + 284: 18(fvec3) VectorShuffle 283 283 0 1 2 + Store 277(vel) 284 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 286 286 16 16 + 287: 145(ptr) AccessChain 60(id) 16 + 288: 11(int) Load 287 + 289: 172(bool) UGreaterThan 288 16 + SelectionMerge 291 None + BranchConditional 289 290 291 + 290: Label + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 294 294 16 16 + 295: 11(int) Load 147(index) + 296: 11(int) ISub 295 38 + 298: 236(ptr) AccessChain 210(particleIn) 127 296 127 + 299: 86(fvec4) Load 298 + 300: 18(fvec3) VectorShuffle 299 299 0 1 2 + Store 297(param) 300 + 302: 18(fvec3) Load 267(pos) + Store 301(param) 302 + 304: 129(ptr) AccessChain 124 127 213 + 305: 8(float) Load 304 + Store 303(param) 305 + 306: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 297(param) 301(param) 303(param) + 307: 18(fvec3) Load 254(force) + 308: 18(fvec3) FAdd 307 306 + Store 254(force) 308 + Branch 291 + 291: Label + 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 311 311 16 16 + 312: 145(ptr) AccessChain 60(id) 16 + 313: 11(int) Load 312 + 314: 154(ptr) AccessChain 124 127 153 16 + 315: 88(int) Load 314 + 316: 88(int) ISub 315 244 + 317: 11(int) Bitcast 316 + 318: 172(bool) ULessThan 313 317 + SelectionMerge 320 None + BranchConditional 318 319 320 + 319: Label + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 323 323 16 16 + 324: 11(int) Load 147(index) + 325: 11(int) IAdd 324 38 + 327: 236(ptr) AccessChain 210(particleIn) 127 325 127 + 328: 86(fvec4) Load 327 + 329: 18(fvec3) VectorShuffle 328 328 0 1 2 + Store 326(param) 329 + 331: 18(fvec3) Load 267(pos) + Store 330(param) 331 + 333: 129(ptr) AccessChain 124 127 213 + 334: 8(float) Load 333 + Store 332(param) 334 + 335: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 326(param) 330(param) 332(param) + 336: 18(fvec3) Load 254(force) + 337: 18(fvec3) FAdd 336 335 + Store 254(force) 337 + Branch 320 + 320: Label + 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 340 340 16 16 + 341: 145(ptr) AccessChain 60(id) 38 + 342: 11(int) Load 341 + 343: 154(ptr) AccessChain 124 127 153 38 + 344: 88(int) Load 343 + 345: 88(int) ISub 344 244 + 346: 11(int) Bitcast 345 + 347: 172(bool) ULessThan 342 346 + SelectionMerge 349 None + BranchConditional 347 348 349 + 348: Label + 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 352 352 16 16 + 353: 11(int) Load 147(index) + 354: 154(ptr) AccessChain 124 127 153 16 + 355: 88(int) Load 354 + 356: 11(int) Bitcast 355 + 357: 11(int) IAdd 353 356 + 360: 236(ptr) AccessChain 210(particleIn) 127 357 127 + 361: 86(fvec4) Load 360 + 362: 18(fvec3) VectorShuffle 361 361 0 1 2 + Store 359(param) 362 + 364: 18(fvec3) Load 267(pos) + Store 363(param) 364 + 366: 129(ptr) AccessChain 124 127 358 + 367: 8(float) Load 366 + Store 365(param) 367 + 368: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 359(param) 363(param) 365(param) + 369: 18(fvec3) Load 254(force) + 370: 18(fvec3) FAdd 369 368 + Store 254(force) 370 + Branch 349 + 349: Label + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 373 373 16 16 + 374: 145(ptr) AccessChain 60(id) 38 + 375: 11(int) Load 374 + 376: 172(bool) UGreaterThan 375 16 + SelectionMerge 378 None + BranchConditional 376 377 378 + 377: Label + 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 381 381 16 16 + 382: 11(int) Load 147(index) + 383: 154(ptr) AccessChain 124 127 153 16 + 384: 88(int) Load 383 + 385: 11(int) Bitcast 384 + 386: 11(int) ISub 382 385 + 388: 236(ptr) AccessChain 210(particleIn) 127 386 127 + 389: 86(fvec4) Load 388 + 390: 18(fvec3) VectorShuffle 389 389 0 1 2 + Store 387(param) 390 + 392: 18(fvec3) Load 267(pos) + Store 391(param) 392 + 394: 129(ptr) AccessChain 124 127 358 + 395: 8(float) Load 394 + Store 393(param) 395 + 396: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 387(param) 391(param) 393(param) + 397: 18(fvec3) Load 254(force) + 398: 18(fvec3) FAdd 397 396 + Store 254(force) 398 + Branch 378 + 378: Label + 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 401 401 16 16 + 402: 145(ptr) AccessChain 60(id) 16 + 403: 11(int) Load 402 + 404: 172(bool) UGreaterThan 403 16 + 405: 145(ptr) AccessChain 60(id) 38 + 406: 11(int) Load 405 + 407: 154(ptr) AccessChain 124 127 153 38 + 408: 88(int) Load 407 + 409: 88(int) ISub 408 244 + 410: 11(int) Bitcast 409 + 411: 172(bool) ULessThan 406 410 + 412: 172(bool) LogicalAnd 404 411 + SelectionMerge 414 None + BranchConditional 412 413 414 + 413: Label + 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 417 417 16 16 + 418: 11(int) Load 147(index) + 419: 154(ptr) AccessChain 124 127 153 16 + 420: 88(int) Load 419 + 421: 11(int) Bitcast 420 + 422: 11(int) IAdd 418 421 + 423: 11(int) ISub 422 38 + 426: 236(ptr) AccessChain 210(particleIn) 127 423 127 + 427: 86(fvec4) Load 426 + 428: 18(fvec3) VectorShuffle 427 427 0 1 2 + Store 425(param) 428 + 430: 18(fvec3) Load 267(pos) + Store 429(param) 430 + 432: 129(ptr) AccessChain 124 127 424 + 433: 8(float) Load 432 + Store 431(param) 433 + 434: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 425(param) 429(param) 431(param) + 435: 18(fvec3) Load 254(force) + 436: 18(fvec3) FAdd 435 434 + Store 254(force) 436 + Branch 414 + 414: Label + 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 439 439 16 16 + 440: 145(ptr) AccessChain 60(id) 16 + 441: 11(int) Load 440 + 442: 172(bool) UGreaterThan 441 16 + 443: 145(ptr) AccessChain 60(id) 38 + 444: 11(int) Load 443 + 445: 172(bool) UGreaterThan 444 16 + 446: 172(bool) LogicalAnd 442 445 + SelectionMerge 448 None + BranchConditional 446 447 448 + 447: Label + 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 451 451 16 16 + 452: 11(int) Load 147(index) + 453: 154(ptr) AccessChain 124 127 153 16 + 454: 88(int) Load 453 + 455: 11(int) Bitcast 454 + 456: 11(int) ISub 452 455 + 457: 11(int) ISub 456 38 + 459: 236(ptr) AccessChain 210(particleIn) 127 457 127 + 460: 86(fvec4) Load 459 + 461: 18(fvec3) VectorShuffle 460 460 0 1 2 + Store 458(param) 461 + 463: 18(fvec3) Load 267(pos) + Store 462(param) 463 + 465: 129(ptr) AccessChain 124 127 424 + 466: 8(float) Load 465 + Store 464(param) 466 + 467: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 458(param) 462(param) 464(param) + 468: 18(fvec3) Load 254(force) + 469: 18(fvec3) FAdd 468 467 + Store 254(force) 469 + Branch 448 + 448: Label + 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 472 472 16 16 + 473: 145(ptr) AccessChain 60(id) 16 + 474: 11(int) Load 473 + 475: 154(ptr) AccessChain 124 127 153 16 + 476: 88(int) Load 475 + 477: 88(int) ISub 476 244 + 478: 11(int) Bitcast 477 + 479: 172(bool) ULessThan 474 478 + 480: 145(ptr) AccessChain 60(id) 38 + 481: 11(int) Load 480 + 482: 154(ptr) AccessChain 124 127 153 38 + 483: 88(int) Load 482 + 484: 88(int) ISub 483 244 + 485: 11(int) Bitcast 484 + 486: 172(bool) ULessThan 481 485 + 487: 172(bool) LogicalAnd 479 486 + SelectionMerge 489 None + BranchConditional 487 488 489 + 488: Label + 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 492 492 16 16 + 493: 11(int) Load 147(index) + 494: 154(ptr) AccessChain 124 127 153 16 + 495: 88(int) Load 494 + 496: 11(int) Bitcast 495 + 497: 11(int) IAdd 493 496 + 498: 11(int) IAdd 497 38 + 500: 236(ptr) AccessChain 210(particleIn) 127 498 127 + 501: 86(fvec4) Load 500 + 502: 18(fvec3) VectorShuffle 501 501 0 1 2 + Store 499(param) 502 + 504: 18(fvec3) Load 267(pos) + Store 503(param) 504 + 506: 129(ptr) AccessChain 124 127 424 + 507: 8(float) Load 506 + Store 505(param) 507 + 508: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 499(param) 503(param) 505(param) + 509: 18(fvec3) Load 254(force) + 510: 18(fvec3) FAdd 509 508 + Store 254(force) 510 + Branch 489 + 489: Label + 511: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 513 513 16 16 + 514: 145(ptr) AccessChain 60(id) 16 + 515: 11(int) Load 514 + 516: 154(ptr) AccessChain 124 127 153 16 + 517: 88(int) Load 516 + 518: 88(int) ISub 517 244 + 519: 11(int) Bitcast 518 + 520: 172(bool) ULessThan 515 519 + 521: 145(ptr) AccessChain 60(id) 38 + 522: 11(int) Load 521 + 523: 172(bool) UGreaterThan 522 16 + 524: 172(bool) LogicalAnd 520 523 + SelectionMerge 526 None + BranchConditional 524 525 526 + 525: Label + 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 529 529 16 16 + 530: 11(int) Load 147(index) + 531: 154(ptr) AccessChain 124 127 153 16 + 532: 88(int) Load 531 + 533: 11(int) Bitcast 532 + 534: 11(int) ISub 530 533 + 535: 11(int) IAdd 534 38 + 537: 236(ptr) AccessChain 210(particleIn) 127 535 127 + 538: 86(fvec4) Load 537 + 539: 18(fvec3) VectorShuffle 538 538 0 1 2 + Store 536(param) 539 + 541: 18(fvec3) Load 267(pos) + Store 540(param) 541 + 543: 129(ptr) AccessChain 124 127 424 + 544: 8(float) Load 543 + Store 542(param) 544 + 545: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 536(param) 540(param) 542(param) + 546: 18(fvec3) Load 254(force) + 547: 18(fvec3) FAdd 546 545 + Store 254(force) 547 + Branch 526 + 526: Label + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 550 550 16 16 + 552: 129(ptr) AccessChain 124 127 551 + 553: 8(float) Load 552 + 554: 8(float) FNegate 553 + 555: 18(fvec3) Load 277(vel) + 556: 18(fvec3) VectorTimesScalar 555 554 + 557: 18(fvec3) Load 254(force) + 558: 18(fvec3) FAdd 557 556 + Store 254(force) 558 + 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 560 560 16 16 + 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 562 561(f) 46 + 565: 18(fvec3) Load 254(force) + 566: 129(ptr) AccessChain 124 127 244 + 567: 8(float) Load 566 + 568: 8(float) FDiv 216 567 + 569: 18(fvec3) VectorTimesScalar 565 568 + Store 561(f) 569 + 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 571 571 16 16 + 572: 11(int) Load 147(index) + 573: 18(fvec3) Load 267(pos) + 574: 18(fvec3) Load 277(vel) + 575: 129(ptr) AccessChain 124 127 127 + 576: 8(float) Load 575 + 577: 18(fvec3) VectorTimesScalar 574 576 + 578: 18(fvec3) FAdd 573 577 + 580: 18(fvec3) Load 561(f) + 581: 18(fvec3) VectorTimesScalar 580 579 + 582: 129(ptr) AccessChain 124 127 127 + 583: 8(float) Load 582 + 584: 18(fvec3) VectorTimesScalar 581 583 + 585: 129(ptr) AccessChain 124 127 127 + 586: 8(float) Load 585 + 587: 18(fvec3) VectorTimesScalar 584 586 + 588: 18(fvec3) FAdd 578 587 + 589: 8(float) CompositeExtract 588 0 + 590: 8(float) CompositeExtract 588 1 + 591: 8(float) CompositeExtract 588 2 + 592: 86(fvec4) CompositeConstruct 589 590 591 216 + 593: 236(ptr) AccessChain 232(particleOut) 127 572 127 + Store 593 592 + 594: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 595 595 16 16 + 596: 11(int) Load 147(index) + 597: 18(fvec3) Load 277(vel) + 598: 18(fvec3) Load 561(f) + 599: 129(ptr) AccessChain 124 127 127 + 600: 8(float) Load 599 + 601: 18(fvec3) VectorTimesScalar 598 600 + 602: 18(fvec3) FAdd 597 601 + 603: 8(float) CompositeExtract 602 0 + 604: 8(float) CompositeExtract 602 1 + 605: 8(float) CompositeExtract 602 2 + 606: 86(fvec4) CompositeConstruct 603 604 605 245 + 607: 236(ptr) AccessChain 232(particleOut) 127 596 244 + Store 607 606 + 608: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 609 609 16 16 + 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 611 610(sphereDist) 46 + 614: 11(int) Load 147(index) + 615: 236(ptr) AccessChain 232(particleOut) 127 614 127 + 616: 86(fvec4) Load 615 + 617: 18(fvec3) VectorShuffle 616 616 0 1 2 + 619: 236(ptr) AccessChain 124 127 618 + 620: 86(fvec4) Load 619 + 621: 18(fvec3) VectorShuffle 620 620 0 1 2 + 622: 18(fvec3) FSub 617 621 + Store 610(sphereDist) 622 + 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 624 624 16 16 + 625: 18(fvec3) Load 610(sphereDist) + 626: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 625 + 628: 129(ptr) AccessChain 124 127 627 + 629: 8(float) Load 628 + 631: 8(float) FAdd 629 630 + 632: 172(bool) FOrdLessThan 626 631 + SelectionMerge 634 None + BranchConditional 632 633 634 + 633: Label + 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 636: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 637 637 16 16 + 638: 11(int) Load 147(index) + 639: 236(ptr) AccessChain 124 127 618 + 640: 86(fvec4) Load 639 + 641: 18(fvec3) VectorShuffle 640 640 0 1 2 + 642: 18(fvec3) Load 610(sphereDist) + 643: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 642 + 644: 129(ptr) AccessChain 124 127 627 + 645: 8(float) Load 644 + 646: 8(float) FAdd 645 630 + 647: 18(fvec3) VectorTimesScalar 643 646 + 648: 18(fvec3) FAdd 641 647 + 649: 129(ptr) AccessChain 232(particleOut) 127 638 127 16 + 650: 8(float) CompositeExtract 648 0 + Store 649 650 + 651: 129(ptr) AccessChain 232(particleOut) 127 638 127 38 + 652: 8(float) CompositeExtract 648 1 + Store 651 652 + 653: 129(ptr) AccessChain 232(particleOut) 127 638 127 49 + 654: 8(float) CompositeExtract 648 2 + Store 653 654 + 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 656 656 16 16 + 657: 11(int) Load 147(index) + 658: 236(ptr) AccessChain 232(particleOut) 127 657 244 + Store 658 246 + Branch 634 + 634: Label + 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 661 661 16 16 + 681: 679(ptr) AccessChain 677 127 127 + 682: 11(int) Load 681 + 683: 172(bool) IEqual 682 38 + SelectionMerge 685 None + BranchConditional 683 684 685 + 684: Label + 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 688 688 16 16 + 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 690 689(normal) 46 + Store 689(normal) 692 + 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 694 694 16 16 + 695: 145(ptr) AccessChain 60(id) 38 + 696: 11(int) Load 695 + 697: 172(bool) UGreaterThan 696 16 + SelectionMerge 699 None + BranchConditional 697 698 699 + 698: Label + 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 702 702 16 16 + 703: 145(ptr) AccessChain 60(id) 16 + 704: 11(int) Load 703 + 705: 172(bool) UGreaterThan 704 16 + SelectionMerge 707 None + BranchConditional 705 706 707 + 706: Label + 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 710 710 16 16 + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(a) 46 + 715: 11(int) Load 147(index) + 716: 11(int) ISub 715 38 + 717: 236(ptr) AccessChain 210(particleIn) 127 716 127 + 718: 86(fvec4) Load 717 + 719: 18(fvec3) VectorShuffle 718 718 0 1 2 + 720: 18(fvec3) Load 267(pos) + 721: 18(fvec3) FSub 719 720 + Store 711(a) 721 + 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 723 723 16 16 + 727: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 725 724(b) 46 + 728: 11(int) Load 147(index) + 729: 154(ptr) AccessChain 124 127 153 16 + 730: 88(int) Load 729 + 731: 11(int) Bitcast 730 + 732: 11(int) ISub 728 731 + 733: 11(int) ISub 732 38 + 734: 236(ptr) AccessChain 210(particleIn) 127 733 127 + 735: 86(fvec4) Load 734 + 736: 18(fvec3) VectorShuffle 735 735 0 1 2 + 737: 18(fvec3) Load 267(pos) + 738: 18(fvec3) FSub 736 737 + Store 724(b) 738 + 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 740 740 16 16 + 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 742 741(c) 46 + 745: 11(int) Load 147(index) + 746: 154(ptr) AccessChain 124 127 153 16 + 747: 88(int) Load 746 + 748: 11(int) Bitcast 747 + 749: 11(int) ISub 745 748 + 750: 236(ptr) AccessChain 210(particleIn) 127 749 127 + 751: 86(fvec4) Load 750 + 752: 18(fvec3) VectorShuffle 751 751 0 1 2 + 753: 18(fvec3) Load 267(pos) + 754: 18(fvec3) FSub 752 753 + Store 741(c) 754 + 755: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 756 756 16 16 + 757: 18(fvec3) Load 711(a) + 758: 18(fvec3) Load 724(b) + 759: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 757 758 + 760: 18(fvec3) Load 724(b) + 761: 18(fvec3) Load 741(c) + 762: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 760 761 + 763: 18(fvec3) FAdd 759 762 + 764: 18(fvec3) Load 689(normal) + 765: 18(fvec3) FAdd 764 763 + Store 689(normal) 765 + Branch 707 + 707: Label + 766: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 768 768 16 16 + 769: 145(ptr) AccessChain 60(id) 16 + 770: 11(int) Load 769 + 771: 154(ptr) AccessChain 124 127 153 16 + 772: 88(int) Load 771 + 773: 88(int) ISub 772 244 + 774: 11(int) Bitcast 773 + 775: 172(bool) ULessThan 770 774 + SelectionMerge 777 None + BranchConditional 775 776 777 + 776: Label + 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 779: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 780 780 16 16 + 781: 11(int) Load 147(index) + 782: 154(ptr) AccessChain 124 127 153 16 + 783: 88(int) Load 782 + 784: 11(int) Bitcast 783 + 785: 11(int) ISub 781 784 + 786: 236(ptr) AccessChain 210(particleIn) 127 785 127 + 787: 86(fvec4) Load 786 788: 18(fvec3) VectorShuffle 787 787 0 1 2 - 789: 18(fvec3) Load 256(pos) + 789: 18(fvec3) Load 267(pos) 790: 18(fvec3) FSub 788 789 - Store 711(b) 790 - 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 792 792 16 16 - 793: 11(int) Load 140(index) - 794: 11(int) IAdd 793 35 - 795: 226(ptr) AccessChain 201(particleIn) 122 794 122 - 796: 82(fvec4) Load 795 - 797: 18(fvec3) VectorShuffle 796 796 0 1 2 - 798: 18(fvec3) Load 256(pos) - 799: 18(fvec3) FSub 797 798 - Store 728(c) 799 - 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 801 801 16 16 - 802: 18(fvec3) Load 698(a) - 803: 18(fvec3) Load 711(b) - 804: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 802 803 - 805: 18(fvec3) Load 711(b) - 806: 18(fvec3) Load 728(c) - 807: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 805 806 - 808: 18(fvec3) FAdd 804 807 - 809: 18(fvec3) Load 676(normal) - 810: 18(fvec3) FAdd 809 808 - Store 676(normal) 810 - Branch 764 - 764: Label - Branch 686 - 686: Label - 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 812: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 813 813 16 16 - 814: 139(ptr) AccessChain 56(id) 35 - 815: 11(int) Load 814 - 816: 147(ptr) AccessChain 119 122 146 35 - 817: 84(int) Load 816 - 818: 84(int) ISub 817 233 - 819: 11(int) Bitcast 818 - 820: 164(bool) ULessThan 815 819 - SelectionMerge 822 None - BranchConditional 820 821 822 - 821: Label - 823: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 824: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 825 825 16 16 - 826: 139(ptr) AccessChain 56(id) 16 - 827: 11(int) Load 826 - 828: 164(bool) UGreaterThan 827 16 - SelectionMerge 830 None - BranchConditional 828 829 830 - 829: Label - 831: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 832: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 833 833 16 16 - 834: 11(int) Load 140(index) - 835: 147(ptr) AccessChain 119 122 146 16 - 836: 84(int) Load 835 - 837: 11(int) Bitcast 836 - 838: 11(int) IAdd 834 837 - 839: 226(ptr) AccessChain 201(particleIn) 122 838 122 - 840: 82(fvec4) Load 839 - 841: 18(fvec3) VectorShuffle 840 840 0 1 2 - 842: 18(fvec3) Load 256(pos) - 843: 18(fvec3) FSub 841 842 - Store 698(a) 843 - 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 845 845 16 16 - 846: 11(int) Load 140(index) - 847: 147(ptr) AccessChain 119 122 146 16 - 848: 84(int) Load 847 - 849: 11(int) Bitcast 848 - 850: 11(int) IAdd 846 849 - 851: 11(int) ISub 850 35 - 852: 226(ptr) AccessChain 201(particleIn) 122 851 122 - 853: 82(fvec4) Load 852 + Store 711(a) 790 + 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 792 792 16 16 + 793: 11(int) Load 147(index) + 794: 154(ptr) AccessChain 124 127 153 16 + 795: 88(int) Load 794 + 796: 11(int) Bitcast 795 + 797: 11(int) ISub 793 796 + 798: 11(int) IAdd 797 38 + 799: 236(ptr) AccessChain 210(particleIn) 127 798 127 + 800: 86(fvec4) Load 799 + 801: 18(fvec3) VectorShuffle 800 800 0 1 2 + 802: 18(fvec3) Load 267(pos) + 803: 18(fvec3) FSub 801 802 + Store 724(b) 803 + 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 805 805 16 16 + 806: 11(int) Load 147(index) + 807: 11(int) IAdd 806 38 + 808: 236(ptr) AccessChain 210(particleIn) 127 807 127 + 809: 86(fvec4) Load 808 + 810: 18(fvec3) VectorShuffle 809 809 0 1 2 + 811: 18(fvec3) Load 267(pos) + 812: 18(fvec3) FSub 810 811 + Store 741(c) 812 + 813: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 814 814 16 16 + 815: 18(fvec3) Load 711(a) + 816: 18(fvec3) Load 724(b) + 817: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 815 816 + 818: 18(fvec3) Load 724(b) + 819: 18(fvec3) Load 741(c) + 820: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 818 819 + 821: 18(fvec3) FAdd 817 820 + 822: 18(fvec3) Load 689(normal) + 823: 18(fvec3) FAdd 822 821 + Store 689(normal) 823 + Branch 777 + 777: Label + Branch 699 + 699: Label + 824: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 825: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 826 826 16 16 + 827: 145(ptr) AccessChain 60(id) 38 + 828: 11(int) Load 827 + 829: 154(ptr) AccessChain 124 127 153 38 + 830: 88(int) Load 829 + 831: 88(int) ISub 830 244 + 832: 11(int) Bitcast 831 + 833: 172(bool) ULessThan 828 832 + SelectionMerge 835 None + BranchConditional 833 834 835 + 834: Label + 836: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 837: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 838 838 16 16 + 839: 145(ptr) AccessChain 60(id) 16 + 840: 11(int) Load 839 + 841: 172(bool) UGreaterThan 840 16 + SelectionMerge 843 None + BranchConditional 841 842 843 + 842: Label + 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 846 846 16 16 + 847: 11(int) Load 147(index) + 848: 154(ptr) AccessChain 124 127 153 16 + 849: 88(int) Load 848 + 850: 11(int) Bitcast 849 + 851: 11(int) IAdd 847 850 + 852: 236(ptr) AccessChain 210(particleIn) 127 851 127 + 853: 86(fvec4) Load 852 854: 18(fvec3) VectorShuffle 853 853 0 1 2 - 855: 18(fvec3) Load 256(pos) + 855: 18(fvec3) Load 267(pos) 856: 18(fvec3) FSub 854 855 - Store 711(b) 856 - 857: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 858 858 16 16 - 859: 11(int) Load 140(index) - 860: 11(int) ISub 859 35 - 861: 226(ptr) AccessChain 201(particleIn) 122 860 122 - 862: 82(fvec4) Load 861 - 863: 18(fvec3) VectorShuffle 862 862 0 1 2 - 864: 18(fvec3) Load 256(pos) - 865: 18(fvec3) FSub 863 864 - Store 728(c) 865 - 866: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 867 867 16 16 - 868: 18(fvec3) Load 698(a) - 869: 18(fvec3) Load 711(b) - 870: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 868 869 - 871: 18(fvec3) Load 711(b) - 872: 18(fvec3) Load 728(c) - 873: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 871 872 - 874: 18(fvec3) FAdd 870 873 - 875: 18(fvec3) Load 676(normal) - 876: 18(fvec3) FAdd 875 874 - Store 676(normal) 876 - Branch 830 - 830: Label - 877: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 878: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 879 879 16 16 - 880: 139(ptr) AccessChain 56(id) 16 - 881: 11(int) Load 880 - 882: 147(ptr) AccessChain 119 122 146 16 - 883: 84(int) Load 882 - 884: 84(int) ISub 883 233 - 885: 11(int) Bitcast 884 - 886: 164(bool) ULessThan 881 885 - SelectionMerge 888 None - BranchConditional 886 887 888 - 887: Label - 889: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 890: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 891 891 16 16 - 892: 11(int) Load 140(index) - 893: 11(int) IAdd 892 35 - 894: 226(ptr) AccessChain 201(particleIn) 122 893 122 - 895: 82(fvec4) Load 894 - 896: 18(fvec3) VectorShuffle 895 895 0 1 2 - 897: 18(fvec3) Load 256(pos) - 898: 18(fvec3) FSub 896 897 - Store 698(a) 898 - 899: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 900 900 16 16 - 901: 11(int) Load 140(index) - 902: 147(ptr) AccessChain 119 122 146 16 - 903: 84(int) Load 902 - 904: 11(int) Bitcast 903 - 905: 11(int) IAdd 901 904 - 906: 11(int) IAdd 905 35 - 907: 226(ptr) AccessChain 201(particleIn) 122 906 122 - 908: 82(fvec4) Load 907 + Store 711(a) 856 + 857: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 858 858 16 16 + 859: 11(int) Load 147(index) + 860: 154(ptr) AccessChain 124 127 153 16 + 861: 88(int) Load 860 + 862: 11(int) Bitcast 861 + 863: 11(int) IAdd 859 862 + 864: 11(int) ISub 863 38 + 865: 236(ptr) AccessChain 210(particleIn) 127 864 127 + 866: 86(fvec4) Load 865 + 867: 18(fvec3) VectorShuffle 866 866 0 1 2 + 868: 18(fvec3) Load 267(pos) + 869: 18(fvec3) FSub 867 868 + Store 724(b) 869 + 870: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 871 871 16 16 + 872: 11(int) Load 147(index) + 873: 11(int) ISub 872 38 + 874: 236(ptr) AccessChain 210(particleIn) 127 873 127 + 875: 86(fvec4) Load 874 + 876: 18(fvec3) VectorShuffle 875 875 0 1 2 + 877: 18(fvec3) Load 267(pos) + 878: 18(fvec3) FSub 876 877 + Store 741(c) 878 + 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 880 880 16 16 + 881: 18(fvec3) Load 711(a) + 882: 18(fvec3) Load 724(b) + 883: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 881 882 + 884: 18(fvec3) Load 724(b) + 885: 18(fvec3) Load 741(c) + 886: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 884 885 + 887: 18(fvec3) FAdd 883 886 + 888: 18(fvec3) Load 689(normal) + 889: 18(fvec3) FAdd 888 887 + Store 689(normal) 889 + Branch 843 + 843: Label + 890: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 891: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 892 892 16 16 + 893: 145(ptr) AccessChain 60(id) 16 + 894: 11(int) Load 893 + 895: 154(ptr) AccessChain 124 127 153 16 + 896: 88(int) Load 895 + 897: 88(int) ISub 896 244 + 898: 11(int) Bitcast 897 + 899: 172(bool) ULessThan 894 898 + SelectionMerge 901 None + BranchConditional 899 900 901 + 900: Label + 902: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 903: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 904 904 16 16 + 905: 11(int) Load 147(index) + 906: 11(int) IAdd 905 38 + 907: 236(ptr) AccessChain 210(particleIn) 127 906 127 + 908: 86(fvec4) Load 907 909: 18(fvec3) VectorShuffle 908 908 0 1 2 - 910: 18(fvec3) Load 256(pos) + 910: 18(fvec3) Load 267(pos) 911: 18(fvec3) FSub 909 910 - Store 711(b) 911 - 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 913 913 16 16 - 914: 11(int) Load 140(index) - 915: 147(ptr) AccessChain 119 122 146 16 - 916: 84(int) Load 915 + Store 711(a) 911 + 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 913 913 16 16 + 914: 11(int) Load 147(index) + 915: 154(ptr) AccessChain 124 127 153 16 + 916: 88(int) Load 915 917: 11(int) Bitcast 916 918: 11(int) IAdd 914 917 - 919: 226(ptr) AccessChain 201(particleIn) 122 918 122 - 920: 82(fvec4) Load 919 - 921: 18(fvec3) VectorShuffle 920 920 0 1 2 - 922: 18(fvec3) Load 256(pos) - 923: 18(fvec3) FSub 921 922 - Store 728(c) 923 - 924: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 925 925 16 16 - 926: 18(fvec3) Load 698(a) - 927: 18(fvec3) Load 711(b) - 928: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 926 927 - 929: 18(fvec3) Load 711(b) - 930: 18(fvec3) Load 728(c) - 931: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 929 930 - 932: 18(fvec3) FAdd 928 931 - 933: 18(fvec3) Load 676(normal) - 934: 18(fvec3) FAdd 933 932 - Store 676(normal) 934 - Branch 888 - 888: Label - Branch 822 - 822: Label - 935: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 60 - 936: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 937 937 16 16 - 938: 11(int) Load 140(index) - 939: 18(fvec3) Load 676(normal) - 940: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 939 - 941: 8(float) CompositeExtract 940 0 - 942: 8(float) CompositeExtract 940 1 - 943: 8(float) CompositeExtract 940 2 - 944: 82(fvec4) CompositeConstruct 941 942 943 234 - 945: 226(ptr) AccessChain 222(particleOut) 122 938 540 - Store 945 944 - Branch 672 - 672: Label + 919: 11(int) IAdd 918 38 + 920: 236(ptr) AccessChain 210(particleIn) 127 919 127 + 921: 86(fvec4) Load 920 + 922: 18(fvec3) VectorShuffle 921 921 0 1 2 + 923: 18(fvec3) Load 267(pos) + 924: 18(fvec3) FSub 922 923 + Store 724(b) 924 + 925: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 926 926 16 16 + 927: 11(int) Load 147(index) + 928: 154(ptr) AccessChain 124 127 153 16 + 929: 88(int) Load 928 + 930: 11(int) Bitcast 929 + 931: 11(int) IAdd 927 930 + 932: 236(ptr) AccessChain 210(particleIn) 127 931 127 + 933: 86(fvec4) Load 932 + 934: 18(fvec3) VectorShuffle 933 933 0 1 2 + 935: 18(fvec3) Load 267(pos) + 936: 18(fvec3) FSub 934 935 + Store 741(c) 936 + 937: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 938 938 16 16 + 939: 18(fvec3) Load 711(a) + 940: 18(fvec3) Load 724(b) + 941: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 939 940 + 942: 18(fvec3) Load 724(b) + 943: 18(fvec3) Load 741(c) + 944: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 942 943 + 945: 18(fvec3) FAdd 941 944 + 946: 18(fvec3) Load 689(normal) + 947: 18(fvec3) FAdd 946 945 + Store 689(normal) 947 + Branch 901 + 901: Label + Branch 835 + 835: Label + 948: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 949: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 950 950 16 16 + 951: 11(int) Load 147(index) + 952: 18(fvec3) Load 689(normal) + 953: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 952 + 954: 8(float) CompositeExtract 953 0 + 955: 8(float) CompositeExtract 953 1 + 956: 8(float) CompositeExtract 953 2 + 957: 86(fvec4) CompositeConstruct 954 955 956 245 + 958: 236(ptr) AccessChain 232(particleOut) 127 951 551 + Store 958 957 + Branch 685 + 685: Label Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 9fa17ff112..b76a7d7b5b 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 879 +// Id's are bound by 895 Capability Shader Capability ImageQuery @@ -9,13 +9,13 @@ spv.debuginfo.hlsl.frag 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 6 "main" 872 875 + EntryPoint Fragment 6 "main" 888 891 ExecutionMode 6 OriginUpperLeft 1: String "" 9: String "float" 12: String "uint" - 34: String "textureProj" - 37: String "// OpModuleProcessed auto-map-locations + 38: String "textureProj" + 41: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 @@ -24,191 +24,191 @@ spv.debuginfo.hlsl.frag // OpModuleProcessed hlsl-offsets #line 1 " - 45: String "P" - 49: String "layer" - 52: String "offset" - 60: String "filterPCF" - 66: String "sc" - 79: String "shadow" - 85: String "fragcolor" - 88: String "fragPos" - 95: String "@main" - 101: String "inUV" - 115: String "shadowCoord" - 140: String "bool" - 154: String "dist" - 158: String "type.2d.image" - 159: String "@type.2d.image" - 164: String "textureShadowMap" - 169: String "type.sampler" - 170: String "@type.sampler" - 174: String "samplerShadowMap" - 178: String "type.sampled.image" - 179: String "@type.sampled.image" - 223: String "sizeQueryTemp" - 228: String "int" - 235: String "texDim" - 249: String "elements" - 256: String "levels" - 265: String "scale" - 272: String "dx" - 284: String "dy" - 296: String "shadowFactor" - 302: String "count" - 309: String "range" - 316: String "x" - 337: String "y" - 400: String "i" - 419: String "shadowClip" - 431: String "color" - 437: String "viewMatrix" - 441: String "Light" - 447: String "lights" - 450: String "displayDebugTarget" - 455: String "UBO" - 458: String "ubo" - 508: String "textureposition" - 513: String "samplerposition" - 525: String "normal" - 529: String "textureNormal" - 534: String "samplerNormal" - 544: String "albedo" - 548: String "textureAlbedo" - 553: String "samplerAlbedo" - 642: String "N" - 667: String "L" - 691: String "V" - 706: String "lightCosInnerAngle" - 713: String "lightCosOuterAngle" - 720: String "lightRange" - 727: String "dir" - 743: String "cosDir" - 752: String "spotEffect" - 762: String "heightAttenuation" - 771: String "NdotL" - 781: String "diff" - 789: String "R" - 799: String "NdotR" - 809: String "spec" + 49: String "P" + 53: String "layer" + 56: String "offset" + 64: String "filterPCF" + 70: String "sc" + 84: String "shadow" + 90: String "fragcolor" + 93: String "fragPos" + 100: String "@main" + 106: String "inUV" + 120: String "shadowCoord" + 145: String "bool" + 159: String "dist" + 163: String "type.2d.image" + 164: String "@type.2d.image" + 170: String "textureShadowMap" + 175: String "type.sampler" + 176: String "@type.sampler" + 181: String "samplerShadowMap" + 185: String "type.sampled.image" + 186: String "@type.sampled.image" + 231: String "sizeQueryTemp" + 236: String "int" + 244: String "texDim" + 260: String "elements" + 267: String "levels" + 276: String "scale" + 283: String "dx" + 295: String "dy" + 307: String "shadowFactor" + 313: String "count" + 320: String "range" + 327: String "x" + 348: String "y" + 411: String "i" + 430: String "shadowClip" + 442: String "color" + 448: String "viewMatrix" + 452: String "Light" + 458: String "lights" + 461: String "displayDebugTarget" + 466: String "UBO" + 469: String "ubo" + 522: String "textureposition" + 527: String "samplerposition" + 539: String "normal" + 543: String "textureNormal" + 548: String "samplerNormal" + 558: String "albedo" + 562: String "textureAlbedo" + 567: String "samplerAlbedo" + 657: String "N" + 682: String "L" + 707: String "V" + 722: String "lightCosInnerAngle" + 729: String "lightCosOuterAngle" + 736: String "lightRange" + 743: String "dir" + 759: String "cosDir" + 768: String "spotEffect" + 778: String "heightAttenuation" + 787: String "NdotL" + 797: String "diff" + 805: String "R" + 815: String "NdotR" + 825: String "spec" Name 6 "main" - Name 32 "textureProj(vf4;f1;vf2;" - Name 29 "P" - Name 30 "layer" - Name 31 "offset" - Name 58 "filterPCF(vf4;f1;" - Name 56 "sc" - Name 57 "layer" - Name 77 "shadow(vf3;vf3;" - Name 75 "fragcolor" - Name 76 "fragPos" - Name 93 "@main(vf2;" - Name 92 "inUV" - Name 107 "shadow" - Name 113 "shadowCoord" - Name 152 "dist" - Name 162 "textureShadowMap" - Name 172 "samplerShadowMap" - Name 221 "sizeQueryTemp" - Name 233 "texDim" - Name 247 "elements" - Name 254 "levels" - Name 263 "scale" - Name 270 "dx" - Name 282 "dy" - Name 294 "shadowFactor" - Name 300 "count" - Name 307 "range" - Name 314 "x" - Name 335 "y" - Name 365 "param" - Name 367 "param" - Name 369 "param" - Name 398 "i" - Name 417 "shadowClip" - Name 429 "Light" - MemberName 429(Light) 0 "position" - MemberName 429(Light) 1 "target" - MemberName 429(Light) 2 "color" - MemberName 429(Light) 3 "viewMatrix" - Name 444 "UBO" - MemberName 444(UBO) 0 "viewPos" - MemberName 444(UBO) 1 "lights" - MemberName 444(UBO) 2 "useShadows" - MemberName 444(UBO) 3 "displayDebugTarget" - Name 456 "ubo" - MemberName 456(ubo) 0 "ubo" - Name 463 "" - Name 472 "shadowFactor" - Name 477 "param" - Name 479 "param" - Name 500 "fragPos" - Name 506 "textureposition" - Name 511 "samplerposition" - Name 523 "normal" - Name 527 "textureNormal" - Name 532 "samplerNormal" - Name 542 "albedo" - Name 546 "textureAlbedo" - Name 551 "samplerAlbedo" - Name 580 "fragcolor" - Name 584 "param" - Name 585 "param" - Name 640 "N" - Name 648 "i" - Name 665 "L" - Name 678 "dist" - Name 689 "V" - Name 704 "lightCosInnerAngle" - Name 711 "lightCosOuterAngle" - Name 718 "lightRange" - Name 725 "dir" - Name 741 "cosDir" - Name 750 "spotEffect" - Name 760 "heightAttenuation" - Name 769 "NdotL" - Name 779 "diff" - Name 787 "R" - Name 797 "NdotR" - Name 807 "spec" - Name 855 "param" - Name 857 "param" - Name 870 "inUV" - Name 872 "inUV" - Name 875 "@entryPointOutput" - Name 876 "param" - Decorate 162(textureShadowMap) DescriptorSet 0 - Decorate 162(textureShadowMap) Binding 5 - Decorate 172(samplerShadowMap) DescriptorSet 0 - Decorate 172(samplerShadowMap) Binding 5 - MemberDecorate 429(Light) 0 Offset 0 - MemberDecorate 429(Light) 1 Offset 16 - MemberDecorate 429(Light) 2 Offset 32 - MemberDecorate 429(Light) 3 RowMajor - MemberDecorate 429(Light) 3 Offset 48 - MemberDecorate 429(Light) 3 MatrixStride 16 - Decorate 442 ArrayStride 112 - MemberDecorate 444(UBO) 0 Offset 0 - MemberDecorate 444(UBO) 1 Offset 16 - MemberDecorate 444(UBO) 2 Offset 352 - MemberDecorate 444(UBO) 3 Offset 356 - MemberDecorate 456(ubo) 0 Offset 0 - Decorate 456(ubo) Block - Decorate 463 DescriptorSet 0 - Decorate 463 Binding 4 - Decorate 506(textureposition) DescriptorSet 0 - Decorate 506(textureposition) Binding 1 - Decorate 511(samplerposition) DescriptorSet 0 - Decorate 511(samplerposition) Binding 1 - Decorate 527(textureNormal) DescriptorSet 0 - Decorate 527(textureNormal) Binding 2 - Decorate 532(samplerNormal) DescriptorSet 0 - Decorate 532(samplerNormal) Binding 2 - Decorate 546(textureAlbedo) DescriptorSet 0 - Decorate 546(textureAlbedo) Binding 3 - Decorate 551(samplerAlbedo) DescriptorSet 0 - Decorate 551(samplerAlbedo) Binding 3 - Decorate 872(inUV) Location 0 - Decorate 875(@entryPointOutput) Location 0 + Name 36 "textureProj(vf4;f1;vf2;" + Name 33 "P" + Name 34 "layer" + Name 35 "offset" + Name 62 "filterPCF(vf4;f1;" + Name 60 "sc" + Name 61 "layer" + Name 82 "shadow(vf3;vf3;" + Name 80 "fragcolor" + Name 81 "fragPos" + Name 98 "@main(vf2;" + Name 97 "inUV" + Name 112 "shadow" + Name 118 "shadowCoord" + Name 157 "dist" + Name 168 "textureShadowMap" + Name 179 "samplerShadowMap" + Name 229 "sizeQueryTemp" + Name 242 "texDim" + Name 258 "elements" + Name 265 "levels" + Name 274 "scale" + Name 281 "dx" + Name 293 "dy" + Name 305 "shadowFactor" + Name 311 "count" + Name 318 "range" + Name 325 "x" + Name 346 "y" + Name 376 "param" + Name 378 "param" + Name 380 "param" + Name 409 "i" + Name 428 "shadowClip" + Name 440 "Light" + MemberName 440(Light) 0 "position" + MemberName 440(Light) 1 "target" + MemberName 440(Light) 2 "color" + MemberName 440(Light) 3 "viewMatrix" + Name 455 "UBO" + MemberName 455(UBO) 0 "viewPos" + MemberName 455(UBO) 1 "lights" + MemberName 455(UBO) 2 "useShadows" + MemberName 455(UBO) 3 "displayDebugTarget" + Name 467 "ubo" + MemberName 467(ubo) 0 "ubo" + Name 475 "" + Name 485 "shadowFactor" + Name 490 "param" + Name 492 "param" + Name 513 "fragPos" + Name 520 "textureposition" + Name 525 "samplerposition" + Name 537 "normal" + Name 541 "textureNormal" + Name 546 "samplerNormal" + Name 556 "albedo" + Name 560 "textureAlbedo" + Name 565 "samplerAlbedo" + Name 595 "fragcolor" + Name 599 "param" + Name 600 "param" + Name 655 "N" + Name 663 "i" + Name 680 "L" + Name 694 "dist" + Name 705 "V" + Name 720 "lightCosInnerAngle" + Name 727 "lightCosOuterAngle" + Name 734 "lightRange" + Name 741 "dir" + Name 757 "cosDir" + Name 766 "spotEffect" + Name 776 "heightAttenuation" + Name 785 "NdotL" + Name 795 "diff" + Name 803 "R" + Name 813 "NdotR" + Name 823 "spec" + Name 871 "param" + Name 873 "param" + Name 886 "inUV" + Name 888 "inUV" + Name 891 "@entryPointOutput" + Name 892 "param" + Decorate 168(textureShadowMap) DescriptorSet 0 + Decorate 168(textureShadowMap) Binding 5 + Decorate 179(samplerShadowMap) DescriptorSet 0 + Decorate 179(samplerShadowMap) Binding 5 + MemberDecorate 440(Light) 0 Offset 0 + MemberDecorate 440(Light) 1 Offset 16 + MemberDecorate 440(Light) 2 Offset 32 + MemberDecorate 440(Light) 3 RowMajor + MemberDecorate 440(Light) 3 Offset 48 + MemberDecorate 440(Light) 3 MatrixStride 16 + Decorate 453 ArrayStride 112 + MemberDecorate 455(UBO) 0 Offset 0 + MemberDecorate 455(UBO) 1 Offset 16 + MemberDecorate 455(UBO) 2 Offset 352 + MemberDecorate 455(UBO) 3 Offset 356 + MemberDecorate 467(ubo) 0 Offset 0 + Decorate 467(ubo) Block + Decorate 475 DescriptorSet 0 + Decorate 475 Binding 4 + Decorate 520(textureposition) DescriptorSet 0 + Decorate 520(textureposition) Binding 1 + Decorate 525(samplerposition) DescriptorSet 0 + Decorate 525(samplerposition) Binding 1 + Decorate 541(textureNormal) DescriptorSet 0 + Decorate 541(textureNormal) Binding 2 + Decorate 546(samplerNormal) DescriptorSet 0 + Decorate 546(samplerNormal) Binding 2 + Decorate 560(textureAlbedo) DescriptorSet 0 + Decorate 560(textureAlbedo) Binding 3 + Decorate 565(samplerAlbedo) DescriptorSet 0 + Decorate 565(samplerAlbedo) Binding 3 + Decorate 888(inUV) Location 0 + Decorate 891(@entryPointOutput) Location 0 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -223,914 +223,930 @@ spv.debuginfo.hlsl.frag 19: 11(int) Constant 4 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) - 22: TypePointer Function 8(float) - 23: TypeVector 8(float) 2 - 24: 11(int) Constant 2 - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 24 - 26: TypePointer Function 23(fvec2) - 27: TypeFunction 8(float) 21(ptr) 22(ptr) 26(ptr) - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 25 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 37 - 38: 11(int) Constant 61 - 40: 11(int) Constant 1 - 41: 11(int) Constant 5 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 40 19 36 41 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 34 28 36 38 16 39 34 17 38 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 36 38 16 35 19 40 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 10 36 38 16 35 19 24 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 25 36 38 16 35 19 17 - 54: TypeFunction 8(float) 21(ptr) 22(ptr) - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 - 62: 11(int) Constant 78 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 60 55 36 62 16 39 60 17 62 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 66 20 36 62 16 61 19 40 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 10 36 62 16 61 19 24 - 70: TypeVector 8(float) 3 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 72: TypePointer Function 70(fvec3) - 73: TypeFunction 70(fvec3) 72(ptr) 72(ptr) - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 71 71 71 - 81: 11(int) Constant 101 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 74 36 81 16 39 79 17 81 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 36 81 16 80 19 40 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 36 81 16 80 19 24 - 90: TypeFunction 18(fvec4) 26(ptr) - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 25 - 97: 11(int) Constant 119 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 95 91 36 97 16 39 95 17 97 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 101 25 36 97 16 96 19 40 - 106: 11(int) Constant 62 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 10 36 106 16 35 19 - 110: 8(float) Constant 1065353216 - 112: 11(int) Constant 63 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 115 20 36 112 16 35 19 - 123: 11(int) Constant 64 - 126: 8(float) Constant 1056964608 - 135: 11(int) Constant 66 - 138: 8(float) Constant 3212836864 - 139: TypeBool - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 24 16 - 151: 11(int) Constant 68 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 154 10 36 151 16 35 19 - 156: TypeImage 8(float) 2D array sampled format:Unknown - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 158 16 36 151 16 39 159 160 17 - 161: TypePointer UniformConstant 156 -162(textureShadowMap): 161(ptr) Variable UniformConstant - 165: 11(int) Constant 8 - 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 164 157 36 151 16 39 164 162(textureShadowMap) 165 - 167: TypeSampler - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 151 16 39 170 160 17 - 171: TypePointer UniformConstant 167 -172(samplerShadowMap): 171(ptr) Variable UniformConstant - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 174 168 36 151 16 39 174 172(samplerShadowMap) 165 - 176: TypeSampledImage 156 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 16 36 151 16 39 179 160 17 - 192: 11(int) Constant 69 - 195: 8(float) Constant 0 - 206: 11(int) Constant 71 - 207: 8(float) Constant 1048576000 - 210: 11(int) Constant 74 - 217: 11(int) Constant 80 - 218: TypeVector 11(int) 3 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 - 220: TypePointer Function 218(ivec3) - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 219 36 217 16 61 19 - 227: TypeInt 32 1 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 228 14 19 16 - 230: TypeVector 227(int) 2 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 229 24 - 232: TypePointer Function 230(ivec2) - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 235 231 36 217 16 61 19 - 237: TypePointer Function 11(int) - 241: TypePointer Function 227(int) - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 229 36 217 16 61 19 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 229 36 217 16 61 19 - 262: 11(int) Constant 81 - 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 10 36 262 16 61 19 - 267: 8(float) Constant 1069547520 - 269: 11(int) Constant 82 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 10 36 269 16 61 19 - 281: 11(int) Constant 83 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 10 36 281 16 61 19 - 293: 11(int) Constant 85 - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 296 10 36 293 16 61 19 - 299: 11(int) Constant 86 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 302 229 36 299 16 61 19 - 304: 227(int) Constant 0 - 306: 11(int) Constant 87 - 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 309 229 36 306 16 61 19 - 311: 227(int) Constant 1 - 313: 11(int) Constant 89 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 229 36 313 16 61 19 - 334: 11(int) Constant 91 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 337 229 36 334 16 61 19 - 355: 11(int) Constant 93 - 374: 11(int) Constant 94 - 387: 11(int) Constant 98 - 397: 11(int) Constant 102 - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 400 229 36 397 16 80 19 - 412: 227(int) Constant 3 - 416: 11(int) Constant 104 - 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 419 20 36 416 16 80 19 - 426: TypeMatrix 18(fvec4) 4 - 428: 139(bool) ConstantTrue - 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 428 - 429(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 426 - 432: 11(int) Constant 46 - 433: 11(int) Constant 14 - 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 - 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 - 438: 11(int) Constant 47 - 439: 11(int) Constant 21 - 436: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 437 427 36 438 439 16 16 17 - 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 441 40 36 416 16 39 441 16 17 430 434 435 436 - 442: TypeArray 429(Light) 17 - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 440 17 - 444(UBO): TypeStruct 18(fvec4) 442 227(int) 227(int) - 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 431 20 36 432 433 16 16 17 - 448: 11(int) Constant 53 - 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 447 443 36 448 433 16 16 17 - 451: 11(int) Constant 55 - 452: 11(int) Constant 24 - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 450 229 36 451 452 16 16 17 - 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 450 229 36 451 452 16 16 17 - 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 455 40 36 416 16 39 455 16 17 445 446 449 453 - 456(ubo): TypeStruct 444(UBO) - 459: 11(int) Constant 58 - 460: 11(int) Constant 37 - 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 454 36 459 460 16 16 17 - 461: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 458 40 36 416 16 39 458 16 17 457 - 462: TypePointer Uniform 456(ubo) - 463: 462(ptr) Variable Uniform - 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 461 36 416 16 39 1 463 165 - 466: TypePointer Uniform 426 - 471: 11(int) Constant 108 - 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 296 10 36 471 16 80 19 - 482: 11(int) Constant 113 - 492: 11(int) Constant 115 - 499: 11(int) Constant 121 - 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 71 36 499 16 96 19 - 503: TypeImage 8(float) 2D sampled format:Unknown - 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 158 16 36 499 16 39 159 160 17 - 505: TypePointer UniformConstant 503 -506(textureposition): 505(ptr) Variable UniformConstant - 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 508 504 36 499 16 39 508 506(textureposition) 165 - 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 499 16 39 170 160 17 -511(samplerposition): 171(ptr) Variable UniformConstant - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 513 510 36 499 16 39 513 511(samplerposition) 165 - 515: TypeSampledImage 503 - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 16 36 499 16 39 179 160 17 - 522: 11(int) Constant 122 - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 525 71 36 522 16 96 19 -527(textureNormal): 505(ptr) Variable UniformConstant - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 529 504 36 522 16 39 529 527(textureNormal) 165 - 531: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 522 16 39 170 160 17 -532(samplerNormal): 171(ptr) Variable UniformConstant - 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 534 531 36 522 16 39 534 532(samplerNormal) 165 - 541: 11(int) Constant 123 - 543: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 544 20 36 541 16 96 19 -546(textureAlbedo): 505(ptr) Variable UniformConstant - 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 504 36 541 16 39 548 546(textureAlbedo) 165 - 550: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 40 36 541 16 39 170 160 17 -551(samplerAlbedo): 171(ptr) Variable UniformConstant - 552: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 553 550 36 541 16 39 553 551(samplerAlbedo) 165 - 559: 11(int) Constant 128 - 560: TypePointer Uniform 227(int) - 568: 11(int) Constant 129 - 579: 11(int) Constant 131 - 581: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 71 36 579 16 96 19 - 583: 70(fvec3) ConstantComposite 110 110 110 - 589: 11(int) Constant 132 - 593: 11(int) Constant 134 - 596: 11(int) Constant 135 - 600: 11(int) Constant 137 - 603: 11(int) Constant 138 - 607: 11(int) Constant 140 - 611: 11(int) Constant 141 - 615: 11(int) Constant 143 - 619: 11(int) Constant 144 - 624: 11(int) Constant 146 - 633: 11(int) Constant 150 - 636: 8(float) Constant 1036831949 - 639: 11(int) Constant 152 - 641: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 642 71 36 639 16 96 19 - 647: 11(int) Constant 154 - 649: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 400 229 36 647 16 96 19 - 664: 11(int) Constant 157 - 666: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 667 71 36 664 16 96 19 - 670: TypePointer Uniform 18(fvec4) - 677: 11(int) Constant 159 - 679: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 154 10 36 677 16 96 19 - 684: 11(int) Constant 160 - 688: 11(int) Constant 163 - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 691 71 36 688 16 96 19 - 699: 11(int) Constant 164 - 703: 11(int) Constant 166 - 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 706 10 36 703 16 96 19 - 708: 8(float) Constant 1064781546 - 710: 11(int) Constant 167 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 10 36 710 16 96 19 - 715: 8(float) Constant 1063781322 - 717: 11(int) Constant 168 - 719: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 10 36 717 16 96 19 - 722: 8(float) Constant 1120403456 - 724: 11(int) Constant 171 - 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 71 36 724 16 96 19 - 740: 11(int) Constant 174 - 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 743 10 36 740 16 96 19 - 749: 11(int) Constant 175 - 751: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 752 10 36 749 16 96 19 - 759: 11(int) Constant 176 - 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 762 10 36 759 16 96 19 - 768: 11(int) Constant 179 - 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 771 10 36 768 16 96 19 - 778: 11(int) Constant 180 - 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 781 71 36 778 16 96 19 - 786: 11(int) Constant 183 - 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 789 71 36 786 16 96 19 - 796: 11(int) Constant 184 - 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 799 10 36 796 16 96 19 - 806: 11(int) Constant 185 - 808: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 809 71 36 806 16 96 19 - 812: 8(float) Constant 1098907648 - 817: 8(float) Constant 1075838976 - 821: 11(int) Constant 187 - 830: 227(int) Constant 2 - 846: 11(int) Constant 191 - 854: 11(int) Constant 193 - 862: 11(int) Constant 196 - 871: TypePointer Input 23(fvec2) - 872(inUV): 871(ptr) Variable Input - 874: TypePointer Output 18(fvec4) -875(@entryPointOutput): 874(ptr) Variable Output + 22: 11(int) Constant 7 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 + 24: TypePointer Function 8(float) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 + 26: TypeVector 8(float) 2 + 27: 11(int) Constant 2 + 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 27 + 29: TypePointer Function 26(fvec2) + 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 28 22 16 + 31: TypeFunction 8(float) 21(ptr) 24(ptr) 29(ptr) + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 28 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 41 + 42: 11(int) Constant 61 + 44: 11(int) Constant 1 + 45: 11(int) Constant 5 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 44 19 40 45 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 38 32 40 42 16 43 38 17 42 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 20 40 42 16 39 19 44 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 42 16 39 19 27 + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 28 40 42 16 39 19 17 + 58: TypeFunction 8(float) 21(ptr) 24(ptr) + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 + 66: 11(int) Constant 78 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 40 66 16 43 64 17 66 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 20 40 66 16 65 19 44 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 66 16 65 19 27 + 74: TypeVector 8(float) 3 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 76: TypePointer Function 74(fvec3) + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 22 16 + 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 75 75 75 + 86: 11(int) Constant 101 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 40 86 16 43 84 17 86 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 40 86 16 85 19 44 + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 86 16 85 19 27 + 95: TypeFunction 18(fvec4) 29(ptr) + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 28 + 102: 11(int) Constant 119 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 100 96 40 102 16 43 100 17 102 + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 106 28 40 102 16 101 19 44 + 111: 11(int) Constant 62 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 10 40 111 16 39 19 + 115: 8(float) Constant 1065353216 + 117: 11(int) Constant 63 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 20 40 117 16 39 19 + 128: 11(int) Constant 64 + 131: 8(float) Constant 1056964608 + 140: 11(int) Constant 66 + 143: 8(float) Constant 3212836864 + 144: TypeBool + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 145 14 27 16 + 156: 11(int) Constant 68 + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 40 156 16 39 19 + 161: TypeImage 8(float) 2D array sampled format:Unknown + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 16 40 156 16 43 164 165 17 + 166: TypePointer UniformConstant 161 + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 162 16 16 +168(textureShadowMap): 166(ptr) Variable UniformConstant + 171: 11(int) Constant 8 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 170 162 40 156 16 43 170 168(textureShadowMap) 171 + 173: TypeSampler + 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 156 16 43 176 165 17 + 177: TypePointer UniformConstant 173 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 174 16 16 +179(samplerShadowMap): 177(ptr) Variable UniformConstant + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 181 174 40 156 16 43 181 179(samplerShadowMap) 171 + 183: TypeSampledImage 161 + 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 185 16 40 156 16 43 186 165 17 + 199: 11(int) Constant 69 + 202: 8(float) Constant 0 + 213: 11(int) Constant 71 + 214: 8(float) Constant 1048576000 + 217: 11(int) Constant 74 + 224: 11(int) Constant 80 + 225: TypeVector 11(int) 3 + 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 227: TypePointer Function 225(ivec3) + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 226 22 16 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 231 226 40 224 16 65 19 + 235: TypeInt 32 1 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 236 14 19 16 + 238: TypeVector 235(int) 2 + 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 237 27 + 240: TypePointer Function 238(ivec2) + 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 239 22 16 + 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 239 40 224 16 65 19 + 246: TypePointer Function 11(int) + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 + 251: TypePointer Function 235(int) + 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 22 16 + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 260 237 40 224 16 65 19 + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 267 237 40 224 16 65 19 + 273: 11(int) Constant 81 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 276 10 40 273 16 65 19 + 278: 8(float) Constant 1069547520 + 280: 11(int) Constant 82 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 10 40 280 16 65 19 + 292: 11(int) Constant 83 + 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 295 10 40 292 16 65 19 + 304: 11(int) Constant 85 + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 10 40 304 16 65 19 + 310: 11(int) Constant 86 + 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 237 40 310 16 65 19 + 315: 235(int) Constant 0 + 317: 11(int) Constant 87 + 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 320 237 40 317 16 65 19 + 322: 235(int) Constant 1 + 324: 11(int) Constant 89 + 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 327 237 40 324 16 65 19 + 345: 11(int) Constant 91 + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 348 237 40 345 16 65 19 + 366: 11(int) Constant 93 + 385: 11(int) Constant 94 + 398: 11(int) Constant 98 + 408: 11(int) Constant 102 + 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 411 237 40 408 16 85 19 + 423: 235(int) Constant 3 + 427: 11(int) Constant 104 + 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 430 20 40 427 16 85 19 + 437: TypeMatrix 18(fvec4) 4 + 439: 144(bool) ConstantTrue + 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 439 + 440(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 437 + 443: 11(int) Constant 46 + 444: 11(int) Constant 14 + 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 449: 11(int) Constant 47 + 450: 11(int) Constant 21 + 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 448 438 40 449 450 16 16 17 + 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 452 44 40 427 16 43 452 16 17 441 445 446 447 + 453: TypeArray 440(Light) 17 + 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 451 17 + 455(UBO): TypeStruct 18(fvec4) 453 235(int) 235(int) + 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 459: 11(int) Constant 53 + 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 454 40 459 444 16 16 17 + 462: 11(int) Constant 55 + 463: 11(int) Constant 24 + 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 237 40 462 463 16 16 17 + 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 237 40 462 463 16 16 17 + 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 466 44 40 427 16 43 466 16 17 456 457 460 464 + 467(ubo): TypeStruct 455(UBO) + 470: 11(int) Constant 58 + 471: 11(int) Constant 37 + 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 469 465 40 470 471 16 16 17 + 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 469 44 40 427 16 43 469 16 17 468 + 473: TypePointer Uniform 467(ubo) + 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 472 27 16 + 475: 473(ptr) Variable Uniform + 476: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 472 40 427 16 43 1 475 171 + 478: TypePointer Uniform 437 + 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 438 27 16 + 484: 11(int) Constant 108 + 486: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 10 40 484 16 85 19 + 495: 11(int) Constant 113 + 505: 11(int) Constant 115 + 512: 11(int) Constant 121 + 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 512 16 101 19 + 516: TypeImage 8(float) 2D sampled format:Unknown + 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 16 40 512 16 43 164 165 17 + 518: TypePointer UniformConstant 516 + 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 517 16 16 +520(textureposition): 518(ptr) Variable UniformConstant + 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 522 517 40 512 16 43 522 520(textureposition) 171 + 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 512 16 43 176 165 17 +525(samplerposition): 177(ptr) Variable UniformConstant + 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 527 524 40 512 16 43 527 525(samplerposition) 171 + 529: TypeSampledImage 516 + 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 185 16 40 512 16 43 186 165 17 + 536: 11(int) Constant 122 + 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 539 75 40 536 16 101 19 +541(textureNormal): 518(ptr) Variable UniformConstant + 542: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 543 517 40 536 16 43 543 541(textureNormal) 171 + 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 536 16 43 176 165 17 +546(samplerNormal): 177(ptr) Variable UniformConstant + 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 545 40 536 16 43 548 546(samplerNormal) 171 + 555: 11(int) Constant 123 + 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 558 20 40 555 16 101 19 +560(textureAlbedo): 518(ptr) Variable UniformConstant + 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 562 517 40 555 16 43 562 560(textureAlbedo) 171 + 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 555 16 43 176 165 17 +565(samplerAlbedo): 177(ptr) Variable UniformConstant + 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 567 564 40 555 16 43 567 565(samplerAlbedo) 171 + 573: 11(int) Constant 128 + 574: TypePointer Uniform 235(int) + 575: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 27 16 + 583: 11(int) Constant 129 + 594: 11(int) Constant 131 + 596: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 40 594 16 101 19 + 598: 74(fvec3) ConstantComposite 115 115 115 + 604: 11(int) Constant 132 + 608: 11(int) Constant 134 + 611: 11(int) Constant 135 + 615: 11(int) Constant 137 + 618: 11(int) Constant 138 + 622: 11(int) Constant 140 + 626: 11(int) Constant 141 + 630: 11(int) Constant 143 + 634: 11(int) Constant 144 + 639: 11(int) Constant 146 + 648: 11(int) Constant 150 + 651: 8(float) Constant 1036831949 + 654: 11(int) Constant 152 + 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 657 75 40 654 16 101 19 + 662: 11(int) Constant 154 + 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 411 237 40 662 16 101 19 + 679: 11(int) Constant 157 + 681: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 682 75 40 679 16 101 19 + 685: TypePointer Uniform 18(fvec4) + 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 27 16 + 693: 11(int) Constant 159 + 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 40 693 16 101 19 + 700: 11(int) Constant 160 + 704: 11(int) Constant 163 + 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 707 75 40 704 16 101 19 + 715: 11(int) Constant 164 + 719: 11(int) Constant 166 + 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 722 10 40 719 16 101 19 + 724: 8(float) Constant 1064781546 + 726: 11(int) Constant 167 + 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 729 10 40 726 16 101 19 + 731: 8(float) Constant 1063781322 + 733: 11(int) Constant 168 + 735: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 736 10 40 733 16 101 19 + 738: 8(float) Constant 1120403456 + 740: 11(int) Constant 171 + 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 743 75 40 740 16 101 19 + 756: 11(int) Constant 174 + 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 759 10 40 756 16 101 19 + 765: 11(int) Constant 175 + 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 768 10 40 765 16 101 19 + 775: 11(int) Constant 176 + 777: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 778 10 40 775 16 101 19 + 784: 11(int) Constant 179 + 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 10 40 784 16 101 19 + 794: 11(int) Constant 180 + 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 797 75 40 794 16 101 19 + 802: 11(int) Constant 183 + 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 805 75 40 802 16 101 19 + 812: 11(int) Constant 184 + 814: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 815 10 40 812 16 101 19 + 822: 11(int) Constant 185 + 824: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 825 75 40 822 16 101 19 + 828: 8(float) Constant 1098907648 + 833: 8(float) Constant 1075838976 + 837: 11(int) Constant 187 + 846: 235(int) Constant 2 + 862: 11(int) Constant 191 + 870: 11(int) Constant 193 + 878: 11(int) Constant 196 + 887: TypePointer Input 26(fvec2) + 888(inUV): 887(ptr) Variable Input + 890: TypePointer Output 18(fvec4) +891(@entryPointOutput): 890(ptr) Variable Output Line 1 119 1 6(main): 4 Function None 5 7: Label - 870(inUV): 26(ptr) Variable Function - 876(param): 26(ptr) Variable Function + 886(inUV): 29(ptr) Variable Function + 892(param): 29(ptr) Variable Function Line 1 119 0 - 873: 23(fvec2) Load 872(inUV) - Store 870(inUV) 873 - 877: 23(fvec2) Load 870(inUV) - Store 876(param) 877 - 878: 18(fvec4) FunctionCall 93(@main(vf2;) 876(param) - Store 875(@entryPointOutput) 878 + 889: 26(fvec2) Load 888(inUV) + Store 886(inUV) 889 + 893: 26(fvec2) Load 886(inUV) + Store 892(param) 893 + 894: 18(fvec4) FunctionCall 98(@main(vf2;) 892(param) + Store 891(@entryPointOutput) 894 Return FunctionEnd Line 1 61 1 -32(textureProj(vf4;f1;vf2;): 8(float) Function None 27 - 29(P): 21(ptr) FunctionParameter - 30(layer): 22(ptr) FunctionParameter - 31(offset): 26(ptr) FunctionParameter - 33: Label - 107(shadow): 22(ptr) Variable Function -113(shadowCoord): 21(ptr) Variable Function - 152(dist): 22(ptr) Variable Function - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 38 38 16 16 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 29(P) 47 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 30(layer) 47 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 31(offset) 47 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 35 32(textureProj(vf4;f1;vf2;) - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 106 106 16 16 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(shadow) 47 - Store 107(shadow) 110 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 112 112 16 16 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 114 113(shadowCoord) 47 - 117: 18(fvec4) Load 29(P) - 118: 22(ptr) AccessChain 29(P) 17 - 119: 8(float) Load 118 - 120: 18(fvec4) CompositeConstruct 119 119 119 119 - 121: 18(fvec4) FDiv 117 120 - Store 113(shadowCoord) 121 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 123 123 16 16 - 124: 18(fvec4) Load 113(shadowCoord) - 125: 23(fvec2) VectorShuffle 124 124 0 1 - 127: 23(fvec2) VectorTimesScalar 125 126 - 128: 23(fvec2) CompositeConstruct 126 126 - 129: 23(fvec2) FAdd 127 128 - 130: 22(ptr) AccessChain 113(shadowCoord) 16 - 131: 8(float) CompositeExtract 129 0 - Store 130 131 - 132: 22(ptr) AccessChain 113(shadowCoord) 40 - 133: 8(float) CompositeExtract 129 1 - Store 132 133 - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 135 135 16 16 - 136: 22(ptr) AccessChain 113(shadowCoord) 24 - 137: 8(float) Load 136 - 142: 139(bool) FOrdGreaterThan 137 138 - 143: 22(ptr) AccessChain 113(shadowCoord) 24 - 144: 8(float) Load 143 - 145: 139(bool) FOrdLessThan 144 110 - 146: 139(bool) LogicalAnd 142 145 - SelectionMerge 148 None - BranchConditional 146 147 148 - 147: Label - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 151 151 16 16 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 153 152(dist) 47 - 166: 156 Load 162(textureShadowMap) - 175: 167 Load 172(samplerShadowMap) - 180: 176 SampledImage 166 175 - 181: 18(fvec4) Load 113(shadowCoord) - 182: 23(fvec2) VectorShuffle 181 181 0 1 - 183: 23(fvec2) Load 31(offset) - 184: 23(fvec2) FAdd 182 183 - 185: 8(float) Load 30(layer) - 186: 8(float) CompositeExtract 184 0 - 187: 8(float) CompositeExtract 184 1 - 188: 70(fvec3) CompositeConstruct 186 187 185 - 189: 18(fvec4) ImageSampleImplicitLod 180 188 - 190: 8(float) CompositeExtract 189 0 - Store 152(dist) 190 - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 192 192 16 16 - 193: 22(ptr) AccessChain 113(shadowCoord) 17 - 194: 8(float) Load 193 - 196: 139(bool) FOrdGreaterThan 194 195 - 197: 8(float) Load 152(dist) - 198: 22(ptr) AccessChain 113(shadowCoord) 24 - 199: 8(float) Load 198 - 200: 139(bool) FOrdLessThan 197 199 - 201: 139(bool) LogicalAnd 196 200 - SelectionMerge 203 None - BranchConditional 201 202 203 - 202: Label - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 206 206 16 16 - Store 107(shadow) 207 - Branch 203 - 203: Label - Branch 148 - 148: Label - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 35 - 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 210 210 16 16 - 211: 8(float) Load 107(shadow) - ReturnValue 211 +36(textureProj(vf4;f1;vf2;): 8(float) Function None 31 + 33(P): 21(ptr) FunctionParameter + 34(layer): 24(ptr) FunctionParameter + 35(offset): 29(ptr) FunctionParameter + 37: Label + 112(shadow): 24(ptr) Variable Function +118(shadowCoord): 21(ptr) Variable Function + 157(dist): 24(ptr) Variable Function + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 42 42 16 16 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 33(P) 51 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 34(layer) 51 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 35(offset) 51 + 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(textureProj(vf4;f1;vf2;) + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 111 111 16 16 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(shadow) 51 + Store 112(shadow) 115 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 117 117 16 16 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(shadowCoord) 51 + 122: 18(fvec4) Load 33(P) + 123: 24(ptr) AccessChain 33(P) 17 + 124: 8(float) Load 123 + 125: 18(fvec4) CompositeConstruct 124 124 124 124 + 126: 18(fvec4) FDiv 122 125 + Store 118(shadowCoord) 126 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 128 128 16 16 + 129: 18(fvec4) Load 118(shadowCoord) + 130: 26(fvec2) VectorShuffle 129 129 0 1 + 132: 26(fvec2) VectorTimesScalar 130 131 + 133: 26(fvec2) CompositeConstruct 131 131 + 134: 26(fvec2) FAdd 132 133 + 135: 24(ptr) AccessChain 118(shadowCoord) 16 + 136: 8(float) CompositeExtract 134 0 + Store 135 136 + 137: 24(ptr) AccessChain 118(shadowCoord) 44 + 138: 8(float) CompositeExtract 134 1 + Store 137 138 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 140 140 16 16 + 141: 24(ptr) AccessChain 118(shadowCoord) 27 + 142: 8(float) Load 141 + 147: 144(bool) FOrdGreaterThan 142 143 + 148: 24(ptr) AccessChain 118(shadowCoord) 27 + 149: 8(float) Load 148 + 150: 144(bool) FOrdLessThan 149 115 + 151: 144(bool) LogicalAnd 147 150 + SelectionMerge 153 None + BranchConditional 151 152 153 + 152: Label + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 156 156 16 16 + 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(dist) 51 + 172: 161 Load 168(textureShadowMap) + 182: 173 Load 179(samplerShadowMap) + 187: 183 SampledImage 172 182 + 188: 18(fvec4) Load 118(shadowCoord) + 189: 26(fvec2) VectorShuffle 188 188 0 1 + 190: 26(fvec2) Load 35(offset) + 191: 26(fvec2) FAdd 189 190 + 192: 8(float) Load 34(layer) + 193: 8(float) CompositeExtract 191 0 + 194: 8(float) CompositeExtract 191 1 + 195: 74(fvec3) CompositeConstruct 193 194 192 + 196: 18(fvec4) ImageSampleImplicitLod 187 195 + 197: 8(float) CompositeExtract 196 0 + Store 157(dist) 197 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 199 199 16 16 + 200: 24(ptr) AccessChain 118(shadowCoord) 17 + 201: 8(float) Load 200 + 203: 144(bool) FOrdGreaterThan 201 202 + 204: 8(float) Load 157(dist) + 205: 24(ptr) AccessChain 118(shadowCoord) 27 + 206: 8(float) Load 205 + 207: 144(bool) FOrdLessThan 204 206 + 208: 144(bool) LogicalAnd 203 207 + SelectionMerge 210 None + BranchConditional 208 209 210 + 209: Label + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 213 213 16 16 + Store 112(shadow) 214 + Branch 210 + 210: Label + Branch 153 + 153: Label + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 217 217 16 16 + 218: 8(float) Load 112(shadow) + ReturnValue 218 FunctionEnd Line 1 78 1 -58(filterPCF(vf4;f1;): 8(float) Function None 54 - 56(sc): 21(ptr) FunctionParameter - 57(layer): 22(ptr) FunctionParameter - 59: Label -221(sizeQueryTemp): 220(ptr) Variable Function - 233(texDim): 232(ptr) Variable Function - 247(elements): 241(ptr) Variable Function - 254(levels): 241(ptr) Variable Function - 263(scale): 22(ptr) Variable Function - 270(dx): 22(ptr) Variable Function - 282(dy): 22(ptr) Variable Function -294(shadowFactor): 22(ptr) Variable Function - 300(count): 241(ptr) Variable Function - 307(range): 241(ptr) Variable Function - 314(x): 241(ptr) Variable Function - 335(y): 241(ptr) Variable Function - 365(param): 21(ptr) Variable Function - 367(param): 22(ptr) Variable Function - 369(param): 26(ptr) Variable Function - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 62 62 16 16 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 65 56(sc) 47 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 57(layer) 47 - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 61 58(filterPCF(vf4;f1;) - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 217 217 16 16 - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(sizeQueryTemp) 47 - 225: 156 Load 162(textureShadowMap) - 226: 218(ivec3) ImageQuerySizeLod 225 16 - Store 221(sizeQueryTemp) 226 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 234 233(texDim) 47 - 238: 237(ptr) AccessChain 221(sizeQueryTemp) 16 - 239: 11(int) Load 238 - 240: 227(int) Bitcast 239 - 242: 241(ptr) AccessChain 233(texDim) 16 - Store 242 240 - 243: 237(ptr) AccessChain 221(sizeQueryTemp) 40 - 244: 11(int) Load 243 - 245: 227(int) Bitcast 244 - 246: 241(ptr) AccessChain 233(texDim) 40 - Store 246 245 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(elements) 47 - 251: 237(ptr) AccessChain 221(sizeQueryTemp) 24 - 252: 11(int) Load 251 - 253: 227(int) Bitcast 252 - Store 247(elements) 253 - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(levels) 47 - 258: 156 Load 162(textureShadowMap) - 259: 11(int) ImageQueryLevels 258 - 260: 227(int) Bitcast 259 - Store 254(levels) 260 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 262 262 16 16 - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 264 263(scale) 47 - Store 263(scale) 267 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 269 269 16 16 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(dx) 47 - 274: 8(float) Load 263(scale) - 275: 8(float) FMul 274 110 - 276: 241(ptr) AccessChain 233(texDim) 16 - 277: 227(int) Load 276 - 278: 8(float) ConvertSToF 277 - 279: 8(float) FDiv 275 278 - Store 270(dx) 279 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 281 281 16 16 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(dy) 47 - 286: 8(float) Load 263(scale) - 287: 8(float) FMul 286 110 - 288: 241(ptr) AccessChain 233(texDim) 40 - 289: 227(int) Load 288 - 290: 8(float) ConvertSToF 289 - 291: 8(float) FDiv 287 290 - Store 282(dy) 291 - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 293 293 16 16 - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 295 294(shadowFactor) 47 - Store 294(shadowFactor) 195 - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 299 299 16 16 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 301 300(count) 47 - Store 300(count) 304 - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 306 306 16 16 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 308 307(range) 47 - Store 307(range) 311 - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(x) 47 - 318: 227(int) Load 307(range) - 319: 227(int) SNegate 318 - Store 314(x) 319 - Branch 320 - 320: Label - 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 - LoopMerge 322 323 None - Branch 326 - 326: Label - 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 - 329: 227(int) Load 314(x) - 330: 227(int) Load 307(range) - 331: 139(bool) SLessThanEqual 329 330 - BranchConditional 331 321 322 - 321: Label - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 - 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 336 335(y) 47 - 339: 227(int) Load 307(range) - 340: 227(int) SNegate 339 - Store 335(y) 340 - Branch 341 - 341: Label - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 - LoopMerge 343 344 None - Branch 347 - 347: Label - 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 - 350: 227(int) Load 335(y) - 351: 227(int) Load 307(range) - 352: 139(bool) SLessThanEqual 350 351 - BranchConditional 352 342 343 - 342: Label - 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 355 355 16 16 - 356: 8(float) Load 270(dx) - 357: 227(int) Load 314(x) - 358: 8(float) ConvertSToF 357 - 359: 8(float) FMul 356 358 - 360: 8(float) Load 282(dy) - 361: 227(int) Load 335(y) - 362: 8(float) ConvertSToF 361 - 363: 8(float) FMul 360 362 - 364: 23(fvec2) CompositeConstruct 359 363 - 366: 18(fvec4) Load 56(sc) - Store 365(param) 366 - 368: 8(float) Load 57(layer) - Store 367(param) 368 - Store 369(param) 364 - 370: 8(float) FunctionCall 32(textureProj(vf4;f1;vf2;) 365(param) 367(param) 369(param) - 371: 8(float) Load 294(shadowFactor) - 372: 8(float) FAdd 371 370 - Store 294(shadowFactor) 372 - 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 374 374 16 16 - 375: 227(int) Load 300(count) - 376: 227(int) IAdd 375 311 - Store 300(count) 376 - Branch 344 - 344: Label - 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 334 334 16 16 - 379: 227(int) Load 335(y) - 380: 227(int) IAdd 379 311 - Store 335(y) 380 - Branch 341 - 343: Label - Branch 323 - 323: Label - 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 382: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 313 313 16 16 - 383: 227(int) Load 314(x) - 384: 227(int) IAdd 383 311 - Store 314(x) 384 - Branch 320 - 322: Label - 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 61 - 386: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 387 387 16 16 - 388: 8(float) Load 294(shadowFactor) - 389: 227(int) Load 300(count) - 390: 8(float) ConvertSToF 389 - 391: 8(float) FDiv 388 390 - ReturnValue 391 +62(filterPCF(vf4;f1;): 8(float) Function None 58 + 60(sc): 21(ptr) FunctionParameter + 61(layer): 24(ptr) FunctionParameter + 63: Label +229(sizeQueryTemp): 227(ptr) Variable Function + 242(texDim): 240(ptr) Variable Function + 258(elements): 251(ptr) Variable Function + 265(levels): 251(ptr) Variable Function + 274(scale): 24(ptr) Variable Function + 281(dx): 24(ptr) Variable Function + 293(dy): 24(ptr) Variable Function +305(shadowFactor): 24(ptr) Variable Function + 311(count): 251(ptr) Variable Function + 318(range): 251(ptr) Variable Function + 325(x): 251(ptr) Variable Function + 346(y): 251(ptr) Variable Function + 376(param): 21(ptr) Variable Function + 378(param): 24(ptr) Variable Function + 380(param): 29(ptr) Variable Function + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 66 66 16 16 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 60(sc) 51 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 51 + 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 224 224 16 16 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 230 229(sizeQueryTemp) 51 + 233: 161 Load 168(textureShadowMap) + 234: 225(ivec3) ImageQuerySizeLod 233 16 + Store 229(sizeQueryTemp) 234 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(texDim) 51 + 248: 246(ptr) AccessChain 229(sizeQueryTemp) 16 + 249: 11(int) Load 248 + 250: 235(int) Bitcast 249 + 253: 251(ptr) AccessChain 242(texDim) 16 + Store 253 250 + 254: 246(ptr) AccessChain 229(sizeQueryTemp) 44 + 255: 11(int) Load 254 + 256: 235(int) Bitcast 255 + 257: 251(ptr) AccessChain 242(texDim) 44 + Store 257 256 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 259 258(elements) 51 + 262: 246(ptr) AccessChain 229(sizeQueryTemp) 27 + 263: 11(int) Load 262 + 264: 235(int) Bitcast 263 + Store 258(elements) 264 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 266 265(levels) 51 + 269: 161 Load 168(textureShadowMap) + 270: 11(int) ImageQueryLevels 269 + 271: 235(int) Bitcast 270 + Store 265(levels) 271 + 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 273 273 16 16 + 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 275 274(scale) 51 + Store 274(scale) 278 + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 280 280 16 16 + 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 282 281(dx) 51 + 285: 8(float) Load 274(scale) + 286: 8(float) FMul 285 115 + 287: 251(ptr) AccessChain 242(texDim) 16 + 288: 235(int) Load 287 + 289: 8(float) ConvertSToF 288 + 290: 8(float) FDiv 286 289 + Store 281(dx) 290 + 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 292 292 16 16 + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 294 293(dy) 51 + 297: 8(float) Load 274(scale) + 298: 8(float) FMul 297 115 + 299: 251(ptr) AccessChain 242(texDim) 44 + 300: 235(int) Load 299 + 301: 8(float) ConvertSToF 300 + 302: 8(float) FDiv 298 301 + Store 293(dy) 302 + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 304 304 16 16 + 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 306 305(shadowFactor) 51 + Store 305(shadowFactor) 202 + 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 310 310 16 16 + 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 312 311(count) 51 + Store 311(count) 315 + 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 317 317 16 16 + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 319 318(range) 51 + Store 318(range) 322 + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 326 325(x) 51 + 329: 235(int) Load 318(range) + 330: 235(int) SNegate 329 + Store 325(x) 330 + Branch 331 + 331: Label + 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + LoopMerge 333 334 None + Branch 337 + 337: Label + 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + 340: 235(int) Load 325(x) + 341: 235(int) Load 318(range) + 342: 144(bool) SLessThanEqual 340 341 + BranchConditional 342 332 333 + 332: Label + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 + 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 347 346(y) 51 + 350: 235(int) Load 318(range) + 351: 235(int) SNegate 350 + Store 346(y) 351 + Branch 352 + 352: Label + 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 + LoopMerge 354 355 None + Branch 358 + 358: Label + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 + 361: 235(int) Load 346(y) + 362: 235(int) Load 318(range) + 363: 144(bool) SLessThanEqual 361 362 + BranchConditional 363 353 354 + 353: Label + 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 366 366 16 16 + 367: 8(float) Load 281(dx) + 368: 235(int) Load 325(x) + 369: 8(float) ConvertSToF 368 + 370: 8(float) FMul 367 369 + 371: 8(float) Load 293(dy) + 372: 235(int) Load 346(y) + 373: 8(float) ConvertSToF 372 + 374: 8(float) FMul 371 373 + 375: 26(fvec2) CompositeConstruct 370 374 + 377: 18(fvec4) Load 60(sc) + Store 376(param) 377 + 379: 8(float) Load 61(layer) + Store 378(param) 379 + Store 380(param) 375 + 381: 8(float) FunctionCall 36(textureProj(vf4;f1;vf2;) 376(param) 378(param) 380(param) + 382: 8(float) Load 305(shadowFactor) + 383: 8(float) FAdd 382 381 + Store 305(shadowFactor) 383 + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 385 385 16 16 + 386: 235(int) Load 311(count) + 387: 235(int) IAdd 386 322 + Store 311(count) 387 + Branch 355 + 355: Label + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 + 390: 235(int) Load 346(y) + 391: 235(int) IAdd 390 322 + Store 346(y) 391 + Branch 352 + 354: Label + Branch 334 + 334: Label + 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + 394: 235(int) Load 325(x) + 395: 235(int) IAdd 394 322 + Store 325(x) 395 + Branch 331 + 333: Label + 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 398 398 16 16 + 399: 8(float) Load 305(shadowFactor) + 400: 235(int) Load 311(count) + 401: 8(float) ConvertSToF 400 + 402: 8(float) FDiv 399 401 + ReturnValue 402 FunctionEnd Line 1 101 49 -77(shadow(vf3;vf3;): 70(fvec3) Function None 73 - 75(fragcolor): 72(ptr) FunctionParameter - 76(fragPos): 72(ptr) FunctionParameter - 78: Label - 398(i): 241(ptr) Variable Function - 417(shadowClip): 21(ptr) Variable Function -472(shadowFactor): 22(ptr) Variable Function - 477(param): 21(ptr) Variable Function - 479(param): 22(ptr) Variable Function - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 81 81 16 16 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 75(fragcolor) 47 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 76(fragPos) 47 - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(shadow(vf3;vf3;) - 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 - 401: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 399 398(i) 47 - Store 398(i) 304 - Branch 402 - 402: Label - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 - LoopMerge 404 405 None - Branch 408 - 408: Label - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 - 411: 227(int) Load 398(i) - 413: 139(bool) SLessThan 411 412 - BranchConditional 413 403 404 - 403: Label - 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 416 416 16 16 - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 418 417(shadowClip) 47 - 421: 70(fvec3) Load 76(fragPos) - 422: 8(float) CompositeExtract 421 0 - 423: 8(float) CompositeExtract 421 1 - 424: 8(float) CompositeExtract 421 2 - 425: 18(fvec4) CompositeConstruct 422 423 424 110 - 465: 227(int) Load 398(i) - 467: 466(ptr) AccessChain 463 304 311 465 412 - 468: 426 Load 467 - 469: 18(fvec4) VectorTimesMatrix 425 468 - Store 417(shadowClip) 469 - 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 471 471 16 16 - 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 473 472(shadowFactor) 47 - 475: 227(int) Load 398(i) - 476: 8(float) ConvertSToF 475 - 478: 18(fvec4) Load 417(shadowClip) - Store 477(param) 478 - Store 479(param) 476 - 480: 8(float) FunctionCall 58(filterPCF(vf4;f1;) 477(param) 479(param) - Store 472(shadowFactor) 480 - 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 482 482 16 16 - 483: 8(float) Load 472(shadowFactor) - 484: 70(fvec3) Load 75(fragcolor) - 485: 70(fvec3) VectorTimesScalar 484 483 - Store 75(fragcolor) 485 - Branch 405 - 405: Label - 486: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 397 397 16 16 - 488: 227(int) Load 398(i) - 489: 227(int) IAdd 488 311 - Store 398(i) 489 - Branch 402 - 404: Label - 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 492 492 16 16 - 493: 70(fvec3) Load 75(fragcolor) - ReturnValue 493 +82(shadow(vf3;vf3;): 74(fvec3) Function None 78 + 80(fragcolor): 76(ptr) FunctionParameter + 81(fragPos): 76(ptr) FunctionParameter + 83: Label + 409(i): 251(ptr) Variable Function + 428(shadowClip): 21(ptr) Variable Function +485(shadowFactor): 24(ptr) Variable Function + 490(param): 21(ptr) Variable Function + 492(param): 24(ptr) Variable Function + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 86 86 16 16 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 80(fragcolor) 51 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragPos) 51 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 410 409(i) 51 + Store 409(i) 315 + Branch 413 + 413: Label + 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 + LoopMerge 415 416 None + Branch 419 + 419: Label + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 + 422: 235(int) Load 409(i) + 424: 144(bool) SLessThan 422 423 + BranchConditional 424 414 415 + 414: Label + 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 427 427 16 16 + 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 429 428(shadowClip) 51 + 432: 74(fvec3) Load 81(fragPos) + 433: 8(float) CompositeExtract 432 0 + 434: 8(float) CompositeExtract 432 1 + 435: 8(float) CompositeExtract 432 2 + 436: 18(fvec4) CompositeConstruct 433 434 435 115 + 477: 235(int) Load 409(i) + 480: 478(ptr) AccessChain 475 315 322 477 423 + 481: 437 Load 480 + 482: 18(fvec4) VectorTimesMatrix 436 481 + Store 428(shadowClip) 482 + 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 484 484 16 16 + 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 486 485(shadowFactor) 51 + 488: 235(int) Load 409(i) + 489: 8(float) ConvertSToF 488 + 491: 18(fvec4) Load 428(shadowClip) + Store 490(param) 491 + Store 492(param) 489 + 493: 8(float) FunctionCall 62(filterPCF(vf4;f1;) 490(param) 492(param) + Store 485(shadowFactor) 493 + 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 495 495 16 16 + 496: 8(float) Load 485(shadowFactor) + 497: 74(fvec3) Load 80(fragcolor) + 498: 74(fvec3) VectorTimesScalar 497 496 + Store 80(fragcolor) 498 + Branch 416 + 416: Label + 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 + 501: 235(int) Load 409(i) + 502: 235(int) IAdd 501 322 + Store 409(i) 502 + Branch 413 + 415: Label + 503: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 505 505 16 16 + 506: 74(fvec3) Load 80(fragcolor) + ReturnValue 506 FunctionEnd Line 1 119 1 - 93(@main(vf2;): 18(fvec4) Function None 90 - 92(inUV): 26(ptr) FunctionParameter - 94: Label - 500(fragPos): 72(ptr) Variable Function - 523(normal): 72(ptr) Variable Function - 542(albedo): 21(ptr) Variable Function - 580(fragcolor): 72(ptr) Variable Function - 584(param): 72(ptr) Variable Function - 585(param): 72(ptr) Variable Function - 640(N): 72(ptr) Variable Function - 648(i): 241(ptr) Variable Function - 665(L): 72(ptr) Variable Function - 678(dist): 22(ptr) Variable Function - 689(V): 72(ptr) Variable Function -704(lightCosInnerAngle): 22(ptr) Variable Function -711(lightCosOuterAngle): 22(ptr) Variable Function - 718(lightRange): 22(ptr) Variable Function - 725(dir): 72(ptr) Variable Function - 741(cosDir): 22(ptr) Variable Function - 750(spotEffect): 22(ptr) Variable Function -760(heightAttenuation): 22(ptr) Variable Function - 769(NdotL): 22(ptr) Variable Function - 779(diff): 72(ptr) Variable Function - 787(R): 72(ptr) Variable Function - 797(NdotR): 22(ptr) Variable Function - 807(spec): 72(ptr) Variable Function - 855(param): 72(ptr) Variable Function - 857(param): 72(ptr) Variable Function - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 97 97 16 16 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 100 92(inUV) 47 - 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 93(@main(vf2;) - 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 498: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 499 499 16 16 - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 501 500(fragPos) 47 - 509: 503 Load 506(textureposition) - 514: 167 Load 511(samplerposition) - 517: 515 SampledImage 509 514 - 518: 23(fvec2) Load 92(inUV) - 519: 18(fvec4) ImageSampleImplicitLod 517 518 - 520: 70(fvec3) VectorShuffle 519 519 0 1 2 - Store 500(fragPos) 520 - 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 522 522 16 16 - 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 524 523(normal) 47 - 530: 503 Load 527(textureNormal) - 535: 167 Load 532(samplerNormal) - 536: 515 SampledImage 530 535 - 537: 23(fvec2) Load 92(inUV) - 538: 18(fvec4) ImageSampleImplicitLod 536 537 - 539: 70(fvec3) VectorShuffle 538 538 0 1 2 - Store 523(normal) 539 - 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 541 541 16 16 - 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 543 542(albedo) 47 - 549: 503 Load 546(textureAlbedo) - 554: 167 Load 551(samplerAlbedo) - 555: 515 SampledImage 549 554 - 556: 23(fvec2) Load 92(inUV) - 557: 18(fvec4) ImageSampleImplicitLod 555 556 - Store 542(albedo) 557 - 558: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 559 559 16 16 - 561: 560(ptr) AccessChain 463 304 412 - 562: 227(int) Load 561 - 563: 139(bool) SGreaterThan 562 304 - SelectionMerge 565 None - BranchConditional 563 564 565 - 564: Label - 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 568 568 16 16 - 569: 560(ptr) AccessChain 463 304 412 - 570: 227(int) Load 569 - SelectionMerge 576 None - Switch 570 576 - case 1: 571 - case 2: 572 - case 3: 573 - case 4: 574 - case 5: 575 - 571: Label - 577: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 579 579 16 16 - 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 581 580(fragcolor) 47 - Store 584(param) 583 - 586: 70(fvec3) Load 500(fragPos) - Store 585(param) 586 - 587: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 584(param) 585(param) - Store 580(fragcolor) 587 - 588: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 589 589 16 16 - Branch 576 - 572: Label - 591: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 593 593 16 16 - 594: 70(fvec3) Load 500(fragPos) - Store 580(fragcolor) 594 - 595: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 596 596 16 16 - Branch 576 - 573: Label - 598: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 599: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 600 600 16 16 - 601: 70(fvec3) Load 523(normal) - Store 580(fragcolor) 601 - 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 603 603 16 16 - Branch 576 - 574: Label - 605: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 607 607 16 16 - 608: 18(fvec4) Load 542(albedo) - 609: 70(fvec3) VectorShuffle 608 608 0 1 2 - Store 580(fragcolor) 609 - 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 611 611 16 16 - Branch 576 - 575: Label - 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 615 615 16 16 - 616: 18(fvec4) Load 542(albedo) - 617: 70(fvec3) VectorShuffle 616 616 3 3 3 - Store 580(fragcolor) 617 - 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 619 619 16 16 - Branch 576 - 576: Label - 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 624 624 16 16 - 625: 70(fvec3) Load 580(fragcolor) - 626: 8(float) CompositeExtract 625 0 - 627: 8(float) CompositeExtract 625 1 - 628: 8(float) CompositeExtract 625 2 - 629: 18(fvec4) CompositeConstruct 626 627 628 110 - ReturnValue 629 - 565: Label - 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 632: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 633 633 16 16 - 634: 18(fvec4) Load 542(albedo) - 635: 70(fvec3) VectorShuffle 634 634 0 1 2 - 637: 70(fvec3) VectorTimesScalar 635 636 - Store 580(fragcolor) 637 - 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 639 639 16 16 - 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 641 640(N) 47 - 644: 70(fvec3) Load 523(normal) - 645: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 644 - Store 640(N) 645 - 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 - 650: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 649 648(i) 47 - Store 648(i) 304 - Branch 651 - 651: Label - 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 - LoopMerge 653 654 None - Branch 657 - 657: Label - 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 - 660: 227(int) Load 648(i) - 661: 139(bool) SLessThan 660 412 - BranchConditional 661 652 653 - 652: Label - 662: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 664 664 16 16 - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 666 665(L) 47 - 669: 227(int) Load 648(i) - 671: 670(ptr) AccessChain 463 304 311 669 304 - 672: 18(fvec4) Load 671 - 673: 70(fvec3) VectorShuffle 672 672 0 1 2 - 674: 70(fvec3) Load 500(fragPos) - 675: 70(fvec3) FSub 673 674 - Store 665(L) 675 - 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 677 677 16 16 - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 679 678(dist) 47 - 681: 70(fvec3) Load 665(L) - 682: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 681 - Store 678(dist) 682 - 683: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 684 684 16 16 - 685: 70(fvec3) Load 665(L) - 686: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 685 - Store 665(L) 686 - 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 688 688 16 16 - 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 690 689(V) 47 - 693: 670(ptr) AccessChain 463 304 304 - 694: 18(fvec4) Load 693 - 695: 70(fvec3) VectorShuffle 694 694 0 1 2 - 696: 70(fvec3) Load 500(fragPos) - 697: 70(fvec3) FSub 695 696 - Store 689(V) 697 - 698: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 699 699 16 16 - 700: 70(fvec3) Load 689(V) - 701: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 700 - Store 689(V) 701 - 702: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 703 703 16 16 - 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 705 704(lightCosInnerAngle) 47 - Store 704(lightCosInnerAngle) 708 - 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 710 710 16 16 - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(lightCosOuterAngle) 47 - Store 711(lightCosOuterAngle) 715 - 716: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 717 717 16 16 - 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 719 718(lightRange) 47 - Store 718(lightRange) 722 - 723: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 724 724 16 16 - 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(dir) 47 - 729: 227(int) Load 648(i) - 730: 670(ptr) AccessChain 463 304 311 729 304 - 731: 18(fvec4) Load 730 - 732: 70(fvec3) VectorShuffle 731 731 0 1 2 - 733: 227(int) Load 648(i) - 734: 670(ptr) AccessChain 463 304 311 733 311 - 735: 18(fvec4) Load 734 - 736: 70(fvec3) VectorShuffle 735 735 0 1 2 - 737: 70(fvec3) FSub 732 736 - 738: 70(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 737 - Store 725(dir) 738 - 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 740 740 16 16 - 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 742 741(cosDir) 47 - 745: 70(fvec3) Load 665(L) - 746: 70(fvec3) Load 725(dir) - 747: 8(float) Dot 745 746 - Store 741(cosDir) 747 - 748: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 749 749 16 16 - 753: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 751 750(spotEffect) 47 - 754: 8(float) Load 711(lightCosOuterAngle) - 755: 8(float) Load 704(lightCosInnerAngle) - 756: 8(float) Load 741(cosDir) - 757: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 754 755 756 - Store 750(spotEffect) 757 - 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 759 759 16 16 - 763: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 761 760(heightAttenuation) 47 - 764: 8(float) Load 718(lightRange) - 765: 8(float) Load 678(dist) - 766: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 764 195 765 - Store 760(heightAttenuation) 766 - 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 768 768 16 16 - 772: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 770 769(NdotL) 47 - 773: 70(fvec3) Load 640(N) - 774: 70(fvec3) Load 665(L) - 775: 8(float) Dot 773 774 - 776: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 775 - Store 769(NdotL) 776 - 777: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 778 778 16 16 - 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 780 779(diff) 47 - 783: 8(float) Load 769(NdotL) - 784: 70(fvec3) CompositeConstruct 783 783 783 - Store 779(diff) 784 - 785: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 786 786 16 16 - 790: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 788 787(R) 47 - 791: 70(fvec3) Load 665(L) - 792: 70(fvec3) FNegate 791 - 793: 70(fvec3) Load 640(N) - 794: 70(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 792 793 - Store 787(R) 794 - 795: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 796 796 16 16 - 800: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 798 797(NdotR) 47 - 801: 70(fvec3) Load 787(R) - 802: 70(fvec3) Load 689(V) - 803: 8(float) Dot 801 802 - 804: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 803 - Store 797(NdotR) 804 - 805: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 806 806 16 16 - 810: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 808 807(spec) 47 - 811: 8(float) Load 797(NdotR) - 813: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 811 812 - 814: 22(ptr) AccessChain 542(albedo) 17 - 815: 8(float) Load 814 - 816: 8(float) FMul 813 815 - 818: 8(float) FMul 816 817 - 819: 70(fvec3) CompositeConstruct 818 818 818 - Store 807(spec) 819 - 820: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 821 821 16 16 - 822: 70(fvec3) Load 779(diff) - 823: 70(fvec3) Load 807(spec) - 824: 70(fvec3) FAdd 822 823 - 825: 8(float) Load 750(spotEffect) - 826: 70(fvec3) VectorTimesScalar 824 825 - 827: 8(float) Load 760(heightAttenuation) - 828: 70(fvec3) VectorTimesScalar 826 827 - 829: 227(int) Load 648(i) - 831: 670(ptr) AccessChain 463 304 311 829 830 - 832: 18(fvec4) Load 831 - 833: 70(fvec3) VectorShuffle 832 832 0 1 2 - 834: 70(fvec3) FMul 828 833 - 835: 18(fvec4) Load 542(albedo) - 836: 70(fvec3) VectorShuffle 835 835 0 1 2 - 837: 70(fvec3) FMul 834 836 - 838: 70(fvec3) Load 580(fragcolor) - 839: 70(fvec3) FAdd 838 837 - Store 580(fragcolor) 839 - Branch 654 - 654: Label - 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 841: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 647 647 16 16 - 842: 227(int) Load 648(i) - 843: 227(int) IAdd 842 311 - Store 648(i) 843 - Branch 651 - 653: Label - 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 846 846 16 16 - 847: 560(ptr) AccessChain 463 304 830 - 848: 227(int) Load 847 - 849: 139(bool) SGreaterThan 848 304 - SelectionMerge 851 None - BranchConditional 849 850 851 - 850: Label - 852: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 853: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 854 854 16 16 - 856: 70(fvec3) Load 580(fragcolor) - Store 855(param) 856 - 858: 70(fvec3) Load 500(fragPos) - Store 857(param) 858 - 859: 70(fvec3) FunctionCall 77(shadow(vf3;vf3;) 855(param) 857(param) - Store 580(fragcolor) 859 - Branch 851 - 851: Label - 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 861: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 36 862 862 16 16 - 863: 70(fvec3) Load 580(fragcolor) - 864: 8(float) CompositeExtract 863 0 - 865: 8(float) CompositeExtract 863 1 - 866: 8(float) CompositeExtract 863 2 - 867: 18(fvec4) CompositeConstruct 864 865 866 110 - ReturnValue 867 + 98(@main(vf2;): 18(fvec4) Function None 95 + 97(inUV): 29(ptr) FunctionParameter + 99: Label + 513(fragPos): 76(ptr) Variable Function + 537(normal): 76(ptr) Variable Function + 556(albedo): 21(ptr) Variable Function + 595(fragcolor): 76(ptr) Variable Function + 599(param): 76(ptr) Variable Function + 600(param): 76(ptr) Variable Function + 655(N): 76(ptr) Variable Function + 663(i): 251(ptr) Variable Function + 680(L): 76(ptr) Variable Function + 694(dist): 24(ptr) Variable Function + 705(V): 76(ptr) Variable Function +720(lightCosInnerAngle): 24(ptr) Variable Function +727(lightCosOuterAngle): 24(ptr) Variable Function + 734(lightRange): 24(ptr) Variable Function + 741(dir): 76(ptr) Variable Function + 757(cosDir): 24(ptr) Variable Function + 766(spotEffect): 24(ptr) Variable Function +776(heightAttenuation): 24(ptr) Variable Function + 785(NdotL): 24(ptr) Variable Function + 795(diff): 76(ptr) Variable Function + 803(R): 76(ptr) Variable Function + 813(NdotR): 24(ptr) Variable Function + 823(spec): 76(ptr) Variable Function + 871(param): 76(ptr) Variable Function + 873(param): 76(ptr) Variable Function + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 102 102 16 16 + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 105 97(inUV) 51 + 509: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 101 98(@main(vf2;) + 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 511: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 512 512 16 16 + 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 514 513(fragPos) 51 + 523: 516 Load 520(textureposition) + 528: 173 Load 525(samplerposition) + 531: 529 SampledImage 523 528 + 532: 26(fvec2) Load 97(inUV) + 533: 18(fvec4) ImageSampleImplicitLod 531 532 + 534: 74(fvec3) VectorShuffle 533 533 0 1 2 + Store 513(fragPos) 534 + 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 536 536 16 16 + 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 538 537(normal) 51 + 544: 516 Load 541(textureNormal) + 549: 173 Load 546(samplerNormal) + 550: 529 SampledImage 544 549 + 551: 26(fvec2) Load 97(inUV) + 552: 18(fvec4) ImageSampleImplicitLod 550 551 + 553: 74(fvec3) VectorShuffle 552 552 0 1 2 + Store 537(normal) 553 + 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 555 555 16 16 + 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 557 556(albedo) 51 + 563: 516 Load 560(textureAlbedo) + 568: 173 Load 565(samplerAlbedo) + 569: 529 SampledImage 563 568 + 570: 26(fvec2) Load 97(inUV) + 571: 18(fvec4) ImageSampleImplicitLod 569 570 + Store 556(albedo) 571 + 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 573 573 16 16 + 576: 574(ptr) AccessChain 475 315 423 + 577: 235(int) Load 576 + 578: 144(bool) SGreaterThan 577 315 + SelectionMerge 580 None + BranchConditional 578 579 580 + 579: Label + 581: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 583 583 16 16 + 584: 574(ptr) AccessChain 475 315 423 + 585: 235(int) Load 584 + SelectionMerge 591 None + Switch 585 591 + case 1: 586 + case 2: 587 + case 3: 588 + case 4: 589 + case 5: 590 + 586: Label + 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 593: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 594 594 16 16 + 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 596 595(fragcolor) 51 + Store 599(param) 598 + 601: 74(fvec3) Load 513(fragPos) + Store 600(param) 601 + 602: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 599(param) 600(param) + Store 595(fragcolor) 602 + 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 604 604 16 16 + Branch 591 + 587: Label + 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 608 608 16 16 + 609: 74(fvec3) Load 513(fragPos) + Store 595(fragcolor) 609 + 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 611 611 16 16 + Branch 591 + 588: Label + 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 615 615 16 16 + 616: 74(fvec3) Load 537(normal) + Store 595(fragcolor) 616 + 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 618 618 16 16 + Branch 591 + 589: Label + 620: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 622 622 16 16 + 623: 18(fvec4) Load 556(albedo) + 624: 74(fvec3) VectorShuffle 623 623 0 1 2 + Store 595(fragcolor) 624 + 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 626 626 16 16 + Branch 591 + 590: Label + 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 629: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 630 630 16 16 + 631: 18(fvec4) Load 556(albedo) + 632: 74(fvec3) VectorShuffle 631 631 3 3 3 + Store 595(fragcolor) 632 + 633: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 634 634 16 16 + Branch 591 + 591: Label + 637: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 639 639 16 16 + 640: 74(fvec3) Load 595(fragcolor) + 641: 8(float) CompositeExtract 640 0 + 642: 8(float) CompositeExtract 640 1 + 643: 8(float) CompositeExtract 640 2 + 644: 18(fvec4) CompositeConstruct 641 642 643 115 + ReturnValue 644 + 580: Label + 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 648 648 16 16 + 649: 18(fvec4) Load 556(albedo) + 650: 74(fvec3) VectorShuffle 649 649 0 1 2 + 652: 74(fvec3) VectorTimesScalar 650 651 + Store 595(fragcolor) 652 + 653: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 654 654 16 16 + 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 656 655(N) 51 + 659: 74(fvec3) Load 537(normal) + 660: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 659 + Store 655(N) 660 + 661: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 + 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 664 663(i) 51 + Store 663(i) 315 + Branch 666 + 666: Label + 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 671: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 + LoopMerge 668 669 None + Branch 672 + 672: Label + 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 + 675: 235(int) Load 663(i) + 676: 144(bool) SLessThan 675 423 + BranchConditional 676 667 668 + 667: Label + 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 679 679 16 16 + 683: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 681 680(L) 51 + 684: 235(int) Load 663(i) + 687: 685(ptr) AccessChain 475 315 322 684 315 + 688: 18(fvec4) Load 687 + 689: 74(fvec3) VectorShuffle 688 688 0 1 2 + 690: 74(fvec3) Load 513(fragPos) + 691: 74(fvec3) FSub 689 690 + Store 680(L) 691 + 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 693 693 16 16 + 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 695 694(dist) 51 + 697: 74(fvec3) Load 680(L) + 698: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 697 + Store 694(dist) 698 + 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 700 700 16 16 + 701: 74(fvec3) Load 680(L) + 702: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 701 + Store 680(L) 702 + 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 704 704 16 16 + 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 706 705(V) 51 + 709: 685(ptr) AccessChain 475 315 315 + 710: 18(fvec4) Load 709 + 711: 74(fvec3) VectorShuffle 710 710 0 1 2 + 712: 74(fvec3) Load 513(fragPos) + 713: 74(fvec3) FSub 711 712 + Store 705(V) 713 + 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 715 715 16 16 + 716: 74(fvec3) Load 705(V) + 717: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 716 + Store 705(V) 717 + 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 719 719 16 16 + 723: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 721 720(lightCosInnerAngle) 51 + Store 720(lightCosInnerAngle) 724 + 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 726 726 16 16 + 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 728 727(lightCosOuterAngle) 51 + Store 727(lightCosOuterAngle) 731 + 732: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 733 733 16 16 + 737: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 735 734(lightRange) 51 + Store 734(lightRange) 738 + 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 740 740 16 16 + 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 742 741(dir) 51 + 745: 235(int) Load 663(i) + 746: 685(ptr) AccessChain 475 315 322 745 315 + 747: 18(fvec4) Load 746 + 748: 74(fvec3) VectorShuffle 747 747 0 1 2 + 749: 235(int) Load 663(i) + 750: 685(ptr) AccessChain 475 315 322 749 322 + 751: 18(fvec4) Load 750 + 752: 74(fvec3) VectorShuffle 751 751 0 1 2 + 753: 74(fvec3) FSub 748 752 + 754: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 753 + Store 741(dir) 754 + 755: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 756 756 16 16 + 760: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 758 757(cosDir) 51 + 761: 74(fvec3) Load 680(L) + 762: 74(fvec3) Load 741(dir) + 763: 8(float) Dot 761 762 + Store 757(cosDir) 763 + 764: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 765 765 16 16 + 769: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 767 766(spotEffect) 51 + 770: 8(float) Load 727(lightCosOuterAngle) + 771: 8(float) Load 720(lightCosInnerAngle) + 772: 8(float) Load 757(cosDir) + 773: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 770 771 772 + Store 766(spotEffect) 773 + 774: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 775 775 16 16 + 779: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(heightAttenuation) 51 + 780: 8(float) Load 734(lightRange) + 781: 8(float) Load 694(dist) + 782: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 780 202 781 + Store 776(heightAttenuation) 782 + 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 784 784 16 16 + 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 786 785(NdotL) 51 + 789: 74(fvec3) Load 655(N) + 790: 74(fvec3) Load 680(L) + 791: 8(float) Dot 789 790 + 792: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 202 791 + Store 785(NdotL) 792 + 793: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 794 794 16 16 + 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 796 795(diff) 51 + 799: 8(float) Load 785(NdotL) + 800: 74(fvec3) CompositeConstruct 799 799 799 + Store 795(diff) 800 + 801: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 802 802 16 16 + 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 804 803(R) 51 + 807: 74(fvec3) Load 680(L) + 808: 74(fvec3) FNegate 807 + 809: 74(fvec3) Load 655(N) + 810: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 808 809 + Store 803(R) 810 + 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 812 812 16 16 + 816: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 814 813(NdotR) 51 + 817: 74(fvec3) Load 803(R) + 818: 74(fvec3) Load 705(V) + 819: 8(float) Dot 817 818 + 820: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 202 819 + Store 813(NdotR) 820 + 821: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 822 822 16 16 + 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 824 823(spec) 51 + 827: 8(float) Load 813(NdotR) + 829: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 827 828 + 830: 24(ptr) AccessChain 556(albedo) 17 + 831: 8(float) Load 830 + 832: 8(float) FMul 829 831 + 834: 8(float) FMul 832 833 + 835: 74(fvec3) CompositeConstruct 834 834 834 + Store 823(spec) 835 + 836: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 837 837 16 16 + 838: 74(fvec3) Load 795(diff) + 839: 74(fvec3) Load 823(spec) + 840: 74(fvec3) FAdd 838 839 + 841: 8(float) Load 766(spotEffect) + 842: 74(fvec3) VectorTimesScalar 840 841 + 843: 8(float) Load 776(heightAttenuation) + 844: 74(fvec3) VectorTimesScalar 842 843 + 845: 235(int) Load 663(i) + 847: 685(ptr) AccessChain 475 315 322 845 846 + 848: 18(fvec4) Load 847 + 849: 74(fvec3) VectorShuffle 848 848 0 1 2 + 850: 74(fvec3) FMul 844 849 + 851: 18(fvec4) Load 556(albedo) + 852: 74(fvec3) VectorShuffle 851 851 0 1 2 + 853: 74(fvec3) FMul 850 852 + 854: 74(fvec3) Load 595(fragcolor) + 855: 74(fvec3) FAdd 854 853 + Store 595(fragcolor) 855 + Branch 669 + 669: Label + 856: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 857: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 + 858: 235(int) Load 663(i) + 859: 235(int) IAdd 858 322 + Store 663(i) 859 + Branch 666 + 668: Label + 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 861: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 862 862 16 16 + 863: 574(ptr) AccessChain 475 315 846 + 864: 235(int) Load 863 + 865: 144(bool) SGreaterThan 864 315 + SelectionMerge 867 None + BranchConditional 865 866 867 + 866: Label + 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 869: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 870 870 16 16 + 872: 74(fvec3) Load 595(fragcolor) + Store 871(param) 872 + 874: 74(fvec3) Load 513(fragPos) + Store 873(param) 874 + 875: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 871(param) 873(param) + Store 595(fragcolor) 875 + Branch 867 + 867: Label + 876: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 877: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 878 878 16 16 + 879: 74(fvec3) Load 595(fragcolor) + 880: 8(float) CompositeExtract 879 0 + 881: 8(float) CompositeExtract 879 1 + 882: 8(float) CompositeExtract 879 2 + 883: 18(fvec4) CompositeConstruct 880 881 882 115 + ReturnValue 883 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index 07acacc14d..2647753e55 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 354 +// Id's are bound by 367 Capability Geometry Capability MultiViewport @@ -9,7 +9,7 @@ spv.debuginfo.hlsl.geom 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 6 "main" 256 262 267 273 278 283 288 303 310 315 339 342 + EntryPoint Geometry 6 "main" 267 274 279 286 291 296 301 316 323 328 352 355 ExecutionMode 6 Triangles ExecutionMode 6 Invocations 2 ExecutionMode 6 OutputTriangleStrip @@ -29,107 +29,107 @@ spv.debuginfo.hlsl.geom " 31: String "Color" 36: String "VSOutput" - 47: String "PrimitiveID" - 52: String "LightVec" - 58: String "GSOutput" - 69: String "@main" - 75: String "input" - 79: String "outStream" - 83: String "InvocationID" - 92: String "int" - 97: String "i" - 112: String "bool" - 120: String "output" - 142: String "projection" - 146: String "modelview" - 150: String "lightPos" - 154: String "UBO" - 157: String "ubo" - 192: String "pos" - 201: String "worldPos" - 212: String "lPos" - 258: String "outStream.Pos" - 264: String "outStream.ViewportIndex" - 269: String "outStream.PrimitiveID" - 275: String "outStream.Normal" - 280: String "outStream.Color" - 285: String "outStream.ViewVec" - 290: String "outStream.LightVec" + 49: String "PrimitiveID" + 54: String "LightVec" + 60: String "GSOutput" + 73: String "@main" + 79: String "input" + 83: String "outStream" + 87: String "InvocationID" + 96: String "int" + 102: String "i" + 117: String "bool" + 125: String "output" + 148: String "projection" + 152: String "modelview" + 156: String "lightPos" + 160: String "UBO" + 163: String "ubo" + 201: String "pos" + 210: String "worldPos" + 221: String "lPos" + 269: String "outStream.Pos" + 276: String "outStream.ViewportIndex" + 281: String "outStream.PrimitiveID" + 288: String "outStream.Normal" + 293: String "outStream.Color" + 298: String "outStream.ViewVec" + 303: String "outStream.LightVec" Name 6 "main" Name 23 "VSOutput" MemberName 23(VSOutput) 0 "Pos" MemberName 23(VSOutput) 1 "Normal" MemberName 23(VSOutput) 2 "Color" - Name 43 "GSOutput" - MemberName 43(GSOutput) 0 "Pos" - MemberName 43(GSOutput) 1 "ViewportIndex" - MemberName 43(GSOutput) 2 "PrimitiveID" - MemberName 43(GSOutput) 3 "Normal" - MemberName 43(GSOutput) 4 "Color" - MemberName 43(GSOutput) 5 "ViewVec" - MemberName 43(GSOutput) 6 "LightVec" - Name 67 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" - Name 63 "input" - Name 64 "outStream" - Name 65 "InvocationID" - Name 66 "PrimitiveID" - Name 95 "i" - Name 118 "output" - Name 140 "UBO" - MemberName 140(UBO) 0 "projection" - MemberName 140(UBO) 1 "modelview" - MemberName 140(UBO) 2 "lightPos" - Name 155 "ubo" - MemberName 155(ubo) 0 "ubo" - Name 161 "" - Name 190 "pos" - Name 199 "worldPos" - Name 210 "lPos" - Name 256 "outStream.Pos" - Name 262 "outStream.ViewportIndex" - Name 267 "outStream.PrimitiveID" - Name 273 "outStream.Normal" - Name 278 "outStream.Color" - Name 283 "outStream.ViewVec" - Name 288 "outStream.LightVec" - Name 300 "input" - Name 303 "input.Pos" - Name 310 "input.Normal" - Name 315 "input.Color" - Name 337 "InvocationID" - Name 339 "InvocationID" - Name 341 "PrimitiveID" - Name 342 "PrimitiveID" - Name 344 "outStream" - Name 345 "param" - Name 347 "param" - Name 348 "param" - Name 350 "param" - Decorate 136 ArrayStride 64 - Decorate 138 ArrayStride 64 - MemberDecorate 140(UBO) 0 RowMajor - MemberDecorate 140(UBO) 0 Offset 0 - MemberDecorate 140(UBO) 0 MatrixStride 16 - MemberDecorate 140(UBO) 1 RowMajor - MemberDecorate 140(UBO) 1 Offset 128 - MemberDecorate 140(UBO) 1 MatrixStride 16 - MemberDecorate 140(UBO) 2 Offset 256 - MemberDecorate 155(ubo) 0 Offset 0 - Decorate 155(ubo) Block - Decorate 161 DescriptorSet 0 - Decorate 161 Binding 0 - Decorate 256(outStream.Pos) BuiltIn Position - Decorate 262(outStream.ViewportIndex) BuiltIn ViewportIndex - Decorate 267(outStream.PrimitiveID) BuiltIn PrimitiveId - Decorate 273(outStream.Normal) Location 0 - Decorate 278(outStream.Color) Location 1 - Decorate 283(outStream.ViewVec) Location 2 - Decorate 288(outStream.LightVec) Location 3 - Decorate 303(input.Pos) BuiltIn Position - Decorate 310(input.Normal) Location 0 - Decorate 315(input.Color) Location 1 - Decorate 339(InvocationID) BuiltIn InvocationId - Decorate 342(PrimitiveID) BuiltIn PrimitiveId + Name 45 "GSOutput" + MemberName 45(GSOutput) 0 "Pos" + MemberName 45(GSOutput) 1 "ViewportIndex" + MemberName 45(GSOutput) 2 "PrimitiveID" + MemberName 45(GSOutput) 3 "Normal" + MemberName 45(GSOutput) 4 "Color" + MemberName 45(GSOutput) 5 "ViewVec" + MemberName 45(GSOutput) 6 "LightVec" + Name 71 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" + Name 67 "input" + Name 68 "outStream" + Name 69 "InvocationID" + Name 70 "PrimitiveID" + Name 100 "i" + Name 123 "output" + Name 146 "UBO" + MemberName 146(UBO) 0 "projection" + MemberName 146(UBO) 1 "modelview" + MemberName 146(UBO) 2 "lightPos" + Name 161 "ubo" + MemberName 161(ubo) 0 "ubo" + Name 168 "" + Name 199 "pos" + Name 208 "worldPos" + Name 219 "lPos" + Name 267 "outStream.Pos" + Name 274 "outStream.ViewportIndex" + Name 279 "outStream.PrimitiveID" + Name 286 "outStream.Normal" + Name 291 "outStream.Color" + Name 296 "outStream.ViewVec" + Name 301 "outStream.LightVec" + Name 313 "input" + Name 316 "input.Pos" + Name 323 "input.Normal" + Name 328 "input.Color" + Name 350 "InvocationID" + Name 352 "InvocationID" + Name 354 "PrimitiveID" + Name 355 "PrimitiveID" + Name 357 "outStream" + Name 358 "param" + Name 360 "param" + Name 361 "param" + Name 363 "param" + Decorate 142 ArrayStride 64 + Decorate 144 ArrayStride 64 + MemberDecorate 146(UBO) 0 RowMajor + MemberDecorate 146(UBO) 0 Offset 0 + MemberDecorate 146(UBO) 0 MatrixStride 16 + MemberDecorate 146(UBO) 1 RowMajor + MemberDecorate 146(UBO) 1 Offset 128 + MemberDecorate 146(UBO) 1 MatrixStride 16 + MemberDecorate 146(UBO) 2 Offset 256 + MemberDecorate 161(ubo) 0 Offset 0 + Decorate 161(ubo) Block + Decorate 168 DescriptorSet 0 + Decorate 168 Binding 0 + Decorate 267(outStream.Pos) BuiltIn Position + Decorate 274(outStream.ViewportIndex) BuiltIn ViewportIndex + Decorate 279(outStream.PrimitiveID) BuiltIn PrimitiveId + Decorate 286(outStream.Normal) Location 0 + Decorate 291(outStream.Color) Location 1 + Decorate 296(outStream.ViewVec) Location 2 + Decorate 301(outStream.LightVec) Location 3 + Decorate 316(input.Pos) BuiltIn Position + Decorate 323(input.Normal) Location 0 + Decorate 328(input.Color) Location 1 + Decorate 352(InvocationID) BuiltIn InvocationId + Decorate 355(PrimitiveID) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -161,340 +161,353 @@ spv.debuginfo.hlsl.geom 40: TypeArray 23(VSOutput) 17 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 17 42: TypePointer Function 40 - 43(GSOutput): TypeStruct 18(fvec4) 11(int) 11(int) 21(fvec3) 21(fvec3) 21(fvec3) 21(fvec3) - 45: 11(int) Constant 44 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 45 29 16 16 17 - 48: 11(int) Constant 46 - 49: 11(int) Constant 19 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 13 26 48 49 16 16 17 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 13 26 48 49 16 16 17 - 53: 11(int) Constant 50 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 22 26 53 28 16 16 17 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 58 37 26 16 16 38 58 16 17 44 46 50 51 54 55 56 - 59: TypePointer Function 43(GSOutput) - 60: TypePointer Function 11(int) - 61: TypeFunction 4 42(ptr) 59(ptr) 60(ptr) 60(ptr) - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 57 13 13 - 71: 11(int) Constant 56 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 69 62 26 71 16 38 69 17 71 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 75 41 26 71 16 70 19 37 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 80: 11(int) Constant 2 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 57 26 71 16 70 19 80 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 13 26 71 16 70 19 17 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 13 26 71 16 70 19 19 - 90: 11(int) Constant 57 - 91: TypeInt 32 1 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 92 14 19 16 - 94: TypePointer Function 91(int) - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 97 93 26 90 16 70 19 - 99: 91(int) Constant 0 - 110: 91(int) Constant 3 - 111: TypeBool - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 112 14 80 16 - 117: 11(int) Constant 59 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 57 26 117 16 70 19 - 122: 8(float) Constant 0 - 123: 18(fvec4) ConstantComposite 122 122 122 122 - 124: 21(fvec3) ConstantComposite 122 122 122 - 125:43(GSOutput) ConstantComposite 123 16 16 124 124 124 124 - 127: 11(int) Constant 60 - 129: 91(int) Constant 1 - 130: TypePointer Function 21(fvec3) - 133: TypeMatrix 18(fvec4) 4 - 135: 111(bool) ConstantTrue - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 135 - 136: TypeArray 133 80 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 134 80 - 138: TypeArray 133 80 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 134 80 - 140(UBO): TypeStruct 136 138 18(fvec4) - 143: 11(int) Constant 28 - 144: 11(int) Constant 21 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 142 137 26 143 144 16 16 17 - 147: 11(int) Constant 29 - 148: 11(int) Constant 20 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 139 26 147 148 16 16 17 - 151: 11(int) Constant 30 - 152: 11(int) Constant 17 - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 20 26 151 152 16 16 17 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 154 37 26 127 16 38 154 16 17 141 145 149 - 155(ubo): TypeStruct 140(UBO) - 158: 11(int) Constant 33 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 157 153 26 158 28 16 16 17 - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 157 37 26 127 16 38 157 16 17 156 - 160: TypePointer Uniform 155(ubo) - 161: 160(ptr) Variable Uniform - 163: 11(int) Constant 8 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 159 26 127 16 38 1 161 163 - 165: TypePointer Uniform 133 - 168: TypeMatrix 21(fvec3) 3 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 135 - 180: 11(int) Constant 61 - 181: 91(int) Constant 4 - 183: 91(int) Constant 2 - 188: 11(int) Constant 63 - 189: TypePointer Function 18(fvec4) - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 192 20 26 188 16 70 19 - 198: 11(int) Constant 64 - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 201 20 26 198 16 70 19 - 209: 11(int) Constant 66 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 22 26 209 16 70 19 - 214: TypePointer Uniform 18(fvec4) - 223: 11(int) Constant 67 - 224: 91(int) Constant 6 - 231: 11(int) Constant 68 - 232: 91(int) Constant 5 - 238: 11(int) Constant 70 - 246: 11(int) Constant 73 - 250: 11(int) Constant 74 - 254: 11(int) Constant 75 - 255: TypePointer Output 18(fvec4) -256(outStream.Pos): 255(ptr) Variable Output - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 20 26 254 16 38 258 256(outStream.Pos) 163 - 261: TypePointer Output 11(int) -262(outStream.ViewportIndex): 261(ptr) Variable Output - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 264 13 26 254 16 38 264 262(outStream.ViewportIndex) 163 -267(outStream.PrimitiveID): 261(ptr) Variable Output - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 269 13 26 254 16 38 269 267(outStream.PrimitiveID) 163 - 272: TypePointer Output 21(fvec3) -273(outStream.Normal): 272(ptr) Variable Output - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 275 22 26 254 16 38 275 273(outStream.Normal) 163 -278(outStream.Color): 272(ptr) Variable Output - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 280 22 26 254 16 38 280 278(outStream.Color) 163 -283(outStream.ViewVec): 272(ptr) Variable Output - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 285 22 26 254 16 38 285 283(outStream.ViewVec) 163 -288(outStream.LightVec): 272(ptr) Variable Output - 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 290 22 26 254 16 38 290 288(outStream.LightVec) 163 - 299: 11(int) Constant 78 - 301: TypeArray 18(fvec4) 17 - 302: TypePointer Input 301 - 303(input.Pos): 302(ptr) Variable Input - 304: TypePointer Input 18(fvec4) - 308: TypeArray 21(fvec3) 17 - 309: TypePointer Input 308 -310(input.Normal): 309(ptr) Variable Input - 311: TypePointer Input 21(fvec3) -315(input.Color): 309(ptr) Variable Input - 338: TypePointer Input 11(int) -339(InvocationID): 338(ptr) Variable Input -342(PrimitiveID): 338(ptr) Variable Input + 43: 11(int) Constant 7 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 43 16 + 45(GSOutput): TypeStruct 18(fvec4) 11(int) 11(int) 21(fvec3) 21(fvec3) 21(fvec3) 21(fvec3) + 47: 11(int) Constant 44 + 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 47 29 16 16 17 + 50: 11(int) Constant 46 + 51: 11(int) Constant 19 + 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 + 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 + 55: 11(int) Constant 50 + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 37 26 16 16 38 60 16 17 46 48 52 53 56 57 58 + 61: TypePointer Function 45(GSOutput) + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 43 16 + 63: TypePointer Function 11(int) + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 43 16 + 65: TypeFunction 4 42(ptr) 61(ptr) 63(ptr) 63(ptr) + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 59 13 13 + 75: 11(int) Constant 56 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 73 66 26 75 16 38 73 17 75 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 41 26 75 16 74 19 37 + 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 84: 11(int) Constant 2 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 59 26 75 16 74 19 84 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 13 26 75 16 74 19 17 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 13 26 75 16 74 19 19 + 94: 11(int) Constant 57 + 95: TypeInt 32 1 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 96 14 19 16 + 98: TypePointer Function 95(int) + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 97 43 16 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 97 26 94 16 74 19 + 104: 95(int) Constant 0 + 115: 95(int) Constant 3 + 116: TypeBool + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 117 14 84 16 + 122: 11(int) Constant 59 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 59 26 122 16 74 19 + 127: 8(float) Constant 0 + 128: 18(fvec4) ConstantComposite 127 127 127 127 + 129: 21(fvec3) ConstantComposite 127 127 127 + 130:45(GSOutput) ConstantComposite 128 16 16 129 129 129 129 + 132: 11(int) Constant 60 + 134: 95(int) Constant 1 + 135: TypePointer Function 21(fvec3) + 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 43 16 + 139: TypeMatrix 18(fvec4) 4 + 141: 116(bool) ConstantTrue + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 141 + 142: TypeArray 139 84 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 140 84 + 144: TypeArray 139 84 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 140 84 + 146(UBO): TypeStruct 142 144 18(fvec4) + 149: 11(int) Constant 28 + 150: 11(int) Constant 21 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 148 143 26 149 150 16 16 17 + 153: 11(int) Constant 29 + 154: 11(int) Constant 20 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 145 26 153 154 16 16 17 + 157: 11(int) Constant 30 + 158: 11(int) Constant 17 + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 20 26 157 158 16 16 17 + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 160 37 26 132 16 38 160 16 17 147 151 155 + 161(ubo): TypeStruct 146(UBO) + 164: 11(int) Constant 33 + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 159 26 164 28 16 16 17 + 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 37 26 132 16 38 163 16 17 162 + 166: TypePointer Uniform 161(ubo) + 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 165 84 16 + 168: 166(ptr) Variable Uniform + 170: 11(int) Constant 8 + 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 165 26 132 16 38 1 168 170 + 172: TypePointer Uniform 139 + 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 140 84 16 + 176: TypeMatrix 21(fvec3) 3 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 141 + 188: 11(int) Constant 61 + 189: 95(int) Constant 4 + 191: 95(int) Constant 2 + 196: 11(int) Constant 63 + 197: TypePointer Function 18(fvec4) + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 43 16 + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 201 20 26 196 16 74 19 + 207: 11(int) Constant 64 + 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 210 20 26 207 16 74 19 + 218: 11(int) Constant 66 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 221 22 26 218 16 74 19 + 223: TypePointer Uniform 18(fvec4) + 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 84 16 + 233: 11(int) Constant 67 + 234: 95(int) Constant 6 + 241: 11(int) Constant 68 + 242: 95(int) Constant 5 + 248: 11(int) Constant 70 + 256: 11(int) Constant 73 + 260: 11(int) Constant 74 + 264: 11(int) Constant 75 + 265: TypePointer Output 18(fvec4) + 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 17 16 +267(outStream.Pos): 265(ptr) Variable Output + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 269 20 26 264 16 38 269 267(outStream.Pos) 170 + 272: TypePointer Output 11(int) + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 17 16 +274(outStream.ViewportIndex): 272(ptr) Variable Output + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 276 13 26 264 16 38 276 274(outStream.ViewportIndex) 170 +279(outStream.PrimitiveID): 272(ptr) Variable Output + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 281 13 26 264 16 38 281 279(outStream.PrimitiveID) 170 + 284: TypePointer Output 21(fvec3) + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 17 16 +286(outStream.Normal): 284(ptr) Variable Output + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 288 22 26 264 16 38 288 286(outStream.Normal) 170 +291(outStream.Color): 284(ptr) Variable Output + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 293 22 26 264 16 38 293 291(outStream.Color) 170 +296(outStream.ViewVec): 284(ptr) Variable Output + 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 298 22 26 264 16 38 298 296(outStream.ViewVec) 170 +301(outStream.LightVec): 284(ptr) Variable Output + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 303 22 26 264 16 38 303 301(outStream.LightVec) 170 + 312: 11(int) Constant 78 + 314: TypeArray 18(fvec4) 17 + 315: TypePointer Input 314 + 316(input.Pos): 315(ptr) Variable Input + 317: TypePointer Input 18(fvec4) + 321: TypeArray 21(fvec3) 17 + 322: TypePointer Input 321 +323(input.Normal): 322(ptr) Variable Input + 324: TypePointer Input 21(fvec3) +328(input.Color): 322(ptr) Variable Input + 351: TypePointer Input 11(int) +352(InvocationID): 351(ptr) Variable Input +355(PrimitiveID): 351(ptr) Variable Input Line 1 56 1 6(main): 4 Function None 5 7: Label - 300(input): 42(ptr) Variable Function -337(InvocationID): 60(ptr) Variable Function -341(PrimitiveID): 60(ptr) Variable Function - 344(outStream): 59(ptr) Variable Function - 345(param): 42(ptr) Variable Function - 347(param): 59(ptr) Variable Function - 348(param): 60(ptr) Variable Function - 350(param): 60(ptr) Variable Function + 313(input): 42(ptr) Variable Function +350(InvocationID): 63(ptr) Variable Function +354(PrimitiveID): 63(ptr) Variable Function + 357(outStream): 61(ptr) Variable Function + 358(param): 42(ptr) Variable Function + 360(param): 61(ptr) Variable Function + 361(param): 63(ptr) Variable Function + 363(param): 63(ptr) Variable Function Line 1 56 0 - 305: 304(ptr) AccessChain 303(input.Pos) 99 - 306: 18(fvec4) Load 305 - 307: 189(ptr) AccessChain 300(input) 99 99 - Store 307 306 - 312: 311(ptr) AccessChain 310(input.Normal) 99 - 313: 21(fvec3) Load 312 - 314: 130(ptr) AccessChain 300(input) 99 129 - Store 314 313 - 316: 311(ptr) AccessChain 315(input.Color) 99 - 317: 21(fvec3) Load 316 - 318: 130(ptr) AccessChain 300(input) 99 183 - Store 318 317 - 319: 304(ptr) AccessChain 303(input.Pos) 129 - 320: 18(fvec4) Load 319 - 321: 189(ptr) AccessChain 300(input) 129 99 - Store 321 320 - 322: 311(ptr) AccessChain 310(input.Normal) 129 - 323: 21(fvec3) Load 322 - 324: 130(ptr) AccessChain 300(input) 129 129 - Store 324 323 - 325: 311(ptr) AccessChain 315(input.Color) 129 + 318: 317(ptr) AccessChain 316(input.Pos) 104 + 319: 18(fvec4) Load 318 + 320: 197(ptr) AccessChain 313(input) 104 104 + Store 320 319 + 325: 324(ptr) AccessChain 323(input.Normal) 104 326: 21(fvec3) Load 325 - 327: 130(ptr) AccessChain 300(input) 129 183 + 327: 135(ptr) AccessChain 313(input) 104 134 Store 327 326 - 328: 304(ptr) AccessChain 303(input.Pos) 183 - 329: 18(fvec4) Load 328 - 330: 189(ptr) AccessChain 300(input) 183 99 - Store 330 329 - 331: 311(ptr) AccessChain 310(input.Normal) 183 - 332: 21(fvec3) Load 331 - 333: 130(ptr) AccessChain 300(input) 183 129 - Store 333 332 - 334: 311(ptr) AccessChain 315(input.Color) 183 - 335: 21(fvec3) Load 334 - 336: 130(ptr) AccessChain 300(input) 183 183 - Store 336 335 - 340: 11(int) Load 339(InvocationID) - Store 337(InvocationID) 340 - 343: 11(int) Load 342(PrimitiveID) - Store 341(PrimitiveID) 343 - 346: 40 Load 300(input) - Store 345(param) 346 - 349: 11(int) Load 337(InvocationID) - Store 348(param) 349 - 351: 11(int) Load 341(PrimitiveID) - Store 350(param) 351 - 352: 4 FunctionCall 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 345(param) 347(param) 348(param) 350(param) - 353:43(GSOutput) Load 347(param) - Store 344(outStream) 353 + 329: 324(ptr) AccessChain 328(input.Color) 104 + 330: 21(fvec3) Load 329 + 331: 135(ptr) AccessChain 313(input) 104 191 + Store 331 330 + 332: 317(ptr) AccessChain 316(input.Pos) 134 + 333: 18(fvec4) Load 332 + 334: 197(ptr) AccessChain 313(input) 134 104 + Store 334 333 + 335: 324(ptr) AccessChain 323(input.Normal) 134 + 336: 21(fvec3) Load 335 + 337: 135(ptr) AccessChain 313(input) 134 134 + Store 337 336 + 338: 324(ptr) AccessChain 328(input.Color) 134 + 339: 21(fvec3) Load 338 + 340: 135(ptr) AccessChain 313(input) 134 191 + Store 340 339 + 341: 317(ptr) AccessChain 316(input.Pos) 191 + 342: 18(fvec4) Load 341 + 343: 197(ptr) AccessChain 313(input) 191 104 + Store 343 342 + 344: 324(ptr) AccessChain 323(input.Normal) 191 + 345: 21(fvec3) Load 344 + 346: 135(ptr) AccessChain 313(input) 191 134 + Store 346 345 + 347: 324(ptr) AccessChain 328(input.Color) 191 + 348: 21(fvec3) Load 347 + 349: 135(ptr) AccessChain 313(input) 191 191 + Store 349 348 + 353: 11(int) Load 352(InvocationID) + Store 350(InvocationID) 353 + 356: 11(int) Load 355(PrimitiveID) + Store 354(PrimitiveID) 356 + 359: 40 Load 313(input) + Store 358(param) 359 + 362: 11(int) Load 350(InvocationID) + Store 361(param) 362 + 364: 11(int) Load 354(PrimitiveID) + Store 363(param) 364 + 365: 4 FunctionCall 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 358(param) 360(param) 361(param) 363(param) + 366:45(GSOutput) Load 360(param) + Store 357(outStream) 366 Return FunctionEnd Line 1 56 1 -67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 4 Function None 61 - 63(input): 42(ptr) FunctionParameter - 64(outStream): 59(ptr) FunctionParameter -65(InvocationID): 60(ptr) FunctionParameter - 66(PrimitiveID): 60(ptr) FunctionParameter - 68: Label - 95(i): 94(ptr) Variable Function - 118(output): 59(ptr) Variable Function - 190(pos): 189(ptr) Variable Function - 199(worldPos): 189(ptr) Variable Function - 210(lPos): 130(ptr) Variable Function - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 71 71 16 16 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 74 63(input) 77 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 64(outStream) 77 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 65(InvocationID) 77 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 85 66(PrimitiveID) 77 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 70 67(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 96 95(i) 77 - Store 95(i) 99 - Branch 100 - 100: Label - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 - LoopMerge 102 103 None - Branch 106 - 106: Label - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 - 109: 91(int) Load 95(i) - 114: 111(bool) SLessThan 109 110 - BranchConditional 114 101 102 - 101: Label - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 117 117 16 16 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(output) 77 - Store 118(output) 125 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 127 127 16 16 - 128: 91(int) Load 95(i) - 131: 130(ptr) AccessChain 63(input) 128 129 - 132: 21(fvec3) Load 131 - 164: 11(int) Load 65(InvocationID) - 166: 165(ptr) AccessChain 161 99 129 164 - 167: 133 Load 166 - 170: 18(fvec4) CompositeExtract 167 0 - 171: 21(fvec3) VectorShuffle 170 170 0 1 2 - 172: 18(fvec4) CompositeExtract 167 1 - 173: 21(fvec3) VectorShuffle 172 172 0 1 2 - 174: 18(fvec4) CompositeExtract 167 2 - 175: 21(fvec3) VectorShuffle 174 174 0 1 2 - 176: 168 CompositeConstruct 171 173 175 - 177: 21(fvec3) VectorTimesMatrix 132 176 - 178: 130(ptr) AccessChain 118(output) 110 - Store 178 177 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 180 180 16 16 - 182: 91(int) Load 95(i) - 184: 130(ptr) AccessChain 63(input) 182 183 - 185: 21(fvec3) Load 184 - 186: 130(ptr) AccessChain 118(output) 181 +71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 4 Function None 65 + 67(input): 42(ptr) FunctionParameter + 68(outStream): 61(ptr) FunctionParameter +69(InvocationID): 63(ptr) FunctionParameter + 70(PrimitiveID): 63(ptr) FunctionParameter + 72: Label + 100(i): 98(ptr) Variable Function + 123(output): 61(ptr) Variable Function + 199(pos): 197(ptr) Variable Function + 208(worldPos): 197(ptr) Variable Function + 219(lPos): 135(ptr) Variable Function + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 75 75 16 16 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 67(input) 81 + 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 68(outStream) 81 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 69(InvocationID) 81 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 70(PrimitiveID) 81 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 74 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 100(i) 81 + Store 100(i) 104 + Branch 105 + 105: Label + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 + LoopMerge 107 108 None + Branch 111 + 111: Label + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 + 114: 95(int) Load 100(i) + 119: 116(bool) SLessThan 114 115 + BranchConditional 119 106 107 + 106: Label + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 122 122 16 16 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(output) 81 + Store 123(output) 130 + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 132 132 16 16 + 133: 95(int) Load 100(i) + 137: 135(ptr) AccessChain 67(input) 133 134 + 138: 21(fvec3) Load 137 + 171: 11(int) Load 69(InvocationID) + 174: 172(ptr) AccessChain 168 104 134 171 + 175: 139 Load 174 + 178: 18(fvec4) CompositeExtract 175 0 + 179: 21(fvec3) VectorShuffle 178 178 0 1 2 + 180: 18(fvec4) CompositeExtract 175 1 + 181: 21(fvec3) VectorShuffle 180 180 0 1 2 + 182: 18(fvec4) CompositeExtract 175 2 + 183: 21(fvec3) VectorShuffle 182 182 0 1 2 + 184: 176 CompositeConstruct 179 181 183 + 185: 21(fvec3) VectorTimesMatrix 138 184 + 186: 135(ptr) AccessChain 123(output) 115 Store 186 185 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 188 188 16 16 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 191 190(pos) 77 - 194: 91(int) Load 95(i) - 195: 189(ptr) AccessChain 63(input) 194 99 - 196: 18(fvec4) Load 195 - Store 190(pos) 196 - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 198 198 16 16 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 200 199(worldPos) 77 - 203: 18(fvec4) Load 190(pos) - 204: 11(int) Load 65(InvocationID) - 205: 165(ptr) AccessChain 161 99 129 204 - 206: 133 Load 205 - 207: 18(fvec4) VectorTimesMatrix 203 206 - Store 199(worldPos) 207 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 209 209 16 16 - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(lPos) 77 - 215: 214(ptr) AccessChain 161 99 183 - 216: 18(fvec4) Load 215 - 217: 11(int) Load 65(InvocationID) - 218: 165(ptr) AccessChain 161 99 129 217 - 219: 133 Load 218 - 220: 18(fvec4) VectorTimesMatrix 216 219 - 221: 21(fvec3) VectorShuffle 220 220 0 1 2 - Store 210(lPos) 221 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 223 223 16 16 - 225: 21(fvec3) Load 210(lPos) - 226: 18(fvec4) Load 199(worldPos) - 227: 21(fvec3) VectorShuffle 226 226 0 1 2 - 228: 21(fvec3) FSub 225 227 - 229: 130(ptr) AccessChain 118(output) 224 - Store 229 228 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 231 231 16 16 - 233: 18(fvec4) Load 199(worldPos) - 234: 21(fvec3) VectorShuffle 233 233 0 1 2 - 235: 21(fvec3) FNegate 234 - 236: 130(ptr) AccessChain 118(output) 232 - Store 236 235 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 238 238 16 16 - 239: 18(fvec4) Load 199(worldPos) - 240: 11(int) Load 65(InvocationID) - 241: 165(ptr) AccessChain 161 99 99 240 - 242: 133 Load 241 - 243: 18(fvec4) VectorTimesMatrix 239 242 - 244: 189(ptr) AccessChain 118(output) 99 - Store 244 243 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 246 246 16 16 - 247: 11(int) Load 65(InvocationID) - 248: 60(ptr) AccessChain 118(output) 129 - Store 248 247 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 250 250 16 16 - 251: 11(int) Load 66(PrimitiveID) - 252: 60(ptr) AccessChain 118(output) 183 - Store 252 251 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 254 254 16 16 - 259: 189(ptr) AccessChain 118(output) 99 - 260: 18(fvec4) Load 259 - Store 256(outStream.Pos) 260 - 265: 60(ptr) AccessChain 118(output) 129 - 266: 11(int) Load 265 - Store 262(outStream.ViewportIndex) 266 - 270: 60(ptr) AccessChain 118(output) 183 - 271: 11(int) Load 270 - Store 267(outStream.PrimitiveID) 271 - 276: 130(ptr) AccessChain 118(output) 110 - 277: 21(fvec3) Load 276 - Store 273(outStream.Normal) 277 - 281: 130(ptr) AccessChain 118(output) 181 - 282: 21(fvec3) Load 281 - Store 278(outStream.Color) 282 - 286: 130(ptr) AccessChain 118(output) 232 - 287: 21(fvec3) Load 286 - Store 283(outStream.ViewVec) 287 - 291: 130(ptr) AccessChain 118(output) 224 - 292: 21(fvec3) Load 291 - Store 288(outStream.LightVec) 292 + 190: 95(int) Load 100(i) + 192: 135(ptr) AccessChain 67(input) 190 191 + 193: 21(fvec3) Load 192 + 194: 135(ptr) AccessChain 123(output) 189 + Store 194 193 + 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 196 196 16 16 + 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 200 199(pos) 81 + 203: 95(int) Load 100(i) + 204: 197(ptr) AccessChain 67(input) 203 104 + 205: 18(fvec4) Load 204 + Store 199(pos) 205 + 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 207 207 16 16 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 209 208(worldPos) 81 + 212: 18(fvec4) Load 199(pos) + 213: 11(int) Load 69(InvocationID) + 214: 172(ptr) AccessChain 168 104 134 213 + 215: 139 Load 214 + 216: 18(fvec4) VectorTimesMatrix 212 215 + Store 208(worldPos) 216 + 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 218 218 16 16 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 220 219(lPos) 81 + 225: 223(ptr) AccessChain 168 104 191 + 226: 18(fvec4) Load 225 + 227: 11(int) Load 69(InvocationID) + 228: 172(ptr) AccessChain 168 104 134 227 + 229: 139 Load 228 + 230: 18(fvec4) VectorTimesMatrix 226 229 + 231: 21(fvec3) VectorShuffle 230 230 0 1 2 + Store 219(lPos) 231 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 233 233 16 16 + 235: 21(fvec3) Load 219(lPos) + 236: 18(fvec4) Load 208(worldPos) + 237: 21(fvec3) VectorShuffle 236 236 0 1 2 + 238: 21(fvec3) FSub 235 237 + 239: 135(ptr) AccessChain 123(output) 234 + Store 239 238 + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 241 241 16 16 + 243: 18(fvec4) Load 208(worldPos) + 244: 21(fvec3) VectorShuffle 243 243 0 1 2 + 245: 21(fvec3) FNegate 244 + 246: 135(ptr) AccessChain 123(output) 242 + Store 246 245 + 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 248 248 16 16 + 249: 18(fvec4) Load 208(worldPos) + 250: 11(int) Load 69(InvocationID) + 251: 172(ptr) AccessChain 168 104 104 250 + 252: 139 Load 251 + 253: 18(fvec4) VectorTimesMatrix 249 252 + 254: 197(ptr) AccessChain 123(output) 104 + Store 254 253 + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 256 256 16 16 + 257: 11(int) Load 69(InvocationID) + 258: 63(ptr) AccessChain 123(output) 134 + Store 258 257 + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 260 260 16 16 + 261: 11(int) Load 70(PrimitiveID) + 262: 63(ptr) AccessChain 123(output) 191 + Store 262 261 + 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 264 264 16 16 + 270: 197(ptr) AccessChain 123(output) 104 + 271: 18(fvec4) Load 270 + Store 267(outStream.Pos) 271 + 277: 63(ptr) AccessChain 123(output) 134 + 278: 11(int) Load 277 + Store 274(outStream.ViewportIndex) 278 + 282: 63(ptr) AccessChain 123(output) 191 + 283: 11(int) Load 282 + Store 279(outStream.PrimitiveID) 283 + 289: 135(ptr) AccessChain 123(output) 115 + 290: 21(fvec3) Load 289 + Store 286(outStream.Normal) 290 + 294: 135(ptr) AccessChain 123(output) 189 + 295: 21(fvec3) Load 294 + Store 291(outStream.Color) 295 + 299: 135(ptr) AccessChain 123(output) 242 + 300: 21(fvec3) Load 299 + Store 296(outStream.ViewVec) 300 + 304: 135(ptr) AccessChain 123(output) 234 + 305: 21(fvec3) Load 304 + Store 301(outStream.LightVec) 305 EmitVertex - Branch 103 - 103: Label - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 - 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 90 90 16 16 - 295: 91(int) Load 95(i) - 296: 91(int) IAdd 295 129 - Store 95(i) 296 - Branch 100 - 102: Label - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 70 - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 299 299 16 16 + Branch 108 + 108: Label + 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 + 308: 95(int) Load 100(i) + 309: 95(int) IAdd 308 134 + Store 100(i) 309 + Branch 105 + 107: Label + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 312 312 16 16 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index 772aea292e..e85d2d0306 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -3,14 +3,14 @@ WARNING: 0:158: '' : attribute does not apply to entry point // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 685 +// Id's are bound by 702 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 6 "main" 577 584 591 625 634 641 648 663 678 + EntryPoint TessellationControl 6 "main" 594 601 608 642 651 658 665 680 695 ExecutionMode 6 OutputVertices 4 ExecutionMode 6 Quads ExecutionMode 6 SpacingEqual @@ -18,8 +18,8 @@ WARNING: 0:158: '' : attribute does not apply to entry point 1: String "" 9: String "float" 12: String "uint" - 28: String "screenSpaceTessFactor" - 31: String "// OpModuleProcessed auto-map-locations + 30: String "screenSpaceTessFactor" + 33: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed entry-point main // OpModuleProcessed client vulkan100 @@ -28,151 +28,151 @@ WARNING: 0:158: '' : attribute does not apply to entry point // OpModuleProcessed hlsl-offsets #line 1 " - 39: String "p0" - 43: String "p1" - 50: String "bool" - 58: String "frustumCheck" - 64: String "Pos" - 67: String "inUV" - 76: String "Normal" - 80: String "UV" - 84: String "VSOutput" - 94: String "TessLevelOuter" - 98: String "TessLevelInner" - 101: String "ConstantsHSOutput" - 107: String "ConstantsHS" - 113: String "patch" - 124: String "HSOutput" - 131: String "@main" - 139: String "InvocationID" - 147: String "midPoint" - 159: String "radius" - 170: String "v0" - 180: String "modelview" - 185: String "lightPos" - 189: String "frustumPlanes" - 192: String "tessellatedEdgeSize" - 196: String "viewportDim" - 200: String "UBO" - 203: String "ubo" - 211: String "int" - 223: String "clip0" - 241: String "clip1" - 316: String "pos" - 323: String "type.2d.image" - 324: String "@type.2d.image" - 329: String "textureHeight" - 333: String "type.sampler" - 334: String "@type.sampler" - 338: String "samplerHeight" - 342: String "type.sampled.image" - 343: String "@type.sampled.image" - 361: String "i" - 410: String "output" + 41: String "p0" + 45: String "p1" + 53: String "bool" + 61: String "frustumCheck" + 67: String "Pos" + 70: String "inUV" + 79: String "Normal" + 83: String "UV" + 87: String "VSOutput" + 98: String "TessLevelOuter" + 102: String "TessLevelInner" + 105: String "ConstantsHSOutput" + 111: String "ConstantsHS" + 117: String "patch" + 129: String "HSOutput" + 136: String "@main" + 144: String "InvocationID" + 152: String "midPoint" + 165: String "radius" + 176: String "v0" + 186: String "modelview" + 191: String "lightPos" + 195: String "frustumPlanes" + 198: String "tessellatedEdgeSize" + 202: String "viewportDim" + 206: String "UBO" + 209: String "ubo" + 218: String "int" + 231: String "clip0" + 249: String "clip1" + 326: String "pos" + 333: String "type.2d.image" + 334: String "@type.2d.image" + 340: String "textureHeight" + 344: String "type.sampler" + 345: String "@type.sampler" + 350: String "samplerHeight" + 354: String "type.sampled.image" + 355: String "@type.sampled.image" + 374: String "i" + 425: String "output" Name 6 "main" - Name 26 "screenSpaceTessFactor(vf4;vf4;" - Name 24 "p0" - Name 25 "p1" - Name 56 "frustumCheck(vf4;vf2;" - Name 54 "Pos" - Name 55 "inUV" - Name 71 "VSOutput" - MemberName 71(VSOutput) 0 "Pos" - MemberName 71(VSOutput) 1 "Normal" - MemberName 71(VSOutput) 2 "UV" - Name 92 "ConstantsHSOutput" - MemberName 92(ConstantsHSOutput) 0 "TessLevelOuter" - MemberName 92(ConstantsHSOutput) 1 "TessLevelInner" - Name 105 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" - Name 104 "patch" - Name 116 "HSOutput" - MemberName 116(HSOutput) 0 "Pos" - MemberName 116(HSOutput) 1 "Normal" - MemberName 116(HSOutput) 2 "UV" - Name 129 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" - Name 127 "patch" - Name 128 "InvocationID" - Name 145 "midPoint" - Name 157 "radius" - Name 168 "v0" - Name 178 "UBO" - MemberName 178(UBO) 0 "projection" - MemberName 178(UBO) 1 "modelview" - MemberName 178(UBO) 2 "lightPos" - MemberName 178(UBO) 3 "frustumPlanes" - MemberName 178(UBO) 4 "displacementFactor" - MemberName 178(UBO) 5 "tessellationFactor" - MemberName 178(UBO) 6 "viewportDim" - MemberName 178(UBO) 7 "tessellatedEdgeSize" - Name 201 "ubo" - MemberName 201(ubo) 0 "ubo" - Name 207 "" - Name 221 "clip0" - Name 239 "clip1" - Name 314 "pos" - Name 327 "textureHeight" - Name 336 "samplerHeight" - Name 359 "i" - Name 408 "output" - Name 418 "param" - Name 421 "param" - Name 459 "param" - Name 462 "param" - Name 469 "param" - Name 472 "param" - Name 479 "param" - Name 482 "param" - Name 489 "param" - Name 492 "param" - Name 544 "output" - Name 574 "patch" - Name 577 "patch.Pos" - Name 584 "patch.Normal" - Name 591 "patch.UV" - Name 623 "InvocationID" - Name 625 "InvocationID" - Name 627 "flattenTemp" - Name 628 "param" - Name 630 "param" - Name 634 "@entryPointOutput.Pos" - Name 641 "@entryPointOutput.Normal" - Name 648 "@entryPointOutput.UV" - Name 658 "@patchConstantResult" - Name 659 "param" - Name 663 "@patchConstantOutput.TessLevelOuter" - Name 678 "@patchConstantOutput.TessLevelInner" - Decorate 176 ArrayStride 16 - MemberDecorate 178(UBO) 0 RowMajor - MemberDecorate 178(UBO) 0 Offset 0 - MemberDecorate 178(UBO) 0 MatrixStride 16 - MemberDecorate 178(UBO) 1 RowMajor - MemberDecorate 178(UBO) 1 Offset 64 - MemberDecorate 178(UBO) 1 MatrixStride 16 - MemberDecorate 178(UBO) 2 Offset 128 - MemberDecorate 178(UBO) 3 Offset 144 - MemberDecorate 178(UBO) 4 Offset 240 - MemberDecorate 178(UBO) 5 Offset 244 - MemberDecorate 178(UBO) 6 Offset 248 - MemberDecorate 178(UBO) 7 Offset 256 - MemberDecorate 201(ubo) 0 Offset 0 - Decorate 201(ubo) Block - Decorate 207 DescriptorSet 0 - Decorate 207 Binding 0 - Decorate 327(textureHeight) DescriptorSet 0 - Decorate 327(textureHeight) Binding 1 - Decorate 336(samplerHeight) DescriptorSet 0 - Decorate 336(samplerHeight) Binding 1 - Decorate 577(patch.Pos) BuiltIn Position - Decorate 584(patch.Normal) Location 0 - Decorate 591(patch.UV) Location 1 - Decorate 625(InvocationID) BuiltIn InvocationId - Decorate 634(@entryPointOutput.Pos) BuiltIn Position - Decorate 641(@entryPointOutput.Normal) Location 0 - Decorate 648(@entryPointOutput.UV) Location 1 - Decorate 663(@patchConstantOutput.TessLevelOuter) Patch - Decorate 663(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 678(@patchConstantOutput.TessLevelInner) Patch - Decorate 678(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + Name 28 "screenSpaceTessFactor(vf4;vf4;" + Name 26 "p0" + Name 27 "p1" + Name 59 "frustumCheck(vf4;vf2;" + Name 57 "Pos" + Name 58 "inUV" + Name 74 "VSOutput" + MemberName 74(VSOutput) 0 "Pos" + MemberName 74(VSOutput) 1 "Normal" + MemberName 74(VSOutput) 2 "UV" + Name 96 "ConstantsHSOutput" + MemberName 96(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 96(ConstantsHSOutput) 1 "TessLevelInner" + Name 109 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" + Name 108 "patch" + Name 121 "HSOutput" + MemberName 121(HSOutput) 0 "Pos" + MemberName 121(HSOutput) 1 "Normal" + MemberName 121(HSOutput) 2 "UV" + Name 134 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" + Name 132 "patch" + Name 133 "InvocationID" + Name 150 "midPoint" + Name 163 "radius" + Name 174 "v0" + Name 184 "UBO" + MemberName 184(UBO) 0 "projection" + MemberName 184(UBO) 1 "modelview" + MemberName 184(UBO) 2 "lightPos" + MemberName 184(UBO) 3 "frustumPlanes" + MemberName 184(UBO) 4 "displacementFactor" + MemberName 184(UBO) 5 "tessellationFactor" + MemberName 184(UBO) 6 "viewportDim" + MemberName 184(UBO) 7 "tessellatedEdgeSize" + Name 207 "ubo" + MemberName 207(ubo) 0 "ubo" + Name 214 "" + Name 229 "clip0" + Name 247 "clip1" + Name 324 "pos" + Name 338 "textureHeight" + Name 348 "samplerHeight" + Name 372 "i" + Name 423 "output" + Name 433 "param" + Name 436 "param" + Name 474 "param" + Name 477 "param" + Name 484 "param" + Name 487 "param" + Name 494 "param" + Name 497 "param" + Name 504 "param" + Name 507 "param" + Name 560 "output" + Name 591 "patch" + Name 594 "patch.Pos" + Name 601 "patch.Normal" + Name 608 "patch.UV" + Name 640 "InvocationID" + Name 642 "InvocationID" + Name 644 "flattenTemp" + Name 645 "param" + Name 647 "param" + Name 651 "@entryPointOutput.Pos" + Name 658 "@entryPointOutput.Normal" + Name 665 "@entryPointOutput.UV" + Name 675 "@patchConstantResult" + Name 676 "param" + Name 680 "@patchConstantOutput.TessLevelOuter" + Name 695 "@patchConstantOutput.TessLevelInner" + Decorate 182 ArrayStride 16 + MemberDecorate 184(UBO) 0 RowMajor + MemberDecorate 184(UBO) 0 Offset 0 + MemberDecorate 184(UBO) 0 MatrixStride 16 + MemberDecorate 184(UBO) 1 RowMajor + MemberDecorate 184(UBO) 1 Offset 64 + MemberDecorate 184(UBO) 1 MatrixStride 16 + MemberDecorate 184(UBO) 2 Offset 128 + MemberDecorate 184(UBO) 3 Offset 144 + MemberDecorate 184(UBO) 4 Offset 240 + MemberDecorate 184(UBO) 5 Offset 244 + MemberDecorate 184(UBO) 6 Offset 248 + MemberDecorate 184(UBO) 7 Offset 256 + MemberDecorate 207(ubo) 0 Offset 0 + Decorate 207(ubo) Block + Decorate 214 DescriptorSet 0 + Decorate 214 Binding 0 + Decorate 338(textureHeight) DescriptorSet 0 + Decorate 338(textureHeight) Binding 1 + Decorate 348(samplerHeight) DescriptorSet 0 + Decorate 348(samplerHeight) Binding 1 + Decorate 594(patch.Pos) BuiltIn Position + Decorate 601(patch.Normal) Location 0 + Decorate 608(patch.UV) Location 1 + Decorate 642(InvocationID) BuiltIn InvocationId + Decorate 651(@entryPointOutput.Pos) BuiltIn Position + Decorate 658(@entryPointOutput.Normal) Location 0 + Decorate 665(@entryPointOutput.UV) Location 1 + Decorate 680(@patchConstantOutput.TessLevelOuter) Patch + Decorate 680(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 695(@patchConstantOutput.TessLevelInner) Patch + Decorate 695(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -187,728 +187,745 @@ WARNING: 0:158: '' : attribute does not apply to entry point 19: 11(int) Constant 4 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) - 22: TypeFunction 8(float) 21(ptr) 21(ptr) - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 20 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 31 - 32: 11(int) Constant 65 - 34: 11(int) Constant 1 - 35: 11(int) Constant 5 - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 34 19 30 35 - 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 28 23 30 32 16 33 28 17 32 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 20 30 32 16 29 19 34 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 44: 11(int) Constant 2 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 20 30 32 16 29 19 44 - 46: TypeVector 8(float) 2 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 44 - 48: TypePointer Function 46(fvec2) - 49: TypeBool - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 14 44 16 - 52: TypeFunction 49(bool) 21(ptr) 48(ptr) - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 51 20 47 - 60: 11(int) Constant 95 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 53 30 60 16 33 58 17 60 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 20 30 60 16 59 19 34 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 47 30 60 16 59 19 44 - 69: TypeVector 8(float) 3 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 71(VSOutput): TypeStruct 18(fvec4) 69(fvec3) 46(fvec2) - 73: 11(int) Constant 44 - 74: 11(int) Constant 13 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 20 30 73 74 16 16 17 - 77: 11(int) Constant 45 - 78: 11(int) Constant 35 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 70 30 77 78 16 16 17 - 81: 11(int) Constant 46 - 82: 11(int) Constant 31 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 47 30 81 82 16 16 17 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 84 34 30 60 16 33 84 16 17 72 75 79 - 85: TypeArray 71(VSOutput) 19 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 83 19 - 87: TypePointer Function 85 - 88: TypeArray 8(float) 19 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 - 90: TypeArray 8(float) 44 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 44 -92(ConstantsHSOutput): TypeStruct 88 90 - 95: 11(int) Constant 58 - 96: 11(int) Constant 25 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 89 30 95 96 16 16 17 - 99: 11(int) Constant 59 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 91 30 99 96 16 16 17 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 101 34 30 60 16 33 101 16 17 93 97 - 102: TypeFunction 92(ConstantsHSOutput) 87(ptr) - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 100 86 - 109: 11(int) Constant 112 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 107 103 30 109 16 33 107 17 109 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 86 30 109 16 108 19 34 - 115: TypePointer Function 11(int) - 116(HSOutput): TypeStruct 18(fvec4) 69(fvec3) 46(fvec2) - 118: 11(int) Constant 51 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 20 30 118 14 16 16 17 - 120: 11(int) Constant 52 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 76 70 30 120 78 16 16 17 - 122: 11(int) Constant 53 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 47 30 122 82 16 16 17 - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 124 34 30 109 16 33 124 16 17 117 119 121 - 125: TypeFunction 116(HSOutput) 87(ptr) 115(ptr) - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 123 86 13 - 133: 11(int) Constant 158 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 131 126 30 133 16 33 131 17 133 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 113 86 30 133 16 132 19 34 - 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 139 13 30 133 16 132 19 44 - 144: 11(int) Constant 67 - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 147 20 30 144 16 29 19 - 149: 8(float) Constant 1056964608 - 155: 11(int) Constant 69 - 156: TypePointer Function 8(float) - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 30 155 16 29 19 - 164: 8(float) Constant 1073741824 - 167: 11(int) Constant 72 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 20 30 167 16 29 19 - 173: TypeMatrix 18(fvec4) 4 - 175: 49(bool) ConstantTrue - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 175 - 176: TypeArray 18(fvec4) 15 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 - 178(UBO): TypeStruct 173 173 18(fvec4) 176 8(float) 8(float) 46(fvec2) 8(float) - 181: 11(int) Constant 29 - 182: 11(int) Constant 20 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 174 30 181 182 16 16 17 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 174 30 181 182 16 16 17 - 186: 11(int) Constant 30 - 187: 11(int) Constant 17 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 20 30 186 187 16 16 17 - 190: 11(int) Constant 22 - 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 189 177 30 82 190 16 16 17 - 193: 11(int) Constant 27 - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 10 30 78 193 16 16 17 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 10 30 78 193 16 16 17 - 197: 11(int) Constant 34 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 196 47 30 197 182 16 16 17 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 192 10 30 78 193 16 16 17 - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 200 34 30 167 16 33 200 16 17 179 183 184 188 191 194 195 198 - 201(ubo): TypeStruct 178(UBO) - 204: 11(int) Constant 37 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 203 199 30 204 204 16 16 17 - 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 203 34 30 167 16 33 203 16 17 202 - 206: TypePointer Uniform 201(ubo) - 207: 206(ptr) Variable Uniform - 209: 11(int) Constant 8 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 205 30 167 16 33 1 207 209 - 210: TypeInt 32 1 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 211 14 19 16 - 213: 210(int) Constant 0 - 214: 210(int) Constant 1 - 215: TypePointer Uniform 173 - 220: 11(int) Constant 75 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 20 30 220 16 29 19 - 227: 8(float) Constant 0 - 228: 69(fvec3) ConstantComposite 227 227 227 - 238: 11(int) Constant 76 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 241 20 30 238 16 29 19 - 254: 11(int) Constant 79 - 261: 11(int) Constant 80 - 268: 11(int) Constant 83 - 269: 210(int) Constant 6 - 270: TypePointer Uniform 46(fvec2) - 281: 11(int) Constant 84 - 292: 11(int) Constant 89 - 296: 210(int) Constant 7 - 297: TypePointer Uniform 8(float) - 301: 210(int) Constant 5 - 305: 8(float) Constant 1065353216 - 306: 8(float) Constant 1115684864 - 313: 11(int) Constant 98 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 20 30 313 16 59 19 - 320: 11(int) Constant 99 - 321: TypeImage 8(float) 2D sampled format:Unknown - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 323 16 30 320 16 33 324 325 17 - 326: TypePointer UniformConstant 321 -327(textureHeight): 326(ptr) Variable UniformConstant - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 329 322 30 320 16 33 329 327(textureHeight) 209 - 331: TypeSampler - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 333 34 30 320 16 33 334 325 17 - 335: TypePointer UniformConstant 331 -336(samplerHeight): 335(ptr) Variable UniformConstant - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 338 332 30 320 16 33 338 336(samplerHeight) 209 - 340: TypeSampledImage 321 - 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 342 16 30 320 16 33 343 325 17 - 348: 210(int) Constant 4 - 357: 11(int) Constant 102 - 358: TypePointer Function 210(int) - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 361 212 30 357 16 59 19 - 376: 11(int) Constant 103 - 378: 210(int) Constant 3 - 380: TypePointer Uniform 18(fvec4) - 384: 8(float) Constant 1090519040 - 389: 49(bool) ConstantFalse - 392: 11(int) Constant 105 - 400: 11(int) Constant 108 - 406: 11(int) Constant 113 - 407: TypePointer Function 92(ConstantsHSOutput) - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 100 30 406 16 108 19 - 412: 88 ConstantComposite 227 227 227 227 - 413: 90 ConstantComposite 227 227 - 414:92(ConstantsHSOutput) ConstantComposite 412 413 - 416: 11(int) Constant 115 - 417: 210(int) Constant 2 - 430: 11(int) Constant 117 - 433: 11(int) Constant 118 - 436: 11(int) Constant 119 - 439: 11(int) Constant 120 - 442: 11(int) Constant 121 - 445: 11(int) Constant 122 - 450: 11(int) Constant 126 - 458: 11(int) Constant 128 - 468: 11(int) Constant 129 - 478: 11(int) Constant 130 - 488: 11(int) Constant 131 - 498: 11(int) Constant 132 - 506: 11(int) Constant 133 - 516: 11(int) Constant 139 - 519: 11(int) Constant 140 - 522: 11(int) Constant 141 - 525: 11(int) Constant 142 - 528: 11(int) Constant 143 - 531: 11(int) Constant 144 - 535: 11(int) Constant 148 - 542: 11(int) Constant 159 - 543: TypePointer Function 116(HSOutput) - 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 123 30 542 16 132 19 - 547: 18(fvec4) ConstantComposite 227 227 227 227 - 548: 46(fvec2) ConstantComposite 227 227 - 549:116(HSOutput) ConstantComposite 547 228 548 - 551: 11(int) Constant 160 - 557: 11(int) Constant 161 - 559: TypePointer Function 69(fvec3) - 564: 11(int) Constant 162 - 570: 11(int) Constant 163 - 575: TypeArray 18(fvec4) 19 - 576: TypePointer Input 575 - 577(patch.Pos): 576(ptr) Variable Input - 578: TypePointer Input 18(fvec4) - 582: TypeArray 69(fvec3) 19 - 583: TypePointer Input 582 -584(patch.Normal): 583(ptr) Variable Input - 585: TypePointer Input 69(fvec3) - 589: TypeArray 46(fvec2) 19 - 590: TypePointer Input 589 - 591(patch.UV): 590(ptr) Variable Input - 592: TypePointer Input 46(fvec2) - 624: TypePointer Input 11(int) -625(InvocationID): 624(ptr) Variable Input - 633: TypePointer Output 575 -634(@entryPointOutput.Pos): 633(ptr) Variable Output - 638: TypePointer Output 18(fvec4) - 640: TypePointer Output 582 -641(@entryPointOutput.Normal): 640(ptr) Variable Output - 645: TypePointer Output 69(fvec3) - 647: TypePointer Output 589 -648(@entryPointOutput.UV): 647(ptr) Variable Output - 652: TypePointer Output 46(fvec2) - 662: TypePointer Output 88 -663(@patchConstantOutput.TessLevelOuter): 662(ptr) Variable Output - 666: TypePointer Output 8(float) - 677: TypePointer Output 90 -678(@patchConstantOutput.TessLevelInner): 677(ptr) Variable Output + 22: 11(int) Constant 7 + 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 + 24: TypeFunction 8(float) 21(ptr) 21(ptr) + 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 20 + 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 33 + 34: 11(int) Constant 65 + 36: 11(int) Constant 1 + 37: 11(int) Constant 5 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 19 32 37 + 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 30 25 32 34 16 35 30 17 34 + 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 20 32 34 16 31 19 36 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 46: 11(int) Constant 2 + 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 32 34 16 31 19 46 + 48: TypeVector 8(float) 2 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 46 + 50: TypePointer Function 48(fvec2) + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 22 16 + 52: TypeBool + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 53 14 46 16 + 55: TypeFunction 52(bool) 21(ptr) 50(ptr) + 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 54 20 49 + 63: 11(int) Constant 95 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 61 56 32 63 16 35 61 17 63 + 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 20 32 63 16 62 19 36 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 49 32 63 16 62 19 46 + 72: TypeVector 8(float) 3 + 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 74(VSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) + 76: 11(int) Constant 44 + 77: 11(int) Constant 13 + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 20 32 76 77 16 16 17 + 80: 11(int) Constant 45 + 81: 11(int) Constant 35 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 80 81 16 16 17 + 84: 11(int) Constant 46 + 85: 11(int) Constant 31 + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 84 85 16 16 17 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 87 36 32 63 16 35 87 16 17 75 78 82 + 88: TypeArray 74(VSOutput) 19 + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 86 19 + 90: TypePointer Function 88 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 22 16 + 92: TypeArray 8(float) 19 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 + 94: TypeArray 8(float) 46 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 46 +96(ConstantsHSOutput): TypeStruct 92 94 + 99: 11(int) Constant 58 + 100: 11(int) Constant 25 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 93 32 99 100 16 16 17 + 103: 11(int) Constant 59 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 95 32 103 100 16 16 17 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 105 36 32 63 16 35 105 16 17 97 101 + 106: TypeFunction 96(ConstantsHSOutput) 90(ptr) + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 104 89 + 113: 11(int) Constant 112 + 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 111 107 32 113 16 35 111 17 113 + 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 89 32 113 16 112 19 36 + 119: TypePointer Function 11(int) + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 + 121(HSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) + 123: 11(int) Constant 51 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 20 32 123 14 16 16 17 + 125: 11(int) Constant 52 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 125 81 16 16 17 + 127: 11(int) Constant 53 + 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 127 85 16 16 17 + 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 129 36 32 113 16 35 129 16 17 122 124 126 + 130: TypeFunction 121(HSOutput) 90(ptr) 119(ptr) + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 128 89 13 + 138: 11(int) Constant 158 + 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 136 131 32 138 16 35 136 17 138 + 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 89 32 138 16 137 19 36 + 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 144 13 32 138 16 137 19 46 + 149: 11(int) Constant 67 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 20 32 149 16 31 19 + 154: 8(float) Constant 1056964608 + 160: 11(int) Constant 69 + 161: TypePointer Function 8(float) + 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 165 10 32 160 16 31 19 + 170: 8(float) Constant 1073741824 + 173: 11(int) Constant 72 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 176 20 32 173 16 31 19 + 179: TypeMatrix 18(fvec4) 4 + 181: 52(bool) ConstantTrue + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 181 + 182: TypeArray 18(fvec4) 15 + 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 + 184(UBO): TypeStruct 179 179 18(fvec4) 182 8(float) 8(float) 48(fvec2) 8(float) + 187: 11(int) Constant 29 + 188: 11(int) Constant 20 + 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 180 32 187 188 16 16 17 + 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 180 32 187 188 16 16 17 + 192: 11(int) Constant 30 + 193: 11(int) Constant 17 + 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 20 32 192 193 16 16 17 + 196: 11(int) Constant 22 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 183 32 85 196 16 16 17 + 199: 11(int) Constant 27 + 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 10 32 81 199 16 16 17 + 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 10 32 81 199 16 16 17 + 203: 11(int) Constant 34 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 202 49 32 203 188 16 16 17 + 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 10 32 81 199 16 16 17 + 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 206 36 32 173 16 35 206 16 17 185 189 190 194 197 200 201 204 + 207(ubo): TypeStruct 184(UBO) + 210: 11(int) Constant 37 + 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 209 205 32 210 210 16 16 17 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 209 36 32 173 16 35 209 16 17 208 + 212: TypePointer Uniform 207(ubo) + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 211 46 16 + 214: 212(ptr) Variable Uniform + 216: 11(int) Constant 8 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 211 32 173 16 35 1 214 216 + 217: TypeInt 32 1 + 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 218 14 19 16 + 220: 217(int) Constant 0 + 221: 217(int) Constant 1 + 222: TypePointer Uniform 179 + 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 180 46 16 + 228: 11(int) Constant 75 + 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 231 20 32 228 16 31 19 + 235: 8(float) Constant 0 + 236: 72(fvec3) ConstantComposite 235 235 235 + 246: 11(int) Constant 76 + 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 20 32 246 16 31 19 + 262: 11(int) Constant 79 + 269: 11(int) Constant 80 + 276: 11(int) Constant 83 + 277: 217(int) Constant 6 + 278: TypePointer Uniform 48(fvec2) + 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 46 16 + 290: 11(int) Constant 84 + 301: 11(int) Constant 89 + 305: 217(int) Constant 7 + 306: TypePointer Uniform 8(float) + 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 46 16 + 311: 217(int) Constant 5 + 315: 8(float) Constant 1065353216 + 316: 8(float) Constant 1115684864 + 323: 11(int) Constant 98 + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 326 20 32 323 16 62 19 + 330: 11(int) Constant 99 + 331: TypeImage 8(float) 2D sampled format:Unknown + 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 333 16 32 330 16 35 334 335 17 + 336: TypePointer UniformConstant 331 + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 332 16 16 +338(textureHeight): 336(ptr) Variable UniformConstant + 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 340 332 32 330 16 35 340 338(textureHeight) 216 + 342: TypeSampler + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 344 36 32 330 16 35 345 335 17 + 346: TypePointer UniformConstant 342 + 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 343 16 16 +348(samplerHeight): 346(ptr) Variable UniformConstant + 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 350 343 32 330 16 35 350 348(samplerHeight) 216 + 352: TypeSampledImage 331 + 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 354 16 32 330 16 35 355 335 17 + 360: 217(int) Constant 4 + 369: 11(int) Constant 102 + 370: TypePointer Function 217(int) + 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 219 22 16 + 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 374 219 32 369 16 62 19 + 389: 11(int) Constant 103 + 391: 217(int) Constant 3 + 393: TypePointer Uniform 18(fvec4) + 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 + 398: 8(float) Constant 1090519040 + 403: 52(bool) ConstantFalse + 406: 11(int) Constant 105 + 414: 11(int) Constant 108 + 420: 11(int) Constant 113 + 421: TypePointer Function 96(ConstantsHSOutput) + 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 104 22 16 + 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 425 104 32 420 16 112 19 + 427: 92 ConstantComposite 235 235 235 235 + 428: 94 ConstantComposite 235 235 + 429:96(ConstantsHSOutput) ConstantComposite 427 428 + 431: 11(int) Constant 115 + 432: 217(int) Constant 2 + 445: 11(int) Constant 117 + 448: 11(int) Constant 118 + 451: 11(int) Constant 119 + 454: 11(int) Constant 120 + 457: 11(int) Constant 121 + 460: 11(int) Constant 122 + 465: 11(int) Constant 126 + 473: 11(int) Constant 128 + 483: 11(int) Constant 129 + 493: 11(int) Constant 130 + 503: 11(int) Constant 131 + 513: 11(int) Constant 132 + 521: 11(int) Constant 133 + 531: 11(int) Constant 139 + 534: 11(int) Constant 140 + 537: 11(int) Constant 141 + 540: 11(int) Constant 142 + 543: 11(int) Constant 143 + 546: 11(int) Constant 144 + 550: 11(int) Constant 148 + 557: 11(int) Constant 159 + 558: TypePointer Function 121(HSOutput) + 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 22 16 + 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 425 128 32 557 16 137 19 + 563: 18(fvec4) ConstantComposite 235 235 235 235 + 564: 48(fvec2) ConstantComposite 235 235 + 565:121(HSOutput) ConstantComposite 563 236 564 + 567: 11(int) Constant 160 + 573: 11(int) Constant 161 + 575: TypePointer Function 72(fvec3) + 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 22 16 + 581: 11(int) Constant 162 + 587: 11(int) Constant 163 + 592: TypeArray 18(fvec4) 19 + 593: TypePointer Input 592 + 594(patch.Pos): 593(ptr) Variable Input + 595: TypePointer Input 18(fvec4) + 599: TypeArray 72(fvec3) 19 + 600: TypePointer Input 599 +601(patch.Normal): 600(ptr) Variable Input + 602: TypePointer Input 72(fvec3) + 606: TypeArray 48(fvec2) 19 + 607: TypePointer Input 606 + 608(patch.UV): 607(ptr) Variable Input + 609: TypePointer Input 48(fvec2) + 641: TypePointer Input 11(int) +642(InvocationID): 641(ptr) Variable Input + 650: TypePointer Output 592 +651(@entryPointOutput.Pos): 650(ptr) Variable Output + 655: TypePointer Output 18(fvec4) + 657: TypePointer Output 599 +658(@entryPointOutput.Normal): 657(ptr) Variable Output + 662: TypePointer Output 72(fvec3) + 664: TypePointer Output 606 +665(@entryPointOutput.UV): 664(ptr) Variable Output + 669: TypePointer Output 48(fvec2) + 679: TypePointer Output 92 +680(@patchConstantOutput.TessLevelOuter): 679(ptr) Variable Output + 683: TypePointer Output 8(float) + 694: TypePointer Output 94 +695(@patchConstantOutput.TessLevelInner): 694(ptr) Variable Output Line 1 158 1 6(main): 4 Function None 5 7: Label - 574(patch): 87(ptr) Variable Function -623(InvocationID): 115(ptr) Variable Function -627(flattenTemp): 543(ptr) Variable Function - 628(param): 87(ptr) Variable Function - 630(param): 115(ptr) Variable Function -658(@patchConstantResult): 407(ptr) Variable Function - 659(param): 87(ptr) Variable Function + 591(patch): 90(ptr) Variable Function +640(InvocationID): 119(ptr) Variable Function +644(flattenTemp): 558(ptr) Variable Function + 645(param): 90(ptr) Variable Function + 647(param): 119(ptr) Variable Function +675(@patchConstantResult): 421(ptr) Variable Function + 676(param): 90(ptr) Variable Function Line 1 158 0 - 579: 578(ptr) AccessChain 577(patch.Pos) 213 - 580: 18(fvec4) Load 579 - 581: 21(ptr) AccessChain 574(patch) 213 213 - Store 581 580 - 586: 585(ptr) AccessChain 584(patch.Normal) 213 - 587: 69(fvec3) Load 586 - 588: 559(ptr) AccessChain 574(patch) 213 214 - Store 588 587 - 593: 592(ptr) AccessChain 591(patch.UV) 213 - 594: 46(fvec2) Load 593 - 595: 48(ptr) AccessChain 574(patch) 213 417 - Store 595 594 - 596: 578(ptr) AccessChain 577(patch.Pos) 214 + 596: 595(ptr) AccessChain 594(patch.Pos) 220 597: 18(fvec4) Load 596 - 598: 21(ptr) AccessChain 574(patch) 214 213 + 598: 21(ptr) AccessChain 591(patch) 220 220 Store 598 597 - 599: 585(ptr) AccessChain 584(patch.Normal) 214 - 600: 69(fvec3) Load 599 - 601: 559(ptr) AccessChain 574(patch) 214 214 - Store 601 600 - 602: 592(ptr) AccessChain 591(patch.UV) 214 - 603: 46(fvec2) Load 602 - 604: 48(ptr) AccessChain 574(patch) 214 417 - Store 604 603 - 605: 578(ptr) AccessChain 577(patch.Pos) 417 - 606: 18(fvec4) Load 605 - 607: 21(ptr) AccessChain 574(patch) 417 213 - Store 607 606 - 608: 585(ptr) AccessChain 584(patch.Normal) 417 - 609: 69(fvec3) Load 608 - 610: 559(ptr) AccessChain 574(patch) 417 214 - Store 610 609 - 611: 592(ptr) AccessChain 591(patch.UV) 417 - 612: 46(fvec2) Load 611 - 613: 48(ptr) AccessChain 574(patch) 417 417 - Store 613 612 - 614: 578(ptr) AccessChain 577(patch.Pos) 378 - 615: 18(fvec4) Load 614 - 616: 21(ptr) AccessChain 574(patch) 378 213 - Store 616 615 - 617: 585(ptr) AccessChain 584(patch.Normal) 378 - 618: 69(fvec3) Load 617 - 619: 559(ptr) AccessChain 574(patch) 378 214 - Store 619 618 - 620: 592(ptr) AccessChain 591(patch.UV) 378 - 621: 46(fvec2) Load 620 - 622: 48(ptr) AccessChain 574(patch) 378 417 - Store 622 621 - 626: 11(int) Load 625(InvocationID) - Store 623(InvocationID) 626 - 629: 85 Load 574(patch) - Store 628(param) 629 - 631: 11(int) Load 623(InvocationID) - Store 630(param) 631 - 632:116(HSOutput) FunctionCall 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 628(param) 630(param) - Store 627(flattenTemp) 632 - 635: 11(int) Load 625(InvocationID) - 636: 21(ptr) AccessChain 627(flattenTemp) 213 - 637: 18(fvec4) Load 636 - 639: 638(ptr) AccessChain 634(@entryPointOutput.Pos) 635 - Store 639 637 - 642: 11(int) Load 625(InvocationID) - 643: 559(ptr) AccessChain 627(flattenTemp) 214 - 644: 69(fvec3) Load 643 - 646: 645(ptr) AccessChain 641(@entryPointOutput.Normal) 642 - Store 646 644 - 649: 11(int) Load 625(InvocationID) - 650: 48(ptr) AccessChain 627(flattenTemp) 417 - 651: 46(fvec2) Load 650 - 653: 652(ptr) AccessChain 648(@entryPointOutput.UV) 649 - Store 653 651 - ControlBarrier 44 19 16 - 654: 11(int) Load 625(InvocationID) - 655: 49(bool) IEqual 654 213 - SelectionMerge 657 None - BranchConditional 655 656 657 - 656: Label - 660: 85 Load 574(patch) - Store 659(param) 660 - 661:92(ConstantsHSOutput) FunctionCall 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 659(param) - Store 658(@patchConstantResult) 661 - 664: 156(ptr) AccessChain 658(@patchConstantResult) 213 213 - 665: 8(float) Load 664 - 667: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 213 - Store 667 665 - 668: 156(ptr) AccessChain 658(@patchConstantResult) 213 214 - 669: 8(float) Load 668 - 670: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 214 - Store 670 669 - 671: 156(ptr) AccessChain 658(@patchConstantResult) 213 417 - 672: 8(float) Load 671 - 673: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 417 - Store 673 672 - 674: 156(ptr) AccessChain 658(@patchConstantResult) 213 378 - 675: 8(float) Load 674 - 676: 666(ptr) AccessChain 663(@patchConstantOutput.TessLevelOuter) 378 - Store 676 675 - 679: 156(ptr) AccessChain 658(@patchConstantResult) 214 213 - 680: 8(float) Load 679 - 681: 666(ptr) AccessChain 678(@patchConstantOutput.TessLevelInner) 213 - Store 681 680 - 682: 156(ptr) AccessChain 658(@patchConstantResult) 214 214 - 683: 8(float) Load 682 - 684: 666(ptr) AccessChain 678(@patchConstantOutput.TessLevelInner) 214 - Store 684 683 - Branch 657 - 657: Label + 603: 602(ptr) AccessChain 601(patch.Normal) 220 + 604: 72(fvec3) Load 603 + 605: 575(ptr) AccessChain 591(patch) 220 221 + Store 605 604 + 610: 609(ptr) AccessChain 608(patch.UV) 220 + 611: 48(fvec2) Load 610 + 612: 50(ptr) AccessChain 591(patch) 220 432 + Store 612 611 + 613: 595(ptr) AccessChain 594(patch.Pos) 221 + 614: 18(fvec4) Load 613 + 615: 21(ptr) AccessChain 591(patch) 221 220 + Store 615 614 + 616: 602(ptr) AccessChain 601(patch.Normal) 221 + 617: 72(fvec3) Load 616 + 618: 575(ptr) AccessChain 591(patch) 221 221 + Store 618 617 + 619: 609(ptr) AccessChain 608(patch.UV) 221 + 620: 48(fvec2) Load 619 + 621: 50(ptr) AccessChain 591(patch) 221 432 + Store 621 620 + 622: 595(ptr) AccessChain 594(patch.Pos) 432 + 623: 18(fvec4) Load 622 + 624: 21(ptr) AccessChain 591(patch) 432 220 + Store 624 623 + 625: 602(ptr) AccessChain 601(patch.Normal) 432 + 626: 72(fvec3) Load 625 + 627: 575(ptr) AccessChain 591(patch) 432 221 + Store 627 626 + 628: 609(ptr) AccessChain 608(patch.UV) 432 + 629: 48(fvec2) Load 628 + 630: 50(ptr) AccessChain 591(patch) 432 432 + Store 630 629 + 631: 595(ptr) AccessChain 594(patch.Pos) 391 + 632: 18(fvec4) Load 631 + 633: 21(ptr) AccessChain 591(patch) 391 220 + Store 633 632 + 634: 602(ptr) AccessChain 601(patch.Normal) 391 + 635: 72(fvec3) Load 634 + 636: 575(ptr) AccessChain 591(patch) 391 221 + Store 636 635 + 637: 609(ptr) AccessChain 608(patch.UV) 391 + 638: 48(fvec2) Load 637 + 639: 50(ptr) AccessChain 591(patch) 391 432 + Store 639 638 + 643: 11(int) Load 642(InvocationID) + Store 640(InvocationID) 643 + 646: 88 Load 591(patch) + Store 645(param) 646 + 648: 11(int) Load 640(InvocationID) + Store 647(param) 648 + 649:121(HSOutput) FunctionCall 134(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 645(param) 647(param) + Store 644(flattenTemp) 649 + 652: 11(int) Load 642(InvocationID) + 653: 21(ptr) AccessChain 644(flattenTemp) 220 + 654: 18(fvec4) Load 653 + 656: 655(ptr) AccessChain 651(@entryPointOutput.Pos) 652 + Store 656 654 + 659: 11(int) Load 642(InvocationID) + 660: 575(ptr) AccessChain 644(flattenTemp) 221 + 661: 72(fvec3) Load 660 + 663: 662(ptr) AccessChain 658(@entryPointOutput.Normal) 659 + Store 663 661 + 666: 11(int) Load 642(InvocationID) + 667: 50(ptr) AccessChain 644(flattenTemp) 432 + 668: 48(fvec2) Load 667 + 670: 669(ptr) AccessChain 665(@entryPointOutput.UV) 666 + Store 670 668 + ControlBarrier 46 19 16 + 671: 11(int) Load 642(InvocationID) + 672: 52(bool) IEqual 671 220 + SelectionMerge 674 None + BranchConditional 672 673 674 + 673: Label + 677: 88 Load 591(patch) + Store 676(param) 677 + 678:96(ConstantsHSOutput) FunctionCall 109(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 676(param) + Store 675(@patchConstantResult) 678 + 681: 161(ptr) AccessChain 675(@patchConstantResult) 220 220 + 682: 8(float) Load 681 + 684: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 220 + Store 684 682 + 685: 161(ptr) AccessChain 675(@patchConstantResult) 220 221 + 686: 8(float) Load 685 + 687: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 221 + Store 687 686 + 688: 161(ptr) AccessChain 675(@patchConstantResult) 220 432 + 689: 8(float) Load 688 + 690: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 432 + Store 690 689 + 691: 161(ptr) AccessChain 675(@patchConstantResult) 220 391 + 692: 8(float) Load 691 + 693: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 391 + Store 693 692 + 696: 161(ptr) AccessChain 675(@patchConstantResult) 221 220 + 697: 8(float) Load 696 + 698: 683(ptr) AccessChain 695(@patchConstantOutput.TessLevelInner) 220 + Store 698 697 + 699: 161(ptr) AccessChain 675(@patchConstantResult) 221 221 + 700: 8(float) Load 699 + 701: 683(ptr) AccessChain 695(@patchConstantOutput.TessLevelInner) 221 + Store 701 700 + Branch 674 + 674: Label Return FunctionEnd Line 1 65 1 -26(screenSpaceTessFactor(vf4;vf4;): 8(float) Function None 22 - 24(p0): 21(ptr) FunctionParameter - 25(p1): 21(ptr) FunctionParameter - 27: Label - 145(midPoint): 21(ptr) Variable Function - 157(radius): 156(ptr) Variable Function - 168(v0): 21(ptr) Variable Function - 221(clip0): 21(ptr) Variable Function - 239(clip1): 21(ptr) Variable Function - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 32 32 16 16 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 24(p0) 41 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 25(p1) 41 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 29 26(screenSpaceTessFactor(vf4;vf4;) - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 144 144 16 16 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 146 145(midPoint) 41 - 150: 18(fvec4) Load 24(p0) - 151: 18(fvec4) Load 25(p1) - 152: 18(fvec4) FAdd 150 151 - 153: 18(fvec4) VectorTimesScalar 152 149 - Store 145(midPoint) 153 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 155 155 16 16 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(radius) 41 - 161: 18(fvec4) Load 24(p0) - 162: 18(fvec4) Load 25(p1) - 163: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 161 162 - 165: 8(float) FDiv 163 164 - Store 157(radius) 165 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 167 167 16 16 - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 169 168(v0) 41 - 172: 18(fvec4) Load 145(midPoint) - 216: 215(ptr) AccessChain 207 213 214 - 217: 173 Load 216 - 218: 18(fvec4) VectorTimesMatrix 172 217 - Store 168(v0) 218 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 220 220 16 16 - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(clip0) 41 - 225: 18(fvec4) Load 168(v0) - 226: 8(float) Load 157(radius) - 229: 8(float) CompositeExtract 228 0 - 230: 8(float) CompositeExtract 228 1 - 231: 8(float) CompositeExtract 228 2 - 232: 18(fvec4) CompositeConstruct 226 229 230 231 - 233: 18(fvec4) FSub 225 232 - 234: 215(ptr) AccessChain 207 213 213 - 235: 173 Load 234 - 236: 18(fvec4) VectorTimesMatrix 233 235 - Store 221(clip0) 236 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 238 238 16 16 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 240 239(clip1) 41 - 243: 18(fvec4) Load 168(v0) - 244: 8(float) Load 157(radius) - 245: 8(float) CompositeExtract 228 0 - 246: 8(float) CompositeExtract 228 1 - 247: 8(float) CompositeExtract 228 2 - 248: 18(fvec4) CompositeConstruct 244 245 246 247 - 249: 18(fvec4) FAdd 243 248 - 250: 215(ptr) AccessChain 207 213 213 - 251: 173 Load 250 - 252: 18(fvec4) VectorTimesMatrix 249 251 - Store 239(clip1) 252 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 254 254 16 16 - 255: 156(ptr) AccessChain 221(clip0) 17 - 256: 8(float) Load 255 - 257: 18(fvec4) Load 221(clip0) - 258: 18(fvec4) CompositeConstruct 256 256 256 256 - 259: 18(fvec4) FDiv 257 258 - Store 221(clip0) 259 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 261 261 16 16 - 262: 156(ptr) AccessChain 239(clip1) 17 - 263: 8(float) Load 262 - 264: 18(fvec4) Load 239(clip1) - 265: 18(fvec4) CompositeConstruct 263 263 263 263 - 266: 18(fvec4) FDiv 264 265 - Store 239(clip1) 266 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 268 268 16 16 - 271: 270(ptr) AccessChain 207 213 269 - 272: 46(fvec2) Load 271 - 273: 18(fvec4) Load 221(clip0) - 274: 46(fvec2) VectorShuffle 273 273 0 1 - 275: 46(fvec2) FMul 274 272 - 276: 156(ptr) AccessChain 221(clip0) 16 - 277: 8(float) CompositeExtract 275 0 - Store 276 277 - 278: 156(ptr) AccessChain 221(clip0) 34 - 279: 8(float) CompositeExtract 275 1 - Store 278 279 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 281 281 16 16 - 282: 270(ptr) AccessChain 207 213 269 - 283: 46(fvec2) Load 282 - 284: 18(fvec4) Load 239(clip1) - 285: 46(fvec2) VectorShuffle 284 284 0 1 - 286: 46(fvec2) FMul 285 283 - 287: 156(ptr) AccessChain 239(clip1) 16 - 288: 8(float) CompositeExtract 286 0 +28(screenSpaceTessFactor(vf4;vf4;): 8(float) Function None 24 + 26(p0): 21(ptr) FunctionParameter + 27(p1): 21(ptr) FunctionParameter + 29: Label + 150(midPoint): 21(ptr) Variable Function + 163(radius): 161(ptr) Variable Function + 174(v0): 21(ptr) Variable Function + 229(clip0): 21(ptr) Variable Function + 247(clip1): 21(ptr) Variable Function + 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 34 34 16 16 + 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 26(p0) 43 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 27(p1) 43 + 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(screenSpaceTessFactor(vf4;vf4;) + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 + 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 149 149 16 16 + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 151 150(midPoint) 43 + 155: 18(fvec4) Load 26(p0) + 156: 18(fvec4) Load 27(p1) + 157: 18(fvec4) FAdd 155 156 + 158: 18(fvec4) VectorTimesScalar 157 154 + Store 150(midPoint) 158 + 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 160 160 16 16 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 164 163(radius) 43 + 167: 18(fvec4) Load 26(p0) + 168: 18(fvec4) Load 27(p1) + 169: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 167 168 + 171: 8(float) FDiv 169 170 + Store 163(radius) 171 + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 173 173 16 16 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 175 174(v0) 43 + 178: 18(fvec4) Load 150(midPoint) + 224: 222(ptr) AccessChain 214 220 221 + 225: 179 Load 224 + 226: 18(fvec4) VectorTimesMatrix 178 225 + Store 174(v0) 226 + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 228 228 16 16 + 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 230 229(clip0) 43 + 233: 18(fvec4) Load 174(v0) + 234: 8(float) Load 163(radius) + 237: 8(float) CompositeExtract 236 0 + 238: 8(float) CompositeExtract 236 1 + 239: 8(float) CompositeExtract 236 2 + 240: 18(fvec4) CompositeConstruct 234 237 238 239 + 241: 18(fvec4) FSub 233 240 + 242: 222(ptr) AccessChain 214 220 220 + 243: 179 Load 242 + 244: 18(fvec4) VectorTimesMatrix 241 243 + Store 229(clip0) 244 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 246 246 16 16 + 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(clip1) 43 + 251: 18(fvec4) Load 174(v0) + 252: 8(float) Load 163(radius) + 253: 8(float) CompositeExtract 236 0 + 254: 8(float) CompositeExtract 236 1 + 255: 8(float) CompositeExtract 236 2 + 256: 18(fvec4) CompositeConstruct 252 253 254 255 + 257: 18(fvec4) FAdd 251 256 + 258: 222(ptr) AccessChain 214 220 220 + 259: 179 Load 258 + 260: 18(fvec4) VectorTimesMatrix 257 259 + Store 247(clip1) 260 + 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 262 262 16 16 + 263: 161(ptr) AccessChain 229(clip0) 17 + 264: 8(float) Load 263 + 265: 18(fvec4) Load 229(clip0) + 266: 18(fvec4) CompositeConstruct 264 264 264 264 + 267: 18(fvec4) FDiv 265 266 + Store 229(clip0) 267 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 269 269 16 16 + 270: 161(ptr) AccessChain 247(clip1) 17 + 271: 8(float) Load 270 + 272: 18(fvec4) Load 247(clip1) + 273: 18(fvec4) CompositeConstruct 271 271 271 271 + 274: 18(fvec4) FDiv 272 273 + Store 247(clip1) 274 + 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 276 276 16 16 + 280: 278(ptr) AccessChain 214 220 277 + 281: 48(fvec2) Load 280 + 282: 18(fvec4) Load 229(clip0) + 283: 48(fvec2) VectorShuffle 282 282 0 1 + 284: 48(fvec2) FMul 283 281 + 285: 161(ptr) AccessChain 229(clip0) 16 + 286: 8(float) CompositeExtract 284 0 + Store 285 286 + 287: 161(ptr) AccessChain 229(clip0) 36 + 288: 8(float) CompositeExtract 284 1 Store 287 288 - 289: 156(ptr) AccessChain 239(clip1) 34 - 290: 8(float) CompositeExtract 286 1 - Store 289 290 - 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 292 292 16 16 - 293: 18(fvec4) Load 221(clip0) - 294: 18(fvec4) Load 239(clip1) - 295: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 293 294 - 298: 297(ptr) AccessChain 207 213 296 - 299: 8(float) Load 298 - 300: 8(float) FDiv 295 299 - 302: 297(ptr) AccessChain 207 213 301 - 303: 8(float) Load 302 - 304: 8(float) FMul 300 303 - 307: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 304 305 306 - ReturnValue 307 + 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 290 290 16 16 + 291: 278(ptr) AccessChain 214 220 277 + 292: 48(fvec2) Load 291 + 293: 18(fvec4) Load 247(clip1) + 294: 48(fvec2) VectorShuffle 293 293 0 1 + 295: 48(fvec2) FMul 294 292 + 296: 161(ptr) AccessChain 247(clip1) 16 + 297: 8(float) CompositeExtract 295 0 + Store 296 297 + 298: 161(ptr) AccessChain 247(clip1) 36 + 299: 8(float) CompositeExtract 295 1 + Store 298 299 + 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 301 301 16 16 + 302: 18(fvec4) Load 229(clip0) + 303: 18(fvec4) Load 247(clip1) + 304: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 302 303 + 308: 306(ptr) AccessChain 214 220 305 + 309: 8(float) Load 308 + 310: 8(float) FDiv 304 309 + 312: 306(ptr) AccessChain 214 220 311 + 313: 8(float) Load 312 + 314: 8(float) FMul 310 313 + 317: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 314 315 316 + ReturnValue 317 FunctionEnd Line 1 95 1 -56(frustumCheck(vf4;vf2;): 49(bool) Function None 52 - 54(Pos): 21(ptr) FunctionParameter - 55(inUV): 48(ptr) FunctionParameter - 57: Label - 314(pos): 21(ptr) Variable Function - 359(i): 358(ptr) Variable Function - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 60 60 16 16 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 54(Pos) 41 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 55(inUV) 41 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 56(frustumCheck(vf4;vf2;) - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 313 313 16 16 - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(pos) 41 - 318: 18(fvec4) Load 54(Pos) - Store 314(pos) 318 - 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 320 320 16 16 - 330: 321 Load 327(textureHeight) - 339: 331 Load 336(samplerHeight) - 344: 340 SampledImage 330 339 - 345: 46(fvec2) Load 55(inUV) - 346: 18(fvec4) ImageSampleExplicitLod 344 345 Lod 227 - 347: 8(float) CompositeExtract 346 0 - 349: 297(ptr) AccessChain 207 213 348 - 350: 8(float) Load 349 - 351: 8(float) FMul 347 350 - 352: 156(ptr) AccessChain 314(pos) 34 - 353: 8(float) Load 352 - 354: 8(float) FSub 353 351 - 355: 156(ptr) AccessChain 314(pos) 34 - Store 355 354 - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 - 362: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 360 359(i) 41 - Store 359(i) 213 - Branch 363 - 363: Label - 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 - LoopMerge 365 366 None - Branch 369 - 369: Label - 370: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 - 372: 210(int) Load 359(i) - 373: 49(bool) SLessThan 372 269 - BranchConditional 373 364 365 - 364: Label - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 376 376 16 16 - 377: 18(fvec4) Load 314(pos) - 379: 210(int) Load 359(i) - 381: 380(ptr) AccessChain 207 213 378 379 - 382: 18(fvec4) Load 381 - 383: 8(float) Dot 377 382 - 385: 8(float) FAdd 383 384 - 386: 49(bool) FOrdLessThan 385 227 - SelectionMerge 388 None - BranchConditional 386 387 388 - 387: Label - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 392 392 16 16 - ReturnValue 389 - 388: Label - Branch 366 - 366: Label - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 357 357 16 16 - 396: 210(int) Load 359(i) - 397: 210(int) IAdd 396 214 - Store 359(i) 397 - Branch 363 - 365: Label - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 400 400 16 16 - ReturnValue 175 +59(frustumCheck(vf4;vf2;): 52(bool) Function None 55 + 57(Pos): 21(ptr) FunctionParameter + 58(inUV): 50(ptr) FunctionParameter + 60: Label + 324(pos): 21(ptr) Variable Function + 372(i): 370(ptr) Variable Function + 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 63 63 16 16 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 57(Pos) 43 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 58(inUV) 43 + 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) + 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 323 323 16 16 + 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 325 324(pos) 43 + 328: 18(fvec4) Load 57(Pos) + Store 324(pos) 328 + 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 330 330 16 16 + 341: 331 Load 338(textureHeight) + 351: 342 Load 348(samplerHeight) + 356: 352 SampledImage 341 351 + 357: 48(fvec2) Load 58(inUV) + 358: 18(fvec4) ImageSampleExplicitLod 356 357 Lod 235 + 359: 8(float) CompositeExtract 358 0 + 361: 306(ptr) AccessChain 214 220 360 + 362: 8(float) Load 361 + 363: 8(float) FMul 359 362 + 364: 161(ptr) AccessChain 324(pos) 36 + 365: 8(float) Load 364 + 366: 8(float) FSub 365 363 + 367: 161(ptr) AccessChain 324(pos) 36 + Store 367 366 + 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 + 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 373 372(i) 43 + Store 372(i) 220 + Branch 376 + 376: Label + 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 + LoopMerge 378 379 None + Branch 382 + 382: Label + 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 + 385: 217(int) Load 372(i) + 386: 52(bool) SLessThan 385 277 + BranchConditional 386 377 378 + 377: Label + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 389 389 16 16 + 390: 18(fvec4) Load 324(pos) + 392: 217(int) Load 372(i) + 395: 393(ptr) AccessChain 214 220 391 392 + 396: 18(fvec4) Load 395 + 397: 8(float) Dot 390 396 + 399: 8(float) FAdd 397 398 + 400: 52(bool) FOrdLessThan 399 235 + SelectionMerge 402 None + BranchConditional 400 401 402 + 401: Label + 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 406 406 16 16 + ReturnValue 403 + 402: Label + Branch 379 + 379: Label + 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 + 410: 217(int) Load 372(i) + 411: 217(int) IAdd 410 221 + Store 372(i) 411 + Branch 376 + 378: Label + 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 414 414 16 16 + ReturnValue 181 FunctionEnd Line 1 112 1 -105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):92(ConstantsHSOutput) Function None 102 - 104(patch): 87(ptr) FunctionParameter - 106: Label - 408(output): 407(ptr) Variable Function - 418(param): 21(ptr) Variable Function - 421(param): 48(ptr) Variable Function - 459(param): 21(ptr) Variable Function - 462(param): 21(ptr) Variable Function - 469(param): 21(ptr) Variable Function - 472(param): 21(ptr) Variable Function - 479(param): 21(ptr) Variable Function - 482(param): 21(ptr) Variable Function - 489(param): 21(ptr) Variable Function - 492(param): 21(ptr) Variable Function - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 109 109 16 16 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 112 104(patch) 41 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 108 105(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 406 406 16 16 - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 409 408(output) 41 - Store 408(output) 414 - 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 416 416 16 16 - 419: 21(ptr) AccessChain 104(patch) 213 213 - 420: 18(fvec4) Load 419 - Store 418(param) 420 - 422: 48(ptr) AccessChain 104(patch) 213 417 - 423: 46(fvec2) Load 422 - Store 421(param) 423 - 424: 49(bool) FunctionCall 56(frustumCheck(vf4;vf2;) 418(param) 421(param) - 425: 49(bool) LogicalNot 424 - SelectionMerge 427 None - BranchConditional 425 426 447 - 426: Label - 428: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 430 430 16 16 - 431: 156(ptr) AccessChain 408(output) 214 213 - Store 431 227 - 432: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 433 433 16 16 - 434: 156(ptr) AccessChain 408(output) 214 214 - Store 434 227 - 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 436 436 16 16 - 437: 156(ptr) AccessChain 408(output) 213 213 - Store 437 227 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 439 439 16 16 - 440: 156(ptr) AccessChain 408(output) 213 214 - Store 440 227 - 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 442 442 16 16 - 443: 156(ptr) AccessChain 408(output) 213 417 - Store 443 227 - 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 445 445 16 16 - 446: 156(ptr) AccessChain 408(output) 213 378 - Store 446 227 - Branch 427 - 447: Label - 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 450 450 16 16 - 451: 297(ptr) AccessChain 207 213 301 - 452: 8(float) Load 451 - 453: 49(bool) FOrdGreaterThan 452 227 - SelectionMerge 455 None - BranchConditional 453 454 513 - 454: Label - 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 458 458 16 16 - 460: 21(ptr) AccessChain 104(patch) 378 213 - 461: 18(fvec4) Load 460 - Store 459(param) 461 - 463: 21(ptr) AccessChain 104(patch) 213 213 - 464: 18(fvec4) Load 463 - Store 462(param) 464 - 465: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 459(param) 462(param) - 466: 156(ptr) AccessChain 408(output) 213 213 - Store 466 465 - 467: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 468 468 16 16 - 470: 21(ptr) AccessChain 104(patch) 213 213 - 471: 18(fvec4) Load 470 - Store 469(param) 471 - 473: 21(ptr) AccessChain 104(patch) 214 213 - 474: 18(fvec4) Load 473 - Store 472(param) 474 - 475: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 469(param) 472(param) - 476: 156(ptr) AccessChain 408(output) 213 214 - Store 476 475 - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 478 478 16 16 - 480: 21(ptr) AccessChain 104(patch) 214 213 - 481: 18(fvec4) Load 480 - Store 479(param) 481 - 483: 21(ptr) AccessChain 104(patch) 417 213 - 484: 18(fvec4) Load 483 - Store 482(param) 484 - 485: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 479(param) 482(param) - 486: 156(ptr) AccessChain 408(output) 213 417 - Store 486 485 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 488 488 16 16 - 490: 21(ptr) AccessChain 104(patch) 417 213 - 491: 18(fvec4) Load 490 - Store 489(param) 491 - 493: 21(ptr) AccessChain 104(patch) 378 213 - 494: 18(fvec4) Load 493 - Store 492(param) 494 - 495: 8(float) FunctionCall 26(screenSpaceTessFactor(vf4;vf4;) 489(param) 492(param) - 496: 156(ptr) AccessChain 408(output) 213 378 - Store 496 495 - 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 498 498 16 16 - 499: 156(ptr) AccessChain 408(output) 213 213 - 500: 8(float) Load 499 - 501: 156(ptr) AccessChain 408(output) 213 378 - 502: 8(float) Load 501 - 503: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 500 502 149 - 504: 156(ptr) AccessChain 408(output) 214 213 - Store 504 503 - 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 506 506 16 16 - 507: 156(ptr) AccessChain 408(output) 213 417 - 508: 8(float) Load 507 - 509: 156(ptr) AccessChain 408(output) 213 214 - 510: 8(float) Load 509 - 511: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 508 510 149 - 512: 156(ptr) AccessChain 408(output) 214 214 - Store 512 511 - Branch 455 - 513: Label - 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 516 516 16 16 - 517: 156(ptr) AccessChain 408(output) 214 213 - Store 517 305 - 518: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 519 519 16 16 - 520: 156(ptr) AccessChain 408(output) 214 214 - Store 520 305 - 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 522 522 16 16 - 523: 156(ptr) AccessChain 408(output) 213 213 - Store 523 305 - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 525 525 16 16 - 526: 156(ptr) AccessChain 408(output) 213 214 - Store 526 305 - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 528 528 16 16 - 529: 156(ptr) AccessChain 408(output) 213 417 - Store 529 305 - 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 531 531 16 16 - 532: 156(ptr) AccessChain 408(output) 213 378 - Store 532 305 - Branch 455 - 455: Label - Branch 427 - 427: Label - 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 108 - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 535 535 16 16 - 536:92(ConstantsHSOutput) Load 408(output) - ReturnValue 536 +109(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):96(ConstantsHSOutput) Function None 106 + 108(patch): 90(ptr) FunctionParameter + 110: Label + 423(output): 421(ptr) Variable Function + 433(param): 21(ptr) Variable Function + 436(param): 50(ptr) Variable Function + 474(param): 21(ptr) Variable Function + 477(param): 21(ptr) Variable Function + 484(param): 21(ptr) Variable Function + 487(param): 21(ptr) Variable Function + 494(param): 21(ptr) Variable Function + 497(param): 21(ptr) Variable Function + 504(param): 21(ptr) Variable Function + 507(param): 21(ptr) Variable Function + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 + 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 113 113 16 16 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 108(patch) 43 + 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 112 109(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 + 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 420 420 16 16 + 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 424 423(output) 43 + Store 423(output) 429 + 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 431 431 16 16 + 434: 21(ptr) AccessChain 108(patch) 220 220 + 435: 18(fvec4) Load 434 + Store 433(param) 435 + 437: 50(ptr) AccessChain 108(patch) 220 432 + 438: 48(fvec2) Load 437 + Store 436(param) 438 + 439: 52(bool) FunctionCall 59(frustumCheck(vf4;vf2;) 433(param) 436(param) + 440: 52(bool) LogicalNot 439 + SelectionMerge 442 None + BranchConditional 440 441 462 + 441: Label + 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 + 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 445 445 16 16 + 446: 161(ptr) AccessChain 423(output) 221 220 + Store 446 235 + 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 448 448 16 16 + 449: 161(ptr) AccessChain 423(output) 221 221 + Store 449 235 + 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 451 451 16 16 + 452: 161(ptr) AccessChain 423(output) 220 220 + Store 452 235 + 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 454 454 16 16 + 455: 161(ptr) AccessChain 423(output) 220 221 + Store 455 235 + 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 457 457 16 16 + 458: 161(ptr) AccessChain 423(output) 220 432 + Store 458 235 + 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 460 460 16 16 + 461: 161(ptr) AccessChain 423(output) 220 391 + Store 461 235 + Branch 442 + 462: Label + 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 + 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 465 465 16 16 + 466: 306(ptr) AccessChain 214 220 311 + 467: 8(float) Load 466 + 468: 52(bool) FOrdGreaterThan 467 235 + SelectionMerge 470 None + BranchConditional 468 469 528 + 469: Label + 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 + 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 473 473 16 16 + 475: 21(ptr) AccessChain 108(patch) 391 220 + 476: 18(fvec4) Load 475 + Store 474(param) 476 + 478: 21(ptr) AccessChain 108(patch) 220 220 + 479: 18(fvec4) Load 478 + Store 477(param) 479 + 480: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 474(param) 477(param) + 481: 161(ptr) AccessChain 423(output) 220 220 + Store 481 480 + 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 483 483 16 16 + 485: 21(ptr) AccessChain 108(patch) 220 220 + 486: 18(fvec4) Load 485 + Store 484(param) 486 + 488: 21(ptr) AccessChain 108(patch) 221 220 + 489: 18(fvec4) Load 488 + Store 487(param) 489 + 490: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 484(param) 487(param) + 491: 161(ptr) AccessChain 423(output) 220 221 + Store 491 490 + 492: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 493 493 16 16 + 495: 21(ptr) AccessChain 108(patch) 221 220 + 496: 18(fvec4) Load 495 + Store 494(param) 496 + 498: 21(ptr) AccessChain 108(patch) 432 220 + 499: 18(fvec4) Load 498 + Store 497(param) 499 + 500: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 494(param) 497(param) + 501: 161(ptr) AccessChain 423(output) 220 432 + Store 501 500 + 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 503 503 16 16 + 505: 21(ptr) AccessChain 108(patch) 432 220 + 506: 18(fvec4) Load 505 + Store 504(param) 506 + 508: 21(ptr) AccessChain 108(patch) 391 220 + 509: 18(fvec4) Load 508 + Store 507(param) 509 + 510: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 504(param) 507(param) + 511: 161(ptr) AccessChain 423(output) 220 391 + Store 511 510 + 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 513 513 16 16 + 514: 161(ptr) AccessChain 423(output) 220 220 + 515: 8(float) Load 514 + 516: 161(ptr) AccessChain 423(output) 220 391 + 517: 8(float) Load 516 + 518: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 515 517 154 + 519: 161(ptr) AccessChain 423(output) 221 220 + Store 519 518 + 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 521 521 16 16 + 522: 161(ptr) AccessChain 423(output) 220 432 + 523: 8(float) Load 522 + 524: 161(ptr) AccessChain 423(output) 220 221 + 525: 8(float) Load 524 + 526: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 523 525 154 + 527: 161(ptr) AccessChain 423(output) 221 221 + Store 527 526 + Branch 470 + 528: Label + 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 + 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 531 531 16 16 + 532: 161(ptr) AccessChain 423(output) 221 220 + Store 532 315 + 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 534 534 16 16 + 535: 161(ptr) AccessChain 423(output) 221 221 + Store 535 315 + 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 537 537 16 16 + 538: 161(ptr) AccessChain 423(output) 220 220 + Store 538 315 + 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 540 540 16 16 + 541: 161(ptr) AccessChain 423(output) 220 221 + Store 541 315 + 542: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 543 543 16 16 + 544: 161(ptr) AccessChain 423(output) 220 432 + Store 544 315 + 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 546 546 16 16 + 547: 161(ptr) AccessChain 423(output) 220 391 + Store 547 315 + Branch 470 + 470: Label + Branch 442 + 442: Label + 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 + 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 550 550 16 16 + 551:96(ConstantsHSOutput) Load 423(output) + ReturnValue 551 FunctionEnd Line 1 158 1 -129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):116(HSOutput) Function None 125 - 127(patch): 87(ptr) FunctionParameter -128(InvocationID): 115(ptr) FunctionParameter - 130: Label - 544(output): 543(ptr) Variable Function - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 132 - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 133 133 16 16 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 127(patch) 41 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 138 128(InvocationID) 41 - 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 132 129(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) - 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 132 - 541: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 542 542 16 16 - 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 545 544(output) 41 - Store 544(output) 549 - 550: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 551 551 16 16 - 552: 11(int) Load 128(InvocationID) - 553: 21(ptr) AccessChain 127(patch) 552 213 - 554: 18(fvec4) Load 553 - 555: 21(ptr) AccessChain 544(output) 213 - Store 555 554 - 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 557 557 16 16 - 558: 11(int) Load 128(InvocationID) - 560: 559(ptr) AccessChain 127(patch) 558 214 - 561: 69(fvec3) Load 560 - 562: 559(ptr) AccessChain 544(output) 214 - Store 562 561 - 563: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 564 564 16 16 - 565: 11(int) Load 128(InvocationID) - 566: 48(ptr) AccessChain 127(patch) 565 417 - 567: 46(fvec2) Load 566 - 568: 48(ptr) AccessChain 544(output) 417 - Store 568 567 - 569: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 570 570 16 16 - 571:116(HSOutput) Load 544(output) - ReturnValue 571 +134(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):121(HSOutput) Function None 130 + 132(patch): 90(ptr) FunctionParameter +133(InvocationID): 119(ptr) FunctionParameter + 135: Label + 560(output): 558(ptr) Variable Function + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 137 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 138 138 16 16 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 132(patch) 43 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 143 133(InvocationID) 43 + 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 137 134(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 137 + 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 557 557 16 16 + 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 561 560(output) 43 + Store 560(output) 565 + 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 567 567 16 16 + 568: 11(int) Load 133(InvocationID) + 569: 21(ptr) AccessChain 132(patch) 568 220 + 570: 18(fvec4) Load 569 + 571: 21(ptr) AccessChain 560(output) 220 + Store 571 570 + 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 573 573 16 16 + 574: 11(int) Load 133(InvocationID) + 577: 575(ptr) AccessChain 132(patch) 574 221 + 578: 72(fvec3) Load 577 + 579: 575(ptr) AccessChain 560(output) 221 + Store 579 578 + 580: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 581 581 16 16 + 582: 11(int) Load 133(InvocationID) + 583: 50(ptr) AccessChain 132(patch) 582 432 + 584: 48(fvec2) Load 583 + 585: 50(ptr) AccessChain 560(output) 432 + Store 585 584 + 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 587 587 16 16 + 588:121(HSOutput) Load 560(output) + ReturnValue 588 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index cbe38a3410..2d4de4e8e1 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 464 +// Id's are bound by 477 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 6 "main" 355 370 379 388 395 401 441 445 449 452 455 458 461 + EntryPoint TessellationEvaluation 6 "main" 368 383 392 401 408 414 454 458 462 465 468 471 474 ExecutionMode 6 Quads 1: String "" 9: String "float" @@ -25,139 +25,139 @@ spv.debuginfo.hlsl.tese " 32: String "TessLevelInner" 35: String "ConstantsHSOutput" - 49: String "Pos" - 52: String "Normal" - 56: String "UV" - 60: String "HSOutput" - 68: String "WorldPos" - 78: String "DSOutput" - 86: String "@main" - 92: String "input" - 96: String "TessCoord" - 99: String "patch" - 108: String "output" - 119: String "uv1" - 122: String "int" - 138: String "uv2" - 161: String "n1" - 173: String "n2" - 195: String "pos1" - 207: String "pos2" - 219: String "pos" - 231: String "type.2d.image" - 232: String "@type.2d.image" - 237: String "displacementMapTexture" - 242: String "type.sampler" - 243: String "@type.sampler" - 247: String "displacementMapSampler" - 251: String "type.sampled.image" - 252: String "@type.sampled.image" - 261: String "bool" - 268: String "modelview" - 273: String "lightPos" - 277: String "frustumPlanes" - 280: String "tessellatedEdgeSize" - 284: String "viewportDim" - 288: String "UBO" - 291: String "ubo" + 52: String "Pos" + 55: String "Normal" + 59: String "UV" + 63: String "HSOutput" + 71: String "WorldPos" + 81: String "DSOutput" + 89: String "@main" + 95: String "input" + 99: String "TessCoord" + 102: String "patch" + 112: String "output" + 123: String "uv1" + 126: String "int" + 143: String "uv2" + 167: String "n1" + 179: String "n2" + 202: String "pos1" + 214: String "pos2" + 226: String "pos" + 238: String "type.2d.image" + 239: String "@type.2d.image" + 245: String "displacementMapTexture" + 250: String "type.sampler" + 251: String "@type.sampler" + 256: String "displacementMapSampler" + 260: String "type.sampled.image" + 261: String "@type.sampled.image" + 270: String "bool" + 277: String "modelview" + 282: String "lightPos" + 286: String "frustumPlanes" + 289: String "tessellatedEdgeSize" + 293: String "viewportDim" + 297: String "UBO" + 300: String "ubo" Name 6 "main" Name 24 "ConstantsHSOutput" MemberName 24(ConstantsHSOutput) 0 "TessLevelOuter" MemberName 24(ConstantsHSOutput) 1 "TessLevelInner" - Name 47 "HSOutput" - MemberName 47(HSOutput) 0 "Pos" - MemberName 47(HSOutput) 1 "Normal" - MemberName 47(HSOutput) 2 "UV" - Name 63 "DSOutput" - MemberName 63(DSOutput) 0 "Pos" - MemberName 63(DSOutput) 1 "Normal" - MemberName 63(DSOutput) 2 "UV" - MemberName 63(DSOutput) 3 "ViewVec" - MemberName 63(DSOutput) 4 "LightVec" - MemberName 63(DSOutput) 5 "EyePos" - MemberName 63(DSOutput) 6 "WorldPos" - Name 84 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" - Name 81 "input" - Name 82 "TessCoord" - Name 83 "patch" - Name 106 "output" - Name 117 "uv1" - Name 136 "uv2" - Name 159 "n1" - Name 171 "n2" - Name 193 "pos1" - Name 205 "pos2" - Name 217 "pos" - Name 235 "displacementMapTexture" - Name 245 "displacementMapSampler" - Name 266 "UBO" - MemberName 266(UBO) 0 "projection" - MemberName 266(UBO) 1 "modelview" - MemberName 266(UBO) 2 "lightPos" - MemberName 266(UBO) 3 "frustumPlanes" - MemberName 266(UBO) 4 "displacementFactor" - MemberName 266(UBO) 5 "tessellationFactor" - MemberName 266(UBO) 6 "viewportDim" - MemberName 266(UBO) 7 "tessellatedEdgeSize" - Name 289 "ubo" - MemberName 289(ubo) 0 "ubo" - Name 294 "" - Name 353 "input" - Name 355 "input.TessLevelOuter" - Name 370 "input.TessLevelInner" - Name 377 "TessCoord" - Name 379 "TessCoord" - Name 385 "patch" - Name 388 "patch.Pos" - Name 395 "patch.Normal" - Name 401 "patch.UV" - Name 433 "flattenTemp" - Name 435 "param" - Name 437 "param" - Name 441 "@entryPointOutput.Pos" - Name 445 "@entryPointOutput.Normal" - Name 449 "@entryPointOutput.UV" - Name 452 "@entryPointOutput.ViewVec" - Name 455 "@entryPointOutput.LightVec" - Name 458 "@entryPointOutput.EyePos" - Name 461 "@entryPointOutput.WorldPos" - Decorate 235(displacementMapTexture) DescriptorSet 0 - Decorate 235(displacementMapTexture) Binding 1 - Decorate 245(displacementMapSampler) DescriptorSet 0 - Decorate 245(displacementMapSampler) Binding 1 - Decorate 264 ArrayStride 16 - MemberDecorate 266(UBO) 0 RowMajor - MemberDecorate 266(UBO) 0 Offset 0 - MemberDecorate 266(UBO) 0 MatrixStride 16 - MemberDecorate 266(UBO) 1 RowMajor - MemberDecorate 266(UBO) 1 Offset 64 - MemberDecorate 266(UBO) 1 MatrixStride 16 - MemberDecorate 266(UBO) 2 Offset 128 - MemberDecorate 266(UBO) 3 Offset 144 - MemberDecorate 266(UBO) 4 Offset 240 - MemberDecorate 266(UBO) 5 Offset 244 - MemberDecorate 266(UBO) 6 Offset 248 - MemberDecorate 266(UBO) 7 Offset 256 - MemberDecorate 289(ubo) 0 Offset 0 - Decorate 289(ubo) Block - Decorate 294 DescriptorSet 0 - Decorate 294 Binding 0 - Decorate 355(input.TessLevelOuter) Patch - Decorate 355(input.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 370(input.TessLevelInner) Patch - Decorate 370(input.TessLevelInner) BuiltIn TessLevelInner - Decorate 379(TessCoord) Patch - Decorate 379(TessCoord) BuiltIn TessCoord - Decorate 388(patch.Pos) BuiltIn Position - Decorate 395(patch.Normal) Location 0 - Decorate 401(patch.UV) Location 1 - Decorate 441(@entryPointOutput.Pos) BuiltIn Position - Decorate 445(@entryPointOutput.Normal) Location 0 - Decorate 449(@entryPointOutput.UV) Location 1 - Decorate 452(@entryPointOutput.ViewVec) Location 2 - Decorate 455(@entryPointOutput.LightVec) Location 3 - Decorate 458(@entryPointOutput.EyePos) Location 4 - Decorate 461(@entryPointOutput.WorldPos) Location 5 + Name 50 "HSOutput" + MemberName 50(HSOutput) 0 "Pos" + MemberName 50(HSOutput) 1 "Normal" + MemberName 50(HSOutput) 2 "UV" + Name 66 "DSOutput" + MemberName 66(DSOutput) 0 "Pos" + MemberName 66(DSOutput) 1 "Normal" + MemberName 66(DSOutput) 2 "UV" + MemberName 66(DSOutput) 3 "ViewVec" + MemberName 66(DSOutput) 4 "LightVec" + MemberName 66(DSOutput) 5 "EyePos" + MemberName 66(DSOutput) 6 "WorldPos" + Name 87 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" + Name 84 "input" + Name 85 "TessCoord" + Name 86 "patch" + Name 110 "output" + Name 121 "uv1" + Name 141 "uv2" + Name 165 "n1" + Name 177 "n2" + Name 200 "pos1" + Name 212 "pos2" + Name 224 "pos" + Name 243 "displacementMapTexture" + Name 254 "displacementMapSampler" + Name 275 "UBO" + MemberName 275(UBO) 0 "projection" + MemberName 275(UBO) 1 "modelview" + MemberName 275(UBO) 2 "lightPos" + MemberName 275(UBO) 3 "frustumPlanes" + MemberName 275(UBO) 4 "displacementFactor" + MemberName 275(UBO) 5 "tessellationFactor" + MemberName 275(UBO) 6 "viewportDim" + MemberName 275(UBO) 7 "tessellatedEdgeSize" + Name 298 "ubo" + MemberName 298(ubo) 0 "ubo" + Name 304 "" + Name 366 "input" + Name 368 "input.TessLevelOuter" + Name 383 "input.TessLevelInner" + Name 390 "TessCoord" + Name 392 "TessCoord" + Name 398 "patch" + Name 401 "patch.Pos" + Name 408 "patch.Normal" + Name 414 "patch.UV" + Name 446 "flattenTemp" + Name 448 "param" + Name 450 "param" + Name 454 "@entryPointOutput.Pos" + Name 458 "@entryPointOutput.Normal" + Name 462 "@entryPointOutput.UV" + Name 465 "@entryPointOutput.ViewVec" + Name 468 "@entryPointOutput.LightVec" + Name 471 "@entryPointOutput.EyePos" + Name 474 "@entryPointOutput.WorldPos" + Decorate 243(displacementMapTexture) DescriptorSet 0 + Decorate 243(displacementMapTexture) Binding 1 + Decorate 254(displacementMapSampler) DescriptorSet 0 + Decorate 254(displacementMapSampler) Binding 1 + Decorate 273 ArrayStride 16 + MemberDecorate 275(UBO) 0 RowMajor + MemberDecorate 275(UBO) 0 Offset 0 + MemberDecorate 275(UBO) 0 MatrixStride 16 + MemberDecorate 275(UBO) 1 RowMajor + MemberDecorate 275(UBO) 1 Offset 64 + MemberDecorate 275(UBO) 1 MatrixStride 16 + MemberDecorate 275(UBO) 2 Offset 128 + MemberDecorate 275(UBO) 3 Offset 144 + MemberDecorate 275(UBO) 4 Offset 240 + MemberDecorate 275(UBO) 5 Offset 244 + MemberDecorate 275(UBO) 6 Offset 248 + MemberDecorate 275(UBO) 7 Offset 256 + MemberDecorate 298(ubo) 0 Offset 0 + Decorate 298(ubo) Block + Decorate 304 DescriptorSet 0 + Decorate 304 Binding 0 + Decorate 368(input.TessLevelOuter) Patch + Decorate 368(input.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 383(input.TessLevelInner) Patch + Decorate 383(input.TessLevelInner) BuiltIn TessLevelInner + Decorate 392(TessCoord) Patch + Decorate 392(TessCoord) BuiltIn TessCoord + Decorate 401(patch.Pos) BuiltIn Position + Decorate 408(patch.Normal) Location 0 + Decorate 414(patch.UV) Location 1 + Decorate 454(@entryPointOutput.Pos) BuiltIn Position + Decorate 458(@entryPointOutput.Normal) Location 0 + Decorate 462(@entryPointOutput.UV) Location 1 + Decorate 465(@entryPointOutput.ViewVec) Location 2 + Decorate 468(@entryPointOutput.LightVec) Location 3 + Decorate 471(@entryPointOutput.EyePos) Location 4 + Decorate 474(@entryPointOutput.WorldPos) Location 5 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -186,444 +186,457 @@ spv.debuginfo.hlsl.tese 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 27 38 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 16 16 37 35 16 17 25 31 39: TypePointer Function 24(ConstantsHSOutput) - 40: TypeVector 8(float) 2 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 - 42: TypePointer Function 40(fvec2) - 43: TypeVector 8(float) 4 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 - 45: TypeVector 8(float) 3 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 47(HSOutput): TypeStruct 43(fvec4) 45(fvec3) 40(fvec2) - 50: 11(int) Constant 44 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 44 27 50 14 16 16 17 - 53: 11(int) Constant 45 - 54: 11(int) Constant 35 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 46 27 53 54 16 16 17 - 57: 11(int) Constant 46 - 58: 11(int) Constant 31 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 56 41 27 57 58 16 16 17 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 36 27 16 16 37 60 16 17 48 51 55 - 61: TypeArray 47(HSOutput) 18 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 59 18 - 63(DSOutput): TypeStruct 43(fvec4) 45(fvec3) 40(fvec2) 45(fvec3) 45(fvec3) 45(fvec3) 45(fvec3) - 65: 11(int) Constant 57 - 66: 11(int) Constant 13 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 44 27 65 66 16 16 17 - 69: 11(int) Constant 63 - 70: 11(int) Constant 37 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 - 72: 11(int) Constant 59 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 56 41 27 72 58 16 16 17 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 68 46 27 69 70 16 16 17 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 78 36 27 16 16 37 78 16 17 64 67 71 73 74 75 76 - 79: TypeFunction 63(DSOutput) 39(ptr) 42(ptr) 61 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 77 34 41 59 - 88: 11(int) Constant 68 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 86 80 27 88 16 37 86 17 88 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 92 34 27 88 16 87 18 36 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 41 27 88 16 87 18 21 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 59 27 88 16 87 18 17 - 104: 11(int) Constant 70 - 105: TypePointer Function 63(DSOutput) - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 108 77 27 104 16 87 18 - 110: 8(float) Constant 0 - 111: 43(fvec4) ConstantComposite 110 110 110 110 - 112: 45(fvec3) ConstantComposite 110 110 110 - 113: 40(fvec2) ConstantComposite 110 110 - 114:63(DSOutput) ConstantComposite 111 112 113 112 112 112 112 - 116: 11(int) Constant 71 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 119 41 27 116 16 87 18 - 121: TypeInt 32 1 - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 122 14 18 16 - 124: 121(int) Constant 0 - 125: 121(int) Constant 2 - 127: 121(int) Constant 1 - 129: TypePointer Function 8(float) - 135: 11(int) Constant 72 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 138 41 27 135 16 87 18 - 140: 121(int) Constant 3 - 148: 11(int) Constant 73 - 157: 11(int) Constant 75 - 158: TypePointer Function 45(fvec3) - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 46 27 157 16 87 18 - 170: 11(int) Constant 76 - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 173 46 27 170 16 87 18 - 182: 11(int) Constant 77 - 191: 11(int) Constant 80 - 192: TypePointer Function 43(fvec4) - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 195 44 27 191 16 87 18 - 204: 11(int) Constant 81 - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 207 44 27 204 16 87 18 - 216: 11(int) Constant 82 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 219 44 27 216 16 87 18 - 228: 11(int) Constant 84 - 229: TypeImage 8(float) 2D sampled format:Unknown - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 231 16 27 228 16 37 232 233 17 - 234: TypePointer UniformConstant 229 -235(displacementMapTexture): 234(ptr) Variable UniformConstant - 238: 11(int) Constant 8 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 237 230 27 228 16 37 237 235(displacementMapTexture) 238 - 240: TypeSampler - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 242 36 27 228 16 37 243 233 17 - 244: TypePointer UniformConstant 240 -245(displacementMapSampler): 244(ptr) Variable UniformConstant - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 247 241 27 228 16 37 247 245(displacementMapSampler) 238 - 249: TypeSampledImage 229 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 251 16 27 228 16 37 252 233 17 - 258: TypeMatrix 43(fvec4) 4 - 260: TypeBool - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 261 14 21 16 - 263: 260(bool) ConstantTrue - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 44 18 263 - 264: TypeArray 43(fvec4) 15 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 44 15 - 266(UBO): TypeStruct 258 258 43(fvec4) 264 8(float) 8(float) 40(fvec2) 8(float) - 269: 11(int) Constant 29 - 270: 11(int) Constant 20 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 268 259 27 269 270 16 16 17 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 268 259 27 269 270 16 16 17 - 274: 11(int) Constant 30 - 275: 11(int) Constant 17 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 273 44 27 274 275 16 16 17 - 278: 11(int) Constant 22 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 265 27 58 278 16 16 17 - 281: 11(int) Constant 27 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 280 10 27 54 281 16 16 17 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 280 10 27 54 281 16 16 17 - 285: 11(int) Constant 34 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 284 41 27 285 270 16 16 17 - 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 280 10 27 54 281 16 16 17 - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 288 36 27 228 16 37 288 16 17 267 271 272 276 279 282 283 286 - 289(ubo): TypeStruct 266(UBO) - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 291 287 27 70 70 16 16 17 - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 291 36 27 228 16 37 291 16 17 290 - 293: TypePointer Uniform 289(ubo) - 294: 293(ptr) Variable Uniform - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 292 27 228 16 37 1 294 238 - 296: 121(int) Constant 4 - 297: TypePointer Uniform 8(float) - 306: 11(int) Constant 86 - 308: TypePointer Uniform 258 - 317: 11(int) Constant 89 - 323: 11(int) Constant 90 - 324: TypePointer Uniform 43(fvec4) - 334: 11(int) Constant 91 - 335: 121(int) Constant 6 - 340: 11(int) Constant 92 - 341: 121(int) Constant 5 - 349: 11(int) Constant 93 - 354: TypePointer Input 19 -355(input.TessLevelOuter): 354(ptr) Variable Input - 356: TypePointer Input 8(float) - 369: TypePointer Input 22 -370(input.TessLevelInner): 369(ptr) Variable Input - 378: TypePointer Input 45(fvec3) - 379(TessCoord): 378(ptr) Variable Input - 384: TypePointer Function 61 - 386: TypeArray 43(fvec4) 18 - 387: TypePointer Input 386 - 388(patch.Pos): 387(ptr) Variable Input - 389: TypePointer Input 43(fvec4) - 393: TypeArray 45(fvec3) 18 - 394: TypePointer Input 393 -395(patch.Normal): 394(ptr) Variable Input - 399: TypeArray 40(fvec2) 18 + 40: 11(int) Constant 7 + 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 34 40 16 + 42: TypeVector 8(float) 2 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 + 44: TypePointer Function 42(fvec2) + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 40 16 + 46: TypeVector 8(float) 4 + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 + 48: TypeVector 8(float) 3 + 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 50(HSOutput): TypeStruct 46(fvec4) 48(fvec3) 42(fvec2) + 53: 11(int) Constant 44 + 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 53 14 16 16 17 + 56: 11(int) Constant 45 + 57: 11(int) Constant 35 + 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 49 27 56 57 16 16 17 + 60: 11(int) Constant 46 + 61: 11(int) Constant 31 + 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 60 61 16 16 17 + 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 63 36 27 16 16 37 63 16 17 51 54 58 + 64: TypeArray 50(HSOutput) 18 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 62 18 + 66(DSOutput): TypeStruct 46(fvec4) 48(fvec3) 42(fvec2) 48(fvec3) 48(fvec3) 48(fvec3) 48(fvec3) + 68: 11(int) Constant 57 + 69: 11(int) Constant 13 + 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 68 69 16 16 17 + 72: 11(int) Constant 63 + 73: 11(int) Constant 37 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 75: 11(int) Constant 59 + 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 75 61 16 16 17 + 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 81 36 27 16 16 37 81 16 17 67 70 74 76 77 78 79 + 82: TypeFunction 66(DSOutput) 39(ptr) 44(ptr) 64 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 80 34 43 62 + 91: 11(int) Constant 68 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 89 83 27 91 16 37 89 17 91 + 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 95 34 27 91 16 90 18 36 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 43 27 91 16 90 18 21 + 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 62 27 91 16 90 18 17 + 107: 11(int) Constant 70 + 108: TypePointer Function 66(DSOutput) + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 80 40 16 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 112 80 27 107 16 90 18 + 114: 8(float) Constant 0 + 115: 46(fvec4) ConstantComposite 114 114 114 114 + 116: 48(fvec3) ConstantComposite 114 114 114 + 117: 42(fvec2) ConstantComposite 114 114 + 118:66(DSOutput) ConstantComposite 115 116 117 116 116 116 116 + 120: 11(int) Constant 71 + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 43 27 120 16 90 18 + 125: TypeInt 32 1 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 126 14 18 16 + 128: 125(int) Constant 0 + 129: 125(int) Constant 2 + 131: 125(int) Constant 1 + 133: TypePointer Function 8(float) + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 40 16 + 140: 11(int) Constant 72 + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 43 27 140 16 90 18 + 145: 125(int) Constant 3 + 153: 11(int) Constant 73 + 162: 11(int) Constant 75 + 163: TypePointer Function 48(fvec3) + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 40 16 + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 167 49 27 162 16 90 18 + 176: 11(int) Constant 76 + 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 49 27 176 16 90 18 + 188: 11(int) Constant 77 + 197: 11(int) Constant 80 + 198: TypePointer Function 46(fvec4) + 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 40 16 + 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 202 47 27 197 16 90 18 + 211: 11(int) Constant 81 + 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 214 47 27 211 16 90 18 + 223: 11(int) Constant 82 + 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 226 47 27 223 16 90 18 + 235: 11(int) Constant 84 + 236: TypeImage 8(float) 2D sampled format:Unknown + 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 238 16 27 235 16 37 239 240 17 + 241: TypePointer UniformConstant 236 + 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 16 16 +243(displacementMapTexture): 241(ptr) Variable UniformConstant + 246: 11(int) Constant 8 + 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 245 237 27 235 16 37 245 243(displacementMapTexture) 246 + 248: TypeSampler + 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 250 36 27 235 16 37 251 240 17 + 252: TypePointer UniformConstant 248 + 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 249 16 16 +254(displacementMapSampler): 252(ptr) Variable UniformConstant + 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 256 249 27 235 16 37 256 254(displacementMapSampler) 246 + 258: TypeSampledImage 236 + 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 260 16 27 235 16 37 261 240 17 + 267: TypeMatrix 46(fvec4) 4 + 269: TypeBool + 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 270 14 21 16 + 272: 269(bool) ConstantTrue + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 47 18 272 + 273: TypeArray 46(fvec4) 15 + 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 47 15 + 275(UBO): TypeStruct 267 267 46(fvec4) 273 8(float) 8(float) 42(fvec2) 8(float) + 278: 11(int) Constant 29 + 279: 11(int) Constant 20 + 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 268 27 278 279 16 16 17 + 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 268 27 278 279 16 16 17 + 283: 11(int) Constant 30 + 284: 11(int) Constant 17 + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 282 47 27 283 284 16 16 17 + 287: 11(int) Constant 22 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 286 274 27 61 287 16 16 17 + 290: 11(int) Constant 27 + 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 10 27 57 290 16 16 17 + 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 10 27 57 290 16 16 17 + 294: 11(int) Constant 34 + 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 293 43 27 294 279 16 16 17 + 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 10 27 57 290 16 16 17 + 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 297 36 27 235 16 37 297 16 17 276 280 281 285 288 291 292 295 + 298(ubo): TypeStruct 275(UBO) + 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 300 296 27 73 73 16 16 17 + 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 300 36 27 235 16 37 300 16 17 299 + 302: TypePointer Uniform 298(ubo) + 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 301 21 16 + 304: 302(ptr) Variable Uniform + 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 301 27 235 16 37 1 304 246 + 306: 125(int) Constant 4 + 307: TypePointer Uniform 8(float) + 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 + 317: 11(int) Constant 86 + 319: TypePointer Uniform 267 + 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 268 21 16 + 329: 11(int) Constant 89 + 335: 11(int) Constant 90 + 336: TypePointer Uniform 46(fvec4) + 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 21 16 + 347: 11(int) Constant 91 + 348: 125(int) Constant 6 + 353: 11(int) Constant 92 + 354: 125(int) Constant 5 + 362: 11(int) Constant 93 + 367: TypePointer Input 19 +368(input.TessLevelOuter): 367(ptr) Variable Input + 369: TypePointer Input 8(float) + 382: TypePointer Input 22 +383(input.TessLevelInner): 382(ptr) Variable Input + 391: TypePointer Input 48(fvec3) + 392(TessCoord): 391(ptr) Variable Input + 397: TypePointer Function 64 + 399: TypeArray 46(fvec4) 18 400: TypePointer Input 399 - 401(patch.UV): 400(ptr) Variable Input - 402: TypePointer Input 40(fvec2) - 440: TypePointer Output 43(fvec4) -441(@entryPointOutput.Pos): 440(ptr) Variable Output - 444: TypePointer Output 45(fvec3) -445(@entryPointOutput.Normal): 444(ptr) Variable Output - 448: TypePointer Output 40(fvec2) -449(@entryPointOutput.UV): 448(ptr) Variable Output -452(@entryPointOutput.ViewVec): 444(ptr) Variable Output -455(@entryPointOutput.LightVec): 444(ptr) Variable Output -458(@entryPointOutput.EyePos): 444(ptr) Variable Output -461(@entryPointOutput.WorldPos): 444(ptr) Variable Output + 401(patch.Pos): 400(ptr) Variable Input + 402: TypePointer Input 46(fvec4) + 406: TypeArray 48(fvec3) 18 + 407: TypePointer Input 406 +408(patch.Normal): 407(ptr) Variable Input + 412: TypeArray 42(fvec2) 18 + 413: TypePointer Input 412 + 414(patch.UV): 413(ptr) Variable Input + 415: TypePointer Input 42(fvec2) + 453: TypePointer Output 46(fvec4) +454(@entryPointOutput.Pos): 453(ptr) Variable Output + 457: TypePointer Output 48(fvec3) +458(@entryPointOutput.Normal): 457(ptr) Variable Output + 461: TypePointer Output 42(fvec2) +462(@entryPointOutput.UV): 461(ptr) Variable Output +465(@entryPointOutput.ViewVec): 457(ptr) Variable Output +468(@entryPointOutput.LightVec): 457(ptr) Variable Output +471(@entryPointOutput.EyePos): 457(ptr) Variable Output +474(@entryPointOutput.WorldPos): 457(ptr) Variable Output Line 1 68 1 6(main): 4 Function None 5 7: Label - 353(input): 39(ptr) Variable Function - 377(TessCoord): 42(ptr) Variable Function - 385(patch): 384(ptr) Variable Function -433(flattenTemp): 105(ptr) Variable Function - 435(param): 39(ptr) Variable Function - 437(param): 42(ptr) Variable Function + 366(input): 39(ptr) Variable Function + 390(TessCoord): 44(ptr) Variable Function + 398(patch): 397(ptr) Variable Function +446(flattenTemp): 108(ptr) Variable Function + 448(param): 39(ptr) Variable Function + 450(param): 44(ptr) Variable Function Line 1 68 0 - 357: 356(ptr) AccessChain 355(input.TessLevelOuter) 124 - 358: 8(float) Load 357 - 359: 129(ptr) AccessChain 353(input) 124 124 - Store 359 358 - 360: 356(ptr) AccessChain 355(input.TessLevelOuter) 127 - 361: 8(float) Load 360 - 362: 129(ptr) AccessChain 353(input) 124 127 - Store 362 361 - 363: 356(ptr) AccessChain 355(input.TessLevelOuter) 125 - 364: 8(float) Load 363 - 365: 129(ptr) AccessChain 353(input) 124 125 - Store 365 364 - 366: 356(ptr) AccessChain 355(input.TessLevelOuter) 140 - 367: 8(float) Load 366 - 368: 129(ptr) AccessChain 353(input) 124 140 - Store 368 367 - 371: 356(ptr) AccessChain 370(input.TessLevelInner) 124 - 372: 8(float) Load 371 - 373: 129(ptr) AccessChain 353(input) 127 124 - Store 373 372 - 374: 356(ptr) AccessChain 370(input.TessLevelInner) 127 - 375: 8(float) Load 374 - 376: 129(ptr) AccessChain 353(input) 127 127 - Store 376 375 - 380: 45(fvec3) Load 379(TessCoord) - 381: 8(float) CompositeExtract 380 0 - 382: 8(float) CompositeExtract 380 1 - 383: 40(fvec2) CompositeConstruct 381 382 - Store 377(TessCoord) 383 - 390: 389(ptr) AccessChain 388(patch.Pos) 124 - 391: 43(fvec4) Load 390 - 392: 192(ptr) AccessChain 385(patch) 124 124 - Store 392 391 - 396: 378(ptr) AccessChain 395(patch.Normal) 124 - 397: 45(fvec3) Load 396 - 398: 158(ptr) AccessChain 385(patch) 124 127 - Store 398 397 - 403: 402(ptr) AccessChain 401(patch.UV) 124 - 404: 40(fvec2) Load 403 - 405: 42(ptr) AccessChain 385(patch) 124 125 + 370: 369(ptr) AccessChain 368(input.TessLevelOuter) 128 + 371: 8(float) Load 370 + 372: 133(ptr) AccessChain 366(input) 128 128 + Store 372 371 + 373: 369(ptr) AccessChain 368(input.TessLevelOuter) 131 + 374: 8(float) Load 373 + 375: 133(ptr) AccessChain 366(input) 128 131 + Store 375 374 + 376: 369(ptr) AccessChain 368(input.TessLevelOuter) 129 + 377: 8(float) Load 376 + 378: 133(ptr) AccessChain 366(input) 128 129 + Store 378 377 + 379: 369(ptr) AccessChain 368(input.TessLevelOuter) 145 + 380: 8(float) Load 379 + 381: 133(ptr) AccessChain 366(input) 128 145 + Store 381 380 + 384: 369(ptr) AccessChain 383(input.TessLevelInner) 128 + 385: 8(float) Load 384 + 386: 133(ptr) AccessChain 366(input) 131 128 + Store 386 385 + 387: 369(ptr) AccessChain 383(input.TessLevelInner) 131 + 388: 8(float) Load 387 + 389: 133(ptr) AccessChain 366(input) 131 131 + Store 389 388 + 393: 48(fvec3) Load 392(TessCoord) + 394: 8(float) CompositeExtract 393 0 + 395: 8(float) CompositeExtract 393 1 + 396: 42(fvec2) CompositeConstruct 394 395 + Store 390(TessCoord) 396 + 403: 402(ptr) AccessChain 401(patch.Pos) 128 + 404: 46(fvec4) Load 403 + 405: 198(ptr) AccessChain 398(patch) 128 128 Store 405 404 - 406: 389(ptr) AccessChain 388(patch.Pos) 127 - 407: 43(fvec4) Load 406 - 408: 192(ptr) AccessChain 385(patch) 127 124 - Store 408 407 - 409: 378(ptr) AccessChain 395(patch.Normal) 127 - 410: 45(fvec3) Load 409 - 411: 158(ptr) AccessChain 385(patch) 127 127 + 409: 391(ptr) AccessChain 408(patch.Normal) 128 + 410: 48(fvec3) Load 409 + 411: 163(ptr) AccessChain 398(patch) 128 131 Store 411 410 - 412: 402(ptr) AccessChain 401(patch.UV) 127 - 413: 40(fvec2) Load 412 - 414: 42(ptr) AccessChain 385(patch) 127 125 - Store 414 413 - 415: 389(ptr) AccessChain 388(patch.Pos) 125 - 416: 43(fvec4) Load 415 - 417: 192(ptr) AccessChain 385(patch) 125 124 - Store 417 416 - 418: 378(ptr) AccessChain 395(patch.Normal) 125 - 419: 45(fvec3) Load 418 - 420: 158(ptr) AccessChain 385(patch) 125 127 - Store 420 419 - 421: 402(ptr) AccessChain 401(patch.UV) 125 - 422: 40(fvec2) Load 421 - 423: 42(ptr) AccessChain 385(patch) 125 125 - Store 423 422 - 424: 389(ptr) AccessChain 388(patch.Pos) 140 - 425: 43(fvec4) Load 424 - 426: 192(ptr) AccessChain 385(patch) 140 124 - Store 426 425 - 427: 378(ptr) AccessChain 395(patch.Normal) 140 - 428: 45(fvec3) Load 427 - 429: 158(ptr) AccessChain 385(patch) 140 127 - Store 429 428 - 430: 402(ptr) AccessChain 401(patch.UV) 140 - 431: 40(fvec2) Load 430 - 432: 42(ptr) AccessChain 385(patch) 140 125 - Store 432 431 - 434: 61 Load 385(patch) - 436:24(ConstantsHSOutput) Load 353(input) - Store 435(param) 436 - 438: 40(fvec2) Load 377(TessCoord) - Store 437(param) 438 - 439:63(DSOutput) FunctionCall 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 435(param) 437(param) 434 - Store 433(flattenTemp) 439 - 442: 192(ptr) AccessChain 433(flattenTemp) 124 - 443: 43(fvec4) Load 442 - Store 441(@entryPointOutput.Pos) 443 - 446: 158(ptr) AccessChain 433(flattenTemp) 127 - 447: 45(fvec3) Load 446 - Store 445(@entryPointOutput.Normal) 447 - 450: 42(ptr) AccessChain 433(flattenTemp) 125 - 451: 40(fvec2) Load 450 - Store 449(@entryPointOutput.UV) 451 - 453: 158(ptr) AccessChain 433(flattenTemp) 140 - 454: 45(fvec3) Load 453 - Store 452(@entryPointOutput.ViewVec) 454 - 456: 158(ptr) AccessChain 433(flattenTemp) 296 - 457: 45(fvec3) Load 456 - Store 455(@entryPointOutput.LightVec) 457 - 459: 158(ptr) AccessChain 433(flattenTemp) 341 - 460: 45(fvec3) Load 459 - Store 458(@entryPointOutput.EyePos) 460 - 462: 158(ptr) AccessChain 433(flattenTemp) 335 - 463: 45(fvec3) Load 462 - Store 461(@entryPointOutput.WorldPos) 463 + 416: 415(ptr) AccessChain 414(patch.UV) 128 + 417: 42(fvec2) Load 416 + 418: 44(ptr) AccessChain 398(patch) 128 129 + Store 418 417 + 419: 402(ptr) AccessChain 401(patch.Pos) 131 + 420: 46(fvec4) Load 419 + 421: 198(ptr) AccessChain 398(patch) 131 128 + Store 421 420 + 422: 391(ptr) AccessChain 408(patch.Normal) 131 + 423: 48(fvec3) Load 422 + 424: 163(ptr) AccessChain 398(patch) 131 131 + Store 424 423 + 425: 415(ptr) AccessChain 414(patch.UV) 131 + 426: 42(fvec2) Load 425 + 427: 44(ptr) AccessChain 398(patch) 131 129 + Store 427 426 + 428: 402(ptr) AccessChain 401(patch.Pos) 129 + 429: 46(fvec4) Load 428 + 430: 198(ptr) AccessChain 398(patch) 129 128 + Store 430 429 + 431: 391(ptr) AccessChain 408(patch.Normal) 129 + 432: 48(fvec3) Load 431 + 433: 163(ptr) AccessChain 398(patch) 129 131 + Store 433 432 + 434: 415(ptr) AccessChain 414(patch.UV) 129 + 435: 42(fvec2) Load 434 + 436: 44(ptr) AccessChain 398(patch) 129 129 + Store 436 435 + 437: 402(ptr) AccessChain 401(patch.Pos) 145 + 438: 46(fvec4) Load 437 + 439: 198(ptr) AccessChain 398(patch) 145 128 + Store 439 438 + 440: 391(ptr) AccessChain 408(patch.Normal) 145 + 441: 48(fvec3) Load 440 + 442: 163(ptr) AccessChain 398(patch) 145 131 + Store 442 441 + 443: 415(ptr) AccessChain 414(patch.UV) 145 + 444: 42(fvec2) Load 443 + 445: 44(ptr) AccessChain 398(patch) 145 129 + Store 445 444 + 447: 64 Load 398(patch) + 449:24(ConstantsHSOutput) Load 366(input) + Store 448(param) 449 + 451: 42(fvec2) Load 390(TessCoord) + Store 450(param) 451 + 452:66(DSOutput) FunctionCall 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 448(param) 450(param) 447 + Store 446(flattenTemp) 452 + 455: 198(ptr) AccessChain 446(flattenTemp) 128 + 456: 46(fvec4) Load 455 + Store 454(@entryPointOutput.Pos) 456 + 459: 163(ptr) AccessChain 446(flattenTemp) 131 + 460: 48(fvec3) Load 459 + Store 458(@entryPointOutput.Normal) 460 + 463: 44(ptr) AccessChain 446(flattenTemp) 129 + 464: 42(fvec2) Load 463 + Store 462(@entryPointOutput.UV) 464 + 466: 163(ptr) AccessChain 446(flattenTemp) 145 + 467: 48(fvec3) Load 466 + Store 465(@entryPointOutput.ViewVec) 467 + 469: 163(ptr) AccessChain 446(flattenTemp) 306 + 470: 48(fvec3) Load 469 + Store 468(@entryPointOutput.LightVec) 470 + 472: 163(ptr) AccessChain 446(flattenTemp) 354 + 473: 48(fvec3) Load 472 + Store 471(@entryPointOutput.EyePos) 473 + 475: 163(ptr) AccessChain 446(flattenTemp) 348 + 476: 48(fvec3) Load 475 + Store 474(@entryPointOutput.WorldPos) 476 Return FunctionEnd Line 1 68 1 -84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):63(DSOutput) Function None 79 - 81(input): 39(ptr) FunctionParameter - 82(TessCoord): 42(ptr) FunctionParameter - 83(patch): 61 FunctionParameter - 85: Label - 106(output): 105(ptr) Variable Function - 117(uv1): 42(ptr) Variable Function - 136(uv2): 42(ptr) Variable Function - 159(n1): 158(ptr) Variable Function - 171(n2): 158(ptr) Variable Function - 193(pos1): 192(ptr) Variable Function - 205(pos2): 192(ptr) Variable Function - 217(pos): 192(ptr) Variable Function - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 87 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 88 88 16 16 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 91 81(input) 94 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 82(TessCoord) 94 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 83(patch) 94 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 87 84(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 87 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 104 104 16 16 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 107 106(output) 94 - Store 106(output) 114 - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 116 116 16 16 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 118 117(uv1) 94 - 126: 40(fvec2) CompositeExtract 83(patch) 0 2 - 128: 40(fvec2) CompositeExtract 83(patch) 1 2 - 130: 129(ptr) AccessChain 82(TessCoord) 16 - 131: 8(float) Load 130 - 132: 40(fvec2) CompositeConstruct 131 131 - 133: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 126 128 132 - Store 117(uv1) 133 - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 135 135 16 16 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 137 136(uv2) 94 - 141: 40(fvec2) CompositeExtract 83(patch) 3 2 - 142: 40(fvec2) CompositeExtract 83(patch) 2 2 - 143: 129(ptr) AccessChain 82(TessCoord) 16 - 144: 8(float) Load 143 - 145: 40(fvec2) CompositeConstruct 144 144 - 146: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 141 142 145 - Store 136(uv2) 146 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 148 148 16 16 - 149: 40(fvec2) Load 117(uv1) - 150: 40(fvec2) Load 136(uv2) - 151: 129(ptr) AccessChain 82(TessCoord) 36 - 152: 8(float) Load 151 - 153: 40(fvec2) CompositeConstruct 152 152 - 154: 40(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 149 150 153 - 155: 42(ptr) AccessChain 106(output) 125 - Store 155 154 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 157 157 16 16 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(n1) 94 - 163: 45(fvec3) CompositeExtract 83(patch) 0 1 - 164: 45(fvec3) CompositeExtract 83(patch) 1 1 - 165: 129(ptr) AccessChain 82(TessCoord) 16 - 166: 8(float) Load 165 - 167: 45(fvec3) CompositeConstruct 166 166 166 - 168: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 163 164 167 - Store 159(n1) 168 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 170 170 16 16 - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 172 171(n2) 94 - 175: 45(fvec3) CompositeExtract 83(patch) 3 1 - 176: 45(fvec3) CompositeExtract 83(patch) 2 1 - 177: 129(ptr) AccessChain 82(TessCoord) 16 - 178: 8(float) Load 177 - 179: 45(fvec3) CompositeConstruct 178 178 178 - 180: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 175 176 179 - Store 171(n2) 180 - 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 182 182 16 16 - 183: 45(fvec3) Load 159(n1) - 184: 45(fvec3) Load 171(n2) - 185: 129(ptr) AccessChain 82(TessCoord) 36 - 186: 8(float) Load 185 - 187: 45(fvec3) CompositeConstruct 186 186 186 - 188: 45(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 183 184 187 - 189: 158(ptr) AccessChain 106(output) 127 - Store 189 188 - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 191 191 16 16 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 194 193(pos1) 94 - 197: 43(fvec4) CompositeExtract 83(patch) 0 0 - 198: 43(fvec4) CompositeExtract 83(patch) 1 0 - 199: 129(ptr) AccessChain 82(TessCoord) 16 - 200: 8(float) Load 199 - 201: 43(fvec4) CompositeConstruct 200 200 200 200 - 202: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 197 198 201 - Store 193(pos1) 202 - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 204 204 16 16 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 206 205(pos2) 94 - 209: 43(fvec4) CompositeExtract 83(patch) 3 0 - 210: 43(fvec4) CompositeExtract 83(patch) 2 0 - 211: 129(ptr) AccessChain 82(TessCoord) 16 - 212: 8(float) Load 211 - 213: 43(fvec4) CompositeConstruct 212 212 212 212 - 214: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 209 210 213 - Store 205(pos2) 214 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 216 216 16 16 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 218 217(pos) 94 - 221: 43(fvec4) Load 193(pos1) - 222: 43(fvec4) Load 205(pos2) - 223: 129(ptr) AccessChain 82(TessCoord) 36 - 224: 8(float) Load 223 - 225: 43(fvec4) CompositeConstruct 224 224 224 224 - 226: 43(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 221 222 225 - Store 217(pos) 226 - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 228 228 16 16 - 239: 229 Load 235(displacementMapTexture) - 248: 240 Load 245(displacementMapSampler) - 253: 249 SampledImage 239 248 - 254: 42(ptr) AccessChain 106(output) 125 - 255: 40(fvec2) Load 254 - 256: 43(fvec4) ImageSampleExplicitLod 253 255 Lod 110 - 257: 8(float) CompositeExtract 256 0 - 298: 297(ptr) AccessChain 294 124 296 - 299: 8(float) Load 298 - 300: 8(float) FMul 257 299 - 301: 129(ptr) AccessChain 217(pos) 36 - 302: 8(float) Load 301 - 303: 8(float) FSub 302 300 - 304: 129(ptr) AccessChain 217(pos) 36 - Store 304 303 - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 306 306 16 16 - 307: 43(fvec4) Load 217(pos) - 309: 308(ptr) AccessChain 294 124 127 - 310: 258 Load 309 - 311: 43(fvec4) VectorTimesMatrix 307 310 - 312: 308(ptr) AccessChain 294 124 124 - 313: 258 Load 312 - 314: 43(fvec4) VectorTimesMatrix 311 313 - 315: 192(ptr) AccessChain 106(output) 124 +87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):66(DSOutput) Function None 82 + 84(input): 39(ptr) FunctionParameter + 85(TessCoord): 44(ptr) FunctionParameter + 86(patch): 64 FunctionParameter + 88: Label + 110(output): 108(ptr) Variable Function + 121(uv1): 44(ptr) Variable Function + 141(uv2): 44(ptr) Variable Function + 165(n1): 163(ptr) Variable Function + 177(n2): 163(ptr) Variable Function + 200(pos1): 198(ptr) Variable Function + 212(pos2): 198(ptr) Variable Function + 224(pos): 198(ptr) Variable Function + 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 90 + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 91 91 16 16 + 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 94 84(input) 97 + 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 85(TessCoord) 97 + 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 86(patch) 97 + 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 90 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) + 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 90 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 107 107 16 16 + 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 111 110(output) 97 + Store 110(output) 118 + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 120 120 16 16 + 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(uv1) 97 + 130: 42(fvec2) CompositeExtract 86(patch) 0 2 + 132: 42(fvec2) CompositeExtract 86(patch) 1 2 + 135: 133(ptr) AccessChain 85(TessCoord) 16 + 136: 8(float) Load 135 + 137: 42(fvec2) CompositeConstruct 136 136 + 138: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 130 132 137 + Store 121(uv1) 138 + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 140 140 16 16 + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(uv2) 97 + 146: 42(fvec2) CompositeExtract 86(patch) 3 2 + 147: 42(fvec2) CompositeExtract 86(patch) 2 2 + 148: 133(ptr) AccessChain 85(TessCoord) 16 + 149: 8(float) Load 148 + 150: 42(fvec2) CompositeConstruct 149 149 + 151: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 146 147 150 + Store 141(uv2) 151 + 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 153 153 16 16 + 154: 42(fvec2) Load 121(uv1) + 155: 42(fvec2) Load 141(uv2) + 156: 133(ptr) AccessChain 85(TessCoord) 36 + 157: 8(float) Load 156 + 158: 42(fvec2) CompositeConstruct 157 157 + 159: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 154 155 158 + 160: 44(ptr) AccessChain 110(output) 129 + Store 160 159 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 162 162 16 16 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 166 165(n1) 97 + 169: 48(fvec3) CompositeExtract 86(patch) 0 1 + 170: 48(fvec3) CompositeExtract 86(patch) 1 1 + 171: 133(ptr) AccessChain 85(TessCoord) 16 + 172: 8(float) Load 171 + 173: 48(fvec3) CompositeConstruct 172 172 172 + 174: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 169 170 173 + Store 165(n1) 174 + 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 176 176 16 16 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 178 177(n2) 97 + 181: 48(fvec3) CompositeExtract 86(patch) 3 1 + 182: 48(fvec3) CompositeExtract 86(patch) 2 1 + 183: 133(ptr) AccessChain 85(TessCoord) 16 + 184: 8(float) Load 183 + 185: 48(fvec3) CompositeConstruct 184 184 184 + 186: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 181 182 185 + Store 177(n2) 186 + 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 188 188 16 16 + 189: 48(fvec3) Load 165(n1) + 190: 48(fvec3) Load 177(n2) + 191: 133(ptr) AccessChain 85(TessCoord) 36 + 192: 8(float) Load 191 + 193: 48(fvec3) CompositeConstruct 192 192 192 + 194: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 189 190 193 + 195: 163(ptr) AccessChain 110(output) 131 + Store 195 194 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 197 197 16 16 + 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 201 200(pos1) 97 + 204: 46(fvec4) CompositeExtract 86(patch) 0 0 + 205: 46(fvec4) CompositeExtract 86(patch) 1 0 + 206: 133(ptr) AccessChain 85(TessCoord) 16 + 207: 8(float) Load 206 + 208: 46(fvec4) CompositeConstruct 207 207 207 207 + 209: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 204 205 208 + Store 200(pos1) 209 + 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 211 211 16 16 + 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 213 212(pos2) 97 + 216: 46(fvec4) CompositeExtract 86(patch) 3 0 + 217: 46(fvec4) CompositeExtract 86(patch) 2 0 + 218: 133(ptr) AccessChain 85(TessCoord) 16 + 219: 8(float) Load 218 + 220: 46(fvec4) CompositeConstruct 219 219 219 219 + 221: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 216 217 220 + Store 212(pos2) 221 + 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 223 223 16 16 + 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 225 224(pos) 97 + 228: 46(fvec4) Load 200(pos1) + 229: 46(fvec4) Load 212(pos2) + 230: 133(ptr) AccessChain 85(TessCoord) 36 + 231: 8(float) Load 230 + 232: 46(fvec4) CompositeConstruct 231 231 231 231 + 233: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 228 229 232 + Store 224(pos) 233 + 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 235 235 16 16 + 247: 236 Load 243(displacementMapTexture) + 257: 248 Load 254(displacementMapSampler) + 262: 258 SampledImage 247 257 + 263: 44(ptr) AccessChain 110(output) 129 + 264: 42(fvec2) Load 263 + 265: 46(fvec4) ImageSampleExplicitLod 262 264 Lod 114 + 266: 8(float) CompositeExtract 265 0 + 309: 307(ptr) AccessChain 304 128 306 + 310: 8(float) Load 309 + 311: 8(float) FMul 266 310 + 312: 133(ptr) AccessChain 224(pos) 36 + 313: 8(float) Load 312 + 314: 8(float) FSub 313 311 + 315: 133(ptr) AccessChain 224(pos) 36 Store 315 314 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 317 317 16 16 - 318: 43(fvec4) Load 217(pos) - 319: 45(fvec3) VectorShuffle 318 318 0 1 2 - 320: 45(fvec3) FNegate 319 - 321: 158(ptr) AccessChain 106(output) 140 - Store 321 320 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 323 323 16 16 - 325: 324(ptr) AccessChain 294 124 125 - 326: 43(fvec4) Load 325 - 327: 45(fvec3) VectorShuffle 326 326 0 1 2 - 328: 158(ptr) AccessChain 106(output) 140 - 329: 45(fvec3) Load 328 - 330: 45(fvec3) FAdd 327 329 - 331: 45(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 330 - 332: 158(ptr) AccessChain 106(output) 296 - Store 332 331 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 334 334 16 16 - 336: 43(fvec4) Load 217(pos) - 337: 45(fvec3) VectorShuffle 336 336 0 1 2 - 338: 158(ptr) AccessChain 106(output) 335 - Store 338 337 - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 340 340 16 16 - 342: 43(fvec4) Load 217(pos) - 343: 308(ptr) AccessChain 294 124 127 - 344: 258 Load 343 - 345: 43(fvec4) VectorTimesMatrix 342 344 - 346: 45(fvec3) VectorShuffle 345 345 0 1 2 - 347: 158(ptr) AccessChain 106(output) 341 - Store 347 346 - 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 349 349 16 16 - 350:63(DSOutput) Load 106(output) - ReturnValue 350 + 318: 46(fvec4) Load 224(pos) + 321: 319(ptr) AccessChain 304 128 131 + 322: 267 Load 321 + 323: 46(fvec4) VectorTimesMatrix 318 322 + 324: 319(ptr) AccessChain 304 128 128 + 325: 267 Load 324 + 326: 46(fvec4) VectorTimesMatrix 323 325 + 327: 198(ptr) AccessChain 110(output) 128 + Store 327 326 + 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 329 329 16 16 + 330: 46(fvec4) Load 224(pos) + 331: 48(fvec3) VectorShuffle 330 330 0 1 2 + 332: 48(fvec3) FNegate 331 + 333: 163(ptr) AccessChain 110(output) 145 + Store 333 332 + 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 335 335 16 16 + 338: 336(ptr) AccessChain 304 128 129 + 339: 46(fvec4) Load 338 + 340: 48(fvec3) VectorShuffle 339 339 0 1 2 + 341: 163(ptr) AccessChain 110(output) 145 + 342: 48(fvec3) Load 341 + 343: 48(fvec3) FAdd 340 342 + 344: 48(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 343 + 345: 163(ptr) AccessChain 110(output) 306 + Store 345 344 + 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 347 347 16 16 + 349: 46(fvec4) Load 224(pos) + 350: 48(fvec3) VectorShuffle 349 349 0 1 2 + 351: 163(ptr) AccessChain 110(output) 348 + Store 351 350 + 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 353 353 16 16 + 355: 46(fvec4) Load 224(pos) + 356: 319(ptr) AccessChain 304 128 131 + 357: 267 Load 356 + 358: 46(fvec4) VectorTimesMatrix 355 357 + 359: 48(fvec3) VectorShuffle 358 358 0 1 2 + 360: 163(ptr) AccessChain 110(output) 354 + Store 360 359 + 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 362 362 16 16 + 363:66(DSOutput) Load 110(output) + ReturnValue 363 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 8ccd18e605..8c08100df7 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 498 +// Id's are bound by 512 Capability Shader Extension "SPV_KHR_non_semantic_info" 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 6 "main" 447 450 454 457 460 463 467 471 479 483 486 489 492 495 + EntryPoint Vertex 6 "main" 461 464 468 471 474 477 481 485 493 497 500 503 506 509 1: String "" 9: String "float" 12: String "uint" @@ -27,28 +27,28 @@ spv.debuginfo.hlsl.vert 43: String "instanceScale" 47: String "instanceTexIndex" 51: String "VSInput" - 60: String "Pos" - 64: String "LightVec" - 71: String "VSOutput" - 77: String "@main" - 83: String "input" - 93: String "output" - 126: String "s" - 134: String "bool" - 139: String "modelview" - 144: String "lightPos" - 148: String "globSpeed" - 152: String "UBO" - 155: String "ubo" - 172: String "c" - 187: String "mx" - 222: String "my" - 256: String "mz" - 276: String "rotMat" - 305: String "gRotMat" - 332: String "locPos" - 346: String "pos" - 411: String "lPos" + 62: String "Pos" + 66: String "LightVec" + 73: String "VSOutput" + 79: String "@main" + 85: String "input" + 96: String "output" + 133: String "s" + 141: String "bool" + 146: String "modelview" + 151: String "lightPos" + 155: String "globSpeed" + 159: String "UBO" + 162: String "ubo" + 181: String "c" + 197: String "mx" + 232: String "my" + 266: String "mz" + 286: String "rotMat" + 316: String "gRotMat" + 344: String "locPos" + 358: String "pos" + 424: String "lPos" Name 6 "main" Name 27 "VSInput" MemberName 27(VSInput) 0 "Pos" @@ -59,79 +59,79 @@ spv.debuginfo.hlsl.vert MemberName 27(VSInput) 5 "instanceRot" MemberName 27(VSInput) 6 "instanceScale" MemberName 27(VSInput) 7 "instanceTexIndex" - Name 58 "VSOutput" - MemberName 58(VSOutput) 0 "Pos" - MemberName 58(VSOutput) 1 "Normal" - MemberName 58(VSOutput) 2 "Color" - MemberName 58(VSOutput) 3 "UV" - MemberName 58(VSOutput) 4 "ViewVec" - MemberName 58(VSOutput) 5 "LightVec" - Name 75 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" - Name 74 "input" - Name 91 "output" - Name 124 "s" - Name 137 "UBO" - MemberName 137(UBO) 0 "projection" - MemberName 137(UBO) 1 "modelview" - MemberName 137(UBO) 2 "lightPos" - MemberName 137(UBO) 3 "locSpeed" - MemberName 137(UBO) 4 "globSpeed" - Name 153 "ubo" - MemberName 153(ubo) 0 "ubo" - Name 159 "" - Name 170 "c" - Name 185 "mx" - Name 220 "my" - Name 254 "mz" - Name 274 "rotMat" - Name 303 "gRotMat" - Name 330 "locPos" - Name 344 "pos" - Name 409 "lPos" - Name 445 "input" - Name 447 "input.Pos" - Name 450 "input.Normal" - Name 454 "input.UV" - Name 457 "input.Color" - Name 460 "input.instancePos" - Name 463 "input.instanceRot" - Name 467 "input.instanceScale" - Name 471 "input.instanceTexIndex" - Name 474 "flattenTemp" - Name 475 "param" - Name 479 "@entryPointOutput.Pos" - Name 483 "@entryPointOutput.Normal" - Name 486 "@entryPointOutput.Color" - Name 489 "@entryPointOutput.UV" - Name 492 "@entryPointOutput.ViewVec" - Name 495 "@entryPointOutput.LightVec" - MemberDecorate 137(UBO) 0 RowMajor - MemberDecorate 137(UBO) 0 Offset 0 - MemberDecorate 137(UBO) 0 MatrixStride 16 - MemberDecorate 137(UBO) 1 RowMajor - MemberDecorate 137(UBO) 1 Offset 64 - MemberDecorate 137(UBO) 1 MatrixStride 16 - MemberDecorate 137(UBO) 2 Offset 128 - MemberDecorate 137(UBO) 3 Offset 144 - MemberDecorate 137(UBO) 4 Offset 148 - MemberDecorate 153(ubo) 0 Offset 0 - Decorate 153(ubo) Block - Decorate 159 DescriptorSet 0 - Decorate 159 Binding 0 - Decorate 447(input.Pos) Location 0 - Decorate 450(input.Normal) Location 1 - Decorate 454(input.UV) Location 2 - Decorate 457(input.Color) Location 3 - Decorate 460(input.instancePos) Location 4 - Decorate 463(input.instanceRot) Location 5 - Decorate 467(input.instanceScale) Location 6 - Decorate 471(input.instanceTexIndex) Location 7 - Decorate 479(@entryPointOutput.Pos) BuiltIn Position - Decorate 483(@entryPointOutput.Normal) Location 0 - Decorate 486(@entryPointOutput.Color) Location 1 - Decorate 489(@entryPointOutput.UV) Location 2 - Decorate 492(@entryPointOutput.ViewVec) Location 3 - Decorate 495(@entryPointOutput.LightVec) Location 4 + Name 60 "VSOutput" + MemberName 60(VSOutput) 0 "Pos" + MemberName 60(VSOutput) 1 "Normal" + MemberName 60(VSOutput) 2 "Color" + MemberName 60(VSOutput) 3 "UV" + MemberName 60(VSOutput) 4 "ViewVec" + MemberName 60(VSOutput) 5 "LightVec" + Name 77 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" + Name 76 "input" + Name 94 "output" + Name 131 "s" + Name 144 "UBO" + MemberName 144(UBO) 0 "projection" + MemberName 144(UBO) 1 "modelview" + MemberName 144(UBO) 2 "lightPos" + MemberName 144(UBO) 3 "locSpeed" + MemberName 144(UBO) 4 "globSpeed" + Name 160 "ubo" + MemberName 160(ubo) 0 "ubo" + Name 167 "" + Name 179 "c" + Name 195 "mx" + Name 230 "my" + Name 264 "mz" + Name 284 "rotMat" + Name 314 "gRotMat" + Name 342 "locPos" + Name 356 "pos" + Name 422 "lPos" + Name 459 "input" + Name 461 "input.Pos" + Name 464 "input.Normal" + Name 468 "input.UV" + Name 471 "input.Color" + Name 474 "input.instancePos" + Name 477 "input.instanceRot" + Name 481 "input.instanceScale" + Name 485 "input.instanceTexIndex" + Name 488 "flattenTemp" + Name 489 "param" + Name 493 "@entryPointOutput.Pos" + Name 497 "@entryPointOutput.Normal" + Name 500 "@entryPointOutput.Color" + Name 503 "@entryPointOutput.UV" + Name 506 "@entryPointOutput.ViewVec" + Name 509 "@entryPointOutput.LightVec" + MemberDecorate 144(UBO) 0 RowMajor + MemberDecorate 144(UBO) 0 Offset 0 + MemberDecorate 144(UBO) 0 MatrixStride 16 + MemberDecorate 144(UBO) 1 RowMajor + MemberDecorate 144(UBO) 1 Offset 64 + MemberDecorate 144(UBO) 1 MatrixStride 16 + MemberDecorate 144(UBO) 2 Offset 128 + MemberDecorate 144(UBO) 3 Offset 144 + MemberDecorate 144(UBO) 4 Offset 148 + MemberDecorate 160(ubo) 0 Offset 0 + Decorate 160(ubo) Block + Decorate 167 DescriptorSet 0 + Decorate 167 Binding 0 + Decorate 461(input.Pos) Location 0 + Decorate 464(input.Normal) Location 1 + Decorate 468(input.UV) Location 2 + Decorate 471(input.Color) Location 3 + Decorate 474(input.instancePos) Location 4 + Decorate 477(input.instanceRot) Location 5 + Decorate 481(input.instanceScale) Location 6 + Decorate 485(input.instanceTexIndex) Location 7 + Decorate 493(@entryPointOutput.Pos) BuiltIn Position + Decorate 497(@entryPointOutput.Normal) Location 0 + Decorate 500(@entryPointOutput.Color) Location 1 + Decorate 503(@entryPointOutput.UV) Location 2 + Decorate 506(@entryPointOutput.ViewVec) Location 3 + Decorate 509(@entryPointOutput.LightVec) Location 4 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -173,473 +173,487 @@ spv.debuginfo.hlsl.vert 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 52 26 30 54 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 16 16 53 51 16 17 28 34 35 39 40 41 42 46 55: TypePointer Function 27(VSInput) - 56: TypeVector 8(float) 4 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 - 58(VSOutput): TypeStruct 56(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) - 61: 11(int) Constant 53 - 62: 11(int) Constant 13 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 60 57 30 61 62 16 16 17 - 65: 11(int) Constant 58 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 64 19 30 65 48 16 16 17 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 71 52 30 16 16 53 71 16 17 59 63 66 67 68 69 - 72: TypeFunction 58(VSOutput) 55(ptr) - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 70 50 - 79: 11(int) Constant 62 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 77 73 30 79 16 53 77 17 79 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 50 30 79 16 78 26 52 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 89: 11(int) Constant 63 - 90: TypePointer Function 58(VSOutput) - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 70 30 89 16 78 26 - 95: 8(float) Constant 0 - 96: 56(fvec4) ConstantComposite 95 95 95 95 - 97: 18(fvec3) ConstantComposite 95 95 95 - 98:58(VSOutput) ConstantComposite 96 97 97 97 97 97 - 100: 11(int) Constant 64 - 101: 23(int) Constant 2 - 102: 23(int) Constant 3 - 103: TypePointer Function 18(fvec3) - 108: 11(int) Constant 65 - 109: TypePointer Function 20(fvec2) - 112: 23(int) Constant 7 - 113: TypePointer Function 23(int) - 122: 11(int) Constant 68 - 123: TypePointer Function 8(float) - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 126 10 30 122 16 78 26 - 128: 23(int) Constant 5 - 131: TypeMatrix 56(fvec4) 4 - 133: TypeBool - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 134 14 21 16 - 136: 133(bool) ConstantTrue - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 57 26 136 - 137(UBO): TypeStruct 131 131 56(fvec4) 8(float) 8(float) - 140: 11(int) Constant 43 - 141: 11(int) Constant 20 - 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 139 132 30 140 141 16 16 17 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 139 132 30 140 141 16 16 17 - 145: 11(int) Constant 44 - 146: 11(int) Constant 17 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 144 57 30 145 146 16 16 17 - 149: 11(int) Constant 46 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 148 10 30 149 146 16 16 17 - 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 148 10 30 149 146 16 16 17 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 152 52 30 122 16 53 152 16 17 138 142 143 147 150 - 153(ubo): TypeStruct 137(UBO) - 156: 11(int) Constant 49 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 151 30 156 48 16 16 17 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 155 52 30 122 16 53 155 16 17 154 - 158: TypePointer Uniform 153(ubo) - 159: 158(ptr) Variable Uniform - 161: 11(int) Constant 8 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 157 30 122 16 53 1 159 161 - 162: 23(int) Constant 0 - 163: TypePointer Uniform 8(float) - 169: 11(int) Constant 69 - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 172 10 30 169 16 78 26 - 181: 11(int) Constant 71 - 182: TypeMatrix 18(fvec3) 3 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 136 - 184: TypePointer Function 182 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 183 30 181 16 78 26 - 193: 11(int) Constant 72 - 196: 8(float) Constant 1065353216 - 203: 11(int) Constant 76 - 211: 11(int) Constant 77 - 219: 11(int) Constant 79 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 222 183 30 219 16 78 26 - 228: 11(int) Constant 81 - 237: 11(int) Constant 84 - 245: 11(int) Constant 85 - 253: 11(int) Constant 87 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 183 30 253 16 78 26 - 259: 11(int) Constant 88 - 264: 11(int) Constant 89 - 273: 11(int) Constant 91 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 276 183 30 273 16 78 26 - 284: 11(int) Constant 94 - 287: 23(int) Constant 4 - 293: 11(int) Constant 95 - 301: 11(int) Constant 96 - 302: TypePointer Function 131 - 304: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 305 132 30 301 16 78 26 - 311: TypePointer Function 56(fvec4) - 314: 11(int) Constant 97 - 315: 23(int) Constant 1 - 316: 56(fvec4) ConstantComposite 95 196 95 95 - 319: 11(int) Constant 98 - 325: 11(int) Constant 99 - 326: 56(fvec4) ConstantComposite 95 95 95 196 - 329: 11(int) Constant 101 - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 332 57 30 329 16 78 26 - 343: 11(int) Constant 102 - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 346 57 30 343 16 78 26 - 350: 23(int) Constant 6 - 362: 11(int) Constant 104 - 366: TypePointer Uniform 131 - 375: 11(int) Constant 105 - 394: 11(int) Constant 107 - 408: 11(int) Constant 108 - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 411 19 30 408 16 78 26 - 413: TypePointer Uniform 56(fvec4) - 428: 11(int) Constant 109 - 435: 11(int) Constant 110 - 441: 11(int) Constant 111 - 446: TypePointer Input 18(fvec3) - 447(input.Pos): 446(ptr) Variable Input -450(input.Normal): 446(ptr) Variable Input - 453: TypePointer Input 20(fvec2) - 454(input.UV): 453(ptr) Variable Input -457(input.Color): 446(ptr) Variable Input -460(input.instancePos): 446(ptr) Variable Input -463(input.instanceRot): 446(ptr) Variable Input - 466: TypePointer Input 8(float) -467(input.instanceScale): 466(ptr) Variable Input - 470: TypePointer Input 23(int) -471(input.instanceTexIndex): 470(ptr) Variable Input - 478: TypePointer Output 56(fvec4) -479(@entryPointOutput.Pos): 478(ptr) Variable Output - 482: TypePointer Output 18(fvec3) -483(@entryPointOutput.Normal): 482(ptr) Variable Output -486(@entryPointOutput.Color): 482(ptr) Variable Output -489(@entryPointOutput.UV): 482(ptr) Variable Output -492(@entryPointOutput.ViewVec): 482(ptr) Variable Output -495(@entryPointOutput.LightVec): 482(ptr) Variable Output + 56: 11(int) Constant 7 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 56 16 + 58: TypeVector 8(float) 4 + 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 + 60(VSOutput): TypeStruct 58(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) + 63: 11(int) Constant 53 + 64: 11(int) Constant 13 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 59 30 63 64 16 16 17 + 67: 11(int) Constant 58 + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 73 52 30 16 16 53 73 16 17 61 65 68 69 70 71 + 74: TypeFunction 60(VSOutput) 55(ptr) + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 72 50 + 81: 11(int) Constant 62 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 75 30 81 16 53 79 17 81 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 50 30 81 16 80 26 52 + 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 91: 11(int) Constant 63 + 92: TypePointer Function 60(VSOutput) + 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 56 16 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 72 30 91 16 80 26 + 98: 8(float) Constant 0 + 99: 58(fvec4) ConstantComposite 98 98 98 98 + 100: 18(fvec3) ConstantComposite 98 98 98 + 101:60(VSOutput) ConstantComposite 99 100 100 100 100 100 + 103: 11(int) Constant 64 + 104: 23(int) Constant 2 + 105: 23(int) Constant 3 + 106: TypePointer Function 18(fvec3) + 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 56 16 + 112: 11(int) Constant 65 + 113: TypePointer Function 20(fvec2) + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 56 16 + 117: 23(int) Constant 7 + 118: TypePointer Function 23(int) + 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 25 56 16 + 128: 11(int) Constant 68 + 129: TypePointer Function 8(float) + 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 56 16 + 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 10 30 128 16 80 26 + 135: 23(int) Constant 5 + 138: TypeMatrix 58(fvec4) 4 + 140: TypeBool + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 141 14 21 16 + 143: 140(bool) ConstantTrue + 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 59 26 143 + 144(UBO): TypeStruct 138 138 58(fvec4) 8(float) 8(float) + 147: 11(int) Constant 43 + 148: 11(int) Constant 20 + 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 139 30 147 148 16 16 17 + 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 139 30 147 148 16 16 17 + 152: 11(int) Constant 44 + 153: 11(int) Constant 17 + 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 151 59 30 152 153 16 16 17 + 156: 11(int) Constant 46 + 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 10 30 156 153 16 16 17 + 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 10 30 156 153 16 16 17 + 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 52 30 128 16 53 159 16 17 145 149 150 154 157 + 160(ubo): TypeStruct 144(UBO) + 163: 11(int) Constant 49 + 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 158 30 163 48 16 16 17 + 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 52 30 128 16 53 162 16 17 161 + 165: TypePointer Uniform 160(ubo) + 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 164 21 16 + 167: 165(ptr) Variable Uniform + 169: 11(int) Constant 8 + 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 164 30 128 16 53 1 167 169 + 170: 23(int) Constant 0 + 171: TypePointer Uniform 8(float) + 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 + 178: 11(int) Constant 69 + 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 181 10 30 178 16 80 26 + 190: 11(int) Constant 71 + 191: TypeMatrix 18(fvec3) 3 + 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 143 + 193: TypePointer Function 191 + 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 192 56 16 + 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 197 192 30 190 16 80 26 + 203: 11(int) Constant 72 + 206: 8(float) Constant 1065353216 + 213: 11(int) Constant 76 + 221: 11(int) Constant 77 + 229: 11(int) Constant 79 + 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 232 192 30 229 16 80 26 + 238: 11(int) Constant 81 + 247: 11(int) Constant 84 + 255: 11(int) Constant 85 + 263: 11(int) Constant 87 + 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 192 30 263 16 80 26 + 269: 11(int) Constant 88 + 274: 11(int) Constant 89 + 283: 11(int) Constant 91 + 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 286 192 30 283 16 80 26 + 294: 11(int) Constant 94 + 297: 23(int) Constant 4 + 303: 11(int) Constant 95 + 311: 11(int) Constant 96 + 312: TypePointer Function 138 + 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 56 16 + 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 139 30 311 16 80 26 + 322: TypePointer Function 58(fvec4) + 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 56 16 + 326: 11(int) Constant 97 + 327: 23(int) Constant 1 + 328: 58(fvec4) ConstantComposite 98 206 98 98 + 331: 11(int) Constant 98 + 337: 11(int) Constant 99 + 338: 58(fvec4) ConstantComposite 98 98 98 206 + 341: 11(int) Constant 101 + 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 344 59 30 341 16 80 26 + 355: 11(int) Constant 102 + 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 358 59 30 355 16 80 26 + 362: 23(int) Constant 6 + 374: 11(int) Constant 104 + 378: TypePointer Uniform 138 + 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 21 16 + 388: 11(int) Constant 105 + 407: 11(int) Constant 107 + 421: 11(int) Constant 108 + 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 424 19 30 421 16 80 26 + 426: TypePointer Uniform 58(fvec4) + 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 21 16 + 442: 11(int) Constant 109 + 449: 11(int) Constant 110 + 455: 11(int) Constant 111 + 460: TypePointer Input 18(fvec3) + 461(input.Pos): 460(ptr) Variable Input +464(input.Normal): 460(ptr) Variable Input + 467: TypePointer Input 20(fvec2) + 468(input.UV): 467(ptr) Variable Input +471(input.Color): 460(ptr) Variable Input +474(input.instancePos): 460(ptr) Variable Input +477(input.instanceRot): 460(ptr) Variable Input + 480: TypePointer Input 8(float) +481(input.instanceScale): 480(ptr) Variable Input + 484: TypePointer Input 23(int) +485(input.instanceTexIndex): 484(ptr) Variable Input + 492: TypePointer Output 58(fvec4) +493(@entryPointOutput.Pos): 492(ptr) Variable Output + 496: TypePointer Output 18(fvec3) +497(@entryPointOutput.Normal): 496(ptr) Variable Output +500(@entryPointOutput.Color): 496(ptr) Variable Output +503(@entryPointOutput.UV): 496(ptr) Variable Output +506(@entryPointOutput.ViewVec): 496(ptr) Variable Output +509(@entryPointOutput.LightVec): 496(ptr) Variable Output Line 1 62 1 6(main): 4 Function None 5 7: Label - 445(input): 55(ptr) Variable Function -474(flattenTemp): 90(ptr) Variable Function - 475(param): 55(ptr) Variable Function + 459(input): 55(ptr) Variable Function +488(flattenTemp): 92(ptr) Variable Function + 489(param): 55(ptr) Variable Function Line 1 62 0 - 448: 18(fvec3) Load 447(input.Pos) - 449: 103(ptr) AccessChain 445(input) 162 - Store 449 448 - 451: 18(fvec3) Load 450(input.Normal) - 452: 103(ptr) AccessChain 445(input) 315 - Store 452 451 - 455: 20(fvec2) Load 454(input.UV) - 456: 109(ptr) AccessChain 445(input) 101 - Store 456 455 - 458: 18(fvec3) Load 457(input.Color) - 459: 103(ptr) AccessChain 445(input) 102 - Store 459 458 - 461: 18(fvec3) Load 460(input.instancePos) - 462: 103(ptr) AccessChain 445(input) 287 - Store 462 461 - 464: 18(fvec3) Load 463(input.instanceRot) - 465: 103(ptr) AccessChain 445(input) 128 - Store 465 464 - 468: 8(float) Load 467(input.instanceScale) - 469: 123(ptr) AccessChain 445(input) 350 - Store 469 468 - 472: 23(int) Load 471(input.instanceTexIndex) - 473: 113(ptr) AccessChain 445(input) 112 + 462: 18(fvec3) Load 461(input.Pos) + 463: 106(ptr) AccessChain 459(input) 170 + Store 463 462 + 465: 18(fvec3) Load 464(input.Normal) + 466: 106(ptr) AccessChain 459(input) 327 + Store 466 465 + 469: 20(fvec2) Load 468(input.UV) + 470: 113(ptr) AccessChain 459(input) 104 + Store 470 469 + 472: 18(fvec3) Load 471(input.Color) + 473: 106(ptr) AccessChain 459(input) 105 Store 473 472 - 476: 27(VSInput) Load 445(input) - Store 475(param) 476 - 477:58(VSOutput) FunctionCall 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 475(param) - Store 474(flattenTemp) 477 - 480: 311(ptr) AccessChain 474(flattenTemp) 162 - 481: 56(fvec4) Load 480 - Store 479(@entryPointOutput.Pos) 481 - 484: 103(ptr) AccessChain 474(flattenTemp) 315 - 485: 18(fvec3) Load 484 - Store 483(@entryPointOutput.Normal) 485 - 487: 103(ptr) AccessChain 474(flattenTemp) 101 - 488: 18(fvec3) Load 487 - Store 486(@entryPointOutput.Color) 488 - 490: 103(ptr) AccessChain 474(flattenTemp) 102 - 491: 18(fvec3) Load 490 - Store 489(@entryPointOutput.UV) 491 - 493: 103(ptr) AccessChain 474(flattenTemp) 287 - 494: 18(fvec3) Load 493 - Store 492(@entryPointOutput.ViewVec) 494 - 496: 103(ptr) AccessChain 474(flattenTemp) 128 - 497: 18(fvec3) Load 496 - Store 495(@entryPointOutput.LightVec) 497 + 475: 18(fvec3) Load 474(input.instancePos) + 476: 106(ptr) AccessChain 459(input) 297 + Store 476 475 + 478: 18(fvec3) Load 477(input.instanceRot) + 479: 106(ptr) AccessChain 459(input) 135 + Store 479 478 + 482: 8(float) Load 481(input.instanceScale) + 483: 129(ptr) AccessChain 459(input) 362 + Store 483 482 + 486: 23(int) Load 485(input.instanceTexIndex) + 487: 118(ptr) AccessChain 459(input) 117 + Store 487 486 + 490: 27(VSInput) Load 459(input) + Store 489(param) 490 + 491:60(VSOutput) FunctionCall 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 489(param) + Store 488(flattenTemp) 491 + 494: 322(ptr) AccessChain 488(flattenTemp) 170 + 495: 58(fvec4) Load 494 + Store 493(@entryPointOutput.Pos) 495 + 498: 106(ptr) AccessChain 488(flattenTemp) 327 + 499: 18(fvec3) Load 498 + Store 497(@entryPointOutput.Normal) 499 + 501: 106(ptr) AccessChain 488(flattenTemp) 104 + 502: 18(fvec3) Load 501 + Store 500(@entryPointOutput.Color) 502 + 504: 106(ptr) AccessChain 488(flattenTemp) 105 + 505: 18(fvec3) Load 504 + Store 503(@entryPointOutput.UV) 505 + 507: 106(ptr) AccessChain 488(flattenTemp) 297 + 508: 18(fvec3) Load 507 + Store 506(@entryPointOutput.ViewVec) 508 + 510: 106(ptr) AccessChain 488(flattenTemp) 135 + 511: 18(fvec3) Load 510 + Store 509(@entryPointOutput.LightVec) 511 Return FunctionEnd Line 1 62 1 -75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):58(VSOutput) Function None 72 - 74(input): 55(ptr) FunctionParameter - 76: Label - 91(output): 90(ptr) Variable Function - 124(s): 123(ptr) Variable Function - 170(c): 123(ptr) Variable Function - 185(mx): 184(ptr) Variable Function - 220(my): 184(ptr) Variable Function - 254(mz): 184(ptr) Variable Function - 274(rotMat): 184(ptr) Variable Function - 303(gRotMat): 302(ptr) Variable Function - 330(locPos): 311(ptr) Variable Function - 344(pos): 311(ptr) Variable Function - 409(lPos): 103(ptr) Variable Function - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 79 79 16 16 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 74(input) 85 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 78 75(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 78 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 89 89 16 16 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 91(output) 85 - Store 91(output) 98 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 100 100 16 16 - 104: 103(ptr) AccessChain 74(input) 102 - 105: 18(fvec3) Load 104 - 106: 103(ptr) AccessChain 91(output) 101 - Store 106 105 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 108 108 16 16 - 110: 109(ptr) AccessChain 74(input) 101 - 111: 20(fvec2) Load 110 - 114: 113(ptr) AccessChain 74(input) 112 - 115: 23(int) Load 114 - 116: 8(float) ConvertSToF 115 - 117: 8(float) CompositeExtract 111 0 - 118: 8(float) CompositeExtract 111 1 - 119: 18(fvec3) CompositeConstruct 117 118 116 - 120: 103(ptr) AccessChain 91(output) 102 - Store 120 119 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 122 122 16 16 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(s) 85 - 129: 123(ptr) AccessChain 74(input) 128 16 - 130: 8(float) Load 129 - 164: 163(ptr) AccessChain 159 162 102 - 165: 8(float) Load 164 - 166: 8(float) FAdd 130 165 - 167: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 166 - Store 124(s) 167 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 169 169 16 16 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 171 170(c) 85 - 174: 123(ptr) AccessChain 74(input) 128 16 - 175: 8(float) Load 174 - 176: 163(ptr) AccessChain 159 162 102 - 177: 8(float) Load 176 - 178: 8(float) FAdd 175 177 - 179: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 178 - Store 170(c) 179 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 181 181 16 16 - 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 186 185(mx) 85 - 189: 8(float) Load 170(c) - 190: 8(float) Load 124(s) - 191: 8(float) FNegate 190 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 193 193 16 16 - 194: 8(float) Load 124(s) - 195: 8(float) Load 170(c) - 197: 18(fvec3) CompositeConstruct 189 191 95 - 198: 18(fvec3) CompositeConstruct 194 195 95 - 199: 18(fvec3) CompositeConstruct 95 95 196 - 200: 182 CompositeConstruct 197 198 199 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 181 181 16 16 - Store 185(mx) 200 +77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):60(VSOutput) Function None 74 + 76(input): 55(ptr) FunctionParameter + 78: Label + 94(output): 92(ptr) Variable Function + 131(s): 129(ptr) Variable Function + 179(c): 129(ptr) Variable Function + 195(mx): 193(ptr) Variable Function + 230(my): 193(ptr) Variable Function + 264(mz): 193(ptr) Variable Function + 284(rotMat): 193(ptr) Variable Function + 314(gRotMat): 312(ptr) Variable Function + 342(locPos): 322(ptr) Variable Function + 356(pos): 322(ptr) Variable Function + 422(lPos): 106(ptr) Variable Function + 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 81 81 16 16 + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 76(input) 87 + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) + 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 91 91 16 16 + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 94(output) 87 + Store 94(output) 101 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 103 103 16 16 + 108: 106(ptr) AccessChain 76(input) 105 + 109: 18(fvec3) Load 108 + 110: 106(ptr) AccessChain 94(output) 104 + Store 110 109 + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 112 112 16 16 + 115: 113(ptr) AccessChain 76(input) 104 + 116: 20(fvec2) Load 115 + 120: 118(ptr) AccessChain 76(input) 117 + 121: 23(int) Load 120 + 122: 8(float) ConvertSToF 121 + 123: 8(float) CompositeExtract 116 0 + 124: 8(float) CompositeExtract 116 1 + 125: 18(fvec3) CompositeConstruct 123 124 122 + 126: 106(ptr) AccessChain 94(output) 105 + Store 126 125 + 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 128 128 16 16 + 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(s) 87 + 136: 129(ptr) AccessChain 76(input) 135 16 + 137: 8(float) Load 136 + 173: 171(ptr) AccessChain 167 170 105 + 174: 8(float) Load 173 + 175: 8(float) FAdd 137 174 + 176: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 175 + Store 131(s) 176 + 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 178 178 16 16 + 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 180 179(c) 87 + 183: 129(ptr) AccessChain 76(input) 135 16 + 184: 8(float) Load 183 + 185: 171(ptr) AccessChain 167 170 105 + 186: 8(float) Load 185 + 187: 8(float) FAdd 184 186 + 188: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 187 + Store 179(c) 188 + 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 190 190 16 16 + 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 196 195(mx) 87 + 199: 8(float) Load 179(c) + 200: 8(float) Load 131(s) + 201: 8(float) FNegate 200 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 203 203 16 16 - 204: 123(ptr) AccessChain 74(input) 128 52 - 205: 8(float) Load 204 - 206: 163(ptr) AccessChain 159 162 102 - 207: 8(float) Load 206 - 208: 8(float) FAdd 205 207 - 209: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 208 - Store 124(s) 209 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 211 211 16 16 - 212: 123(ptr) AccessChain 74(input) 128 52 - 213: 8(float) Load 212 - 214: 163(ptr) AccessChain 159 162 102 + 204: 8(float) Load 131(s) + 205: 8(float) Load 179(c) + 207: 18(fvec3) CompositeConstruct 199 201 98 + 208: 18(fvec3) CompositeConstruct 204 205 98 + 209: 18(fvec3) CompositeConstruct 98 98 206 + 210: 191 CompositeConstruct 207 208 209 + 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 190 190 16 16 + Store 195(mx) 210 + 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 213 213 16 16 + 214: 129(ptr) AccessChain 76(input) 135 52 215: 8(float) Load 214 - 216: 8(float) FAdd 213 215 - 217: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 216 - Store 170(c) 217 - 218: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 219 219 16 16 - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 221 220(my) 85 - 224: 8(float) Load 170(c) - 225: 8(float) Load 124(s) - 226: 8(float) FNegate 225 - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 228 228 16 16 - 229: 8(float) Load 124(s) - 230: 8(float) Load 170(c) - 231: 18(fvec3) CompositeConstruct 224 95 226 - 232: 18(fvec3) CompositeConstruct 95 196 95 - 233: 18(fvec3) CompositeConstruct 229 95 230 - 234: 182 CompositeConstruct 231 232 233 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 219 219 16 16 - Store 220(my) 234 - 236: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 237 237 16 16 - 238: 123(ptr) AccessChain 74(input) 128 21 - 239: 8(float) Load 238 - 240: 163(ptr) AccessChain 159 162 102 - 241: 8(float) Load 240 - 242: 8(float) FAdd 239 241 - 243: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 242 - Store 124(s) 243 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 245 245 16 16 - 246: 123(ptr) AccessChain 74(input) 128 21 - 247: 8(float) Load 246 - 248: 163(ptr) AccessChain 159 162 102 + 216: 171(ptr) AccessChain 167 170 105 + 217: 8(float) Load 216 + 218: 8(float) FAdd 215 217 + 219: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 218 + Store 131(s) 219 + 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 221 221 16 16 + 222: 129(ptr) AccessChain 76(input) 135 52 + 223: 8(float) Load 222 + 224: 171(ptr) AccessChain 167 170 105 + 225: 8(float) Load 224 + 226: 8(float) FAdd 223 225 + 227: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 226 + Store 179(c) 227 + 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 229 229 16 16 + 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 231 230(my) 87 + 234: 8(float) Load 179(c) + 235: 8(float) Load 131(s) + 236: 8(float) FNegate 235 + 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 238 238 16 16 + 239: 8(float) Load 131(s) + 240: 8(float) Load 179(c) + 241: 18(fvec3) CompositeConstruct 234 98 236 + 242: 18(fvec3) CompositeConstruct 98 206 98 + 243: 18(fvec3) CompositeConstruct 239 98 240 + 244: 191 CompositeConstruct 241 242 243 + 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 229 229 16 16 + Store 230(my) 244 + 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 247 247 16 16 + 248: 129(ptr) AccessChain 76(input) 135 21 249: 8(float) Load 248 - 250: 8(float) FAdd 247 249 - 251: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 250 - Store 170(c) 251 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 253 253 16 16 - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(mz) 85 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 259 259 16 16 - 260: 8(float) Load 170(c) - 261: 8(float) Load 124(s) - 262: 8(float) FNegate 261 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16 - 265: 8(float) Load 124(s) - 266: 8(float) Load 170(c) - 267: 18(fvec3) CompositeConstruct 196 95 95 - 268: 18(fvec3) CompositeConstruct 95 260 262 - 269: 18(fvec3) CompositeConstruct 95 265 266 - 270: 182 CompositeConstruct 267 268 269 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 253 253 16 16 - Store 254(mz) 270 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 273 273 16 16 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 275 274(rotMat) 85 - 278: 182 Load 185(mx) - 279: 182 Load 220(my) - 280: 182 MatrixTimesMatrix 278 279 - 281: 182 Load 254(mz) - 282: 182 MatrixTimesMatrix 280 281 - Store 274(rotMat) 282 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 284 284 16 16 - 285: 123(ptr) AccessChain 74(input) 128 52 - 286: 8(float) Load 285 - 288: 163(ptr) AccessChain 159 162 287 - 289: 8(float) Load 288 - 290: 8(float) FAdd 286 289 - 291: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 290 - Store 124(s) 291 - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 293 293 16 16 - 294: 123(ptr) AccessChain 74(input) 128 52 - 295: 8(float) Load 294 - 296: 163(ptr) AccessChain 159 162 287 - 297: 8(float) Load 296 - 298: 8(float) FAdd 295 297 - 299: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 298 - Store 170(c) 299 - 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 301 301 16 16 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 304 303(gRotMat) 85 - 307: 8(float) Load 170(c) - 308: 8(float) Load 124(s) - 309: 8(float) FNegate 308 - 310: 56(fvec4) CompositeConstruct 307 95 309 95 - 312: 311(ptr) AccessChain 303(gRotMat) 162 - Store 312 310 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 314 314 16 16 - 317: 311(ptr) AccessChain 303(gRotMat) 315 - Store 317 316 - 318: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 319 319 16 16 - 320: 8(float) Load 124(s) - 321: 8(float) Load 170(c) - 322: 56(fvec4) CompositeConstruct 320 95 321 95 - 323: 311(ptr) AccessChain 303(gRotMat) 101 - Store 323 322 - 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 325 325 16 16 - 327: 311(ptr) AccessChain 303(gRotMat) 102 - Store 327 326 - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 329 329 16 16 - 333: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 331 330(locPos) 85 - 334: 103(ptr) AccessChain 74(input) 162 - 335: 18(fvec3) Load 334 - 336: 182 Load 274(rotMat) - 337: 18(fvec3) VectorTimesMatrix 335 336 - 338: 8(float) CompositeExtract 337 0 - 339: 8(float) CompositeExtract 337 1 - 340: 8(float) CompositeExtract 337 2 - 341: 56(fvec4) CompositeConstruct 338 339 340 196 - Store 330(locPos) 341 - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 343 343 16 16 - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 345 344(pos) 85 - 348: 56(fvec4) Load 330(locPos) - 349: 18(fvec3) VectorShuffle 348 348 0 1 2 - 351: 123(ptr) AccessChain 74(input) 350 - 352: 8(float) Load 351 - 353: 18(fvec3) VectorTimesScalar 349 352 - 354: 103(ptr) AccessChain 74(input) 287 - 355: 18(fvec3) Load 354 - 356: 18(fvec3) FAdd 353 355 - 357: 8(float) CompositeExtract 356 0 - 358: 8(float) CompositeExtract 356 1 - 359: 8(float) CompositeExtract 356 2 - 360: 56(fvec4) CompositeConstruct 357 358 359 196 - Store 344(pos) 360 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 362 362 16 16 - 363: 56(fvec4) Load 344(pos) - 364: 131 Load 303(gRotMat) - 365: 56(fvec4) VectorTimesMatrix 363 364 - 367: 366(ptr) AccessChain 159 162 315 - 368: 131 Load 367 - 369: 56(fvec4) VectorTimesMatrix 365 368 - 370: 366(ptr) AccessChain 159 162 162 - 371: 131 Load 370 - 372: 56(fvec4) VectorTimesMatrix 369 371 - 373: 311(ptr) AccessChain 91(output) 162 - Store 373 372 - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 375 375 16 16 - 376: 103(ptr) AccessChain 74(input) 315 - 377: 18(fvec3) Load 376 - 378: 182 Load 274(rotMat) - 379: 18(fvec3) VectorTimesMatrix 377 378 - 380: 131 Load 303(gRotMat) - 381: 366(ptr) AccessChain 159 162 315 - 382: 131 Load 381 - 383: 131 MatrixTimesMatrix 380 382 - 384: 56(fvec4) CompositeExtract 383 0 - 385: 18(fvec3) VectorShuffle 384 384 0 1 2 - 386: 56(fvec4) CompositeExtract 383 1 - 387: 18(fvec3) VectorShuffle 386 386 0 1 2 - 388: 56(fvec4) CompositeExtract 383 2 - 389: 18(fvec3) VectorShuffle 388 388 0 1 2 - 390: 182 CompositeConstruct 385 387 389 - 391: 18(fvec3) VectorTimesMatrix 379 390 - 392: 103(ptr) AccessChain 91(output) 315 - Store 392 391 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 394 394 16 16 - 395: 103(ptr) AccessChain 74(input) 162 - 396: 18(fvec3) Load 395 - 397: 103(ptr) AccessChain 74(input) 287 - 398: 18(fvec3) Load 397 - 399: 18(fvec3) FAdd 396 398 - 400: 8(float) CompositeExtract 399 0 - 401: 8(float) CompositeExtract 399 1 - 402: 8(float) CompositeExtract 399 2 - 403: 56(fvec4) CompositeConstruct 400 401 402 196 - 404: 366(ptr) AccessChain 159 162 315 - 405: 131 Load 404 - 406: 56(fvec4) VectorTimesMatrix 403 405 - Store 344(pos) 406 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 408 408 16 16 - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 410 409(lPos) 85 - 414: 413(ptr) AccessChain 159 162 101 - 415: 56(fvec4) Load 414 - 416: 18(fvec3) VectorShuffle 415 415 0 1 2 - 417: 366(ptr) AccessChain 159 162 315 - 418: 131 Load 417 - 419: 56(fvec4) CompositeExtract 418 0 - 420: 18(fvec3) VectorShuffle 419 419 0 1 2 - 421: 56(fvec4) CompositeExtract 418 1 - 422: 18(fvec3) VectorShuffle 421 421 0 1 2 - 423: 56(fvec4) CompositeExtract 418 2 - 424: 18(fvec3) VectorShuffle 423 423 0 1 2 - 425: 182 CompositeConstruct 420 422 424 - 426: 18(fvec3) VectorTimesMatrix 416 425 - Store 409(lPos) 426 - 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 428 428 16 16 - 429: 18(fvec3) Load 409(lPos) - 430: 56(fvec4) Load 344(pos) - 431: 18(fvec3) VectorShuffle 430 430 0 1 2 - 432: 18(fvec3) FSub 429 431 - 433: 103(ptr) AccessChain 91(output) 128 - Store 433 432 - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 435 435 16 16 - 436: 56(fvec4) Load 344(pos) - 437: 18(fvec3) VectorShuffle 436 436 0 1 2 - 438: 18(fvec3) FNegate 437 - 439: 103(ptr) AccessChain 91(output) 287 - Store 439 438 - 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 441 441 16 16 - 442:58(VSOutput) Load 91(output) - ReturnValue 442 + 250: 171(ptr) AccessChain 167 170 105 + 251: 8(float) Load 250 + 252: 8(float) FAdd 249 251 + 253: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 252 + Store 131(s) 253 + 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 255 255 16 16 + 256: 129(ptr) AccessChain 76(input) 135 21 + 257: 8(float) Load 256 + 258: 171(ptr) AccessChain 167 170 105 + 259: 8(float) Load 258 + 260: 8(float) FAdd 257 259 + 261: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 260 + Store 179(c) 261 + 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 263 263 16 16 + 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(mz) 87 + 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 269 269 16 16 + 270: 8(float) Load 179(c) + 271: 8(float) Load 131(s) + 272: 8(float) FNegate 271 + 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 274 274 16 16 + 275: 8(float) Load 131(s) + 276: 8(float) Load 179(c) + 277: 18(fvec3) CompositeConstruct 206 98 98 + 278: 18(fvec3) CompositeConstruct 98 270 272 + 279: 18(fvec3) CompositeConstruct 98 275 276 + 280: 191 CompositeConstruct 277 278 279 + 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 263 263 16 16 + Store 264(mz) 280 + 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 283 283 16 16 + 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 285 284(rotMat) 87 + 288: 191 Load 195(mx) + 289: 191 Load 230(my) + 290: 191 MatrixTimesMatrix 288 289 + 291: 191 Load 264(mz) + 292: 191 MatrixTimesMatrix 290 291 + Store 284(rotMat) 292 + 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 294 294 16 16 + 295: 129(ptr) AccessChain 76(input) 135 52 + 296: 8(float) Load 295 + 298: 171(ptr) AccessChain 167 170 297 + 299: 8(float) Load 298 + 300: 8(float) FAdd 296 299 + 301: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 300 + Store 131(s) 301 + 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 303 303 16 16 + 304: 129(ptr) AccessChain 76(input) 135 52 + 305: 8(float) Load 304 + 306: 171(ptr) AccessChain 167 170 297 + 307: 8(float) Load 306 + 308: 8(float) FAdd 305 307 + 309: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 308 + Store 179(c) 309 + 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 311 311 16 16 + 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(gRotMat) 87 + 318: 8(float) Load 179(c) + 319: 8(float) Load 131(s) + 320: 8(float) FNegate 319 + 321: 58(fvec4) CompositeConstruct 318 98 320 98 + 324: 322(ptr) AccessChain 314(gRotMat) 170 + Store 324 321 + 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 326 326 16 16 + 329: 322(ptr) AccessChain 314(gRotMat) 327 + Store 329 328 + 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 331 331 16 16 + 332: 8(float) Load 131(s) + 333: 8(float) Load 179(c) + 334: 58(fvec4) CompositeConstruct 332 98 333 98 + 335: 322(ptr) AccessChain 314(gRotMat) 104 + Store 335 334 + 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 337 337 16 16 + 339: 322(ptr) AccessChain 314(gRotMat) 105 + Store 339 338 + 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 341 341 16 16 + 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 343 342(locPos) 87 + 346: 106(ptr) AccessChain 76(input) 170 + 347: 18(fvec3) Load 346 + 348: 191 Load 284(rotMat) + 349: 18(fvec3) VectorTimesMatrix 347 348 + 350: 8(float) CompositeExtract 349 0 + 351: 8(float) CompositeExtract 349 1 + 352: 8(float) CompositeExtract 349 2 + 353: 58(fvec4) CompositeConstruct 350 351 352 206 + Store 342(locPos) 353 + 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 355 355 16 16 + 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 357 356(pos) 87 + 360: 58(fvec4) Load 342(locPos) + 361: 18(fvec3) VectorShuffle 360 360 0 1 2 + 363: 129(ptr) AccessChain 76(input) 362 + 364: 8(float) Load 363 + 365: 18(fvec3) VectorTimesScalar 361 364 + 366: 106(ptr) AccessChain 76(input) 297 + 367: 18(fvec3) Load 366 + 368: 18(fvec3) FAdd 365 367 + 369: 8(float) CompositeExtract 368 0 + 370: 8(float) CompositeExtract 368 1 + 371: 8(float) CompositeExtract 368 2 + 372: 58(fvec4) CompositeConstruct 369 370 371 206 + Store 356(pos) 372 + 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 374 374 16 16 + 375: 58(fvec4) Load 356(pos) + 376: 138 Load 314(gRotMat) + 377: 58(fvec4) VectorTimesMatrix 375 376 + 380: 378(ptr) AccessChain 167 170 327 + 381: 138 Load 380 + 382: 58(fvec4) VectorTimesMatrix 377 381 + 383: 378(ptr) AccessChain 167 170 170 + 384: 138 Load 383 + 385: 58(fvec4) VectorTimesMatrix 382 384 + 386: 322(ptr) AccessChain 94(output) 170 + Store 386 385 + 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 388 388 16 16 + 389: 106(ptr) AccessChain 76(input) 327 + 390: 18(fvec3) Load 389 + 391: 191 Load 284(rotMat) + 392: 18(fvec3) VectorTimesMatrix 390 391 + 393: 138 Load 314(gRotMat) + 394: 378(ptr) AccessChain 167 170 327 + 395: 138 Load 394 + 396: 138 MatrixTimesMatrix 393 395 + 397: 58(fvec4) CompositeExtract 396 0 + 398: 18(fvec3) VectorShuffle 397 397 0 1 2 + 399: 58(fvec4) CompositeExtract 396 1 + 400: 18(fvec3) VectorShuffle 399 399 0 1 2 + 401: 58(fvec4) CompositeExtract 396 2 + 402: 18(fvec3) VectorShuffle 401 401 0 1 2 + 403: 191 CompositeConstruct 398 400 402 + 404: 18(fvec3) VectorTimesMatrix 392 403 + 405: 106(ptr) AccessChain 94(output) 327 + Store 405 404 + 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 407 407 16 16 + 408: 106(ptr) AccessChain 76(input) 170 + 409: 18(fvec3) Load 408 + 410: 106(ptr) AccessChain 76(input) 297 + 411: 18(fvec3) Load 410 + 412: 18(fvec3) FAdd 409 411 + 413: 8(float) CompositeExtract 412 0 + 414: 8(float) CompositeExtract 412 1 + 415: 8(float) CompositeExtract 412 2 + 416: 58(fvec4) CompositeConstruct 413 414 415 206 + 417: 378(ptr) AccessChain 167 170 327 + 418: 138 Load 417 + 419: 58(fvec4) VectorTimesMatrix 416 418 + Store 356(pos) 419 + 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 421 421 16 16 + 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 423 422(lPos) 87 + 428: 426(ptr) AccessChain 167 170 104 + 429: 58(fvec4) Load 428 + 430: 18(fvec3) VectorShuffle 429 429 0 1 2 + 431: 378(ptr) AccessChain 167 170 327 + 432: 138 Load 431 + 433: 58(fvec4) CompositeExtract 432 0 + 434: 18(fvec3) VectorShuffle 433 433 0 1 2 + 435: 58(fvec4) CompositeExtract 432 1 + 436: 18(fvec3) VectorShuffle 435 435 0 1 2 + 437: 58(fvec4) CompositeExtract 432 2 + 438: 18(fvec3) VectorShuffle 437 437 0 1 2 + 439: 191 CompositeConstruct 434 436 438 + 440: 18(fvec3) VectorTimesMatrix 430 439 + Store 422(lPos) 440 + 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 442 442 16 16 + 443: 18(fvec3) Load 422(lPos) + 444: 58(fvec4) Load 356(pos) + 445: 18(fvec3) VectorShuffle 444 444 0 1 2 + 446: 18(fvec3) FSub 443 445 + 447: 106(ptr) AccessChain 94(output) 135 + Store 447 446 + 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 449 449 16 16 + 450: 58(fvec4) Load 356(pos) + 451: 18(fvec3) VectorShuffle 450 450 0 1 2 + 452: 18(fvec3) FNegate 451 + 453: 106(ptr) AccessChain 94(output) 297 + Store 453 452 + 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 455 455 16 16 + 456:60(VSOutput) Load 94(output) + ReturnValue 456 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out index d244fd156a..e17bf1a9ff 100644 --- a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.scalar_types.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 146 +// Id's are bound by 158 Capability Shader Capability Float16 @@ -27,42 +27,42 @@ spv.debuginfo.scalar_types.glsl.frag #line 1 " 30: String "bool" - 35: String "VAR_bool" - 41: String "int" - 46: String "VAR_int" - 53: String "VAR_uint" - 57: String "float" - 62: String "VAR_float" - 67: String "double" - 73: String "VAR_double" - 78: String "int8_t" - 83: String "VAR_int8_t" - 88: String "uint8_t" - 93: String "VAR_uint8_t" - 98: String "int16_t" - 104: String "VAR_int16_t" - 109: String "uint16_t" - 114: String "VAR_uint16_t" - 119: String "int64_t" - 124: String "VAR_int64_t" - 129: String "uint64_t" - 134: String "VAR_uint64_t" - 139: String "float16_t" - 144: String "VAR_float16_t" + 36: String "VAR_bool" + 42: String "int" + 48: String "VAR_int" + 56: String "VAR_uint" + 60: String "float" + 66: String "VAR_float" + 71: String "double" + 78: String "VAR_double" + 83: String "int8_t" + 89: String "VAR_int8_t" + 94: String "uint8_t" + 100: String "VAR_uint8_t" + 105: String "int16_t" + 112: String "VAR_int16_t" + 117: String "uint16_t" + 123: String "VAR_uint16_t" + 128: String "int64_t" + 134: String "VAR_int64_t" + 139: String "uint64_t" + 145: String "VAR_uint64_t" + 150: String "float16_t" + 156: String "VAR_float16_t" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 14 "main" - Name 33 "VAR_bool" - Name 44 "VAR_int" - Name 51 "VAR_uint" - Name 60 "VAR_float" - Name 71 "VAR_double" - Name 81 "VAR_int8_t" - Name 91 "VAR_uint8_t" - Name 102 "VAR_int16_t" - Name 112 "VAR_uint16_t" - Name 122 "VAR_int64_t" - Name 132 "VAR_uint64_t" - Name 142 "VAR_float16_t" + Name 34 "VAR_bool" + Name 46 "VAR_int" + Name 54 "VAR_uint" + Name 64 "VAR_float" + Name 76 "VAR_double" + Name 87 "VAR_int8_t" + Name 98 "VAR_uint8_t" + Name 110 "VAR_int16_t" + Name 121 "VAR_uint16_t" + Name 132 "VAR_int64_t" + Name 143 "VAR_uint64_t" + Name 154 "VAR_float16_t" 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -83,114 +83,126 @@ spv.debuginfo.scalar_types.glsl.frag 29: TypeBool 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 24 12 32: TypePointer Private 29(bool) - 33(VAR_bool): 32(ptr) Variable Private - 36: 7(int) Constant 8 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 35 31 18 28 12 21 35 33(VAR_bool) 36 - 37: 29(bool) ConstantFalse - 39: 7(int) Constant 44 - 40: TypeInt 32 1 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 41 10 23 12 - 43: TypePointer Private 40(int) - 44(VAR_int): 43(ptr) Variable Private - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 46 42 18 39 12 21 46 44(VAR_int) 36 - 47: 40(int) Constant 0 - 49: 7(int) Constant 45 - 50: TypePointer Private 7(int) - 51(VAR_uint): 50(ptr) Variable Private - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 53 9 18 49 12 21 53 51(VAR_uint) 36 - 55: 7(int) Constant 46 - 56: TypeFloat 32 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 57 10 13 12 - 59: TypePointer Private 56(float) - 60(VAR_float): 59(ptr) Variable Private - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 62 58 18 55 12 21 62 60(VAR_float) 36 - 63: 56(float) Constant 0 - 65: 7(int) Constant 47 - 66: TypeFloat 64 - 69: 7(int) Constant 64 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 67 69 13 12 - 70: TypePointer Private 66(float64_t) - 71(VAR_double): 70(ptr) Variable Private - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 73 68 18 65 12 21 73 71(VAR_double) 36 - 74:66(float64_t) Constant 0 0 - 76: 7(int) Constant 48 - 77: TypeInt 8 1 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 78 36 23 12 - 80: TypePointer Private 77(int8_t) - 81(VAR_int8_t): 80(ptr) Variable Private - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 79 18 76 12 21 83 81(VAR_int8_t) 36 - 84: 77(int8_t) Constant 0 - 86: 7(int) Constant 49 - 87: TypeInt 8 0 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 88 36 11 12 - 90: TypePointer Private 87(int8_t) - 91(VAR_uint8_t): 90(ptr) Variable Private - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 93 89 18 86 12 21 93 91(VAR_uint8_t) 36 - 94: 87(int8_t) Constant 0 - 96: 7(int) Constant 50 - 97: TypeInt 16 1 - 100: 7(int) Constant 16 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 100 23 12 - 101: TypePointer Private 97(int16_t) -102(VAR_int16_t): 101(ptr) Variable Private - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 104 99 18 96 12 21 104 102(VAR_int16_t) 36 - 105: 97(int16_t) Constant 0 - 107: 7(int) Constant 51 - 108: TypeInt 16 0 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 109 100 11 12 - 111: TypePointer Private 108(int16_t) -112(VAR_uint16_t): 111(ptr) Variable Private - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 114 110 18 107 12 21 114 112(VAR_uint16_t) 36 - 115:108(int16_t) Constant 0 - 117: 7(int) Constant 52 - 118: TypeInt 64 1 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 119 69 23 12 - 121: TypePointer Private 118(int64_t) -122(VAR_int64_t): 121(ptr) Variable Private - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 120 18 117 12 21 124 122(VAR_int64_t) 36 - 125:118(int64_t) Constant 0 0 - 127: 7(int) Constant 53 - 128: TypeInt 64 0 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 129 69 11 12 - 131: TypePointer Private 128(int64_t) -132(VAR_uint64_t): 131(ptr) Variable Private - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 130 18 127 12 21 134 132(VAR_uint64_t) 36 - 135:128(int64_t) Constant 0 0 - 137: 7(int) Constant 54 - 138: TypeFloat 16 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 100 13 12 - 141: TypePointer Private 138(float16_t) -142(VAR_float16_t): 141(ptr) Variable Private - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 144 140 18 137 12 21 144 142(VAR_float16_t) 36 - 145:138(float16_t) Constant 0 + 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 11 12 + 34(VAR_bool): 32(ptr) Variable Private + 37: 7(int) Constant 8 + 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 36 31 18 28 12 21 36 34(VAR_bool) 37 + 38: 29(bool) ConstantFalse + 40: 7(int) Constant 44 + 41: TypeInt 32 1 + 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 42 10 23 12 + 44: TypePointer Private 41(int) + 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 11 12 + 46(VAR_int): 44(ptr) Variable Private + 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 48 43 18 40 12 21 48 46(VAR_int) 37 + 49: 41(int) Constant 0 + 51: 7(int) Constant 45 + 52: TypePointer Private 7(int) + 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 11 12 + 54(VAR_uint): 52(ptr) Variable Private + 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 56 9 18 51 12 21 56 54(VAR_uint) 37 + 58: 7(int) Constant 46 + 59: TypeFloat 32 + 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 60 10 13 12 + 62: TypePointer Private 59(float) + 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 11 12 + 64(VAR_float): 62(ptr) Variable Private + 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 66 61 18 58 12 21 66 64(VAR_float) 37 + 67: 59(float) Constant 0 + 69: 7(int) Constant 47 + 70: TypeFloat 64 + 73: 7(int) Constant 64 + 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 71 73 13 12 + 74: TypePointer Private 70(float64_t) + 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 11 12 + 76(VAR_double): 74(ptr) Variable Private + 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 72 18 69 12 21 78 76(VAR_double) 37 + 79:70(float64_t) Constant 0 0 + 81: 7(int) Constant 48 + 82: TypeInt 8 1 + 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 83 37 23 12 + 85: TypePointer Private 82(int8_t) + 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 11 12 + 87(VAR_int8_t): 85(ptr) Variable Private + 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 89 84 18 81 12 21 89 87(VAR_int8_t) 37 + 90: 82(int8_t) Constant 0 + 92: 7(int) Constant 49 + 93: TypeInt 8 0 + 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 94 37 11 12 + 96: TypePointer Private 93(int8_t) + 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 95 11 12 + 98(VAR_uint8_t): 96(ptr) Variable Private + 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 100 95 18 92 12 21 100 98(VAR_uint8_t) 37 + 101: 93(int8_t) Constant 0 + 103: 7(int) Constant 50 + 104: TypeInt 16 1 + 107: 7(int) Constant 16 + 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 105 107 23 12 + 108: TypePointer Private 104(int16_t) + 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 106 11 12 +110(VAR_int16_t): 108(ptr) Variable Private + 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 112 106 18 103 12 21 112 110(VAR_int16_t) 37 + 113:104(int16_t) Constant 0 + 115: 7(int) Constant 51 + 116: TypeInt 16 0 + 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 117 107 11 12 + 119: TypePointer Private 116(int16_t) + 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 11 12 +121(VAR_uint16_t): 119(ptr) Variable Private + 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 123 118 18 115 12 21 123 121(VAR_uint16_t) 37 + 124:116(int16_t) Constant 0 + 126: 7(int) Constant 52 + 127: TypeInt 64 1 + 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 73 23 12 + 130: TypePointer Private 127(int64_t) + 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 129 11 12 +132(VAR_int64_t): 130(ptr) Variable Private + 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 129 18 126 12 21 134 132(VAR_int64_t) 37 + 135:127(int64_t) Constant 0 0 + 137: 7(int) Constant 53 + 138: TypeInt 64 0 + 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 73 11 12 + 141: TypePointer Private 138(int64_t) + 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 140 11 12 +143(VAR_uint64_t): 141(ptr) Variable Private + 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 145 140 18 137 12 21 145 143(VAR_uint64_t) 37 + 146:138(int64_t) Constant 0 0 + 148: 7(int) Constant 54 + 149: TypeFloat 16 + 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 150 107 13 12 + 152: TypePointer Private 149(float16_t) + 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 151 11 12 +154(VAR_float16_t): 152(ptr) Variable Private + 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 156 151 18 148 12 21 156 154(VAR_float16_t) 37 + 157:149(float16_t) Constant 0 Line 1 42 11 14(main): 4 Function None 5 15: Label 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - Store 33(VAR_bool) 37 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 39 39 12 12 - Store 44(VAR_int) 47 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 49 49 12 12 - Store 51(VAR_uint) 12 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 55 55 12 12 - Store 60(VAR_float) 63 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 65 65 12 12 - Store 71(VAR_double) 74 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 76 76 12 12 - Store 81(VAR_int8_t) 84 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 86 86 12 12 - Store 91(VAR_uint8_t) 94 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 96 96 12 12 - Store 102(VAR_int16_t) 105 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 107 107 12 12 - Store 112(VAR_uint16_t) 115 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 117 117 12 12 - Store 122(VAR_int64_t) 125 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 127 127 12 12 - Store 132(VAR_uint64_t) 135 + Store 34(VAR_bool) 38 + 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 40 40 12 12 + Store 46(VAR_int) 49 + 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 51 51 12 12 + Store 54(VAR_uint) 12 + 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 58 58 12 12 + Store 64(VAR_float) 67 + 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 69 69 12 12 + Store 76(VAR_double) 79 + 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 + Store 87(VAR_int8_t) 90 + 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 92 92 12 12 + Store 98(VAR_uint8_t) 101 + 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 103 103 12 12 + Store 110(VAR_int16_t) 113 + 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 115 115 12 12 + Store 121(VAR_uint16_t) 124 + 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 126 126 12 12 + Store 132(VAR_int64_t) 135 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 137 137 12 12 - Store 142(VAR_float16_t) 145 + Store 143(VAR_uint64_t) 146 + 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 148 148 12 12 + Store 154(VAR_float16_t) 157 Return FunctionEnd From 88c5373ee4fb78888fa8c9668500bd1d03760ecf Mon Sep 17 00:00:00 2001 From: jimihem <149994911+jimihem@users.noreply.github.com> Date: Fri, 29 Dec 2023 07:38:39 +0800 Subject: [PATCH 383/594] support GL_ARB_texture_multisample extension. This extension allows the use of "texelFetch" and "textureSize" with 2DMS sampler. --- Test/GL_ARB_texture_multisample.vert | 28 ++ .../GL_ARB_texture_multisample.vert.out | 245 ++++++++++++++++++ glslang/MachineIndependent/Initialize.cpp | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 5 +- gtests/AST.FromFile.cpp | 1 + 5 files changed, 279 insertions(+), 2 deletions(-) create mode 100644 Test/GL_ARB_texture_multisample.vert create mode 100644 Test/baseResults/GL_ARB_texture_multisample.vert.out diff --git a/Test/GL_ARB_texture_multisample.vert b/Test/GL_ARB_texture_multisample.vert new file mode 100644 index 0000000000..d3c5e85c63 --- /dev/null +++ b/Test/GL_ARB_texture_multisample.vert @@ -0,0 +1,28 @@ +#version 140 +#extension GL_ARB_texture_multisample : enable + +out float result; +out int result1; +out uint result2; + +uniform sampler2DMS data; +uniform sampler2DMSArray data1; +uniform isampler2DMS data2; +uniform usampler2DMSArray data3; +uniform usampler2DMS data4; +uniform isampler2DMSArray data5; +void main() +{ + result = texelFetch(data, ivec2(0), 3).r; + ivec2 temp = textureSize(data); + result = texelFetch(data1, ivec3(0), 3).r; + ivec3 temp1 = textureSize(data1); + result1 = texelFetch(data2, ivec2(0), 3).r; + temp = textureSize(data2); + result2 = texelFetch(data3, ivec3(0), 3).r; + temp1 = textureSize(data3); + result2 = texelFetch(data4, ivec2(0), 3).r; + temp = textureSize(data4); + result1 = texelFetch(data5, ivec3(0), 3).r; + temp1 = textureSize(data5); +} diff --git a/Test/baseResults/GL_ARB_texture_multisample.vert.out b/Test/baseResults/GL_ARB_texture_multisample.vert.out new file mode 100644 index 0000000000..16912a4a16 --- /dev/null +++ b/Test/baseResults/GL_ARB_texture_multisample.vert.out @@ -0,0 +1,245 @@ +GL_ARB_texture_multisample.vert +Shader version: 140 +Requested GL_ARB_texture_multisample +0:? Sequence +0:14 Function Definition: main( ( global void) +0:14 Function Parameters: +0:16 Sequence +0:16 move second child to first child ( temp float) +0:16 'result' ( smooth out float) +0:16 direct index ( temp float) +0:16 textureFetch ( global 4-component vector of float) +0:16 'data' ( uniform sampler2DMS) +0:16 Constant: +0:16 0 (const int) +0:16 0 (const int) +0:16 Constant: +0:16 3 (const int) +0:16 Constant: +0:16 0 (const int) +0:17 Sequence +0:17 move second child to first child ( temp 2-component vector of int) +0:17 'temp' ( temp 2-component vector of int) +0:17 textureSize ( global 2-component vector of int) +0:17 'data' ( uniform sampler2DMS) +0:18 move second child to first child ( temp float) +0:18 'result' ( smooth out float) +0:18 direct index ( temp float) +0:18 textureFetch ( global 4-component vector of float) +0:18 'data1' ( uniform sampler2DMSArray) +0:18 Constant: +0:18 0 (const int) +0:18 0 (const int) +0:18 0 (const int) +0:18 Constant: +0:18 3 (const int) +0:18 Constant: +0:18 0 (const int) +0:19 Sequence +0:19 move second child to first child ( temp 3-component vector of int) +0:19 'temp1' ( temp 3-component vector of int) +0:19 textureSize ( global 3-component vector of int) +0:19 'data1' ( uniform sampler2DMSArray) +0:20 move second child to first child ( temp int) +0:20 'result1' ( smooth out int) +0:20 direct index ( temp int) +0:20 textureFetch ( global 4-component vector of int) +0:20 'data2' ( uniform isampler2DMS) +0:20 Constant: +0:20 0 (const int) +0:20 0 (const int) +0:20 Constant: +0:20 3 (const int) +0:20 Constant: +0:20 0 (const int) +0:21 move second child to first child ( temp 2-component vector of int) +0:21 'temp' ( temp 2-component vector of int) +0:21 textureSize ( global 2-component vector of int) +0:21 'data2' ( uniform isampler2DMS) +0:22 move second child to first child ( temp uint) +0:22 'result2' ( smooth out uint) +0:22 direct index ( temp uint) +0:22 textureFetch ( global 4-component vector of uint) +0:22 'data3' ( uniform usampler2DMSArray) +0:22 Constant: +0:22 0 (const int) +0:22 0 (const int) +0:22 0 (const int) +0:22 Constant: +0:22 3 (const int) +0:22 Constant: +0:22 0 (const int) +0:23 move second child to first child ( temp 3-component vector of int) +0:23 'temp1' ( temp 3-component vector of int) +0:23 textureSize ( global 3-component vector of int) +0:23 'data3' ( uniform usampler2DMSArray) +0:24 move second child to first child ( temp uint) +0:24 'result2' ( smooth out uint) +0:24 direct index ( temp uint) +0:24 textureFetch ( global 4-component vector of uint) +0:24 'data4' ( uniform usampler2DMS) +0:24 Constant: +0:24 0 (const int) +0:24 0 (const int) +0:24 Constant: +0:24 3 (const int) +0:24 Constant: +0:24 0 (const int) +0:25 move second child to first child ( temp 2-component vector of int) +0:25 'temp' ( temp 2-component vector of int) +0:25 textureSize ( global 2-component vector of int) +0:25 'data4' ( uniform usampler2DMS) +0:26 move second child to first child ( temp int) +0:26 'result1' ( smooth out int) +0:26 direct index ( temp int) +0:26 textureFetch ( global 4-component vector of int) +0:26 'data5' ( uniform isampler2DMSArray) +0:26 Constant: +0:26 0 (const int) +0:26 0 (const int) +0:26 0 (const int) +0:26 Constant: +0:26 3 (const int) +0:26 Constant: +0:26 0 (const int) +0:27 move second child to first child ( temp 3-component vector of int) +0:27 'temp1' ( temp 3-component vector of int) +0:27 textureSize ( global 3-component vector of int) +0:27 'data5' ( uniform isampler2DMSArray) +0:? Linker Objects +0:? 'result' ( smooth out float) +0:? 'result1' ( smooth out int) +0:? 'result2' ( smooth out uint) +0:? 'data' ( uniform sampler2DMS) +0:? 'data1' ( uniform sampler2DMSArray) +0:? 'data2' ( uniform isampler2DMS) +0:? 'data3' ( uniform usampler2DMSArray) +0:? 'data4' ( uniform usampler2DMS) +0:? 'data5' ( uniform isampler2DMSArray) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 140 +Requested GL_ARB_texture_multisample +0:? Sequence +0:14 Function Definition: main( ( global void) +0:14 Function Parameters: +0:16 Sequence +0:16 move second child to first child ( temp float) +0:16 'result' ( smooth out float) +0:16 direct index ( temp float) +0:16 textureFetch ( global 4-component vector of float) +0:16 'data' ( uniform sampler2DMS) +0:16 Constant: +0:16 0 (const int) +0:16 0 (const int) +0:16 Constant: +0:16 3 (const int) +0:16 Constant: +0:16 0 (const int) +0:17 Sequence +0:17 move second child to first child ( temp 2-component vector of int) +0:17 'temp' ( temp 2-component vector of int) +0:17 textureSize ( global 2-component vector of int) +0:17 'data' ( uniform sampler2DMS) +0:18 move second child to first child ( temp float) +0:18 'result' ( smooth out float) +0:18 direct index ( temp float) +0:18 textureFetch ( global 4-component vector of float) +0:18 'data1' ( uniform sampler2DMSArray) +0:18 Constant: +0:18 0 (const int) +0:18 0 (const int) +0:18 0 (const int) +0:18 Constant: +0:18 3 (const int) +0:18 Constant: +0:18 0 (const int) +0:19 Sequence +0:19 move second child to first child ( temp 3-component vector of int) +0:19 'temp1' ( temp 3-component vector of int) +0:19 textureSize ( global 3-component vector of int) +0:19 'data1' ( uniform sampler2DMSArray) +0:20 move second child to first child ( temp int) +0:20 'result1' ( smooth out int) +0:20 direct index ( temp int) +0:20 textureFetch ( global 4-component vector of int) +0:20 'data2' ( uniform isampler2DMS) +0:20 Constant: +0:20 0 (const int) +0:20 0 (const int) +0:20 Constant: +0:20 3 (const int) +0:20 Constant: +0:20 0 (const int) +0:21 move second child to first child ( temp 2-component vector of int) +0:21 'temp' ( temp 2-component vector of int) +0:21 textureSize ( global 2-component vector of int) +0:21 'data2' ( uniform isampler2DMS) +0:22 move second child to first child ( temp uint) +0:22 'result2' ( smooth out uint) +0:22 direct index ( temp uint) +0:22 textureFetch ( global 4-component vector of uint) +0:22 'data3' ( uniform usampler2DMSArray) +0:22 Constant: +0:22 0 (const int) +0:22 0 (const int) +0:22 0 (const int) +0:22 Constant: +0:22 3 (const int) +0:22 Constant: +0:22 0 (const int) +0:23 move second child to first child ( temp 3-component vector of int) +0:23 'temp1' ( temp 3-component vector of int) +0:23 textureSize ( global 3-component vector of int) +0:23 'data3' ( uniform usampler2DMSArray) +0:24 move second child to first child ( temp uint) +0:24 'result2' ( smooth out uint) +0:24 direct index ( temp uint) +0:24 textureFetch ( global 4-component vector of uint) +0:24 'data4' ( uniform usampler2DMS) +0:24 Constant: +0:24 0 (const int) +0:24 0 (const int) +0:24 Constant: +0:24 3 (const int) +0:24 Constant: +0:24 0 (const int) +0:25 move second child to first child ( temp 2-component vector of int) +0:25 'temp' ( temp 2-component vector of int) +0:25 textureSize ( global 2-component vector of int) +0:25 'data4' ( uniform usampler2DMS) +0:26 move second child to first child ( temp int) +0:26 'result1' ( smooth out int) +0:26 direct index ( temp int) +0:26 textureFetch ( global 4-component vector of int) +0:26 'data5' ( uniform isampler2DMSArray) +0:26 Constant: +0:26 0 (const int) +0:26 0 (const int) +0:26 0 (const int) +0:26 Constant: +0:26 3 (const int) +0:26 Constant: +0:26 0 (const int) +0:27 move second child to first child ( temp 3-component vector of int) +0:27 'temp1' ( temp 3-component vector of int) +0:27 textureSize ( global 3-component vector of int) +0:27 'data5' ( uniform isampler2DMSArray) +0:? Linker Objects +0:? 'result' ( smooth out float) +0:? 'result1' ( smooth out int) +0:? 'result2' ( smooth out uint) +0:? 'data' ( uniform sampler2DMS) +0:? 'data1' ( uniform sampler2DMSArray) +0:? 'data2' ( uniform isampler2DMS) +0:? 'data3' ( uniform usampler2DMSArray) +0:? 'data4' ( uniform usampler2DMS) +0:? 'data5' ( uniform isampler2DMSArray) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 39f5a24301..dddb5957f6 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -6281,7 +6281,7 @@ void TBuiltIns::add2ndGenerationSamplingImaging(int version, EProfile profile, c { if ((ms || image) && shadow) continue; - if (ms && profile != EEsProfile && version < 150) + if (ms && profile != EEsProfile && version < 140) continue; if (ms && image && profile == EEsProfile) continue; diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index d9cb640b2a..d1aaf31437 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1360,7 +1360,10 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction requireInt16Arithmetic(loc, "built-in function", "(u)int16 types can only be in uniform block or buffer storage"); if (builtIn && fnCandidate->getType().contains8BitInt()) requireInt8Arithmetic(loc, "built-in function", "(u)int8 types can only be in uniform block or buffer storage"); - + if (builtIn && (fnCandidate->getBuiltInOp() == EOpTextureFetch || fnCandidate->getBuiltInOp() == EOpTextureQuerySize)) { + if ((*fnCandidate)[0].type->getSampler().isMultiSample() && version <= 140) + requireExtensions(loc, 1, &E_GL_ARB_texture_multisample, fnCandidate->getName().c_str()); + } if (arguments != nullptr) { // Make sure qualifications work for these arguments. TIntermAggregate* aggregate = arguments->getAsAggregate(); diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 621d4fe0b1..e8cf468bdf 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -295,6 +295,7 @@ INSTANTIATE_TEST_SUITE_P( "GL_ARB_draw_instanced.vert", "GL_ARB_fragment_coord_conventions.vert", "GL_ARB_bindless_texture.frag", + "GL_ARB_texture_multisample.vert", "BestMatchFunction.vert", "EndStreamPrimitive.geom", "floatBitsToInt.vert", From db4d6f85afb8cf6aa404a141855f556d172c1ed2 Mon Sep 17 00:00:00 2001 From: jimihem <149994911+jimihem@users.noreply.github.com> Date: Sat, 30 Dec 2023 05:23:16 +0800 Subject: [PATCH 384/594] The array size of gl_SampleMask and gl_SampleMaskIn is ceil(gl_MaxSamples/32) Oes spec says: For the both the input array gl_SampleMaskIn[] and the output array gl_SampleMask[], bit B of mask M (gl_SampleMaskIn[M] or gl_SampleMask[M]) corresponds to sample 32*M+B. These arrays have ceil(gl_MaxSamples/32) elements, where gl_MaxSamples is the maximum number of color samples supported by the implementation. But glslang report error "array must have size before use length". layout(location = 0) out mediump vec4 fragColor; void main (void) { for (int i = 0; i < gl_SampleMask.length(); ++i) gl_SampleMask[i] = int(0xAAAAAAAA); fragColor = vec4(0.0, 1.0, 0.0, 1.0); } * Add two test items, one is for gl_MaxSapmles = 32 and the other one is for gl_MaxSapmles = 64. --- .../gl_samplemask_array_size.frag.out | 81 +++++++++++++ .../gl_samplemask_array_size_32.frag.out | 39 ++++++ .../gl_samplemask_array_size_64.frag.out | 39 ++++++ Test/gl_MaxSamples_32.conf | 111 ++++++++++++++++++ Test/gl_MaxSamples_64.conf | 111 ++++++++++++++++++ Test/gl_samplemask_array_size.frag | 10 ++ Test/runtests | 4 + glslang/MachineIndependent/ParseHelper.cpp | 7 +- gtests/AST.FromFile.cpp | 1 + 9 files changed, 402 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/gl_samplemask_array_size.frag.out create mode 100644 Test/baseResults/gl_samplemask_array_size_32.frag.out create mode 100644 Test/baseResults/gl_samplemask_array_size_64.frag.out create mode 100644 Test/gl_MaxSamples_32.conf create mode 100644 Test/gl_MaxSamples_64.conf create mode 100644 Test/gl_samplemask_array_size.frag diff --git a/Test/baseResults/gl_samplemask_array_size.frag.out b/Test/baseResults/gl_samplemask_array_size.frag.out new file mode 100644 index 0000000000..a7d5b76995 --- /dev/null +++ b/Test/baseResults/gl_samplemask_array_size.frag.out @@ -0,0 +1,81 @@ +gl_samplemask_array_size.frag +Shader version: 320 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:6 Sequence +0:6 Sequence +0:6 Sequence +0:6 move second child to first child ( temp mediump int) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 0 (const int) +0:6 Loop with condition tested first +0:6 Loop Condition +0:6 Compare Less Than ( temp bool) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 1 (const int) +0:6 Loop Body +0:7 move second child to first child ( temp highp int) +0:7 indirect index ( temp highp int SampleMaskIn) +0:7 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) +0:7 'i' ( temp mediump int) +0:7 Constant: +0:7 -1431655766 (const int) +0:6 Loop Terminal Expression +0:6 Pre-Increment ( temp mediump int) +0:6 'i' ( temp mediump int) +0:9 move second child to first child ( temp mediump 4-component vector of float) +0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:9 Constant: +0:9 0.000000 +0:9 1.000000 +0:9 0.000000 +0:9 1.000000 +0:? Linker Objects +0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:? 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) + + +Linked fragment stage: + + +Shader version: 320 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:6 Sequence +0:6 Sequence +0:6 Sequence +0:6 move second child to first child ( temp mediump int) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 0 (const int) +0:6 Loop with condition tested first +0:6 Loop Condition +0:6 Compare Less Than ( temp bool) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 1 (const int) +0:6 Loop Body +0:7 move second child to first child ( temp highp int) +0:7 indirect index ( temp highp int SampleMaskIn) +0:7 'gl_SampleMask' ( out 1-element array of highp int SampleMaskIn) +0:7 'i' ( temp mediump int) +0:7 Constant: +0:7 -1431655766 (const int) +0:6 Loop Terminal Expression +0:6 Pre-Increment ( temp mediump int) +0:6 'i' ( temp mediump int) +0:9 move second child to first child ( temp mediump 4-component vector of float) +0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:9 Constant: +0:9 0.000000 +0:9 1.000000 +0:9 0.000000 +0:9 1.000000 +0:? Linker Objects +0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:? 'gl_SampleMask' ( out 1-element array of highp int SampleMaskIn) + diff --git a/Test/baseResults/gl_samplemask_array_size_32.frag.out b/Test/baseResults/gl_samplemask_array_size_32.frag.out new file mode 100644 index 0000000000..0569873e9c --- /dev/null +++ b/Test/baseResults/gl_samplemask_array_size_32.frag.out @@ -0,0 +1,39 @@ +gl_samplemask_array_size.frag +Shader version: 320 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:6 Sequence +0:6 Sequence +0:6 Sequence +0:6 move second child to first child ( temp mediump int) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 0 (const int) +0:6 Loop with condition tested first +0:6 Loop Condition +0:6 Compare Less Than ( temp bool) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 1 (const int) +0:6 Loop Body +0:7 move second child to first child ( temp highp int) +0:7 indirect index ( temp highp int SampleMaskIn) +0:7 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) +0:7 'i' ( temp mediump int) +0:7 Constant: +0:7 -1431655766 (const int) +0:6 Loop Terminal Expression +0:6 Pre-Increment ( temp mediump int) +0:6 'i' ( temp mediump int) +0:9 move second child to first child ( temp mediump 4-component vector of float) +0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:9 Constant: +0:9 0.000000 +0:9 1.000000 +0:9 0.000000 +0:9 1.000000 +0:? Linker Objects +0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:? 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) + diff --git a/Test/baseResults/gl_samplemask_array_size_64.frag.out b/Test/baseResults/gl_samplemask_array_size_64.frag.out new file mode 100644 index 0000000000..3780becc98 --- /dev/null +++ b/Test/baseResults/gl_samplemask_array_size_64.frag.out @@ -0,0 +1,39 @@ +gl_samplemask_array_size.frag +Shader version: 320 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:6 Sequence +0:6 Sequence +0:6 Sequence +0:6 move second child to first child ( temp mediump int) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 0 (const int) +0:6 Loop with condition tested first +0:6 Loop Condition +0:6 Compare Less Than ( temp bool) +0:6 'i' ( temp mediump int) +0:6 Constant: +0:6 2 (const int) +0:6 Loop Body +0:7 move second child to first child ( temp highp int) +0:7 indirect index ( temp highp int SampleMaskIn) +0:7 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) +0:7 'i' ( temp mediump int) +0:7 Constant: +0:7 -1431655766 (const int) +0:6 Loop Terminal Expression +0:6 Pre-Increment ( temp mediump int) +0:6 'i' ( temp mediump int) +0:9 move second child to first child ( temp mediump 4-component vector of float) +0:9 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:9 Constant: +0:9 0.000000 +0:9 1.000000 +0:9 0.000000 +0:9 1.000000 +0:? Linker Objects +0:? 'fragColor' (layout( location=0) out mediump 4-component vector of float) +0:? 'gl_SampleMask' ( out runtime-sized array of highp int SampleMaskIn) + diff --git a/Test/gl_MaxSamples_32.conf b/Test/gl_MaxSamples_32.conf new file mode 100644 index 0000000000..a1baaf5846 --- /dev/null +++ b/Test/gl_MaxSamples_32.conf @@ -0,0 +1,111 @@ +MaxLights 32 +MaxClipPlanes 6 +MaxTextureUnits 32 +MaxTextureCoords 32 +MaxVertexAttribs 64 +MaxVertexUniformComponents 4096 +MaxVaryingFloats 64 +MaxVertexTextureImageUnits 32 +MaxCombinedTextureImageUnits 80 +MaxTextureImageUnits 32 +MaxFragmentUniformComponents 4096 +MaxDrawBuffers 32 +MaxVertexUniformVectors 128 +MaxVaryingVectors 8 +MaxFragmentUniformVectors 16 +MaxVertexOutputVectors 16 +MaxFragmentInputVectors 15 +MinProgramTexelOffset -8 +MaxProgramTexelOffset 7 +MaxClipDistances 8 +MaxComputeWorkGroupCountX 65535 +MaxComputeWorkGroupCountY 65535 +MaxComputeWorkGroupCountZ 65535 +MaxComputeWorkGroupSizeX 1024 +MaxComputeWorkGroupSizeY 1024 +MaxComputeWorkGroupSizeZ 64 +MaxComputeUniformComponents 1024 +MaxComputeTextureImageUnits 16 +MaxComputeImageUniforms 8 +MaxComputeAtomicCounters 8 +MaxComputeAtomicCounterBuffers 1 +MaxVaryingComponents 60 +MaxVertexOutputComponents 64 +MaxGeometryInputComponents 64 +MaxGeometryOutputComponents 128 +MaxFragmentInputComponents 128 +MaxImageUnits 8 +MaxCombinedImageUnitsAndFragmentOutputs 8 +MaxCombinedShaderOutputResources 8 +MaxImageSamples 0 +MaxVertexImageUniforms 0 +MaxTessControlImageUniforms 0 +MaxTessEvaluationImageUniforms 0 +MaxGeometryImageUniforms 0 +MaxFragmentImageUniforms 8 +MaxCombinedImageUniforms 8 +MaxGeometryTextureImageUnits 16 +MaxGeometryOutputVertices 256 +MaxGeometryTotalOutputComponents 1024 +MaxGeometryUniformComponents 1024 +MaxGeometryVaryingComponents 64 +MaxTessControlInputComponents 128 +MaxTessControlOutputComponents 128 +MaxTessControlTextureImageUnits 16 +MaxTessControlUniformComponents 1024 +MaxTessControlTotalOutputComponents 4096 +MaxTessEvaluationInputComponents 128 +MaxTessEvaluationOutputComponents 128 +MaxTessEvaluationTextureImageUnits 16 +MaxTessEvaluationUniformComponents 1024 +MaxTessPatchComponents 120 +MaxPatchVertices 32 +MaxTessGenLevel 64 +MaxViewports 16 +MaxVertexAtomicCounters 0 +MaxTessControlAtomicCounters 0 +MaxTessEvaluationAtomicCounters 0 +MaxGeometryAtomicCounters 0 +MaxFragmentAtomicCounters 8 +MaxCombinedAtomicCounters 8 +MaxAtomicCounterBindings 1 +MaxVertexAtomicCounterBuffers 0 +MaxTessControlAtomicCounterBuffers 0 +MaxTessEvaluationAtomicCounterBuffers 0 +MaxGeometryAtomicCounterBuffers 0 +MaxFragmentAtomicCounterBuffers 1 +MaxCombinedAtomicCounterBuffers 1 +MaxAtomicCounterBufferSize 16384 +MaxTransformFeedbackBuffers 4 +MaxTransformFeedbackInterleavedComponents 64 +MaxCullDistances 8 +MaxCombinedClipAndCullDistances 8 +MaxSamples 32 +MaxMeshOutputVerticesNV 256 +MaxMeshOutputPrimitivesNV 512 +MaxMeshWorkGroupSizeX_NV 32 +MaxMeshWorkGroupSizeY_NV 1 +MaxMeshWorkGroupSizeZ_NV 1 +MaxTaskWorkGroupSizeX_NV 32 +MaxTaskWorkGroupSizeY_NV 1 +MaxTaskWorkGroupSizeZ_NV 1 +MaxMeshViewCountNV 4 +MaxMeshOutputVerticesEXT 256 +MaxMeshOutputPrimitivesEXT 256 +MaxMeshWorkGroupSizeX_EXT 128 +MaxMeshWorkGroupSizeY_EXT 128 +MaxMeshWorkGroupSizeZ_EXT 128 +MaxTaskWorkGroupSizeX_EXT 128 +MaxTaskWorkGroupSizeY_EXT 128 +MaxTaskWorkGroupSizeZ_EXT 128 +MaxMeshViewCountEXT 4 +MaxDualSourceDrawBuffersEXT 1 +nonInductiveForLoops 1 +whileLoops 1 +doWhileLoops 1 +generalUniformIndexing 1 +generalAttributeMatrixVectorIndexing 1 +generalVaryingIndexing 1 +generalSamplerIndexing 1 +generalVariableIndexing 1 +generalConstantMatrixVectorIndexing 1 \ No newline at end of file diff --git a/Test/gl_MaxSamples_64.conf b/Test/gl_MaxSamples_64.conf new file mode 100644 index 0000000000..dcab31977f --- /dev/null +++ b/Test/gl_MaxSamples_64.conf @@ -0,0 +1,111 @@ +MaxLights 32 +MaxClipPlanes 6 +MaxTextureUnits 32 +MaxTextureCoords 32 +MaxVertexAttribs 64 +MaxVertexUniformComponents 4096 +MaxVaryingFloats 64 +MaxVertexTextureImageUnits 32 +MaxCombinedTextureImageUnits 80 +MaxTextureImageUnits 32 +MaxFragmentUniformComponents 4096 +MaxDrawBuffers 32 +MaxVertexUniformVectors 128 +MaxVaryingVectors 8 +MaxFragmentUniformVectors 16 +MaxVertexOutputVectors 16 +MaxFragmentInputVectors 15 +MinProgramTexelOffset -8 +MaxProgramTexelOffset 7 +MaxClipDistances 8 +MaxComputeWorkGroupCountX 65535 +MaxComputeWorkGroupCountY 65535 +MaxComputeWorkGroupCountZ 65535 +MaxComputeWorkGroupSizeX 1024 +MaxComputeWorkGroupSizeY 1024 +MaxComputeWorkGroupSizeZ 64 +MaxComputeUniformComponents 1024 +MaxComputeTextureImageUnits 16 +MaxComputeImageUniforms 8 +MaxComputeAtomicCounters 8 +MaxComputeAtomicCounterBuffers 1 +MaxVaryingComponents 60 +MaxVertexOutputComponents 64 +MaxGeometryInputComponents 64 +MaxGeometryOutputComponents 128 +MaxFragmentInputComponents 128 +MaxImageUnits 8 +MaxCombinedImageUnitsAndFragmentOutputs 8 +MaxCombinedShaderOutputResources 8 +MaxImageSamples 0 +MaxVertexImageUniforms 0 +MaxTessControlImageUniforms 0 +MaxTessEvaluationImageUniforms 0 +MaxGeometryImageUniforms 0 +MaxFragmentImageUniforms 8 +MaxCombinedImageUniforms 8 +MaxGeometryTextureImageUnits 16 +MaxGeometryOutputVertices 256 +MaxGeometryTotalOutputComponents 1024 +MaxGeometryUniformComponents 1024 +MaxGeometryVaryingComponents 64 +MaxTessControlInputComponents 128 +MaxTessControlOutputComponents 128 +MaxTessControlTextureImageUnits 16 +MaxTessControlUniformComponents 1024 +MaxTessControlTotalOutputComponents 4096 +MaxTessEvaluationInputComponents 128 +MaxTessEvaluationOutputComponents 128 +MaxTessEvaluationTextureImageUnits 16 +MaxTessEvaluationUniformComponents 1024 +MaxTessPatchComponents 120 +MaxPatchVertices 32 +MaxTessGenLevel 64 +MaxViewports 16 +MaxVertexAtomicCounters 0 +MaxTessControlAtomicCounters 0 +MaxTessEvaluationAtomicCounters 0 +MaxGeometryAtomicCounters 0 +MaxFragmentAtomicCounters 8 +MaxCombinedAtomicCounters 8 +MaxAtomicCounterBindings 1 +MaxVertexAtomicCounterBuffers 0 +MaxTessControlAtomicCounterBuffers 0 +MaxTessEvaluationAtomicCounterBuffers 0 +MaxGeometryAtomicCounterBuffers 0 +MaxFragmentAtomicCounterBuffers 1 +MaxCombinedAtomicCounterBuffers 1 +MaxAtomicCounterBufferSize 16384 +MaxTransformFeedbackBuffers 4 +MaxTransformFeedbackInterleavedComponents 64 +MaxCullDistances 8 +MaxCombinedClipAndCullDistances 8 +MaxSamples 64 +MaxMeshOutputVerticesNV 256 +MaxMeshOutputPrimitivesNV 512 +MaxMeshWorkGroupSizeX_NV 32 +MaxMeshWorkGroupSizeY_NV 1 +MaxMeshWorkGroupSizeZ_NV 1 +MaxTaskWorkGroupSizeX_NV 32 +MaxTaskWorkGroupSizeY_NV 1 +MaxTaskWorkGroupSizeZ_NV 1 +MaxMeshViewCountNV 4 +MaxMeshOutputVerticesEXT 256 +MaxMeshOutputPrimitivesEXT 256 +MaxMeshWorkGroupSizeX_EXT 128 +MaxMeshWorkGroupSizeY_EXT 128 +MaxMeshWorkGroupSizeZ_EXT 128 +MaxTaskWorkGroupSizeX_EXT 128 +MaxTaskWorkGroupSizeY_EXT 128 +MaxTaskWorkGroupSizeZ_EXT 128 +MaxMeshViewCountEXT 4 +MaxDualSourceDrawBuffersEXT 1 +nonInductiveForLoops 1 +whileLoops 1 +doWhileLoops 1 +generalUniformIndexing 1 +generalAttributeMatrixVectorIndexing 1 +generalVaryingIndexing 1 +generalSamplerIndexing 1 +generalVariableIndexing 1 +generalConstantMatrixVectorIndexing 1 \ No newline at end of file diff --git a/Test/gl_samplemask_array_size.frag b/Test/gl_samplemask_array_size.frag new file mode 100644 index 0000000000..52ef849686 --- /dev/null +++ b/Test/gl_samplemask_array_size.frag @@ -0,0 +1,10 @@ +#version 320 es + +layout(location = 0) out mediump vec4 fragColor; +void main (void) +{ + for (int i = 0; i < gl_SampleMask.length(); ++i) + gl_SampleMask[i] = int(0xAAAAAAAA); + + fragColor = vec4(0.0, 1.0, 0.0, 1.0); +} \ No newline at end of file diff --git a/Test/runtests b/Test/runtests index e7e1d33f48..4ab2280bcd 100755 --- a/Test/runtests +++ b/Test/runtests @@ -49,6 +49,10 @@ rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv run badMacroArgs.frag > $TARGETDIR/badMacroArgs.frag.out diff -b $BASEDIR/badMacroArgs.frag.out $TARGETDIR/badMacroArgs.frag.out || HASERROR=1 +run gl_samplemask_array_size.frag gl_MaxSamples_32.conf -i > $TARGETDIR/gl_samplemask_array_size_32.frag.out +diff -b $BASEDIR/gl_samplemask_array_size_32.frag.out $TARGETDIR/gl_samplemask_array_size_32.frag.out || HASERROR=1 +run gl_samplemask_array_size.frag gl_MaxSamples_64.conf -i > $TARGETDIR/gl_samplemask_array_size_64.frag.out +diff -b $BASEDIR/gl_samplemask_array_size_64.frag.out $TARGETDIR/gl_samplemask_array_size_64.frag.out || HASERROR=1 # # reflection tests # diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index d1aaf31437..f84dc9bec1 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -632,7 +632,7 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn else { // input/output blocks either don't exist or can't be variably indexed } - } else if (language == EShLangFragment && base->getQualifier().isPipeOutput()) + } else if (language == EShLangFragment && base->getQualifier().isPipeOutput() && base->getQualifier().builtIn != EbvSampleMask) requireProfile(base->getLoc(), ~EEsProfile, "variable indexing fragment shader output array"); else if (base->getBasicType() == EbtSampler && version >= 130) { const char* explanation = "variable indexing sampler array"; @@ -1759,6 +1759,11 @@ TIntermTyped* TParseContext::handleLengthMethod(const TSourceLoc& loc, TFunction name == "gl_MeshPrimitivesNV") { length = getIoArrayImplicitSize(type.getQualifier()); } + } else if (const auto typed = intermNode->getAsTyped()) { + if (typed->getQualifier().builtIn == EbvSampleMask) { + requireProfile(loc, EEsProfile, "the array size of gl_SampleMask and gl_SampleMaskIn is ceil(gl_MaxSamples/32)"); + length = (resources.maxSamples + 31) / 32; + } } if (length == 0) { if (intermNode->getAsSymbolNode() && isIoResizeArray(type)) diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index e8cf468bdf..44aec44b6b 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -282,6 +282,7 @@ INSTANTIATE_TEST_SUITE_P( "glsl.es320.subgroupQuad.comp", "glsl.es320.subgroupVote.comp", "glsl.es320.extTextureShadowLod.frag", + "gl_samplemask_array_size.frag", "glsl.ext.textureShadowLod.frag", "terminate.frag", "terminate.vert", From 1952e63d437beb0a3ba7df27f34ced0cef656824 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jan 2024 06:25:20 +0000 Subject: [PATCH 385/594] Bump hendrikmuhs/ccache-action from 1.2.10 to 1.2.11 Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.10 to 1.2.11. - [Release notes](https://github.com/hendrikmuhs/ccache-action/releases) - [Commits](https://github.com/hendrikmuhs/ccache-action/compare/6d1841ec156c39a52b1b23a810da917ab98da1f4...2a51777f6f64b7b7bea213601acba8f5f4fdbe03) --- updated-dependencies: - dependency-name: hendrikmuhs/ccache-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_integration.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index a7ec921129..f532beeb29 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,7 +23,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py @@ -59,7 +59,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} - run: ./update_glslang_sources.py @@ -96,7 +96,7 @@ jobs: with: cmakeVersion: 3.17.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 with: key: linux_backcompat - run: ./update_glslang_sources.py @@ -168,7 +168,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 with: key: IOS - run: ./update_glslang_sources.py @@ -197,7 +197,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 with: key: android-${{ matrix.LEGACY }} - run: ./update_glslang_sources.py @@ -223,7 +223,7 @@ jobs: python-version: '3.7' - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@6d1841ec156c39a52b1b23a810da917ab98da1f4 # v1.2.10 + uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 with: key: ubuntu-emscripten - uses: mymindstorm/setup-emsdk@d233ac12b0102f74ca199f5dad7a4e2c13a8a745 # v13 From adfeb67bacd1dc0680f2a54c36b9923ff9aa58b5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 06:28:57 +0000 Subject: [PATCH 386/594] Bump github/codeql-action from 3.22.12 to 3.23.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.22.12 to 3.23.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/012739e5082ff0c22ca6d6ab32e07c36df03c4a4...e5f05b81d5b6ff8cfa111c80c22c5fd02a384118) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 872ea13fe3..ae41534fa0 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@012739e5082ff0c22ca6d6ab32e07c36df03c4a4 # v3.22.12 + uses: github/codeql-action/upload-sarif@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 with: sarif_file: results.sarif From 0f7d3a07761aee6847cdad0ce10e7528354d4fad Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jan 2024 06:29:02 +0000 Subject: [PATCH 387/594] Bump actions/upload-artifact from 4.0.0 to 4.1.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.0.0 to 4.1.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/c7d193f32edcb7bfad88892161225aeda64e9392...1eb3cb2b3e0f29609092a73eb033bb759a334595) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ae41534fa0..cfb5510ec1 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@c7d193f32edcb7bfad88892161225aeda64e9392 # v4.0.0 + uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 with: name: SARIF file path: results.sarif From 57d86ab763da7b2cd1e00ecec8aa697403a8fd20 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 9 Jan 2024 16:11:16 -0500 Subject: [PATCH 388/594] cmake: remove generation of deprecated *Targets.cmake files These files have had a deprecation notice for a few years now and the cmake find_package mechanism should be used instead. --- SPIRV/CMakeLists.txt | 25 ----------------- StandAlone/CMakeLists.txt | 24 ----------------- glslang/CMakeLists.txt | 31 ---------------------- glslang/OSDependent/Unix/CMakeLists.txt | 12 --------- glslang/OSDependent/Windows/CMakeLists.txt | 12 --------- 5 files changed, 104 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 61c7a266fc..808473b517 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -125,30 +125,5 @@ if(PROJECT_IS_TOP_LEVEL) install(TARGETS SPIRV EXPORT glslang-targets) - # Backward compatibility - if (ENABLE_SPVREMAPPER) - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" " - message(WARNING \"Using `SPVRemapperTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::SPVRemapper) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(SPVRemapper ALIAS glslang::SPVRemapper) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPVRemapperTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - endif() - - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" " - message(WARNING \"Using `SPIRVTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::SPIRV) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(SPIRV ALIAS glslang::SPIRV) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/SPIRVTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - install(FILES ${PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang/SPIRV/) endif() diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 459657ab98..d316adf55f 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -90,18 +90,6 @@ endif() if(PROJECT_IS_TOP_LEVEL) install(TARGETS glslang-standalone EXPORT glslang-targets) - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" " - message(WARNING \"Using `glslang-standaloneTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::glslang-standalone) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(glslang-standalone ALIAS glslang::glslang-standalone) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-standaloneTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - # Create a symbolic link to glslang named glslangValidator for backwards compatibility set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}") set(link_method create_symlink) @@ -120,18 +108,6 @@ if(PROJECT_IS_TOP_LEVEL) if(ENABLE_SPVREMAPPER) install(TARGETS spirv-remap EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" " - message(WARNING \"Using `spirv-remapTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::spirv-remap) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(spirv-remap ALIAS glslang::spirv-remap) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/spirv-remapTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() endif() diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 37eecaadd4..3c61ba3999 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -232,24 +232,6 @@ if(PROJECT_IS_TOP_LEVEL) if(NOT BUILD_SHARED_LIBS) install(TARGETS MachineIndependent EXPORT glslang-targets) install(TARGETS GenericCodeGen EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" " - message(WARNING \"Using `glslangTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::glslang) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - if(${BUILD_SHARED_LIBS}) - add_library(glslang ALIAS glslang::glslang) - else() - add_library(glslang ALIAS glslang::glslang) - add_library(MachineIndependent ALIAS glslang::MachineIndependent) - add_library(GenericCodeGen ALIAS glslang::GenericCodeGen) - endif() - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslangTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() set(PUBLIC_HEADERS @@ -269,17 +251,4 @@ if(PROJECT_IS_TOP_LEVEL) install(FILES ${GLSLANG_BUILD_INFO_H} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/glslang) install(TARGETS glslang-default-resource-limits EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" " - message(WARNING \"Using `glslang-default-resource-limitsTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::glslang-default-resource-limits) - include(\"\${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(glslang-default-resource-limits ALIAS glslang::glslang-default-resource-limits) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/glslang-default-resource-limitsTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) - endif() diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index ec35da3085..2df99291ed 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -42,16 +42,4 @@ target_link_libraries(OSDependent Threads::Threads) if(PROJECT_IS_TOP_LEVEL AND NOT BUILD_SHARED_LIBS) install(TARGETS OSDependent EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" " - message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::OSDependent) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(OSDependent ALIAS glslang::OSDependent) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index b8af046cd7..fd1d349b3a 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -53,16 +53,4 @@ endif() if(PROJECT_IS_TOP_LEVEL) install(TARGETS OSDependent EXPORT glslang-targets) - - # Backward compatibility - file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" " - message(WARNING \"Using `OSDependentTargets.cmake` is deprecated: use `find_package(glslang)` to find glslang CMake targets.\") - - if (NOT TARGET glslang::OSDependent) - include(\"${CMAKE_INSTALL_FULL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake\") - endif() - - add_library(OSDependent ALIAS glslang::OSDependent) - ") - install(FILES "${CMAKE_CURRENT_BINARY_DIR}/OSDependentTargets.cmake" DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake) endif() From 866462f8e4b50e0e4f8486e5da24bddb3e511f54 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 06:04:14 +0000 Subject: [PATCH 389/594] Bump mymindstorm/setup-emsdk from 13 to 14 Bumps [mymindstorm/setup-emsdk](https://github.com/mymindstorm/setup-emsdk) from 13 to 14. - [Release notes](https://github.com/mymindstorm/setup-emsdk/releases) - [Commits](https://github.com/mymindstorm/setup-emsdk/compare/d233ac12b0102f74ca199f5dad7a4e2c13a8a745...6ab9eb1bda2574c4ddb79809fc9247783eaf9021) --- updated-dependencies: - dependency-name: mymindstorm/setup-emsdk dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index f532beeb29..75a04f4ca6 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -226,7 +226,7 @@ jobs: uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 with: key: ubuntu-emscripten - - uses: mymindstorm/setup-emsdk@d233ac12b0102f74ca199f5dad7a4e2c13a8a745 # v13 + - uses: mymindstorm/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14 - name: Update Glslang Sources run: ./update_glslang_sources.py - name: Configure From 043446f949227eb203bd20217bce7cb7f7f1534f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 06:04:18 +0000 Subject: [PATCH 390/594] Bump actions/upload-artifact from 4.1.0 to 4.2.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.1.0 to 4.2.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/1eb3cb2b3e0f29609092a73eb033bb759a334595...694cdabd8bdb0f10b2cea11669e1bf5453eed0a6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index cfb5510ec1..cdfc87e3ab 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@1eb3cb2b3e0f29609092a73eb033bb759a334595 # v4.1.0 + uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 with: name: SARIF file path: results.sarif From 7eea61b5a3e197b92bda6d0ae3563a19082e030e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jan 2024 06:04:25 +0000 Subject: [PATCH 391/594] Bump github/codeql-action from 3.23.0 to 3.23.1 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.0 to 3.23.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/e5f05b81d5b6ff8cfa111c80c22c5fd02a384118...0b21cf2492b6b02c465a3e5d7c473717ad7721ba) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index cdfc87e3ab..35bc0cb321 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e5f05b81d5b6ff8cfa111c80c22c5fd02a384118 # v3.23.0 + uses: github/codeql-action/upload-sarif@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 with: sarif_file: results.sarif From 8066fa086b74d6ed6d2786c518f62113d19a146d Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Thu, 6 Jan 2022 19:47:45 -0600 Subject: [PATCH 392/594] Implement GL_EXT_maximal_reconvergence --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 4 + SPIRV/doc.cpp | 1 + SPIRV/spirv.hpp | 1 + .../spv.maximalReconvergence.vert.out | 22 + Test/spv.maximalReconvergence.vert | 7 + glslang/MachineIndependent/Versions.cpp | 3 + glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/attribute.cpp | 6 + glslang/MachineIndependent/attribute.h | 1 + glslang/MachineIndependent/glslang.y | 6 + glslang/MachineIndependent/glslang_tab.cpp | 2492 +++++++++-------- glslang/MachineIndependent/intermOut.cpp | 3 + .../MachineIndependent/localintermediate.h | 5 + gtests/Spv.FromFile.cpp | 1 + known_good.json | 4 +- 16 files changed, 1313 insertions(+), 1245 deletions(-) create mode 100644 Test/baseResults/spv.maximalReconvergence.vert.out create mode 100644 Test/spv.maximalReconvergence.vert diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 121defa16a..5bda765989 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -56,5 +56,6 @@ static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragme static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests"; static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch"; static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix"; +static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ec40f663a7..03e9cd0437 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1635,6 +1635,10 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExtension(spv::E_SPV_KHR_subgroup_uniform_control_flow); builder.addExecutionMode(shaderEntry, spv::ExecutionModeSubgroupUniformControlFlowKHR); } + if (glslangIntermediate->getMaximalReconvergence()) { + builder.addExtension(spv::E_SPV_KHR_maximal_reconvergence); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeMaximallyReconvergesKHR); + } unsigned int mode; switch (glslangIntermediate->getStage()) { diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 1a05c67360..3c4ec80cf4 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -198,6 +198,7 @@ const char* ExecutionModeString(int mode) case ExecutionModeStencilRefGreaterBackAMD: return "StencilRefGreaterBackAMD"; case ExecutionModeStencilRefReplacingEXT: return "StencilRefReplacingEXT"; case ExecutionModeSubgroupUniformControlFlowKHR: return "SubgroupUniformControlFlow"; + case ExecutionModeMaximallyReconvergesKHR: return "MaximallyReconverges"; case ExecutionModeOutputLinesNV: return "OutputLinesNV"; case ExecutionModeOutputPrimitivesNV: return "OutputPrimitivesNV"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 5999aba931..f5bf2d6809 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -198,6 +198,7 @@ enum ExecutionMode { ExecutionModeNoGlobalOffsetINTEL = 5895, ExecutionModeNumSIMDWorkitemsINTEL = 5896, ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, + ExecutionModeMaximallyReconvergesKHR = 6023, ExecutionModeStreamingInterfaceINTEL = 6154, ExecutionModeNamedBarrierCountINTEL = 6417, ExecutionModeMax = 0x7fffffff, diff --git a/Test/baseResults/spv.maximalReconvergence.vert.out b/Test/baseResults/spv.maximalReconvergence.vert.out new file mode 100644 index 0000000000..2d60ca5b71 --- /dev/null +++ b/Test/baseResults/spv.maximalReconvergence.vert.out @@ -0,0 +1,22 @@ +spv.maximalReconvergence.vert +WARNING: 0:5: '' : attribute with arguments not recognized, skipping + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 6 + + Capability Shader + Extension "SPV_KHR_maximal_reconvergence" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" + ExecutionMode 4 MaximallyReconverges + Source GLSL 460 + SourceExtension "GL_EXT_maximal_reconvergence" + Name 4 "main" + 2: TypeVoid + 3: TypeFunction 2 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/spv.maximalReconvergence.vert b/Test/spv.maximalReconvergence.vert new file mode 100644 index 0000000000..dfd59d6c77 --- /dev/null +++ b/Test/spv.maximalReconvergence.vert @@ -0,0 +1,7 @@ +#version 460 + +#extension GL_EXT_maximal_reconvergence : enable + +[[random(4)]] void main() [[maximal_reconvergence]] +{ +} diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 694246cb8f..15d8dc69d8 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -258,6 +258,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_shader_16bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_shader_8bit_storage] = EBhDisable; extensionBehavior[E_GL_EXT_subgroup_uniform_control_flow] = EBhDisable; + extensionBehavior[E_GL_EXT_maximal_reconvergence] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable; @@ -446,6 +447,7 @@ void TParseVersions::getPreamble(std::string& preamble) if (version >= 310) { preamble += "#define GL_EXT_null_initializer 1\n"; preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n"; + preamble += "#define GL_EXT_maximal_reconvergence 1\n"; } } else { // !isEsProfile() @@ -599,6 +601,7 @@ void TParseVersions::getPreamble(std::string& preamble) if (version >= 140) { preamble += "#define GL_EXT_null_initializer 1\n"; preamble += "#define GL_EXT_subgroup_uniform_control_flow 1\n"; + preamble += "#define GL_EXT_maximal_reconvergence 1\n"; } if (version >= 130) { preamble +="#define GL_FRAGMENT_PRECISION_HIGH 1\n"; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 475cb89341..504e3bc985 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -217,6 +217,7 @@ const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shade const char* const E_GL_EXT_opacity_micromap = "GL_EXT_opacity_micromap"; const char* const E_GL_EXT_draw_instanced = "GL_EXT_draw_instanced"; const char* const E_GL_EXT_texture_array = "GL_EXT_texture_array"; +const char* const E_GL_EXT_maximal_reconvergence = "GL_EXT_maximal_reconvergence"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/glslang/MachineIndependent/attribute.cpp b/glslang/MachineIndependent/attribute.cpp index a167c494fb..58fbc49bde 100644 --- a/glslang/MachineIndependent/attribute.cpp +++ b/glslang/MachineIndependent/attribute.cpp @@ -125,6 +125,8 @@ TAttributeType TParseContext::attributeFromName(const TString& name) const return EatSubgroupUniformControlFlow; else if (name == "export") return EatExport; + else if (name == "maximal_reconvergence") + return EatMaximalReconvergence; else return EatNone; } @@ -360,6 +362,10 @@ void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttri requireExtensions(loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); intermediate.setSubgroupUniformControlFlow(); break; + case EatMaximalReconvergence: + requireExtensions(loc, 1, &E_GL_EXT_maximal_reconvergence, "attribute"); + intermediate.setMaximalReconvergence(); + break; default: warn(loc, "attribute does not apply to a function", "", ""); break; diff --git a/glslang/MachineIndependent/attribute.h b/glslang/MachineIndependent/attribute.h index a0c4c43d45..1fe8138f1e 100644 --- a/glslang/MachineIndependent/attribute.h +++ b/glslang/MachineIndependent/attribute.h @@ -121,6 +121,7 @@ namespace glslang { EatNonReadable, EatSubgroupUniformControlFlow, EatExport, + EatMaximalReconvergence, }; class TIntermAggregate; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 167cdca053..999dec05b1 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -964,18 +964,24 @@ function_prototype $$.function = $1; if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $2.loc; + const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; + parseContext.requireExtensions($2.loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes($2.loc, *$3); } | attribute function_declarator RIGHT_PAREN { $$.function = $2; if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $3.loc; + const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; + parseContext.requireExtensions($3.loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes($3.loc, *$1); } | attribute function_declarator RIGHT_PAREN attribute { $$.function = $2; if (parseContext.compileOnly) $$.function->setExport(); $$.loc = $3.loc; + const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; + parseContext.requireExtensions($3.loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes($3.loc, *$1); parseContext.handleFunctionAttributes($3.loc, *$4); } diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 5038bebe5b..cdc0c17ca5 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1171,66 +1171,66 @@ static const yytype_int16 yyrline[] = 807, 811, 815, 819, 824, 828, 832, 836, 840, 844, 848, 855, 858, 869, 876, 881, 888, 893, 898, 905, 909, 913, 917, 922, 927, 936, 936, 947, 951, 958, - 963, 969, 975, 985, 988, 995, 1008, 1031, 1054, 1069, - 1094, 1105, 1115, 1125, 1135, 1144, 1147, 1151, 1155, 1160, - 1168, 1173, 1178, 1183, 1188, 1197, 1207, 1234, 1243, 1250, - 1257, 1264, 1271, 1279, 1287, 1297, 1307, 1314, 1324, 1330, - 1333, 1340, 1344, 1348, 1356, 1365, 1368, 1379, 1382, 1385, - 1389, 1393, 1397, 1401, 1404, 1409, 1413, 1418, 1426, 1430, - 1435, 1441, 1447, 1454, 1459, 1464, 1472, 1477, 1489, 1503, - 1509, 1514, 1522, 1530, 1538, 1546, 1554, 1562, 1570, 1578, - 1586, 1593, 1600, 1604, 1609, 1614, 1619, 1624, 1629, 1634, - 1638, 1642, 1646, 1650, 1656, 1662, 1672, 1679, 1682, 1690, - 1697, 1708, 1713, 1721, 1725, 1735, 1738, 1744, 1750, 1755, - 1763, 1773, 1777, 1781, 1785, 1790, 1794, 1799, 1804, 1809, - 1814, 1819, 1824, 1829, 1834, 1839, 1845, 1851, 1857, 1862, - 1867, 1872, 1877, 1882, 1887, 1892, 1897, 1902, 1907, 1912, - 1917, 1924, 1929, 1934, 1939, 1944, 1949, 1954, 1959, 1964, - 1969, 1974, 1979, 1987, 1995, 2003, 2009, 2015, 2021, 2027, - 2033, 2039, 2045, 2051, 2057, 2063, 2069, 2075, 2081, 2087, - 2093, 2099, 2105, 2111, 2117, 2123, 2129, 2135, 2141, 2147, - 2153, 2159, 2165, 2171, 2177, 2183, 2189, 2195, 2201, 2209, - 2217, 2225, 2233, 2241, 2249, 2257, 2265, 2273, 2281, 2289, - 2297, 2303, 2309, 2315, 2321, 2327, 2333, 2339, 2345, 2351, - 2357, 2363, 2369, 2375, 2381, 2387, 2393, 2399, 2405, 2411, - 2417, 2423, 2429, 2435, 2441, 2447, 2453, 2459, 2465, 2471, - 2477, 2483, 2489, 2495, 2501, 2507, 2513, 2517, 2521, 2525, - 2530, 2535, 2540, 2545, 2550, 2555, 2560, 2565, 2570, 2575, - 2580, 2585, 2590, 2595, 2601, 2607, 2613, 2619, 2625, 2631, - 2637, 2643, 2649, 2655, 2661, 2667, 2673, 2678, 2683, 2688, - 2693, 2698, 2703, 2708, 2713, 2718, 2723, 2728, 2733, 2738, - 2743, 2748, 2753, 2758, 2763, 2768, 2773, 2778, 2783, 2788, - 2793, 2798, 2803, 2808, 2813, 2818, 2823, 2828, 2833, 2838, - 2844, 2850, 2855, 2860, 2865, 2871, 2876, 2881, 2886, 2892, - 2897, 2902, 2907, 2913, 2918, 2923, 2928, 2934, 2940, 2946, - 2952, 2957, 2963, 2969, 2975, 2980, 2985, 2990, 2995, 3000, - 3006, 3011, 3016, 3021, 3027, 3032, 3037, 3042, 3048, 3053, - 3058, 3063, 3069, 3074, 3079, 3084, 3090, 3095, 3100, 3105, - 3111, 3116, 3121, 3126, 3132, 3137, 3142, 3147, 3153, 3158, - 3163, 3168, 3174, 3179, 3184, 3189, 3195, 3200, 3205, 3210, - 3216, 3221, 3226, 3231, 3237, 3242, 3247, 3252, 3258, 3263, - 3268, 3273, 3279, 3284, 3289, 3294, 3300, 3305, 3310, 3315, - 3320, 3325, 3330, 3335, 3340, 3345, 3350, 3355, 3360, 3365, - 3370, 3375, 3380, 3385, 3390, 3395, 3400, 3405, 3410, 3415, - 3420, 3426, 3432, 3438, 3444, 3450, 3456, 3462, 3469, 3476, - 3482, 3488, 3494, 3500, 3507, 3514, 3521, 3528, 3532, 3536, - 3541, 3557, 3562, 3567, 3575, 3575, 3592, 3592, 3602, 3605, - 3618, 3640, 3667, 3671, 3677, 3682, 3693, 3696, 3702, 3708, - 3717, 3720, 3726, 3730, 3731, 3737, 3738, 3739, 3740, 3741, - 3742, 3743, 3744, 3748, 3756, 3757, 3761, 3757, 3773, 3774, - 3778, 3778, 3785, 3785, 3799, 3802, 3810, 3818, 3829, 3830, - 3834, 3837, 3844, 3851, 3855, 3863, 3867, 3880, 3883, 3890, - 3890, 3910, 3913, 3919, 3931, 3943, 3946, 3953, 3953, 3968, - 3968, 3986, 3986, 4007, 4010, 4016, 4019, 4025, 4029, 4036, - 4041, 4046, 4053, 4056, 4060, 4064, 4068, 4077, 4081, 4090, - 4093, 4096, 4104, 4104, 4146, 4151, 4154, 4159, 4162, 4167, - 4170, 4175, 4178, 4183, 4186, 4191, 4194, 4199, 4203, 4208, - 4212, 4217, 4221, 4228, 4231, 4236, 4239, 4242, 4245, 4248, - 4253, 4262, 4273, 4278, 4286, 4290, 4295, 4299, 4304, 4308, - 4313, 4317, 4324, 4327, 4332, 4335, 4338, 4341, 4346, 4349, - 4354, 4360, 4363, 4366, 4369, 4374, 4378, 4383, 4387, 4392, - 4396, 4403, 4406, 4411, 4414, 4419, 4422, 4428, 4431, 4436, - 4439 + 963, 971, 979, 991, 994, 1001, 1014, 1037, 1060, 1075, + 1100, 1111, 1121, 1131, 1141, 1150, 1153, 1157, 1161, 1166, + 1174, 1179, 1184, 1189, 1194, 1203, 1213, 1240, 1249, 1256, + 1263, 1270, 1277, 1285, 1293, 1303, 1313, 1320, 1330, 1336, + 1339, 1346, 1350, 1354, 1362, 1371, 1374, 1385, 1388, 1391, + 1395, 1399, 1403, 1407, 1410, 1415, 1419, 1424, 1432, 1436, + 1441, 1447, 1453, 1460, 1465, 1470, 1478, 1483, 1495, 1509, + 1515, 1520, 1528, 1536, 1544, 1552, 1560, 1568, 1576, 1584, + 1592, 1599, 1606, 1610, 1615, 1620, 1625, 1630, 1635, 1640, + 1644, 1648, 1652, 1656, 1662, 1668, 1678, 1685, 1688, 1696, + 1703, 1714, 1719, 1727, 1731, 1741, 1744, 1750, 1756, 1761, + 1769, 1779, 1783, 1787, 1791, 1796, 1800, 1805, 1810, 1815, + 1820, 1825, 1830, 1835, 1840, 1845, 1851, 1857, 1863, 1868, + 1873, 1878, 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1918, + 1923, 1930, 1935, 1940, 1945, 1950, 1955, 1960, 1965, 1970, + 1975, 1980, 1985, 1993, 2001, 2009, 2015, 2021, 2027, 2033, + 2039, 2045, 2051, 2057, 2063, 2069, 2075, 2081, 2087, 2093, + 2099, 2105, 2111, 2117, 2123, 2129, 2135, 2141, 2147, 2153, + 2159, 2165, 2171, 2177, 2183, 2189, 2195, 2201, 2207, 2215, + 2223, 2231, 2239, 2247, 2255, 2263, 2271, 2279, 2287, 2295, + 2303, 2309, 2315, 2321, 2327, 2333, 2339, 2345, 2351, 2357, + 2363, 2369, 2375, 2381, 2387, 2393, 2399, 2405, 2411, 2417, + 2423, 2429, 2435, 2441, 2447, 2453, 2459, 2465, 2471, 2477, + 2483, 2489, 2495, 2501, 2507, 2513, 2519, 2523, 2527, 2531, + 2536, 2541, 2546, 2551, 2556, 2561, 2566, 2571, 2576, 2581, + 2586, 2591, 2596, 2601, 2607, 2613, 2619, 2625, 2631, 2637, + 2643, 2649, 2655, 2661, 2667, 2673, 2679, 2684, 2689, 2694, + 2699, 2704, 2709, 2714, 2719, 2724, 2729, 2734, 2739, 2744, + 2749, 2754, 2759, 2764, 2769, 2774, 2779, 2784, 2789, 2794, + 2799, 2804, 2809, 2814, 2819, 2824, 2829, 2834, 2839, 2844, + 2850, 2856, 2861, 2866, 2871, 2877, 2882, 2887, 2892, 2898, + 2903, 2908, 2913, 2919, 2924, 2929, 2934, 2940, 2946, 2952, + 2958, 2963, 2969, 2975, 2981, 2986, 2991, 2996, 3001, 3006, + 3012, 3017, 3022, 3027, 3033, 3038, 3043, 3048, 3054, 3059, + 3064, 3069, 3075, 3080, 3085, 3090, 3096, 3101, 3106, 3111, + 3117, 3122, 3127, 3132, 3138, 3143, 3148, 3153, 3159, 3164, + 3169, 3174, 3180, 3185, 3190, 3195, 3201, 3206, 3211, 3216, + 3222, 3227, 3232, 3237, 3243, 3248, 3253, 3258, 3264, 3269, + 3274, 3279, 3285, 3290, 3295, 3300, 3306, 3311, 3316, 3321, + 3326, 3331, 3336, 3341, 3346, 3351, 3356, 3361, 3366, 3371, + 3376, 3381, 3386, 3391, 3396, 3401, 3406, 3411, 3416, 3421, + 3426, 3432, 3438, 3444, 3450, 3456, 3462, 3468, 3475, 3482, + 3488, 3494, 3500, 3506, 3513, 3520, 3527, 3534, 3538, 3542, + 3547, 3563, 3568, 3573, 3581, 3581, 3598, 3598, 3608, 3611, + 3624, 3646, 3673, 3677, 3683, 3688, 3699, 3702, 3708, 3714, + 3723, 3726, 3732, 3736, 3737, 3743, 3744, 3745, 3746, 3747, + 3748, 3749, 3750, 3754, 3762, 3763, 3767, 3763, 3779, 3780, + 3784, 3784, 3791, 3791, 3805, 3808, 3816, 3824, 3835, 3836, + 3840, 3843, 3850, 3857, 3861, 3869, 3873, 3886, 3889, 3896, + 3896, 3916, 3919, 3925, 3937, 3949, 3952, 3959, 3959, 3974, + 3974, 3992, 3992, 4013, 4016, 4022, 4025, 4031, 4035, 4042, + 4047, 4052, 4059, 4062, 4066, 4070, 4074, 4083, 4087, 4096, + 4099, 4102, 4110, 4110, 4152, 4157, 4160, 4165, 4168, 4173, + 4176, 4181, 4184, 4189, 4192, 4197, 4200, 4205, 4209, 4214, + 4218, 4223, 4227, 4234, 4237, 4242, 4245, 4248, 4251, 4254, + 4259, 4268, 4279, 4284, 4292, 4296, 4301, 4305, 4310, 4314, + 4319, 4323, 4330, 4333, 4338, 4341, 4344, 4347, 4352, 4355, + 4360, 4366, 4369, 4372, 4375, 4380, 4384, 4389, 4393, 4398, + 4402, 4409, 4412, 4417, 4420, 4425, 4428, 4434, 4437, 4442, + 4445 }; #endif @@ -6258,52 +6258,58 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; + const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; + parseContext.requireExtensions((yyvsp[-1].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6264 "MachineIndependent/glslang_tab.cpp" +#line 6266 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 969 "MachineIndependent/glslang.y" +#line 971 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; + const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; + parseContext.requireExtensions((yyvsp[0].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6275 "MachineIndependent/glslang_tab.cpp" +#line 6279 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 975 "MachineIndependent/glslang.y" +#line 979 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[-1].lex).loc; + const char * extensions[2] = { E_GL_EXT_subgroup_uniform_control_flow, E_GL_EXT_maximal_reconvergence }; + parseContext.requireExtensions((yyvsp[-1].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6287 "MachineIndependent/glslang_tab.cpp" +#line 6293 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 985 "MachineIndependent/glslang.y" +#line 991 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6295 "MachineIndependent/glslang_tab.cpp" +#line 6301 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 988 "MachineIndependent/glslang.y" +#line 994 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6303 "MachineIndependent/glslang_tab.cpp" +#line 6309 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 995 "MachineIndependent/glslang.y" +#line 1001 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6317,11 +6323,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6321 "MachineIndependent/glslang_tab.cpp" +#line 6327 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1008 "MachineIndependent/glslang.y" +#line 1014 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6342,11 +6348,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } -#line 6346 "MachineIndependent/glslang_tab.cpp" +#line 6352 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1031 "MachineIndependent/glslang.y" +#line 1037 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6366,11 +6372,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6370 "MachineIndependent/glslang_tab.cpp" +#line 6376 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1054 "MachineIndependent/glslang.y" +#line 1060 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6386,11 +6392,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6390 "MachineIndependent/glslang_tab.cpp" +#line 6396 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1069 "MachineIndependent/glslang.y" +#line 1075 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6410,11 +6416,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6414 "MachineIndependent/glslang_tab.cpp" +#line 6420 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1094 "MachineIndependent/glslang.y" +#line 1100 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6426,11 +6432,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6430 "MachineIndependent/glslang_tab.cpp" +#line 6436 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1105 "MachineIndependent/glslang.y" +#line 1111 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6438,11 +6444,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6442 "MachineIndependent/glslang_tab.cpp" +#line 6448 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1115 "MachineIndependent/glslang.y" +#line 1121 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6453,11 +6459,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6457 "MachineIndependent/glslang_tab.cpp" +#line 6463 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1125 "MachineIndependent/glslang.y" +#line 1131 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6465,118 +6471,118 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6469 "MachineIndependent/glslang_tab.cpp" +#line 6475 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1135 "MachineIndependent/glslang.y" +#line 1141 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6480 "MachineIndependent/glslang_tab.cpp" +#line 6486 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1144 "MachineIndependent/glslang.y" +#line 1150 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6488 "MachineIndependent/glslang_tab.cpp" +#line 6494 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1147 "MachineIndependent/glslang.y" +#line 1153 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6497 "MachineIndependent/glslang_tab.cpp" +#line 6503 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1151 "MachineIndependent/glslang.y" +#line 1157 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6506 "MachineIndependent/glslang_tab.cpp" +#line 6512 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1155 "MachineIndependent/glslang.y" +#line 1161 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6516 "MachineIndependent/glslang_tab.cpp" +#line 6522 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1160 "MachineIndependent/glslang.y" +#line 1166 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6526 "MachineIndependent/glslang_tab.cpp" +#line 6532 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1168 "MachineIndependent/glslang.y" +#line 1174 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6536 "MachineIndependent/glslang_tab.cpp" +#line 6542 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1173 "MachineIndependent/glslang.y" +#line 1179 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6546 "MachineIndependent/glslang_tab.cpp" +#line 6552 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1178 "MachineIndependent/glslang.y" +#line 1184 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6556 "MachineIndependent/glslang_tab.cpp" +#line 6562 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1183 "MachineIndependent/glslang.y" +#line 1189 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6566 "MachineIndependent/glslang_tab.cpp" +#line 6572 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1188 "MachineIndependent/glslang.y" +#line 1194 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6576 "MachineIndependent/glslang_tab.cpp" +#line 6582 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1197 "MachineIndependent/glslang.y" +#line 1203 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6587,11 +6593,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat()); } -#line 6591 "MachineIndependent/glslang_tab.cpp" +#line 6597 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1207 "MachineIndependent/glslang.y" +#line 1213 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6616,22 +6622,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6620 "MachineIndependent/glslang_tab.cpp" +#line 6626 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1234 "MachineIndependent/glslang.y" +#line 1240 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6631 "MachineIndependent/glslang_tab.cpp" +#line 6637 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1243 "MachineIndependent/glslang.y" +#line 1249 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6639,11 +6645,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6643 "MachineIndependent/glslang_tab.cpp" +#line 6649 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1250 "MachineIndependent/glslang.y" +#line 1256 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6651,11 +6657,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6655 "MachineIndependent/glslang_tab.cpp" +#line 6661 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1257 "MachineIndependent/glslang.y" +#line 1263 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6663,11 +6669,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6667 "MachineIndependent/glslang_tab.cpp" +#line 6673 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1264 "MachineIndependent/glslang.y" +#line 1270 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6675,11 +6681,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6679 "MachineIndependent/glslang_tab.cpp" +#line 6685 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1271 "MachineIndependent/glslang.y" +#line 1277 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6688,11 +6694,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6692 "MachineIndependent/glslang_tab.cpp" +#line 6698 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1279 "MachineIndependent/glslang.y" +#line 1285 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6701,11 +6707,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6705 "MachineIndependent/glslang_tab.cpp" +#line 6711 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1287 "MachineIndependent/glslang.y" +#line 1293 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6716,11 +6722,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6720 "MachineIndependent/glslang_tab.cpp" +#line 6726 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1297 "MachineIndependent/glslang.y" +#line 1303 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6731,11 +6737,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6735 "MachineIndependent/glslang_tab.cpp" +#line 6741 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1307 "MachineIndependent/glslang.y" +#line 1313 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6743,11 +6749,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6747 "MachineIndependent/glslang_tab.cpp" +#line 6753 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1314 "MachineIndependent/glslang.y" +#line 1320 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6755,84 +6761,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6759 "MachineIndependent/glslang_tab.cpp" +#line 6765 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1324 "MachineIndependent/glslang.y" +#line 1330 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6767 "MachineIndependent/glslang_tab.cpp" +#line 6773 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1330 "MachineIndependent/glslang.y" +#line 1336 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6775 "MachineIndependent/glslang_tab.cpp" +#line 6781 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1333 "MachineIndependent/glslang.y" +#line 1339 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6785 "MachineIndependent/glslang_tab.cpp" +#line 6791 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1340 "MachineIndependent/glslang.y" +#line 1346 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6794 "MachineIndependent/glslang_tab.cpp" +#line 6800 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1344 "MachineIndependent/glslang.y" +#line 1350 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6803 "MachineIndependent/glslang_tab.cpp" +#line 6809 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1348 "MachineIndependent/glslang.y" +#line 1354 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6813 "MachineIndependent/glslang_tab.cpp" +#line 6819 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1356 "MachineIndependent/glslang.y" +#line 1362 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6824 "MachineIndependent/glslang_tab.cpp" +#line 6830 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1365 "MachineIndependent/glslang.y" +#line 1371 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6832 "MachineIndependent/glslang_tab.cpp" +#line 6838 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1368 "MachineIndependent/glslang.y" +#line 1374 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6841,151 +6847,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6845 "MachineIndependent/glslang_tab.cpp" +#line 6851 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1379 "MachineIndependent/glslang.y" +#line 1385 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6853 "MachineIndependent/glslang_tab.cpp" +#line 6859 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1382 "MachineIndependent/glslang.y" +#line 1388 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6861 "MachineIndependent/glslang_tab.cpp" +#line 6867 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1385 "MachineIndependent/glslang.y" +#line 1391 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6870 "MachineIndependent/glslang_tab.cpp" +#line 6876 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1389 "MachineIndependent/glslang.y" +#line 1395 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6879 "MachineIndependent/glslang_tab.cpp" +#line 6885 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1393 "MachineIndependent/glslang.y" +#line 1399 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6888 "MachineIndependent/glslang_tab.cpp" +#line 6894 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1397 "MachineIndependent/glslang.y" +#line 1403 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6897 "MachineIndependent/glslang_tab.cpp" +#line 6903 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1401 "MachineIndependent/glslang.y" +#line 1407 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6905 "MachineIndependent/glslang_tab.cpp" +#line 6911 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1404 "MachineIndependent/glslang.y" +#line 1410 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6915 "MachineIndependent/glslang_tab.cpp" +#line 6921 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1409 "MachineIndependent/glslang.y" +#line 1415 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6924 "MachineIndependent/glslang_tab.cpp" +#line 6930 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1413 "MachineIndependent/glslang.y" +#line 1419 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6934 "MachineIndependent/glslang_tab.cpp" +#line 6940 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1418 "MachineIndependent/glslang.y" +#line 1424 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6944 "MachineIndependent/glslang_tab.cpp" +#line 6950 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1426 "MachineIndependent/glslang.y" +#line 1432 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6953 "MachineIndependent/glslang_tab.cpp" +#line 6959 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1430 "MachineIndependent/glslang.y" +#line 1436 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6963 "MachineIndependent/glslang_tab.cpp" +#line 6969 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1435 "MachineIndependent/glslang.y" +#line 1441 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6974 "MachineIndependent/glslang_tab.cpp" +#line 6980 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1441 "MachineIndependent/glslang.y" +#line 1447 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6985 "MachineIndependent/glslang_tab.cpp" +#line 6991 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1447 "MachineIndependent/glslang.y" +#line 1453 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6993,31 +6999,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 6997 "MachineIndependent/glslang_tab.cpp" +#line 7003 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1454 "MachineIndependent/glslang.y" +#line 1460 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 7007 "MachineIndependent/glslang_tab.cpp" +#line 7013 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: TILEIMAGEEXT */ -#line 1459 "MachineIndependent/glslang.y" +#line 1465 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 7017 "MachineIndependent/glslang_tab.cpp" +#line 7023 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: SHARED */ -#line 1464 "MachineIndependent/glslang.y" +#line 1470 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7026,21 +7032,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7030 "MachineIndependent/glslang_tab.cpp" +#line 7036 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: BUFFER */ -#line 1472 "MachineIndependent/glslang.y" +#line 1478 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7040 "MachineIndependent/glslang_tab.cpp" +#line 7046 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: ATTRIBUTE */ -#line 1477 "MachineIndependent/glslang.y" +#line 1483 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7053,11 +7059,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7057 "MachineIndependent/glslang_tab.cpp" +#line 7063 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: VARYING */ -#line 1489 "MachineIndependent/glslang.y" +#line 1495 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7072,32 +7078,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7076 "MachineIndependent/glslang_tab.cpp" +#line 7082 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: PATCH */ -#line 1503 "MachineIndependent/glslang.y" +#line 1509 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7087 "MachineIndependent/glslang_tab.cpp" +#line 7093 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: SAMPLE */ -#line 1509 "MachineIndependent/glslang.y" +#line 1515 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7097 "MachineIndependent/glslang_tab.cpp" +#line 7103 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITATTRNV */ -#line 1514 "MachineIndependent/glslang.y" +#line 1520 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7106,11 +7112,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7110 "MachineIndependent/glslang_tab.cpp" +#line 7116 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1522 "MachineIndependent/glslang.y" +#line 1528 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7119,11 +7125,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7123 "MachineIndependent/glslang_tab.cpp" +#line 7129 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITATTREXT */ -#line 1530 "MachineIndependent/glslang.y" +#line 1536 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7132,11 +7138,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7136 "MachineIndependent/glslang_tab.cpp" +#line 7142 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADNV */ -#line 1538 "MachineIndependent/glslang.y" +#line 1544 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7145,11 +7151,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7149 "MachineIndependent/glslang_tab.cpp" +#line 7155 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADEXT */ -#line 1546 "MachineIndependent/glslang.y" +#line 1552 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7158,11 +7164,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7162 "MachineIndependent/glslang_tab.cpp" +#line 7168 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINNV */ -#line 1554 "MachineIndependent/glslang.y" +#line 1560 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7171,11 +7177,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7175 "MachineIndependent/glslang_tab.cpp" +#line 7181 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINEXT */ -#line 1562 "MachineIndependent/glslang.y" +#line 1568 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7184,11 +7190,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7188 "MachineIndependent/glslang_tab.cpp" +#line 7194 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATANV */ -#line 1570 "MachineIndependent/glslang.y" +#line 1576 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7197,11 +7203,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7201 "MachineIndependent/glslang_tab.cpp" +#line 7207 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAEXT */ -#line 1578 "MachineIndependent/glslang.y" +#line 1584 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7210,11 +7216,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7214 "MachineIndependent/glslang_tab.cpp" +#line 7220 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINNV */ -#line 1586 "MachineIndependent/glslang.y" +#line 1592 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7222,11 +7228,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7226 "MachineIndependent/glslang_tab.cpp" +#line 7232 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINEXT */ -#line 1593 "MachineIndependent/glslang.y" +#line 1599 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7234,138 +7240,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7238 "MachineIndependent/glslang_tab.cpp" +#line 7244 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: COHERENT */ -#line 1600 "MachineIndependent/glslang.y" +#line 1606 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7247 "MachineIndependent/glslang_tab.cpp" +#line 7253 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: DEVICECOHERENT */ -#line 1604 "MachineIndependent/glslang.y" +#line 1610 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7257 "MachineIndependent/glslang_tab.cpp" +#line 7263 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1609 "MachineIndependent/glslang.y" +#line 1615 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7267 "MachineIndependent/glslang_tab.cpp" +#line 7273 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1614 "MachineIndependent/glslang.y" +#line 1620 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7277 "MachineIndependent/glslang_tab.cpp" +#line 7283 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1619 "MachineIndependent/glslang.y" +#line 1625 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7287 "MachineIndependent/glslang_tab.cpp" +#line 7293 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: NONPRIVATE */ -#line 1624 "MachineIndependent/glslang.y" +#line 1630 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7297 "MachineIndependent/glslang_tab.cpp" +#line 7303 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1629 "MachineIndependent/glslang.y" +#line 1635 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7307 "MachineIndependent/glslang_tab.cpp" +#line 7313 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: VOLATILE */ -#line 1634 "MachineIndependent/glslang.y" +#line 1640 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7316 "MachineIndependent/glslang_tab.cpp" +#line 7322 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: RESTRICT */ -#line 1638 "MachineIndependent/glslang.y" +#line 1644 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7325 "MachineIndependent/glslang_tab.cpp" +#line 7331 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: READONLY */ -#line 1642 "MachineIndependent/glslang.y" +#line 1648 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7334 "MachineIndependent/glslang_tab.cpp" +#line 7340 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: WRITEONLY */ -#line 1646 "MachineIndependent/glslang.y" +#line 1652 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7343 "MachineIndependent/glslang_tab.cpp" +#line 7349 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE */ -#line 1650 "MachineIndependent/glslang.y" +#line 1656 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7354 "MachineIndependent/glslang_tab.cpp" +#line 7360 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1656 "MachineIndependent/glslang.y" +#line 1662 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7365 "MachineIndependent/glslang_tab.cpp" +#line 7371 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1662 "MachineIndependent/glslang.y" +#line 1668 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7373,38 +7379,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7377 "MachineIndependent/glslang_tab.cpp" +#line 7383 "MachineIndependent/glslang_tab.cpp" break; case 206: /* non_uniform_qualifier: NONUNIFORM */ -#line 1672 "MachineIndependent/glslang.y" +#line 1678 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7386 "MachineIndependent/glslang_tab.cpp" +#line 7392 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: IDENTIFIER */ -#line 1679 "MachineIndependent/glslang.y" +#line 1685 "MachineIndependent/glslang.y" { // TODO } -#line 7394 "MachineIndependent/glslang_tab.cpp" +#line 7400 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1682 "MachineIndependent/glslang.y" +#line 1688 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7404 "MachineIndependent/glslang_tab.cpp" +#line 7410 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1690 "MachineIndependent/glslang.y" +#line 1696 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); @@ -7412,11 +7418,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } -#line 7416 "MachineIndependent/glslang_tab.cpp" +#line 7422 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1697 "MachineIndependent/glslang.y" +#line 1703 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7425,21 +7431,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7429 "MachineIndependent/glslang_tab.cpp" +#line 7435 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1708 "MachineIndependent/glslang.y" +#line 1714 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7439 "MachineIndependent/glslang_tab.cpp" +#line 7445 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1713 "MachineIndependent/glslang.y" +#line 1719 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7448,20 +7454,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7452 "MachineIndependent/glslang_tab.cpp" +#line 7458 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1721 "MachineIndependent/glslang.y" +#line 1727 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7461 "MachineIndependent/glslang_tab.cpp" +#line 7467 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1725 "MachineIndependent/glslang.y" +#line 1731 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7469,45 +7475,45 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7473 "MachineIndependent/glslang_tab.cpp" +#line 7479 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1735 "MachineIndependent/glslang.y" +#line 1741 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7481 "MachineIndependent/glslang_tab.cpp" +#line 7487 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier_opt: %empty */ -#line 1738 "MachineIndependent/glslang.y" +#line 1744 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7489 "MachineIndependent/glslang_tab.cpp" +#line 7495 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1744 "MachineIndependent/glslang.y" +#line 1750 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7497 "MachineIndependent/glslang_tab.cpp" +#line 7503 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_list: type_specifier */ -#line 1750 "MachineIndependent/glslang.y" +#line 1756 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7507 "MachineIndependent/glslang_tab.cpp" +#line 7513 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier_list: unary_expression */ -#line 1755 "MachineIndependent/glslang.y" +#line 1761 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7516,11 +7522,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7520 "MachineIndependent/glslang_tab.cpp" +#line 7526 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1763 "MachineIndependent/glslang.y" +#line 1769 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7528,300 +7534,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7532 "MachineIndependent/glslang_tab.cpp" +#line 7538 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: VOID */ -#line 1773 "MachineIndependent/glslang.y" +#line 1779 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7541 "MachineIndependent/glslang_tab.cpp" +#line 7547 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: FLOAT */ -#line 1777 "MachineIndependent/glslang.y" +#line 1783 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7550 "MachineIndependent/glslang_tab.cpp" +#line 7556 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: INT */ -#line 1781 "MachineIndependent/glslang.y" +#line 1787 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7559 "MachineIndependent/glslang_tab.cpp" +#line 7565 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: UINT */ -#line 1785 "MachineIndependent/glslang.y" +#line 1791 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7569 "MachineIndependent/glslang_tab.cpp" +#line 7575 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: BOOL */ -#line 1790 "MachineIndependent/glslang.y" +#line 1796 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7578 "MachineIndependent/glslang_tab.cpp" +#line 7584 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC2 */ -#line 1794 "MachineIndependent/glslang.y" +#line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7588 "MachineIndependent/glslang_tab.cpp" +#line 7594 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: VEC3 */ -#line 1799 "MachineIndependent/glslang.y" +#line 1805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7598 "MachineIndependent/glslang_tab.cpp" +#line 7604 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: VEC4 */ -#line 1804 "MachineIndependent/glslang.y" +#line 1810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7608 "MachineIndependent/glslang_tab.cpp" +#line 7614 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC2 */ -#line 1809 "MachineIndependent/glslang.y" +#line 1815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7618 "MachineIndependent/glslang_tab.cpp" +#line 7624 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: BVEC3 */ -#line 1814 "MachineIndependent/glslang.y" +#line 1820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7628 "MachineIndependent/glslang_tab.cpp" +#line 7634 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: BVEC4 */ -#line 1819 "MachineIndependent/glslang.y" +#line 1825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7638 "MachineIndependent/glslang_tab.cpp" +#line 7644 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC2 */ -#line 1824 "MachineIndependent/glslang.y" +#line 1830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7648 "MachineIndependent/glslang_tab.cpp" +#line 7654 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: IVEC3 */ -#line 1829 "MachineIndependent/glslang.y" +#line 1835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7658 "MachineIndependent/glslang_tab.cpp" +#line 7664 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: IVEC4 */ -#line 1834 "MachineIndependent/glslang.y" +#line 1840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7668 "MachineIndependent/glslang_tab.cpp" +#line 7674 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC2 */ -#line 1839 "MachineIndependent/glslang.y" +#line 1845 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7679 "MachineIndependent/glslang_tab.cpp" +#line 7685 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: UVEC3 */ -#line 1845 "MachineIndependent/glslang.y" +#line 1851 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7690 "MachineIndependent/glslang_tab.cpp" +#line 7696 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: UVEC4 */ -#line 1851 "MachineIndependent/glslang.y" +#line 1857 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7701 "MachineIndependent/glslang_tab.cpp" +#line 7707 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT2 */ -#line 1857 "MachineIndependent/glslang.y" +#line 1863 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7711 "MachineIndependent/glslang_tab.cpp" +#line 7717 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT3 */ -#line 1862 "MachineIndependent/glslang.y" +#line 1868 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7721 "MachineIndependent/glslang_tab.cpp" +#line 7727 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT4 */ -#line 1867 "MachineIndependent/glslang.y" +#line 1873 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7731 "MachineIndependent/glslang_tab.cpp" +#line 7737 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X2 */ -#line 1872 "MachineIndependent/glslang.y" +#line 1878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7741 "MachineIndependent/glslang_tab.cpp" +#line 7747 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT2X3 */ -#line 1877 "MachineIndependent/glslang.y" +#line 1883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7751 "MachineIndependent/glslang_tab.cpp" +#line 7757 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT2X4 */ -#line 1882 "MachineIndependent/glslang.y" +#line 1888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7761 "MachineIndependent/glslang_tab.cpp" +#line 7767 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X2 */ -#line 1887 "MachineIndependent/glslang.y" +#line 1893 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7771 "MachineIndependent/glslang_tab.cpp" +#line 7777 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT3X3 */ -#line 1892 "MachineIndependent/glslang.y" +#line 1898 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7781 "MachineIndependent/glslang_tab.cpp" +#line 7787 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT3X4 */ -#line 1897 "MachineIndependent/glslang.y" +#line 1903 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7791 "MachineIndependent/glslang_tab.cpp" +#line 7797 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X2 */ -#line 1902 "MachineIndependent/glslang.y" +#line 1908 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7801 "MachineIndependent/glslang_tab.cpp" +#line 7807 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT4X3 */ -#line 1907 "MachineIndependent/glslang.y" +#line 1913 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7811 "MachineIndependent/glslang_tab.cpp" +#line 7817 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: MAT4X4 */ -#line 1912 "MachineIndependent/glslang.y" +#line 1918 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7821 "MachineIndependent/glslang_tab.cpp" +#line 7827 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: DOUBLE */ -#line 1917 "MachineIndependent/glslang.y" +#line 1923 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7829,121 +7835,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7833 "MachineIndependent/glslang_tab.cpp" +#line 7839 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT16_T */ -#line 1924 "MachineIndependent/glslang.y" +#line 1930 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7843 "MachineIndependent/glslang_tab.cpp" +#line 7849 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: FLOAT32_T */ -#line 1929 "MachineIndependent/glslang.y" +#line 1935 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7853 "MachineIndependent/glslang_tab.cpp" +#line 7859 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: FLOAT64_T */ -#line 1934 "MachineIndependent/glslang.y" +#line 1940 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7863 "MachineIndependent/glslang_tab.cpp" +#line 7869 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: INT8_T */ -#line 1939 "MachineIndependent/glslang.y" +#line 1945 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7873 "MachineIndependent/glslang_tab.cpp" +#line 7879 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: UINT8_T */ -#line 1944 "MachineIndependent/glslang.y" +#line 1950 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7883 "MachineIndependent/glslang_tab.cpp" +#line 7889 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: INT16_T */ -#line 1949 "MachineIndependent/glslang.y" +#line 1955 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7893 "MachineIndependent/glslang_tab.cpp" +#line 7899 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: UINT16_T */ -#line 1954 "MachineIndependent/glslang.y" +#line 1960 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7903 "MachineIndependent/glslang_tab.cpp" +#line 7909 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: INT32_T */ -#line 1959 "MachineIndependent/glslang.y" +#line 1965 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7913 "MachineIndependent/glslang_tab.cpp" +#line 7919 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: UINT32_T */ -#line 1964 "MachineIndependent/glslang.y" +#line 1970 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7923 "MachineIndependent/glslang_tab.cpp" +#line 7929 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: INT64_T */ -#line 1969 "MachineIndependent/glslang.y" +#line 1975 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7933 "MachineIndependent/glslang_tab.cpp" +#line 7939 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: UINT64_T */ -#line 1974 "MachineIndependent/glslang.y" +#line 1980 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7943 "MachineIndependent/glslang_tab.cpp" +#line 7949 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC2 */ -#line 1979 "MachineIndependent/glslang.y" +#line 1985 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7952,11 +7958,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7956 "MachineIndependent/glslang_tab.cpp" +#line 7962 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: DVEC3 */ -#line 1987 "MachineIndependent/glslang.y" +#line 1993 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7965,11 +7971,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7969 "MachineIndependent/glslang_tab.cpp" +#line 7975 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: DVEC4 */ -#line 1995 "MachineIndependent/glslang.y" +#line 2001 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7978,374 +7984,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7982 "MachineIndependent/glslang_tab.cpp" +#line 7988 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC2 */ -#line 2003 "MachineIndependent/glslang.y" +#line 2009 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7993 "MachineIndependent/glslang_tab.cpp" +#line 7999 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F16VEC3 */ -#line 2009 "MachineIndependent/glslang.y" +#line 2015 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 8004 "MachineIndependent/glslang_tab.cpp" +#line 8010 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F16VEC4 */ -#line 2015 "MachineIndependent/glslang.y" +#line 2021 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8015 "MachineIndependent/glslang_tab.cpp" +#line 8021 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC2 */ -#line 2021 "MachineIndependent/glslang.y" +#line 2027 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8026 "MachineIndependent/glslang_tab.cpp" +#line 8032 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F32VEC3 */ -#line 2027 "MachineIndependent/glslang.y" +#line 2033 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8037 "MachineIndependent/glslang_tab.cpp" +#line 8043 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F32VEC4 */ -#line 2033 "MachineIndependent/glslang.y" +#line 2039 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8048 "MachineIndependent/glslang_tab.cpp" +#line 8054 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC2 */ -#line 2039 "MachineIndependent/glslang.y" +#line 2045 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8059 "MachineIndependent/glslang_tab.cpp" +#line 8065 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: F64VEC3 */ -#line 2045 "MachineIndependent/glslang.y" +#line 2051 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8070 "MachineIndependent/glslang_tab.cpp" +#line 8076 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: F64VEC4 */ -#line 2051 "MachineIndependent/glslang.y" +#line 2057 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8081 "MachineIndependent/glslang_tab.cpp" +#line 8087 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC2 */ -#line 2057 "MachineIndependent/glslang.y" +#line 2063 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8092 "MachineIndependent/glslang_tab.cpp" +#line 8098 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I8VEC3 */ -#line 2063 "MachineIndependent/glslang.y" +#line 2069 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8103 "MachineIndependent/glslang_tab.cpp" +#line 8109 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I8VEC4 */ -#line 2069 "MachineIndependent/glslang.y" +#line 2075 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8114 "MachineIndependent/glslang_tab.cpp" +#line 8120 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC2 */ -#line 2075 "MachineIndependent/glslang.y" +#line 2081 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8125 "MachineIndependent/glslang_tab.cpp" +#line 8131 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I16VEC3 */ -#line 2081 "MachineIndependent/glslang.y" +#line 2087 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8136 "MachineIndependent/glslang_tab.cpp" +#line 8142 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I16VEC4 */ -#line 2087 "MachineIndependent/glslang.y" +#line 2093 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8147 "MachineIndependent/glslang_tab.cpp" +#line 8153 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC2 */ -#line 2093 "MachineIndependent/glslang.y" +#line 2099 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8158 "MachineIndependent/glslang_tab.cpp" +#line 8164 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I32VEC3 */ -#line 2099 "MachineIndependent/glslang.y" +#line 2105 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8169 "MachineIndependent/glslang_tab.cpp" +#line 8175 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I32VEC4 */ -#line 2105 "MachineIndependent/glslang.y" +#line 2111 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8180 "MachineIndependent/glslang_tab.cpp" +#line 8186 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC2 */ -#line 2111 "MachineIndependent/glslang.y" +#line 2117 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8191 "MachineIndependent/glslang_tab.cpp" +#line 8197 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: I64VEC3 */ -#line 2117 "MachineIndependent/glslang.y" +#line 2123 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8202 "MachineIndependent/glslang_tab.cpp" +#line 8208 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: I64VEC4 */ -#line 2123 "MachineIndependent/glslang.y" +#line 2129 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8213 "MachineIndependent/glslang_tab.cpp" +#line 8219 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC2 */ -#line 2129 "MachineIndependent/glslang.y" +#line 2135 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8224 "MachineIndependent/glslang_tab.cpp" +#line 8230 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U8VEC3 */ -#line 2135 "MachineIndependent/glslang.y" +#line 2141 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8235 "MachineIndependent/glslang_tab.cpp" +#line 8241 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U8VEC4 */ -#line 2141 "MachineIndependent/glslang.y" +#line 2147 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8246 "MachineIndependent/glslang_tab.cpp" +#line 8252 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC2 */ -#line 2147 "MachineIndependent/glslang.y" +#line 2153 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8257 "MachineIndependent/glslang_tab.cpp" +#line 8263 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U16VEC3 */ -#line 2153 "MachineIndependent/glslang.y" +#line 2159 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8268 "MachineIndependent/glslang_tab.cpp" +#line 8274 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U16VEC4 */ -#line 2159 "MachineIndependent/glslang.y" +#line 2165 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8279 "MachineIndependent/glslang_tab.cpp" +#line 8285 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC2 */ -#line 2165 "MachineIndependent/glslang.y" +#line 2171 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8290 "MachineIndependent/glslang_tab.cpp" +#line 8296 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U32VEC3 */ -#line 2171 "MachineIndependent/glslang.y" +#line 2177 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8301 "MachineIndependent/glslang_tab.cpp" +#line 8307 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U32VEC4 */ -#line 2177 "MachineIndependent/glslang.y" +#line 2183 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8312 "MachineIndependent/glslang_tab.cpp" +#line 8318 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC2 */ -#line 2183 "MachineIndependent/glslang.y" +#line 2189 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8323 "MachineIndependent/glslang_tab.cpp" +#line 8329 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: U64VEC3 */ -#line 2189 "MachineIndependent/glslang.y" +#line 2195 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8334 "MachineIndependent/glslang_tab.cpp" +#line 8340 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: U64VEC4 */ -#line 2195 "MachineIndependent/glslang.y" +#line 2201 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8345 "MachineIndependent/glslang_tab.cpp" +#line 8351 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT2 */ -#line 2201 "MachineIndependent/glslang.y" +#line 2207 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8354,11 +8360,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8358 "MachineIndependent/glslang_tab.cpp" +#line 8364 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT3 */ -#line 2209 "MachineIndependent/glslang.y" +#line 2215 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8367,11 +8373,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8371 "MachineIndependent/glslang_tab.cpp" +#line 8377 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT4 */ -#line 2217 "MachineIndependent/glslang.y" +#line 2223 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8380,11 +8386,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8384 "MachineIndependent/glslang_tab.cpp" +#line 8390 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X2 */ -#line 2225 "MachineIndependent/glslang.y" +#line 2231 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8393,11 +8399,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8397 "MachineIndependent/glslang_tab.cpp" +#line 8403 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT2X3 */ -#line 2233 "MachineIndependent/glslang.y" +#line 2239 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8406,11 +8412,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8410 "MachineIndependent/glslang_tab.cpp" +#line 8416 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT2X4 */ -#line 2241 "MachineIndependent/glslang.y" +#line 2247 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8419,11 +8425,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8423 "MachineIndependent/glslang_tab.cpp" +#line 8429 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X2 */ -#line 2249 "MachineIndependent/glslang.y" +#line 2255 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8432,11 +8438,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8436 "MachineIndependent/glslang_tab.cpp" +#line 8442 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT3X3 */ -#line 2257 "MachineIndependent/glslang.y" +#line 2263 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8445,11 +8451,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8449 "MachineIndependent/glslang_tab.cpp" +#line 8455 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT3X4 */ -#line 2265 "MachineIndependent/glslang.y" +#line 2271 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8458,11 +8464,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8462 "MachineIndependent/glslang_tab.cpp" +#line 8468 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X2 */ -#line 2273 "MachineIndependent/glslang.y" +#line 2279 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8471,11 +8477,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8475 "MachineIndependent/glslang_tab.cpp" +#line 8481 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: DMAT4X3 */ -#line 2281 "MachineIndependent/glslang.y" +#line 2287 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8484,11 +8490,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8488 "MachineIndependent/glslang_tab.cpp" +#line 8494 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: DMAT4X4 */ -#line 2289 "MachineIndependent/glslang.y" +#line 2295 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8497,2261 +8503,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8501 "MachineIndependent/glslang_tab.cpp" +#line 8507 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT2 */ -#line 2297 "MachineIndependent/glslang.y" +#line 2303 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8512 "MachineIndependent/glslang_tab.cpp" +#line 8518 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT3 */ -#line 2303 "MachineIndependent/glslang.y" +#line 2309 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8523 "MachineIndependent/glslang_tab.cpp" +#line 8529 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT4 */ -#line 2309 "MachineIndependent/glslang.y" +#line 2315 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8534 "MachineIndependent/glslang_tab.cpp" +#line 8540 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2315 "MachineIndependent/glslang.y" +#line 2321 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8545 "MachineIndependent/glslang_tab.cpp" +#line 8551 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2321 "MachineIndependent/glslang.y" +#line 2327 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8556 "MachineIndependent/glslang_tab.cpp" +#line 8562 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2327 "MachineIndependent/glslang.y" +#line 2333 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8567 "MachineIndependent/glslang_tab.cpp" +#line 8573 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2333 "MachineIndependent/glslang.y" +#line 2339 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8578 "MachineIndependent/glslang_tab.cpp" +#line 8584 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2339 "MachineIndependent/glslang.y" +#line 2345 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8589 "MachineIndependent/glslang_tab.cpp" +#line 8595 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2345 "MachineIndependent/glslang.y" +#line 2351 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8600 "MachineIndependent/glslang_tab.cpp" +#line 8606 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2351 "MachineIndependent/glslang.y" +#line 2357 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8611 "MachineIndependent/glslang_tab.cpp" +#line 8617 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2357 "MachineIndependent/glslang.y" +#line 2363 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8622 "MachineIndependent/glslang_tab.cpp" +#line 8628 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2363 "MachineIndependent/glslang.y" +#line 2369 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8633 "MachineIndependent/glslang_tab.cpp" +#line 8639 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT2 */ -#line 2369 "MachineIndependent/glslang.y" +#line 2375 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8644 "MachineIndependent/glslang_tab.cpp" +#line 8650 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT3 */ -#line 2375 "MachineIndependent/glslang.y" +#line 2381 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8655 "MachineIndependent/glslang_tab.cpp" +#line 8661 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT4 */ -#line 2381 "MachineIndependent/glslang.y" +#line 2387 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8666 "MachineIndependent/glslang_tab.cpp" +#line 8672 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2387 "MachineIndependent/glslang.y" +#line 2393 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8677 "MachineIndependent/glslang_tab.cpp" +#line 8683 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2393 "MachineIndependent/glslang.y" +#line 2399 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8688 "MachineIndependent/glslang_tab.cpp" +#line 8694 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2399 "MachineIndependent/glslang.y" +#line 2405 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8699 "MachineIndependent/glslang_tab.cpp" +#line 8705 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2405 "MachineIndependent/glslang.y" +#line 2411 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8710 "MachineIndependent/glslang_tab.cpp" +#line 8716 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2411 "MachineIndependent/glslang.y" +#line 2417 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8721 "MachineIndependent/glslang_tab.cpp" +#line 8727 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2417 "MachineIndependent/glslang.y" +#line 2423 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8732 "MachineIndependent/glslang_tab.cpp" +#line 8738 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2423 "MachineIndependent/glslang.y" +#line 2429 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8743 "MachineIndependent/glslang_tab.cpp" +#line 8749 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2429 "MachineIndependent/glslang.y" +#line 2435 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8754 "MachineIndependent/glslang_tab.cpp" +#line 8760 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2435 "MachineIndependent/glslang.y" +#line 2441 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8765 "MachineIndependent/glslang_tab.cpp" +#line 8771 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT2 */ -#line 2441 "MachineIndependent/glslang.y" +#line 2447 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8776 "MachineIndependent/glslang_tab.cpp" +#line 8782 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT3 */ -#line 2447 "MachineIndependent/glslang.y" +#line 2453 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8787 "MachineIndependent/glslang_tab.cpp" +#line 8793 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT4 */ -#line 2453 "MachineIndependent/glslang.y" +#line 2459 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8798 "MachineIndependent/glslang_tab.cpp" +#line 8804 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2459 "MachineIndependent/glslang.y" +#line 2465 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8809 "MachineIndependent/glslang_tab.cpp" +#line 8815 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2465 "MachineIndependent/glslang.y" +#line 2471 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8820 "MachineIndependent/glslang_tab.cpp" +#line 8826 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2471 "MachineIndependent/glslang.y" +#line 2477 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8831 "MachineIndependent/glslang_tab.cpp" +#line 8837 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2477 "MachineIndependent/glslang.y" +#line 2483 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8842 "MachineIndependent/glslang_tab.cpp" +#line 8848 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2483 "MachineIndependent/glslang.y" +#line 2489 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8853 "MachineIndependent/glslang_tab.cpp" +#line 8859 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2489 "MachineIndependent/glslang.y" +#line 2495 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8864 "MachineIndependent/glslang_tab.cpp" +#line 8870 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2495 "MachineIndependent/glslang.y" +#line 2501 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8875 "MachineIndependent/glslang_tab.cpp" +#line 8881 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2501 "MachineIndependent/glslang.y" +#line 2507 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8886 "MachineIndependent/glslang_tab.cpp" +#line 8892 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2507 "MachineIndependent/glslang.y" +#line 2513 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8897 "MachineIndependent/glslang_tab.cpp" +#line 8903 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2513 "MachineIndependent/glslang.y" +#line 2519 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8906 "MachineIndependent/glslang_tab.cpp" +#line 8912 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2517 "MachineIndependent/glslang.y" +#line 2523 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8915 "MachineIndependent/glslang_tab.cpp" +#line 8921 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2521 "MachineIndependent/glslang.y" +#line 2527 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8924 "MachineIndependent/glslang_tab.cpp" +#line 8930 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2525 "MachineIndependent/glslang.y" +#line 2531 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8934 "MachineIndependent/glslang_tab.cpp" +#line 8940 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER1D */ -#line 2530 "MachineIndependent/glslang.y" +#line 2536 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8944 "MachineIndependent/glslang_tab.cpp" +#line 8950 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLER2D */ -#line 2535 "MachineIndependent/glslang.y" +#line 2541 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8954 "MachineIndependent/glslang_tab.cpp" +#line 8960 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLER3D */ -#line 2540 "MachineIndependent/glslang.y" +#line 2546 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8964 "MachineIndependent/glslang_tab.cpp" +#line 8970 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2545 "MachineIndependent/glslang.y" +#line 2551 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8974 "MachineIndependent/glslang_tab.cpp" +#line 8980 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2550 "MachineIndependent/glslang.y" +#line 2556 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8984 "MachineIndependent/glslang_tab.cpp" +#line 8990 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2555 "MachineIndependent/glslang.y" +#line 2561 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 8994 "MachineIndependent/glslang_tab.cpp" +#line 9000 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2560 "MachineIndependent/glslang.y" +#line 2566 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 9004 "MachineIndependent/glslang_tab.cpp" +#line 9010 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2565 "MachineIndependent/glslang.y" +#line 2571 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9014 "MachineIndependent/glslang_tab.cpp" +#line 9020 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2570 "MachineIndependent/glslang.y" +#line 2576 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9024 "MachineIndependent/glslang_tab.cpp" +#line 9030 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2575 "MachineIndependent/glslang.y" +#line 2581 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9034 "MachineIndependent/glslang_tab.cpp" +#line 9040 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2580 "MachineIndependent/glslang.y" +#line 2586 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9044 "MachineIndependent/glslang_tab.cpp" +#line 9050 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2585 "MachineIndependent/glslang.y" +#line 2591 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9054 "MachineIndependent/glslang_tab.cpp" +#line 9060 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2590 "MachineIndependent/glslang.y" +#line 2596 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9064 "MachineIndependent/glslang_tab.cpp" +#line 9070 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2595 "MachineIndependent/glslang.y" +#line 2601 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9075 "MachineIndependent/glslang_tab.cpp" +#line 9081 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2601 "MachineIndependent/glslang.y" +#line 2607 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9086 "MachineIndependent/glslang_tab.cpp" +#line 9092 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2607 "MachineIndependent/glslang.y" +#line 2613 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9097 "MachineIndependent/glslang_tab.cpp" +#line 9103 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2613 "MachineIndependent/glslang.y" +#line 2619 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9108 "MachineIndependent/glslang_tab.cpp" +#line 9114 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2619 "MachineIndependent/glslang.y" +#line 2625 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9119 "MachineIndependent/glslang_tab.cpp" +#line 9125 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2625 "MachineIndependent/glslang.y" +#line 2631 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9130 "MachineIndependent/glslang_tab.cpp" +#line 9136 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2631 "MachineIndependent/glslang.y" +#line 2637 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9141 "MachineIndependent/glslang_tab.cpp" +#line 9147 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2637 "MachineIndependent/glslang.y" +#line 2643 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9152 "MachineIndependent/glslang_tab.cpp" +#line 9158 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2643 "MachineIndependent/glslang.y" +#line 2649 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9163 "MachineIndependent/glslang_tab.cpp" +#line 9169 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2649 "MachineIndependent/glslang.y" +#line 2655 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9174 "MachineIndependent/glslang_tab.cpp" +#line 9180 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2655 "MachineIndependent/glslang.y" +#line 2661 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9185 "MachineIndependent/glslang_tab.cpp" +#line 9191 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2661 "MachineIndependent/glslang.y" +#line 2667 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9196 "MachineIndependent/glslang_tab.cpp" +#line 9202 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2667 "MachineIndependent/glslang.y" +#line 2673 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9207 "MachineIndependent/glslang_tab.cpp" +#line 9213 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2673 "MachineIndependent/glslang.y" +#line 2679 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9217 "MachineIndependent/glslang_tab.cpp" +#line 9223 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2678 "MachineIndependent/glslang.y" +#line 2684 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9227 "MachineIndependent/glslang_tab.cpp" +#line 9233 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2683 "MachineIndependent/glslang.y" +#line 2689 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9237 "MachineIndependent/glslang_tab.cpp" +#line 9243 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2688 "MachineIndependent/glslang.y" +#line 2694 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9247 "MachineIndependent/glslang_tab.cpp" +#line 9253 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2693 "MachineIndependent/glslang.y" +#line 2699 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9257 "MachineIndependent/glslang_tab.cpp" +#line 9263 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLER2D */ -#line 2698 "MachineIndependent/glslang.y" +#line 2704 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9267 "MachineIndependent/glslang_tab.cpp" +#line 9273 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: USAMPLER3D */ -#line 2703 "MachineIndependent/glslang.y" +#line 2709 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9277 "MachineIndependent/glslang_tab.cpp" +#line 9283 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2708 "MachineIndependent/glslang.y" +#line 2714 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9287 "MachineIndependent/glslang_tab.cpp" +#line 9293 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2713 "MachineIndependent/glslang.y" +#line 2719 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9297 "MachineIndependent/glslang_tab.cpp" +#line 9303 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2718 "MachineIndependent/glslang.y" +#line 2724 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9307 "MachineIndependent/glslang_tab.cpp" +#line 9313 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLER1D */ -#line 2723 "MachineIndependent/glslang.y" +#line 2729 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9317 "MachineIndependent/glslang_tab.cpp" +#line 9323 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2728 "MachineIndependent/glslang.y" +#line 2734 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9327 "MachineIndependent/glslang_tab.cpp" +#line 9333 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2733 "MachineIndependent/glslang.y" +#line 2739 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9337 "MachineIndependent/glslang_tab.cpp" +#line 9343 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2738 "MachineIndependent/glslang.y" +#line 2744 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9347 "MachineIndependent/glslang_tab.cpp" +#line 9353 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2743 "MachineIndependent/glslang.y" +#line 2749 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9357 "MachineIndependent/glslang_tab.cpp" +#line 9363 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2748 "MachineIndependent/glslang.y" +#line 2754 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9367 "MachineIndependent/glslang_tab.cpp" +#line 9373 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2753 "MachineIndependent/glslang.y" +#line 2759 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9377 "MachineIndependent/glslang_tab.cpp" +#line 9383 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE2D */ -#line 2758 "MachineIndependent/glslang.y" +#line 2764 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9387 "MachineIndependent/glslang_tab.cpp" +#line 9393 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURE3D */ -#line 2763 "MachineIndependent/glslang.y" +#line 2769 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9397 "MachineIndependent/glslang_tab.cpp" +#line 9403 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2768 "MachineIndependent/glslang.y" +#line 2774 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9407 "MachineIndependent/glslang_tab.cpp" +#line 9413 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2773 "MachineIndependent/glslang.y" +#line 2779 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9417 "MachineIndependent/glslang_tab.cpp" +#line 9423 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2778 "MachineIndependent/glslang.y" +#line 2784 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9427 "MachineIndependent/glslang_tab.cpp" +#line 9433 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2783 "MachineIndependent/glslang.y" +#line 2789 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9437 "MachineIndependent/glslang_tab.cpp" +#line 9443 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2788 "MachineIndependent/glslang.y" +#line 2794 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9447 "MachineIndependent/glslang_tab.cpp" +#line 9453 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2793 "MachineIndependent/glslang.y" +#line 2799 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9457 "MachineIndependent/glslang_tab.cpp" +#line 9463 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2798 "MachineIndependent/glslang.y" +#line 2804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9467 "MachineIndependent/glslang_tab.cpp" +#line 9473 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2803 "MachineIndependent/glslang.y" +#line 2809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9477 "MachineIndependent/glslang_tab.cpp" +#line 9483 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2808 "MachineIndependent/glslang.y" +#line 2814 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9487 "MachineIndependent/glslang_tab.cpp" +#line 9493 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2813 "MachineIndependent/glslang.y" +#line 2819 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9497 "MachineIndependent/glslang_tab.cpp" +#line 9503 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLER */ -#line 2818 "MachineIndependent/glslang.y" +#line 2824 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9507 "MachineIndependent/glslang_tab.cpp" +#line 9513 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2823 "MachineIndependent/glslang.y" +#line 2829 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9517 "MachineIndependent/glslang_tab.cpp" +#line 9523 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2828 "MachineIndependent/glslang.y" +#line 2834 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9527 "MachineIndependent/glslang_tab.cpp" +#line 9533 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2833 "MachineIndependent/glslang.y" +#line 2839 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9537 "MachineIndependent/glslang_tab.cpp" +#line 9543 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2838 "MachineIndependent/glslang.y" +#line 2844 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9548 "MachineIndependent/glslang_tab.cpp" +#line 9554 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2844 "MachineIndependent/glslang.y" +#line 2850 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9559 "MachineIndependent/glslang_tab.cpp" +#line 9565 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2850 "MachineIndependent/glslang.y" +#line 2856 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9569 "MachineIndependent/glslang_tab.cpp" +#line 9575 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2855 "MachineIndependent/glslang.y" +#line 2861 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9579 "MachineIndependent/glslang_tab.cpp" +#line 9585 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2860 "MachineIndependent/glslang.y" +#line 2866 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9589 "MachineIndependent/glslang_tab.cpp" +#line 9595 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2865 "MachineIndependent/glslang.y" +#line 2871 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9600 "MachineIndependent/glslang_tab.cpp" +#line 9606 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2871 "MachineIndependent/glslang.y" +#line 2877 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9610 "MachineIndependent/glslang_tab.cpp" +#line 9616 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2876 "MachineIndependent/glslang.y" +#line 2882 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9620 "MachineIndependent/glslang_tab.cpp" +#line 9626 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2881 "MachineIndependent/glslang.y" +#line 2887 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9630 "MachineIndependent/glslang_tab.cpp" +#line 9636 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2886 "MachineIndependent/glslang.y" +#line 2892 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9641 "MachineIndependent/glslang_tab.cpp" +#line 9647 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2892 "MachineIndependent/glslang.y" +#line 2898 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9651 "MachineIndependent/glslang_tab.cpp" +#line 9657 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2897 "MachineIndependent/glslang.y" +#line 2903 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9661 "MachineIndependent/glslang_tab.cpp" +#line 9667 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2902 "MachineIndependent/glslang.y" +#line 2908 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9671 "MachineIndependent/glslang_tab.cpp" +#line 9677 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2907 "MachineIndependent/glslang.y" +#line 2913 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9682 "MachineIndependent/glslang_tab.cpp" +#line 9688 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2913 "MachineIndependent/glslang.y" +#line 2919 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9692 "MachineIndependent/glslang_tab.cpp" +#line 9698 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2918 "MachineIndependent/glslang.y" +#line 2924 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9702 "MachineIndependent/glslang_tab.cpp" +#line 9708 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: TEXTURE1D */ -#line 2923 "MachineIndependent/glslang.y" +#line 2929 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9712 "MachineIndependent/glslang_tab.cpp" +#line 9718 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2928 "MachineIndependent/glslang.y" +#line 2934 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9723 "MachineIndependent/glslang_tab.cpp" +#line 9729 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2934 "MachineIndependent/glslang.y" +#line 2940 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9734 "MachineIndependent/glslang_tab.cpp" +#line 9740 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2940 "MachineIndependent/glslang.y" +#line 2946 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9745 "MachineIndependent/glslang_tab.cpp" +#line 9751 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2946 "MachineIndependent/glslang.y" +#line 2952 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9756 "MachineIndependent/glslang_tab.cpp" +#line 9762 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2952 "MachineIndependent/glslang.y" +#line 2958 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9766 "MachineIndependent/glslang_tab.cpp" +#line 9772 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2957 "MachineIndependent/glslang.y" +#line 2963 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9777 "MachineIndependent/glslang_tab.cpp" +#line 9783 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2963 "MachineIndependent/glslang.y" +#line 2969 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9788 "MachineIndependent/glslang_tab.cpp" +#line 9794 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2969 "MachineIndependent/glslang.y" +#line 2975 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9799 "MachineIndependent/glslang_tab.cpp" +#line 9805 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2975 "MachineIndependent/glslang.y" +#line 2981 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9809 "MachineIndependent/glslang_tab.cpp" +#line 9815 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2980 "MachineIndependent/glslang.y" +#line 2986 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9819 "MachineIndependent/glslang_tab.cpp" +#line 9825 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2985 "MachineIndependent/glslang.y" +#line 2991 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9829 "MachineIndependent/glslang_tab.cpp" +#line 9835 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2990 "MachineIndependent/glslang.y" +#line 2996 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9839 "MachineIndependent/glslang_tab.cpp" +#line 9845 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 2995 "MachineIndependent/glslang.y" +#line 3001 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9849 "MachineIndependent/glslang_tab.cpp" +#line 9855 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3000 "MachineIndependent/glslang.y" +#line 3006 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9860 "MachineIndependent/glslang_tab.cpp" +#line 9866 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3006 "MachineIndependent/glslang.y" +#line 3012 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9870 "MachineIndependent/glslang_tab.cpp" +#line 9876 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3011 "MachineIndependent/glslang.y" +#line 3017 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9880 "MachineIndependent/glslang_tab.cpp" +#line 9886 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3016 "MachineIndependent/glslang.y" +#line 3022 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9890 "MachineIndependent/glslang_tab.cpp" +#line 9896 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3021 "MachineIndependent/glslang.y" +#line 3027 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9901 "MachineIndependent/glslang_tab.cpp" +#line 9907 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3027 "MachineIndependent/glslang.y" +#line 3033 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9911 "MachineIndependent/glslang_tab.cpp" +#line 9917 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3032 "MachineIndependent/glslang.y" +#line 3038 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9921 "MachineIndependent/glslang_tab.cpp" +#line 9927 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3037 "MachineIndependent/glslang.y" +#line 3043 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9931 "MachineIndependent/glslang_tab.cpp" +#line 9937 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3042 "MachineIndependent/glslang.y" +#line 3048 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9942 "MachineIndependent/glslang_tab.cpp" +#line 9948 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3048 "MachineIndependent/glslang.y" +#line 3054 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9952 "MachineIndependent/glslang_tab.cpp" +#line 9958 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3053 "MachineIndependent/glslang.y" +#line 3059 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9962 "MachineIndependent/glslang_tab.cpp" +#line 9968 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3058 "MachineIndependent/glslang.y" +#line 3064 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9972 "MachineIndependent/glslang_tab.cpp" +#line 9978 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3063 "MachineIndependent/glslang.y" +#line 3069 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9983 "MachineIndependent/glslang_tab.cpp" +#line 9989 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3069 "MachineIndependent/glslang.y" +#line 3075 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9993 "MachineIndependent/glslang_tab.cpp" +#line 9999 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3074 "MachineIndependent/glslang.y" +#line 3080 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 10003 "MachineIndependent/glslang_tab.cpp" +#line 10009 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: IMAGE1D */ -#line 3079 "MachineIndependent/glslang.y" +#line 3085 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10013 "MachineIndependent/glslang_tab.cpp" +#line 10019 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3084 "MachineIndependent/glslang.y" +#line 3090 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10024 "MachineIndependent/glslang_tab.cpp" +#line 10030 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: IIMAGE1D */ -#line 3090 "MachineIndependent/glslang.y" +#line 3096 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10034 "MachineIndependent/glslang_tab.cpp" +#line 10040 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: UIMAGE1D */ -#line 3095 "MachineIndependent/glslang.y" +#line 3101 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10044 "MachineIndependent/glslang_tab.cpp" +#line 10050 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: IMAGE2D */ -#line 3100 "MachineIndependent/glslang.y" +#line 3106 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10054 "MachineIndependent/glslang_tab.cpp" +#line 10060 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3105 "MachineIndependent/glslang.y" +#line 3111 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10065 "MachineIndependent/glslang_tab.cpp" +#line 10071 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: IIMAGE2D */ -#line 3111 "MachineIndependent/glslang.y" +#line 3117 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10075 "MachineIndependent/glslang_tab.cpp" +#line 10081 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: UIMAGE2D */ -#line 3116 "MachineIndependent/glslang.y" +#line 3122 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10085 "MachineIndependent/glslang_tab.cpp" +#line 10091 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: IMAGE3D */ -#line 3121 "MachineIndependent/glslang.y" +#line 3127 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10095 "MachineIndependent/glslang_tab.cpp" +#line 10101 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3126 "MachineIndependent/glslang.y" +#line 3132 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10106 "MachineIndependent/glslang_tab.cpp" +#line 10112 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: IIMAGE3D */ -#line 3132 "MachineIndependent/glslang.y" +#line 3138 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10116 "MachineIndependent/glslang_tab.cpp" +#line 10122 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: UIMAGE3D */ -#line 3137 "MachineIndependent/glslang.y" +#line 3143 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10126 "MachineIndependent/glslang_tab.cpp" +#line 10132 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3142 "MachineIndependent/glslang.y" +#line 3148 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10136 "MachineIndependent/glslang_tab.cpp" +#line 10142 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3147 "MachineIndependent/glslang.y" +#line 3153 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10147 "MachineIndependent/glslang_tab.cpp" +#line 10153 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3153 "MachineIndependent/glslang.y" +#line 3159 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10157 "MachineIndependent/glslang_tab.cpp" +#line 10163 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3158 "MachineIndependent/glslang.y" +#line 3164 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10167 "MachineIndependent/glslang_tab.cpp" +#line 10173 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IMAGECUBE */ -#line 3163 "MachineIndependent/glslang.y" +#line 3169 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10177 "MachineIndependent/glslang_tab.cpp" +#line 10183 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3168 "MachineIndependent/glslang.y" +#line 3174 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10188 "MachineIndependent/glslang_tab.cpp" +#line 10194 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3174 "MachineIndependent/glslang.y" +#line 3180 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10198 "MachineIndependent/glslang_tab.cpp" +#line 10204 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3179 "MachineIndependent/glslang.y" +#line 3185 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10208 "MachineIndependent/glslang_tab.cpp" +#line 10214 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3184 "MachineIndependent/glslang.y" +#line 3190 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10218 "MachineIndependent/glslang_tab.cpp" +#line 10224 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3189 "MachineIndependent/glslang.y" +#line 3195 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10229 "MachineIndependent/glslang_tab.cpp" +#line 10235 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3195 "MachineIndependent/glslang.y" +#line 3201 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10239 "MachineIndependent/glslang_tab.cpp" +#line 10245 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3200 "MachineIndependent/glslang.y" +#line 3206 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10249 "MachineIndependent/glslang_tab.cpp" +#line 10255 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3205 "MachineIndependent/glslang.y" +#line 3211 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10259 "MachineIndependent/glslang_tab.cpp" +#line 10265 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3210 "MachineIndependent/glslang.y" +#line 3216 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10270 "MachineIndependent/glslang_tab.cpp" +#line 10276 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3216 "MachineIndependent/glslang.y" +#line 3222 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10280 "MachineIndependent/glslang_tab.cpp" +#line 10286 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3221 "MachineIndependent/glslang.y" +#line 3227 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10290 "MachineIndependent/glslang_tab.cpp" +#line 10296 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3226 "MachineIndependent/glslang.y" +#line 3232 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10300 "MachineIndependent/glslang_tab.cpp" +#line 10306 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3231 "MachineIndependent/glslang.y" +#line 3237 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10311 "MachineIndependent/glslang_tab.cpp" +#line 10317 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3237 "MachineIndependent/glslang.y" +#line 3243 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10321 "MachineIndependent/glslang_tab.cpp" +#line 10327 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3242 "MachineIndependent/glslang.y" +#line 3248 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10331 "MachineIndependent/glslang_tab.cpp" +#line 10337 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3247 "MachineIndependent/glslang.y" +#line 3253 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10341 "MachineIndependent/glslang_tab.cpp" +#line 10347 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3252 "MachineIndependent/glslang.y" +#line 3258 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10352 "MachineIndependent/glslang_tab.cpp" +#line 10358 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3258 "MachineIndependent/glslang.y" +#line 3264 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10362 "MachineIndependent/glslang_tab.cpp" +#line 10368 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3263 "MachineIndependent/glslang.y" +#line 3269 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10372 "MachineIndependent/glslang_tab.cpp" +#line 10378 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3268 "MachineIndependent/glslang.y" +#line 3274 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10382 "MachineIndependent/glslang_tab.cpp" +#line 10388 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3273 "MachineIndependent/glslang.y" +#line 3279 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10393 "MachineIndependent/glslang_tab.cpp" +#line 10399 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3279 "MachineIndependent/glslang.y" +#line 3285 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10403 "MachineIndependent/glslang_tab.cpp" +#line 10409 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3284 "MachineIndependent/glslang.y" +#line 3290 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10413 "MachineIndependent/glslang_tab.cpp" +#line 10419 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3289 "MachineIndependent/glslang.y" +#line 3295 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10423 "MachineIndependent/glslang_tab.cpp" +#line 10429 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3294 "MachineIndependent/glslang.y" +#line 3300 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10434 "MachineIndependent/glslang_tab.cpp" +#line 10440 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3300 "MachineIndependent/glslang.y" +#line 3306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10444 "MachineIndependent/glslang_tab.cpp" +#line 10450 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3305 "MachineIndependent/glslang.y" +#line 3311 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10454 "MachineIndependent/glslang_tab.cpp" +#line 10460 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3310 "MachineIndependent/glslang.y" +#line 3316 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10464 "MachineIndependent/glslang_tab.cpp" +#line 10470 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3315 "MachineIndependent/glslang.y" +#line 3321 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10474 "MachineIndependent/glslang_tab.cpp" +#line 10480 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3320 "MachineIndependent/glslang.y" +#line 3326 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10484 "MachineIndependent/glslang_tab.cpp" +#line 10490 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3325 "MachineIndependent/glslang.y" +#line 3331 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10494 "MachineIndependent/glslang_tab.cpp" +#line 10500 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3330 "MachineIndependent/glslang.y" +#line 3336 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10504 "MachineIndependent/glslang_tab.cpp" +#line 10510 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3335 "MachineIndependent/glslang.y" +#line 3341 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10514 "MachineIndependent/glslang_tab.cpp" +#line 10520 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3340 "MachineIndependent/glslang.y" +#line 3346 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10524 "MachineIndependent/glslang_tab.cpp" +#line 10530 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3345 "MachineIndependent/glslang.y" +#line 3351 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10534 "MachineIndependent/glslang_tab.cpp" +#line 10540 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3350 "MachineIndependent/glslang.y" +#line 3356 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10544 "MachineIndependent/glslang_tab.cpp" +#line 10550 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3355 "MachineIndependent/glslang.y" +#line 3361 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10554 "MachineIndependent/glslang_tab.cpp" +#line 10560 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3360 "MachineIndependent/glslang.y" +#line 3366 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10564 "MachineIndependent/glslang_tab.cpp" +#line 10570 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3365 "MachineIndependent/glslang.y" +#line 3371 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10574 "MachineIndependent/glslang_tab.cpp" +#line 10580 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3370 "MachineIndependent/glslang.y" +#line 3376 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10584 "MachineIndependent/glslang_tab.cpp" +#line 10590 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3375 "MachineIndependent/glslang.y" +#line 3381 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10594 "MachineIndependent/glslang_tab.cpp" +#line 10600 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3380 "MachineIndependent/glslang.y" +#line 3386 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10604 "MachineIndependent/glslang_tab.cpp" +#line 10610 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3385 "MachineIndependent/glslang.y" +#line 3391 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10614 "MachineIndependent/glslang_tab.cpp" +#line 10620 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3390 "MachineIndependent/glslang.y" +#line 3396 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10624 "MachineIndependent/glslang_tab.cpp" +#line 10630 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3395 "MachineIndependent/glslang.y" +#line 3401 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10634 "MachineIndependent/glslang_tab.cpp" +#line 10640 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3400 "MachineIndependent/glslang.y" +#line 3406 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10644 "MachineIndependent/glslang_tab.cpp" +#line 10650 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3405 "MachineIndependent/glslang.y" +#line 3411 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10654 "MachineIndependent/glslang_tab.cpp" +#line 10660 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3410 "MachineIndependent/glslang.y" +#line 3416 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10664 "MachineIndependent/glslang_tab.cpp" +#line 10670 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3415 "MachineIndependent/glslang.y" +#line 3421 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10674 "MachineIndependent/glslang_tab.cpp" +#line 10680 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3420 "MachineIndependent/glslang.y" +#line 3426 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10685 "MachineIndependent/glslang_tab.cpp" +#line 10691 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3426 "MachineIndependent/glslang.y" +#line 3432 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10696 "MachineIndependent/glslang_tab.cpp" +#line 10702 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3432 "MachineIndependent/glslang.y" +#line 3438 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10707 "MachineIndependent/glslang_tab.cpp" +#line 10713 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3438 "MachineIndependent/glslang.y" +#line 3444 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10718 "MachineIndependent/glslang_tab.cpp" +#line 10724 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3444 "MachineIndependent/glslang.y" +#line 3450 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10729 "MachineIndependent/glslang_tab.cpp" +#line 10735 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3450 "MachineIndependent/glslang.y" +#line 3456 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10740 "MachineIndependent/glslang_tab.cpp" +#line 10746 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3456 "MachineIndependent/glslang.y" +#line 3462 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10751 "MachineIndependent/glslang_tab.cpp" +#line 10757 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3462 "MachineIndependent/glslang.y" +#line 3468 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10759,11 +10765,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10763 "MachineIndependent/glslang_tab.cpp" +#line 10769 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3469 "MachineIndependent/glslang.y" +#line 3475 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10771,55 +10777,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10775 "MachineIndependent/glslang_tab.cpp" +#line 10781 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3476 "MachineIndependent/glslang.y" +#line 3482 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10786 "MachineIndependent/glslang_tab.cpp" +#line 10792 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3482 "MachineIndependent/glslang.y" +#line 3488 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10797 "MachineIndependent/glslang_tab.cpp" +#line 10803 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3488 "MachineIndependent/glslang.y" +#line 3494 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10808 "MachineIndependent/glslang_tab.cpp" +#line 10814 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3494 "MachineIndependent/glslang.y" +#line 3500 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10819 "MachineIndependent/glslang_tab.cpp" +#line 10825 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3500 "MachineIndependent/glslang.y" +#line 3506 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10827,11 +10833,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10831 "MachineIndependent/glslang_tab.cpp" +#line 10837 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3507 "MachineIndependent/glslang.y" +#line 3513 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10839,11 +10845,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10843 "MachineIndependent/glslang_tab.cpp" +#line 10849 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3514 "MachineIndependent/glslang.y" +#line 3520 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10851,11 +10857,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10855 "MachineIndependent/glslang_tab.cpp" +#line 10861 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: COOPMAT */ -#line 3521 "MachineIndependent/glslang.y" +#line 3527 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10863,39 +10869,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 10867 "MachineIndependent/glslang_tab.cpp" +#line 10873 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3528 "MachineIndependent/glslang.y" +#line 3534 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10876 "MachineIndependent/glslang_tab.cpp" +#line 10882 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3532 "MachineIndependent/glslang.y" +#line 3538 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10885 "MachineIndependent/glslang_tab.cpp" +#line 10891 "MachineIndependent/glslang_tab.cpp" break; case 539: /* type_specifier_nonarray: struct_specifier */ -#line 3536 "MachineIndependent/glslang.y" +#line 3542 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10895 "MachineIndependent/glslang_tab.cpp" +#line 10901 "MachineIndependent/glslang_tab.cpp" break; case 540: /* type_specifier_nonarray: TYPE_NAME */ -#line 3541 "MachineIndependent/glslang.y" +#line 3547 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10909,47 +10915,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10913 "MachineIndependent/glslang_tab.cpp" +#line 10919 "MachineIndependent/glslang_tab.cpp" break; case 541: /* precision_qualifier: HIGH_PRECISION */ -#line 3557 "MachineIndependent/glslang.y" +#line 3563 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10923 "MachineIndependent/glslang_tab.cpp" +#line 10929 "MachineIndependent/glslang_tab.cpp" break; case 542: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3562 "MachineIndependent/glslang.y" +#line 3568 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10933 "MachineIndependent/glslang_tab.cpp" +#line 10939 "MachineIndependent/glslang_tab.cpp" break; case 543: /* precision_qualifier: LOW_PRECISION */ -#line 3567 "MachineIndependent/glslang.y" +#line 3573 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10943 "MachineIndependent/glslang_tab.cpp" +#line 10949 "MachineIndependent/glslang_tab.cpp" break; case 544: /* $@3: %empty */ -#line 3575 "MachineIndependent/glslang.y" +#line 3581 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10949 "MachineIndependent/glslang_tab.cpp" +#line 10955 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3575 "MachineIndependent/glslang.y" +#line 3581 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); @@ -10967,17 +10973,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10971 "MachineIndependent/glslang_tab.cpp" +#line 10977 "MachineIndependent/glslang_tab.cpp" break; case 546: /* $@4: %empty */ -#line 3592 "MachineIndependent/glslang.y" +#line 3598 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10977 "MachineIndependent/glslang_tab.cpp" +#line 10983 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3592 "MachineIndependent/glslang.y" +#line 3598 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10985,19 +10991,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10989 "MachineIndependent/glslang_tab.cpp" +#line 10995 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declaration_list: struct_declaration */ -#line 3602 "MachineIndependent/glslang.y" +#line 3608 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 10997 "MachineIndependent/glslang_tab.cpp" +#line 11003 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3605 "MachineIndependent/glslang.y" +#line 3611 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -11008,11 +11014,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 11012 "MachineIndependent/glslang_tab.cpp" +#line 11018 "MachineIndependent/glslang_tab.cpp" break; case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3618 "MachineIndependent/glslang.y" +#line 3624 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11035,11 +11041,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11039 "MachineIndependent/glslang_tab.cpp" +#line 11045 "MachineIndependent/glslang_tab.cpp" break; case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3640 "MachineIndependent/glslang.y" +#line 3646 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11064,38 +11070,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11068 "MachineIndependent/glslang_tab.cpp" +#line 11074 "MachineIndependent/glslang_tab.cpp" break; case 552: /* struct_declarator_list: struct_declarator */ -#line 3667 "MachineIndependent/glslang.y" +#line 3673 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11077 "MachineIndependent/glslang_tab.cpp" +#line 11083 "MachineIndependent/glslang_tab.cpp" break; case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3671 "MachineIndependent/glslang.y" +#line 3677 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11085 "MachineIndependent/glslang_tab.cpp" +#line 11091 "MachineIndependent/glslang_tab.cpp" break; case 554: /* struct_declarator: IDENTIFIER */ -#line 3677 "MachineIndependent/glslang.y" +#line 3683 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11095 "MachineIndependent/glslang_tab.cpp" +#line 11101 "MachineIndependent/glslang_tab.cpp" break; case 555: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3682 "MachineIndependent/glslang.y" +#line 3688 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11104,246 +11110,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11108 "MachineIndependent/glslang_tab.cpp" +#line 11114 "MachineIndependent/glslang_tab.cpp" break; case 556: /* initializer: assignment_expression */ -#line 3693 "MachineIndependent/glslang.y" +#line 3699 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11116 "MachineIndependent/glslang_tab.cpp" +#line 11122 "MachineIndependent/glslang_tab.cpp" break; case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3696 "MachineIndependent/glslang.y" +#line 3702 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11127 "MachineIndependent/glslang_tab.cpp" +#line 11133 "MachineIndependent/glslang_tab.cpp" break; case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3702 "MachineIndependent/glslang.y" +#line 3708 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11138 "MachineIndependent/glslang_tab.cpp" +#line 11144 "MachineIndependent/glslang_tab.cpp" break; case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3708 "MachineIndependent/glslang.y" +#line 3714 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11149 "MachineIndependent/glslang_tab.cpp" +#line 11155 "MachineIndependent/glslang_tab.cpp" break; case 560: /* initializer_list: initializer */ -#line 3717 "MachineIndependent/glslang.y" +#line 3723 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11157 "MachineIndependent/glslang_tab.cpp" +#line 11163 "MachineIndependent/glslang_tab.cpp" break; case 561: /* initializer_list: initializer_list COMMA initializer */ -#line 3720 "MachineIndependent/glslang.y" +#line 3726 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11165 "MachineIndependent/glslang_tab.cpp" +#line 11171 "MachineIndependent/glslang_tab.cpp" break; case 562: /* declaration_statement: declaration */ -#line 3726 "MachineIndependent/glslang.y" +#line 3732 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11171 "MachineIndependent/glslang_tab.cpp" +#line 11177 "MachineIndependent/glslang_tab.cpp" break; case 563: /* statement: compound_statement */ -#line 3730 "MachineIndependent/glslang.y" +#line 3736 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11177 "MachineIndependent/glslang_tab.cpp" +#line 11183 "MachineIndependent/glslang_tab.cpp" break; case 564: /* statement: simple_statement */ -#line 3731 "MachineIndependent/glslang.y" +#line 3737 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11183 "MachineIndependent/glslang_tab.cpp" +#line 11189 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: declaration_statement */ -#line 3737 "MachineIndependent/glslang.y" +#line 3743 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11189 "MachineIndependent/glslang_tab.cpp" +#line 11195 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: expression_statement */ -#line 3738 "MachineIndependent/glslang.y" +#line 3744 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11195 "MachineIndependent/glslang_tab.cpp" +#line 11201 "MachineIndependent/glslang_tab.cpp" break; case 567: /* simple_statement: selection_statement */ -#line 3739 "MachineIndependent/glslang.y" +#line 3745 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11201 "MachineIndependent/glslang_tab.cpp" +#line 11207 "MachineIndependent/glslang_tab.cpp" break; case 568: /* simple_statement: switch_statement */ -#line 3740 "MachineIndependent/glslang.y" +#line 3746 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11207 "MachineIndependent/glslang_tab.cpp" +#line 11213 "MachineIndependent/glslang_tab.cpp" break; case 569: /* simple_statement: case_label */ -#line 3741 "MachineIndependent/glslang.y" +#line 3747 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11213 "MachineIndependent/glslang_tab.cpp" +#line 11219 "MachineIndependent/glslang_tab.cpp" break; case 570: /* simple_statement: iteration_statement */ -#line 3742 "MachineIndependent/glslang.y" +#line 3748 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11219 "MachineIndependent/glslang_tab.cpp" +#line 11225 "MachineIndependent/glslang_tab.cpp" break; case 571: /* simple_statement: jump_statement */ -#line 3743 "MachineIndependent/glslang.y" +#line 3749 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11225 "MachineIndependent/glslang_tab.cpp" +#line 11231 "MachineIndependent/glslang_tab.cpp" break; case 572: /* simple_statement: demote_statement */ -#line 3744 "MachineIndependent/glslang.y" +#line 3750 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11231 "MachineIndependent/glslang_tab.cpp" +#line 11237 "MachineIndependent/glslang_tab.cpp" break; case 573: /* demote_statement: DEMOTE SEMICOLON */ -#line 3748 "MachineIndependent/glslang.y" +#line 3754 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11241 "MachineIndependent/glslang_tab.cpp" +#line 11247 "MachineIndependent/glslang_tab.cpp" break; case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3756 "MachineIndependent/glslang.y" +#line 3762 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11247 "MachineIndependent/glslang_tab.cpp" +#line 11253 "MachineIndependent/glslang_tab.cpp" break; case 575: /* $@5: %empty */ -#line 3757 "MachineIndependent/glslang.y" +#line 3763 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11256 "MachineIndependent/glslang_tab.cpp" +#line 11262 "MachineIndependent/glslang_tab.cpp" break; case 576: /* $@6: %empty */ -#line 3761 "MachineIndependent/glslang.y" +#line 3767 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11265 "MachineIndependent/glslang_tab.cpp" +#line 11271 "MachineIndependent/glslang_tab.cpp" break; case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3765 "MachineIndependent/glslang.y" +#line 3771 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11275 "MachineIndependent/glslang_tab.cpp" +#line 11281 "MachineIndependent/glslang_tab.cpp" break; case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3773 "MachineIndependent/glslang.y" +#line 3779 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11281 "MachineIndependent/glslang_tab.cpp" +#line 11287 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_no_new_scope: simple_statement */ -#line 3774 "MachineIndependent/glslang.y" +#line 3780 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11287 "MachineIndependent/glslang_tab.cpp" +#line 11293 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@7: %empty */ -#line 3778 "MachineIndependent/glslang.y" +#line 3784 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11295 "MachineIndependent/glslang_tab.cpp" +#line 11301 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@7 compound_statement */ -#line 3781 "MachineIndependent/glslang.y" +#line 3787 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11304 "MachineIndependent/glslang_tab.cpp" +#line 11310 "MachineIndependent/glslang_tab.cpp" break; case 582: /* $@8: %empty */ -#line 3785 "MachineIndependent/glslang.y" +#line 3791 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11314 "MachineIndependent/glslang_tab.cpp" +#line 11320 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement_scoped: $@8 simple_statement */ -#line 3790 "MachineIndependent/glslang.y" +#line 3796 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11325 "MachineIndependent/glslang_tab.cpp" +#line 11331 "MachineIndependent/glslang_tab.cpp" break; case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3799 "MachineIndependent/glslang.y" +#line 3805 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11333 "MachineIndependent/glslang_tab.cpp" +#line 11339 "MachineIndependent/glslang_tab.cpp" break; case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3802 "MachineIndependent/glslang.y" +#line 3808 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11343 "MachineIndependent/glslang_tab.cpp" +#line 11349 "MachineIndependent/glslang_tab.cpp" break; case 586: /* statement_list: statement */ -#line 3810 "MachineIndependent/glslang.y" +#line 3816 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11352,11 +11358,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11356 "MachineIndependent/glslang_tab.cpp" +#line 11362 "MachineIndependent/glslang_tab.cpp" break; case 587: /* statement_list: statement_list statement */ -#line 3818 "MachineIndependent/glslang.y" +#line 3824 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11365,77 +11371,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11369 "MachineIndependent/glslang_tab.cpp" +#line 11375 "MachineIndependent/glslang_tab.cpp" break; case 588: /* expression_statement: SEMICOLON */ -#line 3829 "MachineIndependent/glslang.y" +#line 3835 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11375 "MachineIndependent/glslang_tab.cpp" +#line 11381 "MachineIndependent/glslang_tab.cpp" break; case 589: /* expression_statement: expression SEMICOLON */ -#line 3830 "MachineIndependent/glslang.y" +#line 3836 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11381 "MachineIndependent/glslang_tab.cpp" +#line 11387 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement: selection_statement_nonattributed */ -#line 3834 "MachineIndependent/glslang.y" +#line 3840 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11389 "MachineIndependent/glslang_tab.cpp" +#line 11395 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3837 "MachineIndependent/glslang.y" +#line 3843 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11399 "MachineIndependent/glslang_tab.cpp" +#line 11405 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3844 "MachineIndependent/glslang.y" +#line 3850 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11408 "MachineIndependent/glslang_tab.cpp" +#line 11414 "MachineIndependent/glslang_tab.cpp" break; case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3851 "MachineIndependent/glslang.y" +#line 3857 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11417 "MachineIndependent/glslang_tab.cpp" +#line 11423 "MachineIndependent/glslang_tab.cpp" break; case 594: /* selection_rest_statement: statement_scoped */ -#line 3855 "MachineIndependent/glslang.y" +#line 3861 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11426 "MachineIndependent/glslang_tab.cpp" +#line 11432 "MachineIndependent/glslang_tab.cpp" break; case 595: /* condition: expression */ -#line 3863 "MachineIndependent/glslang.y" +#line 3869 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11435 "MachineIndependent/glslang_tab.cpp" +#line 11441 "MachineIndependent/glslang_tab.cpp" break; case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3867 "MachineIndependent/glslang.y" +#line 3873 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11446,29 +11452,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11450 "MachineIndependent/glslang_tab.cpp" +#line 11456 "MachineIndependent/glslang_tab.cpp" break; case 597: /* switch_statement: switch_statement_nonattributed */ -#line 3880 "MachineIndependent/glslang.y" +#line 3886 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11458 "MachineIndependent/glslang_tab.cpp" +#line 11464 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3883 "MachineIndependent/glslang.y" +#line 3889 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11468 "MachineIndependent/glslang_tab.cpp" +#line 11474 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@9: %empty */ -#line 3890 "MachineIndependent/glslang.y" +#line 3896 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11477,11 +11483,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11481 "MachineIndependent/glslang_tab.cpp" +#line 11487 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3898 "MachineIndependent/glslang.y" +#line 3904 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11491,27 +11497,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11495 "MachineIndependent/glslang_tab.cpp" +#line 11501 "MachineIndependent/glslang_tab.cpp" break; case 601: /* switch_statement_list: %empty */ -#line 3910 "MachineIndependent/glslang.y" +#line 3916 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11503 "MachineIndependent/glslang_tab.cpp" +#line 11509 "MachineIndependent/glslang_tab.cpp" break; case 602: /* switch_statement_list: statement_list */ -#line 3913 "MachineIndependent/glslang.y" +#line 3919 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11511 "MachineIndependent/glslang_tab.cpp" +#line 11517 "MachineIndependent/glslang_tab.cpp" break; case 603: /* case_label: CASE expression COLON */ -#line 3919 "MachineIndependent/glslang.y" +#line 3925 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11524,11 +11530,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11528 "MachineIndependent/glslang_tab.cpp" +#line 11534 "MachineIndependent/glslang_tab.cpp" break; case 604: /* case_label: DEFAULT COLON */ -#line 3931 "MachineIndependent/glslang.y" +#line 3937 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11538,29 +11544,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11542 "MachineIndependent/glslang_tab.cpp" +#line 11548 "MachineIndependent/glslang_tab.cpp" break; case 605: /* iteration_statement: iteration_statement_nonattributed */ -#line 3943 "MachineIndependent/glslang.y" +#line 3949 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11550 "MachineIndependent/glslang_tab.cpp" +#line 11556 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3946 "MachineIndependent/glslang.y" +#line 3952 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11560 "MachineIndependent/glslang_tab.cpp" +#line 11566 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3953 "MachineIndependent/glslang.y" +#line 3959 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11569,11 +11575,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11573 "MachineIndependent/glslang_tab.cpp" +#line 11579 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3961 "MachineIndependent/glslang.y" +#line 3967 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11581,22 +11587,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11585 "MachineIndependent/glslang_tab.cpp" +#line 11591 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 3968 "MachineIndependent/glslang.y" +#line 3974 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11596 "MachineIndependent/glslang_tab.cpp" +#line 11602 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3974 "MachineIndependent/glslang.y" +#line 3980 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11609,22 +11615,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11613 "MachineIndependent/glslang_tab.cpp" +#line 11619 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 3986 "MachineIndependent/glslang.y" +#line 3992 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11624 "MachineIndependent/glslang_tab.cpp" +#line 11630 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3992 "MachineIndependent/glslang.y" +#line 3998 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11637,81 +11643,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11641 "MachineIndependent/glslang_tab.cpp" +#line 11647 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 4007 "MachineIndependent/glslang.y" +#line 4013 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11649 "MachineIndependent/glslang_tab.cpp" +#line 11655 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 4010 "MachineIndependent/glslang.y" +#line 4016 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11657 "MachineIndependent/glslang_tab.cpp" +#line 11663 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 4016 "MachineIndependent/glslang.y" +#line 4022 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11665 "MachineIndependent/glslang_tab.cpp" +#line 11671 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 4019 "MachineIndependent/glslang.y" +#line 4025 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11673 "MachineIndependent/glslang_tab.cpp" +#line 11679 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4025 "MachineIndependent/glslang.y" +#line 4031 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11682 "MachineIndependent/glslang_tab.cpp" +#line 11688 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4029 "MachineIndependent/glslang.y" +#line 4035 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11691 "MachineIndependent/glslang_tab.cpp" +#line 11697 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4036 "MachineIndependent/glslang.y" +#line 4042 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11701 "MachineIndependent/glslang_tab.cpp" +#line 11707 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4041 "MachineIndependent/glslang.y" +#line 4047 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11711 "MachineIndependent/glslang_tab.cpp" +#line 11717 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4046 "MachineIndependent/glslang.y" +#line 4052 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11719,101 +11725,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11723 "MachineIndependent/glslang_tab.cpp" +#line 11729 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4053 "MachineIndependent/glslang.y" +#line 4059 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11731 "MachineIndependent/glslang_tab.cpp" +#line 11737 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4056 "MachineIndependent/glslang.y" +#line 4062 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11740 "MachineIndependent/glslang_tab.cpp" +#line 11746 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4060 "MachineIndependent/glslang.y" +#line 4066 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11749 "MachineIndependent/glslang_tab.cpp" +#line 11755 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4064 "MachineIndependent/glslang.y" +#line 4070 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11758 "MachineIndependent/glslang_tab.cpp" +#line 11764 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4068 "MachineIndependent/glslang.y" +#line 4074 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11767 "MachineIndependent/glslang_tab.cpp" +#line 11773 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4077 "MachineIndependent/glslang.y" +#line 4083 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11776 "MachineIndependent/glslang_tab.cpp" +#line 11782 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4081 "MachineIndependent/glslang.y" +#line 4087 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11787 "MachineIndependent/glslang_tab.cpp" +#line 11793 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4090 "MachineIndependent/glslang.y" +#line 4096 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11795 "MachineIndependent/glslang_tab.cpp" +#line 11801 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4093 "MachineIndependent/glslang.y" +#line 4099 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11803 "MachineIndependent/glslang_tab.cpp" +#line 11809 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4096 "MachineIndependent/glslang.y" +#line 4102 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11813 "MachineIndependent/glslang_tab.cpp" +#line 11819 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4104 "MachineIndependent/glslang.y" +#line 4110 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11826,11 +11832,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11830 "MachineIndependent/glslang_tab.cpp" +#line 11836 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4116 "MachineIndependent/glslang.y" +#line 4122 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11858,228 +11864,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11862 "MachineIndependent/glslang_tab.cpp" +#line 11868 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4146 "MachineIndependent/glslang.y" +#line 4152 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11870 "MachineIndependent/glslang_tab.cpp" +#line 11876 "MachineIndependent/glslang_tab.cpp" break; case 635: /* attribute_list: single_attribute */ -#line 4151 "MachineIndependent/glslang.y" +#line 4157 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11878 "MachineIndependent/glslang_tab.cpp" +#line 11884 "MachineIndependent/glslang_tab.cpp" break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4154 "MachineIndependent/glslang.y" +#line 4160 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11886 "MachineIndependent/glslang_tab.cpp" +#line 11892 "MachineIndependent/glslang_tab.cpp" break; case 637: /* single_attribute: IDENTIFIER */ -#line 4159 "MachineIndependent/glslang.y" +#line 4165 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11894 "MachineIndependent/glslang_tab.cpp" +#line 11900 "MachineIndependent/glslang_tab.cpp" break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4162 "MachineIndependent/glslang.y" +#line 4168 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11902 "MachineIndependent/glslang_tab.cpp" +#line 11908 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4167 "MachineIndependent/glslang.y" +#line 4173 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11910 "MachineIndependent/glslang_tab.cpp" +#line 11916 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4170 "MachineIndependent/glslang.y" +#line 4176 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11918 "MachineIndependent/glslang_tab.cpp" +#line 11924 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4175 "MachineIndependent/glslang.y" +#line 4181 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11926 "MachineIndependent/glslang_tab.cpp" +#line 11932 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4178 "MachineIndependent/glslang.y" +#line 4184 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11934 "MachineIndependent/glslang_tab.cpp" +#line 11940 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4183 "MachineIndependent/glslang.y" +#line 4189 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11942 "MachineIndependent/glslang_tab.cpp" +#line 11948 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4186 "MachineIndependent/glslang.y" +#line 4192 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11950 "MachineIndependent/glslang_tab.cpp" +#line 11956 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4191 "MachineIndependent/glslang.y" +#line 4197 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11958 "MachineIndependent/glslang_tab.cpp" +#line 11964 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4194 "MachineIndependent/glslang.y" +#line 4200 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11966 "MachineIndependent/glslang_tab.cpp" +#line 11972 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4199 "MachineIndependent/glslang.y" +#line 4205 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11975 "MachineIndependent/glslang_tab.cpp" +#line 11981 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4203 "MachineIndependent/glslang.y" +#line 4209 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11985 "MachineIndependent/glslang_tab.cpp" +#line 11991 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4208 "MachineIndependent/glslang.y" +#line 4214 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 11994 "MachineIndependent/glslang_tab.cpp" +#line 12000 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4212 "MachineIndependent/glslang.y" +#line 4218 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12004 "MachineIndependent/glslang_tab.cpp" +#line 12010 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4217 "MachineIndependent/glslang.y" +#line 4223 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12013 "MachineIndependent/glslang_tab.cpp" +#line 12019 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4221 "MachineIndependent/glslang.y" +#line 4227 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12023 "MachineIndependent/glslang_tab.cpp" +#line 12029 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4228 "MachineIndependent/glslang.y" +#line 4234 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12031 "MachineIndependent/glslang_tab.cpp" +#line 12037 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4231 "MachineIndependent/glslang.y" +#line 4237 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12039 "MachineIndependent/glslang_tab.cpp" +#line 12045 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4236 "MachineIndependent/glslang.y" +#line 4242 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12047 "MachineIndependent/glslang_tab.cpp" +#line 12053 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4239 "MachineIndependent/glslang.y" +#line 4245 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12055 "MachineIndependent/glslang_tab.cpp" +#line 12061 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4242 "MachineIndependent/glslang.y" +#line 4248 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12063 "MachineIndependent/glslang_tab.cpp" +#line 12069 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4245 "MachineIndependent/glslang.y" +#line 4251 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12071 "MachineIndependent/glslang_tab.cpp" +#line 12077 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4248 "MachineIndependent/glslang.y" +#line 4254 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12079 "MachineIndependent/glslang_tab.cpp" +#line 12085 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4253 "MachineIndependent/glslang.y" +#line 4259 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12089,11 +12095,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12093 "MachineIndependent/glslang_tab.cpp" +#line 12099 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4262 "MachineIndependent/glslang.y" +#line 4268 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12103,351 +12109,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12107 "MachineIndependent/glslang_tab.cpp" +#line 12113 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4273 "MachineIndependent/glslang.y" +#line 4279 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12117 "MachineIndependent/glslang_tab.cpp" +#line 12123 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4278 "MachineIndependent/glslang.y" +#line 4284 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12128 "MachineIndependent/glslang_tab.cpp" +#line 12134 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4286 "MachineIndependent/glslang.y" +#line 4292 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12137 "MachineIndependent/glslang_tab.cpp" +#line 12143 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4290 "MachineIndependent/glslang.y" +#line 4296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12147 "MachineIndependent/glslang_tab.cpp" +#line 12153 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4295 "MachineIndependent/glslang.y" +#line 4301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12156 "MachineIndependent/glslang_tab.cpp" +#line 12162 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4299 "MachineIndependent/glslang.y" +#line 4305 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12166 "MachineIndependent/glslang_tab.cpp" +#line 12172 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4304 "MachineIndependent/glslang.y" +#line 4310 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12175 "MachineIndependent/glslang_tab.cpp" +#line 12181 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4308 "MachineIndependent/glslang.y" +#line 4314 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12185 "MachineIndependent/glslang_tab.cpp" +#line 12191 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4313 "MachineIndependent/glslang.y" +#line 4319 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12194 "MachineIndependent/glslang_tab.cpp" +#line 12200 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4317 "MachineIndependent/glslang.y" +#line 4323 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12204 "MachineIndependent/glslang_tab.cpp" +#line 12210 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4324 "MachineIndependent/glslang.y" +#line 4330 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12212 "MachineIndependent/glslang_tab.cpp" +#line 12218 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4327 "MachineIndependent/glslang.y" +#line 4333 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12220 "MachineIndependent/glslang_tab.cpp" +#line 12226 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4332 "MachineIndependent/glslang.y" +#line 4338 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12228 "MachineIndependent/glslang_tab.cpp" +#line 12234 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4335 "MachineIndependent/glslang.y" +#line 4341 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12236 "MachineIndependent/glslang_tab.cpp" +#line 12242 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4338 "MachineIndependent/glslang.y" +#line 4344 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12244 "MachineIndependent/glslang_tab.cpp" +#line 12250 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4341 "MachineIndependent/glslang.y" +#line 4347 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12252 "MachineIndependent/glslang_tab.cpp" +#line 12258 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4346 "MachineIndependent/glslang.y" +#line 4352 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12260 "MachineIndependent/glslang_tab.cpp" +#line 12266 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4349 "MachineIndependent/glslang.y" +#line 4355 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12268 "MachineIndependent/glslang_tab.cpp" +#line 12274 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4354 "MachineIndependent/glslang.y" +#line 4360 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12279 "MachineIndependent/glslang_tab.cpp" +#line 12285 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4360 "MachineIndependent/glslang.y" +#line 4366 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12287 "MachineIndependent/glslang_tab.cpp" +#line 12293 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4363 "MachineIndependent/glslang.y" +#line 4369 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12295 "MachineIndependent/glslang_tab.cpp" +#line 12301 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4366 "MachineIndependent/glslang.y" +#line 4372 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12303 "MachineIndependent/glslang_tab.cpp" +#line 12309 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4369 "MachineIndependent/glslang.y" +#line 4375 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12311 "MachineIndependent/glslang_tab.cpp" +#line 12317 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4374 "MachineIndependent/glslang.y" +#line 4380 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12320 "MachineIndependent/glslang_tab.cpp" +#line 12326 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4378 "MachineIndependent/glslang.y" +#line 4384 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12328 "MachineIndependent/glslang_tab.cpp" +#line 12334 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4383 "MachineIndependent/glslang.y" +#line 4389 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12337 "MachineIndependent/glslang_tab.cpp" +#line 12343 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4387 "MachineIndependent/glslang.y" +#line 4393 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12347 "MachineIndependent/glslang_tab.cpp" +#line 12353 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4392 "MachineIndependent/glslang.y" +#line 4398 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12356 "MachineIndependent/glslang_tab.cpp" +#line 12362 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4396 "MachineIndependent/glslang.y" +#line 4402 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12366 "MachineIndependent/glslang_tab.cpp" +#line 12372 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4403 "MachineIndependent/glslang.y" +#line 4409 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12374 "MachineIndependent/glslang_tab.cpp" +#line 12380 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4406 "MachineIndependent/glslang.y" +#line 4412 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12382 "MachineIndependent/glslang_tab.cpp" +#line 12388 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4411 "MachineIndependent/glslang.y" +#line 4417 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12390 "MachineIndependent/glslang_tab.cpp" +#line 12396 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4414 "MachineIndependent/glslang.y" +#line 4420 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12398 "MachineIndependent/glslang_tab.cpp" +#line 12404 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4419 "MachineIndependent/glslang.y" +#line 4425 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12406 "MachineIndependent/glslang_tab.cpp" +#line 12412 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4422 "MachineIndependent/glslang.y" +#line 4428 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12415 "MachineIndependent/glslang_tab.cpp" +#line 12421 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4428 "MachineIndependent/glslang.y" +#line 4434 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12423 "MachineIndependent/glslang_tab.cpp" +#line 12429 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4431 "MachineIndependent/glslang.y" +#line 4437 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12431 "MachineIndependent/glslang_tab.cpp" +#line 12437 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4436 "MachineIndependent/glslang.y" +#line 4442 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12439 "MachineIndependent/glslang_tab.cpp" +#line 12445 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4439 "MachineIndependent/glslang.y" +#line 4445 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12447 "MachineIndependent/glslang_tab.cpp" +#line 12453 "MachineIndependent/glslang_tab.cpp" break; -#line 12451 "MachineIndependent/glslang_tab.cpp" +#line 12457 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12671,5 +12677,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4443 "MachineIndependent/glslang.y" +#line 4449 "MachineIndependent/glslang.y" diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 5b1414c948..47e4b59e5b 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1512,6 +1512,9 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) if (getSubgroupUniformControlFlow()) infoSink.debug << "subgroup_uniform_control_flow\n"; + if (getMaximalReconvergence()) + infoSink.debug << "maximal_reconvergence\n"; + switch (language) { case EShLangVertex: break; diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index c73f2b4d5f..865ce690a0 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -345,6 +345,7 @@ class TIntermediate { needToLegalize(false), binaryDoubleOutput(false), subgroupUniformControlFlow(false), + maximalReconvergence(false), usePhysicalStorageBuffer(false), spirvRequirement(nullptr), spirvExecutionMode(nullptr), @@ -963,6 +964,9 @@ class TIntermediate { void setSubgroupUniformControlFlow() { subgroupUniformControlFlow = true; } bool getSubgroupUniformControlFlow() const { return subgroupUniformControlFlow; } + void setMaximalReconvergence() { maximalReconvergence = true; } + bool getMaximalReconvergence() const { return maximalReconvergence; } + // GL_EXT_spirv_intrinsics void insertSpirvRequirement(const TSpirvRequirement* spirvReq); bool hasSpirvRequirement() const { return spirvRequirement != nullptr; } @@ -1226,6 +1230,7 @@ class TIntermediate { bool needToLegalize; bool binaryDoubleOutput; bool subgroupUniformControlFlow; + bool maximalReconvergence; bool usePhysicalStorageBuffer; TSpirvRequirement* spirvRequirement; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 1fd67e6f4e..c16bab61bb 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -436,6 +436,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.matFun.vert", "spv.matrix.frag", "spv.matrix2.frag", + "spv.maximalReconvergence.vert", "spv.memoryQualifier.frag", "spv.merge-unreachable.frag", "spv.multiStruct.comp", diff --git a/known_good.json b/known_good.json index 08f342a7a3..029d43182c 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "f0cc85efdbbe3a46eae90e0f915dc1509836d0fc" + "commit": "de3d5acc04fd203e3e5120a00f168465ecb2e4e4" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "1c6bb2743599e6eb6f37b2969acc0aef812e32e3" + "commit" : "ae6a8b39717523d96683bc0d20b541944e28072f" }, { "name": "googletest", From 79536da264540610d7d80894d59e0260e522064c Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Thu, 25 Jan 2024 16:50:37 -0600 Subject: [PATCH 393/594] Fix 'maximally_reconverges' token to match the GLSL spec --- SPIRV/GlslangToSpv.cpp | 2 +- Test/spv.maximalReconvergence.vert | 2 +- glslang/MachineIndependent/attribute.cpp | 8 ++++---- glslang/MachineIndependent/attribute.h | 2 +- glslang/MachineIndependent/intermOut.cpp | 4 ++-- glslang/MachineIndependent/localintermediate.h | 8 ++++---- 6 files changed, 13 insertions(+), 13 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 03e9cd0437..2d5aa7a733 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1635,7 +1635,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExtension(spv::E_SPV_KHR_subgroup_uniform_control_flow); builder.addExecutionMode(shaderEntry, spv::ExecutionModeSubgroupUniformControlFlowKHR); } - if (glslangIntermediate->getMaximalReconvergence()) { + if (glslangIntermediate->getMaximallyReconverges()) { builder.addExtension(spv::E_SPV_KHR_maximal_reconvergence); builder.addExecutionMode(shaderEntry, spv::ExecutionModeMaximallyReconvergesKHR); } diff --git a/Test/spv.maximalReconvergence.vert b/Test/spv.maximalReconvergence.vert index dfd59d6c77..e152f4e977 100644 --- a/Test/spv.maximalReconvergence.vert +++ b/Test/spv.maximalReconvergence.vert @@ -2,6 +2,6 @@ #extension GL_EXT_maximal_reconvergence : enable -[[random(4)]] void main() [[maximal_reconvergence]] +[[random(4)]] void main() [[maximally_reconverges]] { } diff --git a/glslang/MachineIndependent/attribute.cpp b/glslang/MachineIndependent/attribute.cpp index 58fbc49bde..19e8faac33 100644 --- a/glslang/MachineIndependent/attribute.cpp +++ b/glslang/MachineIndependent/attribute.cpp @@ -125,8 +125,8 @@ TAttributeType TParseContext::attributeFromName(const TString& name) const return EatSubgroupUniformControlFlow; else if (name == "export") return EatExport; - else if (name == "maximal_reconvergence") - return EatMaximalReconvergence; + else if (name == "maximally_reconverges") + return EatMaximallyReconverges; else return EatNone; } @@ -362,9 +362,9 @@ void TParseContext::handleFunctionAttributes(const TSourceLoc& loc, const TAttri requireExtensions(loc, 1, &E_GL_EXT_subgroup_uniform_control_flow, "attribute"); intermediate.setSubgroupUniformControlFlow(); break; - case EatMaximalReconvergence: + case EatMaximallyReconverges: requireExtensions(loc, 1, &E_GL_EXT_maximal_reconvergence, "attribute"); - intermediate.setMaximalReconvergence(); + intermediate.setMaximallyReconverges(); break; default: warn(loc, "attribute does not apply to a function", "", ""); diff --git a/glslang/MachineIndependent/attribute.h b/glslang/MachineIndependent/attribute.h index 1fe8138f1e..3b480c6f03 100644 --- a/glslang/MachineIndependent/attribute.h +++ b/glslang/MachineIndependent/attribute.h @@ -121,7 +121,7 @@ namespace glslang { EatNonReadable, EatSubgroupUniformControlFlow, EatExport, - EatMaximalReconvergence, + EatMaximallyReconverges, }; class TIntermAggregate; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 47e4b59e5b..8dcdc6792d 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1512,8 +1512,8 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) if (getSubgroupUniformControlFlow()) infoSink.debug << "subgroup_uniform_control_flow\n"; - if (getMaximalReconvergence()) - infoSink.debug << "maximal_reconvergence\n"; + if (getMaximallyReconverges()) + infoSink.debug << "maximally_reconverges\n"; switch (language) { case EShLangVertex: diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 865ce690a0..3cd9580579 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -345,7 +345,7 @@ class TIntermediate { needToLegalize(false), binaryDoubleOutput(false), subgroupUniformControlFlow(false), - maximalReconvergence(false), + maximallyReconverges(false), usePhysicalStorageBuffer(false), spirvRequirement(nullptr), spirvExecutionMode(nullptr), @@ -964,8 +964,8 @@ class TIntermediate { void setSubgroupUniformControlFlow() { subgroupUniformControlFlow = true; } bool getSubgroupUniformControlFlow() const { return subgroupUniformControlFlow; } - void setMaximalReconvergence() { maximalReconvergence = true; } - bool getMaximalReconvergence() const { return maximalReconvergence; } + void setMaximallyReconverges() { maximallyReconverges = true; } + bool getMaximallyReconverges() const { return maximallyReconverges; } // GL_EXT_spirv_intrinsics void insertSpirvRequirement(const TSpirvRequirement* spirvReq); @@ -1230,7 +1230,7 @@ class TIntermediate { bool needToLegalize; bool binaryDoubleOutput; bool subgroupUniformControlFlow; - bool maximalReconvergence; + bool maximallyReconverges; bool usePhysicalStorageBuffer; TSpirvRequirement* spirvRequirement; From f6f9840eabd8c5b31e218c8c61b4716e5981f713 Mon Sep 17 00:00:00 2001 From: Younggwan Kim Date: Fri, 1 Sep 2023 10:03:35 +0100 Subject: [PATCH 394/594] SPV: Complete OpAssumeTrueKHR, OpExpectKHR --- SPIRV/doc.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 3c4ec80cf4..3915dccb5c 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1437,6 +1437,9 @@ const char* OpcodeString(int op) case OpAtomicFMinEXT: return "OpAtomicFMinEXT"; case OpAtomicFMaxEXT: return "OpAtomicFMaxEXT"; + case OpAssumeTrueKHR: return "OpAssumeTrueKHR"; + case OpExpectKHR: return "OpExpectKHR"; + case 5000: return "OpGroupIAddNonUniformAMD"; case 5001: return "OpGroupFAddNonUniformAMD"; case 5002: return "OpGroupFMinNonUniformAMD"; @@ -1679,7 +1682,7 @@ void Parameterize() InstructionDesc[OpCooperativeMatrixStoreKHR].setResultAndType(false, false); InstructionDesc[OpBeginInvocationInterlockEXT].setResultAndType(false, false); InstructionDesc[OpEndInvocationInterlockEXT].setResultAndType(false, false); - + InstructionDesc[OpAssumeTrueKHR].setResultAndType(false, false); // Specific additional context-dependent operands ExecutionModeOperands[ExecutionModeInvocations].push(OperandLiteralNumber, "'Number of <>'"); @@ -2458,6 +2461,11 @@ void Parameterize() InstructionDesc[OpAtomicFAddEXT].operands.push(OperandMemorySemantics, "'Semantics'"); InstructionDesc[OpAtomicFAddEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpAssumeTrueKHR].operands.push(OperandId, "'Condition'"); + + InstructionDesc[OpExpectKHR].operands.push(OperandId, "'Value'"); + InstructionDesc[OpExpectKHR].operands.push(OperandId, "'ExpectedValue'"); + InstructionDesc[OpAtomicISub].operands.push(OperandId, "'Pointer'"); InstructionDesc[OpAtomicISub].operands.push(OperandScope, "'Scope'"); InstructionDesc[OpAtomicISub].operands.push(OperandMemorySemantics, "'Semantics'"); From 725017a588b78e161c4e49b276127fde0bf90bfd Mon Sep 17 00:00:00 2001 From: laddoc Date: Mon, 29 Jan 2024 13:53:18 +0800 Subject: [PATCH 395/594] Support extension EXT_shader_quad_control --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 30 +++++++- SPIRV/doc.cpp | 9 +++ SPIRV/spirv.hpp | 7 ++ Test/baseResults/spv.1.6.quad.frag.out | 76 +++++++++++++++++++ Test/spv.1.6.quad.frag | 21 +++++ glslang/Include/Types.h | 10 +++ glslang/Include/intermediate.h | 2 + glslang/MachineIndependent/Initialize.cpp | 23 ++++++ glslang/MachineIndependent/ParseHelper.cpp | 39 ++++++++++ glslang/MachineIndependent/Versions.cpp | 2 + glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/intermOut.cpp | 4 + .../MachineIndependent/localintermediate.h | 9 ++- gtests/Spv.FromFile.cpp | 1 + 15 files changed, 232 insertions(+), 3 deletions(-) create mode 100644 Test/baseResults/spv.1.6.quad.frag.out create mode 100644 Test/spv.1.6.quad.frag diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 5bda765989..83ca83f5e8 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -53,6 +53,7 @@ static const char* const E_SPV_KHR_terminate_invocation = "SPV_KHR_termi static const char* const E_SPV_KHR_workgroup_memory_explicit_layout = "SPV_KHR_workgroup_memory_explicit_layout"; static const char* const E_SPV_KHR_subgroup_uniform_control_flow = "SPV_KHR_subgroup_uniform_control_flow"; static const char* const E_SPV_KHR_fragment_shader_barycentric = "SPV_KHR_fragment_shader_barycentric"; +static const char* const E_SPV_KHR_quad_control = "SPV_KHR_quad_control"; static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_AMD_shader_early_and_late_fragment_tests"; static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch"; static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix"; diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 2d5aa7a733..30232e355c 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1640,6 +1640,20 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addExecutionMode(shaderEntry, spv::ExecutionModeMaximallyReconvergesKHR); } + if (glslangIntermediate->getQuadDerivMode()) + { + builder.addCapability(spv::CapabilityQuadControlKHR); + builder.addExtension(spv::E_SPV_KHR_quad_control); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeQuadDerivativesKHR); + } + + if (glslangIntermediate->getReqFullQuadsMode()) + { + builder.addCapability(spv::CapabilityQuadControlKHR); + builder.addExtension(spv::E_SPV_KHR_quad_control); + builder.addExecutionMode(shaderEntry, spv::ExecutionModeRequireFullQuadsKHR); + } + unsigned int mode; switch (glslangIntermediate->getStage()) { case EShLangVertex: @@ -7173,7 +7187,9 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe case glslang::EOpSubgroupExclusiveXor: case glslang::EOpSubgroupQuadSwapHorizontal: case glslang::EOpSubgroupQuadSwapVertical: - case glslang::EOpSubgroupQuadSwapDiagonal: { + case glslang::EOpSubgroupQuadSwapDiagonal: + case glslang::EOpSubgroupQuadAll: + case glslang::EOpSubgroupQuadAny: { std::vector operands; operands.push_back(operand); return createSubgroupOperation(op, typeId, operands, typeProxy); @@ -8278,6 +8294,11 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s case glslang::EOpSubgroupElect: builder.addCapability(spv::CapabilityGroupNonUniform); break; + case glslang::EOpSubgroupQuadAll: + case glslang::EOpSubgroupQuadAny: + builder.addExtension(spv::E_SPV_KHR_quad_control); + builder.addCapability(spv::CapabilityQuadControlKHR); + // pass through case glslang::EOpSubgroupAll: case glslang::EOpSubgroupAny: case glslang::EOpSubgroupAllEqual: @@ -8385,7 +8406,9 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s // Figure out which opcode to use. switch (op) { case glslang::EOpSubgroupElect: opCode = spv::OpGroupNonUniformElect; break; + case glslang::EOpSubgroupQuadAll: opCode = spv::OpGroupNonUniformQuadAllKHR; break; case glslang::EOpSubgroupAll: opCode = spv::OpGroupNonUniformAll; break; + case glslang::EOpSubgroupQuadAny: opCode = spv::OpGroupNonUniformQuadAnyKHR; break; case glslang::EOpSubgroupAny: opCode = spv::OpGroupNonUniformAny; break; case glslang::EOpSubgroupAllEqual: opCode = spv::OpGroupNonUniformAllEqual; break; case glslang::EOpSubgroupBroadcast: opCode = spv::OpGroupNonUniformBroadcast; break; @@ -8582,7 +8605,10 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s // Every operation begins with the Execution Scope operand. spv::IdImmediate executionScope = { true, builder.makeUintConstant(spv::ScopeSubgroup) }; - spvGroupOperands.push_back(executionScope); + // All other ops need the execution scope. Quad Control Ops don't need scope, it's always Quad. + if (opCode != spv::OpGroupNonUniformQuadAllKHR && opCode != spv::OpGroupNonUniformQuadAnyKHR) { + spvGroupOperands.push_back(executionScope); + } // Next, for all operations that use a Group Operation, push that as an operand. if (groupOperation != spv::GroupOperationMax) { diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 3915dccb5c..a342eee38c 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -218,6 +218,9 @@ const char* ExecutionModeString(int mode) case ExecutionModeNoGlobalOffsetINTEL: return "NoGlobalOffsetINTEL"; case ExecutionModeNumSIMDWorkitemsINTEL: return "NumSIMDWorkitemsINTEL"; + case ExecutionModeRequireFullQuadsKHR: return "RequireFullQuadsKHR"; + case ExecutionModeQuadDerivativesKHR: return "QuadDerivativesKHR"; + case ExecutionModeNonCoherentColorAttachmentReadEXT: return "NonCoherentColorAttachmentReadEXT"; case ExecutionModeNonCoherentDepthAttachmentReadEXT: return "NonCoherentDepthAttachmentReadEXT"; case ExecutionModeNonCoherentStencilAttachmentReadEXT: return "NonCoherentStencilAttachmentReadEXT"; @@ -1033,6 +1036,7 @@ const char* CapabilityString(int info) case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; case CapabilityShaderClockKHR: return "ShaderClockKHR"; + case CapabilityQuadControlKHR: return "QuadControlKHR"; case CapabilityInt64ImageEXT: return "Int64ImageEXT"; case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; @@ -1433,6 +1437,9 @@ const char* OpcodeString(int op) case 4430: return "OpSubgroupAllEqualKHR"; case 4432: return "OpSubgroupReadInvocationKHR"; + case OpGroupNonUniformQuadAllKHR: return "OpGroupNonUniformQuadAllKHR"; + case OpGroupNonUniformQuadAnyKHR: return "OpGroupNonUniformQuadAnyKHR"; + case OpAtomicFAddEXT: return "OpAtomicFAddEXT"; case OpAtomicFMinEXT: return "OpAtomicFMinEXT"; case OpAtomicFMaxEXT: return "OpAtomicFMaxEXT"; @@ -2940,6 +2947,8 @@ void Parameterize() InstructionDesc[OpGroupNonUniformPartitionNV].operands.push(OperandId, "X"); + InstructionDesc[OpGroupNonUniformQuadAllKHR].operands.push(OperandId, "'Predicate'"); + InstructionDesc[OpGroupNonUniformQuadAnyKHR].operands.push(OperandId, "'Predicate'"); InstructionDesc[OpTypeAccelerationStructureKHR].setResultAndType(true, false); InstructionDesc[OpTraceNV].operands.push(OperandId, "'Acceleration Structure'"); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index f5bf2d6809..1fc3ae6f76 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -174,6 +174,8 @@ enum ExecutionMode { ExecutionModeStencilRefUnchangedBackAMD = 5082, ExecutionModeStencilRefGreaterBackAMD = 5083, ExecutionModeStencilRefLessBackAMD = 5084, + ExecutionModeQuadDerivativesKHR = 5088, + ExecutionModeRequireFullQuadsKHR = 5089, ExecutionModeOutputLinesEXT = 5269, ExecutionModeOutputLinesNV = 5269, ExecutionModeOutputPrimitivesEXT = 5270, @@ -1040,6 +1042,7 @@ enum Capability { CapabilityImageReadWriteLodAMD = 5015, CapabilityInt64ImageEXT = 5016, CapabilityShaderClockKHR = 5055, + CapabilityQuadControlKHR = 5087, CapabilitySampleMaskOverrideCoverageNV = 5249, CapabilityGeometryShaderPassthroughNV = 5251, CapabilityShaderViewportIndexLayerEXT = 5254, @@ -1705,6 +1708,8 @@ enum Op { OpFragmentMaskFetchAMD = 5011, OpFragmentFetchAMD = 5012, OpReadClockKHR = 5056, + OpGroupNonUniformQuadAllKHR = 5110, + OpGroupNonUniformQuadAnyKHR = 5111, OpHitObjectRecordHitMotionNV = 5249, OpHitObjectRecordHitWithIndexMotionNV = 5250, OpHitObjectRecordMissMotionNV = 5251, @@ -2375,6 +2380,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break; case OpCopyLogical: *hasResult = true; *hasResultType = true; break; case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; diff --git a/Test/baseResults/spv.1.6.quad.frag.out b/Test/baseResults/spv.1.6.quad.frag.out new file mode 100644 index 0000000000..9c44581279 --- /dev/null +++ b/Test/baseResults/spv.1.6.quad.frag.out @@ -0,0 +1,76 @@ +spv.1.6.quad.frag +// Module Version 10600 +// Generated by (magic number): 8000b +// Id's are bound by 39 + + Capability Shader + Capability GroupNonUniform + Capability GroupNonUniformVote + Capability QuadControlKHR + Extension "SPV_KHR_quad_control" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 16 33 + ExecutionMode 4 QuadDerivativesKHR + ExecutionMode 4 RequireFullQuadsKHR + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_EXT_shader_quad_control" + SourceExtension "GL_KHR_shader_subgroup_basic" + SourceExtension "GL_KHR_shader_subgroup_vote" + Name 4 "main" + Name 8 "bTemp" + Name 16 "iInput" + Name 33 "bOut" + Decorate 16(iInput) Flat + Decorate 16(iInput) Location 0 + Decorate 33(bOut) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeBool + 7: TypePointer Function 6(bool) + 9: 6(bool) ConstantFalse + 14: TypeInt 32 1 + 15: TypePointer Input 14(int) + 16(iInput): 15(ptr) Variable Input + 18: 14(int) Constant 0 + 20: TypeInt 32 0 + 21: 20(int) Constant 3 + 32: TypePointer Output 14(int) + 33(bOut): 32(ptr) Variable Output + 35: 6(bool) ConstantTrue + 37: 14(int) Constant 1 + 4(main): 2 Function None 3 + 5: Label + 8(bTemp): 7(ptr) Variable Function + Store 8(bTemp) 9 + 10: 6(bool) Load 8(bTemp) + 11: 6(bool) LogicalNot 10 + SelectionMerge 13 None + BranchConditional 11 12 13 + 12: Label + 17: 14(int) Load 16(iInput) + 19: 6(bool) SGreaterThan 17 18 + 22: 6(bool) GroupNonUniformQuadAllKHR 19 + Branch 13 + 13: Label + 23: 6(bool) Phi 10 5 22 12 + Store 8(bTemp) 23 + 24: 6(bool) Load 8(bTemp) + 25: 6(bool) LogicalNot 24 + SelectionMerge 27 None + BranchConditional 25 26 27 + 26: Label + 28: 14(int) Load 16(iInput) + 29: 6(bool) SGreaterThan 28 18 + 30: 6(bool) GroupNonUniformQuadAnyKHR 29 + Branch 27 + 27: Label + 31: 6(bool) Phi 24 13 30 26 + Store 8(bTemp) 31 + 34: 6(bool) Load 8(bTemp) + 36: 6(bool) LogicalEqual 34 35 + 38: 14(int) Select 36 37 18 + Store 33(bOut) 38 + Return + FunctionEnd \ No newline at end of file diff --git a/Test/spv.1.6.quad.frag b/Test/spv.1.6.quad.frag new file mode 100644 index 0000000000..24f72de9f2 --- /dev/null +++ b/Test/spv.1.6.quad.frag @@ -0,0 +1,21 @@ +#version 460 core +#extension GL_KHR_shader_subgroup_basic: require +#extension GL_EXT_shader_quad_control: require +#extension GL_KHR_shader_subgroup_vote: require + +layout (full_quads) in; +layout (quad_derivatives) in; + +flat in int iInput; + +out int bOut; + + +void main(){ + bool bTemp = false; + + // EXT_shader_quad_control required begin + bTemp = bTemp || subgroupQuadAll(iInput > 0); // GL_KHR_shader_subgroup_vote + bTemp = bTemp || subgroupQuadAny(iInput > 0); // GL_KHR_shader_subgroup_vote + bOut = bTemp == true ? 1 : 0; +} \ No newline at end of file diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 1fb59e5bf5..f938f11858 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -852,6 +852,8 @@ class TQualifier { // -2048 as the default value indicating layoutSecondaryViewportRelative is not set layoutSecondaryViewportRelativeOffset = -2048; layoutShaderRecord = false; + layoutFullQuads = false; + layoutQuadDeriv = false; layoutHitObjectShaderRecordNV = false; layoutBindlessSampler = false; layoutBindlessImage = false; @@ -948,6 +950,8 @@ class TQualifier { bool layoutViewportRelative; int layoutSecondaryViewportRelativeOffset; bool layoutShaderRecord; + bool layoutFullQuads; + bool layoutQuadDeriv; bool layoutHitObjectShaderRecordNV; // GL_EXT_spirv_intrinsics @@ -1055,6 +1059,8 @@ class TQualifier { TLayoutFormat getFormat() const { return layoutFormat; } bool isPushConstant() const { return layoutPushConstant; } bool isShaderRecord() const { return layoutShaderRecord; } + bool isFullQuads() const { return layoutFullQuads; } + bool isQuadDeriv() const { return layoutQuadDeriv; } bool hasHitObjectShaderRecordNV() const { return layoutHitObjectShaderRecordNV; } bool hasBufferReference() const { return layoutBufferReference; } bool hasBufferReferenceAlign() const @@ -2206,6 +2212,10 @@ class TType { if (qualifier.layoutShaderRecord) appendStr(" shaderRecordNV"); + if (qualifier.layoutFullQuads) + appendStr(" full_quads"); + if (qualifier.layoutQuadDeriv) + appendStr(" quad_derivatives"); if (qualifier.layoutHitObjectShaderRecordNV) appendStr(" hitobjectshaderrecordnv"); diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index b0e154e92b..5308bca78a 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -538,6 +538,8 @@ enum TOperator { EOpSubgroupQuadSwapHorizontal, EOpSubgroupQuadSwapVertical, EOpSubgroupQuadSwapDiagonal, + EOpSubgroupQuadAll, + EOpSubgroupQuadAny, EOpSubgroupPartition, EOpSubgroupPartitionedAdd, diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index dddb5957f6..44551bcb44 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -2227,6 +2227,15 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV ); } + // GL_EXT_shader_quad_control + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 140)) { + commonBuiltins.append( + "bool subgroupQuadAll(bool);\n" + "bool subgroupQuadAny(bool);\n" + ); + } + if (profile != EEsProfile && version >= 460) { commonBuiltins.append( "bool anyInvocation(bool);" @@ -8779,6 +8788,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setVariableExtensions("gl_ShadingRateFlag4HorizontalPixelsEXT", 1, &E_GL_EXT_fragment_shading_rate); } + // GL_EXT_shader_quad_control + if ((profile != EEsProfile && version >= 140) || + (profile == EEsProfile && version >= 310)) { + symbolTable.setFunctionExtensions("subgroupQuadAll", 1, &E_GL_KHR_shader_subgroup_vote); + symbolTable.setFunctionExtensions("subgroupQuadAny", 1, &E_GL_KHR_shader_subgroup_vote); + } + // GL_EXT_shader_tile_image symbolTable.setFunctionExtensions("stencilAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); symbolTable.setFunctionExtensions("depthAttachmentReadEXT", 1, &E_GL_EXT_shader_tile_image); @@ -9977,6 +9993,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("shadow2DProjEXT", EOpTextureProj); } + // GL_EXT_shader_quad_control + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 140)) { + symbolTable.relateToOperator("subgroupQuadAll", EOpSubgroupQuadAll); + symbolTable.relateToOperator("subgroupQuadAny", EOpSubgroupQuadAny); + } + if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { symbolTable.relateToOperator("textureWeightedQCOM", EOpImageSampleWeightedQCOM); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f84dc9bec1..98148100a3 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -1351,6 +1351,10 @@ TIntermTyped* TParseContext::handleFunctionCall(const TSourceLoc& loc, TFunction // - a user function. // Error check for a function requiring specific extensions present. + if (builtIn && + (fnCandidate->getBuiltInOp() == EOpSubgroupQuadAll || fnCandidate->getBuiltInOp() == EOpSubgroupQuadAny)) + requireExtensions(loc, 1, &E_GL_EXT_shader_quad_control, fnCandidate->getName().c_str()); + if (builtIn && fnCandidate->getNumExtensions()) requireExtensions(loc, fnCandidate->getNumExtensions(), fnCandidate->getExtensions(), fnCandidate->getName().c_str()); @@ -3986,6 +3990,18 @@ void TParseContext::globalQualifierFixCheck(const TSourceLoc& loc, TQualifier& q // Storage qualifier isn't ready for memberQualifierCheck, we should skip invariantCheck for it. if (!isMemberCheck || structNestingLevel > 0) invariantCheck(loc, qualifier); + + if (qualifier.isFullQuads()) { + if (qualifier.storage != EvqVaryingIn) + error(loc, "can only apply to input layout", "full_quads ", ""); + intermediate.setReqFullQuadsMode(); + } + + if (qualifier.isQuadDeriv()) { + if (qualifier.storage != EvqVaryingIn) + error(loc, "can only apply to input layout", "quad_derivatives", ""); + intermediate.setQuadDerivMode(); + } } // @@ -5859,6 +5875,15 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi publicType.shaderQualifiers.layoutOverrideCoverage = true; return; } + if (id == "full_quads") + { + const char* feature = "full_quads qualifier"; + requireProfile(loc, ECompatibilityProfile | ECoreProfile | EEsProfile, feature); + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 140, E_GL_EXT_shader_quad_control, feature); + profileRequires(loc, EEsProfile, 310, E_GL_EXT_shader_quad_control, feature); + publicType.qualifier.layoutFullQuads = true; + return; + } } if (language == EShLangVertex || language == EShLangTessControl || @@ -5908,6 +5933,16 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi return; } + if (id == "quad_derivatives") + { + const char* feature = "quad_derivatives qualifier"; + requireProfile(loc, ECompatibilityProfile | ECoreProfile | EEsProfile, feature); + profileRequires(loc, ECoreProfile | ECompatibilityProfile, 140, E_GL_EXT_shader_quad_control, feature); + profileRequires(loc, EEsProfile, 310, E_GL_EXT_shader_quad_control, feature); + publicType.qualifier.layoutQuadDeriv = true; + return; + } + error(loc, "unrecognized layout identifier, or qualifier requires assignment (e.g., binding = 4)", id.c_str(), ""); } @@ -6336,6 +6371,10 @@ void TParseContext::mergeObjectLayoutQualifiers(TQualifier& dst, const TQualifie dst.layoutSecondaryViewportRelativeOffset = src.layoutSecondaryViewportRelativeOffset; if (src.layoutShaderRecord) dst.layoutShaderRecord = true; + if (src.layoutFullQuads) + dst.layoutFullQuads = true; + if (src.layoutQuadDeriv) + dst.layoutQuadDeriv = true; if (src.layoutBindlessSampler) dst.layoutBindlessSampler = true; if (src.layoutBindlessImage) diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 15d8dc69d8..b550ca2b08 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -357,6 +357,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_spirv_intrinsics] = EBhDisable; extensionBehavior[E_GL_EXT_mesh_shader] = EBhDisable; extensionBehavior[E_GL_EXT_opacity_micromap] = EBhDisable; + extensionBehavior[E_GL_EXT_shader_quad_control] = EBhDisable; extensionBehavior[E_GL_EXT_ray_tracing_position_fetch] = EBhDisable; extensionBehavior[E_GL_EXT_shader_tile_image] = EBhDisable; extensionBehavior[E_GL_EXT_texture_shadow_lod] = EBhDisable; @@ -584,6 +585,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_atomic_float2 1\n" "#define GL_EXT_fragment_shader_barycentric 1\n" + "#define GL_EXT_shader_quad_control 1\n" "#define GL_EXT_texture_array 1\n" ; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 504e3bc985..7716725774 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -215,6 +215,7 @@ const char* const E_GL_EXT_spirv_intrinsics = "GL_EXT_spirv_intr const char* const E_GL_EXT_fragment_shader_barycentric = "GL_EXT_fragment_shader_barycentric"; const char* const E_GL_EXT_mesh_shader = "GL_EXT_mesh_shader"; const char* const E_GL_EXT_opacity_micromap = "GL_EXT_opacity_micromap"; +const char* const E_GL_EXT_shader_quad_control = "GL_EXT_shader_quad_control"; const char* const E_GL_EXT_draw_instanced = "GL_EXT_draw_instanced"; const char* const E_GL_EXT_texture_array = "GL_EXT_texture_array"; const char* const E_GL_EXT_maximal_reconvergence = "GL_EXT_maximal_reconvergence"; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 8dcdc6792d..19691487af 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -597,6 +597,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpSubgroupQuadSwapHorizontal: out.debug << "subgroupQuadSwapHorizontal"; break; case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break; case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break; + case EOpSubgroupQuadAll: out.debug << "subgroupQuadAll"; break; + case EOpSubgroupQuadAny: out.debug << "subgroupQuadAny"; break; case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break; case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break; @@ -1032,6 +1034,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSubgroupQuadSwapHorizontal: out.debug << "subgroupQuadSwapHorizontal"; break; case EOpSubgroupQuadSwapVertical: out.debug << "subgroupQuadSwapVertical"; break; case EOpSubgroupQuadSwapDiagonal: out.debug << "subgroupQuadSwapDiagonal"; break; + case EOpSubgroupQuadAll: out.debug << "subgroupQuadAll"; break; + case EOpSubgroupQuadAny: out.debug << "subgroupQuadAny"; break; case EOpSubgroupPartition: out.debug << "subgroupPartitionNV"; break; case EOpSubgroupPartitionedAdd: out.debug << "subgroupPartitionedAddNV"; break; diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 3cd9580579..f723d94364 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -349,7 +349,8 @@ class TIntermediate { usePhysicalStorageBuffer(false), spirvRequirement(nullptr), spirvExecutionMode(nullptr), - uniformLocationBase(0) + uniformLocationBase(0), + quadDerivMode(false), reqFullQuadsMode(false) { localSize[0] = 1; localSize[1] = 1; @@ -858,6 +859,10 @@ class TIntermediate { void setXfbMode() { xfbMode = true; } bool getXfbMode() const { return xfbMode; } + void setQuadDerivMode(bool mode = true) { quadDerivMode = mode; } + bool getQuadDerivMode() const { return quadDerivMode; } + void setReqFullQuadsMode(bool mode = true) { reqFullQuadsMode = mode; } + bool getReqFullQuadsMode() const { return reqFullQuadsMode; } void setMultiStream() { multiStream = true; } bool isMultiStream() const { return multiStream; } bool setOutputPrimitive(TLayoutGeometry p) @@ -1197,6 +1202,8 @@ class TIntermediate { bool hlslFunctionality1; int blendEquations; // an 'or'ing of masks of shifts of TBlendEquationShift bool xfbMode; + bool quadDerivMode; + bool reqFullQuadsMode; std::vector xfbBuffers; // all the data we need to track per xfb buffer bool multiStream; bool layoutOverrideCoverage; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index c16bab61bb..13e35b7ac2 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -735,6 +735,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.1.6.specConstant.comp", "spv.1.6.samplerBuffer.frag", "spv.1.6.separate.frag", + "spv.1.6.quad.frag", })), FileNameAsCustomTestSuffix ); From ee62f721374def62edb11af4843484ba68146196 Mon Sep 17 00:00:00 2001 From: laddoc Date: Mon, 29 Jan 2024 14:51:04 +0800 Subject: [PATCH 396/594] Fix build issue. --- glslang/MachineIndependent/localintermediate.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index f723d94364..9d4bb8f889 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -349,8 +349,8 @@ class TIntermediate { usePhysicalStorageBuffer(false), spirvRequirement(nullptr), spirvExecutionMode(nullptr), - uniformLocationBase(0), - quadDerivMode(false), reqFullQuadsMode(false) + quadDerivMode(false), reqFullQuadsMode(false), + uniformLocationBase(0) { localSize[0] = 1; localSize[1] = 1; From 457fc12b54e893d15836da92f1a0bcadbce240f7 Mon Sep 17 00:00:00 2001 From: laddoc Date: Mon, 29 Jan 2024 15:03:48 +0800 Subject: [PATCH 397/594] Fix build issue. --- glslang/MachineIndependent/localintermediate.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 9d4bb8f889..db0367f5af 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -349,8 +349,8 @@ class TIntermediate { usePhysicalStorageBuffer(false), spirvRequirement(nullptr), spirvExecutionMode(nullptr), - quadDerivMode(false), reqFullQuadsMode(false), - uniformLocationBase(0) + uniformLocationBase(0), + quadDerivMode(false), reqFullQuadsMode(false) { localSize[0] = 1; localSize[1] = 1; @@ -1202,8 +1202,6 @@ class TIntermediate { bool hlslFunctionality1; int blendEquations; // an 'or'ing of masks of shifts of TBlendEquationShift bool xfbMode; - bool quadDerivMode; - bool reqFullQuadsMode; std::vector xfbBuffers; // all the data we need to track per xfb buffer bool multiStream; bool layoutOverrideCoverage; @@ -1246,6 +1244,8 @@ class TIntermediate { std::map bindlessImageModeCaller; std::unordered_map uniformLocationOverrides; int uniformLocationBase; + bool quadDerivMode; + bool reqFullQuadsMode; TNumericFeatures numericFeatures; std::unordered_map blockBackingOverrides; From 2ed435cb588077dd6b6087967b2f59d6631a7f30 Mon Sep 17 00:00:00 2001 From: laddoc Date: Mon, 29 Jan 2024 15:22:07 +0800 Subject: [PATCH 398/594] Update dependent repo's commits points. --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index 029d43182c..0c172a4162 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "de3d5acc04fd203e3e5120a00f168465ecb2e4e4" + "commit": "b951948eaa75b51466eaa22e8a89223966f300e4" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "ae6a8b39717523d96683bc0d20b541944e28072f" + "commit" : "5aa1dd8a11182ea9a6a0eabd6a9edc639d5dbecd" }, { "name": "googletest", From fc3bbbb0ffcf371bc2dd29492cf0494b8938eb8a Mon Sep 17 00:00:00 2001 From: laddoc Date: Mon, 29 Jan 2024 15:32:41 +0800 Subject: [PATCH 399/594] Update test output typo. --- Test/baseResults/spv.1.6.quad.frag.out | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Test/baseResults/spv.1.6.quad.frag.out b/Test/baseResults/spv.1.6.quad.frag.out index 9c44581279..7b31d7a1cf 100644 --- a/Test/baseResults/spv.1.6.quad.frag.out +++ b/Test/baseResults/spv.1.6.quad.frag.out @@ -73,4 +73,4 @@ spv.1.6.quad.frag 38: 14(int) Select 36 37 18 Store 33(bOut) 38 Return - FunctionEnd \ No newline at end of file + FunctionEnd From 343b9761d37f9b88d9480e31e13720639798b1f5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 06:37:25 +0000 Subject: [PATCH 400/594] Bump actions/upload-artifact from 4.2.0 to 4.3.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.2.0 to 4.3.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/694cdabd8bdb0f10b2cea11669e1bf5453eed0a6...26f96dfa697d77e81fd5907df203aa23a56210a8) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 35bc0cb321..14da26604f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@694cdabd8bdb0f10b2cea11669e1bf5453eed0a6 # v4.2.0 + uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 with: name: SARIF file path: results.sarif From 9679a505dfbbb9d3b93639b83a2fa35176a89e9b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 06:37:19 +0000 Subject: [PATCH 401/594] Bump hendrikmuhs/ccache-action from 1.2.11 to 1.2.12 Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.11 to 1.2.12. - [Release notes](https://github.com/hendrikmuhs/ccache-action/releases) - [Commits](https://github.com/hendrikmuhs/ccache-action/compare/2a51777f6f64b7b7bea213601acba8f5f4fdbe03...faf867a11c028c0b483fb2ae72b6fc8f7d842714) --- updated-dependencies: - dependency-name: hendrikmuhs/ccache-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_integration.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 75a04f4ca6..18c80305f8 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,7 +23,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 + uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py @@ -59,7 +59,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 + uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} - run: ./update_glslang_sources.py @@ -96,7 +96,7 @@ jobs: with: cmakeVersion: 3.17.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 + uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: key: linux_backcompat - run: ./update_glslang_sources.py @@ -168,7 +168,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 + uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: key: IOS - run: ./update_glslang_sources.py @@ -197,7 +197,7 @@ jobs: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 + uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: key: android-${{ matrix.LEGACY }} - run: ./update_glslang_sources.py @@ -223,7 +223,7 @@ jobs: python-version: '3.7' - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@2a51777f6f64b7b7bea213601acba8f5f4fdbe03 # v1.2.11 + uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: key: ubuntu-emscripten - uses: mymindstorm/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14 From 9aaba3766512bea5c7723c9c56926d232a9a730a Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jan 2024 06:37:13 +0000 Subject: [PATCH 402/594] Bump github/codeql-action from 3.23.1 to 3.23.2 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.1 to 3.23.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/0b21cf2492b6b02c465a3e5d7c473717ad7721ba...b7bf0a3ed3ecfa44160715d7c442788f65f0f923) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 14da26604f..572491025d 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@0b21cf2492b6b02c465a3e5d7c473717ad7721ba # v3.23.1 + uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 with: sarif_file: results.sarif From 82e0d00b32d2245efd9da8196f139bc0564765d1 Mon Sep 17 00:00:00 2001 From: Alexandre Bouvier Date: Wed, 24 Jan 2024 21:34:14 +0000 Subject: [PATCH 403/594] cmake: add missing SPIRV-Tools-opt dependency --- CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5cdd3e31ab..1191bc44e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -334,6 +334,10 @@ if(PROJECT_IS_TOP_LEVEL) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[ @PACKAGE_INIT@ + include(CMakeFindDependencyMacro) + if(@ENABLE_OPT@) + find_dependency(SPIRV-Tools-opt) + endif() @INSTALL_CONFIG_UNIX@ include("@PACKAGE_PATH_EXPORT_TARGETS@") ]=]) @@ -341,9 +345,8 @@ if(PROJECT_IS_TOP_LEVEL) set(PATH_EXPORT_TARGETS "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}/glslang-targets.cmake") if(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") set(INSTALL_CONFIG_UNIX [=[ - include(CMakeFindDependencyMacro) set(THREADS_PREFER_PTHREAD_FLAG ON) - find_dependency(Threads REQUIRED) + find_dependency(Threads) ]=]) endif() configure_package_config_file( From ff49bc4c83b447c38e7a0c6c52265cff11826142 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 06:29:37 +0000 Subject: [PATCH 404/594] Bump lukka/get-cmake from 3.28.1 to 3.28.2 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.28.1 to 3.28.2. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/2654d8ee382b9b6cbbfe6487653b8629b4e062c8...23a189c2ed38ec264f5026ce2303e5b7a664345c) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index e68f60ca0a..4c24a17af0 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 18c80305f8..d0343b4e9c 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -92,7 +92,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -124,7 +124,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -148,7 +148,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -166,7 +166,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -195,7 +195,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -221,7 +221,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@2654d8ee382b9b6cbbfe6487653b8629b4e062c8 # v3.28.1 + - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: From 8c3dbb3596e552d8e89c16350b07373ac36262bb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Feb 2024 06:29:42 +0000 Subject: [PATCH 405/594] Bump github/codeql-action from 3.23.2 to 3.24.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.23.2 to 3.24.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b7bf0a3ed3ecfa44160715d7c442788f65f0f923...e8893c57a1f3a2b659b6b55564fdfdbbd2982911) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 572491025d..a3249198e3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b7bf0a3ed3ecfa44160715d7c442788f65f0f923 # v3.23.2 + uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 with: sarif_file: results.sarif From b1f7affe94ea108de7e38ee764f855a2130da398 Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Tue, 6 Feb 2024 15:20:16 +0000 Subject: [PATCH 406/594] Add GL_KHR_shader_subgroup_rotate support Co-authored-by: Neil Hickey Co-authored-by: Stuart Brady Signed-off-by: Sven van Haastregt --- SPIRV/GLSL.ext.KHR.h | 2 + SPIRV/GlslangToSpv.cpp | 11 +- SPIRV/doc.cpp | 9 + .../glsl.450.subgroupRotate.comp.out | 2177 +++++++++++++++++ .../glsl.es320.subgroupRotate.comp.out | 1833 ++++++++++++++ .../spv.subgroupExtendedTypesRotate.comp.out | 711 ++++++ ...pv.subgroupExtendedTypesRotateNeg.comp.out | 61 + Test/baseResults/spv.subgroupRotate.comp.out | 528 ++++ Test/glsl.450.subgroupRotate.comp | 73 + Test/glsl.es320.subgroupRotate.comp | 62 + Test/spv.subgroupExtendedTypesRotate.comp | 100 + Test/spv.subgroupExtendedTypesRotateNeg.comp | 100 + Test/spv.subgroupRotate.comp | 73 + glslang/Include/intermediate.h | 4 +- glslang/MachineIndependent/Initialize.cpp | 8 +- glslang/MachineIndependent/Versions.cpp | 3 +- glslang/MachineIndependent/Versions.h | 3 +- glslang/MachineIndependent/intermOut.cpp | 6 +- gtests/AST.FromFile.cpp | 3 + gtests/Spv.FromFile.cpp | 5 +- 20 files changed, 5765 insertions(+), 7 deletions(-) create mode 100644 Test/baseResults/glsl.450.subgroupRotate.comp.out create mode 100644 Test/baseResults/glsl.es320.subgroupRotate.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out create mode 100644 Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out create mode 100644 Test/baseResults/spv.subgroupRotate.comp.out create mode 100644 Test/glsl.450.subgroupRotate.comp create mode 100644 Test/glsl.es320.subgroupRotate.comp create mode 100644 Test/spv.subgroupExtendedTypesRotate.comp create mode 100644 Test/spv.subgroupExtendedTypesRotateNeg.comp create mode 100644 Test/spv.subgroupRotate.comp diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 83ca83f5e8..b72aeaf9c6 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -1,5 +1,6 @@ /* ** Copyright (c) 2014-2020 The Khronos Group Inc. +** Copyright (C) 2022-2024 Arm Limited. ** Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. ** ** Permission is hereby granted, free of charge, to any person obtaining a copy @@ -58,5 +59,6 @@ static const char* const E_SPV_AMD_shader_early_and_late_fragment_tests = "SPV_A static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_tracing_position_fetch"; static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix"; static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence"; +static const char* const E_SPV_KHR_subgroup_rotate = "SPV_KHR_subgroup_rotate"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 30232e355c..b53c519d61 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2014-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -8318,6 +8318,11 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s builder.addCapability(spv::CapabilityGroupNonUniform); builder.addCapability(spv::CapabilityGroupNonUniformBallot); break; + case glslang::EOpSubgroupRotate: + case glslang::EOpSubgroupClusteredRotate: + builder.addExtension(spv::E_SPV_KHR_subgroup_rotate); + builder.addCapability(spv::CapabilityGroupNonUniformRotateKHR); + break; case glslang::EOpSubgroupShuffle: case glslang::EOpSubgroupShuffleXor: builder.addCapability(spv::CapabilityGroupNonUniform); @@ -8425,6 +8430,8 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s case glslang::EOpSubgroupShuffleXor: opCode = spv::OpGroupNonUniformShuffleXor; break; case glslang::EOpSubgroupShuffleUp: opCode = spv::OpGroupNonUniformShuffleUp; break; case glslang::EOpSubgroupShuffleDown: opCode = spv::OpGroupNonUniformShuffleDown; break; + case glslang::EOpSubgroupRotate: + case glslang::EOpSubgroupClusteredRotate: opCode = spv::OpGroupNonUniformRotateKHR; break; case glslang::EOpSubgroupAdd: case glslang::EOpSubgroupInclusiveAdd: case glslang::EOpSubgroupExclusiveAdd: @@ -8851,6 +8858,8 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: case glslang::EOpSubgroupShuffleXor: case glslang::EOpSubgroupShuffleUp: case glslang::EOpSubgroupShuffleDown: + case glslang::EOpSubgroupRotate: + case glslang::EOpSubgroupClusteredRotate: case glslang::EOpSubgroupClusteredAdd: case glslang::EOpSubgroupClusteredMul: case glslang::EOpSubgroupClusteredMin: diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index a342eee38c..da9db9423b 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1,5 +1,6 @@ // // Copyright (C) 2014-2015 LunarG, Inc. +// Copyright (C) 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -942,6 +943,7 @@ const char* CapabilityString(int info) case CapabilitySubgroupBallotKHR: return "SubgroupBallotKHR"; case CapabilityDrawParameters: return "DrawParameters"; case CapabilitySubgroupVoteKHR: return "SubgroupVoteKHR"; + case CapabilityGroupNonUniformRotateKHR: return "CapabilityGroupNonUniformRotateKHR"; case CapabilityStorageUniformBufferBlock16: return "StorageUniformBufferBlock16"; case CapabilityStorageUniform16: return "StorageUniform16"; @@ -1483,6 +1485,8 @@ const char* OpcodeString(int op) case OpEmitMeshTasksEXT: return "OpEmitMeshTasksEXT"; case OpSetMeshOutputsEXT: return "OpSetMeshOutputsEXT"; + case OpGroupNonUniformRotateKHR: return "OpGroupNonUniformRotateKHR"; + case OpTypeRayQueryKHR: return "OpTypeRayQueryKHR"; case OpRayQueryInitializeKHR: return "OpRayQueryInitializeKHR"; case OpRayQueryTerminateKHR: return "OpRayQueryTerminateKHR"; @@ -2901,6 +2905,11 @@ void Parameterize() InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandScope, "'Execution'"); InstructionDesc[OpSubgroupAllEqualKHR].operands.push(OperandId, "'Predicate'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandScope, "'Execution'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'X'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'Delta'"); + InstructionDesc[OpGroupNonUniformRotateKHR].operands.push(OperandId, "'ClusterSize'", true); + InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Value'"); InstructionDesc[OpSubgroupReadInvocationKHR].operands.push(OperandId, "'Index'"); diff --git a/Test/baseResults/glsl.450.subgroupRotate.comp.out b/Test/baseResults/glsl.450.subgroupRotate.comp.out new file mode 100644 index 0000000000..31d025b6d9 --- /dev/null +++ b/Test/baseResults/glsl.450.subgroupRotate.comp.out @@ -0,0 +1,2177 @@ +glsl.450.subgroupRotate.comp +Shader version: 450 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:20 Function Definition: main( ( global void) +0:20 Function Parameters: +0:22 Sequence +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'delta' ( temp uint) +0:22 delta: direct index for structure (layout( column_major shared) readonly buffer uint) +0:22 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:22 Constant: +0:22 0 (const int) +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'delta' ( temp uint) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 subgroupRotate ( global float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 'delta' ( temp uint) +0:25 move second child to first child ( temp 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'delta' ( temp uint) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 subgroupRotate ( global 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 'delta' ( temp uint) +0:26 move second child to first child ( temp 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'delta' ( temp uint) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 subgroupRotate ( global 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 Constant: +0:26 2 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 'delta' ( temp uint) +0:27 move second child to first child ( temp 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'delta' ( temp uint) +0:27 Constant: +0:27 0 (const int) +0:27 subgroupRotate ( global 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 Constant: +0:27 3 (const int) +0:27 Constant: +0:27 0 (const int) +0:27 'delta' ( temp uint) +0:29 move second child to first child ( temp int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'delta' ( temp uint) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 subgroupRotate ( global int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 'delta' ( temp uint) +0:30 move second child to first child ( temp 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'delta' ( temp uint) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 subgroupRotate ( global 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 'delta' ( temp uint) +0:31 move second child to first child ( temp 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'delta' ( temp uint) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 subgroupRotate ( global 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 'delta' ( temp uint) +0:32 move second child to first child ( temp 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'delta' ( temp uint) +0:32 Constant: +0:32 1 (const int) +0:32 subgroupRotate ( global 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 Constant: +0:32 3 (const int) +0:32 Constant: +0:32 1 (const int) +0:32 'delta' ( temp uint) +0:34 move second child to first child ( temp uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'delta' ( temp uint) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 subgroupRotate ( global uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 'delta' ( temp uint) +0:35 move second child to first child ( temp 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'delta' ( temp uint) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 subgroupRotate ( global 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 'delta' ( temp uint) +0:36 move second child to first child ( temp 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'delta' ( temp uint) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 Constant: +0:36 2 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp uint) +0:37 move second child to first child ( temp 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'delta' ( temp uint) +0:37 Constant: +0:37 2 (const int) +0:37 subgroupRotate ( global 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 Constant: +0:37 3 (const int) +0:37 Constant: +0:37 2 (const int) +0:37 'delta' ( temp uint) +0:39 move second child to first child ( temp double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'delta' ( temp uint) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 subgroupRotate ( global double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 'delta' ( temp uint) +0:40 move second child to first child ( temp 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'delta' ( temp uint) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 subgroupRotate ( global 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 'delta' ( temp uint) +0:41 move second child to first child ( temp 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'delta' ( temp uint) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 subgroupRotate ( global 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 Constant: +0:41 2 (const int) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 'delta' ( temp uint) +0:42 move second child to first child ( temp 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'delta' ( temp uint) +0:42 Constant: +0:42 3 (const int) +0:42 subgroupRotate ( global 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 Constant: +0:42 3 (const int) +0:42 Constant: +0:42 3 (const int) +0:42 'delta' ( temp uint) +0:44 move second child to first child ( temp int) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'delta' ( temp uint) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Convert bool to int ( temp int) +0:44 subgroupRotate ( global bool) +0:44 Compare Less Than ( temp bool) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 'delta' ( temp uint) +0:45 move second child to first child ( temp 2-component vector of int) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'delta' ( temp uint) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Convert bool to int ( temp 2-component vector of int) +0:45 subgroupRotate ( global 2-component vector of bool) +0:45 Compare Less Than ( global 2-component vector of bool) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 0 (const int) +0:45 'delta' ( temp uint) +0:46 move second child to first child ( temp 3-component vector of int) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'delta' ( temp uint) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Convert bool to int ( temp 3-component vector of int) +0:46 subgroupRotate ( global 3-component vector of bool) +0:46 Compare Less Than ( global 3-component vector of bool) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 'delta' ( temp uint) +0:47 move second child to first child ( temp 4-component vector of int) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'delta' ( temp uint) +0:47 Constant: +0:47 1 (const int) +0:47 Convert bool to int ( temp 4-component vector of int) +0:47 subgroupRotate ( global 4-component vector of bool) +0:47 Compare Less Than ( global 4-component vector of bool) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 'delta' ( temp uint) +0:49 move second child to first child ( temp float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 subgroupClusteredRotate ( global float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 subgroupClusteredRotate ( global 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 subgroupClusteredRotate ( global 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 1 (const uint) +0:52 move second child to first child ( temp 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 0 (const int) +0:52 subgroupClusteredRotate ( global 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 Constant: +0:52 3 (const int) +0:52 Constant: +0:52 0 (const int) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 1 (const uint) +0:54 move second child to first child ( temp int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 subgroupClusteredRotate ( global int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 subgroupClusteredRotate ( global 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 Constant: +0:56 2 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const uint) +0:57 move second child to first child ( temp 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const int) +0:57 subgroupClusteredRotate ( global 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 Constant: +0:57 3 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const uint) +0:59 move second child to first child ( temp uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 subgroupClusteredRotate ( global uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 subgroupClusteredRotate ( global 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 subgroupClusteredRotate ( global 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 Constant: +0:61 2 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 1 (const uint) +0:62 move second child to first child ( temp 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 2 (const int) +0:62 subgroupClusteredRotate ( global 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 Constant: +0:62 3 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 1 (const uint) +0:64 move second child to first child ( temp double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 subgroupClusteredRotate ( global double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 1 (const uint) +0:65 move second child to first child ( temp 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 subgroupClusteredRotate ( global 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 Constant: +0:65 1 (const int) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 1 (const uint) +0:66 move second child to first child ( temp 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 subgroupClusteredRotate ( global 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 Constant: +0:66 2 (const int) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 1 (const uint) +0:67 move second child to first child ( temp 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 3 (const int) +0:67 subgroupClusteredRotate ( global 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 Constant: +0:67 3 (const int) +0:67 Constant: +0:67 3 (const int) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 1 (const uint) +0:69 move second child to first child ( temp int) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Convert bool to int ( temp int) +0:69 subgroupClusteredRotate ( global bool) +0:69 Compare Less Than ( temp bool) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const uint) +0:70 move second child to first child ( temp 2-component vector of int) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Convert bool to int ( temp 2-component vector of int) +0:70 subgroupClusteredRotate ( global 2-component vector of bool) +0:70 Compare Less Than ( global 2-component vector of bool) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 0 (const int) +0:70 0 (const int) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const uint) +0:71 move second child to first child ( temp 3-component vector of int) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Convert bool to int ( temp 3-component vector of int) +0:71 subgroupClusteredRotate ( global 3-component vector of bool) +0:71 Compare Less Than ( global 3-component vector of bool) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Constant: +0:71 0 (const int) +0:71 0 (const int) +0:71 0 (const int) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const uint) +0:72 move second child to first child ( temp 4-component vector of int) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const int) +0:72 Convert bool to int ( temp 4-component vector of int) +0:72 subgroupClusteredRotate ( global 4-component vector of bool) +0:72 Compare Less Than ( global 4-component vector of bool) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) + + +Linked compute stage: + + +Shader version: 450 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:20 Function Definition: main( ( global void) +0:20 Function Parameters: +0:22 Sequence +0:22 Sequence +0:22 move second child to first child ( temp uint) +0:22 'delta' ( temp uint) +0:22 delta: direct index for structure (layout( column_major shared) readonly buffer uint) +0:22 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:22 Constant: +0:22 0 (const int) +0:24 move second child to first child ( temp float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'delta' ( temp uint) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 subgroupRotate ( global float) +0:24 direct index ( temp float) +0:24 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 'delta' ( temp uint) +0:25 move second child to first child ( temp 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'delta' ( temp uint) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 subgroupRotate ( global 2-component vector of float) +0:25 vector swizzle ( temp 2-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 'delta' ( temp uint) +0:26 move second child to first child ( temp 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'delta' ( temp uint) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 subgroupRotate ( global 3-component vector of float) +0:26 vector swizzle ( temp 3-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:26 Constant: +0:26 2 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 Sequence +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 1 (const int) +0:26 Constant: +0:26 2 (const int) +0:26 'delta' ( temp uint) +0:27 move second child to first child ( temp 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'delta' ( temp uint) +0:27 Constant: +0:27 0 (const int) +0:27 subgroupRotate ( global 4-component vector of float) +0:27 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:27 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:27 Constant: +0:27 3 (const int) +0:27 Constant: +0:27 0 (const int) +0:27 'delta' ( temp uint) +0:29 move second child to first child ( temp int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'delta' ( temp uint) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 subgroupRotate ( global int) +0:29 direct index ( temp int) +0:29 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 0 (const int) +0:29 'delta' ( temp uint) +0:30 move second child to first child ( temp 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'delta' ( temp uint) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 subgroupRotate ( global 2-component vector of int) +0:30 vector swizzle ( temp 2-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 'delta' ( temp uint) +0:31 move second child to first child ( temp 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'delta' ( temp uint) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 subgroupRotate ( global 3-component vector of int) +0:31 vector swizzle ( temp 3-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:31 Constant: +0:31 2 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Sequence +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 Constant: +0:31 2 (const int) +0:31 'delta' ( temp uint) +0:32 move second child to first child ( temp 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'delta' ( temp uint) +0:32 Constant: +0:32 1 (const int) +0:32 subgroupRotate ( global 4-component vector of int) +0:32 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:32 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:32 Constant: +0:32 3 (const int) +0:32 Constant: +0:32 1 (const int) +0:32 'delta' ( temp uint) +0:34 move second child to first child ( temp uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'delta' ( temp uint) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 subgroupRotate ( global uint) +0:34 direct index ( temp uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Constant: +0:34 0 (const int) +0:34 'delta' ( temp uint) +0:35 move second child to first child ( temp 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'delta' ( temp uint) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 subgroupRotate ( global 2-component vector of uint) +0:35 vector swizzle ( temp 2-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 'delta' ( temp uint) +0:36 move second child to first child ( temp 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'delta' ( temp uint) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global 3-component vector of uint) +0:36 vector swizzle ( temp 3-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:36 Constant: +0:36 2 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 Sequence +0:36 Constant: +0:36 0 (const int) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp uint) +0:37 move second child to first child ( temp 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'delta' ( temp uint) +0:37 Constant: +0:37 2 (const int) +0:37 subgroupRotate ( global 4-component vector of uint) +0:37 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:37 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:37 Constant: +0:37 3 (const int) +0:37 Constant: +0:37 2 (const int) +0:37 'delta' ( temp uint) +0:39 move second child to first child ( temp double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'delta' ( temp uint) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 subgroupRotate ( global double) +0:39 direct index ( temp double) +0:39 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 3 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 'delta' ( temp uint) +0:40 move second child to first child ( temp 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'delta' ( temp uint) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 subgroupRotate ( global 2-component vector of double) +0:40 vector swizzle ( temp 2-component vector of double) +0:40 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 3 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 'delta' ( temp uint) +0:41 move second child to first child ( temp 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'delta' ( temp uint) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 subgroupRotate ( global 3-component vector of double) +0:41 vector swizzle ( temp 3-component vector of double) +0:41 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:41 Constant: +0:41 2 (const int) +0:41 Constant: +0:41 3 (const int) +0:41 Sequence +0:41 Constant: +0:41 0 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 2 (const int) +0:41 'delta' ( temp uint) +0:42 move second child to first child ( temp 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'delta' ( temp uint) +0:42 Constant: +0:42 3 (const int) +0:42 subgroupRotate ( global 4-component vector of double) +0:42 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:42 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:42 Constant: +0:42 3 (const int) +0:42 Constant: +0:42 3 (const int) +0:42 'delta' ( temp uint) +0:44 move second child to first child ( temp int) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'delta' ( temp uint) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Convert bool to int ( temp int) +0:44 subgroupRotate ( global bool) +0:44 Compare Less Than ( temp bool) +0:44 direct index ( temp int) +0:44 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 'delta' ( temp uint) +0:45 move second child to first child ( temp 2-component vector of int) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'delta' ( temp uint) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Convert bool to int ( temp 2-component vector of int) +0:45 subgroupRotate ( global 2-component vector of bool) +0:45 Compare Less Than ( global 2-component vector of bool) +0:45 vector swizzle ( temp 2-component vector of int) +0:45 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 0 (const int) +0:45 'delta' ( temp uint) +0:46 move second child to first child ( temp 3-component vector of int) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'delta' ( temp uint) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Convert bool to int ( temp 3-component vector of int) +0:46 subgroupRotate ( global 3-component vector of bool) +0:46 Compare Less Than ( global 3-component vector of bool) +0:46 vector swizzle ( temp 3-component vector of int) +0:46 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Sequence +0:46 Constant: +0:46 0 (const int) +0:46 Constant: +0:46 1 (const int) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 0 (const int) +0:46 0 (const int) +0:46 'delta' ( temp uint) +0:47 move second child to first child ( temp 4-component vector of int) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'delta' ( temp uint) +0:47 Constant: +0:47 1 (const int) +0:47 Convert bool to int ( temp 4-component vector of int) +0:47 subgroupRotate ( global 4-component vector of bool) +0:47 Compare Less Than ( global 4-component vector of bool) +0:47 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:47 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 1 (const int) +0:47 Constant: +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 0 (const int) +0:47 'delta' ( temp uint) +0:49 move second child to first child ( temp float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 subgroupClusteredRotate ( global float) +0:49 direct index ( temp float) +0:49 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 0 (const int) +0:49 'delta' ( temp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 subgroupClusteredRotate ( global 2-component vector of float) +0:50 vector swizzle ( temp 2-component vector of float) +0:50 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 0 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 'delta' ( temp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 subgroupClusteredRotate ( global 3-component vector of float) +0:51 vector swizzle ( temp 3-component vector of float) +0:51 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 0 (const int) +0:51 Sequence +0:51 Constant: +0:51 0 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 Constant: +0:51 2 (const int) +0:51 'delta' ( temp uint) +0:51 Constant: +0:51 1 (const uint) +0:52 move second child to first child ( temp 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 0 (const int) +0:52 subgroupClusteredRotate ( global 4-component vector of float) +0:52 f4: direct index for structure (layout( column_major shared) buffer 4-component vector of float) +0:52 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:52 Constant: +0:52 3 (const int) +0:52 Constant: +0:52 0 (const int) +0:52 'delta' ( temp uint) +0:52 Constant: +0:52 1 (const uint) +0:54 move second child to first child ( temp int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 subgroupClusteredRotate ( global int) +0:54 direct index ( temp int) +0:54 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 0 (const int) +0:54 'delta' ( temp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 subgroupClusteredRotate ( global 2-component vector of int) +0:55 vector swizzle ( temp 2-component vector of int) +0:55 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 'delta' ( temp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global 3-component vector of int) +0:56 vector swizzle ( temp 3-component vector of int) +0:56 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:56 Constant: +0:56 2 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Sequence +0:56 Constant: +0:56 0 (const int) +0:56 Constant: +0:56 1 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp uint) +0:56 Constant: +0:56 1 (const uint) +0:57 move second child to first child ( temp 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const int) +0:57 subgroupClusteredRotate ( global 4-component vector of int) +0:57 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:57 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:57 Constant: +0:57 3 (const int) +0:57 Constant: +0:57 1 (const int) +0:57 'delta' ( temp uint) +0:57 Constant: +0:57 1 (const uint) +0:59 move second child to first child ( temp uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 subgroupClusteredRotate ( global uint) +0:59 direct index ( temp uint) +0:59 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 2 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 'delta' ( temp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 subgroupClusteredRotate ( global 2-component vector of uint) +0:60 vector swizzle ( temp 2-component vector of uint) +0:60 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 'delta' ( temp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 subgroupClusteredRotate ( global 3-component vector of uint) +0:61 vector swizzle ( temp 3-component vector of uint) +0:61 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:61 Constant: +0:61 2 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 Sequence +0:61 Constant: +0:61 0 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 2 (const int) +0:61 'delta' ( temp uint) +0:61 Constant: +0:61 1 (const uint) +0:62 move second child to first child ( temp 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 2 (const int) +0:62 subgroupClusteredRotate ( global 4-component vector of uint) +0:62 u4: direct index for structure (layout( column_major shared) buffer 4-component vector of uint) +0:62 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:62 Constant: +0:62 3 (const int) +0:62 Constant: +0:62 2 (const int) +0:62 'delta' ( temp uint) +0:62 Constant: +0:62 1 (const uint) +0:64 move second child to first child ( temp double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 subgroupClusteredRotate ( global double) +0:64 direct index ( temp double) +0:64 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:64 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:64 Constant: +0:64 0 (const int) +0:64 Constant: +0:64 3 (const int) +0:64 Constant: +0:64 0 (const int) +0:64 'delta' ( temp uint) +0:64 Constant: +0:64 1 (const uint) +0:65 move second child to first child ( temp 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 subgroupClusteredRotate ( global 2-component vector of double) +0:65 vector swizzle ( temp 2-component vector of double) +0:65 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:65 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:65 Constant: +0:65 1 (const int) +0:65 Constant: +0:65 3 (const int) +0:65 Sequence +0:65 Constant: +0:65 0 (const int) +0:65 Constant: +0:65 1 (const int) +0:65 'delta' ( temp uint) +0:65 Constant: +0:65 1 (const uint) +0:66 move second child to first child ( temp 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 subgroupClusteredRotate ( global 3-component vector of double) +0:66 vector swizzle ( temp 3-component vector of double) +0:66 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:66 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:66 Constant: +0:66 2 (const int) +0:66 Constant: +0:66 3 (const int) +0:66 Sequence +0:66 Constant: +0:66 0 (const int) +0:66 Constant: +0:66 1 (const int) +0:66 Constant: +0:66 2 (const int) +0:66 'delta' ( temp uint) +0:66 Constant: +0:66 1 (const uint) +0:67 move second child to first child ( temp 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 3 (const int) +0:67 subgroupClusteredRotate ( global 4-component vector of double) +0:67 d4: direct index for structure (layout( column_major shared) buffer 4-component vector of double) +0:67 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:67 Constant: +0:67 3 (const int) +0:67 Constant: +0:67 3 (const int) +0:67 'delta' ( temp uint) +0:67 Constant: +0:67 1 (const uint) +0:69 move second child to first child ( temp int) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Convert bool to int ( temp int) +0:69 subgroupClusteredRotate ( global bool) +0:69 Compare Less Than ( temp bool) +0:69 direct index ( temp int) +0:69 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:69 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 1 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 Constant: +0:69 0 (const int) +0:69 'delta' ( temp uint) +0:69 Constant: +0:69 1 (const uint) +0:70 move second child to first child ( temp 2-component vector of int) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Convert bool to int ( temp 2-component vector of int) +0:70 subgroupClusteredRotate ( global 2-component vector of bool) +0:70 Compare Less Than ( global 2-component vector of bool) +0:70 vector swizzle ( temp 2-component vector of int) +0:70 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:70 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Sequence +0:70 Constant: +0:70 0 (const int) +0:70 Constant: +0:70 1 (const int) +0:70 Constant: +0:70 0 (const int) +0:70 0 (const int) +0:70 'delta' ( temp uint) +0:70 Constant: +0:70 1 (const uint) +0:71 move second child to first child ( temp 3-component vector of int) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Convert bool to int ( temp 3-component vector of int) +0:71 subgroupClusteredRotate ( global 3-component vector of bool) +0:71 Compare Less Than ( global 3-component vector of bool) +0:71 vector swizzle ( temp 3-component vector of int) +0:71 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:71 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Sequence +0:71 Constant: +0:71 0 (const int) +0:71 Constant: +0:71 1 (const int) +0:71 Constant: +0:71 2 (const int) +0:71 Constant: +0:71 0 (const int) +0:71 0 (const int) +0:71 0 (const int) +0:71 'delta' ( temp uint) +0:71 Constant: +0:71 1 (const uint) +0:72 move second child to first child ( temp 4-component vector of int) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 indirect index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const int) +0:72 Convert bool to int ( temp 4-component vector of int) +0:72 subgroupClusteredRotate ( global 4-component vector of bool) +0:72 Compare Less Than ( global 4-component vector of bool) +0:72 i4: direct index for structure (layout( column_major shared) buffer 4-component vector of int) +0:72 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 1 (const int) +0:72 Constant: +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 0 (const int) +0:72 'delta' ( temp uint) +0:72 Constant: +0:72 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer 4-component vector of float f4, layout( column_major shared) buffer 4-component vector of int i4, layout( column_major shared) buffer 4-component vector of uint u4, layout( column_major shared) buffer 4-component vector of double d4}) + diff --git a/Test/baseResults/glsl.es320.subgroupRotate.comp.out b/Test/baseResults/glsl.es320.subgroupRotate.comp.out new file mode 100644 index 0000000000..8aaa371751 --- /dev/null +++ b/Test/baseResults/glsl.es320.subgroupRotate.comp.out @@ -0,0 +1,1833 @@ +glsl.es320.subgroupRotate.comp +Shader version: 320 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:19 Function Definition: main( ( global void) +0:19 Function Parameters: +0:21 Sequence +0:21 Sequence +0:21 move second child to first child ( temp highp uint) +0:21 'delta' ( temp highp uint) +0:21 delta: direct index for structure (layout( column_major shared) readonly buffer highp uint) +0:21 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:21 Constant: +0:21 0 (const int) +0:23 move second child to first child ( temp highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 subgroupRotate ( global highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 'delta' ( temp highp uint) +0:24 move second child to first child ( temp highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 subgroupRotate ( global highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 'delta' ( temp highp uint) +0:25 move second child to first child ( temp highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 subgroupRotate ( global highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 2 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 'delta' ( temp highp uint) +0:26 move second child to first child ( temp highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 subgroupRotate ( global highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 3 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 'delta' ( temp highp uint) +0:28 move second child to first child ( temp highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 subgroupRotate ( global highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 'delta' ( temp highp uint) +0:29 move second child to first child ( temp highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 subgroupRotate ( global highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 'delta' ( temp highp uint) +0:30 move second child to first child ( temp highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 subgroupRotate ( global highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 2 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 'delta' ( temp highp uint) +0:31 move second child to first child ( temp highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 subgroupRotate ( global highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 3 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 'delta' ( temp highp uint) +0:33 move second child to first child ( temp highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 subgroupRotate ( global highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 'delta' ( temp highp uint) +0:34 move second child to first child ( temp highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 subgroupRotate ( global highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 'delta' ( temp highp uint) +0:35 move second child to first child ( temp highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 subgroupRotate ( global highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 2 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 'delta' ( temp highp uint) +0:36 move second child to first child ( temp highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 3 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp highp uint) +0:38 move second child to first child ( temp highp int) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Convert bool to int ( temp highp int) +0:38 subgroupRotate ( global bool, operation at highp) +0:38 Compare Less Than ( temp bool) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 'delta' ( temp highp uint) +0:39 move second child to first child ( temp highp 2-component vector of int) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Convert bool to int ( temp highp 2-component vector of int) +0:39 subgroupRotate ( global 2-component vector of bool, operation at highp) +0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 0 (const int) +0:39 'delta' ( temp highp uint) +0:40 move second child to first child ( temp highp 3-component vector of int) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Convert bool to int ( temp highp 3-component vector of int) +0:40 subgroupRotate ( global 3-component vector of bool, operation at highp) +0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Constant: +0:40 0 (const int) +0:40 0 (const int) +0:40 0 (const int) +0:40 'delta' ( temp highp uint) +0:41 move second child to first child ( temp highp 4-component vector of int) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Convert bool to int ( temp highp 4-component vector of int) +0:41 subgroupRotate ( global 4-component vector of bool, operation at highp) +0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 'delta' ( temp highp uint) +0:43 move second child to first child ( temp highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 2 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 subgroupClusteredRotate ( global highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 'delta' ( temp highp uint) +0:43 Constant: +0:43 1 (const uint) +0:44 move second child to first child ( temp highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 2 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 subgroupClusteredRotate ( global highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 'delta' ( temp highp uint) +0:44 Constant: +0:44 1 (const uint) +0:45 move second child to first child ( temp highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 subgroupClusteredRotate ( global highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 'delta' ( temp highp uint) +0:45 Constant: +0:45 1 (const uint) +0:46 move second child to first child ( temp highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 subgroupClusteredRotate ( global highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 3 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 'delta' ( temp highp uint) +0:46 Constant: +0:46 1 (const uint) +0:48 move second child to first child ( temp highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 2 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 subgroupClusteredRotate ( global highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 0 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 'delta' ( temp highp uint) +0:48 Constant: +0:48 1 (const uint) +0:49 move second child to first child ( temp highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 2 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 subgroupClusteredRotate ( global highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 1 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 'delta' ( temp highp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 subgroupClusteredRotate ( global highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 'delta' ( temp highp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 subgroupClusteredRotate ( global highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 3 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 'delta' ( temp highp uint) +0:51 Constant: +0:51 1 (const uint) +0:53 move second child to first child ( temp highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 3 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 subgroupClusteredRotate ( global highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 'delta' ( temp highp uint) +0:53 Constant: +0:53 1 (const uint) +0:54 move second child to first child ( temp highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 3 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 subgroupClusteredRotate ( global highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 'delta' ( temp highp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 3 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 subgroupClusteredRotate ( global highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 2 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 'delta' ( temp highp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp highp uint) +0:56 Constant: +0:56 1 (const uint) +0:58 move second child to first child ( temp highp int) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 3 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Convert bool to int ( temp highp int) +0:58 subgroupClusteredRotate ( global bool, operation at highp) +0:58 Compare Less Than ( temp bool) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 'delta' ( temp highp uint) +0:58 Constant: +0:58 1 (const uint) +0:59 move second child to first child ( temp highp 2-component vector of int) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 3 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Convert bool to int ( temp highp 2-component vector of int) +0:59 subgroupClusteredRotate ( global 2-component vector of bool, operation at highp) +0:59 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 0 (const int) +0:59 'delta' ( temp highp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp highp 3-component vector of int) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 3 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Convert bool to int ( temp highp 3-component vector of int) +0:60 subgroupClusteredRotate ( global 3-component vector of bool, operation at highp) +0:60 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Constant: +0:60 0 (const int) +0:60 0 (const int) +0:60 0 (const int) +0:60 'delta' ( temp highp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp highp 4-component vector of int) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 3 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Convert bool to int ( temp highp 4-component vector of int) +0:61 subgroupClusteredRotate ( global 4-component vector of bool, operation at highp) +0:61 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 'delta' ( temp highp uint) +0:61 Constant: +0:61 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) + + +Linked compute stage: + + +Shader version: 320 +Requested GL_KHR_shader_subgroup_rotate +local_size = (8, 8, 1) +0:? Sequence +0:19 Function Definition: main( ( global void) +0:19 Function Parameters: +0:21 Sequence +0:21 Sequence +0:21 move second child to first child ( temp highp uint) +0:21 'delta' ( temp highp uint) +0:21 delta: direct index for structure (layout( column_major shared) readonly buffer highp uint) +0:21 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:21 Constant: +0:21 0 (const int) +0:23 move second child to first child ( temp highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 subgroupRotate ( global highp float) +0:23 direct index ( temp highp float) +0:23 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:23 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 Constant: +0:23 0 (const int) +0:23 'delta' ( temp highp uint) +0:24 move second child to first child ( temp highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 subgroupRotate ( global highp 2-component vector of float) +0:24 vector swizzle ( temp highp 2-component vector of float) +0:24 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:24 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:24 Constant: +0:24 1 (const int) +0:24 Constant: +0:24 0 (const int) +0:24 Sequence +0:24 Constant: +0:24 0 (const int) +0:24 Constant: +0:24 1 (const int) +0:24 'delta' ( temp highp uint) +0:25 move second child to first child ( temp highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 subgroupRotate ( global highp 3-component vector of float) +0:25 vector swizzle ( temp highp 3-component vector of float) +0:25 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:25 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:25 Constant: +0:25 2 (const int) +0:25 Constant: +0:25 0 (const int) +0:25 Sequence +0:25 Constant: +0:25 0 (const int) +0:25 Constant: +0:25 1 (const int) +0:25 Constant: +0:25 2 (const int) +0:25 'delta' ( temp highp uint) +0:26 move second child to first child ( temp highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 0 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 subgroupRotate ( global highp 4-component vector of float) +0:26 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:26 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:26 Constant: +0:26 3 (const int) +0:26 Constant: +0:26 0 (const int) +0:26 'delta' ( temp highp uint) +0:28 move second child to first child ( temp highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 subgroupRotate ( global highp int) +0:28 direct index ( temp highp int) +0:28 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:28 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:28 Constant: +0:28 0 (const int) +0:28 Constant: +0:28 1 (const int) +0:28 Constant: +0:28 0 (const int) +0:28 'delta' ( temp highp uint) +0:29 move second child to first child ( temp highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 subgroupRotate ( global highp 2-component vector of int) +0:29 vector swizzle ( temp highp 2-component vector of int) +0:29 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:29 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:29 Constant: +0:29 1 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 Sequence +0:29 Constant: +0:29 0 (const int) +0:29 Constant: +0:29 1 (const int) +0:29 'delta' ( temp highp uint) +0:30 move second child to first child ( temp highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 subgroupRotate ( global highp 3-component vector of int) +0:30 vector swizzle ( temp highp 3-component vector of int) +0:30 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:30 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:30 Constant: +0:30 2 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Sequence +0:30 Constant: +0:30 0 (const int) +0:30 Constant: +0:30 1 (const int) +0:30 Constant: +0:30 2 (const int) +0:30 'delta' ( temp highp uint) +0:31 move second child to first child ( temp highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 0 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 subgroupRotate ( global highp 4-component vector of int) +0:31 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:31 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:31 Constant: +0:31 3 (const int) +0:31 Constant: +0:31 1 (const int) +0:31 'delta' ( temp highp uint) +0:33 move second child to first child ( temp highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 1 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 subgroupRotate ( global highp uint) +0:33 direct index ( temp highp uint) +0:33 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:33 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:33 Constant: +0:33 0 (const int) +0:33 Constant: +0:33 2 (const int) +0:33 Constant: +0:33 0 (const int) +0:33 'delta' ( temp highp uint) +0:34 move second child to first child ( temp highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 subgroupRotate ( global highp 2-component vector of uint) +0:34 vector swizzle ( temp highp 2-component vector of uint) +0:34 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:34 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:34 Constant: +0:34 1 (const int) +0:34 Constant: +0:34 2 (const int) +0:34 Sequence +0:34 Constant: +0:34 0 (const int) +0:34 Constant: +0:34 1 (const int) +0:34 'delta' ( temp highp uint) +0:35 move second child to first child ( temp highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 subgroupRotate ( global highp 3-component vector of uint) +0:35 vector swizzle ( temp highp 3-component vector of uint) +0:35 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:35 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:35 Constant: +0:35 2 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 Sequence +0:35 Constant: +0:35 0 (const int) +0:35 Constant: +0:35 1 (const int) +0:35 Constant: +0:35 2 (const int) +0:35 'delta' ( temp highp uint) +0:36 move second child to first child ( temp highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 1 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 subgroupRotate ( global highp 4-component vector of uint) +0:36 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:36 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:36 Constant: +0:36 3 (const int) +0:36 Constant: +0:36 2 (const int) +0:36 'delta' ( temp highp uint) +0:38 move second child to first child ( temp highp int) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Convert bool to int ( temp highp int) +0:38 subgroupRotate ( global bool, operation at highp) +0:38 Compare Less Than ( temp bool) +0:38 direct index ( temp highp int) +0:38 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:38 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 1 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 Constant: +0:38 0 (const int) +0:38 'delta' ( temp highp uint) +0:39 move second child to first child ( temp highp 2-component vector of int) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Convert bool to int ( temp highp 2-component vector of int) +0:39 subgroupRotate ( global 2-component vector of bool, operation at highp) +0:39 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:39 vector swizzle ( temp highp 2-component vector of int) +0:39 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:39 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Sequence +0:39 Constant: +0:39 0 (const int) +0:39 Constant: +0:39 1 (const int) +0:39 Constant: +0:39 0 (const int) +0:39 0 (const int) +0:39 'delta' ( temp highp uint) +0:40 move second child to first child ( temp highp 3-component vector of int) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Convert bool to int ( temp highp 3-component vector of int) +0:40 subgroupRotate ( global 3-component vector of bool, operation at highp) +0:40 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:40 vector swizzle ( temp highp 3-component vector of int) +0:40 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:40 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Sequence +0:40 Constant: +0:40 0 (const int) +0:40 Constant: +0:40 1 (const int) +0:40 Constant: +0:40 2 (const int) +0:40 Constant: +0:40 0 (const int) +0:40 0 (const int) +0:40 0 (const int) +0:40 'delta' ( temp highp uint) +0:41 move second child to first child ( temp highp 4-component vector of int) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Convert bool to int ( temp highp 4-component vector of int) +0:41 subgroupRotate ( global 4-component vector of bool, operation at highp) +0:41 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:41 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:41 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 1 (const int) +0:41 Constant: +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 0 (const int) +0:41 'delta' ( temp highp uint) +0:43 move second child to first child ( temp highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 2 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 subgroupClusteredRotate ( global highp float) +0:43 direct index ( temp highp float) +0:43 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:43 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 Constant: +0:43 0 (const int) +0:43 'delta' ( temp highp uint) +0:43 Constant: +0:43 1 (const uint) +0:44 move second child to first child ( temp highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 2 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 subgroupClusteredRotate ( global highp 2-component vector of float) +0:44 vector swizzle ( temp highp 2-component vector of float) +0:44 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:44 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:44 Constant: +0:44 1 (const int) +0:44 Constant: +0:44 0 (const int) +0:44 Sequence +0:44 Constant: +0:44 0 (const int) +0:44 Constant: +0:44 1 (const int) +0:44 'delta' ( temp highp uint) +0:44 Constant: +0:44 1 (const uint) +0:45 move second child to first child ( temp highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 subgroupClusteredRotate ( global highp 3-component vector of float) +0:45 vector swizzle ( temp highp 3-component vector of float) +0:45 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:45 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:45 Constant: +0:45 2 (const int) +0:45 Constant: +0:45 0 (const int) +0:45 Sequence +0:45 Constant: +0:45 0 (const int) +0:45 Constant: +0:45 1 (const int) +0:45 Constant: +0:45 2 (const int) +0:45 'delta' ( temp highp uint) +0:45 Constant: +0:45 1 (const uint) +0:46 move second child to first child ( temp highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 2 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 subgroupClusteredRotate ( global highp 4-component vector of float) +0:46 f4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of float) +0:46 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:46 Constant: +0:46 3 (const int) +0:46 Constant: +0:46 0 (const int) +0:46 'delta' ( temp highp uint) +0:46 Constant: +0:46 1 (const uint) +0:48 move second child to first child ( temp highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 2 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 subgroupClusteredRotate ( global highp int) +0:48 direct index ( temp highp int) +0:48 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:48 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:48 Constant: +0:48 0 (const int) +0:48 Constant: +0:48 1 (const int) +0:48 Constant: +0:48 0 (const int) +0:48 'delta' ( temp highp uint) +0:48 Constant: +0:48 1 (const uint) +0:49 move second child to first child ( temp highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 2 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 subgroupClusteredRotate ( global highp 2-component vector of int) +0:49 vector swizzle ( temp highp 2-component vector of int) +0:49 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:49 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:49 Constant: +0:49 1 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 Sequence +0:49 Constant: +0:49 0 (const int) +0:49 Constant: +0:49 1 (const int) +0:49 'delta' ( temp highp uint) +0:49 Constant: +0:49 1 (const uint) +0:50 move second child to first child ( temp highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 subgroupClusteredRotate ( global highp 3-component vector of int) +0:50 vector swizzle ( temp highp 3-component vector of int) +0:50 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:50 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:50 Constant: +0:50 2 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Sequence +0:50 Constant: +0:50 0 (const int) +0:50 Constant: +0:50 1 (const int) +0:50 Constant: +0:50 2 (const int) +0:50 'delta' ( temp highp uint) +0:50 Constant: +0:50 1 (const uint) +0:51 move second child to first child ( temp highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 2 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 subgroupClusteredRotate ( global highp 4-component vector of int) +0:51 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:51 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:51 Constant: +0:51 3 (const int) +0:51 Constant: +0:51 1 (const int) +0:51 'delta' ( temp highp uint) +0:51 Constant: +0:51 1 (const uint) +0:53 move second child to first child ( temp highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 3 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 subgroupClusteredRotate ( global highp uint) +0:53 direct index ( temp highp uint) +0:53 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:53 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:53 Constant: +0:53 0 (const int) +0:53 Constant: +0:53 2 (const int) +0:53 Constant: +0:53 0 (const int) +0:53 'delta' ( temp highp uint) +0:53 Constant: +0:53 1 (const uint) +0:54 move second child to first child ( temp highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 3 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 subgroupClusteredRotate ( global highp 2-component vector of uint) +0:54 vector swizzle ( temp highp 2-component vector of uint) +0:54 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:54 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:54 Constant: +0:54 1 (const int) +0:54 Constant: +0:54 2 (const int) +0:54 Sequence +0:54 Constant: +0:54 0 (const int) +0:54 Constant: +0:54 1 (const int) +0:54 'delta' ( temp highp uint) +0:54 Constant: +0:54 1 (const uint) +0:55 move second child to first child ( temp highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 3 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 subgroupClusteredRotate ( global highp 3-component vector of uint) +0:55 vector swizzle ( temp highp 3-component vector of uint) +0:55 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:55 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:55 Constant: +0:55 2 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 Sequence +0:55 Constant: +0:55 0 (const int) +0:55 Constant: +0:55 1 (const int) +0:55 Constant: +0:55 2 (const int) +0:55 'delta' ( temp highp uint) +0:55 Constant: +0:55 1 (const uint) +0:56 move second child to first child ( temp highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 subgroupClusteredRotate ( global highp 4-component vector of uint) +0:56 u4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of uint) +0:56 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:56 Constant: +0:56 3 (const int) +0:56 Constant: +0:56 2 (const int) +0:56 'delta' ( temp highp uint) +0:56 Constant: +0:56 1 (const uint) +0:58 move second child to first child ( temp highp int) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 3 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Convert bool to int ( temp highp int) +0:58 subgroupClusteredRotate ( global bool, operation at highp) +0:58 Compare Less Than ( temp bool) +0:58 direct index ( temp highp int) +0:58 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:58 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 1 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 Constant: +0:58 0 (const int) +0:58 'delta' ( temp highp uint) +0:58 Constant: +0:58 1 (const uint) +0:59 move second child to first child ( temp highp 2-component vector of int) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 3 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Convert bool to int ( temp highp 2-component vector of int) +0:59 subgroupClusteredRotate ( global 2-component vector of bool, operation at highp) +0:59 Compare Less Than ( global 2-component vector of bool, operation at highp) +0:59 vector swizzle ( temp highp 2-component vector of int) +0:59 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:59 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Sequence +0:59 Constant: +0:59 0 (const int) +0:59 Constant: +0:59 1 (const int) +0:59 Constant: +0:59 0 (const int) +0:59 0 (const int) +0:59 'delta' ( temp highp uint) +0:59 Constant: +0:59 1 (const uint) +0:60 move second child to first child ( temp highp 3-component vector of int) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 3 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Convert bool to int ( temp highp 3-component vector of int) +0:60 subgroupClusteredRotate ( global 3-component vector of bool, operation at highp) +0:60 Compare Less Than ( global 3-component vector of bool, operation at highp) +0:60 vector swizzle ( temp highp 3-component vector of int) +0:60 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:60 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Sequence +0:60 Constant: +0:60 0 (const int) +0:60 Constant: +0:60 1 (const int) +0:60 Constant: +0:60 2 (const int) +0:60 Constant: +0:60 0 (const int) +0:60 0 (const int) +0:60 0 (const int) +0:60 'delta' ( temp highp uint) +0:60 Constant: +0:60 1 (const uint) +0:61 move second child to first child ( temp highp 4-component vector of int) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 3 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Convert bool to int ( temp highp 4-component vector of int) +0:61 subgroupClusteredRotate ( global 4-component vector of bool, operation at highp) +0:61 Compare Less Than ( global 4-component vector of bool, operation at highp) +0:61 i4: direct index for structure (layout( column_major shared) buffer highp 4-component vector of int) +0:61 direct index (layout( binding=0 column_major shared) temp block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 1 (const int) +0:61 Constant: +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 0 (const int) +0:61 'delta' ( temp highp uint) +0:61 Constant: +0:61 1 (const uint) +0:? Linker Objects +0:? 'gl_WorkGroupSize' ( const highp 3-component vector of uint WorkGroupSize) +0:? 8 (const uint) +0:? 8 (const uint) +0:? 1 (const uint) +0:? 'ro' (layout( column_major shared) readonly buffer block{layout( column_major shared) readonly buffer highp uint delta}) +0:? 'data' (layout( binding=0 column_major shared) buffer 4-element array of block{layout( column_major shared) buffer highp 4-component vector of float f4, layout( column_major shared) buffer highp 4-component vector of int i4, layout( column_major shared) buffer highp 4-component vector of uint u4}) + diff --git a/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out new file mode 100644 index 0000000000..5900db4fb1 --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out @@ -0,0 +1,711 @@ +spv.subgroupExtendedTypesRotate.comp +// Module Version 10300 +// Generated by (magic number): 8000b +// Id's are bound by 553 + + Capability Shader + Capability Float16 + Capability Int64 + Capability Int16 + Capability Int8 + Capability StorageUniformBufferBlock16 + Capability StorageBuffer8BitAccess + Capability CapabilityGroupNonUniformRotateKHR + Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_subgroup_rotate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int16" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int64" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_int8" + SourceExtension "GL_EXT_shader_subgroup_extended_types_float16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int16" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int64" + SourceExtension "GL_EXT_shader_subgroup_extended_types_int8" + SourceExtension "GL_KHR_shader_subgroup_rotate" + Name 4 "main" + Name 8 "delta" + Name 9 "roblock" + MemberName 9(roblock) 0 "delta" + Name 11 "ro" + Name 31 "Buffers" + MemberName 31(Buffers) 0 "i8" + MemberName 31(Buffers) 1 "u8" + MemberName 31(Buffers) 2 "i16" + MemberName 31(Buffers) 3 "u16" + MemberName 31(Buffers) 4 "i64" + MemberName 31(Buffers) 5 "u64" + MemberName 31(Buffers) 6 "f16" + Name 35 "data" + MemberDecorate 9(roblock) 0 NonWritable + MemberDecorate 9(roblock) 0 Offset 0 + Decorate 9(roblock) Block + Decorate 11(ro) DescriptorSet 0 + Decorate 11(ro) Binding 1 + MemberDecorate 31(Buffers) 0 Offset 0 + MemberDecorate 31(Buffers) 1 Offset 4 + MemberDecorate 31(Buffers) 2 Offset 8 + MemberDecorate 31(Buffers) 3 Offset 16 + MemberDecorate 31(Buffers) 4 Offset 32 + MemberDecorate 31(Buffers) 5 Offset 64 + MemberDecorate 31(Buffers) 6 Offset 96 + Decorate 31(Buffers) Block + Decorate 35(data) DescriptorSet 0 + Decorate 35(data) Binding 0 + Decorate 552 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9(roblock): TypeStruct 6(int) + 10: TypePointer StorageBuffer 9(roblock) + 11(ro): 10(ptr) Variable StorageBuffer + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: TypePointer StorageBuffer 6(int) + 17: TypeInt 8 1 + 18: TypeVector 17(int8_t) 4 + 19: TypeInt 8 0 + 20: TypeVector 19(int8_t) 4 + 21: TypeInt 16 1 + 22: TypeVector 21(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 4 + 25: TypeInt 64 1 + 26: TypeVector 25(int64_t) 4 + 27: TypeInt 64 0 + 28: TypeVector 27(int64_t) 4 + 29: TypeFloat 16 + 30: TypeVector 29(float16_t) 4 + 31(Buffers): TypeStruct 18(i8vec4) 20(i8vec4) 22(i16vec4) 24(i16vec4) 26(i64vec4) 28(i64vec4) 30(f16vec4) + 32: 6(int) Constant 4 + 33: TypeArray 31(Buffers) 32 + 34: TypePointer StorageBuffer 33 + 35(data): 34(ptr) Variable StorageBuffer + 37: 6(int) Constant 0 + 38: TypePointer StorageBuffer 17(int8_t) + 42: 6(int) Constant 3 + 46: 12(int) Constant 1 + 47: TypeVector 17(int8_t) 2 + 48: TypePointer StorageBuffer 18(i8vec4) + 56: 6(int) Constant 1 + 60: 12(int) Constant 2 + 61: TypeVector 17(int8_t) 3 + 71: 6(int) Constant 2 + 75: 12(int) Constant 3 + 116: TypePointer StorageBuffer 19(int8_t) + 123: TypeVector 19(int8_t) 2 + 124: TypePointer StorageBuffer 20(i8vec4) + 135: TypeVector 19(int8_t) 3 + 188: TypePointer StorageBuffer 21(int16_t) + 195: TypeVector 21(int16_t) 2 + 196: TypePointer StorageBuffer 22(i16vec4) + 207: TypeVector 21(int16_t) 3 + 260: TypePointer StorageBuffer 23(int16_t) + 267: TypeVector 23(int16_t) 2 + 268: TypePointer StorageBuffer 24(i16vec4) + 279: TypeVector 23(int16_t) 3 + 332: 12(int) Constant 4 + 333: TypePointer StorageBuffer 25(int64_t) + 340: TypeVector 25(int64_t) 2 + 341: TypePointer StorageBuffer 26(i64vec4) + 352: TypeVector 25(int64_t) 3 + 405: 12(int) Constant 5 + 406: TypePointer StorageBuffer 27(int64_t) + 413: TypeVector 27(int64_t) 2 + 414: TypePointer StorageBuffer 28(i64vec4) + 425: TypeVector 27(int64_t) 3 + 478: 12(int) Constant 6 + 479: TypePointer StorageBuffer 29(float16_t) + 486: TypeVector 29(float16_t) 2 + 487: TypePointer StorageBuffer 30(f16vec4) + 498: TypeVector 29(float16_t) 3 + 550: TypeVector 6(int) 3 + 551: 6(int) Constant 8 + 552: 550(ivec3) ConstantComposite 551 56 56 + 4(main): 2 Function None 3 + 5: Label + 8(delta): 7(ptr) Variable Function + 15: 14(ptr) AccessChain 11(ro) 13 + 16: 6(int) Load 15 + Store 8(delta) 16 + 36: 6(int) Load 8(delta) + 39: 38(ptr) AccessChain 35(data) 13 13 37 + 40: 17(int8_t) Load 39 + 41: 6(int) Load 8(delta) + 43: 17(int8_t) GroupNonUniformRotateKHR 42 40 41 + 44: 38(ptr) AccessChain 35(data) 36 13 37 + Store 44 43 + 45: 6(int) Load 8(delta) + 49: 48(ptr) AccessChain 35(data) 46 13 + 50: 18(i8vec4) Load 49 + 51: 47(i8vec2) VectorShuffle 50 50 0 1 + 52: 6(int) Load 8(delta) + 53: 47(i8vec2) GroupNonUniformRotateKHR 42 51 52 + 54: 38(ptr) AccessChain 35(data) 45 13 37 + 55: 17(int8_t) CompositeExtract 53 0 + Store 54 55 + 57: 38(ptr) AccessChain 35(data) 45 13 56 + 58: 17(int8_t) CompositeExtract 53 1 + Store 57 58 + 59: 6(int) Load 8(delta) + 62: 48(ptr) AccessChain 35(data) 60 13 + 63: 18(i8vec4) Load 62 + 64: 61(i8vec3) VectorShuffle 63 63 0 1 2 + 65: 6(int) Load 8(delta) + 66: 61(i8vec3) GroupNonUniformRotateKHR 42 64 65 + 67: 38(ptr) AccessChain 35(data) 59 13 37 + 68: 17(int8_t) CompositeExtract 66 0 + Store 67 68 + 69: 38(ptr) AccessChain 35(data) 59 13 56 + 70: 17(int8_t) CompositeExtract 66 1 + Store 69 70 + 72: 38(ptr) AccessChain 35(data) 59 13 71 + 73: 17(int8_t) CompositeExtract 66 2 + Store 72 73 + 74: 6(int) Load 8(delta) + 76: 48(ptr) AccessChain 35(data) 75 13 + 77: 18(i8vec4) Load 76 + 78: 6(int) Load 8(delta) + 79: 18(i8vec4) GroupNonUniformRotateKHR 42 77 78 + 80: 48(ptr) AccessChain 35(data) 74 13 + Store 80 79 + 81: 6(int) Load 8(delta) + 82: 38(ptr) AccessChain 35(data) 13 13 37 + 83: 17(int8_t) Load 82 + 84: 6(int) Load 8(delta) + 85: 17(int8_t) GroupNonUniformRotateKHR 42 83 84 56 + 86: 38(ptr) AccessChain 35(data) 81 13 37 + Store 86 85 + 87: 6(int) Load 8(delta) + 88: 48(ptr) AccessChain 35(data) 46 13 + 89: 18(i8vec4) Load 88 + 90: 47(i8vec2) VectorShuffle 89 89 0 1 + 91: 6(int) Load 8(delta) + 92: 47(i8vec2) GroupNonUniformRotateKHR 42 90 91 56 + 93: 38(ptr) AccessChain 35(data) 87 13 37 + 94: 17(int8_t) CompositeExtract 92 0 + Store 93 94 + 95: 38(ptr) AccessChain 35(data) 87 13 56 + 96: 17(int8_t) CompositeExtract 92 1 + Store 95 96 + 97: 6(int) Load 8(delta) + 98: 48(ptr) AccessChain 35(data) 60 13 + 99: 18(i8vec4) Load 98 + 100: 61(i8vec3) VectorShuffle 99 99 0 1 2 + 101: 6(int) Load 8(delta) + 102: 61(i8vec3) GroupNonUniformRotateKHR 42 100 101 56 + 103: 38(ptr) AccessChain 35(data) 97 13 37 + 104: 17(int8_t) CompositeExtract 102 0 + Store 103 104 + 105: 38(ptr) AccessChain 35(data) 97 13 56 + 106: 17(int8_t) CompositeExtract 102 1 + Store 105 106 + 107: 38(ptr) AccessChain 35(data) 97 13 71 + 108: 17(int8_t) CompositeExtract 102 2 + Store 107 108 + 109: 6(int) Load 8(delta) + 110: 48(ptr) AccessChain 35(data) 75 13 + 111: 18(i8vec4) Load 110 + 112: 6(int) Load 8(delta) + 113: 18(i8vec4) GroupNonUniformRotateKHR 42 111 112 56 + 114: 48(ptr) AccessChain 35(data) 109 13 + Store 114 113 + 115: 6(int) Load 8(delta) + 117: 116(ptr) AccessChain 35(data) 13 46 37 + 118: 19(int8_t) Load 117 + 119: 6(int) Load 8(delta) + 120: 19(int8_t) GroupNonUniformRotateKHR 42 118 119 + 121: 116(ptr) AccessChain 35(data) 115 46 37 + Store 121 120 + 122: 6(int) Load 8(delta) + 125: 124(ptr) AccessChain 35(data) 46 46 + 126: 20(i8vec4) Load 125 + 127: 123(i8vec2) VectorShuffle 126 126 0 1 + 128: 6(int) Load 8(delta) + 129: 123(i8vec2) GroupNonUniformRotateKHR 42 127 128 + 130: 116(ptr) AccessChain 35(data) 122 46 37 + 131: 19(int8_t) CompositeExtract 129 0 + Store 130 131 + 132: 116(ptr) AccessChain 35(data) 122 46 56 + 133: 19(int8_t) CompositeExtract 129 1 + Store 132 133 + 134: 6(int) Load 8(delta) + 136: 124(ptr) AccessChain 35(data) 60 46 + 137: 20(i8vec4) Load 136 + 138: 135(i8vec3) VectorShuffle 137 137 0 1 2 + 139: 6(int) Load 8(delta) + 140: 135(i8vec3) GroupNonUniformRotateKHR 42 138 139 + 141: 116(ptr) AccessChain 35(data) 134 46 37 + 142: 19(int8_t) CompositeExtract 140 0 + Store 141 142 + 143: 116(ptr) AccessChain 35(data) 134 46 56 + 144: 19(int8_t) CompositeExtract 140 1 + Store 143 144 + 145: 116(ptr) AccessChain 35(data) 134 46 71 + 146: 19(int8_t) CompositeExtract 140 2 + Store 145 146 + 147: 6(int) Load 8(delta) + 148: 124(ptr) AccessChain 35(data) 75 46 + 149: 20(i8vec4) Load 148 + 150: 6(int) Load 8(delta) + 151: 20(i8vec4) GroupNonUniformRotateKHR 42 149 150 + 152: 124(ptr) AccessChain 35(data) 147 46 + Store 152 151 + 153: 6(int) Load 8(delta) + 154: 116(ptr) AccessChain 35(data) 13 46 37 + 155: 19(int8_t) Load 154 + 156: 6(int) Load 8(delta) + 157: 19(int8_t) GroupNonUniformRotateKHR 42 155 156 56 + 158: 116(ptr) AccessChain 35(data) 153 46 37 + Store 158 157 + 159: 6(int) Load 8(delta) + 160: 124(ptr) AccessChain 35(data) 46 46 + 161: 20(i8vec4) Load 160 + 162: 123(i8vec2) VectorShuffle 161 161 0 1 + 163: 6(int) Load 8(delta) + 164: 123(i8vec2) GroupNonUniformRotateKHR 42 162 163 56 + 165: 116(ptr) AccessChain 35(data) 159 46 37 + 166: 19(int8_t) CompositeExtract 164 0 + Store 165 166 + 167: 116(ptr) AccessChain 35(data) 159 46 56 + 168: 19(int8_t) CompositeExtract 164 1 + Store 167 168 + 169: 6(int) Load 8(delta) + 170: 124(ptr) AccessChain 35(data) 60 46 + 171: 20(i8vec4) Load 170 + 172: 135(i8vec3) VectorShuffle 171 171 0 1 2 + 173: 6(int) Load 8(delta) + 174: 135(i8vec3) GroupNonUniformRotateKHR 42 172 173 56 + 175: 116(ptr) AccessChain 35(data) 169 46 37 + 176: 19(int8_t) CompositeExtract 174 0 + Store 175 176 + 177: 116(ptr) AccessChain 35(data) 169 46 56 + 178: 19(int8_t) CompositeExtract 174 1 + Store 177 178 + 179: 116(ptr) AccessChain 35(data) 169 46 71 + 180: 19(int8_t) CompositeExtract 174 2 + Store 179 180 + 181: 6(int) Load 8(delta) + 182: 124(ptr) AccessChain 35(data) 75 46 + 183: 20(i8vec4) Load 182 + 184: 6(int) Load 8(delta) + 185: 20(i8vec4) GroupNonUniformRotateKHR 42 183 184 56 + 186: 124(ptr) AccessChain 35(data) 181 46 + Store 186 185 + 187: 6(int) Load 8(delta) + 189: 188(ptr) AccessChain 35(data) 13 60 37 + 190: 21(int16_t) Load 189 + 191: 6(int) Load 8(delta) + 192: 21(int16_t) GroupNonUniformRotateKHR 42 190 191 + 193: 188(ptr) AccessChain 35(data) 187 60 37 + Store 193 192 + 194: 6(int) Load 8(delta) + 197: 196(ptr) AccessChain 35(data) 46 60 + 198: 22(i16vec4) Load 197 + 199:195(i16vec2) VectorShuffle 198 198 0 1 + 200: 6(int) Load 8(delta) + 201:195(i16vec2) GroupNonUniformRotateKHR 42 199 200 + 202: 188(ptr) AccessChain 35(data) 194 60 37 + 203: 21(int16_t) CompositeExtract 201 0 + Store 202 203 + 204: 188(ptr) AccessChain 35(data) 194 60 56 + 205: 21(int16_t) CompositeExtract 201 1 + Store 204 205 + 206: 6(int) Load 8(delta) + 208: 196(ptr) AccessChain 35(data) 60 60 + 209: 22(i16vec4) Load 208 + 210:207(i16vec3) VectorShuffle 209 209 0 1 2 + 211: 6(int) Load 8(delta) + 212:207(i16vec3) GroupNonUniformRotateKHR 42 210 211 + 213: 188(ptr) AccessChain 35(data) 206 60 37 + 214: 21(int16_t) CompositeExtract 212 0 + Store 213 214 + 215: 188(ptr) AccessChain 35(data) 206 60 56 + 216: 21(int16_t) CompositeExtract 212 1 + Store 215 216 + 217: 188(ptr) AccessChain 35(data) 206 60 71 + 218: 21(int16_t) CompositeExtract 212 2 + Store 217 218 + 219: 6(int) Load 8(delta) + 220: 196(ptr) AccessChain 35(data) 75 60 + 221: 22(i16vec4) Load 220 + 222: 6(int) Load 8(delta) + 223: 22(i16vec4) GroupNonUniformRotateKHR 42 221 222 + 224: 196(ptr) AccessChain 35(data) 219 60 + Store 224 223 + 225: 6(int) Load 8(delta) + 226: 188(ptr) AccessChain 35(data) 13 60 37 + 227: 21(int16_t) Load 226 + 228: 6(int) Load 8(delta) + 229: 21(int16_t) GroupNonUniformRotateKHR 42 227 228 56 + 230: 188(ptr) AccessChain 35(data) 225 60 37 + Store 230 229 + 231: 6(int) Load 8(delta) + 232: 196(ptr) AccessChain 35(data) 46 60 + 233: 22(i16vec4) Load 232 + 234:195(i16vec2) VectorShuffle 233 233 0 1 + 235: 6(int) Load 8(delta) + 236:195(i16vec2) GroupNonUniformRotateKHR 42 234 235 56 + 237: 188(ptr) AccessChain 35(data) 231 60 37 + 238: 21(int16_t) CompositeExtract 236 0 + Store 237 238 + 239: 188(ptr) AccessChain 35(data) 231 60 56 + 240: 21(int16_t) CompositeExtract 236 1 + Store 239 240 + 241: 6(int) Load 8(delta) + 242: 196(ptr) AccessChain 35(data) 60 60 + 243: 22(i16vec4) Load 242 + 244:207(i16vec3) VectorShuffle 243 243 0 1 2 + 245: 6(int) Load 8(delta) + 246:207(i16vec3) GroupNonUniformRotateKHR 42 244 245 56 + 247: 188(ptr) AccessChain 35(data) 241 60 37 + 248: 21(int16_t) CompositeExtract 246 0 + Store 247 248 + 249: 188(ptr) AccessChain 35(data) 241 60 56 + 250: 21(int16_t) CompositeExtract 246 1 + Store 249 250 + 251: 188(ptr) AccessChain 35(data) 241 60 71 + 252: 21(int16_t) CompositeExtract 246 2 + Store 251 252 + 253: 6(int) Load 8(delta) + 254: 196(ptr) AccessChain 35(data) 75 60 + 255: 22(i16vec4) Load 254 + 256: 6(int) Load 8(delta) + 257: 22(i16vec4) GroupNonUniformRotateKHR 42 255 256 56 + 258: 196(ptr) AccessChain 35(data) 253 60 + Store 258 257 + 259: 6(int) Load 8(delta) + 261: 260(ptr) AccessChain 35(data) 13 75 37 + 262: 23(int16_t) Load 261 + 263: 6(int) Load 8(delta) + 264: 23(int16_t) GroupNonUniformRotateKHR 42 262 263 + 265: 260(ptr) AccessChain 35(data) 259 75 37 + Store 265 264 + 266: 6(int) Load 8(delta) + 269: 268(ptr) AccessChain 35(data) 46 75 + 270: 24(i16vec4) Load 269 + 271:267(i16vec2) VectorShuffle 270 270 0 1 + 272: 6(int) Load 8(delta) + 273:267(i16vec2) GroupNonUniformRotateKHR 42 271 272 + 274: 260(ptr) AccessChain 35(data) 266 75 37 + 275: 23(int16_t) CompositeExtract 273 0 + Store 274 275 + 276: 260(ptr) AccessChain 35(data) 266 75 56 + 277: 23(int16_t) CompositeExtract 273 1 + Store 276 277 + 278: 6(int) Load 8(delta) + 280: 268(ptr) AccessChain 35(data) 60 75 + 281: 24(i16vec4) Load 280 + 282:279(i16vec3) VectorShuffle 281 281 0 1 2 + 283: 6(int) Load 8(delta) + 284:279(i16vec3) GroupNonUniformRotateKHR 42 282 283 + 285: 260(ptr) AccessChain 35(data) 278 75 37 + 286: 23(int16_t) CompositeExtract 284 0 + Store 285 286 + 287: 260(ptr) AccessChain 35(data) 278 75 56 + 288: 23(int16_t) CompositeExtract 284 1 + Store 287 288 + 289: 260(ptr) AccessChain 35(data) 278 75 71 + 290: 23(int16_t) CompositeExtract 284 2 + Store 289 290 + 291: 6(int) Load 8(delta) + 292: 268(ptr) AccessChain 35(data) 75 75 + 293: 24(i16vec4) Load 292 + 294: 6(int) Load 8(delta) + 295: 24(i16vec4) GroupNonUniformRotateKHR 42 293 294 + 296: 268(ptr) AccessChain 35(data) 291 75 + Store 296 295 + 297: 6(int) Load 8(delta) + 298: 260(ptr) AccessChain 35(data) 13 75 37 + 299: 23(int16_t) Load 298 + 300: 6(int) Load 8(delta) + 301: 23(int16_t) GroupNonUniformRotateKHR 42 299 300 56 + 302: 260(ptr) AccessChain 35(data) 297 75 37 + Store 302 301 + 303: 6(int) Load 8(delta) + 304: 268(ptr) AccessChain 35(data) 46 75 + 305: 24(i16vec4) Load 304 + 306:267(i16vec2) VectorShuffle 305 305 0 1 + 307: 6(int) Load 8(delta) + 308:267(i16vec2) GroupNonUniformRotateKHR 42 306 307 56 + 309: 260(ptr) AccessChain 35(data) 303 75 37 + 310: 23(int16_t) CompositeExtract 308 0 + Store 309 310 + 311: 260(ptr) AccessChain 35(data) 303 75 56 + 312: 23(int16_t) CompositeExtract 308 1 + Store 311 312 + 313: 6(int) Load 8(delta) + 314: 268(ptr) AccessChain 35(data) 60 75 + 315: 24(i16vec4) Load 314 + 316:279(i16vec3) VectorShuffle 315 315 0 1 2 + 317: 6(int) Load 8(delta) + 318:279(i16vec3) GroupNonUniformRotateKHR 42 316 317 56 + 319: 260(ptr) AccessChain 35(data) 313 75 37 + 320: 23(int16_t) CompositeExtract 318 0 + Store 319 320 + 321: 260(ptr) AccessChain 35(data) 313 75 56 + 322: 23(int16_t) CompositeExtract 318 1 + Store 321 322 + 323: 260(ptr) AccessChain 35(data) 313 75 71 + 324: 23(int16_t) CompositeExtract 318 2 + Store 323 324 + 325: 6(int) Load 8(delta) + 326: 268(ptr) AccessChain 35(data) 75 75 + 327: 24(i16vec4) Load 326 + 328: 6(int) Load 8(delta) + 329: 24(i16vec4) GroupNonUniformRotateKHR 42 327 328 56 + 330: 268(ptr) AccessChain 35(data) 325 75 + Store 330 329 + 331: 6(int) Load 8(delta) + 334: 333(ptr) AccessChain 35(data) 13 332 37 + 335: 25(int64_t) Load 334 + 336: 6(int) Load 8(delta) + 337: 25(int64_t) GroupNonUniformRotateKHR 42 335 336 + 338: 333(ptr) AccessChain 35(data) 331 332 37 + Store 338 337 + 339: 6(int) Load 8(delta) + 342: 341(ptr) AccessChain 35(data) 46 332 + 343: 26(i64vec4) Load 342 + 344:340(i64vec2) VectorShuffle 343 343 0 1 + 345: 6(int) Load 8(delta) + 346:340(i64vec2) GroupNonUniformRotateKHR 42 344 345 + 347: 333(ptr) AccessChain 35(data) 339 332 37 + 348: 25(int64_t) CompositeExtract 346 0 + Store 347 348 + 349: 333(ptr) AccessChain 35(data) 339 332 56 + 350: 25(int64_t) CompositeExtract 346 1 + Store 349 350 + 351: 6(int) Load 8(delta) + 353: 341(ptr) AccessChain 35(data) 60 332 + 354: 26(i64vec4) Load 353 + 355:352(i64vec3) VectorShuffle 354 354 0 1 2 + 356: 6(int) Load 8(delta) + 357:352(i64vec3) GroupNonUniformRotateKHR 42 355 356 + 358: 333(ptr) AccessChain 35(data) 351 332 37 + 359: 25(int64_t) CompositeExtract 357 0 + Store 358 359 + 360: 333(ptr) AccessChain 35(data) 351 332 56 + 361: 25(int64_t) CompositeExtract 357 1 + Store 360 361 + 362: 333(ptr) AccessChain 35(data) 351 332 71 + 363: 25(int64_t) CompositeExtract 357 2 + Store 362 363 + 364: 6(int) Load 8(delta) + 365: 341(ptr) AccessChain 35(data) 75 332 + 366: 26(i64vec4) Load 365 + 367: 6(int) Load 8(delta) + 368: 26(i64vec4) GroupNonUniformRotateKHR 42 366 367 + 369: 341(ptr) AccessChain 35(data) 364 332 + Store 369 368 + 370: 6(int) Load 8(delta) + 371: 333(ptr) AccessChain 35(data) 13 332 37 + 372: 25(int64_t) Load 371 + 373: 6(int) Load 8(delta) + 374: 25(int64_t) GroupNonUniformRotateKHR 42 372 373 56 + 375: 333(ptr) AccessChain 35(data) 370 332 37 + Store 375 374 + 376: 6(int) Load 8(delta) + 377: 341(ptr) AccessChain 35(data) 46 332 + 378: 26(i64vec4) Load 377 + 379:340(i64vec2) VectorShuffle 378 378 0 1 + 380: 6(int) Load 8(delta) + 381:340(i64vec2) GroupNonUniformRotateKHR 42 379 380 56 + 382: 333(ptr) AccessChain 35(data) 376 332 37 + 383: 25(int64_t) CompositeExtract 381 0 + Store 382 383 + 384: 333(ptr) AccessChain 35(data) 376 332 56 + 385: 25(int64_t) CompositeExtract 381 1 + Store 384 385 + 386: 6(int) Load 8(delta) + 387: 341(ptr) AccessChain 35(data) 60 332 + 388: 26(i64vec4) Load 387 + 389:352(i64vec3) VectorShuffle 388 388 0 1 2 + 390: 6(int) Load 8(delta) + 391:352(i64vec3) GroupNonUniformRotateKHR 42 389 390 56 + 392: 333(ptr) AccessChain 35(data) 386 332 37 + 393: 25(int64_t) CompositeExtract 391 0 + Store 392 393 + 394: 333(ptr) AccessChain 35(data) 386 332 56 + 395: 25(int64_t) CompositeExtract 391 1 + Store 394 395 + 396: 333(ptr) AccessChain 35(data) 386 332 71 + 397: 25(int64_t) CompositeExtract 391 2 + Store 396 397 + 398: 6(int) Load 8(delta) + 399: 341(ptr) AccessChain 35(data) 75 332 + 400: 26(i64vec4) Load 399 + 401: 6(int) Load 8(delta) + 402: 26(i64vec4) GroupNonUniformRotateKHR 42 400 401 56 + 403: 341(ptr) AccessChain 35(data) 398 332 + Store 403 402 + 404: 6(int) Load 8(delta) + 407: 406(ptr) AccessChain 35(data) 13 405 37 + 408: 27(int64_t) Load 407 + 409: 6(int) Load 8(delta) + 410: 27(int64_t) GroupNonUniformRotateKHR 42 408 409 + 411: 406(ptr) AccessChain 35(data) 404 405 37 + Store 411 410 + 412: 6(int) Load 8(delta) + 415: 414(ptr) AccessChain 35(data) 46 405 + 416: 28(i64vec4) Load 415 + 417:413(i64vec2) VectorShuffle 416 416 0 1 + 418: 6(int) Load 8(delta) + 419:413(i64vec2) GroupNonUniformRotateKHR 42 417 418 + 420: 406(ptr) AccessChain 35(data) 412 405 37 + 421: 27(int64_t) CompositeExtract 419 0 + Store 420 421 + 422: 406(ptr) AccessChain 35(data) 412 405 56 + 423: 27(int64_t) CompositeExtract 419 1 + Store 422 423 + 424: 6(int) Load 8(delta) + 426: 414(ptr) AccessChain 35(data) 60 405 + 427: 28(i64vec4) Load 426 + 428:425(i64vec3) VectorShuffle 427 427 0 1 2 + 429: 6(int) Load 8(delta) + 430:425(i64vec3) GroupNonUniformRotateKHR 42 428 429 + 431: 406(ptr) AccessChain 35(data) 424 405 37 + 432: 27(int64_t) CompositeExtract 430 0 + Store 431 432 + 433: 406(ptr) AccessChain 35(data) 424 405 56 + 434: 27(int64_t) CompositeExtract 430 1 + Store 433 434 + 435: 406(ptr) AccessChain 35(data) 424 405 71 + 436: 27(int64_t) CompositeExtract 430 2 + Store 435 436 + 437: 6(int) Load 8(delta) + 438: 414(ptr) AccessChain 35(data) 75 405 + 439: 28(i64vec4) Load 438 + 440: 6(int) Load 8(delta) + 441: 28(i64vec4) GroupNonUniformRotateKHR 42 439 440 + 442: 414(ptr) AccessChain 35(data) 437 405 + Store 442 441 + 443: 6(int) Load 8(delta) + 444: 406(ptr) AccessChain 35(data) 13 405 37 + 445: 27(int64_t) Load 444 + 446: 6(int) Load 8(delta) + 447: 27(int64_t) GroupNonUniformRotateKHR 42 445 446 56 + 448: 406(ptr) AccessChain 35(data) 443 405 37 + Store 448 447 + 449: 6(int) Load 8(delta) + 450: 414(ptr) AccessChain 35(data) 46 405 + 451: 28(i64vec4) Load 450 + 452:413(i64vec2) VectorShuffle 451 451 0 1 + 453: 6(int) Load 8(delta) + 454:413(i64vec2) GroupNonUniformRotateKHR 42 452 453 56 + 455: 406(ptr) AccessChain 35(data) 449 405 37 + 456: 27(int64_t) CompositeExtract 454 0 + Store 455 456 + 457: 406(ptr) AccessChain 35(data) 449 405 56 + 458: 27(int64_t) CompositeExtract 454 1 + Store 457 458 + 459: 6(int) Load 8(delta) + 460: 414(ptr) AccessChain 35(data) 60 405 + 461: 28(i64vec4) Load 460 + 462:425(i64vec3) VectorShuffle 461 461 0 1 2 + 463: 6(int) Load 8(delta) + 464:425(i64vec3) GroupNonUniformRotateKHR 42 462 463 56 + 465: 406(ptr) AccessChain 35(data) 459 405 37 + 466: 27(int64_t) CompositeExtract 464 0 + Store 465 466 + 467: 406(ptr) AccessChain 35(data) 459 405 56 + 468: 27(int64_t) CompositeExtract 464 1 + Store 467 468 + 469: 406(ptr) AccessChain 35(data) 459 405 71 + 470: 27(int64_t) CompositeExtract 464 2 + Store 469 470 + 471: 6(int) Load 8(delta) + 472: 414(ptr) AccessChain 35(data) 75 405 + 473: 28(i64vec4) Load 472 + 474: 6(int) Load 8(delta) + 475: 28(i64vec4) GroupNonUniformRotateKHR 42 473 474 56 + 476: 414(ptr) AccessChain 35(data) 471 405 + Store 476 475 + 477: 6(int) Load 8(delta) + 480: 479(ptr) AccessChain 35(data) 13 478 37 + 481:29(float16_t) Load 480 + 482: 6(int) Load 8(delta) + 483:29(float16_t) GroupNonUniformRotateKHR 42 481 482 + 484: 479(ptr) AccessChain 35(data) 477 478 37 + Store 484 483 + 485: 6(int) Load 8(delta) + 488: 487(ptr) AccessChain 35(data) 46 478 + 489: 30(f16vec4) Load 488 + 490:486(f16vec2) VectorShuffle 489 489 0 1 + 491: 6(int) Load 8(delta) + 492:486(f16vec2) GroupNonUniformRotateKHR 42 490 491 + 493: 479(ptr) AccessChain 35(data) 485 478 37 + 494:29(float16_t) CompositeExtract 492 0 + Store 493 494 + 495: 479(ptr) AccessChain 35(data) 485 478 56 + 496:29(float16_t) CompositeExtract 492 1 + Store 495 496 + 497: 6(int) Load 8(delta) + 499: 487(ptr) AccessChain 35(data) 60 478 + 500: 30(f16vec4) Load 499 + 501:498(f16vec3) VectorShuffle 500 500 0 1 2 + 502: 6(int) Load 8(delta) + 503:498(f16vec3) GroupNonUniformRotateKHR 42 501 502 + 504: 479(ptr) AccessChain 35(data) 497 478 37 + 505:29(float16_t) CompositeExtract 503 0 + Store 504 505 + 506: 479(ptr) AccessChain 35(data) 497 478 56 + 507:29(float16_t) CompositeExtract 503 1 + Store 506 507 + 508: 479(ptr) AccessChain 35(data) 497 478 71 + 509:29(float16_t) CompositeExtract 503 2 + Store 508 509 + 510: 6(int) Load 8(delta) + 511: 487(ptr) AccessChain 35(data) 75 478 + 512: 30(f16vec4) Load 511 + 513: 6(int) Load 8(delta) + 514: 30(f16vec4) GroupNonUniformRotateKHR 42 512 513 + 515: 487(ptr) AccessChain 35(data) 510 478 + Store 515 514 + 516: 6(int) Load 8(delta) + 517: 479(ptr) AccessChain 35(data) 13 478 37 + 518:29(float16_t) Load 517 + 519: 6(int) Load 8(delta) + 520:29(float16_t) GroupNonUniformRotateKHR 42 518 519 56 + 521: 479(ptr) AccessChain 35(data) 516 478 37 + Store 521 520 + 522: 6(int) Load 8(delta) + 523: 487(ptr) AccessChain 35(data) 46 478 + 524: 30(f16vec4) Load 523 + 525:486(f16vec2) VectorShuffle 524 524 0 1 + 526: 6(int) Load 8(delta) + 527:486(f16vec2) GroupNonUniformRotateKHR 42 525 526 56 + 528: 479(ptr) AccessChain 35(data) 522 478 37 + 529:29(float16_t) CompositeExtract 527 0 + Store 528 529 + 530: 479(ptr) AccessChain 35(data) 522 478 56 + 531:29(float16_t) CompositeExtract 527 1 + Store 530 531 + 532: 6(int) Load 8(delta) + 533: 487(ptr) AccessChain 35(data) 60 478 + 534: 30(f16vec4) Load 533 + 535:498(f16vec3) VectorShuffle 534 534 0 1 2 + 536: 6(int) Load 8(delta) + 537:498(f16vec3) GroupNonUniformRotateKHR 42 535 536 56 + 538: 479(ptr) AccessChain 35(data) 532 478 37 + 539:29(float16_t) CompositeExtract 537 0 + Store 538 539 + 540: 479(ptr) AccessChain 35(data) 532 478 56 + 541:29(float16_t) CompositeExtract 537 1 + Store 540 541 + 542: 479(ptr) AccessChain 35(data) 532 478 71 + 543:29(float16_t) CompositeExtract 537 2 + Store 542 543 + 544: 6(int) Load 8(delta) + 545: 487(ptr) AccessChain 35(data) 75 478 + 546: 30(f16vec4) Load 545 + 547: 6(int) Load 8(delta) + 548: 30(f16vec4) GroupNonUniformRotateKHR 42 546 547 56 + 549: 487(ptr) AccessChain 35(data) 544 478 + Store 549 548 + Return + FunctionEnd diff --git a/Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out b/Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out new file mode 100644 index 0000000000..b38650671f --- /dev/null +++ b/Test/baseResults/spv.subgroupExtendedTypesRotateNeg.comp.out @@ -0,0 +1,61 @@ +spv.subgroupExtendedTypesRotateNeg.comp +ERROR: 0:31: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:32: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:33: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:34: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:36: ' temp int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:37: ' temp 2-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:38: ' temp 3-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:39: 'layout( column_major std430) buffer 4-component vector of int8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:41: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:42: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:43: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:44: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:46: ' temp uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:47: ' temp 2-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:48: ' temp 3-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:49: 'layout( column_major std430) buffer 4-component vector of uint8_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int8 +ERROR: 0:51: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:52: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:53: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:54: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:56: ' temp int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:57: ' temp 2-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:58: ' temp 3-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:59: 'layout( column_major std430) buffer 4-component vector of int16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:61: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:62: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:63: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:64: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:66: ' temp uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:67: ' temp 2-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:68: ' temp 3-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:69: 'layout( column_major std430) buffer 4-component vector of uint16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int16 +ERROR: 0:71: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:72: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:73: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:74: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:76: ' temp int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:77: ' temp 2-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:78: ' temp 3-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:79: 'layout( column_major std430) buffer 4-component vector of int64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:81: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:82: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:83: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:84: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:86: ' temp uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:87: ' temp 2-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:88: ' temp 3-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:89: 'layout( column_major std430) buffer 4-component vector of uint64_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_int64 +ERROR: 0:91: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:92: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:93: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:94: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:96: ' temp highp float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:97: ' temp highp 2-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:98: ' temp highp 3-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 0:99: 'layout( column_major std430) buffer highp 4-component vector of float16_t' : required extension not requested: GL_EXT_shader_subgroup_extended_types_float16 +ERROR: 56 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.subgroupRotate.comp.out b/Test/baseResults/spv.subgroupRotate.comp.out new file mode 100644 index 0000000000..9c87ba63bf --- /dev/null +++ b/Test/baseResults/spv.subgroupRotate.comp.out @@ -0,0 +1,528 @@ +spv.subgroupRotate.comp +// Module Version 10300 +// Generated by (magic number): 8000b +// Id's are bound by 418 + + Capability Shader + Capability Float64 + Capability CapabilityGroupNonUniformRotateKHR + Extension "SPV_KHR_subgroup_rotate" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 8 8 1 + Source GLSL 450 + SourceExtension "GL_KHR_shader_subgroup_rotate" + Name 4 "main" + Name 8 "delta" + Name 9 "roblock" + MemberName 9(roblock) 0 "delta" + Name 11 "ro" + Name 23 "Buffers" + MemberName 23(Buffers) 0 "f4" + MemberName 23(Buffers) 1 "i4" + MemberName 23(Buffers) 2 "u4" + MemberName 23(Buffers) 3 "d4" + Name 27 "data" + MemberDecorate 9(roblock) 0 NonWritable + MemberDecorate 9(roblock) 0 Offset 0 + Decorate 9(roblock) Block + Decorate 11(ro) DescriptorSet 0 + Decorate 11(ro) Binding 1 + MemberDecorate 23(Buffers) 0 Offset 0 + MemberDecorate 23(Buffers) 1 Offset 16 + MemberDecorate 23(Buffers) 2 Offset 32 + MemberDecorate 23(Buffers) 3 Offset 64 + Decorate 23(Buffers) Block + Decorate 27(data) DescriptorSet 0 + Decorate 27(data) Binding 0 + Decorate 417 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypePointer Function 6(int) + 9(roblock): TypeStruct 6(int) + 10: TypePointer StorageBuffer 9(roblock) + 11(ro): 10(ptr) Variable StorageBuffer + 12: TypeInt 32 1 + 13: 12(int) Constant 0 + 14: TypePointer StorageBuffer 6(int) + 17: TypeFloat 32 + 18: TypeVector 17(float) 4 + 19: TypeVector 12(int) 4 + 20: TypeVector 6(int) 4 + 21: TypeFloat 64 + 22: TypeVector 21(float64_t) 4 + 23(Buffers): TypeStruct 18(fvec4) 19(ivec4) 20(ivec4) 22(f64vec4) + 24: 6(int) Constant 4 + 25: TypeArray 23(Buffers) 24 + 26: TypePointer StorageBuffer 25 + 27(data): 26(ptr) Variable StorageBuffer + 29: 6(int) Constant 0 + 30: TypePointer StorageBuffer 17(float) + 34: 6(int) Constant 3 + 38: 12(int) Constant 1 + 39: TypeVector 17(float) 2 + 40: TypePointer StorageBuffer 18(fvec4) + 48: 6(int) Constant 1 + 52: 12(int) Constant 2 + 53: TypeVector 17(float) 3 + 63: 6(int) Constant 2 + 67: 12(int) Constant 3 + 74: TypePointer StorageBuffer 12(int) + 81: TypeVector 12(int) 2 + 82: TypePointer StorageBuffer 19(ivec4) + 93: TypeVector 12(int) 3 + 118: TypeVector 6(int) 2 + 119: TypePointer StorageBuffer 20(ivec4) + 130: TypeVector 6(int) 3 + 149: TypePointer StorageBuffer 21(float64_t) + 156: TypeVector 21(float64_t) 2 + 157: TypePointer StorageBuffer 22(f64vec4) + 168: TypeVector 21(float64_t) 3 + 189: TypeBool + 199: 81(ivec2) ConstantComposite 13 13 + 200: TypeVector 189(bool) 2 + 204: 81(ivec2) ConstantComposite 38 38 + 214: 93(ivec3) ConstantComposite 13 13 13 + 215: TypeVector 189(bool) 3 + 219: 93(ivec3) ConstantComposite 38 38 38 + 230: 19(ivec4) ConstantComposite 13 13 13 13 + 231: TypeVector 189(bool) 4 + 235: 19(ivec4) ConstantComposite 38 38 38 38 + 416: 6(int) Constant 8 + 417: 130(ivec3) ConstantComposite 416 416 48 + 4(main): 2 Function None 3 + 5: Label + 8(delta): 7(ptr) Variable Function + 15: 14(ptr) AccessChain 11(ro) 13 + 16: 6(int) Load 15 + Store 8(delta) 16 + 28: 6(int) Load 8(delta) + 31: 30(ptr) AccessChain 27(data) 13 13 29 + 32: 17(float) Load 31 + 33: 6(int) Load 8(delta) + 35: 17(float) GroupNonUniformRotateKHR 34 32 33 + 36: 30(ptr) AccessChain 27(data) 28 13 29 + Store 36 35 + 37: 6(int) Load 8(delta) + 41: 40(ptr) AccessChain 27(data) 38 13 + 42: 18(fvec4) Load 41 + 43: 39(fvec2) VectorShuffle 42 42 0 1 + 44: 6(int) Load 8(delta) + 45: 39(fvec2) GroupNonUniformRotateKHR 34 43 44 + 46: 30(ptr) AccessChain 27(data) 37 13 29 + 47: 17(float) CompositeExtract 45 0 + Store 46 47 + 49: 30(ptr) AccessChain 27(data) 37 13 48 + 50: 17(float) CompositeExtract 45 1 + Store 49 50 + 51: 6(int) Load 8(delta) + 54: 40(ptr) AccessChain 27(data) 52 13 + 55: 18(fvec4) Load 54 + 56: 53(fvec3) VectorShuffle 55 55 0 1 2 + 57: 6(int) Load 8(delta) + 58: 53(fvec3) GroupNonUniformRotateKHR 34 56 57 + 59: 30(ptr) AccessChain 27(data) 51 13 29 + 60: 17(float) CompositeExtract 58 0 + Store 59 60 + 61: 30(ptr) AccessChain 27(data) 51 13 48 + 62: 17(float) CompositeExtract 58 1 + Store 61 62 + 64: 30(ptr) AccessChain 27(data) 51 13 63 + 65: 17(float) CompositeExtract 58 2 + Store 64 65 + 66: 6(int) Load 8(delta) + 68: 40(ptr) AccessChain 27(data) 67 13 + 69: 18(fvec4) Load 68 + 70: 6(int) Load 8(delta) + 71: 18(fvec4) GroupNonUniformRotateKHR 34 69 70 + 72: 40(ptr) AccessChain 27(data) 66 13 + Store 72 71 + 73: 6(int) Load 8(delta) + 75: 74(ptr) AccessChain 27(data) 13 38 29 + 76: 12(int) Load 75 + 77: 6(int) Load 8(delta) + 78: 12(int) GroupNonUniformRotateKHR 34 76 77 + 79: 74(ptr) AccessChain 27(data) 73 38 29 + Store 79 78 + 80: 6(int) Load 8(delta) + 83: 82(ptr) AccessChain 27(data) 38 38 + 84: 19(ivec4) Load 83 + 85: 81(ivec2) VectorShuffle 84 84 0 1 + 86: 6(int) Load 8(delta) + 87: 81(ivec2) GroupNonUniformRotateKHR 34 85 86 + 88: 74(ptr) AccessChain 27(data) 80 38 29 + 89: 12(int) CompositeExtract 87 0 + Store 88 89 + 90: 74(ptr) AccessChain 27(data) 80 38 48 + 91: 12(int) CompositeExtract 87 1 + Store 90 91 + 92: 6(int) Load 8(delta) + 94: 82(ptr) AccessChain 27(data) 52 38 + 95: 19(ivec4) Load 94 + 96: 93(ivec3) VectorShuffle 95 95 0 1 2 + 97: 6(int) Load 8(delta) + 98: 93(ivec3) GroupNonUniformRotateKHR 34 96 97 + 99: 74(ptr) AccessChain 27(data) 92 38 29 + 100: 12(int) CompositeExtract 98 0 + Store 99 100 + 101: 74(ptr) AccessChain 27(data) 92 38 48 + 102: 12(int) CompositeExtract 98 1 + Store 101 102 + 103: 74(ptr) AccessChain 27(data) 92 38 63 + 104: 12(int) CompositeExtract 98 2 + Store 103 104 + 105: 6(int) Load 8(delta) + 106: 82(ptr) AccessChain 27(data) 67 38 + 107: 19(ivec4) Load 106 + 108: 6(int) Load 8(delta) + 109: 19(ivec4) GroupNonUniformRotateKHR 34 107 108 + 110: 82(ptr) AccessChain 27(data) 105 38 + Store 110 109 + 111: 6(int) Load 8(delta) + 112: 14(ptr) AccessChain 27(data) 13 52 29 + 113: 6(int) Load 112 + 114: 6(int) Load 8(delta) + 115: 6(int) GroupNonUniformRotateKHR 34 113 114 + 116: 14(ptr) AccessChain 27(data) 111 52 29 + Store 116 115 + 117: 6(int) Load 8(delta) + 120: 119(ptr) AccessChain 27(data) 38 52 + 121: 20(ivec4) Load 120 + 122: 118(ivec2) VectorShuffle 121 121 0 1 + 123: 6(int) Load 8(delta) + 124: 118(ivec2) GroupNonUniformRotateKHR 34 122 123 + 125: 14(ptr) AccessChain 27(data) 117 52 29 + 126: 6(int) CompositeExtract 124 0 + Store 125 126 + 127: 14(ptr) AccessChain 27(data) 117 52 48 + 128: 6(int) CompositeExtract 124 1 + Store 127 128 + 129: 6(int) Load 8(delta) + 131: 119(ptr) AccessChain 27(data) 52 52 + 132: 20(ivec4) Load 131 + 133: 130(ivec3) VectorShuffle 132 132 0 1 2 + 134: 6(int) Load 8(delta) + 135: 130(ivec3) GroupNonUniformRotateKHR 34 133 134 + 136: 14(ptr) AccessChain 27(data) 129 52 29 + 137: 6(int) CompositeExtract 135 0 + Store 136 137 + 138: 14(ptr) AccessChain 27(data) 129 52 48 + 139: 6(int) CompositeExtract 135 1 + Store 138 139 + 140: 14(ptr) AccessChain 27(data) 129 52 63 + 141: 6(int) CompositeExtract 135 2 + Store 140 141 + 142: 6(int) Load 8(delta) + 143: 119(ptr) AccessChain 27(data) 67 52 + 144: 20(ivec4) Load 143 + 145: 6(int) Load 8(delta) + 146: 20(ivec4) GroupNonUniformRotateKHR 34 144 145 + 147: 119(ptr) AccessChain 27(data) 142 52 + Store 147 146 + 148: 6(int) Load 8(delta) + 150: 149(ptr) AccessChain 27(data) 13 67 29 + 151:21(float64_t) Load 150 + 152: 6(int) Load 8(delta) + 153:21(float64_t) GroupNonUniformRotateKHR 34 151 152 + 154: 149(ptr) AccessChain 27(data) 148 67 29 + Store 154 153 + 155: 6(int) Load 8(delta) + 158: 157(ptr) AccessChain 27(data) 38 67 + 159: 22(f64vec4) Load 158 + 160:156(f64vec2) VectorShuffle 159 159 0 1 + 161: 6(int) Load 8(delta) + 162:156(f64vec2) GroupNonUniformRotateKHR 34 160 161 + 163: 149(ptr) AccessChain 27(data) 155 67 29 + 164:21(float64_t) CompositeExtract 162 0 + Store 163 164 + 165: 149(ptr) AccessChain 27(data) 155 67 48 + 166:21(float64_t) CompositeExtract 162 1 + Store 165 166 + 167: 6(int) Load 8(delta) + 169: 157(ptr) AccessChain 27(data) 52 67 + 170: 22(f64vec4) Load 169 + 171:168(f64vec3) VectorShuffle 170 170 0 1 2 + 172: 6(int) Load 8(delta) + 173:168(f64vec3) GroupNonUniformRotateKHR 34 171 172 + 174: 149(ptr) AccessChain 27(data) 167 67 29 + 175:21(float64_t) CompositeExtract 173 0 + Store 174 175 + 176: 149(ptr) AccessChain 27(data) 167 67 48 + 177:21(float64_t) CompositeExtract 173 1 + Store 176 177 + 178: 149(ptr) AccessChain 27(data) 167 67 63 + 179:21(float64_t) CompositeExtract 173 2 + Store 178 179 + 180: 6(int) Load 8(delta) + 181: 157(ptr) AccessChain 27(data) 67 67 + 182: 22(f64vec4) Load 181 + 183: 6(int) Load 8(delta) + 184: 22(f64vec4) GroupNonUniformRotateKHR 34 182 183 + 185: 157(ptr) AccessChain 27(data) 180 67 + Store 185 184 + 186: 6(int) Load 8(delta) + 187: 74(ptr) AccessChain 27(data) 13 38 29 + 188: 12(int) Load 187 + 190: 189(bool) SLessThan 188 13 + 191: 6(int) Load 8(delta) + 192: 189(bool) GroupNonUniformRotateKHR 34 190 191 + 193: 12(int) Select 192 38 13 + 194: 74(ptr) AccessChain 27(data) 186 38 29 + Store 194 193 + 195: 6(int) Load 8(delta) + 196: 82(ptr) AccessChain 27(data) 38 38 + 197: 19(ivec4) Load 196 + 198: 81(ivec2) VectorShuffle 197 197 0 1 + 201: 200(bvec2) SLessThan 198 199 + 202: 6(int) Load 8(delta) + 203: 200(bvec2) GroupNonUniformRotateKHR 34 201 202 + 205: 81(ivec2) Select 203 204 199 + 206: 74(ptr) AccessChain 27(data) 195 38 29 + 207: 12(int) CompositeExtract 205 0 + Store 206 207 + 208: 74(ptr) AccessChain 27(data) 195 38 48 + 209: 12(int) CompositeExtract 205 1 + Store 208 209 + 210: 6(int) Load 8(delta) + 211: 82(ptr) AccessChain 27(data) 38 38 + 212: 19(ivec4) Load 211 + 213: 93(ivec3) VectorShuffle 212 212 0 1 2 + 216: 215(bvec3) SLessThan 213 214 + 217: 6(int) Load 8(delta) + 218: 215(bvec3) GroupNonUniformRotateKHR 34 216 217 + 220: 93(ivec3) Select 218 219 214 + 221: 74(ptr) AccessChain 27(data) 210 38 29 + 222: 12(int) CompositeExtract 220 0 + Store 221 222 + 223: 74(ptr) AccessChain 27(data) 210 38 48 + 224: 12(int) CompositeExtract 220 1 + Store 223 224 + 225: 74(ptr) AccessChain 27(data) 210 38 63 + 226: 12(int) CompositeExtract 220 2 + Store 225 226 + 227: 6(int) Load 8(delta) + 228: 82(ptr) AccessChain 27(data) 38 38 + 229: 19(ivec4) Load 228 + 232: 231(bvec4) SLessThan 229 230 + 233: 6(int) Load 8(delta) + 234: 231(bvec4) GroupNonUniformRotateKHR 34 232 233 + 236: 19(ivec4) Select 234 235 230 + 237: 82(ptr) AccessChain 27(data) 227 38 + Store 237 236 + 238: 6(int) Load 8(delta) + 239: 30(ptr) AccessChain 27(data) 13 13 29 + 240: 17(float) Load 239 + 241: 6(int) Load 8(delta) + 242: 17(float) GroupNonUniformRotateKHR 34 240 241 48 + 243: 30(ptr) AccessChain 27(data) 238 13 29 + Store 243 242 + 244: 6(int) Load 8(delta) + 245: 40(ptr) AccessChain 27(data) 38 13 + 246: 18(fvec4) Load 245 + 247: 39(fvec2) VectorShuffle 246 246 0 1 + 248: 6(int) Load 8(delta) + 249: 39(fvec2) GroupNonUniformRotateKHR 34 247 248 48 + 250: 30(ptr) AccessChain 27(data) 244 13 29 + 251: 17(float) CompositeExtract 249 0 + Store 250 251 + 252: 30(ptr) AccessChain 27(data) 244 13 48 + 253: 17(float) CompositeExtract 249 1 + Store 252 253 + 254: 6(int) Load 8(delta) + 255: 40(ptr) AccessChain 27(data) 52 13 + 256: 18(fvec4) Load 255 + 257: 53(fvec3) VectorShuffle 256 256 0 1 2 + 258: 6(int) Load 8(delta) + 259: 53(fvec3) GroupNonUniformRotateKHR 34 257 258 48 + 260: 30(ptr) AccessChain 27(data) 254 13 29 + 261: 17(float) CompositeExtract 259 0 + Store 260 261 + 262: 30(ptr) AccessChain 27(data) 254 13 48 + 263: 17(float) CompositeExtract 259 1 + Store 262 263 + 264: 30(ptr) AccessChain 27(data) 254 13 63 + 265: 17(float) CompositeExtract 259 2 + Store 264 265 + 266: 6(int) Load 8(delta) + 267: 40(ptr) AccessChain 27(data) 67 13 + 268: 18(fvec4) Load 267 + 269: 6(int) Load 8(delta) + 270: 18(fvec4) GroupNonUniformRotateKHR 34 268 269 48 + 271: 40(ptr) AccessChain 27(data) 266 13 + Store 271 270 + 272: 6(int) Load 8(delta) + 273: 74(ptr) AccessChain 27(data) 13 38 29 + 274: 12(int) Load 273 + 275: 6(int) Load 8(delta) + 276: 12(int) GroupNonUniformRotateKHR 34 274 275 48 + 277: 74(ptr) AccessChain 27(data) 272 38 29 + Store 277 276 + 278: 6(int) Load 8(delta) + 279: 82(ptr) AccessChain 27(data) 38 38 + 280: 19(ivec4) Load 279 + 281: 81(ivec2) VectorShuffle 280 280 0 1 + 282: 6(int) Load 8(delta) + 283: 81(ivec2) GroupNonUniformRotateKHR 34 281 282 48 + 284: 74(ptr) AccessChain 27(data) 278 38 29 + 285: 12(int) CompositeExtract 283 0 + Store 284 285 + 286: 74(ptr) AccessChain 27(data) 278 38 48 + 287: 12(int) CompositeExtract 283 1 + Store 286 287 + 288: 6(int) Load 8(delta) + 289: 82(ptr) AccessChain 27(data) 52 38 + 290: 19(ivec4) Load 289 + 291: 93(ivec3) VectorShuffle 290 290 0 1 2 + 292: 6(int) Load 8(delta) + 293: 93(ivec3) GroupNonUniformRotateKHR 34 291 292 48 + 294: 74(ptr) AccessChain 27(data) 288 38 29 + 295: 12(int) CompositeExtract 293 0 + Store 294 295 + 296: 74(ptr) AccessChain 27(data) 288 38 48 + 297: 12(int) CompositeExtract 293 1 + Store 296 297 + 298: 74(ptr) AccessChain 27(data) 288 38 63 + 299: 12(int) CompositeExtract 293 2 + Store 298 299 + 300: 6(int) Load 8(delta) + 301: 82(ptr) AccessChain 27(data) 67 38 + 302: 19(ivec4) Load 301 + 303: 6(int) Load 8(delta) + 304: 19(ivec4) GroupNonUniformRotateKHR 34 302 303 48 + 305: 82(ptr) AccessChain 27(data) 300 38 + Store 305 304 + 306: 6(int) Load 8(delta) + 307: 14(ptr) AccessChain 27(data) 13 52 29 + 308: 6(int) Load 307 + 309: 6(int) Load 8(delta) + 310: 6(int) GroupNonUniformRotateKHR 34 308 309 48 + 311: 14(ptr) AccessChain 27(data) 306 52 29 + Store 311 310 + 312: 6(int) Load 8(delta) + 313: 119(ptr) AccessChain 27(data) 38 52 + 314: 20(ivec4) Load 313 + 315: 118(ivec2) VectorShuffle 314 314 0 1 + 316: 6(int) Load 8(delta) + 317: 118(ivec2) GroupNonUniformRotateKHR 34 315 316 48 + 318: 14(ptr) AccessChain 27(data) 312 52 29 + 319: 6(int) CompositeExtract 317 0 + Store 318 319 + 320: 14(ptr) AccessChain 27(data) 312 52 48 + 321: 6(int) CompositeExtract 317 1 + Store 320 321 + 322: 6(int) Load 8(delta) + 323: 119(ptr) AccessChain 27(data) 52 52 + 324: 20(ivec4) Load 323 + 325: 130(ivec3) VectorShuffle 324 324 0 1 2 + 326: 6(int) Load 8(delta) + 327: 130(ivec3) GroupNonUniformRotateKHR 34 325 326 48 + 328: 14(ptr) AccessChain 27(data) 322 52 29 + 329: 6(int) CompositeExtract 327 0 + Store 328 329 + 330: 14(ptr) AccessChain 27(data) 322 52 48 + 331: 6(int) CompositeExtract 327 1 + Store 330 331 + 332: 14(ptr) AccessChain 27(data) 322 52 63 + 333: 6(int) CompositeExtract 327 2 + Store 332 333 + 334: 6(int) Load 8(delta) + 335: 119(ptr) AccessChain 27(data) 67 52 + 336: 20(ivec4) Load 335 + 337: 6(int) Load 8(delta) + 338: 20(ivec4) GroupNonUniformRotateKHR 34 336 337 48 + 339: 119(ptr) AccessChain 27(data) 334 52 + Store 339 338 + 340: 6(int) Load 8(delta) + 341: 149(ptr) AccessChain 27(data) 13 67 29 + 342:21(float64_t) Load 341 + 343: 6(int) Load 8(delta) + 344:21(float64_t) GroupNonUniformRotateKHR 34 342 343 48 + 345: 149(ptr) AccessChain 27(data) 340 67 29 + Store 345 344 + 346: 6(int) Load 8(delta) + 347: 157(ptr) AccessChain 27(data) 38 67 + 348: 22(f64vec4) Load 347 + 349:156(f64vec2) VectorShuffle 348 348 0 1 + 350: 6(int) Load 8(delta) + 351:156(f64vec2) GroupNonUniformRotateKHR 34 349 350 48 + 352: 149(ptr) AccessChain 27(data) 346 67 29 + 353:21(float64_t) CompositeExtract 351 0 + Store 352 353 + 354: 149(ptr) AccessChain 27(data) 346 67 48 + 355:21(float64_t) CompositeExtract 351 1 + Store 354 355 + 356: 6(int) Load 8(delta) + 357: 157(ptr) AccessChain 27(data) 52 67 + 358: 22(f64vec4) Load 357 + 359:168(f64vec3) VectorShuffle 358 358 0 1 2 + 360: 6(int) Load 8(delta) + 361:168(f64vec3) GroupNonUniformRotateKHR 34 359 360 48 + 362: 149(ptr) AccessChain 27(data) 356 67 29 + 363:21(float64_t) CompositeExtract 361 0 + Store 362 363 + 364: 149(ptr) AccessChain 27(data) 356 67 48 + 365:21(float64_t) CompositeExtract 361 1 + Store 364 365 + 366: 149(ptr) AccessChain 27(data) 356 67 63 + 367:21(float64_t) CompositeExtract 361 2 + Store 366 367 + 368: 6(int) Load 8(delta) + 369: 157(ptr) AccessChain 27(data) 67 67 + 370: 22(f64vec4) Load 369 + 371: 6(int) Load 8(delta) + 372: 22(f64vec4) GroupNonUniformRotateKHR 34 370 371 48 + 373: 157(ptr) AccessChain 27(data) 368 67 + Store 373 372 + 374: 6(int) Load 8(delta) + 375: 74(ptr) AccessChain 27(data) 13 38 29 + 376: 12(int) Load 375 + 377: 189(bool) SLessThan 376 13 + 378: 6(int) Load 8(delta) + 379: 189(bool) GroupNonUniformRotateKHR 34 377 378 48 + 380: 12(int) Select 379 38 13 + 381: 74(ptr) AccessChain 27(data) 374 38 29 + Store 381 380 + 382: 6(int) Load 8(delta) + 383: 82(ptr) AccessChain 27(data) 38 38 + 384: 19(ivec4) Load 383 + 385: 81(ivec2) VectorShuffle 384 384 0 1 + 386: 200(bvec2) SLessThan 385 199 + 387: 6(int) Load 8(delta) + 388: 200(bvec2) GroupNonUniformRotateKHR 34 386 387 48 + 389: 81(ivec2) Select 388 204 199 + 390: 74(ptr) AccessChain 27(data) 382 38 29 + 391: 12(int) CompositeExtract 389 0 + Store 390 391 + 392: 74(ptr) AccessChain 27(data) 382 38 48 + 393: 12(int) CompositeExtract 389 1 + Store 392 393 + 394: 6(int) Load 8(delta) + 395: 82(ptr) AccessChain 27(data) 38 38 + 396: 19(ivec4) Load 395 + 397: 93(ivec3) VectorShuffle 396 396 0 1 2 + 398: 215(bvec3) SLessThan 397 214 + 399: 6(int) Load 8(delta) + 400: 215(bvec3) GroupNonUniformRotateKHR 34 398 399 48 + 401: 93(ivec3) Select 400 219 214 + 402: 74(ptr) AccessChain 27(data) 394 38 29 + 403: 12(int) CompositeExtract 401 0 + Store 402 403 + 404: 74(ptr) AccessChain 27(data) 394 38 48 + 405: 12(int) CompositeExtract 401 1 + Store 404 405 + 406: 74(ptr) AccessChain 27(data) 394 38 63 + 407: 12(int) CompositeExtract 401 2 + Store 406 407 + 408: 6(int) Load 8(delta) + 409: 82(ptr) AccessChain 27(data) 38 38 + 410: 19(ivec4) Load 409 + 411: 231(bvec4) SLessThan 410 230 + 412: 6(int) Load 8(delta) + 413: 231(bvec4) GroupNonUniformRotateKHR 34 411 412 48 + 414: 19(ivec4) Select 413 235 230 + 415: 82(ptr) AccessChain 27(data) 408 38 + Store 415 414 + Return + FunctionEnd diff --git a/Test/glsl.450.subgroupRotate.comp b/Test/glsl.450.subgroupRotate.comp new file mode 100644 index 0000000000..7f8c007e7b --- /dev/null +++ b/Test/glsl.450.subgroupRotate.comp @@ -0,0 +1,73 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + vec4 f4; + ivec4 i4; + uvec4 u4; + dvec4 d4; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].f4.x = subgroupRotate(data[0].f4.x, delta); + data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta); + data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); + data[delta].f4 = subgroupRotate(data[3].f4, delta); + + data[delta].i4.x = subgroupRotate(data[0].i4.x, delta); + data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta); + data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); + data[delta].i4 = subgroupRotate(data[3].i4, delta); + + data[delta].u4.x = subgroupRotate(data[0].u4.x, delta); + data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta); + data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); + data[delta].u4 = subgroupRotate(data[3].u4, delta); + + data[delta].d4.x = subgroupRotate(data[0].d4.x, delta); + data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta); + data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta); + data[delta].d4 = subgroupRotate(data[3].d4, delta); + + data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); + data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); + data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); + data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); + + data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1); + data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1); + data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1); + data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1); + + data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1); + data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1); + data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1); + data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1); + + data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1); + data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1); + data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1); + data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1); + + data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1); + data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1); + data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1); + data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1); + + data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1)); + data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1)); + data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1)); + data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1)); +} diff --git a/Test/glsl.es320.subgroupRotate.comp b/Test/glsl.es320.subgroupRotate.comp new file mode 100644 index 0000000000..c59a84bbfe --- /dev/null +++ b/Test/glsl.es320.subgroupRotate.comp @@ -0,0 +1,62 @@ +#version 320 es + +#extension GL_KHR_shader_subgroup_rotate: enable + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + vec4 f4; + ivec4 i4; + uvec4 u4; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[0].f4.x = subgroupRotate(data[0].f4.x, delta); + data[0].f4.xy = subgroupRotate(data[1].f4.xy, delta); + data[0].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); + data[0].f4 = subgroupRotate(data[3].f4, delta); + + data[0].i4.x = subgroupRotate(data[0].i4.x, delta); + data[0].i4.xy = subgroupRotate(data[1].i4.xy, delta); + data[0].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); + data[0].i4 = subgroupRotate(data[3].i4, delta); + + data[1].u4.x = subgroupRotate(data[0].u4.x, delta); + data[1].u4.xy = subgroupRotate(data[1].u4.xy, delta); + data[1].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); + data[1].u4 = subgroupRotate(data[3].u4, delta); + + data[1].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); + data[1].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); + data[1].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); + data[1].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); + + data[2].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1u); + data[2].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1u); + data[2].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1u); + data[2].f4 = subgroupClusteredRotate(data[3].f4, delta, 1u); + + data[2].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1u); + data[2].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1u); + data[2].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1u); + data[2].i4 = subgroupClusteredRotate(data[3].i4, delta, 1u); + + data[3].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1u); + data[3].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1u); + data[3].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1u); + data[3].u4 = subgroupClusteredRotate(data[3].u4, delta, 1u); + + data[3].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1u)); + data[3].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1u)); + data[3].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1u)); + data[3].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1u)); +} diff --git a/Test/spv.subgroupExtendedTypesRotate.comp b/Test/spv.subgroupExtendedTypesRotate.comp new file mode 100644 index 0000000000..a83335faca --- /dev/null +++ b/Test/spv.subgroupExtendedTypesRotate.comp @@ -0,0 +1,100 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable +#extension GL_EXT_shader_subgroup_extended_types_int8: enable +#extension GL_EXT_shader_subgroup_extended_types_int16: enable +#extension GL_EXT_shader_subgroup_extended_types_int64: enable +#extension GL_EXT_shader_subgroup_extended_types_float16: enable + +layout (local_size_x = 8) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].i8.x = subgroupRotate(data[0].i8.x, delta); + data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta); + data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta); + data[delta].i8 = subgroupRotate(data[3].i8, delta); + + data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1); + data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1); + data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1); + data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1); + + data[delta].u8.x = subgroupRotate(data[0].u8.x, delta); + data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta); + data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta); + data[delta].u8 = subgroupRotate(data[3].u8, delta); + + data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1); + data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1); + data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1); + data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1); + + data[delta].i16.x = subgroupRotate(data[0].i16.x, delta); + data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta); + data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta); + data[delta].i16 = subgroupRotate(data[3].i16, delta); + + data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1); + data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1); + data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1); + data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1); + + data[delta].u16.x = subgroupRotate(data[0].u16.x, delta); + data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta); + data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta); + data[delta].u16 = subgroupRotate(data[3].u16, delta); + + data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1); + data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1); + data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1); + data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1); + + data[delta].i64.x = subgroupRotate(data[0].i64.x, delta); + data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta); + data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta); + data[delta].i64 = subgroupRotate(data[3].i64, delta); + + data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1); + data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1); + data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1); + data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1); + + data[delta].u64.x = subgroupRotate(data[0].u64.x, delta); + data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta); + data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta); + data[delta].u64 = subgroupRotate(data[3].u64, delta); + + data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1); + data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1); + data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1); + data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1); + + data[delta].f16.x = subgroupRotate(data[0].f16.x, delta); + data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta); + data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta); + data[delta].f16 = subgroupRotate(data[3].f16, delta); + + data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1); + data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1); + data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1); + data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1); +} diff --git a/Test/spv.subgroupExtendedTypesRotateNeg.comp b/Test/spv.subgroupExtendedTypesRotateNeg.comp new file mode 100644 index 0000000000..01ea7e9b88 --- /dev/null +++ b/Test/spv.subgroupExtendedTypesRotateNeg.comp @@ -0,0 +1,100 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int8: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int16: enable +#extension GL_EXT_shader_explicit_arithmetic_types_int64: enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16: enable + +layout (local_size_x = 8) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + i8vec4 i8; + u8vec4 u8; + i16vec4 i16; + u16vec4 u16; + i64vec4 i64; + u64vec4 u64; + f16vec4 f16; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].i8.x = subgroupRotate(data[0].i8.x, delta); + data[delta].i8.xy = subgroupRotate(data[1].i8.xy, delta); + data[delta].i8.xyz = subgroupRotate(data[2].i8.xyz, delta); + data[delta].i8 = subgroupRotate(data[3].i8, delta); + + data[delta].i8.x = subgroupClusteredRotate(data[0].i8.x, delta, 1); + data[delta].i8.xy = subgroupClusteredRotate(data[1].i8.xy, delta, 1); + data[delta].i8.xyz = subgroupClusteredRotate(data[2].i8.xyz, delta, 1); + data[delta].i8 = subgroupClusteredRotate(data[3].i8, delta, 1); + + data[delta].u8.x = subgroupRotate(data[0].u8.x, delta); + data[delta].u8.xy = subgroupRotate(data[1].u8.xy, delta); + data[delta].u8.xyz = subgroupRotate(data[2].u8.xyz, delta); + data[delta].u8 = subgroupRotate(data[3].u8, delta); + + data[delta].u8.x = subgroupClusteredRotate(data[0].u8.x, delta, 1); + data[delta].u8.xy = subgroupClusteredRotate(data[1].u8.xy, delta, 1); + data[delta].u8.xyz = subgroupClusteredRotate(data[2].u8.xyz, delta, 1); + data[delta].u8 = subgroupClusteredRotate(data[3].u8, delta, 1); + + data[delta].i16.x = subgroupRotate(data[0].i16.x, delta); + data[delta].i16.xy = subgroupRotate(data[1].i16.xy, delta); + data[delta].i16.xyz = subgroupRotate(data[2].i16.xyz, delta); + data[delta].i16 = subgroupRotate(data[3].i16, delta); + + data[delta].i16.x = subgroupClusteredRotate(data[0].i16.x, delta, 1); + data[delta].i16.xy = subgroupClusteredRotate(data[1].i16.xy, delta, 1); + data[delta].i16.xyz = subgroupClusteredRotate(data[2].i16.xyz, delta, 1); + data[delta].i16 = subgroupClusteredRotate(data[3].i16, delta, 1); + + data[delta].u16.x = subgroupRotate(data[0].u16.x, delta); + data[delta].u16.xy = subgroupRotate(data[1].u16.xy, delta); + data[delta].u16.xyz = subgroupRotate(data[2].u16.xyz, delta); + data[delta].u16 = subgroupRotate(data[3].u16, delta); + + data[delta].u16.x = subgroupClusteredRotate(data[0].u16.x, delta, 1); + data[delta].u16.xy = subgroupClusteredRotate(data[1].u16.xy, delta, 1); + data[delta].u16.xyz = subgroupClusteredRotate(data[2].u16.xyz, delta, 1); + data[delta].u16 = subgroupClusteredRotate(data[3].u16, delta, 1); + + data[delta].i64.x = subgroupRotate(data[0].i64.x, delta); + data[delta].i64.xy = subgroupRotate(data[1].i64.xy, delta); + data[delta].i64.xyz = subgroupRotate(data[2].i64.xyz, delta); + data[delta].i64 = subgroupRotate(data[3].i64, delta); + + data[delta].i64.x = subgroupClusteredRotate(data[0].i64.x, delta, 1); + data[delta].i64.xy = subgroupClusteredRotate(data[1].i64.xy, delta, 1); + data[delta].i64.xyz = subgroupClusteredRotate(data[2].i64.xyz, delta, 1); + data[delta].i64 = subgroupClusteredRotate(data[3].i64, delta, 1); + + data[delta].u64.x = subgroupRotate(data[0].u64.x, delta); + data[delta].u64.xy = subgroupRotate(data[1].u64.xy, delta); + data[delta].u64.xyz = subgroupRotate(data[2].u64.xyz, delta); + data[delta].u64 = subgroupRotate(data[3].u64, delta); + + data[delta].u64.x = subgroupClusteredRotate(data[0].u64.x, delta, 1); + data[delta].u64.xy = subgroupClusteredRotate(data[1].u64.xy, delta, 1); + data[delta].u64.xyz = subgroupClusteredRotate(data[2].u64.xyz, delta, 1); + data[delta].u64 = subgroupClusteredRotate(data[3].u64, delta, 1); + + data[delta].f16.x = subgroupRotate(data[0].f16.x, delta); + data[delta].f16.xy = subgroupRotate(data[1].f16.xy, delta); + data[delta].f16.xyz = subgroupRotate(data[2].f16.xyz, delta); + data[delta].f16 = subgroupRotate(data[3].f16, delta); + + data[delta].f16.x = subgroupClusteredRotate(data[0].f16.x, delta, 1); + data[delta].f16.xy = subgroupClusteredRotate(data[1].f16.xy, delta, 1); + data[delta].f16.xyz = subgroupClusteredRotate(data[2].f16.xyz, delta, 1); + data[delta].f16 = subgroupClusteredRotate(data[3].f16, delta, 1); +} diff --git a/Test/spv.subgroupRotate.comp b/Test/spv.subgroupRotate.comp new file mode 100644 index 0000000000..7f8c007e7b --- /dev/null +++ b/Test/spv.subgroupRotate.comp @@ -0,0 +1,73 @@ +#version 450 + +#extension GL_KHR_shader_subgroup_rotate: enable + +layout (local_size_x = 8, local_size_y = 8, local_size_z = 1) in; + +readonly buffer roblock +{ + uint delta; +} ro; + +layout(binding = 0) buffer Buffers +{ + vec4 f4; + ivec4 i4; + uvec4 u4; + dvec4 d4; +} data[4]; + +void main() +{ + uint delta = ro.delta; + + data[delta].f4.x = subgroupRotate(data[0].f4.x, delta); + data[delta].f4.xy = subgroupRotate(data[1].f4.xy, delta); + data[delta].f4.xyz = subgroupRotate(data[2].f4.xyz, delta); + data[delta].f4 = subgroupRotate(data[3].f4, delta); + + data[delta].i4.x = subgroupRotate(data[0].i4.x, delta); + data[delta].i4.xy = subgroupRotate(data[1].i4.xy, delta); + data[delta].i4.xyz = subgroupRotate(data[2].i4.xyz, delta); + data[delta].i4 = subgroupRotate(data[3].i4, delta); + + data[delta].u4.x = subgroupRotate(data[0].u4.x, delta); + data[delta].u4.xy = subgroupRotate(data[1].u4.xy, delta); + data[delta].u4.xyz = subgroupRotate(data[2].u4.xyz, delta); + data[delta].u4 = subgroupRotate(data[3].u4, delta); + + data[delta].d4.x = subgroupRotate(data[0].d4.x, delta); + data[delta].d4.xy = subgroupRotate(data[1].d4.xy, delta); + data[delta].d4.xyz = subgroupRotate(data[2].d4.xyz, delta); + data[delta].d4 = subgroupRotate(data[3].d4, delta); + + data[delta].i4.x = int(subgroupRotate(data[0].i4.x < 0, delta)); + data[delta].i4.xy = ivec2(subgroupRotate(lessThan(data[1].i4.xy, ivec2(0)), delta)); + data[delta].i4.xyz = ivec3(subgroupRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta)); + data[delta].i4 = ivec4(subgroupRotate(lessThan(data[1].i4, ivec4(0)), delta)); + + data[delta].f4.x = subgroupClusteredRotate(data[0].f4.x, delta, 1); + data[delta].f4.xy = subgroupClusteredRotate(data[1].f4.xy, delta, 1); + data[delta].f4.xyz = subgroupClusteredRotate(data[2].f4.xyz, delta, 1); + data[delta].f4 = subgroupClusteredRotate(data[3].f4, delta, 1); + + data[delta].i4.x = subgroupClusteredRotate(data[0].i4.x, delta, 1); + data[delta].i4.xy = subgroupClusteredRotate(data[1].i4.xy, delta, 1); + data[delta].i4.xyz = subgroupClusteredRotate(data[2].i4.xyz, delta, 1); + data[delta].i4 = subgroupClusteredRotate(data[3].i4, delta, 1); + + data[delta].u4.x = subgroupClusteredRotate(data[0].u4.x, delta, 1); + data[delta].u4.xy = subgroupClusteredRotate(data[1].u4.xy, delta, 1); + data[delta].u4.xyz = subgroupClusteredRotate(data[2].u4.xyz, delta, 1); + data[delta].u4 = subgroupClusteredRotate(data[3].u4, delta, 1); + + data[delta].d4.x = subgroupClusteredRotate(data[0].d4.x, delta, 1); + data[delta].d4.xy = subgroupClusteredRotate(data[1].d4.xy, delta, 1); + data[delta].d4.xyz = subgroupClusteredRotate(data[2].d4.xyz, delta, 1); + data[delta].d4 = subgroupClusteredRotate(data[3].d4, delta, 1); + + data[delta].i4.x = int(subgroupClusteredRotate(data[0].i4.x < 0, delta, 1)); + data[delta].i4.xy = ivec2(subgroupClusteredRotate(lessThan(data[1].i4.xy, ivec2(0)), delta, 1)); + data[delta].i4.xyz = ivec3(subgroupClusteredRotate(lessThan(data[1].i4.xyz, ivec3(0)), delta, 1)); + data[delta].i4 = ivec4(subgroupClusteredRotate(lessThan(data[1].i4, ivec4(0)), delta, 1)); +} diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 5308bca78a..6b190d4d8b 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -506,6 +506,8 @@ enum TOperator { EOpSubgroupShuffleXor, EOpSubgroupShuffleUp, EOpSubgroupShuffleDown, + EOpSubgroupRotate, + EOpSubgroupClusteredRotate, EOpSubgroupAdd, EOpSubgroupMul, EOpSubgroupMin, diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 44551bcb44..8ae4346373 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -2,7 +2,7 @@ // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. // Copyright (C) 2015-2020 Google, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020-2021 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -2099,6 +2099,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "%s subgroupShuffleXor(%s, uint);\n", "%s subgroupShuffleUp(%s, uint delta);\n", "%s subgroupShuffleDown(%s, uint delta);\n", + "%s subgroupRotate(%s, uint);\n", + "%s subgroupClusteredRotate(%s, uint, uint);\n", "%s subgroupAdd(%s);\n", "%s subgroupMul(%s);\n", "%s subgroupMin(%s);\n", @@ -8670,6 +8672,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("subgroupShuffleXor", 1, &E_GL_KHR_shader_subgroup_shuffle); symbolTable.setFunctionExtensions("subgroupShuffleUp", 1, &E_GL_KHR_shader_subgroup_shuffle_relative); symbolTable.setFunctionExtensions("subgroupShuffleDown", 1, &E_GL_KHR_shader_subgroup_shuffle_relative); + symbolTable.setFunctionExtensions("subgroupRotate", 1, &E_GL_KHR_shader_subgroup_rotate); + symbolTable.setFunctionExtensions("subgroupClusteredRotate", 1, &E_GL_KHR_shader_subgroup_rotate); symbolTable.setFunctionExtensions("subgroupAdd", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupMul", 1, &E_GL_KHR_shader_subgroup_arithmetic); symbolTable.setFunctionExtensions("subgroupMin", 1, &E_GL_KHR_shader_subgroup_arithmetic); @@ -9931,6 +9935,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("subgroupShuffleXor", EOpSubgroupShuffleXor); symbolTable.relateToOperator("subgroupShuffleUp", EOpSubgroupShuffleUp); symbolTable.relateToOperator("subgroupShuffleDown", EOpSubgroupShuffleDown); + symbolTable.relateToOperator("subgroupRotate", EOpSubgroupRotate); + symbolTable.relateToOperator("subgroupClusteredRotate", EOpSubgroupClusteredRotate); symbolTable.relateToOperator("subgroupAdd", EOpSubgroupAdd); symbolTable.relateToOperator("subgroupMul", EOpSubgroupMul); symbolTable.relateToOperator("subgroupMin", EOpSubgroupMin); diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index b550ca2b08..b0b901ac46 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Copyright (C) 2015-2020 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // @@ -235,6 +235,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_KHR_shader_subgroup_ballot] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_shuffle] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_shuffle_relative] = EBhDisable; + extensionBehavior[E_GL_KHR_shader_subgroup_rotate] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_clustered] = EBhDisable; extensionBehavior[E_GL_KHR_shader_subgroup_quad] = EBhDisable; extensionBehavior[E_GL_KHR_memory_scope_semantics] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 7716725774..380c6f10b3 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2013 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Copyright (C) 2015-2018 Google, Inc. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // @@ -171,6 +171,7 @@ const char* const E_GL_KHR_shader_subgroup_arithmetic = "GL_KHR_shader_sub const char* const E_GL_KHR_shader_subgroup_ballot = "GL_KHR_shader_subgroup_ballot"; const char* const E_GL_KHR_shader_subgroup_shuffle = "GL_KHR_shader_subgroup_shuffle"; const char* const E_GL_KHR_shader_subgroup_shuffle_relative = "GL_KHR_shader_subgroup_shuffle_relative"; +const char* const E_GL_KHR_shader_subgroup_rotate = "GL_KHR_shader_subgroup_rotate"; const char* const E_GL_KHR_shader_subgroup_clustered = "GL_KHR_shader_subgroup_clustered"; const char* const E_GL_KHR_shader_subgroup_quad = "GL_KHR_shader_subgroup_quad"; const char* const E_GL_KHR_memory_scope_semantics = "GL_KHR_memory_scope_semantics"; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 19691487af..8ef87453af 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1,7 +1,7 @@ // // Copyright (C) 2002-2005 3Dlabs Inc. Ltd. // Copyright (C) 2012-2016 LunarG, Inc. -// Copyright (C) 2017 ARM Limited. +// Copyright (C) 2017, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -565,6 +565,8 @@ bool TOutputTraverser::visitUnary(TVisit /* visit */, TIntermUnary* node) case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break; case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break; case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break; + case EOpSubgroupRotate: out.debug << "subgroupRotate"; break; + case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break; case EOpSubgroupAdd: out.debug << "subgroupAdd"; break; case EOpSubgroupMul: out.debug << "subgroupMul"; break; case EOpSubgroupMin: out.debug << "subgroupMin"; break; @@ -1002,6 +1004,8 @@ bool TOutputTraverser::visitAggregate(TVisit /* visit */, TIntermAggregate* node case EOpSubgroupShuffleXor: out.debug << "subgroupShuffleXor"; break; case EOpSubgroupShuffleUp: out.debug << "subgroupShuffleUp"; break; case EOpSubgroupShuffleDown: out.debug << "subgroupShuffleDown"; break; + case EOpSubgroupRotate: out.debug << "subgroupRotate"; break; + case EOpSubgroupClusteredRotate: out.debug << "subgroupClusteredRotate"; break; case EOpSubgroupAdd: out.debug << "subgroupAdd"; break; case EOpSubgroupMul: out.debug << "subgroupMul"; break; case EOpSubgroupMin: out.debug << "subgroupMin"; break; diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 44aec44b6b..d85a55cf35 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -1,5 +1,6 @@ // // Copyright (C) 2016 Google, Inc. +// Copyright (C) 2022-2024 Arm Limited. // // All rights reserved. // @@ -252,6 +253,7 @@ INSTANTIATE_TEST_SUITE_P( "glsl.450.subgroupClustered.comp", "glsl.450.subgroupClusteredNeg.comp", "glsl.450.subgroupPartitioned.comp", + "glsl.450.subgroupRotate.comp", "glsl.450.subgroupShuffle.comp", "glsl.450.subgroupShuffleRelative.comp", "glsl.450.subgroupQuad.comp", @@ -277,6 +279,7 @@ INSTANTIATE_TEST_SUITE_P( "glsl.es320.subgroupClustered.comp", "glsl.es320.subgroupClusteredNeg.comp", "glsl.es320.subgroupPartitioned.comp", + "glsl.es320.subgroupRotate.comp", "glsl.es320.subgroupShuffle.comp", "glsl.es320.subgroupShuffleRelative.comp", "glsl.es320.subgroupQuad.comp", diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 13e35b7ac2..cbdc46a2d7 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -1,6 +1,6 @@ // // Copyright (C) 2016 Google, Inc. -// Copyright (C) 2019 ARM Limited. +// Copyright (C) 2019, 2022-2024 Arm Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. // // All rights reserved. @@ -616,6 +616,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.subgroupClustered.comp", "spv.subgroupClusteredNeg.comp", "spv.subgroupPartitioned.comp", + "spv.subgroupRotate.comp", "spv.subgroupShuffle.comp", "spv.subgroupShuffleRelative.comp", "spv.subgroupQuad.comp", @@ -628,6 +629,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.subgroupExtendedTypesClusteredNeg.comp", "spv.subgroupExtendedTypesPartitioned.comp", "spv.subgroupExtendedTypesPartitionedNeg.comp", + "spv.subgroupExtendedTypesRotate.comp", + "spv.subgroupExtendedTypesRotateNeg.comp", "spv.subgroupExtendedTypesShuffle.comp", "spv.subgroupExtendedTypesShuffleNeg.comp", "spv.subgroupExtendedTypesShuffleRelative.comp", From 30661abd9c3e97144f79cb30f2fb5a0da2c7b93c Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng <103151391+qingyuanzNV@users.noreply.github.com> Date: Fri, 9 Feb 2024 10:27:40 -0800 Subject: [PATCH 407/594] Clean up the debug line info tracking and generation. - Correctly populate the field `currentFileId` with the presence of include directive - Support lazy OpLine/OpDebugLine generation only when a real instruction is added instead of a debug location is set - Improve the debug location tracking to per-block instead of just per-builder - A few bug fixes related to debug source info --- SPIRV/GlslangToSpv.cpp | 53 +- SPIRV/SpvBuilder.cpp | 245 +- SPIRV/SpvBuilder.h | 113 +- SPIRV/spvIR.h | 35 + .../spv.debuginfo.bufferref.glsl.frag.out | 280 +- .../spv.debuginfo.const_params.glsl.comp.out | 75 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 2270 ++++++++-------- Test/baseResults/spv.debuginfo.glsl.frag.out | 2077 ++++++++------- Test/baseResults/spv.debuginfo.glsl.geom.out | 660 ++--- Test/baseResults/spv.debuginfo.glsl.tesc.out | 1305 +++++----- Test/baseResults/spv.debuginfo.glsl.tese.out | 838 +++--- Test/baseResults/spv.debuginfo.glsl.vert.out | 1026 ++++---- Test/baseResults/spv.debuginfo.hlsl.comp.out | 2283 ++++++++--------- Test/baseResults/spv.debuginfo.hlsl.frag.out | 1970 +++++++------- Test/baseResults/spv.debuginfo.hlsl.geom.out | 816 +++--- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 1572 ++++++------ Test/baseResults/spv.debuginfo.hlsl.tese.out | 802 +++--- Test/baseResults/spv.debuginfo.hlsl.vert.out | 928 ++++--- .../spv.debuginfo.scalar_types.glsl.frag.out | 330 +-- 19 files changed, 8844 insertions(+), 8834 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index b53c519d61..309b4079fd 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1558,8 +1558,13 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, this->options.generateDebugInfo = true; if (this->options.generateDebugInfo) { - builder.setEmitOpLines(); - builder.setSourceFile(glslangIntermediate->getSourceFile()); + if (this->options.emitNonSemanticShaderDebugInfo) { + builder.setEmitNonSemanticShaderDebugInfo(this->options.emitNonSemanticShaderDebugSource); + } + else { + builder.setEmitSpirvDebugInfo(); + } + builder.setDebugSourceFile(glslangIntermediate->getSourceFile()); // Set the source shader's text. If for SPV version 1.0, include // a preamble in comments stating the OpModuleProcessed instructions. @@ -1584,9 +1589,6 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addInclude(iItr->first, iItr->second); } - builder.setEmitNonSemanticShaderDebugInfo(this->options.emitNonSemanticShaderDebugInfo); - builder.setEmitNonSemanticShaderDebugSource(this->options.emitNonSemanticShaderDebugSource); - stdBuiltins = builder.import("GLSL.std.450"); spv::AddressingModel addressingModel = spv::AddressingModelLogical; @@ -2037,7 +2039,9 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) { // We update the line information even though no code might be generated here // This is helpful to yield correct lines for control flow instructions - builder.setLine(symbol->getLoc().line, symbol->getLoc().getFilename()); + if (!linkageOnly) { + builder.setDebugSourceLocation(symbol->getLoc().line, symbol->getLoc().getFilename()); + } SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (symbol->getType().isStruct()) @@ -2146,7 +2150,7 @@ void TGlslangToSpvTraverser::visitSymbol(glslang::TIntermSymbol* symbol) bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::TIntermBinary* node) { - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->getLeft()->getAsSymbolNode() != nullptr && node->getLeft()->getType().isStruct()) { glslangTypeToIdMap[node->getLeft()->getType().getStruct()] = node->getLeft()->getAsSymbolNode()->getId(); } @@ -2191,7 +2195,7 @@ bool TGlslangToSpvTraverser::visitBinary(glslang::TVisit /* visit */, glslang::T spv::Id rValue = accessChainLoad(node->getRight()->getType()); // reset line number for assignment - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->getOp() != glslang::EOpAssign) { // the left is also an r-value @@ -2524,7 +2528,7 @@ spv::Id TGlslangToSpvTraverser::translateForcedType(spv::Id object) bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TIntermUnary* node) { - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); SpecConstantOpModeGuard spec_constant_op_mode_setter(&builder); if (node->getType().getQualifier().isSpecConstant()) @@ -2912,11 +2916,11 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt return false; } else { if (node->getOp() == glslang::EOpScope) - builder.enterScope(0); + builder.enterLexicalBlock(0); } } else { if (sequenceDepth > 1 && node->getOp() == glslang::EOpScope) - builder.leaveScope(); + builder.leaveLexicalBlock(); --sequenceDepth; } @@ -2943,6 +2947,9 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } case glslang::EOpFunction: if (visit == glslang::EvPreVisit) { + if (options.generateDebugInfo) { + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); + } if (isShaderEntryPoint(node)) { inEntryPoint = true; builder.setBuildPoint(shaderEntry->getLastBlock()); @@ -2951,10 +2958,10 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } else { handleFunctionEntry(node); } - if (options.generateDebugInfo) { + if (options.generateDebugInfo && !options.emitNonSemanticShaderDebugInfo) { const auto& loc = node->getLoc(); const char* sourceFileName = loc.getFilename(); - spv::Id sourceFileId = sourceFileName ? builder.getStringId(sourceFileName) : builder.getSourceFile(); + spv::Id sourceFileId = sourceFileName ? builder.getStringId(sourceFileName) : builder.getMainFileId(); currentFunction->setDebugLineInfo(sourceFileId, loc.line, loc.column); } } else { @@ -2972,7 +2979,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt return false; case glslang::EOpFunctionCall: { - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->isUserDefined()) result = handleUserFunctionCall(node); if (result) { @@ -3093,7 +3100,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructCooperativeMatrixNV: case glslang::EOpConstructCooperativeMatrixKHR: { - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); std::vector arguments; translateArguments(*node, arguments, lvalueCoherentFlags); spv::Id constructed; @@ -3379,7 +3386,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt right->traverse(this); spv::Id rightId = accessChainLoad(right->getType()); - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); OpDecorations decorations = { precision, TranslateNoContractionDecoration(node->getType().getQualifier()), TranslateNonUniformDecoration(node->getType().getQualifier()) }; @@ -3614,7 +3621,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt lvalueCoherentFlags = builder.getAccessChain().coherentFlags; lvalueCoherentFlags |= TranslateCoherent(glslangOperands[arg]->getAsTyped()->getType()); } else { - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); glslang::TOperator glslangOp = node->getOp(); if (arg == 1 && (glslangOp == glslang::EOpRayQueryGetIntersectionType || @@ -3666,7 +3673,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt } } - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); if (node->getOp() == glslang::EOpCooperativeMatrixLoad || node->getOp() == glslang::EOpCooperativeMatrixLoadNV) { std::vector idImmOps; @@ -3906,7 +3913,7 @@ bool TGlslangToSpvTraverser::visitSelection(glslang::TVisit /* visit */, glslang node->getFalseBlock()->traverse(this); spv::Id falseValue = accessChainLoad(node->getFalseBlock()->getAsTyped()->getType()); - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); // done if void if (node->getBasicType() == glslang::EbtVoid) @@ -4114,7 +4121,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn // instructions in it, since the body/test may have arbitrary instructions, // including merges of its own. builder.setBuildPoint(&blocks.head); - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, operands); if (node->testFirst() && node->getTest()) { spv::Block& test = builder.makeNewBlock(); @@ -4137,7 +4144,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn node->getTerminal()->traverse(this); builder.createBranch(&blocks.head); } else { - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); builder.createBranch(&blocks.body); breakForLoop.push(true); @@ -4172,7 +4179,7 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T if (node->getExpression()) node->getExpression()->traverse(this); - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); switch (node->getFlowOp()) { case glslang::EOpKill: @@ -5756,7 +5763,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO if (! node->isImage() && ! node->isTexture()) return spv::NoResult; - builder.setLine(node->getLoc().line, node->getLoc().getFilename()); + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); // Process a GLSL texturing op (will be SPV image) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index b6752d2d74..694413ef31 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -58,13 +58,6 @@ Builder::Builder(unsigned int spvVersion, unsigned int magicNumber, SpvBuildLogg spvVersion(spvVersion), sourceLang(SourceLanguageUnknown), sourceVersion(0), - sourceFileStringId(NoResult), - currentLine(0), - currentFile(nullptr), - currentFileId(NoResult), - lastDebugScopeId(NoResult), - emitOpLines(false), - emitNonSemanticShaderDebugInfo(false), addressModel(AddressingModelLogical), memoryModel(MemoryModelGLSL450), builderNumber(magicNumber), @@ -91,78 +84,6 @@ Id Builder::import(const char* name) return import->getResultId(); } -// Emit instruction for non-filename-based #line directives (ie. no filename -// seen yet): emit an OpLine if we've been asked to emit OpLines and the line -// number has changed since the last time, and is a valid line number. -void Builder::setLine(int lineNum) -{ - if (lineNum != 0 && lineNum != currentLine) { - currentLine = lineNum; - if (emitOpLines) { - if (emitNonSemanticShaderDebugInfo) - addDebugScopeAndLine(currentFileId, currentLine, 0); - else - addLine(sourceFileStringId, currentLine, 0); - } - } -} - -// If no filename, do non-filename-based #line emit. Else do filename-based emit. -// Emit OpLine if we've been asked to emit OpLines and the line number or filename -// has changed since the last time, and line number is valid. -void Builder::setLine(int lineNum, const char* filename) -{ - if (filename == nullptr) { - setLine(lineNum); - return; - } - if ((lineNum != 0 && lineNum != currentLine) || currentFile == nullptr || - strncmp(filename, currentFile, strlen(currentFile) + 1) != 0) { - currentLine = lineNum; - currentFile = filename; - if (emitOpLines) { - spv::Id strId = getStringId(filename); - if (emitNonSemanticShaderDebugInfo) - addDebugScopeAndLine(strId, currentLine, 0); - else - addLine(strId, currentLine, 0); - } - } -} - -void Builder::addLine(Id fileName, int lineNum, int column) -{ - Instruction* line = new Instruction(OpLine); - line->addIdOperand(fileName); - line->addImmediateOperand(lineNum); - line->addImmediateOperand(column); - buildPoint->addInstruction(std::unique_ptr(line)); -} - -void Builder::addDebugScopeAndLine(Id fileName, int lineNum, int column) -{ - assert(!currentDebugScopeId.empty()); - if (currentDebugScopeId.top() != lastDebugScopeId) { - spv::Id resultId = getUniqueId(); - Instruction* scopeInst = new Instruction(resultId, makeVoidType(), OpExtInst); - scopeInst->addIdOperand(nonSemanticShaderDebugInfo); - scopeInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugScope); - scopeInst->addIdOperand(currentDebugScopeId.top()); - buildPoint->addInstruction(std::unique_ptr(scopeInst)); - lastDebugScopeId = currentDebugScopeId.top(); - } - spv::Id resultId = getUniqueId(); - Instruction* lineInst = new Instruction(resultId, makeVoidType(), OpExtInst); - lineInst->addIdOperand(nonSemanticShaderDebugInfo); - lineInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLine); - lineInst->addIdOperand(makeDebugSource(fileName)); - lineInst->addIdOperand(makeUintConstant(lineNum)); - lineInst->addIdOperand(makeUintConstant(lineNum)); - lineInst->addIdOperand(makeUintConstant(column)); - lineInst->addIdOperand(makeUintConstant(column)); - buildPoint->addInstruction(std::unique_ptr(lineInst)); -} - // For creating new groupedTypes (will return old type if the requested one was already made). Id Builder::makeVoidType() { @@ -1011,7 +932,7 @@ Id Builder::makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTy type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMember); type->addIdOperand(getStringId(debugTypeLoc.name)); // name id type->addIdOperand(debugId[memberType]); // type id - type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives + type->addIdOperand(makeDebugSource(currentFileId)); // source id type->addIdOperand(makeUintConstant(debugTypeLoc.line)); // line id TODO: currentLine is always zero type->addIdOperand(makeUintConstant(debugTypeLoc.column)); // TODO: column id type->addIdOperand(makeUintConstant(0)); // TODO: offset id @@ -1050,7 +971,7 @@ Id Builder::makeCompositeDebugType(std::vector const& memberTypes, char cons type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeComposite); type->addIdOperand(getStringId(name)); // name id type->addIdOperand(makeUintConstant(tag)); // tag id - type->addIdOperand(makeDebugSource(sourceFileStringId)); // source id TODO: verify this works across include directives + type->addIdOperand(makeDebugSource(currentFileId)); // source id type->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero? type->addIdOperand(makeUintConstant(0)); // TODO: column id type->addIdOperand(makeDebugCompilationUnit()); // scope id @@ -1113,14 +1034,19 @@ Id Builder::makeDebugSource(const Id fileName) { sourceInst->addIdOperand(fileName); if (emitNonSemanticShaderDebugSource) { spv::Id sourceId = 0; - if (fileName == sourceFileStringId) { + if (fileName == mainFileId) { sourceId = getStringId(sourceText); } else { auto incItr = includeFiles.find(fileName); - assert(incItr != includeFiles.end()); - sourceId = getStringId(*incItr->second); + if (incItr != includeFiles.end()) { + sourceId = getStringId(*incItr->second); + } + } + + // We omit the optional source text item if not available in glslang + if (sourceId != 0) { + sourceInst->addIdOperand(sourceId); } - sourceInst->addIdOperand(sourceId); } constantsTypesGlobals.push_back(std::unique_ptr(sourceInst)); module.mapInstruction(sourceInst); @@ -1137,7 +1063,7 @@ Id Builder::makeDebugCompilationUnit() { sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugCompilationUnit); sourceInst->addIdOperand(makeUintConstant(1)); // TODO(greg-lunarg): Get rid of magic number sourceInst->addIdOperand(makeUintConstant(4)); // TODO(greg-lunarg): Get rid of magic number - sourceInst->addIdOperand(makeDebugSource(sourceFileStringId)); + sourceInst->addIdOperand(makeDebugSource(mainFileId)); sourceInst->addIdOperand(makeUintConstant(sourceLang)); constantsTypesGlobals.push_back(std::unique_ptr(sourceInst)); module.mapInstruction(sourceInst); @@ -1160,7 +1086,7 @@ Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id c inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugGlobalVariable); inst->addIdOperand(getStringId(name)); // name id inst->addIdOperand(type); // type id - inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id + inst->addIdOperand(makeDebugSource(currentFileId)); // source id inst->addIdOperand(makeUintConstant(currentLine)); // line id TODO: currentLine always zero? inst->addIdOperand(makeUintConstant(0)); // TODO: column id inst->addIdOperand(makeDebugCompilationUnit()); // scope id @@ -1184,7 +1110,7 @@ Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t cons inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable); inst->addIdOperand(getStringId(name)); // name id inst->addIdOperand(type); // type id - inst->addIdOperand(makeDebugSource(sourceFileStringId)); // source id + inst->addIdOperand(makeDebugSource(currentFileId)); // source id inst->addIdOperand(makeUintConstant(currentLine)); // line id inst->addIdOperand(makeUintConstant(0)); // TODO: column id inst->addIdOperand(currentDebugScopeId.top()); // scope id @@ -1224,7 +1150,7 @@ Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const pointer) inst->addIdOperand(debugLocalVariable); // debug local variable id inst->addIdOperand(pointer); // pointer to local variable id inst->addIdOperand(makeDebugExpression()); // expression id - buildPoint->addInstruction(std::unique_ptr(inst)); + addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } @@ -1237,7 +1163,7 @@ Id Builder::makeDebugValue(Id const debugLocalVariable, Id const value) inst->addIdOperand(debugLocalVariable); // debug local variable id inst->addIdOperand(value); // value of local variable id inst->addIdOperand(makeDebugExpression()); // expression id - buildPoint->addInstruction(std::unique_ptr(inst)); + addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } @@ -2103,6 +2029,49 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat decorations.push_back(std::unique_ptr(dec)); } +void Builder::addInstruction(std::unique_ptr inst) { + // Optionally insert OpDebugScope + if (emitNonSemanticShaderDebugInfo && dirtyScopeTracker) { + if (buildPoint->updateDebugScope(currentDebugScopeId.top())) { + auto scopeInst = std::make_unique(getUniqueId(), makeVoidType(), OpExtInst); + scopeInst->addIdOperand(nonSemanticShaderDebugInfo); + scopeInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugScope); + scopeInst->addIdOperand(currentDebugScopeId.top()); + buildPoint->addInstruction(std::move(scopeInst)); + } + + dirtyScopeTracker = false; + } + + // Insert OpLine/OpDebugLine if the debug source location has changed + if (trackDebugInfo && dirtyLineTracker) { + if (buildPoint->updateDebugSourceLocation(currentLine, 0, currentFileId)) { + if (emitSpirvDebugInfo) { + auto lineInst = std::make_unique(OpLine); + lineInst->addIdOperand(currentFileId); + lineInst->addImmediateOperand(currentLine); + lineInst->addImmediateOperand(0); + buildPoint->addInstruction(std::move(lineInst)); + } + if (emitNonSemanticShaderDebugInfo) { + auto lineInst = std::make_unique(getUniqueId(), makeVoidType(), OpExtInst); + lineInst->addIdOperand(nonSemanticShaderDebugInfo); + lineInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLine); + lineInst->addIdOperand(makeDebugSource(currentFileId)); + lineInst->addIdOperand(makeUintConstant(currentLine)); + lineInst->addIdOperand(makeUintConstant(currentLine)); + lineInst->addIdOperand(makeUintConstant(0)); + lineInst->addIdOperand(makeUintConstant(0)); + buildPoint->addInstruction(std::move(lineInst)); + } + } + + dirtyLineTracker = false; + } + + buildPoint->addInstruction(std::move(inst)); +} + // Comments in header Function* Builder::makeEntryPoint(const char* entryPoint) { @@ -2146,7 +2115,7 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const // reset last debug scope if (emitNonSemanticShaderDebugInfo) { - lastDebugScopeId = NoResult; + dirtyScopeTracker = true; } // CFG @@ -2186,8 +2155,6 @@ void Builder::setupDebugFunctionEntry(Function* function, const char* name, int // DebugScope and DebugLine for parameter DebugDeclares assert(paramTypes.size() == paramNames.size()); if ((int)paramTypes.size() > 0) { - addDebugScopeAndLine(currentFileId, currentLine, 0); - Id firstParamId = function->getParamId(0); for (size_t p = 0; p < paramTypes.size(); ++p) { @@ -2276,29 +2243,29 @@ void Builder::makeReturn(bool implicit, Id retVal) if (retVal) { Instruction* inst = new Instruction(NoResult, NoType, OpReturnValue); inst->addIdOperand(retVal); - buildPoint->addInstruction(std::unique_ptr(inst)); + addInstruction(std::unique_ptr(inst)); } else - buildPoint->addInstruction(std::unique_ptr(new Instruction(NoResult, NoType, OpReturn))); + addInstruction(std::unique_ptr(new Instruction(NoResult, NoType, OpReturn))); if (! implicit) createAndSetNoPredecessorBlock("post-return"); } // Comments in header -void Builder::enterScope(uint32_t line) +void Builder::enterLexicalBlock(uint32_t line) { // Generate new lexical scope debug instruction Id lexId = makeDebugLexicalBlock(line); currentDebugScopeId.push(lexId); - lastDebugScopeId = NoResult; + dirtyScopeTracker = true; } // Comments in header -void Builder::leaveScope() +void Builder::leaveLexicalBlock() { // Pop current scope from stack and clear current scope currentDebugScopeId.pop(); - lastDebugScopeId = NoResult; + dirtyScopeTracker = true; } // Comments in header @@ -2322,7 +2289,7 @@ void Builder::enterFunction(Function const* function) defInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunctionDefinition); defInst->addIdOperand(debugId[funcId]); defInst->addIdOperand(funcId); - buildPoint->addInstruction(std::unique_ptr(defInst)); + addInstruction(std::unique_ptr(defInst)); } if (auto linkType = function->getLinkType(); linkType != LinkageTypeMax) { @@ -2358,7 +2325,7 @@ void Builder::leaveFunction() // Comments in header void Builder::makeStatementTerminator(spv::Op opcode, const char *name) { - buildPoint->addInstruction(std::unique_ptr(new Instruction(opcode))); + addInstruction(std::unique_ptr(new Instruction(opcode))); createAndSetNoPredecessorBlock(name); } @@ -2420,7 +2387,7 @@ Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id t Id Builder::createUndefined(Id type) { Instruction* inst = new Instruction(getUniqueId(), type, OpUndef); - buildPoint->addInstruction(std::unique_ptr(inst)); + addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } @@ -2464,7 +2431,7 @@ void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAcce } } - buildPoint->addInstruction(std::unique_ptr(store)); + addInstruction(std::unique_ptr(store)); } // Comments in header @@ -2486,7 +2453,7 @@ Id Builder::createLoad(Id lValue, spv::Decoration precision, spv::MemoryAccessMa } } - buildPoint->addInstruction(std::unique_ptr(load)); + addInstruction(std::unique_ptr(load)); setPrecision(load->getResultId(), precision); return load->getResultId(); @@ -2504,7 +2471,7 @@ Id Builder::createAccessChain(StorageClass storageClass, Id base, const std::vec chain->addIdOperand(base); for (int i = 0; i < (int)offsets.size(); ++i) chain->addIdOperand(offsets[i]); - buildPoint->addInstruction(std::unique_ptr(chain)); + addInstruction(std::unique_ptr(chain)); return chain->getResultId(); } @@ -2515,7 +2482,7 @@ Id Builder::createArrayLength(Id base, unsigned int member) Instruction* length = new Instruction(getUniqueId(), intType, OpArrayLength); length->addIdOperand(base); length->addImmediateOperand(member); - buildPoint->addInstruction(std::unique_ptr(length)); + addInstruction(std::unique_ptr(length)); return length->getResultId(); } @@ -2532,7 +2499,7 @@ Id Builder::createCooperativeMatrixLengthKHR(Id type) Instruction* length = new Instruction(getUniqueId(), intType, OpCooperativeMatrixLengthKHR); length->addIdOperand(type); - buildPoint->addInstruction(std::unique_ptr(length)); + addInstruction(std::unique_ptr(length)); return length->getResultId(); } @@ -2549,7 +2516,7 @@ Id Builder::createCooperativeMatrixLengthNV(Id type) Instruction* length = new Instruction(getUniqueId(), intType, OpCooperativeMatrixLengthNV); length->addIdOperand(type); - buildPoint->addInstruction(std::unique_ptr(length)); + addInstruction(std::unique_ptr(length)); return length->getResultId(); } @@ -2565,7 +2532,7 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, unsigned index) Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract); extract->addIdOperand(composite); extract->addImmediateOperand(index); - buildPoint->addInstruction(std::unique_ptr(extract)); + addInstruction(std::unique_ptr(extract)); return extract->getResultId(); } @@ -2581,7 +2548,7 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, const std::vectoraddIdOperand(composite); for (int i = 0; i < (int)indexes.size(); ++i) extract->addImmediateOperand(indexes[i]); - buildPoint->addInstruction(std::unique_ptr(extract)); + addInstruction(std::unique_ptr(extract)); return extract->getResultId(); } @@ -2592,7 +2559,7 @@ Id Builder::createCompositeInsert(Id object, Id composite, Id typeId, unsigned i insert->addIdOperand(object); insert->addIdOperand(composite); insert->addImmediateOperand(index); - buildPoint->addInstruction(std::unique_ptr(insert)); + addInstruction(std::unique_ptr(insert)); return insert->getResultId(); } @@ -2604,7 +2571,7 @@ Id Builder::createCompositeInsert(Id object, Id composite, Id typeId, const std: insert->addIdOperand(composite); for (int i = 0; i < (int)indexes.size(); ++i) insert->addImmediateOperand(indexes[i]); - buildPoint->addInstruction(std::unique_ptr(insert)); + addInstruction(std::unique_ptr(insert)); return insert->getResultId(); } @@ -2614,7 +2581,7 @@ Id Builder::createVectorExtractDynamic(Id vector, Id typeId, Id componentIndex) Instruction* extract = new Instruction(getUniqueId(), typeId, OpVectorExtractDynamic); extract->addIdOperand(vector); extract->addIdOperand(componentIndex); - buildPoint->addInstruction(std::unique_ptr(extract)); + addInstruction(std::unique_ptr(extract)); return extract->getResultId(); } @@ -2625,7 +2592,7 @@ Id Builder::createVectorInsertDynamic(Id vector, Id typeId, Id component, Id com insert->addIdOperand(vector); insert->addIdOperand(component); insert->addIdOperand(componentIndex); - buildPoint->addInstruction(std::unique_ptr(insert)); + addInstruction(std::unique_ptr(insert)); return insert->getResultId(); } @@ -2634,7 +2601,7 @@ Id Builder::createVectorInsertDynamic(Id vector, Id typeId, Id component, Id com void Builder::createNoResultOp(Op opCode) { Instruction* op = new Instruction(opCode); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); } // An opcode that has one id operand, no result id, and no type @@ -2642,7 +2609,7 @@ void Builder::createNoResultOp(Op opCode, Id operand) { Instruction* op = new Instruction(opCode); op->addIdOperand(operand); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); } // An opcode that has one or more operands, no result id, and no type @@ -2652,7 +2619,7 @@ void Builder::createNoResultOp(Op opCode, const std::vector& operands) for (auto it = operands.cbegin(); it != operands.cend(); ++it) { op->addIdOperand(*it); } - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); } // An opcode that has multiple operands, no result id, and no type @@ -2665,7 +2632,7 @@ void Builder::createNoResultOp(Op opCode, const std::vector& operan else op->addImmediateOperand(it->word); } - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); } void Builder::createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask semantics) @@ -2674,7 +2641,7 @@ void Builder::createControlBarrier(Scope execution, Scope memory, MemorySemantic op->addIdOperand(makeUintConstant(execution)); op->addIdOperand(makeUintConstant(memory)); op->addIdOperand(makeUintConstant(semantics)); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); } void Builder::createMemoryBarrier(unsigned executionScope, unsigned memorySemantics) @@ -2682,7 +2649,7 @@ void Builder::createMemoryBarrier(unsigned executionScope, unsigned memorySemant Instruction* op = new Instruction(OpMemoryBarrier); op->addIdOperand(makeUintConstant(executionScope)); op->addIdOperand(makeUintConstant(memorySemantics)); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); } // An opcode that has one operands, a result id, and a type @@ -2695,7 +2662,7 @@ Id Builder::createUnaryOp(Op opCode, Id typeId, Id operand) } Instruction* op = new Instruction(getUniqueId(), typeId, opCode); op->addIdOperand(operand); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); return op->getResultId(); } @@ -2712,7 +2679,7 @@ Id Builder::createBinOp(Op opCode, Id typeId, Id left, Id right) Instruction* op = new Instruction(getUniqueId(), typeId, opCode); op->addIdOperand(left); op->addIdOperand(right); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); return op->getResultId(); } @@ -2733,7 +2700,7 @@ Id Builder::createTriOp(Op opCode, Id typeId, Id op1, Id op2, Id op3) op->addIdOperand(op1); op->addIdOperand(op2); op->addIdOperand(op3); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); return op->getResultId(); } @@ -2743,7 +2710,7 @@ Id Builder::createOp(Op opCode, Id typeId, const std::vector& operands) Instruction* op = new Instruction(getUniqueId(), typeId, opCode); for (auto it = operands.cbegin(); it != operands.cend(); ++it) op->addIdOperand(*it); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); return op->getResultId(); } @@ -2757,7 +2724,7 @@ Id Builder::createOp(Op opCode, Id typeId, const std::vector& opera else op->addImmediateOperand(it->word); } - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); return op->getResultId(); } @@ -2791,7 +2758,7 @@ Id Builder::createFunctionCall(spv::Function* function, const std::vectoraddIdOperand(function->getId()); for (int a = 0; a < (int)args.size(); ++a) op->addIdOperand(args[a]); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); return op->getResultId(); } @@ -2813,7 +2780,7 @@ Id Builder::createRvalueSwizzle(Decoration precision, Id typeId, Id source, cons swizzle->addIdOperand(source); for (int i = 0; i < (int)channels.size(); ++i) swizzle->addImmediateOperand(channels[i]); - buildPoint->addInstruction(std::unique_ptr(swizzle)); + addInstruction(std::unique_ptr(swizzle)); return setPrecision(swizzle->getResultId(), precision); } @@ -2846,7 +2813,7 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect // finish the instruction with these components selectors for (int i = 0; i < numTargetComponents; ++i) swizzle->addImmediateOperand(components[i]); - buildPoint->addInstruction(std::unique_ptr(swizzle)); + addInstruction(std::unique_ptr(swizzle)); return swizzle->getResultId(); } @@ -2891,7 +2858,7 @@ Id Builder::smearScalar(Decoration precision, Id scalar, Id vectorType) smear = new Instruction(getUniqueId(), vectorType, OpCompositeConstruct); for (int c = 0; c < numComponents; ++c) smear->addIdOperand(scalar); - buildPoint->addInstruction(std::unique_ptr(smear)); + addInstruction(std::unique_ptr(smear)); } return setPrecision(smear->getResultId(), precision); @@ -2906,7 +2873,7 @@ Id Builder::createBuiltinCall(Id resultType, Id builtins, int entryPoint, const for (int arg = 0; arg < (int)args.size(); ++arg) inst->addIdOperand(args[arg]); - buildPoint->addInstruction(std::unique_ptr(inst)); + addInstruction(std::unique_ptr(inst)); return inst->getResultId(); } @@ -3102,7 +3069,7 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, for (size_t op = optArgNum + 1; op < texArgs.size(); ++op) textureInst->addIdOperand(texArgs[op]); setPrecision(textureInst->getResultId(), precision); - buildPoint->addInstruction(std::unique_ptr(textureInst)); + addInstruction(std::unique_ptr(textureInst)); Id resultId = textureInst->getResultId(); @@ -3182,7 +3149,7 @@ Id Builder::createTextureQueryCall(Op opCode, const TextureParameters& parameter query->addIdOperand(parameters.coords); if (parameters.lod) query->addIdOperand(parameters.lod); - buildPoint->addInstruction(std::unique_ptr(query)); + addInstruction(std::unique_ptr(query)); addCapability(CapabilityImageQuery); return query->getResultId(); @@ -3281,7 +3248,7 @@ Id Builder::createCompositeConstruct(Id typeId, const std::vector& constitue Instruction* op = new Instruction(getUniqueId(), typeId, OpCompositeConstruct); for (int c = 0; c < (int)constituents.size(); ++c) op->addIdOperand(constituents[c]); - buildPoint->addInstruction(std::unique_ptr(op)); + addInstruction(std::unique_ptr(op)); return op->getResultId(); } @@ -3577,7 +3544,7 @@ void Builder::makeSwitch(Id selector, unsigned int control, int numSegments, con switchInst->addIdOperand(segmentBlocks[valueIndexToSegment[i]]->getId()); segmentBlocks[valueIndexToSegment[i]]->addPredecessor(buildPoint); } - buildPoint->addInstruction(std::unique_ptr(switchInst)); + addInstruction(std::unique_ptr(switchInst)); // push the merge block switchMerges.push(mergeBlock); @@ -4096,7 +4063,7 @@ void Builder::createBranch(Block* block) { Instruction* branch = new Instruction(OpBranch); branch->addIdOperand(block->getId()); - buildPoint->addInstruction(std::unique_ptr(branch)); + addInstruction(std::unique_ptr(branch)); block->addPredecessor(buildPoint); } @@ -4105,7 +4072,7 @@ void Builder::createSelectionMerge(Block* mergeBlock, unsigned int control) Instruction* merge = new Instruction(OpSelectionMerge); merge->addIdOperand(mergeBlock->getId()); merge->addImmediateOperand(control); - buildPoint->addInstruction(std::unique_ptr(merge)); + addInstruction(std::unique_ptr(merge)); } void Builder::createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, @@ -4117,7 +4084,7 @@ void Builder::createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned merge->addImmediateOperand(control); for (int op = 0; op < (int)operands.size(); ++op) merge->addImmediateOperand(operands[op]); - buildPoint->addInstruction(std::unique_ptr(merge)); + addInstruction(std::unique_ptr(merge)); } void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock) @@ -4126,7 +4093,7 @@ void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* els branch->addIdOperand(condition); branch->addIdOperand(thenBlock->getId()); branch->addIdOperand(elseBlock->getId()); - buildPoint->addInstruction(std::unique_ptr(branch)); + addInstruction(std::unique_ptr(branch)); thenBlock->addPredecessor(buildPoint); elseBlock->addPredecessor(buildPoint); } @@ -4178,7 +4145,7 @@ void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& te void Builder::dumpSourceInstructions(std::vector& out) const { if (emitNonSemanticShaderDebugInfo) return; - dumpSourceInstructions(sourceFileStringId, sourceText, out); + dumpSourceInstructions(mainFileId, sourceText, out); for (auto iItr = includeFiles.begin(); iItr != includeFiles.end(); ++iItr) dumpSourceInstructions(iItr->first, *iItr->second, out); } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index dac5881b5b..17949e4069 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -103,31 +103,53 @@ class Builder { stringIds[file_c_str] = strId; return strId; } - spv::Id getSourceFile() const + + spv::Id getMainFileId() const { return mainFileId; } + + // Initialize the main source file name + void setDebugSourceFile(const std::string& file) { - return sourceFileStringId; + if (trackDebugInfo) { + dirtyLineTracker = true; + mainFileId = getStringId(file); + currentFileId = mainFileId; + } } - void setSourceFile(const std::string& file) + + // Set the debug source location tracker in the builder. + // The upcoming instructions in basic blocks will be associated to this location. + void setDebugSourceLocation(int line, const char* filename) { - sourceFileStringId = getStringId(file); - currentFileId = sourceFileStringId; + if (trackDebugInfo) { + dirtyLineTracker = true; + if (line != 0) { + // TODO: This is special handling of some AST nodes having (untracked) line 0. + // But they should have a valid line number. + currentLine = line; + if (filename) { + currentFileId = getStringId(filename); + } + } + } } + void setSourceText(const std::string& text) { sourceText = text; } void addSourceExtension(const char* ext) { sourceExtensions.push_back(ext); } void addModuleProcessed(const std::string& p) { moduleProcesses.push_back(p.c_str()); } - void setEmitOpLines() { emitOpLines = true; } - void setEmitNonSemanticShaderDebugInfo(bool const emit) + void setEmitSpirvDebugInfo() { - emitNonSemanticShaderDebugInfo = emit; - - if(emit) - { - importNonSemanticShaderDebugInfoInstructions(); - } + trackDebugInfo = true; + emitSpirvDebugInfo = true; } - void setEmitNonSemanticShaderDebugSource(bool const src) + void setEmitNonSemanticShaderDebugInfo(bool emitSourceText) { - emitNonSemanticShaderDebugSource = src; + trackDebugInfo = true; + emitNonSemanticShaderDebugInfo = true; + importNonSemanticShaderDebugInfoInstructions(); + + if (emitSourceText) { + emitNonSemanticShaderDebugSource = emitSourceText; + } } void addExtension(const char* ext) { extensions.insert(ext); } void removeExtension(const char* ext) @@ -169,20 +191,6 @@ class Builder { return id; } - // Generate OpLine for non-filename-based #line directives (ie no filename - // seen yet): Log the current line, and if different than the last one, - // issue a new OpLine using the new line and current source file name. - void setLine(int line); - - // If filename null, generate OpLine for non-filename-based line directives, - // else do filename-based: Log the current line and file, and if different - // than the last one, issue a new OpLine using the new line and file - // name. - void setLine(int line, const char* filename); - // Low-level OpLine. See setLine() for a layered helper. - void addLine(Id fileName, int line, int column); - void addDebugScopeAndLine(Id fileName, int line, int column); - // For creating new types (will return old type if the requested one was already made). Id makeVoidType(); Id makeBoolType(); @@ -409,11 +417,16 @@ class Builder { // Also reset current last DebugScope and current source line to unknown void setBuildPoint(Block* bp) { buildPoint = bp; - lastDebugScopeId = NoResult; - currentLine = 0; + // TODO: Technically, change of build point should set line tracker dirty. But we'll have bad line info for + // branch instructions. Commenting this for now because at least this matches the old behavior. + dirtyScopeTracker = true; } Block* getBuildPoint() const { return buildPoint; } + // Append an instruction to the end of the current build point. + // Optionally, additional debug info instructions may also be prepended. + void addInstruction(std::unique_ptr inst); + // Make the entry-point function. The returned pointer is only valid // for the lifetime of this builder. Function* makeEntryPoint(const char*); @@ -430,10 +443,10 @@ class Builder { void makeReturn(bool implicit, Id retVal = 0); // Initialize state and generate instructions for new lexical scope - void enterScope(uint32_t line); + void enterLexicalBlock(uint32_t line); // Set state and generate instructions to exit current lexical scope - void leaveScope(); + void leaveLexicalBlock(); // Prepare builder for generation of instructions for a function. void enterFunction(Function const* function); @@ -882,21 +895,37 @@ class Builder { unsigned int spvVersion; // the version of SPIR-V to emit in the header SourceLanguage sourceLang; int sourceVersion; - spv::Id sourceFileStringId; spv::Id nonSemanticShaderCompilationUnitId {0}; spv::Id nonSemanticShaderDebugInfo {0}; spv::Id debugInfoNone {0}; spv::Id debugExpression {0}; // Debug expression with zero operations. std::string sourceText; - int currentLine; - const char* currentFile; - spv::Id currentFileId; + + // True if an new OpLine/OpDebugLine may need to be inserted. Either: + // 1. The current debug location changed + // 2. The current build point changed + bool dirtyLineTracker; + int currentLine = 0; + // OpString id of the current file name. Always 0 if debug info is off. + spv::Id currentFileId = 0; + // OpString id of the main file name. Always 0 if debug info is off. + spv::Id mainFileId = 0; + + // True if an new OpDebugScope may need to be inserted. Either: + // 1. A new lexical block is pushed + // 2. The current build point changed + bool dirtyScopeTracker; std::stack currentDebugScopeId; - spv::Id lastDebugScopeId; - bool emitOpLines; - bool emitNonSemanticShaderDebugInfo; - bool restoreNonSemanticShaderDebugInfo; - bool emitNonSemanticShaderDebugSource; + + // This flag toggles tracking of debug info while building the SPIR-V. + bool trackDebugInfo = false; + // This flag toggles emission of SPIR-V debug instructions, like OpLine and OpSource. + bool emitSpirvDebugInfo = false; + // This flag toggles emission of Non-Semantic Debug extension debug instructions. + bool emitNonSemanticShaderDebugInfo = false; + bool restoreNonSemanticShaderDebugInfo = false; + bool emitNonSemanticShaderDebugSource = false; + std::set extensions; std::vector sourceExtensions; std::vector moduleProcesses; diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 8849f42e75..6f3124f8da 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -56,6 +56,7 @@ #include #include #include +#include namespace spv { @@ -190,6 +191,12 @@ class Instruction { // SPIR-V IR block. // +struct DebugSourceLocation { + int line; + int column; + spv::Id fileId; +}; + class Block { public: Block(Id id, Function& parent); @@ -200,6 +207,28 @@ class Block { Id getId() { return instructions.front()->getResultId(); } Function& getParent() const { return parent; } + // Returns true if the source location is actually updated. + // Note we still need the builder to insert the line marker instruction. This is just a tracker. + bool updateDebugSourceLocation(int line, int column, spv::Id fileId) { + if (currentSourceLoc && currentSourceLoc->line == line && currentSourceLoc->column == column && + currentSourceLoc->fileId == fileId) { + return false; + } + + currentSourceLoc = DebugSourceLocation{line, column, fileId}; + return true; + } + // Returns true if the scope is actually updated. + // Note we still need the builder to insert the debug scope instruction. This is just a tracker. + bool updateDebugScope(spv::Id scopeId) { + assert(scopeId); + if (currentDebugScope && *currentDebugScope == scopeId) { + return false; + } + + currentDebugScope = scopeId; + return true; + } void addInstruction(std::unique_ptr inst); void addPredecessor(Block* pred) { predecessors.push_back(pred); pred->successors.push_back(this);} void addLocalVariable(std::unique_ptr inst) { localVariables.push_back(std::move(inst)); } @@ -292,6 +321,12 @@ class Block { std::vector > localVariables; Function& parent; + // Track source location of the last source location marker instruction. + std::optional currentSourceLoc; + + // Track scope of the last debug scope instruction. + std::optional currentDebugScope; + // track whether this block is known to be uncreachable (not necessarily // true for all unreachable blocks, but should be set at least // for the extraneous ones introduced by the builder). diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index 92031461a8..0ad36a8d86 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -1,19 +1,19 @@ spv.debuginfo.bufferref.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 143 +// Id's are bound by 142 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_non_semantic_info" Extension "SPV_KHR_physical_storage_buffer" Extension "SPV_KHR_storage_buffer_storage_class" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 - EntryPoint Fragment 14 "main" 75 134 + EntryPoint Fragment 14 "main" 76 131 ExecutionMode 14 OriginUpperLeft - 1: String "" + 2: String "" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -24,45 +24,45 @@ spv.debuginfo.bufferref.glsl.frag // OpModuleProcessed entry-point main #line 1 " - 32: String "Mesh" + 31: String "Mesh" 34: String "float" 40: String "data" 44: String "MeshVertexPositions" 50: String "meshData" - 62: String "PerPass_meshes" - 68: String "perPass_meshes" - 70: String "int" - 77: String "tri_idx0" - 95: String "vertex_pos0" - 136: String "out_fragColor" + 63: String "PerPass_meshes" + 69: String "perPass_meshes" + 71: String "int" + 78: String "tri_idx0" + 94: String "vertex_pos0" + 133: String "out_fragColor" SourceExtension "GL_EXT_buffer_reference" Name 14 "main" - Name 30 "Mesh" - MemberName 30(Mesh) 0 "positions" + Name 29 "Mesh" + MemberName 29(Mesh) 0 "positions" Name 38 "MeshVertexPositions" MemberName 38(MeshVertexPositions) 0 "data" Name 48 "meshData" - Name 53 "Mesh" - MemberName 53(Mesh) 0 "positions" - Name 57 "PerPass_meshes" - MemberName 57(PerPass_meshes) 0 "data" - Name 66 "perPass_meshes" - Name 75 "tri_idx0" - Name 93 "vertex_pos0" - Name 134 "out_fragColor" + Name 54 "Mesh" + MemberName 54(Mesh) 0 "positions" + Name 58 "PerPass_meshes" + MemberName 58(PerPass_meshes) 0 "data" + Name 67 "perPass_meshes" + Name 76 "tri_idx0" + Name 92 "vertex_pos0" + Name 131 "out_fragColor" Decorate 36 ArrayStride 4 MemberDecorate 38(MeshVertexPositions) 0 Offset 0 Decorate 38(MeshVertexPositions) Block - MemberDecorate 53(Mesh) 0 Offset 0 - Decorate 55 ArrayStride 8 - MemberDecorate 57(PerPass_meshes) 0 NonWritable - MemberDecorate 57(PerPass_meshes) 0 Offset 0 - Decorate 57(PerPass_meshes) Block - Decorate 66(perPass_meshes) DescriptorSet 0 - Decorate 66(perPass_meshes) Binding 0 - Decorate 75(tri_idx0) Flat - Decorate 75(tri_idx0) Location 0 - Decorate 134(out_fragColor) Location 0 + MemberDecorate 54(Mesh) 0 Offset 0 + Decorate 56 ArrayStride 8 + MemberDecorate 58(PerPass_meshes) 0 NonWritable + MemberDecorate 58(PerPass_meshes) 0 Offset 0 + Decorate 58(PerPass_meshes) Block + Decorate 67(perPass_meshes) DescriptorSet 0 + Decorate 67(perPass_meshes) Binding 0 + Decorate 76(tri_idx0) Flat + Decorate 76(tri_idx0) Location 0 + Decorate 131(out_fragColor) Location 0 Decorate 48(meshData) DecorationAliasedPointerEXT 4: TypeVoid 5: TypeFunction 4 @@ -70,129 +70,127 @@ spv.debuginfo.bufferref.glsl.frag 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 20 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 - 28: 7(int) Constant 21 - TypeForwardPointer 29 PhysicalStorageBufferEXT - 30(Mesh): TypeStruct 29 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 32 22 18 28 12 21 32 12 13 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + TypeForwardPointer 28 PhysicalStorageBufferEXT + 29(Mesh): TypeStruct 28 + 32: 7(int) Constant 21 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 22 18 32 12 21 31 12 13 33: TypeFloat 32 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 34 10 13 12 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 34 10 13 12 36: TypeRuntimeArray 33(float) - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 12 + 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 12 38(MeshVertexPositions): TypeStruct 36 41: 7(int) Constant 5 42: 7(int) Constant 9 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 37 18 41 42 12 12 13 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 44 22 18 28 12 21 44 12 13 39 - 29: TypePointer PhysicalStorageBufferEXT 38(MeshVertexPositions) - 45: TypePointer Function 30(Mesh) + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 37 18 41 42 12 12 13 + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 44 22 18 32 12 21 44 12 13 39 + 28: TypePointer PhysicalStorageBufferEXT 38(MeshVertexPositions) + 45: TypePointer Function 29(Mesh) 46: 7(int) Constant 7 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 46 12 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 31 18 28 12 17 23 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 53(Mesh): TypeStruct 29(ptr) - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 32 22 18 28 12 21 32 12 13 - 55: TypeRuntimeArray 53(Mesh) - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 54 12 -57(PerPass_meshes): TypeStruct 55 - 59: 7(int) Constant 13 - 60: 7(int) Constant 8 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 56 18 59 60 12 12 13 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 62 22 18 28 12 21 62 12 13 58 - 63: TypePointer StorageBuffer 57(PerPass_meshes) - 64: 7(int) Constant 12 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 64 12 -66(perPass_meshes): 63(ptr) Variable StorageBuffer - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 61 18 28 12 21 68 66(perPass_meshes) 60 - 69: TypeInt 32 1 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 70 10 23 12 - 72: 69(int) Constant 0 - 73: TypePointer Input 7(int) - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 - 75(tri_idx0): 73(ptr) Variable Input - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 9 18 28 12 21 77 75(tri_idx0) 60 - 79: TypePointer StorageBuffer 53(Mesh) - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 54 64 12 - 84: TypePointer Function 29(ptr) - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 88: 7(int) Constant 23 - 89: TypeVector 33(float) 3 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 13 - 91: TypePointer Function 89(fvec3) - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 46 12 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 95 90 18 88 12 17 23 - 98: 7(int) Constant 25 - 104: TypePointer PhysicalStorageBufferEXT 33(float) - 105: 7(int) Constant 5349 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 35 105 12 - 110: 7(int) Constant 24 - 129: 7(int) Constant 27 - 130: TypeVector 33(float) 4 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 23 - 132: TypePointer Output 130(fvec4) - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 131 13 12 -134(out_fragColor): 132(ptr) Variable Output - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 131 18 129 12 21 136 134(out_fragColor) 60 - 138: 33(float) Constant 1065353216 - Line 1 20 11 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 46 12 + 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 30 18 32 12 17 23 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 54(Mesh): TypeStruct 28(ptr) + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 22 18 32 12 21 31 12 13 + 56: TypeRuntimeArray 54(Mesh) + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 55 12 +58(PerPass_meshes): TypeStruct 56 + 60: 7(int) Constant 13 + 61: 7(int) Constant 8 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 57 18 60 61 12 12 13 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 63 22 18 32 12 21 63 12 13 59 + 64: TypePointer StorageBuffer 58(PerPass_meshes) + 65: 7(int) Constant 12 + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 65 12 +67(perPass_meshes): 64(ptr) Variable StorageBuffer + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 69 62 18 32 12 21 69 67(perPass_meshes) 61 + 70: TypeInt 32 1 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 71 10 23 12 + 73: 70(int) Constant 0 + 74: TypePointer Input 7(int) + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 + 76(tri_idx0): 74(ptr) Variable Input + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 9 18 32 12 21 78 76(tri_idx0) 61 + 80: TypePointer StorageBuffer 54(Mesh) + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 55 65 12 + 85: TypePointer Function 28(ptr) + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 88: TypeVector 33(float) 3 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 13 + 90: TypePointer Function 88(fvec3) + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 46 12 + 95: 7(int) Constant 23 + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 94 89 18 95 12 17 23 + 102: TypePointer PhysicalStorageBufferEXT 33(float) + 103: 7(int) Constant 5349 + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 35 103 12 + 109: 7(int) Constant 24 + 118: 7(int) Constant 25 + 127: TypeVector 33(float) 4 + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 23 + 129: TypePointer Output 127(fvec4) + 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 13 12 +131(out_fragColor): 129(ptr) Variable Output + 134: 7(int) Constant 27 + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 133 128 18 134 12 21 133 131(out_fragColor) 61 + 137: 33(float) Constant 1065353216 14(main): 4 Function None 5 15: Label 48(meshData): 45(ptr) Variable Function - 93(vertex_pos0): 91(ptr) Variable Function - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 48(meshData) 52 - 78: 7(int) Load 75(tri_idx0) - 81: 79(ptr) AccessChain 66(perPass_meshes) 72 78 - 82: 53(Mesh) Load 81 - 83: 29(ptr) CompositeExtract 82 0 - 86: 84(ptr) AccessChain 48(meshData) 72 - Store 86 83 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 88 88 12 12 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 94 93(vertex_pos0) 52 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 98 98 12 12 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 88 88 12 12 - 100: 84(ptr) AccessChain 48(meshData) 72 - 101: 29(ptr) Load 100 - 102: 7(int) Load 75(tri_idx0) - 103: 7(int) IMul 13 102 - 107: 104(ptr) AccessChain 101 72 103 - 108: 33(float) Load 107 Aligned 4 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 110 110 12 12 - 111: 84(ptr) AccessChain 48(meshData) 72 - 112: 29(ptr) Load 111 - 113: 7(int) Load 75(tri_idx0) - 114: 7(int) IMul 13 113 - 115: 7(int) IAdd 114 22 - 116: 104(ptr) AccessChain 112 72 115 - 117: 33(float) Load 116 Aligned 4 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 98 98 12 12 - 119: 84(ptr) AccessChain 48(meshData) 72 - 120: 29(ptr) Load 119 - 121: 7(int) Load 75(tri_idx0) - 122: 7(int) IMul 13 121 - 123: 7(int) IAdd 122 24 - 124: 104(ptr) AccessChain 120 72 123 - 125: 33(float) Load 124 Aligned 4 - 126: 89(fvec3) CompositeConstruct 108 117 125 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 88 88 12 12 - Store 93(vertex_pos0) 126 - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 129 129 12 12 - 137: 89(fvec3) Load 93(vertex_pos0) - 139: 33(float) CompositeExtract 137 0 - 140: 33(float) CompositeExtract 137 1 - 141: 33(float) CompositeExtract 137 2 - 142: 130(fvec4) CompositeConstruct 139 140 141 138 - Store 134(out_fragColor) 142 + 92(vertex_pos0): 90(ptr) Variable Function + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 32 32 12 12 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 48(meshData) 52 + 79: 7(int) Load 76(tri_idx0) + 82: 80(ptr) AccessChain 67(perPass_meshes) 73 79 + 83: 54(Mesh) Load 82 + 84: 28(ptr) CompositeExtract 83 0 + 87: 85(ptr) AccessChain 48(meshData) 73 + Store 87 84 + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 93 92(vertex_pos0) 52 + 98: 85(ptr) AccessChain 48(meshData) 73 + 99: 28(ptr) Load 98 + 100: 7(int) Load 76(tri_idx0) + 101: 7(int) IMul 13 100 + 105: 102(ptr) AccessChain 99 73 101 + 106: 33(float) Load 105 Aligned 4 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 109 109 12 12 + 107: 85(ptr) AccessChain 48(meshData) 73 + 110: 28(ptr) Load 107 + 111: 7(int) Load 76(tri_idx0) + 112: 7(int) IMul 13 111 + 113: 7(int) IAdd 112 22 + 114: 102(ptr) AccessChain 110 73 113 + 115: 33(float) Load 114 Aligned 4 + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 118 118 12 12 + 116: 85(ptr) AccessChain 48(meshData) 73 + 119: 28(ptr) Load 116 + 120: 7(int) Load 76(tri_idx0) + 121: 7(int) IMul 13 120 + 122: 7(int) IAdd 121 24 + 123: 102(ptr) AccessChain 119 73 122 + 124: 33(float) Load 123 Aligned 4 + 125: 88(fvec3) CompositeConstruct 106 115 124 + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12 + Store 92(vertex_pos0) 125 + 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 134 134 12 12 + 135: 88(fvec3) Load 92(vertex_pos0) + 138: 33(float) CompositeExtract 135 0 + 139: 33(float) CompositeExtract 135 1 + 140: 33(float) CompositeExtract 135 2 + 141: 127(fvec4) CompositeConstruct 138 139 140 137 + Store 131(out_fragColor) 141 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index 398fd86daf..6d0b52fb1c 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -1,16 +1,16 @@ spv.debuginfo.const_params.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 70 +// Id's are bound by 71 Capability Shader Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint GLCompute 14 "main" ExecutionMode 14 LocalSize 1 1 1 - 1: String "" + 2: String "" 8: String "uint" 17: String "float" 35: String "function" @@ -22,7 +22,7 @@ spv.debuginfo.const_params.glsl.comp // OpModuleProcessed entry-point main #line 1 " - 45: String "f" + 43: String "f" 49: String "f2" 52: String "f3" 55: String "f4" @@ -39,60 +39,59 @@ spv.debuginfo.const_params.glsl.comp 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 2 20: 7(int) Constant 2 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypeVector 16(float) 3 - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 24: TypeVector 16(float) 4 25: 7(int) Constant 4 - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 25 + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 25 27: TypeFunction 4 16(float) 19(fvec2) 22(fvec3) 24(fvec4) - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18 21 23 26 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 38 + 28: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 18 21 23 26 + 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 38 39: 7(int) Constant 7 41: 7(int) Constant 1 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 41 25 37 20 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 28 37 39 12 40 35 13 39 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 18 37 39 12 36 25 41 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 21 37 39 12 36 25 20 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 23 37 39 12 36 25 13 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 26 37 39 12 36 25 25 + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 41 25 37 20 + 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 35 28 37 39 12 40 35 13 39 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 18 37 39 12 36 25 41 + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 21 37 39 12 36 25 20 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 23 37 39 12 36 25 13 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 26 37 39 12 36 25 25 59: 7(int) Constant 11 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 6 37 59 12 40 57 13 59 - 64: 7(int) Constant 13 - 65: 16(float) Constant 0 - 66: 19(fvec2) ConstantComposite 65 65 - 67: 22(fvec3) ConstantComposite 65 65 65 - 68: 24(fvec4) ConstantComposite 65 65 65 65 - Line 1 11 11 + 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 6 37 59 12 40 57 13 59 + 64: 16(float) Constant 0 + 65: 19(fvec2) ConstantComposite 64 64 + 66: 22(fvec3) ConstantComposite 64 64 64 + 67: 24(fvec4) ConstantComposite 64 64 64 64 + 70: 7(int) Constant 13 14(main): 4 Function None 5 15: Label - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 14(main) - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 64 64 12 12 - 69: 4 FunctionCall 33(function(f1;vf2;vf3;vf4;) 65 66 67 68 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 59 59 12 12 + 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 14(main) + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 70 70 12 12 + 68: 4 FunctionCall 33(function(f1;vf2;vf3;vf4;) 64 65 66 67 Return FunctionEnd - Line 1 7 18 33(function(f1;vf2;vf3;vf4;): 4 Function None 27 29(f): 16(float) FunctionParameter 30(f2): 19(fvec2) FunctionParameter 31(f3): 22(fvec3) FunctionParameter 32(f4): 24(fvec4) FunctionParameter 34: Label - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 44 29(f) 47 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 48 30(f2) 47 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 51 31(f3) 47 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 54 32(f4) 47 - 60: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(function(f1;vf2;vf3;vf4;) + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 36 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 39 39 12 12 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 42 29(f) 45 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 48 30(f2) 45 + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 51 31(f3) 45 + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 29(DebugValue) 54 32(f4) 45 + 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 36 33(function(f1;vf2;vf3;vf4;) Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 962c99f423..b8cb662ecd 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,16 +1,17 @@ spv.debuginfo.glsl.comp +Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 964 +// Id's are bound by 974 Capability Shader Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 14 "main" 132 + EntryPoint GLCompute 14 "main" 133 ExecutionMode 14 LocalSize 10 10 1 - 1: String "" + 2: String "" 8: String "uint" 17: String "float" 33: String "springForce" @@ -22,1197 +23,1202 @@ spv.debuginfo.glsl.comp // OpModuleProcessed entry-point main #line 1 " - 45: String "p0" + 43: String "p0" 49: String "p1" 52: String "restDist" 54: String "main" - 63: String "dist" - 75: String "int" - 81: String "sphereRadius" - 92: String "gravity" - 96: String "particleCount" - 99: String "UBO" - 104: String "params" - 128: String "id" - 134: String "gl_GlobalInvocationID" - 142: String "index" - 166: String "bool" - 180: String "normal" - 186: String "pinned" - 188: String "Particle" + 60: String "dist" + 74: String "int" + 80: String "sphereRadius" + 91: String "gravity" + 95: String "particleCount" + 98: String "UBO" + 103: String "params" + 127: String "id" + 135: String "gl_GlobalInvocationID" + 141: String "index" + 167: String "bool" + 179: String "normal" + 185: String "pinned" + 187: String "Particle" 193: String "particleIn" 197: String "ParticleIn" - 218: String "particleOut" - 221: String "ParticleOut" + 217: String "particleOut" + 220: String "ParticleOut" 248: String "force" - 261: String "pos" - 271: String "vel" - 571: String "f" - 620: String "sphereDist" - 672: String "calculateNormals" - 675: String "PushConsts" - 681: String "pushConsts" - 716: String "a" - 729: String "b" - 746: String "c" + 262: String "pos" + 272: String "vel" + 576: String "f" + 625: String "sphereDist" + 676: String "calculateNormals" + 679: String "PushConsts" + 686: String "pushConsts" + 720: String "a" + 734: String "b" + 751: String "c" Name 14 "main" Name 31 "springForce(vf3;vf3;f1;" Name 28 "p0" Name 29 "p1" Name 30 "restDist" - Name 61 "dist" - Name 79 "UBO" - MemberName 79(UBO) 0 "deltaT" - MemberName 79(UBO) 1 "particleMass" - MemberName 79(UBO) 2 "springStiffness" - MemberName 79(UBO) 3 "damping" - MemberName 79(UBO) 4 "restDistH" - MemberName 79(UBO) 5 "restDistV" - MemberName 79(UBO) 6 "restDistD" - MemberName 79(UBO) 7 "sphereRadius" - MemberName 79(UBO) 8 "spherePos" - MemberName 79(UBO) 9 "gravity" - MemberName 79(UBO) 10 "particleCount" - Name 102 "params" - Name 126 "id" - Name 132 "gl_GlobalInvocationID" - Name 140 "index" - Name 178 "Particle" - MemberName 178(Particle) 0 "pos" - MemberName 178(Particle) 1 "vel" - MemberName 178(Particle) 2 "uv" - MemberName 178(Particle) 3 "normal" - MemberName 178(Particle) 4 "pinned" + Name 58 "dist" + Name 78 "UBO" + MemberName 78(UBO) 0 "deltaT" + MemberName 78(UBO) 1 "particleMass" + MemberName 78(UBO) 2 "springStiffness" + MemberName 78(UBO) 3 "damping" + MemberName 78(UBO) 4 "restDistH" + MemberName 78(UBO) 5 "restDistV" + MemberName 78(UBO) 6 "restDistD" + MemberName 78(UBO) 7 "sphereRadius" + MemberName 78(UBO) 8 "spherePos" + MemberName 78(UBO) 9 "gravity" + MemberName 78(UBO) 10 "particleCount" + Name 101 "params" + Name 125 "id" + Name 133 "gl_GlobalInvocationID" + Name 139 "index" + Name 177 "Particle" + MemberName 177(Particle) 0 "pos" + MemberName 177(Particle) 1 "vel" + MemberName 177(Particle) 2 "uv" + MemberName 177(Particle) 3 "normal" + MemberName 177(Particle) 4 "pinned" Name 191 "ParticleIn" MemberName 191(ParticleIn) 0 "particleIn" Name 200 "" - Name 216 "ParticleOut" - MemberName 216(ParticleOut) 0 "particleOut" + Name 215 "ParticleOut" + MemberName 215(ParticleOut) 0 "particleOut" Name 224 "" Name 246 "force" - Name 259 "pos" - Name 269 "vel" - Name 289 "param" - Name 293 "param" - Name 295 "param" - Name 318 "param" - Name 322 "param" - Name 324 "param" - Name 351 "param" - Name 355 "param" - Name 357 "param" - Name 379 "param" - Name 383 "param" - Name 385 "param" - Name 421 "param" + Name 260 "pos" + Name 270 "vel" + Name 292 "param" + Name 296 "param" + Name 298 "param" + Name 321 "param" + Name 325 "param" + Name 327 "param" + Name 354 "param" + Name 358 "param" + Name 360 "param" + Name 382 "param" + Name 386 "param" + Name 388 "param" Name 425 "param" - Name 427 "param" - Name 458 "param" - Name 462 "param" - Name 464 "param" - Name 503 "param" - Name 507 "param" + Name 429 "param" + Name 431 "param" + Name 463 "param" + Name 467 "param" + Name 469 "param" Name 509 "param" - Name 544 "param" - Name 548 "param" - Name 550 "param" - Name 569 "f" - Name 618 "sphereDist" - Name 670 "PushConsts" - MemberName 670(PushConsts) 0 "calculateNormals" - Name 679 "pushConsts" - Name 692 "normal" - Name 714 "a" - Name 727 "b" - Name 744 "c" - MemberDecorate 79(UBO) 0 Offset 0 - MemberDecorate 79(UBO) 1 Offset 4 - MemberDecorate 79(UBO) 2 Offset 8 - MemberDecorate 79(UBO) 3 Offset 12 - MemberDecorate 79(UBO) 4 Offset 16 - MemberDecorate 79(UBO) 5 Offset 20 - MemberDecorate 79(UBO) 6 Offset 24 - MemberDecorate 79(UBO) 7 Offset 28 - MemberDecorate 79(UBO) 8 Offset 32 - MemberDecorate 79(UBO) 9 Offset 48 - MemberDecorate 79(UBO) 10 Offset 64 - Decorate 79(UBO) Block - Decorate 102(params) DescriptorSet 0 - Decorate 102(params) Binding 2 - Decorate 132(gl_GlobalInvocationID) BuiltIn GlobalInvocationId - MemberDecorate 178(Particle) 0 Offset 0 - MemberDecorate 178(Particle) 1 Offset 16 - MemberDecorate 178(Particle) 2 Offset 32 - MemberDecorate 178(Particle) 3 Offset 48 - MemberDecorate 178(Particle) 4 Offset 64 + Name 513 "param" + Name 515 "param" + Name 551 "param" + Name 555 "param" + Name 557 "param" + Name 574 "f" + Name 623 "sphereDist" + Name 674 "PushConsts" + MemberName 674(PushConsts) 0 "calculateNormals" + Name 684 "pushConsts" + Name 696 "normal" + Name 718 "a" + Name 732 "b" + Name 749 "c" + MemberDecorate 78(UBO) 0 Offset 0 + MemberDecorate 78(UBO) 1 Offset 4 + MemberDecorate 78(UBO) 2 Offset 8 + MemberDecorate 78(UBO) 3 Offset 12 + MemberDecorate 78(UBO) 4 Offset 16 + MemberDecorate 78(UBO) 5 Offset 20 + MemberDecorate 78(UBO) 6 Offset 24 + MemberDecorate 78(UBO) 7 Offset 28 + MemberDecorate 78(UBO) 8 Offset 32 + MemberDecorate 78(UBO) 9 Offset 48 + MemberDecorate 78(UBO) 10 Offset 64 + Decorate 78(UBO) Block + Decorate 101(params) DescriptorSet 0 + Decorate 101(params) Binding 2 + Decorate 133(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + MemberDecorate 177(Particle) 0 Offset 0 + MemberDecorate 177(Particle) 1 Offset 16 + MemberDecorate 177(Particle) 2 Offset 32 + MemberDecorate 177(Particle) 3 Offset 48 + MemberDecorate 177(Particle) 4 Offset 64 Decorate 189 ArrayStride 80 MemberDecorate 191(ParticleIn) 0 Offset 0 Decorate 191(ParticleIn) BufferBlock Decorate 200 DescriptorSet 0 Decorate 200 Binding 0 - Decorate 214 ArrayStride 80 - MemberDecorate 216(ParticleOut) 0 Offset 0 - Decorate 216(ParticleOut) BufferBlock + Decorate 213 ArrayStride 80 + MemberDecorate 215(ParticleOut) 0 Offset 0 + Decorate 215(ParticleOut) BufferBlock Decorate 224 DescriptorSet 0 Decorate 224 Binding 1 - MemberDecorate 670(PushConsts) 0 Offset 0 - Decorate 670(PushConsts) Block - Decorate 963 BuiltIn WorkgroupSize + MemberDecorate 674(PushConsts) 0 Offset 0 + Decorate 674(PushConsts) Block + Decorate 973 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 3 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 21: TypePointer Function 19(fvec3) 22: 7(int) Constant 7 - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 12 + 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 12 24: TypePointer Function 16(float) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 22 12 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 22 12 26: TypeFunction 19(fvec3) 21(ptr) 21(ptr) 24(ptr) - 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 20 20 20 18 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 36 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 20 20 20 18 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 36 37: 7(int) Constant 66 39: 7(int) Constant 1 40: 7(int) Constant 4 41: 7(int) Constant 2 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 39 40 35 41 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 27 35 37 12 38 33 13 37 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 35 37 12 34 40 39 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 20 35 37 12 34 40 41 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 18 35 37 12 34 40 13 + 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 39 40 35 41 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 27 35 37 12 38 33 13 37 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 43 20 35 37 12 34 40 39 + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 20 35 37 12 34 40 41 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 18 35 37 12 34 40 13 56: 7(int) Constant 72 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 54 6 35 56 12 38 54 13 56 - 60: 7(int) Constant 68 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 63 20 35 60 12 34 40 + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 54 6 35 56 12 38 54 13 56 + 61: 7(int) Constant 68 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 60 20 35 61 12 34 40 69: 7(int) Constant 69 - 72: TypeVector 16(float) 4 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 40 - 74: TypeInt 32 1 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 75 10 40 12 - 77: TypeVector 74(int) 2 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 76 41 - 79(UBO): TypeStruct 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 72(fvec4) 72(fvec4) 77(ivec2) - 82: 7(int) Constant 56 - 83: 7(int) Constant 8 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 18 35 82 83 12 12 13 - 93: 7(int) Constant 58 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 73 35 93 22 12 12 13 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 92 73 35 93 22 12 12 13 - 97: 7(int) Constant 59 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 96 78 35 97 83 12 12 13 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 99 39 35 69 12 38 99 12 13 80 84 85 86 87 88 89 90 91 94 95 - 100: TypePointer Uniform 79(UBO) - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 41 12 - 102(params): 100(ptr) Variable Uniform - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 104 98 35 69 12 38 104 102(params) 83 - 105: 74(int) Constant 2 - 106: TypePointer Uniform 16(float) - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 41 12 - 121: 7(int) Constant 74 - 122: TypeVector 7(int) 3 - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 - 124: TypePointer Function 122(ivec3) - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 123 22 12 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 128 123 35 121 12 55 40 - 130: TypePointer Input 122(ivec3) - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 123 39 12 -132(gl_GlobalInvocationID): 130(ptr) Variable Input - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 123 35 121 12 38 134 132(gl_GlobalInvocationID) 83 - 137: 7(int) Constant 76 - 138: TypePointer Function 7(int) - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 9 35 137 12 55 40 - 146: 74(int) Constant 10 - 147: TypePointer Uniform 74(int) - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 76 41 12 - 157: 7(int) Constant 77 - 165: TypeBool - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 166 10 41 12 - 173: 7(int) Constant 78 - 177: 7(int) Constant 81 - 178(Particle): TypeStruct 72(fvec4) 72(fvec4) 72(fvec4) 72(fvec4) 16(float) - 181: 7(int) Constant 31 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 73 35 181 22 12 12 13 - 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 18 35 10 83 12 12 13 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 188 39 35 177 12 38 188 12 13 179 182 183 184 185 - 189: TypeRuntimeArray 178(Particle) - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 + 71: TypeVector 16(float) 4 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 40 + 73: TypeInt 32 1 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 74 10 40 12 + 76: TypeVector 73(int) 2 + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 75 41 + 78(UBO): TypeStruct 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 16(float) 71(fvec4) 71(fvec4) 76(ivec2) + 81: 7(int) Constant 56 + 82: 7(int) Constant 8 + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 18 35 81 82 12 12 13 + 92: 7(int) Constant 58 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 72 35 92 22 12 12 13 + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 91 72 35 92 22 12 12 13 + 96: 7(int) Constant 59 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 77 35 96 82 12 12 13 + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 98 39 35 69 12 38 98 12 13 79 83 84 85 86 87 88 89 90 93 94 + 99: TypePointer Uniform 78(UBO) + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 97 41 12 + 101(params): 99(ptr) Variable Uniform + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 103 97 35 69 12 38 103 101(params) 82 + 104: 73(int) Constant 2 + 105: TypePointer Uniform 16(float) + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 41 12 + 121: TypeVector 7(int) 3 + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 + 123: TypePointer Function 121(ivec3) + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 122 22 12 + 128: 7(int) Constant 74 + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 127 122 35 128 12 55 40 + 131: TypePointer Input 121(ivec3) + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 122 39 12 +133(gl_GlobalInvocationID): 131(ptr) Variable Input + 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 135 122 35 128 12 38 135 133(gl_GlobalInvocationID) 82 + 137: TypePointer Function 7(int) + 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 + 142: 7(int) Constant 76 + 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 9 35 142 12 55 40 + 147: 73(int) Constant 10 + 148: TypePointer Uniform 73(int) + 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 41 12 + 159: 7(int) Constant 77 + 166: TypeBool + 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 167 10 41 12 + 174: 7(int) Constant 78 + 177(Particle): TypeStruct 71(fvec4) 71(fvec4) 71(fvec4) 71(fvec4) 16(float) + 180: 7(int) Constant 31 + 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 + 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 + 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 + 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 + 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 18 35 10 82 12 12 13 + 188: 7(int) Constant 81 + 186: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 187 39 35 188 12 38 187 12 13 178 181 182 183 184 + 189: TypeRuntimeArray 177(Particle) + 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 186 12 191(ParticleIn): TypeStruct 189 194: 7(int) Constant 36 195: 7(int) Constant 11 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 190 35 194 195 12 12 13 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 197 39 35 177 12 38 197 12 13 192 + 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 190 35 194 195 12 12 13 + 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 197 39 35 188 12 38 197 12 13 192 198: TypePointer Uniform 191(ParticleIn) - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 196 41 12 + 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 196 41 12 200: 198(ptr) Variable Uniform - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 196 35 177 12 38 1 200 83 - 202: 74(int) Constant 0 - 204: 74(int) Constant 4 - 207: 16(float) Constant 1065353216 - 213: 7(int) Constant 82 - 214: TypeRuntimeArray 178(Particle) - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 -216(ParticleOut): TypeStruct 214 - 219: 7(int) Constant 40 - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 218 215 35 219 195 12 12 13 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 221 39 35 213 12 38 221 12 13 217 - 222: TypePointer Uniform 216(ParticleOut) - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 220 41 12 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 196 35 188 12 38 2 200 82 + 202: 73(int) Constant 0 + 206: 73(int) Constant 4 + 209: 16(float) Constant 1065353216 + 213: TypeRuntimeArray 177(Particle) + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 186 12 +215(ParticleOut): TypeStruct 213 + 218: 7(int) Constant 40 + 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 217 214 35 218 195 12 12 13 + 221: 7(int) Constant 82 + 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 220 39 35 221 12 38 220 12 13 216 + 222: TypePointer Uniform 215(ParticleOut) + 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 219 41 12 224: 222(ptr) Variable Uniform - 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 220 35 213 12 38 1 224 83 - 228: TypePointer Uniform 72(fvec4) - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 41 12 - 234: 7(int) Constant 83 - 236: 74(int) Constant 1 - 237: 16(float) Constant 0 - 238: 72(fvec4) ConstantComposite 237 237 237 237 - 241: 7(int) Constant 84 - 245: 7(int) Constant 88 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 248 20 35 245 12 55 40 - 250: 74(int) Constant 9 - 258: 7(int) Constant 90 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 261 20 35 258 12 55 40 - 268: 7(int) Constant 91 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 271 20 35 268 12 55 40 - 278: 7(int) Constant 95 - 286: 7(int) Constant 96 - 303: 7(int) Constant 99 - 315: 7(int) Constant 100 - 332: 7(int) Constant 103 - 344: 7(int) Constant 104 - 350: 74(int) Constant 5 - 365: 7(int) Constant 107 - 373: 7(int) Constant 108 - 393: 7(int) Constant 111 - 413: 7(int) Constant 112 - 420: 74(int) Constant 6 - 435: 7(int) Constant 115 - 451: 7(int) Constant 116 - 472: 7(int) Constant 119 - 496: 7(int) Constant 120 - 517: 7(int) Constant 123 - 537: 7(int) Constant 124 - 558: 7(int) Constant 127 - 559: 74(int) Constant 3 - 568: 7(int) Constant 130 - 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 571 20 35 568 12 55 40 - 579: 7(int) Constant 131 - 587: 16(float) Constant 1056964608 - 603: 7(int) Constant 132 - 617: 7(int) Constant 135 - 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 620 20 35 617 12 55 40 - 626: 74(int) Constant 8 - 632: 7(int) Constant 136 - 635: 74(int) Constant 7 - 638: 16(float) Constant 1008981770 - 645: 7(int) Constant 138 - 664: 7(int) Constant 140 - 669: 7(int) Constant 144 - 670(PushConsts): TypeStruct 7(int) - 673: 7(int) Constant 63 - 671: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 672 9 35 673 22 12 12 13 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 675 39 35 669 12 38 675 12 13 671 - 676: TypePointer PushConstant 670(PushConsts) - 677: 7(int) Constant 9 - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 674 677 12 - 679(pushConsts): 676(ptr) Variable PushConstant - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 681 674 35 669 12 38 681 679(pushConsts) 83 - 682: TypePointer PushConstant 7(int) - 683: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 677 12 - 691: 7(int) Constant 145 - 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 20 35 691 12 55 40 - 695: 19(fvec3) ConstantComposite 237 237 237 - 697: 7(int) Constant 147 - 705: 7(int) Constant 148 - 713: 7(int) Constant 149 - 715: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 716 20 35 713 12 55 40 - 726: 7(int) Constant 150 - 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 729 20 35 726 12 55 40 - 743: 7(int) Constant 151 - 745: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 746 20 35 743 12 55 40 - 759: 7(int) Constant 152 - 771: 7(int) Constant 154 - 783: 7(int) Constant 155 - 795: 7(int) Constant 156 - 808: 7(int) Constant 157 - 817: 7(int) Constant 158 - 829: 7(int) Constant 161 - 841: 7(int) Constant 162 - 849: 7(int) Constant 163 - 861: 7(int) Constant 164 - 874: 7(int) Constant 165 - 883: 7(int) Constant 166 - 895: 7(int) Constant 168 - 907: 7(int) Constant 169 - 916: 7(int) Constant 170 - 929: 7(int) Constant 171 - 941: 7(int) Constant 172 - 953: 7(int) Constant 175 - 962: 7(int) Constant 10 - 963: 122(ivec3) ConstantComposite 962 962 39 - Line 1 72 11 + 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 219 35 221 12 38 2 224 82 + 230: TypePointer Uniform 71(fvec4) + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 41 12 + 237: 7(int) Constant 83 + 238: 73(int) Constant 1 + 239: 16(float) Constant 0 + 240: 71(fvec4) ConstantComposite 239 239 239 239 + 243: 7(int) Constant 84 + 249: 7(int) Constant 88 + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 248 20 35 249 12 55 40 + 253: 73(int) Constant 9 + 263: 7(int) Constant 90 + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 262 20 35 263 12 55 40 + 273: 7(int) Constant 91 + 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 20 35 273 12 55 40 + 282: 7(int) Constant 95 + 290: 7(int) Constant 96 + 307: 7(int) Constant 99 + 319: 7(int) Constant 100 + 336: 7(int) Constant 103 + 348: 7(int) Constant 104 + 353: 73(int) Constant 5 + 369: 7(int) Constant 107 + 377: 7(int) Constant 108 + 397: 7(int) Constant 111 + 418: 7(int) Constant 112 + 424: 73(int) Constant 6 + 440: 7(int) Constant 115 + 457: 7(int) Constant 116 + 478: 7(int) Constant 119 + 503: 7(int) Constant 120 + 524: 7(int) Constant 123 + 545: 7(int) Constant 124 + 563: 73(int) Constant 3 + 567: 7(int) Constant 127 + 577: 7(int) Constant 130 + 575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 576 20 35 577 12 55 40 + 587: 7(int) Constant 131 + 594: 16(float) Constant 1056964608 + 611: 7(int) Constant 132 + 626: 7(int) Constant 135 + 624: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 625 20 35 626 12 55 40 + 633: 73(int) Constant 8 + 640: 7(int) Constant 136 + 642: 73(int) Constant 7 + 645: 16(float) Constant 1008981770 + 653: 7(int) Constant 138 + 672: 7(int) Constant 140 + 674(PushConsts): TypeStruct 7(int) + 677: 7(int) Constant 63 + 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 676 9 35 677 22 12 12 13 + 680: 7(int) Constant 144 + 678: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 679 39 35 680 12 38 679 12 13 675 + 681: TypePointer PushConstant 674(PushConsts) + 682: 7(int) Constant 9 + 683: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 678 682 12 + 684(pushConsts): 681(ptr) Variable PushConstant + 685: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 686 678 35 680 12 38 686 684(pushConsts) 82 + 687: TypePointer PushConstant 7(int) + 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 682 12 + 698: 7(int) Constant 145 + 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 20 35 698 12 55 40 + 702: 19(fvec3) ConstantComposite 239 239 239 + 705: 7(int) Constant 147 + 713: 7(int) Constant 148 + 721: 7(int) Constant 149 + 719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 20 35 721 12 55 40 + 735: 7(int) Constant 150 + 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 20 35 735 12 55 40 + 752: 7(int) Constant 151 + 750: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 751 20 35 752 12 55 40 + 767: 7(int) Constant 152 + 779: 7(int) Constant 154 + 791: 7(int) Constant 155 + 803: 7(int) Constant 156 + 816: 7(int) Constant 157 + 825: 7(int) Constant 158 + 838: 7(int) Constant 161 + 850: 7(int) Constant 162 + 858: 7(int) Constant 163 + 870: 7(int) Constant 164 + 883: 7(int) Constant 165 + 892: 7(int) Constant 166 + 904: 7(int) Constant 168 + 916: 7(int) Constant 169 + 925: 7(int) Constant 170 + 938: 7(int) Constant 171 + 950: 7(int) Constant 172 + 963: 7(int) Constant 175 + 972: 7(int) Constant 10 + 973: 121(ivec3) ConstantComposite 972 972 39 14(main): 4 Function None 5 15: Label - 126(id): 124(ptr) Variable Function - 140(index): 138(ptr) Variable Function + 125(id): 123(ptr) Variable Function + 139(index): 137(ptr) Variable Function 246(force): 21(ptr) Variable Function - 259(pos): 21(ptr) Variable Function - 269(vel): 21(ptr) Variable Function - 289(param): 21(ptr) Variable Function - 293(param): 21(ptr) Variable Function - 295(param): 24(ptr) Variable Function - 318(param): 21(ptr) Variable Function - 322(param): 21(ptr) Variable Function - 324(param): 24(ptr) Variable Function - 351(param): 21(ptr) Variable Function - 355(param): 21(ptr) Variable Function - 357(param): 24(ptr) Variable Function - 379(param): 21(ptr) Variable Function - 383(param): 21(ptr) Variable Function - 385(param): 24(ptr) Variable Function - 421(param): 21(ptr) Variable Function + 260(pos): 21(ptr) Variable Function + 270(vel): 21(ptr) Variable Function + 292(param): 21(ptr) Variable Function + 296(param): 21(ptr) Variable Function + 298(param): 24(ptr) Variable Function + 321(param): 21(ptr) Variable Function + 325(param): 21(ptr) Variable Function + 327(param): 24(ptr) Variable Function + 354(param): 21(ptr) Variable Function + 358(param): 21(ptr) Variable Function + 360(param): 24(ptr) Variable Function + 382(param): 21(ptr) Variable Function + 386(param): 21(ptr) Variable Function + 388(param): 24(ptr) Variable Function 425(param): 21(ptr) Variable Function - 427(param): 24(ptr) Variable Function - 458(param): 21(ptr) Variable Function - 462(param): 21(ptr) Variable Function - 464(param): 24(ptr) Variable Function - 503(param): 21(ptr) Variable Function - 507(param): 21(ptr) Variable Function - 509(param): 24(ptr) Variable Function - 544(param): 21(ptr) Variable Function - 548(param): 21(ptr) Variable Function - 550(param): 24(ptr) Variable Function - 569(f): 21(ptr) Variable Function - 618(sphereDist): 21(ptr) Variable Function - 692(normal): 21(ptr) Variable Function - 714(a): 21(ptr) Variable Function - 727(b): 21(ptr) Variable Function - 744(c): 21(ptr) Variable Function - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 14(main) - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 121 121 12 12 - 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 127 126(id) 47 - 135: 122(ivec3) Load 132(gl_GlobalInvocationID) - Store 126(id) 135 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 137 137 12 12 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(index) 47 - 144: 138(ptr) AccessChain 126(id) 39 - 145: 7(int) Load 144 - 149: 147(ptr) AccessChain 102(params) 146 12 - 150: 74(int) Load 149 - 151: 7(int) Bitcast 150 - 152: 7(int) IMul 145 151 - 153: 138(ptr) AccessChain 126(id) 12 - 154: 7(int) Load 153 - 155: 7(int) IAdd 152 154 - Store 140(index) 155 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 157 157 12 12 - 158: 7(int) Load 140(index) - 159: 147(ptr) AccessChain 102(params) 146 12 - 160: 74(int) Load 159 - 161: 147(ptr) AccessChain 102(params) 146 39 - 162: 74(int) Load 161 - 163: 74(int) IMul 160 162 - 164: 7(int) Bitcast 163 - 168: 165(bool) UGreaterThan 158 164 - SelectionMerge 170 None - BranchConditional 168 169 170 - 169: Label - 171: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 173 173 12 12 + 429(param): 21(ptr) Variable Function + 431(param): 24(ptr) Variable Function + 463(param): 21(ptr) Variable Function + 467(param): 21(ptr) Variable Function + 469(param): 24(ptr) Variable Function + 509(param): 21(ptr) Variable Function + 513(param): 21(ptr) Variable Function + 515(param): 24(ptr) Variable Function + 551(param): 21(ptr) Variable Function + 555(param): 21(ptr) Variable Function + 557(param): 24(ptr) Variable Function + 574(f): 21(ptr) Variable Function + 623(sphereDist): 21(ptr) Variable Function + 696(normal): 21(ptr) Variable Function + 718(a): 21(ptr) Variable Function + 732(b): 21(ptr) Variable Function + 749(c): 21(ptr) Variable Function + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 56 56 12 12 + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 14(main) + 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 128 128 12 12 + 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 126 125(id) 45 + 136: 121(ivec3) Load 133(gl_GlobalInvocationID) + Store 125(id) 136 + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 142 142 12 12 + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 140 139(index) 45 + 145: 137(ptr) AccessChain 125(id) 39 + 146: 7(int) Load 145 + 150: 148(ptr) AccessChain 101(params) 147 12 + 151: 73(int) Load 150 + 152: 7(int) Bitcast 151 + 153: 7(int) IMul 146 152 + 154: 137(ptr) AccessChain 125(id) 12 + 155: 7(int) Load 154 + 156: 7(int) IAdd 153 155 + Store 139(index) 156 + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 159 159 12 12 + 157: 7(int) Load 139(index) + 160: 148(ptr) AccessChain 101(params) 147 12 + 161: 73(int) Load 160 + 162: 148(ptr) AccessChain 101(params) 147 39 + 163: 73(int) Load 162 + 164: 73(int) IMul 161 163 + 165: 7(int) Bitcast 164 + 169: 166(bool) UGreaterThan 157 165 + SelectionMerge 171 None + BranchConditional 169 170 171 + 170: Label + 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 174 174 12 12 Return - 170: Label - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 177 177 12 12 - 203: 7(int) Load 140(index) - 205: 106(ptr) AccessChain 200 202 203 204 - 206: 16(float) Load 205 - 208: 165(bool) FOrdEqual 206 207 - SelectionMerge 210 None - BranchConditional 208 209 210 - 209: Label - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 213 213 12 12 - 226: 7(int) Load 140(index) - 227: 7(int) Load 140(index) - 230: 228(ptr) AccessChain 224 202 227 202 - 231: 72(fvec4) Load 230 - 232: 228(ptr) AccessChain 224 202 226 202 - Store 232 231 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 234 234 12 12 - 235: 7(int) Load 140(index) - 239: 228(ptr) AccessChain 224 202 235 236 - Store 239 238 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 241 241 12 12 + 171: Label + 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 188 188 12 12 + 203: 7(int) Load 139(index) + 207: 105(ptr) AccessChain 200 202 203 206 + 208: 16(float) Load 207 + 210: 166(bool) FOrdEqual 208 209 + SelectionMerge 212 None + BranchConditional 210 211 212 + 211: Label + 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 221 221 12 12 + 226: 7(int) Load 139(index) + 229: 7(int) Load 139(index) + 232: 230(ptr) AccessChain 224 202 229 202 + 233: 71(fvec4) Load 232 + 234: 230(ptr) AccessChain 224 202 226 202 + Store 234 233 + 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 237 237 12 12 + 235: 7(int) Load 139(index) + 241: 230(ptr) AccessChain 224 202 235 238 + Store 241 240 + 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 243 243 12 12 Return - 210: Label - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 245 245 12 12 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 247 246(force) 47 - 251: 228(ptr) AccessChain 102(params) 250 - 252: 72(fvec4) Load 251 - 253: 19(fvec3) VectorShuffle 252 252 0 1 2 - 254: 106(ptr) AccessChain 102(params) 236 - 255: 16(float) Load 254 - 256: 19(fvec3) VectorTimesScalar 253 255 - Store 246(force) 256 - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 258 258 12 12 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 260 259(pos) 47 - 263: 7(int) Load 140(index) - 264: 228(ptr) AccessChain 200 202 263 202 - 265: 72(fvec4) Load 264 - 266: 19(fvec3) VectorShuffle 265 265 0 1 2 - Store 259(pos) 266 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 268 268 12 12 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 270 269(vel) 47 - 273: 7(int) Load 140(index) - 274: 228(ptr) AccessChain 200 202 273 236 - 275: 72(fvec4) Load 274 - 276: 19(fvec3) VectorShuffle 275 275 0 1 2 - Store 269(vel) 276 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 278 278 12 12 - 279: 138(ptr) AccessChain 126(id) 12 - 280: 7(int) Load 279 - 281: 165(bool) UGreaterThan 280 12 - SelectionMerge 283 None - BranchConditional 281 282 283 - 282: Label - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 286 286 12 12 - 287: 7(int) Load 140(index) - 288: 7(int) ISub 287 39 - 290: 228(ptr) AccessChain 200 202 288 202 - 291: 72(fvec4) Load 290 - 292: 19(fvec3) VectorShuffle 291 291 0 1 2 - Store 289(param) 292 - 294: 19(fvec3) Load 259(pos) - Store 293(param) 294 - 296: 106(ptr) AccessChain 102(params) 204 - 297: 16(float) Load 296 - Store 295(param) 297 - 298: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 289(param) 293(param) 295(param) - 299: 19(fvec3) Load 246(force) - 300: 19(fvec3) FAdd 299 298 - Store 246(force) 300 - Branch 283 - 283: Label - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 303 303 12 12 - 304: 138(ptr) AccessChain 126(id) 12 - 305: 7(int) Load 304 - 306: 147(ptr) AccessChain 102(params) 146 12 - 307: 74(int) Load 306 - 308: 74(int) ISub 307 236 - 309: 7(int) Bitcast 308 - 310: 165(bool) ULessThan 305 309 - SelectionMerge 312 None - BranchConditional 310 311 312 - 311: Label - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 315 315 12 12 - 316: 7(int) Load 140(index) - 317: 7(int) IAdd 316 39 - 319: 228(ptr) AccessChain 200 202 317 202 - 320: 72(fvec4) Load 319 - 321: 19(fvec3) VectorShuffle 320 320 0 1 2 - Store 318(param) 321 - 323: 19(fvec3) Load 259(pos) - Store 322(param) 323 - 325: 106(ptr) AccessChain 102(params) 204 - 326: 16(float) Load 325 - Store 324(param) 326 - 327: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 318(param) 322(param) 324(param) - 328: 19(fvec3) Load 246(force) - 329: 19(fvec3) FAdd 328 327 - Store 246(force) 329 - Branch 312 - 312: Label - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 332 332 12 12 - 333: 138(ptr) AccessChain 126(id) 39 - 334: 7(int) Load 333 - 335: 147(ptr) AccessChain 102(params) 146 39 - 336: 74(int) Load 335 - 337: 74(int) ISub 336 236 - 338: 7(int) Bitcast 337 - 339: 165(bool) ULessThan 334 338 - SelectionMerge 341 None - BranchConditional 339 340 341 - 340: Label - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 344 344 12 12 - 345: 7(int) Load 140(index) - 346: 147(ptr) AccessChain 102(params) 146 12 - 347: 74(int) Load 346 - 348: 7(int) Bitcast 347 - 349: 7(int) IAdd 345 348 - 352: 228(ptr) AccessChain 200 202 349 202 - 353: 72(fvec4) Load 352 - 354: 19(fvec3) VectorShuffle 353 353 0 1 2 - Store 351(param) 354 - 356: 19(fvec3) Load 259(pos) - Store 355(param) 356 - 358: 106(ptr) AccessChain 102(params) 350 - 359: 16(float) Load 358 - Store 357(param) 359 - 360: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 351(param) 355(param) 357(param) - 361: 19(fvec3) Load 246(force) - 362: 19(fvec3) FAdd 361 360 - Store 246(force) 362 - Branch 341 - 341: Label - 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 365 365 12 12 - 366: 138(ptr) AccessChain 126(id) 39 - 367: 7(int) Load 366 - 368: 165(bool) UGreaterThan 367 12 - SelectionMerge 370 None - BranchConditional 368 369 370 - 369: Label - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 373 373 12 12 - 374: 7(int) Load 140(index) - 375: 147(ptr) AccessChain 102(params) 146 12 - 376: 74(int) Load 375 - 377: 7(int) Bitcast 376 - 378: 7(int) ISub 374 377 - 380: 228(ptr) AccessChain 200 202 378 202 - 381: 72(fvec4) Load 380 - 382: 19(fvec3) VectorShuffle 381 381 0 1 2 - Store 379(param) 382 - 384: 19(fvec3) Load 259(pos) - Store 383(param) 384 - 386: 106(ptr) AccessChain 102(params) 350 - 387: 16(float) Load 386 - Store 385(param) 387 - 388: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 379(param) 383(param) 385(param) - 389: 19(fvec3) Load 246(force) - 390: 19(fvec3) FAdd 389 388 - Store 246(force) 390 - Branch 370 - 370: Label - 391: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 393 393 12 12 - 394: 138(ptr) AccessChain 126(id) 12 - 395: 7(int) Load 394 - 396: 165(bool) UGreaterThan 395 12 - SelectionMerge 398 None - BranchConditional 396 397 398 - 397: Label - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 393 393 12 12 - 401: 138(ptr) AccessChain 126(id) 39 - 402: 7(int) Load 401 - 403: 147(ptr) AccessChain 102(params) 146 39 - 404: 74(int) Load 403 - 405: 74(int) ISub 404 236 - 406: 7(int) Bitcast 405 - 407: 165(bool) ULessThan 402 406 - Branch 398 - 398: Label - 408: 165(bool) Phi 396 370 407 397 - SelectionMerge 410 None - BranchConditional 408 409 410 - 409: Label - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 413 413 12 12 - 414: 7(int) Load 140(index) - 415: 147(ptr) AccessChain 102(params) 146 12 - 416: 74(int) Load 415 - 417: 7(int) Bitcast 416 - 418: 7(int) IAdd 414 417 - 419: 7(int) ISub 418 39 - 422: 228(ptr) AccessChain 200 202 419 202 - 423: 72(fvec4) Load 422 - 424: 19(fvec3) VectorShuffle 423 423 0 1 2 - Store 421(param) 424 - 426: 19(fvec3) Load 259(pos) - Store 425(param) 426 - 428: 106(ptr) AccessChain 102(params) 420 - 429: 16(float) Load 428 - Store 427(param) 429 - 430: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 421(param) 425(param) 427(param) - 431: 19(fvec3) Load 246(force) - 432: 19(fvec3) FAdd 431 430 - Store 246(force) 432 - Branch 410 - 410: Label - 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 434: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 435 435 12 12 - 436: 138(ptr) AccessChain 126(id) 12 - 437: 7(int) Load 436 - 438: 165(bool) UGreaterThan 437 12 - SelectionMerge 440 None - BranchConditional 438 439 440 - 439: Label - 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 435 435 12 12 - 443: 138(ptr) AccessChain 126(id) 39 - 444: 7(int) Load 443 - 445: 165(bool) UGreaterThan 444 12 - Branch 440 - 440: Label - 446: 165(bool) Phi 438 410 445 439 - SelectionMerge 448 None - BranchConditional 446 447 448 - 447: Label - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 451 451 12 12 - 452: 7(int) Load 140(index) - 453: 147(ptr) AccessChain 102(params) 146 12 - 454: 74(int) Load 453 - 455: 7(int) Bitcast 454 - 456: 7(int) ISub 452 455 - 457: 7(int) ISub 456 39 - 459: 228(ptr) AccessChain 200 202 457 202 - 460: 72(fvec4) Load 459 - 461: 19(fvec3) VectorShuffle 460 460 0 1 2 - Store 458(param) 461 - 463: 19(fvec3) Load 259(pos) - Store 462(param) 463 - 465: 106(ptr) AccessChain 102(params) 420 - 466: 16(float) Load 465 - Store 464(param) 466 - 467: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 458(param) 462(param) 464(param) - 468: 19(fvec3) Load 246(force) - 469: 19(fvec3) FAdd 468 467 - Store 246(force) 469 - Branch 448 - 448: Label - 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 472 472 12 12 - 473: 138(ptr) AccessChain 126(id) 12 - 474: 7(int) Load 473 - 475: 147(ptr) AccessChain 102(params) 146 12 - 476: 74(int) Load 475 - 477: 74(int) ISub 476 236 - 478: 7(int) Bitcast 477 - 479: 165(bool) ULessThan 474 478 - SelectionMerge 481 None - BranchConditional 479 480 481 - 480: Label - 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 472 472 12 12 - 484: 138(ptr) AccessChain 126(id) 39 - 485: 7(int) Load 484 - 486: 147(ptr) AccessChain 102(params) 146 39 - 487: 74(int) Load 486 - 488: 74(int) ISub 487 236 - 489: 7(int) Bitcast 488 - 490: 165(bool) ULessThan 485 489 - Branch 481 - 481: Label - 491: 165(bool) Phi 479 448 490 480 - SelectionMerge 493 None - BranchConditional 491 492 493 - 492: Label - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 495: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 496 496 12 12 - 497: 7(int) Load 140(index) - 498: 147(ptr) AccessChain 102(params) 146 12 - 499: 74(int) Load 498 - 500: 7(int) Bitcast 499 - 501: 7(int) IAdd 497 500 - 502: 7(int) IAdd 501 39 - 504: 228(ptr) AccessChain 200 202 502 202 - 505: 72(fvec4) Load 504 - 506: 19(fvec3) VectorShuffle 505 505 0 1 2 - Store 503(param) 506 - 508: 19(fvec3) Load 259(pos) - Store 507(param) 508 - 510: 106(ptr) AccessChain 102(params) 420 - 511: 16(float) Load 510 - Store 509(param) 511 - 512: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 503(param) 507(param) 509(param) - 513: 19(fvec3) Load 246(force) - 514: 19(fvec3) FAdd 513 512 - Store 246(force) 514 - Branch 493 - 493: Label - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 516: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 517 517 12 12 - 518: 138(ptr) AccessChain 126(id) 12 - 519: 7(int) Load 518 - 520: 147(ptr) AccessChain 102(params) 146 12 - 521: 74(int) Load 520 - 522: 74(int) ISub 521 236 - 523: 7(int) Bitcast 522 - 524: 165(bool) ULessThan 519 523 - SelectionMerge 526 None - BranchConditional 524 525 526 - 525: Label - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 517 517 12 12 - 529: 138(ptr) AccessChain 126(id) 39 - 530: 7(int) Load 529 - 531: 165(bool) UGreaterThan 530 12 - Branch 526 - 526: Label - 532: 165(bool) Phi 524 493 531 525 - SelectionMerge 534 None - BranchConditional 532 533 534 - 533: Label - 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 537 537 12 12 - 538: 7(int) Load 140(index) - 539: 147(ptr) AccessChain 102(params) 146 12 - 540: 74(int) Load 539 - 541: 7(int) Bitcast 540 - 542: 7(int) ISub 538 541 - 543: 7(int) IAdd 542 39 - 545: 228(ptr) AccessChain 200 202 543 202 - 546: 72(fvec4) Load 545 - 547: 19(fvec3) VectorShuffle 546 546 0 1 2 - Store 544(param) 547 - 549: 19(fvec3) Load 259(pos) - Store 548(param) 549 - 551: 106(ptr) AccessChain 102(params) 420 - 552: 16(float) Load 551 - Store 550(param) 552 - 553: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 544(param) 548(param) 550(param) - 554: 19(fvec3) Load 246(force) - 555: 19(fvec3) FAdd 554 553 - Store 246(force) 555 - Branch 534 - 534: Label - 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 558 558 12 12 - 560: 106(ptr) AccessChain 102(params) 559 - 561: 16(float) Load 560 - 562: 16(float) FNegate 561 - 563: 19(fvec3) Load 269(vel) - 564: 19(fvec3) VectorTimesScalar 563 562 - 565: 19(fvec3) Load 246(force) - 566: 19(fvec3) FAdd 565 564 - Store 246(force) 566 - 567: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 568 568 12 12 - 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 570 569(f) 47 - 573: 19(fvec3) Load 246(force) - 574: 106(ptr) AccessChain 102(params) 236 - 575: 16(float) Load 574 - 576: 16(float) FDiv 207 575 - 577: 19(fvec3) VectorTimesScalar 573 576 - Store 569(f) 577 - 578: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 579 579 12 12 - 580: 7(int) Load 140(index) - 581: 19(fvec3) Load 259(pos) - 582: 19(fvec3) Load 269(vel) - 583: 106(ptr) AccessChain 102(params) 202 - 584: 16(float) Load 583 - 585: 19(fvec3) VectorTimesScalar 582 584 - 586: 19(fvec3) FAdd 581 585 - 588: 19(fvec3) Load 569(f) - 589: 19(fvec3) VectorTimesScalar 588 587 - 590: 106(ptr) AccessChain 102(params) 202 + 212: Label + 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 249 249 12 12 + 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 247 246(force) 45 + 254: 230(ptr) AccessChain 101(params) 253 + 255: 71(fvec4) Load 254 + 256: 19(fvec3) VectorShuffle 255 255 0 1 2 + 257: 105(ptr) AccessChain 101(params) 238 + 258: 16(float) Load 257 + 259: 19(fvec3) VectorTimesScalar 256 258 + Store 246(force) 259 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 263 263 12 12 + 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 261 260(pos) 45 + 266: 7(int) Load 139(index) + 267: 230(ptr) AccessChain 200 202 266 202 + 268: 71(fvec4) Load 267 + 269: 19(fvec3) VectorShuffle 268 268 0 1 2 + Store 260(pos) 269 + 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 273 273 12 12 + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(vel) 45 + 276: 7(int) Load 139(index) + 277: 230(ptr) AccessChain 200 202 276 238 + 278: 71(fvec4) Load 277 + 279: 19(fvec3) VectorShuffle 278 278 0 1 2 + Store 270(vel) 279 + 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 282 282 12 12 + 280: 137(ptr) AccessChain 125(id) 12 + 283: 7(int) Load 280 + 284: 166(bool) UGreaterThan 283 12 + SelectionMerge 286 None + BranchConditional 284 285 286 + 285: Label + 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 290 290 12 12 + 287: 7(int) Load 139(index) + 291: 7(int) ISub 287 39 + 293: 230(ptr) AccessChain 200 202 291 202 + 294: 71(fvec4) Load 293 + 295: 19(fvec3) VectorShuffle 294 294 0 1 2 + Store 292(param) 295 + 297: 19(fvec3) Load 260(pos) + Store 296(param) 297 + 299: 105(ptr) AccessChain 101(params) 206 + 300: 16(float) Load 299 + Store 298(param) 300 + 301: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 292(param) 296(param) 298(param) + 302: 19(fvec3) Load 246(force) + 303: 19(fvec3) FAdd 302 301 + Store 246(force) 303 + Branch 286 + 286: Label + 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 307 307 12 12 + 304: 137(ptr) AccessChain 125(id) 12 + 308: 7(int) Load 304 + 309: 148(ptr) AccessChain 101(params) 147 12 + 310: 73(int) Load 309 + 311: 73(int) ISub 310 238 + 312: 7(int) Bitcast 311 + 313: 166(bool) ULessThan 308 312 + SelectionMerge 315 None + BranchConditional 313 314 315 + 314: Label + 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 319 319 12 12 + 316: 7(int) Load 139(index) + 320: 7(int) IAdd 316 39 + 322: 230(ptr) AccessChain 200 202 320 202 + 323: 71(fvec4) Load 322 + 324: 19(fvec3) VectorShuffle 323 323 0 1 2 + Store 321(param) 324 + 326: 19(fvec3) Load 260(pos) + Store 325(param) 326 + 328: 105(ptr) AccessChain 101(params) 206 + 329: 16(float) Load 328 + Store 327(param) 329 + 330: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 321(param) 325(param) 327(param) + 331: 19(fvec3) Load 246(force) + 332: 19(fvec3) FAdd 331 330 + Store 246(force) 332 + Branch 315 + 315: Label + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 12 12 + 333: 137(ptr) AccessChain 125(id) 39 + 337: 7(int) Load 333 + 338: 148(ptr) AccessChain 101(params) 147 39 + 339: 73(int) Load 338 + 340: 73(int) ISub 339 238 + 341: 7(int) Bitcast 340 + 342: 166(bool) ULessThan 337 341 + SelectionMerge 344 None + BranchConditional 342 343 344 + 343: Label + 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 348 348 12 12 + 345: 7(int) Load 139(index) + 349: 148(ptr) AccessChain 101(params) 147 12 + 350: 73(int) Load 349 + 351: 7(int) Bitcast 350 + 352: 7(int) IAdd 345 351 + 355: 230(ptr) AccessChain 200 202 352 202 + 356: 71(fvec4) Load 355 + 357: 19(fvec3) VectorShuffle 356 356 0 1 2 + Store 354(param) 357 + 359: 19(fvec3) Load 260(pos) + Store 358(param) 359 + 361: 105(ptr) AccessChain 101(params) 353 + 362: 16(float) Load 361 + Store 360(param) 362 + 363: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 354(param) 358(param) 360(param) + 364: 19(fvec3) Load 246(force) + 365: 19(fvec3) FAdd 364 363 + Store 246(force) 365 + Branch 344 + 344: Label + 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 369 369 12 12 + 366: 137(ptr) AccessChain 125(id) 39 + 370: 7(int) Load 366 + 371: 166(bool) UGreaterThan 370 12 + SelectionMerge 373 None + BranchConditional 371 372 373 + 372: Label + 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 377 377 12 12 + 374: 7(int) Load 139(index) + 378: 148(ptr) AccessChain 101(params) 147 12 + 379: 73(int) Load 378 + 380: 7(int) Bitcast 379 + 381: 7(int) ISub 374 380 + 383: 230(ptr) AccessChain 200 202 381 202 + 384: 71(fvec4) Load 383 + 385: 19(fvec3) VectorShuffle 384 384 0 1 2 + Store 382(param) 385 + 387: 19(fvec3) Load 260(pos) + Store 386(param) 387 + 389: 105(ptr) AccessChain 101(params) 353 + 390: 16(float) Load 389 + Store 388(param) 390 + 391: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 382(param) 386(param) 388(param) + 392: 19(fvec3) Load 246(force) + 393: 19(fvec3) FAdd 392 391 + Store 246(force) 393 + Branch 373 + 373: Label + 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 397 397 12 12 + 394: 137(ptr) AccessChain 125(id) 12 + 398: 7(int) Load 394 + 399: 166(bool) UGreaterThan 398 12 + SelectionMerge 401 None + BranchConditional 399 400 401 + 400: Label + 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 397 397 12 12 + 402: 137(ptr) AccessChain 125(id) 39 + 405: 7(int) Load 402 + 406: 148(ptr) AccessChain 101(params) 147 39 + 407: 73(int) Load 406 + 408: 73(int) ISub 407 238 + 409: 7(int) Bitcast 408 + 410: 166(bool) ULessThan 405 409 + Branch 401 + 401: Label + 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 411: 166(bool) Phi 399 373 410 400 + SelectionMerge 414 None + BranchConditional 411 413 414 + 413: Label + 416: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 418 418 12 12 + 415: 7(int) Load 139(index) + 419: 148(ptr) AccessChain 101(params) 147 12 + 420: 73(int) Load 419 + 421: 7(int) Bitcast 420 + 422: 7(int) IAdd 415 421 + 423: 7(int) ISub 422 39 + 426: 230(ptr) AccessChain 200 202 423 202 + 427: 71(fvec4) Load 426 + 428: 19(fvec3) VectorShuffle 427 427 0 1 2 + Store 425(param) 428 + 430: 19(fvec3) Load 260(pos) + Store 429(param) 430 + 432: 105(ptr) AccessChain 101(params) 424 + 433: 16(float) Load 432 + Store 431(param) 433 + 434: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 425(param) 429(param) 431(param) + 435: 19(fvec3) Load 246(force) + 436: 19(fvec3) FAdd 435 434 + Store 246(force) 436 + Branch 414 + 414: Label + 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 440 440 12 12 + 437: 137(ptr) AccessChain 125(id) 12 + 441: 7(int) Load 437 + 442: 166(bool) UGreaterThan 441 12 + SelectionMerge 444 None + BranchConditional 442 443 444 + 443: Label + 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 440 440 12 12 + 445: 137(ptr) AccessChain 125(id) 39 + 448: 7(int) Load 445 + 449: 166(bool) UGreaterThan 448 12 + Branch 444 + 444: Label + 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 450: 166(bool) Phi 442 414 449 443 + SelectionMerge 453 None + BranchConditional 450 452 453 + 452: Label + 455: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 457 457 12 12 + 454: 7(int) Load 139(index) + 458: 148(ptr) AccessChain 101(params) 147 12 + 459: 73(int) Load 458 + 460: 7(int) Bitcast 459 + 461: 7(int) ISub 454 460 + 462: 7(int) ISub 461 39 + 464: 230(ptr) AccessChain 200 202 462 202 + 465: 71(fvec4) Load 464 + 466: 19(fvec3) VectorShuffle 465 465 0 1 2 + Store 463(param) 466 + 468: 19(fvec3) Load 260(pos) + Store 467(param) 468 + 470: 105(ptr) AccessChain 101(params) 424 + 471: 16(float) Load 470 + Store 469(param) 471 + 472: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 463(param) 467(param) 469(param) + 473: 19(fvec3) Load 246(force) + 474: 19(fvec3) FAdd 473 472 + Store 246(force) 474 + Branch 453 + 453: Label + 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 478 478 12 12 + 475: 137(ptr) AccessChain 125(id) 12 + 479: 7(int) Load 475 + 480: 148(ptr) AccessChain 101(params) 147 12 + 481: 73(int) Load 480 + 482: 73(int) ISub 481 238 + 483: 7(int) Bitcast 482 + 484: 166(bool) ULessThan 479 483 + SelectionMerge 486 None + BranchConditional 484 485 486 + 485: Label + 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 478 478 12 12 + 487: 137(ptr) AccessChain 125(id) 39 + 490: 7(int) Load 487 + 491: 148(ptr) AccessChain 101(params) 147 39 + 492: 73(int) Load 491 + 493: 73(int) ISub 492 238 + 494: 7(int) Bitcast 493 + 495: 166(bool) ULessThan 490 494 + Branch 486 + 486: Label + 497: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 496: 166(bool) Phi 484 453 495 485 + SelectionMerge 499 None + BranchConditional 496 498 499 + 498: Label + 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 503 503 12 12 + 500: 7(int) Load 139(index) + 504: 148(ptr) AccessChain 101(params) 147 12 + 505: 73(int) Load 504 + 506: 7(int) Bitcast 505 + 507: 7(int) IAdd 500 506 + 508: 7(int) IAdd 507 39 + 510: 230(ptr) AccessChain 200 202 508 202 + 511: 71(fvec4) Load 510 + 512: 19(fvec3) VectorShuffle 511 511 0 1 2 + Store 509(param) 512 + 514: 19(fvec3) Load 260(pos) + Store 513(param) 514 + 516: 105(ptr) AccessChain 101(params) 424 + 517: 16(float) Load 516 + Store 515(param) 517 + 518: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 509(param) 513(param) 515(param) + 519: 19(fvec3) Load 246(force) + 520: 19(fvec3) FAdd 519 518 + Store 246(force) 520 + Branch 499 + 499: Label + 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 524 524 12 12 + 521: 137(ptr) AccessChain 125(id) 12 + 525: 7(int) Load 521 + 526: 148(ptr) AccessChain 101(params) 147 12 + 527: 73(int) Load 526 + 528: 73(int) ISub 527 238 + 529: 7(int) Bitcast 528 + 530: 166(bool) ULessThan 525 529 + SelectionMerge 532 None + BranchConditional 530 531 532 + 531: Label + 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 524 524 12 12 + 533: 137(ptr) AccessChain 125(id) 39 + 536: 7(int) Load 533 + 537: 166(bool) UGreaterThan 536 12 + Branch 532 + 532: Label + 539: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 538: 166(bool) Phi 530 499 537 531 + SelectionMerge 541 None + BranchConditional 538 540 541 + 540: Label + 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 545 545 12 12 + 542: 7(int) Load 139(index) + 546: 148(ptr) AccessChain 101(params) 147 12 + 547: 73(int) Load 546 + 548: 7(int) Bitcast 547 + 549: 7(int) ISub 542 548 + 550: 7(int) IAdd 549 39 + 552: 230(ptr) AccessChain 200 202 550 202 + 553: 71(fvec4) Load 552 + 554: 19(fvec3) VectorShuffle 553 553 0 1 2 + Store 551(param) 554 + 556: 19(fvec3) Load 260(pos) + Store 555(param) 556 + 558: 105(ptr) AccessChain 101(params) 424 + 559: 16(float) Load 558 + Store 557(param) 559 + 560: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 551(param) 555(param) 557(param) + 561: 19(fvec3) Load 246(force) + 562: 19(fvec3) FAdd 561 560 + Store 246(force) 562 + Branch 541 + 541: Label + 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 567 567 12 12 + 564: 105(ptr) AccessChain 101(params) 563 + 568: 16(float) Load 564 + 569: 16(float) FNegate 568 + 570: 19(fvec3) Load 270(vel) + 571: 19(fvec3) VectorTimesScalar 570 569 + 572: 19(fvec3) Load 246(force) + 573: 19(fvec3) FAdd 572 571 + Store 246(force) 573 + 579: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 577 577 12 12 + 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 575 574(f) 45 + 580: 19(fvec3) Load 246(force) + 581: 105(ptr) AccessChain 101(params) 238 + 582: 16(float) Load 581 + 583: 16(float) FDiv 209 582 + 584: 19(fvec3) VectorTimesScalar 580 583 + Store 574(f) 584 + 586: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 587 587 12 12 + 585: 7(int) Load 139(index) + 588: 19(fvec3) Load 260(pos) + 589: 19(fvec3) Load 270(vel) + 590: 105(ptr) AccessChain 101(params) 202 591: 16(float) Load 590 592: 19(fvec3) VectorTimesScalar 589 591 - 593: 106(ptr) AccessChain 102(params) 202 - 594: 16(float) Load 593 - 595: 19(fvec3) VectorTimesScalar 592 594 - 596: 19(fvec3) FAdd 586 595 - 597: 16(float) CompositeExtract 596 0 - 598: 16(float) CompositeExtract 596 1 - 599: 16(float) CompositeExtract 596 2 - 600: 72(fvec4) CompositeConstruct 597 598 599 207 - 601: 228(ptr) AccessChain 224 202 580 202 - Store 601 600 - 602: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 603 603 12 12 - 604: 7(int) Load 140(index) - 605: 19(fvec3) Load 269(vel) - 606: 19(fvec3) Load 569(f) - 607: 106(ptr) AccessChain 102(params) 202 - 608: 16(float) Load 607 - 609: 19(fvec3) VectorTimesScalar 606 608 - 610: 19(fvec3) FAdd 605 609 - 611: 16(float) CompositeExtract 610 0 - 612: 16(float) CompositeExtract 610 1 - 613: 16(float) CompositeExtract 610 2 - 614: 72(fvec4) CompositeConstruct 611 612 613 237 - 615: 228(ptr) AccessChain 224 202 604 236 - Store 615 614 - 616: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 617 617 12 12 - 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 619 618(sphereDist) 47 - 622: 7(int) Load 140(index) - 623: 228(ptr) AccessChain 224 202 622 202 - 624: 72(fvec4) Load 623 - 625: 19(fvec3) VectorShuffle 624 624 0 1 2 - 627: 228(ptr) AccessChain 102(params) 626 - 628: 72(fvec4) Load 627 - 629: 19(fvec3) VectorShuffle 628 628 0 1 2 - 630: 19(fvec3) FSub 625 629 - Store 618(sphereDist) 630 - 631: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 632 632 12 12 - 633: 19(fvec3) Load 618(sphereDist) - 634: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 633 - 636: 106(ptr) AccessChain 102(params) 635 - 637: 16(float) Load 636 - 639: 16(float) FAdd 637 638 - 640: 165(bool) FOrdLessThan 634 639 - SelectionMerge 642 None - BranchConditional 640 641 642 - 641: Label - 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 644: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 645 645 12 12 - 646: 7(int) Load 140(index) - 647: 228(ptr) AccessChain 102(params) 626 - 648: 72(fvec4) Load 647 - 649: 19(fvec3) VectorShuffle 648 648 0 1 2 - 650: 19(fvec3) Load 618(sphereDist) - 651: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 650 - 652: 106(ptr) AccessChain 102(params) 635 - 653: 16(float) Load 652 - 654: 16(float) FAdd 653 638 - 655: 19(fvec3) VectorTimesScalar 651 654 - 656: 19(fvec3) FAdd 649 655 - 657: 106(ptr) AccessChain 224 202 646 202 12 - 658: 16(float) CompositeExtract 656 0 - Store 657 658 - 659: 106(ptr) AccessChain 224 202 646 202 39 - 660: 16(float) CompositeExtract 656 1 - Store 659 660 - 661: 106(ptr) AccessChain 224 202 646 202 41 - 662: 16(float) CompositeExtract 656 2 - Store 661 662 - 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 664 664 12 12 - 665: 7(int) Load 140(index) - 666: 228(ptr) AccessChain 224 202 665 236 - Store 666 238 - Branch 642 - 642: Label - 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 669 669 12 12 - 684: 682(ptr) AccessChain 679(pushConsts) 202 - 685: 7(int) Load 684 - 686: 165(bool) IEqual 685 39 - SelectionMerge 688 None - BranchConditional 686 687 688 - 687: Label - 689: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 691 691 12 12 - 694: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 693 692(normal) 47 - Store 692(normal) 695 - 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 697 697 12 12 - 698: 138(ptr) AccessChain 126(id) 39 - 699: 7(int) Load 698 - 700: 165(bool) UGreaterThan 699 12 - SelectionMerge 702 None - BranchConditional 700 701 702 - 701: Label - 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 704: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 705 705 12 12 - 706: 138(ptr) AccessChain 126(id) 12 - 707: 7(int) Load 706 - 708: 165(bool) UGreaterThan 707 12 - SelectionMerge 710 None - BranchConditional 708 709 710 - 709: Label - 711: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 713 713 12 12 - 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 715 714(a) 47 - 718: 7(int) Load 140(index) - 719: 7(int) ISub 718 39 - 720: 228(ptr) AccessChain 200 202 719 202 - 721: 72(fvec4) Load 720 - 722: 19(fvec3) VectorShuffle 721 721 0 1 2 - 723: 19(fvec3) Load 259(pos) - 724: 19(fvec3) FSub 722 723 - Store 714(a) 724 - 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 726 726 12 12 - 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 728 727(b) 47 - 731: 7(int) Load 140(index) - 732: 147(ptr) AccessChain 102(params) 146 12 - 733: 74(int) Load 732 - 734: 7(int) Bitcast 733 - 735: 7(int) ISub 731 734 - 736: 7(int) ISub 735 39 - 737: 228(ptr) AccessChain 200 202 736 202 - 738: 72(fvec4) Load 737 - 739: 19(fvec3) VectorShuffle 738 738 0 1 2 - 740: 19(fvec3) Load 259(pos) - 741: 19(fvec3) FSub 739 740 - Store 727(b) 741 - 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 743 743 12 12 - 747: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 745 744(c) 47 - 748: 7(int) Load 140(index) - 749: 147(ptr) AccessChain 102(params) 146 12 - 750: 74(int) Load 749 - 751: 7(int) Bitcast 750 - 752: 7(int) ISub 748 751 - 753: 228(ptr) AccessChain 200 202 752 202 - 754: 72(fvec4) Load 753 - 755: 19(fvec3) VectorShuffle 754 754 0 1 2 - 756: 19(fvec3) Load 259(pos) - 757: 19(fvec3) FSub 755 756 - Store 744(c) 757 - 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 759 759 12 12 - 760: 19(fvec3) Load 714(a) - 761: 19(fvec3) Load 727(b) - 762: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 760 761 - 763: 19(fvec3) Load 727(b) - 764: 19(fvec3) Load 744(c) - 765: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 763 764 - 766: 19(fvec3) FAdd 762 765 - 767: 19(fvec3) Load 692(normal) - 768: 19(fvec3) FAdd 767 766 - Store 692(normal) 768 - Branch 710 - 710: Label - 769: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 771 771 12 12 - 772: 138(ptr) AccessChain 126(id) 12 - 773: 7(int) Load 772 - 774: 147(ptr) AccessChain 102(params) 146 12 - 775: 74(int) Load 774 - 776: 74(int) ISub 775 236 - 777: 7(int) Bitcast 776 - 778: 165(bool) ULessThan 773 777 - SelectionMerge 780 None - BranchConditional 778 779 780 - 779: Label - 781: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 782: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 783 783 12 12 - 784: 7(int) Load 140(index) - 785: 147(ptr) AccessChain 102(params) 146 12 - 786: 74(int) Load 785 - 787: 7(int) Bitcast 786 - 788: 7(int) ISub 784 787 - 789: 228(ptr) AccessChain 200 202 788 202 - 790: 72(fvec4) Load 789 - 791: 19(fvec3) VectorShuffle 790 790 0 1 2 - 792: 19(fvec3) Load 259(pos) - 793: 19(fvec3) FSub 791 792 - Store 714(a) 793 - 794: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 795 795 12 12 - 796: 7(int) Load 140(index) - 797: 147(ptr) AccessChain 102(params) 146 12 - 798: 74(int) Load 797 - 799: 7(int) Bitcast 798 - 800: 7(int) ISub 796 799 - 801: 7(int) IAdd 800 39 - 802: 228(ptr) AccessChain 200 202 801 202 - 803: 72(fvec4) Load 802 - 804: 19(fvec3) VectorShuffle 803 803 0 1 2 - 805: 19(fvec3) Load 259(pos) - 806: 19(fvec3) FSub 804 805 - Store 727(b) 806 - 807: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 808 808 12 12 - 809: 7(int) Load 140(index) - 810: 7(int) IAdd 809 39 - 811: 228(ptr) AccessChain 200 202 810 202 - 812: 72(fvec4) Load 811 - 813: 19(fvec3) VectorShuffle 812 812 0 1 2 - 814: 19(fvec3) Load 259(pos) - 815: 19(fvec3) FSub 813 814 - Store 744(c) 815 - 816: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 817 817 12 12 - 818: 19(fvec3) Load 714(a) - 819: 19(fvec3) Load 727(b) - 820: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 818 819 - 821: 19(fvec3) Load 727(b) - 822: 19(fvec3) Load 744(c) - 823: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 821 822 - 824: 19(fvec3) FAdd 820 823 - 825: 19(fvec3) Load 692(normal) - 826: 19(fvec3) FAdd 825 824 - Store 692(normal) 826 - Branch 780 - 780: Label - Branch 702 - 702: Label - 827: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 828: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 829 829 12 12 - 830: 138(ptr) AccessChain 126(id) 39 - 831: 7(int) Load 830 - 832: 147(ptr) AccessChain 102(params) 146 39 - 833: 74(int) Load 832 - 834: 74(int) ISub 833 236 - 835: 7(int) Bitcast 834 - 836: 165(bool) ULessThan 831 835 - SelectionMerge 838 None - BranchConditional 836 837 838 - 837: Label - 839: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 840: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 841 841 12 12 - 842: 138(ptr) AccessChain 126(id) 12 - 843: 7(int) Load 842 - 844: 165(bool) UGreaterThan 843 12 - SelectionMerge 846 None - BranchConditional 844 845 846 - 845: Label - 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 848: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 849 849 12 12 - 850: 7(int) Load 140(index) - 851: 147(ptr) AccessChain 102(params) 146 12 - 852: 74(int) Load 851 - 853: 7(int) Bitcast 852 - 854: 7(int) IAdd 850 853 - 855: 228(ptr) AccessChain 200 202 854 202 - 856: 72(fvec4) Load 855 - 857: 19(fvec3) VectorShuffle 856 856 0 1 2 - 858: 19(fvec3) Load 259(pos) - 859: 19(fvec3) FSub 857 858 - Store 714(a) 859 - 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 861 861 12 12 - 862: 7(int) Load 140(index) - 863: 147(ptr) AccessChain 102(params) 146 12 - 864: 74(int) Load 863 - 865: 7(int) Bitcast 864 - 866: 7(int) IAdd 862 865 - 867: 7(int) ISub 866 39 - 868: 228(ptr) AccessChain 200 202 867 202 - 869: 72(fvec4) Load 868 - 870: 19(fvec3) VectorShuffle 869 869 0 1 2 - 871: 19(fvec3) Load 259(pos) - 872: 19(fvec3) FSub 870 871 - Store 727(b) 872 - 873: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 874 874 12 12 - 875: 7(int) Load 140(index) - 876: 7(int) ISub 875 39 - 877: 228(ptr) AccessChain 200 202 876 202 - 878: 72(fvec4) Load 877 - 879: 19(fvec3) VectorShuffle 878 878 0 1 2 - 880: 19(fvec3) Load 259(pos) - 881: 19(fvec3) FSub 879 880 - Store 744(c) 881 - 882: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 883 883 12 12 - 884: 19(fvec3) Load 714(a) - 885: 19(fvec3) Load 727(b) - 886: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 884 885 - 887: 19(fvec3) Load 727(b) - 888: 19(fvec3) Load 744(c) - 889: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 887 888 - 890: 19(fvec3) FAdd 886 889 - 891: 19(fvec3) Load 692(normal) - 892: 19(fvec3) FAdd 891 890 - Store 692(normal) 892 - Branch 846 - 846: Label - 893: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 894: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 895 895 12 12 - 896: 138(ptr) AccessChain 126(id) 12 - 897: 7(int) Load 896 - 898: 147(ptr) AccessChain 102(params) 146 12 - 899: 74(int) Load 898 - 900: 74(int) ISub 899 236 - 901: 7(int) Bitcast 900 - 902: 165(bool) ULessThan 897 901 - SelectionMerge 904 None - BranchConditional 902 903 904 - 903: Label - 905: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 906: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 907 907 12 12 - 908: 7(int) Load 140(index) - 909: 7(int) IAdd 908 39 - 910: 228(ptr) AccessChain 200 202 909 202 - 911: 72(fvec4) Load 910 - 912: 19(fvec3) VectorShuffle 911 911 0 1 2 - 913: 19(fvec3) Load 259(pos) - 914: 19(fvec3) FSub 912 913 - Store 714(a) 914 - 915: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 916 916 12 12 - 917: 7(int) Load 140(index) - 918: 147(ptr) AccessChain 102(params) 146 12 - 919: 74(int) Load 918 - 920: 7(int) Bitcast 919 - 921: 7(int) IAdd 917 920 - 922: 7(int) IAdd 921 39 - 923: 228(ptr) AccessChain 200 202 922 202 - 924: 72(fvec4) Load 923 - 925: 19(fvec3) VectorShuffle 924 924 0 1 2 - 926: 19(fvec3) Load 259(pos) - 927: 19(fvec3) FSub 925 926 - Store 727(b) 927 - 928: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 929 929 12 12 - 930: 7(int) Load 140(index) - 931: 147(ptr) AccessChain 102(params) 146 12 - 932: 74(int) Load 931 - 933: 7(int) Bitcast 932 - 934: 7(int) IAdd 930 933 - 935: 228(ptr) AccessChain 200 202 934 202 - 936: 72(fvec4) Load 935 - 937: 19(fvec3) VectorShuffle 936 936 0 1 2 - 938: 19(fvec3) Load 259(pos) - 939: 19(fvec3) FSub 937 938 - Store 744(c) 939 - 940: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 941 941 12 12 - 942: 19(fvec3) Load 714(a) - 943: 19(fvec3) Load 727(b) - 944: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 942 943 - 945: 19(fvec3) Load 727(b) - 946: 19(fvec3) Load 744(c) - 947: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 945 946 - 948: 19(fvec3) FAdd 944 947 - 949: 19(fvec3) Load 692(normal) - 950: 19(fvec3) FAdd 949 948 - Store 692(normal) 950 - Branch 904 - 904: Label - Branch 838 - 838: Label - 951: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 952: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 953 953 12 12 - 954: 7(int) Load 140(index) - 955: 19(fvec3) Load 692(normal) - 956: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 955 - 957: 16(float) CompositeExtract 956 0 - 958: 16(float) CompositeExtract 956 1 - 959: 16(float) CompositeExtract 956 2 - 960: 72(fvec4) CompositeConstruct 957 958 959 237 - 961: 228(ptr) AccessChain 224 202 954 559 - Store 961 960 - Branch 688 - 688: Label + 593: 19(fvec3) FAdd 588 592 + 595: 19(fvec3) Load 574(f) + 596: 19(fvec3) VectorTimesScalar 595 594 + 597: 105(ptr) AccessChain 101(params) 202 + 598: 16(float) Load 597 + 599: 19(fvec3) VectorTimesScalar 596 598 + 600: 105(ptr) AccessChain 101(params) 202 + 601: 16(float) Load 600 + 602: 19(fvec3) VectorTimesScalar 599 601 + 603: 19(fvec3) FAdd 593 602 + 604: 16(float) CompositeExtract 603 0 + 605: 16(float) CompositeExtract 603 1 + 606: 16(float) CompositeExtract 603 2 + 607: 71(fvec4) CompositeConstruct 604 605 606 209 + 608: 230(ptr) AccessChain 224 202 585 202 + Store 608 607 + 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 611 611 12 12 + 609: 7(int) Load 139(index) + 612: 19(fvec3) Load 270(vel) + 613: 19(fvec3) Load 574(f) + 614: 105(ptr) AccessChain 101(params) 202 + 615: 16(float) Load 614 + 616: 19(fvec3) VectorTimesScalar 613 615 + 617: 19(fvec3) FAdd 612 616 + 618: 16(float) CompositeExtract 617 0 + 619: 16(float) CompositeExtract 617 1 + 620: 16(float) CompositeExtract 617 2 + 621: 71(fvec4) CompositeConstruct 618 619 620 239 + 622: 230(ptr) AccessChain 224 202 609 238 + Store 622 621 + 628: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 626 626 12 12 + 627: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 624 623(sphereDist) 45 + 629: 7(int) Load 139(index) + 630: 230(ptr) AccessChain 224 202 629 202 + 631: 71(fvec4) Load 630 + 632: 19(fvec3) VectorShuffle 631 631 0 1 2 + 634: 230(ptr) AccessChain 101(params) 633 + 635: 71(fvec4) Load 634 + 636: 19(fvec3) VectorShuffle 635 635 0 1 2 + 637: 19(fvec3) FSub 632 636 + Store 623(sphereDist) 637 + 639: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 640 640 12 12 + 638: 19(fvec3) Load 623(sphereDist) + 641: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 638 + 643: 105(ptr) AccessChain 101(params) 642 + 644: 16(float) Load 643 + 646: 16(float) FAdd 644 645 + 647: 166(bool) FOrdLessThan 641 646 + SelectionMerge 649 None + BranchConditional 647 648 649 + 648: Label + 651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 652: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 653 653 12 12 + 650: 7(int) Load 139(index) + 654: 230(ptr) AccessChain 101(params) 633 + 655: 71(fvec4) Load 654 + 656: 19(fvec3) VectorShuffle 655 655 0 1 2 + 657: 19(fvec3) Load 623(sphereDist) + 658: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 657 + 659: 105(ptr) AccessChain 101(params) 642 + 660: 16(float) Load 659 + 661: 16(float) FAdd 660 645 + 662: 19(fvec3) VectorTimesScalar 658 661 + 663: 19(fvec3) FAdd 656 662 + 664: 105(ptr) AccessChain 224 202 650 202 12 + 665: 16(float) CompositeExtract 663 0 + Store 664 665 + 666: 105(ptr) AccessChain 224 202 650 202 39 + 667: 16(float) CompositeExtract 663 1 + Store 666 667 + 668: 105(ptr) AccessChain 224 202 650 202 41 + 669: 16(float) CompositeExtract 663 2 + Store 668 669 + 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 672 672 12 12 + 670: 7(int) Load 139(index) + 673: 230(ptr) AccessChain 224 202 670 238 + Store 673 240 + Branch 649 + 649: Label + 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 680 680 12 12 + 689: 687(ptr) AccessChain 684(pushConsts) 202 + 692: 7(int) Load 689 + 693: 166(bool) IEqual 692 39 + SelectionMerge 695 None + BranchConditional 693 694 695 + 694: Label + 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 698 698 12 12 + 699: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 697 696(normal) 45 + Store 696(normal) 702 + 704: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 705 705 12 12 + 703: 137(ptr) AccessChain 125(id) 39 + 706: 7(int) Load 703 + 707: 166(bool) UGreaterThan 706 12 + SelectionMerge 709 None + BranchConditional 707 708 709 + 708: Label + 711: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 713 713 12 12 + 710: 137(ptr) AccessChain 125(id) 12 + 714: 7(int) Load 710 + 715: 166(bool) UGreaterThan 714 12 + SelectionMerge 717 None + BranchConditional 715 716 717 + 716: Label + 723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 721 721 12 12 + 722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 719 718(a) 45 + 725: 7(int) Load 139(index) + 726: 7(int) ISub 725 39 + 727: 230(ptr) AccessChain 200 202 726 202 + 728: 71(fvec4) Load 727 + 729: 19(fvec3) VectorShuffle 728 728 0 1 2 + 730: 19(fvec3) Load 260(pos) + 731: 19(fvec3) FSub 729 730 + Store 718(a) 731 + 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 735 735 12 12 + 736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(b) 45 + 738: 7(int) Load 139(index) + 739: 148(ptr) AccessChain 101(params) 147 12 + 740: 73(int) Load 739 + 741: 7(int) Bitcast 740 + 742: 7(int) ISub 738 741 + 743: 7(int) ISub 742 39 + 744: 230(ptr) AccessChain 200 202 743 202 + 745: 71(fvec4) Load 744 + 746: 19(fvec3) VectorShuffle 745 745 0 1 2 + 747: 19(fvec3) Load 260(pos) + 748: 19(fvec3) FSub 746 747 + Store 732(b) 748 + 754: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 752 752 12 12 + 753: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 750 749(c) 45 + 755: 7(int) Load 139(index) + 756: 148(ptr) AccessChain 101(params) 147 12 + 757: 73(int) Load 756 + 758: 7(int) Bitcast 757 + 759: 7(int) ISub 755 758 + 760: 230(ptr) AccessChain 200 202 759 202 + 761: 71(fvec4) Load 760 + 762: 19(fvec3) VectorShuffle 761 761 0 1 2 + 763: 19(fvec3) Load 260(pos) + 764: 19(fvec3) FSub 762 763 + Store 749(c) 764 + 766: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 767 767 12 12 + 765: 19(fvec3) Load 718(a) + 768: 19(fvec3) Load 732(b) + 769: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 765 768 + 770: 19(fvec3) Load 732(b) + 771: 19(fvec3) Load 749(c) + 772: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 770 771 + 773: 19(fvec3) FAdd 769 772 + 774: 19(fvec3) Load 696(normal) + 775: 19(fvec3) FAdd 774 773 + Store 696(normal) 775 + Branch 717 + 717: Label + 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 778: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 779 779 12 12 + 776: 137(ptr) AccessChain 125(id) 12 + 780: 7(int) Load 776 + 781: 148(ptr) AccessChain 101(params) 147 12 + 782: 73(int) Load 781 + 783: 73(int) ISub 782 238 + 784: 7(int) Bitcast 783 + 785: 166(bool) ULessThan 780 784 + SelectionMerge 787 None + BranchConditional 785 786 787 + 786: Label + 789: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 791 791 12 12 + 788: 7(int) Load 139(index) + 792: 148(ptr) AccessChain 101(params) 147 12 + 793: 73(int) Load 792 + 794: 7(int) Bitcast 793 + 795: 7(int) ISub 788 794 + 796: 230(ptr) AccessChain 200 202 795 202 + 797: 71(fvec4) Load 796 + 798: 19(fvec3) VectorShuffle 797 797 0 1 2 + 799: 19(fvec3) Load 260(pos) + 800: 19(fvec3) FSub 798 799 + Store 718(a) 800 + 802: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 803 803 12 12 + 801: 7(int) Load 139(index) + 804: 148(ptr) AccessChain 101(params) 147 12 + 805: 73(int) Load 804 + 806: 7(int) Bitcast 805 + 807: 7(int) ISub 801 806 + 808: 7(int) IAdd 807 39 + 809: 230(ptr) AccessChain 200 202 808 202 + 810: 71(fvec4) Load 809 + 811: 19(fvec3) VectorShuffle 810 810 0 1 2 + 812: 19(fvec3) Load 260(pos) + 813: 19(fvec3) FSub 811 812 + Store 732(b) 813 + 815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 816 816 12 12 + 814: 7(int) Load 139(index) + 817: 7(int) IAdd 814 39 + 818: 230(ptr) AccessChain 200 202 817 202 + 819: 71(fvec4) Load 818 + 820: 19(fvec3) VectorShuffle 819 819 0 1 2 + 821: 19(fvec3) Load 260(pos) + 822: 19(fvec3) FSub 820 821 + Store 749(c) 822 + 824: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 825 825 12 12 + 823: 19(fvec3) Load 718(a) + 826: 19(fvec3) Load 732(b) + 827: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 823 826 + 828: 19(fvec3) Load 732(b) + 829: 19(fvec3) Load 749(c) + 830: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 828 829 + 831: 19(fvec3) FAdd 827 830 + 832: 19(fvec3) Load 696(normal) + 833: 19(fvec3) FAdd 832 831 + Store 696(normal) 833 + Branch 787 + 787: Label + 834: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + Branch 709 + 709: Label + 836: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 837: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 838 838 12 12 + 835: 137(ptr) AccessChain 125(id) 39 + 839: 7(int) Load 835 + 840: 148(ptr) AccessChain 101(params) 147 39 + 841: 73(int) Load 840 + 842: 73(int) ISub 841 238 + 843: 7(int) Bitcast 842 + 844: 166(bool) ULessThan 839 843 + SelectionMerge 846 None + BranchConditional 844 845 846 + 845: Label + 848: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 849: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 850 850 12 12 + 847: 137(ptr) AccessChain 125(id) 12 + 851: 7(int) Load 847 + 852: 166(bool) UGreaterThan 851 12 + SelectionMerge 854 None + BranchConditional 852 853 854 + 853: Label + 856: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 857: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 858 858 12 12 + 855: 7(int) Load 139(index) + 859: 148(ptr) AccessChain 101(params) 147 12 + 860: 73(int) Load 859 + 861: 7(int) Bitcast 860 + 862: 7(int) IAdd 855 861 + 863: 230(ptr) AccessChain 200 202 862 202 + 864: 71(fvec4) Load 863 + 865: 19(fvec3) VectorShuffle 864 864 0 1 2 + 866: 19(fvec3) Load 260(pos) + 867: 19(fvec3) FSub 865 866 + Store 718(a) 867 + 869: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 870 870 12 12 + 868: 7(int) Load 139(index) + 871: 148(ptr) AccessChain 101(params) 147 12 + 872: 73(int) Load 871 + 873: 7(int) Bitcast 872 + 874: 7(int) IAdd 868 873 + 875: 7(int) ISub 874 39 + 876: 230(ptr) AccessChain 200 202 875 202 + 877: 71(fvec4) Load 876 + 878: 19(fvec3) VectorShuffle 877 877 0 1 2 + 879: 19(fvec3) Load 260(pos) + 880: 19(fvec3) FSub 878 879 + Store 732(b) 880 + 882: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 883 883 12 12 + 881: 7(int) Load 139(index) + 884: 7(int) ISub 881 39 + 885: 230(ptr) AccessChain 200 202 884 202 + 886: 71(fvec4) Load 885 + 887: 19(fvec3) VectorShuffle 886 886 0 1 2 + 888: 19(fvec3) Load 260(pos) + 889: 19(fvec3) FSub 887 888 + Store 749(c) 889 + 891: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 892 892 12 12 + 890: 19(fvec3) Load 718(a) + 893: 19(fvec3) Load 732(b) + 894: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 890 893 + 895: 19(fvec3) Load 732(b) + 896: 19(fvec3) Load 749(c) + 897: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 895 896 + 898: 19(fvec3) FAdd 894 897 + 899: 19(fvec3) Load 696(normal) + 900: 19(fvec3) FAdd 899 898 + Store 696(normal) 900 + Branch 854 + 854: Label + 902: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 903: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 904 904 12 12 + 901: 137(ptr) AccessChain 125(id) 12 + 905: 7(int) Load 901 + 906: 148(ptr) AccessChain 101(params) 147 12 + 907: 73(int) Load 906 + 908: 73(int) ISub 907 238 + 909: 7(int) Bitcast 908 + 910: 166(bool) ULessThan 905 909 + SelectionMerge 912 None + BranchConditional 910 911 912 + 911: Label + 914: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 916 916 12 12 + 913: 7(int) Load 139(index) + 917: 7(int) IAdd 913 39 + 918: 230(ptr) AccessChain 200 202 917 202 + 919: 71(fvec4) Load 918 + 920: 19(fvec3) VectorShuffle 919 919 0 1 2 + 921: 19(fvec3) Load 260(pos) + 922: 19(fvec3) FSub 920 921 + Store 718(a) 922 + 924: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 925 925 12 12 + 923: 7(int) Load 139(index) + 926: 148(ptr) AccessChain 101(params) 147 12 + 927: 73(int) Load 926 + 928: 7(int) Bitcast 927 + 929: 7(int) IAdd 923 928 + 930: 7(int) IAdd 929 39 + 931: 230(ptr) AccessChain 200 202 930 202 + 932: 71(fvec4) Load 931 + 933: 19(fvec3) VectorShuffle 932 932 0 1 2 + 934: 19(fvec3) Load 260(pos) + 935: 19(fvec3) FSub 933 934 + Store 732(b) 935 + 937: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 938 938 12 12 + 936: 7(int) Load 139(index) + 939: 148(ptr) AccessChain 101(params) 147 12 + 940: 73(int) Load 939 + 941: 7(int) Bitcast 940 + 942: 7(int) IAdd 936 941 + 943: 230(ptr) AccessChain 200 202 942 202 + 944: 71(fvec4) Load 943 + 945: 19(fvec3) VectorShuffle 944 944 0 1 2 + 946: 19(fvec3) Load 260(pos) + 947: 19(fvec3) FSub 945 946 + Store 749(c) 947 + 949: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 950 950 12 12 + 948: 19(fvec3) Load 718(a) + 951: 19(fvec3) Load 732(b) + 952: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 948 951 + 953: 19(fvec3) Load 732(b) + 954: 19(fvec3) Load 749(c) + 955: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 953 954 + 956: 19(fvec3) FAdd 952 955 + 957: 19(fvec3) Load 696(normal) + 958: 19(fvec3) FAdd 957 956 + Store 696(normal) 958 + Branch 912 + 912: Label + 959: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + Branch 846 + 846: Label + 961: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 962: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 963 963 12 12 + 960: 7(int) Load 139(index) + 964: 19(fvec3) Load 696(normal) + 965: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 964 + 966: 16(float) CompositeExtract 965 0 + 967: 16(float) CompositeExtract 965 1 + 968: 16(float) CompositeExtract 965 2 + 969: 71(fvec4) CompositeConstruct 966 967 968 239 + 970: 230(ptr) AccessChain 224 202 960 563 + Store 970 969 + Branch 695 + 695: Label + 971: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 Return FunctionEnd - Line 1 66 50 31(springForce(vf3;vf3;f1;): 19(fvec3) Function None 26 28(p0): 21(ptr) FunctionParameter 29(p1): 21(ptr) FunctionParameter 30(restDist): 24(ptr) FunctionParameter 32: Label - 61(dist): 21(ptr) Variable Function - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 37 37 12 12 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 28(p0) 47 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 29(p1) 47 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 30(restDist) 47 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 31(springForce(vf3;vf3;f1;) - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 60 60 12 12 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 62 61(dist) 47 - 65: 19(fvec3) Load 28(p0) - 66: 19(fvec3) Load 29(p1) - 67: 19(fvec3) FSub 65 66 - Store 61(dist) 67 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 69 69 12 12 - 70: 19(fvec3) Load 61(dist) - 71: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 70 - 108: 106(ptr) AccessChain 102(params) 105 - 109: 16(float) Load 108 - 110: 19(fvec3) VectorTimesScalar 71 109 - 111: 19(fvec3) Load 61(dist) - 112: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 111 - 113: 16(float) Load 30(restDist) - 114: 16(float) FSub 112 113 - 115: 19(fvec3) VectorTimesScalar 110 114 - ReturnValue 115 + 58(dist): 21(ptr) Variable Function + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 37 37 12 12 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 42 28(p0) 45 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 29(p1) 45 + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 30(restDist) 45 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 31(springForce(vf3;vf3;f1;) + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 61 61 12 12 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 59 58(dist) 45 + 64: 19(fvec3) Load 28(p0) + 65: 19(fvec3) Load 29(p1) + 66: 19(fvec3) FSub 64 65 + Store 58(dist) 66 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 69 69 12 12 + 67: 19(fvec3) Load 58(dist) + 70: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 67 + 107: 105(ptr) AccessChain 101(params) 104 + 108: 16(float) Load 107 + 109: 19(fvec3) VectorTimesScalar 70 108 + 110: 19(fvec3) Load 58(dist) + 111: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 110 + 112: 16(float) Load 30(restDist) + 113: 16(float) FSub 111 112 + 114: 19(fvec3) VectorTimesScalar 109 113 + ReturnValue 114 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 2c7bac82c1..e747bc136e 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,17 +1,18 @@ spv.debuginfo.glsl.frag +Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 870 +// Id's are bound by 881 Capability Shader Capability ImageQuery Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 14 "main" 488 544 + EntryPoint Fragment 14 "main" 493 546 ExecutionMode 14 OriginUpperLeft - 1: String "" + 2: String "" 8: String "uint" 17: String "float" 39: String "textureProj" @@ -23,66 +24,66 @@ spv.debuginfo.glsl.frag // OpModuleProcessed entry-point main #line 1 " - 49: String "P" + 47: String "P" 53: String "layer" 56: String "offset" 64: String "filterPCF" - 70: String "sc" - 84: String "shadow" - 90: String "fragcolor" - 93: String "fragpos" - 95: String "main" - 102: String "int" - 108: String "global_var" - 123: String "shadowCoord" - 145: String "bool" - 166: String "dist" - 170: String "type.2d.image" - 171: String "@type.2d.image" - 175: String "type.sampled.image" - 176: String "@type.sampled.image" - 181: String "samplerShadowMap" - 230: String "texDim" - 242: String "scale" - 249: String "dx" - 263: String "dy" - 275: String "shadowFactor" - 281: String "count" - 287: String "range" - 294: String "x" - 315: String "y" - 378: String "i" + 68: String "sc" + 83: String "shadow" + 87: String "fragcolor" + 91: String "fragpos" + 93: String "main" + 97: String "int" + 103: String "global_var" + 118: String "shadowCoord" + 140: String "bool" + 161: String "dist" + 168: String "type.2d.image" + 169: String "@type.2d.image" + 173: String "type.sampled.image" + 174: String "@type.sampled.image" + 179: String "samplerShadowMap" + 229: String "texDim" + 241: String "scale" + 248: String "dx" + 262: String "dy" + 274: String "shadowFactor" + 280: String "count" + 286: String "range" + 293: String "x" + 313: String "y" + 379: String "i" 397: String "shadowClip" - 404: String "color" - 409: String "viewMatrix" - 412: String "Light" - 418: String "lights" - 421: String "debugDisplayTarget" - 425: String "UBO" - 430: String "ubo" - 474: String "fragPos" - 484: String "samplerposition" - 490: String "inUV" - 498: String "normal" - 502: String "samplerNormal" - 511: String "albedo" - 515: String "samplerAlbedo" - 546: String "outFragColor" - 639: String "N" - 664: String "L" - 689: String "V" - 704: String "lightCosInnerAngle" - 711: String "lightCosOuterAngle" - 718: String "lightRange" - 725: String "dir" - 741: String "cosDir" - 750: String "spotEffect" - 760: String "heightAttenuation" - 769: String "NdotL" - 779: String "diff" - 787: String "R" - 797: String "NdotR" - 807: String "spec" + 407: String "color" + 412: String "viewMatrix" + 415: String "Light" + 421: String "lights" + 424: String "debugDisplayTarget" + 428: String "UBO" + 433: String "ubo" + 477: String "fragPos" + 489: String "samplerposition" + 495: String "inUV" + 501: String "normal" + 507: String "samplerNormal" + 514: String "albedo" + 520: String "samplerAlbedo" + 548: String "outFragColor" + 648: String "N" + 672: String "L" + 698: String "V" + 713: String "lightCosInnerAngle" + 720: String "lightCosOuterAngle" + 727: String "lightRange" + 734: String "dir" + 750: String "cosDir" + 759: String "spotEffect" + 769: String "heightAttenuation" + 778: String "NdotL" + 788: String "diff" + 796: String "R" + 806: String "NdotR" + 816: String "spec" Name 14 "main" Name 37 "textureProj(vf4;f1;vf2;" Name 34 "P" @@ -91,1025 +92,1023 @@ spv.debuginfo.glsl.frag Name 62 "filterPCF(vf4;f1;" Name 60 "sc" Name 61 "layer" - Name 82 "shadow(vf3;vf3;" - Name 80 "fragcolor" - Name 81 "fragpos" - Name 106 "global_var" - Name 115 "shadow" - Name 121 "shadowCoord" - Name 164 "dist" - Name 179 "samplerShadowMap" - Name 228 "texDim" - Name 240 "scale" - Name 247 "dx" - Name 261 "dy" - Name 273 "shadowFactor" - Name 279 "count" - Name 285 "range" - Name 292 "x" - Name 313 "y" - Name 343 "param" - Name 345 "param" - Name 347 "param" - Name 376 "i" + Name 81 "shadow(vf3;vf3;" + Name 79 "fragcolor" + Name 80 "fragpos" + Name 101 "global_var" + Name 110 "shadow" + Name 116 "shadowCoord" + Name 159 "dist" + Name 177 "samplerShadowMap" + Name 227 "texDim" + Name 239 "scale" + Name 246 "dx" + Name 260 "dy" + Name 272 "shadowFactor" + Name 278 "count" + Name 284 "range" + Name 291 "x" + Name 311 "y" + Name 344 "param" + Name 346 "param" + Name 348 "param" + Name 377 "i" Name 395 "shadowClip" - Name 402 "Light" - MemberName 402(Light) 0 "position" - MemberName 402(Light) 1 "target" - MemberName 402(Light) 2 "color" - MemberName 402(Light) 3 "viewMatrix" - Name 415 "UBO" - MemberName 415(UBO) 0 "viewPos" - MemberName 415(UBO) 1 "lights" - MemberName 415(UBO) 2 "useShadows" - MemberName 415(UBO) 3 "debugDisplayTarget" - Name 428 "ubo" - Name 444 "shadowFactor" - Name 449 "param" - Name 451 "param" - Name 472 "fragPos" - Name 482 "samplerposition" - Name 488 "inUV" - Name 496 "normal" - Name 500 "samplerNormal" - Name 509 "albedo" - Name 513 "samplerAlbedo" - Name 544 "outFragColor" - Name 548 "param" - Name 549 "param" - Name 628 "fragcolor" - Name 637 "N" - Name 645 "i" - Name 662 "L" - Name 676 "dist" - Name 687 "V" - Name 702 "lightCosInnerAngle" - Name 709 "lightCosOuterAngle" - Name 716 "lightRange" - Name 723 "dir" - Name 739 "cosDir" - Name 748 "spotEffect" - Name 758 "heightAttenuation" - Name 767 "NdotL" - Name 777 "diff" - Name 785 "R" - Name 795 "NdotR" - Name 805 "spec" - Name 857 "param" - Name 859 "param" - Decorate 179(samplerShadowMap) DescriptorSet 0 - Decorate 179(samplerShadowMap) Binding 5 - MemberDecorate 402(Light) 0 Offset 0 - MemberDecorate 402(Light) 1 Offset 16 - MemberDecorate 402(Light) 2 Offset 32 - MemberDecorate 402(Light) 3 ColMajor - MemberDecorate 402(Light) 3 Offset 48 - MemberDecorate 402(Light) 3 MatrixStride 16 - Decorate 413 ArrayStride 112 - MemberDecorate 415(UBO) 0 Offset 0 - MemberDecorate 415(UBO) 1 Offset 16 - MemberDecorate 415(UBO) 2 Offset 352 - MemberDecorate 415(UBO) 3 Offset 356 - Decorate 415(UBO) Block - Decorate 428(ubo) DescriptorSet 0 - Decorate 428(ubo) Binding 4 - Decorate 482(samplerposition) DescriptorSet 0 - Decorate 482(samplerposition) Binding 1 - Decorate 488(inUV) Location 0 - Decorate 500(samplerNormal) DescriptorSet 0 - Decorate 500(samplerNormal) Binding 2 - Decorate 513(samplerAlbedo) DescriptorSet 0 - Decorate 513(samplerAlbedo) Binding 3 - Decorate 544(outFragColor) Location 0 + Name 405 "Light" + MemberName 405(Light) 0 "position" + MemberName 405(Light) 1 "target" + MemberName 405(Light) 2 "color" + MemberName 405(Light) 3 "viewMatrix" + Name 418 "UBO" + MemberName 418(UBO) 0 "viewPos" + MemberName 418(UBO) 1 "lights" + MemberName 418(UBO) 2 "useShadows" + MemberName 418(UBO) 3 "debugDisplayTarget" + Name 431 "ubo" + Name 445 "shadowFactor" + Name 452 "param" + Name 454 "param" + Name 475 "fragPos" + Name 487 "samplerposition" + Name 493 "inUV" + Name 499 "normal" + Name 505 "samplerNormal" + Name 512 "albedo" + Name 518 "samplerAlbedo" + Name 546 "outFragColor" + Name 551 "param" + Name 554 "param" + Name 636 "fragcolor" + Name 646 "N" + Name 654 "i" + Name 670 "L" + Name 685 "dist" + Name 696 "V" + Name 711 "lightCosInnerAngle" + Name 718 "lightCosOuterAngle" + Name 725 "lightRange" + Name 732 "dir" + Name 748 "cosDir" + Name 757 "spotEffect" + Name 767 "heightAttenuation" + Name 776 "NdotL" + Name 786 "diff" + Name 794 "R" + Name 804 "NdotR" + Name 814 "spec" + Name 865 "param" + Name 870 "param" + Decorate 177(samplerShadowMap) DescriptorSet 0 + Decorate 177(samplerShadowMap) Binding 5 + MemberDecorate 405(Light) 0 Offset 0 + MemberDecorate 405(Light) 1 Offset 16 + MemberDecorate 405(Light) 2 Offset 32 + MemberDecorate 405(Light) 3 ColMajor + MemberDecorate 405(Light) 3 Offset 48 + MemberDecorate 405(Light) 3 MatrixStride 16 + Decorate 416 ArrayStride 112 + MemberDecorate 418(UBO) 0 Offset 0 + MemberDecorate 418(UBO) 1 Offset 16 + MemberDecorate 418(UBO) 2 Offset 352 + MemberDecorate 418(UBO) 3 Offset 356 + Decorate 418(UBO) Block + Decorate 431(ubo) DescriptorSet 0 + Decorate 431(ubo) Binding 4 + Decorate 487(samplerposition) DescriptorSet 0 + Decorate 487(samplerposition) Binding 1 + Decorate 493(inUV) Location 0 + Decorate 505(samplerNormal) DescriptorSet 0 + Decorate 505(samplerNormal) Binding 2 + Decorate 518(samplerAlbedo) DescriptorSet 0 + Decorate 518(samplerAlbedo) Binding 3 + Decorate 546(outFragColor) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 4 20: 7(int) Constant 4 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypePointer Function 19(fvec4) 23: 7(int) Constant 7 - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 + 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 25: TypePointer Function 16(float) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 27: TypeVector 16(float) 2 28: 7(int) Constant 2 - 29: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 28 + 29: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 28 30: TypePointer Function 27(fvec2) - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 23 12 + 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 23 12 32: TypeFunction 16(float) 22(ptr) 25(ptr) 30(ptr) - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 29 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 42 + 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 29 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 42 43: 7(int) Constant 59 45: 7(int) Constant 1 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 45 20 41 28 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 33 41 43 12 44 39 13 43 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 21 41 43 12 40 20 45 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 43 12 40 20 28 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 29 41 43 12 40 20 13 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 45 20 41 28 + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 39 33 41 43 12 44 39 13 43 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 21 41 43 12 40 20 45 + 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 43 12 40 20 28 + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 29 41 43 12 40 20 13 58: TypeFunction 16(float) 22(ptr) 25(ptr) - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 18 66: 7(int) Constant 76 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 41 66 12 44 64 13 66 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 21 41 66 12 65 20 45 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 66 12 65 20 28 - 74: TypeVector 16(float) 3 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 - 76: TypePointer Function 74(fvec3) - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 23 12 - 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 75 75 75 - 86: 7(int) Constant 99 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 41 86 12 44 84 13 86 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 41 86 12 85 20 45 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 41 86 12 85 20 28 - 97: 7(int) Constant 116 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 95 6 41 97 12 44 95 13 97 - 100: 7(int) Constant 41 - 101: TypeInt 32 1 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 102 10 20 12 - 104: TypePointer Private 101(int) - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 11 12 - 106(global_var): 104(ptr) Variable Private - 109: 7(int) Constant 8 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 108 103 41 100 12 44 108 106(global_var) 109 - 110: 101(int) Constant 0 - 114: 7(int) Constant 61 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 18 41 114 12 40 20 - 118: 16(float) Constant 1065353216 - 120: 7(int) Constant 62 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 21 41 120 12 40 20 - 131: 7(int) Constant 63 - 134: 16(float) Constant 1056964608 - 143: 7(int) Constant 65 - 144: TypeBool - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 145 10 28 12 - 149: 16(float) Constant 3212836864 - 163: 7(int) Constant 67 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 18 41 163 12 40 20 - 168: TypeImage 16(float) 2D array sampled format:Unknown - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 163 12 44 171 172 13 - 173: TypeSampledImage 168 - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 163 12 44 176 172 13 - 177: TypePointer UniformConstant 173 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 174 12 12 -179(samplerShadowMap): 177(ptr) Variable UniformConstant - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 181 174 41 163 12 44 181 179(samplerShadowMap) 109 - 194: 7(int) Constant 68 - 197: 16(float) Constant 0 + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 41 66 12 44 64 13 66 + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 68 21 41 66 12 65 20 45 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 66 12 65 20 28 + 73: TypeVector 16(float) 3 + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 75: TypePointer Function 73(fvec3) + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 74 23 12 + 77: TypeFunction 73(fvec3) 75(ptr) 75(ptr) + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 74 74 74 + 85: 7(int) Constant 99 + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 83 78 41 85 12 44 83 13 85 + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 41 85 12 84 20 45 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 74 41 85 12 84 20 28 + 95: 7(int) Constant 116 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 93 6 41 95 12 44 93 13 95 + 96: TypeInt 32 1 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 10 20 12 + 99: TypePointer Private 96(int) + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 11 12 + 101(global_var): 99(ptr) Variable Private + 104: 7(int) Constant 41 + 105: 7(int) Constant 8 + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 103 98 41 104 12 44 103 101(global_var) 105 + 106: 96(int) Constant 0 + 112: 7(int) Constant 61 + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 18 41 112 12 40 20 + 115: 16(float) Constant 1065353216 + 119: 7(int) Constant 62 + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 118 21 41 119 12 40 20 + 129: 7(int) Constant 63 + 131: 16(float) Constant 1056964608 + 139: TypeBool + 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 10 28 12 + 144: 7(int) Constant 65 + 146: 16(float) Constant 3212836864 + 162: 7(int) Constant 67 + 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 41 162 12 40 20 + 166: TypeImage 16(float) 2D array sampled format:Unknown + 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 168 12 41 162 12 44 169 170 13 + 171: TypeSampledImage 166 + 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 12 41 162 12 44 174 170 13 + 175: TypePointer UniformConstant 171 + 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 172 12 12 +177(samplerShadowMap): 175(ptr) Variable UniformConstant + 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 179 172 41 162 12 44 179 177(samplerShadowMap) 105 + 193: 7(int) Constant 68 + 195: 16(float) Constant 0 + 209: 16(float) Constant 1048576000 212: 7(int) Constant 70 - 213: 16(float) Constant 1048576000 - 216: 7(int) Constant 73 - 223: 7(int) Constant 78 - 224: TypeVector 101(int) 2 - 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 103 28 - 226: TypePointer Function 224(ivec2) - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 225 23 12 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 230 225 41 223 12 65 20 - 234: TypeVector 101(int) 3 - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 103 13 - 239: 7(int) Constant 79 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 242 18 41 239 12 65 20 - 244: 16(float) Constant 1069547520 - 246: 7(int) Constant 80 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 18 41 246 12 65 20 - 253: TypePointer Function 101(int) - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 23 12 - 260: 7(int) Constant 81 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 18 41 260 12 65 20 - 272: 7(int) Constant 83 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 272 12 65 20 - 278: 7(int) Constant 84 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 281 103 41 278 12 65 20 - 284: 7(int) Constant 85 - 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 287 103 41 284 12 65 20 - 289: 101(int) Constant 1 - 291: 7(int) Constant 87 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 294 103 41 291 12 65 20 - 312: 7(int) Constant 89 - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 315 103 41 312 12 65 20 - 333: 7(int) Constant 91 - 352: 7(int) Constant 92 - 365: 7(int) Constant 96 - 375: 7(int) Constant 100 - 377: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 378 103 41 375 12 85 20 - 390: 101(int) Constant 3 - 394: 7(int) Constant 102 - 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 397 21 41 394 12 85 20 - 399: TypeMatrix 19(fvec4) 4 - 401: 144(bool) ConstantTrue - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 401 - 402(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 399 - 405: 7(int) Constant 47 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 - 410: 7(int) Constant 48 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 409 400 41 410 23 12 12 13 - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 412 45 41 394 12 44 412 12 13 403 406 407 408 - 413: TypeArray 402(Light) 13 - 414: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 411 13 - 415(UBO): TypeStruct 19(fvec4) 413 101(int) 101(int) - 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 404 21 41 405 23 12 12 13 - 419: 7(int) Constant 54 - 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 418 414 41 419 109 12 12 13 - 422: 7(int) Constant 56 - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 103 41 422 11 12 12 13 - 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 103 41 422 11 12 12 13 - 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 425 45 41 394 12 44 425 12 13 416 417 420 423 - 426: TypePointer Uniform 415(UBO) - 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 424 28 12 - 428(ubo): 426(ptr) Variable Uniform - 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 424 41 394 12 44 430 428(ubo) 109 - 432: TypePointer Uniform 399 - 433: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 400 28 12 - 443: 7(int) Constant 106 - 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 443 12 85 20 - 454: 7(int) Constant 111 - 464: 7(int) Constant 113 - 471: 7(int) Constant 119 - 473: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 474 75 41 471 12 96 20 - 476: TypeImage 16(float) 2D sampled format:Unknown - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 471 12 44 171 172 13 - 478: TypeSampledImage 476 - 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 471 12 44 176 172 13 - 480: TypePointer UniformConstant 478 - 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 479 12 12 -482(samplerposition): 480(ptr) Variable UniformConstant - 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 484 479 41 471 12 44 484 482(samplerposition) 109 - 486: TypePointer Input 27(fvec2) - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12 - 488(inUV): 486(ptr) Variable Input - 489: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 490 29 41 471 12 44 490 488(inUV) 109 - 495: 7(int) Constant 120 - 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 498 75 41 495 12 96 20 -500(samplerNormal): 480(ptr) Variable UniformConstant - 501: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 502 479 41 495 12 44 502 500(samplerNormal) 109 - 508: 7(int) Constant 121 - 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 511 21 41 508 12 96 20 -513(samplerAlbedo): 480(ptr) Variable UniformConstant - 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 515 479 41 508 12 44 515 513(samplerAlbedo) 109 - 520: 7(int) Constant 124 - 521: TypePointer Uniform 101(int) - 522: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 28 12 - 530: 7(int) Constant 125 - 541: 7(int) Constant 127 - 542: TypePointer Output 19(fvec4) - 543: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 -544(outFragColor): 542(ptr) Variable Output - 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 546 21 41 541 12 44 546 544(outFragColor) 109 - 547: 74(fvec3) ConstantComposite 118 118 118 - 552: TypePointer Output 16(float) - 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 - 561: 7(int) Constant 128 - 565: 7(int) Constant 130 - 574: 7(int) Constant 131 - 578: 7(int) Constant 133 - 587: 7(int) Constant 134 - 591: 7(int) Constant 136 - 601: 7(int) Constant 137 - 605: 7(int) Constant 139 - 615: 7(int) Constant 140 - 620: 7(int) Constant 142 - 623: 7(int) Constant 143 - 627: 7(int) Constant 147 - 629: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 41 627 12 96 20 - 633: 16(float) Constant 1036831949 - 636: 7(int) Constant 149 - 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 639 75 41 636 12 96 20 - 644: 7(int) Constant 151 - 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 378 103 41 644 12 96 20 - 661: 7(int) Constant 154 - 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 664 75 41 661 12 96 20 - 667: TypePointer Uniform 19(fvec4) - 668: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12 - 675: 7(int) Constant 156 - 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 166 18 41 675 12 96 20 - 682: 7(int) Constant 157 - 686: 7(int) Constant 160 - 688: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 689 75 41 686 12 96 20 - 697: 7(int) Constant 161 - 701: 7(int) Constant 163 - 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 704 18 41 701 12 96 20 - 706: 16(float) Constant 1064781546 - 708: 7(int) Constant 164 - 710: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 711 18 41 708 12 96 20 - 713: 16(float) Constant 1063781322 - 715: 7(int) Constant 165 - 717: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 718 18 41 715 12 96 20 - 720: 16(float) Constant 1120403456 - 722: 7(int) Constant 168 - 724: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 75 41 722 12 96 20 - 738: 7(int) Constant 171 - 740: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 741 18 41 738 12 96 20 - 747: 7(int) Constant 172 - 749: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 750 18 41 747 12 96 20 - 757: 7(int) Constant 173 - 759: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 760 18 41 757 12 96 20 - 766: 7(int) Constant 176 - 768: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 769 18 41 766 12 96 20 - 776: 7(int) Constant 177 - 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 779 75 41 776 12 96 20 - 784: 7(int) Constant 180 - 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 75 41 784 12 96 20 - 794: 7(int) Constant 181 - 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 797 18 41 794 12 96 20 - 804: 7(int) Constant 182 - 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 807 75 41 804 12 96 20 - 810: 16(float) Constant 1098907648 - 815: 16(float) Constant 1075838976 - 819: 7(int) Constant 184 - 832: 101(int) Constant 2 - 848: 7(int) Constant 188 - 856: 7(int) Constant 190 - 864: 7(int) Constant 193 - Line 1 116 11 + 217: 7(int) Constant 73 + 223: TypeVector 96(int) 2 + 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 28 + 225: TypePointer Function 223(ivec2) + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 224 23 12 + 230: 7(int) Constant 78 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 224 41 230 12 65 20 + 235: TypeVector 96(int) 3 + 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 13 + 242: 7(int) Constant 79 + 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 241 18 41 242 12 65 20 + 245: 16(float) Constant 1069547520 + 249: 7(int) Constant 80 + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 248 18 41 249 12 65 20 + 254: TypePointer Function 96(int) + 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 23 12 + 263: 7(int) Constant 81 + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 262 18 41 263 12 65 20 + 275: 7(int) Constant 83 + 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 18 41 275 12 65 20 + 281: 7(int) Constant 84 + 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 280 98 41 281 12 65 20 + 287: 7(int) Constant 85 + 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 286 98 41 287 12 65 20 + 290: 96(int) Constant 1 + 294: 7(int) Constant 87 + 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 293 98 41 294 12 65 20 + 314: 7(int) Constant 89 + 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 98 41 314 12 65 20 + 335: 7(int) Constant 91 + 354: 7(int) Constant 92 + 368: 7(int) Constant 96 + 380: 7(int) Constant 100 + 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 98 41 380 12 84 20 + 393: 96(int) Constant 3 + 398: 7(int) Constant 102 + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 397 21 41 398 12 84 20 + 402: TypeMatrix 19(fvec4) 4 + 404: 139(bool) ConstantTrue + 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 404 + 405(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 402 + 408: 7(int) Constant 47 + 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 + 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 + 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 + 413: 7(int) Constant 48 + 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 412 403 41 413 23 12 12 13 + 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 415 45 41 398 12 44 415 12 13 406 409 410 411 + 416: TypeArray 405(Light) 13 + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 414 13 + 418(UBO): TypeStruct 19(fvec4) 416 96(int) 96(int) + 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 + 422: 7(int) Constant 54 + 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 417 41 422 105 12 12 13 + 425: 7(int) Constant 56 + 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 98 41 425 11 12 12 13 + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 98 41 425 11 12 12 13 + 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 428 45 41 398 12 44 428 12 13 419 420 423 426 + 429: TypePointer Uniform 418(UBO) + 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 427 28 12 + 431(ubo): 429(ptr) Variable Uniform + 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 433 427 41 398 12 44 433 431(ubo) 105 + 435: TypePointer Uniform 402 + 436: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 403 28 12 + 447: 7(int) Constant 106 + 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 18 41 447 12 84 20 + 458: 7(int) Constant 111 + 468: 7(int) Constant 113 + 478: 7(int) Constant 119 + 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 477 74 41 478 12 94 20 + 481: TypeImage 16(float) 2D sampled format:Unknown + 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 168 12 41 478 12 44 169 170 13 + 483: TypeSampledImage 481 + 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 12 41 478 12 44 174 170 13 + 485: TypePointer UniformConstant 483 + 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 484 12 12 +487(samplerposition): 485(ptr) Variable UniformConstant + 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 489 484 41 478 12 44 489 487(samplerposition) 105 + 491: TypePointer Input 27(fvec2) + 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12 + 493(inUV): 491(ptr) Variable Input + 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 29 41 478 12 44 495 493(inUV) 105 + 502: 7(int) Constant 120 + 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 501 74 41 502 12 94 20 +505(samplerNormal): 485(ptr) Variable UniformConstant + 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 507 484 41 502 12 44 507 505(samplerNormal) 105 + 515: 7(int) Constant 121 + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 514 21 41 515 12 94 20 +518(samplerAlbedo): 485(ptr) Variable UniformConstant + 519: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 520 484 41 515 12 44 520 518(samplerAlbedo) 105 + 524: TypePointer Uniform 96(int) + 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 28 12 + 528: 7(int) Constant 124 + 536: 7(int) Constant 125 + 544: TypePointer Output 19(fvec4) + 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 +546(outFragColor): 544(ptr) Variable Output + 549: 7(int) Constant 127 + 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 21 41 549 12 44 548 546(outFragColor) 105 + 550: 73(fvec3) ConstantComposite 115 115 115 + 557: TypePointer Output 16(float) + 558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 566: 7(int) Constant 128 + 572: 7(int) Constant 130 + 580: 7(int) Constant 131 + 586: 7(int) Constant 133 + 594: 7(int) Constant 134 + 600: 7(int) Constant 136 + 609: 7(int) Constant 137 + 615: 7(int) Constant 139 + 624: 7(int) Constant 140 + 631: 7(int) Constant 142 + 633: 7(int) Constant 143 + 638: 7(int) Constant 147 + 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 41 638 12 94 20 + 644: 16(float) Constant 1036831949 + 649: 7(int) Constant 149 + 647: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 648 74 41 649 12 94 20 + 656: 7(int) Constant 151 + 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 98 41 656 12 94 20 + 673: 7(int) Constant 154 + 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 672 74 41 673 12 94 20 + 678: TypePointer Uniform 19(fvec4) + 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12 + 687: 7(int) Constant 156 + 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 41 687 12 94 20 + 694: 7(int) Constant 157 + 699: 7(int) Constant 160 + 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 698 74 41 699 12 94 20 + 709: 7(int) Constant 161 + 714: 7(int) Constant 163 + 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 18 41 714 12 94 20 + 717: 16(float) Constant 1064781546 + 721: 7(int) Constant 164 + 719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 18 41 721 12 94 20 + 724: 16(float) Constant 1063781322 + 728: 7(int) Constant 165 + 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 18 41 728 12 94 20 + 731: 16(float) Constant 1120403456 + 735: 7(int) Constant 168 + 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 74 41 735 12 94 20 + 751: 7(int) Constant 171 + 749: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 750 18 41 751 12 94 20 + 760: 7(int) Constant 172 + 758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 759 18 41 760 12 94 20 + 770: 7(int) Constant 173 + 768: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 769 18 41 770 12 94 20 + 779: 7(int) Constant 176 + 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 778 18 41 779 12 94 20 + 789: 7(int) Constant 177 + 787: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 788 74 41 789 12 94 20 + 797: 7(int) Constant 180 + 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 796 74 41 797 12 94 20 + 807: 7(int) Constant 181 + 805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 806 18 41 807 12 94 20 + 817: 7(int) Constant 182 + 815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 816 74 41 817 12 94 20 + 821: 16(float) Constant 1098907648 + 826: 16(float) Constant 1075838976 + 831: 7(int) Constant 184 + 843: 96(int) Constant 2 + 860: 7(int) Constant 188 + 869: 7(int) Constant 190 + 876: 7(int) Constant 193 14(main): 4 Function None 5 15: Label - 472(fragPos): 76(ptr) Variable Function - 496(normal): 76(ptr) Variable Function - 509(albedo): 22(ptr) Variable Function - 548(param): 76(ptr) Variable Function - 549(param): 76(ptr) Variable Function - 628(fragcolor): 76(ptr) Variable Function - 637(N): 76(ptr) Variable Function - 645(i): 253(ptr) Variable Function - 662(L): 76(ptr) Variable Function - 676(dist): 25(ptr) Variable Function - 687(V): 76(ptr) Variable Function -702(lightCosInnerAngle): 25(ptr) Variable Function -709(lightCosOuterAngle): 25(ptr) Variable Function - 716(lightRange): 25(ptr) Variable Function - 723(dir): 76(ptr) Variable Function - 739(cosDir): 25(ptr) Variable Function - 748(spotEffect): 25(ptr) Variable Function -758(heightAttenuation): 25(ptr) Variable Function - 767(NdotL): 25(ptr) Variable Function - 777(diff): 76(ptr) Variable Function - 785(R): 76(ptr) Variable Function - 795(NdotR): 25(ptr) Variable Function - 805(spec): 76(ptr) Variable Function - 857(param): 76(ptr) Variable Function - 859(param): 76(ptr) Variable Function - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 100 100 12 12 - Store 106(global_var) 110 - 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 14(main) - 469: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 471 471 12 12 - 475: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 473 472(fragPos) 51 - 485: 478 Load 482(samplerposition) - 491: 27(fvec2) Load 488(inUV) - 492: 19(fvec4) ImageSampleImplicitLod 485 491 - 493: 74(fvec3) VectorShuffle 492 492 0 1 2 - Store 472(fragPos) 493 - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 495 495 12 12 - 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 497 496(normal) 51 - 503: 478 Load 500(samplerNormal) - 504: 27(fvec2) Load 488(inUV) - 505: 19(fvec4) ImageSampleImplicitLod 503 504 - 506: 74(fvec3) VectorShuffle 505 505 0 1 2 - Store 496(normal) 506 - 507: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 508 508 12 12 - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 510 509(albedo) 51 - 516: 478 Load 513(samplerAlbedo) - 517: 27(fvec2) Load 488(inUV) - 518: 19(fvec4) ImageSampleImplicitLod 516 517 - Store 509(albedo) 518 - 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 520 520 12 12 - 523: 521(ptr) AccessChain 428(ubo) 390 - 524: 101(int) Load 523 - 525: 144(bool) SGreaterThan 524 110 - SelectionMerge 527 None - BranchConditional 525 526 527 - 526: Label - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 530 530 12 12 - 531: 521(ptr) AccessChain 428(ubo) 390 - 532: 101(int) Load 531 - SelectionMerge 538 None - Switch 532 538 - case 1: 533 - case 2: 534 - case 3: 535 - case 4: 536 - case 5: 537 - 533: Label - 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 541 541 12 12 - Store 548(param) 547 - 550: 74(fvec3) Load 472(fragPos) - Store 549(param) 550 - 551: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 548(param) 549(param) - 554: 552(ptr) AccessChain 544(outFragColor) 12 - 555: 16(float) CompositeExtract 551 0 - Store 554 555 - 556: 552(ptr) AccessChain 544(outFragColor) 45 - 557: 16(float) CompositeExtract 551 1 - Store 556 557 - 558: 552(ptr) AccessChain 544(outFragColor) 28 - 559: 16(float) CompositeExtract 551 2 - Store 558 559 - 560: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 561 561 12 12 - Branch 538 - 534: Label - 563: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 565 565 12 12 - 566: 74(fvec3) Load 472(fragPos) - 567: 552(ptr) AccessChain 544(outFragColor) 12 - 568: 16(float) CompositeExtract 566 0 - Store 567 568 - 569: 552(ptr) AccessChain 544(outFragColor) 45 - 570: 16(float) CompositeExtract 566 1 - Store 569 570 - 571: 552(ptr) AccessChain 544(outFragColor) 28 - 572: 16(float) CompositeExtract 566 2 - Store 571 572 - 573: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 574 574 12 12 - Branch 538 - 535: Label - 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 577: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 578 578 12 12 - 579: 74(fvec3) Load 496(normal) - 580: 552(ptr) AccessChain 544(outFragColor) 12 - 581: 16(float) CompositeExtract 579 0 - Store 580 581 - 582: 552(ptr) AccessChain 544(outFragColor) 45 - 583: 16(float) CompositeExtract 579 1 - Store 582 583 - 584: 552(ptr) AccessChain 544(outFragColor) 28 - 585: 16(float) CompositeExtract 579 2 - Store 584 585 - 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 587 587 12 12 - Branch 538 - 536: Label - 589: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 590: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 591 591 12 12 - 592: 19(fvec4) Load 509(albedo) - 593: 74(fvec3) VectorShuffle 592 592 0 1 2 - 594: 552(ptr) AccessChain 544(outFragColor) 12 - 595: 16(float) CompositeExtract 593 0 - Store 594 595 - 596: 552(ptr) AccessChain 544(outFragColor) 45 - 597: 16(float) CompositeExtract 593 1 - Store 596 597 - 598: 552(ptr) AccessChain 544(outFragColor) 28 - 599: 16(float) CompositeExtract 593 2 - Store 598 599 - 600: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 601 601 12 12 - Branch 538 - 537: Label - 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 604: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 605 605 12 12 - 606: 19(fvec4) Load 509(albedo) - 607: 74(fvec3) VectorShuffle 606 606 3 3 3 - 608: 552(ptr) AccessChain 544(outFragColor) 12 - 609: 16(float) CompositeExtract 607 0 - Store 608 609 - 610: 552(ptr) AccessChain 544(outFragColor) 45 - 611: 16(float) CompositeExtract 607 1 - Store 610 611 - 612: 552(ptr) AccessChain 544(outFragColor) 28 - 613: 16(float) CompositeExtract 607 2 - Store 612 613 - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 615 615 12 12 - Branch 538 - 538: Label - 618: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 619: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 620 620 12 12 - 621: 552(ptr) AccessChain 544(outFragColor) 13 - Store 621 118 - 622: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 623 623 12 12 + 475(fragPos): 75(ptr) Variable Function + 499(normal): 75(ptr) Variable Function + 512(albedo): 22(ptr) Variable Function + 551(param): 75(ptr) Variable Function + 554(param): 75(ptr) Variable Function + 636(fragcolor): 75(ptr) Variable Function + 646(N): 75(ptr) Variable Function + 654(i): 254(ptr) Variable Function + 670(L): 75(ptr) Variable Function + 685(dist): 25(ptr) Variable Function + 696(V): 75(ptr) Variable Function +711(lightCosInnerAngle): 25(ptr) Variable Function +718(lightCosOuterAngle): 25(ptr) Variable Function + 725(lightRange): 25(ptr) Variable Function + 732(dir): 75(ptr) Variable Function + 748(cosDir): 25(ptr) Variable Function + 757(spotEffect): 25(ptr) Variable Function +767(heightAttenuation): 25(ptr) Variable Function + 776(NdotL): 25(ptr) Variable Function + 786(diff): 75(ptr) Variable Function + 794(R): 75(ptr) Variable Function + 804(NdotR): 25(ptr) Variable Function + 814(spec): 75(ptr) Variable Function + 865(param): 75(ptr) Variable Function + 870(param): 75(ptr) Variable Function + 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 104 104 12 12 + Store 101(global_var) 106 + 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 95 95 12 12 + 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 94 14(main) + 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 478 478 12 12 + 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 476 475(fragPos) 49 + 490: 483 Load 487(samplerposition) + 496: 27(fvec2) Load 493(inUV) + 497: 19(fvec4) ImageSampleImplicitLod 490 496 + 498: 73(fvec3) VectorShuffle 497 497 0 1 2 + Store 475(fragPos) 498 + 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 502 502 12 12 + 503: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 500 499(normal) 49 + 508: 483 Load 505(samplerNormal) + 509: 27(fvec2) Load 493(inUV) + 510: 19(fvec4) ImageSampleImplicitLod 508 509 + 511: 73(fvec3) VectorShuffle 510 510 0 1 2 + Store 499(normal) 511 + 517: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 515 515 12 12 + 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(albedo) 49 + 521: 483 Load 518(samplerAlbedo) + 522: 27(fvec2) Load 493(inUV) + 523: 19(fvec4) ImageSampleImplicitLod 521 522 + Store 512(albedo) 523 + 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 528 528 12 12 + 526: 524(ptr) AccessChain 431(ubo) 393 + 529: 96(int) Load 526 + 530: 139(bool) SGreaterThan 529 106 + SelectionMerge 532 None + BranchConditional 530 531 532 + 531: Label + 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 536 536 12 12 + 533: 524(ptr) AccessChain 431(ubo) 393 + 537: 96(int) Load 533 + SelectionMerge 543 None + Switch 537 543 + case 1: 538 + case 2: 539 + case 3: 540 + case 4: 541 + case 5: 542 + 538: Label + 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 553: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 549 549 12 12 + Store 551(param) 550 + 555: 73(fvec3) Load 475(fragPos) + Store 554(param) 555 + 556: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 551(param) 554(param) + 559: 557(ptr) AccessChain 546(outFragColor) 12 + 560: 16(float) CompositeExtract 556 0 + Store 559 560 + 561: 557(ptr) AccessChain 546(outFragColor) 45 + 562: 16(float) CompositeExtract 556 1 + Store 561 562 + 563: 557(ptr) AccessChain 546(outFragColor) 28 + 564: 16(float) CompositeExtract 556 2 + Store 563 564 + 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 566 566 12 12 + Branch 543 + 539: Label + 570: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 571: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 572 572 12 12 + 569: 73(fvec3) Load 475(fragPos) + 573: 557(ptr) AccessChain 546(outFragColor) 12 + 574: 16(float) CompositeExtract 569 0 + Store 573 574 + 575: 557(ptr) AccessChain 546(outFragColor) 45 + 576: 16(float) CompositeExtract 569 1 + Store 575 576 + 577: 557(ptr) AccessChain 546(outFragColor) 28 + 578: 16(float) CompositeExtract 569 2 + Store 577 578 + 579: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 580 580 12 12 + Branch 543 + 540: Label + 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 585: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 586 586 12 12 + 583: 73(fvec3) Load 499(normal) + 587: 557(ptr) AccessChain 546(outFragColor) 12 + 588: 16(float) CompositeExtract 583 0 + Store 587 588 + 589: 557(ptr) AccessChain 546(outFragColor) 45 + 590: 16(float) CompositeExtract 583 1 + Store 589 590 + 591: 557(ptr) AccessChain 546(outFragColor) 28 + 592: 16(float) CompositeExtract 583 2 + Store 591 592 + 593: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 594 594 12 12 + Branch 543 + 541: Label + 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 599: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 600 600 12 12 + 597: 19(fvec4) Load 512(albedo) + 601: 73(fvec3) VectorShuffle 597 597 0 1 2 + 602: 557(ptr) AccessChain 546(outFragColor) 12 + 603: 16(float) CompositeExtract 601 0 + Store 602 603 + 604: 557(ptr) AccessChain 546(outFragColor) 45 + 605: 16(float) CompositeExtract 601 1 + Store 604 605 + 606: 557(ptr) AccessChain 546(outFragColor) 28 + 607: 16(float) CompositeExtract 601 2 + Store 606 607 + 608: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 609 609 12 12 + Branch 543 + 542: Label + 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 614: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 615 615 12 12 + 612: 19(fvec4) Load 512(albedo) + 616: 73(fvec3) VectorShuffle 612 612 3 3 3 + 617: 557(ptr) AccessChain 546(outFragColor) 12 + 618: 16(float) CompositeExtract 616 0 + Store 617 618 + 619: 557(ptr) AccessChain 546(outFragColor) 45 + 620: 16(float) CompositeExtract 616 1 + Store 619 620 + 621: 557(ptr) AccessChain 546(outFragColor) 28 + 622: 16(float) CompositeExtract 616 2 + Store 621 622 + 623: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 624 624 12 12 + Branch 543 + 543: Label + 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 630: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 631 631 12 12 + 628: 557(ptr) AccessChain 546(outFragColor) 13 + Store 628 115 + 632: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 633 633 12 12 Return - 527: Label - 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 626: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 627 627 12 12 - 630: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 629 628(fragcolor) 51 - 631: 19(fvec4) Load 509(albedo) - 632: 74(fvec3) VectorShuffle 631 631 0 1 2 - 634: 74(fvec3) VectorTimesScalar 632 633 - Store 628(fragcolor) 634 - 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 636 636 12 12 - 640: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 638 637(N) 51 - 641: 74(fvec3) Load 496(normal) - 642: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 641 - Store 637(N) 642 - 643: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 - 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 646 645(i) 51 - Store 645(i) 110 - Branch 648 - 648: Label - 652: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 653: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 - LoopMerge 650 651 None - Branch 654 - 654: Label - 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 - 657: 101(int) Load 645(i) - 658: 144(bool) SLessThan 657 390 - BranchConditional 658 649 650 - 649: Label - 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 661 661 12 12 - 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 663 662(L) 51 - 666: 101(int) Load 645(i) - 669: 667(ptr) AccessChain 428(ubo) 289 666 110 - 670: 19(fvec4) Load 669 - 671: 74(fvec3) VectorShuffle 670 670 0 1 2 - 672: 74(fvec3) Load 472(fragPos) - 673: 74(fvec3) FSub 671 672 - Store 662(L) 673 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 675 675 12 12 - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 677 676(dist) 51 - 679: 74(fvec3) Load 662(L) - 680: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 679 - Store 676(dist) 680 - 681: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 682 682 12 12 - 683: 74(fvec3) Load 662(L) - 684: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 683 - Store 662(L) 684 - 685: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 686 686 12 12 - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 688 687(V) 51 - 691: 667(ptr) AccessChain 428(ubo) 110 - 692: 19(fvec4) Load 691 - 693: 74(fvec3) VectorShuffle 692 692 0 1 2 - 694: 74(fvec3) Load 472(fragPos) - 695: 74(fvec3) FSub 693 694 - Store 687(V) 695 - 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 697 697 12 12 - 698: 74(fvec3) Load 687(V) - 699: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 698 - Store 687(V) 699 - 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 701 701 12 12 - 705: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 703 702(lightCosInnerAngle) 51 - Store 702(lightCosInnerAngle) 706 - 707: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 708 708 12 12 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 710 709(lightCosOuterAngle) 51 - Store 709(lightCosOuterAngle) 713 - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 715 715 12 12 - 719: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 717 716(lightRange) 51 - Store 716(lightRange) 720 - 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 722 722 12 12 - 726: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(dir) 51 - 727: 101(int) Load 645(i) - 728: 667(ptr) AccessChain 428(ubo) 289 727 110 - 729: 19(fvec4) Load 728 - 730: 74(fvec3) VectorShuffle 729 729 0 1 2 - 731: 101(int) Load 645(i) - 732: 667(ptr) AccessChain 428(ubo) 289 731 289 - 733: 19(fvec4) Load 732 - 734: 74(fvec3) VectorShuffle 733 733 0 1 2 - 735: 74(fvec3) FSub 730 734 - 736: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 735 - Store 723(dir) 736 - 737: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 738 738 12 12 - 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 740 739(cosDir) 51 - 743: 74(fvec3) Load 662(L) - 744: 74(fvec3) Load 723(dir) - 745: 16(float) Dot 743 744 - Store 739(cosDir) 745 - 746: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 747 747 12 12 - 751: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 749 748(spotEffect) 51 - 752: 16(float) Load 709(lightCosOuterAngle) - 753: 16(float) Load 702(lightCosInnerAngle) - 754: 16(float) Load 739(cosDir) - 755: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 752 753 754 - Store 748(spotEffect) 755 - 756: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 757 757 12 12 - 761: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 759 758(heightAttenuation) 51 - 762: 16(float) Load 716(lightRange) - 763: 16(float) Load 676(dist) - 764: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 762 197 763 - Store 758(heightAttenuation) 764 - 765: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 766 766 12 12 - 770: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 768 767(NdotL) 51 - 771: 74(fvec3) Load 637(N) - 772: 74(fvec3) Load 662(L) - 773: 16(float) Dot 771 772 - 774: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 773 - Store 767(NdotL) 774 - 775: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 776 776 12 12 - 780: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 778 777(diff) 51 - 781: 16(float) Load 767(NdotL) - 782: 74(fvec3) CompositeConstruct 781 781 781 - Store 777(diff) 782 - 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 784 784 12 12 - 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 786 785(R) 51 - 789: 74(fvec3) Load 662(L) - 790: 74(fvec3) FNegate 789 - 791: 74(fvec3) Load 637(N) - 792: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 790 791 - Store 785(R) 792 - 793: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 794 794 12 12 - 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 796 795(NdotR) 51 - 799: 74(fvec3) Load 785(R) - 800: 74(fvec3) Load 687(V) - 801: 16(float) Dot 799 800 - 802: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 801 - Store 795(NdotR) 802 - 803: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 804 804 12 12 - 808: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 806 805(spec) 51 - 809: 16(float) Load 795(NdotR) - 811: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 809 810 - 812: 25(ptr) AccessChain 509(albedo) 13 - 813: 16(float) Load 812 - 814: 16(float) FMul 811 813 - 816: 16(float) FMul 814 815 - 817: 74(fvec3) CompositeConstruct 816 816 816 - Store 805(spec) 817 - 818: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 819 819 12 12 - 820: 74(fvec3) Load 777(diff) - 821: 74(fvec3) Load 805(spec) - 822: 74(fvec3) FAdd 820 821 - 823: 16(float) Load 748(spotEffect) - 824: 74(fvec3) VectorTimesScalar 822 823 - 825: 16(float) Load 758(heightAttenuation) - 826: 74(fvec3) VectorTimesScalar 824 825 - 827: 16(float) CompositeExtract 826 0 - 828: 16(float) CompositeExtract 826 1 - 829: 16(float) CompositeExtract 826 2 - 830: 74(fvec3) CompositeConstruct 827 828 829 - 831: 101(int) Load 645(i) - 833: 667(ptr) AccessChain 428(ubo) 289 831 832 - 834: 19(fvec4) Load 833 - 835: 74(fvec3) VectorShuffle 834 834 0 1 2 - 836: 74(fvec3) FMul 830 835 - 837: 19(fvec4) Load 509(albedo) - 838: 74(fvec3) VectorShuffle 837 837 0 1 2 - 839: 74(fvec3) FMul 836 838 - 840: 74(fvec3) Load 628(fragcolor) - 841: 74(fvec3) FAdd 840 839 - Store 628(fragcolor) 841 - Branch 651 - 651: Label - 842: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 843: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 644 644 12 12 - 844: 101(int) Load 645(i) - 845: 101(int) IAdd 844 289 - Store 645(i) 845 - Branch 648 - 650: Label - 846: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 847: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 848 848 12 12 - 849: 521(ptr) AccessChain 428(ubo) 832 - 850: 101(int) Load 849 - 851: 144(bool) SGreaterThan 850 110 - SelectionMerge 853 None - BranchConditional 851 852 853 - 852: Label - 854: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 855: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 856 856 12 12 - 858: 74(fvec3) Load 628(fragcolor) - Store 857(param) 858 - 860: 74(fvec3) Load 472(fragPos) - Store 859(param) 860 - 861: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 857(param) 859(param) - Store 628(fragcolor) 861 - Branch 853 - 853: Label - 862: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 863: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 864 864 12 12 - 865: 74(fvec3) Load 628(fragcolor) - 866: 16(float) CompositeExtract 865 0 - 867: 16(float) CompositeExtract 865 1 - 868: 16(float) CompositeExtract 865 2 - 869: 19(fvec4) CompositeConstruct 866 867 868 118 - Store 544(outFragColor) 869 + 532: Label + 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 641: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 638 638 12 12 + 639: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 637 636(fragcolor) 49 + 642: 19(fvec4) Load 512(albedo) + 643: 73(fvec3) VectorShuffle 642 642 0 1 2 + 645: 73(fvec3) VectorTimesScalar 643 644 + Store 636(fragcolor) 645 + 651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 649 649 12 12 + 650: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 647 646(N) 49 + 652: 73(fvec3) Load 499(normal) + 653: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 652 + Store 646(N) 653 + 658: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 + 657: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 655 654(i) 49 + Store 654(i) 106 + Branch 659 + 659: Label + 663: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 + LoopMerge 661 662 None + Branch 665 + 665: Label + 667: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 668: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 + 666: 96(int) Load 654(i) + 669: 139(bool) SLessThan 666 393 + BranchConditional 669 660 661 + 660: Label + 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 673 673 12 12 + 674: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 671 670(L) 49 + 677: 96(int) Load 654(i) + 680: 678(ptr) AccessChain 431(ubo) 290 677 106 + 681: 19(fvec4) Load 680 + 682: 73(fvec3) VectorShuffle 681 681 0 1 2 + 683: 73(fvec3) Load 475(fragPos) + 684: 73(fvec3) FSub 682 683 + Store 670(L) 684 + 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 687 687 12 12 + 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 686 685(dist) 49 + 690: 73(fvec3) Load 670(L) + 691: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 690 + Store 685(dist) 691 + 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 694 694 12 12 + 692: 73(fvec3) Load 670(L) + 695: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 692 + Store 670(L) 695 + 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 699 699 12 12 + 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 697 696(V) 49 + 702: 678(ptr) AccessChain 431(ubo) 106 + 703: 19(fvec4) Load 702 + 704: 73(fvec3) VectorShuffle 703 703 0 1 2 + 705: 73(fvec3) Load 475(fragPos) + 706: 73(fvec3) FSub 704 705 + Store 696(V) 706 + 708: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 709 709 12 12 + 707: 73(fvec3) Load 696(V) + 710: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 707 + Store 696(V) 710 + 716: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 714 714 12 12 + 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(lightCosInnerAngle) 49 + Store 711(lightCosInnerAngle) 717 + 723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 721 721 12 12 + 722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 719 718(lightCosOuterAngle) 49 + Store 718(lightCosOuterAngle) 724 + 730: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 728 728 12 12 + 729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(lightRange) 49 + Store 725(lightRange) 731 + 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 735 735 12 12 + 736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(dir) 49 + 738: 96(int) Load 654(i) + 739: 678(ptr) AccessChain 431(ubo) 290 738 106 + 740: 19(fvec4) Load 739 + 741: 73(fvec3) VectorShuffle 740 740 0 1 2 + 742: 96(int) Load 654(i) + 743: 678(ptr) AccessChain 431(ubo) 290 742 290 + 744: 19(fvec4) Load 743 + 745: 73(fvec3) VectorShuffle 744 744 0 1 2 + 746: 73(fvec3) FSub 741 745 + 747: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 746 + Store 732(dir) 747 + 753: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 751 751 12 12 + 752: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 749 748(cosDir) 49 + 754: 73(fvec3) Load 670(L) + 755: 73(fvec3) Load 732(dir) + 756: 16(float) Dot 754 755 + Store 748(cosDir) 756 + 762: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 760 760 12 12 + 761: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 758 757(spotEffect) 49 + 763: 16(float) Load 718(lightCosOuterAngle) + 764: 16(float) Load 711(lightCosInnerAngle) + 765: 16(float) Load 748(cosDir) + 766: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 763 764 765 + Store 757(spotEffect) 766 + 772: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 770 770 12 12 + 771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 768 767(heightAttenuation) 49 + 773: 16(float) Load 725(lightRange) + 774: 16(float) Load 685(dist) + 775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 195 774 + Store 767(heightAttenuation) 775 + 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 779 779 12 12 + 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(NdotL) 49 + 782: 73(fvec3) Load 646(N) + 783: 73(fvec3) Load 670(L) + 784: 16(float) Dot 782 783 + 785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 784 + Store 776(NdotL) 785 + 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 789 789 12 12 + 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 787 786(diff) 49 + 792: 16(float) Load 776(NdotL) + 793: 73(fvec3) CompositeConstruct 792 792 792 + Store 786(diff) 793 + 799: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 797 797 12 12 + 798: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 795 794(R) 49 + 800: 73(fvec3) Load 670(L) + 801: 73(fvec3) FNegate 800 + 802: 73(fvec3) Load 646(N) + 803: 73(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 801 802 + Store 794(R) 803 + 809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 807 807 12 12 + 808: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 805 804(NdotR) 49 + 810: 73(fvec3) Load 794(R) + 811: 73(fvec3) Load 696(V) + 812: 16(float) Dot 810 811 + 813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 812 + Store 804(NdotR) 813 + 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 817 817 12 12 + 818: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 815 814(spec) 49 + 820: 16(float) Load 804(NdotR) + 822: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 820 821 + 823: 25(ptr) AccessChain 512(albedo) 13 + 824: 16(float) Load 823 + 825: 16(float) FMul 822 824 + 827: 16(float) FMul 825 826 + 828: 73(fvec3) CompositeConstruct 827 827 827 + Store 814(spec) 828 + 830: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 831 831 12 12 + 829: 73(fvec3) Load 786(diff) + 832: 73(fvec3) Load 814(spec) + 833: 73(fvec3) FAdd 829 832 + 834: 16(float) Load 757(spotEffect) + 835: 73(fvec3) VectorTimesScalar 833 834 + 836: 16(float) Load 767(heightAttenuation) + 837: 73(fvec3) VectorTimesScalar 835 836 + 838: 16(float) CompositeExtract 837 0 + 839: 16(float) CompositeExtract 837 1 + 840: 16(float) CompositeExtract 837 2 + 841: 73(fvec3) CompositeConstruct 838 839 840 + 842: 96(int) Load 654(i) + 844: 678(ptr) AccessChain 431(ubo) 290 842 843 + 845: 19(fvec4) Load 844 + 846: 73(fvec3) VectorShuffle 845 845 0 1 2 + 847: 73(fvec3) FMul 841 846 + 848: 19(fvec4) Load 512(albedo) + 849: 73(fvec3) VectorShuffle 848 848 0 1 2 + 850: 73(fvec3) FMul 847 849 + 851: 73(fvec3) Load 636(fragcolor) + 852: 73(fvec3) FAdd 851 850 + Store 636(fragcolor) 852 + Branch 662 + 662: Label + 854: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 + 853: 96(int) Load 654(i) + 856: 96(int) IAdd 853 290 + Store 654(i) 856 + Branch 659 + 661: Label + 858: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 859: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 860 860 12 12 + 857: 524(ptr) AccessChain 431(ubo) 843 + 861: 96(int) Load 857 + 862: 139(bool) SGreaterThan 861 106 + SelectionMerge 864 None + BranchConditional 862 863 864 + 863: Label + 867: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 869 869 12 12 + 866: 73(fvec3) Load 636(fragcolor) + Store 865(param) 866 + 871: 73(fvec3) Load 475(fragPos) + Store 870(param) 871 + 872: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 865(param) 870(param) + Store 636(fragcolor) 872 + Branch 864 + 864: Label + 874: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 875: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 876 876 12 12 + 873: 73(fvec3) Load 636(fragcolor) + 877: 16(float) CompositeExtract 873 0 + 878: 16(float) CompositeExtract 873 1 + 879: 16(float) CompositeExtract 873 2 + 880: 19(fvec4) CompositeConstruct 877 878 879 115 + Store 546(outFragColor) 880 Return FunctionEnd - Line 1 59 51 37(textureProj(vf4;f1;vf2;): 16(float) Function None 32 34(P): 22(ptr) FunctionParameter 35(layer): 25(ptr) FunctionParameter 36(offset): 30(ptr) FunctionParameter 38: Label - 115(shadow): 25(ptr) Variable Function -121(shadowCoord): 22(ptr) Variable Function - 164(dist): 25(ptr) Variable Function - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 34(P) 51 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 35(layer) 51 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 36(offset) 51 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 37(textureProj(vf4;f1;vf2;) - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 114 114 12 12 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 115(shadow) 51 - Store 115(shadow) 118 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 120 120 12 12 - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(shadowCoord) 51 - 125: 19(fvec4) Load 34(P) - 126: 25(ptr) AccessChain 34(P) 13 - 127: 16(float) Load 126 - 128: 19(fvec4) CompositeConstruct 127 127 127 127 - 129: 19(fvec4) FDiv 125 128 - Store 121(shadowCoord) 129 - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 131 131 12 12 - 132: 19(fvec4) Load 121(shadowCoord) - 133: 27(fvec2) VectorShuffle 132 132 0 1 - 135: 27(fvec2) VectorTimesScalar 133 134 - 136: 27(fvec2) CompositeConstruct 134 134 - 137: 27(fvec2) FAdd 135 136 - 138: 25(ptr) AccessChain 121(shadowCoord) 12 - 139: 16(float) CompositeExtract 137 0 - Store 138 139 - 140: 25(ptr) AccessChain 121(shadowCoord) 45 - 141: 16(float) CompositeExtract 137 1 - Store 140 141 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 143 143 12 12 - 147: 25(ptr) AccessChain 121(shadowCoord) 28 - 148: 16(float) Load 147 - 150: 144(bool) FOrdGreaterThan 148 149 - SelectionMerge 152 None - BranchConditional 150 151 152 - 151: Label - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 143 143 12 12 - 155: 25(ptr) AccessChain 121(shadowCoord) 28 - 156: 16(float) Load 155 - 157: 144(bool) FOrdLessThan 156 118 - Branch 152 - 152: Label - 158: 144(bool) Phi 150 38 157 151 - SelectionMerge 160 None - BranchConditional 158 159 160 - 159: Label - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 163 163 12 12 - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 165 164(dist) 51 - 182: 173 Load 179(samplerShadowMap) - 183: 19(fvec4) Load 121(shadowCoord) - 184: 27(fvec2) VectorShuffle 183 183 0 1 - 185: 27(fvec2) Load 36(offset) - 186: 27(fvec2) FAdd 184 185 - 187: 16(float) Load 35(layer) - 188: 16(float) CompositeExtract 186 0 - 189: 16(float) CompositeExtract 186 1 - 190: 74(fvec3) CompositeConstruct 188 189 187 - 191: 19(fvec4) ImageSampleImplicitLod 182 190 - 192: 16(float) CompositeExtract 191 0 - Store 164(dist) 192 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 - 195: 25(ptr) AccessChain 121(shadowCoord) 13 - 196: 16(float) Load 195 - 198: 144(bool) FOrdGreaterThan 196 197 - SelectionMerge 200 None - BranchConditional 198 199 200 - 199: Label - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 - 203: 16(float) Load 164(dist) - 204: 25(ptr) AccessChain 121(shadowCoord) 28 - 205: 16(float) Load 204 - 206: 144(bool) FOrdLessThan 203 205 - Branch 200 - 200: Label - 207: 144(bool) Phi 198 159 206 199 - SelectionMerge 209 None - BranchConditional 207 208 209 - 208: Label - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 212 212 12 12 - Store 115(shadow) 213 - Branch 209 - 209: Label - Branch 160 - 160: Label - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 216 216 12 12 - 217: 16(float) Load 115(shadow) - ReturnValue 217 + 110(shadow): 25(ptr) Variable Function +116(shadowCoord): 22(ptr) Variable Function + 159(dist): 25(ptr) Variable Function + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(P) 49 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 35(layer) 49 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 36(offset) 49 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 37(textureProj(vf4;f1;vf2;) + 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 112 112 12 12 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 111 110(shadow) 49 + Store 110(shadow) 115 + 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 119 119 12 12 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 117 116(shadowCoord) 49 + 122: 19(fvec4) Load 34(P) + 123: 25(ptr) AccessChain 34(P) 13 + 124: 16(float) Load 123 + 125: 19(fvec4) CompositeConstruct 124 124 124 124 + 126: 19(fvec4) FDiv 122 125 + Store 116(shadowCoord) 126 + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 129 129 12 12 + 127: 19(fvec4) Load 116(shadowCoord) + 130: 27(fvec2) VectorShuffle 127 127 0 1 + 132: 27(fvec2) VectorTimesScalar 130 131 + 133: 27(fvec2) CompositeConstruct 131 131 + 134: 27(fvec2) FAdd 132 133 + 135: 25(ptr) AccessChain 116(shadowCoord) 12 + 136: 16(float) CompositeExtract 134 0 + Store 135 136 + 137: 25(ptr) AccessChain 116(shadowCoord) 45 + 138: 16(float) CompositeExtract 134 1 + Store 137 138 + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 144 144 12 12 + 142: 25(ptr) AccessChain 116(shadowCoord) 28 + 145: 16(float) Load 142 + 147: 139(bool) FOrdGreaterThan 145 146 + SelectionMerge 149 None + BranchConditional 147 148 149 + 148: Label + 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 144 144 12 12 + 150: 25(ptr) AccessChain 116(shadowCoord) 28 + 153: 16(float) Load 150 + 154: 139(bool) FOrdLessThan 153 115 + Branch 149 + 149: Label + 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 155: 139(bool) Phi 147 38 154 148 + SelectionMerge 158 None + BranchConditional 155 157 158 + 157: Label + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 162 162 12 12 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(dist) 49 + 180: 171 Load 177(samplerShadowMap) + 181: 19(fvec4) Load 116(shadowCoord) + 182: 27(fvec2) VectorShuffle 181 181 0 1 + 183: 27(fvec2) Load 36(offset) + 184: 27(fvec2) FAdd 182 183 + 185: 16(float) Load 35(layer) + 186: 16(float) CompositeExtract 184 0 + 187: 16(float) CompositeExtract 184 1 + 188: 73(fvec3) CompositeConstruct 186 187 185 + 189: 19(fvec4) ImageSampleImplicitLod 180 188 + 190: 16(float) CompositeExtract 189 0 + Store 159(dist) 190 + 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 193 193 12 12 + 191: 25(ptr) AccessChain 116(shadowCoord) 13 + 194: 16(float) Load 191 + 196: 139(bool) FOrdGreaterThan 194 195 + SelectionMerge 198 None + BranchConditional 196 197 198 + 197: Label + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 193 193 12 12 + 199: 16(float) Load 159(dist) + 202: 25(ptr) AccessChain 116(shadowCoord) 28 + 203: 16(float) Load 202 + 204: 139(bool) FOrdLessThan 199 203 + Branch 198 + 198: Label + 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 205: 139(bool) Phi 196 157 204 197 + SelectionMerge 208 None + BranchConditional 205 207 208 + 207: Label + 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 212 212 12 12 + Store 110(shadow) 209 + Branch 208 + 208: Label + 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + Branch 158 + 158: Label + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 217 217 12 12 + 214: 16(float) Load 110(shadow) + ReturnValue 214 FunctionEnd - Line 1 76 37 62(filterPCF(vf4;f1;): 16(float) Function None 58 60(sc): 22(ptr) FunctionParameter 61(layer): 25(ptr) FunctionParameter 63: Label - 228(texDim): 226(ptr) Variable Function - 240(scale): 25(ptr) Variable Function - 247(dx): 25(ptr) Variable Function - 261(dy): 25(ptr) Variable Function -273(shadowFactor): 25(ptr) Variable Function - 279(count): 253(ptr) Variable Function - 285(range): 253(ptr) Variable Function - 292(x): 253(ptr) Variable Function - 313(y): 253(ptr) Variable Function - 343(param): 22(ptr) Variable Function - 345(param): 25(ptr) Variable Function - 347(param): 30(ptr) Variable Function - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 60(sc) 51 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 51 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 223 223 12 12 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 229 228(texDim) 51 - 232: 173 Load 179(samplerShadowMap) - 233: 168 Image 232 - 236: 234(ivec3) ImageQuerySizeLod 233 110 - 237: 224(ivec2) VectorShuffle 236 236 0 1 - Store 228(texDim) 237 - 238: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 239 239 12 12 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 241 240(scale) 51 - Store 240(scale) 244 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 246 246 12 12 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(dx) 51 - 251: 16(float) Load 240(scale) - 252: 16(float) FMul 251 118 - 255: 253(ptr) AccessChain 228(texDim) 12 - 256: 101(int) Load 255 - 257: 16(float) ConvertSToF 256 - 258: 16(float) FDiv 252 257 - Store 247(dx) 258 - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 260 260 12 12 - 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(dy) 51 - 265: 16(float) Load 240(scale) - 266: 16(float) FMul 265 118 - 267: 253(ptr) AccessChain 228(texDim) 45 - 268: 101(int) Load 267 - 269: 16(float) ConvertSToF 268 - 270: 16(float) FDiv 266 269 - Store 261(dy) 270 - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 272 272 12 12 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(shadowFactor) 51 - Store 273(shadowFactor) 197 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 278 278 12 12 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(count) 51 - Store 279(count) 110 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 284 284 12 12 - 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 286 285(range) 51 - Store 285(range) 289 - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 293 292(x) 51 - 296: 101(int) Load 285(range) - 297: 101(int) SNegate 296 - Store 292(x) 297 - Branch 298 - 298: Label - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 - LoopMerge 300 301 None - Branch 304 - 304: Label - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 - 307: 101(int) Load 292(x) - 308: 101(int) Load 285(range) - 309: 144(bool) SLessThanEqual 307 308 - BranchConditional 309 299 300 - 299: Label - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 314 313(y) 51 - 317: 101(int) Load 285(range) - 318: 101(int) SNegate 317 - Store 313(y) 318 - Branch 319 - 319: Label - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 324: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 - LoopMerge 321 322 None - Branch 325 - 325: Label - 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 - 328: 101(int) Load 313(y) - 329: 101(int) Load 285(range) - 330: 144(bool) SLessThanEqual 328 329 - BranchConditional 330 320 321 - 320: Label - 331: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 333 333 12 12 - 334: 16(float) Load 247(dx) - 335: 101(int) Load 292(x) - 336: 16(float) ConvertSToF 335 - 337: 16(float) FMul 334 336 - 338: 16(float) Load 261(dy) - 339: 101(int) Load 313(y) - 340: 16(float) ConvertSToF 339 - 341: 16(float) FMul 338 340 - 342: 27(fvec2) CompositeConstruct 337 341 - 344: 19(fvec4) Load 60(sc) - Store 343(param) 344 - 346: 16(float) Load 61(layer) - Store 345(param) 346 - Store 347(param) 342 - 348: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 343(param) 345(param) 347(param) - 349: 16(float) Load 273(shadowFactor) - 350: 16(float) FAdd 349 348 - Store 273(shadowFactor) 350 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 352 352 12 12 - 353: 101(int) Load 279(count) - 354: 101(int) IAdd 353 289 - Store 279(count) 354 - Branch 322 - 322: Label - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 312 312 12 12 - 357: 101(int) Load 313(y) - 358: 101(int) IAdd 357 289 - Store 313(y) 358 - Branch 319 - 321: Label - Branch 301 - 301: Label - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 - 361: 101(int) Load 292(x) - 362: 101(int) IAdd 361 289 - Store 292(x) 362 - Branch 298 - 300: Label - 363: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 365 365 12 12 - 366: 16(float) Load 273(shadowFactor) - 367: 101(int) Load 279(count) - 368: 16(float) ConvertSToF 367 - 369: 16(float) FDiv 366 368 - ReturnValue 369 + 227(texDim): 225(ptr) Variable Function + 239(scale): 25(ptr) Variable Function + 246(dx): 25(ptr) Variable Function + 260(dy): 25(ptr) Variable Function +272(shadowFactor): 25(ptr) Variable Function + 278(count): 254(ptr) Variable Function + 284(range): 254(ptr) Variable Function + 291(x): 254(ptr) Variable Function + 311(y): 254(ptr) Variable Function + 344(param): 22(ptr) Variable Function + 346(param): 25(ptr) Variable Function + 348(param): 30(ptr) Variable Function + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 61(layer) 49 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12 + 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 230 230 12 12 + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(texDim) 49 + 233: 171 Load 177(samplerShadowMap) + 234: 166 Image 233 + 237: 235(ivec3) ImageQuerySizeLod 234 106 + 238: 223(ivec2) VectorShuffle 237 237 0 1 + Store 227(texDim) 238 + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 242 242 12 12 + 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 240 239(scale) 49 + Store 239(scale) 245 + 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 249 249 12 12 + 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 247 246(dx) 49 + 252: 16(float) Load 239(scale) + 253: 16(float) FMul 252 115 + 256: 254(ptr) AccessChain 227(texDim) 12 + 257: 96(int) Load 256 + 258: 16(float) ConvertSToF 257 + 259: 16(float) FDiv 253 258 + Store 246(dx) 259 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 263 263 12 12 + 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 261 260(dy) 49 + 266: 16(float) Load 239(scale) + 267: 16(float) FMul 266 115 + 268: 254(ptr) AccessChain 227(texDim) 45 + 269: 96(int) Load 268 + 270: 16(float) ConvertSToF 269 + 271: 16(float) FDiv 267 270 + Store 260(dy) 271 + 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 275 275 12 12 + 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 273 272(shadowFactor) 49 + Store 272(shadowFactor) 195 + 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 281 281 12 12 + 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 279 278(count) 49 + Store 278(count) 106 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 287 287 12 12 + 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 285 284(range) 49 + Store 284(range) 290 + 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 292 291(x) 49 + 297: 96(int) Load 284(range) + 298: 96(int) SNegate 297 + Store 291(x) 298 + Branch 299 + 299: Label + 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 + LoopMerge 301 302 None + Branch 305 + 305: Label + 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 + 306: 96(int) Load 291(x) + 309: 96(int) Load 284(range) + 310: 139(bool) SLessThanEqual 306 309 + BranchConditional 310 300 301 + 300: Label + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 + 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 312 311(y) 49 + 318: 96(int) Load 284(range) + 319: 96(int) SNegate 318 + Store 311(y) 319 + Branch 320 + 320: Label + 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 + LoopMerge 322 323 None + Branch 326 + 326: Label + 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 + 327: 96(int) Load 311(y) + 330: 96(int) Load 284(range) + 331: 139(bool) SLessThanEqual 327 330 + BranchConditional 331 321 322 + 321: Label + 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 335 335 12 12 + 332: 16(float) Load 246(dx) + 336: 96(int) Load 291(x) + 337: 16(float) ConvertSToF 336 + 338: 16(float) FMul 332 337 + 339: 16(float) Load 260(dy) + 340: 96(int) Load 311(y) + 341: 16(float) ConvertSToF 340 + 342: 16(float) FMul 339 341 + 343: 27(fvec2) CompositeConstruct 338 342 + 345: 19(fvec4) Load 60(sc) + Store 344(param) 345 + 347: 16(float) Load 61(layer) + Store 346(param) 347 + Store 348(param) 343 + 349: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 344(param) 346(param) 348(param) + 350: 16(float) Load 272(shadowFactor) + 351: 16(float) FAdd 350 349 + Store 272(shadowFactor) 351 + 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 354 354 12 12 + 352: 96(int) Load 278(count) + 355: 96(int) IAdd 352 290 + Store 278(count) 355 + Branch 323 + 323: Label + 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 + 356: 96(int) Load 311(y) + 359: 96(int) IAdd 356 290 + Store 311(y) 359 + Branch 320 + 322: Label + 360: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + Branch 302 + 302: Label + 362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 + 361: 96(int) Load 291(x) + 364: 96(int) IAdd 361 290 + Store 291(x) 364 + Branch 299 + 301: Label + 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 368 368 12 12 + 365: 16(float) Load 272(shadowFactor) + 369: 96(int) Load 278(count) + 370: 16(float) ConvertSToF 369 + 371: 16(float) FDiv 365 370 + ReturnValue 371 FunctionEnd - Line 1 99 41 -82(shadow(vf3;vf3;): 74(fvec3) Function None 78 - 80(fragcolor): 76(ptr) FunctionParameter - 81(fragpos): 76(ptr) FunctionParameter - 83: Label - 376(i): 253(ptr) Variable Function +81(shadow(vf3;vf3;): 73(fvec3) Function None 77 + 79(fragcolor): 75(ptr) FunctionParameter + 80(fragpos): 75(ptr) FunctionParameter + 82: Label + 377(i): 254(ptr) Variable Function 395(shadowClip): 22(ptr) Variable Function -444(shadowFactor): 25(ptr) Variable Function - 449(param): 22(ptr) Variable Function - 451(param): 25(ptr) Variable Function - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 86 86 12 12 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 80(fragcolor) 51 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragpos) 51 - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) - 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 - 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 377 376(i) 51 - Store 376(i) 110 - Branch 380 - 380: Label - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 - LoopMerge 382 383 None - Branch 386 - 386: Label - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 - 389: 101(int) Load 376(i) - 391: 144(bool) SLessThan 389 390 - BranchConditional 391 381 382 - 381: Label - 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 394 394 12 12 - 398: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 396 395(shadowClip) 51 - 431: 101(int) Load 376(i) - 434: 432(ptr) AccessChain 428(ubo) 289 431 390 - 435: 399 Load 434 - 436: 74(fvec3) Load 81(fragpos) - 437: 16(float) CompositeExtract 436 0 - 438: 16(float) CompositeExtract 436 1 - 439: 16(float) CompositeExtract 436 2 - 440: 19(fvec4) CompositeConstruct 437 438 439 118 - 441: 19(fvec4) MatrixTimesVector 435 440 - Store 395(shadowClip) 441 - 442: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 443 443 12 12 - 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 445 444(shadowFactor) 51 - 447: 101(int) Load 376(i) - 448: 16(float) ConvertSToF 447 - 450: 19(fvec4) Load 395(shadowClip) - Store 449(param) 450 - Store 451(param) 448 - 452: 16(float) FunctionCall 62(filterPCF(vf4;f1;) 449(param) 451(param) - Store 444(shadowFactor) 452 - 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 454 454 12 12 - 455: 16(float) Load 444(shadowFactor) - 456: 74(fvec3) Load 80(fragcolor) - 457: 74(fvec3) VectorTimesScalar 456 455 - Store 80(fragcolor) 457 +445(shadowFactor): 25(ptr) Variable Function + 452(param): 22(ptr) Variable Function + 454(param): 25(ptr) Variable Function + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 79(fragcolor) 49 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 80(fragpos) 49 + 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 85 85 12 12 + 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 84 81(shadow(vf3;vf3;) + 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 + 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 378 377(i) 49 + Store 377(i) 106 + Branch 383 + 383: Label + 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 + LoopMerge 385 386 None + Branch 389 + 389: Label + 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 + 390: 96(int) Load 377(i) + 394: 139(bool) SLessThan 390 393 + BranchConditional 394 384 385 + 384: Label + 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 398 398 12 12 + 399: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 396 395(shadowClip) 49 + 434: 96(int) Load 377(i) + 437: 435(ptr) AccessChain 431(ubo) 290 434 393 + 438: 402 Load 437 + 439: 73(fvec3) Load 80(fragpos) + 440: 16(float) CompositeExtract 439 0 + 441: 16(float) CompositeExtract 439 1 + 442: 16(float) CompositeExtract 439 2 + 443: 19(fvec4) CompositeConstruct 440 441 442 115 + 444: 19(fvec4) MatrixTimesVector 438 443 + Store 395(shadowClip) 444 + 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 447 447 12 12 + 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 446 445(shadowFactor) 49 + 450: 96(int) Load 377(i) + 451: 16(float) ConvertSToF 450 + 453: 19(fvec4) Load 395(shadowClip) + Store 452(param) 453 + Store 454(param) 451 + 455: 16(float) FunctionCall 62(filterPCF(vf4;f1;) 452(param) 454(param) + Store 445(shadowFactor) 455 + 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 458 458 12 12 + 456: 16(float) Load 445(shadowFactor) + 459: 73(fvec3) Load 79(fragcolor) + 460: 73(fvec3) VectorTimesScalar 459 456 + Store 79(fragcolor) 460 + Branch 386 + 386: Label + 462: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 463: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 + 461: 96(int) Load 377(i) + 464: 96(int) IAdd 461 290 + Store 377(i) 464 Branch 383 - 383: Label - 458: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 375 375 12 12 - 460: 101(int) Load 376(i) - 461: 101(int) IAdd 460 289 - Store 376(i) 461 - Branch 380 - 382: Label - 462: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 464 464 12 12 - 465: 74(fvec3) Load 80(fragcolor) + 385: Label + 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 467: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 468 468 12 12 + 465: 73(fvec3) Load 79(fragcolor) ReturnValue 465 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index eff5627f8b..c21571c1b0 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -1,20 +1,20 @@ spv.debuginfo.glsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 272 +// Id's are bound by 273 Capability Geometry Capability MultiViewport Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 14 "main" 66 99 120 131 134 167 209 218 236 250 256 259 + EntryPoint Geometry 14 "main" 64 98 121 130 134 168 208 217 236 249 255 259 ExecutionMode 14 Triangles ExecutionMode 14 Invocations 2 ExecutionMode 14 OutputTriangleStrip ExecutionMode 14 OutputVertices 3 - 1: String "" + 2: String "" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -25,97 +25,97 @@ spv.debuginfo.glsl.geom // OpModuleProcessed entry-point main #line 1 " - 30: String "int" - 37: String "i" - 53: String "bool" - 60: String "float" - 68: String "outNormal" - 81: String "projection" - 84: String "modelview" - 87: String "lightPos" - 90: String "UBO" - 95: String "ubo" - 101: String "gl_InvocationID" - 122: String "inNormal" - 133: String "outColor" + 29: String "int" + 36: String "i" + 54: String "bool" + 58: String "float" + 66: String "outNormal" + 80: String "projection" + 83: String "modelview" + 86: String "lightPos" + 89: String "UBO" + 94: String "ubo" + 100: String "gl_InvocationID" + 123: String "inNormal" + 132: String "outColor" 136: String "inColor" - 146: String "pos" - 152: String "gl_Position" - 155: String "gl_PointSize" - 158: String "gl_CullDistance" - 162: String "gl_PerVertex" - 169: String "gl_in" - 179: String "worldPos" - 192: String "lPos" - 211: String "outLightVec" - 220: String "outViewVec" - 252: String "gl_ViewportIndex" - 258: String "gl_PrimitiveID" + 145: String "pos" + 153: String "gl_Position" + 156: String "gl_PointSize" + 159: String "gl_CullDistance" + 163: String "gl_PerVertex" + 170: String "gl_in" + 178: String "worldPos" + 191: String "lPos" + 210: String "outLightVec" + 219: String "outViewVec" + 251: String "gl_ViewportIndex" + 257: String "gl_PrimitiveID" 261: String "gl_PrimitiveIDIn" SourceExtension "GL_ARB_viewport_array" Name 14 "main" - Name 35 "i" - Name 66 "outNormal" - Name 79 "UBO" - MemberName 79(UBO) 0 "projection" - MemberName 79(UBO) 1 "modelview" - MemberName 79(UBO) 2 "lightPos" - Name 93 "ubo" - Name 99 "gl_InvocationID" - Name 120 "inNormal" - Name 131 "outColor" + Name 34 "i" + Name 64 "outNormal" + Name 78 "UBO" + MemberName 78(UBO) 0 "projection" + MemberName 78(UBO) 1 "modelview" + MemberName 78(UBO) 2 "lightPos" + Name 92 "ubo" + Name 98 "gl_InvocationID" + Name 121 "inNormal" + Name 130 "outColor" Name 134 "inColor" - Name 144 "pos" - Name 150 "gl_PerVertex" - MemberName 150(gl_PerVertex) 0 "gl_Position" - MemberName 150(gl_PerVertex) 1 "gl_PointSize" - MemberName 150(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 150(gl_PerVertex) 3 "gl_CullDistance" - Name 167 "gl_in" - Name 177 "worldPos" - Name 190 "lPos" - Name 209 "outLightVec" - Name 218 "outViewVec" - Name 226 "gl_PerVertex" - MemberName 226(gl_PerVertex) 0 "gl_Position" - MemberName 226(gl_PerVertex) 1 "gl_PointSize" - MemberName 226(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 226(gl_PerVertex) 3 "gl_CullDistance" + Name 143 "pos" + Name 151 "gl_PerVertex" + MemberName 151(gl_PerVertex) 0 "gl_Position" + MemberName 151(gl_PerVertex) 1 "gl_PointSize" + MemberName 151(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 151(gl_PerVertex) 3 "gl_CullDistance" + Name 168 "gl_in" + Name 176 "worldPos" + Name 189 "lPos" + Name 208 "outLightVec" + Name 217 "outViewVec" + Name 225 "gl_PerVertex" + MemberName 225(gl_PerVertex) 0 "gl_Position" + MemberName 225(gl_PerVertex) 1 "gl_PointSize" + MemberName 225(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 225(gl_PerVertex) 3 "gl_CullDistance" Name 236 "" - Name 250 "gl_ViewportIndex" - Name 256 "gl_PrimitiveID" + Name 249 "gl_ViewportIndex" + Name 255 "gl_PrimitiveID" Name 259 "gl_PrimitiveIDIn" - Decorate 66(outNormal) Location 0 - Decorate 75 ArrayStride 64 - Decorate 77 ArrayStride 64 - MemberDecorate 79(UBO) 0 ColMajor - MemberDecorate 79(UBO) 0 Offset 0 - MemberDecorate 79(UBO) 0 MatrixStride 16 - MemberDecorate 79(UBO) 1 ColMajor - MemberDecorate 79(UBO) 1 Offset 128 - MemberDecorate 79(UBO) 1 MatrixStride 16 - MemberDecorate 79(UBO) 2 Offset 256 - Decorate 79(UBO) Block - Decorate 93(ubo) DescriptorSet 0 - Decorate 93(ubo) Binding 0 - Decorate 99(gl_InvocationID) BuiltIn InvocationId - Decorate 120(inNormal) Location 0 - Decorate 131(outColor) Location 1 + Decorate 64(outNormal) Location 0 + Decorate 74 ArrayStride 64 + Decorate 76 ArrayStride 64 + MemberDecorate 78(UBO) 0 ColMajor + MemberDecorate 78(UBO) 0 Offset 0 + MemberDecorate 78(UBO) 0 MatrixStride 16 + MemberDecorate 78(UBO) 1 ColMajor + MemberDecorate 78(UBO) 1 Offset 128 + MemberDecorate 78(UBO) 1 MatrixStride 16 + MemberDecorate 78(UBO) 2 Offset 256 + Decorate 78(UBO) Block + Decorate 92(ubo) DescriptorSet 0 + Decorate 92(ubo) Binding 0 + Decorate 98(gl_InvocationID) BuiltIn InvocationId + Decorate 121(inNormal) Location 0 + Decorate 130(outColor) Location 1 Decorate 134(inColor) Location 1 - MemberDecorate 150(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 150(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 150(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 150(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 150(gl_PerVertex) Block - Decorate 209(outLightVec) Location 3 - Decorate 218(outViewVec) Location 2 - MemberDecorate 226(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 226(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 226(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 226(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 226(gl_PerVertex) Block - Decorate 250(gl_ViewportIndex) BuiltIn ViewportIndex - Decorate 256(gl_PrimitiveID) BuiltIn PrimitiveId + MemberDecorate 151(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 151(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 151(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 151(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 151(gl_PerVertex) Block + Decorate 208(outLightVec) Location 3 + Decorate 217(outViewVec) Location 2 + MemberDecorate 225(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 225(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 225(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 225(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 225(gl_PerVertex) Block + Decorate 249(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 255(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 259(gl_PrimitiveIDIn) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 @@ -123,258 +123,258 @@ spv.debuginfo.glsl.geom 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 47 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 - 28: 7(int) Constant 49 - 29: TypeInt 32 1 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 23 12 - 32: TypePointer Function 29(int) - 33: 7(int) Constant 7 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 33 12 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 37 31 18 28 12 17 23 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 40: 29(int) Constant 0 - 51: 29(int) Constant 3 - 52: TypeBool - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 53 10 24 12 - 58: 7(int) Constant 51 - 59: TypeFloat 32 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 60 10 13 12 - 62: TypeVector 59(float) 3 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 61 13 - 64: TypePointer Output 62(fvec3) - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 13 12 - 66(outNormal): 64(ptr) Variable Output - 69: 7(int) Constant 8 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 63 18 58 12 21 68 66(outNormal) 69 - 70: TypeVector 59(float) 4 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 61 23 - 72: TypeMatrix 70(fvec4) 4 - 74: 52(bool) ConstantTrue - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 71 23 74 - 75: TypeArray 72 24 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 73 24 - 77: TypeArray 72 24 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 73 24 - 79(UBO): TypeStruct 75 77 70(fvec4) - 82: 7(int) Constant 34 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 81 76 18 82 33 12 12 13 - 85: 7(int) Constant 35 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 84 78 18 85 33 12 12 13 - 88: 7(int) Constant 36 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 71 18 88 33 12 12 13 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 22 18 58 12 21 90 12 13 80 83 86 - 91: TypePointer Uniform 79(UBO) - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 24 12 - 93(ubo): 91(ptr) Variable Uniform - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 89 18 58 12 21 95 93(ubo) 69 - 96: 29(int) Constant 1 - 97: TypePointer Input 29(int) - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 22 12 -99(gl_InvocationID): 97(ptr) Variable Input - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 101 31 18 58 12 21 101 99(gl_InvocationID) 69 - 103: TypePointer Uniform 72 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 24 12 - 107: TypeMatrix 62(fvec3) 3 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 63 13 74 - 116: TypeArray 62(fvec3) 13 - 117: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 63 13 - 118: TypePointer Input 116 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 117 22 12 - 120(inNormal): 118(ptr) Variable Input - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 122 117 18 58 12 21 122 120(inNormal) 69 - 124: TypePointer Input 62(fvec3) - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 22 12 - 130: 7(int) Constant 52 - 131(outColor): 64(ptr) Variable Output - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 133 63 18 130 12 21 133 131(outColor) 69 - 134(inColor): 118(ptr) Variable Input - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 117 18 130 12 21 136 134(inColor) 69 - 141: 7(int) Constant 54 - 142: TypePointer Function 70(fvec4) - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 33 12 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 71 18 141 12 17 23 - 148: TypeArray 59(float) 22 - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 22 -150(gl_PerVertex): TypeStruct 70(fvec4) 59(float) 148 148 - 153: 7(int) Constant 23 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 71 18 24 153 12 12 13 - 156: 7(int) Constant 41 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 61 18 24 156 12 12 13 - 159: 7(int) Constant 84 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 24 159 12 12 13 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 24 159 12 12 13 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 22 18 141 12 21 162 12 13 151 154 157 160 - 163: TypeArray 150(gl_PerVertex) 13 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 161 13 - 165: TypePointer Input 163 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 164 22 12 - 167(gl_in): 165(ptr) Variable Input - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 169 164 18 141 12 21 169 167(gl_in) 69 - 171: TypePointer Input 70(fvec4) - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 22 12 - 176: 7(int) Constant 55 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 71 18 176 12 17 23 - 187: 7(int) Constant 57 - 188: TypePointer Function 62(fvec3) - 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 33 12 - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 192 63 18 187 12 17 23 - 197: 29(int) Constant 2 - 198: TypePointer Uniform 70(fvec4) - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 24 12 - 208: 7(int) Constant 58 -209(outLightVec): 64(ptr) Variable Output - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 211 63 18 208 12 21 211 209(outLightVec) 69 - 217: 7(int) Constant 59 - 218(outViewVec): 64(ptr) Variable Output - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 220 63 18 217 12 21 220 218(outViewVec) 69 - 225: 7(int) Constant 61 -226(gl_PerVertex): TypeStruct 70(fvec4) 59(float) 148 148 - 228: 7(int) Constant 215 - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 71 18 24 228 12 12 13 - 230: 7(int) Constant 233 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 61 18 24 230 12 12 13 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 13 33 12 12 13 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 158 149 18 13 33 12 12 13 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 22 18 225 12 21 162 12 13 227 229 231 232 - 234: TypePointer Output 226(gl_PerVertex) - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 233 13 12 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: TypeInt 32 1 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 23 12 + 31: TypePointer Function 28(int) + 32: 7(int) Constant 7 + 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 32 12 + 37: 7(int) Constant 49 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 36 30 18 37 12 17 23 + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 41: 28(int) Constant 0 + 52: 28(int) Constant 3 + 53: TypeBool + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 54 10 24 12 + 57: TypeFloat 32 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 58 10 13 12 + 60: TypeVector 57(float) 3 + 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 13 + 62: TypePointer Output 60(fvec3) + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 13 12 + 64(outNormal): 62(ptr) Variable Output + 67: 7(int) Constant 51 + 68: 7(int) Constant 8 + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 66 61 18 67 12 21 66 64(outNormal) 68 + 69: TypeVector 57(float) 4 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 59 23 + 71: TypeMatrix 69(fvec4) 4 + 73: 53(bool) ConstantTrue + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 70 23 73 + 74: TypeArray 71 24 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 72 24 + 76: TypeArray 71 24 + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 72 24 + 78(UBO): TypeStruct 74 76 69(fvec4) + 81: 7(int) Constant 34 + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 80 75 18 81 32 12 12 13 + 84: 7(int) Constant 35 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 77 18 84 32 12 12 13 + 87: 7(int) Constant 36 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 86 70 18 87 32 12 12 13 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 89 22 18 67 12 21 89 12 13 79 82 85 + 90: TypePointer Uniform 78(UBO) + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 24 12 + 92(ubo): 90(ptr) Variable Uniform + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 88 18 67 12 21 94 92(ubo) 68 + 95: 28(int) Constant 1 + 96: TypePointer Input 28(int) + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 22 12 +98(gl_InvocationID): 96(ptr) Variable Input + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 100 30 18 67 12 21 100 98(gl_InvocationID) 68 + 104: TypePointer Uniform 71 + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 24 12 + 108: TypeMatrix 60(fvec3) 3 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 61 13 73 + 117: TypeArray 60(fvec3) 13 + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 13 + 119: TypePointer Input 117 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 22 12 + 121(inNormal): 119(ptr) Variable Input + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 123 118 18 67 12 21 123 121(inNormal) 68 + 125: TypePointer Input 60(fvec3) + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 22 12 + 130(outColor): 62(ptr) Variable Output + 133: 7(int) Constant 52 + 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 132 61 18 133 12 21 132 130(outColor) 68 + 134(inColor): 119(ptr) Variable Input + 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 136 118 18 133 12 21 136 134(inColor) 68 + 141: TypePointer Function 69(fvec4) + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 32 12 + 146: 7(int) Constant 54 + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 145 70 18 146 12 17 23 + 149: TypeArray 57(float) 22 + 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 59 22 +151(gl_PerVertex): TypeStruct 69(fvec4) 57(float) 149 149 + 154: 7(int) Constant 23 + 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 153 70 18 24 154 12 12 13 + 157: 7(int) Constant 41 + 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 59 18 24 157 12 12 13 + 160: 7(int) Constant 84 + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 24 160 12 12 13 + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 24 160 12 12 13 + 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 22 18 146 12 21 163 12 13 152 155 158 161 + 164: TypeArray 151(gl_PerVertex) 13 + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 162 13 + 166: TypePointer Input 164 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 165 22 12 + 168(gl_in): 166(ptr) Variable Input + 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 170 165 18 146 12 21 170 168(gl_in) 68 + 172: TypePointer Input 69(fvec4) + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 22 12 + 179: 7(int) Constant 55 + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 178 70 18 179 12 17 23 + 187: TypePointer Function 60(fvec3) + 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 32 12 + 192: 7(int) Constant 57 + 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 191 61 18 192 12 17 23 + 198: 28(int) Constant 2 + 199: TypePointer Uniform 69(fvec4) + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 24 12 +208(outLightVec): 62(ptr) Variable Output + 211: 7(int) Constant 58 + 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 210 61 18 211 12 21 210 208(outLightVec) 68 + 217(outViewVec): 62(ptr) Variable Output + 220: 7(int) Constant 59 + 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 219 61 18 220 12 21 219 217(outViewVec) 68 +225(gl_PerVertex): TypeStruct 69(fvec4) 57(float) 149 149 + 227: 7(int) Constant 215 + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 153 70 18 24 227 12 12 13 + 229: 7(int) Constant 233 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 59 18 24 229 12 12 13 + 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 13 32 12 12 13 + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 159 150 18 13 32 12 12 13 + 233: 7(int) Constant 61 + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 22 18 233 12 21 163 12 13 226 228 230 231 + 234: TypePointer Output 225(gl_PerVertex) + 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 232 13 12 236: 234(ptr) Variable Output - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 233 18 225 12 21 1 236 69 - 243: TypePointer Output 70(fvec4) - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 13 12 - 247: 7(int) Constant 64 - 248: TypePointer Output 29(int) - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 13 12 -250(gl_ViewportIndex): 248(ptr) Variable Output - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 252 31 18 247 12 21 252 250(gl_ViewportIndex) 69 - 255: 7(int) Constant 65 -256(gl_PrimitiveID): 248(ptr) Variable Output - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 31 18 255 12 21 258 256(gl_PrimitiveID) 69 -259(gl_PrimitiveIDIn): 97(ptr) Variable Input - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 31 18 255 12 21 261 259(gl_PrimitiveIDIn) 69 - 264: 7(int) Constant 66 - 271: 7(int) Constant 68 - Line 1 47 15 + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 232 18 233 12 21 2 236 68 + 244: TypePointer Output 69(fvec4) + 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 13 12 + 247: TypePointer Output 28(int) + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 13 12 +249(gl_ViewportIndex): 247(ptr) Variable Output + 252: 7(int) Constant 64 + 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 251 30 18 252 12 21 251 249(gl_ViewportIndex) 68 +255(gl_PrimitiveID): 247(ptr) Variable Output + 258: 7(int) Constant 65 + 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 30 18 258 12 21 257 255(gl_PrimitiveID) 68 +259(gl_PrimitiveIDIn): 96(ptr) Variable Input + 260: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 30 18 258 12 21 261 259(gl_PrimitiveIDIn) 68 + 265: 7(int) Constant 66 + 272: 7(int) Constant 68 14(main): 4 Function None 5 15: Label - 35(i): 32(ptr) Variable Function - 144(pos): 142(ptr) Variable Function - 177(worldPos): 142(ptr) Variable Function - 190(lPos): 188(ptr) Variable Function - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 36 35(i) 39 - Store 35(i) 40 - Branch 41 - 41: Label - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - LoopMerge 43 44 None - Branch 47 - 47: Label - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 50: 29(int) Load 35(i) - 55: 52(bool) SLessThan 50 51 - BranchConditional 55 42 43 - 42: Label - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 58 58 12 12 - 102: 29(int) Load 99(gl_InvocationID) - 105: 103(ptr) AccessChain 93(ubo) 96 102 - 106: 72 Load 105 - 109: 70(fvec4) CompositeExtract 106 0 - 110: 62(fvec3) VectorShuffle 109 109 0 1 2 - 111: 70(fvec4) CompositeExtract 106 1 - 112: 62(fvec3) VectorShuffle 111 111 0 1 2 - 113: 70(fvec4) CompositeExtract 106 2 - 114: 62(fvec3) VectorShuffle 113 113 0 1 2 - 115: 107 CompositeConstruct 110 112 114 - 123: 29(int) Load 35(i) - 126: 124(ptr) AccessChain 120(inNormal) 123 - 127: 62(fvec3) Load 126 - 128: 62(fvec3) MatrixTimesVector 115 127 - Store 66(outNormal) 128 - 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 130 130 12 12 - 137: 29(int) Load 35(i) - 138: 124(ptr) AccessChain 134(inColor) 137 - 139: 62(fvec3) Load 138 - Store 131(outColor) 139 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 141 141 12 12 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(pos) 39 - 170: 29(int) Load 35(i) - 173: 171(ptr) AccessChain 167(gl_in) 170 40 - 174: 70(fvec4) Load 173 - Store 144(pos) 174 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 176 176 12 12 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 178 177(worldPos) 39 - 181: 29(int) Load 99(gl_InvocationID) - 182: 103(ptr) AccessChain 93(ubo) 96 181 - 183: 72 Load 182 - 184: 70(fvec4) Load 144(pos) - 185: 70(fvec4) MatrixTimesVector 183 184 - Store 177(worldPos) 185 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 187 187 12 12 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 191 190(lPos) 39 - 194: 29(int) Load 99(gl_InvocationID) - 195: 103(ptr) AccessChain 93(ubo) 96 194 - 196: 72 Load 195 - 200: 198(ptr) AccessChain 93(ubo) 197 - 201: 70(fvec4) Load 200 - 202: 70(fvec4) MatrixTimesVector 196 201 - 203: 59(float) CompositeExtract 202 0 - 204: 59(float) CompositeExtract 202 1 - 205: 59(float) CompositeExtract 202 2 - 206: 62(fvec3) CompositeConstruct 203 204 205 - Store 190(lPos) 206 - 207: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 208 208 12 12 - 212: 62(fvec3) Load 190(lPos) - 213: 70(fvec4) Load 177(worldPos) - 214: 62(fvec3) VectorShuffle 213 213 0 1 2 - 215: 62(fvec3) FSub 212 214 - Store 209(outLightVec) 215 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 217 217 12 12 - 221: 70(fvec4) Load 177(worldPos) - 222: 62(fvec3) VectorShuffle 221 221 0 1 2 - 223: 62(fvec3) FNegate 222 - Store 218(outViewVec) 223 - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 225 225 12 12 - 238: 29(int) Load 99(gl_InvocationID) - 239: 103(ptr) AccessChain 93(ubo) 40 238 - 240: 72 Load 239 - 241: 70(fvec4) Load 177(worldPos) - 242: 70(fvec4) MatrixTimesVector 240 241 - 245: 243(ptr) AccessChain 236 40 - Store 245 242 - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 247 247 12 12 - 253: 29(int) Load 99(gl_InvocationID) - Store 250(gl_ViewportIndex) 253 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 255 255 12 12 - 262: 29(int) Load 259(gl_PrimitiveIDIn) - Store 256(gl_PrimitiveID) 262 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 264 264 12 12 + 34(i): 31(ptr) Variable Function + 143(pos): 141(ptr) Variable Function + 176(worldPos): 141(ptr) Variable Function + 189(lPos): 187(ptr) Variable Function + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 + 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 35 34(i) 39 + Store 34(i) 41 + Branch 42 + 42: Label + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 + LoopMerge 44 45 None + Branch 48 + 48: Label + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 + 49: 28(int) Load 34(i) + 56: 53(bool) SLessThan 49 52 + BranchConditional 56 43 44 + 43: Label + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 67 67 12 12 + 101: 28(int) Load 98(gl_InvocationID) + 106: 104(ptr) AccessChain 92(ubo) 95 101 + 107: 71 Load 106 + 110: 69(fvec4) CompositeExtract 107 0 + 111: 60(fvec3) VectorShuffle 110 110 0 1 2 + 112: 69(fvec4) CompositeExtract 107 1 + 113: 60(fvec3) VectorShuffle 112 112 0 1 2 + 114: 69(fvec4) CompositeExtract 107 2 + 115: 60(fvec3) VectorShuffle 114 114 0 1 2 + 116: 108 CompositeConstruct 111 113 115 + 124: 28(int) Load 34(i) + 127: 125(ptr) AccessChain 121(inNormal) 124 + 128: 60(fvec3) Load 127 + 129: 60(fvec3) MatrixTimesVector 116 128 + Store 64(outNormal) 129 + 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 133 133 12 12 + 137: 28(int) Load 34(i) + 139: 125(ptr) AccessChain 134(inColor) 137 + 140: 60(fvec3) Load 139 + Store 130(outColor) 140 + 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 146 146 12 12 + 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 144 143(pos) 39 + 171: 28(int) Load 34(i) + 174: 172(ptr) AccessChain 168(gl_in) 171 41 + 175: 69(fvec4) Load 174 + Store 143(pos) 175 + 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 179 179 12 12 + 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 177 176(worldPos) 39 + 182: 28(int) Load 98(gl_InvocationID) + 183: 104(ptr) AccessChain 92(ubo) 95 182 + 184: 71 Load 183 + 185: 69(fvec4) Load 143(pos) + 186: 69(fvec4) MatrixTimesVector 184 185 + Store 176(worldPos) 186 + 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 192 192 12 12 + 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 190 189(lPos) 39 + 195: 28(int) Load 98(gl_InvocationID) + 196: 104(ptr) AccessChain 92(ubo) 95 195 + 197: 71 Load 196 + 201: 199(ptr) AccessChain 92(ubo) 198 + 202: 69(fvec4) Load 201 + 203: 69(fvec4) MatrixTimesVector 197 202 + 204: 57(float) CompositeExtract 203 0 + 205: 57(float) CompositeExtract 203 1 + 206: 57(float) CompositeExtract 203 2 + 207: 60(fvec3) CompositeConstruct 204 205 206 + Store 189(lPos) 207 + 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 211 211 12 12 + 212: 60(fvec3) Load 189(lPos) + 214: 69(fvec4) Load 176(worldPos) + 215: 60(fvec3) VectorShuffle 214 214 0 1 2 + 216: 60(fvec3) FSub 212 215 + Store 208(outLightVec) 216 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 220 220 12 12 + 221: 69(fvec4) Load 176(worldPos) + 223: 60(fvec3) VectorShuffle 221 221 0 1 2 + 224: 60(fvec3) FNegate 223 + Store 217(outViewVec) 224 + 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12 + 238: 28(int) Load 98(gl_InvocationID) + 240: 104(ptr) AccessChain 92(ubo) 41 238 + 241: 71 Load 240 + 242: 69(fvec4) Load 176(worldPos) + 243: 69(fvec4) MatrixTimesVector 241 242 + 246: 244(ptr) AccessChain 236 41 + Store 246 243 + 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 252 252 12 12 + 253: 28(int) Load 98(gl_InvocationID) + Store 249(gl_ViewportIndex) 253 + 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 258 258 12 12 + 262: 28(int) Load 259(gl_PrimitiveIDIn) + Store 255(gl_PrimitiveID) 262 + 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 265 265 12 12 EmitVertex - Branch 44 - 44: Label - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 267: 29(int) Load 35(i) - 268: 29(int) IAdd 267 96 - Store 35(i) 268 - Branch 41 - 43: Label - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 271 271 12 12 + Branch 45 + 45: Label + 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 + 266: 28(int) Load 34(i) + 269: 28(int) IAdd 266 95 + Store 34(i) 269 + Branch 42 + 44: Label + 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 272 272 12 12 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index b5a7d037ae..a1aa38b80b 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -1,16 +1,16 @@ spv.debuginfo.glsl.tesc // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 562 +// Id's are bound by 569 Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 14 "main" 259 264 293 381 396 511 527 535 552 + EntryPoint TessellationControl 14 "main" 260 265 294 383 399 516 532 542 557 ExecutionMode 14 OutputVertices 4 - 1: String "" + 2: String "" 8: String "uint" 17: String "float" 31: String "screenSpaceTessFactor" @@ -22,712 +22,713 @@ spv.debuginfo.glsl.tesc // OpModuleProcessed entry-point main #line 1 " - 42: String "p0" + 40: String "p0" 46: String "p1" 49: String "bool" 55: String "frustumCheck" 58: String "main" - 67: String "midPoint" - 80: String "radius" - 91: String "v0" - 102: String "modelview" - 106: String "lightPos" - 109: String "frustumPlanes" - 111: String "tessellatedEdgeSize" - 116: String "viewportDim" - 120: String "UBO" - 125: String "ubo" - 127: String "int" - 140: String "clip0" - 161: String "clip1" - 238: String "pos" - 244: String "gl_Position" - 247: String "gl_PointSize" - 250: String "gl_CullDistance" - 254: String "gl_PerVertex" - 261: String "gl_in" - 266: String "gl_InvocationID" - 276: String "type.2d.image" + 64: String "midPoint" + 77: String "radius" + 88: String "v0" + 101: String "modelview" + 105: String "lightPos" + 108: String "frustumPlanes" + 110: String "tessellatedEdgeSize" + 115: String "viewportDim" + 119: String "UBO" + 124: String "ubo" + 126: String "int" + 137: String "clip0" + 158: String "clip1" + 237: String "pos" + 245: String "gl_Position" + 248: String "gl_PointSize" + 251: String "gl_CullDistance" + 255: String "gl_PerVertex" + 262: String "gl_in" + 267: String "gl_InvocationID" + 275: String "type.2d.image" 277: String "@type.2d.image" 281: String "type.sampled.image" 282: String "@type.sampled.image" 287: String "samplerHeight" - 295: String "inUV" - 316: String "i" - 383: String "gl_TessLevelInner" - 398: String "gl_TessLevelOuter" - 513: String "gl_out" - 529: String "outNormal" - 537: String "inNormal" - 554: String "outUV" + 296: String "inUV" + 315: String "i" + 385: String "gl_TessLevelInner" + 401: String "gl_TessLevelOuter" + 518: String "gl_out" + 534: String "outNormal" + 544: String "inNormal" + 559: String "outUV" Name 14 "main" Name 29 "screenSpaceTessFactor(vf4;vf4;" Name 27 "p0" Name 28 "p1" Name 53 "frustumCheck(" - Name 65 "midPoint" - Name 78 "radius" - Name 89 "v0" - Name 100 "UBO" - MemberName 100(UBO) 0 "projection" - MemberName 100(UBO) 1 "modelview" - MemberName 100(UBO) 2 "lightPos" - MemberName 100(UBO) 3 "frustumPlanes" - MemberName 100(UBO) 4 "displacementFactor" - MemberName 100(UBO) 5 "tessellationFactor" - MemberName 100(UBO) 6 "viewportDim" - MemberName 100(UBO) 7 "tessellatedEdgeSize" - Name 123 "ubo" - Name 138 "clip0" - Name 159 "clip1" - Name 236 "pos" - Name 242 "gl_PerVertex" - MemberName 242(gl_PerVertex) 0 "gl_Position" - MemberName 242(gl_PerVertex) 1 "gl_PointSize" - MemberName 242(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 242(gl_PerVertex) 3 "gl_CullDistance" - Name 259 "gl_in" - Name 264 "gl_InvocationID" + Name 62 "midPoint" + Name 75 "radius" + Name 86 "v0" + Name 99 "UBO" + MemberName 99(UBO) 0 "projection" + MemberName 99(UBO) 1 "modelview" + MemberName 99(UBO) 2 "lightPos" + MemberName 99(UBO) 3 "frustumPlanes" + MemberName 99(UBO) 4 "displacementFactor" + MemberName 99(UBO) 5 "tessellationFactor" + MemberName 99(UBO) 6 "viewportDim" + MemberName 99(UBO) 7 "tessellatedEdgeSize" + Name 122 "ubo" + Name 135 "clip0" + Name 156 "clip1" + Name 235 "pos" + Name 243 "gl_PerVertex" + MemberName 243(gl_PerVertex) 0 "gl_Position" + MemberName 243(gl_PerVertex) 1 "gl_PointSize" + MemberName 243(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 243(gl_PerVertex) 3 "gl_CullDistance" + Name 260 "gl_in" + Name 265 "gl_InvocationID" Name 285 "samplerHeight" - Name 293 "inUV" - Name 314 "i" - Name 381 "gl_TessLevelInner" - Name 396 "gl_TessLevelOuter" - Name 422 "param" - Name 425 "param" - Name 432 "param" + Name 294 "inUV" + Name 313 "i" + Name 383 "gl_TessLevelInner" + Name 399 "gl_TessLevelOuter" + Name 424 "param" + Name 430 "param" Name 435 "param" - Name 442 "param" + Name 440 "param" Name 445 "param" - Name 452 "param" + Name 450 "param" Name 455 "param" - Name 499 "gl_PerVertex" - MemberName 499(gl_PerVertex) 0 "gl_Position" - MemberName 499(gl_PerVertex) 1 "gl_PointSize" - MemberName 499(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 499(gl_PerVertex) 3 "gl_CullDistance" - Name 511 "gl_out" - Name 527 "outNormal" - Name 535 "inNormal" - Name 552 "outUV" - Decorate 96 ArrayStride 16 - MemberDecorate 100(UBO) 0 ColMajor - MemberDecorate 100(UBO) 0 Offset 0 - MemberDecorate 100(UBO) 0 MatrixStride 16 - MemberDecorate 100(UBO) 1 ColMajor - MemberDecorate 100(UBO) 1 Offset 64 - MemberDecorate 100(UBO) 1 MatrixStride 16 - MemberDecorate 100(UBO) 2 Offset 128 - MemberDecorate 100(UBO) 3 Offset 144 - MemberDecorate 100(UBO) 4 Offset 240 - MemberDecorate 100(UBO) 5 Offset 244 - MemberDecorate 100(UBO) 6 Offset 248 - MemberDecorate 100(UBO) 7 Offset 256 - Decorate 100(UBO) Block - Decorate 123(ubo) DescriptorSet 0 - Decorate 123(ubo) Binding 0 - MemberDecorate 242(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 242(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 242(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 242(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 242(gl_PerVertex) Block - Decorate 264(gl_InvocationID) BuiltIn InvocationId + Name 460 "param" + Name 503 "gl_PerVertex" + MemberName 503(gl_PerVertex) 0 "gl_Position" + MemberName 503(gl_PerVertex) 1 "gl_PointSize" + MemberName 503(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 503(gl_PerVertex) 3 "gl_CullDistance" + Name 516 "gl_out" + Name 532 "outNormal" + Name 542 "inNormal" + Name 557 "outUV" + Decorate 95 ArrayStride 16 + MemberDecorate 99(UBO) 0 ColMajor + MemberDecorate 99(UBO) 0 Offset 0 + MemberDecorate 99(UBO) 0 MatrixStride 16 + MemberDecorate 99(UBO) 1 ColMajor + MemberDecorate 99(UBO) 1 Offset 64 + MemberDecorate 99(UBO) 1 MatrixStride 16 + MemberDecorate 99(UBO) 2 Offset 128 + MemberDecorate 99(UBO) 3 Offset 144 + MemberDecorate 99(UBO) 4 Offset 240 + MemberDecorate 99(UBO) 5 Offset 244 + MemberDecorate 99(UBO) 6 Offset 248 + MemberDecorate 99(UBO) 7 Offset 256 + Decorate 99(UBO) Block + Decorate 122(ubo) DescriptorSet 0 + Decorate 122(ubo) Binding 0 + MemberDecorate 243(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 243(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 243(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 243(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 243(gl_PerVertex) Block + Decorate 265(gl_InvocationID) BuiltIn InvocationId Decorate 285(samplerHeight) DescriptorSet 0 Decorate 285(samplerHeight) Binding 1 - Decorate 293(inUV) Location 1 - Decorate 381(gl_TessLevelInner) Patch - Decorate 381(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 396(gl_TessLevelOuter) Patch - Decorate 396(gl_TessLevelOuter) BuiltIn TessLevelOuter - MemberDecorate 499(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 499(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 499(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 499(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 499(gl_PerVertex) Block - Decorate 527(outNormal) Location 0 - Decorate 535(inNormal) Location 0 - Decorate 552(outUV) Location 1 + Decorate 294(inUV) Location 1 + Decorate 383(gl_TessLevelInner) Patch + Decorate 383(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 399(gl_TessLevelOuter) Patch + Decorate 399(gl_TessLevelOuter) BuiltIn TessLevelOuter + MemberDecorate 503(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 503(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 503(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 503(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 503(gl_PerVertex) Block + Decorate 532(outNormal) Location 0 + Decorate 542(inNormal) Location 0 + Decorate 557(outUV) Location 1 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 16: TypeFloat 32 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 19: TypeVector 16(float) 4 20: 7(int) Constant 4 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 20 22: TypePointer Function 19(fvec4) 23: 7(int) Constant 7 - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 + 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 23 12 25: TypeFunction 16(float) 22(ptr) 22(ptr) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 21 - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 34 + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 21 21 + 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 34 35: 7(int) Constant 51 37: 7(int) Constant 1 38: 7(int) Constant 2 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 20 33 38 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 31 26 33 35 12 36 31 13 35 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 21 33 35 12 32 20 37 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 21 33 35 12 32 20 38 + 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 20 33 38 + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 31 26 33 35 12 36 31 13 35 + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 21 33 35 12 32 20 37 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 21 33 35 12 32 20 38 48: TypeBool - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 10 38 12 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 49 10 38 12 51: TypeFunction 48(bool) - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 50 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 50 57: 7(int) Constant 81 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 55 52 33 57 12 36 55 13 57 + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 55 52 33 57 12 36 55 13 57 60: 7(int) Constant 98 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 6 33 60 12 36 58 13 60 - 64: 7(int) Constant 54 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 21 33 64 12 32 20 - 69: 16(float) Constant 1056964608 - 75: 7(int) Constant 56 - 76: TypePointer Function 16(float) - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 80 18 33 75 12 32 20 - 85: 16(float) Constant 1073741824 - 88: 7(int) Constant 59 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 21 33 88 12 32 20 - 93: TypeMatrix 19(fvec4) 4 - 95: 48(bool) ConstantTrue - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 95 - 96: TypeArray 19(fvec4) 11 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 21 11 - 98: TypeVector 16(float) 2 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 38 - 100(UBO): TypeStruct 93 93 19(fvec4) 96 16(float) 16(float) 98(fvec2) 16(float) - 103: 7(int) Constant 30 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 94 33 103 23 12 12 13 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 94 33 103 23 12 12 13 - 107: 7(int) Constant 31 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 21 33 107 23 12 12 13 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 97 33 10 23 12 12 13 - 112: 7(int) Constant 36 - 113: 7(int) Constant 8 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 18 33 112 113 12 12 13 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 18 33 112 113 12 12 13 - 117: 7(int) Constant 35 - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 116 99 33 117 23 12 12 13 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 18 33 112 113 12 12 13 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 120 37 33 88 12 36 120 12 13 101 104 105 108 110 114 115 118 - 121: TypePointer Uniform 100(UBO) - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 119 38 12 - 123(ubo): 121(ptr) Variable Uniform - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 125 119 33 88 12 36 125 123(ubo) 113 - 126: TypeInt 32 1 - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 127 10 20 12 - 129: 126(int) Constant 1 - 130: TypePointer Uniform 93 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 94 38 12 - 137: 7(int) Constant 62 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 21 33 137 12 32 20 - 142: 126(int) Constant 0 - 147: TypeVector 16(float) 3 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 - 149: 16(float) Constant 0 - 150: 147(fvec3) ConstantComposite 149 149 149 - 158: 7(int) Constant 63 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 21 33 158 12 32 20 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 58 6 33 60 12 36 58 13 60 + 65: 7(int) Constant 54 + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 64 21 33 65 12 32 20 + 68: 16(float) Constant 1056964608 + 73: TypePointer Function 16(float) + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 23 12 + 78: 7(int) Constant 56 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 18 33 78 12 32 20 + 84: 16(float) Constant 1073741824 + 89: 7(int) Constant 59 + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 21 33 89 12 32 20 + 92: TypeMatrix 19(fvec4) 4 + 94: 48(bool) ConstantTrue + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 94 + 95: TypeArray 19(fvec4) 11 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 21 11 + 97: TypeVector 16(float) 2 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 38 + 99(UBO): TypeStruct 92 92 19(fvec4) 95 16(float) 16(float) 97(fvec2) 16(float) + 102: 7(int) Constant 30 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 93 33 102 23 12 12 13 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 93 33 102 23 12 12 13 + 106: 7(int) Constant 31 + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 105 21 33 106 23 12 12 13 + 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 108 96 33 10 23 12 12 13 + 111: 7(int) Constant 36 + 112: 7(int) Constant 8 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 110 18 33 111 112 12 12 13 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 110 18 33 111 112 12 12 13 + 116: 7(int) Constant 35 + 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 115 98 33 116 23 12 12 13 + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 110 18 33 111 112 12 12 13 + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 119 37 33 89 12 36 119 12 13 100 103 104 107 109 113 114 117 + 120: TypePointer Uniform 99(UBO) + 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 38 12 + 122(ubo): 120(ptr) Variable Uniform + 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 124 118 33 89 12 36 124 122(ubo) 112 + 125: TypeInt 32 1 + 127: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 126 10 20 12 + 128: 125(int) Constant 1 + 129: TypePointer Uniform 92 + 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 38 12 + 138: 7(int) Constant 62 + 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 137 21 33 138 12 32 20 + 141: 125(int) Constant 0 + 146: TypeVector 16(float) 3 + 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 148: 16(float) Constant 0 + 149: 146(fvec3) ConstantComposite 148 148 148 + 159: 7(int) Constant 63 + 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 158 21 33 159 12 32 20 174: 7(int) Constant 66 181: 7(int) Constant 67 - 188: 7(int) Constant 70 - 189: 126(int) Constant 6 - 190: TypePointer Uniform 98(fvec2) - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 99 38 12 + 186: 125(int) Constant 6 + 187: TypePointer Uniform 97(fvec2) + 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 38 12 + 191: 7(int) Constant 70 202: 7(int) Constant 71 213: 7(int) Constant 76 - 217: 126(int) Constant 7 - 218: TypePointer Uniform 16(float) - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 38 12 - 223: 126(int) Constant 5 - 227: 16(float) Constant 1065353216 - 228: 16(float) Constant 1115684864 - 235: 7(int) Constant 85 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 238 21 33 235 12 56 20 - 240: TypeArray 16(float) 37 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 37 -242(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 240 240 - 245: 7(int) Constant 1756 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 21 33 37 245 12 12 13 - 248: 7(int) Constant 1774 - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 18 33 37 248 12 12 13 - 251: 7(int) Constant 1817 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 251 12 12 13 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 251 12 12 13 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 254 37 33 235 12 36 254 12 13 243 246 249 252 - 255: TypeArray 242(gl_PerVertex) 10 - 256: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 253 10 - 257: TypePointer Input 255 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 256 37 12 - 259(gl_in): 257(ptr) Variable Input - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 256 33 235 12 36 261 259(gl_in) 113 - 262: TypePointer Input 126(int) - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 37 12 -264(gl_InvocationID): 262(ptr) Variable Input - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 266 128 33 235 12 36 266 264(gl_InvocationID) 113 - 268: TypePointer Input 19(fvec4) - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 37 12 - 273: 7(int) Constant 86 - 274: TypeImage 16(float) 2D sampled format:Unknown - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 276 12 33 273 12 36 277 278 13 - 279: TypeSampledImage 274 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 281 12 33 273 12 36 282 278 13 + 216: 125(int) Constant 7 + 217: TypePointer Uniform 16(float) + 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 38 12 + 222: 125(int) Constant 5 + 226: 16(float) Constant 1065353216 + 227: 16(float) Constant 1115684864 + 238: 7(int) Constant 85 + 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 21 33 238 12 56 20 + 241: TypeArray 16(float) 37 + 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 37 +243(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 241 241 + 246: 7(int) Constant 1756 + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 21 33 37 246 12 12 13 + 249: 7(int) Constant 1774 + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 18 33 37 249 12 12 13 + 252: 7(int) Constant 1817 + 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 252 12 12 13 + 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 252 12 12 13 + 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 255 37 33 238 12 36 255 12 13 244 247 250 253 + 256: TypeArray 243(gl_PerVertex) 10 + 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 254 10 + 258: TypePointer Input 256 + 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 257 37 12 + 260(gl_in): 258(ptr) Variable Input + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 262 257 33 238 12 36 262 260(gl_in) 112 + 263: TypePointer Input 125(int) + 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 37 12 +265(gl_InvocationID): 263(ptr) Variable Input + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 267 127 33 238 12 36 267 265(gl_InvocationID) 112 + 269: TypePointer Input 19(fvec4) + 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 37 12 + 273: TypeImage 16(float) 2D sampled format:Unknown + 276: 7(int) Constant 86 + 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 275 12 33 276 12 36 277 278 13 + 279: TypeSampledImage 273 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 281 12 33 276 12 36 282 278 13 283: TypePointer UniformConstant 279 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 280 12 12 + 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 280 12 12 285(samplerHeight): 283(ptr) Variable UniformConstant - 286: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 287 280 33 273 12 36 287 285(samplerHeight) 113 - 289: TypeArray 98(fvec2) 10 - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 99 10 - 291: TypePointer Input 289 - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 290 37 12 - 293(inUV): 291(ptr) Variable Input - 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 295 290 33 273 12 36 295 293(inUV) 113 - 296: TypePointer Input 98(fvec2) - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 99 37 12 - 302: 126(int) Constant 4 - 311: 7(int) Constant 89 - 312: TypePointer Function 126(int) - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 23 12 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 128 33 311 12 56 20 - 331: 7(int) Constant 90 - 333: 126(int) Constant 3 - 335: TypePointer Uniform 19(fvec4) - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 38 12 - 340: 16(float) Constant 1090519040 - 345: 48(bool) ConstantFalse - 348: 7(int) Constant 92 - 356: 7(int) Constant 95 - 362: 7(int) Constant 100 - 369: 7(int) Constant 102 - 376: 7(int) Constant 104 - 377: TypeArray 16(float) 38 - 378: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 38 - 379: TypePointer Output 377 - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 378 13 12 -381(gl_TessLevelInner): 379(ptr) Variable Output - 382: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 383 378 33 376 12 36 383 381(gl_TessLevelInner) 113 - 384: TypePointer Output 16(float) - 385: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 - 388: 7(int) Constant 105 - 391: 7(int) Constant 106 - 392: TypeArray 16(float) 20 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 - 394: TypePointer Output 392 - 395: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 393 13 12 -396(gl_TessLevelOuter): 394(ptr) Variable Output - 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 398 393 33 391 12 36 398 396(gl_TessLevelOuter) 113 - 401: 7(int) Constant 107 - 404: 7(int) Constant 108 - 405: 126(int) Constant 2 - 408: 7(int) Constant 109 - 413: 7(int) Constant 113 - 421: 7(int) Constant 115 - 431: 7(int) Constant 116 - 441: 7(int) Constant 117 - 451: 7(int) Constant 118 - 461: 7(int) Constant 119 - 469: 7(int) Constant 120 - 479: 7(int) Constant 126 - 482: 7(int) Constant 127 - 485: 7(int) Constant 128 - 488: 7(int) Constant 129 - 491: 7(int) Constant 130 - 494: 7(int) Constant 131 - 498: 7(int) Constant 137 -499(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 240 240 - 501: 7(int) Constant 110 - 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 244 21 33 37 501 12 12 13 - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 18 33 37 485 12 12 13 - 504: 7(int) Constant 171 - 503: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 504 12 12 13 - 505: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 241 33 37 504 12 12 13 - 506: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 254 37 33 498 12 36 254 12 13 500 502 503 505 - 507: TypeArray 499(gl_PerVertex) 20 - 508: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 506 20 - 509: TypePointer Output 507 - 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 508 13 12 - 511(gl_out): 509(ptr) Variable Output - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 513 508 33 498 12 36 513 511(gl_out) 113 - 518: TypePointer Output 19(fvec4) - 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 - 522: 7(int) Constant 138 - 523: TypeArray 147(fvec3) 20 - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 148 20 - 525: TypePointer Output 523 - 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 524 13 12 - 527(outNormal): 525(ptr) Variable Output - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 529 524 33 522 12 36 529 527(outNormal) 113 - 531: TypeArray 147(fvec3) 10 - 532: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 148 10 - 533: TypePointer Input 531 - 534: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 532 37 12 - 535(inNormal): 533(ptr) Variable Input - 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 537 532 33 522 12 36 537 535(inNormal) 113 - 539: TypePointer Input 147(fvec3) - 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 148 37 12 - 543: TypePointer Output 147(fvec3) - 544: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 148 13 12 - 547: 7(int) Constant 139 - 548: TypeArray 98(fvec2) 20 - 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 99 20 - 550: TypePointer Output 548 - 551: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 549 13 12 - 552(outUV): 550(ptr) Variable Output - 553: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 554 549 33 547 12 36 554 552(outUV) 113 - 559: TypePointer Output 98(fvec2) - 560: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 99 13 12 - Line 1 98 11 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 287 280 33 276 12 36 287 285(samplerHeight) 112 + 290: TypeArray 97(fvec2) 10 + 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 98 10 + 292: TypePointer Input 290 + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 291 37 12 + 294(inUV): 292(ptr) Variable Input + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 296 291 33 276 12 36 296 294(inUV) 112 + 297: TypePointer Input 97(fvec2) + 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 37 12 + 303: 125(int) Constant 4 + 311: TypePointer Function 125(int) + 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 23 12 + 316: 7(int) Constant 89 + 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 315 127 33 316 12 56 20 + 333: 7(int) Constant 90 + 334: 125(int) Constant 3 + 336: TypePointer Uniform 19(fvec4) + 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 38 12 + 341: 16(float) Constant 1090519040 + 346: 48(bool) ConstantFalse + 349: 7(int) Constant 92 + 359: 7(int) Constant 95 + 368: 7(int) Constant 100 + 375: 7(int) Constant 102 + 379: TypeArray 16(float) 38 + 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 38 + 381: TypePointer Output 379 + 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 380 13 12 +383(gl_TessLevelInner): 381(ptr) Variable Output + 386: 7(int) Constant 104 + 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 385 380 33 386 12 36 385 383(gl_TessLevelInner) 112 + 387: TypePointer Output 16(float) + 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 394: 7(int) Constant 105 + 395: TypeArray 16(float) 20 + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 + 397: TypePointer Output 395 + 398: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 396 13 12 +399(gl_TessLevelOuter): 397(ptr) Variable Output + 402: 7(int) Constant 106 + 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 401 396 33 402 12 36 401 399(gl_TessLevelOuter) 112 + 407: 7(int) Constant 107 + 408: 125(int) Constant 2 + 411: 7(int) Constant 108 + 414: 7(int) Constant 109 + 419: 7(int) Constant 113 + 428: 7(int) Constant 115 + 438: 7(int) Constant 116 + 448: 7(int) Constant 117 + 458: 7(int) Constant 118 + 467: 7(int) Constant 119 + 475: 7(int) Constant 120 + 485: 7(int) Constant 126 + 488: 7(int) Constant 127 + 491: 7(int) Constant 128 + 494: 7(int) Constant 129 + 497: 7(int) Constant 130 + 500: 7(int) Constant 131 +503(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 241 241 + 505: 7(int) Constant 110 + 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 21 33 37 505 12 12 13 + 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 18 33 37 491 12 12 13 + 508: 7(int) Constant 171 + 507: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 508 12 12 13 + 509: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 508 12 12 13 + 511: 7(int) Constant 137 + 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 255 37 33 511 12 36 255 12 13 504 506 507 509 + 512: TypeArray 503(gl_PerVertex) 20 + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 510 20 + 514: TypePointer Output 512 + 515: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 513 13 12 + 516(gl_out): 514(ptr) Variable Output + 517: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 518 513 33 511 12 36 518 516(gl_out) 112 + 525: TypePointer Output 19(fvec4) + 526: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 + 528: TypeArray 146(fvec3) 20 + 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 147 20 + 530: TypePointer Output 528 + 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 529 13 12 + 532(outNormal): 530(ptr) Variable Output + 535: 7(int) Constant 138 + 533: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 534 529 33 535 12 36 534 532(outNormal) 112 + 538: TypeArray 146(fvec3) 10 + 539: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 147 10 + 540: TypePointer Input 538 + 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 539 37 12 + 542(inNormal): 540(ptr) Variable Input + 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 544 539 33 535 12 36 544 542(inNormal) 112 + 546: TypePointer Input 146(fvec3) + 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 147 37 12 + 550: TypePointer Output 146(fvec3) + 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 147 13 12 + 553: TypeArray 97(fvec2) 20 + 554: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 98 20 + 555: TypePointer Output 553 + 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 554 13 12 + 557(outUV): 555(ptr) Variable Output + 560: 7(int) Constant 139 + 558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 559 554 33 560 12 36 559 557(outUV) 112 + 566: TypePointer Output 97(fvec2) + 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 13 12 14(main): 4 Function None 5 15: Label - 422(param): 22(ptr) Variable Function - 425(param): 22(ptr) Variable Function - 432(param): 22(ptr) Variable Function + 424(param): 22(ptr) Variable Function + 430(param): 22(ptr) Variable Function 435(param): 22(ptr) Variable Function - 442(param): 22(ptr) Variable Function + 440(param): 22(ptr) Variable Function 445(param): 22(ptr) Variable Function - 452(param): 22(ptr) Variable Function + 450(param): 22(ptr) Variable Function 455(param): 22(ptr) Variable Function - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 14(main) - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 362 362 12 12 - 363: 126(int) Load 264(gl_InvocationID) - 364: 48(bool) IEqual 363 142 - SelectionMerge 366 None - BranchConditional 364 365 366 - 365: Label - 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 369 369 12 12 - 370: 48(bool) FunctionCall 53(frustumCheck() - 371: 48(bool) LogicalNot 370 - SelectionMerge 373 None - BranchConditional 371 372 410 - 372: Label - 374: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 376 376 12 12 - 386: 384(ptr) AccessChain 381(gl_TessLevelInner) 142 - Store 386 149 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 388 388 12 12 - 389: 384(ptr) AccessChain 381(gl_TessLevelInner) 129 - Store 389 149 - 390: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 391 391 12 12 - 399: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 - Store 399 149 - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 401 401 12 12 - 402: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 - Store 402 149 - 403: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 404 404 12 12 - 406: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 - Store 406 149 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 408 408 12 12 - 409: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 - Store 409 149 - Branch 373 - 410: Label - 411: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 413 413 12 12 - 414: 218(ptr) AccessChain 123(ubo) 223 - 415: 16(float) Load 414 - 416: 48(bool) FOrdGreaterThan 415 149 - SelectionMerge 418 None - BranchConditional 416 417 476 - 417: Label - 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 421 421 12 12 - 423: 268(ptr) AccessChain 259(gl_in) 333 142 - 424: 19(fvec4) Load 423 - Store 422(param) 424 - 426: 268(ptr) AccessChain 259(gl_in) 142 142 - 427: 19(fvec4) Load 426 - Store 425(param) 427 - 428: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 422(param) 425(param) - 429: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 - Store 429 428 - 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 431 431 12 12 - 433: 268(ptr) AccessChain 259(gl_in) 142 142 - 434: 19(fvec4) Load 433 - Store 432(param) 434 - 436: 268(ptr) AccessChain 259(gl_in) 129 142 - 437: 19(fvec4) Load 436 - Store 435(param) 437 - 438: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 432(param) 435(param) - 439: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 - Store 439 438 - 440: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 441 441 12 12 - 443: 268(ptr) AccessChain 259(gl_in) 129 142 - 444: 19(fvec4) Load 443 - Store 442(param) 444 - 446: 268(ptr) AccessChain 259(gl_in) 405 142 - 447: 19(fvec4) Load 446 - Store 445(param) 447 - 448: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 442(param) 445(param) - 449: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 - Store 449 448 - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 451 451 12 12 - 453: 268(ptr) AccessChain 259(gl_in) 405 142 - 454: 19(fvec4) Load 453 - Store 452(param) 454 - 456: 268(ptr) AccessChain 259(gl_in) 333 142 - 457: 19(fvec4) Load 456 - Store 455(param) 457 - 458: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 452(param) 455(param) - 459: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 - Store 459 458 - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 461 461 12 12 - 462: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 - 463: 16(float) Load 462 - 464: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 - 465: 16(float) Load 464 - 466: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 463 465 69 - 467: 384(ptr) AccessChain 381(gl_TessLevelInner) 142 - Store 467 466 - 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 469 469 12 12 - 470: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 - 471: 16(float) Load 470 - 472: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 - 473: 16(float) Load 472 - 474: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 471 473 69 - 475: 384(ptr) AccessChain 381(gl_TessLevelInner) 129 - Store 475 474 - Branch 418 - 476: Label - 477: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 478: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 479 479 12 12 - 480: 384(ptr) AccessChain 381(gl_TessLevelInner) 142 - Store 480 227 - 481: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 482 482 12 12 - 483: 384(ptr) AccessChain 381(gl_TessLevelInner) 129 - Store 483 227 - 484: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 485 485 12 12 - 486: 384(ptr) AccessChain 396(gl_TessLevelOuter) 142 - Store 486 227 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 488 488 12 12 - 489: 384(ptr) AccessChain 396(gl_TessLevelOuter) 129 - Store 489 227 - 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 491 491 12 12 - 492: 384(ptr) AccessChain 396(gl_TessLevelOuter) 405 - Store 492 227 - 493: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 494 494 12 12 - 495: 384(ptr) AccessChain 396(gl_TessLevelOuter) 333 - Store 495 227 - Branch 418 - 418: Label - Branch 373 - 373: Label - Branch 366 - 366: Label - 496: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 497: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 498 498 12 12 - 514: 126(int) Load 264(gl_InvocationID) - 515: 126(int) Load 264(gl_InvocationID) - 516: 268(ptr) AccessChain 259(gl_in) 515 142 - 517: 19(fvec4) Load 516 - 520: 518(ptr) AccessChain 511(gl_out) 514 142 - Store 520 517 - 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 522 522 12 12 - 530: 126(int) Load 264(gl_InvocationID) - 538: 126(int) Load 264(gl_InvocationID) - 541: 539(ptr) AccessChain 535(inNormal) 538 - 542: 147(fvec3) Load 541 - 545: 543(ptr) AccessChain 527(outNormal) 530 - Store 545 542 - 546: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 547 547 12 12 - 555: 126(int) Load 264(gl_InvocationID) - 556: 126(int) Load 264(gl_InvocationID) - 557: 296(ptr) AccessChain 293(inUV) 556 - 558: 98(fvec2) Load 557 - 561: 559(ptr) AccessChain 552(outUV) 555 - Store 561 558 + 460(param): 22(ptr) Variable Function + 364: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 60 60 12 12 + 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 14(main) + 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 368 368 12 12 + 366: 125(int) Load 265(gl_InvocationID) + 369: 48(bool) IEqual 366 141 + SelectionMerge 371 None + BranchConditional 369 370 371 + 370: Label + 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 375 375 12 12 + 372: 48(bool) FunctionCall 53(frustumCheck() + 376: 48(bool) LogicalNot 372 + SelectionMerge 378 None + BranchConditional 376 377 415 + 377: Label + 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 386 386 12 12 + 389: 387(ptr) AccessChain 383(gl_TessLevelInner) 141 + Store 389 148 + 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 394 394 12 12 + 392: 387(ptr) AccessChain 383(gl_TessLevelInner) 128 + Store 392 148 + 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 402 402 12 12 + 403: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 + Store 403 148 + 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 407 407 12 12 + 405: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 + Store 405 148 + 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 411 411 12 12 + 409: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 + Store 409 148 + 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 414 414 12 12 + 412: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 + Store 412 148 + Branch 378 + 415: Label + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 419 419 12 12 + 416: 217(ptr) AccessChain 122(ubo) 222 + 420: 16(float) Load 416 + 421: 48(bool) FOrdGreaterThan 420 148 + SelectionMerge 423 None + BranchConditional 421 422 481 + 422: Label + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 428 428 12 12 + 425: 269(ptr) AccessChain 260(gl_in) 334 141 + 429: 19(fvec4) Load 425 + Store 424(param) 429 + 431: 269(ptr) AccessChain 260(gl_in) 141 141 + 432: 19(fvec4) Load 431 + Store 430(param) 432 + 433: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 424(param) 430(param) + 434: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 + Store 434 433 + 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 438 438 12 12 + 436: 269(ptr) AccessChain 260(gl_in) 141 141 + 439: 19(fvec4) Load 436 + Store 435(param) 439 + 441: 269(ptr) AccessChain 260(gl_in) 128 141 + 442: 19(fvec4) Load 441 + Store 440(param) 442 + 443: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 435(param) 440(param) + 444: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 + Store 444 443 + 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 448 448 12 12 + 446: 269(ptr) AccessChain 260(gl_in) 128 141 + 449: 19(fvec4) Load 446 + Store 445(param) 449 + 451: 269(ptr) AccessChain 260(gl_in) 408 141 + 452: 19(fvec4) Load 451 + Store 450(param) 452 + 453: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 445(param) 450(param) + 454: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 + Store 454 453 + 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 458 458 12 12 + 456: 269(ptr) AccessChain 260(gl_in) 408 141 + 459: 19(fvec4) Load 456 + Store 455(param) 459 + 461: 269(ptr) AccessChain 260(gl_in) 334 141 + 462: 19(fvec4) Load 461 + Store 460(param) 462 + 463: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 455(param) 460(param) + 464: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 + Store 464 463 + 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 467 467 12 12 + 465: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 + 468: 16(float) Load 465 + 469: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 + 470: 16(float) Load 469 + 471: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 468 470 68 + 472: 387(ptr) AccessChain 383(gl_TessLevelInner) 141 + Store 472 471 + 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 475 475 12 12 + 473: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 + 476: 16(float) Load 473 + 477: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 + 478: 16(float) Load 477 + 479: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 476 478 68 + 480: 387(ptr) AccessChain 383(gl_TessLevelInner) 128 + Store 480 479 + Branch 423 + 481: Label + 483: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 485 485 12 12 + 482: 387(ptr) AccessChain 383(gl_TessLevelInner) 141 + Store 482 226 + 487: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 488 488 12 12 + 486: 387(ptr) AccessChain 383(gl_TessLevelInner) 128 + Store 486 226 + 490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 491 491 12 12 + 489: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 + Store 489 226 + 493: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 494 494 12 12 + 492: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 + Store 492 226 + 496: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 497 497 12 12 + 495: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 + Store 495 226 + 499: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 500 500 12 12 + 498: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 + Store 498 226 + Branch 423 + 423: Label + 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + Branch 378 + 378: Label + 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + Branch 371 + 371: Label + 520: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 511 511 12 12 + 519: 125(int) Load 265(gl_InvocationID) + 522: 125(int) Load 265(gl_InvocationID) + 523: 269(ptr) AccessChain 260(gl_in) 522 141 + 524: 19(fvec4) Load 523 + 527: 525(ptr) AccessChain 516(gl_out) 519 141 + Store 527 524 + 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 535 535 12 12 + 536: 125(int) Load 265(gl_InvocationID) + 545: 125(int) Load 265(gl_InvocationID) + 548: 546(ptr) AccessChain 542(inNormal) 545 + 549: 146(fvec3) Load 548 + 552: 550(ptr) AccessChain 532(outNormal) 536 + Store 552 549 + 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 560 560 12 12 + 561: 125(int) Load 265(gl_InvocationID) + 563: 125(int) Load 265(gl_InvocationID) + 564: 297(ptr) AccessChain 294(inUV) 563 + 565: 97(fvec2) Load 564 + 568: 566(ptr) AccessChain 557(outUV) 561 + Store 568 565 Return FunctionEnd - Line 1 51 45 29(screenSpaceTessFactor(vf4;vf4;): 16(float) Function None 25 27(p0): 22(ptr) FunctionParameter 28(p1): 22(ptr) FunctionParameter 30: Label - 65(midPoint): 22(ptr) Variable Function - 78(radius): 76(ptr) Variable Function - 89(v0): 22(ptr) Variable Function - 138(clip0): 22(ptr) Variable Function - 159(clip1): 22(ptr) Variable Function - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 12 12 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 27(p0) 44 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 28(p1) 44 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(screenSpaceTessFactor(vf4;vf4;) - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 64 64 12 12 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 65(midPoint) 44 - 70: 19(fvec4) Load 27(p0) - 71: 19(fvec4) Load 28(p1) - 72: 19(fvec4) FAdd 70 71 - 73: 19(fvec4) VectorTimesScalar 72 69 - Store 65(midPoint) 73 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 75 75 12 12 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 79 78(radius) 44 - 82: 19(fvec4) Load 27(p0) - 83: 19(fvec4) Load 28(p1) - 84: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 82 83 - 86: 16(float) FDiv 84 85 - Store 78(radius) 86 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 88 88 12 12 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 89(v0) 44 - 132: 130(ptr) AccessChain 123(ubo) 129 - 133: 93 Load 132 - 134: 19(fvec4) Load 65(midPoint) - 135: 19(fvec4) MatrixTimesVector 133 134 - Store 89(v0) 135 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 137 137 12 12 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 138(clip0) 44 - 143: 130(ptr) AccessChain 123(ubo) 142 - 144: 93 Load 143 - 145: 19(fvec4) Load 89(v0) - 146: 16(float) Load 78(radius) - 151: 16(float) CompositeExtract 150 0 - 152: 16(float) CompositeExtract 150 1 - 153: 16(float) CompositeExtract 150 2 - 154: 19(fvec4) CompositeConstruct 146 151 152 153 - 155: 19(fvec4) FSub 145 154 - 156: 19(fvec4) MatrixTimesVector 144 155 - Store 138(clip0) 156 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 158 158 12 12 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(clip1) 44 - 163: 130(ptr) AccessChain 123(ubo) 142 - 164: 93 Load 163 - 165: 19(fvec4) Load 89(v0) - 166: 16(float) Load 78(radius) - 167: 16(float) CompositeExtract 150 0 - 168: 16(float) CompositeExtract 150 1 - 169: 16(float) CompositeExtract 150 2 - 170: 19(fvec4) CompositeConstruct 166 167 168 169 - 171: 19(fvec4) FAdd 165 170 - 172: 19(fvec4) MatrixTimesVector 164 171 - Store 159(clip1) 172 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 174 174 12 12 - 175: 76(ptr) AccessChain 138(clip0) 13 - 176: 16(float) Load 175 - 177: 19(fvec4) Load 138(clip0) - 178: 19(fvec4) CompositeConstruct 176 176 176 176 - 179: 19(fvec4) FDiv 177 178 - Store 138(clip0) 179 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 181 181 12 12 - 182: 76(ptr) AccessChain 159(clip1) 13 - 183: 16(float) Load 182 - 184: 19(fvec4) Load 159(clip1) - 185: 19(fvec4) CompositeConstruct 183 183 183 183 - 186: 19(fvec4) FDiv 184 185 - Store 159(clip1) 186 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 188 188 12 12 - 192: 190(ptr) AccessChain 123(ubo) 189 - 193: 98(fvec2) Load 192 - 194: 19(fvec4) Load 138(clip0) - 195: 98(fvec2) VectorShuffle 194 194 0 1 - 196: 98(fvec2) FMul 195 193 - 197: 76(ptr) AccessChain 138(clip0) 12 - 198: 16(float) CompositeExtract 196 0 - Store 197 198 - 199: 76(ptr) AccessChain 138(clip0) 37 - 200: 16(float) CompositeExtract 196 1 - Store 199 200 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 202 202 12 12 - 203: 190(ptr) AccessChain 123(ubo) 189 - 204: 98(fvec2) Load 203 - 205: 19(fvec4) Load 159(clip1) - 206: 98(fvec2) VectorShuffle 205 205 0 1 - 207: 98(fvec2) FMul 206 204 - 208: 76(ptr) AccessChain 159(clip1) 12 - 209: 16(float) CompositeExtract 207 0 - Store 208 209 - 210: 76(ptr) AccessChain 159(clip1) 37 - 211: 16(float) CompositeExtract 207 1 - Store 210 211 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 213 213 12 12 - 214: 19(fvec4) Load 138(clip0) - 215: 19(fvec4) Load 159(clip1) - 216: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 214 215 - 220: 218(ptr) AccessChain 123(ubo) 217 - 221: 16(float) Load 220 - 222: 16(float) FDiv 216 221 - 224: 218(ptr) AccessChain 123(ubo) 223 - 225: 16(float) Load 224 - 226: 16(float) FMul 222 225 - 229: 16(float) ExtInst 3(GLSL.std.450) 43(FClamp) 226 227 228 - ReturnValue 229 + 62(midPoint): 22(ptr) Variable Function + 75(radius): 73(ptr) Variable Function + 86(v0): 22(ptr) Variable Function + 135(clip0): 22(ptr) Variable Function + 156(clip1): 22(ptr) Variable Function + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 12 12 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 27(p0) 42 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 28(p1) 42 + 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(screenSpaceTessFactor(vf4;vf4;) + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 65 65 12 12 + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 63 62(midPoint) 42 + 69: 19(fvec4) Load 27(p0) + 70: 19(fvec4) Load 28(p1) + 71: 19(fvec4) FAdd 69 70 + 72: 19(fvec4) VectorTimesScalar 71 68 + Store 62(midPoint) 72 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 78 78 12 12 + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(radius) 42 + 81: 19(fvec4) Load 27(p0) + 82: 19(fvec4) Load 28(p1) + 83: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 81 82 + 85: 16(float) FDiv 83 84 + Store 75(radius) 85 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 89 89 12 12 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 86(v0) 42 + 131: 129(ptr) AccessChain 122(ubo) 128 + 132: 92 Load 131 + 133: 19(fvec4) Load 62(midPoint) + 134: 19(fvec4) MatrixTimesVector 132 133 + Store 86(v0) 134 + 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 138 138 12 12 + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 136 135(clip0) 42 + 142: 129(ptr) AccessChain 122(ubo) 141 + 143: 92 Load 142 + 144: 19(fvec4) Load 86(v0) + 145: 16(float) Load 75(radius) + 150: 16(float) CompositeExtract 149 0 + 151: 16(float) CompositeExtract 149 1 + 152: 16(float) CompositeExtract 149 2 + 153: 19(fvec4) CompositeConstruct 145 150 151 152 + 154: 19(fvec4) FSub 144 153 + 155: 19(fvec4) MatrixTimesVector 143 154 + Store 135(clip0) 155 + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 159 159 12 12 + 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 157 156(clip1) 42 + 162: 129(ptr) AccessChain 122(ubo) 141 + 163: 92 Load 162 + 164: 19(fvec4) Load 86(v0) + 165: 16(float) Load 75(radius) + 166: 16(float) CompositeExtract 149 0 + 167: 16(float) CompositeExtract 149 1 + 168: 16(float) CompositeExtract 149 2 + 169: 19(fvec4) CompositeConstruct 165 166 167 168 + 170: 19(fvec4) FAdd 164 169 + 171: 19(fvec4) MatrixTimesVector 163 170 + Store 156(clip1) 171 + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 174 174 12 12 + 172: 73(ptr) AccessChain 135(clip0) 13 + 175: 16(float) Load 172 + 176: 19(fvec4) Load 135(clip0) + 177: 19(fvec4) CompositeConstruct 175 175 175 175 + 178: 19(fvec4) FDiv 176 177 + Store 135(clip0) 178 + 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 181 181 12 12 + 179: 73(ptr) AccessChain 156(clip1) 13 + 182: 16(float) Load 179 + 183: 19(fvec4) Load 156(clip1) + 184: 19(fvec4) CompositeConstruct 182 182 182 182 + 185: 19(fvec4) FDiv 183 184 + Store 156(clip1) 185 + 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 191 191 12 12 + 189: 187(ptr) AccessChain 122(ubo) 186 + 192: 97(fvec2) Load 189 + 193: 19(fvec4) Load 135(clip0) + 194: 97(fvec2) VectorShuffle 193 193 0 1 + 195: 97(fvec2) FMul 194 192 + 196: 73(ptr) AccessChain 135(clip0) 12 + 197: 16(float) CompositeExtract 195 0 + Store 196 197 + 198: 73(ptr) AccessChain 135(clip0) 37 + 199: 16(float) CompositeExtract 195 1 + Store 198 199 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 202 202 12 12 + 200: 187(ptr) AccessChain 122(ubo) 186 + 203: 97(fvec2) Load 200 + 204: 19(fvec4) Load 156(clip1) + 205: 97(fvec2) VectorShuffle 204 204 0 1 + 206: 97(fvec2) FMul 205 203 + 207: 73(ptr) AccessChain 156(clip1) 12 + 208: 16(float) CompositeExtract 206 0 + Store 207 208 + 209: 73(ptr) AccessChain 156(clip1) 37 + 210: 16(float) CompositeExtract 206 1 + Store 209 210 + 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 213 213 12 12 + 211: 19(fvec4) Load 135(clip0) + 214: 19(fvec4) Load 156(clip1) + 215: 16(float) ExtInst 3(GLSL.std.450) 67(Distance) 211 214 + 219: 217(ptr) AccessChain 122(ubo) 216 + 220: 16(float) Load 219 + 221: 16(float) FDiv 215 220 + 223: 217(ptr) AccessChain 122(ubo) 222 + 224: 16(float) Load 223 + 225: 16(float) FMul 221 224 + 228: 16(float) ExtInst 3(GLSL.std.450) 43(FClamp) 225 226 227 + ReturnValue 228 FunctionEnd - Line 1 81 19 53(frustumCheck(): 48(bool) Function None 51 54: Label - 236(pos): 22(ptr) Variable Function - 314(i): 312(ptr) Variable Function - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 53(frustumCheck() - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 235 235 12 12 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 237 236(pos) 44 - 267: 126(int) Load 264(gl_InvocationID) - 270: 268(ptr) AccessChain 259(gl_in) 267 142 - 271: 19(fvec4) Load 270 - Store 236(pos) 271 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 273 273 12 12 + 235(pos): 22(ptr) Variable Function + 313(i): 311(ptr) Variable Function + 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 57 57 12 12 + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 53(frustumCheck() + 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 238 238 12 12 + 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(pos) 42 + 268: 125(int) Load 265(gl_InvocationID) + 271: 269(ptr) AccessChain 260(gl_in) 268 141 + 272: 19(fvec4) Load 271 + Store 235(pos) 272 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 276 276 12 12 288: 279 Load 285(samplerHeight) - 298: 296(ptr) AccessChain 293(inUV) 142 - 299: 98(fvec2) Load 298 - 300: 19(fvec4) ImageSampleExplicitLod 288 299 Lod 149 - 301: 16(float) CompositeExtract 300 0 - 303: 218(ptr) AccessChain 123(ubo) 302 - 304: 16(float) Load 303 - 305: 16(float) FMul 301 304 - 306: 76(ptr) AccessChain 236(pos) 37 - 307: 16(float) Load 306 - 308: 16(float) FSub 307 305 - 309: 76(ptr) AccessChain 236(pos) 37 - Store 309 308 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(i) 44 - Store 314(i) 142 - Branch 318 - 318: Label - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 - LoopMerge 320 321 None - Branch 324 - 324: Label - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 - 327: 126(int) Load 314(i) - 328: 48(bool) SLessThan 327 189 - BranchConditional 328 319 320 - 319: Label - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 331 331 12 12 - 332: 19(fvec4) Load 236(pos) - 334: 126(int) Load 314(i) - 337: 335(ptr) AccessChain 123(ubo) 333 334 - 338: 19(fvec4) Load 337 - 339: 16(float) Dot 332 338 - 341: 16(float) FAdd 339 340 - 342: 48(bool) FOrdLessThan 341 149 - SelectionMerge 344 None - BranchConditional 342 343 344 - 343: Label - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 348 348 12 12 - ReturnValue 345 - 344: Label - Branch 321 - 321: Label - 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 311 311 12 12 - 352: 126(int) Load 314(i) - 353: 126(int) IAdd 352 129 - Store 314(i) 353 - Branch 318 - 320: Label - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 355: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 356 356 12 12 - ReturnValue 95 + 299: 297(ptr) AccessChain 294(inUV) 141 + 300: 97(fvec2) Load 299 + 301: 19(fvec4) ImageSampleExplicitLod 288 300 Lod 148 + 302: 16(float) CompositeExtract 301 0 + 304: 217(ptr) AccessChain 122(ubo) 303 + 305: 16(float) Load 304 + 306: 16(float) FMul 302 305 + 307: 73(ptr) AccessChain 235(pos) 37 + 308: 16(float) Load 307 + 309: 16(float) FSub 308 306 + 310: 73(ptr) AccessChain 235(pos) 37 + Store 310 309 + 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 + 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 314 313(i) 42 + Store 313(i) 141 + Branch 319 + 319: Label + 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 + LoopMerge 321 322 None + Branch 325 + 325: Label + 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 + 326: 125(int) Load 313(i) + 329: 48(bool) SLessThan 326 186 + BranchConditional 329 320 321 + 320: Label + 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 332: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 333 333 12 12 + 330: 19(fvec4) Load 235(pos) + 335: 125(int) Load 313(i) + 338: 336(ptr) AccessChain 122(ubo) 334 335 + 339: 19(fvec4) Load 338 + 340: 16(float) Dot 330 339 + 342: 16(float) FAdd 340 341 + 343: 48(bool) FOrdLessThan 342 148 + SelectionMerge 345 None + BranchConditional 343 344 345 + 344: Label + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 349 349 12 12 + ReturnValue 346 + 345: Label + 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + Branch 322 + 322: Label + 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 + 353: 125(int) Load 313(i) + 356: 125(int) IAdd 353 128 + Store 313(i) 356 + Branch 319 + 321: Label + 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 359 359 12 12 + ReturnValue 94 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index c742d60861..e16e274df6 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,18 +1,18 @@ spv.debuginfo.glsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 355 +// Id's are bound by 356 Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 14 "main" 46 65 94 115 144 182 300 316 324 337 344 + EntryPoint TessellationEvaluation 14 "main" 47 66 93 116 143 183 300 315 323 336 343 ExecutionMode 14 Quads ExecutionMode 14 SpacingEqual ExecutionMode 14 VertexOrderCw - 1: String "" + 2: String "" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -23,446 +23,446 @@ spv.debuginfo.glsl.tese // OpModuleProcessed entry-point main #line 1 " - 30: String "float" - 39: String "uv1" - 48: String "inUV" - 51: String "int" - 67: String "gl_TessCoord" - 78: String "uv2" - 96: String "outUV" - 109: String "n1" - 117: String "inNormal" - 130: String "n2" - 146: String "outNormal" - 161: String "pos1" - 167: String "gl_Position" - 170: String "gl_PointSize" - 173: String "gl_CullDistance" - 177: String "gl_PerVertex" - 184: String "gl_in" - 199: String "pos2" - 213: String "pos" - 225: String "type.2d.image" + 29: String "float" + 38: String "uv1" + 49: String "inUV" + 52: String "int" + 68: String "gl_TessCoord" + 77: String "uv2" + 95: String "outUV" + 108: String "n1" + 118: String "inNormal" + 129: String "n2" + 145: String "outNormal" + 160: String "pos1" + 168: String "gl_Position" + 171: String "gl_PointSize" + 174: String "gl_CullDistance" + 178: String "gl_PerVertex" + 185: String "gl_in" + 198: String "pos2" + 212: String "pos" + 224: String "type.2d.image" 226: String "@type.2d.image" 230: String "type.sampled.image" 231: String "@type.sampled.image" 236: String "displacementMap" - 245: String "bool" - 252: String "modelview" - 256: String "lightPos" - 259: String "frustumPlanes" - 261: String "tessellatedEdgeSize" - 265: String "viewportDim" - 269: String "UBO" - 274: String "ubo" - 318: String "outViewVec" - 326: String "outLightVec" - 339: String "outWorldPos" - 346: String "outEyePos" + 246: String "bool" + 253: String "modelview" + 257: String "lightPos" + 260: String "frustumPlanes" + 262: String "tessellatedEdgeSize" + 266: String "viewportDim" + 270: String "UBO" + 275: String "ubo" + 317: String "outViewVec" + 325: String "outLightVec" + 338: String "outWorldPos" + 345: String "outEyePos" Name 14 "main" - Name 37 "uv1" - Name 46 "inUV" - Name 65 "gl_TessCoord" - Name 76 "uv2" - Name 94 "outUV" - Name 107 "n1" - Name 115 "inNormal" - Name 128 "n2" - Name 144 "outNormal" - Name 159 "pos1" - Name 165 "gl_PerVertex" - MemberName 165(gl_PerVertex) 0 "gl_Position" - MemberName 165(gl_PerVertex) 1 "gl_PointSize" - MemberName 165(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 165(gl_PerVertex) 3 "gl_CullDistance" - Name 182 "gl_in" - Name 197 "pos2" - Name 211 "pos" + Name 36 "uv1" + Name 47 "inUV" + Name 66 "gl_TessCoord" + Name 75 "uv2" + Name 93 "outUV" + Name 106 "n1" + Name 116 "inNormal" + Name 127 "n2" + Name 143 "outNormal" + Name 158 "pos1" + Name 166 "gl_PerVertex" + MemberName 166(gl_PerVertex) 0 "gl_Position" + MemberName 166(gl_PerVertex) 1 "gl_PointSize" + MemberName 166(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 166(gl_PerVertex) 3 "gl_CullDistance" + Name 183 "gl_in" + Name 196 "pos2" + Name 210 "pos" Name 234 "displacementMap" - Name 250 "UBO" - MemberName 250(UBO) 0 "projection" - MemberName 250(UBO) 1 "modelview" - MemberName 250(UBO) 2 "lightPos" - MemberName 250(UBO) 3 "frustumPlanes" - MemberName 250(UBO) 4 "displacementFactor" - MemberName 250(UBO) 5 "tessellationFactor" - MemberName 250(UBO) 6 "viewportDim" - MemberName 250(UBO) 7 "tessellatedEdgeSize" - Name 272 "ubo" - Name 289 "gl_PerVertex" - MemberName 289(gl_PerVertex) 0 "gl_Position" - MemberName 289(gl_PerVertex) 1 "gl_PointSize" - MemberName 289(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 289(gl_PerVertex) 3 "gl_CullDistance" + Name 251 "UBO" + MemberName 251(UBO) 0 "projection" + MemberName 251(UBO) 1 "modelview" + MemberName 251(UBO) 2 "lightPos" + MemberName 251(UBO) 3 "frustumPlanes" + MemberName 251(UBO) 4 "displacementFactor" + MemberName 251(UBO) 5 "tessellationFactor" + MemberName 251(UBO) 6 "viewportDim" + MemberName 251(UBO) 7 "tessellatedEdgeSize" + Name 273 "ubo" + Name 288 "gl_PerVertex" + MemberName 288(gl_PerVertex) 0 "gl_Position" + MemberName 288(gl_PerVertex) 1 "gl_PointSize" + MemberName 288(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 288(gl_PerVertex) 3 "gl_CullDistance" Name 300 "" - Name 316 "outViewVec" - Name 324 "outLightVec" - Name 337 "outWorldPos" - Name 344 "outEyePos" - Decorate 46(inUV) Location 1 - Decorate 65(gl_TessCoord) BuiltIn TessCoord - Decorate 94(outUV) Location 1 - Decorate 115(inNormal) Location 0 - Decorate 144(outNormal) Location 0 - MemberDecorate 165(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 165(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 165(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 165(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 165(gl_PerVertex) Block + Name 315 "outViewVec" + Name 323 "outLightVec" + Name 336 "outWorldPos" + Name 343 "outEyePos" + Decorate 47(inUV) Location 1 + Decorate 66(gl_TessCoord) BuiltIn TessCoord + Decorate 93(outUV) Location 1 + Decorate 116(inNormal) Location 0 + Decorate 143(outNormal) Location 0 + MemberDecorate 166(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 166(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 166(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 166(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 166(gl_PerVertex) Block Decorate 234(displacementMap) DescriptorSet 0 Decorate 234(displacementMap) Binding 1 - Decorate 248 ArrayStride 16 - MemberDecorate 250(UBO) 0 ColMajor - MemberDecorate 250(UBO) 0 Offset 0 - MemberDecorate 250(UBO) 0 MatrixStride 16 - MemberDecorate 250(UBO) 1 ColMajor - MemberDecorate 250(UBO) 1 Offset 64 - MemberDecorate 250(UBO) 1 MatrixStride 16 - MemberDecorate 250(UBO) 2 Offset 128 - MemberDecorate 250(UBO) 3 Offset 144 - MemberDecorate 250(UBO) 4 Offset 240 - MemberDecorate 250(UBO) 5 Offset 244 - MemberDecorate 250(UBO) 6 Offset 248 - MemberDecorate 250(UBO) 7 Offset 256 - Decorate 250(UBO) Block - Decorate 272(ubo) DescriptorSet 0 - Decorate 272(ubo) Binding 0 - MemberDecorate 289(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 289(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 289(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 289(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 289(gl_PerVertex) Block - Decorate 316(outViewVec) Location 2 - Decorate 324(outLightVec) Location 3 - Decorate 337(outWorldPos) Location 5 - Decorate 344(outEyePos) Location 4 + Decorate 249 ArrayStride 16 + MemberDecorate 251(UBO) 0 ColMajor + MemberDecorate 251(UBO) 0 Offset 0 + MemberDecorate 251(UBO) 0 MatrixStride 16 + MemberDecorate 251(UBO) 1 ColMajor + MemberDecorate 251(UBO) 1 Offset 64 + MemberDecorate 251(UBO) 1 MatrixStride 16 + MemberDecorate 251(UBO) 2 Offset 128 + MemberDecorate 251(UBO) 3 Offset 144 + MemberDecorate 251(UBO) 4 Offset 240 + MemberDecorate 251(UBO) 5 Offset 244 + MemberDecorate 251(UBO) 6 Offset 248 + MemberDecorate 251(UBO) 7 Offset 256 + Decorate 251(UBO) Block + Decorate 273(ubo) DescriptorSet 0 + Decorate 273(ubo) Binding 0 + MemberDecorate 288(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 288(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 288(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 288(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 288(gl_PerVertex) Block + Decorate 315(outViewVec) Location 2 + Decorate 323(outLightVec) Location 3 + Decorate 336(outWorldPos) Location 5 + Decorate 343(outEyePos) Location 4 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 53 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 - 28: 7(int) Constant 56 - 29: TypeFloat 32 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 13 12 - 32: TypeVector 29(float) 2 - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 24 - 34: TypePointer Function 32(fvec2) - 35: 7(int) Constant 7 - 36: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 35 12 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 33 18 28 12 17 23 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 42: TypeArray 32(fvec2) 10 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 33 10 - 44: TypePointer Input 42 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 22 12 - 46(inUV): 44(ptr) Variable Input - 49: 7(int) Constant 8 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 48 43 18 28 12 21 48 46(inUV) 49 - 50: TypeInt 32 1 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 51 10 23 12 - 53: 50(int) Constant 0 - 54: TypePointer Input 32(fvec2) - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 22 12 - 58: 50(int) Constant 1 - 61: TypeVector 29(float) 3 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 13 - 63: TypePointer Input 61(fvec3) - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 22 12 -65(gl_TessCoord): 63(ptr) Variable Input - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 67 62 18 28 12 21 67 65(gl_TessCoord) 49 - 68: TypePointer Input 29(float) - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 22 12 - 75: 7(int) Constant 57 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 33 18 75 12 17 23 - 80: 50(int) Constant 3 - 83: 50(int) Constant 2 - 91: 7(int) Constant 58 - 92: TypePointer Output 32(fvec2) - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 13 12 - 94(outUV): 92(ptr) Variable Output - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 33 18 91 12 21 96 94(outUV) 49 - 104: 7(int) Constant 60 - 105: TypePointer Function 61(fvec3) - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 35 12 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 62 18 104 12 17 23 - 111: TypeArray 61(fvec3) 10 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 62 10 - 113: TypePointer Input 111 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 112 22 12 - 115(inNormal): 113(ptr) Variable Input - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 117 112 18 104 12 21 117 115(inNormal) 49 - 127: 7(int) Constant 61 - 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 130 62 18 127 12 17 23 - 141: 7(int) Constant 62 - 142: TypePointer Output 61(fvec3) - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 13 12 - 144(outNormal): 142(ptr) Variable Output - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 146 62 18 141 12 21 146 144(outNormal) 49 - 154: 7(int) Constant 65 - 155: TypeVector 29(float) 4 - 156: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 - 157: TypePointer Function 155(fvec4) - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 35 12 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 156 18 154 12 17 23 - 163: TypeArray 29(float) 22 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 -165(gl_PerVertex): TypeStruct 155(fvec4) 29(float) 163 163 - 168: 7(int) Constant 1756 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 167 156 18 22 168 12 12 13 - 171: 7(int) Constant 1774 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 31 18 22 171 12 12 13 - 174: 7(int) Constant 1817 - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 174 12 12 13 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 174 12 12 13 - 176: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 22 18 154 12 21 177 12 13 166 169 172 175 - 178: TypeArray 165(gl_PerVertex) 10 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 176 10 - 180: TypePointer Input 178 - 181: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 179 22 12 - 182(gl_in): 180(ptr) Variable Input - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 184 179 18 154 12 21 184 182(gl_in) 49 - 185: TypePointer Input 155(fvec4) - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 22 12 - 196: 7(int) Constant 66 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 199 156 18 196 12 17 23 - 210: 7(int) Constant 67 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 213 156 18 210 12 17 23 - 222: 7(int) Constant 69 - 223: TypeImage 29(float) 2D sampled format:Unknown - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 225 12 18 222 12 21 226 227 13 - 228: TypeSampledImage 223 - 229: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 230 12 18 222 12 21 231 227 13 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: TypeFloat 32 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 + 31: TypeVector 28(float) 2 + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 24 + 33: TypePointer Function 31(fvec2) + 34: 7(int) Constant 7 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 34 12 + 39: 7(int) Constant 56 + 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 38 32 18 39 12 17 23 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 43: TypeArray 31(fvec2) 10 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 32 10 + 45: TypePointer Input 43 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 44 22 12 + 47(inUV): 45(ptr) Variable Input + 50: 7(int) Constant 8 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 49 44 18 39 12 21 49 47(inUV) 50 + 51: TypeInt 32 1 + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 52 10 23 12 + 54: 51(int) Constant 0 + 55: TypePointer Input 31(fvec2) + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 22 12 + 59: 51(int) Constant 1 + 62: TypeVector 28(float) 3 + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 + 64: TypePointer Input 62(fvec3) + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 22 12 +66(gl_TessCoord): 64(ptr) Variable Input + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 63 18 39 12 21 68 66(gl_TessCoord) 50 + 69: TypePointer Input 28(float) + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 22 12 + 78: 7(int) Constant 57 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 32 18 78 12 17 23 + 81: 51(int) Constant 3 + 84: 51(int) Constant 2 + 91: TypePointer Output 31(fvec2) + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 13 12 + 93(outUV): 91(ptr) Variable Output + 96: 7(int) Constant 58 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 32 18 96 12 21 95 93(outUV) 50 + 104: TypePointer Function 62(fvec3) + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 34 12 + 109: 7(int) Constant 60 + 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 108 63 18 109 12 17 23 + 112: TypeArray 62(fvec3) 10 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 63 10 + 114: TypePointer Input 112 + 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 113 22 12 + 116(inNormal): 114(ptr) Variable Input + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 118 113 18 109 12 21 118 116(inNormal) 50 + 130: 7(int) Constant 61 + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 129 63 18 130 12 17 23 + 141: TypePointer Output 62(fvec3) + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 63 13 12 + 143(outNormal): 141(ptr) Variable Output + 146: 7(int) Constant 62 + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 145 63 18 146 12 21 145 143(outNormal) 50 + 154: TypeVector 28(float) 4 + 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 23 + 156: TypePointer Function 154(fvec4) + 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 34 12 + 161: 7(int) Constant 65 + 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 160 155 18 161 12 17 23 + 164: TypeArray 28(float) 22 + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 22 +166(gl_PerVertex): TypeStruct 154(fvec4) 28(float) 164 164 + 169: 7(int) Constant 1756 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 168 155 18 22 169 12 12 13 + 172: 7(int) Constant 1774 + 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 30 18 22 172 12 12 13 + 175: 7(int) Constant 1817 + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 175 12 12 13 + 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 175 12 12 13 + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 22 18 161 12 21 178 12 13 167 170 173 176 + 179: TypeArray 166(gl_PerVertex) 10 + 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 177 10 + 181: TypePointer Input 179 + 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 180 22 12 + 183(gl_in): 181(ptr) Variable Input + 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 185 180 18 161 12 21 185 183(gl_in) 50 + 186: TypePointer Input 154(fvec4) + 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 22 12 + 199: 7(int) Constant 66 + 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 198 155 18 199 12 17 23 + 213: 7(int) Constant 67 + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 212 155 18 213 12 17 23 + 222: TypeImage 28(float) 2D sampled format:Unknown + 225: 7(int) Constant 69 + 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 224 12 18 225 12 21 226 227 13 + 228: TypeSampledImage 222 + 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 230 12 18 225 12 21 231 227 13 232: TypePointer UniformConstant 228 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 229 12 12 + 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 229 12 12 234(displacementMap): 232(ptr) Variable UniformConstant - 235: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 229 18 222 12 21 236 234(displacementMap) 49 - 239: 29(float) Constant 0 - 242: TypeMatrix 155(fvec4) 4 - 244: TypeBool - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 245 10 24 12 - 247: 244(bool) ConstantTrue - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 156 23 247 - 248: TypeArray 155(fvec4) 11 - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 156 11 - 250(UBO): TypeStruct 242 242 155(fvec4) 248 29(float) 29(float) 32(fvec2) 29(float) - 253: 7(int) Constant 30 - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 252 243 18 253 35 12 12 13 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 252 243 18 253 35 12 12 13 - 257: 7(int) Constant 31 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 256 156 18 257 35 12 12 13 - 258: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 259 249 18 10 35 12 12 13 - 262: 7(int) Constant 36 - 260: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 261 31 18 262 49 12 12 13 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 261 31 18 262 49 12 12 13 - 266: 7(int) Constant 35 - 264: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 265 33 18 266 35 12 12 13 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 261 31 18 262 49 12 12 13 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 269 22 18 222 12 21 269 12 13 251 254 255 258 260 263 264 267 - 270: TypePointer Uniform 250(UBO) - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 268 24 12 - 272(ubo): 270(ptr) Variable Uniform - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 274 268 18 222 12 21 274 272(ubo) 49 - 275: 50(int) Constant 4 - 276: TypePointer Uniform 29(float) - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 24 12 - 281: TypePointer Function 29(float) - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 35 12 - 288: 7(int) Constant 71 -289(gl_PerVertex): TypeStruct 155(fvec4) 29(float) 163 163 - 291: 7(int) Constant 165 - 290: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 167 156 18 22 291 12 12 13 - 293: 7(int) Constant 183 - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 170 31 18 22 293 12 12 13 - 295: 7(int) Constant 226 - 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 295 12 12 13 - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 173 164 18 22 295 12 12 13 - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 177 22 18 288 12 21 177 12 13 290 292 294 296 - 298: TypePointer Output 289(gl_PerVertex) - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 297 13 12 + 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 236 229 18 225 12 21 236 234(displacementMap) 50 + 240: 28(float) Constant 0 + 243: TypeMatrix 154(fvec4) 4 + 245: TypeBool + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 246 10 24 12 + 248: 245(bool) ConstantTrue + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 155 23 248 + 249: TypeArray 154(fvec4) 11 + 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 155 11 + 251(UBO): TypeStruct 243 243 154(fvec4) 249 28(float) 28(float) 31(fvec2) 28(float) + 254: 7(int) Constant 30 + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 18 254 34 12 12 13 + 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 18 254 34 12 12 13 + 258: 7(int) Constant 31 + 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 257 155 18 258 34 12 12 13 + 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 260 250 18 10 34 12 12 13 + 263: 7(int) Constant 36 + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 30 18 263 50 12 12 13 + 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 30 18 263 50 12 12 13 + 267: 7(int) Constant 35 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 266 32 18 267 34 12 12 13 + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 262 30 18 263 50 12 12 13 + 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 270 22 18 225 12 21 270 12 13 252 255 256 259 261 264 265 268 + 271: TypePointer Uniform 251(UBO) + 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 269 24 12 + 273(ubo): 271(ptr) Variable Uniform + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 275 269 18 225 12 21 275 273(ubo) 50 + 276: 51(int) Constant 4 + 277: TypePointer Uniform 28(float) + 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 24 12 + 282: TypePointer Function 28(float) + 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 34 12 +288(gl_PerVertex): TypeStruct 154(fvec4) 28(float) 164 164 + 290: 7(int) Constant 165 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 168 155 18 22 290 12 12 13 + 292: 7(int) Constant 183 + 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 171 30 18 22 292 12 12 13 + 294: 7(int) Constant 226 + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 294 12 12 13 + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 174 165 18 22 294 12 12 13 + 297: 7(int) Constant 71 + 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 178 22 18 297 12 21 178 12 13 289 291 293 295 + 298: TypePointer Output 288(gl_PerVertex) + 299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 296 13 12 300: 298(ptr) Variable Output - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 297 18 288 12 21 1 300 49 - 302: TypePointer Uniform 242 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 243 24 12 - 311: TypePointer Output 155(fvec4) - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 13 12 - 315: 7(int) Constant 74 - 316(outViewVec): 142(ptr) Variable Output - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 318 62 18 315 12 21 318 316(outViewVec) 49 - 323: 7(int) Constant 75 -324(outLightVec): 142(ptr) Variable Output - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 326 62 18 323 12 21 326 324(outLightVec) 49 - 327: TypePointer Uniform 155(fvec4) - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 156 24 12 - 336: 7(int) Constant 76 -337(outWorldPos): 142(ptr) Variable Output - 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 339 62 18 336 12 21 339 337(outWorldPos) 49 - 343: 7(int) Constant 77 - 344(outEyePos): 142(ptr) Variable Output - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 346 62 18 343 12 21 346 344(outEyePos) 49 - Line 1 53 11 + 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 296 18 297 12 21 2 300 50 + 302: TypePointer Uniform 243 + 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 244 24 12 + 312: TypePointer Output 154(fvec4) + 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 13 12 + 315(outViewVec): 141(ptr) Variable Output + 318: 7(int) Constant 74 + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 317 63 18 318 12 21 317 315(outViewVec) 50 +323(outLightVec): 141(ptr) Variable Output + 326: 7(int) Constant 75 + 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 325 63 18 326 12 21 325 323(outLightVec) 50 + 327: TypePointer Uniform 154(fvec4) + 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 24 12 +336(outWorldPos): 141(ptr) Variable Output + 339: 7(int) Constant 76 + 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 338 63 18 339 12 21 338 336(outWorldPos) 50 + 343(outEyePos): 141(ptr) Variable Output + 346: 7(int) Constant 77 + 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 345 63 18 346 12 21 345 343(outEyePos) 50 14(main): 4 Function None 5 15: Label - 37(uv1): 34(ptr) Variable Function - 76(uv2): 34(ptr) Variable Function - 107(n1): 105(ptr) Variable Function - 128(n2): 105(ptr) Variable Function - 159(pos1): 157(ptr) Variable Function - 197(pos2): 157(ptr) Variable Function - 211(pos): 157(ptr) Variable Function - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 37(uv1) 41 - 56: 54(ptr) AccessChain 46(inUV) 53 - 57: 32(fvec2) Load 56 - 59: 54(ptr) AccessChain 46(inUV) 58 - 60: 32(fvec2) Load 59 - 70: 68(ptr) AccessChain 65(gl_TessCoord) 12 - 71: 29(float) Load 70 - 72: 32(fvec2) CompositeConstruct 71 71 - 73: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 57 60 72 - Store 37(uv1) 73 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 75 75 12 12 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 77 76(uv2) 41 - 81: 54(ptr) AccessChain 46(inUV) 80 - 82: 32(fvec2) Load 81 - 84: 54(ptr) AccessChain 46(inUV) 83 - 85: 32(fvec2) Load 84 - 86: 68(ptr) AccessChain 65(gl_TessCoord) 12 - 87: 29(float) Load 86 - 88: 32(fvec2) CompositeConstruct 87 87 - 89: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 82 85 88 - Store 76(uv2) 89 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 91 91 12 12 - 97: 32(fvec2) Load 37(uv1) - 98: 32(fvec2) Load 76(uv2) - 99: 68(ptr) AccessChain 65(gl_TessCoord) 22 - 100: 29(float) Load 99 - 101: 32(fvec2) CompositeConstruct 100 100 - 102: 32(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 97 98 101 - Store 94(outUV) 102 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 104 104 12 12 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(n1) 41 - 118: 63(ptr) AccessChain 115(inNormal) 53 - 119: 61(fvec3) Load 118 - 120: 63(ptr) AccessChain 115(inNormal) 58 - 121: 61(fvec3) Load 120 - 122: 68(ptr) AccessChain 65(gl_TessCoord) 12 - 123: 29(float) Load 122 - 124: 61(fvec3) CompositeConstruct 123 123 123 - 125: 61(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 119 121 124 - Store 107(n1) 125 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 127 127 12 12 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 129 128(n2) 41 - 132: 63(ptr) AccessChain 115(inNormal) 80 - 133: 61(fvec3) Load 132 - 134: 63(ptr) AccessChain 115(inNormal) 83 - 135: 61(fvec3) Load 134 - 136: 68(ptr) AccessChain 65(gl_TessCoord) 12 - 137: 29(float) Load 136 - 138: 61(fvec3) CompositeConstruct 137 137 137 - 139: 61(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 133 135 138 - Store 128(n2) 139 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 141 141 12 12 - 147: 61(fvec3) Load 107(n1) - 148: 61(fvec3) Load 128(n2) - 149: 68(ptr) AccessChain 65(gl_TessCoord) 22 - 150: 29(float) Load 149 - 151: 61(fvec3) CompositeConstruct 150 150 150 - 152: 61(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 147 148 151 - Store 144(outNormal) 152 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 154 154 12 12 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(pos1) 41 - 187: 185(ptr) AccessChain 182(gl_in) 53 53 - 188: 155(fvec4) Load 187 - 189: 185(ptr) AccessChain 182(gl_in) 58 53 - 190: 155(fvec4) Load 189 - 191: 68(ptr) AccessChain 65(gl_TessCoord) 12 - 192: 29(float) Load 191 - 193: 155(fvec4) CompositeConstruct 192 192 192 192 - 194: 155(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 188 190 193 - Store 159(pos1) 194 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 196 196 12 12 - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 198 197(pos2) 41 - 201: 185(ptr) AccessChain 182(gl_in) 80 53 - 202: 155(fvec4) Load 201 - 203: 185(ptr) AccessChain 182(gl_in) 83 53 - 204: 155(fvec4) Load 203 - 205: 68(ptr) AccessChain 65(gl_TessCoord) 12 - 206: 29(float) Load 205 - 207: 155(fvec4) CompositeConstruct 206 206 206 206 - 208: 155(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 202 204 207 - Store 197(pos2) 208 - 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 210 210 12 12 - 214: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 212 211(pos) 41 - 215: 155(fvec4) Load 159(pos1) - 216: 155(fvec4) Load 197(pos2) - 217: 68(ptr) AccessChain 65(gl_TessCoord) 22 - 218: 29(float) Load 217 - 219: 155(fvec4) CompositeConstruct 218 218 218 218 - 220: 155(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 215 216 219 - Store 211(pos) 220 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 222 222 12 12 + 36(uv1): 33(ptr) Variable Function + 75(uv2): 33(ptr) Variable Function + 106(n1): 104(ptr) Variable Function + 127(n2): 104(ptr) Variable Function + 158(pos1): 156(ptr) Variable Function + 196(pos2): 156(ptr) Variable Function + 210(pos): 156(ptr) Variable Function + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 39 39 12 12 + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 37 36(uv1) 41 + 57: 55(ptr) AccessChain 47(inUV) 54 + 58: 31(fvec2) Load 57 + 60: 55(ptr) AccessChain 47(inUV) 59 + 61: 31(fvec2) Load 60 + 71: 69(ptr) AccessChain 66(gl_TessCoord) 12 + 72: 28(float) Load 71 + 73: 31(fvec2) CompositeConstruct 72 72 + 74: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 58 61 73 + Store 36(uv1) 74 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 78 78 12 12 + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(uv2) 41 + 82: 55(ptr) AccessChain 47(inUV) 81 + 83: 31(fvec2) Load 82 + 85: 55(ptr) AccessChain 47(inUV) 84 + 86: 31(fvec2) Load 85 + 87: 69(ptr) AccessChain 66(gl_TessCoord) 12 + 88: 28(float) Load 87 + 89: 31(fvec2) CompositeConstruct 88 88 + 90: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 83 86 89 + Store 75(uv2) 90 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 96 96 12 12 + 97: 31(fvec2) Load 36(uv1) + 99: 31(fvec2) Load 75(uv2) + 100: 69(ptr) AccessChain 66(gl_TessCoord) 22 + 101: 28(float) Load 100 + 102: 31(fvec2) CompositeConstruct 101 101 + 103: 31(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 97 99 102 + Store 93(outUV) 103 + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 109 109 12 12 + 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 107 106(n1) 41 + 119: 64(ptr) AccessChain 116(inNormal) 54 + 120: 62(fvec3) Load 119 + 121: 64(ptr) AccessChain 116(inNormal) 59 + 122: 62(fvec3) Load 121 + 123: 69(ptr) AccessChain 66(gl_TessCoord) 12 + 124: 28(float) Load 123 + 125: 62(fvec3) CompositeConstruct 124 124 124 + 126: 62(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 120 122 125 + Store 106(n1) 126 + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 130 130 12 12 + 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 128 127(n2) 41 + 133: 64(ptr) AccessChain 116(inNormal) 81 + 134: 62(fvec3) Load 133 + 135: 64(ptr) AccessChain 116(inNormal) 84 + 136: 62(fvec3) Load 135 + 137: 69(ptr) AccessChain 66(gl_TessCoord) 12 + 138: 28(float) Load 137 + 139: 62(fvec3) CompositeConstruct 138 138 138 + 140: 62(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 134 136 139 + Store 127(n2) 140 + 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 146 146 12 12 + 147: 62(fvec3) Load 106(n1) + 149: 62(fvec3) Load 127(n2) + 150: 69(ptr) AccessChain 66(gl_TessCoord) 22 + 151: 28(float) Load 150 + 152: 62(fvec3) CompositeConstruct 151 151 151 + 153: 62(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 147 149 152 + Store 143(outNormal) 153 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 161 161 12 12 + 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 159 158(pos1) 41 + 188: 186(ptr) AccessChain 183(gl_in) 54 54 + 189: 154(fvec4) Load 188 + 190: 186(ptr) AccessChain 183(gl_in) 59 54 + 191: 154(fvec4) Load 190 + 192: 69(ptr) AccessChain 66(gl_TessCoord) 12 + 193: 28(float) Load 192 + 194: 154(fvec4) CompositeConstruct 193 193 193 193 + 195: 154(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 189 191 194 + Store 158(pos1) 195 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 199 199 12 12 + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 197 196(pos2) 41 + 202: 186(ptr) AccessChain 183(gl_in) 81 54 + 203: 154(fvec4) Load 202 + 204: 186(ptr) AccessChain 183(gl_in) 84 54 + 205: 154(fvec4) Load 204 + 206: 69(ptr) AccessChain 66(gl_TessCoord) 12 + 207: 28(float) Load 206 + 208: 154(fvec4) CompositeConstruct 207 207 207 207 + 209: 154(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 203 205 208 + Store 196(pos2) 209 + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 211 210(pos) 41 + 216: 154(fvec4) Load 158(pos1) + 217: 154(fvec4) Load 196(pos2) + 218: 69(ptr) AccessChain 66(gl_TessCoord) 22 + 219: 28(float) Load 218 + 220: 154(fvec4) CompositeConstruct 219 219 219 219 + 221: 154(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 216 217 220 + Store 210(pos) 221 + 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 225 225 12 12 237: 228 Load 234(displacementMap) - 238: 32(fvec2) Load 94(outUV) - 240: 155(fvec4) ImageSampleExplicitLod 237 238 Lod 239 - 241: 29(float) CompositeExtract 240 0 - 278: 276(ptr) AccessChain 272(ubo) 275 - 279: 29(float) Load 278 - 280: 29(float) FMul 241 279 - 283: 281(ptr) AccessChain 211(pos) 22 - 284: 29(float) Load 283 - 285: 29(float) FSub 284 280 - 286: 281(ptr) AccessChain 211(pos) 22 - Store 286 285 - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 288 288 12 12 - 304: 302(ptr) AccessChain 272(ubo) 53 - 305: 242 Load 304 - 306: 302(ptr) AccessChain 272(ubo) 58 - 307: 242 Load 306 - 308: 242 MatrixTimesMatrix 305 307 - 309: 155(fvec4) Load 211(pos) - 310: 155(fvec4) MatrixTimesVector 308 309 - 313: 311(ptr) AccessChain 300 53 - Store 313 310 - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 315 315 12 12 - 319: 155(fvec4) Load 211(pos) - 320: 61(fvec3) VectorShuffle 319 319 0 1 2 - 321: 61(fvec3) FNegate 320 - Store 316(outViewVec) 321 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 323 323 12 12 - 329: 327(ptr) AccessChain 272(ubo) 83 - 330: 155(fvec4) Load 329 - 331: 61(fvec3) VectorShuffle 330 330 0 1 2 - 332: 61(fvec3) Load 316(outViewVec) - 333: 61(fvec3) FAdd 331 332 - 334: 61(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 333 - Store 324(outLightVec) 334 - 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 336 336 12 12 - 340: 155(fvec4) Load 211(pos) - 341: 61(fvec3) VectorShuffle 340 340 0 1 2 - Store 337(outWorldPos) 341 - 342: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 343 343 12 12 - 347: 302(ptr) AccessChain 272(ubo) 58 - 348: 242 Load 347 - 349: 155(fvec4) Load 211(pos) - 350: 155(fvec4) MatrixTimesVector 348 349 - 351: 29(float) CompositeExtract 350 0 - 352: 29(float) CompositeExtract 350 1 - 353: 29(float) CompositeExtract 350 2 - 354: 61(fvec3) CompositeConstruct 351 352 353 - Store 344(outEyePos) 354 + 239: 31(fvec2) Load 93(outUV) + 241: 154(fvec4) ImageSampleExplicitLod 237 239 Lod 240 + 242: 28(float) CompositeExtract 241 0 + 279: 277(ptr) AccessChain 273(ubo) 276 + 280: 28(float) Load 279 + 281: 28(float) FMul 242 280 + 284: 282(ptr) AccessChain 210(pos) 22 + 285: 28(float) Load 284 + 286: 28(float) FSub 285 281 + 287: 282(ptr) AccessChain 210(pos) 22 + Store 287 286 + 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 + 304: 302(ptr) AccessChain 273(ubo) 54 + 306: 243 Load 304 + 307: 302(ptr) AccessChain 273(ubo) 59 + 308: 243 Load 307 + 309: 243 MatrixTimesMatrix 306 308 + 310: 154(fvec4) Load 210(pos) + 311: 154(fvec4) MatrixTimesVector 309 310 + 314: 312(ptr) AccessChain 300 54 + Store 314 311 + 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 318 318 12 12 + 319: 154(fvec4) Load 210(pos) + 321: 62(fvec3) VectorShuffle 319 319 0 1 2 + 322: 62(fvec3) FNegate 321 + Store 315(outViewVec) 322 + 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 326 326 12 12 + 329: 327(ptr) AccessChain 273(ubo) 84 + 331: 154(fvec4) Load 329 + 332: 62(fvec3) VectorShuffle 331 331 0 1 2 + 333: 62(fvec3) Load 315(outViewVec) + 334: 62(fvec3) FAdd 332 333 + 335: 62(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 334 + Store 323(outLightVec) 335 + 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 339 339 12 12 + 340: 154(fvec4) Load 210(pos) + 342: 62(fvec3) VectorShuffle 340 340 0 1 2 + Store 336(outWorldPos) 342 + 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 346 346 12 12 + 347: 302(ptr) AccessChain 273(ubo) 59 + 349: 243 Load 347 + 350: 154(fvec4) Load 210(pos) + 351: 154(fvec4) MatrixTimesVector 349 350 + 352: 28(float) CompositeExtract 351 0 + 353: 28(float) CompositeExtract 351 1 + 354: 28(float) CompositeExtract 351 2 + 355: 62(fvec3) CompositeConstruct 352 353 354 + Store 343(outEyePos) 355 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index b185b1d04e..3b7aaeaaa8 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,15 +1,15 @@ spv.debuginfo.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 443 +// Id's are bound by 444 Capability Shader Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 14 "main" 36 42 48 55 64 82 304 322 327 353 371 388 428 437 - 1: String "" + EntryPoint Vertex 14 "main" 35 42 47 55 65 83 305 323 328 353 370 389 427 436 + 2: String "" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -20,541 +20,541 @@ spv.debuginfo.glsl.vert // OpModuleProcessed entry-point main #line 1 " - 30: String "float" - 38: String "outColor" + 29: String "float" + 37: String "outColor" 44: String "inColor" - 50: String "outUV" + 49: String "outUV" 57: String "inUV" - 60: String "int" - 66: String "instanceTexIndex" - 79: String "s" - 84: String "instanceRot" - 94: String "bool" - 99: String "modelview" - 103: String "lightPos" - 106: String "globSpeed" - 110: String "UBO" - 115: String "ubo" - 127: String "c" - 143: String "mx" - 187: String "my" - 224: String "mz" - 245: String "rotMat" - 275: String "gRotMat" - 302: String "locPos" - 306: String "inPos" - 318: String "pos" - 324: String "instanceScale" - 329: String "instancePos" - 342: String "gl_Position" - 345: String "gl_PointSize" - 347: String "gl_CullDistance" - 350: String "gl_PerVertex" - 373: String "outNormal" - 390: String "inNormal" - 409: String "lPos" - 430: String "outLightVec" - 439: String "outViewVec" + 61: String "int" + 67: String "instanceTexIndex" + 78: String "s" + 85: String "instanceRot" + 95: String "bool" + 100: String "modelview" + 104: String "lightPos" + 107: String "globSpeed" + 111: String "UBO" + 116: String "ubo" + 126: String "c" + 142: String "mx" + 186: String "my" + 223: String "mz" + 244: String "rotMat" + 274: String "gRotMat" + 301: String "locPos" + 307: String "inPos" + 317: String "pos" + 325: String "instanceScale" + 330: String "instancePos" + 341: String "gl_Position" + 344: String "gl_PointSize" + 346: String "gl_CullDistance" + 349: String "gl_PerVertex" + 372: String "outNormal" + 391: String "inNormal" + 408: String "lPos" + 429: String "outLightVec" + 438: String "outViewVec" Name 14 "main" - Name 36 "outColor" + Name 35 "outColor" Name 42 "inColor" - Name 48 "outUV" + Name 47 "outUV" Name 55 "inUV" - Name 64 "instanceTexIndex" - Name 77 "s" - Name 82 "instanceRot" - Name 97 "UBO" - MemberName 97(UBO) 0 "projection" - MemberName 97(UBO) 1 "modelview" - MemberName 97(UBO) 2 "lightPos" - MemberName 97(UBO) 3 "locSpeed" - MemberName 97(UBO) 4 "globSpeed" - Name 113 "ubo" - Name 125 "c" - Name 141 "mx" - Name 185 "my" - Name 222 "mz" - Name 243 "rotMat" - Name 273 "gRotMat" - Name 300 "locPos" - Name 304 "inPos" - Name 316 "pos" - Name 322 "instanceScale" - Name 327 "instancePos" - Name 340 "gl_PerVertex" - MemberName 340(gl_PerVertex) 0 "gl_Position" - MemberName 340(gl_PerVertex) 1 "gl_PointSize" - MemberName 340(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 340(gl_PerVertex) 3 "gl_CullDistance" + Name 65 "instanceTexIndex" + Name 76 "s" + Name 83 "instanceRot" + Name 98 "UBO" + MemberName 98(UBO) 0 "projection" + MemberName 98(UBO) 1 "modelview" + MemberName 98(UBO) 2 "lightPos" + MemberName 98(UBO) 3 "locSpeed" + MemberName 98(UBO) 4 "globSpeed" + Name 114 "ubo" + Name 124 "c" + Name 140 "mx" + Name 184 "my" + Name 221 "mz" + Name 242 "rotMat" + Name 272 "gRotMat" + Name 299 "locPos" + Name 305 "inPos" + Name 315 "pos" + Name 323 "instanceScale" + Name 328 "instancePos" + Name 339 "gl_PerVertex" + MemberName 339(gl_PerVertex) 0 "gl_Position" + MemberName 339(gl_PerVertex) 1 "gl_PointSize" + MemberName 339(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 339(gl_PerVertex) 3 "gl_CullDistance" Name 353 "" - Name 371 "outNormal" - Name 388 "inNormal" - Name 407 "lPos" - Name 428 "outLightVec" - Name 437 "outViewVec" - Decorate 36(outColor) Location 1 + Name 370 "outNormal" + Name 389 "inNormal" + Name 406 "lPos" + Name 427 "outLightVec" + Name 436 "outViewVec" + Decorate 35(outColor) Location 1 Decorate 42(inColor) Location 3 - Decorate 48(outUV) Location 2 + Decorate 47(outUV) Location 2 Decorate 55(inUV) Location 2 - Decorate 64(instanceTexIndex) Location 7 - Decorate 82(instanceRot) Location 5 - MemberDecorate 97(UBO) 0 ColMajor - MemberDecorate 97(UBO) 0 Offset 0 - MemberDecorate 97(UBO) 0 MatrixStride 16 - MemberDecorate 97(UBO) 1 ColMajor - MemberDecorate 97(UBO) 1 Offset 64 - MemberDecorate 97(UBO) 1 MatrixStride 16 - MemberDecorate 97(UBO) 2 Offset 128 - MemberDecorate 97(UBO) 3 Offset 144 - MemberDecorate 97(UBO) 4 Offset 148 - Decorate 97(UBO) Block - Decorate 113(ubo) DescriptorSet 0 - Decorate 113(ubo) Binding 0 - Decorate 304(inPos) Location 0 - Decorate 322(instanceScale) Location 6 - Decorate 327(instancePos) Location 4 - MemberDecorate 340(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 340(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 340(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 340(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 340(gl_PerVertex) Block - Decorate 371(outNormal) Location 0 - Decorate 388(inNormal) Location 1 - Decorate 428(outLightVec) Location 4 - Decorate 437(outViewVec) Location 3 + Decorate 65(instanceTexIndex) Location 7 + Decorate 83(instanceRot) Location 5 + MemberDecorate 98(UBO) 0 ColMajor + MemberDecorate 98(UBO) 0 Offset 0 + MemberDecorate 98(UBO) 0 MatrixStride 16 + MemberDecorate 98(UBO) 1 ColMajor + MemberDecorate 98(UBO) 1 Offset 64 + MemberDecorate 98(UBO) 1 MatrixStride 16 + MemberDecorate 98(UBO) 2 Offset 128 + MemberDecorate 98(UBO) 3 Offset 144 + MemberDecorate 98(UBO) 4 Offset 148 + Decorate 98(UBO) Block + Decorate 114(ubo) DescriptorSet 0 + Decorate 114(ubo) Binding 0 + Decorate 305(inPos) Location 0 + Decorate 323(instanceScale) Location 6 + Decorate 328(instancePos) Location 4 + MemberDecorate 339(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 339(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 339(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 339(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 339(gl_PerVertex) Block + Decorate 370(outNormal) Location 0 + Decorate 389(inNormal) Location 1 + Decorate 427(outLightVec) Location 4 + Decorate 436(outViewVec) Location 3 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 54 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 - 28: 7(int) Constant 56 - 29: TypeFloat 32 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 13 12 - 32: TypeVector 29(float) 3 - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 13 - 34: TypePointer Output 32(fvec3) - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 13 12 - 36(outColor): 34(ptr) Variable Output + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: TypeFloat 32 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 13 12 + 31: TypeVector 28(float) 3 + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 13 + 33: TypePointer Output 31(fvec3) + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 13 12 + 35(outColor): 33(ptr) Variable Output + 38: 7(int) Constant 56 39: 7(int) Constant 8 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 38 33 18 28 12 21 38 36(outColor) 39 - 40: TypePointer Input 32(fvec3) - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 22 12 + 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 37 32 18 38 12 21 37 35(outColor) 39 + 40: TypePointer Input 31(fvec3) + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 22 12 42(inColor): 40(ptr) Variable Input - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 44 33 18 28 12 21 44 42(inColor) 39 - 47: 7(int) Constant 57 - 48(outUV): 34(ptr) Variable Output - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 50 33 18 47 12 21 50 48(outUV) 39 - 51: TypeVector 29(float) 2 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 24 + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 44 32 18 38 12 21 44 42(inColor) 39 + 47(outUV): 33(ptr) Variable Output + 50: 7(int) Constant 57 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 49 32 18 50 12 21 49 47(outUV) 39 + 51: TypeVector 28(float) 2 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 24 53: TypePointer Input 51(fvec2) - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 52 22 12 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 52 22 12 55(inUV): 53(ptr) Variable Input - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 57 52 18 47 12 21 57 55(inUV) 39 - 59: TypeInt 32 1 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 60 10 23 12 - 62: TypePointer Input 59(int) - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 22 12 -64(instanceTexIndex): 62(ptr) Variable Input - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 66 61 18 47 12 21 66 64(instanceTexIndex) 39 - 73: 7(int) Constant 62 - 74: TypePointer Function 29(float) - 75: 7(int) Constant 7 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 75 12 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 31 18 73 12 17 23 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 82(instanceRot): 40(ptr) Variable Input - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 33 18 73 12 21 84 82(instanceRot) 39 - 85: TypePointer Input 29(float) - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 22 12 - 89: TypeVector 29(float) 4 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 31 23 - 91: TypeMatrix 89(fvec4) 4 - 93: TypeBool - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 94 10 24 12 - 96: 93(bool) ConstantTrue - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 90 23 96 - 97(UBO): TypeStruct 91 91 89(fvec4) 29(float) 29(float) - 100: 7(int) Constant 42 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 92 18 100 75 12 12 13 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 92 18 100 75 12 12 13 - 104: 7(int) Constant 43 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 103 90 18 104 75 12 12 13 - 107: 7(int) Constant 45 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 31 18 107 39 12 12 13 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 31 18 107 39 12 12 13 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 110 22 18 73 12 21 110 12 13 98 101 102 105 108 - 111: TypePointer Uniform 97(UBO) - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 109 24 12 - 113(ubo): 111(ptr) Variable Uniform - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 115 109 18 73 12 21 115 113(ubo) 39 - 116: 59(int) Constant 3 - 117: TypePointer Uniform 29(float) - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 24 12 - 124: 7(int) Constant 63 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 127 31 18 124 12 17 23 - 136: 7(int) Constant 65 - 137: TypeMatrix 32(fvec3) 3 - 138: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 33 13 96 - 139: TypePointer Function 137 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 138 75 12 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 138 18 136 12 17 23 - 145: 59(int) Constant 0 - 148: 29(float) Constant 0 - 150: TypePointer Function 32(fvec3) - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 33 75 12 - 154: 7(int) Constant 66 - 155: 59(int) Constant 1 - 162: 7(int) Constant 67 - 163: 59(int) Constant 2 - 164: 29(float) Constant 1065353216 - 165: 32(fvec3) ConstantComposite 148 148 164 - 168: 7(int) Constant 70 - 176: 7(int) Constant 71 - 184: 7(int) Constant 73 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 138 18 184 12 17 23 - 194: 7(int) Constant 74 - 195: 32(fvec3) ConstantComposite 148 164 148 - 198: 7(int) Constant 75 - 205: 7(int) Constant 78 - 213: 7(int) Constant 79 - 221: 7(int) Constant 81 - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 224 138 18 221 12 17 23 - 226: 32(fvec3) ConstantComposite 164 148 148 - 229: 7(int) Constant 82 - 235: 7(int) Constant 83 - 242: 7(int) Constant 85 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 138 18 242 12 17 23 - 253: 7(int) Constant 88 - 256: 59(int) Constant 4 - 262: 7(int) Constant 89 - 270: 7(int) Constant 90 - 271: TypePointer Function 91 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 92 75 12 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 92 18 270 12 17 23 - 280: TypePointer Function 89(fvec4) - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 75 12 - 284: 7(int) Constant 91 - 285: 89(fvec4) ConstantComposite 148 164 148 148 - 288: 7(int) Constant 92 - 295: 7(int) Constant 93 - 296: 89(fvec4) ConstantComposite 148 148 148 164 - 299: 7(int) Constant 95 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 302 90 18 299 12 17 23 - 304(inPos): 40(ptr) Variable Input - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 306 33 18 299 12 21 306 304(inPos) 39 - 315: 7(int) Constant 96 - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 318 90 18 315 12 17 23 -322(instanceScale): 85(ptr) Variable Input - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 324 31 18 315 12 21 324 322(instanceScale) 39 -327(instancePos): 40(ptr) Variable Input - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 329 33 18 315 12 21 329 327(instancePos) 39 - 337: 7(int) Constant 98 - 338: TypeArray 29(float) 22 - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 31 22 -340(gl_PerVertex): TypeStruct 89(fvec4) 29(float) 338 338 - 343: 7(int) Constant 24 - 341: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 342 90 18 22 343 12 12 13 - 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 345 31 18 22 100 12 12 13 - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 339 18 22 242 12 12 13 - 348: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 347 339 18 22 242 12 12 13 - 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 350 22 18 337 12 21 350 12 13 341 344 346 348 - 351: TypePointer Output 340(gl_PerVertex) - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 349 13 12 + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 57 52 18 50 12 21 57 55(inUV) 39 + 60: TypeInt 32 1 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 61 10 23 12 + 63: TypePointer Input 60(int) + 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 22 12 +65(instanceTexIndex): 63(ptr) Variable Input + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 67 62 18 50 12 21 67 65(instanceTexIndex) 39 + 73: TypePointer Function 28(float) + 74: 7(int) Constant 7 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 74 12 + 79: 7(int) Constant 62 + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 78 30 18 79 12 17 23 + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 83(instanceRot): 40(ptr) Variable Input + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 85 32 18 79 12 21 85 83(instanceRot) 39 + 86: TypePointer Input 28(float) + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 22 12 + 90: TypeVector 28(float) 4 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 30 23 + 92: TypeMatrix 90(fvec4) 4 + 94: TypeBool + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 95 10 24 12 + 97: 94(bool) ConstantTrue + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 91 23 97 + 98(UBO): TypeStruct 92 92 90(fvec4) 28(float) 28(float) + 101: 7(int) Constant 42 + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 93 18 101 74 12 12 13 + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 100 93 18 101 74 12 12 13 + 105: 7(int) Constant 43 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 91 18 105 74 12 12 13 + 108: 7(int) Constant 45 + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 30 18 108 39 12 12 13 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 107 30 18 108 39 12 12 13 + 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 111 22 18 79 12 21 111 12 13 99 102 103 106 109 + 112: TypePointer Uniform 98(UBO) + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 110 24 12 + 114(ubo): 112(ptr) Variable Uniform + 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 116 110 18 79 12 21 116 114(ubo) 39 + 117: 60(int) Constant 3 + 118: TypePointer Uniform 28(float) + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 24 12 + 127: 7(int) Constant 63 + 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 126 30 18 127 12 17 23 + 136: TypeMatrix 31(fvec3) 3 + 137: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 32 13 97 + 138: TypePointer Function 136 + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 137 74 12 + 143: 7(int) Constant 65 + 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 142 137 18 143 12 17 23 + 146: 60(int) Constant 0 + 149: 28(float) Constant 0 + 151: TypePointer Function 31(fvec3) + 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 32 74 12 + 154: 60(int) Constant 1 + 157: 7(int) Constant 66 + 162: 60(int) Constant 2 + 163: 28(float) Constant 1065353216 + 164: 31(fvec3) ConstantComposite 149 149 163 + 167: 7(int) Constant 67 + 170: 7(int) Constant 70 + 178: 7(int) Constant 71 + 187: 7(int) Constant 73 + 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 186 137 18 187 12 17 23 + 194: 31(fvec3) ConstantComposite 149 163 149 + 197: 7(int) Constant 74 + 200: 7(int) Constant 75 + 207: 7(int) Constant 78 + 215: 7(int) Constant 79 + 224: 7(int) Constant 81 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 137 18 224 12 17 23 + 227: 31(fvec3) ConstantComposite 163 149 149 + 231: 7(int) Constant 82 + 237: 7(int) Constant 83 + 245: 7(int) Constant 85 + 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 137 18 245 12 17 23 + 255: 7(int) Constant 88 + 257: 60(int) Constant 4 + 264: 7(int) Constant 89 + 270: TypePointer Function 92 + 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 74 12 + 275: 7(int) Constant 90 + 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 93 18 275 12 17 23 + 281: TypePointer Function 90(fvec4) + 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 74 12 + 284: 90(fvec4) ConstantComposite 149 163 149 149 + 287: 7(int) Constant 91 + 290: 7(int) Constant 92 + 295: 90(fvec4) ConstantComposite 149 149 149 163 + 298: 7(int) Constant 93 + 302: 7(int) Constant 95 + 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 301 91 18 302 12 17 23 + 305(inPos): 40(ptr) Variable Input + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 307 32 18 302 12 21 307 305(inPos) 39 + 318: 7(int) Constant 96 + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 91 18 318 12 17 23 +323(instanceScale): 86(ptr) Variable Input + 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 325 30 18 318 12 21 325 323(instanceScale) 39 +328(instancePos): 40(ptr) Variable Input + 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 330 32 18 318 12 21 330 328(instancePos) 39 + 337: TypeArray 28(float) 22 + 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 30 22 +339(gl_PerVertex): TypeStruct 90(fvec4) 28(float) 337 337 + 342: 7(int) Constant 24 + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 341 91 18 22 342 12 12 13 + 343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 344 30 18 22 101 12 12 13 + 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 346 338 18 22 245 12 12 13 + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 346 338 18 22 245 12 12 13 + 350: 7(int) Constant 98 + 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 349 22 18 350 12 21 349 12 13 340 343 345 347 + 351: TypePointer Output 339(gl_PerVertex) + 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 348 13 12 353: 351(ptr) Variable Output - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 349 18 337 12 21 1 353 39 - 355: TypePointer Uniform 91 - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 92 24 12 - 366: TypePointer Output 89(fvec4) - 367: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 13 12 - 370: 7(int) Constant 99 - 371(outNormal): 34(ptr) Variable Output - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 373 33 18 370 12 21 373 371(outNormal) 39 - 388(inNormal): 40(ptr) Variable Input - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 390 33 18 370 12 21 390 388(inNormal) 39 - 394: 7(int) Constant 101 - 406: 7(int) Constant 102 - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 33 18 406 12 17 23 - 420: TypePointer Uniform 89(fvec4) - 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 24 12 - 427: 7(int) Constant 103 -428(outLightVec): 34(ptr) Variable Output - 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 33 18 427 12 21 430 428(outLightVec) 39 - 436: 7(int) Constant 104 - 437(outViewVec): 34(ptr) Variable Output - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 439 33 18 436 12 21 439 437(outViewVec) 39 - Line 1 54 11 + 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 348 18 350 12 21 2 353 39 + 355: TypePointer Uniform 92 + 356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 24 12 + 367: TypePointer Output 90(fvec4) + 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 13 12 + 370(outNormal): 33(ptr) Variable Output + 373: 7(int) Constant 99 + 371: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 372 32 18 373 12 21 372 370(outNormal) 39 + 389(inNormal): 40(ptr) Variable Input + 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 391 32 18 373 12 21 391 389(inNormal) 39 + 396: 7(int) Constant 101 + 409: 7(int) Constant 102 + 407: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 408 32 18 409 12 17 23 + 421: TypePointer Uniform 90(fvec4) + 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 24 12 +427(outLightVec): 33(ptr) Variable Output + 430: 7(int) Constant 103 + 428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 429 32 18 430 12 21 429 427(outLightVec) 39 + 436(outViewVec): 33(ptr) Variable Output + 439: 7(int) Constant 104 + 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 438 32 18 439 12 21 438 436(outViewVec) 39 14(main): 4 Function None 5 15: Label - 77(s): 74(ptr) Variable Function - 125(c): 74(ptr) Variable Function - 141(mx): 139(ptr) Variable Function - 185(my): 139(ptr) Variable Function - 222(mz): 139(ptr) Variable Function - 243(rotMat): 139(ptr) Variable Function - 273(gRotMat): 271(ptr) Variable Function - 300(locPos): 280(ptr) Variable Function - 316(pos): 280(ptr) Variable Function - 407(lPos): 150(ptr) Variable Function - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - 45: 32(fvec3) Load 42(inColor) - Store 36(outColor) 45 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 47 47 12 12 + 76(s): 73(ptr) Variable Function + 124(c): 73(ptr) Variable Function + 140(mx): 138(ptr) Variable Function + 184(my): 138(ptr) Variable Function + 221(mz): 138(ptr) Variable Function + 242(rotMat): 138(ptr) Variable Function + 272(gRotMat): 270(ptr) Variable Function + 299(locPos): 281(ptr) Variable Function + 315(pos): 281(ptr) Variable Function + 406(lPos): 151(ptr) Variable Function + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 38 38 12 12 + 45: 31(fvec3) Load 42(inColor) + Store 35(outColor) 45 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 50 50 12 12 58: 51(fvec2) Load 55(inUV) - 67: 59(int) Load 64(instanceTexIndex) - 68: 29(float) ConvertSToF 67 - 69: 29(float) CompositeExtract 58 0 - 70: 29(float) CompositeExtract 58 1 - 71: 32(fvec3) CompositeConstruct 69 70 68 - Store 48(outUV) 71 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 73 73 12 12 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 77(s) 81 - 87: 85(ptr) AccessChain 82(instanceRot) 12 - 88: 29(float) Load 87 - 119: 117(ptr) AccessChain 113(ubo) 116 - 120: 29(float) Load 119 - 121: 29(float) FAdd 88 120 - 122: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 121 - Store 77(s) 122 - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 124 124 12 12 - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 126 125(c) 81 - 129: 85(ptr) AccessChain 82(instanceRot) 12 - 130: 29(float) Load 129 - 131: 117(ptr) AccessChain 113(ubo) 116 - 132: 29(float) Load 131 - 133: 29(float) FAdd 130 132 - 134: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 133 - Store 125(c) 134 - 135: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 136 136 12 12 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(mx) 81 - 146: 29(float) Load 125(c) - 147: 29(float) Load 77(s) - 149: 32(fvec3) CompositeConstruct 146 147 148 - 152: 150(ptr) AccessChain 141(mx) 145 - Store 152 149 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 154 154 12 12 - 156: 29(float) Load 77(s) - 157: 29(float) FNegate 156 - 158: 29(float) Load 125(c) - 159: 32(fvec3) CompositeConstruct 157 158 148 - 160: 150(ptr) AccessChain 141(mx) 155 - Store 160 159 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 162 162 12 12 - 166: 150(ptr) AccessChain 141(mx) 163 - Store 166 165 - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 168 168 12 12 - 169: 85(ptr) AccessChain 82(instanceRot) 22 - 170: 29(float) Load 169 - 171: 117(ptr) AccessChain 113(ubo) 116 - 172: 29(float) Load 171 - 173: 29(float) FAdd 170 172 - 174: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 173 - Store 77(s) 174 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 176 176 12 12 - 177: 85(ptr) AccessChain 82(instanceRot) 22 - 178: 29(float) Load 177 - 179: 117(ptr) AccessChain 113(ubo) 116 - 180: 29(float) Load 179 - 181: 29(float) FAdd 178 180 - 182: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 181 - Store 125(c) 182 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 184 184 12 12 - 188: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 186 185(my) 81 - 189: 29(float) Load 125(c) - 190: 29(float) Load 77(s) - 191: 32(fvec3) CompositeConstruct 189 148 190 - 192: 150(ptr) AccessChain 185(my) 145 - Store 192 191 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 194 194 12 12 - 196: 150(ptr) AccessChain 185(my) 155 - Store 196 195 - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 198 198 12 12 - 199: 29(float) Load 77(s) - 200: 29(float) FNegate 199 - 201: 29(float) Load 125(c) - 202: 32(fvec3) CompositeConstruct 200 148 201 - 203: 150(ptr) AccessChain 185(my) 163 - Store 203 202 - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 205 205 12 12 - 206: 85(ptr) AccessChain 82(instanceRot) 24 - 207: 29(float) Load 206 - 208: 117(ptr) AccessChain 113(ubo) 116 - 209: 29(float) Load 208 - 210: 29(float) FAdd 207 209 - 211: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 210 - Store 77(s) 211 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 213 213 12 12 - 214: 85(ptr) AccessChain 82(instanceRot) 24 - 215: 29(float) Load 214 - 216: 117(ptr) AccessChain 113(ubo) 116 - 217: 29(float) Load 216 - 218: 29(float) FAdd 215 217 - 219: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 218 - Store 125(c) 219 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 221 221 12 12 - 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 223 222(mz) 81 - 227: 150(ptr) AccessChain 222(mz) 145 - Store 227 226 - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 229 229 12 12 - 230: 29(float) Load 125(c) - 231: 29(float) Load 77(s) - 232: 32(fvec3) CompositeConstruct 148 230 231 - 233: 150(ptr) AccessChain 222(mz) 155 - Store 233 232 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 235 235 12 12 - 236: 29(float) Load 77(s) - 237: 29(float) FNegate 236 - 238: 29(float) Load 125(c) - 239: 32(fvec3) CompositeConstruct 148 237 238 - 240: 150(ptr) AccessChain 222(mz) 163 - Store 240 239 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 242 242 12 12 - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(rotMat) 81 - 247: 137 Load 222(mz) - 248: 137 Load 185(my) - 249: 137 MatrixTimesMatrix 247 248 - 250: 137 Load 141(mx) - 251: 137 MatrixTimesMatrix 249 250 - Store 243(rotMat) 251 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 253 253 12 12 - 254: 85(ptr) AccessChain 82(instanceRot) 22 - 255: 29(float) Load 254 - 257: 117(ptr) AccessChain 113(ubo) 256 - 258: 29(float) Load 257 - 259: 29(float) FAdd 255 258 - 260: 29(float) ExtInst 3(GLSL.std.450) 13(Sin) 259 - Store 77(s) 260 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 262 262 12 12 - 263: 85(ptr) AccessChain 82(instanceRot) 22 - 264: 29(float) Load 263 - 265: 117(ptr) AccessChain 113(ubo) 256 - 266: 29(float) Load 265 - 267: 29(float) FAdd 264 266 - 268: 29(float) ExtInst 3(GLSL.std.450) 14(Cos) 267 - Store 125(c) 268 - 269: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 270 270 12 12 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(gRotMat) 81 - 277: 29(float) Load 125(c) - 278: 29(float) Load 77(s) - 279: 89(fvec4) CompositeConstruct 277 148 278 148 - 282: 280(ptr) AccessChain 273(gRotMat) 145 - Store 282 279 - 283: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 284 284 12 12 - 286: 280(ptr) AccessChain 273(gRotMat) 155 - Store 286 285 - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 288 288 12 12 - 289: 29(float) Load 77(s) - 290: 29(float) FNegate 289 - 291: 29(float) Load 125(c) - 292: 89(fvec4) CompositeConstruct 290 148 291 148 - 293: 280(ptr) AccessChain 273(gRotMat) 163 - Store 293 292 - 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 295 295 12 12 - 297: 280(ptr) AccessChain 273(gRotMat) 116 - Store 297 296 - 298: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 299 299 12 12 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 301 300(locPos) 81 - 307: 32(fvec3) Load 304(inPos) - 308: 137 Load 243(rotMat) - 309: 32(fvec3) VectorTimesMatrix 307 308 - 310: 29(float) CompositeExtract 309 0 - 311: 29(float) CompositeExtract 309 1 - 312: 29(float) CompositeExtract 309 2 - 313: 89(fvec4) CompositeConstruct 310 311 312 164 - Store 300(locPos) 313 - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 315 315 12 12 - 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 317 316(pos) 81 - 320: 89(fvec4) Load 300(locPos) - 321: 32(fvec3) VectorShuffle 320 320 0 1 2 - 325: 29(float) Load 322(instanceScale) - 326: 32(fvec3) VectorTimesScalar 321 325 - 330: 32(fvec3) Load 327(instancePos) - 331: 32(fvec3) FAdd 326 330 - 332: 29(float) CompositeExtract 331 0 - 333: 29(float) CompositeExtract 331 1 - 334: 29(float) CompositeExtract 331 2 - 335: 89(fvec4) CompositeConstruct 332 333 334 164 - Store 316(pos) 335 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 337 337 12 12 - 357: 355(ptr) AccessChain 113(ubo) 145 - 358: 91 Load 357 - 359: 355(ptr) AccessChain 113(ubo) 155 - 360: 91 Load 359 - 361: 91 MatrixTimesMatrix 358 360 - 362: 91 Load 273(gRotMat) - 363: 91 MatrixTimesMatrix 361 362 - 364: 89(fvec4) Load 316(pos) - 365: 89(fvec4) MatrixTimesVector 363 364 - 368: 366(ptr) AccessChain 353 145 - Store 368 365 - 369: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 370 370 12 12 - 374: 355(ptr) AccessChain 113(ubo) 155 - 375: 91 Load 374 - 376: 91 Load 273(gRotMat) - 377: 91 MatrixTimesMatrix 375 376 - 378: 89(fvec4) CompositeExtract 377 0 - 379: 32(fvec3) VectorShuffle 378 378 0 1 2 - 380: 89(fvec4) CompositeExtract 377 1 - 381: 32(fvec3) VectorShuffle 380 380 0 1 2 - 382: 89(fvec4) CompositeExtract 377 2 - 383: 32(fvec3) VectorShuffle 382 382 0 1 2 - 384: 137 CompositeConstruct 379 381 383 - 385: 137 Load 243(rotMat) - 386: 137 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 385 - 387: 137 MatrixTimesMatrix 384 386 - 391: 32(fvec3) Load 388(inNormal) - 392: 32(fvec3) MatrixTimesVector 387 391 - Store 371(outNormal) 392 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 394 394 12 12 - 395: 355(ptr) AccessChain 113(ubo) 155 - 396: 91 Load 395 - 397: 32(fvec3) Load 304(inPos) - 398: 32(fvec3) Load 327(instancePos) - 399: 32(fvec3) FAdd 397 398 - 400: 29(float) CompositeExtract 399 0 - 401: 29(float) CompositeExtract 399 1 - 402: 29(float) CompositeExtract 399 2 - 403: 89(fvec4) CompositeConstruct 400 401 402 164 - 404: 89(fvec4) MatrixTimesVector 396 403 - Store 316(pos) 404 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 406 406 12 12 - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(lPos) 81 - 411: 355(ptr) AccessChain 113(ubo) 155 - 412: 91 Load 411 - 413: 89(fvec4) CompositeExtract 412 0 - 414: 32(fvec3) VectorShuffle 413 413 0 1 2 - 415: 89(fvec4) CompositeExtract 412 1 - 416: 32(fvec3) VectorShuffle 415 415 0 1 2 - 417: 89(fvec4) CompositeExtract 412 2 - 418: 32(fvec3) VectorShuffle 417 417 0 1 2 - 419: 137 CompositeConstruct 414 416 418 - 422: 420(ptr) AccessChain 113(ubo) 163 - 423: 89(fvec4) Load 422 - 424: 32(fvec3) VectorShuffle 423 423 0 1 2 - 425: 32(fvec3) MatrixTimesVector 419 424 - Store 407(lPos) 425 - 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 427 427 12 12 - 431: 32(fvec3) Load 407(lPos) - 432: 89(fvec4) Load 316(pos) - 433: 32(fvec3) VectorShuffle 432 432 0 1 2 - 434: 32(fvec3) FSub 431 433 - Store 428(outLightVec) 434 - 435: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 436 436 12 12 - 440: 89(fvec4) Load 316(pos) - 441: 32(fvec3) VectorShuffle 440 440 0 1 2 - 442: 32(fvec3) FNegate 441 - Store 437(outViewVec) 442 + 68: 60(int) Load 65(instanceTexIndex) + 69: 28(float) ConvertSToF 68 + 70: 28(float) CompositeExtract 58 0 + 71: 28(float) CompositeExtract 58 1 + 72: 31(fvec3) CompositeConstruct 70 71 69 + Store 47(outUV) 72 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 79 79 12 12 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 77 76(s) 81 + 88: 86(ptr) AccessChain 83(instanceRot) 12 + 89: 28(float) Load 88 + 120: 118(ptr) AccessChain 114(ubo) 117 + 121: 28(float) Load 120 + 122: 28(float) FAdd 89 121 + 123: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 122 + Store 76(s) 123 + 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 127 127 12 12 + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 125 124(c) 81 + 130: 86(ptr) AccessChain 83(instanceRot) 12 + 131: 28(float) Load 130 + 132: 118(ptr) AccessChain 114(ubo) 117 + 133: 28(float) Load 132 + 134: 28(float) FAdd 131 133 + 135: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 134 + Store 124(c) 135 + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 143 143 12 12 + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 140(mx) 81 + 147: 28(float) Load 124(c) + 148: 28(float) Load 76(s) + 150: 31(fvec3) CompositeConstruct 147 148 149 + 153: 151(ptr) AccessChain 140(mx) 146 + Store 153 150 + 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 157 157 12 12 + 155: 28(float) Load 76(s) + 158: 28(float) FNegate 155 + 159: 28(float) Load 124(c) + 160: 31(fvec3) CompositeConstruct 158 159 149 + 161: 151(ptr) AccessChain 140(mx) 154 + Store 161 160 + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 167 167 12 12 + 165: 151(ptr) AccessChain 140(mx) 162 + Store 165 164 + 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 170 170 12 12 + 168: 86(ptr) AccessChain 83(instanceRot) 22 + 171: 28(float) Load 168 + 172: 118(ptr) AccessChain 114(ubo) 117 + 173: 28(float) Load 172 + 174: 28(float) FAdd 171 173 + 175: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 174 + Store 76(s) 175 + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 178 178 12 12 + 176: 86(ptr) AccessChain 83(instanceRot) 22 + 179: 28(float) Load 176 + 180: 118(ptr) AccessChain 114(ubo) 117 + 181: 28(float) Load 180 + 182: 28(float) FAdd 179 181 + 183: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 182 + Store 124(c) 183 + 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 187 187 12 12 + 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 185 184(my) 81 + 190: 28(float) Load 124(c) + 191: 28(float) Load 76(s) + 192: 31(fvec3) CompositeConstruct 190 149 191 + 193: 151(ptr) AccessChain 184(my) 146 + Store 193 192 + 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 197 197 12 12 + 195: 151(ptr) AccessChain 184(my) 154 + Store 195 194 + 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 200 200 12 12 + 198: 28(float) Load 76(s) + 201: 28(float) FNegate 198 + 202: 28(float) Load 124(c) + 203: 31(fvec3) CompositeConstruct 201 149 202 + 204: 151(ptr) AccessChain 184(my) 162 + Store 204 203 + 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 207 207 12 12 + 205: 86(ptr) AccessChain 83(instanceRot) 24 + 208: 28(float) Load 205 + 209: 118(ptr) AccessChain 114(ubo) 117 + 210: 28(float) Load 209 + 211: 28(float) FAdd 208 210 + 212: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 211 + Store 76(s) 212 + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 215 215 12 12 + 213: 86(ptr) AccessChain 83(instanceRot) 24 + 216: 28(float) Load 213 + 217: 118(ptr) AccessChain 114(ubo) 117 + 218: 28(float) Load 217 + 219: 28(float) FAdd 216 218 + 220: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 219 + Store 124(c) 220 + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 224 224 12 12 + 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(mz) 81 + 228: 151(ptr) AccessChain 221(mz) 146 + Store 228 227 + 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 231 231 12 12 + 229: 28(float) Load 124(c) + 232: 28(float) Load 76(s) + 233: 31(fvec3) CompositeConstruct 149 229 232 + 234: 151(ptr) AccessChain 221(mz) 154 + Store 234 233 + 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 237 237 12 12 + 235: 28(float) Load 76(s) + 238: 28(float) FNegate 235 + 239: 28(float) Load 124(c) + 240: 31(fvec3) CompositeConstruct 149 238 239 + 241: 151(ptr) AccessChain 221(mz) 162 + Store 241 240 + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 245 245 12 12 + 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(rotMat) 81 + 248: 136 Load 221(mz) + 249: 136 Load 184(my) + 250: 136 MatrixTimesMatrix 248 249 + 251: 136 Load 140(mx) + 252: 136 MatrixTimesMatrix 250 251 + Store 242(rotMat) 252 + 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 255 255 12 12 + 253: 86(ptr) AccessChain 83(instanceRot) 22 + 256: 28(float) Load 253 + 258: 118(ptr) AccessChain 114(ubo) 257 + 259: 28(float) Load 258 + 260: 28(float) FAdd 256 259 + 261: 28(float) ExtInst 3(GLSL.std.450) 13(Sin) 260 + Store 76(s) 261 + 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 264 264 12 12 + 262: 86(ptr) AccessChain 83(instanceRot) 22 + 265: 28(float) Load 262 + 266: 118(ptr) AccessChain 114(ubo) 257 + 267: 28(float) Load 266 + 268: 28(float) FAdd 265 267 + 269: 28(float) ExtInst 3(GLSL.std.450) 14(Cos) 268 + Store 124(c) 269 + 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 275 275 12 12 + 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 273 272(gRotMat) 81 + 278: 28(float) Load 124(c) + 279: 28(float) Load 76(s) + 280: 90(fvec4) CompositeConstruct 278 149 279 149 + 283: 281(ptr) AccessChain 272(gRotMat) 146 + Store 283 280 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 287 287 12 12 + 285: 281(ptr) AccessChain 272(gRotMat) 154 + Store 285 284 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 290 290 12 12 + 288: 28(float) Load 76(s) + 291: 28(float) FNegate 288 + 292: 28(float) Load 124(c) + 293: 90(fvec4) CompositeConstruct 291 149 292 149 + 294: 281(ptr) AccessChain 272(gRotMat) 162 + Store 294 293 + 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 298 298 12 12 + 296: 281(ptr) AccessChain 272(gRotMat) 117 + Store 296 295 + 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 302 302 12 12 + 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 300 299(locPos) 81 + 308: 31(fvec3) Load 305(inPos) + 309: 136 Load 242(rotMat) + 310: 31(fvec3) VectorTimesMatrix 308 309 + 311: 28(float) CompositeExtract 310 0 + 312: 28(float) CompositeExtract 310 1 + 313: 28(float) CompositeExtract 310 2 + 314: 90(fvec4) CompositeConstruct 311 312 313 163 + Store 299(locPos) 314 + 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 318 318 12 12 + 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(pos) 81 + 321: 90(fvec4) Load 299(locPos) + 322: 31(fvec3) VectorShuffle 321 321 0 1 2 + 326: 28(float) Load 323(instanceScale) + 327: 31(fvec3) VectorTimesScalar 322 326 + 331: 31(fvec3) Load 328(instancePos) + 332: 31(fvec3) FAdd 327 331 + 333: 28(float) CompositeExtract 332 0 + 334: 28(float) CompositeExtract 332 1 + 335: 28(float) CompositeExtract 332 2 + 336: 90(fvec4) CompositeConstruct 333 334 335 163 + Store 315(pos) 336 + 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 350 350 12 12 + 357: 355(ptr) AccessChain 114(ubo) 146 + 359: 92 Load 357 + 360: 355(ptr) AccessChain 114(ubo) 154 + 361: 92 Load 360 + 362: 92 MatrixTimesMatrix 359 361 + 363: 92 Load 272(gRotMat) + 364: 92 MatrixTimesMatrix 362 363 + 365: 90(fvec4) Load 315(pos) + 366: 90(fvec4) MatrixTimesVector 364 365 + 369: 367(ptr) AccessChain 353 146 + Store 369 366 + 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 373 373 12 12 + 374: 355(ptr) AccessChain 114(ubo) 154 + 376: 92 Load 374 + 377: 92 Load 272(gRotMat) + 378: 92 MatrixTimesMatrix 376 377 + 379: 90(fvec4) CompositeExtract 378 0 + 380: 31(fvec3) VectorShuffle 379 379 0 1 2 + 381: 90(fvec4) CompositeExtract 378 1 + 382: 31(fvec3) VectorShuffle 381 381 0 1 2 + 383: 90(fvec4) CompositeExtract 378 2 + 384: 31(fvec3) VectorShuffle 383 383 0 1 2 + 385: 136 CompositeConstruct 380 382 384 + 386: 136 Load 242(rotMat) + 387: 136 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 386 + 388: 136 MatrixTimesMatrix 385 387 + 392: 31(fvec3) Load 389(inNormal) + 393: 31(fvec3) MatrixTimesVector 388 392 + Store 370(outNormal) 393 + 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 396 396 12 12 + 394: 355(ptr) AccessChain 114(ubo) 154 + 397: 92 Load 394 + 398: 31(fvec3) Load 305(inPos) + 399: 31(fvec3) Load 328(instancePos) + 400: 31(fvec3) FAdd 398 399 + 401: 28(float) CompositeExtract 400 0 + 402: 28(float) CompositeExtract 400 1 + 403: 28(float) CompositeExtract 400 2 + 404: 90(fvec4) CompositeConstruct 401 402 403 163 + 405: 90(fvec4) MatrixTimesVector 397 404 + Store 315(pos) 405 + 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 409 409 12 12 + 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 407 406(lPos) 81 + 412: 355(ptr) AccessChain 114(ubo) 154 + 413: 92 Load 412 + 414: 90(fvec4) CompositeExtract 413 0 + 415: 31(fvec3) VectorShuffle 414 414 0 1 2 + 416: 90(fvec4) CompositeExtract 413 1 + 417: 31(fvec3) VectorShuffle 416 416 0 1 2 + 418: 90(fvec4) CompositeExtract 413 2 + 419: 31(fvec3) VectorShuffle 418 418 0 1 2 + 420: 136 CompositeConstruct 415 417 419 + 423: 421(ptr) AccessChain 114(ubo) 162 + 424: 90(fvec4) Load 423 + 425: 31(fvec3) VectorShuffle 424 424 0 1 2 + 426: 31(fvec3) MatrixTimesVector 420 425 + Store 406(lPos) 426 + 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 430 430 12 12 + 431: 31(fvec3) Load 406(lPos) + 433: 90(fvec4) Load 315(pos) + 434: 31(fvec3) VectorShuffle 433 433 0 1 2 + 435: 31(fvec3) FSub 431 434 + Store 427(outLightVec) 435 + 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 439 439 12 12 + 440: 90(fvec4) Load 315(pos) + 442: 31(fvec3) VectorShuffle 440 440 0 1 2 + 443: 31(fvec3) FNegate 442 + Store 436(outViewVec) 443 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index b4dd8371ff..e231ed3e09 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -1,16 +1,16 @@ spv.debuginfo.hlsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 966 +// Id's are bound by 970 Capability Shader Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 6 "main" 961 + EntryPoint GLCompute 6 "main" 965 ExecutionMode 6 LocalSize 10 10 1 - 1: String "" + 2: String "" 9: String "float" 12: String "uint" 32: String "springForce" @@ -23,39 +23,39 @@ spv.debuginfo.hlsl.comp // OpModuleProcessed hlsl-offsets #line 1 " - 44: String "p0" + 42: String "p0" 48: String "p1" 52: String "restDist" 63: String "@main" - 69: String "id" - 77: String "dist" - 89: String "int" - 95: String "sphereRadius" - 106: String "gravity" - 111: String "particleCount" - 114: String "UBO" - 117: String "params" - 121: String "ubo" - 149: String "index" - 173: String "bool" - 187: String "normal" - 194: String "pinned" - 198: String "Particle" - 203: String "@data" - 207: String "particleIn" - 229: String "particleOut" - 256: String "force" - 269: String "pos" - 279: String "vel" - 563: String "f" - 612: String "sphereDist" - 664: String "calculateNormals" - 668: String "PushConstants" - 671: String "pushConstants" - 674: String "$Global" - 713: String "a" - 726: String "b" - 743: String "c" + 67: String "id" + 73: String "dist" + 87: String "int" + 93: String "sphereRadius" + 104: String "gravity" + 109: String "particleCount" + 112: String "UBO" + 115: String "params" + 119: String "ubo" + 146: String "index" + 172: String "bool" + 184: String "normal" + 191: String "pinned" + 195: String "Particle" + 201: String "@data" + 205: String "particleIn" + 226: String "particleOut" + 254: String "force" + 268: String "pos" + 278: String "vel" + 562: String "f" + 611: String "sphereDist" + 662: String "calculateNormals" + 666: String "PushConstants" + 670: String "pushConstants" + 673: String "$Global" + 711: String "a" + 725: String "b" + 742: String "c" Name 6 "main" Name 30 "springForce(vf3;vf3;f1;" Name 27 "p0" @@ -63,113 +63,113 @@ spv.debuginfo.hlsl.comp Name 29 "restDist" Name 61 "@main(vu3;" Name 60 "id" - Name 75 "dist" - Name 93 "UBO" - MemberName 93(UBO) 0 "deltaT" - MemberName 93(UBO) 1 "particleMass" - MemberName 93(UBO) 2 "springStiffness" - MemberName 93(UBO) 3 "damping" - MemberName 93(UBO) 4 "restDistH" - MemberName 93(UBO) 5 "restDistV" - MemberName 93(UBO) 6 "restDistD" - MemberName 93(UBO) 7 "sphereRadius" - MemberName 93(UBO) 8 "spherePos" - MemberName 93(UBO) 9 "gravity" - MemberName 93(UBO) 10 "particleCount" - Name 115 "ubo" - MemberName 115(ubo) 0 "params" - Name 124 "" - Name 147 "index" - Name 185 "Particle" - MemberName 185(Particle) 0 "pos" - MemberName 185(Particle) 1 "vel" - MemberName 185(Particle) 2 "uv" - MemberName 185(Particle) 3 "normal" - MemberName 185(Particle) 4 "pinned" - Name 201 "particleIn" - MemberName 201(particleIn) 0 "@data" - Name 210 "particleIn" - Name 225 "particleOut" - MemberName 225(particleOut) 0 "@data" - Name 232 "particleOut" - Name 254 "force" - Name 267 "pos" - Name 277 "vel" - Name 297 "param" - Name 301 "param" - Name 303 "param" - Name 326 "param" - Name 330 "param" - Name 332 "param" - Name 359 "param" - Name 363 "param" - Name 365 "param" - Name 387 "param" - Name 391 "param" - Name 393 "param" - Name 425 "param" - Name 429 "param" - Name 431 "param" - Name 458 "param" - Name 462 "param" - Name 464 "param" - Name 499 "param" - Name 503 "param" - Name 505 "param" - Name 536 "param" - Name 540 "param" - Name 542 "param" - Name 561 "f" - Name 610 "sphereDist" - Name 662 "PushConstants" - MemberName 662(PushConstants) 0 "calculateNormals" - Name 669 "$Global" - MemberName 669($Global) 0 "pushConstants" - Name 677 "" - Name 689 "normal" - Name 711 "a" - Name 724 "b" - Name 741 "c" - Name 959 "id" - Name 961 "id" - Name 963 "param" - MemberDecorate 93(UBO) 0 Offset 0 - MemberDecorate 93(UBO) 1 Offset 4 - MemberDecorate 93(UBO) 2 Offset 8 - MemberDecorate 93(UBO) 3 Offset 12 - MemberDecorate 93(UBO) 4 Offset 16 - MemberDecorate 93(UBO) 5 Offset 20 - MemberDecorate 93(UBO) 6 Offset 24 - MemberDecorate 93(UBO) 7 Offset 28 - MemberDecorate 93(UBO) 8 Offset 32 - MemberDecorate 93(UBO) 9 Offset 48 - MemberDecorate 93(UBO) 10 Offset 64 - MemberDecorate 115(ubo) 0 Offset 0 - Decorate 115(ubo) Block - Decorate 124 DescriptorSet 0 - Decorate 124 Binding 2 - MemberDecorate 185(Particle) 0 Offset 0 - MemberDecorate 185(Particle) 1 Offset 16 - MemberDecorate 185(Particle) 2 Offset 32 - MemberDecorate 185(Particle) 3 Offset 48 - MemberDecorate 185(Particle) 4 Offset 64 - Decorate 199 ArrayStride 80 - MemberDecorate 201(particleIn) 0 NonWritable - MemberDecorate 201(particleIn) 0 Offset 0 - Decorate 201(particleIn) BufferBlock - Decorate 210(particleIn) DescriptorSet 0 - Decorate 210(particleIn) Binding 0 - Decorate 223 ArrayStride 80 - MemberDecorate 225(particleOut) 0 Offset 0 - Decorate 225(particleOut) BufferBlock - Decorate 232(particleOut) DescriptorSet 0 - Decorate 232(particleOut) Binding 1 - MemberDecorate 662(PushConstants) 0 Offset 0 - MemberDecorate 669($Global) 0 Offset 0 - Decorate 669($Global) Block - Decorate 677 DescriptorSet 0 - Decorate 677 Binding 3 - Decorate 961(id) BuiltIn GlobalInvocationId + Name 71 "dist" + Name 91 "UBO" + MemberName 91(UBO) 0 "deltaT" + MemberName 91(UBO) 1 "particleMass" + MemberName 91(UBO) 2 "springStiffness" + MemberName 91(UBO) 3 "damping" + MemberName 91(UBO) 4 "restDistH" + MemberName 91(UBO) 5 "restDistV" + MemberName 91(UBO) 6 "restDistD" + MemberName 91(UBO) 7 "sphereRadius" + MemberName 91(UBO) 8 "spherePos" + MemberName 91(UBO) 9 "gravity" + MemberName 91(UBO) 10 "particleCount" + Name 113 "ubo" + MemberName 113(ubo) 0 "params" + Name 122 "" + Name 144 "index" + Name 182 "Particle" + MemberName 182(Particle) 0 "pos" + MemberName 182(Particle) 1 "vel" + MemberName 182(Particle) 2 "uv" + MemberName 182(Particle) 3 "normal" + MemberName 182(Particle) 4 "pinned" + Name 199 "particleIn" + MemberName 199(particleIn) 0 "@data" + Name 208 "particleIn" + Name 222 "particleOut" + MemberName 222(particleOut) 0 "@data" + Name 230 "particleOut" + Name 252 "force" + Name 266 "pos" + Name 276 "vel" + Name 298 "param" + Name 302 "param" + Name 304 "param" + Name 327 "param" + Name 331 "param" + Name 333 "param" + Name 360 "param" + Name 364 "param" + Name 366 "param" + Name 388 "param" + Name 392 "param" + Name 394 "param" + Name 426 "param" + Name 430 "param" + Name 432 "param" + Name 459 "param" + Name 463 "param" + Name 465 "param" + Name 500 "param" + Name 504 "param" + Name 506 "param" + Name 537 "param" + Name 541 "param" + Name 543 "param" + Name 560 "f" + Name 609 "sphereDist" + Name 660 "PushConstants" + MemberName 660(PushConstants) 0 "calculateNormals" + Name 668 "$Global" + MemberName 668($Global) 0 "pushConstants" + Name 676 "" + Name 687 "normal" + Name 709 "a" + Name 723 "b" + Name 740 "c" + Name 963 "id" + Name 965 "id" + Name 967 "param" + MemberDecorate 91(UBO) 0 Offset 0 + MemberDecorate 91(UBO) 1 Offset 4 + MemberDecorate 91(UBO) 2 Offset 8 + MemberDecorate 91(UBO) 3 Offset 12 + MemberDecorate 91(UBO) 4 Offset 16 + MemberDecorate 91(UBO) 5 Offset 20 + MemberDecorate 91(UBO) 6 Offset 24 + MemberDecorate 91(UBO) 7 Offset 28 + MemberDecorate 91(UBO) 8 Offset 32 + MemberDecorate 91(UBO) 9 Offset 48 + MemberDecorate 91(UBO) 10 Offset 64 + MemberDecorate 113(ubo) 0 Offset 0 + Decorate 113(ubo) Block + Decorate 122 DescriptorSet 0 + Decorate 122 Binding 2 + MemberDecorate 182(Particle) 0 Offset 0 + MemberDecorate 182(Particle) 1 Offset 16 + MemberDecorate 182(Particle) 2 Offset 32 + MemberDecorate 182(Particle) 3 Offset 48 + MemberDecorate 182(Particle) 4 Offset 64 + Decorate 197 ArrayStride 80 + MemberDecorate 199(particleIn) 0 NonWritable + MemberDecorate 199(particleIn) 0 Offset 0 + Decorate 199(particleIn) BufferBlock + Decorate 208(particleIn) DescriptorSet 0 + Decorate 208(particleIn) Binding 0 + Decorate 220 ArrayStride 80 + MemberDecorate 222(particleOut) 0 Offset 0 + Decorate 222(particleOut) BufferBlock + Decorate 230(particleOut) DescriptorSet 0 + Decorate 230(particleOut) Binding 1 + MemberDecorate 660(PushConstants) 0 Offset 0 + MemberDecorate 668($Global) 0 Offset 0 + Decorate 668($Global) Block + Decorate 676 DescriptorSet 0 + Decorate 676 Binding 3 + Decorate 965(id) BuiltIn GlobalInvocationId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -177,1049 +177,1046 @@ spv.debuginfo.hlsl.comp 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 + 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 + 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 3 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 19: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 20: TypePointer Function 18(fvec3) 21: 11(int) Constant 7 - 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 21 16 + 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 21 16 23: TypePointer Function 8(float) - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 + 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 25: TypeFunction 18(fvec3) 20(ptr) 20(ptr) 23(ptr) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 10 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 35 + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 19 19 19 10 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 35 36: 11(int) Constant 75 38: 11(int) Constant 1 39: 11(int) Constant 4 40: 11(int) Constant 5 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 38 39 34 40 - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 32 26 34 36 16 37 32 17 36 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 19 34 36 16 33 39 38 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 38 39 34 40 + 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 32 26 34 36 16 37 32 17 36 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 19 34 36 16 33 39 38 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 49: 11(int) Constant 2 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 19 34 36 16 33 39 49 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 10 34 36 16 33 39 17 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 48 19 34 36 16 33 39 49 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 52 10 34 36 16 33 39 17 54: TypeVector 11(int) 3 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 56: TypePointer Function 54(ivec3) - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 55 21 16 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 55 21 16 58: TypeFunction 4 56(ptr) - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 55 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 55 65: 11(int) Constant 82 - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 63 59 34 65 16 37 63 17 65 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 69 55 34 65 16 64 39 38 + 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 63 59 34 65 16 37 63 17 65 + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 55 34 65 16 64 39 38 74: 11(int) Constant 76 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 19 34 74 16 33 39 - 83: 11(int) Constant 77 - 86: TypeVector 8(float) 4 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 39 - 88: TypeInt 32 1 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 89 14 39 16 - 91: TypeVector 88(int) 2 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 90 49 - 93(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 86(fvec4) 86(fvec4) 91(ivec2) - 96: 11(int) Constant 48 - 97: 11(int) Constant 20 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 95 10 34 96 97 16 16 17 - 107: 11(int) Constant 50 - 108: 11(int) Constant 16 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 87 34 107 108 16 16 17 - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 106 87 34 107 108 16 16 17 - 112: 11(int) Constant 51 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 111 92 34 112 97 16 16 17 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 114 38 34 83 16 37 114 16 17 94 98 99 100 101 102 103 104 105 109 110 - 115(ubo): TypeStruct 93(UBO) - 118: 11(int) Constant 56 - 119: 11(int) Constant 12 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 117 113 34 118 119 16 16 17 - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 121 38 34 83 16 37 121 16 17 116 - 122: TypePointer Uniform 115(ubo) - 123: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 120 49 16 - 124: 122(ptr) Variable Uniform - 126: 11(int) Constant 8 - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 120 34 83 16 37 1 124 126 - 127: 88(int) Constant 0 - 128: 88(int) Constant 2 - 129: TypePointer Uniform 8(float) - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 49 16 - 144: 11(int) Constant 83 - 145: TypePointer Function 11(int) - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 21 16 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 149 13 34 144 16 64 39 - 153: 88(int) Constant 10 - 154: TypePointer Uniform 88(int) - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 49 16 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 19 34 74 16 33 39 + 82: 11(int) Constant 77 + 84: TypeVector 8(float) 4 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 39 + 86: TypeInt 32 1 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 87 14 39 16 + 89: TypeVector 86(int) 2 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 88 49 + 91(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 84(fvec4) 84(fvec4) 89(ivec2) + 94: 11(int) Constant 48 + 95: 11(int) Constant 20 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 + 105: 11(int) Constant 50 + 106: 11(int) Constant 16 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 85 34 105 106 16 16 17 + 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 85 34 105 106 16 16 17 + 110: 11(int) Constant 51 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 90 34 110 95 16 16 17 + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 112 38 34 82 16 37 112 16 17 92 96 97 98 99 100 101 102 103 107 108 + 113(ubo): TypeStruct 91(UBO) + 116: 11(int) Constant 56 + 117: 11(int) Constant 12 + 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 115 111 34 116 117 16 16 17 + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 119 38 34 82 16 37 119 16 17 114 + 120: TypePointer Uniform 113(ubo) + 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 49 16 + 122: 120(ptr) Variable Uniform + 124: 11(int) Constant 8 + 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 118 34 82 16 37 2 122 124 + 125: 86(int) Constant 0 + 126: 86(int) Constant 2 + 127: TypePointer Uniform 8(float) + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 49 16 + 142: TypePointer Function 11(int) + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 21 16 + 147: 11(int) Constant 83 + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 13 34 147 16 64 39 + 152: 86(int) Constant 10 + 153: TypePointer Uniform 86(int) + 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 49 16 164: 11(int) Constant 84 - 172: TypeBool - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 173 14 49 16 - 180: 11(int) Constant 85 - 184: 11(int) Constant 88 - 185(Particle): TypeStruct 86(fvec4) 86(fvec4) 86(fvec4) 86(fvec4) 8(float) - 188: 11(int) Constant 30 - 189: 11(int) Constant 15 - 186: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 - 191: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 87 34 188 189 16 16 17 - 195: 11(int) Constant 31 - 196: 11(int) Constant 14 - 193: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 34 195 196 16 16 17 - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 198 38 34 184 16 37 198 16 17 186 190 191 192 193 - 199: TypeRuntimeArray 185(Particle) - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 197 16 - 201(particleIn): TypeStruct 199 - 204: 11(int) Constant 35 - 205: 11(int) Constant 28 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 203 200 34 204 205 16 16 17 - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 207 38 34 184 16 37 207 16 17 202 - 208: TypePointer Uniform 201(particleIn) - 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 206 49 16 - 210(particleIn): 208(ptr) Variable Uniform - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 207 206 34 184 16 37 207 210(particleIn) 126 - 213: 88(int) Constant 4 + 171: TypeBool + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 172 14 49 16 + 179: 11(int) Constant 85 + 182(Particle): TypeStruct 84(fvec4) 84(fvec4) 84(fvec4) 84(fvec4) 8(float) + 185: 11(int) Constant 30 + 186: 11(int) Constant 15 + 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 + 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 + 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 + 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 + 192: 11(int) Constant 31 + 193: 11(int) Constant 14 + 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 10 34 192 193 16 16 17 + 196: 11(int) Constant 88 + 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 195 38 34 196 16 37 195 16 17 183 187 188 189 190 + 197: TypeRuntimeArray 182(Particle) + 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 194 16 + 199(particleIn): TypeStruct 197 + 202: 11(int) Constant 35 + 203: 11(int) Constant 28 + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 201 198 34 202 203 16 16 17 + 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 205 38 34 196 16 37 205 16 17 200 + 206: TypePointer Uniform 199(particleIn) + 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 204 49 16 + 208(particleIn): 206(ptr) Variable Uniform + 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 205 204 34 196 16 37 205 208(particleIn) 124 + 213: 86(int) Constant 4 216: 8(float) Constant 1065353216 - 222: 11(int) Constant 89 - 223: TypeRuntimeArray 185(Particle) - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 197 16 -225(particleOut): TypeStruct 223 - 227: 11(int) Constant 37 - 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 203 224 34 227 188 16 16 17 - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 229 38 34 222 16 37 229 16 17 226 - 230: TypePointer Uniform 225(particleOut) - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 228 49 16 -232(particleOut): 230(ptr) Variable Uniform - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 229 228 34 222 16 37 229 232(particleOut) 126 - 236: TypePointer Uniform 86(fvec4) - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 87 49 16 - 242: 11(int) Constant 90 - 244: 88(int) Constant 1 + 220: TypeRuntimeArray 182(Particle) + 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 194 16 +222(particleOut): TypeStruct 220 + 224: 11(int) Constant 37 + 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 201 221 34 224 185 16 16 17 + 227: 11(int) Constant 89 + 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 226 38 34 227 16 37 226 16 17 223 + 228: TypePointer Uniform 222(particleOut) + 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 225 49 16 +230(particleOut): 228(ptr) Variable Uniform + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 226 225 34 227 16 37 226 230(particleOut) 124 + 236: TypePointer Uniform 84(fvec4) + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 85 49 16 + 243: 11(int) Constant 90 + 244: 86(int) Constant 1 245: 8(float) Constant 0 - 246: 86(fvec4) ConstantComposite 245 245 245 245 + 246: 84(fvec4) ConstantComposite 245 245 245 245 249: 11(int) Constant 91 - 253: 11(int) Constant 95 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 256 19 34 253 16 64 39 - 258: 88(int) Constant 9 - 266: 11(int) Constant 97 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 269 19 34 266 16 64 39 - 276: 11(int) Constant 98 - 278: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 279 19 34 276 16 64 39 - 286: 11(int) Constant 102 - 294: 11(int) Constant 103 - 311: 11(int) Constant 106 - 323: 11(int) Constant 107 - 340: 11(int) Constant 110 - 352: 11(int) Constant 111 - 358: 88(int) Constant 5 - 373: 11(int) Constant 114 - 381: 11(int) Constant 115 - 401: 11(int) Constant 118 - 417: 11(int) Constant 119 - 424: 88(int) Constant 6 - 439: 11(int) Constant 122 - 451: 11(int) Constant 123 - 472: 11(int) Constant 126 - 492: 11(int) Constant 127 - 513: 11(int) Constant 130 - 529: 11(int) Constant 131 - 550: 11(int) Constant 134 - 551: 88(int) Constant 3 - 560: 11(int) Constant 137 - 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 563 19 34 560 16 64 39 - 571: 11(int) Constant 138 - 579: 8(float) Constant 1056964608 - 595: 11(int) Constant 139 - 609: 11(int) Constant 142 - 611: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 612 19 34 609 16 64 39 - 618: 88(int) Constant 8 - 624: 11(int) Constant 143 - 627: 88(int) Constant 7 - 630: 8(float) Constant 1008981770 - 637: 11(int) Constant 145 - 656: 11(int) Constant 147 - 661: 11(int) Constant 151 -662(PushConstants): TypeStruct 11(int) - 665: 11(int) Constant 67 - 666: 11(int) Constant 23 - 663: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 664 13 34 665 666 16 16 17 - 667: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 668 38 34 661 16 37 668 16 17 663 - 669($Global): TypeStruct 662(PushConstants) - 672: 11(int) Constant 71 - 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 671 667 34 672 189 16 16 17 - 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 674 38 34 661 16 37 674 16 17 670 - 675: TypePointer Uniform 669($Global) - 676: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 673 49 16 - 677: 675(ptr) Variable Uniform - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 673 34 661 16 37 1 677 126 - 679: TypePointer Uniform 11(int) - 680: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 49 16 - 688: 11(int) Constant 152 - 690: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 187 19 34 688 16 64 39 - 692: 18(fvec3) ConstantComposite 245 245 245 - 694: 11(int) Constant 154 - 702: 11(int) Constant 155 - 710: 11(int) Constant 156 - 712: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 19 34 710 16 64 39 - 723: 11(int) Constant 157 - 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 726 19 34 723 16 64 39 - 740: 11(int) Constant 158 - 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 743 19 34 740 16 64 39 - 756: 11(int) Constant 159 - 768: 11(int) Constant 161 - 780: 11(int) Constant 162 - 792: 11(int) Constant 163 - 805: 11(int) Constant 164 - 814: 11(int) Constant 165 - 826: 11(int) Constant 168 - 838: 11(int) Constant 169 - 846: 11(int) Constant 170 - 858: 11(int) Constant 171 - 871: 11(int) Constant 172 - 880: 11(int) Constant 173 - 892: 11(int) Constant 175 - 904: 11(int) Constant 176 - 913: 11(int) Constant 177 - 926: 11(int) Constant 178 - 938: 11(int) Constant 179 - 950: 11(int) Constant 182 - 960: TypePointer Input 54(ivec3) - 961(id): 960(ptr) Variable Input - Line 1 82 1 + 255: 11(int) Constant 95 + 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 19 34 255 16 64 39 + 259: 86(int) Constant 9 + 269: 11(int) Constant 97 + 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 268 19 34 269 16 64 39 + 279: 11(int) Constant 98 + 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 19 34 279 16 64 39 + 288: 11(int) Constant 102 + 296: 11(int) Constant 103 + 313: 11(int) Constant 106 + 325: 11(int) Constant 107 + 342: 11(int) Constant 110 + 354: 11(int) Constant 111 + 359: 86(int) Constant 5 + 375: 11(int) Constant 114 + 383: 11(int) Constant 115 + 403: 11(int) Constant 118 + 419: 11(int) Constant 119 + 425: 86(int) Constant 6 + 441: 11(int) Constant 122 + 453: 11(int) Constant 123 + 474: 11(int) Constant 126 + 494: 11(int) Constant 127 + 515: 11(int) Constant 130 + 531: 11(int) Constant 131 + 549: 86(int) Constant 3 + 553: 11(int) Constant 134 + 563: 11(int) Constant 137 + 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 562 19 34 563 16 64 39 + 573: 11(int) Constant 138 + 580: 8(float) Constant 1056964608 + 597: 11(int) Constant 139 + 612: 11(int) Constant 142 + 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 611 19 34 612 16 64 39 + 619: 86(int) Constant 8 + 626: 11(int) Constant 143 + 628: 86(int) Constant 7 + 631: 8(float) Constant 1008981770 + 639: 11(int) Constant 145 + 658: 11(int) Constant 147 +660(PushConstants): TypeStruct 11(int) + 663: 11(int) Constant 67 + 664: 11(int) Constant 23 + 661: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 662 13 34 663 664 16 16 17 + 667: 11(int) Constant 151 + 665: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 666 38 34 667 16 37 666 16 17 661 + 668($Global): TypeStruct 660(PushConstants) + 671: 11(int) Constant 71 + 669: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 670 665 34 671 186 16 16 17 + 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 673 38 34 667 16 37 673 16 17 669 + 674: TypePointer Uniform 668($Global) + 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 672 49 16 + 676: 674(ptr) Variable Uniform + 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 672 34 667 16 37 2 676 124 + 678: TypePointer Uniform 11(int) + 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 49 16 + 689: 11(int) Constant 152 + 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 184 19 34 689 16 64 39 + 693: 18(fvec3) ConstantComposite 245 245 245 + 696: 11(int) Constant 154 + 704: 11(int) Constant 155 + 712: 11(int) Constant 156 + 710: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 711 19 34 712 16 64 39 + 726: 11(int) Constant 157 + 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 19 34 726 16 64 39 + 743: 11(int) Constant 158 + 741: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 742 19 34 743 16 64 39 + 758: 11(int) Constant 159 + 770: 11(int) Constant 161 + 782: 11(int) Constant 162 + 794: 11(int) Constant 163 + 807: 11(int) Constant 164 + 816: 11(int) Constant 165 + 829: 11(int) Constant 168 + 841: 11(int) Constant 169 + 849: 11(int) Constant 170 + 861: 11(int) Constant 171 + 874: 11(int) Constant 172 + 883: 11(int) Constant 173 + 895: 11(int) Constant 175 + 907: 11(int) Constant 176 + 916: 11(int) Constant 177 + 929: 11(int) Constant 178 + 941: 11(int) Constant 179 + 954: 11(int) Constant 182 + 964: TypePointer Input 54(ivec3) + 965(id): 964(ptr) Variable Input 6(main): 4 Function None 5 7: Label - 959(id): 56(ptr) Variable Function - 963(param): 56(ptr) Variable Function - Line 1 82 0 - 962: 54(ivec3) Load 961(id) - Store 959(id) 962 - 964: 54(ivec3) Load 959(id) - Store 963(param) 964 - 965: 4 FunctionCall 61(@main(vu3;) 963(param) + 963(id): 56(ptr) Variable Function + 967(param): 56(ptr) Variable Function + 966: 54(ivec3) Load 965(id) + Store 963(id) 966 + 968: 54(ivec3) Load 963(id) + Store 967(param) 968 + 969: 4 FunctionCall 61(@main(vu3;) 967(param) Return FunctionEnd - Line 1 75 1 30(springForce(vf3;vf3;f1;): 18(fvec3) Function None 25 27(p0): 20(ptr) FunctionParameter 28(p1): 20(ptr) FunctionParameter 29(restDist): 23(ptr) FunctionParameter 31: Label - 75(dist): 20(ptr) Variable Function - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 36 36 16 16 - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 27(p0) 46 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 28(p1) 46 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 29(restDist) 46 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 30(springForce(vf3;vf3;f1;) - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 74 74 16 16 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 75(dist) 46 - 79: 18(fvec3) Load 27(p0) - 80: 18(fvec3) Load 28(p1) - 81: 18(fvec3) FSub 79 80 - Store 75(dist) 81 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 83 83 16 16 - 84: 18(fvec3) Load 75(dist) - 85: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 84 - 131: 129(ptr) AccessChain 124 127 128 - 132: 8(float) Load 131 - 133: 18(fvec3) VectorTimesScalar 85 132 - 134: 18(fvec3) Load 75(dist) - 135: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 134 - 136: 8(float) Load 29(restDist) - 137: 8(float) FSub 135 136 - 138: 18(fvec3) VectorTimesScalar 133 137 - ReturnValue 138 + 71(dist): 20(ptr) Variable Function + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 36 36 16 16 + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 27(p0) 44 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 28(p1) 44 + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 29(restDist) 44 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 30(springForce(vf3;vf3;f1;) + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 74 74 16 16 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 71(dist) 44 + 77: 18(fvec3) Load 27(p0) + 78: 18(fvec3) Load 28(p1) + 79: 18(fvec3) FSub 77 78 + Store 71(dist) 79 + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 82 82 16 16 + 80: 18(fvec3) Load 71(dist) + 83: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 80 + 129: 127(ptr) AccessChain 122 125 126 + 130: 8(float) Load 129 + 131: 18(fvec3) VectorTimesScalar 83 130 + 132: 18(fvec3) Load 71(dist) + 133: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 132 + 134: 8(float) Load 29(restDist) + 135: 8(float) FSub 133 134 + 136: 18(fvec3) VectorTimesScalar 131 135 + ReturnValue 136 FunctionEnd - Line 1 82 1 61(@main(vu3;): 4 Function None 58 60(id): 56(ptr) FunctionParameter 62: Label - 147(index): 145(ptr) Variable Function - 254(force): 20(ptr) Variable Function - 267(pos): 20(ptr) Variable Function - 277(vel): 20(ptr) Variable Function - 297(param): 20(ptr) Variable Function - 301(param): 20(ptr) Variable Function - 303(param): 23(ptr) Variable Function - 326(param): 20(ptr) Variable Function - 330(param): 20(ptr) Variable Function - 332(param): 23(ptr) Variable Function - 359(param): 20(ptr) Variable Function - 363(param): 20(ptr) Variable Function - 365(param): 23(ptr) Variable Function - 387(param): 20(ptr) Variable Function - 391(param): 20(ptr) Variable Function - 393(param): 23(ptr) Variable Function - 425(param): 20(ptr) Variable Function - 429(param): 20(ptr) Variable Function - 431(param): 23(ptr) Variable Function - 458(param): 20(ptr) Variable Function - 462(param): 20(ptr) Variable Function - 464(param): 23(ptr) Variable Function - 499(param): 20(ptr) Variable Function - 503(param): 20(ptr) Variable Function - 505(param): 23(ptr) Variable Function - 536(param): 20(ptr) Variable Function - 540(param): 20(ptr) Variable Function - 542(param): 23(ptr) Variable Function - 561(f): 20(ptr) Variable Function - 610(sphereDist): 20(ptr) Variable Function - 689(normal): 20(ptr) Variable Function - 711(a): 20(ptr) Variable Function - 724(b): 20(ptr) Variable Function - 741(c): 20(ptr) Variable Function - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 65 65 16 16 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 60(id) 46 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 144 144 16 16 - 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 148 147(index) 46 - 151: 145(ptr) AccessChain 60(id) 38 - 152: 11(int) Load 151 - 156: 154(ptr) AccessChain 124 127 153 16 - 157: 88(int) Load 156 - 158: 11(int) Bitcast 157 - 159: 11(int) IMul 152 158 - 160: 145(ptr) AccessChain 60(id) 16 - 161: 11(int) Load 160 - 162: 11(int) IAdd 159 161 - Store 147(index) 162 - 163: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 164 164 16 16 - 165: 11(int) Load 147(index) - 166: 154(ptr) AccessChain 124 127 153 16 - 167: 88(int) Load 166 - 168: 154(ptr) AccessChain 124 127 153 38 - 169: 88(int) Load 168 - 170: 88(int) IMul 167 169 - 171: 11(int) Bitcast 170 - 175: 172(bool) UGreaterThan 165 171 - SelectionMerge 177 None - BranchConditional 175 176 177 - 176: Label - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 179: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 180 180 16 16 + 144(index): 142(ptr) Variable Function + 252(force): 20(ptr) Variable Function + 266(pos): 20(ptr) Variable Function + 276(vel): 20(ptr) Variable Function + 298(param): 20(ptr) Variable Function + 302(param): 20(ptr) Variable Function + 304(param): 23(ptr) Variable Function + 327(param): 20(ptr) Variable Function + 331(param): 20(ptr) Variable Function + 333(param): 23(ptr) Variable Function + 360(param): 20(ptr) Variable Function + 364(param): 20(ptr) Variable Function + 366(param): 23(ptr) Variable Function + 388(param): 20(ptr) Variable Function + 392(param): 20(ptr) Variable Function + 394(param): 23(ptr) Variable Function + 426(param): 20(ptr) Variable Function + 430(param): 20(ptr) Variable Function + 432(param): 23(ptr) Variable Function + 459(param): 20(ptr) Variable Function + 463(param): 20(ptr) Variable Function + 465(param): 23(ptr) Variable Function + 500(param): 20(ptr) Variable Function + 504(param): 20(ptr) Variable Function + 506(param): 23(ptr) Variable Function + 537(param): 20(ptr) Variable Function + 541(param): 20(ptr) Variable Function + 543(param): 23(ptr) Variable Function + 560(f): 20(ptr) Variable Function + 609(sphereDist): 20(ptr) Variable Function + 687(normal): 20(ptr) Variable Function + 709(a): 20(ptr) Variable Function + 723(b): 20(ptr) Variable Function + 740(c): 20(ptr) Variable Function + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 60(id) 44 + 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 65 65 16 16 + 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) + 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 147 147 16 16 + 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(index) 44 + 150: 142(ptr) AccessChain 60(id) 38 + 151: 11(int) Load 150 + 155: 153(ptr) AccessChain 122 125 152 16 + 156: 86(int) Load 155 + 157: 11(int) Bitcast 156 + 158: 11(int) IMul 151 157 + 159: 142(ptr) AccessChain 60(id) 16 + 160: 11(int) Load 159 + 161: 11(int) IAdd 158 160 + Store 144(index) 161 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 164 164 16 16 + 162: 11(int) Load 144(index) + 165: 153(ptr) AccessChain 122 125 152 16 + 166: 86(int) Load 165 + 167: 153(ptr) AccessChain 122 125 152 38 + 168: 86(int) Load 167 + 169: 86(int) IMul 166 168 + 170: 11(int) Bitcast 169 + 174: 171(bool) UGreaterThan 162 170 + SelectionMerge 176 None + BranchConditional 174 175 176 + 175: Label + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 179 179 16 16 Return - 177: Label - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 184 184 16 16 - 212: 11(int) Load 147(index) - 214: 129(ptr) AccessChain 210(particleIn) 127 212 213 + 176: Label + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 196 196 16 16 + 210: 11(int) Load 144(index) + 214: 127(ptr) AccessChain 208(particleIn) 125 210 213 215: 8(float) Load 214 - 217: 172(bool) FOrdEqual 215 216 + 217: 171(bool) FOrdEqual 215 216 SelectionMerge 219 None BranchConditional 217 218 219 218: Label - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 222 222 16 16 - 234: 11(int) Load 147(index) - 235: 11(int) Load 147(index) - 238: 236(ptr) AccessChain 232(particleOut) 127 235 127 - 239: 86(fvec4) Load 238 - 240: 236(ptr) AccessChain 232(particleOut) 127 234 127 + 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 227 227 16 16 + 232: 11(int) Load 144(index) + 235: 11(int) Load 144(index) + 238: 236(ptr) AccessChain 230(particleOut) 125 235 125 + 239: 84(fvec4) Load 238 + 240: 236(ptr) AccessChain 230(particleOut) 125 232 125 Store 240 239 - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 242 242 16 16 - 243: 11(int) Load 147(index) - 247: 236(ptr) AccessChain 232(particleOut) 127 243 244 + 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 243 243 16 16 + 241: 11(int) Load 144(index) + 247: 236(ptr) AccessChain 230(particleOut) 125 241 244 Store 247 246 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 249 249 16 16 + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 249 249 16 16 Return 219: Label - 251: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 253 253 16 16 - 257: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 255 254(force) 46 - 259: 236(ptr) AccessChain 124 127 258 - 260: 86(fvec4) Load 259 - 261: 18(fvec3) VectorShuffle 260 260 0 1 2 - 262: 129(ptr) AccessChain 124 127 244 - 263: 8(float) Load 262 - 264: 18(fvec3) VectorTimesScalar 261 263 - Store 254(force) 264 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 266 266 16 16 - 270: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 268 267(pos) 46 - 271: 11(int) Load 147(index) - 272: 236(ptr) AccessChain 210(particleIn) 127 271 127 - 273: 86(fvec4) Load 272 - 274: 18(fvec3) VectorShuffle 273 273 0 1 2 - Store 267(pos) 274 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 276 276 16 16 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 278 277(vel) 46 - 281: 11(int) Load 147(index) - 282: 236(ptr) AccessChain 210(particleIn) 127 281 244 - 283: 86(fvec4) Load 282 - 284: 18(fvec3) VectorShuffle 283 283 0 1 2 - Store 277(vel) 284 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 286 286 16 16 - 287: 145(ptr) AccessChain 60(id) 16 - 288: 11(int) Load 287 - 289: 172(bool) UGreaterThan 288 16 - SelectionMerge 291 None - BranchConditional 289 290 291 - 290: Label - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 294 294 16 16 - 295: 11(int) Load 147(index) - 296: 11(int) ISub 295 38 - 298: 236(ptr) AccessChain 210(particleIn) 127 296 127 - 299: 86(fvec4) Load 298 - 300: 18(fvec3) VectorShuffle 299 299 0 1 2 - Store 297(param) 300 - 302: 18(fvec3) Load 267(pos) - Store 301(param) 302 - 304: 129(ptr) AccessChain 124 127 213 - 305: 8(float) Load 304 - Store 303(param) 305 - 306: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 297(param) 301(param) 303(param) - 307: 18(fvec3) Load 254(force) - 308: 18(fvec3) FAdd 307 306 - Store 254(force) 308 - Branch 291 - 291: Label - 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 311 311 16 16 - 312: 145(ptr) AccessChain 60(id) 16 - 313: 11(int) Load 312 - 314: 154(ptr) AccessChain 124 127 153 16 - 315: 88(int) Load 314 - 316: 88(int) ISub 315 244 - 317: 11(int) Bitcast 316 - 318: 172(bool) ULessThan 313 317 - SelectionMerge 320 None - BranchConditional 318 319 320 - 319: Label - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 323 323 16 16 - 324: 11(int) Load 147(index) - 325: 11(int) IAdd 324 38 - 327: 236(ptr) AccessChain 210(particleIn) 127 325 127 - 328: 86(fvec4) Load 327 - 329: 18(fvec3) VectorShuffle 328 328 0 1 2 - Store 326(param) 329 - 331: 18(fvec3) Load 267(pos) - Store 330(param) 331 - 333: 129(ptr) AccessChain 124 127 213 - 334: 8(float) Load 333 - Store 332(param) 334 - 335: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 326(param) 330(param) 332(param) - 336: 18(fvec3) Load 254(force) - 337: 18(fvec3) FAdd 336 335 - Store 254(force) 337 - Branch 320 - 320: Label - 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 340 340 16 16 - 341: 145(ptr) AccessChain 60(id) 38 - 342: 11(int) Load 341 - 343: 154(ptr) AccessChain 124 127 153 38 - 344: 88(int) Load 343 - 345: 88(int) ISub 344 244 - 346: 11(int) Bitcast 345 - 347: 172(bool) ULessThan 342 346 - SelectionMerge 349 None - BranchConditional 347 348 349 - 348: Label - 350: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 351: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 352 352 16 16 - 353: 11(int) Load 147(index) - 354: 154(ptr) AccessChain 124 127 153 16 - 355: 88(int) Load 354 - 356: 11(int) Bitcast 355 - 357: 11(int) IAdd 353 356 - 360: 236(ptr) AccessChain 210(particleIn) 127 357 127 - 361: 86(fvec4) Load 360 - 362: 18(fvec3) VectorShuffle 361 361 0 1 2 - Store 359(param) 362 - 364: 18(fvec3) Load 267(pos) - Store 363(param) 364 - 366: 129(ptr) AccessChain 124 127 358 - 367: 8(float) Load 366 - Store 365(param) 367 - 368: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 359(param) 363(param) 365(param) - 369: 18(fvec3) Load 254(force) - 370: 18(fvec3) FAdd 369 368 - Store 254(force) 370 - Branch 349 - 349: Label - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 372: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 373 373 16 16 - 374: 145(ptr) AccessChain 60(id) 38 - 375: 11(int) Load 374 - 376: 172(bool) UGreaterThan 375 16 - SelectionMerge 378 None - BranchConditional 376 377 378 - 377: Label - 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 381 381 16 16 - 382: 11(int) Load 147(index) - 383: 154(ptr) AccessChain 124 127 153 16 - 384: 88(int) Load 383 - 385: 11(int) Bitcast 384 - 386: 11(int) ISub 382 385 - 388: 236(ptr) AccessChain 210(particleIn) 127 386 127 - 389: 86(fvec4) Load 388 - 390: 18(fvec3) VectorShuffle 389 389 0 1 2 - Store 387(param) 390 - 392: 18(fvec3) Load 267(pos) - Store 391(param) 392 - 394: 129(ptr) AccessChain 124 127 358 - 395: 8(float) Load 394 - Store 393(param) 395 - 396: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 387(param) 391(param) 393(param) - 397: 18(fvec3) Load 254(force) - 398: 18(fvec3) FAdd 397 396 - Store 254(force) 398 - Branch 378 - 378: Label - 399: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 400: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 401 401 16 16 - 402: 145(ptr) AccessChain 60(id) 16 - 403: 11(int) Load 402 - 404: 172(bool) UGreaterThan 403 16 - 405: 145(ptr) AccessChain 60(id) 38 - 406: 11(int) Load 405 - 407: 154(ptr) AccessChain 124 127 153 38 - 408: 88(int) Load 407 - 409: 88(int) ISub 408 244 - 410: 11(int) Bitcast 409 - 411: 172(bool) ULessThan 406 410 - 412: 172(bool) LogicalAnd 404 411 - SelectionMerge 414 None - BranchConditional 412 413 414 - 413: Label - 415: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 416: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 417 417 16 16 - 418: 11(int) Load 147(index) - 419: 154(ptr) AccessChain 124 127 153 16 - 420: 88(int) Load 419 - 421: 11(int) Bitcast 420 - 422: 11(int) IAdd 418 421 - 423: 11(int) ISub 422 38 - 426: 236(ptr) AccessChain 210(particleIn) 127 423 127 - 427: 86(fvec4) Load 426 - 428: 18(fvec3) VectorShuffle 427 427 0 1 2 - Store 425(param) 428 - 430: 18(fvec3) Load 267(pos) - Store 429(param) 430 - 432: 129(ptr) AccessChain 124 127 424 - 433: 8(float) Load 432 - Store 431(param) 433 - 434: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 425(param) 429(param) 431(param) - 435: 18(fvec3) Load 254(force) - 436: 18(fvec3) FAdd 435 434 - Store 254(force) 436 - Branch 414 - 414: Label - 437: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 439 439 16 16 - 440: 145(ptr) AccessChain 60(id) 16 - 441: 11(int) Load 440 - 442: 172(bool) UGreaterThan 441 16 - 443: 145(ptr) AccessChain 60(id) 38 - 444: 11(int) Load 443 - 445: 172(bool) UGreaterThan 444 16 - 446: 172(bool) LogicalAnd 442 445 - SelectionMerge 448 None - BranchConditional 446 447 448 - 447: Label - 449: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 451 451 16 16 - 452: 11(int) Load 147(index) - 453: 154(ptr) AccessChain 124 127 153 16 - 454: 88(int) Load 453 - 455: 11(int) Bitcast 454 - 456: 11(int) ISub 452 455 - 457: 11(int) ISub 456 38 - 459: 236(ptr) AccessChain 210(particleIn) 127 457 127 - 460: 86(fvec4) Load 459 - 461: 18(fvec3) VectorShuffle 460 460 0 1 2 - Store 458(param) 461 - 463: 18(fvec3) Load 267(pos) - Store 462(param) 463 - 465: 129(ptr) AccessChain 124 127 424 - 466: 8(float) Load 465 - Store 464(param) 466 - 467: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 458(param) 462(param) 464(param) - 468: 18(fvec3) Load 254(force) - 469: 18(fvec3) FAdd 468 467 - Store 254(force) 469 - Branch 448 - 448: Label - 470: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 472 472 16 16 - 473: 145(ptr) AccessChain 60(id) 16 - 474: 11(int) Load 473 - 475: 154(ptr) AccessChain 124 127 153 16 - 476: 88(int) Load 475 - 477: 88(int) ISub 476 244 - 478: 11(int) Bitcast 477 - 479: 172(bool) ULessThan 474 478 - 480: 145(ptr) AccessChain 60(id) 38 - 481: 11(int) Load 480 - 482: 154(ptr) AccessChain 124 127 153 38 - 483: 88(int) Load 482 - 484: 88(int) ISub 483 244 - 485: 11(int) Bitcast 484 - 486: 172(bool) ULessThan 481 485 - 487: 172(bool) LogicalAnd 479 486 - SelectionMerge 489 None - BranchConditional 487 488 489 - 488: Label - 490: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 491: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 492 492 16 16 - 493: 11(int) Load 147(index) - 494: 154(ptr) AccessChain 124 127 153 16 - 495: 88(int) Load 494 - 496: 11(int) Bitcast 495 - 497: 11(int) IAdd 493 496 - 498: 11(int) IAdd 497 38 - 500: 236(ptr) AccessChain 210(particleIn) 127 498 127 - 501: 86(fvec4) Load 500 - 502: 18(fvec3) VectorShuffle 501 501 0 1 2 - Store 499(param) 502 - 504: 18(fvec3) Load 267(pos) - Store 503(param) 504 - 506: 129(ptr) AccessChain 124 127 424 - 507: 8(float) Load 506 - Store 505(param) 507 - 508: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 499(param) 503(param) 505(param) - 509: 18(fvec3) Load 254(force) - 510: 18(fvec3) FAdd 509 508 - Store 254(force) 510 - Branch 489 - 489: Label - 511: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 513 513 16 16 - 514: 145(ptr) AccessChain 60(id) 16 - 515: 11(int) Load 514 - 516: 154(ptr) AccessChain 124 127 153 16 - 517: 88(int) Load 516 - 518: 88(int) ISub 517 244 - 519: 11(int) Bitcast 518 - 520: 172(bool) ULessThan 515 519 - 521: 145(ptr) AccessChain 60(id) 38 - 522: 11(int) Load 521 - 523: 172(bool) UGreaterThan 522 16 - 524: 172(bool) LogicalAnd 520 523 - SelectionMerge 526 None - BranchConditional 524 525 526 - 525: Label - 527: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 528: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 529 529 16 16 - 530: 11(int) Load 147(index) - 531: 154(ptr) AccessChain 124 127 153 16 - 532: 88(int) Load 531 - 533: 11(int) Bitcast 532 - 534: 11(int) ISub 530 533 - 535: 11(int) IAdd 534 38 - 537: 236(ptr) AccessChain 210(particleIn) 127 535 127 - 538: 86(fvec4) Load 537 - 539: 18(fvec3) VectorShuffle 538 538 0 1 2 - Store 536(param) 539 - 541: 18(fvec3) Load 267(pos) - Store 540(param) 541 - 543: 129(ptr) AccessChain 124 127 424 - 544: 8(float) Load 543 - Store 542(param) 544 - 545: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 536(param) 540(param) 542(param) - 546: 18(fvec3) Load 254(force) - 547: 18(fvec3) FAdd 546 545 - Store 254(force) 547 - Branch 526 - 526: Label - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 550 550 16 16 - 552: 129(ptr) AccessChain 124 127 551 - 553: 8(float) Load 552 - 554: 8(float) FNegate 553 - 555: 18(fvec3) Load 277(vel) - 556: 18(fvec3) VectorTimesScalar 555 554 - 557: 18(fvec3) Load 254(force) - 558: 18(fvec3) FAdd 557 556 - Store 254(force) 558 - 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 560 560 16 16 - 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 562 561(f) 46 - 565: 18(fvec3) Load 254(force) - 566: 129(ptr) AccessChain 124 127 244 - 567: 8(float) Load 566 - 568: 8(float) FDiv 216 567 - 569: 18(fvec3) VectorTimesScalar 565 568 - Store 561(f) 569 - 570: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 571 571 16 16 - 572: 11(int) Load 147(index) - 573: 18(fvec3) Load 267(pos) - 574: 18(fvec3) Load 277(vel) - 575: 129(ptr) AccessChain 124 127 127 - 576: 8(float) Load 575 - 577: 18(fvec3) VectorTimesScalar 574 576 - 578: 18(fvec3) FAdd 573 577 - 580: 18(fvec3) Load 561(f) - 581: 18(fvec3) VectorTimesScalar 580 579 - 582: 129(ptr) AccessChain 124 127 127 - 583: 8(float) Load 582 - 584: 18(fvec3) VectorTimesScalar 581 583 - 585: 129(ptr) AccessChain 124 127 127 - 586: 8(float) Load 585 - 587: 18(fvec3) VectorTimesScalar 584 586 - 588: 18(fvec3) FAdd 578 587 - 589: 8(float) CompositeExtract 588 0 - 590: 8(float) CompositeExtract 588 1 - 591: 8(float) CompositeExtract 588 2 - 592: 86(fvec4) CompositeConstruct 589 590 591 216 - 593: 236(ptr) AccessChain 232(particleOut) 127 572 127 - Store 593 592 - 594: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 595 595 16 16 - 596: 11(int) Load 147(index) - 597: 18(fvec3) Load 277(vel) - 598: 18(fvec3) Load 561(f) - 599: 129(ptr) AccessChain 124 127 127 - 600: 8(float) Load 599 - 601: 18(fvec3) VectorTimesScalar 598 600 - 602: 18(fvec3) FAdd 597 601 - 603: 8(float) CompositeExtract 602 0 - 604: 8(float) CompositeExtract 602 1 - 605: 8(float) CompositeExtract 602 2 - 606: 86(fvec4) CompositeConstruct 603 604 605 245 - 607: 236(ptr) AccessChain 232(particleOut) 127 596 244 - Store 607 606 - 608: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 609 609 16 16 - 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 611 610(sphereDist) 46 - 614: 11(int) Load 147(index) - 615: 236(ptr) AccessChain 232(particleOut) 127 614 127 - 616: 86(fvec4) Load 615 - 617: 18(fvec3) VectorShuffle 616 616 0 1 2 - 619: 236(ptr) AccessChain 124 127 618 - 620: 86(fvec4) Load 619 - 621: 18(fvec3) VectorShuffle 620 620 0 1 2 - 622: 18(fvec3) FSub 617 621 - Store 610(sphereDist) 622 - 623: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 624 624 16 16 - 625: 18(fvec3) Load 610(sphereDist) - 626: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 625 - 628: 129(ptr) AccessChain 124 127 627 - 629: 8(float) Load 628 - 631: 8(float) FAdd 629 630 - 632: 172(bool) FOrdLessThan 626 631 - SelectionMerge 634 None - BranchConditional 632 633 634 - 633: Label - 635: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 636: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 637 637 16 16 - 638: 11(int) Load 147(index) - 639: 236(ptr) AccessChain 124 127 618 - 640: 86(fvec4) Load 639 - 641: 18(fvec3) VectorShuffle 640 640 0 1 2 - 642: 18(fvec3) Load 610(sphereDist) - 643: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 642 - 644: 129(ptr) AccessChain 124 127 627 - 645: 8(float) Load 644 - 646: 8(float) FAdd 645 630 - 647: 18(fvec3) VectorTimesScalar 643 646 - 648: 18(fvec3) FAdd 641 647 - 649: 129(ptr) AccessChain 232(particleOut) 127 638 127 16 - 650: 8(float) CompositeExtract 648 0 - Store 649 650 - 651: 129(ptr) AccessChain 232(particleOut) 127 638 127 38 - 652: 8(float) CompositeExtract 648 1 - Store 651 652 - 653: 129(ptr) AccessChain 232(particleOut) 127 638 127 49 - 654: 8(float) CompositeExtract 648 2 - Store 653 654 - 655: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 656 656 16 16 - 657: 11(int) Load 147(index) - 658: 236(ptr) AccessChain 232(particleOut) 127 657 244 - Store 658 246 - Branch 634 - 634: Label - 659: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 660: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 661 661 16 16 - 681: 679(ptr) AccessChain 677 127 127 - 682: 11(int) Load 681 - 683: 172(bool) IEqual 682 38 - SelectionMerge 685 None - BranchConditional 683 684 685 - 684: Label - 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 687: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 688 688 16 16 - 691: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 690 689(normal) 46 - Store 689(normal) 692 - 693: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 694 694 16 16 - 695: 145(ptr) AccessChain 60(id) 38 - 696: 11(int) Load 695 - 697: 172(bool) UGreaterThan 696 16 - SelectionMerge 699 None - BranchConditional 697 698 699 - 698: Label - 700: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 701: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 702 702 16 16 - 703: 145(ptr) AccessChain 60(id) 16 - 704: 11(int) Load 703 - 705: 172(bool) UGreaterThan 704 16 - SelectionMerge 707 None - BranchConditional 705 706 707 - 706: Label - 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 709: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 710 710 16 16 - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(a) 46 - 715: 11(int) Load 147(index) - 716: 11(int) ISub 715 38 - 717: 236(ptr) AccessChain 210(particleIn) 127 716 127 - 718: 86(fvec4) Load 717 - 719: 18(fvec3) VectorShuffle 718 718 0 1 2 - 720: 18(fvec3) Load 267(pos) - 721: 18(fvec3) FSub 719 720 - Store 711(a) 721 - 722: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 723 723 16 16 - 727: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 725 724(b) 46 - 728: 11(int) Load 147(index) - 729: 154(ptr) AccessChain 124 127 153 16 - 730: 88(int) Load 729 - 731: 11(int) Bitcast 730 - 732: 11(int) ISub 728 731 - 733: 11(int) ISub 732 38 - 734: 236(ptr) AccessChain 210(particleIn) 127 733 127 - 735: 86(fvec4) Load 734 - 736: 18(fvec3) VectorShuffle 735 735 0 1 2 - 737: 18(fvec3) Load 267(pos) - 738: 18(fvec3) FSub 736 737 - Store 724(b) 738 - 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 740 740 16 16 - 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 742 741(c) 46 - 745: 11(int) Load 147(index) - 746: 154(ptr) AccessChain 124 127 153 16 - 747: 88(int) Load 746 - 748: 11(int) Bitcast 747 - 749: 11(int) ISub 745 748 - 750: 236(ptr) AccessChain 210(particleIn) 127 749 127 - 751: 86(fvec4) Load 750 - 752: 18(fvec3) VectorShuffle 751 751 0 1 2 - 753: 18(fvec3) Load 267(pos) - 754: 18(fvec3) FSub 752 753 - Store 741(c) 754 - 755: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 756 756 16 16 - 757: 18(fvec3) Load 711(a) - 758: 18(fvec3) Load 724(b) - 759: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 757 758 - 760: 18(fvec3) Load 724(b) - 761: 18(fvec3) Load 741(c) - 762: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 760 761 - 763: 18(fvec3) FAdd 759 762 - 764: 18(fvec3) Load 689(normal) - 765: 18(fvec3) FAdd 764 763 - Store 689(normal) 765 - Branch 707 - 707: Label - 766: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 768 768 16 16 - 769: 145(ptr) AccessChain 60(id) 16 - 770: 11(int) Load 769 - 771: 154(ptr) AccessChain 124 127 153 16 - 772: 88(int) Load 771 - 773: 88(int) ISub 772 244 - 774: 11(int) Bitcast 773 - 775: 172(bool) ULessThan 770 774 - SelectionMerge 777 None - BranchConditional 775 776 777 - 776: Label - 778: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 779: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 780 780 16 16 - 781: 11(int) Load 147(index) - 782: 154(ptr) AccessChain 124 127 153 16 - 783: 88(int) Load 782 - 784: 11(int) Bitcast 783 - 785: 11(int) ISub 781 784 - 786: 236(ptr) AccessChain 210(particleIn) 127 785 127 - 787: 86(fvec4) Load 786 - 788: 18(fvec3) VectorShuffle 787 787 0 1 2 - 789: 18(fvec3) Load 267(pos) - 790: 18(fvec3) FSub 788 789 - Store 711(a) 790 - 791: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 792 792 16 16 - 793: 11(int) Load 147(index) - 794: 154(ptr) AccessChain 124 127 153 16 - 795: 88(int) Load 794 - 796: 11(int) Bitcast 795 - 797: 11(int) ISub 793 796 - 798: 11(int) IAdd 797 38 - 799: 236(ptr) AccessChain 210(particleIn) 127 798 127 - 800: 86(fvec4) Load 799 - 801: 18(fvec3) VectorShuffle 800 800 0 1 2 - 802: 18(fvec3) Load 267(pos) - 803: 18(fvec3) FSub 801 802 - Store 724(b) 803 - 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 805 805 16 16 - 806: 11(int) Load 147(index) - 807: 11(int) IAdd 806 38 - 808: 236(ptr) AccessChain 210(particleIn) 127 807 127 - 809: 86(fvec4) Load 808 - 810: 18(fvec3) VectorShuffle 809 809 0 1 2 - 811: 18(fvec3) Load 267(pos) - 812: 18(fvec3) FSub 810 811 - Store 741(c) 812 - 813: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 814 814 16 16 - 815: 18(fvec3) Load 711(a) - 816: 18(fvec3) Load 724(b) - 817: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 815 816 - 818: 18(fvec3) Load 724(b) - 819: 18(fvec3) Load 741(c) - 820: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 818 819 - 821: 18(fvec3) FAdd 817 820 - 822: 18(fvec3) Load 689(normal) - 823: 18(fvec3) FAdd 822 821 - Store 689(normal) 823 - Branch 777 - 777: Label - Branch 699 - 699: Label - 824: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 825: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 826 826 16 16 - 827: 145(ptr) AccessChain 60(id) 38 - 828: 11(int) Load 827 - 829: 154(ptr) AccessChain 124 127 153 38 - 830: 88(int) Load 829 - 831: 88(int) ISub 830 244 - 832: 11(int) Bitcast 831 - 833: 172(bool) ULessThan 828 832 - SelectionMerge 835 None - BranchConditional 833 834 835 - 834: Label - 836: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 837: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 838 838 16 16 - 839: 145(ptr) AccessChain 60(id) 16 - 840: 11(int) Load 839 - 841: 172(bool) UGreaterThan 840 16 - SelectionMerge 843 None - BranchConditional 841 842 843 - 842: Label - 844: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 845: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 846 846 16 16 - 847: 11(int) Load 147(index) - 848: 154(ptr) AccessChain 124 127 153 16 - 849: 88(int) Load 848 - 850: 11(int) Bitcast 849 - 851: 11(int) IAdd 847 850 - 852: 236(ptr) AccessChain 210(particleIn) 127 851 127 - 853: 86(fvec4) Load 852 - 854: 18(fvec3) VectorShuffle 853 853 0 1 2 - 855: 18(fvec3) Load 267(pos) - 856: 18(fvec3) FSub 854 855 - Store 711(a) 856 - 857: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 858 858 16 16 - 859: 11(int) Load 147(index) - 860: 154(ptr) AccessChain 124 127 153 16 - 861: 88(int) Load 860 - 862: 11(int) Bitcast 861 - 863: 11(int) IAdd 859 862 - 864: 11(int) ISub 863 38 - 865: 236(ptr) AccessChain 210(particleIn) 127 864 127 - 866: 86(fvec4) Load 865 - 867: 18(fvec3) VectorShuffle 866 866 0 1 2 - 868: 18(fvec3) Load 267(pos) - 869: 18(fvec3) FSub 867 868 - Store 724(b) 869 - 870: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 871 871 16 16 - 872: 11(int) Load 147(index) - 873: 11(int) ISub 872 38 - 874: 236(ptr) AccessChain 210(particleIn) 127 873 127 - 875: 86(fvec4) Load 874 - 876: 18(fvec3) VectorShuffle 875 875 0 1 2 - 877: 18(fvec3) Load 267(pos) - 878: 18(fvec3) FSub 876 877 - Store 741(c) 878 - 879: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 880 880 16 16 - 881: 18(fvec3) Load 711(a) - 882: 18(fvec3) Load 724(b) - 883: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 881 882 - 884: 18(fvec3) Load 724(b) - 885: 18(fvec3) Load 741(c) - 886: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 884 885 - 887: 18(fvec3) FAdd 883 886 - 888: 18(fvec3) Load 689(normal) - 889: 18(fvec3) FAdd 888 887 - Store 689(normal) 889 - Branch 843 - 843: Label - 890: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 891: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 892 892 16 16 - 893: 145(ptr) AccessChain 60(id) 16 - 894: 11(int) Load 893 - 895: 154(ptr) AccessChain 124 127 153 16 - 896: 88(int) Load 895 - 897: 88(int) ISub 896 244 - 898: 11(int) Bitcast 897 - 899: 172(bool) ULessThan 894 898 - SelectionMerge 901 None - BranchConditional 899 900 901 - 900: Label - 902: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 903: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 904 904 16 16 - 905: 11(int) Load 147(index) - 906: 11(int) IAdd 905 38 - 907: 236(ptr) AccessChain 210(particleIn) 127 906 127 - 908: 86(fvec4) Load 907 - 909: 18(fvec3) VectorShuffle 908 908 0 1 2 - 910: 18(fvec3) Load 267(pos) - 911: 18(fvec3) FSub 909 910 - Store 711(a) 911 - 912: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 913 913 16 16 - 914: 11(int) Load 147(index) - 915: 154(ptr) AccessChain 124 127 153 16 - 916: 88(int) Load 915 - 917: 11(int) Bitcast 916 - 918: 11(int) IAdd 914 917 - 919: 11(int) IAdd 918 38 - 920: 236(ptr) AccessChain 210(particleIn) 127 919 127 - 921: 86(fvec4) Load 920 - 922: 18(fvec3) VectorShuffle 921 921 0 1 2 - 923: 18(fvec3) Load 267(pos) - 924: 18(fvec3) FSub 922 923 - Store 724(b) 924 - 925: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 926 926 16 16 - 927: 11(int) Load 147(index) - 928: 154(ptr) AccessChain 124 127 153 16 - 929: 88(int) Load 928 - 930: 11(int) Bitcast 929 - 931: 11(int) IAdd 927 930 - 932: 236(ptr) AccessChain 210(particleIn) 127 931 127 - 933: 86(fvec4) Load 932 - 934: 18(fvec3) VectorShuffle 933 933 0 1 2 - 935: 18(fvec3) Load 267(pos) - 936: 18(fvec3) FSub 934 935 - Store 741(c) 936 - 937: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 938 938 16 16 - 939: 18(fvec3) Load 711(a) - 940: 18(fvec3) Load 724(b) - 941: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 939 940 - 942: 18(fvec3) Load 724(b) - 943: 18(fvec3) Load 741(c) - 944: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 942 943 - 945: 18(fvec3) FAdd 941 944 - 946: 18(fvec3) Load 689(normal) - 947: 18(fvec3) FAdd 946 945 - Store 689(normal) 947 - Branch 901 - 901: Label - Branch 835 - 835: Label - 948: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 949: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 950 950 16 16 - 951: 11(int) Load 147(index) - 952: 18(fvec3) Load 689(normal) - 953: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 952 - 954: 8(float) CompositeExtract 953 0 - 955: 8(float) CompositeExtract 953 1 - 956: 8(float) CompositeExtract 953 2 - 957: 86(fvec4) CompositeConstruct 954 955 956 245 - 958: 236(ptr) AccessChain 232(particleOut) 127 951 551 - Store 958 957 - Branch 685 - 685: Label + 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 255 255 16 16 + 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(force) 44 + 260: 236(ptr) AccessChain 122 125 259 + 261: 84(fvec4) Load 260 + 262: 18(fvec3) VectorShuffle 261 261 0 1 2 + 263: 127(ptr) AccessChain 122 125 244 + 264: 8(float) Load 263 + 265: 18(fvec3) VectorTimesScalar 262 264 + Store 252(force) 265 + 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 269 269 16 16 + 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 267 266(pos) 44 + 272: 11(int) Load 144(index) + 273: 236(ptr) AccessChain 208(particleIn) 125 272 125 + 274: 84(fvec4) Load 273 + 275: 18(fvec3) VectorShuffle 274 274 0 1 2 + Store 266(pos) 275 + 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 279 279 16 16 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(vel) 44 + 282: 11(int) Load 144(index) + 283: 236(ptr) AccessChain 208(particleIn) 125 282 244 + 284: 84(fvec4) Load 283 + 285: 18(fvec3) VectorShuffle 284 284 0 1 2 + Store 276(vel) 285 + 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 288 288 16 16 + 286: 142(ptr) AccessChain 60(id) 16 + 289: 11(int) Load 286 + 290: 171(bool) UGreaterThan 289 16 + SelectionMerge 292 None + BranchConditional 290 291 292 + 291: Label + 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 296 296 16 16 + 293: 11(int) Load 144(index) + 297: 11(int) ISub 293 38 + 299: 236(ptr) AccessChain 208(particleIn) 125 297 125 + 300: 84(fvec4) Load 299 + 301: 18(fvec3) VectorShuffle 300 300 0 1 2 + Store 298(param) 301 + 303: 18(fvec3) Load 266(pos) + Store 302(param) 303 + 305: 127(ptr) AccessChain 122 125 213 + 306: 8(float) Load 305 + Store 304(param) 306 + 307: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 298(param) 302(param) 304(param) + 308: 18(fvec3) Load 252(force) + 309: 18(fvec3) FAdd 308 307 + Store 252(force) 309 + Branch 292 + 292: Label + 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 313 313 16 16 + 310: 142(ptr) AccessChain 60(id) 16 + 314: 11(int) Load 310 + 315: 153(ptr) AccessChain 122 125 152 16 + 316: 86(int) Load 315 + 317: 86(int) ISub 316 244 + 318: 11(int) Bitcast 317 + 319: 171(bool) ULessThan 314 318 + SelectionMerge 321 None + BranchConditional 319 320 321 + 320: Label + 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 325 325 16 16 + 322: 11(int) Load 144(index) + 326: 11(int) IAdd 322 38 + 328: 236(ptr) AccessChain 208(particleIn) 125 326 125 + 329: 84(fvec4) Load 328 + 330: 18(fvec3) VectorShuffle 329 329 0 1 2 + Store 327(param) 330 + 332: 18(fvec3) Load 266(pos) + Store 331(param) 332 + 334: 127(ptr) AccessChain 122 125 213 + 335: 8(float) Load 334 + Store 333(param) 335 + 336: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 327(param) 331(param) 333(param) + 337: 18(fvec3) Load 252(force) + 338: 18(fvec3) FAdd 337 336 + Store 252(force) 338 + Branch 321 + 321: Label + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 342 342 16 16 + 339: 142(ptr) AccessChain 60(id) 38 + 343: 11(int) Load 339 + 344: 153(ptr) AccessChain 122 125 152 38 + 345: 86(int) Load 344 + 346: 86(int) ISub 345 244 + 347: 11(int) Bitcast 346 + 348: 171(bool) ULessThan 343 347 + SelectionMerge 350 None + BranchConditional 348 349 350 + 349: Label + 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 354 354 16 16 + 351: 11(int) Load 144(index) + 355: 153(ptr) AccessChain 122 125 152 16 + 356: 86(int) Load 355 + 357: 11(int) Bitcast 356 + 358: 11(int) IAdd 351 357 + 361: 236(ptr) AccessChain 208(particleIn) 125 358 125 + 362: 84(fvec4) Load 361 + 363: 18(fvec3) VectorShuffle 362 362 0 1 2 + Store 360(param) 363 + 365: 18(fvec3) Load 266(pos) + Store 364(param) 365 + 367: 127(ptr) AccessChain 122 125 359 + 368: 8(float) Load 367 + Store 366(param) 368 + 369: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 360(param) 364(param) 366(param) + 370: 18(fvec3) Load 252(force) + 371: 18(fvec3) FAdd 370 369 + Store 252(force) 371 + Branch 350 + 350: Label + 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 375 375 16 16 + 372: 142(ptr) AccessChain 60(id) 38 + 376: 11(int) Load 372 + 377: 171(bool) UGreaterThan 376 16 + SelectionMerge 379 None + BranchConditional 377 378 379 + 378: Label + 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 383 383 16 16 + 380: 11(int) Load 144(index) + 384: 153(ptr) AccessChain 122 125 152 16 + 385: 86(int) Load 384 + 386: 11(int) Bitcast 385 + 387: 11(int) ISub 380 386 + 389: 236(ptr) AccessChain 208(particleIn) 125 387 125 + 390: 84(fvec4) Load 389 + 391: 18(fvec3) VectorShuffle 390 390 0 1 2 + Store 388(param) 391 + 393: 18(fvec3) Load 266(pos) + Store 392(param) 393 + 395: 127(ptr) AccessChain 122 125 359 + 396: 8(float) Load 395 + Store 394(param) 396 + 397: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 388(param) 392(param) 394(param) + 398: 18(fvec3) Load 252(force) + 399: 18(fvec3) FAdd 398 397 + Store 252(force) 399 + Branch 379 + 379: Label + 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 402: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 403 403 16 16 + 400: 142(ptr) AccessChain 60(id) 16 + 404: 11(int) Load 400 + 405: 171(bool) UGreaterThan 404 16 + 406: 142(ptr) AccessChain 60(id) 38 + 407: 11(int) Load 406 + 408: 153(ptr) AccessChain 122 125 152 38 + 409: 86(int) Load 408 + 410: 86(int) ISub 409 244 + 411: 11(int) Bitcast 410 + 412: 171(bool) ULessThan 407 411 + 413: 171(bool) LogicalAnd 405 412 + SelectionMerge 415 None + BranchConditional 413 414 415 + 414: Label + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 419 419 16 16 + 416: 11(int) Load 144(index) + 420: 153(ptr) AccessChain 122 125 152 16 + 421: 86(int) Load 420 + 422: 11(int) Bitcast 421 + 423: 11(int) IAdd 416 422 + 424: 11(int) ISub 423 38 + 427: 236(ptr) AccessChain 208(particleIn) 125 424 125 + 428: 84(fvec4) Load 427 + 429: 18(fvec3) VectorShuffle 428 428 0 1 2 + Store 426(param) 429 + 431: 18(fvec3) Load 266(pos) + Store 430(param) 431 + 433: 127(ptr) AccessChain 122 125 425 + 434: 8(float) Load 433 + Store 432(param) 434 + 435: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 426(param) 430(param) 432(param) + 436: 18(fvec3) Load 252(force) + 437: 18(fvec3) FAdd 436 435 + Store 252(force) 437 + Branch 415 + 415: Label + 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 441 441 16 16 + 438: 142(ptr) AccessChain 60(id) 16 + 442: 11(int) Load 438 + 443: 171(bool) UGreaterThan 442 16 + 444: 142(ptr) AccessChain 60(id) 38 + 445: 11(int) Load 444 + 446: 171(bool) UGreaterThan 445 16 + 447: 171(bool) LogicalAnd 443 446 + SelectionMerge 449 None + BranchConditional 447 448 449 + 448: Label + 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 453 453 16 16 + 450: 11(int) Load 144(index) + 454: 153(ptr) AccessChain 122 125 152 16 + 455: 86(int) Load 454 + 456: 11(int) Bitcast 455 + 457: 11(int) ISub 450 456 + 458: 11(int) ISub 457 38 + 460: 236(ptr) AccessChain 208(particleIn) 125 458 125 + 461: 84(fvec4) Load 460 + 462: 18(fvec3) VectorShuffle 461 461 0 1 2 + Store 459(param) 462 + 464: 18(fvec3) Load 266(pos) + Store 463(param) 464 + 466: 127(ptr) AccessChain 122 125 425 + 467: 8(float) Load 466 + Store 465(param) 467 + 468: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 459(param) 463(param) 465(param) + 469: 18(fvec3) Load 252(force) + 470: 18(fvec3) FAdd 469 468 + Store 252(force) 470 + Branch 449 + 449: Label + 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 474 474 16 16 + 471: 142(ptr) AccessChain 60(id) 16 + 475: 11(int) Load 471 + 476: 153(ptr) AccessChain 122 125 152 16 + 477: 86(int) Load 476 + 478: 86(int) ISub 477 244 + 479: 11(int) Bitcast 478 + 480: 171(bool) ULessThan 475 479 + 481: 142(ptr) AccessChain 60(id) 38 + 482: 11(int) Load 481 + 483: 153(ptr) AccessChain 122 125 152 38 + 484: 86(int) Load 483 + 485: 86(int) ISub 484 244 + 486: 11(int) Bitcast 485 + 487: 171(bool) ULessThan 482 486 + 488: 171(bool) LogicalAnd 480 487 + SelectionMerge 490 None + BranchConditional 488 489 490 + 489: Label + 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 493: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 494 494 16 16 + 491: 11(int) Load 144(index) + 495: 153(ptr) AccessChain 122 125 152 16 + 496: 86(int) Load 495 + 497: 11(int) Bitcast 496 + 498: 11(int) IAdd 491 497 + 499: 11(int) IAdd 498 38 + 501: 236(ptr) AccessChain 208(particleIn) 125 499 125 + 502: 84(fvec4) Load 501 + 503: 18(fvec3) VectorShuffle 502 502 0 1 2 + Store 500(param) 503 + 505: 18(fvec3) Load 266(pos) + Store 504(param) 505 + 507: 127(ptr) AccessChain 122 125 425 + 508: 8(float) Load 507 + Store 506(param) 508 + 509: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 500(param) 504(param) 506(param) + 510: 18(fvec3) Load 252(force) + 511: 18(fvec3) FAdd 510 509 + Store 252(force) 511 + Branch 490 + 490: Label + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 515 515 16 16 + 512: 142(ptr) AccessChain 60(id) 16 + 516: 11(int) Load 512 + 517: 153(ptr) AccessChain 122 125 152 16 + 518: 86(int) Load 517 + 519: 86(int) ISub 518 244 + 520: 11(int) Bitcast 519 + 521: 171(bool) ULessThan 516 520 + 522: 142(ptr) AccessChain 60(id) 38 + 523: 11(int) Load 522 + 524: 171(bool) UGreaterThan 523 16 + 525: 171(bool) LogicalAnd 521 524 + SelectionMerge 527 None + BranchConditional 525 526 527 + 526: Label + 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 530: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 531 531 16 16 + 528: 11(int) Load 144(index) + 532: 153(ptr) AccessChain 122 125 152 16 + 533: 86(int) Load 532 + 534: 11(int) Bitcast 533 + 535: 11(int) ISub 528 534 + 536: 11(int) IAdd 535 38 + 538: 236(ptr) AccessChain 208(particleIn) 125 536 125 + 539: 84(fvec4) Load 538 + 540: 18(fvec3) VectorShuffle 539 539 0 1 2 + Store 537(param) 540 + 542: 18(fvec3) Load 266(pos) + Store 541(param) 542 + 544: 127(ptr) AccessChain 122 125 425 + 545: 8(float) Load 544 + Store 543(param) 545 + 546: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 537(param) 541(param) 543(param) + 547: 18(fvec3) Load 252(force) + 548: 18(fvec3) FAdd 547 546 + Store 252(force) 548 + Branch 527 + 527: Label + 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 553 553 16 16 + 550: 127(ptr) AccessChain 122 125 549 + 554: 8(float) Load 550 + 555: 8(float) FNegate 554 + 556: 18(fvec3) Load 276(vel) + 557: 18(fvec3) VectorTimesScalar 556 555 + 558: 18(fvec3) Load 252(force) + 559: 18(fvec3) FAdd 558 557 + Store 252(force) 559 + 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 563 563 16 16 + 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 561 560(f) 44 + 566: 18(fvec3) Load 252(force) + 567: 127(ptr) AccessChain 122 125 244 + 568: 8(float) Load 567 + 569: 8(float) FDiv 216 568 + 570: 18(fvec3) VectorTimesScalar 566 569 + Store 560(f) 570 + 572: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 573 573 16 16 + 571: 11(int) Load 144(index) + 574: 18(fvec3) Load 266(pos) + 575: 18(fvec3) Load 276(vel) + 576: 127(ptr) AccessChain 122 125 125 + 577: 8(float) Load 576 + 578: 18(fvec3) VectorTimesScalar 575 577 + 579: 18(fvec3) FAdd 574 578 + 581: 18(fvec3) Load 560(f) + 582: 18(fvec3) VectorTimesScalar 581 580 + 583: 127(ptr) AccessChain 122 125 125 + 584: 8(float) Load 583 + 585: 18(fvec3) VectorTimesScalar 582 584 + 586: 127(ptr) AccessChain 122 125 125 + 587: 8(float) Load 586 + 588: 18(fvec3) VectorTimesScalar 585 587 + 589: 18(fvec3) FAdd 579 588 + 590: 8(float) CompositeExtract 589 0 + 591: 8(float) CompositeExtract 589 1 + 592: 8(float) CompositeExtract 589 2 + 593: 84(fvec4) CompositeConstruct 590 591 592 216 + 594: 236(ptr) AccessChain 230(particleOut) 125 571 125 + Store 594 593 + 596: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 597 597 16 16 + 595: 11(int) Load 144(index) + 598: 18(fvec3) Load 276(vel) + 599: 18(fvec3) Load 560(f) + 600: 127(ptr) AccessChain 122 125 125 + 601: 8(float) Load 600 + 602: 18(fvec3) VectorTimesScalar 599 601 + 603: 18(fvec3) FAdd 598 602 + 604: 8(float) CompositeExtract 603 0 + 605: 8(float) CompositeExtract 603 1 + 606: 8(float) CompositeExtract 603 2 + 607: 84(fvec4) CompositeConstruct 604 605 606 245 + 608: 236(ptr) AccessChain 230(particleOut) 125 595 244 + Store 608 607 + 614: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 612 612 16 16 + 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 610 609(sphereDist) 44 + 615: 11(int) Load 144(index) + 616: 236(ptr) AccessChain 230(particleOut) 125 615 125 + 617: 84(fvec4) Load 616 + 618: 18(fvec3) VectorShuffle 617 617 0 1 2 + 620: 236(ptr) AccessChain 122 125 619 + 621: 84(fvec4) Load 620 + 622: 18(fvec3) VectorShuffle 621 621 0 1 2 + 623: 18(fvec3) FSub 618 622 + Store 609(sphereDist) 623 + 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 626 626 16 16 + 624: 18(fvec3) Load 609(sphereDist) + 627: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 624 + 629: 127(ptr) AccessChain 122 125 628 + 630: 8(float) Load 629 + 632: 8(float) FAdd 630 631 + 633: 171(bool) FOrdLessThan 627 632 + SelectionMerge 635 None + BranchConditional 633 634 635 + 634: Label + 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 639 639 16 16 + 636: 11(int) Load 144(index) + 640: 236(ptr) AccessChain 122 125 619 + 641: 84(fvec4) Load 640 + 642: 18(fvec3) VectorShuffle 641 641 0 1 2 + 643: 18(fvec3) Load 609(sphereDist) + 644: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 643 + 645: 127(ptr) AccessChain 122 125 628 + 646: 8(float) Load 645 + 647: 8(float) FAdd 646 631 + 648: 18(fvec3) VectorTimesScalar 644 647 + 649: 18(fvec3) FAdd 642 648 + 650: 127(ptr) AccessChain 230(particleOut) 125 636 125 16 + 651: 8(float) CompositeExtract 649 0 + Store 650 651 + 652: 127(ptr) AccessChain 230(particleOut) 125 636 125 38 + 653: 8(float) CompositeExtract 649 1 + Store 652 653 + 654: 127(ptr) AccessChain 230(particleOut) 125 636 125 49 + 655: 8(float) CompositeExtract 649 2 + Store 654 655 + 657: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 658 658 16 16 + 656: 11(int) Load 144(index) + 659: 236(ptr) AccessChain 230(particleOut) 125 656 244 + Store 659 246 + Branch 635 + 635: Label + 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 682: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 667 667 16 16 + 680: 678(ptr) AccessChain 676 125 125 + 683: 11(int) Load 680 + 684: 171(bool) IEqual 683 38 + SelectionMerge 686 None + BranchConditional 684 685 686 + 685: Label + 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 692: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 689 689 16 16 + 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 688 687(normal) 44 + Store 687(normal) 693 + 695: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 696 696 16 16 + 694: 142(ptr) AccessChain 60(id) 38 + 697: 11(int) Load 694 + 698: 171(bool) UGreaterThan 697 16 + SelectionMerge 700 None + BranchConditional 698 699 700 + 699: Label + 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 703: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 704 704 16 16 + 701: 142(ptr) AccessChain 60(id) 16 + 705: 11(int) Load 701 + 706: 171(bool) UGreaterThan 705 16 + SelectionMerge 708 None + BranchConditional 706 707 708 + 707: Label + 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 712 712 16 16 + 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 710 709(a) 44 + 716: 11(int) Load 144(index) + 717: 11(int) ISub 716 38 + 718: 236(ptr) AccessChain 208(particleIn) 125 717 125 + 719: 84(fvec4) Load 718 + 720: 18(fvec3) VectorShuffle 719 719 0 1 2 + 721: 18(fvec3) Load 266(pos) + 722: 18(fvec3) FSub 720 721 + Store 709(a) 722 + 728: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 726 726 16 16 + 727: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(b) 44 + 729: 11(int) Load 144(index) + 730: 153(ptr) AccessChain 122 125 152 16 + 731: 86(int) Load 730 + 732: 11(int) Bitcast 731 + 733: 11(int) ISub 729 732 + 734: 11(int) ISub 733 38 + 735: 236(ptr) AccessChain 208(particleIn) 125 734 125 + 736: 84(fvec4) Load 735 + 737: 18(fvec3) VectorShuffle 736 736 0 1 2 + 738: 18(fvec3) Load 266(pos) + 739: 18(fvec3) FSub 737 738 + Store 723(b) 739 + 745: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 743 743 16 16 + 744: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 741 740(c) 44 + 746: 11(int) Load 144(index) + 747: 153(ptr) AccessChain 122 125 152 16 + 748: 86(int) Load 747 + 749: 11(int) Bitcast 748 + 750: 11(int) ISub 746 749 + 751: 236(ptr) AccessChain 208(particleIn) 125 750 125 + 752: 84(fvec4) Load 751 + 753: 18(fvec3) VectorShuffle 752 752 0 1 2 + 754: 18(fvec3) Load 266(pos) + 755: 18(fvec3) FSub 753 754 + Store 740(c) 755 + 757: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 758 758 16 16 + 756: 18(fvec3) Load 709(a) + 759: 18(fvec3) Load 723(b) + 760: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 756 759 + 761: 18(fvec3) Load 723(b) + 762: 18(fvec3) Load 740(c) + 763: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 761 762 + 764: 18(fvec3) FAdd 760 763 + 765: 18(fvec3) Load 687(normal) + 766: 18(fvec3) FAdd 765 764 + Store 687(normal) 766 + Branch 708 + 708: Label + 768: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 769: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 770 770 16 16 + 767: 142(ptr) AccessChain 60(id) 16 + 771: 11(int) Load 767 + 772: 153(ptr) AccessChain 122 125 152 16 + 773: 86(int) Load 772 + 774: 86(int) ISub 773 244 + 775: 11(int) Bitcast 774 + 776: 171(bool) ULessThan 771 775 + SelectionMerge 778 None + BranchConditional 776 777 778 + 777: Label + 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 782 782 16 16 + 779: 11(int) Load 144(index) + 783: 153(ptr) AccessChain 122 125 152 16 + 784: 86(int) Load 783 + 785: 11(int) Bitcast 784 + 786: 11(int) ISub 779 785 + 787: 236(ptr) AccessChain 208(particleIn) 125 786 125 + 788: 84(fvec4) Load 787 + 789: 18(fvec3) VectorShuffle 788 788 0 1 2 + 790: 18(fvec3) Load 266(pos) + 791: 18(fvec3) FSub 789 790 + Store 709(a) 791 + 793: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 794 794 16 16 + 792: 11(int) Load 144(index) + 795: 153(ptr) AccessChain 122 125 152 16 + 796: 86(int) Load 795 + 797: 11(int) Bitcast 796 + 798: 11(int) ISub 792 797 + 799: 11(int) IAdd 798 38 + 800: 236(ptr) AccessChain 208(particleIn) 125 799 125 + 801: 84(fvec4) Load 800 + 802: 18(fvec3) VectorShuffle 801 801 0 1 2 + 803: 18(fvec3) Load 266(pos) + 804: 18(fvec3) FSub 802 803 + Store 723(b) 804 + 806: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 807 807 16 16 + 805: 11(int) Load 144(index) + 808: 11(int) IAdd 805 38 + 809: 236(ptr) AccessChain 208(particleIn) 125 808 125 + 810: 84(fvec4) Load 809 + 811: 18(fvec3) VectorShuffle 810 810 0 1 2 + 812: 18(fvec3) Load 266(pos) + 813: 18(fvec3) FSub 811 812 + Store 740(c) 813 + 815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 816 816 16 16 + 814: 18(fvec3) Load 709(a) + 817: 18(fvec3) Load 723(b) + 818: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 814 817 + 819: 18(fvec3) Load 723(b) + 820: 18(fvec3) Load 740(c) + 821: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 819 820 + 822: 18(fvec3) FAdd 818 821 + 823: 18(fvec3) Load 687(normal) + 824: 18(fvec3) FAdd 823 822 + Store 687(normal) 824 + Branch 778 + 778: Label + 825: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + Branch 700 + 700: Label + 827: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 828: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 829 829 16 16 + 826: 142(ptr) AccessChain 60(id) 38 + 830: 11(int) Load 826 + 831: 153(ptr) AccessChain 122 125 152 38 + 832: 86(int) Load 831 + 833: 86(int) ISub 832 244 + 834: 11(int) Bitcast 833 + 835: 171(bool) ULessThan 830 834 + SelectionMerge 837 None + BranchConditional 835 836 837 + 836: Label + 839: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 840: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 841 841 16 16 + 838: 142(ptr) AccessChain 60(id) 16 + 842: 11(int) Load 838 + 843: 171(bool) UGreaterThan 842 16 + SelectionMerge 845 None + BranchConditional 843 844 845 + 844: Label + 847: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 848: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 849 849 16 16 + 846: 11(int) Load 144(index) + 850: 153(ptr) AccessChain 122 125 152 16 + 851: 86(int) Load 850 + 852: 11(int) Bitcast 851 + 853: 11(int) IAdd 846 852 + 854: 236(ptr) AccessChain 208(particleIn) 125 853 125 + 855: 84(fvec4) Load 854 + 856: 18(fvec3) VectorShuffle 855 855 0 1 2 + 857: 18(fvec3) Load 266(pos) + 858: 18(fvec3) FSub 856 857 + Store 709(a) 858 + 860: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 861 861 16 16 + 859: 11(int) Load 144(index) + 862: 153(ptr) AccessChain 122 125 152 16 + 863: 86(int) Load 862 + 864: 11(int) Bitcast 863 + 865: 11(int) IAdd 859 864 + 866: 11(int) ISub 865 38 + 867: 236(ptr) AccessChain 208(particleIn) 125 866 125 + 868: 84(fvec4) Load 867 + 869: 18(fvec3) VectorShuffle 868 868 0 1 2 + 870: 18(fvec3) Load 266(pos) + 871: 18(fvec3) FSub 869 870 + Store 723(b) 871 + 873: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 874 874 16 16 + 872: 11(int) Load 144(index) + 875: 11(int) ISub 872 38 + 876: 236(ptr) AccessChain 208(particleIn) 125 875 125 + 877: 84(fvec4) Load 876 + 878: 18(fvec3) VectorShuffle 877 877 0 1 2 + 879: 18(fvec3) Load 266(pos) + 880: 18(fvec3) FSub 878 879 + Store 740(c) 880 + 882: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 883 883 16 16 + 881: 18(fvec3) Load 709(a) + 884: 18(fvec3) Load 723(b) + 885: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 881 884 + 886: 18(fvec3) Load 723(b) + 887: 18(fvec3) Load 740(c) + 888: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 886 887 + 889: 18(fvec3) FAdd 885 888 + 890: 18(fvec3) Load 687(normal) + 891: 18(fvec3) FAdd 890 889 + Store 687(normal) 891 + Branch 845 + 845: Label + 893: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 894: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 895 895 16 16 + 892: 142(ptr) AccessChain 60(id) 16 + 896: 11(int) Load 892 + 897: 153(ptr) AccessChain 122 125 152 16 + 898: 86(int) Load 897 + 899: 86(int) ISub 898 244 + 900: 11(int) Bitcast 899 + 901: 171(bool) ULessThan 896 900 + SelectionMerge 903 None + BranchConditional 901 902 903 + 902: Label + 905: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 906: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 907 907 16 16 + 904: 11(int) Load 144(index) + 908: 11(int) IAdd 904 38 + 909: 236(ptr) AccessChain 208(particleIn) 125 908 125 + 910: 84(fvec4) Load 909 + 911: 18(fvec3) VectorShuffle 910 910 0 1 2 + 912: 18(fvec3) Load 266(pos) + 913: 18(fvec3) FSub 911 912 + Store 709(a) 913 + 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 916 916 16 16 + 914: 11(int) Load 144(index) + 917: 153(ptr) AccessChain 122 125 152 16 + 918: 86(int) Load 917 + 919: 11(int) Bitcast 918 + 920: 11(int) IAdd 914 919 + 921: 11(int) IAdd 920 38 + 922: 236(ptr) AccessChain 208(particleIn) 125 921 125 + 923: 84(fvec4) Load 922 + 924: 18(fvec3) VectorShuffle 923 923 0 1 2 + 925: 18(fvec3) Load 266(pos) + 926: 18(fvec3) FSub 924 925 + Store 723(b) 926 + 928: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 929 929 16 16 + 927: 11(int) Load 144(index) + 930: 153(ptr) AccessChain 122 125 152 16 + 931: 86(int) Load 930 + 932: 11(int) Bitcast 931 + 933: 11(int) IAdd 927 932 + 934: 236(ptr) AccessChain 208(particleIn) 125 933 125 + 935: 84(fvec4) Load 934 + 936: 18(fvec3) VectorShuffle 935 935 0 1 2 + 937: 18(fvec3) Load 266(pos) + 938: 18(fvec3) FSub 936 937 + Store 740(c) 938 + 940: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 941 941 16 16 + 939: 18(fvec3) Load 709(a) + 942: 18(fvec3) Load 723(b) + 943: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 939 942 + 944: 18(fvec3) Load 723(b) + 945: 18(fvec3) Load 740(c) + 946: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 944 945 + 947: 18(fvec3) FAdd 943 946 + 948: 18(fvec3) Load 687(normal) + 949: 18(fvec3) FAdd 948 947 + Store 687(normal) 949 + Branch 903 + 903: Label + 950: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + Branch 837 + 837: Label + 952: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 953: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 954 954 16 16 + 951: 11(int) Load 144(index) + 955: 18(fvec3) Load 687(normal) + 956: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 955 + 957: 8(float) CompositeExtract 956 0 + 958: 8(float) CompositeExtract 956 1 + 959: 8(float) CompositeExtract 956 2 + 960: 84(fvec4) CompositeConstruct 957 958 959 245 + 961: 236(ptr) AccessChain 230(particleOut) 125 951 549 + Store 961 960 + Branch 686 + 686: Label + 962: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index b76a7d7b5b..29ebf408c8 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -1,17 +1,17 @@ spv.debuginfo.hlsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 895 +// Id's are bound by 903 Capability Shader Capability ImageQuery Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 6 "main" 888 891 + EntryPoint Fragment 6 "main" 896 899 ExecutionMode 6 OriginUpperLeft - 1: String "" + 2: String "" 9: String "float" 12: String "uint" 38: String "textureProj" @@ -24,42 +24,42 @@ spv.debuginfo.hlsl.frag // OpModuleProcessed hlsl-offsets #line 1 " - 49: String "P" + 47: String "P" 53: String "layer" 56: String "offset" 64: String "filterPCF" - 70: String "sc" - 84: String "shadow" - 90: String "fragcolor" - 93: String "fragPos" - 100: String "@main" - 106: String "inUV" - 120: String "shadowCoord" - 145: String "bool" - 159: String "dist" - 163: String "type.2d.image" - 164: String "@type.2d.image" - 170: String "textureShadowMap" - 175: String "type.sampler" - 176: String "@type.sampler" - 181: String "samplerShadowMap" - 185: String "type.sampled.image" - 186: String "@type.sampled.image" - 231: String "sizeQueryTemp" - 236: String "int" - 244: String "texDim" - 260: String "elements" - 267: String "levels" - 276: String "scale" - 283: String "dx" - 295: String "dy" - 307: String "shadowFactor" - 313: String "count" - 320: String "range" - 327: String "x" - 348: String "y" - 411: String "i" - 430: String "shadowClip" + 68: String "sc" + 83: String "shadow" + 87: String "fragcolor" + 91: String "fragPos" + 98: String "@main" + 102: String "inUV" + 114: String "shadowCoord" + 141: String "bool" + 152: String "dist" + 159: String "type.2d.image" + 160: String "@type.2d.image" + 166: String "textureShadowMap" + 171: String "type.sampler" + 172: String "@type.sampler" + 177: String "samplerShadowMap" + 181: String "type.sampled.image" + 182: String "@type.sampled.image" + 227: String "sizeQueryTemp" + 234: String "int" + 242: String "texDim" + 258: String "elements" + 265: String "levels" + 272: String "scale" + 279: String "dx" + 291: String "dy" + 303: String "shadowFactor" + 309: String "count" + 316: String "range" + 323: String "x" + 343: String "y" + 409: String "i" + 427: String "shadowClip" 442: String "color" 448: String "viewMatrix" 452: String "Light" @@ -67,29 +67,29 @@ spv.debuginfo.hlsl.frag 461: String "displayDebugTarget" 466: String "UBO" 469: String "ubo" - 522: String "textureposition" - 527: String "samplerposition" - 539: String "normal" - 543: String "textureNormal" - 548: String "samplerNormal" - 558: String "albedo" - 562: String "textureAlbedo" - 567: String "samplerAlbedo" - 657: String "N" - 682: String "L" - 707: String "V" - 722: String "lightCosInnerAngle" - 729: String "lightCosOuterAngle" - 736: String "lightRange" - 743: String "dir" - 759: String "cosDir" - 768: String "spotEffect" - 778: String "heightAttenuation" - 787: String "NdotL" - 797: String "diff" - 805: String "R" - 815: String "NdotR" - 825: String "spec" + 523: String "textureposition" + 528: String "samplerposition" + 538: String "normal" + 544: String "textureNormal" + 549: String "samplerNormal" + 557: String "albedo" + 563: String "textureAlbedo" + 568: String "samplerAlbedo" + 662: String "N" + 686: String "L" + 712: String "V" + 727: String "lightCosInnerAngle" + 734: String "lightCosOuterAngle" + 741: String "lightRange" + 748: String "dir" + 764: String "cosDir" + 773: String "spotEffect" + 783: String "heightAttenuation" + 792: String "NdotL" + 802: String "diff" + 810: String "R" + 820: String "NdotR" + 830: String "spec" Name 6 "main" Name 36 "textureProj(vf4;f1;vf2;" Name 33 "P" @@ -98,33 +98,33 @@ spv.debuginfo.hlsl.frag Name 62 "filterPCF(vf4;f1;" Name 60 "sc" Name 61 "layer" - Name 82 "shadow(vf3;vf3;" - Name 80 "fragcolor" - Name 81 "fragPos" - Name 98 "@main(vf2;" - Name 97 "inUV" - Name 112 "shadow" - Name 118 "shadowCoord" - Name 157 "dist" - Name 168 "textureShadowMap" - Name 179 "samplerShadowMap" - Name 229 "sizeQueryTemp" - Name 242 "texDim" - Name 258 "elements" - Name 265 "levels" - Name 274 "scale" - Name 281 "dx" - Name 293 "dy" - Name 305 "shadowFactor" - Name 311 "count" - Name 318 "range" - Name 325 "x" - Name 346 "y" + Name 81 "shadow(vf3;vf3;" + Name 79 "fragcolor" + Name 80 "fragPos" + Name 96 "@main(vf2;" + Name 95 "inUV" + Name 106 "shadow" + Name 112 "shadowCoord" + Name 150 "dist" + Name 164 "textureShadowMap" + Name 175 "samplerShadowMap" + Name 225 "sizeQueryTemp" + Name 240 "texDim" + Name 256 "elements" + Name 263 "levels" + Name 270 "scale" + Name 277 "dx" + Name 289 "dy" + Name 301 "shadowFactor" + Name 307 "count" + Name 314 "range" + Name 321 "x" + Name 341 "y" + Name 374 "param" Name 376 "param" Name 378 "param" - Name 380 "param" - Name 409 "i" - Name 428 "shadowClip" + Name 407 "i" + Name 425 "shadowClip" Name 440 "Light" MemberName 440(Light) 0 "position" MemberName 440(Light) 1 "target" @@ -138,48 +138,48 @@ spv.debuginfo.hlsl.frag Name 467 "ubo" MemberName 467(ubo) 0 "ubo" Name 475 "" - Name 485 "shadowFactor" + Name 483 "shadowFactor" Name 490 "param" Name 492 "param" - Name 513 "fragPos" - Name 520 "textureposition" - Name 525 "samplerposition" - Name 537 "normal" - Name 541 "textureNormal" - Name 546 "samplerNormal" - Name 556 "albedo" - Name 560 "textureAlbedo" - Name 565 "samplerAlbedo" - Name 595 "fragcolor" - Name 599 "param" + Name 512 "fragPos" + Name 521 "textureposition" + Name 526 "samplerposition" + Name 536 "normal" + Name 542 "textureNormal" + Name 547 "samplerNormal" + Name 555 "albedo" + Name 561 "textureAlbedo" + Name 566 "samplerAlbedo" + Name 593 "fragcolor" Name 600 "param" - Name 655 "N" - Name 663 "i" - Name 680 "L" - Name 694 "dist" - Name 705 "V" - Name 720 "lightCosInnerAngle" - Name 727 "lightCosOuterAngle" - Name 734 "lightRange" - Name 741 "dir" - Name 757 "cosDir" - Name 766 "spotEffect" - Name 776 "heightAttenuation" - Name 785 "NdotL" - Name 795 "diff" - Name 803 "R" - Name 813 "NdotR" - Name 823 "spec" - Name 871 "param" - Name 873 "param" - Name 886 "inUV" - Name 888 "inUV" - Name 891 "@entryPointOutput" - Name 892 "param" - Decorate 168(textureShadowMap) DescriptorSet 0 - Decorate 168(textureShadowMap) Binding 5 - Decorate 179(samplerShadowMap) DescriptorSet 0 - Decorate 179(samplerShadowMap) Binding 5 + Name 601 "param" + Name 660 "N" + Name 668 "i" + Name 684 "L" + Name 699 "dist" + Name 710 "V" + Name 725 "lightCosInnerAngle" + Name 732 "lightCosOuterAngle" + Name 739 "lightRange" + Name 746 "dir" + Name 762 "cosDir" + Name 771 "spotEffect" + Name 781 "heightAttenuation" + Name 790 "NdotL" + Name 800 "diff" + Name 808 "R" + Name 818 "NdotR" + Name 828 "spec" + Name 875 "param" + Name 880 "param" + Name 894 "inUV" + Name 896 "inUV" + Name 899 "@entryPointOutput" + Name 900 "param" + Decorate 164(textureShadowMap) DescriptorSet 0 + Decorate 164(textureShadowMap) Binding 5 + Decorate 175(samplerShadowMap) DescriptorSet 0 + Decorate 175(samplerShadowMap) Binding 5 MemberDecorate 440(Light) 0 Offset 0 MemberDecorate 440(Light) 1 Offset 16 MemberDecorate 440(Light) 2 Offset 32 @@ -195,20 +195,20 @@ spv.debuginfo.hlsl.frag Decorate 467(ubo) Block Decorate 475 DescriptorSet 0 Decorate 475 Binding 4 - Decorate 520(textureposition) DescriptorSet 0 - Decorate 520(textureposition) Binding 1 - Decorate 525(samplerposition) DescriptorSet 0 - Decorate 525(samplerposition) Binding 1 - Decorate 541(textureNormal) DescriptorSet 0 - Decorate 541(textureNormal) Binding 2 - Decorate 546(samplerNormal) DescriptorSet 0 - Decorate 546(samplerNormal) Binding 2 - Decorate 560(textureAlbedo) DescriptorSet 0 - Decorate 560(textureAlbedo) Binding 3 - Decorate 565(samplerAlbedo) DescriptorSet 0 - Decorate 565(samplerAlbedo) Binding 3 - Decorate 888(inUV) Location 0 - Decorate 891(@entryPointOutput) Location 0 + Decorate 521(textureposition) DescriptorSet 0 + Decorate 521(textureposition) Binding 1 + Decorate 526(samplerposition) DescriptorSet 0 + Decorate 526(samplerposition) Binding 1 + Decorate 542(textureNormal) DescriptorSet 0 + Decorate 542(textureNormal) Binding 2 + Decorate 547(samplerNormal) DescriptorSet 0 + Decorate 547(samplerNormal) Binding 2 + Decorate 561(textureAlbedo) DescriptorSet 0 + Decorate 561(textureAlbedo) Binding 3 + Decorate 566(samplerAlbedo) DescriptorSet 0 + Decorate 566(samplerAlbedo) Binding 3 + Decorate 896(inUV) Location 0 + Decorate 899(@entryPointOutput) Location 0 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -216,937 +216,929 @@ spv.debuginfo.hlsl.frag 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 + 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 + 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 + 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) 22: 11(int) Constant 7 - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 + 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 24: TypePointer Function 8(float) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 26: TypeVector 8(float) 2 27: 11(int) Constant 2 - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 27 + 28: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 27 29: TypePointer Function 26(fvec2) - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 28 22 16 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 28 22 16 31: TypeFunction 8(float) 21(ptr) 24(ptr) 29(ptr) - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 28 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 41 + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 28 + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 41 42: 11(int) Constant 61 44: 11(int) Constant 1 45: 11(int) Constant 5 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 44 19 40 45 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 38 32 40 42 16 43 38 17 42 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 20 40 42 16 39 19 44 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 42 16 39 19 27 - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 28 40 42 16 39 19 17 + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 44 19 40 45 + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 38 32 40 42 16 43 38 17 42 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 20 40 42 16 39 19 44 + 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 42 16 39 19 27 + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 56 28 40 42 16 39 19 17 58: TypeFunction 8(float) 21(ptr) 24(ptr) - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 10 66: 11(int) Constant 78 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 40 66 16 43 64 17 66 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 20 40 66 16 65 19 44 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 66 16 65 19 27 - 74: TypeVector 8(float) 3 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 76: TypePointer Function 74(fvec3) - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 22 16 - 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 75 75 75 - 86: 11(int) Constant 101 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 40 86 16 43 84 17 86 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 40 86 16 85 19 44 - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 86 16 85 19 27 - 95: TypeFunction 18(fvec4) 29(ptr) - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 28 - 102: 11(int) Constant 119 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 100 96 40 102 16 43 100 17 102 - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 106 28 40 102 16 101 19 44 - 111: 11(int) Constant 62 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 10 40 111 16 39 19 - 115: 8(float) Constant 1065353216 - 117: 11(int) Constant 63 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 20 40 117 16 39 19 - 128: 11(int) Constant 64 - 131: 8(float) Constant 1056964608 - 140: 11(int) Constant 66 - 143: 8(float) Constant 3212836864 - 144: TypeBool - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 145 14 27 16 - 156: 11(int) Constant 68 - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 40 156 16 39 19 - 161: TypeImage 8(float) 2D array sampled format:Unknown - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 16 40 156 16 43 164 165 17 - 166: TypePointer UniformConstant 161 - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 162 16 16 -168(textureShadowMap): 166(ptr) Variable UniformConstant - 171: 11(int) Constant 8 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 170 162 40 156 16 43 170 168(textureShadowMap) 171 - 173: TypeSampler - 174: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 156 16 43 176 165 17 - 177: TypePointer UniformConstant 173 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 174 16 16 -179(samplerShadowMap): 177(ptr) Variable UniformConstant - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 181 174 40 156 16 43 181 179(samplerShadowMap) 171 - 183: TypeSampledImage 161 - 184: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 185 16 40 156 16 43 186 165 17 - 199: 11(int) Constant 69 - 202: 8(float) Constant 0 - 213: 11(int) Constant 71 - 214: 8(float) Constant 1048576000 - 217: 11(int) Constant 74 - 224: 11(int) Constant 80 - 225: TypeVector 11(int) 3 - 226: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 - 227: TypePointer Function 225(ivec3) - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 226 22 16 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 231 226 40 224 16 65 19 - 235: TypeInt 32 1 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 236 14 19 16 - 238: TypeVector 235(int) 2 - 239: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 237 27 - 240: TypePointer Function 238(ivec2) - 241: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 239 22 16 - 243: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 239 40 224 16 65 19 - 246: TypePointer Function 11(int) - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 - 251: TypePointer Function 235(int) - 252: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 22 16 - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 260 237 40 224 16 65 19 - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 267 237 40 224 16 65 19 + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 40 66 16 43 64 17 66 + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 68 20 40 66 16 65 19 44 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 66 16 65 19 27 + 73: TypeVector 8(float) 3 + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 75: TypePointer Function 73(fvec3) + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 74 22 16 + 77: TypeFunction 73(fvec3) 75(ptr) 75(ptr) + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 74 74 74 + 85: 11(int) Constant 101 + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 83 78 40 85 16 43 83 17 85 + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 40 85 16 84 19 44 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 74 40 85 16 84 19 27 + 93: TypeFunction 18(fvec4) 29(ptr) + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 28 + 100: 11(int) Constant 119 + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 98 94 40 100 16 43 98 17 100 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 28 40 100 16 99 19 44 + 108: 11(int) Constant 62 + 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 10 40 108 16 39 19 + 111: 8(float) Constant 1065353216 + 115: 11(int) Constant 63 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 20 40 115 16 39 19 + 125: 11(int) Constant 64 + 127: 8(float) Constant 1056964608 + 137: 11(int) Constant 66 + 139: 8(float) Constant 3212836864 + 140: TypeBool + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 141 14 27 16 + 153: 11(int) Constant 68 + 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 40 153 16 39 19 + 157: TypeImage 8(float) 2D array sampled format:Unknown + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 16 40 153 16 43 160 161 17 + 162: TypePointer UniformConstant 157 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 158 16 16 +164(textureShadowMap): 162(ptr) Variable UniformConstant + 167: 11(int) Constant 8 + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 166 158 40 153 16 43 166 164(textureShadowMap) 167 + 169: TypeSampler + 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 153 16 43 172 161 17 + 173: TypePointer UniformConstant 169 + 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 170 16 16 +175(samplerShadowMap): 173(ptr) Variable UniformConstant + 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 177 170 40 153 16 43 177 175(samplerShadowMap) 167 + 179: TypeSampledImage 157 + 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 181 16 40 153 16 43 182 161 17 + 196: 11(int) Constant 69 + 198: 8(float) Constant 0 + 207: 8(float) Constant 1048576000 + 210: 11(int) Constant 71 + 215: 11(int) Constant 74 + 221: TypeVector 11(int) 3 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 223: TypePointer Function 221(ivec3) + 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 222 22 16 + 228: 11(int) Constant 80 + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 227 222 40 228 16 65 19 + 233: TypeInt 32 1 + 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 234 14 19 16 + 236: TypeVector 233(int) 2 + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 235 27 + 238: TypePointer Function 236(ivec2) + 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 22 16 + 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 242 237 40 228 16 65 19 + 244: TypePointer Function 11(int) + 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 + 249: TypePointer Function 233(int) + 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 235 22 16 + 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 258 235 40 228 16 65 19 + 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 235 40 228 16 65 19 273: 11(int) Constant 81 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 276 10 40 273 16 65 19 - 278: 8(float) Constant 1069547520 + 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 10 40 273 16 65 19 + 276: 8(float) Constant 1069547520 280: 11(int) Constant 82 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 10 40 280 16 65 19 + 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 279 10 40 280 16 65 19 292: 11(int) Constant 83 - 294: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 295 10 40 292 16 65 19 + 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 291 10 40 292 16 65 19 304: 11(int) Constant 85 - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 10 40 304 16 65 19 + 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 10 40 304 16 65 19 310: 11(int) Constant 86 - 312: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 237 40 310 16 65 19 - 315: 235(int) Constant 0 + 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 309 235 40 310 16 65 19 + 313: 233(int) Constant 0 317: 11(int) Constant 87 - 319: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 320 237 40 317 16 65 19 - 322: 235(int) Constant 1 + 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 235 40 317 16 65 19 + 320: 233(int) Constant 1 324: 11(int) Constant 89 - 326: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 327 237 40 324 16 65 19 - 345: 11(int) Constant 91 - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 348 237 40 345 16 65 19 - 366: 11(int) Constant 93 - 385: 11(int) Constant 94 + 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 323 235 40 324 16 65 19 + 344: 11(int) Constant 91 + 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 343 235 40 344 16 65 19 + 365: 11(int) Constant 93 + 384: 11(int) Constant 94 398: 11(int) Constant 98 - 408: 11(int) Constant 102 - 410: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 411 237 40 408 16 85 19 - 423: 235(int) Constant 3 - 427: 11(int) Constant 104 - 429: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 430 20 40 427 16 85 19 + 410: 11(int) Constant 102 + 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 235 40 410 16 84 19 + 423: 233(int) Constant 3 + 428: 11(int) Constant 104 + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 427 20 40 428 16 84 19 437: TypeMatrix 18(fvec4) 4 - 439: 144(bool) ConstantTrue - 438: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 439 + 439: 140(bool) ConstantTrue + 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 439 440(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 437 443: 11(int) Constant 46 444: 11(int) Constant 14 - 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 - 445: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 - 446: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 445: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 449: 11(int) Constant 47 450: 11(int) Constant 21 - 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 448 438 40 449 450 16 16 17 - 451: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 452 44 40 427 16 43 452 16 17 441 445 446 447 + 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 448 438 40 449 450 16 16 17 + 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 452 44 40 428 16 43 452 16 17 441 445 446 447 453: TypeArray 440(Light) 17 - 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 451 17 - 455(UBO): TypeStruct 18(fvec4) 453 235(int) 235(int) - 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 + 454: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 451 17 + 455(UBO): TypeStruct 18(fvec4) 453 233(int) 233(int) + 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 459: 11(int) Constant 53 - 457: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 454 40 459 444 16 16 17 + 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 454 40 459 444 16 16 17 462: 11(int) Constant 55 463: 11(int) Constant 24 - 460: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 237 40 462 463 16 16 17 - 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 237 40 462 463 16 16 17 - 465: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 466 44 40 427 16 43 466 16 17 456 457 460 464 + 460: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 235 40 462 463 16 16 17 + 464: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 235 40 462 463 16 16 17 + 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 466 44 40 428 16 43 466 16 17 456 457 460 464 467(ubo): TypeStruct 455(UBO) 470: 11(int) Constant 58 471: 11(int) Constant 37 - 468: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 469 465 40 470 471 16 16 17 - 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 469 44 40 427 16 43 469 16 17 468 + 468: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 469 465 40 470 471 16 16 17 + 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 469 44 40 428 16 43 469 16 17 468 473: TypePointer Uniform 467(ubo) - 474: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 472 27 16 + 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 472 27 16 475: 473(ptr) Variable Uniform - 476: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 472 40 427 16 43 1 475 171 + 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 472 40 428 16 43 2 475 167 478: TypePointer Uniform 437 - 479: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 438 27 16 - 484: 11(int) Constant 108 - 486: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 307 10 40 484 16 85 19 - 495: 11(int) Constant 113 - 505: 11(int) Constant 115 - 512: 11(int) Constant 121 - 514: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 512 16 101 19 - 516: TypeImage 8(float) 2D sampled format:Unknown - 517: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 16 40 512 16 43 164 165 17 - 518: TypePointer UniformConstant 516 - 519: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 517 16 16 -520(textureposition): 518(ptr) Variable UniformConstant - 521: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 522 517 40 512 16 43 522 520(textureposition) 171 - 524: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 512 16 43 176 165 17 -525(samplerposition): 177(ptr) Variable UniformConstant - 526: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 527 524 40 512 16 43 527 525(samplerposition) 171 - 529: TypeSampledImage 516 - 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 185 16 40 512 16 43 186 165 17 - 536: 11(int) Constant 122 - 538: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 539 75 40 536 16 101 19 -541(textureNormal): 518(ptr) Variable UniformConstant - 542: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 543 517 40 536 16 43 543 541(textureNormal) 171 - 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 536 16 43 176 165 17 -546(samplerNormal): 177(ptr) Variable UniformConstant - 547: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 545 40 536 16 43 548 546(samplerNormal) 171 - 555: 11(int) Constant 123 - 557: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 558 20 40 555 16 101 19 -560(textureAlbedo): 518(ptr) Variable UniformConstant - 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 562 517 40 555 16 43 562 560(textureAlbedo) 171 - 564: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 44 40 555 16 43 176 165 17 -565(samplerAlbedo): 177(ptr) Variable UniformConstant - 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 567 564 40 555 16 43 567 565(samplerAlbedo) 171 - 573: 11(int) Constant 128 - 574: TypePointer Uniform 235(int) - 575: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 27 16 - 583: 11(int) Constant 129 - 594: 11(int) Constant 131 - 596: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 90 75 40 594 16 101 19 - 598: 74(fvec3) ConstantComposite 115 115 115 - 604: 11(int) Constant 132 - 608: 11(int) Constant 134 - 611: 11(int) Constant 135 - 615: 11(int) Constant 137 - 618: 11(int) Constant 138 - 622: 11(int) Constant 140 - 626: 11(int) Constant 141 - 630: 11(int) Constant 143 - 634: 11(int) Constant 144 - 639: 11(int) Constant 146 - 648: 11(int) Constant 150 - 651: 8(float) Constant 1036831949 - 654: 11(int) Constant 152 - 656: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 657 75 40 654 16 101 19 - 662: 11(int) Constant 154 - 664: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 411 237 40 662 16 101 19 - 679: 11(int) Constant 157 - 681: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 682 75 40 679 16 101 19 - 685: TypePointer Uniform 18(fvec4) - 686: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 27 16 - 693: 11(int) Constant 159 - 695: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 40 693 16 101 19 - 700: 11(int) Constant 160 - 704: 11(int) Constant 163 - 706: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 707 75 40 704 16 101 19 - 715: 11(int) Constant 164 - 719: 11(int) Constant 166 - 721: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 722 10 40 719 16 101 19 - 724: 8(float) Constant 1064781546 - 726: 11(int) Constant 167 - 728: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 729 10 40 726 16 101 19 - 731: 8(float) Constant 1063781322 - 733: 11(int) Constant 168 - 735: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 736 10 40 733 16 101 19 - 738: 8(float) Constant 1120403456 - 740: 11(int) Constant 171 - 742: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 743 75 40 740 16 101 19 - 756: 11(int) Constant 174 - 758: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 759 10 40 756 16 101 19 - 765: 11(int) Constant 175 - 767: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 768 10 40 765 16 101 19 - 775: 11(int) Constant 176 - 777: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 778 10 40 775 16 101 19 - 784: 11(int) Constant 179 - 786: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 10 40 784 16 101 19 - 794: 11(int) Constant 180 - 796: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 797 75 40 794 16 101 19 - 802: 11(int) Constant 183 - 804: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 805 75 40 802 16 101 19 - 812: 11(int) Constant 184 - 814: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 815 10 40 812 16 101 19 - 822: 11(int) Constant 185 - 824: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 825 75 40 822 16 101 19 - 828: 8(float) Constant 1098907648 - 833: 8(float) Constant 1075838976 - 837: 11(int) Constant 187 - 846: 235(int) Constant 2 - 862: 11(int) Constant 191 - 870: 11(int) Constant 193 - 878: 11(int) Constant 196 - 887: TypePointer Input 26(fvec2) - 888(inUV): 887(ptr) Variable Input - 890: TypePointer Output 18(fvec4) -891(@entryPointOutput): 890(ptr) Variable Output - Line 1 119 1 + 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 438 27 16 + 485: 11(int) Constant 108 + 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 10 40 485 16 84 19 + 496: 11(int) Constant 113 + 506: 11(int) Constant 115 + 514: 11(int) Constant 121 + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 74 40 514 16 99 19 + 517: TypeImage 8(float) 2D sampled format:Unknown + 518: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 16 40 514 16 43 160 161 17 + 519: TypePointer UniformConstant 517 + 520: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 518 16 16 +521(textureposition): 519(ptr) Variable UniformConstant + 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 523 518 40 514 16 43 523 521(textureposition) 167 + 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 514 16 43 172 161 17 +526(samplerposition): 173(ptr) Variable UniformConstant + 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 528 525 40 514 16 43 528 526(samplerposition) 167 + 530: TypeSampledImage 517 + 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 181 16 40 514 16 43 182 161 17 + 539: 11(int) Constant 122 + 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 538 74 40 539 16 99 19 +542(textureNormal): 519(ptr) Variable UniformConstant + 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 544 518 40 539 16 43 544 542(textureNormal) 167 + 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 539 16 43 172 161 17 +547(samplerNormal): 173(ptr) Variable UniformConstant + 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 549 546 40 539 16 43 549 547(samplerNormal) 167 + 558: 11(int) Constant 123 + 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 557 20 40 558 16 99 19 +561(textureAlbedo): 519(ptr) Variable UniformConstant + 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 563 518 40 558 16 43 563 561(textureAlbedo) 167 + 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 558 16 43 172 161 17 +566(samplerAlbedo): 173(ptr) Variable UniformConstant + 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 568 565 40 558 16 43 568 566(samplerAlbedo) 167 + 573: TypePointer Uniform 233(int) + 574: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 235 27 16 + 577: 11(int) Constant 128 + 585: 11(int) Constant 129 + 595: 11(int) Constant 131 + 594: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 40 595 16 99 19 + 599: 73(fvec3) ConstantComposite 111 111 111 + 605: 11(int) Constant 132 + 611: 11(int) Constant 134 + 613: 11(int) Constant 135 + 619: 11(int) Constant 137 + 621: 11(int) Constant 138 + 627: 11(int) Constant 140 + 630: 11(int) Constant 141 + 636: 11(int) Constant 143 + 639: 11(int) Constant 144 + 646: 11(int) Constant 146 + 656: 11(int) Constant 150 + 658: 8(float) Constant 1036831949 + 663: 11(int) Constant 152 + 661: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 662 74 40 663 16 99 19 + 670: 11(int) Constant 154 + 669: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 235 40 670 16 99 19 + 687: 11(int) Constant 157 + 685: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 686 74 40 687 16 99 19 + 692: TypePointer Uniform 18(fvec4) + 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 27 16 + 701: 11(int) Constant 159 + 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 40 701 16 99 19 + 708: 11(int) Constant 160 + 713: 11(int) Constant 163 + 711: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 74 40 713 16 99 19 + 723: 11(int) Constant 164 + 728: 11(int) Constant 166 + 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 10 40 728 16 99 19 + 731: 8(float) Constant 1064781546 + 735: 11(int) Constant 167 + 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 10 40 735 16 99 19 + 738: 8(float) Constant 1063781322 + 742: 11(int) Constant 168 + 740: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 741 10 40 742 16 99 19 + 745: 8(float) Constant 1120403456 + 749: 11(int) Constant 171 + 747: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 748 74 40 749 16 99 19 + 765: 11(int) Constant 174 + 763: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 764 10 40 765 16 99 19 + 774: 11(int) Constant 175 + 772: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 773 10 40 774 16 99 19 + 784: 11(int) Constant 176 + 782: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 783 10 40 784 16 99 19 + 793: 11(int) Constant 179 + 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 792 10 40 793 16 99 19 + 803: 11(int) Constant 180 + 801: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 802 74 40 803 16 99 19 + 811: 11(int) Constant 183 + 809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 810 74 40 811 16 99 19 + 821: 11(int) Constant 184 + 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 820 10 40 821 16 99 19 + 831: 11(int) Constant 185 + 829: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 830 74 40 831 16 99 19 + 835: 8(float) Constant 1098907648 + 840: 8(float) Constant 1075838976 + 845: 11(int) Constant 187 + 853: 233(int) Constant 2 + 870: 11(int) Constant 191 + 879: 11(int) Constant 193 + 886: 11(int) Constant 196 + 895: TypePointer Input 26(fvec2) + 896(inUV): 895(ptr) Variable Input + 898: TypePointer Output 18(fvec4) +899(@entryPointOutput): 898(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 886(inUV): 29(ptr) Variable Function - 892(param): 29(ptr) Variable Function - Line 1 119 0 - 889: 26(fvec2) Load 888(inUV) - Store 886(inUV) 889 - 893: 26(fvec2) Load 886(inUV) - Store 892(param) 893 - 894: 18(fvec4) FunctionCall 98(@main(vf2;) 892(param) - Store 891(@entryPointOutput) 894 + 894(inUV): 29(ptr) Variable Function + 900(param): 29(ptr) Variable Function + 897: 26(fvec2) Load 896(inUV) + Store 894(inUV) 897 + 901: 26(fvec2) Load 894(inUV) + Store 900(param) 901 + 902: 18(fvec4) FunctionCall 96(@main(vf2;) 900(param) + Store 899(@entryPointOutput) 902 Return FunctionEnd - Line 1 61 1 36(textureProj(vf4;f1;vf2;): 8(float) Function None 31 33(P): 21(ptr) FunctionParameter 34(layer): 24(ptr) FunctionParameter 35(offset): 29(ptr) FunctionParameter 37: Label - 112(shadow): 24(ptr) Variable Function -118(shadowCoord): 21(ptr) Variable Function - 157(dist): 24(ptr) Variable Function - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 42 42 16 16 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 48 33(P) 51 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 34(layer) 51 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 35(offset) 51 - 108: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(textureProj(vf4;f1;vf2;) - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 111 111 16 16 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(shadow) 51 - Store 112(shadow) 115 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 117 117 16 16 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(shadowCoord) 51 - 122: 18(fvec4) Load 33(P) - 123: 24(ptr) AccessChain 33(P) 17 - 124: 8(float) Load 123 - 125: 18(fvec4) CompositeConstruct 124 124 124 124 - 126: 18(fvec4) FDiv 122 125 - Store 118(shadowCoord) 126 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 128 128 16 16 - 129: 18(fvec4) Load 118(shadowCoord) - 130: 26(fvec2) VectorShuffle 129 129 0 1 - 132: 26(fvec2) VectorTimesScalar 130 131 - 133: 26(fvec2) CompositeConstruct 131 131 - 134: 26(fvec2) FAdd 132 133 - 135: 24(ptr) AccessChain 118(shadowCoord) 16 - 136: 8(float) CompositeExtract 134 0 - Store 135 136 - 137: 24(ptr) AccessChain 118(shadowCoord) 44 - 138: 8(float) CompositeExtract 134 1 - Store 137 138 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 140 140 16 16 - 141: 24(ptr) AccessChain 118(shadowCoord) 27 - 142: 8(float) Load 141 - 147: 144(bool) FOrdGreaterThan 142 143 - 148: 24(ptr) AccessChain 118(shadowCoord) 27 - 149: 8(float) Load 148 - 150: 144(bool) FOrdLessThan 149 115 - 151: 144(bool) LogicalAnd 147 150 - SelectionMerge 153 None - BranchConditional 151 152 153 - 152: Label - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 156 156 16 16 - 160: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(dist) 51 - 172: 161 Load 168(textureShadowMap) - 182: 173 Load 179(samplerShadowMap) - 187: 183 SampledImage 172 182 - 188: 18(fvec4) Load 118(shadowCoord) - 189: 26(fvec2) VectorShuffle 188 188 0 1 - 190: 26(fvec2) Load 35(offset) - 191: 26(fvec2) FAdd 189 190 - 192: 8(float) Load 34(layer) - 193: 8(float) CompositeExtract 191 0 - 194: 8(float) CompositeExtract 191 1 - 195: 74(fvec3) CompositeConstruct 193 194 192 - 196: 18(fvec4) ImageSampleImplicitLod 187 195 - 197: 8(float) CompositeExtract 196 0 - Store 157(dist) 197 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 199 199 16 16 - 200: 24(ptr) AccessChain 118(shadowCoord) 17 - 201: 8(float) Load 200 - 203: 144(bool) FOrdGreaterThan 201 202 - 204: 8(float) Load 157(dist) - 205: 24(ptr) AccessChain 118(shadowCoord) 27 - 206: 8(float) Load 205 - 207: 144(bool) FOrdLessThan 204 206 - 208: 144(bool) LogicalAnd 203 207 - SelectionMerge 210 None - BranchConditional 208 209 210 - 209: Label - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 213 213 16 16 - Store 112(shadow) 214 - Branch 210 - 210: Label - Branch 153 - 153: Label - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 216: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 217 217 16 16 - 218: 8(float) Load 112(shadow) - ReturnValue 218 + 106(shadow): 24(ptr) Variable Function +112(shadowCoord): 21(ptr) Variable Function + 150(dist): 24(ptr) Variable Function + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 42 42 16 16 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 33(P) 49 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 34(layer) 49 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 35(offset) 49 + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(textureProj(vf4;f1;vf2;) + 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 108 108 16 16 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 107 106(shadow) 49 + Store 106(shadow) 111 + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 115 115 16 16 + 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(shadowCoord) 49 + 118: 18(fvec4) Load 33(P) + 119: 24(ptr) AccessChain 33(P) 17 + 120: 8(float) Load 119 + 121: 18(fvec4) CompositeConstruct 120 120 120 120 + 122: 18(fvec4) FDiv 118 121 + Store 112(shadowCoord) 122 + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 125 125 16 16 + 123: 18(fvec4) Load 112(shadowCoord) + 126: 26(fvec2) VectorShuffle 123 123 0 1 + 128: 26(fvec2) VectorTimesScalar 126 127 + 129: 26(fvec2) CompositeConstruct 127 127 + 130: 26(fvec2) FAdd 128 129 + 131: 24(ptr) AccessChain 112(shadowCoord) 16 + 132: 8(float) CompositeExtract 130 0 + Store 131 132 + 133: 24(ptr) AccessChain 112(shadowCoord) 44 + 134: 8(float) CompositeExtract 130 1 + Store 133 134 + 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 137 137 16 16 + 135: 24(ptr) AccessChain 112(shadowCoord) 27 + 138: 8(float) Load 135 + 143: 140(bool) FOrdGreaterThan 138 139 + 144: 24(ptr) AccessChain 112(shadowCoord) 27 + 145: 8(float) Load 144 + 146: 140(bool) FOrdLessThan 145 111 + 147: 140(bool) LogicalAnd 143 146 + SelectionMerge 149 None + BranchConditional 147 148 149 + 148: Label + 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 153 153 16 16 + 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 151 150(dist) 49 + 168: 157 Load 164(textureShadowMap) + 178: 169 Load 175(samplerShadowMap) + 183: 179 SampledImage 168 178 + 184: 18(fvec4) Load 112(shadowCoord) + 185: 26(fvec2) VectorShuffle 184 184 0 1 + 186: 26(fvec2) Load 35(offset) + 187: 26(fvec2) FAdd 185 186 + 188: 8(float) Load 34(layer) + 189: 8(float) CompositeExtract 187 0 + 190: 8(float) CompositeExtract 187 1 + 191: 73(fvec3) CompositeConstruct 189 190 188 + 192: 18(fvec4) ImageSampleImplicitLod 183 191 + 193: 8(float) CompositeExtract 192 0 + Store 150(dist) 193 + 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 196 196 16 16 + 194: 24(ptr) AccessChain 112(shadowCoord) 17 + 197: 8(float) Load 194 + 199: 140(bool) FOrdGreaterThan 197 198 + 200: 8(float) Load 150(dist) + 201: 24(ptr) AccessChain 112(shadowCoord) 27 + 202: 8(float) Load 201 + 203: 140(bool) FOrdLessThan 200 202 + 204: 140(bool) LogicalAnd 199 203 + SelectionMerge 206 None + BranchConditional 204 205 206 + 205: Label + 208: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 210 210 16 16 + Store 106(shadow) 207 + Branch 206 + 206: Label + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + Branch 149 + 149: Label + 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 215 215 16 16 + 212: 8(float) Load 106(shadow) + ReturnValue 212 FunctionEnd - Line 1 78 1 62(filterPCF(vf4;f1;): 8(float) Function None 58 60(sc): 21(ptr) FunctionParameter 61(layer): 24(ptr) FunctionParameter 63: Label -229(sizeQueryTemp): 227(ptr) Variable Function - 242(texDim): 240(ptr) Variable Function - 258(elements): 251(ptr) Variable Function - 265(levels): 251(ptr) Variable Function - 274(scale): 24(ptr) Variable Function - 281(dx): 24(ptr) Variable Function - 293(dy): 24(ptr) Variable Function -305(shadowFactor): 24(ptr) Variable Function - 311(count): 251(ptr) Variable Function - 318(range): 251(ptr) Variable Function - 325(x): 251(ptr) Variable Function - 346(y): 251(ptr) Variable Function - 376(param): 21(ptr) Variable Function - 378(param): 24(ptr) Variable Function - 380(param): 29(ptr) Variable Function - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 66 66 16 16 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 60(sc) 51 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 51 - 221: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 224 224 16 16 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 230 229(sizeQueryTemp) 51 - 233: 161 Load 168(textureShadowMap) - 234: 225(ivec3) ImageQuerySizeLod 233 16 - Store 229(sizeQueryTemp) 234 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(texDim) 51 - 248: 246(ptr) AccessChain 229(sizeQueryTemp) 16 - 249: 11(int) Load 248 - 250: 235(int) Bitcast 249 - 253: 251(ptr) AccessChain 242(texDim) 16 - Store 253 250 - 254: 246(ptr) AccessChain 229(sizeQueryTemp) 44 - 255: 11(int) Load 254 - 256: 235(int) Bitcast 255 - 257: 251(ptr) AccessChain 242(texDim) 44 - Store 257 256 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 259 258(elements) 51 - 262: 246(ptr) AccessChain 229(sizeQueryTemp) 27 - 263: 11(int) Load 262 - 264: 235(int) Bitcast 263 - Store 258(elements) 264 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 266 265(levels) 51 - 269: 161 Load 168(textureShadowMap) - 270: 11(int) ImageQueryLevels 269 - 271: 235(int) Bitcast 270 - Store 265(levels) 271 - 272: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 273 273 16 16 - 277: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 275 274(scale) 51 - Store 274(scale) 278 - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 280 280 16 16 - 284: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 282 281(dx) 51 - 285: 8(float) Load 274(scale) - 286: 8(float) FMul 285 115 - 287: 251(ptr) AccessChain 242(texDim) 16 - 288: 235(int) Load 287 - 289: 8(float) ConvertSToF 288 - 290: 8(float) FDiv 286 289 - Store 281(dx) 290 - 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 292 292 16 16 - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 294 293(dy) 51 - 297: 8(float) Load 274(scale) - 298: 8(float) FMul 297 115 - 299: 251(ptr) AccessChain 242(texDim) 44 - 300: 235(int) Load 299 - 301: 8(float) ConvertSToF 300 - 302: 8(float) FDiv 298 301 - Store 293(dy) 302 - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 304 304 16 16 - 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 306 305(shadowFactor) 51 - Store 305(shadowFactor) 202 - 309: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 310 310 16 16 - 314: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 312 311(count) 51 - Store 311(count) 315 - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 317 317 16 16 - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 319 318(range) 51 - Store 318(range) 322 - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 326 325(x) 51 - 329: 235(int) Load 318(range) - 330: 235(int) SNegate 329 - Store 325(x) 330 - Branch 331 - 331: Label - 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - LoopMerge 333 334 None - Branch 337 - 337: Label - 338: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - 340: 235(int) Load 325(x) - 341: 235(int) Load 318(range) - 342: 144(bool) SLessThanEqual 340 341 - BranchConditional 342 332 333 - 332: Label - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 344: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 - 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 347 346(y) 51 - 350: 235(int) Load 318(range) - 351: 235(int) SNegate 350 - Store 346(y) 351 - Branch 352 - 352: Label - 356: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 - LoopMerge 354 355 None - Branch 358 - 358: Label - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 360: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 - 361: 235(int) Load 346(y) - 362: 235(int) Load 318(range) - 363: 144(bool) SLessThanEqual 361 362 - BranchConditional 363 353 354 - 353: Label - 364: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 365: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 366 366 16 16 - 367: 8(float) Load 281(dx) - 368: 235(int) Load 325(x) - 369: 8(float) ConvertSToF 368 - 370: 8(float) FMul 367 369 - 371: 8(float) Load 293(dy) - 372: 235(int) Load 346(y) - 373: 8(float) ConvertSToF 372 - 374: 8(float) FMul 371 373 - 375: 26(fvec2) CompositeConstruct 370 374 - 377: 18(fvec4) Load 60(sc) +225(sizeQueryTemp): 223(ptr) Variable Function + 240(texDim): 238(ptr) Variable Function + 256(elements): 249(ptr) Variable Function + 263(levels): 249(ptr) Variable Function + 270(scale): 24(ptr) Variable Function + 277(dx): 24(ptr) Variable Function + 289(dy): 24(ptr) Variable Function +301(shadowFactor): 24(ptr) Variable Function + 307(count): 249(ptr) Variable Function + 314(range): 249(ptr) Variable Function + 321(x): 249(ptr) Variable Function + 341(y): 249(ptr) Variable Function + 374(param): 21(ptr) Variable Function + 376(param): 24(ptr) Variable Function + 378(param): 29(ptr) Variable Function + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 61(layer) 49 + 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 66 66 16 16 + 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) + 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 228 228 16 16 + 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 226 225(sizeQueryTemp) 49 + 231: 157 Load 164(textureShadowMap) + 232: 221(ivec3) ImageQuerySizeLod 231 16 + Store 225(sizeQueryTemp) 232 + 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 241 240(texDim) 49 + 246: 244(ptr) AccessChain 225(sizeQueryTemp) 16 + 247: 11(int) Load 246 + 248: 233(int) Bitcast 247 + 251: 249(ptr) AccessChain 240(texDim) 16 + Store 251 248 + 252: 244(ptr) AccessChain 225(sizeQueryTemp) 44 + 253: 11(int) Load 252 + 254: 233(int) Bitcast 253 + 255: 249(ptr) AccessChain 240(texDim) 44 + Store 255 254 + 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 257 256(elements) 49 + 260: 244(ptr) AccessChain 225(sizeQueryTemp) 27 + 261: 11(int) Load 260 + 262: 233(int) Bitcast 261 + Store 256(elements) 262 + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 264 263(levels) 49 + 267: 157 Load 164(textureShadowMap) + 268: 11(int) ImageQueryLevels 267 + 269: 233(int) Bitcast 268 + Store 263(levels) 269 + 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 273 273 16 16 + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(scale) 49 + Store 270(scale) 276 + 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 280 280 16 16 + 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 278 277(dx) 49 + 283: 8(float) Load 270(scale) + 284: 8(float) FMul 283 111 + 285: 249(ptr) AccessChain 240(texDim) 16 + 286: 233(int) Load 285 + 287: 8(float) ConvertSToF 286 + 288: 8(float) FDiv 284 287 + Store 277(dx) 288 + 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 292 292 16 16 + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 290 289(dy) 49 + 295: 8(float) Load 270(scale) + 296: 8(float) FMul 295 111 + 297: 249(ptr) AccessChain 240(texDim) 44 + 298: 233(int) Load 297 + 299: 8(float) ConvertSToF 298 + 300: 8(float) FDiv 296 299 + Store 289(dy) 300 + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 304 304 16 16 + 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(shadowFactor) 49 + Store 301(shadowFactor) 198 + 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 310 310 16 16 + 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 308 307(count) 49 + Store 307(count) 313 + 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 317 317 16 16 + 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(range) 49 + Store 314(range) 320 + 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 322 321(x) 49 + 327: 233(int) Load 314(range) + 328: 233(int) SNegate 327 + Store 321(x) 328 + Branch 329 + 329: Label + 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + LoopMerge 331 332 None + Branch 335 + 335: Label + 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + 336: 233(int) Load 321(x) + 339: 233(int) Load 314(range) + 340: 140(bool) SLessThanEqual 336 339 + BranchConditional 340 330 331 + 330: Label + 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 + 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 342 341(y) 49 + 348: 233(int) Load 314(range) + 349: 233(int) SNegate 348 + Store 341(y) 349 + Branch 350 + 350: Label + 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 + LoopMerge 352 353 None + Branch 356 + 356: Label + 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 + 357: 233(int) Load 341(y) + 360: 233(int) Load 314(range) + 361: 140(bool) SLessThanEqual 357 360 + BranchConditional 361 351 352 + 351: Label + 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 364: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 365 365 16 16 + 362: 8(float) Load 277(dx) + 366: 233(int) Load 321(x) + 367: 8(float) ConvertSToF 366 + 368: 8(float) FMul 362 367 + 369: 8(float) Load 289(dy) + 370: 233(int) Load 341(y) + 371: 8(float) ConvertSToF 370 + 372: 8(float) FMul 369 371 + 373: 26(fvec2) CompositeConstruct 368 372 + 375: 18(fvec4) Load 60(sc) + Store 374(param) 375 + 377: 8(float) Load 61(layer) Store 376(param) 377 - 379: 8(float) Load 61(layer) - Store 378(param) 379 - Store 380(param) 375 - 381: 8(float) FunctionCall 36(textureProj(vf4;f1;vf2;) 376(param) 378(param) 380(param) - 382: 8(float) Load 305(shadowFactor) - 383: 8(float) FAdd 382 381 - Store 305(shadowFactor) 383 - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 385 385 16 16 - 386: 235(int) Load 311(count) - 387: 235(int) IAdd 386 322 - Store 311(count) 387 - Branch 355 - 355: Label - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 389: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 345 345 16 16 - 390: 235(int) Load 346(y) - 391: 235(int) IAdd 390 322 - Store 346(y) 391 - Branch 352 - 354: Label - Branch 334 - 334: Label - 392: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 393: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - 394: 235(int) Load 325(x) - 395: 235(int) IAdd 394 322 - Store 325(x) 395 - Branch 331 - 333: Label - 396: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 397: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 398 398 16 16 - 399: 8(float) Load 305(shadowFactor) - 400: 235(int) Load 311(count) - 401: 8(float) ConvertSToF 400 - 402: 8(float) FDiv 399 401 - ReturnValue 402 + Store 378(param) 373 + 379: 8(float) FunctionCall 36(textureProj(vf4;f1;vf2;) 374(param) 376(param) 378(param) + 380: 8(float) Load 301(shadowFactor) + 381: 8(float) FAdd 380 379 + Store 301(shadowFactor) 381 + 383: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 384 384 16 16 + 382: 233(int) Load 307(count) + 385: 233(int) IAdd 382 320 + Store 307(count) 385 + Branch 353 + 353: Label + 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 + 386: 233(int) Load 341(y) + 389: 233(int) IAdd 386 320 + Store 341(y) 389 + Branch 350 + 352: Label + 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + Branch 332 + 332: Label + 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 + 391: 233(int) Load 321(x) + 394: 233(int) IAdd 391 320 + Store 321(x) 394 + Branch 329 + 331: Label + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 397: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 398 398 16 16 + 395: 8(float) Load 301(shadowFactor) + 399: 233(int) Load 307(count) + 400: 8(float) ConvertSToF 399 + 401: 8(float) FDiv 395 400 + ReturnValue 401 FunctionEnd - Line 1 101 49 -82(shadow(vf3;vf3;): 74(fvec3) Function None 78 - 80(fragcolor): 76(ptr) FunctionParameter - 81(fragPos): 76(ptr) FunctionParameter - 83: Label - 409(i): 251(ptr) Variable Function - 428(shadowClip): 21(ptr) Variable Function -485(shadowFactor): 24(ptr) Variable Function +81(shadow(vf3;vf3;): 73(fvec3) Function None 77 + 79(fragcolor): 75(ptr) FunctionParameter + 80(fragPos): 75(ptr) FunctionParameter + 82: Label + 407(i): 249(ptr) Variable Function + 425(shadowClip): 21(ptr) Variable Function +483(shadowFactor): 24(ptr) Variable Function 490(param): 21(ptr) Variable Function 492(param): 24(ptr) Variable Function - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 86 86 16 16 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 80(fragcolor) 51 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragPos) 51 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 407: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 410 409(i) 51 - Store 409(i) 315 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 79(fragcolor) 49 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 80(fragPos) 49 + 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 85 85 16 16 + 405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 84 81(shadow(vf3;vf3;) + 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 + 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(i) 49 + Store 407(i) 313 Branch 413 413: Label - 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 LoopMerge 415 416 None Branch 419 419: Label - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 421: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 - 422: 235(int) Load 409(i) - 424: 144(bool) SLessThan 422 423 + 421: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 + 420: 233(int) Load 407(i) + 424: 140(bool) SLessThan 420 423 BranchConditional 424 414 415 414: Label - 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 427 427 16 16 - 431: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 429 428(shadowClip) 51 - 432: 74(fvec3) Load 81(fragPos) + 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 428 428 16 16 + 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 426 425(shadowClip) 49 + 432: 73(fvec3) Load 80(fragPos) 433: 8(float) CompositeExtract 432 0 434: 8(float) CompositeExtract 432 1 435: 8(float) CompositeExtract 432 2 - 436: 18(fvec4) CompositeConstruct 433 434 435 115 - 477: 235(int) Load 409(i) - 480: 478(ptr) AccessChain 475 315 322 477 423 + 436: 18(fvec4) CompositeConstruct 433 434 435 111 + 477: 233(int) Load 407(i) + 480: 478(ptr) AccessChain 475 313 320 477 423 481: 437 Load 480 482: 18(fvec4) VectorTimesMatrix 436 481 - Store 428(shadowClip) 482 - 483: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 484 484 16 16 - 487: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 486 485(shadowFactor) 51 - 488: 235(int) Load 409(i) + Store 425(shadowClip) 482 + 487: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 485 485 16 16 + 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 484 483(shadowFactor) 49 + 488: 233(int) Load 407(i) 489: 8(float) ConvertSToF 488 - 491: 18(fvec4) Load 428(shadowClip) + 491: 18(fvec4) Load 425(shadowClip) Store 490(param) 491 Store 492(param) 489 493: 8(float) FunctionCall 62(filterPCF(vf4;f1;) 490(param) 492(param) - Store 485(shadowFactor) 493 - 494: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 495 495 16 16 - 496: 8(float) Load 485(shadowFactor) - 497: 74(fvec3) Load 80(fragcolor) - 498: 74(fvec3) VectorTimesScalar 497 496 - Store 80(fragcolor) 498 + Store 483(shadowFactor) 493 + 495: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 496 496 16 16 + 494: 8(float) Load 483(shadowFactor) + 497: 73(fvec3) Load 79(fragcolor) + 498: 73(fvec3) VectorTimesScalar 497 494 + Store 79(fragcolor) 498 Branch 416 416: Label - 499: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 500: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 408 408 16 16 - 501: 235(int) Load 409(i) - 502: 235(int) IAdd 501 322 - Store 409(i) 502 + 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 + 499: 233(int) Load 407(i) + 502: 233(int) IAdd 499 320 + Store 407(i) 502 Branch 413 415: Label - 503: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 504: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 505 505 16 16 - 506: 74(fvec3) Load 80(fragcolor) - ReturnValue 506 + 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 505: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 506 506 16 16 + 503: 73(fvec3) Load 79(fragcolor) + ReturnValue 503 FunctionEnd - Line 1 119 1 - 98(@main(vf2;): 18(fvec4) Function None 95 - 97(inUV): 29(ptr) FunctionParameter - 99: Label - 513(fragPos): 76(ptr) Variable Function - 537(normal): 76(ptr) Variable Function - 556(albedo): 21(ptr) Variable Function - 595(fragcolor): 76(ptr) Variable Function - 599(param): 76(ptr) Variable Function - 600(param): 76(ptr) Variable Function - 655(N): 76(ptr) Variable Function - 663(i): 251(ptr) Variable Function - 680(L): 76(ptr) Variable Function - 694(dist): 24(ptr) Variable Function - 705(V): 76(ptr) Variable Function -720(lightCosInnerAngle): 24(ptr) Variable Function -727(lightCosOuterAngle): 24(ptr) Variable Function - 734(lightRange): 24(ptr) Variable Function - 741(dir): 76(ptr) Variable Function - 757(cosDir): 24(ptr) Variable Function - 766(spotEffect): 24(ptr) Variable Function -776(heightAttenuation): 24(ptr) Variable Function - 785(NdotL): 24(ptr) Variable Function - 795(diff): 76(ptr) Variable Function - 803(R): 76(ptr) Variable Function - 813(NdotR): 24(ptr) Variable Function - 823(spec): 76(ptr) Variable Function - 871(param): 76(ptr) Variable Function - 873(param): 76(ptr) Variable Function - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 102 102 16 16 - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 105 97(inUV) 51 - 509: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 101 98(@main(vf2;) - 510: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 511: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 512 512 16 16 - 515: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 514 513(fragPos) 51 - 523: 516 Load 520(textureposition) - 528: 173 Load 525(samplerposition) - 531: 529 SampledImage 523 528 - 532: 26(fvec2) Load 97(inUV) - 533: 18(fvec4) ImageSampleImplicitLod 531 532 - 534: 74(fvec3) VectorShuffle 533 533 0 1 2 - Store 513(fragPos) 534 - 535: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 536 536 16 16 - 540: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 538 537(normal) 51 - 544: 516 Load 541(textureNormal) - 549: 173 Load 546(samplerNormal) - 550: 529 SampledImage 544 549 - 551: 26(fvec2) Load 97(inUV) - 552: 18(fvec4) ImageSampleImplicitLod 550 551 - 553: 74(fvec3) VectorShuffle 552 552 0 1 2 - Store 537(normal) 553 - 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 555 555 16 16 - 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 557 556(albedo) 51 - 563: 516 Load 560(textureAlbedo) - 568: 173 Load 565(samplerAlbedo) - 569: 529 SampledImage 563 568 - 570: 26(fvec2) Load 97(inUV) - 571: 18(fvec4) ImageSampleImplicitLod 569 570 - Store 556(albedo) 571 - 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 573 573 16 16 - 576: 574(ptr) AccessChain 475 315 423 - 577: 235(int) Load 576 - 578: 144(bool) SGreaterThan 577 315 - SelectionMerge 580 None - BranchConditional 578 579 580 - 579: Label - 581: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 582: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 583 583 16 16 - 584: 574(ptr) AccessChain 475 315 423 - 585: 235(int) Load 584 - SelectionMerge 591 None - Switch 585 591 - case 1: 586 - case 2: 587 - case 3: 588 - case 4: 589 - case 5: 590 - 586: Label - 592: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 593: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 594 594 16 16 - 597: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 596 595(fragcolor) 51 - Store 599(param) 598 - 601: 74(fvec3) Load 513(fragPos) - Store 600(param) 601 - 602: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 599(param) 600(param) - Store 595(fragcolor) 602 - 603: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 604 604 16 16 - Branch 591 + 96(@main(vf2;): 18(fvec4) Function None 93 + 95(inUV): 29(ptr) FunctionParameter + 97: Label + 512(fragPos): 75(ptr) Variable Function + 536(normal): 75(ptr) Variable Function + 555(albedo): 21(ptr) Variable Function + 593(fragcolor): 75(ptr) Variable Function + 600(param): 75(ptr) Variable Function + 601(param): 75(ptr) Variable Function + 660(N): 75(ptr) Variable Function + 668(i): 249(ptr) Variable Function + 684(L): 75(ptr) Variable Function + 699(dist): 24(ptr) Variable Function + 710(V): 75(ptr) Variable Function +725(lightCosInnerAngle): 24(ptr) Variable Function +732(lightCosOuterAngle): 24(ptr) Variable Function + 739(lightRange): 24(ptr) Variable Function + 746(dir): 75(ptr) Variable Function + 762(cosDir): 24(ptr) Variable Function + 771(spotEffect): 24(ptr) Variable Function +781(heightAttenuation): 24(ptr) Variable Function + 790(NdotL): 24(ptr) Variable Function + 800(diff): 75(ptr) Variable Function + 808(R): 75(ptr) Variable Function + 818(NdotR): 24(ptr) Variable Function + 828(spec): 75(ptr) Variable Function + 875(param): 75(ptr) Variable Function + 880(param): 75(ptr) Variable Function + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 95(inUV) 49 + 511: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 100 100 16 16 + 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 99 96(@main(vf2;) + 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 514 514 16 16 + 515: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(fragPos) 49 + 524: 517 Load 521(textureposition) + 529: 169 Load 526(samplerposition) + 532: 530 SampledImage 524 529 + 533: 26(fvec2) Load 95(inUV) + 534: 18(fvec4) ImageSampleImplicitLod 532 533 + 535: 73(fvec3) VectorShuffle 534 534 0 1 2 + Store 512(fragPos) 535 + 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 539 539 16 16 + 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 537 536(normal) 49 + 545: 517 Load 542(textureNormal) + 550: 169 Load 547(samplerNormal) + 551: 530 SampledImage 545 550 + 552: 26(fvec2) Load 95(inUV) + 553: 18(fvec4) ImageSampleImplicitLod 551 552 + 554: 73(fvec3) VectorShuffle 553 553 0 1 2 + Store 536(normal) 554 + 560: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 558 558 16 16 + 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 556 555(albedo) 49 + 564: 517 Load 561(textureAlbedo) + 569: 169 Load 566(samplerAlbedo) + 570: 530 SampledImage 564 569 + 571: 26(fvec2) Load 95(inUV) + 572: 18(fvec4) ImageSampleImplicitLod 570 571 + Store 555(albedo) 572 + 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 577 577 16 16 + 575: 573(ptr) AccessChain 475 313 423 + 578: 233(int) Load 575 + 579: 140(bool) SGreaterThan 578 313 + SelectionMerge 581 None + BranchConditional 579 580 581 + 580: Label + 583: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 585 585 16 16 + 582: 573(ptr) AccessChain 475 313 423 + 586: 233(int) Load 582 + SelectionMerge 592 None + Switch 586 592 + case 1: 587 + case 2: 588 + case 3: 589 + case 4: 590 + case 5: 591 587: Label - 606: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 607: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 608 608 16 16 - 609: 74(fvec3) Load 513(fragPos) - Store 595(fragcolor) 609 - 610: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 611 611 16 16 - Branch 591 + 597: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 595 595 16 16 + 596: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 594 593(fragcolor) 49 + Store 600(param) 599 + 602: 73(fvec3) Load 512(fragPos) + Store 601(param) 602 + 603: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 600(param) 601(param) + Store 593(fragcolor) 603 + 604: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 605 605 16 16 + Branch 592 588: Label - 613: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 614: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 615 615 16 16 - 616: 74(fvec3) Load 537(normal) - Store 595(fragcolor) 616 - 617: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 618 618 16 16 - Branch 591 + 609: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 611 611 16 16 + 608: 73(fvec3) Load 512(fragPos) + Store 593(fragcolor) 608 + 612: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 613 613 16 16 + Branch 592 589: Label - 620: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 621: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 622 622 16 16 - 623: 18(fvec4) Load 556(albedo) - 624: 74(fvec3) VectorShuffle 623 623 0 1 2 - Store 595(fragcolor) 624 - 625: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 626 626 16 16 - Branch 591 + 617: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 618: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 619 619 16 16 + 616: 73(fvec3) Load 536(normal) + Store 593(fragcolor) 616 + 620: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 621 621 16 16 + Branch 592 590: Label - 628: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 629: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 630 630 16 16 - 631: 18(fvec4) Load 556(albedo) - 632: 74(fvec3) VectorShuffle 631 631 3 3 3 - Store 595(fragcolor) 632 - 633: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 634 634 16 16 - Branch 591 - 591: Label - 637: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 638: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 639 639 16 16 - 640: 74(fvec3) Load 595(fragcolor) - 641: 8(float) CompositeExtract 640 0 - 642: 8(float) CompositeExtract 640 1 - 643: 8(float) CompositeExtract 640 2 - 644: 18(fvec4) CompositeConstruct 641 642 643 115 - ReturnValue 644 - 580: Label - 646: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 647: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 648 648 16 16 - 649: 18(fvec4) Load 556(albedo) - 650: 74(fvec3) VectorShuffle 649 649 0 1 2 - 652: 74(fvec3) VectorTimesScalar 650 651 - Store 595(fragcolor) 652 - 653: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 654 654 16 16 - 658: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 656 655(N) 51 - 659: 74(fvec3) Load 537(normal) - 660: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 659 - Store 655(N) 660 - 661: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 - 665: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 664 663(i) 51 - Store 663(i) 315 - Branch 666 - 666: Label - 670: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 671: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 - LoopMerge 668 669 None - Branch 672 - 672: Label - 673: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 674: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 - 675: 235(int) Load 663(i) - 676: 144(bool) SLessThan 675 423 - BranchConditional 676 667 668 - 667: Label - 677: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 678: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 679 679 16 16 - 683: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 681 680(L) 51 - 684: 235(int) Load 663(i) - 687: 685(ptr) AccessChain 475 315 322 684 315 - 688: 18(fvec4) Load 687 - 689: 74(fvec3) VectorShuffle 688 688 0 1 2 - 690: 74(fvec3) Load 513(fragPos) - 691: 74(fvec3) FSub 689 690 - Store 680(L) 691 - 692: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 693 693 16 16 - 696: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 695 694(dist) 51 - 697: 74(fvec3) Load 680(L) - 698: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 697 - Store 694(dist) 698 - 699: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 700 700 16 16 - 701: 74(fvec3) Load 680(L) - 702: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 701 - Store 680(L) 702 - 703: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 704 704 16 16 - 708: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 706 705(V) 51 - 709: 685(ptr) AccessChain 475 315 315 - 710: 18(fvec4) Load 709 - 711: 74(fvec3) VectorShuffle 710 710 0 1 2 - 712: 74(fvec3) Load 513(fragPos) - 713: 74(fvec3) FSub 711 712 - Store 705(V) 713 - 714: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 715 715 16 16 - 716: 74(fvec3) Load 705(V) - 717: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 716 - Store 705(V) 717 - 718: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 719 719 16 16 - 723: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 721 720(lightCosInnerAngle) 51 - Store 720(lightCosInnerAngle) 724 - 725: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 726 726 16 16 - 730: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 728 727(lightCosOuterAngle) 51 - Store 727(lightCosOuterAngle) 731 - 732: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 733 733 16 16 - 737: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 735 734(lightRange) 51 - Store 734(lightRange) 738 - 739: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 740 740 16 16 - 744: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 742 741(dir) 51 - 745: 235(int) Load 663(i) - 746: 685(ptr) AccessChain 475 315 322 745 315 - 747: 18(fvec4) Load 746 - 748: 74(fvec3) VectorShuffle 747 747 0 1 2 - 749: 235(int) Load 663(i) - 750: 685(ptr) AccessChain 475 315 322 749 322 - 751: 18(fvec4) Load 750 - 752: 74(fvec3) VectorShuffle 751 751 0 1 2 - 753: 74(fvec3) FSub 748 752 - 754: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 753 - Store 741(dir) 754 - 755: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 756 756 16 16 - 760: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 758 757(cosDir) 51 - 761: 74(fvec3) Load 680(L) - 762: 74(fvec3) Load 741(dir) - 763: 8(float) Dot 761 762 - Store 757(cosDir) 763 - 764: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 765 765 16 16 - 769: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 767 766(spotEffect) 51 - 770: 8(float) Load 727(lightCosOuterAngle) - 771: 8(float) Load 720(lightCosInnerAngle) - 772: 8(float) Load 757(cosDir) - 773: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 770 771 772 - Store 766(spotEffect) 773 - 774: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 775 775 16 16 - 779: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(heightAttenuation) 51 - 780: 8(float) Load 734(lightRange) - 781: 8(float) Load 694(dist) - 782: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 780 202 781 - Store 776(heightAttenuation) 782 - 783: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 784 784 16 16 - 788: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 786 785(NdotL) 51 - 789: 74(fvec3) Load 655(N) - 790: 74(fvec3) Load 680(L) - 791: 8(float) Dot 789 790 - 792: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 202 791 - Store 785(NdotL) 792 - 793: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 794 794 16 16 - 798: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 796 795(diff) 51 - 799: 8(float) Load 785(NdotL) - 800: 74(fvec3) CompositeConstruct 799 799 799 - Store 795(diff) 800 - 801: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 802 802 16 16 - 806: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 804 803(R) 51 - 807: 74(fvec3) Load 680(L) - 808: 74(fvec3) FNegate 807 - 809: 74(fvec3) Load 655(N) - 810: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 808 809 - Store 803(R) 810 - 811: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 812 812 16 16 - 816: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 814 813(NdotR) 51 - 817: 74(fvec3) Load 803(R) - 818: 74(fvec3) Load 705(V) - 819: 8(float) Dot 817 818 - 820: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 202 819 - Store 813(NdotR) 820 - 821: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 822 822 16 16 - 826: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 824 823(spec) 51 - 827: 8(float) Load 813(NdotR) - 829: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 827 828 - 830: 24(ptr) AccessChain 556(albedo) 17 - 831: 8(float) Load 830 - 832: 8(float) FMul 829 831 - 834: 8(float) FMul 832 833 - 835: 74(fvec3) CompositeConstruct 834 834 834 - Store 823(spec) 835 - 836: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 837 837 16 16 - 838: 74(fvec3) Load 795(diff) - 839: 74(fvec3) Load 823(spec) - 840: 74(fvec3) FAdd 838 839 - 841: 8(float) Load 766(spotEffect) - 842: 74(fvec3) VectorTimesScalar 840 841 - 843: 8(float) Load 776(heightAttenuation) - 844: 74(fvec3) VectorTimesScalar 842 843 - 845: 235(int) Load 663(i) - 847: 685(ptr) AccessChain 475 315 322 845 846 - 848: 18(fvec4) Load 847 - 849: 74(fvec3) VectorShuffle 848 848 0 1 2 - 850: 74(fvec3) FMul 844 849 - 851: 18(fvec4) Load 556(albedo) - 852: 74(fvec3) VectorShuffle 851 851 0 1 2 - 853: 74(fvec3) FMul 850 852 - 854: 74(fvec3) Load 595(fragcolor) - 855: 74(fvec3) FAdd 854 853 - Store 595(fragcolor) 855 - Branch 669 - 669: Label - 856: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 857: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 662 662 16 16 - 858: 235(int) Load 663(i) - 859: 235(int) IAdd 858 322 - Store 663(i) 859 - Branch 666 - 668: Label - 860: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 861: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 862 862 16 16 - 863: 574(ptr) AccessChain 475 315 846 - 864: 235(int) Load 863 - 865: 144(bool) SGreaterThan 864 315 - SelectionMerge 867 None - BranchConditional 865 866 867 - 866: Label - 868: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 869: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 870 870 16 16 - 872: 74(fvec3) Load 595(fragcolor) - Store 871(param) 872 - 874: 74(fvec3) Load 513(fragPos) - Store 873(param) 874 - 875: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 871(param) 873(param) - Store 595(fragcolor) 875 - Branch 867 - 867: Label - 876: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 877: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 878 878 16 16 - 879: 74(fvec3) Load 595(fragcolor) - 880: 8(float) CompositeExtract 879 0 - 881: 8(float) CompositeExtract 879 1 - 882: 8(float) CompositeExtract 879 2 - 883: 18(fvec4) CompositeConstruct 880 881 882 115 - ReturnValue 883 + 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 626: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 627 627 16 16 + 624: 18(fvec4) Load 555(albedo) + 628: 73(fvec3) VectorShuffle 624 624 0 1 2 + Store 593(fragcolor) 628 + 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 630 630 16 16 + Branch 592 + 591: Label + 634: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 635: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 636 636 16 16 + 633: 18(fvec4) Load 555(albedo) + 637: 73(fvec3) VectorShuffle 633 633 3 3 3 + Store 593(fragcolor) 637 + 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 639 639 16 16 + Branch 592 + 592: Label + 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 645: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 646 646 16 16 + 643: 73(fvec3) Load 593(fragcolor) + 647: 8(float) CompositeExtract 643 0 + 648: 8(float) CompositeExtract 643 1 + 649: 8(float) CompositeExtract 643 2 + 650: 18(fvec4) CompositeConstruct 647 648 649 111 + ReturnValue 650 + 581: Label + 654: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 656 656 16 16 + 653: 18(fvec4) Load 555(albedo) + 657: 73(fvec3) VectorShuffle 653 653 0 1 2 + 659: 73(fvec3) VectorTimesScalar 657 658 + Store 593(fragcolor) 659 + 665: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 663 663 16 16 + 664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 661 660(N) 49 + 666: 73(fvec3) Load 536(normal) + 667: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 666 + Store 660(N) 667 + 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 + 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 669 668(i) 49 + Store 668(i) 313 + Branch 673 + 673: Label + 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 678: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 + LoopMerge 675 676 None + Branch 679 + 679: Label + 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 682: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 + 680: 233(int) Load 668(i) + 683: 140(bool) SLessThan 680 423 + BranchConditional 683 674 675 + 674: Label + 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 687 687 16 16 + 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 685 684(L) 49 + 691: 233(int) Load 668(i) + 694: 692(ptr) AccessChain 475 313 320 691 313 + 695: 18(fvec4) Load 694 + 696: 73(fvec3) VectorShuffle 695 695 0 1 2 + 697: 73(fvec3) Load 512(fragPos) + 698: 73(fvec3) FSub 696 697 + Store 684(L) 698 + 703: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 701 701 16 16 + 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 700 699(dist) 49 + 704: 73(fvec3) Load 684(L) + 705: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 704 + Store 699(dist) 705 + 707: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 708 708 16 16 + 706: 73(fvec3) Load 684(L) + 709: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 706 + Store 684(L) 709 + 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 713 713 16 16 + 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 711 710(V) 49 + 716: 692(ptr) AccessChain 475 313 313 + 717: 18(fvec4) Load 716 + 718: 73(fvec3) VectorShuffle 717 717 0 1 2 + 719: 73(fvec3) Load 512(fragPos) + 720: 73(fvec3) FSub 718 719 + Store 710(V) 720 + 722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 723 723 16 16 + 721: 73(fvec3) Load 710(V) + 724: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 721 + Store 710(V) 724 + 730: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 728 728 16 16 + 729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(lightCosInnerAngle) 49 + Store 725(lightCosInnerAngle) 731 + 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 735 735 16 16 + 736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(lightCosOuterAngle) 49 + Store 732(lightCosOuterAngle) 738 + 744: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 742 742 16 16 + 743: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 740 739(lightRange) 49 + Store 739(lightRange) 745 + 751: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 749 749 16 16 + 750: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 747 746(dir) 49 + 752: 233(int) Load 668(i) + 753: 692(ptr) AccessChain 475 313 320 752 313 + 754: 18(fvec4) Load 753 + 755: 73(fvec3) VectorShuffle 754 754 0 1 2 + 756: 233(int) Load 668(i) + 757: 692(ptr) AccessChain 475 313 320 756 320 + 758: 18(fvec4) Load 757 + 759: 73(fvec3) VectorShuffle 758 758 0 1 2 + 760: 73(fvec3) FSub 755 759 + 761: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 760 + Store 746(dir) 761 + 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 765 765 16 16 + 766: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 763 762(cosDir) 49 + 768: 73(fvec3) Load 684(L) + 769: 73(fvec3) Load 746(dir) + 770: 8(float) Dot 768 769 + Store 762(cosDir) 770 + 776: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 774 774 16 16 + 775: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 772 771(spotEffect) 49 + 777: 8(float) Load 732(lightCosOuterAngle) + 778: 8(float) Load 725(lightCosInnerAngle) + 779: 8(float) Load 762(cosDir) + 780: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 777 778 779 + Store 771(spotEffect) 780 + 786: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 784 784 16 16 + 785: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 782 781(heightAttenuation) 49 + 787: 8(float) Load 739(lightRange) + 788: 8(float) Load 699(dist) + 789: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 787 198 788 + Store 781(heightAttenuation) 789 + 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 793 793 16 16 + 794: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 791 790(NdotL) 49 + 796: 73(fvec3) Load 660(N) + 797: 73(fvec3) Load 684(L) + 798: 8(float) Dot 796 797 + 799: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 798 + Store 790(NdotL) 799 + 805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 803 803 16 16 + 804: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 801 800(diff) 49 + 806: 8(float) Load 790(NdotL) + 807: 73(fvec3) CompositeConstruct 806 806 806 + Store 800(diff) 807 + 813: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 811 811 16 16 + 812: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 809 808(R) 49 + 814: 73(fvec3) Load 684(L) + 815: 73(fvec3) FNegate 814 + 816: 73(fvec3) Load 660(N) + 817: 73(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 815 816 + Store 808(R) 817 + 823: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 821 821 16 16 + 822: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 819 818(NdotR) 49 + 824: 73(fvec3) Load 808(R) + 825: 73(fvec3) Load 710(V) + 826: 8(float) Dot 824 825 + 827: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 826 + Store 818(NdotR) 827 + 833: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 831 831 16 16 + 832: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 829 828(spec) 49 + 834: 8(float) Load 818(NdotR) + 836: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 834 835 + 837: 24(ptr) AccessChain 555(albedo) 17 + 838: 8(float) Load 837 + 839: 8(float) FMul 836 838 + 841: 8(float) FMul 839 840 + 842: 73(fvec3) CompositeConstruct 841 841 841 + Store 828(spec) 842 + 844: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 845 845 16 16 + 843: 73(fvec3) Load 800(diff) + 846: 73(fvec3) Load 828(spec) + 847: 73(fvec3) FAdd 843 846 + 848: 8(float) Load 771(spotEffect) + 849: 73(fvec3) VectorTimesScalar 847 848 + 850: 8(float) Load 781(heightAttenuation) + 851: 73(fvec3) VectorTimesScalar 849 850 + 852: 233(int) Load 668(i) + 854: 692(ptr) AccessChain 475 313 320 852 853 + 855: 18(fvec4) Load 854 + 856: 73(fvec3) VectorShuffle 855 855 0 1 2 + 857: 73(fvec3) FMul 851 856 + 858: 18(fvec4) Load 555(albedo) + 859: 73(fvec3) VectorShuffle 858 858 0 1 2 + 860: 73(fvec3) FMul 857 859 + 861: 73(fvec3) Load 593(fragcolor) + 862: 73(fvec3) FAdd 861 860 + Store 593(fragcolor) 862 + Branch 676 + 676: Label + 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 865: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 + 863: 233(int) Load 668(i) + 866: 233(int) IAdd 863 320 + Store 668(i) 866 + Branch 673 + 675: Label + 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 869: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 870 870 16 16 + 867: 573(ptr) AccessChain 475 313 853 + 871: 233(int) Load 867 + 872: 140(bool) SGreaterThan 871 313 + SelectionMerge 874 None + BranchConditional 872 873 874 + 873: Label + 877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 878: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 879 879 16 16 + 876: 73(fvec3) Load 593(fragcolor) + Store 875(param) 876 + 881: 73(fvec3) Load 512(fragPos) + Store 880(param) 881 + 882: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 875(param) 880(param) + Store 593(fragcolor) 882 + Branch 874 + 874: Label + 884: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 885: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 886 886 16 16 + 883: 73(fvec3) Load 593(fragcolor) + 887: 8(float) CompositeExtract 883 0 + 888: 8(float) CompositeExtract 883 1 + 889: 8(float) CompositeExtract 883 2 + 890: 18(fvec4) CompositeConstruct 887 888 889 111 + ReturnValue 890 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index 2647753e55..1ba9447056 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -1,20 +1,20 @@ spv.debuginfo.hlsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 367 +// Id's are bound by 366 Capability Geometry Capability MultiViewport Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 6 "main" 267 274 279 286 291 296 301 316 323 328 352 355 + EntryPoint Geometry 6 "main" 264 273 278 285 290 295 300 315 322 327 351 354 ExecutionMode 6 Triangles ExecutionMode 6 Invocations 2 ExecutionMode 6 OutputTriangleStrip ExecutionMode 6 OutputVertices 3 - 1: String "" + 2: String "" 9: String "float" 12: String "uint" 25: String "Pos" @@ -33,28 +33,28 @@ spv.debuginfo.hlsl.geom 54: String "LightVec" 60: String "GSOutput" 73: String "@main" - 79: String "input" + 77: String "input" 83: String "outStream" 87: String "InvocationID" - 96: String "int" - 102: String "i" - 117: String "bool" - 125: String "output" - 148: String "projection" - 152: String "modelview" - 156: String "lightPos" - 160: String "UBO" - 163: String "ubo" - 201: String "pos" - 210: String "worldPos" - 221: String "lPos" - 269: String "outStream.Pos" - 276: String "outStream.ViewportIndex" - 281: String "outStream.PrimitiveID" - 288: String "outStream.Normal" - 293: String "outStream.Color" - 298: String "outStream.ViewVec" - 303: String "outStream.LightVec" + 93: String "int" + 99: String "i" + 116: String "bool" + 121: String "output" + 147: String "projection" + 151: String "modelview" + 155: String "lightPos" + 159: String "UBO" + 162: String "ubo" + 198: String "pos" + 207: String "worldPos" + 218: String "lPos" + 266: String "outStream.Pos" + 275: String "outStream.ViewportIndex" + 280: String "outStream.PrimitiveID" + 287: String "outStream.Normal" + 292: String "outStream.Color" + 297: String "outStream.ViewVec" + 302: String "outStream.LightVec" Name 6 "main" Name 23 "VSOutput" MemberName 23(VSOutput) 0 "Pos" @@ -73,63 +73,63 @@ spv.debuginfo.hlsl.geom Name 68 "outStream" Name 69 "InvocationID" Name 70 "PrimitiveID" - Name 100 "i" - Name 123 "output" - Name 146 "UBO" - MemberName 146(UBO) 0 "projection" - MemberName 146(UBO) 1 "modelview" - MemberName 146(UBO) 2 "lightPos" - Name 161 "ubo" - MemberName 161(ubo) 0 "ubo" - Name 168 "" - Name 199 "pos" - Name 208 "worldPos" - Name 219 "lPos" - Name 267 "outStream.Pos" - Name 274 "outStream.ViewportIndex" - Name 279 "outStream.PrimitiveID" - Name 286 "outStream.Normal" - Name 291 "outStream.Color" - Name 296 "outStream.ViewVec" - Name 301 "outStream.LightVec" - Name 313 "input" - Name 316 "input.Pos" - Name 323 "input.Normal" - Name 328 "input.Color" - Name 350 "InvocationID" - Name 352 "InvocationID" + Name 97 "i" + Name 119 "output" + Name 145 "UBO" + MemberName 145(UBO) 0 "projection" + MemberName 145(UBO) 1 "modelview" + MemberName 145(UBO) 2 "lightPos" + Name 160 "ubo" + MemberName 160(ubo) 0 "ubo" + Name 167 "" + Name 196 "pos" + Name 205 "worldPos" + Name 216 "lPos" + Name 264 "outStream.Pos" + Name 273 "outStream.ViewportIndex" + Name 278 "outStream.PrimitiveID" + Name 285 "outStream.Normal" + Name 290 "outStream.Color" + Name 295 "outStream.ViewVec" + Name 300 "outStream.LightVec" + Name 312 "input" + Name 315 "input.Pos" + Name 322 "input.Normal" + Name 327 "input.Color" + Name 349 "InvocationID" + Name 351 "InvocationID" + Name 353 "PrimitiveID" Name 354 "PrimitiveID" - Name 355 "PrimitiveID" - Name 357 "outStream" - Name 358 "param" + Name 356 "outStream" + Name 357 "param" + Name 359 "param" Name 360 "param" - Name 361 "param" - Name 363 "param" - Decorate 142 ArrayStride 64 - Decorate 144 ArrayStride 64 - MemberDecorate 146(UBO) 0 RowMajor - MemberDecorate 146(UBO) 0 Offset 0 - MemberDecorate 146(UBO) 0 MatrixStride 16 - MemberDecorate 146(UBO) 1 RowMajor - MemberDecorate 146(UBO) 1 Offset 128 - MemberDecorate 146(UBO) 1 MatrixStride 16 - MemberDecorate 146(UBO) 2 Offset 256 - MemberDecorate 161(ubo) 0 Offset 0 - Decorate 161(ubo) Block - Decorate 168 DescriptorSet 0 - Decorate 168 Binding 0 - Decorate 267(outStream.Pos) BuiltIn Position - Decorate 274(outStream.ViewportIndex) BuiltIn ViewportIndex - Decorate 279(outStream.PrimitiveID) BuiltIn PrimitiveId - Decorate 286(outStream.Normal) Location 0 - Decorate 291(outStream.Color) Location 1 - Decorate 296(outStream.ViewVec) Location 2 - Decorate 301(outStream.LightVec) Location 3 - Decorate 316(input.Pos) BuiltIn Position - Decorate 323(input.Normal) Location 0 - Decorate 328(input.Color) Location 1 - Decorate 352(InvocationID) BuiltIn InvocationId - Decorate 355(PrimitiveID) BuiltIn PrimitiveId + Name 362 "param" + Decorate 141 ArrayStride 64 + Decorate 143 ArrayStride 64 + MemberDecorate 145(UBO) 0 RowMajor + MemberDecorate 145(UBO) 0 Offset 0 + MemberDecorate 145(UBO) 0 MatrixStride 16 + MemberDecorate 145(UBO) 1 RowMajor + MemberDecorate 145(UBO) 1 Offset 128 + MemberDecorate 145(UBO) 1 MatrixStride 16 + MemberDecorate 145(UBO) 2 Offset 256 + MemberDecorate 160(ubo) 0 Offset 0 + Decorate 160(ubo) Block + Decorate 167 DescriptorSet 0 + Decorate 167 Binding 0 + Decorate 264(outStream.Pos) BuiltIn Position + Decorate 273(outStream.ViewportIndex) BuiltIn ViewportIndex + Decorate 278(outStream.PrimitiveID) BuiltIn PrimitiveId + Decorate 285(outStream.Normal) Location 0 + Decorate 290(outStream.Color) Location 1 + Decorate 295(outStream.ViewVec) Location 2 + Decorate 300(outStream.LightVec) Location 3 + Decorate 315(input.Pos) BuiltIn Position + Decorate 322(input.Normal) Location 0 + Decorate 327(input.Color) Location 1 + Decorate 351(InvocationID) BuiltIn InvocationId + Decorate 354(PrimitiveID) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -137,377 +137,373 @@ spv.debuginfo.hlsl.geom 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 + 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 + 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 + 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypeVector 8(float) 3 - 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 23(VSOutput): TypeStruct 18(fvec4) 21(fvec3) 21(fvec3) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 27 + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 27 28: 11(int) Constant 37 29: 11(int) Constant 13 - 24: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 28 29 16 16 17 + 24: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 28 29 16 16 17 32: 11(int) Constant 39 33: 11(int) Constant 34 - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 37: 11(int) Constant 1 39: 11(int) Constant 5 - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 19 26 39 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 36 37 26 16 16 38 36 16 17 24 30 34 + 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 19 26 39 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 36 37 26 16 16 38 36 16 17 24 30 34 40: TypeArray 23(VSOutput) 17 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 17 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 17 42: TypePointer Function 40 43: 11(int) Constant 7 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 43 16 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 43 16 45(GSOutput): TypeStruct 18(fvec4) 11(int) 11(int) 21(fvec3) 21(fvec3) 21(fvec3) 21(fvec3) 47: 11(int) Constant 44 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 47 29 16 16 17 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 47 29 16 16 17 50: 11(int) Constant 46 51: 11(int) Constant 19 - 48: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 - 52: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 55: 11(int) Constant 50 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 37 26 16 16 38 60 16 17 46 48 52 53 56 57 58 + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 37 26 16 16 38 60 16 17 46 48 52 53 56 57 58 61: TypePointer Function 45(GSOutput) - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 43 16 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 43 16 63: TypePointer Function 11(int) - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 43 16 + 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 43 16 65: TypeFunction 4 42(ptr) 61(ptr) 63(ptr) 63(ptr) - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 59 13 13 + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 59 13 13 75: 11(int) Constant 56 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 73 66 26 75 16 38 73 17 75 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 79 41 26 75 16 74 19 37 - 81: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 73 66 26 75 16 38 73 17 75 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 41 26 75 16 74 19 37 + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 84: 11(int) Constant 2 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 59 26 75 16 74 19 84 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 13 26 75 16 74 19 17 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 13 26 75 16 74 19 19 - 94: 11(int) Constant 57 - 95: TypeInt 32 1 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 96 14 19 16 - 98: TypePointer Function 95(int) - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 97 43 16 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 97 26 94 16 74 19 - 104: 95(int) Constant 0 - 115: 95(int) Constant 3 - 116: TypeBool - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 117 14 84 16 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 59 26 75 16 74 19 84 + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 13 26 75 16 74 19 17 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 13 26 75 16 74 19 19 + 92: TypeInt 32 1 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 93 14 19 16 + 95: TypePointer Function 92(int) + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 94 43 16 + 100: 11(int) Constant 57 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 94 26 100 16 74 19 + 103: 92(int) Constant 0 + 114: 92(int) Constant 3 + 115: TypeBool + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 116 14 84 16 122: 11(int) Constant 59 - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 125 59 26 122 16 74 19 - 127: 8(float) Constant 0 - 128: 18(fvec4) ConstantComposite 127 127 127 127 - 129: 21(fvec3) ConstantComposite 127 127 127 - 130:45(GSOutput) ConstantComposite 128 16 16 129 129 129 129 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 59 26 122 16 74 19 + 126: 8(float) Constant 0 + 127: 18(fvec4) ConstantComposite 126 126 126 126 + 128: 21(fvec3) ConstantComposite 126 126 126 + 129:45(GSOutput) ConstantComposite 127 16 16 128 128 128 128 132: 11(int) Constant 60 - 134: 95(int) Constant 1 - 135: TypePointer Function 21(fvec3) - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 43 16 - 139: TypeMatrix 18(fvec4) 4 - 141: 116(bool) ConstantTrue - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 141 - 142: TypeArray 139 84 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 140 84 - 144: TypeArray 139 84 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 140 84 - 146(UBO): TypeStruct 142 144 18(fvec4) - 149: 11(int) Constant 28 - 150: 11(int) Constant 21 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 148 143 26 149 150 16 16 17 - 153: 11(int) Constant 29 - 154: 11(int) Constant 20 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 152 145 26 153 154 16 16 17 - 157: 11(int) Constant 30 - 158: 11(int) Constant 17 - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 156 20 26 157 158 16 16 17 - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 160 37 26 132 16 38 160 16 17 147 151 155 - 161(ubo): TypeStruct 146(UBO) - 164: 11(int) Constant 33 - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 163 159 26 164 28 16 16 17 - 165: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 163 37 26 132 16 38 163 16 17 162 - 166: TypePointer Uniform 161(ubo) - 167: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 165 84 16 - 168: 166(ptr) Variable Uniform - 170: 11(int) Constant 8 - 169: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 165 26 132 16 38 1 168 170 - 172: TypePointer Uniform 139 - 173: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 140 84 16 - 176: TypeMatrix 21(fvec3) 3 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 141 - 188: 11(int) Constant 61 - 189: 95(int) Constant 4 - 191: 95(int) Constant 2 - 196: 11(int) Constant 63 - 197: TypePointer Function 18(fvec4) - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 43 16 - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 201 20 26 196 16 74 19 - 207: 11(int) Constant 64 - 209: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 210 20 26 207 16 74 19 - 218: 11(int) Constant 66 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 221 22 26 218 16 74 19 - 223: TypePointer Uniform 18(fvec4) - 224: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 84 16 - 233: 11(int) Constant 67 - 234: 95(int) Constant 6 - 241: 11(int) Constant 68 - 242: 95(int) Constant 5 + 133: 92(int) Constant 1 + 134: TypePointer Function 21(fvec3) + 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 43 16 + 138: TypeMatrix 18(fvec4) 4 + 140: 115(bool) ConstantTrue + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 140 + 141: TypeArray 138 84 + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 139 84 + 143: TypeArray 138 84 + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 139 84 + 145(UBO): TypeStruct 141 143 18(fvec4) + 148: 11(int) Constant 28 + 149: 11(int) Constant 21 + 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 147 142 26 148 149 16 16 17 + 152: 11(int) Constant 29 + 153: 11(int) Constant 20 + 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 151 144 26 152 153 16 16 17 + 156: 11(int) Constant 30 + 157: 11(int) Constant 17 + 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 20 26 156 157 16 16 17 + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 37 26 132 16 38 159 16 17 146 150 154 + 160(ubo): TypeStruct 145(UBO) + 163: 11(int) Constant 33 + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 158 26 163 28 16 16 17 + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 37 26 132 16 38 162 16 17 161 + 165: TypePointer Uniform 160(ubo) + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 164 84 16 + 167: 165(ptr) Variable Uniform + 169: 11(int) Constant 8 + 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 164 26 132 16 38 2 167 169 + 171: TypePointer Uniform 138 + 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 84 16 + 175: TypeMatrix 21(fvec3) 3 + 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 22 17 140 + 186: 92(int) Constant 4 + 189: 11(int) Constant 61 + 190: 92(int) Constant 2 + 194: TypePointer Function 18(fvec4) + 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 43 16 + 199: 11(int) Constant 63 + 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 198 20 26 199 16 74 19 + 208: 11(int) Constant 64 + 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 207 20 26 208 16 74 19 + 219: 11(int) Constant 66 + 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 218 22 26 219 16 74 19 + 222: TypePointer Uniform 18(fvec4) + 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 84 16 + 231: 92(int) Constant 6 + 234: 11(int) Constant 67 + 239: 92(int) Constant 5 + 242: 11(int) Constant 68 248: 11(int) Constant 70 256: 11(int) Constant 73 260: 11(int) Constant 74 - 264: 11(int) Constant 75 - 265: TypePointer Output 18(fvec4) - 266: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 17 16 -267(outStream.Pos): 265(ptr) Variable Output - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 269 20 26 264 16 38 269 267(outStream.Pos) 170 - 272: TypePointer Output 11(int) - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 17 16 -274(outStream.ViewportIndex): 272(ptr) Variable Output - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 276 13 26 264 16 38 276 274(outStream.ViewportIndex) 170 -279(outStream.PrimitiveID): 272(ptr) Variable Output - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 281 13 26 264 16 38 281 279(outStream.PrimitiveID) 170 - 284: TypePointer Output 21(fvec3) - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 17 16 -286(outStream.Normal): 284(ptr) Variable Output - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 288 22 26 264 16 38 288 286(outStream.Normal) 170 -291(outStream.Color): 284(ptr) Variable Output - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 293 22 26 264 16 38 293 291(outStream.Color) 170 -296(outStream.ViewVec): 284(ptr) Variable Output - 297: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 298 22 26 264 16 38 298 296(outStream.ViewVec) 170 -301(outStream.LightVec): 284(ptr) Variable Output - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 303 22 26 264 16 38 303 301(outStream.LightVec) 170 - 312: 11(int) Constant 78 - 314: TypeArray 18(fvec4) 17 - 315: TypePointer Input 314 - 316(input.Pos): 315(ptr) Variable Input - 317: TypePointer Input 18(fvec4) - 321: TypeArray 21(fvec3) 17 - 322: TypePointer Input 321 -323(input.Normal): 322(ptr) Variable Input - 324: TypePointer Input 21(fvec3) -328(input.Color): 322(ptr) Variable Input - 351: TypePointer Input 11(int) -352(InvocationID): 351(ptr) Variable Input -355(PrimitiveID): 351(ptr) Variable Input - Line 1 56 1 + 262: TypePointer Output 18(fvec4) + 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 17 16 +264(outStream.Pos): 262(ptr) Variable Output + 267: 11(int) Constant 75 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 266 20 26 267 16 38 266 264(outStream.Pos) 169 + 271: TypePointer Output 11(int) + 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 17 16 +273(outStream.ViewportIndex): 271(ptr) Variable Output + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 275 13 26 267 16 38 275 273(outStream.ViewportIndex) 169 +278(outStream.PrimitiveID): 271(ptr) Variable Output + 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 280 13 26 267 16 38 280 278(outStream.PrimitiveID) 169 + 283: TypePointer Output 21(fvec3) + 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 17 16 +285(outStream.Normal): 283(ptr) Variable Output + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 287 22 26 267 16 38 287 285(outStream.Normal) 169 +290(outStream.Color): 283(ptr) Variable Output + 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 292 22 26 267 16 38 292 290(outStream.Color) 169 +295(outStream.ViewVec): 283(ptr) Variable Output + 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 297 22 26 267 16 38 297 295(outStream.ViewVec) 169 +300(outStream.LightVec): 283(ptr) Variable Output + 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 302 22 26 267 16 38 302 300(outStream.LightVec) 169 + 311: 11(int) Constant 78 + 313: TypeArray 18(fvec4) 17 + 314: TypePointer Input 313 + 315(input.Pos): 314(ptr) Variable Input + 316: TypePointer Input 18(fvec4) + 320: TypeArray 21(fvec3) 17 + 321: TypePointer Input 320 +322(input.Normal): 321(ptr) Variable Input + 323: TypePointer Input 21(fvec3) +327(input.Color): 321(ptr) Variable Input + 350: TypePointer Input 11(int) +351(InvocationID): 350(ptr) Variable Input +354(PrimitiveID): 350(ptr) Variable Input 6(main): 4 Function None 5 7: Label - 313(input): 42(ptr) Variable Function -350(InvocationID): 63(ptr) Variable Function -354(PrimitiveID): 63(ptr) Variable Function - 357(outStream): 61(ptr) Variable Function - 358(param): 42(ptr) Variable Function - 360(param): 61(ptr) Variable Function - 361(param): 63(ptr) Variable Function - 363(param): 63(ptr) Variable Function - Line 1 56 0 - 318: 317(ptr) AccessChain 316(input.Pos) 104 - 319: 18(fvec4) Load 318 - 320: 197(ptr) AccessChain 313(input) 104 104 - Store 320 319 - 325: 324(ptr) AccessChain 323(input.Normal) 104 - 326: 21(fvec3) Load 325 - 327: 135(ptr) AccessChain 313(input) 104 134 - Store 327 326 - 329: 324(ptr) AccessChain 328(input.Color) 104 - 330: 21(fvec3) Load 329 - 331: 135(ptr) AccessChain 313(input) 104 191 - Store 331 330 - 332: 317(ptr) AccessChain 316(input.Pos) 134 - 333: 18(fvec4) Load 332 - 334: 197(ptr) AccessChain 313(input) 134 104 - Store 334 333 - 335: 324(ptr) AccessChain 323(input.Normal) 134 - 336: 21(fvec3) Load 335 - 337: 135(ptr) AccessChain 313(input) 134 134 - Store 337 336 - 338: 324(ptr) AccessChain 328(input.Color) 134 - 339: 21(fvec3) Load 338 - 340: 135(ptr) AccessChain 313(input) 134 191 - Store 340 339 - 341: 317(ptr) AccessChain 316(input.Pos) 191 - 342: 18(fvec4) Load 341 - 343: 197(ptr) AccessChain 313(input) 191 104 - Store 343 342 - 344: 324(ptr) AccessChain 323(input.Normal) 191 - 345: 21(fvec3) Load 344 - 346: 135(ptr) AccessChain 313(input) 191 134 - Store 346 345 - 347: 324(ptr) AccessChain 328(input.Color) 191 - 348: 21(fvec3) Load 347 - 349: 135(ptr) AccessChain 313(input) 191 191 - Store 349 348 - 353: 11(int) Load 352(InvocationID) - Store 350(InvocationID) 353 - 356: 11(int) Load 355(PrimitiveID) - Store 354(PrimitiveID) 356 - 359: 40 Load 313(input) - Store 358(param) 359 - 362: 11(int) Load 350(InvocationID) - Store 361(param) 362 - 364: 11(int) Load 354(PrimitiveID) - Store 363(param) 364 - 365: 4 FunctionCall 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 358(param) 360(param) 361(param) 363(param) - 366:45(GSOutput) Load 360(param) - Store 357(outStream) 366 + 312(input): 42(ptr) Variable Function +349(InvocationID): 63(ptr) Variable Function +353(PrimitiveID): 63(ptr) Variable Function + 356(outStream): 61(ptr) Variable Function + 357(param): 42(ptr) Variable Function + 359(param): 61(ptr) Variable Function + 360(param): 63(ptr) Variable Function + 362(param): 63(ptr) Variable Function + 317: 316(ptr) AccessChain 315(input.Pos) 103 + 318: 18(fvec4) Load 317 + 319: 194(ptr) AccessChain 312(input) 103 103 + Store 319 318 + 324: 323(ptr) AccessChain 322(input.Normal) 103 + 325: 21(fvec3) Load 324 + 326: 134(ptr) AccessChain 312(input) 103 133 + Store 326 325 + 328: 323(ptr) AccessChain 327(input.Color) 103 + 329: 21(fvec3) Load 328 + 330: 134(ptr) AccessChain 312(input) 103 190 + Store 330 329 + 331: 316(ptr) AccessChain 315(input.Pos) 133 + 332: 18(fvec4) Load 331 + 333: 194(ptr) AccessChain 312(input) 133 103 + Store 333 332 + 334: 323(ptr) AccessChain 322(input.Normal) 133 + 335: 21(fvec3) Load 334 + 336: 134(ptr) AccessChain 312(input) 133 133 + Store 336 335 + 337: 323(ptr) AccessChain 327(input.Color) 133 + 338: 21(fvec3) Load 337 + 339: 134(ptr) AccessChain 312(input) 133 190 + Store 339 338 + 340: 316(ptr) AccessChain 315(input.Pos) 190 + 341: 18(fvec4) Load 340 + 342: 194(ptr) AccessChain 312(input) 190 103 + Store 342 341 + 343: 323(ptr) AccessChain 322(input.Normal) 190 + 344: 21(fvec3) Load 343 + 345: 134(ptr) AccessChain 312(input) 190 133 + Store 345 344 + 346: 323(ptr) AccessChain 327(input.Color) 190 + 347: 21(fvec3) Load 346 + 348: 134(ptr) AccessChain 312(input) 190 190 + Store 348 347 + 352: 11(int) Load 351(InvocationID) + Store 349(InvocationID) 352 + 355: 11(int) Load 354(PrimitiveID) + Store 353(PrimitiveID) 355 + 358: 40 Load 312(input) + Store 357(param) 358 + 361: 11(int) Load 349(InvocationID) + Store 360(param) 361 + 363: 11(int) Load 353(PrimitiveID) + Store 362(param) 363 + 364: 4 FunctionCall 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 357(param) 359(param) 360(param) 362(param) + 365:45(GSOutput) Load 359(param) + Store 356(outStream) 365 Return FunctionEnd - Line 1 56 1 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 4 Function None 65 67(input): 42(ptr) FunctionParameter 68(outStream): 61(ptr) FunctionParameter 69(InvocationID): 63(ptr) FunctionParameter 70(PrimitiveID): 63(ptr) FunctionParameter 72: Label - 100(i): 98(ptr) Variable Function - 123(output): 61(ptr) Variable Function - 199(pos): 197(ptr) Variable Function - 208(worldPos): 197(ptr) Variable Function - 219(lPos): 135(ptr) Variable Function - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 75 75 16 16 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 78 67(input) 81 - 85: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 68(outStream) 81 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 69(InvocationID) 81 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 70(PrimitiveID) 81 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 74 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 100(i) 81 - Store 100(i) 104 - Branch 105 - 105: Label - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 110: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 - LoopMerge 107 108 None - Branch 111 - 111: Label - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 - 114: 95(int) Load 100(i) - 119: 116(bool) SLessThan 114 115 - BranchConditional 119 106 107 - 106: Label - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 121: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 122 122 16 16 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 124 123(output) 81 - Store 123(output) 130 - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 132 132 16 16 - 133: 95(int) Load 100(i) - 137: 135(ptr) AccessChain 67(input) 133 134 - 138: 21(fvec3) Load 137 - 171: 11(int) Load 69(InvocationID) - 174: 172(ptr) AccessChain 168 104 134 171 - 175: 139 Load 174 - 178: 18(fvec4) CompositeExtract 175 0 - 179: 21(fvec3) VectorShuffle 178 178 0 1 2 - 180: 18(fvec4) CompositeExtract 175 1 - 181: 21(fvec3) VectorShuffle 180 180 0 1 2 - 182: 18(fvec4) CompositeExtract 175 2 - 183: 21(fvec3) VectorShuffle 182 182 0 1 2 - 184: 176 CompositeConstruct 179 181 183 - 185: 21(fvec3) VectorTimesMatrix 138 184 - 186: 135(ptr) AccessChain 123(output) 115 - Store 186 185 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 188 188 16 16 - 190: 95(int) Load 100(i) - 192: 135(ptr) AccessChain 67(input) 190 191 - 193: 21(fvec3) Load 192 - 194: 135(ptr) AccessChain 123(output) 189 - Store 194 193 - 195: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 196 196 16 16 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 200 199(pos) 81 - 203: 95(int) Load 100(i) - 204: 197(ptr) AccessChain 67(input) 203 104 - 205: 18(fvec4) Load 204 - Store 199(pos) 205 - 206: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 207 207 16 16 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 209 208(worldPos) 81 - 212: 18(fvec4) Load 199(pos) - 213: 11(int) Load 69(InvocationID) - 214: 172(ptr) AccessChain 168 104 134 213 - 215: 139 Load 214 - 216: 18(fvec4) VectorTimesMatrix 212 215 - Store 208(worldPos) 216 - 217: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 218 218 16 16 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 220 219(lPos) 81 - 225: 223(ptr) AccessChain 168 104 191 - 226: 18(fvec4) Load 225 - 227: 11(int) Load 69(InvocationID) - 228: 172(ptr) AccessChain 168 104 134 227 - 229: 139 Load 228 - 230: 18(fvec4) VectorTimesMatrix 226 229 - 231: 21(fvec3) VectorShuffle 230 230 0 1 2 - Store 219(lPos) 231 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 233 233 16 16 - 235: 21(fvec3) Load 219(lPos) - 236: 18(fvec4) Load 208(worldPos) - 237: 21(fvec3) VectorShuffle 236 236 0 1 2 - 238: 21(fvec3) FSub 235 237 - 239: 135(ptr) AccessChain 123(output) 234 - Store 239 238 - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 241 241 16 16 - 243: 18(fvec4) Load 208(worldPos) - 244: 21(fvec3) VectorShuffle 243 243 0 1 2 - 245: 21(fvec3) FNegate 244 - 246: 135(ptr) AccessChain 123(output) 242 - Store 246 245 - 247: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 248 248 16 16 - 249: 18(fvec4) Load 208(worldPos) - 250: 11(int) Load 69(InvocationID) - 251: 172(ptr) AccessChain 168 104 104 250 - 252: 139 Load 251 - 253: 18(fvec4) VectorTimesMatrix 249 252 - 254: 197(ptr) AccessChain 123(output) 104 - Store 254 253 - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 256 256 16 16 - 257: 11(int) Load 69(InvocationID) - 258: 63(ptr) AccessChain 123(output) 134 - Store 258 257 - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 260 260 16 16 - 261: 11(int) Load 70(PrimitiveID) - 262: 63(ptr) AccessChain 123(output) 191 - Store 262 261 - 263: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 264 264 16 16 - 270: 197(ptr) AccessChain 123(output) 104 - 271: 18(fvec4) Load 270 - Store 267(outStream.Pos) 271 - 277: 63(ptr) AccessChain 123(output) 134 - 278: 11(int) Load 277 - Store 274(outStream.ViewportIndex) 278 - 282: 63(ptr) AccessChain 123(output) 191 - 283: 11(int) Load 282 - Store 279(outStream.PrimitiveID) 283 - 289: 135(ptr) AccessChain 123(output) 115 - 290: 21(fvec3) Load 289 - Store 286(outStream.Normal) 290 - 294: 135(ptr) AccessChain 123(output) 189 - 295: 21(fvec3) Load 294 - Store 291(outStream.Color) 295 - 299: 135(ptr) AccessChain 123(output) 242 - 300: 21(fvec3) Load 299 - Store 296(outStream.ViewVec) 300 - 304: 135(ptr) AccessChain 123(output) 234 - 305: 21(fvec3) Load 304 - Store 301(outStream.LightVec) 305 + 97(i): 95(ptr) Variable Function + 119(output): 61(ptr) Variable Function + 196(pos): 194(ptr) Variable Function + 205(worldPos): 194(ptr) Variable Function + 216(lPos): 134(ptr) Variable Function + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 75 75 16 16 + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 67(input) 79 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 68(outStream) 79 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 69(InvocationID) 79 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 70(PrimitiveID) 79 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 74 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 97(i) 79 + Store 97(i) 103 + Branch 104 + 104: Label + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 + LoopMerge 106 107 None + Branch 110 + 110: Label + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 + 111: 92(int) Load 97(i) + 118: 115(bool) SLessThan 111 114 + BranchConditional 118 105 106 + 105: Label + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 122 122 16 16 + 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 120 119(output) 79 + Store 119(output) 129 + 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 132 132 16 16 + 130: 92(int) Load 97(i) + 136: 134(ptr) AccessChain 67(input) 130 133 + 137: 21(fvec3) Load 136 + 170: 11(int) Load 69(InvocationID) + 173: 171(ptr) AccessChain 167 103 133 170 + 174: 138 Load 173 + 177: 18(fvec4) CompositeExtract 174 0 + 178: 21(fvec3) VectorShuffle 177 177 0 1 2 + 179: 18(fvec4) CompositeExtract 174 1 + 180: 21(fvec3) VectorShuffle 179 179 0 1 2 + 181: 18(fvec4) CompositeExtract 174 2 + 182: 21(fvec3) VectorShuffle 181 181 0 1 2 + 183: 175 CompositeConstruct 178 180 182 + 184: 21(fvec3) VectorTimesMatrix 137 183 + 185: 134(ptr) AccessChain 119(output) 114 + Store 185 184 + 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 189 189 16 16 + 187: 92(int) Load 97(i) + 191: 134(ptr) AccessChain 67(input) 187 190 + 192: 21(fvec3) Load 191 + 193: 134(ptr) AccessChain 119(output) 186 + Store 193 192 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 199 199 16 16 + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 197 196(pos) 79 + 202: 92(int) Load 97(i) + 203: 194(ptr) AccessChain 67(input) 202 103 + 204: 18(fvec4) Load 203 + Store 196(pos) 204 + 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 208 208 16 16 + 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 206 205(worldPos) 79 + 211: 18(fvec4) Load 196(pos) + 212: 11(int) Load 69(InvocationID) + 213: 171(ptr) AccessChain 167 103 133 212 + 214: 138 Load 213 + 215: 18(fvec4) VectorTimesMatrix 211 214 + Store 205(worldPos) 215 + 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 219 219 16 16 + 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 217 216(lPos) 79 + 224: 222(ptr) AccessChain 167 103 190 + 225: 18(fvec4) Load 224 + 226: 11(int) Load 69(InvocationID) + 227: 171(ptr) AccessChain 167 103 133 226 + 228: 138 Load 227 + 229: 18(fvec4) VectorTimesMatrix 225 228 + 230: 21(fvec3) VectorShuffle 229 229 0 1 2 + Store 216(lPos) 230 + 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 234 234 16 16 + 232: 21(fvec3) Load 216(lPos) + 235: 18(fvec4) Load 205(worldPos) + 236: 21(fvec3) VectorShuffle 235 235 0 1 2 + 237: 21(fvec3) FSub 232 236 + 238: 134(ptr) AccessChain 119(output) 231 + Store 238 237 + 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 242 242 16 16 + 240: 18(fvec4) Load 205(worldPos) + 243: 21(fvec3) VectorShuffle 240 240 0 1 2 + 244: 21(fvec3) FNegate 243 + 245: 134(ptr) AccessChain 119(output) 239 + Store 245 244 + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 248 248 16 16 + 246: 18(fvec4) Load 205(worldPos) + 249: 11(int) Load 69(InvocationID) + 250: 171(ptr) AccessChain 167 103 103 249 + 251: 138 Load 250 + 252: 18(fvec4) VectorTimesMatrix 246 251 + 253: 194(ptr) AccessChain 119(output) 103 + Store 253 252 + 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 256 256 16 16 + 254: 11(int) Load 69(InvocationID) + 257: 63(ptr) AccessChain 119(output) 133 + Store 257 254 + 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 260 260 16 16 + 258: 11(int) Load 70(PrimitiveID) + 261: 63(ptr) AccessChain 119(output) 190 + Store 261 258 + 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 267 267 16 16 + 268: 194(ptr) AccessChain 119(output) 103 + 270: 18(fvec4) Load 268 + Store 264(outStream.Pos) 270 + 276: 63(ptr) AccessChain 119(output) 133 + 277: 11(int) Load 276 + Store 273(outStream.ViewportIndex) 277 + 281: 63(ptr) AccessChain 119(output) 190 + 282: 11(int) Load 281 + Store 278(outStream.PrimitiveID) 282 + 288: 134(ptr) AccessChain 119(output) 114 + 289: 21(fvec3) Load 288 + Store 285(outStream.Normal) 289 + 293: 134(ptr) AccessChain 119(output) 186 + 294: 21(fvec3) Load 293 + Store 290(outStream.Color) 294 + 298: 134(ptr) AccessChain 119(output) 239 + 299: 21(fvec3) Load 298 + Store 295(outStream.ViewVec) 299 + 303: 134(ptr) AccessChain 119(output) 231 + 304: 21(fvec3) Load 303 + Store 300(outStream.LightVec) 304 EmitVertex - Branch 108 - 108: Label - 306: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 94 94 16 16 - 308: 95(int) Load 100(i) - 309: 95(int) IAdd 308 134 - Store 100(i) 309 - Branch 105 - 107: Label - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 311: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 312 312 16 16 + Branch 107 + 107: Label + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 + 305: 92(int) Load 97(i) + 308: 92(int) IAdd 305 133 + Store 97(i) 308 + Branch 104 + 106: Label + 309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 311 311 16 16 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index e85d2d0306..14f1e4b21a 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -3,19 +3,19 @@ WARNING: 0:158: '' : attribute does not apply to entry point // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 702 +// Id's are bound by 705 Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 6 "main" 594 601 608 642 651 658 665 680 695 + EntryPoint TessellationControl 6 "main" 597 604 611 645 654 661 668 683 698 ExecutionMode 6 OutputVertices 4 ExecutionMode 6 Quads ExecutionMode 6 SpacingEqual ExecutionMode 6 VertexOrderCw - 1: String "" + 2: String "" 9: String "float" 12: String "uint" 30: String "screenSpaceTessFactor" @@ -28,47 +28,47 @@ WARNING: 0:158: '' : attribute does not apply to entry point // OpModuleProcessed hlsl-offsets #line 1 " - 41: String "p0" + 39: String "p0" 45: String "p1" 53: String "bool" 61: String "frustumCheck" - 67: String "Pos" - 70: String "inUV" - 79: String "Normal" - 83: String "UV" - 87: String "VSOutput" - 98: String "TessLevelOuter" - 102: String "TessLevelInner" - 105: String "ConstantsHSOutput" - 111: String "ConstantsHS" - 117: String "patch" - 129: String "HSOutput" - 136: String "@main" - 144: String "InvocationID" - 152: String "midPoint" - 165: String "radius" - 176: String "v0" - 186: String "modelview" - 191: String "lightPos" - 195: String "frustumPlanes" - 198: String "tessellatedEdgeSize" - 202: String "viewportDim" - 206: String "UBO" - 209: String "ubo" - 218: String "int" - 231: String "clip0" - 249: String "clip1" - 326: String "pos" - 333: String "type.2d.image" - 334: String "@type.2d.image" - 340: String "textureHeight" - 344: String "type.sampler" - 345: String "@type.sampler" - 350: String "samplerHeight" - 354: String "type.sampled.image" - 355: String "@type.sampled.image" - 374: String "i" - 425: String "output" + 65: String "Pos" + 69: String "inUV" + 78: String "Normal" + 82: String "UV" + 86: String "VSOutput" + 97: String "TessLevelOuter" + 101: String "TessLevelInner" + 104: String "ConstantsHSOutput" + 110: String "ConstantsHS" + 114: String "patch" + 127: String "HSOutput" + 134: String "@main" + 141: String "InvocationID" + 146: String "midPoint" + 159: String "radius" + 170: String "v0" + 182: String "modelview" + 187: String "lightPos" + 191: String "frustumPlanes" + 194: String "tessellatedEdgeSize" + 198: String "viewportDim" + 202: String "UBO" + 205: String "ubo" + 214: String "int" + 225: String "clip0" + 243: String "clip1" + 321: String "pos" + 328: String "type.2d.image" + 330: String "@type.2d.image" + 336: String "textureHeight" + 341: String "type.sampler" + 342: String "@type.sampler" + 347: String "samplerHeight" + 351: String "type.sampled.image" + 352: String "@type.sampled.image" + 369: String "i" + 423: String "output" Name 6 "main" Name 28 "screenSpaceTessFactor(vf4;vf4;" Name 26 "p0" @@ -76,103 +76,103 @@ WARNING: 0:158: '' : attribute does not apply to entry point Name 59 "frustumCheck(vf4;vf2;" Name 57 "Pos" Name 58 "inUV" - Name 74 "VSOutput" - MemberName 74(VSOutput) 0 "Pos" - MemberName 74(VSOutput) 1 "Normal" - MemberName 74(VSOutput) 2 "UV" - Name 96 "ConstantsHSOutput" - MemberName 96(ConstantsHSOutput) 0 "TessLevelOuter" - MemberName 96(ConstantsHSOutput) 1 "TessLevelInner" - Name 109 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" - Name 108 "patch" - Name 121 "HSOutput" - MemberName 121(HSOutput) 0 "Pos" - MemberName 121(HSOutput) 1 "Normal" - MemberName 121(HSOutput) 2 "UV" - Name 134 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" - Name 132 "patch" - Name 133 "InvocationID" - Name 150 "midPoint" - Name 163 "radius" - Name 174 "v0" - Name 184 "UBO" - MemberName 184(UBO) 0 "projection" - MemberName 184(UBO) 1 "modelview" - MemberName 184(UBO) 2 "lightPos" - MemberName 184(UBO) 3 "frustumPlanes" - MemberName 184(UBO) 4 "displacementFactor" - MemberName 184(UBO) 5 "tessellationFactor" - MemberName 184(UBO) 6 "viewportDim" - MemberName 184(UBO) 7 "tessellatedEdgeSize" - Name 207 "ubo" - MemberName 207(ubo) 0 "ubo" - Name 214 "" - Name 229 "clip0" - Name 247 "clip1" - Name 324 "pos" - Name 338 "textureHeight" - Name 348 "samplerHeight" - Name 372 "i" - Name 423 "output" - Name 433 "param" + Name 73 "VSOutput" + MemberName 73(VSOutput) 0 "Pos" + MemberName 73(VSOutput) 1 "Normal" + MemberName 73(VSOutput) 2 "UV" + Name 95 "ConstantsHSOutput" + MemberName 95(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 95(ConstantsHSOutput) 1 "TessLevelInner" + Name 108 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" + Name 107 "patch" + Name 119 "HSOutput" + MemberName 119(HSOutput) 0 "Pos" + MemberName 119(HSOutput) 1 "Normal" + MemberName 119(HSOutput) 2 "UV" + Name 132 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" + Name 130 "patch" + Name 131 "InvocationID" + Name 144 "midPoint" + Name 157 "radius" + Name 168 "v0" + Name 180 "UBO" + MemberName 180(UBO) 0 "projection" + MemberName 180(UBO) 1 "modelview" + MemberName 180(UBO) 2 "lightPos" + MemberName 180(UBO) 3 "frustumPlanes" + MemberName 180(UBO) 4 "displacementFactor" + MemberName 180(UBO) 5 "tessellationFactor" + MemberName 180(UBO) 6 "viewportDim" + MemberName 180(UBO) 7 "tessellatedEdgeSize" + Name 203 "ubo" + MemberName 203(ubo) 0 "ubo" + Name 210 "" + Name 223 "clip0" + Name 241 "clip1" + Name 319 "pos" + Name 334 "textureHeight" + Name 345 "samplerHeight" + Name 367 "i" + Name 421 "output" + Name 431 "param" Name 436 "param" - Name 474 "param" + Name 471 "param" Name 477 "param" - Name 484 "param" + Name 482 "param" Name 487 "param" - Name 494 "param" + Name 492 "param" Name 497 "param" - Name 504 "param" + Name 502 "param" Name 507 "param" Name 560 "output" - Name 591 "patch" - Name 594 "patch.Pos" - Name 601 "patch.Normal" - Name 608 "patch.UV" - Name 640 "InvocationID" - Name 642 "InvocationID" - Name 644 "flattenTemp" - Name 645 "param" - Name 647 "param" - Name 651 "@entryPointOutput.Pos" - Name 658 "@entryPointOutput.Normal" - Name 665 "@entryPointOutput.UV" - Name 675 "@patchConstantResult" - Name 676 "param" - Name 680 "@patchConstantOutput.TessLevelOuter" - Name 695 "@patchConstantOutput.TessLevelInner" - Decorate 182 ArrayStride 16 - MemberDecorate 184(UBO) 0 RowMajor - MemberDecorate 184(UBO) 0 Offset 0 - MemberDecorate 184(UBO) 0 MatrixStride 16 - MemberDecorate 184(UBO) 1 RowMajor - MemberDecorate 184(UBO) 1 Offset 64 - MemberDecorate 184(UBO) 1 MatrixStride 16 - MemberDecorate 184(UBO) 2 Offset 128 - MemberDecorate 184(UBO) 3 Offset 144 - MemberDecorate 184(UBO) 4 Offset 240 - MemberDecorate 184(UBO) 5 Offset 244 - MemberDecorate 184(UBO) 6 Offset 248 - MemberDecorate 184(UBO) 7 Offset 256 - MemberDecorate 207(ubo) 0 Offset 0 - Decorate 207(ubo) Block - Decorate 214 DescriptorSet 0 - Decorate 214 Binding 0 - Decorate 338(textureHeight) DescriptorSet 0 - Decorate 338(textureHeight) Binding 1 - Decorate 348(samplerHeight) DescriptorSet 0 - Decorate 348(samplerHeight) Binding 1 - Decorate 594(patch.Pos) BuiltIn Position - Decorate 601(patch.Normal) Location 0 - Decorate 608(patch.UV) Location 1 - Decorate 642(InvocationID) BuiltIn InvocationId - Decorate 651(@entryPointOutput.Pos) BuiltIn Position - Decorate 658(@entryPointOutput.Normal) Location 0 - Decorate 665(@entryPointOutput.UV) Location 1 - Decorate 680(@patchConstantOutput.TessLevelOuter) Patch - Decorate 680(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 695(@patchConstantOutput.TessLevelInner) Patch - Decorate 695(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + Name 594 "patch" + Name 597 "patch.Pos" + Name 604 "patch.Normal" + Name 611 "patch.UV" + Name 643 "InvocationID" + Name 645 "InvocationID" + Name 647 "flattenTemp" + Name 648 "param" + Name 650 "param" + Name 654 "@entryPointOutput.Pos" + Name 661 "@entryPointOutput.Normal" + Name 668 "@entryPointOutput.UV" + Name 678 "@patchConstantResult" + Name 679 "param" + Name 683 "@patchConstantOutput.TessLevelOuter" + Name 698 "@patchConstantOutput.TessLevelInner" + Decorate 178 ArrayStride 16 + MemberDecorate 180(UBO) 0 RowMajor + MemberDecorate 180(UBO) 0 Offset 0 + MemberDecorate 180(UBO) 0 MatrixStride 16 + MemberDecorate 180(UBO) 1 RowMajor + MemberDecorate 180(UBO) 1 Offset 64 + MemberDecorate 180(UBO) 1 MatrixStride 16 + MemberDecorate 180(UBO) 2 Offset 128 + MemberDecorate 180(UBO) 3 Offset 144 + MemberDecorate 180(UBO) 4 Offset 240 + MemberDecorate 180(UBO) 5 Offset 244 + MemberDecorate 180(UBO) 6 Offset 248 + MemberDecorate 180(UBO) 7 Offset 256 + MemberDecorate 203(ubo) 0 Offset 0 + Decorate 203(ubo) Block + Decorate 210 DescriptorSet 0 + Decorate 210 Binding 0 + Decorate 334(textureHeight) DescriptorSet 0 + Decorate 334(textureHeight) Binding 1 + Decorate 345(samplerHeight) DescriptorSet 0 + Decorate 345(samplerHeight) Binding 1 + Decorate 597(patch.Pos) BuiltIn Position + Decorate 604(patch.Normal) Location 0 + Decorate 611(patch.UV) Location 1 + Decorate 645(InvocationID) BuiltIn InvocationId + Decorate 654(@entryPointOutput.Pos) BuiltIn Position + Decorate 661(@entryPointOutput.Normal) Location 0 + Decorate 668(@entryPointOutput.UV) Location 1 + Decorate 683(@patchConstantOutput.TessLevelOuter) Patch + Decorate 683(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 698(@patchConstantOutput.TessLevelInner) Patch + Decorate 698(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -180,752 +180,744 @@ WARNING: 0:158: '' : attribute does not apply to entry point 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 + 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 + 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 4 19: 11(int) Constant 4 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 + 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 19 21: TypePointer Function 18(fvec4) 22: 11(int) Constant 7 - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 + 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 22 16 24: TypeFunction 8(float) 21(ptr) 21(ptr) - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 20 - 32: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 33 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 10 20 20 + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 33 34: 11(int) Constant 65 36: 11(int) Constant 1 37: 11(int) Constant 5 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 19 32 37 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 30 25 32 34 16 35 30 17 34 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 41 20 32 34 16 31 19 36 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 19 32 37 + 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 30 25 32 34 16 35 30 17 34 + 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 39 20 32 34 16 31 19 36 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 46: 11(int) Constant 2 - 44: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 32 34 16 31 19 46 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 45 20 32 34 16 31 19 46 48: TypeVector 8(float) 2 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 46 + 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 46 50: TypePointer Function 48(fvec2) - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 22 16 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 22 16 52: TypeBool - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 53 14 46 16 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 53 14 46 16 55: TypeFunction 52(bool) 21(ptr) 50(ptr) - 56: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 54 20 49 + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 54 20 49 63: 11(int) Constant 95 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 61 56 32 63 16 35 61 17 63 - 66: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 20 32 63 16 62 19 36 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 49 32 63 16 62 19 46 - 72: TypeVector 8(float) 3 - 73: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 74(VSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) - 76: 11(int) Constant 44 - 77: 11(int) Constant 13 - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 20 32 76 77 16 16 17 - 80: 11(int) Constant 45 - 81: 11(int) Constant 35 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 80 81 16 16 17 - 84: 11(int) Constant 46 - 85: 11(int) Constant 31 - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 84 85 16 16 17 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 87 36 32 63 16 35 87 16 17 75 78 82 - 88: TypeArray 74(VSOutput) 19 - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 86 19 - 90: TypePointer Function 88 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 22 16 - 92: TypeArray 8(float) 19 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 - 94: TypeArray 8(float) 46 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 46 -96(ConstantsHSOutput): TypeStruct 92 94 - 99: 11(int) Constant 58 - 100: 11(int) Constant 25 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 98 93 32 99 100 16 16 17 - 103: 11(int) Constant 59 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 102 95 32 103 100 16 16 17 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 105 36 32 63 16 35 105 16 17 97 101 - 106: TypeFunction 96(ConstantsHSOutput) 90(ptr) - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 104 89 - 113: 11(int) Constant 112 - 112: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 111 107 32 113 16 35 111 17 113 - 116: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 89 32 113 16 112 19 36 - 119: TypePointer Function 11(int) - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 - 121(HSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) - 123: 11(int) Constant 51 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 20 32 123 14 16 16 17 - 125: 11(int) Constant 52 - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 125 81 16 16 17 - 127: 11(int) Constant 53 - 126: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 127 85 16 16 17 - 128: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 129 36 32 113 16 35 129 16 17 122 124 126 - 130: TypeFunction 121(HSOutput) 90(ptr) 119(ptr) - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 128 89 13 - 138: 11(int) Constant 158 - 137: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 136 131 32 138 16 35 136 17 138 - 141: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 89 32 138 16 137 19 36 - 143: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 144 13 32 138 16 137 19 46 - 149: 11(int) Constant 67 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 20 32 149 16 31 19 - 154: 8(float) Constant 1056964608 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 61 56 32 63 16 35 61 17 63 + 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 20 32 63 16 62 19 36 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 69 49 32 63 16 62 19 46 + 71: TypeVector 8(float) 3 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 73(VSOutput): TypeStruct 18(fvec4) 71(fvec3) 48(fvec2) + 75: 11(int) Constant 44 + 76: 11(int) Constant 13 + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 75 76 16 16 17 + 79: 11(int) Constant 45 + 80: 11(int) Constant 35 + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 72 32 79 80 16 16 17 + 83: 11(int) Constant 46 + 84: 11(int) Constant 31 + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 49 32 83 84 16 16 17 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 86 36 32 63 16 35 86 16 17 74 77 81 + 87: TypeArray 73(VSOutput) 19 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 85 19 + 89: TypePointer Function 87 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 22 16 + 91: TypeArray 8(float) 19 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 + 93: TypeArray 8(float) 46 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 46 +95(ConstantsHSOutput): TypeStruct 91 93 + 98: 11(int) Constant 58 + 99: 11(int) Constant 25 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 92 32 98 99 16 16 17 + 102: 11(int) Constant 59 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 94 32 102 99 16 16 17 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 104 36 32 63 16 35 104 16 17 96 100 + 105: TypeFunction 95(ConstantsHSOutput) 89(ptr) + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 103 88 + 112: 11(int) Constant 112 + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 110 106 32 112 16 35 110 17 112 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 88 32 112 16 111 19 36 + 117: TypePointer Function 11(int) + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 + 119(HSOutput): TypeStruct 18(fvec4) 71(fvec3) 48(fvec2) + 121: 11(int) Constant 51 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 121 14 16 16 17 + 123: 11(int) Constant 52 + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 72 32 123 80 16 16 17 + 125: 11(int) Constant 53 + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 49 32 125 84 16 16 17 + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 127 36 32 112 16 35 127 16 17 120 122 124 + 128: TypeFunction 119(HSOutput) 89(ptr) 117(ptr) + 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 126 88 13 + 136: 11(int) Constant 158 + 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 134 129 32 136 16 35 134 17 136 + 137: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 88 32 136 16 135 19 36 + 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 13 32 136 16 135 19 46 + 147: 11(int) Constant 67 + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 20 32 147 16 31 19 + 150: 8(float) Constant 1056964608 + 155: TypePointer Function 8(float) + 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 160: 11(int) Constant 69 - 161: TypePointer Function 8(float) - 162: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 165 10 32 160 16 31 19 - 170: 8(float) Constant 1073741824 - 173: 11(int) Constant 72 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 176 20 32 173 16 31 19 - 179: TypeMatrix 18(fvec4) 4 - 181: 52(bool) ConstantTrue - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 181 - 182: TypeArray 18(fvec4) 15 - 183: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 - 184(UBO): TypeStruct 179 179 18(fvec4) 182 8(float) 8(float) 48(fvec2) 8(float) - 187: 11(int) Constant 29 - 188: 11(int) Constant 20 - 185: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 180 32 187 188 16 16 17 - 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 180 32 187 188 16 16 17 - 192: 11(int) Constant 30 - 193: 11(int) Constant 17 - 190: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 20 32 192 193 16 16 17 - 196: 11(int) Constant 22 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 195 183 32 85 196 16 16 17 - 199: 11(int) Constant 27 - 197: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 10 32 81 199 16 16 17 - 200: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 10 32 81 199 16 16 17 - 203: 11(int) Constant 34 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 202 49 32 203 188 16 16 17 - 204: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 10 32 81 199 16 16 17 - 205: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 206 36 32 173 16 35 206 16 17 185 189 190 194 197 200 201 204 - 207(ubo): TypeStruct 184(UBO) - 210: 11(int) Constant 37 - 208: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 209 205 32 210 210 16 16 17 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 209 36 32 173 16 35 209 16 17 208 - 212: TypePointer Uniform 207(ubo) - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 211 46 16 - 214: 212(ptr) Variable Uniform - 216: 11(int) Constant 8 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 211 32 173 16 35 1 214 216 - 217: TypeInt 32 1 - 219: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 218 14 19 16 - 220: 217(int) Constant 0 - 221: 217(int) Constant 1 - 222: TypePointer Uniform 179 - 223: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 180 46 16 - 228: 11(int) Constant 75 - 230: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 231 20 32 228 16 31 19 - 235: 8(float) Constant 0 - 236: 72(fvec3) ConstantComposite 235 235 235 - 246: 11(int) Constant 76 - 248: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 20 32 246 16 31 19 - 262: 11(int) Constant 79 - 269: 11(int) Constant 80 + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 32 160 16 31 19 + 166: 8(float) Constant 1073741824 + 171: 11(int) Constant 72 + 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 20 32 171 16 31 19 + 175: TypeMatrix 18(fvec4) 4 + 177: 52(bool) ConstantTrue + 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 177 + 178: TypeArray 18(fvec4) 15 + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 + 180(UBO): TypeStruct 175 175 18(fvec4) 178 8(float) 8(float) 48(fvec2) 8(float) + 183: 11(int) Constant 29 + 184: 11(int) Constant 20 + 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 182 176 32 183 184 16 16 17 + 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 182 176 32 183 184 16 16 17 + 188: 11(int) Constant 30 + 189: 11(int) Constant 17 + 186: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 20 32 188 189 16 16 17 + 192: 11(int) Constant 22 + 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 179 32 84 192 16 16 17 + 195: 11(int) Constant 27 + 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 32 80 195 16 16 17 + 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 32 80 195 16 16 17 + 199: 11(int) Constant 34 + 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 49 32 199 184 16 16 17 + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 32 80 195 16 16 17 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 202 36 32 171 16 35 202 16 17 181 185 186 190 193 196 197 200 + 203(ubo): TypeStruct 180(UBO) + 206: 11(int) Constant 37 + 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 205 201 32 206 206 16 16 17 + 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 205 36 32 171 16 35 205 16 17 204 + 208: TypePointer Uniform 203(ubo) + 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 207 46 16 + 210: 208(ptr) Variable Uniform + 212: 11(int) Constant 8 + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 207 32 171 16 35 2 210 212 + 213: TypeInt 32 1 + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 214 14 19 16 + 216: 213(int) Constant 0 + 217: 213(int) Constant 1 + 218: TypePointer Uniform 175 + 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 176 46 16 + 226: 11(int) Constant 75 + 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 20 32 226 16 31 19 + 231: 8(float) Constant 0 + 232: 71(fvec3) ConstantComposite 231 231 231 + 244: 11(int) Constant 76 + 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 243 20 32 244 16 31 19 + 259: 11(int) Constant 79 + 266: 11(int) Constant 80 + 271: 213(int) Constant 6 + 272: TypePointer Uniform 48(fvec2) + 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 46 16 276: 11(int) Constant 83 - 277: 217(int) Constant 6 - 278: TypePointer Uniform 48(fvec2) - 279: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 46 16 - 290: 11(int) Constant 84 - 301: 11(int) Constant 89 - 305: 217(int) Constant 7 - 306: TypePointer Uniform 8(float) - 307: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 46 16 - 311: 217(int) Constant 5 - 315: 8(float) Constant 1065353216 - 316: 8(float) Constant 1115684864 - 323: 11(int) Constant 98 - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 326 20 32 323 16 62 19 - 330: 11(int) Constant 99 - 331: TypeImage 8(float) 2D sampled format:Unknown - 335: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 332: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 333 16 32 330 16 35 334 335 17 - 336: TypePointer UniformConstant 331 - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 332 16 16 -338(textureHeight): 336(ptr) Variable UniformConstant - 339: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 340 332 32 330 16 35 340 338(textureHeight) 216 - 342: TypeSampler - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 344 36 32 330 16 35 345 335 17 - 346: TypePointer UniformConstant 342 - 347: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 343 16 16 -348(samplerHeight): 346(ptr) Variable UniformConstant - 349: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 350 343 32 330 16 35 350 348(samplerHeight) 216 - 352: TypeSampledImage 331 - 353: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 354 16 32 330 16 35 355 335 17 - 360: 217(int) Constant 4 - 369: 11(int) Constant 102 - 370: TypePointer Function 217(int) - 371: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 219 22 16 - 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 374 219 32 369 16 62 19 - 389: 11(int) Constant 103 - 391: 217(int) Constant 3 - 393: TypePointer Uniform 18(fvec4) - 394: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 - 398: 8(float) Constant 1090519040 - 403: 52(bool) ConstantFalse - 406: 11(int) Constant 105 - 414: 11(int) Constant 108 - 420: 11(int) Constant 113 - 421: TypePointer Function 96(ConstantsHSOutput) - 422: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 104 22 16 - 424: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 425 104 32 420 16 112 19 - 427: 92 ConstantComposite 235 235 235 235 - 428: 94 ConstantComposite 235 235 - 429:96(ConstantsHSOutput) ConstantComposite 427 428 - 431: 11(int) Constant 115 - 432: 217(int) Constant 2 - 445: 11(int) Constant 117 - 448: 11(int) Constant 118 - 451: 11(int) Constant 119 - 454: 11(int) Constant 120 - 457: 11(int) Constant 121 - 460: 11(int) Constant 122 - 465: 11(int) Constant 126 - 473: 11(int) Constant 128 - 483: 11(int) Constant 129 - 493: 11(int) Constant 130 - 503: 11(int) Constant 131 - 513: 11(int) Constant 132 - 521: 11(int) Constant 133 - 531: 11(int) Constant 139 - 534: 11(int) Constant 140 - 537: 11(int) Constant 141 - 540: 11(int) Constant 142 - 543: 11(int) Constant 143 - 546: 11(int) Constant 144 - 550: 11(int) Constant 148 - 557: 11(int) Constant 159 - 558: TypePointer Function 121(HSOutput) - 559: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 22 16 - 561: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 425 128 32 557 16 137 19 - 563: 18(fvec4) ConstantComposite 235 235 235 235 - 564: 48(fvec2) ConstantComposite 235 235 - 565:121(HSOutput) ConstantComposite 563 236 564 - 567: 11(int) Constant 160 - 573: 11(int) Constant 161 - 575: TypePointer Function 72(fvec3) - 576: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 22 16 - 581: 11(int) Constant 162 - 587: 11(int) Constant 163 - 592: TypeArray 18(fvec4) 19 - 593: TypePointer Input 592 - 594(patch.Pos): 593(ptr) Variable Input - 595: TypePointer Input 18(fvec4) - 599: TypeArray 72(fvec3) 19 - 600: TypePointer Input 599 -601(patch.Normal): 600(ptr) Variable Input - 602: TypePointer Input 72(fvec3) - 606: TypeArray 48(fvec2) 19 - 607: TypePointer Input 606 - 608(patch.UV): 607(ptr) Variable Input - 609: TypePointer Input 48(fvec2) - 641: TypePointer Input 11(int) -642(InvocationID): 641(ptr) Variable Input - 650: TypePointer Output 592 -651(@entryPointOutput.Pos): 650(ptr) Variable Output - 655: TypePointer Output 18(fvec4) - 657: TypePointer Output 599 -658(@entryPointOutput.Normal): 657(ptr) Variable Output - 662: TypePointer Output 72(fvec3) - 664: TypePointer Output 606 -665(@entryPointOutput.UV): 664(ptr) Variable Output - 669: TypePointer Output 48(fvec2) - 679: TypePointer Output 92 -680(@patchConstantOutput.TessLevelOuter): 679(ptr) Variable Output - 683: TypePointer Output 8(float) - 694: TypePointer Output 94 -695(@patchConstantOutput.TessLevelInner): 694(ptr) Variable Output - Line 1 158 1 + 287: 11(int) Constant 84 + 298: 11(int) Constant 89 + 301: 213(int) Constant 7 + 302: TypePointer Uniform 8(float) + 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 46 16 + 307: 213(int) Constant 5 + 311: 8(float) Constant 1065353216 + 312: 8(float) Constant 1115684864 + 322: 11(int) Constant 98 + 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 321 20 32 322 16 62 19 + 326: TypeImage 8(float) 2D sampled format:Unknown + 329: 11(int) Constant 99 + 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 328 16 32 329 16 35 330 331 17 + 332: TypePointer UniformConstant 326 + 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 327 16 16 +334(textureHeight): 332(ptr) Variable UniformConstant + 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 336 327 32 329 16 35 336 334(textureHeight) 212 + 339: TypeSampler + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 341 36 32 329 16 35 342 331 17 + 343: TypePointer UniformConstant 339 + 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 340 16 16 +345(samplerHeight): 343(ptr) Variable UniformConstant + 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 347 340 32 329 16 35 347 345(samplerHeight) 212 + 349: TypeSampledImage 326 + 350: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 351 16 32 329 16 35 352 331 17 + 357: 213(int) Constant 4 + 365: TypePointer Function 213(int) + 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 215 22 16 + 370: 11(int) Constant 102 + 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 369 215 32 370 16 62 19 + 387: 11(int) Constant 103 + 388: 213(int) Constant 3 + 390: TypePointer Uniform 18(fvec4) + 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 + 395: 8(float) Constant 1090519040 + 400: 52(bool) ConstantFalse + 403: 11(int) Constant 105 + 413: 11(int) Constant 108 + 419: TypePointer Function 95(ConstantsHSOutput) + 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 22 16 + 424: 11(int) Constant 113 + 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 423 103 32 424 16 111 19 + 427: 91 ConstantComposite 231 231 231 231 + 428: 93 ConstantComposite 231 231 + 429:95(ConstantsHSOutput) ConstantComposite 427 428 + 430: 213(int) Constant 2 + 434: 11(int) Constant 115 + 446: 11(int) Constant 117 + 449: 11(int) Constant 118 + 452: 11(int) Constant 119 + 455: 11(int) Constant 120 + 458: 11(int) Constant 121 + 461: 11(int) Constant 122 + 466: 11(int) Constant 126 + 475: 11(int) Constant 128 + 485: 11(int) Constant 129 + 495: 11(int) Constant 130 + 505: 11(int) Constant 131 + 514: 11(int) Constant 132 + 522: 11(int) Constant 133 + 532: 11(int) Constant 139 + 535: 11(int) Constant 140 + 538: 11(int) Constant 141 + 541: 11(int) Constant 142 + 544: 11(int) Constant 143 + 547: 11(int) Constant 144 + 552: 11(int) Constant 148 + 558: TypePointer Function 119(HSOutput) + 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 126 22 16 + 562: 11(int) Constant 159 + 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 423 126 32 562 16 135 19 + 565: 18(fvec4) ConstantComposite 231 231 231 231 + 566: 48(fvec2) ConstantComposite 231 231 + 567:119(HSOutput) ConstantComposite 565 232 566 + 570: 11(int) Constant 160 + 576: 11(int) Constant 161 + 577: TypePointer Function 71(fvec3) + 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 22 16 + 584: 11(int) Constant 162 + 590: 11(int) Constant 163 + 595: TypeArray 18(fvec4) 19 + 596: TypePointer Input 595 + 597(patch.Pos): 596(ptr) Variable Input + 598: TypePointer Input 18(fvec4) + 602: TypeArray 71(fvec3) 19 + 603: TypePointer Input 602 +604(patch.Normal): 603(ptr) Variable Input + 605: TypePointer Input 71(fvec3) + 609: TypeArray 48(fvec2) 19 + 610: TypePointer Input 609 + 611(patch.UV): 610(ptr) Variable Input + 612: TypePointer Input 48(fvec2) + 644: TypePointer Input 11(int) +645(InvocationID): 644(ptr) Variable Input + 653: TypePointer Output 595 +654(@entryPointOutput.Pos): 653(ptr) Variable Output + 658: TypePointer Output 18(fvec4) + 660: TypePointer Output 602 +661(@entryPointOutput.Normal): 660(ptr) Variable Output + 665: TypePointer Output 71(fvec3) + 667: TypePointer Output 609 +668(@entryPointOutput.UV): 667(ptr) Variable Output + 672: TypePointer Output 48(fvec2) + 682: TypePointer Output 91 +683(@patchConstantOutput.TessLevelOuter): 682(ptr) Variable Output + 686: TypePointer Output 8(float) + 697: TypePointer Output 93 +698(@patchConstantOutput.TessLevelInner): 697(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 591(patch): 90(ptr) Variable Function -640(InvocationID): 119(ptr) Variable Function -644(flattenTemp): 558(ptr) Variable Function - 645(param): 90(ptr) Variable Function - 647(param): 119(ptr) Variable Function -675(@patchConstantResult): 421(ptr) Variable Function - 676(param): 90(ptr) Variable Function - Line 1 158 0 - 596: 595(ptr) AccessChain 594(patch.Pos) 220 - 597: 18(fvec4) Load 596 - 598: 21(ptr) AccessChain 591(patch) 220 220 - Store 598 597 - 603: 602(ptr) AccessChain 601(patch.Normal) 220 - 604: 72(fvec3) Load 603 - 605: 575(ptr) AccessChain 591(patch) 220 221 - Store 605 604 - 610: 609(ptr) AccessChain 608(patch.UV) 220 - 611: 48(fvec2) Load 610 - 612: 50(ptr) AccessChain 591(patch) 220 432 - Store 612 611 - 613: 595(ptr) AccessChain 594(patch.Pos) 221 - 614: 18(fvec4) Load 613 - 615: 21(ptr) AccessChain 591(patch) 221 220 + 594(patch): 89(ptr) Variable Function +643(InvocationID): 117(ptr) Variable Function +647(flattenTemp): 558(ptr) Variable Function + 648(param): 89(ptr) Variable Function + 650(param): 117(ptr) Variable Function +678(@patchConstantResult): 419(ptr) Variable Function + 679(param): 89(ptr) Variable Function + 599: 598(ptr) AccessChain 597(patch.Pos) 216 + 600: 18(fvec4) Load 599 + 601: 21(ptr) AccessChain 594(patch) 216 216 + Store 601 600 + 606: 605(ptr) AccessChain 604(patch.Normal) 216 + 607: 71(fvec3) Load 606 + 608: 577(ptr) AccessChain 594(patch) 216 217 + Store 608 607 + 613: 612(ptr) AccessChain 611(patch.UV) 216 + 614: 48(fvec2) Load 613 + 615: 50(ptr) AccessChain 594(patch) 216 430 Store 615 614 - 616: 602(ptr) AccessChain 601(patch.Normal) 221 - 617: 72(fvec3) Load 616 - 618: 575(ptr) AccessChain 591(patch) 221 221 + 616: 598(ptr) AccessChain 597(patch.Pos) 217 + 617: 18(fvec4) Load 616 + 618: 21(ptr) AccessChain 594(patch) 217 216 Store 618 617 - 619: 609(ptr) AccessChain 608(patch.UV) 221 - 620: 48(fvec2) Load 619 - 621: 50(ptr) AccessChain 591(patch) 221 432 + 619: 605(ptr) AccessChain 604(patch.Normal) 217 + 620: 71(fvec3) Load 619 + 621: 577(ptr) AccessChain 594(patch) 217 217 Store 621 620 - 622: 595(ptr) AccessChain 594(patch.Pos) 432 - 623: 18(fvec4) Load 622 - 624: 21(ptr) AccessChain 591(patch) 432 220 + 622: 612(ptr) AccessChain 611(patch.UV) 217 + 623: 48(fvec2) Load 622 + 624: 50(ptr) AccessChain 594(patch) 217 430 Store 624 623 - 625: 602(ptr) AccessChain 601(patch.Normal) 432 - 626: 72(fvec3) Load 625 - 627: 575(ptr) AccessChain 591(patch) 432 221 + 625: 598(ptr) AccessChain 597(patch.Pos) 430 + 626: 18(fvec4) Load 625 + 627: 21(ptr) AccessChain 594(patch) 430 216 Store 627 626 - 628: 609(ptr) AccessChain 608(patch.UV) 432 - 629: 48(fvec2) Load 628 - 630: 50(ptr) AccessChain 591(patch) 432 432 + 628: 605(ptr) AccessChain 604(patch.Normal) 430 + 629: 71(fvec3) Load 628 + 630: 577(ptr) AccessChain 594(patch) 430 217 Store 630 629 - 631: 595(ptr) AccessChain 594(patch.Pos) 391 - 632: 18(fvec4) Load 631 - 633: 21(ptr) AccessChain 591(patch) 391 220 + 631: 612(ptr) AccessChain 611(patch.UV) 430 + 632: 48(fvec2) Load 631 + 633: 50(ptr) AccessChain 594(patch) 430 430 Store 633 632 - 634: 602(ptr) AccessChain 601(patch.Normal) 391 - 635: 72(fvec3) Load 634 - 636: 575(ptr) AccessChain 591(patch) 391 221 + 634: 598(ptr) AccessChain 597(patch.Pos) 388 + 635: 18(fvec4) Load 634 + 636: 21(ptr) AccessChain 594(patch) 388 216 Store 636 635 - 637: 609(ptr) AccessChain 608(patch.UV) 391 - 638: 48(fvec2) Load 637 - 639: 50(ptr) AccessChain 591(patch) 391 432 + 637: 605(ptr) AccessChain 604(patch.Normal) 388 + 638: 71(fvec3) Load 637 + 639: 577(ptr) AccessChain 594(patch) 388 217 Store 639 638 - 643: 11(int) Load 642(InvocationID) - Store 640(InvocationID) 643 - 646: 88 Load 591(patch) - Store 645(param) 646 - 648: 11(int) Load 640(InvocationID) - Store 647(param) 648 - 649:121(HSOutput) FunctionCall 134(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 645(param) 647(param) - Store 644(flattenTemp) 649 - 652: 11(int) Load 642(InvocationID) - 653: 21(ptr) AccessChain 644(flattenTemp) 220 - 654: 18(fvec4) Load 653 - 656: 655(ptr) AccessChain 651(@entryPointOutput.Pos) 652 - Store 656 654 - 659: 11(int) Load 642(InvocationID) - 660: 575(ptr) AccessChain 644(flattenTemp) 221 - 661: 72(fvec3) Load 660 - 663: 662(ptr) AccessChain 658(@entryPointOutput.Normal) 659 - Store 663 661 - 666: 11(int) Load 642(InvocationID) - 667: 50(ptr) AccessChain 644(flattenTemp) 432 - 668: 48(fvec2) Load 667 - 670: 669(ptr) AccessChain 665(@entryPointOutput.UV) 666 - Store 670 668 + 640: 612(ptr) AccessChain 611(patch.UV) 388 + 641: 48(fvec2) Load 640 + 642: 50(ptr) AccessChain 594(patch) 388 430 + Store 642 641 + 646: 11(int) Load 645(InvocationID) + Store 643(InvocationID) 646 + 649: 87 Load 594(patch) + Store 648(param) 649 + 651: 11(int) Load 643(InvocationID) + Store 650(param) 651 + 652:119(HSOutput) FunctionCall 132(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 648(param) 650(param) + Store 647(flattenTemp) 652 + 655: 11(int) Load 645(InvocationID) + 656: 21(ptr) AccessChain 647(flattenTemp) 216 + 657: 18(fvec4) Load 656 + 659: 658(ptr) AccessChain 654(@entryPointOutput.Pos) 655 + Store 659 657 + 662: 11(int) Load 645(InvocationID) + 663: 577(ptr) AccessChain 647(flattenTemp) 217 + 664: 71(fvec3) Load 663 + 666: 665(ptr) AccessChain 661(@entryPointOutput.Normal) 662 + Store 666 664 + 669: 11(int) Load 645(InvocationID) + 670: 50(ptr) AccessChain 647(flattenTemp) 430 + 671: 48(fvec2) Load 670 + 673: 672(ptr) AccessChain 668(@entryPointOutput.UV) 669 + Store 673 671 ControlBarrier 46 19 16 - 671: 11(int) Load 642(InvocationID) - 672: 52(bool) IEqual 671 220 - SelectionMerge 674 None - BranchConditional 672 673 674 - 673: Label - 677: 88 Load 591(patch) - Store 676(param) 677 - 678:96(ConstantsHSOutput) FunctionCall 109(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 676(param) - Store 675(@patchConstantResult) 678 - 681: 161(ptr) AccessChain 675(@patchConstantResult) 220 220 - 682: 8(float) Load 681 - 684: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 220 - Store 684 682 - 685: 161(ptr) AccessChain 675(@patchConstantResult) 220 221 - 686: 8(float) Load 685 - 687: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 221 - Store 687 686 - 688: 161(ptr) AccessChain 675(@patchConstantResult) 220 432 + 674: 11(int) Load 645(InvocationID) + 675: 52(bool) IEqual 674 216 + SelectionMerge 677 None + BranchConditional 675 676 677 + 676: Label + 680: 87 Load 594(patch) + Store 679(param) 680 + 681:95(ConstantsHSOutput) FunctionCall 108(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 679(param) + Store 678(@patchConstantResult) 681 + 684: 155(ptr) AccessChain 678(@patchConstantResult) 216 216 + 685: 8(float) Load 684 + 687: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 216 + Store 687 685 + 688: 155(ptr) AccessChain 678(@patchConstantResult) 216 217 689: 8(float) Load 688 - 690: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 432 + 690: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 217 Store 690 689 - 691: 161(ptr) AccessChain 675(@patchConstantResult) 220 391 + 691: 155(ptr) AccessChain 678(@patchConstantResult) 216 430 692: 8(float) Load 691 - 693: 683(ptr) AccessChain 680(@patchConstantOutput.TessLevelOuter) 391 + 693: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 430 Store 693 692 - 696: 161(ptr) AccessChain 675(@patchConstantResult) 221 220 - 697: 8(float) Load 696 - 698: 683(ptr) AccessChain 695(@patchConstantOutput.TessLevelInner) 220 - Store 698 697 - 699: 161(ptr) AccessChain 675(@patchConstantResult) 221 221 + 694: 155(ptr) AccessChain 678(@patchConstantResult) 216 388 + 695: 8(float) Load 694 + 696: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 388 + Store 696 695 + 699: 155(ptr) AccessChain 678(@patchConstantResult) 217 216 700: 8(float) Load 699 - 701: 683(ptr) AccessChain 695(@patchConstantOutput.TessLevelInner) 221 + 701: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 216 Store 701 700 - Branch 674 - 674: Label + 702: 155(ptr) AccessChain 678(@patchConstantResult) 217 217 + 703: 8(float) Load 702 + 704: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 217 + Store 704 703 + Branch 677 + 677: Label Return FunctionEnd - Line 1 65 1 28(screenSpaceTessFactor(vf4;vf4;): 8(float) Function None 24 26(p0): 21(ptr) FunctionParameter 27(p1): 21(ptr) FunctionParameter 29: Label - 150(midPoint): 21(ptr) Variable Function - 163(radius): 161(ptr) Variable Function - 174(v0): 21(ptr) Variable Function - 229(clip0): 21(ptr) Variable Function - 247(clip1): 21(ptr) Variable Function - 38: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 34 34 16 16 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 40 26(p0) 43 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 27(p1) 43 - 146: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(screenSpaceTessFactor(vf4;vf4;) - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 - 148: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 149 149 16 16 - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 151 150(midPoint) 43 - 155: 18(fvec4) Load 26(p0) - 156: 18(fvec4) Load 27(p1) - 157: 18(fvec4) FAdd 155 156 - 158: 18(fvec4) VectorTimesScalar 157 154 - Store 150(midPoint) 158 - 159: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 160 160 16 16 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 164 163(radius) 43 - 167: 18(fvec4) Load 26(p0) - 168: 18(fvec4) Load 27(p1) - 169: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 167 168 - 171: 8(float) FDiv 169 170 - Store 163(radius) 171 - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 173 173 16 16 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 175 174(v0) 43 - 178: 18(fvec4) Load 150(midPoint) - 224: 222(ptr) AccessChain 214 220 221 - 225: 179 Load 224 - 226: 18(fvec4) VectorTimesMatrix 178 225 - Store 174(v0) 226 - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 228 228 16 16 - 232: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 230 229(clip0) 43 - 233: 18(fvec4) Load 174(v0) - 234: 8(float) Load 163(radius) - 237: 8(float) CompositeExtract 236 0 - 238: 8(float) CompositeExtract 236 1 - 239: 8(float) CompositeExtract 236 2 - 240: 18(fvec4) CompositeConstruct 234 237 238 239 - 241: 18(fvec4) FSub 233 240 - 242: 222(ptr) AccessChain 214 220 220 - 243: 179 Load 242 - 244: 18(fvec4) VectorTimesMatrix 241 243 - Store 229(clip0) 244 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 246 246 16 16 - 250: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(clip1) 43 - 251: 18(fvec4) Load 174(v0) - 252: 8(float) Load 163(radius) - 253: 8(float) CompositeExtract 236 0 - 254: 8(float) CompositeExtract 236 1 - 255: 8(float) CompositeExtract 236 2 - 256: 18(fvec4) CompositeConstruct 252 253 254 255 - 257: 18(fvec4) FAdd 251 256 - 258: 222(ptr) AccessChain 214 220 220 - 259: 179 Load 258 - 260: 18(fvec4) VectorTimesMatrix 257 259 - Store 247(clip1) 260 - 261: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 262 262 16 16 - 263: 161(ptr) AccessChain 229(clip0) 17 - 264: 8(float) Load 263 - 265: 18(fvec4) Load 229(clip0) - 266: 18(fvec4) CompositeConstruct 264 264 264 264 - 267: 18(fvec4) FDiv 265 266 - Store 229(clip0) 267 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 269 269 16 16 - 270: 161(ptr) AccessChain 247(clip1) 17 - 271: 8(float) Load 270 - 272: 18(fvec4) Load 247(clip1) - 273: 18(fvec4) CompositeConstruct 271 271 271 271 - 274: 18(fvec4) FDiv 272 273 - Store 247(clip1) 274 - 275: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 276 276 16 16 - 280: 278(ptr) AccessChain 214 220 277 - 281: 48(fvec2) Load 280 - 282: 18(fvec4) Load 229(clip0) - 283: 48(fvec2) VectorShuffle 282 282 0 1 - 284: 48(fvec2) FMul 283 281 - 285: 161(ptr) AccessChain 229(clip0) 16 - 286: 8(float) CompositeExtract 284 0 - Store 285 286 - 287: 161(ptr) AccessChain 229(clip0) 36 - 288: 8(float) CompositeExtract 284 1 - Store 287 288 - 289: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 290 290 16 16 - 291: 278(ptr) AccessChain 214 220 277 - 292: 48(fvec2) Load 291 - 293: 18(fvec4) Load 247(clip1) - 294: 48(fvec2) VectorShuffle 293 293 0 1 - 295: 48(fvec2) FMul 294 292 - 296: 161(ptr) AccessChain 247(clip1) 16 - 297: 8(float) CompositeExtract 295 0 - Store 296 297 - 298: 161(ptr) AccessChain 247(clip1) 36 - 299: 8(float) CompositeExtract 295 1 - Store 298 299 - 300: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 301 301 16 16 - 302: 18(fvec4) Load 229(clip0) - 303: 18(fvec4) Load 247(clip1) - 304: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 302 303 - 308: 306(ptr) AccessChain 214 220 305 + 144(midPoint): 21(ptr) Variable Function + 157(radius): 155(ptr) Variable Function + 168(v0): 21(ptr) Variable Function + 223(clip0): 21(ptr) Variable Function + 241(clip1): 21(ptr) Variable Function + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 34 34 16 16 + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 26(p0) 41 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 27(p1) 41 + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(screenSpaceTessFactor(vf4;vf4;) + 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 147 147 16 16 + 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(midPoint) 41 + 151: 18(fvec4) Load 26(p0) + 152: 18(fvec4) Load 27(p1) + 153: 18(fvec4) FAdd 151 152 + 154: 18(fvec4) VectorTimesScalar 153 150 + Store 144(midPoint) 154 + 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 160 160 16 16 + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(radius) 41 + 163: 18(fvec4) Load 26(p0) + 164: 18(fvec4) Load 27(p1) + 165: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 163 164 + 167: 8(float) FDiv 165 166 + Store 157(radius) 167 + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 171 171 16 16 + 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 169 168(v0) 41 + 174: 18(fvec4) Load 144(midPoint) + 220: 218(ptr) AccessChain 210 216 217 + 221: 175 Load 220 + 222: 18(fvec4) VectorTimesMatrix 174 221 + Store 168(v0) 222 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 226 226 16 16 + 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(clip0) 41 + 229: 18(fvec4) Load 168(v0) + 230: 8(float) Load 157(radius) + 233: 8(float) CompositeExtract 232 0 + 234: 8(float) CompositeExtract 232 1 + 235: 8(float) CompositeExtract 232 2 + 236: 18(fvec4) CompositeConstruct 230 233 234 235 + 237: 18(fvec4) FSub 229 236 + 238: 218(ptr) AccessChain 210 216 216 + 239: 175 Load 238 + 240: 18(fvec4) VectorTimesMatrix 237 239 + Store 223(clip0) 240 + 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 244 244 16 16 + 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 242 241(clip1) 41 + 247: 18(fvec4) Load 168(v0) + 248: 8(float) Load 157(radius) + 249: 8(float) CompositeExtract 232 0 + 250: 8(float) CompositeExtract 232 1 + 251: 8(float) CompositeExtract 232 2 + 252: 18(fvec4) CompositeConstruct 248 249 250 251 + 253: 18(fvec4) FAdd 247 252 + 254: 218(ptr) AccessChain 210 216 216 + 255: 175 Load 254 + 256: 18(fvec4) VectorTimesMatrix 253 255 + Store 241(clip1) 256 + 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 259 259 16 16 + 257: 155(ptr) AccessChain 223(clip0) 17 + 260: 8(float) Load 257 + 261: 18(fvec4) Load 223(clip0) + 262: 18(fvec4) CompositeConstruct 260 260 260 260 + 263: 18(fvec4) FDiv 261 262 + Store 223(clip0) 263 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 266 266 16 16 + 264: 155(ptr) AccessChain 241(clip1) 17 + 267: 8(float) Load 264 + 268: 18(fvec4) Load 241(clip1) + 269: 18(fvec4) CompositeConstruct 267 267 267 267 + 270: 18(fvec4) FDiv 268 269 + Store 241(clip1) 270 + 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 276 276 16 16 + 274: 272(ptr) AccessChain 210 216 271 + 277: 48(fvec2) Load 274 + 278: 18(fvec4) Load 223(clip0) + 279: 48(fvec2) VectorShuffle 278 278 0 1 + 280: 48(fvec2) FMul 279 277 + 281: 155(ptr) AccessChain 223(clip0) 16 + 282: 8(float) CompositeExtract 280 0 + Store 281 282 + 283: 155(ptr) AccessChain 223(clip0) 36 + 284: 8(float) CompositeExtract 280 1 + Store 283 284 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 287 287 16 16 + 285: 272(ptr) AccessChain 210 216 271 + 288: 48(fvec2) Load 285 + 289: 18(fvec4) Load 241(clip1) + 290: 48(fvec2) VectorShuffle 289 289 0 1 + 291: 48(fvec2) FMul 290 288 + 292: 155(ptr) AccessChain 241(clip1) 16 + 293: 8(float) CompositeExtract 291 0 + Store 292 293 + 294: 155(ptr) AccessChain 241(clip1) 36 + 295: 8(float) CompositeExtract 291 1 + Store 294 295 + 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 298 298 16 16 + 296: 18(fvec4) Load 223(clip0) + 299: 18(fvec4) Load 241(clip1) + 300: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 296 299 + 304: 302(ptr) AccessChain 210 216 301 + 305: 8(float) Load 304 + 306: 8(float) FDiv 300 305 + 308: 302(ptr) AccessChain 210 216 307 309: 8(float) Load 308 - 310: 8(float) FDiv 304 309 - 312: 306(ptr) AccessChain 214 220 311 - 313: 8(float) Load 312 - 314: 8(float) FMul 310 313 - 317: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 314 315 316 - ReturnValue 317 + 310: 8(float) FMul 306 309 + 313: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 310 311 312 + ReturnValue 313 FunctionEnd - Line 1 95 1 59(frustumCheck(vf4;vf2;): 52(bool) Function None 55 57(Pos): 21(ptr) FunctionParameter 58(inUV): 50(ptr) FunctionParameter 60: Label - 324(pos): 21(ptr) Variable Function - 372(i): 370(ptr) Variable Function - 64: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 63 63 16 16 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 57(Pos) 43 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 58(inUV) 43 - 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) - 321: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 322: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 323 323 16 16 - 327: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 325 324(pos) 43 - 328: 18(fvec4) Load 57(Pos) - Store 324(pos) 328 - 329: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 330 330 16 16 - 341: 331 Load 338(textureHeight) - 351: 342 Load 348(samplerHeight) - 356: 352 SampledImage 341 351 - 357: 48(fvec2) Load 58(inUV) - 358: 18(fvec4) ImageSampleExplicitLod 356 357 Lod 235 - 359: 8(float) CompositeExtract 358 0 - 361: 306(ptr) AccessChain 214 220 360 + 319(pos): 21(ptr) Variable Function + 367(i): 365(ptr) Variable Function + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 57(Pos) 41 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 58(inUV) 41 + 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 63 63 16 16 + 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) + 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 322 322 16 16 + 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 320 319(pos) 41 + 325: 18(fvec4) Load 57(Pos) + Store 319(pos) 325 + 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 329 329 16 16 + 337: 326 Load 334(textureHeight) + 348: 339 Load 345(samplerHeight) + 353: 349 SampledImage 337 348 + 354: 48(fvec2) Load 58(inUV) + 355: 18(fvec4) ImageSampleExplicitLod 353 354 Lod 231 + 356: 8(float) CompositeExtract 355 0 + 358: 302(ptr) AccessChain 210 216 357 + 359: 8(float) Load 358 + 360: 8(float) FMul 356 359 + 361: 155(ptr) AccessChain 319(pos) 36 362: 8(float) Load 361 - 363: 8(float) FMul 359 362 - 364: 161(ptr) AccessChain 324(pos) 36 - 365: 8(float) Load 364 - 366: 8(float) FSub 365 363 - 367: 161(ptr) AccessChain 324(pos) 36 - Store 367 366 - 368: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 - 375: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 373 372(i) 43 - Store 372(i) 220 - Branch 376 - 376: Label - 380: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 381: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 - LoopMerge 378 379 None - Branch 382 - 382: Label - 383: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 384: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 - 385: 217(int) Load 372(i) - 386: 52(bool) SLessThan 385 277 - BranchConditional 386 377 378 - 377: Label - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 388: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 389 389 16 16 - 390: 18(fvec4) Load 324(pos) - 392: 217(int) Load 372(i) - 395: 393(ptr) AccessChain 214 220 391 392 - 396: 18(fvec4) Load 395 - 397: 8(float) Dot 390 396 - 399: 8(float) FAdd 397 398 - 400: 52(bool) FOrdLessThan 399 235 - SelectionMerge 402 None - BranchConditional 400 401 402 - 401: Label - 404: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 405: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 406 406 16 16 - ReturnValue 403 - 402: Label - Branch 379 - 379: Label - 408: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 409: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 369 369 16 16 - 410: 217(int) Load 372(i) - 411: 217(int) IAdd 410 221 - Store 372(i) 411 + 363: 8(float) FSub 362 360 + 364: 155(ptr) AccessChain 319(pos) 36 + Store 364 363 + 372: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 + 371: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 368 367(i) 41 + Store 367(i) 216 + Branch 373 + 373: Label + 377: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 + LoopMerge 375 376 None + Branch 379 + 379: Label + 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 + 380: 213(int) Load 367(i) + 383: 52(bool) SLessThan 380 271 + BranchConditional 383 374 375 + 374: Label + 385: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 386: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 387 387 16 16 + 384: 18(fvec4) Load 319(pos) + 389: 213(int) Load 367(i) + 392: 390(ptr) AccessChain 210 216 388 389 + 393: 18(fvec4) Load 392 + 394: 8(float) Dot 384 393 + 396: 8(float) FAdd 394 395 + 397: 52(bool) FOrdLessThan 396 231 + SelectionMerge 399 None + BranchConditional 397 398 399 + 398: Label + 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 402: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 403 403 16 16 + ReturnValue 400 + 399: Label + 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 Branch 376 - 378: Label - 412: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 413: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 414 414 16 16 - ReturnValue 181 + 376: Label + 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 + 407: 213(int) Load 367(i) + 410: 213(int) IAdd 407 217 + Store 367(i) 410 + Branch 373 + 375: Label + 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 413 413 16 16 + ReturnValue 177 FunctionEnd - Line 1 112 1 -109(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):96(ConstantsHSOutput) Function None 106 - 108(patch): 90(ptr) FunctionParameter - 110: Label - 423(output): 421(ptr) Variable Function - 433(param): 21(ptr) Variable Function +108(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):95(ConstantsHSOutput) Function None 105 + 107(patch): 89(ptr) FunctionParameter + 109: Label + 421(output): 419(ptr) Variable Function + 431(param): 21(ptr) Variable Function 436(param): 50(ptr) Variable Function - 474(param): 21(ptr) Variable Function + 471(param): 21(ptr) Variable Function 477(param): 21(ptr) Variable Function - 484(param): 21(ptr) Variable Function + 482(param): 21(ptr) Variable Function 487(param): 21(ptr) Variable Function - 494(param): 21(ptr) Variable Function + 492(param): 21(ptr) Variable Function 497(param): 21(ptr) Variable Function - 504(param): 21(ptr) Variable Function + 502(param): 21(ptr) Variable Function 507(param): 21(ptr) Variable Function - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 - 115: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 113 113 16 16 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 108(patch) 43 - 417: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 112 109(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - 418: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 - 419: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 420 420 16 16 - 426: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 424 423(output) 43 - Store 423(output) 429 - 430: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 431 431 16 16 - 434: 21(ptr) AccessChain 108(patch) 220 220 - 435: 18(fvec4) Load 434 - Store 433(param) 435 - 437: 50(ptr) AccessChain 108(patch) 220 432 + 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 + 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 107(patch) 41 + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 112 112 16 16 + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 111 108(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 424 424 16 16 + 425: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 422 421(output) 41 + Store 421(output) 429 + 433: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 434 434 16 16 + 432: 21(ptr) AccessChain 107(patch) 216 216 + 435: 18(fvec4) Load 432 + Store 431(param) 435 + 437: 50(ptr) AccessChain 107(patch) 216 430 438: 48(fvec2) Load 437 Store 436(param) 438 - 439: 52(bool) FunctionCall 59(frustumCheck(vf4;vf2;) 433(param) 436(param) + 439: 52(bool) FunctionCall 59(frustumCheck(vf4;vf2;) 431(param) 436(param) 440: 52(bool) LogicalNot 439 SelectionMerge 442 None BranchConditional 440 441 462 441: Label - 443: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 - 444: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 445 445 16 16 - 446: 161(ptr) AccessChain 423(output) 221 220 - Store 446 235 - 447: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 448 448 16 16 - 449: 161(ptr) AccessChain 423(output) 221 221 - Store 449 235 - 450: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 451 451 16 16 - 452: 161(ptr) AccessChain 423(output) 220 220 - Store 452 235 - 453: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 454 454 16 16 - 455: 161(ptr) AccessChain 423(output) 220 221 - Store 455 235 - 456: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 457 457 16 16 - 458: 161(ptr) AccessChain 423(output) 220 432 - Store 458 235 - 459: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 460 460 16 16 - 461: 161(ptr) AccessChain 423(output) 220 391 - Store 461 235 + 444: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 + 445: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 446 446 16 16 + 443: 155(ptr) AccessChain 421(output) 217 216 + Store 443 231 + 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 449 449 16 16 + 447: 155(ptr) AccessChain 421(output) 217 217 + Store 447 231 + 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 452 452 16 16 + 450: 155(ptr) AccessChain 421(output) 216 216 + Store 450 231 + 454: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 455 455 16 16 + 453: 155(ptr) AccessChain 421(output) 216 217 + Store 453 231 + 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 458 458 16 16 + 456: 155(ptr) AccessChain 421(output) 216 430 + Store 456 231 + 460: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 461 461 16 16 + 459: 155(ptr) AccessChain 421(output) 216 388 + Store 459 231 Branch 442 462: Label - 463: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 - 464: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 465 465 16 16 - 466: 306(ptr) AccessChain 214 220 311 - 467: 8(float) Load 466 - 468: 52(bool) FOrdGreaterThan 467 235 + 464: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 + 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 466 466 16 16 + 463: 302(ptr) AccessChain 210 216 307 + 467: 8(float) Load 463 + 468: 52(bool) FOrdGreaterThan 467 231 SelectionMerge 470 None BranchConditional 468 469 528 469: Label - 471: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 - 472: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 473 473 16 16 - 475: 21(ptr) AccessChain 108(patch) 391 220 - 476: 18(fvec4) Load 475 - Store 474(param) 476 - 478: 21(ptr) AccessChain 108(patch) 220 220 + 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 + 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 475 475 16 16 + 472: 21(ptr) AccessChain 107(patch) 388 216 + 476: 18(fvec4) Load 472 + Store 471(param) 476 + 478: 21(ptr) AccessChain 107(patch) 216 216 479: 18(fvec4) Load 478 Store 477(param) 479 - 480: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 474(param) 477(param) - 481: 161(ptr) AccessChain 423(output) 220 220 + 480: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 471(param) 477(param) + 481: 155(ptr) AccessChain 421(output) 216 216 Store 481 480 - 482: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 483 483 16 16 - 485: 21(ptr) AccessChain 108(patch) 220 220 - 486: 18(fvec4) Load 485 - Store 484(param) 486 - 488: 21(ptr) AccessChain 108(patch) 221 220 + 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 485 485 16 16 + 483: 21(ptr) AccessChain 107(patch) 216 216 + 486: 18(fvec4) Load 483 + Store 482(param) 486 + 488: 21(ptr) AccessChain 107(patch) 217 216 489: 18(fvec4) Load 488 Store 487(param) 489 - 490: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 484(param) 487(param) - 491: 161(ptr) AccessChain 423(output) 220 221 + 490: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 482(param) 487(param) + 491: 155(ptr) AccessChain 421(output) 216 217 Store 491 490 - 492: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 493 493 16 16 - 495: 21(ptr) AccessChain 108(patch) 221 220 - 496: 18(fvec4) Load 495 - Store 494(param) 496 - 498: 21(ptr) AccessChain 108(patch) 432 220 + 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 495 495 16 16 + 493: 21(ptr) AccessChain 107(patch) 217 216 + 496: 18(fvec4) Load 493 + Store 492(param) 496 + 498: 21(ptr) AccessChain 107(patch) 430 216 499: 18(fvec4) Load 498 Store 497(param) 499 - 500: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 494(param) 497(param) - 501: 161(ptr) AccessChain 423(output) 220 432 + 500: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 492(param) 497(param) + 501: 155(ptr) AccessChain 421(output) 216 430 Store 501 500 - 502: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 503 503 16 16 - 505: 21(ptr) AccessChain 108(patch) 432 220 - 506: 18(fvec4) Load 505 - Store 504(param) 506 - 508: 21(ptr) AccessChain 108(patch) 391 220 + 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 505 505 16 16 + 503: 21(ptr) AccessChain 107(patch) 430 216 + 506: 18(fvec4) Load 503 + Store 502(param) 506 + 508: 21(ptr) AccessChain 107(patch) 388 216 509: 18(fvec4) Load 508 Store 507(param) 509 - 510: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 504(param) 507(param) - 511: 161(ptr) AccessChain 423(output) 220 391 + 510: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 502(param) 507(param) + 511: 155(ptr) AccessChain 421(output) 216 388 Store 511 510 - 512: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 513 513 16 16 - 514: 161(ptr) AccessChain 423(output) 220 220 - 515: 8(float) Load 514 - 516: 161(ptr) AccessChain 423(output) 220 391 + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 514 514 16 16 + 512: 155(ptr) AccessChain 421(output) 216 216 + 515: 8(float) Load 512 + 516: 155(ptr) AccessChain 421(output) 216 388 517: 8(float) Load 516 - 518: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 515 517 154 - 519: 161(ptr) AccessChain 423(output) 221 220 + 518: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 515 517 150 + 519: 155(ptr) AccessChain 421(output) 217 216 Store 519 518 - 520: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 521 521 16 16 - 522: 161(ptr) AccessChain 423(output) 220 432 - 523: 8(float) Load 522 - 524: 161(ptr) AccessChain 423(output) 220 221 + 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 522 522 16 16 + 520: 155(ptr) AccessChain 421(output) 216 430 + 523: 8(float) Load 520 + 524: 155(ptr) AccessChain 421(output) 216 217 525: 8(float) Load 524 - 526: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 523 525 154 - 527: 161(ptr) AccessChain 423(output) 221 221 + 526: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 523 525 150 + 527: 155(ptr) AccessChain 421(output) 217 217 Store 527 526 Branch 470 528: Label - 529: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 - 530: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 531 531 16 16 - 532: 161(ptr) AccessChain 423(output) 221 220 - Store 532 315 - 533: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 534 534 16 16 - 535: 161(ptr) AccessChain 423(output) 221 221 - Store 535 315 - 536: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 537 537 16 16 - 538: 161(ptr) AccessChain 423(output) 220 220 - Store 538 315 - 539: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 540 540 16 16 - 541: 161(ptr) AccessChain 423(output) 220 221 - Store 541 315 - 542: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 543 543 16 16 - 544: 161(ptr) AccessChain 423(output) 220 432 - Store 544 315 - 545: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 546 546 16 16 - 547: 161(ptr) AccessChain 423(output) 220 391 - Store 547 315 + 530: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 + 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 532 532 16 16 + 529: 155(ptr) AccessChain 421(output) 217 216 + Store 529 311 + 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 535 535 16 16 + 533: 155(ptr) AccessChain 421(output) 217 217 + Store 533 311 + 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 538 538 16 16 + 536: 155(ptr) AccessChain 421(output) 216 216 + Store 536 311 + 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 541 541 16 16 + 539: 155(ptr) AccessChain 421(output) 216 217 + Store 539 311 + 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 544 544 16 16 + 542: 155(ptr) AccessChain 421(output) 216 430 + Store 542 311 + 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 547 547 16 16 + 545: 155(ptr) AccessChain 421(output) 216 388 + Store 545 311 Branch 470 470: Label + 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 Branch 442 442: Label - 548: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 112 - 549: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 550 550 16 16 - 551:96(ConstantsHSOutput) Load 423(output) - ReturnValue 551 + 550: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 + 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 552 552 16 16 + 549:95(ConstantsHSOutput) Load 421(output) + ReturnValue 549 FunctionEnd - Line 1 158 1 -134(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):121(HSOutput) Function None 130 - 132(patch): 90(ptr) FunctionParameter -133(InvocationID): 119(ptr) FunctionParameter - 135: Label +132(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):119(HSOutput) Function None 128 + 130(patch): 89(ptr) FunctionParameter +131(InvocationID): 117(ptr) FunctionParameter + 133: Label 560(output): 558(ptr) Variable Function - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 137 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 138 138 16 16 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 141 132(patch) 43 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 143 133(InvocationID) 43 - 554: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 137 134(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) - 555: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 137 - 556: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 557 557 16 16 - 562: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 561 560(output) 43 - Store 560(output) 565 - 566: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 567 567 16 16 - 568: 11(int) Load 133(InvocationID) - 569: 21(ptr) AccessChain 132(patch) 568 220 - 570: 18(fvec4) Load 569 - 571: 21(ptr) AccessChain 560(output) 220 - Store 571 570 - 572: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 573 573 16 16 - 574: 11(int) Load 133(InvocationID) - 577: 575(ptr) AccessChain 132(patch) 574 221 - 578: 72(fvec3) Load 577 - 579: 575(ptr) AccessChain 560(output) 221 - Store 579 578 - 580: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 581 581 16 16 - 582: 11(int) Load 133(InvocationID) - 583: 50(ptr) AccessChain 132(patch) 582 432 - 584: 48(fvec2) Load 583 - 585: 50(ptr) AccessChain 560(output) 432 - Store 585 584 - 586: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 587 587 16 16 - 588:121(HSOutput) Load 560(output) + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 135 + 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 137 130(patch) 41 + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 140 131(InvocationID) 41 + 557: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 136 136 16 16 + 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 135 132(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 562 562 16 16 + 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 561 560(output) 41 + Store 560(output) 567 + 569: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 570 570 16 16 + 568: 11(int) Load 131(InvocationID) + 571: 21(ptr) AccessChain 130(patch) 568 216 + 572: 18(fvec4) Load 571 + 573: 21(ptr) AccessChain 560(output) 216 + Store 573 572 + 575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 576 576 16 16 + 574: 11(int) Load 131(InvocationID) + 579: 577(ptr) AccessChain 130(patch) 574 217 + 580: 71(fvec3) Load 579 + 581: 577(ptr) AccessChain 560(output) 217 + Store 581 580 + 583: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 584 584 16 16 + 582: 11(int) Load 131(InvocationID) + 585: 50(ptr) AccessChain 130(patch) 582 430 + 586: 48(fvec2) Load 585 + 587: 50(ptr) AccessChain 560(output) 430 + Store 587 586 + 589: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 590 590 16 16 + 588:119(HSOutput) Load 560(output) ReturnValue 588 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 2d4de4e8e1..774bf19891 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -5,12 +5,12 @@ spv.debuginfo.hlsl.tese Capability Tessellation Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint TessellationEvaluation 6 "main" 368 383 392 401 408 414 454 458 462 465 468 471 474 ExecutionMode 6 Quads - 1: String "" + 2: String "" 9: String "float" 12: String "uint" 26: String "TessLevelOuter" @@ -32,34 +32,34 @@ spv.debuginfo.hlsl.tese 71: String "WorldPos" 81: String "DSOutput" 89: String "@main" - 95: String "input" + 93: String "input" 99: String "TessCoord" 102: String "patch" - 112: String "output" - 123: String "uv1" - 126: String "int" - 143: String "uv2" - 167: String "n1" - 179: String "n2" - 202: String "pos1" - 214: String "pos2" - 226: String "pos" - 238: String "type.2d.image" - 239: String "@type.2d.image" - 245: String "displacementMapTexture" - 250: String "type.sampler" - 251: String "@type.sampler" - 256: String "displacementMapSampler" - 260: String "type.sampled.image" - 261: String "@type.sampled.image" - 270: String "bool" - 277: String "modelview" - 282: String "lightPos" - 286: String "frustumPlanes" - 289: String "tessellatedEdgeSize" - 293: String "viewportDim" - 297: String "UBO" - 300: String "ubo" + 109: String "output" + 120: String "uv1" + 125: String "int" + 140: String "uv2" + 164: String "n1" + 176: String "n2" + 199: String "pos1" + 211: String "pos2" + 223: String "pos" + 235: String "type.2d.image" + 237: String "@type.2d.image" + 243: String "displacementMapTexture" + 249: String "type.sampler" + 250: String "@type.sampler" + 255: String "displacementMapSampler" + 259: String "type.sampled.image" + 260: String "@type.sampled.image" + 269: String "bool" + 276: String "modelview" + 281: String "lightPos" + 285: String "frustumPlanes" + 288: String "tessellatedEdgeSize" + 292: String "viewportDim" + 296: String "UBO" + 299: String "ubo" Name 6 "main" Name 24 "ConstantsHSOutput" MemberName 24(ConstantsHSOutput) 0 "TessLevelOuter" @@ -80,28 +80,28 @@ spv.debuginfo.hlsl.tese Name 84 "input" Name 85 "TessCoord" Name 86 "patch" - Name 110 "output" - Name 121 "uv1" - Name 141 "uv2" - Name 165 "n1" - Name 177 "n2" - Name 200 "pos1" - Name 212 "pos2" - Name 224 "pos" - Name 243 "displacementMapTexture" - Name 254 "displacementMapSampler" - Name 275 "UBO" - MemberName 275(UBO) 0 "projection" - MemberName 275(UBO) 1 "modelview" - MemberName 275(UBO) 2 "lightPos" - MemberName 275(UBO) 3 "frustumPlanes" - MemberName 275(UBO) 4 "displacementFactor" - MemberName 275(UBO) 5 "tessellationFactor" - MemberName 275(UBO) 6 "viewportDim" - MemberName 275(UBO) 7 "tessellatedEdgeSize" - Name 298 "ubo" - MemberName 298(ubo) 0 "ubo" - Name 304 "" + Name 107 "output" + Name 118 "uv1" + Name 138 "uv2" + Name 162 "n1" + Name 174 "n2" + Name 197 "pos1" + Name 209 "pos2" + Name 221 "pos" + Name 241 "displacementMapTexture" + Name 253 "displacementMapSampler" + Name 274 "UBO" + MemberName 274(UBO) 0 "projection" + MemberName 274(UBO) 1 "modelview" + MemberName 274(UBO) 2 "lightPos" + MemberName 274(UBO) 3 "frustumPlanes" + MemberName 274(UBO) 4 "displacementFactor" + MemberName 274(UBO) 5 "tessellationFactor" + MemberName 274(UBO) 6 "viewportDim" + MemberName 274(UBO) 7 "tessellatedEdgeSize" + Name 297 "ubo" + MemberName 297(ubo) 0 "ubo" + Name 303 "" Name 366 "input" Name 368 "input.TessLevelOuter" Name 383 "input.TessLevelInner" @@ -121,27 +121,27 @@ spv.debuginfo.hlsl.tese Name 468 "@entryPointOutput.LightVec" Name 471 "@entryPointOutput.EyePos" Name 474 "@entryPointOutput.WorldPos" - Decorate 243(displacementMapTexture) DescriptorSet 0 - Decorate 243(displacementMapTexture) Binding 1 - Decorate 254(displacementMapSampler) DescriptorSet 0 - Decorate 254(displacementMapSampler) Binding 1 - Decorate 273 ArrayStride 16 - MemberDecorate 275(UBO) 0 RowMajor - MemberDecorate 275(UBO) 0 Offset 0 - MemberDecorate 275(UBO) 0 MatrixStride 16 - MemberDecorate 275(UBO) 1 RowMajor - MemberDecorate 275(UBO) 1 Offset 64 - MemberDecorate 275(UBO) 1 MatrixStride 16 - MemberDecorate 275(UBO) 2 Offset 128 - MemberDecorate 275(UBO) 3 Offset 144 - MemberDecorate 275(UBO) 4 Offset 240 - MemberDecorate 275(UBO) 5 Offset 244 - MemberDecorate 275(UBO) 6 Offset 248 - MemberDecorate 275(UBO) 7 Offset 256 - MemberDecorate 298(ubo) 0 Offset 0 - Decorate 298(ubo) Block - Decorate 304 DescriptorSet 0 - Decorate 304 Binding 0 + Decorate 241(displacementMapTexture) DescriptorSet 0 + Decorate 241(displacementMapTexture) Binding 1 + Decorate 253(displacementMapSampler) DescriptorSet 0 + Decorate 253(displacementMapSampler) Binding 1 + Decorate 272 ArrayStride 16 + MemberDecorate 274(UBO) 0 RowMajor + MemberDecorate 274(UBO) 0 Offset 0 + MemberDecorate 274(UBO) 0 MatrixStride 16 + MemberDecorate 274(UBO) 1 RowMajor + MemberDecorate 274(UBO) 1 Offset 64 + MemberDecorate 274(UBO) 1 MatrixStride 16 + MemberDecorate 274(UBO) 2 Offset 128 + MemberDecorate 274(UBO) 3 Offset 144 + MemberDecorate 274(UBO) 4 Offset 240 + MemberDecorate 274(UBO) 5 Offset 244 + MemberDecorate 274(UBO) 6 Offset 248 + MemberDecorate 274(UBO) 7 Offset 256 + MemberDecorate 297(ubo) 0 Offset 0 + Decorate 297(ubo) Block + Decorate 303 DescriptorSet 0 + Decorate 303 Binding 0 Decorate 368(input.TessLevelOuter) Patch Decorate 368(input.TessLevelOuter) BuiltIn TessLevelOuter Decorate 383(input.TessLevelInner) Patch @@ -165,170 +165,170 @@ spv.debuginfo.hlsl.tese 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 + 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 + 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: 11(int) Constant 4 19: TypeArray 8(float) 18 - 20: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 18 + 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 18 21: 11(int) Constant 2 22: TypeArray 8(float) 21 - 23: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 21 + 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 21 24(ConstantsHSOutput): TypeStruct 19 22 - 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 28 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 28 29: 11(int) Constant 51 30: 11(int) Constant 25 - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 26 20 27 29 30 16 16 17 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 26 20 27 29 30 16 16 17 33: 11(int) Constant 52 - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 32 23 27 33 30 16 16 17 + 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 32 23 27 33 30 16 16 17 36: 11(int) Constant 1 38: 11(int) Constant 5 - 37: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 27 38 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 16 16 37 35 16 17 25 31 + 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 27 38 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 16 16 37 35 16 17 25 31 39: TypePointer Function 24(ConstantsHSOutput) 40: 11(int) Constant 7 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 34 40 16 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 34 40 16 42: TypeVector 8(float) 2 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 44: TypePointer Function 42(fvec2) - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 40 16 + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 40 16 46: TypeVector 8(float) 4 - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 48: TypeVector 8(float) 3 - 49: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 50(HSOutput): TypeStruct 46(fvec4) 48(fvec3) 42(fvec2) 53: 11(int) Constant 44 - 51: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 53 14 16 16 17 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 53 14 16 16 17 56: 11(int) Constant 45 57: 11(int) Constant 35 - 54: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 49 27 56 57 16 16 17 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 49 27 56 57 16 16 17 60: 11(int) Constant 46 61: 11(int) Constant 31 - 58: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 60 61 16 16 17 - 62: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 63 36 27 16 16 37 63 16 17 51 54 58 + 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 60 61 16 16 17 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 63 36 27 16 16 37 63 16 17 51 54 58 64: TypeArray 50(HSOutput) 18 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 62 18 + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 62 18 66(DSOutput): TypeStruct 46(fvec4) 48(fvec3) 42(fvec2) 48(fvec3) 48(fvec3) 48(fvec3) 48(fvec3) 68: 11(int) Constant 57 69: 11(int) Constant 13 - 67: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 68 69 16 16 17 + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 68 69 16 16 17 72: 11(int) Constant 63 73: 11(int) Constant 37 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 75: 11(int) Constant 59 - 74: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 75 61 16 16 17 - 76: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 78: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 79: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 81 36 27 16 16 37 81 16 17 67 70 74 76 77 78 79 + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 75 61 16 16 17 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 81 36 27 16 16 37 81 16 17 67 70 74 76 77 78 79 82: TypeFunction 66(DSOutput) 39(ptr) 44(ptr) 64 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 80 34 43 62 + 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 80 34 43 62 91: 11(int) Constant 68 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 89 83 27 91 16 37 89 17 91 - 94: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 95 34 27 91 16 90 18 36 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 98: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 43 27 91 16 90 18 21 - 101: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 62 27 91 16 90 18 17 - 107: 11(int) Constant 70 - 108: TypePointer Function 66(DSOutput) - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 80 40 16 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 112 80 27 107 16 90 18 - 114: 8(float) Constant 0 - 115: 46(fvec4) ConstantComposite 114 114 114 114 - 116: 48(fvec3) ConstantComposite 114 114 114 - 117: 42(fvec2) ConstantComposite 114 114 - 118:66(DSOutput) ConstantComposite 115 116 117 116 116 116 116 - 120: 11(int) Constant 71 - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 123 43 27 120 16 90 18 - 125: TypeInt 32 1 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 126 14 18 16 - 128: 125(int) Constant 0 - 129: 125(int) Constant 2 - 131: 125(int) Constant 1 - 133: TypePointer Function 8(float) - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 40 16 - 140: 11(int) Constant 72 - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 43 27 140 16 90 18 - 145: 125(int) Constant 3 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 89 83 27 91 16 37 89 17 91 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 34 27 91 16 90 18 36 + 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 43 27 91 16 90 18 21 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 62 27 91 16 90 18 17 + 105: TypePointer Function 66(DSOutput) + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 80 40 16 + 110: 11(int) Constant 70 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 80 27 110 16 90 18 + 113: 8(float) Constant 0 + 114: 46(fvec4) ConstantComposite 113 113 113 113 + 115: 48(fvec3) ConstantComposite 113 113 113 + 116: 42(fvec2) ConstantComposite 113 113 + 117:66(DSOutput) ConstantComposite 114 115 116 115 115 115 115 + 121: 11(int) Constant 71 + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 43 27 121 16 90 18 + 124: TypeInt 32 1 + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 125 14 18 16 + 127: 124(int) Constant 0 + 128: 124(int) Constant 2 + 130: 124(int) Constant 1 + 132: TypePointer Function 8(float) + 133: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 40 16 + 141: 11(int) Constant 72 + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 43 27 141 16 90 18 + 144: 124(int) Constant 3 153: 11(int) Constant 73 - 162: 11(int) Constant 75 - 163: TypePointer Function 48(fvec3) - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 40 16 - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 167 49 27 162 16 90 18 - 176: 11(int) Constant 76 - 178: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 49 27 176 16 90 18 + 160: TypePointer Function 48(fvec3) + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 40 16 + 165: 11(int) Constant 75 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 49 27 165 16 90 18 + 177: 11(int) Constant 76 + 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 176 49 27 177 16 90 18 188: 11(int) Constant 77 - 197: 11(int) Constant 80 - 198: TypePointer Function 46(fvec4) - 199: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 40 16 - 201: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 202 47 27 197 16 90 18 - 211: 11(int) Constant 81 - 213: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 214 47 27 211 16 90 18 - 223: 11(int) Constant 82 - 225: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 226 47 27 223 16 90 18 - 235: 11(int) Constant 84 - 236: TypeImage 8(float) 2D sampled format:Unknown - 240: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 238 16 27 235 16 37 239 240 17 - 241: TypePointer UniformConstant 236 - 242: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 16 16 -243(displacementMapTexture): 241(ptr) Variable UniformConstant - 246: 11(int) Constant 8 - 244: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 245 237 27 235 16 37 245 243(displacementMapTexture) 246 - 248: TypeSampler - 249: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 250 36 27 235 16 37 251 240 17 - 252: TypePointer UniformConstant 248 - 253: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 249 16 16 -254(displacementMapSampler): 252(ptr) Variable UniformConstant - 255: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 256 249 27 235 16 37 256 254(displacementMapSampler) 246 - 258: TypeSampledImage 236 - 259: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 260 16 27 235 16 37 261 240 17 - 267: TypeMatrix 46(fvec4) 4 - 269: TypeBool - 271: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 270 14 21 16 - 272: 269(bool) ConstantTrue - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 47 18 272 - 273: TypeArray 46(fvec4) 15 - 274: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 47 15 - 275(UBO): TypeStruct 267 267 46(fvec4) 273 8(float) 8(float) 42(fvec2) 8(float) - 278: 11(int) Constant 29 - 279: 11(int) Constant 20 - 276: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 268 27 278 279 16 16 17 - 280: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 277 268 27 278 279 16 16 17 - 283: 11(int) Constant 30 - 284: 11(int) Constant 17 - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 282 47 27 283 284 16 16 17 - 287: 11(int) Constant 22 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 286 274 27 61 287 16 16 17 - 290: 11(int) Constant 27 - 288: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 10 27 57 290 16 16 17 - 291: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 10 27 57 290 16 16 17 - 294: 11(int) Constant 34 - 292: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 293 43 27 294 279 16 16 17 - 295: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 289 10 27 57 290 16 16 17 - 296: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 297 36 27 235 16 37 297 16 17 276 280 281 285 288 291 292 295 - 298(ubo): TypeStruct 275(UBO) - 299: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 300 296 27 73 73 16 16 17 - 301: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 300 36 27 235 16 37 300 16 17 299 - 302: TypePointer Uniform 298(ubo) - 303: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 301 21 16 - 304: 302(ptr) Variable Uniform - 305: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 301 27 235 16 37 1 304 246 - 306: 125(int) Constant 4 - 307: TypePointer Uniform 8(float) - 308: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 + 195: TypePointer Function 46(fvec4) + 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 40 16 + 200: 11(int) Constant 80 + 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 199 47 27 200 16 90 18 + 212: 11(int) Constant 81 + 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 47 27 212 16 90 18 + 224: 11(int) Constant 82 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 47 27 224 16 90 18 + 233: TypeImage 8(float) 2D sampled format:Unknown + 236: 11(int) Constant 84 + 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 235 16 27 236 16 37 237 238 17 + 239: TypePointer UniformConstant 233 + 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 234 16 16 +241(displacementMapTexture): 239(ptr) Variable UniformConstant + 244: 11(int) Constant 8 + 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 243 234 27 236 16 37 243 241(displacementMapTexture) 244 + 247: TypeSampler + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 249 36 27 236 16 37 250 238 17 + 251: TypePointer UniformConstant 247 + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 248 16 16 +253(displacementMapSampler): 251(ptr) Variable UniformConstant + 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 255 248 27 236 16 37 255 253(displacementMapSampler) 244 + 257: TypeSampledImage 233 + 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 259 16 27 236 16 37 260 238 17 + 266: TypeMatrix 46(fvec4) 4 + 268: TypeBool + 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 269 14 21 16 + 271: 268(bool) ConstantTrue + 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 47 18 271 + 272: TypeArray 46(fvec4) 15 + 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 47 15 + 274(UBO): TypeStruct 266 266 46(fvec4) 272 8(float) 8(float) 42(fvec2) 8(float) + 277: 11(int) Constant 29 + 278: 11(int) Constant 20 + 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 276 267 27 277 278 16 16 17 + 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 276 267 27 277 278 16 16 17 + 282: 11(int) Constant 30 + 283: 11(int) Constant 17 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 281 47 27 282 283 16 16 17 + 286: 11(int) Constant 22 + 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 285 273 27 61 286 16 16 17 + 289: 11(int) Constant 27 + 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 57 289 16 16 17 + 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 57 289 16 16 17 + 293: 11(int) Constant 34 + 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 292 43 27 293 278 16 16 17 + 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 57 289 16 16 17 + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 296 36 27 236 16 37 296 16 17 275 279 280 284 287 290 291 294 + 297(ubo): TypeStruct 274(UBO) + 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 299 295 27 73 73 16 16 17 + 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 299 36 27 236 16 37 299 16 17 298 + 301: TypePointer Uniform 297(ubo) + 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 300 21 16 + 303: 301(ptr) Variable Uniform + 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 300 27 236 16 37 2 303 244 + 305: 124(int) Constant 4 + 306: TypePointer Uniform 8(float) + 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 317: 11(int) Constant 86 - 319: TypePointer Uniform 267 - 320: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 268 21 16 + 318: TypePointer Uniform 266 + 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 267 21 16 329: 11(int) Constant 89 - 335: 11(int) Constant 90 - 336: TypePointer Uniform 46(fvec4) - 337: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 21 16 - 347: 11(int) Constant 91 - 348: 125(int) Constant 6 - 353: 11(int) Constant 92 - 354: 125(int) Constant 5 + 333: TypePointer Uniform 46(fvec4) + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 21 16 + 337: 11(int) Constant 90 + 345: 124(int) Constant 6 + 348: 11(int) Constant 91 + 351: 124(int) Constant 5 + 354: 11(int) Constant 92 362: 11(int) Constant 93 367: TypePointer Input 19 368(input.TessLevelOuter): 367(ptr) Variable Input @@ -359,92 +359,90 @@ spv.debuginfo.hlsl.tese 468(@entryPointOutput.LightVec): 457(ptr) Variable Output 471(@entryPointOutput.EyePos): 457(ptr) Variable Output 474(@entryPointOutput.WorldPos): 457(ptr) Variable Output - Line 1 68 1 6(main): 4 Function None 5 7: Label 366(input): 39(ptr) Variable Function 390(TessCoord): 44(ptr) Variable Function 398(patch): 397(ptr) Variable Function -446(flattenTemp): 108(ptr) Variable Function +446(flattenTemp): 105(ptr) Variable Function 448(param): 39(ptr) Variable Function 450(param): 44(ptr) Variable Function - Line 1 68 0 - 370: 369(ptr) AccessChain 368(input.TessLevelOuter) 128 + 370: 369(ptr) AccessChain 368(input.TessLevelOuter) 127 371: 8(float) Load 370 - 372: 133(ptr) AccessChain 366(input) 128 128 + 372: 132(ptr) AccessChain 366(input) 127 127 Store 372 371 - 373: 369(ptr) AccessChain 368(input.TessLevelOuter) 131 + 373: 369(ptr) AccessChain 368(input.TessLevelOuter) 130 374: 8(float) Load 373 - 375: 133(ptr) AccessChain 366(input) 128 131 + 375: 132(ptr) AccessChain 366(input) 127 130 Store 375 374 - 376: 369(ptr) AccessChain 368(input.TessLevelOuter) 129 + 376: 369(ptr) AccessChain 368(input.TessLevelOuter) 128 377: 8(float) Load 376 - 378: 133(ptr) AccessChain 366(input) 128 129 + 378: 132(ptr) AccessChain 366(input) 127 128 Store 378 377 - 379: 369(ptr) AccessChain 368(input.TessLevelOuter) 145 + 379: 369(ptr) AccessChain 368(input.TessLevelOuter) 144 380: 8(float) Load 379 - 381: 133(ptr) AccessChain 366(input) 128 145 + 381: 132(ptr) AccessChain 366(input) 127 144 Store 381 380 - 384: 369(ptr) AccessChain 383(input.TessLevelInner) 128 + 384: 369(ptr) AccessChain 383(input.TessLevelInner) 127 385: 8(float) Load 384 - 386: 133(ptr) AccessChain 366(input) 131 128 + 386: 132(ptr) AccessChain 366(input) 130 127 Store 386 385 - 387: 369(ptr) AccessChain 383(input.TessLevelInner) 131 + 387: 369(ptr) AccessChain 383(input.TessLevelInner) 130 388: 8(float) Load 387 - 389: 133(ptr) AccessChain 366(input) 131 131 + 389: 132(ptr) AccessChain 366(input) 130 130 Store 389 388 393: 48(fvec3) Load 392(TessCoord) 394: 8(float) CompositeExtract 393 0 395: 8(float) CompositeExtract 393 1 396: 42(fvec2) CompositeConstruct 394 395 Store 390(TessCoord) 396 - 403: 402(ptr) AccessChain 401(patch.Pos) 128 + 403: 402(ptr) AccessChain 401(patch.Pos) 127 404: 46(fvec4) Load 403 - 405: 198(ptr) AccessChain 398(patch) 128 128 + 405: 195(ptr) AccessChain 398(patch) 127 127 Store 405 404 - 409: 391(ptr) AccessChain 408(patch.Normal) 128 + 409: 391(ptr) AccessChain 408(patch.Normal) 127 410: 48(fvec3) Load 409 - 411: 163(ptr) AccessChain 398(patch) 128 131 + 411: 160(ptr) AccessChain 398(patch) 127 130 Store 411 410 - 416: 415(ptr) AccessChain 414(patch.UV) 128 + 416: 415(ptr) AccessChain 414(patch.UV) 127 417: 42(fvec2) Load 416 - 418: 44(ptr) AccessChain 398(patch) 128 129 + 418: 44(ptr) AccessChain 398(patch) 127 128 Store 418 417 - 419: 402(ptr) AccessChain 401(patch.Pos) 131 + 419: 402(ptr) AccessChain 401(patch.Pos) 130 420: 46(fvec4) Load 419 - 421: 198(ptr) AccessChain 398(patch) 131 128 + 421: 195(ptr) AccessChain 398(patch) 130 127 Store 421 420 - 422: 391(ptr) AccessChain 408(patch.Normal) 131 + 422: 391(ptr) AccessChain 408(patch.Normal) 130 423: 48(fvec3) Load 422 - 424: 163(ptr) AccessChain 398(patch) 131 131 + 424: 160(ptr) AccessChain 398(patch) 130 130 Store 424 423 - 425: 415(ptr) AccessChain 414(patch.UV) 131 + 425: 415(ptr) AccessChain 414(patch.UV) 130 426: 42(fvec2) Load 425 - 427: 44(ptr) AccessChain 398(patch) 131 129 + 427: 44(ptr) AccessChain 398(patch) 130 128 Store 427 426 - 428: 402(ptr) AccessChain 401(patch.Pos) 129 + 428: 402(ptr) AccessChain 401(patch.Pos) 128 429: 46(fvec4) Load 428 - 430: 198(ptr) AccessChain 398(patch) 129 128 + 430: 195(ptr) AccessChain 398(patch) 128 127 Store 430 429 - 431: 391(ptr) AccessChain 408(patch.Normal) 129 + 431: 391(ptr) AccessChain 408(patch.Normal) 128 432: 48(fvec3) Load 431 - 433: 163(ptr) AccessChain 398(patch) 129 131 + 433: 160(ptr) AccessChain 398(patch) 128 130 Store 433 432 - 434: 415(ptr) AccessChain 414(patch.UV) 129 + 434: 415(ptr) AccessChain 414(patch.UV) 128 435: 42(fvec2) Load 434 - 436: 44(ptr) AccessChain 398(patch) 129 129 + 436: 44(ptr) AccessChain 398(patch) 128 128 Store 436 435 - 437: 402(ptr) AccessChain 401(patch.Pos) 145 + 437: 402(ptr) AccessChain 401(patch.Pos) 144 438: 46(fvec4) Load 437 - 439: 198(ptr) AccessChain 398(patch) 145 128 + 439: 195(ptr) AccessChain 398(patch) 144 127 Store 439 438 - 440: 391(ptr) AccessChain 408(patch.Normal) 145 + 440: 391(ptr) AccessChain 408(patch.Normal) 144 441: 48(fvec3) Load 440 - 442: 163(ptr) AccessChain 398(patch) 145 131 + 442: 160(ptr) AccessChain 398(patch) 144 130 Store 442 441 - 443: 415(ptr) AccessChain 414(patch.UV) 145 + 443: 415(ptr) AccessChain 414(patch.UV) 144 444: 42(fvec2) Load 443 - 445: 44(ptr) AccessChain 398(patch) 145 129 + 445: 44(ptr) AccessChain 398(patch) 144 128 Store 445 444 447: 64 Load 398(patch) 449:24(ConstantsHSOutput) Load 366(input) @@ -453,190 +451,188 @@ spv.debuginfo.hlsl.tese Store 450(param) 451 452:66(DSOutput) FunctionCall 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 448(param) 450(param) 447 Store 446(flattenTemp) 452 - 455: 198(ptr) AccessChain 446(flattenTemp) 128 + 455: 195(ptr) AccessChain 446(flattenTemp) 127 456: 46(fvec4) Load 455 Store 454(@entryPointOutput.Pos) 456 - 459: 163(ptr) AccessChain 446(flattenTemp) 131 + 459: 160(ptr) AccessChain 446(flattenTemp) 130 460: 48(fvec3) Load 459 Store 458(@entryPointOutput.Normal) 460 - 463: 44(ptr) AccessChain 446(flattenTemp) 129 + 463: 44(ptr) AccessChain 446(flattenTemp) 128 464: 42(fvec2) Load 463 Store 462(@entryPointOutput.UV) 464 - 466: 163(ptr) AccessChain 446(flattenTemp) 145 + 466: 160(ptr) AccessChain 446(flattenTemp) 144 467: 48(fvec3) Load 466 Store 465(@entryPointOutput.ViewVec) 467 - 469: 163(ptr) AccessChain 446(flattenTemp) 306 + 469: 160(ptr) AccessChain 446(flattenTemp) 305 470: 48(fvec3) Load 469 Store 468(@entryPointOutput.LightVec) 470 - 472: 163(ptr) AccessChain 446(flattenTemp) 354 + 472: 160(ptr) AccessChain 446(flattenTemp) 351 473: 48(fvec3) Load 472 Store 471(@entryPointOutput.EyePos) 473 - 475: 163(ptr) AccessChain 446(flattenTemp) 348 + 475: 160(ptr) AccessChain 446(flattenTemp) 345 476: 48(fvec3) Load 475 Store 474(@entryPointOutput.WorldPos) 476 Return FunctionEnd - Line 1 68 1 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):66(DSOutput) Function None 82 84(input): 39(ptr) FunctionParameter 85(TessCoord): 44(ptr) FunctionParameter 86(patch): 64 FunctionParameter 88: Label - 110(output): 108(ptr) Variable Function - 121(uv1): 44(ptr) Variable Function - 141(uv2): 44(ptr) Variable Function - 165(n1): 163(ptr) Variable Function - 177(n2): 163(ptr) Variable Function - 200(pos1): 198(ptr) Variable Function - 212(pos2): 198(ptr) Variable Function - 224(pos): 198(ptr) Variable Function - 92: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 90 - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 91 91 16 16 - 96: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 94 84(input) 97 - 100: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 85(TessCoord) 97 - 103: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 86(patch) 97 - 104: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 90 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) - 105: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 90 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 107 107 16 16 - 113: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 111 110(output) 97 - Store 110(output) 118 - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 120 120 16 16 - 124: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 122 121(uv1) 97 - 130: 42(fvec2) CompositeExtract 86(patch) 0 2 - 132: 42(fvec2) CompositeExtract 86(patch) 1 2 - 135: 133(ptr) AccessChain 85(TessCoord) 16 - 136: 8(float) Load 135 - 137: 42(fvec2) CompositeConstruct 136 136 - 138: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 130 132 137 - Store 121(uv1) 138 - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 140 140 16 16 - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(uv2) 97 - 146: 42(fvec2) CompositeExtract 86(patch) 3 2 - 147: 42(fvec2) CompositeExtract 86(patch) 2 2 - 148: 133(ptr) AccessChain 85(TessCoord) 16 - 149: 8(float) Load 148 - 150: 42(fvec2) CompositeConstruct 149 149 - 151: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 146 147 150 - Store 141(uv2) 151 - 152: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 153 153 16 16 - 154: 42(fvec2) Load 121(uv1) - 155: 42(fvec2) Load 141(uv2) - 156: 133(ptr) AccessChain 85(TessCoord) 36 - 157: 8(float) Load 156 - 158: 42(fvec2) CompositeConstruct 157 157 - 159: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 154 155 158 - 160: 44(ptr) AccessChain 110(output) 129 - Store 160 159 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 162 162 16 16 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 166 165(n1) 97 - 169: 48(fvec3) CompositeExtract 86(patch) 0 1 - 170: 48(fvec3) CompositeExtract 86(patch) 1 1 - 171: 133(ptr) AccessChain 85(TessCoord) 16 - 172: 8(float) Load 171 - 173: 48(fvec3) CompositeConstruct 172 172 172 - 174: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 169 170 173 - Store 165(n1) 174 - 175: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 176 176 16 16 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 178 177(n2) 97 - 181: 48(fvec3) CompositeExtract 86(patch) 3 1 - 182: 48(fvec3) CompositeExtract 86(patch) 2 1 - 183: 133(ptr) AccessChain 85(TessCoord) 16 - 184: 8(float) Load 183 - 185: 48(fvec3) CompositeConstruct 184 184 184 - 186: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 181 182 185 - Store 177(n2) 186 - 187: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 188 188 16 16 - 189: 48(fvec3) Load 165(n1) - 190: 48(fvec3) Load 177(n2) - 191: 133(ptr) AccessChain 85(TessCoord) 36 - 192: 8(float) Load 191 - 193: 48(fvec3) CompositeConstruct 192 192 192 - 194: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 189 190 193 - 195: 163(ptr) AccessChain 110(output) 131 - Store 195 194 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 197 197 16 16 - 203: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 201 200(pos1) 97 - 204: 46(fvec4) CompositeExtract 86(patch) 0 0 - 205: 46(fvec4) CompositeExtract 86(patch) 1 0 - 206: 133(ptr) AccessChain 85(TessCoord) 16 - 207: 8(float) Load 206 - 208: 46(fvec4) CompositeConstruct 207 207 207 207 - 209: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 204 205 208 - Store 200(pos1) 209 - 210: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 211 211 16 16 - 215: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 213 212(pos2) 97 - 216: 46(fvec4) CompositeExtract 86(patch) 3 0 - 217: 46(fvec4) CompositeExtract 86(patch) 2 0 - 218: 133(ptr) AccessChain 85(TessCoord) 16 - 219: 8(float) Load 218 - 220: 46(fvec4) CompositeConstruct 219 219 219 219 - 221: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 216 217 220 - Store 212(pos2) 221 - 222: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 223 223 16 16 - 227: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 225 224(pos) 97 - 228: 46(fvec4) Load 200(pos1) - 229: 46(fvec4) Load 212(pos2) - 230: 133(ptr) AccessChain 85(TessCoord) 36 - 231: 8(float) Load 230 - 232: 46(fvec4) CompositeConstruct 231 231 231 231 - 233: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 228 229 232 - Store 224(pos) 233 - 234: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 235 235 16 16 - 247: 236 Load 243(displacementMapTexture) - 257: 248 Load 254(displacementMapSampler) - 262: 258 SampledImage 247 257 - 263: 44(ptr) AccessChain 110(output) 129 - 264: 42(fvec2) Load 263 - 265: 46(fvec4) ImageSampleExplicitLod 262 264 Lod 114 - 266: 8(float) CompositeExtract 265 0 - 309: 307(ptr) AccessChain 304 128 306 - 310: 8(float) Load 309 - 311: 8(float) FMul 266 310 - 312: 133(ptr) AccessChain 224(pos) 36 - 313: 8(float) Load 312 - 314: 8(float) FSub 313 311 - 315: 133(ptr) AccessChain 224(pos) 36 - Store 315 314 - 316: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 317 317 16 16 - 318: 46(fvec4) Load 224(pos) - 321: 319(ptr) AccessChain 304 128 131 - 322: 267 Load 321 - 323: 46(fvec4) VectorTimesMatrix 318 322 - 324: 319(ptr) AccessChain 304 128 128 - 325: 267 Load 324 - 326: 46(fvec4) VectorTimesMatrix 323 325 - 327: 198(ptr) AccessChain 110(output) 128 - Store 327 326 - 328: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 329 329 16 16 - 330: 46(fvec4) Load 224(pos) - 331: 48(fvec3) VectorShuffle 330 330 0 1 2 - 332: 48(fvec3) FNegate 331 - 333: 163(ptr) AccessChain 110(output) 145 - Store 333 332 - 334: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 335 335 16 16 - 338: 336(ptr) AccessChain 304 128 129 - 339: 46(fvec4) Load 338 - 340: 48(fvec3) VectorShuffle 339 339 0 1 2 - 341: 163(ptr) AccessChain 110(output) 145 - 342: 48(fvec3) Load 341 - 343: 48(fvec3) FAdd 340 342 - 344: 48(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 343 - 345: 163(ptr) AccessChain 110(output) 306 - Store 345 344 - 346: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 347 347 16 16 - 349: 46(fvec4) Load 224(pos) - 350: 48(fvec3) VectorShuffle 349 349 0 1 2 - 351: 163(ptr) AccessChain 110(output) 348 - Store 351 350 - 352: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 353 353 16 16 - 355: 46(fvec4) Load 224(pos) - 356: 319(ptr) AccessChain 304 128 131 - 357: 267 Load 356 - 358: 46(fvec4) VectorTimesMatrix 355 357 - 359: 48(fvec3) VectorShuffle 358 358 0 1 2 - 360: 163(ptr) AccessChain 110(output) 354 - Store 360 359 - 361: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 362 362 16 16 - 363:66(DSOutput) Load 110(output) - ReturnValue 363 + 107(output): 105(ptr) Variable Function + 118(uv1): 44(ptr) Variable Function + 138(uv2): 44(ptr) Variable Function + 162(n1): 160(ptr) Variable Function + 174(n2): 160(ptr) Variable Function + 197(pos1): 195(ptr) Variable Function + 209(pos2): 195(ptr) Variable Function + 221(pos): 195(ptr) Variable Function + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 90 + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 91 91 16 16 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 84(input) 95 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 85(TessCoord) 95 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 86(patch) 95 + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 90 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 110 110 16 16 + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(output) 95 + Store 107(output) 117 + 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 121 121 16 16 + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(uv1) 95 + 129: 42(fvec2) CompositeExtract 86(patch) 0 2 + 131: 42(fvec2) CompositeExtract 86(patch) 1 2 + 134: 132(ptr) AccessChain 85(TessCoord) 16 + 135: 8(float) Load 134 + 136: 42(fvec2) CompositeConstruct 135 135 + 137: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 129 131 136 + Store 118(uv1) 137 + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 141 141 16 16 + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 138(uv2) 95 + 145: 42(fvec2) CompositeExtract 86(patch) 3 2 + 146: 42(fvec2) CompositeExtract 86(patch) 2 2 + 147: 132(ptr) AccessChain 85(TessCoord) 16 + 148: 8(float) Load 147 + 149: 42(fvec2) CompositeConstruct 148 148 + 150: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 145 146 149 + Store 138(uv2) 150 + 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 153 153 16 16 + 151: 42(fvec2) Load 118(uv1) + 154: 42(fvec2) Load 138(uv2) + 155: 132(ptr) AccessChain 85(TessCoord) 36 + 156: 8(float) Load 155 + 157: 42(fvec2) CompositeConstruct 156 156 + 158: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 151 154 157 + 159: 44(ptr) AccessChain 107(output) 128 + Store 159 158 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 165 165 16 16 + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 163 162(n1) 95 + 168: 48(fvec3) CompositeExtract 86(patch) 0 1 + 169: 48(fvec3) CompositeExtract 86(patch) 1 1 + 170: 132(ptr) AccessChain 85(TessCoord) 16 + 171: 8(float) Load 170 + 172: 48(fvec3) CompositeConstruct 171 171 171 + 173: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 168 169 172 + Store 162(n1) 173 + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 177 177 16 16 + 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 175 174(n2) 95 + 180: 48(fvec3) CompositeExtract 86(patch) 3 1 + 181: 48(fvec3) CompositeExtract 86(patch) 2 1 + 182: 132(ptr) AccessChain 85(TessCoord) 16 + 183: 8(float) Load 182 + 184: 48(fvec3) CompositeConstruct 183 183 183 + 185: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 180 181 184 + Store 174(n2) 185 + 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 188 188 16 16 + 186: 48(fvec3) Load 162(n1) + 189: 48(fvec3) Load 174(n2) + 190: 132(ptr) AccessChain 85(TessCoord) 36 + 191: 8(float) Load 190 + 192: 48(fvec3) CompositeConstruct 191 191 191 + 193: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 186 189 192 + 194: 160(ptr) AccessChain 107(output) 130 + Store 194 193 + 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 200 200 16 16 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 198 197(pos1) 95 + 203: 46(fvec4) CompositeExtract 86(patch) 0 0 + 204: 46(fvec4) CompositeExtract 86(patch) 1 0 + 205: 132(ptr) AccessChain 85(TessCoord) 16 + 206: 8(float) Load 205 + 207: 46(fvec4) CompositeConstruct 206 206 206 206 + 208: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 203 204 207 + Store 197(pos1) 208 + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 212 212 16 16 + 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(pos2) 95 + 215: 46(fvec4) CompositeExtract 86(patch) 3 0 + 216: 46(fvec4) CompositeExtract 86(patch) 2 0 + 217: 132(ptr) AccessChain 85(TessCoord) 16 + 218: 8(float) Load 217 + 219: 46(fvec4) CompositeConstruct 218 218 218 218 + 220: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 215 216 219 + Store 209(pos2) 220 + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 224 224 16 16 + 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(pos) 95 + 227: 46(fvec4) Load 197(pos1) + 228: 46(fvec4) Load 209(pos2) + 229: 132(ptr) AccessChain 85(TessCoord) 36 + 230: 8(float) Load 229 + 231: 46(fvec4) CompositeConstruct 230 230 230 230 + 232: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 227 228 231 + Store 221(pos) 232 + 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 236 236 16 16 + 245: 233 Load 241(displacementMapTexture) + 256: 247 Load 253(displacementMapSampler) + 261: 257 SampledImage 245 256 + 262: 44(ptr) AccessChain 107(output) 128 + 263: 42(fvec2) Load 262 + 264: 46(fvec4) ImageSampleExplicitLod 261 263 Lod 113 + 265: 8(float) CompositeExtract 264 0 + 308: 306(ptr) AccessChain 303 127 305 + 309: 8(float) Load 308 + 310: 8(float) FMul 265 309 + 311: 132(ptr) AccessChain 221(pos) 36 + 312: 8(float) Load 311 + 313: 8(float) FSub 312 310 + 314: 132(ptr) AccessChain 221(pos) 36 + Store 314 313 + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 317 317 16 16 + 315: 46(fvec4) Load 221(pos) + 320: 318(ptr) AccessChain 303 127 130 + 321: 266 Load 320 + 322: 46(fvec4) VectorTimesMatrix 315 321 + 323: 318(ptr) AccessChain 303 127 127 + 324: 266 Load 323 + 325: 46(fvec4) VectorTimesMatrix 322 324 + 326: 195(ptr) AccessChain 107(output) 127 + Store 326 325 + 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 329 329 16 16 + 327: 46(fvec4) Load 221(pos) + 330: 48(fvec3) VectorShuffle 327 327 0 1 2 + 331: 48(fvec3) FNegate 330 + 332: 160(ptr) AccessChain 107(output) 144 + Store 332 331 + 336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 337 337 16 16 + 335: 333(ptr) AccessChain 303 127 128 + 338: 46(fvec4) Load 335 + 339: 48(fvec3) VectorShuffle 338 338 0 1 2 + 340: 160(ptr) AccessChain 107(output) 144 + 341: 48(fvec3) Load 340 + 342: 48(fvec3) FAdd 339 341 + 343: 48(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 342 + 344: 160(ptr) AccessChain 107(output) 305 + Store 344 343 + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 348 348 16 16 + 346: 46(fvec4) Load 221(pos) + 349: 48(fvec3) VectorShuffle 346 346 0 1 2 + 350: 160(ptr) AccessChain 107(output) 345 + Store 350 349 + 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 354 354 16 16 + 352: 46(fvec4) Load 221(pos) + 355: 318(ptr) AccessChain 303 127 130 + 356: 266 Load 355 + 357: 46(fvec4) VectorTimesMatrix 352 356 + 358: 48(fvec3) VectorShuffle 357 357 0 1 2 + 359: 160(ptr) AccessChain 107(output) 351 + Store 359 358 + 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 362 362 16 16 + 360:66(DSOutput) Load 107(output) + ReturnValue 360 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 8c08100df7..55452392e8 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -5,11 +5,11 @@ spv.debuginfo.hlsl.vert Capability Shader Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Vertex 6 "main" 461 464 468 471 474 477 481 485 493 497 500 503 506 509 - 1: String "" + 2: String "" 9: String "float" 12: String "uint" 24: String "int" @@ -31,24 +31,24 @@ spv.debuginfo.hlsl.vert 66: String "LightVec" 73: String "VSOutput" 79: String "@main" - 85: String "input" - 96: String "output" - 133: String "s" - 141: String "bool" - 146: String "modelview" - 151: String "lightPos" - 155: String "globSpeed" - 159: String "UBO" - 162: String "ubo" - 181: String "c" - 197: String "mx" - 232: String "my" - 266: String "mz" - 286: String "rotMat" - 316: String "gRotMat" - 344: String "locPos" - 358: String "pos" - 424: String "lPos" + 83: String "input" + 93: String "output" + 130: String "s" + 140: String "bool" + 145: String "modelview" + 150: String "lightPos" + 154: String "globSpeed" + 158: String "UBO" + 161: String "ubo" + 178: String "c" + 194: String "mx" + 229: String "my" + 263: String "mz" + 283: String "rotMat" + 313: String "gRotMat" + 341: String "locPos" + 355: String "pos" + 421: String "lPos" Name 6 "main" Name 27 "VSInput" MemberName 27(VSInput) 0 "Pos" @@ -68,26 +68,26 @@ spv.debuginfo.hlsl.vert MemberName 60(VSOutput) 5 "LightVec" Name 77 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" Name 76 "input" - Name 94 "output" - Name 131 "s" - Name 144 "UBO" - MemberName 144(UBO) 0 "projection" - MemberName 144(UBO) 1 "modelview" - MemberName 144(UBO) 2 "lightPos" - MemberName 144(UBO) 3 "locSpeed" - MemberName 144(UBO) 4 "globSpeed" - Name 160 "ubo" - MemberName 160(ubo) 0 "ubo" - Name 167 "" - Name 179 "c" - Name 195 "mx" - Name 230 "my" - Name 264 "mz" - Name 284 "rotMat" - Name 314 "gRotMat" - Name 342 "locPos" - Name 356 "pos" - Name 422 "lPos" + Name 91 "output" + Name 128 "s" + Name 143 "UBO" + MemberName 143(UBO) 0 "projection" + MemberName 143(UBO) 1 "modelview" + MemberName 143(UBO) 2 "lightPos" + MemberName 143(UBO) 3 "locSpeed" + MemberName 143(UBO) 4 "globSpeed" + Name 159 "ubo" + MemberName 159(ubo) 0 "ubo" + Name 166 "" + Name 176 "c" + Name 192 "mx" + Name 227 "my" + Name 261 "mz" + Name 281 "rotMat" + Name 311 "gRotMat" + Name 339 "locPos" + Name 353 "pos" + Name 419 "lPos" Name 459 "input" Name 461 "input.Pos" Name 464 "input.Normal" @@ -105,19 +105,19 @@ spv.debuginfo.hlsl.vert Name 503 "@entryPointOutput.UV" Name 506 "@entryPointOutput.ViewVec" Name 509 "@entryPointOutput.LightVec" - MemberDecorate 144(UBO) 0 RowMajor - MemberDecorate 144(UBO) 0 Offset 0 - MemberDecorate 144(UBO) 0 MatrixStride 16 - MemberDecorate 144(UBO) 1 RowMajor - MemberDecorate 144(UBO) 1 Offset 64 - MemberDecorate 144(UBO) 1 MatrixStride 16 - MemberDecorate 144(UBO) 2 Offset 128 - MemberDecorate 144(UBO) 3 Offset 144 - MemberDecorate 144(UBO) 4 Offset 148 - MemberDecorate 160(ubo) 0 Offset 0 - Decorate 160(ubo) Block - Decorate 167 DescriptorSet 0 - Decorate 167 Binding 0 + MemberDecorate 143(UBO) 0 RowMajor + MemberDecorate 143(UBO) 0 Offset 0 + MemberDecorate 143(UBO) 0 MatrixStride 16 + MemberDecorate 143(UBO) 1 RowMajor + MemberDecorate 143(UBO) 1 Offset 64 + MemberDecorate 143(UBO) 1 MatrixStride 16 + MemberDecorate 143(UBO) 2 Offset 128 + MemberDecorate 143(UBO) 3 Offset 144 + MemberDecorate 143(UBO) 4 Offset 148 + MemberDecorate 159(ubo) 0 Offset 0 + Decorate 159(ubo) Block + Decorate 166 DescriptorSet 0 + Decorate 166 Binding 0 Decorate 461(input.Pos) Location 0 Decorate 464(input.Normal) Location 1 Decorate 468(input.UV) Location 2 @@ -139,166 +139,166 @@ spv.debuginfo.hlsl.vert 14: 11(int) Constant 32 15: 11(int) Constant 6 16: 11(int) Constant 0 - 13: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 + 13: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 12 14 15 16 17: 11(int) Constant 3 - 10: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 + 10: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 14 17 16 18: TypeVector 8(float) 3 - 19: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 19: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 20: TypeVector 8(float) 2 21: 11(int) Constant 2 - 22: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 + 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 23: TypeInt 32 1 26: 11(int) Constant 4 - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 14 26 16 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 24 14 26 16 27(VSInput): TypeStruct 18(fvec3) 18(fvec3) 20(fvec2) 18(fvec3) 18(fvec3) 18(fvec3) 8(float) 23(int) - 30: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 31 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 31 32: 11(int) Constant 35 33: 11(int) Constant 40 - 28: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 - 34: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 28: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 37: 11(int) Constant 30 38: 11(int) Constant 31 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 36 22 30 37 38 16 16 17 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 - 40: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 - 41: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 36 22 30 37 38 16 16 17 + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 29 19 30 32 33 16 16 17 44: 11(int) Constant 36 45: 11(int) Constant 41 - 42: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 43 10 30 44 45 16 16 17 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 43 10 30 44 45 16 16 17 48: 11(int) Constant 37 49: 11(int) Constant 42 - 46: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 25 30 48 49 16 16 17 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 25 30 48 49 16 16 17 52: 11(int) Constant 1 54: 11(int) Constant 5 - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 52 26 30 54 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 16 16 53 51 16 17 28 34 35 39 40 41 42 46 + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 52 26 30 54 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 16 16 53 51 16 17 28 34 35 39 40 41 42 46 55: TypePointer Function 27(VSInput) 56: 11(int) Constant 7 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 56 16 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 56 16 58: TypeVector 8(float) 4 - 59: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 60(VSOutput): TypeStruct 58(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 63: 11(int) Constant 53 64: 11(int) Constant 13 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 59 30 63 64 16 16 17 + 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 59 30 63 64 16 16 17 67: 11(int) Constant 58 - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 69: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 70: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 71: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 73 52 30 16 16 53 73 16 17 61 65 68 69 70 71 + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 73 52 30 16 16 53 73 16 17 61 65 68 69 70 71 74: TypeFunction 60(VSOutput) 55(ptr) - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 72 50 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 72 50 81: 11(int) Constant 62 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 75 30 81 16 53 79 17 81 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 85 50 30 81 16 80 26 52 - 87: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 91: 11(int) Constant 63 - 92: TypePointer Function 60(VSOutput) - 93: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 56 16 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 96 72 30 91 16 80 26 - 98: 8(float) Constant 0 - 99: 58(fvec4) ConstantComposite 98 98 98 98 - 100: 18(fvec3) ConstantComposite 98 98 98 - 101:60(VSOutput) ConstantComposite 99 100 100 100 100 100 - 103: 11(int) Constant 64 - 104: 23(int) Constant 2 - 105: 23(int) Constant 3 - 106: TypePointer Function 18(fvec3) - 107: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 56 16 - 112: 11(int) Constant 65 - 113: TypePointer Function 20(fvec2) - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 56 16 - 117: 23(int) Constant 7 - 118: TypePointer Function 23(int) - 119: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 25 56 16 - 128: 11(int) Constant 68 - 129: TypePointer Function 8(float) - 130: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 56 16 - 132: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 133 10 30 128 16 80 26 - 135: 23(int) Constant 5 - 138: TypeMatrix 58(fvec4) 4 - 140: TypeBool - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 141 14 21 16 - 143: 140(bool) ConstantTrue - 139: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 59 26 143 - 144(UBO): TypeStruct 138 138 58(fvec4) 8(float) 8(float) - 147: 11(int) Constant 43 - 148: 11(int) Constant 20 - 145: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 139 30 147 148 16 16 17 - 149: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 146 139 30 147 148 16 16 17 - 152: 11(int) Constant 44 - 153: 11(int) Constant 17 - 150: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 151 59 30 152 153 16 16 17 - 156: 11(int) Constant 46 - 154: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 10 30 156 153 16 16 17 - 157: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 10 30 156 153 16 16 17 - 158: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 52 30 128 16 53 159 16 17 145 149 150 154 157 - 160(ubo): TypeStruct 144(UBO) - 163: 11(int) Constant 49 - 161: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 158 30 163 48 16 16 17 - 164: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 52 30 128 16 53 162 16 17 161 - 165: TypePointer Uniform 160(ubo) - 166: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 164 21 16 - 167: 165(ptr) Variable Uniform - 169: 11(int) Constant 8 - 168: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 1 164 30 128 16 53 1 167 169 - 170: 23(int) Constant 0 - 171: TypePointer Uniform 8(float) - 172: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 - 178: 11(int) Constant 69 - 180: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 181 10 30 178 16 80 26 - 190: 11(int) Constant 71 - 191: TypeMatrix 18(fvec3) 3 - 192: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 143 - 193: TypePointer Function 191 - 194: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 192 56 16 - 196: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 197 192 30 190 16 80 26 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 75 30 81 16 53 79 17 81 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 50 30 81 16 80 26 52 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 89: TypePointer Function 60(VSOutput) + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 56 16 + 94: 11(int) Constant 63 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 72 30 94 16 80 26 + 97: 8(float) Constant 0 + 98: 58(fvec4) ConstantComposite 97 97 97 97 + 99: 18(fvec3) ConstantComposite 97 97 97 + 100:60(VSOutput) ConstantComposite 98 99 99 99 99 99 + 101: 23(int) Constant 2 + 102: 23(int) Constant 3 + 103: TypePointer Function 18(fvec3) + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 56 16 + 107: 11(int) Constant 64 + 110: TypePointer Function 20(fvec2) + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 56 16 + 114: 11(int) Constant 65 + 116: 23(int) Constant 7 + 117: TypePointer Function 23(int) + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 25 56 16 + 126: TypePointer Function 8(float) + 127: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 56 16 + 131: 11(int) Constant 68 + 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 130 10 30 131 16 80 26 + 134: 23(int) Constant 5 + 137: TypeMatrix 58(fvec4) 4 + 139: TypeBool + 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 21 16 + 142: 139(bool) ConstantTrue + 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 59 26 142 + 143(UBO): TypeStruct 137 137 58(fvec4) 8(float) 8(float) + 146: 11(int) Constant 43 + 147: 11(int) Constant 20 + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 138 30 146 147 16 16 17 + 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 138 30 146 147 16 16 17 + 151: 11(int) Constant 44 + 152: 11(int) Constant 17 + 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 59 30 151 152 16 16 17 + 155: 11(int) Constant 46 + 153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 154 10 30 155 152 16 16 17 + 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 154 10 30 155 152 16 16 17 + 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 158 52 30 131 16 53 158 16 17 144 148 149 153 156 + 159(ubo): TypeStruct 143(UBO) + 162: 11(int) Constant 49 + 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 157 30 162 48 16 16 17 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 161 52 30 131 16 53 161 16 17 160 + 164: TypePointer Uniform 159(ubo) + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 163 21 16 + 166: 164(ptr) Variable Uniform + 168: 11(int) Constant 8 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 163 30 131 16 53 2 166 168 + 169: 23(int) Constant 0 + 170: TypePointer Uniform 8(float) + 171: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 + 179: 11(int) Constant 69 + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 178 10 30 179 16 80 26 + 188: TypeMatrix 18(fvec3) 3 + 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 142 + 190: TypePointer Function 188 + 191: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 189 56 16 + 195: 11(int) Constant 71 + 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 194 189 30 195 16 80 26 203: 11(int) Constant 72 - 206: 8(float) Constant 1065353216 + 205: 8(float) Constant 1065353216 213: 11(int) Constant 76 221: 11(int) Constant 77 - 229: 11(int) Constant 79 - 231: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 232 192 30 229 16 80 26 + 230: 11(int) Constant 79 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 189 30 230 16 80 26 238: 11(int) Constant 81 247: 11(int) Constant 84 255: 11(int) Constant 85 - 263: 11(int) Constant 87 - 265: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 192 30 263 16 80 26 + 264: 11(int) Constant 87 + 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 189 30 264 16 80 26 269: 11(int) Constant 88 274: 11(int) Constant 89 - 283: 11(int) Constant 91 - 285: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 286 192 30 283 16 80 26 + 284: 11(int) Constant 91 + 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 189 30 284 16 80 26 294: 11(int) Constant 94 - 297: 23(int) Constant 4 + 296: 23(int) Constant 4 303: 11(int) Constant 95 - 311: 11(int) Constant 96 - 312: TypePointer Function 138 - 313: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 56 16 - 315: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 139 30 311 16 80 26 - 322: TypePointer Function 58(fvec4) - 323: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 56 16 - 326: 11(int) Constant 97 - 327: 23(int) Constant 1 - 328: 58(fvec4) ConstantComposite 98 206 98 98 + 309: TypePointer Function 137 + 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 138 56 16 + 314: 11(int) Constant 96 + 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 138 30 314 16 80 26 + 321: TypePointer Function 58(fvec4) + 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 56 16 + 324: 23(int) Constant 1 + 325: 58(fvec4) ConstantComposite 97 205 97 97 + 328: 11(int) Constant 97 331: 11(int) Constant 98 - 337: 11(int) Constant 99 - 338: 58(fvec4) ConstantComposite 98 98 98 206 - 341: 11(int) Constant 101 - 343: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 344 59 30 341 16 80 26 - 355: 11(int) Constant 102 - 357: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 358 59 30 355 16 80 26 - 362: 23(int) Constant 6 + 335: 58(fvec4) ConstantComposite 97 97 97 205 + 338: 11(int) Constant 99 + 342: 11(int) Constant 101 + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 341 59 30 342 16 80 26 + 356: 11(int) Constant 102 + 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 355 59 30 356 16 80 26 + 361: 23(int) Constant 6 374: 11(int) Constant 104 - 378: TypePointer Uniform 138 - 379: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 21 16 + 377: TypePointer Uniform 137 + 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 138 21 16 388: 11(int) Constant 105 407: 11(int) Constant 107 - 421: 11(int) Constant 108 - 423: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 424 19 30 421 16 80 26 - 426: TypePointer Uniform 58(fvec4) - 427: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 21 16 + 422: 11(int) Constant 108 + 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 421 19 30 422 16 80 26 + 425: TypePointer Uniform 58(fvec4) + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 21 16 442: 11(int) Constant 109 449: 11(int) Constant 110 455: 11(int) Constant 111 @@ -322,338 +322,334 @@ spv.debuginfo.hlsl.vert 503(@entryPointOutput.UV): 496(ptr) Variable Output 506(@entryPointOutput.ViewVec): 496(ptr) Variable Output 509(@entryPointOutput.LightVec): 496(ptr) Variable Output - Line 1 62 1 6(main): 4 Function None 5 7: Label 459(input): 55(ptr) Variable Function -488(flattenTemp): 92(ptr) Variable Function +488(flattenTemp): 89(ptr) Variable Function 489(param): 55(ptr) Variable Function - Line 1 62 0 462: 18(fvec3) Load 461(input.Pos) - 463: 106(ptr) AccessChain 459(input) 170 + 463: 103(ptr) AccessChain 459(input) 169 Store 463 462 465: 18(fvec3) Load 464(input.Normal) - 466: 106(ptr) AccessChain 459(input) 327 + 466: 103(ptr) AccessChain 459(input) 324 Store 466 465 469: 20(fvec2) Load 468(input.UV) - 470: 113(ptr) AccessChain 459(input) 104 + 470: 110(ptr) AccessChain 459(input) 101 Store 470 469 472: 18(fvec3) Load 471(input.Color) - 473: 106(ptr) AccessChain 459(input) 105 + 473: 103(ptr) AccessChain 459(input) 102 Store 473 472 475: 18(fvec3) Load 474(input.instancePos) - 476: 106(ptr) AccessChain 459(input) 297 + 476: 103(ptr) AccessChain 459(input) 296 Store 476 475 478: 18(fvec3) Load 477(input.instanceRot) - 479: 106(ptr) AccessChain 459(input) 135 + 479: 103(ptr) AccessChain 459(input) 134 Store 479 478 482: 8(float) Load 481(input.instanceScale) - 483: 129(ptr) AccessChain 459(input) 362 + 483: 126(ptr) AccessChain 459(input) 361 Store 483 482 486: 23(int) Load 485(input.instanceTexIndex) - 487: 118(ptr) AccessChain 459(input) 117 + 487: 117(ptr) AccessChain 459(input) 116 Store 487 486 490: 27(VSInput) Load 459(input) Store 489(param) 490 491:60(VSOutput) FunctionCall 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 489(param) Store 488(flattenTemp) 491 - 494: 322(ptr) AccessChain 488(flattenTemp) 170 + 494: 321(ptr) AccessChain 488(flattenTemp) 169 495: 58(fvec4) Load 494 Store 493(@entryPointOutput.Pos) 495 - 498: 106(ptr) AccessChain 488(flattenTemp) 327 + 498: 103(ptr) AccessChain 488(flattenTemp) 324 499: 18(fvec3) Load 498 Store 497(@entryPointOutput.Normal) 499 - 501: 106(ptr) AccessChain 488(flattenTemp) 104 + 501: 103(ptr) AccessChain 488(flattenTemp) 101 502: 18(fvec3) Load 501 Store 500(@entryPointOutput.Color) 502 - 504: 106(ptr) AccessChain 488(flattenTemp) 105 + 504: 103(ptr) AccessChain 488(flattenTemp) 102 505: 18(fvec3) Load 504 Store 503(@entryPointOutput.UV) 505 - 507: 106(ptr) AccessChain 488(flattenTemp) 297 + 507: 103(ptr) AccessChain 488(flattenTemp) 296 508: 18(fvec3) Load 507 Store 506(@entryPointOutput.ViewVec) 508 - 510: 106(ptr) AccessChain 488(flattenTemp) 135 + 510: 103(ptr) AccessChain 488(flattenTemp) 134 511: 18(fvec3) Load 510 Store 509(@entryPointOutput.LightVec) 511 Return FunctionEnd - Line 1 62 1 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):60(VSOutput) Function None 74 76(input): 55(ptr) FunctionParameter 78: Label - 94(output): 92(ptr) Variable Function - 131(s): 129(ptr) Variable Function - 179(c): 129(ptr) Variable Function - 195(mx): 193(ptr) Variable Function - 230(my): 193(ptr) Variable Function - 264(mz): 193(ptr) Variable Function - 284(rotMat): 193(ptr) Variable Function - 314(gRotMat): 312(ptr) Variable Function - 342(locPos): 322(ptr) Variable Function - 356(pos): 322(ptr) Variable Function - 422(lPos): 106(ptr) Variable Function - 82: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 83: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 81 81 16 16 - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 84 76(input) 87 - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) - 89: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 90: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 91 91 16 16 - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 95 94(output) 87 - Store 94(output) 101 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 103 103 16 16 - 108: 106(ptr) AccessChain 76(input) 105 - 109: 18(fvec3) Load 108 - 110: 106(ptr) AccessChain 94(output) 104 - Store 110 109 - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 112 112 16 16 - 115: 113(ptr) AccessChain 76(input) 104 - 116: 20(fvec2) Load 115 - 120: 118(ptr) AccessChain 76(input) 117 - 121: 23(int) Load 120 - 122: 8(float) ConvertSToF 121 - 123: 8(float) CompositeExtract 116 0 - 124: 8(float) CompositeExtract 116 1 - 125: 18(fvec3) CompositeConstruct 123 124 122 - 126: 106(ptr) AccessChain 94(output) 105 - Store 126 125 - 127: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 128 128 16 16 - 134: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 132 131(s) 87 - 136: 129(ptr) AccessChain 76(input) 135 16 - 137: 8(float) Load 136 - 173: 171(ptr) AccessChain 167 170 105 - 174: 8(float) Load 173 - 175: 8(float) FAdd 137 174 - 176: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 175 - Store 131(s) 176 - 177: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 178 178 16 16 - 182: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 180 179(c) 87 - 183: 129(ptr) AccessChain 76(input) 135 16 - 184: 8(float) Load 183 - 185: 171(ptr) AccessChain 167 170 105 - 186: 8(float) Load 185 - 187: 8(float) FAdd 184 186 - 188: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 187 - Store 179(c) 188 - 189: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 190 190 16 16 - 198: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 196 195(mx) 87 - 199: 8(float) Load 179(c) - 200: 8(float) Load 131(s) - 201: 8(float) FNegate 200 - 202: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 203 203 16 16 - 204: 8(float) Load 131(s) - 205: 8(float) Load 179(c) - 207: 18(fvec3) CompositeConstruct 199 201 98 - 208: 18(fvec3) CompositeConstruct 204 205 98 - 209: 18(fvec3) CompositeConstruct 98 98 206 - 210: 191 CompositeConstruct 207 208 209 - 211: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 190 190 16 16 - Store 195(mx) 210 - 212: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 213 213 16 16 - 214: 129(ptr) AccessChain 76(input) 135 52 - 215: 8(float) Load 214 - 216: 171(ptr) AccessChain 167 170 105 - 217: 8(float) Load 216 - 218: 8(float) FAdd 215 217 - 219: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 218 - Store 131(s) 219 - 220: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 221 221 16 16 - 222: 129(ptr) AccessChain 76(input) 135 52 - 223: 8(float) Load 222 - 224: 171(ptr) AccessChain 167 170 105 - 225: 8(float) Load 224 - 226: 8(float) FAdd 223 225 - 227: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 226 - Store 179(c) 227 - 228: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 229 229 16 16 - 233: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 231 230(my) 87 - 234: 8(float) Load 179(c) - 235: 8(float) Load 131(s) - 236: 8(float) FNegate 235 - 237: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 238 238 16 16 - 239: 8(float) Load 131(s) - 240: 8(float) Load 179(c) - 241: 18(fvec3) CompositeConstruct 234 98 236 - 242: 18(fvec3) CompositeConstruct 98 206 98 - 243: 18(fvec3) CompositeConstruct 239 98 240 - 244: 191 CompositeConstruct 241 242 243 - 245: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 229 229 16 16 - Store 230(my) 244 - 246: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 247 247 16 16 - 248: 129(ptr) AccessChain 76(input) 135 21 - 249: 8(float) Load 248 - 250: 171(ptr) AccessChain 167 170 105 - 251: 8(float) Load 250 - 252: 8(float) FAdd 249 251 - 253: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 252 - Store 131(s) 253 - 254: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 255 255 16 16 - 256: 129(ptr) AccessChain 76(input) 135 21 - 257: 8(float) Load 256 - 258: 171(ptr) AccessChain 167 170 105 - 259: 8(float) Load 258 - 260: 8(float) FAdd 257 259 - 261: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 260 - Store 179(c) 261 - 262: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 263 263 16 16 - 267: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(mz) 87 - 268: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 269 269 16 16 - 270: 8(float) Load 179(c) - 271: 8(float) Load 131(s) - 272: 8(float) FNegate 271 - 273: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 274 274 16 16 - 275: 8(float) Load 131(s) - 276: 8(float) Load 179(c) - 277: 18(fvec3) CompositeConstruct 206 98 98 - 278: 18(fvec3) CompositeConstruct 98 270 272 - 279: 18(fvec3) CompositeConstruct 98 275 276 - 280: 191 CompositeConstruct 277 278 279 - 281: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 263 263 16 16 - Store 264(mz) 280 - 282: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 283 283 16 16 - 287: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 285 284(rotMat) 87 - 288: 191 Load 195(mx) - 289: 191 Load 230(my) - 290: 191 MatrixTimesMatrix 288 289 - 291: 191 Load 264(mz) - 292: 191 MatrixTimesMatrix 290 291 - Store 284(rotMat) 292 - 293: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 294 294 16 16 - 295: 129(ptr) AccessChain 76(input) 135 52 - 296: 8(float) Load 295 - 298: 171(ptr) AccessChain 167 170 297 - 299: 8(float) Load 298 - 300: 8(float) FAdd 296 299 - 301: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 300 - Store 131(s) 301 - 302: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 303 303 16 16 - 304: 129(ptr) AccessChain 76(input) 135 52 - 305: 8(float) Load 304 - 306: 171(ptr) AccessChain 167 170 297 - 307: 8(float) Load 306 - 308: 8(float) FAdd 305 307 - 309: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 308 - Store 179(c) 309 - 310: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 311 311 16 16 - 317: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(gRotMat) 87 - 318: 8(float) Load 179(c) - 319: 8(float) Load 131(s) - 320: 8(float) FNegate 319 - 321: 58(fvec4) CompositeConstruct 318 98 320 98 - 324: 322(ptr) AccessChain 314(gRotMat) 170 - Store 324 321 - 325: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 326 326 16 16 - 329: 322(ptr) AccessChain 314(gRotMat) 327 - Store 329 328 - 330: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 331 331 16 16 - 332: 8(float) Load 131(s) - 333: 8(float) Load 179(c) - 334: 58(fvec4) CompositeConstruct 332 98 333 98 - 335: 322(ptr) AccessChain 314(gRotMat) 104 - Store 335 334 - 336: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 337 337 16 16 - 339: 322(ptr) AccessChain 314(gRotMat) 105 - Store 339 338 - 340: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 341 341 16 16 - 345: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 343 342(locPos) 87 - 346: 106(ptr) AccessChain 76(input) 170 - 347: 18(fvec3) Load 346 - 348: 191 Load 284(rotMat) - 349: 18(fvec3) VectorTimesMatrix 347 348 - 350: 8(float) CompositeExtract 349 0 - 351: 8(float) CompositeExtract 349 1 - 352: 8(float) CompositeExtract 349 2 - 353: 58(fvec4) CompositeConstruct 350 351 352 206 - Store 342(locPos) 353 - 354: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 355 355 16 16 - 359: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 357 356(pos) 87 - 360: 58(fvec4) Load 342(locPos) - 361: 18(fvec3) VectorShuffle 360 360 0 1 2 - 363: 129(ptr) AccessChain 76(input) 362 - 364: 8(float) Load 363 - 365: 18(fvec3) VectorTimesScalar 361 364 - 366: 106(ptr) AccessChain 76(input) 297 - 367: 18(fvec3) Load 366 - 368: 18(fvec3) FAdd 365 367 - 369: 8(float) CompositeExtract 368 0 - 370: 8(float) CompositeExtract 368 1 - 371: 8(float) CompositeExtract 368 2 - 372: 58(fvec4) CompositeConstruct 369 370 371 206 - Store 356(pos) 372 - 373: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 374 374 16 16 - 375: 58(fvec4) Load 356(pos) - 376: 138 Load 314(gRotMat) - 377: 58(fvec4) VectorTimesMatrix 375 376 - 380: 378(ptr) AccessChain 167 170 327 - 381: 138 Load 380 - 382: 58(fvec4) VectorTimesMatrix 377 381 - 383: 378(ptr) AccessChain 167 170 170 - 384: 138 Load 383 - 385: 58(fvec4) VectorTimesMatrix 382 384 - 386: 322(ptr) AccessChain 94(output) 170 - Store 386 385 - 387: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 388 388 16 16 - 389: 106(ptr) AccessChain 76(input) 327 - 390: 18(fvec3) Load 389 - 391: 191 Load 284(rotMat) - 392: 18(fvec3) VectorTimesMatrix 390 391 - 393: 138 Load 314(gRotMat) - 394: 378(ptr) AccessChain 167 170 327 - 395: 138 Load 394 - 396: 138 MatrixTimesMatrix 393 395 - 397: 58(fvec4) CompositeExtract 396 0 - 398: 18(fvec3) VectorShuffle 397 397 0 1 2 - 399: 58(fvec4) CompositeExtract 396 1 - 400: 18(fvec3) VectorShuffle 399 399 0 1 2 - 401: 58(fvec4) CompositeExtract 396 2 - 402: 18(fvec3) VectorShuffle 401 401 0 1 2 - 403: 191 CompositeConstruct 398 400 402 - 404: 18(fvec3) VectorTimesMatrix 392 403 - 405: 106(ptr) AccessChain 94(output) 327 - Store 405 404 - 406: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 407 407 16 16 - 408: 106(ptr) AccessChain 76(input) 170 - 409: 18(fvec3) Load 408 - 410: 106(ptr) AccessChain 76(input) 297 - 411: 18(fvec3) Load 410 - 412: 18(fvec3) FAdd 409 411 - 413: 8(float) CompositeExtract 412 0 - 414: 8(float) CompositeExtract 412 1 - 415: 8(float) CompositeExtract 412 2 - 416: 58(fvec4) CompositeConstruct 413 414 415 206 - 417: 378(ptr) AccessChain 167 170 327 - 418: 138 Load 417 - 419: 58(fvec4) VectorTimesMatrix 416 418 - Store 356(pos) 419 - 420: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 421 421 16 16 - 425: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 423 422(lPos) 87 - 428: 426(ptr) AccessChain 167 170 104 - 429: 58(fvec4) Load 428 - 430: 18(fvec3) VectorShuffle 429 429 0 1 2 - 431: 378(ptr) AccessChain 167 170 327 - 432: 138 Load 431 - 433: 58(fvec4) CompositeExtract 432 0 - 434: 18(fvec3) VectorShuffle 433 433 0 1 2 - 435: 58(fvec4) CompositeExtract 432 1 - 436: 18(fvec3) VectorShuffle 435 435 0 1 2 - 437: 58(fvec4) CompositeExtract 432 2 - 438: 18(fvec3) VectorShuffle 437 437 0 1 2 - 439: 191 CompositeConstruct 434 436 438 - 440: 18(fvec3) VectorTimesMatrix 430 439 - Store 422(lPos) 440 - 441: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 442 442 16 16 - 443: 18(fvec3) Load 422(lPos) - 444: 58(fvec4) Load 356(pos) - 445: 18(fvec3) VectorShuffle 444 444 0 1 2 - 446: 18(fvec3) FSub 443 445 - 447: 106(ptr) AccessChain 94(output) 135 - Store 447 446 - 448: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 449 449 16 16 - 450: 58(fvec4) Load 356(pos) - 451: 18(fvec3) VectorShuffle 450 450 0 1 2 - 452: 18(fvec3) FNegate 451 - 453: 106(ptr) AccessChain 94(output) 297 - Store 453 452 - 454: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 455 455 16 16 - 456:60(VSOutput) Load 94(output) - ReturnValue 456 + 91(output): 89(ptr) Variable Function + 128(s): 126(ptr) Variable Function + 176(c): 126(ptr) Variable Function + 192(mx): 190(ptr) Variable Function + 227(my): 190(ptr) Variable Function + 261(mz): 190(ptr) Variable Function + 281(rotMat): 190(ptr) Variable Function + 311(gRotMat): 309(ptr) Variable Function + 339(locPos): 321(ptr) Variable Function + 353(pos): 321(ptr) Variable Function + 419(lPos): 103(ptr) Variable Function + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 81 81 16 16 + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 76(input) 85 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 94 94 16 16 + 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 91(output) 85 + Store 91(output) 100 + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 107 107 16 16 + 105: 103(ptr) AccessChain 76(input) 102 + 108: 18(fvec3) Load 105 + 109: 103(ptr) AccessChain 91(output) 101 + Store 109 108 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 114 114 16 16 + 112: 110(ptr) AccessChain 76(input) 101 + 115: 20(fvec2) Load 112 + 119: 117(ptr) AccessChain 76(input) 116 + 120: 23(int) Load 119 + 121: 8(float) ConvertSToF 120 + 122: 8(float) CompositeExtract 115 0 + 123: 8(float) CompositeExtract 115 1 + 124: 18(fvec3) CompositeConstruct 122 123 121 + 125: 103(ptr) AccessChain 91(output) 102 + Store 125 124 + 133: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 131 131 16 16 + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 129 128(s) 85 + 135: 126(ptr) AccessChain 76(input) 134 16 + 136: 8(float) Load 135 + 172: 170(ptr) AccessChain 166 169 102 + 173: 8(float) Load 172 + 174: 8(float) FAdd 136 173 + 175: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 174 + Store 128(s) 175 + 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 179 179 16 16 + 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 177 176(c) 85 + 182: 126(ptr) AccessChain 76(input) 134 16 + 183: 8(float) Load 182 + 184: 170(ptr) AccessChain 166 169 102 + 185: 8(float) Load 184 + 186: 8(float) FAdd 183 185 + 187: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 186 + Store 176(c) 187 + 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 195 195 16 16 + 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 193 192(mx) 85 + 198: 8(float) Load 176(c) + 199: 8(float) Load 128(s) + 200: 8(float) FNegate 199 + 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 203 203 16 16 + 201: 8(float) Load 128(s) + 204: 8(float) Load 176(c) + 206: 18(fvec3) CompositeConstruct 198 200 97 + 207: 18(fvec3) CompositeConstruct 201 204 97 + 208: 18(fvec3) CompositeConstruct 97 97 205 + 209: 188 CompositeConstruct 206 207 208 + 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 195 195 16 16 + Store 192(mx) 209 + 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 213 213 16 16 + 211: 126(ptr) AccessChain 76(input) 134 52 + 214: 8(float) Load 211 + 215: 170(ptr) AccessChain 166 169 102 + 216: 8(float) Load 215 + 217: 8(float) FAdd 214 216 + 218: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 217 + Store 128(s) 218 + 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 221 221 16 16 + 219: 126(ptr) AccessChain 76(input) 134 52 + 222: 8(float) Load 219 + 223: 170(ptr) AccessChain 166 169 102 + 224: 8(float) Load 223 + 225: 8(float) FAdd 222 224 + 226: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 225 + Store 176(c) 226 + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 230 230 16 16 + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(my) 85 + 233: 8(float) Load 176(c) + 234: 8(float) Load 128(s) + 235: 8(float) FNegate 234 + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 238 238 16 16 + 236: 8(float) Load 128(s) + 239: 8(float) Load 176(c) + 240: 18(fvec3) CompositeConstruct 233 97 235 + 241: 18(fvec3) CompositeConstruct 97 205 97 + 242: 18(fvec3) CompositeConstruct 236 97 239 + 243: 188 CompositeConstruct 240 241 242 + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 230 230 16 16 + Store 227(my) 243 + 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 247 247 16 16 + 245: 126(ptr) AccessChain 76(input) 134 21 + 248: 8(float) Load 245 + 249: 170(ptr) AccessChain 166 169 102 + 250: 8(float) Load 249 + 251: 8(float) FAdd 248 250 + 252: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 251 + Store 128(s) 252 + 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 255 255 16 16 + 253: 126(ptr) AccessChain 76(input) 134 21 + 256: 8(float) Load 253 + 257: 170(ptr) AccessChain 166 169 102 + 258: 8(float) Load 257 + 259: 8(float) FAdd 256 258 + 260: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 259 + Store 176(c) 260 + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(mz) 85 + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 269 269 16 16 + 267: 8(float) Load 176(c) + 270: 8(float) Load 128(s) + 271: 8(float) FNegate 270 + 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 274 274 16 16 + 272: 8(float) Load 128(s) + 275: 8(float) Load 176(c) + 276: 18(fvec3) CompositeConstruct 205 97 97 + 277: 18(fvec3) CompositeConstruct 97 267 271 + 278: 18(fvec3) CompositeConstruct 97 272 275 + 279: 188 CompositeConstruct 276 277 278 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 264 264 16 16 + Store 261(mz) 279 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 284 284 16 16 + 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 282 281(rotMat) 85 + 287: 188 Load 192(mx) + 288: 188 Load 227(my) + 289: 188 MatrixTimesMatrix 287 288 + 290: 188 Load 261(mz) + 291: 188 MatrixTimesMatrix 289 290 + Store 281(rotMat) 291 + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 294 294 16 16 + 292: 126(ptr) AccessChain 76(input) 134 52 + 295: 8(float) Load 292 + 297: 170(ptr) AccessChain 166 169 296 + 298: 8(float) Load 297 + 299: 8(float) FAdd 295 298 + 300: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 299 + Store 128(s) 300 + 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 303 303 16 16 + 301: 126(ptr) AccessChain 76(input) 134 52 + 304: 8(float) Load 301 + 305: 170(ptr) AccessChain 166 169 296 + 306: 8(float) Load 305 + 307: 8(float) FAdd 304 306 + 308: 8(float) ExtInst 3(GLSL.std.450) 14(Cos) 307 + Store 176(c) 308 + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 314 314 16 16 + 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 312 311(gRotMat) 85 + 317: 8(float) Load 176(c) + 318: 8(float) Load 128(s) + 319: 8(float) FNegate 318 + 320: 58(fvec4) CompositeConstruct 317 97 319 97 + 323: 321(ptr) AccessChain 311(gRotMat) 169 + Store 323 320 + 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 328 328 16 16 + 326: 321(ptr) AccessChain 311(gRotMat) 324 + Store 326 325 + 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 331 331 16 16 + 329: 8(float) Load 128(s) + 332: 8(float) Load 176(c) + 333: 58(fvec4) CompositeConstruct 329 97 332 97 + 334: 321(ptr) AccessChain 311(gRotMat) 101 + Store 334 333 + 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 338 338 16 16 + 336: 321(ptr) AccessChain 311(gRotMat) 102 + Store 336 335 + 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 342 342 16 16 + 343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 340 339(locPos) 85 + 345: 103(ptr) AccessChain 76(input) 169 + 346: 18(fvec3) Load 345 + 347: 188 Load 281(rotMat) + 348: 18(fvec3) VectorTimesMatrix 346 347 + 349: 8(float) CompositeExtract 348 0 + 350: 8(float) CompositeExtract 348 1 + 351: 8(float) CompositeExtract 348 2 + 352: 58(fvec4) CompositeConstruct 349 350 351 205 + Store 339(locPos) 352 + 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 356 356 16 16 + 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 354 353(pos) 85 + 359: 58(fvec4) Load 339(locPos) + 360: 18(fvec3) VectorShuffle 359 359 0 1 2 + 362: 126(ptr) AccessChain 76(input) 361 + 363: 8(float) Load 362 + 364: 18(fvec3) VectorTimesScalar 360 363 + 365: 103(ptr) AccessChain 76(input) 296 + 366: 18(fvec3) Load 365 + 367: 18(fvec3) FAdd 364 366 + 368: 8(float) CompositeExtract 367 0 + 369: 8(float) CompositeExtract 367 1 + 370: 8(float) CompositeExtract 367 2 + 371: 58(fvec4) CompositeConstruct 368 369 370 205 + Store 353(pos) 371 + 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 374 374 16 16 + 372: 58(fvec4) Load 353(pos) + 375: 137 Load 311(gRotMat) + 376: 58(fvec4) VectorTimesMatrix 372 375 + 379: 377(ptr) AccessChain 166 169 324 + 380: 137 Load 379 + 381: 58(fvec4) VectorTimesMatrix 376 380 + 382: 377(ptr) AccessChain 166 169 169 + 383: 137 Load 382 + 384: 58(fvec4) VectorTimesMatrix 381 383 + 385: 321(ptr) AccessChain 91(output) 169 + Store 385 384 + 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 388 388 16 16 + 386: 103(ptr) AccessChain 76(input) 324 + 389: 18(fvec3) Load 386 + 390: 188 Load 281(rotMat) + 391: 18(fvec3) VectorTimesMatrix 389 390 + 392: 137 Load 311(gRotMat) + 393: 377(ptr) AccessChain 166 169 324 + 394: 137 Load 393 + 395: 137 MatrixTimesMatrix 392 394 + 396: 58(fvec4) CompositeExtract 395 0 + 397: 18(fvec3) VectorShuffle 396 396 0 1 2 + 398: 58(fvec4) CompositeExtract 395 1 + 399: 18(fvec3) VectorShuffle 398 398 0 1 2 + 400: 58(fvec4) CompositeExtract 395 2 + 401: 18(fvec3) VectorShuffle 400 400 0 1 2 + 402: 188 CompositeConstruct 397 399 401 + 403: 18(fvec3) VectorTimesMatrix 391 402 + 404: 103(ptr) AccessChain 91(output) 324 + Store 404 403 + 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 407 407 16 16 + 405: 103(ptr) AccessChain 76(input) 169 + 408: 18(fvec3) Load 405 + 409: 103(ptr) AccessChain 76(input) 296 + 410: 18(fvec3) Load 409 + 411: 18(fvec3) FAdd 408 410 + 412: 8(float) CompositeExtract 411 0 + 413: 8(float) CompositeExtract 411 1 + 414: 8(float) CompositeExtract 411 2 + 415: 58(fvec4) CompositeConstruct 412 413 414 205 + 416: 377(ptr) AccessChain 166 169 324 + 417: 137 Load 416 + 418: 58(fvec4) VectorTimesMatrix 415 417 + Store 353(pos) 418 + 424: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 422 422 16 16 + 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 420 419(lPos) 85 + 427: 425(ptr) AccessChain 166 169 101 + 428: 58(fvec4) Load 427 + 429: 18(fvec3) VectorShuffle 428 428 0 1 2 + 430: 377(ptr) AccessChain 166 169 324 + 431: 137 Load 430 + 432: 58(fvec4) CompositeExtract 431 0 + 433: 18(fvec3) VectorShuffle 432 432 0 1 2 + 434: 58(fvec4) CompositeExtract 431 1 + 435: 18(fvec3) VectorShuffle 434 434 0 1 2 + 436: 58(fvec4) CompositeExtract 431 2 + 437: 18(fvec3) VectorShuffle 436 436 0 1 2 + 438: 188 CompositeConstruct 433 435 437 + 439: 18(fvec3) VectorTimesMatrix 429 438 + Store 419(lPos) 439 + 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 442 442 16 16 + 440: 18(fvec3) Load 419(lPos) + 443: 58(fvec4) Load 353(pos) + 444: 18(fvec3) VectorShuffle 443 443 0 1 2 + 445: 18(fvec3) FSub 440 444 + 446: 103(ptr) AccessChain 91(output) 134 + Store 446 445 + 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 449 449 16 16 + 447: 58(fvec4) Load 353(pos) + 450: 18(fvec3) VectorShuffle 447 447 0 1 2 + 451: 18(fvec3) FNegate 450 + 452: 103(ptr) AccessChain 91(output) 296 + Store 452 451 + 454: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 455 455 16 16 + 453:60(VSOutput) Load 91(output) + ReturnValue 453 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out index e17bf1a9ff..4262ad03c7 100644 --- a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.scalar_types.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 158 +// Id's are bound by 159 Capability Shader Capability Float16 @@ -10,12 +10,12 @@ spv.debuginfo.scalar_types.glsl.frag Capability Int16 Capability Int8 Extension "SPV_KHR_non_semantic_info" - 2: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" ExecutionMode 14 OriginUpperLeft - 1: String "" + 2: String "" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -26,183 +26,183 @@ spv.debuginfo.scalar_types.glsl.frag // OpModuleProcessed entry-point main #line 1 " - 30: String "bool" - 36: String "VAR_bool" - 42: String "int" - 48: String "VAR_int" - 56: String "VAR_uint" - 60: String "float" - 66: String "VAR_float" - 71: String "double" - 78: String "VAR_double" - 83: String "int8_t" - 89: String "VAR_int8_t" - 94: String "uint8_t" - 100: String "VAR_uint8_t" - 105: String "int16_t" - 112: String "VAR_int16_t" - 117: String "uint16_t" - 123: String "VAR_uint16_t" - 128: String "int64_t" - 134: String "VAR_int64_t" - 139: String "uint64_t" - 145: String "VAR_uint64_t" - 150: String "float16_t" - 156: String "VAR_float16_t" + 29: String "bool" + 35: String "VAR_bool" + 41: String "int" + 47: String "VAR_int" + 55: String "VAR_uint" + 59: String "float" + 65: String "VAR_float" + 70: String "double" + 77: String "VAR_double" + 82: String "int8_t" + 88: String "VAR_int8_t" + 93: String "uint8_t" + 99: String "VAR_uint8_t" + 104: String "int16_t" + 111: String "VAR_int16_t" + 116: String "uint16_t" + 122: String "VAR_uint16_t" + 127: String "int64_t" + 133: String "VAR_int64_t" + 138: String "uint64_t" + 144: String "VAR_uint64_t" + 149: String "float16_t" + 155: String "VAR_float16_t" SourceExtension "GL_EXT_shader_explicit_arithmetic_types" Name 14 "main" - Name 34 "VAR_bool" - Name 46 "VAR_int" - Name 54 "VAR_uint" - Name 64 "VAR_float" - Name 76 "VAR_double" - Name 87 "VAR_int8_t" - Name 98 "VAR_uint8_t" - Name 110 "VAR_int16_t" - Name 121 "VAR_uint16_t" - Name 132 "VAR_int64_t" - Name 143 "VAR_uint64_t" - Name 154 "VAR_float16_t" + Name 33 "VAR_bool" + Name 45 "VAR_int" + Name 53 "VAR_uint" + Name 63 "VAR_float" + Name 75 "VAR_double" + Name 86 "VAR_int8_t" + Name 97 "VAR_uint8_t" + Name 109 "VAR_int16_t" + Name 120 "VAR_uint16_t" + Name 131 "VAR_int64_t" + Name 142 "VAR_uint64_t" + Name 153 "VAR_float16_t" 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 10: 7(int) Constant 32 11: 7(int) Constant 6 12: 7(int) Constant 0 - 9: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 13: 7(int) Constant 3 - 6: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 - 18: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 1 19 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 20: 7(int) Constant 42 22: 7(int) Constant 1 23: 7(int) Constant 4 24: 7(int) Constant 2 - 21: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 - 17: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 - 28: 7(int) Constant 43 - 29: TypeBool - 31: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 30 10 24 12 - 32: TypePointer Private 29(bool) - 33: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 31 11 12 - 34(VAR_bool): 32(ptr) Variable Private + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: TypeBool + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 29 10 24 12 + 31: TypePointer Private 28(bool) + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 11 12 + 33(VAR_bool): 31(ptr) Variable Private + 36: 7(int) Constant 43 37: 7(int) Constant 8 - 35: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 36 31 18 28 12 21 36 34(VAR_bool) 37 - 38: 29(bool) ConstantFalse - 40: 7(int) Constant 44 - 41: TypeInt 32 1 - 43: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 42 10 23 12 - 44: TypePointer Private 41(int) - 45: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 11 12 - 46(VAR_int): 44(ptr) Variable Private - 47: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 48 43 18 40 12 21 48 46(VAR_int) 37 - 49: 41(int) Constant 0 - 51: 7(int) Constant 45 - 52: TypePointer Private 7(int) - 53: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 11 12 - 54(VAR_uint): 52(ptr) Variable Private - 55: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 56 9 18 51 12 21 56 54(VAR_uint) 37 - 58: 7(int) Constant 46 - 59: TypeFloat 32 - 61: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 60 10 13 12 - 62: TypePointer Private 59(float) - 63: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 11 12 - 64(VAR_float): 62(ptr) Variable Private - 65: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 66 61 18 58 12 21 66 64(VAR_float) 37 - 67: 59(float) Constant 0 - 69: 7(int) Constant 47 - 70: TypeFloat 64 - 73: 7(int) Constant 64 - 72: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 71 73 13 12 - 74: TypePointer Private 70(float64_t) - 75: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 11 12 - 76(VAR_double): 74(ptr) Variable Private - 77: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 72 18 69 12 21 78 76(VAR_double) 37 - 79:70(float64_t) Constant 0 0 - 81: 7(int) Constant 48 - 82: TypeInt 8 1 - 84: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 83 37 23 12 - 85: TypePointer Private 82(int8_t) - 86: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 11 12 - 87(VAR_int8_t): 85(ptr) Variable Private - 88: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 89 84 18 81 12 21 89 87(VAR_int8_t) 37 - 90: 82(int8_t) Constant 0 - 92: 7(int) Constant 49 - 93: TypeInt 8 0 - 95: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 94 37 11 12 - 96: TypePointer Private 93(int8_t) - 97: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 95 11 12 - 98(VAR_uint8_t): 96(ptr) Variable Private - 99: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 100 95 18 92 12 21 100 98(VAR_uint8_t) 37 - 101: 93(int8_t) Constant 0 - 103: 7(int) Constant 50 - 104: TypeInt 16 1 - 107: 7(int) Constant 16 - 106: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 105 107 23 12 - 108: TypePointer Private 104(int16_t) - 109: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 106 11 12 -110(VAR_int16_t): 108(ptr) Variable Private - 111: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 112 106 18 103 12 21 112 110(VAR_int16_t) 37 - 113:104(int16_t) Constant 0 - 115: 7(int) Constant 51 - 116: TypeInt 16 0 - 118: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 117 107 11 12 - 119: TypePointer Private 116(int16_t) - 120: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 11 12 -121(VAR_uint16_t): 119(ptr) Variable Private - 122: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 123 118 18 115 12 21 123 121(VAR_uint16_t) 37 - 124:116(int16_t) Constant 0 - 126: 7(int) Constant 52 - 127: TypeInt 64 1 - 129: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 128 73 23 12 - 130: TypePointer Private 127(int64_t) - 131: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 129 11 12 -132(VAR_int64_t): 130(ptr) Variable Private - 133: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 134 129 18 126 12 21 134 132(VAR_int64_t) 37 - 135:127(int64_t) Constant 0 0 - 137: 7(int) Constant 53 - 138: TypeInt 64 0 - 140: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 139 73 11 12 - 141: TypePointer Private 138(int64_t) - 142: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 140 11 12 -143(VAR_uint64_t): 141(ptr) Variable Private - 144: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 145 140 18 137 12 21 145 143(VAR_uint64_t) 37 - 146:138(int64_t) Constant 0 0 - 148: 7(int) Constant 54 - 149: TypeFloat 16 - 151: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 150 107 13 12 - 152: TypePointer Private 149(float16_t) - 153: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 151 11 12 -154(VAR_float16_t): 152(ptr) Variable Private - 155: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 156 151 18 148 12 21 156 154(VAR_float16_t) 37 - 157:149(float16_t) Constant 0 - Line 1 42 11 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 35 30 18 36 12 21 35 33(VAR_bool) 37 + 38: 28(bool) ConstantFalse + 40: TypeInt 32 1 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 41 10 23 12 + 43: TypePointer Private 40(int) + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 42 11 12 + 45(VAR_int): 43(ptr) Variable Private + 48: 7(int) Constant 44 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 47 42 18 48 12 21 47 45(VAR_int) 37 + 49: 40(int) Constant 0 + 51: TypePointer Private 7(int) + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 11 12 + 53(VAR_uint): 51(ptr) Variable Private + 56: 7(int) Constant 45 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 55 9 18 56 12 21 55 53(VAR_uint) 37 + 58: TypeFloat 32 + 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 59 10 13 12 + 61: TypePointer Private 58(float) + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 11 12 + 63(VAR_float): 61(ptr) Variable Private + 66: 7(int) Constant 46 + 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 65 60 18 66 12 21 65 63(VAR_float) 37 + 67: 58(float) Constant 0 + 69: TypeFloat 64 + 72: 7(int) Constant 64 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 70 72 13 12 + 73: TypePointer Private 69(float64_t) + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 11 12 + 75(VAR_double): 73(ptr) Variable Private + 78: 7(int) Constant 47 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 71 18 78 12 21 77 75(VAR_double) 37 + 79:69(float64_t) Constant 0 0 + 81: TypeInt 8 1 + 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 82 37 23 12 + 84: TypePointer Private 81(int8_t) + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 83 11 12 + 86(VAR_int8_t): 84(ptr) Variable Private + 89: 7(int) Constant 48 + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 88 83 18 89 12 21 88 86(VAR_int8_t) 37 + 90: 81(int8_t) Constant 0 + 92: TypeInt 8 0 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 93 37 11 12 + 95: TypePointer Private 92(int8_t) + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 94 11 12 + 97(VAR_uint8_t): 95(ptr) Variable Private + 100: 7(int) Constant 49 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 99 94 18 100 12 21 99 97(VAR_uint8_t) 37 + 101: 92(int8_t) Constant 0 + 103: TypeInt 16 1 + 106: 7(int) Constant 16 + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 104 106 23 12 + 107: TypePointer Private 103(int16_t) + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 105 11 12 +109(VAR_int16_t): 107(ptr) Variable Private + 112: 7(int) Constant 50 + 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 111 105 18 112 12 21 111 109(VAR_int16_t) 37 + 113:103(int16_t) Constant 0 + 115: TypeInt 16 0 + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 116 106 11 12 + 118: TypePointer Private 115(int16_t) + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 117 11 12 +120(VAR_uint16_t): 118(ptr) Variable Private + 123: 7(int) Constant 51 + 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 122 117 18 123 12 21 122 120(VAR_uint16_t) 37 + 124:115(int16_t) Constant 0 + 126: TypeInt 64 1 + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 127 72 23 12 + 129: TypePointer Private 126(int64_t) + 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 11 12 +131(VAR_int64_t): 129(ptr) Variable Private + 134: 7(int) Constant 52 + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 133 128 18 134 12 21 133 131(VAR_int64_t) 37 + 135:126(int64_t) Constant 0 0 + 137: TypeInt 64 0 + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 138 72 11 12 + 140: TypePointer Private 137(int64_t) + 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 11 12 +142(VAR_uint64_t): 140(ptr) Variable Private + 145: 7(int) Constant 53 + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 144 139 18 145 12 21 144 142(VAR_uint64_t) 37 + 146:137(int64_t) Constant 0 0 + 148: TypeFloat 16 + 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 149 106 13 12 + 151: TypePointer Private 148(float16_t) + 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 150 11 12 +153(VAR_float16_t): 151(ptr) Variable Private + 156: 7(int) Constant 54 + 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 155 150 18 156 12 21 155 153(VAR_float16_t) 37 + 157:148(float16_t) Constant 0 14(main): 4 Function None 5 15: Label - 25: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) - 26: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 27: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 28 28 12 12 - Store 34(VAR_bool) 38 - 39: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 40 40 12 12 - Store 46(VAR_int) 49 - 50: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 51 51 12 12 - Store 54(VAR_uint) 12 - 57: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 58 58 12 12 - Store 64(VAR_float) 67 - 68: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 69 69 12 12 - Store 76(VAR_double) 79 - 80: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 81 81 12 12 - Store 87(VAR_int8_t) 90 - 91: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 92 92 12 12 - Store 98(VAR_uint8_t) 101 - 102: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 103 103 12 12 - Store 110(VAR_int16_t) 113 - 114: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 115 115 12 12 - Store 121(VAR_uint16_t) 124 - 125: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 126 126 12 12 - Store 132(VAR_int64_t) 135 - 136: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 137 137 12 12 - Store 143(VAR_uint64_t) 146 - 147: 4 ExtInst 2(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 148 148 12 12 - Store 154(VAR_float16_t) 157 + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 36 36 12 12 + Store 33(VAR_bool) 38 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 48 48 12 12 + Store 45(VAR_int) 49 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 56 56 12 12 + Store 53(VAR_uint) 12 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 66 66 12 12 + Store 63(VAR_float) 67 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 78 78 12 12 + Store 75(VAR_double) 79 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 89 89 12 12 + Store 86(VAR_int8_t) 90 + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 100 100 12 12 + Store 97(VAR_uint8_t) 101 + 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 112 112 12 12 + Store 109(VAR_int16_t) 113 + 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 123 123 12 12 + Store 120(VAR_uint16_t) 124 + 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 134 134 12 12 + Store 131(VAR_int64_t) 135 + 147: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 145 145 12 12 + Store 142(VAR_uint64_t) 146 + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 + Store 153(VAR_float16_t) 157 Return FunctionEnd From 43dd32396f76f5ed04cce7768ba1b9faace274c5 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 06:19:16 +0000 Subject: [PATCH 408/594] Bump lukka/get-cmake from 3.28.2 to 3.28.3 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.28.2 to 3.28.3. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/23a189c2ed38ec264f5026ce2303e5b7a664345c...139aae96315b496d9af1b5e9abe53b15ca7eece8) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 4c24a17af0..2bf66b5c64 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index d0343b4e9c..d7c48a5928 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -92,7 +92,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -124,7 +124,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -148,7 +148,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -166,7 +166,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -195,7 +195,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -221,7 +221,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@23a189c2ed38ec264f5026ce2303e5b7a664345c # v3.28.2 + - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: From 47a02a987c4e6dc573dfca1b80e5e3eacf4e2ed8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Feb 2024 06:19:19 +0000 Subject: [PATCH 409/594] Bump actions/upload-artifact from 4.3.0 to 4.3.1 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.0 to 4.3.1. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/26f96dfa697d77e81fd5907df203aa23a56210a8...5d5d22a31266ced268874388b861e4b58bb5c2f3) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index a3249198e3..f952197a9e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0 + uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 with: name: SARIF file path: results.sarif From b4a6efcda2ce199cc7416e8bbd8c5881201088e1 Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 12 Feb 2024 21:53:15 +0000 Subject: [PATCH 410/594] Allow external control of whether Glslang will be tested or installed Expose GLSLANG__TESTS and GLSLANG_ENABLE_INSTALL as options that can be controlled from an enclosing project, or from the command line. They retain the prior default behaviour. In particular, if Glslang is not the top level project, then they default to OFF. Fixes: #3507 --- CMakeLists.txt | 74 +++++++++++++--------- SPIRV/CMakeLists.txt | 2 +- StandAlone/CMakeLists.txt | 27 ++++---- glslang/CMakeLists.txt | 2 +- glslang/OSDependent/Unix/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 2 +- 6 files changed, 61 insertions(+), 48 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1191bc44e9..e6feafc3a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,6 +38,9 @@ if (CMAKE_VERSION VERSION_LESS "3.21") string(COMPARE EQUAL ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_SOURCE_DIR} PROJECT_IS_TOP_LEVEL) endif() +set(GLSLANG_TESTS_DEFAULT ON) # Can be turned off, below, based on environment. +set(GLSLANG_ENABLE_INSTALL_DEFAULT ON) # Can be turned off, below, based on environment. + set_property(GLOBAL PROPERTY USE_FOLDERS ON) # Adhere to GNU filesystem layout conventions @@ -75,9 +78,25 @@ endif() # Furthermore testing is equally problematic. if (IOS OR ANDROID) set(ENABLE_GLSLANG_BINARIES OFF) - set(GLSLANG_TESTS OFF) + set(GLSLANG_TESTS_DEFAULT OFF) +endif() + +# Simplify the default case of including this project. +# Otherwise add_subdirectory users have a harder time consuming the library. +# Since glslang will pollute the installation and add undesirable testing. +if(NOT PROJECT_IS_TOP_LEVEL) + set(GLSLANG_TESTS_DEFAULT OFF) + set(GLSLANG_ENABLE_INSTALL_DEFAULT OFF) endif() +# Control whether Glslang self-tests are built and tested. +# Always expose this as an option, so the defaults can be overridden. +option(GLSLANG_TESTS "Enable glslang testing" ${GLSLANG_TESTS_DEFAULT}) + +# Control whether to install Glslang. +# Always expose this as an option, so the defaults can be overridden. +option(GLSLANG_ENABLE_INSTALL "Enable glslang installation" ${GLSLANG_ENABLE_INSTALL_DEFAULT}) + option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON) @@ -300,38 +319,33 @@ if(ENABLE_GLSLANG_BINARIES) endif() add_subdirectory(SPIRV) -# Testing / installation only makes sense when the project is top level. -# -# Otherwise add_subdirectory users have a harder time consuming the library. -# Since glslang will pollute the installation and add undesirable testing. -if(PROJECT_IS_TOP_LEVEL) - option(GLSLANG_TESTS "Enable glslang testing") - if(GLSLANG_TESTS) - enable_testing() - add_subdirectory(gtests) - - # glslang-testsuite runs a bash script on Windows. - # Make sure to use '-o igncr' flag to ignore carriage returns (\r). - set(IGNORE_CR_FLAG "") - if(WIN32) - set(IGNORE_CR_FLAG -o igncr) - endif() +if(GLSLANG_TESTS) + enable_testing() + add_subdirectory(gtests) - if (CMAKE_CONFIGURATION_TYPES) - set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) - set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslang) - set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) - else() - set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) - set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang) - set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) - endif() + # glslang-testsuite runs a bash script on Windows. + # Make sure to use '-o igncr' flag to ignore carriage returns (\r). + set(IGNORE_CR_FLAG "") + if(WIN32) + set(IGNORE_CR_FLAG -o igncr) + endif() - add_test(NAME glslang-testsuite - COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) + if (CMAKE_CONFIGURATION_TYPES) + set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/$/localResults) + set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/glslang) + set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/$/spirv-remap) + else() + set(RESULTS_PATH ${CMAKE_CURRENT_BINARY_DIR}/localResults) + set(VALIDATOR_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/glslang) + set(REMAP_PATH ${CMAKE_CURRENT_BINARY_DIR}/StandAlone/spirv-remap) endif() + add_test(NAME glslang-testsuite + COMMAND bash ${IGNORE_CR_FLAG} runtests ${RESULTS_PATH} ${VALIDATOR_PATH} ${REMAP_PATH} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/Test/) +endif(GLSLANG_TESTS) + +if (GLSLANG_ENABLE_INSTALL) file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/glslang-config.cmake.in" [=[ @PACKAGE_INIT@ include(CMakeFindDependencyMacro) @@ -375,4 +389,4 @@ if(PROJECT_IS_TOP_LEVEL) DESTINATION "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}" ) -endif() +endif(GLSLANG_ENABLE_INSTALL) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 808473b517..1ccd60093d 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -118,7 +118,7 @@ if(WIN32) source_group("Source" FILES ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) endif() -if(PROJECT_IS_TOP_LEVEL) +if(GLSLANG_ENABLE_INSTALL) if (ENABLE_SPVREMAPPER) install(TARGETS SPVRemapper EXPORT glslang-targets) endif() diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index d316adf55f..e0fdb487bd 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -87,19 +87,19 @@ if(WIN32) source_group("Source" FILES ${SOURCES}) endif() -if(PROJECT_IS_TOP_LEVEL) - install(TARGETS glslang-standalone EXPORT glslang-targets) +# Create a symbolic link to glslang named glslangValidator for backwards compatibility +set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}") +set(link_method create_symlink) +if (WIN32 OR MINGW) +set(link_method copy_if_different) +endif() +add_custom_command(TARGET glslang-standalone + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} + WORKING_DIRECTORY $) - # Create a symbolic link to glslang named glslangValidator for backwards compatibility - set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}") - set(link_method create_symlink) - if (WIN32 OR MINGW) - set(link_method copy_if_different) - endif() - add_custom_command(TARGET glslang-standalone - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} - WORKING_DIRECTORY $) +if(GLSLANG_ENABLE_INSTALL) + install(TARGETS glslang-standalone EXPORT glslang-targets) # Create the same symlink at install time install(CODE "execute_process( \ @@ -109,5 +109,4 @@ if(PROJECT_IS_TOP_LEVEL) if(ENABLE_SPVREMAPPER) install(TARGETS spirv-remap EXPORT glslang-targets) endif() - -endif() +endif(GLSLANG_ENABLE_INSTALL) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 3c61ba3999..e4690f0952 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -227,7 +227,7 @@ endif() ################################################################################ # install ################################################################################ -if(PROJECT_IS_TOP_LEVEL) +if(GLSLANG_ENABLE_INSTALL) install(TARGETS glslang EXPORT glslang-targets) if(NOT BUILD_SHARED_LIBS) install(TARGETS MachineIndependent EXPORT glslang-targets) diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 2df99291ed..0c54975687 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -40,6 +40,6 @@ set(THREADS_PREFER_PTHREAD_FLAG ON) find_package(Threads REQUIRED) target_link_libraries(OSDependent Threads::Threads) -if(PROJECT_IS_TOP_LEVEL AND NOT BUILD_SHARED_LIBS) +if(GLSLANG_ENABLE_INSTALL AND NOT BUILD_SHARED_LIBS) install(TARGETS OSDependent EXPORT glslang-targets) endif() diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index fd1d349b3a..8a9a8c42c8 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -51,6 +51,6 @@ if(WIN32) source_group("Source" FILES ${SOURCES}) endif() -if(PROJECT_IS_TOP_LEVEL) +if(GLSLANG_ENABLE_INSTALL) install(TARGETS OSDependent EXPORT glslang-targets) endif() From 9fd0fcd737f1369e89fb3aa8b2e62bad57ac46c6 Mon Sep 17 00:00:00 2001 From: Sven van Haastregt Date: Tue, 13 Feb 2024 13:45:26 +0000 Subject: [PATCH 411/594] Add GL_EXT_expect_assume support Signed-off-by: Sven van Haastregt --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 15 + SPIRV/doc.cpp | 2 + .../spv.expect_assume.assumeEXT.comp.out | 47 ++ .../spv.expect_assume.expectEXT.comp.out | 276 +++++++ ....expect_assume.expectEXT.exttypes.comp.out | 689 ++++++++++++++++++ Test/spv.expect_assume.assumeEXT.comp | 13 + Test/spv.expect_assume.expectEXT.comp | 43 ++ .../spv.expect_assume.expectEXT.exttypes.comp | 101 +++ glslang/Include/intermediate.h | 4 + glslang/MachineIndependent/Initialize.cpp | 63 ++ glslang/MachineIndependent/Versions.cpp | 1 + glslang/MachineIndependent/Versions.h | 1 + gtests/Spv.FromFile.cpp | 3 + 14 files changed, 1259 insertions(+) create mode 100644 Test/baseResults/spv.expect_assume.assumeEXT.comp.out create mode 100644 Test/baseResults/spv.expect_assume.expectEXT.comp.out create mode 100644 Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out create mode 100644 Test/spv.expect_assume.assumeEXT.comp create mode 100644 Test/spv.expect_assume.expectEXT.comp create mode 100644 Test/spv.expect_assume.expectEXT.exttypes.comp diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index b72aeaf9c6..1d3af1403a 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -60,5 +60,6 @@ static const char* const E_SPV_KHR_ray_tracing_position_fetch = "SPV_KHR_ray_t static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_cooperative_matrix"; static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence"; static const char* const E_SPV_KHR_subgroup_rotate = "SPV_KHR_subgroup_rotate"; +static const char* const E_SPV_KHR_expect_assume = "SPV_KHR_expect_assume"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 309b4079fd..1d375ef253 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2785,6 +2785,11 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI return false; + case glslang::EOpAssumeEXT: + builder.addCapability(spv::CapabilityExpectAssumeKHR); + builder.addExtension(spv::E_SPV_KHR_expect_assume); + builder.createNoResultOp(spv::OpAssumeTrueKHR, operand); + return false; case glslang::EOpEmitStreamVertex: builder.createNoResultOp(spv::OpEmitStreamVertex, operand); return false; @@ -3246,6 +3251,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt binOp = node->getOp(); break; + case glslang::EOpExpectEXT: + builder.addCapability(spv::CapabilityExpectAssumeKHR); + builder.addExtension(spv::E_SPV_KHR_expect_assume); + binOp = node->getOp(); + break; + case glslang::EOpIgnoreIntersectionNV: case glslang::EOpTerminateRayNV: case glslang::EOpTraceNV: @@ -6591,6 +6602,10 @@ spv::Id TGlslangToSpvTraverser::createBinaryOperation(glslang::TOperator op, OpD binOp = isUnsigned ? spv::OpUMul32x16INTEL : spv::OpIMul32x16INTEL; break; + case glslang::EOpExpectEXT: + binOp = spv::OpExpectKHR; + break; + case glslang::EOpLessThan: case glslang::EOpGreaterThan: case glslang::EOpLessThanEqual: diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index da9db9423b..5839a99957 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1043,6 +1043,8 @@ const char* CapabilityString(int info) case CapabilityIntegerFunctions2INTEL: return "CapabilityIntegerFunctions2INTEL"; + case CapabilityExpectAssumeKHR: return "ExpectAssumeKHR"; + case CapabilityAtomicFloat16AddEXT: return "AtomicFloat16AddEXT"; case CapabilityAtomicFloat32AddEXT: return "AtomicFloat32AddEXT"; case CapabilityAtomicFloat64AddEXT: return "AtomicFloat64AddEXT"; diff --git a/Test/baseResults/spv.expect_assume.assumeEXT.comp.out b/Test/baseResults/spv.expect_assume.assumeEXT.comp.out new file mode 100644 index 0000000000..517103f084 --- /dev/null +++ b/Test/baseResults/spv.expect_assume.assumeEXT.comp.out @@ -0,0 +1,47 @@ +spv.expect_assume.assumeEXT.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 22 + + Capability Shader + Capability ExpectAssumeKHR + Extension "SPV_KHR_expect_assume" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_expect_assume" + Name 4 "main" + Name 7 "roblock" + MemberName 7(roblock) 0 "i" + Name 9 "ro" + MemberDecorate 7(roblock) 0 NonWritable + MemberDecorate 7(roblock) 0 Offset 0 + Decorate 7(roblock) BufferBlock + Decorate 9(ro) DescriptorSet 0 + Decorate 9(ro) Binding 0 + Decorate 21 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7(roblock): TypeStruct 6(int) + 8: TypePointer Uniform 7(roblock) + 9(ro): 8(ptr) Variable Uniform + 10: 6(int) Constant 0 + 11: TypePointer Uniform 6(int) + 14: 6(int) Constant 42 + 15: TypeBool + 17: TypeInt 32 0 + 18: TypeVector 17(int) 3 + 19: 17(int) Constant 8 + 20: 17(int) Constant 1 + 21: 18(ivec3) ConstantComposite 19 20 20 + 4(main): 2 Function None 3 + 5: Label + 12: 11(ptr) AccessChain 9(ro) 10 + 13: 6(int) Load 12 + 16: 15(bool) SGreaterThan 13 14 + AssumeTrueKHR 16 + Return + FunctionEnd diff --git a/Test/baseResults/spv.expect_assume.expectEXT.comp.out b/Test/baseResults/spv.expect_assume.expectEXT.comp.out new file mode 100644 index 0000000000..ee4fdf6184 --- /dev/null +++ b/Test/baseResults/spv.expect_assume.expectEXT.comp.out @@ -0,0 +1,276 @@ +spv.expect_assume.expectEXT.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 178 + + Capability Shader + Capability ExpectAssumeKHR + Extension "SPV_KHR_expect_assume" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_expect_assume" + Name 4 "main" + Name 8 "x" + Name 18 "roblock" + MemberName 18(roblock) 0 "b" + MemberName 18(roblock) 1 "bv2" + MemberName 18(roblock) 2 "bv3" + MemberName 18(roblock) 3 "bv4" + MemberName 18(roblock) 4 "i" + MemberName 18(roblock) 5 "iv2" + MemberName 18(roblock) 6 "iv3" + MemberName 18(roblock) 7 "iv4" + MemberName 18(roblock) 8 "ui" + MemberName 18(roblock) 9 "uv2" + MemberName 18(roblock) 10 "uv3" + MemberName 18(roblock) 11 "uv4" + Name 20 "ro" + MemberDecorate 18(roblock) 0 NonWritable + MemberDecorate 18(roblock) 0 Offset 0 + MemberDecorate 18(roblock) 1 NonWritable + MemberDecorate 18(roblock) 1 Offset 8 + MemberDecorate 18(roblock) 2 NonWritable + MemberDecorate 18(roblock) 2 Offset 16 + MemberDecorate 18(roblock) 3 NonWritable + MemberDecorate 18(roblock) 3 Offset 32 + MemberDecorate 18(roblock) 4 NonWritable + MemberDecorate 18(roblock) 4 Offset 48 + MemberDecorate 18(roblock) 5 NonWritable + MemberDecorate 18(roblock) 5 Offset 56 + MemberDecorate 18(roblock) 6 NonWritable + MemberDecorate 18(roblock) 6 Offset 64 + MemberDecorate 18(roblock) 7 NonWritable + MemberDecorate 18(roblock) 7 Offset 80 + MemberDecorate 18(roblock) 8 NonWritable + MemberDecorate 18(roblock) 8 Offset 96 + MemberDecorate 18(roblock) 9 NonWritable + MemberDecorate 18(roblock) 9 Offset 104 + MemberDecorate 18(roblock) 10 NonWritable + MemberDecorate 18(roblock) 10 Offset 112 + MemberDecorate 18(roblock) 11 NonWritable + MemberDecorate 18(roblock) 11 Offset 128 + Decorate 18(roblock) BufferBlock + Decorate 20(ro) DescriptorSet 0 + Decorate 20(ro) Binding 0 + Decorate 177 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 10: TypeBool + 11: TypeInt 32 0 + 12: TypeVector 11(int) 2 + 13: TypeVector 11(int) 3 + 14: TypeVector 11(int) 4 + 15: TypeVector 6(int) 2 + 16: TypeVector 6(int) 3 + 17: TypeVector 6(int) 4 + 18(roblock): TypeStruct 11(int) 12(ivec2) 13(ivec3) 14(ivec4) 6(int) 15(ivec2) 16(ivec3) 17(ivec4) 11(int) 12(ivec2) 13(ivec3) 14(ivec4) + 19: TypePointer Uniform 18(roblock) + 20(ro): 19(ptr) Variable Uniform + 21: TypePointer Uniform 11(int) + 24: 11(int) Constant 0 + 26: 10(bool) ConstantTrue + 32: 6(int) Constant 1 + 33: TypePointer Uniform 12(ivec2) + 36: TypeVector 10(bool) 2 + 37: 12(ivec2) ConstantComposite 24 24 + 39: 10(bool) ConstantFalse + 40: 36(bvec2) ConstantComposite 26 39 + 48: 6(int) Constant 2 + 49: TypePointer Uniform 13(ivec3) + 52: TypeVector 10(bool) 3 + 53: 13(ivec3) ConstantComposite 24 24 24 + 55: 52(bvec3) ConstantComposite 26 39 26 + 63: 6(int) Constant 3 + 64: TypePointer Uniform 14(ivec4) + 67: TypeVector 10(bool) 4 + 68: 14(ivec4) ConstantComposite 24 24 24 24 + 70: 67(bvec4) ConstantComposite 39 26 39 26 + 79: 6(int) Constant 4 + 80: TypePointer Uniform 6(int) + 83: 6(int) Constant 10 + 89: 6(int) Constant 5 + 90: TypePointer Uniform 15(ivec2) + 93: 6(int) Constant 11 + 94: 6(int) Constant 4294967274 + 95: 15(ivec2) ConstantComposite 93 94 + 103: 6(int) Constant 6 + 104: TypePointer Uniform 16(ivec3) + 107: 6(int) Constant 33 + 108: 16(ivec3) ConstantComposite 93 94 107 + 116: 6(int) Constant 7 + 117: TypePointer Uniform 17(ivec4) + 120: 6(int) Constant 44 + 121: 17(ivec4) ConstantComposite 93 94 107 120 + 130: 6(int) Constant 8 + 133: 11(int) Constant 10 + 139: 6(int) Constant 9 + 142: 11(int) Constant 11 + 143: 11(int) Constant 22 + 144: 12(ivec2) ConstantComposite 142 143 + 154: 11(int) Constant 33 + 155: 13(ivec3) ConstantComposite 142 143 154 + 165: 11(int) Constant 44 + 166: 14(ivec4) ConstantComposite 142 143 154 165 + 175: 11(int) Constant 8 + 176: 11(int) Constant 1 + 177: 13(ivec3) ConstantComposite 175 176 176 + 4(main): 2 Function None 3 + 5: Label + 8(x): 7(ptr) Variable Function + Store 8(x) 9 + 22: 21(ptr) AccessChain 20(ro) 9 + 23: 11(int) Load 22 + 25: 10(bool) INotEqual 23 24 + 27: 10(bool) ExpectKHR 25 26 + 28: 10(bool) LogicalEqual 27 26 + 29: 10(bool) LogicalNot 28 + SelectionMerge 31 None + BranchConditional 29 30 31 + 30: Label + 34: 33(ptr) AccessChain 20(ro) 32 + 35: 12(ivec2) Load 34 + 38: 36(bvec2) INotEqual 35 37 + 41: 36(bvec2) ExpectKHR 38 40 + 42: 36(bvec2) LogicalEqual 41 40 + 43: 10(bool) All 42 + Branch 31 + 31: Label + 44: 10(bool) Phi 28 5 43 30 + 45: 10(bool) LogicalNot 44 + SelectionMerge 47 None + BranchConditional 45 46 47 + 46: Label + 50: 49(ptr) AccessChain 20(ro) 48 + 51: 13(ivec3) Load 50 + 54: 52(bvec3) INotEqual 51 53 + 56: 52(bvec3) ExpectKHR 54 55 + 57: 52(bvec3) LogicalEqual 56 55 + 58: 10(bool) All 57 + Branch 47 + 47: Label + 59: 10(bool) Phi 44 31 58 46 + 60: 10(bool) LogicalNot 59 + SelectionMerge 62 None + BranchConditional 60 61 62 + 61: Label + 65: 64(ptr) AccessChain 20(ro) 63 + 66: 14(ivec4) Load 65 + 69: 67(bvec4) INotEqual 66 68 + 71: 67(bvec4) ExpectKHR 69 70 + 72: 67(bvec4) LogicalEqual 71 70 + 73: 10(bool) All 72 + Branch 62 + 62: Label + 74: 10(bool) Phi 59 47 73 61 + SelectionMerge 76 None + BranchConditional 74 75 76 + 75: Label + 77: 6(int) Load 8(x) + 78: 6(int) IAdd 77 32 + Store 8(x) 78 + Branch 76 + 76: Label + 81: 80(ptr) AccessChain 20(ro) 79 + 82: 6(int) Load 81 + 84: 6(int) ExpectKHR 82 83 + 85: 10(bool) IEqual 84 83 + 86: 10(bool) LogicalNot 85 + SelectionMerge 88 None + BranchConditional 86 87 88 + 87: Label + 91: 90(ptr) AccessChain 20(ro) 89 + 92: 15(ivec2) Load 91 + 96: 15(ivec2) ExpectKHR 92 95 + 97: 36(bvec2) IEqual 96 95 + 98: 10(bool) All 97 + Branch 88 + 88: Label + 99: 10(bool) Phi 85 76 98 87 + 100: 10(bool) LogicalNot 99 + SelectionMerge 102 None + BranchConditional 100 101 102 + 101: Label + 105: 104(ptr) AccessChain 20(ro) 103 + 106: 16(ivec3) Load 105 + 109: 16(ivec3) ExpectKHR 106 108 + 110: 52(bvec3) IEqual 109 108 + 111: 10(bool) All 110 + Branch 102 + 102: Label + 112: 10(bool) Phi 99 88 111 101 + 113: 10(bool) LogicalNot 112 + SelectionMerge 115 None + BranchConditional 113 114 115 + 114: Label + 118: 117(ptr) AccessChain 20(ro) 116 + 119: 17(ivec4) Load 118 + 122: 17(ivec4) ExpectKHR 119 121 + 123: 67(bvec4) IEqual 122 121 + 124: 10(bool) All 123 + Branch 115 + 115: Label + 125: 10(bool) Phi 112 102 124 114 + SelectionMerge 127 None + BranchConditional 125 126 127 + 126: Label + 128: 6(int) Load 8(x) + 129: 6(int) IAdd 128 32 + Store 8(x) 129 + Branch 127 + 127: Label + 131: 21(ptr) AccessChain 20(ro) 130 + 132: 11(int) Load 131 + 134: 11(int) ExpectKHR 132 133 + 135: 10(bool) IEqual 134 133 + 136: 10(bool) LogicalNot 135 + SelectionMerge 138 None + BranchConditional 136 137 138 + 137: Label + 140: 33(ptr) AccessChain 20(ro) 139 + 141: 12(ivec2) Load 140 + 145: 12(ivec2) ExpectKHR 141 144 + 146: 36(bvec2) IEqual 145 144 + 147: 10(bool) All 146 + Branch 138 + 138: Label + 148: 10(bool) Phi 135 127 147 137 + 149: 10(bool) LogicalNot 148 + SelectionMerge 151 None + BranchConditional 149 150 151 + 150: Label + 152: 49(ptr) AccessChain 20(ro) 83 + 153: 13(ivec3) Load 152 + 156: 13(ivec3) ExpectKHR 153 155 + 157: 52(bvec3) IEqual 156 155 + 158: 10(bool) All 157 + Branch 151 + 151: Label + 159: 10(bool) Phi 148 138 158 150 + 160: 10(bool) LogicalNot 159 + SelectionMerge 162 None + BranchConditional 160 161 162 + 161: Label + 163: 64(ptr) AccessChain 20(ro) 93 + 164: 14(ivec4) Load 163 + 167: 14(ivec4) ExpectKHR 164 166 + 168: 67(bvec4) IEqual 167 166 + 169: 10(bool) All 168 + Branch 162 + 162: Label + 170: 10(bool) Phi 159 151 169 161 + SelectionMerge 172 None + BranchConditional 170 171 172 + 171: Label + 173: 6(int) Load 8(x) + 174: 6(int) IAdd 173 32 + Store 8(x) 174 + Branch 172 + 172: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out b/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out new file mode 100644 index 0000000000..6647f0c6a6 --- /dev/null +++ b/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out @@ -0,0 +1,689 @@ +spv.expect_assume.expectEXT.exttypes.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 458 + + Capability Shader + Capability Int64 + Capability Int16 + Capability Int8 + Capability StorageUniformBufferBlock16 + Capability UniformAndStorageBuffer8BitAccess + Capability ExpectAssumeKHR + Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_8bit_storage" + Extension "SPV_KHR_expect_assume" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 8 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_expect_assume" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + Name 4 "main" + Name 8 "x" + Name 42 "roblock" + MemberName 42(roblock) 0 "i8" + MemberName 42(roblock) 1 "i8v2" + MemberName 42(roblock) 2 "i8v3" + MemberName 42(roblock) 3 "i8v4" + MemberName 42(roblock) 4 "u8" + MemberName 42(roblock) 5 "u8v2" + MemberName 42(roblock) 6 "u8v3" + MemberName 42(roblock) 7 "u8v4" + MemberName 42(roblock) 8 "i16" + MemberName 42(roblock) 9 "i16v2" + MemberName 42(roblock) 10 "i16v3" + MemberName 42(roblock) 11 "i16v4" + MemberName 42(roblock) 12 "u16" + MemberName 42(roblock) 13 "u16v2" + MemberName 42(roblock) 14 "u16v3" + MemberName 42(roblock) 15 "u16v4" + MemberName 42(roblock) 16 "i32" + MemberName 42(roblock) 17 "i32v2" + MemberName 42(roblock) 18 "i32v3" + MemberName 42(roblock) 19 "i32v4" + MemberName 42(roblock) 20 "u32" + MemberName 42(roblock) 21 "u32v2" + MemberName 42(roblock) 22 "u32v3" + MemberName 42(roblock) 23 "u32v4" + MemberName 42(roblock) 24 "i64" + MemberName 42(roblock) 25 "i64v2" + MemberName 42(roblock) 26 "i64v3" + MemberName 42(roblock) 27 "i64v4" + MemberName 42(roblock) 28 "u64" + MemberName 42(roblock) 29 "u64v2" + MemberName 42(roblock) 30 "u64v3" + MemberName 42(roblock) 31 "u64v4" + Name 44 "ro" + MemberDecorate 42(roblock) 0 NonWritable + MemberDecorate 42(roblock) 0 Offset 0 + MemberDecorate 42(roblock) 1 NonWritable + MemberDecorate 42(roblock) 1 Offset 2 + MemberDecorate 42(roblock) 2 NonWritable + MemberDecorate 42(roblock) 2 Offset 4 + MemberDecorate 42(roblock) 3 NonWritable + MemberDecorate 42(roblock) 3 Offset 8 + MemberDecorate 42(roblock) 4 NonWritable + MemberDecorate 42(roblock) 4 Offset 12 + MemberDecorate 42(roblock) 5 NonWritable + MemberDecorate 42(roblock) 5 Offset 14 + MemberDecorate 42(roblock) 6 NonWritable + MemberDecorate 42(roblock) 6 Offset 16 + MemberDecorate 42(roblock) 7 NonWritable + MemberDecorate 42(roblock) 7 Offset 20 + MemberDecorate 42(roblock) 8 NonWritable + MemberDecorate 42(roblock) 8 Offset 24 + MemberDecorate 42(roblock) 9 NonWritable + MemberDecorate 42(roblock) 9 Offset 28 + MemberDecorate 42(roblock) 10 NonWritable + MemberDecorate 42(roblock) 10 Offset 32 + MemberDecorate 42(roblock) 11 NonWritable + MemberDecorate 42(roblock) 11 Offset 40 + MemberDecorate 42(roblock) 12 NonWritable + MemberDecorate 42(roblock) 12 Offset 48 + MemberDecorate 42(roblock) 13 NonWritable + MemberDecorate 42(roblock) 13 Offset 52 + MemberDecorate 42(roblock) 14 NonWritable + MemberDecorate 42(roblock) 14 Offset 56 + MemberDecorate 42(roblock) 15 NonWritable + MemberDecorate 42(roblock) 15 Offset 64 + MemberDecorate 42(roblock) 16 NonWritable + MemberDecorate 42(roblock) 16 Offset 72 + MemberDecorate 42(roblock) 17 NonWritable + MemberDecorate 42(roblock) 17 Offset 80 + MemberDecorate 42(roblock) 18 NonWritable + MemberDecorate 42(roblock) 18 Offset 96 + MemberDecorate 42(roblock) 19 NonWritable + MemberDecorate 42(roblock) 19 Offset 112 + MemberDecorate 42(roblock) 20 NonWritable + MemberDecorate 42(roblock) 20 Offset 128 + MemberDecorate 42(roblock) 21 NonWritable + MemberDecorate 42(roblock) 21 Offset 136 + MemberDecorate 42(roblock) 22 NonWritable + MemberDecorate 42(roblock) 22 Offset 144 + MemberDecorate 42(roblock) 23 NonWritable + MemberDecorate 42(roblock) 23 Offset 160 + MemberDecorate 42(roblock) 24 NonWritable + MemberDecorate 42(roblock) 24 Offset 176 + MemberDecorate 42(roblock) 25 NonWritable + MemberDecorate 42(roblock) 25 Offset 192 + MemberDecorate 42(roblock) 26 NonWritable + MemberDecorate 42(roblock) 26 Offset 224 + MemberDecorate 42(roblock) 27 NonWritable + MemberDecorate 42(roblock) 27 Offset 256 + MemberDecorate 42(roblock) 28 NonWritable + MemberDecorate 42(roblock) 28 Offset 288 + MemberDecorate 42(roblock) 29 NonWritable + MemberDecorate 42(roblock) 29 Offset 304 + MemberDecorate 42(roblock) 30 NonWritable + MemberDecorate 42(roblock) 30 Offset 320 + MemberDecorate 42(roblock) 31 NonWritable + MemberDecorate 42(roblock) 31 Offset 352 + Decorate 42(roblock) BufferBlock + Decorate 44(ro) DescriptorSet 0 + Decorate 44(ro) Binding 0 + Decorate 457 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 1 + 7: TypePointer Function 6(int) + 9: 6(int) Constant 0 + 10: TypeBool + 11: TypeInt 8 1 + 12: TypeVector 11(int8_t) 2 + 13: TypeVector 11(int8_t) 3 + 14: TypeVector 11(int8_t) 4 + 15: TypeInt 8 0 + 16: TypeVector 15(int8_t) 2 + 17: TypeVector 15(int8_t) 3 + 18: TypeVector 15(int8_t) 4 + 19: TypeInt 16 1 + 20: TypeVector 19(int16_t) 2 + 21: TypeVector 19(int16_t) 3 + 22: TypeVector 19(int16_t) 4 + 23: TypeInt 16 0 + 24: TypeVector 23(int16_t) 2 + 25: TypeVector 23(int16_t) 3 + 26: TypeVector 23(int16_t) 4 + 27: TypeVector 6(int) 2 + 28: TypeVector 6(int) 3 + 29: TypeVector 6(int) 4 + 30: TypeInt 32 0 + 31: TypeVector 30(int) 2 + 32: TypeVector 30(int) 3 + 33: TypeVector 30(int) 4 + 34: TypeInt 64 1 + 35: TypeVector 34(int64_t) 2 + 36: TypeVector 34(int64_t) 3 + 37: TypeVector 34(int64_t) 4 + 38: TypeInt 64 0 + 39: TypeVector 38(int64_t) 2 + 40: TypeVector 38(int64_t) 3 + 41: TypeVector 38(int64_t) 4 + 42(roblock): TypeStruct 11(int8_t) 12(i8vec2) 13(i8vec3) 14(i8vec4) 15(int8_t) 16(i8vec2) 17(i8vec3) 18(i8vec4) 19(int16_t) 20(i16vec2) 21(i16vec3) 22(i16vec4) 23(int16_t) 24(i16vec2) 25(i16vec3) 26(i16vec4) 6(int) 27(ivec2) 28(ivec3) 29(ivec4) 30(int) 31(ivec2) 32(ivec3) 33(ivec4) 34(int64_t) 35(i64vec2) 36(i64vec3) 37(i64vec4) 38(int64_t) 39(i64vec2) 40(i64vec3) 41(i64vec4) + 43: TypePointer Uniform 42(roblock) + 44(ro): 43(ptr) Variable Uniform + 45: TypePointer Uniform 11(int8_t) + 49: 6(int) Constant 10 + 55: 6(int) Constant 1 + 56: TypePointer Uniform 12(i8vec2) + 59: 11(int8_t) Constant 11 + 60: 11(int8_t) Constant 4294967274 + 61: 12(i8vec2) ConstantComposite 59 60 + 63: TypeVector 10(bool) 2 + 70: 6(int) Constant 2 + 71: TypePointer Uniform 13(i8vec3) + 74: 11(int8_t) Constant 33 + 75: 13(i8vec3) ConstantComposite 59 60 74 + 77: TypeVector 10(bool) 3 + 84: 6(int) Constant 3 + 85: TypePointer Uniform 14(i8vec4) + 88: 11(int8_t) Constant 44 + 89: 14(i8vec4) ConstantComposite 59 60 74 88 + 91: TypeVector 10(bool) 4 + 99: 6(int) Constant 4 + 100: TypePointer Uniform 15(int8_t) + 110: 6(int) Constant 5 + 111: TypePointer Uniform 16(i8vec2) + 114: 15(int8_t) Constant 11 + 115: 15(int8_t) Constant 22 + 116: 16(i8vec2) ConstantComposite 114 115 + 124: 6(int) Constant 6 + 125: TypePointer Uniform 17(i8vec3) + 128: 15(int8_t) Constant 33 + 129: 17(i8vec3) ConstantComposite 114 115 128 + 137: 6(int) Constant 7 + 138: TypePointer Uniform 18(i8vec4) + 141: 15(int8_t) Constant 44 + 142: 18(i8vec4) ConstantComposite 114 115 128 141 + 151: 6(int) Constant 8 + 152: TypePointer Uniform 19(int16_t) + 161: 6(int) Constant 9 + 162: TypePointer Uniform 20(i16vec2) + 165: 19(int16_t) Constant 11 + 166: 19(int16_t) Constant 4294967274 + 167: 20(i16vec2) ConstantComposite 165 166 + 175: TypePointer Uniform 21(i16vec3) + 178: 19(int16_t) Constant 33 + 179: 21(i16vec3) ConstantComposite 165 166 178 + 187: 6(int) Constant 11 + 188: TypePointer Uniform 22(i16vec4) + 191: 19(int16_t) Constant 44 + 192: 22(i16vec4) ConstantComposite 165 166 178 191 + 201: 6(int) Constant 12 + 202: TypePointer Uniform 23(int16_t) + 212: 6(int) Constant 13 + 213: TypePointer Uniform 24(i16vec2) + 216: 23(int16_t) Constant 11 + 217: 23(int16_t) Constant 22 + 218: 24(i16vec2) ConstantComposite 216 217 + 226: 6(int) Constant 14 + 227: TypePointer Uniform 25(i16vec3) + 230: 23(int16_t) Constant 33 + 231: 25(i16vec3) ConstantComposite 216 217 230 + 239: 6(int) Constant 15 + 240: TypePointer Uniform 26(i16vec4) + 243: 23(int16_t) Constant 44 + 244: 26(i16vec4) ConstantComposite 216 217 230 243 + 253: 6(int) Constant 16 + 254: TypePointer Uniform 6(int) + 262: 6(int) Constant 17 + 263: TypePointer Uniform 27(ivec2) + 266: 6(int) Constant 4294967274 + 267: 27(ivec2) ConstantComposite 187 266 + 275: 6(int) Constant 18 + 276: TypePointer Uniform 28(ivec3) + 279: 6(int) Constant 33 + 280: 28(ivec3) ConstantComposite 187 266 279 + 288: 6(int) Constant 19 + 289: TypePointer Uniform 29(ivec4) + 292: 6(int) Constant 44 + 293: 29(ivec4) ConstantComposite 187 266 279 292 + 302: 6(int) Constant 20 + 303: TypePointer Uniform 30(int) + 306: 30(int) Constant 10 + 312: 6(int) Constant 21 + 313: TypePointer Uniform 31(ivec2) + 316: 30(int) Constant 11 + 317: 30(int) Constant 22 + 318: 31(ivec2) ConstantComposite 316 317 + 326: 6(int) Constant 22 + 327: TypePointer Uniform 32(ivec3) + 330: 30(int) Constant 33 + 331: 32(ivec3) ConstantComposite 316 317 330 + 339: 6(int) Constant 23 + 340: TypePointer Uniform 33(ivec4) + 343: 30(int) Constant 44 + 344: 33(ivec4) ConstantComposite 316 317 330 343 + 353: 6(int) Constant 24 + 354: TypePointer Uniform 34(int64_t) + 357: 34(int64_t) Constant 10 0 + 363: 6(int) Constant 25 + 364: TypePointer Uniform 35(i64vec2) + 367: 34(int64_t) Constant 11 0 + 368: 34(int64_t) Constant 4294967274 4294967295 + 369: 35(i64vec2) ConstantComposite 367 368 + 377: 6(int) Constant 26 + 378: TypePointer Uniform 36(i64vec3) + 381: 34(int64_t) Constant 33 0 + 382: 36(i64vec3) ConstantComposite 367 368 381 + 390: 6(int) Constant 27 + 391: TypePointer Uniform 37(i64vec4) + 394: 34(int64_t) Constant 44 0 + 395: 37(i64vec4) ConstantComposite 367 368 381 394 + 404: 6(int) Constant 28 + 405: TypePointer Uniform 38(int64_t) + 408: 38(int64_t) Constant 10 0 + 414: 6(int) Constant 29 + 415: TypePointer Uniform 39(i64vec2) + 418: 38(int64_t) Constant 11 0 + 419: 38(int64_t) Constant 22 0 + 420: 39(i64vec2) ConstantComposite 418 419 + 428: 6(int) Constant 30 + 429: TypePointer Uniform 40(i64vec3) + 432: 38(int64_t) Constant 33 0 + 433: 40(i64vec3) ConstantComposite 418 419 432 + 441: 6(int) Constant 31 + 442: TypePointer Uniform 41(i64vec4) + 445: 38(int64_t) Constant 44 0 + 446: 41(i64vec4) ConstantComposite 418 419 432 445 + 455: 30(int) Constant 8 + 456: 30(int) Constant 1 + 457: 32(ivec3) ConstantComposite 455 456 456 + 4(main): 2 Function None 3 + 5: Label + 8(x): 7(ptr) Variable Function + Store 8(x) 9 + 46: 45(ptr) AccessChain 44(ro) 9 + 47: 11(int8_t) Load 46 + 48: 6(int) SConvert 47 + 50: 6(int) ExpectKHR 48 49 + 51: 10(bool) IEqual 50 49 + 52: 10(bool) LogicalNot 51 + SelectionMerge 54 None + BranchConditional 52 53 54 + 53: Label + 57: 56(ptr) AccessChain 44(ro) 55 + 58: 12(i8vec2) Load 57 + 62: 12(i8vec2) ExpectKHR 58 61 + 64: 63(bvec2) IEqual 62 61 + 65: 10(bool) All 64 + Branch 54 + 54: Label + 66: 10(bool) Phi 51 5 65 53 + 67: 10(bool) LogicalNot 66 + SelectionMerge 69 None + BranchConditional 67 68 69 + 68: Label + 72: 71(ptr) AccessChain 44(ro) 70 + 73: 13(i8vec3) Load 72 + 76: 13(i8vec3) ExpectKHR 73 75 + 78: 77(bvec3) IEqual 76 75 + 79: 10(bool) All 78 + Branch 69 + 69: Label + 80: 10(bool) Phi 66 54 79 68 + 81: 10(bool) LogicalNot 80 + SelectionMerge 83 None + BranchConditional 81 82 83 + 82: Label + 86: 85(ptr) AccessChain 44(ro) 84 + 87: 14(i8vec4) Load 86 + 90: 14(i8vec4) ExpectKHR 87 89 + 92: 91(bvec4) IEqual 90 89 + 93: 10(bool) All 92 + Branch 83 + 83: Label + 94: 10(bool) Phi 80 69 93 82 + SelectionMerge 96 None + BranchConditional 94 95 96 + 95: Label + 97: 6(int) Load 8(x) + 98: 6(int) IAdd 97 55 + Store 8(x) 98 + Branch 96 + 96: Label + 101: 100(ptr) AccessChain 44(ro) 99 + 102: 15(int8_t) Load 101 + 103: 30(int) UConvert 102 + 104: 6(int) Bitcast 103 + 105: 6(int) ExpectKHR 104 49 + 106: 10(bool) IEqual 105 49 + 107: 10(bool) LogicalNot 106 + SelectionMerge 109 None + BranchConditional 107 108 109 + 108: Label + 112: 111(ptr) AccessChain 44(ro) 110 + 113: 16(i8vec2) Load 112 + 117: 16(i8vec2) ExpectKHR 113 116 + 118: 63(bvec2) IEqual 117 116 + 119: 10(bool) All 118 + Branch 109 + 109: Label + 120: 10(bool) Phi 106 96 119 108 + 121: 10(bool) LogicalNot 120 + SelectionMerge 123 None + BranchConditional 121 122 123 + 122: Label + 126: 125(ptr) AccessChain 44(ro) 124 + 127: 17(i8vec3) Load 126 + 130: 17(i8vec3) ExpectKHR 127 129 + 131: 77(bvec3) IEqual 130 129 + 132: 10(bool) All 131 + Branch 123 + 123: Label + 133: 10(bool) Phi 120 109 132 122 + 134: 10(bool) LogicalNot 133 + SelectionMerge 136 None + BranchConditional 134 135 136 + 135: Label + 139: 138(ptr) AccessChain 44(ro) 137 + 140: 18(i8vec4) Load 139 + 143: 18(i8vec4) ExpectKHR 140 142 + 144: 91(bvec4) IEqual 143 142 + 145: 10(bool) All 144 + Branch 136 + 136: Label + 146: 10(bool) Phi 133 123 145 135 + SelectionMerge 148 None + BranchConditional 146 147 148 + 147: Label + 149: 6(int) Load 8(x) + 150: 6(int) IAdd 149 55 + Store 8(x) 150 + Branch 148 + 148: Label + 153: 152(ptr) AccessChain 44(ro) 151 + 154: 19(int16_t) Load 153 + 155: 6(int) SConvert 154 + 156: 6(int) ExpectKHR 155 49 + 157: 10(bool) IEqual 156 49 + 158: 10(bool) LogicalNot 157 + SelectionMerge 160 None + BranchConditional 158 159 160 + 159: Label + 163: 162(ptr) AccessChain 44(ro) 161 + 164: 20(i16vec2) Load 163 + 168: 20(i16vec2) ExpectKHR 164 167 + 169: 63(bvec2) IEqual 168 167 + 170: 10(bool) All 169 + Branch 160 + 160: Label + 171: 10(bool) Phi 157 148 170 159 + 172: 10(bool) LogicalNot 171 + SelectionMerge 174 None + BranchConditional 172 173 174 + 173: Label + 176: 175(ptr) AccessChain 44(ro) 49 + 177: 21(i16vec3) Load 176 + 180: 21(i16vec3) ExpectKHR 177 179 + 181: 77(bvec3) IEqual 180 179 + 182: 10(bool) All 181 + Branch 174 + 174: Label + 183: 10(bool) Phi 171 160 182 173 + 184: 10(bool) LogicalNot 183 + SelectionMerge 186 None + BranchConditional 184 185 186 + 185: Label + 189: 188(ptr) AccessChain 44(ro) 187 + 190: 22(i16vec4) Load 189 + 193: 22(i16vec4) ExpectKHR 190 192 + 194: 91(bvec4) IEqual 193 192 + 195: 10(bool) All 194 + Branch 186 + 186: Label + 196: 10(bool) Phi 183 174 195 185 + SelectionMerge 198 None + BranchConditional 196 197 198 + 197: Label + 199: 6(int) Load 8(x) + 200: 6(int) IAdd 199 55 + Store 8(x) 200 + Branch 198 + 198: Label + 203: 202(ptr) AccessChain 44(ro) 201 + 204: 23(int16_t) Load 203 + 205: 30(int) UConvert 204 + 206: 6(int) Bitcast 205 + 207: 6(int) ExpectKHR 206 49 + 208: 10(bool) IEqual 207 49 + 209: 10(bool) LogicalNot 208 + SelectionMerge 211 None + BranchConditional 209 210 211 + 210: Label + 214: 213(ptr) AccessChain 44(ro) 212 + 215: 24(i16vec2) Load 214 + 219: 24(i16vec2) ExpectKHR 215 218 + 220: 63(bvec2) IEqual 219 218 + 221: 10(bool) All 220 + Branch 211 + 211: Label + 222: 10(bool) Phi 208 198 221 210 + 223: 10(bool) LogicalNot 222 + SelectionMerge 225 None + BranchConditional 223 224 225 + 224: Label + 228: 227(ptr) AccessChain 44(ro) 226 + 229: 25(i16vec3) Load 228 + 232: 25(i16vec3) ExpectKHR 229 231 + 233: 77(bvec3) IEqual 232 231 + 234: 10(bool) All 233 + Branch 225 + 225: Label + 235: 10(bool) Phi 222 211 234 224 + 236: 10(bool) LogicalNot 235 + SelectionMerge 238 None + BranchConditional 236 237 238 + 237: Label + 241: 240(ptr) AccessChain 44(ro) 239 + 242: 26(i16vec4) Load 241 + 245: 26(i16vec4) ExpectKHR 242 244 + 246: 91(bvec4) IEqual 245 244 + 247: 10(bool) All 246 + Branch 238 + 238: Label + 248: 10(bool) Phi 235 225 247 237 + SelectionMerge 250 None + BranchConditional 248 249 250 + 249: Label + 251: 6(int) Load 8(x) + 252: 6(int) IAdd 251 55 + Store 8(x) 252 + Branch 250 + 250: Label + 255: 254(ptr) AccessChain 44(ro) 253 + 256: 6(int) Load 255 + 257: 6(int) ExpectKHR 256 49 + 258: 10(bool) IEqual 257 49 + 259: 10(bool) LogicalNot 258 + SelectionMerge 261 None + BranchConditional 259 260 261 + 260: Label + 264: 263(ptr) AccessChain 44(ro) 262 + 265: 27(ivec2) Load 264 + 268: 27(ivec2) ExpectKHR 265 267 + 269: 63(bvec2) IEqual 268 267 + 270: 10(bool) All 269 + Branch 261 + 261: Label + 271: 10(bool) Phi 258 250 270 260 + 272: 10(bool) LogicalNot 271 + SelectionMerge 274 None + BranchConditional 272 273 274 + 273: Label + 277: 276(ptr) AccessChain 44(ro) 275 + 278: 28(ivec3) Load 277 + 281: 28(ivec3) ExpectKHR 278 280 + 282: 77(bvec3) IEqual 281 280 + 283: 10(bool) All 282 + Branch 274 + 274: Label + 284: 10(bool) Phi 271 261 283 273 + 285: 10(bool) LogicalNot 284 + SelectionMerge 287 None + BranchConditional 285 286 287 + 286: Label + 290: 289(ptr) AccessChain 44(ro) 288 + 291: 29(ivec4) Load 290 + 294: 29(ivec4) ExpectKHR 291 293 + 295: 91(bvec4) IEqual 294 293 + 296: 10(bool) All 295 + Branch 287 + 287: Label + 297: 10(bool) Phi 284 274 296 286 + SelectionMerge 299 None + BranchConditional 297 298 299 + 298: Label + 300: 6(int) Load 8(x) + 301: 6(int) IAdd 300 55 + Store 8(x) 301 + Branch 299 + 299: Label + 304: 303(ptr) AccessChain 44(ro) 302 + 305: 30(int) Load 304 + 307: 30(int) ExpectKHR 305 306 + 308: 10(bool) IEqual 307 306 + 309: 10(bool) LogicalNot 308 + SelectionMerge 311 None + BranchConditional 309 310 311 + 310: Label + 314: 313(ptr) AccessChain 44(ro) 312 + 315: 31(ivec2) Load 314 + 319: 31(ivec2) ExpectKHR 315 318 + 320: 63(bvec2) IEqual 319 318 + 321: 10(bool) All 320 + Branch 311 + 311: Label + 322: 10(bool) Phi 308 299 321 310 + 323: 10(bool) LogicalNot 322 + SelectionMerge 325 None + BranchConditional 323 324 325 + 324: Label + 328: 327(ptr) AccessChain 44(ro) 326 + 329: 32(ivec3) Load 328 + 332: 32(ivec3) ExpectKHR 329 331 + 333: 77(bvec3) IEqual 332 331 + 334: 10(bool) All 333 + Branch 325 + 325: Label + 335: 10(bool) Phi 322 311 334 324 + 336: 10(bool) LogicalNot 335 + SelectionMerge 338 None + BranchConditional 336 337 338 + 337: Label + 341: 340(ptr) AccessChain 44(ro) 339 + 342: 33(ivec4) Load 341 + 345: 33(ivec4) ExpectKHR 342 344 + 346: 91(bvec4) IEqual 345 344 + 347: 10(bool) All 346 + Branch 338 + 338: Label + 348: 10(bool) Phi 335 325 347 337 + SelectionMerge 350 None + BranchConditional 348 349 350 + 349: Label + 351: 6(int) Load 8(x) + 352: 6(int) IAdd 351 55 + Store 8(x) 352 + Branch 350 + 350: Label + 355: 354(ptr) AccessChain 44(ro) 353 + 356: 34(int64_t) Load 355 + 358: 34(int64_t) ExpectKHR 356 357 + 359: 10(bool) IEqual 358 357 + 360: 10(bool) LogicalNot 359 + SelectionMerge 362 None + BranchConditional 360 361 362 + 361: Label + 365: 364(ptr) AccessChain 44(ro) 363 + 366: 35(i64vec2) Load 365 + 370: 35(i64vec2) ExpectKHR 366 369 + 371: 63(bvec2) IEqual 370 369 + 372: 10(bool) All 371 + Branch 362 + 362: Label + 373: 10(bool) Phi 359 350 372 361 + 374: 10(bool) LogicalNot 373 + SelectionMerge 376 None + BranchConditional 374 375 376 + 375: Label + 379: 378(ptr) AccessChain 44(ro) 377 + 380: 36(i64vec3) Load 379 + 383: 36(i64vec3) ExpectKHR 380 382 + 384: 77(bvec3) IEqual 383 382 + 385: 10(bool) All 384 + Branch 376 + 376: Label + 386: 10(bool) Phi 373 362 385 375 + 387: 10(bool) LogicalNot 386 + SelectionMerge 389 None + BranchConditional 387 388 389 + 388: Label + 392: 391(ptr) AccessChain 44(ro) 390 + 393: 37(i64vec4) Load 392 + 396: 37(i64vec4) ExpectKHR 393 395 + 397: 91(bvec4) IEqual 396 395 + 398: 10(bool) All 397 + Branch 389 + 389: Label + 399: 10(bool) Phi 386 376 398 388 + SelectionMerge 401 None + BranchConditional 399 400 401 + 400: Label + 402: 6(int) Load 8(x) + 403: 6(int) IAdd 402 55 + Store 8(x) 403 + Branch 401 + 401: Label + 406: 405(ptr) AccessChain 44(ro) 404 + 407: 38(int64_t) Load 406 + 409: 38(int64_t) ExpectKHR 407 408 + 410: 10(bool) IEqual 409 408 + 411: 10(bool) LogicalNot 410 + SelectionMerge 413 None + BranchConditional 411 412 413 + 412: Label + 416: 415(ptr) AccessChain 44(ro) 414 + 417: 39(i64vec2) Load 416 + 421: 39(i64vec2) ExpectKHR 417 420 + 422: 63(bvec2) IEqual 421 420 + 423: 10(bool) All 422 + Branch 413 + 413: Label + 424: 10(bool) Phi 410 401 423 412 + 425: 10(bool) LogicalNot 424 + SelectionMerge 427 None + BranchConditional 425 426 427 + 426: Label + 430: 429(ptr) AccessChain 44(ro) 428 + 431: 40(i64vec3) Load 430 + 434: 40(i64vec3) ExpectKHR 431 433 + 435: 77(bvec3) IEqual 434 433 + 436: 10(bool) All 435 + Branch 427 + 427: Label + 437: 10(bool) Phi 424 413 436 426 + 438: 10(bool) LogicalNot 437 + SelectionMerge 440 None + BranchConditional 438 439 440 + 439: Label + 443: 442(ptr) AccessChain 44(ro) 441 + 444: 41(i64vec4) Load 443 + 447: 41(i64vec4) ExpectKHR 444 446 + 448: 91(bvec4) IEqual 447 446 + 449: 10(bool) All 448 + Branch 440 + 440: Label + 450: 10(bool) Phi 437 427 449 439 + SelectionMerge 452 None + BranchConditional 450 451 452 + 451: Label + 453: 6(int) Load 8(x) + 454: 6(int) IAdd 453 55 + Store 8(x) 454 + Branch 452 + 452: Label + Return + FunctionEnd diff --git a/Test/spv.expect_assume.assumeEXT.comp b/Test/spv.expect_assume.assumeEXT.comp new file mode 100644 index 0000000000..165debcf92 --- /dev/null +++ b/Test/spv.expect_assume.assumeEXT.comp @@ -0,0 +1,13 @@ +#version 450 + +#extension GL_EXT_expect_assume: enable + +layout (local_size_x = 8) in; + +readonly buffer roblock { + int i; +} ro; + +void main() { + assumeEXT(ro.i > 42); +} diff --git a/Test/spv.expect_assume.expectEXT.comp b/Test/spv.expect_assume.expectEXT.comp new file mode 100644 index 0000000000..a157a5fe29 --- /dev/null +++ b/Test/spv.expect_assume.expectEXT.comp @@ -0,0 +1,43 @@ +#version 450 + +#extension GL_EXT_expect_assume: enable + +layout (local_size_x = 8) in; + +readonly buffer roblock { + bool b; + bvec2 bv2; + bvec3 bv3; + bvec4 bv4; + int i; + ivec2 iv2; + ivec3 iv3; + ivec4 iv4; + uint ui; + uvec2 uv2; + uvec3 uv3; + uvec4 uv4; +} ro; + +void main() { + int x = 0; + + if (expectEXT(ro.b, true) == true || + expectEXT(ro.bv2, bvec2(true, false)) == bvec2(true, false) || + expectEXT(ro.bv3, bvec3(true, false, true)) == bvec3(true, false, true) || + expectEXT(ro.bv4, bvec4(false, true, false, true)) == bvec4(false, true, false, true)) { + x++; + } + if (expectEXT(ro.i, 10) == 10 || + expectEXT(ro.iv2, ivec2(11, -22)) == ivec2(11, -22) || + expectEXT(ro.iv3, ivec3(11, -22, 33)) == ivec3(11, -22, 33) || + expectEXT(ro.iv4, ivec4(11, -22, 33, 44)) == ivec4(11, -22, 33, 44)) { + x++; + } + if (expectEXT(ro.ui, 10) == 10 || + expectEXT(ro.uv2, uvec2(11, 22)) == uvec2(11, 22) || + expectEXT(ro.uv3, uvec3(11, 22, 33)) == uvec3(11, 22, 33) || + expectEXT(ro.uv4, uvec4(11, 22, 33, 44)) == uvec4(11, 22, 33, 44)) { + x++; + } +} diff --git a/Test/spv.expect_assume.expectEXT.exttypes.comp b/Test/spv.expect_assume.expectEXT.exttypes.comp new file mode 100644 index 0000000000..d637fb739a --- /dev/null +++ b/Test/spv.expect_assume.expectEXT.exttypes.comp @@ -0,0 +1,101 @@ +#version 450 + +#extension GL_EXT_expect_assume: enable +#extension GL_EXT_shader_explicit_arithmetic_types: enable + +layout (local_size_x = 8) in; + +readonly buffer roblock { + int8_t i8; + i8vec2 i8v2; + i8vec3 i8v3; + i8vec4 i8v4; + uint8_t u8; + u8vec2 u8v2; + u8vec3 u8v3; + u8vec4 u8v4; + int16_t i16; + i16vec2 i16v2; + i16vec3 i16v3; + i16vec4 i16v4; + uint16_t u16; + u16vec2 u16v2; + u16vec3 u16v3; + u16vec4 u16v4; + int32_t i32; + i32vec2 i32v2; + i32vec3 i32v3; + i32vec4 i32v4; + uint32_t u32; + u32vec2 u32v2; + u32vec3 u32v3; + u32vec4 u32v4; + int64_t i64; + i64vec2 i64v2; + i64vec3 i64v3; + i64vec4 i64v4; + uint64_t u64; + u64vec2 u64v2; + u64vec3 u64v3; + u64vec4 u64v4; +} ro; + +void main() { + int x = 0; + + // 8-bit + if (expectEXT(ro.i8, 10) == 10 || + expectEXT(ro.i8v2, i8vec2(11, -22)) == i8vec2(11, -22) || + expectEXT(ro.i8v3, i8vec3(11, -22, 33)) == i8vec3(11, -22, 33) || + expectEXT(ro.i8v4, i8vec4(11, -22, 33, 44)) == i8vec4(11, -22, 33, 44)) { + x++; + } + if (expectEXT(ro.u8, 10) == 10 || + expectEXT(ro.u8v2, u8vec2(11, 22)) == u8vec2(11, 22) || + expectEXT(ro.u8v3, u8vec3(11, 22, 33)) == u8vec3(11, 22, 33) || + expectEXT(ro.u8v4, u8vec4(11, 22, 33, 44)) == u8vec4(11, 22, 33, 44)) { + x++; + } + + // 16-bit + if (expectEXT(ro.i16, 10) == 10 || + expectEXT(ro.i16v2, i16vec2(11, -22)) == i16vec2(11, -22) || + expectEXT(ro.i16v3, i16vec3(11, -22, 33)) == i16vec3(11, -22, 33) || + expectEXT(ro.i16v4, i16vec4(11, -22, 33, 44)) == i16vec4(11, -22, 33, 44)) { + x++; + } + if (expectEXT(ro.u16, 10) == 10 || + expectEXT(ro.u16v2, u16vec2(11, 22)) == u16vec2(11, 22) || + expectEXT(ro.u16v3, u16vec3(11, 22, 33)) == u16vec3(11, 22, 33) || + expectEXT(ro.u16v4, u16vec4(11, 22, 33, 44)) == u16vec4(11, 22, 33, 44)) { + x++; + } + + // 32-bit + if (expectEXT(ro.i32, 10) == 10 || + expectEXT(ro.i32v2, i32vec2(11, -22)) == i32vec2(11, -22) || + expectEXT(ro.i32v3, i32vec3(11, -22, 33)) == i32vec3(11, -22, 33) || + expectEXT(ro.i32v4, i32vec4(11, -22, 33, 44)) == i32vec4(11, -22, 33, 44)) { + x++; + } + if (expectEXT(ro.u32, 10) == 10 || + expectEXT(ro.u32v2, u32vec2(11, 22)) == u32vec2(11, 22) || + expectEXT(ro.u32v3, u32vec3(11, 22, 33)) == u32vec3(11, 22, 33) || + expectEXT(ro.u32v4, u32vec4(11, 22, 33, 44)) == u32vec4(11, 22, 33, 44)) { + x++; + } + + // 64-bit + if (expectEXT(ro.i64, 10) == 10 || + expectEXT(ro.i64v2, i64vec2(11, -22)) == i64vec2(11, -22) || + expectEXT(ro.i64v3, i64vec3(11, -22, 33)) == i64vec3(11, -22, 33) || + expectEXT(ro.i64v4, i64vec4(11, -22, 33, 44)) == i64vec4(11, -22, 33, 44)) { + x++; + } + if (expectEXT(ro.u64, 10) == 10 || + expectEXT(ro.u64v2, u64vec2(11, 22)) == u64vec2(11, 22) || + expectEXT(ro.u64v3, u64vec3(11, 22, 33)) == u64vec3(11, 22, 33) || + expectEXT(ro.u64v4, u64vec4(11, 22, 33, 44)) == u64vec4(11, 22, 33, 44)) { + x++; + } +} diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index 6b190d4d8b..c7640ec37d 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1091,6 +1091,10 @@ enum TOperator { EOpWaveActiveCountBits, // Will decompose to subgroupBallotBitCount(subgroupBallot()). EOpWavePrefixCountBits, // Will decompose to subgroupBallotInclusiveBitCount(subgroupBallot()). + // GL_EXT_expect_assume + EOpAssumeEXT, + EOpExpectEXT, + // Shader Clock Ops EOpReadClockSubgroupKHR, EOpReadClockDeviceKHR, diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8ae4346373..e74f9e7f70 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4118,6 +4118,37 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "u16vec4 unpack16(uint64_t);" "i32vec2 unpack32(int64_t);" "u32vec2 unpack32(uint64_t);" + + // GL_EXT_expect_assume + "int8_t expectEXT(int8_t, int8_t);" + "i8vec2 expectEXT(i8vec2, i8vec2);" + "i8vec3 expectEXT(i8vec3, i8vec3);" + "i8vec4 expectEXT(i8vec4, i8vec4);" + + "uint8_t expectEXT(uint8_t, uint8_t);" + "u8vec2 expectEXT(u8vec2, u8vec2);" + "u8vec3 expectEXT(u8vec3, u8vec3);" + "u8vec4 expectEXT(u8vec4, u8vec4);" + + "int16_t expectEXT(int16_t, int16_t);" + "i16vec2 expectEXT(i16vec2, i16vec2);" + "i16vec3 expectEXT(i16vec3, i16vec3);" + "i16vec4 expectEXT(i16vec4, i16vec4);" + + "uint16_t expectEXT(uint16_t, uint16_t);" + "u16vec2 expectEXT(u16vec2, u16vec2);" + "u16vec3 expectEXT(u16vec3, u16vec3);" + "u16vec4 expectEXT(u16vec4, u16vec4);" + + "int64_t expectEXT(int64_t, int64_t);" + "i64vec2 expectEXT(i64vec2, i64vec2);" + "i64vec3 expectEXT(i64vec3, i64vec3);" + "i64vec4 expectEXT(i64vec4, i64vec4);" + + "uint64_t expectEXT(uint64_t, uint64_t);" + "u64vec2 expectEXT(u64vec2, u64vec2);" + "u64vec3 expectEXT(u64vec3, u64vec3);" + "u64vec4 expectEXT(u64vec4, u64vec4);" "\n"); } @@ -4156,6 +4187,29 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV } + // GL_EXT_expect_assume + if ((profile == EEsProfile && version >= 310) || + ((profile != EEsProfile && version >= 140))) { + commonBuiltins.append( + "void assumeEXT(bool);" + + "bool expectEXT(bool, bool);" + "bvec2 expectEXT(bvec2, bvec2);" + "bvec3 expectEXT(bvec3, bvec3);" + "bvec4 expectEXT(bvec4, bvec4);" + + "int expectEXT(int, int);" + "ivec2 expectEXT(ivec2, ivec2);" + "ivec3 expectEXT(ivec3, ivec3);" + "ivec4 expectEXT(ivec4, ivec4);" + + "uint expectEXT(uint, uint);" + "uvec2 expectEXT(uvec2, uvec2);" + "uvec3 expectEXT(uvec3, uvec3);" + "uvec4 expectEXT(uvec4, uvec4);" + "\n"); + } + // QCOM_image_processing if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { @@ -8631,6 +8685,13 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_SubGroupSizeARB", EbvSubGroupSize, symbolTable); } + // GL_EXT_expect_assume + if ((profile == EEsProfile && version >= 310) || + (profile != EEsProfile && version >= 140)) { + symbolTable.setFunctionExtensions("assumeEXT", 1, &E_GL_EXT_expect_assume); + symbolTable.setFunctionExtensions("expectEXT", 1, &E_GL_EXT_expect_assume); + } + // GL_KHR_shader_subgroup if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { @@ -9732,6 +9793,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("averageRounded", EOpAverageRounded); symbolTable.relateToOperator("multiply32x16", EOpMul32x16); symbolTable.relateToOperator("debugPrintfEXT", EOpDebugPrintf); + symbolTable.relateToOperator("assumeEXT", EOpAssumeEXT); + symbolTable.relateToOperator("expectEXT", EOpExpectEXT); if (PureOperatorBuiltins) { diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index b0b901ac46..37d46ed6f5 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -262,6 +262,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_maximal_reconvergence] = EBhDisable; extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable; + extensionBehavior[E_GL_EXT_expect_assume] = EBhDisable; extensionBehavior[E_GL_KHR_cooperative_matrix] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 380c6f10b3..2e420b5ab7 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -220,6 +220,7 @@ const char* const E_GL_EXT_shader_quad_control = "GL_EXT_shader_qua const char* const E_GL_EXT_draw_instanced = "GL_EXT_draw_instanced"; const char* const E_GL_EXT_texture_array = "GL_EXT_texture_array"; const char* const E_GL_EXT_maximal_reconvergence = "GL_EXT_maximal_reconvergence"; +const char* const E_GL_EXT_expect_assume = "GL_EXT_expect_assume"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index cbdc46a2d7..4754f659ff 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -384,6 +384,9 @@ INSTANTIATE_TEST_SUITE_P( "spv.discard-dce.frag", "spv.doWhileLoop.frag", "spv.earlyReturnDiscard.frag", + "spv.expect_assume.assumeEXT.comp", + "spv.expect_assume.expectEXT.comp", + "spv.expect_assume.expectEXT.exttypes.comp", "spv.ext.ShaderTileImage.color.frag", "spv.ext.ShaderTileImage.depth_stencil.frag", "spv.ext.ShaderTileImage.subpassinput.frag", From 48702616ecc275c87c9baf73bd09162762dd80b5 Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Fri, 2 Feb 2024 12:36:16 -0600 Subject: [PATCH 412/594] NV_shader_atomic_fp16_vector --- SPIRV/GLSL.ext.NV.h | 3 + SPIRV/GlslangToSpv.cpp | 56 +- SPIRV/doc.cpp | 1 + SPIRV/spirv.hpp | 1 + Test/baseResults/spv.nvAtomicFp16Vec.frag.out | 704 ++++++++++++++++++ Test/spv.nvAtomicFp16Vec.frag | 113 +++ glslang/MachineIndependent/Initialize.cpp | 42 ++ glslang/MachineIndependent/ParseHelper.cpp | 16 + glslang/MachineIndependent/Versions.cpp | 1 + glslang/MachineIndependent/Versions.h | 1 + gtests/Spv.FromFile.cpp | 1 + known_good.json | 26 +- 12 files changed, 937 insertions(+), 28 deletions(-) create mode 100644 Test/baseResults/spv.nvAtomicFp16Vec.frag.out create mode 100644 Test/spv.nvAtomicFp16Vec.frag diff --git a/SPIRV/GLSL.ext.NV.h b/SPIRV/GLSL.ext.NV.h index 9889bc9f9b..e4f11e4bfc 100644 --- a/SPIRV/GLSL.ext.NV.h +++ b/SPIRV/GLSL.ext.NV.h @@ -87,4 +87,7 @@ const char* const E_SPV_NV_shader_invocation_reorder = "SPV_NV_shader_invocation //SPV_NV_displacement_micromap const char* const E_SPV_NV_displacement_micromap = "SPV_NV_displacement_micromap"; +//SPV_NV_shader_atomic_fp16_vector +const char* const E_SPV_NV_shader_atomic_fp16_vector = "SPV_NV_shader_atomic_fp16_vector"; + #endif // #ifndef GLSLextNV_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1d375ef253..ffd44c5d8b 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -204,7 +204,8 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id createBinaryMatrixOperation(spv::Op, OpDecorations&, spv::Id typeId, spv::Id left, spv::Id right); spv::Id createUnaryOperation(glslang::TOperator op, OpDecorations&, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy, - const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); + const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, + const glslang::TType &opType); spv::Id createUnaryMatrixOperation(spv::Op op, OpDecorations&, spv::Id typeId, spv::Id operand, glslang::TBasicType typeProxy); spv::Id createConversion(glslang::TOperator op, OpDecorations&, spv::Id destTypeId, spv::Id operand, @@ -213,7 +214,8 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id makeSmearedConstant(spv::Id constant, int vectorSize); spv::Id createAtomicOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, - const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags); + const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, + const glslang::TType &opType); spv::Id createInvocationsOperation(glslang::TOperator op, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy); spv::Id CreateInvocationsVectorOperation(spv::Op op, spv::GroupOperation groupOperation, @@ -2692,7 +2694,7 @@ bool TGlslangToSpvTraverser::visitUnary(glslang::TVisit /* visit */, glslang::TI // if not, then possibly an operation if (! result) result = createUnaryOperation(node->getOp(), decorations, resultType(), operand, - node->getOperand()->getBasicType(), lvalueCoherentFlags); + node->getOperand()->getBasicType(), lvalueCoherentFlags, node->getType()); // it could be attached to a SPIR-V intruction if (!result) { @@ -3775,7 +3777,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt glslang::TBasicType typeProxy = (node->getOp() == glslang::EOpAtomicStore) ? node->getSequence()[0]->getAsTyped()->getBasicType() : node->getBasicType(); result = createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy, - lvalueCoherentFlags); + lvalueCoherentFlags, node->getType()); } else if (node->getOp() == glslang::EOpSpirvInst) { const auto& spirvInst = node->getSpirvInstruction(); if (spirvInst.set == "") { @@ -3822,7 +3824,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt result = createUnaryOperation( node->getOp(), decorations, resultType(), operands.front(), - glslangOperands[0]->getAsTyped()->getBasicType(), lvalueCoherentFlags); + glslangOperands[0]->getAsTyped()->getBasicType(), lvalueCoherentFlags, node->getType()); } break; default: @@ -6077,7 +6079,7 @@ spv::Id TGlslangToSpvTraverser::createImageTextureFunctionCall(glslang::TIntermO operands.push_back(*opIt); return createAtomicOperation(node->getOp(), precision, resultType(), operands, typeProxy, - lvalueCoherentFlags); + lvalueCoherentFlags, node->getType()); } } @@ -6828,7 +6830,8 @@ spv::Id TGlslangToSpvTraverser::createBinaryMatrixOperation(spv::Op op, OpDecora } spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDecorations& decorations, spv::Id typeId, - spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) + spv::Id operand, glslang::TBasicType typeProxy, const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, + const glslang::TType &opType) { spv::Op unaryOp = spv::OpNop; int extBuiltins = -1; @@ -7116,7 +7119,7 @@ spv::Id TGlslangToSpvTraverser::createUnaryOperation(glslang::TOperator op, OpDe // Handle all of the atomics in one place, in createAtomicOperation() std::vector operands; operands.push_back(operand); - return createAtomicOperation(op, decorations.precision, typeId, operands, typeProxy, lvalueCoherentFlags); + return createAtomicOperation(op, decorations.precision, typeId, operands, typeProxy, lvalueCoherentFlags, opType); } case glslang::EOpBitFieldReverse: @@ -7834,7 +7837,7 @@ spv::Id TGlslangToSpvTraverser::makeSmearedConstant(spv::Id constant, int vector // For glslang ops that map to SPV atomic opCodes spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv::Decoration /*precision*/, spv::Id typeId, std::vector& operands, glslang::TBasicType typeProxy, - const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags) + const spv::Builder::AccessChain::CoherentFlags &lvalueCoherentFlags, const glslang::TType &opType) { spv::Op opCode = spv::OpNop; @@ -7847,8 +7850,13 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv opCode = spv::OpAtomicFAddEXT; builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_add); if (typeProxy == glslang::EbtFloat16) { - builder.addExtension(spv::E_SPV_EXT_shader_atomic_float16_add); - builder.addCapability(spv::CapabilityAtomicFloat16AddEXT); + if (opType.getVectorSize() == 2 || opType.getVectorSize() == 4) { + builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); + builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); + } else { + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float16_add); + builder.addCapability(spv::CapabilityAtomicFloat16AddEXT); + } } else if (typeProxy == glslang::EbtFloat) { builder.addCapability(spv::CapabilityAtomicFloat32AddEXT); } else { @@ -7866,8 +7874,14 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::OpAtomicFMinEXT; builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); - if (typeProxy == glslang::EbtFloat16) - builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); + if (typeProxy == glslang::EbtFloat16) { + if (opType.getVectorSize() == 2 || opType.getVectorSize() == 4) { + builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); + builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); + } else { + builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); + } + } else if (typeProxy == glslang::EbtFloat) builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); else @@ -7884,8 +7898,14 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::OpAtomicFMaxEXT; builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); - if (typeProxy == glslang::EbtFloat16) - builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); + if (typeProxy == glslang::EbtFloat16) { + if (opType.getVectorSize() == 2 || opType.getVectorSize() == 4) { + builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); + builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); + } else { + builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); + } + } else if (typeProxy == glslang::EbtFloat) builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); else @@ -7914,6 +7934,12 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv case glslang::EOpAtomicExchange: case glslang::EOpImageAtomicExchange: case glslang::EOpAtomicCounterExchange: + if ((typeProxy == glslang::EbtFloat16) && + (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { + builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); + builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); + } + opCode = spv::OpAtomicExchange; break; case glslang::EOpAtomicCompSwap: diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 5839a99957..4ed6acfe48 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1037,6 +1037,7 @@ const char* CapabilityString(int info) case CapabilityFragmentShadingRateKHR: return "FragmentShadingRateKHR"; case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; + case CapabilityAtomicFloat16VectorNV: return "AtomicFloat16VectorNV"; case CapabilityShaderClockKHR: return "ShaderClockKHR"; case CapabilityQuadControlKHR: return "QuadControlKHR"; case CapabilityInt64ImageEXT: return "Int64ImageEXT"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 1fc3ae6f76..f163f3afc2 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1108,6 +1108,7 @@ enum Capability { CapabilityShaderInvocationReorderNV = 5383, CapabilityBindlessTextureNV = 5390, CapabilityRayQueryPositionFetchKHR = 5391, + CapabilityAtomicFloat16VectorNV = 5404, CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupImageBlockIOINTEL = 5570, diff --git a/Test/baseResults/spv.nvAtomicFp16Vec.frag.out b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out new file mode 100644 index 0000000000..c9212c0ee6 --- /dev/null +++ b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out @@ -0,0 +1,704 @@ +spv.nvAtomicFp16Vec.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 515 + + Capability Shader + Capability Float16 + Capability ImageCubeArray + Capability Image1D + Capability StorageImageExtendedFormats + Capability StorageUniformBufferBlock16 + Capability AtomicFloat16VectorNV + Extension "SPV_EXT_shader_atomic_float_add" + Extension "SPV_EXT_shader_atomic_float_min_max" + Extension "SPV_KHR_16bit_storage" + Extension "SPV_NV_shader_atomic_fp16_vector" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 430 + SourceExtension "GL_EXT_shader_explicit_arithmetic_types_float16" + SourceExtension "GL_NV_shader_atomic_fp16_vector" + Name 4 "main" + Name 9 "Buffer" + MemberName 9(Buffer) 0 "dataf16v2" + MemberName 9(Buffer) 1 "dataf16v4" + MemberName 9(Buffer) 2 "resf16v2" + MemberName 9(Buffer) 3 "resf16v4" + Name 11 "buf" + Name 68 "constVec2" + Name 74 "fimage1D" + Name 85 "fimage1DArray" + Name 97 "fimage2D" + Name 107 "fimage2DArray" + Name 119 "fimageCube" + Name 129 "fimageCubeArray" + Name 139 "fimage3D" + Name 295 "constVec4" + Name 299 "fimage1Dv4" + Name 310 "fimage1DArrayv4" + Name 320 "fimage2Dv4" + Name 330 "fimage2DArrayv4" + Name 340 "fimageCubev4" + Name 350 "fimageCubeArrayv4" + Name 360 "fimage3Dv4" + MemberDecorate 9(Buffer) 0 Offset 0 + MemberDecorate 9(Buffer) 1 Offset 8 + MemberDecorate 9(Buffer) 2 Offset 16 + MemberDecorate 9(Buffer) 3 Offset 24 + Decorate 9(Buffer) BufferBlock + Decorate 11(buf) DescriptorSet 0 + Decorate 11(buf) Binding 0 + Decorate 74(fimage1D) DescriptorSet 0 + Decorate 74(fimage1D) Binding 0 + Decorate 74(fimage1D) Coherent + Decorate 74(fimage1D) Volatile + Decorate 74(fimage1D) Coherent + Decorate 85(fimage1DArray) DescriptorSet 0 + Decorate 85(fimage1DArray) Binding 1 + Decorate 85(fimage1DArray) Coherent + Decorate 85(fimage1DArray) Volatile + Decorate 85(fimage1DArray) Coherent + Decorate 97(fimage2D) DescriptorSet 0 + Decorate 97(fimage2D) Binding 2 + Decorate 97(fimage2D) Coherent + Decorate 97(fimage2D) Volatile + Decorate 97(fimage2D) Coherent + Decorate 107(fimage2DArray) DescriptorSet 0 + Decorate 107(fimage2DArray) Binding 3 + Decorate 107(fimage2DArray) Coherent + Decorate 107(fimage2DArray) Volatile + Decorate 107(fimage2DArray) Coherent + Decorate 119(fimageCube) DescriptorSet 0 + Decorate 119(fimageCube) Binding 5 + Decorate 119(fimageCube) Coherent + Decorate 119(fimageCube) Volatile + Decorate 119(fimageCube) Coherent + Decorate 129(fimageCubeArray) DescriptorSet 0 + Decorate 129(fimageCubeArray) Binding 6 + Decorate 129(fimageCubeArray) Coherent + Decorate 129(fimageCubeArray) Volatile + Decorate 129(fimageCubeArray) Coherent + Decorate 139(fimage3D) DescriptorSet 0 + Decorate 139(fimage3D) Binding 9 + Decorate 139(fimage3D) Coherent + Decorate 139(fimage3D) Volatile + Decorate 139(fimage3D) Coherent + Decorate 299(fimage1Dv4) DescriptorSet 0 + Decorate 299(fimage1Dv4) Binding 10 + Decorate 299(fimage1Dv4) Coherent + Decorate 299(fimage1Dv4) Volatile + Decorate 299(fimage1Dv4) Coherent + Decorate 310(fimage1DArrayv4) DescriptorSet 0 + Decorate 310(fimage1DArrayv4) Binding 11 + Decorate 310(fimage1DArrayv4) Coherent + Decorate 310(fimage1DArrayv4) Volatile + Decorate 310(fimage1DArrayv4) Coherent + Decorate 320(fimage2Dv4) DescriptorSet 0 + Decorate 320(fimage2Dv4) Binding 12 + Decorate 320(fimage2Dv4) Coherent + Decorate 320(fimage2Dv4) Volatile + Decorate 320(fimage2Dv4) Coherent + Decorate 330(fimage2DArrayv4) DescriptorSet 0 + Decorate 330(fimage2DArrayv4) Binding 13 + Decorate 330(fimage2DArrayv4) Coherent + Decorate 330(fimage2DArrayv4) Volatile + Decorate 330(fimage2DArrayv4) Coherent + Decorate 340(fimageCubev4) DescriptorSet 0 + Decorate 340(fimageCubev4) Binding 15 + Decorate 340(fimageCubev4) Coherent + Decorate 340(fimageCubev4) Volatile + Decorate 340(fimageCubev4) Coherent + Decorate 350(fimageCubeArrayv4) DescriptorSet 0 + Decorate 350(fimageCubeArrayv4) Binding 16 + Decorate 350(fimageCubeArrayv4) Coherent + Decorate 350(fimageCubeArrayv4) Volatile + Decorate 350(fimageCubeArrayv4) Coherent + Decorate 360(fimage3Dv4) DescriptorSet 0 + Decorate 360(fimage3Dv4) Binding 19 + Decorate 360(fimage3Dv4) Coherent + Decorate 360(fimage3Dv4) Volatile + Decorate 360(fimage3Dv4) Coherent + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7: TypeVector 6(float16_t) 2 + 8: TypeVector 6(float16_t) 4 + 9(Buffer): TypeStruct 7(f16vec2) 8(f16vec4) 7(f16vec2) 8(f16vec4) + 10: TypePointer Uniform 9(Buffer) + 11(buf): 10(ptr) Variable Uniform + 12: TypeInt 32 1 + 13: 12(int) Constant 2 + 14: 12(int) Constant 0 + 15: TypePointer Uniform 7(f16vec2) + 17:6(float16_t) Constant 16896 + 18: 7(f16vec2) ConstantComposite 17 17 + 19: TypeInt 32 0 + 20: 19(int) Constant 1 + 21: 19(int) Constant 0 + 42: 12(int) Constant 3 + 43: 12(int) Constant 1 + 44: TypePointer Uniform 8(f16vec4) + 46: 8(f16vec4) ConstantComposite 17 17 17 17 + 67: TypePointer Function 7(f16vec2) + 69:6(float16_t) Constant 16384 + 70: 7(f16vec2) ConstantComposite 69 69 + 71: TypeFloat 32 + 72: TypeImage 71(float) 1D nonsampled format:Rg16f + 73: TypePointer UniformConstant 72 + 74(fimage1D): 73(ptr) Variable UniformConstant + 76: TypePointer Image 7(f16vec2) + 83: TypeImage 71(float) 1D array nonsampled format:Rg16f + 84: TypePointer UniformConstant 83 +85(fimage1DArray): 84(ptr) Variable UniformConstant + 86: TypeVector 12(int) 2 + 87: 86(ivec2) ConstantComposite 14 14 + 95: TypeImage 71(float) 2D nonsampled format:Rg16f + 96: TypePointer UniformConstant 95 + 97(fimage2D): 96(ptr) Variable UniformConstant + 105: TypeImage 71(float) 2D array nonsampled format:Rg16f + 106: TypePointer UniformConstant 105 +107(fimage2DArray): 106(ptr) Variable UniformConstant + 108: TypeVector 12(int) 3 + 109: 108(ivec3) ConstantComposite 14 14 14 + 117: TypeImage 71(float) Cube nonsampled format:Rg16f + 118: TypePointer UniformConstant 117 + 119(fimageCube): 118(ptr) Variable UniformConstant + 127: TypeImage 71(float) Cube array nonsampled format:Rg16f + 128: TypePointer UniformConstant 127 +129(fimageCubeArray): 128(ptr) Variable UniformConstant + 137: TypeImage 71(float) 3D nonsampled format:Rg16f + 138: TypePointer UniformConstant 137 + 139(fimage3D): 138(ptr) Variable UniformConstant + 294: TypePointer Function 8(f16vec4) + 296: 8(f16vec4) ConstantComposite 69 69 69 69 + 297: TypeImage 71(float) 1D nonsampled format:Rgba16f + 298: TypePointer UniformConstant 297 + 299(fimage1Dv4): 298(ptr) Variable UniformConstant + 301: TypePointer Image 8(f16vec4) + 308: TypeImage 71(float) 1D array nonsampled format:Rgba16f + 309: TypePointer UniformConstant 308 +310(fimage1DArrayv4): 309(ptr) Variable UniformConstant + 318: TypeImage 71(float) 2D nonsampled format:Rgba16f + 319: TypePointer UniformConstant 318 + 320(fimage2Dv4): 319(ptr) Variable UniformConstant + 328: TypeImage 71(float) 2D array nonsampled format:Rgba16f + 329: TypePointer UniformConstant 328 +330(fimage2DArrayv4): 329(ptr) Variable UniformConstant + 338: TypeImage 71(float) Cube nonsampled format:Rgba16f + 339: TypePointer UniformConstant 338 +340(fimageCubev4): 339(ptr) Variable UniformConstant + 348: TypeImage 71(float) Cube array nonsampled format:Rgba16f + 349: TypePointer UniformConstant 348 +350(fimageCubeArrayv4): 349(ptr) Variable UniformConstant + 358: TypeImage 71(float) 3D nonsampled format:Rgba16f + 359: TypePointer UniformConstant 358 + 360(fimage3Dv4): 359(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 68(constVec2): 67(ptr) Variable Function + 295(constVec4): 294(ptr) Variable Function + 16: 15(ptr) AccessChain 11(buf) 14 + 22: 7(f16vec2) AtomicFAddEXT 16 20 21 18 + 23: 15(ptr) AccessChain 11(buf) 13 + Store 23 22 + 24: 15(ptr) AccessChain 11(buf) 14 + 25: 7(f16vec2) AtomicFMinEXT 24 20 21 18 + 26: 15(ptr) AccessChain 11(buf) 13 + 27: 7(f16vec2) Load 26 + 28: 7(f16vec2) FAdd 27 25 + 29: 15(ptr) AccessChain 11(buf) 13 + Store 29 28 + 30: 15(ptr) AccessChain 11(buf) 14 + 31: 7(f16vec2) AtomicFMaxEXT 30 20 21 18 + 32: 15(ptr) AccessChain 11(buf) 13 + 33: 7(f16vec2) Load 32 + 34: 7(f16vec2) FAdd 33 31 + 35: 15(ptr) AccessChain 11(buf) 13 + Store 35 34 + 36: 15(ptr) AccessChain 11(buf) 14 + 37: 7(f16vec2) AtomicExchange 36 20 21 18 + 38: 15(ptr) AccessChain 11(buf) 13 + 39: 7(f16vec2) Load 38 + 40: 7(f16vec2) FAdd 39 37 + 41: 15(ptr) AccessChain 11(buf) 13 + Store 41 40 + 45: 44(ptr) AccessChain 11(buf) 43 + 47: 8(f16vec4) AtomicFAddEXT 45 20 21 46 + 48: 44(ptr) AccessChain 11(buf) 42 + Store 48 47 + 49: 44(ptr) AccessChain 11(buf) 43 + 50: 8(f16vec4) AtomicFMinEXT 49 20 21 46 + 51: 44(ptr) AccessChain 11(buf) 42 + 52: 8(f16vec4) Load 51 + 53: 8(f16vec4) FAdd 52 50 + 54: 44(ptr) AccessChain 11(buf) 42 + Store 54 53 + 55: 44(ptr) AccessChain 11(buf) 43 + 56: 8(f16vec4) AtomicFMaxEXT 55 20 21 46 + 57: 44(ptr) AccessChain 11(buf) 42 + 58: 8(f16vec4) Load 57 + 59: 8(f16vec4) FAdd 58 56 + 60: 44(ptr) AccessChain 11(buf) 42 + Store 60 59 + 61: 44(ptr) AccessChain 11(buf) 43 + 62: 8(f16vec4) AtomicExchange 61 20 21 46 + 63: 44(ptr) AccessChain 11(buf) 42 + 64: 8(f16vec4) Load 63 + 65: 8(f16vec4) FAdd 64 62 + 66: 44(ptr) AccessChain 11(buf) 42 + Store 66 65 + Store 68(constVec2) 70 + 75: 7(f16vec2) Load 68(constVec2) + 77: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 + 78: 7(f16vec2) AtomicFAddEXT 77 20 21 75 + 79: 15(ptr) AccessChain 11(buf) 13 + 80: 7(f16vec2) Load 79 + 81: 7(f16vec2) FAdd 80 78 + 82: 15(ptr) AccessChain 11(buf) 13 + Store 82 81 + 88: 7(f16vec2) Load 68(constVec2) + 89: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 + 90: 7(f16vec2) AtomicFAddEXT 89 20 21 88 + 91: 15(ptr) AccessChain 11(buf) 13 + 92: 7(f16vec2) Load 91 + 93: 7(f16vec2) FAdd 92 90 + 94: 15(ptr) AccessChain 11(buf) 13 + Store 94 93 + 98: 7(f16vec2) Load 68(constVec2) + 99: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 + 100: 7(f16vec2) AtomicFAddEXT 99 20 21 98 + 101: 15(ptr) AccessChain 11(buf) 13 + 102: 7(f16vec2) Load 101 + 103: 7(f16vec2) FAdd 102 100 + 104: 15(ptr) AccessChain 11(buf) 13 + Store 104 103 + 110: 7(f16vec2) Load 68(constVec2) + 111: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 + 112: 7(f16vec2) AtomicFAddEXT 111 20 21 110 + 113: 15(ptr) AccessChain 11(buf) 13 + 114: 7(f16vec2) Load 113 + 115: 7(f16vec2) FAdd 114 112 + 116: 15(ptr) AccessChain 11(buf) 13 + Store 116 115 + 120: 7(f16vec2) Load 68(constVec2) + 121: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 + 122: 7(f16vec2) AtomicFAddEXT 121 20 21 120 + 123: 15(ptr) AccessChain 11(buf) 13 + 124: 7(f16vec2) Load 123 + 125: 7(f16vec2) FAdd 124 122 + 126: 15(ptr) AccessChain 11(buf) 13 + Store 126 125 + 130: 7(f16vec2) Load 68(constVec2) + 131: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 + 132: 7(f16vec2) AtomicFAddEXT 131 20 21 130 + 133: 15(ptr) AccessChain 11(buf) 13 + 134: 7(f16vec2) Load 133 + 135: 7(f16vec2) FAdd 134 132 + 136: 15(ptr) AccessChain 11(buf) 13 + Store 136 135 + 140: 7(f16vec2) Load 68(constVec2) + 141: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 + 142: 7(f16vec2) AtomicFAddEXT 141 20 21 140 + 143: 15(ptr) AccessChain 11(buf) 13 + 144: 7(f16vec2) Load 143 + 145: 7(f16vec2) FAdd 144 142 + 146: 15(ptr) AccessChain 11(buf) 13 + Store 146 145 + 147: 7(f16vec2) Load 68(constVec2) + 148: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 + 149: 7(f16vec2) AtomicFMinEXT 148 20 21 147 + 150: 15(ptr) AccessChain 11(buf) 13 + 151: 7(f16vec2) Load 150 + 152: 7(f16vec2) FAdd 151 149 + 153: 15(ptr) AccessChain 11(buf) 13 + Store 153 152 + 154: 7(f16vec2) Load 68(constVec2) + 155: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 + 156: 7(f16vec2) AtomicFMinEXT 155 20 21 154 + 157: 15(ptr) AccessChain 11(buf) 13 + 158: 7(f16vec2) Load 157 + 159: 7(f16vec2) FAdd 158 156 + 160: 15(ptr) AccessChain 11(buf) 13 + Store 160 159 + 161: 7(f16vec2) Load 68(constVec2) + 162: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 + 163: 7(f16vec2) AtomicFMinEXT 162 20 21 161 + 164: 15(ptr) AccessChain 11(buf) 13 + 165: 7(f16vec2) Load 164 + 166: 7(f16vec2) FAdd 165 163 + 167: 15(ptr) AccessChain 11(buf) 13 + Store 167 166 + 168: 7(f16vec2) Load 68(constVec2) + 169: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 + 170: 7(f16vec2) AtomicFMinEXT 169 20 21 168 + 171: 15(ptr) AccessChain 11(buf) 13 + 172: 7(f16vec2) Load 171 + 173: 7(f16vec2) FAdd 172 170 + 174: 15(ptr) AccessChain 11(buf) 13 + Store 174 173 + 175: 7(f16vec2) Load 68(constVec2) + 176: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 + 177: 7(f16vec2) AtomicFMinEXT 176 20 21 175 + 178: 15(ptr) AccessChain 11(buf) 13 + 179: 7(f16vec2) Load 178 + 180: 7(f16vec2) FAdd 179 177 + 181: 15(ptr) AccessChain 11(buf) 13 + Store 181 180 + 182: 7(f16vec2) Load 68(constVec2) + 183: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 + 184: 7(f16vec2) AtomicFMinEXT 183 20 21 182 + 185: 15(ptr) AccessChain 11(buf) 13 + 186: 7(f16vec2) Load 185 + 187: 7(f16vec2) FAdd 186 184 + 188: 15(ptr) AccessChain 11(buf) 13 + Store 188 187 + 189: 7(f16vec2) Load 68(constVec2) + 190: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 + 191: 7(f16vec2) AtomicFMinEXT 190 20 21 189 + 192: 15(ptr) AccessChain 11(buf) 13 + 193: 7(f16vec2) Load 192 + 194: 7(f16vec2) FAdd 193 191 + 195: 15(ptr) AccessChain 11(buf) 13 + Store 195 194 + 196: 7(f16vec2) Load 68(constVec2) + 197: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 + 198: 7(f16vec2) AtomicFMaxEXT 197 20 21 196 + 199: 15(ptr) AccessChain 11(buf) 13 + 200: 7(f16vec2) Load 199 + 201: 7(f16vec2) FAdd 200 198 + 202: 15(ptr) AccessChain 11(buf) 13 + Store 202 201 + 203: 7(f16vec2) Load 68(constVec2) + 204: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 + 205: 7(f16vec2) AtomicFMaxEXT 204 20 21 203 + 206: 15(ptr) AccessChain 11(buf) 13 + 207: 7(f16vec2) Load 206 + 208: 7(f16vec2) FAdd 207 205 + 209: 15(ptr) AccessChain 11(buf) 13 + Store 209 208 + 210: 7(f16vec2) Load 68(constVec2) + 211: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 + 212: 7(f16vec2) AtomicFMaxEXT 211 20 21 210 + 213: 15(ptr) AccessChain 11(buf) 13 + 214: 7(f16vec2) Load 213 + 215: 7(f16vec2) FAdd 214 212 + 216: 15(ptr) AccessChain 11(buf) 13 + Store 216 215 + 217: 7(f16vec2) Load 68(constVec2) + 218: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 + 219: 7(f16vec2) AtomicFMaxEXT 218 20 21 217 + 220: 15(ptr) AccessChain 11(buf) 13 + 221: 7(f16vec2) Load 220 + 222: 7(f16vec2) FAdd 221 219 + 223: 15(ptr) AccessChain 11(buf) 13 + Store 223 222 + 224: 7(f16vec2) Load 68(constVec2) + 225: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 + 226: 7(f16vec2) AtomicFMaxEXT 225 20 21 224 + 227: 15(ptr) AccessChain 11(buf) 13 + 228: 7(f16vec2) Load 227 + 229: 7(f16vec2) FAdd 228 226 + 230: 15(ptr) AccessChain 11(buf) 13 + Store 230 229 + 231: 7(f16vec2) Load 68(constVec2) + 232: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 + 233: 7(f16vec2) AtomicFMaxEXT 232 20 21 231 + 234: 15(ptr) AccessChain 11(buf) 13 + 235: 7(f16vec2) Load 234 + 236: 7(f16vec2) FAdd 235 233 + 237: 15(ptr) AccessChain 11(buf) 13 + Store 237 236 + 238: 7(f16vec2) Load 68(constVec2) + 239: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 + 240: 7(f16vec2) AtomicFMaxEXT 239 20 21 238 + 241: 15(ptr) AccessChain 11(buf) 13 + 242: 7(f16vec2) Load 241 + 243: 7(f16vec2) FAdd 242 240 + 244: 15(ptr) AccessChain 11(buf) 13 + Store 244 243 + 245: 7(f16vec2) Load 68(constVec2) + 246: 76(ptr) ImageTexelPointer 74(fimage1D) 14 21 + 247: 7(f16vec2) AtomicExchange 246 20 21 245 + 248: 15(ptr) AccessChain 11(buf) 13 + 249: 7(f16vec2) Load 248 + 250: 7(f16vec2) FAdd 249 247 + 251: 15(ptr) AccessChain 11(buf) 13 + Store 251 250 + 252: 7(f16vec2) Load 68(constVec2) + 253: 76(ptr) ImageTexelPointer 85(fimage1DArray) 87 21 + 254: 7(f16vec2) AtomicExchange 253 20 21 252 + 255: 15(ptr) AccessChain 11(buf) 13 + 256: 7(f16vec2) Load 255 + 257: 7(f16vec2) FAdd 256 254 + 258: 15(ptr) AccessChain 11(buf) 13 + Store 258 257 + 259: 7(f16vec2) Load 68(constVec2) + 260: 76(ptr) ImageTexelPointer 97(fimage2D) 87 21 + 261: 7(f16vec2) AtomicExchange 260 20 21 259 + 262: 15(ptr) AccessChain 11(buf) 13 + 263: 7(f16vec2) Load 262 + 264: 7(f16vec2) FAdd 263 261 + 265: 15(ptr) AccessChain 11(buf) 13 + Store 265 264 + 266: 7(f16vec2) Load 68(constVec2) + 267: 76(ptr) ImageTexelPointer 107(fimage2DArray) 109 21 + 268: 7(f16vec2) AtomicExchange 267 20 21 266 + 269: 15(ptr) AccessChain 11(buf) 13 + 270: 7(f16vec2) Load 269 + 271: 7(f16vec2) FAdd 270 268 + 272: 15(ptr) AccessChain 11(buf) 13 + Store 272 271 + 273: 7(f16vec2) Load 68(constVec2) + 274: 76(ptr) ImageTexelPointer 119(fimageCube) 109 21 + 275: 7(f16vec2) AtomicExchange 274 20 21 273 + 276: 15(ptr) AccessChain 11(buf) 13 + 277: 7(f16vec2) Load 276 + 278: 7(f16vec2) FAdd 277 275 + 279: 15(ptr) AccessChain 11(buf) 13 + Store 279 278 + 280: 7(f16vec2) Load 68(constVec2) + 281: 76(ptr) ImageTexelPointer 129(fimageCubeArray) 109 21 + 282: 7(f16vec2) AtomicExchange 281 20 21 280 + 283: 15(ptr) AccessChain 11(buf) 13 + 284: 7(f16vec2) Load 283 + 285: 7(f16vec2) FAdd 284 282 + 286: 15(ptr) AccessChain 11(buf) 13 + Store 286 285 + 287: 7(f16vec2) Load 68(constVec2) + 288: 76(ptr) ImageTexelPointer 139(fimage3D) 109 21 + 289: 7(f16vec2) AtomicExchange 288 20 21 287 + 290: 15(ptr) AccessChain 11(buf) 13 + 291: 7(f16vec2) Load 290 + 292: 7(f16vec2) FAdd 291 289 + 293: 15(ptr) AccessChain 11(buf) 13 + Store 293 292 + Store 295(constVec4) 296 + 300: 8(f16vec4) Load 295(constVec4) + 302: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 + 303: 8(f16vec4) AtomicFAddEXT 302 20 21 300 + 304: 44(ptr) AccessChain 11(buf) 42 + 305: 8(f16vec4) Load 304 + 306: 8(f16vec4) FAdd 305 303 + 307: 44(ptr) AccessChain 11(buf) 42 + Store 307 306 + 311: 8(f16vec4) Load 295(constVec4) + 312: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 + 313: 8(f16vec4) AtomicFAddEXT 312 20 21 311 + 314: 44(ptr) AccessChain 11(buf) 42 + 315: 8(f16vec4) Load 314 + 316: 8(f16vec4) FAdd 315 313 + 317: 44(ptr) AccessChain 11(buf) 42 + Store 317 316 + 321: 8(f16vec4) Load 295(constVec4) + 322: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 + 323: 8(f16vec4) AtomicFAddEXT 322 20 21 321 + 324: 44(ptr) AccessChain 11(buf) 42 + 325: 8(f16vec4) Load 324 + 326: 8(f16vec4) FAdd 325 323 + 327: 44(ptr) AccessChain 11(buf) 42 + Store 327 326 + 331: 8(f16vec4) Load 295(constVec4) + 332: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 + 333: 8(f16vec4) AtomicFAddEXT 332 20 21 331 + 334: 44(ptr) AccessChain 11(buf) 42 + 335: 8(f16vec4) Load 334 + 336: 8(f16vec4) FAdd 335 333 + 337: 44(ptr) AccessChain 11(buf) 42 + Store 337 336 + 341: 8(f16vec4) Load 295(constVec4) + 342: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 + 343: 8(f16vec4) AtomicFAddEXT 342 20 21 341 + 344: 44(ptr) AccessChain 11(buf) 42 + 345: 8(f16vec4) Load 344 + 346: 8(f16vec4) FAdd 345 343 + 347: 44(ptr) AccessChain 11(buf) 42 + Store 347 346 + 351: 8(f16vec4) Load 295(constVec4) + 352: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 + 353: 8(f16vec4) AtomicFAddEXT 352 20 21 351 + 354: 44(ptr) AccessChain 11(buf) 42 + 355: 8(f16vec4) Load 354 + 356: 8(f16vec4) FAdd 355 353 + 357: 44(ptr) AccessChain 11(buf) 42 + Store 357 356 + 361: 8(f16vec4) Load 295(constVec4) + 362: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 + 363: 8(f16vec4) AtomicFAddEXT 362 20 21 361 + 364: 44(ptr) AccessChain 11(buf) 42 + 365: 8(f16vec4) Load 364 + 366: 8(f16vec4) FAdd 365 363 + 367: 44(ptr) AccessChain 11(buf) 42 + Store 367 366 + 368: 8(f16vec4) Load 295(constVec4) + 369: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 + 370: 8(f16vec4) AtomicFMinEXT 369 20 21 368 + 371: 44(ptr) AccessChain 11(buf) 42 + 372: 8(f16vec4) Load 371 + 373: 8(f16vec4) FAdd 372 370 + 374: 44(ptr) AccessChain 11(buf) 42 + Store 374 373 + 375: 8(f16vec4) Load 295(constVec4) + 376: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 + 377: 8(f16vec4) AtomicFMinEXT 376 20 21 375 + 378: 44(ptr) AccessChain 11(buf) 42 + 379: 8(f16vec4) Load 378 + 380: 8(f16vec4) FAdd 379 377 + 381: 44(ptr) AccessChain 11(buf) 42 + Store 381 380 + 382: 8(f16vec4) Load 295(constVec4) + 383: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 + 384: 8(f16vec4) AtomicFMinEXT 383 20 21 382 + 385: 44(ptr) AccessChain 11(buf) 42 + 386: 8(f16vec4) Load 385 + 387: 8(f16vec4) FAdd 386 384 + 388: 44(ptr) AccessChain 11(buf) 42 + Store 388 387 + 389: 8(f16vec4) Load 295(constVec4) + 390: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 + 391: 8(f16vec4) AtomicFMinEXT 390 20 21 389 + 392: 44(ptr) AccessChain 11(buf) 42 + 393: 8(f16vec4) Load 392 + 394: 8(f16vec4) FAdd 393 391 + 395: 44(ptr) AccessChain 11(buf) 42 + Store 395 394 + 396: 8(f16vec4) Load 295(constVec4) + 397: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 + 398: 8(f16vec4) AtomicFMinEXT 397 20 21 396 + 399: 44(ptr) AccessChain 11(buf) 42 + 400: 8(f16vec4) Load 399 + 401: 8(f16vec4) FAdd 400 398 + 402: 44(ptr) AccessChain 11(buf) 42 + Store 402 401 + 403: 8(f16vec4) Load 295(constVec4) + 404: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 + 405: 8(f16vec4) AtomicFMinEXT 404 20 21 403 + 406: 44(ptr) AccessChain 11(buf) 42 + 407: 8(f16vec4) Load 406 + 408: 8(f16vec4) FAdd 407 405 + 409: 44(ptr) AccessChain 11(buf) 42 + Store 409 408 + 410: 8(f16vec4) Load 295(constVec4) + 411: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 + 412: 8(f16vec4) AtomicFMinEXT 411 20 21 410 + 413: 44(ptr) AccessChain 11(buf) 42 + 414: 8(f16vec4) Load 413 + 415: 8(f16vec4) FAdd 414 412 + 416: 44(ptr) AccessChain 11(buf) 42 + Store 416 415 + 417: 8(f16vec4) Load 295(constVec4) + 418: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 + 419: 8(f16vec4) AtomicFMaxEXT 418 20 21 417 + 420: 44(ptr) AccessChain 11(buf) 42 + 421: 8(f16vec4) Load 420 + 422: 8(f16vec4) FAdd 421 419 + 423: 44(ptr) AccessChain 11(buf) 42 + Store 423 422 + 424: 8(f16vec4) Load 295(constVec4) + 425: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 + 426: 8(f16vec4) AtomicFMaxEXT 425 20 21 424 + 427: 44(ptr) AccessChain 11(buf) 42 + 428: 8(f16vec4) Load 427 + 429: 8(f16vec4) FAdd 428 426 + 430: 44(ptr) AccessChain 11(buf) 42 + Store 430 429 + 431: 8(f16vec4) Load 295(constVec4) + 432: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 + 433: 8(f16vec4) AtomicFMaxEXT 432 20 21 431 + 434: 44(ptr) AccessChain 11(buf) 42 + 435: 8(f16vec4) Load 434 + 436: 8(f16vec4) FAdd 435 433 + 437: 44(ptr) AccessChain 11(buf) 42 + Store 437 436 + 438: 8(f16vec4) Load 295(constVec4) + 439: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 + 440: 8(f16vec4) AtomicFMaxEXT 439 20 21 438 + 441: 44(ptr) AccessChain 11(buf) 42 + 442: 8(f16vec4) Load 441 + 443: 8(f16vec4) FAdd 442 440 + 444: 44(ptr) AccessChain 11(buf) 42 + Store 444 443 + 445: 8(f16vec4) Load 295(constVec4) + 446: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 + 447: 8(f16vec4) AtomicFMaxEXT 446 20 21 445 + 448: 44(ptr) AccessChain 11(buf) 42 + 449: 8(f16vec4) Load 448 + 450: 8(f16vec4) FAdd 449 447 + 451: 44(ptr) AccessChain 11(buf) 42 + Store 451 450 + 452: 8(f16vec4) Load 295(constVec4) + 453: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 + 454: 8(f16vec4) AtomicFMaxEXT 453 20 21 452 + 455: 44(ptr) AccessChain 11(buf) 42 + 456: 8(f16vec4) Load 455 + 457: 8(f16vec4) FAdd 456 454 + 458: 44(ptr) AccessChain 11(buf) 42 + Store 458 457 + 459: 8(f16vec4) Load 295(constVec4) + 460: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 + 461: 8(f16vec4) AtomicFMaxEXT 460 20 21 459 + 462: 44(ptr) AccessChain 11(buf) 42 + 463: 8(f16vec4) Load 462 + 464: 8(f16vec4) FAdd 463 461 + 465: 44(ptr) AccessChain 11(buf) 42 + Store 465 464 + 466: 8(f16vec4) Load 295(constVec4) + 467: 301(ptr) ImageTexelPointer 299(fimage1Dv4) 14 21 + 468: 8(f16vec4) AtomicExchange 467 20 21 466 + 469: 44(ptr) AccessChain 11(buf) 42 + 470: 8(f16vec4) Load 469 + 471: 8(f16vec4) FAdd 470 468 + 472: 44(ptr) AccessChain 11(buf) 42 + Store 472 471 + 473: 8(f16vec4) Load 295(constVec4) + 474: 301(ptr) ImageTexelPointer 310(fimage1DArrayv4) 87 21 + 475: 8(f16vec4) AtomicExchange 474 20 21 473 + 476: 44(ptr) AccessChain 11(buf) 42 + 477: 8(f16vec4) Load 476 + 478: 8(f16vec4) FAdd 477 475 + 479: 44(ptr) AccessChain 11(buf) 42 + Store 479 478 + 480: 8(f16vec4) Load 295(constVec4) + 481: 301(ptr) ImageTexelPointer 320(fimage2Dv4) 87 21 + 482: 8(f16vec4) AtomicExchange 481 20 21 480 + 483: 44(ptr) AccessChain 11(buf) 42 + 484: 8(f16vec4) Load 483 + 485: 8(f16vec4) FAdd 484 482 + 486: 44(ptr) AccessChain 11(buf) 42 + Store 486 485 + 487: 8(f16vec4) Load 295(constVec4) + 488: 301(ptr) ImageTexelPointer 330(fimage2DArrayv4) 109 21 + 489: 8(f16vec4) AtomicExchange 488 20 21 487 + 490: 44(ptr) AccessChain 11(buf) 42 + 491: 8(f16vec4) Load 490 + 492: 8(f16vec4) FAdd 491 489 + 493: 44(ptr) AccessChain 11(buf) 42 + Store 493 492 + 494: 8(f16vec4) Load 295(constVec4) + 495: 301(ptr) ImageTexelPointer 340(fimageCubev4) 109 21 + 496: 8(f16vec4) AtomicExchange 495 20 21 494 + 497: 44(ptr) AccessChain 11(buf) 42 + 498: 8(f16vec4) Load 497 + 499: 8(f16vec4) FAdd 498 496 + 500: 44(ptr) AccessChain 11(buf) 42 + Store 500 499 + 501: 8(f16vec4) Load 295(constVec4) + 502: 301(ptr) ImageTexelPointer 350(fimageCubeArrayv4) 109 21 + 503: 8(f16vec4) AtomicExchange 502 20 21 501 + 504: 44(ptr) AccessChain 11(buf) 42 + 505: 8(f16vec4) Load 504 + 506: 8(f16vec4) FAdd 505 503 + 507: 44(ptr) AccessChain 11(buf) 42 + Store 507 506 + 508: 8(f16vec4) Load 295(constVec4) + 509: 301(ptr) ImageTexelPointer 360(fimage3Dv4) 109 21 + 510: 8(f16vec4) AtomicExchange 509 20 21 508 + 511: 44(ptr) AccessChain 11(buf) 42 + 512: 8(f16vec4) Load 511 + 513: 8(f16vec4) FAdd 512 510 + 514: 44(ptr) AccessChain 11(buf) 42 + Store 514 513 + Return + FunctionEnd diff --git a/Test/spv.nvAtomicFp16Vec.frag b/Test/spv.nvAtomicFp16Vec.frag new file mode 100644 index 0000000000..de18b1b8f0 --- /dev/null +++ b/Test/spv.nvAtomicFp16Vec.frag @@ -0,0 +1,113 @@ +#version 430 + +#extension GL_NV_shader_atomic_fp16_vector : enable +#extension GL_EXT_shader_explicit_arithmetic_types_float16 : enable + +layout(binding = 0) buffer Buffer +{ + f16vec2 dataf16v2; + f16vec4 dataf16v4; + + f16vec2 resf16v2; + f16vec4 resf16v4; + +}buf; + +layout(binding = 0, rg16f) volatile coherent uniform image1D fimage1D; +layout(binding = 1, rg16f) volatile coherent uniform image1DArray fimage1DArray; +layout(binding = 2, rg16f) volatile coherent uniform image2D fimage2D; +layout(binding = 3, rg16f) volatile coherent uniform image2DArray fimage2DArray; +layout(binding = 5, rg16f) volatile coherent uniform imageCube fimageCube; +layout(binding = 6, rg16f) volatile coherent uniform imageCubeArray fimageCubeArray; +layout(binding = 9, rg16f) volatile coherent uniform image3D fimage3D; + +layout(binding = 10, rgba16f) volatile coherent uniform image1D fimage1Dv4; +layout(binding = 11, rgba16f) volatile coherent uniform image1DArray fimage1DArrayv4; +layout(binding = 12, rgba16f) volatile coherent uniform image2D fimage2Dv4; +layout(binding = 13, rgba16f) volatile coherent uniform image2DArray fimage2DArrayv4; +layout(binding = 15, rgba16f) volatile coherent uniform imageCube fimageCubev4; +layout(binding = 16, rgba16f) volatile coherent uniform imageCubeArray fimageCubeArrayv4; +layout(binding = 19, rgba16f) volatile coherent uniform image3D fimage3Dv4; + +void main() +{ + // atomic* functions supported with f16vec2 + buf.resf16v2 = atomicAdd(buf.dataf16v2, f16vec2(3)); + buf.resf16v2 += atomicMin(buf.dataf16v2, f16vec2(3)); + buf.resf16v2 += atomicMax(buf.dataf16v2, f16vec2(3)); + buf.resf16v2 += atomicExchange(buf.dataf16v2, f16vec2(3)); + + // atomic* functions supported with f16vec4 + buf.resf16v4 = atomicAdd(buf.dataf16v4, f16vec4(3)); + buf.resf16v4 += atomicMin(buf.dataf16v4, f16vec4(3)); + buf.resf16v4 += atomicMax(buf.dataf16v4, f16vec4(3)); + buf.resf16v4 += atomicExchange(buf.dataf16v4, f16vec4(3)); + + // imageAtomic* functions supported with f16vec2 and only format supported is rg16f + f16vec2 constVec2 = f16vec2(2.0); + buf.resf16v2 += imageAtomicAdd(fimage1D, int(0), constVec2); + buf.resf16v2 += imageAtomicAdd(fimage1DArray, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicAdd(fimage2D, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicAdd(fimage2DArray, ivec3(0,0, 0), constVec2); + buf.resf16v2 += imageAtomicAdd(fimageCube, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicAdd(fimageCubeArray, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicAdd(fimage3D, ivec3(0,0,0), constVec2); + + buf.resf16v2 += imageAtomicMin(fimage1D, int(0), constVec2); + buf.resf16v2 += imageAtomicMin(fimage1DArray, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicMin(fimage2D, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicMin(fimage2DArray, ivec3(0,0, 0), constVec2); + buf.resf16v2 += imageAtomicMin(fimageCube, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicMin(fimageCubeArray, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicMin(fimage3D, ivec3(0,0,0), constVec2); + + buf.resf16v2 += imageAtomicMax(fimage1D, int(0), constVec2); + buf.resf16v2 += imageAtomicMax(fimage1DArray, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicMax(fimage2D, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicMax(fimage2DArray, ivec3(0,0, 0), constVec2); + buf.resf16v2 += imageAtomicMax(fimageCube, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicMax(fimageCubeArray, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicMax(fimage3D, ivec3(0,0,0), constVec2); + + buf.resf16v2 += imageAtomicExchange(fimage1D, int(0), constVec2); + buf.resf16v2 += imageAtomicExchange(fimage1DArray, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicExchange(fimage2D, ivec2(0,0), constVec2); + buf.resf16v2 += imageAtomicExchange(fimage2DArray, ivec3(0,0, 0), constVec2); + buf.resf16v2 += imageAtomicExchange(fimageCube, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicExchange(fimageCubeArray, ivec3(0,0,0), constVec2); + buf.resf16v2 += imageAtomicExchange(fimage3D, ivec3(0,0,0), constVec2); + + // imageAtomic* functions supported with f16vec4 and only format supported is rgba16f + f16vec4 constVec4 = f16vec4(2.0); + buf.resf16v4 += imageAtomicAdd(fimage1Dv4, int(0), constVec4); + buf.resf16v4 += imageAtomicAdd(fimage1DArrayv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicAdd(fimage2Dv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicAdd(fimage2DArrayv4, ivec3(0,0, 0), constVec4); + buf.resf16v4 += imageAtomicAdd(fimageCubev4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicAdd(fimageCubeArrayv4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicAdd(fimage3Dv4, ivec3(0,0,0), constVec4); + + buf.resf16v4 += imageAtomicMin(fimage1Dv4, int(0), constVec4); + buf.resf16v4 += imageAtomicMin(fimage1DArrayv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicMin(fimage2Dv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicMin(fimage2DArrayv4, ivec3(0,0, 0), constVec4); + buf.resf16v4 += imageAtomicMin(fimageCubev4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicMin(fimageCubeArrayv4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicMin(fimage3Dv4, ivec3(0,0,0), constVec4); + + buf.resf16v4 += imageAtomicMax(fimage1Dv4, int(0), constVec4); + buf.resf16v4 += imageAtomicMax(fimage1DArrayv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicMax(fimage2Dv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicMax(fimage2DArrayv4, ivec3(0,0, 0), constVec4); + buf.resf16v4 += imageAtomicMax(fimageCubev4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicMax(fimageCubeArrayv4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicMax(fimage3Dv4, ivec3(0,0,0), constVec4); + + buf.resf16v4 += imageAtomicExchange(fimage1Dv4, int(0), constVec4); + buf.resf16v4 += imageAtomicExchange(fimage1DArrayv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicExchange(fimage2Dv4, ivec2(0,0), constVec4); + buf.resf16v4 += imageAtomicExchange(fimage2DArrayv4, ivec3(0,0, 0), constVec4); + buf.resf16v4 += imageAtomicExchange(fimageCubev4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicExchange(fimageCubeArrayv4, ivec3(0,0,0), constVec4); + buf.resf16v4 += imageAtomicExchange(fimage3Dv4, ivec3(0,0,0), constVec4); +} diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index e74f9e7f70..054cf1d681 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -1465,6 +1465,20 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "\n"); } + // NV_shader_atomic_fp16_vector + if (profile != EEsProfile && version >= 430) { + commonBuiltins.append( + "f16vec2 atomicAdd(coherent volatile inout f16vec2, f16vec2);" + "f16vec4 atomicAdd(coherent volatile inout f16vec4, f16vec4);" + "f16vec2 atomicMin(coherent volatile inout f16vec2, f16vec2);" + "f16vec4 atomicMin(coherent volatile inout f16vec4, f16vec4);" + "f16vec2 atomicMax(coherent volatile inout f16vec2, f16vec2);" + "f16vec4 atomicMax(coherent volatile inout f16vec4, f16vec4);" + "f16vec2 atomicExchange(coherent volatile inout f16vec2, f16vec2);" + "f16vec4 atomicExchange(coherent volatile inout f16vec4, f16vec4);" + "\n"); + } + if ((profile == EEsProfile && version >= 300) || (profile != EEsProfile && version >= 150)) { // GL_ARB_shader_bit_encoding commonBuiltins.append( @@ -6678,6 +6692,34 @@ void TBuiltIns::addImageFunctions(TSampler sampler, const TString& typeName, int commonBuiltins.append(imageParams); commonBuiltins.append(", float);\n"); } + + // GL_NV_shader_atomic_fp16_vector + if (profile != EEsProfile && version >= 430) { + const int numFp16Builtins = 4; + const char* atomicFp16Func[numFp16Builtins] = { + " imageAtomicAdd(volatile coherent ", + " imageAtomicMin(volatile coherent ", + " imageAtomicMax(volatile coherent ", + " imageAtomicExchange(volatile coherent " + }; + const int numFp16DataTypes = 2; + const char* atomicFp16DataTypes[numFp16DataTypes] = { + "f16vec2", + "f16vec4" + }; + // Loop twice to add prototypes with/without scope/semantics + for (int j = 0; j < numFp16DataTypes; ++j) { + for (int i = 0; i < numFp16Builtins; ++i) { + commonBuiltins.append(atomicFp16DataTypes[j]); + commonBuiltins.append(atomicFp16Func[i]); + commonBuiltins.append(imageParams); + commonBuiltins.append(", "); + commonBuiltins.append(atomicFp16DataTypes[j]); + commonBuiltins.append(");\n"); + } + } + } + if (profile != EEsProfile && version >= 450) { commonBuiltins.append("float imageAtomicAdd(volatile coherent "); commonBuiltins.append(imageParams); diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 98148100a3..0462bf1ba8 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2524,6 +2524,17 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan error(loc, "only supported on image with format r64i", fnCandidate.getName().c_str(), ""); else if (callNode.getType().getBasicType() == EbtUint64 && imageType.getQualifier().getFormat() != ElfR64ui) error(loc, "only supported on image with format r64ui", fnCandidate.getName().c_str(), ""); + } else if(callNode.getType().getBasicType() == EbtFloat16 && + ((callNode.getType().getVectorSize() == 2 && arg0->getType().getQualifier().getFormat() == ElfRg16f) || + (callNode.getType().getVectorSize() == 4 && arg0->getType().getQualifier().getFormat() == ElfRgba16f))) { + if ((fnCandidate.getName().compare(0, 14, "imageAtomicAdd") == 0) || + (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") == 0) || + (fnCandidate.getName().compare(0, 19, "imageAtomicMin") == 0) || + (fnCandidate.getName().compare(0, 19, "imageAtomicMax") == 0)) { + requireExtensions(loc, 1, &E_GL_NV_shader_atomic_fp16_vector, fnCandidate.getName().c_str()); + } else { + error(loc, "f16vec2/4 operation not supported on: ", fnCandidate.getName().c_str(), ""); + } } else if (imageType.getSampler().type == EbtFloat) { if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") == 0) { // imageAtomicExchange doesn't require an extension @@ -2582,6 +2593,11 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan const char* const extensions[2] = { E_GL_NV_shader_atomic_int64, E_GL_EXT_shader_atomic_int64 }; requireExtensions(loc, 2, extensions, fnCandidate.getName().c_str()); + } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange || + callNode.getOp() == EOpAtomicMin || callNode.getOp() == EOpAtomicMax) && + arg0->getType().getBasicType() == EbtFloat16 && + (arg0->getType().getVectorSize() == 2 || arg0->getType().getVectorSize() == 4 )) { + requireExtensions(loc, 1, &E_GL_NV_shader_atomic_fp16_vector, fnCandidate.getName().c_str()); } else if ((callNode.getOp() == EOpAtomicAdd || callNode.getOp() == EOpAtomicExchange) && (arg0->getType().getBasicType() == EbtFloat || arg0->getType().getBasicType() == EbtDouble)) { diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 37d46ed6f5..978e25a188 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -305,6 +305,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_NV_integer_cooperative_matrix] = EBhDisable; extensionBehavior[E_GL_NV_shader_invocation_reorder] = EBhDisable; extensionBehavior[E_GL_NV_displacement_micromap] = EBhDisable; + extensionBehavior[E_GL_NV_shader_atomic_fp16_vector] = EBhDisable; // ARM extensionBehavior[E_GL_ARM_shader_core_builtins] = EBhDisable; diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 2e420b5ab7..70240ffb56 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -278,6 +278,7 @@ const char* const E_GL_NV_integer_cooperative_matrix = "GL_NV_integer const char* const E_GL_NV_shader_invocation_reorder = "GL_NV_shader_invocation_reorder"; const char* const E_GL_EXT_ray_tracing_position_fetch = "GL_EXT_ray_tracing_position_fetch"; const char* const E_GL_NV_displacement_micromap = "GL_NV_displacement_micromap"; +const char* const E_GL_NV_shader_atomic_fp16_vector = "GL_NV_shader_atomic_fp16_vector"; // ARM const char* const E_GL_ARM_shader_core_builtins = "GL_ARM_shader_core_builtins"; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4754f659ff..f6ddf138ca 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -453,6 +453,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.nonuniform4.frag", "spv.nonuniform5.frag", "spv.noWorkgroup.comp", + "spv.nvAtomicFp16Vec.frag", "spv.nullInit.comp", "spv.offsets.frag", "spv.Operations.frag", diff --git a/known_good.json b/known_good.json index 0c172a4162..fe4ad29ecf 100644 --- a/known_good.json +++ b/known_good.json @@ -1,19 +1,19 @@ { "commits" : [ { - "name" : "spirv-tools", - "site" : "github", - "subrepo" : "KhronosGroup/SPIRV-Tools", - "subdir" : "External/spirv-tools", - "commit": "b951948eaa75b51466eaa22e8a89223966f300e4" - }, - { - "name" : "spirv-tools/external/spirv-headers", - "site" : "github", - "subrepo" : "KhronosGroup/SPIRV-Headers", - "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "5aa1dd8a11182ea9a6a0eabd6a9edc639d5dbecd" - }, + "name" : "spirv-tools", + "site" : "github", + "subrepo" : "KhronosGroup/SPIRV-Tools", + "subdir" : "External/spirv-tools", + "commit": "b0a5c4ac12b742086ffb16e2ba0ad4903450ae1d" + }, + { + "name" : "spirv-tools/external/spirv-headers", + "site" : "github", + "subrepo" : "KhronosGroup/SPIRV-Headers", + "subdir" : "External/spirv-tools/external/spirv-headers", + "commit" : "05cc486580771e4fa7ddc89f5c9ee1e97382689a" + }, { "name": "googletest", "site": "github", From 114dae911484cc3e593c85abb0e4af143d6c569e Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Wed, 14 Feb 2024 17:02:45 -0600 Subject: [PATCH 413/594] Add a string 'StartsWith' helper function --- glslang/Include/Common.h | 5 +++++ glslang/MachineIndependent/ParseHelper.cpp | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index af7dfe625d..d1bd13b575 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -159,6 +159,11 @@ template inline T* NewPoolObject(T, int instances) return new(GetThreadPoolAllocator().allocate(instances * sizeof(T))) T[instances]; } +inline bool StartsWith(TString const &str, const char *prefix) +{ + return str.compare(0, strlen(prefix), prefix) == 0; +} + // // Pool allocator versions of vectors, lists, and maps // diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 0462bf1ba8..ac270c648b 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -2527,23 +2527,23 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan } else if(callNode.getType().getBasicType() == EbtFloat16 && ((callNode.getType().getVectorSize() == 2 && arg0->getType().getQualifier().getFormat() == ElfRg16f) || (callNode.getType().getVectorSize() == 4 && arg0->getType().getQualifier().getFormat() == ElfRgba16f))) { - if ((fnCandidate.getName().compare(0, 14, "imageAtomicAdd") == 0) || - (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") == 0) || - (fnCandidate.getName().compare(0, 19, "imageAtomicMin") == 0) || - (fnCandidate.getName().compare(0, 19, "imageAtomicMax") == 0)) { + if (StartsWith(fnCandidate.getName(), "imageAtomicAdd") || + StartsWith(fnCandidate.getName(), "imageAtomicExchange") || + StartsWith(fnCandidate.getName(), "imageAtomicMin") || + StartsWith(fnCandidate.getName(), "imageAtomicMax")) { requireExtensions(loc, 1, &E_GL_NV_shader_atomic_fp16_vector, fnCandidate.getName().c_str()); } else { error(loc, "f16vec2/4 operation not supported on: ", fnCandidate.getName().c_str(), ""); } } else if (imageType.getSampler().type == EbtFloat) { - if (fnCandidate.getName().compare(0, 19, "imageAtomicExchange") == 0) { + if (StartsWith(fnCandidate.getName(), "imageAtomicExchange")) { // imageAtomicExchange doesn't require an extension - } else if ((fnCandidate.getName().compare(0, 14, "imageAtomicAdd") == 0) || - (fnCandidate.getName().compare(0, 15, "imageAtomicLoad") == 0) || - (fnCandidate.getName().compare(0, 16, "imageAtomicStore") == 0)) { + } else if (StartsWith(fnCandidate.getName(), "imageAtomicAdd") || + StartsWith(fnCandidate.getName(), "imageAtomicLoad") || + StartsWith(fnCandidate.getName(), "imageAtomicStore")) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float, fnCandidate.getName().c_str()); - } else if ((fnCandidate.getName().compare(0, 14, "imageAtomicMin") == 0) || - (fnCandidate.getName().compare(0, 14, "imageAtomicMax") == 0)) { + } else if (StartsWith(fnCandidate.getName(), "imageAtomicMin") || + StartsWith(fnCandidate.getName(), "imageAtomicMax")) { requireExtensions(loc, 1, &E_GL_EXT_shader_atomic_float2, fnCandidate.getName().c_str()); } else { error(loc, "only supported on integer images", fnCandidate.getName().c_str(), ""); From 7a2a1623d808495c0889ea1d13bcba94c32e68ca Mon Sep 17 00:00:00 2001 From: Sajjad Mirza <90873047+sajjadmirzanv@users.noreply.github.com> Date: Wed, 14 Feb 2024 16:43:02 -0800 Subject: [PATCH 414/594] Emit debug info for accelerationStructure and rayQuery variables. (#3502) * Add debug info for accelerationStructure and rayQuery variables. * Add test case for accelerationStructure and rayQuery --- SPIRV/SpvBuilder.cpp | 21 +-- SPIRV/SpvBuilder.h | 2 - .../spv.debuginfo.rt_types.glsl.rgen.out | 167 ++++++++++++++++++ Test/spv.debuginfo.rt_types.glsl.rgen | 23 +++ gtests/Spv.FromFile.cpp | 1 + 5 files changed, 200 insertions(+), 14 deletions(-) create mode 100644 Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out create mode 100644 Test/spv.debuginfo.rt_types.glsl.rgen diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 694413ef31..062a7c79b6 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1176,6 +1176,10 @@ Id Builder::makeAccelerationStructureType() groupedTypes[OpTypeAccelerationStructureKHR].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) { + spv::Id debugType = makeCompositeDebugType({}, "accelerationStructure", NonSemanticShaderDebugInfo100Structure, true); + debugId[type->getResultId()] = debugType; + } } else { type = groupedTypes[OpTypeAccelerationStructureKHR].back(); } @@ -1191,6 +1195,10 @@ Id Builder::makeRayQueryType() groupedTypes[OpTypeRayQueryKHR].push_back(type); constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) { + spv::Id debugType = makeCompositeDebugType({}, "rayQuery", NonSemanticShaderDebugInfo100Structure, true); + debugId[type->getResultId()] = debugType; + } } else { type = groupedTypes[OpTypeRayQueryKHR].back(); } @@ -1476,17 +1484,6 @@ bool Builder::isSpecConstantOpCode(Op opcode) const } } -bool Builder::isRayTracingOpCode(Op opcode) const -{ - switch (opcode) { - case OpTypeAccelerationStructureKHR: - case OpTypeRayQueryKHR: - return true; - default: - return false; - } -} - Id Builder::makeNullConstant(Id typeId) { Instruction* constant; @@ -2368,7 +2365,7 @@ Id Builder::createVariable(Decoration precision, StorageClass storageClass, Id t constantsTypesGlobals.push_back(std::unique_ptr(inst)); module.mapInstruction(inst); - if (emitNonSemanticShaderDebugInfo && !isRayTracingOpCode(getOpCode(type))) + if (emitNonSemanticShaderDebugInfo) { auto const debugResultId = createDebugGlobalVariable(debugId[type], name, inst->getResultId()); debugId[inst->getResultId()] = debugResultId; diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 17949e4069..a65a98e337 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -326,8 +326,6 @@ class Builder { // See if a resultId is valid for use as an initializer. bool isValidInitializer(Id resultId) const { return isConstant(resultId) || isGlobalVariable(resultId); } - bool isRayTracingOpCode(Op opcode) const; - int getScalarTypeWidth(Id typeId) const { Id scalarTypeId = getScalarTypeId(typeId); diff --git a/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out new file mode 100644 index 0000000000..439fa06508 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out @@ -0,0 +1,167 @@ +spv.debuginfo.rt_types.glsl.rgen +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 122 + + Capability RayQueryKHR + Capability RayTracingNV + Extension "SPV_KHR_non_semantic_info" + Extension "SPV_KHR_ray_query" + Extension "SPV_NV_ray_tracing" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint RayGenerationKHR 14 "main" + 2: String "" + 8: String "uint" + 16: String "main" + 19: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +" + 33: String "rayFlags" + 40: String "float" + 46: String "tMin" + 53: String "tMax" + 60: String "rayQuery" + 62: String "@rayQuery" + 68: String "localRayQuery" + 72: String "accelerationStructure" + 73: String "@accelerationStructure" + 78: String "acc0" + 87: String "origin" + 90: String "block" + 97: String "int" + 110: String "bool" + SourceExtension "GL_EXT_ray_query" + SourceExtension "GL_NV_ray_tracing" + Name 14 "main" + Name 31 "rayFlags" + Name 44 "tMin" + Name 51 "tMax" + Name 66 "localRayQuery" + Name 76 "acc0" + Name 85 "block" + MemberName 85(block) 0 "dir" + MemberName 85(block) 1 "origin" + Name 94 "" + Decorate 76(acc0) DescriptorSet 0 + Decorate 76(acc0) Binding 0 + MemberDecorate 85(block) 0 Offset 0 + MemberDecorate 85(block) 1 Offset 16 + Decorate 85(block) BufferBlock + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 19 + 20: 7(int) Constant 12 + 22: 7(int) Constant 1 + 23: 7(int) Constant 4 + 24: 7(int) Constant 2 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 + 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 + 28: TypePointer Function 7(int) + 29: 7(int) Constant 7 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 29 12 + 34: 7(int) Constant 15 + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 33 9 18 34 12 17 23 + 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 38: 7(int) Constant 9 + 39: TypeFloat 32 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 40 10 13 12 + 42: TypePointer Function 39(float) + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 29 12 + 47: 7(int) Constant 16 + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 46 41 18 47 12 17 23 + 50: 39(float) Constant 0 + 54: 7(int) Constant 17 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 41 18 54 12 17 23 + 57: 39(float) Constant 1148846080 + 58: TypeRayQueryKHR + 61: 7(int) Constant 18 + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 22 18 61 12 21 62 63 13 + 64: TypePointer Private 58 + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 11 12 +66(localRayQuery): 64(ptr) Variable Private + 69: 7(int) Constant 8 + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 68 59 18 61 12 21 68 66(localRayQuery) 69 + 70: TypeAccelerationStructureKHR + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 72 22 18 61 12 21 73 63 13 + 74: TypePointer UniformConstant 70 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 71 12 12 + 76(acc0): 74(ptr) Variable UniformConstant + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 71 18 61 12 21 78 76(acc0) 69 + 82: 7(int) Constant 255 + 83: TypeVector 39(float) 3 + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 13 + 85(block): TypeStruct 83(fvec3) 83(fvec3) + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 84 18 38 29 12 12 13 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 84 18 38 29 12 12 13 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 22 18 61 12 21 90 12 13 86 88 + 91: TypePointer ShaderRecordBufferKHR 85(block) + 92: 7(int) Constant 5343 + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 92 12 + 94: 91(ptr) Variable ShaderRecordBufferKHR + 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 89 18 61 12 21 2 94 69 + 96: TypeInt 32 1 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 10 23 12 + 99: 96(int) Constant 1 + 100: TypePointer ShaderRecordBufferKHR 83(fvec3) + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 92 12 + 105: 96(int) Constant 0 + 109: TypeBool + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 110 10 24 12 + 114: 7(int) Constant 19 + 120: 7(int) Constant 21 + 14(main): 4 Function None 5 + 15: Label + 31(rayFlags): 28(ptr) Variable Function + 44(tMin): 42(ptr) Variable Function + 51(tMax): 42(ptr) Variable Function + 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 + 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) + 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 34 34 12 12 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 32 31(rayFlags) 36 + Store 31(rayFlags) 38 + 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 47 47 12 12 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 45 44(tMin) 36 + Store 44(tMin) 50 + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 54 54 12 12 + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 51(tMax) 36 + Store 51(tMax) 57 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 61 61 12 12 + 79: 70 Load 76(acc0) + 81: 7(int) Load 31(rayFlags) + 102: 100(ptr) AccessChain 94 99 + 103: 83(fvec3) Load 102 + 104: 39(float) Load 44(tMin) + 106: 100(ptr) AccessChain 94 105 + 107: 83(fvec3) Load 106 + 108: 39(float) Load 51(tMax) + RayQueryInitializeKHR 66(localRayQuery) 79 81 82 103 104 107 108 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 114 114 12 12 + 112: 109(bool) RayQueryProceedKHR 66(localRayQuery) + 115: 109(bool) LogicalNot 112 + SelectionMerge 117 None + BranchConditional 115 116 117 + 116: Label + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 120 120 12 12 + RayQueryTerminateKHR 66(localRayQuery) + Branch 117 + 117: Label + 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + Return + FunctionEnd diff --git a/Test/spv.debuginfo.rt_types.glsl.rgen b/Test/spv.debuginfo.rt_types.glsl.rgen new file mode 100644 index 0000000000..8d5638fd8c --- /dev/null +++ b/Test/spv.debuginfo.rt_types.glsl.rgen @@ -0,0 +1,23 @@ +#version 460 +#extension GL_NV_ray_tracing : enable +#extension GL_EXT_ray_query : enable +layout(binding = 0, set = 0) uniform accelerationStructureEXT acc0; + +layout(shaderRecordNV) buffer block +{ + vec3 dir; + vec3 origin; +}; + +void main() +{ + rayQueryEXT localRayQuery; + uint rayFlags = gl_RayFlagsOpaqueEXT | gl_RayFlagsSkipClosestHitShaderEXT; + float tMin = 0.f; + float tMax = 1000.f; + rayQueryInitializeEXT(localRayQuery, acc0, rayFlags, 0xFF , origin, tMin, dir, tMax); + if (!rayQueryProceedEXT(localRayQuery)) + { + rayQueryTerminateEXT(localRayQuery); + } +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index f6ddf138ca..e5736ea4bf 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -946,6 +946,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.debuginfo.bufferref.glsl.frag", "spv.debuginfo.const_params.glsl.comp", "spv.debuginfo.scalar_types.glsl.frag", + "spv.debuginfo.rt_types.glsl.rgen", })), FileNameAsCustomTestSuffix ); From d84255296c3d19642515237c8d016bb685bd0bed Mon Sep 17 00:00:00 2001 From: Bjorn Date: Wed, 14 Feb 2024 16:44:34 -0800 Subject: [PATCH 415/594] Clear spirv vector before generating spirv output This makes spir-v generation idempotent. --- SPIRV/CInterface/spirv_c_interface.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index f421ea5a8e..2ba819b81c 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -95,6 +95,8 @@ GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_ const glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); + program->spirv.clear(); + glslang::GlslangToSpv(*intermediate, program->spirv, &logger, reinterpret_cast(spv_options)); program->loggerMessages = logger.getAllMessages(); From 6340ba901a1ed6b899dbae8ebbeb7f5a53a85c06 Mon Sep 17 00:00:00 2001 From: Chris Djali Date: Mon, 19 Feb 2024 16:26:07 +0000 Subject: [PATCH 416/594] Document that the only supported dependency commits are the ones in known_good.json --- CMakeLists.txt | 2 +- README.md | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e6feafc3a5..61edc7b6e5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -283,7 +283,7 @@ if(BUILD_EXTERNAL AND IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/External) add_subdirectory(External) endif() -option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt") +option(ALLOW_EXTERNAL_SPIRV_TOOLS "Allows to build against installed SPIRV-Tools-opt. This is unsupported if the commit isn't the one in known_good.json") if(NOT TARGET SPIRV-Tools-opt) if(ALLOW_EXTERNAL_SPIRV_TOOLS) # Look for external SPIR-V Tools build, if not building in-tree diff --git a/README.md b/README.md index 443881083a..5493ff9080 100644 --- a/README.md +++ b/README.md @@ -264,6 +264,9 @@ Test](gtests/), one is the [`runtests` script](Test/runtests). The former runs unit tests and single-shader single-threaded integration tests, while the latter runs multiple-shader linking tests and multi-threaded tests. +Tests may erroneously fail or pass if using `ALLOW_EXTERNAL_SPIRV_TOOLS` with +any commit other than the one specified in `known_good.json`. + ### Running tests The [`runtests` script](Test/runtests) requires compiled binaries to be From fb23503f12fda797389a92b8cc3d715dabfbd0fa Mon Sep 17 00:00:00 2001 From: AnyOldName3 Date: Thu, 15 Feb 2024 18:58:13 +0000 Subject: [PATCH 417/594] -Wmissing-field-initializers fixes Like with the last few PRs from me, it fixes a warning that's commonly enabled in downstream projects that might want to consume glslang via FetchContent or equivalent. It doesn't actually enable the warning, but that might be desirable. I think I found a bug in the Spv.FromFile.cpp tests that would have been prevented had this warning been enabled all along. I had to guess the value for the missing field, so went for the most common one in the list. The only test case that used a different value before had an RWTexture1D, so if baseImageBinding is meaning the same kind of image as image load store in OpenGL, it would make sense that that would be the only one to need a non-zero value for the binding. I'm a little concerned that the test wasn't previously failing with the incorrectly-assigned fields as it implies they don't make any difference, so the test might be too permissive. --- glslang/MachineIndependent/ParseHelper.cpp | 6 +++--- glslang/MachineIndependent/glslang.y | 10 +++++----- glslang/MachineIndependent/glslang_tab.cpp | 10 +++++----- glslang/MachineIndependent/iomapper.cpp | 4 ++-- gtests/Spv.FromFile.cpp | 2 +- gtests/VkRelaxed.FromFile.cpp | 10 +++++----- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index ac270c648b..5b0542da55 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7336,7 +7336,7 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T realFunc.addParameter(TParameter().copyParam((*function)[i])); } - TParameter tmpP = { nullptr, &uintType }; + TParameter tmpP = { nullptr, &uintType, {} }; realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(1, loc, true)); @@ -7353,7 +7353,7 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T realFunc.addParameter(TParameter().copyParam((*function)[i])); } - TParameter tmpP = { nullptr, &uintType }; + TParameter tmpP = { nullptr, &uintType, {} }; realFunc.addParameter(TParameter().copyParam(tmpP)); arguments = intermediate.growAggregate(arguments, intermediate.addConstantUnion(-1, loc, true)); @@ -7676,7 +7676,7 @@ TIntermNode* TParseContext::vkRelaxedRemapFunctionArgument(const TSourceLoc& loc AccessChainTraverser accessChainTraverser{}; intermTyped->traverse(&accessChainTraverser); - TParameter param = { NewPoolTString(accessChainTraverser.path.c_str()), new TType }; + TParameter param = { NewPoolTString(accessChainTraverser.path.c_str()), new TType, {} }; param.type->shallowCopy(intermTyped->getType()); std::vector newParams = {}; diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 999dec05b1..0f34e0729c 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -494,7 +494,7 @@ function_call_header_with_parameters } else { - TParameter param = { 0, new TType }; + TParameter param = { 0, new TType, {} }; param.type->shallowCopy($2->getType()); $1.function->addParameter(param); @@ -513,7 +513,7 @@ function_call_header_with_parameters } else { - TParameter param = { 0, new TType }; + TParameter param = { 0, new TType, {} }; param.type->shallowCopy($3->getType()); $1.function->addParameter(param); @@ -1068,7 +1068,7 @@ parameter_declarator } parseContext.reservedErrorCheck($2.loc, *$2.string); - TParameter param = {$2.string, new TType($1)}; + TParameter param = {$2.string, new TType($1), {}}; $$.loc = $2.loc; $$.param = param; } @@ -1086,7 +1086,7 @@ parameter_declarator parseContext.arraySizeRequiredCheck($3.loc, *$3.arraySizes); parseContext.reservedErrorCheck($2.loc, *$2.string); - TParameter param = { $2.string, type }; + TParameter param = { $2.string, type, {} }; $$.loc = $2.loc; $$.param = param; @@ -1139,7 +1139,7 @@ parameter_declaration parameter_type_specifier : type_specifier { - TParameter param = { 0, new TType($1) }; + TParameter param = { 0, new TType($1), {} }; $$.param = param; if ($1.arraySizes) parseContext.arraySizeRequiredCheck($1.loc, *$1.arraySizes); diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index cdc0c17ca5..3f09e89484 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -5467,7 +5467,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else { - TParameter param = { 0, new TType }; + TParameter param = { 0, new TType, {} }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-1].interm).function->addParameter(param); @@ -5491,7 +5491,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else { - TParameter param = { 0, new TType }; + TParameter param = { 0, new TType, {} }; param.type->shallowCopy((yyvsp[0].interm.intermTypedNode)->getType()); (yyvsp[-2].interm).function->addParameter(param); @@ -6388,7 +6388,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.reservedErrorCheck((yyvsp[0].lex).loc, *(yyvsp[0].lex).string); - TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type))}; + TParameter param = {(yyvsp[0].lex).string, new TType((yyvsp[-1].interm.type)), {}}; (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } @@ -6411,7 +6411,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeRequiredCheck((yyvsp[0].interm).loc, *(yyvsp[0].interm).arraySizes); parseContext.reservedErrorCheck((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string); - TParameter param = { (yyvsp[-1].lex).string, type }; + TParameter param = { (yyvsp[-1].lex).string, type, {} }; (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; @@ -6477,7 +6477,7 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 124: /* parameter_type_specifier: type_specifier */ #line 1141 "MachineIndependent/glslang.y" { - TParameter param = { 0, new TType((yyvsp[0].interm.type)) }; + TParameter param = { 0, new TType((yyvsp[0].interm.type)), {} }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index ed853256b1..5e94a9e8de 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -85,7 +85,7 @@ class TVarGatherTraverser : public TLiveTraverser { addGlobalReference(base->getAccessName()); if (target) { - TVarEntryInfo ent = {base->getId(), base, ! traverseAll}; + TVarEntryInfo ent = {base->getId(), base, ! traverseAll, {}, {}, {}, {}, {}, {}, {}}; ent.stage = intermediate.getStage(); TVarLiveMap::iterator at = target->find( ent.symbol->getAccessName()); // std::lower_bound(target->begin(), target->end(), ent, TVarEntryInfo::TOrderById()); @@ -124,7 +124,7 @@ class TVarSetTraverser : public TLiveTraverser else return; - TVarEntryInfo ent = { base->getId() }; + TVarEntryInfo ent = { base->getId(), {}, {}, {}, {}, {}, {}, {}, {}, {} }; // Fix a defect, when block has no instance name, we need to find its block name TVarLiveMap::const_iterator at = source->find(base->getAccessName()); if (at == source->end()) diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index e5736ea4bf..4e1e09fe03 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -763,7 +763,7 @@ INSTANTIATE_TEST_SUITE_P( { "spv.register.autoassign.rangetest.frag", "main", glslang::TQualifier::layoutBindingEnd-2, glslang::TQualifier::layoutBindingEnd+5, - 20, 30, true, false }, + 0, 20, 30, true, false }, }), FileNameAsCustomTestSuffixIoMap ); diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp index 67e5501714..483d7c7fdb 100644 --- a/gtests/VkRelaxed.FromFile.cpp +++ b/gtests/VkRelaxed.FromFile.cpp @@ -290,11 +290,11 @@ TEST_P(VulkanRelaxedTest, FromFile) INSTANTIATE_TEST_SUITE_P( Glsl, VulkanRelaxedTest, ::testing::ValuesIn(std::vector({ - {{"vk.relaxed.frag"}}, - {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}}, - {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}}, - {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}}, - {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}}, + {{"vk.relaxed.frag"}, {}}, + {{"vk.relaxed.link1.frag", "vk.relaxed.link2.frag"}, {}}, + {{"vk.relaxed.stagelink.0.0.vert", "vk.relaxed.stagelink.0.1.vert", "vk.relaxed.stagelink.0.2.vert", "vk.relaxed.stagelink.0.0.frag", "vk.relaxed.stagelink.0.1.frag", "vk.relaxed.stagelink.0.2.frag"}, {}}, + {{"vk.relaxed.stagelink.vert", "vk.relaxed.stagelink.frag"}, {}}, + {{"vk.relaxed.errorcheck.vert", "vk.relaxed.errorcheck.frag"}, {}}, {{"vk.relaxed.changeSet.vert", "vk.relaxed.changeSet.frag" }, { {"0"}, {"1"} } }, })) ); From b8421d7fccb38692fc18cb870bab7d304de170f1 Mon Sep 17 00:00:00 2001 From: AnyOldName3 Date: Thu, 15 Feb 2024 18:15:04 +0000 Subject: [PATCH 418/594] Quote paths in runtest This means it won't die if the build path contains spaces. --- Test/runtests | 314 +++++++++++++++++++++++++------------------------- 1 file changed, 157 insertions(+), 157 deletions(-) diff --git a/Test/runtests b/Test/runtests index 4ab2280bcd..d3c1646e43 100755 --- a/Test/runtests +++ b/Test/runtests @@ -10,15 +10,15 @@ BASEDIR=baseResults EXE=${2:-../build/install/bin/glslang} REMAPEXE=${3:-../build/install/bin/spirv-remap} HASERROR=0 -mkdir -p $TARGETDIR +mkdir -p "$TARGETDIR" -LIBPATH="$(cd "$(dirname "$(dirname $EXE)")" && pwd)/lib" +LIBPATH="$(cd "$(dirname "$(dirname "$EXE")")" && pwd)/lib" if [ -d "${LIBPATH}" ]; then export LD_LIBRARY_PATH="${LIBPATH}:${LD_LIBRARY_PATH}" fi function run { - $EXE "$@" + "$EXE" "$@" result=$? case "$result" in [0-6]) # Valid success and error codes @@ -35,8 +35,8 @@ if [ -a localtestlist ] while read t; do echo Running $t... b=`basename $t` - run -i -l $t > $TARGETDIR/$b.out - diff -b $BASEDIR/$b.out $TARGETDIR/$b.out || HASERROR=1 + run -i -l $t > "$TARGETDIR/$b.out" + diff -b $BASEDIR/$b.out "$TARGETDIR/$b.out" || HASERROR=1 done < localtestlist fi @@ -46,64 +46,64 @@ rm -f comp.spv frag.spv geom.spv tesc.spv tese.spv vert.spv # special tests # -run badMacroArgs.frag > $TARGETDIR/badMacroArgs.frag.out -diff -b $BASEDIR/badMacroArgs.frag.out $TARGETDIR/badMacroArgs.frag.out || HASERROR=1 +run badMacroArgs.frag > "$TARGETDIR/badMacroArgs.frag.out" +diff -b $BASEDIR/badMacroArgs.frag.out "$TARGETDIR/badMacroArgs.frag.out" || HASERROR=1 -run gl_samplemask_array_size.frag gl_MaxSamples_32.conf -i > $TARGETDIR/gl_samplemask_array_size_32.frag.out -diff -b $BASEDIR/gl_samplemask_array_size_32.frag.out $TARGETDIR/gl_samplemask_array_size_32.frag.out || HASERROR=1 -run gl_samplemask_array_size.frag gl_MaxSamples_64.conf -i > $TARGETDIR/gl_samplemask_array_size_64.frag.out -diff -b $BASEDIR/gl_samplemask_array_size_64.frag.out $TARGETDIR/gl_samplemask_array_size_64.frag.out || HASERROR=1 +run gl_samplemask_array_size.frag gl_MaxSamples_32.conf -i > "$TARGETDIR/gl_samplemask_array_size_32.frag.out" +diff -b $BASEDIR/gl_samplemask_array_size_32.frag.out "$TARGETDIR/gl_samplemask_array_size_32.frag.out" || HASERROR=1 +run gl_samplemask_array_size.frag gl_MaxSamples_64.conf -i > "$TARGETDIR/gl_samplemask_array_size_64.frag.out" +diff -b $BASEDIR/gl_samplemask_array_size_64.frag.out "$TARGETDIR/gl_samplemask_array_size_64.frag.out" || HASERROR=1 # # reflection tests # echo Running reflection... -run -l -q -C reflection.vert > $TARGETDIR/reflection.vert.out -diff -b $BASEDIR/reflection.vert.out $TARGETDIR/reflection.vert.out || HASERROR=1 -run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.options.vert > $TARGETDIR/reflection.options.vert.out -diff -b $BASEDIR/reflection.options.vert.out $TARGETDIR/reflection.options.vert.out || HASERROR=1 -run -l -q -C reflection.frag > $TARGETDIR/reflection.frag.out -diff -b $BASEDIR/reflection.frag.out $TARGETDIR/reflection.frag.out || HASERROR=1 -run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.frag > $TARGETDIR/reflection.options.frag.out -diff -b $BASEDIR/reflection.options.frag.out $TARGETDIR/reflection.options.frag.out || HASERROR=1 -run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.options.geom > $TARGETDIR/reflection.options.geom.out -diff -b $BASEDIR/reflection.options.geom.out $TARGETDIR/reflection.options.geom.out || HASERROR=1 -run -l -q -C reflection.linked.vert reflection.linked.frag > $TARGETDIR/reflection.linked.out -diff -b $BASEDIR/reflection.linked.out $TARGETDIR/reflection.linked.out || HASERROR=1 -run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.linked.vert reflection.linked.frag > $TARGETDIR/reflection.linked.options.out -diff -b $BASEDIR/reflection.linked.options.out $TARGETDIR/reflection.linked.options.out || HASERROR=1 -run -D -Od -e flizv -l -q -C -V -Od hlsl.reflection.vert > $TARGETDIR/hlsl.reflection.vert.out -diff -b $BASEDIR/hlsl.reflection.vert.out $TARGETDIR/hlsl.reflection.vert.out || HASERROR=1 -run -D -Od -e main -l -q -C -V -Od hlsl.reflection.binding.frag > $TARGETDIR/hlsl.reflection.binding.frag.out -diff -b $BASEDIR/hlsl.reflection.binding.frag.out $TARGETDIR/hlsl.reflection.binding.frag.out || HASERROR=1 -run -D -Od -e main -l -q --hlsl-iomap --auto-map-bindings --stb 10 --sbb 20 --ssb 30 --suavb 40 --scb 50 -D -V -e main -Od hlsl.automap.frag > $TARGETDIR/hlsl.automap.frag.out -diff -b $BASEDIR/hlsl.automap.frag.out $TARGETDIR/hlsl.automap.frag.out || HASERROR=1 +run -l -q -C reflection.vert > "$TARGETDIR/reflection.vert.out" +diff -b $BASEDIR/reflection.vert.out "$TARGETDIR/reflection.vert.out" || HASERROR=1 +run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.options.vert > "$TARGETDIR/reflection.options.vert.out" +diff -b $BASEDIR/reflection.options.vert.out "$TARGETDIR/reflection.options.vert.out" || HASERROR=1 +run -l -q -C reflection.frag > "$TARGETDIR/reflection.frag.out" +diff -b $BASEDIR/reflection.frag.out "$TARGETDIR/reflection.frag.out" || HASERROR=1 +run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.frag > "$TARGETDIR/reflection.options.frag.out" +diff -b $BASEDIR/reflection.options.frag.out "$TARGETDIR/reflection.options.frag.out" || HASERROR=1 +run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.options.geom > "$TARGETDIR/reflection.options.geom.out" +diff -b $BASEDIR/reflection.options.geom.out "$TARGETDIR/reflection.options.geom.out" || HASERROR=1 +run -l -q -C reflection.linked.vert reflection.linked.frag > "$TARGETDIR/reflection.linked.out" +diff -b $BASEDIR/reflection.linked.out "$TARGETDIR/reflection.linked.out" || HASERROR=1 +run -l -q -C --reflect-strict-array-suffix --reflect-basic-array-suffix --reflect-intermediate-io --reflect-separate-buffers --reflect-all-block-variables --reflect-unwrap-io-blocks --reflect-all-io-variables --reflect-shared-std140-ubo --reflect-shared-std140-ssbo reflection.linked.vert reflection.linked.frag > "$TARGETDIR/reflection.linked.options.out" +diff -b $BASEDIR/reflection.linked.options.out "$TARGETDIR/reflection.linked.options.out" || HASERROR=1 +run -D -Od -e flizv -l -q -C -V -Od hlsl.reflection.vert > "$TARGETDIR/hlsl.reflection.vert.out" +diff -b $BASEDIR/hlsl.reflection.vert.out "$TARGETDIR/hlsl.reflection.vert.out" || HASERROR=1 +run -D -Od -e main -l -q -C -V -Od hlsl.reflection.binding.frag > "$TARGETDIR/hlsl.reflection.binding.frag.out" +diff -b $BASEDIR/hlsl.reflection.binding.frag.out "$TARGETDIR/hlsl.reflection.binding.frag.out" || HASERROR=1 +run -D -Od -e main -l -q --hlsl-iomap --auto-map-bindings --stb 10 --sbb 20 --ssb 30 --suavb 40 --scb 50 -D -V -e main -Od hlsl.automap.frag > "$TARGETDIR/hlsl.automap.frag.out" +diff -b $BASEDIR/hlsl.automap.frag.out "$TARGETDIR/hlsl.automap.frag.out" || HASERROR=1 # # multi-threaded test # echo Comparing single thread to multithread for all tests in current directory... -run -i -C *.vert *.geom *.frag *.tesc *.tese *.comp > $TARGETDIR/singleThread.out -run -i -C *.vert *.geom *.frag *.tesc *.tese *.comp -t > $TARGETDIR/multiThread.out -diff $TARGETDIR/singleThread.out $TARGETDIR/multiThread.out || HASERROR=1 +run -i -C *.vert *.geom *.frag *.tesc *.tese *.comp > "$TARGETDIR/singleThread.out" +run -i -C *.vert *.geom *.frag *.tesc *.tese *.comp -t > "$TARGETDIR/multiThread.out" +diff "$TARGETDIR/singleThread.out" "$TARGETDIR/multiThread.out" || HASERROR=1 if [ $HASERROR -eq 0 ] then - rm $TARGETDIR/singleThread.out - rm $TARGETDIR/multiThread.out + rm "$TARGETDIR/singleThread.out" + rm "$TARGETDIR/multiThread.out" fi # # entry point renaming tests # echo Running entry-point renaming tests -run -i -H -V -D -Od --entry-point main_in_spv --ku --source-entrypoint main -Od hlsl.entry.rename.frag > $TARGETDIR/hlsl.entry.rename.frag.out -diff -b $BASEDIR/hlsl.entry.rename.frag.out $TARGETDIR/hlsl.entry.rename.frag.out || HASERROR=1 +run -i -H -V -D -Od --entry-point main_in_spv --ku --source-entrypoint main -Od hlsl.entry.rename.frag > "$TARGETDIR/hlsl.entry.rename.frag.out" +diff -b $BASEDIR/hlsl.entry.rename.frag.out "$TARGETDIR/hlsl.entry.rename.frag.out" || HASERROR=1 # # Testing ill-defined uncalled function # echo Running ill-defined uncalled function -run -D -Od -e main -H -Od hlsl.deadFunctionMissingBody.vert > $TARGETDIR/hlsl.deadFunctionMissingBody.vert.out -diff -b $BASEDIR/hlsl.deadFunctionMissingBody.vert.out $TARGETDIR/hlsl.deadFunctionMissingBody.vert.out || HASERROR=1 +run -D -Od -e main -H -Od hlsl.deadFunctionMissingBody.vert > "$TARGETDIR/hlsl.deadFunctionMissingBody.vert.out" +diff -b $BASEDIR/hlsl.deadFunctionMissingBody.vert.out "$TARGETDIR/hlsl.deadFunctionMissingBody.vert.out" || HASERROR=1 if [ $HASERROR -eq 0 ] then @@ -116,108 +116,108 @@ fi # Testing -S and compound suffixes # echo Running explicit stage test and compound suffix tests -run -Od -i -S vert nosuffix > $TARGETDIR/nosuffix.out -diff -b $BASEDIR/nosuffix.out $TARGETDIR/nosuffix.out || HASERROR=1 -run -Od -i compoundsuffix.vert.glsl > $TARGETDIR/compoundsuffix.vert.glsl -diff -b $BASEDIR/compoundsuffix.vert.glsl $TARGETDIR/compoundsuffix.vert.glsl || HASERROR=1 -run -Od -e main -H compoundsuffix.frag.hlsl > $TARGETDIR/compoundsuffix.frag.hlsl -diff -b $BASEDIR/compoundsuffix.frag.hlsl $TARGETDIR/compoundsuffix.frag.hlsl || HASERROR=1 +run -Od -i -S vert nosuffix > "$TARGETDIR/nosuffix.out" +diff -b $BASEDIR/nosuffix.out "$TARGETDIR/nosuffix.out" || HASERROR=1 +run -Od -i compoundsuffix.vert.glsl > "$TARGETDIR/compoundsuffix.vert.glsl" +diff -b $BASEDIR/compoundsuffix.vert.glsl "$TARGETDIR/compoundsuffix.vert.glsl" || HASERROR=1 +run -Od -e main -H compoundsuffix.frag.hlsl > "$TARGETDIR/compoundsuffix.frag.hlsl" +diff -b $BASEDIR/compoundsuffix.frag.hlsl "$TARGETDIR/compoundsuffix.frag.hlsl" || HASERROR=1 # # Testing --hlsl-offsets # echo Running hlsl offsets -run -i --hlsl-offsets -H spv.hlslOffsets.vert > $TARGETDIR/spv.hlslOffsets.vert.out -diff -b $BASEDIR/spv.hlslOffsets.vert.out $TARGETDIR/spv.hlslOffsets.vert.out || HASERROR=1 +run -i --hlsl-offsets -H spv.hlslOffsets.vert > "$TARGETDIR/spv.hlslOffsets.vert.out" +diff -b $BASEDIR/spv.hlslOffsets.vert.out "$TARGETDIR/spv.hlslOffsets.vert.out" || HASERROR=1 echo Running hlsl offsets -run -i --hlsl-offsets -D -Od -e main -H -Od hlsl.hlslOffset.vert > $TARGETDIR/hlsl.hlslOffset.vert.out -diff -b $BASEDIR/hlsl.hlslOffset.vert.out $TARGETDIR/hlsl.hlslOffset.vert.out || HASERROR=1 +run -i --hlsl-offsets -D -Od -e main -H -Od hlsl.hlslOffset.vert > "$TARGETDIR/hlsl.hlslOffset.vert.out" +diff -b $BASEDIR/hlsl.hlslOffset.vert.out "$TARGETDIR/hlsl.hlslOffset.vert.out" || HASERROR=1 # # Testing --resource-set-binding # echo Configuring HLSL descriptor set and binding number manually -run -V -D -Od -e main -H -Od hlsl.multiDescriptorSet.frag --rsb frag t0 0 0 t1 1 0 s0 0 1 s1 1 1 b0 2 0 b1 2 1 b2 2 2 > $TARGETDIR/hlsl.multiDescriptorSet.frag.out -diff -b $BASEDIR/hlsl.multiDescriptorSet.frag.out $TARGETDIR/hlsl.multiDescriptorSet.frag.out || HASERROR=1 +run -V -D -Od -e main -H -Od hlsl.multiDescriptorSet.frag --rsb frag t0 0 0 t1 1 0 s0 0 1 s1 1 1 b0 2 0 b1 2 1 b2 2 2 > "$TARGETDIR/hlsl.multiDescriptorSet.frag.out" +diff -b $BASEDIR/hlsl.multiDescriptorSet.frag.out "$TARGETDIR/hlsl.multiDescriptorSet.frag.out" || HASERROR=1 -run -V -D -Od -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb 4 > $TARGETDIR/hlsl.explicitDescriptorSet.frag.out -diff -b $BASEDIR/hlsl.explicitDescriptorSet.frag.out $TARGETDIR/hlsl.explicitDescriptorSet.frag.out || HASERROR=1 +run -V -D -Od -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb 4 > "$TARGETDIR/hlsl.explicitDescriptorSet.frag.out" +diff -b $BASEDIR/hlsl.explicitDescriptorSet.frag.out "$TARGETDIR/hlsl.explicitDescriptorSet.frag.out" || HASERROR=1 -run -V -D -Od -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb frag 3 > $TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out -diff -b $BASEDIR/hlsl.explicitDescriptorSet-2.frag.out $TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out || HASERROR=1 +run -V -D -Od -e main -H -Od hlsl.explicitDescriptorSet.frag --hlsl-iomap --amb --ssb 10 --stb 20 --rsb frag 3 > "$TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out" +diff -b $BASEDIR/hlsl.explicitDescriptorSet-2.frag.out "$TARGETDIR/hlsl.explicitDescriptorSet-2.frag.out" || HASERROR=1 # # Testing per-descriptor-set IO map shift # echo 'Testing per-descriptor-set IO map shift' -run -e main --hlsl-iomap --ssb 10 1 15 2 --stb 20 --stb 25 2 --stb 70 6 --suavb 30 --suavb 40 2 --sub 50 6 -i -q -D -Od -V hlsl.shift.per-set.frag > $TARGETDIR/hlsl.shift.per-set.frag.out || HASERROR=1 -diff -b $BASEDIR/hlsl.shift.per-set.frag.out $TARGETDIR/hlsl.shift.per-set.frag.out || HASERROR=1 +run -e main --hlsl-iomap --ssb 10 1 15 2 --stb 20 --stb 25 2 --stb 70 6 --suavb 30 --suavb 40 2 --sub 50 6 -i -q -D -Od -V hlsl.shift.per-set.frag > "$TARGETDIR/hlsl.shift.per-set.frag.out" || HASERROR=1 +diff -b $BASEDIR/hlsl.shift.per-set.frag.out "$TARGETDIR/hlsl.shift.per-set.frag.out" || HASERROR=1 # # Testing location error # echo Testing SPV no location -run -V -C spv.noLocation.vert > $TARGETDIR/spv.noLocation.vert.out -diff -b $BASEDIR/spv.noLocation.vert.out $TARGETDIR/spv.noLocation.vert.out || HASERROR=1 -run -G -H --aml spv.noBuiltInLoc.vert > $TARGETDIR/spv.noBuiltInLoc.vert.out -diff -b $BASEDIR/spv.noBuiltInLoc.vert.out $TARGETDIR/spv.noBuiltInLoc.vert.out || HASERROR=1 -run -G spv.looseUniformNoLoc.vert > $TARGETDIR/spv.looseUniformNoLoc.vert.out -diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out $TARGETDIR/spv.looseUniformNoLoc.vert.out || HASERROR=1 +run -V -C spv.noLocation.vert > "$TARGETDIR/spv.noLocation.vert.out" +diff -b $BASEDIR/spv.noLocation.vert.out "$TARGETDIR/spv.noLocation.vert.out" || HASERROR=1 +run -G -H --aml spv.noBuiltInLoc.vert > "$TARGETDIR/spv.noBuiltInLoc.vert.out" +diff -b $BASEDIR/spv.noBuiltInLoc.vert.out "$TARGETDIR/spv.noBuiltInLoc.vert.out" || HASERROR=1 +run -G spv.looseUniformNoLoc.vert > "$TARGETDIR/spv.looseUniformNoLoc.vert.out" +diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out "$TARGETDIR/spv.looseUniformNoLoc.vert.out" || HASERROR=1 # # Testing debug information # echo Testing SPV Debug Information run -g --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ - -G -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.frag.out -diff -b $BASEDIR/spv.debugInfo.frag.out $TARGETDIR/spv.debugInfo.frag.out || HASERROR=1 + -G -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.frag.out" +diff -b $BASEDIR/spv.debugInfo.frag.out "$TARGETDIR/spv.debugInfo.frag.out" || HASERROR=1 run -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ - -V -H spv.debugInfo.frag --rsb frag 3 > $TARGETDIR/spv.debugInfo.1.1.frag.out -diff -b $BASEDIR/spv.debugInfo.1.1.frag.out $TARGETDIR/spv.debugInfo.1.1.frag.out || HASERROR=1 + -V -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.1.1.frag.out" +diff -b $BASEDIR/spv.debugInfo.1.1.frag.out "$TARGETDIR/spv.debugInfo.1.1.frag.out" || HASERROR=1 run -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --spirv-val --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \ - --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > $TARGETDIR/spv.hlslDebugInfo.frag.out -diff -b $BASEDIR/spv.hlslDebugInfo.frag.out $TARGETDIR/spv.hlslDebugInfo.frag.out || HASERROR=1 + --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > "$TARGETDIR/spv.hlslDebugInfo.frag.out" +diff -b $BASEDIR/spv.hlslDebugInfo.frag.out "$TARGETDIR/spv.hlslDebugInfo.frag.out" || HASERROR=1 # # Testing Includer # echo Testing Includer -run -D -Od -e main -H -Od ../Test/hlsl.include.vert > $TARGETDIR/hlsl.include.vert.out -diff -b $BASEDIR/hlsl.include.vert.out $TARGETDIR/hlsl.include.vert.out || HASERROR=1 -run -D -Od -e main -H -Od hlsl.includeNegative.vert > $TARGETDIR/hlsl.includeNegative.vert.out -diff -b $BASEDIR/hlsl.includeNegative.vert.out $TARGETDIR/hlsl.includeNegative.vert.out || HASERROR=1 -run -l -i include.vert > $TARGETDIR/include.vert.out -diff -b $BASEDIR/include.vert.out $TARGETDIR/include.vert.out || HASERROR=1 -run -D -Od -e main -H -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > $TARGETDIR/hlsl.dashI.vert.out -diff -b $BASEDIR/hlsl.dashI.vert.out $TARGETDIR/hlsl.dashI.vert.out || HASERROR=1 -run -D -Od -e MainPs -H -Od -g hlsl.pp.line3.frag > $TARGETDIR/hlsl.pp.line3.frag.out -diff -b $BASEDIR/hlsl.pp.line3.frag.out $TARGETDIR/hlsl.pp.line3.frag.out || HASERROR=1 +run -D -Od -e main -H -Od ../Test/hlsl.include.vert > "$TARGETDIR/hlsl.include.vert.out" +diff -b $BASEDIR/hlsl.include.vert.out "$TARGETDIR/hlsl.include.vert.out" || HASERROR=1 +run -D -Od -e main -H -Od hlsl.includeNegative.vert > "$TARGETDIR/hlsl.includeNegative.vert.out" +diff -b $BASEDIR/hlsl.includeNegative.vert.out "$TARGETDIR/hlsl.includeNegative.vert.out" || HASERROR=1 +run -l -i include.vert > "$TARGETDIR/include.vert.out" +diff -b $BASEDIR/include.vert.out "$TARGETDIR/include.vert.out" || HASERROR=1 +run -D -Od -e main -H -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > "$TARGETDIR/hlsl.dashI.vert.out" +diff -b $BASEDIR/hlsl.dashI.vert.out "$TARGETDIR/hlsl.dashI.vert.out" || HASERROR=1 +run -D -Od -e MainPs -H -Od -g hlsl.pp.line3.frag > "$TARGETDIR/hlsl.pp.line3.frag.out" +diff -b $BASEDIR/hlsl.pp.line3.frag.out "$TARGETDIR/hlsl.pp.line3.frag.out" || HASERROR=1 # # Testing --depfile # echo "Testing --depfile" -run -D -Od -e main -H --depfile $TARGETDIR/hlsl.include.vert.d.out -Od ../Test/hlsl.include.vert > $TARGETDIR/hlsl.include.vert.out -diff -b $BASEDIR/hlsl.include.vert.d.out $TARGETDIR/hlsl.include.vert.d.out || HASERROR=1 -run -D -Od -e main -H --depfile $TARGETDIR/hlsl.dashI.vert.d.out -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > $TARGETDIR/hlsl.dashI.vert.out -diff -b $BASEDIR/hlsl.dashI.vert.d.out $TARGETDIR/hlsl.dashI.vert.d.out || HASERROR=1 +run -D -Od -e main -H --depfile "$TARGETDIR/hlsl.include.vert.d.out" -Od ../Test/hlsl.include.vert > "$TARGETDIR/hlsl.include.vert.out" +diff -b $BASEDIR/hlsl.include.vert.d.out "$TARGETDIR/hlsl.include.vert.d.out" || HASERROR=1 +run -D -Od -e main -H --depfile "$TARGETDIR/hlsl.dashI.vert.d.out" -Od -Iinc1/path1 -Iinc1/path2 hlsl.dashI.vert > "$TARGETDIR/hlsl.dashI.vert.out" +diff -b $BASEDIR/hlsl.dashI.vert.d.out "$TARGETDIR/hlsl.dashI.vert.d.out" || HASERROR=1 # # Testing -D, -U and -P # echo "Testing -D, -U and -P" -run -DUNDEFED -UIN_SHADER -DFOO=200 -i -l --U UNDEFED --define-macro MUL=FOO*2 glsl.-D-U.frag > $TARGETDIR/glsl.-D-U.frag.out -diff -b $BASEDIR/glsl.-D-U.frag.out $TARGETDIR/glsl.-D-U.frag.out || HASERROR=1 -run -D -Od -e main -V -i -DUNDEFED -UIN_SHADER --D FOO=200 --undef-macro UNDEFED -Od hlsl.-D-U.frag > $TARGETDIR/hlsl.-D-U.frag.out -diff -b $BASEDIR/hlsl.-D-U.frag.out $TARGETDIR/hlsl.-D-U.frag.out || HASERROR=1 -run -P"#define TEST1" -i -l --preamble-text "#define TEST2" --p "#define TEST3" glsl.-P.frag > $TARGETDIR/glsl.-P.frag.out -diff -b $BASEDIR/glsl.-P.frag.out $TARGETDIR/glsl.-P.frag.out || HASERROR=1 -run -i -l --preamble-text "vec4 getColor() { return vec4(1.0); }" glsl.-P.function.frag > $TARGETDIR/glsl.-P.function.frag.out -diff -b $BASEDIR/glsl.-P.function.frag.out $TARGETDIR/glsl.-P.function.frag.out || HASERROR=1 -run -i -l --preamble-text "#extension GL_GOOGLE_include_directive : require" -I. glsl.-P.include.frag > $TARGETDIR/glsl.-P.include.frag.out -diff -b $BASEDIR/glsl.-P.include.frag.out $TARGETDIR/glsl.-P.include.frag.out || HASERROR=1 +run -DUNDEFED -UIN_SHADER -DFOO=200 -i -l --U UNDEFED --define-macro MUL=FOO*2 glsl.-D-U.frag > "$TARGETDIR/glsl.-D-U.frag.out" +diff -b $BASEDIR/glsl.-D-U.frag.out "$TARGETDIR/glsl.-D-U.frag.out" || HASERROR=1 +run -D -Od -e main -V -i -DUNDEFED -UIN_SHADER --D FOO=200 --undef-macro UNDEFED -Od hlsl.-D-U.frag > "$TARGETDIR/hlsl.-D-U.frag.out" +diff -b $BASEDIR/hlsl.-D-U.frag.out "$TARGETDIR/hlsl.-D-U.frag.out" || HASERROR=1 +run -P"#define TEST1" -i -l --preamble-text "#define TEST2" --p "#define TEST3" glsl.-P.frag > "$TARGETDIR/glsl.-P.frag.out" +diff -b $BASEDIR/glsl.-P.frag.out "$TARGETDIR/glsl.-P.frag.out" || HASERROR=1 +run -i -l --preamble-text "vec4 getColor() { return vec4(1.0); }" glsl.-P.function.frag > "$TARGETDIR/glsl.-P.function.frag.out" +diff -b $BASEDIR/glsl.-P.function.frag.out "$TARGETDIR/glsl.-P.function.frag.out" || HASERROR=1 +run -i -l --preamble-text "#extension GL_GOOGLE_include_directive : require" -I. glsl.-P.include.frag > "$TARGETDIR/glsl.-P.include.frag.out" +diff -b $BASEDIR/glsl.-P.include.frag.out "$TARGETDIR/glsl.-P.include.frag.out" || HASERROR=1 # # Test --client and --target-env @@ -237,116 +237,116 @@ run --target-env spirv1.2 -V spv.targetVulkan.vert || HASERROR=1 # Testing GLSL entry point rename # echo "Testing GLSL entry point rename" -run -H -e foo --source-entrypoint main glsl.entryPointRename.vert > $TARGETDIR/glsl.entryPointRename.vert.out -diff -b $BASEDIR/glsl.entryPointRename.vert.out $TARGETDIR/glsl.entryPointRename.vert.out || HASERROR=1 -run -H -e foo --source-entrypoint bar glsl.entryPointRename.vert > $TARGETDIR/glsl.entryPointRename.vert.bad.out -diff -b $BASEDIR/glsl.entryPointRename.vert.bad.out $TARGETDIR/glsl.entryPointRename.vert.bad.out || HASERROR=1 -run -H -e foo --source-entrypoint main glsl.entryPointRename2.vert > $TARGETDIR/glsl.entryPointRename2.vert.out -diff -b $BASEDIR/glsl.entryPointRename2.vert.out $TARGETDIR/glsl.entryPointRename2.vert.out || HASERROR=1 +run -H -e foo --source-entrypoint main glsl.entryPointRename.vert > "$TARGETDIR/glsl.entryPointRename.vert.out" +diff -b $BASEDIR/glsl.entryPointRename.vert.out "$TARGETDIR/glsl.entryPointRename.vert.out" || HASERROR=1 +run -H -e foo --source-entrypoint bar glsl.entryPointRename.vert > "$TARGETDIR/glsl.entryPointRename.vert.bad.out" +diff -b $BASEDIR/glsl.entryPointRename.vert.bad.out "$TARGETDIR/glsl.entryPointRename.vert.bad.out" || HASERROR=1 +run -H -e foo --source-entrypoint main glsl.entryPointRename2.vert > "$TARGETDIR/glsl.entryPointRename2.vert.out" +diff -b $BASEDIR/glsl.entryPointRename2.vert.out "$TARGETDIR/glsl.entryPointRename2.vert.out" || HASERROR=1 # # Testing remapper error handling # echo "Testing remapper error handling" -$REMAPEXE --do-everything -i remap.invalid-spirv-1.spv -o $TARGETDIR > $TARGETDIR/remap.invalid-spirv-1.out && HASERROR=1 -diff -b $BASEDIR/remap.invalid-spirv-1.out $TARGETDIR/remap.invalid-spirv-1.out || HASERROR=1 -$REMAPEXE --do-everything -i remap.invalid-spirv-2.spv -o $TARGETDIR > $TARGETDIR/remap.invalid-spirv-2.out && HASERROR=1 -diff -b $BASEDIR/remap.invalid-spirv-2.out $TARGETDIR/remap.invalid-spirv-2.out || HASERROR=1 +"$REMAPEXE" --do-everything -i remap.invalid-spirv-1.spv -o "$TARGETDIR" > "$TARGETDIR/remap.invalid-spirv-1.out" && HASERROR=1 +diff -b $BASEDIR/remap.invalid-spirv-1.out "$TARGETDIR/remap.invalid-spirv-1.out" || HASERROR=1 +"$REMAPEXE" --do-everything -i remap.invalid-spirv-2.spv -o "$TARGETDIR" > "$TARGETDIR/remap.invalid-spirv-2.out" && HASERROR=1 +diff -b $BASEDIR/remap.invalid-spirv-2.out "$TARGETDIR/remap.invalid-spirv-2.out" || HASERROR=1 # # Testing position Y inversion # echo "Testing position Y inversion" -run -H -e main -V -D -Od -H -i --iy hlsl.y-negate-1.vert > $TARGETDIR/hlsl.y-negate-1.vert.out -diff -b $BASEDIR/hlsl.y-negate-1.vert.out $TARGETDIR/hlsl.y-negate-1.vert.out || HASERROR=1 -run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-2.vert > $TARGETDIR/hlsl.y-negate-2.vert.out -diff -b $BASEDIR/hlsl.y-negate-2.vert.out $TARGETDIR/hlsl.y-negate-2.vert.out || HASERROR=1 -run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-3.vert > $TARGETDIR/hlsl.y-negate-3.vert.out -diff -b $BASEDIR/hlsl.y-negate-3.vert.out $TARGETDIR/hlsl.y-negate-3.vert.out || HASERROR=1 +run -H -e main -V -D -Od -H -i --iy hlsl.y-negate-1.vert > "$TARGETDIR/hlsl.y-negate-1.vert.out" +diff -b $BASEDIR/hlsl.y-negate-1.vert.out "$TARGETDIR/hlsl.y-negate-1.vert.out" || HASERROR=1 +run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-2.vert > "$TARGETDIR/hlsl.y-negate-2.vert.out" +diff -b $BASEDIR/hlsl.y-negate-2.vert.out "$TARGETDIR/hlsl.y-negate-2.vert.out" || HASERROR=1 +run -H -e main -V -D -Od -H -i --invert-y hlsl.y-negate-3.vert > "$TARGETDIR/hlsl.y-negate-3.vert.out" +diff -b $BASEDIR/hlsl.y-negate-3.vert.out "$TARGETDIR/hlsl.y-negate-3.vert.out" || HASERROR=1 # # Testing position W reciprocal # echo "Testing position W reciprocal" -run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip.frag > $TARGETDIR/hlsl.w-recip.frag.out -diff -b $BASEDIR/hlsl.w-recip.frag.out $TARGETDIR/hlsl.w-recip.frag.out || HASERROR=1 -run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip2.frag > $TARGETDIR/hlsl.w-recip2.frag.out -diff -b $BASEDIR/hlsl.w-recip2.frag.out $TARGETDIR/hlsl.w-recip2.frag.out || HASERROR=1 +run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip.frag > "$TARGETDIR/hlsl.w-recip.frag.out" +diff -b $BASEDIR/hlsl.w-recip.frag.out "$TARGETDIR/hlsl.w-recip.frag.out" || HASERROR=1 +run -H -e main -V -D -Od -H -i --hlsl-dx-position-w hlsl.w-recip2.frag > "$TARGETDIR/hlsl.w-recip2.frag.out" +diff -b $BASEDIR/hlsl.w-recip2.frag.out "$TARGETDIR/hlsl.w-recip2.frag.out" || HASERROR=1 # # Testing hlsl_functionality1 # echo "Testing hlsl_functionality1" run -H -e main -D -Od -fhlsl_functionality1 hlsl.structbuffer.incdec.frag > \ - $TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out -diff -b $BASEDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out $TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out || HASERROR=1 + "$TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out" +diff -b $BASEDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out "$TARGETDIR/hlsl.structbuffer.incdec.frag.hlslfun1.out" || HASERROR=1 run -H -e main -D -Od -fhlsl_functionality1 hlsl.noSemantic.functionality1.comp > \ - $TARGETDIR/hlsl.noSemantic.functionality1.comp.out -diff -b $BASEDIR/hlsl.noSemantic.functionality1.comp.out $TARGETDIR/hlsl.noSemantic.functionality1.comp.out || HASERROR=1 + "$TARGETDIR/hlsl.noSemantic.functionality1.comp.out" +diff -b $BASEDIR/hlsl.noSemantic.functionality1.comp.out "$TARGETDIR/hlsl.noSemantic.functionality1.comp.out" || HASERROR=1 # # Testing HLSL-specific PP feature expansion # echo "Testing HLSL-specific PP feature expansion" -run -D -E hlsl.pp.expand.frag > $TARGETDIR/hlsl.pp.expand.frag.out 2> $TARGETDIR/hlsl.pp.expand.frag.err -diff -b $BASEDIR/hlsl.pp.expand.frag.out $TARGETDIR/hlsl.pp.expand.frag.out || HASERROR=1 -diff -b $BASEDIR/hlsl.pp.expand.frag.err $TARGETDIR/hlsl.pp.expand.frag.err || HASERROR=1 +run -D -E hlsl.pp.expand.frag > "$TARGETDIR/hlsl.pp.expand.frag.out" 2> "$TARGETDIR/hlsl.pp.expand.frag.err" +diff -b $BASEDIR/hlsl.pp.expand.frag.out "$TARGETDIR/hlsl.pp.expand.frag.out" || HASERROR=1 +diff -b $BASEDIR/hlsl.pp.expand.frag.err "$TARGETDIR/hlsl.pp.expand.frag.err" || HASERROR=1 # # Test --nan-clamp # echo "Testing nan-clamp" -run --nan-clamp -H --aml --amb spv.400.frag > $TARGETDIR/spv.400.frag.nanclamp.out -diff -b $BASEDIR/spv.400.frag.nanclamp.out $TARGETDIR/spv.400.frag.nanclamp.out || HASERROR=1 +run --nan-clamp -H --aml --amb spv.400.frag > "$TARGETDIR/spv.400.frag.nanclamp.out" +diff -b $BASEDIR/spv.400.frag.nanclamp.out "$TARGETDIR/spv.400.frag.nanclamp.out" || HASERROR=1 # # Test --auto-sampled-textures # echo "Testing auto-sampled-textures" -run --auto-sampled-textures -H -Od -e MainPs -D -S frag hlsl.autosampledtextures.frag > $TARGETDIR/hlsl.autosampledtextures.frag.out -diff -b $BASEDIR/hlsl.autosampledtextures.frag.out $TARGETDIR/hlsl.autosampledtextures.frag.out || HASERROR=1 -run --auto-sampled-textures -H -Od -S frag glsl.autosampledtextures.frag > $TARGETDIR/glsl.autosampledtextures.frag.out -diff -b $BASEDIR/glsl.autosampledtextures.frag.out $TARGETDIR/glsl.autosampledtextures.frag.out || HASERROR=1 +run --auto-sampled-textures -H -Od -e MainPs -D -S frag hlsl.autosampledtextures.frag > "$TARGETDIR/hlsl.autosampledtextures.frag.out" +diff -b $BASEDIR/hlsl.autosampledtextures.frag.out "$TARGETDIR/hlsl.autosampledtextures.frag.out" || HASERROR=1 +run --auto-sampled-textures -H -Od -S frag glsl.autosampledtextures.frag > "$TARGETDIR/glsl.autosampledtextures.frag.out" +diff -b $BASEDIR/glsl.autosampledtextures.frag.out "$TARGETDIR/glsl.autosampledtextures.frag.out" || HASERROR=1 # Test --glsl-version # echo "Testing --glsl-version" -run --glsl-version 410 -V -S vert glsl.versionOverride.vert > $TARGETDIR/glsl.versionOverride.vert.out -diff -b $BASEDIR/glsl.versionOverride.vert.out $TARGETDIR/glsl.versionOverride.vert.out || HASERROR=1 -run --glsl-version 420 -V -S frag glsl.versionOverride.frag > $TARGETDIR/glsl.versionOverride.frag.out -diff -b $BASEDIR/glsl.versionOverride.frag.out $TARGETDIR/glsl.versionOverride.frag.out || HASERROR=1 -run --glsl-version 430 -V -S geom glsl.versionOverride.geom > $TARGETDIR/glsl.versionOverride.geom.out -diff -b $BASEDIR/glsl.versionOverride.geom.out $TARGETDIR/glsl.versionOverride.geom.out || HASERROR=1 -run --glsl-version 440 -V -S tesc glsl.versionOverride.tesc > $TARGETDIR/glsl.versionOverride.tesc.out -diff -b $BASEDIR/glsl.versionOverride.tesc.out $TARGETDIR/glsl.versionOverride.tesc.out || HASERROR=1 -run --glsl-version 450 -V -S tese glsl.versionOverride.tese > $TARGETDIR/glsl.versionOverride.tese.out -diff -b $BASEDIR/glsl.versionOverride.tese.out $TARGETDIR/glsl.versionOverride.tese.out || HASERROR=1 -run --glsl-version 460 -V -S comp glsl.versionOverride.comp > $TARGETDIR/glsl.versionOverride.comp.out -diff -b $BASEDIR/glsl.versionOverride.comp.out $TARGETDIR/glsl.versionOverride.comp.out || HASERROR=1 +run --glsl-version 410 -V -S vert glsl.versionOverride.vert > "$TARGETDIR/glsl.versionOverride.vert.out" +diff -b $BASEDIR/glsl.versionOverride.vert.out "$TARGETDIR/glsl.versionOverride.vert.out" || HASERROR=1 +run --glsl-version 420 -V -S frag glsl.versionOverride.frag > "$TARGETDIR/glsl.versionOverride.frag.out" +diff -b $BASEDIR/glsl.versionOverride.frag.out "$TARGETDIR/glsl.versionOverride.frag.out" || HASERROR=1 +run --glsl-version 430 -V -S geom glsl.versionOverride.geom > "$TARGETDIR/glsl.versionOverride.geom.out" +diff -b $BASEDIR/glsl.versionOverride.geom.out "$TARGETDIR/glsl.versionOverride.geom.out" || HASERROR=1 +run --glsl-version 440 -V -S tesc glsl.versionOverride.tesc > "$TARGETDIR/glsl.versionOverride.tesc.out" +diff -b $BASEDIR/glsl.versionOverride.tesc.out "$TARGETDIR/glsl.versionOverride.tesc.out" || HASERROR=1 +run --glsl-version 450 -V -S tese glsl.versionOverride.tese > "$TARGETDIR/glsl.versionOverride.tese.out" +diff -b $BASEDIR/glsl.versionOverride.tese.out "$TARGETDIR/glsl.versionOverride.tese.out" || HASERROR=1 +run --glsl-version 460 -V -S comp glsl.versionOverride.comp > "$TARGETDIR/glsl.versionOverride.comp.out" +diff -b $BASEDIR/glsl.versionOverride.comp.out "$TARGETDIR/glsl.versionOverride.comp.out" || HASERROR=1 # # Test --enhanced-msgs # echo "Testing enhanced-msgs" -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.0.frag > $TARGETDIR/enhanced.0.frag.out -diff -b $BASEDIR/enhanced.0.frag.out $TARGETDIR/enhanced.0.frag.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.1.frag > $TARGETDIR/enhanced.1.frag.out -diff -b $BASEDIR/enhanced.1.frag.out $TARGETDIR/enhanced.1.frag.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.2.frag > $TARGETDIR/enhanced.2.frag.out -diff -b $BASEDIR/enhanced.2.frag.out $TARGETDIR/enhanced.2.frag.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.3.vert enhanced.3.frag > $TARGETDIR/enhanced.3.link.out -diff -b $BASEDIR/enhanced.3.link.out $TARGETDIR/enhanced.3.link.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.4.vert enhanced.4.frag > $TARGETDIR/enhanced.4.link.out -diff -b $BASEDIR/enhanced.4.link.out $TARGETDIR/enhanced.4.link.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.5.vert enhanced.5.frag > $TARGETDIR/enhanced.5.link.out -diff -b $BASEDIR/enhanced.5.link.out $TARGETDIR/enhanced.5.link.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.6.vert enhanced.6.frag > $TARGETDIR/enhanced.6.link.out -diff -b $BASEDIR/enhanced.6.link.out $TARGETDIR/enhanced.6.link.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanced.7.frag > $TARGETDIR/enhanced.7.link.out -diff -b $BASEDIR/enhanced.7.link.out $TARGETDIR/enhanced.7.link.out || HASERROR=1 -run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > $TARGETDIR/spv.textureError.frag.out -diff -b $BASEDIR/spv.textureError.frag.out $TARGETDIR/spv.textureError.frag.out || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.0.frag > "$TARGETDIR/enhanced.0.frag.out" +diff -b $BASEDIR/enhanced.0.frag.out "$TARGETDIR/enhanced.0.frag.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.1.frag > "$TARGETDIR/enhanced.1.frag.out" +diff -b $BASEDIR/enhanced.1.frag.out "$TARGETDIR/enhanced.1.frag.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.2.frag > "$TARGETDIR/enhanced.2.frag.out" +diff -b $BASEDIR/enhanced.2.frag.out "$TARGETDIR/enhanced.2.frag.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.3.vert enhanced.3.frag > "$TARGETDIR/enhanced.3.link.out" +diff -b $BASEDIR/enhanced.3.link.out "$TARGETDIR/enhanced.3.link.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.4.vert enhanced.4.frag > "$TARGETDIR/enhanced.4.link.out" +diff -b $BASEDIR/enhanced.4.link.out "$TARGETDIR/enhanced.4.link.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.5.vert enhanced.5.frag > "$TARGETDIR/enhanced.5.link.out" +diff -b $BASEDIR/enhanced.5.link.out "$TARGETDIR/enhanced.5.link.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.6.vert enhanced.6.frag > "$TARGETDIR/enhanced.6.link.out" +diff -b $BASEDIR/enhanced.6.link.out "$TARGETDIR/enhanced.6.link.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml enhanced.7.vert enhanced.7.frag > "$TARGETDIR/enhanced.7.link.out" +diff -b $BASEDIR/enhanced.7.link.out "$TARGETDIR/enhanced.7.link.out" || HASERROR=1 +run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > "$TARGETDIR/spv.textureError.frag.out" +diff -b $BASEDIR/spv.textureError.frag.out "$TARGETDIR/spv.textureError.frag.out" || HASERROR=1 # # Final checking From 339552c5c3541a6eccc535431ecfc6588cfc3e13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Feb 2024 06:53:50 +0000 Subject: [PATCH 419/594] Bump github/codeql-action from 3.24.0 to 3.24.3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.0 to 3.24.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/e8893c57a1f3a2b659b6b55564fdfdbbd2982911...379614612a29c9e28f31f39a59013eb8012a51f0) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f952197a9e..9fb86eafbe 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@e8893c57a1f3a2b659b6b55564fdfdbbd2982911 # v3.24.0 + uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 with: sarif_file: results.sarif From 8ca24e7cf13cba8f92c281c2b1e343bce48f98ab Mon Sep 17 00:00:00 2001 From: Chris Djali Date: Mon, 19 Feb 2024 22:45:45 +0000 Subject: [PATCH 420/594] Remove implicit fallthrough (#3518) This is intended so that downstream projects consuming glslang with FetchContent or similar means can use `-Wimplicit-fallthrough` without getting warning spam. I've used my best judgement to determine whether the implicit fallthrough was desired, or was simply unreachable code. `std::unreachable` is unavailable until C++23, but I saw places where `default: assert(0);` was used, so copied that. There were a few places where some code might actually have been reachable and intended to return a value that represented an error, so someone should double check that kind of thing. --- SPIRV/GlslangToSpv.cpp | 2 +- SPIRV/SpvPostProcess.cpp | 1 + glslang/MachineIndependent/Intermediate.cpp | 1 + glslang/MachineIndependent/ParseHelper.cpp | 2 ++ glslang/MachineIndependent/reflection.cpp | 25 +++++++++++++++++++++ 5 files changed, 30 insertions(+), 1 deletion(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ffd44c5d8b..564455b05e 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -8346,7 +8346,7 @@ spv::Id TGlslangToSpvTraverser::createSubgroupOperation(glslang::TOperator op, s case glslang::EOpSubgroupQuadAny: builder.addExtension(spv::E_SPV_KHR_quad_control); builder.addCapability(spv::CapabilityQuadControlKHR); - // pass through + [[fallthrough]]; case glslang::EOpSubgroupAll: case glslang::EOpSubgroupAny: case glslang::EOpSubgroupAllEqual: diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index 13001a67a1..ebc69124e6 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -181,6 +181,7 @@ void Builder::postProcessType(const Instruction& inst, Id typeId) else if (width == 8) addCapability(CapabilityInt8); } + break; default: if (basicTypeOp == OpTypeInt) { if (width == 16) diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index ae62f1962b..9dc30ffd2c 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -1277,6 +1277,7 @@ void TIntermediate::addBiShapeConversion(TOperator op, TIntermTyped*& lhsNode, T // matrix multiply does not change shapes if (lhsNode->isMatrix() && rhsNode->isMatrix()) return; + [[fallthrough]]; case EOpAdd: case EOpSub: case EOpDiv: diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 5b0542da55..8491e28a63 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -8434,6 +8434,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConstructUVec2, false, newSrcNode, type); return newNode; } + [[fallthrough]]; case EOpConstructUVec3: case EOpConstructUVec4: case EOpConstructUint: @@ -8455,6 +8456,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T intermediate.addBuiltInFunctionCall(node->getLoc(), EOpPackUint2x32, true, node, type); return newNode; } + [[fallthrough]]; case EOpConstructDVec2: case EOpConstructDVec3: case EOpConstructDVec4: diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index 6c7d3a2c99..a6ba48fcbe 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -707,6 +707,7 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.shadow) { case false: return sampler.arrayed ? GL_SAMPLER_1D_ARRAY : GL_SAMPLER_1D; case true: return sampler.arrayed ? GL_SAMPLER_1D_ARRAY_SHADOW : GL_SAMPLER_1D_SHADOW; + default: assert(0); } case Esd2D: switch ((int)sampler.ms) { @@ -714,8 +715,10 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.shadow) { case false: return sampler.arrayed ? GL_SAMPLER_2D_ARRAY : GL_SAMPLER_2D; case true: return sampler.arrayed ? GL_SAMPLER_2D_ARRAY_SHADOW : GL_SAMPLER_2D_SHADOW; + default: assert(0); } case true: return sampler.arrayed ? GL_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_SAMPLER_2D_MULTISAMPLE; + default: assert(0); } case Esd3D: return GL_SAMPLER_3D; @@ -723,11 +726,13 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.shadow) { case false: return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY : GL_SAMPLER_CUBE; case true: return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW : GL_SAMPLER_CUBE_SHADOW; + default: assert(0); } case EsdRect: return sampler.shadow ? GL_SAMPLER_2D_RECT_SHADOW : GL_SAMPLER_2D_RECT; case EsdBuffer: return GL_SAMPLER_BUFFER; + default: assert(0); } case EbtFloat16: switch ((int)sampler.dim) { @@ -735,6 +740,7 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.shadow) { case false: return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_AMD : GL_FLOAT16_SAMPLER_1D_AMD; case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_1D_SHADOW_AMD; + default: assert(0); } case Esd2D: switch ((int)sampler.ms) { @@ -742,8 +748,10 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.shadow) { case false: return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_AMD; case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_2D_SHADOW_AMD; + default: assert(0); } case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD; + default: assert(0); } case Esd3D: return GL_FLOAT16_SAMPLER_3D_AMD; @@ -751,11 +759,13 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.shadow) { case false: return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD : GL_FLOAT16_SAMPLER_CUBE_AMD; case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD; + default: assert(0); } case EsdRect: return sampler.shadow ? GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD : GL_FLOAT16_SAMPLER_2D_RECT_AMD; case EsdBuffer: return GL_FLOAT16_SAMPLER_BUFFER_AMD; + default: assert(0); } case EbtInt: switch ((int)sampler.dim) { @@ -766,6 +776,7 @@ class TReflectionTraverser : public TIntermTraverser { case false: return sampler.arrayed ? GL_INT_SAMPLER_2D_ARRAY : GL_INT_SAMPLER_2D; case true: return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_INT_SAMPLER_2D_MULTISAMPLE; + default: assert(0); } case Esd3D: return GL_INT_SAMPLER_3D; @@ -775,6 +786,7 @@ class TReflectionTraverser : public TIntermTraverser { return GL_INT_SAMPLER_2D_RECT; case EsdBuffer: return GL_INT_SAMPLER_BUFFER; + default: assert(0); } case EbtUint: switch ((int)sampler.dim) { @@ -785,6 +797,7 @@ class TReflectionTraverser : public TIntermTraverser { case false: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D; case true: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE; + default: assert(0); } case Esd3D: return GL_UNSIGNED_INT_SAMPLER_3D; @@ -794,6 +807,7 @@ class TReflectionTraverser : public TIntermTraverser { return GL_UNSIGNED_INT_SAMPLER_2D_RECT; case EsdBuffer: return GL_UNSIGNED_INT_SAMPLER_BUFFER; + default: assert(0); } default: return 0; @@ -809,6 +823,7 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.ms) { case false: return sampler.arrayed ? GL_IMAGE_2D_ARRAY : GL_IMAGE_2D; case true: return sampler.arrayed ? GL_IMAGE_2D_MULTISAMPLE_ARRAY : GL_IMAGE_2D_MULTISAMPLE; + default: assert(0); } case Esd3D: return GL_IMAGE_3D; @@ -818,6 +833,7 @@ class TReflectionTraverser : public TIntermTraverser { return GL_IMAGE_2D_RECT; case EsdBuffer: return GL_IMAGE_BUFFER; + default: assert(0); } case EbtFloat16: switch ((int)sampler.dim) { @@ -827,6 +843,7 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.ms) { case false: return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_AMD; case true: return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD; + default: assert(0); } case Esd3D: return GL_FLOAT16_IMAGE_3D_AMD; @@ -836,6 +853,7 @@ class TReflectionTraverser : public TIntermTraverser { return GL_FLOAT16_IMAGE_2D_RECT_AMD; case EsdBuffer: return GL_FLOAT16_IMAGE_BUFFER_AMD; + default: assert(0); } case EbtInt: switch ((int)sampler.dim) { @@ -845,6 +863,7 @@ class TReflectionTraverser : public TIntermTraverser { switch ((int)sampler.ms) { case false: return sampler.arrayed ? GL_INT_IMAGE_2D_ARRAY : GL_INT_IMAGE_2D; case true: return sampler.arrayed ? GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_INT_IMAGE_2D_MULTISAMPLE; + default: assert(0); } case Esd3D: return GL_INT_IMAGE_3D; @@ -854,6 +873,7 @@ class TReflectionTraverser : public TIntermTraverser { return GL_INT_IMAGE_2D_RECT; case EsdBuffer: return GL_INT_IMAGE_BUFFER; + default: assert(0); } case EbtUint: switch ((int)sampler.dim) { @@ -864,6 +884,7 @@ class TReflectionTraverser : public TIntermTraverser { case false: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_ARRAY : GL_UNSIGNED_INT_IMAGE_2D; case true: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE; + default: assert(0); } case Esd3D: return GL_UNSIGNED_INT_IMAGE_3D; @@ -873,6 +894,7 @@ class TReflectionTraverser : public TIntermTraverser { return GL_UNSIGNED_INT_IMAGE_2D_RECT; case EsdBuffer: return GL_UNSIGNED_INT_IMAGE_BUFFER; + default: assert(0); } default: return 0; @@ -937,6 +959,7 @@ class TReflectionTraverser : public TIntermTraverser { case 4: return GL_FLOAT_MAT4; default: return 0; } + default: assert(0); } case EbtDouble: switch (type.getMatrixCols()) { @@ -961,6 +984,7 @@ class TReflectionTraverser : public TIntermTraverser { case 4: return GL_DOUBLE_MAT4; default: return 0; } + default: assert(0); } case EbtFloat16: switch (type.getMatrixCols()) { @@ -985,6 +1009,7 @@ class TReflectionTraverser : public TIntermTraverser { case 4: return GL_FLOAT16_MAT4_AMD; default: return 0; } + default: assert(0); } default: return 0; From 606209e07dc026cbe5a4b84512766e9ef4b1b985 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 19 Feb 2024 18:42:55 -0500 Subject: [PATCH 421/594] Use [[fallthrough]] attribute instead of comments. Now that we require C++17, the [[fallthrough]] attribute is available as an alternative to load-bearing comments. --- SPIRV/GlslangToSpv.cpp | 6 +++--- SPIRV/disassemble.cpp | 4 ++-- glslang/HLSL/hlslParseHelper.cpp | 10 +++++----- glslang/MachineIndependent/Initialize.cpp | 7 ++++--- glslang/MachineIndependent/Intermediate.cpp | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 6 +++--- glslang/MachineIndependent/Versions.cpp | 2 +- glslang/MachineIndependent/intermOut.cpp | 2 +- glslang/MachineIndependent/linkValidate.cpp | 2 +- 9 files changed, 22 insertions(+), 21 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 564455b05e..3ccf9f0926 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3052,7 +3052,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpConstructF16Mat4x3: case glslang::EOpConstructF16Mat4x4: isMatrix = true; - // fall through + [[fallthrough]]; case glslang::EOpConstructFloat: case glslang::EOpConstructVec2: case glslang::EOpConstructVec3: @@ -3223,7 +3223,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpAtomicStore: noReturnValue = true; - // fallthrough + [[fallthrough]]; case glslang::EOpAtomicLoad: atomic = true; break; @@ -3326,7 +3326,7 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpHitObjectRecordHitWithIndexMotionNV: case glslang::EOpReorderThreadNV: noReturnValue = true; - //Fallthrough + [[fallthrough]]; case glslang::EOpHitObjectIsEmptyNV: case glslang::EOpHitObjectIsMissNV: case glslang::EOpHitObjectIsHitNV: diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index c5e961cf02..2a368b2c0c 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -360,7 +360,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, switch (stream[word]) { case 8: idDescriptor[resultId] = "int8_t"; break; case 16: idDescriptor[resultId] = "int16_t"; break; - default: assert(0); // fallthrough + default: assert(0); [[fallthrough]]; case 32: idDescriptor[resultId] = "int"; break; case 64: idDescriptor[resultId] = "int64_t"; break; } @@ -368,7 +368,7 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, case OpTypeFloat: switch (stream[word]) { case 16: idDescriptor[resultId] = "float16_t"; break; - default: assert(0); // fallthrough + default: assert(0); [[fallthrough]]; case 32: idDescriptor[resultId] = "float"; break; case 64: idDescriptor[resultId] = "float64_t"; break; } diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index b0fb5f4660..74c9c1d70f 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -402,7 +402,7 @@ TIntermTyped* HlslParseContext::handleLvalue(const TSourceLoc& loc, const char* case EOpLeftShiftAssign: case EOpRightShiftAssign: isModifyOp = true; - // fall through... + [[fallthrough]]; case EOpAssign: { // Since this is an lvalue, we'll convert an image load to a sequence like this @@ -4507,13 +4507,13 @@ void HlslParseContext::decomposeSampleMethods(const TSourceLoc& loc, TIntermType int cmpValues = 0; // 1 if there is a compare value (handier than a bool below) switch (op) { - case EOpMethodGatherCmpRed: cmpValues = 1; // fall through + case EOpMethodGatherCmpRed: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherRed: channel = 0; break; - case EOpMethodGatherCmpGreen: cmpValues = 1; // fall through + case EOpMethodGatherCmpGreen: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherGreen: channel = 1; break; - case EOpMethodGatherCmpBlue: cmpValues = 1; // fall through + case EOpMethodGatherCmpBlue: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherBlue: channel = 2; break; - case EOpMethodGatherCmpAlpha: cmpValues = 1; // fall through + case EOpMethodGatherCmpAlpha: cmpValues = 1; [[fallthrough]]; case EOpMethodGatherAlpha: channel = 3; break; default: assert(0); break; } diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 054cf1d681..858ae6adef 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -8126,7 +8126,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.setFunctionExtensions("texture2DArrayLod", 1, &E_GL_EXT_texture_array); symbolTable.setFunctionExtensions("shadow1DArrayLod", 1, &E_GL_EXT_texture_array); } - // Fall through + [[fallthrough]]; case EShLangTessControl: if (profile == EEsProfile && version >= 310) { @@ -8141,7 +8141,7 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_BoundingBox", EbvBoundingBox, symbolTable); } } - // Fall through + [[fallthrough]]; case EShLangTessEvaluation: case EShLangGeometry: @@ -10231,7 +10231,8 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if (profile != EEsProfile && version >= 460) { symbolTable.relateToOperator("fetchMicroTriangleVertexPositionNV", EOpFetchMicroTriangleVertexPositionNV); symbolTable.relateToOperator("fetchMicroTriangleVertexBarycentricNV", EOpFetchMicroTriangleVertexBarycentricNV); - } // fallthrough + } + [[fallthrough]]; case EShLangClosestHit: case EShLangMiss: if (profile != EEsProfile && version >= 460) { diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index 9dc30ffd2c..b5bd37cb53 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -3533,7 +3533,7 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) if (left->getType() == right->getType()) return true; - // Fall through + [[fallthrough]]; case EOpMul: case EOpMulAssign: @@ -3682,7 +3682,7 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) case EOpAssign: if (left->getVectorSize() != right->getVectorSize() || left->getMatrixCols() != right->getMatrixCols() || left->getMatrixRows() != right->getMatrixRows()) return false; - // fall through + [[fallthrough]]; case EOpAdd: case EOpSub: diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 8491e28a63..f6503eccc4 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -6260,7 +6260,7 @@ void TParseContext::setLayoutQualifier(const TSourceLoc& loc, TPublicType& publi error(loc, "needs a literal integer", "max_primitives", ""); return; } - // Fall through + [[fallthrough]]; case EShLangTask: // Fall through @@ -8609,7 +8609,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T TIntermTyped* newNode = intermediate.addBuiltInFunctionCall(node->getLoc(), EOpConvPtrToUint64, true, node, type); return newNode; } - // fall through + [[fallthrough]]; case EOpConstructU64Vec2: case EOpConstructU64Vec3: case EOpConstructU64Vec4: @@ -9674,7 +9674,7 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con error(loc, "cannot apply to 'out'", TQualifier::getGeometryString(publicType.shaderQualifiers.geometry), ""); break; } - // Fall through + [[fallthrough]]; case ElgPoints: case ElgLineStrip: case ElgTriangleStrip: diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 978e25a188..4019371ac9 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -766,7 +766,7 @@ void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int switch (getExtensionBehavior(extensions[i])) { case EBhWarn: infoSink.info.message(EPrefixWarning, ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), loc); - // fall through + [[fallthrough]]; case EBhRequire: case EBhEnable: okay = true; diff --git a/glslang/MachineIndependent/intermOut.cpp b/glslang/MachineIndependent/intermOut.cpp index 8ef87453af..f0621bd9eb 100644 --- a/glslang/MachineIndependent/intermOut.cpp +++ b/glslang/MachineIndependent/intermOut.cpp @@ -1587,7 +1587,7 @@ void TIntermediate::output(TInfoSink& infoSink, bool tree) infoSink.debug << "max_vertices = " << vertices << "\n"; infoSink.debug << "max_primitives = " << primitives << "\n"; infoSink.debug << "output primitive = " << TQualifier::getGeometryString(outputPrimitive) << "\n"; - // Fall through + [[fallthrough]]; case EShLangTask: // Fall through case EShLangCompute: diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index d69300b84d..1bd6678b1e 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1350,7 +1350,7 @@ void TIntermediate::finalCheck(TInfoSink& infoSink, bool keepUncalled) error(infoSink, "At least one shader must specify a layout(max_vertices = value)"); if (primitives == TQualifier::layoutNotSet) error(infoSink, "At least one shader must specify a layout(max_primitives = value)"); - // fall through + [[fallthrough]]; case EShLangTask: if (numTaskNVBlocks > 1) error(infoSink, "Only one taskNV interface block is allowed per shader"); From 7ffa2894957691c0a4f5ac6d7763fa76702a5405 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 19 Feb 2024 18:45:25 -0500 Subject: [PATCH 422/594] Add extra break statements to quiet clang warnings. Clang complains about code that falls through into an empty default case, so add some breaks to placate it. --- SPIRV/GlslangToSpv.cpp | 1 + glslang/HLSL/hlslGrammar.cpp | 1 + glslang/MachineIndependent/Intermediate.cpp | 3 +++ glslang/MachineIndependent/ParseContextBase.cpp | 1 + glslang/MachineIndependent/ShaderLang.cpp | 1 + glslang/MachineIndependent/SymbolTable.cpp | 1 + 6 files changed, 8 insertions(+) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 3ccf9f0926..f5e954b305 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1165,6 +1165,7 @@ spv::ImageFormat TGlslangToSpvTraverser::TranslateImageFormat(const glslang::TTy case glslang::ElfR64i: builder.addExtension(spv::E_SPV_EXT_shader_image_int64); builder.addCapability(spv::CapabilityInt64ImageEXT); + break; default: break; } diff --git a/glslang/HLSL/hlslGrammar.cpp b/glslang/HLSL/hlslGrammar.cpp index 11c0e45e9d..ed32ff0caa 100644 --- a/glslang/HLSL/hlslGrammar.cpp +++ b/glslang/HLSL/hlslGrammar.cpp @@ -391,6 +391,7 @@ bool HlslGrammar::acceptDeclaration(TIntermNode*& nodeList) case EvqOut: case EvqInOut: parseContext.error(token.loc, "in/out qualifiers are only valid on parameters", token.string->c_str(), ""); + break; default: break; } diff --git a/glslang/MachineIndependent/Intermediate.cpp b/glslang/MachineIndependent/Intermediate.cpp index b5bd37cb53..63e176e3ae 100644 --- a/glslang/MachineIndependent/Intermediate.cpp +++ b/glslang/MachineIndependent/Intermediate.cpp @@ -376,6 +376,7 @@ TIntermTyped* TIntermediate::addUnaryMath(TOperator op, TIntermTyped* child, case EOpNegative: if (child->getType().getBasicType() == EbtStruct || child->getType().isArray()) return nullptr; + break; default: break; // some compilers want this } @@ -3490,6 +3491,7 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) // check for non-Boolean operands if (left->getBasicType() == EbtBool || right->getBasicType() == EbtBool) return false; + break; default: break; @@ -3540,6 +3542,7 @@ bool TIntermediate::promoteBinary(TIntermBinary& node) // At least the basic type has to match if (left->getBasicType() != right->getBasicType()) return false; + break; default: break; diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 8e8bcd8869..6e3d088a6e 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -257,6 +257,7 @@ void TParseContextBase::rValueErrorCheck(const TSourceLoc& loc, const char* op, case EOpVectorSwizzle: case EOpMatrixSwizzle: rValueErrorCheck(loc, op, binaryNode->getLeft()); + break; default: break; } diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 6e50a9d45e..a793a5df76 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -633,6 +633,7 @@ bool DeduceVersionProfile(TInfoSink& infoSink, EShLanguage stage, bool versionNo infoSink.info.message(EPrefixError, "#version: mesh/task shaders require es profile with version 320 or above, or non-es profile with version 450 or above"); version = profile == EEsProfile ? 320 : 450; } + break; default: break; } diff --git a/glslang/MachineIndependent/SymbolTable.cpp b/glslang/MachineIndependent/SymbolTable.cpp index dae5a8b918..3b56e414bc 100644 --- a/glslang/MachineIndependent/SymbolTable.cpp +++ b/glslang/MachineIndependent/SymbolTable.cpp @@ -149,6 +149,7 @@ void TType::buildMangledName(TString& mangledName) const mangledName += '-'; (*structure)[i].type->buildMangledName(mangledName); } + break; default: break; } From 1fc174387df6b1e973dbece967740620a47707a8 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 20 Feb 2024 18:17:02 -0500 Subject: [PATCH 423/594] Refactor reflection.cpp to silence fallthrough warnings Since assert(0) compiles to nothing on release builds, it's not sufficient to silence a fallthrough warning. Instead, some switch statements are changed into if/else and others have the assert(0) replaced with "return 0". --- glslang/MachineIndependent/reflection.cpp | 158 +++++++++++----------- 1 file changed, 76 insertions(+), 82 deletions(-) diff --git a/glslang/MachineIndependent/reflection.cpp b/glslang/MachineIndependent/reflection.cpp index a6ba48fcbe..7e3160929c 100644 --- a/glslang/MachineIndependent/reflection.cpp +++ b/glslang/MachineIndependent/reflection.cpp @@ -704,80 +704,73 @@ class TReflectionTraverser : public TIntermTraverser { case EbtFloat: switch ((int)sampler.dim) { case Esd1D: - switch ((int)sampler.shadow) { - case false: return sampler.arrayed ? GL_SAMPLER_1D_ARRAY : GL_SAMPLER_1D; - case true: return sampler.arrayed ? GL_SAMPLER_1D_ARRAY_SHADOW : GL_SAMPLER_1D_SHADOW; - default: assert(0); - } + if (sampler.shadow) + return sampler.arrayed ? GL_SAMPLER_1D_ARRAY_SHADOW : GL_SAMPLER_1D_SHADOW; + else + return sampler.arrayed ? GL_SAMPLER_1D_ARRAY : GL_SAMPLER_1D; case Esd2D: - switch ((int)sampler.ms) { - case false: - switch ((int)sampler.shadow) { - case false: return sampler.arrayed ? GL_SAMPLER_2D_ARRAY : GL_SAMPLER_2D; - case true: return sampler.arrayed ? GL_SAMPLER_2D_ARRAY_SHADOW : GL_SAMPLER_2D_SHADOW; - default: assert(0); - } - case true: return sampler.arrayed ? GL_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_SAMPLER_2D_MULTISAMPLE; - default: assert(0); + if (sampler.ms) { + return sampler.arrayed ? GL_SAMPLER_2D_MULTISAMPLE_ARRAY : GL_SAMPLER_2D_MULTISAMPLE; + } else { + if (sampler.shadow) + return sampler.arrayed ? GL_SAMPLER_2D_ARRAY_SHADOW : GL_SAMPLER_2D_SHADOW; + else + return sampler.arrayed ? GL_SAMPLER_2D_ARRAY : GL_SAMPLER_2D; } case Esd3D: return GL_SAMPLER_3D; case EsdCube: - switch ((int)sampler.shadow) { - case false: return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY : GL_SAMPLER_CUBE; - case true: return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW : GL_SAMPLER_CUBE_SHADOW; - default: assert(0); - } + if (sampler.shadow) + return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW : GL_SAMPLER_CUBE_SHADOW; + else + return sampler.arrayed ? GL_SAMPLER_CUBE_MAP_ARRAY : GL_SAMPLER_CUBE; case EsdRect: return sampler.shadow ? GL_SAMPLER_2D_RECT_SHADOW : GL_SAMPLER_2D_RECT; case EsdBuffer: return GL_SAMPLER_BUFFER; - default: assert(0); + default: + return 0; } case EbtFloat16: switch ((int)sampler.dim) { case Esd1D: - switch ((int)sampler.shadow) { - case false: return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_AMD : GL_FLOAT16_SAMPLER_1D_AMD; - case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_1D_SHADOW_AMD; - default: assert(0); - } + if (sampler.shadow) + return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_1D_SHADOW_AMD; + else + return sampler.arrayed ? GL_FLOAT16_SAMPLER_1D_ARRAY_AMD : GL_FLOAT16_SAMPLER_1D_AMD; case Esd2D: - switch ((int)sampler.ms) { - case false: - switch ((int)sampler.shadow) { - case false: return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_AMD; - case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_2D_SHADOW_AMD; - default: assert(0); - } - case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD; - default: assert(0); + if (sampler.ms) { + return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_MULTISAMPLE_AMD; + } else { + if (sampler.shadow) + return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_2D_SHADOW_AMD; + else + return sampler.arrayed ? GL_FLOAT16_SAMPLER_2D_ARRAY_AMD : GL_FLOAT16_SAMPLER_2D_AMD; } case Esd3D: return GL_FLOAT16_SAMPLER_3D_AMD; case EsdCube: - switch ((int)sampler.shadow) { - case false: return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD : GL_FLOAT16_SAMPLER_CUBE_AMD; - case true: return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD; - default: assert(0); - } + if (sampler.shadow) + return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_SHADOW_AMD : GL_FLOAT16_SAMPLER_CUBE_SHADOW_AMD; + else + return sampler.arrayed ? GL_FLOAT16_SAMPLER_CUBE_MAP_ARRAY_AMD : GL_FLOAT16_SAMPLER_CUBE_AMD; case EsdRect: return sampler.shadow ? GL_FLOAT16_SAMPLER_2D_RECT_SHADOW_AMD : GL_FLOAT16_SAMPLER_2D_RECT_AMD; case EsdBuffer: return GL_FLOAT16_SAMPLER_BUFFER_AMD; - default: assert(0); + default: + return 0; } case EbtInt: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_INT_SAMPLER_1D_ARRAY : GL_INT_SAMPLER_1D; case Esd2D: - switch ((int)sampler.ms) { - case false: return sampler.arrayed ? GL_INT_SAMPLER_2D_ARRAY : GL_INT_SAMPLER_2D; - case true: return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY - : GL_INT_SAMPLER_2D_MULTISAMPLE; - default: assert(0); - } + if (sampler.ms) + return sampler.arrayed ? GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY + : GL_INT_SAMPLER_2D_MULTISAMPLE; + else + return sampler.arrayed ? GL_INT_SAMPLER_2D_ARRAY : GL_INT_SAMPLER_2D; case Esd3D: return GL_INT_SAMPLER_3D; case EsdCube: @@ -786,19 +779,19 @@ class TReflectionTraverser : public TIntermTraverser { return GL_INT_SAMPLER_2D_RECT; case EsdBuffer: return GL_INT_SAMPLER_BUFFER; - default: assert(0); + default: + return 0; } case EbtUint: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_1D_ARRAY : GL_UNSIGNED_INT_SAMPLER_1D; case Esd2D: - switch ((int)sampler.ms) { - case false: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D; - case true: return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY - : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE; - default: assert(0); - } + if (sampler.ms) + return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY + : GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE; + else + return sampler.arrayed ? GL_UNSIGNED_INT_SAMPLER_2D_ARRAY : GL_UNSIGNED_INT_SAMPLER_2D; case Esd3D: return GL_UNSIGNED_INT_SAMPLER_3D; case EsdCube: @@ -807,7 +800,8 @@ class TReflectionTraverser : public TIntermTraverser { return GL_UNSIGNED_INT_SAMPLER_2D_RECT; case EsdBuffer: return GL_UNSIGNED_INT_SAMPLER_BUFFER; - default: assert(0); + default: + return 0; } default: return 0; @@ -820,11 +814,10 @@ class TReflectionTraverser : public TIntermTraverser { case Esd1D: return sampler.arrayed ? GL_IMAGE_1D_ARRAY : GL_IMAGE_1D; case Esd2D: - switch ((int)sampler.ms) { - case false: return sampler.arrayed ? GL_IMAGE_2D_ARRAY : GL_IMAGE_2D; - case true: return sampler.arrayed ? GL_IMAGE_2D_MULTISAMPLE_ARRAY : GL_IMAGE_2D_MULTISAMPLE; - default: assert(0); - } + if (sampler.ms) + return sampler.arrayed ? GL_IMAGE_2D_MULTISAMPLE_ARRAY : GL_IMAGE_2D_MULTISAMPLE; + else + return sampler.arrayed ? GL_IMAGE_2D_ARRAY : GL_IMAGE_2D; case Esd3D: return GL_IMAGE_3D; case EsdCube: @@ -833,18 +826,18 @@ class TReflectionTraverser : public TIntermTraverser { return GL_IMAGE_2D_RECT; case EsdBuffer: return GL_IMAGE_BUFFER; - default: assert(0); + default: + return 0; } case EbtFloat16: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_FLOAT16_IMAGE_1D_ARRAY_AMD : GL_FLOAT16_IMAGE_1D_AMD; case Esd2D: - switch ((int)sampler.ms) { - case false: return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_AMD; - case true: return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD; - default: assert(0); - } + if (sampler.ms) + return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_MULTISAMPLE_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_MULTISAMPLE_AMD; + else + return sampler.arrayed ? GL_FLOAT16_IMAGE_2D_ARRAY_AMD : GL_FLOAT16_IMAGE_2D_AMD; case Esd3D: return GL_FLOAT16_IMAGE_3D_AMD; case EsdCube: @@ -853,18 +846,18 @@ class TReflectionTraverser : public TIntermTraverser { return GL_FLOAT16_IMAGE_2D_RECT_AMD; case EsdBuffer: return GL_FLOAT16_IMAGE_BUFFER_AMD; - default: assert(0); + default: + return 0; } case EbtInt: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_INT_IMAGE_1D_ARRAY : GL_INT_IMAGE_1D; case Esd2D: - switch ((int)sampler.ms) { - case false: return sampler.arrayed ? GL_INT_IMAGE_2D_ARRAY : GL_INT_IMAGE_2D; - case true: return sampler.arrayed ? GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_INT_IMAGE_2D_MULTISAMPLE; - default: assert(0); - } + if (sampler.ms) + return sampler.arrayed ? GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY : GL_INT_IMAGE_2D_MULTISAMPLE; + else + return sampler.arrayed ? GL_INT_IMAGE_2D_ARRAY : GL_INT_IMAGE_2D; case Esd3D: return GL_INT_IMAGE_3D; case EsdCube: @@ -873,19 +866,19 @@ class TReflectionTraverser : public TIntermTraverser { return GL_INT_IMAGE_2D_RECT; case EsdBuffer: return GL_INT_IMAGE_BUFFER; - default: assert(0); + default: + return 0; } case EbtUint: switch ((int)sampler.dim) { case Esd1D: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_1D_ARRAY : GL_UNSIGNED_INT_IMAGE_1D; case Esd2D: - switch ((int)sampler.ms) { - case false: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_ARRAY : GL_UNSIGNED_INT_IMAGE_2D; - case true: return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY - : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE; - default: assert(0); - } + if (sampler.ms) + return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY + : GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE; + else + return sampler.arrayed ? GL_UNSIGNED_INT_IMAGE_2D_ARRAY : GL_UNSIGNED_INT_IMAGE_2D; case Esd3D: return GL_UNSIGNED_INT_IMAGE_3D; case EsdCube: @@ -894,7 +887,8 @@ class TReflectionTraverser : public TIntermTraverser { return GL_UNSIGNED_INT_IMAGE_2D_RECT; case EsdBuffer: return GL_UNSIGNED_INT_IMAGE_BUFFER; - default: assert(0); + default: + return 0; } default: return 0; @@ -959,7 +953,7 @@ class TReflectionTraverser : public TIntermTraverser { case 4: return GL_FLOAT_MAT4; default: return 0; } - default: assert(0); + default: return 0; } case EbtDouble: switch (type.getMatrixCols()) { @@ -984,7 +978,7 @@ class TReflectionTraverser : public TIntermTraverser { case 4: return GL_DOUBLE_MAT4; default: return 0; } - default: assert(0); + default: return 0; } case EbtFloat16: switch (type.getMatrixCols()) { @@ -1009,7 +1003,7 @@ class TReflectionTraverser : public TIntermTraverser { case 4: return GL_FLOAT16_MAT4_AMD; default: return 0; } - default: assert(0); + default: return 0; } default: return 0; From 78e5d7976ed14c27534f3a4a5a2812b2f7765c0f Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 19 Feb 2024 18:46:46 -0500 Subject: [PATCH 424/594] cmake: Enable implicit fallthrough warnings for gcc and clang --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 61edc7b6e5..1f1680cf05 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -139,7 +139,7 @@ else() endif() if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") - add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs + add_compile_options(-Wall -Wmaybe-uninitialized -Wuninitialized -Wunused -Wunused-local-typedefs -Wimplicit-fallthrough -Wunused-parameter -Wunused-value -Wunused-variable -Wunused-but-set-parameter -Wunused-but-set-variable -fno-exceptions) if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) @@ -158,7 +158,7 @@ if(${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") endif() endif() elseif(${CMAKE_CXX_COMPILER_ID} MATCHES "Clang" AND NOT MSVC) - add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs + add_compile_options(-Wall -Wuninitialized -Wunused -Wunused-local-typedefs -Wimplicit-fallthrough -Wunused-parameter -Wunused-value -Wunused-variable) if(NOT ENABLE_RTTI) add_compile_options(-fno-rtti) From 2518af09c8b39423e76db9efdf94a5a478f4e5fc Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Wed, 21 Feb 2024 12:09:36 -0600 Subject: [PATCH 425/594] Change fp16_vector_atomic to not require other SPIR-V atomic extensions --- SPIRV/GlslangToSpv.cpp | 65 ++++++++++--------- Test/baseResults/spv.nvAtomicFp16Vec.frag.out | 2 - 2 files changed, 33 insertions(+), 34 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index f5e954b305..187ecc0b5c 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -7849,19 +7849,20 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv opCode = spv::OpAtomicIAdd; if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::OpAtomicFAddEXT; - builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_add); - if (typeProxy == glslang::EbtFloat16) { - if (opType.getVectorSize() == 2 || opType.getVectorSize() == 4) { - builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); - builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); - } else { + if (typeProxy == glslang::EbtFloat16 && + (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { + builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); + builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); + } else { + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_add); + if (typeProxy == glslang::EbtFloat16) { builder.addExtension(spv::E_SPV_EXT_shader_atomic_float16_add); builder.addCapability(spv::CapabilityAtomicFloat16AddEXT); + } else if (typeProxy == glslang::EbtFloat) { + builder.addCapability(spv::CapabilityAtomicFloat32AddEXT); + } else { + builder.addCapability(spv::CapabilityAtomicFloat64AddEXT); } - } else if (typeProxy == glslang::EbtFloat) { - builder.addCapability(spv::CapabilityAtomicFloat32AddEXT); - } else { - builder.addCapability(spv::CapabilityAtomicFloat64AddEXT); } } break; @@ -7874,19 +7875,19 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv case glslang::EOpAtomicCounterMin: if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::OpAtomicFMinEXT; - builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); - if (typeProxy == glslang::EbtFloat16) { - if (opType.getVectorSize() == 2 || opType.getVectorSize() == 4) { - builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); - builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); - } else { + if (typeProxy == glslang::EbtFloat16 && + (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { + builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); + builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); + } else { + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); + if (typeProxy == glslang::EbtFloat16) builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); - } + else if (typeProxy == glslang::EbtFloat) + builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); + else + builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT); } - else if (typeProxy == glslang::EbtFloat) - builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); - else - builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT); } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) { opCode = spv::OpAtomicUMin; } else { @@ -7898,19 +7899,19 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv case glslang::EOpAtomicCounterMax: if (typeProxy == glslang::EbtFloat16 || typeProxy == glslang::EbtFloat || typeProxy == glslang::EbtDouble) { opCode = spv::OpAtomicFMaxEXT; - builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); - if (typeProxy == glslang::EbtFloat16) { - if (opType.getVectorSize() == 2 || opType.getVectorSize() == 4) { - builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); - builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); - } else { + if (typeProxy == glslang::EbtFloat16 && + (opType.getVectorSize() == 2 || opType.getVectorSize() == 4)) { + builder.addExtension(spv::E_SPV_NV_shader_atomic_fp16_vector); + builder.addCapability(spv::CapabilityAtomicFloat16VectorNV); + } else { + builder.addExtension(spv::E_SPV_EXT_shader_atomic_float_min_max); + if (typeProxy == glslang::EbtFloat16) builder.addCapability(spv::CapabilityAtomicFloat16MinMaxEXT); - } + else if (typeProxy == glslang::EbtFloat) + builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); + else + builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT); } - else if (typeProxy == glslang::EbtFloat) - builder.addCapability(spv::CapabilityAtomicFloat32MinMaxEXT); - else - builder.addCapability(spv::CapabilityAtomicFloat64MinMaxEXT); } else if (typeProxy == glslang::EbtUint || typeProxy == glslang::EbtUint64) { opCode = spv::OpAtomicUMax; } else { diff --git a/Test/baseResults/spv.nvAtomicFp16Vec.frag.out b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out index c9212c0ee6..6d5f6da1b8 100644 --- a/Test/baseResults/spv.nvAtomicFp16Vec.frag.out +++ b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out @@ -10,8 +10,6 @@ spv.nvAtomicFp16Vec.frag Capability StorageImageExtendedFormats Capability StorageUniformBufferBlock16 Capability AtomicFloat16VectorNV - Extension "SPV_EXT_shader_atomic_float_add" - Extension "SPV_EXT_shader_atomic_float_min_max" Extension "SPV_KHR_16bit_storage" Extension "SPV_NV_shader_atomic_fp16_vector" 1: ExtInstImport "GLSL.std.450" From 2c4348f0644265b31f4617924994272b4867b0ad Mon Sep 17 00:00:00 2001 From: Pavel Asyutchenko Date: Thu, 22 Feb 2024 00:07:01 +0100 Subject: [PATCH 426/594] Fix HLSL built-in passthrough via inout --- Test/baseResults/hlsl.entry-inout.vert.out | 137 +++++++++++++++++++++ Test/hlsl.entry-inout.vert | 1 + glslang/HLSL/hlslParseHelper.cpp | 4 + gtests/Hlsl.FromFile.cpp | 1 + 4 files changed, 143 insertions(+) create mode 100644 Test/baseResults/hlsl.entry-inout.vert.out create mode 100644 Test/hlsl.entry-inout.vert diff --git a/Test/baseResults/hlsl.entry-inout.vert.out b/Test/baseResults/hlsl.entry-inout.vert.out new file mode 100644 index 0000000000..7b0ebd7afd --- /dev/null +++ b/Test/baseResults/hlsl.entry-inout.vert.out @@ -0,0 +1,137 @@ +hlsl.entry-inout.vert +Shader version: 500 +0:? Sequence +0:1 Function Definition: @main(vf4;vf2; ( temp void) +0:1 Function Parameters: +0:1 'pos' ( inout 4-component vector of float) +0:1 'uv' ( inout 2-component vector of float) +0:1 Function Definition: main( ( temp void) +0:1 Function Parameters: +0:? Sequence +0:1 move second child to first child ( temp 4-component vector of float) +0:? 'pos' ( temp 4-component vector of float) +0:? 'pos' (layout( location=0) in 4-component vector of float) +0:1 move second child to first child ( temp 2-component vector of float) +0:? 'uv' ( temp 2-component vector of float) +0:? 'uv' (layout( location=1) in 2-component vector of float) +0:1 Function Call: @main(vf4;vf2; ( temp void) +0:? 'pos' ( temp 4-component vector of float) +0:? 'uv' ( temp 2-component vector of float) +0:1 move second child to first child ( temp 4-component vector of float) +0:? 'pos' ( out 4-component vector of float Position) +0:? 'pos' ( temp 4-component vector of float) +0:1 move second child to first child ( temp 2-component vector of float) +0:? 'uv' (layout( location=0) out 2-component vector of float) +0:? 'uv' ( temp 2-component vector of float) +0:? Linker Objects +0:? 'pos' (layout( location=0) in 4-component vector of float) +0:? 'uv' (layout( location=1) in 2-component vector of float) +0:? 'pos' ( out 4-component vector of float Position) +0:? 'uv' (layout( location=0) out 2-component vector of float) + + +Linked vertex stage: + + +Shader version: 500 +0:? Sequence +0:1 Function Definition: @main(vf4;vf2; ( temp void) +0:1 Function Parameters: +0:1 'pos' ( inout 4-component vector of float) +0:1 'uv' ( inout 2-component vector of float) +0:1 Function Definition: main( ( temp void) +0:1 Function Parameters: +0:? Sequence +0:1 move second child to first child ( temp 4-component vector of float) +0:? 'pos' ( temp 4-component vector of float) +0:? 'pos' (layout( location=0) in 4-component vector of float) +0:1 move second child to first child ( temp 2-component vector of float) +0:? 'uv' ( temp 2-component vector of float) +0:? 'uv' (layout( location=1) in 2-component vector of float) +0:1 Function Call: @main(vf4;vf2; ( temp void) +0:? 'pos' ( temp 4-component vector of float) +0:? 'uv' ( temp 2-component vector of float) +0:1 move second child to first child ( temp 4-component vector of float) +0:? 'pos' ( out 4-component vector of float Position) +0:? 'pos' ( temp 4-component vector of float) +0:1 move second child to first child ( temp 2-component vector of float) +0:? 'uv' (layout( location=0) out 2-component vector of float) +0:? 'uv' ( temp 2-component vector of float) +0:? Linker Objects +0:? 'pos' (layout( location=0) in 4-component vector of float) +0:? 'uv' (layout( location=1) in 2-component vector of float) +0:? 'pos' ( out 4-component vector of float Position) +0:? 'uv' (layout( location=0) out 2-component vector of float) + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 37 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 18 22 32 35 + Source HLSL 500 + Name 4 "main" + Name 14 "@main(vf4;vf2;" + Name 12 "pos" + Name 13 "uv" + Name 16 "pos" + Name 18 "pos" + Name 20 "uv" + Name 22 "uv" + Name 24 "param" + Name 26 "param" + Name 32 "pos" + Name 35 "uv" + Decorate 18(pos) Location 0 + Decorate 22(uv) Location 1 + Decorate 32(pos) BuiltIn Position + Decorate 35(uv) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 9: TypeVector 6(float) 2 + 10: TypePointer Function 9(fvec2) + 11: TypeFunction 2 8(ptr) 10(ptr) + 17: TypePointer Input 7(fvec4) + 18(pos): 17(ptr) Variable Input + 21: TypePointer Input 9(fvec2) + 22(uv): 21(ptr) Variable Input + 31: TypePointer Output 7(fvec4) + 32(pos): 31(ptr) Variable Output + 34: TypePointer Output 9(fvec2) + 35(uv): 34(ptr) Variable Output + 4(main): 2 Function None 3 + 5: Label + 16(pos): 8(ptr) Variable Function + 20(uv): 10(ptr) Variable Function + 24(param): 8(ptr) Variable Function + 26(param): 10(ptr) Variable Function + 19: 7(fvec4) Load 18(pos) + Store 16(pos) 19 + 23: 9(fvec2) Load 22(uv) + Store 20(uv) 23 + 25: 7(fvec4) Load 16(pos) + Store 24(param) 25 + 27: 9(fvec2) Load 20(uv) + Store 26(param) 27 + 28: 2 FunctionCall 14(@main(vf4;vf2;) 24(param) 26(param) + 29: 7(fvec4) Load 24(param) + Store 16(pos) 29 + 30: 9(fvec2) Load 26(param) + Store 20(uv) 30 + 33: 7(fvec4) Load 16(pos) + Store 32(pos) 33 + 36: 9(fvec2) Load 20(uv) + Store 35(uv) 36 + Return + FunctionEnd +14(@main(vf4;vf2;): 2 Function None 11 + 12(pos): 8(ptr) FunctionParameter + 13(uv): 10(ptr) FunctionParameter + 15: Label + Return + FunctionEnd diff --git a/Test/hlsl.entry-inout.vert b/Test/hlsl.entry-inout.vert new file mode 100644 index 0000000000..859b0307ab --- /dev/null +++ b/Test/hlsl.entry-inout.vert @@ -0,0 +1 @@ +void main(inout float4 pos : SV_Position, inout float2 uv : TEXCOORD0) {} diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 74c9c1d70f..a1ae55c82e 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -9658,6 +9658,10 @@ void HlslParseContext::correctOutput(TQualifier& qualifier) if (language != EShLangTessControl) qualifier.patch = false; + // Fixes Test/hlsl.entry-inout.vert (SV_Position will not become a varying). + if (qualifier.builtIn == EbvNone) + qualifier.builtIn = qualifier.declaredBuiltIn; + switch (qualifier.builtIn) { case EbvFragDepth: intermediate.setDepthReplacing(); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 5d0d2d6be5..cc0c9eb39d 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -216,6 +216,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.emptystructreturn.tesc", "main"}, {"hlsl.emptystruct.init.vert", "main"}, {"hlsl.entry-in.frag", "PixelShaderFunction"}, + {"hlsl.entry-inout.vert", "main"}, {"hlsl.entry-out.frag", "PixelShaderFunction"}, {"hlsl.fraggeom.frag", "main"}, {"hlsl.float1.frag", "PixelShaderFunction"}, From fa04cdf355d92d8593f45385f1d47d99ec986a6f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Feb 2024 06:05:18 +0000 Subject: [PATCH 427/594] Bump github/codeql-action from 3.24.3 to 3.24.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.3 to 3.24.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/379614612a29c9e28f31f39a59013eb8012a51f0...47b3d888fe66b639e431abf22ebca059152f1eea) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 9fb86eafbe..2d2a92107e 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@379614612a29c9e28f31f39a59013eb8012a51f0 # v3.24.3 + uses: github/codeql-action/upload-sarif@47b3d888fe66b639e431abf22ebca059152f1eea # v3.24.5 with: sarif_file: results.sarif From b0df68c490363ac347e454f79886293f661ce4f6 Mon Sep 17 00:00:00 2001 From: Nathaniel Cesario Date: Fri, 15 Dec 2023 12:08:05 -0700 Subject: [PATCH 428/594] Add support for GL_ARB_shading_language_include Add support for GL_ARB_shading_language_include. Usage is identical to the way GL_GOOGLE_include_directive currently works glslang (since GL_ARB_shading_language_include is inherently a runtime feature and glslang is an offline compiler). Users can simulate their runtime environment by using a custom glslang::TShader::Includer or using filenames that match their GL runtime names. Closes #249. --- ...cess.arb_shading_language_include.vert.err | 4 ++++ ...cess.arb_shading_language_include.vert.out | 0 ...clude_directive_missing_extension.vert.err | 7 +++++++ ...clude_directive_missing_extension.vert.out | 0 .../preprocessor.include.disabled.vert.err | 20 ++++++++++++++----- ...eprocess.arb_shading_language_include.vert | 14 +++++++++++++ ...s.include_directive_missing_extension.vert | 6 ++++++ glslang/MachineIndependent/Versions.cpp | 3 +++ glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/parseVersions.h | 5 +++++ .../MachineIndependent/preprocessor/Pp.cpp | 3 ++- gtests/Pp.FromFile.cpp | 2 ++ 12 files changed, 59 insertions(+), 6 deletions(-) create mode 100644 Test/baseResults/preprocess.arb_shading_language_include.vert.err create mode 100644 Test/baseResults/preprocess.arb_shading_language_include.vert.out create mode 100644 Test/baseResults/preprocess.include_directive_missing_extension.vert.err create mode 100644 Test/baseResults/preprocess.include_directive_missing_extension.vert.out create mode 100644 Test/preprocess.arb_shading_language_include.vert create mode 100644 Test/preprocess.include_directive_missing_extension.vert diff --git a/Test/baseResults/preprocess.arb_shading_language_include.vert.err b/Test/baseResults/preprocess.arb_shading_language_include.vert.err new file mode 100644 index 0000000000..29c6952eae --- /dev/null +++ b/Test/baseResults/preprocess.arb_shading_language_include.vert.err @@ -0,0 +1,4 @@ +ERROR: 0:7: '#include' : Could not process include directive for header name: bar.h +ERROR: 1 compilation errors. No code generated. + + diff --git a/Test/baseResults/preprocess.arb_shading_language_include.vert.out b/Test/baseResults/preprocess.arb_shading_language_include.vert.out new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Test/baseResults/preprocess.include_directive_missing_extension.vert.err b/Test/baseResults/preprocess.include_directive_missing_extension.vert.err new file mode 100644 index 0000000000..9675dfa092 --- /dev/null +++ b/Test/baseResults/preprocess.include_directive_missing_extension.vert.err @@ -0,0 +1,7 @@ +ERROR: 0:3: '#include' : required extension not requested: Possible extensions include: +GL_GOOGLE_include_directive +GL_ARB_shading_language_include +ERROR: 0:3: '#include' : Could not process include directive for header name: bar.h +ERROR: 2 compilation errors. No code generated. + + diff --git a/Test/baseResults/preprocess.include_directive_missing_extension.vert.out b/Test/baseResults/preprocess.include_directive_missing_extension.vert.out new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Test/baseResults/preprocessor.include.disabled.vert.err b/Test/baseResults/preprocessor.include.disabled.vert.err index 14192046a8..b0b82962ff 100644 --- a/Test/baseResults/preprocessor.include.disabled.vert.err +++ b/Test/baseResults/preprocessor.include.disabled.vert.err @@ -1,12 +1,22 @@ -ERROR: 0:8000: '#include' : required extension not requested: GL_GOOGLE_include_directive +ERROR: 0:8000: '#include' : required extension not requested: Possible extensions include: +GL_GOOGLE_include_directive +GL_ARB_shading_language_include ERROR: 0:8000: '#include' : must be followed by a header name -ERROR: 0:8001: '#include' : required extension not requested: GL_GOOGLE_include_directive +ERROR: 0:8001: '#include' : required extension not requested: Possible extensions include: +GL_GOOGLE_include_directive +GL_ARB_shading_language_include ERROR: 0:8001: '#include' : must be followed by a header name -ERROR: 0:8002: '#include' : required extension not requested: GL_GOOGLE_include_directive +ERROR: 0:8002: '#include' : required extension not requested: Possible extensions include: +GL_GOOGLE_include_directive +GL_ARB_shading_language_include ERROR: 0:8002: '#include' : Could not process include directive for header name: foo -ERROR: 0:8003: '#include' : required extension not requested: GL_GOOGLE_include_directive +ERROR: 0:8003: '#include' : required extension not requested: Possible extensions include: +GL_GOOGLE_include_directive +GL_ARB_shading_language_include ERROR: 0:8003: '#include' : extra content after header name: foo -ERROR: 0:8004: '#include' : required extension not requested: GL_GOOGLE_include_directive +ERROR: 0:8004: '#include' : required extension not requested: Possible extensions include: +GL_GOOGLE_include_directive +GL_ARB_shading_language_include ERROR: 0:8004: '#include' : expected newline after header name: no-eol ERROR: 10 compilation errors. No code generated. diff --git a/Test/preprocess.arb_shading_language_include.vert b/Test/preprocess.arb_shading_language_include.vert new file mode 100644 index 0000000000..9920951e55 --- /dev/null +++ b/Test/preprocess.arb_shading_language_include.vert @@ -0,0 +1,14 @@ +#version 150 + +#extension GL_ARB_shading_language_include : enable + +#define float4 vec4 + +#include "bar.h" + +out vec4 color; + +void main() +{ + color = i1 + vec4(1.0); +} diff --git a/Test/preprocess.include_directive_missing_extension.vert b/Test/preprocess.include_directive_missing_extension.vert new file mode 100644 index 0000000000..dbe5b9420c --- /dev/null +++ b/Test/preprocess.include_directive_missing_extension.vert @@ -0,0 +1,6 @@ +#version 150 + +#include "bar.h" + +void main() {} + diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 4019371ac9..0eb86a47ce 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -269,6 +269,7 @@ void TParseVersions::initializeExtensionBehavior() // #line and #include extensionBehavior[E_GL_GOOGLE_cpp_style_line_directive] = EBhDisable; extensionBehavior[E_GL_GOOGLE_include_directive] = EBhDisable; + extensionBehavior[E_GL_ARB_shading_language_include] = EBhDisable; extensionBehavior[E_GL_AMD_shader_ballot] = EBhDisable; extensionBehavior[E_GL_AMD_shader_trinary_minmax] = EBhDisable; @@ -983,6 +984,8 @@ void TParseVersions::updateExtensionBehavior(int line, const char* extension, co updateExtensionBehavior(line, "GL_OES_shader_io_blocks", behaviorString); else if (strcmp(extension, "GL_GOOGLE_include_directive") == 0) updateExtensionBehavior(line, "GL_GOOGLE_cpp_style_line_directive", behaviorString); + else if (strcmp(extension, "GL_ARB_shading_language_include") == 0) + updateExtensionBehavior(line, "GL_GOOGLE_cpp_style_line_directive", behaviorString); // subgroup_* to subgroup_basic else if (strcmp(extension, "GL_KHR_shader_subgroup_vote") == 0) updateExtensionBehavior(line, "GL_KHR_shader_subgroup_basic", behaviorString); diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 70240ffb56..833c9e3f31 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -241,6 +241,7 @@ const int Num_OVR_multiview_EXTs = sizeof(OVR_multiview_EXTs) / sizeof(OVR_multi // #line and #include const char* const E_GL_GOOGLE_cpp_style_line_directive = "GL_GOOGLE_cpp_style_line_directive"; const char* const E_GL_GOOGLE_include_directive = "GL_GOOGLE_include_directive"; +const char* const E_GL_ARB_shading_language_include = "GL_ARB_shading_language_include"; const char* const E_GL_AMD_shader_ballot = "GL_AMD_shader_ballot"; const char* const E_GL_AMD_shader_trinary_minmax = "GL_AMD_shader_trinary_minmax"; diff --git a/glslang/MachineIndependent/parseVersions.h b/glslang/MachineIndependent/parseVersions.h index 63841c408a..5c77e42ce3 100644 --- a/glslang/MachineIndependent/parseVersions.h +++ b/glslang/MachineIndependent/parseVersions.h @@ -83,6 +83,11 @@ class TParseVersions { const char* featureDesc); virtual void ppRequireExtensions(const TSourceLoc&, int numExtensions, const char* const extensions[], const char* featureDesc); + template + constexpr void ppRequireExtensions(const TSourceLoc& loc, Container extensions, const char* featureDesc) { + ppRequireExtensions(loc, static_cast(extensions.size()), extensions.data(), featureDesc); + } + virtual TExtensionBehavior getExtensionBehavior(const char*); virtual bool extensionTurnedOn(const char* const extension); virtual bool extensionsTurnedOn(int numExtensions, const char* const extensions[]); diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 16b9d24376..5f18c4e92e 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -973,7 +973,8 @@ int TPpContext::readCPPline(TPpToken* ppToken) break; case PpAtomInclude: if(!parseContext.isReadingHLSL()) { - parseContext.ppRequireExtensions(ppToken->loc, 1, &E_GL_GOOGLE_include_directive, "#include"); + const std::array exts = { E_GL_GOOGLE_include_directive, E_GL_ARB_shading_language_include }; + parseContext.ppRequireExtensions(ppToken->loc, exts, "#include"); } token = CPPinclude(ppToken); break; diff --git a/gtests/Pp.FromFile.cpp b/gtests/Pp.FromFile.cpp index 92b4d24922..1f960847d3 100644 --- a/gtests/Pp.FromFile.cpp +++ b/gtests/Pp.FromFile.cpp @@ -67,6 +67,8 @@ INSTANTIATE_TEST_SUITE_P( "preprocessor.defined.vert", "preprocessor.many.endif.vert", "preprocessor.eof_missing.vert", + "preprocess.arb_shading_language_include.vert", + "preprocess.include_directive_missing_extension.vert", })), FileNameAsCustomTestSuffix ); From bf08e1db5cc7d20530f86b1d9bdfc6a0c2da372c Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 24 Oct 2023 13:07:31 -0600 Subject: [PATCH 429/594] Fix debug info file and source strings The file and source text was not being set correctly in the test output. This change makes the test fixture consistent with the command line behavior, "-gVS", which was my original intent when I added these tests. --- .../spv.debuginfo.bufferref.glsl.frag.out | 30 +- .../spv.debuginfo.const_params.glsl.comp.out | 16 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 2070 +++++++++-------- Test/baseResults/spv.debuginfo.glsl.frag.out | 196 +- Test/baseResults/spv.debuginfo.glsl.geom.out | 168 +- Test/baseResults/spv.debuginfo.glsl.tesc.out | 142 +- Test/baseResults/spv.debuginfo.glsl.tese.out | 221 +- Test/baseResults/spv.debuginfo.glsl.vert.out | 322 ++- .../spv.debuginfo.rt_types.glsl.rgen.out | 90 +- .../spv.debuginfo.scalar_types.glsl.frag.out | 58 +- Test/spv.debuginfo.scalar_types.glsl.frag | 108 +- gtests/Spv.FromFile.cpp | 2 +- 12 files changed, 2155 insertions(+), 1268 deletions(-) diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index 0ad36a8d86..f4628811a6 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -13,7 +13,7 @@ spv.debuginfo.bufferref.glsl.frag MemoryModel PhysicalStorageBuffer64EXT GLSL450 EntryPoint Fragment 14 "main" 76 131 ExecutionMode 14 OriginUpperLeft - 2: String "" + 2: String "spv.debuginfo.bufferref.glsl.frag" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -23,6 +23,34 @@ spv.debuginfo.bufferref.glsl.frag // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +#version 450 core +#extension GL_EXT_buffer_reference : enable + +layout(buffer_reference, std430) buffer MeshVertexPositions { + float data[]; +}; + +struct Mesh { + MeshVertexPositions positions; +}; + +layout(set = 0, binding = 0) readonly buffer PerPass_meshes { + Mesh data[]; +} perPass_meshes; + +layout(location = 0) out vec4 out_fragColor; + +layout(location = 0) in flat uint tri_idx0; + +void main() { + Mesh meshData = perPass_meshes.data[tri_idx0]; + + vec3 vertex_pos0 = vec3(meshData.positions.data[3 * tri_idx0], + meshData.positions.data[3 * tri_idx0 + 1], + meshData.positions.data[3 * tri_idx0 + 2]); + + out_fragColor = vec4(vertex_pos0, 1.0); +} " 31: String "Mesh" 34: String "float" diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index 6d0b52fb1c..5676d1c828 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -10,7 +10,7 @@ spv.debuginfo.const_params.glsl.comp MemoryModel Logical GLSL450 EntryPoint GLCompute 14 "main" ExecutionMode 14 LocalSize 1 1 1 - 2: String "" + 2: String "spv.debuginfo.const_params.glsl.comp" 8: String "uint" 17: String "float" 35: String "function" @@ -21,6 +21,20 @@ spv.debuginfo.const_params.glsl.comp // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +#version 450 + +void function( + const float f, + const vec2 f2, + const vec3 f3, + const vec4 f4) +{ +} + +void main() +{ + function(0, vec2(0), vec3(0), vec4(0)); +} " 43: String "f" 49: String "f2" diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index b8cb662ecd..3ad62497dc 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -2,7 +2,7 @@ spv.debuginfo.glsl.comp Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 974 +// Id's are bound by 975 Capability Shader Extension "SPV_KHR_non_semantic_info" @@ -11,7 +11,7 @@ Validation failed MemoryModel Logical GLSL450 EntryPoint GLCompute 14 "main" 133 ExecutionMode 14 LocalSize 10 10 1 - 2: String "" + 2: String "spv.debuginfo.glsl.comp" 8: String "uint" 17: String "float" 33: String "springForce" @@ -22,6 +22,183 @@ Validation failed // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +struct Particle { + vec4 pos; + vec4 vel; + vec4 uv; + vec4 normal; + float pinned; +}; + +layout(std430, binding = 0) buffer ParticleIn { + Particle particleIn[ ]; +}; + +layout(std430, binding = 1) buffer ParticleOut { + Particle particleOut[ ]; +}; + +// todo: use shared memory to speed up calculation + +layout (local_size_x = 10, local_size_y = 10) in; + +layout (binding = 2) uniform UBO +{ + float deltaT; + float particleMass; + float springStiffness; + float damping; + float restDistH; + float restDistV; + float restDistD; + float sphereRadius; + vec4 spherePos; + vec4 gravity; + ivec2 particleCount; +} params; + +layout (push_constant) uniform PushConsts { + uint calculateNormals; +} pushConsts; + +vec3 springForce(vec3 p0, vec3 p1, float restDist) +{ + vec3 dist = p0 - p1; + return normalize(dist) * params.springStiffness * (length(dist) - restDist); +} + +void main() +{ + uvec3 id = gl_GlobalInvocationID; + + uint index = id.y * params.particleCount.x + id.x; + if (index > params.particleCount.x * params.particleCount.y) + return; + + // Pinned? + if (particleIn[index].pinned == 1.0) { + particleOut[index].pos = particleOut[index].pos; + particleOut[index].vel = vec4(0.0); + return; + } + + // Initial force from gravity + vec3 force = params.gravity.xyz * params.particleMass; + + vec3 pos = particleIn[index].pos.xyz; + vec3 vel = particleIn[index].vel.xyz; + + // Spring forces from neighboring particles + // left + if (id.x > 0) { + force += springForce(particleIn[index-1].pos.xyz, pos, params.restDistH); + } + // right + if (id.x < params.particleCount.x - 1) { + force += springForce(particleIn[index + 1].pos.xyz, pos, params.restDistH); + } + // upper + if (id.y < params.particleCount.y - 1) { + force += springForce(particleIn[index + params.particleCount.x].pos.xyz, pos, params.restDistV); + } + // lower + if (id.y > 0) { + force += springForce(particleIn[index - params.particleCount.x].pos.xyz, pos, params.restDistV); + } + // upper-left + if ((id.x > 0) && (id.y < params.particleCount.y - 1)) { + force += springForce(particleIn[index + params.particleCount.x - 1].pos.xyz, pos, params.restDistD); + } + // lower-left + if ((id.x > 0) && (id.y > 0)) { + force += springForce(particleIn[index - params.particleCount.x - 1].pos.xyz, pos, params.restDistD); + } + // upper-right + if ((id.x < params.particleCount.x - 1) && (id.y < params.particleCount.y - 1)) { + force += springForce(particleIn[index + params.particleCount.x + 1].pos.xyz, pos, params.restDistD); + } + // lower-right + if ((id.x < params.particleCount.x - 1) && (id.y > 0)) { + force += springForce(particleIn[index - params.particleCount.x + 1].pos.xyz, pos, params.restDistD); + } + + force += (-params.damping * vel); + + // Integrate + vec3 f = force * (1.0 / params.particleMass); + particleOut[index].pos = vec4(pos + vel * params.deltaT + 0.5 * f * params.deltaT * params.deltaT, 1.0); + particleOut[index].vel = vec4(vel + f * params.deltaT, 0.0); + + // Sphere collision + vec3 sphereDist = particleOut[index].pos.xyz - params.spherePos.xyz; + if (length(sphereDist) < params.sphereRadius + 0.01) { + // If the particle is inside the sphere, push it to the outer radius + particleOut[index].pos.xyz = params.spherePos.xyz + normalize(sphereDist) * (params.sphereRadius + 0.01); + // Cancel out velocity + particleOut[index].vel = vec4(0.0); + } + + // Normals + if (pushConsts.calculateNormals == 1) { + vec3 normal = vec3(0.0); + vec3 a, b, c; + if (id.y > 0) { + if (id.x > 0) { + a = particleIn[index - 1].pos.xyz - pos; + b = particleIn[index - params.particleCount.x - 1].pos.xyz - pos; + c = particleIn[index - params.particleCount.x].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + if (id.x < params.particleCount.x - 1) { + a = particleIn[index - params.particleCount.x].pos.xyz - pos; + b = particleIn[index - params.particleCount.x + 1].pos.xyz - pos; + c = particleIn[index + 1].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + } + if (id.y < params.particleCount.y - 1) { + if (id.x > 0) { + a = particleIn[index + params.particleCount.x].pos.xyz - pos; + b = particleIn[index + params.particleCount.x - 1].pos.xyz - pos; + c = particleIn[index - 1].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + if (id.x < params.particleCount.x - 1) { + a = particleIn[index + 1].pos.xyz - pos; + b = particleIn[index + params.particleCount.x + 1].pos.xyz - pos; + c = particleIn[index + params.particleCount.x].pos.xyz - pos; + normal += cross(a,b) + cross(b,c); + } + } + particleOut[index].normal = vec4(normalize(normal), 0.0f); + } +} " 43: String "p0" 49: String "p1" @@ -43,19 +220,20 @@ Validation failed 187: String "Particle" 193: String "particleIn" 197: String "ParticleIn" - 217: String "particleOut" - 220: String "ParticleOut" - 248: String "force" - 262: String "pos" - 272: String "vel" - 576: String "f" - 625: String "sphereDist" - 676: String "calculateNormals" - 679: String "PushConsts" - 686: String "pushConsts" - 720: String "a" - 734: String "b" - 751: String "c" + 202: String "" + 218: String "particleOut" + 221: String "ParticleOut" + 249: String "force" + 263: String "pos" + 273: String "vel" + 577: String "f" + 626: String "sphereDist" + 677: String "calculateNormals" + 680: String "PushConsts" + 687: String "pushConsts" + 721: String "a" + 735: String "b" + 752: String "c" Name 14 "main" Name 31 "springForce(vf3;vf3;f1;" Name 28 "p0" @@ -87,45 +265,45 @@ Validation failed Name 191 "ParticleIn" MemberName 191(ParticleIn) 0 "particleIn" Name 200 "" - Name 215 "ParticleOut" - MemberName 215(ParticleOut) 0 "particleOut" - Name 224 "" - Name 246 "force" - Name 260 "pos" - Name 270 "vel" - Name 292 "param" - Name 296 "param" - Name 298 "param" - Name 321 "param" - Name 325 "param" - Name 327 "param" - Name 354 "param" - Name 358 "param" - Name 360 "param" - Name 382 "param" - Name 386 "param" - Name 388 "param" - Name 425 "param" - Name 429 "param" - Name 431 "param" - Name 463 "param" - Name 467 "param" - Name 469 "param" - Name 509 "param" - Name 513 "param" - Name 515 "param" - Name 551 "param" - Name 555 "param" - Name 557 "param" - Name 574 "f" - Name 623 "sphereDist" - Name 674 "PushConsts" - MemberName 674(PushConsts) 0 "calculateNormals" - Name 684 "pushConsts" - Name 696 "normal" - Name 718 "a" - Name 732 "b" - Name 749 "c" + Name 216 "ParticleOut" + MemberName 216(ParticleOut) 0 "particleOut" + Name 225 "" + Name 247 "force" + Name 261 "pos" + Name 271 "vel" + Name 293 "param" + Name 297 "param" + Name 299 "param" + Name 322 "param" + Name 326 "param" + Name 328 "param" + Name 355 "param" + Name 359 "param" + Name 361 "param" + Name 383 "param" + Name 387 "param" + Name 389 "param" + Name 426 "param" + Name 430 "param" + Name 432 "param" + Name 464 "param" + Name 468 "param" + Name 470 "param" + Name 510 "param" + Name 514 "param" + Name 516 "param" + Name 552 "param" + Name 556 "param" + Name 558 "param" + Name 575 "f" + Name 624 "sphereDist" + Name 675 "PushConsts" + MemberName 675(PushConsts) 0 "calculateNormals" + Name 685 "pushConsts" + Name 697 "normal" + Name 719 "a" + Name 733 "b" + Name 750 "c" MemberDecorate 78(UBO) 0 Offset 0 MemberDecorate 78(UBO) 1 Offset 4 MemberDecorate 78(UBO) 2 Offset 8 @@ -151,14 +329,14 @@ Validation failed Decorate 191(ParticleIn) BufferBlock Decorate 200 DescriptorSet 0 Decorate 200 Binding 0 - Decorate 213 ArrayStride 80 - MemberDecorate 215(ParticleOut) 0 Offset 0 - Decorate 215(ParticleOut) BufferBlock - Decorate 224 DescriptorSet 0 - Decorate 224 Binding 1 - MemberDecorate 674(PushConsts) 0 Offset 0 - Decorate 674(PushConsts) Block - Decorate 973 BuiltIn WorkgroupSize + Decorate 214 ArrayStride 80 + MemberDecorate 216(ParticleOut) 0 Offset 0 + Decorate 216(ParticleOut) BufferBlock + Decorate 225 DescriptorSet 0 + Decorate 225 Binding 1 + MemberDecorate 675(PushConsts) 0 Offset 0 + Decorate 675(PushConsts) Block + Decorate 974 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -265,148 +443,148 @@ Validation failed 198: TypePointer Uniform 191(ParticleIn) 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 196 41 12 200: 198(ptr) Variable Uniform - 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 196 35 188 12 38 2 200 82 - 202: 73(int) Constant 0 - 206: 73(int) Constant 4 - 209: 16(float) Constant 1065353216 - 213: TypeRuntimeArray 177(Particle) - 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 186 12 -215(ParticleOut): TypeStruct 213 - 218: 7(int) Constant 40 - 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 217 214 35 218 195 12 12 13 - 221: 7(int) Constant 82 - 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 220 39 35 221 12 38 220 12 13 216 - 222: TypePointer Uniform 215(ParticleOut) - 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 219 41 12 - 224: 222(ptr) Variable Uniform - 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 219 35 221 12 38 2 224 82 - 230: TypePointer Uniform 71(fvec4) - 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 41 12 - 237: 7(int) Constant 83 - 238: 73(int) Constant 1 - 239: 16(float) Constant 0 - 240: 71(fvec4) ConstantComposite 239 239 239 239 - 243: 7(int) Constant 84 - 249: 7(int) Constant 88 - 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 248 20 35 249 12 55 40 - 253: 73(int) Constant 9 - 263: 7(int) Constant 90 - 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 262 20 35 263 12 55 40 - 273: 7(int) Constant 91 - 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 20 35 273 12 55 40 - 282: 7(int) Constant 95 - 290: 7(int) Constant 96 - 307: 7(int) Constant 99 - 319: 7(int) Constant 100 - 336: 7(int) Constant 103 - 348: 7(int) Constant 104 - 353: 73(int) Constant 5 - 369: 7(int) Constant 107 - 377: 7(int) Constant 108 - 397: 7(int) Constant 111 - 418: 7(int) Constant 112 - 424: 73(int) Constant 6 - 440: 7(int) Constant 115 - 457: 7(int) Constant 116 - 478: 7(int) Constant 119 - 503: 7(int) Constant 120 - 524: 7(int) Constant 123 - 545: 7(int) Constant 124 - 563: 73(int) Constant 3 - 567: 7(int) Constant 127 - 577: 7(int) Constant 130 - 575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 576 20 35 577 12 55 40 - 587: 7(int) Constant 131 - 594: 16(float) Constant 1056964608 - 611: 7(int) Constant 132 - 626: 7(int) Constant 135 - 624: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 625 20 35 626 12 55 40 - 633: 73(int) Constant 8 - 640: 7(int) Constant 136 - 642: 73(int) Constant 7 - 645: 16(float) Constant 1008981770 - 653: 7(int) Constant 138 - 672: 7(int) Constant 140 - 674(PushConsts): TypeStruct 7(int) - 677: 7(int) Constant 63 - 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 676 9 35 677 22 12 12 13 - 680: 7(int) Constant 144 - 678: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 679 39 35 680 12 38 679 12 13 675 - 681: TypePointer PushConstant 674(PushConsts) - 682: 7(int) Constant 9 - 683: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 678 682 12 - 684(pushConsts): 681(ptr) Variable PushConstant - 685: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 686 678 35 680 12 38 686 684(pushConsts) 82 - 687: TypePointer PushConstant 7(int) - 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 682 12 - 698: 7(int) Constant 145 - 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 20 35 698 12 55 40 - 702: 19(fvec3) ConstantComposite 239 239 239 - 705: 7(int) Constant 147 - 713: 7(int) Constant 148 - 721: 7(int) Constant 149 - 719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 20 35 721 12 55 40 - 735: 7(int) Constant 150 - 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 20 35 735 12 55 40 - 752: 7(int) Constant 151 - 750: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 751 20 35 752 12 55 40 - 767: 7(int) Constant 152 - 779: 7(int) Constant 154 - 791: 7(int) Constant 155 - 803: 7(int) Constant 156 - 816: 7(int) Constant 157 - 825: 7(int) Constant 158 - 838: 7(int) Constant 161 - 850: 7(int) Constant 162 - 858: 7(int) Constant 163 - 870: 7(int) Constant 164 - 883: 7(int) Constant 165 - 892: 7(int) Constant 166 - 904: 7(int) Constant 168 - 916: 7(int) Constant 169 - 925: 7(int) Constant 170 - 938: 7(int) Constant 171 - 950: 7(int) Constant 172 - 963: 7(int) Constant 175 - 972: 7(int) Constant 10 - 973: 121(ivec3) ConstantComposite 972 972 39 + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 202 196 35 188 12 38 202 200 82 + 203: 73(int) Constant 0 + 207: 73(int) Constant 4 + 210: 16(float) Constant 1065353216 + 214: TypeRuntimeArray 177(Particle) + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 186 12 +216(ParticleOut): TypeStruct 214 + 219: 7(int) Constant 40 + 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 218 215 35 219 195 12 12 13 + 222: 7(int) Constant 82 + 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 221 39 35 222 12 38 221 12 13 217 + 223: TypePointer Uniform 216(ParticleOut) + 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 220 41 12 + 225: 223(ptr) Variable Uniform + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 202 220 35 222 12 38 202 225 82 + 231: TypePointer Uniform 71(fvec4) + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 41 12 + 238: 7(int) Constant 83 + 239: 73(int) Constant 1 + 240: 16(float) Constant 0 + 241: 71(fvec4) ConstantComposite 240 240 240 240 + 244: 7(int) Constant 84 + 250: 7(int) Constant 88 + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 20 35 250 12 55 40 + 254: 73(int) Constant 9 + 264: 7(int) Constant 90 + 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 20 35 264 12 55 40 + 274: 7(int) Constant 91 + 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 273 20 35 274 12 55 40 + 283: 7(int) Constant 95 + 291: 7(int) Constant 96 + 308: 7(int) Constant 99 + 320: 7(int) Constant 100 + 337: 7(int) Constant 103 + 349: 7(int) Constant 104 + 354: 73(int) Constant 5 + 370: 7(int) Constant 107 + 378: 7(int) Constant 108 + 398: 7(int) Constant 111 + 419: 7(int) Constant 112 + 425: 73(int) Constant 6 + 441: 7(int) Constant 115 + 458: 7(int) Constant 116 + 479: 7(int) Constant 119 + 504: 7(int) Constant 120 + 525: 7(int) Constant 123 + 546: 7(int) Constant 124 + 564: 73(int) Constant 3 + 568: 7(int) Constant 127 + 578: 7(int) Constant 130 + 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 577 20 35 578 12 55 40 + 588: 7(int) Constant 131 + 595: 16(float) Constant 1056964608 + 612: 7(int) Constant 132 + 627: 7(int) Constant 135 + 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 626 20 35 627 12 55 40 + 634: 73(int) Constant 8 + 641: 7(int) Constant 136 + 643: 73(int) Constant 7 + 646: 16(float) Constant 1008981770 + 654: 7(int) Constant 138 + 673: 7(int) Constant 140 + 675(PushConsts): TypeStruct 7(int) + 678: 7(int) Constant 63 + 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 677 9 35 678 22 12 12 13 + 681: 7(int) Constant 144 + 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 680 39 35 681 12 38 680 12 13 676 + 682: TypePointer PushConstant 675(PushConsts) + 683: 7(int) Constant 9 + 684: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 679 683 12 + 685(pushConsts): 682(ptr) Variable PushConstant + 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 687 679 35 681 12 38 687 685(pushConsts) 82 + 688: TypePointer PushConstant 7(int) + 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 683 12 + 699: 7(int) Constant 145 + 698: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 20 35 699 12 55 40 + 703: 19(fvec3) ConstantComposite 240 240 240 + 706: 7(int) Constant 147 + 714: 7(int) Constant 148 + 722: 7(int) Constant 149 + 720: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 721 20 35 722 12 55 40 + 736: 7(int) Constant 150 + 734: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 735 20 35 736 12 55 40 + 753: 7(int) Constant 151 + 751: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 752 20 35 753 12 55 40 + 768: 7(int) Constant 152 + 780: 7(int) Constant 154 + 792: 7(int) Constant 155 + 804: 7(int) Constant 156 + 817: 7(int) Constant 157 + 826: 7(int) Constant 158 + 839: 7(int) Constant 161 + 851: 7(int) Constant 162 + 859: 7(int) Constant 163 + 871: 7(int) Constant 164 + 884: 7(int) Constant 165 + 893: 7(int) Constant 166 + 905: 7(int) Constant 168 + 917: 7(int) Constant 169 + 926: 7(int) Constant 170 + 939: 7(int) Constant 171 + 951: 7(int) Constant 172 + 964: 7(int) Constant 175 + 973: 7(int) Constant 10 + 974: 121(ivec3) ConstantComposite 973 973 39 14(main): 4 Function None 5 15: Label 125(id): 123(ptr) Variable Function 139(index): 137(ptr) Variable Function - 246(force): 21(ptr) Variable Function - 260(pos): 21(ptr) Variable Function - 270(vel): 21(ptr) Variable Function - 292(param): 21(ptr) Variable Function - 296(param): 21(ptr) Variable Function - 298(param): 24(ptr) Variable Function - 321(param): 21(ptr) Variable Function - 325(param): 21(ptr) Variable Function - 327(param): 24(ptr) Variable Function - 354(param): 21(ptr) Variable Function - 358(param): 21(ptr) Variable Function - 360(param): 24(ptr) Variable Function - 382(param): 21(ptr) Variable Function - 386(param): 21(ptr) Variable Function - 388(param): 24(ptr) Variable Function - 425(param): 21(ptr) Variable Function - 429(param): 21(ptr) Variable Function - 431(param): 24(ptr) Variable Function - 463(param): 21(ptr) Variable Function - 467(param): 21(ptr) Variable Function - 469(param): 24(ptr) Variable Function - 509(param): 21(ptr) Variable Function - 513(param): 21(ptr) Variable Function - 515(param): 24(ptr) Variable Function - 551(param): 21(ptr) Variable Function - 555(param): 21(ptr) Variable Function - 557(param): 24(ptr) Variable Function - 574(f): 21(ptr) Variable Function - 623(sphereDist): 21(ptr) Variable Function - 696(normal): 21(ptr) Variable Function - 718(a): 21(ptr) Variable Function - 732(b): 21(ptr) Variable Function - 749(c): 21(ptr) Variable Function + 247(force): 21(ptr) Variable Function + 261(pos): 21(ptr) Variable Function + 271(vel): 21(ptr) Variable Function + 293(param): 21(ptr) Variable Function + 297(param): 21(ptr) Variable Function + 299(param): 24(ptr) Variable Function + 322(param): 21(ptr) Variable Function + 326(param): 21(ptr) Variable Function + 328(param): 24(ptr) Variable Function + 355(param): 21(ptr) Variable Function + 359(param): 21(ptr) Variable Function + 361(param): 24(ptr) Variable Function + 383(param): 21(ptr) Variable Function + 387(param): 21(ptr) Variable Function + 389(param): 24(ptr) Variable Function + 426(param): 21(ptr) Variable Function + 430(param): 21(ptr) Variable Function + 432(param): 24(ptr) Variable Function + 464(param): 21(ptr) Variable Function + 468(param): 21(ptr) Variable Function + 470(param): 24(ptr) Variable Function + 510(param): 21(ptr) Variable Function + 514(param): 21(ptr) Variable Function + 516(param): 24(ptr) Variable Function + 552(param): 21(ptr) Variable Function + 556(param): 21(ptr) Variable Function + 558(param): 24(ptr) Variable Function + 575(f): 21(ptr) Variable Function + 624(sphereDist): 21(ptr) Variable Function + 697(normal): 21(ptr) Variable Function + 719(a): 21(ptr) Variable Function + 733(b): 21(ptr) Variable Function + 750(c): 21(ptr) Variable Function 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 56 56 12 12 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 14(main) @@ -442,753 +620,753 @@ Validation failed 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 174 174 12 12 Return 171: Label - 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 188 188 12 12 - 203: 7(int) Load 139(index) - 207: 105(ptr) AccessChain 200 202 203 206 - 208: 16(float) Load 207 - 210: 166(bool) FOrdEqual 208 209 - SelectionMerge 212 None - BranchConditional 210 211 212 - 211: Label - 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 221 221 12 12 - 226: 7(int) Load 139(index) - 229: 7(int) Load 139(index) - 232: 230(ptr) AccessChain 224 202 229 202 - 233: 71(fvec4) Load 232 - 234: 230(ptr) AccessChain 224 202 226 202 - Store 234 233 - 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 237 237 12 12 - 235: 7(int) Load 139(index) - 241: 230(ptr) AccessChain 224 202 235 238 - Store 241 240 - 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 243 243 12 12 + 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 188 188 12 12 + 204: 7(int) Load 139(index) + 208: 105(ptr) AccessChain 200 203 204 207 + 209: 16(float) Load 208 + 211: 166(bool) FOrdEqual 209 210 + SelectionMerge 213 None + BranchConditional 211 212 213 + 212: Label + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 222 222 12 12 + 227: 7(int) Load 139(index) + 230: 7(int) Load 139(index) + 233: 231(ptr) AccessChain 225 203 230 203 + 234: 71(fvec4) Load 233 + 235: 231(ptr) AccessChain 225 203 227 203 + Store 235 234 + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 238 238 12 12 + 236: 7(int) Load 139(index) + 242: 231(ptr) AccessChain 225 203 236 239 + Store 242 241 + 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 244 244 12 12 Return - 212: Label - 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 249 249 12 12 - 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 247 246(force) 45 - 254: 230(ptr) AccessChain 101(params) 253 - 255: 71(fvec4) Load 254 - 256: 19(fvec3) VectorShuffle 255 255 0 1 2 - 257: 105(ptr) AccessChain 101(params) 238 - 258: 16(float) Load 257 - 259: 19(fvec3) VectorTimesScalar 256 258 - Store 246(force) 259 - 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 263 263 12 12 - 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 261 260(pos) 45 - 266: 7(int) Load 139(index) - 267: 230(ptr) AccessChain 200 202 266 202 - 268: 71(fvec4) Load 267 - 269: 19(fvec3) VectorShuffle 268 268 0 1 2 - Store 260(pos) 269 - 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 273 273 12 12 - 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(vel) 45 - 276: 7(int) Load 139(index) - 277: 230(ptr) AccessChain 200 202 276 238 - 278: 71(fvec4) Load 277 - 279: 19(fvec3) VectorShuffle 278 278 0 1 2 - Store 270(vel) 279 - 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 282 282 12 12 - 280: 137(ptr) AccessChain 125(id) 12 - 283: 7(int) Load 280 - 284: 166(bool) UGreaterThan 283 12 - SelectionMerge 286 None - BranchConditional 284 285 286 - 285: Label - 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 290 290 12 12 - 287: 7(int) Load 139(index) - 291: 7(int) ISub 287 39 - 293: 230(ptr) AccessChain 200 202 291 202 - 294: 71(fvec4) Load 293 - 295: 19(fvec3) VectorShuffle 294 294 0 1 2 - Store 292(param) 295 - 297: 19(fvec3) Load 260(pos) - Store 296(param) 297 - 299: 105(ptr) AccessChain 101(params) 206 - 300: 16(float) Load 299 - Store 298(param) 300 - 301: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 292(param) 296(param) 298(param) - 302: 19(fvec3) Load 246(force) - 303: 19(fvec3) FAdd 302 301 - Store 246(force) 303 - Branch 286 - 286: Label - 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 307 307 12 12 - 304: 137(ptr) AccessChain 125(id) 12 - 308: 7(int) Load 304 - 309: 148(ptr) AccessChain 101(params) 147 12 - 310: 73(int) Load 309 - 311: 73(int) ISub 310 238 - 312: 7(int) Bitcast 311 - 313: 166(bool) ULessThan 308 312 - SelectionMerge 315 None - BranchConditional 313 314 315 - 314: Label - 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 319 319 12 12 - 316: 7(int) Load 139(index) - 320: 7(int) IAdd 316 39 - 322: 230(ptr) AccessChain 200 202 320 202 - 323: 71(fvec4) Load 322 - 324: 19(fvec3) VectorShuffle 323 323 0 1 2 - Store 321(param) 324 - 326: 19(fvec3) Load 260(pos) - Store 325(param) 326 - 328: 105(ptr) AccessChain 101(params) 206 - 329: 16(float) Load 328 - Store 327(param) 329 - 330: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 321(param) 325(param) 327(param) - 331: 19(fvec3) Load 246(force) - 332: 19(fvec3) FAdd 331 330 - Store 246(force) 332 - Branch 315 - 315: Label - 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 336 336 12 12 - 333: 137(ptr) AccessChain 125(id) 39 - 337: 7(int) Load 333 - 338: 148(ptr) AccessChain 101(params) 147 39 - 339: 73(int) Load 338 - 340: 73(int) ISub 339 238 - 341: 7(int) Bitcast 340 - 342: 166(bool) ULessThan 337 341 - SelectionMerge 344 None - BranchConditional 342 343 344 - 343: Label - 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 348 348 12 12 - 345: 7(int) Load 139(index) - 349: 148(ptr) AccessChain 101(params) 147 12 - 350: 73(int) Load 349 - 351: 7(int) Bitcast 350 - 352: 7(int) IAdd 345 351 - 355: 230(ptr) AccessChain 200 202 352 202 - 356: 71(fvec4) Load 355 - 357: 19(fvec3) VectorShuffle 356 356 0 1 2 - Store 354(param) 357 - 359: 19(fvec3) Load 260(pos) - Store 358(param) 359 - 361: 105(ptr) AccessChain 101(params) 353 - 362: 16(float) Load 361 - Store 360(param) 362 - 363: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 354(param) 358(param) 360(param) - 364: 19(fvec3) Load 246(force) - 365: 19(fvec3) FAdd 364 363 - Store 246(force) 365 - Branch 344 - 344: Label - 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 369 369 12 12 - 366: 137(ptr) AccessChain 125(id) 39 - 370: 7(int) Load 366 - 371: 166(bool) UGreaterThan 370 12 - SelectionMerge 373 None - BranchConditional 371 372 373 - 372: Label - 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 377 377 12 12 - 374: 7(int) Load 139(index) - 378: 148(ptr) AccessChain 101(params) 147 12 - 379: 73(int) Load 378 - 380: 7(int) Bitcast 379 - 381: 7(int) ISub 374 380 - 383: 230(ptr) AccessChain 200 202 381 202 - 384: 71(fvec4) Load 383 - 385: 19(fvec3) VectorShuffle 384 384 0 1 2 - Store 382(param) 385 - 387: 19(fvec3) Load 260(pos) - Store 386(param) 387 - 389: 105(ptr) AccessChain 101(params) 353 - 390: 16(float) Load 389 - Store 388(param) 390 - 391: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 382(param) 386(param) 388(param) - 392: 19(fvec3) Load 246(force) - 393: 19(fvec3) FAdd 392 391 - Store 246(force) 393 - Branch 373 - 373: Label - 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 397 397 12 12 - 394: 137(ptr) AccessChain 125(id) 12 - 398: 7(int) Load 394 - 399: 166(bool) UGreaterThan 398 12 - SelectionMerge 401 None - BranchConditional 399 400 401 - 400: Label - 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 397 397 12 12 - 402: 137(ptr) AccessChain 125(id) 39 - 405: 7(int) Load 402 - 406: 148(ptr) AccessChain 101(params) 147 39 - 407: 73(int) Load 406 - 408: 73(int) ISub 407 238 - 409: 7(int) Bitcast 408 - 410: 166(bool) ULessThan 405 409 - Branch 401 - 401: Label - 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 411: 166(bool) Phi 399 373 410 400 - SelectionMerge 414 None - BranchConditional 411 413 414 - 413: Label - 416: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 418 418 12 12 - 415: 7(int) Load 139(index) - 419: 148(ptr) AccessChain 101(params) 147 12 - 420: 73(int) Load 419 - 421: 7(int) Bitcast 420 - 422: 7(int) IAdd 415 421 - 423: 7(int) ISub 422 39 - 426: 230(ptr) AccessChain 200 202 423 202 - 427: 71(fvec4) Load 426 - 428: 19(fvec3) VectorShuffle 427 427 0 1 2 - Store 425(param) 428 - 430: 19(fvec3) Load 260(pos) - Store 429(param) 430 - 432: 105(ptr) AccessChain 101(params) 424 - 433: 16(float) Load 432 - Store 431(param) 433 - 434: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 425(param) 429(param) 431(param) - 435: 19(fvec3) Load 246(force) - 436: 19(fvec3) FAdd 435 434 - Store 246(force) 436 - Branch 414 - 414: Label - 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 440 440 12 12 - 437: 137(ptr) AccessChain 125(id) 12 - 441: 7(int) Load 437 - 442: 166(bool) UGreaterThan 441 12 - SelectionMerge 444 None - BranchConditional 442 443 444 - 443: Label - 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 440 440 12 12 - 445: 137(ptr) AccessChain 125(id) 39 - 448: 7(int) Load 445 - 449: 166(bool) UGreaterThan 448 12 - Branch 444 - 444: Label - 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 450: 166(bool) Phi 442 414 449 443 - SelectionMerge 453 None - BranchConditional 450 452 453 - 452: Label - 455: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 457 457 12 12 - 454: 7(int) Load 139(index) - 458: 148(ptr) AccessChain 101(params) 147 12 - 459: 73(int) Load 458 - 460: 7(int) Bitcast 459 - 461: 7(int) ISub 454 460 - 462: 7(int) ISub 461 39 - 464: 230(ptr) AccessChain 200 202 462 202 - 465: 71(fvec4) Load 464 - 466: 19(fvec3) VectorShuffle 465 465 0 1 2 - Store 463(param) 466 - 468: 19(fvec3) Load 260(pos) - Store 467(param) 468 - 470: 105(ptr) AccessChain 101(params) 424 - 471: 16(float) Load 470 - Store 469(param) 471 - 472: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 463(param) 467(param) 469(param) - 473: 19(fvec3) Load 246(force) - 474: 19(fvec3) FAdd 473 472 - Store 246(force) 474 - Branch 453 - 453: Label - 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 478 478 12 12 - 475: 137(ptr) AccessChain 125(id) 12 - 479: 7(int) Load 475 - 480: 148(ptr) AccessChain 101(params) 147 12 - 481: 73(int) Load 480 - 482: 73(int) ISub 481 238 - 483: 7(int) Bitcast 482 - 484: 166(bool) ULessThan 479 483 - SelectionMerge 486 None - BranchConditional 484 485 486 - 485: Label - 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 478 478 12 12 - 487: 137(ptr) AccessChain 125(id) 39 - 490: 7(int) Load 487 - 491: 148(ptr) AccessChain 101(params) 147 39 - 492: 73(int) Load 491 - 493: 73(int) ISub 492 238 - 494: 7(int) Bitcast 493 - 495: 166(bool) ULessThan 490 494 - Branch 486 - 486: Label - 497: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 496: 166(bool) Phi 484 453 495 485 - SelectionMerge 499 None - BranchConditional 496 498 499 - 498: Label - 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 503 503 12 12 - 500: 7(int) Load 139(index) - 504: 148(ptr) AccessChain 101(params) 147 12 - 505: 73(int) Load 504 - 506: 7(int) Bitcast 505 - 507: 7(int) IAdd 500 506 - 508: 7(int) IAdd 507 39 - 510: 230(ptr) AccessChain 200 202 508 202 - 511: 71(fvec4) Load 510 - 512: 19(fvec3) VectorShuffle 511 511 0 1 2 - Store 509(param) 512 - 514: 19(fvec3) Load 260(pos) - Store 513(param) 514 - 516: 105(ptr) AccessChain 101(params) 424 - 517: 16(float) Load 516 - Store 515(param) 517 - 518: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 509(param) 513(param) 515(param) - 519: 19(fvec3) Load 246(force) - 520: 19(fvec3) FAdd 519 518 - Store 246(force) 520 - Branch 499 - 499: Label - 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 524 524 12 12 - 521: 137(ptr) AccessChain 125(id) 12 - 525: 7(int) Load 521 - 526: 148(ptr) AccessChain 101(params) 147 12 - 527: 73(int) Load 526 - 528: 73(int) ISub 527 238 - 529: 7(int) Bitcast 528 - 530: 166(bool) ULessThan 525 529 - SelectionMerge 532 None - BranchConditional 530 531 532 - 531: Label - 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 524 524 12 12 - 533: 137(ptr) AccessChain 125(id) 39 - 536: 7(int) Load 533 - 537: 166(bool) UGreaterThan 536 12 - Branch 532 - 532: Label - 539: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 538: 166(bool) Phi 530 499 537 531 - SelectionMerge 541 None - BranchConditional 538 540 541 - 540: Label - 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 545 545 12 12 - 542: 7(int) Load 139(index) - 546: 148(ptr) AccessChain 101(params) 147 12 - 547: 73(int) Load 546 - 548: 7(int) Bitcast 547 - 549: 7(int) ISub 542 548 - 550: 7(int) IAdd 549 39 - 552: 230(ptr) AccessChain 200 202 550 202 - 553: 71(fvec4) Load 552 - 554: 19(fvec3) VectorShuffle 553 553 0 1 2 - Store 551(param) 554 - 556: 19(fvec3) Load 260(pos) - Store 555(param) 556 - 558: 105(ptr) AccessChain 101(params) 424 - 559: 16(float) Load 558 - Store 557(param) 559 - 560: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 551(param) 555(param) 557(param) - 561: 19(fvec3) Load 246(force) - 562: 19(fvec3) FAdd 561 560 - Store 246(force) 562 - Branch 541 - 541: Label - 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 567 567 12 12 - 564: 105(ptr) AccessChain 101(params) 563 - 568: 16(float) Load 564 - 569: 16(float) FNegate 568 - 570: 19(fvec3) Load 270(vel) - 571: 19(fvec3) VectorTimesScalar 570 569 - 572: 19(fvec3) Load 246(force) - 573: 19(fvec3) FAdd 572 571 - Store 246(force) 573 - 579: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 577 577 12 12 - 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 575 574(f) 45 - 580: 19(fvec3) Load 246(force) - 581: 105(ptr) AccessChain 101(params) 238 - 582: 16(float) Load 581 - 583: 16(float) FDiv 209 582 - 584: 19(fvec3) VectorTimesScalar 580 583 - Store 574(f) 584 - 586: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 587 587 12 12 - 585: 7(int) Load 139(index) - 588: 19(fvec3) Load 260(pos) - 589: 19(fvec3) Load 270(vel) - 590: 105(ptr) AccessChain 101(params) 202 - 591: 16(float) Load 590 - 592: 19(fvec3) VectorTimesScalar 589 591 - 593: 19(fvec3) FAdd 588 592 - 595: 19(fvec3) Load 574(f) - 596: 19(fvec3) VectorTimesScalar 595 594 - 597: 105(ptr) AccessChain 101(params) 202 - 598: 16(float) Load 597 - 599: 19(fvec3) VectorTimesScalar 596 598 - 600: 105(ptr) AccessChain 101(params) 202 - 601: 16(float) Load 600 - 602: 19(fvec3) VectorTimesScalar 599 601 - 603: 19(fvec3) FAdd 593 602 - 604: 16(float) CompositeExtract 603 0 - 605: 16(float) CompositeExtract 603 1 - 606: 16(float) CompositeExtract 603 2 - 607: 71(fvec4) CompositeConstruct 604 605 606 209 - 608: 230(ptr) AccessChain 224 202 585 202 - Store 608 607 - 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 611 611 12 12 - 609: 7(int) Load 139(index) - 612: 19(fvec3) Load 270(vel) - 613: 19(fvec3) Load 574(f) - 614: 105(ptr) AccessChain 101(params) 202 - 615: 16(float) Load 614 - 616: 19(fvec3) VectorTimesScalar 613 615 - 617: 19(fvec3) FAdd 612 616 - 618: 16(float) CompositeExtract 617 0 - 619: 16(float) CompositeExtract 617 1 - 620: 16(float) CompositeExtract 617 2 - 621: 71(fvec4) CompositeConstruct 618 619 620 239 - 622: 230(ptr) AccessChain 224 202 609 238 - Store 622 621 - 628: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 626 626 12 12 - 627: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 624 623(sphereDist) 45 - 629: 7(int) Load 139(index) - 630: 230(ptr) AccessChain 224 202 629 202 - 631: 71(fvec4) Load 630 - 632: 19(fvec3) VectorShuffle 631 631 0 1 2 - 634: 230(ptr) AccessChain 101(params) 633 - 635: 71(fvec4) Load 634 - 636: 19(fvec3) VectorShuffle 635 635 0 1 2 - 637: 19(fvec3) FSub 632 636 - Store 623(sphereDist) 637 - 639: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 640 640 12 12 - 638: 19(fvec3) Load 623(sphereDist) - 641: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 638 - 643: 105(ptr) AccessChain 101(params) 642 - 644: 16(float) Load 643 - 646: 16(float) FAdd 644 645 - 647: 166(bool) FOrdLessThan 641 646 - SelectionMerge 649 None - BranchConditional 647 648 649 - 648: Label - 651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 652: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 653 653 12 12 - 650: 7(int) Load 139(index) - 654: 230(ptr) AccessChain 101(params) 633 - 655: 71(fvec4) Load 654 - 656: 19(fvec3) VectorShuffle 655 655 0 1 2 - 657: 19(fvec3) Load 623(sphereDist) - 658: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 657 - 659: 105(ptr) AccessChain 101(params) 642 - 660: 16(float) Load 659 - 661: 16(float) FAdd 660 645 - 662: 19(fvec3) VectorTimesScalar 658 661 - 663: 19(fvec3) FAdd 656 662 - 664: 105(ptr) AccessChain 224 202 650 202 12 - 665: 16(float) CompositeExtract 663 0 - Store 664 665 - 666: 105(ptr) AccessChain 224 202 650 202 39 - 667: 16(float) CompositeExtract 663 1 - Store 666 667 - 668: 105(ptr) AccessChain 224 202 650 202 41 - 669: 16(float) CompositeExtract 663 2 - Store 668 669 - 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 672 672 12 12 - 670: 7(int) Load 139(index) - 673: 230(ptr) AccessChain 224 202 670 238 - Store 673 240 - Branch 649 - 649: Label - 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 680 680 12 12 - 689: 687(ptr) AccessChain 684(pushConsts) 202 - 692: 7(int) Load 689 - 693: 166(bool) IEqual 692 39 - SelectionMerge 695 None - BranchConditional 693 694 695 - 694: Label - 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 698 698 12 12 - 699: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 697 696(normal) 45 - Store 696(normal) 702 - 704: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 705 705 12 12 - 703: 137(ptr) AccessChain 125(id) 39 - 706: 7(int) Load 703 - 707: 166(bool) UGreaterThan 706 12 - SelectionMerge 709 None - BranchConditional 707 708 709 - 708: Label - 711: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 713 713 12 12 - 710: 137(ptr) AccessChain 125(id) 12 - 714: 7(int) Load 710 - 715: 166(bool) UGreaterThan 714 12 - SelectionMerge 717 None - BranchConditional 715 716 717 - 716: Label - 723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 721 721 12 12 - 722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 719 718(a) 45 - 725: 7(int) Load 139(index) - 726: 7(int) ISub 725 39 - 727: 230(ptr) AccessChain 200 202 726 202 - 728: 71(fvec4) Load 727 - 729: 19(fvec3) VectorShuffle 728 728 0 1 2 - 730: 19(fvec3) Load 260(pos) - 731: 19(fvec3) FSub 729 730 - Store 718(a) 731 - 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 735 735 12 12 - 736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(b) 45 - 738: 7(int) Load 139(index) - 739: 148(ptr) AccessChain 101(params) 147 12 - 740: 73(int) Load 739 - 741: 7(int) Bitcast 740 - 742: 7(int) ISub 738 741 - 743: 7(int) ISub 742 39 - 744: 230(ptr) AccessChain 200 202 743 202 - 745: 71(fvec4) Load 744 - 746: 19(fvec3) VectorShuffle 745 745 0 1 2 - 747: 19(fvec3) Load 260(pos) - 748: 19(fvec3) FSub 746 747 - Store 732(b) 748 - 754: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 752 752 12 12 - 753: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 750 749(c) 45 - 755: 7(int) Load 139(index) - 756: 148(ptr) AccessChain 101(params) 147 12 - 757: 73(int) Load 756 - 758: 7(int) Bitcast 757 - 759: 7(int) ISub 755 758 - 760: 230(ptr) AccessChain 200 202 759 202 - 761: 71(fvec4) Load 760 - 762: 19(fvec3) VectorShuffle 761 761 0 1 2 - 763: 19(fvec3) Load 260(pos) - 764: 19(fvec3) FSub 762 763 - Store 749(c) 764 - 766: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 767 767 12 12 - 765: 19(fvec3) Load 718(a) - 768: 19(fvec3) Load 732(b) - 769: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 765 768 - 770: 19(fvec3) Load 732(b) - 771: 19(fvec3) Load 749(c) - 772: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 770 771 - 773: 19(fvec3) FAdd 769 772 - 774: 19(fvec3) Load 696(normal) - 775: 19(fvec3) FAdd 774 773 - Store 696(normal) 775 - Branch 717 - 717: Label - 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 778: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 779 779 12 12 - 776: 137(ptr) AccessChain 125(id) 12 - 780: 7(int) Load 776 - 781: 148(ptr) AccessChain 101(params) 147 12 - 782: 73(int) Load 781 - 783: 73(int) ISub 782 238 - 784: 7(int) Bitcast 783 - 785: 166(bool) ULessThan 780 784 - SelectionMerge 787 None - BranchConditional 785 786 787 - 786: Label - 789: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 791 791 12 12 - 788: 7(int) Load 139(index) - 792: 148(ptr) AccessChain 101(params) 147 12 - 793: 73(int) Load 792 - 794: 7(int) Bitcast 793 - 795: 7(int) ISub 788 794 - 796: 230(ptr) AccessChain 200 202 795 202 - 797: 71(fvec4) Load 796 - 798: 19(fvec3) VectorShuffle 797 797 0 1 2 - 799: 19(fvec3) Load 260(pos) - 800: 19(fvec3) FSub 798 799 - Store 718(a) 800 - 802: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 803 803 12 12 - 801: 7(int) Load 139(index) - 804: 148(ptr) AccessChain 101(params) 147 12 - 805: 73(int) Load 804 - 806: 7(int) Bitcast 805 - 807: 7(int) ISub 801 806 - 808: 7(int) IAdd 807 39 - 809: 230(ptr) AccessChain 200 202 808 202 - 810: 71(fvec4) Load 809 - 811: 19(fvec3) VectorShuffle 810 810 0 1 2 - 812: 19(fvec3) Load 260(pos) - 813: 19(fvec3) FSub 811 812 - Store 732(b) 813 - 815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 816 816 12 12 - 814: 7(int) Load 139(index) - 817: 7(int) IAdd 814 39 - 818: 230(ptr) AccessChain 200 202 817 202 - 819: 71(fvec4) Load 818 - 820: 19(fvec3) VectorShuffle 819 819 0 1 2 - 821: 19(fvec3) Load 260(pos) - 822: 19(fvec3) FSub 820 821 - Store 749(c) 822 - 824: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 825 825 12 12 - 823: 19(fvec3) Load 718(a) - 826: 19(fvec3) Load 732(b) - 827: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 823 826 - 828: 19(fvec3) Load 732(b) - 829: 19(fvec3) Load 749(c) - 830: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 828 829 - 831: 19(fvec3) FAdd 827 830 - 832: 19(fvec3) Load 696(normal) - 833: 19(fvec3) FAdd 832 831 - Store 696(normal) 833 - Branch 787 - 787: Label - 834: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - Branch 709 - 709: Label - 836: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 837: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 838 838 12 12 - 835: 137(ptr) AccessChain 125(id) 39 - 839: 7(int) Load 835 - 840: 148(ptr) AccessChain 101(params) 147 39 - 841: 73(int) Load 840 - 842: 73(int) ISub 841 238 - 843: 7(int) Bitcast 842 - 844: 166(bool) ULessThan 839 843 - SelectionMerge 846 None - BranchConditional 844 845 846 - 845: Label - 848: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 849: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 850 850 12 12 - 847: 137(ptr) AccessChain 125(id) 12 - 851: 7(int) Load 847 - 852: 166(bool) UGreaterThan 851 12 - SelectionMerge 854 None - BranchConditional 852 853 854 - 853: Label - 856: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 857: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 858 858 12 12 - 855: 7(int) Load 139(index) - 859: 148(ptr) AccessChain 101(params) 147 12 - 860: 73(int) Load 859 - 861: 7(int) Bitcast 860 - 862: 7(int) IAdd 855 861 - 863: 230(ptr) AccessChain 200 202 862 202 - 864: 71(fvec4) Load 863 - 865: 19(fvec3) VectorShuffle 864 864 0 1 2 - 866: 19(fvec3) Load 260(pos) - 867: 19(fvec3) FSub 865 866 - Store 718(a) 867 - 869: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 870 870 12 12 - 868: 7(int) Load 139(index) - 871: 148(ptr) AccessChain 101(params) 147 12 - 872: 73(int) Load 871 - 873: 7(int) Bitcast 872 - 874: 7(int) IAdd 868 873 - 875: 7(int) ISub 874 39 - 876: 230(ptr) AccessChain 200 202 875 202 - 877: 71(fvec4) Load 876 - 878: 19(fvec3) VectorShuffle 877 877 0 1 2 - 879: 19(fvec3) Load 260(pos) - 880: 19(fvec3) FSub 878 879 - Store 732(b) 880 - 882: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 883 883 12 12 - 881: 7(int) Load 139(index) - 884: 7(int) ISub 881 39 - 885: 230(ptr) AccessChain 200 202 884 202 - 886: 71(fvec4) Load 885 - 887: 19(fvec3) VectorShuffle 886 886 0 1 2 - 888: 19(fvec3) Load 260(pos) - 889: 19(fvec3) FSub 887 888 - Store 749(c) 889 - 891: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 892 892 12 12 - 890: 19(fvec3) Load 718(a) - 893: 19(fvec3) Load 732(b) - 894: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 890 893 - 895: 19(fvec3) Load 732(b) - 896: 19(fvec3) Load 749(c) - 897: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 895 896 - 898: 19(fvec3) FAdd 894 897 - 899: 19(fvec3) Load 696(normal) - 900: 19(fvec3) FAdd 899 898 - Store 696(normal) 900 - Branch 854 - 854: Label - 902: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 903: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 904 904 12 12 - 901: 137(ptr) AccessChain 125(id) 12 - 905: 7(int) Load 901 - 906: 148(ptr) AccessChain 101(params) 147 12 - 907: 73(int) Load 906 - 908: 73(int) ISub 907 238 - 909: 7(int) Bitcast 908 - 910: 166(bool) ULessThan 905 909 - SelectionMerge 912 None - BranchConditional 910 911 912 - 911: Label - 914: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 916 916 12 12 - 913: 7(int) Load 139(index) - 917: 7(int) IAdd 913 39 - 918: 230(ptr) AccessChain 200 202 917 202 - 919: 71(fvec4) Load 918 - 920: 19(fvec3) VectorShuffle 919 919 0 1 2 - 921: 19(fvec3) Load 260(pos) - 922: 19(fvec3) FSub 920 921 - Store 718(a) 922 - 924: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 925 925 12 12 - 923: 7(int) Load 139(index) - 926: 148(ptr) AccessChain 101(params) 147 12 - 927: 73(int) Load 926 - 928: 7(int) Bitcast 927 - 929: 7(int) IAdd 923 928 - 930: 7(int) IAdd 929 39 - 931: 230(ptr) AccessChain 200 202 930 202 - 932: 71(fvec4) Load 931 - 933: 19(fvec3) VectorShuffle 932 932 0 1 2 - 934: 19(fvec3) Load 260(pos) - 935: 19(fvec3) FSub 933 934 - Store 732(b) 935 - 937: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 938 938 12 12 - 936: 7(int) Load 139(index) - 939: 148(ptr) AccessChain 101(params) 147 12 - 940: 73(int) Load 939 - 941: 7(int) Bitcast 940 - 942: 7(int) IAdd 936 941 - 943: 230(ptr) AccessChain 200 202 942 202 - 944: 71(fvec4) Load 943 - 945: 19(fvec3) VectorShuffle 944 944 0 1 2 - 946: 19(fvec3) Load 260(pos) - 947: 19(fvec3) FSub 945 946 - Store 749(c) 947 - 949: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 950 950 12 12 - 948: 19(fvec3) Load 718(a) - 951: 19(fvec3) Load 732(b) - 952: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 948 951 - 953: 19(fvec3) Load 732(b) - 954: 19(fvec3) Load 749(c) - 955: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 953 954 - 956: 19(fvec3) FAdd 952 955 - 957: 19(fvec3) Load 696(normal) - 958: 19(fvec3) FAdd 957 956 - Store 696(normal) 958 - Branch 912 - 912: Label - 959: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - Branch 846 - 846: Label - 961: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 962: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 963 963 12 12 - 960: 7(int) Load 139(index) - 964: 19(fvec3) Load 696(normal) - 965: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 964 - 966: 16(float) CompositeExtract 965 0 - 967: 16(float) CompositeExtract 965 1 - 968: 16(float) CompositeExtract 965 2 - 969: 71(fvec4) CompositeConstruct 966 967 968 239 - 970: 230(ptr) AccessChain 224 202 960 563 - Store 970 969 - Branch 695 - 695: Label - 971: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 213: Label + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 250 250 12 12 + 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(force) 45 + 255: 231(ptr) AccessChain 101(params) 254 + 256: 71(fvec4) Load 255 + 257: 19(fvec3) VectorShuffle 256 256 0 1 2 + 258: 105(ptr) AccessChain 101(params) 239 + 259: 16(float) Load 258 + 260: 19(fvec3) VectorTimesScalar 257 259 + Store 247(force) 260 + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 264 264 12 12 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(pos) 45 + 267: 7(int) Load 139(index) + 268: 231(ptr) AccessChain 200 203 267 203 + 269: 71(fvec4) Load 268 + 270: 19(fvec3) VectorShuffle 269 269 0 1 2 + Store 261(pos) 270 + 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 274 274 12 12 + 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 272 271(vel) 45 + 277: 7(int) Load 139(index) + 278: 231(ptr) AccessChain 200 203 277 239 + 279: 71(fvec4) Load 278 + 280: 19(fvec3) VectorShuffle 279 279 0 1 2 + Store 271(vel) 280 + 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 283 283 12 12 + 281: 137(ptr) AccessChain 125(id) 12 + 284: 7(int) Load 281 + 285: 166(bool) UGreaterThan 284 12 + SelectionMerge 287 None + BranchConditional 285 286 287 + 286: Label + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 291 291 12 12 + 288: 7(int) Load 139(index) + 292: 7(int) ISub 288 39 + 294: 231(ptr) AccessChain 200 203 292 203 + 295: 71(fvec4) Load 294 + 296: 19(fvec3) VectorShuffle 295 295 0 1 2 + Store 293(param) 296 + 298: 19(fvec3) Load 261(pos) + Store 297(param) 298 + 300: 105(ptr) AccessChain 101(params) 207 + 301: 16(float) Load 300 + Store 299(param) 301 + 302: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 293(param) 297(param) 299(param) + 303: 19(fvec3) Load 247(force) + 304: 19(fvec3) FAdd 303 302 + Store 247(force) 304 + Branch 287 + 287: Label + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 308 308 12 12 + 305: 137(ptr) AccessChain 125(id) 12 + 309: 7(int) Load 305 + 310: 148(ptr) AccessChain 101(params) 147 12 + 311: 73(int) Load 310 + 312: 73(int) ISub 311 239 + 313: 7(int) Bitcast 312 + 314: 166(bool) ULessThan 309 313 + SelectionMerge 316 None + BranchConditional 314 315 316 + 315: Label + 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 320 320 12 12 + 317: 7(int) Load 139(index) + 321: 7(int) IAdd 317 39 + 323: 231(ptr) AccessChain 200 203 321 203 + 324: 71(fvec4) Load 323 + 325: 19(fvec3) VectorShuffle 324 324 0 1 2 + Store 322(param) 325 + 327: 19(fvec3) Load 261(pos) + Store 326(param) 327 + 329: 105(ptr) AccessChain 101(params) 207 + 330: 16(float) Load 329 + Store 328(param) 330 + 331: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 322(param) 326(param) 328(param) + 332: 19(fvec3) Load 247(force) + 333: 19(fvec3) FAdd 332 331 + Store 247(force) 333 + Branch 316 + 316: Label + 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 337 337 12 12 + 334: 137(ptr) AccessChain 125(id) 39 + 338: 7(int) Load 334 + 339: 148(ptr) AccessChain 101(params) 147 39 + 340: 73(int) Load 339 + 341: 73(int) ISub 340 239 + 342: 7(int) Bitcast 341 + 343: 166(bool) ULessThan 338 342 + SelectionMerge 345 None + BranchConditional 343 344 345 + 344: Label + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 349 349 12 12 + 346: 7(int) Load 139(index) + 350: 148(ptr) AccessChain 101(params) 147 12 + 351: 73(int) Load 350 + 352: 7(int) Bitcast 351 + 353: 7(int) IAdd 346 352 + 356: 231(ptr) AccessChain 200 203 353 203 + 357: 71(fvec4) Load 356 + 358: 19(fvec3) VectorShuffle 357 357 0 1 2 + Store 355(param) 358 + 360: 19(fvec3) Load 261(pos) + Store 359(param) 360 + 362: 105(ptr) AccessChain 101(params) 354 + 363: 16(float) Load 362 + Store 361(param) 363 + 364: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 355(param) 359(param) 361(param) + 365: 19(fvec3) Load 247(force) + 366: 19(fvec3) FAdd 365 364 + Store 247(force) 366 + Branch 345 + 345: Label + 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 370 370 12 12 + 367: 137(ptr) AccessChain 125(id) 39 + 371: 7(int) Load 367 + 372: 166(bool) UGreaterThan 371 12 + SelectionMerge 374 None + BranchConditional 372 373 374 + 373: Label + 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 377: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 378 378 12 12 + 375: 7(int) Load 139(index) + 379: 148(ptr) AccessChain 101(params) 147 12 + 380: 73(int) Load 379 + 381: 7(int) Bitcast 380 + 382: 7(int) ISub 375 381 + 384: 231(ptr) AccessChain 200 203 382 203 + 385: 71(fvec4) Load 384 + 386: 19(fvec3) VectorShuffle 385 385 0 1 2 + Store 383(param) 386 + 388: 19(fvec3) Load 261(pos) + Store 387(param) 388 + 390: 105(ptr) AccessChain 101(params) 354 + 391: 16(float) Load 390 + Store 389(param) 391 + 392: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 383(param) 387(param) 389(param) + 393: 19(fvec3) Load 247(force) + 394: 19(fvec3) FAdd 393 392 + Store 247(force) 394 + Branch 374 + 374: Label + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 397: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 398 398 12 12 + 395: 137(ptr) AccessChain 125(id) 12 + 399: 7(int) Load 395 + 400: 166(bool) UGreaterThan 399 12 + SelectionMerge 402 None + BranchConditional 400 401 402 + 401: Label + 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 398 398 12 12 + 403: 137(ptr) AccessChain 125(id) 39 + 406: 7(int) Load 403 + 407: 148(ptr) AccessChain 101(params) 147 39 + 408: 73(int) Load 407 + 409: 73(int) ISub 408 239 + 410: 7(int) Bitcast 409 + 411: 166(bool) ULessThan 406 410 + Branch 402 + 402: Label + 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 412: 166(bool) Phi 400 374 411 401 + SelectionMerge 415 None + BranchConditional 412 414 415 + 414: Label + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 419 419 12 12 + 416: 7(int) Load 139(index) + 420: 148(ptr) AccessChain 101(params) 147 12 + 421: 73(int) Load 420 + 422: 7(int) Bitcast 421 + 423: 7(int) IAdd 416 422 + 424: 7(int) ISub 423 39 + 427: 231(ptr) AccessChain 200 203 424 203 + 428: 71(fvec4) Load 427 + 429: 19(fvec3) VectorShuffle 428 428 0 1 2 + Store 426(param) 429 + 431: 19(fvec3) Load 261(pos) + Store 430(param) 431 + 433: 105(ptr) AccessChain 101(params) 425 + 434: 16(float) Load 433 + Store 432(param) 434 + 435: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 426(param) 430(param) 432(param) + 436: 19(fvec3) Load 247(force) + 437: 19(fvec3) FAdd 436 435 + Store 247(force) 437 + Branch 415 + 415: Label + 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 441 441 12 12 + 438: 137(ptr) AccessChain 125(id) 12 + 442: 7(int) Load 438 + 443: 166(bool) UGreaterThan 442 12 + SelectionMerge 445 None + BranchConditional 443 444 445 + 444: Label + 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 441 441 12 12 + 446: 137(ptr) AccessChain 125(id) 39 + 449: 7(int) Load 446 + 450: 166(bool) UGreaterThan 449 12 + Branch 445 + 445: Label + 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 451: 166(bool) Phi 443 415 450 444 + SelectionMerge 454 None + BranchConditional 451 453 454 + 453: Label + 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 458 458 12 12 + 455: 7(int) Load 139(index) + 459: 148(ptr) AccessChain 101(params) 147 12 + 460: 73(int) Load 459 + 461: 7(int) Bitcast 460 + 462: 7(int) ISub 455 461 + 463: 7(int) ISub 462 39 + 465: 231(ptr) AccessChain 200 203 463 203 + 466: 71(fvec4) Load 465 + 467: 19(fvec3) VectorShuffle 466 466 0 1 2 + Store 464(param) 467 + 469: 19(fvec3) Load 261(pos) + Store 468(param) 469 + 471: 105(ptr) AccessChain 101(params) 425 + 472: 16(float) Load 471 + Store 470(param) 472 + 473: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 464(param) 468(param) 470(param) + 474: 19(fvec3) Load 247(force) + 475: 19(fvec3) FAdd 474 473 + Store 247(force) 475 + Branch 454 + 454: Label + 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 478: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 479 479 12 12 + 476: 137(ptr) AccessChain 125(id) 12 + 480: 7(int) Load 476 + 481: 148(ptr) AccessChain 101(params) 147 12 + 482: 73(int) Load 481 + 483: 73(int) ISub 482 239 + 484: 7(int) Bitcast 483 + 485: 166(bool) ULessThan 480 484 + SelectionMerge 487 None + BranchConditional 485 486 487 + 486: Label + 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 479 479 12 12 + 488: 137(ptr) AccessChain 125(id) 39 + 491: 7(int) Load 488 + 492: 148(ptr) AccessChain 101(params) 147 39 + 493: 73(int) Load 492 + 494: 73(int) ISub 493 239 + 495: 7(int) Bitcast 494 + 496: 166(bool) ULessThan 491 495 + Branch 487 + 487: Label + 498: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 497: 166(bool) Phi 485 454 496 486 + SelectionMerge 500 None + BranchConditional 497 499 500 + 499: Label + 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 503: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 504 504 12 12 + 501: 7(int) Load 139(index) + 505: 148(ptr) AccessChain 101(params) 147 12 + 506: 73(int) Load 505 + 507: 7(int) Bitcast 506 + 508: 7(int) IAdd 501 507 + 509: 7(int) IAdd 508 39 + 511: 231(ptr) AccessChain 200 203 509 203 + 512: 71(fvec4) Load 511 + 513: 19(fvec3) VectorShuffle 512 512 0 1 2 + Store 510(param) 513 + 515: 19(fvec3) Load 261(pos) + Store 514(param) 515 + 517: 105(ptr) AccessChain 101(params) 425 + 518: 16(float) Load 517 + Store 516(param) 518 + 519: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 510(param) 514(param) 516(param) + 520: 19(fvec3) Load 247(force) + 521: 19(fvec3) FAdd 520 519 + Store 247(force) 521 + Branch 500 + 500: Label + 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 524: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 525 525 12 12 + 522: 137(ptr) AccessChain 125(id) 12 + 526: 7(int) Load 522 + 527: 148(ptr) AccessChain 101(params) 147 12 + 528: 73(int) Load 527 + 529: 73(int) ISub 528 239 + 530: 7(int) Bitcast 529 + 531: 166(bool) ULessThan 526 530 + SelectionMerge 533 None + BranchConditional 531 532 533 + 532: Label + 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 536: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 525 525 12 12 + 534: 137(ptr) AccessChain 125(id) 39 + 537: 7(int) Load 534 + 538: 166(bool) UGreaterThan 537 12 + Branch 533 + 533: Label + 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 539: 166(bool) Phi 531 500 538 532 + SelectionMerge 542 None + BranchConditional 539 541 542 + 541: Label + 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 546 546 12 12 + 543: 7(int) Load 139(index) + 547: 148(ptr) AccessChain 101(params) 147 12 + 548: 73(int) Load 547 + 549: 7(int) Bitcast 548 + 550: 7(int) ISub 543 549 + 551: 7(int) IAdd 550 39 + 553: 231(ptr) AccessChain 200 203 551 203 + 554: 71(fvec4) Load 553 + 555: 19(fvec3) VectorShuffle 554 554 0 1 2 + Store 552(param) 555 + 557: 19(fvec3) Load 261(pos) + Store 556(param) 557 + 559: 105(ptr) AccessChain 101(params) 425 + 560: 16(float) Load 559 + Store 558(param) 560 + 561: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 552(param) 556(param) 558(param) + 562: 19(fvec3) Load 247(force) + 563: 19(fvec3) FAdd 562 561 + Store 247(force) 563 + Branch 542 + 542: Label + 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 568 568 12 12 + 565: 105(ptr) AccessChain 101(params) 564 + 569: 16(float) Load 565 + 570: 16(float) FNegate 569 + 571: 19(fvec3) Load 271(vel) + 572: 19(fvec3) VectorTimesScalar 571 570 + 573: 19(fvec3) Load 247(force) + 574: 19(fvec3) FAdd 573 572 + Store 247(force) 574 + 580: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 578 578 12 12 + 579: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 576 575(f) 45 + 581: 19(fvec3) Load 247(force) + 582: 105(ptr) AccessChain 101(params) 239 + 583: 16(float) Load 582 + 584: 16(float) FDiv 210 583 + 585: 19(fvec3) VectorTimesScalar 581 584 + Store 575(f) 585 + 587: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 588 588 12 12 + 586: 7(int) Load 139(index) + 589: 19(fvec3) Load 261(pos) + 590: 19(fvec3) Load 271(vel) + 591: 105(ptr) AccessChain 101(params) 203 + 592: 16(float) Load 591 + 593: 19(fvec3) VectorTimesScalar 590 592 + 594: 19(fvec3) FAdd 589 593 + 596: 19(fvec3) Load 575(f) + 597: 19(fvec3) VectorTimesScalar 596 595 + 598: 105(ptr) AccessChain 101(params) 203 + 599: 16(float) Load 598 + 600: 19(fvec3) VectorTimesScalar 597 599 + 601: 105(ptr) AccessChain 101(params) 203 + 602: 16(float) Load 601 + 603: 19(fvec3) VectorTimesScalar 600 602 + 604: 19(fvec3) FAdd 594 603 + 605: 16(float) CompositeExtract 604 0 + 606: 16(float) CompositeExtract 604 1 + 607: 16(float) CompositeExtract 604 2 + 608: 71(fvec4) CompositeConstruct 605 606 607 210 + 609: 231(ptr) AccessChain 225 203 586 203 + Store 609 608 + 611: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 612 612 12 12 + 610: 7(int) Load 139(index) + 613: 19(fvec3) Load 271(vel) + 614: 19(fvec3) Load 575(f) + 615: 105(ptr) AccessChain 101(params) 203 + 616: 16(float) Load 615 + 617: 19(fvec3) VectorTimesScalar 614 616 + 618: 19(fvec3) FAdd 613 617 + 619: 16(float) CompositeExtract 618 0 + 620: 16(float) CompositeExtract 618 1 + 621: 16(float) CompositeExtract 618 2 + 622: 71(fvec4) CompositeConstruct 619 620 621 240 + 623: 231(ptr) AccessChain 225 203 610 239 + Store 623 622 + 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 627 627 12 12 + 628: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 625 624(sphereDist) 45 + 630: 7(int) Load 139(index) + 631: 231(ptr) AccessChain 225 203 630 203 + 632: 71(fvec4) Load 631 + 633: 19(fvec3) VectorShuffle 632 632 0 1 2 + 635: 231(ptr) AccessChain 101(params) 634 + 636: 71(fvec4) Load 635 + 637: 19(fvec3) VectorShuffle 636 636 0 1 2 + 638: 19(fvec3) FSub 633 637 + Store 624(sphereDist) 638 + 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 641 641 12 12 + 639: 19(fvec3) Load 624(sphereDist) + 642: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 639 + 644: 105(ptr) AccessChain 101(params) 643 + 645: 16(float) Load 644 + 647: 16(float) FAdd 645 646 + 648: 166(bool) FOrdLessThan 642 647 + SelectionMerge 650 None + BranchConditional 648 649 650 + 649: Label + 652: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 653: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 654 654 12 12 + 651: 7(int) Load 139(index) + 655: 231(ptr) AccessChain 101(params) 634 + 656: 71(fvec4) Load 655 + 657: 19(fvec3) VectorShuffle 656 656 0 1 2 + 658: 19(fvec3) Load 624(sphereDist) + 659: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 658 + 660: 105(ptr) AccessChain 101(params) 643 + 661: 16(float) Load 660 + 662: 16(float) FAdd 661 646 + 663: 19(fvec3) VectorTimesScalar 659 662 + 664: 19(fvec3) FAdd 657 663 + 665: 105(ptr) AccessChain 225 203 651 203 12 + 666: 16(float) CompositeExtract 664 0 + Store 665 666 + 667: 105(ptr) AccessChain 225 203 651 203 39 + 668: 16(float) CompositeExtract 664 1 + Store 667 668 + 669: 105(ptr) AccessChain 225 203 651 203 41 + 670: 16(float) CompositeExtract 664 2 + Store 669 670 + 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 673 673 12 12 + 671: 7(int) Load 139(index) + 674: 231(ptr) AccessChain 225 203 671 239 + Store 674 241 + Branch 650 + 650: Label + 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 692: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 681 681 12 12 + 690: 688(ptr) AccessChain 685(pushConsts) 203 + 693: 7(int) Load 690 + 694: 166(bool) IEqual 693 39 + SelectionMerge 696 None + BranchConditional 694 695 696 + 695: Label + 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 699 699 12 12 + 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 698 697(normal) 45 + Store 697(normal) 703 + 705: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 706 706 12 12 + 704: 137(ptr) AccessChain 125(id) 39 + 707: 7(int) Load 704 + 708: 166(bool) UGreaterThan 707 12 + SelectionMerge 710 None + BranchConditional 708 709 710 + 709: Label + 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 714 714 12 12 + 711: 137(ptr) AccessChain 125(id) 12 + 715: 7(int) Load 711 + 716: 166(bool) UGreaterThan 715 12 + SelectionMerge 718 None + BranchConditional 716 717 718 + 717: Label + 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 725: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 722 722 12 12 + 723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 720 719(a) 45 + 726: 7(int) Load 139(index) + 727: 7(int) ISub 726 39 + 728: 231(ptr) AccessChain 200 203 727 203 + 729: 71(fvec4) Load 728 + 730: 19(fvec3) VectorShuffle 729 729 0 1 2 + 731: 19(fvec3) Load 261(pos) + 732: 19(fvec3) FSub 730 731 + Store 719(a) 732 + 738: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 736 736 12 12 + 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 734 733(b) 45 + 739: 7(int) Load 139(index) + 740: 148(ptr) AccessChain 101(params) 147 12 + 741: 73(int) Load 740 + 742: 7(int) Bitcast 741 + 743: 7(int) ISub 739 742 + 744: 7(int) ISub 743 39 + 745: 231(ptr) AccessChain 200 203 744 203 + 746: 71(fvec4) Load 745 + 747: 19(fvec3) VectorShuffle 746 746 0 1 2 + 748: 19(fvec3) Load 261(pos) + 749: 19(fvec3) FSub 747 748 + Store 733(b) 749 + 755: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 753 753 12 12 + 754: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 751 750(c) 45 + 756: 7(int) Load 139(index) + 757: 148(ptr) AccessChain 101(params) 147 12 + 758: 73(int) Load 757 + 759: 7(int) Bitcast 758 + 760: 7(int) ISub 756 759 + 761: 231(ptr) AccessChain 200 203 760 203 + 762: 71(fvec4) Load 761 + 763: 19(fvec3) VectorShuffle 762 762 0 1 2 + 764: 19(fvec3) Load 261(pos) + 765: 19(fvec3) FSub 763 764 + Store 750(c) 765 + 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 768 768 12 12 + 766: 19(fvec3) Load 719(a) + 769: 19(fvec3) Load 733(b) + 770: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 766 769 + 771: 19(fvec3) Load 733(b) + 772: 19(fvec3) Load 750(c) + 773: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 771 772 + 774: 19(fvec3) FAdd 770 773 + 775: 19(fvec3) Load 697(normal) + 776: 19(fvec3) FAdd 775 774 + Store 697(normal) 776 + Branch 718 + 718: Label + 778: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 779: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 780 780 12 12 + 777: 137(ptr) AccessChain 125(id) 12 + 781: 7(int) Load 777 + 782: 148(ptr) AccessChain 101(params) 147 12 + 783: 73(int) Load 782 + 784: 73(int) ISub 783 239 + 785: 7(int) Bitcast 784 + 786: 166(bool) ULessThan 781 785 + SelectionMerge 788 None + BranchConditional 786 787 788 + 787: Label + 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 792 792 12 12 + 789: 7(int) Load 139(index) + 793: 148(ptr) AccessChain 101(params) 147 12 + 794: 73(int) Load 793 + 795: 7(int) Bitcast 794 + 796: 7(int) ISub 789 795 + 797: 231(ptr) AccessChain 200 203 796 203 + 798: 71(fvec4) Load 797 + 799: 19(fvec3) VectorShuffle 798 798 0 1 2 + 800: 19(fvec3) Load 261(pos) + 801: 19(fvec3) FSub 799 800 + Store 719(a) 801 + 803: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 804 804 12 12 + 802: 7(int) Load 139(index) + 805: 148(ptr) AccessChain 101(params) 147 12 + 806: 73(int) Load 805 + 807: 7(int) Bitcast 806 + 808: 7(int) ISub 802 807 + 809: 7(int) IAdd 808 39 + 810: 231(ptr) AccessChain 200 203 809 203 + 811: 71(fvec4) Load 810 + 812: 19(fvec3) VectorShuffle 811 811 0 1 2 + 813: 19(fvec3) Load 261(pos) + 814: 19(fvec3) FSub 812 813 + Store 733(b) 814 + 816: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 817 817 12 12 + 815: 7(int) Load 139(index) + 818: 7(int) IAdd 815 39 + 819: 231(ptr) AccessChain 200 203 818 203 + 820: 71(fvec4) Load 819 + 821: 19(fvec3) VectorShuffle 820 820 0 1 2 + 822: 19(fvec3) Load 261(pos) + 823: 19(fvec3) FSub 821 822 + Store 750(c) 823 + 825: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 826 826 12 12 + 824: 19(fvec3) Load 719(a) + 827: 19(fvec3) Load 733(b) + 828: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 824 827 + 829: 19(fvec3) Load 733(b) + 830: 19(fvec3) Load 750(c) + 831: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 829 830 + 832: 19(fvec3) FAdd 828 831 + 833: 19(fvec3) Load 697(normal) + 834: 19(fvec3) FAdd 833 832 + Store 697(normal) 834 + Branch 788 + 788: Label + 835: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + Branch 710 + 710: Label + 837: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 838: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 839 839 12 12 + 836: 137(ptr) AccessChain 125(id) 39 + 840: 7(int) Load 836 + 841: 148(ptr) AccessChain 101(params) 147 39 + 842: 73(int) Load 841 + 843: 73(int) ISub 842 239 + 844: 7(int) Bitcast 843 + 845: 166(bool) ULessThan 840 844 + SelectionMerge 847 None + BranchConditional 845 846 847 + 846: Label + 849: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 850: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 851 851 12 12 + 848: 137(ptr) AccessChain 125(id) 12 + 852: 7(int) Load 848 + 853: 166(bool) UGreaterThan 852 12 + SelectionMerge 855 None + BranchConditional 853 854 855 + 854: Label + 857: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 858: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 859 859 12 12 + 856: 7(int) Load 139(index) + 860: 148(ptr) AccessChain 101(params) 147 12 + 861: 73(int) Load 860 + 862: 7(int) Bitcast 861 + 863: 7(int) IAdd 856 862 + 864: 231(ptr) AccessChain 200 203 863 203 + 865: 71(fvec4) Load 864 + 866: 19(fvec3) VectorShuffle 865 865 0 1 2 + 867: 19(fvec3) Load 261(pos) + 868: 19(fvec3) FSub 866 867 + Store 719(a) 868 + 870: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 871 871 12 12 + 869: 7(int) Load 139(index) + 872: 148(ptr) AccessChain 101(params) 147 12 + 873: 73(int) Load 872 + 874: 7(int) Bitcast 873 + 875: 7(int) IAdd 869 874 + 876: 7(int) ISub 875 39 + 877: 231(ptr) AccessChain 200 203 876 203 + 878: 71(fvec4) Load 877 + 879: 19(fvec3) VectorShuffle 878 878 0 1 2 + 880: 19(fvec3) Load 261(pos) + 881: 19(fvec3) FSub 879 880 + Store 733(b) 881 + 883: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 884 884 12 12 + 882: 7(int) Load 139(index) + 885: 7(int) ISub 882 39 + 886: 231(ptr) AccessChain 200 203 885 203 + 887: 71(fvec4) Load 886 + 888: 19(fvec3) VectorShuffle 887 887 0 1 2 + 889: 19(fvec3) Load 261(pos) + 890: 19(fvec3) FSub 888 889 + Store 750(c) 890 + 892: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 893 893 12 12 + 891: 19(fvec3) Load 719(a) + 894: 19(fvec3) Load 733(b) + 895: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 891 894 + 896: 19(fvec3) Load 733(b) + 897: 19(fvec3) Load 750(c) + 898: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 896 897 + 899: 19(fvec3) FAdd 895 898 + 900: 19(fvec3) Load 697(normal) + 901: 19(fvec3) FAdd 900 899 + Store 697(normal) 901 + Branch 855 + 855: Label + 903: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 904: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 905 905 12 12 + 902: 137(ptr) AccessChain 125(id) 12 + 906: 7(int) Load 902 + 907: 148(ptr) AccessChain 101(params) 147 12 + 908: 73(int) Load 907 + 909: 73(int) ISub 908 239 + 910: 7(int) Bitcast 909 + 911: 166(bool) ULessThan 906 910 + SelectionMerge 913 None + BranchConditional 911 912 913 + 912: Label + 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 916: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 917 917 12 12 + 914: 7(int) Load 139(index) + 918: 7(int) IAdd 914 39 + 919: 231(ptr) AccessChain 200 203 918 203 + 920: 71(fvec4) Load 919 + 921: 19(fvec3) VectorShuffle 920 920 0 1 2 + 922: 19(fvec3) Load 261(pos) + 923: 19(fvec3) FSub 921 922 + Store 719(a) 923 + 925: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 926 926 12 12 + 924: 7(int) Load 139(index) + 927: 148(ptr) AccessChain 101(params) 147 12 + 928: 73(int) Load 927 + 929: 7(int) Bitcast 928 + 930: 7(int) IAdd 924 929 + 931: 7(int) IAdd 930 39 + 932: 231(ptr) AccessChain 200 203 931 203 + 933: 71(fvec4) Load 932 + 934: 19(fvec3) VectorShuffle 933 933 0 1 2 + 935: 19(fvec3) Load 261(pos) + 936: 19(fvec3) FSub 934 935 + Store 733(b) 936 + 938: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 939 939 12 12 + 937: 7(int) Load 139(index) + 940: 148(ptr) AccessChain 101(params) 147 12 + 941: 73(int) Load 940 + 942: 7(int) Bitcast 941 + 943: 7(int) IAdd 937 942 + 944: 231(ptr) AccessChain 200 203 943 203 + 945: 71(fvec4) Load 944 + 946: 19(fvec3) VectorShuffle 945 945 0 1 2 + 947: 19(fvec3) Load 261(pos) + 948: 19(fvec3) FSub 946 947 + Store 750(c) 948 + 950: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 951 951 12 12 + 949: 19(fvec3) Load 719(a) + 952: 19(fvec3) Load 733(b) + 953: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 949 952 + 954: 19(fvec3) Load 733(b) + 955: 19(fvec3) Load 750(c) + 956: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 954 955 + 957: 19(fvec3) FAdd 953 956 + 958: 19(fvec3) Load 697(normal) + 959: 19(fvec3) FAdd 958 957 + Store 697(normal) 959 + Branch 913 + 913: Label + 960: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + Branch 847 + 847: Label + 962: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 963: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 964 964 12 12 + 961: 7(int) Load 139(index) + 965: 19(fvec3) Load 697(normal) + 966: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 965 + 967: 16(float) CompositeExtract 966 0 + 968: 16(float) CompositeExtract 966 1 + 969: 16(float) CompositeExtract 966 2 + 970: 71(fvec4) CompositeConstruct 967 968 969 240 + 971: 231(ptr) AccessChain 225 203 961 564 + Store 971 970 + Branch 696 + 696: Label + 972: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 Return FunctionEnd 31(springForce(vf3;vf3;f1;): 19(fvec3) Function None 26 diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index e747bc136e..c2023e593e 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -12,7 +12,7 @@ Validation failed MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" 493 546 ExecutionMode 14 OriginUpperLeft - 2: String "" + 2: String "spv.debuginfo.glsl.frag" 8: String "uint" 17: String "float" 39: String "textureProj" @@ -23,6 +23,200 @@ Validation failed // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +layout (binding = 1) uniform sampler2D samplerposition; +layout (binding = 2) uniform sampler2D samplerNormal; +layout (binding = 3) uniform sampler2D samplerAlbedo; +layout (binding = 5) uniform sampler2DArray samplerShadowMap; + +layout (location = 0) in vec2 inUV; + +layout (location = 0) out vec4 outFragColor; + +#define LIGHT_COUNT 3 +#define SHADOW_FACTOR 0.25 +#define AMBIENT_LIGHT 0.1 +#define USE_PCF + +int global_var = 0; + +struct Light +{ + vec4 position; + vec4 target; + vec4 color; + mat4 viewMatrix; +}; + +layout (binding = 4) uniform UBO +{ + vec4 viewPos; + Light lights[LIGHT_COUNT]; + int useShadows; + int debugDisplayTarget; +} ubo; + +float textureProj(vec4 P, float layer, vec2 offset) +{ + float shadow = 1.0; + vec4 shadowCoord = P / P.w; + shadowCoord.st = shadowCoord.st * 0.5 + 0.5; + + if (shadowCoord.z > -1.0 && shadowCoord.z < 1.0) + { + float dist = texture(samplerShadowMap, vec3(shadowCoord.st + offset, layer)).r; + if (shadowCoord.w > 0.0 && dist < shadowCoord.z) + { + shadow = SHADOW_FACTOR; + } + } + return shadow; +} + +float filterPCF(vec4 sc, float layer) +{ + ivec2 texDim = textureSize(samplerShadowMap, 0).xy; + float scale = 1.5; + float dx = scale * 1.0 / float(texDim.x); + float dy = scale * 1.0 / float(texDim.y); + + float shadowFactor = 0.0; + int count = 0; + int range = 1; + + for (int x = -range; x <= range; x++) + { + for (int y = -range; y <= range; y++) + { + shadowFactor += textureProj(sc, layer, vec2(dx*x, dy*y)); + count++; + } + + } + return shadowFactor / count; +} + +vec3 shadow(vec3 fragcolor, vec3 fragpos) { + for(int i = 0; i < LIGHT_COUNT; ++i) + { + vec4 shadowClip = ubo.lights[i].viewMatrix * vec4(fragpos, 1.0); + + float shadowFactor; + #ifdef USE_PCF + shadowFactor= filterPCF(shadowClip, i); + #else + shadowFactor = textureProj(shadowClip, i, vec2(0.0)); + #endif + + fragcolor *= shadowFactor; + } + return fragcolor; +} + +void main() +{ + // Get G-Buffer values + vec3 fragPos = texture(samplerposition, inUV).rgb; + vec3 normal = texture(samplerNormal, inUV).rgb; + vec4 albedo = texture(samplerAlbedo, inUV); + + // Debug display + if (ubo.debugDisplayTarget > 0) { + switch (ubo.debugDisplayTarget) { + case 1: + outFragColor.rgb = shadow(vec3(1.0), fragPos).rgb; + break; + case 2: + outFragColor.rgb = fragPos; + break; + case 3: + outFragColor.rgb = normal; + break; + case 4: + outFragColor.rgb = albedo.rgb; + break; + case 5: + outFragColor.rgb = albedo.aaa; + break; + } + outFragColor.a = 1.0; + return; + } + + // Ambient part + vec3 fragcolor = albedo.rgb * AMBIENT_LIGHT; + + vec3 N = normalize(normal); + + for(int i = 0; i < LIGHT_COUNT; ++i) + { + // Vector to light + vec3 L = ubo.lights[i].position.xyz - fragPos; + // Distance from light to fragment position + float dist = length(L); + L = normalize(L); + + // Viewer to fragment + vec3 V = ubo.viewPos.xyz - fragPos; + V = normalize(V); + + float lightCosInnerAngle = cos(radians(15.0)); + float lightCosOuterAngle = cos(radians(25.0)); + float lightRange = 100.0; + + // Direction vector from source to target + vec3 dir = normalize(ubo.lights[i].position.xyz - ubo.lights[i].target.xyz); + + // Dual cone spot light with smooth transition between inner and outer angle + float cosDir = dot(L, dir); + float spotEffect = smoothstep(lightCosOuterAngle, lightCosInnerAngle, cosDir); + float heightAttenuation = smoothstep(lightRange, 0.0f, dist); + + // Diffuse lighting + float NdotL = max(0.0, dot(N, L)); + vec3 diff = vec3(NdotL); + + // Specular lighting + vec3 R = reflect(-L, N); + float NdotR = max(0.0, dot(R, V)); + vec3 spec = vec3(pow(NdotR, 16.0) * albedo.a * 2.5); + + fragcolor += vec3((diff + spec) * spotEffect * heightAttenuation) * ubo.lights[i].color.rgb * albedo.rgb; + } + + // Shadow calculations in a separate pass + if (ubo.useShadows > 0) + { + fragcolor = shadow(fragcolor, fragPos); + } + + outFragColor = vec4(fragcolor, 1.0); +} " 47: String "P" 53: String "layer" diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index c21571c1b0..32634ffeab 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 273 +// Id's are bound by 274 Capability Geometry Capability MultiViewport @@ -9,12 +9,12 @@ spv.debuginfo.glsl.geom 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Geometry 14 "main" 64 98 121 130 134 168 208 217 236 249 255 259 + EntryPoint Geometry 14 "main" 64 98 121 130 134 168 208 217 236 250 256 260 ExecutionMode 14 Triangles ExecutionMode 14 Invocations 2 ExecutionMode 14 OutputTriangleStrip ExecutionMode 14 OutputVertices 3 - 2: String "" + 2: String "spv.debuginfo.glsl.geom" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -24,6 +24,75 @@ spv.debuginfo.glsl.geom // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +#extension GL_ARB_viewport_array : enable + +layout (triangles, invocations = 2) in; +layout (triangle_strip, max_vertices = 3) out; + +layout (binding = 0) uniform UBO +{ + mat4 projection[2]; + mat4 modelview[2]; + vec4 lightPos; +} ubo; + +layout (location = 0) in vec3 inNormal[]; +layout (location = 1) in vec3 inColor[]; + +layout (location = 0) out vec3 outNormal; +layout (location = 1) out vec3 outColor; +layout (location = 2) out vec3 outViewVec; +layout (location = 3) out vec3 outLightVec; + +void main(void) +{ + for(int i = 0; i < gl_in.length(); i++) + { + outNormal = mat3(ubo.modelview[gl_InvocationID]) * inNormal[i]; + outColor = inColor[i]; + + vec4 pos = gl_in[i].gl_Position; + vec4 worldPos = (ubo.modelview[gl_InvocationID] * pos); + + vec3 lPos = vec3(ubo.modelview[gl_InvocationID] * ubo.lightPos); + outLightVec = lPos - worldPos.xyz; + outViewVec = -worldPos.xyz; + + gl_Position = ubo.projection[gl_InvocationID] * worldPos; + + // Set the viewport index that the vertex will be emitted to + gl_ViewportIndex = gl_InvocationID; + gl_PrimitiveID = gl_PrimitiveIDIn; + EmitVertex(); + } + EndPrimitive(); +} " 29: String "int" 36: String "i" @@ -49,9 +118,10 @@ spv.debuginfo.glsl.geom 191: String "lPos" 210: String "outLightVec" 219: String "outViewVec" - 251: String "gl_ViewportIndex" - 257: String "gl_PrimitiveID" - 261: String "gl_PrimitiveIDIn" + 238: String "" + 252: String "gl_ViewportIndex" + 258: String "gl_PrimitiveID" + 262: String "gl_PrimitiveIDIn" SourceExtension "GL_ARB_viewport_array" Name 14 "main" Name 34 "i" @@ -82,9 +152,9 @@ spv.debuginfo.glsl.geom MemberName 225(gl_PerVertex) 2 "gl_ClipDistance" MemberName 225(gl_PerVertex) 3 "gl_CullDistance" Name 236 "" - Name 249 "gl_ViewportIndex" - Name 255 "gl_PrimitiveID" - Name 259 "gl_PrimitiveIDIn" + Name 250 "gl_ViewportIndex" + Name 256 "gl_PrimitiveID" + Name 260 "gl_PrimitiveIDIn" Decorate 64(outNormal) Location 0 Decorate 74 ArrayStride 64 Decorate 76 ArrayStride 64 @@ -114,9 +184,9 @@ spv.debuginfo.glsl.geom MemberDecorate 225(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 225(gl_PerVertex) 3 BuiltIn CullDistance Decorate 225(gl_PerVertex) Block - Decorate 249(gl_ViewportIndex) BuiltIn ViewportIndex - Decorate 255(gl_PrimitiveID) BuiltIn PrimitiveId - Decorate 259(gl_PrimitiveIDIn) BuiltIn PrimitiveId + Decorate 250(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 256(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 260(gl_PrimitiveIDIn) BuiltIn PrimitiveId 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -248,21 +318,21 @@ spv.debuginfo.glsl.geom 234: TypePointer Output 225(gl_PerVertex) 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 232 13 12 236: 234(ptr) Variable Output - 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 232 18 233 12 21 2 236 68 - 244: TypePointer Output 69(fvec4) - 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 13 12 - 247: TypePointer Output 28(int) - 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 13 12 -249(gl_ViewportIndex): 247(ptr) Variable Output - 252: 7(int) Constant 64 - 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 251 30 18 252 12 21 251 249(gl_ViewportIndex) 68 -255(gl_PrimitiveID): 247(ptr) Variable Output - 258: 7(int) Constant 65 - 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 257 30 18 258 12 21 257 255(gl_PrimitiveID) 68 -259(gl_PrimitiveIDIn): 96(ptr) Variable Input - 260: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 261 30 18 258 12 21 261 259(gl_PrimitiveIDIn) 68 - 265: 7(int) Constant 66 - 272: 7(int) Constant 68 + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 238 232 18 233 12 21 238 236 68 + 245: TypePointer Output 69(fvec4) + 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 70 13 12 + 248: TypePointer Output 28(int) + 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 13 12 +250(gl_ViewportIndex): 248(ptr) Variable Output + 253: 7(int) Constant 64 + 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 252 30 18 253 12 21 252 250(gl_ViewportIndex) 68 +256(gl_PrimitiveID): 248(ptr) Variable Output + 259: 7(int) Constant 65 + 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 258 30 18 259 12 21 258 256(gl_PrimitiveID) 68 +260(gl_PrimitiveIDIn): 96(ptr) Variable Input + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 262 30 18 259 12 21 262 260(gl_PrimitiveIDIn) 68 + 266: 7(int) Constant 66 + 273: 7(int) Constant 68 14(main): 4 Function None 5 15: Label 34(i): 31(ptr) Variable Function @@ -348,33 +418,33 @@ spv.debuginfo.glsl.geom 223: 60(fvec3) VectorShuffle 221 221 0 1 2 224: 60(fvec3) FNegate 223 Store 217(outViewVec) 224 - 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12 - 238: 28(int) Load 98(gl_InvocationID) - 240: 104(ptr) AccessChain 92(ubo) 41 238 - 241: 71 Load 240 - 242: 69(fvec4) Load 176(worldPos) - 243: 69(fvec4) MatrixTimesVector 241 242 - 246: 244(ptr) AccessChain 236 41 - Store 246 243 - 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 252 252 12 12 - 253: 28(int) Load 98(gl_InvocationID) - Store 249(gl_ViewportIndex) 253 - 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 258 258 12 12 - 262: 28(int) Load 259(gl_PrimitiveIDIn) - Store 255(gl_PrimitiveID) 262 - 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 265 265 12 12 + 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 233 233 12 12 + 239: 28(int) Load 98(gl_InvocationID) + 241: 104(ptr) AccessChain 92(ubo) 41 239 + 242: 71 Load 241 + 243: 69(fvec4) Load 176(worldPos) + 244: 69(fvec4) MatrixTimesVector 242 243 + 247: 245(ptr) AccessChain 236 41 + Store 247 244 + 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 253 253 12 12 + 254: 28(int) Load 98(gl_InvocationID) + Store 250(gl_ViewportIndex) 254 + 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 259 259 12 12 + 263: 28(int) Load 260(gl_PrimitiveIDIn) + Store 256(gl_PrimitiveID) 263 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 266 266 12 12 EmitVertex Branch 45 45: Label - 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 - 266: 28(int) Load 34(i) - 269: 28(int) IAdd 266 95 - Store 34(i) 269 + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 37 37 12 12 + 267: 28(int) Load 34(i) + 270: 28(int) IAdd 267 95 + Store 34(i) 270 Branch 42 44: Label - 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 272 272 12 12 + 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 273 273 12 12 EndPrimitive Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index a1aa38b80b..8a0308a4f1 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -10,7 +10,7 @@ spv.debuginfo.glsl.tesc MemoryModel Logical GLSL450 EntryPoint TessellationControl 14 "main" 260 265 294 383 399 516 532 542 557 ExecutionMode 14 OutputVertices 4 - 2: String "" + 2: String "spv.debuginfo.glsl.tesc" 8: String "uint" 17: String "float" 31: String "screenSpaceTessFactor" @@ -21,6 +21,146 @@ spv.debuginfo.glsl.tesc // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +layout(set = 0, binding = 0) uniform UBO +{ + mat4 projection; + mat4 modelview; + vec4 lightPos; + vec4 frustumPlanes[6]; + float displacementFactor; + float tessellationFactor; + vec2 viewportDim; + float tessellatedEdgeSize; +} ubo; + +layout(set = 0, binding = 1) uniform sampler2D samplerHeight; + +layout (vertices = 4) out; + +layout (location = 0) in vec3 inNormal[]; +layout (location = 1) in vec2 inUV[]; + +layout (location = 0) out vec3 outNormal[4]; +layout (location = 1) out vec2 outUV[4]; + +// Calculate the tessellation factor based on screen space +// dimensions of the edge +float screenSpaceTessFactor(vec4 p0, vec4 p1) +{ + // Calculate edge mid point + vec4 midPoint = 0.5 * (p0 + p1); + // Sphere radius as distance between the control points + float radius = distance(p0, p1) / 2.0; + + // View space + vec4 v0 = ubo.modelview * midPoint; + + // Project into clip space + vec4 clip0 = (ubo.projection * (v0 - vec4(radius, vec3(0.0)))); + vec4 clip1 = (ubo.projection * (v0 + vec4(radius, vec3(0.0)))); + + // Get normalized device coordinates + clip0 /= clip0.w; + clip1 /= clip1.w; + + // Convert to viewport coordinates + clip0.xy *= ubo.viewportDim; + clip1.xy *= ubo.viewportDim; + + // Return the tessellation factor based on the screen size + // given by the distance of the two edge control points in screen space + // and a reference (min.) tessellation size for the edge set by the application + return clamp(distance(clip0, clip1) / ubo.tessellatedEdgeSize * ubo.tessellationFactor, 1.0, 64.0); +} + +// Checks the current's patch visibility against the frustum using a sphere check +// Sphere radius is given by the patch size +bool frustumCheck() +{ + // Fixed radius (increase if patch size is increased in example) + const float radius = 8.0f; + vec4 pos = gl_in[gl_InvocationID].gl_Position; + pos.y -= textureLod(samplerHeight, inUV[0], 0.0).r * ubo.displacementFactor; + + // Check sphere against frustum planes + for (int i = 0; i < 6; i++) { + if (dot(pos, ubo.frustumPlanes[i]) + radius < 0.0) + { + return false; + } + } + return true; +} + +void main() +{ + if (gl_InvocationID == 0) + { + if (!frustumCheck()) + { + gl_TessLevelInner[0] = 0.0; + gl_TessLevelInner[1] = 0.0; + gl_TessLevelOuter[0] = 0.0; + gl_TessLevelOuter[1] = 0.0; + gl_TessLevelOuter[2] = 0.0; + gl_TessLevelOuter[3] = 0.0; + } + else + { + if (ubo.tessellationFactor > 0.0) + { + gl_TessLevelOuter[0] = screenSpaceTessFactor(gl_in[3].gl_Position, gl_in[0].gl_Position); + gl_TessLevelOuter[1] = screenSpaceTessFactor(gl_in[0].gl_Position, gl_in[1].gl_Position); + gl_TessLevelOuter[2] = screenSpaceTessFactor(gl_in[1].gl_Position, gl_in[2].gl_Position); + gl_TessLevelOuter[3] = screenSpaceTessFactor(gl_in[2].gl_Position, gl_in[3].gl_Position); + gl_TessLevelInner[0] = mix(gl_TessLevelOuter[0], gl_TessLevelOuter[3], 0.5); + gl_TessLevelInner[1] = mix(gl_TessLevelOuter[2], gl_TessLevelOuter[1], 0.5); + } + else + { + // Tessellation factor can be set to zero by example + // to demonstrate a simple passthrough + gl_TessLevelInner[0] = 1.0; + gl_TessLevelInner[1] = 1.0; + gl_TessLevelOuter[0] = 1.0; + gl_TessLevelOuter[1] = 1.0; + gl_TessLevelOuter[2] = 1.0; + gl_TessLevelOuter[3] = 1.0; + } + } + + } + + gl_out[gl_InvocationID].gl_Position = gl_in[gl_InvocationID].gl_Position; + outNormal[gl_InvocationID] = inNormal[gl_InvocationID]; + outUV[gl_InvocationID] = inUV[gl_InvocationID]; +} " 40: String "p0" 46: String "p1" diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index e16e274df6..a5cb502978 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,18 +1,18 @@ spv.debuginfo.glsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 356 +// Id's are bound by 357 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 14 "main" 47 66 93 116 143 183 300 315 323 336 343 + EntryPoint TessellationEvaluation 14 "main" 47 66 93 116 143 183 300 316 324 337 344 ExecutionMode 14 Quads ExecutionMode 14 SpacingEqual ExecutionMode 14 VertexOrderCw - 2: String "" + 2: String "spv.debuginfo.glsl.tese" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -22,6 +22,84 @@ spv.debuginfo.glsl.tese // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +layout (set = 0, binding = 0) uniform UBO +{ + mat4 projection; + mat4 modelview; + vec4 lightPos; + vec4 frustumPlanes[6]; + float displacementFactor; + float tessellationFactor; + vec2 viewportDim; + float tessellatedEdgeSize; +} ubo; + +layout (set = 0, binding = 1) uniform sampler2D displacementMap; + +layout(quads, equal_spacing, cw) in; + +layout (location = 0) in vec3 inNormal[]; +layout (location = 1) in vec2 inUV[]; + +layout (location = 0) out vec3 outNormal; +layout (location = 1) out vec2 outUV; +layout (location = 2) out vec3 outViewVec; +layout (location = 3) out vec3 outLightVec; +layout (location = 4) out vec3 outEyePos; +layout (location = 5) out vec3 outWorldPos; + +void main() +{ + // Interpolate UV coordinates + vec2 uv1 = mix(inUV[0], inUV[1], gl_TessCoord.x); + vec2 uv2 = mix(inUV[3], inUV[2], gl_TessCoord.x); + outUV = mix(uv1, uv2, gl_TessCoord.y); + + vec3 n1 = mix(inNormal[0], inNormal[1], gl_TessCoord.x); + vec3 n2 = mix(inNormal[3], inNormal[2], gl_TessCoord.x); + outNormal = mix(n1, n2, gl_TessCoord.y); + + // Interpolate positions + vec4 pos1 = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x); + vec4 pos2 = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x); + vec4 pos = mix(pos1, pos2, gl_TessCoord.y); + // Displace + pos.y -= textureLod(displacementMap, outUV, 0.0).r * ubo.displacementFactor; + // Perspective projection + gl_Position = ubo.projection * ubo.modelview * pos; + + // Calculate vectors for lighting based on tessellated position + outViewVec = -pos.xyz; + outLightVec = normalize(ubo.lightPos.xyz + outViewVec); + outWorldPos = pos.xyz; + outEyePos = vec3(ubo.modelview * pos); +} " 29: String "float" 38: String "uv1" @@ -55,10 +133,11 @@ spv.debuginfo.glsl.tese 266: String "viewportDim" 270: String "UBO" 275: String "ubo" - 317: String "outViewVec" - 325: String "outLightVec" - 338: String "outWorldPos" - 345: String "outEyePos" + 302: String "" + 318: String "outViewVec" + 326: String "outLightVec" + 339: String "outWorldPos" + 346: String "outEyePos" Name 14 "main" Name 36 "uv1" Name 47 "inUV" @@ -95,10 +174,10 @@ spv.debuginfo.glsl.tese MemberName 288(gl_PerVertex) 2 "gl_ClipDistance" MemberName 288(gl_PerVertex) 3 "gl_CullDistance" Name 300 "" - Name 315 "outViewVec" - Name 323 "outLightVec" - Name 336 "outWorldPos" - Name 343 "outEyePos" + Name 316 "outViewVec" + Name 324 "outLightVec" + Name 337 "outWorldPos" + Name 344 "outEyePos" Decorate 47(inUV) Location 1 Decorate 66(gl_TessCoord) BuiltIn TessCoord Decorate 93(outUV) Location 1 @@ -132,10 +211,10 @@ spv.debuginfo.glsl.tese MemberDecorate 288(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 288(gl_PerVertex) 3 BuiltIn CullDistance Decorate 288(gl_PerVertex) Block - Decorate 315(outViewVec) Location 2 - Decorate 323(outLightVec) Location 3 - Decorate 336(outWorldPos) Location 5 - Decorate 343(outEyePos) Location 4 + Decorate 316(outViewVec) Location 2 + Decorate 324(outLightVec) Location 3 + Decorate 337(outWorldPos) Location 5 + Decorate 344(outEyePos) Location 4 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -292,25 +371,25 @@ spv.debuginfo.glsl.tese 298: TypePointer Output 288(gl_PerVertex) 299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 296 13 12 300: 298(ptr) Variable Output - 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 296 18 297 12 21 2 300 50 - 302: TypePointer Uniform 243 - 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 244 24 12 - 312: TypePointer Output 154(fvec4) - 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 13 12 - 315(outViewVec): 141(ptr) Variable Output - 318: 7(int) Constant 74 - 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 317 63 18 318 12 21 317 315(outViewVec) 50 -323(outLightVec): 141(ptr) Variable Output - 326: 7(int) Constant 75 - 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 325 63 18 326 12 21 325 323(outLightVec) 50 - 327: TypePointer Uniform 154(fvec4) - 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 24 12 -336(outWorldPos): 141(ptr) Variable Output - 339: 7(int) Constant 76 - 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 338 63 18 339 12 21 338 336(outWorldPos) 50 - 343(outEyePos): 141(ptr) Variable Output - 346: 7(int) Constant 77 - 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 345 63 18 346 12 21 345 343(outEyePos) 50 + 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 302 296 18 297 12 21 302 300 50 + 303: TypePointer Uniform 243 + 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 244 24 12 + 313: TypePointer Output 154(fvec4) + 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 13 12 + 316(outViewVec): 141(ptr) Variable Output + 319: 7(int) Constant 74 + 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 318 63 18 319 12 21 318 316(outViewVec) 50 +324(outLightVec): 141(ptr) Variable Output + 327: 7(int) Constant 75 + 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 326 63 18 327 12 21 326 324(outLightVec) 50 + 328: TypePointer Uniform 154(fvec4) + 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 155 24 12 +337(outWorldPos): 141(ptr) Variable Output + 340: 7(int) Constant 76 + 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 339 63 18 340 12 21 339 337(outWorldPos) 50 + 344(outEyePos): 141(ptr) Variable Output + 347: 7(int) Constant 77 + 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 346 63 18 347 12 21 346 344(outEyePos) 50 14(main): 4 Function None 5 15: Label 36(uv1): 33(ptr) Variable Function @@ -427,42 +506,42 @@ spv.debuginfo.glsl.tese 286: 28(float) FSub 285 281 287: 282(ptr) AccessChain 210(pos) 22 Store 287 286 - 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 - 304: 302(ptr) AccessChain 273(ubo) 54 - 306: 243 Load 304 - 307: 302(ptr) AccessChain 273(ubo) 59 - 308: 243 Load 307 - 309: 243 MatrixTimesMatrix 306 308 - 310: 154(fvec4) Load 210(pos) - 311: 154(fvec4) MatrixTimesVector 309 310 - 314: 312(ptr) AccessChain 300 54 - Store 314 311 - 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 318 318 12 12 - 319: 154(fvec4) Load 210(pos) - 321: 62(fvec3) VectorShuffle 319 319 0 1 2 - 322: 62(fvec3) FNegate 321 - Store 315(outViewVec) 322 - 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 326 326 12 12 - 329: 327(ptr) AccessChain 273(ubo) 84 - 331: 154(fvec4) Load 329 - 332: 62(fvec3) VectorShuffle 331 331 0 1 2 - 333: 62(fvec3) Load 315(outViewVec) - 334: 62(fvec3) FAdd 332 333 - 335: 62(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 334 - Store 323(outLightVec) 335 - 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 339 339 12 12 - 340: 154(fvec4) Load 210(pos) - 342: 62(fvec3) VectorShuffle 340 340 0 1 2 - Store 336(outWorldPos) 342 - 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 346 346 12 12 - 347: 302(ptr) AccessChain 273(ubo) 59 - 349: 243 Load 347 - 350: 154(fvec4) Load 210(pos) - 351: 154(fvec4) MatrixTimesVector 349 350 - 352: 28(float) CompositeExtract 351 0 - 353: 28(float) CompositeExtract 351 1 - 354: 28(float) CompositeExtract 351 2 - 355: 62(fvec3) CompositeConstruct 352 353 354 - Store 343(outEyePos) 355 + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 297 297 12 12 + 305: 303(ptr) AccessChain 273(ubo) 54 + 307: 243 Load 305 + 308: 303(ptr) AccessChain 273(ubo) 59 + 309: 243 Load 308 + 310: 243 MatrixTimesMatrix 307 309 + 311: 154(fvec4) Load 210(pos) + 312: 154(fvec4) MatrixTimesVector 310 311 + 315: 313(ptr) AccessChain 300 54 + Store 315 312 + 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 319 319 12 12 + 320: 154(fvec4) Load 210(pos) + 322: 62(fvec3) VectorShuffle 320 320 0 1 2 + 323: 62(fvec3) FNegate 322 + Store 316(outViewVec) 323 + 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 327 327 12 12 + 330: 328(ptr) AccessChain 273(ubo) 84 + 332: 154(fvec4) Load 330 + 333: 62(fvec3) VectorShuffle 332 332 0 1 2 + 334: 62(fvec3) Load 316(outViewVec) + 335: 62(fvec3) FAdd 333 334 + 336: 62(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 335 + Store 324(outLightVec) 336 + 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 340 340 12 12 + 341: 154(fvec4) Load 210(pos) + 343: 62(fvec3) VectorShuffle 341 341 0 1 2 + Store 337(outWorldPos) 343 + 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 347 347 12 12 + 348: 303(ptr) AccessChain 273(ubo) 59 + 350: 243 Load 348 + 351: 154(fvec4) Load 210(pos) + 352: 154(fvec4) MatrixTimesVector 350 351 + 353: 28(float) CompositeExtract 352 0 + 354: 28(float) CompositeExtract 352 1 + 355: 28(float) CompositeExtract 352 2 + 356: 62(fvec3) CompositeConstruct 353 354 355 + Store 344(outEyePos) 356 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index 3b7aaeaaa8..e635c5ef29 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,15 +1,15 @@ spv.debuginfo.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 444 +// Id's are bound by 445 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 14 "main" 35 42 47 55 65 83 305 323 328 353 370 389 427 436 - 2: String "" + EntryPoint Vertex 14 "main" 35 42 47 55 65 83 305 323 328 353 371 390 428 437 + 2: String "spv.debuginfo.glsl.vert" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -19,6 +19,111 @@ spv.debuginfo.glsl.vert // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +/* +The MIT License (MIT) + +Copyright (c) 2022 Sascha Willems + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 450 + +// Vertex attributes +layout (location = 0) in vec3 inPos; +layout (location = 1) in vec3 inNormal; +layout (location = 2) in vec2 inUV; +layout (location = 3) in vec3 inColor; + +// Instanced attributes +layout (location = 4) in vec3 instancePos; +layout (location = 5) in vec3 instanceRot; +layout (location = 6) in float instanceScale; +layout (location = 7) in int instanceTexIndex; + +layout (binding = 0) uniform UBO +{ + mat4 projection; + mat4 modelview; + vec4 lightPos; + float locSpeed; + float globSpeed; +} ubo; + +layout (location = 0) out vec3 outNormal; +layout (location = 1) out vec3 outColor; +layout (location = 2) out vec3 outUV; +layout (location = 3) out vec3 outViewVec; +layout (location = 4) out vec3 outLightVec; + +void main() +{ + outColor = inColor; + outUV = vec3(inUV, instanceTexIndex); + + mat3 mx, my, mz; + + // rotate around x + float s = sin(instanceRot.x + ubo.locSpeed); + float c = cos(instanceRot.x + ubo.locSpeed); + + mx[0] = vec3(c, s, 0.0); + mx[1] = vec3(-s, c, 0.0); + mx[2] = vec3(0.0, 0.0, 1.0); + + // rotate around y + s = sin(instanceRot.y + ubo.locSpeed); + c = cos(instanceRot.y + ubo.locSpeed); + + my[0] = vec3(c, 0.0, s); + my[1] = vec3(0.0, 1.0, 0.0); + my[2] = vec3(-s, 0.0, c); + + // rot around z + s = sin(instanceRot.z + ubo.locSpeed); + c = cos(instanceRot.z + ubo.locSpeed); + + mz[0] = vec3(1.0, 0.0, 0.0); + mz[1] = vec3(0.0, c, s); + mz[2] = vec3(0.0, -s, c); + + mat3 rotMat = mz * my * mx; + + mat4 gRotMat; + s = sin(instanceRot.y + ubo.globSpeed); + c = cos(instanceRot.y + ubo.globSpeed); + gRotMat[0] = vec4(c, 0.0, s, 0.0); + gRotMat[1] = vec4(0.0, 1.0, 0.0, 0.0); + gRotMat[2] = vec4(-s, 0.0, c, 0.0); + gRotMat[3] = vec4(0.0, 0.0, 0.0, 1.0); + + vec4 locPos = vec4(inPos.xyz * rotMat, 1.0); + vec4 pos = vec4((locPos.xyz * instanceScale) + instancePos, 1.0); + + gl_Position = ubo.projection * ubo.modelview * gRotMat * pos; + outNormal = mat3(ubo.modelview * gRotMat) * inverse(rotMat) * inNormal; + + pos = ubo.modelview * vec4(inPos.xyz + instancePos, 1.0); + vec3 lPos = mat3(ubo.modelview) * ubo.lightPos.xyz; + outLightVec = lPos - pos.xyz; + outViewVec = -pos.xyz; +} " 29: String "float" 37: String "outColor" @@ -50,11 +155,12 @@ spv.debuginfo.glsl.vert 344: String "gl_PointSize" 346: String "gl_CullDistance" 349: String "gl_PerVertex" - 372: String "outNormal" - 391: String "inNormal" - 408: String "lPos" - 429: String "outLightVec" - 438: String "outViewVec" + 355: String "" + 373: String "outNormal" + 392: String "inNormal" + 409: String "lPos" + 430: String "outLightVec" + 439: String "outViewVec" Name 14 "main" Name 35 "outColor" Name 42 "inColor" @@ -87,11 +193,11 @@ spv.debuginfo.glsl.vert MemberName 339(gl_PerVertex) 2 "gl_ClipDistance" MemberName 339(gl_PerVertex) 3 "gl_CullDistance" Name 353 "" - Name 370 "outNormal" - Name 389 "inNormal" - Name 406 "lPos" - Name 427 "outLightVec" - Name 436 "outViewVec" + Name 371 "outNormal" + Name 390 "inNormal" + Name 407 "lPos" + Name 428 "outLightVec" + Name 437 "outViewVec" Decorate 35(outColor) Location 1 Decorate 42(inColor) Location 3 Decorate 47(outUV) Location 2 @@ -118,10 +224,10 @@ spv.debuginfo.glsl.vert MemberDecorate 339(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 339(gl_PerVertex) 3 BuiltIn CullDistance Decorate 339(gl_PerVertex) Block - Decorate 370(outNormal) Location 0 - Decorate 389(inNormal) Location 1 - Decorate 427(outLightVec) Location 4 - Decorate 436(outViewVec) Location 3 + Decorate 371(outNormal) Location 0 + Decorate 390(inNormal) Location 1 + Decorate 428(outLightVec) Location 4 + Decorate 437(outViewVec) Location 3 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -272,27 +378,27 @@ spv.debuginfo.glsl.vert 351: TypePointer Output 339(gl_PerVertex) 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 348 13 12 353: 351(ptr) Variable Output - 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 348 18 350 12 21 2 353 39 - 355: TypePointer Uniform 92 - 356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 24 12 - 367: TypePointer Output 90(fvec4) - 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 13 12 - 370(outNormal): 33(ptr) Variable Output - 373: 7(int) Constant 99 - 371: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 372 32 18 373 12 21 372 370(outNormal) 39 - 389(inNormal): 40(ptr) Variable Input - 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 391 32 18 373 12 21 391 389(inNormal) 39 - 396: 7(int) Constant 101 - 409: 7(int) Constant 102 - 407: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 408 32 18 409 12 17 23 - 421: TypePointer Uniform 90(fvec4) - 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 24 12 -427(outLightVec): 33(ptr) Variable Output - 430: 7(int) Constant 103 - 428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 429 32 18 430 12 21 429 427(outLightVec) 39 - 436(outViewVec): 33(ptr) Variable Output - 439: 7(int) Constant 104 - 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 438 32 18 439 12 21 438 436(outViewVec) 39 + 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 355 348 18 350 12 21 355 353 39 + 356: TypePointer Uniform 92 + 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 93 24 12 + 368: TypePointer Output 90(fvec4) + 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 13 12 + 371(outNormal): 33(ptr) Variable Output + 374: 7(int) Constant 99 + 372: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 373 32 18 374 12 21 373 371(outNormal) 39 + 390(inNormal): 40(ptr) Variable Input + 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 392 32 18 374 12 21 392 390(inNormal) 39 + 397: 7(int) Constant 101 + 410: 7(int) Constant 102 + 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 32 18 410 12 17 23 + 422: TypePointer Uniform 90(fvec4) + 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 91 24 12 +428(outLightVec): 33(ptr) Variable Output + 431: 7(int) Constant 103 + 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 430 32 18 431 12 21 430 428(outLightVec) 39 + 437(outViewVec): 33(ptr) Variable Output + 440: 7(int) Constant 104 + 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 439 32 18 440 12 21 439 437(outViewVec) 39 14(main): 4 Function None 5 15: Label 76(s): 73(ptr) Variable Function @@ -304,7 +410,7 @@ spv.debuginfo.glsl.vert 272(gRotMat): 270(ptr) Variable Function 299(locPos): 281(ptr) Variable Function 315(pos): 281(ptr) Variable Function - 406(lPos): 151(ptr) Variable Function + 407(lPos): 151(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) @@ -487,74 +593,74 @@ spv.debuginfo.glsl.vert 335: 28(float) CompositeExtract 332 2 336: 90(fvec4) CompositeConstruct 333 334 335 163 Store 315(pos) 336 - 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 350 350 12 12 - 357: 355(ptr) AccessChain 114(ubo) 146 - 359: 92 Load 357 - 360: 355(ptr) AccessChain 114(ubo) 154 - 361: 92 Load 360 - 362: 92 MatrixTimesMatrix 359 361 - 363: 92 Load 272(gRotMat) - 364: 92 MatrixTimesMatrix 362 363 - 365: 90(fvec4) Load 315(pos) - 366: 90(fvec4) MatrixTimesVector 364 365 - 369: 367(ptr) AccessChain 353 146 - Store 369 366 - 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 373 373 12 12 - 374: 355(ptr) AccessChain 114(ubo) 154 - 376: 92 Load 374 - 377: 92 Load 272(gRotMat) - 378: 92 MatrixTimesMatrix 376 377 - 379: 90(fvec4) CompositeExtract 378 0 - 380: 31(fvec3) VectorShuffle 379 379 0 1 2 - 381: 90(fvec4) CompositeExtract 378 1 - 382: 31(fvec3) VectorShuffle 381 381 0 1 2 - 383: 90(fvec4) CompositeExtract 378 2 - 384: 31(fvec3) VectorShuffle 383 383 0 1 2 - 385: 136 CompositeConstruct 380 382 384 - 386: 136 Load 242(rotMat) - 387: 136 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 386 - 388: 136 MatrixTimesMatrix 385 387 - 392: 31(fvec3) Load 389(inNormal) - 393: 31(fvec3) MatrixTimesVector 388 392 - Store 370(outNormal) 393 - 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 396 396 12 12 - 394: 355(ptr) AccessChain 114(ubo) 154 - 397: 92 Load 394 - 398: 31(fvec3) Load 305(inPos) - 399: 31(fvec3) Load 328(instancePos) - 400: 31(fvec3) FAdd 398 399 - 401: 28(float) CompositeExtract 400 0 - 402: 28(float) CompositeExtract 400 1 - 403: 28(float) CompositeExtract 400 2 - 404: 90(fvec4) CompositeConstruct 401 402 403 163 - 405: 90(fvec4) MatrixTimesVector 397 404 - Store 315(pos) 405 - 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 409 409 12 12 - 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 407 406(lPos) 81 - 412: 355(ptr) AccessChain 114(ubo) 154 - 413: 92 Load 412 - 414: 90(fvec4) CompositeExtract 413 0 - 415: 31(fvec3) VectorShuffle 414 414 0 1 2 - 416: 90(fvec4) CompositeExtract 413 1 - 417: 31(fvec3) VectorShuffle 416 416 0 1 2 - 418: 90(fvec4) CompositeExtract 413 2 - 419: 31(fvec3) VectorShuffle 418 418 0 1 2 - 420: 136 CompositeConstruct 415 417 419 - 423: 421(ptr) AccessChain 114(ubo) 162 - 424: 90(fvec4) Load 423 - 425: 31(fvec3) VectorShuffle 424 424 0 1 2 - 426: 31(fvec3) MatrixTimesVector 420 425 - Store 406(lPos) 426 - 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 430 430 12 12 - 431: 31(fvec3) Load 406(lPos) - 433: 90(fvec4) Load 315(pos) - 434: 31(fvec3) VectorShuffle 433 433 0 1 2 - 435: 31(fvec3) FSub 431 434 - Store 427(outLightVec) 435 - 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 439 439 12 12 - 440: 90(fvec4) Load 315(pos) - 442: 31(fvec3) VectorShuffle 440 440 0 1 2 - 443: 31(fvec3) FNegate 442 - Store 436(outViewVec) 443 + 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 350 350 12 12 + 358: 356(ptr) AccessChain 114(ubo) 146 + 360: 92 Load 358 + 361: 356(ptr) AccessChain 114(ubo) 154 + 362: 92 Load 361 + 363: 92 MatrixTimesMatrix 360 362 + 364: 92 Load 272(gRotMat) + 365: 92 MatrixTimesMatrix 363 364 + 366: 90(fvec4) Load 315(pos) + 367: 90(fvec4) MatrixTimesVector 365 366 + 370: 368(ptr) AccessChain 353 146 + Store 370 367 + 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 374 374 12 12 + 375: 356(ptr) AccessChain 114(ubo) 154 + 377: 92 Load 375 + 378: 92 Load 272(gRotMat) + 379: 92 MatrixTimesMatrix 377 378 + 380: 90(fvec4) CompositeExtract 379 0 + 381: 31(fvec3) VectorShuffle 380 380 0 1 2 + 382: 90(fvec4) CompositeExtract 379 1 + 383: 31(fvec3) VectorShuffle 382 382 0 1 2 + 384: 90(fvec4) CompositeExtract 379 2 + 385: 31(fvec3) VectorShuffle 384 384 0 1 2 + 386: 136 CompositeConstruct 381 383 385 + 387: 136 Load 242(rotMat) + 388: 136 ExtInst 3(GLSL.std.450) 34(MatrixInverse) 387 + 389: 136 MatrixTimesMatrix 386 388 + 393: 31(fvec3) Load 390(inNormal) + 394: 31(fvec3) MatrixTimesVector 389 393 + Store 371(outNormal) 394 + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 397 397 12 12 + 395: 356(ptr) AccessChain 114(ubo) 154 + 398: 92 Load 395 + 399: 31(fvec3) Load 305(inPos) + 400: 31(fvec3) Load 328(instancePos) + 401: 31(fvec3) FAdd 399 400 + 402: 28(float) CompositeExtract 401 0 + 403: 28(float) CompositeExtract 401 1 + 404: 28(float) CompositeExtract 401 2 + 405: 90(fvec4) CompositeConstruct 402 403 404 163 + 406: 90(fvec4) MatrixTimesVector 398 405 + Store 315(pos) 406 + 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 410 410 12 12 + 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(lPos) 81 + 413: 356(ptr) AccessChain 114(ubo) 154 + 414: 92 Load 413 + 415: 90(fvec4) CompositeExtract 414 0 + 416: 31(fvec3) VectorShuffle 415 415 0 1 2 + 417: 90(fvec4) CompositeExtract 414 1 + 418: 31(fvec3) VectorShuffle 417 417 0 1 2 + 419: 90(fvec4) CompositeExtract 414 2 + 420: 31(fvec3) VectorShuffle 419 419 0 1 2 + 421: 136 CompositeConstruct 416 418 420 + 424: 422(ptr) AccessChain 114(ubo) 162 + 425: 90(fvec4) Load 424 + 426: 31(fvec3) VectorShuffle 425 425 0 1 2 + 427: 31(fvec3) MatrixTimesVector 421 426 + Store 407(lPos) 427 + 433: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 431 431 12 12 + 432: 31(fvec3) Load 407(lPos) + 434: 90(fvec4) Load 315(pos) + 435: 31(fvec3) VectorShuffle 434 434 0 1 2 + 436: 31(fvec3) FSub 432 435 + Store 428(outLightVec) 436 + 442: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 440 440 12 12 + 441: 90(fvec4) Load 315(pos) + 443: 31(fvec3) VectorShuffle 441 441 0 1 2 + 444: 31(fvec3) FNegate 443 + Store 437(outViewVec) 444 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out index 439fa06508..140c9b9043 100644 --- a/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out +++ b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out @@ -1,7 +1,7 @@ spv.debuginfo.rt_types.glsl.rgen // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 122 +// Id's are bound by 123 Capability RayQueryKHR Capability RayTracingNV @@ -12,7 +12,7 @@ spv.debuginfo.rt_types.glsl.rgen 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint RayGenerationKHR 14 "main" - 2: String "" + 2: String "spv.debuginfo.rt_types.glsl.rgen" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -22,6 +22,29 @@ spv.debuginfo.rt_types.glsl.rgen // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 +#version 460 +#extension GL_NV_ray_tracing : enable +#extension GL_EXT_ray_query : enable +layout(binding = 0, set = 0) uniform accelerationStructureEXT acc0; + +layout(shaderRecordNV) buffer block +{ + vec3 dir; + vec3 origin; +}; + +void main() +{ + rayQueryEXT localRayQuery; + uint rayFlags = gl_RayFlagsOpaqueEXT | gl_RayFlagsSkipClosestHitShaderEXT; + float tMin = 0.f; + float tMax = 1000.f; + rayQueryInitializeEXT(localRayQuery, acc0, rayFlags, 0xFF , origin, tMin, dir, tMax); + if (!rayQueryProceedEXT(localRayQuery)) + { + rayQueryTerminateEXT(localRayQuery); + } +} " 33: String "rayFlags" 40: String "float" @@ -35,8 +58,9 @@ spv.debuginfo.rt_types.glsl.rgen 78: String "acc0" 87: String "origin" 90: String "block" - 97: String "int" - 110: String "bool" + 96: String "" + 98: String "int" + 111: String "bool" SourceExtension "GL_EXT_ray_query" SourceExtension "GL_NV_ray_tracing" Name 14 "main" @@ -113,17 +137,17 @@ spv.debuginfo.rt_types.glsl.rgen 92: 7(int) Constant 5343 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 92 12 94: 91(ptr) Variable ShaderRecordBufferKHR - 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 89 18 61 12 21 2 94 69 - 96: TypeInt 32 1 - 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 10 23 12 - 99: 96(int) Constant 1 - 100: TypePointer ShaderRecordBufferKHR 83(fvec3) - 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 92 12 - 105: 96(int) Constant 0 - 109: TypeBool - 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 110 10 24 12 - 114: 7(int) Constant 19 - 120: 7(int) Constant 21 + 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 89 18 61 12 21 96 94 69 + 97: TypeInt 32 1 + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 10 23 12 + 100: 97(int) Constant 1 + 101: TypePointer ShaderRecordBufferKHR 83(fvec3) + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 84 92 12 + 106: 97(int) Constant 0 + 110: TypeBool + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 111 10 24 12 + 115: 7(int) Constant 19 + 121: 7(int) Constant 21 14(main): 4 Function None 5 15: Label 31(rayFlags): 28(ptr) Variable Function @@ -144,24 +168,24 @@ spv.debuginfo.rt_types.glsl.rgen 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 61 61 12 12 79: 70 Load 76(acc0) 81: 7(int) Load 31(rayFlags) - 102: 100(ptr) AccessChain 94 99 - 103: 83(fvec3) Load 102 - 104: 39(float) Load 44(tMin) - 106: 100(ptr) AccessChain 94 105 - 107: 83(fvec3) Load 106 - 108: 39(float) Load 51(tMax) - RayQueryInitializeKHR 66(localRayQuery) 79 81 82 103 104 107 108 - 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 114 114 12 12 - 112: 109(bool) RayQueryProceedKHR 66(localRayQuery) - 115: 109(bool) LogicalNot 112 - SelectionMerge 117 None - BranchConditional 115 116 117 - 116: Label - 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 - 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 120 120 12 12 + 103: 101(ptr) AccessChain 94 100 + 104: 83(fvec3) Load 103 + 105: 39(float) Load 44(tMin) + 107: 101(ptr) AccessChain 94 106 + 108: 83(fvec3) Load 107 + 109: 39(float) Load 51(tMax) + RayQueryInitializeKHR 66(localRayQuery) 79 81 82 104 105 108 109 + 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 115 115 12 12 + 113: 110(bool) RayQueryProceedKHR 66(localRayQuery) + 116: 110(bool) LogicalNot 113 + SelectionMerge 118 None + BranchConditional 116 117 118 + 117: Label + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 121 121 12 12 RayQueryTerminateKHR 66(localRayQuery) - Branch 117 - 117: Label - 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + Branch 118 + 118: Label + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out index 4262ad03c7..e914cb6615 100644 --- a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out @@ -15,7 +15,7 @@ spv.debuginfo.scalar_types.glsl.frag MemoryModel Logical GLSL450 EntryPoint Fragment 14 "main" ExecutionMode 14 OriginUpperLeft - 2: String "" + 2: String "spv.debuginfo.scalar_types.glsl.frag" 8: String "uint" 16: String "main" 19: String "// OpModuleProcessed auto-map-locations @@ -25,7 +25,61 @@ spv.debuginfo.scalar_types.glsl.frag // OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 -" +/* +The MIT License (MIT) + +Copyright (c) 2023 NVIDIA CORPORATION. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 460 + +#extension GL_EXT_shader_explicit_arithmetic_types : require + +bool VAR_bool; +int VAR_int; +uint VAR_uint; +float VAR_float; +double VAR_double; +int8_t VAR_int8_t; +uint8_t VAR_uint8_t; +int16_t VAR_int16_t; +uint16_t VAR_uint16_t; +int64_t VAR_int64_t; +uint64_t VAR_uint64_t; +float16_t VAR_float16_t; + +void main() { + VAR_bool = bool(0); + VAR_int = int(0); + VAR_uint = uint(0); + VAR_float = float(0); + VAR_double = double(0); + VAR_int8_t = int8_t(0); + VAR_uint8_t = uint8_t(0); + VAR_int16_t = int16_t(0); + VAR_uint16_t = uint16_t(0); + VAR_int64_t = int64_t(0); + VAR_uint64_t = uint64_t(0); + VAR_float16_t = float16_t(0); +}" 29: String "bool" 35: String "VAR_bool" 41: String "int" diff --git a/Test/spv.debuginfo.scalar_types.glsl.frag b/Test/spv.debuginfo.scalar_types.glsl.frag index 36595ea7cf..f385f0227a 100644 --- a/Test/spv.debuginfo.scalar_types.glsl.frag +++ b/Test/spv.debuginfo.scalar_types.glsl.frag @@ -1,55 +1,55 @@ -/* -The MIT License (MIT) - -Copyright (c) 2023 NVIDIA CORPORATION. - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. -*/ - -#version 460 - -#extension GL_EXT_shader_explicit_arithmetic_types : require - -bool VAR_bool; -int VAR_int; -uint VAR_uint; -float VAR_float; -double VAR_double; -int8_t VAR_int8_t; -uint8_t VAR_uint8_t; -int16_t VAR_int16_t; -uint16_t VAR_uint16_t; -int64_t VAR_int64_t; -uint64_t VAR_uint64_t; -float16_t VAR_float16_t; - -void main() { - VAR_bool = bool(0); - VAR_int = int(0); - VAR_uint = uint(0); - VAR_float = float(0); - VAR_double = double(0); - VAR_int8_t = int8_t(0); - VAR_uint8_t = uint8_t(0); - VAR_int16_t = int16_t(0); - VAR_uint16_t = uint16_t(0); - VAR_int64_t = int64_t(0); - VAR_uint64_t = uint64_t(0); - VAR_float16_t = float16_t(0); +/* +The MIT License (MIT) + +Copyright (c) 2023 NVIDIA CORPORATION. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +*/ + +#version 460 + +#extension GL_EXT_shader_explicit_arithmetic_types : require + +bool VAR_bool; +int VAR_int; +uint VAR_uint; +float VAR_float; +double VAR_double; +int8_t VAR_int8_t; +uint8_t VAR_uint8_t; +int16_t VAR_int16_t; +uint16_t VAR_uint16_t; +int64_t VAR_int64_t; +uint64_t VAR_uint64_t; +float16_t VAR_float16_t; + +void main() { + VAR_bool = bool(0); + VAR_int = int(0); + VAR_uint = uint(0); + VAR_float = float(0); + VAR_double = double(0); + VAR_int8_t = int8_t(0); + VAR_uint8_t = uint8_t(0); + VAR_int16_t = int16_t(0); + VAR_uint16_t = uint16_t(0); + VAR_int64_t = int64_t(0); + VAR_uint64_t = uint64_t(0); + VAR_float16_t = float16_t(0); } \ No newline at end of file diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4e1e09fe03..e111168aa5 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -255,7 +255,7 @@ TEST_P(CompileVulkanToNonSemanticShaderDebugInfoTest, FromFile) { loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, - Target::Spv, true, "", "/baseResults/", false, false, true); + Target::Spv, true, "", "/baseResults/", false, true, true); } // clang-format off From ad7e719c3bd7fab92be1f934d20564bdf473b8cb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 4 Mar 2024 06:37:15 +0000 Subject: [PATCH 430/594] Bump github/codeql-action from 3.24.5 to 3.24.6 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.5 to 3.24.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/47b3d888fe66b639e431abf22ebca059152f1eea...8a470fddafa5cbb6266ee11b37ef4d8aae19c571) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2d2a92107e..d800df2c05 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@47b3d888fe66b639e431abf22ebca059152f1eea # v3.24.5 + uses: github/codeql-action/upload-sarif@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 with: sarif_file: results.sarif From bada5c87ec6db4441db129d8506742c4a72bd610 Mon Sep 17 00:00:00 2001 From: Wooyoung Kim Date: Mon, 4 Mar 2024 13:43:05 -0800 Subject: [PATCH 431/594] GL_EXT_control_flow_attributes2 support. (#3531) The actual support has been available with GL_EXT_control_flow_attributes. This change set is to handle "#extension GL_EXT_control_flow_attributes2 : " --- Test/baseResults/460.frag.out | 4 +- glslang/MachineIndependent/Versions.cpp | 4 + glslang/MachineIndependent/Versions.h | 1 + glslang/MachineIndependent/glslang.y | 3 +- glslang/MachineIndependent/glslang_tab.cpp | 407 +++++++++++---------- 5 files changed, 214 insertions(+), 205 deletions(-) diff --git a/Test/baseResults/460.frag.out b/Test/baseResults/460.frag.out index 8670e6e143..ced3bb842b 100644 --- a/Test/baseResults/460.frag.out +++ b/Test/baseResults/460.frag.out @@ -1,5 +1,7 @@ 460.frag -ERROR: 0:22: 'attribute' : required extension not requested: GL_EXT_control_flow_attributes +ERROR: 0:22: 'attribute' : required extension not requested: Possible extensions include: +GL_EXT_control_flow_attributes +GL_EXT_control_flow_attributes2 ERROR: 0:23: 'attribute' : required extension not requested: GL_EXT_control_flow_attributes ERROR: 0:30: 'dependency_length' : must be positive ERROR: 0:31: 'dependency_length' : must be positive diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 0eb86a47ce..25d49858c4 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -264,6 +264,8 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_fragment_shader_barycentric] = EBhDisable; extensionBehavior[E_GL_EXT_expect_assume] = EBhDisable; + extensionBehavior[E_GL_EXT_control_flow_attributes2] = EBhDisable; + extensionBehavior[E_GL_KHR_cooperative_matrix] = EBhDisable; // #line and #include @@ -591,6 +593,8 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_fragment_shader_barycentric 1\n" "#define GL_EXT_shader_quad_control 1\n" "#define GL_EXT_texture_array 1\n" + + "#define GL_EXT_control_flow_attributes2 1\n" ; if (spvVersion.spv == 0) { diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index 833c9e3f31..a2f61dfc7f 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -221,6 +221,7 @@ const char* const E_GL_EXT_draw_instanced = "GL_EXT_draw_insta const char* const E_GL_EXT_texture_array = "GL_EXT_texture_array"; const char* const E_GL_EXT_maximal_reconvergence = "GL_EXT_maximal_reconvergence"; const char* const E_GL_EXT_expect_assume = "GL_EXT_expect_assume"; +const char* const E_GL_EXT_control_flow_attributes2 = "GL_EXT_control_flow_attributes2"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 0f34e0729c..4d4ed3ce8f 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -3950,7 +3950,8 @@ iteration_statement $$ = $1; } | attribute iteration_statement_nonattributed { - parseContext.requireExtensions($2->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); + const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; + parseContext.requireExtensions($2->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*$1, $2); $$ = $2; } diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 3f09e89484..70df97e4d8 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1220,17 +1220,17 @@ static const yytype_int16 yyrline[] = 3748, 3749, 3750, 3754, 3762, 3763, 3767, 3763, 3779, 3780, 3784, 3784, 3791, 3791, 3805, 3808, 3816, 3824, 3835, 3836, 3840, 3843, 3850, 3857, 3861, 3869, 3873, 3886, 3889, 3896, - 3896, 3916, 3919, 3925, 3937, 3949, 3952, 3959, 3959, 3974, - 3974, 3992, 3992, 4013, 4016, 4022, 4025, 4031, 4035, 4042, - 4047, 4052, 4059, 4062, 4066, 4070, 4074, 4083, 4087, 4096, - 4099, 4102, 4110, 4110, 4152, 4157, 4160, 4165, 4168, 4173, - 4176, 4181, 4184, 4189, 4192, 4197, 4200, 4205, 4209, 4214, - 4218, 4223, 4227, 4234, 4237, 4242, 4245, 4248, 4251, 4254, - 4259, 4268, 4279, 4284, 4292, 4296, 4301, 4305, 4310, 4314, - 4319, 4323, 4330, 4333, 4338, 4341, 4344, 4347, 4352, 4355, - 4360, 4366, 4369, 4372, 4375, 4380, 4384, 4389, 4393, 4398, - 4402, 4409, 4412, 4417, 4420, 4425, 4428, 4434, 4437, 4442, - 4445 + 3896, 3916, 3919, 3925, 3937, 3949, 3952, 3960, 3960, 3975, + 3975, 3993, 3993, 4014, 4017, 4023, 4026, 4032, 4036, 4043, + 4048, 4053, 4060, 4063, 4067, 4071, 4075, 4084, 4088, 4097, + 4100, 4103, 4111, 4111, 4153, 4158, 4161, 4166, 4169, 4174, + 4177, 4182, 4185, 4190, 4193, 4198, 4201, 4206, 4210, 4215, + 4219, 4224, 4228, 4235, 4238, 4243, 4246, 4249, 4252, 4255, + 4260, 4269, 4280, 4285, 4293, 4297, 4302, 4306, 4311, 4315, + 4320, 4324, 4331, 4334, 4339, 4342, 4345, 4348, 4353, 4356, + 4361, 4367, 4370, 4373, 4376, 4381, 4385, 4390, 4394, 4399, + 4403, 4410, 4413, 4418, 4421, 4426, 4429, 4435, 4438, 4443, + 4446 }; #endif @@ -11558,15 +11558,16 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ #line 3952 "MachineIndependent/glslang.y" { - parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); + const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; + parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11566 "MachineIndependent/glslang_tab.cpp" +#line 11567 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3959 "MachineIndependent/glslang.y" +#line 3960 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11575,11 +11576,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11579 "MachineIndependent/glslang_tab.cpp" +#line 11580 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3967 "MachineIndependent/glslang.y" +#line 3968 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11587,22 +11588,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11591 "MachineIndependent/glslang_tab.cpp" +#line 11592 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 3974 "MachineIndependent/glslang.y" +#line 3975 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11602 "MachineIndependent/glslang_tab.cpp" +#line 11603 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3980 "MachineIndependent/glslang.y" +#line 3981 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11615,22 +11616,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11619 "MachineIndependent/glslang_tab.cpp" +#line 11620 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 3992 "MachineIndependent/glslang.y" +#line 3993 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11630 "MachineIndependent/glslang_tab.cpp" +#line 11631 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3998 "MachineIndependent/glslang.y" +#line 3999 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11643,81 +11644,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11647 "MachineIndependent/glslang_tab.cpp" +#line 11648 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 4013 "MachineIndependent/glslang.y" +#line 4014 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11655 "MachineIndependent/glslang_tab.cpp" +#line 11656 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 4016 "MachineIndependent/glslang.y" +#line 4017 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11663 "MachineIndependent/glslang_tab.cpp" +#line 11664 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 4022 "MachineIndependent/glslang.y" +#line 4023 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11671 "MachineIndependent/glslang_tab.cpp" +#line 11672 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 4025 "MachineIndependent/glslang.y" +#line 4026 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11679 "MachineIndependent/glslang_tab.cpp" +#line 11680 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4031 "MachineIndependent/glslang.y" +#line 4032 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11688 "MachineIndependent/glslang_tab.cpp" +#line 11689 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4035 "MachineIndependent/glslang.y" +#line 4036 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11697 "MachineIndependent/glslang_tab.cpp" +#line 11698 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4042 "MachineIndependent/glslang.y" +#line 4043 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11707 "MachineIndependent/glslang_tab.cpp" +#line 11708 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4047 "MachineIndependent/glslang.y" +#line 4048 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11717 "MachineIndependent/glslang_tab.cpp" +#line 11718 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4052 "MachineIndependent/glslang.y" +#line 4053 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11725,101 +11726,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11729 "MachineIndependent/glslang_tab.cpp" +#line 11730 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4059 "MachineIndependent/glslang.y" +#line 4060 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11737 "MachineIndependent/glslang_tab.cpp" +#line 11738 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4062 "MachineIndependent/glslang.y" +#line 4063 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11746 "MachineIndependent/glslang_tab.cpp" +#line 11747 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4066 "MachineIndependent/glslang.y" +#line 4067 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11755 "MachineIndependent/glslang_tab.cpp" +#line 11756 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4070 "MachineIndependent/glslang.y" +#line 4071 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11764 "MachineIndependent/glslang_tab.cpp" +#line 11765 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4074 "MachineIndependent/glslang.y" +#line 4075 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11773 "MachineIndependent/glslang_tab.cpp" +#line 11774 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4083 "MachineIndependent/glslang.y" +#line 4084 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11782 "MachineIndependent/glslang_tab.cpp" +#line 11783 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4087 "MachineIndependent/glslang.y" +#line 4088 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11793 "MachineIndependent/glslang_tab.cpp" +#line 11794 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4096 "MachineIndependent/glslang.y" +#line 4097 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11801 "MachineIndependent/glslang_tab.cpp" +#line 11802 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4099 "MachineIndependent/glslang.y" +#line 4100 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11809 "MachineIndependent/glslang_tab.cpp" +#line 11810 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4102 "MachineIndependent/glslang.y" +#line 4103 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11819 "MachineIndependent/glslang_tab.cpp" +#line 11820 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4110 "MachineIndependent/glslang.y" +#line 4111 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11832,11 +11833,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11836 "MachineIndependent/glslang_tab.cpp" +#line 11837 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4122 "MachineIndependent/glslang.y" +#line 4123 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11864,228 +11865,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11868 "MachineIndependent/glslang_tab.cpp" +#line 11869 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4152 "MachineIndependent/glslang.y" +#line 4153 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11876 "MachineIndependent/glslang_tab.cpp" +#line 11877 "MachineIndependent/glslang_tab.cpp" break; case 635: /* attribute_list: single_attribute */ -#line 4157 "MachineIndependent/glslang.y" +#line 4158 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11884 "MachineIndependent/glslang_tab.cpp" +#line 11885 "MachineIndependent/glslang_tab.cpp" break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4160 "MachineIndependent/glslang.y" +#line 4161 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11892 "MachineIndependent/glslang_tab.cpp" +#line 11893 "MachineIndependent/glslang_tab.cpp" break; case 637: /* single_attribute: IDENTIFIER */ -#line 4165 "MachineIndependent/glslang.y" +#line 4166 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11900 "MachineIndependent/glslang_tab.cpp" +#line 11901 "MachineIndependent/glslang_tab.cpp" break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4168 "MachineIndependent/glslang.y" +#line 4169 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11908 "MachineIndependent/glslang_tab.cpp" +#line 11909 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4173 "MachineIndependent/glslang.y" +#line 4174 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11916 "MachineIndependent/glslang_tab.cpp" +#line 11917 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4176 "MachineIndependent/glslang.y" +#line 4177 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11924 "MachineIndependent/glslang_tab.cpp" +#line 11925 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4181 "MachineIndependent/glslang.y" +#line 4182 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11932 "MachineIndependent/glslang_tab.cpp" +#line 11933 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4184 "MachineIndependent/glslang.y" +#line 4185 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11940 "MachineIndependent/glslang_tab.cpp" +#line 11941 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4189 "MachineIndependent/glslang.y" +#line 4190 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11948 "MachineIndependent/glslang_tab.cpp" +#line 11949 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4192 "MachineIndependent/glslang.y" +#line 4193 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11956 "MachineIndependent/glslang_tab.cpp" +#line 11957 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4197 "MachineIndependent/glslang.y" +#line 4198 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11964 "MachineIndependent/glslang_tab.cpp" +#line 11965 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4200 "MachineIndependent/glslang.y" +#line 4201 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11972 "MachineIndependent/glslang_tab.cpp" +#line 11973 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4205 "MachineIndependent/glslang.y" +#line 4206 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11981 "MachineIndependent/glslang_tab.cpp" +#line 11982 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4209 "MachineIndependent/glslang.y" +#line 4210 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11991 "MachineIndependent/glslang_tab.cpp" +#line 11992 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4214 "MachineIndependent/glslang.y" +#line 4215 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12000 "MachineIndependent/glslang_tab.cpp" +#line 12001 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4218 "MachineIndependent/glslang.y" +#line 4219 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12010 "MachineIndependent/glslang_tab.cpp" +#line 12011 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4223 "MachineIndependent/glslang.y" +#line 4224 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12019 "MachineIndependent/glslang_tab.cpp" +#line 12020 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4227 "MachineIndependent/glslang.y" +#line 4228 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12029 "MachineIndependent/glslang_tab.cpp" +#line 12030 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4234 "MachineIndependent/glslang.y" +#line 4235 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12037 "MachineIndependent/glslang_tab.cpp" +#line 12038 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4237 "MachineIndependent/glslang.y" +#line 4238 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12045 "MachineIndependent/glslang_tab.cpp" +#line 12046 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4242 "MachineIndependent/glslang.y" +#line 4243 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12053 "MachineIndependent/glslang_tab.cpp" +#line 12054 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4245 "MachineIndependent/glslang.y" +#line 4246 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12061 "MachineIndependent/glslang_tab.cpp" +#line 12062 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4248 "MachineIndependent/glslang.y" +#line 4249 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12069 "MachineIndependent/glslang_tab.cpp" +#line 12070 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4251 "MachineIndependent/glslang.y" +#line 4252 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12077 "MachineIndependent/glslang_tab.cpp" +#line 12078 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4254 "MachineIndependent/glslang.y" +#line 4255 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12085 "MachineIndependent/glslang_tab.cpp" +#line 12086 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4259 "MachineIndependent/glslang.y" +#line 4260 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12095,11 +12096,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12099 "MachineIndependent/glslang_tab.cpp" +#line 12100 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4268 "MachineIndependent/glslang.y" +#line 4269 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12109,351 +12110,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12113 "MachineIndependent/glslang_tab.cpp" +#line 12114 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4279 "MachineIndependent/glslang.y" +#line 4280 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12123 "MachineIndependent/glslang_tab.cpp" +#line 12124 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4284 "MachineIndependent/glslang.y" +#line 4285 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12134 "MachineIndependent/glslang_tab.cpp" +#line 12135 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4292 "MachineIndependent/glslang.y" +#line 4293 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12143 "MachineIndependent/glslang_tab.cpp" +#line 12144 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4296 "MachineIndependent/glslang.y" +#line 4297 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12153 "MachineIndependent/glslang_tab.cpp" +#line 12154 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4301 "MachineIndependent/glslang.y" +#line 4302 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12162 "MachineIndependent/glslang_tab.cpp" +#line 12163 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4305 "MachineIndependent/glslang.y" +#line 4306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12172 "MachineIndependent/glslang_tab.cpp" +#line 12173 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4310 "MachineIndependent/glslang.y" +#line 4311 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12181 "MachineIndependent/glslang_tab.cpp" +#line 12182 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4314 "MachineIndependent/glslang.y" +#line 4315 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12191 "MachineIndependent/glslang_tab.cpp" +#line 12192 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4319 "MachineIndependent/glslang.y" +#line 4320 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12200 "MachineIndependent/glslang_tab.cpp" +#line 12201 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4323 "MachineIndependent/glslang.y" +#line 4324 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12210 "MachineIndependent/glslang_tab.cpp" +#line 12211 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4330 "MachineIndependent/glslang.y" +#line 4331 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12218 "MachineIndependent/glslang_tab.cpp" +#line 12219 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4333 "MachineIndependent/glslang.y" +#line 4334 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12226 "MachineIndependent/glslang_tab.cpp" +#line 12227 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4338 "MachineIndependent/glslang.y" +#line 4339 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12234 "MachineIndependent/glslang_tab.cpp" +#line 12235 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4341 "MachineIndependent/glslang.y" +#line 4342 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12242 "MachineIndependent/glslang_tab.cpp" +#line 12243 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4344 "MachineIndependent/glslang.y" +#line 4345 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12250 "MachineIndependent/glslang_tab.cpp" +#line 12251 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4347 "MachineIndependent/glslang.y" +#line 4348 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12258 "MachineIndependent/glslang_tab.cpp" +#line 12259 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4352 "MachineIndependent/glslang.y" +#line 4353 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12266 "MachineIndependent/glslang_tab.cpp" +#line 12267 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4355 "MachineIndependent/glslang.y" +#line 4356 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12274 "MachineIndependent/glslang_tab.cpp" +#line 12275 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4360 "MachineIndependent/glslang.y" +#line 4361 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12285 "MachineIndependent/glslang_tab.cpp" +#line 12286 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4366 "MachineIndependent/glslang.y" +#line 4367 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12293 "MachineIndependent/glslang_tab.cpp" +#line 12294 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4369 "MachineIndependent/glslang.y" +#line 4370 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12301 "MachineIndependent/glslang_tab.cpp" +#line 12302 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4372 "MachineIndependent/glslang.y" +#line 4373 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12309 "MachineIndependent/glslang_tab.cpp" +#line 12310 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4375 "MachineIndependent/glslang.y" +#line 4376 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12317 "MachineIndependent/glslang_tab.cpp" +#line 12318 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4380 "MachineIndependent/glslang.y" +#line 4381 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12326 "MachineIndependent/glslang_tab.cpp" +#line 12327 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4384 "MachineIndependent/glslang.y" +#line 4385 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12334 "MachineIndependent/glslang_tab.cpp" +#line 12335 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4389 "MachineIndependent/glslang.y" +#line 4390 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12343 "MachineIndependent/glslang_tab.cpp" +#line 12344 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4393 "MachineIndependent/glslang.y" +#line 4394 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12353 "MachineIndependent/glslang_tab.cpp" +#line 12354 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4398 "MachineIndependent/glslang.y" +#line 4399 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12362 "MachineIndependent/glslang_tab.cpp" +#line 12363 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4402 "MachineIndependent/glslang.y" +#line 4403 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12372 "MachineIndependent/glslang_tab.cpp" +#line 12373 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4409 "MachineIndependent/glslang.y" +#line 4410 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12380 "MachineIndependent/glslang_tab.cpp" +#line 12381 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4412 "MachineIndependent/glslang.y" +#line 4413 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12388 "MachineIndependent/glslang_tab.cpp" +#line 12389 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4417 "MachineIndependent/glslang.y" +#line 4418 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12396 "MachineIndependent/glslang_tab.cpp" +#line 12397 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4420 "MachineIndependent/glslang.y" +#line 4421 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12404 "MachineIndependent/glslang_tab.cpp" +#line 12405 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4425 "MachineIndependent/glslang.y" +#line 4426 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12412 "MachineIndependent/glslang_tab.cpp" +#line 12413 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4428 "MachineIndependent/glslang.y" +#line 4429 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12421 "MachineIndependent/glslang_tab.cpp" +#line 12422 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4434 "MachineIndependent/glslang.y" +#line 4435 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12429 "MachineIndependent/glslang_tab.cpp" +#line 12430 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4437 "MachineIndependent/glslang.y" +#line 4438 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12437 "MachineIndependent/glslang_tab.cpp" +#line 12438 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4442 "MachineIndependent/glslang.y" +#line 4443 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12445 "MachineIndependent/glslang_tab.cpp" +#line 12446 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4445 "MachineIndependent/glslang.y" +#line 4446 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12453 "MachineIndependent/glslang_tab.cpp" +#line 12454 "MachineIndependent/glslang_tab.cpp" break; -#line 12457 "MachineIndependent/glslang_tab.cpp" +#line 12458 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12677,5 +12678,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4449 "MachineIndependent/glslang.y" +#line 4450 "MachineIndependent/glslang.y" From e7d4ad91a9e80c043c12dc05cd4bb55ec1933882 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Wed, 6 Mar 2024 15:10:12 -0700 Subject: [PATCH 432/594] Increase TStorageQualifier bitfield width Fix #3538. Visual Studio 2022 added a new warning to detect when enumerators can not be represented within the given bit field width. This warning is disabled by default but can be enabled using the flag /w15249. This PR increases the width by one to accommodate the signed maximum value of EvqLast, which is currently 32. Perhaps a future improvement would be to use scoped enums; however, that is more work as the typing is more strict and would require more changes. --- glslang/Include/Types.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index f938f11858..939acbfd7c 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -573,7 +573,8 @@ class TQualifier { } const char* semanticName; - TStorageQualifier storage : 6; + TStorageQualifier storage : 7; + static_assert(EvqLast < 64, "need to increase size of TStorageQualifier bitfields!"); TBuiltInVariable builtIn : 9; TBuiltInVariable declaredBuiltIn : 9; static_assert(EbvLast < 256, "need to increase size of TBuiltInVariable bitfields!"); From d73712b8f6c9047b09e99614e20d456d5ada2390 Mon Sep 17 00:00:00 2001 From: Sharo Date: Fri, 8 Mar 2024 00:02:45 +0000 Subject: [PATCH 433/594] Add flags for outputting absolute paths for messages (#3467) Uses std::filesystem to create absolute paths. Also adds "shaderFileName" to TSinkBase so it can be used during message outputs. --- StandAlone/StandAlone.cpp | 9 ++++- glslang/CInterface/glslang_c_interface.cpp | 1 + glslang/Include/InfoSink.h | 24 ++++++++++-- glslang/Include/glslang_c_shader_types.h | 33 ++++++++-------- .../MachineIndependent/ParseContextBase.cpp | 2 +- glslang/MachineIndependent/ShaderLang.cpp | 6 ++- glslang/Public/ShaderLang.h | 38 ++++++++++--------- 7 files changed, 73 insertions(+), 40 deletions(-) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index ed3deccd05..9cccdf6fbf 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -182,6 +182,7 @@ bool HlslEnable16BitTypes = false; bool HlslDX9compatible = false; bool HlslDxPositionW = false; bool EnhancedMsgs = false; +bool AbsolutePath = false; bool DumpBuiltinSymbols = false; std::vector IncludeDirectoryList; @@ -727,6 +728,8 @@ void ProcessArguments(std::vector>& workItem HlslDxPositionW = true; } else if (lowerword == "enhanced-msgs") { EnhancedMsgs = true; + } else if (lowerword == "absolute-path") { + AbsolutePath = true; } else if (lowerword == "auto-sampled-textures") { autoSampledTextures = true; } else if (lowerword == "invert-y" || // synonyms @@ -1159,6 +1162,8 @@ void SetMessageOptions(EShMessages& messages) messages = (EShMessages)(messages | EShMsgBuiltinSymbolTable); if (EnhancedMsgs) messages = (EShMessages)(messages | EShMsgEnhanced); + if (AbsolutePath) + messages = (EShMessages)(messages | EShMsgAbsolutePath); } // @@ -1190,6 +1195,7 @@ void CompileShaders(glslang::TWorklist& worklist) if (compiler == nullptr) return; + CompileFile(workItem->name.c_str(), compiler); if (! (Options & EOptionSuppressInfolog)) @@ -1878,7 +1884,7 @@ void CompileFile(const char* fileName, ShHandle compiler) for (int j = 0; j < ((Options & EOptionMemoryLeakMode) ? 100 : 1); ++j) { // ret = ShCompile(compiler, shaderStrings, NumShaderStrings, lengths, EShOptNone, &Resources, Options, (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); ret = ShCompile(compiler, &shaderString, 1, nullptr, EShOptNone, GetResources(), 0, - (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages); + (Options & EOptionDefaultDesktop) ? 110 : 100, false, messages, fileName); // const char* multi[12] = { "# ve", "rsion", " 300 e", "s", "\n#err", // "or should be l", "ine 1", "string 5\n", "float glo", "bal", // ";\n#error should be line 2\n void main() {", "global = 2.3;}" }; @@ -1993,6 +1999,7 @@ void usage() " without explicit bindings\n" " --auto-map-locations | --aml automatically locate input/output lacking\n" " 'location' (fragile, not cross stage)\n" + " --absolute-path Prints absolute path for messages\n" " --auto-sampled-textures Removes sampler variables and converts\n" " existing textures to sampled textures\n" " --client {vulkan|opengl} see -V and -G\n" diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index 870698f2a8..cea965d404 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -205,6 +205,7 @@ static int c_shader_messages(glslang_messages_t messages) CONVERT_MSG(GLSLANG_MSG_HLSL_LEGALIZATION_BIT, EShMsgHlslLegalization); CONVERT_MSG(GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT, EShMsgHlslDX9Compatible); CONVERT_MSG(GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT, EShMsgBuiltinSymbolTable); + CONVERT_MSG(GLSLANG_MSG_ABSOLUTE_PATH, EShMsgAbsolutePath); return res; #undef CONVERT_MSG } diff --git a/glslang/Include/InfoSink.h b/glslang/Include/InfoSink.h index dceb603cff..23f495dcb7 100644 --- a/glslang/Include/InfoSink.h +++ b/glslang/Include/InfoSink.h @@ -36,6 +36,7 @@ #define _INFOSINK_INCLUDED_ #include "../Include/Common.h" +#include #include namespace glslang { @@ -67,7 +68,7 @@ enum TOutputStream { // class TInfoSinkBase { public: - TInfoSinkBase() : outputStream(4) {} + TInfoSinkBase() : outputStream(4), shaderFileName(nullptr) {} void erase() { sink.erase(); } TInfoSinkBase& operator<<(const TPersistString& t) { append(t); return *this; } TInfoSinkBase& operator<<(char c) { append(1, c); return *this; } @@ -94,11 +95,22 @@ class TInfoSinkBase { default: append("UNKNOWN ERROR: "); break; } } - void location(const TSourceLoc& loc) { + void location(const TSourceLoc& loc, bool absolute = false) { const int maxSize = 24; char locText[maxSize]; snprintf(locText, maxSize, ":%d", loc.line); - append(loc.getStringNameOrNum(false).c_str()); + + if(loc.getFilename() == nullptr && shaderFileName != nullptr && absolute) { + append(std::filesystem::absolute(shaderFileName).string()); + } else { + std::string location = loc.getStringNameOrNum(false); + if (absolute) { + append(std::filesystem::absolute(location).string()); + } else { + append(location); + } + } + append(locText); append(": "); } @@ -119,6 +131,11 @@ class TInfoSinkBase { outputStream = output; } + void setShaderFileName(const char* file = nullptr) + { + shaderFileName = file; + } + protected: void append(const char* s); @@ -131,6 +148,7 @@ class TInfoSinkBase { void appendToStream(const char* s); TPersistString sink; int outputStream; + const char* shaderFileName; }; } // end namespace glslang diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index 9bc211496c..51f5642abf 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -157,23 +157,24 @@ typedef enum { /* EShMessages counterpart */ typedef enum { - GLSLANG_MSG_DEFAULT_BIT = 0, - GLSLANG_MSG_RELAXED_ERRORS_BIT = (1 << 0), - GLSLANG_MSG_SUPPRESS_WARNINGS_BIT = (1 << 1), - GLSLANG_MSG_AST_BIT = (1 << 2), - GLSLANG_MSG_SPV_RULES_BIT = (1 << 3), - GLSLANG_MSG_VULKAN_RULES_BIT = (1 << 4), - GLSLANG_MSG_ONLY_PREPROCESSOR_BIT = (1 << 5), - GLSLANG_MSG_READ_HLSL_BIT = (1 << 6), - GLSLANG_MSG_CASCADING_ERRORS_BIT = (1 << 7), - GLSLANG_MSG_KEEP_UNCALLED_BIT = (1 << 8), - GLSLANG_MSG_HLSL_OFFSETS_BIT = (1 << 9), - GLSLANG_MSG_DEBUG_INFO_BIT = (1 << 10), + GLSLANG_MSG_DEFAULT_BIT = 0, + GLSLANG_MSG_RELAXED_ERRORS_BIT = (1 << 0), + GLSLANG_MSG_SUPPRESS_WARNINGS_BIT = (1 << 1), + GLSLANG_MSG_AST_BIT = (1 << 2), + GLSLANG_MSG_SPV_RULES_BIT = (1 << 3), + GLSLANG_MSG_VULKAN_RULES_BIT = (1 << 4), + GLSLANG_MSG_ONLY_PREPROCESSOR_BIT = (1 << 5), + GLSLANG_MSG_READ_HLSL_BIT = (1 << 6), + GLSLANG_MSG_CASCADING_ERRORS_BIT = (1 << 7), + GLSLANG_MSG_KEEP_UNCALLED_BIT = (1 << 8), + GLSLANG_MSG_HLSL_OFFSETS_BIT = (1 << 9), + GLSLANG_MSG_DEBUG_INFO_BIT = (1 << 10), GLSLANG_MSG_HLSL_ENABLE_16BIT_TYPES_BIT = (1 << 11), - GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12), - GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13), - GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14), - GLSLANG_MSG_ENHANCED = (1 << 15), + GLSLANG_MSG_HLSL_LEGALIZATION_BIT = (1 << 12), + GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT = (1 << 13), + GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14), + GLSLANG_MSG_ENHANCED = (1 << 15), + GLSLANG_MSG_ABSOLUTE_PATH = (1 << 16), LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT), } glslang_messages_t; diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 6e3d088a6e..591dfc7185 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -59,7 +59,7 @@ void TParseContextBase::outputMessage(const TSourceLoc& loc, const char* szReaso safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); infoSink.info.prefix(prefix); - infoSink.info.location(loc); + infoSink.info.location(loc, messages & EShMsgAbsolutePath); infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; if (prefix == EPrefixError) { diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index a793a5df76..29d5d5f871 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1434,7 +1434,8 @@ int ShCompile( int /*debugOptions*/, int defaultVersion, // use 100 for ES environment, 110 for desktop bool forwardCompatible, // give errors for use of deprecated features - EShMessages messages // warnings/errors/AST; things to print out + EShMessages messages, // warnings/errors/AST; things to print out, + const char *shaderFileName // the filename ) { // Map the generic handle to the C++ object @@ -1450,6 +1451,9 @@ int ShCompile( compiler->infoSink.info.erase(); compiler->infoSink.debug.erase(); + compiler->infoSink.info.setShaderFileName(shaderFileName); + compiler->infoSink.debug.setShaderFileName(shaderFileName); + TIntermediate intermediate(compiler->getLanguage()); TShader::ForbidIncluder includer; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index e0ec47f8fc..046fd917cc 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -252,23 +252,24 @@ typedef enum { // Message choices for what errors and warnings are given. // enum EShMessages : unsigned { - EShMsgDefault = 0, // default is to give all required errors and extra warnings - EShMsgRelaxedErrors = (1 << 0), // be liberal in accepting input - EShMsgSuppressWarnings = (1 << 1), // suppress all warnings, except those required by the specification - EShMsgAST = (1 << 2), // print the AST intermediate representation - EShMsgSpvRules = (1 << 3), // issue messages for SPIR-V generation - EShMsgVulkanRules = (1 << 4), // issue messages for Vulkan-requirements of GLSL for SPIR-V - EShMsgOnlyPreprocessor = (1 << 5), // only print out errors produced by the preprocessor - EShMsgReadHlsl = (1 << 6), // use HLSL parsing rules and semantics - EShMsgCascadingErrors = (1 << 7), // get cascading errors; risks error-recovery issues, instead of an early exit - EShMsgKeepUncalled = (1 << 8), // for testing, don't eliminate uncalled functions - EShMsgHlslOffsets = (1 << 9), // allow block offsets to follow HLSL rules instead of GLSL rules - EShMsgDebugInfo = (1 << 10), // save debug information - EShMsgHlslEnable16BitTypes = (1 << 11), // enable use of 16-bit types in SPIR-V for HLSL - EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages - EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (for samplers and semantics) - EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table - EShMsgEnhanced = (1 << 15), // enhanced message readability + EShMsgDefault = 0, // default is to give all required errors and extra warnings + EShMsgRelaxedErrors = (1 << 0), // be liberal in accepting input + EShMsgSuppressWarnings = (1 << 1), // suppress all warnings, except those required by the specification + EShMsgAST = (1 << 2), // print the AST intermediate representation + EShMsgSpvRules = (1 << 3), // issue messages for SPIR-V generation + EShMsgVulkanRules = (1 << 4), // issue messages for Vulkan-requirements of GLSL for SPIR-V + EShMsgOnlyPreprocessor = (1 << 5), // only print out errors produced by the preprocessor + EShMsgReadHlsl = (1 << 6), // use HLSL parsing rules and semantics + EShMsgCascadingErrors = (1 << 7), // get cascading errors; risks error-recovery issues, instead of an early exit + EShMsgKeepUncalled = (1 << 8), // for testing, don't eliminate uncalled functions + EShMsgHlslOffsets = (1 << 9), // allow block offsets to follow HLSL rules instead of GLSL rules + EShMsgDebugInfo = (1 << 10), // save debug information + EShMsgHlslEnable16BitTypes = (1 << 11), // enable use of 16-bit types in SPIR-V for HLSL + EShMsgHlslLegalization = (1 << 12), // enable HLSL Legalization messages + EShMsgHlslDX9Compatible = (1 << 13), // enable HLSL DX9 compatible mode (for samplers and semantics) + EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table + EShMsgEnhanced = (1 << 15), // enhanced message readability + EShMsgAbsolutePath = (1 << 16), // Output Absolute path for messages LAST_ELEMENT_MARKER(EShMsgCount), }; @@ -335,7 +336,8 @@ GLSLANG_EXPORT int ShCompile(const ShHandle, const char* const shaderStrings[], int, // debugOptions unused int defaultVersion = 110, // use 100 for ES environment, overridden by #version in shader bool forwardCompatible = false, // give errors for use of deprecated features - EShMessages messages = EShMsgDefault // warnings and errors + EShMessages messages = EShMsgDefault, // warnings and errors + const char* fileName = nullptr ); GLSLANG_EXPORT int ShLinkExt( From 90b46ffbcbaf2db857fba83344a659b70a8ed155 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Fri, 8 Mar 2024 13:20:46 -0700 Subject: [PATCH 434/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index fe4ad29ecf..9faf394630 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "b0a5c4ac12b742086ffb16e2ba0ad4903450ae1d" + "commit": "04896c462d9f3f504c99a4698605b6524af813c1" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "05cc486580771e4fa7ddc89f5c9ee1e97382689a" + "commit" : "8b246ff75c6615ba4532fe4fde20f1be090c3764" }, { "name": "googletest", From ee2f5d09eaf8f4e8d0d598bd2172fce290d4ca60 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Fri, 8 Mar 2024 14:40:34 -0700 Subject: [PATCH 435/594] Update CHANGES for release 14.1.0 --- CHANGES.md | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 71db4e871e..74854d8710 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,30 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 14.1.0 2024-03-08 +* Add a new --abosute-path command-line option to output absolute paths in error messages +* Support GL_EXT_control_flow_attributes2 +* Support GL_ARB_shading_language_include +* Fix HLSL built-in passthrough via inout +* Enable -Wimplicit-fallthrough and fix warnings +* Fix -Wmissing_field_initializer warnings +* Document supported dependencies in known_good.json +* Clear spirv vector before use +* Emit debug info for accelerationStructure and rayQuery variables +* Support NV_shader_atomic_fp16_vector +* Support GL_EXT_expect_assume_support +* Allow external control of whether glslang will be tested or installed +* Improve debug source and line info +* Support GL_KHR_shader_subgroup_rotate +* Add SPIRV-Tools-opt dependency if ENABLE_OPT +* Support EXT_shader_quad_control +* Add OpAssumeTrueKHR and OpExpectKHR +* Support GL_EXT_maximal_reconvergence +* Remove generation of deprecated Target.cmake files +* Fix array size of gl_SampleMask and gl_SampleMaskIn +* Support GL_ARB_texture_multisample_extension +* Emit DebugTypePointer when non-semantic debug info is enabled + ## 14.0.0 2023-12-21 ### Breaking changes From 9f37ad360ea1c32162f0cc1799b1b292594fc771 Mon Sep 17 00:00:00 2001 From: Steve Urquhart Date: Fri, 9 Feb 2024 15:14:12 -0500 Subject: [PATCH 436/594] Support files with UTF8BOM character --- StandAlone/StandAlone.cpp | 14 ++++++++++++++ Test/UTF8BOM.vert | 11 +++++++++++ Test/baseResults/UTF8BOM.vert.out | 1 + Test/runtests | 7 +++++++ 4 files changed, 33 insertions(+) create mode 100644 Test/UTF8BOM.vert create mode 100644 Test/baseResults/UTF8BOM.vert.out diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 9cccdf6fbf..ac967f2b5c 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -2167,6 +2167,20 @@ char* ReadFileData(const char* fileName) fseek(in, 0, SEEK_SET); + if (count > 3) { + unsigned char head[3]; + if (fread(head, 1, 3, in) == 3) { + if (head[0] == 0xef && head[1] == 0xbb && head[2] == 0xbf) { + // skip BOM + count -= 3; + } else { + fseek(in, 0, SEEK_SET); + } + } else { + Error("can't read input file"); + } + } + char* return_data = (char*)malloc(count + 1); // freed in FreeFileData() if ((int)fread(return_data, 1, count, in) != count) { free(return_data); diff --git a/Test/UTF8BOM.vert b/Test/UTF8BOM.vert new file mode 100644 index 0000000000..357cc54bfc --- /dev/null +++ b/Test/UTF8BOM.vert @@ -0,0 +1,11 @@ +/* + +glslangValidator.exe --glsl-version 410 -V -S vert -o UTF8BOM.vert.out UTF8BOM.vert + +*/ + +#version 110 + +void main() +{ +} diff --git a/Test/baseResults/UTF8BOM.vert.out b/Test/baseResults/UTF8BOM.vert.out new file mode 100644 index 0000000000..19db13f678 --- /dev/null +++ b/Test/baseResults/UTF8BOM.vert.out @@ -0,0 +1 @@ +UTF8BOM.vert diff --git a/Test/runtests b/Test/runtests index d3c1646e43..00c2babdaa 100755 --- a/Test/runtests +++ b/Test/runtests @@ -348,6 +348,13 @@ diff -b $BASEDIR/enhanced.7.link.out "$TARGETDIR/enhanced.7.link.out" || HASERRO run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > "$TARGETDIR/spv.textureError.frag.out" diff -b $BASEDIR/spv.textureError.frag.out "$TARGETDIR/spv.textureError.frag.out" || HASERROR=1 +# +# Test UTF8BOM +# +echo "Testing UTF8BOM" +run --glsl-version 410 -V -S vert UTF8BOM.vert > $TARGETDIR/UTF8BOM.vert.out +diff -b $BASEDIR/UTF8BOM.vert.out $TARGETDIR/UTF8BOM.vert.out || HASERROR=1 + # # Final checking # From 303467ae4e1d85bdb7d6a28df2df7ee649dbec1b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 06:34:37 +0000 Subject: [PATCH 437/594] Bump actions/checkout from 4.1.1 to 4.1.2 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.1 to 4.1.2. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/b4ffde65f46336ab88eb53be808477a3936bae11...9bb56186c3b09b4f86b1c65136769dd318469633) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 2bf66b5c64..32044813dc 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -41,7 +41,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: @@ -105,7 +105,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: @@ -162,7 +162,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index d7c48a5928..68ba5ddc13 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -17,7 +17,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: @@ -53,7 +53,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: @@ -88,7 +88,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -123,7 +123,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON @@ -147,7 +147,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: @@ -165,7 +165,7 @@ jobs: iOS: runs-on: macos-13 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 @@ -194,7 +194,7 @@ jobs: # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 @@ -217,7 +217,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index d800df2c05..feaa9039ae 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 + uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 with: persist-credentials: false From b047a21033480766a6dbfad8a3b6790055aaa93d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 18 Mar 2024 06:34:44 +0000 Subject: [PATCH 438/594] Bump github/codeql-action from 3.24.6 to 3.24.7 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.6 to 3.24.7. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/8a470fddafa5cbb6266ee11b37ef4d8aae19c571...3ab4101902695724f9365a384f86c1074d94e18c) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index feaa9039ae..18e45fb1ff 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@8a470fddafa5cbb6266ee11b37ef4d8aae19c571 # v3.24.6 + uses: github/codeql-action/upload-sarif@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 with: sarif_file: results.sarif From be0d1cb45235dc72748c1ff83120cd2518fd62e8 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 19 Mar 2024 11:41:32 -0400 Subject: [PATCH 439/594] build: fix CI sanitizer failures This is needed because newer linux kernels cause problems for the sanitizers. --- .github/workflows/continuous_integration.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 68ba5ddc13..f28d30cb73 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -62,6 +62,9 @@ jobs: uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} + # This is to combat a bug when using 6.6 linux kernels with thread/address sanitizer + # https://github.com/google/sanitizers/issues/1716 + - run: sudo sysctl vm.mmap_rnd_bits=28 - run: ./update_glslang_sources.py - name: Configure run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -D GLSLANG_TESTS=ON From 10ee92feb00712f444783032f5c9ee798887670d Mon Sep 17 00:00:00 2001 From: Wooyoung Kim Date: Wed, 20 Mar 2024 15:56:00 -0700 Subject: [PATCH 440/594] Support for SPV_QCOM_image_processing2 (#3539) --- SPIRV/CMakeLists.txt | 1 + SPIRV/GLSL.ext.QCOM.h | 2 + SPIRV/GlslangToSpv.cpp | 69 +++++++++ SPIRV/doc.cpp | 37 +++++ SPIRV/spirv.hpp | 26 ++-- .../spv.tpipBlockMatchGatherSAD.frag.out | 124 +++++++++++++++++ .../spv.tpipBlockMatchGatherSSD.frag.out | 124 +++++++++++++++++ .../spv.tpipBlockMatchWindowSAD.frag.out | 131 ++++++++++++++++++ .../spv.tpipBlockMatchWindowSSD.frag.out | 131 ++++++++++++++++++ Test/spv.tpipBlockMatchGatherSAD.frag | 38 +++++ Test/spv.tpipBlockMatchGatherSSD.frag | 38 +++++ Test/spv.tpipBlockMatchWindowSAD.frag | 39 ++++++ Test/spv.tpipBlockMatchWindowSSD.frag | 40 ++++++ glslang/Include/intermediate.h | 6 + glslang/MachineIndependent/Initialize.cpp | 16 +++ glslang/MachineIndependent/Versions.cpp | 3 + glslang/MachineIndependent/Versions.h | 1 + gtests/Spv.FromFile.cpp | 4 + 18 files changed, 822 insertions(+), 8 deletions(-) create mode 100644 Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out create mode 100644 Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out create mode 100644 Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out create mode 100644 Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out create mode 100644 Test/spv.tpipBlockMatchGatherSAD.frag create mode 100644 Test/spv.tpipBlockMatchGatherSSD.frag create mode 100644 Test/spv.tpipBlockMatchWindowSAD.frag create mode 100644 Test/spv.tpipBlockMatchWindowSSD.frag diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 1ccd60093d..3b6bfb4557 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -63,6 +63,7 @@ set(HEADERS GLSL.ext.AMD.h GLSL.ext.NV.h GLSL.ext.ARM.h + GLSL.ext.QCOM.h NonSemanticDebugPrintf.h NonSemanticShaderDebugInfo100.h) diff --git a/SPIRV/GLSL.ext.QCOM.h b/SPIRV/GLSL.ext.QCOM.h index f13bb69359..b52990f023 100644 --- a/SPIRV/GLSL.ext.QCOM.h +++ b/SPIRV/GLSL.ext.QCOM.h @@ -37,5 +37,7 @@ static const int GLSLextQCOMRevision = 1; //SPV_QCOM_image_processing const char* const E_SPV_QCOM_image_processing = "SPV_QCOM_image_processing"; +//SPV_QCOM_image_processing2 +const char* const E_SPV_QCOM_image_processing2 = "SPV_QCOM_image_processing2"; #endif // #ifndef GLSLextQCOM_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 187ecc0b5c..baf3fd7620 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -228,6 +228,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id getSymbolId(const glslang::TIntermSymbol* node); void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier); void addImageProcessingQCOMDecoration(spv::Id id, spv::Decoration decor); + void addImageProcessing2QCOMDecoration(spv::Id id, bool isForGather); spv::Id createSpvConstant(const glslang::TIntermTyped&); spv::Id createSpvConstantFromConstUnionArray(const glslang::TType& type, const glslang::TConstUnionArray&, int& nextConst, bool specConstant); @@ -3370,6 +3371,20 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt builder.addExtension(spv::E_SPV_QCOM_image_processing); break; + case glslang::EOpImageBlockMatchWindowSSDQCOM: + case glslang::EOpImageBlockMatchWindowSADQCOM: + builder.addCapability(spv::CapabilityTextureBlockMatchQCOM); + builder.addExtension(spv::E_SPV_QCOM_image_processing); + builder.addCapability(spv::CapabilityTextureBlockMatch2QCOM); + builder.addExtension(spv::E_SPV_QCOM_image_processing2); + break; + + case glslang::EOpImageBlockMatchGatherSSDQCOM: + case glslang::EOpImageBlockMatchGatherSADQCOM: + builder.addCapability(spv::CapabilityTextureBlockMatch2QCOM); + builder.addExtension(spv::E_SPV_QCOM_image_processing2); + break; + case glslang::EOpFetchMicroTriangleVertexPositionNV: case glslang::EOpFetchMicroTriangleVertexBarycentricNV: builder.addExtension(spv::E_SPV_NV_displacement_micromap); @@ -9268,6 +9283,30 @@ spv::Id TGlslangToSpvTraverser::createMiscOperation(glslang::TOperator op, spv:: opCode = spv::OpFetchMicroTriangleVertexPositionNV; break; + case glslang::EOpImageBlockMatchWindowSSDQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageBlockMatchWindowSSDQCOM; + addImageProcessing2QCOMDecoration(operands[0], false); + addImageProcessing2QCOMDecoration(operands[2], false); + break; + case glslang::EOpImageBlockMatchWindowSADQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageBlockMatchWindowSADQCOM; + addImageProcessing2QCOMDecoration(operands[0], false); + addImageProcessing2QCOMDecoration(operands[2], false); + break; + case glslang::EOpImageBlockMatchGatherSSDQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageBlockMatchGatherSSDQCOM; + addImageProcessing2QCOMDecoration(operands[0], true); + addImageProcessing2QCOMDecoration(operands[2], true); + break; + case glslang::EOpImageBlockMatchGatherSADQCOM: + typeId = builder.makeVectorType(builder.makeFloatType(32), 4); + opCode = spv::OpImageBlockMatchGatherSADQCOM; + addImageProcessing2QCOMDecoration(operands[0], true); + addImageProcessing2QCOMDecoration(operands[2], true); + break; default: return 0; } @@ -9788,6 +9827,36 @@ void TGlslangToSpvTraverser::addImageProcessingQCOMDecoration(spv::Id id, spv::D } } +void TGlslangToSpvTraverser::addImageProcessing2QCOMDecoration(spv::Id id, bool isForGather) +{ + if (isForGather) { + return addImageProcessingQCOMDecoration(id, spv::DecorationBlockMatchTextureQCOM); + } + + auto addDecor = + [this](spv::Id id, spv::Decoration decor) { + spv::Id tsopc = this->builder.getOpCode(id); + if (tsopc == spv::OpLoad) { + spv::Id tsid = this->builder.getIdOperand(id, 0); + if (this->glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) { + assert(iOSet.count(tsid) > 0); + } + this->builder.addDecoration(tsid, decor); + } + }; + + spv::Id opc = builder.getOpCode(id); + bool isInterfaceObject = (opc != spv::OpSampledImage); + + if (!isInterfaceObject) { + addDecor(builder.getIdOperand(id, 0), spv::DecorationBlockMatchTextureQCOM); + addDecor(builder.getIdOperand(id, 1), spv::DecorationBlockMatchSamplerQCOM); + } else { + addDecor(id, spv::DecorationBlockMatchTextureQCOM); + addDecor(id, spv::DecorationBlockMatchSamplerQCOM); + } +} + // Make a full tree of instructions to build a SPIR-V specialization constant, // or regular constant if possible. // diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 4ed6acfe48..26e4b1018a 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -319,6 +319,7 @@ const char* DecorationString(int decoration) case DecorationWeightTextureQCOM: return "DecorationWeightTextureQCOM"; case DecorationBlockMatchTextureQCOM: return "DecorationBlockMatchTextureQCOM"; + case DecorationBlockMatchSamplerQCOM: return "DecorationBlockMatchSamplerQCOM"; case DecorationExplicitInterpAMD: return "ExplicitInterpAMD"; case DecorationOverrideCoverageNV: return "OverrideCoverageNV"; case DecorationPassthroughNV: return "PassthroughNV"; @@ -1577,6 +1578,10 @@ const char* OpcodeString(int op) case OpImageBoxFilterQCOM: return "OpImageBoxFilterQCOM"; case OpImageBlockMatchSADQCOM: return "OpImageBlockMatchSADQCOM"; case OpImageBlockMatchSSDQCOM: return "OpImageBlockMatchSSDQCOM"; + case OpImageBlockMatchWindowSSDQCOM: return "OpImageBlockMatchWindowSSDQCOM"; + case OpImageBlockMatchWindowSADQCOM: return "OpImageBlockMatchWindowSADQCOM"; + case OpImageBlockMatchGatherSSDQCOM: return "OpImageBlockMatchGatherSSDQCOM"; + case OpImageBlockMatchGatherSADQCOM: return "OpImageBlockMatchGatherSADQCOM"; default: return "Bad"; @@ -3433,6 +3438,38 @@ void Parameterize() InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandId, "'block size'"); InstructionDesc[OpImageBlockMatchSSDQCOM].operands.push(OperandImageOperands, "", true); InstructionDesc[OpImageBlockMatchSSDQCOM].setResultAndType(true, true); + + InstructionDesc[OpImageBlockMatchWindowSSDQCOM].operands.push(OperandId, "'target texture'"); + InstructionDesc[OpImageBlockMatchWindowSSDQCOM].operands.push(OperandId, "'target coordinates'"); + InstructionDesc[OpImageBlockMatchWindowSSDQCOM].operands.push(OperandId, "'reference texture'"); + InstructionDesc[OpImageBlockMatchWindowSSDQCOM].operands.push(OperandId, "'reference coordinates'"); + InstructionDesc[OpImageBlockMatchWindowSSDQCOM].operands.push(OperandId, "'block size'"); + InstructionDesc[OpImageBlockMatchWindowSSDQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageBlockMatchWindowSSDQCOM].setResultAndType(true, true); + + InstructionDesc[OpImageBlockMatchWindowSADQCOM].operands.push(OperandId, "'target texture'"); + InstructionDesc[OpImageBlockMatchWindowSADQCOM].operands.push(OperandId, "'target coordinates'"); + InstructionDesc[OpImageBlockMatchWindowSADQCOM].operands.push(OperandId, "'reference texture'"); + InstructionDesc[OpImageBlockMatchWindowSADQCOM].operands.push(OperandId, "'reference coordinates'"); + InstructionDesc[OpImageBlockMatchWindowSADQCOM].operands.push(OperandId, "'block size'"); + InstructionDesc[OpImageBlockMatchWindowSADQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageBlockMatchWindowSADQCOM].setResultAndType(true, true); + + InstructionDesc[OpImageBlockMatchGatherSSDQCOM].operands.push(OperandId, "'target texture'"); + InstructionDesc[OpImageBlockMatchGatherSSDQCOM].operands.push(OperandId, "'target coordinates'"); + InstructionDesc[OpImageBlockMatchGatherSSDQCOM].operands.push(OperandId, "'reference texture'"); + InstructionDesc[OpImageBlockMatchGatherSSDQCOM].operands.push(OperandId, "'reference coordinates'"); + InstructionDesc[OpImageBlockMatchGatherSSDQCOM].operands.push(OperandId, "'block size'"); + InstructionDesc[OpImageBlockMatchGatherSSDQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageBlockMatchGatherSSDQCOM].setResultAndType(true, true); + + InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandId, "'target texture'"); + InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandId, "'target coordinates'"); + InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandId, "'reference texture'"); + InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandId, "'reference coordinates'"); + InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandId, "'block size'"); + InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandImageOperands, "", true); + InstructionDesc[OpImageBlockMatchGatherSADQCOM].setResultAndType(true, true); }); } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index f163f3afc2..6eceabe67e 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2020 The Khronos Group Inc. +// Copyright (c) 2014-2024 The Khronos Group Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and/or associated documentation files (the "Materials"), @@ -174,7 +174,7 @@ enum ExecutionMode { ExecutionModeStencilRefUnchangedBackAMD = 5082, ExecutionModeStencilRefGreaterBackAMD = 5083, ExecutionModeStencilRefLessBackAMD = 5084, - ExecutionModeQuadDerivativesKHR = 5088, + ExecutionModeQuadDerivativesKHR = 5088, ExecutionModeRequireFullQuadsKHR = 5089, ExecutionModeOutputLinesEXT = 5269, ExecutionModeOutputLinesNV = 5269, @@ -200,7 +200,7 @@ enum ExecutionMode { ExecutionModeNoGlobalOffsetINTEL = 5895, ExecutionModeNumSIMDWorkitemsINTEL = 5896, ExecutionModeSchedulerTargetFmaxMhzINTEL = 5903, - ExecutionModeMaximallyReconvergesKHR = 6023, + ExecutionModeMaximallyReconvergesKHR = 6023, ExecutionModeStreamingInterfaceINTEL = 6154, ExecutionModeNamedBarrierCountINTEL = 6417, ExecutionModeMax = 0x7fffffff, @@ -518,6 +518,7 @@ enum Decoration { DecorationNoUnsignedWrap = 4470, DecorationWeightTextureQCOM = 4487, DecorationBlockMatchTextureQCOM = 4488, + DecorationBlockMatchSamplerQCOM = 4499, DecorationExplicitInterpAMD = 4999, DecorationOverrideCoverageNV = 5248, DecorationPassthroughNV = 5250, @@ -725,8 +726,6 @@ enum BuiltIn { BuiltInHitTriangleVertexPositionsKHR = 5335, BuiltInHitMicroTriangleVertexPositionsNV = 5337, BuiltInHitMicroTriangleVertexBarycentricsNV = 5344, - BuiltInHitKindFrontFacingMicroTriangleNV = 5405, - BuiltInHitKindBackFacingMicroTriangleNV = 5406, BuiltInIncomingRayFlagsKHR = 5351, BuiltInIncomingRayFlagsNV = 5351, BuiltInRayGeometryIndexKHR = 5352, @@ -734,6 +733,8 @@ enum BuiltIn { BuiltInSMCountNV = 5375, BuiltInWarpIDNV = 5376, BuiltInSMIDNV = 5377, + BuiltInHitKindFrontFacingMicroTriangleNV = 5405, + BuiltInHitKindBackFacingMicroTriangleNV = 5406, BuiltInCullMaskKHR = 6021, BuiltInMax = 0x7fffffff, }; @@ -1035,6 +1036,7 @@ enum Capability { CapabilityTextureSampleWeightedQCOM = 4484, CapabilityTextureBoxFilterQCOM = 4485, CapabilityTextureBlockMatchQCOM = 4486, + CapabilityTextureBlockMatch2QCOM = 4498, CapabilityFloat16ImageAMD = 5008, CapabilityImageGatherBiasLodAMD = 5009, CapabilityFragmentMaskAMD = 5010, @@ -1103,12 +1105,12 @@ enum Capability { CapabilityDemoteToHelperInvocation = 5379, CapabilityDemoteToHelperInvocationEXT = 5379, CapabilityDisplacementMicromapNV = 5380, - CapabilityRayTracingDisplacementMicromapNV = 5409, CapabilityRayTracingOpacityMicromapEXT = 5381, CapabilityShaderInvocationReorderNV = 5383, CapabilityBindlessTextureNV = 5390, CapabilityRayQueryPositionFetchKHR = 5391, CapabilityAtomicFloat16VectorNV = 5404, + CapabilityRayTracingDisplacementMicromapNV = 5409, CapabilitySubgroupShuffleINTEL = 5568, CapabilitySubgroupBufferBlockIOINTEL = 5569, CapabilitySubgroupImageBlockIOINTEL = 5570, @@ -1698,6 +1700,10 @@ enum Op { OpImageBoxFilterQCOM = 4481, OpImageBlockMatchSSDQCOM = 4482, OpImageBlockMatchSADQCOM = 4483, + OpImageBlockMatchWindowSSDQCOM = 4500, + OpImageBlockMatchWindowSADQCOM = 4501, + OpImageBlockMatchGatherSSDQCOM = 4502, + OpImageBlockMatchGatherSADQCOM = 4503, OpGroupIAddNonUniformAMD = 5000, OpGroupFAddNonUniformAMD = 5001, OpGroupFMinNonUniformAMD = 5002, @@ -2381,8 +2387,6 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break; case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break; - case OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break; case OpCopyLogical: *hasResult = true; *hasResultType = true; break; case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; @@ -2425,6 +2429,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpImageBoxFilterQCOM: *hasResult = true; *hasResultType = true; break; case OpImageBlockMatchSSDQCOM: *hasResult = true; *hasResultType = true; break; case OpImageBlockMatchSADQCOM: *hasResult = true; *hasResultType = true; break; + case OpImageBlockMatchWindowSSDQCOM: *hasResult = true; *hasResultType = true; break; + case OpImageBlockMatchWindowSADQCOM: *hasResult = true; *hasResultType = true; break; + case OpImageBlockMatchGatherSSDQCOM: *hasResult = true; *hasResultType = true; break; + case OpImageBlockMatchGatherSADQCOM: *hasResult = true; *hasResultType = true; break; case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break; case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break; @@ -2436,6 +2444,8 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break; case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break; case OpReadClockKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadAllKHR: *hasResult = true; *hasResultType = true; break; + case OpGroupNonUniformQuadAnyKHR: *hasResult = true; *hasResultType = true; break; case OpHitObjectRecordHitMotionNV: *hasResult = false; *hasResultType = false; break; case OpHitObjectRecordHitWithIndexMotionNV: *hasResult = false; *hasResultType = false; break; case OpHitObjectRecordMissMotionNV: *hasResult = false; *hasResultType = false; break; diff --git a/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out new file mode 100644 index 0000000000..be4c16176a --- /dev/null +++ b/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out @@ -0,0 +1,124 @@ +spv.tpipBlockMatchGatherSAD.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 72 + + Capability Shader + Capability Bad + Extension "SPV_QCOM_image_processing2" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 41 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing2" + Name 4 "main" + Name 9 "tgt_coords" + Name 13 "v_texcoord" + Name 26 "ref_coords" + Name 37 "blockSize" + Name 41 "fragColor" + Name 44 "tex2D_src1" + Name 48 "samp" + Name 53 "tex2D_src2" + Name 61 "target_samp" + Name 64 "ref_samp" + Name 71 "tex2DArray_weights" + Decorate 13(v_texcoord) Location 0 + Decorate 41(fragColor) Location 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) Binding 1 + Decorate 48(samp) DescriptorSet 0 + Decorate 48(samp) Binding 3 + Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM + Decorate 61(target_samp) DescriptorSet 0 + Decorate 61(target_samp) Binding 4 + Decorate 64(ref_samp) DescriptorSet 0 + Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM + Decorate 71(tex2DArray_weights) DescriptorSet 0 + Decorate 71(tex2DArray_weights) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Input 11(fvec4) + 13(v_texcoord): 12(ptr) Variable Input + 14: 6(int) Constant 0 + 15: TypePointer Input 10(float) + 19: TypePointer Function 6(int) + 21: 6(int) Constant 1 + 27: 6(int) Constant 2 + 32: 6(int) Constant 3 + 38: 6(int) Constant 4 + 39: 7(ivec2) ConstantComposite 38 38 + 40: TypePointer Output 11(fvec4) + 41(fragColor): 40(ptr) Variable Output + 42: TypeImage 10(float) 2D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(tex2D_src1): 43(ptr) Variable UniformConstant + 46: TypeSampler + 47: TypePointer UniformConstant 46 + 48(samp): 47(ptr) Variable UniformConstant + 50: TypeSampledImage 42 + 53(tex2D_src2): 43(ptr) Variable UniformConstant + 60: TypePointer UniformConstant 50 + 61(target_samp): 60(ptr) Variable UniformConstant + 64(ref_samp): 60(ptr) Variable UniformConstant + 69: TypeImage 10(float) 2D array sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(tex2DArray_weights): 70(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(tgt_coords): 8(ptr) Variable Function + 26(ref_coords): 8(ptr) Variable Function + 37(blockSize): 8(ptr) Variable Function + 16: 15(ptr) AccessChain 13(v_texcoord) 14 + 17: 10(float) Load 16 + 18: 6(int) ConvertFToU 17 + 20: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 20 18 + 22: 15(ptr) AccessChain 13(v_texcoord) 21 + 23: 10(float) Load 22 + 24: 6(int) ConvertFToU 23 + 25: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 25 24 + 28: 15(ptr) AccessChain 13(v_texcoord) 27 + 29: 10(float) Load 28 + 30: 6(int) ConvertFToU 29 + 31: 19(ptr) AccessChain 26(ref_coords) 14 + Store 31 30 + 33: 15(ptr) AccessChain 13(v_texcoord) 32 + 34: 10(float) Load 33 + 35: 6(int) ConvertFToU 34 + 36: 19(ptr) AccessChain 26(ref_coords) 21 + Store 36 35 + Store 37(blockSize) 39 + 45: 42 Load 44(tex2D_src1) + 49: 46 Load 48(samp) + 51: 50 SampledImage 45 49 + 52: 7(ivec2) Load 9(tgt_coords) + 54: 42 Load 53(tex2D_src2) + 55: 46 Load 48(samp) + 56: 50 SampledImage 54 55 + 57: 7(ivec2) Load 26(ref_coords) + 58: 7(ivec2) Load 37(blockSize) + 59: 11(fvec4) ImageBlockMatchGatherSADQCOM 51 52 56 57 58 + Store 41(fragColor) 59 + 62: 50 Load 61(target_samp) + 63: 7(ivec2) Load 9(tgt_coords) + 65: 50 Load 64(ref_samp) + 66: 7(ivec2) Load 26(ref_coords) + 67: 7(ivec2) Load 37(blockSize) + 68: 11(fvec4) ImageBlockMatchGatherSADQCOM 62 63 65 66 67 + Store 41(fragColor) 68 + Return + FunctionEnd diff --git a/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out new file mode 100644 index 0000000000..5b63e49d2a --- /dev/null +++ b/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out @@ -0,0 +1,124 @@ +spv.tpipBlockMatchGatherSSD.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 72 + + Capability Shader + Capability Bad + Extension "SPV_QCOM_image_processing2" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 41 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing2" + Name 4 "main" + Name 9 "tgt_coords" + Name 13 "v_texcoord" + Name 26 "ref_coords" + Name 37 "blockSize" + Name 41 "fragColor" + Name 44 "tex2D_src1" + Name 48 "samp" + Name 53 "tex2D_src2" + Name 61 "target_samp" + Name 64 "ref_samp" + Name 71 "tex2DArray_weights" + Decorate 13(v_texcoord) Location 0 + Decorate 41(fragColor) Location 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) Binding 1 + Decorate 48(samp) DescriptorSet 0 + Decorate 48(samp) Binding 3 + Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM + Decorate 61(target_samp) DescriptorSet 0 + Decorate 61(target_samp) Binding 4 + Decorate 64(ref_samp) DescriptorSet 0 + Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM + Decorate 71(tex2DArray_weights) DescriptorSet 0 + Decorate 71(tex2DArray_weights) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Input 11(fvec4) + 13(v_texcoord): 12(ptr) Variable Input + 14: 6(int) Constant 0 + 15: TypePointer Input 10(float) + 19: TypePointer Function 6(int) + 21: 6(int) Constant 1 + 27: 6(int) Constant 2 + 32: 6(int) Constant 3 + 38: 6(int) Constant 4 + 39: 7(ivec2) ConstantComposite 38 38 + 40: TypePointer Output 11(fvec4) + 41(fragColor): 40(ptr) Variable Output + 42: TypeImage 10(float) 2D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(tex2D_src1): 43(ptr) Variable UniformConstant + 46: TypeSampler + 47: TypePointer UniformConstant 46 + 48(samp): 47(ptr) Variable UniformConstant + 50: TypeSampledImage 42 + 53(tex2D_src2): 43(ptr) Variable UniformConstant + 60: TypePointer UniformConstant 50 + 61(target_samp): 60(ptr) Variable UniformConstant + 64(ref_samp): 60(ptr) Variable UniformConstant + 69: TypeImage 10(float) 2D array sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(tex2DArray_weights): 70(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(tgt_coords): 8(ptr) Variable Function + 26(ref_coords): 8(ptr) Variable Function + 37(blockSize): 8(ptr) Variable Function + 16: 15(ptr) AccessChain 13(v_texcoord) 14 + 17: 10(float) Load 16 + 18: 6(int) ConvertFToU 17 + 20: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 20 18 + 22: 15(ptr) AccessChain 13(v_texcoord) 21 + 23: 10(float) Load 22 + 24: 6(int) ConvertFToU 23 + 25: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 25 24 + 28: 15(ptr) AccessChain 13(v_texcoord) 27 + 29: 10(float) Load 28 + 30: 6(int) ConvertFToU 29 + 31: 19(ptr) AccessChain 26(ref_coords) 14 + Store 31 30 + 33: 15(ptr) AccessChain 13(v_texcoord) 32 + 34: 10(float) Load 33 + 35: 6(int) ConvertFToU 34 + 36: 19(ptr) AccessChain 26(ref_coords) 21 + Store 36 35 + Store 37(blockSize) 39 + 45: 42 Load 44(tex2D_src1) + 49: 46 Load 48(samp) + 51: 50 SampledImage 45 49 + 52: 7(ivec2) Load 9(tgt_coords) + 54: 42 Load 53(tex2D_src2) + 55: 46 Load 48(samp) + 56: 50 SampledImage 54 55 + 57: 7(ivec2) Load 26(ref_coords) + 58: 7(ivec2) Load 37(blockSize) + 59: 11(fvec4) ImageBlockMatchGatherSSDQCOM 51 52 56 57 58 + Store 41(fragColor) 59 + 62: 50 Load 61(target_samp) + 63: 7(ivec2) Load 9(tgt_coords) + 65: 50 Load 64(ref_samp) + 66: 7(ivec2) Load 26(ref_coords) + 67: 7(ivec2) Load 37(blockSize) + 68: 11(fvec4) ImageBlockMatchGatherSSDQCOM 62 63 65 66 67 + Store 41(fragColor) 68 + Return + FunctionEnd diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out new file mode 100644 index 0000000000..afadf03040 --- /dev/null +++ b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out @@ -0,0 +1,131 @@ +spv.tpipBlockMatchWindowSAD.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 72 + + Capability Shader + Capability TextureBlockMatchQCOM + Capability Bad + Extension "SPV_QCOM_image_processing" + Extension "SPV_QCOM_image_processing2" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 41 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" + SourceExtension "GL_QCOM_image_processing2" + Name 4 "main" + Name 9 "tgt_coords" + Name 13 "v_texcoord" + Name 26 "ref_coords" + Name 37 "blockSize" + Name 41 "fragColor" + Name 44 "tex2D_src1" + Name 48 "samp" + Name 53 "tex2D_src2" + Name 61 "target_samp" + Name 64 "ref_samp" + Name 71 "tex2DArray_weights" + Decorate 13(v_texcoord) Location 0 + Decorate 41(fragColor) Location 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) Binding 1 + Decorate 48(samp) DescriptorSet 0 + Decorate 48(samp) Binding 3 + Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 48(samp) DecorationBlockMatchSamplerQCOM + Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM + Decorate 48(samp) DecorationBlockMatchSamplerQCOM + Decorate 61(target_samp) DescriptorSet 0 + Decorate 61(target_samp) Binding 4 + Decorate 64(ref_samp) DescriptorSet 0 + Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 61(target_samp) DecorationBlockMatchSamplerQCOM + Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) DecorationBlockMatchSamplerQCOM + Decorate 71(tex2DArray_weights) DescriptorSet 0 + Decorate 71(tex2DArray_weights) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Input 11(fvec4) + 13(v_texcoord): 12(ptr) Variable Input + 14: 6(int) Constant 0 + 15: TypePointer Input 10(float) + 19: TypePointer Function 6(int) + 21: 6(int) Constant 1 + 27: 6(int) Constant 2 + 32: 6(int) Constant 3 + 38: 6(int) Constant 4 + 39: 7(ivec2) ConstantComposite 38 38 + 40: TypePointer Output 11(fvec4) + 41(fragColor): 40(ptr) Variable Output + 42: TypeImage 10(float) 2D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(tex2D_src1): 43(ptr) Variable UniformConstant + 46: TypeSampler + 47: TypePointer UniformConstant 46 + 48(samp): 47(ptr) Variable UniformConstant + 50: TypeSampledImage 42 + 53(tex2D_src2): 43(ptr) Variable UniformConstant + 60: TypePointer UniformConstant 50 + 61(target_samp): 60(ptr) Variable UniformConstant + 64(ref_samp): 60(ptr) Variable UniformConstant + 69: TypeImage 10(float) 2D array sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(tex2DArray_weights): 70(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(tgt_coords): 8(ptr) Variable Function + 26(ref_coords): 8(ptr) Variable Function + 37(blockSize): 8(ptr) Variable Function + 16: 15(ptr) AccessChain 13(v_texcoord) 14 + 17: 10(float) Load 16 + 18: 6(int) ConvertFToU 17 + 20: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 20 18 + 22: 15(ptr) AccessChain 13(v_texcoord) 21 + 23: 10(float) Load 22 + 24: 6(int) ConvertFToU 23 + 25: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 25 24 + 28: 15(ptr) AccessChain 13(v_texcoord) 27 + 29: 10(float) Load 28 + 30: 6(int) ConvertFToU 29 + 31: 19(ptr) AccessChain 26(ref_coords) 14 + Store 31 30 + 33: 15(ptr) AccessChain 13(v_texcoord) 32 + 34: 10(float) Load 33 + 35: 6(int) ConvertFToU 34 + 36: 19(ptr) AccessChain 26(ref_coords) 21 + Store 36 35 + Store 37(blockSize) 39 + 45: 42 Load 44(tex2D_src1) + 49: 46 Load 48(samp) + 51: 50 SampledImage 45 49 + 52: 7(ivec2) Load 9(tgt_coords) + 54: 42 Load 53(tex2D_src2) + 55: 46 Load 48(samp) + 56: 50 SampledImage 54 55 + 57: 7(ivec2) Load 26(ref_coords) + 58: 7(ivec2) Load 37(blockSize) + 59: 11(fvec4) ImageBlockMatchWindowSADQCOM 51 52 56 57 58 + Store 41(fragColor) 59 + 62: 50 Load 61(target_samp) + 63: 7(ivec2) Load 9(tgt_coords) + 65: 50 Load 64(ref_samp) + 66: 7(ivec2) Load 26(ref_coords) + 67: 7(ivec2) Load 37(blockSize) + 68: 11(fvec4) ImageBlockMatchWindowSADQCOM 62 63 65 66 67 + Store 41(fragColor) 68 + Return + FunctionEnd diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out new file mode 100644 index 0000000000..864a8bcace --- /dev/null +++ b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out @@ -0,0 +1,131 @@ +spv.tpipBlockMatchWindowSSD.frag +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 72 + + Capability Shader + Capability TextureBlockMatchQCOM + Capability Bad + Extension "SPV_QCOM_image_processing" + Extension "SPV_QCOM_image_processing2" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 13 41 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" + SourceExtension "GL_QCOM_image_processing2" + Name 4 "main" + Name 9 "tgt_coords" + Name 13 "v_texcoord" + Name 26 "ref_coords" + Name 37 "blockSize" + Name 41 "fragColor" + Name 44 "tex2D_src1" + Name 48 "samp" + Name 53 "tex2D_src2" + Name 61 "target_samp" + Name 64 "ref_samp" + Name 71 "tex2DArray_weights" + Decorate 13(v_texcoord) Location 0 + Decorate 41(fragColor) Location 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) Binding 1 + Decorate 48(samp) DescriptorSet 0 + Decorate 48(samp) Binding 3 + Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 48(samp) DecorationBlockMatchSamplerQCOM + Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM + Decorate 48(samp) DecorationBlockMatchSamplerQCOM + Decorate 61(target_samp) DescriptorSet 0 + Decorate 61(target_samp) Binding 4 + Decorate 64(ref_samp) DescriptorSet 0 + Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 61(target_samp) DecorationBlockMatchSamplerQCOM + Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) DecorationBlockMatchSamplerQCOM + Decorate 71(tex2DArray_weights) DescriptorSet 0 + Decorate 71(tex2DArray_weights) Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: TypeVector 6(int) 2 + 8: TypePointer Function 7(ivec2) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypePointer Input 11(fvec4) + 13(v_texcoord): 12(ptr) Variable Input + 14: 6(int) Constant 0 + 15: TypePointer Input 10(float) + 19: TypePointer Function 6(int) + 21: 6(int) Constant 1 + 27: 6(int) Constant 2 + 32: 6(int) Constant 3 + 38: 6(int) Constant 4 + 39: 7(ivec2) ConstantComposite 38 38 + 40: TypePointer Output 11(fvec4) + 41(fragColor): 40(ptr) Variable Output + 42: TypeImage 10(float) 2D sampled format:Unknown + 43: TypePointer UniformConstant 42 + 44(tex2D_src1): 43(ptr) Variable UniformConstant + 46: TypeSampler + 47: TypePointer UniformConstant 46 + 48(samp): 47(ptr) Variable UniformConstant + 50: TypeSampledImage 42 + 53(tex2D_src2): 43(ptr) Variable UniformConstant + 60: TypePointer UniformConstant 50 + 61(target_samp): 60(ptr) Variable UniformConstant + 64(ref_samp): 60(ptr) Variable UniformConstant + 69: TypeImage 10(float) 2D array sampled format:Unknown + 70: TypePointer UniformConstant 69 +71(tex2DArray_weights): 70(ptr) Variable UniformConstant + 4(main): 2 Function None 3 + 5: Label + 9(tgt_coords): 8(ptr) Variable Function + 26(ref_coords): 8(ptr) Variable Function + 37(blockSize): 8(ptr) Variable Function + 16: 15(ptr) AccessChain 13(v_texcoord) 14 + 17: 10(float) Load 16 + 18: 6(int) ConvertFToU 17 + 20: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 20 18 + 22: 15(ptr) AccessChain 13(v_texcoord) 21 + 23: 10(float) Load 22 + 24: 6(int) ConvertFToU 23 + 25: 19(ptr) AccessChain 9(tgt_coords) 14 + Store 25 24 + 28: 15(ptr) AccessChain 13(v_texcoord) 27 + 29: 10(float) Load 28 + 30: 6(int) ConvertFToU 29 + 31: 19(ptr) AccessChain 26(ref_coords) 14 + Store 31 30 + 33: 15(ptr) AccessChain 13(v_texcoord) 32 + 34: 10(float) Load 33 + 35: 6(int) ConvertFToU 34 + 36: 19(ptr) AccessChain 26(ref_coords) 21 + Store 36 35 + Store 37(blockSize) 39 + 45: 42 Load 44(tex2D_src1) + 49: 46 Load 48(samp) + 51: 50 SampledImage 45 49 + 52: 7(ivec2) Load 9(tgt_coords) + 54: 42 Load 53(tex2D_src2) + 55: 46 Load 48(samp) + 56: 50 SampledImage 54 55 + 57: 7(ivec2) Load 26(ref_coords) + 58: 7(ivec2) Load 37(blockSize) + 59: 11(fvec4) ImageBlockMatchWindowSSDQCOM 51 52 56 57 58 + Store 41(fragColor) 59 + 62: 50 Load 61(target_samp) + 63: 7(ivec2) Load 9(tgt_coords) + 65: 50 Load 64(ref_samp) + 66: 7(ivec2) Load 26(ref_coords) + 67: 7(ivec2) Load 37(blockSize) + 68: 11(fvec4) ImageBlockMatchWindowSSDQCOM 62 63 65 66 67 + Store 41(fragColor) 68 + Return + FunctionEnd diff --git a/Test/spv.tpipBlockMatchGatherSAD.frag b/Test/spv.tpipBlockMatchGatherSAD.frag new file mode 100644 index 0000000000..d793a5e609 --- /dev/null +++ b/Test/spv.tpipBlockMatchGatherSAD.frag @@ -0,0 +1,38 @@ +#version 450 +#extension GL_QCOM_image_processing2 : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D target_samp; +layout(set = 0, binding = 5) uniform sampler2D ref_samp; + +void main() +{ + + uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); + uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); + uvec2 blockSize = uvec2(4, 4); + fragColor = textureBlockMatchGatherSADQCOM( + sampler2D(tex2D_src1, samp), // target texture + tgt_coords, // target coords + sampler2D(tex2D_src2, samp), // reference texture + ref_coords, // reference coords + blockSize); // block size + fragColor = textureBlockMatchGatherSADQCOM( + target_samp, // target texture + tgt_coords, // target coords + ref_samp, // reference texture + ref_coords, // reference coords + blockSize); // block size +} + diff --git a/Test/spv.tpipBlockMatchGatherSSD.frag b/Test/spv.tpipBlockMatchGatherSSD.frag new file mode 100644 index 0000000000..d3a0bcea16 --- /dev/null +++ b/Test/spv.tpipBlockMatchGatherSSD.frag @@ -0,0 +1,38 @@ +#version 450 +#extension GL_QCOM_image_processing2 : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D target_samp; +layout(set = 0, binding = 5) uniform sampler2D ref_samp; + +void main() +{ + + uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); + uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); + uvec2 blockSize = uvec2(4, 4); + fragColor = textureBlockMatchGatherSSDQCOM( + sampler2D(tex2D_src1, samp), // target texture + tgt_coords, // target coords + sampler2D(tex2D_src2, samp), // reference texture + ref_coords, // reference coords + blockSize); // block size + fragColor = textureBlockMatchGatherSSDQCOM( + target_samp, // target texture + tgt_coords, // target coords + ref_samp, // reference texture + ref_coords, // reference coords + blockSize); // block size +} + diff --git a/Test/spv.tpipBlockMatchWindowSAD.frag b/Test/spv.tpipBlockMatchWindowSAD.frag new file mode 100644 index 0000000000..468b8d85f5 --- /dev/null +++ b/Test/spv.tpipBlockMatchWindowSAD.frag @@ -0,0 +1,39 @@ +#version 450 +#extension GL_QCOM_image_processing : require +#extension GL_QCOM_image_processing2 : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D target_samp; +layout(set = 0, binding = 5) uniform sampler2D ref_samp; + +void main() +{ + + uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); + uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); + uvec2 blockSize = uvec2(4, 4); + fragColor = textureBlockMatchWindowSADQCOM( + sampler2D(tex2D_src1, samp), // target texture + tgt_coords, // target coords + sampler2D(tex2D_src2, samp), // reference texture + ref_coords, // reference coords + blockSize); // block size + fragColor = textureBlockMatchWindowSADQCOM( + target_samp, // target texture + tgt_coords, // target coords + ref_samp, // reference texture + ref_coords, // reference coords + blockSize); // block size +} + diff --git a/Test/spv.tpipBlockMatchWindowSSD.frag b/Test/spv.tpipBlockMatchWindowSSD.frag new file mode 100644 index 0000000000..fee1bb4ab1 --- /dev/null +++ b/Test/spv.tpipBlockMatchWindowSSD.frag @@ -0,0 +1,40 @@ +#version 450 +#extension GL_QCOM_image_processing : require +#extension GL_QCOM_image_processing2 : require + +precision highp float; + +// fragment shader inputs and outputs +layout (location = 0) in vec4 v_texcoord; + +layout (location = 0) out vec4 fragColor; + +// fragment shader resources +layout(set = 0, binding = 0) uniform texture2DArray tex2DArray_weights; +layout(set = 0, binding = 1) uniform texture2D tex2D_src1; +layout(set = 0, binding = 2) uniform texture2D tex2D_src2; +layout(set = 0, binding = 3) uniform sampler samp; +layout(set = 0, binding = 4) uniform sampler2D target_samp; +layout(set = 0, binding = 5) uniform sampler2D ref_samp; + +void main() +{ + + uvec2 tgt_coords; tgt_coords.x = uint(v_texcoord.x); tgt_coords.x = uint(v_texcoord.y); + uvec2 ref_coords; ref_coords.x = uint(v_texcoord.z); ref_coords.y = uint(v_texcoord.w); + uvec2 blockSize = uvec2(4, 4); + fragColor = textureBlockMatchWindowSSDQCOM( + sampler2D(tex2D_src1, samp), // target texture + tgt_coords, // target coords + sampler2D(tex2D_src2, samp), // reference texture + ref_coords, // reference coords + blockSize); // block size + fragColor = textureBlockMatchWindowSSDQCOM( + target_samp, // target texture + tgt_coords, // target coords + ref_samp, // reference texture + ref_coords, // reference coords + blockSize); // block size +} + + diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index c7640ec37d..bcce91d3ac 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1111,6 +1111,12 @@ enum TOperator { EOpImageBoxFilterQCOM, EOpImageBlockMatchSADQCOM, EOpImageBlockMatchSSDQCOM, + + // Image processing2 + EOpImageBlockMatchWindowSSDQCOM, + EOpImageBlockMatchWindowSADQCOM, + EOpImageBlockMatchGatherSSDQCOM, + EOpImageBlockMatchGatherSADQCOM, }; enum TLinkType { diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 858ae6adef..8e742eab42 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4233,6 +4233,11 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "vec4 textureBoxFilterQCOM(sampler2D, vec2, vec2);" "vec4 textureBlockMatchSADQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "vec4 textureBlockMatchSSDQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" + + "vec4 textureBlockMatchWindowSSDQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" + "vec4 textureBlockMatchWindowSADQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" + "vec4 textureBlockMatchGatherSSDQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" + "vec4 textureBlockMatchGatherSADQCOM(sampler2D, uvec2, sampler2D, uvec2, uvec2);" "\n"); } @@ -8909,10 +8914,16 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion if ((profile == EEsProfile && version >= 310) || (profile != EEsProfile && version >= 140)) { + symbolTable.setFunctionExtensions("textureWeightedQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBoxFilterQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBlockMatchSADQCOM", 1, &E_GL_QCOM_image_processing); symbolTable.setFunctionExtensions("textureBlockMatchSSDQCOM", 1, &E_GL_QCOM_image_processing); + + symbolTable.setFunctionExtensions("textureBlockMatchWindowSSDQCOM", 1, &E_GL_QCOM_image_processing2); + symbolTable.setFunctionExtensions("textureBlockMatchWindowSADQCOM", 1, &E_GL_QCOM_image_processing2); + symbolTable.setFunctionExtensions("textureBlockMatchGatherSSDQCOM", 1, &E_GL_QCOM_image_processing2); + symbolTable.setFunctionExtensions("textureBlockMatchGatherSADQCOM", 1, &E_GL_QCOM_image_processing2); } break; @@ -10117,6 +10128,11 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion symbolTable.relateToOperator("textureBoxFilterQCOM", EOpImageBoxFilterQCOM); symbolTable.relateToOperator("textureBlockMatchSADQCOM", EOpImageBlockMatchSADQCOM); symbolTable.relateToOperator("textureBlockMatchSSDQCOM", EOpImageBlockMatchSSDQCOM); + + symbolTable.relateToOperator("textureBlockMatchWindowSSDQCOM", EOpImageBlockMatchWindowSSDQCOM); + symbolTable.relateToOperator("textureBlockMatchWindowSADQCOM", EOpImageBlockMatchWindowSADQCOM); + symbolTable.relateToOperator("textureBlockMatchGatherSSDQCOM", EOpImageBlockMatchGatherSSDQCOM); + symbolTable.relateToOperator("textureBlockMatchGatherSADQCOM", EOpImageBlockMatchGatherSADQCOM); } if (profile != EEsProfile && spvVersion.spv == 0) { diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 25d49858c4..44ba9e0616 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -315,6 +315,7 @@ void TParseVersions::initializeExtensionBehavior() // QCOM extensionBehavior[E_GL_QCOM_image_processing] = EBhDisable; + extensionBehavior[E_GL_QCOM_image_processing2] = EBhDisable; // AEP extensionBehavior[E_GL_ANDROID_extension_pack_es31a] = EBhDisable; @@ -446,6 +447,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_shader_non_constant_global_initializers 1\n" "#define GL_QCOM_image_processing 1\n" + "#define GL_QCOM_image_processing2 1\n" ; if (version >= 300) { @@ -572,6 +574,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_NV_shader_invocation_reorder 1\n" "#define GL_QCOM_image_processing 1\n" + "#define GL_QCOM_image_processing2 1\n" "#define GL_EXT_shader_explicit_arithmetic_types 1\n" "#define GL_EXT_shader_explicit_arithmetic_types_int8 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index a2f61dfc7f..cfaeb1ff1e 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -292,6 +292,7 @@ const int Num_viewportEXTs = sizeof(viewportEXTs) / sizeof(viewportEXTs[0]); const char* const E_GL_QCOM_image_processing = "GL_QCOM_image_processing"; +const char* const E_GL_QCOM_image_processing2 = "GL_QCOM_image_processing2"; // AEP const char* const E_GL_ANDROID_extension_pack_es31a = "GL_ANDROID_extension_pack_es31a"; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index e111168aa5..e820962df2 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -845,6 +845,10 @@ INSTANTIATE_TEST_SUITE_P( "spv.tpipBlockMatchSSD.frag", "spv.tpipBlockMatchSAD.frag", "spv.tpipTextureArrays.frag", + "spv.tpipBlockMatchGatherSAD.frag", + "spv.tpipBlockMatchGatherSSD.frag", + "spv.tpipBlockMatchWindowSAD.frag", + "spv.tpipBlockMatchWindowSSD.frag", })), FileNameAsCustomTestSuffix ); From 022aea431c462f351c1120cb0b4a2144aa237a50 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Thu, 21 Mar 2024 23:09:00 +0800 Subject: [PATCH 441/594] Fix issues of the interaction between cooperative_matrix and spirv_intrinsics coopmat<> type definition allows type parameters. To make it accept types defined by spirv_type directive, we add spirvType info to the type parameters. This change is to support this case. And a test is added to show the missing usage. --- ...spv.intrinsicsInteractWithCoopMat.comp.out | 71 + Test/spv.intrinsicsInteractWithCoopMat.comp | 20 + glslang/Include/Types.h | 26 +- glslang/MachineIndependent/ParseHelper.cpp | 4 +- glslang/MachineIndependent/glslang.y | 1 + glslang/MachineIndependent/glslang_tab.cpp | 2035 +++++++++-------- gtests/Spv.FromFile.cpp | 1 + 7 files changed, 1136 insertions(+), 1022 deletions(-) create mode 100644 Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out create mode 100644 Test/spv.intrinsicsInteractWithCoopMat.comp diff --git a/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out b/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out new file mode 100644 index 0000000000..c19a592493 --- /dev/null +++ b/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out @@ -0,0 +1,71 @@ +spv.intrinsicsInteractWithCoopMat.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 36 + + Capability Shader + Capability Float16 + Capability VulkanMemoryModelKHR + Capability CooperativeMatrixKHR + Extension "SPV_KHR_cooperative_matrix" + Extension "SPV_KHR_storage_buffer_storage_class" + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 32 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_spirv_intrinsics" + SourceExtension "GL_KHR_cooperative_matrix" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 13 "tempArg" + Name 16 "Buf" + MemberName 16(Buf) 0 "x" + Name 18 "buf" + Name 26 "A" + Decorate 15 ArrayStride 16 + MemberDecorate 16(Buf) 0 Offset 0 + Decorate 16(Buf) Block + Decorate 18(buf) DescriptorSet 0 + Decorate 18(buf) Binding 0 + Decorate 35 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 16 + 10: 7(int) Constant 0 + 11: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 10 + 12: TypePointer Function 11 + 14: TypeVector 7(int) 4 + 15: TypeRuntimeArray 14(ivec4) + 16(Buf): TypeStruct 15 + 17: TypePointer StorageBuffer 16(Buf) + 18(buf): 17(ptr) Variable StorageBuffer + 19: TypeInt 32 1 + 20: 19(int) Constant 0 + 21: TypePointer StorageBuffer 14(ivec4) + 23: 7(int) Constant 2 + 25: TypePointer Private 11 + 26(A): 25(ptr) Variable Private + 29: 7(int) Constant 64 + 31: 7(int) Constant 4 + 32: TypeVector 7(int) 3 + 33: 7(int) Constant 32 + 34: 7(int) Constant 1 + 35: 32(ivec3) ConstantComposite 33 34 34 + 4(main): 2 Function None 3 + 5: Label + 13(tempArg): 12(ptr) Variable Function + 22: 21(ptr) AccessChain 18(buf) 20 10 + 24: 11 CooperativeMatrixLoadKHR 22 20 23 None + Store 13(tempArg) 24 + 27: 11 Load 13(tempArg) + Store 26(A) 27 + 28: 11 Load 26(A) + 30: 21(ptr) AccessChain 18(buf) 20 29 + CooperativeMatrixStoreKHR 30 28 20 31 None + Return + FunctionEnd diff --git a/Test/spv.intrinsicsInteractWithCoopMat.comp b/Test/spv.intrinsicsInteractWithCoopMat.comp new file mode 100644 index 0000000000..90ff0fb289 --- /dev/null +++ b/Test/spv.intrinsicsInteractWithCoopMat.comp @@ -0,0 +1,20 @@ +#version 450 core +#pragma use_vulkan_memory_model + +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_spirv_intrinsics : enable + +layout(local_size_x = 32, local_size_y = 1, local_size_z = 1) in; + +layout(set=0, binding=0, std430) buffer Buf { uvec4 x[]; } buf; + +#define ELT_SIZE 16 +#define half spirv_type(capabilities=[9], id = 22, 16) + +coopmat A; + +void main() { + coopMatLoad(A, buf.x, 0, ELT_SIZE / 8, 0); + coopMatStore(A, buf.x, 64, 4, 0); +} diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 939acbfd7c..2326228546 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -1435,13 +1435,25 @@ class TTypeParameters { public: POOL_ALLOCATOR_NEW_DELETE(GetThreadPoolAllocator()) - TTypeParameters() : basicType(EbtVoid), arraySizes(nullptr) {} + TTypeParameters() : basicType(EbtVoid), arraySizes(nullptr), spirvType(nullptr) {} TBasicType basicType; TArraySizes *arraySizes; + TSpirvType *spirvType; - bool operator==(const TTypeParameters& rhs) const { return basicType == rhs.basicType && *arraySizes == *rhs.arraySizes; } - bool operator!=(const TTypeParameters& rhs) const { return basicType != rhs.basicType || *arraySizes != *rhs.arraySizes; } + bool operator==(const TTypeParameters& rhs) const + { + bool same = basicType == rhs.basicType && *arraySizes == *rhs.arraySizes; + if (same && basicType == EbtSpirvType) { + assert(spirvType && rhs.spirvType); + return *spirvType == *rhs.spirvType; + } + return same; + } + bool operator!=(const TTypeParameters& rhs) const + { + return !(*this == rhs); + } }; // @@ -1618,6 +1630,10 @@ class TType { } if (p.isCoopmatKHR() && p.typeParameters && p.typeParameters->arraySizes->getNumDims() > 0) { basicType = p.typeParameters->basicType; + if (isSpirvType()) { + assert(p.typeParameters->spirvType); + spirvType = p.typeParameters->spirvType; + } if (p.typeParameters->arraySizes->getNumDims() == 4) { const int dimSize = p.typeParameters->arraySizes->getDimSize(3); @@ -2719,7 +2735,8 @@ class TType { if (isCoopMatKHR() && right.isCoopMatKHR()) { return ((getBasicType() == right.getBasicType()) || (getBasicType() == EbtCoopmat) || (right.getBasicType() == EbtCoopmat)) && - typeParameters == nullptr && right.typeParameters != nullptr; + ((typeParameters == nullptr && right.typeParameters != nullptr) || + (typeParameters != nullptr && right.typeParameters == nullptr)); } return false; } @@ -2825,6 +2842,7 @@ class TType { typeParameters = new TTypeParameters; typeParameters->arraySizes = new TArraySizes; *typeParameters->arraySizes = *copyOf.typeParameters->arraySizes; + *typeParameters->spirvType = *copyOf.typeParameters->spirvType; typeParameters->basicType = copyOf.basicType; } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f6503eccc4..3d770bfa27 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7413,6 +7413,7 @@ void TParseContext::coopMatTypeParametersCheck(const TSourceLoc& loc, const TPub case EbtUint: case EbtUint8: case EbtUint16: + case EbtSpirvType: break; default: error(loc, "coopmat invalid basic type", TType::getBasicString(publicType.typeParameters->basicType), ""); @@ -7795,7 +7796,8 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden error(loc, "unexpected number type parameters", identifier.c_str(), ""); } if (publicType.typeParameters) { - if (!isTypeFloat(publicType.typeParameters->basicType) && !isTypeInt(publicType.typeParameters->basicType)) { + if (!isTypeFloat(publicType.typeParameters->basicType) && + !isTypeInt(publicType.typeParameters->basicType) && publicType.typeParameters->basicType != EbtSpirvType) { error(loc, "expected 8, 16, 32, or 64 bit signed or unsigned integer or 16, 32, or 64 bit float type", identifier.c_str(), ""); } } diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 4d4ed3ce8f..2ff4c02f22 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -1756,6 +1756,7 @@ type_parameter_specifier_list : type_specifier { $$ = new TTypeParameters; $$->arraySizes = new TArraySizes; + $$->spirvType = $1.spirvType; $$->basicType = $1.basicType; } | unary_expression { diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 70df97e4d8..3ec89d9468 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1181,56 +1181,56 @@ static const yytype_int16 yyrline[] = 1515, 1520, 1528, 1536, 1544, 1552, 1560, 1568, 1576, 1584, 1592, 1599, 1606, 1610, 1615, 1620, 1625, 1630, 1635, 1640, 1644, 1648, 1652, 1656, 1662, 1668, 1678, 1685, 1688, 1696, - 1703, 1714, 1719, 1727, 1731, 1741, 1744, 1750, 1756, 1761, - 1769, 1779, 1783, 1787, 1791, 1796, 1800, 1805, 1810, 1815, - 1820, 1825, 1830, 1835, 1840, 1845, 1851, 1857, 1863, 1868, - 1873, 1878, 1883, 1888, 1893, 1898, 1903, 1908, 1913, 1918, - 1923, 1930, 1935, 1940, 1945, 1950, 1955, 1960, 1965, 1970, - 1975, 1980, 1985, 1993, 2001, 2009, 2015, 2021, 2027, 2033, - 2039, 2045, 2051, 2057, 2063, 2069, 2075, 2081, 2087, 2093, - 2099, 2105, 2111, 2117, 2123, 2129, 2135, 2141, 2147, 2153, - 2159, 2165, 2171, 2177, 2183, 2189, 2195, 2201, 2207, 2215, - 2223, 2231, 2239, 2247, 2255, 2263, 2271, 2279, 2287, 2295, - 2303, 2309, 2315, 2321, 2327, 2333, 2339, 2345, 2351, 2357, - 2363, 2369, 2375, 2381, 2387, 2393, 2399, 2405, 2411, 2417, - 2423, 2429, 2435, 2441, 2447, 2453, 2459, 2465, 2471, 2477, - 2483, 2489, 2495, 2501, 2507, 2513, 2519, 2523, 2527, 2531, - 2536, 2541, 2546, 2551, 2556, 2561, 2566, 2571, 2576, 2581, - 2586, 2591, 2596, 2601, 2607, 2613, 2619, 2625, 2631, 2637, - 2643, 2649, 2655, 2661, 2667, 2673, 2679, 2684, 2689, 2694, - 2699, 2704, 2709, 2714, 2719, 2724, 2729, 2734, 2739, 2744, - 2749, 2754, 2759, 2764, 2769, 2774, 2779, 2784, 2789, 2794, - 2799, 2804, 2809, 2814, 2819, 2824, 2829, 2834, 2839, 2844, - 2850, 2856, 2861, 2866, 2871, 2877, 2882, 2887, 2892, 2898, - 2903, 2908, 2913, 2919, 2924, 2929, 2934, 2940, 2946, 2952, - 2958, 2963, 2969, 2975, 2981, 2986, 2991, 2996, 3001, 3006, - 3012, 3017, 3022, 3027, 3033, 3038, 3043, 3048, 3054, 3059, - 3064, 3069, 3075, 3080, 3085, 3090, 3096, 3101, 3106, 3111, - 3117, 3122, 3127, 3132, 3138, 3143, 3148, 3153, 3159, 3164, - 3169, 3174, 3180, 3185, 3190, 3195, 3201, 3206, 3211, 3216, - 3222, 3227, 3232, 3237, 3243, 3248, 3253, 3258, 3264, 3269, - 3274, 3279, 3285, 3290, 3295, 3300, 3306, 3311, 3316, 3321, - 3326, 3331, 3336, 3341, 3346, 3351, 3356, 3361, 3366, 3371, - 3376, 3381, 3386, 3391, 3396, 3401, 3406, 3411, 3416, 3421, - 3426, 3432, 3438, 3444, 3450, 3456, 3462, 3468, 3475, 3482, - 3488, 3494, 3500, 3506, 3513, 3520, 3527, 3534, 3538, 3542, - 3547, 3563, 3568, 3573, 3581, 3581, 3598, 3598, 3608, 3611, - 3624, 3646, 3673, 3677, 3683, 3688, 3699, 3702, 3708, 3714, - 3723, 3726, 3732, 3736, 3737, 3743, 3744, 3745, 3746, 3747, - 3748, 3749, 3750, 3754, 3762, 3763, 3767, 3763, 3779, 3780, - 3784, 3784, 3791, 3791, 3805, 3808, 3816, 3824, 3835, 3836, - 3840, 3843, 3850, 3857, 3861, 3869, 3873, 3886, 3889, 3896, - 3896, 3916, 3919, 3925, 3937, 3949, 3952, 3960, 3960, 3975, - 3975, 3993, 3993, 4014, 4017, 4023, 4026, 4032, 4036, 4043, - 4048, 4053, 4060, 4063, 4067, 4071, 4075, 4084, 4088, 4097, - 4100, 4103, 4111, 4111, 4153, 4158, 4161, 4166, 4169, 4174, - 4177, 4182, 4185, 4190, 4193, 4198, 4201, 4206, 4210, 4215, - 4219, 4224, 4228, 4235, 4238, 4243, 4246, 4249, 4252, 4255, - 4260, 4269, 4280, 4285, 4293, 4297, 4302, 4306, 4311, 4315, - 4320, 4324, 4331, 4334, 4339, 4342, 4345, 4348, 4353, 4356, - 4361, 4367, 4370, 4373, 4376, 4381, 4385, 4390, 4394, 4399, - 4403, 4410, 4413, 4418, 4421, 4426, 4429, 4435, 4438, 4443, - 4446 + 1703, 1714, 1719, 1727, 1731, 1741, 1744, 1750, 1756, 1762, + 1770, 1780, 1784, 1788, 1792, 1797, 1801, 1806, 1811, 1816, + 1821, 1826, 1831, 1836, 1841, 1846, 1852, 1858, 1864, 1869, + 1874, 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919, + 1924, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, + 1976, 1981, 1986, 1994, 2002, 2010, 2016, 2022, 2028, 2034, + 2040, 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094, + 2100, 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154, + 2160, 2166, 2172, 2178, 2184, 2190, 2196, 2202, 2208, 2216, + 2224, 2232, 2240, 2248, 2256, 2264, 2272, 2280, 2288, 2296, + 2304, 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358, + 2364, 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418, + 2424, 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478, + 2484, 2490, 2496, 2502, 2508, 2514, 2520, 2524, 2528, 2532, + 2537, 2542, 2547, 2552, 2557, 2562, 2567, 2572, 2577, 2582, + 2587, 2592, 2597, 2602, 2608, 2614, 2620, 2626, 2632, 2638, + 2644, 2650, 2656, 2662, 2668, 2674, 2680, 2685, 2690, 2695, + 2700, 2705, 2710, 2715, 2720, 2725, 2730, 2735, 2740, 2745, + 2750, 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795, + 2800, 2805, 2810, 2815, 2820, 2825, 2830, 2835, 2840, 2845, + 2851, 2857, 2862, 2867, 2872, 2878, 2883, 2888, 2893, 2899, + 2904, 2909, 2914, 2920, 2925, 2930, 2935, 2941, 2947, 2953, + 2959, 2964, 2970, 2976, 2982, 2987, 2992, 2997, 3002, 3007, + 3013, 3018, 3023, 3028, 3034, 3039, 3044, 3049, 3055, 3060, + 3065, 3070, 3076, 3081, 3086, 3091, 3097, 3102, 3107, 3112, + 3118, 3123, 3128, 3133, 3139, 3144, 3149, 3154, 3160, 3165, + 3170, 3175, 3181, 3186, 3191, 3196, 3202, 3207, 3212, 3217, + 3223, 3228, 3233, 3238, 3244, 3249, 3254, 3259, 3265, 3270, + 3275, 3280, 3286, 3291, 3296, 3301, 3307, 3312, 3317, 3322, + 3327, 3332, 3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372, + 3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412, 3417, 3422, + 3427, 3433, 3439, 3445, 3451, 3457, 3463, 3469, 3476, 3483, + 3489, 3495, 3501, 3507, 3514, 3521, 3528, 3535, 3539, 3543, + 3548, 3564, 3569, 3574, 3582, 3582, 3599, 3599, 3609, 3612, + 3625, 3647, 3674, 3678, 3684, 3689, 3700, 3703, 3709, 3715, + 3724, 3727, 3733, 3737, 3738, 3744, 3745, 3746, 3747, 3748, + 3749, 3750, 3751, 3755, 3763, 3764, 3768, 3764, 3780, 3781, + 3785, 3785, 3792, 3792, 3806, 3809, 3817, 3825, 3836, 3837, + 3841, 3844, 3851, 3858, 3862, 3870, 3874, 3887, 3890, 3897, + 3897, 3917, 3920, 3926, 3938, 3950, 3953, 3961, 3961, 3976, + 3976, 3994, 3994, 4015, 4018, 4024, 4027, 4033, 4037, 4044, + 4049, 4054, 4061, 4064, 4068, 4072, 4076, 4085, 4089, 4098, + 4101, 4104, 4112, 4112, 4154, 4159, 4162, 4167, 4170, 4175, + 4178, 4183, 4186, 4191, 4194, 4199, 4202, 4207, 4211, 4216, + 4220, 4225, 4229, 4236, 4239, 4244, 4247, 4250, 4253, 4256, + 4261, 4270, 4281, 4286, 4294, 4298, 4303, 4307, 4312, 4316, + 4321, 4325, 4332, 4335, 4340, 4343, 4346, 4349, 4354, 4357, + 4362, 4368, 4371, 4374, 4377, 4382, 4386, 4391, 4395, 4400, + 4404, 4411, 4414, 4419, 4422, 4427, 4430, 4436, 4439, 4444, + 4447 }; #endif @@ -7507,13 +7507,14 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; + (yyval.interm.typeParameters)->spirvType = (yyvsp[0].interm.type).spirvType; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7513 "MachineIndependent/glslang_tab.cpp" +#line 7514 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier_list: unary_expression */ -#line 1761 "MachineIndependent/glslang.y" +#line 1762 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7522,11 +7523,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7526 "MachineIndependent/glslang_tab.cpp" +#line 7527 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1769 "MachineIndependent/glslang.y" +#line 1770 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7534,300 +7535,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7538 "MachineIndependent/glslang_tab.cpp" +#line 7539 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: VOID */ -#line 1779 "MachineIndependent/glslang.y" +#line 1780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7547 "MachineIndependent/glslang_tab.cpp" +#line 7548 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: FLOAT */ -#line 1783 "MachineIndependent/glslang.y" +#line 1784 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7556 "MachineIndependent/glslang_tab.cpp" +#line 7557 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: INT */ -#line 1787 "MachineIndependent/glslang.y" +#line 1788 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7565 "MachineIndependent/glslang_tab.cpp" +#line 7566 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: UINT */ -#line 1791 "MachineIndependent/glslang.y" +#line 1792 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7575 "MachineIndependent/glslang_tab.cpp" +#line 7576 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: BOOL */ -#line 1796 "MachineIndependent/glslang.y" +#line 1797 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7584 "MachineIndependent/glslang_tab.cpp" +#line 7585 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC2 */ -#line 1800 "MachineIndependent/glslang.y" +#line 1801 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7594 "MachineIndependent/glslang_tab.cpp" +#line 7595 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: VEC3 */ -#line 1805 "MachineIndependent/glslang.y" +#line 1806 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7604 "MachineIndependent/glslang_tab.cpp" +#line 7605 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: VEC4 */ -#line 1810 "MachineIndependent/glslang.y" +#line 1811 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7614 "MachineIndependent/glslang_tab.cpp" +#line 7615 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC2 */ -#line 1815 "MachineIndependent/glslang.y" +#line 1816 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7624 "MachineIndependent/glslang_tab.cpp" +#line 7625 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: BVEC3 */ -#line 1820 "MachineIndependent/glslang.y" +#line 1821 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7634 "MachineIndependent/glslang_tab.cpp" +#line 7635 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: BVEC4 */ -#line 1825 "MachineIndependent/glslang.y" +#line 1826 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7644 "MachineIndependent/glslang_tab.cpp" +#line 7645 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC2 */ -#line 1830 "MachineIndependent/glslang.y" +#line 1831 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7654 "MachineIndependent/glslang_tab.cpp" +#line 7655 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: IVEC3 */ -#line 1835 "MachineIndependent/glslang.y" +#line 1836 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7664 "MachineIndependent/glslang_tab.cpp" +#line 7665 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: IVEC4 */ -#line 1840 "MachineIndependent/glslang.y" +#line 1841 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7674 "MachineIndependent/glslang_tab.cpp" +#line 7675 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC2 */ -#line 1845 "MachineIndependent/glslang.y" +#line 1846 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7685 "MachineIndependent/glslang_tab.cpp" +#line 7686 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: UVEC3 */ -#line 1851 "MachineIndependent/glslang.y" +#line 1852 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7696 "MachineIndependent/glslang_tab.cpp" +#line 7697 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: UVEC4 */ -#line 1857 "MachineIndependent/glslang.y" +#line 1858 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7707 "MachineIndependent/glslang_tab.cpp" +#line 7708 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT2 */ -#line 1863 "MachineIndependent/glslang.y" +#line 1864 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7717 "MachineIndependent/glslang_tab.cpp" +#line 7718 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT3 */ -#line 1868 "MachineIndependent/glslang.y" +#line 1869 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7727 "MachineIndependent/glslang_tab.cpp" +#line 7728 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT4 */ -#line 1873 "MachineIndependent/glslang.y" +#line 1874 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7737 "MachineIndependent/glslang_tab.cpp" +#line 7738 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X2 */ -#line 1878 "MachineIndependent/glslang.y" +#line 1879 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7747 "MachineIndependent/glslang_tab.cpp" +#line 7748 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT2X3 */ -#line 1883 "MachineIndependent/glslang.y" +#line 1884 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7757 "MachineIndependent/glslang_tab.cpp" +#line 7758 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT2X4 */ -#line 1888 "MachineIndependent/glslang.y" +#line 1889 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7767 "MachineIndependent/glslang_tab.cpp" +#line 7768 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X2 */ -#line 1893 "MachineIndependent/glslang.y" +#line 1894 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7777 "MachineIndependent/glslang_tab.cpp" +#line 7778 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT3X3 */ -#line 1898 "MachineIndependent/glslang.y" +#line 1899 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7787 "MachineIndependent/glslang_tab.cpp" +#line 7788 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT3X4 */ -#line 1903 "MachineIndependent/glslang.y" +#line 1904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7797 "MachineIndependent/glslang_tab.cpp" +#line 7798 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X2 */ -#line 1908 "MachineIndependent/glslang.y" +#line 1909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7807 "MachineIndependent/glslang_tab.cpp" +#line 7808 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT4X3 */ -#line 1913 "MachineIndependent/glslang.y" +#line 1914 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7817 "MachineIndependent/glslang_tab.cpp" +#line 7818 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: MAT4X4 */ -#line 1918 "MachineIndependent/glslang.y" +#line 1919 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7827 "MachineIndependent/glslang_tab.cpp" +#line 7828 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: DOUBLE */ -#line 1923 "MachineIndependent/glslang.y" +#line 1924 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7835,121 +7836,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7839 "MachineIndependent/glslang_tab.cpp" +#line 7840 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT16_T */ -#line 1930 "MachineIndependent/glslang.y" +#line 1931 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7849 "MachineIndependent/glslang_tab.cpp" +#line 7850 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: FLOAT32_T */ -#line 1935 "MachineIndependent/glslang.y" +#line 1936 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7859 "MachineIndependent/glslang_tab.cpp" +#line 7860 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: FLOAT64_T */ -#line 1940 "MachineIndependent/glslang.y" +#line 1941 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7869 "MachineIndependent/glslang_tab.cpp" +#line 7870 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: INT8_T */ -#line 1945 "MachineIndependent/glslang.y" +#line 1946 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7879 "MachineIndependent/glslang_tab.cpp" +#line 7880 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: UINT8_T */ -#line 1950 "MachineIndependent/glslang.y" +#line 1951 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7889 "MachineIndependent/glslang_tab.cpp" +#line 7890 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: INT16_T */ -#line 1955 "MachineIndependent/glslang.y" +#line 1956 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7899 "MachineIndependent/glslang_tab.cpp" +#line 7900 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: UINT16_T */ -#line 1960 "MachineIndependent/glslang.y" +#line 1961 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7909 "MachineIndependent/glslang_tab.cpp" +#line 7910 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: INT32_T */ -#line 1965 "MachineIndependent/glslang.y" +#line 1966 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7919 "MachineIndependent/glslang_tab.cpp" +#line 7920 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: UINT32_T */ -#line 1970 "MachineIndependent/glslang.y" +#line 1971 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7929 "MachineIndependent/glslang_tab.cpp" +#line 7930 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: INT64_T */ -#line 1975 "MachineIndependent/glslang.y" +#line 1976 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7939 "MachineIndependent/glslang_tab.cpp" +#line 7940 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: UINT64_T */ -#line 1980 "MachineIndependent/glslang.y" +#line 1981 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7949 "MachineIndependent/glslang_tab.cpp" +#line 7950 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC2 */ -#line 1985 "MachineIndependent/glslang.y" +#line 1986 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7958,11 +7959,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7962 "MachineIndependent/glslang_tab.cpp" +#line 7963 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: DVEC3 */ -#line 1993 "MachineIndependent/glslang.y" +#line 1994 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7971,11 +7972,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7975 "MachineIndependent/glslang_tab.cpp" +#line 7976 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: DVEC4 */ -#line 2001 "MachineIndependent/glslang.y" +#line 2002 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7984,374 +7985,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7988 "MachineIndependent/glslang_tab.cpp" +#line 7989 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC2 */ -#line 2009 "MachineIndependent/glslang.y" +#line 2010 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 7999 "MachineIndependent/glslang_tab.cpp" +#line 8000 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F16VEC3 */ -#line 2015 "MachineIndependent/glslang.y" +#line 2016 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 8010 "MachineIndependent/glslang_tab.cpp" +#line 8011 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F16VEC4 */ -#line 2021 "MachineIndependent/glslang.y" +#line 2022 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8021 "MachineIndependent/glslang_tab.cpp" +#line 8022 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC2 */ -#line 2027 "MachineIndependent/glslang.y" +#line 2028 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8032 "MachineIndependent/glslang_tab.cpp" +#line 8033 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F32VEC3 */ -#line 2033 "MachineIndependent/glslang.y" +#line 2034 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8043 "MachineIndependent/glslang_tab.cpp" +#line 8044 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F32VEC4 */ -#line 2039 "MachineIndependent/glslang.y" +#line 2040 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8054 "MachineIndependent/glslang_tab.cpp" +#line 8055 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC2 */ -#line 2045 "MachineIndependent/glslang.y" +#line 2046 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8065 "MachineIndependent/glslang_tab.cpp" +#line 8066 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: F64VEC3 */ -#line 2051 "MachineIndependent/glslang.y" +#line 2052 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8076 "MachineIndependent/glslang_tab.cpp" +#line 8077 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: F64VEC4 */ -#line 2057 "MachineIndependent/glslang.y" +#line 2058 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8087 "MachineIndependent/glslang_tab.cpp" +#line 8088 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC2 */ -#line 2063 "MachineIndependent/glslang.y" +#line 2064 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8098 "MachineIndependent/glslang_tab.cpp" +#line 8099 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I8VEC3 */ -#line 2069 "MachineIndependent/glslang.y" +#line 2070 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8109 "MachineIndependent/glslang_tab.cpp" +#line 8110 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I8VEC4 */ -#line 2075 "MachineIndependent/glslang.y" +#line 2076 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8120 "MachineIndependent/glslang_tab.cpp" +#line 8121 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC2 */ -#line 2081 "MachineIndependent/glslang.y" +#line 2082 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8131 "MachineIndependent/glslang_tab.cpp" +#line 8132 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I16VEC3 */ -#line 2087 "MachineIndependent/glslang.y" +#line 2088 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8142 "MachineIndependent/glslang_tab.cpp" +#line 8143 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I16VEC4 */ -#line 2093 "MachineIndependent/glslang.y" +#line 2094 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8153 "MachineIndependent/glslang_tab.cpp" +#line 8154 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC2 */ -#line 2099 "MachineIndependent/glslang.y" +#line 2100 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8164 "MachineIndependent/glslang_tab.cpp" +#line 8165 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I32VEC3 */ -#line 2105 "MachineIndependent/glslang.y" +#line 2106 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8175 "MachineIndependent/glslang_tab.cpp" +#line 8176 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I32VEC4 */ -#line 2111 "MachineIndependent/glslang.y" +#line 2112 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8186 "MachineIndependent/glslang_tab.cpp" +#line 8187 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC2 */ -#line 2117 "MachineIndependent/glslang.y" +#line 2118 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8197 "MachineIndependent/glslang_tab.cpp" +#line 8198 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: I64VEC3 */ -#line 2123 "MachineIndependent/glslang.y" +#line 2124 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8208 "MachineIndependent/glslang_tab.cpp" +#line 8209 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: I64VEC4 */ -#line 2129 "MachineIndependent/glslang.y" +#line 2130 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8219 "MachineIndependent/glslang_tab.cpp" +#line 8220 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC2 */ -#line 2135 "MachineIndependent/glslang.y" +#line 2136 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8230 "MachineIndependent/glslang_tab.cpp" +#line 8231 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U8VEC3 */ -#line 2141 "MachineIndependent/glslang.y" +#line 2142 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8241 "MachineIndependent/glslang_tab.cpp" +#line 8242 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U8VEC4 */ -#line 2147 "MachineIndependent/glslang.y" +#line 2148 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8252 "MachineIndependent/glslang_tab.cpp" +#line 8253 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC2 */ -#line 2153 "MachineIndependent/glslang.y" +#line 2154 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8263 "MachineIndependent/glslang_tab.cpp" +#line 8264 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U16VEC3 */ -#line 2159 "MachineIndependent/glslang.y" +#line 2160 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8274 "MachineIndependent/glslang_tab.cpp" +#line 8275 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U16VEC4 */ -#line 2165 "MachineIndependent/glslang.y" +#line 2166 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8285 "MachineIndependent/glslang_tab.cpp" +#line 8286 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC2 */ -#line 2171 "MachineIndependent/glslang.y" +#line 2172 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8296 "MachineIndependent/glslang_tab.cpp" +#line 8297 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U32VEC3 */ -#line 2177 "MachineIndependent/glslang.y" +#line 2178 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8307 "MachineIndependent/glslang_tab.cpp" +#line 8308 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U32VEC4 */ -#line 2183 "MachineIndependent/glslang.y" +#line 2184 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8318 "MachineIndependent/glslang_tab.cpp" +#line 8319 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC2 */ -#line 2189 "MachineIndependent/glslang.y" +#line 2190 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8329 "MachineIndependent/glslang_tab.cpp" +#line 8330 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: U64VEC3 */ -#line 2195 "MachineIndependent/glslang.y" +#line 2196 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8340 "MachineIndependent/glslang_tab.cpp" +#line 8341 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: U64VEC4 */ -#line 2201 "MachineIndependent/glslang.y" +#line 2202 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8351 "MachineIndependent/glslang_tab.cpp" +#line 8352 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT2 */ -#line 2207 "MachineIndependent/glslang.y" +#line 2208 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8360,11 +8361,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8364 "MachineIndependent/glslang_tab.cpp" +#line 8365 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT3 */ -#line 2215 "MachineIndependent/glslang.y" +#line 2216 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8373,11 +8374,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8377 "MachineIndependent/glslang_tab.cpp" +#line 8378 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT4 */ -#line 2223 "MachineIndependent/glslang.y" +#line 2224 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8386,11 +8387,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8390 "MachineIndependent/glslang_tab.cpp" +#line 8391 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X2 */ -#line 2231 "MachineIndependent/glslang.y" +#line 2232 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8399,11 +8400,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8403 "MachineIndependent/glslang_tab.cpp" +#line 8404 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT2X3 */ -#line 2239 "MachineIndependent/glslang.y" +#line 2240 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8412,11 +8413,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8416 "MachineIndependent/glslang_tab.cpp" +#line 8417 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT2X4 */ -#line 2247 "MachineIndependent/glslang.y" +#line 2248 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8425,11 +8426,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8429 "MachineIndependent/glslang_tab.cpp" +#line 8430 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X2 */ -#line 2255 "MachineIndependent/glslang.y" +#line 2256 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8438,11 +8439,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8442 "MachineIndependent/glslang_tab.cpp" +#line 8443 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT3X3 */ -#line 2263 "MachineIndependent/glslang.y" +#line 2264 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8451,11 +8452,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8455 "MachineIndependent/glslang_tab.cpp" +#line 8456 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT3X4 */ -#line 2271 "MachineIndependent/glslang.y" +#line 2272 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8464,11 +8465,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8468 "MachineIndependent/glslang_tab.cpp" +#line 8469 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X2 */ -#line 2279 "MachineIndependent/glslang.y" +#line 2280 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8477,11 +8478,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8481 "MachineIndependent/glslang_tab.cpp" +#line 8482 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: DMAT4X3 */ -#line 2287 "MachineIndependent/glslang.y" +#line 2288 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8490,11 +8491,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8494 "MachineIndependent/glslang_tab.cpp" +#line 8495 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: DMAT4X4 */ -#line 2295 "MachineIndependent/glslang.y" +#line 2296 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8503,2261 +8504,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8507 "MachineIndependent/glslang_tab.cpp" +#line 8508 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT2 */ -#line 2303 "MachineIndependent/glslang.y" +#line 2304 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8518 "MachineIndependent/glslang_tab.cpp" +#line 8519 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT3 */ -#line 2309 "MachineIndependent/glslang.y" +#line 2310 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8529 "MachineIndependent/glslang_tab.cpp" +#line 8530 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT4 */ -#line 2315 "MachineIndependent/glslang.y" +#line 2316 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8540 "MachineIndependent/glslang_tab.cpp" +#line 8541 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2321 "MachineIndependent/glslang.y" +#line 2322 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8551 "MachineIndependent/glslang_tab.cpp" +#line 8552 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2327 "MachineIndependent/glslang.y" +#line 2328 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8562 "MachineIndependent/glslang_tab.cpp" +#line 8563 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2333 "MachineIndependent/glslang.y" +#line 2334 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8573 "MachineIndependent/glslang_tab.cpp" +#line 8574 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2339 "MachineIndependent/glslang.y" +#line 2340 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8584 "MachineIndependent/glslang_tab.cpp" +#line 8585 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2345 "MachineIndependent/glslang.y" +#line 2346 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8595 "MachineIndependent/glslang_tab.cpp" +#line 8596 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2351 "MachineIndependent/glslang.y" +#line 2352 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8606 "MachineIndependent/glslang_tab.cpp" +#line 8607 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2357 "MachineIndependent/glslang.y" +#line 2358 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8617 "MachineIndependent/glslang_tab.cpp" +#line 8618 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2363 "MachineIndependent/glslang.y" +#line 2364 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8628 "MachineIndependent/glslang_tab.cpp" +#line 8629 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2369 "MachineIndependent/glslang.y" +#line 2370 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8639 "MachineIndependent/glslang_tab.cpp" +#line 8640 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT2 */ -#line 2375 "MachineIndependent/glslang.y" +#line 2376 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8650 "MachineIndependent/glslang_tab.cpp" +#line 8651 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT3 */ -#line 2381 "MachineIndependent/glslang.y" +#line 2382 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8661 "MachineIndependent/glslang_tab.cpp" +#line 8662 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT4 */ -#line 2387 "MachineIndependent/glslang.y" +#line 2388 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8672 "MachineIndependent/glslang_tab.cpp" +#line 8673 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2393 "MachineIndependent/glslang.y" +#line 2394 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8683 "MachineIndependent/glslang_tab.cpp" +#line 8684 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2399 "MachineIndependent/glslang.y" +#line 2400 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8694 "MachineIndependent/glslang_tab.cpp" +#line 8695 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2405 "MachineIndependent/glslang.y" +#line 2406 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8705 "MachineIndependent/glslang_tab.cpp" +#line 8706 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2411 "MachineIndependent/glslang.y" +#line 2412 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8716 "MachineIndependent/glslang_tab.cpp" +#line 8717 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2417 "MachineIndependent/glslang.y" +#line 2418 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8727 "MachineIndependent/glslang_tab.cpp" +#line 8728 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2423 "MachineIndependent/glslang.y" +#line 2424 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8738 "MachineIndependent/glslang_tab.cpp" +#line 8739 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2429 "MachineIndependent/glslang.y" +#line 2430 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8749 "MachineIndependent/glslang_tab.cpp" +#line 8750 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2435 "MachineIndependent/glslang.y" +#line 2436 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8760 "MachineIndependent/glslang_tab.cpp" +#line 8761 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2441 "MachineIndependent/glslang.y" +#line 2442 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8771 "MachineIndependent/glslang_tab.cpp" +#line 8772 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT2 */ -#line 2447 "MachineIndependent/glslang.y" +#line 2448 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8782 "MachineIndependent/glslang_tab.cpp" +#line 8783 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT3 */ -#line 2453 "MachineIndependent/glslang.y" +#line 2454 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8793 "MachineIndependent/glslang_tab.cpp" +#line 8794 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT4 */ -#line 2459 "MachineIndependent/glslang.y" +#line 2460 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8804 "MachineIndependent/glslang_tab.cpp" +#line 8805 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2465 "MachineIndependent/glslang.y" +#line 2466 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8815 "MachineIndependent/glslang_tab.cpp" +#line 8816 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2471 "MachineIndependent/glslang.y" +#line 2472 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8826 "MachineIndependent/glslang_tab.cpp" +#line 8827 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2477 "MachineIndependent/glslang.y" +#line 2478 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8837 "MachineIndependent/glslang_tab.cpp" +#line 8838 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2483 "MachineIndependent/glslang.y" +#line 2484 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8848 "MachineIndependent/glslang_tab.cpp" +#line 8849 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2489 "MachineIndependent/glslang.y" +#line 2490 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8859 "MachineIndependent/glslang_tab.cpp" +#line 8860 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2495 "MachineIndependent/glslang.y" +#line 2496 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8870 "MachineIndependent/glslang_tab.cpp" +#line 8871 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2501 "MachineIndependent/glslang.y" +#line 2502 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8881 "MachineIndependent/glslang_tab.cpp" +#line 8882 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2507 "MachineIndependent/glslang.y" +#line 2508 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8892 "MachineIndependent/glslang_tab.cpp" +#line 8893 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2513 "MachineIndependent/glslang.y" +#line 2514 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8903 "MachineIndependent/glslang_tab.cpp" +#line 8904 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2519 "MachineIndependent/glslang.y" +#line 2520 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8912 "MachineIndependent/glslang_tab.cpp" +#line 8913 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2523 "MachineIndependent/glslang.y" +#line 2524 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8921 "MachineIndependent/glslang_tab.cpp" +#line 8922 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2527 "MachineIndependent/glslang.y" +#line 2528 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8930 "MachineIndependent/glslang_tab.cpp" +#line 8931 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2531 "MachineIndependent/glslang.y" +#line 2532 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8940 "MachineIndependent/glslang_tab.cpp" +#line 8941 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER1D */ -#line 2536 "MachineIndependent/glslang.y" +#line 2537 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8950 "MachineIndependent/glslang_tab.cpp" +#line 8951 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLER2D */ -#line 2541 "MachineIndependent/glslang.y" +#line 2542 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8960 "MachineIndependent/glslang_tab.cpp" +#line 8961 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLER3D */ -#line 2546 "MachineIndependent/glslang.y" +#line 2547 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8970 "MachineIndependent/glslang_tab.cpp" +#line 8971 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2551 "MachineIndependent/glslang.y" +#line 2552 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8980 "MachineIndependent/glslang_tab.cpp" +#line 8981 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2556 "MachineIndependent/glslang.y" +#line 2557 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8990 "MachineIndependent/glslang_tab.cpp" +#line 8991 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2561 "MachineIndependent/glslang.y" +#line 2562 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 9000 "MachineIndependent/glslang_tab.cpp" +#line 9001 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2566 "MachineIndependent/glslang.y" +#line 2567 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 9010 "MachineIndependent/glslang_tab.cpp" +#line 9011 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2571 "MachineIndependent/glslang.y" +#line 2572 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9020 "MachineIndependent/glslang_tab.cpp" +#line 9021 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2576 "MachineIndependent/glslang.y" +#line 2577 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9030 "MachineIndependent/glslang_tab.cpp" +#line 9031 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2581 "MachineIndependent/glslang.y" +#line 2582 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9040 "MachineIndependent/glslang_tab.cpp" +#line 9041 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2586 "MachineIndependent/glslang.y" +#line 2587 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9050 "MachineIndependent/glslang_tab.cpp" +#line 9051 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2591 "MachineIndependent/glslang.y" +#line 2592 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9060 "MachineIndependent/glslang_tab.cpp" +#line 9061 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2596 "MachineIndependent/glslang.y" +#line 2597 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9070 "MachineIndependent/glslang_tab.cpp" +#line 9071 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2601 "MachineIndependent/glslang.y" +#line 2602 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9081 "MachineIndependent/glslang_tab.cpp" +#line 9082 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2607 "MachineIndependent/glslang.y" +#line 2608 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9092 "MachineIndependent/glslang_tab.cpp" +#line 9093 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2613 "MachineIndependent/glslang.y" +#line 2614 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9103 "MachineIndependent/glslang_tab.cpp" +#line 9104 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2619 "MachineIndependent/glslang.y" +#line 2620 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9114 "MachineIndependent/glslang_tab.cpp" +#line 9115 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2625 "MachineIndependent/glslang.y" +#line 2626 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9125 "MachineIndependent/glslang_tab.cpp" +#line 9126 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2631 "MachineIndependent/glslang.y" +#line 2632 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9136 "MachineIndependent/glslang_tab.cpp" +#line 9137 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2637 "MachineIndependent/glslang.y" +#line 2638 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9147 "MachineIndependent/glslang_tab.cpp" +#line 9148 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2643 "MachineIndependent/glslang.y" +#line 2644 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9158 "MachineIndependent/glslang_tab.cpp" +#line 9159 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2649 "MachineIndependent/glslang.y" +#line 2650 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9169 "MachineIndependent/glslang_tab.cpp" +#line 9170 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2655 "MachineIndependent/glslang.y" +#line 2656 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9180 "MachineIndependent/glslang_tab.cpp" +#line 9181 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2661 "MachineIndependent/glslang.y" +#line 2662 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9191 "MachineIndependent/glslang_tab.cpp" +#line 9192 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2667 "MachineIndependent/glslang.y" +#line 2668 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9202 "MachineIndependent/glslang_tab.cpp" +#line 9203 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2673 "MachineIndependent/glslang.y" +#line 2674 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9213 "MachineIndependent/glslang_tab.cpp" +#line 9214 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2679 "MachineIndependent/glslang.y" +#line 2680 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9223 "MachineIndependent/glslang_tab.cpp" +#line 9224 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2684 "MachineIndependent/glslang.y" +#line 2685 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9233 "MachineIndependent/glslang_tab.cpp" +#line 9234 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2689 "MachineIndependent/glslang.y" +#line 2690 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9243 "MachineIndependent/glslang_tab.cpp" +#line 9244 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2694 "MachineIndependent/glslang.y" +#line 2695 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9253 "MachineIndependent/glslang_tab.cpp" +#line 9254 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2699 "MachineIndependent/glslang.y" +#line 2700 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9263 "MachineIndependent/glslang_tab.cpp" +#line 9264 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLER2D */ -#line 2704 "MachineIndependent/glslang.y" +#line 2705 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9273 "MachineIndependent/glslang_tab.cpp" +#line 9274 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: USAMPLER3D */ -#line 2709 "MachineIndependent/glslang.y" +#line 2710 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9283 "MachineIndependent/glslang_tab.cpp" +#line 9284 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2714 "MachineIndependent/glslang.y" +#line 2715 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9293 "MachineIndependent/glslang_tab.cpp" +#line 9294 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2719 "MachineIndependent/glslang.y" +#line 2720 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9303 "MachineIndependent/glslang_tab.cpp" +#line 9304 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2724 "MachineIndependent/glslang.y" +#line 2725 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9313 "MachineIndependent/glslang_tab.cpp" +#line 9314 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLER1D */ -#line 2729 "MachineIndependent/glslang.y" +#line 2730 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9323 "MachineIndependent/glslang_tab.cpp" +#line 9324 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2734 "MachineIndependent/glslang.y" +#line 2735 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9333 "MachineIndependent/glslang_tab.cpp" +#line 9334 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2739 "MachineIndependent/glslang.y" +#line 2740 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9343 "MachineIndependent/glslang_tab.cpp" +#line 9344 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2744 "MachineIndependent/glslang.y" +#line 2745 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9353 "MachineIndependent/glslang_tab.cpp" +#line 9354 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2749 "MachineIndependent/glslang.y" +#line 2750 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9363 "MachineIndependent/glslang_tab.cpp" +#line 9364 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2754 "MachineIndependent/glslang.y" +#line 2755 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9373 "MachineIndependent/glslang_tab.cpp" +#line 9374 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2759 "MachineIndependent/glslang.y" +#line 2760 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9383 "MachineIndependent/glslang_tab.cpp" +#line 9384 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE2D */ -#line 2764 "MachineIndependent/glslang.y" +#line 2765 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9393 "MachineIndependent/glslang_tab.cpp" +#line 9394 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURE3D */ -#line 2769 "MachineIndependent/glslang.y" +#line 2770 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9403 "MachineIndependent/glslang_tab.cpp" +#line 9404 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2774 "MachineIndependent/glslang.y" +#line 2775 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9413 "MachineIndependent/glslang_tab.cpp" +#line 9414 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2779 "MachineIndependent/glslang.y" +#line 2780 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9423 "MachineIndependent/glslang_tab.cpp" +#line 9424 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2784 "MachineIndependent/glslang.y" +#line 2785 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9433 "MachineIndependent/glslang_tab.cpp" +#line 9434 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2789 "MachineIndependent/glslang.y" +#line 2790 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9443 "MachineIndependent/glslang_tab.cpp" +#line 9444 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2794 "MachineIndependent/glslang.y" +#line 2795 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9453 "MachineIndependent/glslang_tab.cpp" +#line 9454 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2799 "MachineIndependent/glslang.y" +#line 2800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9463 "MachineIndependent/glslang_tab.cpp" +#line 9464 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2804 "MachineIndependent/glslang.y" +#line 2805 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9473 "MachineIndependent/glslang_tab.cpp" +#line 9474 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2809 "MachineIndependent/glslang.y" +#line 2810 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9483 "MachineIndependent/glslang_tab.cpp" +#line 9484 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2814 "MachineIndependent/glslang.y" +#line 2815 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9493 "MachineIndependent/glslang_tab.cpp" +#line 9494 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2819 "MachineIndependent/glslang.y" +#line 2820 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9503 "MachineIndependent/glslang_tab.cpp" +#line 9504 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLER */ -#line 2824 "MachineIndependent/glslang.y" +#line 2825 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9513 "MachineIndependent/glslang_tab.cpp" +#line 9514 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2829 "MachineIndependent/glslang.y" +#line 2830 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9523 "MachineIndependent/glslang_tab.cpp" +#line 9524 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2834 "MachineIndependent/glslang.y" +#line 2835 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9533 "MachineIndependent/glslang_tab.cpp" +#line 9534 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2839 "MachineIndependent/glslang.y" +#line 2840 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9543 "MachineIndependent/glslang_tab.cpp" +#line 9544 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2844 "MachineIndependent/glslang.y" +#line 2845 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9554 "MachineIndependent/glslang_tab.cpp" +#line 9555 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2850 "MachineIndependent/glslang.y" +#line 2851 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9565 "MachineIndependent/glslang_tab.cpp" +#line 9566 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2856 "MachineIndependent/glslang.y" +#line 2857 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9575 "MachineIndependent/glslang_tab.cpp" +#line 9576 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2861 "MachineIndependent/glslang.y" +#line 2862 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9585 "MachineIndependent/glslang_tab.cpp" +#line 9586 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2866 "MachineIndependent/glslang.y" +#line 2867 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9595 "MachineIndependent/glslang_tab.cpp" +#line 9596 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2871 "MachineIndependent/glslang.y" +#line 2872 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9606 "MachineIndependent/glslang_tab.cpp" +#line 9607 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2877 "MachineIndependent/glslang.y" +#line 2878 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9616 "MachineIndependent/glslang_tab.cpp" +#line 9617 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2882 "MachineIndependent/glslang.y" +#line 2883 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9626 "MachineIndependent/glslang_tab.cpp" +#line 9627 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2887 "MachineIndependent/glslang.y" +#line 2888 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9636 "MachineIndependent/glslang_tab.cpp" +#line 9637 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2892 "MachineIndependent/glslang.y" +#line 2893 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9647 "MachineIndependent/glslang_tab.cpp" +#line 9648 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2898 "MachineIndependent/glslang.y" +#line 2899 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9657 "MachineIndependent/glslang_tab.cpp" +#line 9658 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2903 "MachineIndependent/glslang.y" +#line 2904 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9667 "MachineIndependent/glslang_tab.cpp" +#line 9668 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2908 "MachineIndependent/glslang.y" +#line 2909 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9677 "MachineIndependent/glslang_tab.cpp" +#line 9678 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2913 "MachineIndependent/glslang.y" +#line 2914 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9688 "MachineIndependent/glslang_tab.cpp" +#line 9689 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2919 "MachineIndependent/glslang.y" +#line 2920 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9698 "MachineIndependent/glslang_tab.cpp" +#line 9699 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2924 "MachineIndependent/glslang.y" +#line 2925 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9708 "MachineIndependent/glslang_tab.cpp" +#line 9709 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: TEXTURE1D */ -#line 2929 "MachineIndependent/glslang.y" +#line 2930 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9718 "MachineIndependent/glslang_tab.cpp" +#line 9719 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2934 "MachineIndependent/glslang.y" +#line 2935 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9729 "MachineIndependent/glslang_tab.cpp" +#line 9730 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2940 "MachineIndependent/glslang.y" +#line 2941 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9740 "MachineIndependent/glslang_tab.cpp" +#line 9741 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2946 "MachineIndependent/glslang.y" +#line 2947 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9751 "MachineIndependent/glslang_tab.cpp" +#line 9752 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2952 "MachineIndependent/glslang.y" +#line 2953 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9762 "MachineIndependent/glslang_tab.cpp" +#line 9763 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2958 "MachineIndependent/glslang.y" +#line 2959 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9772 "MachineIndependent/glslang_tab.cpp" +#line 9773 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2963 "MachineIndependent/glslang.y" +#line 2964 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9783 "MachineIndependent/glslang_tab.cpp" +#line 9784 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2969 "MachineIndependent/glslang.y" +#line 2970 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9794 "MachineIndependent/glslang_tab.cpp" +#line 9795 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2975 "MachineIndependent/glslang.y" +#line 2976 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9805 "MachineIndependent/glslang_tab.cpp" +#line 9806 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2981 "MachineIndependent/glslang.y" +#line 2982 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9815 "MachineIndependent/glslang_tab.cpp" +#line 9816 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2986 "MachineIndependent/glslang.y" +#line 2987 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9825 "MachineIndependent/glslang_tab.cpp" +#line 9826 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2991 "MachineIndependent/glslang.y" +#line 2992 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9835 "MachineIndependent/glslang_tab.cpp" +#line 9836 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2996 "MachineIndependent/glslang.y" +#line 2997 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9845 "MachineIndependent/glslang_tab.cpp" +#line 9846 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3001 "MachineIndependent/glslang.y" +#line 3002 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9855 "MachineIndependent/glslang_tab.cpp" +#line 9856 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3006 "MachineIndependent/glslang.y" +#line 3007 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9866 "MachineIndependent/glslang_tab.cpp" +#line 9867 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3012 "MachineIndependent/glslang.y" +#line 3013 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9876 "MachineIndependent/glslang_tab.cpp" +#line 9877 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3017 "MachineIndependent/glslang.y" +#line 3018 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9886 "MachineIndependent/glslang_tab.cpp" +#line 9887 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3022 "MachineIndependent/glslang.y" +#line 3023 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9896 "MachineIndependent/glslang_tab.cpp" +#line 9897 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3027 "MachineIndependent/glslang.y" +#line 3028 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9907 "MachineIndependent/glslang_tab.cpp" +#line 9908 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3033 "MachineIndependent/glslang.y" +#line 3034 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9917 "MachineIndependent/glslang_tab.cpp" +#line 9918 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3038 "MachineIndependent/glslang.y" +#line 3039 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9927 "MachineIndependent/glslang_tab.cpp" +#line 9928 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3043 "MachineIndependent/glslang.y" +#line 3044 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9937 "MachineIndependent/glslang_tab.cpp" +#line 9938 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3048 "MachineIndependent/glslang.y" +#line 3049 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9948 "MachineIndependent/glslang_tab.cpp" +#line 9949 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3054 "MachineIndependent/glslang.y" +#line 3055 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9958 "MachineIndependent/glslang_tab.cpp" +#line 9959 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3059 "MachineIndependent/glslang.y" +#line 3060 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9968 "MachineIndependent/glslang_tab.cpp" +#line 9969 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3064 "MachineIndependent/glslang.y" +#line 3065 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9978 "MachineIndependent/glslang_tab.cpp" +#line 9979 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3069 "MachineIndependent/glslang.y" +#line 3070 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9989 "MachineIndependent/glslang_tab.cpp" +#line 9990 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3075 "MachineIndependent/glslang.y" +#line 3076 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 9999 "MachineIndependent/glslang_tab.cpp" +#line 10000 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3080 "MachineIndependent/glslang.y" +#line 3081 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 10009 "MachineIndependent/glslang_tab.cpp" +#line 10010 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: IMAGE1D */ -#line 3085 "MachineIndependent/glslang.y" +#line 3086 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10019 "MachineIndependent/glslang_tab.cpp" +#line 10020 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3090 "MachineIndependent/glslang.y" +#line 3091 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10030 "MachineIndependent/glslang_tab.cpp" +#line 10031 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: IIMAGE1D */ -#line 3096 "MachineIndependent/glslang.y" +#line 3097 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10040 "MachineIndependent/glslang_tab.cpp" +#line 10041 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: UIMAGE1D */ -#line 3101 "MachineIndependent/glslang.y" +#line 3102 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10050 "MachineIndependent/glslang_tab.cpp" +#line 10051 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: IMAGE2D */ -#line 3106 "MachineIndependent/glslang.y" +#line 3107 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10060 "MachineIndependent/glslang_tab.cpp" +#line 10061 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3111 "MachineIndependent/glslang.y" +#line 3112 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10071 "MachineIndependent/glslang_tab.cpp" +#line 10072 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: IIMAGE2D */ -#line 3117 "MachineIndependent/glslang.y" +#line 3118 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10081 "MachineIndependent/glslang_tab.cpp" +#line 10082 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: UIMAGE2D */ -#line 3122 "MachineIndependent/glslang.y" +#line 3123 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10091 "MachineIndependent/glslang_tab.cpp" +#line 10092 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: IMAGE3D */ -#line 3127 "MachineIndependent/glslang.y" +#line 3128 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10101 "MachineIndependent/glslang_tab.cpp" +#line 10102 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3132 "MachineIndependent/glslang.y" +#line 3133 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10112 "MachineIndependent/glslang_tab.cpp" +#line 10113 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: IIMAGE3D */ -#line 3138 "MachineIndependent/glslang.y" +#line 3139 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10122 "MachineIndependent/glslang_tab.cpp" +#line 10123 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: UIMAGE3D */ -#line 3143 "MachineIndependent/glslang.y" +#line 3144 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10132 "MachineIndependent/glslang_tab.cpp" +#line 10133 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3148 "MachineIndependent/glslang.y" +#line 3149 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10142 "MachineIndependent/glslang_tab.cpp" +#line 10143 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3153 "MachineIndependent/glslang.y" +#line 3154 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10153 "MachineIndependent/glslang_tab.cpp" +#line 10154 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3159 "MachineIndependent/glslang.y" +#line 3160 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10163 "MachineIndependent/glslang_tab.cpp" +#line 10164 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3164 "MachineIndependent/glslang.y" +#line 3165 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10173 "MachineIndependent/glslang_tab.cpp" +#line 10174 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IMAGECUBE */ -#line 3169 "MachineIndependent/glslang.y" +#line 3170 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10183 "MachineIndependent/glslang_tab.cpp" +#line 10184 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3174 "MachineIndependent/glslang.y" +#line 3175 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10194 "MachineIndependent/glslang_tab.cpp" +#line 10195 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3180 "MachineIndependent/glslang.y" +#line 3181 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10204 "MachineIndependent/glslang_tab.cpp" +#line 10205 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3185 "MachineIndependent/glslang.y" +#line 3186 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10214 "MachineIndependent/glslang_tab.cpp" +#line 10215 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3190 "MachineIndependent/glslang.y" +#line 3191 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10224 "MachineIndependent/glslang_tab.cpp" +#line 10225 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3195 "MachineIndependent/glslang.y" +#line 3196 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10235 "MachineIndependent/glslang_tab.cpp" +#line 10236 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3201 "MachineIndependent/glslang.y" +#line 3202 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10245 "MachineIndependent/glslang_tab.cpp" +#line 10246 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3206 "MachineIndependent/glslang.y" +#line 3207 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10255 "MachineIndependent/glslang_tab.cpp" +#line 10256 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3211 "MachineIndependent/glslang.y" +#line 3212 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10265 "MachineIndependent/glslang_tab.cpp" +#line 10266 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3216 "MachineIndependent/glslang.y" +#line 3217 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10276 "MachineIndependent/glslang_tab.cpp" +#line 10277 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3222 "MachineIndependent/glslang.y" +#line 3223 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10286 "MachineIndependent/glslang_tab.cpp" +#line 10287 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3227 "MachineIndependent/glslang.y" +#line 3228 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10296 "MachineIndependent/glslang_tab.cpp" +#line 10297 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3232 "MachineIndependent/glslang.y" +#line 3233 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10306 "MachineIndependent/glslang_tab.cpp" +#line 10307 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3237 "MachineIndependent/glslang.y" +#line 3238 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10317 "MachineIndependent/glslang_tab.cpp" +#line 10318 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3243 "MachineIndependent/glslang.y" +#line 3244 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10327 "MachineIndependent/glslang_tab.cpp" +#line 10328 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3248 "MachineIndependent/glslang.y" +#line 3249 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10337 "MachineIndependent/glslang_tab.cpp" +#line 10338 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3253 "MachineIndependent/glslang.y" +#line 3254 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10347 "MachineIndependent/glslang_tab.cpp" +#line 10348 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3258 "MachineIndependent/glslang.y" +#line 3259 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10358 "MachineIndependent/glslang_tab.cpp" +#line 10359 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3264 "MachineIndependent/glslang.y" +#line 3265 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10368 "MachineIndependent/glslang_tab.cpp" +#line 10369 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3269 "MachineIndependent/glslang.y" +#line 3270 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10378 "MachineIndependent/glslang_tab.cpp" +#line 10379 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3274 "MachineIndependent/glslang.y" +#line 3275 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10388 "MachineIndependent/glslang_tab.cpp" +#line 10389 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3279 "MachineIndependent/glslang.y" +#line 3280 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10399 "MachineIndependent/glslang_tab.cpp" +#line 10400 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3285 "MachineIndependent/glslang.y" +#line 3286 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10409 "MachineIndependent/glslang_tab.cpp" +#line 10410 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3290 "MachineIndependent/glslang.y" +#line 3291 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10419 "MachineIndependent/glslang_tab.cpp" +#line 10420 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3295 "MachineIndependent/glslang.y" +#line 3296 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10429 "MachineIndependent/glslang_tab.cpp" +#line 10430 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3300 "MachineIndependent/glslang.y" +#line 3301 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10440 "MachineIndependent/glslang_tab.cpp" +#line 10441 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3306 "MachineIndependent/glslang.y" +#line 3307 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10450 "MachineIndependent/glslang_tab.cpp" +#line 10451 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3311 "MachineIndependent/glslang.y" +#line 3312 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10460 "MachineIndependent/glslang_tab.cpp" +#line 10461 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3316 "MachineIndependent/glslang.y" +#line 3317 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10470 "MachineIndependent/glslang_tab.cpp" +#line 10471 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3321 "MachineIndependent/glslang.y" +#line 3322 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10480 "MachineIndependent/glslang_tab.cpp" +#line 10481 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3326 "MachineIndependent/glslang.y" +#line 3327 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10490 "MachineIndependent/glslang_tab.cpp" +#line 10491 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3331 "MachineIndependent/glslang.y" +#line 3332 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10500 "MachineIndependent/glslang_tab.cpp" +#line 10501 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3336 "MachineIndependent/glslang.y" +#line 3337 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10510 "MachineIndependent/glslang_tab.cpp" +#line 10511 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3341 "MachineIndependent/glslang.y" +#line 3342 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10520 "MachineIndependent/glslang_tab.cpp" +#line 10521 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3346 "MachineIndependent/glslang.y" +#line 3347 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10530 "MachineIndependent/glslang_tab.cpp" +#line 10531 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3351 "MachineIndependent/glslang.y" +#line 3352 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10540 "MachineIndependent/glslang_tab.cpp" +#line 10541 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3356 "MachineIndependent/glslang.y" +#line 3357 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10550 "MachineIndependent/glslang_tab.cpp" +#line 10551 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3361 "MachineIndependent/glslang.y" +#line 3362 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10560 "MachineIndependent/glslang_tab.cpp" +#line 10561 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3366 "MachineIndependent/glslang.y" +#line 3367 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10570 "MachineIndependent/glslang_tab.cpp" +#line 10571 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3371 "MachineIndependent/glslang.y" +#line 3372 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10580 "MachineIndependent/glslang_tab.cpp" +#line 10581 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3376 "MachineIndependent/glslang.y" +#line 3377 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10590 "MachineIndependent/glslang_tab.cpp" +#line 10591 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3381 "MachineIndependent/glslang.y" +#line 3382 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10600 "MachineIndependent/glslang_tab.cpp" +#line 10601 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3386 "MachineIndependent/glslang.y" +#line 3387 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10610 "MachineIndependent/glslang_tab.cpp" +#line 10611 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3391 "MachineIndependent/glslang.y" +#line 3392 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10620 "MachineIndependent/glslang_tab.cpp" +#line 10621 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3396 "MachineIndependent/glslang.y" +#line 3397 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10630 "MachineIndependent/glslang_tab.cpp" +#line 10631 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3401 "MachineIndependent/glslang.y" +#line 3402 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10640 "MachineIndependent/glslang_tab.cpp" +#line 10641 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3406 "MachineIndependent/glslang.y" +#line 3407 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10650 "MachineIndependent/glslang_tab.cpp" +#line 10651 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3411 "MachineIndependent/glslang.y" +#line 3412 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10660 "MachineIndependent/glslang_tab.cpp" +#line 10661 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3416 "MachineIndependent/glslang.y" +#line 3417 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10670 "MachineIndependent/glslang_tab.cpp" +#line 10671 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3421 "MachineIndependent/glslang.y" +#line 3422 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10680 "MachineIndependent/glslang_tab.cpp" +#line 10681 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3426 "MachineIndependent/glslang.y" +#line 3427 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10691 "MachineIndependent/glslang_tab.cpp" +#line 10692 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3432 "MachineIndependent/glslang.y" +#line 3433 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10702 "MachineIndependent/glslang_tab.cpp" +#line 10703 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3438 "MachineIndependent/glslang.y" +#line 3439 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10713 "MachineIndependent/glslang_tab.cpp" +#line 10714 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3444 "MachineIndependent/glslang.y" +#line 3445 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10724 "MachineIndependent/glslang_tab.cpp" +#line 10725 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3450 "MachineIndependent/glslang.y" +#line 3451 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10735 "MachineIndependent/glslang_tab.cpp" +#line 10736 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3456 "MachineIndependent/glslang.y" +#line 3457 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10746 "MachineIndependent/glslang_tab.cpp" +#line 10747 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3462 "MachineIndependent/glslang.y" +#line 3463 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10757 "MachineIndependent/glslang_tab.cpp" +#line 10758 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3468 "MachineIndependent/glslang.y" +#line 3469 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10765,11 +10766,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10769 "MachineIndependent/glslang_tab.cpp" +#line 10770 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3475 "MachineIndependent/glslang.y" +#line 3476 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10777,55 +10778,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10781 "MachineIndependent/glslang_tab.cpp" +#line 10782 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3482 "MachineIndependent/glslang.y" +#line 3483 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10792 "MachineIndependent/glslang_tab.cpp" +#line 10793 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3488 "MachineIndependent/glslang.y" +#line 3489 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10803 "MachineIndependent/glslang_tab.cpp" +#line 10804 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3494 "MachineIndependent/glslang.y" +#line 3495 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10814 "MachineIndependent/glslang_tab.cpp" +#line 10815 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3500 "MachineIndependent/glslang.y" +#line 3501 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10825 "MachineIndependent/glslang_tab.cpp" +#line 10826 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3506 "MachineIndependent/glslang.y" +#line 3507 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10833,11 +10834,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10837 "MachineIndependent/glslang_tab.cpp" +#line 10838 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3513 "MachineIndependent/glslang.y" +#line 3514 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10845,11 +10846,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10849 "MachineIndependent/glslang_tab.cpp" +#line 10850 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3520 "MachineIndependent/glslang.y" +#line 3521 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10857,11 +10858,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10861 "MachineIndependent/glslang_tab.cpp" +#line 10862 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: COOPMAT */ -#line 3527 "MachineIndependent/glslang.y" +#line 3528 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10869,39 +10870,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 10873 "MachineIndependent/glslang_tab.cpp" +#line 10874 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3534 "MachineIndependent/glslang.y" +#line 3535 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10882 "MachineIndependent/glslang_tab.cpp" +#line 10883 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3538 "MachineIndependent/glslang.y" +#line 3539 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10891 "MachineIndependent/glslang_tab.cpp" +#line 10892 "MachineIndependent/glslang_tab.cpp" break; case 539: /* type_specifier_nonarray: struct_specifier */ -#line 3542 "MachineIndependent/glslang.y" +#line 3543 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10901 "MachineIndependent/glslang_tab.cpp" +#line 10902 "MachineIndependent/glslang_tab.cpp" break; case 540: /* type_specifier_nonarray: TYPE_NAME */ -#line 3547 "MachineIndependent/glslang.y" +#line 3548 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10915,47 +10916,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10919 "MachineIndependent/glslang_tab.cpp" +#line 10920 "MachineIndependent/glslang_tab.cpp" break; case 541: /* precision_qualifier: HIGH_PRECISION */ -#line 3563 "MachineIndependent/glslang.y" +#line 3564 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10929 "MachineIndependent/glslang_tab.cpp" +#line 10930 "MachineIndependent/glslang_tab.cpp" break; case 542: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3568 "MachineIndependent/glslang.y" +#line 3569 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10939 "MachineIndependent/glslang_tab.cpp" +#line 10940 "MachineIndependent/glslang_tab.cpp" break; case 543: /* precision_qualifier: LOW_PRECISION */ -#line 3573 "MachineIndependent/glslang.y" +#line 3574 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10949 "MachineIndependent/glslang_tab.cpp" +#line 10950 "MachineIndependent/glslang_tab.cpp" break; case 544: /* $@3: %empty */ -#line 3581 "MachineIndependent/glslang.y" +#line 3582 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10955 "MachineIndependent/glslang_tab.cpp" +#line 10956 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3581 "MachineIndependent/glslang.y" +#line 3582 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); @@ -10973,17 +10974,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10977 "MachineIndependent/glslang_tab.cpp" +#line 10978 "MachineIndependent/glslang_tab.cpp" break; case 546: /* $@4: %empty */ -#line 3598 "MachineIndependent/glslang.y" +#line 3599 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10983 "MachineIndependent/glslang_tab.cpp" +#line 10984 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3598 "MachineIndependent/glslang.y" +#line 3599 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10991,19 +10992,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10995 "MachineIndependent/glslang_tab.cpp" +#line 10996 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declaration_list: struct_declaration */ -#line 3608 "MachineIndependent/glslang.y" +#line 3609 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 11003 "MachineIndependent/glslang_tab.cpp" +#line 11004 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3611 "MachineIndependent/glslang.y" +#line 3612 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -11014,11 +11015,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 11018 "MachineIndependent/glslang_tab.cpp" +#line 11019 "MachineIndependent/glslang_tab.cpp" break; case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3624 "MachineIndependent/glslang.y" +#line 3625 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11041,11 +11042,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11045 "MachineIndependent/glslang_tab.cpp" +#line 11046 "MachineIndependent/glslang_tab.cpp" break; case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3646 "MachineIndependent/glslang.y" +#line 3647 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11070,38 +11071,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11074 "MachineIndependent/glslang_tab.cpp" +#line 11075 "MachineIndependent/glslang_tab.cpp" break; case 552: /* struct_declarator_list: struct_declarator */ -#line 3673 "MachineIndependent/glslang.y" +#line 3674 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11083 "MachineIndependent/glslang_tab.cpp" +#line 11084 "MachineIndependent/glslang_tab.cpp" break; case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3677 "MachineIndependent/glslang.y" +#line 3678 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11091 "MachineIndependent/glslang_tab.cpp" +#line 11092 "MachineIndependent/glslang_tab.cpp" break; case 554: /* struct_declarator: IDENTIFIER */ -#line 3683 "MachineIndependent/glslang.y" +#line 3684 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11101 "MachineIndependent/glslang_tab.cpp" +#line 11102 "MachineIndependent/glslang_tab.cpp" break; case 555: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3688 "MachineIndependent/glslang.y" +#line 3689 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11110,246 +11111,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11114 "MachineIndependent/glslang_tab.cpp" +#line 11115 "MachineIndependent/glslang_tab.cpp" break; case 556: /* initializer: assignment_expression */ -#line 3699 "MachineIndependent/glslang.y" +#line 3700 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11122 "MachineIndependent/glslang_tab.cpp" +#line 11123 "MachineIndependent/glslang_tab.cpp" break; case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3702 "MachineIndependent/glslang.y" +#line 3703 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11133 "MachineIndependent/glslang_tab.cpp" +#line 11134 "MachineIndependent/glslang_tab.cpp" break; case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3708 "MachineIndependent/glslang.y" +#line 3709 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11144 "MachineIndependent/glslang_tab.cpp" +#line 11145 "MachineIndependent/glslang_tab.cpp" break; case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3714 "MachineIndependent/glslang.y" +#line 3715 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11155 "MachineIndependent/glslang_tab.cpp" +#line 11156 "MachineIndependent/glslang_tab.cpp" break; case 560: /* initializer_list: initializer */ -#line 3723 "MachineIndependent/glslang.y" +#line 3724 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11163 "MachineIndependent/glslang_tab.cpp" +#line 11164 "MachineIndependent/glslang_tab.cpp" break; case 561: /* initializer_list: initializer_list COMMA initializer */ -#line 3726 "MachineIndependent/glslang.y" +#line 3727 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11171 "MachineIndependent/glslang_tab.cpp" +#line 11172 "MachineIndependent/glslang_tab.cpp" break; case 562: /* declaration_statement: declaration */ -#line 3732 "MachineIndependent/glslang.y" +#line 3733 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11177 "MachineIndependent/glslang_tab.cpp" +#line 11178 "MachineIndependent/glslang_tab.cpp" break; case 563: /* statement: compound_statement */ -#line 3736 "MachineIndependent/glslang.y" +#line 3737 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11183 "MachineIndependent/glslang_tab.cpp" +#line 11184 "MachineIndependent/glslang_tab.cpp" break; case 564: /* statement: simple_statement */ -#line 3737 "MachineIndependent/glslang.y" +#line 3738 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11189 "MachineIndependent/glslang_tab.cpp" +#line 11190 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: declaration_statement */ -#line 3743 "MachineIndependent/glslang.y" +#line 3744 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11195 "MachineIndependent/glslang_tab.cpp" +#line 11196 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: expression_statement */ -#line 3744 "MachineIndependent/glslang.y" +#line 3745 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11201 "MachineIndependent/glslang_tab.cpp" +#line 11202 "MachineIndependent/glslang_tab.cpp" break; case 567: /* simple_statement: selection_statement */ -#line 3745 "MachineIndependent/glslang.y" +#line 3746 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11207 "MachineIndependent/glslang_tab.cpp" +#line 11208 "MachineIndependent/glslang_tab.cpp" break; case 568: /* simple_statement: switch_statement */ -#line 3746 "MachineIndependent/glslang.y" +#line 3747 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11213 "MachineIndependent/glslang_tab.cpp" +#line 11214 "MachineIndependent/glslang_tab.cpp" break; case 569: /* simple_statement: case_label */ -#line 3747 "MachineIndependent/glslang.y" +#line 3748 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11219 "MachineIndependent/glslang_tab.cpp" +#line 11220 "MachineIndependent/glslang_tab.cpp" break; case 570: /* simple_statement: iteration_statement */ -#line 3748 "MachineIndependent/glslang.y" +#line 3749 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11225 "MachineIndependent/glslang_tab.cpp" +#line 11226 "MachineIndependent/glslang_tab.cpp" break; case 571: /* simple_statement: jump_statement */ -#line 3749 "MachineIndependent/glslang.y" +#line 3750 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11231 "MachineIndependent/glslang_tab.cpp" +#line 11232 "MachineIndependent/glslang_tab.cpp" break; case 572: /* simple_statement: demote_statement */ -#line 3750 "MachineIndependent/glslang.y" +#line 3751 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11237 "MachineIndependent/glslang_tab.cpp" +#line 11238 "MachineIndependent/glslang_tab.cpp" break; case 573: /* demote_statement: DEMOTE SEMICOLON */ -#line 3754 "MachineIndependent/glslang.y" +#line 3755 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11247 "MachineIndependent/glslang_tab.cpp" +#line 11248 "MachineIndependent/glslang_tab.cpp" break; case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3762 "MachineIndependent/glslang.y" +#line 3763 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11253 "MachineIndependent/glslang_tab.cpp" +#line 11254 "MachineIndependent/glslang_tab.cpp" break; case 575: /* $@5: %empty */ -#line 3763 "MachineIndependent/glslang.y" +#line 3764 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11262 "MachineIndependent/glslang_tab.cpp" +#line 11263 "MachineIndependent/glslang_tab.cpp" break; case 576: /* $@6: %empty */ -#line 3767 "MachineIndependent/glslang.y" +#line 3768 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11271 "MachineIndependent/glslang_tab.cpp" +#line 11272 "MachineIndependent/glslang_tab.cpp" break; case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3771 "MachineIndependent/glslang.y" +#line 3772 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11281 "MachineIndependent/glslang_tab.cpp" +#line 11282 "MachineIndependent/glslang_tab.cpp" break; case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3779 "MachineIndependent/glslang.y" +#line 3780 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11287 "MachineIndependent/glslang_tab.cpp" +#line 11288 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_no_new_scope: simple_statement */ -#line 3780 "MachineIndependent/glslang.y" +#line 3781 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11293 "MachineIndependent/glslang_tab.cpp" +#line 11294 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@7: %empty */ -#line 3784 "MachineIndependent/glslang.y" +#line 3785 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11301 "MachineIndependent/glslang_tab.cpp" +#line 11302 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@7 compound_statement */ -#line 3787 "MachineIndependent/glslang.y" +#line 3788 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11310 "MachineIndependent/glslang_tab.cpp" +#line 11311 "MachineIndependent/glslang_tab.cpp" break; case 582: /* $@8: %empty */ -#line 3791 "MachineIndependent/glslang.y" +#line 3792 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11320 "MachineIndependent/glslang_tab.cpp" +#line 11321 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement_scoped: $@8 simple_statement */ -#line 3796 "MachineIndependent/glslang.y" +#line 3797 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11331 "MachineIndependent/glslang_tab.cpp" +#line 11332 "MachineIndependent/glslang_tab.cpp" break; case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3805 "MachineIndependent/glslang.y" +#line 3806 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11339 "MachineIndependent/glslang_tab.cpp" +#line 11340 "MachineIndependent/glslang_tab.cpp" break; case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3808 "MachineIndependent/glslang.y" +#line 3809 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11349 "MachineIndependent/glslang_tab.cpp" +#line 11350 "MachineIndependent/glslang_tab.cpp" break; case 586: /* statement_list: statement */ -#line 3816 "MachineIndependent/glslang.y" +#line 3817 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11358,11 +11359,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11362 "MachineIndependent/glslang_tab.cpp" +#line 11363 "MachineIndependent/glslang_tab.cpp" break; case 587: /* statement_list: statement_list statement */ -#line 3824 "MachineIndependent/glslang.y" +#line 3825 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11371,77 +11372,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11375 "MachineIndependent/glslang_tab.cpp" +#line 11376 "MachineIndependent/glslang_tab.cpp" break; case 588: /* expression_statement: SEMICOLON */ -#line 3835 "MachineIndependent/glslang.y" +#line 3836 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11381 "MachineIndependent/glslang_tab.cpp" +#line 11382 "MachineIndependent/glslang_tab.cpp" break; case 589: /* expression_statement: expression SEMICOLON */ -#line 3836 "MachineIndependent/glslang.y" +#line 3837 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11387 "MachineIndependent/glslang_tab.cpp" +#line 11388 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement: selection_statement_nonattributed */ -#line 3840 "MachineIndependent/glslang.y" +#line 3841 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11395 "MachineIndependent/glslang_tab.cpp" +#line 11396 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3843 "MachineIndependent/glslang.y" +#line 3844 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11405 "MachineIndependent/glslang_tab.cpp" +#line 11406 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3850 "MachineIndependent/glslang.y" +#line 3851 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11414 "MachineIndependent/glslang_tab.cpp" +#line 11415 "MachineIndependent/glslang_tab.cpp" break; case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3857 "MachineIndependent/glslang.y" +#line 3858 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11423 "MachineIndependent/glslang_tab.cpp" +#line 11424 "MachineIndependent/glslang_tab.cpp" break; case 594: /* selection_rest_statement: statement_scoped */ -#line 3861 "MachineIndependent/glslang.y" +#line 3862 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11432 "MachineIndependent/glslang_tab.cpp" +#line 11433 "MachineIndependent/glslang_tab.cpp" break; case 595: /* condition: expression */ -#line 3869 "MachineIndependent/glslang.y" +#line 3870 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11441 "MachineIndependent/glslang_tab.cpp" +#line 11442 "MachineIndependent/glslang_tab.cpp" break; case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3873 "MachineIndependent/glslang.y" +#line 3874 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11452,29 +11453,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11456 "MachineIndependent/glslang_tab.cpp" +#line 11457 "MachineIndependent/glslang_tab.cpp" break; case 597: /* switch_statement: switch_statement_nonattributed */ -#line 3886 "MachineIndependent/glslang.y" +#line 3887 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11464 "MachineIndependent/glslang_tab.cpp" +#line 11465 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3889 "MachineIndependent/glslang.y" +#line 3890 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11474 "MachineIndependent/glslang_tab.cpp" +#line 11475 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@9: %empty */ -#line 3896 "MachineIndependent/glslang.y" +#line 3897 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11483,11 +11484,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11487 "MachineIndependent/glslang_tab.cpp" +#line 11488 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3904 "MachineIndependent/glslang.y" +#line 3905 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11497,27 +11498,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11501 "MachineIndependent/glslang_tab.cpp" +#line 11502 "MachineIndependent/glslang_tab.cpp" break; case 601: /* switch_statement_list: %empty */ -#line 3916 "MachineIndependent/glslang.y" +#line 3917 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11509 "MachineIndependent/glslang_tab.cpp" +#line 11510 "MachineIndependent/glslang_tab.cpp" break; case 602: /* switch_statement_list: statement_list */ -#line 3919 "MachineIndependent/glslang.y" +#line 3920 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11517 "MachineIndependent/glslang_tab.cpp" +#line 11518 "MachineIndependent/glslang_tab.cpp" break; case 603: /* case_label: CASE expression COLON */ -#line 3925 "MachineIndependent/glslang.y" +#line 3926 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11530,11 +11531,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11534 "MachineIndependent/glslang_tab.cpp" +#line 11535 "MachineIndependent/glslang_tab.cpp" break; case 604: /* case_label: DEFAULT COLON */ -#line 3937 "MachineIndependent/glslang.y" +#line 3938 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11544,30 +11545,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11548 "MachineIndependent/glslang_tab.cpp" +#line 11549 "MachineIndependent/glslang_tab.cpp" break; case 605: /* iteration_statement: iteration_statement_nonattributed */ -#line 3949 "MachineIndependent/glslang.y" +#line 3950 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11556 "MachineIndependent/glslang_tab.cpp" +#line 11557 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3952 "MachineIndependent/glslang.y" +#line 3953 "MachineIndependent/glslang.y" { const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11567 "MachineIndependent/glslang_tab.cpp" +#line 11568 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3960 "MachineIndependent/glslang.y" +#line 3961 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11576,11 +11577,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11580 "MachineIndependent/glslang_tab.cpp" +#line 11581 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3968 "MachineIndependent/glslang.y" +#line 3969 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11588,22 +11589,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11592 "MachineIndependent/glslang_tab.cpp" +#line 11593 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 3975 "MachineIndependent/glslang.y" +#line 3976 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11603 "MachineIndependent/glslang_tab.cpp" +#line 11604 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3981 "MachineIndependent/glslang.y" +#line 3982 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11616,22 +11617,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11620 "MachineIndependent/glslang_tab.cpp" +#line 11621 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 3993 "MachineIndependent/glslang.y" +#line 3994 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11631 "MachineIndependent/glslang_tab.cpp" +#line 11632 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 3999 "MachineIndependent/glslang.y" +#line 4000 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11644,81 +11645,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11648 "MachineIndependent/glslang_tab.cpp" +#line 11649 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 4014 "MachineIndependent/glslang.y" +#line 4015 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11656 "MachineIndependent/glslang_tab.cpp" +#line 11657 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 4017 "MachineIndependent/glslang.y" +#line 4018 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11664 "MachineIndependent/glslang_tab.cpp" +#line 11665 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 4023 "MachineIndependent/glslang.y" +#line 4024 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11672 "MachineIndependent/glslang_tab.cpp" +#line 11673 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 4026 "MachineIndependent/glslang.y" +#line 4027 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11680 "MachineIndependent/glslang_tab.cpp" +#line 11681 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4032 "MachineIndependent/glslang.y" +#line 4033 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11689 "MachineIndependent/glslang_tab.cpp" +#line 11690 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4036 "MachineIndependent/glslang.y" +#line 4037 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11698 "MachineIndependent/glslang_tab.cpp" +#line 11699 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4043 "MachineIndependent/glslang.y" +#line 4044 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11708 "MachineIndependent/glslang_tab.cpp" +#line 11709 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4048 "MachineIndependent/glslang.y" +#line 4049 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11718 "MachineIndependent/glslang_tab.cpp" +#line 11719 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4053 "MachineIndependent/glslang.y" +#line 4054 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11726,101 +11727,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11730 "MachineIndependent/glslang_tab.cpp" +#line 11731 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4060 "MachineIndependent/glslang.y" +#line 4061 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11738 "MachineIndependent/glslang_tab.cpp" +#line 11739 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4063 "MachineIndependent/glslang.y" +#line 4064 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11747 "MachineIndependent/glslang_tab.cpp" +#line 11748 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4067 "MachineIndependent/glslang.y" +#line 4068 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11756 "MachineIndependent/glslang_tab.cpp" +#line 11757 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4071 "MachineIndependent/glslang.y" +#line 4072 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11765 "MachineIndependent/glslang_tab.cpp" +#line 11766 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4075 "MachineIndependent/glslang.y" +#line 4076 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11774 "MachineIndependent/glslang_tab.cpp" +#line 11775 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4084 "MachineIndependent/glslang.y" +#line 4085 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11783 "MachineIndependent/glslang_tab.cpp" +#line 11784 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4088 "MachineIndependent/glslang.y" +#line 4089 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11794 "MachineIndependent/glslang_tab.cpp" +#line 11795 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4097 "MachineIndependent/glslang.y" +#line 4098 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11802 "MachineIndependent/glslang_tab.cpp" +#line 11803 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4100 "MachineIndependent/glslang.y" +#line 4101 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11810 "MachineIndependent/glslang_tab.cpp" +#line 11811 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4103 "MachineIndependent/glslang.y" +#line 4104 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11820 "MachineIndependent/glslang_tab.cpp" +#line 11821 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4111 "MachineIndependent/glslang.y" +#line 4112 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11833,11 +11834,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11837 "MachineIndependent/glslang_tab.cpp" +#line 11838 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4123 "MachineIndependent/glslang.y" +#line 4124 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11865,228 +11866,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11869 "MachineIndependent/glslang_tab.cpp" +#line 11870 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4153 "MachineIndependent/glslang.y" +#line 4154 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11877 "MachineIndependent/glslang_tab.cpp" +#line 11878 "MachineIndependent/glslang_tab.cpp" break; case 635: /* attribute_list: single_attribute */ -#line 4158 "MachineIndependent/glslang.y" +#line 4159 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11885 "MachineIndependent/glslang_tab.cpp" +#line 11886 "MachineIndependent/glslang_tab.cpp" break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4161 "MachineIndependent/glslang.y" +#line 4162 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11893 "MachineIndependent/glslang_tab.cpp" +#line 11894 "MachineIndependent/glslang_tab.cpp" break; case 637: /* single_attribute: IDENTIFIER */ -#line 4166 "MachineIndependent/glslang.y" +#line 4167 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11901 "MachineIndependent/glslang_tab.cpp" +#line 11902 "MachineIndependent/glslang_tab.cpp" break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4169 "MachineIndependent/glslang.y" +#line 4170 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11909 "MachineIndependent/glslang_tab.cpp" +#line 11910 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4174 "MachineIndependent/glslang.y" +#line 4175 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11917 "MachineIndependent/glslang_tab.cpp" +#line 11918 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4177 "MachineIndependent/glslang.y" +#line 4178 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11925 "MachineIndependent/glslang_tab.cpp" +#line 11926 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4182 "MachineIndependent/glslang.y" +#line 4183 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11933 "MachineIndependent/glslang_tab.cpp" +#line 11934 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4185 "MachineIndependent/glslang.y" +#line 4186 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11941 "MachineIndependent/glslang_tab.cpp" +#line 11942 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4190 "MachineIndependent/glslang.y" +#line 4191 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11949 "MachineIndependent/glslang_tab.cpp" +#line 11950 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4193 "MachineIndependent/glslang.y" +#line 4194 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11957 "MachineIndependent/glslang_tab.cpp" +#line 11958 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4198 "MachineIndependent/glslang.y" +#line 4199 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11965 "MachineIndependent/glslang_tab.cpp" +#line 11966 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4201 "MachineIndependent/glslang.y" +#line 4202 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11973 "MachineIndependent/glslang_tab.cpp" +#line 11974 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4206 "MachineIndependent/glslang.y" +#line 4207 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11982 "MachineIndependent/glslang_tab.cpp" +#line 11983 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4210 "MachineIndependent/glslang.y" +#line 4211 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11992 "MachineIndependent/glslang_tab.cpp" +#line 11993 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4215 "MachineIndependent/glslang.y" +#line 4216 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12001 "MachineIndependent/glslang_tab.cpp" +#line 12002 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4219 "MachineIndependent/glslang.y" +#line 4220 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12011 "MachineIndependent/glslang_tab.cpp" +#line 12012 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4224 "MachineIndependent/glslang.y" +#line 4225 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12020 "MachineIndependent/glslang_tab.cpp" +#line 12021 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4228 "MachineIndependent/glslang.y" +#line 4229 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12030 "MachineIndependent/glslang_tab.cpp" +#line 12031 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4235 "MachineIndependent/glslang.y" +#line 4236 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12038 "MachineIndependent/glslang_tab.cpp" +#line 12039 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4238 "MachineIndependent/glslang.y" +#line 4239 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12046 "MachineIndependent/glslang_tab.cpp" +#line 12047 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4243 "MachineIndependent/glslang.y" +#line 4244 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12054 "MachineIndependent/glslang_tab.cpp" +#line 12055 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4246 "MachineIndependent/glslang.y" +#line 4247 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12062 "MachineIndependent/glslang_tab.cpp" +#line 12063 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4249 "MachineIndependent/glslang.y" +#line 4250 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12070 "MachineIndependent/glslang_tab.cpp" +#line 12071 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4252 "MachineIndependent/glslang.y" +#line 4253 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12078 "MachineIndependent/glslang_tab.cpp" +#line 12079 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4255 "MachineIndependent/glslang.y" +#line 4256 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12086 "MachineIndependent/glslang_tab.cpp" +#line 12087 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4260 "MachineIndependent/glslang.y" +#line 4261 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12096,11 +12097,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12100 "MachineIndependent/glslang_tab.cpp" +#line 12101 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4269 "MachineIndependent/glslang.y" +#line 4270 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12110,351 +12111,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12114 "MachineIndependent/glslang_tab.cpp" +#line 12115 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4280 "MachineIndependent/glslang.y" +#line 4281 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12124 "MachineIndependent/glslang_tab.cpp" +#line 12125 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4285 "MachineIndependent/glslang.y" +#line 4286 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12135 "MachineIndependent/glslang_tab.cpp" +#line 12136 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4293 "MachineIndependent/glslang.y" +#line 4294 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12144 "MachineIndependent/glslang_tab.cpp" +#line 12145 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4297 "MachineIndependent/glslang.y" +#line 4298 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12154 "MachineIndependent/glslang_tab.cpp" +#line 12155 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4302 "MachineIndependent/glslang.y" +#line 4303 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12163 "MachineIndependent/glslang_tab.cpp" +#line 12164 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4306 "MachineIndependent/glslang.y" +#line 4307 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12173 "MachineIndependent/glslang_tab.cpp" +#line 12174 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4311 "MachineIndependent/glslang.y" +#line 4312 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12182 "MachineIndependent/glslang_tab.cpp" +#line 12183 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4315 "MachineIndependent/glslang.y" +#line 4316 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12192 "MachineIndependent/glslang_tab.cpp" +#line 12193 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4320 "MachineIndependent/glslang.y" +#line 4321 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12201 "MachineIndependent/glslang_tab.cpp" +#line 12202 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4324 "MachineIndependent/glslang.y" +#line 4325 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12211 "MachineIndependent/glslang_tab.cpp" +#line 12212 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4331 "MachineIndependent/glslang.y" +#line 4332 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12219 "MachineIndependent/glslang_tab.cpp" +#line 12220 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4334 "MachineIndependent/glslang.y" +#line 4335 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12227 "MachineIndependent/glslang_tab.cpp" +#line 12228 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4339 "MachineIndependent/glslang.y" +#line 4340 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12235 "MachineIndependent/glslang_tab.cpp" +#line 12236 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4342 "MachineIndependent/glslang.y" +#line 4343 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12243 "MachineIndependent/glslang_tab.cpp" +#line 12244 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4345 "MachineIndependent/glslang.y" +#line 4346 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12251 "MachineIndependent/glslang_tab.cpp" +#line 12252 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4348 "MachineIndependent/glslang.y" +#line 4349 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12259 "MachineIndependent/glslang_tab.cpp" +#line 12260 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4353 "MachineIndependent/glslang.y" +#line 4354 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12267 "MachineIndependent/glslang_tab.cpp" +#line 12268 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4356 "MachineIndependent/glslang.y" +#line 4357 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12275 "MachineIndependent/glslang_tab.cpp" +#line 12276 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4361 "MachineIndependent/glslang.y" +#line 4362 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12286 "MachineIndependent/glslang_tab.cpp" +#line 12287 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4367 "MachineIndependent/glslang.y" +#line 4368 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12294 "MachineIndependent/glslang_tab.cpp" +#line 12295 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4370 "MachineIndependent/glslang.y" +#line 4371 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12302 "MachineIndependent/glslang_tab.cpp" +#line 12303 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4373 "MachineIndependent/glslang.y" +#line 4374 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12310 "MachineIndependent/glslang_tab.cpp" +#line 12311 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4376 "MachineIndependent/glslang.y" +#line 4377 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12318 "MachineIndependent/glslang_tab.cpp" +#line 12319 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4381 "MachineIndependent/glslang.y" +#line 4382 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12327 "MachineIndependent/glslang_tab.cpp" +#line 12328 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4385 "MachineIndependent/glslang.y" +#line 4386 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12335 "MachineIndependent/glslang_tab.cpp" +#line 12336 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4390 "MachineIndependent/glslang.y" +#line 4391 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12344 "MachineIndependent/glslang_tab.cpp" +#line 12345 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4394 "MachineIndependent/glslang.y" +#line 4395 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12354 "MachineIndependent/glslang_tab.cpp" +#line 12355 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4399 "MachineIndependent/glslang.y" +#line 4400 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12363 "MachineIndependent/glslang_tab.cpp" +#line 12364 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4403 "MachineIndependent/glslang.y" +#line 4404 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12373 "MachineIndependent/glslang_tab.cpp" +#line 12374 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4410 "MachineIndependent/glslang.y" +#line 4411 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12381 "MachineIndependent/glslang_tab.cpp" +#line 12382 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4413 "MachineIndependent/glslang.y" +#line 4414 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12389 "MachineIndependent/glslang_tab.cpp" +#line 12390 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4418 "MachineIndependent/glslang.y" +#line 4419 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12397 "MachineIndependent/glslang_tab.cpp" +#line 12398 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4421 "MachineIndependent/glslang.y" +#line 4422 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12405 "MachineIndependent/glslang_tab.cpp" +#line 12406 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4426 "MachineIndependent/glslang.y" +#line 4427 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12413 "MachineIndependent/glslang_tab.cpp" +#line 12414 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4429 "MachineIndependent/glslang.y" +#line 4430 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12422 "MachineIndependent/glslang_tab.cpp" +#line 12423 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4435 "MachineIndependent/glslang.y" +#line 4436 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12430 "MachineIndependent/glslang_tab.cpp" +#line 12431 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4438 "MachineIndependent/glslang.y" +#line 4439 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12438 "MachineIndependent/glslang_tab.cpp" +#line 12439 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4443 "MachineIndependent/glslang.y" +#line 4444 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12446 "MachineIndependent/glslang_tab.cpp" +#line 12447 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4446 "MachineIndependent/glslang.y" +#line 4447 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12454 "MachineIndependent/glslang_tab.cpp" +#line 12455 "MachineIndependent/glslang_tab.cpp" break; -#line 12458 "MachineIndependent/glslang_tab.cpp" +#line 12459 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12678,5 +12679,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4450 "MachineIndependent/glslang.y" +#line 4451 "MachineIndependent/glslang.y" diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index e820962df2..bfd1ff4c11 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -423,6 +423,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.intrinsicsSpirvDecorateId.comp", "spv.intrinsicsSpirvDecorateString.comp", "spv.intrinsicsSpirvExecutionMode.frag", + "spv.intrinsicsInteractWithCoopMat.comp", "spv.intrinsicsSpirvInstruction.vert", "spv.intrinsicsSpirvLiteral.vert", "spv.intrinsicsSpirvStorageClass.rchit", From 3225778615fd9d7e23fd11b71a05097d59ba0247 Mon Sep 17 00:00:00 2001 From: Rex Xu Date: Thu, 21 Mar 2024 23:41:47 +0800 Subject: [PATCH 442/594] Fix an issue of getExtBuiltins() This function is used to import SPIR-V extended instruction set. It mistakenly treated the name of SPIR-V extended instruction set as the name of SPIR-V extension. For example, when we have such code getExtBuiltins("NonSemantic.DebugBreak") 'NonSemantic.DebugBreak' is added to SPIR-V extension. Rather, the SPIR-V extension name should be 'SPV_KHR_non_semantics_info'. Therefore, we must avoid this since the name of SPIR-V extended instruction set is not necessarily equal to that of relevant SPIR-V extension. Adding a SPIR-V extension must be done by calling addExtension() explicitly outside this function. This change also fixes disassembly issues of debugBreak(). --- SPIRV/GlslangToSpv.cpp | 1 - SPIRV/disassemble.cpp | 5 +++++ .../spv.intrinsicsDebugBreak.frag.out | 22 +++++++++++++++++++ Test/spv.intrinsicsDebugBreak.frag | 9 ++++++++ gtests/Spv.FromFile.cpp | 1 + 5 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.intrinsicsDebugBreak.frag.out create mode 100644 Test/spv.intrinsicsDebugBreak.frag diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index baf3fd7620..1294855aeb 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -10222,7 +10222,6 @@ spv::Id TGlslangToSpvTraverser::getExtBuiltins(const char* name) if (extBuiltinMap.find(name) != extBuiltinMap.end()) return extBuiltinMap[name]; else { - builder.addExtension(name); spv::Id extBuiltins = builder.import(name); extBuiltinMap[name] = extBuiltins; return extBuiltins; diff --git a/SPIRV/disassemble.cpp b/SPIRV/disassemble.cpp index 2a368b2c0c..ab77610c4e 100644 --- a/SPIRV/disassemble.cpp +++ b/SPIRV/disassemble.cpp @@ -80,6 +80,7 @@ enum ExtInstSet { GLSLextNVInst, OpenCLExtInst, NonSemanticDebugPrintfExtInst, + NonSemanticDebugBreakExtInst, NonSemanticShaderDebugInfo100 }; @@ -506,6 +507,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, extInstSet = OpenCLExtInst; } else if (strcmp("NonSemantic.DebugPrintf", name) == 0) { extInstSet = NonSemanticDebugPrintfExtInst; + } else if (strcmp("NonSemantic.DebugBreak", name) == 0) { + extInstSet = NonSemanticDebugBreakExtInst; } else if (strcmp("NonSemantic.Shader.DebugInfo.100", name) == 0) { extInstSet = NonSemanticShaderDebugInfo100; } else if (strcmp(spv::E_SPV_AMD_shader_ballot, name) == 0 || @@ -533,6 +536,8 @@ void SpirvStream::disassembleInstruction(Id resultId, Id /*typeId*/, Op opCode, out << "(" << GLSLextNVGetDebugNames(name, entrypoint) << ")"; } else if (extInstSet == NonSemanticDebugPrintfExtInst) { out << "(DebugPrintf)"; + } else if (extInstSet == NonSemanticDebugBreakExtInst) { + out << "(DebugBreak)"; } else if (extInstSet == NonSemanticShaderDebugInfo100) { out << "(" << NonSemanticShaderDebugInfo100GetDebugNames(entrypoint) << ")"; } diff --git a/Test/baseResults/spv.intrinsicsDebugBreak.frag.out b/Test/baseResults/spv.intrinsicsDebugBreak.frag.out new file mode 100644 index 0000000000..d5367618b7 --- /dev/null +++ b/Test/baseResults/spv.intrinsicsDebugBreak.frag.out @@ -0,0 +1,22 @@ +spv.intrinsicsDebugBreak.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 8 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "GLSL.std.450" + 6: ExtInstImport "NonSemantic.DebugBreak" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source GLSL 460 + SourceExtension "GL_EXT_spirv_intrinsics" + Name 4 "main" + 2: TypeVoid + 3: TypeFunction 2 + 4(main): 2 Function None 3 + 5: Label + 7: 2 ExtInst 6(NonSemantic.DebugBreak) 1(DebugBreak) + Return + FunctionEnd diff --git a/Test/spv.intrinsicsDebugBreak.frag b/Test/spv.intrinsicsDebugBreak.frag new file mode 100644 index 0000000000..861f20ed38 --- /dev/null +++ b/Test/spv.intrinsicsDebugBreak.frag @@ -0,0 +1,9 @@ +#version 460 +#extension GL_EXT_spirv_intrinsics : enable + +spirv_instruction (extensions = ["SPV_KHR_non_semantic_info"], set = "NonSemantic.DebugBreak", id = 1) +void debugBreak(); + +void main() { + debugBreak(); +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index bfd1ff4c11..93cf08dc34 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -418,6 +418,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.int64.frag", "spv.intcoopmat.comp", "spv.intOps.vert", + "spv.intrinsicsDebugBreak.frag", "spv.intrinsicsSpirvByReference.vert", "spv.intrinsicsSpirvDecorate.frag", "spv.intrinsicsSpirvDecorateId.comp", From 77c4d127920990f0c8969f48e075600e40739a00 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 06:58:34 +0000 Subject: [PATCH 443/594] Bump lukka/get-cmake from 3.28.3 to 3.29.0 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.28.3 to 3.29.0. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/139aae96315b496d9af1b5e9abe53b15ca7eece8...9438b96ac95a2a8b02548f63800926db324f7c03) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 32044813dc..1c6b0c1302 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index f28d30cb73..b0f9fdce10 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -127,7 +127,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -151,7 +151,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' @@ -169,7 +169,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -198,7 +198,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -224,7 +224,7 @@ jobs: - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 with: python-version: '3.7' - - uses: lukka/get-cmake@139aae96315b496d9af1b5e9abe53b15ca7eece8 # v3.28.3 + - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: From 8c0199c4fd186b2e4d736335d0e26fec34e30726 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 25 Mar 2024 06:58:50 +0000 Subject: [PATCH 444/594] Bump github/codeql-action from 3.24.7 to 3.24.9 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.7 to 3.24.9. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/3ab4101902695724f9365a384f86c1074d94e18c...1b1aada464948af03b950897e5eb522f92603cc2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 18e45fb1ff..7d624c6211 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@3ab4101902695724f9365a384f86c1074d94e18c # v3.24.7 + uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 with: sarif_file: results.sarif From 0015dc9345ff9572af60801948c82b7ebce5ddb3 Mon Sep 17 00:00:00 2001 From: Samuel Bourasseau <120011247+sbourasse@users.noreply.github.com> Date: Sat, 30 Mar 2024 00:40:26 +0100 Subject: [PATCH 445/594] Branch out of relaxed rules on opaque arguments declared at top-level (#3558) --- Test/baseResults/vk.relaxed.frag.out | 4 +- glslang/MachineIndependent/ParseHelper.cpp | 12 + glslang/MachineIndependent/glslang.y | 5 +- glslang/MachineIndependent/glslang_tab.cpp | 2819 ++++++++++---------- 4 files changed, 1429 insertions(+), 1411 deletions(-) diff --git a/Test/baseResults/vk.relaxed.frag.out b/Test/baseResults/vk.relaxed.frag.out index 078dec2020..4d5f64ee18 100644 --- a/Test/baseResults/vk.relaxed.frag.out +++ b/Test/baseResults/vk.relaxed.frag.out @@ -243,7 +243,7 @@ gl_FragCoord origin is upper left 0:74 0.000000 0:74 0.000000 0:74 texture ( global highp 4-component vector of float) -0:74 'structUniform.t0' ( uniform highp sampler2D) +0:? 'structUniform.t0' ( uniform highp sampler2D) 0:74 Constant: 0:74 0.000000 0:74 0.000000 @@ -576,7 +576,7 @@ gl_FragCoord origin is upper left 0:74 0.000000 0:74 0.000000 0:74 texture ( global highp 4-component vector of float) -0:74 'structUniform.t0' ( uniform highp sampler2D) +0:? 'structUniform.t0' ( uniform highp sampler2D) 0:74 Constant: 0:74 0.000000 0:74 0.000000 diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 3d770bfa27..ff4e903974 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7637,6 +7637,7 @@ struct AccessChainTraverser : public TIntermTraverser { {} TString path = ""; + TStorageQualifier topLevelStorageQualifier = TStorageQualifier::EvqLast; bool visitBinary(TVisit, TIntermBinary* binary) override { if (binary->getOp() == EOpIndexDirectStruct) @@ -7667,6 +7668,8 @@ struct AccessChainTraverser : public TIntermTraverser { } void visitSymbol(TIntermSymbol* symbol) override { + if (symbol->getType().isOpaque()) + topLevelStorageQualifier = symbol->getQualifier().storage; if (!IsAnonymous(symbol->getName())) path.append(symbol->getName()); } @@ -7677,6 +7680,15 @@ TIntermNode* TParseContext::vkRelaxedRemapFunctionArgument(const TSourceLoc& loc AccessChainTraverser accessChainTraverser{}; intermTyped->traverse(&accessChainTraverser); + if (accessChainTraverser.topLevelStorageQualifier == TStorageQualifier::EvqUniform) + { + TParameter param = { 0, new TType, {} }; + param.type->shallowCopy(intermTyped->getType()); + + function->addParameter(param); + return intermTyped; + } + TParameter param = { NewPoolTString(accessChainTraverser.path.c_str()), new TType, {} }; param.type->shallowCopy(intermTyped->getType()); diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 2ff4c02f22..53c5767784 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -508,7 +508,10 @@ function_call_header_with_parameters && $3->getType().containsOpaque()) { TIntermNode* remappedNode = parseContext.vkRelaxedRemapFunctionArgument($2.loc, $1.function, $3); - $$.intermNode = parseContext.intermediate.mergeAggregate($1.intermNode, remappedNode, $2.loc); + if (remappedNode == $3) + $$.intermNode = parseContext.intermediate.growAggregate($1.intermNode, $3, $2.loc); + else + $$.intermNode = parseContext.intermediate.mergeAggregate($1.intermNode, remappedNode, $2.loc); $$.function = $1.function; } else diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 3ec89d9468..5764d39294 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1163,74 +1163,74 @@ static const yytype_int16 yyrline[] = 0, 355, 355, 361, 364, 369, 372, 375, 379, 382, 385, 389, 393, 397, 401, 405, 409, 415, 422, 425, 428, 431, 434, 439, 447, 454, 461, 467, 471, 478, - 481, 487, 505, 527, 535, 540, 567, 575, 581, 585, - 589, 609, 610, 611, 612, 618, 619, 624, 629, 638, - 639, 644, 652, 653, 659, 668, 669, 674, 679, 684, - 692, 693, 702, 714, 715, 724, 725, 734, 735, 744, - 745, 753, 754, 762, 763, 771, 772, 772, 790, 791, - 807, 811, 815, 819, 824, 828, 832, 836, 840, 844, - 848, 855, 858, 869, 876, 881, 888, 893, 898, 905, - 909, 913, 917, 922, 927, 936, 936, 947, 951, 958, - 963, 971, 979, 991, 994, 1001, 1014, 1037, 1060, 1075, - 1100, 1111, 1121, 1131, 1141, 1150, 1153, 1157, 1161, 1166, - 1174, 1179, 1184, 1189, 1194, 1203, 1213, 1240, 1249, 1256, - 1263, 1270, 1277, 1285, 1293, 1303, 1313, 1320, 1330, 1336, - 1339, 1346, 1350, 1354, 1362, 1371, 1374, 1385, 1388, 1391, - 1395, 1399, 1403, 1407, 1410, 1415, 1419, 1424, 1432, 1436, - 1441, 1447, 1453, 1460, 1465, 1470, 1478, 1483, 1495, 1509, - 1515, 1520, 1528, 1536, 1544, 1552, 1560, 1568, 1576, 1584, - 1592, 1599, 1606, 1610, 1615, 1620, 1625, 1630, 1635, 1640, - 1644, 1648, 1652, 1656, 1662, 1668, 1678, 1685, 1688, 1696, - 1703, 1714, 1719, 1727, 1731, 1741, 1744, 1750, 1756, 1762, - 1770, 1780, 1784, 1788, 1792, 1797, 1801, 1806, 1811, 1816, - 1821, 1826, 1831, 1836, 1841, 1846, 1852, 1858, 1864, 1869, - 1874, 1879, 1884, 1889, 1894, 1899, 1904, 1909, 1914, 1919, - 1924, 1931, 1936, 1941, 1946, 1951, 1956, 1961, 1966, 1971, - 1976, 1981, 1986, 1994, 2002, 2010, 2016, 2022, 2028, 2034, - 2040, 2046, 2052, 2058, 2064, 2070, 2076, 2082, 2088, 2094, - 2100, 2106, 2112, 2118, 2124, 2130, 2136, 2142, 2148, 2154, - 2160, 2166, 2172, 2178, 2184, 2190, 2196, 2202, 2208, 2216, - 2224, 2232, 2240, 2248, 2256, 2264, 2272, 2280, 2288, 2296, - 2304, 2310, 2316, 2322, 2328, 2334, 2340, 2346, 2352, 2358, - 2364, 2370, 2376, 2382, 2388, 2394, 2400, 2406, 2412, 2418, - 2424, 2430, 2436, 2442, 2448, 2454, 2460, 2466, 2472, 2478, - 2484, 2490, 2496, 2502, 2508, 2514, 2520, 2524, 2528, 2532, - 2537, 2542, 2547, 2552, 2557, 2562, 2567, 2572, 2577, 2582, - 2587, 2592, 2597, 2602, 2608, 2614, 2620, 2626, 2632, 2638, - 2644, 2650, 2656, 2662, 2668, 2674, 2680, 2685, 2690, 2695, - 2700, 2705, 2710, 2715, 2720, 2725, 2730, 2735, 2740, 2745, - 2750, 2755, 2760, 2765, 2770, 2775, 2780, 2785, 2790, 2795, - 2800, 2805, 2810, 2815, 2820, 2825, 2830, 2835, 2840, 2845, - 2851, 2857, 2862, 2867, 2872, 2878, 2883, 2888, 2893, 2899, - 2904, 2909, 2914, 2920, 2925, 2930, 2935, 2941, 2947, 2953, - 2959, 2964, 2970, 2976, 2982, 2987, 2992, 2997, 3002, 3007, - 3013, 3018, 3023, 3028, 3034, 3039, 3044, 3049, 3055, 3060, - 3065, 3070, 3076, 3081, 3086, 3091, 3097, 3102, 3107, 3112, - 3118, 3123, 3128, 3133, 3139, 3144, 3149, 3154, 3160, 3165, - 3170, 3175, 3181, 3186, 3191, 3196, 3202, 3207, 3212, 3217, - 3223, 3228, 3233, 3238, 3244, 3249, 3254, 3259, 3265, 3270, - 3275, 3280, 3286, 3291, 3296, 3301, 3307, 3312, 3317, 3322, - 3327, 3332, 3337, 3342, 3347, 3352, 3357, 3362, 3367, 3372, - 3377, 3382, 3387, 3392, 3397, 3402, 3407, 3412, 3417, 3422, - 3427, 3433, 3439, 3445, 3451, 3457, 3463, 3469, 3476, 3483, - 3489, 3495, 3501, 3507, 3514, 3521, 3528, 3535, 3539, 3543, - 3548, 3564, 3569, 3574, 3582, 3582, 3599, 3599, 3609, 3612, - 3625, 3647, 3674, 3678, 3684, 3689, 3700, 3703, 3709, 3715, - 3724, 3727, 3733, 3737, 3738, 3744, 3745, 3746, 3747, 3748, - 3749, 3750, 3751, 3755, 3763, 3764, 3768, 3764, 3780, 3781, - 3785, 3785, 3792, 3792, 3806, 3809, 3817, 3825, 3836, 3837, - 3841, 3844, 3851, 3858, 3862, 3870, 3874, 3887, 3890, 3897, - 3897, 3917, 3920, 3926, 3938, 3950, 3953, 3961, 3961, 3976, - 3976, 3994, 3994, 4015, 4018, 4024, 4027, 4033, 4037, 4044, - 4049, 4054, 4061, 4064, 4068, 4072, 4076, 4085, 4089, 4098, - 4101, 4104, 4112, 4112, 4154, 4159, 4162, 4167, 4170, 4175, - 4178, 4183, 4186, 4191, 4194, 4199, 4202, 4207, 4211, 4216, - 4220, 4225, 4229, 4236, 4239, 4244, 4247, 4250, 4253, 4256, - 4261, 4270, 4281, 4286, 4294, 4298, 4303, 4307, 4312, 4316, - 4321, 4325, 4332, 4335, 4340, 4343, 4346, 4349, 4354, 4357, - 4362, 4368, 4371, 4374, 4377, 4382, 4386, 4391, 4395, 4400, - 4404, 4411, 4414, 4419, 4422, 4427, 4430, 4436, 4439, 4444, - 4447 + 481, 487, 505, 530, 538, 543, 570, 578, 584, 588, + 592, 612, 613, 614, 615, 621, 622, 627, 632, 641, + 642, 647, 655, 656, 662, 671, 672, 677, 682, 687, + 695, 696, 705, 717, 718, 727, 728, 737, 738, 747, + 748, 756, 757, 765, 766, 774, 775, 775, 793, 794, + 810, 814, 818, 822, 827, 831, 835, 839, 843, 847, + 851, 858, 861, 872, 879, 884, 891, 896, 901, 908, + 912, 916, 920, 925, 930, 939, 939, 950, 954, 961, + 966, 974, 982, 994, 997, 1004, 1017, 1040, 1063, 1078, + 1103, 1114, 1124, 1134, 1144, 1153, 1156, 1160, 1164, 1169, + 1177, 1182, 1187, 1192, 1197, 1206, 1216, 1243, 1252, 1259, + 1266, 1273, 1280, 1288, 1296, 1306, 1316, 1323, 1333, 1339, + 1342, 1349, 1353, 1357, 1365, 1374, 1377, 1388, 1391, 1394, + 1398, 1402, 1406, 1410, 1413, 1418, 1422, 1427, 1435, 1439, + 1444, 1450, 1456, 1463, 1468, 1473, 1481, 1486, 1498, 1512, + 1518, 1523, 1531, 1539, 1547, 1555, 1563, 1571, 1579, 1587, + 1595, 1602, 1609, 1613, 1618, 1623, 1628, 1633, 1638, 1643, + 1647, 1651, 1655, 1659, 1665, 1671, 1681, 1688, 1691, 1699, + 1706, 1717, 1722, 1730, 1734, 1744, 1747, 1753, 1759, 1765, + 1773, 1783, 1787, 1791, 1795, 1800, 1804, 1809, 1814, 1819, + 1824, 1829, 1834, 1839, 1844, 1849, 1855, 1861, 1867, 1872, + 1877, 1882, 1887, 1892, 1897, 1902, 1907, 1912, 1917, 1922, + 1927, 1934, 1939, 1944, 1949, 1954, 1959, 1964, 1969, 1974, + 1979, 1984, 1989, 1997, 2005, 2013, 2019, 2025, 2031, 2037, + 2043, 2049, 2055, 2061, 2067, 2073, 2079, 2085, 2091, 2097, + 2103, 2109, 2115, 2121, 2127, 2133, 2139, 2145, 2151, 2157, + 2163, 2169, 2175, 2181, 2187, 2193, 2199, 2205, 2211, 2219, + 2227, 2235, 2243, 2251, 2259, 2267, 2275, 2283, 2291, 2299, + 2307, 2313, 2319, 2325, 2331, 2337, 2343, 2349, 2355, 2361, + 2367, 2373, 2379, 2385, 2391, 2397, 2403, 2409, 2415, 2421, + 2427, 2433, 2439, 2445, 2451, 2457, 2463, 2469, 2475, 2481, + 2487, 2493, 2499, 2505, 2511, 2517, 2523, 2527, 2531, 2535, + 2540, 2545, 2550, 2555, 2560, 2565, 2570, 2575, 2580, 2585, + 2590, 2595, 2600, 2605, 2611, 2617, 2623, 2629, 2635, 2641, + 2647, 2653, 2659, 2665, 2671, 2677, 2683, 2688, 2693, 2698, + 2703, 2708, 2713, 2718, 2723, 2728, 2733, 2738, 2743, 2748, + 2753, 2758, 2763, 2768, 2773, 2778, 2783, 2788, 2793, 2798, + 2803, 2808, 2813, 2818, 2823, 2828, 2833, 2838, 2843, 2848, + 2854, 2860, 2865, 2870, 2875, 2881, 2886, 2891, 2896, 2902, + 2907, 2912, 2917, 2923, 2928, 2933, 2938, 2944, 2950, 2956, + 2962, 2967, 2973, 2979, 2985, 2990, 2995, 3000, 3005, 3010, + 3016, 3021, 3026, 3031, 3037, 3042, 3047, 3052, 3058, 3063, + 3068, 3073, 3079, 3084, 3089, 3094, 3100, 3105, 3110, 3115, + 3121, 3126, 3131, 3136, 3142, 3147, 3152, 3157, 3163, 3168, + 3173, 3178, 3184, 3189, 3194, 3199, 3205, 3210, 3215, 3220, + 3226, 3231, 3236, 3241, 3247, 3252, 3257, 3262, 3268, 3273, + 3278, 3283, 3289, 3294, 3299, 3304, 3310, 3315, 3320, 3325, + 3330, 3335, 3340, 3345, 3350, 3355, 3360, 3365, 3370, 3375, + 3380, 3385, 3390, 3395, 3400, 3405, 3410, 3415, 3420, 3425, + 3430, 3436, 3442, 3448, 3454, 3460, 3466, 3472, 3479, 3486, + 3492, 3498, 3504, 3510, 3517, 3524, 3531, 3538, 3542, 3546, + 3551, 3567, 3572, 3577, 3585, 3585, 3602, 3602, 3612, 3615, + 3628, 3650, 3677, 3681, 3687, 3692, 3703, 3706, 3712, 3718, + 3727, 3730, 3736, 3740, 3741, 3747, 3748, 3749, 3750, 3751, + 3752, 3753, 3754, 3758, 3766, 3767, 3771, 3767, 3783, 3784, + 3788, 3788, 3795, 3795, 3809, 3812, 3820, 3828, 3839, 3840, + 3844, 3847, 3854, 3861, 3865, 3873, 3877, 3890, 3893, 3900, + 3900, 3920, 3923, 3929, 3941, 3953, 3956, 3964, 3964, 3979, + 3979, 3997, 3997, 4018, 4021, 4027, 4030, 4036, 4040, 4047, + 4052, 4057, 4064, 4067, 4071, 4075, 4079, 4088, 4092, 4101, + 4104, 4107, 4115, 4115, 4157, 4162, 4165, 4170, 4173, 4178, + 4181, 4186, 4189, 4194, 4197, 4202, 4205, 4210, 4214, 4219, + 4223, 4228, 4232, 4239, 4242, 4247, 4250, 4253, 4256, 4259, + 4264, 4273, 4284, 4289, 4297, 4301, 4306, 4310, 4315, 4319, + 4324, 4328, 4335, 4338, 4343, 4346, 4349, 4352, 4357, 4360, + 4365, 4371, 4374, 4377, 4380, 4385, 4389, 4394, 4398, 4403, + 4407, 4414, 4417, 4422, 4425, 4430, 4433, 4439, 4442, 4447, + 4450 }; #endif @@ -5486,7 +5486,10 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); && (yyvsp[0].interm.intermTypedNode)->getType().containsOpaque()) { TIntermNode* remappedNode = parseContext.vkRelaxedRemapFunctionArgument((yyvsp[-1].lex).loc, (yyvsp[-2].interm).function, (yyvsp[0].interm.intermTypedNode)); - (yyval.interm).intermNode = parseContext.intermediate.mergeAggregate((yyvsp[-2].interm).intermNode, remappedNode, (yyvsp[-1].lex).loc); + if (remappedNode == (yyvsp[0].interm.intermTypedNode)) + (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); + else + (yyval.interm).intermNode = parseContext.intermediate.mergeAggregate((yyvsp[-2].interm).intermNode, remappedNode, (yyvsp[-1].lex).loc); (yyval.interm).function = (yyvsp[-2].interm).function; } else @@ -5499,29 +5502,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-2].interm).intermNode, (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); } } -#line 5503 "MachineIndependent/glslang_tab.cpp" +#line 5506 "MachineIndependent/glslang_tab.cpp" break; case 33: /* function_call_header: function_identifier LEFT_PAREN */ -#line 527 "MachineIndependent/glslang.y" +#line 530 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-1].interm); } -#line 5511 "MachineIndependent/glslang_tab.cpp" +#line 5514 "MachineIndependent/glslang_tab.cpp" break; case 34: /* function_identifier: type_specifier */ -#line 535 "MachineIndependent/glslang.y" +#line 538 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5521 "MachineIndependent/glslang_tab.cpp" +#line 5524 "MachineIndependent/glslang_tab.cpp" break; case 35: /* function_identifier: postfix_expression */ -#line 540 "MachineIndependent/glslang.y" +#line 543 "MachineIndependent/glslang.y" { // // Should be a method or subroutine call, but we haven't recognized the arguments yet. @@ -5549,50 +5552,50 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).function = new TFunction(empty, TType(EbtVoid), EOpNull); } } -#line 5553 "MachineIndependent/glslang_tab.cpp" +#line 5556 "MachineIndependent/glslang_tab.cpp" break; case 36: /* function_identifier: non_uniform_qualifier */ -#line 567 "MachineIndependent/glslang.y" +#line 570 "MachineIndependent/glslang.y" { // Constructor (yyval.interm).intermNode = 0; (yyval.interm).function = parseContext.handleConstructorCall((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 5563 "MachineIndependent/glslang_tab.cpp" +#line 5566 "MachineIndependent/glslang_tab.cpp" break; case 37: /* unary_expression: postfix_expression */ -#line 575 "MachineIndependent/glslang.y" +#line 578 "MachineIndependent/glslang.y" { parseContext.variableCheck((yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); if (TIntermMethod* method = (yyvsp[0].interm.intermTypedNode)->getAsMethodNode()) parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "incomplete method syntax", method->getMethodName().c_str(), ""); } -#line 5574 "MachineIndependent/glslang_tab.cpp" +#line 5577 "MachineIndependent/glslang_tab.cpp" break; case 38: /* unary_expression: INC_OP unary_expression */ -#line 581 "MachineIndependent/glslang.y" +#line 584 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "++", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "++", EOpPreIncrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5583 "MachineIndependent/glslang_tab.cpp" +#line 5586 "MachineIndependent/glslang_tab.cpp" break; case 39: /* unary_expression: DEC_OP unary_expression */ -#line 585 "MachineIndependent/glslang.y" +#line 588 "MachineIndependent/glslang.y" { parseContext.lValueErrorCheck((yyvsp[-1].lex).loc, "--", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.handleUnaryMath((yyvsp[-1].lex).loc, "--", EOpPreDecrement, (yyvsp[0].interm.intermTypedNode)); } -#line 5592 "MachineIndependent/glslang_tab.cpp" +#line 5595 "MachineIndependent/glslang_tab.cpp" break; case 40: /* unary_expression: unary_operator unary_expression */ -#line 589 "MachineIndependent/glslang.y" +#line 592 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).op != EOpNull) { char errorOp[2] = {0, 0}; @@ -5609,179 +5612,179 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode)->getAsConstantUnion()->setExpression(); } } -#line 5613 "MachineIndependent/glslang_tab.cpp" +#line 5616 "MachineIndependent/glslang_tab.cpp" break; case 41: /* unary_operator: PLUS */ -#line 609 "MachineIndependent/glslang.y" +#line 612 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNull; } -#line 5619 "MachineIndependent/glslang_tab.cpp" +#line 5622 "MachineIndependent/glslang_tab.cpp" break; case 42: /* unary_operator: DASH */ -#line 610 "MachineIndependent/glslang.y" +#line 613 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpNegative; } -#line 5625 "MachineIndependent/glslang_tab.cpp" +#line 5628 "MachineIndependent/glslang_tab.cpp" break; case 43: /* unary_operator: BANG */ -#line 611 "MachineIndependent/glslang.y" +#line 614 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLogicalNot; } -#line 5631 "MachineIndependent/glslang_tab.cpp" +#line 5634 "MachineIndependent/glslang_tab.cpp" break; case 44: /* unary_operator: TILDE */ -#line 612 "MachineIndependent/glslang.y" +#line 615 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpBitwiseNot; parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise not"); } -#line 5638 "MachineIndependent/glslang_tab.cpp" +#line 5641 "MachineIndependent/glslang_tab.cpp" break; case 45: /* multiplicative_expression: unary_expression */ -#line 618 "MachineIndependent/glslang.y" +#line 621 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5644 "MachineIndependent/glslang_tab.cpp" +#line 5647 "MachineIndependent/glslang_tab.cpp" break; case 46: /* multiplicative_expression: multiplicative_expression STAR unary_expression */ -#line 619 "MachineIndependent/glslang.y" +#line 622 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "*", EOpMul, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5654 "MachineIndependent/glslang_tab.cpp" +#line 5657 "MachineIndependent/glslang_tab.cpp" break; case 47: /* multiplicative_expression: multiplicative_expression SLASH unary_expression */ -#line 624 "MachineIndependent/glslang.y" +#line 627 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "/", EOpDiv, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5664 "MachineIndependent/glslang_tab.cpp" +#line 5667 "MachineIndependent/glslang_tab.cpp" break; case 48: /* multiplicative_expression: multiplicative_expression PERCENT unary_expression */ -#line 629 "MachineIndependent/glslang.y" +#line 632 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "%"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "%", EOpMod, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5675 "MachineIndependent/glslang_tab.cpp" +#line 5678 "MachineIndependent/glslang_tab.cpp" break; case 49: /* additive_expression: multiplicative_expression */ -#line 638 "MachineIndependent/glslang.y" +#line 641 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5681 "MachineIndependent/glslang_tab.cpp" +#line 5684 "MachineIndependent/glslang_tab.cpp" break; case 50: /* additive_expression: additive_expression PLUS multiplicative_expression */ -#line 639 "MachineIndependent/glslang.y" +#line 642 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "+", EOpAdd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5691 "MachineIndependent/glslang_tab.cpp" +#line 5694 "MachineIndependent/glslang_tab.cpp" break; case 51: /* additive_expression: additive_expression DASH multiplicative_expression */ -#line 644 "MachineIndependent/glslang.y" +#line 647 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "-", EOpSub, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5701 "MachineIndependent/glslang_tab.cpp" +#line 5704 "MachineIndependent/glslang_tab.cpp" break; case 52: /* shift_expression: additive_expression */ -#line 652 "MachineIndependent/glslang.y" +#line 655 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5707 "MachineIndependent/glslang_tab.cpp" +#line 5710 "MachineIndependent/glslang_tab.cpp" break; case 53: /* shift_expression: shift_expression LEFT_OP additive_expression */ -#line 653 "MachineIndependent/glslang.y" +#line 656 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift left"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<<", EOpLeftShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5718 "MachineIndependent/glslang_tab.cpp" +#line 5721 "MachineIndependent/glslang_tab.cpp" break; case 54: /* shift_expression: shift_expression RIGHT_OP additive_expression */ -#line 659 "MachineIndependent/glslang.y" +#line 662 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bit shift right"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">>", EOpRightShift, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5729 "MachineIndependent/glslang_tab.cpp" +#line 5732 "MachineIndependent/glslang_tab.cpp" break; case 55: /* relational_expression: shift_expression */ -#line 668 "MachineIndependent/glslang.y" +#line 671 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5735 "MachineIndependent/glslang_tab.cpp" +#line 5738 "MachineIndependent/glslang_tab.cpp" break; case 56: /* relational_expression: relational_expression LEFT_ANGLE shift_expression */ -#line 669 "MachineIndependent/glslang.y" +#line 672 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<", EOpLessThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5745 "MachineIndependent/glslang_tab.cpp" +#line 5748 "MachineIndependent/glslang_tab.cpp" break; case 57: /* relational_expression: relational_expression RIGHT_ANGLE shift_expression */ -#line 674 "MachineIndependent/glslang.y" +#line 677 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">", EOpGreaterThan, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5755 "MachineIndependent/glslang_tab.cpp" +#line 5758 "MachineIndependent/glslang_tab.cpp" break; case 58: /* relational_expression: relational_expression LE_OP shift_expression */ -#line 679 "MachineIndependent/glslang.y" +#line 682 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "<=", EOpLessThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5765 "MachineIndependent/glslang_tab.cpp" +#line 5768 "MachineIndependent/glslang_tab.cpp" break; case 59: /* relational_expression: relational_expression GE_OP shift_expression */ -#line 684 "MachineIndependent/glslang.y" +#line 687 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, ">=", EOpGreaterThanEqual, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5775 "MachineIndependent/glslang_tab.cpp" +#line 5778 "MachineIndependent/glslang_tab.cpp" break; case 60: /* equality_expression: relational_expression */ -#line 692 "MachineIndependent/glslang.y" +#line 695 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5781 "MachineIndependent/glslang_tab.cpp" +#line 5784 "MachineIndependent/glslang_tab.cpp" break; case 61: /* equality_expression: equality_expression EQ_OP relational_expression */ -#line 693 "MachineIndependent/glslang.y" +#line 696 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "=="); @@ -5791,11 +5794,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5795 "MachineIndependent/glslang_tab.cpp" +#line 5798 "MachineIndependent/glslang_tab.cpp" break; case 62: /* equality_expression: equality_expression NE_OP relational_expression */ -#line 702 "MachineIndependent/glslang.y" +#line 705 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array comparison"); parseContext.opaqueCheck((yyvsp[-1].lex).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "!="); @@ -5805,124 +5808,124 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5809 "MachineIndependent/glslang_tab.cpp" +#line 5812 "MachineIndependent/glslang_tab.cpp" break; case 63: /* and_expression: equality_expression */ -#line 714 "MachineIndependent/glslang.y" +#line 717 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5815 "MachineIndependent/glslang_tab.cpp" +#line 5818 "MachineIndependent/glslang_tab.cpp" break; case 64: /* and_expression: and_expression AMPERSAND equality_expression */ -#line 715 "MachineIndependent/glslang.y" +#line 718 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise and"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&", EOpAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5826 "MachineIndependent/glslang_tab.cpp" +#line 5829 "MachineIndependent/glslang_tab.cpp" break; case 65: /* exclusive_or_expression: and_expression */ -#line 724 "MachineIndependent/glslang.y" +#line 727 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5832 "MachineIndependent/glslang_tab.cpp" +#line 5835 "MachineIndependent/glslang_tab.cpp" break; case 66: /* exclusive_or_expression: exclusive_or_expression CARET and_expression */ -#line 725 "MachineIndependent/glslang.y" +#line 728 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise exclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^", EOpExclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5843 "MachineIndependent/glslang_tab.cpp" +#line 5846 "MachineIndependent/glslang_tab.cpp" break; case 67: /* inclusive_or_expression: exclusive_or_expression */ -#line 734 "MachineIndependent/glslang.y" +#line 737 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5849 "MachineIndependent/glslang_tab.cpp" +#line 5852 "MachineIndependent/glslang_tab.cpp" break; case 68: /* inclusive_or_expression: inclusive_or_expression VERTICAL_BAR exclusive_or_expression */ -#line 735 "MachineIndependent/glslang.y" +#line 738 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[-1].lex).loc, "bitwise inclusive or"); (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "|", EOpInclusiveOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 5860 "MachineIndependent/glslang_tab.cpp" +#line 5863 "MachineIndependent/glslang_tab.cpp" break; case 69: /* logical_and_expression: inclusive_or_expression */ -#line 744 "MachineIndependent/glslang.y" +#line 747 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5866 "MachineIndependent/glslang_tab.cpp" +#line 5869 "MachineIndependent/glslang_tab.cpp" break; case 70: /* logical_and_expression: logical_and_expression AND_OP inclusive_or_expression */ -#line 745 "MachineIndependent/glslang.y" +#line 748 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "&&", EOpLogicalAnd, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5876 "MachineIndependent/glslang_tab.cpp" +#line 5879 "MachineIndependent/glslang_tab.cpp" break; case 71: /* logical_xor_expression: logical_and_expression */ -#line 753 "MachineIndependent/glslang.y" +#line 756 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5882 "MachineIndependent/glslang_tab.cpp" +#line 5885 "MachineIndependent/glslang_tab.cpp" break; case 72: /* logical_xor_expression: logical_xor_expression XOR_OP logical_and_expression */ -#line 754 "MachineIndependent/glslang.y" +#line 757 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "^^", EOpLogicalXor, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5892 "MachineIndependent/glslang_tab.cpp" +#line 5895 "MachineIndependent/glslang_tab.cpp" break; case 73: /* logical_or_expression: logical_xor_expression */ -#line 762 "MachineIndependent/glslang.y" +#line 765 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5898 "MachineIndependent/glslang_tab.cpp" +#line 5901 "MachineIndependent/glslang_tab.cpp" break; case 74: /* logical_or_expression: logical_or_expression OR_OP logical_xor_expression */ -#line 763 "MachineIndependent/glslang.y" +#line 766 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.handleBinaryMath((yyvsp[-1].lex).loc, "||", EOpLogicalOr, (yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); if ((yyval.interm.intermTypedNode) == 0) (yyval.interm.intermTypedNode) = parseContext.intermediate.addConstantUnion(false, (yyvsp[-1].lex).loc); } -#line 5908 "MachineIndependent/glslang_tab.cpp" +#line 5911 "MachineIndependent/glslang_tab.cpp" break; case 75: /* conditional_expression: logical_or_expression */ -#line 771 "MachineIndependent/glslang.y" +#line 774 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5914 "MachineIndependent/glslang_tab.cpp" +#line 5917 "MachineIndependent/glslang_tab.cpp" break; case 76: /* $@1: %empty */ -#line 772 "MachineIndependent/glslang.y" +#line 775 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 5922 "MachineIndependent/glslang_tab.cpp" +#line 5925 "MachineIndependent/glslang_tab.cpp" break; case 77: /* conditional_expression: logical_or_expression QUESTION $@1 expression COLON assignment_expression */ -#line 775 "MachineIndependent/glslang.y" +#line 778 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-5].interm.intermTypedNode)); @@ -5935,17 +5938,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 5939 "MachineIndependent/glslang_tab.cpp" +#line 5942 "MachineIndependent/glslang_tab.cpp" break; case 78: /* assignment_expression: conditional_expression */ -#line 790 "MachineIndependent/glslang.y" +#line 793 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 5945 "MachineIndependent/glslang_tab.cpp" +#line 5948 "MachineIndependent/glslang_tab.cpp" break; case 79: /* assignment_expression: unary_expression assignment_operator assignment_expression */ -#line 791 "MachineIndependent/glslang.y" +#line 794 "MachineIndependent/glslang.y" { parseContext.arrayObjectCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "array assignment"); parseContext.opaqueCheck((yyvsp[-1].interm).loc, (yyvsp[-2].interm.intermTypedNode)->getType(), "="); @@ -5959,119 +5962,119 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } } -#line 5963 "MachineIndependent/glslang_tab.cpp" +#line 5966 "MachineIndependent/glslang_tab.cpp" break; case 80: /* assignment_operator: EQUAL */ -#line 807 "MachineIndependent/glslang.y" +#line 810 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAssign; } -#line 5972 "MachineIndependent/glslang_tab.cpp" +#line 5975 "MachineIndependent/glslang_tab.cpp" break; case 81: /* assignment_operator: MUL_ASSIGN */ -#line 811 "MachineIndependent/glslang.y" +#line 814 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpMulAssign; } -#line 5981 "MachineIndependent/glslang_tab.cpp" +#line 5984 "MachineIndependent/glslang_tab.cpp" break; case 82: /* assignment_operator: DIV_ASSIGN */ -#line 815 "MachineIndependent/glslang.y" +#line 818 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpDivAssign; } -#line 5990 "MachineIndependent/glslang_tab.cpp" +#line 5993 "MachineIndependent/glslang_tab.cpp" break; case 83: /* assignment_operator: MOD_ASSIGN */ -#line 819 "MachineIndependent/glslang.y" +#line 822 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "%="); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpModAssign; } -#line 6000 "MachineIndependent/glslang_tab.cpp" +#line 6003 "MachineIndependent/glslang_tab.cpp" break; case 84: /* assignment_operator: ADD_ASSIGN */ -#line 824 "MachineIndependent/glslang.y" +#line 827 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAddAssign; } -#line 6009 "MachineIndependent/glslang_tab.cpp" +#line 6012 "MachineIndependent/glslang_tab.cpp" break; case 85: /* assignment_operator: SUB_ASSIGN */ -#line 828 "MachineIndependent/glslang.y" +#line 831 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpSubAssign; } -#line 6018 "MachineIndependent/glslang_tab.cpp" +#line 6021 "MachineIndependent/glslang_tab.cpp" break; case 86: /* assignment_operator: LEFT_ASSIGN */ -#line 832 "MachineIndependent/glslang.y" +#line 835 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift left assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpLeftShiftAssign; } -#line 6027 "MachineIndependent/glslang_tab.cpp" +#line 6030 "MachineIndependent/glslang_tab.cpp" break; case 87: /* assignment_operator: RIGHT_ASSIGN */ -#line 836 "MachineIndependent/glslang.y" +#line 839 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bit-shift right assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpRightShiftAssign; } -#line 6036 "MachineIndependent/glslang_tab.cpp" +#line 6039 "MachineIndependent/glslang_tab.cpp" break; case 88: /* assignment_operator: AND_ASSIGN */ -#line 840 "MachineIndependent/glslang.y" +#line 843 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-and assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpAndAssign; } -#line 6045 "MachineIndependent/glslang_tab.cpp" +#line 6048 "MachineIndependent/glslang_tab.cpp" break; case 89: /* assignment_operator: XOR_ASSIGN */ -#line 844 "MachineIndependent/glslang.y" +#line 847 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-xor assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpExclusiveOrAssign; } -#line 6054 "MachineIndependent/glslang_tab.cpp" +#line 6057 "MachineIndependent/glslang_tab.cpp" break; case 90: /* assignment_operator: OR_ASSIGN */ -#line 848 "MachineIndependent/glslang.y" +#line 851 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "bitwise-or assign"); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).op = EOpInclusiveOrAssign; } -#line 6063 "MachineIndependent/glslang_tab.cpp" +#line 6066 "MachineIndependent/glslang_tab.cpp" break; case 91: /* expression: assignment_expression */ -#line 855 "MachineIndependent/glslang.y" +#line 858 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6071 "MachineIndependent/glslang_tab.cpp" +#line 6074 "MachineIndependent/glslang_tab.cpp" break; case 92: /* expression: expression COMMA assignment_expression */ -#line 858 "MachineIndependent/glslang.y" +#line 861 "MachineIndependent/glslang.y" { parseContext.samplerConstructorLocationCheck((yyvsp[-1].lex).loc, ",", (yyvsp[0].interm.intermTypedNode)); (yyval.interm.intermTypedNode) = parseContext.intermediate.addComma((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode), (yyvsp[-1].lex).loc); @@ -6080,30 +6083,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } } -#line 6084 "MachineIndependent/glslang_tab.cpp" +#line 6087 "MachineIndependent/glslang_tab.cpp" break; case 93: /* constant_expression: conditional_expression */ -#line 869 "MachineIndependent/glslang.y" +#line 872 "MachineIndependent/glslang.y" { parseContext.constantValueCheck((yyvsp[0].interm.intermTypedNode), ""); (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 6093 "MachineIndependent/glslang_tab.cpp" +#line 6096 "MachineIndependent/glslang_tab.cpp" break; case 94: /* declaration: function_prototype SEMICOLON */ -#line 876 "MachineIndependent/glslang.y" +#line 879 "MachineIndependent/glslang.y" { parseContext.handleFunctionDeclarator((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).function, true /* prototype */); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6103 "MachineIndependent/glslang_tab.cpp" +#line 6106 "MachineIndependent/glslang_tab.cpp" break; case 95: /* declaration: spirv_instruction_qualifier function_prototype SEMICOLON */ -#line 881 "MachineIndependent/glslang.y" +#line 884 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[-1].interm).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V instruction qualifier"); (yyvsp[-1].interm).function->setSpirvInstruction(*(yyvsp[-2].interm.spirvInst)); // Attach SPIR-V intruction qualifier @@ -6111,31 +6114,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // TODO: 4.0 functionality: subroutines: make the identifier a user type for this signature } -#line 6115 "MachineIndependent/glslang_tab.cpp" +#line 6118 "MachineIndependent/glslang_tab.cpp" break; case 96: /* declaration: spirv_execution_mode_qualifier SEMICOLON */ -#line 888 "MachineIndependent/glslang.y" +#line 891 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "SPIR-V execution mode qualifier"); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V execution mode qualifier"); (yyval.interm.intermNode) = 0; } -#line 6125 "MachineIndependent/glslang_tab.cpp" +#line 6128 "MachineIndependent/glslang_tab.cpp" break; case 97: /* declaration: init_declarator_list SEMICOLON */ -#line 893 "MachineIndependent/glslang.y" +#line 896 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm).intermNode && (yyvsp[-1].interm).intermNode->getAsAggregate()) (yyvsp[-1].interm).intermNode->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm).intermNode; } -#line 6135 "MachineIndependent/glslang_tab.cpp" +#line 6138 "MachineIndependent/glslang_tab.cpp" break; case 98: /* declaration: PRECISION precision_qualifier type_specifier SEMICOLON */ -#line 898 "MachineIndependent/glslang.y" +#line 901 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[-3].lex).loc, ENoProfile, 130, 0, "precision statement"); // lazy setting of the previous scope's defaults, has effect only the first time it is called in a particular scope @@ -6143,75 +6146,75 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.setDefaultPrecision((yyvsp[-3].lex).loc, (yyvsp[-1].interm.type), (yyvsp[-2].interm.type).qualifier.precision); (yyval.interm.intermNode) = 0; } -#line 6147 "MachineIndependent/glslang_tab.cpp" +#line 6150 "MachineIndependent/glslang_tab.cpp" break; case 99: /* declaration: block_structure SEMICOLON */ -#line 905 "MachineIndependent/glslang.y" +#line 908 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-1].interm).loc, *(yyvsp[-1].interm).typeList); (yyval.interm.intermNode) = 0; } -#line 6156 "MachineIndependent/glslang_tab.cpp" +#line 6159 "MachineIndependent/glslang_tab.cpp" break; case 100: /* declaration: block_structure IDENTIFIER SEMICOLON */ -#line 909 "MachineIndependent/glslang.y" +#line 912 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-2].interm).loc, *(yyvsp[-2].interm).typeList, (yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6165 "MachineIndependent/glslang_tab.cpp" +#line 6168 "MachineIndependent/glslang_tab.cpp" break; case 101: /* declaration: block_structure IDENTIFIER array_specifier SEMICOLON */ -#line 913 "MachineIndependent/glslang.y" +#line 916 "MachineIndependent/glslang.y" { parseContext.declareBlock((yyvsp[-3].interm).loc, *(yyvsp[-3].interm).typeList, (yyvsp[-2].lex).string, (yyvsp[-1].interm).arraySizes); (yyval.interm.intermNode) = 0; } -#line 6174 "MachineIndependent/glslang_tab.cpp" +#line 6177 "MachineIndependent/glslang_tab.cpp" break; case 102: /* declaration: type_qualifier SEMICOLON */ -#line 917 "MachineIndependent/glslang.y" +#line 920 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier); parseContext.updateStandaloneQualifierDefaults((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type)); (yyval.interm.intermNode) = 0; } -#line 6184 "MachineIndependent/glslang_tab.cpp" +#line 6187 "MachineIndependent/glslang_tab.cpp" break; case 103: /* declaration: type_qualifier IDENTIFIER SEMICOLON */ -#line 922 "MachineIndependent/glslang.y" +#line 925 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).shaderQualifiers); parseContext.addQualifierToExisting((yyvsp[-2].interm.type).loc, (yyvsp[-2].interm.type).qualifier, *(yyvsp[-1].lex).string); (yyval.interm.intermNode) = 0; } -#line 6194 "MachineIndependent/glslang_tab.cpp" +#line 6197 "MachineIndependent/glslang_tab.cpp" break; case 104: /* declaration: type_qualifier IDENTIFIER identifier_list SEMICOLON */ -#line 927 "MachineIndependent/glslang.y" +#line 930 "MachineIndependent/glslang.y" { parseContext.checkNoShaderLayouts((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).shaderQualifiers); (yyvsp[-1].interm.identifierList)->push_back((yyvsp[-2].lex).string); parseContext.addQualifierToExisting((yyvsp[-3].interm.type).loc, (yyvsp[-3].interm.type).qualifier, *(yyvsp[-1].interm.identifierList)); (yyval.interm.intermNode) = 0; } -#line 6205 "MachineIndependent/glslang_tab.cpp" +#line 6208 "MachineIndependent/glslang_tab.cpp" break; case 105: /* $@2: %empty */ -#line 936 "MachineIndependent/glslang.y" +#line 939 "MachineIndependent/glslang.y" { parseContext.nestedBlockCheck((yyvsp[-2].interm.type).loc); } -#line 6211 "MachineIndependent/glslang_tab.cpp" +#line 6214 "MachineIndependent/glslang_tab.cpp" break; case 106: /* block_structure: type_qualifier IDENTIFIER LEFT_BRACE $@2 struct_declaration_list RIGHT_BRACE */ -#line 936 "MachineIndependent/glslang.y" +#line 939 "MachineIndependent/glslang.y" { --parseContext.blockNestingLevel; parseContext.blockName = (yyvsp[-4].lex).string; @@ -6221,39 +6224,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-5].interm.type).loc; (yyval.interm).typeList = (yyvsp[-1].interm.typeList); } -#line 6225 "MachineIndependent/glslang_tab.cpp" +#line 6228 "MachineIndependent/glslang_tab.cpp" break; case 107: /* identifier_list: COMMA IDENTIFIER */ -#line 947 "MachineIndependent/glslang.y" +#line 950 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = new TIdentifierList; (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6234 "MachineIndependent/glslang_tab.cpp" +#line 6237 "MachineIndependent/glslang_tab.cpp" break; case 108: /* identifier_list: identifier_list COMMA IDENTIFIER */ -#line 951 "MachineIndependent/glslang.y" +#line 954 "MachineIndependent/glslang.y" { (yyval.interm.identifierList) = (yyvsp[-2].interm.identifierList); (yyval.interm.identifierList)->push_back((yyvsp[0].lex).string); } -#line 6243 "MachineIndependent/glslang_tab.cpp" +#line 6246 "MachineIndependent/glslang_tab.cpp" break; case 109: /* function_prototype: function_declarator RIGHT_PAREN */ -#line 958 "MachineIndependent/glslang.y" +#line 961 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); (yyval.interm).loc = (yyvsp[0].lex).loc; } -#line 6253 "MachineIndependent/glslang_tab.cpp" +#line 6256 "MachineIndependent/glslang_tab.cpp" break; case 110: /* function_prototype: function_declarator RIGHT_PAREN attribute */ -#line 963 "MachineIndependent/glslang.y" +#line 966 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6262,11 +6265,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[-1].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6266 "MachineIndependent/glslang_tab.cpp" +#line 6269 "MachineIndependent/glslang_tab.cpp" break; case 111: /* function_prototype: attribute function_declarator RIGHT_PAREN */ -#line 971 "MachineIndependent/glslang.y" +#line 974 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-1].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6275,11 +6278,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.requireExtensions((yyvsp[0].lex).loc, 2, extensions, "attribute"); parseContext.handleFunctionAttributes((yyvsp[0].lex).loc, *(yyvsp[-2].interm.attributes)); } -#line 6279 "MachineIndependent/glslang_tab.cpp" +#line 6282 "MachineIndependent/glslang_tab.cpp" break; case 112: /* function_prototype: attribute function_declarator RIGHT_PAREN attribute */ -#line 979 "MachineIndependent/glslang.y" +#line 982 "MachineIndependent/glslang.y" { (yyval.interm).function = (yyvsp[-2].interm.function); if (parseContext.compileOnly) (yyval.interm).function->setExport(); @@ -6289,27 +6292,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[-3].interm.attributes)); parseContext.handleFunctionAttributes((yyvsp[-1].lex).loc, *(yyvsp[0].interm.attributes)); } -#line 6293 "MachineIndependent/glslang_tab.cpp" +#line 6296 "MachineIndependent/glslang_tab.cpp" break; case 113: /* function_declarator: function_header */ -#line 991 "MachineIndependent/glslang.y" +#line 994 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6301 "MachineIndependent/glslang_tab.cpp" +#line 6304 "MachineIndependent/glslang_tab.cpp" break; case 114: /* function_declarator: function_header_with_parameters */ -#line 994 "MachineIndependent/glslang.y" +#line 997 "MachineIndependent/glslang.y" { (yyval.interm.function) = (yyvsp[0].interm.function); } -#line 6309 "MachineIndependent/glslang_tab.cpp" +#line 6312 "MachineIndependent/glslang_tab.cpp" break; case 115: /* function_header_with_parameters: function_header parameter_declaration */ -#line 1001 "MachineIndependent/glslang.y" +#line 1004 "MachineIndependent/glslang.y" { // Add the parameter (yyval.interm.function) = (yyvsp[-1].interm.function); @@ -6323,11 +6326,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else delete (yyvsp[0].interm).param.type; } -#line 6327 "MachineIndependent/glslang_tab.cpp" +#line 6330 "MachineIndependent/glslang_tab.cpp" break; case 116: /* function_header_with_parameters: function_header_with_parameters COMMA parameter_declaration */ -#line 1014 "MachineIndependent/glslang.y" +#line 1017 "MachineIndependent/glslang.y" { // // Only first parameter of one-parameter functions can be void @@ -6348,11 +6351,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.vkRelaxedRemapFunctionParameter((yyvsp[-2].interm.function), (yyvsp[0].interm).param); } } -#line 6352 "MachineIndependent/glslang_tab.cpp" +#line 6355 "MachineIndependent/glslang_tab.cpp" break; case 117: /* function_header: fully_specified_type IDENTIFIER LEFT_PAREN */ -#line 1037 "MachineIndependent/glslang.y" +#line 1040 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).qualifier.storage != EvqGlobal && (yyvsp[-2].interm.type).qualifier.storage != EvqTemporary) { parseContext.error((yyvsp[-1].lex).loc, "no qualifiers allowed for function return", @@ -6372,11 +6375,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); function = new TFunction((yyvsp[-1].lex).string, type); (yyval.interm.function) = function; } -#line 6376 "MachineIndependent/glslang_tab.cpp" +#line 6379 "MachineIndependent/glslang_tab.cpp" break; case 118: /* parameter_declarator: type_specifier IDENTIFIER */ -#line 1060 "MachineIndependent/glslang.y" +#line 1063 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-1].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6392,11 +6395,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[0].lex).loc; (yyval.interm).param = param; } -#line 6396 "MachineIndependent/glslang_tab.cpp" +#line 6399 "MachineIndependent/glslang_tab.cpp" break; case 119: /* parameter_declarator: type_specifier IDENTIFIER array_specifier */ -#line 1075 "MachineIndependent/glslang.y" +#line 1078 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -6416,11 +6419,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).param = param; } -#line 6420 "MachineIndependent/glslang_tab.cpp" +#line 6423 "MachineIndependent/glslang_tab.cpp" break; case 120: /* parameter_declaration: type_qualifier parameter_declarator */ -#line 1100 "MachineIndependent/glslang.y" +#line 1103 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6432,11 +6435,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6436 "MachineIndependent/glslang_tab.cpp" +#line 6439 "MachineIndependent/glslang_tab.cpp" break; case 121: /* parameter_declaration: parameter_declarator */ -#line 1111 "MachineIndependent/glslang.y" +#line 1114 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6444,11 +6447,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6448 "MachineIndependent/glslang_tab.cpp" +#line 6451 "MachineIndependent/glslang_tab.cpp" break; case 122: /* parameter_declaration: type_qualifier parameter_type_specifier */ -#line 1121 "MachineIndependent/glslang.y" +#line 1124 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); if ((yyvsp[-1].interm.type).qualifier.precision != EpqNone) @@ -6459,11 +6462,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.parameterTypeCheck((yyvsp[0].interm).loc, (yyvsp[-1].interm.type).qualifier.storage, *(yyval.interm).param.type); parseContext.paramCheckFix((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, *(yyval.interm).param.type); } -#line 6463 "MachineIndependent/glslang_tab.cpp" +#line 6466 "MachineIndependent/glslang_tab.cpp" break; case 123: /* parameter_declaration: parameter_type_specifier */ -#line 1131 "MachineIndependent/glslang.y" +#line 1134 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); @@ -6471,118 +6474,118 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.paramCheckFixStorage((yyvsp[0].interm).loc, EvqTemporary, *(yyval.interm).param.type); parseContext.precisionQualifierCheck((yyval.interm).loc, (yyval.interm).param.type->getBasicType(), (yyval.interm).param.type->getQualifier(), (yyval.interm).param.type->isCoopMat()); } -#line 6475 "MachineIndependent/glslang_tab.cpp" +#line 6478 "MachineIndependent/glslang_tab.cpp" break; case 124: /* parameter_type_specifier: type_specifier */ -#line 1141 "MachineIndependent/glslang.y" +#line 1144 "MachineIndependent/glslang.y" { TParameter param = { 0, new TType((yyvsp[0].interm.type)), {} }; (yyval.interm).param = param; if ((yyvsp[0].interm.type).arraySizes) parseContext.arraySizeRequiredCheck((yyvsp[0].interm.type).loc, *(yyvsp[0].interm.type).arraySizes); } -#line 6486 "MachineIndependent/glslang_tab.cpp" +#line 6489 "MachineIndependent/glslang_tab.cpp" break; case 125: /* init_declarator_list: single_declaration */ -#line 1150 "MachineIndependent/glslang.y" +#line 1153 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[0].interm); } -#line 6494 "MachineIndependent/glslang_tab.cpp" +#line 6497 "MachineIndependent/glslang_tab.cpp" break; case 126: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER */ -#line 1153 "MachineIndependent/glslang.y" +#line 1156 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-2].interm).type); } -#line 6503 "MachineIndependent/glslang_tab.cpp" +#line 6506 "MachineIndependent/glslang_tab.cpp" break; case 127: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier */ -#line 1157 "MachineIndependent/glslang.y" +#line 1160 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-3].interm).type, (yyvsp[0].interm).arraySizes); } -#line 6512 "MachineIndependent/glslang_tab.cpp" +#line 6515 "MachineIndependent/glslang_tab.cpp" break; case 128: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER array_specifier EQUAL initializer */ -#line 1161 "MachineIndependent/glslang.y" +#line 1164 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-5].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-5].interm).type, (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-5].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6522 "MachineIndependent/glslang_tab.cpp" +#line 6525 "MachineIndependent/glslang_tab.cpp" break; case 129: /* init_declarator_list: init_declarator_list COMMA IDENTIFIER EQUAL initializer */ -#line 1166 "MachineIndependent/glslang.y" +#line 1169 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm).type; TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-4].interm).type, 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate((yyvsp[-4].interm).intermNode, initNode, (yyvsp[-1].lex).loc); } -#line 6532 "MachineIndependent/glslang_tab.cpp" +#line 6535 "MachineIndependent/glslang_tab.cpp" break; case 130: /* single_declaration: fully_specified_type */ -#line 1174 "MachineIndependent/glslang.y" +#line 1177 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[0].interm.type); (yyval.interm).intermNode = 0; parseContext.declareTypeDefaults((yyval.interm).loc, (yyval.interm).type); } -#line 6542 "MachineIndependent/glslang_tab.cpp" +#line 6545 "MachineIndependent/glslang_tab.cpp" break; case 131: /* single_declaration: fully_specified_type IDENTIFIER */ -#line 1179 "MachineIndependent/glslang.y" +#line 1182 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-1].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[0].lex).loc, *(yyvsp[0].lex).string, (yyvsp[-1].interm.type)); } -#line 6552 "MachineIndependent/glslang_tab.cpp" +#line 6555 "MachineIndependent/glslang_tab.cpp" break; case 132: /* single_declaration: fully_specified_type IDENTIFIER array_specifier */ -#line 1184 "MachineIndependent/glslang.y" +#line 1187 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-2].interm.type); (yyval.interm).intermNode = 0; parseContext.declareVariable((yyvsp[-1].lex).loc, *(yyvsp[-1].lex).string, (yyvsp[-2].interm.type), (yyvsp[0].interm).arraySizes); } -#line 6562 "MachineIndependent/glslang_tab.cpp" +#line 6565 "MachineIndependent/glslang_tab.cpp" break; case 133: /* single_declaration: fully_specified_type IDENTIFIER array_specifier EQUAL initializer */ -#line 1189 "MachineIndependent/glslang.y" +#line 1192 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-4].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-3].lex).loc, *(yyvsp[-3].lex).string, (yyvsp[-4].interm.type), (yyvsp[-2].interm).arraySizes, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6572 "MachineIndependent/glslang_tab.cpp" +#line 6575 "MachineIndependent/glslang_tab.cpp" break; case 134: /* single_declaration: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 1194 "MachineIndependent/glslang.y" +#line 1197 "MachineIndependent/glslang.y" { (yyval.interm).type = (yyvsp[-3].interm.type); TIntermNode* initNode = parseContext.declareVariable((yyvsp[-2].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[-3].interm.type), 0, (yyvsp[0].interm.intermTypedNode)); (yyval.interm).intermNode = parseContext.intermediate.growAggregate(0, initNode, (yyvsp[-1].lex).loc); } -#line 6582 "MachineIndependent/glslang_tab.cpp" +#line 6585 "MachineIndependent/glslang_tab.cpp" break; case 135: /* fully_specified_type: type_specifier */ -#line 1203 "MachineIndependent/glslang.y" +#line 1206 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); @@ -6593,11 +6596,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } parseContext.precisionQualifierCheck((yyval.interm.type).loc, (yyval.interm.type).basicType, (yyval.interm.type).qualifier, (yyval.interm.type).isCoopmat()); } -#line 6597 "MachineIndependent/glslang_tab.cpp" +#line 6600 "MachineIndependent/glslang_tab.cpp" break; case 136: /* fully_specified_type: type_qualifier type_specifier */ -#line 1213 "MachineIndependent/glslang.y" +#line 1216 "MachineIndependent/glslang.y" { parseContext.globalQualifierFixCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, false, &(yyvsp[0].interm.type)); parseContext.globalQualifierTypeCheck((yyvsp[-1].interm.type).loc, (yyvsp[-1].interm.type).qualifier, (yyvsp[0].interm.type)); @@ -6622,22 +6625,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (parseContext.language == EShLangFragment && (yyval.interm.type).qualifier.storage == EvqVaryingIn))) (yyval.interm.type).qualifier.smooth = true; } -#line 6626 "MachineIndependent/glslang_tab.cpp" +#line 6629 "MachineIndependent/glslang_tab.cpp" break; case 137: /* invariant_qualifier: INVARIANT */ -#line 1240 "MachineIndependent/glslang.y" +#line 1243 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "invariant"); parseContext.profileRequires((yyval.interm.type).loc, ENoProfile, 120, 0, "invariant"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.invariant = true; } -#line 6637 "MachineIndependent/glslang_tab.cpp" +#line 6640 "MachineIndependent/glslang_tab.cpp" break; case 138: /* interpolation_qualifier: SMOOTH */ -#line 1249 "MachineIndependent/glslang.y" +#line 1252 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "smooth"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "smooth"); @@ -6645,11 +6648,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.smooth = true; } -#line 6649 "MachineIndependent/glslang_tab.cpp" +#line 6652 "MachineIndependent/glslang_tab.cpp" break; case 139: /* interpolation_qualifier: FLAT */ -#line 1256 "MachineIndependent/glslang.y" +#line 1259 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "flat"); parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "flat"); @@ -6657,11 +6660,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.flat = true; } -#line 6661 "MachineIndependent/glslang_tab.cpp" +#line 6664 "MachineIndependent/glslang_tab.cpp" break; case 140: /* interpolation_qualifier: NOPERSPECTIVE */ -#line 1263 "MachineIndependent/glslang.y" +#line 1266 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "noperspective"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 0, E_GL_NV_shader_noperspective_interpolation, "noperspective"); @@ -6669,11 +6672,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nopersp = true; } -#line 6673 "MachineIndependent/glslang_tab.cpp" +#line 6676 "MachineIndependent/glslang_tab.cpp" break; case 141: /* interpolation_qualifier: EXPLICITINTERPAMD */ -#line 1270 "MachineIndependent/glslang.y" +#line 1273 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "__explicitInterpAMD"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 450, E_GL_AMD_shader_explicit_vertex_parameter, "explicit interpolation"); @@ -6681,11 +6684,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.explicitInterp = true; } -#line 6685 "MachineIndependent/glslang_tab.cpp" +#line 6688 "MachineIndependent/glslang_tab.cpp" break; case 142: /* interpolation_qualifier: PERVERTEXNV */ -#line 1277 "MachineIndependent/glslang.y" +#line 1280 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexNV"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_NV_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6694,11 +6697,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexNV = true; } -#line 6698 "MachineIndependent/glslang_tab.cpp" +#line 6701 "MachineIndependent/glslang_tab.cpp" break; case 143: /* interpolation_qualifier: PERVERTEXEXT */ -#line 1285 "MachineIndependent/glslang.y" +#line 1288 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "pervertexEXT"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile, 0, E_GL_EXT_fragment_shader_barycentric, "fragment shader barycentric"); @@ -6707,11 +6710,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.pervertexEXT = true; } -#line 6711 "MachineIndependent/glslang_tab.cpp" +#line 6714 "MachineIndependent/glslang_tab.cpp" break; case 144: /* interpolation_qualifier: PERPRIMITIVENV */ -#line 1293 "MachineIndependent/glslang.y" +#line 1296 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveNV"); @@ -6722,11 +6725,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6726 "MachineIndependent/glslang_tab.cpp" +#line 6729 "MachineIndependent/glslang_tab.cpp" break; case 145: /* interpolation_qualifier: PERPRIMITIVEEXT */ -#line 1303 "MachineIndependent/glslang.y" +#line 1306 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perprimitiveEXT"); @@ -6737,11 +6740,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perPrimitiveNV = true; } -#line 6741 "MachineIndependent/glslang_tab.cpp" +#line 6744 "MachineIndependent/glslang_tab.cpp" break; case 146: /* interpolation_qualifier: PERVIEWNV */ -#line 1313 "MachineIndependent/glslang.y" +#line 1316 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "perviewNV"); @@ -6749,11 +6752,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perViewNV = true; } -#line 6753 "MachineIndependent/glslang_tab.cpp" +#line 6756 "MachineIndependent/glslang_tab.cpp" break; case 147: /* interpolation_qualifier: PERTASKNV */ -#line 1320 "MachineIndependent/glslang.y" +#line 1323 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskNV"); @@ -6761,84 +6764,84 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.perTaskNV = true; } -#line 6765 "MachineIndependent/glslang_tab.cpp" +#line 6768 "MachineIndependent/glslang_tab.cpp" break; case 148: /* layout_qualifier: LAYOUT LEFT_PAREN layout_qualifier_id_list RIGHT_PAREN */ -#line 1330 "MachineIndependent/glslang.y" +#line 1333 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); } -#line 6773 "MachineIndependent/glslang_tab.cpp" +#line 6776 "MachineIndependent/glslang_tab.cpp" break; case 149: /* layout_qualifier_id_list: layout_qualifier_id */ -#line 1336 "MachineIndependent/glslang.y" +#line 1339 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6781 "MachineIndependent/glslang_tab.cpp" +#line 6784 "MachineIndependent/glslang_tab.cpp" break; case 150: /* layout_qualifier_id_list: layout_qualifier_id_list COMMA layout_qualifier_id */ -#line 1339 "MachineIndependent/glslang.y" +#line 1342 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-2].interm.type); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeObjectLayoutQualifiers((yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6791 "MachineIndependent/glslang_tab.cpp" +#line 6794 "MachineIndependent/glslang_tab.cpp" break; case 151: /* layout_qualifier_id: IDENTIFIER */ -#line 1346 "MachineIndependent/glslang.y" +#line 1349 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), *(yyvsp[0].lex).string); } -#line 6800 "MachineIndependent/glslang_tab.cpp" +#line 6803 "MachineIndependent/glslang_tab.cpp" break; case 152: /* layout_qualifier_id: IDENTIFIER EQUAL constant_expression */ -#line 1350 "MachineIndependent/glslang.y" +#line 1353 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-2].lex).loc); parseContext.setLayoutQualifier((yyvsp[-2].lex).loc, (yyval.interm.type), *(yyvsp[-2].lex).string, (yyvsp[0].interm.intermTypedNode)); } -#line 6809 "MachineIndependent/glslang_tab.cpp" +#line 6812 "MachineIndependent/glslang_tab.cpp" break; case 153: /* layout_qualifier_id: SHARED */ -#line 1354 "MachineIndependent/glslang.y" +#line 1357 "MachineIndependent/glslang.y" { // because "shared" is both an identifier and a keyword (yyval.interm.type).init((yyvsp[0].lex).loc); TString strShared("shared"); parseContext.setLayoutQualifier((yyvsp[0].lex).loc, (yyval.interm.type), strShared); } -#line 6819 "MachineIndependent/glslang_tab.cpp" +#line 6822 "MachineIndependent/glslang_tab.cpp" break; case 154: /* precise_qualifier: PRECISE */ -#line 1362 "MachineIndependent/glslang.y" +#line 1365 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyval.interm.type).loc, ECoreProfile | ECompatibilityProfile, 400, E_GL_ARB_gpu_shader5, "precise"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 320, Num_AEP_gpu_shader5, AEP_gpu_shader5, "precise"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.noContraction = true; } -#line 6830 "MachineIndependent/glslang_tab.cpp" +#line 6833 "MachineIndependent/glslang_tab.cpp" break; case 155: /* type_qualifier: single_type_qualifier */ -#line 1371 "MachineIndependent/glslang.y" +#line 1374 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6838 "MachineIndependent/glslang_tab.cpp" +#line 6841 "MachineIndependent/glslang_tab.cpp" break; case 156: /* type_qualifier: type_qualifier single_type_qualifier */ -#line 1374 "MachineIndependent/glslang.y" +#line 1377 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); if ((yyval.interm.type).basicType == EbtVoid) @@ -6847,151 +6850,151 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).shaderQualifiers.merge((yyvsp[0].interm.type).shaderQualifiers); parseContext.mergeQualifiers((yyval.interm.type).loc, (yyval.interm.type).qualifier, (yyvsp[0].interm.type).qualifier, false); } -#line 6851 "MachineIndependent/glslang_tab.cpp" +#line 6854 "MachineIndependent/glslang_tab.cpp" break; case 157: /* single_type_qualifier: storage_qualifier */ -#line 1385 "MachineIndependent/glslang.y" +#line 1388 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6859 "MachineIndependent/glslang_tab.cpp" +#line 6862 "MachineIndependent/glslang_tab.cpp" break; case 158: /* single_type_qualifier: layout_qualifier */ -#line 1388 "MachineIndependent/glslang.y" +#line 1391 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6867 "MachineIndependent/glslang_tab.cpp" +#line 6870 "MachineIndependent/glslang_tab.cpp" break; case 159: /* single_type_qualifier: precision_qualifier */ -#line 1391 "MachineIndependent/glslang.y" +#line 1394 "MachineIndependent/glslang.y" { parseContext.checkPrecisionQualifier((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type).qualifier.precision); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6876 "MachineIndependent/glslang_tab.cpp" +#line 6879 "MachineIndependent/glslang_tab.cpp" break; case 160: /* single_type_qualifier: interpolation_qualifier */ -#line 1395 "MachineIndependent/glslang.y" +#line 1398 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6885 "MachineIndependent/glslang_tab.cpp" +#line 6888 "MachineIndependent/glslang_tab.cpp" break; case 161: /* single_type_qualifier: invariant_qualifier */ -#line 1399 "MachineIndependent/glslang.y" +#line 1402 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6894 "MachineIndependent/glslang_tab.cpp" +#line 6897 "MachineIndependent/glslang_tab.cpp" break; case 162: /* single_type_qualifier: precise_qualifier */ -#line 1403 "MachineIndependent/glslang.y" +#line 1406 "MachineIndependent/glslang.y" { // allow inheritance of storage qualifier from block declaration (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6903 "MachineIndependent/glslang_tab.cpp" +#line 6906 "MachineIndependent/glslang_tab.cpp" break; case 163: /* single_type_qualifier: non_uniform_qualifier */ -#line 1407 "MachineIndependent/glslang.y" +#line 1410 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6911 "MachineIndependent/glslang_tab.cpp" +#line 6914 "MachineIndependent/glslang_tab.cpp" break; case 164: /* single_type_qualifier: spirv_storage_class_qualifier */ -#line 1410 "MachineIndependent/glslang.y" +#line 1413 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].interm.type).loc, "spirv_storage_class"); parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V storage class qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6921 "MachineIndependent/glslang_tab.cpp" +#line 6924 "MachineIndependent/glslang_tab.cpp" break; case 165: /* single_type_qualifier: spirv_decorate_qualifier */ -#line 1415 "MachineIndependent/glslang.y" +#line 1418 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V decorate qualifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 6930 "MachineIndependent/glslang_tab.cpp" +#line 6933 "MachineIndependent/glslang_tab.cpp" break; case 166: /* single_type_qualifier: SPIRV_BY_REFERENCE */ -#line 1419 "MachineIndependent/glslang.y" +#line 1422 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_reference"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvByReference(); } -#line 6940 "MachineIndependent/glslang_tab.cpp" +#line 6943 "MachineIndependent/glslang_tab.cpp" break; case 167: /* single_type_qualifier: SPIRV_LITERAL */ -#line 1424 "MachineIndependent/glslang.y" +#line 1427 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_spirv_intrinsics, "spirv_by_literal"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.setSpirvLiteral(); } -#line 6950 "MachineIndependent/glslang_tab.cpp" +#line 6953 "MachineIndependent/glslang_tab.cpp" break; case 168: /* storage_qualifier: CONST */ -#line 1432 "MachineIndependent/glslang.y" +#line 1435 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqConst; // will later turn into EvqConstReadOnly, if the initializer is not constant } -#line 6959 "MachineIndependent/glslang_tab.cpp" +#line 6962 "MachineIndependent/glslang_tab.cpp" break; case 169: /* storage_qualifier: INOUT */ -#line 1436 "MachineIndependent/glslang.y" +#line 1439 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "inout"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqInOut; } -#line 6969 "MachineIndependent/glslang_tab.cpp" +#line 6972 "MachineIndependent/glslang_tab.cpp" break; case 170: /* storage_qualifier: IN */ -#line 1441 "MachineIndependent/glslang.y" +#line 1444 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "in"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "in" or a pipeline "in" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqIn; } -#line 6980 "MachineIndependent/glslang_tab.cpp" +#line 6983 "MachineIndependent/glslang_tab.cpp" break; case 171: /* storage_qualifier: OUT */ -#line 1447 "MachineIndependent/glslang.y" +#line 1450 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "out"); (yyval.interm.type).init((yyvsp[0].lex).loc); // whether this is a parameter "out" or a pipeline "out" will get sorted out a bit later (yyval.interm.type).qualifier.storage = EvqOut; } -#line 6991 "MachineIndependent/glslang_tab.cpp" +#line 6994 "MachineIndependent/glslang_tab.cpp" break; case 172: /* storage_qualifier: CENTROID */ -#line 1453 "MachineIndependent/glslang.y" +#line 1456 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 120, 0, "centroid"); parseContext.profileRequires((yyvsp[0].lex).loc, EEsProfile, 300, 0, "centroid"); @@ -6999,31 +7002,31 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.centroid = true; } -#line 7003 "MachineIndependent/glslang_tab.cpp" +#line 7006 "MachineIndependent/glslang_tab.cpp" break; case 173: /* storage_qualifier: UNIFORM */ -#line 1460 "MachineIndependent/glslang.y" +#line 1463 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "uniform"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqUniform; } -#line 7013 "MachineIndependent/glslang_tab.cpp" +#line 7016 "MachineIndependent/glslang_tab.cpp" break; case 174: /* storage_qualifier: TILEIMAGEEXT */ -#line 1465 "MachineIndependent/glslang.y" +#line 1468 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "tileImageEXT"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqTileImageEXT; } -#line 7023 "MachineIndependent/glslang_tab.cpp" +#line 7026 "MachineIndependent/glslang_tab.cpp" break; case 175: /* storage_qualifier: SHARED */ -#line 1470 "MachineIndependent/glslang.y" +#line 1473 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "shared"); parseContext.profileRequires((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, 430, E_GL_ARB_compute_shader, "shared"); @@ -7032,21 +7035,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqShared; } -#line 7036 "MachineIndependent/glslang_tab.cpp" +#line 7039 "MachineIndependent/glslang_tab.cpp" break; case 176: /* storage_qualifier: BUFFER */ -#line 1478 "MachineIndependent/glslang.y" +#line 1481 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "buffer"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqBuffer; } -#line 7046 "MachineIndependent/glslang_tab.cpp" +#line 7049 "MachineIndependent/glslang_tab.cpp" break; case 177: /* storage_qualifier: ATTRIBUTE */ -#line 1483 "MachineIndependent/glslang.y" +#line 1486 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangVertex, "attribute"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "attribute"); @@ -7059,11 +7062,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7063 "MachineIndependent/glslang_tab.cpp" +#line 7066 "MachineIndependent/glslang_tab.cpp" break; case 178: /* storage_qualifier: VARYING */ -#line 1495 "MachineIndependent/glslang.y" +#line 1498 "MachineIndependent/glslang.y" { parseContext.checkDeprecated((yyvsp[0].lex).loc, ENoProfile, 130, "varying"); parseContext.checkDeprecated((yyvsp[0].lex).loc, ECoreProfile, 130, "varying"); @@ -7078,32 +7081,32 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.type).qualifier.storage = EvqVaryingIn; } -#line 7082 "MachineIndependent/glslang_tab.cpp" +#line 7085 "MachineIndependent/glslang_tab.cpp" break; case 179: /* storage_qualifier: PATCH */ -#line 1509 "MachineIndependent/glslang.y" +#line 1512 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "patch"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangTessControlMask | EShLangTessEvaluationMask), "patch"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.patch = true; } -#line 7093 "MachineIndependent/glslang_tab.cpp" +#line 7096 "MachineIndependent/glslang_tab.cpp" break; case 180: /* storage_qualifier: SAMPLE */ -#line 1515 "MachineIndependent/glslang.y" +#line 1518 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "sample"); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.sample = true; } -#line 7103 "MachineIndependent/glslang_tab.cpp" +#line 7106 "MachineIndependent/glslang_tab.cpp" break; case 181: /* storage_qualifier: HITATTRNV */ -#line 1520 "MachineIndependent/glslang.y" +#line 1523 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7112,11 +7115,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7116 "MachineIndependent/glslang_tab.cpp" +#line 7119 "MachineIndependent/glslang_tab.cpp" break; case 182: /* storage_qualifier: HITOBJECTATTRNV */ -#line 1528 "MachineIndependent/glslang.y" +#line 1531 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask @@ -7125,11 +7128,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitObjectAttrNV; } -#line 7129 "MachineIndependent/glslang_tab.cpp" +#line 7132 "MachineIndependent/glslang_tab.cpp" break; case 183: /* storage_qualifier: HITATTREXT */ -#line 1536 "MachineIndependent/glslang.y" +#line 1539 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "hitAttributeEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangIntersectMask | EShLangClosestHitMask @@ -7138,11 +7141,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqHitAttr; } -#line 7142 "MachineIndependent/glslang_tab.cpp" +#line 7145 "MachineIndependent/glslang_tab.cpp" break; case 184: /* storage_qualifier: PAYLOADNV */ -#line 1544 "MachineIndependent/glslang.y" +#line 1547 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7151,11 +7154,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7155 "MachineIndependent/glslang_tab.cpp" +#line 7158 "MachineIndependent/glslang_tab.cpp" break; case 185: /* storage_qualifier: PAYLOADEXT */ -#line 1552 "MachineIndependent/glslang.y" +#line 1555 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | EShLangClosestHitMask | @@ -7164,11 +7167,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayload; } -#line 7168 "MachineIndependent/glslang_tab.cpp" +#line 7171 "MachineIndependent/glslang_tab.cpp" break; case 186: /* storage_qualifier: PAYLOADINNV */ -#line 1560 "MachineIndependent/glslang.y" +#line 1563 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7177,11 +7180,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7181 "MachineIndependent/glslang_tab.cpp" +#line 7184 "MachineIndependent/glslang_tab.cpp" break; case 187: /* storage_qualifier: PAYLOADINEXT */ -#line 1568 "MachineIndependent/glslang.y" +#line 1571 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "rayPayloadInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangClosestHitMask | @@ -7190,11 +7193,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqPayloadIn; } -#line 7194 "MachineIndependent/glslang_tab.cpp" +#line 7197 "MachineIndependent/glslang_tab.cpp" break; case 188: /* storage_qualifier: CALLDATANV */ -#line 1576 "MachineIndependent/glslang.y" +#line 1579 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7203,11 +7206,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7207 "MachineIndependent/glslang_tab.cpp" +#line 7210 "MachineIndependent/glslang_tab.cpp" break; case 189: /* storage_qualifier: CALLDATAEXT */ -#line 1584 "MachineIndependent/glslang.y" +#line 1587 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangRayGenMask | @@ -7216,11 +7219,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableData; } -#line 7220 "MachineIndependent/glslang_tab.cpp" +#line 7223 "MachineIndependent/glslang_tab.cpp" break; case 190: /* storage_qualifier: CALLDATAINNV */ -#line 1592 "MachineIndependent/glslang.y" +#line 1595 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInNV"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInNV"); @@ -7228,11 +7231,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7232 "MachineIndependent/glslang_tab.cpp" +#line 7235 "MachineIndependent/glslang_tab.cpp" break; case 191: /* storage_qualifier: CALLDATAINEXT */ -#line 1599 "MachineIndependent/glslang.y" +#line 1602 "MachineIndependent/glslang.y" { parseContext.globalCheck((yyvsp[0].lex).loc, "callableDataInEXT"); parseContext.requireStage((yyvsp[0].lex).loc, (EShLanguageMask)(EShLangCallableMask), "callableDataInEXT"); @@ -7240,138 +7243,138 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqCallableDataIn; } -#line 7244 "MachineIndependent/glslang_tab.cpp" +#line 7247 "MachineIndependent/glslang_tab.cpp" break; case 192: /* storage_qualifier: COHERENT */ -#line 1606 "MachineIndependent/glslang.y" +#line 1609 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.coherent = true; } -#line 7253 "MachineIndependent/glslang_tab.cpp" +#line 7256 "MachineIndependent/glslang_tab.cpp" break; case 193: /* storage_qualifier: DEVICECOHERENT */ -#line 1610 "MachineIndependent/glslang.y" +#line 1613 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "devicecoherent"); (yyval.interm.type).qualifier.devicecoherent = true; } -#line 7263 "MachineIndependent/glslang_tab.cpp" +#line 7266 "MachineIndependent/glslang_tab.cpp" break; case 194: /* storage_qualifier: QUEUEFAMILYCOHERENT */ -#line 1615 "MachineIndependent/glslang.y" +#line 1618 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "queuefamilycoherent"); (yyval.interm.type).qualifier.queuefamilycoherent = true; } -#line 7273 "MachineIndependent/glslang_tab.cpp" +#line 7276 "MachineIndependent/glslang_tab.cpp" break; case 195: /* storage_qualifier: WORKGROUPCOHERENT */ -#line 1620 "MachineIndependent/glslang.y" +#line 1623 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "workgroupcoherent"); (yyval.interm.type).qualifier.workgroupcoherent = true; } -#line 7283 "MachineIndependent/glslang_tab.cpp" +#line 7286 "MachineIndependent/glslang_tab.cpp" break; case 196: /* storage_qualifier: SUBGROUPCOHERENT */ -#line 1625 "MachineIndependent/glslang.y" +#line 1628 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "subgroupcoherent"); (yyval.interm.type).qualifier.subgroupcoherent = true; } -#line 7293 "MachineIndependent/glslang_tab.cpp" +#line 7296 "MachineIndependent/glslang_tab.cpp" break; case 197: /* storage_qualifier: NONPRIVATE */ -#line 1630 "MachineIndependent/glslang.y" +#line 1633 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_KHR_memory_scope_semantics, "nonprivate"); (yyval.interm.type).qualifier.nonprivate = true; } -#line 7303 "MachineIndependent/glslang_tab.cpp" +#line 7306 "MachineIndependent/glslang_tab.cpp" break; case 198: /* storage_qualifier: SHADERCALLCOHERENT */ -#line 1635 "MachineIndependent/glslang.y" +#line 1638 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); parseContext.requireExtensions((yyvsp[0].lex).loc, 1, &E_GL_EXT_ray_tracing, "shadercallcoherent"); (yyval.interm.type).qualifier.shadercallcoherent = true; } -#line 7313 "MachineIndependent/glslang_tab.cpp" +#line 7316 "MachineIndependent/glslang_tab.cpp" break; case 199: /* storage_qualifier: VOLATILE */ -#line 1640 "MachineIndependent/glslang.y" +#line 1643 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.volatil = true; } -#line 7322 "MachineIndependent/glslang_tab.cpp" +#line 7325 "MachineIndependent/glslang_tab.cpp" break; case 200: /* storage_qualifier: RESTRICT */ -#line 1644 "MachineIndependent/glslang.y" +#line 1647 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.restrict = true; } -#line 7331 "MachineIndependent/glslang_tab.cpp" +#line 7334 "MachineIndependent/glslang_tab.cpp" break; case 201: /* storage_qualifier: READONLY */ -#line 1648 "MachineIndependent/glslang.y" +#line 1651 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.readonly = true; } -#line 7340 "MachineIndependent/glslang_tab.cpp" +#line 7343 "MachineIndependent/glslang_tab.cpp" break; case 202: /* storage_qualifier: WRITEONLY */ -#line 1652 "MachineIndependent/glslang.y" +#line 1655 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.writeonly = true; } -#line 7349 "MachineIndependent/glslang_tab.cpp" +#line 7352 "MachineIndependent/glslang_tab.cpp" break; case 203: /* storage_qualifier: SUBROUTINE */ -#line 1656 "MachineIndependent/glslang.y" +#line 1659 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[0].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[0].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[0].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[0].lex).loc); } -#line 7360 "MachineIndependent/glslang_tab.cpp" +#line 7363 "MachineIndependent/glslang_tab.cpp" break; case 204: /* storage_qualifier: SUBROUTINE LEFT_PAREN type_name_list RIGHT_PAREN */ -#line 1662 "MachineIndependent/glslang.y" +#line 1665 "MachineIndependent/glslang.y" { parseContext.spvRemoved((yyvsp[-3].lex).loc, "subroutine"); parseContext.globalCheck((yyvsp[-3].lex).loc, "subroutine"); parseContext.unimplemented((yyvsp[-3].lex).loc, "subroutine"); (yyval.interm.type).init((yyvsp[-3].lex).loc); } -#line 7371 "MachineIndependent/glslang_tab.cpp" +#line 7374 "MachineIndependent/glslang_tab.cpp" break; case 205: /* storage_qualifier: TASKPAYLOADWORKGROUPEXT */ -#line 1668 "MachineIndependent/glslang.y" +#line 1671 "MachineIndependent/glslang.y" { // No need for profile version or extension check. Shader stage already checks both. parseContext.globalCheck((yyvsp[0].lex).loc, "taskPayloadSharedEXT"); @@ -7379,38 +7382,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.storage = EvqtaskPayloadSharedEXT; } -#line 7383 "MachineIndependent/glslang_tab.cpp" +#line 7386 "MachineIndependent/glslang_tab.cpp" break; case 206: /* non_uniform_qualifier: NONUNIFORM */ -#line 1678 "MachineIndependent/glslang.y" +#line 1681 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc); (yyval.interm.type).qualifier.nonUniform = true; } -#line 7392 "MachineIndependent/glslang_tab.cpp" +#line 7395 "MachineIndependent/glslang_tab.cpp" break; case 207: /* type_name_list: IDENTIFIER */ -#line 1685 "MachineIndependent/glslang.y" +#line 1688 "MachineIndependent/glslang.y" { // TODO } -#line 7400 "MachineIndependent/glslang_tab.cpp" +#line 7403 "MachineIndependent/glslang_tab.cpp" break; case 208: /* type_name_list: type_name_list COMMA IDENTIFIER */ -#line 1688 "MachineIndependent/glslang.y" +#line 1691 "MachineIndependent/glslang.y" { // TODO: 4.0 semantics: subroutines // 1) make sure each identifier is a type declared earlier with SUBROUTINE // 2) save all of the identifiers for future comparison with the declared function } -#line 7410 "MachineIndependent/glslang_tab.cpp" +#line 7413 "MachineIndependent/glslang_tab.cpp" break; case 209: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt */ -#line 1696 "MachineIndependent/glslang.y" +#line 1699 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[-1].interm.type); (yyval.interm.type).qualifier.precision = parseContext.getDefaultPrecision((yyval.interm.type)); @@ -7418,11 +7421,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.coopMatTypeParametersCheck((yyvsp[-1].interm.type).loc, (yyval.interm.type)); } -#line 7422 "MachineIndependent/glslang_tab.cpp" +#line 7425 "MachineIndependent/glslang_tab.cpp" break; case 210: /* type_specifier: type_specifier_nonarray type_parameter_specifier_opt array_specifier */ -#line 1703 "MachineIndependent/glslang.y" +#line 1706 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[0].interm).loc, (yyvsp[0].interm).arraySizes); (yyval.interm.type) = (yyvsp[-2].interm.type); @@ -7431,21 +7434,21 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).arraySizes = (yyvsp[0].interm).arraySizes; parseContext.coopMatTypeParametersCheck((yyvsp[-2].interm.type).loc, (yyval.interm.type)); } -#line 7435 "MachineIndependent/glslang_tab.cpp" +#line 7438 "MachineIndependent/glslang_tab.cpp" break; case 211: /* array_specifier: LEFT_BRACKET RIGHT_BRACKET */ -#line 1714 "MachineIndependent/glslang.y" +#line 1717 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-1].lex).loc; (yyval.interm).arraySizes = new TArraySizes; (yyval.interm).arraySizes->addInnerSize(); } -#line 7445 "MachineIndependent/glslang_tab.cpp" +#line 7448 "MachineIndependent/glslang_tab.cpp" break; case 212: /* array_specifier: LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1719 "MachineIndependent/glslang.y" +#line 1722 "MachineIndependent/glslang.y" { (yyval.interm).loc = (yyvsp[-2].lex).loc; (yyval.interm).arraySizes = new TArraySizes; @@ -7454,20 +7457,20 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7458 "MachineIndependent/glslang_tab.cpp" +#line 7461 "MachineIndependent/glslang_tab.cpp" break; case 213: /* array_specifier: array_specifier LEFT_BRACKET RIGHT_BRACKET */ -#line 1727 "MachineIndependent/glslang.y" +#line 1730 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-2].interm); (yyval.interm).arraySizes->addInnerSize(); } -#line 7467 "MachineIndependent/glslang_tab.cpp" +#line 7470 "MachineIndependent/glslang_tab.cpp" break; case 214: /* array_specifier: array_specifier LEFT_BRACKET conditional_expression RIGHT_BRACKET */ -#line 1731 "MachineIndependent/glslang.y" +#line 1734 "MachineIndependent/glslang.y" { (yyval.interm) = (yyvsp[-3].interm); @@ -7475,46 +7478,46 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[-1].interm.intermTypedNode)->getLoc(), (yyvsp[-1].interm.intermTypedNode), size, "array size"); (yyval.interm).arraySizes->addInnerSize(size); } -#line 7479 "MachineIndependent/glslang_tab.cpp" +#line 7482 "MachineIndependent/glslang_tab.cpp" break; case 215: /* type_parameter_specifier_opt: type_parameter_specifier */ -#line 1741 "MachineIndependent/glslang.y" +#line 1744 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[0].interm.typeParameters); } -#line 7487 "MachineIndependent/glslang_tab.cpp" +#line 7490 "MachineIndependent/glslang_tab.cpp" break; case 216: /* type_parameter_specifier_opt: %empty */ -#line 1744 "MachineIndependent/glslang.y" +#line 1747 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = 0; } -#line 7495 "MachineIndependent/glslang_tab.cpp" +#line 7498 "MachineIndependent/glslang_tab.cpp" break; case 217: /* type_parameter_specifier: LEFT_ANGLE type_parameter_specifier_list RIGHT_ANGLE */ -#line 1750 "MachineIndependent/glslang.y" +#line 1753 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-1].interm.typeParameters); } -#line 7503 "MachineIndependent/glslang_tab.cpp" +#line 7506 "MachineIndependent/glslang_tab.cpp" break; case 218: /* type_parameter_specifier_list: type_specifier */ -#line 1756 "MachineIndependent/glslang.y" +#line 1759 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; (yyval.interm.typeParameters)->spirvType = (yyvsp[0].interm.type).spirvType; (yyval.interm.typeParameters)->basicType = (yyvsp[0].interm.type).basicType; } -#line 7514 "MachineIndependent/glslang_tab.cpp" +#line 7517 "MachineIndependent/glslang_tab.cpp" break; case 219: /* type_parameter_specifier_list: unary_expression */ -#line 1762 "MachineIndependent/glslang.y" +#line 1765 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = new TTypeParameters; (yyval.interm.typeParameters)->arraySizes = new TArraySizes; @@ -7523,11 +7526,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7527 "MachineIndependent/glslang_tab.cpp" +#line 7530 "MachineIndependent/glslang_tab.cpp" break; case 220: /* type_parameter_specifier_list: type_parameter_specifier_list COMMA unary_expression */ -#line 1770 "MachineIndependent/glslang.y" +#line 1773 "MachineIndependent/glslang.y" { (yyval.interm.typeParameters) = (yyvsp[-2].interm.typeParameters); @@ -7535,300 +7538,300 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.arraySizeCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode), size, "type parameter", true); (yyval.interm.typeParameters)->arraySizes->addInnerSize(size); } -#line 7539 "MachineIndependent/glslang_tab.cpp" +#line 7542 "MachineIndependent/glslang_tab.cpp" break; case 221: /* type_specifier_nonarray: VOID */ -#line 1780 "MachineIndependent/glslang.y" +#line 1783 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtVoid; } -#line 7548 "MachineIndependent/glslang_tab.cpp" +#line 7551 "MachineIndependent/glslang_tab.cpp" break; case 222: /* type_specifier_nonarray: FLOAT */ -#line 1784 "MachineIndependent/glslang.y" +#line 1787 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7557 "MachineIndependent/glslang_tab.cpp" +#line 7560 "MachineIndependent/glslang_tab.cpp" break; case 223: /* type_specifier_nonarray: INT */ -#line 1788 "MachineIndependent/glslang.y" +#line 1791 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7566 "MachineIndependent/glslang_tab.cpp" +#line 7569 "MachineIndependent/glslang_tab.cpp" break; case 224: /* type_specifier_nonarray: UINT */ -#line 1792 "MachineIndependent/glslang.y" +#line 1795 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7576 "MachineIndependent/glslang_tab.cpp" +#line 7579 "MachineIndependent/glslang_tab.cpp" break; case 225: /* type_specifier_nonarray: BOOL */ -#line 1797 "MachineIndependent/glslang.y" +#line 1800 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; } -#line 7585 "MachineIndependent/glslang_tab.cpp" +#line 7588 "MachineIndependent/glslang_tab.cpp" break; case 226: /* type_specifier_nonarray: VEC2 */ -#line 1801 "MachineIndependent/glslang.y" +#line 1804 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 7595 "MachineIndependent/glslang_tab.cpp" +#line 7598 "MachineIndependent/glslang_tab.cpp" break; case 227: /* type_specifier_nonarray: VEC3 */ -#line 1806 "MachineIndependent/glslang.y" +#line 1809 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 7605 "MachineIndependent/glslang_tab.cpp" +#line 7608 "MachineIndependent/glslang_tab.cpp" break; case 228: /* type_specifier_nonarray: VEC4 */ -#line 1811 "MachineIndependent/glslang.y" +#line 1814 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 7615 "MachineIndependent/glslang_tab.cpp" +#line 7618 "MachineIndependent/glslang_tab.cpp" break; case 229: /* type_specifier_nonarray: BVEC2 */ -#line 1816 "MachineIndependent/glslang.y" +#line 1819 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(2); } -#line 7625 "MachineIndependent/glslang_tab.cpp" +#line 7628 "MachineIndependent/glslang_tab.cpp" break; case 230: /* type_specifier_nonarray: BVEC3 */ -#line 1821 "MachineIndependent/glslang.y" +#line 1824 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(3); } -#line 7635 "MachineIndependent/glslang_tab.cpp" +#line 7638 "MachineIndependent/glslang_tab.cpp" break; case 231: /* type_specifier_nonarray: BVEC4 */ -#line 1826 "MachineIndependent/glslang.y" +#line 1829 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtBool; (yyval.interm.type).setVector(4); } -#line 7645 "MachineIndependent/glslang_tab.cpp" +#line 7648 "MachineIndependent/glslang_tab.cpp" break; case 232: /* type_specifier_nonarray: IVEC2 */ -#line 1831 "MachineIndependent/glslang.y" +#line 1834 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 7655 "MachineIndependent/glslang_tab.cpp" +#line 7658 "MachineIndependent/glslang_tab.cpp" break; case 233: /* type_specifier_nonarray: IVEC3 */ -#line 1836 "MachineIndependent/glslang.y" +#line 1839 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 7665 "MachineIndependent/glslang_tab.cpp" +#line 7668 "MachineIndependent/glslang_tab.cpp" break; case 234: /* type_specifier_nonarray: IVEC4 */ -#line 1841 "MachineIndependent/glslang.y" +#line 1844 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 7675 "MachineIndependent/glslang_tab.cpp" +#line 7678 "MachineIndependent/glslang_tab.cpp" break; case 235: /* type_specifier_nonarray: UVEC2 */ -#line 1846 "MachineIndependent/glslang.y" +#line 1849 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 7686 "MachineIndependent/glslang_tab.cpp" +#line 7689 "MachineIndependent/glslang_tab.cpp" break; case 236: /* type_specifier_nonarray: UVEC3 */ -#line 1852 "MachineIndependent/glslang.y" +#line 1855 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 7697 "MachineIndependent/glslang_tab.cpp" +#line 7700 "MachineIndependent/glslang_tab.cpp" break; case 237: /* type_specifier_nonarray: UVEC4 */ -#line 1858 "MachineIndependent/glslang.y" +#line 1861 "MachineIndependent/glslang.y" { parseContext.fullIntegerCheck((yyvsp[0].lex).loc, "unsigned integer vector"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 7708 "MachineIndependent/glslang_tab.cpp" +#line 7711 "MachineIndependent/glslang_tab.cpp" break; case 238: /* type_specifier_nonarray: MAT2 */ -#line 1864 "MachineIndependent/glslang.y" +#line 1867 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7718 "MachineIndependent/glslang_tab.cpp" +#line 7721 "MachineIndependent/glslang_tab.cpp" break; case 239: /* type_specifier_nonarray: MAT3 */ -#line 1869 "MachineIndependent/glslang.y" +#line 1872 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7728 "MachineIndependent/glslang_tab.cpp" +#line 7731 "MachineIndependent/glslang_tab.cpp" break; case 240: /* type_specifier_nonarray: MAT4 */ -#line 1874 "MachineIndependent/glslang.y" +#line 1877 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7738 "MachineIndependent/glslang_tab.cpp" +#line 7741 "MachineIndependent/glslang_tab.cpp" break; case 241: /* type_specifier_nonarray: MAT2X2 */ -#line 1879 "MachineIndependent/glslang.y" +#line 1882 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 7748 "MachineIndependent/glslang_tab.cpp" +#line 7751 "MachineIndependent/glslang_tab.cpp" break; case 242: /* type_specifier_nonarray: MAT2X3 */ -#line 1884 "MachineIndependent/glslang.y" +#line 1887 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 7758 "MachineIndependent/glslang_tab.cpp" +#line 7761 "MachineIndependent/glslang_tab.cpp" break; case 243: /* type_specifier_nonarray: MAT2X4 */ -#line 1889 "MachineIndependent/glslang.y" +#line 1892 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 7768 "MachineIndependent/glslang_tab.cpp" +#line 7771 "MachineIndependent/glslang_tab.cpp" break; case 244: /* type_specifier_nonarray: MAT3X2 */ -#line 1894 "MachineIndependent/glslang.y" +#line 1897 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 7778 "MachineIndependent/glslang_tab.cpp" +#line 7781 "MachineIndependent/glslang_tab.cpp" break; case 245: /* type_specifier_nonarray: MAT3X3 */ -#line 1899 "MachineIndependent/glslang.y" +#line 1902 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 7788 "MachineIndependent/glslang_tab.cpp" +#line 7791 "MachineIndependent/glslang_tab.cpp" break; case 246: /* type_specifier_nonarray: MAT3X4 */ -#line 1904 "MachineIndependent/glslang.y" +#line 1907 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 7798 "MachineIndependent/glslang_tab.cpp" +#line 7801 "MachineIndependent/glslang_tab.cpp" break; case 247: /* type_specifier_nonarray: MAT4X2 */ -#line 1909 "MachineIndependent/glslang.y" +#line 1912 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 7808 "MachineIndependent/glslang_tab.cpp" +#line 7811 "MachineIndependent/glslang_tab.cpp" break; case 248: /* type_specifier_nonarray: MAT4X3 */ -#line 1914 "MachineIndependent/glslang.y" +#line 1917 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 7818 "MachineIndependent/glslang_tab.cpp" +#line 7821 "MachineIndependent/glslang_tab.cpp" break; case 249: /* type_specifier_nonarray: MAT4X4 */ -#line 1919 "MachineIndependent/glslang.y" +#line 1922 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 7828 "MachineIndependent/glslang_tab.cpp" +#line 7831 "MachineIndependent/glslang_tab.cpp" break; case 250: /* type_specifier_nonarray: DOUBLE */ -#line 1924 "MachineIndependent/glslang.y" +#line 1927 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7836,121 +7839,121 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7840 "MachineIndependent/glslang_tab.cpp" +#line 7843 "MachineIndependent/glslang_tab.cpp" break; case 251: /* type_specifier_nonarray: FLOAT16_T */ -#line 1931 "MachineIndependent/glslang.y" +#line 1934 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "float16_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; } -#line 7850 "MachineIndependent/glslang_tab.cpp" +#line 7853 "MachineIndependent/glslang_tab.cpp" break; case 252: /* type_specifier_nonarray: FLOAT32_T */ -#line 1936 "MachineIndependent/glslang.y" +#line 1939 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; } -#line 7860 "MachineIndependent/glslang_tab.cpp" +#line 7863 "MachineIndependent/glslang_tab.cpp" break; case 253: /* type_specifier_nonarray: FLOAT64_T */ -#line 1941 "MachineIndependent/glslang.y" +#line 1944 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; } -#line 7870 "MachineIndependent/glslang_tab.cpp" +#line 7873 "MachineIndependent/glslang_tab.cpp" break; case 254: /* type_specifier_nonarray: INT8_T */ -#line 1946 "MachineIndependent/glslang.y" +#line 1949 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; } -#line 7880 "MachineIndependent/glslang_tab.cpp" +#line 7883 "MachineIndependent/glslang_tab.cpp" break; case 255: /* type_specifier_nonarray: UINT8_T */ -#line 1951 "MachineIndependent/glslang.y" +#line 1954 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; } -#line 7890 "MachineIndependent/glslang_tab.cpp" +#line 7893 "MachineIndependent/glslang_tab.cpp" break; case 256: /* type_specifier_nonarray: INT16_T */ -#line 1956 "MachineIndependent/glslang.y" +#line 1959 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; } -#line 7900 "MachineIndependent/glslang_tab.cpp" +#line 7903 "MachineIndependent/glslang_tab.cpp" break; case 257: /* type_specifier_nonarray: UINT16_T */ -#line 1961 "MachineIndependent/glslang.y" +#line 1964 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; } -#line 7910 "MachineIndependent/glslang_tab.cpp" +#line 7913 "MachineIndependent/glslang_tab.cpp" break; case 258: /* type_specifier_nonarray: INT32_T */ -#line 1966 "MachineIndependent/glslang.y" +#line 1969 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; } -#line 7920 "MachineIndependent/glslang_tab.cpp" +#line 7923 "MachineIndependent/glslang_tab.cpp" break; case 259: /* type_specifier_nonarray: UINT32_T */ -#line 1971 "MachineIndependent/glslang.y" +#line 1974 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; } -#line 7930 "MachineIndependent/glslang_tab.cpp" +#line 7933 "MachineIndependent/glslang_tab.cpp" break; case 260: /* type_specifier_nonarray: INT64_T */ -#line 1976 "MachineIndependent/glslang.y" +#line 1979 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; } -#line 7940 "MachineIndependent/glslang_tab.cpp" +#line 7943 "MachineIndependent/glslang_tab.cpp" break; case 261: /* type_specifier_nonarray: UINT64_T */ -#line 1981 "MachineIndependent/glslang.y" +#line 1984 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; } -#line 7950 "MachineIndependent/glslang_tab.cpp" +#line 7953 "MachineIndependent/glslang_tab.cpp" break; case 262: /* type_specifier_nonarray: DVEC2 */ -#line 1986 "MachineIndependent/glslang.y" +#line 1989 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7959,11 +7962,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 7963 "MachineIndependent/glslang_tab.cpp" +#line 7966 "MachineIndependent/glslang_tab.cpp" break; case 263: /* type_specifier_nonarray: DVEC3 */ -#line 1994 "MachineIndependent/glslang.y" +#line 1997 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7972,11 +7975,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 7976 "MachineIndependent/glslang_tab.cpp" +#line 7979 "MachineIndependent/glslang_tab.cpp" break; case 264: /* type_specifier_nonarray: DVEC4 */ -#line 2002 "MachineIndependent/glslang.y" +#line 2005 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double vector"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -7985,374 +7988,374 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 7989 "MachineIndependent/glslang_tab.cpp" +#line 7992 "MachineIndependent/glslang_tab.cpp" break; case 265: /* type_specifier_nonarray: F16VEC2 */ -#line 2010 "MachineIndependent/glslang.y" +#line 2013 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(2); } -#line 8000 "MachineIndependent/glslang_tab.cpp" +#line 8003 "MachineIndependent/glslang_tab.cpp" break; case 266: /* type_specifier_nonarray: F16VEC3 */ -#line 2016 "MachineIndependent/glslang.y" +#line 2019 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(3); } -#line 8011 "MachineIndependent/glslang_tab.cpp" +#line 8014 "MachineIndependent/glslang_tab.cpp" break; case 267: /* type_specifier_nonarray: F16VEC4 */ -#line 2022 "MachineIndependent/glslang.y" +#line 2025 "MachineIndependent/glslang.y" { parseContext.float16ScalarVectorCheck((yyvsp[0].lex).loc, "half float vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setVector(4); } -#line 8022 "MachineIndependent/glslang_tab.cpp" +#line 8025 "MachineIndependent/glslang_tab.cpp" break; case 268: /* type_specifier_nonarray: F32VEC2 */ -#line 2028 "MachineIndependent/glslang.y" +#line 2031 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(2); } -#line 8033 "MachineIndependent/glslang_tab.cpp" +#line 8036 "MachineIndependent/glslang_tab.cpp" break; case 269: /* type_specifier_nonarray: F32VEC3 */ -#line 2034 "MachineIndependent/glslang.y" +#line 2037 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(3); } -#line 8044 "MachineIndependent/glslang_tab.cpp" +#line 8047 "MachineIndependent/glslang_tab.cpp" break; case 270: /* type_specifier_nonarray: F32VEC4 */ -#line 2040 "MachineIndependent/glslang.y" +#line 2043 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setVector(4); } -#line 8055 "MachineIndependent/glslang_tab.cpp" +#line 8058 "MachineIndependent/glslang_tab.cpp" break; case 271: /* type_specifier_nonarray: F64VEC2 */ -#line 2046 "MachineIndependent/glslang.y" +#line 2049 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(2); } -#line 8066 "MachineIndependent/glslang_tab.cpp" +#line 8069 "MachineIndependent/glslang_tab.cpp" break; case 272: /* type_specifier_nonarray: F64VEC3 */ -#line 2052 "MachineIndependent/glslang.y" +#line 2055 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(3); } -#line 8077 "MachineIndependent/glslang_tab.cpp" +#line 8080 "MachineIndependent/glslang_tab.cpp" break; case 273: /* type_specifier_nonarray: F64VEC4 */ -#line 2058 "MachineIndependent/glslang.y" +#line 2061 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setVector(4); } -#line 8088 "MachineIndependent/glslang_tab.cpp" +#line 8091 "MachineIndependent/glslang_tab.cpp" break; case 274: /* type_specifier_nonarray: I8VEC2 */ -#line 2064 "MachineIndependent/glslang.y" +#line 2067 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(2); } -#line 8099 "MachineIndependent/glslang_tab.cpp" +#line 8102 "MachineIndependent/glslang_tab.cpp" break; case 275: /* type_specifier_nonarray: I8VEC3 */ -#line 2070 "MachineIndependent/glslang.y" +#line 2073 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(3); } -#line 8110 "MachineIndependent/glslang_tab.cpp" +#line 8113 "MachineIndependent/glslang_tab.cpp" break; case 276: /* type_specifier_nonarray: I8VEC4 */ -#line 2076 "MachineIndependent/glslang.y" +#line 2079 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt8; (yyval.interm.type).setVector(4); } -#line 8121 "MachineIndependent/glslang_tab.cpp" +#line 8124 "MachineIndependent/glslang_tab.cpp" break; case 277: /* type_specifier_nonarray: I16VEC2 */ -#line 2082 "MachineIndependent/glslang.y" +#line 2085 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(2); } -#line 8132 "MachineIndependent/glslang_tab.cpp" +#line 8135 "MachineIndependent/glslang_tab.cpp" break; case 278: /* type_specifier_nonarray: I16VEC3 */ -#line 2088 "MachineIndependent/glslang.y" +#line 2091 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(3); } -#line 8143 "MachineIndependent/glslang_tab.cpp" +#line 8146 "MachineIndependent/glslang_tab.cpp" break; case 279: /* type_specifier_nonarray: I16VEC4 */ -#line 2094 "MachineIndependent/glslang.y" +#line 2097 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt16; (yyval.interm.type).setVector(4); } -#line 8154 "MachineIndependent/glslang_tab.cpp" +#line 8157 "MachineIndependent/glslang_tab.cpp" break; case 280: /* type_specifier_nonarray: I32VEC2 */ -#line 2100 "MachineIndependent/glslang.y" +#line 2103 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(2); } -#line 8165 "MachineIndependent/glslang_tab.cpp" +#line 8168 "MachineIndependent/glslang_tab.cpp" break; case 281: /* type_specifier_nonarray: I32VEC3 */ -#line 2106 "MachineIndependent/glslang.y" +#line 2109 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(3); } -#line 8176 "MachineIndependent/glslang_tab.cpp" +#line 8179 "MachineIndependent/glslang_tab.cpp" break; case 282: /* type_specifier_nonarray: I32VEC4 */ -#line 2112 "MachineIndependent/glslang.y" +#line 2115 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit signed integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt; (yyval.interm.type).setVector(4); } -#line 8187 "MachineIndependent/glslang_tab.cpp" +#line 8190 "MachineIndependent/glslang_tab.cpp" break; case 283: /* type_specifier_nonarray: I64VEC2 */ -#line 2118 "MachineIndependent/glslang.y" +#line 2121 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(2); } -#line 8198 "MachineIndependent/glslang_tab.cpp" +#line 8201 "MachineIndependent/glslang_tab.cpp" break; case 284: /* type_specifier_nonarray: I64VEC3 */ -#line 2124 "MachineIndependent/glslang.y" +#line 2127 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(3); } -#line 8209 "MachineIndependent/glslang_tab.cpp" +#line 8212 "MachineIndependent/glslang_tab.cpp" break; case 285: /* type_specifier_nonarray: I64VEC4 */ -#line 2130 "MachineIndependent/glslang.y" +#line 2133 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtInt64; (yyval.interm.type).setVector(4); } -#line 8220 "MachineIndependent/glslang_tab.cpp" +#line 8223 "MachineIndependent/glslang_tab.cpp" break; case 286: /* type_specifier_nonarray: U8VEC2 */ -#line 2136 "MachineIndependent/glslang.y" +#line 2139 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(2); } -#line 8231 "MachineIndependent/glslang_tab.cpp" +#line 8234 "MachineIndependent/glslang_tab.cpp" break; case 287: /* type_specifier_nonarray: U8VEC3 */ -#line 2142 "MachineIndependent/glslang.y" +#line 2145 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(3); } -#line 8242 "MachineIndependent/glslang_tab.cpp" +#line 8245 "MachineIndependent/glslang_tab.cpp" break; case 288: /* type_specifier_nonarray: U8VEC4 */ -#line 2148 "MachineIndependent/glslang.y" +#line 2151 "MachineIndependent/glslang.y" { parseContext.int8ScalarVectorCheck((yyvsp[0].lex).loc, "8-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint8; (yyval.interm.type).setVector(4); } -#line 8253 "MachineIndependent/glslang_tab.cpp" +#line 8256 "MachineIndependent/glslang_tab.cpp" break; case 289: /* type_specifier_nonarray: U16VEC2 */ -#line 2154 "MachineIndependent/glslang.y" +#line 2157 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(2); } -#line 8264 "MachineIndependent/glslang_tab.cpp" +#line 8267 "MachineIndependent/glslang_tab.cpp" break; case 290: /* type_specifier_nonarray: U16VEC3 */ -#line 2160 "MachineIndependent/glslang.y" +#line 2163 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(3); } -#line 8275 "MachineIndependent/glslang_tab.cpp" +#line 8278 "MachineIndependent/glslang_tab.cpp" break; case 291: /* type_specifier_nonarray: U16VEC4 */ -#line 2166 "MachineIndependent/glslang.y" +#line 2169 "MachineIndependent/glslang.y" { parseContext.int16ScalarVectorCheck((yyvsp[0].lex).loc, "16-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint16; (yyval.interm.type).setVector(4); } -#line 8286 "MachineIndependent/glslang_tab.cpp" +#line 8289 "MachineIndependent/glslang_tab.cpp" break; case 292: /* type_specifier_nonarray: U32VEC2 */ -#line 2172 "MachineIndependent/glslang.y" +#line 2175 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(2); } -#line 8297 "MachineIndependent/glslang_tab.cpp" +#line 8300 "MachineIndependent/glslang_tab.cpp" break; case 293: /* type_specifier_nonarray: U32VEC3 */ -#line 2178 "MachineIndependent/glslang.y" +#line 2181 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(3); } -#line 8308 "MachineIndependent/glslang_tab.cpp" +#line 8311 "MachineIndependent/glslang_tab.cpp" break; case 294: /* type_specifier_nonarray: U32VEC4 */ -#line 2184 "MachineIndependent/glslang.y" +#line 2187 "MachineIndependent/glslang.y" { parseContext.explicitInt32Check((yyvsp[0].lex).loc, "32-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint; (yyval.interm.type).setVector(4); } -#line 8319 "MachineIndependent/glslang_tab.cpp" +#line 8322 "MachineIndependent/glslang_tab.cpp" break; case 295: /* type_specifier_nonarray: U64VEC2 */ -#line 2190 "MachineIndependent/glslang.y" +#line 2193 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(2); } -#line 8330 "MachineIndependent/glslang_tab.cpp" +#line 8333 "MachineIndependent/glslang_tab.cpp" break; case 296: /* type_specifier_nonarray: U64VEC3 */ -#line 2196 "MachineIndependent/glslang.y" +#line 2199 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(3); } -#line 8341 "MachineIndependent/glslang_tab.cpp" +#line 8344 "MachineIndependent/glslang_tab.cpp" break; case 297: /* type_specifier_nonarray: U64VEC4 */ -#line 2202 "MachineIndependent/glslang.y" +#line 2205 "MachineIndependent/glslang.y" { parseContext.int64Check((yyvsp[0].lex).loc, "64-bit unsigned integer vector", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtUint64; (yyval.interm.type).setVector(4); } -#line 8352 "MachineIndependent/glslang_tab.cpp" +#line 8355 "MachineIndependent/glslang_tab.cpp" break; case 298: /* type_specifier_nonarray: DMAT2 */ -#line 2208 "MachineIndependent/glslang.y" +#line 2211 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8361,11 +8364,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8365 "MachineIndependent/glslang_tab.cpp" +#line 8368 "MachineIndependent/glslang_tab.cpp" break; case 299: /* type_specifier_nonarray: DMAT3 */ -#line 2216 "MachineIndependent/glslang.y" +#line 2219 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8374,11 +8377,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8378 "MachineIndependent/glslang_tab.cpp" +#line 8381 "MachineIndependent/glslang_tab.cpp" break; case 300: /* type_specifier_nonarray: DMAT4 */ -#line 2224 "MachineIndependent/glslang.y" +#line 2227 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8387,11 +8390,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8391 "MachineIndependent/glslang_tab.cpp" +#line 8394 "MachineIndependent/glslang_tab.cpp" break; case 301: /* type_specifier_nonarray: DMAT2X2 */ -#line 2232 "MachineIndependent/glslang.y" +#line 2235 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8400,11 +8403,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8404 "MachineIndependent/glslang_tab.cpp" +#line 8407 "MachineIndependent/glslang_tab.cpp" break; case 302: /* type_specifier_nonarray: DMAT2X3 */ -#line 2240 "MachineIndependent/glslang.y" +#line 2243 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8413,11 +8416,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8417 "MachineIndependent/glslang_tab.cpp" +#line 8420 "MachineIndependent/glslang_tab.cpp" break; case 303: /* type_specifier_nonarray: DMAT2X4 */ -#line 2248 "MachineIndependent/glslang.y" +#line 2251 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8426,11 +8429,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8430 "MachineIndependent/glslang_tab.cpp" +#line 8433 "MachineIndependent/glslang_tab.cpp" break; case 304: /* type_specifier_nonarray: DMAT3X2 */ -#line 2256 "MachineIndependent/glslang.y" +#line 2259 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8439,11 +8442,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8443 "MachineIndependent/glslang_tab.cpp" +#line 8446 "MachineIndependent/glslang_tab.cpp" break; case 305: /* type_specifier_nonarray: DMAT3X3 */ -#line 2264 "MachineIndependent/glslang.y" +#line 2267 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8452,11 +8455,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8456 "MachineIndependent/glslang_tab.cpp" +#line 8459 "MachineIndependent/glslang_tab.cpp" break; case 306: /* type_specifier_nonarray: DMAT3X4 */ -#line 2272 "MachineIndependent/glslang.y" +#line 2275 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8465,11 +8468,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8469 "MachineIndependent/glslang_tab.cpp" +#line 8472 "MachineIndependent/glslang_tab.cpp" break; case 307: /* type_specifier_nonarray: DMAT4X2 */ -#line 2280 "MachineIndependent/glslang.y" +#line 2283 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8478,11 +8481,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8482 "MachineIndependent/glslang_tab.cpp" +#line 8485 "MachineIndependent/glslang_tab.cpp" break; case 308: /* type_specifier_nonarray: DMAT4X3 */ -#line 2288 "MachineIndependent/glslang.y" +#line 2291 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8491,11 +8494,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8495 "MachineIndependent/glslang_tab.cpp" +#line 8498 "MachineIndependent/glslang_tab.cpp" break; case 309: /* type_specifier_nonarray: DMAT4X4 */ -#line 2296 "MachineIndependent/glslang.y" +#line 2299 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ECoreProfile | ECompatibilityProfile, "double matrix"); if (! parseContext.symbolTable.atBuiltInLevel()) @@ -8504,2261 +8507,2261 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8508 "MachineIndependent/glslang_tab.cpp" +#line 8511 "MachineIndependent/glslang_tab.cpp" break; case 310: /* type_specifier_nonarray: F16MAT2 */ -#line 2304 "MachineIndependent/glslang.y" +#line 2307 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8519 "MachineIndependent/glslang_tab.cpp" +#line 8522 "MachineIndependent/glslang_tab.cpp" break; case 311: /* type_specifier_nonarray: F16MAT3 */ -#line 2310 "MachineIndependent/glslang.y" +#line 2313 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8530 "MachineIndependent/glslang_tab.cpp" +#line 8533 "MachineIndependent/glslang_tab.cpp" break; case 312: /* type_specifier_nonarray: F16MAT4 */ -#line 2316 "MachineIndependent/glslang.y" +#line 2319 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8541 "MachineIndependent/glslang_tab.cpp" +#line 8544 "MachineIndependent/glslang_tab.cpp" break; case 313: /* type_specifier_nonarray: F16MAT2X2 */ -#line 2322 "MachineIndependent/glslang.y" +#line 2325 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 2); } -#line 8552 "MachineIndependent/glslang_tab.cpp" +#line 8555 "MachineIndependent/glslang_tab.cpp" break; case 314: /* type_specifier_nonarray: F16MAT2X3 */ -#line 2328 "MachineIndependent/glslang.y" +#line 2331 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 3); } -#line 8563 "MachineIndependent/glslang_tab.cpp" +#line 8566 "MachineIndependent/glslang_tab.cpp" break; case 315: /* type_specifier_nonarray: F16MAT2X4 */ -#line 2334 "MachineIndependent/glslang.y" +#line 2337 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(2, 4); } -#line 8574 "MachineIndependent/glslang_tab.cpp" +#line 8577 "MachineIndependent/glslang_tab.cpp" break; case 316: /* type_specifier_nonarray: F16MAT3X2 */ -#line 2340 "MachineIndependent/glslang.y" +#line 2343 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 2); } -#line 8585 "MachineIndependent/glslang_tab.cpp" +#line 8588 "MachineIndependent/glslang_tab.cpp" break; case 317: /* type_specifier_nonarray: F16MAT3X3 */ -#line 2346 "MachineIndependent/glslang.y" +#line 2349 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 3); } -#line 8596 "MachineIndependent/glslang_tab.cpp" +#line 8599 "MachineIndependent/glslang_tab.cpp" break; case 318: /* type_specifier_nonarray: F16MAT3X4 */ -#line 2352 "MachineIndependent/glslang.y" +#line 2355 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(3, 4); } -#line 8607 "MachineIndependent/glslang_tab.cpp" +#line 8610 "MachineIndependent/glslang_tab.cpp" break; case 319: /* type_specifier_nonarray: F16MAT4X2 */ -#line 2358 "MachineIndependent/glslang.y" +#line 2361 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 2); } -#line 8618 "MachineIndependent/glslang_tab.cpp" +#line 8621 "MachineIndependent/glslang_tab.cpp" break; case 320: /* type_specifier_nonarray: F16MAT4X3 */ -#line 2364 "MachineIndependent/glslang.y" +#line 2367 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 3); } -#line 8629 "MachineIndependent/glslang_tab.cpp" +#line 8632 "MachineIndependent/glslang_tab.cpp" break; case 321: /* type_specifier_nonarray: F16MAT4X4 */ -#line 2370 "MachineIndependent/glslang.y" +#line 2373 "MachineIndependent/glslang.y" { parseContext.float16Check((yyvsp[0].lex).loc, "half float matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat16; (yyval.interm.type).setMatrix(4, 4); } -#line 8640 "MachineIndependent/glslang_tab.cpp" +#line 8643 "MachineIndependent/glslang_tab.cpp" break; case 322: /* type_specifier_nonarray: F32MAT2 */ -#line 2376 "MachineIndependent/glslang.y" +#line 2379 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8651 "MachineIndependent/glslang_tab.cpp" +#line 8654 "MachineIndependent/glslang_tab.cpp" break; case 323: /* type_specifier_nonarray: F32MAT3 */ -#line 2382 "MachineIndependent/glslang.y" +#line 2385 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8662 "MachineIndependent/glslang_tab.cpp" +#line 8665 "MachineIndependent/glslang_tab.cpp" break; case 324: /* type_specifier_nonarray: F32MAT4 */ -#line 2388 "MachineIndependent/glslang.y" +#line 2391 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8673 "MachineIndependent/glslang_tab.cpp" +#line 8676 "MachineIndependent/glslang_tab.cpp" break; case 325: /* type_specifier_nonarray: F32MAT2X2 */ -#line 2394 "MachineIndependent/glslang.y" +#line 2397 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 2); } -#line 8684 "MachineIndependent/glslang_tab.cpp" +#line 8687 "MachineIndependent/glslang_tab.cpp" break; case 326: /* type_specifier_nonarray: F32MAT2X3 */ -#line 2400 "MachineIndependent/glslang.y" +#line 2403 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 3); } -#line 8695 "MachineIndependent/glslang_tab.cpp" +#line 8698 "MachineIndependent/glslang_tab.cpp" break; case 327: /* type_specifier_nonarray: F32MAT2X4 */ -#line 2406 "MachineIndependent/glslang.y" +#line 2409 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(2, 4); } -#line 8706 "MachineIndependent/glslang_tab.cpp" +#line 8709 "MachineIndependent/glslang_tab.cpp" break; case 328: /* type_specifier_nonarray: F32MAT3X2 */ -#line 2412 "MachineIndependent/glslang.y" +#line 2415 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 2); } -#line 8717 "MachineIndependent/glslang_tab.cpp" +#line 8720 "MachineIndependent/glslang_tab.cpp" break; case 329: /* type_specifier_nonarray: F32MAT3X3 */ -#line 2418 "MachineIndependent/glslang.y" +#line 2421 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 3); } -#line 8728 "MachineIndependent/glslang_tab.cpp" +#line 8731 "MachineIndependent/glslang_tab.cpp" break; case 330: /* type_specifier_nonarray: F32MAT3X4 */ -#line 2424 "MachineIndependent/glslang.y" +#line 2427 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(3, 4); } -#line 8739 "MachineIndependent/glslang_tab.cpp" +#line 8742 "MachineIndependent/glslang_tab.cpp" break; case 331: /* type_specifier_nonarray: F32MAT4X2 */ -#line 2430 "MachineIndependent/glslang.y" +#line 2433 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 2); } -#line 8750 "MachineIndependent/glslang_tab.cpp" +#line 8753 "MachineIndependent/glslang_tab.cpp" break; case 332: /* type_specifier_nonarray: F32MAT4X3 */ -#line 2436 "MachineIndependent/glslang.y" +#line 2439 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 3); } -#line 8761 "MachineIndependent/glslang_tab.cpp" +#line 8764 "MachineIndependent/glslang_tab.cpp" break; case 333: /* type_specifier_nonarray: F32MAT4X4 */ -#line 2442 "MachineIndependent/glslang.y" +#line 2445 "MachineIndependent/glslang.y" { parseContext.explicitFloat32Check((yyvsp[0].lex).loc, "float32_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtFloat; (yyval.interm.type).setMatrix(4, 4); } -#line 8772 "MachineIndependent/glslang_tab.cpp" +#line 8775 "MachineIndependent/glslang_tab.cpp" break; case 334: /* type_specifier_nonarray: F64MAT2 */ -#line 2448 "MachineIndependent/glslang.y" +#line 2451 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8783 "MachineIndependent/glslang_tab.cpp" +#line 8786 "MachineIndependent/glslang_tab.cpp" break; case 335: /* type_specifier_nonarray: F64MAT3 */ -#line 2454 "MachineIndependent/glslang.y" +#line 2457 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8794 "MachineIndependent/glslang_tab.cpp" +#line 8797 "MachineIndependent/glslang_tab.cpp" break; case 336: /* type_specifier_nonarray: F64MAT4 */ -#line 2460 "MachineIndependent/glslang.y" +#line 2463 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8805 "MachineIndependent/glslang_tab.cpp" +#line 8808 "MachineIndependent/glslang_tab.cpp" break; case 337: /* type_specifier_nonarray: F64MAT2X2 */ -#line 2466 "MachineIndependent/glslang.y" +#line 2469 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 2); } -#line 8816 "MachineIndependent/glslang_tab.cpp" +#line 8819 "MachineIndependent/glslang_tab.cpp" break; case 338: /* type_specifier_nonarray: F64MAT2X3 */ -#line 2472 "MachineIndependent/glslang.y" +#line 2475 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 3); } -#line 8827 "MachineIndependent/glslang_tab.cpp" +#line 8830 "MachineIndependent/glslang_tab.cpp" break; case 339: /* type_specifier_nonarray: F64MAT2X4 */ -#line 2478 "MachineIndependent/glslang.y" +#line 2481 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(2, 4); } -#line 8838 "MachineIndependent/glslang_tab.cpp" +#line 8841 "MachineIndependent/glslang_tab.cpp" break; case 340: /* type_specifier_nonarray: F64MAT3X2 */ -#line 2484 "MachineIndependent/glslang.y" +#line 2487 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 2); } -#line 8849 "MachineIndependent/glslang_tab.cpp" +#line 8852 "MachineIndependent/glslang_tab.cpp" break; case 341: /* type_specifier_nonarray: F64MAT3X3 */ -#line 2490 "MachineIndependent/glslang.y" +#line 2493 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 3); } -#line 8860 "MachineIndependent/glslang_tab.cpp" +#line 8863 "MachineIndependent/glslang_tab.cpp" break; case 342: /* type_specifier_nonarray: F64MAT3X4 */ -#line 2496 "MachineIndependent/glslang.y" +#line 2499 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(3, 4); } -#line 8871 "MachineIndependent/glslang_tab.cpp" +#line 8874 "MachineIndependent/glslang_tab.cpp" break; case 343: /* type_specifier_nonarray: F64MAT4X2 */ -#line 2502 "MachineIndependent/glslang.y" +#line 2505 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 2); } -#line 8882 "MachineIndependent/glslang_tab.cpp" +#line 8885 "MachineIndependent/glslang_tab.cpp" break; case 344: /* type_specifier_nonarray: F64MAT4X3 */ -#line 2508 "MachineIndependent/glslang.y" +#line 2511 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 3); } -#line 8893 "MachineIndependent/glslang_tab.cpp" +#line 8896 "MachineIndependent/glslang_tab.cpp" break; case 345: /* type_specifier_nonarray: F64MAT4X4 */ -#line 2514 "MachineIndependent/glslang.y" +#line 2517 "MachineIndependent/glslang.y" { parseContext.explicitFloat64Check((yyvsp[0].lex).loc, "float64_t matrix", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtDouble; (yyval.interm.type).setMatrix(4, 4); } -#line 8904 "MachineIndependent/glslang_tab.cpp" +#line 8907 "MachineIndependent/glslang_tab.cpp" break; case 346: /* type_specifier_nonarray: ACCSTRUCTNV */ -#line 2520 "MachineIndependent/glslang.y" +#line 2523 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8913 "MachineIndependent/glslang_tab.cpp" +#line 8916 "MachineIndependent/glslang_tab.cpp" break; case 347: /* type_specifier_nonarray: ACCSTRUCTEXT */ -#line 2524 "MachineIndependent/glslang.y" +#line 2527 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAccStruct; } -#line 8922 "MachineIndependent/glslang_tab.cpp" +#line 8925 "MachineIndependent/glslang_tab.cpp" break; case 348: /* type_specifier_nonarray: RAYQUERYEXT */ -#line 2528 "MachineIndependent/glslang.y" +#line 2531 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtRayQuery; } -#line 8931 "MachineIndependent/glslang_tab.cpp" +#line 8934 "MachineIndependent/glslang_tab.cpp" break; case 349: /* type_specifier_nonarray: ATOMIC_UINT */ -#line 2532 "MachineIndependent/glslang.y" +#line 2535 "MachineIndependent/glslang.y" { parseContext.vulkanRemoved((yyvsp[0].lex).loc, "atomic counter types"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtAtomicUint; } -#line 8941 "MachineIndependent/glslang_tab.cpp" +#line 8944 "MachineIndependent/glslang_tab.cpp" break; case 350: /* type_specifier_nonarray: SAMPLER1D */ -#line 2537 "MachineIndependent/glslang.y" +#line 2540 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D); } -#line 8951 "MachineIndependent/glslang_tab.cpp" +#line 8954 "MachineIndependent/glslang_tab.cpp" break; case 351: /* type_specifier_nonarray: SAMPLER2D */ -#line 2542 "MachineIndependent/glslang.y" +#line 2545 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); } -#line 8961 "MachineIndependent/glslang_tab.cpp" +#line 8964 "MachineIndependent/glslang_tab.cpp" break; case 352: /* type_specifier_nonarray: SAMPLER3D */ -#line 2547 "MachineIndependent/glslang.y" +#line 2550 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd3D); } -#line 8971 "MachineIndependent/glslang_tab.cpp" +#line 8974 "MachineIndependent/glslang_tab.cpp" break; case 353: /* type_specifier_nonarray: SAMPLERCUBE */ -#line 2552 "MachineIndependent/glslang.y" +#line 2555 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube); } -#line 8981 "MachineIndependent/glslang_tab.cpp" +#line 8984 "MachineIndependent/glslang_tab.cpp" break; case 354: /* type_specifier_nonarray: SAMPLER2DSHADOW */ -#line 2557 "MachineIndependent/glslang.y" +#line 2560 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, true); } -#line 8991 "MachineIndependent/glslang_tab.cpp" +#line 8994 "MachineIndependent/glslang_tab.cpp" break; case 355: /* type_specifier_nonarray: SAMPLERCUBESHADOW */ -#line 2562 "MachineIndependent/glslang.y" +#line 2565 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, false, true); } -#line 9001 "MachineIndependent/glslang_tab.cpp" +#line 9004 "MachineIndependent/glslang_tab.cpp" break; case 356: /* type_specifier_nonarray: SAMPLER2DARRAY */ -#line 2567 "MachineIndependent/glslang.y" +#line 2570 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true); } -#line 9011 "MachineIndependent/glslang_tab.cpp" +#line 9014 "MachineIndependent/glslang_tab.cpp" break; case 357: /* type_specifier_nonarray: SAMPLER2DARRAYSHADOW */ -#line 2572 "MachineIndependent/glslang.y" +#line 2575 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, true); } -#line 9021 "MachineIndependent/glslang_tab.cpp" +#line 9024 "MachineIndependent/glslang_tab.cpp" break; case 358: /* type_specifier_nonarray: SAMPLER1DSHADOW */ -#line 2577 "MachineIndependent/glslang.y" +#line 2580 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, false, true); } -#line 9031 "MachineIndependent/glslang_tab.cpp" +#line 9034 "MachineIndependent/glslang_tab.cpp" break; case 359: /* type_specifier_nonarray: SAMPLER1DARRAY */ -#line 2582 "MachineIndependent/glslang.y" +#line 2585 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true); } -#line 9041 "MachineIndependent/glslang_tab.cpp" +#line 9044 "MachineIndependent/glslang_tab.cpp" break; case 360: /* type_specifier_nonarray: SAMPLER1DARRAYSHADOW */ -#line 2587 "MachineIndependent/glslang.y" +#line 2590 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd1D, true, true); } -#line 9051 "MachineIndependent/glslang_tab.cpp" +#line 9054 "MachineIndependent/glslang_tab.cpp" break; case 361: /* type_specifier_nonarray: SAMPLERCUBEARRAY */ -#line 2592 "MachineIndependent/glslang.y" +#line 2595 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true); } -#line 9061 "MachineIndependent/glslang_tab.cpp" +#line 9064 "MachineIndependent/glslang_tab.cpp" break; case 362: /* type_specifier_nonarray: SAMPLERCUBEARRAYSHADOW */ -#line 2597 "MachineIndependent/glslang.y" +#line 2600 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdCube, true, true); } -#line 9071 "MachineIndependent/glslang_tab.cpp" +#line 9074 "MachineIndependent/glslang_tab.cpp" break; case 363: /* type_specifier_nonarray: F16SAMPLER1D */ -#line 2602 "MachineIndependent/glslang.y" +#line 2605 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D); } -#line 9082 "MachineIndependent/glslang_tab.cpp" +#line 9085 "MachineIndependent/glslang_tab.cpp" break; case 364: /* type_specifier_nonarray: F16SAMPLER2D */ -#line 2608 "MachineIndependent/glslang.y" +#line 2611 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D); } -#line 9093 "MachineIndependent/glslang_tab.cpp" +#line 9096 "MachineIndependent/glslang_tab.cpp" break; case 365: /* type_specifier_nonarray: F16SAMPLER3D */ -#line 2614 "MachineIndependent/glslang.y" +#line 2617 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd3D); } -#line 9104 "MachineIndependent/glslang_tab.cpp" +#line 9107 "MachineIndependent/glslang_tab.cpp" break; case 366: /* type_specifier_nonarray: F16SAMPLERCUBE */ -#line 2620 "MachineIndependent/glslang.y" +#line 2623 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube); } -#line 9115 "MachineIndependent/glslang_tab.cpp" +#line 9118 "MachineIndependent/glslang_tab.cpp" break; case 367: /* type_specifier_nonarray: F16SAMPLER1DSHADOW */ -#line 2626 "MachineIndependent/glslang.y" +#line 2629 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, false, true); } -#line 9126 "MachineIndependent/glslang_tab.cpp" +#line 9129 "MachineIndependent/glslang_tab.cpp" break; case 368: /* type_specifier_nonarray: F16SAMPLER2DSHADOW */ -#line 2632 "MachineIndependent/glslang.y" +#line 2635 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, true); } -#line 9137 "MachineIndependent/glslang_tab.cpp" +#line 9140 "MachineIndependent/glslang_tab.cpp" break; case 369: /* type_specifier_nonarray: F16SAMPLERCUBESHADOW */ -#line 2638 "MachineIndependent/glslang.y" +#line 2641 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, false, true); } -#line 9148 "MachineIndependent/glslang_tab.cpp" +#line 9151 "MachineIndependent/glslang_tab.cpp" break; case 370: /* type_specifier_nonarray: F16SAMPLER1DARRAY */ -#line 2644 "MachineIndependent/glslang.y" +#line 2647 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true); } -#line 9159 "MachineIndependent/glslang_tab.cpp" +#line 9162 "MachineIndependent/glslang_tab.cpp" break; case 371: /* type_specifier_nonarray: F16SAMPLER2DARRAY */ -#line 2650 "MachineIndependent/glslang.y" +#line 2653 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true); } -#line 9170 "MachineIndependent/glslang_tab.cpp" +#line 9173 "MachineIndependent/glslang_tab.cpp" break; case 372: /* type_specifier_nonarray: F16SAMPLER1DARRAYSHADOW */ -#line 2656 "MachineIndependent/glslang.y" +#line 2659 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd1D, true, true); } -#line 9181 "MachineIndependent/glslang_tab.cpp" +#line 9184 "MachineIndependent/glslang_tab.cpp" break; case 373: /* type_specifier_nonarray: F16SAMPLER2DARRAYSHADOW */ -#line 2662 "MachineIndependent/glslang.y" +#line 2665 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, true); } -#line 9192 "MachineIndependent/glslang_tab.cpp" +#line 9195 "MachineIndependent/glslang_tab.cpp" break; case 374: /* type_specifier_nonarray: F16SAMPLERCUBEARRAY */ -#line 2668 "MachineIndependent/glslang.y" +#line 2671 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true); } -#line 9203 "MachineIndependent/glslang_tab.cpp" +#line 9206 "MachineIndependent/glslang_tab.cpp" break; case 375: /* type_specifier_nonarray: F16SAMPLERCUBEARRAYSHADOW */ -#line 2674 "MachineIndependent/glslang.y" +#line 2677 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdCube, true, true); } -#line 9214 "MachineIndependent/glslang_tab.cpp" +#line 9217 "MachineIndependent/glslang_tab.cpp" break; case 376: /* type_specifier_nonarray: ISAMPLER1D */ -#line 2680 "MachineIndependent/glslang.y" +#line 2683 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D); } -#line 9224 "MachineIndependent/glslang_tab.cpp" +#line 9227 "MachineIndependent/glslang_tab.cpp" break; case 377: /* type_specifier_nonarray: ISAMPLER2D */ -#line 2685 "MachineIndependent/glslang.y" +#line 2688 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D); } -#line 9234 "MachineIndependent/glslang_tab.cpp" +#line 9237 "MachineIndependent/glslang_tab.cpp" break; case 378: /* type_specifier_nonarray: ISAMPLER3D */ -#line 2690 "MachineIndependent/glslang.y" +#line 2693 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd3D); } -#line 9244 "MachineIndependent/glslang_tab.cpp" +#line 9247 "MachineIndependent/glslang_tab.cpp" break; case 379: /* type_specifier_nonarray: ISAMPLERCUBE */ -#line 2695 "MachineIndependent/glslang.y" +#line 2698 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube); } -#line 9254 "MachineIndependent/glslang_tab.cpp" +#line 9257 "MachineIndependent/glslang_tab.cpp" break; case 380: /* type_specifier_nonarray: ISAMPLER2DARRAY */ -#line 2700 "MachineIndependent/glslang.y" +#line 2703 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true); } -#line 9264 "MachineIndependent/glslang_tab.cpp" +#line 9267 "MachineIndependent/glslang_tab.cpp" break; case 381: /* type_specifier_nonarray: USAMPLER2D */ -#line 2705 "MachineIndependent/glslang.y" +#line 2708 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D); } -#line 9274 "MachineIndependent/glslang_tab.cpp" +#line 9277 "MachineIndependent/glslang_tab.cpp" break; case 382: /* type_specifier_nonarray: USAMPLER3D */ -#line 2710 "MachineIndependent/glslang.y" +#line 2713 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd3D); } -#line 9284 "MachineIndependent/glslang_tab.cpp" +#line 9287 "MachineIndependent/glslang_tab.cpp" break; case 383: /* type_specifier_nonarray: USAMPLERCUBE */ -#line 2715 "MachineIndependent/glslang.y" +#line 2718 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube); } -#line 9294 "MachineIndependent/glslang_tab.cpp" +#line 9297 "MachineIndependent/glslang_tab.cpp" break; case 384: /* type_specifier_nonarray: ISAMPLER1DARRAY */ -#line 2720 "MachineIndependent/glslang.y" +#line 2723 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd1D, true); } -#line 9304 "MachineIndependent/glslang_tab.cpp" +#line 9307 "MachineIndependent/glslang_tab.cpp" break; case 385: /* type_specifier_nonarray: ISAMPLERCUBEARRAY */ -#line 2725 "MachineIndependent/glslang.y" +#line 2728 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdCube, true); } -#line 9314 "MachineIndependent/glslang_tab.cpp" +#line 9317 "MachineIndependent/glslang_tab.cpp" break; case 386: /* type_specifier_nonarray: USAMPLER1D */ -#line 2730 "MachineIndependent/glslang.y" +#line 2733 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D); } -#line 9324 "MachineIndependent/glslang_tab.cpp" +#line 9327 "MachineIndependent/glslang_tab.cpp" break; case 387: /* type_specifier_nonarray: USAMPLER1DARRAY */ -#line 2735 "MachineIndependent/glslang.y" +#line 2738 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd1D, true); } -#line 9334 "MachineIndependent/glslang_tab.cpp" +#line 9337 "MachineIndependent/glslang_tab.cpp" break; case 388: /* type_specifier_nonarray: USAMPLERCUBEARRAY */ -#line 2740 "MachineIndependent/glslang.y" +#line 2743 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdCube, true); } -#line 9344 "MachineIndependent/glslang_tab.cpp" +#line 9347 "MachineIndependent/glslang_tab.cpp" break; case 389: /* type_specifier_nonarray: TEXTURECUBEARRAY */ -#line 2745 "MachineIndependent/glslang.y" +#line 2748 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube, true); } -#line 9354 "MachineIndependent/glslang_tab.cpp" +#line 9357 "MachineIndependent/glslang_tab.cpp" break; case 390: /* type_specifier_nonarray: ITEXTURECUBEARRAY */ -#line 2750 "MachineIndependent/glslang.y" +#line 2753 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube, true); } -#line 9364 "MachineIndependent/glslang_tab.cpp" +#line 9367 "MachineIndependent/glslang_tab.cpp" break; case 391: /* type_specifier_nonarray: UTEXTURECUBEARRAY */ -#line 2755 "MachineIndependent/glslang.y" +#line 2758 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube, true); } -#line 9374 "MachineIndependent/glslang_tab.cpp" +#line 9377 "MachineIndependent/glslang_tab.cpp" break; case 392: /* type_specifier_nonarray: USAMPLER2DARRAY */ -#line 2760 "MachineIndependent/glslang.y" +#line 2763 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true); } -#line 9384 "MachineIndependent/glslang_tab.cpp" +#line 9387 "MachineIndependent/glslang_tab.cpp" break; case 393: /* type_specifier_nonarray: TEXTURE2D */ -#line 2765 "MachineIndependent/glslang.y" +#line 2768 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D); } -#line 9394 "MachineIndependent/glslang_tab.cpp" +#line 9397 "MachineIndependent/glslang_tab.cpp" break; case 394: /* type_specifier_nonarray: TEXTURE3D */ -#line 2770 "MachineIndependent/glslang.y" +#line 2773 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd3D); } -#line 9404 "MachineIndependent/glslang_tab.cpp" +#line 9407 "MachineIndependent/glslang_tab.cpp" break; case 395: /* type_specifier_nonarray: TEXTURE2DARRAY */ -#line 2775 "MachineIndependent/glslang.y" +#line 2778 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true); } -#line 9414 "MachineIndependent/glslang_tab.cpp" +#line 9417 "MachineIndependent/glslang_tab.cpp" break; case 396: /* type_specifier_nonarray: TEXTURECUBE */ -#line 2780 "MachineIndependent/glslang.y" +#line 2783 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdCube); } -#line 9424 "MachineIndependent/glslang_tab.cpp" +#line 9427 "MachineIndependent/glslang_tab.cpp" break; case 397: /* type_specifier_nonarray: ITEXTURE2D */ -#line 2785 "MachineIndependent/glslang.y" +#line 2788 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D); } -#line 9434 "MachineIndependent/glslang_tab.cpp" +#line 9437 "MachineIndependent/glslang_tab.cpp" break; case 398: /* type_specifier_nonarray: ITEXTURE3D */ -#line 2790 "MachineIndependent/glslang.y" +#line 2793 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd3D); } -#line 9444 "MachineIndependent/glslang_tab.cpp" +#line 9447 "MachineIndependent/glslang_tab.cpp" break; case 399: /* type_specifier_nonarray: ITEXTURECUBE */ -#line 2795 "MachineIndependent/glslang.y" +#line 2798 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdCube); } -#line 9454 "MachineIndependent/glslang_tab.cpp" +#line 9457 "MachineIndependent/glslang_tab.cpp" break; case 400: /* type_specifier_nonarray: ITEXTURE2DARRAY */ -#line 2800 "MachineIndependent/glslang.y" +#line 2803 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true); } -#line 9464 "MachineIndependent/glslang_tab.cpp" +#line 9467 "MachineIndependent/glslang_tab.cpp" break; case 401: /* type_specifier_nonarray: UTEXTURE2D */ -#line 2805 "MachineIndependent/glslang.y" +#line 2808 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D); } -#line 9474 "MachineIndependent/glslang_tab.cpp" +#line 9477 "MachineIndependent/glslang_tab.cpp" break; case 402: /* type_specifier_nonarray: UTEXTURE3D */ -#line 2810 "MachineIndependent/glslang.y" +#line 2813 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd3D); } -#line 9484 "MachineIndependent/glslang_tab.cpp" +#line 9487 "MachineIndependent/glslang_tab.cpp" break; case 403: /* type_specifier_nonarray: UTEXTURECUBE */ -#line 2815 "MachineIndependent/glslang.y" +#line 2818 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdCube); } -#line 9494 "MachineIndependent/glslang_tab.cpp" +#line 9497 "MachineIndependent/glslang_tab.cpp" break; case 404: /* type_specifier_nonarray: UTEXTURE2DARRAY */ -#line 2820 "MachineIndependent/glslang.y" +#line 2823 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true); } -#line 9504 "MachineIndependent/glslang_tab.cpp" +#line 9507 "MachineIndependent/glslang_tab.cpp" break; case 405: /* type_specifier_nonarray: SAMPLER */ -#line 2825 "MachineIndependent/glslang.y" +#line 2828 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(false); } -#line 9514 "MachineIndependent/glslang_tab.cpp" +#line 9517 "MachineIndependent/glslang_tab.cpp" break; case 406: /* type_specifier_nonarray: SAMPLERSHADOW */ -#line 2830 "MachineIndependent/glslang.y" +#line 2833 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setPureSampler(true); } -#line 9524 "MachineIndependent/glslang_tab.cpp" +#line 9527 "MachineIndependent/glslang_tab.cpp" break; case 407: /* type_specifier_nonarray: SAMPLER2DRECT */ -#line 2835 "MachineIndependent/glslang.y" +#line 2838 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect); } -#line 9534 "MachineIndependent/glslang_tab.cpp" +#line 9537 "MachineIndependent/glslang_tab.cpp" break; case 408: /* type_specifier_nonarray: SAMPLER2DRECTSHADOW */ -#line 2840 "MachineIndependent/glslang.y" +#line 2843 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdRect, false, true); } -#line 9544 "MachineIndependent/glslang_tab.cpp" +#line 9547 "MachineIndependent/glslang_tab.cpp" break; case 409: /* type_specifier_nonarray: F16SAMPLER2DRECT */ -#line 2845 "MachineIndependent/glslang.y" +#line 2848 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect); } -#line 9555 "MachineIndependent/glslang_tab.cpp" +#line 9558 "MachineIndependent/glslang_tab.cpp" break; case 410: /* type_specifier_nonarray: F16SAMPLER2DRECTSHADOW */ -#line 2851 "MachineIndependent/glslang.y" +#line 2854 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdRect, false, true); } -#line 9566 "MachineIndependent/glslang_tab.cpp" +#line 9569 "MachineIndependent/glslang_tab.cpp" break; case 411: /* type_specifier_nonarray: ISAMPLER2DRECT */ -#line 2857 "MachineIndependent/glslang.y" +#line 2860 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdRect); } -#line 9576 "MachineIndependent/glslang_tab.cpp" +#line 9579 "MachineIndependent/glslang_tab.cpp" break; case 412: /* type_specifier_nonarray: USAMPLER2DRECT */ -#line 2862 "MachineIndependent/glslang.y" +#line 2865 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdRect); } -#line 9586 "MachineIndependent/glslang_tab.cpp" +#line 9589 "MachineIndependent/glslang_tab.cpp" break; case 413: /* type_specifier_nonarray: SAMPLERBUFFER */ -#line 2867 "MachineIndependent/glslang.y" +#line 2870 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, EsdBuffer); } -#line 9596 "MachineIndependent/glslang_tab.cpp" +#line 9599 "MachineIndependent/glslang_tab.cpp" break; case 414: /* type_specifier_nonarray: F16SAMPLERBUFFER */ -#line 2872 "MachineIndependent/glslang.y" +#line 2875 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, EsdBuffer); } -#line 9607 "MachineIndependent/glslang_tab.cpp" +#line 9610 "MachineIndependent/glslang_tab.cpp" break; case 415: /* type_specifier_nonarray: ISAMPLERBUFFER */ -#line 2878 "MachineIndependent/glslang.y" +#line 2881 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, EsdBuffer); } -#line 9617 "MachineIndependent/glslang_tab.cpp" +#line 9620 "MachineIndependent/glslang_tab.cpp" break; case 416: /* type_specifier_nonarray: USAMPLERBUFFER */ -#line 2883 "MachineIndependent/glslang.y" +#line 2886 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, EsdBuffer); } -#line 9627 "MachineIndependent/glslang_tab.cpp" +#line 9630 "MachineIndependent/glslang_tab.cpp" break; case 417: /* type_specifier_nonarray: SAMPLER2DMS */ -#line 2888 "MachineIndependent/glslang.y" +#line 2891 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, false, false, true); } -#line 9637 "MachineIndependent/glslang_tab.cpp" +#line 9640 "MachineIndependent/glslang_tab.cpp" break; case 418: /* type_specifier_nonarray: F16SAMPLER2DMS */ -#line 2893 "MachineIndependent/glslang.y" +#line 2896 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, false, false, true); } -#line 9648 "MachineIndependent/glslang_tab.cpp" +#line 9651 "MachineIndependent/glslang_tab.cpp" break; case 419: /* type_specifier_nonarray: ISAMPLER2DMS */ -#line 2899 "MachineIndependent/glslang.y" +#line 2902 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, false, false, true); } -#line 9658 "MachineIndependent/glslang_tab.cpp" +#line 9661 "MachineIndependent/glslang_tab.cpp" break; case 420: /* type_specifier_nonarray: USAMPLER2DMS */ -#line 2904 "MachineIndependent/glslang.y" +#line 2907 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, false, false, true); } -#line 9668 "MachineIndependent/glslang_tab.cpp" +#line 9671 "MachineIndependent/glslang_tab.cpp" break; case 421: /* type_specifier_nonarray: SAMPLER2DMSARRAY */ -#line 2909 "MachineIndependent/glslang.y" +#line 2912 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D, true, false, true); } -#line 9678 "MachineIndependent/glslang_tab.cpp" +#line 9681 "MachineIndependent/glslang_tab.cpp" break; case 422: /* type_specifier_nonarray: F16SAMPLER2DMSARRAY */ -#line 2914 "MachineIndependent/glslang.y" +#line 2917 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float sampler", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat16, Esd2D, true, false, true); } -#line 9689 "MachineIndependent/glslang_tab.cpp" +#line 9692 "MachineIndependent/glslang_tab.cpp" break; case 423: /* type_specifier_nonarray: ISAMPLER2DMSARRAY */ -#line 2920 "MachineIndependent/glslang.y" +#line 2923 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtInt, Esd2D, true, false, true); } -#line 9699 "MachineIndependent/glslang_tab.cpp" +#line 9702 "MachineIndependent/glslang_tab.cpp" break; case 424: /* type_specifier_nonarray: USAMPLER2DMSARRAY */ -#line 2925 "MachineIndependent/glslang.y" +#line 2928 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtUint, Esd2D, true, false, true); } -#line 9709 "MachineIndependent/glslang_tab.cpp" +#line 9712 "MachineIndependent/glslang_tab.cpp" break; case 425: /* type_specifier_nonarray: TEXTURE1D */ -#line 2930 "MachineIndependent/glslang.y" +#line 2933 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D); } -#line 9719 "MachineIndependent/glslang_tab.cpp" +#line 9722 "MachineIndependent/glslang_tab.cpp" break; case 426: /* type_specifier_nonarray: F16TEXTURE1D */ -#line 2935 "MachineIndependent/glslang.y" +#line 2938 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D); } -#line 9730 "MachineIndependent/glslang_tab.cpp" +#line 9733 "MachineIndependent/glslang_tab.cpp" break; case 427: /* type_specifier_nonarray: F16TEXTURE2D */ -#line 2941 "MachineIndependent/glslang.y" +#line 2944 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D); } -#line 9741 "MachineIndependent/glslang_tab.cpp" +#line 9744 "MachineIndependent/glslang_tab.cpp" break; case 428: /* type_specifier_nonarray: F16TEXTURE3D */ -#line 2947 "MachineIndependent/glslang.y" +#line 2950 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd3D); } -#line 9752 "MachineIndependent/glslang_tab.cpp" +#line 9755 "MachineIndependent/glslang_tab.cpp" break; case 429: /* type_specifier_nonarray: F16TEXTURECUBE */ -#line 2953 "MachineIndependent/glslang.y" +#line 2956 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube); } -#line 9763 "MachineIndependent/glslang_tab.cpp" +#line 9766 "MachineIndependent/glslang_tab.cpp" break; case 430: /* type_specifier_nonarray: TEXTURE1DARRAY */ -#line 2959 "MachineIndependent/glslang.y" +#line 2962 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd1D, true); } -#line 9773 "MachineIndependent/glslang_tab.cpp" +#line 9776 "MachineIndependent/glslang_tab.cpp" break; case 431: /* type_specifier_nonarray: F16TEXTURE1DARRAY */ -#line 2964 "MachineIndependent/glslang.y" +#line 2967 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd1D, true); } -#line 9784 "MachineIndependent/glslang_tab.cpp" +#line 9787 "MachineIndependent/glslang_tab.cpp" break; case 432: /* type_specifier_nonarray: F16TEXTURE2DARRAY */ -#line 2970 "MachineIndependent/glslang.y" +#line 2973 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true); } -#line 9795 "MachineIndependent/glslang_tab.cpp" +#line 9798 "MachineIndependent/glslang_tab.cpp" break; case 433: /* type_specifier_nonarray: F16TEXTURECUBEARRAY */ -#line 2976 "MachineIndependent/glslang.y" +#line 2979 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdCube, true); } -#line 9806 "MachineIndependent/glslang_tab.cpp" +#line 9809 "MachineIndependent/glslang_tab.cpp" break; case 434: /* type_specifier_nonarray: ITEXTURE1D */ -#line 2982 "MachineIndependent/glslang.y" +#line 2985 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D); } -#line 9816 "MachineIndependent/glslang_tab.cpp" +#line 9819 "MachineIndependent/glslang_tab.cpp" break; case 435: /* type_specifier_nonarray: ITEXTURE1DARRAY */ -#line 2987 "MachineIndependent/glslang.y" +#line 2990 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd1D, true); } -#line 9826 "MachineIndependent/glslang_tab.cpp" +#line 9829 "MachineIndependent/glslang_tab.cpp" break; case 436: /* type_specifier_nonarray: UTEXTURE1D */ -#line 2992 "MachineIndependent/glslang.y" +#line 2995 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D); } -#line 9836 "MachineIndependent/glslang_tab.cpp" +#line 9839 "MachineIndependent/glslang_tab.cpp" break; case 437: /* type_specifier_nonarray: UTEXTURE1DARRAY */ -#line 2997 "MachineIndependent/glslang.y" +#line 3000 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd1D, true); } -#line 9846 "MachineIndependent/glslang_tab.cpp" +#line 9849 "MachineIndependent/glslang_tab.cpp" break; case 438: /* type_specifier_nonarray: TEXTURE2DRECT */ -#line 3002 "MachineIndependent/glslang.y" +#line 3005 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdRect); } -#line 9856 "MachineIndependent/glslang_tab.cpp" +#line 9859 "MachineIndependent/glslang_tab.cpp" break; case 439: /* type_specifier_nonarray: F16TEXTURE2DRECT */ -#line 3007 "MachineIndependent/glslang.y" +#line 3010 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdRect); } -#line 9867 "MachineIndependent/glslang_tab.cpp" +#line 9870 "MachineIndependent/glslang_tab.cpp" break; case 440: /* type_specifier_nonarray: ITEXTURE2DRECT */ -#line 3013 "MachineIndependent/glslang.y" +#line 3016 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdRect); } -#line 9877 "MachineIndependent/glslang_tab.cpp" +#line 9880 "MachineIndependent/glslang_tab.cpp" break; case 441: /* type_specifier_nonarray: UTEXTURE2DRECT */ -#line 3018 "MachineIndependent/glslang.y" +#line 3021 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdRect); } -#line 9887 "MachineIndependent/glslang_tab.cpp" +#line 9890 "MachineIndependent/glslang_tab.cpp" break; case 442: /* type_specifier_nonarray: TEXTUREBUFFER */ -#line 3023 "MachineIndependent/glslang.y" +#line 3026 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, EsdBuffer); } -#line 9897 "MachineIndependent/glslang_tab.cpp" +#line 9900 "MachineIndependent/glslang_tab.cpp" break; case 443: /* type_specifier_nonarray: F16TEXTUREBUFFER */ -#line 3028 "MachineIndependent/glslang.y" +#line 3031 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, EsdBuffer); } -#line 9908 "MachineIndependent/glslang_tab.cpp" +#line 9911 "MachineIndependent/glslang_tab.cpp" break; case 444: /* type_specifier_nonarray: ITEXTUREBUFFER */ -#line 3034 "MachineIndependent/glslang.y" +#line 3037 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, EsdBuffer); } -#line 9918 "MachineIndependent/glslang_tab.cpp" +#line 9921 "MachineIndependent/glslang_tab.cpp" break; case 445: /* type_specifier_nonarray: UTEXTUREBUFFER */ -#line 3039 "MachineIndependent/glslang.y" +#line 3042 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, EsdBuffer); } -#line 9928 "MachineIndependent/glslang_tab.cpp" +#line 9931 "MachineIndependent/glslang_tab.cpp" break; case 446: /* type_specifier_nonarray: TEXTURE2DMS */ -#line 3044 "MachineIndependent/glslang.y" +#line 3047 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, false, false, true); } -#line 9938 "MachineIndependent/glslang_tab.cpp" +#line 9941 "MachineIndependent/glslang_tab.cpp" break; case 447: /* type_specifier_nonarray: F16TEXTURE2DMS */ -#line 3049 "MachineIndependent/glslang.y" +#line 3052 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, false, false, true); } -#line 9949 "MachineIndependent/glslang_tab.cpp" +#line 9952 "MachineIndependent/glslang_tab.cpp" break; case 448: /* type_specifier_nonarray: ITEXTURE2DMS */ -#line 3055 "MachineIndependent/glslang.y" +#line 3058 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, false, false, true); } -#line 9959 "MachineIndependent/glslang_tab.cpp" +#line 9962 "MachineIndependent/glslang_tab.cpp" break; case 449: /* type_specifier_nonarray: UTEXTURE2DMS */ -#line 3060 "MachineIndependent/glslang.y" +#line 3063 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, false, false, true); } -#line 9969 "MachineIndependent/glslang_tab.cpp" +#line 9972 "MachineIndependent/glslang_tab.cpp" break; case 450: /* type_specifier_nonarray: TEXTURE2DMSARRAY */ -#line 3065 "MachineIndependent/glslang.y" +#line 3068 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat, Esd2D, true, false, true); } -#line 9979 "MachineIndependent/glslang_tab.cpp" +#line 9982 "MachineIndependent/glslang_tab.cpp" break; case 451: /* type_specifier_nonarray: F16TEXTURE2DMSARRAY */ -#line 3070 "MachineIndependent/glslang.y" +#line 3073 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float texture", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtFloat16, Esd2D, true, false, true); } -#line 9990 "MachineIndependent/glslang_tab.cpp" +#line 9993 "MachineIndependent/glslang_tab.cpp" break; case 452: /* type_specifier_nonarray: ITEXTURE2DMSARRAY */ -#line 3076 "MachineIndependent/glslang.y" +#line 3079 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtInt, Esd2D, true, false, true); } -#line 10000 "MachineIndependent/glslang_tab.cpp" +#line 10003 "MachineIndependent/glslang_tab.cpp" break; case 453: /* type_specifier_nonarray: UTEXTURE2DMSARRAY */ -#line 3081 "MachineIndependent/glslang.y" +#line 3084 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setTexture(EbtUint, Esd2D, true, false, true); } -#line 10010 "MachineIndependent/glslang_tab.cpp" +#line 10013 "MachineIndependent/glslang_tab.cpp" break; case 454: /* type_specifier_nonarray: IMAGE1D */ -#line 3086 "MachineIndependent/glslang.y" +#line 3089 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D); } -#line 10020 "MachineIndependent/glslang_tab.cpp" +#line 10023 "MachineIndependent/glslang_tab.cpp" break; case 455: /* type_specifier_nonarray: F16IMAGE1D */ -#line 3091 "MachineIndependent/glslang.y" +#line 3094 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D); } -#line 10031 "MachineIndependent/glslang_tab.cpp" +#line 10034 "MachineIndependent/glslang_tab.cpp" break; case 456: /* type_specifier_nonarray: IIMAGE1D */ -#line 3097 "MachineIndependent/glslang.y" +#line 3100 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D); } -#line 10041 "MachineIndependent/glslang_tab.cpp" +#line 10044 "MachineIndependent/glslang_tab.cpp" break; case 457: /* type_specifier_nonarray: UIMAGE1D */ -#line 3102 "MachineIndependent/glslang.y" +#line 3105 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D); } -#line 10051 "MachineIndependent/glslang_tab.cpp" +#line 10054 "MachineIndependent/glslang_tab.cpp" break; case 458: /* type_specifier_nonarray: IMAGE2D */ -#line 3107 "MachineIndependent/glslang.y" +#line 3110 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D); } -#line 10061 "MachineIndependent/glslang_tab.cpp" +#line 10064 "MachineIndependent/glslang_tab.cpp" break; case 459: /* type_specifier_nonarray: F16IMAGE2D */ -#line 3112 "MachineIndependent/glslang.y" +#line 3115 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D); } -#line 10072 "MachineIndependent/glslang_tab.cpp" +#line 10075 "MachineIndependent/glslang_tab.cpp" break; case 460: /* type_specifier_nonarray: IIMAGE2D */ -#line 3118 "MachineIndependent/glslang.y" +#line 3121 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D); } -#line 10082 "MachineIndependent/glslang_tab.cpp" +#line 10085 "MachineIndependent/glslang_tab.cpp" break; case 461: /* type_specifier_nonarray: UIMAGE2D */ -#line 3123 "MachineIndependent/glslang.y" +#line 3126 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D); } -#line 10092 "MachineIndependent/glslang_tab.cpp" +#line 10095 "MachineIndependent/glslang_tab.cpp" break; case 462: /* type_specifier_nonarray: IMAGE3D */ -#line 3128 "MachineIndependent/glslang.y" +#line 3131 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd3D); } -#line 10102 "MachineIndependent/glslang_tab.cpp" +#line 10105 "MachineIndependent/glslang_tab.cpp" break; case 463: /* type_specifier_nonarray: F16IMAGE3D */ -#line 3133 "MachineIndependent/glslang.y" +#line 3136 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd3D); } -#line 10113 "MachineIndependent/glslang_tab.cpp" +#line 10116 "MachineIndependent/glslang_tab.cpp" break; case 464: /* type_specifier_nonarray: IIMAGE3D */ -#line 3139 "MachineIndependent/glslang.y" +#line 3142 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd3D); } -#line 10123 "MachineIndependent/glslang_tab.cpp" +#line 10126 "MachineIndependent/glslang_tab.cpp" break; case 465: /* type_specifier_nonarray: UIMAGE3D */ -#line 3144 "MachineIndependent/glslang.y" +#line 3147 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd3D); } -#line 10133 "MachineIndependent/glslang_tab.cpp" +#line 10136 "MachineIndependent/glslang_tab.cpp" break; case 466: /* type_specifier_nonarray: IMAGE2DRECT */ -#line 3149 "MachineIndependent/glslang.y" +#line 3152 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdRect); } -#line 10143 "MachineIndependent/glslang_tab.cpp" +#line 10146 "MachineIndependent/glslang_tab.cpp" break; case 467: /* type_specifier_nonarray: F16IMAGE2DRECT */ -#line 3154 "MachineIndependent/glslang.y" +#line 3157 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdRect); } -#line 10154 "MachineIndependent/glslang_tab.cpp" +#line 10157 "MachineIndependent/glslang_tab.cpp" break; case 468: /* type_specifier_nonarray: IIMAGE2DRECT */ -#line 3160 "MachineIndependent/glslang.y" +#line 3163 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdRect); } -#line 10164 "MachineIndependent/glslang_tab.cpp" +#line 10167 "MachineIndependent/glslang_tab.cpp" break; case 469: /* type_specifier_nonarray: UIMAGE2DRECT */ -#line 3165 "MachineIndependent/glslang.y" +#line 3168 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdRect); } -#line 10174 "MachineIndependent/glslang_tab.cpp" +#line 10177 "MachineIndependent/glslang_tab.cpp" break; case 470: /* type_specifier_nonarray: IMAGECUBE */ -#line 3170 "MachineIndependent/glslang.y" +#line 3173 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube); } -#line 10184 "MachineIndependent/glslang_tab.cpp" +#line 10187 "MachineIndependent/glslang_tab.cpp" break; case 471: /* type_specifier_nonarray: F16IMAGECUBE */ -#line 3175 "MachineIndependent/glslang.y" +#line 3178 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube); } -#line 10195 "MachineIndependent/glslang_tab.cpp" +#line 10198 "MachineIndependent/glslang_tab.cpp" break; case 472: /* type_specifier_nonarray: IIMAGECUBE */ -#line 3181 "MachineIndependent/glslang.y" +#line 3184 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube); } -#line 10205 "MachineIndependent/glslang_tab.cpp" +#line 10208 "MachineIndependent/glslang_tab.cpp" break; case 473: /* type_specifier_nonarray: UIMAGECUBE */ -#line 3186 "MachineIndependent/glslang.y" +#line 3189 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube); } -#line 10215 "MachineIndependent/glslang_tab.cpp" +#line 10218 "MachineIndependent/glslang_tab.cpp" break; case 474: /* type_specifier_nonarray: IMAGEBUFFER */ -#line 3191 "MachineIndependent/glslang.y" +#line 3194 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdBuffer); } -#line 10225 "MachineIndependent/glslang_tab.cpp" +#line 10228 "MachineIndependent/glslang_tab.cpp" break; case 475: /* type_specifier_nonarray: F16IMAGEBUFFER */ -#line 3196 "MachineIndependent/glslang.y" +#line 3199 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdBuffer); } -#line 10236 "MachineIndependent/glslang_tab.cpp" +#line 10239 "MachineIndependent/glslang_tab.cpp" break; case 476: /* type_specifier_nonarray: IIMAGEBUFFER */ -#line 3202 "MachineIndependent/glslang.y" +#line 3205 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdBuffer); } -#line 10246 "MachineIndependent/glslang_tab.cpp" +#line 10249 "MachineIndependent/glslang_tab.cpp" break; case 477: /* type_specifier_nonarray: UIMAGEBUFFER */ -#line 3207 "MachineIndependent/glslang.y" +#line 3210 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdBuffer); } -#line 10256 "MachineIndependent/glslang_tab.cpp" +#line 10259 "MachineIndependent/glslang_tab.cpp" break; case 478: /* type_specifier_nonarray: IMAGE1DARRAY */ -#line 3212 "MachineIndependent/glslang.y" +#line 3215 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd1D, true); } -#line 10266 "MachineIndependent/glslang_tab.cpp" +#line 10269 "MachineIndependent/glslang_tab.cpp" break; case 479: /* type_specifier_nonarray: F16IMAGE1DARRAY */ -#line 3217 "MachineIndependent/glslang.y" +#line 3220 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd1D, true); } -#line 10277 "MachineIndependent/glslang_tab.cpp" +#line 10280 "MachineIndependent/glslang_tab.cpp" break; case 480: /* type_specifier_nonarray: IIMAGE1DARRAY */ -#line 3223 "MachineIndependent/glslang.y" +#line 3226 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd1D, true); } -#line 10287 "MachineIndependent/glslang_tab.cpp" +#line 10290 "MachineIndependent/glslang_tab.cpp" break; case 481: /* type_specifier_nonarray: UIMAGE1DARRAY */ -#line 3228 "MachineIndependent/glslang.y" +#line 3231 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd1D, true); } -#line 10297 "MachineIndependent/glslang_tab.cpp" +#line 10300 "MachineIndependent/glslang_tab.cpp" break; case 482: /* type_specifier_nonarray: IMAGE2DARRAY */ -#line 3233 "MachineIndependent/glslang.y" +#line 3236 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true); } -#line 10307 "MachineIndependent/glslang_tab.cpp" +#line 10310 "MachineIndependent/glslang_tab.cpp" break; case 483: /* type_specifier_nonarray: F16IMAGE2DARRAY */ -#line 3238 "MachineIndependent/glslang.y" +#line 3241 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true); } -#line 10318 "MachineIndependent/glslang_tab.cpp" +#line 10321 "MachineIndependent/glslang_tab.cpp" break; case 484: /* type_specifier_nonarray: IIMAGE2DARRAY */ -#line 3244 "MachineIndependent/glslang.y" +#line 3247 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true); } -#line 10328 "MachineIndependent/glslang_tab.cpp" +#line 10331 "MachineIndependent/glslang_tab.cpp" break; case 485: /* type_specifier_nonarray: UIMAGE2DARRAY */ -#line 3249 "MachineIndependent/glslang.y" +#line 3252 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true); } -#line 10338 "MachineIndependent/glslang_tab.cpp" +#line 10341 "MachineIndependent/glslang_tab.cpp" break; case 486: /* type_specifier_nonarray: IMAGECUBEARRAY */ -#line 3254 "MachineIndependent/glslang.y" +#line 3257 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, EsdCube, true); } -#line 10348 "MachineIndependent/glslang_tab.cpp" +#line 10351 "MachineIndependent/glslang_tab.cpp" break; case 487: /* type_specifier_nonarray: F16IMAGECUBEARRAY */ -#line 3259 "MachineIndependent/glslang.y" +#line 3262 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, EsdCube, true); } -#line 10359 "MachineIndependent/glslang_tab.cpp" +#line 10362 "MachineIndependent/glslang_tab.cpp" break; case 488: /* type_specifier_nonarray: IIMAGECUBEARRAY */ -#line 3265 "MachineIndependent/glslang.y" +#line 3268 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, EsdCube, true); } -#line 10369 "MachineIndependent/glslang_tab.cpp" +#line 10372 "MachineIndependent/glslang_tab.cpp" break; case 489: /* type_specifier_nonarray: UIMAGECUBEARRAY */ -#line 3270 "MachineIndependent/glslang.y" +#line 3273 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, EsdCube, true); } -#line 10379 "MachineIndependent/glslang_tab.cpp" +#line 10382 "MachineIndependent/glslang_tab.cpp" break; case 490: /* type_specifier_nonarray: IMAGE2DMS */ -#line 3275 "MachineIndependent/glslang.y" +#line 3278 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, false, false, true); } -#line 10389 "MachineIndependent/glslang_tab.cpp" +#line 10392 "MachineIndependent/glslang_tab.cpp" break; case 491: /* type_specifier_nonarray: F16IMAGE2DMS */ -#line 3280 "MachineIndependent/glslang.y" +#line 3283 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, false, false, true); } -#line 10400 "MachineIndependent/glslang_tab.cpp" +#line 10403 "MachineIndependent/glslang_tab.cpp" break; case 492: /* type_specifier_nonarray: IIMAGE2DMS */ -#line 3286 "MachineIndependent/glslang.y" +#line 3289 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, false, false, true); } -#line 10410 "MachineIndependent/glslang_tab.cpp" +#line 10413 "MachineIndependent/glslang_tab.cpp" break; case 493: /* type_specifier_nonarray: UIMAGE2DMS */ -#line 3291 "MachineIndependent/glslang.y" +#line 3294 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, false, false, true); } -#line 10420 "MachineIndependent/glslang_tab.cpp" +#line 10423 "MachineIndependent/glslang_tab.cpp" break; case 494: /* type_specifier_nonarray: IMAGE2DMSARRAY */ -#line 3296 "MachineIndependent/glslang.y" +#line 3299 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat, Esd2D, true, false, true); } -#line 10430 "MachineIndependent/glslang_tab.cpp" +#line 10433 "MachineIndependent/glslang_tab.cpp" break; case 495: /* type_specifier_nonarray: F16IMAGE2DMSARRAY */ -#line 3301 "MachineIndependent/glslang.y" +#line 3304 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float image", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtFloat16, Esd2D, true, false, true); } -#line 10441 "MachineIndependent/glslang_tab.cpp" +#line 10444 "MachineIndependent/glslang_tab.cpp" break; case 496: /* type_specifier_nonarray: IIMAGE2DMSARRAY */ -#line 3307 "MachineIndependent/glslang.y" +#line 3310 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt, Esd2D, true, false, true); } -#line 10451 "MachineIndependent/glslang_tab.cpp" +#line 10454 "MachineIndependent/glslang_tab.cpp" break; case 497: /* type_specifier_nonarray: UIMAGE2DMSARRAY */ -#line 3312 "MachineIndependent/glslang.y" +#line 3315 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint, Esd2D, true, false, true); } -#line 10461 "MachineIndependent/glslang_tab.cpp" +#line 10464 "MachineIndependent/glslang_tab.cpp" break; case 498: /* type_specifier_nonarray: I64IMAGE1D */ -#line 3317 "MachineIndependent/glslang.y" +#line 3320 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D); } -#line 10471 "MachineIndependent/glslang_tab.cpp" +#line 10474 "MachineIndependent/glslang_tab.cpp" break; case 499: /* type_specifier_nonarray: U64IMAGE1D */ -#line 3322 "MachineIndependent/glslang.y" +#line 3325 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D); } -#line 10481 "MachineIndependent/glslang_tab.cpp" +#line 10484 "MachineIndependent/glslang_tab.cpp" break; case 500: /* type_specifier_nonarray: I64IMAGE2D */ -#line 3327 "MachineIndependent/glslang.y" +#line 3330 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D); } -#line 10491 "MachineIndependent/glslang_tab.cpp" +#line 10494 "MachineIndependent/glslang_tab.cpp" break; case 501: /* type_specifier_nonarray: U64IMAGE2D */ -#line 3332 "MachineIndependent/glslang.y" +#line 3335 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D); } -#line 10501 "MachineIndependent/glslang_tab.cpp" +#line 10504 "MachineIndependent/glslang_tab.cpp" break; case 502: /* type_specifier_nonarray: I64IMAGE3D */ -#line 3337 "MachineIndependent/glslang.y" +#line 3340 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd3D); } -#line 10511 "MachineIndependent/glslang_tab.cpp" +#line 10514 "MachineIndependent/glslang_tab.cpp" break; case 503: /* type_specifier_nonarray: U64IMAGE3D */ -#line 3342 "MachineIndependent/glslang.y" +#line 3345 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd3D); } -#line 10521 "MachineIndependent/glslang_tab.cpp" +#line 10524 "MachineIndependent/glslang_tab.cpp" break; case 504: /* type_specifier_nonarray: I64IMAGE2DRECT */ -#line 3347 "MachineIndependent/glslang.y" +#line 3350 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdRect); } -#line 10531 "MachineIndependent/glslang_tab.cpp" +#line 10534 "MachineIndependent/glslang_tab.cpp" break; case 505: /* type_specifier_nonarray: U64IMAGE2DRECT */ -#line 3352 "MachineIndependent/glslang.y" +#line 3355 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdRect); } -#line 10541 "MachineIndependent/glslang_tab.cpp" +#line 10544 "MachineIndependent/glslang_tab.cpp" break; case 506: /* type_specifier_nonarray: I64IMAGECUBE */ -#line 3357 "MachineIndependent/glslang.y" +#line 3360 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube); } -#line 10551 "MachineIndependent/glslang_tab.cpp" +#line 10554 "MachineIndependent/glslang_tab.cpp" break; case 507: /* type_specifier_nonarray: U64IMAGECUBE */ -#line 3362 "MachineIndependent/glslang.y" +#line 3365 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube); } -#line 10561 "MachineIndependent/glslang_tab.cpp" +#line 10564 "MachineIndependent/glslang_tab.cpp" break; case 508: /* type_specifier_nonarray: I64IMAGEBUFFER */ -#line 3367 "MachineIndependent/glslang.y" +#line 3370 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdBuffer); } -#line 10571 "MachineIndependent/glslang_tab.cpp" +#line 10574 "MachineIndependent/glslang_tab.cpp" break; case 509: /* type_specifier_nonarray: U64IMAGEBUFFER */ -#line 3372 "MachineIndependent/glslang.y" +#line 3375 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdBuffer); } -#line 10581 "MachineIndependent/glslang_tab.cpp" +#line 10584 "MachineIndependent/glslang_tab.cpp" break; case 510: /* type_specifier_nonarray: I64IMAGE1DARRAY */ -#line 3377 "MachineIndependent/glslang.y" +#line 3380 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd1D, true); } -#line 10591 "MachineIndependent/glslang_tab.cpp" +#line 10594 "MachineIndependent/glslang_tab.cpp" break; case 511: /* type_specifier_nonarray: U64IMAGE1DARRAY */ -#line 3382 "MachineIndependent/glslang.y" +#line 3385 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd1D, true); } -#line 10601 "MachineIndependent/glslang_tab.cpp" +#line 10604 "MachineIndependent/glslang_tab.cpp" break; case 512: /* type_specifier_nonarray: I64IMAGE2DARRAY */ -#line 3387 "MachineIndependent/glslang.y" +#line 3390 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true); } -#line 10611 "MachineIndependent/glslang_tab.cpp" +#line 10614 "MachineIndependent/glslang_tab.cpp" break; case 513: /* type_specifier_nonarray: U64IMAGE2DARRAY */ -#line 3392 "MachineIndependent/glslang.y" +#line 3395 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true); } -#line 10621 "MachineIndependent/glslang_tab.cpp" +#line 10624 "MachineIndependent/glslang_tab.cpp" break; case 514: /* type_specifier_nonarray: I64IMAGECUBEARRAY */ -#line 3397 "MachineIndependent/glslang.y" +#line 3400 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, EsdCube, true); } -#line 10631 "MachineIndependent/glslang_tab.cpp" +#line 10634 "MachineIndependent/glslang_tab.cpp" break; case 515: /* type_specifier_nonarray: U64IMAGECUBEARRAY */ -#line 3402 "MachineIndependent/glslang.y" +#line 3405 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, EsdCube, true); } -#line 10641 "MachineIndependent/glslang_tab.cpp" +#line 10644 "MachineIndependent/glslang_tab.cpp" break; case 516: /* type_specifier_nonarray: I64IMAGE2DMS */ -#line 3407 "MachineIndependent/glslang.y" +#line 3410 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, false, false, true); } -#line 10651 "MachineIndependent/glslang_tab.cpp" +#line 10654 "MachineIndependent/glslang_tab.cpp" break; case 517: /* type_specifier_nonarray: U64IMAGE2DMS */ -#line 3412 "MachineIndependent/glslang.y" +#line 3415 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, false, false, true); } -#line 10661 "MachineIndependent/glslang_tab.cpp" +#line 10664 "MachineIndependent/glslang_tab.cpp" break; case 518: /* type_specifier_nonarray: I64IMAGE2DMSARRAY */ -#line 3417 "MachineIndependent/glslang.y" +#line 3420 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtInt64, Esd2D, true, false, true); } -#line 10671 "MachineIndependent/glslang_tab.cpp" +#line 10674 "MachineIndependent/glslang_tab.cpp" break; case 519: /* type_specifier_nonarray: U64IMAGE2DMSARRAY */ -#line 3422 "MachineIndependent/glslang.y" +#line 3425 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setImage(EbtUint64, Esd2D, true, false, true); } -#line 10681 "MachineIndependent/glslang_tab.cpp" +#line 10684 "MachineIndependent/glslang_tab.cpp" break; case 520: /* type_specifier_nonarray: SAMPLEREXTERNALOES */ -#line 3427 "MachineIndependent/glslang.y" +#line 3430 "MachineIndependent/glslang.y" { // GL_OES_EGL_image_external (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.external = true; } -#line 10692 "MachineIndependent/glslang_tab.cpp" +#line 10695 "MachineIndependent/glslang_tab.cpp" break; case 521: /* type_specifier_nonarray: SAMPLEREXTERNAL2DY2YEXT */ -#line 3433 "MachineIndependent/glslang.y" +#line 3436 "MachineIndependent/glslang.y" { // GL_EXT_YUV_target (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.set(EbtFloat, Esd2D); (yyval.interm.type).sampler.yuv = true; } -#line 10703 "MachineIndependent/glslang_tab.cpp" +#line 10706 "MachineIndependent/glslang_tab.cpp" break; case 522: /* type_specifier_nonarray: ATTACHMENTEXT */ -#line 3439 "MachineIndependent/glslang.y" +#line 3442 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtFloat); } -#line 10714 "MachineIndependent/glslang_tab.cpp" +#line 10717 "MachineIndependent/glslang_tab.cpp" break; case 523: /* type_specifier_nonarray: IATTACHMENTEXT */ -#line 3445 "MachineIndependent/glslang.y" +#line 3448 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtInt); } -#line 10725 "MachineIndependent/glslang_tab.cpp" +#line 10728 "MachineIndependent/glslang_tab.cpp" break; case 524: /* type_specifier_nonarray: UATTACHMENTEXT */ -#line 3451 "MachineIndependent/glslang.y" +#line 3454 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "attachmentEXT input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setAttachmentEXT(EbtUint); } -#line 10736 "MachineIndependent/glslang_tab.cpp" +#line 10739 "MachineIndependent/glslang_tab.cpp" break; case 525: /* type_specifier_nonarray: SUBPASSINPUT */ -#line 3457 "MachineIndependent/glslang.y" +#line 3460 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat); } -#line 10747 "MachineIndependent/glslang_tab.cpp" +#line 10750 "MachineIndependent/glslang_tab.cpp" break; case 526: /* type_specifier_nonarray: SUBPASSINPUTMS */ -#line 3463 "MachineIndependent/glslang.y" +#line 3466 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat, true); } -#line 10758 "MachineIndependent/glslang_tab.cpp" +#line 10761 "MachineIndependent/glslang_tab.cpp" break; case 527: /* type_specifier_nonarray: F16SUBPASSINPUT */ -#line 3469 "MachineIndependent/glslang.y" +#line 3472 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10766,11 +10769,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16); } -#line 10770 "MachineIndependent/glslang_tab.cpp" +#line 10773 "MachineIndependent/glslang_tab.cpp" break; case 528: /* type_specifier_nonarray: F16SUBPASSINPUTMS */ -#line 3476 "MachineIndependent/glslang.y" +#line 3479 "MachineIndependent/glslang.y" { parseContext.float16OpaqueCheck((yyvsp[0].lex).loc, "half float subpass input", parseContext.symbolTable.atBuiltInLevel()); parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); @@ -10778,55 +10781,55 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtFloat16, true); } -#line 10782 "MachineIndependent/glslang_tab.cpp" +#line 10785 "MachineIndependent/glslang_tab.cpp" break; case 529: /* type_specifier_nonarray: ISUBPASSINPUT */ -#line 3483 "MachineIndependent/glslang.y" +#line 3486 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt); } -#line 10793 "MachineIndependent/glslang_tab.cpp" +#line 10796 "MachineIndependent/glslang_tab.cpp" break; case 530: /* type_specifier_nonarray: ISUBPASSINPUTMS */ -#line 3489 "MachineIndependent/glslang.y" +#line 3492 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtInt, true); } -#line 10804 "MachineIndependent/glslang_tab.cpp" +#line 10807 "MachineIndependent/glslang_tab.cpp" break; case 531: /* type_specifier_nonarray: USUBPASSINPUT */ -#line 3495 "MachineIndependent/glslang.y" +#line 3498 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint); } -#line 10815 "MachineIndependent/glslang_tab.cpp" +#line 10818 "MachineIndependent/glslang_tab.cpp" break; case 532: /* type_specifier_nonarray: USUBPASSINPUTMS */ -#line 3501 "MachineIndependent/glslang.y" +#line 3504 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[0].lex).loc, EShLangFragment, "subpass input"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtSampler; (yyval.interm.type).sampler.setSubpass(EbtUint, true); } -#line 10826 "MachineIndependent/glslang_tab.cpp" +#line 10829 "MachineIndependent/glslang_tab.cpp" break; case 533: /* type_specifier_nonarray: FCOOPMATNV */ -#line 3507 "MachineIndependent/glslang.y" +#line 3510 "MachineIndependent/glslang.y" { parseContext.fcoopmatCheckNV((yyvsp[0].lex).loc, "fcoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10834,11 +10837,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10838 "MachineIndependent/glslang_tab.cpp" +#line 10841 "MachineIndependent/glslang_tab.cpp" break; case 534: /* type_specifier_nonarray: ICOOPMATNV */ -#line 3514 "MachineIndependent/glslang.y" +#line 3517 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "icoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10846,11 +10849,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10850 "MachineIndependent/glslang_tab.cpp" +#line 10853 "MachineIndependent/glslang_tab.cpp" break; case 535: /* type_specifier_nonarray: UCOOPMATNV */ -#line 3521 "MachineIndependent/glslang.y" +#line 3524 "MachineIndependent/glslang.y" { parseContext.intcoopmatCheckNV((yyvsp[0].lex).loc, "ucoopmatNV", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10858,11 +10861,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = true; (yyval.interm.type).coopmatKHR = false; } -#line 10862 "MachineIndependent/glslang_tab.cpp" +#line 10865 "MachineIndependent/glslang_tab.cpp" break; case 536: /* type_specifier_nonarray: COOPMAT */ -#line 3528 "MachineIndependent/glslang.y" +#line 3531 "MachineIndependent/glslang.y" { parseContext.coopmatCheck((yyvsp[0].lex).loc, "coopmat", parseContext.symbolTable.atBuiltInLevel()); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); @@ -10870,39 +10873,39 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).coopmatNV = false; (yyval.interm.type).coopmatKHR = true; } -#line 10874 "MachineIndependent/glslang_tab.cpp" +#line 10877 "MachineIndependent/glslang_tab.cpp" break; case 537: /* type_specifier_nonarray: spirv_type_specifier */ -#line 3535 "MachineIndependent/glslang.y" +#line 3538 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.type).loc, 1, &E_GL_EXT_spirv_intrinsics, "SPIR-V type specifier"); (yyval.interm.type) = (yyvsp[0].interm.type); } -#line 10883 "MachineIndependent/glslang_tab.cpp" +#line 10886 "MachineIndependent/glslang_tab.cpp" break; case 538: /* type_specifier_nonarray: HITOBJECTNV */ -#line 3539 "MachineIndependent/glslang.y" +#line 3542 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).basicType = EbtHitObjectNV; } -#line 10892 "MachineIndependent/glslang_tab.cpp" +#line 10895 "MachineIndependent/glslang_tab.cpp" break; case 539: /* type_specifier_nonarray: struct_specifier */ -#line 3543 "MachineIndependent/glslang.y" +#line 3546 "MachineIndependent/glslang.y" { (yyval.interm.type) = (yyvsp[0].interm.type); (yyval.interm.type).qualifier.storage = parseContext.symbolTable.atGlobalLevel() ? EvqGlobal : EvqTemporary; parseContext.structTypeCheck((yyval.interm.type).loc, (yyval.interm.type)); } -#line 10902 "MachineIndependent/glslang_tab.cpp" +#line 10905 "MachineIndependent/glslang_tab.cpp" break; case 540: /* type_specifier_nonarray: TYPE_NAME */ -#line 3548 "MachineIndependent/glslang.y" +#line 3551 "MachineIndependent/glslang.y" { // // This is for user defined type names. The lexical phase looked up the @@ -10916,47 +10919,47 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else parseContext.error((yyvsp[0].lex).loc, "expected type name", (yyvsp[0].lex).string->c_str(), ""); } -#line 10920 "MachineIndependent/glslang_tab.cpp" +#line 10923 "MachineIndependent/glslang_tab.cpp" break; case 541: /* precision_qualifier: HIGH_PRECISION */ -#line 3564 "MachineIndependent/glslang.y" +#line 3567 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "highp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqHigh); } -#line 10930 "MachineIndependent/glslang_tab.cpp" +#line 10933 "MachineIndependent/glslang_tab.cpp" break; case 542: /* precision_qualifier: MEDIUM_PRECISION */ -#line 3569 "MachineIndependent/glslang.y" +#line 3572 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "mediump precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqMedium); } -#line 10940 "MachineIndependent/glslang_tab.cpp" +#line 10943 "MachineIndependent/glslang_tab.cpp" break; case 543: /* precision_qualifier: LOW_PRECISION */ -#line 3574 "MachineIndependent/glslang.y" +#line 3577 "MachineIndependent/glslang.y" { parseContext.profileRequires((yyvsp[0].lex).loc, ENoProfile, 130, 0, "lowp precision qualifier"); (yyval.interm.type).init((yyvsp[0].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.handlePrecisionQualifier((yyvsp[0].lex).loc, (yyval.interm.type).qualifier, EpqLow); } -#line 10950 "MachineIndependent/glslang_tab.cpp" +#line 10953 "MachineIndependent/glslang_tab.cpp" break; case 544: /* $@3: %empty */ -#line 3582 "MachineIndependent/glslang.y" +#line 3585 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-2].lex).loc); } -#line 10956 "MachineIndependent/glslang_tab.cpp" +#line 10959 "MachineIndependent/glslang_tab.cpp" break; case 545: /* struct_specifier: STRUCT IDENTIFIER LEFT_BRACE $@3 struct_declaration_list RIGHT_BRACE */ -#line 3582 "MachineIndependent/glslang.y" +#line 3585 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), *(yyvsp[-4].lex).string); @@ -10974,17 +10977,17 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10978 "MachineIndependent/glslang_tab.cpp" +#line 10981 "MachineIndependent/glslang_tab.cpp" break; case 546: /* $@4: %empty */ -#line 3599 "MachineIndependent/glslang.y" +#line 3602 "MachineIndependent/glslang.y" { parseContext.nestedStructCheck((yyvsp[-1].lex).loc); } -#line 10984 "MachineIndependent/glslang_tab.cpp" +#line 10987 "MachineIndependent/glslang_tab.cpp" break; case 547: /* struct_specifier: STRUCT LEFT_BRACE $@4 struct_declaration_list RIGHT_BRACE */ -#line 3599 "MachineIndependent/glslang.y" +#line 3602 "MachineIndependent/glslang.y" { TType* structure = new TType((yyvsp[-1].interm.typeList), TString("")); (yyval.interm.type).init((yyvsp[-4].lex).loc); @@ -10992,19 +10995,19 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.type).userDef = structure; --parseContext.structNestingLevel; } -#line 10996 "MachineIndependent/glslang_tab.cpp" +#line 10999 "MachineIndependent/glslang_tab.cpp" break; case 548: /* struct_declaration_list: struct_declaration */ -#line 3609 "MachineIndependent/glslang.y" +#line 3612 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[0].interm.typeList); } -#line 11004 "MachineIndependent/glslang_tab.cpp" +#line 11007 "MachineIndependent/glslang_tab.cpp" break; case 549: /* struct_declaration_list: struct_declaration_list struct_declaration */ -#line 3612 "MachineIndependent/glslang.y" +#line 3615 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = (yyvsp[-1].interm.typeList); for (unsigned int i = 0; i < (yyvsp[0].interm.typeList)->size(); ++i) { @@ -11015,11 +11018,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeList)->push_back((*(yyvsp[0].interm.typeList))[i]); } } -#line 11019 "MachineIndependent/glslang_tab.cpp" +#line 11022 "MachineIndependent/glslang_tab.cpp" break; case 550: /* struct_declaration: type_specifier struct_declarator_list SEMICOLON */ -#line 3625 "MachineIndependent/glslang.y" +#line 3628 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11042,11 +11045,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11046 "MachineIndependent/glslang_tab.cpp" +#line 11049 "MachineIndependent/glslang_tab.cpp" break; case 551: /* struct_declaration: type_qualifier type_specifier struct_declarator_list SEMICOLON */ -#line 3647 "MachineIndependent/glslang.y" +#line 3650 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.type).arraySizes) { parseContext.profileRequires((yyvsp[-2].interm.type).loc, ENoProfile, 120, E_GL_3DL_array_objects, "arrayed type"); @@ -11071,38 +11074,38 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (*(yyval.interm.typeList))[i].type->shallowCopy(type); } } -#line 11075 "MachineIndependent/glslang_tab.cpp" +#line 11078 "MachineIndependent/glslang_tab.cpp" break; case 552: /* struct_declarator_list: struct_declarator */ -#line 3674 "MachineIndependent/glslang.y" +#line 3677 "MachineIndependent/glslang.y" { (yyval.interm.typeList) = new TTypeList; (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11084 "MachineIndependent/glslang_tab.cpp" +#line 11087 "MachineIndependent/glslang_tab.cpp" break; case 553: /* struct_declarator_list: struct_declarator_list COMMA struct_declarator */ -#line 3678 "MachineIndependent/glslang.y" +#line 3681 "MachineIndependent/glslang.y" { (yyval.interm.typeList)->push_back((yyvsp[0].interm.typeLine)); } -#line 11092 "MachineIndependent/glslang_tab.cpp" +#line 11095 "MachineIndependent/glslang_tab.cpp" break; case 554: /* struct_declarator: IDENTIFIER */ -#line 3684 "MachineIndependent/glslang.y" +#line 3687 "MachineIndependent/glslang.y" { (yyval.interm.typeLine).type = new TType(EbtVoid); (yyval.interm.typeLine).loc = (yyvsp[0].lex).loc; (yyval.interm.typeLine).type->setFieldName(*(yyvsp[0].lex).string); } -#line 11102 "MachineIndependent/glslang_tab.cpp" +#line 11105 "MachineIndependent/glslang_tab.cpp" break; case 555: /* struct_declarator: IDENTIFIER array_specifier */ -#line 3689 "MachineIndependent/glslang.y" +#line 3692 "MachineIndependent/glslang.y" { parseContext.arrayOfArrayVersionCheck((yyvsp[-1].lex).loc, (yyvsp[0].interm).arraySizes); @@ -11111,246 +11114,246 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.typeLine).type->setFieldName(*(yyvsp[-1].lex).string); (yyval.interm.typeLine).type->transferArraySizes((yyvsp[0].interm).arraySizes); } -#line 11115 "MachineIndependent/glslang_tab.cpp" +#line 11118 "MachineIndependent/glslang_tab.cpp" break; case 556: /* initializer: assignment_expression */ -#line 3700 "MachineIndependent/glslang.y" +#line 3703 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11123 "MachineIndependent/glslang_tab.cpp" +#line 11126 "MachineIndependent/glslang_tab.cpp" break; case 557: /* initializer: LEFT_BRACE initializer_list RIGHT_BRACE */ -#line 3703 "MachineIndependent/glslang.y" +#line 3706 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-2].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-2].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-1].interm.intermTypedNode); } -#line 11134 "MachineIndependent/glslang_tab.cpp" +#line 11137 "MachineIndependent/glslang_tab.cpp" break; case 558: /* initializer: LEFT_BRACE initializer_list COMMA RIGHT_BRACE */ -#line 3709 "MachineIndependent/glslang.y" +#line 3712 "MachineIndependent/glslang.y" { const char* initFeature = "{ } style initializers"; parseContext.requireProfile((yyvsp[-3].lex).loc, ~EEsProfile, initFeature); parseContext.profileRequires((yyvsp[-3].lex).loc, ~EEsProfile, 420, E_GL_ARB_shading_language_420pack, initFeature); (yyval.interm.intermTypedNode) = (yyvsp[-2].interm.intermTypedNode); } -#line 11145 "MachineIndependent/glslang_tab.cpp" +#line 11148 "MachineIndependent/glslang_tab.cpp" break; case 559: /* initializer: LEFT_BRACE RIGHT_BRACE */ -#line 3715 "MachineIndependent/glslang.y" +#line 3718 "MachineIndependent/glslang.y" { const char* initFeature = "empty { } initializer"; parseContext.profileRequires((yyvsp[-1].lex).loc, EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); parseContext.profileRequires((yyvsp[-1].lex).loc, ~EEsProfile, 0, E_GL_EXT_null_initializer, initFeature); (yyval.interm.intermTypedNode) = parseContext.intermediate.makeAggregate((yyvsp[-1].lex).loc); } -#line 11156 "MachineIndependent/glslang_tab.cpp" +#line 11159 "MachineIndependent/glslang_tab.cpp" break; case 560: /* initializer_list: initializer */ -#line 3724 "MachineIndependent/glslang.y" +#line 3727 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate(0, (yyvsp[0].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)->getLoc()); } -#line 11164 "MachineIndependent/glslang_tab.cpp" +#line 11167 "MachineIndependent/glslang_tab.cpp" break; case 561: /* initializer_list: initializer_list COMMA initializer */ -#line 3727 "MachineIndependent/glslang.y" +#line 3730 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.intermTypedNode)); } -#line 11172 "MachineIndependent/glslang_tab.cpp" +#line 11175 "MachineIndependent/glslang_tab.cpp" break; case 562: /* declaration_statement: declaration */ -#line 3733 "MachineIndependent/glslang.y" +#line 3736 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11178 "MachineIndependent/glslang_tab.cpp" +#line 11181 "MachineIndependent/glslang_tab.cpp" break; case 563: /* statement: compound_statement */ -#line 3737 "MachineIndependent/glslang.y" +#line 3740 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11184 "MachineIndependent/glslang_tab.cpp" +#line 11187 "MachineIndependent/glslang_tab.cpp" break; case 564: /* statement: simple_statement */ -#line 3738 "MachineIndependent/glslang.y" +#line 3741 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11190 "MachineIndependent/glslang_tab.cpp" +#line 11193 "MachineIndependent/glslang_tab.cpp" break; case 565: /* simple_statement: declaration_statement */ -#line 3744 "MachineIndependent/glslang.y" +#line 3747 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11196 "MachineIndependent/glslang_tab.cpp" +#line 11199 "MachineIndependent/glslang_tab.cpp" break; case 566: /* simple_statement: expression_statement */ -#line 3745 "MachineIndependent/glslang.y" +#line 3748 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11202 "MachineIndependent/glslang_tab.cpp" +#line 11205 "MachineIndependent/glslang_tab.cpp" break; case 567: /* simple_statement: selection_statement */ -#line 3746 "MachineIndependent/glslang.y" +#line 3749 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11208 "MachineIndependent/glslang_tab.cpp" +#line 11211 "MachineIndependent/glslang_tab.cpp" break; case 568: /* simple_statement: switch_statement */ -#line 3747 "MachineIndependent/glslang.y" +#line 3750 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11214 "MachineIndependent/glslang_tab.cpp" +#line 11217 "MachineIndependent/glslang_tab.cpp" break; case 569: /* simple_statement: case_label */ -#line 3748 "MachineIndependent/glslang.y" +#line 3751 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11220 "MachineIndependent/glslang_tab.cpp" +#line 11223 "MachineIndependent/glslang_tab.cpp" break; case 570: /* simple_statement: iteration_statement */ -#line 3749 "MachineIndependent/glslang.y" +#line 3752 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11226 "MachineIndependent/glslang_tab.cpp" +#line 11229 "MachineIndependent/glslang_tab.cpp" break; case 571: /* simple_statement: jump_statement */ -#line 3750 "MachineIndependent/glslang.y" +#line 3753 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11232 "MachineIndependent/glslang_tab.cpp" +#line 11235 "MachineIndependent/glslang_tab.cpp" break; case 572: /* simple_statement: demote_statement */ -#line 3751 "MachineIndependent/glslang.y" +#line 3754 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11238 "MachineIndependent/glslang_tab.cpp" +#line 11241 "MachineIndependent/glslang_tab.cpp" break; case 573: /* demote_statement: DEMOTE SEMICOLON */ -#line 3755 "MachineIndependent/glslang.y" +#line 3758 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "demote"); parseContext.requireExtensions((yyvsp[-1].lex).loc, 1, &E_GL_EXT_demote_to_helper_invocation, "demote"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDemote, (yyvsp[-1].lex).loc); } -#line 11248 "MachineIndependent/glslang_tab.cpp" +#line 11251 "MachineIndependent/glslang_tab.cpp" break; case 574: /* compound_statement: LEFT_BRACE RIGHT_BRACE */ -#line 3763 "MachineIndependent/glslang.y" +#line 3766 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11254 "MachineIndependent/glslang_tab.cpp" +#line 11257 "MachineIndependent/glslang_tab.cpp" break; case 575: /* $@5: %empty */ -#line 3764 "MachineIndependent/glslang.y" +#line 3767 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; } -#line 11263 "MachineIndependent/glslang_tab.cpp" +#line 11266 "MachineIndependent/glslang_tab.cpp" break; case 576: /* $@6: %empty */ -#line 3768 "MachineIndependent/glslang.y" +#line 3771 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; } -#line 11272 "MachineIndependent/glslang_tab.cpp" +#line 11275 "MachineIndependent/glslang_tab.cpp" break; case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ -#line 3772 "MachineIndependent/glslang.y" +#line 3775 "MachineIndependent/glslang.y" { if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11282 "MachineIndependent/glslang_tab.cpp" +#line 11285 "MachineIndependent/glslang_tab.cpp" break; case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3780 "MachineIndependent/glslang.y" +#line 3783 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11288 "MachineIndependent/glslang_tab.cpp" +#line 11291 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_no_new_scope: simple_statement */ -#line 3781 "MachineIndependent/glslang.y" +#line 3784 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11294 "MachineIndependent/glslang_tab.cpp" +#line 11297 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@7: %empty */ -#line 3785 "MachineIndependent/glslang.y" +#line 3788 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11302 "MachineIndependent/glslang_tab.cpp" +#line 11305 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@7 compound_statement */ -#line 3788 "MachineIndependent/glslang.y" +#line 3791 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11311 "MachineIndependent/glslang_tab.cpp" +#line 11314 "MachineIndependent/glslang_tab.cpp" break; case 582: /* $@8: %empty */ -#line 3792 "MachineIndependent/glslang.y" +#line 3795 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11321 "MachineIndependent/glslang_tab.cpp" +#line 11324 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement_scoped: $@8 simple_statement */ -#line 3797 "MachineIndependent/glslang.y" +#line 3800 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11332 "MachineIndependent/glslang_tab.cpp" +#line 11335 "MachineIndependent/glslang_tab.cpp" break; case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3806 "MachineIndependent/glslang.y" +#line 3809 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11340 "MachineIndependent/glslang_tab.cpp" +#line 11343 "MachineIndependent/glslang_tab.cpp" break; case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3809 "MachineIndependent/glslang.y" +#line 3812 "MachineIndependent/glslang.y" { if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11350 "MachineIndependent/glslang_tab.cpp" +#line 11353 "MachineIndependent/glslang_tab.cpp" break; case 586: /* statement_list: statement */ -#line 3817 "MachineIndependent/glslang.y" +#line 3820 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11359,11 +11362,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11363 "MachineIndependent/glslang_tab.cpp" +#line 11366 "MachineIndependent/glslang_tab.cpp" break; case 587: /* statement_list: statement_list statement */ -#line 3825 "MachineIndependent/glslang.y" +#line 3828 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11372,77 +11375,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11376 "MachineIndependent/glslang_tab.cpp" +#line 11379 "MachineIndependent/glslang_tab.cpp" break; case 588: /* expression_statement: SEMICOLON */ -#line 3836 "MachineIndependent/glslang.y" +#line 3839 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11382 "MachineIndependent/glslang_tab.cpp" +#line 11385 "MachineIndependent/glslang_tab.cpp" break; case 589: /* expression_statement: expression SEMICOLON */ -#line 3837 "MachineIndependent/glslang.y" +#line 3840 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11388 "MachineIndependent/glslang_tab.cpp" +#line 11391 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement: selection_statement_nonattributed */ -#line 3841 "MachineIndependent/glslang.y" +#line 3844 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11396 "MachineIndependent/glslang_tab.cpp" +#line 11399 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3844 "MachineIndependent/glslang.y" +#line 3847 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11406 "MachineIndependent/glslang_tab.cpp" +#line 11409 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3851 "MachineIndependent/glslang.y" +#line 3854 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11415 "MachineIndependent/glslang_tab.cpp" +#line 11418 "MachineIndependent/glslang_tab.cpp" break; case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3858 "MachineIndependent/glslang.y" +#line 3861 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11424 "MachineIndependent/glslang_tab.cpp" +#line 11427 "MachineIndependent/glslang_tab.cpp" break; case 594: /* selection_rest_statement: statement_scoped */ -#line 3862 "MachineIndependent/glslang.y" +#line 3865 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11433 "MachineIndependent/glslang_tab.cpp" +#line 11436 "MachineIndependent/glslang_tab.cpp" break; case 595: /* condition: expression */ -#line 3870 "MachineIndependent/glslang.y" +#line 3873 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11442 "MachineIndependent/glslang_tab.cpp" +#line 11445 "MachineIndependent/glslang_tab.cpp" break; case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3874 "MachineIndependent/glslang.y" +#line 3877 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11453,29 +11456,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11457 "MachineIndependent/glslang_tab.cpp" +#line 11460 "MachineIndependent/glslang_tab.cpp" break; case 597: /* switch_statement: switch_statement_nonattributed */ -#line 3887 "MachineIndependent/glslang.y" +#line 3890 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11465 "MachineIndependent/glslang_tab.cpp" +#line 11468 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3890 "MachineIndependent/glslang.y" +#line 3893 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11475 "MachineIndependent/glslang_tab.cpp" +#line 11478 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@9: %empty */ -#line 3897 "MachineIndependent/glslang.y" +#line 3900 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11484,11 +11487,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11488 "MachineIndependent/glslang_tab.cpp" +#line 11491 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3905 "MachineIndependent/glslang.y" +#line 3908 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11498,27 +11501,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11502 "MachineIndependent/glslang_tab.cpp" +#line 11505 "MachineIndependent/glslang_tab.cpp" break; case 601: /* switch_statement_list: %empty */ -#line 3917 "MachineIndependent/glslang.y" +#line 3920 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11510 "MachineIndependent/glslang_tab.cpp" +#line 11513 "MachineIndependent/glslang_tab.cpp" break; case 602: /* switch_statement_list: statement_list */ -#line 3920 "MachineIndependent/glslang.y" +#line 3923 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11518 "MachineIndependent/glslang_tab.cpp" +#line 11521 "MachineIndependent/glslang_tab.cpp" break; case 603: /* case_label: CASE expression COLON */ -#line 3926 "MachineIndependent/glslang.y" +#line 3929 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11531,11 +11534,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11535 "MachineIndependent/glslang_tab.cpp" +#line 11538 "MachineIndependent/glslang_tab.cpp" break; case 604: /* case_label: DEFAULT COLON */ -#line 3938 "MachineIndependent/glslang.y" +#line 3941 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11545,30 +11548,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11549 "MachineIndependent/glslang_tab.cpp" +#line 11552 "MachineIndependent/glslang_tab.cpp" break; case 605: /* iteration_statement: iteration_statement_nonattributed */ -#line 3950 "MachineIndependent/glslang.y" +#line 3953 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11557 "MachineIndependent/glslang_tab.cpp" +#line 11560 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3953 "MachineIndependent/glslang.y" +#line 3956 "MachineIndependent/glslang.y" { const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11568 "MachineIndependent/glslang_tab.cpp" +#line 11571 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3961 "MachineIndependent/glslang.y" +#line 3964 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11577,11 +11580,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11581 "MachineIndependent/glslang_tab.cpp" +#line 11584 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3969 "MachineIndependent/glslang.y" +#line 3972 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11589,22 +11592,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11593 "MachineIndependent/glslang_tab.cpp" +#line 11596 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 3976 "MachineIndependent/glslang.y" +#line 3979 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11604 "MachineIndependent/glslang_tab.cpp" +#line 11607 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3982 "MachineIndependent/glslang.y" +#line 3985 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11617,22 +11620,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11621 "MachineIndependent/glslang_tab.cpp" +#line 11624 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 3994 "MachineIndependent/glslang.y" +#line 3997 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11632 "MachineIndependent/glslang_tab.cpp" +#line 11635 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 4000 "MachineIndependent/glslang.y" +#line 4003 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11645,81 +11648,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11649 "MachineIndependent/glslang_tab.cpp" +#line 11652 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 4015 "MachineIndependent/glslang.y" +#line 4018 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11657 "MachineIndependent/glslang_tab.cpp" +#line 11660 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 4018 "MachineIndependent/glslang.y" +#line 4021 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11665 "MachineIndependent/glslang_tab.cpp" +#line 11668 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 4024 "MachineIndependent/glslang.y" +#line 4027 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11673 "MachineIndependent/glslang_tab.cpp" +#line 11676 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 4027 "MachineIndependent/glslang.y" +#line 4030 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11681 "MachineIndependent/glslang_tab.cpp" +#line 11684 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4033 "MachineIndependent/glslang.y" +#line 4036 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11690 "MachineIndependent/glslang_tab.cpp" +#line 11693 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4037 "MachineIndependent/glslang.y" +#line 4040 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11699 "MachineIndependent/glslang_tab.cpp" +#line 11702 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4044 "MachineIndependent/glslang.y" +#line 4047 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11709 "MachineIndependent/glslang_tab.cpp" +#line 11712 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4049 "MachineIndependent/glslang.y" +#line 4052 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11719 "MachineIndependent/glslang_tab.cpp" +#line 11722 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4054 "MachineIndependent/glslang.y" +#line 4057 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11727,101 +11730,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11731 "MachineIndependent/glslang_tab.cpp" +#line 11734 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4061 "MachineIndependent/glslang.y" +#line 4064 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11739 "MachineIndependent/glslang_tab.cpp" +#line 11742 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4064 "MachineIndependent/glslang.y" +#line 4067 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11748 "MachineIndependent/glslang_tab.cpp" +#line 11751 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4068 "MachineIndependent/glslang.y" +#line 4071 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11757 "MachineIndependent/glslang_tab.cpp" +#line 11760 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4072 "MachineIndependent/glslang.y" +#line 4075 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11766 "MachineIndependent/glslang_tab.cpp" +#line 11769 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4076 "MachineIndependent/glslang.y" +#line 4079 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11775 "MachineIndependent/glslang_tab.cpp" +#line 11778 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4085 "MachineIndependent/glslang.y" +#line 4088 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11784 "MachineIndependent/glslang_tab.cpp" +#line 11787 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4089 "MachineIndependent/glslang.y" +#line 4092 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11795 "MachineIndependent/glslang_tab.cpp" +#line 11798 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4098 "MachineIndependent/glslang.y" +#line 4101 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11803 "MachineIndependent/glslang_tab.cpp" +#line 11806 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4101 "MachineIndependent/glslang.y" +#line 4104 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11811 "MachineIndependent/glslang_tab.cpp" +#line 11814 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4104 "MachineIndependent/glslang.y" +#line 4107 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11821 "MachineIndependent/glslang_tab.cpp" +#line 11824 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4112 "MachineIndependent/glslang.y" +#line 4115 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11834,11 +11837,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11838 "MachineIndependent/glslang_tab.cpp" +#line 11841 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4124 "MachineIndependent/glslang.y" +#line 4127 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11866,228 +11869,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11870 "MachineIndependent/glslang_tab.cpp" +#line 11873 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4154 "MachineIndependent/glslang.y" +#line 4157 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11878 "MachineIndependent/glslang_tab.cpp" +#line 11881 "MachineIndependent/glslang_tab.cpp" break; case 635: /* attribute_list: single_attribute */ -#line 4159 "MachineIndependent/glslang.y" +#line 4162 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11886 "MachineIndependent/glslang_tab.cpp" +#line 11889 "MachineIndependent/glslang_tab.cpp" break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4162 "MachineIndependent/glslang.y" +#line 4165 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11894 "MachineIndependent/glslang_tab.cpp" +#line 11897 "MachineIndependent/glslang_tab.cpp" break; case 637: /* single_attribute: IDENTIFIER */ -#line 4167 "MachineIndependent/glslang.y" +#line 4170 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11902 "MachineIndependent/glslang_tab.cpp" +#line 11905 "MachineIndependent/glslang_tab.cpp" break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4170 "MachineIndependent/glslang.y" +#line 4173 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11910 "MachineIndependent/glslang_tab.cpp" +#line 11913 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4175 "MachineIndependent/glslang.y" +#line 4178 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11918 "MachineIndependent/glslang_tab.cpp" +#line 11921 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4178 "MachineIndependent/glslang.y" +#line 4181 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11926 "MachineIndependent/glslang_tab.cpp" +#line 11929 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4183 "MachineIndependent/glslang.y" +#line 4186 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11934 "MachineIndependent/glslang_tab.cpp" +#line 11937 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4186 "MachineIndependent/glslang.y" +#line 4189 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11942 "MachineIndependent/glslang_tab.cpp" +#line 11945 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4191 "MachineIndependent/glslang.y" +#line 4194 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11950 "MachineIndependent/glslang_tab.cpp" +#line 11953 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4194 "MachineIndependent/glslang.y" +#line 4197 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11958 "MachineIndependent/glslang_tab.cpp" +#line 11961 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4199 "MachineIndependent/glslang.y" +#line 4202 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11966 "MachineIndependent/glslang_tab.cpp" +#line 11969 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4202 "MachineIndependent/glslang.y" +#line 4205 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11974 "MachineIndependent/glslang_tab.cpp" +#line 11977 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4207 "MachineIndependent/glslang.y" +#line 4210 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11983 "MachineIndependent/glslang_tab.cpp" +#line 11986 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4211 "MachineIndependent/glslang.y" +#line 4214 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11993 "MachineIndependent/glslang_tab.cpp" +#line 11996 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4216 "MachineIndependent/glslang.y" +#line 4219 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12002 "MachineIndependent/glslang_tab.cpp" +#line 12005 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4220 "MachineIndependent/glslang.y" +#line 4223 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12012 "MachineIndependent/glslang_tab.cpp" +#line 12015 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4225 "MachineIndependent/glslang.y" +#line 4228 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12021 "MachineIndependent/glslang_tab.cpp" +#line 12024 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4229 "MachineIndependent/glslang.y" +#line 4232 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12031 "MachineIndependent/glslang_tab.cpp" +#line 12034 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4236 "MachineIndependent/glslang.y" +#line 4239 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12039 "MachineIndependent/glslang_tab.cpp" +#line 12042 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4239 "MachineIndependent/glslang.y" +#line 4242 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12047 "MachineIndependent/glslang_tab.cpp" +#line 12050 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4244 "MachineIndependent/glslang.y" +#line 4247 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12055 "MachineIndependent/glslang_tab.cpp" +#line 12058 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4247 "MachineIndependent/glslang.y" +#line 4250 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12063 "MachineIndependent/glslang_tab.cpp" +#line 12066 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4250 "MachineIndependent/glslang.y" +#line 4253 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12071 "MachineIndependent/glslang_tab.cpp" +#line 12074 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4253 "MachineIndependent/glslang.y" +#line 4256 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12079 "MachineIndependent/glslang_tab.cpp" +#line 12082 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4256 "MachineIndependent/glslang.y" +#line 4259 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12087 "MachineIndependent/glslang_tab.cpp" +#line 12090 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4261 "MachineIndependent/glslang.y" +#line 4264 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12097,11 +12100,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12101 "MachineIndependent/glslang_tab.cpp" +#line 12104 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4270 "MachineIndependent/glslang.y" +#line 4273 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12111,351 +12114,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12115 "MachineIndependent/glslang_tab.cpp" +#line 12118 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4281 "MachineIndependent/glslang.y" +#line 4284 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12125 "MachineIndependent/glslang_tab.cpp" +#line 12128 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4286 "MachineIndependent/glslang.y" +#line 4289 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12136 "MachineIndependent/glslang_tab.cpp" +#line 12139 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4294 "MachineIndependent/glslang.y" +#line 4297 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12145 "MachineIndependent/glslang_tab.cpp" +#line 12148 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4298 "MachineIndependent/glslang.y" +#line 4301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12155 "MachineIndependent/glslang_tab.cpp" +#line 12158 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4303 "MachineIndependent/glslang.y" +#line 4306 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12164 "MachineIndependent/glslang_tab.cpp" +#line 12167 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4307 "MachineIndependent/glslang.y" +#line 4310 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12174 "MachineIndependent/glslang_tab.cpp" +#line 12177 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4312 "MachineIndependent/glslang.y" +#line 4315 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12183 "MachineIndependent/glslang_tab.cpp" +#line 12186 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4316 "MachineIndependent/glslang.y" +#line 4319 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12193 "MachineIndependent/glslang_tab.cpp" +#line 12196 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4321 "MachineIndependent/glslang.y" +#line 4324 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12202 "MachineIndependent/glslang_tab.cpp" +#line 12205 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4325 "MachineIndependent/glslang.y" +#line 4328 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12212 "MachineIndependent/glslang_tab.cpp" +#line 12215 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4332 "MachineIndependent/glslang.y" +#line 4335 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12220 "MachineIndependent/glslang_tab.cpp" +#line 12223 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4335 "MachineIndependent/glslang.y" +#line 4338 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12228 "MachineIndependent/glslang_tab.cpp" +#line 12231 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4340 "MachineIndependent/glslang.y" +#line 4343 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12236 "MachineIndependent/glslang_tab.cpp" +#line 12239 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4343 "MachineIndependent/glslang.y" +#line 4346 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12244 "MachineIndependent/glslang_tab.cpp" +#line 12247 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4346 "MachineIndependent/glslang.y" +#line 4349 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12252 "MachineIndependent/glslang_tab.cpp" +#line 12255 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4349 "MachineIndependent/glslang.y" +#line 4352 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12260 "MachineIndependent/glslang_tab.cpp" +#line 12263 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4354 "MachineIndependent/glslang.y" +#line 4357 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12268 "MachineIndependent/glslang_tab.cpp" +#line 12271 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4357 "MachineIndependent/glslang.y" +#line 4360 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12276 "MachineIndependent/glslang_tab.cpp" +#line 12279 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4362 "MachineIndependent/glslang.y" +#line 4365 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12287 "MachineIndependent/glslang_tab.cpp" +#line 12290 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4368 "MachineIndependent/glslang.y" +#line 4371 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12295 "MachineIndependent/glslang_tab.cpp" +#line 12298 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4371 "MachineIndependent/glslang.y" +#line 4374 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12303 "MachineIndependent/glslang_tab.cpp" +#line 12306 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4374 "MachineIndependent/glslang.y" +#line 4377 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12311 "MachineIndependent/glslang_tab.cpp" +#line 12314 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4377 "MachineIndependent/glslang.y" +#line 4380 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12319 "MachineIndependent/glslang_tab.cpp" +#line 12322 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4382 "MachineIndependent/glslang.y" +#line 4385 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12328 "MachineIndependent/glslang_tab.cpp" +#line 12331 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4386 "MachineIndependent/glslang.y" +#line 4389 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12336 "MachineIndependent/glslang_tab.cpp" +#line 12339 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4391 "MachineIndependent/glslang.y" +#line 4394 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12345 "MachineIndependent/glslang_tab.cpp" +#line 12348 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4395 "MachineIndependent/glslang.y" +#line 4398 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12355 "MachineIndependent/glslang_tab.cpp" +#line 12358 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4400 "MachineIndependent/glslang.y" +#line 4403 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12364 "MachineIndependent/glslang_tab.cpp" +#line 12367 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4404 "MachineIndependent/glslang.y" +#line 4407 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12374 "MachineIndependent/glslang_tab.cpp" +#line 12377 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4411 "MachineIndependent/glslang.y" +#line 4414 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12382 "MachineIndependent/glslang_tab.cpp" +#line 12385 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4414 "MachineIndependent/glslang.y" +#line 4417 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12390 "MachineIndependent/glslang_tab.cpp" +#line 12393 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4419 "MachineIndependent/glslang.y" +#line 4422 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12398 "MachineIndependent/glslang_tab.cpp" +#line 12401 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4422 "MachineIndependent/glslang.y" +#line 4425 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12406 "MachineIndependent/glslang_tab.cpp" +#line 12409 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4427 "MachineIndependent/glslang.y" +#line 4430 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12414 "MachineIndependent/glslang_tab.cpp" +#line 12417 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4430 "MachineIndependent/glslang.y" +#line 4433 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12423 "MachineIndependent/glslang_tab.cpp" +#line 12426 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4436 "MachineIndependent/glslang.y" +#line 4439 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12431 "MachineIndependent/glslang_tab.cpp" +#line 12434 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4439 "MachineIndependent/glslang.y" +#line 4442 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12439 "MachineIndependent/glslang_tab.cpp" +#line 12442 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4444 "MachineIndependent/glslang.y" +#line 4447 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12447 "MachineIndependent/glslang_tab.cpp" +#line 12450 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4447 "MachineIndependent/glslang.y" +#line 4450 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12455 "MachineIndependent/glslang_tab.cpp" +#line 12458 "MachineIndependent/glslang_tab.cpp" break; -#line 12459 "MachineIndependent/glslang_tab.cpp" +#line 12462 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12679,5 +12682,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4451 "MachineIndependent/glslang.y" +#line 4454 "MachineIndependent/glslang.y" From d24cda64d10b9056d716da0fa97a947c92f86804 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 29 Mar 2024 20:09:37 -0400 Subject: [PATCH 446/594] Check for exponent overflow in float parser Even for a double precision float, the largest valid exponent is 308, so clamp exponents to 500 when parsing to avoid overflow of the parsed exponent value if the exponent is too big. --- glslang/MachineIndependent/preprocessor/PpScanner.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/preprocessor/PpScanner.cpp b/glslang/MachineIndependent/preprocessor/PpScanner.cpp index 34dec20769..49dafa59a7 100644 --- a/glslang/MachineIndependent/preprocessor/PpScanner.cpp +++ b/glslang/MachineIndependent/preprocessor/PpScanner.cpp @@ -220,7 +220,9 @@ int TPpContext::lFloatConst(int len, int ch, TPpToken* ppToken) } if (ch >= '0' && ch <= '9') { while (ch >= '0' && ch <= '9') { - exponent = exponent * 10 + (ch - '0'); + if (exponent < 500) { + exponent = exponent * 10 + (ch - '0'); + } saveName(ch); ch = getChar(); } From ac5341fe91d44f826b8c634dc2d71acdaf076f31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cjimihe=E2=80=9D?= Date: Mon, 25 Mar 2024 16:10:18 +0800 Subject: [PATCH 447/594] Add a test for floating point exponent overflow This adds a test with a floating point exponent that can't fit into a 32-bit int. --- Test/baseResults/positive_infinity.frag.out | 51 +++++++++++++++++++++ Test/positive_infinity.frag | 11 +++++ gtests/AST.FromFile.cpp | 1 + 3 files changed, 63 insertions(+) create mode 100644 Test/baseResults/positive_infinity.frag.out create mode 100644 Test/positive_infinity.frag diff --git a/Test/baseResults/positive_infinity.frag.out b/Test/baseResults/positive_infinity.frag.out new file mode 100644 index 0000000000..013f829923 --- /dev/null +++ b/Test/baseResults/positive_infinity.frag.out @@ -0,0 +1,51 @@ +positive_infinity.frag +Shader version: 300 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:9 Sequence +0:9 Sequence +0:9 move second child to first child ( temp highp float) +0:9 'correct' ( temp highp float) +0:9 Constant: +0:9 1.000000 +0:10 move second child to first child ( temp highp 4-component vector of float) +0:10 'my_FragColor' ( out highp 4-component vector of float) +0:10 Construct vec4 ( temp highp 4-component vector of float) +0:10 Constant: +0:10 0.000000 +0:10 'correct' ( temp highp float) +0:10 Constant: +0:10 0.000000 +0:10 Constant: +0:10 1.000000 +0:? Linker Objects +0:? 'my_FragColor' ( out highp 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 300 +0:? Sequence +0:4 Function Definition: main( ( global void) +0:4 Function Parameters: +0:9 Sequence +0:9 Sequence +0:9 move second child to first child ( temp highp float) +0:9 'correct' ( temp highp float) +0:9 Constant: +0:9 1.000000 +0:10 move second child to first child ( temp highp 4-component vector of float) +0:10 'my_FragColor' ( out highp 4-component vector of float) +0:10 Construct vec4 ( temp highp 4-component vector of float) +0:10 Constant: +0:10 0.000000 +0:10 'correct' ( temp highp float) +0:10 Constant: +0:10 0.000000 +0:10 Constant: +0:10 1.000000 +0:? Linker Objects +0:? 'my_FragColor' ( out highp 4-component vector of float) + diff --git a/Test/positive_infinity.frag b/Test/positive_infinity.frag new file mode 100644 index 0000000000..9c00e38af8 --- /dev/null +++ b/Test/positive_infinity.frag @@ -0,0 +1,11 @@ +#version 300 es +precision highp float; +out vec4 my_FragColor; +void main() +{ + // Out-of-range floats should overflow to infinity + // GLSL ES 3.00.6 section 4.1.4 Floats: + // "If the value of the floating point number is too large (small) to be stored as a single precision value, it is converted to positive (negative) infinity" + float correct = isinf(1.0e2147483649) ? 1.0 : 0.0; + my_FragColor = vec4(0.0, correct, 0.0, 1.0); +} diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index d85a55cf35..e73328e8d2 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -309,6 +309,7 @@ INSTANTIATE_TEST_SUITE_P( "GL_EXT_draw_instanced.vert", "overflow_underflow_toinf_0.frag", "GL_EXT_texture_array.frag", + "positive_infinity.frag", })), FileNameAsCustomTestSuffix ); From 8a3ea594c76c154493ade0948f1ea64a2f9d2e75 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Apr 2024 06:59:42 +0000 Subject: [PATCH 448/594] Bump actions/setup-python from 5.0.0 to 5.1.0 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.0.0 to 5.1.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/0a5c61591373683505ea898e09a3ea4f39ef2b9c...82c7e631bb3cdc910f68e0081d67478d79c6982d) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 1c6b0c1302..78fba95f58 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -43,7 +43,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies @@ -107,7 +107,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - run: ./update_glslang_sources.py @@ -164,7 +164,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - run: python update_glslang_sources.py diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index b0f9fdce10..91037d383c 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - name: Setup ccache @@ -55,7 +55,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - name: Setup ccache @@ -92,7 +92,7 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 @@ -152,7 +152,7 @@ jobs: steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - run: python update_glslang_sources.py @@ -221,7 +221,7 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: actions/setup-python@0a5c61591373683505ea898e09a3ea4f39ef2b9c # v5.0.0 + - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 From 188ec80dc508e539734d5ac19e7181fc16c6d29b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 06:15:17 +0000 Subject: [PATCH 449/594] Bump github/codeql-action from 3.24.9 to 3.24.10 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.9 to 3.24.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/1b1aada464948af03b950897e5eb522f92603cc2...4355270be187e1b672a7a1c7c7bae5afdc1ab94a) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7d624c6211..ccbf1223b7 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@1b1aada464948af03b950897e5eb522f92603cc2 # v3.24.9 + uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 with: sarif_file: results.sarif From d52749714a89dd3c739553902564f8caed988332 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Apr 2024 06:15:22 +0000 Subject: [PATCH 450/594] Bump lukka/get-cmake from 3.29.0 to 3.29.1 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.29.0 to 3.29.1. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/9438b96ac95a2a8b02548f63800926db324f7c03...b111a57714ab6e67a65d3f857b72b148554c4262) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 78fba95f58..2127a7b8b3 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 91037d383c..bb4916abce 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -127,7 +127,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -151,7 +151,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -169,7 +169,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -198,7 +198,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -224,7 +224,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@9438b96ac95a2a8b02548f63800926db324f7c03 # v3.29.0 + - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: From 2db79056b418587e61122a8a820cd832b2abdf83 Mon Sep 17 00:00:00 2001 From: Herman Semenov Date: Mon, 1 Apr 2024 19:51:29 +0300 Subject: [PATCH 451/594] Maximum optimization inserts using reserve() for operands --- SPIRV/GlslangToSpv.cpp | 5 ++- SPIRV/SpvBuilder.cpp | 93 ++++++++++++++++++++++++++++++++++++++++-- SPIRV/spvIR.h | 6 +++ 3 files changed, 98 insertions(+), 6 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1294855aeb..5be9f37eeb 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -2007,8 +2007,9 @@ void TGlslangToSpvTraverser::finishSpv(bool compileOnly) } // finish off the entry-point SPV instruction by adding the Input/Output - for (auto it = iOSet.cbegin(); it != iOSet.cend(); ++it) - entryPoint->addIdOperand(*it); + entryPoint->reserveOperands(iOSet.size()); + for (auto id : iOSet) + entryPoint->addIdOperand(id); } // Add capabilities, extensions, remove unneeded decorations, etc., diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 062a7c79b6..84058a7387 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -157,6 +157,7 @@ Id Builder::makePointer(StorageClass storageClass, Id pointee) // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypePointer); + type->reserveOperands(2); type->addImmediateOperand(storageClass); type->addIdOperand(pointee); groupedTypes[OpTypePointer].push_back(type); @@ -196,6 +197,7 @@ Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardP } type = new Instruction(forwardPointerType, NoType, OpTypePointer); + type->reserveOperands(2); type->addImmediateOperand(storageClass); type->addIdOperand(pointee); groupedTypes[OpTypePointer].push_back(type); @@ -218,6 +220,7 @@ Id Builder::makeIntegerType(int width, bool hasSign) // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypeInt); + type->reserveOperands(2); type->addImmediateOperand(width); type->addImmediateOperand(hasSign ? 1 : 0); groupedTypes[OpTypeInt].push_back(type); @@ -348,6 +351,7 @@ Id Builder::makeVectorType(Id component, int size) // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypeVector); + type->reserveOperands(2); type->addIdOperand(component); type->addImmediateOperand(size); groupedTypes[OpTypeVector].push_back(type); @@ -380,6 +384,7 @@ Id Builder::makeMatrixType(Id component, int cols, int rows) // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypeMatrix); + type->reserveOperands(2); type->addIdOperand(column); type->addImmediateOperand(cols); groupedTypes[OpTypeMatrix].push_back(type); @@ -411,6 +416,7 @@ Id Builder::makeCooperativeMatrixTypeKHR(Id component, Id scope, Id rows, Id col // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypeCooperativeMatrixKHR); + type->reserveOperands(5); type->addIdOperand(component); type->addIdOperand(scope); type->addIdOperand(rows); @@ -436,6 +442,7 @@ Id Builder::makeCooperativeMatrixTypeNV(Id component, Id scope, Id rows, Id cols // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypeCooperativeMatrixNV); + type->reserveOperands(4); type->addIdOperand(component); type->addIdOperand(scope); type->addIdOperand(rows); @@ -477,6 +484,7 @@ Id Builder::makeGenericType(spv::Op opcode, std::vector& opera // not found, make it type = new Instruction(getUniqueId(), NoType, opcode); + type->reserveOperands(operands.size()); for (size_t op = 0; op < operands.size(); ++op) { if (operands[op].isId) type->addIdOperand(operands[op].word); @@ -509,6 +517,7 @@ Id Builder::makeArrayType(Id element, Id sizeId, int stride) // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypeArray); + type->reserveOperands(2); type->addIdOperand(element); type->addIdOperand(sizeId); groupedTypes[OpTypeArray].push_back(type); @@ -575,6 +584,7 @@ Id Builder::makeFunctionType(Id returnType, const std::vector& paramTypes) // not found, make it Id typeId = getUniqueId(); type = new Instruction(typeId, NoType, OpTypeFunction); + type->reserveOperands(paramTypes.size() + 1); type->addIdOperand(returnType); for (int p = 0; p < (int)paramTypes.size(); ++p) type->addIdOperand(paramTypes[p]); @@ -597,6 +607,7 @@ Id Builder::makeDebugFunctionType(Id returnType, const std::vector& paramTyp Id typeId = getUniqueId(); auto type = new Instruction(typeId, makeVoidType(), OpExtInst); + type->reserveOperands(paramTypes.size() + 4); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeFunction); type->addIdOperand(makeUintConstant(NonSemanticShaderDebugInfo100FlagIsPublic)); @@ -635,6 +646,7 @@ Id Builder::makeImageType(Id sampledType, Dim dim, bool depth, bool arrayed, boo // not found, make it type = new Instruction(getUniqueId(), NoType, OpTypeImage); + type->reserveOperands(7); type->addIdOperand(sampledType); type->addImmediateOperand( dim); type->addImmediateOperand( depth ? 1 : 0); @@ -745,6 +757,7 @@ Id Builder::makeDebugInfoNone() return debugInfoNone; Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->reserveOperands(2); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugInfoNone); @@ -769,6 +782,7 @@ Id Builder::makeBoolDebugType(int const size) } type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(6); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); @@ -806,6 +820,7 @@ Id Builder::makeIntegerDebugType(int const width, bool const hasSign) // not found, make it type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(6); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); type->addIdOperand(nameId); // name id @@ -845,6 +860,7 @@ Id Builder::makeFloatDebugType(int const width) // not found, make it type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(6); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeBasic); type->addIdOperand(nameId); // name id @@ -875,6 +891,7 @@ Id Builder::makeSequentialDebugType(Id const baseType, Id const componentCount, // not found, make it type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(4); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(sequenceType); type->addIdOperand(debugId[baseType]); // base type @@ -910,6 +927,7 @@ Id Builder::makeMatrixDebugType(Id const vectorType, int const vectorCount, bool // not found, make it type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(5); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMatrix); type->addIdOperand(debugId[vectorType]); // vector type id @@ -928,6 +946,7 @@ Id Builder::makeMemberDebugType(Id const memberType, DebugTypeLoc const& debugTy assert(debugId[memberType] != 0); Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(10); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeMember); type->addIdOperand(getStringId(debugTypeLoc.name)); // name id @@ -967,6 +986,7 @@ Id Builder::makeCompositeDebugType(std::vector const& memberTypes, char cons // Create The structure debug type. Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(memberDebugTypes.size() + 11); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypeComposite); type->addIdOperand(getStringId(name)); // name id @@ -1011,6 +1031,7 @@ Id Builder::makePointerDebugType(StorageClass storageClass, Id const baseType) } Instruction* type = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + type->reserveOperands(5); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypePointer); type->addIdOperand(debugBaseType); @@ -1029,6 +1050,7 @@ Id Builder::makeDebugSource(const Id fileName) { return debugSourceId[fileName]; spv::Id resultId = getUniqueId(); Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst); + sourceInst->reserveOperands(3); sourceInst->addIdOperand(nonSemanticShaderDebugInfo); sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugSource); sourceInst->addIdOperand(fileName); @@ -1059,6 +1081,7 @@ Id Builder::makeDebugCompilationUnit() { return nonSemanticShaderCompilationUnitId; spv::Id resultId = getUniqueId(); Instruction* sourceInst = new Instruction(resultId, makeVoidType(), OpExtInst); + sourceInst->reserveOperands(6); sourceInst->addIdOperand(nonSemanticShaderDebugInfo); sourceInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugCompilationUnit); sourceInst->addIdOperand(makeUintConstant(1)); // TODO(greg-lunarg): Get rid of magic number @@ -1082,6 +1105,7 @@ Id Builder::createDebugGlobalVariable(Id const type, char const*const name, Id c assert(type != 0); Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->reserveOperands(11); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugGlobalVariable); inst->addIdOperand(getStringId(name)); // name id @@ -1106,6 +1130,7 @@ Id Builder::createDebugLocalVariable(Id type, char const*const name, size_t cons assert(!currentDebugScopeId.empty()); Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->reserveOperands(9); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLocalVariable); inst->addIdOperand(getStringId(name)); // name id @@ -1131,6 +1156,7 @@ Id Builder::makeDebugExpression() return debugExpression; Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->reserveOperands(2); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugExpression); @@ -1145,6 +1171,7 @@ Id Builder::makeDebugExpression() Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const pointer) { Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->reserveOperands(5); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugDeclare); inst->addIdOperand(debugLocalVariable); // debug local variable id @@ -1158,6 +1185,7 @@ Id Builder::makeDebugDeclare(Id const debugLocalVariable, Id const pointer) Id Builder::makeDebugValue(Id const debugLocalVariable, Id const value) { Instruction* inst = new Instruction(getUniqueId(), makeVoidType(), OpExtInst); + inst->reserveOperands(5); inst->addIdOperand(nonSemanticShaderDebugInfo); inst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugValue); inst->addIdOperand(debugLocalVariable); // debug local variable id @@ -1574,6 +1602,7 @@ Id Builder::makeInt64Constant(Id typeId, unsigned long long value, bool specCons } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); + c->reserveOperands(2); c->addImmediateOperand(op1); c->addImmediateOperand(op2); constantsTypesGlobals.push_back(std::unique_ptr(c)); @@ -1627,6 +1656,7 @@ Id Builder::makeDoubleConstant(double d, bool specConstant) } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); + c->reserveOperands(2); c->addImmediateOperand(op1); c->addImmediateOperand(op2); constantsTypesGlobals.push_back(std::unique_ptr(c)); @@ -1781,6 +1811,7 @@ Id Builder::makeCompositeConstant(Id typeId, const std::vector& members, boo } Instruction* c = new Instruction(getUniqueId(), typeId, opcode); + c->reserveOperands(members.size()); for (int op = 0; op < (int)members.size(); ++op) c->addIdOperand(members[op]); constantsTypesGlobals.push_back(std::unique_ptr(c)); @@ -1796,6 +1827,7 @@ Id Builder::makeCompositeConstant(Id typeId, const std::vector& members, boo Instruction* Builder::addEntryPoint(ExecutionModel model, Function* function, const char* name) { Instruction* entryPoint = new Instruction(OpEntryPoint); + entryPoint->reserveOperands(3); entryPoint->addImmediateOperand(model); entryPoint->addIdOperand(function->getId()); entryPoint->addStringOperand(name); @@ -1813,6 +1845,7 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, int val return; Instruction* instr = new Instruction(OpExecutionMode); + instr->reserveOperands(3); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); if (value1 >= 0) @@ -1832,6 +1865,7 @@ void Builder::addExecutionMode(Function* entryPoint, ExecutionMode mode, const s return; Instruction* instr = new Instruction(OpExecutionMode); + instr->reserveOperands(literals.size() + 2); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); for (auto literal : literals) @@ -1847,6 +1881,7 @@ void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const return; Instruction* instr = new Instruction(OpExecutionModeId); + instr->reserveOperands(operandIds.size() + 2); instr->addIdOperand(entryPoint->getId()); instr->addImmediateOperand(mode); for (auto operandId : operandIds) @@ -1858,6 +1893,7 @@ void Builder::addExecutionModeId(Function* entryPoint, ExecutionMode mode, const void Builder::addName(Id id, const char* string) { Instruction* name = new Instruction(OpName); + name->reserveOperands(2); name->addIdOperand(id); name->addStringOperand(string); @@ -1867,6 +1903,7 @@ void Builder::addName(Id id, const char* string) void Builder::addMemberName(Id id, int memberNumber, const char* string) { Instruction* name = new Instruction(OpMemberName); + name->reserveOperands(3); name->addIdOperand(id); name->addImmediateOperand(memberNumber); name->addStringOperand(string); @@ -1880,6 +1917,7 @@ void Builder::addDecoration(Id id, Decoration decoration, int num) return; Instruction* dec = new Instruction(OpDecorate); + dec->reserveOperands(2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); if (num >= 0) @@ -1894,6 +1932,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const char* s) return; Instruction* dec = new Instruction(OpDecorateString); + dec->reserveOperands(3); dec->addIdOperand(id); dec->addImmediateOperand(decoration); dec->addStringOperand(s); @@ -1907,6 +1946,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vectorreserveOperands(literals.size() + 2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); for (auto literal : literals) @@ -1921,6 +1961,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vectorreserveOperands(strings.size() + 2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); for (auto string : strings) @@ -1931,6 +1972,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vectorreserveOperands(4); dec->addIdOperand(id); dec->addImmediateOperand(spv::DecorationLinkageAttributes); dec->addStringOperand(name); @@ -1945,6 +1987,7 @@ void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) return; Instruction* dec = new Instruction(OpDecorateId); + dec->reserveOperands(3); dec->addIdOperand(id); dec->addImmediateOperand(decoration); dec->addIdOperand(idDecoration); @@ -1958,6 +2001,7 @@ void Builder::addDecorationId(Id id, Decoration decoration, const std::vectorreserveOperands(operandIds.size() + 2); dec->addIdOperand(id); dec->addImmediateOperand(decoration); @@ -1973,6 +2017,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat return; Instruction* dec = new Instruction(OpMemberDecorate); + dec->reserveOperands(3); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); @@ -1988,6 +2033,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat return; Instruction* dec = new Instruction(OpMemberDecorateStringGOOGLE); + dec->reserveOperands(4); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); @@ -2002,6 +2048,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat return; Instruction* dec = new Instruction(OpMemberDecorate); + dec->reserveOperands(literals.size() + 3); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); @@ -2017,6 +2064,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat return; Instruction* dec = new Instruction(OpMemberDecorateString); + dec->reserveOperands(strings.size() + 3); dec->addIdOperand(id); dec->addImmediateOperand(member); dec->addImmediateOperand(decoration); @@ -2031,6 +2079,7 @@ void Builder::addInstruction(std::unique_ptr inst) { if (emitNonSemanticShaderDebugInfo && dirtyScopeTracker) { if (buildPoint->updateDebugScope(currentDebugScopeId.top())) { auto scopeInst = std::make_unique(getUniqueId(), makeVoidType(), OpExtInst); + scopeInst->reserveOperands(3); scopeInst->addIdOperand(nonSemanticShaderDebugInfo); scopeInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugScope); scopeInst->addIdOperand(currentDebugScopeId.top()); @@ -2045,6 +2094,7 @@ void Builder::addInstruction(std::unique_ptr inst) { if (buildPoint->updateDebugSourceLocation(currentLine, 0, currentFileId)) { if (emitSpirvDebugInfo) { auto lineInst = std::make_unique(OpLine); + lineInst->reserveOperands(3); lineInst->addIdOperand(currentFileId); lineInst->addImmediateOperand(currentLine); lineInst->addImmediateOperand(0); @@ -2052,6 +2102,7 @@ void Builder::addInstruction(std::unique_ptr inst) { } if (emitNonSemanticShaderDebugInfo) { auto lineInst = std::make_unique(getUniqueId(), makeVoidType(), OpExtInst); + lineInst->reserveOperands(7); lineInst->addIdOperand(nonSemanticShaderDebugInfo); lineInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLine); lineInst->addIdOperand(makeDebugSource(currentFileId)); @@ -2191,6 +2242,7 @@ Id Builder::makeDebugFunction([[maybe_unused]] Function* function, Id nameId, Id Id funcId = getUniqueId(); auto type = new Instruction(funcId, makeVoidType(), OpExtInst); + type->reserveOperands(11); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunction); type->addIdOperand(nameId); @@ -2212,6 +2264,7 @@ Id Builder::makeDebugLexicalBlock(uint32_t line) { Id lexId = getUniqueId(); auto lex = new Instruction(lexId, makeVoidType(), OpExtInst); + lex->reserveOperands(6); lex->addIdOperand(nonSemanticShaderDebugInfo); lex->addImmediateOperand(NonSemanticShaderDebugInfo100DebugLexicalBlock); lex->addIdOperand(makeDebugSource(currentFileId)); @@ -2282,6 +2335,7 @@ void Builder::enterFunction(Function const* function) // Create DebugFunctionDefinition spv::Id resultId = getUniqueId(); Instruction* defInst = new Instruction(resultId, makeVoidType(), OpExtInst); + defInst->reserveOperands(4); defInst->addIdOperand(nonSemanticShaderDebugInfo); defInst->addImmediateOperand(NonSemanticShaderDebugInfo100DebugFunctionDefinition); defInst->addIdOperand(debugId[funcId]); @@ -2413,6 +2467,7 @@ void Builder::createStore(Id rValue, Id lValue, spv::MemoryAccessMask memoryAcce unsigned int alignment) { Instruction* store = new Instruction(OpStore); + store->reserveOperands(2); store->addIdOperand(lValue); store->addIdOperand(rValue); @@ -2465,6 +2520,7 @@ Id Builder::createAccessChain(StorageClass storageClass, Id base, const std::vec // Make the instruction Instruction* chain = new Instruction(getUniqueId(), typeId, OpAccessChain); + chain->reserveOperands(offsets.size() + 1); chain->addIdOperand(base); for (int i = 0; i < (int)offsets.size(); ++i) chain->addIdOperand(offsets[i]); @@ -2477,6 +2533,7 @@ Id Builder::createArrayLength(Id base, unsigned int member) { spv::Id intType = makeUintType(32); Instruction* length = new Instruction(getUniqueId(), intType, OpArrayLength); + length->reserveOperands(2); length->addIdOperand(base); length->addImmediateOperand(member); addInstruction(std::unique_ptr(length)); @@ -2527,6 +2584,7 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, unsigned index) std::vector(1, index)); } Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract); + extract->reserveOperands(2); extract->addIdOperand(composite); extract->addImmediateOperand(index); addInstruction(std::unique_ptr(extract)); @@ -2542,6 +2600,7 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, const std::vector(1, composite), indexes); } Instruction* extract = new Instruction(getUniqueId(), typeId, OpCompositeExtract); + extract->reserveOperands(indexes.size() + 1); extract->addIdOperand(composite); for (int i = 0; i < (int)indexes.size(); ++i) extract->addImmediateOperand(indexes[i]); @@ -2553,6 +2612,7 @@ Id Builder::createCompositeExtract(Id composite, Id typeId, const std::vectorreserveOperands(3); insert->addIdOperand(object); insert->addIdOperand(composite); insert->addImmediateOperand(index); @@ -2564,6 +2624,7 @@ Id Builder::createCompositeInsert(Id object, Id composite, Id typeId, unsigned i Id Builder::createCompositeInsert(Id object, Id composite, Id typeId, const std::vector& indexes) { Instruction* insert = new Instruction(getUniqueId(), typeId, OpCompositeInsert); + insert->reserveOperands(indexes.size() + 2); insert->addIdOperand(object); insert->addIdOperand(composite); for (int i = 0; i < (int)indexes.size(); ++i) @@ -2576,6 +2637,7 @@ Id Builder::createCompositeInsert(Id object, Id composite, Id typeId, const std: Id Builder::createVectorExtractDynamic(Id vector, Id typeId, Id componentIndex) { Instruction* extract = new Instruction(getUniqueId(), typeId, OpVectorExtractDynamic); + extract->reserveOperands(2); extract->addIdOperand(vector); extract->addIdOperand(componentIndex); addInstruction(std::unique_ptr(extract)); @@ -2586,6 +2648,7 @@ Id Builder::createVectorExtractDynamic(Id vector, Id typeId, Id componentIndex) Id Builder::createVectorInsertDynamic(Id vector, Id typeId, Id component, Id componentIndex) { Instruction* insert = new Instruction(getUniqueId(), typeId, OpVectorInsertDynamic); + insert->reserveOperands(3); insert->addIdOperand(vector); insert->addIdOperand(component); insert->addIdOperand(componentIndex); @@ -2613,8 +2676,9 @@ void Builder::createNoResultOp(Op opCode, Id operand) void Builder::createNoResultOp(Op opCode, const std::vector& operands) { Instruction* op = new Instruction(opCode); - for (auto it = operands.cbegin(); it != operands.cend(); ++it) { - op->addIdOperand(*it); + op->reserveOperands(operands.size()); + for (auto id : operands) { + op->addIdOperand(id); } addInstruction(std::unique_ptr(op)); } @@ -2623,6 +2687,7 @@ void Builder::createNoResultOp(Op opCode, const std::vector& operands) void Builder::createNoResultOp(Op opCode, const std::vector& operands) { Instruction* op = new Instruction(opCode); + op->reserveOperands(operands.size()); for (auto it = operands.cbegin(); it != operands.cend(); ++it) { if (it->isId) op->addIdOperand(it->word); @@ -2635,6 +2700,7 @@ void Builder::createNoResultOp(Op opCode, const std::vector& operan void Builder::createControlBarrier(Scope execution, Scope memory, MemorySemanticsMask semantics) { Instruction* op = new Instruction(OpControlBarrier); + op->reserveOperands(3); op->addIdOperand(makeUintConstant(execution)); op->addIdOperand(makeUintConstant(memory)); op->addIdOperand(makeUintConstant(semantics)); @@ -2644,6 +2710,7 @@ void Builder::createControlBarrier(Scope execution, Scope memory, MemorySemantic void Builder::createMemoryBarrier(unsigned executionScope, unsigned memorySemantics) { Instruction* op = new Instruction(OpMemoryBarrier); + op->reserveOperands(2); op->addIdOperand(makeUintConstant(executionScope)); op->addIdOperand(makeUintConstant(memorySemantics)); addInstruction(std::unique_ptr(op)); @@ -2674,6 +2741,7 @@ Id Builder::createBinOp(Op opCode, Id typeId, Id left, Id right) return createSpecConstantOp(opCode, typeId, operands, std::vector()); } Instruction* op = new Instruction(getUniqueId(), typeId, opCode); + op->reserveOperands(2); op->addIdOperand(left); op->addIdOperand(right); addInstruction(std::unique_ptr(op)); @@ -2694,6 +2762,7 @@ Id Builder::createTriOp(Op opCode, Id typeId, Id op1, Id op2, Id op3) opCode, typeId, operands, std::vector()); } Instruction* op = new Instruction(getUniqueId(), typeId, opCode); + op->reserveOperands(3); op->addIdOperand(op1); op->addIdOperand(op2); op->addIdOperand(op3); @@ -2705,8 +2774,9 @@ Id Builder::createTriOp(Op opCode, Id typeId, Id op1, Id op2, Id op3) Id Builder::createOp(Op opCode, Id typeId, const std::vector& operands) { Instruction* op = new Instruction(getUniqueId(), typeId, opCode); - for (auto it = operands.cbegin(); it != operands.cend(); ++it) - op->addIdOperand(*it); + op->reserveOperands(operands.size()); + for (auto id : operands) + op->addIdOperand(id); addInstruction(std::unique_ptr(op)); return op->getResultId(); @@ -2715,6 +2785,7 @@ Id Builder::createOp(Op opCode, Id typeId, const std::vector& operands) Id Builder::createOp(Op opCode, Id typeId, const std::vector& operands) { Instruction* op = new Instruction(getUniqueId(), typeId, opCode); + op->reserveOperands(operands.size()); for (auto it = operands.cbegin(); it != operands.cend(); ++it) { if (it->isId) op->addIdOperand(it->word); @@ -2730,6 +2801,7 @@ Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector& op const std::vector& literals) { Instruction* op = new Instruction(getUniqueId(), typeId, OpSpecConstantOp); + op->reserveOperands(operands.size() + literals.size() + 1); op->addImmediateOperand((unsigned) opCode); for (auto it = operands.cbegin(); it != operands.cend(); ++it) op->addIdOperand(*it); @@ -2752,6 +2824,7 @@ Id Builder::createSpecConstantOp(Op opCode, Id typeId, const std::vector& op Id Builder::createFunctionCall(spv::Function* function, const std::vector& args) { Instruction* op = new Instruction(getUniqueId(), function->getReturnType(), OpFunctionCall); + op->reserveOperands(args.size() + 1); op->addIdOperand(function->getId()); for (int a = 0; a < (int)args.size(); ++a) op->addIdOperand(args[a]); @@ -2773,6 +2846,7 @@ Id Builder::createRvalueSwizzle(Decoration precision, Id typeId, Id source, cons } Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle); assert(isVector(source)); + swizzle->reserveOperands(channels.size() + 2); swizzle->addIdOperand(source); swizzle->addIdOperand(source); for (int i = 0; i < (int)channels.size(); ++i) @@ -2791,6 +2865,7 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect Instruction* swizzle = new Instruction(getUniqueId(), typeId, OpVectorShuffle); assert(isVector(target)); + swizzle->reserveOperands(2); swizzle->addIdOperand(target); assert(getNumComponents(source) == (int)channels.size()); @@ -2808,6 +2883,7 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect components[channels[i]] = numTargetComponents + i; // finish the instruction with these components selectors + swizzle->reserveOperands(numTargetComponents); for (int i = 0; i < numTargetComponents; ++i) swizzle->addImmediateOperand(components[i]); addInstruction(std::unique_ptr(swizzle)); @@ -2853,6 +2929,7 @@ Id Builder::smearScalar(Decoration precision, Id scalar, Id vectorType) smear = module.getInstruction(result_id); } else { smear = new Instruction(getUniqueId(), vectorType, OpCompositeConstruct); + smear->reserveOperands(numComponents); for (int c = 0; c < numComponents; ++c) smear->addIdOperand(scalar); addInstruction(std::unique_ptr(smear)); @@ -2865,6 +2942,7 @@ Id Builder::smearScalar(Decoration precision, Id scalar, Id vectorType) Id Builder::createBuiltinCall(Id resultType, Id builtins, int entryPoint, const std::vector& args) { Instruction* inst = new Instruction(getUniqueId(), resultType, OpExtInst); + inst->reserveOperands(args.size() + 2); inst->addIdOperand(builtins); inst->addImmediateOperand(entryPoint); for (int arg = 0; arg < (int)args.size(); ++arg) @@ -3059,6 +3137,7 @@ Id Builder::createTextureCall(Decoration precision, Id resultType, bool sparse, // Build the SPIR-V instruction Instruction* textureInst = new Instruction(getUniqueId(), resultType, opCode); + textureInst->reserveOperands(optArgNum + (texArgs.size() - (optArgNum + 1))); for (size_t op = 0; op < optArgNum; ++op) textureInst->addIdOperand(texArgs[op]); if (optArgNum < texArgs.size()) @@ -3243,6 +3322,7 @@ Id Builder::createCompositeConstruct(Id typeId, const std::vector& constitue } Instruction* op = new Instruction(getUniqueId(), typeId, OpCompositeConstruct); + op->reserveOperands(constituents.size()); for (int c = 0; c < (int)constituents.size(); ++c) op->addIdOperand(constituents[c]); addInstruction(std::unique_ptr(op)); @@ -3532,6 +3612,7 @@ void Builder::makeSwitch(Id selector, unsigned int control, int numSegments, con // make the switch instruction Instruction* switchInst = new Instruction(NoResult, NoType, OpSwitch); + switchInst->reserveOperands((caseValues.size() * 2) + 2); switchInst->addIdOperand(selector); auto defaultOrMerge = (defaultSegment >= 0) ? segmentBlocks[defaultSegment] : mergeBlock; switchInst->addIdOperand(defaultOrMerge->getId()); @@ -4067,6 +4148,7 @@ void Builder::createBranch(Block* block) void Builder::createSelectionMerge(Block* mergeBlock, unsigned int control) { Instruction* merge = new Instruction(OpSelectionMerge); + merge->reserveOperands(2); merge->addIdOperand(mergeBlock->getId()); merge->addImmediateOperand(control); addInstruction(std::unique_ptr(merge)); @@ -4076,6 +4158,7 @@ void Builder::createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned const std::vector& operands) { Instruction* merge = new Instruction(OpLoopMerge); + merge->reserveOperands(operands.size() + 3); merge->addIdOperand(mergeBlock->getId()); merge->addIdOperand(continueBlock->getId()); merge->addImmediateOperand(control); @@ -4087,6 +4170,7 @@ void Builder::createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock) { Instruction* branch = new Instruction(OpBranchConditional); + branch->reserveOperands(3); branch->addIdOperand(condition); branch->addIdOperand(thenBlock->getId()); branch->addIdOperand(elseBlock->getId()); @@ -4108,6 +4192,7 @@ void Builder::dumpSourceInstructions(const spv::Id fileId, const std::string& te if (sourceLang != SourceLanguageUnknown) { // OpSource Language Version File Source Instruction sourceInst(NoResult, NoType, OpSource); + sourceInst.reserveOperands(3); sourceInst.addImmediateOperand(sourceLang); sourceInst.addImmediateOperand(sourceVersion); // File operand diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 6f3124f8da..4c353cfa54 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -97,6 +97,10 @@ class Instruction { Instruction(Id resultId, Id typeId, Op opCode) : resultId(resultId), typeId(typeId), opCode(opCode), block(nullptr) { } explicit Instruction(Op opCode) : resultId(NoResult), typeId(NoType), opCode(opCode), block(nullptr) { } virtual ~Instruction() {} + void reserveOperands(size_t count) { + operands.reserve(count); + idOperand.reserve(count); + } void addIdOperand(Id id) { // ids can't be 0 assert(id); @@ -398,6 +402,7 @@ class Function { void setDebugLineInfo(Id fileName, int line, int column) { lineInstruction = std::unique_ptr{new Instruction(OpLine)}; + lineInstruction->reserveOperands(3); lineInstruction->addIdOperand(fileName); lineInstruction->addImmediateOperand(line); lineInstruction->addImmediateOperand(column); @@ -521,6 +526,7 @@ __inline Function::Function(Id id, Id resultType, Id functionType, Id firstParam linkType(linkage) { // OpFunction + functionInstruction.reserveOperands(2); functionInstruction.addImmediateOperand(FunctionControlMaskNone); functionInstruction.addIdOperand(functionType); parent.mapInstruction(&functionInstruction); From 1e4f53ab2de355296de690583bd26818264b25ff Mon Sep 17 00:00:00 2001 From: alan-baker Date: Mon, 15 Apr 2024 11:39:23 -0400 Subject: [PATCH 452/594] Prevent duplicate SPIR-V decorations (#3570) * Update SPIRV-Tools * https://github.com/KhronosGroup/SPIRV-Tools/pull/5641 added validation that caught errors * Modified glslang to prevent duplicate Restrict and Coherent decorations * Modify createConstructor to avoid adding duplicate RelaxedPrecision decorations when generating a scalar --- SPIRV/GlslangToSpv.cpp | 10 ++++++---- SPIRV/SpvBuilder.cpp | 9 ++++++--- Test/baseResults/spv.bufferhandle13.frag.out | 1 - .../spv.ext.ClosestHitShader_Subgroup.rchit.out | 2 -- Test/baseResults/spv.memoryQualifier.frag.out | 1 - Test/baseResults/spv.nvAtomicFp16Vec.frag.out | 14 -------------- Test/baseResults/vk.relaxed.frag.out | 3 --- Test/baseResults/vk.relaxed.link1.frag.out | 3 --- Test/baseResults/vk.relaxed.stagelink.vert.out | 6 ------ known_good.json | 4 ++-- 10 files changed, 14 insertions(+), 39 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 5be9f37eeb..1f56c23453 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -398,11 +398,11 @@ void TranslateMemoryDecoration(const glslang::TQualifier& qualifier, std::vector bool useVulkanMemoryModel) { if (!useVulkanMemoryModel) { - if (qualifier.isCoherent()) - memory.push_back(spv::DecorationCoherent); if (qualifier.isVolatile()) { memory.push_back(spv::DecorationVolatile); memory.push_back(spv::DecorationCoherent); + } else if (qualifier.isCoherent()) { + memory.push_back(spv::DecorationCoherent); } } if (qualifier.isRestrict()) @@ -5480,8 +5480,10 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF // memory and use RestrictPointer/AliasedPointer. if (originalParam(type.getQualifier().storage, type, false) || !writableParam(type.getQualifier().storage)) { - decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrict : - spv::DecorationAliased); + // TranslateMemoryDecoration added Restrict decoration already. + if (!type.getQualifier().isRestrict()) { + decorations.push_back(spv::DecorationAliased); + } } else { decorations.push_back(type.getQualifier().isRestrict() ? spv::DecorationRestrictPointerEXT : spv::DecorationAliasedPointerEXT); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 84058a7387..6613655a8e 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -3409,10 +3409,13 @@ Id Builder::createConstructor(Decoration precision, const std::vector& sourc } // If the result is a vector, make it from the gathered constituents. - if (constituents.size() > 0) + if (constituents.size() > 0) { result = createCompositeConstruct(resultTypeId, constituents); - - return setPrecision(result, precision); + return setPrecision(result, precision); + } else { + // Precision was set when generating this component. + return result; + } } // Comments in header diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out index dd430896e6..84eb884cb1 100644 --- a/Test/baseResults/spv.bufferhandle13.frag.out +++ b/Test/baseResults/spv.bufferhandle13.frag.out @@ -38,7 +38,6 @@ spv.bufferhandle13.frag Decorate 10(y) Aliased Decorate 15(y) DecorationAliasedPointerEXT Decorate 18(y) Restrict - Decorate 18(y) Restrict Decorate 21(y) Restrict Decorate 21(y) DecorationRestrictPointerEXT Decorate 34(a) DecorationAliasedPointerEXT diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out index e5b62d7c6c..d586ffb441 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out @@ -43,11 +43,9 @@ spv.ext.ClosestHitShader_Subgroup.rchit Decorate 42 RelaxedPrecision Decorate 43(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 46 RelaxedPrecision - Decorate 46 RelaxedPrecision Decorate 47 RelaxedPrecision Decorate 48(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 51 RelaxedPrecision - Decorate 51 RelaxedPrecision Decorate 52 RelaxedPrecision Decorate 53(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR Decorate 59 RelaxedPrecision diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out index e0a5207f6d..47d63cfd2e 100644 --- a/Test/baseResults/spv.memoryQualifier.frag.out +++ b/Test/baseResults/spv.memoryQualifier.frag.out @@ -48,7 +48,6 @@ Validation failed Decorate 44(iCube) NonReadable MemberDecorate 49(Data) 0 Offset 0 MemberDecorate 49(Data) 1 Offset 8 - MemberDecorate 50(Buffer) 0 Coherent MemberDecorate 50(Buffer) 0 Volatile MemberDecorate 50(Buffer) 0 Coherent MemberDecorate 50(Buffer) 0 Offset 0 diff --git a/Test/baseResults/spv.nvAtomicFp16Vec.frag.out b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out index 6d5f6da1b8..3486cf3d61 100644 --- a/Test/baseResults/spv.nvAtomicFp16Vec.frag.out +++ b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out @@ -51,72 +51,58 @@ spv.nvAtomicFp16Vec.frag Decorate 11(buf) Binding 0 Decorate 74(fimage1D) DescriptorSet 0 Decorate 74(fimage1D) Binding 0 - Decorate 74(fimage1D) Coherent Decorate 74(fimage1D) Volatile Decorate 74(fimage1D) Coherent Decorate 85(fimage1DArray) DescriptorSet 0 Decorate 85(fimage1DArray) Binding 1 - Decorate 85(fimage1DArray) Coherent Decorate 85(fimage1DArray) Volatile Decorate 85(fimage1DArray) Coherent Decorate 97(fimage2D) DescriptorSet 0 Decorate 97(fimage2D) Binding 2 - Decorate 97(fimage2D) Coherent Decorate 97(fimage2D) Volatile Decorate 97(fimage2D) Coherent Decorate 107(fimage2DArray) DescriptorSet 0 Decorate 107(fimage2DArray) Binding 3 - Decorate 107(fimage2DArray) Coherent Decorate 107(fimage2DArray) Volatile Decorate 107(fimage2DArray) Coherent Decorate 119(fimageCube) DescriptorSet 0 Decorate 119(fimageCube) Binding 5 - Decorate 119(fimageCube) Coherent Decorate 119(fimageCube) Volatile Decorate 119(fimageCube) Coherent Decorate 129(fimageCubeArray) DescriptorSet 0 Decorate 129(fimageCubeArray) Binding 6 - Decorate 129(fimageCubeArray) Coherent Decorate 129(fimageCubeArray) Volatile Decorate 129(fimageCubeArray) Coherent Decorate 139(fimage3D) DescriptorSet 0 Decorate 139(fimage3D) Binding 9 - Decorate 139(fimage3D) Coherent Decorate 139(fimage3D) Volatile Decorate 139(fimage3D) Coherent Decorate 299(fimage1Dv4) DescriptorSet 0 Decorate 299(fimage1Dv4) Binding 10 - Decorate 299(fimage1Dv4) Coherent Decorate 299(fimage1Dv4) Volatile Decorate 299(fimage1Dv4) Coherent Decorate 310(fimage1DArrayv4) DescriptorSet 0 Decorate 310(fimage1DArrayv4) Binding 11 - Decorate 310(fimage1DArrayv4) Coherent Decorate 310(fimage1DArrayv4) Volatile Decorate 310(fimage1DArrayv4) Coherent Decorate 320(fimage2Dv4) DescriptorSet 0 Decorate 320(fimage2Dv4) Binding 12 - Decorate 320(fimage2Dv4) Coherent Decorate 320(fimage2Dv4) Volatile Decorate 320(fimage2Dv4) Coherent Decorate 330(fimage2DArrayv4) DescriptorSet 0 Decorate 330(fimage2DArrayv4) Binding 13 - Decorate 330(fimage2DArrayv4) Coherent Decorate 330(fimage2DArrayv4) Volatile Decorate 330(fimage2DArrayv4) Coherent Decorate 340(fimageCubev4) DescriptorSet 0 Decorate 340(fimageCubev4) Binding 15 - Decorate 340(fimageCubev4) Coherent Decorate 340(fimageCubev4) Volatile Decorate 340(fimageCubev4) Coherent Decorate 350(fimageCubeArrayv4) DescriptorSet 0 Decorate 350(fimageCubeArrayv4) Binding 16 - Decorate 350(fimageCubeArrayv4) Coherent Decorate 350(fimageCubeArrayv4) Volatile Decorate 350(fimageCubeArrayv4) Coherent Decorate 360(fimage3Dv4) DescriptorSet 0 Decorate 360(fimage3Dv4) Binding 19 - Decorate 360(fimage3Dv4) Coherent Decorate 360(fimage3Dv4) Volatile Decorate 360(fimage3Dv4) Coherent 2: TypeVoid diff --git a/Test/baseResults/vk.relaxed.frag.out b/Test/baseResults/vk.relaxed.frag.out index 4d5f64ee18..7aed81385f 100644 --- a/Test/baseResults/vk.relaxed.frag.out +++ b/Test/baseResults/vk.relaxed.frag.out @@ -728,18 +728,15 @@ gl_FragCoord origin is upper left Name 196 "structUniform.samplers.tn[2]" Name 197 "structUniform.samplers.tn[3]" Name 198 "param" - MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Offset 0 - MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Offset 4 Decorate 34(gl_AtomicCounterBlock_0) BufferBlock Decorate 36 DescriptorSet 0 Decorate 36 Binding 9 - MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Coherent MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Volatile MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Coherent MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Offset 0 diff --git a/Test/baseResults/vk.relaxed.link1.frag.out b/Test/baseResults/vk.relaxed.link1.frag.out index 1e67646c6b..161d929bdc 100644 --- a/Test/baseResults/vk.relaxed.link1.frag.out +++ b/Test/baseResults/vk.relaxed.link1.frag.out @@ -378,15 +378,12 @@ gl_FragCoord origin is upper left Name 68 "o" Name 72 "j" Name 79 "v" - MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Offset 0 - MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 1 Offset 4 - MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Offset 8 diff --git a/Test/baseResults/vk.relaxed.stagelink.vert.out b/Test/baseResults/vk.relaxed.stagelink.vert.out index 47e1b4fa07..a9b968312a 100644 --- a/Test/baseResults/vk.relaxed.stagelink.vert.out +++ b/Test/baseResults/vk.relaxed.stagelink.vert.out @@ -465,15 +465,12 @@ gl_FragCoord origin is upper left Name 72 "gl_VertexIndex" Name 82 "gl_InstanceIndex" Name 90 "io" - MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0 - MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Offset 4 - MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8 @@ -622,15 +619,12 @@ gl_FragCoord origin is upper left Name 37 "" Name 68 "o" Name 70 "io" - MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0 - MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 1 Offset 4 - MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8 diff --git a/known_good.json b/known_good.json index 9faf394630..9324b95fa7 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "04896c462d9f3f504c99a4698605b6524af813c1" + "commit": "02470f606fe1571de808cb773d8c521ab201aaff" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "8b246ff75c6615ba4532fe4fde20f1be090c3764" + "commit" : "4f7b471f1a66b6d06462cd4ba57628cc0cd087d7" }, { "name": "googletest", From dba720ff94be28b3de21f3688025f91e0cc2a3ae Mon Sep 17 00:00:00 2001 From: David Neto Date: Mon, 15 Apr 2024 16:22:05 -0400 Subject: [PATCH 453/594] Adjust hlsl infinity-constant test Test/hlsl.inf.vert tests parsing and some constant math on infinities, including (-1.#INF * 0.0). By IEEE 754 rules, that result is a NaN, but its sign is not significant. The test output assumes a negative-NaN is in the generated SPIR-V. However, the math library on some platforms (like macOS 14, a.k.a. Sonoma) will produce a positive NaN instead. This PR adjusts the test so it takes the absolute value of the NaN, to ensure we the emitted SPIR-V has the NaN with a 0 for it sign bit. --- Test/baseResults/hlsl.inf.vert.out | 62 +++++++++++++++--------------- Test/hlsl.inf.vert | 9 ++++- 2 files changed, 38 insertions(+), 33 deletions(-) diff --git a/Test/baseResults/hlsl.inf.vert.out b/Test/baseResults/hlsl.inf.vert.out index 50f6d56d9b..ade551cb10 100644 --- a/Test/baseResults/hlsl.inf.vert.out +++ b/Test/baseResults/hlsl.inf.vert.out @@ -29,21 +29,21 @@ Shader version: 500 0:6 +1.#INF 0:6 Constant: 0:6 +1.#INF -0:10 Branch: Return with expression -0:10 Construct vec4 ( temp 4-component vector of float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 'f1' ( temp float) -0:10 'f2' ( temp float) -0:10 'f3' ( temp float) -0:10 'f4' ( temp float) -0:10 Constant: -0:10 -1.#INF -0:10 Constant: -0:10 1.#IND +0:15 Branch: Return with expression +0:15 Construct vec4 ( temp 4-component vector of float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 'f1' ( temp float) +0:15 'f2' ( temp float) +0:15 'f3' ( temp float) +0:15 'f4' ( temp float) +0:15 Constant: +0:15 -1.#INF +0:15 Constant: +0:15 1.#IND 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence @@ -87,21 +87,21 @@ Shader version: 500 0:6 +1.#INF 0:6 Constant: 0:6 +1.#INF -0:10 Branch: Return with expression -0:10 Construct vec4 ( temp 4-component vector of float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 add ( temp float) -0:10 'f1' ( temp float) -0:10 'f2' ( temp float) -0:10 'f3' ( temp float) -0:10 'f4' ( temp float) -0:10 Constant: -0:10 -1.#INF -0:10 Constant: -0:10 1.#IND +0:15 Branch: Return with expression +0:15 Construct vec4 ( temp 4-component vector of float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 add ( temp float) +0:15 'f1' ( temp float) +0:15 'f2' ( temp float) +0:15 'f3' ( temp float) +0:15 'f4' ( temp float) +0:15 Constant: +0:15 -1.#INF +0:15 Constant: +0:15 1.#IND 0:2 Function Definition: main( ( temp void) 0:2 Function Parameters: 0:? Sequence @@ -136,7 +136,7 @@ Shader version: 500 11: TypePointer Function 6(float) 13: 6(float) Constant 4286578688 15: 6(float) Constant 2139095040 - 29: 6(float) Constant 4290772992 + 29: 6(float) Constant 2143289344 34: TypePointer Output 7(fvec4) 35(@entryPointOutput): 34(ptr) Variable Output 4(main): 2 Function None 3 diff --git a/Test/hlsl.inf.vert b/Test/hlsl.inf.vert index d57b83793b..b73f24e102 100644 --- a/Test/hlsl.inf.vert +++ b/Test/hlsl.inf.vert @@ -5,7 +5,12 @@ float4 main() : SV_Position float f3 = +1.#INF; float f4 = f2 * 1.#INF + 1.#INF; const float f5 = -1.#INF; - const float f6 = f5 * 0.0f; + // An infinity times zero is a NaN. + // In IEEE 754, the sign of a NaN is significant only for + // abs, copy, negate, or copySign. Use abs(.) here to + // set the sign bit to zero. Otherwise, some platforms will + // have a 1 sign bit and others will have a 0 sign bit. + const float f6 = abs(f5 * 0.0f); return (float4)(f1 + f2 + f3 + f4 + f5 + f6); -} \ No newline at end of file +} From 05ba15169ea4b1471e18305786f12526600a7810 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 15 Apr 2024 18:25:09 -0400 Subject: [PATCH 454/594] Update the README-spirv-remap.txt Update the "feedback" section with the new preferred feedback channel. --- README-spirv-remap.txt | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README-spirv-remap.txt b/README-spirv-remap.txt index f3efee8368..59938d86ec 100644 --- a/README-spirv-remap.txt +++ b/README-spirv-remap.txt @@ -28,10 +28,9 @@ workload. FEEDBACK --------------------------------------------------------------------------------- -Report defects, enhancements requests, code improvements, etc to: - spvremapper@lunarg.com - +--------------------------------------------------------------------------------- +Report defects, enhancement requests, code improvements, etc by creating +issues in the glslang repository at https://github.com/KhronosGroup/glslang COMMAND LINE USAGE: -------------------------------------------------------------------------------- From 9001ec9aa56597ba6ddd5104bf53b44d7ae63527 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Apr 2024 06:58:24 +0000 Subject: [PATCH 455/594] Bump lukka/get-cmake from 3.29.1 to 3.29.2 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.29.1 to 3.29.2. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/b111a57714ab6e67a65d3f857b72b148554c4262...4931ab1fc1604964c055eb330edb3f6b26ba0cfa) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 2127a7b8b3..95be4e1127 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index bb4916abce..9253ceca6c 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -127,7 +127,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -151,7 +151,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -169,7 +169,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -198,7 +198,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: @@ -224,7 +224,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@b111a57714ab6e67a65d3f857b72b148554c4262 # v3.29.1 + - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 with: From 593dbafd0d4391cbc917d4246f94f870860a7cd5 Mon Sep 17 00:00:00 2001 From: Pavel Asyutchenko Date: Thu, 18 Apr 2024 01:34:28 +0200 Subject: [PATCH 456/594] Better follow HLSL offsets rules (#3575) Matrices consuming one vector are treated like vectors for alignment, and there is no "trailing padding" for matrices and arrays. --- SPIRV/GlslangToSpv.cpp | 27 ++- .../baseResults/hlsl.cbuffer-offsets.comp.out | 159 ++++++++++++++++++ Test/hlsl.cbuffer-offsets.comp | 44 +++++ glslang/MachineIndependent/linkValidate.cpp | 4 +- .../MachineIndependent/localintermediate.h | 2 +- gtests/Hlsl.FromFile.cpp | 1 + 6 files changed, 229 insertions(+), 8 deletions(-) create mode 100644 Test/baseResults/hlsl.cbuffer-offsets.comp.out create mode 100644 Test/hlsl.cbuffer-offsets.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1f56c23453..6d5309ff18 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -5377,17 +5377,34 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType int memberAlignment = glslangIntermediate->getMemberAlignment(memberType, memberSize, dummyStride, explicitLayout, matrixLayout == glslang::ElmRowMajor); + bool isVectorLike = memberType.isVector(); + if (memberType.isMatrix()) { + if (matrixLayout == glslang::ElmRowMajor) + isVectorLike = memberType.getMatrixRows() == 1; + else + isVectorLike = memberType.getMatrixCols() == 1; + } + // Adjust alignment for HLSL rules // TODO: make this consistent in early phases of code: // adjusting this late means inconsistencies with earlier code, which for reflection is an issue // Until reflection is brought in sync with these adjustments, don't apply to $Global, // which is the most likely to rely on reflection, and least likely to rely implicit layouts if (glslangIntermediate->usingHlslOffsets() && - ! memberType.isArray() && memberType.isVector() && structType.getTypeName().compare("$Global") != 0) { - int dummySize; - int componentAlignment = glslangIntermediate->getBaseAlignmentScalar(memberType, dummySize); - if (componentAlignment <= 4) + ! memberType.isStruct() && structType.getTypeName().compare("$Global") != 0) { + int componentSize; + int componentAlignment = glslangIntermediate->getBaseAlignmentScalar(memberType, componentSize); + if (! memberType.isArray() && isVectorLike && componentAlignment <= 4) memberAlignment = componentAlignment; + + // Don't add unnecessary padding after this member + if (memberType.isMatrix()) { + if (matrixLayout == glslang::ElmRowMajor) + memberSize -= componentSize * (4 - memberType.getMatrixCols()); + else + memberSize -= componentSize * (4 - memberType.getMatrixRows()); + } else if (memberType.isArray()) + memberSize -= componentSize * (4 - memberType.getVectorSize()); } // Bump up to member alignment @@ -5395,7 +5412,7 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType // Bump up to vec4 if there is a bad straddle if (explicitLayout != glslang::ElpScalar && glslangIntermediate->improperStraddle(memberType, memberSize, - currentOffset)) + currentOffset, isVectorLike)) glslang::RoundToPow2(currentOffset, 16); nextOffset = currentOffset + memberSize; diff --git a/Test/baseResults/hlsl.cbuffer-offsets.comp.out b/Test/baseResults/hlsl.cbuffer-offsets.comp.out new file mode 100644 index 0000000000..feb0bb690d --- /dev/null +++ b/Test/baseResults/hlsl.cbuffer-offsets.comp.out @@ -0,0 +1,159 @@ +hlsl.cbuffer-offsets.comp +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:43 Function Definition: @main( ( temp void) +0:43 Function Parameters: +0:43 Function Definition: main( ( temp void) +0:43 Function Parameters: +0:? Sequence +0:43 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float f1, layout( row_major std140) uniform 3-element array of 3-component vector of float f3a3, layout( row_major std140) uniform float f2, layout( row_major std140) uniform float f3, layout( row_major std140) uniform 1X1 matrix of float m11, layout( row_major std140) uniform 1X2 matrix of float m12, layout( row_major std140) uniform 2X1 matrix of float m21, layout( row_major std140) uniform 2X2 matrix of float m22, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform float f4, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform float f5, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform float f6, layout( column_major std140) uniform 1X1 matrix of float rm11, layout( column_major std140) uniform 1X2 matrix of float rm12, layout( column_major std140) uniform 2X1 matrix of float rm21, layout( column_major std140) uniform 2X2 matrix of float rm22, layout( column_major std140) uniform 3X3 matrix of float rm33, layout( row_major std140) uniform float f7, layout( column_major std140) uniform 3X4 matrix of float rm34, layout( row_major std140) uniform float f8, layout( column_major std140) uniform 4X3 matrix of float rm43, layout( row_major std140) uniform float f9, layout( row_major std140) uniform 3-element array of float f1a3, layout( row_major std140) uniform float f10}) + + +Linked compute stage: + + +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:43 Function Definition: @main( ( temp void) +0:43 Function Parameters: +0:43 Function Definition: main( ( temp void) +0:43 Function Parameters: +0:? Sequence +0:43 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'anon@0' (layout( row_major std140) uniform block{layout( row_major std140) uniform float f1, layout( row_major std140) uniform 3-element array of 3-component vector of float f3a3, layout( row_major std140) uniform float f2, layout( row_major std140) uniform float f3, layout( row_major std140) uniform 1X1 matrix of float m11, layout( row_major std140) uniform 1X2 matrix of float m12, layout( row_major std140) uniform 2X1 matrix of float m21, layout( row_major std140) uniform 2X2 matrix of float m22, layout( row_major std140) uniform 3X3 matrix of float m33, layout( row_major std140) uniform float f4, layout( row_major std140) uniform 3X4 matrix of float m34, layout( row_major std140) uniform float f5, layout( row_major std140) uniform 4X3 matrix of float m43, layout( row_major std140) uniform float f6, layout( column_major std140) uniform 1X1 matrix of float rm11, layout( column_major std140) uniform 1X2 matrix of float rm12, layout( column_major std140) uniform 2X1 matrix of float rm21, layout( column_major std140) uniform 2X2 matrix of float rm22, layout( column_major std140) uniform 3X3 matrix of float rm33, layout( row_major std140) uniform float f7, layout( column_major std140) uniform 3X4 matrix of float rm34, layout( row_major std140) uniform float f8, layout( column_major std140) uniform 4X3 matrix of float rm43, layout( row_major std140) uniform float f9, layout( row_major std140) uniform 3-element array of float f1a3, layout( row_major std140) uniform float f10}) + +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 28 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source HLSL 500 + Name 4 "main" + Name 6 "@main(" + Name 25 "CB" + MemberName 25(CB) 0 "f1" + MemberName 25(CB) 1 "f3a3" + MemberName 25(CB) 2 "f2" + MemberName 25(CB) 3 "f3" + MemberName 25(CB) 4 "m11" + MemberName 25(CB) 5 "m12" + MemberName 25(CB) 6 "m21" + MemberName 25(CB) 7 "m22" + MemberName 25(CB) 8 "m33" + MemberName 25(CB) 9 "f4" + MemberName 25(CB) 10 "m34" + MemberName 25(CB) 11 "f5" + MemberName 25(CB) 12 "m43" + MemberName 25(CB) 13 "f6" + MemberName 25(CB) 14 "rm11" + MemberName 25(CB) 15 "rm12" + MemberName 25(CB) 16 "rm21" + MemberName 25(CB) 17 "rm22" + MemberName 25(CB) 18 "rm33" + MemberName 25(CB) 19 "f7" + MemberName 25(CB) 20 "rm34" + MemberName 25(CB) 21 "f8" + MemberName 25(CB) 22 "rm43" + MemberName 25(CB) 23 "f9" + MemberName 25(CB) 24 "f1a3" + MemberName 25(CB) 25 "f10" + Name 27 "" + Decorate 13 ArrayStride 16 + Decorate 24 ArrayStride 16 + MemberDecorate 25(CB) 0 Offset 0 + MemberDecorate 25(CB) 1 Offset 16 + MemberDecorate 25(CB) 2 Offset 60 + MemberDecorate 25(CB) 3 Offset 64 + MemberDecorate 25(CB) 4 RowMajor + MemberDecorate 25(CB) 4 Offset 68 + MemberDecorate 25(CB) 4 MatrixStride 16 + MemberDecorate 25(CB) 5 RowMajor + MemberDecorate 25(CB) 5 Offset 80 + MemberDecorate 25(CB) 5 MatrixStride 16 + MemberDecorate 25(CB) 6 RowMajor + MemberDecorate 25(CB) 6 Offset 100 + MemberDecorate 25(CB) 6 MatrixStride 16 + MemberDecorate 25(CB) 7 RowMajor + MemberDecorate 25(CB) 7 Offset 112 + MemberDecorate 25(CB) 7 MatrixStride 16 + MemberDecorate 25(CB) 8 RowMajor + MemberDecorate 25(CB) 8 Offset 144 + MemberDecorate 25(CB) 8 MatrixStride 16 + MemberDecorate 25(CB) 9 Offset 188 + MemberDecorate 25(CB) 10 RowMajor + MemberDecorate 25(CB) 10 Offset 192 + MemberDecorate 25(CB) 10 MatrixStride 16 + MemberDecorate 25(CB) 11 Offset 252 + MemberDecorate 25(CB) 12 RowMajor + MemberDecorate 25(CB) 12 Offset 256 + MemberDecorate 25(CB) 12 MatrixStride 16 + MemberDecorate 25(CB) 13 Offset 304 + MemberDecorate 25(CB) 14 ColMajor + MemberDecorate 25(CB) 14 Offset 308 + MemberDecorate 25(CB) 14 MatrixStride 16 + MemberDecorate 25(CB) 15 ColMajor + MemberDecorate 25(CB) 15 Offset 312 + MemberDecorate 25(CB) 15 MatrixStride 16 + MemberDecorate 25(CB) 16 ColMajor + MemberDecorate 25(CB) 16 Offset 320 + MemberDecorate 25(CB) 16 MatrixStride 16 + MemberDecorate 25(CB) 17 ColMajor + MemberDecorate 25(CB) 17 Offset 352 + MemberDecorate 25(CB) 17 MatrixStride 16 + MemberDecorate 25(CB) 18 ColMajor + MemberDecorate 25(CB) 18 Offset 384 + MemberDecorate 25(CB) 18 MatrixStride 16 + MemberDecorate 25(CB) 19 Offset 428 + MemberDecorate 25(CB) 20 ColMajor + MemberDecorate 25(CB) 20 Offset 432 + MemberDecorate 25(CB) 20 MatrixStride 16 + MemberDecorate 25(CB) 21 Offset 480 + MemberDecorate 25(CB) 22 ColMajor + MemberDecorate 25(CB) 22 Offset 496 + MemberDecorate 25(CB) 22 MatrixStride 16 + MemberDecorate 25(CB) 23 Offset 556 + MemberDecorate 25(CB) 24 Offset 560 + MemberDecorate 25(CB) 25 Offset 596 + Decorate 25(CB) Block + Decorate 27 DescriptorSet 0 + Decorate 27 Binding 0 + 2: TypeVoid + 3: TypeFunction 2 + 9: TypeFloat 32 + 10: TypeVector 9(float) 3 + 11: TypeInt 32 0 + 12: 11(int) Constant 3 + 13: TypeArray 10(fvec3) 12 + 14: TypeVector 9(float) 1 + 15: TypeMatrix 14(fvec) 1 + 16: TypeVector 9(float) 2 + 17: TypeMatrix 16(fvec2) 1 + 18: TypeMatrix 14(fvec) 2 + 19: TypeMatrix 16(fvec2) 2 + 20: TypeMatrix 10(fvec3) 3 + 21: TypeVector 9(float) 4 + 22: TypeMatrix 21(fvec4) 3 + 23: TypeMatrix 10(fvec3) 4 + 24: TypeArray 9(float) 12 + 25(CB): TypeStruct 9(float) 13 9(float) 9(float) 15 17 18 19 20 9(float) 22 9(float) 23 9(float) 15 17 18 19 20 9(float) 22 9(float) 23 9(float) 24 9(float) + 26: TypePointer Uniform 25(CB) + 27: 26(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 8: 2 FunctionCall 6(@main() + Return + FunctionEnd + 6(@main(): 2 Function None 3 + 7: Label + Return + FunctionEnd diff --git a/Test/hlsl.cbuffer-offsets.comp b/Test/hlsl.cbuffer-offsets.comp new file mode 100644 index 0000000000..de88d81f3a --- /dev/null +++ b/Test/hlsl.cbuffer-offsets.comp @@ -0,0 +1,44 @@ +// Correct offsets obtained from "HLSL Constant Buffer Visualizer" +// https://maraneshi.github.io/HLSL-ConstantBufferLayoutVisualizer/ + +cbuffer CB { + float f1; + float3 f3a3[3]; + float f2; + float f3; + + float1x1 m11; + float1x2 m12; + float2x1 m21; + float2x2 m22; + + float3x3 m33; + float f4; + + float3x4 m34; + float f5; + + float4x3 m43; + float f6; + + row_major float1x1 rm11; + row_major float1x2 rm12; + row_major float2x1 rm21; + row_major float2x2 rm22; + + row_major float3x3 rm33; + float f7; + + row_major float3x4 rm34; + float f8; + + row_major float4x3 rm43; + float f9; + + float f1a3[3]; + float f10; +}; + +void main() +{ +} diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 1bd6678b1e..3b5add9de5 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -2217,9 +2217,9 @@ int TIntermediate::getBaseAlignment(const TType& type, int& size, int& stride, T } // To aid the basic HLSL rule about crossing vec4 boundaries. -bool TIntermediate::improperStraddle(const TType& type, int size, int offset) +bool TIntermediate::improperStraddle(const TType& type, int size, int offset, bool vectorLike) { - if (! type.isVector() || type.isArray()) + if (! vectorLike || type.isArray()) return false; return size <= 16 ? offset / 16 != (offset + size - 1) / 16 diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index db0367f5af..b453b14648 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -1057,7 +1057,7 @@ class TIntermediate { static int getBaseAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); static int getScalarAlignment(const TType&, int& size, int& stride, bool rowMajor); static int getMemberAlignment(const TType&, int& size, int& stride, TLayoutPacking layoutPacking, bool rowMajor); - static bool improperStraddle(const TType& type, int size, int offset); + static bool improperStraddle(const TType& type, int size, int offset, bool vectorLike); static void updateOffset(const TType& parentType, const TType& memberType, int& offset, int& memberSize); static int getOffset(const TType& type, int index); static int getBlockSize(const TType& blockType); diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index cc0c9eb39d..75af7c8c60 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -174,6 +174,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.calculatelodunclamped.dx10.frag", "main"}, {"hlsl.cast.frag", "PixelShaderFunction"}, {"hlsl.cbuffer-identifier.vert", "main"}, + {"hlsl.cbuffer-offsets.comp", "main"}, {"hlsl.charLit.vert", "main"}, {"hlsl.clip.frag", "main"}, {"hlsl.clipdistance-1.frag", "main"}, From 68df2230566b02c6495ffd8c200db523392fa797 Mon Sep 17 00:00:00 2001 From: jimihem <149994911+jimihem@users.noreply.github.com> Date: Thu, 18 Apr 2024 08:14:26 +0800 Subject: [PATCH 457/594] index outside gl_SampleMask range, compiler need report error. (#3556) --- .../index_outside_sample_mask_range.frag.out | 55 +++++++++++++++++++ Test/index_outside_sample_mask_range.frag | 8 +++ glslang/MachineIndependent/ParseHelper.cpp | 4 ++ gtests/AST.FromFile.cpp | 1 + 4 files changed, 68 insertions(+) create mode 100644 Test/baseResults/index_outside_sample_mask_range.frag.out create mode 100644 Test/index_outside_sample_mask_range.frag diff --git a/Test/baseResults/index_outside_sample_mask_range.frag.out b/Test/baseResults/index_outside_sample_mask_range.frag.out new file mode 100644 index 0000000000..fb0dca241f --- /dev/null +++ b/Test/baseResults/index_outside_sample_mask_range.frag.out @@ -0,0 +1,55 @@ +index_outside_sample_mask_range.frag +ERROR: 0:6: '[' : gl_SampleMask array index out of range '1' +ERROR: 1 compilation errors. No code generated. + + +Shader version: 320 +ERROR: node is still EOpNull! +0:3 Function Definition: main( ( global void) +0:3 Function Parameters: +0:? Sequence +0:6 Sequence +0:6 move second child to first child ( temp highp int) +0:6 'invalidValue' ( temp highp int) +0:6 direct index ( temp highp int SampleMaskIn) +0:6 'gl_SampleMask' ( out unsized 2-element array of highp int SampleMaskIn) +0:6 Constant: +0:6 1 (const int) +0:7 move second child to first child ( temp mediump 4-component vector of float) +0:7 'fs_color' (layout( location=0) out mediump 4-component vector of float) +0:7 Constant: +0:7 1.000000 +0:7 0.000000 +0:7 0.000000 +0:7 1.000000 +0:? Linker Objects +0:? 'fs_color' (layout( location=0) out mediump 4-component vector of float) +0:? 'gl_SampleMask' ( out unsized 2-element array of highp int SampleMaskIn) + + +Linked fragment stage: + + +Shader version: 320 +ERROR: node is still EOpNull! +0:3 Function Definition: main( ( global void) +0:3 Function Parameters: +0:? Sequence +0:6 Sequence +0:6 move second child to first child ( temp highp int) +0:6 'invalidValue' ( temp highp int) +0:6 direct index ( temp highp int SampleMaskIn) +0:6 'gl_SampleMask' ( out 2-element array of highp int SampleMaskIn) +0:6 Constant: +0:6 1 (const int) +0:7 move second child to first child ( temp mediump 4-component vector of float) +0:7 'fs_color' (layout( location=0) out mediump 4-component vector of float) +0:7 Constant: +0:7 1.000000 +0:7 0.000000 +0:7 0.000000 +0:7 1.000000 +0:? Linker Objects +0:? 'fs_color' (layout( location=0) out mediump 4-component vector of float) +0:? 'gl_SampleMask' ( out 2-element array of highp int SampleMaskIn) + diff --git a/Test/index_outside_sample_mask_range.frag b/Test/index_outside_sample_mask_range.frag new file mode 100644 index 0000000000..7a59e1b3d7 --- /dev/null +++ b/Test/index_outside_sample_mask_range.frag @@ -0,0 +1,8 @@ +#version 320 es +layout (location = 0) out mediump vec4 fs_color; +void main() +{ + const highp int invalidIndex = (gl_MaxSamples + 31) / 32; + highp int invalidValue = gl_SampleMask[invalidIndex]; + fs_color = vec4(1.0f, 0.0f, 0.0f, 1.0f); +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index ff4e903974..f157d15b2b 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -598,6 +598,10 @@ TIntermTyped* TParseContext::handleBracketDereference(const TSourceLoc& loc, TIn indexValue >= resources.maxCullDistances) { error(loc, "gl_CullDistance", "[", "array index out of range '%d'", indexValue); } + else if (base->getQualifier().builtIn == EbvSampleMask && + indexValue >= (resources.maxSamples + 31) / 32) { + error(loc, "gl_SampleMask", "[", "array index out of range '%d'", indexValue); + } // For 2D per-view builtin arrays, update the inner dimension size in parent type if (base->getQualifier().isPerView() && base->getQualifier().builtIn != EbvNone) { TIntermBinary* binaryNode = base->getAsBinaryNode(); diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index e73328e8d2..7410f6ce14 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -309,6 +309,7 @@ INSTANTIATE_TEST_SUITE_P( "GL_EXT_draw_instanced.vert", "overflow_underflow_toinf_0.frag", "GL_EXT_texture_array.frag", + "index_outside_sample_mask_range.frag", "positive_infinity.frag", })), FileNameAsCustomTestSuffix From ce24426fbbbed9502b4abad4ade06d7497bb407c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 06:49:11 +0000 Subject: [PATCH 458/594] Bump actions/checkout from 4.1.2 to 4.1.3 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.2 to 4.1.3. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/9bb56186c3b09b4f86b1c65136769dd318469633...1d96c772d19495a3b5c517cd2bc0cb401ea0529f) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 95be4e1127..c58a1d8fb8 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -41,7 +41,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -105,7 +105,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -162,7 +162,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 9253ceca6c..33d0dd9016 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -17,7 +17,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -53,7 +53,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -91,7 +91,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -126,7 +126,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON @@ -150,7 +150,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -168,7 +168,7 @@ jobs: iOS: runs-on: macos-13 steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 @@ -197,7 +197,7 @@ jobs: # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 @@ -220,7 +220,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index ccbf1223b7..bcc2a9ce91 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@9bb56186c3b09b4f86b1c65136769dd318469633 # v4.1.2 + uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 with: persist-credentials: false From d91ca31132f457653fbfdc0f0c34e661f83b08b6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 06:49:14 +0000 Subject: [PATCH 459/594] Bump actions/upload-artifact from 4.3.1 to 4.3.2 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.1 to 4.3.2. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/5d5d22a31266ced268874388b861e4b58bb5c2f3...1746f4ab65b179e0ea60a494b83293b640dd5bba) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index bcc2a9ce91..224f57ae36 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@5d5d22a31266ced268874388b861e4b58bb5c2f3 # v4.3.1 + uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 with: name: SARIF file path: results.sarif From d4d821272bd9d85ddb108d290f782f5ff2b0aae7 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Apr 2024 06:49:21 +0000 Subject: [PATCH 460/594] Bump github/codeql-action from 3.24.10 to 3.25.1 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.24.10 to 3.25.1. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4355270be187e1b672a7a1c7c7bae5afdc1ab94a...c7f9125735019aa87cfc361530512d50ea439c71) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 224f57ae36..adcfa76773 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4355270be187e1b672a7a1c7c7bae5afdc1ab94a # v3.24.10 + uses: github/codeql-action/upload-sarif@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 with: sarif_file: results.sarif From e46c1b725c6f04321175f492d898899eb214c722 Mon Sep 17 00:00:00 2001 From: Pavel Asyutchenko Date: Fri, 19 Apr 2024 22:54:52 +0200 Subject: [PATCH 461/594] Keep vec1.x l-value in HLSL Changes in hlsl.shapeConv.frag are just renumbering, duplicated load (80) has disappeared for whatever reason. --- Test/baseResults/hlsl.shapeConv.frag.out | 125 ++++++++++---------- Test/baseResults/hlsl.swizzle.vec1.comp.out | 72 +++++++++++ Test/hlsl.swizzle.vec1.comp | 8 ++ glslang/HLSL/hlslParseHelper.cpp | 11 +- gtests/Hlsl.FromFile.cpp | 1 + 5 files changed, 149 insertions(+), 68 deletions(-) create mode 100644 Test/baseResults/hlsl.swizzle.vec1.comp.out create mode 100644 Test/hlsl.swizzle.vec1.comp diff --git a/Test/baseResults/hlsl.shapeConv.frag.out b/Test/baseResults/hlsl.shapeConv.frag.out index 05bfa6ab0b..0fd379b54e 100644 --- a/Test/baseResults/hlsl.shapeConv.frag.out +++ b/Test/baseResults/hlsl.shapeConv.frag.out @@ -102,8 +102,10 @@ gl_FragCoord origin is upper left 0:27 'v' ( temp 4-component vector of float) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 'f1' ( temp 1-component vector of float) -0:28 Construct float ( temp float) +0:28 direct index ( temp float) 0:28 'f1' ( temp 1-component vector of float) +0:28 Constant: +0:28 0 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Construct float ( temp float) 0:29 'f1' ( temp 1-component vector of float) @@ -264,8 +266,10 @@ gl_FragCoord origin is upper left 0:27 'v' ( temp 4-component vector of float) 0:27 Construct vec4 ( temp 4-component vector of float) 0:27 'f1' ( temp 1-component vector of float) -0:28 Construct float ( temp float) +0:28 direct index ( temp float) 0:28 'f1' ( temp 1-component vector of float) +0:28 Constant: +0:28 0 (const int) 0:29 Construct vec3 ( temp 3-component vector of float) 0:29 Construct float ( temp float) 0:29 'f1' ( temp 1-component vector of float) @@ -320,7 +324,7 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 127 +// Id's are bound by 126 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -339,11 +343,11 @@ gl_FragCoord origin is upper left Name 34 "MyVal" Name 37 "foo" Name 70 "f1" - Name 83 "ui" - Name 88 "ui3" - Name 103 "mixed" - Name 115 "sf" - Name 118 "sf1" + Name 82 "ui" + Name 87 "ui3" + Name 102 "mixed" + Name 114 "sf" + Name 117 "sf1" 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -375,11 +379,11 @@ gl_FragCoord origin is upper left 56: TypeInt 32 0 57: 56(int) Constant 0 62: TypeVector 41(bool) 4 - 82: TypePointer Function 56(int) - 85: TypeVector 56(int) 3 - 87: TypePointer Function 85(ivec3) - 122: 6(float) Constant 1077936128 - 123: 7(fvec4) ConstantComposite 122 122 122 122 + 81: TypePointer Function 56(int) + 84: TypeVector 56(int) 3 + 86: TypePointer Function 84(ivec3) + 121: 6(float) Constant 1077936128 + 122: 7(fvec4) ConstantComposite 121 121 121 121 4(main): 2 Function None 3 5: Label Return @@ -395,11 +399,11 @@ gl_FragCoord origin is upper left 34(MyVal): 23(ptr) Variable Function 37(foo): 23(ptr) Variable Function 70(f1): 9(ptr) Variable Function - 83(ui): 82(ptr) Variable Function - 88(ui3): 87(ptr) Variable Function - 103(mixed): 23(ptr) Variable Function - 115(sf): 9(ptr) Variable Function - 118(sf1): 9(ptr) Variable Function + 82(ui): 81(ptr) Variable Function + 87(ui3): 86(ptr) Variable Function + 102(mixed): 23(ptr) Variable Function + 114(sf): 9(ptr) Variable Function + 117(sf1): 9(ptr) Variable Function Store 15(v) 17 Store 15(v) 19 20: 6(float) Load 12(f) @@ -443,47 +447,46 @@ gl_FragCoord origin is upper left 77: 7(fvec4) CompositeConstruct 76 76 76 76 78: 62(bvec4) FOrdLessThan 75 77 79: 6(float) Load 70(f1) - 80: 6(float) Load 70(f1) - 81: 22(fvec3) CompositeConstruct 80 80 80 - 84: 56(int) Load 83(ui) - 86: 85(ivec3) CompositeConstruct 84 84 84 - 89: 85(ivec3) Load 88(ui3) - 90: 85(ivec3) ShiftRightLogical 86 89 - 91: 85(ivec3) Load 88(ui3) - 92: 56(int) Load 83(ui) - 93: 85(ivec3) CompositeConstruct 92 92 92 - 94: 85(ivec3) ShiftRightLogical 91 93 - 95: 6(float) Load 70(f1) - 96: 7(fvec4) Load 15(v) - 97: 7(fvec4) CompositeConstruct 95 95 95 95 - 98: 7(fvec4) FMul 96 97 - Store 15(v) 98 - 99: 7(fvec4) Load 15(v) - 100: 6(float) CompositeExtract 99 0 - 101: 6(float) Load 70(f1) - 102: 6(float) FMul 101 100 - Store 70(f1) 102 - 104: 22(fvec3) Load 24(u) - 105: 7(fvec4) Load 15(v) - 106: 6(float) CompositeExtract 105 0 - 107: 6(float) CompositeExtract 105 1 - 108: 6(float) CompositeExtract 105 2 - 109: 22(fvec3) CompositeConstruct 106 107 108 - 110: 22(fvec3) FMul 104 109 - Store 103(mixed) 110 - 111: 22(fvec3) Load 24(u) - 112: 6(float) CompositeExtract 111 0 - Store 12(f) 112 - 113: 22(fvec3) Load 24(u) - 114: 6(float) CompositeExtract 113 0 - Store 70(f1) 114 - 116: 7(fvec4) Load 15(v) - 117: 6(float) CompositeExtract 116 0 - Store 115(sf) 117 - 119: 7(fvec4) Load 15(v) - 120: 6(float) CompositeExtract 119 0 - Store 118(sf1) 120 - 121: 7(fvec4) Load 11(input) - 124: 7(fvec4) FMul 121 123 - ReturnValue 124 + 80: 22(fvec3) CompositeConstruct 79 79 79 + 83: 56(int) Load 82(ui) + 85: 84(ivec3) CompositeConstruct 83 83 83 + 88: 84(ivec3) Load 87(ui3) + 89: 84(ivec3) ShiftRightLogical 85 88 + 90: 84(ivec3) Load 87(ui3) + 91: 56(int) Load 82(ui) + 92: 84(ivec3) CompositeConstruct 91 91 91 + 93: 84(ivec3) ShiftRightLogical 90 92 + 94: 6(float) Load 70(f1) + 95: 7(fvec4) Load 15(v) + 96: 7(fvec4) CompositeConstruct 94 94 94 94 + 97: 7(fvec4) FMul 95 96 + Store 15(v) 97 + 98: 7(fvec4) Load 15(v) + 99: 6(float) CompositeExtract 98 0 + 100: 6(float) Load 70(f1) + 101: 6(float) FMul 100 99 + Store 70(f1) 101 + 103: 22(fvec3) Load 24(u) + 104: 7(fvec4) Load 15(v) + 105: 6(float) CompositeExtract 104 0 + 106: 6(float) CompositeExtract 104 1 + 107: 6(float) CompositeExtract 104 2 + 108: 22(fvec3) CompositeConstruct 105 106 107 + 109: 22(fvec3) FMul 103 108 + Store 102(mixed) 109 + 110: 22(fvec3) Load 24(u) + 111: 6(float) CompositeExtract 110 0 + Store 12(f) 111 + 112: 22(fvec3) Load 24(u) + 113: 6(float) CompositeExtract 112 0 + Store 70(f1) 113 + 115: 7(fvec4) Load 15(v) + 116: 6(float) CompositeExtract 115 0 + Store 114(sf) 116 + 118: 7(fvec4) Load 15(v) + 119: 6(float) CompositeExtract 118 0 + Store 117(sf1) 119 + 120: 7(fvec4) Load 11(input) + 123: 7(fvec4) FMul 120 122 + ReturnValue 123 FunctionEnd diff --git a/Test/baseResults/hlsl.swizzle.vec1.comp.out b/Test/baseResults/hlsl.swizzle.vec1.comp.out new file mode 100644 index 0000000000..e1583b889f --- /dev/null +++ b/Test/baseResults/hlsl.swizzle.vec1.comp.out @@ -0,0 +1,72 @@ +hlsl.swizzle.vec1.comp +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:2 Function Definition: @main( ( temp void) +0:2 Function Parameters: +0:? Sequence +0:4 move second child to first child ( temp float) +0:4 direct index ( temp float) +0:4 'f1' ( temp 1-component vector of float) +0:4 Constant: +0:4 0 (const int) +0:4 Constant: +0:4 0.500000 +0:2 Function Definition: main( ( temp void) +0:2 Function Parameters: +0:? Sequence +0:2 Function Call: @main( ( temp void) +0:? Linker Objects + + +Linked compute stage: + + +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:2 Function Definition: @main( ( temp void) +0:2 Function Parameters: +0:? Sequence +0:4 move second child to first child ( temp float) +0:4 direct index ( temp float) +0:4 'f1' ( temp 1-component vector of float) +0:4 Constant: +0:4 0 (const int) +0:4 Constant: +0:4 0.500000 +0:2 Function Definition: main( ( temp void) +0:2 Function Parameters: +0:? Sequence +0:2 Function Call: @main( ( temp void) +0:? Linker Objects + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 13 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source HLSL 500 + Name 4 "main" + Name 6 "@main(" + Name 10 "f1" + 2: TypeVoid + 3: TypeFunction 2 + 8: TypeFloat 32 + 9: TypePointer Function 8(float) + 11: 8(float) Constant 1056964608 + 4(main): 2 Function None 3 + 5: Label + 12: 2 FunctionCall 6(@main() + Return + FunctionEnd + 6(@main(): 2 Function None 3 + 7: Label + 10(f1): 9(ptr) Variable Function + Store 10(f1) 11 + Return + FunctionEnd diff --git a/Test/hlsl.swizzle.vec1.comp b/Test/hlsl.swizzle.vec1.comp new file mode 100644 index 0000000000..1ee454cc73 --- /dev/null +++ b/Test/hlsl.swizzle.vec1.comp @@ -0,0 +1,8 @@ +void main() +{ + float1 f1; + f1.x = 0.5; + + // This is not implemented + // f1.xx = float2(0.6, 0.7); +} diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index a1ae55c82e..0fd724d0d9 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -962,14 +962,11 @@ TIntermTyped* HlslParseContext::handleDotDereference(const TSourceLoc& loc, TInt return addConstructor(loc, base, type); } } - if (base->getVectorSize() == 1) { + // Use EOpIndexDirect (below) with vec1.x so that it remains l-value (Test/hlsl.swizzle.vec1.comp) + if (base->getVectorSize() == 1 && selectors.size() > 1) { TType scalarType(base->getBasicType(), EvqTemporary, 1); - if (selectors.size() == 1) - return addConstructor(loc, base, scalarType); - else { - TType vectorType(base->getBasicType(), EvqTemporary, selectors.size()); - return addConstructor(loc, addConstructor(loc, base, scalarType), vectorType); - } + TType vectorType(base->getBasicType(), EvqTemporary, selectors.size()); + return addConstructor(loc, addConstructor(loc, base, scalarType), vectorType); } if (base->getType().getQualifier().isFrontEndConstant()) diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index 75af7c8c60..c94a3381ac 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -420,6 +420,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.structIoFourWay.frag", "main"}, {"hlsl.structStructName.frag", "main"}, {"hlsl.subpass.frag", "main"}, + {"hlsl.swizzle.vec1.comp", "main"}, {"hlsl.synthesizeInput.frag", "main"}, {"hlsl.texturebuffer.frag", "main"}, {"hlsl.texture.struct.frag", "main"}, From b9b8fd917b195f680a1ce3f3f663c03e1c82579d Mon Sep 17 00:00:00 2001 From: Herman Semenov Date: Mon, 1 Apr 2024 15:23:35 +0000 Subject: [PATCH 462/594] Using reserve() in GlslangToSpv --- SPIRV/GlslangToSpv.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 6d5309ff18..ef39aec32e 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -8075,6 +8075,7 @@ spv::Id TGlslangToSpvTraverser::createAtomicOperation(glslang::TOperator op, spv } std::vector spvAtomicOperands; // hold the spv operands + spvAtomicOperands.reserve(6); spvAtomicOperands.push_back(pointerId); spvAtomicOperands.push_back(scopeId); spvAtomicOperands.push_back(semanticsId); @@ -10203,6 +10204,7 @@ spv::Id TGlslangToSpvTraverser::createShortCircuit(glslang::TOperator op, glslan // Operands to accumulate OpPhi operands std::vector phiOperands; + phiOperands.reserve(4); // accumulate left operand's phi information phiOperands.push_back(leftId); phiOperands.push_back(builder.getBuildPoint()->getId()); From a4f870053fbf587667b8d54dcc83f7e37a2dbd37 Mon Sep 17 00:00:00 2001 From: Wooyoung Kim Date: Tue, 23 Apr 2024 15:34:51 -0700 Subject: [PATCH 463/594] A couple of fixes to the GL_QCOM_image_processing2 support (#3578) 1) handle the extension requirements of GL_QCOM_image_processing2 correctly 2) add QCOM image processing decorations to ids only once. --- SPIRV/GlslangToSpv.cpp | 24 +++++++++++++++++-- SPIRV/doc.cpp | 1 + .../spv.tpipBlockMatchGatherSAD.frag.out | 6 +++-- .../spv.tpipBlockMatchGatherSSD.frag.out | 6 +++-- .../spv.tpipBlockMatchWindowSAD.frag.out | 3 +-- .../spv.tpipBlockMatchWindowSSD.frag.out | 3 +-- Test/spv.tpipBlockMatchGatherSAD.frag | 1 + Test/spv.tpipBlockMatchGatherSSD.frag | 1 + 8 files changed, 35 insertions(+), 10 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index ef39aec32e..1674c55036 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -227,6 +227,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id createNoArgOperation(glslang::TOperator op, spv::Decoration precision, spv::Id typeId); spv::Id getSymbolId(const glslang::TIntermSymbol* node); void addMeshNVDecoration(spv::Id id, int member, const glslang::TQualifier & qualifier); + bool hasQCOMImageProceessingDecoration(spv::Id id, spv::Decoration decor); void addImageProcessingQCOMDecoration(spv::Id id, spv::Decoration decor); void addImageProcessing2QCOMDecoration(spv::Id id, bool isForGather); spv::Id createSpvConstant(const glslang::TIntermTyped&); @@ -283,6 +284,7 @@ class TGlslangToSpvTraverser : public glslang::TIntermTraverser { spv::Id taskPayloadID; // Used later for generating OpTraceKHR/OpExecuteCallableKHR/OpHitObjectRecordHit*/OpHitObjectGetShaderBindingTableData std::unordered_map locationToSymbol[4]; + std::unordered_map > idToQCOMDecorations; }; // @@ -3382,6 +3384,8 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt case glslang::EOpImageBlockMatchGatherSSDQCOM: case glslang::EOpImageBlockMatchGatherSADQCOM: + builder.addCapability(spv::CapabilityTextureBlockMatchQCOM); + builder.addExtension(spv::E_SPV_QCOM_image_processing); builder.addCapability(spv::CapabilityTextureBlockMatch2QCOM); builder.addExtension(spv::E_SPV_QCOM_image_processing2); break; @@ -9834,6 +9838,16 @@ void TGlslangToSpvTraverser::addMeshNVDecoration(spv::Id id, int member, const g } } +bool TGlslangToSpvTraverser::hasQCOMImageProceessingDecoration(spv::Id id, spv::Decoration decor) +{ + std::vector &decoVec = idToQCOMDecorations[id]; + for ( auto d : decoVec ) { + if ( d == decor ) + return true; + } + return false; +} + void TGlslangToSpvTraverser::addImageProcessingQCOMDecoration(spv::Id id, spv::Decoration decor) { spv::Op opc = builder.getOpCode(id); @@ -9844,7 +9858,10 @@ void TGlslangToSpvTraverser::addImageProcessingQCOMDecoration(spv::Id id, spv::D if (opc == spv::OpLoad) { spv::Id texid = builder.getIdOperand(id, 0); - builder.addDecoration(texid, decor); + if (!hasQCOMImageProceessingDecoration(texid, decor)) {// + builder.addDecoration(texid, decor); + idToQCOMDecorations[texid].push_back(decor); + } } } @@ -9862,7 +9879,10 @@ void TGlslangToSpvTraverser::addImageProcessing2QCOMDecoration(spv::Id id, bool if (this->glslangIntermediate->getSpv().spv >= glslang::EShTargetSpv_1_4) { assert(iOSet.count(tsid) > 0); } - this->builder.addDecoration(tsid, decor); + if (!hasQCOMImageProceessingDecoration(tsid, decor)) { + this->builder.addDecoration(tsid, decor); + idToQCOMDecorations[tsid].push_back(decor); + } } }; diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 26e4b1018a..ea4915fe78 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1064,6 +1064,7 @@ const char* CapabilityString(int info) case CapabilityTextureSampleWeightedQCOM: return "TextureSampleWeightedQCOM"; case CapabilityTextureBoxFilterQCOM: return "TextureBoxFilterQCOM"; case CapabilityTextureBlockMatchQCOM: return "TextureBlockMatchQCOM"; + case CapabilityTextureBlockMatch2QCOM: return "TextureBlockMatch2QCOM"; default: return "Bad"; } diff --git a/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out index be4c16176a..6a543b3cf8 100644 --- a/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out @@ -1,17 +1,19 @@ spv.tpipBlockMatchGatherSAD.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader - Capability Bad + Capability TextureBlockMatchQCOM + Capability TextureBlockMatch2QCOM + Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 ExecutionMode 4 OriginUpperLeft Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" SourceExtension "GL_QCOM_image_processing2" Name 4 "main" Name 9 "tgt_coords" diff --git a/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out index 5b63e49d2a..74479c1b3f 100644 --- a/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out @@ -1,17 +1,19 @@ spv.tpipBlockMatchGatherSSD.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 Capability Shader - Capability Bad + Capability TextureBlockMatchQCOM + Capability TextureBlockMatch2QCOM + Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 4 "main" 13 41 ExecutionMode 4 OriginUpperLeft Source GLSL 450 + SourceExtension "GL_QCOM_image_processing" SourceExtension "GL_QCOM_image_processing2" Name 4 "main" Name 9 "tgt_coords" diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out index afadf03040..ff102565c8 100644 --- a/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out @@ -6,7 +6,7 @@ Validation failed Capability Shader Capability TextureBlockMatchQCOM - Capability Bad + Capability TextureBlockMatch2QCOM Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" @@ -39,7 +39,6 @@ Validation failed Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) DecorationBlockMatchSamplerQCOM Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 48(samp) DecorationBlockMatchSamplerQCOM Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 Decorate 64(ref_samp) DescriptorSet 0 diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out index 864a8bcace..1e2fa1fb53 100644 --- a/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out @@ -6,7 +6,7 @@ Validation failed Capability Shader Capability TextureBlockMatchQCOM - Capability Bad + Capability TextureBlockMatch2QCOM Extension "SPV_QCOM_image_processing" Extension "SPV_QCOM_image_processing2" 1: ExtInstImport "GLSL.std.450" @@ -39,7 +39,6 @@ Validation failed Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) DecorationBlockMatchSamplerQCOM Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 48(samp) DecorationBlockMatchSamplerQCOM Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 Decorate 64(ref_samp) DescriptorSet 0 diff --git a/Test/spv.tpipBlockMatchGatherSAD.frag b/Test/spv.tpipBlockMatchGatherSAD.frag index d793a5e609..7ac8fd0daf 100644 --- a/Test/spv.tpipBlockMatchGatherSAD.frag +++ b/Test/spv.tpipBlockMatchGatherSAD.frag @@ -1,4 +1,5 @@ #version 450 +#extension GL_QCOM_image_processing : require #extension GL_QCOM_image_processing2 : require precision highp float; diff --git a/Test/spv.tpipBlockMatchGatherSSD.frag b/Test/spv.tpipBlockMatchGatherSSD.frag index d3a0bcea16..7890e35fb9 100644 --- a/Test/spv.tpipBlockMatchGatherSSD.frag +++ b/Test/spv.tpipBlockMatchGatherSSD.frag @@ -1,4 +1,5 @@ #version 450 +#extension GL_QCOM_image_processing : require #extension GL_QCOM_image_processing2 : require precision highp float; From b5672e8e8d42b0278d1765ab3d24c97b0e746bd0 Mon Sep 17 00:00:00 2001 From: assiduous Date: Tue, 23 Apr 2024 13:17:38 -0700 Subject: [PATCH 464/594] readme: added a note about STACK_SIZE Emscripten compiler setting --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5493ff9080..cac2352b2c 100644 --- a/README.md +++ b/README.md @@ -237,6 +237,10 @@ Use the steps in [Build Steps](#build-steps), with the following notes/exception * For a standalone JS/WASM library, turn on `-DENABLE_GLSLANG_JS=ON`. * To get a fully minimized build, make sure to use `brotli` to compress the .js and .wasm files +* Note that by default, Emscripten allocates a very small stack size, which may + cause stack overflows when compiling large shaders. Use the + [STACK_SIZE](https://emscripten.org/docs/tools_reference/settings_reference.html?highlight=environment#stack-size) + compiler setting to increase the stack size. Example: From 933714331300a229852637d75257ec93c978a94b Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 25 Apr 2024 19:14:26 -0400 Subject: [PATCH 465/594] Increase the TIntermediate::usedIo array In 0bbec2e8f, the code started using usedIo[4], however it never increased the size of the array to make that index actually valid. --- glslang/MachineIndependent/localintermediate.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index b453b14648..c9eac27d57 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -1251,7 +1251,7 @@ class TIntermediate { std::unordered_set usedConstantId; // specialization constant ids used std::vector usedAtomics; // sets of bindings used by atomic counters - std::vector usedIo[4]; // sets of used locations, one for each of in, out, uniform, and buffers + std::vector usedIo[5]; // sets of used locations, one for each of in, out, uniform, and buffers std::vector usedIoRT[4]; // sets of used location, one for rayPayload/rayPayloadIN, // one for callableData/callableDataIn, one for hitObjectAttributeNV and // one for shaderrecordhitobjectNV From 44fcbccd06b6e3596925d787774afe2a28d3fe16 Mon Sep 17 00:00:00 2001 From: jimihem <149994911+jimihem@users.noreply.github.com> Date: Sat, 27 Apr 2024 00:05:08 +0800 Subject: [PATCH 466/594] location aliasing (#3438) * location aliasing when location aliasing, the aliases sharing the location must have the same underlying numerical type (floating-point or integer) and the same auxiliary storage and interpolation qualification. The following case, glslang need report error. layout(vertices = 1) out; layout (location = 1, component = 0) in double gohan[]; layout (location = 1, component = 2) in float goten[]; in vec4 vs_tcs[]; out vec4 tcs_tes[]; void main() { } * Need consider the following case: location aliasing with different interpolation qualifier. --- Test/baseResults/440.frag.out | 2 +- Test/baseResults/440.vert.out | 7 +++- Test/baseResults/location_aliasing.tesc.out | 33 +++++++++++++++++++ Test/baseResults/location_aliasing1.frag.out | 27 +++++++++++++++ ....ext.ShaderTileImage.typemismatch.frag.out | 2 +- Test/location_aliasing.tesc | 15 +++++++++ Test/location_aliasing1.frag | 10 ++++++ glslang/MachineIndependent/ParseHelper.cpp | 8 ++--- glslang/MachineIndependent/linkValidate.cpp | 12 ++++--- .../MachineIndependent/localintermediate.h | 9 +++-- gtests/AST.FromFile.cpp | 2 ++ 11 files changed, 114 insertions(+), 13 deletions(-) create mode 100644 Test/baseResults/location_aliasing.tesc.out create mode 100644 Test/baseResults/location_aliasing1.frag.out create mode 100644 Test/location_aliasing.tesc create mode 100644 Test/location_aliasing1.frag diff --git a/Test/baseResults/440.frag.out b/Test/baseResults/440.frag.out index 7ea19262de..9de029a21b 100644 --- a/Test/baseResults/440.frag.out +++ b/Test/baseResults/440.frag.out @@ -1,7 +1,7 @@ 440.frag ERROR: 0:11: 'location' : overlapping use of location 4 ERROR: 0:13: 'component' : type overflows the available 4 components -ERROR: 0:22: 'location' : fragment outputs or tileImageEXTs sharing the same location 30 must be the same basic type +ERROR: 0:22: 'location' : the aliases sharing the location 30 must be the same basic type and interpolation qualification ERROR: 0:24: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:25: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) ERROR: 0:26: 'qualifier' : cannot use auxiliary, memory, interpolation, or precision qualifier in a default qualifier declaration (declaration with no type) diff --git a/Test/baseResults/440.vert.out b/Test/baseResults/440.vert.out index 6c975c09a6..f341548523 100644 --- a/Test/baseResults/440.vert.out +++ b/Test/baseResults/440.vert.out @@ -10,16 +10,21 @@ ERROR: 0:39: 'component' : type overflows the available 4 components ERROR: 0:40: 'component' : type overflows the available 4 components ERROR: 0:42: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:43: 'component' : cannot apply to a matrix, structure, or block +ERROR: 0:43: 'location' : the aliases sharing the location 33 must be the same basic type and interpolation qualification ERROR: 0:44: 'component' : cannot apply to a matrix, structure, or block +ERROR: 0:44: 'location' : the aliases sharing the location 34 must be the same basic type and interpolation qualification ERROR: 0:46: 'component' : must specify 'location' to use 'component' ERROR: 0:52: 'location' : overlapping use of location 40 ERROR: 0:54: 'component' : type overflows the available 4 components ERROR: 0:55: 'component' : type overflows the available 4 components ERROR: 0:57: 'component' : cannot apply to a matrix, structure, or block ERROR: 0:58: 'component' : cannot apply to a matrix, structure, or block +ERROR: 0:58: 'location' : the aliases sharing the location 43 must be the same basic type and interpolation qualification ERROR: 0:61: 'location/component/index' : cannot declare a default, use a full declaration +ERROR: 0:64: 'location' : the aliases sharing the location 50 must be the same basic type and interpolation qualification ERROR: 0:66: 'component' : doubles cannot start on an odd-numbered component ERROR: 0:67: 'component' : type overflows the available 4 components +ERROR: 0:69: 'location' : the aliases sharing the location 53 must be the same basic type and interpolation qualification ERROR: 0:71: 'location' : overlapping use of location 55 ERROR: 0:75: 'location' : overlapping use of location 57 ERROR: 0:78: 'location' : overlapping use of location 59 @@ -56,7 +61,7 @@ ERROR: 0:193: 'assign' : l-value required "gl_BaseVertexARB" (can't modify shad ERROR: 0:194: 'assign' : l-value required "gl_BaseInstanceARB" (can't modify shader input) ERROR: 0:195: 'assign' : l-value required "gl_DrawIDARB" (can't modify shader input) ERROR: 0:196: 'glBaseInstanceARB' : undeclared identifier -ERROR: 57 compilation errors. No code generated. +ERROR: 62 compilation errors. No code generated. Shader version: 440 diff --git a/Test/baseResults/location_aliasing.tesc.out b/Test/baseResults/location_aliasing.tesc.out new file mode 100644 index 0000000000..54263d25df --- /dev/null +++ b/Test/baseResults/location_aliasing.tesc.out @@ -0,0 +1,33 @@ +location_aliasing.tesc +ERROR: 0:7: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification +ERROR: 1 compilation errors. No code generated. + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +vertices = 1 +ERROR: node is still EOpNull! +0:13 Function Definition: main( ( global void) +0:13 Function Parameters: +0:? Linker Objects +0:? 'gohan' (layout( location=1 component=0) in 32-element array of double) +0:? 'goten' (layout( location=1 component=2) in 32-element array of float) +0:? 'vs_tcs' ( in 32-element array of 4-component vector of float) +0:? 'tcs_tes' ( out 1-element array of 4-component vector of float) + + +Linked tessellation control stage: + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +vertices = 1 +ERROR: node is still EOpNull! +0:13 Function Definition: main( ( global void) +0:13 Function Parameters: +0:? Linker Objects +0:? 'gohan' (layout( location=1 component=0) in 32-element array of double) +0:? 'goten' (layout( location=1 component=2) in 32-element array of float) +0:? 'vs_tcs' ( in 32-element array of 4-component vector of float) +0:? 'tcs_tes' ( out 1-element array of 4-component vector of float) + diff --git a/Test/baseResults/location_aliasing1.frag.out b/Test/baseResults/location_aliasing1.frag.out new file mode 100644 index 0000000000..3a1e1a24b5 --- /dev/null +++ b/Test/baseResults/location_aliasing1.frag.out @@ -0,0 +1,27 @@ +location_aliasing1.frag +ERROR: 0:6: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification +ERROR: 1 compilation errors. No code generated. + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +ERROR: node is still EOpNull! +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:? Linker Objects +0:? 'in1' (layout( location=1 component=0) smooth in float) +0:? 'in2' (layout( location=1 component=2) flat in float) + + +Linked fragment stage: + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +ERROR: node is still EOpNull! +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:? Linker Objects +0:? 'in1' (layout( location=1 component=0) smooth in float) +0:? 'in2' (layout( location=1 component=2) flat in float) + diff --git a/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out b/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out index e91ffb73f3..057e5e1d58 100644 --- a/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out +++ b/Test/baseResults/spv.ext.ShaderTileImage.typemismatch.frag.out @@ -1,5 +1,5 @@ spv.ext.ShaderTileImage.typemismatch.frag -ERROR: 0:7: 'location' : fragment outputs or tileImageEXTs sharing the same location 0 must be the same basic type +ERROR: 0:7: 'location' : the aliases sharing the location 0 must be the same basic type and interpolation qualification ERROR: 1 compilation errors. No code generated. diff --git a/Test/location_aliasing.tesc b/Test/location_aliasing.tesc new file mode 100644 index 0000000000..624396519c --- /dev/null +++ b/Test/location_aliasing.tesc @@ -0,0 +1,15 @@ +#version 430 core +#extension GL_ARB_enhanced_layouts : require + +layout(vertices = 1) out; + +layout (location = 1, component = 0) in double gohan[]; +layout (location = 1, component = 2) in float goten[]; + + +in vec4 vs_tcs[]; +out vec4 tcs_tes[]; + +void main() +{ +} \ No newline at end of file diff --git a/Test/location_aliasing1.frag b/Test/location_aliasing1.frag new file mode 100644 index 0000000000..c8c7d264da --- /dev/null +++ b/Test/location_aliasing1.frag @@ -0,0 +1,10 @@ +#version 430 core +#extension GL_ARB_enhanced_layouts : require + + +layout (location = 1, component = 0) in smooth float in1; +layout (location = 1, component = 2) in flat float in2; + +void main() +{ +} \ No newline at end of file diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f157d15b2b..cb19b2d434 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -6568,10 +6568,10 @@ void TParseContext::layoutTypeCheck(const TSourceLoc& loc, const TType& type) int repeated = intermediate.addUsedLocation(qualifier, type, typeCollision); if (repeated >= 0 && ! typeCollision) error(loc, "overlapping use of location", "location", "%d", repeated); - // "fragment-shader outputs/tileImageEXT ... if two variables are placed within the same - // location, they must have the same underlying type (floating-point or integer)" - if (typeCollision && language == EShLangFragment && (qualifier.isPipeOutput() || qualifier.storage == EvqTileImageEXT)) - error(loc, "fragment outputs or tileImageEXTs sharing the same location", "location", "%d must be the same basic type", repeated); + // When location aliasing, the aliases sharing the location must have the same underlying numerical type and bit width( + // floating - point or integer, 32 - bit versus 64 - bit,etc.) + if (typeCollision && (qualifier.isPipeInput() || qualifier.isPipeOutput() || qualifier.storage == EvqTileImageEXT)) + error(loc, "the aliases sharing the location", "location", "%d must be the same basic type and interpolation qualification", repeated); } if (qualifier.hasXfbOffset() && qualifier.hasXfbBuffer()) { diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 3b5add9de5..62e24426e3 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1689,7 +1689,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // First range: TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation); TRange componentRange(0, 3); - TIoRange range(locationRange, componentRange, type.getBasicType(), 0); + TIoRange range(locationRange, componentRange, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat); // check for collisions collision = checkLocationRange(set, range, type, typeCollision); @@ -1699,7 +1699,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // Second range: TRange locationRange2(qualifier.layoutLocation + 1, qualifier.layoutLocation + 1); TRange componentRange2(0, 1); - TIoRange range2(locationRange2, componentRange2, type.getBasicType(), 0); + TIoRange range2(locationRange2, componentRange2, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat); // check for collisions collision = checkLocationRange(set, range2, type, typeCollision); @@ -1725,7 +1725,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ TBasicType basicTy = type.getBasicType(); if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT()) basicTy = type.getSampler().type; - TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0); + TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0, qualifier.centroid, qualifier.smooth, qualifier.flat); // check for collisions, except for vertex inputs on desktop targeting OpenGL if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) @@ -1748,7 +1748,11 @@ int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TTyp if (range.overlap(usedIo[set][r])) { // there is a collision; pick one return std::max(range.location.start, usedIo[set][r].location.start); - } else if (range.location.overlap(usedIo[set][r].location) && type.getBasicType() != usedIo[set][r].basicType) { + } else if (range.location.overlap(usedIo[set][r].location) && + (type.getBasicType() != usedIo[set][r].basicType || + type.getQualifier().centroid != usedIo[set][r].centroid || + type.getQualifier().smooth != usedIo[set][r].smooth || + type.getQualifier().flat != usedIo[set][r].flat)) { // aliased-type mismatch typeCollision = true; return std::max(range.location.start, usedIo[set][r].location.start); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index c9eac27d57..5e97147802 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -123,8 +123,10 @@ struct TRange { // within the same location range, component range, and index value. Locations don't alias unless // all other dimensions of their range overlap. struct TIoRange { - TIoRange(TRange location, TRange component, TBasicType basicType, int index) - : location(location), component(component), basicType(basicType), index(index) { } + TIoRange(TRange location, TRange component, TBasicType basicType, int index, bool centroid, bool smooth, bool flat) + : location(location), component(component), basicType(basicType), index(index), centroid(centroid), smooth(smooth), flat(flat) + { + } bool overlap(const TIoRange& rhs) const { return location.overlap(rhs.location) && component.overlap(rhs.component) && index == rhs.index; @@ -133,6 +135,9 @@ struct TIoRange { TRange component; TBasicType basicType; int index; + bool centroid; + bool smooth; + bool flat; }; // An offset range is a 2-D rectangle; the set of (binding, offset) pairs all lying diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 7410f6ce14..6067e9b83c 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -306,6 +306,8 @@ INSTANTIATE_TEST_SUITE_P( "coord_conventions.frag", "gl_FragCoord.frag", "glsl.interpOp.error.frag", + "location_aliasing.tesc", + "location_aliasing1.frag", "GL_EXT_draw_instanced.vert", "overflow_underflow_toinf_0.frag", "GL_EXT_texture_array.frag", From 1fc07b5d61070664bc86b76278459aa7f1ed00db Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:52:34 +0000 Subject: [PATCH 467/594] Bump github/codeql-action from 3.25.1 to 3.25.3 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.1 to 3.25.3. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/c7f9125735019aa87cfc361530512d50ea439c71...d39d31e687223d841ef683f52467bd88e9b21c14) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index adcfa76773..26c4907273 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@c7f9125735019aa87cfc361530512d50ea439c71 # v3.25.1 + uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 with: sarif_file: results.sarif From 56b4edec3542dde32b990eacd5a8b976900fc137 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:52:37 +0000 Subject: [PATCH 468/594] Bump actions/upload-artifact from 4.3.2 to 4.3.3 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.2 to 4.3.3. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/1746f4ab65b179e0ea60a494b83293b640dd5bba...65462800fd760344b1a7b4382951275a0abb4808) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 26c4907273..0560839b17 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@1746f4ab65b179e0ea60a494b83293b640dd5bba # v4.3.2 + uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 with: name: SARIF file path: results.sarif From f857417c991d178e90670385e31fee6d30394076 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Apr 2024 06:52:41 +0000 Subject: [PATCH 469/594] Bump hendrikmuhs/ccache-action from 1.2.12 to 1.2.13 Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.12 to 1.2.13. - [Release notes](https://github.com/hendrikmuhs/ccache-action/releases) - [Commits](https://github.com/hendrikmuhs/ccache-action/compare/faf867a11c028c0b483fb2ae72b6fc8f7d842714...c92f40bee50034e84c763e33b317c77adaa81c92) --- updated-dependencies: - dependency-name: hendrikmuhs/ccache-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_integration.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 33d0dd9016..4d30698857 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,7 +23,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 + uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py @@ -59,7 +59,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 + uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} # This is to combat a bug when using 6.6 linux kernels with thread/address sanitizer @@ -99,7 +99,7 @@ jobs: with: cmakeVersion: 3.17.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 + uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: key: linux_backcompat - run: ./update_glslang_sources.py @@ -171,7 +171,7 @@ jobs: - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 + uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: key: IOS - run: ./update_glslang_sources.py @@ -200,7 +200,7 @@ jobs: - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 + uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: key: android-${{ matrix.LEGACY }} - run: ./update_glslang_sources.py @@ -226,7 +226,7 @@ jobs: python-version: '3.7' - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@faf867a11c028c0b483fb2ae72b6fc8f7d842714 # v1.2.12 + uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: key: ubuntu-emscripten - uses: mymindstorm/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14 From 142052fa30f9eca191aa9dcf65359fcaed09eeec Mon Sep 17 00:00:00 2001 From: David Neto Date: Tue, 30 Apr 2024 12:52:24 -0400 Subject: [PATCH 470/594] Update validation results of SPV_QCOM_image_processing2 Update SPIRV-Tools to include https://github.com/KhronosGroup/SPIRV-Tools/pull/5646 which fixes validation of SPV_QCOM_imageprocessing2 This allows us to remove the "Validation failed" result for two tests. --- Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out | 1 - Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out | 1 - known_good.json | 2 +- 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out index ff102565c8..cd20d771a0 100644 --- a/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out @@ -1,5 +1,4 @@ spv.tpipBlockMatchWindowSAD.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out index 1e2fa1fb53..797ecd7470 100644 --- a/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out @@ -1,5 +1,4 @@ spv.tpipBlockMatchWindowSSD.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 72 diff --git a/known_good.json b/known_good.json index 9324b95fa7..f6493a243a 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "02470f606fe1571de808cb773d8c521ab201aaff" + "commit": "53c07360640bd017cfaa58d21a3429e8d3fad6c3" }, { "name" : "spirv-tools/external/spirv-headers", From 409c97dfeed2061c0adbffa572716f729c5a6f99 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 2 May 2024 11:06:16 -0600 Subject: [PATCH 471/594] Update known_good.json --- known_good.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known_good.json b/known_good.json index f6493a243a..d01b293662 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "53c07360640bd017cfaa58d21a3429e8d3fad6c3" + "commit": "dd4b663e13c07fea4fbb3f70c1c91c86731099f7" }, { "name" : "spirv-tools/external/spirv-headers", From e8dd0b6903b34f1879520b444634c75ea2deedf5 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Thu, 2 May 2024 15:13:33 -0600 Subject: [PATCH 472/594] Update CHANGES for 14.2.0 --- CHANGES.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 74854d8710..13fa155632 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,20 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 14.2.0 2024-05-02 +* Improve checking for location aliasing errors +* Fix undefined behavior in parser +* Add bounds check to gl_SampleMask +* Fix alignment and padding of matrices consuming one vector +* Remove duplicate SPIR-V decorations +* Check for exponent overflow in float parser +* Fix bug in relaxed verification rules +* Fix disassembly of debugBreak +* Fix bug when importing SPIR-V extended intruction set +* Fix issues with the interaction of cooperative_matrix and spirv_intrinsics +* Support SPV_QCOM_image_processing2 +* Support files with UTF8BOM character + ## 14.1.0 2024-03-08 * Add a new --abosute-path command-line option to output absolute paths in error messages * Support GL_EXT_control_flow_attributes2 From effcbf7893a177b756bc80bf74009a950c3073a1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 6 May 2024 06:20:55 +0000 Subject: [PATCH 473/594] Bump actions/checkout from 4.1.3 to 4.1.4 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.3 to 4.1.4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/1d96c772d19495a3b5c517cd2bc0cb401ea0529f...0ad4b8fadaa221de15dcec353f45205ec38ea70b) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index c58a1d8fb8..4f8b06d887 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -41,7 +41,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -105,7 +105,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -162,7 +162,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 4d30698857..ab944dc55f 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -17,7 +17,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -53,7 +53,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -91,7 +91,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -126,7 +126,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON @@ -150,7 +150,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -168,7 +168,7 @@ jobs: iOS: runs-on: macos-13 steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -197,7 +197,7 @@ jobs: # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -220,7 +220,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 0560839b17..efda65dbbc 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@1d96c772d19495a3b5c517cd2bc0cb401ea0529f # v4.1.3 + uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 with: persist-credentials: false From edca09e3af5ed5f65042577315cdc5a61d36b7e2 Mon Sep 17 00:00:00 2001 From: Pavel Rojtberg Date: Fri, 10 May 2024 20:54:17 +0200 Subject: [PATCH 474/594] add back layoutLocation to public API --- glslang/MachineIndependent/ShaderLang.cpp | 2 ++ glslang/Public/ShaderLang.h | 2 ++ 2 files changed, 4 insertions(+) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 29d5d5f871..5264b3bcbb 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -2105,6 +2105,8 @@ const char* TProgram::getInfoDebugLog() // Reflection implementation. // +unsigned int TObjectReflection::layoutLocation() const { return type->getQualifier().layoutLocation; } + bool TProgram::buildReflection(int opts) { if (! linked || reflection != nullptr) diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 046fd917cc..b71b147a5d 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -745,6 +745,8 @@ class TObjectReflection { GLSLANG_EXPORT void dump() const; static TObjectReflection badReflection() { return TObjectReflection(); } + GLSLANG_EXPORT unsigned int layoutLocation() const; + std::string name; int offset; int glDefineType; From 377c8f979a1a3047c5aee2c024992d5e80258543 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 06:39:27 +0000 Subject: [PATCH 475/594] Bump lukka/get-cmake from 3.29.2 to 3.29.3 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.29.2 to 3.29.3. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/4931ab1fc1604964c055eb330edb3f6b26ba0cfa...c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 4f8b06d887..3a866f0c3b 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index ab944dc55f..9088cbe492 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -127,7 +127,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -151,7 +151,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -169,7 +169,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -198,7 +198,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -224,7 +224,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@4931ab1fc1604964c055eb330edb3f6b26ba0cfa # v3.29.2 + - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: From b3e9bdbe1656b37611585e0a1523678f089bc31e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 06:39:19 +0000 Subject: [PATCH 476/594] Bump ossf/scorecard-action from 2.3.1 to 2.3.3 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.3.1 to 2.3.3. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/0864cf19026789058feabb7e87baa5f140aac736...dc50aa9510b46c811795eb24b2f1ba02a914e534) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index efda65dbbc..879d3f18fa 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@0864cf19026789058feabb7e87baa5f140aac736 # v2.3.1 + uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 with: results_file: results.sarif results_format: sarif From 541733a66b1cf4465559c78a8bd857606ac76123 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 13 May 2024 14:18:10 +0000 Subject: [PATCH 477/594] Bump actions/checkout from 4.1.4 to 4.1.5 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.4 to 4.1.5. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/0ad4b8fadaa221de15dcec353f45205ec38ea70b...44c2b7a8a4ea60a981eaca3cf939b5f4305c123b) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 3a866f0c3b..94f7c2b067 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -41,7 +41,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -105,7 +105,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -162,7 +162,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 9088cbe492..e2a59fa086 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -17,7 +17,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -53,7 +53,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -91,7 +91,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -126,7 +126,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON @@ -150,7 +150,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -168,7 +168,7 @@ jobs: iOS: runs-on: macos-13 steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -197,7 +197,7 @@ jobs: # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -220,7 +220,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 879d3f18fa..52ebf66c6f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@0ad4b8fadaa221de15dcec353f45205ec38ea70b # v4.1.4 + uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 with: persist-credentials: false From af0641aa09f2e63da2423fd652d2cd57497c5b48 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 14 May 2024 14:39:59 -0400 Subject: [PATCH 478/594] ci: Add testing on Mac OS 14 instead of 12 --- .github/workflows/continuous_integration.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index e2a59fa086..f346b4cb60 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -122,7 +122,7 @@ jobs: strategy: fail-fast: false matrix: - os: [macos-12, macos-13] + os: [macos-14, macos-13] compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: From 31cfe5f9c73037a8d73465b8adfd30a764907c13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 06:27:45 +0000 Subject: [PATCH 479/594] Bump github/codeql-action from 3.25.3 to 3.25.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.3 to 3.25.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/d39d31e687223d841ef683f52467bd88e9b21c14...b7cec7526559c32f1616476ff32d17ba4c59b2d6) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 52ebf66c6f..fb1e1228df 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@d39d31e687223d841ef683f52467bd88e9b21c14 # v3.25.3 + uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 with: sarif_file: results.sarif From 2712d643b1faf40ae3d622d4199cf8f4160f8eee Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 20 May 2024 06:27:39 +0000 Subject: [PATCH 480/594] Bump actions/checkout from 4.1.5 to 4.1.6 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.5 to 4.1.6. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/44c2b7a8a4ea60a981eaca3cf939b5f4305c123b...a5ac7e51b41094c92402da3b24376905380afc29) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 94f7c2b067..cd106e159d 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -41,7 +41,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -105,7 +105,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -162,7 +162,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index f346b4cb60..f93556f282 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -17,7 +17,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -53,7 +53,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -91,7 +91,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -126,7 +126,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON @@ -150,7 +150,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -168,7 +168,7 @@ jobs: iOS: runs-on: macos-13 steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -197,7 +197,7 @@ jobs: # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -220,7 +220,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index fb1e1228df..5fafb7837f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@44c2b7a8a4ea60a981eaca3cf939b5f4305c123b # v4.1.5 + uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 with: persist-credentials: false From 7c3c50ea94354d06dc8c280de8b8a5d5aacbbb19 Mon Sep 17 00:00:00 2001 From: arcady-lunarg <122813703+arcady-lunarg@users.noreply.github.com> Date: Mon, 20 May 2024 10:25:55 -0700 Subject: [PATCH 481/594] spirv: Add a postprocessing pass to fix up uses of OpSampledImage SPIR-V requires that any instruction using the result of an OpSampledImage instruction be in the same block as the OpSampledImage. This is hard to guarantee in code generation but easy to fix after the fact, by simply inserting a new OpSampledImage before the user of its result if needed, with the new instruction having the same operands as the original OpSampledImage. This change adds a new pass to spv::Builder::postProcess that does this. This might leave the original OpSampledImage instructions "orphaned" with no users of their result ID, but dead code elimination would take care of those further down the line. --- SPIRV/SpvBuilder.h | 2 + SPIRV/SpvPostProcess.cpp | 53 +++++++++++ SPIRV/spvIR.h | 10 +- .../spv.sampledImageBlock.frag.out | 94 +++++++++++++++++++ Test/spv.sampledImageBlock.frag | 21 +++++ gtests/Spv.FromFile.cpp | 1 + 6 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 Test/baseResults/spv.sampledImageBlock.frag.out create mode 100644 Test/spv.sampledImageBlock.frag diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index a65a98e337..b5509a8ba6 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -855,6 +855,8 @@ class Builder { void postProcess(Instruction&); // Hook to visit each non-32-bit sized float/int operation in a block. void postProcessType(const Instruction&, spv::Id typeId); + // move OpSampledImage instructions to be next to their users. + void postProcessSamplers(); void dump(std::vector&) const; diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index ebc69124e6..5b3fbb565d 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -483,6 +483,58 @@ void Builder::postProcessFeatures() { } } +// SPIR-V requires that any instruction consuming the result of an OpSampledImage +// be in the same block as the OpSampledImage instruction. This pass goes finds +// uses of OpSampledImage where that is not the case and duplicates the +// OpSampledImage to be immediately before the instruction that consumes it. +// The old OpSampledImage is left in place, potentially with no users. +void Builder::postProcessSamplers() +{ + // first, find all OpSampledImage instructions and store them in a map. + std::map sampledImageInstrs; + for (auto f: module.getFunctions()) { + for (auto b: f->getBlocks()) { + for (auto &i: b->getInstructions()) { + if (i->getOpCode() == spv::OpSampledImage) { + sampledImageInstrs[i->getResultId()] = i.get(); + } + } + } + } + // next find all uses of the given ids and rewrite them if needed. + for (auto f: module.getFunctions()) { + for (auto b: f->getBlocks()) { + auto &instrs = b->getInstructions(); + for (size_t idx = 0; idx < instrs.size(); idx++) { + Instruction *i = instrs[idx].get(); + for (int opnum = 0; opnum < i->getNumOperands(); opnum++) { + // Is this operand of the current instruction the result of an OpSampledImage? + if (i->isIdOperand(opnum) && + sampledImageInstrs.count(i->getIdOperand(opnum))) + { + Instruction *opSampImg = sampledImageInstrs[i->getIdOperand(opnum)]; + if (i->getBlock() != opSampImg->getBlock()) { + Instruction *newInstr = new Instruction(getUniqueId(), + opSampImg->getTypeId(), + spv::OpSampledImage); + newInstr->addIdOperand(opSampImg->getIdOperand(0)); + newInstr->addIdOperand(opSampImg->getIdOperand(1)); + newInstr->setBlock(b); + + // rewrite the user of the OpSampledImage to use the new instruction. + i->setIdOperand(opnum, newInstr->getResultId()); + // insert the new OpSampledImage right before the current instruction. + instrs.insert(instrs.begin() + idx, + std::unique_ptr(newInstr)); + idx++; + } + } + } + } + } + } +} + // comment in header void Builder::postProcess(bool compileOnly) { @@ -491,6 +543,7 @@ void Builder::postProcess(bool compileOnly) postProcessCFG(); postProcessFeatures(); + postProcessSamplers(); } }; // end spv namespace diff --git a/SPIRV/spvIR.h b/SPIRV/spvIR.h index 4c353cfa54..bd639d8f72 100644 --- a/SPIRV/spvIR.h +++ b/SPIRV/spvIR.h @@ -107,6 +107,14 @@ class Instruction { operands.push_back(id); idOperand.push_back(true); } + // This method is potentially dangerous as it can break assumptions + // about SSA and lack of forward references. + void setIdOperand(unsigned idx, Id id) { + assert(id); + assert(idOperand[idx]); + operands[idx] = id; + } + void addImmediateOperand(unsigned int immediate) { operands.push_back(immediate); idOperand.push_back(false); @@ -238,7 +246,7 @@ class Block { void addLocalVariable(std::unique_ptr inst) { localVariables.push_back(std::move(inst)); } const std::vector& getPredecessors() const { return predecessors; } const std::vector& getSuccessors() const { return successors; } - const std::vector >& getInstructions() const { + std::vector >& getInstructions() { return instructions; } const std::vector >& getLocalVariables() const { return localVariables; } diff --git a/Test/baseResults/spv.sampledImageBlock.frag.out b/Test/baseResults/spv.sampledImageBlock.frag.out new file mode 100644 index 0000000000..ba46a0feec --- /dev/null +++ b/Test/baseResults/spv.sampledImageBlock.frag.out @@ -0,0 +1,94 @@ +spv.sampledImageBlock.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 55 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" 36 45 + ExecutionMode 4 OriginUpperLeft + Source GLSL 450 + Name 4 "main" + Name 9 "texel" + Name 12 "tex0" + Name 16 "samp0" + Name 21 "ParamBuffer" + MemberName 21(ParamBuffer) 0 "cond" + Name 23 "paramBuffer" + Name 36 "texCoord" + Name 45 "fragColor" + Decorate 12(tex0) DescriptorSet 0 + Decorate 12(tex0) Binding 0 + Decorate 16(samp0) DescriptorSet 0 + Decorate 16(samp0) Binding 1 + MemberDecorate 21(ParamBuffer) 0 Offset 0 + Decorate 21(ParamBuffer) Block + Decorate 23(paramBuffer) DescriptorSet 0 + Decorate 23(paramBuffer) Binding 2 + Decorate 36(texCoord) Flat + Decorate 36(texCoord) Location 0 + Decorate 45(fragColor) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeVector 6(float) 4 + 8: TypePointer Function 7(fvec4) + 10: TypeImage 6(float) 2D sampled format:Unknown + 11: TypePointer UniformConstant 10 + 12(tex0): 11(ptr) Variable UniformConstant + 14: TypeSampler + 15: TypePointer UniformConstant 14 + 16(samp0): 15(ptr) Variable UniformConstant + 18: TypeSampledImage 10 + 20: TypeInt 32 1 + 21(ParamBuffer): TypeStruct 20(int) + 22: TypePointer Uniform 21(ParamBuffer) + 23(paramBuffer): 22(ptr) Variable Uniform + 24: 20(int) Constant 0 + 25: TypePointer Uniform 20(int) + 28: TypeBool + 30: TypeVector 20(int) 2 + 31: TypePointer Function 30(ivec2) + 35: TypePointer Input 30(ivec2) + 36(texCoord): 35(ptr) Variable Input + 44: TypePointer Output 7(fvec4) + 45(fragColor): 44(ptr) Variable Output + 46: TypeVector 6(float) 3 + 49: 6(float) Constant 1065353216 + 4(main): 2 Function None 3 + 5: Label + 9(texel): 8(ptr) Variable Function + 32: 31(ptr) Variable Function + 13: 10 Load 12(tex0) + 17: 14 Load 16(samp0) + 19: 18 SampledImage 13 17 + 26: 25(ptr) AccessChain 23(paramBuffer) 24 + 27: 20(int) Load 26 + 29: 28(bool) IEqual 27 24 + SelectionMerge 34 None + BranchConditional 29 33 38 + 33: Label + 37: 30(ivec2) Load 36(texCoord) + Store 32 37 + Branch 34 + 38: Label + 39: 30(ivec2) Load 36(texCoord) + 40: 30(ivec2) VectorShuffle 39 39 1 0 + Store 32 40 + Branch 34 + 34: Label + 41: 30(ivec2) Load 32 + 54: 18 SampledImage 13 17 + 42: 10 Image 54 + 43: 7(fvec4) ImageFetch 42 41 Lod 24 + Store 9(texel) 43 + 47: 7(fvec4) Load 9(texel) + 48: 46(fvec3) VectorShuffle 47 47 0 1 2 + 50: 6(float) CompositeExtract 48 0 + 51: 6(float) CompositeExtract 48 1 + 52: 6(float) CompositeExtract 48 2 + 53: 7(fvec4) CompositeConstruct 50 51 52 49 + Store 45(fragColor) 53 + Return + FunctionEnd diff --git a/Test/spv.sampledImageBlock.frag b/Test/spv.sampledImageBlock.frag new file mode 100644 index 0000000000..19b1133f8a --- /dev/null +++ b/Test/spv.sampledImageBlock.frag @@ -0,0 +1,21 @@ +#version 450 + +layout(set = 0, binding = 0) uniform texture2D tex0; +layout(set = 0, binding = 1) uniform sampler samp0; +layout(set = 0, binding = 2) uniform ParamBuffer { + int cond; +} paramBuffer; + +layout(location = 0) out vec4 fragColor; +layout(location = 0) in flat ivec2 texCoord; + +void main() { + // get input + + const vec4 texel = texelFetch(sampler2D(tex0, samp0), + paramBuffer.cond == 0 ? texCoord.xy : texCoord.yx, + 0); + + fragColor = vec4(texel.xyz, 1.0); + +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 93cf08dc34..5ebd5b3158 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -551,6 +551,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.ext.textureShadowLod.error.frag", "spv.floatFetch.frag", "spv.atomicRvalue.error.vert", + "spv.sampledImageBlock.frag", })), FileNameAsCustomTestSuffix ); From 1cad045cc2bf79c976e1d7001ac71644f6cb29a8 Mon Sep 17 00:00:00 2001 From: Max Andersson Date: Mon, 21 Mar 2022 07:01:08 +0100 Subject: [PATCH 482/594] Make gl_HitT proper aliases of gl_RayTmax Changes the gl_HitT builtins properly alias their gl_RayTmax. Previously they ended up as duplicate variables, rather than aliased. --- SPIRV/GlslangToSpv.cpp | 12 -- Test/baseResults/glsl.460.subgroup.rahit.out | 4 +- Test/baseResults/glsl.460.subgroup.rchit.out | 4 +- Test/baseResults/spv.AnyHitShader.rahit.out | 101 +++++---- .../spv.ClosestHitShader.rchit.out | 117 +++++------ .../spv.ext.AnyHitShader.rahit.out | 197 +++++++++--------- .../spv.ext.ClosestHitShader.rchit.out | 187 ++++++++--------- glslang/Include/BaseTypes.h | 2 - glslang/MachineIndependent/Initialize.cpp | 6 +- 9 files changed, 303 insertions(+), 327 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 1674c55036..f07c47fce0 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -989,18 +989,6 @@ spv::BuiltIn TGlslangToSpvTraverser::TranslateBuiltInDecoration(glslang::TBuiltI return spv::BuiltInHitTriangleVertexPositionsKHR; case glslang::EbvInstanceCustomIndex: return spv::BuiltInInstanceCustomIndexKHR; - case glslang::EbvHitT: - { - // this is a GLSL alias of RayTmax - // in SPV_NV_ray_tracing it has a dedicated builtin - // but in SPV_KHR_ray_tracing it gets mapped to RayTmax - auto& extensions = glslangIntermediate->getRequestedExtensions(); - if (extensions.find("GL_NV_ray_tracing") != extensions.end()) { - return spv::BuiltInHitTNV; - } else { - return spv::BuiltInRayTmaxKHR; - } - } case glslang::EbvHitKind: return spv::BuiltInHitKindKHR; case glslang::EbvObjectToWorld: diff --git a/Test/baseResults/glsl.460.subgroup.rahit.out b/Test/baseResults/glsl.460.subgroup.rahit.out index 0a1e4f4aeb..77fbbe3edb 100644 --- a/Test/baseResults/glsl.460.subgroup.rahit.out +++ b/Test/baseResults/glsl.460.subgroup.rahit.out @@ -383,7 +383,7 @@ ERROR: node is still EOpNull! 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v11' ( temp float) -0:119 'gl_HitTNV' ( in float HitTNV) +0:119 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:120 Sequence 0:120 move second child to first child ( temp uint) 0:120 'v12' ( temp uint) @@ -760,7 +760,7 @@ ERROR: node is still EOpNull! 0:119 Sequence 0:119 move second child to first child ( temp float) 0:119 'v11' ( temp float) -0:119 'gl_HitTNV' ( in float HitTNV) +0:119 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:120 Sequence 0:120 move second child to first child ( temp uint) 0:120 'v12' ( temp uint) diff --git a/Test/baseResults/glsl.460.subgroup.rchit.out b/Test/baseResults/glsl.460.subgroup.rchit.out index f5083e0460..2a3de407cf 100644 --- a/Test/baseResults/glsl.460.subgroup.rchit.out +++ b/Test/baseResults/glsl.460.subgroup.rchit.out @@ -383,7 +383,7 @@ ERROR: node is still EOpNull! 0:121 Sequence 0:121 move second child to first child ( temp float) 0:121 'v11' ( temp float) -0:121 'gl_HitTNV' ( in float HitTNV) +0:121 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'v12' ( temp uint) @@ -771,7 +771,7 @@ ERROR: node is still EOpNull! 0:121 Sequence 0:121 move second child to first child ( temp float) 0:121 'v11' ( temp float) -0:121 'gl_HitTNV' ( in float HitTNV) +0:121 'gl_RayTmaxNV' ( in float ObjectRayTmaxNV) 0:122 Sequence 0:122 move second child to first child ( temp uint) 0:122 'v12' ( temp uint) diff --git a/Test/baseResults/spv.AnyHitShader.rahit.out b/Test/baseResults/spv.AnyHitShader.rahit.out index d075b368b7..027325e904 100644 --- a/Test/baseResults/spv.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.AnyHitShader.rahit.out @@ -1,13 +1,13 @@ spv.AnyHitShader.rahit // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 81 +// Id's are bound by 80 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" @@ -34,14 +34,13 @@ spv.AnyHitShader.rahit Name 49 "v10" Name 50 "gl_RayTmaxNV" Name 52 "v11" - Name 53 "gl_HitTNV" - Name 56 "v12" - Name 58 "gl_HitKindNV" - Name 62 "v13" - Name 64 "gl_ObjectToWorldNV" - Name 66 "v14" - Name 67 "gl_WorldToObjectNV" - Name 71 "incomingPayload" + Name 55 "v12" + Name 57 "gl_HitKindNV" + Name 61 "v13" + Name 63 "gl_ObjectToWorldNV" + Name 65 "v14" + Name 66 "gl_WorldToObjectNV" + Name 70 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -53,11 +52,10 @@ spv.AnyHitShader.rahit Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTNV) BuiltIn HitTNV - Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR - Decorate 71(incomingPayload) Location 1 + Decorate 57(gl_HitKindNV) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR + Decorate 70(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -84,22 +82,21 @@ spv.AnyHitShader.rahit 46: TypePointer Input 28(float) 47(gl_RayTminNV): 46(ptr) Variable Input 50(gl_RayTmaxNV): 46(ptr) Variable Input - 53(gl_HitTNV): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindNV): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldNV): 63(ptr) Variable Input -67(gl_WorldToObjectNV): 63(ptr) Variable Input - 69: TypeVector 28(float) 4 - 70: TypePointer IncomingRayPayloadKHR 69(fvec4) -71(incomingPayload): 70(ptr) Variable IncomingRayPayloadKHR - 72: 28(float) Constant 1056964608 - 73: 69(fvec4) ConstantComposite 72 72 72 72 - 75: 16(int) Constant 1 - 76: TypeBool + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindNV): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldNV): 62(ptr) Variable Input +66(gl_WorldToObjectNV): 62(ptr) Variable Input + 68: TypeVector 28(float) 4 + 69: TypePointer IncomingRayPayloadKHR 68(fvec4) +70(incomingPayload): 69(ptr) Variable IncomingRayPayloadKHR + 71: 28(float) Constant 1056964608 + 72: 68(fvec4) ConstantComposite 71 71 71 71 + 74: 16(int) Constant 1 + 75: TypeBool 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -114,9 +111,9 @@ spv.AnyHitShader.rahit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) @@ -139,25 +136,25 @@ spv.AnyHitShader.rahit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxNV) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTNV) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindNV) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldNV) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectNV) - Store 66(v14) 68 - Store 71(incomingPayload) 73 - 74: 16(int) Load 18(v2) - 77: 76(bool) IEqual 74 75 - SelectionMerge 79 None - BranchConditional 77 78 80 - 78: Label + 53: 28(float) Load 50(gl_RayTmaxNV) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindNV) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldNV) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectNV) + Store 65(v14) 67 + Store 70(incomingPayload) 72 + 73: 16(int) Load 18(v2) + 76: 75(bool) IEqual 73 74 + SelectionMerge 78 None + BranchConditional 76 77 79 + 77: Label IgnoreIntersectionNV - Branch 79 - 80: Label + Branch 78 + 79: Label TerminateRayNV - Branch 79 - 79: Label + Branch 78 + 78: Label Return FunctionEnd diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out index 80b5115c20..a84ef23ea7 100644 --- a/Test/baseResults/spv.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -1,13 +1,13 @@ spv.ClosestHitShader.rchit // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 88 +// Id's are bound by 87 Capability RayTracingNV Extension "SPV_NV_ray_tracing" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 + EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 Source GLSL 460 SourceExtension "GL_NV_ray_tracing" Name 4 "main" @@ -34,16 +34,15 @@ spv.ClosestHitShader.rchit Name 49 "v10" Name 50 "gl_RayTmaxNV" Name 52 "v11" - Name 53 "gl_HitTNV" - Name 56 "v12" - Name 58 "gl_HitKindNV" - Name 62 "v13" - Name 64 "gl_ObjectToWorldNV" - Name 66 "v14" - Name 67 "gl_WorldToObjectNV" - Name 71 "accNV" - Name 85 "localPayload" - Name 87 "incomingPayload" + Name 55 "v12" + Name 57 "gl_HitKindNV" + Name 61 "v13" + Name 63 "gl_ObjectToWorldNV" + Name 65 "v14" + Name 66 "gl_WorldToObjectNV" + Name 70 "accNV" + Name 84 "localPayload" + Name 86 "incomingPayload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -55,14 +54,13 @@ spv.ClosestHitShader.rchit Decorate 42(gl_ObjectRayDirectionNV) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminNV) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTNV) BuiltIn HitTNV - Decorate 58(gl_HitKindNV) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR - Decorate 71(accNV) DescriptorSet 0 - Decorate 71(accNV) Binding 0 - Decorate 85(localPayload) Location 0 - Decorate 87(incomingPayload) Location 1 + Decorate 57(gl_HitKindNV) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR + Decorate 70(accNV) DescriptorSet 0 + Decorate 70(accNV) Binding 0 + Decorate 84(localPayload) Location 0 + Decorate 86(incomingPayload) Location 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -89,33 +87,32 @@ spv.ClosestHitShader.rchit 46: TypePointer Input 28(float) 47(gl_RayTminNV): 46(ptr) Variable Input 50(gl_RayTmaxNV): 46(ptr) Variable Input - 53(gl_HitTNV): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindNV): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldNV): 63(ptr) Variable Input -67(gl_WorldToObjectNV): 63(ptr) Variable Input - 69: TypeAccelerationStructureKHR - 70: TypePointer UniformConstant 69 - 71(accNV): 70(ptr) Variable UniformConstant - 73: 6(int) Constant 0 - 74: 6(int) Constant 1 - 75: 6(int) Constant 2 - 76: 6(int) Constant 3 - 77: 28(float) Constant 1056964608 - 78: 29(fvec3) ConstantComposite 77 77 77 - 79: 28(float) Constant 1065353216 - 80: 29(fvec3) ConstantComposite 79 79 79 - 81: 28(float) Constant 1061158912 - 82: 16(int) Constant 1 - 83: TypeVector 28(float) 4 - 84: TypePointer RayPayloadKHR 83(fvec4) -85(localPayload): 84(ptr) Variable RayPayloadKHR - 86: TypePointer IncomingRayPayloadKHR 83(fvec4) -87(incomingPayload): 86(ptr) Variable IncomingRayPayloadKHR + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindNV): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldNV): 62(ptr) Variable Input +66(gl_WorldToObjectNV): 62(ptr) Variable Input + 68: TypeAccelerationStructureKHR + 69: TypePointer UniformConstant 68 + 70(accNV): 69(ptr) Variable UniformConstant + 72: 6(int) Constant 0 + 73: 6(int) Constant 1 + 74: 6(int) Constant 2 + 75: 6(int) Constant 3 + 76: 28(float) Constant 1056964608 + 77: 29(fvec3) ConstantComposite 76 76 76 + 78: 28(float) Constant 1065353216 + 79: 29(fvec3) ConstantComposite 78 78 78 + 80: 28(float) Constant 1061158912 + 81: 16(int) Constant 1 + 82: TypeVector 28(float) 4 + 83: TypePointer RayPayloadKHR 82(fvec4) +84(localPayload): 83(ptr) Variable RayPayloadKHR + 85: TypePointer IncomingRayPayloadKHR 82(fvec4) +86(incomingPayload): 85(ptr) Variable IncomingRayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -130,9 +127,9 @@ spv.ClosestHitShader.rchit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDNV) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeNV) @@ -155,15 +152,15 @@ spv.ClosestHitShader.rchit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxNV) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTNV) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindNV) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldNV) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectNV) - Store 66(v14) 68 - 72: 69 Load 71(accNV) - TraceNV 72 73 74 75 76 73 78 77 80 81 82 + 53: 28(float) Load 50(gl_RayTmaxNV) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindNV) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldNV) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectNV) + Store 65(v14) 67 + 71: 68 Load 70(accNV) + TraceNV 71 72 73 74 75 72 77 76 79 80 81 Return FunctionEnd diff --git a/Test/baseResults/spv.ext.AnyHitShader.rahit.out b/Test/baseResults/spv.ext.AnyHitShader.rahit.out index 02803ad6b1..76e6738d08 100644 --- a/Test/baseResults/spv.ext.AnyHitShader.rahit.out +++ b/Test/baseResults/spv.ext.AnyHitShader.rahit.out @@ -1,7 +1,7 @@ spv.ext.AnyHitShader.rahit // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 116 +// Id's are bound by 115 Capability GroupNonUniform Capability RayTracingKHR @@ -12,7 +12,7 @@ spv.ext.AnyHitShader.rahit Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 88 93 107 + EntryPoint AnyHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 69 81 87 92 106 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" @@ -42,23 +42,22 @@ spv.ext.AnyHitShader.rahit Name 49 "v10" Name 50 "gl_RayTmaxEXT" Name 52 "v11" - Name 53 "gl_HitTEXT" - Name 56 "v12" - Name 58 "gl_HitKindEXT" - Name 62 "v13" - Name 64 "gl_ObjectToWorldEXT" - Name 66 "v14" - Name 67 "gl_WorldToObjectEXT" - Name 69 "v15" - Name 70 "gl_GeometryIndexEXT" - Name 75 "v16" - Name 78 "v17" - Name 81 "v18" - Name 82 "gl_CullMaskEXT" - Name 84 "v19" - Name 88 "gl_HitTriangleVertexPositionsEXT" - Name 93 "incomingPayload" - Name 107 "gl_SubgroupSize" + Name 55 "v12" + Name 57 "gl_HitKindEXT" + Name 61 "v13" + Name 63 "gl_ObjectToWorldEXT" + Name 65 "v14" + Name 66 "gl_WorldToObjectEXT" + Name 68 "v15" + Name 69 "gl_GeometryIndexEXT" + Name 74 "v16" + Name 77 "v17" + Name 80 "v18" + Name 81 "gl_CullMaskEXT" + Name 83 "v19" + Name 87 "gl_HitTriangleVertexPositionsEXT" + Name 92 "incomingPayload" + Name 106 "gl_SubgroupSize" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -70,17 +69,16 @@ spv.ext.AnyHitShader.rahit Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR - Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR - Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR - Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 88(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR - Decorate 107(gl_SubgroupSize) RelaxedPrecision - Decorate 107(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 57(gl_HitKindEXT) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR + Decorate 69(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR + Decorate 81(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 87(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR + Decorate 106(gl_SubgroupSize) RelaxedPrecision + Decorate 106(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 107 RelaxedPrecision Decorate 108 RelaxedPrecision - Decorate 109 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -107,34 +105,33 @@ spv.ext.AnyHitShader.rahit 46: TypePointer Input 28(float) 47(gl_RayTminEXT): 46(ptr) Variable Input 50(gl_RayTmaxEXT): 46(ptr) Variable Input - 53(gl_HitTEXT): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindEXT): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldEXT): 63(ptr) Variable Input -67(gl_WorldToObjectEXT): 63(ptr) Variable Input -70(gl_GeometryIndexEXT): 19(ptr) Variable Input - 72: TypeVector 28(float) 4 - 73: TypeMatrix 72(fvec4) 3 - 74: TypePointer Function 73 -82(gl_CullMaskEXT): 57(ptr) Variable Input - 85: 6(int) Constant 3 - 86: TypeArray 29(fvec3) 85 - 87: TypePointer Input 86 -88(gl_HitTriangleVertexPositionsEXT): 87(ptr) Variable Input - 89: 16(int) Constant 0 - 92: TypePointer IncomingRayPayloadKHR 72(fvec4) -93(incomingPayload): 92(ptr) Variable IncomingRayPayloadKHR - 94: 28(float) Constant 1056964608 - 95: 72(fvec4) ConstantComposite 94 94 94 94 - 97: 16(int) Constant 1 - 98: TypeBool - 103: 6(int) Constant 0 -107(gl_SubgroupSize): 57(ptr) Variable Input - 110: TypePointer IncomingRayPayloadKHR 28(float) + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindEXT): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldEXT): 62(ptr) Variable Input +66(gl_WorldToObjectEXT): 62(ptr) Variable Input +69(gl_GeometryIndexEXT): 19(ptr) Variable Input + 71: TypeVector 28(float) 4 + 72: TypeMatrix 71(fvec4) 3 + 73: TypePointer Function 72 +81(gl_CullMaskEXT): 56(ptr) Variable Input + 84: 6(int) Constant 3 + 85: TypeArray 29(fvec3) 84 + 86: TypePointer Input 85 +87(gl_HitTriangleVertexPositionsEXT): 86(ptr) Variable Input + 88: 16(int) Constant 0 + 91: TypePointer IncomingRayPayloadKHR 71(fvec4) +92(incomingPayload): 91(ptr) Variable IncomingRayPayloadKHR + 93: 28(float) Constant 1056964608 + 94: 71(fvec4) ConstantComposite 93 93 93 93 + 96: 16(int) Constant 1 + 97: TypeBool + 102: 6(int) Constant 0 +106(gl_SubgroupSize): 56(ptr) Variable Input + 109: TypePointer IncomingRayPayloadKHR 28(float) 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -149,14 +146,14 @@ spv.ext.AnyHitShader.rahit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function - 69(v15): 17(ptr) Variable Function - 75(v16): 74(ptr) Variable Function - 78(v17): 74(ptr) Variable Function - 81(v18): 55(ptr) Variable Function - 84(v19): 30(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function + 68(v15): 17(ptr) Variable Function + 74(v16): 73(ptr) Variable Function + 77(v17): 73(ptr) Variable Function + 80(v18): 54(ptr) Variable Function + 83(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -179,41 +176,41 @@ spv.ext.AnyHitShader.rahit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxEXT) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTEXT) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindEXT) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldEXT) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectEXT) - Store 66(v14) 68 - 71: 16(int) Load 70(gl_GeometryIndexEXT) - Store 69(v15) 71 - 76: 60 Load 64(gl_ObjectToWorldEXT) - 77: 73 Transpose 76 - Store 75(v16) 77 - 79: 60 Load 67(gl_WorldToObjectEXT) - 80: 73 Transpose 79 - Store 78(v17) 80 - 83: 6(int) Load 82(gl_CullMaskEXT) - Store 81(v18) 83 - 90: 32(ptr) AccessChain 88(gl_HitTriangleVertexPositionsEXT) 89 - 91: 29(fvec3) Load 90 - Store 84(v19) 91 - Store 93(incomingPayload) 95 - 96: 16(int) Load 18(v2) - 99: 98(bool) IEqual 96 97 - SelectionMerge 101 None - BranchConditional 99 100 101 - 100: Label + 53: 28(float) Load 50(gl_RayTmaxEXT) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindEXT) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldEXT) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectEXT) + Store 65(v14) 67 + 70: 16(int) Load 69(gl_GeometryIndexEXT) + Store 68(v15) 70 + 75: 59 Load 63(gl_ObjectToWorldEXT) + 76: 72 Transpose 75 + Store 74(v16) 76 + 78: 59 Load 66(gl_WorldToObjectEXT) + 79: 72 Transpose 78 + Store 77(v17) 79 + 82: 6(int) Load 81(gl_CullMaskEXT) + Store 80(v18) 82 + 89: 32(ptr) AccessChain 87(gl_HitTriangleVertexPositionsEXT) 88 + 90: 29(fvec3) Load 89 + Store 83(v19) 90 + Store 92(incomingPayload) 94 + 95: 16(int) Load 18(v2) + 98: 97(bool) IEqual 95 96 + SelectionMerge 100 None + BranchConditional 98 99 100 + 99: Label IgnoreIntersectionKHR - 101: Label - 108: 6(int) Load 107(gl_SubgroupSize) - 109: 28(float) ConvertUToF 108 - 111: 110(ptr) AccessChain 93(incomingPayload) 103 - 112: 28(float) Load 111 - 113: 28(float) FAdd 112 109 - 114: 110(ptr) AccessChain 93(incomingPayload) 103 - Store 114 113 + 100: Label + 107: 6(int) Load 106(gl_SubgroupSize) + 108: 28(float) ConvertUToF 107 + 110: 109(ptr) AccessChain 92(incomingPayload) 102 + 111: 28(float) Load 110 + 112: 28(float) FAdd 111 108 + 113: 109(ptr) AccessChain 92(incomingPayload) 102 + Store 113 112 TerminateRayKHR FunctionEnd diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 5cfc8a25b9..3c1883bcc6 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -1,7 +1,7 @@ spv.ext.ClosestHitShader.rchit // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 109 +// Id's are bound by 108 Capability RayTracingKHR Capability RayTracingPositionFetchKHR @@ -11,7 +11,7 @@ spv.ext.ClosestHitShader.rchit Extension "SPV_KHR_ray_tracing_position_fetch" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 53 58 64 67 70 82 88 94 106 108 + EntryPoint ClosestHitKHR 4 "main" 11 14 20 23 26 33 36 39 42 47 50 57 63 66 69 81 87 93 105 107 Source GLSL 460 SourceExtension "GL_EXT_ray_cull_mask" SourceExtension "GL_EXT_ray_tracing" @@ -40,24 +40,23 @@ spv.ext.ClosestHitShader.rchit Name 49 "v10" Name 50 "gl_RayTmaxEXT" Name 52 "v11" - Name 53 "gl_HitTEXT" - Name 56 "v12" - Name 58 "gl_HitKindEXT" - Name 62 "v13" - Name 64 "gl_ObjectToWorldEXT" - Name 66 "v14" - Name 67 "gl_WorldToObjectEXT" - Name 69 "v15" - Name 70 "gl_GeometryIndexEXT" - Name 75 "v16" - Name 78 "v17" - Name 81 "v18" - Name 82 "gl_CullMaskEXT" - Name 84 "v19" - Name 88 "gl_HitTriangleVertexPositionsEXT" - Name 94 "accEXT" - Name 106 "incomingPayload" - Name 108 "localPayload" + Name 55 "v12" + Name 57 "gl_HitKindEXT" + Name 61 "v13" + Name 63 "gl_ObjectToWorldEXT" + Name 65 "v14" + Name 66 "gl_WorldToObjectEXT" + Name 68 "v15" + Name 69 "gl_GeometryIndexEXT" + Name 74 "v16" + Name 77 "v17" + Name 80 "v18" + Name 81 "gl_CullMaskEXT" + Name 83 "v19" + Name 87 "gl_HitTriangleVertexPositionsEXT" + Name 93 "accEXT" + Name 105 "incomingPayload" + Name 107 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 20(gl_PrimitiveID) BuiltIn PrimitiveId @@ -69,15 +68,14 @@ spv.ext.ClosestHitShader.rchit Decorate 42(gl_ObjectRayDirectionEXT) BuiltIn ObjectRayDirectionKHR Decorate 47(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 50(gl_RayTmaxEXT) BuiltIn RayTmaxKHR - Decorate 53(gl_HitTEXT) BuiltIn RayTmaxKHR - Decorate 58(gl_HitKindEXT) BuiltIn HitKindKHR - Decorate 64(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR - Decorate 67(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR - Decorate 70(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR - Decorate 82(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 88(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR - Decorate 94(accEXT) DescriptorSet 0 - Decorate 94(accEXT) Binding 0 + Decorate 57(gl_HitKindEXT) BuiltIn HitKindKHR + Decorate 63(gl_ObjectToWorldEXT) BuiltIn ObjectToWorldKHR + Decorate 66(gl_WorldToObjectEXT) BuiltIn WorldToObjectKHR + Decorate 69(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR + Decorate 81(gl_CullMaskEXT) BuiltIn CullMaskKHR + Decorate 87(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR + Decorate 93(accEXT) DescriptorSet 0 + Decorate 93(accEXT) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -104,41 +102,40 @@ spv.ext.ClosestHitShader.rchit 46: TypePointer Input 28(float) 47(gl_RayTminEXT): 46(ptr) Variable Input 50(gl_RayTmaxEXT): 46(ptr) Variable Input - 53(gl_HitTEXT): 46(ptr) Variable Input - 55: TypePointer Function 6(int) - 57: TypePointer Input 6(int) -58(gl_HitKindEXT): 57(ptr) Variable Input - 60: TypeMatrix 29(fvec3) 4 - 61: TypePointer Function 60 - 63: TypePointer Input 60 -64(gl_ObjectToWorldEXT): 63(ptr) Variable Input -67(gl_WorldToObjectEXT): 63(ptr) Variable Input -70(gl_GeometryIndexEXT): 19(ptr) Variable Input - 72: TypeVector 28(float) 4 - 73: TypeMatrix 72(fvec4) 3 - 74: TypePointer Function 73 -82(gl_CullMaskEXT): 57(ptr) Variable Input - 85: 6(int) Constant 3 - 86: TypeArray 29(fvec3) 85 - 87: TypePointer Input 86 -88(gl_HitTriangleVertexPositionsEXT): 87(ptr) Variable Input - 89: 16(int) Constant 0 - 92: TypeAccelerationStructureKHR - 93: TypePointer UniformConstant 92 - 94(accEXT): 93(ptr) Variable UniformConstant - 96: 6(int) Constant 0 - 97: 6(int) Constant 1 - 98: 6(int) Constant 2 - 99: 28(float) Constant 1056964608 - 100: 29(fvec3) ConstantComposite 99 99 99 - 101: 28(float) Constant 1065353216 - 102: 29(fvec3) ConstantComposite 101 101 101 - 103: 28(float) Constant 1061158912 - 104: 16(int) Constant 1 - 105: TypePointer IncomingRayPayloadKHR 72(fvec4) -106(incomingPayload): 105(ptr) Variable IncomingRayPayloadKHR - 107: TypePointer RayPayloadKHR 72(fvec4) -108(localPayload): 107(ptr) Variable RayPayloadKHR + 54: TypePointer Function 6(int) + 56: TypePointer Input 6(int) +57(gl_HitKindEXT): 56(ptr) Variable Input + 59: TypeMatrix 29(fvec3) 4 + 60: TypePointer Function 59 + 62: TypePointer Input 59 +63(gl_ObjectToWorldEXT): 62(ptr) Variable Input +66(gl_WorldToObjectEXT): 62(ptr) Variable Input +69(gl_GeometryIndexEXT): 19(ptr) Variable Input + 71: TypeVector 28(float) 4 + 72: TypeMatrix 71(fvec4) 3 + 73: TypePointer Function 72 +81(gl_CullMaskEXT): 56(ptr) Variable Input + 84: 6(int) Constant 3 + 85: TypeArray 29(fvec3) 84 + 86: TypePointer Input 85 +87(gl_HitTriangleVertexPositionsEXT): 86(ptr) Variable Input + 88: 16(int) Constant 0 + 91: TypeAccelerationStructureKHR + 92: TypePointer UniformConstant 91 + 93(accEXT): 92(ptr) Variable UniformConstant + 95: 6(int) Constant 0 + 96: 6(int) Constant 1 + 97: 6(int) Constant 2 + 98: 28(float) Constant 1056964608 + 99: 29(fvec3) ConstantComposite 98 98 98 + 100: 28(float) Constant 1065353216 + 101: 29(fvec3) ConstantComposite 100 100 100 + 102: 28(float) Constant 1061158912 + 103: 16(int) Constant 1 + 104: TypePointer IncomingRayPayloadKHR 71(fvec4) +105(incomingPayload): 104(ptr) Variable IncomingRayPayloadKHR + 106: TypePointer RayPayloadKHR 71(fvec4) +107(localPayload): 106(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -153,14 +150,14 @@ spv.ext.ClosestHitShader.rchit 45(v9): 44(ptr) Variable Function 49(v10): 44(ptr) Variable Function 52(v11): 44(ptr) Variable Function - 56(v12): 55(ptr) Variable Function - 62(v13): 61(ptr) Variable Function - 66(v14): 61(ptr) Variable Function - 69(v15): 17(ptr) Variable Function - 75(v16): 74(ptr) Variable Function - 78(v17): 74(ptr) Variable Function - 81(v18): 55(ptr) Variable Function - 84(v19): 30(ptr) Variable Function + 55(v12): 54(ptr) Variable Function + 61(v13): 60(ptr) Variable Function + 65(v14): 60(ptr) Variable Function + 68(v15): 17(ptr) Variable Function + 74(v16): 73(ptr) Variable Function + 77(v17): 73(ptr) Variable Function + 80(v18): 54(ptr) Variable Function + 83(v19): 30(ptr) Variable Function 12: 7(ivec3) Load 11(gl_LaunchIDEXT) Store 9(v0) 12 15: 7(ivec3) Load 14(gl_LaunchSizeEXT) @@ -183,28 +180,28 @@ spv.ext.ClosestHitShader.rchit Store 45(v9) 48 51: 28(float) Load 50(gl_RayTmaxEXT) Store 49(v10) 51 - 54: 28(float) Load 53(gl_HitTEXT) - Store 52(v11) 54 - 59: 6(int) Load 58(gl_HitKindEXT) - Store 56(v12) 59 - 65: 60 Load 64(gl_ObjectToWorldEXT) - Store 62(v13) 65 - 68: 60 Load 67(gl_WorldToObjectEXT) - Store 66(v14) 68 - 71: 16(int) Load 70(gl_GeometryIndexEXT) - Store 69(v15) 71 - 76: 60 Load 64(gl_ObjectToWorldEXT) - 77: 73 Transpose 76 - Store 75(v16) 77 - 79: 60 Load 67(gl_WorldToObjectEXT) - 80: 73 Transpose 79 - Store 78(v17) 80 - 83: 6(int) Load 82(gl_CullMaskEXT) - Store 81(v18) 83 - 90: 32(ptr) AccessChain 88(gl_HitTriangleVertexPositionsEXT) 89 - 91: 29(fvec3) Load 90 - Store 84(v19) 91 - 95: 92 Load 94(accEXT) - TraceRayKHR 95 96 97 98 85 96 100 99 102 103 106(incomingPayload) + 53: 28(float) Load 50(gl_RayTmaxEXT) + Store 52(v11) 53 + 58: 6(int) Load 57(gl_HitKindEXT) + Store 55(v12) 58 + 64: 59 Load 63(gl_ObjectToWorldEXT) + Store 61(v13) 64 + 67: 59 Load 66(gl_WorldToObjectEXT) + Store 65(v14) 67 + 70: 16(int) Load 69(gl_GeometryIndexEXT) + Store 68(v15) 70 + 75: 59 Load 63(gl_ObjectToWorldEXT) + 76: 72 Transpose 75 + Store 74(v16) 76 + 78: 59 Load 66(gl_WorldToObjectEXT) + 79: 72 Transpose 78 + Store 77(v17) 79 + 82: 6(int) Load 81(gl_CullMaskEXT) + Store 80(v18) 82 + 89: 32(ptr) AccessChain 87(gl_HitTriangleVertexPositionsEXT) 88 + 90: 29(fvec3) Load 89 + Store 83(v19) 90 + 94: 91 Load 93(accEXT) + TraceRayKHR 94 95 96 97 84 95 99 98 101 102 105(incomingPayload) Return FunctionEnd diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h index 64bffa8926..0ac526bfb0 100755 --- a/glslang/Include/BaseTypes.h +++ b/glslang/Include/BaseTypes.h @@ -268,7 +268,6 @@ enum TBuiltInVariable { EbvRayTmin, EbvRayTmax, EbvCullMask, - EbvHitT, EbvHitKind, EbvObjectToWorld, EbvObjectToWorld3x4, @@ -495,7 +494,6 @@ __inline const char* GetBuiltInVariableString(TBuiltInVariable v) case EbvObjectRayDirection: return "ObjectRayDirectionNV"; case EbvRayTmin: return "ObjectRayTminNV"; case EbvRayTmax: return "ObjectRayTmaxNV"; - case EbvHitT: return "HitTNV"; case EbvHitKind: return "HitKindNV"; case EbvIncomingRayFlags: return "IncomingRayFlagsNV"; case EbvObjectToWorld: return "ObjectToWorldNV"; diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index 8e742eab42..a6ec689794 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -9209,8 +9209,6 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_RayTmaxNV", EbvRayTmax, symbolTable); BuiltInVariable("gl_RayTmaxEXT", EbvRayTmax, symbolTable); BuiltInVariable("gl_CullMaskEXT", EbvCullMask, symbolTable); - BuiltInVariable("gl_HitTNV", EbvHitT, symbolTable); - BuiltInVariable("gl_HitTEXT", EbvHitT, symbolTable); BuiltInVariable("gl_HitKindNV", EbvHitKind, symbolTable); BuiltInVariable("gl_HitKindEXT", EbvHitKind, symbolTable); BuiltInVariable("gl_ObjectToWorldNV", EbvObjectToWorld, symbolTable); @@ -9229,6 +9227,10 @@ void TBuiltIns::identifyBuiltIns(int version, EProfile profile, const SpvVersion BuiltInVariable("gl_HitKindFrontFacingMicroTriangleNV", EbvHitKindFrontFacingMicroTriangleNV, symbolTable); BuiltInVariable("gl_HitKindBackFacingMicroTriangleNV", EbvHitKindBackFacingMicroTriangleNV, symbolTable); + // gl_HitT variables are aliases of their gl_RayTmax counterparts. + RetargetVariable("gl_HitTNV", "gl_RayTmaxNV", symbolTable); + RetargetVariable("gl_HitTEXT", "gl_RayTmaxEXT", symbolTable); + // GL_ARB_shader_ballot symbolTable.setVariableExtensions("gl_SubGroupSizeARB", 1, &E_GL_ARB_shader_ballot); symbolTable.setVariableExtensions("gl_SubGroupInvocationARB", 1, &E_GL_ARB_shader_ballot); From 5b09f3e4bfb78b82c08c52a9c114e08d4b6ec23f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 27 May 2024 06:56:06 +0000 Subject: [PATCH 483/594] Bump github/codeql-action from 3.25.5 to 3.25.6 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.5 to 3.25.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b7cec7526559c32f1616476ff32d17ba4c59b2d6...9fdb3e49720b44c48891d036bb502feb25684276) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5fafb7837f..62561addb8 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b7cec7526559c32f1616476ff32d17ba4c59b2d6 # v3.25.5 + uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 with: sarif_file: results.sarif From 2b19bf7e1bc0b60cf2fe9d33e5ba6b37dfc1cc83 Mon Sep 17 00:00:00 2001 From: Philippe SWARTVAGHER Date: Sun, 26 May 2024 18:39:33 +0200 Subject: [PATCH 484/594] Fix few typos --- Test/baseResults/150.geom.out | 4 ++-- glslang/MachineIndependent/ParseHelper.cpp | 4 ++-- glslang/MachineIndependent/ShaderLang.cpp | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Test/baseResults/150.geom.out b/Test/baseResults/150.geom.out index c5a31f555d..bf27824401 100644 --- a/Test/baseResults/150.geom.out +++ b/Test/baseResults/150.geom.out @@ -2,8 +2,8 @@ ERROR: 0:15: 'fromVertex' : block instance name redefinition ERROR: 0:19: 'fromVertex' : redefinition ERROR: 0:21: 'fooC' : block instance name redefinition -ERROR: 0:29: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 -ERROR: 0:30: 'if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 +ERROR: 0:29: 'if the version is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 +ERROR: 0:30: 'if the version is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5' : required extension not requested: GL_ARB_gpu_shader5 ERROR: 0:44: 'stream' : can only be used on an output ERROR: 0:45: 'stream' : can only be used on an output ERROR: 0:46: 'stream' : can only be used on an output diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index cb19b2d434..2880cce18b 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -492,7 +492,7 @@ TIntermTyped* TParseContext::handleVariable(const TSourceLoc& loc, TSymbol* symb if ((variable->getMangledName() == "gl_PrimitiveTriangleIndicesEXT" && primitiveType != ElgTriangles) || (variable->getMangledName() == "gl_PrimitiveLineIndicesEXT" && primitiveType != ElgLines) || (variable->getMangledName() == "gl_PrimitivePointIndicesEXT" && primitiveType != ElgPoints)) { - error(loc, "cannot be used (ouput primitive type mismatch)", string->c_str(), ""); + error(loc, "cannot be used (output primitive type mismatch)", string->c_str(), ""); variable = nullptr; } } @@ -2704,7 +2704,7 @@ void TParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fnCan case EOpEmitStreamVertex: case EOpEndStreamPrimitive: if (version == 150) - requireExtensions(loc, 1, &E_GL_ARB_gpu_shader5, "if the verison is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5"); + requireExtensions(loc, 1, &E_GL_ARB_gpu_shader5, "if the version is 150 , the EmitStreamVertex and EndStreamPrimitive only support at extension GL_ARB_gpu_shader5"); intermediate.setMultiStream(); break; diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 5264b3bcbb..034a030650 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -788,7 +788,7 @@ bool ProcessDeferred( // set version/profile to defaultVersion/defaultProfile regardless of the #version // directive in the source code bool forceDefaultVersionAndProfile, - int overrideVersion, // overrides version specified by #verison or default version + int overrideVersion, // overrides version specified by #version or default version bool forwardCompatible, // give errors for use of deprecated features EShMessages messages, // warnings/errors/AST; things to print out TIntermediate& intermediate, // returned tree, etc. From 0e311906b92f8cc74eab258260343074b00a9710 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 3 Jun 2024 06:06:47 +0000 Subject: [PATCH 485/594] Bump github/codeql-action from 3.25.6 to 3.25.7 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.6 to 3.25.7. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/9fdb3e49720b44c48891d036bb502feb25684276...f079b8493333aace61c81488f8bd40919487bd9f) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 62561addb8..1d6da9b15b 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@9fdb3e49720b44c48891d036bb502feb25684276 # v3.25.6 + uses: github/codeql-action/upload-sarif@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 with: sarif_file: results.sarif From 6a8b2b2439f131e4ee9b80b6e04b86f8254e0a0d Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Fri, 31 May 2024 11:46:03 -0500 Subject: [PATCH 486/594] Reuse loads generated for repeated function arguments --- SPIRV/GlslangToSpv.cpp | 12 +- Test/baseResults/hlsl.array.frag.out | 247 +- Test/baseResults/hlsl.overload.frag.out | 113 +- Test/baseResults/hlsl.scalarCast.vert.out | 186 +- Test/baseResults/spv.ext.MissShader.rmiss.out | 30 +- Test/baseResults/spv.float16Fetch.frag.out | 10364 ++++++++-------- Test/baseResults/spv.floatFetch.frag.out | 6220 +++++----- Test/baseResults/spv.invariantAll.vert.out | 15 +- Test/baseResults/spv.newTexture.frag.out | 424 +- Test/baseResults/spv.sparseTexture.frag.out | 496 +- .../spv.sparseTextureClamp.frag.out | 372 +- 11 files changed, 9072 insertions(+), 9407 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index f07c47fce0..36e6c01c94 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -5787,8 +5787,16 @@ void TGlslangToSpvTraverser::translateArguments(const glslang::TIntermAggregate& lvalueCoherentFlags = builder.getAccessChain().coherentFlags; builder.addDecoration(lvalue_id, TranslateNonUniformDecoration(lvalueCoherentFlags)); lvalueCoherentFlags |= TranslateCoherent(glslangArguments[i]->getAsTyped()->getType()); - } else - arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType())); + } else { + if (i > 0 && + glslangArguments[i]->getAsSymbolNode() && glslangArguments[i-1]->getAsSymbolNode() && + glslangArguments[i]->getAsSymbolNode()->getId() == glslangArguments[i-1]->getAsSymbolNode()->getId()) { + // Reuse the id if possible + arguments.push_back(arguments[i-1]); + } else { + arguments.push_back(accessChainLoad(glslangArguments[i]->getAsTyped()->getType())); + } + } } } diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out index eab21a6a9e..6a13326a1a 100644 --- a/Test/baseResults/hlsl.array.frag.out +++ b/Test/baseResults/hlsl.array.frag.out @@ -291,12 +291,12 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 126 +// Id's are bound by 117 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 112 116 119 + EntryPoint Fragment 4 "PixelShaderFunction" 103 107 110 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" @@ -306,39 +306,39 @@ gl_FragCoord origin is upper left Name 20 "C" Name 29 "c2" Name 35 "b" - Name 48 "tmp" - Name 54 "" - MemberName 54 0 "m" - Name 60 "$Global" - MemberName 60($Global) 0 "a" - MemberName 60($Global) 1 "s" - MemberName 60($Global) 2 "a1" - MemberName 60($Global) 3 "a2" - Name 62 "" - Name 110 "i" - Name 112 "i" - Name 114 "input" - Name 116 "input" - Name 119 "@entryPointOutput" - Name 120 "param" - Name 122 "param" - Decorate 51 ArrayStride 16 - Decorate 53 ArrayStride 16 - MemberDecorate 54 0 Offset 0 - Decorate 56 ArrayStride 112 - Decorate 58 ArrayStride 16 - Decorate 59 ArrayStride 16 - MemberDecorate 60($Global) 0 Offset 0 - MemberDecorate 60($Global) 1 Offset 64 - MemberDecorate 60($Global) 2 Offset 1296 - MemberDecorate 60($Global) 3 Offset 1312 - Decorate 60($Global) Block - Decorate 62 DescriptorSet 0 - Decorate 62 Binding 0 - Decorate 112(i) Flat - Decorate 112(i) Location 0 - Decorate 116(input) Location 1 - Decorate 119(@entryPointOutput) Location 0 + Name 39 "tmp" + Name 45 "" + MemberName 45 0 "m" + Name 51 "$Global" + MemberName 51($Global) 0 "a" + MemberName 51($Global) 1 "s" + MemberName 51($Global) 2 "a1" + MemberName 51($Global) 3 "a2" + Name 53 "" + Name 101 "i" + Name 103 "i" + Name 105 "input" + Name 107 "input" + Name 110 "@entryPointOutput" + Name 111 "param" + Name 113 "param" + Decorate 42 ArrayStride 16 + Decorate 44 ArrayStride 16 + MemberDecorate 45 0 Offset 0 + Decorate 47 ArrayStride 112 + Decorate 49 ArrayStride 16 + Decorate 50 ArrayStride 16 + MemberDecorate 51($Global) 0 Offset 0 + MemberDecorate 51($Global) 1 Offset 64 + MemberDecorate 51($Global) 2 Offset 1296 + MemberDecorate 51($Global) 3 Offset 1312 + Decorate 51($Global) Block + Decorate 53 DescriptorSet 0 + Decorate 53 Binding 0 + Decorate 103(i) Flat + Decorate 103(i) Location 0 + Decorate 107(input) Location 1 + Decorate 110(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -364,53 +364,53 @@ gl_FragCoord origin is upper left 32: 10(int) Constant 10 33: TypeArray 9(fvec4) 32 34: TypePointer Function 33 - 47: TypePointer Function 9(fvec4) - 50: 10(int) Constant 4 - 51: TypeArray 9(fvec4) 50 - 52: 10(int) Constant 7 - 53: TypeArray 9(fvec4) 52 - 54: TypeStruct 53 - 55: 10(int) Constant 11 - 56: TypeArray 54(struct) 55 - 57: 10(int) Constant 1 - 58: TypeArray 9(fvec4) 57 - 59: TypeArray 9(fvec4) 26 - 60($Global): TypeStruct 51 56 58 59 - 61: TypePointer Uniform 60($Global) - 62: 61(ptr) Variable Uniform - 63: 6(int) Constant 2 - 64: 6(int) Constant 0 - 65: TypePointer Uniform 9(fvec4) - 70: 6(int) Constant 3 - 79: 6(int) Constant 1 - 93: 6(int) Constant 5 - 111: TypePointer Input 6(int) - 112(i): 111(ptr) Variable Input - 115: TypePointer Input 12 - 116(input): 115(ptr) Variable Input - 118: TypePointer Output 9(fvec4) -119(@entryPointOutput): 118(ptr) Variable Output - 125: 58 ConstantComposite 25 + 38: TypePointer Function 9(fvec4) + 41: 10(int) Constant 4 + 42: TypeArray 9(fvec4) 41 + 43: 10(int) Constant 7 + 44: TypeArray 9(fvec4) 43 + 45: TypeStruct 44 + 46: 10(int) Constant 11 + 47: TypeArray 45(struct) 46 + 48: 10(int) Constant 1 + 49: TypeArray 9(fvec4) 48 + 50: TypeArray 9(fvec4) 26 + 51($Global): TypeStruct 42 47 49 50 + 52: TypePointer Uniform 51($Global) + 53: 52(ptr) Variable Uniform + 54: 6(int) Constant 2 + 55: 6(int) Constant 0 + 56: TypePointer Uniform 9(fvec4) + 61: 6(int) Constant 3 + 70: 6(int) Constant 1 + 84: 6(int) Constant 5 + 102: TypePointer Input 6(int) + 103(i): 102(ptr) Variable Input + 106: TypePointer Input 12 + 107(input): 106(ptr) Variable Input + 109: TypePointer Output 9(fvec4) +110(@entryPointOutput): 109(ptr) Variable Output + 116: 49 ConstantComposite 25 4(PixelShaderFunction): 2 Function None 3 5: Label - 110(i): 7(ptr) Variable Function - 114(input): 13(ptr) Variable Function - 120(param): 7(ptr) Variable Function - 122(param): 13(ptr) Variable Function + 101(i): 7(ptr) Variable Function + 105(input): 13(ptr) Variable Function + 111(param): 7(ptr) Variable Function + 113(param): 13(ptr) Variable Function Store 20(C) 25 30: 9(fvec4) Load 20(C) 31: 27 CompositeConstruct 30 25 Store 29(c2) 31 - 113: 6(int) Load 112(i) - Store 110(i) 113 - 117: 12 Load 116(input) - Store 114(input) 117 - 121: 6(int) Load 110(i) - Store 120(param) 121 - 123: 12 Load 114(input) - Store 122(param) 123 - 124: 9(fvec4) FunctionCall 17(@PixelShaderFunction(i1;vf4[3];) 120(param) 122(param) - Store 119(@entryPointOutput) 124 + 104: 6(int) Load 103(i) + Store 101(i) 104 + 108: 12 Load 107(input) + Store 105(input) 108 + 112: 6(int) Load 101(i) + Store 111(param) 112 + 114: 12 Load 105(input) + Store 113(param) 114 + 115: 9(fvec4) FunctionCall 17(@PixelShaderFunction(i1;vf4[3];) 111(param) 113(param) + Store 110(@entryPointOutput) 115 Return FunctionEnd 17(@PixelShaderFunction(i1;vf4[3];): 9(fvec4) Function None 14 @@ -418,59 +418,50 @@ gl_FragCoord origin is upper left 16(input): 13(ptr) FunctionParameter 18: Label 35(b): 34(ptr) Variable Function - 48(tmp): 47(ptr) Variable Function + 39(tmp): 38(ptr) Variable Function 36: 9(fvec4) Load 20(C) - 37: 9(fvec4) Load 20(C) - 38: 9(fvec4) Load 20(C) - 39: 9(fvec4) Load 20(C) + 37: 33 CompositeConstruct 36 36 36 36 36 36 36 36 36 36 + Store 35(b) 37 40: 9(fvec4) Load 20(C) - 41: 9(fvec4) Load 20(C) - 42: 9(fvec4) Load 20(C) - 43: 9(fvec4) Load 20(C) - 44: 9(fvec4) Load 20(C) - 45: 9(fvec4) Load 20(C) - 46: 33 CompositeConstruct 36 37 38 39 40 41 42 43 44 45 - Store 35(b) 46 - 49: 9(fvec4) Load 20(C) - 66: 65(ptr) AccessChain 62 63 64 - 67: 9(fvec4) Load 66 - 68: 9(fvec4) FAdd 49 67 - 69: 9(fvec4) FAdd 68 25 - 71: 6(int) Load 15(i) - 72: 65(ptr) AccessChain 62 70 71 - 73: 9(fvec4) Load 72 - 74: 9(fvec4) FAdd 69 73 - 75: 6(int) Load 15(i) - 76: 19(ptr) AccessChain 29(c2) 75 - 77: 9(fvec4) Load 76 - 78: 9(fvec4) FAdd 74 77 - Store 48(tmp) 78 - 80: 65(ptr) AccessChain 62 64 79 - 81: 9(fvec4) Load 80 - 82: 6(int) Load 15(i) - 83: 65(ptr) AccessChain 62 64 82 - 84: 9(fvec4) Load 83 - 85: 9(fvec4) FAdd 81 84 - 86: 47(ptr) AccessChain 16(input) 63 - 87: 9(fvec4) Load 86 - 88: 9(fvec4) FAdd 85 87 - 89: 6(int) Load 15(i) - 90: 47(ptr) AccessChain 16(input) 89 - 91: 9(fvec4) Load 90 - 92: 9(fvec4) FAdd 88 91 - 94: 47(ptr) AccessChain 35(b) 93 + 57: 56(ptr) AccessChain 53 54 55 + 58: 9(fvec4) Load 57 + 59: 9(fvec4) FAdd 40 58 + 60: 9(fvec4) FAdd 59 25 + 62: 6(int) Load 15(i) + 63: 56(ptr) AccessChain 53 61 62 + 64: 9(fvec4) Load 63 + 65: 9(fvec4) FAdd 60 64 + 66: 6(int) Load 15(i) + 67: 19(ptr) AccessChain 29(c2) 66 + 68: 9(fvec4) Load 67 + 69: 9(fvec4) FAdd 65 68 + Store 39(tmp) 69 + 71: 56(ptr) AccessChain 53 55 70 + 72: 9(fvec4) Load 71 + 73: 6(int) Load 15(i) + 74: 56(ptr) AccessChain 53 55 73 + 75: 9(fvec4) Load 74 + 76: 9(fvec4) FAdd 72 75 + 77: 38(ptr) AccessChain 16(input) 54 + 78: 9(fvec4) Load 77 + 79: 9(fvec4) FAdd 76 78 + 80: 6(int) Load 15(i) + 81: 38(ptr) AccessChain 16(input) 80 + 82: 9(fvec4) Load 81 + 83: 9(fvec4) FAdd 79 82 + 85: 38(ptr) AccessChain 35(b) 84 + 86: 9(fvec4) Load 85 + 87: 9(fvec4) FAdd 83 86 + 88: 6(int) Load 15(i) + 89: 38(ptr) AccessChain 35(b) 88 + 90: 9(fvec4) Load 89 + 91: 9(fvec4) FAdd 87 90 + 92: 6(int) Load 15(i) + 93: 6(int) Load 15(i) + 94: 56(ptr) AccessChain 53 70 92 55 93 95: 9(fvec4) Load 94 - 96: 9(fvec4) FAdd 92 95 - 97: 6(int) Load 15(i) - 98: 47(ptr) AccessChain 35(b) 97 - 99: 9(fvec4) Load 98 - 100: 9(fvec4) FAdd 96 99 - 101: 6(int) Load 15(i) - 102: 6(int) Load 15(i) - 103: 65(ptr) AccessChain 62 79 101 64 102 - 104: 9(fvec4) Load 103 - 105: 9(fvec4) FAdd 100 104 - 106: 9(fvec4) Load 48(tmp) - 107: 9(fvec4) FAdd 105 106 - ReturnValue 107 + 96: 9(fvec4) FAdd 91 95 + 97: 9(fvec4) Load 39(tmp) + 98: 9(fvec4) FAdd 96 97 + ReturnValue 98 FunctionEnd diff --git a/Test/baseResults/hlsl.overload.frag.out b/Test/baseResults/hlsl.overload.frag.out index 460262eb5e..e196dec604 100644 --- a/Test/baseResults/hlsl.overload.frag.out +++ b/Test/baseResults/hlsl.overload.frag.out @@ -735,13 +735,13 @@ gl_FragCoord origin is upper left // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 520 +// Id's are bound by 519 Capability Shader Capability Float64 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "PixelShaderFunction" 513 516 + EntryPoint Fragment 4 "PixelShaderFunction" 512 515 ExecutionMode 4 OriginUpperLeft Source HLSL 500 Name 4 "PixelShaderFunction" @@ -923,17 +923,17 @@ gl_FragCoord origin is upper left Name 471 "param" Name 475 "param" Name 480 "param" - Name 487 "param" - Name 491 "param" - Name 497 "param" - Name 500 "param" - Name 506 "param" - Name 511 "input" - Name 513 "input" - Name 516 "@entryPointOutput" - Name 517 "param" - Decorate 513(input) Location 0 - Decorate 516(@entryPointOutput) Location 0 + Name 486 "param" + Name 490 "param" + Name 496 "param" + Name 499 "param" + Name 505 "param" + Name 510 "input" + Name 512 "input" + Name 515 "@entryPointOutput" + Name 516 "param" + Decorate 512(input) Location 0 + Decorate 515(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 64 @@ -984,23 +984,23 @@ gl_FragCoord origin is upper left 374: 22(int) Constant 1 394: 29(float) Constant 1065353216 414:6(float64_t) Constant 0 1072693248 - 484: TypeVector 22(int) 2 - 494: TypeVector 22(int) 4 - 503: TypeVector 8(bool) 3 - 512: TypePointer Input 149(fvec4) - 513(input): 512(ptr) Variable Input - 515: TypePointer Output 149(fvec4) -516(@entryPointOutput): 515(ptr) Variable Output + 483: TypeVector 22(int) 2 + 493: TypeVector 22(int) 4 + 502: TypeVector 8(bool) 3 + 511: TypePointer Input 149(fvec4) + 512(input): 511(ptr) Variable Input + 514: TypePointer Output 149(fvec4) +515(@entryPointOutput): 514(ptr) Variable Output 4(PixelShaderFunction): 2 Function None 3 5: Label - 511(input): 150(ptr) Variable Function - 517(param): 150(ptr) Variable Function - 514: 149(fvec4) Load 513(input) - Store 511(input) 514 - 518: 149(fvec4) Load 511(input) - Store 517(param) 518 - 519: 149(fvec4) FunctionCall 153(@PixelShaderFunction(vf4;) 517(param) - Store 516(@entryPointOutput) 519 + 510(input): 150(ptr) Variable Function + 516(param): 150(ptr) Variable Function + 513: 149(fvec4) Load 512(input) + Store 510(input) 513 + 517: 149(fvec4) Load 510(input) + Store 516(param) 517 + 518: 149(fvec4) FunctionCall 153(@PixelShaderFunction(vf4;) 516(param) + Store 515(@entryPointOutput) 518 Return FunctionEnd 13(foo1(d1;b1;): 2 Function None 10 @@ -1278,11 +1278,11 @@ gl_FragCoord origin is upper left 471(param): 16(ptr) Variable Function 475(param): 7(ptr) Variable Function 480(param): 126(ptr) Variable Function - 487(param): 135(ptr) Variable Function - 491(param): 105(ptr) Variable Function - 497(param): 23(ptr) Variable Function - 500(param): 9(ptr) Variable Function - 506(param): 9(ptr) Variable Function + 486(param): 135(ptr) Variable Function + 490(param): 105(ptr) Variable Function + 496(param): 23(ptr) Variable Function + 499(param): 9(ptr) Variable Function + 505(param): 9(ptr) Variable Function 158:6(float64_t) Load 155(d) Store 157(param) 158 160: 8(bool) Load 156(b) @@ -1598,28 +1598,27 @@ gl_FragCoord origin is upper left Store 480(param) 479 481: 2 FunctionCall 129(foo12(vd3;) 480(param) 482: 22(int) Load 173(i) - 483: 22(int) Load 173(i) - 485: 484(ivec2) CompositeConstruct 482 483 - 486: 134(ivec2) Bitcast 485 - Store 487(param) 486 - 488: 2 FunctionCall 138(foo16(vu2;) 487(param) - 489: 29(float) Load 179(f) - 490: 104(fvec3) CompositeConstruct 489 489 489 - Store 491(param) 490 - 492: 2 FunctionCall 141(foo13(vf3;) 491(param) - 493: 22(int) Load 173(i) - 495: 494(ivec4) CompositeConstruct 493 493 493 493 - 496: 22(int) CompositeExtract 495 0 - Store 497(param) 496 - 498: 2 FunctionCall 144(foo14(vi1;) 497(param) - 499: 8(bool) Load 156(b) - Store 500(param) 499 - 501: 2 FunctionCall 147(foo15(vb1;) 500(param) - 502: 8(bool) Load 156(b) - 504: 503(bvec3) CompositeConstruct 502 502 502 - 505: 8(bool) CompositeExtract 504 0 - Store 506(param) 505 - 507: 2 FunctionCall 147(foo15(vb1;) 506(param) - 508: 149(fvec4) Load 152(input) - ReturnValue 508 + 484: 483(ivec2) CompositeConstruct 482 482 + 485: 134(ivec2) Bitcast 484 + Store 486(param) 485 + 487: 2 FunctionCall 138(foo16(vu2;) 486(param) + 488: 29(float) Load 179(f) + 489: 104(fvec3) CompositeConstruct 488 488 488 + Store 490(param) 489 + 491: 2 FunctionCall 141(foo13(vf3;) 490(param) + 492: 22(int) Load 173(i) + 494: 493(ivec4) CompositeConstruct 492 492 492 492 + 495: 22(int) CompositeExtract 494 0 + Store 496(param) 495 + 497: 2 FunctionCall 144(foo14(vi1;) 496(param) + 498: 8(bool) Load 156(b) + Store 499(param) 498 + 500: 2 FunctionCall 147(foo15(vb1;) 499(param) + 501: 8(bool) Load 156(b) + 503: 502(bvec3) CompositeConstruct 501 501 501 + 504: 8(bool) CompositeExtract 503 0 + Store 505(param) 504 + 506: 2 FunctionCall 147(foo15(vb1;) 505(param) + 507: 149(fvec4) Load 152(input) + ReturnValue 507 FunctionEnd diff --git a/Test/baseResults/hlsl.scalarCast.vert.out b/Test/baseResults/hlsl.scalarCast.vert.out index f10f86c620..b6e87bf66a 100644 --- a/Test/baseResults/hlsl.scalarCast.vert.out +++ b/Test/baseResults/hlsl.scalarCast.vert.out @@ -323,12 +323,12 @@ Shader version: 500 // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 120 +// Id's are bound by 108 Capability Shader 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 4 "main" 108 115 + EntryPoint Vertex 4 "main" 96 103 Source HLSL 500 Name 4 "main" Name 9 "VertexOut" @@ -342,21 +342,21 @@ Shader version: 500 Name 21 "r5(" Name 23 "@main(" Name 44 "f" - Name 56 "f" - Name 57 "scalarCopy" - Name 72 "f" - Name 73 "scalarCopy" - Name 88 "v0" - Name 90 "v1" - Name 92 "v2" - Name 94 "v3" - Name 96 "v4" - Name 98 "v5" - Name 105 "flattenTemp" - Name 108 "@entryPointOutput.position" - Name 115 "@entryPointOutput.texCoord" - Decorate 108(@entryPointOutput.position) BuiltIn Position - Decorate 115(@entryPointOutput.texCoord) Location 0 + Name 52 "f" + Name 53 "scalarCopy" + Name 64 "f" + Name 65 "scalarCopy" + Name 76 "v0" + Name 78 "v1" + Name 80 "v2" + Name 82 "v3" + Name 84 "v4" + Name 86 "v5" + Name 93 "flattenTemp" + Name 96 "@entryPointOutput.position" + Name 103 "@entryPointOutput.texCoord" + Decorate 96(@entryPointOutput.position) BuiltIn Position + Decorate 103(@entryPointOutput.texCoord) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -377,31 +377,31 @@ Shader version: 500 39: 8(fvec2) ConstantComposite 37 37 40:9(VertexOut) ConstantComposite 38 39 43: TypePointer Function 6(float) - 59: 6(float) Constant 1065353216 - 87: TypePointer Function 9(VertexOut) - 100: 7(fvec4) ConstantComposite 59 59 59 59 - 101: 8(fvec2) ConstantComposite 59 59 - 102:9(VertexOut) ConstantComposite 100 101 - 107: TypePointer Output 7(fvec4) -108(@entryPointOutput.position): 107(ptr) Variable Output - 109: TypeInt 32 1 - 110: 109(int) Constant 0 - 111: TypePointer Function 7(fvec4) - 114: TypePointer Output 8(fvec2) -115(@entryPointOutput.texCoord): 114(ptr) Variable Output - 116: 109(int) Constant 1 - 117: TypePointer Function 8(fvec2) + 55: 6(float) Constant 1065353216 + 75: TypePointer Function 9(VertexOut) + 88: 7(fvec4) ConstantComposite 55 55 55 55 + 89: 8(fvec2) ConstantComposite 55 55 + 90:9(VertexOut) ConstantComposite 88 89 + 95: TypePointer Output 7(fvec4) +96(@entryPointOutput.position): 95(ptr) Variable Output + 97: TypeInt 32 1 + 98: 97(int) Constant 0 + 99: TypePointer Function 7(fvec4) + 102: TypePointer Output 8(fvec2) +103(@entryPointOutput.texCoord): 102(ptr) Variable Output + 104: 97(int) Constant 1 + 105: TypePointer Function 8(fvec2) 4(main): 2 Function None 3 5: Label -105(flattenTemp): 87(ptr) Variable Function - 106:9(VertexOut) FunctionCall 23(@main() - Store 105(flattenTemp) 106 - 112: 111(ptr) AccessChain 105(flattenTemp) 110 - 113: 7(fvec4) Load 112 - Store 108(@entryPointOutput.position) 113 - 118: 117(ptr) AccessChain 105(flattenTemp) 116 - 119: 8(fvec2) Load 118 - Store 115(@entryPointOutput.texCoord) 119 + 93(flattenTemp): 75(ptr) Variable Function + 94:9(VertexOut) FunctionCall 23(@main() + Store 93(flattenTemp) 94 + 100: 99(ptr) AccessChain 93(flattenTemp) 98 + 101: 7(fvec4) Load 100 + Store 96(@entryPointOutput.position) 101 + 106: 105(ptr) AccessChain 93(flattenTemp) 104 + 107: 8(fvec2) Load 106 + Store 103(@entryPointOutput.texCoord) 107 Return FunctionEnd 11(r0():9(VertexOut) Function None 10 @@ -421,73 +421,61 @@ Shader version: 500 44(f): 43(ptr) Variable Function Store 44(f) 25 45: 6(float) Load 44(f) - 46: 6(float) Load 44(f) + 46: 7(fvec4) CompositeConstruct 45 45 45 45 47: 6(float) Load 44(f) - 48: 6(float) Load 44(f) - 49: 7(fvec4) CompositeConstruct 45 46 47 48 - 50: 6(float) Load 44(f) - 51: 6(float) Load 44(f) - 52: 8(fvec2) CompositeConstruct 50 51 - 53:9(VertexOut) CompositeConstruct 49 52 - ReturnValue 53 + 48: 8(fvec2) CompositeConstruct 47 47 + 49:9(VertexOut) CompositeConstruct 46 48 + ReturnValue 49 FunctionEnd 19(r4():9(VertexOut) Function None 10 20: Label - 56(f): 43(ptr) Variable Function - 57(scalarCopy): 43(ptr) Variable Function - Store 56(f) 25 - 58: 6(float) Load 56(f) - 60: 6(float) FAdd 58 59 - Store 57(scalarCopy) 60 - 61: 6(float) Load 57(scalarCopy) - 62: 6(float) Load 57(scalarCopy) - 63: 6(float) Load 57(scalarCopy) - 64: 6(float) Load 57(scalarCopy) - 65: 7(fvec4) CompositeConstruct 61 62 63 64 - 66: 6(float) Load 57(scalarCopy) - 67: 6(float) Load 57(scalarCopy) - 68: 8(fvec2) CompositeConstruct 66 67 - 69:9(VertexOut) CompositeConstruct 65 68 - ReturnValue 69 + 52(f): 43(ptr) Variable Function + 53(scalarCopy): 43(ptr) Variable Function + Store 52(f) 25 + 54: 6(float) Load 52(f) + 56: 6(float) FAdd 54 55 + Store 53(scalarCopy) 56 + 57: 6(float) Load 53(scalarCopy) + 58: 7(fvec4) CompositeConstruct 57 57 57 57 + 59: 6(float) Load 53(scalarCopy) + 60: 8(fvec2) CompositeConstruct 59 59 + 61:9(VertexOut) CompositeConstruct 58 60 + ReturnValue 61 FunctionEnd 21(r5():9(VertexOut) Function None 10 22: Label - 72(f): 43(ptr) Variable Function - 73(scalarCopy): 43(ptr) Variable Function - Store 72(f) 25 - 74: 6(float) Load 72(f) - 75: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 74 - Store 73(scalarCopy) 75 - 76: 6(float) Load 73(scalarCopy) - 77: 6(float) Load 73(scalarCopy) - 78: 6(float) Load 73(scalarCopy) - 79: 6(float) Load 73(scalarCopy) - 80: 7(fvec4) CompositeConstruct 76 77 78 79 - 81: 6(float) Load 73(scalarCopy) - 82: 6(float) Load 73(scalarCopy) - 83: 8(fvec2) CompositeConstruct 81 82 - 84:9(VertexOut) CompositeConstruct 80 83 - ReturnValue 84 + 64(f): 43(ptr) Variable Function + 65(scalarCopy): 43(ptr) Variable Function + Store 64(f) 25 + 66: 6(float) Load 64(f) + 67: 6(float) ExtInst 1(GLSL.std.450) 13(Sin) 66 + Store 65(scalarCopy) 67 + 68: 6(float) Load 65(scalarCopy) + 69: 7(fvec4) CompositeConstruct 68 68 68 68 + 70: 6(float) Load 65(scalarCopy) + 71: 8(fvec2) CompositeConstruct 70 70 + 72:9(VertexOut) CompositeConstruct 69 71 + ReturnValue 72 FunctionEnd 23(@main():9(VertexOut) Function None 10 24: Label - 88(v0): 87(ptr) Variable Function - 90(v1): 87(ptr) Variable Function - 92(v2): 87(ptr) Variable Function - 94(v3): 87(ptr) Variable Function - 96(v4): 87(ptr) Variable Function - 98(v5): 87(ptr) Variable Function - 89:9(VertexOut) FunctionCall 11(r0() - Store 88(v0) 89 - 91:9(VertexOut) FunctionCall 13(r1() - Store 90(v1) 91 - 93:9(VertexOut) FunctionCall 15(r2() - Store 92(v2) 93 - 95:9(VertexOut) FunctionCall 17(r3() - Store 94(v3) 95 - 97:9(VertexOut) FunctionCall 19(r4() - Store 96(v4) 97 - 99:9(VertexOut) FunctionCall 21(r5() - Store 98(v5) 99 - ReturnValue 102 + 76(v0): 75(ptr) Variable Function + 78(v1): 75(ptr) Variable Function + 80(v2): 75(ptr) Variable Function + 82(v3): 75(ptr) Variable Function + 84(v4): 75(ptr) Variable Function + 86(v5): 75(ptr) Variable Function + 77:9(VertexOut) FunctionCall 11(r0() + Store 76(v0) 77 + 79:9(VertexOut) FunctionCall 13(r1() + Store 78(v1) 79 + 81:9(VertexOut) FunctionCall 15(r2() + Store 80(v2) 81 + 83:9(VertexOut) FunctionCall 17(r3() + Store 82(v3) 83 + 85:9(VertexOut) FunctionCall 19(r4() + Store 84(v4) 85 + 87:9(VertexOut) FunctionCall 21(r5() + Store 86(v5) 87 + ReturnValue 90 FunctionEnd diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out index 246eefa625..0f0f25a516 100644 --- a/Test/baseResults/spv.ext.MissShader.rmiss.out +++ b/Test/baseResults/spv.ext.MissShader.rmiss.out @@ -1,7 +1,7 @@ spv.ext.MissShader.rmiss // Module Version 10400 // Generated by (magic number): 8000b -// Id's are bound by 94 +// Id's are bound by 92 Capability MinLod Capability GroupNonUniform @@ -16,7 +16,7 @@ spv.ext.MissShader.rmiss Extension "SPV_NV_shader_sm_builtins" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 37 41 56 57 62 67 78 82 89 93 + EntryPoint MissKHR 4 "main" 11 14 21 24 29 32 37 41 56 57 62 67 78 82 87 91 Source GLSL 460 SourceExtension "GL_ARB_shader_ballot" SourceExtension "GL_ARB_sparse_texture_clamp" @@ -48,8 +48,8 @@ spv.ext.MissShader.rmiss Name 74 "texel" Name 78 "s2D" Name 82 "c2" - Name 89 "lodClamp" - Name 93 "localPayload" + Name 87 "lodClamp" + Name 91 "localPayload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 14(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 21(gl_WorldRayOriginEXT) BuiltIn WorldRayOriginKHR @@ -71,7 +71,7 @@ spv.ext.MissShader.rmiss Decorate 78(s2D) DescriptorSet 0 Decorate 78(s2D) Binding 1 Decorate 82(c2) Location 2 - Decorate 89(lodClamp) Location 3 + Decorate 87(lodClamp) Location 3 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 @@ -124,12 +124,12 @@ spv.ext.MissShader.rmiss 80: TypeVector 16(float) 2 81: TypePointer Input 80(fvec2) 82(c2): 81(ptr) Variable Input - 86: TypeVector 52(int) 2 - 87: 52(int) Constant 5 - 88: 86(ivec2) ConstantComposite 87 87 - 89(lodClamp): 28(ptr) Variable Input - 92: TypePointer RayPayloadKHR 54(fvec4) -93(localPayload): 92(ptr) Variable RayPayloadKHR + 84: TypeVector 52(int) 2 + 85: 52(int) Constant 5 + 86: 84(ivec2) ConstantComposite 85 85 + 87(lodClamp): 28(ptr) Variable Input + 90: TypePointer RayPayloadKHR 54(fvec4) +91(localPayload): 90(ptr) Variable RayPayloadKHR 4(main): 2 Function None 3 5: Label 9(v0): 8(ptr) Variable Function @@ -169,10 +169,8 @@ spv.ext.MissShader.rmiss Store 72 70 79: 76 Load 78(s2D) 83: 80(fvec2) Load 82(c2) - 84: 80(fvec2) Load 82(c2) - 85: 80(fvec2) Load 82(c2) - 90: 16(float) Load 89(lodClamp) - 91: 54(fvec4) ImageSampleExplicitLod 79 83 Grad ConstOffset MinLod 84 85 88 90 - Store 74(texel) 91 + 88: 16(float) Load 87(lodClamp) + 89: 54(fvec4) ImageSampleExplicitLod 79 83 Grad ConstOffset MinLod 83 83 86 88 + Store 74(texel) 89 Return FunctionEnd diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out index 17eb5b3b9f..f61bde340b 100644 --- a/Test/baseResults/spv.float16Fetch.frag.out +++ b/Test/baseResults/spv.float16Fetch.frag.out @@ -2,7 +2,7 @@ spv.float16Fetch.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 5979 +// Id's are bound by 5787 Capability Shader Capability Float16 @@ -29,7 +29,7 @@ Validation failed Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 128 135 137 148 156 169 177 215 251 309 565 572 1393 1401 1409 1417 1425 1433 4311 4318 5969 5978 + EntryPoint Fragment 4 "main" 128 135 137 148 156 169 177 215 251 309 565 572 1393 1400 1407 1414 1421 1428 4187 4194 5777 5786 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_gpu_shader_half_float" @@ -130,83 +130,83 @@ Validation failed Name 1334 "texel" Name 1390 "texel" Name 1393 "dPdxy1" - Name 1401 "f16dPdxy1" - Name 1409 "dPdxy2" - Name 1417 "f16dPdxy2" - Name 1425 "dPdxy3" - Name 1433 "f16dPdxy3" - Name 1632 "texel" - Name 1820 "texel" - Name 2002 "texel" - Name 2184 "texel" - Name 2303 "texel" - Name 2375 "texel" - Name 2450 "texel" - Name 2502 "texel" - Name 2530 "texel" - Name 2559 "size" - Name 2777 "lod" - Name 2913 "levels" - Name 2982 "samples" - Name 2996 "texel" - Name 2999 "i1D" - Name 3008 "i2D" - Name 3017 "i3D" - Name 3026 "i2DRect" - Name 3035 "iCube" - Name 3044 "iBuffer" - Name 3053 "i1DArray" - Name 3062 "i2DArray" - Name 3071 "iCubeArray" - Name 3080 "i2DMS" - Name 3089 "i2DMSArray" - Name 3143 "texel" - Name 3146 "ResType" - Name 3182 "ResType" - Name 3286 "texel" + Name 1400 "f16dPdxy1" + Name 1407 "dPdxy2" + Name 1414 "f16dPdxy2" + Name 1421 "dPdxy3" + Name 1428 "f16dPdxy3" + Name 1604 "texel" + Name 1770 "texel" + Name 1932 "texel" + Name 2094 "texel" + Name 2213 "texel" + Name 2285 "texel" + Name 2360 "texel" + Name 2412 "texel" + Name 2440 "texel" + Name 2469 "size" + Name 2687 "lod" + Name 2823 "levels" + Name 2892 "samples" + Name 2906 "texel" + Name 2909 "i1D" + Name 2918 "i2D" + Name 2927 "i3D" + Name 2936 "i2DRect" + Name 2945 "iCube" + Name 2954 "iBuffer" + Name 2963 "i1DArray" + Name 2972 "i2DArray" + Name 2981 "iCubeArray" + Name 2990 "i2DMS" + Name 2999 "i2DMSArray" + Name 3053 "texel" + Name 3056 "ResType" + Name 3092 "ResType" + Name 3196 "texel" + Name 3276 "texel" Name 3366 "texel" - Name 3456 "texel" - Name 3512 "texel" - Name 3672 "texel" - Name 3786 "texel" - Name 3838 "texel" - Name 3876 "texel" - Name 3994 "texel" - Name 4066 "texel" - Name 4148 "texel" - Name 4200 "texel" - Name 4228 "texel" - Name 4256 "texel" - Name 4308 "texel" - Name 4311 "lodClamp" - Name 4318 "f16lodClamp" - Name 4445 "texel" - Name 4652 "texel" - Name 4728 "texel" - Name 4872 "texel" - Name 5016 "texel" - Name 5242 "texel" - Name 5334 "texel" - Name 5506 "texel" - Name 5508 "t1D" - Name 5512 "s" - Name 5528 "t2D" - Name 5545 "t3D" - Name 5562 "tCube" - Name 5579 "sShadow" - Name 5643 "t1DArray" - Name 5660 "t2DArray" - Name 5677 "tCubeArray" - Name 5735 "t2DRect" - Name 5795 "subpass" - Name 5801 "subpassMS" - Name 5807 "result" - Name 5890 "param" - Name 5969 "fragColor" - Name 5973 "tBuffer" - Name 5975 "t2DMS" - Name 5977 "t2DMSArray" - Name 5978 "bias" + Name 3422 "texel" + Name 3562 "texel" + Name 3662 "texel" + Name 3714 "texel" + Name 3752 "texel" + Name 3870 "texel" + Name 3942 "texel" + Name 4024 "texel" + Name 4076 "texel" + Name 4104 "texel" + Name 4132 "texel" + Name 4184 "texel" + Name 4187 "lodClamp" + Name 4194 "f16lodClamp" + Name 4321 "texel" + Name 4528 "texel" + Name 4604 "texel" + Name 4748 "texel" + Name 4876 "texel" + Name 5078 "texel" + Name 5160 "texel" + Name 5314 "texel" + Name 5316 "t1D" + Name 5320 "s" + Name 5336 "t2D" + Name 5353 "t3D" + Name 5370 "tCube" + Name 5387 "sShadow" + Name 5451 "t1DArray" + Name 5468 "t2DArray" + Name 5485 "tCubeArray" + Name 5543 "t2DRect" + Name 5603 "subpass" + Name 5609 "subpassMS" + Name 5615 "result" + Name 5698 "param" + Name 5777 "fragColor" + Name 5781 "tBuffer" + Name 5783 "t2DMS" + Name 5785 "t2DMSArray" + Name 5786 "bias" Decorate 125(s1D) DescriptorSet 0 Decorate 125(s1D) Binding 0 Decorate 128(c1) Location 0 @@ -256,69 +256,69 @@ Validation failed Decorate 1322(s2DMSArray) DescriptorSet 0 Decorate 1322(s2DMSArray) Binding 10 Decorate 1393(dPdxy1) Location 8 - Decorate 1401(f16dPdxy1) Location 18 - Decorate 1409(dPdxy2) Location 9 - Decorate 1417(f16dPdxy2) Location 19 - Decorate 1425(dPdxy3) Location 10 - Decorate 1433(f16dPdxy3) Location 20 - Decorate 2999(i1D) DescriptorSet 1 - Decorate 2999(i1D) Binding 0 - Decorate 3008(i2D) DescriptorSet 1 - Decorate 3008(i2D) Binding 1 - Decorate 3017(i3D) DescriptorSet 1 - Decorate 3017(i3D) Binding 2 - Decorate 3026(i2DRect) DescriptorSet 1 - Decorate 3026(i2DRect) Binding 3 - Decorate 3035(iCube) DescriptorSet 1 - Decorate 3035(iCube) Binding 4 - Decorate 3044(iBuffer) DescriptorSet 1 - Decorate 3044(iBuffer) Binding 8 - Decorate 3053(i1DArray) DescriptorSet 1 - Decorate 3053(i1DArray) Binding 5 - Decorate 3062(i2DArray) DescriptorSet 1 - Decorate 3062(i2DArray) Binding 6 - Decorate 3071(iCubeArray) DescriptorSet 1 - Decorate 3071(iCubeArray) Binding 7 - Decorate 3080(i2DMS) DescriptorSet 1 - Decorate 3080(i2DMS) Binding 9 - Decorate 3089(i2DMSArray) DescriptorSet 1 - Decorate 3089(i2DMSArray) Binding 10 - Decorate 4311(lodClamp) Location 7 - Decorate 4318(f16lodClamp) Location 17 - Decorate 5508(t1D) DescriptorSet 2 - Decorate 5508(t1D) Binding 0 - Decorate 5512(s) DescriptorSet 2 - Decorate 5512(s) Binding 11 - Decorate 5528(t2D) DescriptorSet 2 - Decorate 5528(t2D) Binding 1 - Decorate 5545(t3D) DescriptorSet 2 - Decorate 5545(t3D) Binding 2 - Decorate 5562(tCube) DescriptorSet 2 - Decorate 5562(tCube) Binding 4 - Decorate 5579(sShadow) DescriptorSet 2 - Decorate 5579(sShadow) Binding 12 - Decorate 5643(t1DArray) DescriptorSet 2 - Decorate 5643(t1DArray) Binding 5 - Decorate 5660(t2DArray) DescriptorSet 2 - Decorate 5660(t2DArray) Binding 6 - Decorate 5677(tCubeArray) DescriptorSet 2 - Decorate 5677(tCubeArray) Binding 7 - Decorate 5735(t2DRect) DescriptorSet 2 - Decorate 5735(t2DRect) Binding 3 - Decorate 5795(subpass) DescriptorSet 3 - Decorate 5795(subpass) Binding 0 - Decorate 5795(subpass) InputAttachmentIndex 0 - Decorate 5801(subpassMS) DescriptorSet 3 - Decorate 5801(subpassMS) Binding 1 - Decorate 5801(subpassMS) InputAttachmentIndex 0 - Decorate 5969(fragColor) Location 0 - Decorate 5973(tBuffer) DescriptorSet 2 - Decorate 5973(tBuffer) Binding 8 - Decorate 5975(t2DMS) DescriptorSet 2 - Decorate 5975(t2DMS) Binding 9 - Decorate 5977(t2DMSArray) DescriptorSet 2 - Decorate 5977(t2DMSArray) Binding 10 - Decorate 5978(bias) Location 6 + Decorate 1400(f16dPdxy1) Location 18 + Decorate 1407(dPdxy2) Location 9 + Decorate 1414(f16dPdxy2) Location 19 + Decorate 1421(dPdxy3) Location 10 + Decorate 1428(f16dPdxy3) Location 20 + Decorate 2909(i1D) DescriptorSet 1 + Decorate 2909(i1D) Binding 0 + Decorate 2918(i2D) DescriptorSet 1 + Decorate 2918(i2D) Binding 1 + Decorate 2927(i3D) DescriptorSet 1 + Decorate 2927(i3D) Binding 2 + Decorate 2936(i2DRect) DescriptorSet 1 + Decorate 2936(i2DRect) Binding 3 + Decorate 2945(iCube) DescriptorSet 1 + Decorate 2945(iCube) Binding 4 + Decorate 2954(iBuffer) DescriptorSet 1 + Decorate 2954(iBuffer) Binding 8 + Decorate 2963(i1DArray) DescriptorSet 1 + Decorate 2963(i1DArray) Binding 5 + Decorate 2972(i2DArray) DescriptorSet 1 + Decorate 2972(i2DArray) Binding 6 + Decorate 2981(iCubeArray) DescriptorSet 1 + Decorate 2981(iCubeArray) Binding 7 + Decorate 2990(i2DMS) DescriptorSet 1 + Decorate 2990(i2DMS) Binding 9 + Decorate 2999(i2DMSArray) DescriptorSet 1 + Decorate 2999(i2DMSArray) Binding 10 + Decorate 4187(lodClamp) Location 7 + Decorate 4194(f16lodClamp) Location 17 + Decorate 5316(t1D) DescriptorSet 2 + Decorate 5316(t1D) Binding 0 + Decorate 5320(s) DescriptorSet 2 + Decorate 5320(s) Binding 11 + Decorate 5336(t2D) DescriptorSet 2 + Decorate 5336(t2D) Binding 1 + Decorate 5353(t3D) DescriptorSet 2 + Decorate 5353(t3D) Binding 2 + Decorate 5370(tCube) DescriptorSet 2 + Decorate 5370(tCube) Binding 4 + Decorate 5387(sShadow) DescriptorSet 2 + Decorate 5387(sShadow) Binding 12 + Decorate 5451(t1DArray) DescriptorSet 2 + Decorate 5451(t1DArray) Binding 5 + Decorate 5468(t2DArray) DescriptorSet 2 + Decorate 5468(t2DArray) Binding 6 + Decorate 5485(tCubeArray) DescriptorSet 2 + Decorate 5485(tCubeArray) Binding 7 + Decorate 5543(t2DRect) DescriptorSet 2 + Decorate 5543(t2DRect) Binding 3 + Decorate 5603(subpass) DescriptorSet 3 + Decorate 5603(subpass) Binding 0 + Decorate 5603(subpass) InputAttachmentIndex 0 + Decorate 5609(subpassMS) DescriptorSet 3 + Decorate 5609(subpassMS) Binding 1 + Decorate 5609(subpassMS) InputAttachmentIndex 0 + Decorate 5777(fragColor) Location 0 + Decorate 5781(tBuffer) DescriptorSet 2 + Decorate 5781(tBuffer) Binding 8 + Decorate 5783(t2DMS) DescriptorSet 2 + Decorate 5783(t2DMS) Binding 9 + Decorate 5785(t2DMSArray) DescriptorSet 2 + Decorate 5785(t2DMSArray) Binding 10 + Decorate 5786(bias) Location 6 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 @@ -441,323 +441,323 @@ Validation failed 1322(s2DMSArray): 1321(ptr) Variable UniformConstant 1326: 47(int) Constant 2 1393(dPdxy1): 127(ptr) Variable Input - 1401(f16dPdxy1): 134(ptr) Variable Input - 1409(dPdxy2): 147(ptr) Variable Input - 1417(f16dPdxy2): 155(ptr) Variable Input - 1425(dPdxy3): 168(ptr) Variable Input - 1433(f16dPdxy3): 176(ptr) Variable Input - 2187: 47(int) Constant 0 - 2378: 206(int) Constant 4 - 2379: TypeArray 721(ivec2) 2378 - 2380: 2379 ConstantComposite 722 722 722 722 - 2558: TypePointer Function 48(ivec4) - 2560: 48(ivec4) ConstantComposite 2187 2187 2187 2187 - 2566: TypePointer Function 47(int) - 2581: 206(int) Constant 1 - 2596: 206(int) Constant 2 - 2776: TypePointer Function 53(fvec2) - 2778: 52(float) Constant 0 - 2779: 53(fvec2) ConstantComposite 2778 2778 - 2997: TypeImage 6(float16_t) 1D nonsampled format:Rgba16f + 1400(f16dPdxy1): 134(ptr) Variable Input + 1407(dPdxy2): 147(ptr) Variable Input + 1414(f16dPdxy2): 155(ptr) Variable Input + 1421(dPdxy3): 168(ptr) Variable Input + 1428(f16dPdxy3): 176(ptr) Variable Input + 2097: 47(int) Constant 0 + 2288: 206(int) Constant 4 + 2289: TypeArray 721(ivec2) 2288 + 2290: 2289 ConstantComposite 722 722 722 722 + 2468: TypePointer Function 48(ivec4) + 2470: 48(ivec4) ConstantComposite 2097 2097 2097 2097 + 2476: TypePointer Function 47(int) + 2491: 206(int) Constant 1 + 2506: 206(int) Constant 2 + 2686: TypePointer Function 53(fvec2) + 2688: 52(float) Constant 0 + 2689: 53(fvec2) ConstantComposite 2688 2688 + 2907: TypeImage 6(float16_t) 1D nonsampled format:Rgba16f + 2908: TypePointer UniformConstant 2907 + 2909(i1D): 2908(ptr) Variable UniformConstant + 2916: TypeImage 6(float16_t) 2D nonsampled format:Rgba16f + 2917: TypePointer UniformConstant 2916 + 2918(i2D): 2917(ptr) Variable UniformConstant + 2925: TypeImage 6(float16_t) 3D nonsampled format:Rgba16f + 2926: TypePointer UniformConstant 2925 + 2927(i3D): 2926(ptr) Variable UniformConstant + 2934: TypeImage 6(float16_t) Rect nonsampled format:Rgba16f + 2935: TypePointer UniformConstant 2934 + 2936(i2DRect): 2935(ptr) Variable UniformConstant + 2943: TypeImage 6(float16_t) Cube nonsampled format:Rgba16f + 2944: TypePointer UniformConstant 2943 + 2945(iCube): 2944(ptr) Variable UniformConstant + 2952: TypeImage 6(float16_t) Buffer nonsampled format:Rgba16f + 2953: TypePointer UniformConstant 2952 + 2954(iBuffer): 2953(ptr) Variable UniformConstant + 2961: TypeImage 6(float16_t) 1D array nonsampled format:Rgba16f + 2962: TypePointer UniformConstant 2961 + 2963(i1DArray): 2962(ptr) Variable UniformConstant + 2970: TypeImage 6(float16_t) 2D array nonsampled format:Rgba16f + 2971: TypePointer UniformConstant 2970 + 2972(i2DArray): 2971(ptr) Variable UniformConstant + 2979: TypeImage 6(float16_t) Cube array nonsampled format:Rgba16f + 2980: TypePointer UniformConstant 2979 +2981(iCubeArray): 2980(ptr) Variable UniformConstant + 2988: TypeImage 6(float16_t) 2D multi-sampled nonsampled format:Rgba16f + 2989: TypePointer UniformConstant 2988 + 2990(i2DMS): 2989(ptr) Variable UniformConstant + 2997: TypeImage 6(float16_t) 2D array multi-sampled nonsampled format:Rgba16f 2998: TypePointer UniformConstant 2997 - 2999(i1D): 2998(ptr) Variable UniformConstant - 3006: TypeImage 6(float16_t) 2D nonsampled format:Rgba16f - 3007: TypePointer UniformConstant 3006 - 3008(i2D): 3007(ptr) Variable UniformConstant - 3015: TypeImage 6(float16_t) 3D nonsampled format:Rgba16f - 3016: TypePointer UniformConstant 3015 - 3017(i3D): 3016(ptr) Variable UniformConstant - 3024: TypeImage 6(float16_t) Rect nonsampled format:Rgba16f - 3025: TypePointer UniformConstant 3024 - 3026(i2DRect): 3025(ptr) Variable UniformConstant - 3033: TypeImage 6(float16_t) Cube nonsampled format:Rgba16f - 3034: TypePointer UniformConstant 3033 - 3035(iCube): 3034(ptr) Variable UniformConstant - 3042: TypeImage 6(float16_t) Buffer nonsampled format:Rgba16f - 3043: TypePointer UniformConstant 3042 - 3044(iBuffer): 3043(ptr) Variable UniformConstant - 3051: TypeImage 6(float16_t) 1D array nonsampled format:Rgba16f - 3052: TypePointer UniformConstant 3051 - 3053(i1DArray): 3052(ptr) Variable UniformConstant - 3060: TypeImage 6(float16_t) 2D array nonsampled format:Rgba16f - 3061: TypePointer UniformConstant 3060 - 3062(i2DArray): 3061(ptr) Variable UniformConstant - 3069: TypeImage 6(float16_t) Cube array nonsampled format:Rgba16f - 3070: TypePointer UniformConstant 3069 -3071(iCubeArray): 3070(ptr) Variable UniformConstant - 3078: TypeImage 6(float16_t) 2D multi-sampled nonsampled format:Rgba16f - 3079: TypePointer UniformConstant 3078 - 3080(i2DMS): 3079(ptr) Variable UniformConstant - 3087: TypeImage 6(float16_t) 2D array multi-sampled nonsampled format:Rgba16f - 3088: TypePointer UniformConstant 3087 -3089(i2DMSArray): 3088(ptr) Variable UniformConstant - 3146(ResType): TypeStruct 47(int) 7(f16vec4) - 3182(ResType): TypeStruct 47(int) 6(float16_t) - 4069: 721(ivec2) ConstantComposite 709 1326 - 4070: 47(int) Constant 3 - 4071: 47(int) Constant 4 - 4072: 721(ivec2) ConstantComposite 4070 4071 - 4073: 47(int) Constant 15 - 4074: 47(int) Constant 16 - 4075: 721(ivec2) ConstantComposite 4073 4074 - 4076: 47(int) Constant 4294967294 - 4077: 721(ivec2) ConstantComposite 4076 2187 - 4078: 2379 ConstantComposite 4069 4072 4075 4077 - 4311(lodClamp): 127(ptr) Variable Input -4318(f16lodClamp): 134(ptr) Variable Input - 5507: TypePointer UniformConstant 122 - 5508(t1D): 5507(ptr) Variable UniformConstant - 5510: TypeSampler - 5511: TypePointer UniformConstant 5510 - 5512(s): 5511(ptr) Variable UniformConstant - 5527: TypePointer UniformConstant 142 - 5528(t2D): 5527(ptr) Variable UniformConstant - 5544: TypePointer UniformConstant 162 - 5545(t3D): 5544(ptr) Variable UniformConstant - 5561: TypePointer UniformConstant 183 - 5562(tCube): 5561(ptr) Variable UniformConstant - 5579(sShadow): 5511(ptr) Variable UniformConstant - 5642: TypePointer UniformConstant 268 - 5643(t1DArray): 5642(ptr) Variable UniformConstant - 5659: TypePointer UniformConstant 283 - 5660(t2DArray): 5659(ptr) Variable UniformConstant - 5676: TypePointer UniformConstant 298 -5677(tCubeArray): 5676(ptr) Variable UniformConstant - 5734: TypePointer UniformConstant 356 - 5735(t2DRect): 5734(ptr) Variable UniformConstant - 5793: TypeImage 6(float16_t) SubpassData nonsampled format:Unknown - 5794: TypePointer UniformConstant 5793 - 5795(subpass): 5794(ptr) Variable UniformConstant - 5797: 721(ivec2) ConstantComposite 2187 2187 - 5799: TypeImage 6(float16_t) SubpassData multi-sampled nonsampled format:Unknown - 5800: TypePointer UniformConstant 5799 - 5801(subpassMS): 5800(ptr) Variable UniformConstant - 5968: TypePointer Output 249(fvec4) - 5969(fragColor): 5968(ptr) Variable Output - 5972: TypePointer UniformConstant 1297 - 5973(tBuffer): 5972(ptr) Variable UniformConstant - 5974: TypePointer UniformConstant 1308 - 5975(t2DMS): 5974(ptr) Variable UniformConstant - 5976: TypePointer UniformConstant 1319 -5977(t2DMSArray): 5976(ptr) Variable UniformConstant - 5978(bias): 127(ptr) Variable Input +2999(i2DMSArray): 2998(ptr) Variable UniformConstant + 3056(ResType): TypeStruct 47(int) 7(f16vec4) + 3092(ResType): TypeStruct 47(int) 6(float16_t) + 3945: 721(ivec2) ConstantComposite 709 1326 + 3946: 47(int) Constant 3 + 3947: 47(int) Constant 4 + 3948: 721(ivec2) ConstantComposite 3946 3947 + 3949: 47(int) Constant 15 + 3950: 47(int) Constant 16 + 3951: 721(ivec2) ConstantComposite 3949 3950 + 3952: 47(int) Constant 4294967294 + 3953: 721(ivec2) ConstantComposite 3952 2097 + 3954: 2289 ConstantComposite 3945 3948 3951 3953 + 4187(lodClamp): 127(ptr) Variable Input +4194(f16lodClamp): 134(ptr) Variable Input + 5315: TypePointer UniformConstant 122 + 5316(t1D): 5315(ptr) Variable UniformConstant + 5318: TypeSampler + 5319: TypePointer UniformConstant 5318 + 5320(s): 5319(ptr) Variable UniformConstant + 5335: TypePointer UniformConstant 142 + 5336(t2D): 5335(ptr) Variable UniformConstant + 5352: TypePointer UniformConstant 162 + 5353(t3D): 5352(ptr) Variable UniformConstant + 5369: TypePointer UniformConstant 183 + 5370(tCube): 5369(ptr) Variable UniformConstant + 5387(sShadow): 5319(ptr) Variable UniformConstant + 5450: TypePointer UniformConstant 268 + 5451(t1DArray): 5450(ptr) Variable UniformConstant + 5467: TypePointer UniformConstant 283 + 5468(t2DArray): 5467(ptr) Variable UniformConstant + 5484: TypePointer UniformConstant 298 +5485(tCubeArray): 5484(ptr) Variable UniformConstant + 5542: TypePointer UniformConstant 356 + 5543(t2DRect): 5542(ptr) Variable UniformConstant + 5601: TypeImage 6(float16_t) SubpassData nonsampled format:Unknown + 5602: TypePointer UniformConstant 5601 + 5603(subpass): 5602(ptr) Variable UniformConstant + 5605: 721(ivec2) ConstantComposite 2097 2097 + 5607: TypeImage 6(float16_t) SubpassData multi-sampled nonsampled format:Unknown + 5608: TypePointer UniformConstant 5607 + 5609(subpassMS): 5608(ptr) Variable UniformConstant + 5776: TypePointer Output 249(fvec4) + 5777(fragColor): 5776(ptr) Variable Output + 5780: TypePointer UniformConstant 1297 + 5781(tBuffer): 5780(ptr) Variable UniformConstant + 5782: TypePointer UniformConstant 1308 + 5783(t2DMS): 5782(ptr) Variable UniformConstant + 5784: TypePointer UniformConstant 1319 +5785(t2DMSArray): 5784(ptr) Variable UniformConstant + 5786(bias): 127(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 5807(result): 64(ptr) Variable Function - 5890(param): 64(ptr) Variable Function - Store 5807(result) 121 - 5808: 7(f16vec4) FunctionCall 9(testTexture() - 5809: 7(f16vec4) Load 5807(result) - 5810: 7(f16vec4) FAdd 5809 5808 - Store 5807(result) 5810 - 5811: 7(f16vec4) FunctionCall 11(testTextureProj() - 5812: 7(f16vec4) Load 5807(result) - 5813: 7(f16vec4) FAdd 5812 5811 - Store 5807(result) 5813 - 5814: 7(f16vec4) FunctionCall 13(testTextureLod() - 5815: 7(f16vec4) Load 5807(result) - 5816: 7(f16vec4) FAdd 5815 5814 - Store 5807(result) 5816 - 5817: 7(f16vec4) FunctionCall 15(testTextureOffset() - 5818: 7(f16vec4) Load 5807(result) - 5819: 7(f16vec4) FAdd 5818 5817 - Store 5807(result) 5819 - 5820: 7(f16vec4) FunctionCall 19(testTextureLodOffset() - 5821: 7(f16vec4) Load 5807(result) - 5822: 7(f16vec4) FAdd 5821 5820 - Store 5807(result) 5822 - 5823: 7(f16vec4) FunctionCall 21(testTextureProjLodOffset() - 5824: 7(f16vec4) Load 5807(result) - 5825: 7(f16vec4) FAdd 5824 5823 - Store 5807(result) 5825 - 5826: 7(f16vec4) FunctionCall 23(testTexelFetch() - 5827: 7(f16vec4) Load 5807(result) - 5828: 7(f16vec4) FAdd 5827 5826 - Store 5807(result) 5828 - 5829: 7(f16vec4) FunctionCall 25(testTexelFetchOffset() - 5830: 7(f16vec4) Load 5807(result) - 5831: 7(f16vec4) FAdd 5830 5829 - Store 5807(result) 5831 - 5832: 7(f16vec4) FunctionCall 27(testTextureGrad() - 5833: 7(f16vec4) Load 5807(result) - 5834: 7(f16vec4) FAdd 5833 5832 - Store 5807(result) 5834 - 5835: 7(f16vec4) FunctionCall 29(testTextureGradOffset() - 5836: 7(f16vec4) Load 5807(result) - 5837: 7(f16vec4) FAdd 5836 5835 - Store 5807(result) 5837 - 5838: 7(f16vec4) FunctionCall 31(testTextureProjGrad() - 5839: 7(f16vec4) Load 5807(result) - 5840: 7(f16vec4) FAdd 5839 5838 - Store 5807(result) 5840 - 5841: 7(f16vec4) FunctionCall 33(testTextureProjGradoffset() - 5842: 7(f16vec4) Load 5807(result) - 5843: 7(f16vec4) FAdd 5842 5841 - Store 5807(result) 5843 - 5844: 7(f16vec4) FunctionCall 35(testTextureGather() - 5845: 7(f16vec4) Load 5807(result) - 5846: 7(f16vec4) FAdd 5845 5844 - Store 5807(result) 5846 - 5847: 7(f16vec4) FunctionCall 37(testTextureGatherOffset() - 5848: 7(f16vec4) Load 5807(result) - 5849: 7(f16vec4) FAdd 5848 5847 - Store 5807(result) 5849 - 5850: 7(f16vec4) FunctionCall 39(testTextureGatherOffsets() - 5851: 7(f16vec4) Load 5807(result) - 5852: 7(f16vec4) FAdd 5851 5850 - Store 5807(result) 5852 - 5853: 7(f16vec4) FunctionCall 41(testTextureGatherLod() - 5854: 7(f16vec4) Load 5807(result) - 5855: 7(f16vec4) FAdd 5854 5853 - Store 5807(result) 5855 - 5856: 7(f16vec4) FunctionCall 43(testTextureGatherLodOffset() - 5857: 7(f16vec4) Load 5807(result) - 5858: 7(f16vec4) FAdd 5857 5856 - Store 5807(result) 5858 - 5859: 7(f16vec4) FunctionCall 45(testTextureGatherLodOffsets() - 5860: 7(f16vec4) Load 5807(result) - 5861: 7(f16vec4) FAdd 5860 5859 - Store 5807(result) 5861 - 5862: 48(ivec4) FunctionCall 50(testTextureSize() - 5863: 7(f16vec4) ConvertSToF 5862 - 5864: 7(f16vec4) Load 5807(result) - 5865: 7(f16vec4) FAdd 5864 5863 - Store 5807(result) 5865 - 5866: 53(fvec2) FunctionCall 55(testTextureQueryLod() - 5867:154(f16vec2) FConvert 5866 - 5868: 7(f16vec4) Load 5807(result) - 5869:154(f16vec2) VectorShuffle 5868 5868 0 1 - 5870:154(f16vec2) FAdd 5869 5867 - 5871: 208(ptr) AccessChain 5807(result) 207 - 5872:6(float16_t) CompositeExtract 5870 0 - Store 5871 5872 - 5873: 208(ptr) AccessChain 5807(result) 2581 - 5874:6(float16_t) CompositeExtract 5870 1 - Store 5873 5874 - 5875: 47(int) FunctionCall 58(testTextureQueryLevels() - 5876:6(float16_t) ConvertSToF 5875 - 5877: 208(ptr) AccessChain 5807(result) 207 - 5878:6(float16_t) Load 5877 - 5879:6(float16_t) FAdd 5878 5876 - 5880: 208(ptr) AccessChain 5807(result) 207 - Store 5880 5879 - 5881: 47(int) FunctionCall 60(testTextureSamples() - 5882:6(float16_t) ConvertSToF 5881 - 5883: 208(ptr) AccessChain 5807(result) 207 - 5884:6(float16_t) Load 5883 - 5885:6(float16_t) FAdd 5884 5882 - 5886: 208(ptr) AccessChain 5807(result) 207 - Store 5886 5885 - 5887: 7(f16vec4) FunctionCall 62(testImageLoad() - 5888: 7(f16vec4) Load 5807(result) - 5889: 7(f16vec4) FAdd 5888 5887 - Store 5807(result) 5889 - 5891: 7(f16vec4) Load 5807(result) - Store 5890(param) 5891 - 5892: 2 FunctionCall 67(testImageStore(vf164;) 5890(param) - 5893: 7(f16vec4) FunctionCall 69(testSparseTexture() - 5894: 7(f16vec4) Load 5807(result) - 5895: 7(f16vec4) FAdd 5894 5893 - Store 5807(result) 5895 - 5896: 7(f16vec4) FunctionCall 71(testSparseTextureLod() - 5897: 7(f16vec4) Load 5807(result) - 5898: 7(f16vec4) FAdd 5897 5896 - Store 5807(result) 5898 - 5899: 7(f16vec4) FunctionCall 73(testSparseTextureOffset() - 5900: 7(f16vec4) Load 5807(result) - 5901: 7(f16vec4) FAdd 5900 5899 - Store 5807(result) 5901 - 5902: 7(f16vec4) FunctionCall 75(testSparseTextureLodOffset() - 5903: 7(f16vec4) Load 5807(result) - 5904: 7(f16vec4) FAdd 5903 5902 - Store 5807(result) 5904 - 5905: 7(f16vec4) FunctionCall 77(testSparseTextureGrad() - 5906: 7(f16vec4) Load 5807(result) - 5907: 7(f16vec4) FAdd 5906 5905 - Store 5807(result) 5907 - 5908: 7(f16vec4) FunctionCall 79(testSparseTextureGradOffset() - 5909: 7(f16vec4) Load 5807(result) - 5910: 7(f16vec4) FAdd 5909 5908 - Store 5807(result) 5910 - 5911: 7(f16vec4) FunctionCall 81(testSparseTexelFetch() - 5912: 7(f16vec4) Load 5807(result) - 5913: 7(f16vec4) FAdd 5912 5911 - Store 5807(result) 5913 - 5914: 7(f16vec4) FunctionCall 83(testSparseTexelFetchOffset() - 5915: 7(f16vec4) Load 5807(result) - 5916: 7(f16vec4) FAdd 5915 5914 - Store 5807(result) 5916 - 5917: 7(f16vec4) FunctionCall 85(testSparseTextureGather() - 5918: 7(f16vec4) Load 5807(result) - 5919: 7(f16vec4) FAdd 5918 5917 - Store 5807(result) 5919 - 5920: 7(f16vec4) FunctionCall 87(testSparseTextureGatherOffset() - 5921: 7(f16vec4) Load 5807(result) - 5922: 7(f16vec4) FAdd 5921 5920 - Store 5807(result) 5922 - 5923: 7(f16vec4) FunctionCall 89(testSparseTextureGatherOffsets() - 5924: 7(f16vec4) Load 5807(result) - 5925: 7(f16vec4) FAdd 5924 5923 - Store 5807(result) 5925 - 5926: 7(f16vec4) FunctionCall 91(testSparseTextureGatherLod() - 5927: 7(f16vec4) Load 5807(result) - 5928: 7(f16vec4) FAdd 5927 5926 - Store 5807(result) 5928 - 5929: 7(f16vec4) FunctionCall 93(testSparseTextureGatherLodOffset() - 5930: 7(f16vec4) Load 5807(result) - 5931: 7(f16vec4) FAdd 5930 5929 - Store 5807(result) 5931 - 5932: 7(f16vec4) FunctionCall 95(testSparseTextureGatherLodOffsets() - 5933: 7(f16vec4) Load 5807(result) - 5934: 7(f16vec4) FAdd 5933 5932 - Store 5807(result) 5934 - 5935: 7(f16vec4) FunctionCall 97(testSparseImageLoad() - 5936: 7(f16vec4) Load 5807(result) - 5937: 7(f16vec4) FAdd 5936 5935 - Store 5807(result) 5937 - 5938: 7(f16vec4) FunctionCall 99(testSparseTextureClamp() - 5939: 7(f16vec4) Load 5807(result) - 5940: 7(f16vec4) FAdd 5939 5938 - Store 5807(result) 5940 - 5941: 7(f16vec4) FunctionCall 101(testTextureClamp() - 5942: 7(f16vec4) Load 5807(result) - 5943: 7(f16vec4) FAdd 5942 5941 - Store 5807(result) 5943 - 5944: 7(f16vec4) FunctionCall 103(testSparseTextureOffsetClamp() - 5945: 7(f16vec4) Load 5807(result) - 5946: 7(f16vec4) FAdd 5945 5944 - Store 5807(result) 5946 - 5947: 7(f16vec4) FunctionCall 105(testTextureOffsetClamp() - 5948: 7(f16vec4) Load 5807(result) - 5949: 7(f16vec4) FAdd 5948 5947 - Store 5807(result) 5949 - 5950: 7(f16vec4) FunctionCall 77(testSparseTextureGrad() - 5951: 7(f16vec4) Load 5807(result) - 5952: 7(f16vec4) FAdd 5951 5950 - Store 5807(result) 5952 - 5953: 7(f16vec4) FunctionCall 27(testTextureGrad() - 5954: 7(f16vec4) Load 5807(result) - 5955: 7(f16vec4) FAdd 5954 5953 - Store 5807(result) 5955 - 5956: 7(f16vec4) FunctionCall 111(testSparseTextureGradOffsetClamp() - 5957: 7(f16vec4) Load 5807(result) - 5958: 7(f16vec4) FAdd 5957 5956 - Store 5807(result) 5958 - 5959: 7(f16vec4) FunctionCall 113(testTextureGradOffsetClamp() - 5960: 7(f16vec4) Load 5807(result) - 5961: 7(f16vec4) FAdd 5960 5959 - Store 5807(result) 5961 - 5962: 7(f16vec4) FunctionCall 115(testCombinedTextureSampler() - 5963: 7(f16vec4) Load 5807(result) - 5964: 7(f16vec4) FAdd 5963 5962 - Store 5807(result) 5964 - 5965: 7(f16vec4) FunctionCall 117(testSubpassLoad() - 5966: 7(f16vec4) Load 5807(result) - 5967: 7(f16vec4) FAdd 5966 5965 - Store 5807(result) 5967 - 5970: 7(f16vec4) Load 5807(result) - 5971: 249(fvec4) FConvert 5970 - Store 5969(fragColor) 5971 + 5615(result): 64(ptr) Variable Function + 5698(param): 64(ptr) Variable Function + Store 5615(result) 121 + 5616: 7(f16vec4) FunctionCall 9(testTexture() + 5617: 7(f16vec4) Load 5615(result) + 5618: 7(f16vec4) FAdd 5617 5616 + Store 5615(result) 5618 + 5619: 7(f16vec4) FunctionCall 11(testTextureProj() + 5620: 7(f16vec4) Load 5615(result) + 5621: 7(f16vec4) FAdd 5620 5619 + Store 5615(result) 5621 + 5622: 7(f16vec4) FunctionCall 13(testTextureLod() + 5623: 7(f16vec4) Load 5615(result) + 5624: 7(f16vec4) FAdd 5623 5622 + Store 5615(result) 5624 + 5625: 7(f16vec4) FunctionCall 15(testTextureOffset() + 5626: 7(f16vec4) Load 5615(result) + 5627: 7(f16vec4) FAdd 5626 5625 + Store 5615(result) 5627 + 5628: 7(f16vec4) FunctionCall 19(testTextureLodOffset() + 5629: 7(f16vec4) Load 5615(result) + 5630: 7(f16vec4) FAdd 5629 5628 + Store 5615(result) 5630 + 5631: 7(f16vec4) FunctionCall 21(testTextureProjLodOffset() + 5632: 7(f16vec4) Load 5615(result) + 5633: 7(f16vec4) FAdd 5632 5631 + Store 5615(result) 5633 + 5634: 7(f16vec4) FunctionCall 23(testTexelFetch() + 5635: 7(f16vec4) Load 5615(result) + 5636: 7(f16vec4) FAdd 5635 5634 + Store 5615(result) 5636 + 5637: 7(f16vec4) FunctionCall 25(testTexelFetchOffset() + 5638: 7(f16vec4) Load 5615(result) + 5639: 7(f16vec4) FAdd 5638 5637 + Store 5615(result) 5639 + 5640: 7(f16vec4) FunctionCall 27(testTextureGrad() + 5641: 7(f16vec4) Load 5615(result) + 5642: 7(f16vec4) FAdd 5641 5640 + Store 5615(result) 5642 + 5643: 7(f16vec4) FunctionCall 29(testTextureGradOffset() + 5644: 7(f16vec4) Load 5615(result) + 5645: 7(f16vec4) FAdd 5644 5643 + Store 5615(result) 5645 + 5646: 7(f16vec4) FunctionCall 31(testTextureProjGrad() + 5647: 7(f16vec4) Load 5615(result) + 5648: 7(f16vec4) FAdd 5647 5646 + Store 5615(result) 5648 + 5649: 7(f16vec4) FunctionCall 33(testTextureProjGradoffset() + 5650: 7(f16vec4) Load 5615(result) + 5651: 7(f16vec4) FAdd 5650 5649 + Store 5615(result) 5651 + 5652: 7(f16vec4) FunctionCall 35(testTextureGather() + 5653: 7(f16vec4) Load 5615(result) + 5654: 7(f16vec4) FAdd 5653 5652 + Store 5615(result) 5654 + 5655: 7(f16vec4) FunctionCall 37(testTextureGatherOffset() + 5656: 7(f16vec4) Load 5615(result) + 5657: 7(f16vec4) FAdd 5656 5655 + Store 5615(result) 5657 + 5658: 7(f16vec4) FunctionCall 39(testTextureGatherOffsets() + 5659: 7(f16vec4) Load 5615(result) + 5660: 7(f16vec4) FAdd 5659 5658 + Store 5615(result) 5660 + 5661: 7(f16vec4) FunctionCall 41(testTextureGatherLod() + 5662: 7(f16vec4) Load 5615(result) + 5663: 7(f16vec4) FAdd 5662 5661 + Store 5615(result) 5663 + 5664: 7(f16vec4) FunctionCall 43(testTextureGatherLodOffset() + 5665: 7(f16vec4) Load 5615(result) + 5666: 7(f16vec4) FAdd 5665 5664 + Store 5615(result) 5666 + 5667: 7(f16vec4) FunctionCall 45(testTextureGatherLodOffsets() + 5668: 7(f16vec4) Load 5615(result) + 5669: 7(f16vec4) FAdd 5668 5667 + Store 5615(result) 5669 + 5670: 48(ivec4) FunctionCall 50(testTextureSize() + 5671: 7(f16vec4) ConvertSToF 5670 + 5672: 7(f16vec4) Load 5615(result) + 5673: 7(f16vec4) FAdd 5672 5671 + Store 5615(result) 5673 + 5674: 53(fvec2) FunctionCall 55(testTextureQueryLod() + 5675:154(f16vec2) FConvert 5674 + 5676: 7(f16vec4) Load 5615(result) + 5677:154(f16vec2) VectorShuffle 5676 5676 0 1 + 5678:154(f16vec2) FAdd 5677 5675 + 5679: 208(ptr) AccessChain 5615(result) 207 + 5680:6(float16_t) CompositeExtract 5678 0 + Store 5679 5680 + 5681: 208(ptr) AccessChain 5615(result) 2491 + 5682:6(float16_t) CompositeExtract 5678 1 + Store 5681 5682 + 5683: 47(int) FunctionCall 58(testTextureQueryLevels() + 5684:6(float16_t) ConvertSToF 5683 + 5685: 208(ptr) AccessChain 5615(result) 207 + 5686:6(float16_t) Load 5685 + 5687:6(float16_t) FAdd 5686 5684 + 5688: 208(ptr) AccessChain 5615(result) 207 + Store 5688 5687 + 5689: 47(int) FunctionCall 60(testTextureSamples() + 5690:6(float16_t) ConvertSToF 5689 + 5691: 208(ptr) AccessChain 5615(result) 207 + 5692:6(float16_t) Load 5691 + 5693:6(float16_t) FAdd 5692 5690 + 5694: 208(ptr) AccessChain 5615(result) 207 + Store 5694 5693 + 5695: 7(f16vec4) FunctionCall 62(testImageLoad() + 5696: 7(f16vec4) Load 5615(result) + 5697: 7(f16vec4) FAdd 5696 5695 + Store 5615(result) 5697 + 5699: 7(f16vec4) Load 5615(result) + Store 5698(param) 5699 + 5700: 2 FunctionCall 67(testImageStore(vf164;) 5698(param) + 5701: 7(f16vec4) FunctionCall 69(testSparseTexture() + 5702: 7(f16vec4) Load 5615(result) + 5703: 7(f16vec4) FAdd 5702 5701 + Store 5615(result) 5703 + 5704: 7(f16vec4) FunctionCall 71(testSparseTextureLod() + 5705: 7(f16vec4) Load 5615(result) + 5706: 7(f16vec4) FAdd 5705 5704 + Store 5615(result) 5706 + 5707: 7(f16vec4) FunctionCall 73(testSparseTextureOffset() + 5708: 7(f16vec4) Load 5615(result) + 5709: 7(f16vec4) FAdd 5708 5707 + Store 5615(result) 5709 + 5710: 7(f16vec4) FunctionCall 75(testSparseTextureLodOffset() + 5711: 7(f16vec4) Load 5615(result) + 5712: 7(f16vec4) FAdd 5711 5710 + Store 5615(result) 5712 + 5713: 7(f16vec4) FunctionCall 77(testSparseTextureGrad() + 5714: 7(f16vec4) Load 5615(result) + 5715: 7(f16vec4) FAdd 5714 5713 + Store 5615(result) 5715 + 5716: 7(f16vec4) FunctionCall 79(testSparseTextureGradOffset() + 5717: 7(f16vec4) Load 5615(result) + 5718: 7(f16vec4) FAdd 5717 5716 + Store 5615(result) 5718 + 5719: 7(f16vec4) FunctionCall 81(testSparseTexelFetch() + 5720: 7(f16vec4) Load 5615(result) + 5721: 7(f16vec4) FAdd 5720 5719 + Store 5615(result) 5721 + 5722: 7(f16vec4) FunctionCall 83(testSparseTexelFetchOffset() + 5723: 7(f16vec4) Load 5615(result) + 5724: 7(f16vec4) FAdd 5723 5722 + Store 5615(result) 5724 + 5725: 7(f16vec4) FunctionCall 85(testSparseTextureGather() + 5726: 7(f16vec4) Load 5615(result) + 5727: 7(f16vec4) FAdd 5726 5725 + Store 5615(result) 5727 + 5728: 7(f16vec4) FunctionCall 87(testSparseTextureGatherOffset() + 5729: 7(f16vec4) Load 5615(result) + 5730: 7(f16vec4) FAdd 5729 5728 + Store 5615(result) 5730 + 5731: 7(f16vec4) FunctionCall 89(testSparseTextureGatherOffsets() + 5732: 7(f16vec4) Load 5615(result) + 5733: 7(f16vec4) FAdd 5732 5731 + Store 5615(result) 5733 + 5734: 7(f16vec4) FunctionCall 91(testSparseTextureGatherLod() + 5735: 7(f16vec4) Load 5615(result) + 5736: 7(f16vec4) FAdd 5735 5734 + Store 5615(result) 5736 + 5737: 7(f16vec4) FunctionCall 93(testSparseTextureGatherLodOffset() + 5738: 7(f16vec4) Load 5615(result) + 5739: 7(f16vec4) FAdd 5738 5737 + Store 5615(result) 5739 + 5740: 7(f16vec4) FunctionCall 95(testSparseTextureGatherLodOffsets() + 5741: 7(f16vec4) Load 5615(result) + 5742: 7(f16vec4) FAdd 5741 5740 + Store 5615(result) 5742 + 5743: 7(f16vec4) FunctionCall 97(testSparseImageLoad() + 5744: 7(f16vec4) Load 5615(result) + 5745: 7(f16vec4) FAdd 5744 5743 + Store 5615(result) 5745 + 5746: 7(f16vec4) FunctionCall 99(testSparseTextureClamp() + 5747: 7(f16vec4) Load 5615(result) + 5748: 7(f16vec4) FAdd 5747 5746 + Store 5615(result) 5748 + 5749: 7(f16vec4) FunctionCall 101(testTextureClamp() + 5750: 7(f16vec4) Load 5615(result) + 5751: 7(f16vec4) FAdd 5750 5749 + Store 5615(result) 5751 + 5752: 7(f16vec4) FunctionCall 103(testSparseTextureOffsetClamp() + 5753: 7(f16vec4) Load 5615(result) + 5754: 7(f16vec4) FAdd 5753 5752 + Store 5615(result) 5754 + 5755: 7(f16vec4) FunctionCall 105(testTextureOffsetClamp() + 5756: 7(f16vec4) Load 5615(result) + 5757: 7(f16vec4) FAdd 5756 5755 + Store 5615(result) 5757 + 5758: 7(f16vec4) FunctionCall 77(testSparseTextureGrad() + 5759: 7(f16vec4) Load 5615(result) + 5760: 7(f16vec4) FAdd 5759 5758 + Store 5615(result) 5760 + 5761: 7(f16vec4) FunctionCall 27(testTextureGrad() + 5762: 7(f16vec4) Load 5615(result) + 5763: 7(f16vec4) FAdd 5762 5761 + Store 5615(result) 5763 + 5764: 7(f16vec4) FunctionCall 111(testSparseTextureGradOffsetClamp() + 5765: 7(f16vec4) Load 5615(result) + 5766: 7(f16vec4) FAdd 5765 5764 + Store 5615(result) 5766 + 5767: 7(f16vec4) FunctionCall 113(testTextureGradOffsetClamp() + 5768: 7(f16vec4) Load 5615(result) + 5769: 7(f16vec4) FAdd 5768 5767 + Store 5615(result) 5769 + 5770: 7(f16vec4) FunctionCall 115(testCombinedTextureSampler() + 5771: 7(f16vec4) Load 5615(result) + 5772: 7(f16vec4) FAdd 5771 5770 + Store 5615(result) 5772 + 5773: 7(f16vec4) FunctionCall 117(testSubpassLoad() + 5774: 7(f16vec4) Load 5615(result) + 5775: 7(f16vec4) FAdd 5774 5773 + Store 5615(result) 5775 + 5778: 7(f16vec4) Load 5615(result) + 5779: 249(fvec4) FConvert 5778 + Store 5777(fragColor) 5779 Return FunctionEnd 9(testTexture(): 7(f16vec4) Function None 8 @@ -2115,5035 +2115,4843 @@ Validation failed 1391: 123 Load 125(s1D) 1392: 52(float) Load 128(c1) 1394: 52(float) Load 1393(dPdxy1) - 1395: 52(float) Load 1393(dPdxy1) - 1396: 7(f16vec4) ImageSampleExplicitLod 1391 1392 Grad 1394 1395 - 1397: 7(f16vec4) Load 1390(texel) - 1398: 7(f16vec4) FAdd 1397 1396 - Store 1390(texel) 1398 - 1399: 123 Load 125(s1D) - 1400:6(float16_t) Load 135(f16c1) - 1402:6(float16_t) Load 1401(f16dPdxy1) - 1403:6(float16_t) Load 1401(f16dPdxy1) - 1404: 7(f16vec4) ImageSampleExplicitLod 1399 1400 Grad 1402 1403 - 1405: 7(f16vec4) Load 1390(texel) - 1406: 7(f16vec4) FAdd 1405 1404 - Store 1390(texel) 1406 - 1407: 143 Load 145(s2D) - 1408: 53(fvec2) Load 148(c2) - 1410: 53(fvec2) Load 1409(dPdxy2) - 1411: 53(fvec2) Load 1409(dPdxy2) - 1412: 7(f16vec4) ImageSampleExplicitLod 1407 1408 Grad 1410 1411 - 1413: 7(f16vec4) Load 1390(texel) - 1414: 7(f16vec4) FAdd 1413 1412 - Store 1390(texel) 1414 - 1415: 143 Load 145(s2D) - 1416:154(f16vec2) Load 156(f16c2) - 1418:154(f16vec2) Load 1417(f16dPdxy2) - 1419:154(f16vec2) Load 1417(f16dPdxy2) - 1420: 7(f16vec4) ImageSampleExplicitLod 1415 1416 Grad 1418 1419 - 1421: 7(f16vec4) Load 1390(texel) - 1422: 7(f16vec4) FAdd 1421 1420 - Store 1390(texel) 1422 - 1423: 163 Load 165(s3D) - 1424: 167(fvec3) Load 169(c3) - 1426: 167(fvec3) Load 1425(dPdxy3) - 1427: 167(fvec3) Load 1425(dPdxy3) - 1428: 7(f16vec4) ImageSampleExplicitLod 1423 1424 Grad 1426 1427 - 1429: 7(f16vec4) Load 1390(texel) - 1430: 7(f16vec4) FAdd 1429 1428 - Store 1390(texel) 1430 - 1431: 163 Load 165(s3D) - 1432:175(f16vec3) Load 177(f16c3) - 1434:175(f16vec3) Load 1433(f16dPdxy3) - 1435:175(f16vec3) Load 1433(f16dPdxy3) - 1436: 7(f16vec4) ImageSampleExplicitLod 1431 1432 Grad 1434 1435 + 1395: 7(f16vec4) ImageSampleExplicitLod 1391 1392 Grad 1394 1394 + 1396: 7(f16vec4) Load 1390(texel) + 1397: 7(f16vec4) FAdd 1396 1395 + Store 1390(texel) 1397 + 1398: 123 Load 125(s1D) + 1399:6(float16_t) Load 135(f16c1) + 1401:6(float16_t) Load 1400(f16dPdxy1) + 1402: 7(f16vec4) ImageSampleExplicitLod 1398 1399 Grad 1401 1401 + 1403: 7(f16vec4) Load 1390(texel) + 1404: 7(f16vec4) FAdd 1403 1402 + Store 1390(texel) 1404 + 1405: 143 Load 145(s2D) + 1406: 53(fvec2) Load 148(c2) + 1408: 53(fvec2) Load 1407(dPdxy2) + 1409: 7(f16vec4) ImageSampleExplicitLod 1405 1406 Grad 1408 1408 + 1410: 7(f16vec4) Load 1390(texel) + 1411: 7(f16vec4) FAdd 1410 1409 + Store 1390(texel) 1411 + 1412: 143 Load 145(s2D) + 1413:154(f16vec2) Load 156(f16c2) + 1415:154(f16vec2) Load 1414(f16dPdxy2) + 1416: 7(f16vec4) ImageSampleExplicitLod 1412 1413 Grad 1415 1415 + 1417: 7(f16vec4) Load 1390(texel) + 1418: 7(f16vec4) FAdd 1417 1416 + Store 1390(texel) 1418 + 1419: 163 Load 165(s3D) + 1420: 167(fvec3) Load 169(c3) + 1422: 167(fvec3) Load 1421(dPdxy3) + 1423: 7(f16vec4) ImageSampleExplicitLod 1419 1420 Grad 1422 1422 + 1424: 7(f16vec4) Load 1390(texel) + 1425: 7(f16vec4) FAdd 1424 1423 + Store 1390(texel) 1425 + 1426: 163 Load 165(s3D) + 1427:175(f16vec3) Load 177(f16c3) + 1429:175(f16vec3) Load 1428(f16dPdxy3) + 1430: 7(f16vec4) ImageSampleExplicitLod 1426 1427 Grad 1429 1429 + 1431: 7(f16vec4) Load 1390(texel) + 1432: 7(f16vec4) FAdd 1431 1430 + Store 1390(texel) 1432 + 1433: 184 Load 186(sCube) + 1434: 167(fvec3) Load 169(c3) + 1435: 167(fvec3) Load 1421(dPdxy3) + 1436: 7(f16vec4) ImageSampleExplicitLod 1433 1434 Grad 1435 1435 1437: 7(f16vec4) Load 1390(texel) 1438: 7(f16vec4) FAdd 1437 1436 Store 1390(texel) 1438 1439: 184 Load 186(sCube) - 1440: 167(fvec3) Load 169(c3) - 1441: 167(fvec3) Load 1425(dPdxy3) - 1442: 167(fvec3) Load 1425(dPdxy3) - 1443: 7(f16vec4) ImageSampleExplicitLod 1439 1440 Grad 1441 1442 - 1444: 7(f16vec4) Load 1390(texel) - 1445: 7(f16vec4) FAdd 1444 1443 - Store 1390(texel) 1445 - 1446: 184 Load 186(sCube) - 1447:175(f16vec3) Load 177(f16c3) - 1448:175(f16vec3) Load 1433(f16dPdxy3) - 1449:175(f16vec3) Load 1433(f16dPdxy3) - 1450: 7(f16vec4) ImageSampleExplicitLod 1446 1447 Grad 1448 1449 - 1451: 7(f16vec4) Load 1390(texel) - 1452: 7(f16vec4) FAdd 1451 1450 - Store 1390(texel) 1452 - 1453: 357 Load 359(s2DRect) - 1454: 53(fvec2) Load 148(c2) - 1455: 53(fvec2) Load 1409(dPdxy2) - 1456: 53(fvec2) Load 1409(dPdxy2) - 1457: 7(f16vec4) ImageSampleExplicitLod 1453 1454 Grad 1455 1456 - 1458: 7(f16vec4) Load 1390(texel) - 1459: 7(f16vec4) FAdd 1458 1457 - Store 1390(texel) 1459 - 1460: 357 Load 359(s2DRect) - 1461:154(f16vec2) Load 156(f16c2) - 1462:154(f16vec2) Load 1417(f16dPdxy2) - 1463:154(f16vec2) Load 1417(f16dPdxy2) - 1464: 7(f16vec4) ImageSampleExplicitLod 1460 1461 Grad 1462 1463 - 1465: 7(f16vec4) Load 1390(texel) - 1466: 7(f16vec4) FAdd 1465 1464 - Store 1390(texel) 1466 - 1467: 371 Load 373(s2DRectShadow) - 1468: 167(fvec3) Load 169(c3) - 1469: 53(fvec2) Load 1409(dPdxy2) - 1470: 53(fvec2) Load 1409(dPdxy2) - 1471: 52(float) CompositeExtract 1468 2 - 1472:6(float16_t) ImageSampleDrefExplicitLod 1467 1468 1471 Grad 1469 1470 - 1473: 208(ptr) AccessChain 1390(texel) 207 - 1474:6(float16_t) Load 1473 - 1475:6(float16_t) FAdd 1474 1472 - 1476: 208(ptr) AccessChain 1390(texel) 207 - Store 1476 1475 - 1477: 371 Load 373(s2DRectShadow) - 1478:154(f16vec2) Load 156(f16c2) - 1479: 52(float) Load 215(compare) - 1480:154(f16vec2) Load 1417(f16dPdxy2) - 1481:154(f16vec2) Load 1417(f16dPdxy2) - 1482:6(float16_t) ImageSampleDrefExplicitLod 1477 1478 1479 Grad 1480 1481 + 1440:175(f16vec3) Load 177(f16c3) + 1441:175(f16vec3) Load 1428(f16dPdxy3) + 1442: 7(f16vec4) ImageSampleExplicitLod 1439 1440 Grad 1441 1441 + 1443: 7(f16vec4) Load 1390(texel) + 1444: 7(f16vec4) FAdd 1443 1442 + Store 1390(texel) 1444 + 1445: 357 Load 359(s2DRect) + 1446: 53(fvec2) Load 148(c2) + 1447: 53(fvec2) Load 1407(dPdxy2) + 1448: 7(f16vec4) ImageSampleExplicitLod 1445 1446 Grad 1447 1447 + 1449: 7(f16vec4) Load 1390(texel) + 1450: 7(f16vec4) FAdd 1449 1448 + Store 1390(texel) 1450 + 1451: 357 Load 359(s2DRect) + 1452:154(f16vec2) Load 156(f16c2) + 1453:154(f16vec2) Load 1414(f16dPdxy2) + 1454: 7(f16vec4) ImageSampleExplicitLod 1451 1452 Grad 1453 1453 + 1455: 7(f16vec4) Load 1390(texel) + 1456: 7(f16vec4) FAdd 1455 1454 + Store 1390(texel) 1456 + 1457: 371 Load 373(s2DRectShadow) + 1458: 167(fvec3) Load 169(c3) + 1459: 53(fvec2) Load 1407(dPdxy2) + 1460: 52(float) CompositeExtract 1458 2 + 1461:6(float16_t) ImageSampleDrefExplicitLod 1457 1458 1460 Grad 1459 1459 + 1462: 208(ptr) AccessChain 1390(texel) 207 + 1463:6(float16_t) Load 1462 + 1464:6(float16_t) FAdd 1463 1461 + 1465: 208(ptr) AccessChain 1390(texel) 207 + Store 1465 1464 + 1466: 371 Load 373(s2DRectShadow) + 1467:154(f16vec2) Load 156(f16c2) + 1468: 52(float) Load 215(compare) + 1469:154(f16vec2) Load 1414(f16dPdxy2) + 1470:6(float16_t) ImageSampleDrefExplicitLod 1466 1467 1468 Grad 1469 1469 + 1471: 208(ptr) AccessChain 1390(texel) 207 + 1472:6(float16_t) Load 1471 + 1473:6(float16_t) FAdd 1472 1470 + 1474: 208(ptr) AccessChain 1390(texel) 207 + Store 1474 1473 + 1475: 199 Load 201(s1DShadow) + 1476: 167(fvec3) Load 169(c3) + 1477: 52(float) Load 1393(dPdxy1) + 1478: 52(float) CompositeExtract 1476 2 + 1479:6(float16_t) ImageSampleDrefExplicitLod 1475 1476 1478 Grad 1477 1477 + 1480: 208(ptr) AccessChain 1390(texel) 207 + 1481:6(float16_t) Load 1480 + 1482:6(float16_t) FAdd 1481 1479 1483: 208(ptr) AccessChain 1390(texel) 207 - 1484:6(float16_t) Load 1483 - 1485:6(float16_t) FAdd 1484 1482 - 1486: 208(ptr) AccessChain 1390(texel) 207 - Store 1486 1485 - 1487: 199 Load 201(s1DShadow) - 1488: 167(fvec3) Load 169(c3) - 1489: 52(float) Load 1393(dPdxy1) - 1490: 52(float) Load 1393(dPdxy1) - 1491: 52(float) CompositeExtract 1488 2 - 1492:6(float16_t) ImageSampleDrefExplicitLod 1487 1488 1491 Grad 1489 1490 - 1493: 208(ptr) AccessChain 1390(texel) 207 - 1494:6(float16_t) Load 1493 - 1495:6(float16_t) FAdd 1494 1492 - 1496: 208(ptr) AccessChain 1390(texel) 207 - Store 1496 1495 - 1497: 199 Load 201(s1DShadow) - 1498:154(f16vec2) Load 156(f16c2) - 1499: 52(float) Load 215(compare) - 1500:6(float16_t) Load 1401(f16dPdxy1) - 1501:6(float16_t) Load 1401(f16dPdxy1) - 1502:6(float16_t) ImageSampleDrefExplicitLod 1497 1498 1499 Grad 1500 1501 - 1503: 208(ptr) AccessChain 1390(texel) 207 - 1504:6(float16_t) Load 1503 - 1505:6(float16_t) FAdd 1504 1502 - 1506: 208(ptr) AccessChain 1390(texel) 207 - Store 1506 1505 - 1507: 224 Load 226(s2DShadow) - 1508: 167(fvec3) Load 169(c3) - 1509: 53(fvec2) Load 1409(dPdxy2) - 1510: 53(fvec2) Load 1409(dPdxy2) - 1511: 52(float) CompositeExtract 1508 2 - 1512:6(float16_t) ImageSampleDrefExplicitLod 1507 1508 1511 Grad 1509 1510 - 1513: 208(ptr) AccessChain 1390(texel) 207 - 1514:6(float16_t) Load 1513 - 1515:6(float16_t) FAdd 1514 1512 + Store 1483 1482 + 1484: 199 Load 201(s1DShadow) + 1485:154(f16vec2) Load 156(f16c2) + 1486: 52(float) Load 215(compare) + 1487:6(float16_t) Load 1400(f16dPdxy1) + 1488:6(float16_t) ImageSampleDrefExplicitLod 1484 1485 1486 Grad 1487 1487 + 1489: 208(ptr) AccessChain 1390(texel) 207 + 1490:6(float16_t) Load 1489 + 1491:6(float16_t) FAdd 1490 1488 + 1492: 208(ptr) AccessChain 1390(texel) 207 + Store 1492 1491 + 1493: 224 Load 226(s2DShadow) + 1494: 167(fvec3) Load 169(c3) + 1495: 53(fvec2) Load 1407(dPdxy2) + 1496: 52(float) CompositeExtract 1494 2 + 1497:6(float16_t) ImageSampleDrefExplicitLod 1493 1494 1496 Grad 1495 1495 + 1498: 208(ptr) AccessChain 1390(texel) 207 + 1499:6(float16_t) Load 1498 + 1500:6(float16_t) FAdd 1499 1497 + 1501: 208(ptr) AccessChain 1390(texel) 207 + Store 1501 1500 + 1502: 224 Load 226(s2DShadow) + 1503:154(f16vec2) Load 156(f16c2) + 1504: 52(float) Load 215(compare) + 1505:154(f16vec2) Load 1414(f16dPdxy2) + 1506:6(float16_t) ImageSampleDrefExplicitLod 1502 1503 1504 Grad 1505 1505 + 1507: 208(ptr) AccessChain 1390(texel) 207 + 1508:6(float16_t) Load 1507 + 1509:6(float16_t) FAdd 1508 1506 + 1510: 208(ptr) AccessChain 1390(texel) 207 + Store 1510 1509 + 1511: 245 Load 247(sCubeShadow) + 1512: 249(fvec4) Load 251(c4) + 1513: 167(fvec3) Load 1421(dPdxy3) + 1514: 52(float) CompositeExtract 1512 3 + 1515:6(float16_t) ImageSampleDrefExplicitLod 1511 1512 1514 Grad 1513 1513 1516: 208(ptr) AccessChain 1390(texel) 207 - Store 1516 1515 - 1517: 224 Load 226(s2DShadow) - 1518:154(f16vec2) Load 156(f16c2) - 1519: 52(float) Load 215(compare) - 1520:154(f16vec2) Load 1417(f16dPdxy2) - 1521:154(f16vec2) Load 1417(f16dPdxy2) - 1522:6(float16_t) ImageSampleDrefExplicitLod 1517 1518 1519 Grad 1520 1521 - 1523: 208(ptr) AccessChain 1390(texel) 207 - 1524:6(float16_t) Load 1523 - 1525:6(float16_t) FAdd 1524 1522 - 1526: 208(ptr) AccessChain 1390(texel) 207 - Store 1526 1525 - 1527: 245 Load 247(sCubeShadow) - 1528: 249(fvec4) Load 251(c4) - 1529: 167(fvec3) Load 1425(dPdxy3) - 1530: 167(fvec3) Load 1425(dPdxy3) - 1531: 52(float) CompositeExtract 1528 3 - 1532:6(float16_t) ImageSampleDrefExplicitLod 1527 1528 1531 Grad 1529 1530 - 1533: 208(ptr) AccessChain 1390(texel) 207 - 1534:6(float16_t) Load 1533 - 1535:6(float16_t) FAdd 1534 1532 - 1536: 208(ptr) AccessChain 1390(texel) 207 - Store 1536 1535 - 1537: 245 Load 247(sCubeShadow) - 1538:175(f16vec3) Load 177(f16c3) - 1539: 52(float) Load 215(compare) - 1540:175(f16vec3) Load 1433(f16dPdxy3) - 1541:175(f16vec3) Load 1433(f16dPdxy3) - 1542:6(float16_t) ImageSampleDrefExplicitLod 1537 1538 1539 Grad 1540 1541 - 1543: 208(ptr) AccessChain 1390(texel) 207 - 1544:6(float16_t) Load 1543 - 1545:6(float16_t) FAdd 1544 1542 - 1546: 208(ptr) AccessChain 1390(texel) 207 - Store 1546 1545 - 1547: 269 Load 271(s1DArray) - 1548: 53(fvec2) Load 148(c2) - 1549: 52(float) Load 1393(dPdxy1) - 1550: 52(float) Load 1393(dPdxy1) - 1551: 7(f16vec4) ImageSampleExplicitLod 1547 1548 Grad 1549 1550 - 1552: 7(f16vec4) Load 1390(texel) - 1553: 7(f16vec4) FAdd 1552 1551 - Store 1390(texel) 1553 - 1554: 269 Load 271(s1DArray) - 1555:154(f16vec2) Load 156(f16c2) - 1556:6(float16_t) Load 1401(f16dPdxy1) - 1557:6(float16_t) Load 1401(f16dPdxy1) - 1558: 7(f16vec4) ImageSampleExplicitLod 1554 1555 Grad 1556 1557 - 1559: 7(f16vec4) Load 1390(texel) - 1560: 7(f16vec4) FAdd 1559 1558 - Store 1390(texel) 1560 - 1561: 284 Load 286(s2DArray) - 1562: 167(fvec3) Load 169(c3) - 1563: 53(fvec2) Load 1409(dPdxy2) - 1564: 53(fvec2) Load 1409(dPdxy2) - 1565: 7(f16vec4) ImageSampleExplicitLod 1561 1562 Grad 1563 1564 - 1566: 7(f16vec4) Load 1390(texel) - 1567: 7(f16vec4) FAdd 1566 1565 - Store 1390(texel) 1567 - 1568: 284 Load 286(s2DArray) - 1569:175(f16vec3) Load 177(f16c3) - 1570:154(f16vec2) Load 1417(f16dPdxy2) - 1571:154(f16vec2) Load 1417(f16dPdxy2) - 1572: 7(f16vec4) ImageSampleExplicitLod 1568 1569 Grad 1570 1571 - 1573: 7(f16vec4) Load 1390(texel) - 1574: 7(f16vec4) FAdd 1573 1572 - Store 1390(texel) 1574 - 1575: 316 Load 318(s1DArrayShadow) - 1576: 167(fvec3) Load 169(c3) - 1577: 52(float) Load 1393(dPdxy1) - 1578: 52(float) Load 1393(dPdxy1) - 1579: 52(float) CompositeExtract 1576 2 - 1580:6(float16_t) ImageSampleDrefExplicitLod 1575 1576 1579 Grad 1577 1578 - 1581: 208(ptr) AccessChain 1390(texel) 207 - 1582:6(float16_t) Load 1581 - 1583:6(float16_t) FAdd 1582 1580 - 1584: 208(ptr) AccessChain 1390(texel) 207 - Store 1584 1583 - 1585: 316 Load 318(s1DArrayShadow) - 1586:154(f16vec2) Load 156(f16c2) - 1587: 52(float) Load 215(compare) - 1588:6(float16_t) Load 1401(f16dPdxy1) - 1589:6(float16_t) Load 1401(f16dPdxy1) - 1590:6(float16_t) ImageSampleDrefExplicitLod 1585 1586 1587 Grad 1588 1589 - 1591: 208(ptr) AccessChain 1390(texel) 207 - 1592:6(float16_t) Load 1591 - 1593:6(float16_t) FAdd 1592 1590 - 1594: 208(ptr) AccessChain 1390(texel) 207 - Store 1594 1593 - 1595: 337 Load 339(s2DArrayShadow) - 1596: 249(fvec4) Load 251(c4) - 1597: 53(fvec2) Load 1409(dPdxy2) - 1598: 53(fvec2) Load 1409(dPdxy2) - 1599: 52(float) CompositeExtract 1596 3 - 1600:6(float16_t) ImageSampleDrefExplicitLod 1595 1596 1599 Grad 1597 1598 - 1601: 208(ptr) AccessChain 1390(texel) 207 - 1602:6(float16_t) Load 1601 - 1603:6(float16_t) FAdd 1602 1600 - 1604: 208(ptr) AccessChain 1390(texel) 207 - Store 1604 1603 - 1605: 337 Load 339(s2DArrayShadow) - 1606:175(f16vec3) Load 177(f16c3) - 1607: 52(float) Load 215(compare) - 1608:154(f16vec2) Load 1417(f16dPdxy2) - 1609:154(f16vec2) Load 1417(f16dPdxy2) - 1610:6(float16_t) ImageSampleDrefExplicitLod 1605 1606 1607 Grad 1608 1609 - 1611: 208(ptr) AccessChain 1390(texel) 207 - 1612:6(float16_t) Load 1611 - 1613:6(float16_t) FAdd 1612 1610 - 1614: 208(ptr) AccessChain 1390(texel) 207 - Store 1614 1613 - 1615: 299 Load 301(sCubeArray) - 1616: 249(fvec4) Load 251(c4) - 1617: 167(fvec3) Load 1425(dPdxy3) - 1618: 167(fvec3) Load 1425(dPdxy3) - 1619: 7(f16vec4) ImageSampleExplicitLod 1615 1616 Grad 1617 1618 - 1620: 7(f16vec4) Load 1390(texel) - 1621: 7(f16vec4) FAdd 1620 1619 - Store 1390(texel) 1621 - 1622: 299 Load 301(sCubeArray) - 1623: 7(f16vec4) Load 309(f16c4) - 1624:175(f16vec3) Load 1433(f16dPdxy3) - 1625:175(f16vec3) Load 1433(f16dPdxy3) - 1626: 7(f16vec4) ImageSampleExplicitLod 1622 1623 Grad 1624 1625 - 1627: 7(f16vec4) Load 1390(texel) - 1628: 7(f16vec4) FAdd 1627 1626 - Store 1390(texel) 1628 - 1629: 7(f16vec4) Load 1390(texel) - ReturnValue 1629 + 1517:6(float16_t) Load 1516 + 1518:6(float16_t) FAdd 1517 1515 + 1519: 208(ptr) AccessChain 1390(texel) 207 + Store 1519 1518 + 1520: 245 Load 247(sCubeShadow) + 1521:175(f16vec3) Load 177(f16c3) + 1522: 52(float) Load 215(compare) + 1523:175(f16vec3) Load 1428(f16dPdxy3) + 1524:6(float16_t) ImageSampleDrefExplicitLod 1520 1521 1522 Grad 1523 1523 + 1525: 208(ptr) AccessChain 1390(texel) 207 + 1526:6(float16_t) Load 1525 + 1527:6(float16_t) FAdd 1526 1524 + 1528: 208(ptr) AccessChain 1390(texel) 207 + Store 1528 1527 + 1529: 269 Load 271(s1DArray) + 1530: 53(fvec2) Load 148(c2) + 1531: 52(float) Load 1393(dPdxy1) + 1532: 7(f16vec4) ImageSampleExplicitLod 1529 1530 Grad 1531 1531 + 1533: 7(f16vec4) Load 1390(texel) + 1534: 7(f16vec4) FAdd 1533 1532 + Store 1390(texel) 1534 + 1535: 269 Load 271(s1DArray) + 1536:154(f16vec2) Load 156(f16c2) + 1537:6(float16_t) Load 1400(f16dPdxy1) + 1538: 7(f16vec4) ImageSampleExplicitLod 1535 1536 Grad 1537 1537 + 1539: 7(f16vec4) Load 1390(texel) + 1540: 7(f16vec4) FAdd 1539 1538 + Store 1390(texel) 1540 + 1541: 284 Load 286(s2DArray) + 1542: 167(fvec3) Load 169(c3) + 1543: 53(fvec2) Load 1407(dPdxy2) + 1544: 7(f16vec4) ImageSampleExplicitLod 1541 1542 Grad 1543 1543 + 1545: 7(f16vec4) Load 1390(texel) + 1546: 7(f16vec4) FAdd 1545 1544 + Store 1390(texel) 1546 + 1547: 284 Load 286(s2DArray) + 1548:175(f16vec3) Load 177(f16c3) + 1549:154(f16vec2) Load 1414(f16dPdxy2) + 1550: 7(f16vec4) ImageSampleExplicitLod 1547 1548 Grad 1549 1549 + 1551: 7(f16vec4) Load 1390(texel) + 1552: 7(f16vec4) FAdd 1551 1550 + Store 1390(texel) 1552 + 1553: 316 Load 318(s1DArrayShadow) + 1554: 167(fvec3) Load 169(c3) + 1555: 52(float) Load 1393(dPdxy1) + 1556: 52(float) CompositeExtract 1554 2 + 1557:6(float16_t) ImageSampleDrefExplicitLod 1553 1554 1556 Grad 1555 1555 + 1558: 208(ptr) AccessChain 1390(texel) 207 + 1559:6(float16_t) Load 1558 + 1560:6(float16_t) FAdd 1559 1557 + 1561: 208(ptr) AccessChain 1390(texel) 207 + Store 1561 1560 + 1562: 316 Load 318(s1DArrayShadow) + 1563:154(f16vec2) Load 156(f16c2) + 1564: 52(float) Load 215(compare) + 1565:6(float16_t) Load 1400(f16dPdxy1) + 1566:6(float16_t) ImageSampleDrefExplicitLod 1562 1563 1564 Grad 1565 1565 + 1567: 208(ptr) AccessChain 1390(texel) 207 + 1568:6(float16_t) Load 1567 + 1569:6(float16_t) FAdd 1568 1566 + 1570: 208(ptr) AccessChain 1390(texel) 207 + Store 1570 1569 + 1571: 337 Load 339(s2DArrayShadow) + 1572: 249(fvec4) Load 251(c4) + 1573: 53(fvec2) Load 1407(dPdxy2) + 1574: 52(float) CompositeExtract 1572 3 + 1575:6(float16_t) ImageSampleDrefExplicitLod 1571 1572 1574 Grad 1573 1573 + 1576: 208(ptr) AccessChain 1390(texel) 207 + 1577:6(float16_t) Load 1576 + 1578:6(float16_t) FAdd 1577 1575 + 1579: 208(ptr) AccessChain 1390(texel) 207 + Store 1579 1578 + 1580: 337 Load 339(s2DArrayShadow) + 1581:175(f16vec3) Load 177(f16c3) + 1582: 52(float) Load 215(compare) + 1583:154(f16vec2) Load 1414(f16dPdxy2) + 1584:6(float16_t) ImageSampleDrefExplicitLod 1580 1581 1582 Grad 1583 1583 + 1585: 208(ptr) AccessChain 1390(texel) 207 + 1586:6(float16_t) Load 1585 + 1587:6(float16_t) FAdd 1586 1584 + 1588: 208(ptr) AccessChain 1390(texel) 207 + Store 1588 1587 + 1589: 299 Load 301(sCubeArray) + 1590: 249(fvec4) Load 251(c4) + 1591: 167(fvec3) Load 1421(dPdxy3) + 1592: 7(f16vec4) ImageSampleExplicitLod 1589 1590 Grad 1591 1591 + 1593: 7(f16vec4) Load 1390(texel) + 1594: 7(f16vec4) FAdd 1593 1592 + Store 1390(texel) 1594 + 1595: 299 Load 301(sCubeArray) + 1596: 7(f16vec4) Load 309(f16c4) + 1597:175(f16vec3) Load 1428(f16dPdxy3) + 1598: 7(f16vec4) ImageSampleExplicitLod 1595 1596 Grad 1597 1597 + 1599: 7(f16vec4) Load 1390(texel) + 1600: 7(f16vec4) FAdd 1599 1598 + Store 1390(texel) 1600 + 1601: 7(f16vec4) Load 1390(texel) + ReturnValue 1601 FunctionEnd 29(testTextureGradOffset(): 7(f16vec4) Function None 8 30: Label - 1632(texel): 64(ptr) Variable Function - Store 1632(texel) 121 - 1633: 123 Load 125(s1D) - 1634: 52(float) Load 128(c1) - 1635: 52(float) Load 1393(dPdxy1) - 1636: 52(float) Load 1393(dPdxy1) - 1637: 7(f16vec4) ImageSampleExplicitLod 1633 1634 Grad ConstOffset 1635 1636 709 - 1638: 7(f16vec4) Load 1632(texel) - 1639: 7(f16vec4) FAdd 1638 1637 - Store 1632(texel) 1639 - 1640: 123 Load 125(s1D) - 1641:6(float16_t) Load 135(f16c1) - 1642:6(float16_t) Load 1401(f16dPdxy1) - 1643:6(float16_t) Load 1401(f16dPdxy1) - 1644: 7(f16vec4) ImageSampleExplicitLod 1640 1641 Grad ConstOffset 1642 1643 709 - 1645: 7(f16vec4) Load 1632(texel) + 1604(texel): 64(ptr) Variable Function + Store 1604(texel) 121 + 1605: 123 Load 125(s1D) + 1606: 52(float) Load 128(c1) + 1607: 52(float) Load 1393(dPdxy1) + 1608: 7(f16vec4) ImageSampleExplicitLod 1605 1606 Grad ConstOffset 1607 1607 709 + 1609: 7(f16vec4) Load 1604(texel) + 1610: 7(f16vec4) FAdd 1609 1608 + Store 1604(texel) 1610 + 1611: 123 Load 125(s1D) + 1612:6(float16_t) Load 135(f16c1) + 1613:6(float16_t) Load 1400(f16dPdxy1) + 1614: 7(f16vec4) ImageSampleExplicitLod 1611 1612 Grad ConstOffset 1613 1613 709 + 1615: 7(f16vec4) Load 1604(texel) + 1616: 7(f16vec4) FAdd 1615 1614 + Store 1604(texel) 1616 + 1617: 143 Load 145(s2D) + 1618: 53(fvec2) Load 148(c2) + 1619: 53(fvec2) Load 1407(dPdxy2) + 1620: 7(f16vec4) ImageSampleExplicitLod 1617 1618 Grad ConstOffset 1619 1619 722 + 1621: 7(f16vec4) Load 1604(texel) + 1622: 7(f16vec4) FAdd 1621 1620 + Store 1604(texel) 1622 + 1623: 143 Load 145(s2D) + 1624:154(f16vec2) Load 156(f16c2) + 1625:154(f16vec2) Load 1414(f16dPdxy2) + 1626: 7(f16vec4) ImageSampleExplicitLod 1623 1624 Grad ConstOffset 1625 1625 722 + 1627: 7(f16vec4) Load 1604(texel) + 1628: 7(f16vec4) FAdd 1627 1626 + Store 1604(texel) 1628 + 1629: 163 Load 165(s3D) + 1630: 167(fvec3) Load 169(c3) + 1631: 167(fvec3) Load 1421(dPdxy3) + 1632: 7(f16vec4) ImageSampleExplicitLod 1629 1630 Grad ConstOffset 1631 1631 735 + 1633: 7(f16vec4) Load 1604(texel) + 1634: 7(f16vec4) FAdd 1633 1632 + Store 1604(texel) 1634 + 1635: 163 Load 165(s3D) + 1636:175(f16vec3) Load 177(f16c3) + 1637:175(f16vec3) Load 1428(f16dPdxy3) + 1638: 7(f16vec4) ImageSampleExplicitLod 1635 1636 Grad ConstOffset 1637 1637 735 + 1639: 7(f16vec4) Load 1604(texel) + 1640: 7(f16vec4) FAdd 1639 1638 + Store 1604(texel) 1640 + 1641: 357 Load 359(s2DRect) + 1642: 53(fvec2) Load 148(c2) + 1643: 53(fvec2) Load 1407(dPdxy2) + 1644: 7(f16vec4) ImageSampleExplicitLod 1641 1642 Grad ConstOffset 1643 1643 722 + 1645: 7(f16vec4) Load 1604(texel) 1646: 7(f16vec4) FAdd 1645 1644 - Store 1632(texel) 1646 - 1647: 143 Load 145(s2D) - 1648: 53(fvec2) Load 148(c2) - 1649: 53(fvec2) Load 1409(dPdxy2) - 1650: 53(fvec2) Load 1409(dPdxy2) - 1651: 7(f16vec4) ImageSampleExplicitLod 1647 1648 Grad ConstOffset 1649 1650 722 - 1652: 7(f16vec4) Load 1632(texel) - 1653: 7(f16vec4) FAdd 1652 1651 - Store 1632(texel) 1653 - 1654: 143 Load 145(s2D) - 1655:154(f16vec2) Load 156(f16c2) - 1656:154(f16vec2) Load 1417(f16dPdxy2) - 1657:154(f16vec2) Load 1417(f16dPdxy2) - 1658: 7(f16vec4) ImageSampleExplicitLod 1654 1655 Grad ConstOffset 1656 1657 722 - 1659: 7(f16vec4) Load 1632(texel) - 1660: 7(f16vec4) FAdd 1659 1658 - Store 1632(texel) 1660 - 1661: 163 Load 165(s3D) - 1662: 167(fvec3) Load 169(c3) - 1663: 167(fvec3) Load 1425(dPdxy3) - 1664: 167(fvec3) Load 1425(dPdxy3) - 1665: 7(f16vec4) ImageSampleExplicitLod 1661 1662 Grad ConstOffset 1663 1664 735 - 1666: 7(f16vec4) Load 1632(texel) - 1667: 7(f16vec4) FAdd 1666 1665 - Store 1632(texel) 1667 - 1668: 163 Load 165(s3D) - 1669:175(f16vec3) Load 177(f16c3) - 1670:175(f16vec3) Load 1433(f16dPdxy3) - 1671:175(f16vec3) Load 1433(f16dPdxy3) - 1672: 7(f16vec4) ImageSampleExplicitLod 1668 1669 Grad ConstOffset 1670 1671 735 - 1673: 7(f16vec4) Load 1632(texel) - 1674: 7(f16vec4) FAdd 1673 1672 - Store 1632(texel) 1674 - 1675: 357 Load 359(s2DRect) - 1676: 53(fvec2) Load 148(c2) - 1677: 53(fvec2) Load 1409(dPdxy2) - 1678: 53(fvec2) Load 1409(dPdxy2) - 1679: 7(f16vec4) ImageSampleExplicitLod 1675 1676 Grad ConstOffset 1677 1678 722 - 1680: 7(f16vec4) Load 1632(texel) - 1681: 7(f16vec4) FAdd 1680 1679 - Store 1632(texel) 1681 - 1682: 357 Load 359(s2DRect) - 1683:154(f16vec2) Load 156(f16c2) - 1684:154(f16vec2) Load 1417(f16dPdxy2) - 1685:154(f16vec2) Load 1417(f16dPdxy2) - 1686: 7(f16vec4) ImageSampleExplicitLod 1682 1683 Grad ConstOffset 1684 1685 722 - 1687: 7(f16vec4) Load 1632(texel) - 1688: 7(f16vec4) FAdd 1687 1686 - Store 1632(texel) 1688 - 1689: 371 Load 373(s2DRectShadow) + Store 1604(texel) 1646 + 1647: 357 Load 359(s2DRect) + 1648:154(f16vec2) Load 156(f16c2) + 1649:154(f16vec2) Load 1414(f16dPdxy2) + 1650: 7(f16vec4) ImageSampleExplicitLod 1647 1648 Grad ConstOffset 1649 1649 722 + 1651: 7(f16vec4) Load 1604(texel) + 1652: 7(f16vec4) FAdd 1651 1650 + Store 1604(texel) 1652 + 1653: 371 Load 373(s2DRectShadow) + 1654: 167(fvec3) Load 169(c3) + 1655: 53(fvec2) Load 1407(dPdxy2) + 1656: 52(float) CompositeExtract 1654 2 + 1657:6(float16_t) ImageSampleDrefExplicitLod 1653 1654 1656 Grad ConstOffset 1655 1655 722 + 1658: 208(ptr) AccessChain 1604(texel) 207 + 1659:6(float16_t) Load 1658 + 1660:6(float16_t) FAdd 1659 1657 + 1661: 208(ptr) AccessChain 1604(texel) 207 + Store 1661 1660 + 1662: 371 Load 373(s2DRectShadow) + 1663:154(f16vec2) Load 156(f16c2) + 1664: 52(float) Load 215(compare) + 1665:154(f16vec2) Load 1414(f16dPdxy2) + 1666:6(float16_t) ImageSampleDrefExplicitLod 1662 1663 1664 Grad ConstOffset 1665 1665 722 + 1667: 208(ptr) AccessChain 1604(texel) 207 + 1668:6(float16_t) Load 1667 + 1669:6(float16_t) FAdd 1668 1666 + 1670: 208(ptr) AccessChain 1604(texel) 207 + Store 1670 1669 + 1671: 199 Load 201(s1DShadow) + 1672: 167(fvec3) Load 169(c3) + 1673: 52(float) Load 1393(dPdxy1) + 1674: 52(float) CompositeExtract 1672 2 + 1675:6(float16_t) ImageSampleDrefExplicitLod 1671 1672 1674 Grad ConstOffset 1673 1673 709 + 1676: 208(ptr) AccessChain 1604(texel) 207 + 1677:6(float16_t) Load 1676 + 1678:6(float16_t) FAdd 1677 1675 + 1679: 208(ptr) AccessChain 1604(texel) 207 + Store 1679 1678 + 1680: 199 Load 201(s1DShadow) + 1681:154(f16vec2) Load 156(f16c2) + 1682: 52(float) Load 215(compare) + 1683:6(float16_t) Load 1400(f16dPdxy1) + 1684:6(float16_t) ImageSampleDrefExplicitLod 1680 1681 1682 Grad ConstOffset 1683 1683 709 + 1685: 208(ptr) AccessChain 1604(texel) 207 + 1686:6(float16_t) Load 1685 + 1687:6(float16_t) FAdd 1686 1684 + 1688: 208(ptr) AccessChain 1604(texel) 207 + Store 1688 1687 + 1689: 224 Load 226(s2DShadow) 1690: 167(fvec3) Load 169(c3) - 1691: 53(fvec2) Load 1409(dPdxy2) - 1692: 53(fvec2) Load 1409(dPdxy2) - 1693: 52(float) CompositeExtract 1690 2 - 1694:6(float16_t) ImageSampleDrefExplicitLod 1689 1690 1693 Grad ConstOffset 1691 1692 722 - 1695: 208(ptr) AccessChain 1632(texel) 207 - 1696:6(float16_t) Load 1695 - 1697:6(float16_t) FAdd 1696 1694 - 1698: 208(ptr) AccessChain 1632(texel) 207 - Store 1698 1697 - 1699: 371 Load 373(s2DRectShadow) - 1700:154(f16vec2) Load 156(f16c2) - 1701: 52(float) Load 215(compare) - 1702:154(f16vec2) Load 1417(f16dPdxy2) - 1703:154(f16vec2) Load 1417(f16dPdxy2) - 1704:6(float16_t) ImageSampleDrefExplicitLod 1699 1700 1701 Grad ConstOffset 1702 1703 722 - 1705: 208(ptr) AccessChain 1632(texel) 207 - 1706:6(float16_t) Load 1705 - 1707:6(float16_t) FAdd 1706 1704 - 1708: 208(ptr) AccessChain 1632(texel) 207 - Store 1708 1707 - 1709: 199 Load 201(s1DShadow) - 1710: 167(fvec3) Load 169(c3) - 1711: 52(float) Load 1393(dPdxy1) - 1712: 52(float) Load 1393(dPdxy1) - 1713: 52(float) CompositeExtract 1710 2 - 1714:6(float16_t) ImageSampleDrefExplicitLod 1709 1710 1713 Grad ConstOffset 1711 1712 709 - 1715: 208(ptr) AccessChain 1632(texel) 207 - 1716:6(float16_t) Load 1715 - 1717:6(float16_t) FAdd 1716 1714 - 1718: 208(ptr) AccessChain 1632(texel) 207 - Store 1718 1717 - 1719: 199 Load 201(s1DShadow) - 1720:154(f16vec2) Load 156(f16c2) - 1721: 52(float) Load 215(compare) - 1722:6(float16_t) Load 1401(f16dPdxy1) - 1723:6(float16_t) Load 1401(f16dPdxy1) - 1724:6(float16_t) ImageSampleDrefExplicitLod 1719 1720 1721 Grad ConstOffset 1722 1723 709 - 1725: 208(ptr) AccessChain 1632(texel) 207 - 1726:6(float16_t) Load 1725 - 1727:6(float16_t) FAdd 1726 1724 - 1728: 208(ptr) AccessChain 1632(texel) 207 - Store 1728 1727 - 1729: 224 Load 226(s2DShadow) - 1730: 167(fvec3) Load 169(c3) - 1731: 53(fvec2) Load 1409(dPdxy2) - 1732: 53(fvec2) Load 1409(dPdxy2) - 1733: 52(float) CompositeExtract 1730 2 - 1734:6(float16_t) ImageSampleDrefExplicitLod 1729 1730 1733 Grad ConstOffset 1731 1732 722 - 1735: 208(ptr) AccessChain 1632(texel) 207 - 1736:6(float16_t) Load 1735 - 1737:6(float16_t) FAdd 1736 1734 - 1738: 208(ptr) AccessChain 1632(texel) 207 - Store 1738 1737 - 1739: 224 Load 226(s2DShadow) - 1740:154(f16vec2) Load 156(f16c2) - 1741: 52(float) Load 215(compare) - 1742:154(f16vec2) Load 1417(f16dPdxy2) - 1743:154(f16vec2) Load 1417(f16dPdxy2) - 1744:6(float16_t) ImageSampleDrefExplicitLod 1739 1740 1741 Grad ConstOffset 1742 1743 722 - 1745: 208(ptr) AccessChain 1632(texel) 207 + 1691: 53(fvec2) Load 1407(dPdxy2) + 1692: 52(float) CompositeExtract 1690 2 + 1693:6(float16_t) ImageSampleDrefExplicitLod 1689 1690 1692 Grad ConstOffset 1691 1691 722 + 1694: 208(ptr) AccessChain 1604(texel) 207 + 1695:6(float16_t) Load 1694 + 1696:6(float16_t) FAdd 1695 1693 + 1697: 208(ptr) AccessChain 1604(texel) 207 + Store 1697 1696 + 1698: 224 Load 226(s2DShadow) + 1699:154(f16vec2) Load 156(f16c2) + 1700: 52(float) Load 215(compare) + 1701:154(f16vec2) Load 1414(f16dPdxy2) + 1702:6(float16_t) ImageSampleDrefExplicitLod 1698 1699 1700 Grad ConstOffset 1701 1701 722 + 1703: 208(ptr) AccessChain 1604(texel) 207 + 1704:6(float16_t) Load 1703 + 1705:6(float16_t) FAdd 1704 1702 + 1706: 208(ptr) AccessChain 1604(texel) 207 + Store 1706 1705 + 1707: 269 Load 271(s1DArray) + 1708: 53(fvec2) Load 148(c2) + 1709: 52(float) Load 1393(dPdxy1) + 1710: 7(f16vec4) ImageSampleExplicitLod 1707 1708 Grad ConstOffset 1709 1709 709 + 1711: 7(f16vec4) Load 1604(texel) + 1712: 7(f16vec4) FAdd 1711 1710 + Store 1604(texel) 1712 + 1713: 269 Load 271(s1DArray) + 1714:154(f16vec2) Load 156(f16c2) + 1715:6(float16_t) Load 1400(f16dPdxy1) + 1716: 7(f16vec4) ImageSampleExplicitLod 1713 1714 Grad ConstOffset 1715 1715 709 + 1717: 7(f16vec4) Load 1604(texel) + 1718: 7(f16vec4) FAdd 1717 1716 + Store 1604(texel) 1718 + 1719: 284 Load 286(s2DArray) + 1720: 167(fvec3) Load 169(c3) + 1721: 53(fvec2) Load 1407(dPdxy2) + 1722: 7(f16vec4) ImageSampleExplicitLod 1719 1720 Grad ConstOffset 1721 1721 722 + 1723: 7(f16vec4) Load 1604(texel) + 1724: 7(f16vec4) FAdd 1723 1722 + Store 1604(texel) 1724 + 1725: 284 Load 286(s2DArray) + 1726:175(f16vec3) Load 177(f16c3) + 1727:154(f16vec2) Load 1414(f16dPdxy2) + 1728: 7(f16vec4) ImageSampleExplicitLod 1725 1726 Grad ConstOffset 1727 1727 722 + 1729: 7(f16vec4) Load 1604(texel) + 1730: 7(f16vec4) FAdd 1729 1728 + Store 1604(texel) 1730 + 1731: 316 Load 318(s1DArrayShadow) + 1732: 167(fvec3) Load 169(c3) + 1733: 52(float) Load 1393(dPdxy1) + 1734: 52(float) CompositeExtract 1732 2 + 1735:6(float16_t) ImageSampleDrefExplicitLod 1731 1732 1734 Grad ConstOffset 1733 1733 709 + 1736: 208(ptr) AccessChain 1604(texel) 207 + 1737:6(float16_t) Load 1736 + 1738:6(float16_t) FAdd 1737 1735 + 1739: 208(ptr) AccessChain 1604(texel) 207 + Store 1739 1738 + 1740: 316 Load 318(s1DArrayShadow) + 1741:154(f16vec2) Load 156(f16c2) + 1742: 52(float) Load 215(compare) + 1743:6(float16_t) Load 1400(f16dPdxy1) + 1744:6(float16_t) ImageSampleDrefExplicitLod 1740 1741 1742 Grad ConstOffset 1743 1743 709 + 1745: 208(ptr) AccessChain 1604(texel) 207 1746:6(float16_t) Load 1745 1747:6(float16_t) FAdd 1746 1744 - 1748: 208(ptr) AccessChain 1632(texel) 207 + 1748: 208(ptr) AccessChain 1604(texel) 207 Store 1748 1747 - 1749: 269 Load 271(s1DArray) - 1750: 53(fvec2) Load 148(c2) - 1751: 52(float) Load 1393(dPdxy1) - 1752: 52(float) Load 1393(dPdxy1) - 1753: 7(f16vec4) ImageSampleExplicitLod 1749 1750 Grad ConstOffset 1751 1752 709 - 1754: 7(f16vec4) Load 1632(texel) - 1755: 7(f16vec4) FAdd 1754 1753 - Store 1632(texel) 1755 - 1756: 269 Load 271(s1DArray) - 1757:154(f16vec2) Load 156(f16c2) - 1758:6(float16_t) Load 1401(f16dPdxy1) - 1759:6(float16_t) Load 1401(f16dPdxy1) - 1760: 7(f16vec4) ImageSampleExplicitLod 1756 1757 Grad ConstOffset 1758 1759 709 - 1761: 7(f16vec4) Load 1632(texel) - 1762: 7(f16vec4) FAdd 1761 1760 - Store 1632(texel) 1762 - 1763: 284 Load 286(s2DArray) - 1764: 167(fvec3) Load 169(c3) - 1765: 53(fvec2) Load 1409(dPdxy2) - 1766: 53(fvec2) Load 1409(dPdxy2) - 1767: 7(f16vec4) ImageSampleExplicitLod 1763 1764 Grad ConstOffset 1765 1766 722 - 1768: 7(f16vec4) Load 1632(texel) - 1769: 7(f16vec4) FAdd 1768 1767 - Store 1632(texel) 1769 - 1770: 284 Load 286(s2DArray) - 1771:175(f16vec3) Load 177(f16c3) - 1772:154(f16vec2) Load 1417(f16dPdxy2) - 1773:154(f16vec2) Load 1417(f16dPdxy2) - 1774: 7(f16vec4) ImageSampleExplicitLod 1770 1771 Grad ConstOffset 1772 1773 722 - 1775: 7(f16vec4) Load 1632(texel) - 1776: 7(f16vec4) FAdd 1775 1774 - Store 1632(texel) 1776 - 1777: 316 Load 318(s1DArrayShadow) - 1778: 167(fvec3) Load 169(c3) - 1779: 52(float) Load 1393(dPdxy1) - 1780: 52(float) Load 1393(dPdxy1) - 1781: 52(float) CompositeExtract 1778 2 - 1782:6(float16_t) ImageSampleDrefExplicitLod 1777 1778 1781 Grad ConstOffset 1779 1780 709 - 1783: 208(ptr) AccessChain 1632(texel) 207 - 1784:6(float16_t) Load 1783 - 1785:6(float16_t) FAdd 1784 1782 - 1786: 208(ptr) AccessChain 1632(texel) 207 - Store 1786 1785 - 1787: 316 Load 318(s1DArrayShadow) - 1788:154(f16vec2) Load 156(f16c2) - 1789: 52(float) Load 215(compare) - 1790:6(float16_t) Load 1401(f16dPdxy1) - 1791:6(float16_t) Load 1401(f16dPdxy1) - 1792:6(float16_t) ImageSampleDrefExplicitLod 1787 1788 1789 Grad ConstOffset 1790 1791 709 - 1793: 208(ptr) AccessChain 1632(texel) 207 - 1794:6(float16_t) Load 1793 - 1795:6(float16_t) FAdd 1794 1792 - 1796: 208(ptr) AccessChain 1632(texel) 207 - Store 1796 1795 - 1797: 337 Load 339(s2DArrayShadow) - 1798: 249(fvec4) Load 251(c4) - 1799: 53(fvec2) Load 1409(dPdxy2) - 1800: 53(fvec2) Load 1409(dPdxy2) - 1801: 52(float) CompositeExtract 1798 3 - 1802:6(float16_t) ImageSampleDrefExplicitLod 1797 1798 1801 Grad ConstOffset 1799 1800 722 - 1803: 208(ptr) AccessChain 1632(texel) 207 - 1804:6(float16_t) Load 1803 - 1805:6(float16_t) FAdd 1804 1802 - 1806: 208(ptr) AccessChain 1632(texel) 207 - Store 1806 1805 - 1807: 337 Load 339(s2DArrayShadow) - 1808:175(f16vec3) Load 177(f16c3) - 1809: 52(float) Load 215(compare) - 1810:154(f16vec2) Load 1417(f16dPdxy2) - 1811:154(f16vec2) Load 1417(f16dPdxy2) - 1812:6(float16_t) ImageSampleDrefExplicitLod 1807 1808 1809 Grad ConstOffset 1810 1811 722 - 1813: 208(ptr) AccessChain 1632(texel) 207 - 1814:6(float16_t) Load 1813 - 1815:6(float16_t) FAdd 1814 1812 - 1816: 208(ptr) AccessChain 1632(texel) 207 - Store 1816 1815 - 1817: 7(f16vec4) Load 1632(texel) - ReturnValue 1817 + 1749: 337 Load 339(s2DArrayShadow) + 1750: 249(fvec4) Load 251(c4) + 1751: 53(fvec2) Load 1407(dPdxy2) + 1752: 52(float) CompositeExtract 1750 3 + 1753:6(float16_t) ImageSampleDrefExplicitLod 1749 1750 1752 Grad ConstOffset 1751 1751 722 + 1754: 208(ptr) AccessChain 1604(texel) 207 + 1755:6(float16_t) Load 1754 + 1756:6(float16_t) FAdd 1755 1753 + 1757: 208(ptr) AccessChain 1604(texel) 207 + Store 1757 1756 + 1758: 337 Load 339(s2DArrayShadow) + 1759:175(f16vec3) Load 177(f16c3) + 1760: 52(float) Load 215(compare) + 1761:154(f16vec2) Load 1414(f16dPdxy2) + 1762:6(float16_t) ImageSampleDrefExplicitLod 1758 1759 1760 Grad ConstOffset 1761 1761 722 + 1763: 208(ptr) AccessChain 1604(texel) 207 + 1764:6(float16_t) Load 1763 + 1765:6(float16_t) FAdd 1764 1762 + 1766: 208(ptr) AccessChain 1604(texel) 207 + Store 1766 1765 + 1767: 7(f16vec4) Load 1604(texel) + ReturnValue 1767 FunctionEnd 31(testTextureProjGrad(): 7(f16vec4) Function None 8 32: Label - 1820(texel): 64(ptr) Variable Function - Store 1820(texel) 121 - 1821: 123 Load 125(s1D) - 1822: 53(fvec2) Load 148(c2) - 1823: 52(float) Load 1393(dPdxy1) - 1824: 52(float) Load 1393(dPdxy1) - 1825: 7(f16vec4) ImageSampleProjExplicitLod 1821 1822 Grad 1823 1824 - 1826: 7(f16vec4) Load 1820(texel) - 1827: 7(f16vec4) FAdd 1826 1825 - Store 1820(texel) 1827 - 1828: 123 Load 125(s1D) - 1829:154(f16vec2) Load 156(f16c2) - 1830:6(float16_t) Load 1401(f16dPdxy1) - 1831:6(float16_t) Load 1401(f16dPdxy1) - 1832: 7(f16vec4) ImageSampleProjExplicitLod 1828 1829 Grad 1830 1831 - 1833: 7(f16vec4) Load 1820(texel) - 1834: 7(f16vec4) FAdd 1833 1832 - Store 1820(texel) 1834 - 1835: 123 Load 125(s1D) - 1836: 249(fvec4) Load 251(c4) - 1837: 52(float) Load 1393(dPdxy1) - 1838: 52(float) Load 1393(dPdxy1) - 1839: 52(float) CompositeExtract 1836 3 - 1840: 249(fvec4) CompositeInsert 1839 1836 1 - 1841: 7(f16vec4) ImageSampleProjExplicitLod 1835 1840 Grad 1837 1838 - 1842: 7(f16vec4) Load 1820(texel) - 1843: 7(f16vec4) FAdd 1842 1841 - Store 1820(texel) 1843 - 1844: 123 Load 125(s1D) - 1845: 7(f16vec4) Load 309(f16c4) - 1846:6(float16_t) Load 1401(f16dPdxy1) - 1847:6(float16_t) Load 1401(f16dPdxy1) - 1848:6(float16_t) CompositeExtract 1845 3 - 1849: 7(f16vec4) CompositeInsert 1848 1845 1 - 1850: 7(f16vec4) ImageSampleProjExplicitLod 1844 1849 Grad 1846 1847 - 1851: 7(f16vec4) Load 1820(texel) - 1852: 7(f16vec4) FAdd 1851 1850 - Store 1820(texel) 1852 - 1853: 143 Load 145(s2D) - 1854: 167(fvec3) Load 169(c3) - 1855: 53(fvec2) Load 1409(dPdxy2) - 1856: 53(fvec2) Load 1409(dPdxy2) - 1857: 7(f16vec4) ImageSampleProjExplicitLod 1853 1854 Grad 1855 1856 - 1858: 7(f16vec4) Load 1820(texel) - 1859: 7(f16vec4) FAdd 1858 1857 - Store 1820(texel) 1859 - 1860: 143 Load 145(s2D) - 1861:175(f16vec3) Load 177(f16c3) - 1862:154(f16vec2) Load 1417(f16dPdxy2) - 1863:154(f16vec2) Load 1417(f16dPdxy2) - 1864: 7(f16vec4) ImageSampleProjExplicitLod 1860 1861 Grad 1862 1863 - 1865: 7(f16vec4) Load 1820(texel) + 1770(texel): 64(ptr) Variable Function + Store 1770(texel) 121 + 1771: 123 Load 125(s1D) + 1772: 53(fvec2) Load 148(c2) + 1773: 52(float) Load 1393(dPdxy1) + 1774: 7(f16vec4) ImageSampleProjExplicitLod 1771 1772 Grad 1773 1773 + 1775: 7(f16vec4) Load 1770(texel) + 1776: 7(f16vec4) FAdd 1775 1774 + Store 1770(texel) 1776 + 1777: 123 Load 125(s1D) + 1778:154(f16vec2) Load 156(f16c2) + 1779:6(float16_t) Load 1400(f16dPdxy1) + 1780: 7(f16vec4) ImageSampleProjExplicitLod 1777 1778 Grad 1779 1779 + 1781: 7(f16vec4) Load 1770(texel) + 1782: 7(f16vec4) FAdd 1781 1780 + Store 1770(texel) 1782 + 1783: 123 Load 125(s1D) + 1784: 249(fvec4) Load 251(c4) + 1785: 52(float) Load 1393(dPdxy1) + 1786: 52(float) CompositeExtract 1784 3 + 1787: 249(fvec4) CompositeInsert 1786 1784 1 + 1788: 7(f16vec4) ImageSampleProjExplicitLod 1783 1787 Grad 1785 1785 + 1789: 7(f16vec4) Load 1770(texel) + 1790: 7(f16vec4) FAdd 1789 1788 + Store 1770(texel) 1790 + 1791: 123 Load 125(s1D) + 1792: 7(f16vec4) Load 309(f16c4) + 1793:6(float16_t) Load 1400(f16dPdxy1) + 1794:6(float16_t) CompositeExtract 1792 3 + 1795: 7(f16vec4) CompositeInsert 1794 1792 1 + 1796: 7(f16vec4) ImageSampleProjExplicitLod 1791 1795 Grad 1793 1793 + 1797: 7(f16vec4) Load 1770(texel) + 1798: 7(f16vec4) FAdd 1797 1796 + Store 1770(texel) 1798 + 1799: 143 Load 145(s2D) + 1800: 167(fvec3) Load 169(c3) + 1801: 53(fvec2) Load 1407(dPdxy2) + 1802: 7(f16vec4) ImageSampleProjExplicitLod 1799 1800 Grad 1801 1801 + 1803: 7(f16vec4) Load 1770(texel) + 1804: 7(f16vec4) FAdd 1803 1802 + Store 1770(texel) 1804 + 1805: 143 Load 145(s2D) + 1806:175(f16vec3) Load 177(f16c3) + 1807:154(f16vec2) Load 1414(f16dPdxy2) + 1808: 7(f16vec4) ImageSampleProjExplicitLod 1805 1806 Grad 1807 1807 + 1809: 7(f16vec4) Load 1770(texel) + 1810: 7(f16vec4) FAdd 1809 1808 + Store 1770(texel) 1810 + 1811: 143 Load 145(s2D) + 1812: 249(fvec4) Load 251(c4) + 1813: 53(fvec2) Load 1407(dPdxy2) + 1814: 52(float) CompositeExtract 1812 3 + 1815: 249(fvec4) CompositeInsert 1814 1812 2 + 1816: 7(f16vec4) ImageSampleProjExplicitLod 1811 1815 Grad 1813 1813 + 1817: 7(f16vec4) Load 1770(texel) + 1818: 7(f16vec4) FAdd 1817 1816 + Store 1770(texel) 1818 + 1819: 143 Load 145(s2D) + 1820: 7(f16vec4) Load 309(f16c4) + 1821:154(f16vec2) Load 1414(f16dPdxy2) + 1822:6(float16_t) CompositeExtract 1820 3 + 1823: 7(f16vec4) CompositeInsert 1822 1820 2 + 1824: 7(f16vec4) ImageSampleProjExplicitLod 1819 1823 Grad 1821 1821 + 1825: 7(f16vec4) Load 1770(texel) + 1826: 7(f16vec4) FAdd 1825 1824 + Store 1770(texel) 1826 + 1827: 163 Load 165(s3D) + 1828: 249(fvec4) Load 251(c4) + 1829: 167(fvec3) Load 1421(dPdxy3) + 1830: 7(f16vec4) ImageSampleProjExplicitLod 1827 1828 Grad 1829 1829 + 1831: 7(f16vec4) Load 1770(texel) + 1832: 7(f16vec4) FAdd 1831 1830 + Store 1770(texel) 1832 + 1833: 163 Load 165(s3D) + 1834: 7(f16vec4) Load 309(f16c4) + 1835:175(f16vec3) Load 1428(f16dPdxy3) + 1836: 7(f16vec4) ImageSampleProjExplicitLod 1833 1834 Grad 1835 1835 + 1837: 7(f16vec4) Load 1770(texel) + 1838: 7(f16vec4) FAdd 1837 1836 + Store 1770(texel) 1838 + 1839: 357 Load 359(s2DRect) + 1840: 167(fvec3) Load 169(c3) + 1841: 53(fvec2) Load 1407(dPdxy2) + 1842: 7(f16vec4) ImageSampleProjExplicitLod 1839 1840 Grad 1841 1841 + 1843: 7(f16vec4) Load 1770(texel) + 1844: 7(f16vec4) FAdd 1843 1842 + Store 1770(texel) 1844 + 1845: 357 Load 359(s2DRect) + 1846:175(f16vec3) Load 177(f16c3) + 1847:154(f16vec2) Load 1414(f16dPdxy2) + 1848: 7(f16vec4) ImageSampleProjExplicitLod 1845 1846 Grad 1847 1847 + 1849: 7(f16vec4) Load 1770(texel) + 1850: 7(f16vec4) FAdd 1849 1848 + Store 1770(texel) 1850 + 1851: 357 Load 359(s2DRect) + 1852: 249(fvec4) Load 251(c4) + 1853: 53(fvec2) Load 1407(dPdxy2) + 1854: 52(float) CompositeExtract 1852 3 + 1855: 249(fvec4) CompositeInsert 1854 1852 2 + 1856: 7(f16vec4) ImageSampleProjExplicitLod 1851 1855 Grad 1853 1853 + 1857: 7(f16vec4) Load 1770(texel) + 1858: 7(f16vec4) FAdd 1857 1856 + Store 1770(texel) 1858 + 1859: 357 Load 359(s2DRect) + 1860: 7(f16vec4) Load 309(f16c4) + 1861:154(f16vec2) Load 1414(f16dPdxy2) + 1862:6(float16_t) CompositeExtract 1860 3 + 1863: 7(f16vec4) CompositeInsert 1862 1860 2 + 1864: 7(f16vec4) ImageSampleProjExplicitLod 1859 1863 Grad 1861 1861 + 1865: 7(f16vec4) Load 1770(texel) 1866: 7(f16vec4) FAdd 1865 1864 - Store 1820(texel) 1866 - 1867: 143 Load 145(s2D) + Store 1770(texel) 1866 + 1867: 371 Load 373(s2DRectShadow) 1868: 249(fvec4) Load 251(c4) - 1869: 53(fvec2) Load 1409(dPdxy2) - 1870: 53(fvec2) Load 1409(dPdxy2) + 1869: 53(fvec2) Load 1407(dPdxy2) + 1870: 52(float) CompositeExtract 1868 2 1871: 52(float) CompositeExtract 1868 3 1872: 249(fvec4) CompositeInsert 1871 1868 2 - 1873: 7(f16vec4) ImageSampleProjExplicitLod 1867 1872 Grad 1869 1870 - 1874: 7(f16vec4) Load 1820(texel) - 1875: 7(f16vec4) FAdd 1874 1873 - Store 1820(texel) 1875 - 1876: 143 Load 145(s2D) - 1877: 7(f16vec4) Load 309(f16c4) - 1878:154(f16vec2) Load 1417(f16dPdxy2) - 1879:154(f16vec2) Load 1417(f16dPdxy2) - 1880:6(float16_t) CompositeExtract 1877 3 - 1881: 7(f16vec4) CompositeInsert 1880 1877 2 - 1882: 7(f16vec4) ImageSampleProjExplicitLod 1876 1881 Grad 1878 1879 - 1883: 7(f16vec4) Load 1820(texel) - 1884: 7(f16vec4) FAdd 1883 1882 - Store 1820(texel) 1884 - 1885: 163 Load 165(s3D) - 1886: 249(fvec4) Load 251(c4) - 1887: 167(fvec3) Load 1425(dPdxy3) - 1888: 167(fvec3) Load 1425(dPdxy3) - 1889: 7(f16vec4) ImageSampleProjExplicitLod 1885 1886 Grad 1887 1888 - 1890: 7(f16vec4) Load 1820(texel) - 1891: 7(f16vec4) FAdd 1890 1889 - Store 1820(texel) 1891 - 1892: 163 Load 165(s3D) - 1893: 7(f16vec4) Load 309(f16c4) - 1894:175(f16vec3) Load 1433(f16dPdxy3) - 1895:175(f16vec3) Load 1433(f16dPdxy3) - 1896: 7(f16vec4) ImageSampleProjExplicitLod 1892 1893 Grad 1894 1895 - 1897: 7(f16vec4) Load 1820(texel) - 1898: 7(f16vec4) FAdd 1897 1896 - Store 1820(texel) 1898 - 1899: 357 Load 359(s2DRect) - 1900: 167(fvec3) Load 169(c3) - 1901: 53(fvec2) Load 1409(dPdxy2) - 1902: 53(fvec2) Load 1409(dPdxy2) - 1903: 7(f16vec4) ImageSampleProjExplicitLod 1899 1900 Grad 1901 1902 - 1904: 7(f16vec4) Load 1820(texel) - 1905: 7(f16vec4) FAdd 1904 1903 - Store 1820(texel) 1905 - 1906: 357 Load 359(s2DRect) - 1907:175(f16vec3) Load 177(f16c3) - 1908:154(f16vec2) Load 1417(f16dPdxy2) - 1909:154(f16vec2) Load 1417(f16dPdxy2) - 1910: 7(f16vec4) ImageSampleProjExplicitLod 1906 1907 Grad 1908 1909 - 1911: 7(f16vec4) Load 1820(texel) - 1912: 7(f16vec4) FAdd 1911 1910 - Store 1820(texel) 1912 - 1913: 357 Load 359(s2DRect) - 1914: 249(fvec4) Load 251(c4) - 1915: 53(fvec2) Load 1409(dPdxy2) - 1916: 53(fvec2) Load 1409(dPdxy2) - 1917: 52(float) CompositeExtract 1914 3 - 1918: 249(fvec4) CompositeInsert 1917 1914 2 - 1919: 7(f16vec4) ImageSampleProjExplicitLod 1913 1918 Grad 1915 1916 - 1920: 7(f16vec4) Load 1820(texel) - 1921: 7(f16vec4) FAdd 1920 1919 - Store 1820(texel) 1921 - 1922: 357 Load 359(s2DRect) - 1923: 7(f16vec4) Load 309(f16c4) - 1924:154(f16vec2) Load 1417(f16dPdxy2) - 1925:154(f16vec2) Load 1417(f16dPdxy2) - 1926:6(float16_t) CompositeExtract 1923 3 - 1927: 7(f16vec4) CompositeInsert 1926 1923 2 - 1928: 7(f16vec4) ImageSampleProjExplicitLod 1922 1927 Grad 1924 1925 - 1929: 7(f16vec4) Load 1820(texel) - 1930: 7(f16vec4) FAdd 1929 1928 - Store 1820(texel) 1930 - 1931: 371 Load 373(s2DRectShadow) - 1932: 249(fvec4) Load 251(c4) - 1933: 53(fvec2) Load 1409(dPdxy2) - 1934: 53(fvec2) Load 1409(dPdxy2) - 1935: 52(float) CompositeExtract 1932 2 - 1936: 52(float) CompositeExtract 1932 3 - 1937: 249(fvec4) CompositeInsert 1936 1932 2 - 1938:6(float16_t) ImageSampleProjDrefExplicitLod 1931 1937 1935 Grad 1933 1934 - 1939: 208(ptr) AccessChain 1820(texel) 207 - 1940:6(float16_t) Load 1939 - 1941:6(float16_t) FAdd 1940 1938 - 1942: 208(ptr) AccessChain 1820(texel) 207 - Store 1942 1941 - 1943: 371 Load 373(s2DRectShadow) - 1944:175(f16vec3) Load 177(f16c3) - 1945: 52(float) Load 215(compare) - 1946:154(f16vec2) Load 1417(f16dPdxy2) - 1947:154(f16vec2) Load 1417(f16dPdxy2) - 1948:6(float16_t) ImageSampleProjDrefExplicitLod 1943 1944 1945 Grad 1946 1947 - 1949: 208(ptr) AccessChain 1820(texel) 207 - 1950:6(float16_t) Load 1949 - 1951:6(float16_t) FAdd 1950 1948 - 1952: 208(ptr) AccessChain 1820(texel) 207 - Store 1952 1951 - 1953: 199 Load 201(s1DShadow) - 1954: 249(fvec4) Load 251(c4) - 1955: 52(float) Load 1393(dPdxy1) - 1956: 52(float) Load 1393(dPdxy1) - 1957: 52(float) CompositeExtract 1954 2 - 1958: 52(float) CompositeExtract 1954 3 - 1959: 249(fvec4) CompositeInsert 1958 1954 1 - 1960:6(float16_t) ImageSampleProjDrefExplicitLod 1953 1959 1957 Grad 1955 1956 - 1961: 208(ptr) AccessChain 1820(texel) 207 - 1962:6(float16_t) Load 1961 - 1963:6(float16_t) FAdd 1962 1960 - 1964: 208(ptr) AccessChain 1820(texel) 207 - Store 1964 1963 - 1965: 199 Load 201(s1DShadow) - 1966:175(f16vec3) Load 177(f16c3) - 1967: 52(float) Load 215(compare) - 1968:6(float16_t) Load 1401(f16dPdxy1) - 1969:6(float16_t) Load 1401(f16dPdxy1) - 1970:6(float16_t) CompositeExtract 1966 2 - 1971:175(f16vec3) CompositeInsert 1970 1966 1 - 1972:6(float16_t) ImageSampleProjDrefExplicitLod 1965 1971 1967 Grad 1968 1969 - 1973: 208(ptr) AccessChain 1820(texel) 207 - 1974:6(float16_t) Load 1973 - 1975:6(float16_t) FAdd 1974 1972 - 1976: 208(ptr) AccessChain 1820(texel) 207 - Store 1976 1975 - 1977: 224 Load 226(s2DShadow) - 1978: 249(fvec4) Load 251(c4) - 1979: 53(fvec2) Load 1409(dPdxy2) - 1980: 53(fvec2) Load 1409(dPdxy2) - 1981: 52(float) CompositeExtract 1978 2 - 1982: 52(float) CompositeExtract 1978 3 - 1983: 249(fvec4) CompositeInsert 1982 1978 2 - 1984:6(float16_t) ImageSampleProjDrefExplicitLod 1977 1983 1981 Grad 1979 1980 - 1985: 208(ptr) AccessChain 1820(texel) 207 - 1986:6(float16_t) Load 1985 - 1987:6(float16_t) FAdd 1986 1984 - 1988: 208(ptr) AccessChain 1820(texel) 207 - Store 1988 1987 - 1989: 224 Load 226(s2DShadow) - 1990:175(f16vec3) Load 177(f16c3) - 1991: 52(float) Load 215(compare) - 1992:154(f16vec2) Load 1417(f16dPdxy2) - 1993:154(f16vec2) Load 1417(f16dPdxy2) - 1994:6(float16_t) ImageSampleProjDrefExplicitLod 1989 1990 1991 Grad 1992 1993 - 1995: 208(ptr) AccessChain 1820(texel) 207 - 1996:6(float16_t) Load 1995 - 1997:6(float16_t) FAdd 1996 1994 - 1998: 208(ptr) AccessChain 1820(texel) 207 - Store 1998 1997 - 1999: 7(f16vec4) Load 1820(texel) - ReturnValue 1999 + 1873:6(float16_t) ImageSampleProjDrefExplicitLod 1867 1872 1870 Grad 1869 1869 + 1874: 208(ptr) AccessChain 1770(texel) 207 + 1875:6(float16_t) Load 1874 + 1876:6(float16_t) FAdd 1875 1873 + 1877: 208(ptr) AccessChain 1770(texel) 207 + Store 1877 1876 + 1878: 371 Load 373(s2DRectShadow) + 1879:175(f16vec3) Load 177(f16c3) + 1880: 52(float) Load 215(compare) + 1881:154(f16vec2) Load 1414(f16dPdxy2) + 1882:6(float16_t) ImageSampleProjDrefExplicitLod 1878 1879 1880 Grad 1881 1881 + 1883: 208(ptr) AccessChain 1770(texel) 207 + 1884:6(float16_t) Load 1883 + 1885:6(float16_t) FAdd 1884 1882 + 1886: 208(ptr) AccessChain 1770(texel) 207 + Store 1886 1885 + 1887: 199 Load 201(s1DShadow) + 1888: 249(fvec4) Load 251(c4) + 1889: 52(float) Load 1393(dPdxy1) + 1890: 52(float) CompositeExtract 1888 2 + 1891: 52(float) CompositeExtract 1888 3 + 1892: 249(fvec4) CompositeInsert 1891 1888 1 + 1893:6(float16_t) ImageSampleProjDrefExplicitLod 1887 1892 1890 Grad 1889 1889 + 1894: 208(ptr) AccessChain 1770(texel) 207 + 1895:6(float16_t) Load 1894 + 1896:6(float16_t) FAdd 1895 1893 + 1897: 208(ptr) AccessChain 1770(texel) 207 + Store 1897 1896 + 1898: 199 Load 201(s1DShadow) + 1899:175(f16vec3) Load 177(f16c3) + 1900: 52(float) Load 215(compare) + 1901:6(float16_t) Load 1400(f16dPdxy1) + 1902:6(float16_t) CompositeExtract 1899 2 + 1903:175(f16vec3) CompositeInsert 1902 1899 1 + 1904:6(float16_t) ImageSampleProjDrefExplicitLod 1898 1903 1900 Grad 1901 1901 + 1905: 208(ptr) AccessChain 1770(texel) 207 + 1906:6(float16_t) Load 1905 + 1907:6(float16_t) FAdd 1906 1904 + 1908: 208(ptr) AccessChain 1770(texel) 207 + Store 1908 1907 + 1909: 224 Load 226(s2DShadow) + 1910: 249(fvec4) Load 251(c4) + 1911: 53(fvec2) Load 1407(dPdxy2) + 1912: 52(float) CompositeExtract 1910 2 + 1913: 52(float) CompositeExtract 1910 3 + 1914: 249(fvec4) CompositeInsert 1913 1910 2 + 1915:6(float16_t) ImageSampleProjDrefExplicitLod 1909 1914 1912 Grad 1911 1911 + 1916: 208(ptr) AccessChain 1770(texel) 207 + 1917:6(float16_t) Load 1916 + 1918:6(float16_t) FAdd 1917 1915 + 1919: 208(ptr) AccessChain 1770(texel) 207 + Store 1919 1918 + 1920: 224 Load 226(s2DShadow) + 1921:175(f16vec3) Load 177(f16c3) + 1922: 52(float) Load 215(compare) + 1923:154(f16vec2) Load 1414(f16dPdxy2) + 1924:6(float16_t) ImageSampleProjDrefExplicitLod 1920 1921 1922 Grad 1923 1923 + 1925: 208(ptr) AccessChain 1770(texel) 207 + 1926:6(float16_t) Load 1925 + 1927:6(float16_t) FAdd 1926 1924 + 1928: 208(ptr) AccessChain 1770(texel) 207 + Store 1928 1927 + 1929: 7(f16vec4) Load 1770(texel) + ReturnValue 1929 FunctionEnd 33(testTextureProjGradoffset(): 7(f16vec4) Function None 8 34: Label - 2002(texel): 64(ptr) Variable Function - Store 2002(texel) 121 - 2003: 123 Load 125(s1D) - 2004: 53(fvec2) Load 148(c2) - 2005: 52(float) Load 1393(dPdxy1) - 2006: 52(float) Load 1393(dPdxy1) - 2007: 7(f16vec4) ImageSampleProjExplicitLod 2003 2004 Grad ConstOffset 2005 2006 709 - 2008: 7(f16vec4) Load 2002(texel) - 2009: 7(f16vec4) FAdd 2008 2007 - Store 2002(texel) 2009 - 2010: 123 Load 125(s1D) - 2011:154(f16vec2) Load 156(f16c2) - 2012:6(float16_t) Load 1401(f16dPdxy1) - 2013:6(float16_t) Load 1401(f16dPdxy1) - 2014: 7(f16vec4) ImageSampleProjExplicitLod 2010 2011 Grad ConstOffset 2012 2013 709 - 2015: 7(f16vec4) Load 2002(texel) + 1932(texel): 64(ptr) Variable Function + Store 1932(texel) 121 + 1933: 123 Load 125(s1D) + 1934: 53(fvec2) Load 148(c2) + 1935: 52(float) Load 1393(dPdxy1) + 1936: 7(f16vec4) ImageSampleProjExplicitLod 1933 1934 Grad ConstOffset 1935 1935 709 + 1937: 7(f16vec4) Load 1932(texel) + 1938: 7(f16vec4) FAdd 1937 1936 + Store 1932(texel) 1938 + 1939: 123 Load 125(s1D) + 1940:154(f16vec2) Load 156(f16c2) + 1941:6(float16_t) Load 1400(f16dPdxy1) + 1942: 7(f16vec4) ImageSampleProjExplicitLod 1939 1940 Grad ConstOffset 1941 1941 709 + 1943: 7(f16vec4) Load 1932(texel) + 1944: 7(f16vec4) FAdd 1943 1942 + Store 1932(texel) 1944 + 1945: 123 Load 125(s1D) + 1946: 249(fvec4) Load 251(c4) + 1947: 52(float) Load 1393(dPdxy1) + 1948: 52(float) CompositeExtract 1946 3 + 1949: 249(fvec4) CompositeInsert 1948 1946 1 + 1950: 7(f16vec4) ImageSampleProjExplicitLod 1945 1949 Grad ConstOffset 1947 1947 709 + 1951: 7(f16vec4) Load 1932(texel) + 1952: 7(f16vec4) FAdd 1951 1950 + Store 1932(texel) 1952 + 1953: 123 Load 125(s1D) + 1954: 7(f16vec4) Load 309(f16c4) + 1955:6(float16_t) Load 1400(f16dPdxy1) + 1956:6(float16_t) CompositeExtract 1954 3 + 1957: 7(f16vec4) CompositeInsert 1956 1954 1 + 1958: 7(f16vec4) ImageSampleProjExplicitLod 1953 1957 Grad ConstOffset 1955 1955 709 + 1959: 7(f16vec4) Load 1932(texel) + 1960: 7(f16vec4) FAdd 1959 1958 + Store 1932(texel) 1960 + 1961: 143 Load 145(s2D) + 1962: 167(fvec3) Load 169(c3) + 1963: 53(fvec2) Load 1407(dPdxy2) + 1964: 7(f16vec4) ImageSampleProjExplicitLod 1961 1962 Grad ConstOffset 1963 1963 722 + 1965: 7(f16vec4) Load 1932(texel) + 1966: 7(f16vec4) FAdd 1965 1964 + Store 1932(texel) 1966 + 1967: 143 Load 145(s2D) + 1968:175(f16vec3) Load 177(f16c3) + 1969:154(f16vec2) Load 1414(f16dPdxy2) + 1970: 7(f16vec4) ImageSampleProjExplicitLod 1967 1968 Grad ConstOffset 1969 1969 722 + 1971: 7(f16vec4) Load 1932(texel) + 1972: 7(f16vec4) FAdd 1971 1970 + Store 1932(texel) 1972 + 1973: 143 Load 145(s2D) + 1974: 249(fvec4) Load 251(c4) + 1975: 53(fvec2) Load 1407(dPdxy2) + 1976: 52(float) CompositeExtract 1974 3 + 1977: 249(fvec4) CompositeInsert 1976 1974 2 + 1978: 7(f16vec4) ImageSampleProjExplicitLod 1973 1977 Grad ConstOffset 1975 1975 722 + 1979: 7(f16vec4) Load 1932(texel) + 1980: 7(f16vec4) FAdd 1979 1978 + Store 1932(texel) 1980 + 1981: 143 Load 145(s2D) + 1982: 7(f16vec4) Load 309(f16c4) + 1983:154(f16vec2) Load 1414(f16dPdxy2) + 1984:6(float16_t) CompositeExtract 1982 3 + 1985: 7(f16vec4) CompositeInsert 1984 1982 2 + 1986: 7(f16vec4) ImageSampleProjExplicitLod 1981 1985 Grad ConstOffset 1983 1983 722 + 1987: 7(f16vec4) Load 1932(texel) + 1988: 7(f16vec4) FAdd 1987 1986 + Store 1932(texel) 1988 + 1989: 357 Load 359(s2DRect) + 1990: 167(fvec3) Load 169(c3) + 1991: 53(fvec2) Load 1407(dPdxy2) + 1992: 7(f16vec4) ImageSampleProjExplicitLod 1989 1990 Grad ConstOffset 1991 1991 722 + 1993: 7(f16vec4) Load 1932(texel) + 1994: 7(f16vec4) FAdd 1993 1992 + Store 1932(texel) 1994 + 1995: 357 Load 359(s2DRect) + 1996:175(f16vec3) Load 177(f16c3) + 1997:154(f16vec2) Load 1414(f16dPdxy2) + 1998: 7(f16vec4) ImageSampleProjExplicitLod 1995 1996 Grad ConstOffset 1997 1997 722 + 1999: 7(f16vec4) Load 1932(texel) + 2000: 7(f16vec4) FAdd 1999 1998 + Store 1932(texel) 2000 + 2001: 357 Load 359(s2DRect) + 2002: 249(fvec4) Load 251(c4) + 2003: 53(fvec2) Load 1407(dPdxy2) + 2004: 52(float) CompositeExtract 2002 3 + 2005: 249(fvec4) CompositeInsert 2004 2002 2 + 2006: 7(f16vec4) ImageSampleProjExplicitLod 2001 2005 Grad ConstOffset 2003 2003 722 + 2007: 7(f16vec4) Load 1932(texel) + 2008: 7(f16vec4) FAdd 2007 2006 + Store 1932(texel) 2008 + 2009: 357 Load 359(s2DRect) + 2010: 7(f16vec4) Load 309(f16c4) + 2011:154(f16vec2) Load 1414(f16dPdxy2) + 2012:6(float16_t) CompositeExtract 2010 3 + 2013: 7(f16vec4) CompositeInsert 2012 2010 2 + 2014: 7(f16vec4) ImageSampleProjExplicitLod 2009 2013 Grad ConstOffset 2011 2011 722 + 2015: 7(f16vec4) Load 1932(texel) 2016: 7(f16vec4) FAdd 2015 2014 - Store 2002(texel) 2016 - 2017: 123 Load 125(s1D) + Store 1932(texel) 2016 + 2017: 371 Load 373(s2DRectShadow) 2018: 249(fvec4) Load 251(c4) - 2019: 52(float) Load 1393(dPdxy1) - 2020: 52(float) Load 1393(dPdxy1) + 2019: 53(fvec2) Load 1407(dPdxy2) + 2020: 52(float) CompositeExtract 2018 2 2021: 52(float) CompositeExtract 2018 3 - 2022: 249(fvec4) CompositeInsert 2021 2018 1 - 2023: 7(f16vec4) ImageSampleProjExplicitLod 2017 2022 Grad ConstOffset 2019 2020 709 - 2024: 7(f16vec4) Load 2002(texel) - 2025: 7(f16vec4) FAdd 2024 2023 - Store 2002(texel) 2025 - 2026: 123 Load 125(s1D) - 2027: 7(f16vec4) Load 309(f16c4) - 2028:6(float16_t) Load 1401(f16dPdxy1) - 2029:6(float16_t) Load 1401(f16dPdxy1) - 2030:6(float16_t) CompositeExtract 2027 3 - 2031: 7(f16vec4) CompositeInsert 2030 2027 1 - 2032: 7(f16vec4) ImageSampleProjExplicitLod 2026 2031 Grad ConstOffset 2028 2029 709 - 2033: 7(f16vec4) Load 2002(texel) - 2034: 7(f16vec4) FAdd 2033 2032 - Store 2002(texel) 2034 - 2035: 143 Load 145(s2D) - 2036: 167(fvec3) Load 169(c3) - 2037: 53(fvec2) Load 1409(dPdxy2) - 2038: 53(fvec2) Load 1409(dPdxy2) - 2039: 7(f16vec4) ImageSampleProjExplicitLod 2035 2036 Grad ConstOffset 2037 2038 722 - 2040: 7(f16vec4) Load 2002(texel) - 2041: 7(f16vec4) FAdd 2040 2039 - Store 2002(texel) 2041 - 2042: 143 Load 145(s2D) - 2043:175(f16vec3) Load 177(f16c3) - 2044:154(f16vec2) Load 1417(f16dPdxy2) - 2045:154(f16vec2) Load 1417(f16dPdxy2) - 2046: 7(f16vec4) ImageSampleProjExplicitLod 2042 2043 Grad ConstOffset 2044 2045 722 - 2047: 7(f16vec4) Load 2002(texel) + 2022: 249(fvec4) CompositeInsert 2021 2018 2 + 2023:6(float16_t) ImageSampleProjDrefExplicitLod 2017 2022 2020 Grad ConstOffset 2019 2019 722 + 2024: 208(ptr) AccessChain 1932(texel) 207 + 2025:6(float16_t) Load 2024 + 2026:6(float16_t) FAdd 2025 2023 + 2027: 208(ptr) AccessChain 1932(texel) 207 + Store 2027 2026 + 2028: 371 Load 373(s2DRectShadow) + 2029:175(f16vec3) Load 177(f16c3) + 2030: 52(float) Load 215(compare) + 2031:154(f16vec2) Load 1414(f16dPdxy2) + 2032:6(float16_t) ImageSampleProjDrefExplicitLod 2028 2029 2030 Grad ConstOffset 2031 2031 722 + 2033: 208(ptr) AccessChain 1932(texel) 207 + 2034:6(float16_t) Load 2033 + 2035:6(float16_t) FAdd 2034 2032 + 2036: 208(ptr) AccessChain 1932(texel) 207 + Store 2036 2035 + 2037: 163 Load 165(s3D) + 2038: 249(fvec4) Load 251(c4) + 2039: 167(fvec3) Load 1421(dPdxy3) + 2040: 7(f16vec4) ImageSampleProjExplicitLod 2037 2038 Grad ConstOffset 2039 2039 735 + 2041: 7(f16vec4) Load 1932(texel) + 2042: 7(f16vec4) FAdd 2041 2040 + Store 1932(texel) 2042 + 2043: 163 Load 165(s3D) + 2044: 7(f16vec4) Load 309(f16c4) + 2045:175(f16vec3) Load 1428(f16dPdxy3) + 2046: 7(f16vec4) ImageSampleProjExplicitLod 2043 2044 Grad ConstOffset 2045 2045 735 + 2047: 7(f16vec4) Load 1932(texel) 2048: 7(f16vec4) FAdd 2047 2046 - Store 2002(texel) 2048 - 2049: 143 Load 145(s2D) + Store 1932(texel) 2048 + 2049: 199 Load 201(s1DShadow) 2050: 249(fvec4) Load 251(c4) - 2051: 53(fvec2) Load 1409(dPdxy2) - 2052: 53(fvec2) Load 1409(dPdxy2) + 2051: 52(float) Load 1393(dPdxy1) + 2052: 52(float) CompositeExtract 2050 2 2053: 52(float) CompositeExtract 2050 3 - 2054: 249(fvec4) CompositeInsert 2053 2050 2 - 2055: 7(f16vec4) ImageSampleProjExplicitLod 2049 2054 Grad ConstOffset 2051 2052 722 - 2056: 7(f16vec4) Load 2002(texel) - 2057: 7(f16vec4) FAdd 2056 2055 - Store 2002(texel) 2057 - 2058: 143 Load 145(s2D) - 2059: 7(f16vec4) Load 309(f16c4) - 2060:154(f16vec2) Load 1417(f16dPdxy2) - 2061:154(f16vec2) Load 1417(f16dPdxy2) - 2062:6(float16_t) CompositeExtract 2059 3 - 2063: 7(f16vec4) CompositeInsert 2062 2059 2 - 2064: 7(f16vec4) ImageSampleProjExplicitLod 2058 2063 Grad ConstOffset 2060 2061 722 - 2065: 7(f16vec4) Load 2002(texel) - 2066: 7(f16vec4) FAdd 2065 2064 - Store 2002(texel) 2066 - 2067: 357 Load 359(s2DRect) - 2068: 167(fvec3) Load 169(c3) - 2069: 53(fvec2) Load 1409(dPdxy2) - 2070: 53(fvec2) Load 1409(dPdxy2) - 2071: 7(f16vec4) ImageSampleProjExplicitLod 2067 2068 Grad ConstOffset 2069 2070 722 - 2072: 7(f16vec4) Load 2002(texel) - 2073: 7(f16vec4) FAdd 2072 2071 - Store 2002(texel) 2073 - 2074: 357 Load 359(s2DRect) - 2075:175(f16vec3) Load 177(f16c3) - 2076:154(f16vec2) Load 1417(f16dPdxy2) - 2077:154(f16vec2) Load 1417(f16dPdxy2) - 2078: 7(f16vec4) ImageSampleProjExplicitLod 2074 2075 Grad ConstOffset 2076 2077 722 - 2079: 7(f16vec4) Load 2002(texel) - 2080: 7(f16vec4) FAdd 2079 2078 - Store 2002(texel) 2080 - 2081: 357 Load 359(s2DRect) - 2082: 249(fvec4) Load 251(c4) - 2083: 53(fvec2) Load 1409(dPdxy2) - 2084: 53(fvec2) Load 1409(dPdxy2) - 2085: 52(float) CompositeExtract 2082 3 - 2086: 249(fvec4) CompositeInsert 2085 2082 2 - 2087: 7(f16vec4) ImageSampleProjExplicitLod 2081 2086 Grad ConstOffset 2083 2084 722 - 2088: 7(f16vec4) Load 2002(texel) - 2089: 7(f16vec4) FAdd 2088 2087 - Store 2002(texel) 2089 - 2090: 357 Load 359(s2DRect) - 2091: 7(f16vec4) Load 309(f16c4) - 2092:154(f16vec2) Load 1417(f16dPdxy2) - 2093:154(f16vec2) Load 1417(f16dPdxy2) - 2094:6(float16_t) CompositeExtract 2091 3 - 2095: 7(f16vec4) CompositeInsert 2094 2091 2 - 2096: 7(f16vec4) ImageSampleProjExplicitLod 2090 2095 Grad ConstOffset 2092 2093 722 - 2097: 7(f16vec4) Load 2002(texel) - 2098: 7(f16vec4) FAdd 2097 2096 - Store 2002(texel) 2098 - 2099: 371 Load 373(s2DRectShadow) - 2100: 249(fvec4) Load 251(c4) - 2101: 53(fvec2) Load 1409(dPdxy2) - 2102: 53(fvec2) Load 1409(dPdxy2) - 2103: 52(float) CompositeExtract 2100 2 - 2104: 52(float) CompositeExtract 2100 3 - 2105: 249(fvec4) CompositeInsert 2104 2100 2 - 2106:6(float16_t) ImageSampleProjDrefExplicitLod 2099 2105 2103 Grad ConstOffset 2101 2102 722 - 2107: 208(ptr) AccessChain 2002(texel) 207 - 2108:6(float16_t) Load 2107 - 2109:6(float16_t) FAdd 2108 2106 - 2110: 208(ptr) AccessChain 2002(texel) 207 - Store 2110 2109 - 2111: 371 Load 373(s2DRectShadow) - 2112:175(f16vec3) Load 177(f16c3) - 2113: 52(float) Load 215(compare) - 2114:154(f16vec2) Load 1417(f16dPdxy2) - 2115:154(f16vec2) Load 1417(f16dPdxy2) - 2116:6(float16_t) ImageSampleProjDrefExplicitLod 2111 2112 2113 Grad ConstOffset 2114 2115 722 - 2117: 208(ptr) AccessChain 2002(texel) 207 - 2118:6(float16_t) Load 2117 - 2119:6(float16_t) FAdd 2118 2116 - 2120: 208(ptr) AccessChain 2002(texel) 207 - Store 2120 2119 - 2121: 163 Load 165(s3D) - 2122: 249(fvec4) Load 251(c4) - 2123: 167(fvec3) Load 1425(dPdxy3) - 2124: 167(fvec3) Load 1425(dPdxy3) - 2125: 7(f16vec4) ImageSampleProjExplicitLod 2121 2122 Grad ConstOffset 2123 2124 735 - 2126: 7(f16vec4) Load 2002(texel) - 2127: 7(f16vec4) FAdd 2126 2125 - Store 2002(texel) 2127 - 2128: 163 Load 165(s3D) - 2129: 7(f16vec4) Load 309(f16c4) - 2130:175(f16vec3) Load 1433(f16dPdxy3) - 2131:175(f16vec3) Load 1433(f16dPdxy3) - 2132: 7(f16vec4) ImageSampleProjExplicitLod 2128 2129 Grad ConstOffset 2130 2131 735 - 2133: 7(f16vec4) Load 2002(texel) - 2134: 7(f16vec4) FAdd 2133 2132 - Store 2002(texel) 2134 - 2135: 199 Load 201(s1DShadow) - 2136: 249(fvec4) Load 251(c4) - 2137: 52(float) Load 1393(dPdxy1) - 2138: 52(float) Load 1393(dPdxy1) - 2139: 52(float) CompositeExtract 2136 2 - 2140: 52(float) CompositeExtract 2136 3 - 2141: 249(fvec4) CompositeInsert 2140 2136 1 - 2142:6(float16_t) ImageSampleProjDrefExplicitLod 2135 2141 2139 Grad ConstOffset 2137 2138 709 - 2143: 208(ptr) AccessChain 2002(texel) 207 - 2144:6(float16_t) Load 2143 - 2145:6(float16_t) FAdd 2144 2142 - 2146: 208(ptr) AccessChain 2002(texel) 207 - Store 2146 2145 - 2147: 199 Load 201(s1DShadow) - 2148:175(f16vec3) Load 177(f16c3) - 2149: 52(float) Load 215(compare) - 2150:6(float16_t) Load 1401(f16dPdxy1) - 2151:6(float16_t) Load 1401(f16dPdxy1) - 2152:6(float16_t) CompositeExtract 2148 2 - 2153:175(f16vec3) CompositeInsert 2152 2148 1 - 2154:6(float16_t) ImageSampleProjDrefExplicitLod 2147 2153 2149 Grad ConstOffset 2150 2151 709 - 2155: 208(ptr) AccessChain 2002(texel) 207 - 2156:6(float16_t) Load 2155 - 2157:6(float16_t) FAdd 2156 2154 - 2158: 208(ptr) AccessChain 2002(texel) 207 - Store 2158 2157 - 2159: 224 Load 226(s2DShadow) - 2160: 249(fvec4) Load 251(c4) - 2161: 53(fvec2) Load 1409(dPdxy2) - 2162: 53(fvec2) Load 1409(dPdxy2) - 2163: 52(float) CompositeExtract 2160 2 - 2164: 52(float) CompositeExtract 2160 3 - 2165: 249(fvec4) CompositeInsert 2164 2160 2 - 2166:6(float16_t) ImageSampleProjDrefExplicitLod 2159 2165 2163 Grad ConstOffset 2161 2162 722 - 2167: 208(ptr) AccessChain 2002(texel) 207 - 2168:6(float16_t) Load 2167 - 2169:6(float16_t) FAdd 2168 2166 - 2170: 208(ptr) AccessChain 2002(texel) 207 - Store 2170 2169 - 2171: 224 Load 226(s2DShadow) - 2172:175(f16vec3) Load 177(f16c3) - 2173: 52(float) Load 215(compare) - 2174:154(f16vec2) Load 1417(f16dPdxy2) - 2175:154(f16vec2) Load 1417(f16dPdxy2) - 2176:6(float16_t) ImageSampleProjDrefExplicitLod 2171 2172 2173 Grad ConstOffset 2174 2175 722 - 2177: 208(ptr) AccessChain 2002(texel) 207 - 2178:6(float16_t) Load 2177 - 2179:6(float16_t) FAdd 2178 2176 - 2180: 208(ptr) AccessChain 2002(texel) 207 - Store 2180 2179 - 2181: 7(f16vec4) Load 2002(texel) - ReturnValue 2181 + 2054: 249(fvec4) CompositeInsert 2053 2050 1 + 2055:6(float16_t) ImageSampleProjDrefExplicitLod 2049 2054 2052 Grad ConstOffset 2051 2051 709 + 2056: 208(ptr) AccessChain 1932(texel) 207 + 2057:6(float16_t) Load 2056 + 2058:6(float16_t) FAdd 2057 2055 + 2059: 208(ptr) AccessChain 1932(texel) 207 + Store 2059 2058 + 2060: 199 Load 201(s1DShadow) + 2061:175(f16vec3) Load 177(f16c3) + 2062: 52(float) Load 215(compare) + 2063:6(float16_t) Load 1400(f16dPdxy1) + 2064:6(float16_t) CompositeExtract 2061 2 + 2065:175(f16vec3) CompositeInsert 2064 2061 1 + 2066:6(float16_t) ImageSampleProjDrefExplicitLod 2060 2065 2062 Grad ConstOffset 2063 2063 709 + 2067: 208(ptr) AccessChain 1932(texel) 207 + 2068:6(float16_t) Load 2067 + 2069:6(float16_t) FAdd 2068 2066 + 2070: 208(ptr) AccessChain 1932(texel) 207 + Store 2070 2069 + 2071: 224 Load 226(s2DShadow) + 2072: 249(fvec4) Load 251(c4) + 2073: 53(fvec2) Load 1407(dPdxy2) + 2074: 52(float) CompositeExtract 2072 2 + 2075: 52(float) CompositeExtract 2072 3 + 2076: 249(fvec4) CompositeInsert 2075 2072 2 + 2077:6(float16_t) ImageSampleProjDrefExplicitLod 2071 2076 2074 Grad ConstOffset 2073 2073 722 + 2078: 208(ptr) AccessChain 1932(texel) 207 + 2079:6(float16_t) Load 2078 + 2080:6(float16_t) FAdd 2079 2077 + 2081: 208(ptr) AccessChain 1932(texel) 207 + Store 2081 2080 + 2082: 224 Load 226(s2DShadow) + 2083:175(f16vec3) Load 177(f16c3) + 2084: 52(float) Load 215(compare) + 2085:154(f16vec2) Load 1414(f16dPdxy2) + 2086:6(float16_t) ImageSampleProjDrefExplicitLod 2082 2083 2084 Grad ConstOffset 2085 2085 722 + 2087: 208(ptr) AccessChain 1932(texel) 207 + 2088:6(float16_t) Load 2087 + 2089:6(float16_t) FAdd 2088 2086 + 2090: 208(ptr) AccessChain 1932(texel) 207 + Store 2090 2089 + 2091: 7(f16vec4) Load 1932(texel) + ReturnValue 2091 FunctionEnd 35(testTextureGather(): 7(f16vec4) Function None 8 36: Label - 2184(texel): 64(ptr) Variable Function - Store 2184(texel) 121 - 2185: 143 Load 145(s2D) - 2186: 53(fvec2) Load 148(c2) - 2188: 7(f16vec4) ImageGather 2185 2186 2187 - 2189: 7(f16vec4) Load 2184(texel) - 2190: 7(f16vec4) FAdd 2189 2188 - Store 2184(texel) 2190 - 2191: 143 Load 145(s2D) - 2192:154(f16vec2) Load 156(f16c2) - 2193:6(float16_t) Load 137(f16bias) - 2194: 7(f16vec4) ImageGather 2191 2192 2187 Bias 2193 - 2195: 7(f16vec4) Load 2184(texel) - 2196: 7(f16vec4) FAdd 2195 2194 - Store 2184(texel) 2196 - 2197: 284 Load 286(s2DArray) - 2198: 167(fvec3) Load 169(c3) - 2199: 7(f16vec4) ImageGather 2197 2198 2187 - 2200: 7(f16vec4) Load 2184(texel) - 2201: 7(f16vec4) FAdd 2200 2199 - Store 2184(texel) 2201 - 2202: 284 Load 286(s2DArray) - 2203:175(f16vec3) Load 177(f16c3) - 2204:6(float16_t) Load 137(f16bias) - 2205: 7(f16vec4) ImageGather 2202 2203 2187 Bias 2204 - 2206: 7(f16vec4) Load 2184(texel) - 2207: 7(f16vec4) FAdd 2206 2205 - Store 2184(texel) 2207 - 2208: 184 Load 186(sCube) - 2209: 167(fvec3) Load 169(c3) - 2210: 7(f16vec4) ImageGather 2208 2209 2187 - 2211: 7(f16vec4) Load 2184(texel) - 2212: 7(f16vec4) FAdd 2211 2210 - Store 2184(texel) 2212 - 2213: 184 Load 186(sCube) - 2214:175(f16vec3) Load 177(f16c3) - 2215:6(float16_t) Load 137(f16bias) - 2216: 7(f16vec4) ImageGather 2213 2214 2187 Bias 2215 - 2217: 7(f16vec4) Load 2184(texel) + 2094(texel): 64(ptr) Variable Function + Store 2094(texel) 121 + 2095: 143 Load 145(s2D) + 2096: 53(fvec2) Load 148(c2) + 2098: 7(f16vec4) ImageGather 2095 2096 2097 + 2099: 7(f16vec4) Load 2094(texel) + 2100: 7(f16vec4) FAdd 2099 2098 + Store 2094(texel) 2100 + 2101: 143 Load 145(s2D) + 2102:154(f16vec2) Load 156(f16c2) + 2103:6(float16_t) Load 137(f16bias) + 2104: 7(f16vec4) ImageGather 2101 2102 2097 Bias 2103 + 2105: 7(f16vec4) Load 2094(texel) + 2106: 7(f16vec4) FAdd 2105 2104 + Store 2094(texel) 2106 + 2107: 284 Load 286(s2DArray) + 2108: 167(fvec3) Load 169(c3) + 2109: 7(f16vec4) ImageGather 2107 2108 2097 + 2110: 7(f16vec4) Load 2094(texel) + 2111: 7(f16vec4) FAdd 2110 2109 + Store 2094(texel) 2111 + 2112: 284 Load 286(s2DArray) + 2113:175(f16vec3) Load 177(f16c3) + 2114:6(float16_t) Load 137(f16bias) + 2115: 7(f16vec4) ImageGather 2112 2113 2097 Bias 2114 + 2116: 7(f16vec4) Load 2094(texel) + 2117: 7(f16vec4) FAdd 2116 2115 + Store 2094(texel) 2117 + 2118: 184 Load 186(sCube) + 2119: 167(fvec3) Load 169(c3) + 2120: 7(f16vec4) ImageGather 2118 2119 2097 + 2121: 7(f16vec4) Load 2094(texel) + 2122: 7(f16vec4) FAdd 2121 2120 + Store 2094(texel) 2122 + 2123: 184 Load 186(sCube) + 2124:175(f16vec3) Load 177(f16c3) + 2125:6(float16_t) Load 137(f16bias) + 2126: 7(f16vec4) ImageGather 2123 2124 2097 Bias 2125 + 2127: 7(f16vec4) Load 2094(texel) + 2128: 7(f16vec4) FAdd 2127 2126 + Store 2094(texel) 2128 + 2129: 299 Load 301(sCubeArray) + 2130: 249(fvec4) Load 251(c4) + 2131: 7(f16vec4) ImageGather 2129 2130 2097 + 2132: 7(f16vec4) Load 2094(texel) + 2133: 7(f16vec4) FAdd 2132 2131 + Store 2094(texel) 2133 + 2134: 299 Load 301(sCubeArray) + 2135: 7(f16vec4) Load 309(f16c4) + 2136:6(float16_t) Load 137(f16bias) + 2137: 7(f16vec4) ImageGather 2134 2135 2097 Bias 2136 + 2138: 7(f16vec4) Load 2094(texel) + 2139: 7(f16vec4) FAdd 2138 2137 + Store 2094(texel) 2139 + 2140: 357 Load 359(s2DRect) + 2141: 53(fvec2) Load 148(c2) + 2142: 7(f16vec4) ImageGather 2140 2141 2097 + 2143: 7(f16vec4) Load 2094(texel) + 2144: 7(f16vec4) FAdd 2143 2142 + Store 2094(texel) 2144 + 2145: 357 Load 359(s2DRect) + 2146:154(f16vec2) Load 156(f16c2) + 2147: 7(f16vec4) ImageGather 2145 2146 2097 + 2148: 7(f16vec4) Load 2094(texel) + 2149: 7(f16vec4) FAdd 2148 2147 + Store 2094(texel) 2149 + 2150: 224 Load 226(s2DShadow) + 2151: 53(fvec2) Load 148(c2) + 2152: 52(float) Load 215(compare) + 2153: 7(f16vec4) ImageDrefGather 2150 2151 2152 + 2154: 7(f16vec4) Load 2094(texel) + 2155: 7(f16vec4) FAdd 2154 2153 + Store 2094(texel) 2155 + 2156: 224 Load 226(s2DShadow) + 2157:154(f16vec2) Load 156(f16c2) + 2158: 52(float) Load 215(compare) + 2159: 7(f16vec4) ImageDrefGather 2156 2157 2158 + 2160: 7(f16vec4) Load 2094(texel) + 2161: 7(f16vec4) FAdd 2160 2159 + Store 2094(texel) 2161 + 2162: 337 Load 339(s2DArrayShadow) + 2163: 167(fvec3) Load 169(c3) + 2164: 52(float) Load 215(compare) + 2165: 7(f16vec4) ImageDrefGather 2162 2163 2164 + 2166: 7(f16vec4) Load 2094(texel) + 2167: 7(f16vec4) FAdd 2166 2165 + Store 2094(texel) 2167 + 2168: 337 Load 339(s2DArrayShadow) + 2169:175(f16vec3) Load 177(f16c3) + 2170: 52(float) Load 215(compare) + 2171: 7(f16vec4) ImageDrefGather 2168 2169 2170 + 2172: 7(f16vec4) Load 2094(texel) + 2173: 7(f16vec4) FAdd 2172 2171 + Store 2094(texel) 2173 + 2174: 245 Load 247(sCubeShadow) + 2175: 167(fvec3) Load 169(c3) + 2176: 52(float) Load 215(compare) + 2177: 7(f16vec4) ImageDrefGather 2174 2175 2176 + 2178: 7(f16vec4) Load 2094(texel) + 2179: 7(f16vec4) FAdd 2178 2177 + Store 2094(texel) 2179 + 2180: 245 Load 247(sCubeShadow) + 2181:175(f16vec3) Load 177(f16c3) + 2182: 52(float) Load 215(compare) + 2183: 7(f16vec4) ImageDrefGather 2180 2181 2182 + 2184: 7(f16vec4) Load 2094(texel) + 2185: 7(f16vec4) FAdd 2184 2183 + Store 2094(texel) 2185 + 2186: 391 Load 393(sCubeArrayShadow) + 2187: 249(fvec4) Load 251(c4) + 2188: 52(float) Load 215(compare) + 2189: 7(f16vec4) ImageDrefGather 2186 2187 2188 + 2190: 7(f16vec4) Load 2094(texel) + 2191: 7(f16vec4) FAdd 2190 2189 + Store 2094(texel) 2191 + 2192: 391 Load 393(sCubeArrayShadow) + 2193: 7(f16vec4) Load 309(f16c4) + 2194: 52(float) Load 215(compare) + 2195: 7(f16vec4) ImageDrefGather 2192 2193 2194 + 2196: 7(f16vec4) Load 2094(texel) + 2197: 7(f16vec4) FAdd 2196 2195 + Store 2094(texel) 2197 + 2198: 371 Load 373(s2DRectShadow) + 2199: 53(fvec2) Load 148(c2) + 2200: 52(float) Load 215(compare) + 2201: 7(f16vec4) ImageDrefGather 2198 2199 2200 + 2202: 7(f16vec4) Load 2094(texel) + 2203: 7(f16vec4) FAdd 2202 2201 + Store 2094(texel) 2203 + 2204: 371 Load 373(s2DRectShadow) + 2205:154(f16vec2) Load 156(f16c2) + 2206: 52(float) Load 215(compare) + 2207: 7(f16vec4) ImageDrefGather 2204 2205 2206 + 2208: 7(f16vec4) Load 2094(texel) + 2209: 7(f16vec4) FAdd 2208 2207 + Store 2094(texel) 2209 + 2210: 7(f16vec4) Load 2094(texel) + ReturnValue 2210 + FunctionEnd +37(testTextureGatherOffset(): 7(f16vec4) Function None 8 + 38: Label + 2213(texel): 64(ptr) Variable Function + Store 2213(texel) 121 + 2214: 143 Load 145(s2D) + 2215: 53(fvec2) Load 148(c2) + 2216: 7(f16vec4) ImageGather 2214 2215 2097 ConstOffset 722 + 2217: 7(f16vec4) Load 2213(texel) 2218: 7(f16vec4) FAdd 2217 2216 - Store 2184(texel) 2218 - 2219: 299 Load 301(sCubeArray) - 2220: 249(fvec4) Load 251(c4) - 2221: 7(f16vec4) ImageGather 2219 2220 2187 - 2222: 7(f16vec4) Load 2184(texel) - 2223: 7(f16vec4) FAdd 2222 2221 - Store 2184(texel) 2223 - 2224: 299 Load 301(sCubeArray) - 2225: 7(f16vec4) Load 309(f16c4) - 2226:6(float16_t) Load 137(f16bias) - 2227: 7(f16vec4) ImageGather 2224 2225 2187 Bias 2226 - 2228: 7(f16vec4) Load 2184(texel) + Store 2213(texel) 2218 + 2219: 143 Load 145(s2D) + 2220:154(f16vec2) Load 156(f16c2) + 2221:6(float16_t) Load 137(f16bias) + 2222: 7(f16vec4) ImageGather 2219 2220 2097 Bias ConstOffset 2221 722 + 2223: 7(f16vec4) Load 2213(texel) + 2224: 7(f16vec4) FAdd 2223 2222 + Store 2213(texel) 2224 + 2225: 284 Load 286(s2DArray) + 2226: 167(fvec3) Load 169(c3) + 2227: 7(f16vec4) ImageGather 2225 2226 2097 ConstOffset 722 + 2228: 7(f16vec4) Load 2213(texel) 2229: 7(f16vec4) FAdd 2228 2227 - Store 2184(texel) 2229 - 2230: 357 Load 359(s2DRect) - 2231: 53(fvec2) Load 148(c2) - 2232: 7(f16vec4) ImageGather 2230 2231 2187 - 2233: 7(f16vec4) Load 2184(texel) - 2234: 7(f16vec4) FAdd 2233 2232 - Store 2184(texel) 2234 - 2235: 357 Load 359(s2DRect) - 2236:154(f16vec2) Load 156(f16c2) - 2237: 7(f16vec4) ImageGather 2235 2236 2187 - 2238: 7(f16vec4) Load 2184(texel) - 2239: 7(f16vec4) FAdd 2238 2237 - Store 2184(texel) 2239 - 2240: 224 Load 226(s2DShadow) - 2241: 53(fvec2) Load 148(c2) - 2242: 52(float) Load 215(compare) - 2243: 7(f16vec4) ImageDrefGather 2240 2241 2242 - 2244: 7(f16vec4) Load 2184(texel) + Store 2213(texel) 2229 + 2230: 284 Load 286(s2DArray) + 2231:175(f16vec3) Load 177(f16c3) + 2232:6(float16_t) Load 137(f16bias) + 2233: 7(f16vec4) ImageGather 2230 2231 2097 Bias ConstOffset 2232 722 + 2234: 7(f16vec4) Load 2213(texel) + 2235: 7(f16vec4) FAdd 2234 2233 + Store 2213(texel) 2235 + 2236: 357 Load 359(s2DRect) + 2237: 53(fvec2) Load 148(c2) + 2238: 7(f16vec4) ImageGather 2236 2237 2097 ConstOffset 722 + 2239: 7(f16vec4) Load 2213(texel) + 2240: 7(f16vec4) FAdd 2239 2238 + Store 2213(texel) 2240 + 2241: 357 Load 359(s2DRect) + 2242:154(f16vec2) Load 156(f16c2) + 2243: 7(f16vec4) ImageGather 2241 2242 2097 ConstOffset 722 + 2244: 7(f16vec4) Load 2213(texel) 2245: 7(f16vec4) FAdd 2244 2243 - Store 2184(texel) 2245 + Store 2213(texel) 2245 2246: 224 Load 226(s2DShadow) - 2247:154(f16vec2) Load 156(f16c2) + 2247: 53(fvec2) Load 148(c2) 2248: 52(float) Load 215(compare) - 2249: 7(f16vec4) ImageDrefGather 2246 2247 2248 - 2250: 7(f16vec4) Load 2184(texel) + 2249: 7(f16vec4) ImageDrefGather 2246 2247 2248 ConstOffset 722 + 2250: 7(f16vec4) Load 2213(texel) 2251: 7(f16vec4) FAdd 2250 2249 - Store 2184(texel) 2251 - 2252: 337 Load 339(s2DArrayShadow) - 2253: 167(fvec3) Load 169(c3) + Store 2213(texel) 2251 + 2252: 224 Load 226(s2DShadow) + 2253:154(f16vec2) Load 156(f16c2) 2254: 52(float) Load 215(compare) - 2255: 7(f16vec4) ImageDrefGather 2252 2253 2254 - 2256: 7(f16vec4) Load 2184(texel) + 2255: 7(f16vec4) ImageDrefGather 2252 2253 2254 ConstOffset 722 + 2256: 7(f16vec4) Load 2213(texel) 2257: 7(f16vec4) FAdd 2256 2255 - Store 2184(texel) 2257 + Store 2213(texel) 2257 2258: 337 Load 339(s2DArrayShadow) - 2259:175(f16vec3) Load 177(f16c3) + 2259: 167(fvec3) Load 169(c3) 2260: 52(float) Load 215(compare) - 2261: 7(f16vec4) ImageDrefGather 2258 2259 2260 - 2262: 7(f16vec4) Load 2184(texel) + 2261: 7(f16vec4) ImageDrefGather 2258 2259 2260 ConstOffset 722 + 2262: 7(f16vec4) Load 2213(texel) 2263: 7(f16vec4) FAdd 2262 2261 - Store 2184(texel) 2263 - 2264: 245 Load 247(sCubeShadow) - 2265: 167(fvec3) Load 169(c3) + Store 2213(texel) 2263 + 2264: 337 Load 339(s2DArrayShadow) + 2265:175(f16vec3) Load 177(f16c3) 2266: 52(float) Load 215(compare) - 2267: 7(f16vec4) ImageDrefGather 2264 2265 2266 - 2268: 7(f16vec4) Load 2184(texel) + 2267: 7(f16vec4) ImageDrefGather 2264 2265 2266 ConstOffset 722 + 2268: 7(f16vec4) Load 2213(texel) 2269: 7(f16vec4) FAdd 2268 2267 - Store 2184(texel) 2269 - 2270: 245 Load 247(sCubeShadow) - 2271:175(f16vec3) Load 177(f16c3) + Store 2213(texel) 2269 + 2270: 371 Load 373(s2DRectShadow) + 2271: 53(fvec2) Load 148(c2) 2272: 52(float) Load 215(compare) - 2273: 7(f16vec4) ImageDrefGather 2270 2271 2272 - 2274: 7(f16vec4) Load 2184(texel) + 2273: 7(f16vec4) ImageDrefGather 2270 2271 2272 ConstOffset 722 + 2274: 7(f16vec4) Load 2213(texel) 2275: 7(f16vec4) FAdd 2274 2273 - Store 2184(texel) 2275 - 2276: 391 Load 393(sCubeArrayShadow) - 2277: 249(fvec4) Load 251(c4) + Store 2213(texel) 2275 + 2276: 371 Load 373(s2DRectShadow) + 2277:154(f16vec2) Load 156(f16c2) 2278: 52(float) Load 215(compare) - 2279: 7(f16vec4) ImageDrefGather 2276 2277 2278 - 2280: 7(f16vec4) Load 2184(texel) + 2279: 7(f16vec4) ImageDrefGather 2276 2277 2278 ConstOffset 722 + 2280: 7(f16vec4) Load 2213(texel) 2281: 7(f16vec4) FAdd 2280 2279 - Store 2184(texel) 2281 - 2282: 391 Load 393(sCubeArrayShadow) - 2283: 7(f16vec4) Load 309(f16c4) - 2284: 52(float) Load 215(compare) - 2285: 7(f16vec4) ImageDrefGather 2282 2283 2284 - 2286: 7(f16vec4) Load 2184(texel) - 2287: 7(f16vec4) FAdd 2286 2285 - Store 2184(texel) 2287 - 2288: 371 Load 373(s2DRectShadow) - 2289: 53(fvec2) Load 148(c2) - 2290: 52(float) Load 215(compare) - 2291: 7(f16vec4) ImageDrefGather 2288 2289 2290 - 2292: 7(f16vec4) Load 2184(texel) - 2293: 7(f16vec4) FAdd 2292 2291 - Store 2184(texel) 2293 - 2294: 371 Load 373(s2DRectShadow) - 2295:154(f16vec2) Load 156(f16c2) - 2296: 52(float) Load 215(compare) - 2297: 7(f16vec4) ImageDrefGather 2294 2295 2296 - 2298: 7(f16vec4) Load 2184(texel) - 2299: 7(f16vec4) FAdd 2298 2297 - Store 2184(texel) 2299 - 2300: 7(f16vec4) Load 2184(texel) - ReturnValue 2300 - FunctionEnd -37(testTextureGatherOffset(): 7(f16vec4) Function None 8 - 38: Label - 2303(texel): 64(ptr) Variable Function - Store 2303(texel) 121 - 2304: 143 Load 145(s2D) - 2305: 53(fvec2) Load 148(c2) - 2306: 7(f16vec4) ImageGather 2304 2305 2187 ConstOffset 722 - 2307: 7(f16vec4) Load 2303(texel) - 2308: 7(f16vec4) FAdd 2307 2306 - Store 2303(texel) 2308 - 2309: 143 Load 145(s2D) - 2310:154(f16vec2) Load 156(f16c2) - 2311:6(float16_t) Load 137(f16bias) - 2312: 7(f16vec4) ImageGather 2309 2310 2187 Bias ConstOffset 2311 722 - 2313: 7(f16vec4) Load 2303(texel) - 2314: 7(f16vec4) FAdd 2313 2312 - Store 2303(texel) 2314 - 2315: 284 Load 286(s2DArray) - 2316: 167(fvec3) Load 169(c3) - 2317: 7(f16vec4) ImageGather 2315 2316 2187 ConstOffset 722 - 2318: 7(f16vec4) Load 2303(texel) - 2319: 7(f16vec4) FAdd 2318 2317 - Store 2303(texel) 2319 - 2320: 284 Load 286(s2DArray) - 2321:175(f16vec3) Load 177(f16c3) - 2322:6(float16_t) Load 137(f16bias) - 2323: 7(f16vec4) ImageGather 2320 2321 2187 Bias ConstOffset 2322 722 - 2324: 7(f16vec4) Load 2303(texel) - 2325: 7(f16vec4) FAdd 2324 2323 - Store 2303(texel) 2325 - 2326: 357 Load 359(s2DRect) - 2327: 53(fvec2) Load 148(c2) - 2328: 7(f16vec4) ImageGather 2326 2327 2187 ConstOffset 722 - 2329: 7(f16vec4) Load 2303(texel) - 2330: 7(f16vec4) FAdd 2329 2328 - Store 2303(texel) 2330 - 2331: 357 Load 359(s2DRect) - 2332:154(f16vec2) Load 156(f16c2) - 2333: 7(f16vec4) ImageGather 2331 2332 2187 ConstOffset 722 - 2334: 7(f16vec4) Load 2303(texel) - 2335: 7(f16vec4) FAdd 2334 2333 - Store 2303(texel) 2335 - 2336: 224 Load 226(s2DShadow) - 2337: 53(fvec2) Load 148(c2) - 2338: 52(float) Load 215(compare) - 2339: 7(f16vec4) ImageDrefGather 2336 2337 2338 ConstOffset 722 - 2340: 7(f16vec4) Load 2303(texel) - 2341: 7(f16vec4) FAdd 2340 2339 - Store 2303(texel) 2341 - 2342: 224 Load 226(s2DShadow) - 2343:154(f16vec2) Load 156(f16c2) - 2344: 52(float) Load 215(compare) - 2345: 7(f16vec4) ImageDrefGather 2342 2343 2344 ConstOffset 722 - 2346: 7(f16vec4) Load 2303(texel) - 2347: 7(f16vec4) FAdd 2346 2345 - Store 2303(texel) 2347 - 2348: 337 Load 339(s2DArrayShadow) - 2349: 167(fvec3) Load 169(c3) - 2350: 52(float) Load 215(compare) - 2351: 7(f16vec4) ImageDrefGather 2348 2349 2350 ConstOffset 722 - 2352: 7(f16vec4) Load 2303(texel) - 2353: 7(f16vec4) FAdd 2352 2351 - Store 2303(texel) 2353 - 2354: 337 Load 339(s2DArrayShadow) - 2355:175(f16vec3) Load 177(f16c3) - 2356: 52(float) Load 215(compare) - 2357: 7(f16vec4) ImageDrefGather 2354 2355 2356 ConstOffset 722 - 2358: 7(f16vec4) Load 2303(texel) - 2359: 7(f16vec4) FAdd 2358 2357 - Store 2303(texel) 2359 - 2360: 371 Load 373(s2DRectShadow) - 2361: 53(fvec2) Load 148(c2) - 2362: 52(float) Load 215(compare) - 2363: 7(f16vec4) ImageDrefGather 2360 2361 2362 ConstOffset 722 - 2364: 7(f16vec4) Load 2303(texel) - 2365: 7(f16vec4) FAdd 2364 2363 - Store 2303(texel) 2365 - 2366: 371 Load 373(s2DRectShadow) - 2367:154(f16vec2) Load 156(f16c2) - 2368: 52(float) Load 215(compare) - 2369: 7(f16vec4) ImageDrefGather 2366 2367 2368 ConstOffset 722 - 2370: 7(f16vec4) Load 2303(texel) - 2371: 7(f16vec4) FAdd 2370 2369 - Store 2303(texel) 2371 - 2372: 7(f16vec4) Load 2303(texel) - ReturnValue 2372 + Store 2213(texel) 2281 + 2282: 7(f16vec4) Load 2213(texel) + ReturnValue 2282 FunctionEnd 39(testTextureGatherOffsets(): 7(f16vec4) Function None 8 40: Label - 2375(texel): 64(ptr) Variable Function - Store 2375(texel) 121 - 2376: 143 Load 145(s2D) - 2377: 53(fvec2) Load 148(c2) - 2381: 7(f16vec4) ImageGather 2376 2377 2187 ConstOffsets 2380 - 2382: 7(f16vec4) Load 2375(texel) - 2383: 7(f16vec4) FAdd 2382 2381 - Store 2375(texel) 2383 - 2384: 143 Load 145(s2D) - 2385:154(f16vec2) Load 156(f16c2) - 2386:6(float16_t) Load 137(f16bias) - 2387: 7(f16vec4) ImageGather 2384 2385 2187 Bias ConstOffsets 2386 2380 - 2388: 7(f16vec4) Load 2375(texel) - 2389: 7(f16vec4) FAdd 2388 2387 - Store 2375(texel) 2389 - 2390: 284 Load 286(s2DArray) - 2391: 167(fvec3) Load 169(c3) - 2392: 7(f16vec4) ImageGather 2390 2391 2187 ConstOffsets 2380 - 2393: 7(f16vec4) Load 2375(texel) - 2394: 7(f16vec4) FAdd 2393 2392 - Store 2375(texel) 2394 - 2395: 284 Load 286(s2DArray) - 2396:175(f16vec3) Load 177(f16c3) - 2397:6(float16_t) Load 137(f16bias) - 2398: 7(f16vec4) ImageGather 2395 2396 2187 Bias ConstOffsets 2397 2380 - 2399: 7(f16vec4) Load 2375(texel) - 2400: 7(f16vec4) FAdd 2399 2398 - Store 2375(texel) 2400 - 2401: 357 Load 359(s2DRect) - 2402: 53(fvec2) Load 148(c2) - 2403: 7(f16vec4) ImageGather 2401 2402 2187 ConstOffsets 2380 - 2404: 7(f16vec4) Load 2375(texel) - 2405: 7(f16vec4) FAdd 2404 2403 - Store 2375(texel) 2405 - 2406: 357 Load 359(s2DRect) - 2407:154(f16vec2) Load 156(f16c2) - 2408: 7(f16vec4) ImageGather 2406 2407 2187 ConstOffsets 2380 - 2409: 7(f16vec4) Load 2375(texel) - 2410: 7(f16vec4) FAdd 2409 2408 - Store 2375(texel) 2410 - 2411: 224 Load 226(s2DShadow) - 2412: 53(fvec2) Load 148(c2) - 2413: 52(float) Load 215(compare) - 2414: 7(f16vec4) ImageDrefGather 2411 2412 2413 ConstOffsets 2380 - 2415: 7(f16vec4) Load 2375(texel) - 2416: 7(f16vec4) FAdd 2415 2414 - Store 2375(texel) 2416 - 2417: 224 Load 226(s2DShadow) - 2418:154(f16vec2) Load 156(f16c2) - 2419: 52(float) Load 215(compare) - 2420: 7(f16vec4) ImageDrefGather 2417 2418 2419 ConstOffsets 2380 - 2421: 7(f16vec4) Load 2375(texel) - 2422: 7(f16vec4) FAdd 2421 2420 - Store 2375(texel) 2422 - 2423: 337 Load 339(s2DArrayShadow) - 2424: 167(fvec3) Load 169(c3) - 2425: 52(float) Load 215(compare) - 2426: 7(f16vec4) ImageDrefGather 2423 2424 2425 ConstOffsets 2380 - 2427: 7(f16vec4) Load 2375(texel) - 2428: 7(f16vec4) FAdd 2427 2426 - Store 2375(texel) 2428 - 2429: 337 Load 339(s2DArrayShadow) - 2430:175(f16vec3) Load 177(f16c3) - 2431: 52(float) Load 215(compare) - 2432: 7(f16vec4) ImageDrefGather 2429 2430 2431 ConstOffsets 2380 - 2433: 7(f16vec4) Load 2375(texel) - 2434: 7(f16vec4) FAdd 2433 2432 - Store 2375(texel) 2434 - 2435: 371 Load 373(s2DRectShadow) - 2436: 53(fvec2) Load 148(c2) - 2437: 52(float) Load 215(compare) - 2438: 7(f16vec4) ImageDrefGather 2435 2436 2437 ConstOffsets 2380 - 2439: 7(f16vec4) Load 2375(texel) - 2440: 7(f16vec4) FAdd 2439 2438 - Store 2375(texel) 2440 - 2441: 371 Load 373(s2DRectShadow) - 2442:154(f16vec2) Load 156(f16c2) - 2443: 52(float) Load 215(compare) - 2444: 7(f16vec4) ImageDrefGather 2441 2442 2443 ConstOffsets 2380 - 2445: 7(f16vec4) Load 2375(texel) - 2446: 7(f16vec4) FAdd 2445 2444 - Store 2375(texel) 2446 - 2447: 7(f16vec4) Load 2375(texel) - ReturnValue 2447 + 2285(texel): 64(ptr) Variable Function + Store 2285(texel) 121 + 2286: 143 Load 145(s2D) + 2287: 53(fvec2) Load 148(c2) + 2291: 7(f16vec4) ImageGather 2286 2287 2097 ConstOffsets 2290 + 2292: 7(f16vec4) Load 2285(texel) + 2293: 7(f16vec4) FAdd 2292 2291 + Store 2285(texel) 2293 + 2294: 143 Load 145(s2D) + 2295:154(f16vec2) Load 156(f16c2) + 2296:6(float16_t) Load 137(f16bias) + 2297: 7(f16vec4) ImageGather 2294 2295 2097 Bias ConstOffsets 2296 2290 + 2298: 7(f16vec4) Load 2285(texel) + 2299: 7(f16vec4) FAdd 2298 2297 + Store 2285(texel) 2299 + 2300: 284 Load 286(s2DArray) + 2301: 167(fvec3) Load 169(c3) + 2302: 7(f16vec4) ImageGather 2300 2301 2097 ConstOffsets 2290 + 2303: 7(f16vec4) Load 2285(texel) + 2304: 7(f16vec4) FAdd 2303 2302 + Store 2285(texel) 2304 + 2305: 284 Load 286(s2DArray) + 2306:175(f16vec3) Load 177(f16c3) + 2307:6(float16_t) Load 137(f16bias) + 2308: 7(f16vec4) ImageGather 2305 2306 2097 Bias ConstOffsets 2307 2290 + 2309: 7(f16vec4) Load 2285(texel) + 2310: 7(f16vec4) FAdd 2309 2308 + Store 2285(texel) 2310 + 2311: 357 Load 359(s2DRect) + 2312: 53(fvec2) Load 148(c2) + 2313: 7(f16vec4) ImageGather 2311 2312 2097 ConstOffsets 2290 + 2314: 7(f16vec4) Load 2285(texel) + 2315: 7(f16vec4) FAdd 2314 2313 + Store 2285(texel) 2315 + 2316: 357 Load 359(s2DRect) + 2317:154(f16vec2) Load 156(f16c2) + 2318: 7(f16vec4) ImageGather 2316 2317 2097 ConstOffsets 2290 + 2319: 7(f16vec4) Load 2285(texel) + 2320: 7(f16vec4) FAdd 2319 2318 + Store 2285(texel) 2320 + 2321: 224 Load 226(s2DShadow) + 2322: 53(fvec2) Load 148(c2) + 2323: 52(float) Load 215(compare) + 2324: 7(f16vec4) ImageDrefGather 2321 2322 2323 ConstOffsets 2290 + 2325: 7(f16vec4) Load 2285(texel) + 2326: 7(f16vec4) FAdd 2325 2324 + Store 2285(texel) 2326 + 2327: 224 Load 226(s2DShadow) + 2328:154(f16vec2) Load 156(f16c2) + 2329: 52(float) Load 215(compare) + 2330: 7(f16vec4) ImageDrefGather 2327 2328 2329 ConstOffsets 2290 + 2331: 7(f16vec4) Load 2285(texel) + 2332: 7(f16vec4) FAdd 2331 2330 + Store 2285(texel) 2332 + 2333: 337 Load 339(s2DArrayShadow) + 2334: 167(fvec3) Load 169(c3) + 2335: 52(float) Load 215(compare) + 2336: 7(f16vec4) ImageDrefGather 2333 2334 2335 ConstOffsets 2290 + 2337: 7(f16vec4) Load 2285(texel) + 2338: 7(f16vec4) FAdd 2337 2336 + Store 2285(texel) 2338 + 2339: 337 Load 339(s2DArrayShadow) + 2340:175(f16vec3) Load 177(f16c3) + 2341: 52(float) Load 215(compare) + 2342: 7(f16vec4) ImageDrefGather 2339 2340 2341 ConstOffsets 2290 + 2343: 7(f16vec4) Load 2285(texel) + 2344: 7(f16vec4) FAdd 2343 2342 + Store 2285(texel) 2344 + 2345: 371 Load 373(s2DRectShadow) + 2346: 53(fvec2) Load 148(c2) + 2347: 52(float) Load 215(compare) + 2348: 7(f16vec4) ImageDrefGather 2345 2346 2347 ConstOffsets 2290 + 2349: 7(f16vec4) Load 2285(texel) + 2350: 7(f16vec4) FAdd 2349 2348 + Store 2285(texel) 2350 + 2351: 371 Load 373(s2DRectShadow) + 2352:154(f16vec2) Load 156(f16c2) + 2353: 52(float) Load 215(compare) + 2354: 7(f16vec4) ImageDrefGather 2351 2352 2353 ConstOffsets 2290 + 2355: 7(f16vec4) Load 2285(texel) + 2356: 7(f16vec4) FAdd 2355 2354 + Store 2285(texel) 2356 + 2357: 7(f16vec4) Load 2285(texel) + ReturnValue 2357 FunctionEnd 41(testTextureGatherLod(): 7(f16vec4) Function None 8 42: Label - 2450(texel): 64(ptr) Variable Function - Store 2450(texel) 121 - 2451: 143 Load 145(s2D) - 2452: 53(fvec2) Load 148(c2) - 2453: 52(float) Load 565(lod) - 2454: 7(f16vec4) ImageGather 2451 2452 2187 Lod 2453 - 2455: 7(f16vec4) Load 2450(texel) - 2456: 7(f16vec4) FAdd 2455 2454 - Store 2450(texel) 2456 - 2457: 143 Load 145(s2D) - 2458:154(f16vec2) Load 156(f16c2) - 2459:6(float16_t) Load 572(f16lod) - 2460: 7(f16vec4) ImageGather 2457 2458 2187 Lod 2459 - 2461: 7(f16vec4) Load 2450(texel) - 2462: 7(f16vec4) FAdd 2461 2460 - Store 2450(texel) 2462 - 2463: 284 Load 286(s2DArray) - 2464: 167(fvec3) Load 169(c3) - 2465: 52(float) Load 565(lod) - 2466: 7(f16vec4) ImageGather 2463 2464 2187 Lod 2465 - 2467: 7(f16vec4) Load 2450(texel) - 2468: 7(f16vec4) FAdd 2467 2466 - Store 2450(texel) 2468 - 2469: 284 Load 286(s2DArray) - 2470:175(f16vec3) Load 177(f16c3) - 2471:6(float16_t) Load 572(f16lod) - 2472: 7(f16vec4) ImageGather 2469 2470 2187 Lod 2471 - 2473: 7(f16vec4) Load 2450(texel) - 2474: 7(f16vec4) FAdd 2473 2472 - Store 2450(texel) 2474 - 2475: 184 Load 186(sCube) - 2476: 167(fvec3) Load 169(c3) - 2477: 52(float) Load 565(lod) - 2478: 7(f16vec4) ImageGather 2475 2476 2187 Lod 2477 - 2479: 7(f16vec4) Load 2450(texel) - 2480: 7(f16vec4) FAdd 2479 2478 - Store 2450(texel) 2480 - 2481: 184 Load 186(sCube) - 2482:175(f16vec3) Load 177(f16c3) - 2483:6(float16_t) Load 572(f16lod) - 2484: 7(f16vec4) ImageGather 2481 2482 2187 Lod 2483 - 2485: 7(f16vec4) Load 2450(texel) - 2486: 7(f16vec4) FAdd 2485 2484 - Store 2450(texel) 2486 - 2487: 299 Load 301(sCubeArray) - 2488: 249(fvec4) Load 251(c4) - 2489: 52(float) Load 565(lod) - 2490: 7(f16vec4) ImageGather 2487 2488 2187 Lod 2489 - 2491: 7(f16vec4) Load 2450(texel) - 2492: 7(f16vec4) FAdd 2491 2490 - Store 2450(texel) 2492 - 2493: 299 Load 301(sCubeArray) - 2494: 7(f16vec4) Load 309(f16c4) - 2495:6(float16_t) Load 572(f16lod) - 2496: 7(f16vec4) ImageGather 2493 2494 2187 Lod 2495 - 2497: 7(f16vec4) Load 2450(texel) - 2498: 7(f16vec4) FAdd 2497 2496 - Store 2450(texel) 2498 - 2499: 7(f16vec4) Load 2450(texel) - ReturnValue 2499 + 2360(texel): 64(ptr) Variable Function + Store 2360(texel) 121 + 2361: 143 Load 145(s2D) + 2362: 53(fvec2) Load 148(c2) + 2363: 52(float) Load 565(lod) + 2364: 7(f16vec4) ImageGather 2361 2362 2097 Lod 2363 + 2365: 7(f16vec4) Load 2360(texel) + 2366: 7(f16vec4) FAdd 2365 2364 + Store 2360(texel) 2366 + 2367: 143 Load 145(s2D) + 2368:154(f16vec2) Load 156(f16c2) + 2369:6(float16_t) Load 572(f16lod) + 2370: 7(f16vec4) ImageGather 2367 2368 2097 Lod 2369 + 2371: 7(f16vec4) Load 2360(texel) + 2372: 7(f16vec4) FAdd 2371 2370 + Store 2360(texel) 2372 + 2373: 284 Load 286(s2DArray) + 2374: 167(fvec3) Load 169(c3) + 2375: 52(float) Load 565(lod) + 2376: 7(f16vec4) ImageGather 2373 2374 2097 Lod 2375 + 2377: 7(f16vec4) Load 2360(texel) + 2378: 7(f16vec4) FAdd 2377 2376 + Store 2360(texel) 2378 + 2379: 284 Load 286(s2DArray) + 2380:175(f16vec3) Load 177(f16c3) + 2381:6(float16_t) Load 572(f16lod) + 2382: 7(f16vec4) ImageGather 2379 2380 2097 Lod 2381 + 2383: 7(f16vec4) Load 2360(texel) + 2384: 7(f16vec4) FAdd 2383 2382 + Store 2360(texel) 2384 + 2385: 184 Load 186(sCube) + 2386: 167(fvec3) Load 169(c3) + 2387: 52(float) Load 565(lod) + 2388: 7(f16vec4) ImageGather 2385 2386 2097 Lod 2387 + 2389: 7(f16vec4) Load 2360(texel) + 2390: 7(f16vec4) FAdd 2389 2388 + Store 2360(texel) 2390 + 2391: 184 Load 186(sCube) + 2392:175(f16vec3) Load 177(f16c3) + 2393:6(float16_t) Load 572(f16lod) + 2394: 7(f16vec4) ImageGather 2391 2392 2097 Lod 2393 + 2395: 7(f16vec4) Load 2360(texel) + 2396: 7(f16vec4) FAdd 2395 2394 + Store 2360(texel) 2396 + 2397: 299 Load 301(sCubeArray) + 2398: 249(fvec4) Load 251(c4) + 2399: 52(float) Load 565(lod) + 2400: 7(f16vec4) ImageGather 2397 2398 2097 Lod 2399 + 2401: 7(f16vec4) Load 2360(texel) + 2402: 7(f16vec4) FAdd 2401 2400 + Store 2360(texel) 2402 + 2403: 299 Load 301(sCubeArray) + 2404: 7(f16vec4) Load 309(f16c4) + 2405:6(float16_t) Load 572(f16lod) + 2406: 7(f16vec4) ImageGather 2403 2404 2097 Lod 2405 + 2407: 7(f16vec4) Load 2360(texel) + 2408: 7(f16vec4) FAdd 2407 2406 + Store 2360(texel) 2408 + 2409: 7(f16vec4) Load 2360(texel) + ReturnValue 2409 FunctionEnd 43(testTextureGatherLodOffset(): 7(f16vec4) Function None 8 44: Label - 2502(texel): 64(ptr) Variable Function - Store 2502(texel) 121 - 2503: 143 Load 145(s2D) - 2504: 53(fvec2) Load 148(c2) - 2505: 52(float) Load 565(lod) - 2506: 7(f16vec4) ImageGather 2503 2504 2187 Lod ConstOffset 2505 722 - 2507: 7(f16vec4) Load 2502(texel) - 2508: 7(f16vec4) FAdd 2507 2506 - Store 2502(texel) 2508 - 2509: 143 Load 145(s2D) - 2510:154(f16vec2) Load 156(f16c2) - 2511:6(float16_t) Load 572(f16lod) - 2512: 7(f16vec4) ImageGather 2509 2510 2187 Lod ConstOffset 2511 722 - 2513: 7(f16vec4) Load 2502(texel) - 2514: 7(f16vec4) FAdd 2513 2512 - Store 2502(texel) 2514 - 2515: 284 Load 286(s2DArray) - 2516: 167(fvec3) Load 169(c3) - 2517: 52(float) Load 565(lod) - 2518: 7(f16vec4) ImageGather 2515 2516 2187 Lod ConstOffset 2517 722 - 2519: 7(f16vec4) Load 2502(texel) - 2520: 7(f16vec4) FAdd 2519 2518 - Store 2502(texel) 2520 - 2521: 284 Load 286(s2DArray) - 2522:175(f16vec3) Load 177(f16c3) - 2523:6(float16_t) Load 572(f16lod) - 2524: 7(f16vec4) ImageGather 2521 2522 2187 Lod ConstOffset 2523 722 - 2525: 7(f16vec4) Load 2502(texel) - 2526: 7(f16vec4) FAdd 2525 2524 - Store 2502(texel) 2526 - 2527: 7(f16vec4) Load 2502(texel) - ReturnValue 2527 + 2412(texel): 64(ptr) Variable Function + Store 2412(texel) 121 + 2413: 143 Load 145(s2D) + 2414: 53(fvec2) Load 148(c2) + 2415: 52(float) Load 565(lod) + 2416: 7(f16vec4) ImageGather 2413 2414 2097 Lod ConstOffset 2415 722 + 2417: 7(f16vec4) Load 2412(texel) + 2418: 7(f16vec4) FAdd 2417 2416 + Store 2412(texel) 2418 + 2419: 143 Load 145(s2D) + 2420:154(f16vec2) Load 156(f16c2) + 2421:6(float16_t) Load 572(f16lod) + 2422: 7(f16vec4) ImageGather 2419 2420 2097 Lod ConstOffset 2421 722 + 2423: 7(f16vec4) Load 2412(texel) + 2424: 7(f16vec4) FAdd 2423 2422 + Store 2412(texel) 2424 + 2425: 284 Load 286(s2DArray) + 2426: 167(fvec3) Load 169(c3) + 2427: 52(float) Load 565(lod) + 2428: 7(f16vec4) ImageGather 2425 2426 2097 Lod ConstOffset 2427 722 + 2429: 7(f16vec4) Load 2412(texel) + 2430: 7(f16vec4) FAdd 2429 2428 + Store 2412(texel) 2430 + 2431: 284 Load 286(s2DArray) + 2432:175(f16vec3) Load 177(f16c3) + 2433:6(float16_t) Load 572(f16lod) + 2434: 7(f16vec4) ImageGather 2431 2432 2097 Lod ConstOffset 2433 722 + 2435: 7(f16vec4) Load 2412(texel) + 2436: 7(f16vec4) FAdd 2435 2434 + Store 2412(texel) 2436 + 2437: 7(f16vec4) Load 2412(texel) + ReturnValue 2437 FunctionEnd 45(testTextureGatherLodOffsets(): 7(f16vec4) Function None 8 46: Label - 2530(texel): 64(ptr) Variable Function - Store 2530(texel) 121 - 2531: 143 Load 145(s2D) - 2532: 53(fvec2) Load 148(c2) - 2533: 52(float) Load 565(lod) - 2534: 7(f16vec4) ImageGather 2531 2532 2187 Lod ConstOffsets 2533 2380 - 2535: 7(f16vec4) Load 2530(texel) - 2536: 7(f16vec4) FAdd 2535 2534 - Store 2530(texel) 2536 - 2537: 143 Load 145(s2D) - 2538:154(f16vec2) Load 156(f16c2) - 2539:6(float16_t) Load 572(f16lod) - 2540: 7(f16vec4) ImageGather 2537 2538 2187 Lod ConstOffsets 2539 2380 - 2541: 7(f16vec4) Load 2530(texel) - 2542: 7(f16vec4) FAdd 2541 2540 - Store 2530(texel) 2542 - 2543: 284 Load 286(s2DArray) - 2544: 167(fvec3) Load 169(c3) - 2545: 52(float) Load 565(lod) - 2546: 7(f16vec4) ImageGather 2543 2544 2187 Lod ConstOffsets 2545 2380 - 2547: 7(f16vec4) Load 2530(texel) - 2548: 7(f16vec4) FAdd 2547 2546 - Store 2530(texel) 2548 - 2549: 284 Load 286(s2DArray) - 2550:175(f16vec3) Load 177(f16c3) - 2551:6(float16_t) Load 572(f16lod) - 2552: 7(f16vec4) ImageGather 2549 2550 2187 Lod ConstOffsets 2551 2380 - 2553: 7(f16vec4) Load 2530(texel) - 2554: 7(f16vec4) FAdd 2553 2552 - Store 2530(texel) 2554 - 2555: 7(f16vec4) Load 2530(texel) - ReturnValue 2555 + 2440(texel): 64(ptr) Variable Function + Store 2440(texel) 121 + 2441: 143 Load 145(s2D) + 2442: 53(fvec2) Load 148(c2) + 2443: 52(float) Load 565(lod) + 2444: 7(f16vec4) ImageGather 2441 2442 2097 Lod ConstOffsets 2443 2290 + 2445: 7(f16vec4) Load 2440(texel) + 2446: 7(f16vec4) FAdd 2445 2444 + Store 2440(texel) 2446 + 2447: 143 Load 145(s2D) + 2448:154(f16vec2) Load 156(f16c2) + 2449:6(float16_t) Load 572(f16lod) + 2450: 7(f16vec4) ImageGather 2447 2448 2097 Lod ConstOffsets 2449 2290 + 2451: 7(f16vec4) Load 2440(texel) + 2452: 7(f16vec4) FAdd 2451 2450 + Store 2440(texel) 2452 + 2453: 284 Load 286(s2DArray) + 2454: 167(fvec3) Load 169(c3) + 2455: 52(float) Load 565(lod) + 2456: 7(f16vec4) ImageGather 2453 2454 2097 Lod ConstOffsets 2455 2290 + 2457: 7(f16vec4) Load 2440(texel) + 2458: 7(f16vec4) FAdd 2457 2456 + Store 2440(texel) 2458 + 2459: 284 Load 286(s2DArray) + 2460:175(f16vec3) Load 177(f16c3) + 2461:6(float16_t) Load 572(f16lod) + 2462: 7(f16vec4) ImageGather 2459 2460 2097 Lod ConstOffsets 2461 2290 + 2463: 7(f16vec4) Load 2440(texel) + 2464: 7(f16vec4) FAdd 2463 2462 + Store 2440(texel) 2464 + 2465: 7(f16vec4) Load 2440(texel) + ReturnValue 2465 FunctionEnd 50(testTextureSize(): 48(ivec4) Function None 49 51: Label - 2559(size): 2558(ptr) Variable Function - Store 2559(size) 2560 - 2561: 123 Load 125(s1D) - 2562: 52(float) Load 565(lod) - 2563: 47(int) ConvertFToS 2562 - 2564: 122 Image 2561 - 2565: 47(int) ImageQuerySizeLod 2564 2563 - 2567: 2566(ptr) AccessChain 2559(size) 207 - 2568: 47(int) Load 2567 - 2569: 47(int) IAdd 2568 2565 - 2570: 2566(ptr) AccessChain 2559(size) 207 - Store 2570 2569 - 2571: 143 Load 145(s2D) - 2572: 52(float) Load 565(lod) - 2573: 47(int) ConvertFToS 2572 - 2574: 142 Image 2571 - 2575: 721(ivec2) ImageQuerySizeLod 2574 2573 - 2576: 48(ivec4) Load 2559(size) - 2577: 721(ivec2) VectorShuffle 2576 2576 0 1 - 2578: 721(ivec2) IAdd 2577 2575 - 2579: 2566(ptr) AccessChain 2559(size) 207 - 2580: 47(int) CompositeExtract 2578 0 - Store 2579 2580 - 2582: 2566(ptr) AccessChain 2559(size) 2581 - 2583: 47(int) CompositeExtract 2578 1 - Store 2582 2583 - 2584: 163 Load 165(s3D) - 2585: 52(float) Load 565(lod) - 2586: 47(int) ConvertFToS 2585 - 2587: 162 Image 2584 - 2588: 734(ivec3) ImageQuerySizeLod 2587 2586 - 2589: 48(ivec4) Load 2559(size) - 2590: 734(ivec3) VectorShuffle 2589 2589 0 1 2 - 2591: 734(ivec3) IAdd 2590 2588 - 2592: 2566(ptr) AccessChain 2559(size) 207 - 2593: 47(int) CompositeExtract 2591 0 - Store 2592 2593 - 2594: 2566(ptr) AccessChain 2559(size) 2581 - 2595: 47(int) CompositeExtract 2591 1 - Store 2594 2595 - 2597: 2566(ptr) AccessChain 2559(size) 2596 - 2598: 47(int) CompositeExtract 2591 2 - Store 2597 2598 - 2599: 184 Load 186(sCube) - 2600: 52(float) Load 565(lod) - 2601: 47(int) ConvertFToS 2600 - 2602: 183 Image 2599 - 2603: 721(ivec2) ImageQuerySizeLod 2602 2601 - 2604: 48(ivec4) Load 2559(size) - 2605: 721(ivec2) VectorShuffle 2604 2604 0 1 - 2606: 721(ivec2) IAdd 2605 2603 - 2607: 2566(ptr) AccessChain 2559(size) 207 - 2608: 47(int) CompositeExtract 2606 0 - Store 2607 2608 - 2609: 2566(ptr) AccessChain 2559(size) 2581 - 2610: 47(int) CompositeExtract 2606 1 - Store 2609 2610 - 2611: 199 Load 201(s1DShadow) - 2612: 52(float) Load 565(lod) - 2613: 47(int) ConvertFToS 2612 - 2614: 198 Image 2611 - 2615: 47(int) ImageQuerySizeLod 2614 2613 - 2616: 2566(ptr) AccessChain 2559(size) 207 - 2617: 47(int) Load 2616 - 2618: 47(int) IAdd 2617 2615 - 2619: 2566(ptr) AccessChain 2559(size) 207 - Store 2619 2618 - 2620: 224 Load 226(s2DShadow) - 2621: 52(float) Load 565(lod) - 2622: 47(int) ConvertFToS 2621 - 2623: 223 Image 2620 - 2624: 721(ivec2) ImageQuerySizeLod 2623 2622 - 2625: 48(ivec4) Load 2559(size) - 2626: 721(ivec2) VectorShuffle 2625 2625 0 1 - 2627: 721(ivec2) IAdd 2626 2624 - 2628: 2566(ptr) AccessChain 2559(size) 207 - 2629: 47(int) CompositeExtract 2627 0 - Store 2628 2629 - 2630: 2566(ptr) AccessChain 2559(size) 2581 - 2631: 47(int) CompositeExtract 2627 1 - Store 2630 2631 - 2632: 245 Load 247(sCubeShadow) - 2633: 52(float) Load 565(lod) - 2634: 47(int) ConvertFToS 2633 - 2635: 244 Image 2632 - 2636: 721(ivec2) ImageQuerySizeLod 2635 2634 - 2637: 48(ivec4) Load 2559(size) - 2638: 721(ivec2) VectorShuffle 2637 2637 0 1 - 2639: 721(ivec2) IAdd 2638 2636 - 2640: 2566(ptr) AccessChain 2559(size) 207 - 2641: 47(int) CompositeExtract 2639 0 - Store 2640 2641 - 2642: 2566(ptr) AccessChain 2559(size) 2581 - 2643: 47(int) CompositeExtract 2639 1 - Store 2642 2643 - 2644: 299 Load 301(sCubeArray) - 2645: 52(float) Load 565(lod) - 2646: 47(int) ConvertFToS 2645 - 2647: 298 Image 2644 - 2648: 734(ivec3) ImageQuerySizeLod 2647 2646 - 2649: 48(ivec4) Load 2559(size) - 2650: 734(ivec3) VectorShuffle 2649 2649 0 1 2 - 2651: 734(ivec3) IAdd 2650 2648 - 2652: 2566(ptr) AccessChain 2559(size) 207 - 2653: 47(int) CompositeExtract 2651 0 + 2469(size): 2468(ptr) Variable Function + Store 2469(size) 2470 + 2471: 123 Load 125(s1D) + 2472: 52(float) Load 565(lod) + 2473: 47(int) ConvertFToS 2472 + 2474: 122 Image 2471 + 2475: 47(int) ImageQuerySizeLod 2474 2473 + 2477: 2476(ptr) AccessChain 2469(size) 207 + 2478: 47(int) Load 2477 + 2479: 47(int) IAdd 2478 2475 + 2480: 2476(ptr) AccessChain 2469(size) 207 + Store 2480 2479 + 2481: 143 Load 145(s2D) + 2482: 52(float) Load 565(lod) + 2483: 47(int) ConvertFToS 2482 + 2484: 142 Image 2481 + 2485: 721(ivec2) ImageQuerySizeLod 2484 2483 + 2486: 48(ivec4) Load 2469(size) + 2487: 721(ivec2) VectorShuffle 2486 2486 0 1 + 2488: 721(ivec2) IAdd 2487 2485 + 2489: 2476(ptr) AccessChain 2469(size) 207 + 2490: 47(int) CompositeExtract 2488 0 + Store 2489 2490 + 2492: 2476(ptr) AccessChain 2469(size) 2491 + 2493: 47(int) CompositeExtract 2488 1 + Store 2492 2493 + 2494: 163 Load 165(s3D) + 2495: 52(float) Load 565(lod) + 2496: 47(int) ConvertFToS 2495 + 2497: 162 Image 2494 + 2498: 734(ivec3) ImageQuerySizeLod 2497 2496 + 2499: 48(ivec4) Load 2469(size) + 2500: 734(ivec3) VectorShuffle 2499 2499 0 1 2 + 2501: 734(ivec3) IAdd 2500 2498 + 2502: 2476(ptr) AccessChain 2469(size) 207 + 2503: 47(int) CompositeExtract 2501 0 + Store 2502 2503 + 2504: 2476(ptr) AccessChain 2469(size) 2491 + 2505: 47(int) CompositeExtract 2501 1 + Store 2504 2505 + 2507: 2476(ptr) AccessChain 2469(size) 2506 + 2508: 47(int) CompositeExtract 2501 2 + Store 2507 2508 + 2509: 184 Load 186(sCube) + 2510: 52(float) Load 565(lod) + 2511: 47(int) ConvertFToS 2510 + 2512: 183 Image 2509 + 2513: 721(ivec2) ImageQuerySizeLod 2512 2511 + 2514: 48(ivec4) Load 2469(size) + 2515: 721(ivec2) VectorShuffle 2514 2514 0 1 + 2516: 721(ivec2) IAdd 2515 2513 + 2517: 2476(ptr) AccessChain 2469(size) 207 + 2518: 47(int) CompositeExtract 2516 0 + Store 2517 2518 + 2519: 2476(ptr) AccessChain 2469(size) 2491 + 2520: 47(int) CompositeExtract 2516 1 + Store 2519 2520 + 2521: 199 Load 201(s1DShadow) + 2522: 52(float) Load 565(lod) + 2523: 47(int) ConvertFToS 2522 + 2524: 198 Image 2521 + 2525: 47(int) ImageQuerySizeLod 2524 2523 + 2526: 2476(ptr) AccessChain 2469(size) 207 + 2527: 47(int) Load 2526 + 2528: 47(int) IAdd 2527 2525 + 2529: 2476(ptr) AccessChain 2469(size) 207 + Store 2529 2528 + 2530: 224 Load 226(s2DShadow) + 2531: 52(float) Load 565(lod) + 2532: 47(int) ConvertFToS 2531 + 2533: 223 Image 2530 + 2534: 721(ivec2) ImageQuerySizeLod 2533 2532 + 2535: 48(ivec4) Load 2469(size) + 2536: 721(ivec2) VectorShuffle 2535 2535 0 1 + 2537: 721(ivec2) IAdd 2536 2534 + 2538: 2476(ptr) AccessChain 2469(size) 207 + 2539: 47(int) CompositeExtract 2537 0 + Store 2538 2539 + 2540: 2476(ptr) AccessChain 2469(size) 2491 + 2541: 47(int) CompositeExtract 2537 1 + Store 2540 2541 + 2542: 245 Load 247(sCubeShadow) + 2543: 52(float) Load 565(lod) + 2544: 47(int) ConvertFToS 2543 + 2545: 244 Image 2542 + 2546: 721(ivec2) ImageQuerySizeLod 2545 2544 + 2547: 48(ivec4) Load 2469(size) + 2548: 721(ivec2) VectorShuffle 2547 2547 0 1 + 2549: 721(ivec2) IAdd 2548 2546 + 2550: 2476(ptr) AccessChain 2469(size) 207 + 2551: 47(int) CompositeExtract 2549 0 + Store 2550 2551 + 2552: 2476(ptr) AccessChain 2469(size) 2491 + 2553: 47(int) CompositeExtract 2549 1 + Store 2552 2553 + 2554: 299 Load 301(sCubeArray) + 2555: 52(float) Load 565(lod) + 2556: 47(int) ConvertFToS 2555 + 2557: 298 Image 2554 + 2558: 734(ivec3) ImageQuerySizeLod 2557 2556 + 2559: 48(ivec4) Load 2469(size) + 2560: 734(ivec3) VectorShuffle 2559 2559 0 1 2 + 2561: 734(ivec3) IAdd 2560 2558 + 2562: 2476(ptr) AccessChain 2469(size) 207 + 2563: 47(int) CompositeExtract 2561 0 + Store 2562 2563 + 2564: 2476(ptr) AccessChain 2469(size) 2491 + 2565: 47(int) CompositeExtract 2561 1 + Store 2564 2565 + 2566: 2476(ptr) AccessChain 2469(size) 2506 + 2567: 47(int) CompositeExtract 2561 2 + Store 2566 2567 + 2568: 391 Load 393(sCubeArrayShadow) + 2569: 52(float) Load 565(lod) + 2570: 47(int) ConvertFToS 2569 + 2571: 390 Image 2568 + 2572: 734(ivec3) ImageQuerySizeLod 2571 2570 + 2573: 48(ivec4) Load 2469(size) + 2574: 734(ivec3) VectorShuffle 2573 2573 0 1 2 + 2575: 734(ivec3) IAdd 2574 2572 + 2576: 2476(ptr) AccessChain 2469(size) 207 + 2577: 47(int) CompositeExtract 2575 0 + Store 2576 2577 + 2578: 2476(ptr) AccessChain 2469(size) 2491 + 2579: 47(int) CompositeExtract 2575 1 + Store 2578 2579 + 2580: 2476(ptr) AccessChain 2469(size) 2506 + 2581: 47(int) CompositeExtract 2575 2 + Store 2580 2581 + 2582: 357 Load 359(s2DRect) + 2583: 356 Image 2582 + 2584: 721(ivec2) ImageQuerySize 2583 + 2585: 48(ivec4) Load 2469(size) + 2586: 721(ivec2) VectorShuffle 2585 2585 0 1 + 2587: 721(ivec2) IAdd 2586 2584 + 2588: 2476(ptr) AccessChain 2469(size) 207 + 2589: 47(int) CompositeExtract 2587 0 + Store 2588 2589 + 2590: 2476(ptr) AccessChain 2469(size) 2491 + 2591: 47(int) CompositeExtract 2587 1 + Store 2590 2591 + 2592: 371 Load 373(s2DRectShadow) + 2593: 370 Image 2592 + 2594: 721(ivec2) ImageQuerySize 2593 + 2595: 48(ivec4) Load 2469(size) + 2596: 721(ivec2) VectorShuffle 2595 2595 0 1 + 2597: 721(ivec2) IAdd 2596 2594 + 2598: 2476(ptr) AccessChain 2469(size) 207 + 2599: 47(int) CompositeExtract 2597 0 + Store 2598 2599 + 2600: 2476(ptr) AccessChain 2469(size) 2491 + 2601: 47(int) CompositeExtract 2597 1 + Store 2600 2601 + 2602: 269 Load 271(s1DArray) + 2603: 52(float) Load 565(lod) + 2604: 47(int) ConvertFToS 2603 + 2605: 268 Image 2602 + 2606: 721(ivec2) ImageQuerySizeLod 2605 2604 + 2607: 48(ivec4) Load 2469(size) + 2608: 721(ivec2) VectorShuffle 2607 2607 0 1 + 2609: 721(ivec2) IAdd 2608 2606 + 2610: 2476(ptr) AccessChain 2469(size) 207 + 2611: 47(int) CompositeExtract 2609 0 + Store 2610 2611 + 2612: 2476(ptr) AccessChain 2469(size) 2491 + 2613: 47(int) CompositeExtract 2609 1 + Store 2612 2613 + 2614: 284 Load 286(s2DArray) + 2615: 52(float) Load 565(lod) + 2616: 47(int) ConvertFToS 2615 + 2617: 283 Image 2614 + 2618: 734(ivec3) ImageQuerySizeLod 2617 2616 + 2619: 48(ivec4) Load 2469(size) + 2620: 734(ivec3) VectorShuffle 2619 2619 0 1 2 + 2621: 734(ivec3) IAdd 2620 2618 + 2622: 2476(ptr) AccessChain 2469(size) 207 + 2623: 47(int) CompositeExtract 2621 0 + Store 2622 2623 + 2624: 2476(ptr) AccessChain 2469(size) 2491 + 2625: 47(int) CompositeExtract 2621 1 + Store 2624 2625 + 2626: 2476(ptr) AccessChain 2469(size) 2506 + 2627: 47(int) CompositeExtract 2621 2 + Store 2626 2627 + 2628: 316 Load 318(s1DArrayShadow) + 2629: 52(float) Load 565(lod) + 2630: 47(int) ConvertFToS 2629 + 2631: 315 Image 2628 + 2632: 721(ivec2) ImageQuerySizeLod 2631 2630 + 2633: 48(ivec4) Load 2469(size) + 2634: 721(ivec2) VectorShuffle 2633 2633 0 1 + 2635: 721(ivec2) IAdd 2634 2632 + 2636: 2476(ptr) AccessChain 2469(size) 207 + 2637: 47(int) CompositeExtract 2635 0 + Store 2636 2637 + 2638: 2476(ptr) AccessChain 2469(size) 2491 + 2639: 47(int) CompositeExtract 2635 1 + Store 2638 2639 + 2640: 337 Load 339(s2DArrayShadow) + 2641: 52(float) Load 565(lod) + 2642: 47(int) ConvertFToS 2641 + 2643: 336 Image 2640 + 2644: 734(ivec3) ImageQuerySizeLod 2643 2642 + 2645: 48(ivec4) Load 2469(size) + 2646: 734(ivec3) VectorShuffle 2645 2645 0 1 2 + 2647: 734(ivec3) IAdd 2646 2644 + 2648: 2476(ptr) AccessChain 2469(size) 207 + 2649: 47(int) CompositeExtract 2647 0 + Store 2648 2649 + 2650: 2476(ptr) AccessChain 2469(size) 2491 + 2651: 47(int) CompositeExtract 2647 1 + Store 2650 2651 + 2652: 2476(ptr) AccessChain 2469(size) 2506 + 2653: 47(int) CompositeExtract 2647 2 Store 2652 2653 - 2654: 2566(ptr) AccessChain 2559(size) 2581 - 2655: 47(int) CompositeExtract 2651 1 - Store 2654 2655 - 2656: 2566(ptr) AccessChain 2559(size) 2596 - 2657: 47(int) CompositeExtract 2651 2 - Store 2656 2657 - 2658: 391 Load 393(sCubeArrayShadow) - 2659: 52(float) Load 565(lod) - 2660: 47(int) ConvertFToS 2659 - 2661: 390 Image 2658 - 2662: 734(ivec3) ImageQuerySizeLod 2661 2660 - 2663: 48(ivec4) Load 2559(size) - 2664: 734(ivec3) VectorShuffle 2663 2663 0 1 2 - 2665: 734(ivec3) IAdd 2664 2662 - 2666: 2566(ptr) AccessChain 2559(size) 207 - 2667: 47(int) CompositeExtract 2665 0 - Store 2666 2667 - 2668: 2566(ptr) AccessChain 2559(size) 2581 - 2669: 47(int) CompositeExtract 2665 1 - Store 2668 2669 - 2670: 2566(ptr) AccessChain 2559(size) 2596 - 2671: 47(int) CompositeExtract 2665 2 - Store 2670 2671 - 2672: 357 Load 359(s2DRect) - 2673: 356 Image 2672 - 2674: 721(ivec2) ImageQuerySize 2673 - 2675: 48(ivec4) Load 2559(size) - 2676: 721(ivec2) VectorShuffle 2675 2675 0 1 - 2677: 721(ivec2) IAdd 2676 2674 - 2678: 2566(ptr) AccessChain 2559(size) 207 - 2679: 47(int) CompositeExtract 2677 0 - Store 2678 2679 - 2680: 2566(ptr) AccessChain 2559(size) 2581 - 2681: 47(int) CompositeExtract 2677 1 - Store 2680 2681 - 2682: 371 Load 373(s2DRectShadow) - 2683: 370 Image 2682 - 2684: 721(ivec2) ImageQuerySize 2683 - 2685: 48(ivec4) Load 2559(size) - 2686: 721(ivec2) VectorShuffle 2685 2685 0 1 - 2687: 721(ivec2) IAdd 2686 2684 - 2688: 2566(ptr) AccessChain 2559(size) 207 - 2689: 47(int) CompositeExtract 2687 0 - Store 2688 2689 - 2690: 2566(ptr) AccessChain 2559(size) 2581 - 2691: 47(int) CompositeExtract 2687 1 - Store 2690 2691 - 2692: 269 Load 271(s1DArray) - 2693: 52(float) Load 565(lod) - 2694: 47(int) ConvertFToS 2693 - 2695: 268 Image 2692 - 2696: 721(ivec2) ImageQuerySizeLod 2695 2694 - 2697: 48(ivec4) Load 2559(size) - 2698: 721(ivec2) VectorShuffle 2697 2697 0 1 - 2699: 721(ivec2) IAdd 2698 2696 - 2700: 2566(ptr) AccessChain 2559(size) 207 - 2701: 47(int) CompositeExtract 2699 0 - Store 2700 2701 - 2702: 2566(ptr) AccessChain 2559(size) 2581 - 2703: 47(int) CompositeExtract 2699 1 - Store 2702 2703 - 2704: 284 Load 286(s2DArray) - 2705: 52(float) Load 565(lod) - 2706: 47(int) ConvertFToS 2705 - 2707: 283 Image 2704 - 2708: 734(ivec3) ImageQuerySizeLod 2707 2706 - 2709: 48(ivec4) Load 2559(size) - 2710: 734(ivec3) VectorShuffle 2709 2709 0 1 2 - 2711: 734(ivec3) IAdd 2710 2708 - 2712: 2566(ptr) AccessChain 2559(size) 207 - 2713: 47(int) CompositeExtract 2711 0 - Store 2712 2713 - 2714: 2566(ptr) AccessChain 2559(size) 2581 - 2715: 47(int) CompositeExtract 2711 1 - Store 2714 2715 - 2716: 2566(ptr) AccessChain 2559(size) 2596 - 2717: 47(int) CompositeExtract 2711 2 - Store 2716 2717 - 2718: 316 Load 318(s1DArrayShadow) - 2719: 52(float) Load 565(lod) - 2720: 47(int) ConvertFToS 2719 - 2721: 315 Image 2718 - 2722: 721(ivec2) ImageQuerySizeLod 2721 2720 - 2723: 48(ivec4) Load 2559(size) - 2724: 721(ivec2) VectorShuffle 2723 2723 0 1 - 2725: 721(ivec2) IAdd 2724 2722 - 2726: 2566(ptr) AccessChain 2559(size) 207 - 2727: 47(int) CompositeExtract 2725 0 - Store 2726 2727 - 2728: 2566(ptr) AccessChain 2559(size) 2581 - 2729: 47(int) CompositeExtract 2725 1 - Store 2728 2729 - 2730: 337 Load 339(s2DArrayShadow) - 2731: 52(float) Load 565(lod) - 2732: 47(int) ConvertFToS 2731 - 2733: 336 Image 2730 - 2734: 734(ivec3) ImageQuerySizeLod 2733 2732 - 2735: 48(ivec4) Load 2559(size) - 2736: 734(ivec3) VectorShuffle 2735 2735 0 1 2 - 2737: 734(ivec3) IAdd 2736 2734 - 2738: 2566(ptr) AccessChain 2559(size) 207 - 2739: 47(int) CompositeExtract 2737 0 - Store 2738 2739 - 2740: 2566(ptr) AccessChain 2559(size) 2581 - 2741: 47(int) CompositeExtract 2737 1 - Store 2740 2741 - 2742: 2566(ptr) AccessChain 2559(size) 2596 - 2743: 47(int) CompositeExtract 2737 2 - Store 2742 2743 - 2744: 1298 Load 1300(sBuffer) - 2745: 1297 Image 2744 - 2746: 47(int) ImageQuerySize 2745 - 2747: 2566(ptr) AccessChain 2559(size) 207 - 2748: 47(int) Load 2747 - 2749: 47(int) IAdd 2748 2746 - 2750: 2566(ptr) AccessChain 2559(size) 207 - Store 2750 2749 - 2751: 1309 Load 1311(s2DMS) - 2752: 1308 Image 2751 - 2753: 721(ivec2) ImageQuerySize 2752 - 2754: 48(ivec4) Load 2559(size) - 2755: 721(ivec2) VectorShuffle 2754 2754 0 1 - 2756: 721(ivec2) IAdd 2755 2753 - 2757: 2566(ptr) AccessChain 2559(size) 207 - 2758: 47(int) CompositeExtract 2756 0 - Store 2757 2758 - 2759: 2566(ptr) AccessChain 2559(size) 2581 - 2760: 47(int) CompositeExtract 2756 1 - Store 2759 2760 - 2761: 1320 Load 1322(s2DMSArray) - 2762: 1319 Image 2761 - 2763: 734(ivec3) ImageQuerySize 2762 - 2764: 48(ivec4) Load 2559(size) - 2765: 734(ivec3) VectorShuffle 2764 2764 0 1 2 - 2766: 734(ivec3) IAdd 2765 2763 - 2767: 2566(ptr) AccessChain 2559(size) 207 - 2768: 47(int) CompositeExtract 2766 0 - Store 2767 2768 - 2769: 2566(ptr) AccessChain 2559(size) 2581 - 2770: 47(int) CompositeExtract 2766 1 - Store 2769 2770 - 2771: 2566(ptr) AccessChain 2559(size) 2596 - 2772: 47(int) CompositeExtract 2766 2 - Store 2771 2772 - 2773: 48(ivec4) Load 2559(size) - ReturnValue 2773 + 2654: 1298 Load 1300(sBuffer) + 2655: 1297 Image 2654 + 2656: 47(int) ImageQuerySize 2655 + 2657: 2476(ptr) AccessChain 2469(size) 207 + 2658: 47(int) Load 2657 + 2659: 47(int) IAdd 2658 2656 + 2660: 2476(ptr) AccessChain 2469(size) 207 + Store 2660 2659 + 2661: 1309 Load 1311(s2DMS) + 2662: 1308 Image 2661 + 2663: 721(ivec2) ImageQuerySize 2662 + 2664: 48(ivec4) Load 2469(size) + 2665: 721(ivec2) VectorShuffle 2664 2664 0 1 + 2666: 721(ivec2) IAdd 2665 2663 + 2667: 2476(ptr) AccessChain 2469(size) 207 + 2668: 47(int) CompositeExtract 2666 0 + Store 2667 2668 + 2669: 2476(ptr) AccessChain 2469(size) 2491 + 2670: 47(int) CompositeExtract 2666 1 + Store 2669 2670 + 2671: 1320 Load 1322(s2DMSArray) + 2672: 1319 Image 2671 + 2673: 734(ivec3) ImageQuerySize 2672 + 2674: 48(ivec4) Load 2469(size) + 2675: 734(ivec3) VectorShuffle 2674 2674 0 1 2 + 2676: 734(ivec3) IAdd 2675 2673 + 2677: 2476(ptr) AccessChain 2469(size) 207 + 2678: 47(int) CompositeExtract 2676 0 + Store 2677 2678 + 2679: 2476(ptr) AccessChain 2469(size) 2491 + 2680: 47(int) CompositeExtract 2676 1 + Store 2679 2680 + 2681: 2476(ptr) AccessChain 2469(size) 2506 + 2682: 47(int) CompositeExtract 2676 2 + Store 2681 2682 + 2683: 48(ivec4) Load 2469(size) + ReturnValue 2683 FunctionEnd 55(testTextureQueryLod(): 53(fvec2) Function None 54 56: Label - 2777(lod): 2776(ptr) Variable Function - Store 2777(lod) 2779 - 2780: 123 Load 125(s1D) - 2781: 52(float) Load 128(c1) + 2687(lod): 2686(ptr) Variable Function + Store 2687(lod) 2689 + 2690: 123 Load 125(s1D) + 2691: 52(float) Load 128(c1) + 2692: 53(fvec2) ImageQueryLod 2690 2691 + 2693: 53(fvec2) Load 2687(lod) + 2694: 53(fvec2) FAdd 2693 2692 + Store 2687(lod) 2694 + 2695: 123 Load 125(s1D) + 2696:6(float16_t) Load 135(f16c1) + 2697:154(f16vec2) ImageQueryLod 2695 2696 + 2698: 53(fvec2) Load 2687(lod) + 2699: 53(fvec2) FAdd 2698 2697 + Store 2687(lod) 2699 + 2700: 143 Load 145(s2D) + 2701: 53(fvec2) Load 148(c2) + 2702: 53(fvec2) ImageQueryLod 2700 2701 + 2703: 53(fvec2) Load 2687(lod) + 2704: 53(fvec2) FAdd 2703 2702 + Store 2687(lod) 2704 + 2705: 143 Load 145(s2D) + 2706:154(f16vec2) Load 156(f16c2) + 2707:154(f16vec2) ImageQueryLod 2705 2706 + 2708: 53(fvec2) Load 2687(lod) + 2709: 53(fvec2) FAdd 2708 2707 + Store 2687(lod) 2709 + 2710: 163 Load 165(s3D) + 2711: 167(fvec3) Load 169(c3) + 2712: 53(fvec2) ImageQueryLod 2710 2711 + 2713: 53(fvec2) Load 2687(lod) + 2714: 53(fvec2) FAdd 2713 2712 + Store 2687(lod) 2714 + 2715: 163 Load 165(s3D) + 2716:175(f16vec3) Load 177(f16c3) + 2717:154(f16vec2) ImageQueryLod 2715 2716 + 2718: 53(fvec2) Load 2687(lod) + 2719: 53(fvec2) FAdd 2718 2717 + Store 2687(lod) 2719 + 2720: 184 Load 186(sCube) + 2721: 167(fvec3) Load 169(c3) + 2722: 53(fvec2) ImageQueryLod 2720 2721 + 2723: 53(fvec2) Load 2687(lod) + 2724: 53(fvec2) FAdd 2723 2722 + Store 2687(lod) 2724 + 2725: 184 Load 186(sCube) + 2726:175(f16vec3) Load 177(f16c3) + 2727:154(f16vec2) ImageQueryLod 2725 2726 + 2728: 53(fvec2) Load 2687(lod) + 2729: 53(fvec2) FAdd 2728 2727 + Store 2687(lod) 2729 + 2730: 269 Load 271(s1DArray) + 2731: 52(float) Load 128(c1) + 2732: 53(fvec2) ImageQueryLod 2730 2731 + 2733: 53(fvec2) Load 2687(lod) + 2734: 53(fvec2) FAdd 2733 2732 + Store 2687(lod) 2734 + 2735: 269 Load 271(s1DArray) + 2736:6(float16_t) Load 135(f16c1) + 2737:154(f16vec2) ImageQueryLod 2735 2736 + 2738: 53(fvec2) Load 2687(lod) + 2739: 53(fvec2) FAdd 2738 2737 + Store 2687(lod) 2739 + 2740: 284 Load 286(s2DArray) + 2741: 53(fvec2) Load 148(c2) + 2742: 53(fvec2) ImageQueryLod 2740 2741 + 2743: 53(fvec2) Load 2687(lod) + 2744: 53(fvec2) FAdd 2743 2742 + Store 2687(lod) 2744 + 2745: 284 Load 286(s2DArray) + 2746:154(f16vec2) Load 156(f16c2) + 2747:154(f16vec2) ImageQueryLod 2745 2746 + 2748: 53(fvec2) Load 2687(lod) + 2749: 53(fvec2) FAdd 2748 2747 + Store 2687(lod) 2749 + 2750: 299 Load 301(sCubeArray) + 2751: 167(fvec3) Load 169(c3) + 2752: 53(fvec2) ImageQueryLod 2750 2751 + 2753: 53(fvec2) Load 2687(lod) + 2754: 53(fvec2) FAdd 2753 2752 + Store 2687(lod) 2754 + 2755: 299 Load 301(sCubeArray) + 2756:175(f16vec3) Load 177(f16c3) + 2757:154(f16vec2) ImageQueryLod 2755 2756 + 2758: 53(fvec2) Load 2687(lod) + 2759: 53(fvec2) FAdd 2758 2757 + Store 2687(lod) 2759 + 2760: 199 Load 201(s1DShadow) + 2761: 52(float) Load 128(c1) + 2762: 53(fvec2) ImageQueryLod 2760 2761 + 2763: 53(fvec2) Load 2687(lod) + 2764: 53(fvec2) FAdd 2763 2762 + Store 2687(lod) 2764 + 2765: 199 Load 201(s1DShadow) + 2766:6(float16_t) Load 135(f16c1) + 2767:154(f16vec2) ImageQueryLod 2765 2766 + 2768: 53(fvec2) Load 2687(lod) + 2769: 53(fvec2) FAdd 2768 2767 + Store 2687(lod) 2769 + 2770: 224 Load 226(s2DShadow) + 2771: 53(fvec2) Load 148(c2) + 2772: 53(fvec2) ImageQueryLod 2770 2771 + 2773: 53(fvec2) Load 2687(lod) + 2774: 53(fvec2) FAdd 2773 2772 + Store 2687(lod) 2774 + 2775: 224 Load 226(s2DShadow) + 2776:154(f16vec2) Load 156(f16c2) + 2777:154(f16vec2) ImageQueryLod 2775 2776 + 2778: 53(fvec2) Load 2687(lod) + 2779: 53(fvec2) FAdd 2778 2777 + Store 2687(lod) 2779 + 2780: 391 Load 393(sCubeArrayShadow) + 2781: 167(fvec3) Load 169(c3) 2782: 53(fvec2) ImageQueryLod 2780 2781 - 2783: 53(fvec2) Load 2777(lod) + 2783: 53(fvec2) Load 2687(lod) 2784: 53(fvec2) FAdd 2783 2782 - Store 2777(lod) 2784 - 2785: 123 Load 125(s1D) - 2786:6(float16_t) Load 135(f16c1) + Store 2687(lod) 2784 + 2785: 391 Load 393(sCubeArrayShadow) + 2786:175(f16vec3) Load 177(f16c3) 2787:154(f16vec2) ImageQueryLod 2785 2786 - 2788: 53(fvec2) Load 2777(lod) + 2788: 53(fvec2) Load 2687(lod) 2789: 53(fvec2) FAdd 2788 2787 - Store 2777(lod) 2789 - 2790: 143 Load 145(s2D) - 2791: 53(fvec2) Load 148(c2) + Store 2687(lod) 2789 + 2790: 316 Load 318(s1DArrayShadow) + 2791: 52(float) Load 128(c1) 2792: 53(fvec2) ImageQueryLod 2790 2791 - 2793: 53(fvec2) Load 2777(lod) + 2793: 53(fvec2) Load 2687(lod) 2794: 53(fvec2) FAdd 2793 2792 - Store 2777(lod) 2794 - 2795: 143 Load 145(s2D) - 2796:154(f16vec2) Load 156(f16c2) + Store 2687(lod) 2794 + 2795: 316 Load 318(s1DArrayShadow) + 2796:6(float16_t) Load 135(f16c1) 2797:154(f16vec2) ImageQueryLod 2795 2796 - 2798: 53(fvec2) Load 2777(lod) + 2798: 53(fvec2) Load 2687(lod) 2799: 53(fvec2) FAdd 2798 2797 - Store 2777(lod) 2799 - 2800: 163 Load 165(s3D) - 2801: 167(fvec3) Load 169(c3) + Store 2687(lod) 2799 + 2800: 337 Load 339(s2DArrayShadow) + 2801: 53(fvec2) Load 148(c2) 2802: 53(fvec2) ImageQueryLod 2800 2801 - 2803: 53(fvec2) Load 2777(lod) + 2803: 53(fvec2) Load 2687(lod) 2804: 53(fvec2) FAdd 2803 2802 - Store 2777(lod) 2804 - 2805: 163 Load 165(s3D) - 2806:175(f16vec3) Load 177(f16c3) + Store 2687(lod) 2804 + 2805: 337 Load 339(s2DArrayShadow) + 2806:154(f16vec2) Load 156(f16c2) 2807:154(f16vec2) ImageQueryLod 2805 2806 - 2808: 53(fvec2) Load 2777(lod) + 2808: 53(fvec2) Load 2687(lod) 2809: 53(fvec2) FAdd 2808 2807 - Store 2777(lod) 2809 - 2810: 184 Load 186(sCube) + Store 2687(lod) 2809 + 2810: 391 Load 393(sCubeArrayShadow) 2811: 167(fvec3) Load 169(c3) 2812: 53(fvec2) ImageQueryLod 2810 2811 - 2813: 53(fvec2) Load 2777(lod) + 2813: 53(fvec2) Load 2687(lod) 2814: 53(fvec2) FAdd 2813 2812 - Store 2777(lod) 2814 - 2815: 184 Load 186(sCube) + Store 2687(lod) 2814 + 2815: 391 Load 393(sCubeArrayShadow) 2816:175(f16vec3) Load 177(f16c3) 2817:154(f16vec2) ImageQueryLod 2815 2816 - 2818: 53(fvec2) Load 2777(lod) + 2818: 53(fvec2) Load 2687(lod) 2819: 53(fvec2) FAdd 2818 2817 - Store 2777(lod) 2819 - 2820: 269 Load 271(s1DArray) - 2821: 52(float) Load 128(c1) - 2822: 53(fvec2) ImageQueryLod 2820 2821 - 2823: 53(fvec2) Load 2777(lod) - 2824: 53(fvec2) FAdd 2823 2822 - Store 2777(lod) 2824 - 2825: 269 Load 271(s1DArray) - 2826:6(float16_t) Load 135(f16c1) - 2827:154(f16vec2) ImageQueryLod 2825 2826 - 2828: 53(fvec2) Load 2777(lod) - 2829: 53(fvec2) FAdd 2828 2827 - Store 2777(lod) 2829 - 2830: 284 Load 286(s2DArray) - 2831: 53(fvec2) Load 148(c2) - 2832: 53(fvec2) ImageQueryLod 2830 2831 - 2833: 53(fvec2) Load 2777(lod) - 2834: 53(fvec2) FAdd 2833 2832 - Store 2777(lod) 2834 - 2835: 284 Load 286(s2DArray) - 2836:154(f16vec2) Load 156(f16c2) - 2837:154(f16vec2) ImageQueryLod 2835 2836 - 2838: 53(fvec2) Load 2777(lod) - 2839: 53(fvec2) FAdd 2838 2837 - Store 2777(lod) 2839 - 2840: 299 Load 301(sCubeArray) - 2841: 167(fvec3) Load 169(c3) - 2842: 53(fvec2) ImageQueryLod 2840 2841 - 2843: 53(fvec2) Load 2777(lod) - 2844: 53(fvec2) FAdd 2843 2842 - Store 2777(lod) 2844 - 2845: 299 Load 301(sCubeArray) - 2846:175(f16vec3) Load 177(f16c3) - 2847:154(f16vec2) ImageQueryLod 2845 2846 - 2848: 53(fvec2) Load 2777(lod) - 2849: 53(fvec2) FAdd 2848 2847 - Store 2777(lod) 2849 - 2850: 199 Load 201(s1DShadow) - 2851: 52(float) Load 128(c1) - 2852: 53(fvec2) ImageQueryLod 2850 2851 - 2853: 53(fvec2) Load 2777(lod) - 2854: 53(fvec2) FAdd 2853 2852 - Store 2777(lod) 2854 - 2855: 199 Load 201(s1DShadow) - 2856:6(float16_t) Load 135(f16c1) - 2857:154(f16vec2) ImageQueryLod 2855 2856 - 2858: 53(fvec2) Load 2777(lod) - 2859: 53(fvec2) FAdd 2858 2857 - Store 2777(lod) 2859 - 2860: 224 Load 226(s2DShadow) - 2861: 53(fvec2) Load 148(c2) - 2862: 53(fvec2) ImageQueryLod 2860 2861 - 2863: 53(fvec2) Load 2777(lod) - 2864: 53(fvec2) FAdd 2863 2862 - Store 2777(lod) 2864 - 2865: 224 Load 226(s2DShadow) - 2866:154(f16vec2) Load 156(f16c2) - 2867:154(f16vec2) ImageQueryLod 2865 2866 - 2868: 53(fvec2) Load 2777(lod) - 2869: 53(fvec2) FAdd 2868 2867 - Store 2777(lod) 2869 - 2870: 391 Load 393(sCubeArrayShadow) - 2871: 167(fvec3) Load 169(c3) - 2872: 53(fvec2) ImageQueryLod 2870 2871 - 2873: 53(fvec2) Load 2777(lod) - 2874: 53(fvec2) FAdd 2873 2872 - Store 2777(lod) 2874 - 2875: 391 Load 393(sCubeArrayShadow) - 2876:175(f16vec3) Load 177(f16c3) - 2877:154(f16vec2) ImageQueryLod 2875 2876 - 2878: 53(fvec2) Load 2777(lod) - 2879: 53(fvec2) FAdd 2878 2877 - Store 2777(lod) 2879 - 2880: 316 Load 318(s1DArrayShadow) - 2881: 52(float) Load 128(c1) - 2882: 53(fvec2) ImageQueryLod 2880 2881 - 2883: 53(fvec2) Load 2777(lod) - 2884: 53(fvec2) FAdd 2883 2882 - Store 2777(lod) 2884 - 2885: 316 Load 318(s1DArrayShadow) - 2886:6(float16_t) Load 135(f16c1) - 2887:154(f16vec2) ImageQueryLod 2885 2886 - 2888: 53(fvec2) Load 2777(lod) - 2889: 53(fvec2) FAdd 2888 2887 - Store 2777(lod) 2889 - 2890: 337 Load 339(s2DArrayShadow) - 2891: 53(fvec2) Load 148(c2) - 2892: 53(fvec2) ImageQueryLod 2890 2891 - 2893: 53(fvec2) Load 2777(lod) - 2894: 53(fvec2) FAdd 2893 2892 - Store 2777(lod) 2894 - 2895: 337 Load 339(s2DArrayShadow) - 2896:154(f16vec2) Load 156(f16c2) - 2897:154(f16vec2) ImageQueryLod 2895 2896 - 2898: 53(fvec2) Load 2777(lod) - 2899: 53(fvec2) FAdd 2898 2897 - Store 2777(lod) 2899 - 2900: 391 Load 393(sCubeArrayShadow) - 2901: 167(fvec3) Load 169(c3) - 2902: 53(fvec2) ImageQueryLod 2900 2901 - 2903: 53(fvec2) Load 2777(lod) - 2904: 53(fvec2) FAdd 2903 2902 - Store 2777(lod) 2904 - 2905: 391 Load 393(sCubeArrayShadow) - 2906:175(f16vec3) Load 177(f16c3) - 2907:154(f16vec2) ImageQueryLod 2905 2906 - 2908: 53(fvec2) Load 2777(lod) - 2909: 53(fvec2) FAdd 2908 2907 - Store 2777(lod) 2909 - 2910: 53(fvec2) Load 2777(lod) - ReturnValue 2910 + Store 2687(lod) 2819 + 2820: 53(fvec2) Load 2687(lod) + ReturnValue 2820 FunctionEnd 58(testTextureQueryLevels(): 47(int) Function None 57 59: Label - 2913(levels): 2566(ptr) Variable Function - Store 2913(levels) 2187 - 2914: 123 Load 125(s1D) - 2915: 122 Image 2914 - 2916: 47(int) ImageQueryLevels 2915 - 2917: 47(int) Load 2913(levels) - 2918: 47(int) IAdd 2917 2916 - Store 2913(levels) 2918 - 2919: 143 Load 145(s2D) - 2920: 142 Image 2919 - 2921: 47(int) ImageQueryLevels 2920 - 2922: 47(int) Load 2913(levels) - 2923: 47(int) IAdd 2922 2921 - Store 2913(levels) 2923 - 2924: 163 Load 165(s3D) - 2925: 162 Image 2924 - 2926: 47(int) ImageQueryLevels 2925 - 2927: 47(int) Load 2913(levels) - 2928: 47(int) IAdd 2927 2926 - Store 2913(levels) 2928 - 2929: 184 Load 186(sCube) - 2930: 183 Image 2929 - 2931: 47(int) ImageQueryLevels 2930 - 2932: 47(int) Load 2913(levels) - 2933: 47(int) IAdd 2932 2931 - Store 2913(levels) 2933 - 2934: 199 Load 201(s1DShadow) - 2935: 198 Image 2934 - 2936: 47(int) ImageQueryLevels 2935 - 2937: 47(int) Load 2913(levels) - 2938: 47(int) IAdd 2937 2936 - Store 2913(levels) 2938 - 2939: 224 Load 226(s2DShadow) - 2940: 223 Image 2939 - 2941: 47(int) ImageQueryLevels 2940 - 2942: 47(int) Load 2913(levels) - 2943: 47(int) IAdd 2942 2941 - Store 2913(levels) 2943 - 2944: 245 Load 247(sCubeShadow) - 2945: 244 Image 2944 - 2946: 47(int) ImageQueryLevels 2945 - 2947: 47(int) Load 2913(levels) - 2948: 47(int) IAdd 2947 2946 - Store 2913(levels) 2948 - 2949: 299 Load 301(sCubeArray) - 2950: 298 Image 2949 - 2951: 47(int) ImageQueryLevels 2950 - 2952: 47(int) Load 2913(levels) - 2953: 47(int) IAdd 2952 2951 - Store 2913(levels) 2953 - 2954: 391 Load 393(sCubeArrayShadow) - 2955: 390 Image 2954 - 2956: 47(int) ImageQueryLevels 2955 - 2957: 47(int) Load 2913(levels) - 2958: 47(int) IAdd 2957 2956 - Store 2913(levels) 2958 - 2959: 269 Load 271(s1DArray) - 2960: 268 Image 2959 - 2961: 47(int) ImageQueryLevels 2960 - 2962: 47(int) Load 2913(levels) - 2963: 47(int) IAdd 2962 2961 - Store 2913(levels) 2963 - 2964: 284 Load 286(s2DArray) - 2965: 283 Image 2964 - 2966: 47(int) ImageQueryLevels 2965 - 2967: 47(int) Load 2913(levels) - 2968: 47(int) IAdd 2967 2966 - Store 2913(levels) 2968 - 2969: 316 Load 318(s1DArrayShadow) - 2970: 315 Image 2969 - 2971: 47(int) ImageQueryLevels 2970 - 2972: 47(int) Load 2913(levels) - 2973: 47(int) IAdd 2972 2971 - Store 2913(levels) 2973 - 2974: 337 Load 339(s2DArrayShadow) - 2975: 336 Image 2974 - 2976: 47(int) ImageQueryLevels 2975 - 2977: 47(int) Load 2913(levels) - 2978: 47(int) IAdd 2977 2976 - Store 2913(levels) 2978 - 2979: 47(int) Load 2913(levels) - ReturnValue 2979 + 2823(levels): 2476(ptr) Variable Function + Store 2823(levels) 2097 + 2824: 123 Load 125(s1D) + 2825: 122 Image 2824 + 2826: 47(int) ImageQueryLevels 2825 + 2827: 47(int) Load 2823(levels) + 2828: 47(int) IAdd 2827 2826 + Store 2823(levels) 2828 + 2829: 143 Load 145(s2D) + 2830: 142 Image 2829 + 2831: 47(int) ImageQueryLevels 2830 + 2832: 47(int) Load 2823(levels) + 2833: 47(int) IAdd 2832 2831 + Store 2823(levels) 2833 + 2834: 163 Load 165(s3D) + 2835: 162 Image 2834 + 2836: 47(int) ImageQueryLevels 2835 + 2837: 47(int) Load 2823(levels) + 2838: 47(int) IAdd 2837 2836 + Store 2823(levels) 2838 + 2839: 184 Load 186(sCube) + 2840: 183 Image 2839 + 2841: 47(int) ImageQueryLevels 2840 + 2842: 47(int) Load 2823(levels) + 2843: 47(int) IAdd 2842 2841 + Store 2823(levels) 2843 + 2844: 199 Load 201(s1DShadow) + 2845: 198 Image 2844 + 2846: 47(int) ImageQueryLevels 2845 + 2847: 47(int) Load 2823(levels) + 2848: 47(int) IAdd 2847 2846 + Store 2823(levels) 2848 + 2849: 224 Load 226(s2DShadow) + 2850: 223 Image 2849 + 2851: 47(int) ImageQueryLevels 2850 + 2852: 47(int) Load 2823(levels) + 2853: 47(int) IAdd 2852 2851 + Store 2823(levels) 2853 + 2854: 245 Load 247(sCubeShadow) + 2855: 244 Image 2854 + 2856: 47(int) ImageQueryLevels 2855 + 2857: 47(int) Load 2823(levels) + 2858: 47(int) IAdd 2857 2856 + Store 2823(levels) 2858 + 2859: 299 Load 301(sCubeArray) + 2860: 298 Image 2859 + 2861: 47(int) ImageQueryLevels 2860 + 2862: 47(int) Load 2823(levels) + 2863: 47(int) IAdd 2862 2861 + Store 2823(levels) 2863 + 2864: 391 Load 393(sCubeArrayShadow) + 2865: 390 Image 2864 + 2866: 47(int) ImageQueryLevels 2865 + 2867: 47(int) Load 2823(levels) + 2868: 47(int) IAdd 2867 2866 + Store 2823(levels) 2868 + 2869: 269 Load 271(s1DArray) + 2870: 268 Image 2869 + 2871: 47(int) ImageQueryLevels 2870 + 2872: 47(int) Load 2823(levels) + 2873: 47(int) IAdd 2872 2871 + Store 2823(levels) 2873 + 2874: 284 Load 286(s2DArray) + 2875: 283 Image 2874 + 2876: 47(int) ImageQueryLevels 2875 + 2877: 47(int) Load 2823(levels) + 2878: 47(int) IAdd 2877 2876 + Store 2823(levels) 2878 + 2879: 316 Load 318(s1DArrayShadow) + 2880: 315 Image 2879 + 2881: 47(int) ImageQueryLevels 2880 + 2882: 47(int) Load 2823(levels) + 2883: 47(int) IAdd 2882 2881 + Store 2823(levels) 2883 + 2884: 337 Load 339(s2DArrayShadow) + 2885: 336 Image 2884 + 2886: 47(int) ImageQueryLevels 2885 + 2887: 47(int) Load 2823(levels) + 2888: 47(int) IAdd 2887 2886 + Store 2823(levels) 2888 + 2889: 47(int) Load 2823(levels) + ReturnValue 2889 FunctionEnd 60(testTextureSamples(): 47(int) Function None 57 61: Label - 2982(samples): 2566(ptr) Variable Function - Store 2982(samples) 2187 - 2983: 1309 Load 1311(s2DMS) - 2984: 1308 Image 2983 - 2985: 47(int) ImageQuerySamples 2984 - 2986: 47(int) Load 2982(samples) - 2987: 47(int) IAdd 2986 2985 - Store 2982(samples) 2987 - 2988: 1320 Load 1322(s2DMSArray) - 2989: 1319 Image 2988 - 2990: 47(int) ImageQuerySamples 2989 - 2991: 47(int) Load 2982(samples) - 2992: 47(int) IAdd 2991 2990 - Store 2982(samples) 2992 - 2993: 47(int) Load 2982(samples) - ReturnValue 2993 + 2892(samples): 2476(ptr) Variable Function + Store 2892(samples) 2097 + 2893: 1309 Load 1311(s2DMS) + 2894: 1308 Image 2893 + 2895: 47(int) ImageQuerySamples 2894 + 2896: 47(int) Load 2892(samples) + 2897: 47(int) IAdd 2896 2895 + Store 2892(samples) 2897 + 2898: 1320 Load 1322(s2DMSArray) + 2899: 1319 Image 2898 + 2900: 47(int) ImageQuerySamples 2899 + 2901: 47(int) Load 2892(samples) + 2902: 47(int) IAdd 2901 2900 + Store 2892(samples) 2902 + 2903: 47(int) Load 2892(samples) + ReturnValue 2903 FunctionEnd 62(testImageLoad(): 7(f16vec4) Function None 8 63: Label - 2996(texel): 64(ptr) Variable Function - Store 2996(texel) 121 - 3000: 2997 Load 2999(i1D) - 3001: 52(float) Load 128(c1) - 3002: 47(int) ConvertFToS 3001 - 3003: 7(f16vec4) ImageRead 3000 3002 - 3004: 7(f16vec4) Load 2996(texel) + 2906(texel): 64(ptr) Variable Function + Store 2906(texel) 121 + 2910: 2907 Load 2909(i1D) + 2911: 52(float) Load 128(c1) + 2912: 47(int) ConvertFToS 2911 + 2913: 7(f16vec4) ImageRead 2910 2912 + 2914: 7(f16vec4) Load 2906(texel) + 2915: 7(f16vec4) FAdd 2914 2913 + Store 2906(texel) 2915 + 2919: 2916 Load 2918(i2D) + 2920: 53(fvec2) Load 148(c2) + 2921: 721(ivec2) ConvertFToS 2920 + 2922: 7(f16vec4) ImageRead 2919 2921 + 2923: 7(f16vec4) Load 2906(texel) + 2924: 7(f16vec4) FAdd 2923 2922 + Store 2906(texel) 2924 + 2928: 2925 Load 2927(i3D) + 2929: 167(fvec3) Load 169(c3) + 2930: 734(ivec3) ConvertFToS 2929 + 2931: 7(f16vec4) ImageRead 2928 2930 + 2932: 7(f16vec4) Load 2906(texel) + 2933: 7(f16vec4) FAdd 2932 2931 + Store 2906(texel) 2933 + 2937: 2934 Load 2936(i2DRect) + 2938: 53(fvec2) Load 148(c2) + 2939: 721(ivec2) ConvertFToS 2938 + 2940: 7(f16vec4) ImageRead 2937 2939 + 2941: 7(f16vec4) Load 2906(texel) + 2942: 7(f16vec4) FAdd 2941 2940 + Store 2906(texel) 2942 + 2946: 2943 Load 2945(iCube) + 2947: 167(fvec3) Load 169(c3) + 2948: 734(ivec3) ConvertFToS 2947 + 2949: 7(f16vec4) ImageRead 2946 2948 + 2950: 7(f16vec4) Load 2906(texel) + 2951: 7(f16vec4) FAdd 2950 2949 + Store 2906(texel) 2951 + 2955: 2952 Load 2954(iBuffer) + 2956: 52(float) Load 128(c1) + 2957: 47(int) ConvertFToS 2956 + 2958: 7(f16vec4) ImageRead 2955 2957 + 2959: 7(f16vec4) Load 2906(texel) + 2960: 7(f16vec4) FAdd 2959 2958 + Store 2906(texel) 2960 + 2964: 2961 Load 2963(i1DArray) + 2965: 53(fvec2) Load 148(c2) + 2966: 721(ivec2) ConvertFToS 2965 + 2967: 7(f16vec4) ImageRead 2964 2966 + 2968: 7(f16vec4) Load 2906(texel) + 2969: 7(f16vec4) FAdd 2968 2967 + Store 2906(texel) 2969 + 2973: 2970 Load 2972(i2DArray) + 2974: 167(fvec3) Load 169(c3) + 2975: 734(ivec3) ConvertFToS 2974 + 2976: 7(f16vec4) ImageRead 2973 2975 + 2977: 7(f16vec4) Load 2906(texel) + 2978: 7(f16vec4) FAdd 2977 2976 + Store 2906(texel) 2978 + 2982: 2979 Load 2981(iCubeArray) + 2983: 167(fvec3) Load 169(c3) + 2984: 734(ivec3) ConvertFToS 2983 + 2985: 7(f16vec4) ImageRead 2982 2984 + 2986: 7(f16vec4) Load 2906(texel) + 2987: 7(f16vec4) FAdd 2986 2985 + Store 2906(texel) 2987 + 2991: 2988 Load 2990(i2DMS) + 2992: 53(fvec2) Load 148(c2) + 2993: 721(ivec2) ConvertFToS 2992 + 2994: 7(f16vec4) ImageRead 2991 2993 Sample 709 + 2995: 7(f16vec4) Load 2906(texel) + 2996: 7(f16vec4) FAdd 2995 2994 + Store 2906(texel) 2996 + 3000: 2997 Load 2999(i2DMSArray) + 3001: 167(fvec3) Load 169(c3) + 3002: 734(ivec3) ConvertFToS 3001 + 3003: 7(f16vec4) ImageRead 3000 3002 Sample 709 + 3004: 7(f16vec4) Load 2906(texel) 3005: 7(f16vec4) FAdd 3004 3003 - Store 2996(texel) 3005 - 3009: 3006 Load 3008(i2D) - 3010: 53(fvec2) Load 148(c2) - 3011: 721(ivec2) ConvertFToS 3010 - 3012: 7(f16vec4) ImageRead 3009 3011 - 3013: 7(f16vec4) Load 2996(texel) - 3014: 7(f16vec4) FAdd 3013 3012 - Store 2996(texel) 3014 - 3018: 3015 Load 3017(i3D) - 3019: 167(fvec3) Load 169(c3) - 3020: 734(ivec3) ConvertFToS 3019 - 3021: 7(f16vec4) ImageRead 3018 3020 - 3022: 7(f16vec4) Load 2996(texel) - 3023: 7(f16vec4) FAdd 3022 3021 - Store 2996(texel) 3023 - 3027: 3024 Load 3026(i2DRect) - 3028: 53(fvec2) Load 148(c2) - 3029: 721(ivec2) ConvertFToS 3028 - 3030: 7(f16vec4) ImageRead 3027 3029 - 3031: 7(f16vec4) Load 2996(texel) - 3032: 7(f16vec4) FAdd 3031 3030 - Store 2996(texel) 3032 - 3036: 3033 Load 3035(iCube) - 3037: 167(fvec3) Load 169(c3) - 3038: 734(ivec3) ConvertFToS 3037 - 3039: 7(f16vec4) ImageRead 3036 3038 - 3040: 7(f16vec4) Load 2996(texel) - 3041: 7(f16vec4) FAdd 3040 3039 - Store 2996(texel) 3041 - 3045: 3042 Load 3044(iBuffer) - 3046: 52(float) Load 128(c1) - 3047: 47(int) ConvertFToS 3046 - 3048: 7(f16vec4) ImageRead 3045 3047 - 3049: 7(f16vec4) Load 2996(texel) - 3050: 7(f16vec4) FAdd 3049 3048 - Store 2996(texel) 3050 - 3054: 3051 Load 3053(i1DArray) - 3055: 53(fvec2) Load 148(c2) - 3056: 721(ivec2) ConvertFToS 3055 - 3057: 7(f16vec4) ImageRead 3054 3056 - 3058: 7(f16vec4) Load 2996(texel) - 3059: 7(f16vec4) FAdd 3058 3057 - Store 2996(texel) 3059 - 3063: 3060 Load 3062(i2DArray) - 3064: 167(fvec3) Load 169(c3) - 3065: 734(ivec3) ConvertFToS 3064 - 3066: 7(f16vec4) ImageRead 3063 3065 - 3067: 7(f16vec4) Load 2996(texel) - 3068: 7(f16vec4) FAdd 3067 3066 - Store 2996(texel) 3068 - 3072: 3069 Load 3071(iCubeArray) - 3073: 167(fvec3) Load 169(c3) - 3074: 734(ivec3) ConvertFToS 3073 - 3075: 7(f16vec4) ImageRead 3072 3074 - 3076: 7(f16vec4) Load 2996(texel) - 3077: 7(f16vec4) FAdd 3076 3075 - Store 2996(texel) 3077 - 3081: 3078 Load 3080(i2DMS) - 3082: 53(fvec2) Load 148(c2) - 3083: 721(ivec2) ConvertFToS 3082 - 3084: 7(f16vec4) ImageRead 3081 3083 Sample 709 - 3085: 7(f16vec4) Load 2996(texel) - 3086: 7(f16vec4) FAdd 3085 3084 - Store 2996(texel) 3086 - 3090: 3087 Load 3089(i2DMSArray) - 3091: 167(fvec3) Load 169(c3) - 3092: 734(ivec3) ConvertFToS 3091 - 3093: 7(f16vec4) ImageRead 3090 3092 Sample 709 - 3094: 7(f16vec4) Load 2996(texel) - 3095: 7(f16vec4) FAdd 3094 3093 - Store 2996(texel) 3095 - 3096: 7(f16vec4) Load 2996(texel) - ReturnValue 3096 + Store 2906(texel) 3005 + 3006: 7(f16vec4) Load 2906(texel) + ReturnValue 3006 FunctionEnd 67(testImageStore(vf164;): 2 Function None 65 66(data): 64(ptr) FunctionParameter 68: Label - 3099: 2997 Load 2999(i1D) - 3100: 52(float) Load 128(c1) - 3101: 47(int) ConvertFToS 3100 - 3102: 7(f16vec4) Load 66(data) - ImageWrite 3099 3101 3102 - 3103: 3006 Load 3008(i2D) - 3104: 53(fvec2) Load 148(c2) - 3105: 721(ivec2) ConvertFToS 3104 - 3106: 7(f16vec4) Load 66(data) - ImageWrite 3103 3105 3106 - 3107: 3015 Load 3017(i3D) - 3108: 167(fvec3) Load 169(c3) - 3109: 734(ivec3) ConvertFToS 3108 - 3110: 7(f16vec4) Load 66(data) - ImageWrite 3107 3109 3110 - 3111: 3024 Load 3026(i2DRect) - 3112: 53(fvec2) Load 148(c2) - 3113: 721(ivec2) ConvertFToS 3112 - 3114: 7(f16vec4) Load 66(data) - ImageWrite 3111 3113 3114 - 3115: 3033 Load 3035(iCube) - 3116: 167(fvec3) Load 169(c3) - 3117: 734(ivec3) ConvertFToS 3116 - 3118: 7(f16vec4) Load 66(data) - ImageWrite 3115 3117 3118 - 3119: 3042 Load 3044(iBuffer) - 3120: 52(float) Load 128(c1) - 3121: 47(int) ConvertFToS 3120 - 3122: 7(f16vec4) Load 66(data) - ImageWrite 3119 3121 3122 - 3123: 3051 Load 3053(i1DArray) - 3124: 53(fvec2) Load 148(c2) - 3125: 721(ivec2) ConvertFToS 3124 - 3126: 7(f16vec4) Load 66(data) - ImageWrite 3123 3125 3126 - 3127: 3060 Load 3062(i2DArray) - 3128: 167(fvec3) Load 169(c3) - 3129: 734(ivec3) ConvertFToS 3128 - 3130: 7(f16vec4) Load 66(data) - ImageWrite 3127 3129 3130 - 3131: 3069 Load 3071(iCubeArray) - 3132: 167(fvec3) Load 169(c3) - 3133: 734(ivec3) ConvertFToS 3132 - 3134: 7(f16vec4) Load 66(data) - ImageWrite 3131 3133 3134 - 3135: 3078 Load 3080(i2DMS) - 3136: 53(fvec2) Load 148(c2) - 3137: 721(ivec2) ConvertFToS 3136 - 3138: 7(f16vec4) Load 66(data) - ImageWrite 3135 3137 3138 Sample 709 - 3139: 3087 Load 3089(i2DMSArray) - 3140: 167(fvec3) Load 169(c3) - 3141: 734(ivec3) ConvertFToS 3140 - 3142: 7(f16vec4) Load 66(data) - ImageWrite 3139 3141 3142 Sample 709 + 3009: 2907 Load 2909(i1D) + 3010: 52(float) Load 128(c1) + 3011: 47(int) ConvertFToS 3010 + 3012: 7(f16vec4) Load 66(data) + ImageWrite 3009 3011 3012 + 3013: 2916 Load 2918(i2D) + 3014: 53(fvec2) Load 148(c2) + 3015: 721(ivec2) ConvertFToS 3014 + 3016: 7(f16vec4) Load 66(data) + ImageWrite 3013 3015 3016 + 3017: 2925 Load 2927(i3D) + 3018: 167(fvec3) Load 169(c3) + 3019: 734(ivec3) ConvertFToS 3018 + 3020: 7(f16vec4) Load 66(data) + ImageWrite 3017 3019 3020 + 3021: 2934 Load 2936(i2DRect) + 3022: 53(fvec2) Load 148(c2) + 3023: 721(ivec2) ConvertFToS 3022 + 3024: 7(f16vec4) Load 66(data) + ImageWrite 3021 3023 3024 + 3025: 2943 Load 2945(iCube) + 3026: 167(fvec3) Load 169(c3) + 3027: 734(ivec3) ConvertFToS 3026 + 3028: 7(f16vec4) Load 66(data) + ImageWrite 3025 3027 3028 + 3029: 2952 Load 2954(iBuffer) + 3030: 52(float) Load 128(c1) + 3031: 47(int) ConvertFToS 3030 + 3032: 7(f16vec4) Load 66(data) + ImageWrite 3029 3031 3032 + 3033: 2961 Load 2963(i1DArray) + 3034: 53(fvec2) Load 148(c2) + 3035: 721(ivec2) ConvertFToS 3034 + 3036: 7(f16vec4) Load 66(data) + ImageWrite 3033 3035 3036 + 3037: 2970 Load 2972(i2DArray) + 3038: 167(fvec3) Load 169(c3) + 3039: 734(ivec3) ConvertFToS 3038 + 3040: 7(f16vec4) Load 66(data) + ImageWrite 3037 3039 3040 + 3041: 2979 Load 2981(iCubeArray) + 3042: 167(fvec3) Load 169(c3) + 3043: 734(ivec3) ConvertFToS 3042 + 3044: 7(f16vec4) Load 66(data) + ImageWrite 3041 3043 3044 + 3045: 2988 Load 2990(i2DMS) + 3046: 53(fvec2) Load 148(c2) + 3047: 721(ivec2) ConvertFToS 3046 + 3048: 7(f16vec4) Load 66(data) + ImageWrite 3045 3047 3048 Sample 709 + 3049: 2997 Load 2999(i2DMSArray) + 3050: 167(fvec3) Load 169(c3) + 3051: 734(ivec3) ConvertFToS 3050 + 3052: 7(f16vec4) Load 66(data) + ImageWrite 3049 3051 3052 Sample 709 Return FunctionEnd 69(testSparseTexture(): 7(f16vec4) Function None 8 70: Label - 3143(texel): 64(ptr) Variable Function - Store 3143(texel) 121 - 3144: 143 Load 145(s2D) - 3145: 53(fvec2) Load 148(c2) - 3147:3146(ResType) ImageSparseSampleImplicitLod 3144 3145 - 3148: 7(f16vec4) CompositeExtract 3147 1 - Store 3143(texel) 3148 - 3149: 47(int) CompositeExtract 3147 0 - 3150: 143 Load 145(s2D) - 3151:154(f16vec2) Load 156(f16c2) - 3152:6(float16_t) Load 137(f16bias) - 3153:3146(ResType) ImageSparseSampleImplicitLod 3150 3151 Bias 3152 - 3154: 7(f16vec4) CompositeExtract 3153 1 - Store 3143(texel) 3154 - 3155: 47(int) CompositeExtract 3153 0 - 3156: 163 Load 165(s3D) - 3157: 167(fvec3) Load 169(c3) - 3158:3146(ResType) ImageSparseSampleImplicitLod 3156 3157 - 3159: 7(f16vec4) CompositeExtract 3158 1 - Store 3143(texel) 3159 - 3160: 47(int) CompositeExtract 3158 0 - 3161: 163 Load 165(s3D) - 3162:175(f16vec3) Load 177(f16c3) - 3163:6(float16_t) Load 137(f16bias) - 3164:3146(ResType) ImageSparseSampleImplicitLod 3161 3162 Bias 3163 - 3165: 7(f16vec4) CompositeExtract 3164 1 - Store 3143(texel) 3165 - 3166: 47(int) CompositeExtract 3164 0 - 3167: 184 Load 186(sCube) - 3168: 167(fvec3) Load 169(c3) - 3169:3146(ResType) ImageSparseSampleImplicitLod 3167 3168 - 3170: 7(f16vec4) CompositeExtract 3169 1 - Store 3143(texel) 3170 + 3053(texel): 64(ptr) Variable Function + Store 3053(texel) 121 + 3054: 143 Load 145(s2D) + 3055: 53(fvec2) Load 148(c2) + 3057:3056(ResType) ImageSparseSampleImplicitLod 3054 3055 + 3058: 7(f16vec4) CompositeExtract 3057 1 + Store 3053(texel) 3058 + 3059: 47(int) CompositeExtract 3057 0 + 3060: 143 Load 145(s2D) + 3061:154(f16vec2) Load 156(f16c2) + 3062:6(float16_t) Load 137(f16bias) + 3063:3056(ResType) ImageSparseSampleImplicitLod 3060 3061 Bias 3062 + 3064: 7(f16vec4) CompositeExtract 3063 1 + Store 3053(texel) 3064 + 3065: 47(int) CompositeExtract 3063 0 + 3066: 163 Load 165(s3D) + 3067: 167(fvec3) Load 169(c3) + 3068:3056(ResType) ImageSparseSampleImplicitLod 3066 3067 + 3069: 7(f16vec4) CompositeExtract 3068 1 + Store 3053(texel) 3069 + 3070: 47(int) CompositeExtract 3068 0 + 3071: 163 Load 165(s3D) + 3072:175(f16vec3) Load 177(f16c3) + 3073:6(float16_t) Load 137(f16bias) + 3074:3056(ResType) ImageSparseSampleImplicitLod 3071 3072 Bias 3073 + 3075: 7(f16vec4) CompositeExtract 3074 1 + Store 3053(texel) 3075 + 3076: 47(int) CompositeExtract 3074 0 + 3077: 184 Load 186(sCube) + 3078: 167(fvec3) Load 169(c3) + 3079:3056(ResType) ImageSparseSampleImplicitLod 3077 3078 + 3080: 7(f16vec4) CompositeExtract 3079 1 + Store 3053(texel) 3080 + 3081: 47(int) CompositeExtract 3079 0 + 3082: 184 Load 186(sCube) + 3083:175(f16vec3) Load 177(f16c3) + 3084:6(float16_t) Load 137(f16bias) + 3085:3056(ResType) ImageSparseSampleImplicitLod 3082 3083 Bias 3084 + 3086: 7(f16vec4) CompositeExtract 3085 1 + Store 3053(texel) 3086 + 3087: 47(int) CompositeExtract 3085 0 + 3088: 224 Load 226(s2DShadow) + 3089: 167(fvec3) Load 169(c3) + 3090: 208(ptr) AccessChain 3053(texel) 207 + 3091: 52(float) CompositeExtract 3089 2 + 3093:3092(ResType) ImageSparseSampleDrefImplicitLod 3088 3089 3091 + 3094:6(float16_t) CompositeExtract 3093 1 + Store 3090 3094 + 3095: 47(int) CompositeExtract 3093 0 + 3096: 224 Load 226(s2DShadow) + 3097:154(f16vec2) Load 156(f16c2) + 3098: 52(float) Load 215(compare) + 3099: 208(ptr) AccessChain 3053(texel) 207 + 3100:6(float16_t) Load 137(f16bias) + 3101:3092(ResType) ImageSparseSampleDrefImplicitLod 3096 3097 3098 Bias 3100 + 3102:6(float16_t) CompositeExtract 3101 1 + Store 3099 3102 + 3103: 47(int) CompositeExtract 3101 0 + 3104: 245 Load 247(sCubeShadow) + 3105: 249(fvec4) Load 251(c4) + 3106: 208(ptr) AccessChain 3053(texel) 207 + 3107: 52(float) CompositeExtract 3105 3 + 3108:3092(ResType) ImageSparseSampleDrefImplicitLod 3104 3105 3107 + 3109:6(float16_t) CompositeExtract 3108 1 + Store 3106 3109 + 3110: 47(int) CompositeExtract 3108 0 + 3111: 245 Load 247(sCubeShadow) + 3112:175(f16vec3) Load 177(f16c3) + 3113: 52(float) Load 215(compare) + 3114: 208(ptr) AccessChain 3053(texel) 207 + 3115:6(float16_t) Load 137(f16bias) + 3116:3092(ResType) ImageSparseSampleDrefImplicitLod 3111 3112 3113 Bias 3115 + 3117:6(float16_t) CompositeExtract 3116 1 + Store 3114 3117 + 3118: 47(int) CompositeExtract 3116 0 + 3119: 284 Load 286(s2DArray) + 3120: 167(fvec3) Load 169(c3) + 3121:3056(ResType) ImageSparseSampleImplicitLod 3119 3120 + 3122: 7(f16vec4) CompositeExtract 3121 1 + Store 3053(texel) 3122 + 3123: 47(int) CompositeExtract 3121 0 + 3124: 284 Load 286(s2DArray) + 3125:175(f16vec3) Load 177(f16c3) + 3126:6(float16_t) Load 137(f16bias) + 3127:3056(ResType) ImageSparseSampleImplicitLod 3124 3125 Bias 3126 + 3128: 7(f16vec4) CompositeExtract 3127 1 + Store 3053(texel) 3128 + 3129: 47(int) CompositeExtract 3127 0 + 3130: 299 Load 301(sCubeArray) + 3131: 249(fvec4) Load 251(c4) + 3132:3056(ResType) ImageSparseSampleImplicitLod 3130 3131 + 3133: 7(f16vec4) CompositeExtract 3132 1 + Store 3053(texel) 3133 + 3134: 47(int) CompositeExtract 3132 0 + 3135: 299 Load 301(sCubeArray) + 3136: 7(f16vec4) Load 309(f16c4) + 3137:6(float16_t) Load 137(f16bias) + 3138:3056(ResType) ImageSparseSampleImplicitLod 3135 3136 Bias 3137 + 3139: 7(f16vec4) CompositeExtract 3138 1 + Store 3053(texel) 3139 + 3140: 47(int) CompositeExtract 3138 0 + 3141: 337 Load 339(s2DArrayShadow) + 3142: 249(fvec4) Load 251(c4) + 3143: 208(ptr) AccessChain 3053(texel) 207 + 3144: 52(float) CompositeExtract 3142 3 + 3145:3092(ResType) ImageSparseSampleDrefImplicitLod 3141 3142 3144 + 3146:6(float16_t) CompositeExtract 3145 1 + Store 3143 3146 + 3147: 47(int) CompositeExtract 3145 0 + 3148: 337 Load 339(s2DArrayShadow) + 3149:175(f16vec3) Load 177(f16c3) + 3150: 52(float) Load 215(compare) + 3151: 208(ptr) AccessChain 3053(texel) 207 + 3152:3092(ResType) ImageSparseSampleDrefImplicitLod 3148 3149 3150 + 3153:6(float16_t) CompositeExtract 3152 1 + Store 3151 3153 + 3154: 47(int) CompositeExtract 3152 0 + 3155: 357 Load 359(s2DRect) + 3156: 53(fvec2) Load 148(c2) + 3157:3056(ResType) ImageSparseSampleImplicitLod 3155 3156 + 3158: 7(f16vec4) CompositeExtract 3157 1 + Store 3053(texel) 3158 + 3159: 47(int) CompositeExtract 3157 0 + 3160: 357 Load 359(s2DRect) + 3161:154(f16vec2) Load 156(f16c2) + 3162:3056(ResType) ImageSparseSampleImplicitLod 3160 3161 + 3163: 7(f16vec4) CompositeExtract 3162 1 + Store 3053(texel) 3163 + 3164: 47(int) CompositeExtract 3162 0 + 3165: 371 Load 373(s2DRectShadow) + 3166: 167(fvec3) Load 169(c3) + 3167: 208(ptr) AccessChain 3053(texel) 207 + 3168: 52(float) CompositeExtract 3166 2 + 3169:3092(ResType) ImageSparseSampleDrefImplicitLod 3165 3166 3168 + 3170:6(float16_t) CompositeExtract 3169 1 + Store 3167 3170 3171: 47(int) CompositeExtract 3169 0 - 3172: 184 Load 186(sCube) - 3173:175(f16vec3) Load 177(f16c3) - 3174:6(float16_t) Load 137(f16bias) - 3175:3146(ResType) ImageSparseSampleImplicitLod 3172 3173 Bias 3174 - 3176: 7(f16vec4) CompositeExtract 3175 1 - Store 3143(texel) 3176 - 3177: 47(int) CompositeExtract 3175 0 - 3178: 224 Load 226(s2DShadow) - 3179: 167(fvec3) Load 169(c3) - 3180: 208(ptr) AccessChain 3143(texel) 207 - 3181: 52(float) CompositeExtract 3179 2 - 3183:3182(ResType) ImageSparseSampleDrefImplicitLod 3178 3179 3181 + 3172: 371 Load 373(s2DRectShadow) + 3173:154(f16vec2) Load 156(f16c2) + 3174: 52(float) Load 215(compare) + 3175: 208(ptr) AccessChain 3053(texel) 207 + 3176:3092(ResType) ImageSparseSampleDrefImplicitLod 3172 3173 3174 + 3177:6(float16_t) CompositeExtract 3176 1 + Store 3175 3177 + 3178: 47(int) CompositeExtract 3176 0 + 3179: 391 Load 393(sCubeArrayShadow) + 3180: 249(fvec4) Load 251(c4) + 3181: 52(float) Load 215(compare) + 3182: 208(ptr) AccessChain 3053(texel) 207 + 3183:3092(ResType) ImageSparseSampleDrefImplicitLod 3179 3180 3181 3184:6(float16_t) CompositeExtract 3183 1 - Store 3180 3184 + Store 3182 3184 3185: 47(int) CompositeExtract 3183 0 - 3186: 224 Load 226(s2DShadow) - 3187:154(f16vec2) Load 156(f16c2) + 3186: 391 Load 393(sCubeArrayShadow) + 3187: 7(f16vec4) Load 309(f16c4) 3188: 52(float) Load 215(compare) - 3189: 208(ptr) AccessChain 3143(texel) 207 - 3190:6(float16_t) Load 137(f16bias) - 3191:3182(ResType) ImageSparseSampleDrefImplicitLod 3186 3187 3188 Bias 3190 - 3192:6(float16_t) CompositeExtract 3191 1 - Store 3189 3192 - 3193: 47(int) CompositeExtract 3191 0 - 3194: 245 Load 247(sCubeShadow) - 3195: 249(fvec4) Load 251(c4) - 3196: 208(ptr) AccessChain 3143(texel) 207 - 3197: 52(float) CompositeExtract 3195 3 - 3198:3182(ResType) ImageSparseSampleDrefImplicitLod 3194 3195 3197 - 3199:6(float16_t) CompositeExtract 3198 1 - Store 3196 3199 - 3200: 47(int) CompositeExtract 3198 0 - 3201: 245 Load 247(sCubeShadow) - 3202:175(f16vec3) Load 177(f16c3) - 3203: 52(float) Load 215(compare) - 3204: 208(ptr) AccessChain 3143(texel) 207 - 3205:6(float16_t) Load 137(f16bias) - 3206:3182(ResType) ImageSparseSampleDrefImplicitLod 3201 3202 3203 Bias 3205 - 3207:6(float16_t) CompositeExtract 3206 1 - Store 3204 3207 + 3189: 208(ptr) AccessChain 3053(texel) 207 + 3190:3092(ResType) ImageSparseSampleDrefImplicitLod 3186 3187 3188 + 3191:6(float16_t) CompositeExtract 3190 1 + Store 3189 3191 + 3192: 47(int) CompositeExtract 3190 0 + 3193: 7(f16vec4) Load 3053(texel) + ReturnValue 3193 + FunctionEnd +71(testSparseTextureLod(): 7(f16vec4) Function None 8 + 72: Label + 3196(texel): 64(ptr) Variable Function + Store 3196(texel) 121 + 3197: 143 Load 145(s2D) + 3198: 53(fvec2) Load 148(c2) + 3199: 52(float) Load 565(lod) + 3200:3056(ResType) ImageSparseSampleExplicitLod 3197 3198 Lod 3199 + 3201: 7(f16vec4) CompositeExtract 3200 1 + Store 3196(texel) 3201 + 3202: 47(int) CompositeExtract 3200 0 + 3203: 143 Load 145(s2D) + 3204:154(f16vec2) Load 156(f16c2) + 3205:6(float16_t) Load 572(f16lod) + 3206:3056(ResType) ImageSparseSampleExplicitLod 3203 3204 Lod 3205 + 3207: 7(f16vec4) CompositeExtract 3206 1 + Store 3196(texel) 3207 3208: 47(int) CompositeExtract 3206 0 - 3209: 284 Load 286(s2DArray) + 3209: 163 Load 165(s3D) 3210: 167(fvec3) Load 169(c3) - 3211:3146(ResType) ImageSparseSampleImplicitLod 3209 3210 - 3212: 7(f16vec4) CompositeExtract 3211 1 - Store 3143(texel) 3212 - 3213: 47(int) CompositeExtract 3211 0 - 3214: 284 Load 286(s2DArray) - 3215:175(f16vec3) Load 177(f16c3) - 3216:6(float16_t) Load 137(f16bias) - 3217:3146(ResType) ImageSparseSampleImplicitLod 3214 3215 Bias 3216 - 3218: 7(f16vec4) CompositeExtract 3217 1 - Store 3143(texel) 3218 - 3219: 47(int) CompositeExtract 3217 0 - 3220: 299 Load 301(sCubeArray) - 3221: 249(fvec4) Load 251(c4) - 3222:3146(ResType) ImageSparseSampleImplicitLod 3220 3221 - 3223: 7(f16vec4) CompositeExtract 3222 1 - Store 3143(texel) 3223 - 3224: 47(int) CompositeExtract 3222 0 - 3225: 299 Load 301(sCubeArray) - 3226: 7(f16vec4) Load 309(f16c4) - 3227:6(float16_t) Load 137(f16bias) - 3228:3146(ResType) ImageSparseSampleImplicitLod 3225 3226 Bias 3227 - 3229: 7(f16vec4) CompositeExtract 3228 1 - Store 3143(texel) 3229 - 3230: 47(int) CompositeExtract 3228 0 - 3231: 337 Load 339(s2DArrayShadow) - 3232: 249(fvec4) Load 251(c4) - 3233: 208(ptr) AccessChain 3143(texel) 207 - 3234: 52(float) CompositeExtract 3232 3 - 3235:3182(ResType) ImageSparseSampleDrefImplicitLod 3231 3232 3234 - 3236:6(float16_t) CompositeExtract 3235 1 - Store 3233 3236 - 3237: 47(int) CompositeExtract 3235 0 - 3238: 337 Load 339(s2DArrayShadow) - 3239:175(f16vec3) Load 177(f16c3) - 3240: 52(float) Load 215(compare) - 3241: 208(ptr) AccessChain 3143(texel) 207 - 3242:3182(ResType) ImageSparseSampleDrefImplicitLod 3238 3239 3240 - 3243:6(float16_t) CompositeExtract 3242 1 - Store 3241 3243 - 3244: 47(int) CompositeExtract 3242 0 - 3245: 357 Load 359(s2DRect) - 3246: 53(fvec2) Load 148(c2) - 3247:3146(ResType) ImageSparseSampleImplicitLod 3245 3246 - 3248: 7(f16vec4) CompositeExtract 3247 1 - Store 3143(texel) 3248 - 3249: 47(int) CompositeExtract 3247 0 - 3250: 357 Load 359(s2DRect) - 3251:154(f16vec2) Load 156(f16c2) - 3252:3146(ResType) ImageSparseSampleImplicitLod 3250 3251 + 3211: 52(float) Load 565(lod) + 3212:3056(ResType) ImageSparseSampleExplicitLod 3209 3210 Lod 3211 + 3213: 7(f16vec4) CompositeExtract 3212 1 + Store 3196(texel) 3213 + 3214: 47(int) CompositeExtract 3212 0 + 3215: 163 Load 165(s3D) + 3216:175(f16vec3) Load 177(f16c3) + 3217:6(float16_t) Load 572(f16lod) + 3218:3056(ResType) ImageSparseSampleExplicitLod 3215 3216 Lod 3217 + 3219: 7(f16vec4) CompositeExtract 3218 1 + Store 3196(texel) 3219 + 3220: 47(int) CompositeExtract 3218 0 + 3221: 184 Load 186(sCube) + 3222: 167(fvec3) Load 169(c3) + 3223: 52(float) Load 565(lod) + 3224:3056(ResType) ImageSparseSampleExplicitLod 3221 3222 Lod 3223 + 3225: 7(f16vec4) CompositeExtract 3224 1 + Store 3196(texel) 3225 + 3226: 47(int) CompositeExtract 3224 0 + 3227: 184 Load 186(sCube) + 3228:175(f16vec3) Load 177(f16c3) + 3229:6(float16_t) Load 572(f16lod) + 3230:3056(ResType) ImageSparseSampleExplicitLod 3227 3228 Lod 3229 + 3231: 7(f16vec4) CompositeExtract 3230 1 + Store 3196(texel) 3231 + 3232: 47(int) CompositeExtract 3230 0 + 3233: 224 Load 226(s2DShadow) + 3234: 167(fvec3) Load 169(c3) + 3235: 52(float) Load 565(lod) + 3236: 208(ptr) AccessChain 3196(texel) 207 + 3237: 52(float) CompositeExtract 3234 2 + 3238:3092(ResType) ImageSparseSampleDrefExplicitLod 3233 3234 3237 Lod 3235 + 3239:6(float16_t) CompositeExtract 3238 1 + Store 3236 3239 + 3240: 47(int) CompositeExtract 3238 0 + 3241: 224 Load 226(s2DShadow) + 3242:154(f16vec2) Load 156(f16c2) + 3243: 52(float) Load 215(compare) + 3244:6(float16_t) Load 572(f16lod) + 3245: 208(ptr) AccessChain 3196(texel) 207 + 3246:3092(ResType) ImageSparseSampleDrefExplicitLod 3241 3242 3243 Lod 3244 + 3247:6(float16_t) CompositeExtract 3246 1 + Store 3245 3247 + 3248: 47(int) CompositeExtract 3246 0 + 3249: 284 Load 286(s2DArray) + 3250: 167(fvec3) Load 169(c3) + 3251: 52(float) Load 565(lod) + 3252:3056(ResType) ImageSparseSampleExplicitLod 3249 3250 Lod 3251 3253: 7(f16vec4) CompositeExtract 3252 1 - Store 3143(texel) 3253 + Store 3196(texel) 3253 3254: 47(int) CompositeExtract 3252 0 - 3255: 371 Load 373(s2DRectShadow) - 3256: 167(fvec3) Load 169(c3) - 3257: 208(ptr) AccessChain 3143(texel) 207 - 3258: 52(float) CompositeExtract 3256 2 - 3259:3182(ResType) ImageSparseSampleDrefImplicitLod 3255 3256 3258 - 3260:6(float16_t) CompositeExtract 3259 1 - Store 3257 3260 - 3261: 47(int) CompositeExtract 3259 0 - 3262: 371 Load 373(s2DRectShadow) - 3263:154(f16vec2) Load 156(f16c2) - 3264: 52(float) Load 215(compare) - 3265: 208(ptr) AccessChain 3143(texel) 207 - 3266:3182(ResType) ImageSparseSampleDrefImplicitLod 3262 3263 3264 - 3267:6(float16_t) CompositeExtract 3266 1 - Store 3265 3267 - 3268: 47(int) CompositeExtract 3266 0 - 3269: 391 Load 393(sCubeArrayShadow) - 3270: 249(fvec4) Load 251(c4) - 3271: 52(float) Load 215(compare) - 3272: 208(ptr) AccessChain 3143(texel) 207 - 3273:3182(ResType) ImageSparseSampleDrefImplicitLod 3269 3270 3271 - 3274:6(float16_t) CompositeExtract 3273 1 - Store 3272 3274 - 3275: 47(int) CompositeExtract 3273 0 - 3276: 391 Load 393(sCubeArrayShadow) - 3277: 7(f16vec4) Load 309(f16c4) - 3278: 52(float) Load 215(compare) - 3279: 208(ptr) AccessChain 3143(texel) 207 - 3280:3182(ResType) ImageSparseSampleDrefImplicitLod 3276 3277 3278 - 3281:6(float16_t) CompositeExtract 3280 1 - Store 3279 3281 - 3282: 47(int) CompositeExtract 3280 0 - 3283: 7(f16vec4) Load 3143(texel) - ReturnValue 3283 + 3255: 284 Load 286(s2DArray) + 3256:175(f16vec3) Load 177(f16c3) + 3257:6(float16_t) Load 572(f16lod) + 3258:3056(ResType) ImageSparseSampleExplicitLod 3255 3256 Lod 3257 + 3259: 7(f16vec4) CompositeExtract 3258 1 + Store 3196(texel) 3259 + 3260: 47(int) CompositeExtract 3258 0 + 3261: 299 Load 301(sCubeArray) + 3262: 249(fvec4) Load 251(c4) + 3263: 52(float) Load 565(lod) + 3264:3056(ResType) ImageSparseSampleExplicitLod 3261 3262 Lod 3263 + 3265: 7(f16vec4) CompositeExtract 3264 1 + Store 3196(texel) 3265 + 3266: 47(int) CompositeExtract 3264 0 + 3267: 299 Load 301(sCubeArray) + 3268: 7(f16vec4) Load 309(f16c4) + 3269:6(float16_t) Load 572(f16lod) + 3270:3056(ResType) ImageSparseSampleExplicitLod 3267 3268 Lod 3269 + 3271: 7(f16vec4) CompositeExtract 3270 1 + Store 3196(texel) 3271 + 3272: 47(int) CompositeExtract 3270 0 + 3273: 7(f16vec4) Load 3196(texel) + ReturnValue 3273 FunctionEnd -71(testSparseTextureLod(): 7(f16vec4) Function None 8 - 72: Label - 3286(texel): 64(ptr) Variable Function - Store 3286(texel) 121 - 3287: 143 Load 145(s2D) - 3288: 53(fvec2) Load 148(c2) - 3289: 52(float) Load 565(lod) - 3290:3146(ResType) ImageSparseSampleExplicitLod 3287 3288 Lod 3289 +73(testSparseTextureOffset(): 7(f16vec4) Function None 8 + 74: Label + 3276(texel): 64(ptr) Variable Function + Store 3276(texel) 121 + 3277: 143 Load 145(s2D) + 3278: 53(fvec2) Load 148(c2) + 3279:3056(ResType) ImageSparseSampleImplicitLod 3277 3278 ConstOffset 722 + 3280: 7(f16vec4) CompositeExtract 3279 1 + Store 3276(texel) 3280 + 3281: 47(int) CompositeExtract 3279 0 + 3282: 143 Load 145(s2D) + 3283:154(f16vec2) Load 156(f16c2) + 3284:6(float16_t) Load 137(f16bias) + 3285:3056(ResType) ImageSparseSampleImplicitLod 3282 3283 Bias ConstOffset 3284 722 + 3286: 7(f16vec4) CompositeExtract 3285 1 + Store 3276(texel) 3286 + 3287: 47(int) CompositeExtract 3285 0 + 3288: 163 Load 165(s3D) + 3289: 167(fvec3) Load 169(c3) + 3290:3056(ResType) ImageSparseSampleImplicitLod 3288 3289 ConstOffset 735 3291: 7(f16vec4) CompositeExtract 3290 1 - Store 3286(texel) 3291 + Store 3276(texel) 3291 3292: 47(int) CompositeExtract 3290 0 - 3293: 143 Load 145(s2D) - 3294:154(f16vec2) Load 156(f16c2) - 3295:6(float16_t) Load 572(f16lod) - 3296:3146(ResType) ImageSparseSampleExplicitLod 3293 3294 Lod 3295 + 3293: 163 Load 165(s3D) + 3294:175(f16vec3) Load 177(f16c3) + 3295:6(float16_t) Load 137(f16bias) + 3296:3056(ResType) ImageSparseSampleImplicitLod 3293 3294 Bias ConstOffset 3295 735 3297: 7(f16vec4) CompositeExtract 3296 1 - Store 3286(texel) 3297 + Store 3276(texel) 3297 3298: 47(int) CompositeExtract 3296 0 - 3299: 163 Load 165(s3D) - 3300: 167(fvec3) Load 169(c3) - 3301: 52(float) Load 565(lod) - 3302:3146(ResType) ImageSparseSampleExplicitLod 3299 3300 Lod 3301 - 3303: 7(f16vec4) CompositeExtract 3302 1 - Store 3286(texel) 3303 - 3304: 47(int) CompositeExtract 3302 0 - 3305: 163 Load 165(s3D) - 3306:175(f16vec3) Load 177(f16c3) - 3307:6(float16_t) Load 572(f16lod) - 3308:3146(ResType) ImageSparseSampleExplicitLod 3305 3306 Lod 3307 - 3309: 7(f16vec4) CompositeExtract 3308 1 - Store 3286(texel) 3309 - 3310: 47(int) CompositeExtract 3308 0 - 3311: 184 Load 186(sCube) - 3312: 167(fvec3) Load 169(c3) - 3313: 52(float) Load 565(lod) - 3314:3146(ResType) ImageSparseSampleExplicitLod 3311 3312 Lod 3313 - 3315: 7(f16vec4) CompositeExtract 3314 1 - Store 3286(texel) 3315 - 3316: 47(int) CompositeExtract 3314 0 - 3317: 184 Load 186(sCube) - 3318:175(f16vec3) Load 177(f16c3) - 3319:6(float16_t) Load 572(f16lod) - 3320:3146(ResType) ImageSparseSampleExplicitLod 3317 3318 Lod 3319 - 3321: 7(f16vec4) CompositeExtract 3320 1 - Store 3286(texel) 3321 + 3299: 357 Load 359(s2DRect) + 3300: 53(fvec2) Load 148(c2) + 3301:3056(ResType) ImageSparseSampleImplicitLod 3299 3300 ConstOffset 722 + 3302: 7(f16vec4) CompositeExtract 3301 1 + Store 3276(texel) 3302 + 3303: 47(int) CompositeExtract 3301 0 + 3304: 357 Load 359(s2DRect) + 3305:154(f16vec2) Load 156(f16c2) + 3306:3056(ResType) ImageSparseSampleImplicitLod 3304 3305 ConstOffset 722 + 3307: 7(f16vec4) CompositeExtract 3306 1 + Store 3276(texel) 3307 + 3308: 47(int) CompositeExtract 3306 0 + 3309: 371 Load 373(s2DRectShadow) + 3310: 167(fvec3) Load 169(c3) + 3311: 208(ptr) AccessChain 3276(texel) 207 + 3312: 52(float) CompositeExtract 3310 2 + 3313:3092(ResType) ImageSparseSampleDrefImplicitLod 3309 3310 3312 ConstOffset 722 + 3314:6(float16_t) CompositeExtract 3313 1 + Store 3311 3314 + 3315: 47(int) CompositeExtract 3313 0 + 3316: 371 Load 373(s2DRectShadow) + 3317:154(f16vec2) Load 156(f16c2) + 3318: 52(float) Load 215(compare) + 3319: 208(ptr) AccessChain 3276(texel) 207 + 3320:3092(ResType) ImageSparseSampleDrefImplicitLod 3316 3317 3318 ConstOffset 722 + 3321:6(float16_t) CompositeExtract 3320 1 + Store 3319 3321 3322: 47(int) CompositeExtract 3320 0 3323: 224 Load 226(s2DShadow) 3324: 167(fvec3) Load 169(c3) - 3325: 52(float) Load 565(lod) - 3326: 208(ptr) AccessChain 3286(texel) 207 - 3327: 52(float) CompositeExtract 3324 2 - 3328:3182(ResType) ImageSparseSampleDrefExplicitLod 3323 3324 3327 Lod 3325 - 3329:6(float16_t) CompositeExtract 3328 1 - Store 3326 3329 - 3330: 47(int) CompositeExtract 3328 0 - 3331: 224 Load 226(s2DShadow) - 3332:154(f16vec2) Load 156(f16c2) - 3333: 52(float) Load 215(compare) - 3334:6(float16_t) Load 572(f16lod) - 3335: 208(ptr) AccessChain 3286(texel) 207 - 3336:3182(ResType) ImageSparseSampleDrefExplicitLod 3331 3332 3333 Lod 3334 - 3337:6(float16_t) CompositeExtract 3336 1 - Store 3335 3337 - 3338: 47(int) CompositeExtract 3336 0 - 3339: 284 Load 286(s2DArray) - 3340: 167(fvec3) Load 169(c3) - 3341: 52(float) Load 565(lod) - 3342:3146(ResType) ImageSparseSampleExplicitLod 3339 3340 Lod 3341 - 3343: 7(f16vec4) CompositeExtract 3342 1 - Store 3286(texel) 3343 - 3344: 47(int) CompositeExtract 3342 0 - 3345: 284 Load 286(s2DArray) - 3346:175(f16vec3) Load 177(f16c3) - 3347:6(float16_t) Load 572(f16lod) - 3348:3146(ResType) ImageSparseSampleExplicitLod 3345 3346 Lod 3347 - 3349: 7(f16vec4) CompositeExtract 3348 1 - Store 3286(texel) 3349 - 3350: 47(int) CompositeExtract 3348 0 - 3351: 299 Load 301(sCubeArray) - 3352: 249(fvec4) Load 251(c4) - 3353: 52(float) Load 565(lod) - 3354:3146(ResType) ImageSparseSampleExplicitLod 3351 3352 Lod 3353 - 3355: 7(f16vec4) CompositeExtract 3354 1 - Store 3286(texel) 3355 - 3356: 47(int) CompositeExtract 3354 0 - 3357: 299 Load 301(sCubeArray) - 3358: 7(f16vec4) Load 309(f16c4) - 3359:6(float16_t) Load 572(f16lod) - 3360:3146(ResType) ImageSparseSampleExplicitLod 3357 3358 Lod 3359 - 3361: 7(f16vec4) CompositeExtract 3360 1 - Store 3286(texel) 3361 + 3325: 208(ptr) AccessChain 3276(texel) 207 + 3326: 52(float) CompositeExtract 3324 2 + 3327:3092(ResType) ImageSparseSampleDrefImplicitLod 3323 3324 3326 ConstOffset 722 + 3328:6(float16_t) CompositeExtract 3327 1 + Store 3325 3328 + 3329: 47(int) CompositeExtract 3327 0 + 3330: 224 Load 226(s2DShadow) + 3331:154(f16vec2) Load 156(f16c2) + 3332: 52(float) Load 215(compare) + 3333: 208(ptr) AccessChain 3276(texel) 207 + 3334:6(float16_t) Load 137(f16bias) + 3335:3092(ResType) ImageSparseSampleDrefImplicitLod 3330 3331 3332 Bias ConstOffset 3334 722 + 3336:6(float16_t) CompositeExtract 3335 1 + Store 3333 3336 + 3337: 47(int) CompositeExtract 3335 0 + 3338: 284 Load 286(s2DArray) + 3339: 167(fvec3) Load 169(c3) + 3340:3056(ResType) ImageSparseSampleImplicitLod 3338 3339 ConstOffset 722 + 3341: 7(f16vec4) CompositeExtract 3340 1 + Store 3276(texel) 3341 + 3342: 47(int) CompositeExtract 3340 0 + 3343: 284 Load 286(s2DArray) + 3344:175(f16vec3) Load 177(f16c3) + 3345:6(float16_t) Load 137(f16bias) + 3346:3056(ResType) ImageSparseSampleImplicitLod 3343 3344 Bias ConstOffset 3345 722 + 3347: 7(f16vec4) CompositeExtract 3346 1 + Store 3276(texel) 3347 + 3348: 47(int) CompositeExtract 3346 0 + 3349: 337 Load 339(s2DArrayShadow) + 3350: 249(fvec4) Load 251(c4) + 3351: 208(ptr) AccessChain 3276(texel) 207 + 3352: 52(float) CompositeExtract 3350 3 + 3353:3092(ResType) ImageSparseSampleDrefImplicitLod 3349 3350 3352 ConstOffset 722 + 3354:6(float16_t) CompositeExtract 3353 1 + Store 3351 3354 + 3355: 47(int) CompositeExtract 3353 0 + 3356: 337 Load 339(s2DArrayShadow) + 3357:175(f16vec3) Load 177(f16c3) + 3358: 52(float) Load 215(compare) + 3359: 208(ptr) AccessChain 3276(texel) 207 + 3360:3092(ResType) ImageSparseSampleDrefImplicitLod 3356 3357 3358 ConstOffset 722 + 3361:6(float16_t) CompositeExtract 3360 1 + Store 3359 3361 3362: 47(int) CompositeExtract 3360 0 - 3363: 7(f16vec4) Load 3286(texel) + 3363: 7(f16vec4) Load 3276(texel) ReturnValue 3363 FunctionEnd -73(testSparseTextureOffset(): 7(f16vec4) Function None 8 - 74: Label +75(testSparseTextureLodOffset(): 7(f16vec4) Function None 8 + 76: Label 3366(texel): 64(ptr) Variable Function Store 3366(texel) 121 3367: 143 Load 145(s2D) 3368: 53(fvec2) Load 148(c2) - 3369:3146(ResType) ImageSparseSampleImplicitLod 3367 3368 ConstOffset 722 - 3370: 7(f16vec4) CompositeExtract 3369 1 - Store 3366(texel) 3370 - 3371: 47(int) CompositeExtract 3369 0 - 3372: 143 Load 145(s2D) - 3373:154(f16vec2) Load 156(f16c2) - 3374:6(float16_t) Load 137(f16bias) - 3375:3146(ResType) ImageSparseSampleImplicitLod 3372 3373 Bias ConstOffset 3374 722 - 3376: 7(f16vec4) CompositeExtract 3375 1 - Store 3366(texel) 3376 - 3377: 47(int) CompositeExtract 3375 0 - 3378: 163 Load 165(s3D) - 3379: 167(fvec3) Load 169(c3) - 3380:3146(ResType) ImageSparseSampleImplicitLod 3378 3379 ConstOffset 735 - 3381: 7(f16vec4) CompositeExtract 3380 1 - Store 3366(texel) 3381 - 3382: 47(int) CompositeExtract 3380 0 - 3383: 163 Load 165(s3D) - 3384:175(f16vec3) Load 177(f16c3) - 3385:6(float16_t) Load 137(f16bias) - 3386:3146(ResType) ImageSparseSampleImplicitLod 3383 3384 Bias ConstOffset 3385 735 - 3387: 7(f16vec4) CompositeExtract 3386 1 - Store 3366(texel) 3387 - 3388: 47(int) CompositeExtract 3386 0 - 3389: 357 Load 359(s2DRect) - 3390: 53(fvec2) Load 148(c2) - 3391:3146(ResType) ImageSparseSampleImplicitLod 3389 3390 ConstOffset 722 - 3392: 7(f16vec4) CompositeExtract 3391 1 - Store 3366(texel) 3392 - 3393: 47(int) CompositeExtract 3391 0 - 3394: 357 Load 359(s2DRect) - 3395:154(f16vec2) Load 156(f16c2) - 3396:3146(ResType) ImageSparseSampleImplicitLod 3394 3395 ConstOffset 722 - 3397: 7(f16vec4) CompositeExtract 3396 1 - Store 3366(texel) 3397 + 3369: 52(float) Load 565(lod) + 3370:3056(ResType) ImageSparseSampleExplicitLod 3367 3368 Lod ConstOffset 3369 722 + 3371: 7(f16vec4) CompositeExtract 3370 1 + Store 3366(texel) 3371 + 3372: 47(int) CompositeExtract 3370 0 + 3373: 143 Load 145(s2D) + 3374:154(f16vec2) Load 156(f16c2) + 3375:6(float16_t) Load 572(f16lod) + 3376:3056(ResType) ImageSparseSampleExplicitLod 3373 3374 Lod ConstOffset 3375 722 + 3377: 7(f16vec4) CompositeExtract 3376 1 + Store 3366(texel) 3377 + 3378: 47(int) CompositeExtract 3376 0 + 3379: 163 Load 165(s3D) + 3380: 167(fvec3) Load 169(c3) + 3381: 52(float) Load 565(lod) + 3382:3056(ResType) ImageSparseSampleExplicitLod 3379 3380 Lod ConstOffset 3381 735 + 3383: 7(f16vec4) CompositeExtract 3382 1 + Store 3366(texel) 3383 + 3384: 47(int) CompositeExtract 3382 0 + 3385: 163 Load 165(s3D) + 3386:175(f16vec3) Load 177(f16c3) + 3387:6(float16_t) Load 572(f16lod) + 3388:3056(ResType) ImageSparseSampleExplicitLod 3385 3386 Lod ConstOffset 3387 735 + 3389: 7(f16vec4) CompositeExtract 3388 1 + Store 3366(texel) 3389 + 3390: 47(int) CompositeExtract 3388 0 + 3391: 224 Load 226(s2DShadow) + 3392: 167(fvec3) Load 169(c3) + 3393: 52(float) Load 565(lod) + 3394: 208(ptr) AccessChain 3366(texel) 207 + 3395: 52(float) CompositeExtract 3392 2 + 3396:3092(ResType) ImageSparseSampleDrefExplicitLod 3391 3392 3395 Lod ConstOffset 3393 722 + 3397:6(float16_t) CompositeExtract 3396 1 + Store 3394 3397 3398: 47(int) CompositeExtract 3396 0 - 3399: 371 Load 373(s2DRectShadow) - 3400: 167(fvec3) Load 169(c3) - 3401: 208(ptr) AccessChain 3366(texel) 207 - 3402: 52(float) CompositeExtract 3400 2 - 3403:3182(ResType) ImageSparseSampleDrefImplicitLod 3399 3400 3402 ConstOffset 722 - 3404:6(float16_t) CompositeExtract 3403 1 - Store 3401 3404 - 3405: 47(int) CompositeExtract 3403 0 - 3406: 371 Load 373(s2DRectShadow) - 3407:154(f16vec2) Load 156(f16c2) - 3408: 52(float) Load 215(compare) - 3409: 208(ptr) AccessChain 3366(texel) 207 - 3410:3182(ResType) ImageSparseSampleDrefImplicitLod 3406 3407 3408 ConstOffset 722 - 3411:6(float16_t) CompositeExtract 3410 1 - Store 3409 3411 + 3399: 224 Load 226(s2DShadow) + 3400:154(f16vec2) Load 156(f16c2) + 3401: 52(float) Load 215(compare) + 3402:6(float16_t) Load 572(f16lod) + 3403: 208(ptr) AccessChain 3366(texel) 207 + 3404:3092(ResType) ImageSparseSampleDrefExplicitLod 3399 3400 3401 Lod ConstOffset 3402 722 + 3405:6(float16_t) CompositeExtract 3404 1 + Store 3403 3405 + 3406: 47(int) CompositeExtract 3404 0 + 3407: 284 Load 286(s2DArray) + 3408: 167(fvec3) Load 169(c3) + 3409: 52(float) Load 565(lod) + 3410:3056(ResType) ImageSparseSampleExplicitLod 3407 3408 Lod ConstOffset 3409 722 + 3411: 7(f16vec4) CompositeExtract 3410 1 + Store 3366(texel) 3411 3412: 47(int) CompositeExtract 3410 0 - 3413: 224 Load 226(s2DShadow) - 3414: 167(fvec3) Load 169(c3) - 3415: 208(ptr) AccessChain 3366(texel) 207 - 3416: 52(float) CompositeExtract 3414 2 - 3417:3182(ResType) ImageSparseSampleDrefImplicitLod 3413 3414 3416 ConstOffset 722 - 3418:6(float16_t) CompositeExtract 3417 1 - Store 3415 3418 - 3419: 47(int) CompositeExtract 3417 0 - 3420: 224 Load 226(s2DShadow) - 3421:154(f16vec2) Load 156(f16c2) - 3422: 52(float) Load 215(compare) - 3423: 208(ptr) AccessChain 3366(texel) 207 - 3424:6(float16_t) Load 137(f16bias) - 3425:3182(ResType) ImageSparseSampleDrefImplicitLod 3420 3421 3422 Bias ConstOffset 3424 722 - 3426:6(float16_t) CompositeExtract 3425 1 - Store 3423 3426 - 3427: 47(int) CompositeExtract 3425 0 - 3428: 284 Load 286(s2DArray) - 3429: 167(fvec3) Load 169(c3) - 3430:3146(ResType) ImageSparseSampleImplicitLod 3428 3429 ConstOffset 722 - 3431: 7(f16vec4) CompositeExtract 3430 1 - Store 3366(texel) 3431 - 3432: 47(int) CompositeExtract 3430 0 - 3433: 284 Load 286(s2DArray) - 3434:175(f16vec3) Load 177(f16c3) - 3435:6(float16_t) Load 137(f16bias) - 3436:3146(ResType) ImageSparseSampleImplicitLod 3433 3434 Bias ConstOffset 3435 722 - 3437: 7(f16vec4) CompositeExtract 3436 1 - Store 3366(texel) 3437 - 3438: 47(int) CompositeExtract 3436 0 - 3439: 337 Load 339(s2DArrayShadow) - 3440: 249(fvec4) Load 251(c4) - 3441: 208(ptr) AccessChain 3366(texel) 207 - 3442: 52(float) CompositeExtract 3440 3 - 3443:3182(ResType) ImageSparseSampleDrefImplicitLod 3439 3440 3442 ConstOffset 722 - 3444:6(float16_t) CompositeExtract 3443 1 - Store 3441 3444 - 3445: 47(int) CompositeExtract 3443 0 - 3446: 337 Load 339(s2DArrayShadow) - 3447:175(f16vec3) Load 177(f16c3) - 3448: 52(float) Load 215(compare) - 3449: 208(ptr) AccessChain 3366(texel) 207 - 3450:3182(ResType) ImageSparseSampleDrefImplicitLod 3446 3447 3448 ConstOffset 722 - 3451:6(float16_t) CompositeExtract 3450 1 - Store 3449 3451 - 3452: 47(int) CompositeExtract 3450 0 - 3453: 7(f16vec4) Load 3366(texel) - ReturnValue 3453 - FunctionEnd -75(testSparseTextureLodOffset(): 7(f16vec4) Function None 8 - 76: Label - 3456(texel): 64(ptr) Variable Function - Store 3456(texel) 121 - 3457: 143 Load 145(s2D) - 3458: 53(fvec2) Load 148(c2) - 3459: 52(float) Load 565(lod) - 3460:3146(ResType) ImageSparseSampleExplicitLod 3457 3458 Lod ConstOffset 3459 722 - 3461: 7(f16vec4) CompositeExtract 3460 1 - Store 3456(texel) 3461 - 3462: 47(int) CompositeExtract 3460 0 - 3463: 143 Load 145(s2D) - 3464:154(f16vec2) Load 156(f16c2) - 3465:6(float16_t) Load 572(f16lod) - 3466:3146(ResType) ImageSparseSampleExplicitLod 3463 3464 Lod ConstOffset 3465 722 - 3467: 7(f16vec4) CompositeExtract 3466 1 - Store 3456(texel) 3467 - 3468: 47(int) CompositeExtract 3466 0 - 3469: 163 Load 165(s3D) - 3470: 167(fvec3) Load 169(c3) - 3471: 52(float) Load 565(lod) - 3472:3146(ResType) ImageSparseSampleExplicitLod 3469 3470 Lod ConstOffset 3471 735 - 3473: 7(f16vec4) CompositeExtract 3472 1 - Store 3456(texel) 3473 - 3474: 47(int) CompositeExtract 3472 0 - 3475: 163 Load 165(s3D) - 3476:175(f16vec3) Load 177(f16c3) - 3477:6(float16_t) Load 572(f16lod) - 3478:3146(ResType) ImageSparseSampleExplicitLod 3475 3476 Lod ConstOffset 3477 735 - 3479: 7(f16vec4) CompositeExtract 3478 1 - Store 3456(texel) 3479 - 3480: 47(int) CompositeExtract 3478 0 - 3481: 224 Load 226(s2DShadow) - 3482: 167(fvec3) Load 169(c3) - 3483: 52(float) Load 565(lod) - 3484: 208(ptr) AccessChain 3456(texel) 207 - 3485: 52(float) CompositeExtract 3482 2 - 3486:3182(ResType) ImageSparseSampleDrefExplicitLod 3481 3482 3485 Lod ConstOffset 3483 722 - 3487:6(float16_t) CompositeExtract 3486 1 - Store 3484 3487 - 3488: 47(int) CompositeExtract 3486 0 - 3489: 224 Load 226(s2DShadow) - 3490:154(f16vec2) Load 156(f16c2) - 3491: 52(float) Load 215(compare) - 3492:6(float16_t) Load 572(f16lod) - 3493: 208(ptr) AccessChain 3456(texel) 207 - 3494:3182(ResType) ImageSparseSampleDrefExplicitLod 3489 3490 3491 Lod ConstOffset 3492 722 - 3495:6(float16_t) CompositeExtract 3494 1 - Store 3493 3495 - 3496: 47(int) CompositeExtract 3494 0 - 3497: 284 Load 286(s2DArray) - 3498: 167(fvec3) Load 169(c3) - 3499: 52(float) Load 565(lod) - 3500:3146(ResType) ImageSparseSampleExplicitLod 3497 3498 Lod ConstOffset 3499 722 - 3501: 7(f16vec4) CompositeExtract 3500 1 - Store 3456(texel) 3501 - 3502: 47(int) CompositeExtract 3500 0 - 3503: 284 Load 286(s2DArray) - 3504:175(f16vec3) Load 177(f16c3) - 3505:6(float16_t) Load 572(f16lod) - 3506:3146(ResType) ImageSparseSampleExplicitLod 3503 3504 Lod ConstOffset 3505 722 - 3507: 7(f16vec4) CompositeExtract 3506 1 - Store 3456(texel) 3507 - 3508: 47(int) CompositeExtract 3506 0 - 3509: 7(f16vec4) Load 3456(texel) - ReturnValue 3509 + 3413: 284 Load 286(s2DArray) + 3414:175(f16vec3) Load 177(f16c3) + 3415:6(float16_t) Load 572(f16lod) + 3416:3056(ResType) ImageSparseSampleExplicitLod 3413 3414 Lod ConstOffset 3415 722 + 3417: 7(f16vec4) CompositeExtract 3416 1 + Store 3366(texel) 3417 + 3418: 47(int) CompositeExtract 3416 0 + 3419: 7(f16vec4) Load 3366(texel) + ReturnValue 3419 FunctionEnd 77(testSparseTextureGrad(): 7(f16vec4) Function None 8 78: Label - 3512(texel): 64(ptr) Variable Function - Store 3512(texel) 121 - 3513: 143 Load 145(s2D) - 3514: 53(fvec2) Load 148(c2) - 3515: 53(fvec2) Load 1409(dPdxy2) - 3516: 53(fvec2) Load 1409(dPdxy2) - 3517:3146(ResType) ImageSparseSampleExplicitLod 3513 3514 Grad 3515 3516 - 3518: 7(f16vec4) CompositeExtract 3517 1 - Store 3512(texel) 3518 - 3519: 47(int) CompositeExtract 3517 0 - 3520: 143 Load 145(s2D) - 3521:154(f16vec2) Load 156(f16c2) - 3522:154(f16vec2) Load 1417(f16dPdxy2) - 3523:154(f16vec2) Load 1417(f16dPdxy2) - 3524:3146(ResType) ImageSparseSampleExplicitLod 3520 3521 Grad 3522 3523 - 3525: 7(f16vec4) CompositeExtract 3524 1 - Store 3512(texel) 3525 - 3526: 47(int) CompositeExtract 3524 0 - 3527: 163 Load 165(s3D) - 3528: 167(fvec3) Load 169(c3) - 3529: 167(fvec3) Load 1425(dPdxy3) - 3530: 167(fvec3) Load 1425(dPdxy3) - 3531:3146(ResType) ImageSparseSampleExplicitLod 3527 3528 Grad 3529 3530 - 3532: 7(f16vec4) CompositeExtract 3531 1 - Store 3512(texel) 3532 - 3533: 47(int) CompositeExtract 3531 0 - 3534: 163 Load 165(s3D) - 3535:175(f16vec3) Load 177(f16c3) - 3536:175(f16vec3) Load 1433(f16dPdxy3) - 3537:175(f16vec3) Load 1433(f16dPdxy3) - 3538:3146(ResType) ImageSparseSampleExplicitLod 3534 3535 Grad 3536 3537 - 3539: 7(f16vec4) CompositeExtract 3538 1 - Store 3512(texel) 3539 - 3540: 47(int) CompositeExtract 3538 0 - 3541: 184 Load 186(sCube) - 3542: 167(fvec3) Load 169(c3) - 3543: 167(fvec3) Load 1425(dPdxy3) - 3544: 167(fvec3) Load 1425(dPdxy3) - 3545:3146(ResType) ImageSparseSampleExplicitLod 3541 3542 Grad 3543 3544 - 3546: 7(f16vec4) CompositeExtract 3545 1 - Store 3512(texel) 3546 - 3547: 47(int) CompositeExtract 3545 0 - 3548: 184 Load 186(sCube) - 3549:175(f16vec3) Load 177(f16c3) - 3550:175(f16vec3) Load 1433(f16dPdxy3) - 3551:175(f16vec3) Load 1433(f16dPdxy3) - 3552:3146(ResType) ImageSparseSampleExplicitLod 3548 3549 Grad 3550 3551 - 3553: 7(f16vec4) CompositeExtract 3552 1 - Store 3512(texel) 3553 - 3554: 47(int) CompositeExtract 3552 0 - 3555: 357 Load 359(s2DRect) - 3556: 53(fvec2) Load 148(c2) - 3557: 53(fvec2) Load 1409(dPdxy2) - 3558: 53(fvec2) Load 1409(dPdxy2) - 3559:3146(ResType) ImageSparseSampleExplicitLod 3555 3556 Grad 3557 3558 - 3560: 7(f16vec4) CompositeExtract 3559 1 - Store 3512(texel) 3560 - 3561: 47(int) CompositeExtract 3559 0 - 3562: 357 Load 359(s2DRect) - 3563:154(f16vec2) Load 156(f16c2) - 3564:154(f16vec2) Load 1417(f16dPdxy2) - 3565:154(f16vec2) Load 1417(f16dPdxy2) - 3566:3146(ResType) ImageSparseSampleExplicitLod 3562 3563 Grad 3564 3565 + 3422(texel): 64(ptr) Variable Function + Store 3422(texel) 121 + 3423: 143 Load 145(s2D) + 3424: 53(fvec2) Load 148(c2) + 3425: 53(fvec2) Load 1407(dPdxy2) + 3426:3056(ResType) ImageSparseSampleExplicitLod 3423 3424 Grad 3425 3425 + 3427: 7(f16vec4) CompositeExtract 3426 1 + Store 3422(texel) 3427 + 3428: 47(int) CompositeExtract 3426 0 + 3429: 143 Load 145(s2D) + 3430:154(f16vec2) Load 156(f16c2) + 3431:154(f16vec2) Load 1414(f16dPdxy2) + 3432:3056(ResType) ImageSparseSampleExplicitLod 3429 3430 Grad 3431 3431 + 3433: 7(f16vec4) CompositeExtract 3432 1 + Store 3422(texel) 3433 + 3434: 47(int) CompositeExtract 3432 0 + 3435: 163 Load 165(s3D) + 3436: 167(fvec3) Load 169(c3) + 3437: 167(fvec3) Load 1421(dPdxy3) + 3438:3056(ResType) ImageSparseSampleExplicitLod 3435 3436 Grad 3437 3437 + 3439: 7(f16vec4) CompositeExtract 3438 1 + Store 3422(texel) 3439 + 3440: 47(int) CompositeExtract 3438 0 + 3441: 163 Load 165(s3D) + 3442:175(f16vec3) Load 177(f16c3) + 3443:175(f16vec3) Load 1428(f16dPdxy3) + 3444:3056(ResType) ImageSparseSampleExplicitLod 3441 3442 Grad 3443 3443 + 3445: 7(f16vec4) CompositeExtract 3444 1 + Store 3422(texel) 3445 + 3446: 47(int) CompositeExtract 3444 0 + 3447: 184 Load 186(sCube) + 3448: 167(fvec3) Load 169(c3) + 3449: 167(fvec3) Load 1421(dPdxy3) + 3450:3056(ResType) ImageSparseSampleExplicitLod 3447 3448 Grad 3449 3449 + 3451: 7(f16vec4) CompositeExtract 3450 1 + Store 3422(texel) 3451 + 3452: 47(int) CompositeExtract 3450 0 + 3453: 184 Load 186(sCube) + 3454:175(f16vec3) Load 177(f16c3) + 3455:175(f16vec3) Load 1428(f16dPdxy3) + 3456:3056(ResType) ImageSparseSampleExplicitLod 3453 3454 Grad 3455 3455 + 3457: 7(f16vec4) CompositeExtract 3456 1 + Store 3422(texel) 3457 + 3458: 47(int) CompositeExtract 3456 0 + 3459: 357 Load 359(s2DRect) + 3460: 53(fvec2) Load 148(c2) + 3461: 53(fvec2) Load 1407(dPdxy2) + 3462:3056(ResType) ImageSparseSampleExplicitLod 3459 3460 Grad 3461 3461 + 3463: 7(f16vec4) CompositeExtract 3462 1 + Store 3422(texel) 3463 + 3464: 47(int) CompositeExtract 3462 0 + 3465: 357 Load 359(s2DRect) + 3466:154(f16vec2) Load 156(f16c2) + 3467:154(f16vec2) Load 1414(f16dPdxy2) + 3468:3056(ResType) ImageSparseSampleExplicitLod 3465 3466 Grad 3467 3467 + 3469: 7(f16vec4) CompositeExtract 3468 1 + Store 3422(texel) 3469 + 3470: 47(int) CompositeExtract 3468 0 + 3471: 371 Load 373(s2DRectShadow) + 3472: 167(fvec3) Load 169(c3) + 3473: 53(fvec2) Load 1407(dPdxy2) + 3474: 208(ptr) AccessChain 3422(texel) 207 + 3475: 52(float) CompositeExtract 3472 2 + 3476:3092(ResType) ImageSparseSampleDrefExplicitLod 3471 3472 3475 Grad 3473 3473 + 3477:6(float16_t) CompositeExtract 3476 1 + Store 3474 3477 + 3478: 47(int) CompositeExtract 3476 0 + 3479: 371 Load 373(s2DRectShadow) + 3480:154(f16vec2) Load 156(f16c2) + 3481: 52(float) Load 215(compare) + 3482:154(f16vec2) Load 1414(f16dPdxy2) + 3483: 208(ptr) AccessChain 3422(texel) 207 + 3484:3092(ResType) ImageSparseSampleDrefExplicitLod 3479 3480 3481 Grad 3482 3482 + 3485:6(float16_t) CompositeExtract 3484 1 + Store 3483 3485 + 3486: 47(int) CompositeExtract 3484 0 + 3487: 224 Load 226(s2DShadow) + 3488: 167(fvec3) Load 169(c3) + 3489: 53(fvec2) Load 1407(dPdxy2) + 3490: 208(ptr) AccessChain 3422(texel) 207 + 3491: 52(float) CompositeExtract 3488 2 + 3492:3092(ResType) ImageSparseSampleDrefExplicitLod 3487 3488 3491 Grad 3489 3489 + 3493:6(float16_t) CompositeExtract 3492 1 + Store 3490 3493 + 3494: 47(int) CompositeExtract 3492 0 + 3495: 224 Load 226(s2DShadow) + 3496:154(f16vec2) Load 156(f16c2) + 3497: 52(float) Load 215(compare) + 3498:154(f16vec2) Load 1414(f16dPdxy2) + 3499: 208(ptr) AccessChain 3422(texel) 207 + 3500:3092(ResType) ImageSparseSampleDrefExplicitLod 3495 3496 3497 Grad 3498 3498 + 3501:6(float16_t) CompositeExtract 3500 1 + Store 3499 3501 + 3502: 47(int) CompositeExtract 3500 0 + 3503: 245 Load 247(sCubeShadow) + 3504: 249(fvec4) Load 251(c4) + 3505: 167(fvec3) Load 1421(dPdxy3) + 3506: 208(ptr) AccessChain 3422(texel) 207 + 3507: 52(float) CompositeExtract 3504 3 + 3508:3092(ResType) ImageSparseSampleDrefExplicitLod 3503 3504 3507 Grad 3505 3505 + 3509:6(float16_t) CompositeExtract 3508 1 + Store 3506 3509 + 3510: 47(int) CompositeExtract 3508 0 + 3511: 245 Load 247(sCubeShadow) + 3512:175(f16vec3) Load 177(f16c3) + 3513: 52(float) Load 215(compare) + 3514:175(f16vec3) Load 1428(f16dPdxy3) + 3515: 208(ptr) AccessChain 3422(texel) 207 + 3516:3092(ResType) ImageSparseSampleDrefExplicitLod 3511 3512 3513 Grad 3514 3514 + 3517:6(float16_t) CompositeExtract 3516 1 + Store 3515 3517 + 3518: 47(int) CompositeExtract 3516 0 + 3519: 284 Load 286(s2DArray) + 3520: 167(fvec3) Load 169(c3) + 3521: 53(fvec2) Load 1407(dPdxy2) + 3522:3056(ResType) ImageSparseSampleExplicitLod 3519 3520 Grad 3521 3521 + 3523: 7(f16vec4) CompositeExtract 3522 1 + Store 3422(texel) 3523 + 3524: 47(int) CompositeExtract 3522 0 + 3525: 284 Load 286(s2DArray) + 3526:175(f16vec3) Load 177(f16c3) + 3527:154(f16vec2) Load 1414(f16dPdxy2) + 3528:3056(ResType) ImageSparseSampleExplicitLod 3525 3526 Grad 3527 3527 + 3529: 7(f16vec4) CompositeExtract 3528 1 + Store 3422(texel) 3529 + 3530: 47(int) CompositeExtract 3528 0 + 3531: 337 Load 339(s2DArrayShadow) + 3532: 249(fvec4) Load 251(c4) + 3533: 53(fvec2) Load 1407(dPdxy2) + 3534: 208(ptr) AccessChain 3422(texel) 207 + 3535: 52(float) CompositeExtract 3532 3 + 3536:3092(ResType) ImageSparseSampleDrefExplicitLod 3531 3532 3535 Grad 3533 3533 + 3537:6(float16_t) CompositeExtract 3536 1 + Store 3534 3537 + 3538: 47(int) CompositeExtract 3536 0 + 3539: 337 Load 339(s2DArrayShadow) + 3540:175(f16vec3) Load 177(f16c3) + 3541: 52(float) Load 215(compare) + 3542:154(f16vec2) Load 1414(f16dPdxy2) + 3543: 208(ptr) AccessChain 3422(texel) 207 + 3544:3092(ResType) ImageSparseSampleDrefExplicitLod 3539 3540 3541 Grad 3542 3542 + 3545:6(float16_t) CompositeExtract 3544 1 + Store 3543 3545 + 3546: 47(int) CompositeExtract 3544 0 + 3547: 299 Load 301(sCubeArray) + 3548: 249(fvec4) Load 251(c4) + 3549: 167(fvec3) Load 1421(dPdxy3) + 3550:3056(ResType) ImageSparseSampleExplicitLod 3547 3548 Grad 3549 3549 + 3551: 7(f16vec4) CompositeExtract 3550 1 + Store 3422(texel) 3551 + 3552: 47(int) CompositeExtract 3550 0 + 3553: 299 Load 301(sCubeArray) + 3554: 7(f16vec4) Load 309(f16c4) + 3555:175(f16vec3) Load 1428(f16dPdxy3) + 3556:3056(ResType) ImageSparseSampleExplicitLod 3553 3554 Grad 3555 3555 + 3557: 7(f16vec4) CompositeExtract 3556 1 + Store 3422(texel) 3557 + 3558: 47(int) CompositeExtract 3556 0 + 3559: 7(f16vec4) Load 3422(texel) + ReturnValue 3559 + FunctionEnd +79(testSparseTextureGradOffset(): 7(f16vec4) Function None 8 + 80: Label + 3562(texel): 64(ptr) Variable Function + Store 3562(texel) 121 + 3563: 143 Load 145(s2D) + 3564: 53(fvec2) Load 148(c2) + 3565: 53(fvec2) Load 1407(dPdxy2) + 3566:3056(ResType) ImageSparseSampleExplicitLod 3563 3564 Grad ConstOffset 3565 3565 722 3567: 7(f16vec4) CompositeExtract 3566 1 - Store 3512(texel) 3567 + Store 3562(texel) 3567 3568: 47(int) CompositeExtract 3566 0 - 3569: 371 Load 373(s2DRectShadow) - 3570: 167(fvec3) Load 169(c3) - 3571: 53(fvec2) Load 1409(dPdxy2) - 3572: 53(fvec2) Load 1409(dPdxy2) - 3573: 208(ptr) AccessChain 3512(texel) 207 - 3574: 52(float) CompositeExtract 3570 2 - 3575:3182(ResType) ImageSparseSampleDrefExplicitLod 3569 3570 3574 Grad 3571 3572 - 3576:6(float16_t) CompositeExtract 3575 1 - Store 3573 3576 - 3577: 47(int) CompositeExtract 3575 0 - 3578: 371 Load 373(s2DRectShadow) - 3579:154(f16vec2) Load 156(f16c2) - 3580: 52(float) Load 215(compare) - 3581:154(f16vec2) Load 1417(f16dPdxy2) - 3582:154(f16vec2) Load 1417(f16dPdxy2) - 3583: 208(ptr) AccessChain 3512(texel) 207 - 3584:3182(ResType) ImageSparseSampleDrefExplicitLod 3578 3579 3580 Grad 3581 3582 - 3585:6(float16_t) CompositeExtract 3584 1 - Store 3583 3585 + 3569: 143 Load 145(s2D) + 3570:154(f16vec2) Load 156(f16c2) + 3571:154(f16vec2) Load 1414(f16dPdxy2) + 3572:3056(ResType) ImageSparseSampleExplicitLod 3569 3570 Grad ConstOffset 3571 3571 722 + 3573: 7(f16vec4) CompositeExtract 3572 1 + Store 3562(texel) 3573 + 3574: 47(int) CompositeExtract 3572 0 + 3575: 163 Load 165(s3D) + 3576: 167(fvec3) Load 169(c3) + 3577: 167(fvec3) Load 1421(dPdxy3) + 3578:3056(ResType) ImageSparseSampleExplicitLod 3575 3576 Grad ConstOffset 3577 3577 735 + 3579: 7(f16vec4) CompositeExtract 3578 1 + Store 3562(texel) 3579 + 3580: 47(int) CompositeExtract 3578 0 + 3581: 163 Load 165(s3D) + 3582:175(f16vec3) Load 177(f16c3) + 3583:175(f16vec3) Load 1428(f16dPdxy3) + 3584:3056(ResType) ImageSparseSampleExplicitLod 3581 3582 Grad ConstOffset 3583 3583 735 + 3585: 7(f16vec4) CompositeExtract 3584 1 + Store 3562(texel) 3585 3586: 47(int) CompositeExtract 3584 0 - 3587: 224 Load 226(s2DShadow) - 3588: 167(fvec3) Load 169(c3) - 3589: 53(fvec2) Load 1409(dPdxy2) - 3590: 53(fvec2) Load 1409(dPdxy2) - 3591: 208(ptr) AccessChain 3512(texel) 207 - 3592: 52(float) CompositeExtract 3588 2 - 3593:3182(ResType) ImageSparseSampleDrefExplicitLod 3587 3588 3592 Grad 3589 3590 - 3594:6(float16_t) CompositeExtract 3593 1 - Store 3591 3594 - 3595: 47(int) CompositeExtract 3593 0 - 3596: 224 Load 226(s2DShadow) - 3597:154(f16vec2) Load 156(f16c2) - 3598: 52(float) Load 215(compare) - 3599:154(f16vec2) Load 1417(f16dPdxy2) - 3600:154(f16vec2) Load 1417(f16dPdxy2) - 3601: 208(ptr) AccessChain 3512(texel) 207 - 3602:3182(ResType) ImageSparseSampleDrefExplicitLod 3596 3597 3598 Grad 3599 3600 - 3603:6(float16_t) CompositeExtract 3602 1 - Store 3601 3603 - 3604: 47(int) CompositeExtract 3602 0 - 3605: 245 Load 247(sCubeShadow) - 3606: 249(fvec4) Load 251(c4) - 3607: 167(fvec3) Load 1425(dPdxy3) - 3608: 167(fvec3) Load 1425(dPdxy3) - 3609: 208(ptr) AccessChain 3512(texel) 207 - 3610: 52(float) CompositeExtract 3606 3 - 3611:3182(ResType) ImageSparseSampleDrefExplicitLod 3605 3606 3610 Grad 3607 3608 - 3612:6(float16_t) CompositeExtract 3611 1 - Store 3609 3612 - 3613: 47(int) CompositeExtract 3611 0 - 3614: 245 Load 247(sCubeShadow) - 3615:175(f16vec3) Load 177(f16c3) - 3616: 52(float) Load 215(compare) - 3617:175(f16vec3) Load 1433(f16dPdxy3) - 3618:175(f16vec3) Load 1433(f16dPdxy3) - 3619: 208(ptr) AccessChain 3512(texel) 207 - 3620:3182(ResType) ImageSparseSampleDrefExplicitLod 3614 3615 3616 Grad 3617 3618 + 3587: 357 Load 359(s2DRect) + 3588: 53(fvec2) Load 148(c2) + 3589: 53(fvec2) Load 1407(dPdxy2) + 3590:3056(ResType) ImageSparseSampleExplicitLod 3587 3588 Grad ConstOffset 3589 3589 722 + 3591: 7(f16vec4) CompositeExtract 3590 1 + Store 3562(texel) 3591 + 3592: 47(int) CompositeExtract 3590 0 + 3593: 357 Load 359(s2DRect) + 3594:154(f16vec2) Load 156(f16c2) + 3595:154(f16vec2) Load 1414(f16dPdxy2) + 3596:3056(ResType) ImageSparseSampleExplicitLod 3593 3594 Grad ConstOffset 3595 3595 722 + 3597: 7(f16vec4) CompositeExtract 3596 1 + Store 3562(texel) 3597 + 3598: 47(int) CompositeExtract 3596 0 + 3599: 371 Load 373(s2DRectShadow) + 3600: 167(fvec3) Load 169(c3) + 3601: 53(fvec2) Load 1407(dPdxy2) + 3602: 208(ptr) AccessChain 3562(texel) 207 + 3603: 52(float) CompositeExtract 3600 2 + 3604:3092(ResType) ImageSparseSampleDrefExplicitLod 3599 3600 3603 Grad ConstOffset 3601 3601 722 + 3605:6(float16_t) CompositeExtract 3604 1 + Store 3602 3605 + 3606: 47(int) CompositeExtract 3604 0 + 3607: 371 Load 373(s2DRectShadow) + 3608:154(f16vec2) Load 156(f16c2) + 3609: 52(float) Load 215(compare) + 3610:154(f16vec2) Load 1414(f16dPdxy2) + 3611: 208(ptr) AccessChain 3562(texel) 207 + 3612:3092(ResType) ImageSparseSampleDrefExplicitLod 3607 3608 3609 Grad ConstOffset 3610 3610 722 + 3613:6(float16_t) CompositeExtract 3612 1 + Store 3611 3613 + 3614: 47(int) CompositeExtract 3612 0 + 3615: 224 Load 226(s2DShadow) + 3616: 167(fvec3) Load 169(c3) + 3617: 53(fvec2) Load 1407(dPdxy2) + 3618: 208(ptr) AccessChain 3562(texel) 207 + 3619: 52(float) CompositeExtract 3616 2 + 3620:3092(ResType) ImageSparseSampleDrefExplicitLod 3615 3616 3619 Grad ConstOffset 3617 3617 722 3621:6(float16_t) CompositeExtract 3620 1 - Store 3619 3621 + Store 3618 3621 3622: 47(int) CompositeExtract 3620 0 - 3623: 284 Load 286(s2DArray) - 3624: 167(fvec3) Load 169(c3) - 3625: 53(fvec2) Load 1409(dPdxy2) - 3626: 53(fvec2) Load 1409(dPdxy2) - 3627:3146(ResType) ImageSparseSampleExplicitLod 3623 3624 Grad 3625 3626 - 3628: 7(f16vec4) CompositeExtract 3627 1 - Store 3512(texel) 3628 - 3629: 47(int) CompositeExtract 3627 0 - 3630: 284 Load 286(s2DArray) - 3631:175(f16vec3) Load 177(f16c3) - 3632:154(f16vec2) Load 1417(f16dPdxy2) - 3633:154(f16vec2) Load 1417(f16dPdxy2) - 3634:3146(ResType) ImageSparseSampleExplicitLod 3630 3631 Grad 3632 3633 + 3623: 224 Load 226(s2DShadow) + 3624:154(f16vec2) Load 156(f16c2) + 3625: 52(float) Load 215(compare) + 3626:154(f16vec2) Load 1414(f16dPdxy2) + 3627: 208(ptr) AccessChain 3562(texel) 207 + 3628:3092(ResType) ImageSparseSampleDrefExplicitLod 3623 3624 3625 Grad ConstOffset 3626 3626 722 + 3629:6(float16_t) CompositeExtract 3628 1 + Store 3627 3629 + 3630: 47(int) CompositeExtract 3628 0 + 3631: 284 Load 286(s2DArray) + 3632: 167(fvec3) Load 169(c3) + 3633: 53(fvec2) Load 1407(dPdxy2) + 3634:3056(ResType) ImageSparseSampleExplicitLod 3631 3632 Grad ConstOffset 3633 3633 722 3635: 7(f16vec4) CompositeExtract 3634 1 - Store 3512(texel) 3635 + Store 3562(texel) 3635 3636: 47(int) CompositeExtract 3634 0 - 3637: 337 Load 339(s2DArrayShadow) - 3638: 249(fvec4) Load 251(c4) - 3639: 53(fvec2) Load 1409(dPdxy2) - 3640: 53(fvec2) Load 1409(dPdxy2) - 3641: 208(ptr) AccessChain 3512(texel) 207 - 3642: 52(float) CompositeExtract 3638 3 - 3643:3182(ResType) ImageSparseSampleDrefExplicitLod 3637 3638 3642 Grad 3639 3640 - 3644:6(float16_t) CompositeExtract 3643 1 - Store 3641 3644 - 3645: 47(int) CompositeExtract 3643 0 - 3646: 337 Load 339(s2DArrayShadow) - 3647:175(f16vec3) Load 177(f16c3) - 3648: 52(float) Load 215(compare) - 3649:154(f16vec2) Load 1417(f16dPdxy2) - 3650:154(f16vec2) Load 1417(f16dPdxy2) - 3651: 208(ptr) AccessChain 3512(texel) 207 - 3652:3182(ResType) ImageSparseSampleDrefExplicitLod 3646 3647 3648 Grad 3649 3650 - 3653:6(float16_t) CompositeExtract 3652 1 - Store 3651 3653 - 3654: 47(int) CompositeExtract 3652 0 - 3655: 299 Load 301(sCubeArray) - 3656: 249(fvec4) Load 251(c4) - 3657: 167(fvec3) Load 1425(dPdxy3) - 3658: 167(fvec3) Load 1425(dPdxy3) - 3659:3146(ResType) ImageSparseSampleExplicitLod 3655 3656 Grad 3657 3658 - 3660: 7(f16vec4) CompositeExtract 3659 1 - Store 3512(texel) 3660 - 3661: 47(int) CompositeExtract 3659 0 - 3662: 299 Load 301(sCubeArray) - 3663: 7(f16vec4) Load 309(f16c4) - 3664:175(f16vec3) Load 1433(f16dPdxy3) - 3665:175(f16vec3) Load 1433(f16dPdxy3) - 3666:3146(ResType) ImageSparseSampleExplicitLod 3662 3663 Grad 3664 3665 - 3667: 7(f16vec4) CompositeExtract 3666 1 - Store 3512(texel) 3667 - 3668: 47(int) CompositeExtract 3666 0 - 3669: 7(f16vec4) Load 3512(texel) - ReturnValue 3669 - FunctionEnd -79(testSparseTextureGradOffset(): 7(f16vec4) Function None 8 - 80: Label - 3672(texel): 64(ptr) Variable Function - Store 3672(texel) 121 - 3673: 143 Load 145(s2D) - 3674: 53(fvec2) Load 148(c2) - 3675: 53(fvec2) Load 1409(dPdxy2) - 3676: 53(fvec2) Load 1409(dPdxy2) - 3677:3146(ResType) ImageSparseSampleExplicitLod 3673 3674 Grad ConstOffset 3675 3676 722 - 3678: 7(f16vec4) CompositeExtract 3677 1 - Store 3672(texel) 3678 - 3679: 47(int) CompositeExtract 3677 0 - 3680: 143 Load 145(s2D) - 3681:154(f16vec2) Load 156(f16c2) - 3682:154(f16vec2) Load 1417(f16dPdxy2) - 3683:154(f16vec2) Load 1417(f16dPdxy2) - 3684:3146(ResType) ImageSparseSampleExplicitLod 3680 3681 Grad ConstOffset 3682 3683 722 - 3685: 7(f16vec4) CompositeExtract 3684 1 - Store 3672(texel) 3685 - 3686: 47(int) CompositeExtract 3684 0 - 3687: 163 Load 165(s3D) - 3688: 167(fvec3) Load 169(c3) - 3689: 167(fvec3) Load 1425(dPdxy3) - 3690: 167(fvec3) Load 1425(dPdxy3) - 3691:3146(ResType) ImageSparseSampleExplicitLod 3687 3688 Grad ConstOffset 3689 3690 735 - 3692: 7(f16vec4) CompositeExtract 3691 1 - Store 3672(texel) 3692 - 3693: 47(int) CompositeExtract 3691 0 - 3694: 163 Load 165(s3D) - 3695:175(f16vec3) Load 177(f16c3) - 3696:175(f16vec3) Load 1433(f16dPdxy3) - 3697:175(f16vec3) Load 1433(f16dPdxy3) - 3698:3146(ResType) ImageSparseSampleExplicitLod 3694 3695 Grad ConstOffset 3696 3697 735 - 3699: 7(f16vec4) CompositeExtract 3698 1 - Store 3672(texel) 3699 - 3700: 47(int) CompositeExtract 3698 0 - 3701: 357 Load 359(s2DRect) - 3702: 53(fvec2) Load 148(c2) - 3703: 53(fvec2) Load 1409(dPdxy2) - 3704: 53(fvec2) Load 1409(dPdxy2) - 3705:3146(ResType) ImageSparseSampleExplicitLod 3701 3702 Grad ConstOffset 3703 3704 722 - 3706: 7(f16vec4) CompositeExtract 3705 1 - Store 3672(texel) 3706 - 3707: 47(int) CompositeExtract 3705 0 - 3708: 357 Load 359(s2DRect) - 3709:154(f16vec2) Load 156(f16c2) - 3710:154(f16vec2) Load 1417(f16dPdxy2) - 3711:154(f16vec2) Load 1417(f16dPdxy2) - 3712:3146(ResType) ImageSparseSampleExplicitLod 3708 3709 Grad ConstOffset 3710 3711 722 - 3713: 7(f16vec4) CompositeExtract 3712 1 - Store 3672(texel) 3713 - 3714: 47(int) CompositeExtract 3712 0 - 3715: 371 Load 373(s2DRectShadow) - 3716: 167(fvec3) Load 169(c3) - 3717: 53(fvec2) Load 1409(dPdxy2) - 3718: 53(fvec2) Load 1409(dPdxy2) - 3719: 208(ptr) AccessChain 3672(texel) 207 - 3720: 52(float) CompositeExtract 3716 2 - 3721:3182(ResType) ImageSparseSampleDrefExplicitLod 3715 3716 3720 Grad ConstOffset 3717 3718 722 - 3722:6(float16_t) CompositeExtract 3721 1 - Store 3719 3722 - 3723: 47(int) CompositeExtract 3721 0 - 3724: 371 Load 373(s2DRectShadow) - 3725:154(f16vec2) Load 156(f16c2) - 3726: 52(float) Load 215(compare) - 3727:154(f16vec2) Load 1417(f16dPdxy2) - 3728:154(f16vec2) Load 1417(f16dPdxy2) - 3729: 208(ptr) AccessChain 3672(texel) 207 - 3730:3182(ResType) ImageSparseSampleDrefExplicitLod 3724 3725 3726 Grad ConstOffset 3727 3728 722 - 3731:6(float16_t) CompositeExtract 3730 1 - Store 3729 3731 - 3732: 47(int) CompositeExtract 3730 0 - 3733: 224 Load 226(s2DShadow) - 3734: 167(fvec3) Load 169(c3) - 3735: 53(fvec2) Load 1409(dPdxy2) - 3736: 53(fvec2) Load 1409(dPdxy2) - 3737: 208(ptr) AccessChain 3672(texel) 207 - 3738: 52(float) CompositeExtract 3734 2 - 3739:3182(ResType) ImageSparseSampleDrefExplicitLod 3733 3734 3738 Grad ConstOffset 3735 3736 722 - 3740:6(float16_t) CompositeExtract 3739 1 - Store 3737 3740 - 3741: 47(int) CompositeExtract 3739 0 - 3742: 224 Load 226(s2DShadow) - 3743:154(f16vec2) Load 156(f16c2) - 3744: 52(float) Load 215(compare) - 3745:154(f16vec2) Load 1417(f16dPdxy2) - 3746:154(f16vec2) Load 1417(f16dPdxy2) - 3747: 208(ptr) AccessChain 3672(texel) 207 - 3748:3182(ResType) ImageSparseSampleDrefExplicitLod 3742 3743 3744 Grad ConstOffset 3745 3746 722 - 3749:6(float16_t) CompositeExtract 3748 1 - Store 3747 3749 - 3750: 47(int) CompositeExtract 3748 0 - 3751: 284 Load 286(s2DArray) - 3752: 167(fvec3) Load 169(c3) - 3753: 53(fvec2) Load 1409(dPdxy2) - 3754: 53(fvec2) Load 1409(dPdxy2) - 3755:3146(ResType) ImageSparseSampleExplicitLod 3751 3752 Grad ConstOffset 3753 3754 722 - 3756: 7(f16vec4) CompositeExtract 3755 1 - Store 3672(texel) 3756 - 3757: 47(int) CompositeExtract 3755 0 - 3758: 284 Load 286(s2DArray) - 3759:175(f16vec3) Load 177(f16c3) - 3760:154(f16vec2) Load 1417(f16dPdxy2) - 3761:154(f16vec2) Load 1417(f16dPdxy2) - 3762:3146(ResType) ImageSparseSampleExplicitLod 3758 3759 Grad ConstOffset 3760 3761 722 - 3763: 7(f16vec4) CompositeExtract 3762 1 - Store 3672(texel) 3763 - 3764: 47(int) CompositeExtract 3762 0 - 3765: 337 Load 339(s2DArrayShadow) - 3766: 249(fvec4) Load 251(c4) - 3767: 53(fvec2) Load 1409(dPdxy2) - 3768: 53(fvec2) Load 1409(dPdxy2) - 3769: 208(ptr) AccessChain 3672(texel) 207 - 3770: 52(float) CompositeExtract 3766 3 - 3771:3182(ResType) ImageSparseSampleDrefExplicitLod 3765 3766 3770 Grad ConstOffset 3767 3768 722 - 3772:6(float16_t) CompositeExtract 3771 1 - Store 3769 3772 - 3773: 47(int) CompositeExtract 3771 0 - 3774: 337 Load 339(s2DArrayShadow) - 3775:175(f16vec3) Load 177(f16c3) - 3776: 52(float) Load 215(compare) - 3777:154(f16vec2) Load 1417(f16dPdxy2) - 3778:154(f16vec2) Load 1417(f16dPdxy2) - 3779: 208(ptr) AccessChain 3672(texel) 207 - 3780:3182(ResType) ImageSparseSampleDrefExplicitLod 3774 3775 3776 Grad ConstOffset 3777 3778 722 - 3781:6(float16_t) CompositeExtract 3780 1 - Store 3779 3781 - 3782: 47(int) CompositeExtract 3780 0 - 3783: 7(f16vec4) Load 3672(texel) - ReturnValue 3783 + 3637: 284 Load 286(s2DArray) + 3638:175(f16vec3) Load 177(f16c3) + 3639:154(f16vec2) Load 1414(f16dPdxy2) + 3640:3056(ResType) ImageSparseSampleExplicitLod 3637 3638 Grad ConstOffset 3639 3639 722 + 3641: 7(f16vec4) CompositeExtract 3640 1 + Store 3562(texel) 3641 + 3642: 47(int) CompositeExtract 3640 0 + 3643: 337 Load 339(s2DArrayShadow) + 3644: 249(fvec4) Load 251(c4) + 3645: 53(fvec2) Load 1407(dPdxy2) + 3646: 208(ptr) AccessChain 3562(texel) 207 + 3647: 52(float) CompositeExtract 3644 3 + 3648:3092(ResType) ImageSparseSampleDrefExplicitLod 3643 3644 3647 Grad ConstOffset 3645 3645 722 + 3649:6(float16_t) CompositeExtract 3648 1 + Store 3646 3649 + 3650: 47(int) CompositeExtract 3648 0 + 3651: 337 Load 339(s2DArrayShadow) + 3652:175(f16vec3) Load 177(f16c3) + 3653: 52(float) Load 215(compare) + 3654:154(f16vec2) Load 1414(f16dPdxy2) + 3655: 208(ptr) AccessChain 3562(texel) 207 + 3656:3092(ResType) ImageSparseSampleDrefExplicitLod 3651 3652 3653 Grad ConstOffset 3654 3654 722 + 3657:6(float16_t) CompositeExtract 3656 1 + Store 3655 3657 + 3658: 47(int) CompositeExtract 3656 0 + 3659: 7(f16vec4) Load 3562(texel) + ReturnValue 3659 FunctionEnd 81(testSparseTexelFetch(): 7(f16vec4) Function None 8 82: Label - 3786(texel): 64(ptr) Variable Function - Store 3786(texel) 121 - 3787: 143 Load 145(s2D) - 3788: 53(fvec2) Load 148(c2) - 3789: 721(ivec2) ConvertFToS 3788 - 3790: 52(float) Load 565(lod) - 3791: 47(int) ConvertFToS 3790 - 3792: 142 Image 3787 - 3793:3146(ResType) ImageSparseFetch 3792 3789 Lod 3791 - 3794: 7(f16vec4) CompositeExtract 3793 1 - Store 3786(texel) 3794 - 3795: 47(int) CompositeExtract 3793 0 - 3796: 163 Load 165(s3D) - 3797: 167(fvec3) Load 169(c3) - 3798: 734(ivec3) ConvertFToS 3797 - 3799: 52(float) Load 565(lod) - 3800: 47(int) ConvertFToS 3799 - 3801: 162 Image 3796 - 3802:3146(ResType) ImageSparseFetch 3801 3798 Lod 3800 - 3803: 7(f16vec4) CompositeExtract 3802 1 - Store 3786(texel) 3803 - 3804: 47(int) CompositeExtract 3802 0 - 3805: 357 Load 359(s2DRect) - 3806: 53(fvec2) Load 148(c2) - 3807: 721(ivec2) ConvertFToS 3806 - 3808: 356 Image 3805 - 3809:3146(ResType) ImageSparseFetch 3808 3807 - 3810: 7(f16vec4) CompositeExtract 3809 1 - Store 3786(texel) 3810 - 3811: 47(int) CompositeExtract 3809 0 - 3812: 284 Load 286(s2DArray) - 3813: 167(fvec3) Load 169(c3) - 3814: 734(ivec3) ConvertFToS 3813 - 3815: 52(float) Load 565(lod) - 3816: 47(int) ConvertFToS 3815 - 3817: 283 Image 3812 - 3818:3146(ResType) ImageSparseFetch 3817 3814 Lod 3816 - 3819: 7(f16vec4) CompositeExtract 3818 1 - Store 3786(texel) 3819 - 3820: 47(int) CompositeExtract 3818 0 - 3821: 1309 Load 1311(s2DMS) - 3822: 53(fvec2) Load 148(c2) - 3823: 721(ivec2) ConvertFToS 3822 - 3824: 1308 Image 3821 - 3825:3146(ResType) ImageSparseFetch 3824 3823 Sample 709 - 3826: 7(f16vec4) CompositeExtract 3825 1 - Store 3786(texel) 3826 - 3827: 47(int) CompositeExtract 3825 0 - 3828: 1320 Load 1322(s2DMSArray) - 3829: 167(fvec3) Load 169(c3) - 3830: 734(ivec3) ConvertFToS 3829 - 3831: 1319 Image 3828 - 3832:3146(ResType) ImageSparseFetch 3831 3830 Sample 1326 - 3833: 7(f16vec4) CompositeExtract 3832 1 - Store 3786(texel) 3833 - 3834: 47(int) CompositeExtract 3832 0 - 3835: 7(f16vec4) Load 3786(texel) - ReturnValue 3835 + 3662(texel): 64(ptr) Variable Function + Store 3662(texel) 121 + 3663: 143 Load 145(s2D) + 3664: 53(fvec2) Load 148(c2) + 3665: 721(ivec2) ConvertFToS 3664 + 3666: 52(float) Load 565(lod) + 3667: 47(int) ConvertFToS 3666 + 3668: 142 Image 3663 + 3669:3056(ResType) ImageSparseFetch 3668 3665 Lod 3667 + 3670: 7(f16vec4) CompositeExtract 3669 1 + Store 3662(texel) 3670 + 3671: 47(int) CompositeExtract 3669 0 + 3672: 163 Load 165(s3D) + 3673: 167(fvec3) Load 169(c3) + 3674: 734(ivec3) ConvertFToS 3673 + 3675: 52(float) Load 565(lod) + 3676: 47(int) ConvertFToS 3675 + 3677: 162 Image 3672 + 3678:3056(ResType) ImageSparseFetch 3677 3674 Lod 3676 + 3679: 7(f16vec4) CompositeExtract 3678 1 + Store 3662(texel) 3679 + 3680: 47(int) CompositeExtract 3678 0 + 3681: 357 Load 359(s2DRect) + 3682: 53(fvec2) Load 148(c2) + 3683: 721(ivec2) ConvertFToS 3682 + 3684: 356 Image 3681 + 3685:3056(ResType) ImageSparseFetch 3684 3683 + 3686: 7(f16vec4) CompositeExtract 3685 1 + Store 3662(texel) 3686 + 3687: 47(int) CompositeExtract 3685 0 + 3688: 284 Load 286(s2DArray) + 3689: 167(fvec3) Load 169(c3) + 3690: 734(ivec3) ConvertFToS 3689 + 3691: 52(float) Load 565(lod) + 3692: 47(int) ConvertFToS 3691 + 3693: 283 Image 3688 + 3694:3056(ResType) ImageSparseFetch 3693 3690 Lod 3692 + 3695: 7(f16vec4) CompositeExtract 3694 1 + Store 3662(texel) 3695 + 3696: 47(int) CompositeExtract 3694 0 + 3697: 1309 Load 1311(s2DMS) + 3698: 53(fvec2) Load 148(c2) + 3699: 721(ivec2) ConvertFToS 3698 + 3700: 1308 Image 3697 + 3701:3056(ResType) ImageSparseFetch 3700 3699 Sample 709 + 3702: 7(f16vec4) CompositeExtract 3701 1 + Store 3662(texel) 3702 + 3703: 47(int) CompositeExtract 3701 0 + 3704: 1320 Load 1322(s2DMSArray) + 3705: 167(fvec3) Load 169(c3) + 3706: 734(ivec3) ConvertFToS 3705 + 3707: 1319 Image 3704 + 3708:3056(ResType) ImageSparseFetch 3707 3706 Sample 1326 + 3709: 7(f16vec4) CompositeExtract 3708 1 + Store 3662(texel) 3709 + 3710: 47(int) CompositeExtract 3708 0 + 3711: 7(f16vec4) Load 3662(texel) + ReturnValue 3711 FunctionEnd 83(testSparseTexelFetchOffset(): 7(f16vec4) Function None 8 84: Label - 3838(texel): 64(ptr) Variable Function - Store 3838(texel) 121 - 3839: 143 Load 145(s2D) - 3840: 53(fvec2) Load 148(c2) - 3841: 721(ivec2) ConvertFToS 3840 - 3842: 52(float) Load 565(lod) - 3843: 47(int) ConvertFToS 3842 - 3844: 142 Image 3839 - 3845:3146(ResType) ImageSparseFetch 3844 3841 Lod ConstOffset 3843 722 - 3846: 7(f16vec4) CompositeExtract 3845 1 - Store 3838(texel) 3846 - 3847: 47(int) CompositeExtract 3845 0 - 3848: 163 Load 165(s3D) - 3849: 167(fvec3) Load 169(c3) - 3850: 734(ivec3) ConvertFToS 3849 - 3851: 52(float) Load 565(lod) - 3852: 47(int) ConvertFToS 3851 - 3853: 162 Image 3848 - 3854:3146(ResType) ImageSparseFetch 3853 3850 Lod ConstOffset 3852 735 - 3855: 7(f16vec4) CompositeExtract 3854 1 - Store 3838(texel) 3855 - 3856: 47(int) CompositeExtract 3854 0 - 3857: 357 Load 359(s2DRect) - 3858: 53(fvec2) Load 148(c2) - 3859: 721(ivec2) ConvertFToS 3858 - 3860: 356 Image 3857 - 3861:3146(ResType) ImageSparseFetch 3860 3859 ConstOffset 722 - 3862: 7(f16vec4) CompositeExtract 3861 1 - Store 3838(texel) 3862 - 3863: 47(int) CompositeExtract 3861 0 - 3864: 284 Load 286(s2DArray) - 3865: 167(fvec3) Load 169(c3) - 3866: 734(ivec3) ConvertFToS 3865 - 3867: 52(float) Load 565(lod) - 3868: 47(int) ConvertFToS 3867 - 3869: 283 Image 3864 - 3870:3146(ResType) ImageSparseFetch 3869 3866 Lod ConstOffset 3868 722 - 3871: 7(f16vec4) CompositeExtract 3870 1 - Store 3838(texel) 3871 - 3872: 47(int) CompositeExtract 3870 0 - 3873: 7(f16vec4) Load 3838(texel) - ReturnValue 3873 + 3714(texel): 64(ptr) Variable Function + Store 3714(texel) 121 + 3715: 143 Load 145(s2D) + 3716: 53(fvec2) Load 148(c2) + 3717: 721(ivec2) ConvertFToS 3716 + 3718: 52(float) Load 565(lod) + 3719: 47(int) ConvertFToS 3718 + 3720: 142 Image 3715 + 3721:3056(ResType) ImageSparseFetch 3720 3717 Lod ConstOffset 3719 722 + 3722: 7(f16vec4) CompositeExtract 3721 1 + Store 3714(texel) 3722 + 3723: 47(int) CompositeExtract 3721 0 + 3724: 163 Load 165(s3D) + 3725: 167(fvec3) Load 169(c3) + 3726: 734(ivec3) ConvertFToS 3725 + 3727: 52(float) Load 565(lod) + 3728: 47(int) ConvertFToS 3727 + 3729: 162 Image 3724 + 3730:3056(ResType) ImageSparseFetch 3729 3726 Lod ConstOffset 3728 735 + 3731: 7(f16vec4) CompositeExtract 3730 1 + Store 3714(texel) 3731 + 3732: 47(int) CompositeExtract 3730 0 + 3733: 357 Load 359(s2DRect) + 3734: 53(fvec2) Load 148(c2) + 3735: 721(ivec2) ConvertFToS 3734 + 3736: 356 Image 3733 + 3737:3056(ResType) ImageSparseFetch 3736 3735 ConstOffset 722 + 3738: 7(f16vec4) CompositeExtract 3737 1 + Store 3714(texel) 3738 + 3739: 47(int) CompositeExtract 3737 0 + 3740: 284 Load 286(s2DArray) + 3741: 167(fvec3) Load 169(c3) + 3742: 734(ivec3) ConvertFToS 3741 + 3743: 52(float) Load 565(lod) + 3744: 47(int) ConvertFToS 3743 + 3745: 283 Image 3740 + 3746:3056(ResType) ImageSparseFetch 3745 3742 Lod ConstOffset 3744 722 + 3747: 7(f16vec4) CompositeExtract 3746 1 + Store 3714(texel) 3747 + 3748: 47(int) CompositeExtract 3746 0 + 3749: 7(f16vec4) Load 3714(texel) + ReturnValue 3749 FunctionEnd 85(testSparseTextureGather(): 7(f16vec4) Function None 8 86: Label - 3876(texel): 64(ptr) Variable Function - Store 3876(texel) 121 - 3877: 143 Load 145(s2D) - 3878: 53(fvec2) Load 148(c2) - 3879:3146(ResType) ImageSparseGather 3877 3878 2187 + 3752(texel): 64(ptr) Variable Function + Store 3752(texel) 121 + 3753: 143 Load 145(s2D) + 3754: 53(fvec2) Load 148(c2) + 3755:3056(ResType) ImageSparseGather 3753 3754 2097 + 3756: 7(f16vec4) CompositeExtract 3755 1 + Store 3752(texel) 3756 + 3757: 47(int) CompositeExtract 3755 0 + 3758: 143 Load 145(s2D) + 3759:154(f16vec2) Load 156(f16c2) + 3760:6(float16_t) Load 137(f16bias) + 3761:3056(ResType) ImageSparseGather 3758 3759 2097 Bias 3760 + 3762: 7(f16vec4) CompositeExtract 3761 1 + Store 3752(texel) 3762 + 3763: 47(int) CompositeExtract 3761 0 + 3764: 284 Load 286(s2DArray) + 3765: 167(fvec3) Load 169(c3) + 3766:3056(ResType) ImageSparseGather 3764 3765 2097 + 3767: 7(f16vec4) CompositeExtract 3766 1 + Store 3752(texel) 3767 + 3768: 47(int) CompositeExtract 3766 0 + 3769: 284 Load 286(s2DArray) + 3770:175(f16vec3) Load 177(f16c3) + 3771:6(float16_t) Load 137(f16bias) + 3772:3056(ResType) ImageSparseGather 3769 3770 2097 Bias 3771 + 3773: 7(f16vec4) CompositeExtract 3772 1 + Store 3752(texel) 3773 + 3774: 47(int) CompositeExtract 3772 0 + 3775: 184 Load 186(sCube) + 3776: 167(fvec3) Load 169(c3) + 3777:3056(ResType) ImageSparseGather 3775 3776 2097 + 3778: 7(f16vec4) CompositeExtract 3777 1 + Store 3752(texel) 3778 + 3779: 47(int) CompositeExtract 3777 0 + 3780: 184 Load 186(sCube) + 3781:175(f16vec3) Load 177(f16c3) + 3782:6(float16_t) Load 137(f16bias) + 3783:3056(ResType) ImageSparseGather 3780 3781 2097 Bias 3782 + 3784: 7(f16vec4) CompositeExtract 3783 1 + Store 3752(texel) 3784 + 3785: 47(int) CompositeExtract 3783 0 + 3786: 299 Load 301(sCubeArray) + 3787: 249(fvec4) Load 251(c4) + 3788:3056(ResType) ImageSparseGather 3786 3787 2097 + 3789: 7(f16vec4) CompositeExtract 3788 1 + Store 3752(texel) 3789 + 3790: 47(int) CompositeExtract 3788 0 + 3791: 299 Load 301(sCubeArray) + 3792: 7(f16vec4) Load 309(f16c4) + 3793:6(float16_t) Load 137(f16bias) + 3794:3056(ResType) ImageSparseGather 3791 3792 2097 Bias 3793 + 3795: 7(f16vec4) CompositeExtract 3794 1 + Store 3752(texel) 3795 + 3796: 47(int) CompositeExtract 3794 0 + 3797: 357 Load 359(s2DRect) + 3798: 53(fvec2) Load 148(c2) + 3799:3056(ResType) ImageSparseGather 3797 3798 2097 + 3800: 7(f16vec4) CompositeExtract 3799 1 + Store 3752(texel) 3800 + 3801: 47(int) CompositeExtract 3799 0 + 3802: 357 Load 359(s2DRect) + 3803:154(f16vec2) Load 156(f16c2) + 3804:3056(ResType) ImageSparseGather 3802 3803 2097 + 3805: 7(f16vec4) CompositeExtract 3804 1 + Store 3752(texel) 3805 + 3806: 47(int) CompositeExtract 3804 0 + 3807: 224 Load 226(s2DShadow) + 3808: 53(fvec2) Load 148(c2) + 3809: 52(float) Load 215(compare) + 3810:3056(ResType) ImageSparseDrefGather 3807 3808 3809 + 3811: 7(f16vec4) CompositeExtract 3810 1 + Store 3752(texel) 3811 + 3812: 47(int) CompositeExtract 3810 0 + 3813: 224 Load 226(s2DShadow) + 3814:154(f16vec2) Load 156(f16c2) + 3815: 52(float) Load 215(compare) + 3816:3056(ResType) ImageSparseDrefGather 3813 3814 3815 + 3817: 7(f16vec4) CompositeExtract 3816 1 + Store 3752(texel) 3817 + 3818: 47(int) CompositeExtract 3816 0 + 3819: 337 Load 339(s2DArrayShadow) + 3820: 167(fvec3) Load 169(c3) + 3821: 52(float) Load 215(compare) + 3822:3056(ResType) ImageSparseDrefGather 3819 3820 3821 + 3823: 7(f16vec4) CompositeExtract 3822 1 + Store 3752(texel) 3823 + 3824: 47(int) CompositeExtract 3822 0 + 3825: 337 Load 339(s2DArrayShadow) + 3826:175(f16vec3) Load 177(f16c3) + 3827: 52(float) Load 215(compare) + 3828:3056(ResType) ImageSparseDrefGather 3825 3826 3827 + 3829: 7(f16vec4) CompositeExtract 3828 1 + Store 3752(texel) 3829 + 3830: 47(int) CompositeExtract 3828 0 + 3831: 245 Load 247(sCubeShadow) + 3832: 167(fvec3) Load 169(c3) + 3833: 52(float) Load 215(compare) + 3834:3056(ResType) ImageSparseDrefGather 3831 3832 3833 + 3835: 7(f16vec4) CompositeExtract 3834 1 + Store 3752(texel) 3835 + 3836: 47(int) CompositeExtract 3834 0 + 3837: 245 Load 247(sCubeShadow) + 3838:175(f16vec3) Load 177(f16c3) + 3839: 52(float) Load 215(compare) + 3840:3056(ResType) ImageSparseDrefGather 3837 3838 3839 + 3841: 7(f16vec4) CompositeExtract 3840 1 + Store 3752(texel) 3841 + 3842: 47(int) CompositeExtract 3840 0 + 3843: 391 Load 393(sCubeArrayShadow) + 3844: 249(fvec4) Load 251(c4) + 3845: 52(float) Load 215(compare) + 3846:3056(ResType) ImageSparseDrefGather 3843 3844 3845 + 3847: 7(f16vec4) CompositeExtract 3846 1 + Store 3752(texel) 3847 + 3848: 47(int) CompositeExtract 3846 0 + 3849: 391 Load 393(sCubeArrayShadow) + 3850: 7(f16vec4) Load 309(f16c4) + 3851: 52(float) Load 215(compare) + 3852:3056(ResType) ImageSparseDrefGather 3849 3850 3851 + 3853: 7(f16vec4) CompositeExtract 3852 1 + Store 3752(texel) 3853 + 3854: 47(int) CompositeExtract 3852 0 + 3855: 371 Load 373(s2DRectShadow) + 3856: 53(fvec2) Load 148(c2) + 3857: 52(float) Load 215(compare) + 3858:3056(ResType) ImageSparseDrefGather 3855 3856 3857 + 3859: 7(f16vec4) CompositeExtract 3858 1 + Store 3752(texel) 3859 + 3860: 47(int) CompositeExtract 3858 0 + 3861: 371 Load 373(s2DRectShadow) + 3862:154(f16vec2) Load 156(f16c2) + 3863: 52(float) Load 215(compare) + 3864:3056(ResType) ImageSparseDrefGather 3861 3862 3863 + 3865: 7(f16vec4) CompositeExtract 3864 1 + Store 3752(texel) 3865 + 3866: 47(int) CompositeExtract 3864 0 + 3867: 7(f16vec4) Load 3752(texel) + ReturnValue 3867 + FunctionEnd +87(testSparseTextureGatherOffset(): 7(f16vec4) Function None 8 + 88: Label + 3870(texel): 64(ptr) Variable Function + Store 3870(texel) 121 + 3871: 143 Load 145(s2D) + 3872: 53(fvec2) Load 148(c2) + 3873:3056(ResType) ImageSparseGather 3871 3872 2097 ConstOffset 722 + 3874: 7(f16vec4) CompositeExtract 3873 1 + Store 3870(texel) 3874 + 3875: 47(int) CompositeExtract 3873 0 + 3876: 143 Load 145(s2D) + 3877:154(f16vec2) Load 156(f16c2) + 3878:6(float16_t) Load 137(f16bias) + 3879:3056(ResType) ImageSparseGather 3876 3877 2097 Bias ConstOffset 3878 722 3880: 7(f16vec4) CompositeExtract 3879 1 - Store 3876(texel) 3880 + Store 3870(texel) 3880 3881: 47(int) CompositeExtract 3879 0 - 3882: 143 Load 145(s2D) - 3883:154(f16vec2) Load 156(f16c2) - 3884:6(float16_t) Load 137(f16bias) - 3885:3146(ResType) ImageSparseGather 3882 3883 2187 Bias 3884 - 3886: 7(f16vec4) CompositeExtract 3885 1 - Store 3876(texel) 3886 - 3887: 47(int) CompositeExtract 3885 0 - 3888: 284 Load 286(s2DArray) - 3889: 167(fvec3) Load 169(c3) - 3890:3146(ResType) ImageSparseGather 3888 3889 2187 + 3882: 284 Load 286(s2DArray) + 3883: 167(fvec3) Load 169(c3) + 3884:3056(ResType) ImageSparseGather 3882 3883 2097 ConstOffset 722 + 3885: 7(f16vec4) CompositeExtract 3884 1 + Store 3870(texel) 3885 + 3886: 47(int) CompositeExtract 3884 0 + 3887: 284 Load 286(s2DArray) + 3888:175(f16vec3) Load 177(f16c3) + 3889:6(float16_t) Load 137(f16bias) + 3890:3056(ResType) ImageSparseGather 3887 3888 2097 Bias ConstOffset 3889 722 3891: 7(f16vec4) CompositeExtract 3890 1 - Store 3876(texel) 3891 + Store 3870(texel) 3891 3892: 47(int) CompositeExtract 3890 0 - 3893: 284 Load 286(s2DArray) - 3894:175(f16vec3) Load 177(f16c3) - 3895:6(float16_t) Load 137(f16bias) - 3896:3146(ResType) ImageSparseGather 3893 3894 2187 Bias 3895 - 3897: 7(f16vec4) CompositeExtract 3896 1 - Store 3876(texel) 3897 - 3898: 47(int) CompositeExtract 3896 0 - 3899: 184 Load 186(sCube) - 3900: 167(fvec3) Load 169(c3) - 3901:3146(ResType) ImageSparseGather 3899 3900 2187 - 3902: 7(f16vec4) CompositeExtract 3901 1 - Store 3876(texel) 3902 - 3903: 47(int) CompositeExtract 3901 0 - 3904: 184 Load 186(sCube) - 3905:175(f16vec3) Load 177(f16c3) - 3906:6(float16_t) Load 137(f16bias) - 3907:3146(ResType) ImageSparseGather 3904 3905 2187 Bias 3906 - 3908: 7(f16vec4) CompositeExtract 3907 1 - Store 3876(texel) 3908 - 3909: 47(int) CompositeExtract 3907 0 - 3910: 299 Load 301(sCubeArray) - 3911: 249(fvec4) Load 251(c4) - 3912:3146(ResType) ImageSparseGather 3910 3911 2187 + 3893: 357 Load 359(s2DRect) + 3894: 53(fvec2) Load 148(c2) + 3895:3056(ResType) ImageSparseGather 3893 3894 2097 ConstOffset 722 + 3896: 7(f16vec4) CompositeExtract 3895 1 + Store 3870(texel) 3896 + 3897: 47(int) CompositeExtract 3895 0 + 3898: 357 Load 359(s2DRect) + 3899:154(f16vec2) Load 156(f16c2) + 3900:3056(ResType) ImageSparseGather 3898 3899 2097 ConstOffset 722 + 3901: 7(f16vec4) CompositeExtract 3900 1 + Store 3870(texel) 3901 + 3902: 47(int) CompositeExtract 3900 0 + 3903: 224 Load 226(s2DShadow) + 3904: 53(fvec2) Load 148(c2) + 3905: 52(float) Load 215(compare) + 3906:3056(ResType) ImageSparseDrefGather 3903 3904 3905 ConstOffset 722 + 3907: 7(f16vec4) CompositeExtract 3906 1 + Store 3870(texel) 3907 + 3908: 47(int) CompositeExtract 3906 0 + 3909: 224 Load 226(s2DShadow) + 3910:154(f16vec2) Load 156(f16c2) + 3911: 52(float) Load 215(compare) + 3912:3056(ResType) ImageSparseDrefGather 3909 3910 3911 ConstOffset 722 3913: 7(f16vec4) CompositeExtract 3912 1 - Store 3876(texel) 3913 + Store 3870(texel) 3913 3914: 47(int) CompositeExtract 3912 0 - 3915: 299 Load 301(sCubeArray) - 3916: 7(f16vec4) Load 309(f16c4) - 3917:6(float16_t) Load 137(f16bias) - 3918:3146(ResType) ImageSparseGather 3915 3916 2187 Bias 3917 + 3915: 337 Load 339(s2DArrayShadow) + 3916: 167(fvec3) Load 169(c3) + 3917: 52(float) Load 215(compare) + 3918:3056(ResType) ImageSparseDrefGather 3915 3916 3917 ConstOffset 722 3919: 7(f16vec4) CompositeExtract 3918 1 - Store 3876(texel) 3919 + Store 3870(texel) 3919 3920: 47(int) CompositeExtract 3918 0 - 3921: 357 Load 359(s2DRect) - 3922: 53(fvec2) Load 148(c2) - 3923:3146(ResType) ImageSparseGather 3921 3922 2187 - 3924: 7(f16vec4) CompositeExtract 3923 1 - Store 3876(texel) 3924 - 3925: 47(int) CompositeExtract 3923 0 - 3926: 357 Load 359(s2DRect) - 3927:154(f16vec2) Load 156(f16c2) - 3928:3146(ResType) ImageSparseGather 3926 3927 2187 - 3929: 7(f16vec4) CompositeExtract 3928 1 - Store 3876(texel) 3929 - 3930: 47(int) CompositeExtract 3928 0 - 3931: 224 Load 226(s2DShadow) - 3932: 53(fvec2) Load 148(c2) - 3933: 52(float) Load 215(compare) - 3934:3146(ResType) ImageSparseDrefGather 3931 3932 3933 - 3935: 7(f16vec4) CompositeExtract 3934 1 - Store 3876(texel) 3935 - 3936: 47(int) CompositeExtract 3934 0 - 3937: 224 Load 226(s2DShadow) - 3938:154(f16vec2) Load 156(f16c2) - 3939: 52(float) Load 215(compare) - 3940:3146(ResType) ImageSparseDrefGather 3937 3938 3939 - 3941: 7(f16vec4) CompositeExtract 3940 1 - Store 3876(texel) 3941 - 3942: 47(int) CompositeExtract 3940 0 - 3943: 337 Load 339(s2DArrayShadow) - 3944: 167(fvec3) Load 169(c3) - 3945: 52(float) Load 215(compare) - 3946:3146(ResType) ImageSparseDrefGather 3943 3944 3945 - 3947: 7(f16vec4) CompositeExtract 3946 1 - Store 3876(texel) 3947 - 3948: 47(int) CompositeExtract 3946 0 - 3949: 337 Load 339(s2DArrayShadow) - 3950:175(f16vec3) Load 177(f16c3) - 3951: 52(float) Load 215(compare) - 3952:3146(ResType) ImageSparseDrefGather 3949 3950 3951 - 3953: 7(f16vec4) CompositeExtract 3952 1 - Store 3876(texel) 3953 - 3954: 47(int) CompositeExtract 3952 0 - 3955: 245 Load 247(sCubeShadow) - 3956: 167(fvec3) Load 169(c3) - 3957: 52(float) Load 215(compare) - 3958:3146(ResType) ImageSparseDrefGather 3955 3956 3957 - 3959: 7(f16vec4) CompositeExtract 3958 1 - Store 3876(texel) 3959 - 3960: 47(int) CompositeExtract 3958 0 - 3961: 245 Load 247(sCubeShadow) - 3962:175(f16vec3) Load 177(f16c3) - 3963: 52(float) Load 215(compare) - 3964:3146(ResType) ImageSparseDrefGather 3961 3962 3963 - 3965: 7(f16vec4) CompositeExtract 3964 1 - Store 3876(texel) 3965 - 3966: 47(int) CompositeExtract 3964 0 - 3967: 391 Load 393(sCubeArrayShadow) - 3968: 249(fvec4) Load 251(c4) - 3969: 52(float) Load 215(compare) - 3970:3146(ResType) ImageSparseDrefGather 3967 3968 3969 - 3971: 7(f16vec4) CompositeExtract 3970 1 - Store 3876(texel) 3971 - 3972: 47(int) CompositeExtract 3970 0 - 3973: 391 Load 393(sCubeArrayShadow) - 3974: 7(f16vec4) Load 309(f16c4) - 3975: 52(float) Load 215(compare) - 3976:3146(ResType) ImageSparseDrefGather 3973 3974 3975 - 3977: 7(f16vec4) CompositeExtract 3976 1 - Store 3876(texel) 3977 - 3978: 47(int) CompositeExtract 3976 0 - 3979: 371 Load 373(s2DRectShadow) - 3980: 53(fvec2) Load 148(c2) - 3981: 52(float) Load 215(compare) - 3982:3146(ResType) ImageSparseDrefGather 3979 3980 3981 + 3921: 337 Load 339(s2DArrayShadow) + 3922:175(f16vec3) Load 177(f16c3) + 3923: 52(float) Load 215(compare) + 3924:3056(ResType) ImageSparseDrefGather 3921 3922 3923 ConstOffset 722 + 3925: 7(f16vec4) CompositeExtract 3924 1 + Store 3870(texel) 3925 + 3926: 47(int) CompositeExtract 3924 0 + 3927: 371 Load 373(s2DRectShadow) + 3928: 53(fvec2) Load 148(c2) + 3929: 52(float) Load 215(compare) + 3930:3056(ResType) ImageSparseDrefGather 3927 3928 3929 ConstOffset 722 + 3931: 7(f16vec4) CompositeExtract 3930 1 + Store 3870(texel) 3931 + 3932: 47(int) CompositeExtract 3930 0 + 3933: 371 Load 373(s2DRectShadow) + 3934:154(f16vec2) Load 156(f16c2) + 3935: 52(float) Load 215(compare) + 3936:3056(ResType) ImageSparseDrefGather 3933 3934 3935 ConstOffset 722 + 3937: 7(f16vec4) CompositeExtract 3936 1 + Store 3870(texel) 3937 + 3938: 47(int) CompositeExtract 3936 0 + 3939: 7(f16vec4) Load 3870(texel) + ReturnValue 3939 + FunctionEnd +89(testSparseTextureGatherOffsets(): 7(f16vec4) Function None 8 + 90: Label + 3942(texel): 64(ptr) Variable Function + Store 3942(texel) 121 + 3943: 143 Load 145(s2D) + 3944: 53(fvec2) Load 148(c2) + 3955:3056(ResType) ImageSparseGather 3943 3944 2097 ConstOffsets 3954 + 3956: 7(f16vec4) CompositeExtract 3955 1 + Store 3942(texel) 3956 + 3957: 47(int) CompositeExtract 3955 0 + 3958: 143 Load 145(s2D) + 3959:154(f16vec2) Load 156(f16c2) + 3960:6(float16_t) Load 137(f16bias) + 3961:3056(ResType) ImageSparseGather 3958 3959 2097 Bias ConstOffsets 3960 3954 + 3962: 7(f16vec4) CompositeExtract 3961 1 + Store 3942(texel) 3962 + 3963: 47(int) CompositeExtract 3961 0 + 3964: 284 Load 286(s2DArray) + 3965: 167(fvec3) Load 169(c3) + 3966:3056(ResType) ImageSparseGather 3964 3965 2097 ConstOffsets 3954 + 3967: 7(f16vec4) CompositeExtract 3966 1 + Store 3942(texel) 3967 + 3968: 47(int) CompositeExtract 3966 0 + 3969: 284 Load 286(s2DArray) + 3970:175(f16vec3) Load 177(f16c3) + 3971:6(float16_t) Load 137(f16bias) + 3972:3056(ResType) ImageSparseGather 3969 3970 2097 Bias ConstOffsets 3971 3954 + 3973: 7(f16vec4) CompositeExtract 3972 1 + Store 3942(texel) 3973 + 3974: 47(int) CompositeExtract 3972 0 + 3975: 357 Load 359(s2DRect) + 3976: 53(fvec2) Load 148(c2) + 3977:3056(ResType) ImageSparseGather 3975 3976 2097 ConstOffsets 3954 + 3978: 7(f16vec4) CompositeExtract 3977 1 + Store 3942(texel) 3978 + 3979: 47(int) CompositeExtract 3977 0 + 3980: 357 Load 359(s2DRect) + 3981:154(f16vec2) Load 156(f16c2) + 3982:3056(ResType) ImageSparseGather 3980 3981 2097 ConstOffsets 3954 3983: 7(f16vec4) CompositeExtract 3982 1 - Store 3876(texel) 3983 + Store 3942(texel) 3983 3984: 47(int) CompositeExtract 3982 0 - 3985: 371 Load 373(s2DRectShadow) - 3986:154(f16vec2) Load 156(f16c2) + 3985: 224 Load 226(s2DShadow) + 3986: 53(fvec2) Load 148(c2) 3987: 52(float) Load 215(compare) - 3988:3146(ResType) ImageSparseDrefGather 3985 3986 3987 + 3988:3056(ResType) ImageSparseDrefGather 3985 3986 3987 ConstOffsets 3954 3989: 7(f16vec4) CompositeExtract 3988 1 - Store 3876(texel) 3989 + Store 3942(texel) 3989 3990: 47(int) CompositeExtract 3988 0 - 3991: 7(f16vec4) Load 3876(texel) - ReturnValue 3991 - FunctionEnd -87(testSparseTextureGatherOffset(): 7(f16vec4) Function None 8 - 88: Label - 3994(texel): 64(ptr) Variable Function - Store 3994(texel) 121 - 3995: 143 Load 145(s2D) - 3996: 53(fvec2) Load 148(c2) - 3997:3146(ResType) ImageSparseGather 3995 3996 2187 ConstOffset 722 - 3998: 7(f16vec4) CompositeExtract 3997 1 - Store 3994(texel) 3998 - 3999: 47(int) CompositeExtract 3997 0 - 4000: 143 Load 145(s2D) - 4001:154(f16vec2) Load 156(f16c2) - 4002:6(float16_t) Load 137(f16bias) - 4003:3146(ResType) ImageSparseGather 4000 4001 2187 Bias ConstOffset 4002 722 - 4004: 7(f16vec4) CompositeExtract 4003 1 - Store 3994(texel) 4004 - 4005: 47(int) CompositeExtract 4003 0 - 4006: 284 Load 286(s2DArray) - 4007: 167(fvec3) Load 169(c3) - 4008:3146(ResType) ImageSparseGather 4006 4007 2187 ConstOffset 722 - 4009: 7(f16vec4) CompositeExtract 4008 1 - Store 3994(texel) 4009 - 4010: 47(int) CompositeExtract 4008 0 - 4011: 284 Load 286(s2DArray) - 4012:175(f16vec3) Load 177(f16c3) - 4013:6(float16_t) Load 137(f16bias) - 4014:3146(ResType) ImageSparseGather 4011 4012 2187 Bias ConstOffset 4013 722 - 4015: 7(f16vec4) CompositeExtract 4014 1 - Store 3994(texel) 4015 - 4016: 47(int) CompositeExtract 4014 0 - 4017: 357 Load 359(s2DRect) - 4018: 53(fvec2) Load 148(c2) - 4019:3146(ResType) ImageSparseGather 4017 4018 2187 ConstOffset 722 - 4020: 7(f16vec4) CompositeExtract 4019 1 - Store 3994(texel) 4020 - 4021: 47(int) CompositeExtract 4019 0 - 4022: 357 Load 359(s2DRect) - 4023:154(f16vec2) Load 156(f16c2) - 4024:3146(ResType) ImageSparseGather 4022 4023 2187 ConstOffset 722 - 4025: 7(f16vec4) CompositeExtract 4024 1 - Store 3994(texel) 4025 - 4026: 47(int) CompositeExtract 4024 0 - 4027: 224 Load 226(s2DShadow) - 4028: 53(fvec2) Load 148(c2) - 4029: 52(float) Load 215(compare) - 4030:3146(ResType) ImageSparseDrefGather 4027 4028 4029 ConstOffset 722 - 4031: 7(f16vec4) CompositeExtract 4030 1 - Store 3994(texel) 4031 - 4032: 47(int) CompositeExtract 4030 0 - 4033: 224 Load 226(s2DShadow) - 4034:154(f16vec2) Load 156(f16c2) - 4035: 52(float) Load 215(compare) - 4036:3146(ResType) ImageSparseDrefGather 4033 4034 4035 ConstOffset 722 - 4037: 7(f16vec4) CompositeExtract 4036 1 - Store 3994(texel) 4037 - 4038: 47(int) CompositeExtract 4036 0 - 4039: 337 Load 339(s2DArrayShadow) - 4040: 167(fvec3) Load 169(c3) - 4041: 52(float) Load 215(compare) - 4042:3146(ResType) ImageSparseDrefGather 4039 4040 4041 ConstOffset 722 - 4043: 7(f16vec4) CompositeExtract 4042 1 - Store 3994(texel) 4043 - 4044: 47(int) CompositeExtract 4042 0 - 4045: 337 Load 339(s2DArrayShadow) - 4046:175(f16vec3) Load 177(f16c3) - 4047: 52(float) Load 215(compare) - 4048:3146(ResType) ImageSparseDrefGather 4045 4046 4047 ConstOffset 722 - 4049: 7(f16vec4) CompositeExtract 4048 1 - Store 3994(texel) 4049 - 4050: 47(int) CompositeExtract 4048 0 - 4051: 371 Load 373(s2DRectShadow) - 4052: 53(fvec2) Load 148(c2) - 4053: 52(float) Load 215(compare) - 4054:3146(ResType) ImageSparseDrefGather 4051 4052 4053 ConstOffset 722 - 4055: 7(f16vec4) CompositeExtract 4054 1 - Store 3994(texel) 4055 - 4056: 47(int) CompositeExtract 4054 0 - 4057: 371 Load 373(s2DRectShadow) - 4058:154(f16vec2) Load 156(f16c2) - 4059: 52(float) Load 215(compare) - 4060:3146(ResType) ImageSparseDrefGather 4057 4058 4059 ConstOffset 722 - 4061: 7(f16vec4) CompositeExtract 4060 1 - Store 3994(texel) 4061 - 4062: 47(int) CompositeExtract 4060 0 - 4063: 7(f16vec4) Load 3994(texel) - ReturnValue 4063 - FunctionEnd -89(testSparseTextureGatherOffsets(): 7(f16vec4) Function None 8 - 90: Label - 4066(texel): 64(ptr) Variable Function - Store 4066(texel) 121 - 4067: 143 Load 145(s2D) - 4068: 53(fvec2) Load 148(c2) - 4079:3146(ResType) ImageSparseGather 4067 4068 2187 ConstOffsets 4078 - 4080: 7(f16vec4) CompositeExtract 4079 1 - Store 4066(texel) 4080 - 4081: 47(int) CompositeExtract 4079 0 - 4082: 143 Load 145(s2D) - 4083:154(f16vec2) Load 156(f16c2) - 4084:6(float16_t) Load 137(f16bias) - 4085:3146(ResType) ImageSparseGather 4082 4083 2187 Bias ConstOffsets 4084 4078 - 4086: 7(f16vec4) CompositeExtract 4085 1 - Store 4066(texel) 4086 - 4087: 47(int) CompositeExtract 4085 0 - 4088: 284 Load 286(s2DArray) - 4089: 167(fvec3) Load 169(c3) - 4090:3146(ResType) ImageSparseGather 4088 4089 2187 ConstOffsets 4078 - 4091: 7(f16vec4) CompositeExtract 4090 1 - Store 4066(texel) 4091 - 4092: 47(int) CompositeExtract 4090 0 - 4093: 284 Load 286(s2DArray) - 4094:175(f16vec3) Load 177(f16c3) - 4095:6(float16_t) Load 137(f16bias) - 4096:3146(ResType) ImageSparseGather 4093 4094 2187 Bias ConstOffsets 4095 4078 - 4097: 7(f16vec4) CompositeExtract 4096 1 - Store 4066(texel) 4097 - 4098: 47(int) CompositeExtract 4096 0 - 4099: 357 Load 359(s2DRect) - 4100: 53(fvec2) Load 148(c2) - 4101:3146(ResType) ImageSparseGather 4099 4100 2187 ConstOffsets 4078 - 4102: 7(f16vec4) CompositeExtract 4101 1 - Store 4066(texel) 4102 - 4103: 47(int) CompositeExtract 4101 0 - 4104: 357 Load 359(s2DRect) - 4105:154(f16vec2) Load 156(f16c2) - 4106:3146(ResType) ImageSparseGather 4104 4105 2187 ConstOffsets 4078 - 4107: 7(f16vec4) CompositeExtract 4106 1 - Store 4066(texel) 4107 - 4108: 47(int) CompositeExtract 4106 0 - 4109: 224 Load 226(s2DShadow) - 4110: 53(fvec2) Load 148(c2) - 4111: 52(float) Load 215(compare) - 4112:3146(ResType) ImageSparseDrefGather 4109 4110 4111 ConstOffsets 4078 - 4113: 7(f16vec4) CompositeExtract 4112 1 - Store 4066(texel) 4113 - 4114: 47(int) CompositeExtract 4112 0 - 4115: 224 Load 226(s2DShadow) - 4116:154(f16vec2) Load 156(f16c2) - 4117: 52(float) Load 215(compare) - 4118:3146(ResType) ImageSparseDrefGather 4115 4116 4117 ConstOffsets 4078 - 4119: 7(f16vec4) CompositeExtract 4118 1 - Store 4066(texel) 4119 - 4120: 47(int) CompositeExtract 4118 0 - 4121: 337 Load 339(s2DArrayShadow) - 4122: 167(fvec3) Load 169(c3) - 4123: 52(float) Load 215(compare) - 4124:3146(ResType) ImageSparseDrefGather 4121 4122 4123 ConstOffsets 4078 - 4125: 7(f16vec4) CompositeExtract 4124 1 - Store 4066(texel) 4125 - 4126: 47(int) CompositeExtract 4124 0 - 4127: 337 Load 339(s2DArrayShadow) - 4128:175(f16vec3) Load 177(f16c3) - 4129: 52(float) Load 215(compare) - 4130:3146(ResType) ImageSparseDrefGather 4127 4128 4129 ConstOffsets 4078 - 4131: 7(f16vec4) CompositeExtract 4130 1 - Store 4066(texel) 4131 - 4132: 47(int) CompositeExtract 4130 0 - 4133: 371 Load 373(s2DRectShadow) - 4134: 53(fvec2) Load 148(c2) - 4135: 52(float) Load 215(compare) - 4136:3146(ResType) ImageSparseDrefGather 4133 4134 4135 ConstOffsets 4078 - 4137: 7(f16vec4) CompositeExtract 4136 1 - Store 4066(texel) 4137 - 4138: 47(int) CompositeExtract 4136 0 - 4139: 371 Load 373(s2DRectShadow) - 4140:154(f16vec2) Load 156(f16c2) - 4141: 52(float) Load 215(compare) - 4142:3146(ResType) ImageSparseDrefGather 4139 4140 4141 ConstOffsets 4078 - 4143: 7(f16vec4) CompositeExtract 4142 1 - Store 4066(texel) 4143 - 4144: 47(int) CompositeExtract 4142 0 - 4145: 7(f16vec4) Load 4066(texel) - ReturnValue 4145 + 3991: 224 Load 226(s2DShadow) + 3992:154(f16vec2) Load 156(f16c2) + 3993: 52(float) Load 215(compare) + 3994:3056(ResType) ImageSparseDrefGather 3991 3992 3993 ConstOffsets 3954 + 3995: 7(f16vec4) CompositeExtract 3994 1 + Store 3942(texel) 3995 + 3996: 47(int) CompositeExtract 3994 0 + 3997: 337 Load 339(s2DArrayShadow) + 3998: 167(fvec3) Load 169(c3) + 3999: 52(float) Load 215(compare) + 4000:3056(ResType) ImageSparseDrefGather 3997 3998 3999 ConstOffsets 3954 + 4001: 7(f16vec4) CompositeExtract 4000 1 + Store 3942(texel) 4001 + 4002: 47(int) CompositeExtract 4000 0 + 4003: 337 Load 339(s2DArrayShadow) + 4004:175(f16vec3) Load 177(f16c3) + 4005: 52(float) Load 215(compare) + 4006:3056(ResType) ImageSparseDrefGather 4003 4004 4005 ConstOffsets 3954 + 4007: 7(f16vec4) CompositeExtract 4006 1 + Store 3942(texel) 4007 + 4008: 47(int) CompositeExtract 4006 0 + 4009: 371 Load 373(s2DRectShadow) + 4010: 53(fvec2) Load 148(c2) + 4011: 52(float) Load 215(compare) + 4012:3056(ResType) ImageSparseDrefGather 4009 4010 4011 ConstOffsets 3954 + 4013: 7(f16vec4) CompositeExtract 4012 1 + Store 3942(texel) 4013 + 4014: 47(int) CompositeExtract 4012 0 + 4015: 371 Load 373(s2DRectShadow) + 4016:154(f16vec2) Load 156(f16c2) + 4017: 52(float) Load 215(compare) + 4018:3056(ResType) ImageSparseDrefGather 4015 4016 4017 ConstOffsets 3954 + 4019: 7(f16vec4) CompositeExtract 4018 1 + Store 3942(texel) 4019 + 4020: 47(int) CompositeExtract 4018 0 + 4021: 7(f16vec4) Load 3942(texel) + ReturnValue 4021 FunctionEnd 91(testSparseTextureGatherLod(): 7(f16vec4) Function None 8 92: Label - 4148(texel): 64(ptr) Variable Function - Store 4148(texel) 121 - 4149: 143 Load 145(s2D) - 4150: 53(fvec2) Load 148(c2) - 4151: 52(float) Load 565(lod) - 4152:3146(ResType) ImageSparseGather 4149 4150 2187 Lod 4151 - 4153: 7(f16vec4) CompositeExtract 4152 1 - Store 4148(texel) 4153 - 4154: 47(int) CompositeExtract 4152 0 - 4155: 143 Load 145(s2D) - 4156:154(f16vec2) Load 156(f16c2) - 4157:6(float16_t) Load 572(f16lod) - 4158:3146(ResType) ImageSparseGather 4155 4156 2187 Lod 4157 - 4159: 7(f16vec4) CompositeExtract 4158 1 - Store 4148(texel) 4159 - 4160: 47(int) CompositeExtract 4158 0 - 4161: 284 Load 286(s2DArray) - 4162: 167(fvec3) Load 169(c3) - 4163: 52(float) Load 565(lod) - 4164:3146(ResType) ImageSparseGather 4161 4162 2187 Lod 4163 - 4165: 7(f16vec4) CompositeExtract 4164 1 - Store 4148(texel) 4165 - 4166: 47(int) CompositeExtract 4164 0 - 4167: 284 Load 286(s2DArray) - 4168:175(f16vec3) Load 177(f16c3) - 4169:6(float16_t) Load 572(f16lod) - 4170:3146(ResType) ImageSparseGather 4167 4168 2187 Lod 4169 - 4171: 7(f16vec4) CompositeExtract 4170 1 - Store 4148(texel) 4171 - 4172: 47(int) CompositeExtract 4170 0 - 4173: 184 Load 186(sCube) - 4174: 167(fvec3) Load 169(c3) - 4175: 52(float) Load 565(lod) - 4176:3146(ResType) ImageSparseGather 4173 4174 2187 Lod 4175 - 4177: 7(f16vec4) CompositeExtract 4176 1 - Store 4148(texel) 4177 - 4178: 47(int) CompositeExtract 4176 0 - 4179: 184 Load 186(sCube) - 4180:175(f16vec3) Load 177(f16c3) - 4181:6(float16_t) Load 572(f16lod) - 4182:3146(ResType) ImageSparseGather 4179 4180 2187 Lod 4181 - 4183: 7(f16vec4) CompositeExtract 4182 1 - Store 4148(texel) 4183 - 4184: 47(int) CompositeExtract 4182 0 - 4185: 299 Load 301(sCubeArray) - 4186: 249(fvec4) Load 251(c4) - 4187: 52(float) Load 565(lod) - 4188:3146(ResType) ImageSparseGather 4185 4186 2187 Lod 4187 - 4189: 7(f16vec4) CompositeExtract 4188 1 - Store 4148(texel) 4189 - 4190: 47(int) CompositeExtract 4188 0 - 4191: 299 Load 301(sCubeArray) - 4192: 7(f16vec4) Load 309(f16c4) - 4193:6(float16_t) Load 572(f16lod) - 4194:3146(ResType) ImageSparseGather 4191 4192 2187 Lod 4193 - 4195: 7(f16vec4) CompositeExtract 4194 1 - Store 4148(texel) 4195 - 4196: 47(int) CompositeExtract 4194 0 - 4197: 7(f16vec4) Load 4148(texel) - ReturnValue 4197 + 4024(texel): 64(ptr) Variable Function + Store 4024(texel) 121 + 4025: 143 Load 145(s2D) + 4026: 53(fvec2) Load 148(c2) + 4027: 52(float) Load 565(lod) + 4028:3056(ResType) ImageSparseGather 4025 4026 2097 Lod 4027 + 4029: 7(f16vec4) CompositeExtract 4028 1 + Store 4024(texel) 4029 + 4030: 47(int) CompositeExtract 4028 0 + 4031: 143 Load 145(s2D) + 4032:154(f16vec2) Load 156(f16c2) + 4033:6(float16_t) Load 572(f16lod) + 4034:3056(ResType) ImageSparseGather 4031 4032 2097 Lod 4033 + 4035: 7(f16vec4) CompositeExtract 4034 1 + Store 4024(texel) 4035 + 4036: 47(int) CompositeExtract 4034 0 + 4037: 284 Load 286(s2DArray) + 4038: 167(fvec3) Load 169(c3) + 4039: 52(float) Load 565(lod) + 4040:3056(ResType) ImageSparseGather 4037 4038 2097 Lod 4039 + 4041: 7(f16vec4) CompositeExtract 4040 1 + Store 4024(texel) 4041 + 4042: 47(int) CompositeExtract 4040 0 + 4043: 284 Load 286(s2DArray) + 4044:175(f16vec3) Load 177(f16c3) + 4045:6(float16_t) Load 572(f16lod) + 4046:3056(ResType) ImageSparseGather 4043 4044 2097 Lod 4045 + 4047: 7(f16vec4) CompositeExtract 4046 1 + Store 4024(texel) 4047 + 4048: 47(int) CompositeExtract 4046 0 + 4049: 184 Load 186(sCube) + 4050: 167(fvec3) Load 169(c3) + 4051: 52(float) Load 565(lod) + 4052:3056(ResType) ImageSparseGather 4049 4050 2097 Lod 4051 + 4053: 7(f16vec4) CompositeExtract 4052 1 + Store 4024(texel) 4053 + 4054: 47(int) CompositeExtract 4052 0 + 4055: 184 Load 186(sCube) + 4056:175(f16vec3) Load 177(f16c3) + 4057:6(float16_t) Load 572(f16lod) + 4058:3056(ResType) ImageSparseGather 4055 4056 2097 Lod 4057 + 4059: 7(f16vec4) CompositeExtract 4058 1 + Store 4024(texel) 4059 + 4060: 47(int) CompositeExtract 4058 0 + 4061: 299 Load 301(sCubeArray) + 4062: 249(fvec4) Load 251(c4) + 4063: 52(float) Load 565(lod) + 4064:3056(ResType) ImageSparseGather 4061 4062 2097 Lod 4063 + 4065: 7(f16vec4) CompositeExtract 4064 1 + Store 4024(texel) 4065 + 4066: 47(int) CompositeExtract 4064 0 + 4067: 299 Load 301(sCubeArray) + 4068: 7(f16vec4) Load 309(f16c4) + 4069:6(float16_t) Load 572(f16lod) + 4070:3056(ResType) ImageSparseGather 4067 4068 2097 Lod 4069 + 4071: 7(f16vec4) CompositeExtract 4070 1 + Store 4024(texel) 4071 + 4072: 47(int) CompositeExtract 4070 0 + 4073: 7(f16vec4) Load 4024(texel) + ReturnValue 4073 FunctionEnd 93(testSparseTextureGatherLodOffset(): 7(f16vec4) Function None 8 94: Label - 4200(texel): 64(ptr) Variable Function - Store 4200(texel) 121 - 4201: 143 Load 145(s2D) - 4202: 53(fvec2) Load 148(c2) - 4203: 52(float) Load 565(lod) - 4204:3146(ResType) ImageSparseGather 4201 4202 2187 Lod ConstOffset 4203 722 - 4205: 7(f16vec4) CompositeExtract 4204 1 - Store 4200(texel) 4205 - 4206: 47(int) CompositeExtract 4204 0 - 4207: 143 Load 145(s2D) - 4208:154(f16vec2) Load 156(f16c2) - 4209:6(float16_t) Load 572(f16lod) - 4210:3146(ResType) ImageSparseGather 4207 4208 2187 Lod ConstOffset 4209 722 - 4211: 7(f16vec4) CompositeExtract 4210 1 - Store 4200(texel) 4211 - 4212: 47(int) CompositeExtract 4210 0 - 4213: 284 Load 286(s2DArray) - 4214: 167(fvec3) Load 169(c3) - 4215: 52(float) Load 565(lod) - 4216:3146(ResType) ImageSparseGather 4213 4214 2187 Lod ConstOffset 4215 722 - 4217: 7(f16vec4) CompositeExtract 4216 1 - Store 4200(texel) 4217 - 4218: 47(int) CompositeExtract 4216 0 - 4219: 284 Load 286(s2DArray) - 4220:175(f16vec3) Load 177(f16c3) - 4221:6(float16_t) Load 572(f16lod) - 4222:3146(ResType) ImageSparseGather 4219 4220 2187 Lod ConstOffset 4221 722 - 4223: 7(f16vec4) CompositeExtract 4222 1 - Store 4200(texel) 4223 - 4224: 47(int) CompositeExtract 4222 0 - 4225: 7(f16vec4) Load 4200(texel) - ReturnValue 4225 + 4076(texel): 64(ptr) Variable Function + Store 4076(texel) 121 + 4077: 143 Load 145(s2D) + 4078: 53(fvec2) Load 148(c2) + 4079: 52(float) Load 565(lod) + 4080:3056(ResType) ImageSparseGather 4077 4078 2097 Lod ConstOffset 4079 722 + 4081: 7(f16vec4) CompositeExtract 4080 1 + Store 4076(texel) 4081 + 4082: 47(int) CompositeExtract 4080 0 + 4083: 143 Load 145(s2D) + 4084:154(f16vec2) Load 156(f16c2) + 4085:6(float16_t) Load 572(f16lod) + 4086:3056(ResType) ImageSparseGather 4083 4084 2097 Lod ConstOffset 4085 722 + 4087: 7(f16vec4) CompositeExtract 4086 1 + Store 4076(texel) 4087 + 4088: 47(int) CompositeExtract 4086 0 + 4089: 284 Load 286(s2DArray) + 4090: 167(fvec3) Load 169(c3) + 4091: 52(float) Load 565(lod) + 4092:3056(ResType) ImageSparseGather 4089 4090 2097 Lod ConstOffset 4091 722 + 4093: 7(f16vec4) CompositeExtract 4092 1 + Store 4076(texel) 4093 + 4094: 47(int) CompositeExtract 4092 0 + 4095: 284 Load 286(s2DArray) + 4096:175(f16vec3) Load 177(f16c3) + 4097:6(float16_t) Load 572(f16lod) + 4098:3056(ResType) ImageSparseGather 4095 4096 2097 Lod ConstOffset 4097 722 + 4099: 7(f16vec4) CompositeExtract 4098 1 + Store 4076(texel) 4099 + 4100: 47(int) CompositeExtract 4098 0 + 4101: 7(f16vec4) Load 4076(texel) + ReturnValue 4101 FunctionEnd 95(testSparseTextureGatherLodOffsets(): 7(f16vec4) Function None 8 96: Label - 4228(texel): 64(ptr) Variable Function - Store 4228(texel) 121 - 4229: 143 Load 145(s2D) - 4230: 53(fvec2) Load 148(c2) - 4231: 52(float) Load 565(lod) - 4232:3146(ResType) ImageSparseGather 4229 4230 2187 Lod ConstOffsets 4231 2380 - 4233: 7(f16vec4) CompositeExtract 4232 1 - Store 4228(texel) 4233 - 4234: 47(int) CompositeExtract 4232 0 - 4235: 143 Load 145(s2D) - 4236:154(f16vec2) Load 156(f16c2) - 4237:6(float16_t) Load 572(f16lod) - 4238:3146(ResType) ImageSparseGather 4235 4236 2187 Lod ConstOffsets 4237 2380 - 4239: 7(f16vec4) CompositeExtract 4238 1 - Store 4228(texel) 4239 - 4240: 47(int) CompositeExtract 4238 0 - 4241: 284 Load 286(s2DArray) - 4242: 167(fvec3) Load 169(c3) - 4243: 52(float) Load 565(lod) - 4244:3146(ResType) ImageSparseGather 4241 4242 2187 Lod ConstOffsets 4243 2380 - 4245: 7(f16vec4) CompositeExtract 4244 1 - Store 4228(texel) 4245 - 4246: 47(int) CompositeExtract 4244 0 - 4247: 284 Load 286(s2DArray) - 4248:175(f16vec3) Load 177(f16c3) - 4249:6(float16_t) Load 572(f16lod) - 4250:3146(ResType) ImageSparseGather 4247 4248 2187 Lod ConstOffsets 4249 2380 - 4251: 7(f16vec4) CompositeExtract 4250 1 - Store 4228(texel) 4251 - 4252: 47(int) CompositeExtract 4250 0 - 4253: 7(f16vec4) Load 4228(texel) - ReturnValue 4253 + 4104(texel): 64(ptr) Variable Function + Store 4104(texel) 121 + 4105: 143 Load 145(s2D) + 4106: 53(fvec2) Load 148(c2) + 4107: 52(float) Load 565(lod) + 4108:3056(ResType) ImageSparseGather 4105 4106 2097 Lod ConstOffsets 4107 2290 + 4109: 7(f16vec4) CompositeExtract 4108 1 + Store 4104(texel) 4109 + 4110: 47(int) CompositeExtract 4108 0 + 4111: 143 Load 145(s2D) + 4112:154(f16vec2) Load 156(f16c2) + 4113:6(float16_t) Load 572(f16lod) + 4114:3056(ResType) ImageSparseGather 4111 4112 2097 Lod ConstOffsets 4113 2290 + 4115: 7(f16vec4) CompositeExtract 4114 1 + Store 4104(texel) 4115 + 4116: 47(int) CompositeExtract 4114 0 + 4117: 284 Load 286(s2DArray) + 4118: 167(fvec3) Load 169(c3) + 4119: 52(float) Load 565(lod) + 4120:3056(ResType) ImageSparseGather 4117 4118 2097 Lod ConstOffsets 4119 2290 + 4121: 7(f16vec4) CompositeExtract 4120 1 + Store 4104(texel) 4121 + 4122: 47(int) CompositeExtract 4120 0 + 4123: 284 Load 286(s2DArray) + 4124:175(f16vec3) Load 177(f16c3) + 4125:6(float16_t) Load 572(f16lod) + 4126:3056(ResType) ImageSparseGather 4123 4124 2097 Lod ConstOffsets 4125 2290 + 4127: 7(f16vec4) CompositeExtract 4126 1 + Store 4104(texel) 4127 + 4128: 47(int) CompositeExtract 4126 0 + 4129: 7(f16vec4) Load 4104(texel) + ReturnValue 4129 FunctionEnd 97(testSparseImageLoad(): 7(f16vec4) Function None 8 98: Label - 4256(texel): 64(ptr) Variable Function - Store 4256(texel) 121 - 4257: 3006 Load 3008(i2D) - 4258: 53(fvec2) Load 148(c2) - 4259: 721(ivec2) ConvertFToS 4258 - 4260:3146(ResType) ImageSparseRead 4257 4259 - 4261: 7(f16vec4) CompositeExtract 4260 1 - Store 4256(texel) 4261 - 4262: 47(int) CompositeExtract 4260 0 - 4263: 3015 Load 3017(i3D) - 4264: 167(fvec3) Load 169(c3) - 4265: 734(ivec3) ConvertFToS 4264 - 4266:3146(ResType) ImageSparseRead 4263 4265 - 4267: 7(f16vec4) CompositeExtract 4266 1 - Store 4256(texel) 4267 - 4268: 47(int) CompositeExtract 4266 0 - 4269: 3024 Load 3026(i2DRect) - 4270: 53(fvec2) Load 148(c2) - 4271: 721(ivec2) ConvertFToS 4270 - 4272:3146(ResType) ImageSparseRead 4269 4271 - 4273: 7(f16vec4) CompositeExtract 4272 1 - Store 4256(texel) 4273 - 4274: 47(int) CompositeExtract 4272 0 - 4275: 3033 Load 3035(iCube) - 4276: 167(fvec3) Load 169(c3) - 4277: 734(ivec3) ConvertFToS 4276 - 4278:3146(ResType) ImageSparseRead 4275 4277 - 4279: 7(f16vec4) CompositeExtract 4278 1 - Store 4256(texel) 4279 - 4280: 47(int) CompositeExtract 4278 0 - 4281: 3060 Load 3062(i2DArray) - 4282: 167(fvec3) Load 169(c3) - 4283: 734(ivec3) ConvertFToS 4282 - 4284:3146(ResType) ImageSparseRead 4281 4283 - 4285: 7(f16vec4) CompositeExtract 4284 1 - Store 4256(texel) 4285 - 4286: 47(int) CompositeExtract 4284 0 - 4287: 3069 Load 3071(iCubeArray) - 4288: 167(fvec3) Load 169(c3) - 4289: 734(ivec3) ConvertFToS 4288 - 4290:3146(ResType) ImageSparseRead 4287 4289 - 4291: 7(f16vec4) CompositeExtract 4290 1 - Store 4256(texel) 4291 - 4292: 47(int) CompositeExtract 4290 0 - 4293: 3078 Load 3080(i2DMS) - 4294: 53(fvec2) Load 148(c2) - 4295: 721(ivec2) ConvertFToS 4294 - 4296:3146(ResType) ImageSparseRead 4293 4295 Sample 709 - 4297: 7(f16vec4) CompositeExtract 4296 1 - Store 4256(texel) 4297 - 4298: 47(int) CompositeExtract 4296 0 - 4299: 3087 Load 3089(i2DMSArray) - 4300: 167(fvec3) Load 169(c3) - 4301: 734(ivec3) ConvertFToS 4300 - 4302:3146(ResType) ImageSparseRead 4299 4301 Sample 1326 - 4303: 7(f16vec4) CompositeExtract 4302 1 - Store 4256(texel) 4303 - 4304: 47(int) CompositeExtract 4302 0 - 4305: 7(f16vec4) Load 4256(texel) - ReturnValue 4305 + 4132(texel): 64(ptr) Variable Function + Store 4132(texel) 121 + 4133: 2916 Load 2918(i2D) + 4134: 53(fvec2) Load 148(c2) + 4135: 721(ivec2) ConvertFToS 4134 + 4136:3056(ResType) ImageSparseRead 4133 4135 + 4137: 7(f16vec4) CompositeExtract 4136 1 + Store 4132(texel) 4137 + 4138: 47(int) CompositeExtract 4136 0 + 4139: 2925 Load 2927(i3D) + 4140: 167(fvec3) Load 169(c3) + 4141: 734(ivec3) ConvertFToS 4140 + 4142:3056(ResType) ImageSparseRead 4139 4141 + 4143: 7(f16vec4) CompositeExtract 4142 1 + Store 4132(texel) 4143 + 4144: 47(int) CompositeExtract 4142 0 + 4145: 2934 Load 2936(i2DRect) + 4146: 53(fvec2) Load 148(c2) + 4147: 721(ivec2) ConvertFToS 4146 + 4148:3056(ResType) ImageSparseRead 4145 4147 + 4149: 7(f16vec4) CompositeExtract 4148 1 + Store 4132(texel) 4149 + 4150: 47(int) CompositeExtract 4148 0 + 4151: 2943 Load 2945(iCube) + 4152: 167(fvec3) Load 169(c3) + 4153: 734(ivec3) ConvertFToS 4152 + 4154:3056(ResType) ImageSparseRead 4151 4153 + 4155: 7(f16vec4) CompositeExtract 4154 1 + Store 4132(texel) 4155 + 4156: 47(int) CompositeExtract 4154 0 + 4157: 2970 Load 2972(i2DArray) + 4158: 167(fvec3) Load 169(c3) + 4159: 734(ivec3) ConvertFToS 4158 + 4160:3056(ResType) ImageSparseRead 4157 4159 + 4161: 7(f16vec4) CompositeExtract 4160 1 + Store 4132(texel) 4161 + 4162: 47(int) CompositeExtract 4160 0 + 4163: 2979 Load 2981(iCubeArray) + 4164: 167(fvec3) Load 169(c3) + 4165: 734(ivec3) ConvertFToS 4164 + 4166:3056(ResType) ImageSparseRead 4163 4165 + 4167: 7(f16vec4) CompositeExtract 4166 1 + Store 4132(texel) 4167 + 4168: 47(int) CompositeExtract 4166 0 + 4169: 2988 Load 2990(i2DMS) + 4170: 53(fvec2) Load 148(c2) + 4171: 721(ivec2) ConvertFToS 4170 + 4172:3056(ResType) ImageSparseRead 4169 4171 Sample 709 + 4173: 7(f16vec4) CompositeExtract 4172 1 + Store 4132(texel) 4173 + 4174: 47(int) CompositeExtract 4172 0 + 4175: 2997 Load 2999(i2DMSArray) + 4176: 167(fvec3) Load 169(c3) + 4177: 734(ivec3) ConvertFToS 4176 + 4178:3056(ResType) ImageSparseRead 4175 4177 Sample 1326 + 4179: 7(f16vec4) CompositeExtract 4178 1 + Store 4132(texel) 4179 + 4180: 47(int) CompositeExtract 4178 0 + 4181: 7(f16vec4) Load 4132(texel) + ReturnValue 4181 FunctionEnd 99(testSparseTextureClamp(): 7(f16vec4) Function None 8 100: Label - 4308(texel): 64(ptr) Variable Function - Store 4308(texel) 121 - 4309: 143 Load 145(s2D) - 4310: 53(fvec2) Load 148(c2) - 4312: 52(float) Load 4311(lodClamp) - 4313:3146(ResType) ImageSparseSampleImplicitLod 4309 4310 MinLod 4312 - 4314: 7(f16vec4) CompositeExtract 4313 1 - Store 4308(texel) 4314 - 4315: 47(int) CompositeExtract 4313 0 - 4316: 143 Load 145(s2D) - 4317:154(f16vec2) Load 156(f16c2) - 4319:6(float16_t) Load 4318(f16lodClamp) - 4320:6(float16_t) Load 137(f16bias) - 4321:3146(ResType) ImageSparseSampleImplicitLod 4316 4317 Bias MinLod 4320 4319 - 4322: 7(f16vec4) CompositeExtract 4321 1 - Store 4308(texel) 4322 - 4323: 47(int) CompositeExtract 4321 0 - 4324: 163 Load 165(s3D) - 4325: 167(fvec3) Load 169(c3) - 4326: 52(float) Load 4311(lodClamp) - 4327:3146(ResType) ImageSparseSampleImplicitLod 4324 4325 MinLod 4326 - 4328: 7(f16vec4) CompositeExtract 4327 1 - Store 4308(texel) 4328 - 4329: 47(int) CompositeExtract 4327 0 - 4330: 163 Load 165(s3D) - 4331:175(f16vec3) Load 177(f16c3) - 4332:6(float16_t) Load 4318(f16lodClamp) - 4333:6(float16_t) Load 137(f16bias) - 4334:3146(ResType) ImageSparseSampleImplicitLod 4330 4331 Bias MinLod 4333 4332 - 4335: 7(f16vec4) CompositeExtract 4334 1 - Store 4308(texel) 4335 - 4336: 47(int) CompositeExtract 4334 0 - 4337: 184 Load 186(sCube) - 4338: 167(fvec3) Load 169(c3) - 4339: 52(float) Load 4311(lodClamp) - 4340:3146(ResType) ImageSparseSampleImplicitLod 4337 4338 MinLod 4339 - 4341: 7(f16vec4) CompositeExtract 4340 1 - Store 4308(texel) 4341 - 4342: 47(int) CompositeExtract 4340 0 - 4343: 184 Load 186(sCube) - 4344:175(f16vec3) Load 177(f16c3) - 4345:6(float16_t) Load 4318(f16lodClamp) - 4346:6(float16_t) Load 137(f16bias) - 4347:3146(ResType) ImageSparseSampleImplicitLod 4343 4344 Bias MinLod 4346 4345 - 4348: 7(f16vec4) CompositeExtract 4347 1 - Store 4308(texel) 4348 - 4349: 47(int) CompositeExtract 4347 0 - 4350: 224 Load 226(s2DShadow) - 4351: 167(fvec3) Load 169(c3) - 4352: 52(float) Load 4311(lodClamp) - 4353: 208(ptr) AccessChain 4308(texel) 207 - 4354: 52(float) CompositeExtract 4351 2 - 4355:3182(ResType) ImageSparseSampleDrefImplicitLod 4350 4351 4354 MinLod 4352 - 4356:6(float16_t) CompositeExtract 4355 1 - Store 4353 4356 - 4357: 47(int) CompositeExtract 4355 0 - 4358: 224 Load 226(s2DShadow) - 4359:154(f16vec2) Load 156(f16c2) - 4360: 52(float) Load 215(compare) - 4361:6(float16_t) Load 4318(f16lodClamp) - 4362: 208(ptr) AccessChain 4308(texel) 207 - 4363:6(float16_t) Load 137(f16bias) - 4364:3182(ResType) ImageSparseSampleDrefImplicitLod 4358 4359 4360 Bias MinLod 4363 4361 - 4365:6(float16_t) CompositeExtract 4364 1 - Store 4362 4365 - 4366: 47(int) CompositeExtract 4364 0 - 4367: 245 Load 247(sCubeShadow) - 4368: 249(fvec4) Load 251(c4) - 4369: 52(float) Load 4311(lodClamp) - 4370: 208(ptr) AccessChain 4308(texel) 207 - 4371: 52(float) CompositeExtract 4368 3 - 4372:3182(ResType) ImageSparseSampleDrefImplicitLod 4367 4368 4371 MinLod 4369 - 4373:6(float16_t) CompositeExtract 4372 1 - Store 4370 4373 - 4374: 47(int) CompositeExtract 4372 0 - 4375: 245 Load 247(sCubeShadow) - 4376:175(f16vec3) Load 177(f16c3) - 4377: 52(float) Load 215(compare) - 4378:6(float16_t) Load 4318(f16lodClamp) - 4379: 208(ptr) AccessChain 4308(texel) 207 - 4380:6(float16_t) Load 137(f16bias) - 4381:3182(ResType) ImageSparseSampleDrefImplicitLod 4375 4376 4377 Bias MinLod 4380 4378 - 4382:6(float16_t) CompositeExtract 4381 1 - Store 4379 4382 - 4383: 47(int) CompositeExtract 4381 0 - 4384: 284 Load 286(s2DArray) - 4385: 167(fvec3) Load 169(c3) - 4386: 52(float) Load 4311(lodClamp) - 4387:3146(ResType) ImageSparseSampleImplicitLod 4384 4385 MinLod 4386 - 4388: 7(f16vec4) CompositeExtract 4387 1 - Store 4308(texel) 4388 - 4389: 47(int) CompositeExtract 4387 0 - 4390: 284 Load 286(s2DArray) - 4391:175(f16vec3) Load 177(f16c3) - 4392:6(float16_t) Load 4318(f16lodClamp) - 4393:6(float16_t) Load 137(f16bias) - 4394:3146(ResType) ImageSparseSampleImplicitLod 4390 4391 Bias MinLod 4393 4392 - 4395: 7(f16vec4) CompositeExtract 4394 1 - Store 4308(texel) 4395 - 4396: 47(int) CompositeExtract 4394 0 - 4397: 299 Load 301(sCubeArray) - 4398: 249(fvec4) Load 251(c4) - 4399: 52(float) Load 4311(lodClamp) - 4400:3146(ResType) ImageSparseSampleImplicitLod 4397 4398 MinLod 4399 - 4401: 7(f16vec4) CompositeExtract 4400 1 - Store 4308(texel) 4401 - 4402: 47(int) CompositeExtract 4400 0 - 4403: 299 Load 301(sCubeArray) - 4404: 7(f16vec4) Load 309(f16c4) - 4405:6(float16_t) Load 4318(f16lodClamp) - 4406:6(float16_t) Load 137(f16bias) - 4407:3146(ResType) ImageSparseSampleImplicitLod 4403 4404 Bias MinLod 4406 4405 - 4408: 7(f16vec4) CompositeExtract 4407 1 - Store 4308(texel) 4408 - 4409: 47(int) CompositeExtract 4407 0 - 4410: 337 Load 339(s2DArrayShadow) - 4411: 249(fvec4) Load 251(c4) - 4412: 52(float) Load 4311(lodClamp) - 4413: 208(ptr) AccessChain 4308(texel) 207 - 4414: 52(float) CompositeExtract 4411 3 - 4415:3182(ResType) ImageSparseSampleDrefImplicitLod 4410 4411 4414 MinLod 4412 - 4416:6(float16_t) CompositeExtract 4415 1 - Store 4413 4416 - 4417: 47(int) CompositeExtract 4415 0 - 4418: 337 Load 339(s2DArrayShadow) - 4419:175(f16vec3) Load 177(f16c3) - 4420: 52(float) Load 215(compare) - 4421:6(float16_t) Load 4318(f16lodClamp) - 4422: 208(ptr) AccessChain 4308(texel) 207 - 4423:3182(ResType) ImageSparseSampleDrefImplicitLod 4418 4419 4420 MinLod 4421 - 4424:6(float16_t) CompositeExtract 4423 1 - Store 4422 4424 - 4425: 47(int) CompositeExtract 4423 0 - 4426: 391 Load 393(sCubeArrayShadow) - 4427: 249(fvec4) Load 251(c4) - 4428: 52(float) Load 215(compare) - 4429: 52(float) Load 4311(lodClamp) - 4430: 208(ptr) AccessChain 4308(texel) 207 - 4431:3182(ResType) ImageSparseSampleDrefImplicitLod 4426 4427 4428 MinLod 4429 - 4432:6(float16_t) CompositeExtract 4431 1 - Store 4430 4432 - 4433: 47(int) CompositeExtract 4431 0 - 4434: 391 Load 393(sCubeArrayShadow) - 4435: 7(f16vec4) Load 309(f16c4) - 4436: 52(float) Load 215(compare) - 4437:6(float16_t) Load 4318(f16lodClamp) - 4438: 208(ptr) AccessChain 4308(texel) 207 - 4439:3182(ResType) ImageSparseSampleDrefImplicitLod 4434 4435 4436 MinLod 4437 - 4440:6(float16_t) CompositeExtract 4439 1 - Store 4438 4440 - 4441: 47(int) CompositeExtract 4439 0 - 4442: 7(f16vec4) Load 4308(texel) - ReturnValue 4442 + 4184(texel): 64(ptr) Variable Function + Store 4184(texel) 121 + 4185: 143 Load 145(s2D) + 4186: 53(fvec2) Load 148(c2) + 4188: 52(float) Load 4187(lodClamp) + 4189:3056(ResType) ImageSparseSampleImplicitLod 4185 4186 MinLod 4188 + 4190: 7(f16vec4) CompositeExtract 4189 1 + Store 4184(texel) 4190 + 4191: 47(int) CompositeExtract 4189 0 + 4192: 143 Load 145(s2D) + 4193:154(f16vec2) Load 156(f16c2) + 4195:6(float16_t) Load 4194(f16lodClamp) + 4196:6(float16_t) Load 137(f16bias) + 4197:3056(ResType) ImageSparseSampleImplicitLod 4192 4193 Bias MinLod 4196 4195 + 4198: 7(f16vec4) CompositeExtract 4197 1 + Store 4184(texel) 4198 + 4199: 47(int) CompositeExtract 4197 0 + 4200: 163 Load 165(s3D) + 4201: 167(fvec3) Load 169(c3) + 4202: 52(float) Load 4187(lodClamp) + 4203:3056(ResType) ImageSparseSampleImplicitLod 4200 4201 MinLod 4202 + 4204: 7(f16vec4) CompositeExtract 4203 1 + Store 4184(texel) 4204 + 4205: 47(int) CompositeExtract 4203 0 + 4206: 163 Load 165(s3D) + 4207:175(f16vec3) Load 177(f16c3) + 4208:6(float16_t) Load 4194(f16lodClamp) + 4209:6(float16_t) Load 137(f16bias) + 4210:3056(ResType) ImageSparseSampleImplicitLod 4206 4207 Bias MinLod 4209 4208 + 4211: 7(f16vec4) CompositeExtract 4210 1 + Store 4184(texel) 4211 + 4212: 47(int) CompositeExtract 4210 0 + 4213: 184 Load 186(sCube) + 4214: 167(fvec3) Load 169(c3) + 4215: 52(float) Load 4187(lodClamp) + 4216:3056(ResType) ImageSparseSampleImplicitLod 4213 4214 MinLod 4215 + 4217: 7(f16vec4) CompositeExtract 4216 1 + Store 4184(texel) 4217 + 4218: 47(int) CompositeExtract 4216 0 + 4219: 184 Load 186(sCube) + 4220:175(f16vec3) Load 177(f16c3) + 4221:6(float16_t) Load 4194(f16lodClamp) + 4222:6(float16_t) Load 137(f16bias) + 4223:3056(ResType) ImageSparseSampleImplicitLod 4219 4220 Bias MinLod 4222 4221 + 4224: 7(f16vec4) CompositeExtract 4223 1 + Store 4184(texel) 4224 + 4225: 47(int) CompositeExtract 4223 0 + 4226: 224 Load 226(s2DShadow) + 4227: 167(fvec3) Load 169(c3) + 4228: 52(float) Load 4187(lodClamp) + 4229: 208(ptr) AccessChain 4184(texel) 207 + 4230: 52(float) CompositeExtract 4227 2 + 4231:3092(ResType) ImageSparseSampleDrefImplicitLod 4226 4227 4230 MinLod 4228 + 4232:6(float16_t) CompositeExtract 4231 1 + Store 4229 4232 + 4233: 47(int) CompositeExtract 4231 0 + 4234: 224 Load 226(s2DShadow) + 4235:154(f16vec2) Load 156(f16c2) + 4236: 52(float) Load 215(compare) + 4237:6(float16_t) Load 4194(f16lodClamp) + 4238: 208(ptr) AccessChain 4184(texel) 207 + 4239:6(float16_t) Load 137(f16bias) + 4240:3092(ResType) ImageSparseSampleDrefImplicitLod 4234 4235 4236 Bias MinLod 4239 4237 + 4241:6(float16_t) CompositeExtract 4240 1 + Store 4238 4241 + 4242: 47(int) CompositeExtract 4240 0 + 4243: 245 Load 247(sCubeShadow) + 4244: 249(fvec4) Load 251(c4) + 4245: 52(float) Load 4187(lodClamp) + 4246: 208(ptr) AccessChain 4184(texel) 207 + 4247: 52(float) CompositeExtract 4244 3 + 4248:3092(ResType) ImageSparseSampleDrefImplicitLod 4243 4244 4247 MinLod 4245 + 4249:6(float16_t) CompositeExtract 4248 1 + Store 4246 4249 + 4250: 47(int) CompositeExtract 4248 0 + 4251: 245 Load 247(sCubeShadow) + 4252:175(f16vec3) Load 177(f16c3) + 4253: 52(float) Load 215(compare) + 4254:6(float16_t) Load 4194(f16lodClamp) + 4255: 208(ptr) AccessChain 4184(texel) 207 + 4256:6(float16_t) Load 137(f16bias) + 4257:3092(ResType) ImageSparseSampleDrefImplicitLod 4251 4252 4253 Bias MinLod 4256 4254 + 4258:6(float16_t) CompositeExtract 4257 1 + Store 4255 4258 + 4259: 47(int) CompositeExtract 4257 0 + 4260: 284 Load 286(s2DArray) + 4261: 167(fvec3) Load 169(c3) + 4262: 52(float) Load 4187(lodClamp) + 4263:3056(ResType) ImageSparseSampleImplicitLod 4260 4261 MinLod 4262 + 4264: 7(f16vec4) CompositeExtract 4263 1 + Store 4184(texel) 4264 + 4265: 47(int) CompositeExtract 4263 0 + 4266: 284 Load 286(s2DArray) + 4267:175(f16vec3) Load 177(f16c3) + 4268:6(float16_t) Load 4194(f16lodClamp) + 4269:6(float16_t) Load 137(f16bias) + 4270:3056(ResType) ImageSparseSampleImplicitLod 4266 4267 Bias MinLod 4269 4268 + 4271: 7(f16vec4) CompositeExtract 4270 1 + Store 4184(texel) 4271 + 4272: 47(int) CompositeExtract 4270 0 + 4273: 299 Load 301(sCubeArray) + 4274: 249(fvec4) Load 251(c4) + 4275: 52(float) Load 4187(lodClamp) + 4276:3056(ResType) ImageSparseSampleImplicitLod 4273 4274 MinLod 4275 + 4277: 7(f16vec4) CompositeExtract 4276 1 + Store 4184(texel) 4277 + 4278: 47(int) CompositeExtract 4276 0 + 4279: 299 Load 301(sCubeArray) + 4280: 7(f16vec4) Load 309(f16c4) + 4281:6(float16_t) Load 4194(f16lodClamp) + 4282:6(float16_t) Load 137(f16bias) + 4283:3056(ResType) ImageSparseSampleImplicitLod 4279 4280 Bias MinLod 4282 4281 + 4284: 7(f16vec4) CompositeExtract 4283 1 + Store 4184(texel) 4284 + 4285: 47(int) CompositeExtract 4283 0 + 4286: 337 Load 339(s2DArrayShadow) + 4287: 249(fvec4) Load 251(c4) + 4288: 52(float) Load 4187(lodClamp) + 4289: 208(ptr) AccessChain 4184(texel) 207 + 4290: 52(float) CompositeExtract 4287 3 + 4291:3092(ResType) ImageSparseSampleDrefImplicitLod 4286 4287 4290 MinLod 4288 + 4292:6(float16_t) CompositeExtract 4291 1 + Store 4289 4292 + 4293: 47(int) CompositeExtract 4291 0 + 4294: 337 Load 339(s2DArrayShadow) + 4295:175(f16vec3) Load 177(f16c3) + 4296: 52(float) Load 215(compare) + 4297:6(float16_t) Load 4194(f16lodClamp) + 4298: 208(ptr) AccessChain 4184(texel) 207 + 4299:3092(ResType) ImageSparseSampleDrefImplicitLod 4294 4295 4296 MinLod 4297 + 4300:6(float16_t) CompositeExtract 4299 1 + Store 4298 4300 + 4301: 47(int) CompositeExtract 4299 0 + 4302: 391 Load 393(sCubeArrayShadow) + 4303: 249(fvec4) Load 251(c4) + 4304: 52(float) Load 215(compare) + 4305: 52(float) Load 4187(lodClamp) + 4306: 208(ptr) AccessChain 4184(texel) 207 + 4307:3092(ResType) ImageSparseSampleDrefImplicitLod 4302 4303 4304 MinLod 4305 + 4308:6(float16_t) CompositeExtract 4307 1 + Store 4306 4308 + 4309: 47(int) CompositeExtract 4307 0 + 4310: 391 Load 393(sCubeArrayShadow) + 4311: 7(f16vec4) Load 309(f16c4) + 4312: 52(float) Load 215(compare) + 4313:6(float16_t) Load 4194(f16lodClamp) + 4314: 208(ptr) AccessChain 4184(texel) 207 + 4315:3092(ResType) ImageSparseSampleDrefImplicitLod 4310 4311 4312 MinLod 4313 + 4316:6(float16_t) CompositeExtract 4315 1 + Store 4314 4316 + 4317: 47(int) CompositeExtract 4315 0 + 4318: 7(f16vec4) Load 4184(texel) + ReturnValue 4318 FunctionEnd 101(testTextureClamp(): 7(f16vec4) Function None 8 102: Label - 4445(texel): 64(ptr) Variable Function - Store 4445(texel) 121 - 4446: 123 Load 125(s1D) - 4447: 52(float) Load 128(c1) - 4448: 52(float) Load 4311(lodClamp) - 4449: 7(f16vec4) ImageSampleImplicitLod 4446 4447 MinLod 4448 - 4450: 7(f16vec4) Load 4445(texel) - 4451: 7(f16vec4) FAdd 4450 4449 - Store 4445(texel) 4451 - 4452: 123 Load 125(s1D) - 4453:6(float16_t) Load 135(f16c1) - 4454:6(float16_t) Load 4318(f16lodClamp) - 4455:6(float16_t) Load 137(f16bias) - 4456: 7(f16vec4) ImageSampleImplicitLod 4452 4453 Bias MinLod 4455 4454 - 4457: 7(f16vec4) Load 4445(texel) - 4458: 7(f16vec4) FAdd 4457 4456 - Store 4445(texel) 4458 - 4459: 143 Load 145(s2D) - 4460: 53(fvec2) Load 148(c2) - 4461: 52(float) Load 4311(lodClamp) - 4462: 7(f16vec4) ImageSampleImplicitLod 4459 4460 MinLod 4461 - 4463: 7(f16vec4) Load 4445(texel) - 4464: 7(f16vec4) FAdd 4463 4462 - Store 4445(texel) 4464 - 4465: 143 Load 145(s2D) - 4466:154(f16vec2) Load 156(f16c2) - 4467:6(float16_t) Load 4318(f16lodClamp) - 4468:6(float16_t) Load 137(f16bias) - 4469: 7(f16vec4) ImageSampleImplicitLod 4465 4466 Bias MinLod 4468 4467 - 4470: 7(f16vec4) Load 4445(texel) - 4471: 7(f16vec4) FAdd 4470 4469 - Store 4445(texel) 4471 - 4472: 163 Load 165(s3D) - 4473: 167(fvec3) Load 169(c3) - 4474: 52(float) Load 4311(lodClamp) - 4475: 7(f16vec4) ImageSampleImplicitLod 4472 4473 MinLod 4474 - 4476: 7(f16vec4) Load 4445(texel) - 4477: 7(f16vec4) FAdd 4476 4475 - Store 4445(texel) 4477 - 4478: 163 Load 165(s3D) - 4479:175(f16vec3) Load 177(f16c3) - 4480:6(float16_t) Load 4318(f16lodClamp) - 4481:6(float16_t) Load 137(f16bias) - 4482: 7(f16vec4) ImageSampleImplicitLod 4478 4479 Bias MinLod 4481 4480 - 4483: 7(f16vec4) Load 4445(texel) - 4484: 7(f16vec4) FAdd 4483 4482 - Store 4445(texel) 4484 - 4485: 184 Load 186(sCube) - 4486: 167(fvec3) Load 169(c3) - 4487: 52(float) Load 4311(lodClamp) - 4488: 7(f16vec4) ImageSampleImplicitLod 4485 4486 MinLod 4487 - 4489: 7(f16vec4) Load 4445(texel) - 4490: 7(f16vec4) FAdd 4489 4488 - Store 4445(texel) 4490 - 4491: 184 Load 186(sCube) - 4492:175(f16vec3) Load 177(f16c3) - 4493:6(float16_t) Load 4318(f16lodClamp) - 4494:6(float16_t) Load 137(f16bias) - 4495: 7(f16vec4) ImageSampleImplicitLod 4491 4492 Bias MinLod 4494 4493 - 4496: 7(f16vec4) Load 4445(texel) - 4497: 7(f16vec4) FAdd 4496 4495 - Store 4445(texel) 4497 - 4498: 199 Load 201(s1DShadow) - 4499: 167(fvec3) Load 169(c3) - 4500: 52(float) Load 4311(lodClamp) - 4501: 52(float) CompositeExtract 4499 2 - 4502:6(float16_t) ImageSampleDrefImplicitLod 4498 4499 4501 MinLod 4500 - 4503: 208(ptr) AccessChain 4445(texel) 207 + 4321(texel): 64(ptr) Variable Function + Store 4321(texel) 121 + 4322: 123 Load 125(s1D) + 4323: 52(float) Load 128(c1) + 4324: 52(float) Load 4187(lodClamp) + 4325: 7(f16vec4) ImageSampleImplicitLod 4322 4323 MinLod 4324 + 4326: 7(f16vec4) Load 4321(texel) + 4327: 7(f16vec4) FAdd 4326 4325 + Store 4321(texel) 4327 + 4328: 123 Load 125(s1D) + 4329:6(float16_t) Load 135(f16c1) + 4330:6(float16_t) Load 4194(f16lodClamp) + 4331:6(float16_t) Load 137(f16bias) + 4332: 7(f16vec4) ImageSampleImplicitLod 4328 4329 Bias MinLod 4331 4330 + 4333: 7(f16vec4) Load 4321(texel) + 4334: 7(f16vec4) FAdd 4333 4332 + Store 4321(texel) 4334 + 4335: 143 Load 145(s2D) + 4336: 53(fvec2) Load 148(c2) + 4337: 52(float) Load 4187(lodClamp) + 4338: 7(f16vec4) ImageSampleImplicitLod 4335 4336 MinLod 4337 + 4339: 7(f16vec4) Load 4321(texel) + 4340: 7(f16vec4) FAdd 4339 4338 + Store 4321(texel) 4340 + 4341: 143 Load 145(s2D) + 4342:154(f16vec2) Load 156(f16c2) + 4343:6(float16_t) Load 4194(f16lodClamp) + 4344:6(float16_t) Load 137(f16bias) + 4345: 7(f16vec4) ImageSampleImplicitLod 4341 4342 Bias MinLod 4344 4343 + 4346: 7(f16vec4) Load 4321(texel) + 4347: 7(f16vec4) FAdd 4346 4345 + Store 4321(texel) 4347 + 4348: 163 Load 165(s3D) + 4349: 167(fvec3) Load 169(c3) + 4350: 52(float) Load 4187(lodClamp) + 4351: 7(f16vec4) ImageSampleImplicitLod 4348 4349 MinLod 4350 + 4352: 7(f16vec4) Load 4321(texel) + 4353: 7(f16vec4) FAdd 4352 4351 + Store 4321(texel) 4353 + 4354: 163 Load 165(s3D) + 4355:175(f16vec3) Load 177(f16c3) + 4356:6(float16_t) Load 4194(f16lodClamp) + 4357:6(float16_t) Load 137(f16bias) + 4358: 7(f16vec4) ImageSampleImplicitLod 4354 4355 Bias MinLod 4357 4356 + 4359: 7(f16vec4) Load 4321(texel) + 4360: 7(f16vec4) FAdd 4359 4358 + Store 4321(texel) 4360 + 4361: 184 Load 186(sCube) + 4362: 167(fvec3) Load 169(c3) + 4363: 52(float) Load 4187(lodClamp) + 4364: 7(f16vec4) ImageSampleImplicitLod 4361 4362 MinLod 4363 + 4365: 7(f16vec4) Load 4321(texel) + 4366: 7(f16vec4) FAdd 4365 4364 + Store 4321(texel) 4366 + 4367: 184 Load 186(sCube) + 4368:175(f16vec3) Load 177(f16c3) + 4369:6(float16_t) Load 4194(f16lodClamp) + 4370:6(float16_t) Load 137(f16bias) + 4371: 7(f16vec4) ImageSampleImplicitLod 4367 4368 Bias MinLod 4370 4369 + 4372: 7(f16vec4) Load 4321(texel) + 4373: 7(f16vec4) FAdd 4372 4371 + Store 4321(texel) 4373 + 4374: 199 Load 201(s1DShadow) + 4375: 167(fvec3) Load 169(c3) + 4376: 52(float) Load 4187(lodClamp) + 4377: 52(float) CompositeExtract 4375 2 + 4378:6(float16_t) ImageSampleDrefImplicitLod 4374 4375 4377 MinLod 4376 + 4379: 208(ptr) AccessChain 4321(texel) 207 + 4380:6(float16_t) Load 4379 + 4381:6(float16_t) FAdd 4380 4378 + 4382: 208(ptr) AccessChain 4321(texel) 207 + Store 4382 4381 + 4383: 199 Load 201(s1DShadow) + 4384:154(f16vec2) Load 156(f16c2) + 4385: 52(float) Load 215(compare) + 4386:6(float16_t) Load 4194(f16lodClamp) + 4387:6(float16_t) Load 137(f16bias) + 4388:6(float16_t) ImageSampleDrefImplicitLod 4383 4384 4385 Bias MinLod 4387 4386 + 4389: 208(ptr) AccessChain 4321(texel) 207 + 4390:6(float16_t) Load 4389 + 4391:6(float16_t) FAdd 4390 4388 + 4392: 208(ptr) AccessChain 4321(texel) 207 + Store 4392 4391 + 4393: 224 Load 226(s2DShadow) + 4394: 167(fvec3) Load 169(c3) + 4395: 52(float) Load 4187(lodClamp) + 4396: 52(float) CompositeExtract 4394 2 + 4397:6(float16_t) ImageSampleDrefImplicitLod 4393 4394 4396 MinLod 4395 + 4398: 208(ptr) AccessChain 4321(texel) 207 + 4399:6(float16_t) Load 4398 + 4400:6(float16_t) FAdd 4399 4397 + 4401: 208(ptr) AccessChain 4321(texel) 207 + Store 4401 4400 + 4402: 224 Load 226(s2DShadow) + 4403:154(f16vec2) Load 156(f16c2) + 4404: 52(float) Load 215(compare) + 4405:6(float16_t) Load 4194(f16lodClamp) + 4406:6(float16_t) Load 137(f16bias) + 4407:6(float16_t) ImageSampleDrefImplicitLod 4402 4403 4404 Bias MinLod 4406 4405 + 4408: 208(ptr) AccessChain 4321(texel) 207 + 4409:6(float16_t) Load 4408 + 4410:6(float16_t) FAdd 4409 4407 + 4411: 208(ptr) AccessChain 4321(texel) 207 + Store 4411 4410 + 4412: 245 Load 247(sCubeShadow) + 4413: 249(fvec4) Load 251(c4) + 4414: 52(float) Load 4187(lodClamp) + 4415: 52(float) CompositeExtract 4413 3 + 4416:6(float16_t) ImageSampleDrefImplicitLod 4412 4413 4415 MinLod 4414 + 4417: 208(ptr) AccessChain 4321(texel) 207 + 4418:6(float16_t) Load 4417 + 4419:6(float16_t) FAdd 4418 4416 + 4420: 208(ptr) AccessChain 4321(texel) 207 + Store 4420 4419 + 4421: 245 Load 247(sCubeShadow) + 4422:175(f16vec3) Load 177(f16c3) + 4423: 52(float) Load 215(compare) + 4424:6(float16_t) Load 4194(f16lodClamp) + 4425:6(float16_t) Load 137(f16bias) + 4426:6(float16_t) ImageSampleDrefImplicitLod 4421 4422 4423 Bias MinLod 4425 4424 + 4427: 208(ptr) AccessChain 4321(texel) 207 + 4428:6(float16_t) Load 4427 + 4429:6(float16_t) FAdd 4428 4426 + 4430: 208(ptr) AccessChain 4321(texel) 207 + Store 4430 4429 + 4431: 269 Load 271(s1DArray) + 4432: 53(fvec2) Load 148(c2) + 4433: 52(float) Load 4187(lodClamp) + 4434: 7(f16vec4) ImageSampleImplicitLod 4431 4432 MinLod 4433 + 4435: 7(f16vec4) Load 4321(texel) + 4436: 7(f16vec4) FAdd 4435 4434 + Store 4321(texel) 4436 + 4437: 269 Load 271(s1DArray) + 4438:154(f16vec2) Load 156(f16c2) + 4439:6(float16_t) Load 4194(f16lodClamp) + 4440:6(float16_t) Load 137(f16bias) + 4441: 7(f16vec4) ImageSampleImplicitLod 4437 4438 Bias MinLod 4440 4439 + 4442: 7(f16vec4) Load 4321(texel) + 4443: 7(f16vec4) FAdd 4442 4441 + Store 4321(texel) 4443 + 4444: 284 Load 286(s2DArray) + 4445: 167(fvec3) Load 169(c3) + 4446: 52(float) Load 4187(lodClamp) + 4447: 7(f16vec4) ImageSampleImplicitLod 4444 4445 MinLod 4446 + 4448: 7(f16vec4) Load 4321(texel) + 4449: 7(f16vec4) FAdd 4448 4447 + Store 4321(texel) 4449 + 4450: 284 Load 286(s2DArray) + 4451:175(f16vec3) Load 177(f16c3) + 4452:6(float16_t) Load 4194(f16lodClamp) + 4453:6(float16_t) Load 137(f16bias) + 4454: 7(f16vec4) ImageSampleImplicitLod 4450 4451 Bias MinLod 4453 4452 + 4455: 7(f16vec4) Load 4321(texel) + 4456: 7(f16vec4) FAdd 4455 4454 + Store 4321(texel) 4456 + 4457: 299 Load 301(sCubeArray) + 4458: 249(fvec4) Load 251(c4) + 4459: 52(float) Load 4187(lodClamp) + 4460: 7(f16vec4) ImageSampleImplicitLod 4457 4458 MinLod 4459 + 4461: 7(f16vec4) Load 4321(texel) + 4462: 7(f16vec4) FAdd 4461 4460 + Store 4321(texel) 4462 + 4463: 299 Load 301(sCubeArray) + 4464: 7(f16vec4) Load 309(f16c4) + 4465:6(float16_t) Load 4194(f16lodClamp) + 4466:6(float16_t) Load 137(f16bias) + 4467: 7(f16vec4) ImageSampleImplicitLod 4463 4464 Bias MinLod 4466 4465 + 4468: 7(f16vec4) Load 4321(texel) + 4469: 7(f16vec4) FAdd 4468 4467 + Store 4321(texel) 4469 + 4470: 316 Load 318(s1DArrayShadow) + 4471: 167(fvec3) Load 169(c3) + 4472: 52(float) Load 4187(lodClamp) + 4473: 52(float) CompositeExtract 4471 2 + 4474:6(float16_t) ImageSampleDrefImplicitLod 4470 4471 4473 MinLod 4472 + 4475: 208(ptr) AccessChain 4321(texel) 207 + 4476:6(float16_t) Load 4475 + 4477:6(float16_t) FAdd 4476 4474 + 4478: 208(ptr) AccessChain 4321(texel) 207 + Store 4478 4477 + 4479: 316 Load 318(s1DArrayShadow) + 4480:154(f16vec2) Load 156(f16c2) + 4481: 52(float) Load 215(compare) + 4482:6(float16_t) Load 4194(f16lodClamp) + 4483:6(float16_t) Load 137(f16bias) + 4484:6(float16_t) ImageSampleDrefImplicitLod 4479 4480 4481 Bias MinLod 4483 4482 + 4485: 208(ptr) AccessChain 4321(texel) 207 + 4486:6(float16_t) Load 4485 + 4487:6(float16_t) FAdd 4486 4484 + 4488: 208(ptr) AccessChain 4321(texel) 207 + Store 4488 4487 + 4489: 337 Load 339(s2DArrayShadow) + 4490: 249(fvec4) Load 251(c4) + 4491: 52(float) Load 4187(lodClamp) + 4492: 52(float) CompositeExtract 4490 3 + 4493:6(float16_t) ImageSampleDrefImplicitLod 4489 4490 4492 MinLod 4491 + 4494: 208(ptr) AccessChain 4321(texel) 207 + 4495:6(float16_t) Load 4494 + 4496:6(float16_t) FAdd 4495 4493 + 4497: 208(ptr) AccessChain 4321(texel) 207 + Store 4497 4496 + 4498: 337 Load 339(s2DArrayShadow) + 4499:175(f16vec3) Load 177(f16c3) + 4500: 52(float) Load 215(compare) + 4501:6(float16_t) Load 4194(f16lodClamp) + 4502:6(float16_t) ImageSampleDrefImplicitLod 4498 4499 4500 MinLod 4501 + 4503: 208(ptr) AccessChain 4321(texel) 207 4504:6(float16_t) Load 4503 4505:6(float16_t) FAdd 4504 4502 - 4506: 208(ptr) AccessChain 4445(texel) 207 + 4506: 208(ptr) AccessChain 4321(texel) 207 Store 4506 4505 - 4507: 199 Load 201(s1DShadow) - 4508:154(f16vec2) Load 156(f16c2) + 4507: 391 Load 393(sCubeArrayShadow) + 4508: 249(fvec4) Load 251(c4) 4509: 52(float) Load 215(compare) - 4510:6(float16_t) Load 4318(f16lodClamp) - 4511:6(float16_t) Load 137(f16bias) - 4512:6(float16_t) ImageSampleDrefImplicitLod 4507 4508 4509 Bias MinLod 4511 4510 - 4513: 208(ptr) AccessChain 4445(texel) 207 - 4514:6(float16_t) Load 4513 - 4515:6(float16_t) FAdd 4514 4512 - 4516: 208(ptr) AccessChain 4445(texel) 207 - Store 4516 4515 - 4517: 224 Load 226(s2DShadow) - 4518: 167(fvec3) Load 169(c3) - 4519: 52(float) Load 4311(lodClamp) - 4520: 52(float) CompositeExtract 4518 2 - 4521:6(float16_t) ImageSampleDrefImplicitLod 4517 4518 4520 MinLod 4519 - 4522: 208(ptr) AccessChain 4445(texel) 207 - 4523:6(float16_t) Load 4522 - 4524:6(float16_t) FAdd 4523 4521 - 4525: 208(ptr) AccessChain 4445(texel) 207 - Store 4525 4524 - 4526: 224 Load 226(s2DShadow) - 4527:154(f16vec2) Load 156(f16c2) - 4528: 52(float) Load 215(compare) - 4529:6(float16_t) Load 4318(f16lodClamp) - 4530:6(float16_t) Load 137(f16bias) - 4531:6(float16_t) ImageSampleDrefImplicitLod 4526 4527 4528 Bias MinLod 4530 4529 - 4532: 208(ptr) AccessChain 4445(texel) 207 - 4533:6(float16_t) Load 4532 - 4534:6(float16_t) FAdd 4533 4531 - 4535: 208(ptr) AccessChain 4445(texel) 207 - Store 4535 4534 - 4536: 245 Load 247(sCubeShadow) - 4537: 249(fvec4) Load 251(c4) - 4538: 52(float) Load 4311(lodClamp) - 4539: 52(float) CompositeExtract 4537 3 - 4540:6(float16_t) ImageSampleDrefImplicitLod 4536 4537 4539 MinLod 4538 - 4541: 208(ptr) AccessChain 4445(texel) 207 - 4542:6(float16_t) Load 4541 - 4543:6(float16_t) FAdd 4542 4540 - 4544: 208(ptr) AccessChain 4445(texel) 207 - Store 4544 4543 - 4545: 245 Load 247(sCubeShadow) - 4546:175(f16vec3) Load 177(f16c3) - 4547: 52(float) Load 215(compare) - 4548:6(float16_t) Load 4318(f16lodClamp) - 4549:6(float16_t) Load 137(f16bias) - 4550:6(float16_t) ImageSampleDrefImplicitLod 4545 4546 4547 Bias MinLod 4549 4548 - 4551: 208(ptr) AccessChain 4445(texel) 207 - 4552:6(float16_t) Load 4551 - 4553:6(float16_t) FAdd 4552 4550 - 4554: 208(ptr) AccessChain 4445(texel) 207 - Store 4554 4553 - 4555: 269 Load 271(s1DArray) - 4556: 53(fvec2) Load 148(c2) - 4557: 52(float) Load 4311(lodClamp) - 4558: 7(f16vec4) ImageSampleImplicitLod 4555 4556 MinLod 4557 - 4559: 7(f16vec4) Load 4445(texel) - 4560: 7(f16vec4) FAdd 4559 4558 - Store 4445(texel) 4560 - 4561: 269 Load 271(s1DArray) - 4562:154(f16vec2) Load 156(f16c2) - 4563:6(float16_t) Load 4318(f16lodClamp) - 4564:6(float16_t) Load 137(f16bias) - 4565: 7(f16vec4) ImageSampleImplicitLod 4561 4562 Bias MinLod 4564 4563 - 4566: 7(f16vec4) Load 4445(texel) - 4567: 7(f16vec4) FAdd 4566 4565 - Store 4445(texel) 4567 - 4568: 284 Load 286(s2DArray) - 4569: 167(fvec3) Load 169(c3) - 4570: 52(float) Load 4311(lodClamp) - 4571: 7(f16vec4) ImageSampleImplicitLod 4568 4569 MinLod 4570 - 4572: 7(f16vec4) Load 4445(texel) - 4573: 7(f16vec4) FAdd 4572 4571 - Store 4445(texel) 4573 - 4574: 284 Load 286(s2DArray) - 4575:175(f16vec3) Load 177(f16c3) - 4576:6(float16_t) Load 4318(f16lodClamp) - 4577:6(float16_t) Load 137(f16bias) - 4578: 7(f16vec4) ImageSampleImplicitLod 4574 4575 Bias MinLod 4577 4576 - 4579: 7(f16vec4) Load 4445(texel) - 4580: 7(f16vec4) FAdd 4579 4578 - Store 4445(texel) 4580 - 4581: 299 Load 301(sCubeArray) - 4582: 249(fvec4) Load 251(c4) - 4583: 52(float) Load 4311(lodClamp) - 4584: 7(f16vec4) ImageSampleImplicitLod 4581 4582 MinLod 4583 - 4585: 7(f16vec4) Load 4445(texel) - 4586: 7(f16vec4) FAdd 4585 4584 - Store 4445(texel) 4586 - 4587: 299 Load 301(sCubeArray) - 4588: 7(f16vec4) Load 309(f16c4) - 4589:6(float16_t) Load 4318(f16lodClamp) - 4590:6(float16_t) Load 137(f16bias) - 4591: 7(f16vec4) ImageSampleImplicitLod 4587 4588 Bias MinLod 4590 4589 - 4592: 7(f16vec4) Load 4445(texel) - 4593: 7(f16vec4) FAdd 4592 4591 - Store 4445(texel) 4593 - 4594: 316 Load 318(s1DArrayShadow) - 4595: 167(fvec3) Load 169(c3) - 4596: 52(float) Load 4311(lodClamp) - 4597: 52(float) CompositeExtract 4595 2 - 4598:6(float16_t) ImageSampleDrefImplicitLod 4594 4595 4597 MinLod 4596 - 4599: 208(ptr) AccessChain 4445(texel) 207 - 4600:6(float16_t) Load 4599 - 4601:6(float16_t) FAdd 4600 4598 - 4602: 208(ptr) AccessChain 4445(texel) 207 - Store 4602 4601 - 4603: 316 Load 318(s1DArrayShadow) - 4604:154(f16vec2) Load 156(f16c2) - 4605: 52(float) Load 215(compare) - 4606:6(float16_t) Load 4318(f16lodClamp) - 4607:6(float16_t) Load 137(f16bias) - 4608:6(float16_t) ImageSampleDrefImplicitLod 4603 4604 4605 Bias MinLod 4607 4606 - 4609: 208(ptr) AccessChain 4445(texel) 207 - 4610:6(float16_t) Load 4609 - 4611:6(float16_t) FAdd 4610 4608 - 4612: 208(ptr) AccessChain 4445(texel) 207 - Store 4612 4611 - 4613: 337 Load 339(s2DArrayShadow) - 4614: 249(fvec4) Load 251(c4) - 4615: 52(float) Load 4311(lodClamp) - 4616: 52(float) CompositeExtract 4614 3 - 4617:6(float16_t) ImageSampleDrefImplicitLod 4613 4614 4616 MinLod 4615 - 4618: 208(ptr) AccessChain 4445(texel) 207 - 4619:6(float16_t) Load 4618 - 4620:6(float16_t) FAdd 4619 4617 - 4621: 208(ptr) AccessChain 4445(texel) 207 - Store 4621 4620 - 4622: 337 Load 339(s2DArrayShadow) - 4623:175(f16vec3) Load 177(f16c3) - 4624: 52(float) Load 215(compare) - 4625:6(float16_t) Load 4318(f16lodClamp) - 4626:6(float16_t) ImageSampleDrefImplicitLod 4622 4623 4624 MinLod 4625 - 4627: 208(ptr) AccessChain 4445(texel) 207 - 4628:6(float16_t) Load 4627 - 4629:6(float16_t) FAdd 4628 4626 - 4630: 208(ptr) AccessChain 4445(texel) 207 - Store 4630 4629 - 4631: 391 Load 393(sCubeArrayShadow) - 4632: 249(fvec4) Load 251(c4) - 4633: 52(float) Load 215(compare) - 4634: 52(float) Load 4311(lodClamp) - 4635:6(float16_t) ImageSampleDrefImplicitLod 4631 4632 4633 MinLod 4634 - 4636: 208(ptr) AccessChain 4445(texel) 207 - 4637:6(float16_t) Load 4636 - 4638:6(float16_t) FAdd 4637 4635 - 4639: 208(ptr) AccessChain 4445(texel) 207 - Store 4639 4638 - 4640: 391 Load 393(sCubeArrayShadow) - 4641: 7(f16vec4) Load 309(f16c4) - 4642: 52(float) Load 215(compare) - 4643:6(float16_t) Load 4318(f16lodClamp) - 4644:6(float16_t) ImageSampleDrefImplicitLod 4640 4641 4642 MinLod 4643 - 4645: 208(ptr) AccessChain 4445(texel) 207 - 4646:6(float16_t) Load 4645 - 4647:6(float16_t) FAdd 4646 4644 - 4648: 208(ptr) AccessChain 4445(texel) 207 - Store 4648 4647 - 4649: 7(f16vec4) Load 4445(texel) - ReturnValue 4649 + 4510: 52(float) Load 4187(lodClamp) + 4511:6(float16_t) ImageSampleDrefImplicitLod 4507 4508 4509 MinLod 4510 + 4512: 208(ptr) AccessChain 4321(texel) 207 + 4513:6(float16_t) Load 4512 + 4514:6(float16_t) FAdd 4513 4511 + 4515: 208(ptr) AccessChain 4321(texel) 207 + Store 4515 4514 + 4516: 391 Load 393(sCubeArrayShadow) + 4517: 7(f16vec4) Load 309(f16c4) + 4518: 52(float) Load 215(compare) + 4519:6(float16_t) Load 4194(f16lodClamp) + 4520:6(float16_t) ImageSampleDrefImplicitLod 4516 4517 4518 MinLod 4519 + 4521: 208(ptr) AccessChain 4321(texel) 207 + 4522:6(float16_t) Load 4521 + 4523:6(float16_t) FAdd 4522 4520 + 4524: 208(ptr) AccessChain 4321(texel) 207 + Store 4524 4523 + 4525: 7(f16vec4) Load 4321(texel) + ReturnValue 4525 FunctionEnd 103(testSparseTextureOffsetClamp(): 7(f16vec4) Function None 8 104: Label - 4652(texel): 64(ptr) Variable Function - Store 4652(texel) 121 - 4653: 143 Load 145(s2D) - 4654: 53(fvec2) Load 148(c2) - 4655: 52(float) Load 4311(lodClamp) - 4656:3146(ResType) ImageSparseSampleImplicitLod 4653 4654 ConstOffset MinLod 722 4655 - 4657: 7(f16vec4) CompositeExtract 4656 1 - Store 4652(texel) 4657 - 4658: 47(int) CompositeExtract 4656 0 - 4659: 143 Load 145(s2D) - 4660:154(f16vec2) Load 156(f16c2) - 4661:6(float16_t) Load 4318(f16lodClamp) - 4662:6(float16_t) Load 137(f16bias) - 4663:3146(ResType) ImageSparseSampleImplicitLod 4659 4660 Bias ConstOffset MinLod 4662 722 4661 - 4664: 7(f16vec4) CompositeExtract 4663 1 - Store 4652(texel) 4664 - 4665: 47(int) CompositeExtract 4663 0 - 4666: 163 Load 165(s3D) - 4667: 167(fvec3) Load 169(c3) - 4668: 52(float) Load 4311(lodClamp) - 4669:3146(ResType) ImageSparseSampleImplicitLod 4666 4667 ConstOffset MinLod 735 4668 - 4670: 7(f16vec4) CompositeExtract 4669 1 - Store 4652(texel) 4670 - 4671: 47(int) CompositeExtract 4669 0 - 4672: 163 Load 165(s3D) - 4673:175(f16vec3) Load 177(f16c3) - 4674:6(float16_t) Load 4318(f16lodClamp) - 4675:6(float16_t) Load 137(f16bias) - 4676:3146(ResType) ImageSparseSampleImplicitLod 4672 4673 Bias ConstOffset MinLod 4675 735 4674 - 4677: 7(f16vec4) CompositeExtract 4676 1 - Store 4652(texel) 4677 - 4678: 47(int) CompositeExtract 4676 0 - 4679: 224 Load 226(s2DShadow) - 4680: 167(fvec3) Load 169(c3) - 4681: 52(float) Load 4311(lodClamp) - 4682: 208(ptr) AccessChain 4652(texel) 207 - 4683: 52(float) CompositeExtract 4680 2 - 4684:3182(ResType) ImageSparseSampleDrefImplicitLod 4679 4680 4683 ConstOffset MinLod 722 4681 - 4685:6(float16_t) CompositeExtract 4684 1 - Store 4682 4685 - 4686: 47(int) CompositeExtract 4684 0 - 4687: 224 Load 226(s2DShadow) - 4688:154(f16vec2) Load 156(f16c2) - 4689: 52(float) Load 215(compare) - 4690:6(float16_t) Load 4318(f16lodClamp) - 4691: 208(ptr) AccessChain 4652(texel) 207 - 4692:6(float16_t) Load 137(f16bias) - 4693:3182(ResType) ImageSparseSampleDrefImplicitLod 4687 4688 4689 Bias ConstOffset MinLod 4692 722 4690 - 4694:6(float16_t) CompositeExtract 4693 1 - Store 4691 4694 - 4695: 47(int) CompositeExtract 4693 0 - 4696: 284 Load 286(s2DArray) - 4697: 167(fvec3) Load 169(c3) - 4698: 52(float) Load 4311(lodClamp) - 4699:3146(ResType) ImageSparseSampleImplicitLod 4696 4697 ConstOffset MinLod 722 4698 - 4700: 7(f16vec4) CompositeExtract 4699 1 - Store 4652(texel) 4700 - 4701: 47(int) CompositeExtract 4699 0 - 4702: 284 Load 286(s2DArray) - 4703:175(f16vec3) Load 177(f16c3) - 4704:6(float16_t) Load 4318(f16lodClamp) - 4705:6(float16_t) Load 137(f16bias) - 4706:3146(ResType) ImageSparseSampleImplicitLod 4702 4703 Bias ConstOffset MinLod 4705 722 4704 - 4707: 7(f16vec4) CompositeExtract 4706 1 - Store 4652(texel) 4707 - 4708: 47(int) CompositeExtract 4706 0 - 4709: 337 Load 339(s2DArrayShadow) - 4710: 249(fvec4) Load 251(c4) - 4711: 52(float) Load 4311(lodClamp) - 4712: 208(ptr) AccessChain 4652(texel) 207 - 4713: 52(float) CompositeExtract 4710 3 - 4714:3182(ResType) ImageSparseSampleDrefImplicitLod 4709 4710 4713 ConstOffset MinLod 722 4711 - 4715:6(float16_t) CompositeExtract 4714 1 - Store 4712 4715 - 4716: 47(int) CompositeExtract 4714 0 - 4717: 337 Load 339(s2DArrayShadow) - 4718:175(f16vec3) Load 177(f16c3) - 4719: 52(float) Load 215(compare) - 4720:6(float16_t) Load 4318(f16lodClamp) - 4721: 208(ptr) AccessChain 4652(texel) 207 - 4722:3182(ResType) ImageSparseSampleDrefImplicitLod 4717 4718 4719 ConstOffset MinLod 722 4720 - 4723:6(float16_t) CompositeExtract 4722 1 - Store 4721 4723 - 4724: 47(int) CompositeExtract 4722 0 - 4725: 7(f16vec4) Load 4652(texel) - ReturnValue 4725 + 4528(texel): 64(ptr) Variable Function + Store 4528(texel) 121 + 4529: 143 Load 145(s2D) + 4530: 53(fvec2) Load 148(c2) + 4531: 52(float) Load 4187(lodClamp) + 4532:3056(ResType) ImageSparseSampleImplicitLod 4529 4530 ConstOffset MinLod 722 4531 + 4533: 7(f16vec4) CompositeExtract 4532 1 + Store 4528(texel) 4533 + 4534: 47(int) CompositeExtract 4532 0 + 4535: 143 Load 145(s2D) + 4536:154(f16vec2) Load 156(f16c2) + 4537:6(float16_t) Load 4194(f16lodClamp) + 4538:6(float16_t) Load 137(f16bias) + 4539:3056(ResType) ImageSparseSampleImplicitLod 4535 4536 Bias ConstOffset MinLod 4538 722 4537 + 4540: 7(f16vec4) CompositeExtract 4539 1 + Store 4528(texel) 4540 + 4541: 47(int) CompositeExtract 4539 0 + 4542: 163 Load 165(s3D) + 4543: 167(fvec3) Load 169(c3) + 4544: 52(float) Load 4187(lodClamp) + 4545:3056(ResType) ImageSparseSampleImplicitLod 4542 4543 ConstOffset MinLod 735 4544 + 4546: 7(f16vec4) CompositeExtract 4545 1 + Store 4528(texel) 4546 + 4547: 47(int) CompositeExtract 4545 0 + 4548: 163 Load 165(s3D) + 4549:175(f16vec3) Load 177(f16c3) + 4550:6(float16_t) Load 4194(f16lodClamp) + 4551:6(float16_t) Load 137(f16bias) + 4552:3056(ResType) ImageSparseSampleImplicitLod 4548 4549 Bias ConstOffset MinLod 4551 735 4550 + 4553: 7(f16vec4) CompositeExtract 4552 1 + Store 4528(texel) 4553 + 4554: 47(int) CompositeExtract 4552 0 + 4555: 224 Load 226(s2DShadow) + 4556: 167(fvec3) Load 169(c3) + 4557: 52(float) Load 4187(lodClamp) + 4558: 208(ptr) AccessChain 4528(texel) 207 + 4559: 52(float) CompositeExtract 4556 2 + 4560:3092(ResType) ImageSparseSampleDrefImplicitLod 4555 4556 4559 ConstOffset MinLod 722 4557 + 4561:6(float16_t) CompositeExtract 4560 1 + Store 4558 4561 + 4562: 47(int) CompositeExtract 4560 0 + 4563: 224 Load 226(s2DShadow) + 4564:154(f16vec2) Load 156(f16c2) + 4565: 52(float) Load 215(compare) + 4566:6(float16_t) Load 4194(f16lodClamp) + 4567: 208(ptr) AccessChain 4528(texel) 207 + 4568:6(float16_t) Load 137(f16bias) + 4569:3092(ResType) ImageSparseSampleDrefImplicitLod 4563 4564 4565 Bias ConstOffset MinLod 4568 722 4566 + 4570:6(float16_t) CompositeExtract 4569 1 + Store 4567 4570 + 4571: 47(int) CompositeExtract 4569 0 + 4572: 284 Load 286(s2DArray) + 4573: 167(fvec3) Load 169(c3) + 4574: 52(float) Load 4187(lodClamp) + 4575:3056(ResType) ImageSparseSampleImplicitLod 4572 4573 ConstOffset MinLod 722 4574 + 4576: 7(f16vec4) CompositeExtract 4575 1 + Store 4528(texel) 4576 + 4577: 47(int) CompositeExtract 4575 0 + 4578: 284 Load 286(s2DArray) + 4579:175(f16vec3) Load 177(f16c3) + 4580:6(float16_t) Load 4194(f16lodClamp) + 4581:6(float16_t) Load 137(f16bias) + 4582:3056(ResType) ImageSparseSampleImplicitLod 4578 4579 Bias ConstOffset MinLod 4581 722 4580 + 4583: 7(f16vec4) CompositeExtract 4582 1 + Store 4528(texel) 4583 + 4584: 47(int) CompositeExtract 4582 0 + 4585: 337 Load 339(s2DArrayShadow) + 4586: 249(fvec4) Load 251(c4) + 4587: 52(float) Load 4187(lodClamp) + 4588: 208(ptr) AccessChain 4528(texel) 207 + 4589: 52(float) CompositeExtract 4586 3 + 4590:3092(ResType) ImageSparseSampleDrefImplicitLod 4585 4586 4589 ConstOffset MinLod 722 4587 + 4591:6(float16_t) CompositeExtract 4590 1 + Store 4588 4591 + 4592: 47(int) CompositeExtract 4590 0 + 4593: 337 Load 339(s2DArrayShadow) + 4594:175(f16vec3) Load 177(f16c3) + 4595: 52(float) Load 215(compare) + 4596:6(float16_t) Load 4194(f16lodClamp) + 4597: 208(ptr) AccessChain 4528(texel) 207 + 4598:3092(ResType) ImageSparseSampleDrefImplicitLod 4593 4594 4595 ConstOffset MinLod 722 4596 + 4599:6(float16_t) CompositeExtract 4598 1 + Store 4597 4599 + 4600: 47(int) CompositeExtract 4598 0 + 4601: 7(f16vec4) Load 4528(texel) + ReturnValue 4601 FunctionEnd 105(testTextureOffsetClamp(): 7(f16vec4) Function None 8 106: Label - 4728(texel): 64(ptr) Variable Function - Store 4728(texel) 121 - 4729: 123 Load 125(s1D) - 4730: 52(float) Load 128(c1) - 4731: 52(float) Load 4311(lodClamp) - 4732: 7(f16vec4) ImageSampleImplicitLod 4729 4730 ConstOffset MinLod 709 4731 - 4733: 7(f16vec4) Load 4728(texel) - 4734: 7(f16vec4) FAdd 4733 4732 - Store 4728(texel) 4734 - 4735: 123 Load 125(s1D) - 4736:6(float16_t) Load 135(f16c1) - 4737:6(float16_t) Load 4318(f16lodClamp) - 4738:6(float16_t) Load 137(f16bias) - 4739: 7(f16vec4) ImageSampleImplicitLod 4735 4736 Bias ConstOffset MinLod 4738 709 4737 - 4740: 7(f16vec4) Load 4728(texel) - 4741: 7(f16vec4) FAdd 4740 4739 - Store 4728(texel) 4741 - 4742: 143 Load 145(s2D) - 4743: 53(fvec2) Load 148(c2) - 4744: 52(float) Load 4311(lodClamp) - 4745: 7(f16vec4) ImageSampleImplicitLod 4742 4743 ConstOffset MinLod 722 4744 - 4746: 7(f16vec4) Load 4728(texel) - 4747: 7(f16vec4) FAdd 4746 4745 - Store 4728(texel) 4747 - 4748: 143 Load 145(s2D) - 4749:154(f16vec2) Load 156(f16c2) - 4750:6(float16_t) Load 4318(f16lodClamp) - 4751:6(float16_t) Load 137(f16bias) - 4752: 7(f16vec4) ImageSampleImplicitLod 4748 4749 Bias ConstOffset MinLod 4751 722 4750 - 4753: 7(f16vec4) Load 4728(texel) - 4754: 7(f16vec4) FAdd 4753 4752 - Store 4728(texel) 4754 - 4755: 163 Load 165(s3D) - 4756: 167(fvec3) Load 169(c3) - 4757: 52(float) Load 4311(lodClamp) - 4758: 7(f16vec4) ImageSampleImplicitLod 4755 4756 ConstOffset MinLod 735 4757 - 4759: 7(f16vec4) Load 4728(texel) - 4760: 7(f16vec4) FAdd 4759 4758 - Store 4728(texel) 4760 - 4761: 163 Load 165(s3D) - 4762:175(f16vec3) Load 177(f16c3) - 4763:6(float16_t) Load 4318(f16lodClamp) - 4764:6(float16_t) Load 137(f16bias) - 4765: 7(f16vec4) ImageSampleImplicitLod 4761 4762 Bias ConstOffset MinLod 4764 735 4763 - 4766: 7(f16vec4) Load 4728(texel) - 4767: 7(f16vec4) FAdd 4766 4765 - Store 4728(texel) 4767 - 4768: 199 Load 201(s1DShadow) - 4769: 167(fvec3) Load 169(c3) - 4770: 52(float) Load 4311(lodClamp) - 4771: 52(float) CompositeExtract 4769 2 - 4772:6(float16_t) ImageSampleDrefImplicitLod 4768 4769 4771 ConstOffset MinLod 709 4770 - 4773: 208(ptr) AccessChain 4728(texel) 207 - 4774:6(float16_t) Load 4773 - 4775:6(float16_t) FAdd 4774 4772 - 4776: 208(ptr) AccessChain 4728(texel) 207 - Store 4776 4775 - 4777: 199 Load 201(s1DShadow) - 4778:154(f16vec2) Load 156(f16c2) - 4779: 52(float) Load 215(compare) - 4780:6(float16_t) Load 4318(f16lodClamp) - 4781:6(float16_t) Load 137(f16bias) - 4782:6(float16_t) ImageSampleDrefImplicitLod 4777 4778 4779 Bias ConstOffset MinLod 4781 709 4780 - 4783: 208(ptr) AccessChain 4728(texel) 207 - 4784:6(float16_t) Load 4783 - 4785:6(float16_t) FAdd 4784 4782 - 4786: 208(ptr) AccessChain 4728(texel) 207 - Store 4786 4785 - 4787: 224 Load 226(s2DShadow) - 4788: 167(fvec3) Load 169(c3) - 4789: 52(float) Load 4311(lodClamp) - 4790: 52(float) CompositeExtract 4788 2 - 4791:6(float16_t) ImageSampleDrefImplicitLod 4787 4788 4790 ConstOffset MinLod 722 4789 - 4792: 208(ptr) AccessChain 4728(texel) 207 - 4793:6(float16_t) Load 4792 - 4794:6(float16_t) FAdd 4793 4791 - 4795: 208(ptr) AccessChain 4728(texel) 207 - Store 4795 4794 - 4796: 224 Load 226(s2DShadow) - 4797:154(f16vec2) Load 156(f16c2) - 4798: 52(float) Load 215(compare) - 4799:6(float16_t) Load 4318(f16lodClamp) - 4800:6(float16_t) Load 137(f16bias) - 4801:6(float16_t) ImageSampleDrefImplicitLod 4796 4797 4798 Bias ConstOffset MinLod 4800 722 4799 - 4802: 208(ptr) AccessChain 4728(texel) 207 - 4803:6(float16_t) Load 4802 - 4804:6(float16_t) FAdd 4803 4801 - 4805: 208(ptr) AccessChain 4728(texel) 207 - Store 4805 4804 - 4806: 269 Load 271(s1DArray) - 4807: 53(fvec2) Load 148(c2) - 4808: 52(float) Load 4311(lodClamp) - 4809: 7(f16vec4) ImageSampleImplicitLod 4806 4807 ConstOffset MinLod 709 4808 - 4810: 7(f16vec4) Load 4728(texel) - 4811: 7(f16vec4) FAdd 4810 4809 - Store 4728(texel) 4811 - 4812: 269 Load 271(s1DArray) - 4813:154(f16vec2) Load 156(f16c2) - 4814:6(float16_t) Load 4318(f16lodClamp) - 4815:6(float16_t) Load 137(f16bias) - 4816: 7(f16vec4) ImageSampleImplicitLod 4812 4813 Bias ConstOffset MinLod 4815 709 4814 - 4817: 7(f16vec4) Load 4728(texel) - 4818: 7(f16vec4) FAdd 4817 4816 - Store 4728(texel) 4818 - 4819: 284 Load 286(s2DArray) - 4820: 167(fvec3) Load 169(c3) - 4821: 52(float) Load 4311(lodClamp) - 4822: 7(f16vec4) ImageSampleImplicitLod 4819 4820 ConstOffset MinLod 722 4821 - 4823: 7(f16vec4) Load 4728(texel) - 4824: 7(f16vec4) FAdd 4823 4822 - Store 4728(texel) 4824 - 4825: 284 Load 286(s2DArray) - 4826:175(f16vec3) Load 177(f16c3) - 4827:6(float16_t) Load 4318(f16lodClamp) - 4828:6(float16_t) Load 137(f16bias) - 4829: 7(f16vec4) ImageSampleImplicitLod 4825 4826 Bias ConstOffset MinLod 4828 722 4827 - 4830: 7(f16vec4) Load 4728(texel) - 4831: 7(f16vec4) FAdd 4830 4829 - Store 4728(texel) 4831 - 4832: 316 Load 318(s1DArrayShadow) - 4833: 167(fvec3) Load 169(c3) - 4834: 52(float) Load 4311(lodClamp) - 4835: 52(float) CompositeExtract 4833 2 - 4836:6(float16_t) ImageSampleDrefImplicitLod 4832 4833 4835 ConstOffset MinLod 709 4834 - 4837: 208(ptr) AccessChain 4728(texel) 207 - 4838:6(float16_t) Load 4837 - 4839:6(float16_t) FAdd 4838 4836 - 4840: 208(ptr) AccessChain 4728(texel) 207 - Store 4840 4839 - 4841: 316 Load 318(s1DArrayShadow) - 4842:154(f16vec2) Load 156(f16c2) - 4843: 52(float) Load 215(compare) - 4844:6(float16_t) Load 4318(f16lodClamp) - 4845:6(float16_t) Load 137(f16bias) - 4846:6(float16_t) ImageSampleDrefImplicitLod 4841 4842 4843 Bias ConstOffset MinLod 4845 709 4844 - 4847: 208(ptr) AccessChain 4728(texel) 207 - 4848:6(float16_t) Load 4847 - 4849:6(float16_t) FAdd 4848 4846 - 4850: 208(ptr) AccessChain 4728(texel) 207 - Store 4850 4849 - 4851: 337 Load 339(s2DArrayShadow) - 4852: 249(fvec4) Load 251(c4) - 4853: 52(float) Load 4311(lodClamp) - 4854: 52(float) CompositeExtract 4852 3 - 4855:6(float16_t) ImageSampleDrefImplicitLod 4851 4852 4854 ConstOffset MinLod 722 4853 - 4856: 208(ptr) AccessChain 4728(texel) 207 - 4857:6(float16_t) Load 4856 - 4858:6(float16_t) FAdd 4857 4855 - 4859: 208(ptr) AccessChain 4728(texel) 207 - Store 4859 4858 - 4860: 337 Load 339(s2DArrayShadow) - 4861:175(f16vec3) Load 177(f16c3) - 4862: 52(float) Load 215(compare) - 4863:6(float16_t) Load 4318(f16lodClamp) - 4864:6(float16_t) ImageSampleDrefImplicitLod 4860 4861 4862 ConstOffset MinLod 722 4863 - 4865: 208(ptr) AccessChain 4728(texel) 207 - 4866:6(float16_t) Load 4865 - 4867:6(float16_t) FAdd 4866 4864 - 4868: 208(ptr) AccessChain 4728(texel) 207 - Store 4868 4867 - 4869: 7(f16vec4) Load 4728(texel) - ReturnValue 4869 + 4604(texel): 64(ptr) Variable Function + Store 4604(texel) 121 + 4605: 123 Load 125(s1D) + 4606: 52(float) Load 128(c1) + 4607: 52(float) Load 4187(lodClamp) + 4608: 7(f16vec4) ImageSampleImplicitLod 4605 4606 ConstOffset MinLod 709 4607 + 4609: 7(f16vec4) Load 4604(texel) + 4610: 7(f16vec4) FAdd 4609 4608 + Store 4604(texel) 4610 + 4611: 123 Load 125(s1D) + 4612:6(float16_t) Load 135(f16c1) + 4613:6(float16_t) Load 4194(f16lodClamp) + 4614:6(float16_t) Load 137(f16bias) + 4615: 7(f16vec4) ImageSampleImplicitLod 4611 4612 Bias ConstOffset MinLod 4614 709 4613 + 4616: 7(f16vec4) Load 4604(texel) + 4617: 7(f16vec4) FAdd 4616 4615 + Store 4604(texel) 4617 + 4618: 143 Load 145(s2D) + 4619: 53(fvec2) Load 148(c2) + 4620: 52(float) Load 4187(lodClamp) + 4621: 7(f16vec4) ImageSampleImplicitLod 4618 4619 ConstOffset MinLod 722 4620 + 4622: 7(f16vec4) Load 4604(texel) + 4623: 7(f16vec4) FAdd 4622 4621 + Store 4604(texel) 4623 + 4624: 143 Load 145(s2D) + 4625:154(f16vec2) Load 156(f16c2) + 4626:6(float16_t) Load 4194(f16lodClamp) + 4627:6(float16_t) Load 137(f16bias) + 4628: 7(f16vec4) ImageSampleImplicitLod 4624 4625 Bias ConstOffset MinLod 4627 722 4626 + 4629: 7(f16vec4) Load 4604(texel) + 4630: 7(f16vec4) FAdd 4629 4628 + Store 4604(texel) 4630 + 4631: 163 Load 165(s3D) + 4632: 167(fvec3) Load 169(c3) + 4633: 52(float) Load 4187(lodClamp) + 4634: 7(f16vec4) ImageSampleImplicitLod 4631 4632 ConstOffset MinLod 735 4633 + 4635: 7(f16vec4) Load 4604(texel) + 4636: 7(f16vec4) FAdd 4635 4634 + Store 4604(texel) 4636 + 4637: 163 Load 165(s3D) + 4638:175(f16vec3) Load 177(f16c3) + 4639:6(float16_t) Load 4194(f16lodClamp) + 4640:6(float16_t) Load 137(f16bias) + 4641: 7(f16vec4) ImageSampleImplicitLod 4637 4638 Bias ConstOffset MinLod 4640 735 4639 + 4642: 7(f16vec4) Load 4604(texel) + 4643: 7(f16vec4) FAdd 4642 4641 + Store 4604(texel) 4643 + 4644: 199 Load 201(s1DShadow) + 4645: 167(fvec3) Load 169(c3) + 4646: 52(float) Load 4187(lodClamp) + 4647: 52(float) CompositeExtract 4645 2 + 4648:6(float16_t) ImageSampleDrefImplicitLod 4644 4645 4647 ConstOffset MinLod 709 4646 + 4649: 208(ptr) AccessChain 4604(texel) 207 + 4650:6(float16_t) Load 4649 + 4651:6(float16_t) FAdd 4650 4648 + 4652: 208(ptr) AccessChain 4604(texel) 207 + Store 4652 4651 + 4653: 199 Load 201(s1DShadow) + 4654:154(f16vec2) Load 156(f16c2) + 4655: 52(float) Load 215(compare) + 4656:6(float16_t) Load 4194(f16lodClamp) + 4657:6(float16_t) Load 137(f16bias) + 4658:6(float16_t) ImageSampleDrefImplicitLod 4653 4654 4655 Bias ConstOffset MinLod 4657 709 4656 + 4659: 208(ptr) AccessChain 4604(texel) 207 + 4660:6(float16_t) Load 4659 + 4661:6(float16_t) FAdd 4660 4658 + 4662: 208(ptr) AccessChain 4604(texel) 207 + Store 4662 4661 + 4663: 224 Load 226(s2DShadow) + 4664: 167(fvec3) Load 169(c3) + 4665: 52(float) Load 4187(lodClamp) + 4666: 52(float) CompositeExtract 4664 2 + 4667:6(float16_t) ImageSampleDrefImplicitLod 4663 4664 4666 ConstOffset MinLod 722 4665 + 4668: 208(ptr) AccessChain 4604(texel) 207 + 4669:6(float16_t) Load 4668 + 4670:6(float16_t) FAdd 4669 4667 + 4671: 208(ptr) AccessChain 4604(texel) 207 + Store 4671 4670 + 4672: 224 Load 226(s2DShadow) + 4673:154(f16vec2) Load 156(f16c2) + 4674: 52(float) Load 215(compare) + 4675:6(float16_t) Load 4194(f16lodClamp) + 4676:6(float16_t) Load 137(f16bias) + 4677:6(float16_t) ImageSampleDrefImplicitLod 4672 4673 4674 Bias ConstOffset MinLod 4676 722 4675 + 4678: 208(ptr) AccessChain 4604(texel) 207 + 4679:6(float16_t) Load 4678 + 4680:6(float16_t) FAdd 4679 4677 + 4681: 208(ptr) AccessChain 4604(texel) 207 + Store 4681 4680 + 4682: 269 Load 271(s1DArray) + 4683: 53(fvec2) Load 148(c2) + 4684: 52(float) Load 4187(lodClamp) + 4685: 7(f16vec4) ImageSampleImplicitLod 4682 4683 ConstOffset MinLod 709 4684 + 4686: 7(f16vec4) Load 4604(texel) + 4687: 7(f16vec4) FAdd 4686 4685 + Store 4604(texel) 4687 + 4688: 269 Load 271(s1DArray) + 4689:154(f16vec2) Load 156(f16c2) + 4690:6(float16_t) Load 4194(f16lodClamp) + 4691:6(float16_t) Load 137(f16bias) + 4692: 7(f16vec4) ImageSampleImplicitLod 4688 4689 Bias ConstOffset MinLod 4691 709 4690 + 4693: 7(f16vec4) Load 4604(texel) + 4694: 7(f16vec4) FAdd 4693 4692 + Store 4604(texel) 4694 + 4695: 284 Load 286(s2DArray) + 4696: 167(fvec3) Load 169(c3) + 4697: 52(float) Load 4187(lodClamp) + 4698: 7(f16vec4) ImageSampleImplicitLod 4695 4696 ConstOffset MinLod 722 4697 + 4699: 7(f16vec4) Load 4604(texel) + 4700: 7(f16vec4) FAdd 4699 4698 + Store 4604(texel) 4700 + 4701: 284 Load 286(s2DArray) + 4702:175(f16vec3) Load 177(f16c3) + 4703:6(float16_t) Load 4194(f16lodClamp) + 4704:6(float16_t) Load 137(f16bias) + 4705: 7(f16vec4) ImageSampleImplicitLod 4701 4702 Bias ConstOffset MinLod 4704 722 4703 + 4706: 7(f16vec4) Load 4604(texel) + 4707: 7(f16vec4) FAdd 4706 4705 + Store 4604(texel) 4707 + 4708: 316 Load 318(s1DArrayShadow) + 4709: 167(fvec3) Load 169(c3) + 4710: 52(float) Load 4187(lodClamp) + 4711: 52(float) CompositeExtract 4709 2 + 4712:6(float16_t) ImageSampleDrefImplicitLod 4708 4709 4711 ConstOffset MinLod 709 4710 + 4713: 208(ptr) AccessChain 4604(texel) 207 + 4714:6(float16_t) Load 4713 + 4715:6(float16_t) FAdd 4714 4712 + 4716: 208(ptr) AccessChain 4604(texel) 207 + Store 4716 4715 + 4717: 316 Load 318(s1DArrayShadow) + 4718:154(f16vec2) Load 156(f16c2) + 4719: 52(float) Load 215(compare) + 4720:6(float16_t) Load 4194(f16lodClamp) + 4721:6(float16_t) Load 137(f16bias) + 4722:6(float16_t) ImageSampleDrefImplicitLod 4717 4718 4719 Bias ConstOffset MinLod 4721 709 4720 + 4723: 208(ptr) AccessChain 4604(texel) 207 + 4724:6(float16_t) Load 4723 + 4725:6(float16_t) FAdd 4724 4722 + 4726: 208(ptr) AccessChain 4604(texel) 207 + Store 4726 4725 + 4727: 337 Load 339(s2DArrayShadow) + 4728: 249(fvec4) Load 251(c4) + 4729: 52(float) Load 4187(lodClamp) + 4730: 52(float) CompositeExtract 4728 3 + 4731:6(float16_t) ImageSampleDrefImplicitLod 4727 4728 4730 ConstOffset MinLod 722 4729 + 4732: 208(ptr) AccessChain 4604(texel) 207 + 4733:6(float16_t) Load 4732 + 4734:6(float16_t) FAdd 4733 4731 + 4735: 208(ptr) AccessChain 4604(texel) 207 + Store 4735 4734 + 4736: 337 Load 339(s2DArrayShadow) + 4737:175(f16vec3) Load 177(f16c3) + 4738: 52(float) Load 215(compare) + 4739:6(float16_t) Load 4194(f16lodClamp) + 4740:6(float16_t) ImageSampleDrefImplicitLod 4736 4737 4738 ConstOffset MinLod 722 4739 + 4741: 208(ptr) AccessChain 4604(texel) 207 + 4742:6(float16_t) Load 4741 + 4743:6(float16_t) FAdd 4742 4740 + 4744: 208(ptr) AccessChain 4604(texel) 207 + Store 4744 4743 + 4745: 7(f16vec4) Load 4604(texel) + ReturnValue 4745 FunctionEnd 107(testSparseTextureGradClamp(): 7(f16vec4) Function None 8 108: Label - 4872(texel): 64(ptr) Variable Function - Store 4872(texel) 121 - 4873: 143 Load 145(s2D) - 4874: 53(fvec2) Load 148(c2) - 4875: 53(fvec2) Load 1409(dPdxy2) - 4876: 53(fvec2) Load 1409(dPdxy2) - 4877: 52(float) Load 4311(lodClamp) - 4878:3146(ResType) ImageSparseSampleExplicitLod 4873 4874 Grad MinLod 4875 4876 4877 - 4879: 7(f16vec4) CompositeExtract 4878 1 - Store 4872(texel) 4879 - 4880: 47(int) CompositeExtract 4878 0 - 4881: 143 Load 145(s2D) - 4882:154(f16vec2) Load 156(f16c2) - 4883:154(f16vec2) Load 1417(f16dPdxy2) - 4884:154(f16vec2) Load 1417(f16dPdxy2) - 4885:6(float16_t) Load 4318(f16lodClamp) - 4886:3146(ResType) ImageSparseSampleExplicitLod 4881 4882 Grad MinLod 4883 4884 4885 - 4887: 7(f16vec4) CompositeExtract 4886 1 - Store 4872(texel) 4887 - 4888: 47(int) CompositeExtract 4886 0 - 4889: 163 Load 165(s3D) - 4890: 167(fvec3) Load 169(c3) - 4891: 167(fvec3) Load 1425(dPdxy3) - 4892: 167(fvec3) Load 1425(dPdxy3) - 4893: 52(float) Load 4311(lodClamp) - 4894:3146(ResType) ImageSparseSampleExplicitLod 4889 4890 Grad MinLod 4891 4892 4893 - 4895: 7(f16vec4) CompositeExtract 4894 1 - Store 4872(texel) 4895 - 4896: 47(int) CompositeExtract 4894 0 - 4897: 163 Load 165(s3D) - 4898:175(f16vec3) Load 177(f16c3) - 4899:175(f16vec3) Load 1433(f16dPdxy3) - 4900:175(f16vec3) Load 1433(f16dPdxy3) - 4901:6(float16_t) Load 4318(f16lodClamp) - 4902:3146(ResType) ImageSparseSampleExplicitLod 4897 4898 Grad MinLod 4899 4900 4901 - 4903: 7(f16vec4) CompositeExtract 4902 1 - Store 4872(texel) 4903 - 4904: 47(int) CompositeExtract 4902 0 - 4905: 184 Load 186(sCube) - 4906: 167(fvec3) Load 169(c3) - 4907: 167(fvec3) Load 1425(dPdxy3) - 4908: 167(fvec3) Load 1425(dPdxy3) - 4909: 52(float) Load 4311(lodClamp) - 4910:3146(ResType) ImageSparseSampleExplicitLod 4905 4906 Grad MinLod 4907 4908 4909 - 4911: 7(f16vec4) CompositeExtract 4910 1 - Store 4872(texel) 4911 - 4912: 47(int) CompositeExtract 4910 0 - 4913: 184 Load 186(sCube) - 4914:175(f16vec3) Load 177(f16c3) - 4915:175(f16vec3) Load 1433(f16dPdxy3) - 4916:175(f16vec3) Load 1433(f16dPdxy3) - 4917:6(float16_t) Load 4318(f16lodClamp) - 4918:3146(ResType) ImageSparseSampleExplicitLod 4913 4914 Grad MinLod 4915 4916 4917 - 4919: 7(f16vec4) CompositeExtract 4918 1 - Store 4872(texel) 4919 - 4920: 47(int) CompositeExtract 4918 0 - 4921: 224 Load 226(s2DShadow) - 4922: 167(fvec3) Load 169(c3) - 4923: 53(fvec2) Load 1409(dPdxy2) - 4924: 53(fvec2) Load 1409(dPdxy2) - 4925: 52(float) Load 4311(lodClamp) - 4926: 208(ptr) AccessChain 4872(texel) 207 - 4927: 52(float) CompositeExtract 4922 2 - 4928:3182(ResType) ImageSparseSampleDrefExplicitLod 4921 4922 4927 Grad MinLod 4923 4924 4925 - 4929:6(float16_t) CompositeExtract 4928 1 - Store 4926 4929 - 4930: 47(int) CompositeExtract 4928 0 - 4931: 224 Load 226(s2DShadow) - 4932:154(f16vec2) Load 156(f16c2) - 4933: 52(float) Load 215(compare) - 4934:154(f16vec2) Load 1417(f16dPdxy2) - 4935:154(f16vec2) Load 1417(f16dPdxy2) - 4936:6(float16_t) Load 4318(f16lodClamp) - 4937: 208(ptr) AccessChain 4872(texel) 207 - 4938:3182(ResType) ImageSparseSampleDrefExplicitLod 4931 4932 4933 Grad MinLod 4934 4935 4936 - 4939:6(float16_t) CompositeExtract 4938 1 - Store 4937 4939 - 4940: 47(int) CompositeExtract 4938 0 - 4941: 245 Load 247(sCubeShadow) - 4942: 249(fvec4) Load 251(c4) - 4943: 167(fvec3) Load 1425(dPdxy3) - 4944: 167(fvec3) Load 1425(dPdxy3) - 4945: 52(float) Load 4311(lodClamp) - 4946: 208(ptr) AccessChain 4872(texel) 207 - 4947: 52(float) CompositeExtract 4942 3 - 4948:3182(ResType) ImageSparseSampleDrefExplicitLod 4941 4942 4947 Grad MinLod 4943 4944 4945 - 4949:6(float16_t) CompositeExtract 4948 1 - Store 4946 4949 - 4950: 47(int) CompositeExtract 4948 0 - 4951: 245 Load 247(sCubeShadow) - 4952:175(f16vec3) Load 177(f16c3) - 4953: 52(float) Load 215(compare) - 4954:175(f16vec3) Load 1433(f16dPdxy3) - 4955:175(f16vec3) Load 1433(f16dPdxy3) - 4956:6(float16_t) Load 4318(f16lodClamp) - 4957: 208(ptr) AccessChain 4872(texel) 207 - 4958:3182(ResType) ImageSparseSampleDrefExplicitLod 4951 4952 4953 Grad MinLod 4954 4955 4956 - 4959:6(float16_t) CompositeExtract 4958 1 - Store 4957 4959 - 4960: 47(int) CompositeExtract 4958 0 - 4961: 284 Load 286(s2DArray) - 4962: 167(fvec3) Load 169(c3) - 4963: 53(fvec2) Load 1409(dPdxy2) - 4964: 53(fvec2) Load 1409(dPdxy2) - 4965: 52(float) Load 4311(lodClamp) - 4966:3146(ResType) ImageSparseSampleExplicitLod 4961 4962 Grad MinLod 4963 4964 4965 - 4967: 7(f16vec4) CompositeExtract 4966 1 - Store 4872(texel) 4967 - 4968: 47(int) CompositeExtract 4966 0 - 4969: 284 Load 286(s2DArray) - 4970:175(f16vec3) Load 177(f16c3) - 4971:154(f16vec2) Load 1417(f16dPdxy2) - 4972:154(f16vec2) Load 1417(f16dPdxy2) - 4973:6(float16_t) Load 4318(f16lodClamp) - 4974:3146(ResType) ImageSparseSampleExplicitLod 4969 4970 Grad MinLod 4971 4972 4973 - 4975: 7(f16vec4) CompositeExtract 4974 1 - Store 4872(texel) 4975 - 4976: 47(int) CompositeExtract 4974 0 - 4977: 337 Load 339(s2DArrayShadow) - 4978: 249(fvec4) Load 251(c4) - 4979: 53(fvec2) Load 1409(dPdxy2) - 4980: 53(fvec2) Load 1409(dPdxy2) - 4981: 52(float) Load 4311(lodClamp) - 4982: 208(ptr) AccessChain 4872(texel) 207 - 4983: 52(float) CompositeExtract 4978 3 - 4984:3182(ResType) ImageSparseSampleDrefExplicitLod 4977 4978 4983 Grad MinLod 4979 4980 4981 - 4985:6(float16_t) CompositeExtract 4984 1 - Store 4982 4985 - 4986: 47(int) CompositeExtract 4984 0 - 4987: 337 Load 339(s2DArrayShadow) - 4988:175(f16vec3) Load 177(f16c3) - 4989: 52(float) Load 215(compare) - 4990:154(f16vec2) Load 1417(f16dPdxy2) - 4991:154(f16vec2) Load 1417(f16dPdxy2) - 4992:6(float16_t) Load 4318(f16lodClamp) - 4993: 208(ptr) AccessChain 4872(texel) 207 - 4994:3182(ResType) ImageSparseSampleDrefExplicitLod 4987 4988 4989 Grad MinLod 4990 4991 4992 - 4995:6(float16_t) CompositeExtract 4994 1 - Store 4993 4995 - 4996: 47(int) CompositeExtract 4994 0 - 4997: 299 Load 301(sCubeArray) - 4998: 249(fvec4) Load 251(c4) - 4999: 167(fvec3) Load 1425(dPdxy3) - 5000: 167(fvec3) Load 1425(dPdxy3) - 5001: 52(float) Load 4311(lodClamp) - 5002:3146(ResType) ImageSparseSampleExplicitLod 4997 4998 Grad MinLod 4999 5000 5001 - 5003: 7(f16vec4) CompositeExtract 5002 1 - Store 4872(texel) 5003 - 5004: 47(int) CompositeExtract 5002 0 - 5005: 299 Load 301(sCubeArray) - 5006: 7(f16vec4) Load 309(f16c4) - 5007:175(f16vec3) Load 1433(f16dPdxy3) - 5008:175(f16vec3) Load 1433(f16dPdxy3) - 5009:6(float16_t) Load 4318(f16lodClamp) - 5010:3146(ResType) ImageSparseSampleExplicitLod 5005 5006 Grad MinLod 5007 5008 5009 - 5011: 7(f16vec4) CompositeExtract 5010 1 - Store 4872(texel) 5011 - 5012: 47(int) CompositeExtract 5010 0 - 5013: 7(f16vec4) Load 4872(texel) - ReturnValue 5013 + 4748(texel): 64(ptr) Variable Function + Store 4748(texel) 121 + 4749: 143 Load 145(s2D) + 4750: 53(fvec2) Load 148(c2) + 4751: 53(fvec2) Load 1407(dPdxy2) + 4752: 52(float) Load 4187(lodClamp) + 4753:3056(ResType) ImageSparseSampleExplicitLod 4749 4750 Grad MinLod 4751 4751 4752 + 4754: 7(f16vec4) CompositeExtract 4753 1 + Store 4748(texel) 4754 + 4755: 47(int) CompositeExtract 4753 0 + 4756: 143 Load 145(s2D) + 4757:154(f16vec2) Load 156(f16c2) + 4758:154(f16vec2) Load 1414(f16dPdxy2) + 4759:6(float16_t) Load 4194(f16lodClamp) + 4760:3056(ResType) ImageSparseSampleExplicitLod 4756 4757 Grad MinLod 4758 4758 4759 + 4761: 7(f16vec4) CompositeExtract 4760 1 + Store 4748(texel) 4761 + 4762: 47(int) CompositeExtract 4760 0 + 4763: 163 Load 165(s3D) + 4764: 167(fvec3) Load 169(c3) + 4765: 167(fvec3) Load 1421(dPdxy3) + 4766: 52(float) Load 4187(lodClamp) + 4767:3056(ResType) ImageSparseSampleExplicitLod 4763 4764 Grad MinLod 4765 4765 4766 + 4768: 7(f16vec4) CompositeExtract 4767 1 + Store 4748(texel) 4768 + 4769: 47(int) CompositeExtract 4767 0 + 4770: 163 Load 165(s3D) + 4771:175(f16vec3) Load 177(f16c3) + 4772:175(f16vec3) Load 1428(f16dPdxy3) + 4773:6(float16_t) Load 4194(f16lodClamp) + 4774:3056(ResType) ImageSparseSampleExplicitLod 4770 4771 Grad MinLod 4772 4772 4773 + 4775: 7(f16vec4) CompositeExtract 4774 1 + Store 4748(texel) 4775 + 4776: 47(int) CompositeExtract 4774 0 + 4777: 184 Load 186(sCube) + 4778: 167(fvec3) Load 169(c3) + 4779: 167(fvec3) Load 1421(dPdxy3) + 4780: 52(float) Load 4187(lodClamp) + 4781:3056(ResType) ImageSparseSampleExplicitLod 4777 4778 Grad MinLod 4779 4779 4780 + 4782: 7(f16vec4) CompositeExtract 4781 1 + Store 4748(texel) 4782 + 4783: 47(int) CompositeExtract 4781 0 + 4784: 184 Load 186(sCube) + 4785:175(f16vec3) Load 177(f16c3) + 4786:175(f16vec3) Load 1428(f16dPdxy3) + 4787:6(float16_t) Load 4194(f16lodClamp) + 4788:3056(ResType) ImageSparseSampleExplicitLod 4784 4785 Grad MinLod 4786 4786 4787 + 4789: 7(f16vec4) CompositeExtract 4788 1 + Store 4748(texel) 4789 + 4790: 47(int) CompositeExtract 4788 0 + 4791: 224 Load 226(s2DShadow) + 4792: 167(fvec3) Load 169(c3) + 4793: 53(fvec2) Load 1407(dPdxy2) + 4794: 52(float) Load 4187(lodClamp) + 4795: 208(ptr) AccessChain 4748(texel) 207 + 4796: 52(float) CompositeExtract 4792 2 + 4797:3092(ResType) ImageSparseSampleDrefExplicitLod 4791 4792 4796 Grad MinLod 4793 4793 4794 + 4798:6(float16_t) CompositeExtract 4797 1 + Store 4795 4798 + 4799: 47(int) CompositeExtract 4797 0 + 4800: 224 Load 226(s2DShadow) + 4801:154(f16vec2) Load 156(f16c2) + 4802: 52(float) Load 215(compare) + 4803:154(f16vec2) Load 1414(f16dPdxy2) + 4804:6(float16_t) Load 4194(f16lodClamp) + 4805: 208(ptr) AccessChain 4748(texel) 207 + 4806:3092(ResType) ImageSparseSampleDrefExplicitLod 4800 4801 4802 Grad MinLod 4803 4803 4804 + 4807:6(float16_t) CompositeExtract 4806 1 + Store 4805 4807 + 4808: 47(int) CompositeExtract 4806 0 + 4809: 245 Load 247(sCubeShadow) + 4810: 249(fvec4) Load 251(c4) + 4811: 167(fvec3) Load 1421(dPdxy3) + 4812: 52(float) Load 4187(lodClamp) + 4813: 208(ptr) AccessChain 4748(texel) 207 + 4814: 52(float) CompositeExtract 4810 3 + 4815:3092(ResType) ImageSparseSampleDrefExplicitLod 4809 4810 4814 Grad MinLod 4811 4811 4812 + 4816:6(float16_t) CompositeExtract 4815 1 + Store 4813 4816 + 4817: 47(int) CompositeExtract 4815 0 + 4818: 245 Load 247(sCubeShadow) + 4819:175(f16vec3) Load 177(f16c3) + 4820: 52(float) Load 215(compare) + 4821:175(f16vec3) Load 1428(f16dPdxy3) + 4822:6(float16_t) Load 4194(f16lodClamp) + 4823: 208(ptr) AccessChain 4748(texel) 207 + 4824:3092(ResType) ImageSparseSampleDrefExplicitLod 4818 4819 4820 Grad MinLod 4821 4821 4822 + 4825:6(float16_t) CompositeExtract 4824 1 + Store 4823 4825 + 4826: 47(int) CompositeExtract 4824 0 + 4827: 284 Load 286(s2DArray) + 4828: 167(fvec3) Load 169(c3) + 4829: 53(fvec2) Load 1407(dPdxy2) + 4830: 52(float) Load 4187(lodClamp) + 4831:3056(ResType) ImageSparseSampleExplicitLod 4827 4828 Grad MinLod 4829 4829 4830 + 4832: 7(f16vec4) CompositeExtract 4831 1 + Store 4748(texel) 4832 + 4833: 47(int) CompositeExtract 4831 0 + 4834: 284 Load 286(s2DArray) + 4835:175(f16vec3) Load 177(f16c3) + 4836:154(f16vec2) Load 1414(f16dPdxy2) + 4837:6(float16_t) Load 4194(f16lodClamp) + 4838:3056(ResType) ImageSparseSampleExplicitLod 4834 4835 Grad MinLod 4836 4836 4837 + 4839: 7(f16vec4) CompositeExtract 4838 1 + Store 4748(texel) 4839 + 4840: 47(int) CompositeExtract 4838 0 + 4841: 337 Load 339(s2DArrayShadow) + 4842: 249(fvec4) Load 251(c4) + 4843: 53(fvec2) Load 1407(dPdxy2) + 4844: 52(float) Load 4187(lodClamp) + 4845: 208(ptr) AccessChain 4748(texel) 207 + 4846: 52(float) CompositeExtract 4842 3 + 4847:3092(ResType) ImageSparseSampleDrefExplicitLod 4841 4842 4846 Grad MinLod 4843 4843 4844 + 4848:6(float16_t) CompositeExtract 4847 1 + Store 4845 4848 + 4849: 47(int) CompositeExtract 4847 0 + 4850: 337 Load 339(s2DArrayShadow) + 4851:175(f16vec3) Load 177(f16c3) + 4852: 52(float) Load 215(compare) + 4853:154(f16vec2) Load 1414(f16dPdxy2) + 4854:6(float16_t) Load 4194(f16lodClamp) + 4855: 208(ptr) AccessChain 4748(texel) 207 + 4856:3092(ResType) ImageSparseSampleDrefExplicitLod 4850 4851 4852 Grad MinLod 4853 4853 4854 + 4857:6(float16_t) CompositeExtract 4856 1 + Store 4855 4857 + 4858: 47(int) CompositeExtract 4856 0 + 4859: 299 Load 301(sCubeArray) + 4860: 249(fvec4) Load 251(c4) + 4861: 167(fvec3) Load 1421(dPdxy3) + 4862: 52(float) Load 4187(lodClamp) + 4863:3056(ResType) ImageSparseSampleExplicitLod 4859 4860 Grad MinLod 4861 4861 4862 + 4864: 7(f16vec4) CompositeExtract 4863 1 + Store 4748(texel) 4864 + 4865: 47(int) CompositeExtract 4863 0 + 4866: 299 Load 301(sCubeArray) + 4867: 7(f16vec4) Load 309(f16c4) + 4868:175(f16vec3) Load 1428(f16dPdxy3) + 4869:6(float16_t) Load 4194(f16lodClamp) + 4870:3056(ResType) ImageSparseSampleExplicitLod 4866 4867 Grad MinLod 4868 4868 4869 + 4871: 7(f16vec4) CompositeExtract 4870 1 + Store 4748(texel) 4871 + 4872: 47(int) CompositeExtract 4870 0 + 4873: 7(f16vec4) Load 4748(texel) + ReturnValue 4873 FunctionEnd 109(testTextureGradClamp(): 7(f16vec4) Function None 8 110: Label - 5016(texel): 64(ptr) Variable Function - Store 5016(texel) 121 - 5017: 123 Load 125(s1D) - 5018: 52(float) Load 128(c1) - 5019: 52(float) Load 1393(dPdxy1) - 5020: 52(float) Load 1393(dPdxy1) - 5021: 52(float) Load 4311(lodClamp) - 5022: 7(f16vec4) ImageSampleExplicitLod 5017 5018 Grad MinLod 5019 5020 5021 - 5023: 7(f16vec4) Load 5016(texel) - 5024: 7(f16vec4) FAdd 5023 5022 - Store 5016(texel) 5024 - 5025: 123 Load 125(s1D) - 5026:6(float16_t) Load 135(f16c1) - 5027:6(float16_t) Load 1401(f16dPdxy1) - 5028:6(float16_t) Load 1401(f16dPdxy1) - 5029:6(float16_t) Load 4318(f16lodClamp) - 5030: 7(f16vec4) ImageSampleExplicitLod 5025 5026 Grad MinLod 5027 5028 5029 - 5031: 7(f16vec4) Load 5016(texel) - 5032: 7(f16vec4) FAdd 5031 5030 - Store 5016(texel) 5032 - 5033: 143 Load 145(s2D) - 5034: 53(fvec2) Load 148(c2) - 5035: 53(fvec2) Load 1409(dPdxy2) - 5036: 53(fvec2) Load 1409(dPdxy2) - 5037: 52(float) Load 4311(lodClamp) - 5038: 7(f16vec4) ImageSampleExplicitLod 5033 5034 Grad MinLod 5035 5036 5037 - 5039: 7(f16vec4) Load 5016(texel) - 5040: 7(f16vec4) FAdd 5039 5038 - Store 5016(texel) 5040 - 5041: 143 Load 145(s2D) - 5042:154(f16vec2) Load 156(f16c2) - 5043:154(f16vec2) Load 1417(f16dPdxy2) - 5044:154(f16vec2) Load 1417(f16dPdxy2) - 5045:6(float16_t) Load 4318(f16lodClamp) - 5046: 7(f16vec4) ImageSampleExplicitLod 5041 5042 Grad MinLod 5043 5044 5045 - 5047: 7(f16vec4) Load 5016(texel) - 5048: 7(f16vec4) FAdd 5047 5046 - Store 5016(texel) 5048 - 5049: 163 Load 165(s3D) - 5050: 167(fvec3) Load 169(c3) - 5051: 167(fvec3) Load 1425(dPdxy3) - 5052: 167(fvec3) Load 1425(dPdxy3) - 5053: 52(float) Load 4311(lodClamp) - 5054: 7(f16vec4) ImageSampleExplicitLod 5049 5050 Grad MinLod 5051 5052 5053 - 5055: 7(f16vec4) Load 5016(texel) - 5056: 7(f16vec4) FAdd 5055 5054 - Store 5016(texel) 5056 - 5057: 163 Load 165(s3D) - 5058:175(f16vec3) Load 177(f16c3) - 5059:175(f16vec3) Load 1433(f16dPdxy3) - 5060:175(f16vec3) Load 1433(f16dPdxy3) - 5061:6(float16_t) Load 4318(f16lodClamp) - 5062: 7(f16vec4) ImageSampleExplicitLod 5057 5058 Grad MinLod 5059 5060 5061 - 5063: 7(f16vec4) Load 5016(texel) - 5064: 7(f16vec4) FAdd 5063 5062 - Store 5016(texel) 5064 - 5065: 184 Load 186(sCube) - 5066: 167(fvec3) Load 169(c3) - 5067: 167(fvec3) Load 1425(dPdxy3) - 5068: 167(fvec3) Load 1425(dPdxy3) - 5069: 52(float) Load 4311(lodClamp) - 5070: 7(f16vec4) ImageSampleExplicitLod 5065 5066 Grad MinLod 5067 5068 5069 - 5071: 7(f16vec4) Load 5016(texel) - 5072: 7(f16vec4) FAdd 5071 5070 - Store 5016(texel) 5072 - 5073: 184 Load 186(sCube) - 5074:175(f16vec3) Load 177(f16c3) - 5075:175(f16vec3) Load 1433(f16dPdxy3) - 5076:175(f16vec3) Load 1433(f16dPdxy3) - 5077:6(float16_t) Load 4318(f16lodClamp) - 5078: 7(f16vec4) ImageSampleExplicitLod 5073 5074 Grad MinLod 5075 5076 5077 - 5079: 7(f16vec4) Load 5016(texel) - 5080: 7(f16vec4) FAdd 5079 5078 - Store 5016(texel) 5080 - 5081: 199 Load 201(s1DShadow) - 5082: 167(fvec3) Load 169(c3) - 5083: 52(float) Load 1393(dPdxy1) - 5084: 52(float) Load 1393(dPdxy1) - 5085: 52(float) Load 4311(lodClamp) - 5086: 52(float) CompositeExtract 5082 2 - 5087:6(float16_t) ImageSampleDrefExplicitLod 5081 5082 5086 Grad MinLod 5083 5084 5085 - 5088: 208(ptr) AccessChain 5016(texel) 207 - 5089:6(float16_t) Load 5088 - 5090:6(float16_t) FAdd 5089 5087 - 5091: 208(ptr) AccessChain 5016(texel) 207 - Store 5091 5090 - 5092: 199 Load 201(s1DShadow) - 5093:154(f16vec2) Load 156(f16c2) - 5094: 52(float) Load 215(compare) - 5095:6(float16_t) Load 1401(f16dPdxy1) - 5096:6(float16_t) Load 1401(f16dPdxy1) - 5097:6(float16_t) Load 4318(f16lodClamp) - 5098:6(float16_t) ImageSampleDrefExplicitLod 5092 5093 5094 Grad MinLod 5095 5096 5097 - 5099: 208(ptr) AccessChain 5016(texel) 207 - 5100:6(float16_t) Load 5099 - 5101:6(float16_t) FAdd 5100 5098 - 5102: 208(ptr) AccessChain 5016(texel) 207 - Store 5102 5101 - 5103: 224 Load 226(s2DShadow) - 5104: 167(fvec3) Load 169(c3) - 5105: 53(fvec2) Load 1409(dPdxy2) - 5106: 53(fvec2) Load 1409(dPdxy2) - 5107: 52(float) Load 4311(lodClamp) - 5108: 52(float) CompositeExtract 5104 2 - 5109:6(float16_t) ImageSampleDrefExplicitLod 5103 5104 5108 Grad MinLod 5105 5106 5107 - 5110: 208(ptr) AccessChain 5016(texel) 207 - 5111:6(float16_t) Load 5110 - 5112:6(float16_t) FAdd 5111 5109 - 5113: 208(ptr) AccessChain 5016(texel) 207 - Store 5113 5112 - 5114: 224 Load 226(s2DShadow) - 5115:154(f16vec2) Load 156(f16c2) - 5116: 52(float) Load 215(compare) - 5117:154(f16vec2) Load 1417(f16dPdxy2) - 5118:154(f16vec2) Load 1417(f16dPdxy2) - 5119:6(float16_t) Load 4318(f16lodClamp) - 5120:6(float16_t) ImageSampleDrefExplicitLod 5114 5115 5116 Grad MinLod 5117 5118 5119 - 5121: 208(ptr) AccessChain 5016(texel) 207 - 5122:6(float16_t) Load 5121 - 5123:6(float16_t) FAdd 5122 5120 - 5124: 208(ptr) AccessChain 5016(texel) 207 - Store 5124 5123 - 5125: 245 Load 247(sCubeShadow) - 5126: 249(fvec4) Load 251(c4) - 5127: 167(fvec3) Load 1425(dPdxy3) - 5128: 167(fvec3) Load 1425(dPdxy3) - 5129: 52(float) Load 4311(lodClamp) - 5130: 52(float) CompositeExtract 5126 3 - 5131:6(float16_t) ImageSampleDrefExplicitLod 5125 5126 5130 Grad MinLod 5127 5128 5129 - 5132: 208(ptr) AccessChain 5016(texel) 207 - 5133:6(float16_t) Load 5132 - 5134:6(float16_t) FAdd 5133 5131 - 5135: 208(ptr) AccessChain 5016(texel) 207 - Store 5135 5134 - 5136: 245 Load 247(sCubeShadow) - 5137:175(f16vec3) Load 177(f16c3) - 5138: 52(float) Load 215(compare) - 5139:175(f16vec3) Load 1433(f16dPdxy3) - 5140:175(f16vec3) Load 1433(f16dPdxy3) - 5141:6(float16_t) Load 4318(f16lodClamp) - 5142:6(float16_t) ImageSampleDrefExplicitLod 5136 5137 5138 Grad MinLod 5139 5140 5141 - 5143: 208(ptr) AccessChain 5016(texel) 207 - 5144:6(float16_t) Load 5143 - 5145:6(float16_t) FAdd 5144 5142 - 5146: 208(ptr) AccessChain 5016(texel) 207 - Store 5146 5145 - 5147: 269 Load 271(s1DArray) - 5148: 53(fvec2) Load 148(c2) - 5149: 52(float) Load 1393(dPdxy1) - 5150: 52(float) Load 1393(dPdxy1) - 5151: 52(float) Load 4311(lodClamp) - 5152: 7(f16vec4) ImageSampleExplicitLod 5147 5148 Grad MinLod 5149 5150 5151 - 5153: 7(f16vec4) Load 5016(texel) - 5154: 7(f16vec4) FAdd 5153 5152 - Store 5016(texel) 5154 - 5155: 269 Load 271(s1DArray) - 5156:154(f16vec2) Load 156(f16c2) - 5157:6(float16_t) Load 1401(f16dPdxy1) - 5158:6(float16_t) Load 1401(f16dPdxy1) - 5159:6(float16_t) Load 4318(f16lodClamp) - 5160: 7(f16vec4) ImageSampleExplicitLod 5155 5156 Grad MinLod 5157 5158 5159 - 5161: 7(f16vec4) Load 5016(texel) - 5162: 7(f16vec4) FAdd 5161 5160 - Store 5016(texel) 5162 - 5163: 284 Load 286(s2DArray) - 5164: 167(fvec3) Load 169(c3) - 5165: 53(fvec2) Load 1409(dPdxy2) - 5166: 53(fvec2) Load 1409(dPdxy2) - 5167: 52(float) Load 4311(lodClamp) - 5168: 7(f16vec4) ImageSampleExplicitLod 5163 5164 Grad MinLod 5165 5166 5167 - 5169: 7(f16vec4) Load 5016(texel) - 5170: 7(f16vec4) FAdd 5169 5168 - Store 5016(texel) 5170 - 5171: 284 Load 286(s2DArray) - 5172:175(f16vec3) Load 177(f16c3) - 5173:154(f16vec2) Load 1417(f16dPdxy2) - 5174:154(f16vec2) Load 1417(f16dPdxy2) - 5175:6(float16_t) Load 4318(f16lodClamp) - 5176: 7(f16vec4) ImageSampleExplicitLod 5171 5172 Grad MinLod 5173 5174 5175 - 5177: 7(f16vec4) Load 5016(texel) - 5178: 7(f16vec4) FAdd 5177 5176 - Store 5016(texel) 5178 - 5179: 316 Load 318(s1DArrayShadow) - 5180: 167(fvec3) Load 169(c3) - 5181: 52(float) Load 1393(dPdxy1) - 5182: 52(float) Load 1393(dPdxy1) - 5183: 52(float) Load 4311(lodClamp) - 5184: 52(float) CompositeExtract 5180 2 - 5185:6(float16_t) ImageSampleDrefExplicitLod 5179 5180 5184 Grad MinLod 5181 5182 5183 - 5186: 208(ptr) AccessChain 5016(texel) 207 - 5187:6(float16_t) Load 5186 - 5188:6(float16_t) FAdd 5187 5185 - 5189: 208(ptr) AccessChain 5016(texel) 207 - Store 5189 5188 - 5190: 316 Load 318(s1DArrayShadow) - 5191:154(f16vec2) Load 156(f16c2) - 5192: 52(float) Load 215(compare) - 5193:6(float16_t) Load 1401(f16dPdxy1) - 5194:6(float16_t) Load 1401(f16dPdxy1) - 5195:6(float16_t) Load 4318(f16lodClamp) - 5196:6(float16_t) ImageSampleDrefExplicitLod 5190 5191 5192 Grad MinLod 5193 5194 5195 - 5197: 208(ptr) AccessChain 5016(texel) 207 - 5198:6(float16_t) Load 5197 - 5199:6(float16_t) FAdd 5198 5196 - 5200: 208(ptr) AccessChain 5016(texel) 207 - Store 5200 5199 - 5201: 337 Load 339(s2DArrayShadow) - 5202: 249(fvec4) Load 251(c4) - 5203: 53(fvec2) Load 1409(dPdxy2) - 5204: 53(fvec2) Load 1409(dPdxy2) - 5205: 52(float) Load 4311(lodClamp) - 5206: 52(float) CompositeExtract 5202 3 - 5207:6(float16_t) ImageSampleDrefExplicitLod 5201 5202 5206 Grad MinLod 5203 5204 5205 - 5208: 208(ptr) AccessChain 5016(texel) 207 - 5209:6(float16_t) Load 5208 - 5210:6(float16_t) FAdd 5209 5207 - 5211: 208(ptr) AccessChain 5016(texel) 207 - Store 5211 5210 - 5212: 337 Load 339(s2DArrayShadow) - 5213:175(f16vec3) Load 177(f16c3) - 5214: 52(float) Load 215(compare) - 5215:154(f16vec2) Load 1417(f16dPdxy2) - 5216:154(f16vec2) Load 1417(f16dPdxy2) - 5217:6(float16_t) Load 4318(f16lodClamp) - 5218:6(float16_t) ImageSampleDrefExplicitLod 5212 5213 5214 Grad MinLod 5215 5216 5217 - 5219: 208(ptr) AccessChain 5016(texel) 207 - 5220:6(float16_t) Load 5219 - 5221:6(float16_t) FAdd 5220 5218 - 5222: 208(ptr) AccessChain 5016(texel) 207 - Store 5222 5221 - 5223: 299 Load 301(sCubeArray) - 5224: 249(fvec4) Load 251(c4) - 5225: 167(fvec3) Load 1425(dPdxy3) - 5226: 167(fvec3) Load 1425(dPdxy3) - 5227: 52(float) Load 4311(lodClamp) - 5228: 7(f16vec4) ImageSampleExplicitLod 5223 5224 Grad MinLod 5225 5226 5227 - 5229: 7(f16vec4) Load 5016(texel) - 5230: 7(f16vec4) FAdd 5229 5228 - Store 5016(texel) 5230 - 5231: 299 Load 301(sCubeArray) - 5232: 7(f16vec4) Load 309(f16c4) - 5233:175(f16vec3) Load 1433(f16dPdxy3) - 5234:175(f16vec3) Load 1433(f16dPdxy3) - 5235:6(float16_t) Load 4318(f16lodClamp) - 5236: 7(f16vec4) ImageSampleExplicitLod 5231 5232 Grad MinLod 5233 5234 5235 - 5237: 7(f16vec4) Load 5016(texel) - 5238: 7(f16vec4) FAdd 5237 5236 - Store 5016(texel) 5238 - 5239: 7(f16vec4) Load 5016(texel) - ReturnValue 5239 + 4876(texel): 64(ptr) Variable Function + Store 4876(texel) 121 + 4877: 123 Load 125(s1D) + 4878: 52(float) Load 128(c1) + 4879: 52(float) Load 1393(dPdxy1) + 4880: 52(float) Load 4187(lodClamp) + 4881: 7(f16vec4) ImageSampleExplicitLod 4877 4878 Grad MinLod 4879 4879 4880 + 4882: 7(f16vec4) Load 4876(texel) + 4883: 7(f16vec4) FAdd 4882 4881 + Store 4876(texel) 4883 + 4884: 123 Load 125(s1D) + 4885:6(float16_t) Load 135(f16c1) + 4886:6(float16_t) Load 1400(f16dPdxy1) + 4887:6(float16_t) Load 4194(f16lodClamp) + 4888: 7(f16vec4) ImageSampleExplicitLod 4884 4885 Grad MinLod 4886 4886 4887 + 4889: 7(f16vec4) Load 4876(texel) + 4890: 7(f16vec4) FAdd 4889 4888 + Store 4876(texel) 4890 + 4891: 143 Load 145(s2D) + 4892: 53(fvec2) Load 148(c2) + 4893: 53(fvec2) Load 1407(dPdxy2) + 4894: 52(float) Load 4187(lodClamp) + 4895: 7(f16vec4) ImageSampleExplicitLod 4891 4892 Grad MinLod 4893 4893 4894 + 4896: 7(f16vec4) Load 4876(texel) + 4897: 7(f16vec4) FAdd 4896 4895 + Store 4876(texel) 4897 + 4898: 143 Load 145(s2D) + 4899:154(f16vec2) Load 156(f16c2) + 4900:154(f16vec2) Load 1414(f16dPdxy2) + 4901:6(float16_t) Load 4194(f16lodClamp) + 4902: 7(f16vec4) ImageSampleExplicitLod 4898 4899 Grad MinLod 4900 4900 4901 + 4903: 7(f16vec4) Load 4876(texel) + 4904: 7(f16vec4) FAdd 4903 4902 + Store 4876(texel) 4904 + 4905: 163 Load 165(s3D) + 4906: 167(fvec3) Load 169(c3) + 4907: 167(fvec3) Load 1421(dPdxy3) + 4908: 52(float) Load 4187(lodClamp) + 4909: 7(f16vec4) ImageSampleExplicitLod 4905 4906 Grad MinLod 4907 4907 4908 + 4910: 7(f16vec4) Load 4876(texel) + 4911: 7(f16vec4) FAdd 4910 4909 + Store 4876(texel) 4911 + 4912: 163 Load 165(s3D) + 4913:175(f16vec3) Load 177(f16c3) + 4914:175(f16vec3) Load 1428(f16dPdxy3) + 4915:6(float16_t) Load 4194(f16lodClamp) + 4916: 7(f16vec4) ImageSampleExplicitLod 4912 4913 Grad MinLod 4914 4914 4915 + 4917: 7(f16vec4) Load 4876(texel) + 4918: 7(f16vec4) FAdd 4917 4916 + Store 4876(texel) 4918 + 4919: 184 Load 186(sCube) + 4920: 167(fvec3) Load 169(c3) + 4921: 167(fvec3) Load 1421(dPdxy3) + 4922: 52(float) Load 4187(lodClamp) + 4923: 7(f16vec4) ImageSampleExplicitLod 4919 4920 Grad MinLod 4921 4921 4922 + 4924: 7(f16vec4) Load 4876(texel) + 4925: 7(f16vec4) FAdd 4924 4923 + Store 4876(texel) 4925 + 4926: 184 Load 186(sCube) + 4927:175(f16vec3) Load 177(f16c3) + 4928:175(f16vec3) Load 1428(f16dPdxy3) + 4929:6(float16_t) Load 4194(f16lodClamp) + 4930: 7(f16vec4) ImageSampleExplicitLod 4926 4927 Grad MinLod 4928 4928 4929 + 4931: 7(f16vec4) Load 4876(texel) + 4932: 7(f16vec4) FAdd 4931 4930 + Store 4876(texel) 4932 + 4933: 199 Load 201(s1DShadow) + 4934: 167(fvec3) Load 169(c3) + 4935: 52(float) Load 1393(dPdxy1) + 4936: 52(float) Load 4187(lodClamp) + 4937: 52(float) CompositeExtract 4934 2 + 4938:6(float16_t) ImageSampleDrefExplicitLod 4933 4934 4937 Grad MinLod 4935 4935 4936 + 4939: 208(ptr) AccessChain 4876(texel) 207 + 4940:6(float16_t) Load 4939 + 4941:6(float16_t) FAdd 4940 4938 + 4942: 208(ptr) AccessChain 4876(texel) 207 + Store 4942 4941 + 4943: 199 Load 201(s1DShadow) + 4944:154(f16vec2) Load 156(f16c2) + 4945: 52(float) Load 215(compare) + 4946:6(float16_t) Load 1400(f16dPdxy1) + 4947:6(float16_t) Load 4194(f16lodClamp) + 4948:6(float16_t) ImageSampleDrefExplicitLod 4943 4944 4945 Grad MinLod 4946 4946 4947 + 4949: 208(ptr) AccessChain 4876(texel) 207 + 4950:6(float16_t) Load 4949 + 4951:6(float16_t) FAdd 4950 4948 + 4952: 208(ptr) AccessChain 4876(texel) 207 + Store 4952 4951 + 4953: 224 Load 226(s2DShadow) + 4954: 167(fvec3) Load 169(c3) + 4955: 53(fvec2) Load 1407(dPdxy2) + 4956: 52(float) Load 4187(lodClamp) + 4957: 52(float) CompositeExtract 4954 2 + 4958:6(float16_t) ImageSampleDrefExplicitLod 4953 4954 4957 Grad MinLod 4955 4955 4956 + 4959: 208(ptr) AccessChain 4876(texel) 207 + 4960:6(float16_t) Load 4959 + 4961:6(float16_t) FAdd 4960 4958 + 4962: 208(ptr) AccessChain 4876(texel) 207 + Store 4962 4961 + 4963: 224 Load 226(s2DShadow) + 4964:154(f16vec2) Load 156(f16c2) + 4965: 52(float) Load 215(compare) + 4966:154(f16vec2) Load 1414(f16dPdxy2) + 4967:6(float16_t) Load 4194(f16lodClamp) + 4968:6(float16_t) ImageSampleDrefExplicitLod 4963 4964 4965 Grad MinLod 4966 4966 4967 + 4969: 208(ptr) AccessChain 4876(texel) 207 + 4970:6(float16_t) Load 4969 + 4971:6(float16_t) FAdd 4970 4968 + 4972: 208(ptr) AccessChain 4876(texel) 207 + Store 4972 4971 + 4973: 245 Load 247(sCubeShadow) + 4974: 249(fvec4) Load 251(c4) + 4975: 167(fvec3) Load 1421(dPdxy3) + 4976: 52(float) Load 4187(lodClamp) + 4977: 52(float) CompositeExtract 4974 3 + 4978:6(float16_t) ImageSampleDrefExplicitLod 4973 4974 4977 Grad MinLod 4975 4975 4976 + 4979: 208(ptr) AccessChain 4876(texel) 207 + 4980:6(float16_t) Load 4979 + 4981:6(float16_t) FAdd 4980 4978 + 4982: 208(ptr) AccessChain 4876(texel) 207 + Store 4982 4981 + 4983: 245 Load 247(sCubeShadow) + 4984:175(f16vec3) Load 177(f16c3) + 4985: 52(float) Load 215(compare) + 4986:175(f16vec3) Load 1428(f16dPdxy3) + 4987:6(float16_t) Load 4194(f16lodClamp) + 4988:6(float16_t) ImageSampleDrefExplicitLod 4983 4984 4985 Grad MinLod 4986 4986 4987 + 4989: 208(ptr) AccessChain 4876(texel) 207 + 4990:6(float16_t) Load 4989 + 4991:6(float16_t) FAdd 4990 4988 + 4992: 208(ptr) AccessChain 4876(texel) 207 + Store 4992 4991 + 4993: 269 Load 271(s1DArray) + 4994: 53(fvec2) Load 148(c2) + 4995: 52(float) Load 1393(dPdxy1) + 4996: 52(float) Load 4187(lodClamp) + 4997: 7(f16vec4) ImageSampleExplicitLod 4993 4994 Grad MinLod 4995 4995 4996 + 4998: 7(f16vec4) Load 4876(texel) + 4999: 7(f16vec4) FAdd 4998 4997 + Store 4876(texel) 4999 + 5000: 269 Load 271(s1DArray) + 5001:154(f16vec2) Load 156(f16c2) + 5002:6(float16_t) Load 1400(f16dPdxy1) + 5003:6(float16_t) Load 4194(f16lodClamp) + 5004: 7(f16vec4) ImageSampleExplicitLod 5000 5001 Grad MinLod 5002 5002 5003 + 5005: 7(f16vec4) Load 4876(texel) + 5006: 7(f16vec4) FAdd 5005 5004 + Store 4876(texel) 5006 + 5007: 284 Load 286(s2DArray) + 5008: 167(fvec3) Load 169(c3) + 5009: 53(fvec2) Load 1407(dPdxy2) + 5010: 52(float) Load 4187(lodClamp) + 5011: 7(f16vec4) ImageSampleExplicitLod 5007 5008 Grad MinLod 5009 5009 5010 + 5012: 7(f16vec4) Load 4876(texel) + 5013: 7(f16vec4) FAdd 5012 5011 + Store 4876(texel) 5013 + 5014: 284 Load 286(s2DArray) + 5015:175(f16vec3) Load 177(f16c3) + 5016:154(f16vec2) Load 1414(f16dPdxy2) + 5017:6(float16_t) Load 4194(f16lodClamp) + 5018: 7(f16vec4) ImageSampleExplicitLod 5014 5015 Grad MinLod 5016 5016 5017 + 5019: 7(f16vec4) Load 4876(texel) + 5020: 7(f16vec4) FAdd 5019 5018 + Store 4876(texel) 5020 + 5021: 316 Load 318(s1DArrayShadow) + 5022: 167(fvec3) Load 169(c3) + 5023: 52(float) Load 1393(dPdxy1) + 5024: 52(float) Load 4187(lodClamp) + 5025: 52(float) CompositeExtract 5022 2 + 5026:6(float16_t) ImageSampleDrefExplicitLod 5021 5022 5025 Grad MinLod 5023 5023 5024 + 5027: 208(ptr) AccessChain 4876(texel) 207 + 5028:6(float16_t) Load 5027 + 5029:6(float16_t) FAdd 5028 5026 + 5030: 208(ptr) AccessChain 4876(texel) 207 + Store 5030 5029 + 5031: 316 Load 318(s1DArrayShadow) + 5032:154(f16vec2) Load 156(f16c2) + 5033: 52(float) Load 215(compare) + 5034:6(float16_t) Load 1400(f16dPdxy1) + 5035:6(float16_t) Load 4194(f16lodClamp) + 5036:6(float16_t) ImageSampleDrefExplicitLod 5031 5032 5033 Grad MinLod 5034 5034 5035 + 5037: 208(ptr) AccessChain 4876(texel) 207 + 5038:6(float16_t) Load 5037 + 5039:6(float16_t) FAdd 5038 5036 + 5040: 208(ptr) AccessChain 4876(texel) 207 + Store 5040 5039 + 5041: 337 Load 339(s2DArrayShadow) + 5042: 249(fvec4) Load 251(c4) + 5043: 53(fvec2) Load 1407(dPdxy2) + 5044: 52(float) Load 4187(lodClamp) + 5045: 52(float) CompositeExtract 5042 3 + 5046:6(float16_t) ImageSampleDrefExplicitLod 5041 5042 5045 Grad MinLod 5043 5043 5044 + 5047: 208(ptr) AccessChain 4876(texel) 207 + 5048:6(float16_t) Load 5047 + 5049:6(float16_t) FAdd 5048 5046 + 5050: 208(ptr) AccessChain 4876(texel) 207 + Store 5050 5049 + 5051: 337 Load 339(s2DArrayShadow) + 5052:175(f16vec3) Load 177(f16c3) + 5053: 52(float) Load 215(compare) + 5054:154(f16vec2) Load 1414(f16dPdxy2) + 5055:6(float16_t) Load 4194(f16lodClamp) + 5056:6(float16_t) ImageSampleDrefExplicitLod 5051 5052 5053 Grad MinLod 5054 5054 5055 + 5057: 208(ptr) AccessChain 4876(texel) 207 + 5058:6(float16_t) Load 5057 + 5059:6(float16_t) FAdd 5058 5056 + 5060: 208(ptr) AccessChain 4876(texel) 207 + Store 5060 5059 + 5061: 299 Load 301(sCubeArray) + 5062: 249(fvec4) Load 251(c4) + 5063: 167(fvec3) Load 1421(dPdxy3) + 5064: 52(float) Load 4187(lodClamp) + 5065: 7(f16vec4) ImageSampleExplicitLod 5061 5062 Grad MinLod 5063 5063 5064 + 5066: 7(f16vec4) Load 4876(texel) + 5067: 7(f16vec4) FAdd 5066 5065 + Store 4876(texel) 5067 + 5068: 299 Load 301(sCubeArray) + 5069: 7(f16vec4) Load 309(f16c4) + 5070:175(f16vec3) Load 1428(f16dPdxy3) + 5071:6(float16_t) Load 4194(f16lodClamp) + 5072: 7(f16vec4) ImageSampleExplicitLod 5068 5069 Grad MinLod 5070 5070 5071 + 5073: 7(f16vec4) Load 4876(texel) + 5074: 7(f16vec4) FAdd 5073 5072 + Store 4876(texel) 5074 + 5075: 7(f16vec4) Load 4876(texel) + ReturnValue 5075 FunctionEnd 111(testSparseTextureGradOffsetClamp(): 7(f16vec4) Function None 8 112: Label - 5242(texel): 64(ptr) Variable Function - Store 5242(texel) 121 - 5243: 143 Load 145(s2D) - 5244: 53(fvec2) Load 148(c2) - 5245: 53(fvec2) Load 1409(dPdxy2) - 5246: 53(fvec2) Load 1409(dPdxy2) - 5247: 52(float) Load 4311(lodClamp) - 5248:3146(ResType) ImageSparseSampleExplicitLod 5243 5244 Grad ConstOffset MinLod 5245 5246 722 5247 - 5249: 7(f16vec4) CompositeExtract 5248 1 - Store 5242(texel) 5249 - 5250: 47(int) CompositeExtract 5248 0 - 5251: 143 Load 145(s2D) - 5252:154(f16vec2) Load 156(f16c2) - 5253:154(f16vec2) Load 1417(f16dPdxy2) - 5254:154(f16vec2) Load 1417(f16dPdxy2) - 5255:6(float16_t) Load 4318(f16lodClamp) - 5256:3146(ResType) ImageSparseSampleExplicitLod 5251 5252 Grad ConstOffset MinLod 5253 5254 722 5255 - 5257: 7(f16vec4) CompositeExtract 5256 1 - Store 5242(texel) 5257 - 5258: 47(int) CompositeExtract 5256 0 - 5259: 163 Load 165(s3D) - 5260: 167(fvec3) Load 169(c3) - 5261: 167(fvec3) Load 1425(dPdxy3) - 5262: 167(fvec3) Load 1425(dPdxy3) - 5263: 52(float) Load 4311(lodClamp) - 5264:3146(ResType) ImageSparseSampleExplicitLod 5259 5260 Grad ConstOffset MinLod 5261 5262 735 5263 - 5265: 7(f16vec4) CompositeExtract 5264 1 - Store 5242(texel) 5265 - 5266: 47(int) CompositeExtract 5264 0 - 5267: 163 Load 165(s3D) - 5268:175(f16vec3) Load 177(f16c3) - 5269:175(f16vec3) Load 1433(f16dPdxy3) - 5270:175(f16vec3) Load 1433(f16dPdxy3) - 5271:6(float16_t) Load 4318(f16lodClamp) - 5272:3146(ResType) ImageSparseSampleExplicitLod 5267 5268 Grad ConstOffset MinLod 5269 5270 735 5271 - 5273: 7(f16vec4) CompositeExtract 5272 1 - Store 5242(texel) 5273 - 5274: 47(int) CompositeExtract 5272 0 - 5275: 224 Load 226(s2DShadow) - 5276: 167(fvec3) Load 169(c3) - 5277: 53(fvec2) Load 1409(dPdxy2) - 5278: 53(fvec2) Load 1409(dPdxy2) - 5279: 52(float) Load 4311(lodClamp) - 5280: 208(ptr) AccessChain 5242(texel) 207 - 5281: 52(float) CompositeExtract 5276 2 - 5282:3182(ResType) ImageSparseSampleDrefExplicitLod 5275 5276 5281 Grad ConstOffset MinLod 5277 5278 722 5279 - 5283:6(float16_t) CompositeExtract 5282 1 - Store 5280 5283 - 5284: 47(int) CompositeExtract 5282 0 - 5285: 224 Load 226(s2DShadow) - 5286:154(f16vec2) Load 156(f16c2) - 5287: 52(float) Load 215(compare) - 5288:154(f16vec2) Load 1417(f16dPdxy2) - 5289:154(f16vec2) Load 1417(f16dPdxy2) - 5290:6(float16_t) Load 4318(f16lodClamp) - 5291: 208(ptr) AccessChain 5242(texel) 207 - 5292:3182(ResType) ImageSparseSampleDrefExplicitLod 5285 5286 5287 Grad ConstOffset MinLod 5288 5289 722 5290 - 5293:6(float16_t) CompositeExtract 5292 1 - Store 5291 5293 - 5294: 47(int) CompositeExtract 5292 0 - 5295: 284 Load 286(s2DArray) - 5296: 167(fvec3) Load 169(c3) - 5297: 53(fvec2) Load 1409(dPdxy2) - 5298: 53(fvec2) Load 1409(dPdxy2) - 5299: 52(float) Load 4311(lodClamp) - 5300:3146(ResType) ImageSparseSampleExplicitLod 5295 5296 Grad ConstOffset MinLod 5297 5298 722 5299 - 5301: 7(f16vec4) CompositeExtract 5300 1 - Store 5242(texel) 5301 - 5302: 47(int) CompositeExtract 5300 0 - 5303: 284 Load 286(s2DArray) - 5304:175(f16vec3) Load 177(f16c3) - 5305:154(f16vec2) Load 1417(f16dPdxy2) - 5306:154(f16vec2) Load 1417(f16dPdxy2) - 5307:6(float16_t) Load 4318(f16lodClamp) - 5308:3146(ResType) ImageSparseSampleExplicitLod 5303 5304 Grad ConstOffset MinLod 5305 5306 722 5307 - 5309: 7(f16vec4) CompositeExtract 5308 1 - Store 5242(texel) 5309 - 5310: 47(int) CompositeExtract 5308 0 - 5311: 337 Load 339(s2DArrayShadow) - 5312: 249(fvec4) Load 251(c4) - 5313: 53(fvec2) Load 1409(dPdxy2) - 5314: 53(fvec2) Load 1409(dPdxy2) - 5315: 52(float) Load 4311(lodClamp) - 5316: 208(ptr) AccessChain 5242(texel) 207 - 5317: 52(float) CompositeExtract 5312 3 - 5318:3182(ResType) ImageSparseSampleDrefExplicitLod 5311 5312 5317 Grad ConstOffset MinLod 5313 5314 722 5315 - 5319:6(float16_t) CompositeExtract 5318 1 - Store 5316 5319 - 5320: 47(int) CompositeExtract 5318 0 - 5321: 337 Load 339(s2DArrayShadow) - 5322:175(f16vec3) Load 177(f16c3) - 5323: 52(float) Load 215(compare) - 5324:154(f16vec2) Load 1417(f16dPdxy2) - 5325:154(f16vec2) Load 1417(f16dPdxy2) - 5326:6(float16_t) Load 4318(f16lodClamp) - 5327: 208(ptr) AccessChain 5242(texel) 207 - 5328:3182(ResType) ImageSparseSampleDrefExplicitLod 5321 5322 5323 Grad ConstOffset MinLod 5324 5325 722 5326 - 5329:6(float16_t) CompositeExtract 5328 1 - Store 5327 5329 - 5330: 47(int) CompositeExtract 5328 0 - 5331: 7(f16vec4) Load 5242(texel) - ReturnValue 5331 + 5078(texel): 64(ptr) Variable Function + Store 5078(texel) 121 + 5079: 143 Load 145(s2D) + 5080: 53(fvec2) Load 148(c2) + 5081: 53(fvec2) Load 1407(dPdxy2) + 5082: 52(float) Load 4187(lodClamp) + 5083:3056(ResType) ImageSparseSampleExplicitLod 5079 5080 Grad ConstOffset MinLod 5081 5081 722 5082 + 5084: 7(f16vec4) CompositeExtract 5083 1 + Store 5078(texel) 5084 + 5085: 47(int) CompositeExtract 5083 0 + 5086: 143 Load 145(s2D) + 5087:154(f16vec2) Load 156(f16c2) + 5088:154(f16vec2) Load 1414(f16dPdxy2) + 5089:6(float16_t) Load 4194(f16lodClamp) + 5090:3056(ResType) ImageSparseSampleExplicitLod 5086 5087 Grad ConstOffset MinLod 5088 5088 722 5089 + 5091: 7(f16vec4) CompositeExtract 5090 1 + Store 5078(texel) 5091 + 5092: 47(int) CompositeExtract 5090 0 + 5093: 163 Load 165(s3D) + 5094: 167(fvec3) Load 169(c3) + 5095: 167(fvec3) Load 1421(dPdxy3) + 5096: 52(float) Load 4187(lodClamp) + 5097:3056(ResType) ImageSparseSampleExplicitLod 5093 5094 Grad ConstOffset MinLod 5095 5095 735 5096 + 5098: 7(f16vec4) CompositeExtract 5097 1 + Store 5078(texel) 5098 + 5099: 47(int) CompositeExtract 5097 0 + 5100: 163 Load 165(s3D) + 5101:175(f16vec3) Load 177(f16c3) + 5102:175(f16vec3) Load 1428(f16dPdxy3) + 5103:6(float16_t) Load 4194(f16lodClamp) + 5104:3056(ResType) ImageSparseSampleExplicitLod 5100 5101 Grad ConstOffset MinLod 5102 5102 735 5103 + 5105: 7(f16vec4) CompositeExtract 5104 1 + Store 5078(texel) 5105 + 5106: 47(int) CompositeExtract 5104 0 + 5107: 224 Load 226(s2DShadow) + 5108: 167(fvec3) Load 169(c3) + 5109: 53(fvec2) Load 1407(dPdxy2) + 5110: 52(float) Load 4187(lodClamp) + 5111: 208(ptr) AccessChain 5078(texel) 207 + 5112: 52(float) CompositeExtract 5108 2 + 5113:3092(ResType) ImageSparseSampleDrefExplicitLod 5107 5108 5112 Grad ConstOffset MinLod 5109 5109 722 5110 + 5114:6(float16_t) CompositeExtract 5113 1 + Store 5111 5114 + 5115: 47(int) CompositeExtract 5113 0 + 5116: 224 Load 226(s2DShadow) + 5117:154(f16vec2) Load 156(f16c2) + 5118: 52(float) Load 215(compare) + 5119:154(f16vec2) Load 1414(f16dPdxy2) + 5120:6(float16_t) Load 4194(f16lodClamp) + 5121: 208(ptr) AccessChain 5078(texel) 207 + 5122:3092(ResType) ImageSparseSampleDrefExplicitLod 5116 5117 5118 Grad ConstOffset MinLod 5119 5119 722 5120 + 5123:6(float16_t) CompositeExtract 5122 1 + Store 5121 5123 + 5124: 47(int) CompositeExtract 5122 0 + 5125: 284 Load 286(s2DArray) + 5126: 167(fvec3) Load 169(c3) + 5127: 53(fvec2) Load 1407(dPdxy2) + 5128: 52(float) Load 4187(lodClamp) + 5129:3056(ResType) ImageSparseSampleExplicitLod 5125 5126 Grad ConstOffset MinLod 5127 5127 722 5128 + 5130: 7(f16vec4) CompositeExtract 5129 1 + Store 5078(texel) 5130 + 5131: 47(int) CompositeExtract 5129 0 + 5132: 284 Load 286(s2DArray) + 5133:175(f16vec3) Load 177(f16c3) + 5134:154(f16vec2) Load 1414(f16dPdxy2) + 5135:6(float16_t) Load 4194(f16lodClamp) + 5136:3056(ResType) ImageSparseSampleExplicitLod 5132 5133 Grad ConstOffset MinLod 5134 5134 722 5135 + 5137: 7(f16vec4) CompositeExtract 5136 1 + Store 5078(texel) 5137 + 5138: 47(int) CompositeExtract 5136 0 + 5139: 337 Load 339(s2DArrayShadow) + 5140: 249(fvec4) Load 251(c4) + 5141: 53(fvec2) Load 1407(dPdxy2) + 5142: 52(float) Load 4187(lodClamp) + 5143: 208(ptr) AccessChain 5078(texel) 207 + 5144: 52(float) CompositeExtract 5140 3 + 5145:3092(ResType) ImageSparseSampleDrefExplicitLod 5139 5140 5144 Grad ConstOffset MinLod 5141 5141 722 5142 + 5146:6(float16_t) CompositeExtract 5145 1 + Store 5143 5146 + 5147: 47(int) CompositeExtract 5145 0 + 5148: 337 Load 339(s2DArrayShadow) + 5149:175(f16vec3) Load 177(f16c3) + 5150: 52(float) Load 215(compare) + 5151:154(f16vec2) Load 1414(f16dPdxy2) + 5152:6(float16_t) Load 4194(f16lodClamp) + 5153: 208(ptr) AccessChain 5078(texel) 207 + 5154:3092(ResType) ImageSparseSampleDrefExplicitLod 5148 5149 5150 Grad ConstOffset MinLod 5151 5151 722 5152 + 5155:6(float16_t) CompositeExtract 5154 1 + Store 5153 5155 + 5156: 47(int) CompositeExtract 5154 0 + 5157: 7(f16vec4) Load 5078(texel) + ReturnValue 5157 FunctionEnd 113(testTextureGradOffsetClamp(): 7(f16vec4) Function None 8 114: Label - 5334(texel): 64(ptr) Variable Function - Store 5334(texel) 121 - 5335: 123 Load 125(s1D) - 5336: 52(float) Load 128(c1) - 5337: 52(float) Load 1393(dPdxy1) - 5338: 52(float) Load 1393(dPdxy1) - 5339: 52(float) Load 4311(lodClamp) - 5340: 7(f16vec4) ImageSampleExplicitLod 5335 5336 Grad ConstOffset MinLod 5337 5338 709 5339 - 5341: 7(f16vec4) Load 5334(texel) - 5342: 7(f16vec4) FAdd 5341 5340 - Store 5334(texel) 5342 - 5343: 123 Load 125(s1D) - 5344:6(float16_t) Load 135(f16c1) - 5345:6(float16_t) Load 1401(f16dPdxy1) - 5346:6(float16_t) Load 1401(f16dPdxy1) - 5347:6(float16_t) Load 4318(f16lodClamp) - 5348: 7(f16vec4) ImageSampleExplicitLod 5343 5344 Grad ConstOffset MinLod 5345 5346 709 5347 - 5349: 7(f16vec4) Load 5334(texel) - 5350: 7(f16vec4) FAdd 5349 5348 - Store 5334(texel) 5350 - 5351: 143 Load 145(s2D) - 5352: 53(fvec2) Load 148(c2) - 5353: 53(fvec2) Load 1409(dPdxy2) - 5354: 53(fvec2) Load 1409(dPdxy2) - 5355: 52(float) Load 4311(lodClamp) - 5356: 7(f16vec4) ImageSampleExplicitLod 5351 5352 Grad ConstOffset MinLod 5353 5354 722 5355 - 5357: 7(f16vec4) Load 5334(texel) - 5358: 7(f16vec4) FAdd 5357 5356 - Store 5334(texel) 5358 - 5359: 143 Load 145(s2D) - 5360:154(f16vec2) Load 156(f16c2) - 5361:154(f16vec2) Load 1417(f16dPdxy2) - 5362:154(f16vec2) Load 1417(f16dPdxy2) - 5363:6(float16_t) Load 4318(f16lodClamp) - 5364: 7(f16vec4) ImageSampleExplicitLod 5359 5360 Grad ConstOffset MinLod 5361 5362 722 5363 - 5365: 7(f16vec4) Load 5334(texel) - 5366: 7(f16vec4) FAdd 5365 5364 - Store 5334(texel) 5366 - 5367: 163 Load 165(s3D) - 5368: 167(fvec3) Load 169(c3) - 5369: 167(fvec3) Load 1425(dPdxy3) - 5370: 167(fvec3) Load 1425(dPdxy3) - 5371: 52(float) Load 4311(lodClamp) - 5372: 7(f16vec4) ImageSampleExplicitLod 5367 5368 Grad ConstOffset MinLod 5369 5370 735 5371 - 5373: 7(f16vec4) Load 5334(texel) - 5374: 7(f16vec4) FAdd 5373 5372 - Store 5334(texel) 5374 - 5375: 163 Load 165(s3D) - 5376:175(f16vec3) Load 177(f16c3) - 5377:175(f16vec3) Load 1433(f16dPdxy3) - 5378:175(f16vec3) Load 1433(f16dPdxy3) - 5379:6(float16_t) Load 4318(f16lodClamp) - 5380: 7(f16vec4) ImageSampleExplicitLod 5375 5376 Grad ConstOffset MinLod 5377 5378 735 5379 - 5381: 7(f16vec4) Load 5334(texel) - 5382: 7(f16vec4) FAdd 5381 5380 - Store 5334(texel) 5382 - 5383: 199 Load 201(s1DShadow) - 5384: 167(fvec3) Load 169(c3) - 5385: 52(float) Load 1393(dPdxy1) - 5386: 52(float) Load 1393(dPdxy1) - 5387: 52(float) Load 4311(lodClamp) - 5388: 52(float) CompositeExtract 5384 2 - 5389:6(float16_t) ImageSampleDrefExplicitLod 5383 5384 5388 Grad ConstOffset MinLod 5385 5386 709 5387 - 5390: 208(ptr) AccessChain 5334(texel) 207 - 5391:6(float16_t) Load 5390 - 5392:6(float16_t) FAdd 5391 5389 - 5393: 208(ptr) AccessChain 5334(texel) 207 - Store 5393 5392 - 5394: 199 Load 201(s1DShadow) - 5395:154(f16vec2) Load 156(f16c2) - 5396: 52(float) Load 215(compare) - 5397:6(float16_t) Load 1401(f16dPdxy1) - 5398:6(float16_t) Load 1401(f16dPdxy1) - 5399:6(float16_t) Load 4318(f16lodClamp) - 5400:6(float16_t) ImageSampleDrefExplicitLod 5394 5395 5396 Grad ConstOffset MinLod 5397 5398 709 5399 - 5401: 208(ptr) AccessChain 5334(texel) 207 - 5402:6(float16_t) Load 5401 - 5403:6(float16_t) FAdd 5402 5400 - 5404: 208(ptr) AccessChain 5334(texel) 207 - Store 5404 5403 - 5405: 224 Load 226(s2DShadow) - 5406: 167(fvec3) Load 169(c3) - 5407: 53(fvec2) Load 1409(dPdxy2) - 5408: 53(fvec2) Load 1409(dPdxy2) - 5409: 52(float) Load 4311(lodClamp) - 5410: 52(float) CompositeExtract 5406 2 - 5411:6(float16_t) ImageSampleDrefExplicitLod 5405 5406 5410 Grad ConstOffset MinLod 5407 5408 722 5409 - 5412: 208(ptr) AccessChain 5334(texel) 207 - 5413:6(float16_t) Load 5412 - 5414:6(float16_t) FAdd 5413 5411 - 5415: 208(ptr) AccessChain 5334(texel) 207 - Store 5415 5414 - 5416: 224 Load 226(s2DShadow) - 5417:154(f16vec2) Load 156(f16c2) - 5418: 52(float) Load 215(compare) - 5419:154(f16vec2) Load 1417(f16dPdxy2) - 5420:154(f16vec2) Load 1417(f16dPdxy2) - 5421:6(float16_t) Load 4318(f16lodClamp) - 5422:6(float16_t) ImageSampleDrefExplicitLod 5416 5417 5418 Grad ConstOffset MinLod 5419 5420 722 5421 - 5423: 208(ptr) AccessChain 5334(texel) 207 - 5424:6(float16_t) Load 5423 - 5425:6(float16_t) FAdd 5424 5422 - 5426: 208(ptr) AccessChain 5334(texel) 207 - Store 5426 5425 - 5427: 269 Load 271(s1DArray) - 5428: 53(fvec2) Load 148(c2) - 5429: 52(float) Load 1393(dPdxy1) - 5430: 52(float) Load 1393(dPdxy1) - 5431: 52(float) Load 4311(lodClamp) - 5432: 7(f16vec4) ImageSampleExplicitLod 5427 5428 Grad ConstOffset MinLod 5429 5430 709 5431 - 5433: 7(f16vec4) Load 5334(texel) - 5434: 7(f16vec4) FAdd 5433 5432 - Store 5334(texel) 5434 - 5435: 269 Load 271(s1DArray) - 5436:154(f16vec2) Load 156(f16c2) - 5437:6(float16_t) Load 1401(f16dPdxy1) - 5438:6(float16_t) Load 1401(f16dPdxy1) - 5439:6(float16_t) Load 4318(f16lodClamp) - 5440: 7(f16vec4) ImageSampleExplicitLod 5435 5436 Grad ConstOffset MinLod 5437 5438 709 5439 - 5441: 7(f16vec4) Load 5334(texel) - 5442: 7(f16vec4) FAdd 5441 5440 - Store 5334(texel) 5442 - 5443: 284 Load 286(s2DArray) - 5444: 167(fvec3) Load 169(c3) - 5445: 53(fvec2) Load 1409(dPdxy2) - 5446: 53(fvec2) Load 1409(dPdxy2) - 5447: 52(float) Load 4311(lodClamp) - 5448: 7(f16vec4) ImageSampleExplicitLod 5443 5444 Grad ConstOffset MinLod 5445 5446 722 5447 - 5449: 7(f16vec4) Load 5334(texel) - 5450: 7(f16vec4) FAdd 5449 5448 - Store 5334(texel) 5450 - 5451: 284 Load 286(s2DArray) - 5452:175(f16vec3) Load 177(f16c3) - 5453:154(f16vec2) Load 1417(f16dPdxy2) - 5454:154(f16vec2) Load 1417(f16dPdxy2) - 5455:6(float16_t) Load 4318(f16lodClamp) - 5456: 7(f16vec4) ImageSampleExplicitLod 5451 5452 Grad ConstOffset MinLod 5453 5454 722 5455 - 5457: 7(f16vec4) Load 5334(texel) - 5458: 7(f16vec4) FAdd 5457 5456 - Store 5334(texel) 5458 - 5459: 316 Load 318(s1DArrayShadow) - 5460: 167(fvec3) Load 169(c3) - 5461: 52(float) Load 1393(dPdxy1) - 5462: 52(float) Load 1393(dPdxy1) - 5463: 52(float) Load 4311(lodClamp) - 5464: 52(float) CompositeExtract 5460 2 - 5465:6(float16_t) ImageSampleDrefExplicitLod 5459 5460 5464 Grad ConstOffset MinLod 5461 5462 709 5463 - 5466: 208(ptr) AccessChain 5334(texel) 207 - 5467:6(float16_t) Load 5466 - 5468:6(float16_t) FAdd 5467 5465 - 5469: 208(ptr) AccessChain 5334(texel) 207 - Store 5469 5468 - 5470: 316 Load 318(s1DArrayShadow) - 5471:154(f16vec2) Load 156(f16c2) - 5472: 52(float) Load 215(compare) - 5473:6(float16_t) Load 1401(f16dPdxy1) - 5474:6(float16_t) Load 1401(f16dPdxy1) - 5475:6(float16_t) Load 4318(f16lodClamp) - 5476:6(float16_t) ImageSampleDrefExplicitLod 5470 5471 5472 Grad ConstOffset MinLod 5473 5474 709 5475 - 5477: 208(ptr) AccessChain 5334(texel) 207 - 5478:6(float16_t) Load 5477 - 5479:6(float16_t) FAdd 5478 5476 - 5480: 208(ptr) AccessChain 5334(texel) 207 - Store 5480 5479 - 5481: 337 Load 339(s2DArrayShadow) - 5482: 249(fvec4) Load 251(c4) - 5483: 53(fvec2) Load 1409(dPdxy2) - 5484: 53(fvec2) Load 1409(dPdxy2) - 5485: 52(float) Load 4311(lodClamp) - 5486: 52(float) CompositeExtract 5482 3 - 5487:6(float16_t) ImageSampleDrefExplicitLod 5481 5482 5486 Grad ConstOffset MinLod 5483 5484 722 5485 - 5488: 208(ptr) AccessChain 5334(texel) 207 - 5489:6(float16_t) Load 5488 - 5490:6(float16_t) FAdd 5489 5487 - 5491: 208(ptr) AccessChain 5334(texel) 207 - Store 5491 5490 - 5492: 337 Load 339(s2DArrayShadow) - 5493:175(f16vec3) Load 177(f16c3) - 5494: 52(float) Load 215(compare) - 5495:154(f16vec2) Load 1417(f16dPdxy2) - 5496:154(f16vec2) Load 1417(f16dPdxy2) - 5497:6(float16_t) Load 4318(f16lodClamp) - 5498:6(float16_t) ImageSampleDrefExplicitLod 5492 5493 5494 Grad ConstOffset MinLod 5495 5496 722 5497 - 5499: 208(ptr) AccessChain 5334(texel) 207 - 5500:6(float16_t) Load 5499 - 5501:6(float16_t) FAdd 5500 5498 - 5502: 208(ptr) AccessChain 5334(texel) 207 - Store 5502 5501 - 5503: 7(f16vec4) Load 5334(texel) - ReturnValue 5503 + 5160(texel): 64(ptr) Variable Function + Store 5160(texel) 121 + 5161: 123 Load 125(s1D) + 5162: 52(float) Load 128(c1) + 5163: 52(float) Load 1393(dPdxy1) + 5164: 52(float) Load 4187(lodClamp) + 5165: 7(f16vec4) ImageSampleExplicitLod 5161 5162 Grad ConstOffset MinLod 5163 5163 709 5164 + 5166: 7(f16vec4) Load 5160(texel) + 5167: 7(f16vec4) FAdd 5166 5165 + Store 5160(texel) 5167 + 5168: 123 Load 125(s1D) + 5169:6(float16_t) Load 135(f16c1) + 5170:6(float16_t) Load 1400(f16dPdxy1) + 5171:6(float16_t) Load 4194(f16lodClamp) + 5172: 7(f16vec4) ImageSampleExplicitLod 5168 5169 Grad ConstOffset MinLod 5170 5170 709 5171 + 5173: 7(f16vec4) Load 5160(texel) + 5174: 7(f16vec4) FAdd 5173 5172 + Store 5160(texel) 5174 + 5175: 143 Load 145(s2D) + 5176: 53(fvec2) Load 148(c2) + 5177: 53(fvec2) Load 1407(dPdxy2) + 5178: 52(float) Load 4187(lodClamp) + 5179: 7(f16vec4) ImageSampleExplicitLod 5175 5176 Grad ConstOffset MinLod 5177 5177 722 5178 + 5180: 7(f16vec4) Load 5160(texel) + 5181: 7(f16vec4) FAdd 5180 5179 + Store 5160(texel) 5181 + 5182: 143 Load 145(s2D) + 5183:154(f16vec2) Load 156(f16c2) + 5184:154(f16vec2) Load 1414(f16dPdxy2) + 5185:6(float16_t) Load 4194(f16lodClamp) + 5186: 7(f16vec4) ImageSampleExplicitLod 5182 5183 Grad ConstOffset MinLod 5184 5184 722 5185 + 5187: 7(f16vec4) Load 5160(texel) + 5188: 7(f16vec4) FAdd 5187 5186 + Store 5160(texel) 5188 + 5189: 163 Load 165(s3D) + 5190: 167(fvec3) Load 169(c3) + 5191: 167(fvec3) Load 1421(dPdxy3) + 5192: 52(float) Load 4187(lodClamp) + 5193: 7(f16vec4) ImageSampleExplicitLod 5189 5190 Grad ConstOffset MinLod 5191 5191 735 5192 + 5194: 7(f16vec4) Load 5160(texel) + 5195: 7(f16vec4) FAdd 5194 5193 + Store 5160(texel) 5195 + 5196: 163 Load 165(s3D) + 5197:175(f16vec3) Load 177(f16c3) + 5198:175(f16vec3) Load 1428(f16dPdxy3) + 5199:6(float16_t) Load 4194(f16lodClamp) + 5200: 7(f16vec4) ImageSampleExplicitLod 5196 5197 Grad ConstOffset MinLod 5198 5198 735 5199 + 5201: 7(f16vec4) Load 5160(texel) + 5202: 7(f16vec4) FAdd 5201 5200 + Store 5160(texel) 5202 + 5203: 199 Load 201(s1DShadow) + 5204: 167(fvec3) Load 169(c3) + 5205: 52(float) Load 1393(dPdxy1) + 5206: 52(float) Load 4187(lodClamp) + 5207: 52(float) CompositeExtract 5204 2 + 5208:6(float16_t) ImageSampleDrefExplicitLod 5203 5204 5207 Grad ConstOffset MinLod 5205 5205 709 5206 + 5209: 208(ptr) AccessChain 5160(texel) 207 + 5210:6(float16_t) Load 5209 + 5211:6(float16_t) FAdd 5210 5208 + 5212: 208(ptr) AccessChain 5160(texel) 207 + Store 5212 5211 + 5213: 199 Load 201(s1DShadow) + 5214:154(f16vec2) Load 156(f16c2) + 5215: 52(float) Load 215(compare) + 5216:6(float16_t) Load 1400(f16dPdxy1) + 5217:6(float16_t) Load 4194(f16lodClamp) + 5218:6(float16_t) ImageSampleDrefExplicitLod 5213 5214 5215 Grad ConstOffset MinLod 5216 5216 709 5217 + 5219: 208(ptr) AccessChain 5160(texel) 207 + 5220:6(float16_t) Load 5219 + 5221:6(float16_t) FAdd 5220 5218 + 5222: 208(ptr) AccessChain 5160(texel) 207 + Store 5222 5221 + 5223: 224 Load 226(s2DShadow) + 5224: 167(fvec3) Load 169(c3) + 5225: 53(fvec2) Load 1407(dPdxy2) + 5226: 52(float) Load 4187(lodClamp) + 5227: 52(float) CompositeExtract 5224 2 + 5228:6(float16_t) ImageSampleDrefExplicitLod 5223 5224 5227 Grad ConstOffset MinLod 5225 5225 722 5226 + 5229: 208(ptr) AccessChain 5160(texel) 207 + 5230:6(float16_t) Load 5229 + 5231:6(float16_t) FAdd 5230 5228 + 5232: 208(ptr) AccessChain 5160(texel) 207 + Store 5232 5231 + 5233: 224 Load 226(s2DShadow) + 5234:154(f16vec2) Load 156(f16c2) + 5235: 52(float) Load 215(compare) + 5236:154(f16vec2) Load 1414(f16dPdxy2) + 5237:6(float16_t) Load 4194(f16lodClamp) + 5238:6(float16_t) ImageSampleDrefExplicitLod 5233 5234 5235 Grad ConstOffset MinLod 5236 5236 722 5237 + 5239: 208(ptr) AccessChain 5160(texel) 207 + 5240:6(float16_t) Load 5239 + 5241:6(float16_t) FAdd 5240 5238 + 5242: 208(ptr) AccessChain 5160(texel) 207 + Store 5242 5241 + 5243: 269 Load 271(s1DArray) + 5244: 53(fvec2) Load 148(c2) + 5245: 52(float) Load 1393(dPdxy1) + 5246: 52(float) Load 4187(lodClamp) + 5247: 7(f16vec4) ImageSampleExplicitLod 5243 5244 Grad ConstOffset MinLod 5245 5245 709 5246 + 5248: 7(f16vec4) Load 5160(texel) + 5249: 7(f16vec4) FAdd 5248 5247 + Store 5160(texel) 5249 + 5250: 269 Load 271(s1DArray) + 5251:154(f16vec2) Load 156(f16c2) + 5252:6(float16_t) Load 1400(f16dPdxy1) + 5253:6(float16_t) Load 4194(f16lodClamp) + 5254: 7(f16vec4) ImageSampleExplicitLod 5250 5251 Grad ConstOffset MinLod 5252 5252 709 5253 + 5255: 7(f16vec4) Load 5160(texel) + 5256: 7(f16vec4) FAdd 5255 5254 + Store 5160(texel) 5256 + 5257: 284 Load 286(s2DArray) + 5258: 167(fvec3) Load 169(c3) + 5259: 53(fvec2) Load 1407(dPdxy2) + 5260: 52(float) Load 4187(lodClamp) + 5261: 7(f16vec4) ImageSampleExplicitLod 5257 5258 Grad ConstOffset MinLod 5259 5259 722 5260 + 5262: 7(f16vec4) Load 5160(texel) + 5263: 7(f16vec4) FAdd 5262 5261 + Store 5160(texel) 5263 + 5264: 284 Load 286(s2DArray) + 5265:175(f16vec3) Load 177(f16c3) + 5266:154(f16vec2) Load 1414(f16dPdxy2) + 5267:6(float16_t) Load 4194(f16lodClamp) + 5268: 7(f16vec4) ImageSampleExplicitLod 5264 5265 Grad ConstOffset MinLod 5266 5266 722 5267 + 5269: 7(f16vec4) Load 5160(texel) + 5270: 7(f16vec4) FAdd 5269 5268 + Store 5160(texel) 5270 + 5271: 316 Load 318(s1DArrayShadow) + 5272: 167(fvec3) Load 169(c3) + 5273: 52(float) Load 1393(dPdxy1) + 5274: 52(float) Load 4187(lodClamp) + 5275: 52(float) CompositeExtract 5272 2 + 5276:6(float16_t) ImageSampleDrefExplicitLod 5271 5272 5275 Grad ConstOffset MinLod 5273 5273 709 5274 + 5277: 208(ptr) AccessChain 5160(texel) 207 + 5278:6(float16_t) Load 5277 + 5279:6(float16_t) FAdd 5278 5276 + 5280: 208(ptr) AccessChain 5160(texel) 207 + Store 5280 5279 + 5281: 316 Load 318(s1DArrayShadow) + 5282:154(f16vec2) Load 156(f16c2) + 5283: 52(float) Load 215(compare) + 5284:6(float16_t) Load 1400(f16dPdxy1) + 5285:6(float16_t) Load 4194(f16lodClamp) + 5286:6(float16_t) ImageSampleDrefExplicitLod 5281 5282 5283 Grad ConstOffset MinLod 5284 5284 709 5285 + 5287: 208(ptr) AccessChain 5160(texel) 207 + 5288:6(float16_t) Load 5287 + 5289:6(float16_t) FAdd 5288 5286 + 5290: 208(ptr) AccessChain 5160(texel) 207 + Store 5290 5289 + 5291: 337 Load 339(s2DArrayShadow) + 5292: 249(fvec4) Load 251(c4) + 5293: 53(fvec2) Load 1407(dPdxy2) + 5294: 52(float) Load 4187(lodClamp) + 5295: 52(float) CompositeExtract 5292 3 + 5296:6(float16_t) ImageSampleDrefExplicitLod 5291 5292 5295 Grad ConstOffset MinLod 5293 5293 722 5294 + 5297: 208(ptr) AccessChain 5160(texel) 207 + 5298:6(float16_t) Load 5297 + 5299:6(float16_t) FAdd 5298 5296 + 5300: 208(ptr) AccessChain 5160(texel) 207 + Store 5300 5299 + 5301: 337 Load 339(s2DArrayShadow) + 5302:175(f16vec3) Load 177(f16c3) + 5303: 52(float) Load 215(compare) + 5304:154(f16vec2) Load 1414(f16dPdxy2) + 5305:6(float16_t) Load 4194(f16lodClamp) + 5306:6(float16_t) ImageSampleDrefExplicitLod 5301 5302 5303 Grad ConstOffset MinLod 5304 5304 722 5305 + 5307: 208(ptr) AccessChain 5160(texel) 207 + 5308:6(float16_t) Load 5307 + 5309:6(float16_t) FAdd 5308 5306 + 5310: 208(ptr) AccessChain 5160(texel) 207 + Store 5310 5309 + 5311: 7(f16vec4) Load 5160(texel) + ReturnValue 5311 FunctionEnd 115(testCombinedTextureSampler(): 7(f16vec4) Function None 8 116: Label - 5506(texel): 64(ptr) Variable Function - Store 5506(texel) 121 - 5509: 122 Load 5508(t1D) - 5513: 5510 Load 5512(s) - 5514: 123 SampledImage 5509 5513 - 5515: 52(float) Load 128(c1) - 5516: 7(f16vec4) ImageSampleImplicitLod 5514 5515 - 5517: 7(f16vec4) Load 5506(texel) - 5518: 7(f16vec4) FAdd 5517 5516 - Store 5506(texel) 5518 - 5519: 122 Load 5508(t1D) - 5520: 5510 Load 5512(s) - 5521: 123 SampledImage 5519 5520 - 5522:6(float16_t) Load 135(f16c1) - 5523:6(float16_t) Load 137(f16bias) - 5524: 7(f16vec4) ImageSampleImplicitLod 5521 5522 Bias 5523 - 5525: 7(f16vec4) Load 5506(texel) - 5526: 7(f16vec4) FAdd 5525 5524 - Store 5506(texel) 5526 - 5529: 142 Load 5528(t2D) - 5530: 5510 Load 5512(s) - 5531: 143 SampledImage 5529 5530 - 5532: 53(fvec2) Load 148(c2) - 5533: 7(f16vec4) ImageSampleImplicitLod 5531 5532 - 5534: 7(f16vec4) Load 5506(texel) - 5535: 7(f16vec4) FAdd 5534 5533 - Store 5506(texel) 5535 - 5536: 142 Load 5528(t2D) - 5537: 5510 Load 5512(s) - 5538: 143 SampledImage 5536 5537 - 5539:154(f16vec2) Load 156(f16c2) - 5540:6(float16_t) Load 137(f16bias) - 5541: 7(f16vec4) ImageSampleImplicitLod 5538 5539 Bias 5540 - 5542: 7(f16vec4) Load 5506(texel) - 5543: 7(f16vec4) FAdd 5542 5541 - Store 5506(texel) 5543 - 5546: 162 Load 5545(t3D) - 5547: 5510 Load 5512(s) - 5548: 163 SampledImage 5546 5547 - 5549: 167(fvec3) Load 169(c3) - 5550: 7(f16vec4) ImageSampleImplicitLod 5548 5549 - 5551: 7(f16vec4) Load 5506(texel) - 5552: 7(f16vec4) FAdd 5551 5550 - Store 5506(texel) 5552 - 5553: 162 Load 5545(t3D) - 5554: 5510 Load 5512(s) - 5555: 163 SampledImage 5553 5554 - 5556:175(f16vec3) Load 177(f16c3) - 5557:6(float16_t) Load 137(f16bias) - 5558: 7(f16vec4) ImageSampleImplicitLod 5555 5556 Bias 5557 - 5559: 7(f16vec4) Load 5506(texel) - 5560: 7(f16vec4) FAdd 5559 5558 - Store 5506(texel) 5560 - 5563: 183 Load 5562(tCube) - 5564: 5510 Load 5512(s) - 5565: 184 SampledImage 5563 5564 - 5566: 167(fvec3) Load 169(c3) - 5567: 7(f16vec4) ImageSampleImplicitLod 5565 5566 - 5568: 7(f16vec4) Load 5506(texel) - 5569: 7(f16vec4) FAdd 5568 5567 - Store 5506(texel) 5569 - 5570: 183 Load 5562(tCube) - 5571: 5510 Load 5512(s) - 5572: 184 SampledImage 5570 5571 - 5573:175(f16vec3) Load 177(f16c3) - 5574:6(float16_t) Load 137(f16bias) - 5575: 7(f16vec4) ImageSampleImplicitLod 5572 5573 Bias 5574 - 5576: 7(f16vec4) Load 5506(texel) - 5577: 7(f16vec4) FAdd 5576 5575 - Store 5506(texel) 5577 - 5578: 122 Load 5508(t1D) - 5580: 5510 Load 5579(sShadow) - 5581: 199 SampledImage 5578 5580 - 5582: 167(fvec3) Load 169(c3) - 5583: 52(float) CompositeExtract 5582 2 - 5584:6(float16_t) ImageSampleDrefImplicitLod 5581 5582 5583 - 5585: 208(ptr) AccessChain 5506(texel) 207 - 5586:6(float16_t) Load 5585 - 5587:6(float16_t) FAdd 5586 5584 - 5588: 208(ptr) AccessChain 5506(texel) 207 - Store 5588 5587 - 5589: 122 Load 5508(t1D) - 5590: 5510 Load 5579(sShadow) - 5591: 199 SampledImage 5589 5590 - 5592:154(f16vec2) Load 156(f16c2) - 5593: 52(float) Load 215(compare) - 5594:6(float16_t) Load 137(f16bias) - 5595:6(float16_t) ImageSampleDrefImplicitLod 5591 5592 5593 Bias 5594 - 5596: 208(ptr) AccessChain 5506(texel) 207 - 5597:6(float16_t) Load 5596 - 5598:6(float16_t) FAdd 5597 5595 - 5599: 208(ptr) AccessChain 5506(texel) 207 - Store 5599 5598 - 5600: 142 Load 5528(t2D) - 5601: 5510 Load 5579(sShadow) - 5602: 224 SampledImage 5600 5601 - 5603: 167(fvec3) Load 169(c3) - 5604: 52(float) CompositeExtract 5603 2 - 5605:6(float16_t) ImageSampleDrefImplicitLod 5602 5603 5604 - 5606: 208(ptr) AccessChain 5506(texel) 207 - 5607:6(float16_t) Load 5606 - 5608:6(float16_t) FAdd 5607 5605 - 5609: 208(ptr) AccessChain 5506(texel) 207 - Store 5609 5608 - 5610: 142 Load 5528(t2D) - 5611: 5510 Load 5579(sShadow) - 5612: 224 SampledImage 5610 5611 - 5613:154(f16vec2) Load 156(f16c2) - 5614: 52(float) Load 215(compare) - 5615:6(float16_t) Load 137(f16bias) - 5616:6(float16_t) ImageSampleDrefImplicitLod 5612 5613 5614 Bias 5615 - 5617: 208(ptr) AccessChain 5506(texel) 207 - 5618:6(float16_t) Load 5617 - 5619:6(float16_t) FAdd 5618 5616 - 5620: 208(ptr) AccessChain 5506(texel) 207 - Store 5620 5619 - 5621: 183 Load 5562(tCube) - 5622: 5510 Load 5579(sShadow) - 5623: 245 SampledImage 5621 5622 - 5624: 249(fvec4) Load 251(c4) - 5625: 52(float) CompositeExtract 5624 3 - 5626:6(float16_t) ImageSampleDrefImplicitLod 5623 5624 5625 - 5627: 208(ptr) AccessChain 5506(texel) 207 - 5628:6(float16_t) Load 5627 - 5629:6(float16_t) FAdd 5628 5626 - 5630: 208(ptr) AccessChain 5506(texel) 207 - Store 5630 5629 - 5631: 183 Load 5562(tCube) - 5632: 5510 Load 5579(sShadow) - 5633: 245 SampledImage 5631 5632 - 5634:175(f16vec3) Load 177(f16c3) - 5635: 52(float) Load 215(compare) - 5636:6(float16_t) Load 137(f16bias) - 5637:6(float16_t) ImageSampleDrefImplicitLod 5633 5634 5635 Bias 5636 - 5638: 208(ptr) AccessChain 5506(texel) 207 - 5639:6(float16_t) Load 5638 - 5640:6(float16_t) FAdd 5639 5637 - 5641: 208(ptr) AccessChain 5506(texel) 207 - Store 5641 5640 - 5644: 268 Load 5643(t1DArray) - 5645: 5510 Load 5512(s) - 5646: 269 SampledImage 5644 5645 - 5647: 53(fvec2) Load 148(c2) - 5648: 7(f16vec4) ImageSampleImplicitLod 5646 5647 - 5649: 7(f16vec4) Load 5506(texel) - 5650: 7(f16vec4) FAdd 5649 5648 - Store 5506(texel) 5650 - 5651: 268 Load 5643(t1DArray) - 5652: 5510 Load 5512(s) - 5653: 269 SampledImage 5651 5652 - 5654:154(f16vec2) Load 156(f16c2) - 5655:6(float16_t) Load 137(f16bias) - 5656: 7(f16vec4) ImageSampleImplicitLod 5653 5654 Bias 5655 - 5657: 7(f16vec4) Load 5506(texel) - 5658: 7(f16vec4) FAdd 5657 5656 - Store 5506(texel) 5658 - 5661: 283 Load 5660(t2DArray) - 5662: 5510 Load 5512(s) - 5663: 284 SampledImage 5661 5662 - 5664: 167(fvec3) Load 169(c3) - 5665: 7(f16vec4) ImageSampleImplicitLod 5663 5664 - 5666: 7(f16vec4) Load 5506(texel) - 5667: 7(f16vec4) FAdd 5666 5665 - Store 5506(texel) 5667 - 5668: 283 Load 5660(t2DArray) - 5669: 5510 Load 5512(s) - 5670: 284 SampledImage 5668 5669 - 5671:175(f16vec3) Load 177(f16c3) - 5672:6(float16_t) Load 137(f16bias) - 5673: 7(f16vec4) ImageSampleImplicitLod 5670 5671 Bias 5672 - 5674: 7(f16vec4) Load 5506(texel) - 5675: 7(f16vec4) FAdd 5674 5673 - Store 5506(texel) 5675 - 5678: 298 Load 5677(tCubeArray) - 5679: 5510 Load 5512(s) - 5680: 299 SampledImage 5678 5679 - 5681: 249(fvec4) Load 251(c4) - 5682: 7(f16vec4) ImageSampleImplicitLod 5680 5681 - 5683: 7(f16vec4) Load 5506(texel) - 5684: 7(f16vec4) FAdd 5683 5682 - Store 5506(texel) 5684 - 5685: 298 Load 5677(tCubeArray) - 5686: 5510 Load 5512(s) - 5687: 299 SampledImage 5685 5686 - 5688: 7(f16vec4) Load 309(f16c4) - 5689:6(float16_t) Load 137(f16bias) - 5690: 7(f16vec4) ImageSampleImplicitLod 5687 5688 Bias 5689 - 5691: 7(f16vec4) Load 5506(texel) - 5692: 7(f16vec4) FAdd 5691 5690 - Store 5506(texel) 5692 - 5693: 268 Load 5643(t1DArray) - 5694: 5510 Load 5579(sShadow) - 5695: 316 SampledImage 5693 5694 - 5696: 167(fvec3) Load 169(c3) - 5697: 52(float) CompositeExtract 5696 2 - 5698:6(float16_t) ImageSampleDrefImplicitLod 5695 5696 5697 - 5699: 208(ptr) AccessChain 5506(texel) 207 - 5700:6(float16_t) Load 5699 - 5701:6(float16_t) FAdd 5700 5698 - 5702: 208(ptr) AccessChain 5506(texel) 207 - Store 5702 5701 - 5703: 268 Load 5643(t1DArray) - 5704: 5510 Load 5579(sShadow) - 5705: 316 SampledImage 5703 5704 - 5706:154(f16vec2) Load 156(f16c2) - 5707: 52(float) Load 215(compare) - 5708:6(float16_t) Load 137(f16bias) - 5709:6(float16_t) ImageSampleDrefImplicitLod 5705 5706 5707 Bias 5708 - 5710: 208(ptr) AccessChain 5506(texel) 207 - 5711:6(float16_t) Load 5710 - 5712:6(float16_t) FAdd 5711 5709 - 5713: 208(ptr) AccessChain 5506(texel) 207 - Store 5713 5712 - 5714: 283 Load 5660(t2DArray) - 5715: 5510 Load 5579(sShadow) - 5716: 337 SampledImage 5714 5715 - 5717: 249(fvec4) Load 251(c4) - 5718: 52(float) CompositeExtract 5717 3 - 5719:6(float16_t) ImageSampleDrefImplicitLod 5716 5717 5718 - 5720: 208(ptr) AccessChain 5506(texel) 207 - 5721:6(float16_t) Load 5720 - 5722:6(float16_t) FAdd 5721 5719 - 5723: 208(ptr) AccessChain 5506(texel) 207 - Store 5723 5722 - 5724: 283 Load 5660(t2DArray) - 5725: 5510 Load 5579(sShadow) - 5726: 337 SampledImage 5724 5725 - 5727:175(f16vec3) Load 177(f16c3) - 5728: 52(float) Load 215(compare) - 5729:6(float16_t) ImageSampleDrefImplicitLod 5726 5727 5728 - 5730: 208(ptr) AccessChain 5506(texel) 207 - 5731:6(float16_t) Load 5730 - 5732:6(float16_t) FAdd 5731 5729 - 5733: 208(ptr) AccessChain 5506(texel) 207 - Store 5733 5732 - 5736: 356 Load 5735(t2DRect) - 5737: 5510 Load 5512(s) - 5738: 357 SampledImage 5736 5737 - 5739: 53(fvec2) Load 148(c2) - 5740: 7(f16vec4) ImageSampleImplicitLod 5738 5739 - 5741: 7(f16vec4) Load 5506(texel) - 5742: 7(f16vec4) FAdd 5741 5740 - Store 5506(texel) 5742 - 5743: 356 Load 5735(t2DRect) - 5744: 5510 Load 5512(s) - 5745: 357 SampledImage 5743 5744 - 5746:154(f16vec2) Load 156(f16c2) - 5747: 7(f16vec4) ImageSampleImplicitLod 5745 5746 - 5748: 7(f16vec4) Load 5506(texel) - 5749: 7(f16vec4) FAdd 5748 5747 - Store 5506(texel) 5749 - 5750: 356 Load 5735(t2DRect) - 5751: 5510 Load 5579(sShadow) - 5752: 371 SampledImage 5750 5751 - 5753: 167(fvec3) Load 169(c3) - 5754: 52(float) CompositeExtract 5753 2 - 5755:6(float16_t) ImageSampleDrefImplicitLod 5752 5753 5754 - 5756: 208(ptr) AccessChain 5506(texel) 207 - 5757:6(float16_t) Load 5756 - 5758:6(float16_t) FAdd 5757 5755 - 5759: 208(ptr) AccessChain 5506(texel) 207 - Store 5759 5758 - 5760: 356 Load 5735(t2DRect) - 5761: 5510 Load 5579(sShadow) - 5762: 371 SampledImage 5760 5761 - 5763:154(f16vec2) Load 156(f16c2) - 5764: 52(float) Load 215(compare) - 5765:6(float16_t) ImageSampleDrefImplicitLod 5762 5763 5764 - 5766: 208(ptr) AccessChain 5506(texel) 207 - 5767:6(float16_t) Load 5766 - 5768:6(float16_t) FAdd 5767 5765 - 5769: 208(ptr) AccessChain 5506(texel) 207 - Store 5769 5768 - 5770: 298 Load 5677(tCubeArray) - 5771: 5510 Load 5579(sShadow) - 5772: 391 SampledImage 5770 5771 - 5773: 249(fvec4) Load 251(c4) - 5774: 52(float) Load 215(compare) - 5775:6(float16_t) ImageSampleDrefImplicitLod 5772 5773 5774 - 5776: 208(ptr) AccessChain 5506(texel) 207 - 5777:6(float16_t) Load 5776 - 5778:6(float16_t) FAdd 5777 5775 - 5779: 208(ptr) AccessChain 5506(texel) 207 - Store 5779 5778 - 5780: 298 Load 5677(tCubeArray) - 5781: 5510 Load 5579(sShadow) - 5782: 391 SampledImage 5780 5781 - 5783: 7(f16vec4) Load 309(f16c4) - 5784: 52(float) Load 215(compare) - 5785:6(float16_t) ImageSampleDrefImplicitLod 5782 5783 5784 - 5786: 208(ptr) AccessChain 5506(texel) 207 - 5787:6(float16_t) Load 5786 - 5788:6(float16_t) FAdd 5787 5785 - 5789: 208(ptr) AccessChain 5506(texel) 207 - Store 5789 5788 - 5790: 7(f16vec4) Load 5506(texel) - ReturnValue 5790 + 5314(texel): 64(ptr) Variable Function + Store 5314(texel) 121 + 5317: 122 Load 5316(t1D) + 5321: 5318 Load 5320(s) + 5322: 123 SampledImage 5317 5321 + 5323: 52(float) Load 128(c1) + 5324: 7(f16vec4) ImageSampleImplicitLod 5322 5323 + 5325: 7(f16vec4) Load 5314(texel) + 5326: 7(f16vec4) FAdd 5325 5324 + Store 5314(texel) 5326 + 5327: 122 Load 5316(t1D) + 5328: 5318 Load 5320(s) + 5329: 123 SampledImage 5327 5328 + 5330:6(float16_t) Load 135(f16c1) + 5331:6(float16_t) Load 137(f16bias) + 5332: 7(f16vec4) ImageSampleImplicitLod 5329 5330 Bias 5331 + 5333: 7(f16vec4) Load 5314(texel) + 5334: 7(f16vec4) FAdd 5333 5332 + Store 5314(texel) 5334 + 5337: 142 Load 5336(t2D) + 5338: 5318 Load 5320(s) + 5339: 143 SampledImage 5337 5338 + 5340: 53(fvec2) Load 148(c2) + 5341: 7(f16vec4) ImageSampleImplicitLod 5339 5340 + 5342: 7(f16vec4) Load 5314(texel) + 5343: 7(f16vec4) FAdd 5342 5341 + Store 5314(texel) 5343 + 5344: 142 Load 5336(t2D) + 5345: 5318 Load 5320(s) + 5346: 143 SampledImage 5344 5345 + 5347:154(f16vec2) Load 156(f16c2) + 5348:6(float16_t) Load 137(f16bias) + 5349: 7(f16vec4) ImageSampleImplicitLod 5346 5347 Bias 5348 + 5350: 7(f16vec4) Load 5314(texel) + 5351: 7(f16vec4) FAdd 5350 5349 + Store 5314(texel) 5351 + 5354: 162 Load 5353(t3D) + 5355: 5318 Load 5320(s) + 5356: 163 SampledImage 5354 5355 + 5357: 167(fvec3) Load 169(c3) + 5358: 7(f16vec4) ImageSampleImplicitLod 5356 5357 + 5359: 7(f16vec4) Load 5314(texel) + 5360: 7(f16vec4) FAdd 5359 5358 + Store 5314(texel) 5360 + 5361: 162 Load 5353(t3D) + 5362: 5318 Load 5320(s) + 5363: 163 SampledImage 5361 5362 + 5364:175(f16vec3) Load 177(f16c3) + 5365:6(float16_t) Load 137(f16bias) + 5366: 7(f16vec4) ImageSampleImplicitLod 5363 5364 Bias 5365 + 5367: 7(f16vec4) Load 5314(texel) + 5368: 7(f16vec4) FAdd 5367 5366 + Store 5314(texel) 5368 + 5371: 183 Load 5370(tCube) + 5372: 5318 Load 5320(s) + 5373: 184 SampledImage 5371 5372 + 5374: 167(fvec3) Load 169(c3) + 5375: 7(f16vec4) ImageSampleImplicitLod 5373 5374 + 5376: 7(f16vec4) Load 5314(texel) + 5377: 7(f16vec4) FAdd 5376 5375 + Store 5314(texel) 5377 + 5378: 183 Load 5370(tCube) + 5379: 5318 Load 5320(s) + 5380: 184 SampledImage 5378 5379 + 5381:175(f16vec3) Load 177(f16c3) + 5382:6(float16_t) Load 137(f16bias) + 5383: 7(f16vec4) ImageSampleImplicitLod 5380 5381 Bias 5382 + 5384: 7(f16vec4) Load 5314(texel) + 5385: 7(f16vec4) FAdd 5384 5383 + Store 5314(texel) 5385 + 5386: 122 Load 5316(t1D) + 5388: 5318 Load 5387(sShadow) + 5389: 199 SampledImage 5386 5388 + 5390: 167(fvec3) Load 169(c3) + 5391: 52(float) CompositeExtract 5390 2 + 5392:6(float16_t) ImageSampleDrefImplicitLod 5389 5390 5391 + 5393: 208(ptr) AccessChain 5314(texel) 207 + 5394:6(float16_t) Load 5393 + 5395:6(float16_t) FAdd 5394 5392 + 5396: 208(ptr) AccessChain 5314(texel) 207 + Store 5396 5395 + 5397: 122 Load 5316(t1D) + 5398: 5318 Load 5387(sShadow) + 5399: 199 SampledImage 5397 5398 + 5400:154(f16vec2) Load 156(f16c2) + 5401: 52(float) Load 215(compare) + 5402:6(float16_t) Load 137(f16bias) + 5403:6(float16_t) ImageSampleDrefImplicitLod 5399 5400 5401 Bias 5402 + 5404: 208(ptr) AccessChain 5314(texel) 207 + 5405:6(float16_t) Load 5404 + 5406:6(float16_t) FAdd 5405 5403 + 5407: 208(ptr) AccessChain 5314(texel) 207 + Store 5407 5406 + 5408: 142 Load 5336(t2D) + 5409: 5318 Load 5387(sShadow) + 5410: 224 SampledImage 5408 5409 + 5411: 167(fvec3) Load 169(c3) + 5412: 52(float) CompositeExtract 5411 2 + 5413:6(float16_t) ImageSampleDrefImplicitLod 5410 5411 5412 + 5414: 208(ptr) AccessChain 5314(texel) 207 + 5415:6(float16_t) Load 5414 + 5416:6(float16_t) FAdd 5415 5413 + 5417: 208(ptr) AccessChain 5314(texel) 207 + Store 5417 5416 + 5418: 142 Load 5336(t2D) + 5419: 5318 Load 5387(sShadow) + 5420: 224 SampledImage 5418 5419 + 5421:154(f16vec2) Load 156(f16c2) + 5422: 52(float) Load 215(compare) + 5423:6(float16_t) Load 137(f16bias) + 5424:6(float16_t) ImageSampleDrefImplicitLod 5420 5421 5422 Bias 5423 + 5425: 208(ptr) AccessChain 5314(texel) 207 + 5426:6(float16_t) Load 5425 + 5427:6(float16_t) FAdd 5426 5424 + 5428: 208(ptr) AccessChain 5314(texel) 207 + Store 5428 5427 + 5429: 183 Load 5370(tCube) + 5430: 5318 Load 5387(sShadow) + 5431: 245 SampledImage 5429 5430 + 5432: 249(fvec4) Load 251(c4) + 5433: 52(float) CompositeExtract 5432 3 + 5434:6(float16_t) ImageSampleDrefImplicitLod 5431 5432 5433 + 5435: 208(ptr) AccessChain 5314(texel) 207 + 5436:6(float16_t) Load 5435 + 5437:6(float16_t) FAdd 5436 5434 + 5438: 208(ptr) AccessChain 5314(texel) 207 + Store 5438 5437 + 5439: 183 Load 5370(tCube) + 5440: 5318 Load 5387(sShadow) + 5441: 245 SampledImage 5439 5440 + 5442:175(f16vec3) Load 177(f16c3) + 5443: 52(float) Load 215(compare) + 5444:6(float16_t) Load 137(f16bias) + 5445:6(float16_t) ImageSampleDrefImplicitLod 5441 5442 5443 Bias 5444 + 5446: 208(ptr) AccessChain 5314(texel) 207 + 5447:6(float16_t) Load 5446 + 5448:6(float16_t) FAdd 5447 5445 + 5449: 208(ptr) AccessChain 5314(texel) 207 + Store 5449 5448 + 5452: 268 Load 5451(t1DArray) + 5453: 5318 Load 5320(s) + 5454: 269 SampledImage 5452 5453 + 5455: 53(fvec2) Load 148(c2) + 5456: 7(f16vec4) ImageSampleImplicitLod 5454 5455 + 5457: 7(f16vec4) Load 5314(texel) + 5458: 7(f16vec4) FAdd 5457 5456 + Store 5314(texel) 5458 + 5459: 268 Load 5451(t1DArray) + 5460: 5318 Load 5320(s) + 5461: 269 SampledImage 5459 5460 + 5462:154(f16vec2) Load 156(f16c2) + 5463:6(float16_t) Load 137(f16bias) + 5464: 7(f16vec4) ImageSampleImplicitLod 5461 5462 Bias 5463 + 5465: 7(f16vec4) Load 5314(texel) + 5466: 7(f16vec4) FAdd 5465 5464 + Store 5314(texel) 5466 + 5469: 283 Load 5468(t2DArray) + 5470: 5318 Load 5320(s) + 5471: 284 SampledImage 5469 5470 + 5472: 167(fvec3) Load 169(c3) + 5473: 7(f16vec4) ImageSampleImplicitLod 5471 5472 + 5474: 7(f16vec4) Load 5314(texel) + 5475: 7(f16vec4) FAdd 5474 5473 + Store 5314(texel) 5475 + 5476: 283 Load 5468(t2DArray) + 5477: 5318 Load 5320(s) + 5478: 284 SampledImage 5476 5477 + 5479:175(f16vec3) Load 177(f16c3) + 5480:6(float16_t) Load 137(f16bias) + 5481: 7(f16vec4) ImageSampleImplicitLod 5478 5479 Bias 5480 + 5482: 7(f16vec4) Load 5314(texel) + 5483: 7(f16vec4) FAdd 5482 5481 + Store 5314(texel) 5483 + 5486: 298 Load 5485(tCubeArray) + 5487: 5318 Load 5320(s) + 5488: 299 SampledImage 5486 5487 + 5489: 249(fvec4) Load 251(c4) + 5490: 7(f16vec4) ImageSampleImplicitLod 5488 5489 + 5491: 7(f16vec4) Load 5314(texel) + 5492: 7(f16vec4) FAdd 5491 5490 + Store 5314(texel) 5492 + 5493: 298 Load 5485(tCubeArray) + 5494: 5318 Load 5320(s) + 5495: 299 SampledImage 5493 5494 + 5496: 7(f16vec4) Load 309(f16c4) + 5497:6(float16_t) Load 137(f16bias) + 5498: 7(f16vec4) ImageSampleImplicitLod 5495 5496 Bias 5497 + 5499: 7(f16vec4) Load 5314(texel) + 5500: 7(f16vec4) FAdd 5499 5498 + Store 5314(texel) 5500 + 5501: 268 Load 5451(t1DArray) + 5502: 5318 Load 5387(sShadow) + 5503: 316 SampledImage 5501 5502 + 5504: 167(fvec3) Load 169(c3) + 5505: 52(float) CompositeExtract 5504 2 + 5506:6(float16_t) ImageSampleDrefImplicitLod 5503 5504 5505 + 5507: 208(ptr) AccessChain 5314(texel) 207 + 5508:6(float16_t) Load 5507 + 5509:6(float16_t) FAdd 5508 5506 + 5510: 208(ptr) AccessChain 5314(texel) 207 + Store 5510 5509 + 5511: 268 Load 5451(t1DArray) + 5512: 5318 Load 5387(sShadow) + 5513: 316 SampledImage 5511 5512 + 5514:154(f16vec2) Load 156(f16c2) + 5515: 52(float) Load 215(compare) + 5516:6(float16_t) Load 137(f16bias) + 5517:6(float16_t) ImageSampleDrefImplicitLod 5513 5514 5515 Bias 5516 + 5518: 208(ptr) AccessChain 5314(texel) 207 + 5519:6(float16_t) Load 5518 + 5520:6(float16_t) FAdd 5519 5517 + 5521: 208(ptr) AccessChain 5314(texel) 207 + Store 5521 5520 + 5522: 283 Load 5468(t2DArray) + 5523: 5318 Load 5387(sShadow) + 5524: 337 SampledImage 5522 5523 + 5525: 249(fvec4) Load 251(c4) + 5526: 52(float) CompositeExtract 5525 3 + 5527:6(float16_t) ImageSampleDrefImplicitLod 5524 5525 5526 + 5528: 208(ptr) AccessChain 5314(texel) 207 + 5529:6(float16_t) Load 5528 + 5530:6(float16_t) FAdd 5529 5527 + 5531: 208(ptr) AccessChain 5314(texel) 207 + Store 5531 5530 + 5532: 283 Load 5468(t2DArray) + 5533: 5318 Load 5387(sShadow) + 5534: 337 SampledImage 5532 5533 + 5535:175(f16vec3) Load 177(f16c3) + 5536: 52(float) Load 215(compare) + 5537:6(float16_t) ImageSampleDrefImplicitLod 5534 5535 5536 + 5538: 208(ptr) AccessChain 5314(texel) 207 + 5539:6(float16_t) Load 5538 + 5540:6(float16_t) FAdd 5539 5537 + 5541: 208(ptr) AccessChain 5314(texel) 207 + Store 5541 5540 + 5544: 356 Load 5543(t2DRect) + 5545: 5318 Load 5320(s) + 5546: 357 SampledImage 5544 5545 + 5547: 53(fvec2) Load 148(c2) + 5548: 7(f16vec4) ImageSampleImplicitLod 5546 5547 + 5549: 7(f16vec4) Load 5314(texel) + 5550: 7(f16vec4) FAdd 5549 5548 + Store 5314(texel) 5550 + 5551: 356 Load 5543(t2DRect) + 5552: 5318 Load 5320(s) + 5553: 357 SampledImage 5551 5552 + 5554:154(f16vec2) Load 156(f16c2) + 5555: 7(f16vec4) ImageSampleImplicitLod 5553 5554 + 5556: 7(f16vec4) Load 5314(texel) + 5557: 7(f16vec4) FAdd 5556 5555 + Store 5314(texel) 5557 + 5558: 356 Load 5543(t2DRect) + 5559: 5318 Load 5387(sShadow) + 5560: 371 SampledImage 5558 5559 + 5561: 167(fvec3) Load 169(c3) + 5562: 52(float) CompositeExtract 5561 2 + 5563:6(float16_t) ImageSampleDrefImplicitLod 5560 5561 5562 + 5564: 208(ptr) AccessChain 5314(texel) 207 + 5565:6(float16_t) Load 5564 + 5566:6(float16_t) FAdd 5565 5563 + 5567: 208(ptr) AccessChain 5314(texel) 207 + Store 5567 5566 + 5568: 356 Load 5543(t2DRect) + 5569: 5318 Load 5387(sShadow) + 5570: 371 SampledImage 5568 5569 + 5571:154(f16vec2) Load 156(f16c2) + 5572: 52(float) Load 215(compare) + 5573:6(float16_t) ImageSampleDrefImplicitLod 5570 5571 5572 + 5574: 208(ptr) AccessChain 5314(texel) 207 + 5575:6(float16_t) Load 5574 + 5576:6(float16_t) FAdd 5575 5573 + 5577: 208(ptr) AccessChain 5314(texel) 207 + Store 5577 5576 + 5578: 298 Load 5485(tCubeArray) + 5579: 5318 Load 5387(sShadow) + 5580: 391 SampledImage 5578 5579 + 5581: 249(fvec4) Load 251(c4) + 5582: 52(float) Load 215(compare) + 5583:6(float16_t) ImageSampleDrefImplicitLod 5580 5581 5582 + 5584: 208(ptr) AccessChain 5314(texel) 207 + 5585:6(float16_t) Load 5584 + 5586:6(float16_t) FAdd 5585 5583 + 5587: 208(ptr) AccessChain 5314(texel) 207 + Store 5587 5586 + 5588: 298 Load 5485(tCubeArray) + 5589: 5318 Load 5387(sShadow) + 5590: 391 SampledImage 5588 5589 + 5591: 7(f16vec4) Load 309(f16c4) + 5592: 52(float) Load 215(compare) + 5593:6(float16_t) ImageSampleDrefImplicitLod 5590 5591 5592 + 5594: 208(ptr) AccessChain 5314(texel) 207 + 5595:6(float16_t) Load 5594 + 5596:6(float16_t) FAdd 5595 5593 + 5597: 208(ptr) AccessChain 5314(texel) 207 + Store 5597 5596 + 5598: 7(f16vec4) Load 5314(texel) + ReturnValue 5598 FunctionEnd 117(testSubpassLoad(): 7(f16vec4) Function None 8 118: Label - 5796: 5793 Load 5795(subpass) - 5798: 7(f16vec4) ImageRead 5796 5797 - 5802: 5799 Load 5801(subpassMS) - 5803: 7(f16vec4) ImageRead 5802 5797 Sample 1326 - 5804: 7(f16vec4) FAdd 5798 5803 - ReturnValue 5804 + 5604: 5601 Load 5603(subpass) + 5606: 7(f16vec4) ImageRead 5604 5605 + 5610: 5607 Load 5609(subpassMS) + 5611: 7(f16vec4) ImageRead 5610 5605 Sample 1326 + 5612: 7(f16vec4) FAdd 5606 5611 + ReturnValue 5612 FunctionEnd diff --git a/Test/baseResults/spv.floatFetch.frag.out b/Test/baseResults/spv.floatFetch.frag.out index 8b9fc7290a..05d04e07aa 100644 --- a/Test/baseResults/spv.floatFetch.frag.out +++ b/Test/baseResults/spv.floatFetch.frag.out @@ -2,7 +2,7 @@ spv.floatFetch.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 3599 +// Id's are bound by 3503 Capability Shader Capability ImageGatherExtended @@ -24,7 +24,7 @@ Validation failed Extension "SPV_AMD_texture_gather_bias_lod" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 127 138 150 197 283 371 866 874 882 2665 3590 3598 + EntryPoint Fragment 4 "main" 127 138 150 197 283 371 866 873 880 2603 3494 3502 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_texture_gather_bias_lod" @@ -117,79 +117,79 @@ Validation failed Name 807 "texel" Name 863 "texel" Name 866 "dPdxy1" - Name 874 "dPdxy2" - Name 882 "dPdxy3" - Name 986 "texel" - Name 1082 "texel" - Name 1177 "texel" - Name 1272 "texel" - Name 1332 "texel" - Name 1369 "texel" - Name 1409 "texel" - Name 1437 "texel" - Name 1453 "texel" - Name 1470 "size" - Name 1688 "lod" - Name 1758 "levels" - Name 1827 "samples" - Name 1841 "texel" - Name 1844 "i1D" - Name 1853 "i2D" - Name 1862 "i3D" - Name 1871 "i2DRect" - Name 1880 "iCube" - Name 1889 "iBuffer" - Name 1898 "i1DArray" - Name 1907 "i2DArray" - Name 1916 "iCubeArray" - Name 1925 "i2DMS" - Name 1934 "i2DMSArray" - Name 1988 "texel" - Name 1991 "ResType" - Name 2009 "ResType" - Name 2059 "texel" + Name 873 "dPdxy2" + Name 880 "dPdxy3" + Name 972 "texel" + Name 1057 "texel" + Name 1142 "texel" + Name 1227 "texel" + Name 1287 "texel" + Name 1324 "texel" + Name 1364 "texel" + Name 1392 "texel" + Name 1408 "texel" + Name 1425 "size" + Name 1643 "lod" + Name 1713 "levels" + Name 1782 "samples" + Name 1796 "texel" + Name 1799 "i1D" + Name 1808 "i2D" + Name 1817 "i3D" + Name 1826 "i2DRect" + Name 1835 "iCube" + Name 1844 "iBuffer" + Name 1853 "i1DArray" + Name 1862 "i2DArray" + Name 1871 "iCubeArray" + Name 1880 "i2DMS" + Name 1889 "i2DMSArray" + Name 1943 "texel" + Name 1946 "ResType" + Name 1964 "ResType" + Name 2014 "texel" + Name 2056 "texel" Name 2101 "texel" - Name 2146 "texel" - Name 2176 "texel" - Name 2258 "texel" - Name 2317 "texel" - Name 2369 "texel" - Name 2407 "texel" - Name 2466 "texel" - Name 2503 "texel" - Name 2550 "texel" - Name 2578 "texel" - Name 2594 "texel" - Name 2610 "texel" - Name 2662 "texel" - Name 2665 "lodClamp" - Name 2729 "texel" - Name 2829 "texel" - Name 2867 "texel" - Name 2937 "texel" - Name 3011 "texel" - Name 3126 "texel" - Name 3174 "texel" - Name 3262 "texel" - Name 3264 "t1D" - Name 3268 "s" - Name 3276 "t2D" - Name 3285 "t3D" - Name 3294 "tCube" - Name 3303 "sShadow" - Name 3334 "t1DArray" - Name 3343 "t2DArray" - Name 3352 "tCubeArray" - Name 3381 "t2DRect" - Name 3414 "subpass" - Name 3420 "subpassMS" - Name 3426 "result" - Name 3511 "param" - Name 3590 "fragColor" - Name 3593 "tBuffer" - Name 3595 "t2DMS" - Name 3597 "t2DMSArray" - Name 3598 "bias" + Name 2131 "texel" + Name 2203 "texel" + Name 2255 "texel" + Name 2307 "texel" + Name 2345 "texel" + Name 2404 "texel" + Name 2441 "texel" + Name 2488 "texel" + Name 2516 "texel" + Name 2532 "texel" + Name 2548 "texel" + Name 2600 "texel" + Name 2603 "lodClamp" + Name 2667 "texel" + Name 2767 "texel" + Name 2805 "texel" + Name 2875 "texel" + Name 2941 "texel" + Name 3044 "texel" + Name 3087 "texel" + Name 3166 "texel" + Name 3168 "t1D" + Name 3172 "s" + Name 3180 "t2D" + Name 3189 "t3D" + Name 3198 "tCube" + Name 3207 "sShadow" + Name 3238 "t1DArray" + Name 3247 "t2DArray" + Name 3256 "tCubeArray" + Name 3285 "t2DRect" + Name 3318 "subpass" + Name 3324 "subpassMS" + Name 3330 "result" + Name 3415 "param" + Name 3494 "fragColor" + Name 3497 "tBuffer" + Name 3499 "t2DMS" + Name 3501 "t2DMSArray" + Name 3502 "bias" Decorate 124(s1D) DescriptorSet 0 Decorate 124(s1D) Binding 0 Decorate 127(c1) Location 0 @@ -233,65 +233,65 @@ Validation failed Decorate 795(s2DMSArray) DescriptorSet 0 Decorate 795(s2DMSArray) Binding 10 Decorate 866(dPdxy1) Location 8 - Decorate 874(dPdxy2) Location 9 - Decorate 882(dPdxy3) Location 10 - Decorate 1844(i1D) DescriptorSet 1 - Decorate 1844(i1D) Binding 0 - Decorate 1853(i2D) DescriptorSet 1 - Decorate 1853(i2D) Binding 1 - Decorate 1862(i3D) DescriptorSet 1 - Decorate 1862(i3D) Binding 2 - Decorate 1871(i2DRect) DescriptorSet 1 - Decorate 1871(i2DRect) Binding 3 - Decorate 1880(iCube) DescriptorSet 1 - Decorate 1880(iCube) Binding 4 - Decorate 1889(iBuffer) DescriptorSet 1 - Decorate 1889(iBuffer) Binding 8 - Decorate 1898(i1DArray) DescriptorSet 1 - Decorate 1898(i1DArray) Binding 5 - Decorate 1907(i2DArray) DescriptorSet 1 - Decorate 1907(i2DArray) Binding 6 - Decorate 1916(iCubeArray) DescriptorSet 1 - Decorate 1916(iCubeArray) Binding 7 - Decorate 1925(i2DMS) DescriptorSet 1 - Decorate 1925(i2DMS) Binding 9 - Decorate 1934(i2DMSArray) DescriptorSet 1 - Decorate 1934(i2DMSArray) Binding 10 - Decorate 2665(lodClamp) Location 7 - Decorate 3264(t1D) DescriptorSet 2 - Decorate 3264(t1D) Binding 0 - Decorate 3268(s) DescriptorSet 2 - Decorate 3268(s) Binding 11 - Decorate 3276(t2D) DescriptorSet 2 - Decorate 3276(t2D) Binding 1 - Decorate 3285(t3D) DescriptorSet 2 - Decorate 3285(t3D) Binding 2 - Decorate 3294(tCube) DescriptorSet 2 - Decorate 3294(tCube) Binding 4 - Decorate 3303(sShadow) DescriptorSet 2 - Decorate 3303(sShadow) Binding 12 - Decorate 3334(t1DArray) DescriptorSet 2 - Decorate 3334(t1DArray) Binding 5 - Decorate 3343(t2DArray) DescriptorSet 2 - Decorate 3343(t2DArray) Binding 6 - Decorate 3352(tCubeArray) DescriptorSet 2 - Decorate 3352(tCubeArray) Binding 7 - Decorate 3381(t2DRect) DescriptorSet 2 - Decorate 3381(t2DRect) Binding 3 - Decorate 3414(subpass) DescriptorSet 3 - Decorate 3414(subpass) Binding 0 - Decorate 3414(subpass) InputAttachmentIndex 0 - Decorate 3420(subpassMS) DescriptorSet 3 - Decorate 3420(subpassMS) Binding 1 - Decorate 3420(subpassMS) InputAttachmentIndex 0 - Decorate 3590(fragColor) Location 0 - Decorate 3593(tBuffer) DescriptorSet 2 - Decorate 3593(tBuffer) Binding 8 - Decorate 3595(t2DMS) DescriptorSet 2 - Decorate 3595(t2DMS) Binding 9 - Decorate 3597(t2DMSArray) DescriptorSet 2 - Decorate 3597(t2DMSArray) Binding 10 - Decorate 3598(bias) Location 6 + Decorate 873(dPdxy2) Location 9 + Decorate 880(dPdxy3) Location 10 + Decorate 1799(i1D) DescriptorSet 1 + Decorate 1799(i1D) Binding 0 + Decorate 1808(i2D) DescriptorSet 1 + Decorate 1808(i2D) Binding 1 + Decorate 1817(i3D) DescriptorSet 1 + Decorate 1817(i3D) Binding 2 + Decorate 1826(i2DRect) DescriptorSet 1 + Decorate 1826(i2DRect) Binding 3 + Decorate 1835(iCube) DescriptorSet 1 + Decorate 1835(iCube) Binding 4 + Decorate 1844(iBuffer) DescriptorSet 1 + Decorate 1844(iBuffer) Binding 8 + Decorate 1853(i1DArray) DescriptorSet 1 + Decorate 1853(i1DArray) Binding 5 + Decorate 1862(i2DArray) DescriptorSet 1 + Decorate 1862(i2DArray) Binding 6 + Decorate 1871(iCubeArray) DescriptorSet 1 + Decorate 1871(iCubeArray) Binding 7 + Decorate 1880(i2DMS) DescriptorSet 1 + Decorate 1880(i2DMS) Binding 9 + Decorate 1889(i2DMSArray) DescriptorSet 1 + Decorate 1889(i2DMSArray) Binding 10 + Decorate 2603(lodClamp) Location 7 + Decorate 3168(t1D) DescriptorSet 2 + Decorate 3168(t1D) Binding 0 + Decorate 3172(s) DescriptorSet 2 + Decorate 3172(s) Binding 11 + Decorate 3180(t2D) DescriptorSet 2 + Decorate 3180(t2D) Binding 1 + Decorate 3189(t3D) DescriptorSet 2 + Decorate 3189(t3D) Binding 2 + Decorate 3198(tCube) DescriptorSet 2 + Decorate 3198(tCube) Binding 4 + Decorate 3207(sShadow) DescriptorSet 2 + Decorate 3207(sShadow) Binding 12 + Decorate 3238(t1DArray) DescriptorSet 2 + Decorate 3238(t1DArray) Binding 5 + Decorate 3247(t2DArray) DescriptorSet 2 + Decorate 3247(t2DArray) Binding 6 + Decorate 3256(tCubeArray) DescriptorSet 2 + Decorate 3256(tCubeArray) Binding 7 + Decorate 3285(t2DRect) DescriptorSet 2 + Decorate 3285(t2DRect) Binding 3 + Decorate 3318(subpass) DescriptorSet 3 + Decorate 3318(subpass) Binding 0 + Decorate 3318(subpass) InputAttachmentIndex 0 + Decorate 3324(subpassMS) DescriptorSet 3 + Decorate 3324(subpassMS) Binding 1 + Decorate 3324(subpassMS) InputAttachmentIndex 0 + Decorate 3494(fragColor) Location 0 + Decorate 3497(tBuffer) DescriptorSet 2 + Decorate 3497(tBuffer) Binding 8 + Decorate 3499(t2DMS) DescriptorSet 2 + Decorate 3499(t2DMS) Binding 9 + Decorate 3501(t2DMSArray) DescriptorSet 2 + Decorate 3501(t2DMSArray) Binding 10 + Decorate 3502(bias) Location 6 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -400,319 +400,319 @@ Validation failed 795(s2DMSArray): 794(ptr) Variable UniformConstant 799: 47(int) Constant 2 866(dPdxy1): 126(ptr) Variable Input - 874(dPdxy2): 137(ptr) Variable Input - 882(dPdxy3): 149(ptr) Variable Input - 1275: 47(int) Constant 0 - 1372: 172(int) Constant 4 - 1373: TypeArray 451(ivec2) 1372 - 1374: 1373 ConstantComposite 452 452 452 452 - 1469: TypePointer Function 48(ivec4) - 1471: 48(ivec4) ConstantComposite 1275 1275 1275 1275 - 1477: TypePointer Function 47(int) - 1492: 172(int) Constant 1 - 1507: 172(int) Constant 2 - 1687: TypePointer Function 52(fvec2) - 1689: 52(fvec2) ConstantComposite 119 119 - 1842: TypeImage 6(float) 1D nonsampled format:Rgba16f + 873(dPdxy2): 137(ptr) Variable Input + 880(dPdxy3): 149(ptr) Variable Input + 1230: 47(int) Constant 0 + 1327: 172(int) Constant 4 + 1328: TypeArray 451(ivec2) 1327 + 1329: 1328 ConstantComposite 452 452 452 452 + 1424: TypePointer Function 48(ivec4) + 1426: 48(ivec4) ConstantComposite 1230 1230 1230 1230 + 1432: TypePointer Function 47(int) + 1447: 172(int) Constant 1 + 1462: 172(int) Constant 2 + 1642: TypePointer Function 52(fvec2) + 1644: 52(fvec2) ConstantComposite 119 119 + 1797: TypeImage 6(float) 1D nonsampled format:Rgba16f + 1798: TypePointer UniformConstant 1797 + 1799(i1D): 1798(ptr) Variable UniformConstant + 1806: TypeImage 6(float) 2D nonsampled format:Rgba16f + 1807: TypePointer UniformConstant 1806 + 1808(i2D): 1807(ptr) Variable UniformConstant + 1815: TypeImage 6(float) 3D nonsampled format:Rgba16f + 1816: TypePointer UniformConstant 1815 + 1817(i3D): 1816(ptr) Variable UniformConstant + 1824: TypeImage 6(float) Rect nonsampled format:Rgba16f + 1825: TypePointer UniformConstant 1824 + 1826(i2DRect): 1825(ptr) Variable UniformConstant + 1833: TypeImage 6(float) Cube nonsampled format:Rgba16f + 1834: TypePointer UniformConstant 1833 + 1835(iCube): 1834(ptr) Variable UniformConstant + 1842: TypeImage 6(float) Buffer nonsampled format:Rgba16f 1843: TypePointer UniformConstant 1842 - 1844(i1D): 1843(ptr) Variable UniformConstant - 1851: TypeImage 6(float) 2D nonsampled format:Rgba16f + 1844(iBuffer): 1843(ptr) Variable UniformConstant + 1851: TypeImage 6(float) 1D array nonsampled format:Rgba16f 1852: TypePointer UniformConstant 1851 - 1853(i2D): 1852(ptr) Variable UniformConstant - 1860: TypeImage 6(float) 3D nonsampled format:Rgba16f + 1853(i1DArray): 1852(ptr) Variable UniformConstant + 1860: TypeImage 6(float) 2D array nonsampled format:Rgba16f 1861: TypePointer UniformConstant 1860 - 1862(i3D): 1861(ptr) Variable UniformConstant - 1869: TypeImage 6(float) Rect nonsampled format:Rgba16f + 1862(i2DArray): 1861(ptr) Variable UniformConstant + 1869: TypeImage 6(float) Cube array nonsampled format:Rgba16f 1870: TypePointer UniformConstant 1869 - 1871(i2DRect): 1870(ptr) Variable UniformConstant - 1878: TypeImage 6(float) Cube nonsampled format:Rgba16f +1871(iCubeArray): 1870(ptr) Variable UniformConstant + 1878: TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba16f 1879: TypePointer UniformConstant 1878 - 1880(iCube): 1879(ptr) Variable UniformConstant - 1887: TypeImage 6(float) Buffer nonsampled format:Rgba16f + 1880(i2DMS): 1879(ptr) Variable UniformConstant + 1887: TypeImage 6(float) 2D array multi-sampled nonsampled format:Rgba16f 1888: TypePointer UniformConstant 1887 - 1889(iBuffer): 1888(ptr) Variable UniformConstant - 1896: TypeImage 6(float) 1D array nonsampled format:Rgba16f - 1897: TypePointer UniformConstant 1896 - 1898(i1DArray): 1897(ptr) Variable UniformConstant - 1905: TypeImage 6(float) 2D array nonsampled format:Rgba16f - 1906: TypePointer UniformConstant 1905 - 1907(i2DArray): 1906(ptr) Variable UniformConstant - 1914: TypeImage 6(float) Cube array nonsampled format:Rgba16f - 1915: TypePointer UniformConstant 1914 -1916(iCubeArray): 1915(ptr) Variable UniformConstant - 1923: TypeImage 6(float) 2D multi-sampled nonsampled format:Rgba16f - 1924: TypePointer UniformConstant 1923 - 1925(i2DMS): 1924(ptr) Variable UniformConstant - 1932: TypeImage 6(float) 2D array multi-sampled nonsampled format:Rgba16f - 1933: TypePointer UniformConstant 1932 -1934(i2DMSArray): 1933(ptr) Variable UniformConstant - 1991(ResType): TypeStruct 47(int) 7(fvec4) - 2009(ResType): TypeStruct 47(int) 6(float) - 2506: 451(ivec2) ConstantComposite 445 799 - 2507: 47(int) Constant 3 - 2508: 47(int) Constant 4 - 2509: 451(ivec2) ConstantComposite 2507 2508 - 2510: 47(int) Constant 15 - 2511: 47(int) Constant 16 - 2512: 451(ivec2) ConstantComposite 2510 2511 - 2513: 47(int) Constant 4294967294 - 2514: 451(ivec2) ConstantComposite 2513 1275 - 2515: 1373 ConstantComposite 2506 2509 2512 2514 - 2665(lodClamp): 126(ptr) Variable Input - 3263: TypePointer UniformConstant 121 - 3264(t1D): 3263(ptr) Variable UniformConstant - 3266: TypeSampler - 3267: TypePointer UniformConstant 3266 - 3268(s): 3267(ptr) Variable UniformConstant - 3275: TypePointer UniformConstant 132 - 3276(t2D): 3275(ptr) Variable UniformConstant - 3284: TypePointer UniformConstant 143 - 3285(t3D): 3284(ptr) Variable UniformConstant - 3293: TypePointer UniformConstant 155 - 3294(tCube): 3293(ptr) Variable UniformConstant - 3303(sShadow): 3267(ptr) Variable UniformConstant - 3333: TypePointer UniformConstant 205 - 3334(t1DArray): 3333(ptr) Variable UniformConstant - 3342: TypePointer UniformConstant 214 - 3343(t2DArray): 3342(ptr) Variable UniformConstant - 3351: TypePointer UniformConstant 223 -3352(tCubeArray): 3351(ptr) Variable UniformConstant - 3380: TypePointer UniformConstant 256 - 3381(t2DRect): 3380(ptr) Variable UniformConstant - 3412: TypeImage 6(float) SubpassData nonsampled format:Unknown - 3413: TypePointer UniformConstant 3412 - 3414(subpass): 3413(ptr) Variable UniformConstant - 3416: 451(ivec2) ConstantComposite 1275 1275 - 3418: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown - 3419: TypePointer UniformConstant 3418 - 3420(subpassMS): 3419(ptr) Variable UniformConstant - 3589: TypePointer Output 7(fvec4) - 3590(fragColor): 3589(ptr) Variable Output - 3592: TypePointer UniformConstant 770 - 3593(tBuffer): 3592(ptr) Variable UniformConstant - 3594: TypePointer UniformConstant 781 - 3595(t2DMS): 3594(ptr) Variable UniformConstant - 3596: TypePointer UniformConstant 792 -3597(t2DMSArray): 3596(ptr) Variable UniformConstant - 3598(bias): 126(ptr) Variable Input +1889(i2DMSArray): 1888(ptr) Variable UniformConstant + 1946(ResType): TypeStruct 47(int) 7(fvec4) + 1964(ResType): TypeStruct 47(int) 6(float) + 2444: 451(ivec2) ConstantComposite 445 799 + 2445: 47(int) Constant 3 + 2446: 47(int) Constant 4 + 2447: 451(ivec2) ConstantComposite 2445 2446 + 2448: 47(int) Constant 15 + 2449: 47(int) Constant 16 + 2450: 451(ivec2) ConstantComposite 2448 2449 + 2451: 47(int) Constant 4294967294 + 2452: 451(ivec2) ConstantComposite 2451 1230 + 2453: 1328 ConstantComposite 2444 2447 2450 2452 + 2603(lodClamp): 126(ptr) Variable Input + 3167: TypePointer UniformConstant 121 + 3168(t1D): 3167(ptr) Variable UniformConstant + 3170: TypeSampler + 3171: TypePointer UniformConstant 3170 + 3172(s): 3171(ptr) Variable UniformConstant + 3179: TypePointer UniformConstant 132 + 3180(t2D): 3179(ptr) Variable UniformConstant + 3188: TypePointer UniformConstant 143 + 3189(t3D): 3188(ptr) Variable UniformConstant + 3197: TypePointer UniformConstant 155 + 3198(tCube): 3197(ptr) Variable UniformConstant + 3207(sShadow): 3171(ptr) Variable UniformConstant + 3237: TypePointer UniformConstant 205 + 3238(t1DArray): 3237(ptr) Variable UniformConstant + 3246: TypePointer UniformConstant 214 + 3247(t2DArray): 3246(ptr) Variable UniformConstant + 3255: TypePointer UniformConstant 223 +3256(tCubeArray): 3255(ptr) Variable UniformConstant + 3284: TypePointer UniformConstant 256 + 3285(t2DRect): 3284(ptr) Variable UniformConstant + 3316: TypeImage 6(float) SubpassData nonsampled format:Unknown + 3317: TypePointer UniformConstant 3316 + 3318(subpass): 3317(ptr) Variable UniformConstant + 3320: 451(ivec2) ConstantComposite 1230 1230 + 3322: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown + 3323: TypePointer UniformConstant 3322 + 3324(subpassMS): 3323(ptr) Variable UniformConstant + 3493: TypePointer Output 7(fvec4) + 3494(fragColor): 3493(ptr) Variable Output + 3496: TypePointer UniformConstant 770 + 3497(tBuffer): 3496(ptr) Variable UniformConstant + 3498: TypePointer UniformConstant 781 + 3499(t2DMS): 3498(ptr) Variable UniformConstant + 3500: TypePointer UniformConstant 792 +3501(t2DMSArray): 3500(ptr) Variable UniformConstant + 3502(bias): 126(ptr) Variable Input 4(main): 2 Function None 3 5: Label - 3426(result): 63(ptr) Variable Function - 3511(param): 63(ptr) Variable Function - Store 3426(result) 120 - 3427: 7(fvec4) FunctionCall 9(testTexture() - 3428: 7(fvec4) Load 3426(result) + 3330(result): 63(ptr) Variable Function + 3415(param): 63(ptr) Variable Function + Store 3330(result) 120 + 3331: 7(fvec4) FunctionCall 9(testTexture() + 3332: 7(fvec4) Load 3330(result) + 3333: 7(fvec4) FAdd 3332 3331 + Store 3330(result) 3333 + 3334: 7(fvec4) FunctionCall 11(testTextureProj() + 3335: 7(fvec4) Load 3330(result) + 3336: 7(fvec4) FAdd 3335 3334 + Store 3330(result) 3336 + 3337: 7(fvec4) FunctionCall 13(testTextureLod() + 3338: 7(fvec4) Load 3330(result) + 3339: 7(fvec4) FAdd 3338 3337 + Store 3330(result) 3339 + 3340: 7(fvec4) FunctionCall 15(testTextureOffset() + 3341: 7(fvec4) Load 3330(result) + 3342: 7(fvec4) FAdd 3341 3340 + Store 3330(result) 3342 + 3343: 7(fvec4) FunctionCall 19(testTextureLodOffset() + 3344: 7(fvec4) Load 3330(result) + 3345: 7(fvec4) FAdd 3344 3343 + Store 3330(result) 3345 + 3346: 7(fvec4) FunctionCall 21(testTextureProjLodOffset() + 3347: 7(fvec4) Load 3330(result) + 3348: 7(fvec4) FAdd 3347 3346 + Store 3330(result) 3348 + 3349: 7(fvec4) FunctionCall 23(testTexelFetch() + 3350: 7(fvec4) Load 3330(result) + 3351: 7(fvec4) FAdd 3350 3349 + Store 3330(result) 3351 + 3352: 7(fvec4) FunctionCall 25(testTexelFetchOffset() + 3353: 7(fvec4) Load 3330(result) + 3354: 7(fvec4) FAdd 3353 3352 + Store 3330(result) 3354 + 3355: 7(fvec4) FunctionCall 27(testTextureGrad() + 3356: 7(fvec4) Load 3330(result) + 3357: 7(fvec4) FAdd 3356 3355 + Store 3330(result) 3357 + 3358: 7(fvec4) FunctionCall 29(testTextureGradOffset() + 3359: 7(fvec4) Load 3330(result) + 3360: 7(fvec4) FAdd 3359 3358 + Store 3330(result) 3360 + 3361: 7(fvec4) FunctionCall 31(testTextureProjGrad() + 3362: 7(fvec4) Load 3330(result) + 3363: 7(fvec4) FAdd 3362 3361 + Store 3330(result) 3363 + 3364: 7(fvec4) FunctionCall 33(testTextureProjGradoffset() + 3365: 7(fvec4) Load 3330(result) + 3366: 7(fvec4) FAdd 3365 3364 + Store 3330(result) 3366 + 3367: 7(fvec4) FunctionCall 35(testTextureGather() + 3368: 7(fvec4) Load 3330(result) + 3369: 7(fvec4) FAdd 3368 3367 + Store 3330(result) 3369 + 3370: 7(fvec4) FunctionCall 37(testTextureGatherOffset() + 3371: 7(fvec4) Load 3330(result) + 3372: 7(fvec4) FAdd 3371 3370 + Store 3330(result) 3372 + 3373: 7(fvec4) FunctionCall 39(testTextureGatherOffsets() + 3374: 7(fvec4) Load 3330(result) + 3375: 7(fvec4) FAdd 3374 3373 + Store 3330(result) 3375 + 3376: 7(fvec4) FunctionCall 41(testTextureGatherLod() + 3377: 7(fvec4) Load 3330(result) + 3378: 7(fvec4) FAdd 3377 3376 + Store 3330(result) 3378 + 3379: 7(fvec4) FunctionCall 43(testTextureGatherLodOffset() + 3380: 7(fvec4) Load 3330(result) + 3381: 7(fvec4) FAdd 3380 3379 + Store 3330(result) 3381 + 3382: 7(fvec4) FunctionCall 45(testTextureGatherLodOffsets() + 3383: 7(fvec4) Load 3330(result) + 3384: 7(fvec4) FAdd 3383 3382 + Store 3330(result) 3384 + 3385: 48(ivec4) FunctionCall 50(testTextureSize() + 3386: 7(fvec4) ConvertSToF 3385 + 3387: 7(fvec4) Load 3330(result) + 3388: 7(fvec4) FAdd 3387 3386 + Store 3330(result) 3388 + 3389: 52(fvec2) FunctionCall 54(testTextureQueryLod() + 3390: 6(float) CompositeExtract 3389 0 + 3391: 6(float) CompositeExtract 3389 1 + 3392: 52(fvec2) CompositeConstruct 3390 3391 + 3393: 7(fvec4) Load 3330(result) + 3394: 52(fvec2) VectorShuffle 3393 3393 0 1 + 3395: 52(fvec2) FAdd 3394 3392 + 3396: 174(ptr) AccessChain 3330(result) 173 + 3397: 6(float) CompositeExtract 3395 0 + Store 3396 3397 + 3398: 174(ptr) AccessChain 3330(result) 1447 + 3399: 6(float) CompositeExtract 3395 1 + Store 3398 3399 + 3400: 47(int) FunctionCall 57(testTextureQueryLevels() + 3401: 6(float) ConvertSToF 3400 + 3402: 174(ptr) AccessChain 3330(result) 173 + 3403: 6(float) Load 3402 + 3404: 6(float) FAdd 3403 3401 + 3405: 174(ptr) AccessChain 3330(result) 173 + Store 3405 3404 + 3406: 47(int) FunctionCall 59(testTextureSamples() + 3407: 6(float) ConvertSToF 3406 + 3408: 174(ptr) AccessChain 3330(result) 173 + 3409: 6(float) Load 3408 + 3410: 6(float) FAdd 3409 3407 + 3411: 174(ptr) AccessChain 3330(result) 173 + Store 3411 3410 + 3412: 7(fvec4) FunctionCall 61(testImageLoad() + 3413: 7(fvec4) Load 3330(result) + 3414: 7(fvec4) FAdd 3413 3412 + Store 3330(result) 3414 + 3416: 7(fvec4) Load 3330(result) + Store 3415(param) 3416 + 3417: 2 FunctionCall 66(testImageStore(vf4;) 3415(param) + 3418: 7(fvec4) FunctionCall 68(testSparseTexture() + 3419: 7(fvec4) Load 3330(result) + 3420: 7(fvec4) FAdd 3419 3418 + Store 3330(result) 3420 + 3421: 7(fvec4) FunctionCall 70(testSparseTextureLod() + 3422: 7(fvec4) Load 3330(result) + 3423: 7(fvec4) FAdd 3422 3421 + Store 3330(result) 3423 + 3424: 7(fvec4) FunctionCall 72(testSparseTextureOffset() + 3425: 7(fvec4) Load 3330(result) + 3426: 7(fvec4) FAdd 3425 3424 + Store 3330(result) 3426 + 3427: 7(fvec4) FunctionCall 74(testSparseTextureLodOffset() + 3428: 7(fvec4) Load 3330(result) 3429: 7(fvec4) FAdd 3428 3427 - Store 3426(result) 3429 - 3430: 7(fvec4) FunctionCall 11(testTextureProj() - 3431: 7(fvec4) Load 3426(result) + Store 3330(result) 3429 + 3430: 7(fvec4) FunctionCall 76(testSparseTextureGrad() + 3431: 7(fvec4) Load 3330(result) 3432: 7(fvec4) FAdd 3431 3430 - Store 3426(result) 3432 - 3433: 7(fvec4) FunctionCall 13(testTextureLod() - 3434: 7(fvec4) Load 3426(result) + Store 3330(result) 3432 + 3433: 7(fvec4) FunctionCall 78(testSparseTextureGradOffset() + 3434: 7(fvec4) Load 3330(result) 3435: 7(fvec4) FAdd 3434 3433 - Store 3426(result) 3435 - 3436: 7(fvec4) FunctionCall 15(testTextureOffset() - 3437: 7(fvec4) Load 3426(result) + Store 3330(result) 3435 + 3436: 7(fvec4) FunctionCall 80(testSparseTexelFetch() + 3437: 7(fvec4) Load 3330(result) 3438: 7(fvec4) FAdd 3437 3436 - Store 3426(result) 3438 - 3439: 7(fvec4) FunctionCall 19(testTextureLodOffset() - 3440: 7(fvec4) Load 3426(result) + Store 3330(result) 3438 + 3439: 7(fvec4) FunctionCall 82(testSparseTexelFetchOffset() + 3440: 7(fvec4) Load 3330(result) 3441: 7(fvec4) FAdd 3440 3439 - Store 3426(result) 3441 - 3442: 7(fvec4) FunctionCall 21(testTextureProjLodOffset() - 3443: 7(fvec4) Load 3426(result) + Store 3330(result) 3441 + 3442: 7(fvec4) FunctionCall 84(testSparseTextureGather() + 3443: 7(fvec4) Load 3330(result) 3444: 7(fvec4) FAdd 3443 3442 - Store 3426(result) 3444 - 3445: 7(fvec4) FunctionCall 23(testTexelFetch() - 3446: 7(fvec4) Load 3426(result) + Store 3330(result) 3444 + 3445: 7(fvec4) FunctionCall 86(testSparseTextureGatherOffset() + 3446: 7(fvec4) Load 3330(result) 3447: 7(fvec4) FAdd 3446 3445 - Store 3426(result) 3447 - 3448: 7(fvec4) FunctionCall 25(testTexelFetchOffset() - 3449: 7(fvec4) Load 3426(result) + Store 3330(result) 3447 + 3448: 7(fvec4) FunctionCall 88(testSparseTextureGatherOffsets() + 3449: 7(fvec4) Load 3330(result) 3450: 7(fvec4) FAdd 3449 3448 - Store 3426(result) 3450 - 3451: 7(fvec4) FunctionCall 27(testTextureGrad() - 3452: 7(fvec4) Load 3426(result) + Store 3330(result) 3450 + 3451: 7(fvec4) FunctionCall 90(testSparseTextureGatherLod() + 3452: 7(fvec4) Load 3330(result) 3453: 7(fvec4) FAdd 3452 3451 - Store 3426(result) 3453 - 3454: 7(fvec4) FunctionCall 29(testTextureGradOffset() - 3455: 7(fvec4) Load 3426(result) + Store 3330(result) 3453 + 3454: 7(fvec4) FunctionCall 92(testSparseTextureGatherLodOffset() + 3455: 7(fvec4) Load 3330(result) 3456: 7(fvec4) FAdd 3455 3454 - Store 3426(result) 3456 - 3457: 7(fvec4) FunctionCall 31(testTextureProjGrad() - 3458: 7(fvec4) Load 3426(result) + Store 3330(result) 3456 + 3457: 7(fvec4) FunctionCall 94(testSparseTextureGatherLodOffsets() + 3458: 7(fvec4) Load 3330(result) 3459: 7(fvec4) FAdd 3458 3457 - Store 3426(result) 3459 - 3460: 7(fvec4) FunctionCall 33(testTextureProjGradoffset() - 3461: 7(fvec4) Load 3426(result) + Store 3330(result) 3459 + 3460: 7(fvec4) FunctionCall 96(testSparseImageLoad() + 3461: 7(fvec4) Load 3330(result) 3462: 7(fvec4) FAdd 3461 3460 - Store 3426(result) 3462 - 3463: 7(fvec4) FunctionCall 35(testTextureGather() - 3464: 7(fvec4) Load 3426(result) + Store 3330(result) 3462 + 3463: 7(fvec4) FunctionCall 98(testSparseTextureClamp() + 3464: 7(fvec4) Load 3330(result) 3465: 7(fvec4) FAdd 3464 3463 - Store 3426(result) 3465 - 3466: 7(fvec4) FunctionCall 37(testTextureGatherOffset() - 3467: 7(fvec4) Load 3426(result) + Store 3330(result) 3465 + 3466: 7(fvec4) FunctionCall 100(testTextureClamp() + 3467: 7(fvec4) Load 3330(result) 3468: 7(fvec4) FAdd 3467 3466 - Store 3426(result) 3468 - 3469: 7(fvec4) FunctionCall 39(testTextureGatherOffsets() - 3470: 7(fvec4) Load 3426(result) + Store 3330(result) 3468 + 3469: 7(fvec4) FunctionCall 102(testSparseTextureOffsetClamp() + 3470: 7(fvec4) Load 3330(result) 3471: 7(fvec4) FAdd 3470 3469 - Store 3426(result) 3471 - 3472: 7(fvec4) FunctionCall 41(testTextureGatherLod() - 3473: 7(fvec4) Load 3426(result) + Store 3330(result) 3471 + 3472: 7(fvec4) FunctionCall 104(testTextureOffsetClamp() + 3473: 7(fvec4) Load 3330(result) 3474: 7(fvec4) FAdd 3473 3472 - Store 3426(result) 3474 - 3475: 7(fvec4) FunctionCall 43(testTextureGatherLodOffset() - 3476: 7(fvec4) Load 3426(result) + Store 3330(result) 3474 + 3475: 7(fvec4) FunctionCall 76(testSparseTextureGrad() + 3476: 7(fvec4) Load 3330(result) 3477: 7(fvec4) FAdd 3476 3475 - Store 3426(result) 3477 - 3478: 7(fvec4) FunctionCall 45(testTextureGatherLodOffsets() - 3479: 7(fvec4) Load 3426(result) + Store 3330(result) 3477 + 3478: 7(fvec4) FunctionCall 27(testTextureGrad() + 3479: 7(fvec4) Load 3330(result) 3480: 7(fvec4) FAdd 3479 3478 - Store 3426(result) 3480 - 3481: 48(ivec4) FunctionCall 50(testTextureSize() - 3482: 7(fvec4) ConvertSToF 3481 - 3483: 7(fvec4) Load 3426(result) - 3484: 7(fvec4) FAdd 3483 3482 - Store 3426(result) 3484 - 3485: 52(fvec2) FunctionCall 54(testTextureQueryLod() - 3486: 6(float) CompositeExtract 3485 0 - 3487: 6(float) CompositeExtract 3485 1 - 3488: 52(fvec2) CompositeConstruct 3486 3487 - 3489: 7(fvec4) Load 3426(result) - 3490: 52(fvec2) VectorShuffle 3489 3489 0 1 - 3491: 52(fvec2) FAdd 3490 3488 - 3492: 174(ptr) AccessChain 3426(result) 173 - 3493: 6(float) CompositeExtract 3491 0 - Store 3492 3493 - 3494: 174(ptr) AccessChain 3426(result) 1492 - 3495: 6(float) CompositeExtract 3491 1 - Store 3494 3495 - 3496: 47(int) FunctionCall 57(testTextureQueryLevels() - 3497: 6(float) ConvertSToF 3496 - 3498: 174(ptr) AccessChain 3426(result) 173 - 3499: 6(float) Load 3498 - 3500: 6(float) FAdd 3499 3497 - 3501: 174(ptr) AccessChain 3426(result) 173 - Store 3501 3500 - 3502: 47(int) FunctionCall 59(testTextureSamples() - 3503: 6(float) ConvertSToF 3502 - 3504: 174(ptr) AccessChain 3426(result) 173 - 3505: 6(float) Load 3504 - 3506: 6(float) FAdd 3505 3503 - 3507: 174(ptr) AccessChain 3426(result) 173 - Store 3507 3506 - 3508: 7(fvec4) FunctionCall 61(testImageLoad() - 3509: 7(fvec4) Load 3426(result) - 3510: 7(fvec4) FAdd 3509 3508 - Store 3426(result) 3510 - 3512: 7(fvec4) Load 3426(result) - Store 3511(param) 3512 - 3513: 2 FunctionCall 66(testImageStore(vf4;) 3511(param) - 3514: 7(fvec4) FunctionCall 68(testSparseTexture() - 3515: 7(fvec4) Load 3426(result) - 3516: 7(fvec4) FAdd 3515 3514 - Store 3426(result) 3516 - 3517: 7(fvec4) FunctionCall 70(testSparseTextureLod() - 3518: 7(fvec4) Load 3426(result) - 3519: 7(fvec4) FAdd 3518 3517 - Store 3426(result) 3519 - 3520: 7(fvec4) FunctionCall 72(testSparseTextureOffset() - 3521: 7(fvec4) Load 3426(result) - 3522: 7(fvec4) FAdd 3521 3520 - Store 3426(result) 3522 - 3523: 7(fvec4) FunctionCall 74(testSparseTextureLodOffset() - 3524: 7(fvec4) Load 3426(result) - 3525: 7(fvec4) FAdd 3524 3523 - Store 3426(result) 3525 - 3526: 7(fvec4) FunctionCall 76(testSparseTextureGrad() - 3527: 7(fvec4) Load 3426(result) - 3528: 7(fvec4) FAdd 3527 3526 - Store 3426(result) 3528 - 3529: 7(fvec4) FunctionCall 78(testSparseTextureGradOffset() - 3530: 7(fvec4) Load 3426(result) - 3531: 7(fvec4) FAdd 3530 3529 - Store 3426(result) 3531 - 3532: 7(fvec4) FunctionCall 80(testSparseTexelFetch() - 3533: 7(fvec4) Load 3426(result) - 3534: 7(fvec4) FAdd 3533 3532 - Store 3426(result) 3534 - 3535: 7(fvec4) FunctionCall 82(testSparseTexelFetchOffset() - 3536: 7(fvec4) Load 3426(result) - 3537: 7(fvec4) FAdd 3536 3535 - Store 3426(result) 3537 - 3538: 7(fvec4) FunctionCall 84(testSparseTextureGather() - 3539: 7(fvec4) Load 3426(result) - 3540: 7(fvec4) FAdd 3539 3538 - Store 3426(result) 3540 - 3541: 7(fvec4) FunctionCall 86(testSparseTextureGatherOffset() - 3542: 7(fvec4) Load 3426(result) - 3543: 7(fvec4) FAdd 3542 3541 - Store 3426(result) 3543 - 3544: 7(fvec4) FunctionCall 88(testSparseTextureGatherOffsets() - 3545: 7(fvec4) Load 3426(result) - 3546: 7(fvec4) FAdd 3545 3544 - Store 3426(result) 3546 - 3547: 7(fvec4) FunctionCall 90(testSparseTextureGatherLod() - 3548: 7(fvec4) Load 3426(result) - 3549: 7(fvec4) FAdd 3548 3547 - Store 3426(result) 3549 - 3550: 7(fvec4) FunctionCall 92(testSparseTextureGatherLodOffset() - 3551: 7(fvec4) Load 3426(result) - 3552: 7(fvec4) FAdd 3551 3550 - Store 3426(result) 3552 - 3553: 7(fvec4) FunctionCall 94(testSparseTextureGatherLodOffsets() - 3554: 7(fvec4) Load 3426(result) - 3555: 7(fvec4) FAdd 3554 3553 - Store 3426(result) 3555 - 3556: 7(fvec4) FunctionCall 96(testSparseImageLoad() - 3557: 7(fvec4) Load 3426(result) - 3558: 7(fvec4) FAdd 3557 3556 - Store 3426(result) 3558 - 3559: 7(fvec4) FunctionCall 98(testSparseTextureClamp() - 3560: 7(fvec4) Load 3426(result) - 3561: 7(fvec4) FAdd 3560 3559 - Store 3426(result) 3561 - 3562: 7(fvec4) FunctionCall 100(testTextureClamp() - 3563: 7(fvec4) Load 3426(result) - 3564: 7(fvec4) FAdd 3563 3562 - Store 3426(result) 3564 - 3565: 7(fvec4) FunctionCall 102(testSparseTextureOffsetClamp() - 3566: 7(fvec4) Load 3426(result) - 3567: 7(fvec4) FAdd 3566 3565 - Store 3426(result) 3567 - 3568: 7(fvec4) FunctionCall 104(testTextureOffsetClamp() - 3569: 7(fvec4) Load 3426(result) - 3570: 7(fvec4) FAdd 3569 3568 - Store 3426(result) 3570 - 3571: 7(fvec4) FunctionCall 76(testSparseTextureGrad() - 3572: 7(fvec4) Load 3426(result) - 3573: 7(fvec4) FAdd 3572 3571 - Store 3426(result) 3573 - 3574: 7(fvec4) FunctionCall 27(testTextureGrad() - 3575: 7(fvec4) Load 3426(result) - 3576: 7(fvec4) FAdd 3575 3574 - Store 3426(result) 3576 - 3577: 7(fvec4) FunctionCall 110(testSparseTextureGradOffsetClamp() - 3578: 7(fvec4) Load 3426(result) - 3579: 7(fvec4) FAdd 3578 3577 - Store 3426(result) 3579 - 3580: 7(fvec4) FunctionCall 112(testTextureGradOffsetClamp() - 3581: 7(fvec4) Load 3426(result) - 3582: 7(fvec4) FAdd 3581 3580 - Store 3426(result) 3582 - 3583: 7(fvec4) FunctionCall 114(testCombinedTextureSampler() - 3584: 7(fvec4) Load 3426(result) - 3585: 7(fvec4) FAdd 3584 3583 - Store 3426(result) 3585 - 3586: 7(fvec4) FunctionCall 116(testSubpassLoad() - 3587: 7(fvec4) Load 3426(result) - 3588: 7(fvec4) FAdd 3587 3586 - Store 3426(result) 3588 - 3591: 7(fvec4) Load 3426(result) - Store 3590(fragColor) 3591 + Store 3330(result) 3480 + 3481: 7(fvec4) FunctionCall 110(testSparseTextureGradOffsetClamp() + 3482: 7(fvec4) Load 3330(result) + 3483: 7(fvec4) FAdd 3482 3481 + Store 3330(result) 3483 + 3484: 7(fvec4) FunctionCall 112(testTextureGradOffsetClamp() + 3485: 7(fvec4) Load 3330(result) + 3486: 7(fvec4) FAdd 3485 3484 + Store 3330(result) 3486 + 3487: 7(fvec4) FunctionCall 114(testCombinedTextureSampler() + 3488: 7(fvec4) Load 3330(result) + 3489: 7(fvec4) FAdd 3488 3487 + Store 3330(result) 3489 + 3490: 7(fvec4) FunctionCall 116(testSubpassLoad() + 3491: 7(fvec4) Load 3330(result) + 3492: 7(fvec4) FAdd 3491 3490 + Store 3330(result) 3492 + 3495: 7(fvec4) Load 3330(result) + Store 3494(fragColor) 3495 Return FunctionEnd 9(testTexture(): 7(fvec4) Function None 8 @@ -1486,2938 +1486,2842 @@ Validation failed 864: 122 Load 124(s1D) 865: 6(float) Load 127(c1) 867: 6(float) Load 866(dPdxy1) - 868: 6(float) Load 866(dPdxy1) - 869: 7(fvec4) ImageSampleExplicitLod 864 865 Grad 867 868 - 870: 7(fvec4) Load 863(texel) - 871: 7(fvec4) FAdd 870 869 - Store 863(texel) 871 - 872: 133 Load 135(s2D) - 873: 52(fvec2) Load 138(c2) - 875: 52(fvec2) Load 874(dPdxy2) - 876: 52(fvec2) Load 874(dPdxy2) - 877: 7(fvec4) ImageSampleExplicitLod 872 873 Grad 875 876 - 878: 7(fvec4) Load 863(texel) - 879: 7(fvec4) FAdd 878 877 - Store 863(texel) 879 - 880: 144 Load 146(s3D) - 881: 148(fvec3) Load 150(c3) - 883: 148(fvec3) Load 882(dPdxy3) - 884: 148(fvec3) Load 882(dPdxy3) - 885: 7(fvec4) ImageSampleExplicitLod 880 881 Grad 883 884 - 886: 7(fvec4) Load 863(texel) - 887: 7(fvec4) FAdd 886 885 - Store 863(texel) 887 - 888: 156 Load 158(sCube) - 889: 148(fvec3) Load 150(c3) - 890: 148(fvec3) Load 882(dPdxy3) - 891: 148(fvec3) Load 882(dPdxy3) - 892: 7(fvec4) ImageSampleExplicitLod 888 889 Grad 890 891 - 893: 7(fvec4) Load 863(texel) - 894: 7(fvec4) FAdd 893 892 - Store 863(texel) 894 - 895: 257 Load 259(s2DRect) - 896: 52(fvec2) Load 138(c2) - 897: 52(fvec2) Load 874(dPdxy2) - 898: 52(fvec2) Load 874(dPdxy2) - 899: 7(fvec4) ImageSampleExplicitLod 895 896 Grad 897 898 - 900: 7(fvec4) Load 863(texel) - 901: 7(fvec4) FAdd 900 899 - Store 863(texel) 901 - 902: 266 Load 268(s2DRectShadow) - 903: 148(fvec3) Load 150(c3) - 904: 52(fvec2) Load 874(dPdxy2) - 905: 52(fvec2) Load 874(dPdxy2) - 906: 6(float) CompositeExtract 903 2 - 907: 6(float) ImageSampleDrefExplicitLod 902 903 906 Grad 904 905 - 908: 174(ptr) AccessChain 863(texel) 173 - 909: 6(float) Load 908 - 910: 6(float) FAdd 909 907 + 868: 7(fvec4) ImageSampleExplicitLod 864 865 Grad 867 867 + 869: 7(fvec4) Load 863(texel) + 870: 7(fvec4) FAdd 869 868 + Store 863(texel) 870 + 871: 133 Load 135(s2D) + 872: 52(fvec2) Load 138(c2) + 874: 52(fvec2) Load 873(dPdxy2) + 875: 7(fvec4) ImageSampleExplicitLod 871 872 Grad 874 874 + 876: 7(fvec4) Load 863(texel) + 877: 7(fvec4) FAdd 876 875 + Store 863(texel) 877 + 878: 144 Load 146(s3D) + 879: 148(fvec3) Load 150(c3) + 881: 148(fvec3) Load 880(dPdxy3) + 882: 7(fvec4) ImageSampleExplicitLod 878 879 Grad 881 881 + 883: 7(fvec4) Load 863(texel) + 884: 7(fvec4) FAdd 883 882 + Store 863(texel) 884 + 885: 156 Load 158(sCube) + 886: 148(fvec3) Load 150(c3) + 887: 148(fvec3) Load 880(dPdxy3) + 888: 7(fvec4) ImageSampleExplicitLod 885 886 Grad 887 887 + 889: 7(fvec4) Load 863(texel) + 890: 7(fvec4) FAdd 889 888 + Store 863(texel) 890 + 891: 257 Load 259(s2DRect) + 892: 52(fvec2) Load 138(c2) + 893: 52(fvec2) Load 873(dPdxy2) + 894: 7(fvec4) ImageSampleExplicitLod 891 892 Grad 893 893 + 895: 7(fvec4) Load 863(texel) + 896: 7(fvec4) FAdd 895 894 + Store 863(texel) 896 + 897: 266 Load 268(s2DRectShadow) + 898: 148(fvec3) Load 150(c3) + 899: 52(fvec2) Load 873(dPdxy2) + 900: 6(float) CompositeExtract 898 2 + 901: 6(float) ImageSampleDrefExplicitLod 897 898 900 Grad 899 899 + 902: 174(ptr) AccessChain 863(texel) 173 + 903: 6(float) Load 902 + 904: 6(float) FAdd 903 901 + 905: 174(ptr) AccessChain 863(texel) 173 + Store 905 904 + 906: 165 Load 167(s1DShadow) + 907: 148(fvec3) Load 150(c3) + 908: 6(float) Load 866(dPdxy1) + 909: 6(float) CompositeExtract 907 2 + 910: 6(float) ImageSampleDrefExplicitLod 906 907 909 Grad 908 908 911: 174(ptr) AccessChain 863(texel) 173 - Store 911 910 - 912: 165 Load 167(s1DShadow) - 913: 148(fvec3) Load 150(c3) - 914: 6(float) Load 866(dPdxy1) - 915: 6(float) Load 866(dPdxy1) - 916: 6(float) CompositeExtract 913 2 - 917: 6(float) ImageSampleDrefExplicitLod 912 913 916 Grad 914 915 - 918: 174(ptr) AccessChain 863(texel) 173 - 919: 6(float) Load 918 - 920: 6(float) FAdd 919 917 - 921: 174(ptr) AccessChain 863(texel) 173 - Store 921 920 - 922: 180 Load 182(s2DShadow) - 923: 148(fvec3) Load 150(c3) - 924: 52(fvec2) Load 874(dPdxy2) - 925: 52(fvec2) Load 874(dPdxy2) - 926: 6(float) CompositeExtract 923 2 - 927: 6(float) ImageSampleDrefExplicitLod 922 923 926 Grad 924 925 - 928: 174(ptr) AccessChain 863(texel) 173 - 929: 6(float) Load 928 - 930: 6(float) FAdd 929 927 - 931: 174(ptr) AccessChain 863(texel) 173 - Store 931 930 - 932: 192 Load 194(sCubeShadow) - 933: 7(fvec4) Load 197(c4) - 934: 148(fvec3) Load 882(dPdxy3) - 935: 148(fvec3) Load 882(dPdxy3) - 936: 6(float) CompositeExtract 933 3 - 937: 6(float) ImageSampleDrefExplicitLod 932 933 936 Grad 934 935 - 938: 174(ptr) AccessChain 863(texel) 173 - 939: 6(float) Load 938 - 940: 6(float) FAdd 939 937 - 941: 174(ptr) AccessChain 863(texel) 173 - Store 941 940 - 942: 206 Load 208(s1DArray) - 943: 52(fvec2) Load 138(c2) - 944: 6(float) Load 866(dPdxy1) - 945: 6(float) Load 866(dPdxy1) - 946: 7(fvec4) ImageSampleExplicitLod 942 943 Grad 944 945 - 947: 7(fvec4) Load 863(texel) - 948: 7(fvec4) FAdd 947 946 - Store 863(texel) 948 - 949: 215 Load 217(s2DArray) - 950: 148(fvec3) Load 150(c3) - 951: 52(fvec2) Load 874(dPdxy2) - 952: 52(fvec2) Load 874(dPdxy2) - 953: 7(fvec4) ImageSampleExplicitLod 949 950 Grad 951 952 - 954: 7(fvec4) Load 863(texel) - 955: 7(fvec4) FAdd 954 953 - Store 863(texel) 955 - 956: 233 Load 235(s1DArrayShadow) - 957: 148(fvec3) Load 150(c3) - 958: 6(float) Load 866(dPdxy1) - 959: 6(float) Load 866(dPdxy1) - 960: 6(float) CompositeExtract 957 2 - 961: 6(float) ImageSampleDrefExplicitLod 956 957 960 Grad 958 959 + 912: 6(float) Load 911 + 913: 6(float) FAdd 912 910 + 914: 174(ptr) AccessChain 863(texel) 173 + Store 914 913 + 915: 180 Load 182(s2DShadow) + 916: 148(fvec3) Load 150(c3) + 917: 52(fvec2) Load 873(dPdxy2) + 918: 6(float) CompositeExtract 916 2 + 919: 6(float) ImageSampleDrefExplicitLod 915 916 918 Grad 917 917 + 920: 174(ptr) AccessChain 863(texel) 173 + 921: 6(float) Load 920 + 922: 6(float) FAdd 921 919 + 923: 174(ptr) AccessChain 863(texel) 173 + Store 923 922 + 924: 192 Load 194(sCubeShadow) + 925: 7(fvec4) Load 197(c4) + 926: 148(fvec3) Load 880(dPdxy3) + 927: 6(float) CompositeExtract 925 3 + 928: 6(float) ImageSampleDrefExplicitLod 924 925 927 Grad 926 926 + 929: 174(ptr) AccessChain 863(texel) 173 + 930: 6(float) Load 929 + 931: 6(float) FAdd 930 928 + 932: 174(ptr) AccessChain 863(texel) 173 + Store 932 931 + 933: 206 Load 208(s1DArray) + 934: 52(fvec2) Load 138(c2) + 935: 6(float) Load 866(dPdxy1) + 936: 7(fvec4) ImageSampleExplicitLod 933 934 Grad 935 935 + 937: 7(fvec4) Load 863(texel) + 938: 7(fvec4) FAdd 937 936 + Store 863(texel) 938 + 939: 215 Load 217(s2DArray) + 940: 148(fvec3) Load 150(c3) + 941: 52(fvec2) Load 873(dPdxy2) + 942: 7(fvec4) ImageSampleExplicitLod 939 940 Grad 941 941 + 943: 7(fvec4) Load 863(texel) + 944: 7(fvec4) FAdd 943 942 + Store 863(texel) 944 + 945: 233 Load 235(s1DArrayShadow) + 946: 148(fvec3) Load 150(c3) + 947: 6(float) Load 866(dPdxy1) + 948: 6(float) CompositeExtract 946 2 + 949: 6(float) ImageSampleDrefExplicitLod 945 946 948 Grad 947 947 + 950: 174(ptr) AccessChain 863(texel) 173 + 951: 6(float) Load 950 + 952: 6(float) FAdd 951 949 + 953: 174(ptr) AccessChain 863(texel) 173 + Store 953 952 + 954: 245 Load 247(s2DArrayShadow) + 955: 7(fvec4) Load 197(c4) + 956: 52(fvec2) Load 873(dPdxy2) + 957: 6(float) CompositeExtract 955 3 + 958: 6(float) ImageSampleDrefExplicitLod 954 955 957 Grad 956 956 + 959: 174(ptr) AccessChain 863(texel) 173 + 960: 6(float) Load 959 + 961: 6(float) FAdd 960 958 962: 174(ptr) AccessChain 863(texel) 173 - 963: 6(float) Load 962 - 964: 6(float) FAdd 963 961 - 965: 174(ptr) AccessChain 863(texel) 173 - Store 965 964 - 966: 245 Load 247(s2DArrayShadow) - 967: 7(fvec4) Load 197(c4) - 968: 52(fvec2) Load 874(dPdxy2) - 969: 52(fvec2) Load 874(dPdxy2) - 970: 6(float) CompositeExtract 967 3 - 971: 6(float) ImageSampleDrefExplicitLod 966 967 970 Grad 968 969 - 972: 174(ptr) AccessChain 863(texel) 173 - 973: 6(float) Load 972 - 974: 6(float) FAdd 973 971 - 975: 174(ptr) AccessChain 863(texel) 173 - Store 975 974 - 976: 224 Load 226(sCubeArray) - 977: 7(fvec4) Load 197(c4) - 978: 148(fvec3) Load 882(dPdxy3) - 979: 148(fvec3) Load 882(dPdxy3) - 980: 7(fvec4) ImageSampleExplicitLod 976 977 Grad 978 979 - 981: 7(fvec4) Load 863(texel) - 982: 7(fvec4) FAdd 981 980 - Store 863(texel) 982 - 983: 7(fvec4) Load 863(texel) - ReturnValue 983 + Store 962 961 + 963: 224 Load 226(sCubeArray) + 964: 7(fvec4) Load 197(c4) + 965: 148(fvec3) Load 880(dPdxy3) + 966: 7(fvec4) ImageSampleExplicitLod 963 964 Grad 965 965 + 967: 7(fvec4) Load 863(texel) + 968: 7(fvec4) FAdd 967 966 + Store 863(texel) 968 + 969: 7(fvec4) Load 863(texel) + ReturnValue 969 FunctionEnd 29(testTextureGradOffset(): 7(fvec4) Function None 8 30: Label - 986(texel): 63(ptr) Variable Function - Store 986(texel) 120 - 987: 122 Load 124(s1D) - 988: 6(float) Load 127(c1) - 989: 6(float) Load 866(dPdxy1) - 990: 6(float) Load 866(dPdxy1) - 991: 7(fvec4) ImageSampleExplicitLod 987 988 Grad ConstOffset 989 990 445 - 992: 7(fvec4) Load 986(texel) - 993: 7(fvec4) FAdd 992 991 - Store 986(texel) 993 - 994: 133 Load 135(s2D) - 995: 52(fvec2) Load 138(c2) - 996: 52(fvec2) Load 874(dPdxy2) - 997: 52(fvec2) Load 874(dPdxy2) - 998: 7(fvec4) ImageSampleExplicitLod 994 995 Grad ConstOffset 996 997 452 - 999: 7(fvec4) Load 986(texel) - 1000: 7(fvec4) FAdd 999 998 - Store 986(texel) 1000 - 1001: 144 Load 146(s3D) - 1002: 148(fvec3) Load 150(c3) - 1003: 148(fvec3) Load 882(dPdxy3) - 1004: 148(fvec3) Load 882(dPdxy3) - 1005: 7(fvec4) ImageSampleExplicitLod 1001 1002 Grad ConstOffset 1003 1004 459 - 1006: 7(fvec4) Load 986(texel) - 1007: 7(fvec4) FAdd 1006 1005 - Store 986(texel) 1007 - 1008: 257 Load 259(s2DRect) - 1009: 52(fvec2) Load 138(c2) - 1010: 52(fvec2) Load 874(dPdxy2) - 1011: 52(fvec2) Load 874(dPdxy2) - 1012: 7(fvec4) ImageSampleExplicitLod 1008 1009 Grad ConstOffset 1010 1011 452 - 1013: 7(fvec4) Load 986(texel) - 1014: 7(fvec4) FAdd 1013 1012 - Store 986(texel) 1014 - 1015: 266 Load 268(s2DRectShadow) + 972(texel): 63(ptr) Variable Function + Store 972(texel) 120 + 973: 122 Load 124(s1D) + 974: 6(float) Load 127(c1) + 975: 6(float) Load 866(dPdxy1) + 976: 7(fvec4) ImageSampleExplicitLod 973 974 Grad ConstOffset 975 975 445 + 977: 7(fvec4) Load 972(texel) + 978: 7(fvec4) FAdd 977 976 + Store 972(texel) 978 + 979: 133 Load 135(s2D) + 980: 52(fvec2) Load 138(c2) + 981: 52(fvec2) Load 873(dPdxy2) + 982: 7(fvec4) ImageSampleExplicitLod 979 980 Grad ConstOffset 981 981 452 + 983: 7(fvec4) Load 972(texel) + 984: 7(fvec4) FAdd 983 982 + Store 972(texel) 984 + 985: 144 Load 146(s3D) + 986: 148(fvec3) Load 150(c3) + 987: 148(fvec3) Load 880(dPdxy3) + 988: 7(fvec4) ImageSampleExplicitLod 985 986 Grad ConstOffset 987 987 459 + 989: 7(fvec4) Load 972(texel) + 990: 7(fvec4) FAdd 989 988 + Store 972(texel) 990 + 991: 257 Load 259(s2DRect) + 992: 52(fvec2) Load 138(c2) + 993: 52(fvec2) Load 873(dPdxy2) + 994: 7(fvec4) ImageSampleExplicitLod 991 992 Grad ConstOffset 993 993 452 + 995: 7(fvec4) Load 972(texel) + 996: 7(fvec4) FAdd 995 994 + Store 972(texel) 996 + 997: 266 Load 268(s2DRectShadow) + 998: 148(fvec3) Load 150(c3) + 999: 52(fvec2) Load 873(dPdxy2) + 1000: 6(float) CompositeExtract 998 2 + 1001: 6(float) ImageSampleDrefExplicitLod 997 998 1000 Grad ConstOffset 999 999 452 + 1002: 174(ptr) AccessChain 972(texel) 173 + 1003: 6(float) Load 1002 + 1004: 6(float) FAdd 1003 1001 + 1005: 174(ptr) AccessChain 972(texel) 173 + Store 1005 1004 + 1006: 165 Load 167(s1DShadow) + 1007: 148(fvec3) Load 150(c3) + 1008: 6(float) Load 866(dPdxy1) + 1009: 6(float) CompositeExtract 1007 2 + 1010: 6(float) ImageSampleDrefExplicitLod 1006 1007 1009 Grad ConstOffset 1008 1008 445 + 1011: 174(ptr) AccessChain 972(texel) 173 + 1012: 6(float) Load 1011 + 1013: 6(float) FAdd 1012 1010 + 1014: 174(ptr) AccessChain 972(texel) 173 + Store 1014 1013 + 1015: 180 Load 182(s2DShadow) 1016: 148(fvec3) Load 150(c3) - 1017: 52(fvec2) Load 874(dPdxy2) - 1018: 52(fvec2) Load 874(dPdxy2) - 1019: 6(float) CompositeExtract 1016 2 - 1020: 6(float) ImageSampleDrefExplicitLod 1015 1016 1019 Grad ConstOffset 1017 1018 452 - 1021: 174(ptr) AccessChain 986(texel) 173 - 1022: 6(float) Load 1021 - 1023: 6(float) FAdd 1022 1020 - 1024: 174(ptr) AccessChain 986(texel) 173 - Store 1024 1023 - 1025: 165 Load 167(s1DShadow) - 1026: 148(fvec3) Load 150(c3) - 1027: 6(float) Load 866(dPdxy1) - 1028: 6(float) Load 866(dPdxy1) - 1029: 6(float) CompositeExtract 1026 2 - 1030: 6(float) ImageSampleDrefExplicitLod 1025 1026 1029 Grad ConstOffset 1027 1028 445 - 1031: 174(ptr) AccessChain 986(texel) 173 - 1032: 6(float) Load 1031 - 1033: 6(float) FAdd 1032 1030 - 1034: 174(ptr) AccessChain 986(texel) 173 - Store 1034 1033 - 1035: 180 Load 182(s2DShadow) - 1036: 148(fvec3) Load 150(c3) - 1037: 52(fvec2) Load 874(dPdxy2) - 1038: 52(fvec2) Load 874(dPdxy2) - 1039: 6(float) CompositeExtract 1036 2 - 1040: 6(float) ImageSampleDrefExplicitLod 1035 1036 1039 Grad ConstOffset 1037 1038 452 - 1041: 174(ptr) AccessChain 986(texel) 173 + 1017: 52(fvec2) Load 873(dPdxy2) + 1018: 6(float) CompositeExtract 1016 2 + 1019: 6(float) ImageSampleDrefExplicitLod 1015 1016 1018 Grad ConstOffset 1017 1017 452 + 1020: 174(ptr) AccessChain 972(texel) 173 + 1021: 6(float) Load 1020 + 1022: 6(float) FAdd 1021 1019 + 1023: 174(ptr) AccessChain 972(texel) 173 + Store 1023 1022 + 1024: 206 Load 208(s1DArray) + 1025: 52(fvec2) Load 138(c2) + 1026: 6(float) Load 866(dPdxy1) + 1027: 7(fvec4) ImageSampleExplicitLod 1024 1025 Grad ConstOffset 1026 1026 445 + 1028: 7(fvec4) Load 972(texel) + 1029: 7(fvec4) FAdd 1028 1027 + Store 972(texel) 1029 + 1030: 215 Load 217(s2DArray) + 1031: 148(fvec3) Load 150(c3) + 1032: 52(fvec2) Load 873(dPdxy2) + 1033: 7(fvec4) ImageSampleExplicitLod 1030 1031 Grad ConstOffset 1032 1032 452 + 1034: 7(fvec4) Load 972(texel) + 1035: 7(fvec4) FAdd 1034 1033 + Store 972(texel) 1035 + 1036: 233 Load 235(s1DArrayShadow) + 1037: 148(fvec3) Load 150(c3) + 1038: 6(float) Load 866(dPdxy1) + 1039: 6(float) CompositeExtract 1037 2 + 1040: 6(float) ImageSampleDrefExplicitLod 1036 1037 1039 Grad ConstOffset 1038 1038 445 + 1041: 174(ptr) AccessChain 972(texel) 173 1042: 6(float) Load 1041 1043: 6(float) FAdd 1042 1040 - 1044: 174(ptr) AccessChain 986(texel) 173 + 1044: 174(ptr) AccessChain 972(texel) 173 Store 1044 1043 - 1045: 206 Load 208(s1DArray) - 1046: 52(fvec2) Load 138(c2) - 1047: 6(float) Load 866(dPdxy1) - 1048: 6(float) Load 866(dPdxy1) - 1049: 7(fvec4) ImageSampleExplicitLod 1045 1046 Grad ConstOffset 1047 1048 445 - 1050: 7(fvec4) Load 986(texel) - 1051: 7(fvec4) FAdd 1050 1049 - Store 986(texel) 1051 - 1052: 215 Load 217(s2DArray) - 1053: 148(fvec3) Load 150(c3) - 1054: 52(fvec2) Load 874(dPdxy2) - 1055: 52(fvec2) Load 874(dPdxy2) - 1056: 7(fvec4) ImageSampleExplicitLod 1052 1053 Grad ConstOffset 1054 1055 452 - 1057: 7(fvec4) Load 986(texel) - 1058: 7(fvec4) FAdd 1057 1056 - Store 986(texel) 1058 - 1059: 233 Load 235(s1DArrayShadow) - 1060: 148(fvec3) Load 150(c3) - 1061: 6(float) Load 866(dPdxy1) - 1062: 6(float) Load 866(dPdxy1) - 1063: 6(float) CompositeExtract 1060 2 - 1064: 6(float) ImageSampleDrefExplicitLod 1059 1060 1063 Grad ConstOffset 1061 1062 445 - 1065: 174(ptr) AccessChain 986(texel) 173 - 1066: 6(float) Load 1065 - 1067: 6(float) FAdd 1066 1064 - 1068: 174(ptr) AccessChain 986(texel) 173 - Store 1068 1067 - 1069: 245 Load 247(s2DArrayShadow) - 1070: 7(fvec4) Load 197(c4) - 1071: 52(fvec2) Load 874(dPdxy2) - 1072: 52(fvec2) Load 874(dPdxy2) - 1073: 6(float) CompositeExtract 1070 3 - 1074: 6(float) ImageSampleDrefExplicitLod 1069 1070 1073 Grad ConstOffset 1071 1072 452 - 1075: 174(ptr) AccessChain 986(texel) 173 - 1076: 6(float) Load 1075 - 1077: 6(float) FAdd 1076 1074 - 1078: 174(ptr) AccessChain 986(texel) 173 - Store 1078 1077 - 1079: 7(fvec4) Load 986(texel) - ReturnValue 1079 + 1045: 245 Load 247(s2DArrayShadow) + 1046: 7(fvec4) Load 197(c4) + 1047: 52(fvec2) Load 873(dPdxy2) + 1048: 6(float) CompositeExtract 1046 3 + 1049: 6(float) ImageSampleDrefExplicitLod 1045 1046 1048 Grad ConstOffset 1047 1047 452 + 1050: 174(ptr) AccessChain 972(texel) 173 + 1051: 6(float) Load 1050 + 1052: 6(float) FAdd 1051 1049 + 1053: 174(ptr) AccessChain 972(texel) 173 + Store 1053 1052 + 1054: 7(fvec4) Load 972(texel) + ReturnValue 1054 FunctionEnd 31(testTextureProjGrad(): 7(fvec4) Function None 8 32: Label - 1082(texel): 63(ptr) Variable Function - Store 1082(texel) 120 - 1083: 122 Load 124(s1D) - 1084: 52(fvec2) Load 138(c2) - 1085: 6(float) Load 866(dPdxy1) - 1086: 6(float) Load 866(dPdxy1) - 1087: 7(fvec4) ImageSampleProjExplicitLod 1083 1084 Grad 1085 1086 - 1088: 7(fvec4) Load 1082(texel) - 1089: 7(fvec4) FAdd 1088 1087 - Store 1082(texel) 1089 - 1090: 122 Load 124(s1D) - 1091: 7(fvec4) Load 197(c4) - 1092: 6(float) Load 866(dPdxy1) - 1093: 6(float) Load 866(dPdxy1) - 1094: 6(float) CompositeExtract 1091 3 - 1095: 7(fvec4) CompositeInsert 1094 1091 1 - 1096: 7(fvec4) ImageSampleProjExplicitLod 1090 1095 Grad 1092 1093 - 1097: 7(fvec4) Load 1082(texel) - 1098: 7(fvec4) FAdd 1097 1096 - Store 1082(texel) 1098 - 1099: 133 Load 135(s2D) - 1100: 148(fvec3) Load 150(c3) - 1101: 52(fvec2) Load 874(dPdxy2) - 1102: 52(fvec2) Load 874(dPdxy2) - 1103: 7(fvec4) ImageSampleProjExplicitLod 1099 1100 Grad 1101 1102 - 1104: 7(fvec4) Load 1082(texel) + 1057(texel): 63(ptr) Variable Function + Store 1057(texel) 120 + 1058: 122 Load 124(s1D) + 1059: 52(fvec2) Load 138(c2) + 1060: 6(float) Load 866(dPdxy1) + 1061: 7(fvec4) ImageSampleProjExplicitLod 1058 1059 Grad 1060 1060 + 1062: 7(fvec4) Load 1057(texel) + 1063: 7(fvec4) FAdd 1062 1061 + Store 1057(texel) 1063 + 1064: 122 Load 124(s1D) + 1065: 7(fvec4) Load 197(c4) + 1066: 6(float) Load 866(dPdxy1) + 1067: 6(float) CompositeExtract 1065 3 + 1068: 7(fvec4) CompositeInsert 1067 1065 1 + 1069: 7(fvec4) ImageSampleProjExplicitLod 1064 1068 Grad 1066 1066 + 1070: 7(fvec4) Load 1057(texel) + 1071: 7(fvec4) FAdd 1070 1069 + Store 1057(texel) 1071 + 1072: 133 Load 135(s2D) + 1073: 148(fvec3) Load 150(c3) + 1074: 52(fvec2) Load 873(dPdxy2) + 1075: 7(fvec4) ImageSampleProjExplicitLod 1072 1073 Grad 1074 1074 + 1076: 7(fvec4) Load 1057(texel) + 1077: 7(fvec4) FAdd 1076 1075 + Store 1057(texel) 1077 + 1078: 133 Load 135(s2D) + 1079: 7(fvec4) Load 197(c4) + 1080: 52(fvec2) Load 873(dPdxy2) + 1081: 6(float) CompositeExtract 1079 3 + 1082: 7(fvec4) CompositeInsert 1081 1079 2 + 1083: 7(fvec4) ImageSampleProjExplicitLod 1078 1082 Grad 1080 1080 + 1084: 7(fvec4) Load 1057(texel) + 1085: 7(fvec4) FAdd 1084 1083 + Store 1057(texel) 1085 + 1086: 144 Load 146(s3D) + 1087: 7(fvec4) Load 197(c4) + 1088: 148(fvec3) Load 880(dPdxy3) + 1089: 7(fvec4) ImageSampleProjExplicitLod 1086 1087 Grad 1088 1088 + 1090: 7(fvec4) Load 1057(texel) + 1091: 7(fvec4) FAdd 1090 1089 + Store 1057(texel) 1091 + 1092: 257 Load 259(s2DRect) + 1093: 148(fvec3) Load 150(c3) + 1094: 52(fvec2) Load 873(dPdxy2) + 1095: 7(fvec4) ImageSampleProjExplicitLod 1092 1093 Grad 1094 1094 + 1096: 7(fvec4) Load 1057(texel) + 1097: 7(fvec4) FAdd 1096 1095 + Store 1057(texel) 1097 + 1098: 257 Load 259(s2DRect) + 1099: 7(fvec4) Load 197(c4) + 1100: 52(fvec2) Load 873(dPdxy2) + 1101: 6(float) CompositeExtract 1099 3 + 1102: 7(fvec4) CompositeInsert 1101 1099 2 + 1103: 7(fvec4) ImageSampleProjExplicitLod 1098 1102 Grad 1100 1100 + 1104: 7(fvec4) Load 1057(texel) 1105: 7(fvec4) FAdd 1104 1103 - Store 1082(texel) 1105 - 1106: 133 Load 135(s2D) + Store 1057(texel) 1105 + 1106: 266 Load 268(s2DRectShadow) 1107: 7(fvec4) Load 197(c4) - 1108: 52(fvec2) Load 874(dPdxy2) - 1109: 52(fvec2) Load 874(dPdxy2) + 1108: 52(fvec2) Load 873(dPdxy2) + 1109: 6(float) CompositeExtract 1107 2 1110: 6(float) CompositeExtract 1107 3 1111: 7(fvec4) CompositeInsert 1110 1107 2 - 1112: 7(fvec4) ImageSampleProjExplicitLod 1106 1111 Grad 1108 1109 - 1113: 7(fvec4) Load 1082(texel) - 1114: 7(fvec4) FAdd 1113 1112 - Store 1082(texel) 1114 - 1115: 144 Load 146(s3D) - 1116: 7(fvec4) Load 197(c4) - 1117: 148(fvec3) Load 882(dPdxy3) - 1118: 148(fvec3) Load 882(dPdxy3) - 1119: 7(fvec4) ImageSampleProjExplicitLod 1115 1116 Grad 1117 1118 - 1120: 7(fvec4) Load 1082(texel) - 1121: 7(fvec4) FAdd 1120 1119 - Store 1082(texel) 1121 - 1122: 257 Load 259(s2DRect) - 1123: 148(fvec3) Load 150(c3) - 1124: 52(fvec2) Load 874(dPdxy2) - 1125: 52(fvec2) Load 874(dPdxy2) - 1126: 7(fvec4) ImageSampleProjExplicitLod 1122 1123 Grad 1124 1125 - 1127: 7(fvec4) Load 1082(texel) - 1128: 7(fvec4) FAdd 1127 1126 - Store 1082(texel) 1128 - 1129: 257 Load 259(s2DRect) - 1130: 7(fvec4) Load 197(c4) - 1131: 52(fvec2) Load 874(dPdxy2) - 1132: 52(fvec2) Load 874(dPdxy2) - 1133: 6(float) CompositeExtract 1130 3 - 1134: 7(fvec4) CompositeInsert 1133 1130 2 - 1135: 7(fvec4) ImageSampleProjExplicitLod 1129 1134 Grad 1131 1132 - 1136: 7(fvec4) Load 1082(texel) - 1137: 7(fvec4) FAdd 1136 1135 - Store 1082(texel) 1137 - 1138: 266 Load 268(s2DRectShadow) - 1139: 7(fvec4) Load 197(c4) - 1140: 52(fvec2) Load 874(dPdxy2) - 1141: 52(fvec2) Load 874(dPdxy2) - 1142: 6(float) CompositeExtract 1139 2 - 1143: 6(float) CompositeExtract 1139 3 - 1144: 7(fvec4) CompositeInsert 1143 1139 2 - 1145: 6(float) ImageSampleProjDrefExplicitLod 1138 1144 1142 Grad 1140 1141 - 1146: 174(ptr) AccessChain 1082(texel) 173 - 1147: 6(float) Load 1146 - 1148: 6(float) FAdd 1147 1145 - 1149: 174(ptr) AccessChain 1082(texel) 173 - Store 1149 1148 - 1150: 165 Load 167(s1DShadow) - 1151: 7(fvec4) Load 197(c4) - 1152: 6(float) Load 866(dPdxy1) - 1153: 6(float) Load 866(dPdxy1) - 1154: 6(float) CompositeExtract 1151 2 - 1155: 6(float) CompositeExtract 1151 3 - 1156: 7(fvec4) CompositeInsert 1155 1151 1 - 1157: 6(float) ImageSampleProjDrefExplicitLod 1150 1156 1154 Grad 1152 1153 - 1158: 174(ptr) AccessChain 1082(texel) 173 - 1159: 6(float) Load 1158 - 1160: 6(float) FAdd 1159 1157 - 1161: 174(ptr) AccessChain 1082(texel) 173 - Store 1161 1160 - 1162: 180 Load 182(s2DShadow) - 1163: 7(fvec4) Load 197(c4) - 1164: 52(fvec2) Load 874(dPdxy2) - 1165: 52(fvec2) Load 874(dPdxy2) - 1166: 6(float) CompositeExtract 1163 2 - 1167: 6(float) CompositeExtract 1163 3 - 1168: 7(fvec4) CompositeInsert 1167 1163 2 - 1169: 6(float) ImageSampleProjDrefExplicitLod 1162 1168 1166 Grad 1164 1165 - 1170: 174(ptr) AccessChain 1082(texel) 173 - 1171: 6(float) Load 1170 - 1172: 6(float) FAdd 1171 1169 - 1173: 174(ptr) AccessChain 1082(texel) 173 - Store 1173 1172 - 1174: 7(fvec4) Load 1082(texel) - ReturnValue 1174 + 1112: 6(float) ImageSampleProjDrefExplicitLod 1106 1111 1109 Grad 1108 1108 + 1113: 174(ptr) AccessChain 1057(texel) 173 + 1114: 6(float) Load 1113 + 1115: 6(float) FAdd 1114 1112 + 1116: 174(ptr) AccessChain 1057(texel) 173 + Store 1116 1115 + 1117: 165 Load 167(s1DShadow) + 1118: 7(fvec4) Load 197(c4) + 1119: 6(float) Load 866(dPdxy1) + 1120: 6(float) CompositeExtract 1118 2 + 1121: 6(float) CompositeExtract 1118 3 + 1122: 7(fvec4) CompositeInsert 1121 1118 1 + 1123: 6(float) ImageSampleProjDrefExplicitLod 1117 1122 1120 Grad 1119 1119 + 1124: 174(ptr) AccessChain 1057(texel) 173 + 1125: 6(float) Load 1124 + 1126: 6(float) FAdd 1125 1123 + 1127: 174(ptr) AccessChain 1057(texel) 173 + Store 1127 1126 + 1128: 180 Load 182(s2DShadow) + 1129: 7(fvec4) Load 197(c4) + 1130: 52(fvec2) Load 873(dPdxy2) + 1131: 6(float) CompositeExtract 1129 2 + 1132: 6(float) CompositeExtract 1129 3 + 1133: 7(fvec4) CompositeInsert 1132 1129 2 + 1134: 6(float) ImageSampleProjDrefExplicitLod 1128 1133 1131 Grad 1130 1130 + 1135: 174(ptr) AccessChain 1057(texel) 173 + 1136: 6(float) Load 1135 + 1137: 6(float) FAdd 1136 1134 + 1138: 174(ptr) AccessChain 1057(texel) 173 + Store 1138 1137 + 1139: 7(fvec4) Load 1057(texel) + ReturnValue 1139 FunctionEnd 33(testTextureProjGradoffset(): 7(fvec4) Function None 8 34: Label - 1177(texel): 63(ptr) Variable Function - Store 1177(texel) 120 - 1178: 122 Load 124(s1D) - 1179: 52(fvec2) Load 138(c2) - 1180: 6(float) Load 866(dPdxy1) - 1181: 6(float) Load 866(dPdxy1) - 1182: 7(fvec4) ImageSampleProjExplicitLod 1178 1179 Grad ConstOffset 1180 1181 445 - 1183: 7(fvec4) Load 1177(texel) + 1142(texel): 63(ptr) Variable Function + Store 1142(texel) 120 + 1143: 122 Load 124(s1D) + 1144: 52(fvec2) Load 138(c2) + 1145: 6(float) Load 866(dPdxy1) + 1146: 7(fvec4) ImageSampleProjExplicitLod 1143 1144 Grad ConstOffset 1145 1145 445 + 1147: 7(fvec4) Load 1142(texel) + 1148: 7(fvec4) FAdd 1147 1146 + Store 1142(texel) 1148 + 1149: 122 Load 124(s1D) + 1150: 7(fvec4) Load 197(c4) + 1151: 6(float) Load 866(dPdxy1) + 1152: 6(float) CompositeExtract 1150 3 + 1153: 7(fvec4) CompositeInsert 1152 1150 1 + 1154: 7(fvec4) ImageSampleProjExplicitLod 1149 1153 Grad ConstOffset 1151 1151 445 + 1155: 7(fvec4) Load 1142(texel) + 1156: 7(fvec4) FAdd 1155 1154 + Store 1142(texel) 1156 + 1157: 133 Load 135(s2D) + 1158: 148(fvec3) Load 150(c3) + 1159: 52(fvec2) Load 873(dPdxy2) + 1160: 7(fvec4) ImageSampleProjExplicitLod 1157 1158 Grad ConstOffset 1159 1159 452 + 1161: 7(fvec4) Load 1142(texel) + 1162: 7(fvec4) FAdd 1161 1160 + Store 1142(texel) 1162 + 1163: 133 Load 135(s2D) + 1164: 7(fvec4) Load 197(c4) + 1165: 52(fvec2) Load 873(dPdxy2) + 1166: 6(float) CompositeExtract 1164 3 + 1167: 7(fvec4) CompositeInsert 1166 1164 2 + 1168: 7(fvec4) ImageSampleProjExplicitLod 1163 1167 Grad ConstOffset 1165 1165 452 + 1169: 7(fvec4) Load 1142(texel) + 1170: 7(fvec4) FAdd 1169 1168 + Store 1142(texel) 1170 + 1171: 257 Load 259(s2DRect) + 1172: 148(fvec3) Load 150(c3) + 1173: 52(fvec2) Load 873(dPdxy2) + 1174: 7(fvec4) ImageSampleProjExplicitLod 1171 1172 Grad ConstOffset 1173 1173 452 + 1175: 7(fvec4) Load 1142(texel) + 1176: 7(fvec4) FAdd 1175 1174 + Store 1142(texel) 1176 + 1177: 257 Load 259(s2DRect) + 1178: 7(fvec4) Load 197(c4) + 1179: 52(fvec2) Load 873(dPdxy2) + 1180: 6(float) CompositeExtract 1178 3 + 1181: 7(fvec4) CompositeInsert 1180 1178 2 + 1182: 7(fvec4) ImageSampleProjExplicitLod 1177 1181 Grad ConstOffset 1179 1179 452 + 1183: 7(fvec4) Load 1142(texel) 1184: 7(fvec4) FAdd 1183 1182 - Store 1177(texel) 1184 - 1185: 122 Load 124(s1D) + Store 1142(texel) 1184 + 1185: 266 Load 268(s2DRectShadow) 1186: 7(fvec4) Load 197(c4) - 1187: 6(float) Load 866(dPdxy1) - 1188: 6(float) Load 866(dPdxy1) + 1187: 52(fvec2) Load 873(dPdxy2) + 1188: 6(float) CompositeExtract 1186 2 1189: 6(float) CompositeExtract 1186 3 - 1190: 7(fvec4) CompositeInsert 1189 1186 1 - 1191: 7(fvec4) ImageSampleProjExplicitLod 1185 1190 Grad ConstOffset 1187 1188 445 - 1192: 7(fvec4) Load 1177(texel) - 1193: 7(fvec4) FAdd 1192 1191 - Store 1177(texel) 1193 - 1194: 133 Load 135(s2D) - 1195: 148(fvec3) Load 150(c3) - 1196: 52(fvec2) Load 874(dPdxy2) - 1197: 52(fvec2) Load 874(dPdxy2) - 1198: 7(fvec4) ImageSampleProjExplicitLod 1194 1195 Grad ConstOffset 1196 1197 452 - 1199: 7(fvec4) Load 1177(texel) - 1200: 7(fvec4) FAdd 1199 1198 - Store 1177(texel) 1200 - 1201: 133 Load 135(s2D) - 1202: 7(fvec4) Load 197(c4) - 1203: 52(fvec2) Load 874(dPdxy2) - 1204: 52(fvec2) Load 874(dPdxy2) - 1205: 6(float) CompositeExtract 1202 3 - 1206: 7(fvec4) CompositeInsert 1205 1202 2 - 1207: 7(fvec4) ImageSampleProjExplicitLod 1201 1206 Grad ConstOffset 1203 1204 452 - 1208: 7(fvec4) Load 1177(texel) - 1209: 7(fvec4) FAdd 1208 1207 - Store 1177(texel) 1209 - 1210: 257 Load 259(s2DRect) - 1211: 148(fvec3) Load 150(c3) - 1212: 52(fvec2) Load 874(dPdxy2) - 1213: 52(fvec2) Load 874(dPdxy2) - 1214: 7(fvec4) ImageSampleProjExplicitLod 1210 1211 Grad ConstOffset 1212 1213 452 - 1215: 7(fvec4) Load 1177(texel) - 1216: 7(fvec4) FAdd 1215 1214 - Store 1177(texel) 1216 - 1217: 257 Load 259(s2DRect) - 1218: 7(fvec4) Load 197(c4) - 1219: 52(fvec2) Load 874(dPdxy2) - 1220: 52(fvec2) Load 874(dPdxy2) - 1221: 6(float) CompositeExtract 1218 3 - 1222: 7(fvec4) CompositeInsert 1221 1218 2 - 1223: 7(fvec4) ImageSampleProjExplicitLod 1217 1222 Grad ConstOffset 1219 1220 452 - 1224: 7(fvec4) Load 1177(texel) - 1225: 7(fvec4) FAdd 1224 1223 - Store 1177(texel) 1225 - 1226: 266 Load 268(s2DRectShadow) - 1227: 7(fvec4) Load 197(c4) - 1228: 52(fvec2) Load 874(dPdxy2) - 1229: 52(fvec2) Load 874(dPdxy2) - 1230: 6(float) CompositeExtract 1227 2 - 1231: 6(float) CompositeExtract 1227 3 - 1232: 7(fvec4) CompositeInsert 1231 1227 2 - 1233: 6(float) ImageSampleProjDrefExplicitLod 1226 1232 1230 Grad ConstOffset 1228 1229 452 - 1234: 174(ptr) AccessChain 1177(texel) 173 - 1235: 6(float) Load 1234 - 1236: 6(float) FAdd 1235 1233 - 1237: 174(ptr) AccessChain 1177(texel) 173 - Store 1237 1236 - 1238: 144 Load 146(s3D) - 1239: 7(fvec4) Load 197(c4) - 1240: 148(fvec3) Load 882(dPdxy3) - 1241: 148(fvec3) Load 882(dPdxy3) - 1242: 7(fvec4) ImageSampleProjExplicitLod 1238 1239 Grad ConstOffset 1240 1241 459 - 1243: 7(fvec4) Load 1177(texel) - 1244: 7(fvec4) FAdd 1243 1242 - Store 1177(texel) 1244 - 1245: 165 Load 167(s1DShadow) - 1246: 7(fvec4) Load 197(c4) - 1247: 6(float) Load 866(dPdxy1) - 1248: 6(float) Load 866(dPdxy1) - 1249: 6(float) CompositeExtract 1246 2 - 1250: 6(float) CompositeExtract 1246 3 - 1251: 7(fvec4) CompositeInsert 1250 1246 1 - 1252: 6(float) ImageSampleProjDrefExplicitLod 1245 1251 1249 Grad ConstOffset 1247 1248 445 - 1253: 174(ptr) AccessChain 1177(texel) 173 - 1254: 6(float) Load 1253 - 1255: 6(float) FAdd 1254 1252 - 1256: 174(ptr) AccessChain 1177(texel) 173 - Store 1256 1255 - 1257: 180 Load 182(s2DShadow) - 1258: 7(fvec4) Load 197(c4) - 1259: 52(fvec2) Load 874(dPdxy2) - 1260: 52(fvec2) Load 874(dPdxy2) - 1261: 6(float) CompositeExtract 1258 2 - 1262: 6(float) CompositeExtract 1258 3 - 1263: 7(fvec4) CompositeInsert 1262 1258 2 - 1264: 6(float) ImageSampleProjDrefExplicitLod 1257 1263 1261 Grad ConstOffset 1259 1260 452 - 1265: 174(ptr) AccessChain 1177(texel) 173 - 1266: 6(float) Load 1265 - 1267: 6(float) FAdd 1266 1264 - 1268: 174(ptr) AccessChain 1177(texel) 173 - Store 1268 1267 - 1269: 7(fvec4) Load 1177(texel) - ReturnValue 1269 + 1190: 7(fvec4) CompositeInsert 1189 1186 2 + 1191: 6(float) ImageSampleProjDrefExplicitLod 1185 1190 1188 Grad ConstOffset 1187 1187 452 + 1192: 174(ptr) AccessChain 1142(texel) 173 + 1193: 6(float) Load 1192 + 1194: 6(float) FAdd 1193 1191 + 1195: 174(ptr) AccessChain 1142(texel) 173 + Store 1195 1194 + 1196: 144 Load 146(s3D) + 1197: 7(fvec4) Load 197(c4) + 1198: 148(fvec3) Load 880(dPdxy3) + 1199: 7(fvec4) ImageSampleProjExplicitLod 1196 1197 Grad ConstOffset 1198 1198 459 + 1200: 7(fvec4) Load 1142(texel) + 1201: 7(fvec4) FAdd 1200 1199 + Store 1142(texel) 1201 + 1202: 165 Load 167(s1DShadow) + 1203: 7(fvec4) Load 197(c4) + 1204: 6(float) Load 866(dPdxy1) + 1205: 6(float) CompositeExtract 1203 2 + 1206: 6(float) CompositeExtract 1203 3 + 1207: 7(fvec4) CompositeInsert 1206 1203 1 + 1208: 6(float) ImageSampleProjDrefExplicitLod 1202 1207 1205 Grad ConstOffset 1204 1204 445 + 1209: 174(ptr) AccessChain 1142(texel) 173 + 1210: 6(float) Load 1209 + 1211: 6(float) FAdd 1210 1208 + 1212: 174(ptr) AccessChain 1142(texel) 173 + Store 1212 1211 + 1213: 180 Load 182(s2DShadow) + 1214: 7(fvec4) Load 197(c4) + 1215: 52(fvec2) Load 873(dPdxy2) + 1216: 6(float) CompositeExtract 1214 2 + 1217: 6(float) CompositeExtract 1214 3 + 1218: 7(fvec4) CompositeInsert 1217 1214 2 + 1219: 6(float) ImageSampleProjDrefExplicitLod 1213 1218 1216 Grad ConstOffset 1215 1215 452 + 1220: 174(ptr) AccessChain 1142(texel) 173 + 1221: 6(float) Load 1220 + 1222: 6(float) FAdd 1221 1219 + 1223: 174(ptr) AccessChain 1142(texel) 173 + Store 1223 1222 + 1224: 7(fvec4) Load 1142(texel) + ReturnValue 1224 FunctionEnd 35(testTextureGather(): 7(fvec4) Function None 8 36: Label - 1272(texel): 63(ptr) Variable Function - Store 1272(texel) 120 - 1273: 133 Load 135(s2D) - 1274: 52(fvec2) Load 138(c2) - 1276: 7(fvec4) ImageGather 1273 1274 1275 - 1277: 7(fvec4) Load 1272(texel) - 1278: 7(fvec4) FAdd 1277 1276 - Store 1272(texel) 1278 - 1279: 215 Load 217(s2DArray) - 1280: 148(fvec3) Load 150(c3) - 1281: 7(fvec4) ImageGather 1279 1280 1275 - 1282: 7(fvec4) Load 1272(texel) + 1227(texel): 63(ptr) Variable Function + Store 1227(texel) 120 + 1228: 133 Load 135(s2D) + 1229: 52(fvec2) Load 138(c2) + 1231: 7(fvec4) ImageGather 1228 1229 1230 + 1232: 7(fvec4) Load 1227(texel) + 1233: 7(fvec4) FAdd 1232 1231 + Store 1227(texel) 1233 + 1234: 215 Load 217(s2DArray) + 1235: 148(fvec3) Load 150(c3) + 1236: 7(fvec4) ImageGather 1234 1235 1230 + 1237: 7(fvec4) Load 1227(texel) + 1238: 7(fvec4) FAdd 1237 1236 + Store 1227(texel) 1238 + 1239: 156 Load 158(sCube) + 1240: 148(fvec3) Load 150(c3) + 1241: 7(fvec4) ImageGather 1239 1240 1230 + 1242: 7(fvec4) Load 1227(texel) + 1243: 7(fvec4) FAdd 1242 1241 + Store 1227(texel) 1243 + 1244: 224 Load 226(sCubeArray) + 1245: 7(fvec4) Load 197(c4) + 1246: 7(fvec4) ImageGather 1244 1245 1230 + 1247: 7(fvec4) Load 1227(texel) + 1248: 7(fvec4) FAdd 1247 1246 + Store 1227(texel) 1248 + 1249: 257 Load 259(s2DRect) + 1250: 52(fvec2) Load 138(c2) + 1251: 7(fvec4) ImageGather 1249 1250 1230 + 1252: 7(fvec4) Load 1227(texel) + 1253: 7(fvec4) FAdd 1252 1251 + Store 1227(texel) 1253 + 1254: 180 Load 182(s2DShadow) + 1255: 52(fvec2) Load 138(c2) + 1256: 6(float) Load 283(compare) + 1257: 7(fvec4) ImageDrefGather 1254 1255 1256 + 1258: 7(fvec4) Load 1227(texel) + 1259: 7(fvec4) FAdd 1258 1257 + Store 1227(texel) 1259 + 1260: 245 Load 247(s2DArrayShadow) + 1261: 148(fvec3) Load 150(c3) + 1262: 6(float) Load 283(compare) + 1263: 7(fvec4) ImageDrefGather 1260 1261 1262 + 1264: 7(fvec4) Load 1227(texel) + 1265: 7(fvec4) FAdd 1264 1263 + Store 1227(texel) 1265 + 1266: 192 Load 194(sCubeShadow) + 1267: 148(fvec3) Load 150(c3) + 1268: 6(float) Load 283(compare) + 1269: 7(fvec4) ImageDrefGather 1266 1267 1268 + 1270: 7(fvec4) Load 1227(texel) + 1271: 7(fvec4) FAdd 1270 1269 + Store 1227(texel) 1271 + 1272: 278 Load 280(sCubeArrayShadow) + 1273: 7(fvec4) Load 197(c4) + 1274: 6(float) Load 283(compare) + 1275: 7(fvec4) ImageDrefGather 1272 1273 1274 + 1276: 7(fvec4) Load 1227(texel) + 1277: 7(fvec4) FAdd 1276 1275 + Store 1227(texel) 1277 + 1278: 266 Load 268(s2DRectShadow) + 1279: 52(fvec2) Load 138(c2) + 1280: 6(float) Load 283(compare) + 1281: 7(fvec4) ImageDrefGather 1278 1279 1280 + 1282: 7(fvec4) Load 1227(texel) 1283: 7(fvec4) FAdd 1282 1281 - Store 1272(texel) 1283 - 1284: 156 Load 158(sCube) - 1285: 148(fvec3) Load 150(c3) - 1286: 7(fvec4) ImageGather 1284 1285 1275 - 1287: 7(fvec4) Load 1272(texel) - 1288: 7(fvec4) FAdd 1287 1286 - Store 1272(texel) 1288 - 1289: 224 Load 226(sCubeArray) - 1290: 7(fvec4) Load 197(c4) - 1291: 7(fvec4) ImageGather 1289 1290 1275 - 1292: 7(fvec4) Load 1272(texel) - 1293: 7(fvec4) FAdd 1292 1291 - Store 1272(texel) 1293 - 1294: 257 Load 259(s2DRect) - 1295: 52(fvec2) Load 138(c2) - 1296: 7(fvec4) ImageGather 1294 1295 1275 - 1297: 7(fvec4) Load 1272(texel) - 1298: 7(fvec4) FAdd 1297 1296 - Store 1272(texel) 1298 - 1299: 180 Load 182(s2DShadow) - 1300: 52(fvec2) Load 138(c2) - 1301: 6(float) Load 283(compare) - 1302: 7(fvec4) ImageDrefGather 1299 1300 1301 - 1303: 7(fvec4) Load 1272(texel) - 1304: 7(fvec4) FAdd 1303 1302 - Store 1272(texel) 1304 - 1305: 245 Load 247(s2DArrayShadow) - 1306: 148(fvec3) Load 150(c3) - 1307: 6(float) Load 283(compare) - 1308: 7(fvec4) ImageDrefGather 1305 1306 1307 - 1309: 7(fvec4) Load 1272(texel) - 1310: 7(fvec4) FAdd 1309 1308 - Store 1272(texel) 1310 - 1311: 192 Load 194(sCubeShadow) - 1312: 148(fvec3) Load 150(c3) - 1313: 6(float) Load 283(compare) - 1314: 7(fvec4) ImageDrefGather 1311 1312 1313 - 1315: 7(fvec4) Load 1272(texel) - 1316: 7(fvec4) FAdd 1315 1314 - Store 1272(texel) 1316 - 1317: 278 Load 280(sCubeArrayShadow) - 1318: 7(fvec4) Load 197(c4) - 1319: 6(float) Load 283(compare) - 1320: 7(fvec4) ImageDrefGather 1317 1318 1319 - 1321: 7(fvec4) Load 1272(texel) - 1322: 7(fvec4) FAdd 1321 1320 - Store 1272(texel) 1322 - 1323: 266 Load 268(s2DRectShadow) - 1324: 52(fvec2) Load 138(c2) - 1325: 6(float) Load 283(compare) - 1326: 7(fvec4) ImageDrefGather 1323 1324 1325 - 1327: 7(fvec4) Load 1272(texel) - 1328: 7(fvec4) FAdd 1327 1326 - Store 1272(texel) 1328 - 1329: 7(fvec4) Load 1272(texel) - ReturnValue 1329 + Store 1227(texel) 1283 + 1284: 7(fvec4) Load 1227(texel) + ReturnValue 1284 FunctionEnd 37(testTextureGatherOffset(): 7(fvec4) Function None 8 38: Label - 1332(texel): 63(ptr) Variable Function - Store 1332(texel) 120 - 1333: 133 Load 135(s2D) - 1334: 52(fvec2) Load 138(c2) - 1335: 7(fvec4) ImageGather 1333 1334 1275 ConstOffset 452 - 1336: 7(fvec4) Load 1332(texel) - 1337: 7(fvec4) FAdd 1336 1335 - Store 1332(texel) 1337 - 1338: 215 Load 217(s2DArray) - 1339: 148(fvec3) Load 150(c3) - 1340: 7(fvec4) ImageGather 1338 1339 1275 ConstOffset 452 - 1341: 7(fvec4) Load 1332(texel) - 1342: 7(fvec4) FAdd 1341 1340 - Store 1332(texel) 1342 - 1343: 257 Load 259(s2DRect) - 1344: 52(fvec2) Load 138(c2) - 1345: 7(fvec4) ImageGather 1343 1344 1275 ConstOffset 452 - 1346: 7(fvec4) Load 1332(texel) - 1347: 7(fvec4) FAdd 1346 1345 - Store 1332(texel) 1347 - 1348: 180 Load 182(s2DShadow) - 1349: 52(fvec2) Load 138(c2) - 1350: 6(float) Load 283(compare) - 1351: 7(fvec4) ImageDrefGather 1348 1349 1350 ConstOffset 452 - 1352: 7(fvec4) Load 1332(texel) - 1353: 7(fvec4) FAdd 1352 1351 - Store 1332(texel) 1353 - 1354: 245 Load 247(s2DArrayShadow) - 1355: 148(fvec3) Load 150(c3) - 1356: 6(float) Load 283(compare) - 1357: 7(fvec4) ImageDrefGather 1354 1355 1356 ConstOffset 452 - 1358: 7(fvec4) Load 1332(texel) - 1359: 7(fvec4) FAdd 1358 1357 - Store 1332(texel) 1359 - 1360: 266 Load 268(s2DRectShadow) - 1361: 52(fvec2) Load 138(c2) - 1362: 6(float) Load 283(compare) - 1363: 7(fvec4) ImageDrefGather 1360 1361 1362 ConstOffset 452 - 1364: 7(fvec4) Load 1332(texel) - 1365: 7(fvec4) FAdd 1364 1363 - Store 1332(texel) 1365 - 1366: 7(fvec4) Load 1332(texel) - ReturnValue 1366 + 1287(texel): 63(ptr) Variable Function + Store 1287(texel) 120 + 1288: 133 Load 135(s2D) + 1289: 52(fvec2) Load 138(c2) + 1290: 7(fvec4) ImageGather 1288 1289 1230 ConstOffset 452 + 1291: 7(fvec4) Load 1287(texel) + 1292: 7(fvec4) FAdd 1291 1290 + Store 1287(texel) 1292 + 1293: 215 Load 217(s2DArray) + 1294: 148(fvec3) Load 150(c3) + 1295: 7(fvec4) ImageGather 1293 1294 1230 ConstOffset 452 + 1296: 7(fvec4) Load 1287(texel) + 1297: 7(fvec4) FAdd 1296 1295 + Store 1287(texel) 1297 + 1298: 257 Load 259(s2DRect) + 1299: 52(fvec2) Load 138(c2) + 1300: 7(fvec4) ImageGather 1298 1299 1230 ConstOffset 452 + 1301: 7(fvec4) Load 1287(texel) + 1302: 7(fvec4) FAdd 1301 1300 + Store 1287(texel) 1302 + 1303: 180 Load 182(s2DShadow) + 1304: 52(fvec2) Load 138(c2) + 1305: 6(float) Load 283(compare) + 1306: 7(fvec4) ImageDrefGather 1303 1304 1305 ConstOffset 452 + 1307: 7(fvec4) Load 1287(texel) + 1308: 7(fvec4) FAdd 1307 1306 + Store 1287(texel) 1308 + 1309: 245 Load 247(s2DArrayShadow) + 1310: 148(fvec3) Load 150(c3) + 1311: 6(float) Load 283(compare) + 1312: 7(fvec4) ImageDrefGather 1309 1310 1311 ConstOffset 452 + 1313: 7(fvec4) Load 1287(texel) + 1314: 7(fvec4) FAdd 1313 1312 + Store 1287(texel) 1314 + 1315: 266 Load 268(s2DRectShadow) + 1316: 52(fvec2) Load 138(c2) + 1317: 6(float) Load 283(compare) + 1318: 7(fvec4) ImageDrefGather 1315 1316 1317 ConstOffset 452 + 1319: 7(fvec4) Load 1287(texel) + 1320: 7(fvec4) FAdd 1319 1318 + Store 1287(texel) 1320 + 1321: 7(fvec4) Load 1287(texel) + ReturnValue 1321 FunctionEnd 39(testTextureGatherOffsets(): 7(fvec4) Function None 8 40: Label - 1369(texel): 63(ptr) Variable Function - Store 1369(texel) 120 - 1370: 133 Load 135(s2D) - 1371: 52(fvec2) Load 138(c2) - 1375: 7(fvec4) ImageGather 1370 1371 1275 ConstOffsets 1374 - 1376: 7(fvec4) Load 1369(texel) - 1377: 7(fvec4) FAdd 1376 1375 - Store 1369(texel) 1377 - 1378: 215 Load 217(s2DArray) - 1379: 148(fvec3) Load 150(c3) - 1380: 7(fvec4) ImageGather 1378 1379 1275 ConstOffsets 1374 - 1381: 7(fvec4) Load 1369(texel) - 1382: 7(fvec4) FAdd 1381 1380 - Store 1369(texel) 1382 - 1383: 257 Load 259(s2DRect) - 1384: 52(fvec2) Load 138(c2) - 1385: 7(fvec4) ImageGather 1383 1384 1275 ConstOffsets 1374 - 1386: 7(fvec4) Load 1369(texel) - 1387: 7(fvec4) FAdd 1386 1385 - Store 1369(texel) 1387 - 1388: 180 Load 182(s2DShadow) - 1389: 52(fvec2) Load 138(c2) - 1390: 6(float) Load 283(compare) - 1391: 7(fvec4) ImageDrefGather 1388 1389 1390 ConstOffsets 1374 - 1392: 7(fvec4) Load 1369(texel) - 1393: 7(fvec4) FAdd 1392 1391 - Store 1369(texel) 1393 - 1394: 245 Load 247(s2DArrayShadow) - 1395: 148(fvec3) Load 150(c3) - 1396: 6(float) Load 283(compare) - 1397: 7(fvec4) ImageDrefGather 1394 1395 1396 ConstOffsets 1374 - 1398: 7(fvec4) Load 1369(texel) - 1399: 7(fvec4) FAdd 1398 1397 - Store 1369(texel) 1399 - 1400: 266 Load 268(s2DRectShadow) - 1401: 52(fvec2) Load 138(c2) - 1402: 6(float) Load 283(compare) - 1403: 7(fvec4) ImageDrefGather 1400 1401 1402 ConstOffsets 1374 - 1404: 7(fvec4) Load 1369(texel) - 1405: 7(fvec4) FAdd 1404 1403 - Store 1369(texel) 1405 - 1406: 7(fvec4) Load 1369(texel) - ReturnValue 1406 + 1324(texel): 63(ptr) Variable Function + Store 1324(texel) 120 + 1325: 133 Load 135(s2D) + 1326: 52(fvec2) Load 138(c2) + 1330: 7(fvec4) ImageGather 1325 1326 1230 ConstOffsets 1329 + 1331: 7(fvec4) Load 1324(texel) + 1332: 7(fvec4) FAdd 1331 1330 + Store 1324(texel) 1332 + 1333: 215 Load 217(s2DArray) + 1334: 148(fvec3) Load 150(c3) + 1335: 7(fvec4) ImageGather 1333 1334 1230 ConstOffsets 1329 + 1336: 7(fvec4) Load 1324(texel) + 1337: 7(fvec4) FAdd 1336 1335 + Store 1324(texel) 1337 + 1338: 257 Load 259(s2DRect) + 1339: 52(fvec2) Load 138(c2) + 1340: 7(fvec4) ImageGather 1338 1339 1230 ConstOffsets 1329 + 1341: 7(fvec4) Load 1324(texel) + 1342: 7(fvec4) FAdd 1341 1340 + Store 1324(texel) 1342 + 1343: 180 Load 182(s2DShadow) + 1344: 52(fvec2) Load 138(c2) + 1345: 6(float) Load 283(compare) + 1346: 7(fvec4) ImageDrefGather 1343 1344 1345 ConstOffsets 1329 + 1347: 7(fvec4) Load 1324(texel) + 1348: 7(fvec4) FAdd 1347 1346 + Store 1324(texel) 1348 + 1349: 245 Load 247(s2DArrayShadow) + 1350: 148(fvec3) Load 150(c3) + 1351: 6(float) Load 283(compare) + 1352: 7(fvec4) ImageDrefGather 1349 1350 1351 ConstOffsets 1329 + 1353: 7(fvec4) Load 1324(texel) + 1354: 7(fvec4) FAdd 1353 1352 + Store 1324(texel) 1354 + 1355: 266 Load 268(s2DRectShadow) + 1356: 52(fvec2) Load 138(c2) + 1357: 6(float) Load 283(compare) + 1358: 7(fvec4) ImageDrefGather 1355 1356 1357 ConstOffsets 1329 + 1359: 7(fvec4) Load 1324(texel) + 1360: 7(fvec4) FAdd 1359 1358 + Store 1324(texel) 1360 + 1361: 7(fvec4) Load 1324(texel) + ReturnValue 1361 FunctionEnd 41(testTextureGatherLod(): 7(fvec4) Function None 8 42: Label - 1409(texel): 63(ptr) Variable Function - Store 1409(texel) 120 - 1410: 133 Load 135(s2D) - 1411: 52(fvec2) Load 138(c2) - 1412: 6(float) Load 371(lod) - 1413: 7(fvec4) ImageGather 1410 1411 1275 Lod 1412 - 1414: 7(fvec4) Load 1409(texel) - 1415: 7(fvec4) FAdd 1414 1413 - Store 1409(texel) 1415 - 1416: 215 Load 217(s2DArray) - 1417: 148(fvec3) Load 150(c3) - 1418: 6(float) Load 371(lod) - 1419: 7(fvec4) ImageGather 1416 1417 1275 Lod 1418 - 1420: 7(fvec4) Load 1409(texel) - 1421: 7(fvec4) FAdd 1420 1419 - Store 1409(texel) 1421 - 1422: 156 Load 158(sCube) - 1423: 148(fvec3) Load 150(c3) - 1424: 6(float) Load 371(lod) - 1425: 7(fvec4) ImageGather 1422 1423 1275 Lod 1424 - 1426: 7(fvec4) Load 1409(texel) - 1427: 7(fvec4) FAdd 1426 1425 - Store 1409(texel) 1427 - 1428: 224 Load 226(sCubeArray) - 1429: 7(fvec4) Load 197(c4) - 1430: 6(float) Load 371(lod) - 1431: 7(fvec4) ImageGather 1428 1429 1275 Lod 1430 - 1432: 7(fvec4) Load 1409(texel) - 1433: 7(fvec4) FAdd 1432 1431 - Store 1409(texel) 1433 - 1434: 7(fvec4) Load 1409(texel) - ReturnValue 1434 + 1364(texel): 63(ptr) Variable Function + Store 1364(texel) 120 + 1365: 133 Load 135(s2D) + 1366: 52(fvec2) Load 138(c2) + 1367: 6(float) Load 371(lod) + 1368: 7(fvec4) ImageGather 1365 1366 1230 Lod 1367 + 1369: 7(fvec4) Load 1364(texel) + 1370: 7(fvec4) FAdd 1369 1368 + Store 1364(texel) 1370 + 1371: 215 Load 217(s2DArray) + 1372: 148(fvec3) Load 150(c3) + 1373: 6(float) Load 371(lod) + 1374: 7(fvec4) ImageGather 1371 1372 1230 Lod 1373 + 1375: 7(fvec4) Load 1364(texel) + 1376: 7(fvec4) FAdd 1375 1374 + Store 1364(texel) 1376 + 1377: 156 Load 158(sCube) + 1378: 148(fvec3) Load 150(c3) + 1379: 6(float) Load 371(lod) + 1380: 7(fvec4) ImageGather 1377 1378 1230 Lod 1379 + 1381: 7(fvec4) Load 1364(texel) + 1382: 7(fvec4) FAdd 1381 1380 + Store 1364(texel) 1382 + 1383: 224 Load 226(sCubeArray) + 1384: 7(fvec4) Load 197(c4) + 1385: 6(float) Load 371(lod) + 1386: 7(fvec4) ImageGather 1383 1384 1230 Lod 1385 + 1387: 7(fvec4) Load 1364(texel) + 1388: 7(fvec4) FAdd 1387 1386 + Store 1364(texel) 1388 + 1389: 7(fvec4) Load 1364(texel) + ReturnValue 1389 FunctionEnd 43(testTextureGatherLodOffset(): 7(fvec4) Function None 8 44: Label - 1437(texel): 63(ptr) Variable Function - Store 1437(texel) 120 - 1438: 133 Load 135(s2D) - 1439: 52(fvec2) Load 138(c2) - 1440: 6(float) Load 371(lod) - 1441: 7(fvec4) ImageGather 1438 1439 1275 Lod ConstOffset 1440 452 - 1442: 7(fvec4) Load 1437(texel) - 1443: 7(fvec4) FAdd 1442 1441 - Store 1437(texel) 1443 - 1444: 215 Load 217(s2DArray) - 1445: 148(fvec3) Load 150(c3) - 1446: 6(float) Load 371(lod) - 1447: 7(fvec4) ImageGather 1444 1445 1275 Lod ConstOffset 1446 452 - 1448: 7(fvec4) Load 1437(texel) - 1449: 7(fvec4) FAdd 1448 1447 - Store 1437(texel) 1449 - 1450: 7(fvec4) Load 1437(texel) - ReturnValue 1450 + 1392(texel): 63(ptr) Variable Function + Store 1392(texel) 120 + 1393: 133 Load 135(s2D) + 1394: 52(fvec2) Load 138(c2) + 1395: 6(float) Load 371(lod) + 1396: 7(fvec4) ImageGather 1393 1394 1230 Lod ConstOffset 1395 452 + 1397: 7(fvec4) Load 1392(texel) + 1398: 7(fvec4) FAdd 1397 1396 + Store 1392(texel) 1398 + 1399: 215 Load 217(s2DArray) + 1400: 148(fvec3) Load 150(c3) + 1401: 6(float) Load 371(lod) + 1402: 7(fvec4) ImageGather 1399 1400 1230 Lod ConstOffset 1401 452 + 1403: 7(fvec4) Load 1392(texel) + 1404: 7(fvec4) FAdd 1403 1402 + Store 1392(texel) 1404 + 1405: 7(fvec4) Load 1392(texel) + ReturnValue 1405 FunctionEnd 45(testTextureGatherLodOffsets(): 7(fvec4) Function None 8 46: Label - 1453(texel): 63(ptr) Variable Function - Store 1453(texel) 120 - 1454: 133 Load 135(s2D) - 1455: 52(fvec2) Load 138(c2) - 1456: 6(float) Load 371(lod) - 1457: 7(fvec4) ImageGather 1454 1455 1275 Lod ConstOffsets 1456 1374 - 1458: 7(fvec4) Load 1453(texel) - 1459: 7(fvec4) FAdd 1458 1457 - Store 1453(texel) 1459 - 1460: 215 Load 217(s2DArray) - 1461: 148(fvec3) Load 150(c3) - 1462: 6(float) Load 371(lod) - 1463: 7(fvec4) ImageGather 1460 1461 1275 Lod ConstOffsets 1462 1374 - 1464: 7(fvec4) Load 1453(texel) - 1465: 7(fvec4) FAdd 1464 1463 - Store 1453(texel) 1465 - 1466: 7(fvec4) Load 1453(texel) - ReturnValue 1466 + 1408(texel): 63(ptr) Variable Function + Store 1408(texel) 120 + 1409: 133 Load 135(s2D) + 1410: 52(fvec2) Load 138(c2) + 1411: 6(float) Load 371(lod) + 1412: 7(fvec4) ImageGather 1409 1410 1230 Lod ConstOffsets 1411 1329 + 1413: 7(fvec4) Load 1408(texel) + 1414: 7(fvec4) FAdd 1413 1412 + Store 1408(texel) 1414 + 1415: 215 Load 217(s2DArray) + 1416: 148(fvec3) Load 150(c3) + 1417: 6(float) Load 371(lod) + 1418: 7(fvec4) ImageGather 1415 1416 1230 Lod ConstOffsets 1417 1329 + 1419: 7(fvec4) Load 1408(texel) + 1420: 7(fvec4) FAdd 1419 1418 + Store 1408(texel) 1420 + 1421: 7(fvec4) Load 1408(texel) + ReturnValue 1421 FunctionEnd 50(testTextureSize(): 48(ivec4) Function None 49 51: Label - 1470(size): 1469(ptr) Variable Function - Store 1470(size) 1471 - 1472: 122 Load 124(s1D) - 1473: 6(float) Load 371(lod) - 1474: 47(int) ConvertFToS 1473 - 1475: 121 Image 1472 - 1476: 47(int) ImageQuerySizeLod 1475 1474 - 1478: 1477(ptr) AccessChain 1470(size) 173 - 1479: 47(int) Load 1478 - 1480: 47(int) IAdd 1479 1476 - 1481: 1477(ptr) AccessChain 1470(size) 173 - Store 1481 1480 - 1482: 133 Load 135(s2D) - 1483: 6(float) Load 371(lod) - 1484: 47(int) ConvertFToS 1483 - 1485: 132 Image 1482 - 1486: 451(ivec2) ImageQuerySizeLod 1485 1484 - 1487: 48(ivec4) Load 1470(size) - 1488: 451(ivec2) VectorShuffle 1487 1487 0 1 - 1489: 451(ivec2) IAdd 1488 1486 - 1490: 1477(ptr) AccessChain 1470(size) 173 - 1491: 47(int) CompositeExtract 1489 0 - Store 1490 1491 - 1493: 1477(ptr) AccessChain 1470(size) 1492 - 1494: 47(int) CompositeExtract 1489 1 - Store 1493 1494 - 1495: 144 Load 146(s3D) - 1496: 6(float) Load 371(lod) - 1497: 47(int) ConvertFToS 1496 - 1498: 143 Image 1495 - 1499: 458(ivec3) ImageQuerySizeLod 1498 1497 - 1500: 48(ivec4) Load 1470(size) - 1501: 458(ivec3) VectorShuffle 1500 1500 0 1 2 - 1502: 458(ivec3) IAdd 1501 1499 - 1503: 1477(ptr) AccessChain 1470(size) 173 - 1504: 47(int) CompositeExtract 1502 0 - Store 1503 1504 - 1505: 1477(ptr) AccessChain 1470(size) 1492 - 1506: 47(int) CompositeExtract 1502 1 - Store 1505 1506 - 1508: 1477(ptr) AccessChain 1470(size) 1507 - 1509: 47(int) CompositeExtract 1502 2 + 1425(size): 1424(ptr) Variable Function + Store 1425(size) 1426 + 1427: 122 Load 124(s1D) + 1428: 6(float) Load 371(lod) + 1429: 47(int) ConvertFToS 1428 + 1430: 121 Image 1427 + 1431: 47(int) ImageQuerySizeLod 1430 1429 + 1433: 1432(ptr) AccessChain 1425(size) 173 + 1434: 47(int) Load 1433 + 1435: 47(int) IAdd 1434 1431 + 1436: 1432(ptr) AccessChain 1425(size) 173 + Store 1436 1435 + 1437: 133 Load 135(s2D) + 1438: 6(float) Load 371(lod) + 1439: 47(int) ConvertFToS 1438 + 1440: 132 Image 1437 + 1441: 451(ivec2) ImageQuerySizeLod 1440 1439 + 1442: 48(ivec4) Load 1425(size) + 1443: 451(ivec2) VectorShuffle 1442 1442 0 1 + 1444: 451(ivec2) IAdd 1443 1441 + 1445: 1432(ptr) AccessChain 1425(size) 173 + 1446: 47(int) CompositeExtract 1444 0 + Store 1445 1446 + 1448: 1432(ptr) AccessChain 1425(size) 1447 + 1449: 47(int) CompositeExtract 1444 1 + Store 1448 1449 + 1450: 144 Load 146(s3D) + 1451: 6(float) Load 371(lod) + 1452: 47(int) ConvertFToS 1451 + 1453: 143 Image 1450 + 1454: 458(ivec3) ImageQuerySizeLod 1453 1452 + 1455: 48(ivec4) Load 1425(size) + 1456: 458(ivec3) VectorShuffle 1455 1455 0 1 2 + 1457: 458(ivec3) IAdd 1456 1454 + 1458: 1432(ptr) AccessChain 1425(size) 173 + 1459: 47(int) CompositeExtract 1457 0 + Store 1458 1459 + 1460: 1432(ptr) AccessChain 1425(size) 1447 + 1461: 47(int) CompositeExtract 1457 1 + Store 1460 1461 + 1463: 1432(ptr) AccessChain 1425(size) 1462 + 1464: 47(int) CompositeExtract 1457 2 + Store 1463 1464 + 1465: 156 Load 158(sCube) + 1466: 6(float) Load 371(lod) + 1467: 47(int) ConvertFToS 1466 + 1468: 155 Image 1465 + 1469: 451(ivec2) ImageQuerySizeLod 1468 1467 + 1470: 48(ivec4) Load 1425(size) + 1471: 451(ivec2) VectorShuffle 1470 1470 0 1 + 1472: 451(ivec2) IAdd 1471 1469 + 1473: 1432(ptr) AccessChain 1425(size) 173 + 1474: 47(int) CompositeExtract 1472 0 + Store 1473 1474 + 1475: 1432(ptr) AccessChain 1425(size) 1447 + 1476: 47(int) CompositeExtract 1472 1 + Store 1475 1476 + 1477: 165 Load 167(s1DShadow) + 1478: 6(float) Load 371(lod) + 1479: 47(int) ConvertFToS 1478 + 1480: 164 Image 1477 + 1481: 47(int) ImageQuerySizeLod 1480 1479 + 1482: 1432(ptr) AccessChain 1425(size) 173 + 1483: 47(int) Load 1482 + 1484: 47(int) IAdd 1483 1481 + 1485: 1432(ptr) AccessChain 1425(size) 173 + Store 1485 1484 + 1486: 180 Load 182(s2DShadow) + 1487: 6(float) Load 371(lod) + 1488: 47(int) ConvertFToS 1487 + 1489: 179 Image 1486 + 1490: 451(ivec2) ImageQuerySizeLod 1489 1488 + 1491: 48(ivec4) Load 1425(size) + 1492: 451(ivec2) VectorShuffle 1491 1491 0 1 + 1493: 451(ivec2) IAdd 1492 1490 + 1494: 1432(ptr) AccessChain 1425(size) 173 + 1495: 47(int) CompositeExtract 1493 0 + Store 1494 1495 + 1496: 1432(ptr) AccessChain 1425(size) 1447 + 1497: 47(int) CompositeExtract 1493 1 + Store 1496 1497 + 1498: 192 Load 194(sCubeShadow) + 1499: 6(float) Load 371(lod) + 1500: 47(int) ConvertFToS 1499 + 1501: 191 Image 1498 + 1502: 451(ivec2) ImageQuerySizeLod 1501 1500 + 1503: 48(ivec4) Load 1425(size) + 1504: 451(ivec2) VectorShuffle 1503 1503 0 1 + 1505: 451(ivec2) IAdd 1504 1502 + 1506: 1432(ptr) AccessChain 1425(size) 173 + 1507: 47(int) CompositeExtract 1505 0 + Store 1506 1507 + 1508: 1432(ptr) AccessChain 1425(size) 1447 + 1509: 47(int) CompositeExtract 1505 1 Store 1508 1509 - 1510: 156 Load 158(sCube) + 1510: 224 Load 226(sCubeArray) 1511: 6(float) Load 371(lod) 1512: 47(int) ConvertFToS 1511 - 1513: 155 Image 1510 - 1514: 451(ivec2) ImageQuerySizeLod 1513 1512 - 1515: 48(ivec4) Load 1470(size) - 1516: 451(ivec2) VectorShuffle 1515 1515 0 1 - 1517: 451(ivec2) IAdd 1516 1514 - 1518: 1477(ptr) AccessChain 1470(size) 173 + 1513: 223 Image 1510 + 1514: 458(ivec3) ImageQuerySizeLod 1513 1512 + 1515: 48(ivec4) Load 1425(size) + 1516: 458(ivec3) VectorShuffle 1515 1515 0 1 2 + 1517: 458(ivec3) IAdd 1516 1514 + 1518: 1432(ptr) AccessChain 1425(size) 173 1519: 47(int) CompositeExtract 1517 0 Store 1518 1519 - 1520: 1477(ptr) AccessChain 1470(size) 1492 + 1520: 1432(ptr) AccessChain 1425(size) 1447 1521: 47(int) CompositeExtract 1517 1 Store 1520 1521 - 1522: 165 Load 167(s1DShadow) - 1523: 6(float) Load 371(lod) - 1524: 47(int) ConvertFToS 1523 - 1525: 164 Image 1522 - 1526: 47(int) ImageQuerySizeLod 1525 1524 - 1527: 1477(ptr) AccessChain 1470(size) 173 - 1528: 47(int) Load 1527 - 1529: 47(int) IAdd 1528 1526 - 1530: 1477(ptr) AccessChain 1470(size) 173 - Store 1530 1529 - 1531: 180 Load 182(s2DShadow) - 1532: 6(float) Load 371(lod) - 1533: 47(int) ConvertFToS 1532 - 1534: 179 Image 1531 - 1535: 451(ivec2) ImageQuerySizeLod 1534 1533 - 1536: 48(ivec4) Load 1470(size) - 1537: 451(ivec2) VectorShuffle 1536 1536 0 1 - 1538: 451(ivec2) IAdd 1537 1535 - 1539: 1477(ptr) AccessChain 1470(size) 173 - 1540: 47(int) CompositeExtract 1538 0 - Store 1539 1540 - 1541: 1477(ptr) AccessChain 1470(size) 1492 - 1542: 47(int) CompositeExtract 1538 1 - Store 1541 1542 - 1543: 192 Load 194(sCubeShadow) - 1544: 6(float) Load 371(lod) - 1545: 47(int) ConvertFToS 1544 - 1546: 191 Image 1543 - 1547: 451(ivec2) ImageQuerySizeLod 1546 1545 - 1548: 48(ivec4) Load 1470(size) - 1549: 451(ivec2) VectorShuffle 1548 1548 0 1 - 1550: 451(ivec2) IAdd 1549 1547 - 1551: 1477(ptr) AccessChain 1470(size) 173 - 1552: 47(int) CompositeExtract 1550 0 - Store 1551 1552 - 1553: 1477(ptr) AccessChain 1470(size) 1492 - 1554: 47(int) CompositeExtract 1550 1 - Store 1553 1554 - 1555: 224 Load 226(sCubeArray) - 1556: 6(float) Load 371(lod) - 1557: 47(int) ConvertFToS 1556 - 1558: 223 Image 1555 - 1559: 458(ivec3) ImageQuerySizeLod 1558 1557 - 1560: 48(ivec4) Load 1470(size) - 1561: 458(ivec3) VectorShuffle 1560 1560 0 1 2 - 1562: 458(ivec3) IAdd 1561 1559 - 1563: 1477(ptr) AccessChain 1470(size) 173 - 1564: 47(int) CompositeExtract 1562 0 - Store 1563 1564 - 1565: 1477(ptr) AccessChain 1470(size) 1492 - 1566: 47(int) CompositeExtract 1562 1 - Store 1565 1566 - 1567: 1477(ptr) AccessChain 1470(size) 1507 - 1568: 47(int) CompositeExtract 1562 2 - Store 1567 1568 - 1569: 278 Load 280(sCubeArrayShadow) - 1570: 6(float) Load 371(lod) - 1571: 47(int) ConvertFToS 1570 - 1572: 277 Image 1569 - 1573: 458(ivec3) ImageQuerySizeLod 1572 1571 - 1574: 48(ivec4) Load 1470(size) - 1575: 458(ivec3) VectorShuffle 1574 1574 0 1 2 - 1576: 458(ivec3) IAdd 1575 1573 - 1577: 1477(ptr) AccessChain 1470(size) 173 - 1578: 47(int) CompositeExtract 1576 0 - Store 1577 1578 - 1579: 1477(ptr) AccessChain 1470(size) 1492 - 1580: 47(int) CompositeExtract 1576 1 - Store 1579 1580 - 1581: 1477(ptr) AccessChain 1470(size) 1507 - 1582: 47(int) CompositeExtract 1576 2 - Store 1581 1582 - 1583: 257 Load 259(s2DRect) - 1584: 256 Image 1583 - 1585: 451(ivec2) ImageQuerySize 1584 - 1586: 48(ivec4) Load 1470(size) - 1587: 451(ivec2) VectorShuffle 1586 1586 0 1 - 1588: 451(ivec2) IAdd 1587 1585 - 1589: 1477(ptr) AccessChain 1470(size) 173 - 1590: 47(int) CompositeExtract 1588 0 - Store 1589 1590 - 1591: 1477(ptr) AccessChain 1470(size) 1492 - 1592: 47(int) CompositeExtract 1588 1 - Store 1591 1592 - 1593: 266 Load 268(s2DRectShadow) - 1594: 265 Image 1593 - 1595: 451(ivec2) ImageQuerySize 1594 - 1596: 48(ivec4) Load 1470(size) - 1597: 451(ivec2) VectorShuffle 1596 1596 0 1 - 1598: 451(ivec2) IAdd 1597 1595 - 1599: 1477(ptr) AccessChain 1470(size) 173 - 1600: 47(int) CompositeExtract 1598 0 - Store 1599 1600 - 1601: 1477(ptr) AccessChain 1470(size) 1492 - 1602: 47(int) CompositeExtract 1598 1 - Store 1601 1602 - 1603: 206 Load 208(s1DArray) - 1604: 6(float) Load 371(lod) - 1605: 47(int) ConvertFToS 1604 - 1606: 205 Image 1603 - 1607: 451(ivec2) ImageQuerySizeLod 1606 1605 - 1608: 48(ivec4) Load 1470(size) - 1609: 451(ivec2) VectorShuffle 1608 1608 0 1 - 1610: 451(ivec2) IAdd 1609 1607 - 1611: 1477(ptr) AccessChain 1470(size) 173 - 1612: 47(int) CompositeExtract 1610 0 - Store 1611 1612 - 1613: 1477(ptr) AccessChain 1470(size) 1492 - 1614: 47(int) CompositeExtract 1610 1 - Store 1613 1614 - 1615: 215 Load 217(s2DArray) - 1616: 6(float) Load 371(lod) - 1617: 47(int) ConvertFToS 1616 - 1618: 214 Image 1615 - 1619: 458(ivec3) ImageQuerySizeLod 1618 1617 - 1620: 48(ivec4) Load 1470(size) - 1621: 458(ivec3) VectorShuffle 1620 1620 0 1 2 - 1622: 458(ivec3) IAdd 1621 1619 - 1623: 1477(ptr) AccessChain 1470(size) 173 + 1522: 1432(ptr) AccessChain 1425(size) 1462 + 1523: 47(int) CompositeExtract 1517 2 + Store 1522 1523 + 1524: 278 Load 280(sCubeArrayShadow) + 1525: 6(float) Load 371(lod) + 1526: 47(int) ConvertFToS 1525 + 1527: 277 Image 1524 + 1528: 458(ivec3) ImageQuerySizeLod 1527 1526 + 1529: 48(ivec4) Load 1425(size) + 1530: 458(ivec3) VectorShuffle 1529 1529 0 1 2 + 1531: 458(ivec3) IAdd 1530 1528 + 1532: 1432(ptr) AccessChain 1425(size) 173 + 1533: 47(int) CompositeExtract 1531 0 + Store 1532 1533 + 1534: 1432(ptr) AccessChain 1425(size) 1447 + 1535: 47(int) CompositeExtract 1531 1 + Store 1534 1535 + 1536: 1432(ptr) AccessChain 1425(size) 1462 + 1537: 47(int) CompositeExtract 1531 2 + Store 1536 1537 + 1538: 257 Load 259(s2DRect) + 1539: 256 Image 1538 + 1540: 451(ivec2) ImageQuerySize 1539 + 1541: 48(ivec4) Load 1425(size) + 1542: 451(ivec2) VectorShuffle 1541 1541 0 1 + 1543: 451(ivec2) IAdd 1542 1540 + 1544: 1432(ptr) AccessChain 1425(size) 173 + 1545: 47(int) CompositeExtract 1543 0 + Store 1544 1545 + 1546: 1432(ptr) AccessChain 1425(size) 1447 + 1547: 47(int) CompositeExtract 1543 1 + Store 1546 1547 + 1548: 266 Load 268(s2DRectShadow) + 1549: 265 Image 1548 + 1550: 451(ivec2) ImageQuerySize 1549 + 1551: 48(ivec4) Load 1425(size) + 1552: 451(ivec2) VectorShuffle 1551 1551 0 1 + 1553: 451(ivec2) IAdd 1552 1550 + 1554: 1432(ptr) AccessChain 1425(size) 173 + 1555: 47(int) CompositeExtract 1553 0 + Store 1554 1555 + 1556: 1432(ptr) AccessChain 1425(size) 1447 + 1557: 47(int) CompositeExtract 1553 1 + Store 1556 1557 + 1558: 206 Load 208(s1DArray) + 1559: 6(float) Load 371(lod) + 1560: 47(int) ConvertFToS 1559 + 1561: 205 Image 1558 + 1562: 451(ivec2) ImageQuerySizeLod 1561 1560 + 1563: 48(ivec4) Load 1425(size) + 1564: 451(ivec2) VectorShuffle 1563 1563 0 1 + 1565: 451(ivec2) IAdd 1564 1562 + 1566: 1432(ptr) AccessChain 1425(size) 173 + 1567: 47(int) CompositeExtract 1565 0 + Store 1566 1567 + 1568: 1432(ptr) AccessChain 1425(size) 1447 + 1569: 47(int) CompositeExtract 1565 1 + Store 1568 1569 + 1570: 215 Load 217(s2DArray) + 1571: 6(float) Load 371(lod) + 1572: 47(int) ConvertFToS 1571 + 1573: 214 Image 1570 + 1574: 458(ivec3) ImageQuerySizeLod 1573 1572 + 1575: 48(ivec4) Load 1425(size) + 1576: 458(ivec3) VectorShuffle 1575 1575 0 1 2 + 1577: 458(ivec3) IAdd 1576 1574 + 1578: 1432(ptr) AccessChain 1425(size) 173 + 1579: 47(int) CompositeExtract 1577 0 + Store 1578 1579 + 1580: 1432(ptr) AccessChain 1425(size) 1447 + 1581: 47(int) CompositeExtract 1577 1 + Store 1580 1581 + 1582: 1432(ptr) AccessChain 1425(size) 1462 + 1583: 47(int) CompositeExtract 1577 2 + Store 1582 1583 + 1584: 233 Load 235(s1DArrayShadow) + 1585: 6(float) Load 371(lod) + 1586: 47(int) ConvertFToS 1585 + 1587: 232 Image 1584 + 1588: 451(ivec2) ImageQuerySizeLod 1587 1586 + 1589: 48(ivec4) Load 1425(size) + 1590: 451(ivec2) VectorShuffle 1589 1589 0 1 + 1591: 451(ivec2) IAdd 1590 1588 + 1592: 1432(ptr) AccessChain 1425(size) 173 + 1593: 47(int) CompositeExtract 1591 0 + Store 1592 1593 + 1594: 1432(ptr) AccessChain 1425(size) 1447 + 1595: 47(int) CompositeExtract 1591 1 + Store 1594 1595 + 1596: 245 Load 247(s2DArrayShadow) + 1597: 6(float) Load 371(lod) + 1598: 47(int) ConvertFToS 1597 + 1599: 244 Image 1596 + 1600: 458(ivec3) ImageQuerySizeLod 1599 1598 + 1601: 48(ivec4) Load 1425(size) + 1602: 458(ivec3) VectorShuffle 1601 1601 0 1 2 + 1603: 458(ivec3) IAdd 1602 1600 + 1604: 1432(ptr) AccessChain 1425(size) 173 + 1605: 47(int) CompositeExtract 1603 0 + Store 1604 1605 + 1606: 1432(ptr) AccessChain 1425(size) 1447 + 1607: 47(int) CompositeExtract 1603 1 + Store 1606 1607 + 1608: 1432(ptr) AccessChain 1425(size) 1462 + 1609: 47(int) CompositeExtract 1603 2 + Store 1608 1609 + 1610: 771 Load 773(sBuffer) + 1611: 770 Image 1610 + 1612: 47(int) ImageQuerySize 1611 + 1613: 1432(ptr) AccessChain 1425(size) 173 + 1614: 47(int) Load 1613 + 1615: 47(int) IAdd 1614 1612 + 1616: 1432(ptr) AccessChain 1425(size) 173 + Store 1616 1615 + 1617: 782 Load 784(s2DMS) + 1618: 781 Image 1617 + 1619: 451(ivec2) ImageQuerySize 1618 + 1620: 48(ivec4) Load 1425(size) + 1621: 451(ivec2) VectorShuffle 1620 1620 0 1 + 1622: 451(ivec2) IAdd 1621 1619 + 1623: 1432(ptr) AccessChain 1425(size) 173 1624: 47(int) CompositeExtract 1622 0 Store 1623 1624 - 1625: 1477(ptr) AccessChain 1470(size) 1492 + 1625: 1432(ptr) AccessChain 1425(size) 1447 1626: 47(int) CompositeExtract 1622 1 Store 1625 1626 - 1627: 1477(ptr) AccessChain 1470(size) 1507 - 1628: 47(int) CompositeExtract 1622 2 - Store 1627 1628 - 1629: 233 Load 235(s1DArrayShadow) - 1630: 6(float) Load 371(lod) - 1631: 47(int) ConvertFToS 1630 - 1632: 232 Image 1629 - 1633: 451(ivec2) ImageQuerySizeLod 1632 1631 - 1634: 48(ivec4) Load 1470(size) - 1635: 451(ivec2) VectorShuffle 1634 1634 0 1 - 1636: 451(ivec2) IAdd 1635 1633 - 1637: 1477(ptr) AccessChain 1470(size) 173 - 1638: 47(int) CompositeExtract 1636 0 + 1627: 793 Load 795(s2DMSArray) + 1628: 792 Image 1627 + 1629: 458(ivec3) ImageQuerySize 1628 + 1630: 48(ivec4) Load 1425(size) + 1631: 458(ivec3) VectorShuffle 1630 1630 0 1 2 + 1632: 458(ivec3) IAdd 1631 1629 + 1633: 1432(ptr) AccessChain 1425(size) 173 + 1634: 47(int) CompositeExtract 1632 0 + Store 1633 1634 + 1635: 1432(ptr) AccessChain 1425(size) 1447 + 1636: 47(int) CompositeExtract 1632 1 + Store 1635 1636 + 1637: 1432(ptr) AccessChain 1425(size) 1462 + 1638: 47(int) CompositeExtract 1632 2 Store 1637 1638 - 1639: 1477(ptr) AccessChain 1470(size) 1492 - 1640: 47(int) CompositeExtract 1636 1 - Store 1639 1640 - 1641: 245 Load 247(s2DArrayShadow) - 1642: 6(float) Load 371(lod) - 1643: 47(int) ConvertFToS 1642 - 1644: 244 Image 1641 - 1645: 458(ivec3) ImageQuerySizeLod 1644 1643 - 1646: 48(ivec4) Load 1470(size) - 1647: 458(ivec3) VectorShuffle 1646 1646 0 1 2 - 1648: 458(ivec3) IAdd 1647 1645 - 1649: 1477(ptr) AccessChain 1470(size) 173 - 1650: 47(int) CompositeExtract 1648 0 - Store 1649 1650 - 1651: 1477(ptr) AccessChain 1470(size) 1492 - 1652: 47(int) CompositeExtract 1648 1 - Store 1651 1652 - 1653: 1477(ptr) AccessChain 1470(size) 1507 - 1654: 47(int) CompositeExtract 1648 2 - Store 1653 1654 - 1655: 771 Load 773(sBuffer) - 1656: 770 Image 1655 - 1657: 47(int) ImageQuerySize 1656 - 1658: 1477(ptr) AccessChain 1470(size) 173 - 1659: 47(int) Load 1658 - 1660: 47(int) IAdd 1659 1657 - 1661: 1477(ptr) AccessChain 1470(size) 173 - Store 1661 1660 - 1662: 782 Load 784(s2DMS) - 1663: 781 Image 1662 - 1664: 451(ivec2) ImageQuerySize 1663 - 1665: 48(ivec4) Load 1470(size) - 1666: 451(ivec2) VectorShuffle 1665 1665 0 1 - 1667: 451(ivec2) IAdd 1666 1664 - 1668: 1477(ptr) AccessChain 1470(size) 173 - 1669: 47(int) CompositeExtract 1667 0 - Store 1668 1669 - 1670: 1477(ptr) AccessChain 1470(size) 1492 - 1671: 47(int) CompositeExtract 1667 1 - Store 1670 1671 - 1672: 793 Load 795(s2DMSArray) - 1673: 792 Image 1672 - 1674: 458(ivec3) ImageQuerySize 1673 - 1675: 48(ivec4) Load 1470(size) - 1676: 458(ivec3) VectorShuffle 1675 1675 0 1 2 - 1677: 458(ivec3) IAdd 1676 1674 - 1678: 1477(ptr) AccessChain 1470(size) 173 - 1679: 47(int) CompositeExtract 1677 0 - Store 1678 1679 - 1680: 1477(ptr) AccessChain 1470(size) 1492 - 1681: 47(int) CompositeExtract 1677 1 - Store 1680 1681 - 1682: 1477(ptr) AccessChain 1470(size) 1507 - 1683: 47(int) CompositeExtract 1677 2 - Store 1682 1683 - 1684: 48(ivec4) Load 1470(size) - ReturnValue 1684 + 1639: 48(ivec4) Load 1425(size) + ReturnValue 1639 FunctionEnd 54(testTextureQueryLod(): 52(fvec2) Function None 53 55: Label - 1688(lod): 1687(ptr) Variable Function - Store 1688(lod) 1689 - 1690: 122 Load 124(s1D) - 1691: 6(float) Load 127(c1) + 1643(lod): 1642(ptr) Variable Function + Store 1643(lod) 1644 + 1645: 122 Load 124(s1D) + 1646: 6(float) Load 127(c1) + 1647: 52(fvec2) ImageQueryLod 1645 1646 + 1648: 52(fvec2) Load 1643(lod) + 1649: 52(fvec2) FAdd 1648 1647 + Store 1643(lod) 1649 + 1650: 133 Load 135(s2D) + 1651: 52(fvec2) Load 138(c2) + 1652: 52(fvec2) ImageQueryLod 1650 1651 + 1653: 52(fvec2) Load 1643(lod) + 1654: 52(fvec2) FAdd 1653 1652 + Store 1643(lod) 1654 + 1655: 144 Load 146(s3D) + 1656: 148(fvec3) Load 150(c3) + 1657: 52(fvec2) ImageQueryLod 1655 1656 + 1658: 52(fvec2) Load 1643(lod) + 1659: 52(fvec2) FAdd 1658 1657 + Store 1643(lod) 1659 + 1660: 156 Load 158(sCube) + 1661: 148(fvec3) Load 150(c3) + 1662: 52(fvec2) ImageQueryLod 1660 1661 + 1663: 52(fvec2) Load 1643(lod) + 1664: 52(fvec2) FAdd 1663 1662 + Store 1643(lod) 1664 + 1665: 206 Load 208(s1DArray) + 1666: 6(float) Load 127(c1) + 1667: 52(fvec2) ImageQueryLod 1665 1666 + 1668: 52(fvec2) Load 1643(lod) + 1669: 52(fvec2) FAdd 1668 1667 + Store 1643(lod) 1669 + 1670: 215 Load 217(s2DArray) + 1671: 52(fvec2) Load 138(c2) + 1672: 52(fvec2) ImageQueryLod 1670 1671 + 1673: 52(fvec2) Load 1643(lod) + 1674: 52(fvec2) FAdd 1673 1672 + Store 1643(lod) 1674 + 1675: 224 Load 226(sCubeArray) + 1676: 148(fvec3) Load 150(c3) + 1677: 52(fvec2) ImageQueryLod 1675 1676 + 1678: 52(fvec2) Load 1643(lod) + 1679: 52(fvec2) FAdd 1678 1677 + Store 1643(lod) 1679 + 1680: 165 Load 167(s1DShadow) + 1681: 6(float) Load 127(c1) + 1682: 52(fvec2) ImageQueryLod 1680 1681 + 1683: 52(fvec2) Load 1643(lod) + 1684: 52(fvec2) FAdd 1683 1682 + Store 1643(lod) 1684 + 1685: 180 Load 182(s2DShadow) + 1686: 52(fvec2) Load 138(c2) + 1687: 52(fvec2) ImageQueryLod 1685 1686 + 1688: 52(fvec2) Load 1643(lod) + 1689: 52(fvec2) FAdd 1688 1687 + Store 1643(lod) 1689 + 1690: 278 Load 280(sCubeArrayShadow) + 1691: 148(fvec3) Load 150(c3) 1692: 52(fvec2) ImageQueryLod 1690 1691 - 1693: 52(fvec2) Load 1688(lod) + 1693: 52(fvec2) Load 1643(lod) 1694: 52(fvec2) FAdd 1693 1692 - Store 1688(lod) 1694 - 1695: 133 Load 135(s2D) - 1696: 52(fvec2) Load 138(c2) + Store 1643(lod) 1694 + 1695: 233 Load 235(s1DArrayShadow) + 1696: 6(float) Load 127(c1) 1697: 52(fvec2) ImageQueryLod 1695 1696 - 1698: 52(fvec2) Load 1688(lod) + 1698: 52(fvec2) Load 1643(lod) 1699: 52(fvec2) FAdd 1698 1697 - Store 1688(lod) 1699 - 1700: 144 Load 146(s3D) - 1701: 148(fvec3) Load 150(c3) + Store 1643(lod) 1699 + 1700: 245 Load 247(s2DArrayShadow) + 1701: 52(fvec2) Load 138(c2) 1702: 52(fvec2) ImageQueryLod 1700 1701 - 1703: 52(fvec2) Load 1688(lod) + 1703: 52(fvec2) Load 1643(lod) 1704: 52(fvec2) FAdd 1703 1702 - Store 1688(lod) 1704 - 1705: 156 Load 158(sCube) + Store 1643(lod) 1704 + 1705: 278 Load 280(sCubeArrayShadow) 1706: 148(fvec3) Load 150(c3) 1707: 52(fvec2) ImageQueryLod 1705 1706 - 1708: 52(fvec2) Load 1688(lod) + 1708: 52(fvec2) Load 1643(lod) 1709: 52(fvec2) FAdd 1708 1707 - Store 1688(lod) 1709 - 1710: 206 Load 208(s1DArray) - 1711: 6(float) Load 127(c1) - 1712: 52(fvec2) ImageQueryLod 1710 1711 - 1713: 52(fvec2) Load 1688(lod) - 1714: 52(fvec2) FAdd 1713 1712 - Store 1688(lod) 1714 - 1715: 215 Load 217(s2DArray) - 1716: 52(fvec2) Load 138(c2) - 1717: 52(fvec2) ImageQueryLod 1715 1716 - 1718: 52(fvec2) Load 1688(lod) - 1719: 52(fvec2) FAdd 1718 1717 - Store 1688(lod) 1719 - 1720: 224 Load 226(sCubeArray) - 1721: 148(fvec3) Load 150(c3) - 1722: 52(fvec2) ImageQueryLod 1720 1721 - 1723: 52(fvec2) Load 1688(lod) - 1724: 52(fvec2) FAdd 1723 1722 - Store 1688(lod) 1724 - 1725: 165 Load 167(s1DShadow) - 1726: 6(float) Load 127(c1) - 1727: 52(fvec2) ImageQueryLod 1725 1726 - 1728: 52(fvec2) Load 1688(lod) - 1729: 52(fvec2) FAdd 1728 1727 - Store 1688(lod) 1729 - 1730: 180 Load 182(s2DShadow) - 1731: 52(fvec2) Load 138(c2) - 1732: 52(fvec2) ImageQueryLod 1730 1731 - 1733: 52(fvec2) Load 1688(lod) - 1734: 52(fvec2) FAdd 1733 1732 - Store 1688(lod) 1734 - 1735: 278 Load 280(sCubeArrayShadow) - 1736: 148(fvec3) Load 150(c3) - 1737: 52(fvec2) ImageQueryLod 1735 1736 - 1738: 52(fvec2) Load 1688(lod) - 1739: 52(fvec2) FAdd 1738 1737 - Store 1688(lod) 1739 - 1740: 233 Load 235(s1DArrayShadow) - 1741: 6(float) Load 127(c1) - 1742: 52(fvec2) ImageQueryLod 1740 1741 - 1743: 52(fvec2) Load 1688(lod) - 1744: 52(fvec2) FAdd 1743 1742 - Store 1688(lod) 1744 - 1745: 245 Load 247(s2DArrayShadow) - 1746: 52(fvec2) Load 138(c2) - 1747: 52(fvec2) ImageQueryLod 1745 1746 - 1748: 52(fvec2) Load 1688(lod) - 1749: 52(fvec2) FAdd 1748 1747 - Store 1688(lod) 1749 - 1750: 278 Load 280(sCubeArrayShadow) - 1751: 148(fvec3) Load 150(c3) - 1752: 52(fvec2) ImageQueryLod 1750 1751 - 1753: 52(fvec2) Load 1688(lod) - 1754: 52(fvec2) FAdd 1753 1752 - Store 1688(lod) 1754 - 1755: 52(fvec2) Load 1688(lod) - ReturnValue 1755 + Store 1643(lod) 1709 + 1710: 52(fvec2) Load 1643(lod) + ReturnValue 1710 FunctionEnd 57(testTextureQueryLevels(): 47(int) Function None 56 58: Label - 1758(levels): 1477(ptr) Variable Function - Store 1758(levels) 1275 - 1759: 122 Load 124(s1D) - 1760: 121 Image 1759 + 1713(levels): 1432(ptr) Variable Function + Store 1713(levels) 1230 + 1714: 122 Load 124(s1D) + 1715: 121 Image 1714 + 1716: 47(int) ImageQueryLevels 1715 + 1717: 47(int) Load 1713(levels) + 1718: 47(int) IAdd 1717 1716 + Store 1713(levels) 1718 + 1719: 133 Load 135(s2D) + 1720: 132 Image 1719 + 1721: 47(int) ImageQueryLevels 1720 + 1722: 47(int) Load 1713(levels) + 1723: 47(int) IAdd 1722 1721 + Store 1713(levels) 1723 + 1724: 144 Load 146(s3D) + 1725: 143 Image 1724 + 1726: 47(int) ImageQueryLevels 1725 + 1727: 47(int) Load 1713(levels) + 1728: 47(int) IAdd 1727 1726 + Store 1713(levels) 1728 + 1729: 156 Load 158(sCube) + 1730: 155 Image 1729 + 1731: 47(int) ImageQueryLevels 1730 + 1732: 47(int) Load 1713(levels) + 1733: 47(int) IAdd 1732 1731 + Store 1713(levels) 1733 + 1734: 165 Load 167(s1DShadow) + 1735: 164 Image 1734 + 1736: 47(int) ImageQueryLevels 1735 + 1737: 47(int) Load 1713(levels) + 1738: 47(int) IAdd 1737 1736 + Store 1713(levels) 1738 + 1739: 180 Load 182(s2DShadow) + 1740: 179 Image 1739 + 1741: 47(int) ImageQueryLevels 1740 + 1742: 47(int) Load 1713(levels) + 1743: 47(int) IAdd 1742 1741 + Store 1713(levels) 1743 + 1744: 192 Load 194(sCubeShadow) + 1745: 191 Image 1744 + 1746: 47(int) ImageQueryLevels 1745 + 1747: 47(int) Load 1713(levels) + 1748: 47(int) IAdd 1747 1746 + Store 1713(levels) 1748 + 1749: 224 Load 226(sCubeArray) + 1750: 223 Image 1749 + 1751: 47(int) ImageQueryLevels 1750 + 1752: 47(int) Load 1713(levels) + 1753: 47(int) IAdd 1752 1751 + Store 1713(levels) 1753 + 1754: 278 Load 280(sCubeArrayShadow) + 1755: 277 Image 1754 + 1756: 47(int) ImageQueryLevels 1755 + 1757: 47(int) Load 1713(levels) + 1758: 47(int) IAdd 1757 1756 + Store 1713(levels) 1758 + 1759: 206 Load 208(s1DArray) + 1760: 205 Image 1759 1761: 47(int) ImageQueryLevels 1760 - 1762: 47(int) Load 1758(levels) + 1762: 47(int) Load 1713(levels) 1763: 47(int) IAdd 1762 1761 - Store 1758(levels) 1763 - 1764: 133 Load 135(s2D) - 1765: 132 Image 1764 + Store 1713(levels) 1763 + 1764: 215 Load 217(s2DArray) + 1765: 214 Image 1764 1766: 47(int) ImageQueryLevels 1765 - 1767: 47(int) Load 1758(levels) + 1767: 47(int) Load 1713(levels) 1768: 47(int) IAdd 1767 1766 - Store 1758(levels) 1768 - 1769: 144 Load 146(s3D) - 1770: 143 Image 1769 + Store 1713(levels) 1768 + 1769: 233 Load 235(s1DArrayShadow) + 1770: 232 Image 1769 1771: 47(int) ImageQueryLevels 1770 - 1772: 47(int) Load 1758(levels) + 1772: 47(int) Load 1713(levels) 1773: 47(int) IAdd 1772 1771 - Store 1758(levels) 1773 - 1774: 156 Load 158(sCube) - 1775: 155 Image 1774 + Store 1713(levels) 1773 + 1774: 245 Load 247(s2DArrayShadow) + 1775: 244 Image 1774 1776: 47(int) ImageQueryLevels 1775 - 1777: 47(int) Load 1758(levels) + 1777: 47(int) Load 1713(levels) 1778: 47(int) IAdd 1777 1776 - Store 1758(levels) 1778 - 1779: 165 Load 167(s1DShadow) - 1780: 164 Image 1779 - 1781: 47(int) ImageQueryLevels 1780 - 1782: 47(int) Load 1758(levels) - 1783: 47(int) IAdd 1782 1781 - Store 1758(levels) 1783 - 1784: 180 Load 182(s2DShadow) - 1785: 179 Image 1784 - 1786: 47(int) ImageQueryLevels 1785 - 1787: 47(int) Load 1758(levels) - 1788: 47(int) IAdd 1787 1786 - Store 1758(levels) 1788 - 1789: 192 Load 194(sCubeShadow) - 1790: 191 Image 1789 - 1791: 47(int) ImageQueryLevels 1790 - 1792: 47(int) Load 1758(levels) - 1793: 47(int) IAdd 1792 1791 - Store 1758(levels) 1793 - 1794: 224 Load 226(sCubeArray) - 1795: 223 Image 1794 - 1796: 47(int) ImageQueryLevels 1795 - 1797: 47(int) Load 1758(levels) - 1798: 47(int) IAdd 1797 1796 - Store 1758(levels) 1798 - 1799: 278 Load 280(sCubeArrayShadow) - 1800: 277 Image 1799 - 1801: 47(int) ImageQueryLevels 1800 - 1802: 47(int) Load 1758(levels) - 1803: 47(int) IAdd 1802 1801 - Store 1758(levels) 1803 - 1804: 206 Load 208(s1DArray) - 1805: 205 Image 1804 - 1806: 47(int) ImageQueryLevels 1805 - 1807: 47(int) Load 1758(levels) - 1808: 47(int) IAdd 1807 1806 - Store 1758(levels) 1808 - 1809: 215 Load 217(s2DArray) - 1810: 214 Image 1809 - 1811: 47(int) ImageQueryLevels 1810 - 1812: 47(int) Load 1758(levels) - 1813: 47(int) IAdd 1812 1811 - Store 1758(levels) 1813 - 1814: 233 Load 235(s1DArrayShadow) - 1815: 232 Image 1814 - 1816: 47(int) ImageQueryLevels 1815 - 1817: 47(int) Load 1758(levels) - 1818: 47(int) IAdd 1817 1816 - Store 1758(levels) 1818 - 1819: 245 Load 247(s2DArrayShadow) - 1820: 244 Image 1819 - 1821: 47(int) ImageQueryLevels 1820 - 1822: 47(int) Load 1758(levels) - 1823: 47(int) IAdd 1822 1821 - Store 1758(levels) 1823 - 1824: 47(int) Load 1758(levels) - ReturnValue 1824 + Store 1713(levels) 1778 + 1779: 47(int) Load 1713(levels) + ReturnValue 1779 FunctionEnd 59(testTextureSamples(): 47(int) Function None 56 60: Label - 1827(samples): 1477(ptr) Variable Function - Store 1827(samples) 1275 - 1828: 782 Load 784(s2DMS) - 1829: 781 Image 1828 - 1830: 47(int) ImageQuerySamples 1829 - 1831: 47(int) Load 1827(samples) - 1832: 47(int) IAdd 1831 1830 - Store 1827(samples) 1832 - 1833: 793 Load 795(s2DMSArray) - 1834: 792 Image 1833 - 1835: 47(int) ImageQuerySamples 1834 - 1836: 47(int) Load 1827(samples) - 1837: 47(int) IAdd 1836 1835 - Store 1827(samples) 1837 - 1838: 47(int) Load 1827(samples) - ReturnValue 1838 + 1782(samples): 1432(ptr) Variable Function + Store 1782(samples) 1230 + 1783: 782 Load 784(s2DMS) + 1784: 781 Image 1783 + 1785: 47(int) ImageQuerySamples 1784 + 1786: 47(int) Load 1782(samples) + 1787: 47(int) IAdd 1786 1785 + Store 1782(samples) 1787 + 1788: 793 Load 795(s2DMSArray) + 1789: 792 Image 1788 + 1790: 47(int) ImageQuerySamples 1789 + 1791: 47(int) Load 1782(samples) + 1792: 47(int) IAdd 1791 1790 + Store 1782(samples) 1792 + 1793: 47(int) Load 1782(samples) + ReturnValue 1793 FunctionEnd 61(testImageLoad(): 7(fvec4) Function None 8 62: Label - 1841(texel): 63(ptr) Variable Function - Store 1841(texel) 120 - 1845: 1842 Load 1844(i1D) + 1796(texel): 63(ptr) Variable Function + Store 1796(texel) 120 + 1800: 1797 Load 1799(i1D) + 1801: 6(float) Load 127(c1) + 1802: 47(int) ConvertFToS 1801 + 1803: 7(fvec4) ImageRead 1800 1802 + 1804: 7(fvec4) Load 1796(texel) + 1805: 7(fvec4) FAdd 1804 1803 + Store 1796(texel) 1805 + 1809: 1806 Load 1808(i2D) + 1810: 52(fvec2) Load 138(c2) + 1811: 451(ivec2) ConvertFToS 1810 + 1812: 7(fvec4) ImageRead 1809 1811 + 1813: 7(fvec4) Load 1796(texel) + 1814: 7(fvec4) FAdd 1813 1812 + Store 1796(texel) 1814 + 1818: 1815 Load 1817(i3D) + 1819: 148(fvec3) Load 150(c3) + 1820: 458(ivec3) ConvertFToS 1819 + 1821: 7(fvec4) ImageRead 1818 1820 + 1822: 7(fvec4) Load 1796(texel) + 1823: 7(fvec4) FAdd 1822 1821 + Store 1796(texel) 1823 + 1827: 1824 Load 1826(i2DRect) + 1828: 52(fvec2) Load 138(c2) + 1829: 451(ivec2) ConvertFToS 1828 + 1830: 7(fvec4) ImageRead 1827 1829 + 1831: 7(fvec4) Load 1796(texel) + 1832: 7(fvec4) FAdd 1831 1830 + Store 1796(texel) 1832 + 1836: 1833 Load 1835(iCube) + 1837: 148(fvec3) Load 150(c3) + 1838: 458(ivec3) ConvertFToS 1837 + 1839: 7(fvec4) ImageRead 1836 1838 + 1840: 7(fvec4) Load 1796(texel) + 1841: 7(fvec4) FAdd 1840 1839 + Store 1796(texel) 1841 + 1845: 1842 Load 1844(iBuffer) 1846: 6(float) Load 127(c1) 1847: 47(int) ConvertFToS 1846 1848: 7(fvec4) ImageRead 1845 1847 - 1849: 7(fvec4) Load 1841(texel) + 1849: 7(fvec4) Load 1796(texel) 1850: 7(fvec4) FAdd 1849 1848 - Store 1841(texel) 1850 - 1854: 1851 Load 1853(i2D) + Store 1796(texel) 1850 + 1854: 1851 Load 1853(i1DArray) 1855: 52(fvec2) Load 138(c2) 1856: 451(ivec2) ConvertFToS 1855 1857: 7(fvec4) ImageRead 1854 1856 - 1858: 7(fvec4) Load 1841(texel) + 1858: 7(fvec4) Load 1796(texel) 1859: 7(fvec4) FAdd 1858 1857 - Store 1841(texel) 1859 - 1863: 1860 Load 1862(i3D) + Store 1796(texel) 1859 + 1863: 1860 Load 1862(i2DArray) 1864: 148(fvec3) Load 150(c3) 1865: 458(ivec3) ConvertFToS 1864 1866: 7(fvec4) ImageRead 1863 1865 - 1867: 7(fvec4) Load 1841(texel) + 1867: 7(fvec4) Load 1796(texel) 1868: 7(fvec4) FAdd 1867 1866 - Store 1841(texel) 1868 - 1872: 1869 Load 1871(i2DRect) - 1873: 52(fvec2) Load 138(c2) - 1874: 451(ivec2) ConvertFToS 1873 + Store 1796(texel) 1868 + 1872: 1869 Load 1871(iCubeArray) + 1873: 148(fvec3) Load 150(c3) + 1874: 458(ivec3) ConvertFToS 1873 1875: 7(fvec4) ImageRead 1872 1874 - 1876: 7(fvec4) Load 1841(texel) + 1876: 7(fvec4) Load 1796(texel) 1877: 7(fvec4) FAdd 1876 1875 - Store 1841(texel) 1877 - 1881: 1878 Load 1880(iCube) - 1882: 148(fvec3) Load 150(c3) - 1883: 458(ivec3) ConvertFToS 1882 - 1884: 7(fvec4) ImageRead 1881 1883 - 1885: 7(fvec4) Load 1841(texel) + Store 1796(texel) 1877 + 1881: 1878 Load 1880(i2DMS) + 1882: 52(fvec2) Load 138(c2) + 1883: 451(ivec2) ConvertFToS 1882 + 1884: 7(fvec4) ImageRead 1881 1883 Sample 445 + 1885: 7(fvec4) Load 1796(texel) 1886: 7(fvec4) FAdd 1885 1884 - Store 1841(texel) 1886 - 1890: 1887 Load 1889(iBuffer) - 1891: 6(float) Load 127(c1) - 1892: 47(int) ConvertFToS 1891 - 1893: 7(fvec4) ImageRead 1890 1892 - 1894: 7(fvec4) Load 1841(texel) + Store 1796(texel) 1886 + 1890: 1887 Load 1889(i2DMSArray) + 1891: 148(fvec3) Load 150(c3) + 1892: 458(ivec3) ConvertFToS 1891 + 1893: 7(fvec4) ImageRead 1890 1892 Sample 445 + 1894: 7(fvec4) Load 1796(texel) 1895: 7(fvec4) FAdd 1894 1893 - Store 1841(texel) 1895 - 1899: 1896 Load 1898(i1DArray) - 1900: 52(fvec2) Load 138(c2) - 1901: 451(ivec2) ConvertFToS 1900 - 1902: 7(fvec4) ImageRead 1899 1901 - 1903: 7(fvec4) Load 1841(texel) - 1904: 7(fvec4) FAdd 1903 1902 - Store 1841(texel) 1904 - 1908: 1905 Load 1907(i2DArray) - 1909: 148(fvec3) Load 150(c3) - 1910: 458(ivec3) ConvertFToS 1909 - 1911: 7(fvec4) ImageRead 1908 1910 - 1912: 7(fvec4) Load 1841(texel) - 1913: 7(fvec4) FAdd 1912 1911 - Store 1841(texel) 1913 - 1917: 1914 Load 1916(iCubeArray) - 1918: 148(fvec3) Load 150(c3) - 1919: 458(ivec3) ConvertFToS 1918 - 1920: 7(fvec4) ImageRead 1917 1919 - 1921: 7(fvec4) Load 1841(texel) - 1922: 7(fvec4) FAdd 1921 1920 - Store 1841(texel) 1922 - 1926: 1923 Load 1925(i2DMS) - 1927: 52(fvec2) Load 138(c2) - 1928: 451(ivec2) ConvertFToS 1927 - 1929: 7(fvec4) ImageRead 1926 1928 Sample 445 - 1930: 7(fvec4) Load 1841(texel) - 1931: 7(fvec4) FAdd 1930 1929 - Store 1841(texel) 1931 - 1935: 1932 Load 1934(i2DMSArray) - 1936: 148(fvec3) Load 150(c3) - 1937: 458(ivec3) ConvertFToS 1936 - 1938: 7(fvec4) ImageRead 1935 1937 Sample 445 - 1939: 7(fvec4) Load 1841(texel) - 1940: 7(fvec4) FAdd 1939 1938 - Store 1841(texel) 1940 - 1941: 7(fvec4) Load 1841(texel) - ReturnValue 1941 + Store 1796(texel) 1895 + 1896: 7(fvec4) Load 1796(texel) + ReturnValue 1896 FunctionEnd 66(testImageStore(vf4;): 2 Function None 64 65(data): 63(ptr) FunctionParameter 67: Label - 1944: 1842 Load 1844(i1D) - 1945: 6(float) Load 127(c1) - 1946: 47(int) ConvertFToS 1945 - 1947: 7(fvec4) Load 65(data) - ImageWrite 1944 1946 1947 - 1948: 1851 Load 1853(i2D) - 1949: 52(fvec2) Load 138(c2) - 1950: 451(ivec2) ConvertFToS 1949 - 1951: 7(fvec4) Load 65(data) - ImageWrite 1948 1950 1951 - 1952: 1860 Load 1862(i3D) - 1953: 148(fvec3) Load 150(c3) - 1954: 458(ivec3) ConvertFToS 1953 - 1955: 7(fvec4) Load 65(data) - ImageWrite 1952 1954 1955 - 1956: 1869 Load 1871(i2DRect) - 1957: 52(fvec2) Load 138(c2) - 1958: 451(ivec2) ConvertFToS 1957 - 1959: 7(fvec4) Load 65(data) - ImageWrite 1956 1958 1959 - 1960: 1878 Load 1880(iCube) - 1961: 148(fvec3) Load 150(c3) - 1962: 458(ivec3) ConvertFToS 1961 - 1963: 7(fvec4) Load 65(data) - ImageWrite 1960 1962 1963 - 1964: 1887 Load 1889(iBuffer) - 1965: 6(float) Load 127(c1) - 1966: 47(int) ConvertFToS 1965 - 1967: 7(fvec4) Load 65(data) - ImageWrite 1964 1966 1967 - 1968: 1896 Load 1898(i1DArray) - 1969: 52(fvec2) Load 138(c2) - 1970: 451(ivec2) ConvertFToS 1969 - 1971: 7(fvec4) Load 65(data) - ImageWrite 1968 1970 1971 - 1972: 1905 Load 1907(i2DArray) - 1973: 148(fvec3) Load 150(c3) - 1974: 458(ivec3) ConvertFToS 1973 - 1975: 7(fvec4) Load 65(data) - ImageWrite 1972 1974 1975 - 1976: 1914 Load 1916(iCubeArray) - 1977: 148(fvec3) Load 150(c3) - 1978: 458(ivec3) ConvertFToS 1977 - 1979: 7(fvec4) Load 65(data) - ImageWrite 1976 1978 1979 - 1980: 1923 Load 1925(i2DMS) - 1981: 52(fvec2) Load 138(c2) - 1982: 451(ivec2) ConvertFToS 1981 - 1983: 7(fvec4) Load 65(data) - ImageWrite 1980 1982 1983 Sample 445 - 1984: 1932 Load 1934(i2DMSArray) - 1985: 148(fvec3) Load 150(c3) - 1986: 458(ivec3) ConvertFToS 1985 - 1987: 7(fvec4) Load 65(data) - ImageWrite 1984 1986 1987 Sample 445 + 1899: 1797 Load 1799(i1D) + 1900: 6(float) Load 127(c1) + 1901: 47(int) ConvertFToS 1900 + 1902: 7(fvec4) Load 65(data) + ImageWrite 1899 1901 1902 + 1903: 1806 Load 1808(i2D) + 1904: 52(fvec2) Load 138(c2) + 1905: 451(ivec2) ConvertFToS 1904 + 1906: 7(fvec4) Load 65(data) + ImageWrite 1903 1905 1906 + 1907: 1815 Load 1817(i3D) + 1908: 148(fvec3) Load 150(c3) + 1909: 458(ivec3) ConvertFToS 1908 + 1910: 7(fvec4) Load 65(data) + ImageWrite 1907 1909 1910 + 1911: 1824 Load 1826(i2DRect) + 1912: 52(fvec2) Load 138(c2) + 1913: 451(ivec2) ConvertFToS 1912 + 1914: 7(fvec4) Load 65(data) + ImageWrite 1911 1913 1914 + 1915: 1833 Load 1835(iCube) + 1916: 148(fvec3) Load 150(c3) + 1917: 458(ivec3) ConvertFToS 1916 + 1918: 7(fvec4) Load 65(data) + ImageWrite 1915 1917 1918 + 1919: 1842 Load 1844(iBuffer) + 1920: 6(float) Load 127(c1) + 1921: 47(int) ConvertFToS 1920 + 1922: 7(fvec4) Load 65(data) + ImageWrite 1919 1921 1922 + 1923: 1851 Load 1853(i1DArray) + 1924: 52(fvec2) Load 138(c2) + 1925: 451(ivec2) ConvertFToS 1924 + 1926: 7(fvec4) Load 65(data) + ImageWrite 1923 1925 1926 + 1927: 1860 Load 1862(i2DArray) + 1928: 148(fvec3) Load 150(c3) + 1929: 458(ivec3) ConvertFToS 1928 + 1930: 7(fvec4) Load 65(data) + ImageWrite 1927 1929 1930 + 1931: 1869 Load 1871(iCubeArray) + 1932: 148(fvec3) Load 150(c3) + 1933: 458(ivec3) ConvertFToS 1932 + 1934: 7(fvec4) Load 65(data) + ImageWrite 1931 1933 1934 + 1935: 1878 Load 1880(i2DMS) + 1936: 52(fvec2) Load 138(c2) + 1937: 451(ivec2) ConvertFToS 1936 + 1938: 7(fvec4) Load 65(data) + ImageWrite 1935 1937 1938 Sample 445 + 1939: 1887 Load 1889(i2DMSArray) + 1940: 148(fvec3) Load 150(c3) + 1941: 458(ivec3) ConvertFToS 1940 + 1942: 7(fvec4) Load 65(data) + ImageWrite 1939 1941 1942 Sample 445 Return FunctionEnd 68(testSparseTexture(): 7(fvec4) Function None 8 69: Label - 1988(texel): 63(ptr) Variable Function - Store 1988(texel) 120 - 1989: 133 Load 135(s2D) - 1990: 52(fvec2) Load 138(c2) - 1992:1991(ResType) ImageSparseSampleImplicitLod 1989 1990 - 1993: 7(fvec4) CompositeExtract 1992 1 - Store 1988(texel) 1993 - 1994: 47(int) CompositeExtract 1992 0 - 1995: 144 Load 146(s3D) - 1996: 148(fvec3) Load 150(c3) - 1997:1991(ResType) ImageSparseSampleImplicitLod 1995 1996 - 1998: 7(fvec4) CompositeExtract 1997 1 - Store 1988(texel) 1998 - 1999: 47(int) CompositeExtract 1997 0 - 2000: 156 Load 158(sCube) - 2001: 148(fvec3) Load 150(c3) - 2002:1991(ResType) ImageSparseSampleImplicitLod 2000 2001 - 2003: 7(fvec4) CompositeExtract 2002 1 - Store 1988(texel) 2003 - 2004: 47(int) CompositeExtract 2002 0 - 2005: 180 Load 182(s2DShadow) - 2006: 148(fvec3) Load 150(c3) - 2007: 174(ptr) AccessChain 1988(texel) 173 - 2008: 6(float) CompositeExtract 2006 2 - 2010:2009(ResType) ImageSparseSampleDrefImplicitLod 2005 2006 2008 - 2011: 6(float) CompositeExtract 2010 1 - Store 2007 2011 - 2012: 47(int) CompositeExtract 2010 0 - 2013: 192 Load 194(sCubeShadow) - 2014: 7(fvec4) Load 197(c4) - 2015: 174(ptr) AccessChain 1988(texel) 173 - 2016: 6(float) CompositeExtract 2014 3 - 2017:2009(ResType) ImageSparseSampleDrefImplicitLod 2013 2014 2016 - 2018: 6(float) CompositeExtract 2017 1 - Store 2015 2018 - 2019: 47(int) CompositeExtract 2017 0 - 2020: 215 Load 217(s2DArray) - 2021: 148(fvec3) Load 150(c3) - 2022:1991(ResType) ImageSparseSampleImplicitLod 2020 2021 - 2023: 7(fvec4) CompositeExtract 2022 1 - Store 1988(texel) 2023 - 2024: 47(int) CompositeExtract 2022 0 - 2025: 224 Load 226(sCubeArray) - 2026: 7(fvec4) Load 197(c4) - 2027:1991(ResType) ImageSparseSampleImplicitLod 2025 2026 - 2028: 7(fvec4) CompositeExtract 2027 1 - Store 1988(texel) 2028 - 2029: 47(int) CompositeExtract 2027 0 - 2030: 245 Load 247(s2DArrayShadow) - 2031: 7(fvec4) Load 197(c4) - 2032: 174(ptr) AccessChain 1988(texel) 173 - 2033: 6(float) CompositeExtract 2031 3 - 2034:2009(ResType) ImageSparseSampleDrefImplicitLod 2030 2031 2033 - 2035: 6(float) CompositeExtract 2034 1 - Store 2032 2035 - 2036: 47(int) CompositeExtract 2034 0 - 2037: 257 Load 259(s2DRect) - 2038: 52(fvec2) Load 138(c2) - 2039:1991(ResType) ImageSparseSampleImplicitLod 2037 2038 - 2040: 7(fvec4) CompositeExtract 2039 1 - Store 1988(texel) 2040 - 2041: 47(int) CompositeExtract 2039 0 - 2042: 266 Load 268(s2DRectShadow) - 2043: 148(fvec3) Load 150(c3) - 2044: 174(ptr) AccessChain 1988(texel) 173 - 2045: 6(float) CompositeExtract 2043 2 - 2046:2009(ResType) ImageSparseSampleDrefImplicitLod 2042 2043 2045 - 2047: 6(float) CompositeExtract 2046 1 - Store 2044 2047 - 2048: 47(int) CompositeExtract 2046 0 - 2049: 278 Load 280(sCubeArrayShadow) - 2050: 7(fvec4) Load 197(c4) - 2051: 6(float) Load 283(compare) - 2052: 174(ptr) AccessChain 1988(texel) 173 - 2053:2009(ResType) ImageSparseSampleDrefImplicitLod 2049 2050 2051 - 2054: 6(float) CompositeExtract 2053 1 - Store 2052 2054 - 2055: 47(int) CompositeExtract 2053 0 - 2056: 7(fvec4) Load 1988(texel) - ReturnValue 2056 + 1943(texel): 63(ptr) Variable Function + Store 1943(texel) 120 + 1944: 133 Load 135(s2D) + 1945: 52(fvec2) Load 138(c2) + 1947:1946(ResType) ImageSparseSampleImplicitLod 1944 1945 + 1948: 7(fvec4) CompositeExtract 1947 1 + Store 1943(texel) 1948 + 1949: 47(int) CompositeExtract 1947 0 + 1950: 144 Load 146(s3D) + 1951: 148(fvec3) Load 150(c3) + 1952:1946(ResType) ImageSparseSampleImplicitLod 1950 1951 + 1953: 7(fvec4) CompositeExtract 1952 1 + Store 1943(texel) 1953 + 1954: 47(int) CompositeExtract 1952 0 + 1955: 156 Load 158(sCube) + 1956: 148(fvec3) Load 150(c3) + 1957:1946(ResType) ImageSparseSampleImplicitLod 1955 1956 + 1958: 7(fvec4) CompositeExtract 1957 1 + Store 1943(texel) 1958 + 1959: 47(int) CompositeExtract 1957 0 + 1960: 180 Load 182(s2DShadow) + 1961: 148(fvec3) Load 150(c3) + 1962: 174(ptr) AccessChain 1943(texel) 173 + 1963: 6(float) CompositeExtract 1961 2 + 1965:1964(ResType) ImageSparseSampleDrefImplicitLod 1960 1961 1963 + 1966: 6(float) CompositeExtract 1965 1 + Store 1962 1966 + 1967: 47(int) CompositeExtract 1965 0 + 1968: 192 Load 194(sCubeShadow) + 1969: 7(fvec4) Load 197(c4) + 1970: 174(ptr) AccessChain 1943(texel) 173 + 1971: 6(float) CompositeExtract 1969 3 + 1972:1964(ResType) ImageSparseSampleDrefImplicitLod 1968 1969 1971 + 1973: 6(float) CompositeExtract 1972 1 + Store 1970 1973 + 1974: 47(int) CompositeExtract 1972 0 + 1975: 215 Load 217(s2DArray) + 1976: 148(fvec3) Load 150(c3) + 1977:1946(ResType) ImageSparseSampleImplicitLod 1975 1976 + 1978: 7(fvec4) CompositeExtract 1977 1 + Store 1943(texel) 1978 + 1979: 47(int) CompositeExtract 1977 0 + 1980: 224 Load 226(sCubeArray) + 1981: 7(fvec4) Load 197(c4) + 1982:1946(ResType) ImageSparseSampleImplicitLod 1980 1981 + 1983: 7(fvec4) CompositeExtract 1982 1 + Store 1943(texel) 1983 + 1984: 47(int) CompositeExtract 1982 0 + 1985: 245 Load 247(s2DArrayShadow) + 1986: 7(fvec4) Load 197(c4) + 1987: 174(ptr) AccessChain 1943(texel) 173 + 1988: 6(float) CompositeExtract 1986 3 + 1989:1964(ResType) ImageSparseSampleDrefImplicitLod 1985 1986 1988 + 1990: 6(float) CompositeExtract 1989 1 + Store 1987 1990 + 1991: 47(int) CompositeExtract 1989 0 + 1992: 257 Load 259(s2DRect) + 1993: 52(fvec2) Load 138(c2) + 1994:1946(ResType) ImageSparseSampleImplicitLod 1992 1993 + 1995: 7(fvec4) CompositeExtract 1994 1 + Store 1943(texel) 1995 + 1996: 47(int) CompositeExtract 1994 0 + 1997: 266 Load 268(s2DRectShadow) + 1998: 148(fvec3) Load 150(c3) + 1999: 174(ptr) AccessChain 1943(texel) 173 + 2000: 6(float) CompositeExtract 1998 2 + 2001:1964(ResType) ImageSparseSampleDrefImplicitLod 1997 1998 2000 + 2002: 6(float) CompositeExtract 2001 1 + Store 1999 2002 + 2003: 47(int) CompositeExtract 2001 0 + 2004: 278 Load 280(sCubeArrayShadow) + 2005: 7(fvec4) Load 197(c4) + 2006: 6(float) Load 283(compare) + 2007: 174(ptr) AccessChain 1943(texel) 173 + 2008:1964(ResType) ImageSparseSampleDrefImplicitLod 2004 2005 2006 + 2009: 6(float) CompositeExtract 2008 1 + Store 2007 2009 + 2010: 47(int) CompositeExtract 2008 0 + 2011: 7(fvec4) Load 1943(texel) + ReturnValue 2011 FunctionEnd 70(testSparseTextureLod(): 7(fvec4) Function None 8 71: Label - 2059(texel): 63(ptr) Variable Function - Store 2059(texel) 120 - 2060: 133 Load 135(s2D) - 2061: 52(fvec2) Load 138(c2) - 2062: 6(float) Load 371(lod) - 2063:1991(ResType) ImageSparseSampleExplicitLod 2060 2061 Lod 2062 - 2064: 7(fvec4) CompositeExtract 2063 1 - Store 2059(texel) 2064 - 2065: 47(int) CompositeExtract 2063 0 - 2066: 144 Load 146(s3D) - 2067: 148(fvec3) Load 150(c3) - 2068: 6(float) Load 371(lod) - 2069:1991(ResType) ImageSparseSampleExplicitLod 2066 2067 Lod 2068 + 2014(texel): 63(ptr) Variable Function + Store 2014(texel) 120 + 2015: 133 Load 135(s2D) + 2016: 52(fvec2) Load 138(c2) + 2017: 6(float) Load 371(lod) + 2018:1946(ResType) ImageSparseSampleExplicitLod 2015 2016 Lod 2017 + 2019: 7(fvec4) CompositeExtract 2018 1 + Store 2014(texel) 2019 + 2020: 47(int) CompositeExtract 2018 0 + 2021: 144 Load 146(s3D) + 2022: 148(fvec3) Load 150(c3) + 2023: 6(float) Load 371(lod) + 2024:1946(ResType) ImageSparseSampleExplicitLod 2021 2022 Lod 2023 + 2025: 7(fvec4) CompositeExtract 2024 1 + Store 2014(texel) 2025 + 2026: 47(int) CompositeExtract 2024 0 + 2027: 156 Load 158(sCube) + 2028: 148(fvec3) Load 150(c3) + 2029: 6(float) Load 371(lod) + 2030:1946(ResType) ImageSparseSampleExplicitLod 2027 2028 Lod 2029 + 2031: 7(fvec4) CompositeExtract 2030 1 + Store 2014(texel) 2031 + 2032: 47(int) CompositeExtract 2030 0 + 2033: 180 Load 182(s2DShadow) + 2034: 148(fvec3) Load 150(c3) + 2035: 6(float) Load 371(lod) + 2036: 174(ptr) AccessChain 2014(texel) 173 + 2037: 6(float) CompositeExtract 2034 2 + 2038:1964(ResType) ImageSparseSampleDrefExplicitLod 2033 2034 2037 Lod 2035 + 2039: 6(float) CompositeExtract 2038 1 + Store 2036 2039 + 2040: 47(int) CompositeExtract 2038 0 + 2041: 215 Load 217(s2DArray) + 2042: 148(fvec3) Load 150(c3) + 2043: 6(float) Load 371(lod) + 2044:1946(ResType) ImageSparseSampleExplicitLod 2041 2042 Lod 2043 + 2045: 7(fvec4) CompositeExtract 2044 1 + Store 2014(texel) 2045 + 2046: 47(int) CompositeExtract 2044 0 + 2047: 224 Load 226(sCubeArray) + 2048: 7(fvec4) Load 197(c4) + 2049: 6(float) Load 371(lod) + 2050:1946(ResType) ImageSparseSampleExplicitLod 2047 2048 Lod 2049 + 2051: 7(fvec4) CompositeExtract 2050 1 + Store 2014(texel) 2051 + 2052: 47(int) CompositeExtract 2050 0 + 2053: 7(fvec4) Load 2014(texel) + ReturnValue 2053 + FunctionEnd +72(testSparseTextureOffset(): 7(fvec4) Function None 8 + 73: Label + 2056(texel): 63(ptr) Variable Function + Store 2056(texel) 120 + 2057: 133 Load 135(s2D) + 2058: 52(fvec2) Load 138(c2) + 2059:1946(ResType) ImageSparseSampleImplicitLod 2057 2058 ConstOffset 452 + 2060: 7(fvec4) CompositeExtract 2059 1 + Store 2056(texel) 2060 + 2061: 47(int) CompositeExtract 2059 0 + 2062: 144 Load 146(s3D) + 2063: 148(fvec3) Load 150(c3) + 2064:1946(ResType) ImageSparseSampleImplicitLod 2062 2063 ConstOffset 459 + 2065: 7(fvec4) CompositeExtract 2064 1 + Store 2056(texel) 2065 + 2066: 47(int) CompositeExtract 2064 0 + 2067: 257 Load 259(s2DRect) + 2068: 52(fvec2) Load 138(c2) + 2069:1946(ResType) ImageSparseSampleImplicitLod 2067 2068 ConstOffset 452 2070: 7(fvec4) CompositeExtract 2069 1 - Store 2059(texel) 2070 + Store 2056(texel) 2070 2071: 47(int) CompositeExtract 2069 0 - 2072: 156 Load 158(sCube) + 2072: 266 Load 268(s2DRectShadow) 2073: 148(fvec3) Load 150(c3) - 2074: 6(float) Load 371(lod) - 2075:1991(ResType) ImageSparseSampleExplicitLod 2072 2073 Lod 2074 - 2076: 7(fvec4) CompositeExtract 2075 1 - Store 2059(texel) 2076 - 2077: 47(int) CompositeExtract 2075 0 - 2078: 180 Load 182(s2DShadow) - 2079: 148(fvec3) Load 150(c3) - 2080: 6(float) Load 371(lod) - 2081: 174(ptr) AccessChain 2059(texel) 173 - 2082: 6(float) CompositeExtract 2079 2 - 2083:2009(ResType) ImageSparseSampleDrefExplicitLod 2078 2079 2082 Lod 2080 + 2074: 174(ptr) AccessChain 2056(texel) 173 + 2075: 6(float) CompositeExtract 2073 2 + 2076:1964(ResType) ImageSparseSampleDrefImplicitLod 2072 2073 2075 ConstOffset 452 + 2077: 6(float) CompositeExtract 2076 1 + Store 2074 2077 + 2078: 47(int) CompositeExtract 2076 0 + 2079: 180 Load 182(s2DShadow) + 2080: 148(fvec3) Load 150(c3) + 2081: 174(ptr) AccessChain 2056(texel) 173 + 2082: 6(float) CompositeExtract 2080 2 + 2083:1964(ResType) ImageSparseSampleDrefImplicitLod 2079 2080 2082 ConstOffset 452 2084: 6(float) CompositeExtract 2083 1 Store 2081 2084 2085: 47(int) CompositeExtract 2083 0 2086: 215 Load 217(s2DArray) 2087: 148(fvec3) Load 150(c3) - 2088: 6(float) Load 371(lod) - 2089:1991(ResType) ImageSparseSampleExplicitLod 2086 2087 Lod 2088 - 2090: 7(fvec4) CompositeExtract 2089 1 - Store 2059(texel) 2090 - 2091: 47(int) CompositeExtract 2089 0 - 2092: 224 Load 226(sCubeArray) - 2093: 7(fvec4) Load 197(c4) - 2094: 6(float) Load 371(lod) - 2095:1991(ResType) ImageSparseSampleExplicitLod 2092 2093 Lod 2094 - 2096: 7(fvec4) CompositeExtract 2095 1 - Store 2059(texel) 2096 + 2088:1946(ResType) ImageSparseSampleImplicitLod 2086 2087 ConstOffset 452 + 2089: 7(fvec4) CompositeExtract 2088 1 + Store 2056(texel) 2089 + 2090: 47(int) CompositeExtract 2088 0 + 2091: 245 Load 247(s2DArrayShadow) + 2092: 7(fvec4) Load 197(c4) + 2093: 174(ptr) AccessChain 2056(texel) 173 + 2094: 6(float) CompositeExtract 2092 3 + 2095:1964(ResType) ImageSparseSampleDrefImplicitLod 2091 2092 2094 ConstOffset 452 + 2096: 6(float) CompositeExtract 2095 1 + Store 2093 2096 2097: 47(int) CompositeExtract 2095 0 - 2098: 7(fvec4) Load 2059(texel) + 2098: 7(fvec4) Load 2056(texel) ReturnValue 2098 FunctionEnd -72(testSparseTextureOffset(): 7(fvec4) Function None 8 - 73: Label +74(testSparseTextureLodOffset(): 7(fvec4) Function None 8 + 75: Label 2101(texel): 63(ptr) Variable Function Store 2101(texel) 120 2102: 133 Load 135(s2D) 2103: 52(fvec2) Load 138(c2) - 2104:1991(ResType) ImageSparseSampleImplicitLod 2102 2103 ConstOffset 452 - 2105: 7(fvec4) CompositeExtract 2104 1 - Store 2101(texel) 2105 - 2106: 47(int) CompositeExtract 2104 0 - 2107: 144 Load 146(s3D) - 2108: 148(fvec3) Load 150(c3) - 2109:1991(ResType) ImageSparseSampleImplicitLod 2107 2108 ConstOffset 459 - 2110: 7(fvec4) CompositeExtract 2109 1 - Store 2101(texel) 2110 - 2111: 47(int) CompositeExtract 2109 0 - 2112: 257 Load 259(s2DRect) - 2113: 52(fvec2) Load 138(c2) - 2114:1991(ResType) ImageSparseSampleImplicitLod 2112 2113 ConstOffset 452 - 2115: 7(fvec4) CompositeExtract 2114 1 - Store 2101(texel) 2115 - 2116: 47(int) CompositeExtract 2114 0 - 2117: 266 Load 268(s2DRectShadow) - 2118: 148(fvec3) Load 150(c3) - 2119: 174(ptr) AccessChain 2101(texel) 173 - 2120: 6(float) CompositeExtract 2118 2 - 2121:2009(ResType) ImageSparseSampleDrefImplicitLod 2117 2118 2120 ConstOffset 452 - 2122: 6(float) CompositeExtract 2121 1 - Store 2119 2122 - 2123: 47(int) CompositeExtract 2121 0 - 2124: 180 Load 182(s2DShadow) - 2125: 148(fvec3) Load 150(c3) - 2126: 174(ptr) AccessChain 2101(texel) 173 - 2127: 6(float) CompositeExtract 2125 2 - 2128:2009(ResType) ImageSparseSampleDrefImplicitLod 2124 2125 2127 ConstOffset 452 - 2129: 6(float) CompositeExtract 2128 1 - Store 2126 2129 - 2130: 47(int) CompositeExtract 2128 0 - 2131: 215 Load 217(s2DArray) - 2132: 148(fvec3) Load 150(c3) - 2133:1991(ResType) ImageSparseSampleImplicitLod 2131 2132 ConstOffset 452 - 2134: 7(fvec4) CompositeExtract 2133 1 - Store 2101(texel) 2134 - 2135: 47(int) CompositeExtract 2133 0 - 2136: 245 Load 247(s2DArrayShadow) - 2137: 7(fvec4) Load 197(c4) - 2138: 174(ptr) AccessChain 2101(texel) 173 - 2139: 6(float) CompositeExtract 2137 3 - 2140:2009(ResType) ImageSparseSampleDrefImplicitLod 2136 2137 2139 ConstOffset 452 - 2141: 6(float) CompositeExtract 2140 1 - Store 2138 2141 - 2142: 47(int) CompositeExtract 2140 0 - 2143: 7(fvec4) Load 2101(texel) - ReturnValue 2143 - FunctionEnd -74(testSparseTextureLodOffset(): 7(fvec4) Function None 8 - 75: Label - 2146(texel): 63(ptr) Variable Function - Store 2146(texel) 120 - 2147: 133 Load 135(s2D) - 2148: 52(fvec2) Load 138(c2) - 2149: 6(float) Load 371(lod) - 2150:1991(ResType) ImageSparseSampleExplicitLod 2147 2148 Lod ConstOffset 2149 452 - 2151: 7(fvec4) CompositeExtract 2150 1 - Store 2146(texel) 2151 - 2152: 47(int) CompositeExtract 2150 0 - 2153: 144 Load 146(s3D) - 2154: 148(fvec3) Load 150(c3) - 2155: 6(float) Load 371(lod) - 2156:1991(ResType) ImageSparseSampleExplicitLod 2153 2154 Lod ConstOffset 2155 459 - 2157: 7(fvec4) CompositeExtract 2156 1 - Store 2146(texel) 2157 - 2158: 47(int) CompositeExtract 2156 0 - 2159: 180 Load 182(s2DShadow) - 2160: 148(fvec3) Load 150(c3) - 2161: 6(float) Load 371(lod) - 2162: 174(ptr) AccessChain 2146(texel) 173 - 2163: 6(float) CompositeExtract 2160 2 - 2164:2009(ResType) ImageSparseSampleDrefExplicitLod 2159 2160 2163 Lod ConstOffset 2161 452 - 2165: 6(float) CompositeExtract 2164 1 - Store 2162 2165 - 2166: 47(int) CompositeExtract 2164 0 - 2167: 215 Load 217(s2DArray) - 2168: 148(fvec3) Load 150(c3) - 2169: 6(float) Load 371(lod) - 2170:1991(ResType) ImageSparseSampleExplicitLod 2167 2168 Lod ConstOffset 2169 452 - 2171: 7(fvec4) CompositeExtract 2170 1 - Store 2146(texel) 2171 - 2172: 47(int) CompositeExtract 2170 0 - 2173: 7(fvec4) Load 2146(texel) - ReturnValue 2173 + 2104: 6(float) Load 371(lod) + 2105:1946(ResType) ImageSparseSampleExplicitLod 2102 2103 Lod ConstOffset 2104 452 + 2106: 7(fvec4) CompositeExtract 2105 1 + Store 2101(texel) 2106 + 2107: 47(int) CompositeExtract 2105 0 + 2108: 144 Load 146(s3D) + 2109: 148(fvec3) Load 150(c3) + 2110: 6(float) Load 371(lod) + 2111:1946(ResType) ImageSparseSampleExplicitLod 2108 2109 Lod ConstOffset 2110 459 + 2112: 7(fvec4) CompositeExtract 2111 1 + Store 2101(texel) 2112 + 2113: 47(int) CompositeExtract 2111 0 + 2114: 180 Load 182(s2DShadow) + 2115: 148(fvec3) Load 150(c3) + 2116: 6(float) Load 371(lod) + 2117: 174(ptr) AccessChain 2101(texel) 173 + 2118: 6(float) CompositeExtract 2115 2 + 2119:1964(ResType) ImageSparseSampleDrefExplicitLod 2114 2115 2118 Lod ConstOffset 2116 452 + 2120: 6(float) CompositeExtract 2119 1 + Store 2117 2120 + 2121: 47(int) CompositeExtract 2119 0 + 2122: 215 Load 217(s2DArray) + 2123: 148(fvec3) Load 150(c3) + 2124: 6(float) Load 371(lod) + 2125:1946(ResType) ImageSparseSampleExplicitLod 2122 2123 Lod ConstOffset 2124 452 + 2126: 7(fvec4) CompositeExtract 2125 1 + Store 2101(texel) 2126 + 2127: 47(int) CompositeExtract 2125 0 + 2128: 7(fvec4) Load 2101(texel) + ReturnValue 2128 FunctionEnd 76(testSparseTextureGrad(): 7(fvec4) Function None 8 77: Label - 2176(texel): 63(ptr) Variable Function - Store 2176(texel) 120 - 2177: 133 Load 135(s2D) - 2178: 52(fvec2) Load 138(c2) - 2179: 52(fvec2) Load 874(dPdxy2) - 2180: 52(fvec2) Load 874(dPdxy2) - 2181:1991(ResType) ImageSparseSampleExplicitLod 2177 2178 Grad 2179 2180 - 2182: 7(fvec4) CompositeExtract 2181 1 - Store 2176(texel) 2182 - 2183: 47(int) CompositeExtract 2181 0 - 2184: 144 Load 146(s3D) - 2185: 148(fvec3) Load 150(c3) - 2186: 148(fvec3) Load 882(dPdxy3) - 2187: 148(fvec3) Load 882(dPdxy3) - 2188:1991(ResType) ImageSparseSampleExplicitLod 2184 2185 Grad 2186 2187 - 2189: 7(fvec4) CompositeExtract 2188 1 - Store 2176(texel) 2189 - 2190: 47(int) CompositeExtract 2188 0 - 2191: 156 Load 158(sCube) - 2192: 148(fvec3) Load 150(c3) - 2193: 148(fvec3) Load 882(dPdxy3) - 2194: 148(fvec3) Load 882(dPdxy3) - 2195:1991(ResType) ImageSparseSampleExplicitLod 2191 2192 Grad 2193 2194 - 2196: 7(fvec4) CompositeExtract 2195 1 - Store 2176(texel) 2196 - 2197: 47(int) CompositeExtract 2195 0 - 2198: 257 Load 259(s2DRect) - 2199: 52(fvec2) Load 138(c2) - 2200: 52(fvec2) Load 874(dPdxy2) - 2201: 52(fvec2) Load 874(dPdxy2) - 2202:1991(ResType) ImageSparseSampleExplicitLod 2198 2199 Grad 2200 2201 - 2203: 7(fvec4) CompositeExtract 2202 1 - Store 2176(texel) 2203 - 2204: 47(int) CompositeExtract 2202 0 - 2205: 266 Load 268(s2DRectShadow) - 2206: 148(fvec3) Load 150(c3) - 2207: 52(fvec2) Load 874(dPdxy2) - 2208: 52(fvec2) Load 874(dPdxy2) - 2209: 174(ptr) AccessChain 2176(texel) 173 - 2210: 6(float) CompositeExtract 2206 2 - 2211:2009(ResType) ImageSparseSampleDrefExplicitLod 2205 2206 2210 Grad 2207 2208 - 2212: 6(float) CompositeExtract 2211 1 - Store 2209 2212 - 2213: 47(int) CompositeExtract 2211 0 - 2214: 180 Load 182(s2DShadow) - 2215: 148(fvec3) Load 150(c3) - 2216: 52(fvec2) Load 874(dPdxy2) - 2217: 52(fvec2) Load 874(dPdxy2) - 2218: 174(ptr) AccessChain 2176(texel) 173 - 2219: 6(float) CompositeExtract 2215 2 - 2220:2009(ResType) ImageSparseSampleDrefExplicitLod 2214 2215 2219 Grad 2216 2217 - 2221: 6(float) CompositeExtract 2220 1 - Store 2218 2221 - 2222: 47(int) CompositeExtract 2220 0 - 2223: 192 Load 194(sCubeShadow) - 2224: 7(fvec4) Load 197(c4) - 2225: 148(fvec3) Load 882(dPdxy3) - 2226: 148(fvec3) Load 882(dPdxy3) - 2227: 174(ptr) AccessChain 2176(texel) 173 - 2228: 6(float) CompositeExtract 2224 3 - 2229:2009(ResType) ImageSparseSampleDrefExplicitLod 2223 2224 2228 Grad 2225 2226 - 2230: 6(float) CompositeExtract 2229 1 - Store 2227 2230 - 2231: 47(int) CompositeExtract 2229 0 - 2232: 215 Load 217(s2DArray) - 2233: 148(fvec3) Load 150(c3) - 2234: 52(fvec2) Load 874(dPdxy2) - 2235: 52(fvec2) Load 874(dPdxy2) - 2236:1991(ResType) ImageSparseSampleExplicitLod 2232 2233 Grad 2234 2235 - 2237: 7(fvec4) CompositeExtract 2236 1 - Store 2176(texel) 2237 - 2238: 47(int) CompositeExtract 2236 0 - 2239: 245 Load 247(s2DArrayShadow) - 2240: 7(fvec4) Load 197(c4) - 2241: 52(fvec2) Load 874(dPdxy2) - 2242: 52(fvec2) Load 874(dPdxy2) - 2243: 174(ptr) AccessChain 2176(texel) 173 - 2244: 6(float) CompositeExtract 2240 3 - 2245:2009(ResType) ImageSparseSampleDrefExplicitLod 2239 2240 2244 Grad 2241 2242 - 2246: 6(float) CompositeExtract 2245 1 - Store 2243 2246 - 2247: 47(int) CompositeExtract 2245 0 - 2248: 224 Load 226(sCubeArray) - 2249: 7(fvec4) Load 197(c4) - 2250: 148(fvec3) Load 882(dPdxy3) - 2251: 148(fvec3) Load 882(dPdxy3) - 2252:1991(ResType) ImageSparseSampleExplicitLod 2248 2249 Grad 2250 2251 - 2253: 7(fvec4) CompositeExtract 2252 1 - Store 2176(texel) 2253 - 2254: 47(int) CompositeExtract 2252 0 - 2255: 7(fvec4) Load 2176(texel) - ReturnValue 2255 + 2131(texel): 63(ptr) Variable Function + Store 2131(texel) 120 + 2132: 133 Load 135(s2D) + 2133: 52(fvec2) Load 138(c2) + 2134: 52(fvec2) Load 873(dPdxy2) + 2135:1946(ResType) ImageSparseSampleExplicitLod 2132 2133 Grad 2134 2134 + 2136: 7(fvec4) CompositeExtract 2135 1 + Store 2131(texel) 2136 + 2137: 47(int) CompositeExtract 2135 0 + 2138: 144 Load 146(s3D) + 2139: 148(fvec3) Load 150(c3) + 2140: 148(fvec3) Load 880(dPdxy3) + 2141:1946(ResType) ImageSparseSampleExplicitLod 2138 2139 Grad 2140 2140 + 2142: 7(fvec4) CompositeExtract 2141 1 + Store 2131(texel) 2142 + 2143: 47(int) CompositeExtract 2141 0 + 2144: 156 Load 158(sCube) + 2145: 148(fvec3) Load 150(c3) + 2146: 148(fvec3) Load 880(dPdxy3) + 2147:1946(ResType) ImageSparseSampleExplicitLod 2144 2145 Grad 2146 2146 + 2148: 7(fvec4) CompositeExtract 2147 1 + Store 2131(texel) 2148 + 2149: 47(int) CompositeExtract 2147 0 + 2150: 257 Load 259(s2DRect) + 2151: 52(fvec2) Load 138(c2) + 2152: 52(fvec2) Load 873(dPdxy2) + 2153:1946(ResType) ImageSparseSampleExplicitLod 2150 2151 Grad 2152 2152 + 2154: 7(fvec4) CompositeExtract 2153 1 + Store 2131(texel) 2154 + 2155: 47(int) CompositeExtract 2153 0 + 2156: 266 Load 268(s2DRectShadow) + 2157: 148(fvec3) Load 150(c3) + 2158: 52(fvec2) Load 873(dPdxy2) + 2159: 174(ptr) AccessChain 2131(texel) 173 + 2160: 6(float) CompositeExtract 2157 2 + 2161:1964(ResType) ImageSparseSampleDrefExplicitLod 2156 2157 2160 Grad 2158 2158 + 2162: 6(float) CompositeExtract 2161 1 + Store 2159 2162 + 2163: 47(int) CompositeExtract 2161 0 + 2164: 180 Load 182(s2DShadow) + 2165: 148(fvec3) Load 150(c3) + 2166: 52(fvec2) Load 873(dPdxy2) + 2167: 174(ptr) AccessChain 2131(texel) 173 + 2168: 6(float) CompositeExtract 2165 2 + 2169:1964(ResType) ImageSparseSampleDrefExplicitLod 2164 2165 2168 Grad 2166 2166 + 2170: 6(float) CompositeExtract 2169 1 + Store 2167 2170 + 2171: 47(int) CompositeExtract 2169 0 + 2172: 192 Load 194(sCubeShadow) + 2173: 7(fvec4) Load 197(c4) + 2174: 148(fvec3) Load 880(dPdxy3) + 2175: 174(ptr) AccessChain 2131(texel) 173 + 2176: 6(float) CompositeExtract 2173 3 + 2177:1964(ResType) ImageSparseSampleDrefExplicitLod 2172 2173 2176 Grad 2174 2174 + 2178: 6(float) CompositeExtract 2177 1 + Store 2175 2178 + 2179: 47(int) CompositeExtract 2177 0 + 2180: 215 Load 217(s2DArray) + 2181: 148(fvec3) Load 150(c3) + 2182: 52(fvec2) Load 873(dPdxy2) + 2183:1946(ResType) ImageSparseSampleExplicitLod 2180 2181 Grad 2182 2182 + 2184: 7(fvec4) CompositeExtract 2183 1 + Store 2131(texel) 2184 + 2185: 47(int) CompositeExtract 2183 0 + 2186: 245 Load 247(s2DArrayShadow) + 2187: 7(fvec4) Load 197(c4) + 2188: 52(fvec2) Load 873(dPdxy2) + 2189: 174(ptr) AccessChain 2131(texel) 173 + 2190: 6(float) CompositeExtract 2187 3 + 2191:1964(ResType) ImageSparseSampleDrefExplicitLod 2186 2187 2190 Grad 2188 2188 + 2192: 6(float) CompositeExtract 2191 1 + Store 2189 2192 + 2193: 47(int) CompositeExtract 2191 0 + 2194: 224 Load 226(sCubeArray) + 2195: 7(fvec4) Load 197(c4) + 2196: 148(fvec3) Load 880(dPdxy3) + 2197:1946(ResType) ImageSparseSampleExplicitLod 2194 2195 Grad 2196 2196 + 2198: 7(fvec4) CompositeExtract 2197 1 + Store 2131(texel) 2198 + 2199: 47(int) CompositeExtract 2197 0 + 2200: 7(fvec4) Load 2131(texel) + ReturnValue 2200 FunctionEnd 78(testSparseTextureGradOffset(): 7(fvec4) Function None 8 79: Label - 2258(texel): 63(ptr) Variable Function - Store 2258(texel) 120 - 2259: 133 Load 135(s2D) - 2260: 52(fvec2) Load 138(c2) - 2261: 52(fvec2) Load 874(dPdxy2) - 2262: 52(fvec2) Load 874(dPdxy2) - 2263:1991(ResType) ImageSparseSampleExplicitLod 2259 2260 Grad ConstOffset 2261 2262 452 - 2264: 7(fvec4) CompositeExtract 2263 1 - Store 2258(texel) 2264 - 2265: 47(int) CompositeExtract 2263 0 - 2266: 144 Load 146(s3D) - 2267: 148(fvec3) Load 150(c3) - 2268: 148(fvec3) Load 882(dPdxy3) - 2269: 148(fvec3) Load 882(dPdxy3) - 2270:1991(ResType) ImageSparseSampleExplicitLod 2266 2267 Grad ConstOffset 2268 2269 459 - 2271: 7(fvec4) CompositeExtract 2270 1 - Store 2258(texel) 2271 - 2272: 47(int) CompositeExtract 2270 0 - 2273: 257 Load 259(s2DRect) - 2274: 52(fvec2) Load 138(c2) - 2275: 52(fvec2) Load 874(dPdxy2) - 2276: 52(fvec2) Load 874(dPdxy2) - 2277:1991(ResType) ImageSparseSampleExplicitLod 2273 2274 Grad ConstOffset 2275 2276 452 - 2278: 7(fvec4) CompositeExtract 2277 1 - Store 2258(texel) 2278 - 2279: 47(int) CompositeExtract 2277 0 - 2280: 266 Load 268(s2DRectShadow) - 2281: 148(fvec3) Load 150(c3) - 2282: 52(fvec2) Load 874(dPdxy2) - 2283: 52(fvec2) Load 874(dPdxy2) - 2284: 174(ptr) AccessChain 2258(texel) 173 - 2285: 6(float) CompositeExtract 2281 2 - 2286:2009(ResType) ImageSparseSampleDrefExplicitLod 2280 2281 2285 Grad ConstOffset 2282 2283 452 - 2287: 6(float) CompositeExtract 2286 1 - Store 2284 2287 - 2288: 47(int) CompositeExtract 2286 0 - 2289: 180 Load 182(s2DShadow) - 2290: 148(fvec3) Load 150(c3) - 2291: 52(fvec2) Load 874(dPdxy2) - 2292: 52(fvec2) Load 874(dPdxy2) - 2293: 174(ptr) AccessChain 2258(texel) 173 - 2294: 6(float) CompositeExtract 2290 2 - 2295:2009(ResType) ImageSparseSampleDrefExplicitLod 2289 2290 2294 Grad ConstOffset 2291 2292 452 - 2296: 6(float) CompositeExtract 2295 1 - Store 2293 2296 - 2297: 47(int) CompositeExtract 2295 0 - 2298: 215 Load 217(s2DArray) - 2299: 148(fvec3) Load 150(c3) - 2300: 52(fvec2) Load 874(dPdxy2) - 2301: 52(fvec2) Load 874(dPdxy2) - 2302:1991(ResType) ImageSparseSampleExplicitLod 2298 2299 Grad ConstOffset 2300 2301 452 - 2303: 7(fvec4) CompositeExtract 2302 1 - Store 2258(texel) 2303 - 2304: 47(int) CompositeExtract 2302 0 - 2305: 245 Load 247(s2DArrayShadow) - 2306: 7(fvec4) Load 197(c4) - 2307: 52(fvec2) Load 874(dPdxy2) - 2308: 52(fvec2) Load 874(dPdxy2) - 2309: 174(ptr) AccessChain 2258(texel) 173 - 2310: 6(float) CompositeExtract 2306 3 - 2311:2009(ResType) ImageSparseSampleDrefExplicitLod 2305 2306 2310 Grad ConstOffset 2307 2308 452 - 2312: 6(float) CompositeExtract 2311 1 - Store 2309 2312 - 2313: 47(int) CompositeExtract 2311 0 - 2314: 7(fvec4) Load 2258(texel) - ReturnValue 2314 + 2203(texel): 63(ptr) Variable Function + Store 2203(texel) 120 + 2204: 133 Load 135(s2D) + 2205: 52(fvec2) Load 138(c2) + 2206: 52(fvec2) Load 873(dPdxy2) + 2207:1946(ResType) ImageSparseSampleExplicitLod 2204 2205 Grad ConstOffset 2206 2206 452 + 2208: 7(fvec4) CompositeExtract 2207 1 + Store 2203(texel) 2208 + 2209: 47(int) CompositeExtract 2207 0 + 2210: 144 Load 146(s3D) + 2211: 148(fvec3) Load 150(c3) + 2212: 148(fvec3) Load 880(dPdxy3) + 2213:1946(ResType) ImageSparseSampleExplicitLod 2210 2211 Grad ConstOffset 2212 2212 459 + 2214: 7(fvec4) CompositeExtract 2213 1 + Store 2203(texel) 2214 + 2215: 47(int) CompositeExtract 2213 0 + 2216: 257 Load 259(s2DRect) + 2217: 52(fvec2) Load 138(c2) + 2218: 52(fvec2) Load 873(dPdxy2) + 2219:1946(ResType) ImageSparseSampleExplicitLod 2216 2217 Grad ConstOffset 2218 2218 452 + 2220: 7(fvec4) CompositeExtract 2219 1 + Store 2203(texel) 2220 + 2221: 47(int) CompositeExtract 2219 0 + 2222: 266 Load 268(s2DRectShadow) + 2223: 148(fvec3) Load 150(c3) + 2224: 52(fvec2) Load 873(dPdxy2) + 2225: 174(ptr) AccessChain 2203(texel) 173 + 2226: 6(float) CompositeExtract 2223 2 + 2227:1964(ResType) ImageSparseSampleDrefExplicitLod 2222 2223 2226 Grad ConstOffset 2224 2224 452 + 2228: 6(float) CompositeExtract 2227 1 + Store 2225 2228 + 2229: 47(int) CompositeExtract 2227 0 + 2230: 180 Load 182(s2DShadow) + 2231: 148(fvec3) Load 150(c3) + 2232: 52(fvec2) Load 873(dPdxy2) + 2233: 174(ptr) AccessChain 2203(texel) 173 + 2234: 6(float) CompositeExtract 2231 2 + 2235:1964(ResType) ImageSparseSampleDrefExplicitLod 2230 2231 2234 Grad ConstOffset 2232 2232 452 + 2236: 6(float) CompositeExtract 2235 1 + Store 2233 2236 + 2237: 47(int) CompositeExtract 2235 0 + 2238: 215 Load 217(s2DArray) + 2239: 148(fvec3) Load 150(c3) + 2240: 52(fvec2) Load 873(dPdxy2) + 2241:1946(ResType) ImageSparseSampleExplicitLod 2238 2239 Grad ConstOffset 2240 2240 452 + 2242: 7(fvec4) CompositeExtract 2241 1 + Store 2203(texel) 2242 + 2243: 47(int) CompositeExtract 2241 0 + 2244: 245 Load 247(s2DArrayShadow) + 2245: 7(fvec4) Load 197(c4) + 2246: 52(fvec2) Load 873(dPdxy2) + 2247: 174(ptr) AccessChain 2203(texel) 173 + 2248: 6(float) CompositeExtract 2245 3 + 2249:1964(ResType) ImageSparseSampleDrefExplicitLod 2244 2245 2248 Grad ConstOffset 2246 2246 452 + 2250: 6(float) CompositeExtract 2249 1 + Store 2247 2250 + 2251: 47(int) CompositeExtract 2249 0 + 2252: 7(fvec4) Load 2203(texel) + ReturnValue 2252 FunctionEnd 80(testSparseTexelFetch(): 7(fvec4) Function None 8 81: Label - 2317(texel): 63(ptr) Variable Function - Store 2317(texel) 120 - 2318: 133 Load 135(s2D) - 2319: 52(fvec2) Load 138(c2) - 2320: 451(ivec2) ConvertFToS 2319 - 2321: 6(float) Load 371(lod) - 2322: 47(int) ConvertFToS 2321 - 2323: 132 Image 2318 - 2324:1991(ResType) ImageSparseFetch 2323 2320 Lod 2322 - 2325: 7(fvec4) CompositeExtract 2324 1 - Store 2317(texel) 2325 - 2326: 47(int) CompositeExtract 2324 0 - 2327: 144 Load 146(s3D) - 2328: 148(fvec3) Load 150(c3) - 2329: 458(ivec3) ConvertFToS 2328 - 2330: 6(float) Load 371(lod) - 2331: 47(int) ConvertFToS 2330 - 2332: 143 Image 2327 - 2333:1991(ResType) ImageSparseFetch 2332 2329 Lod 2331 - 2334: 7(fvec4) CompositeExtract 2333 1 - Store 2317(texel) 2334 - 2335: 47(int) CompositeExtract 2333 0 - 2336: 257 Load 259(s2DRect) - 2337: 52(fvec2) Load 138(c2) - 2338: 451(ivec2) ConvertFToS 2337 - 2339: 256 Image 2336 - 2340:1991(ResType) ImageSparseFetch 2339 2338 - 2341: 7(fvec4) CompositeExtract 2340 1 - Store 2317(texel) 2341 - 2342: 47(int) CompositeExtract 2340 0 - 2343: 215 Load 217(s2DArray) - 2344: 148(fvec3) Load 150(c3) - 2345: 458(ivec3) ConvertFToS 2344 - 2346: 6(float) Load 371(lod) - 2347: 47(int) ConvertFToS 2346 - 2348: 214 Image 2343 - 2349:1991(ResType) ImageSparseFetch 2348 2345 Lod 2347 - 2350: 7(fvec4) CompositeExtract 2349 1 - Store 2317(texel) 2350 - 2351: 47(int) CompositeExtract 2349 0 - 2352: 782 Load 784(s2DMS) - 2353: 52(fvec2) Load 138(c2) - 2354: 451(ivec2) ConvertFToS 2353 - 2355: 781 Image 2352 - 2356:1991(ResType) ImageSparseFetch 2355 2354 Sample 445 - 2357: 7(fvec4) CompositeExtract 2356 1 - Store 2317(texel) 2357 - 2358: 47(int) CompositeExtract 2356 0 - 2359: 793 Load 795(s2DMSArray) - 2360: 148(fvec3) Load 150(c3) - 2361: 458(ivec3) ConvertFToS 2360 - 2362: 792 Image 2359 - 2363:1991(ResType) ImageSparseFetch 2362 2361 Sample 799 - 2364: 7(fvec4) CompositeExtract 2363 1 - Store 2317(texel) 2364 - 2365: 47(int) CompositeExtract 2363 0 - 2366: 7(fvec4) Load 2317(texel) - ReturnValue 2366 + 2255(texel): 63(ptr) Variable Function + Store 2255(texel) 120 + 2256: 133 Load 135(s2D) + 2257: 52(fvec2) Load 138(c2) + 2258: 451(ivec2) ConvertFToS 2257 + 2259: 6(float) Load 371(lod) + 2260: 47(int) ConvertFToS 2259 + 2261: 132 Image 2256 + 2262:1946(ResType) ImageSparseFetch 2261 2258 Lod 2260 + 2263: 7(fvec4) CompositeExtract 2262 1 + Store 2255(texel) 2263 + 2264: 47(int) CompositeExtract 2262 0 + 2265: 144 Load 146(s3D) + 2266: 148(fvec3) Load 150(c3) + 2267: 458(ivec3) ConvertFToS 2266 + 2268: 6(float) Load 371(lod) + 2269: 47(int) ConvertFToS 2268 + 2270: 143 Image 2265 + 2271:1946(ResType) ImageSparseFetch 2270 2267 Lod 2269 + 2272: 7(fvec4) CompositeExtract 2271 1 + Store 2255(texel) 2272 + 2273: 47(int) CompositeExtract 2271 0 + 2274: 257 Load 259(s2DRect) + 2275: 52(fvec2) Load 138(c2) + 2276: 451(ivec2) ConvertFToS 2275 + 2277: 256 Image 2274 + 2278:1946(ResType) ImageSparseFetch 2277 2276 + 2279: 7(fvec4) CompositeExtract 2278 1 + Store 2255(texel) 2279 + 2280: 47(int) CompositeExtract 2278 0 + 2281: 215 Load 217(s2DArray) + 2282: 148(fvec3) Load 150(c3) + 2283: 458(ivec3) ConvertFToS 2282 + 2284: 6(float) Load 371(lod) + 2285: 47(int) ConvertFToS 2284 + 2286: 214 Image 2281 + 2287:1946(ResType) ImageSparseFetch 2286 2283 Lod 2285 + 2288: 7(fvec4) CompositeExtract 2287 1 + Store 2255(texel) 2288 + 2289: 47(int) CompositeExtract 2287 0 + 2290: 782 Load 784(s2DMS) + 2291: 52(fvec2) Load 138(c2) + 2292: 451(ivec2) ConvertFToS 2291 + 2293: 781 Image 2290 + 2294:1946(ResType) ImageSparseFetch 2293 2292 Sample 445 + 2295: 7(fvec4) CompositeExtract 2294 1 + Store 2255(texel) 2295 + 2296: 47(int) CompositeExtract 2294 0 + 2297: 793 Load 795(s2DMSArray) + 2298: 148(fvec3) Load 150(c3) + 2299: 458(ivec3) ConvertFToS 2298 + 2300: 792 Image 2297 + 2301:1946(ResType) ImageSparseFetch 2300 2299 Sample 799 + 2302: 7(fvec4) CompositeExtract 2301 1 + Store 2255(texel) 2302 + 2303: 47(int) CompositeExtract 2301 0 + 2304: 7(fvec4) Load 2255(texel) + ReturnValue 2304 FunctionEnd 82(testSparseTexelFetchOffset(): 7(fvec4) Function None 8 83: Label - 2369(texel): 63(ptr) Variable Function - Store 2369(texel) 120 - 2370: 133 Load 135(s2D) - 2371: 52(fvec2) Load 138(c2) - 2372: 451(ivec2) ConvertFToS 2371 - 2373: 6(float) Load 371(lod) - 2374: 47(int) ConvertFToS 2373 - 2375: 132 Image 2370 - 2376:1991(ResType) ImageSparseFetch 2375 2372 Lod ConstOffset 2374 452 - 2377: 7(fvec4) CompositeExtract 2376 1 - Store 2369(texel) 2377 - 2378: 47(int) CompositeExtract 2376 0 - 2379: 144 Load 146(s3D) - 2380: 148(fvec3) Load 150(c3) - 2381: 458(ivec3) ConvertFToS 2380 - 2382: 6(float) Load 371(lod) - 2383: 47(int) ConvertFToS 2382 - 2384: 143 Image 2379 - 2385:1991(ResType) ImageSparseFetch 2384 2381 Lod ConstOffset 2383 459 - 2386: 7(fvec4) CompositeExtract 2385 1 - Store 2369(texel) 2386 - 2387: 47(int) CompositeExtract 2385 0 - 2388: 257 Load 259(s2DRect) - 2389: 52(fvec2) Load 138(c2) - 2390: 451(ivec2) ConvertFToS 2389 - 2391: 256 Image 2388 - 2392:1991(ResType) ImageSparseFetch 2391 2390 ConstOffset 452 - 2393: 7(fvec4) CompositeExtract 2392 1 - Store 2369(texel) 2393 - 2394: 47(int) CompositeExtract 2392 0 - 2395: 215 Load 217(s2DArray) - 2396: 148(fvec3) Load 150(c3) - 2397: 458(ivec3) ConvertFToS 2396 - 2398: 6(float) Load 371(lod) - 2399: 47(int) ConvertFToS 2398 - 2400: 214 Image 2395 - 2401:1991(ResType) ImageSparseFetch 2400 2397 Lod ConstOffset 2399 452 - 2402: 7(fvec4) CompositeExtract 2401 1 - Store 2369(texel) 2402 - 2403: 47(int) CompositeExtract 2401 0 - 2404: 7(fvec4) Load 2369(texel) - ReturnValue 2404 + 2307(texel): 63(ptr) Variable Function + Store 2307(texel) 120 + 2308: 133 Load 135(s2D) + 2309: 52(fvec2) Load 138(c2) + 2310: 451(ivec2) ConvertFToS 2309 + 2311: 6(float) Load 371(lod) + 2312: 47(int) ConvertFToS 2311 + 2313: 132 Image 2308 + 2314:1946(ResType) ImageSparseFetch 2313 2310 Lod ConstOffset 2312 452 + 2315: 7(fvec4) CompositeExtract 2314 1 + Store 2307(texel) 2315 + 2316: 47(int) CompositeExtract 2314 0 + 2317: 144 Load 146(s3D) + 2318: 148(fvec3) Load 150(c3) + 2319: 458(ivec3) ConvertFToS 2318 + 2320: 6(float) Load 371(lod) + 2321: 47(int) ConvertFToS 2320 + 2322: 143 Image 2317 + 2323:1946(ResType) ImageSparseFetch 2322 2319 Lod ConstOffset 2321 459 + 2324: 7(fvec4) CompositeExtract 2323 1 + Store 2307(texel) 2324 + 2325: 47(int) CompositeExtract 2323 0 + 2326: 257 Load 259(s2DRect) + 2327: 52(fvec2) Load 138(c2) + 2328: 451(ivec2) ConvertFToS 2327 + 2329: 256 Image 2326 + 2330:1946(ResType) ImageSparseFetch 2329 2328 ConstOffset 452 + 2331: 7(fvec4) CompositeExtract 2330 1 + Store 2307(texel) 2331 + 2332: 47(int) CompositeExtract 2330 0 + 2333: 215 Load 217(s2DArray) + 2334: 148(fvec3) Load 150(c3) + 2335: 458(ivec3) ConvertFToS 2334 + 2336: 6(float) Load 371(lod) + 2337: 47(int) ConvertFToS 2336 + 2338: 214 Image 2333 + 2339:1946(ResType) ImageSparseFetch 2338 2335 Lod ConstOffset 2337 452 + 2340: 7(fvec4) CompositeExtract 2339 1 + Store 2307(texel) 2340 + 2341: 47(int) CompositeExtract 2339 0 + 2342: 7(fvec4) Load 2307(texel) + ReturnValue 2342 FunctionEnd 84(testSparseTextureGather(): 7(fvec4) Function None 8 85: Label - 2407(texel): 63(ptr) Variable Function - Store 2407(texel) 120 - 2408: 133 Load 135(s2D) - 2409: 52(fvec2) Load 138(c2) - 2410:1991(ResType) ImageSparseGather 2408 2409 1275 - 2411: 7(fvec4) CompositeExtract 2410 1 - Store 2407(texel) 2411 - 2412: 47(int) CompositeExtract 2410 0 - 2413: 215 Load 217(s2DArray) - 2414: 148(fvec3) Load 150(c3) - 2415:1991(ResType) ImageSparseGather 2413 2414 1275 - 2416: 7(fvec4) CompositeExtract 2415 1 - Store 2407(texel) 2416 - 2417: 47(int) CompositeExtract 2415 0 - 2418: 156 Load 158(sCube) - 2419: 148(fvec3) Load 150(c3) - 2420:1991(ResType) ImageSparseGather 2418 2419 1275 - 2421: 7(fvec4) CompositeExtract 2420 1 - Store 2407(texel) 2421 - 2422: 47(int) CompositeExtract 2420 0 - 2423: 224 Load 226(sCubeArray) - 2424: 7(fvec4) Load 197(c4) - 2425:1991(ResType) ImageSparseGather 2423 2424 1275 - 2426: 7(fvec4) CompositeExtract 2425 1 - Store 2407(texel) 2426 - 2427: 47(int) CompositeExtract 2425 0 - 2428: 257 Load 259(s2DRect) - 2429: 52(fvec2) Load 138(c2) - 2430:1991(ResType) ImageSparseGather 2428 2429 1275 - 2431: 7(fvec4) CompositeExtract 2430 1 - Store 2407(texel) 2431 - 2432: 47(int) CompositeExtract 2430 0 - 2433: 180 Load 182(s2DShadow) - 2434: 52(fvec2) Load 138(c2) - 2435: 6(float) Load 283(compare) - 2436:1991(ResType) ImageSparseDrefGather 2433 2434 2435 - 2437: 7(fvec4) CompositeExtract 2436 1 - Store 2407(texel) 2437 - 2438: 47(int) CompositeExtract 2436 0 - 2439: 245 Load 247(s2DArrayShadow) - 2440: 148(fvec3) Load 150(c3) - 2441: 6(float) Load 283(compare) - 2442:1991(ResType) ImageSparseDrefGather 2439 2440 2441 - 2443: 7(fvec4) CompositeExtract 2442 1 - Store 2407(texel) 2443 - 2444: 47(int) CompositeExtract 2442 0 - 2445: 192 Load 194(sCubeShadow) - 2446: 148(fvec3) Load 150(c3) - 2447: 6(float) Load 283(compare) - 2448:1991(ResType) ImageSparseDrefGather 2445 2446 2447 - 2449: 7(fvec4) CompositeExtract 2448 1 - Store 2407(texel) 2449 - 2450: 47(int) CompositeExtract 2448 0 - 2451: 278 Load 280(sCubeArrayShadow) - 2452: 7(fvec4) Load 197(c4) - 2453: 6(float) Load 283(compare) - 2454:1991(ResType) ImageSparseDrefGather 2451 2452 2453 - 2455: 7(fvec4) CompositeExtract 2454 1 - Store 2407(texel) 2455 - 2456: 47(int) CompositeExtract 2454 0 - 2457: 266 Load 268(s2DRectShadow) - 2458: 52(fvec2) Load 138(c2) - 2459: 6(float) Load 283(compare) - 2460:1991(ResType) ImageSparseDrefGather 2457 2458 2459 - 2461: 7(fvec4) CompositeExtract 2460 1 - Store 2407(texel) 2461 - 2462: 47(int) CompositeExtract 2460 0 - 2463: 7(fvec4) Load 2407(texel) - ReturnValue 2463 + 2345(texel): 63(ptr) Variable Function + Store 2345(texel) 120 + 2346: 133 Load 135(s2D) + 2347: 52(fvec2) Load 138(c2) + 2348:1946(ResType) ImageSparseGather 2346 2347 1230 + 2349: 7(fvec4) CompositeExtract 2348 1 + Store 2345(texel) 2349 + 2350: 47(int) CompositeExtract 2348 0 + 2351: 215 Load 217(s2DArray) + 2352: 148(fvec3) Load 150(c3) + 2353:1946(ResType) ImageSparseGather 2351 2352 1230 + 2354: 7(fvec4) CompositeExtract 2353 1 + Store 2345(texel) 2354 + 2355: 47(int) CompositeExtract 2353 0 + 2356: 156 Load 158(sCube) + 2357: 148(fvec3) Load 150(c3) + 2358:1946(ResType) ImageSparseGather 2356 2357 1230 + 2359: 7(fvec4) CompositeExtract 2358 1 + Store 2345(texel) 2359 + 2360: 47(int) CompositeExtract 2358 0 + 2361: 224 Load 226(sCubeArray) + 2362: 7(fvec4) Load 197(c4) + 2363:1946(ResType) ImageSparseGather 2361 2362 1230 + 2364: 7(fvec4) CompositeExtract 2363 1 + Store 2345(texel) 2364 + 2365: 47(int) CompositeExtract 2363 0 + 2366: 257 Load 259(s2DRect) + 2367: 52(fvec2) Load 138(c2) + 2368:1946(ResType) ImageSparseGather 2366 2367 1230 + 2369: 7(fvec4) CompositeExtract 2368 1 + Store 2345(texel) 2369 + 2370: 47(int) CompositeExtract 2368 0 + 2371: 180 Load 182(s2DShadow) + 2372: 52(fvec2) Load 138(c2) + 2373: 6(float) Load 283(compare) + 2374:1946(ResType) ImageSparseDrefGather 2371 2372 2373 + 2375: 7(fvec4) CompositeExtract 2374 1 + Store 2345(texel) 2375 + 2376: 47(int) CompositeExtract 2374 0 + 2377: 245 Load 247(s2DArrayShadow) + 2378: 148(fvec3) Load 150(c3) + 2379: 6(float) Load 283(compare) + 2380:1946(ResType) ImageSparseDrefGather 2377 2378 2379 + 2381: 7(fvec4) CompositeExtract 2380 1 + Store 2345(texel) 2381 + 2382: 47(int) CompositeExtract 2380 0 + 2383: 192 Load 194(sCubeShadow) + 2384: 148(fvec3) Load 150(c3) + 2385: 6(float) Load 283(compare) + 2386:1946(ResType) ImageSparseDrefGather 2383 2384 2385 + 2387: 7(fvec4) CompositeExtract 2386 1 + Store 2345(texel) 2387 + 2388: 47(int) CompositeExtract 2386 0 + 2389: 278 Load 280(sCubeArrayShadow) + 2390: 7(fvec4) Load 197(c4) + 2391: 6(float) Load 283(compare) + 2392:1946(ResType) ImageSparseDrefGather 2389 2390 2391 + 2393: 7(fvec4) CompositeExtract 2392 1 + Store 2345(texel) 2393 + 2394: 47(int) CompositeExtract 2392 0 + 2395: 266 Load 268(s2DRectShadow) + 2396: 52(fvec2) Load 138(c2) + 2397: 6(float) Load 283(compare) + 2398:1946(ResType) ImageSparseDrefGather 2395 2396 2397 + 2399: 7(fvec4) CompositeExtract 2398 1 + Store 2345(texel) 2399 + 2400: 47(int) CompositeExtract 2398 0 + 2401: 7(fvec4) Load 2345(texel) + ReturnValue 2401 FunctionEnd 86(testSparseTextureGatherOffset(): 7(fvec4) Function None 8 87: Label - 2466(texel): 63(ptr) Variable Function - Store 2466(texel) 120 - 2467: 133 Load 135(s2D) - 2468: 52(fvec2) Load 138(c2) - 2469:1991(ResType) ImageSparseGather 2467 2468 1275 ConstOffset 452 - 2470: 7(fvec4) CompositeExtract 2469 1 - Store 2466(texel) 2470 - 2471: 47(int) CompositeExtract 2469 0 - 2472: 215 Load 217(s2DArray) - 2473: 148(fvec3) Load 150(c3) - 2474:1991(ResType) ImageSparseGather 2472 2473 1275 ConstOffset 452 - 2475: 7(fvec4) CompositeExtract 2474 1 - Store 2466(texel) 2475 - 2476: 47(int) CompositeExtract 2474 0 - 2477: 257 Load 259(s2DRect) - 2478: 52(fvec2) Load 138(c2) - 2479:1991(ResType) ImageSparseGather 2477 2478 1275 ConstOffset 452 - 2480: 7(fvec4) CompositeExtract 2479 1 - Store 2466(texel) 2480 - 2481: 47(int) CompositeExtract 2479 0 - 2482: 180 Load 182(s2DShadow) - 2483: 52(fvec2) Load 138(c2) - 2484: 6(float) Load 283(compare) - 2485:1991(ResType) ImageSparseDrefGather 2482 2483 2484 ConstOffset 452 - 2486: 7(fvec4) CompositeExtract 2485 1 - Store 2466(texel) 2486 - 2487: 47(int) CompositeExtract 2485 0 - 2488: 245 Load 247(s2DArrayShadow) - 2489: 148(fvec3) Load 150(c3) - 2490: 6(float) Load 283(compare) - 2491:1991(ResType) ImageSparseDrefGather 2488 2489 2490 ConstOffset 452 - 2492: 7(fvec4) CompositeExtract 2491 1 - Store 2466(texel) 2492 - 2493: 47(int) CompositeExtract 2491 0 - 2494: 266 Load 268(s2DRectShadow) - 2495: 52(fvec2) Load 138(c2) - 2496: 6(float) Load 283(compare) - 2497:1991(ResType) ImageSparseDrefGather 2494 2495 2496 ConstOffset 452 - 2498: 7(fvec4) CompositeExtract 2497 1 - Store 2466(texel) 2498 - 2499: 47(int) CompositeExtract 2497 0 - 2500: 7(fvec4) Load 2466(texel) - ReturnValue 2500 + 2404(texel): 63(ptr) Variable Function + Store 2404(texel) 120 + 2405: 133 Load 135(s2D) + 2406: 52(fvec2) Load 138(c2) + 2407:1946(ResType) ImageSparseGather 2405 2406 1230 ConstOffset 452 + 2408: 7(fvec4) CompositeExtract 2407 1 + Store 2404(texel) 2408 + 2409: 47(int) CompositeExtract 2407 0 + 2410: 215 Load 217(s2DArray) + 2411: 148(fvec3) Load 150(c3) + 2412:1946(ResType) ImageSparseGather 2410 2411 1230 ConstOffset 452 + 2413: 7(fvec4) CompositeExtract 2412 1 + Store 2404(texel) 2413 + 2414: 47(int) CompositeExtract 2412 0 + 2415: 257 Load 259(s2DRect) + 2416: 52(fvec2) Load 138(c2) + 2417:1946(ResType) ImageSparseGather 2415 2416 1230 ConstOffset 452 + 2418: 7(fvec4) CompositeExtract 2417 1 + Store 2404(texel) 2418 + 2419: 47(int) CompositeExtract 2417 0 + 2420: 180 Load 182(s2DShadow) + 2421: 52(fvec2) Load 138(c2) + 2422: 6(float) Load 283(compare) + 2423:1946(ResType) ImageSparseDrefGather 2420 2421 2422 ConstOffset 452 + 2424: 7(fvec4) CompositeExtract 2423 1 + Store 2404(texel) 2424 + 2425: 47(int) CompositeExtract 2423 0 + 2426: 245 Load 247(s2DArrayShadow) + 2427: 148(fvec3) Load 150(c3) + 2428: 6(float) Load 283(compare) + 2429:1946(ResType) ImageSparseDrefGather 2426 2427 2428 ConstOffset 452 + 2430: 7(fvec4) CompositeExtract 2429 1 + Store 2404(texel) 2430 + 2431: 47(int) CompositeExtract 2429 0 + 2432: 266 Load 268(s2DRectShadow) + 2433: 52(fvec2) Load 138(c2) + 2434: 6(float) Load 283(compare) + 2435:1946(ResType) ImageSparseDrefGather 2432 2433 2434 ConstOffset 452 + 2436: 7(fvec4) CompositeExtract 2435 1 + Store 2404(texel) 2436 + 2437: 47(int) CompositeExtract 2435 0 + 2438: 7(fvec4) Load 2404(texel) + ReturnValue 2438 FunctionEnd 88(testSparseTextureGatherOffsets(): 7(fvec4) Function None 8 89: Label - 2503(texel): 63(ptr) Variable Function - Store 2503(texel) 120 - 2504: 133 Load 135(s2D) - 2505: 52(fvec2) Load 138(c2) - 2516:1991(ResType) ImageSparseGather 2504 2505 1275 ConstOffsets 2515 - 2517: 7(fvec4) CompositeExtract 2516 1 - Store 2503(texel) 2517 - 2518: 47(int) CompositeExtract 2516 0 - 2519: 215 Load 217(s2DArray) - 2520: 148(fvec3) Load 150(c3) - 2521:1991(ResType) ImageSparseGather 2519 2520 1275 ConstOffsets 2515 - 2522: 7(fvec4) CompositeExtract 2521 1 - Store 2503(texel) 2522 - 2523: 47(int) CompositeExtract 2521 0 - 2524: 257 Load 259(s2DRect) - 2525: 52(fvec2) Load 138(c2) - 2526:1991(ResType) ImageSparseGather 2524 2525 1275 ConstOffsets 2515 - 2527: 7(fvec4) CompositeExtract 2526 1 - Store 2503(texel) 2527 - 2528: 47(int) CompositeExtract 2526 0 - 2529: 180 Load 182(s2DShadow) - 2530: 52(fvec2) Load 138(c2) - 2531: 6(float) Load 283(compare) - 2532:1991(ResType) ImageSparseDrefGather 2529 2530 2531 ConstOffsets 2515 - 2533: 7(fvec4) CompositeExtract 2532 1 - Store 2503(texel) 2533 - 2534: 47(int) CompositeExtract 2532 0 - 2535: 245 Load 247(s2DArrayShadow) - 2536: 148(fvec3) Load 150(c3) - 2537: 6(float) Load 283(compare) - 2538:1991(ResType) ImageSparseDrefGather 2535 2536 2537 ConstOffsets 2515 - 2539: 7(fvec4) CompositeExtract 2538 1 - Store 2503(texel) 2539 - 2540: 47(int) CompositeExtract 2538 0 - 2541: 266 Load 268(s2DRectShadow) - 2542: 52(fvec2) Load 138(c2) - 2543: 6(float) Load 283(compare) - 2544:1991(ResType) ImageSparseDrefGather 2541 2542 2543 ConstOffsets 2515 - 2545: 7(fvec4) CompositeExtract 2544 1 - Store 2503(texel) 2545 - 2546: 47(int) CompositeExtract 2544 0 - 2547: 7(fvec4) Load 2503(texel) - ReturnValue 2547 + 2441(texel): 63(ptr) Variable Function + Store 2441(texel) 120 + 2442: 133 Load 135(s2D) + 2443: 52(fvec2) Load 138(c2) + 2454:1946(ResType) ImageSparseGather 2442 2443 1230 ConstOffsets 2453 + 2455: 7(fvec4) CompositeExtract 2454 1 + Store 2441(texel) 2455 + 2456: 47(int) CompositeExtract 2454 0 + 2457: 215 Load 217(s2DArray) + 2458: 148(fvec3) Load 150(c3) + 2459:1946(ResType) ImageSparseGather 2457 2458 1230 ConstOffsets 2453 + 2460: 7(fvec4) CompositeExtract 2459 1 + Store 2441(texel) 2460 + 2461: 47(int) CompositeExtract 2459 0 + 2462: 257 Load 259(s2DRect) + 2463: 52(fvec2) Load 138(c2) + 2464:1946(ResType) ImageSparseGather 2462 2463 1230 ConstOffsets 2453 + 2465: 7(fvec4) CompositeExtract 2464 1 + Store 2441(texel) 2465 + 2466: 47(int) CompositeExtract 2464 0 + 2467: 180 Load 182(s2DShadow) + 2468: 52(fvec2) Load 138(c2) + 2469: 6(float) Load 283(compare) + 2470:1946(ResType) ImageSparseDrefGather 2467 2468 2469 ConstOffsets 2453 + 2471: 7(fvec4) CompositeExtract 2470 1 + Store 2441(texel) 2471 + 2472: 47(int) CompositeExtract 2470 0 + 2473: 245 Load 247(s2DArrayShadow) + 2474: 148(fvec3) Load 150(c3) + 2475: 6(float) Load 283(compare) + 2476:1946(ResType) ImageSparseDrefGather 2473 2474 2475 ConstOffsets 2453 + 2477: 7(fvec4) CompositeExtract 2476 1 + Store 2441(texel) 2477 + 2478: 47(int) CompositeExtract 2476 0 + 2479: 266 Load 268(s2DRectShadow) + 2480: 52(fvec2) Load 138(c2) + 2481: 6(float) Load 283(compare) + 2482:1946(ResType) ImageSparseDrefGather 2479 2480 2481 ConstOffsets 2453 + 2483: 7(fvec4) CompositeExtract 2482 1 + Store 2441(texel) 2483 + 2484: 47(int) CompositeExtract 2482 0 + 2485: 7(fvec4) Load 2441(texel) + ReturnValue 2485 FunctionEnd 90(testSparseTextureGatherLod(): 7(fvec4) Function None 8 91: Label - 2550(texel): 63(ptr) Variable Function - Store 2550(texel) 120 - 2551: 133 Load 135(s2D) - 2552: 52(fvec2) Load 138(c2) - 2553: 6(float) Load 371(lod) - 2554:1991(ResType) ImageSparseGather 2551 2552 1275 Lod 2553 - 2555: 7(fvec4) CompositeExtract 2554 1 - Store 2550(texel) 2555 - 2556: 47(int) CompositeExtract 2554 0 - 2557: 215 Load 217(s2DArray) - 2558: 148(fvec3) Load 150(c3) - 2559: 6(float) Load 371(lod) - 2560:1991(ResType) ImageSparseGather 2557 2558 1275 Lod 2559 - 2561: 7(fvec4) CompositeExtract 2560 1 - Store 2550(texel) 2561 - 2562: 47(int) CompositeExtract 2560 0 - 2563: 156 Load 158(sCube) - 2564: 148(fvec3) Load 150(c3) - 2565: 6(float) Load 371(lod) - 2566:1991(ResType) ImageSparseGather 2563 2564 1275 Lod 2565 - 2567: 7(fvec4) CompositeExtract 2566 1 - Store 2550(texel) 2567 - 2568: 47(int) CompositeExtract 2566 0 - 2569: 224 Load 226(sCubeArray) - 2570: 7(fvec4) Load 197(c4) - 2571: 6(float) Load 371(lod) - 2572:1991(ResType) ImageSparseGather 2569 2570 1275 Lod 2571 - 2573: 7(fvec4) CompositeExtract 2572 1 - Store 2550(texel) 2573 - 2574: 47(int) CompositeExtract 2572 0 - 2575: 7(fvec4) Load 2550(texel) - ReturnValue 2575 + 2488(texel): 63(ptr) Variable Function + Store 2488(texel) 120 + 2489: 133 Load 135(s2D) + 2490: 52(fvec2) Load 138(c2) + 2491: 6(float) Load 371(lod) + 2492:1946(ResType) ImageSparseGather 2489 2490 1230 Lod 2491 + 2493: 7(fvec4) CompositeExtract 2492 1 + Store 2488(texel) 2493 + 2494: 47(int) CompositeExtract 2492 0 + 2495: 215 Load 217(s2DArray) + 2496: 148(fvec3) Load 150(c3) + 2497: 6(float) Load 371(lod) + 2498:1946(ResType) ImageSparseGather 2495 2496 1230 Lod 2497 + 2499: 7(fvec4) CompositeExtract 2498 1 + Store 2488(texel) 2499 + 2500: 47(int) CompositeExtract 2498 0 + 2501: 156 Load 158(sCube) + 2502: 148(fvec3) Load 150(c3) + 2503: 6(float) Load 371(lod) + 2504:1946(ResType) ImageSparseGather 2501 2502 1230 Lod 2503 + 2505: 7(fvec4) CompositeExtract 2504 1 + Store 2488(texel) 2505 + 2506: 47(int) CompositeExtract 2504 0 + 2507: 224 Load 226(sCubeArray) + 2508: 7(fvec4) Load 197(c4) + 2509: 6(float) Load 371(lod) + 2510:1946(ResType) ImageSparseGather 2507 2508 1230 Lod 2509 + 2511: 7(fvec4) CompositeExtract 2510 1 + Store 2488(texel) 2511 + 2512: 47(int) CompositeExtract 2510 0 + 2513: 7(fvec4) Load 2488(texel) + ReturnValue 2513 FunctionEnd 92(testSparseTextureGatherLodOffset(): 7(fvec4) Function None 8 93: Label - 2578(texel): 63(ptr) Variable Function - Store 2578(texel) 120 - 2579: 133 Load 135(s2D) - 2580: 52(fvec2) Load 138(c2) - 2581: 6(float) Load 371(lod) - 2582:1991(ResType) ImageSparseGather 2579 2580 1275 Lod ConstOffset 2581 452 - 2583: 7(fvec4) CompositeExtract 2582 1 - Store 2578(texel) 2583 - 2584: 47(int) CompositeExtract 2582 0 - 2585: 215 Load 217(s2DArray) - 2586: 148(fvec3) Load 150(c3) - 2587: 6(float) Load 371(lod) - 2588:1991(ResType) ImageSparseGather 2585 2586 1275 Lod ConstOffset 2587 452 - 2589: 7(fvec4) CompositeExtract 2588 1 - Store 2578(texel) 2589 - 2590: 47(int) CompositeExtract 2588 0 - 2591: 7(fvec4) Load 2578(texel) - ReturnValue 2591 + 2516(texel): 63(ptr) Variable Function + Store 2516(texel) 120 + 2517: 133 Load 135(s2D) + 2518: 52(fvec2) Load 138(c2) + 2519: 6(float) Load 371(lod) + 2520:1946(ResType) ImageSparseGather 2517 2518 1230 Lod ConstOffset 2519 452 + 2521: 7(fvec4) CompositeExtract 2520 1 + Store 2516(texel) 2521 + 2522: 47(int) CompositeExtract 2520 0 + 2523: 215 Load 217(s2DArray) + 2524: 148(fvec3) Load 150(c3) + 2525: 6(float) Load 371(lod) + 2526:1946(ResType) ImageSparseGather 2523 2524 1230 Lod ConstOffset 2525 452 + 2527: 7(fvec4) CompositeExtract 2526 1 + Store 2516(texel) 2527 + 2528: 47(int) CompositeExtract 2526 0 + 2529: 7(fvec4) Load 2516(texel) + ReturnValue 2529 FunctionEnd 94(testSparseTextureGatherLodOffsets(): 7(fvec4) Function None 8 95: Label - 2594(texel): 63(ptr) Variable Function - Store 2594(texel) 120 - 2595: 133 Load 135(s2D) - 2596: 52(fvec2) Load 138(c2) - 2597: 6(float) Load 371(lod) - 2598:1991(ResType) ImageSparseGather 2595 2596 1275 Lod ConstOffsets 2597 1374 - 2599: 7(fvec4) CompositeExtract 2598 1 - Store 2594(texel) 2599 - 2600: 47(int) CompositeExtract 2598 0 - 2601: 215 Load 217(s2DArray) - 2602: 148(fvec3) Load 150(c3) - 2603: 6(float) Load 371(lod) - 2604:1991(ResType) ImageSparseGather 2601 2602 1275 Lod ConstOffsets 2603 1374 - 2605: 7(fvec4) CompositeExtract 2604 1 - Store 2594(texel) 2605 - 2606: 47(int) CompositeExtract 2604 0 - 2607: 7(fvec4) Load 2594(texel) - ReturnValue 2607 + 2532(texel): 63(ptr) Variable Function + Store 2532(texel) 120 + 2533: 133 Load 135(s2D) + 2534: 52(fvec2) Load 138(c2) + 2535: 6(float) Load 371(lod) + 2536:1946(ResType) ImageSparseGather 2533 2534 1230 Lod ConstOffsets 2535 1329 + 2537: 7(fvec4) CompositeExtract 2536 1 + Store 2532(texel) 2537 + 2538: 47(int) CompositeExtract 2536 0 + 2539: 215 Load 217(s2DArray) + 2540: 148(fvec3) Load 150(c3) + 2541: 6(float) Load 371(lod) + 2542:1946(ResType) ImageSparseGather 2539 2540 1230 Lod ConstOffsets 2541 1329 + 2543: 7(fvec4) CompositeExtract 2542 1 + Store 2532(texel) 2543 + 2544: 47(int) CompositeExtract 2542 0 + 2545: 7(fvec4) Load 2532(texel) + ReturnValue 2545 FunctionEnd 96(testSparseImageLoad(): 7(fvec4) Function None 8 97: Label - 2610(texel): 63(ptr) Variable Function - Store 2610(texel) 120 - 2611: 1851 Load 1853(i2D) - 2612: 52(fvec2) Load 138(c2) - 2613: 451(ivec2) ConvertFToS 2612 - 2614:1991(ResType) ImageSparseRead 2611 2613 - 2615: 7(fvec4) CompositeExtract 2614 1 - Store 2610(texel) 2615 - 2616: 47(int) CompositeExtract 2614 0 - 2617: 1860 Load 1862(i3D) - 2618: 148(fvec3) Load 150(c3) - 2619: 458(ivec3) ConvertFToS 2618 - 2620:1991(ResType) ImageSparseRead 2617 2619 - 2621: 7(fvec4) CompositeExtract 2620 1 - Store 2610(texel) 2621 - 2622: 47(int) CompositeExtract 2620 0 - 2623: 1869 Load 1871(i2DRect) - 2624: 52(fvec2) Load 138(c2) - 2625: 451(ivec2) ConvertFToS 2624 - 2626:1991(ResType) ImageSparseRead 2623 2625 - 2627: 7(fvec4) CompositeExtract 2626 1 - Store 2610(texel) 2627 - 2628: 47(int) CompositeExtract 2626 0 - 2629: 1878 Load 1880(iCube) - 2630: 148(fvec3) Load 150(c3) - 2631: 458(ivec3) ConvertFToS 2630 - 2632:1991(ResType) ImageSparseRead 2629 2631 - 2633: 7(fvec4) CompositeExtract 2632 1 - Store 2610(texel) 2633 - 2634: 47(int) CompositeExtract 2632 0 - 2635: 1905 Load 1907(i2DArray) - 2636: 148(fvec3) Load 150(c3) - 2637: 458(ivec3) ConvertFToS 2636 - 2638:1991(ResType) ImageSparseRead 2635 2637 - 2639: 7(fvec4) CompositeExtract 2638 1 - Store 2610(texel) 2639 - 2640: 47(int) CompositeExtract 2638 0 - 2641: 1914 Load 1916(iCubeArray) - 2642: 148(fvec3) Load 150(c3) - 2643: 458(ivec3) ConvertFToS 2642 - 2644:1991(ResType) ImageSparseRead 2641 2643 - 2645: 7(fvec4) CompositeExtract 2644 1 - Store 2610(texel) 2645 - 2646: 47(int) CompositeExtract 2644 0 - 2647: 1923 Load 1925(i2DMS) - 2648: 52(fvec2) Load 138(c2) - 2649: 451(ivec2) ConvertFToS 2648 - 2650:1991(ResType) ImageSparseRead 2647 2649 Sample 445 - 2651: 7(fvec4) CompositeExtract 2650 1 - Store 2610(texel) 2651 - 2652: 47(int) CompositeExtract 2650 0 - 2653: 1932 Load 1934(i2DMSArray) - 2654: 148(fvec3) Load 150(c3) - 2655: 458(ivec3) ConvertFToS 2654 - 2656:1991(ResType) ImageSparseRead 2653 2655 Sample 799 - 2657: 7(fvec4) CompositeExtract 2656 1 - Store 2610(texel) 2657 - 2658: 47(int) CompositeExtract 2656 0 - 2659: 7(fvec4) Load 2610(texel) - ReturnValue 2659 + 2548(texel): 63(ptr) Variable Function + Store 2548(texel) 120 + 2549: 1806 Load 1808(i2D) + 2550: 52(fvec2) Load 138(c2) + 2551: 451(ivec2) ConvertFToS 2550 + 2552:1946(ResType) ImageSparseRead 2549 2551 + 2553: 7(fvec4) CompositeExtract 2552 1 + Store 2548(texel) 2553 + 2554: 47(int) CompositeExtract 2552 0 + 2555: 1815 Load 1817(i3D) + 2556: 148(fvec3) Load 150(c3) + 2557: 458(ivec3) ConvertFToS 2556 + 2558:1946(ResType) ImageSparseRead 2555 2557 + 2559: 7(fvec4) CompositeExtract 2558 1 + Store 2548(texel) 2559 + 2560: 47(int) CompositeExtract 2558 0 + 2561: 1824 Load 1826(i2DRect) + 2562: 52(fvec2) Load 138(c2) + 2563: 451(ivec2) ConvertFToS 2562 + 2564:1946(ResType) ImageSparseRead 2561 2563 + 2565: 7(fvec4) CompositeExtract 2564 1 + Store 2548(texel) 2565 + 2566: 47(int) CompositeExtract 2564 0 + 2567: 1833 Load 1835(iCube) + 2568: 148(fvec3) Load 150(c3) + 2569: 458(ivec3) ConvertFToS 2568 + 2570:1946(ResType) ImageSparseRead 2567 2569 + 2571: 7(fvec4) CompositeExtract 2570 1 + Store 2548(texel) 2571 + 2572: 47(int) CompositeExtract 2570 0 + 2573: 1860 Load 1862(i2DArray) + 2574: 148(fvec3) Load 150(c3) + 2575: 458(ivec3) ConvertFToS 2574 + 2576:1946(ResType) ImageSparseRead 2573 2575 + 2577: 7(fvec4) CompositeExtract 2576 1 + Store 2548(texel) 2577 + 2578: 47(int) CompositeExtract 2576 0 + 2579: 1869 Load 1871(iCubeArray) + 2580: 148(fvec3) Load 150(c3) + 2581: 458(ivec3) ConvertFToS 2580 + 2582:1946(ResType) ImageSparseRead 2579 2581 + 2583: 7(fvec4) CompositeExtract 2582 1 + Store 2548(texel) 2583 + 2584: 47(int) CompositeExtract 2582 0 + 2585: 1878 Load 1880(i2DMS) + 2586: 52(fvec2) Load 138(c2) + 2587: 451(ivec2) ConvertFToS 2586 + 2588:1946(ResType) ImageSparseRead 2585 2587 Sample 445 + 2589: 7(fvec4) CompositeExtract 2588 1 + Store 2548(texel) 2589 + 2590: 47(int) CompositeExtract 2588 0 + 2591: 1887 Load 1889(i2DMSArray) + 2592: 148(fvec3) Load 150(c3) + 2593: 458(ivec3) ConvertFToS 2592 + 2594:1946(ResType) ImageSparseRead 2591 2593 Sample 799 + 2595: 7(fvec4) CompositeExtract 2594 1 + Store 2548(texel) 2595 + 2596: 47(int) CompositeExtract 2594 0 + 2597: 7(fvec4) Load 2548(texel) + ReturnValue 2597 FunctionEnd 98(testSparseTextureClamp(): 7(fvec4) Function None 8 99: Label - 2662(texel): 63(ptr) Variable Function - Store 2662(texel) 120 - 2663: 133 Load 135(s2D) - 2664: 52(fvec2) Load 138(c2) - 2666: 6(float) Load 2665(lodClamp) - 2667:1991(ResType) ImageSparseSampleImplicitLod 2663 2664 MinLod 2666 - 2668: 7(fvec4) CompositeExtract 2667 1 - Store 2662(texel) 2668 - 2669: 47(int) CompositeExtract 2667 0 - 2670: 144 Load 146(s3D) - 2671: 148(fvec3) Load 150(c3) - 2672: 6(float) Load 2665(lodClamp) - 2673:1991(ResType) ImageSparseSampleImplicitLod 2670 2671 MinLod 2672 - 2674: 7(fvec4) CompositeExtract 2673 1 - Store 2662(texel) 2674 - 2675: 47(int) CompositeExtract 2673 0 - 2676: 156 Load 158(sCube) - 2677: 148(fvec3) Load 150(c3) - 2678: 6(float) Load 2665(lodClamp) - 2679:1991(ResType) ImageSparseSampleImplicitLod 2676 2677 MinLod 2678 - 2680: 7(fvec4) CompositeExtract 2679 1 - Store 2662(texel) 2680 - 2681: 47(int) CompositeExtract 2679 0 - 2682: 180 Load 182(s2DShadow) - 2683: 148(fvec3) Load 150(c3) - 2684: 6(float) Load 2665(lodClamp) - 2685: 174(ptr) AccessChain 2662(texel) 173 - 2686: 6(float) CompositeExtract 2683 2 - 2687:2009(ResType) ImageSparseSampleDrefImplicitLod 2682 2683 2686 MinLod 2684 - 2688: 6(float) CompositeExtract 2687 1 - Store 2685 2688 - 2689: 47(int) CompositeExtract 2687 0 - 2690: 192 Load 194(sCubeShadow) - 2691: 7(fvec4) Load 197(c4) - 2692: 6(float) Load 2665(lodClamp) - 2693: 174(ptr) AccessChain 2662(texel) 173 - 2694: 6(float) CompositeExtract 2691 3 - 2695:2009(ResType) ImageSparseSampleDrefImplicitLod 2690 2691 2694 MinLod 2692 - 2696: 6(float) CompositeExtract 2695 1 - Store 2693 2696 - 2697: 47(int) CompositeExtract 2695 0 - 2698: 215 Load 217(s2DArray) - 2699: 148(fvec3) Load 150(c3) - 2700: 6(float) Load 2665(lodClamp) - 2701:1991(ResType) ImageSparseSampleImplicitLod 2698 2699 MinLod 2700 - 2702: 7(fvec4) CompositeExtract 2701 1 - Store 2662(texel) 2702 - 2703: 47(int) CompositeExtract 2701 0 - 2704: 224 Load 226(sCubeArray) - 2705: 7(fvec4) Load 197(c4) - 2706: 6(float) Load 2665(lodClamp) - 2707:1991(ResType) ImageSparseSampleImplicitLod 2704 2705 MinLod 2706 - 2708: 7(fvec4) CompositeExtract 2707 1 - Store 2662(texel) 2708 - 2709: 47(int) CompositeExtract 2707 0 - 2710: 245 Load 247(s2DArrayShadow) - 2711: 7(fvec4) Load 197(c4) - 2712: 6(float) Load 2665(lodClamp) - 2713: 174(ptr) AccessChain 2662(texel) 173 - 2714: 6(float) CompositeExtract 2711 3 - 2715:2009(ResType) ImageSparseSampleDrefImplicitLod 2710 2711 2714 MinLod 2712 - 2716: 6(float) CompositeExtract 2715 1 - Store 2713 2716 - 2717: 47(int) CompositeExtract 2715 0 - 2718: 278 Load 280(sCubeArrayShadow) - 2719: 7(fvec4) Load 197(c4) - 2720: 6(float) Load 283(compare) - 2721: 6(float) Load 2665(lodClamp) - 2722: 174(ptr) AccessChain 2662(texel) 173 - 2723:2009(ResType) ImageSparseSampleDrefImplicitLod 2718 2719 2720 MinLod 2721 - 2724: 6(float) CompositeExtract 2723 1 - Store 2722 2724 - 2725: 47(int) CompositeExtract 2723 0 - 2726: 7(fvec4) Load 2662(texel) - ReturnValue 2726 + 2600(texel): 63(ptr) Variable Function + Store 2600(texel) 120 + 2601: 133 Load 135(s2D) + 2602: 52(fvec2) Load 138(c2) + 2604: 6(float) Load 2603(lodClamp) + 2605:1946(ResType) ImageSparseSampleImplicitLod 2601 2602 MinLod 2604 + 2606: 7(fvec4) CompositeExtract 2605 1 + Store 2600(texel) 2606 + 2607: 47(int) CompositeExtract 2605 0 + 2608: 144 Load 146(s3D) + 2609: 148(fvec3) Load 150(c3) + 2610: 6(float) Load 2603(lodClamp) + 2611:1946(ResType) ImageSparseSampleImplicitLod 2608 2609 MinLod 2610 + 2612: 7(fvec4) CompositeExtract 2611 1 + Store 2600(texel) 2612 + 2613: 47(int) CompositeExtract 2611 0 + 2614: 156 Load 158(sCube) + 2615: 148(fvec3) Load 150(c3) + 2616: 6(float) Load 2603(lodClamp) + 2617:1946(ResType) ImageSparseSampleImplicitLod 2614 2615 MinLod 2616 + 2618: 7(fvec4) CompositeExtract 2617 1 + Store 2600(texel) 2618 + 2619: 47(int) CompositeExtract 2617 0 + 2620: 180 Load 182(s2DShadow) + 2621: 148(fvec3) Load 150(c3) + 2622: 6(float) Load 2603(lodClamp) + 2623: 174(ptr) AccessChain 2600(texel) 173 + 2624: 6(float) CompositeExtract 2621 2 + 2625:1964(ResType) ImageSparseSampleDrefImplicitLod 2620 2621 2624 MinLod 2622 + 2626: 6(float) CompositeExtract 2625 1 + Store 2623 2626 + 2627: 47(int) CompositeExtract 2625 0 + 2628: 192 Load 194(sCubeShadow) + 2629: 7(fvec4) Load 197(c4) + 2630: 6(float) Load 2603(lodClamp) + 2631: 174(ptr) AccessChain 2600(texel) 173 + 2632: 6(float) CompositeExtract 2629 3 + 2633:1964(ResType) ImageSparseSampleDrefImplicitLod 2628 2629 2632 MinLod 2630 + 2634: 6(float) CompositeExtract 2633 1 + Store 2631 2634 + 2635: 47(int) CompositeExtract 2633 0 + 2636: 215 Load 217(s2DArray) + 2637: 148(fvec3) Load 150(c3) + 2638: 6(float) Load 2603(lodClamp) + 2639:1946(ResType) ImageSparseSampleImplicitLod 2636 2637 MinLod 2638 + 2640: 7(fvec4) CompositeExtract 2639 1 + Store 2600(texel) 2640 + 2641: 47(int) CompositeExtract 2639 0 + 2642: 224 Load 226(sCubeArray) + 2643: 7(fvec4) Load 197(c4) + 2644: 6(float) Load 2603(lodClamp) + 2645:1946(ResType) ImageSparseSampleImplicitLod 2642 2643 MinLod 2644 + 2646: 7(fvec4) CompositeExtract 2645 1 + Store 2600(texel) 2646 + 2647: 47(int) CompositeExtract 2645 0 + 2648: 245 Load 247(s2DArrayShadow) + 2649: 7(fvec4) Load 197(c4) + 2650: 6(float) Load 2603(lodClamp) + 2651: 174(ptr) AccessChain 2600(texel) 173 + 2652: 6(float) CompositeExtract 2649 3 + 2653:1964(ResType) ImageSparseSampleDrefImplicitLod 2648 2649 2652 MinLod 2650 + 2654: 6(float) CompositeExtract 2653 1 + Store 2651 2654 + 2655: 47(int) CompositeExtract 2653 0 + 2656: 278 Load 280(sCubeArrayShadow) + 2657: 7(fvec4) Load 197(c4) + 2658: 6(float) Load 283(compare) + 2659: 6(float) Load 2603(lodClamp) + 2660: 174(ptr) AccessChain 2600(texel) 173 + 2661:1964(ResType) ImageSparseSampleDrefImplicitLod 2656 2657 2658 MinLod 2659 + 2662: 6(float) CompositeExtract 2661 1 + Store 2660 2662 + 2663: 47(int) CompositeExtract 2661 0 + 2664: 7(fvec4) Load 2600(texel) + ReturnValue 2664 FunctionEnd 100(testTextureClamp(): 7(fvec4) Function None 8 101: Label - 2729(texel): 63(ptr) Variable Function - Store 2729(texel) 120 - 2730: 122 Load 124(s1D) - 2731: 6(float) Load 127(c1) - 2732: 6(float) Load 2665(lodClamp) - 2733: 7(fvec4) ImageSampleImplicitLod 2730 2731 MinLod 2732 - 2734: 7(fvec4) Load 2729(texel) - 2735: 7(fvec4) FAdd 2734 2733 - Store 2729(texel) 2735 - 2736: 133 Load 135(s2D) - 2737: 52(fvec2) Load 138(c2) - 2738: 6(float) Load 2665(lodClamp) - 2739: 7(fvec4) ImageSampleImplicitLod 2736 2737 MinLod 2738 - 2740: 7(fvec4) Load 2729(texel) - 2741: 7(fvec4) FAdd 2740 2739 - Store 2729(texel) 2741 - 2742: 144 Load 146(s3D) - 2743: 148(fvec3) Load 150(c3) - 2744: 6(float) Load 2665(lodClamp) - 2745: 7(fvec4) ImageSampleImplicitLod 2742 2743 MinLod 2744 - 2746: 7(fvec4) Load 2729(texel) - 2747: 7(fvec4) FAdd 2746 2745 - Store 2729(texel) 2747 - 2748: 156 Load 158(sCube) - 2749: 148(fvec3) Load 150(c3) - 2750: 6(float) Load 2665(lodClamp) - 2751: 7(fvec4) ImageSampleImplicitLod 2748 2749 MinLod 2750 - 2752: 7(fvec4) Load 2729(texel) - 2753: 7(fvec4) FAdd 2752 2751 - Store 2729(texel) 2753 - 2754: 165 Load 167(s1DShadow) - 2755: 148(fvec3) Load 150(c3) - 2756: 6(float) Load 2665(lodClamp) - 2757: 6(float) CompositeExtract 2755 2 - 2758: 6(float) ImageSampleDrefImplicitLod 2754 2755 2757 MinLod 2756 - 2759: 174(ptr) AccessChain 2729(texel) 173 - 2760: 6(float) Load 2759 - 2761: 6(float) FAdd 2760 2758 - 2762: 174(ptr) AccessChain 2729(texel) 173 - Store 2762 2761 - 2763: 180 Load 182(s2DShadow) - 2764: 148(fvec3) Load 150(c3) - 2765: 6(float) Load 2665(lodClamp) - 2766: 6(float) CompositeExtract 2764 2 - 2767: 6(float) ImageSampleDrefImplicitLod 2763 2764 2766 MinLod 2765 - 2768: 174(ptr) AccessChain 2729(texel) 173 - 2769: 6(float) Load 2768 - 2770: 6(float) FAdd 2769 2767 - 2771: 174(ptr) AccessChain 2729(texel) 173 - Store 2771 2770 - 2772: 192 Load 194(sCubeShadow) - 2773: 7(fvec4) Load 197(c4) - 2774: 6(float) Load 2665(lodClamp) - 2775: 6(float) CompositeExtract 2773 3 - 2776: 6(float) ImageSampleDrefImplicitLod 2772 2773 2775 MinLod 2774 - 2777: 174(ptr) AccessChain 2729(texel) 173 - 2778: 6(float) Load 2777 - 2779: 6(float) FAdd 2778 2776 - 2780: 174(ptr) AccessChain 2729(texel) 173 - Store 2780 2779 - 2781: 206 Load 208(s1DArray) - 2782: 52(fvec2) Load 138(c2) - 2783: 6(float) Load 2665(lodClamp) - 2784: 7(fvec4) ImageSampleImplicitLod 2781 2782 MinLod 2783 - 2785: 7(fvec4) Load 2729(texel) - 2786: 7(fvec4) FAdd 2785 2784 - Store 2729(texel) 2786 - 2787: 215 Load 217(s2DArray) - 2788: 148(fvec3) Load 150(c3) - 2789: 6(float) Load 2665(lodClamp) - 2790: 7(fvec4) ImageSampleImplicitLod 2787 2788 MinLod 2789 - 2791: 7(fvec4) Load 2729(texel) - 2792: 7(fvec4) FAdd 2791 2790 - Store 2729(texel) 2792 - 2793: 224 Load 226(sCubeArray) - 2794: 7(fvec4) Load 197(c4) - 2795: 6(float) Load 2665(lodClamp) - 2796: 7(fvec4) ImageSampleImplicitLod 2793 2794 MinLod 2795 - 2797: 7(fvec4) Load 2729(texel) - 2798: 7(fvec4) FAdd 2797 2796 - Store 2729(texel) 2798 - 2799: 233 Load 235(s1DArrayShadow) - 2800: 148(fvec3) Load 150(c3) - 2801: 6(float) Load 2665(lodClamp) - 2802: 6(float) CompositeExtract 2800 2 - 2803: 6(float) ImageSampleDrefImplicitLod 2799 2800 2802 MinLod 2801 - 2804: 174(ptr) AccessChain 2729(texel) 173 - 2805: 6(float) Load 2804 - 2806: 6(float) FAdd 2805 2803 - 2807: 174(ptr) AccessChain 2729(texel) 173 - Store 2807 2806 - 2808: 245 Load 247(s2DArrayShadow) - 2809: 7(fvec4) Load 197(c4) - 2810: 6(float) Load 2665(lodClamp) - 2811: 6(float) CompositeExtract 2809 3 - 2812: 6(float) ImageSampleDrefImplicitLod 2808 2809 2811 MinLod 2810 - 2813: 174(ptr) AccessChain 2729(texel) 173 - 2814: 6(float) Load 2813 - 2815: 6(float) FAdd 2814 2812 - 2816: 174(ptr) AccessChain 2729(texel) 173 - Store 2816 2815 - 2817: 278 Load 280(sCubeArrayShadow) - 2818: 7(fvec4) Load 197(c4) - 2819: 6(float) Load 283(compare) - 2820: 6(float) Load 2665(lodClamp) - 2821: 6(float) ImageSampleDrefImplicitLod 2817 2818 2819 MinLod 2820 - 2822: 174(ptr) AccessChain 2729(texel) 173 - 2823: 6(float) Load 2822 - 2824: 6(float) FAdd 2823 2821 - 2825: 174(ptr) AccessChain 2729(texel) 173 - Store 2825 2824 - 2826: 7(fvec4) Load 2729(texel) - ReturnValue 2826 + 2667(texel): 63(ptr) Variable Function + Store 2667(texel) 120 + 2668: 122 Load 124(s1D) + 2669: 6(float) Load 127(c1) + 2670: 6(float) Load 2603(lodClamp) + 2671: 7(fvec4) ImageSampleImplicitLod 2668 2669 MinLod 2670 + 2672: 7(fvec4) Load 2667(texel) + 2673: 7(fvec4) FAdd 2672 2671 + Store 2667(texel) 2673 + 2674: 133 Load 135(s2D) + 2675: 52(fvec2) Load 138(c2) + 2676: 6(float) Load 2603(lodClamp) + 2677: 7(fvec4) ImageSampleImplicitLod 2674 2675 MinLod 2676 + 2678: 7(fvec4) Load 2667(texel) + 2679: 7(fvec4) FAdd 2678 2677 + Store 2667(texel) 2679 + 2680: 144 Load 146(s3D) + 2681: 148(fvec3) Load 150(c3) + 2682: 6(float) Load 2603(lodClamp) + 2683: 7(fvec4) ImageSampleImplicitLod 2680 2681 MinLod 2682 + 2684: 7(fvec4) Load 2667(texel) + 2685: 7(fvec4) FAdd 2684 2683 + Store 2667(texel) 2685 + 2686: 156 Load 158(sCube) + 2687: 148(fvec3) Load 150(c3) + 2688: 6(float) Load 2603(lodClamp) + 2689: 7(fvec4) ImageSampleImplicitLod 2686 2687 MinLod 2688 + 2690: 7(fvec4) Load 2667(texel) + 2691: 7(fvec4) FAdd 2690 2689 + Store 2667(texel) 2691 + 2692: 165 Load 167(s1DShadow) + 2693: 148(fvec3) Load 150(c3) + 2694: 6(float) Load 2603(lodClamp) + 2695: 6(float) CompositeExtract 2693 2 + 2696: 6(float) ImageSampleDrefImplicitLod 2692 2693 2695 MinLod 2694 + 2697: 174(ptr) AccessChain 2667(texel) 173 + 2698: 6(float) Load 2697 + 2699: 6(float) FAdd 2698 2696 + 2700: 174(ptr) AccessChain 2667(texel) 173 + Store 2700 2699 + 2701: 180 Load 182(s2DShadow) + 2702: 148(fvec3) Load 150(c3) + 2703: 6(float) Load 2603(lodClamp) + 2704: 6(float) CompositeExtract 2702 2 + 2705: 6(float) ImageSampleDrefImplicitLod 2701 2702 2704 MinLod 2703 + 2706: 174(ptr) AccessChain 2667(texel) 173 + 2707: 6(float) Load 2706 + 2708: 6(float) FAdd 2707 2705 + 2709: 174(ptr) AccessChain 2667(texel) 173 + Store 2709 2708 + 2710: 192 Load 194(sCubeShadow) + 2711: 7(fvec4) Load 197(c4) + 2712: 6(float) Load 2603(lodClamp) + 2713: 6(float) CompositeExtract 2711 3 + 2714: 6(float) ImageSampleDrefImplicitLod 2710 2711 2713 MinLod 2712 + 2715: 174(ptr) AccessChain 2667(texel) 173 + 2716: 6(float) Load 2715 + 2717: 6(float) FAdd 2716 2714 + 2718: 174(ptr) AccessChain 2667(texel) 173 + Store 2718 2717 + 2719: 206 Load 208(s1DArray) + 2720: 52(fvec2) Load 138(c2) + 2721: 6(float) Load 2603(lodClamp) + 2722: 7(fvec4) ImageSampleImplicitLod 2719 2720 MinLod 2721 + 2723: 7(fvec4) Load 2667(texel) + 2724: 7(fvec4) FAdd 2723 2722 + Store 2667(texel) 2724 + 2725: 215 Load 217(s2DArray) + 2726: 148(fvec3) Load 150(c3) + 2727: 6(float) Load 2603(lodClamp) + 2728: 7(fvec4) ImageSampleImplicitLod 2725 2726 MinLod 2727 + 2729: 7(fvec4) Load 2667(texel) + 2730: 7(fvec4) FAdd 2729 2728 + Store 2667(texel) 2730 + 2731: 224 Load 226(sCubeArray) + 2732: 7(fvec4) Load 197(c4) + 2733: 6(float) Load 2603(lodClamp) + 2734: 7(fvec4) ImageSampleImplicitLod 2731 2732 MinLod 2733 + 2735: 7(fvec4) Load 2667(texel) + 2736: 7(fvec4) FAdd 2735 2734 + Store 2667(texel) 2736 + 2737: 233 Load 235(s1DArrayShadow) + 2738: 148(fvec3) Load 150(c3) + 2739: 6(float) Load 2603(lodClamp) + 2740: 6(float) CompositeExtract 2738 2 + 2741: 6(float) ImageSampleDrefImplicitLod 2737 2738 2740 MinLod 2739 + 2742: 174(ptr) AccessChain 2667(texel) 173 + 2743: 6(float) Load 2742 + 2744: 6(float) FAdd 2743 2741 + 2745: 174(ptr) AccessChain 2667(texel) 173 + Store 2745 2744 + 2746: 245 Load 247(s2DArrayShadow) + 2747: 7(fvec4) Load 197(c4) + 2748: 6(float) Load 2603(lodClamp) + 2749: 6(float) CompositeExtract 2747 3 + 2750: 6(float) ImageSampleDrefImplicitLod 2746 2747 2749 MinLod 2748 + 2751: 174(ptr) AccessChain 2667(texel) 173 + 2752: 6(float) Load 2751 + 2753: 6(float) FAdd 2752 2750 + 2754: 174(ptr) AccessChain 2667(texel) 173 + Store 2754 2753 + 2755: 278 Load 280(sCubeArrayShadow) + 2756: 7(fvec4) Load 197(c4) + 2757: 6(float) Load 283(compare) + 2758: 6(float) Load 2603(lodClamp) + 2759: 6(float) ImageSampleDrefImplicitLod 2755 2756 2757 MinLod 2758 + 2760: 174(ptr) AccessChain 2667(texel) 173 + 2761: 6(float) Load 2760 + 2762: 6(float) FAdd 2761 2759 + 2763: 174(ptr) AccessChain 2667(texel) 173 + Store 2763 2762 + 2764: 7(fvec4) Load 2667(texel) + ReturnValue 2764 FunctionEnd 102(testSparseTextureOffsetClamp(): 7(fvec4) Function None 8 103: Label - 2829(texel): 63(ptr) Variable Function - Store 2829(texel) 120 - 2830: 133 Load 135(s2D) - 2831: 52(fvec2) Load 138(c2) - 2832: 6(float) Load 2665(lodClamp) - 2833:1991(ResType) ImageSparseSampleImplicitLod 2830 2831 ConstOffset MinLod 452 2832 - 2834: 7(fvec4) CompositeExtract 2833 1 - Store 2829(texel) 2834 - 2835: 47(int) CompositeExtract 2833 0 - 2836: 144 Load 146(s3D) - 2837: 148(fvec3) Load 150(c3) - 2838: 6(float) Load 2665(lodClamp) - 2839:1991(ResType) ImageSparseSampleImplicitLod 2836 2837 ConstOffset MinLod 459 2838 - 2840: 7(fvec4) CompositeExtract 2839 1 - Store 2829(texel) 2840 - 2841: 47(int) CompositeExtract 2839 0 - 2842: 180 Load 182(s2DShadow) - 2843: 148(fvec3) Load 150(c3) - 2844: 6(float) Load 2665(lodClamp) - 2845: 174(ptr) AccessChain 2829(texel) 173 - 2846: 6(float) CompositeExtract 2843 2 - 2847:2009(ResType) ImageSparseSampleDrefImplicitLod 2842 2843 2846 ConstOffset MinLod 452 2844 - 2848: 6(float) CompositeExtract 2847 1 - Store 2845 2848 - 2849: 47(int) CompositeExtract 2847 0 - 2850: 215 Load 217(s2DArray) - 2851: 148(fvec3) Load 150(c3) - 2852: 6(float) Load 2665(lodClamp) - 2853:1991(ResType) ImageSparseSampleImplicitLod 2850 2851 ConstOffset MinLod 452 2852 - 2854: 7(fvec4) CompositeExtract 2853 1 - Store 2829(texel) 2854 - 2855: 47(int) CompositeExtract 2853 0 - 2856: 245 Load 247(s2DArrayShadow) - 2857: 7(fvec4) Load 197(c4) - 2858: 6(float) Load 2665(lodClamp) - 2859: 174(ptr) AccessChain 2829(texel) 173 - 2860: 6(float) CompositeExtract 2857 3 - 2861:2009(ResType) ImageSparseSampleDrefImplicitLod 2856 2857 2860 ConstOffset MinLod 452 2858 - 2862: 6(float) CompositeExtract 2861 1 - Store 2859 2862 - 2863: 47(int) CompositeExtract 2861 0 - 2864: 7(fvec4) Load 2829(texel) - ReturnValue 2864 + 2767(texel): 63(ptr) Variable Function + Store 2767(texel) 120 + 2768: 133 Load 135(s2D) + 2769: 52(fvec2) Load 138(c2) + 2770: 6(float) Load 2603(lodClamp) + 2771:1946(ResType) ImageSparseSampleImplicitLod 2768 2769 ConstOffset MinLod 452 2770 + 2772: 7(fvec4) CompositeExtract 2771 1 + Store 2767(texel) 2772 + 2773: 47(int) CompositeExtract 2771 0 + 2774: 144 Load 146(s3D) + 2775: 148(fvec3) Load 150(c3) + 2776: 6(float) Load 2603(lodClamp) + 2777:1946(ResType) ImageSparseSampleImplicitLod 2774 2775 ConstOffset MinLod 459 2776 + 2778: 7(fvec4) CompositeExtract 2777 1 + Store 2767(texel) 2778 + 2779: 47(int) CompositeExtract 2777 0 + 2780: 180 Load 182(s2DShadow) + 2781: 148(fvec3) Load 150(c3) + 2782: 6(float) Load 2603(lodClamp) + 2783: 174(ptr) AccessChain 2767(texel) 173 + 2784: 6(float) CompositeExtract 2781 2 + 2785:1964(ResType) ImageSparseSampleDrefImplicitLod 2780 2781 2784 ConstOffset MinLod 452 2782 + 2786: 6(float) CompositeExtract 2785 1 + Store 2783 2786 + 2787: 47(int) CompositeExtract 2785 0 + 2788: 215 Load 217(s2DArray) + 2789: 148(fvec3) Load 150(c3) + 2790: 6(float) Load 2603(lodClamp) + 2791:1946(ResType) ImageSparseSampleImplicitLod 2788 2789 ConstOffset MinLod 452 2790 + 2792: 7(fvec4) CompositeExtract 2791 1 + Store 2767(texel) 2792 + 2793: 47(int) CompositeExtract 2791 0 + 2794: 245 Load 247(s2DArrayShadow) + 2795: 7(fvec4) Load 197(c4) + 2796: 6(float) Load 2603(lodClamp) + 2797: 174(ptr) AccessChain 2767(texel) 173 + 2798: 6(float) CompositeExtract 2795 3 + 2799:1964(ResType) ImageSparseSampleDrefImplicitLod 2794 2795 2798 ConstOffset MinLod 452 2796 + 2800: 6(float) CompositeExtract 2799 1 + Store 2797 2800 + 2801: 47(int) CompositeExtract 2799 0 + 2802: 7(fvec4) Load 2767(texel) + ReturnValue 2802 FunctionEnd 104(testTextureOffsetClamp(): 7(fvec4) Function None 8 105: Label - 2867(texel): 63(ptr) Variable Function - Store 2867(texel) 120 - 2868: 122 Load 124(s1D) - 2869: 6(float) Load 127(c1) - 2870: 6(float) Load 2665(lodClamp) - 2871: 7(fvec4) ImageSampleImplicitLod 2868 2869 ConstOffset MinLod 445 2870 - 2872: 7(fvec4) Load 2867(texel) - 2873: 7(fvec4) FAdd 2872 2871 - Store 2867(texel) 2873 - 2874: 133 Load 135(s2D) - 2875: 52(fvec2) Load 138(c2) - 2876: 6(float) Load 2665(lodClamp) - 2877: 7(fvec4) ImageSampleImplicitLod 2874 2875 ConstOffset MinLod 452 2876 - 2878: 7(fvec4) Load 2867(texel) - 2879: 7(fvec4) FAdd 2878 2877 - Store 2867(texel) 2879 - 2880: 144 Load 146(s3D) - 2881: 148(fvec3) Load 150(c3) - 2882: 6(float) Load 2665(lodClamp) - 2883: 7(fvec4) ImageSampleImplicitLod 2880 2881 ConstOffset MinLod 459 2882 - 2884: 7(fvec4) Load 2867(texel) - 2885: 7(fvec4) FAdd 2884 2883 - Store 2867(texel) 2885 - 2886: 165 Load 167(s1DShadow) - 2887: 148(fvec3) Load 150(c3) - 2888: 6(float) Load 2665(lodClamp) - 2889: 6(float) CompositeExtract 2887 2 - 2890: 6(float) ImageSampleDrefImplicitLod 2886 2887 2889 ConstOffset MinLod 445 2888 - 2891: 174(ptr) AccessChain 2867(texel) 173 - 2892: 6(float) Load 2891 - 2893: 6(float) FAdd 2892 2890 - 2894: 174(ptr) AccessChain 2867(texel) 173 - Store 2894 2893 - 2895: 180 Load 182(s2DShadow) - 2896: 148(fvec3) Load 150(c3) - 2897: 6(float) Load 2665(lodClamp) - 2898: 6(float) CompositeExtract 2896 2 - 2899: 6(float) ImageSampleDrefImplicitLod 2895 2896 2898 ConstOffset MinLod 452 2897 - 2900: 174(ptr) AccessChain 2867(texel) 173 - 2901: 6(float) Load 2900 - 2902: 6(float) FAdd 2901 2899 - 2903: 174(ptr) AccessChain 2867(texel) 173 - Store 2903 2902 - 2904: 206 Load 208(s1DArray) - 2905: 52(fvec2) Load 138(c2) - 2906: 6(float) Load 2665(lodClamp) - 2907: 7(fvec4) ImageSampleImplicitLod 2904 2905 ConstOffset MinLod 445 2906 - 2908: 7(fvec4) Load 2867(texel) - 2909: 7(fvec4) FAdd 2908 2907 - Store 2867(texel) 2909 - 2910: 215 Load 217(s2DArray) - 2911: 148(fvec3) Load 150(c3) - 2912: 6(float) Load 2665(lodClamp) - 2913: 7(fvec4) ImageSampleImplicitLod 2910 2911 ConstOffset MinLod 452 2912 - 2914: 7(fvec4) Load 2867(texel) - 2915: 7(fvec4) FAdd 2914 2913 - Store 2867(texel) 2915 - 2916: 233 Load 235(s1DArrayShadow) - 2917: 148(fvec3) Load 150(c3) - 2918: 6(float) Load 2665(lodClamp) - 2919: 6(float) CompositeExtract 2917 2 - 2920: 6(float) ImageSampleDrefImplicitLod 2916 2917 2919 ConstOffset MinLod 445 2918 - 2921: 174(ptr) AccessChain 2867(texel) 173 - 2922: 6(float) Load 2921 - 2923: 6(float) FAdd 2922 2920 - 2924: 174(ptr) AccessChain 2867(texel) 173 - Store 2924 2923 - 2925: 245 Load 247(s2DArrayShadow) - 2926: 7(fvec4) Load 197(c4) - 2927: 6(float) Load 2665(lodClamp) - 2928: 6(float) CompositeExtract 2926 3 - 2929: 6(float) ImageSampleDrefImplicitLod 2925 2926 2928 ConstOffset MinLod 452 2927 - 2930: 174(ptr) AccessChain 2867(texel) 173 - 2931: 6(float) Load 2930 - 2932: 6(float) FAdd 2931 2929 - 2933: 174(ptr) AccessChain 2867(texel) 173 - Store 2933 2932 - 2934: 7(fvec4) Load 2867(texel) - ReturnValue 2934 + 2805(texel): 63(ptr) Variable Function + Store 2805(texel) 120 + 2806: 122 Load 124(s1D) + 2807: 6(float) Load 127(c1) + 2808: 6(float) Load 2603(lodClamp) + 2809: 7(fvec4) ImageSampleImplicitLod 2806 2807 ConstOffset MinLod 445 2808 + 2810: 7(fvec4) Load 2805(texel) + 2811: 7(fvec4) FAdd 2810 2809 + Store 2805(texel) 2811 + 2812: 133 Load 135(s2D) + 2813: 52(fvec2) Load 138(c2) + 2814: 6(float) Load 2603(lodClamp) + 2815: 7(fvec4) ImageSampleImplicitLod 2812 2813 ConstOffset MinLod 452 2814 + 2816: 7(fvec4) Load 2805(texel) + 2817: 7(fvec4) FAdd 2816 2815 + Store 2805(texel) 2817 + 2818: 144 Load 146(s3D) + 2819: 148(fvec3) Load 150(c3) + 2820: 6(float) Load 2603(lodClamp) + 2821: 7(fvec4) ImageSampleImplicitLod 2818 2819 ConstOffset MinLod 459 2820 + 2822: 7(fvec4) Load 2805(texel) + 2823: 7(fvec4) FAdd 2822 2821 + Store 2805(texel) 2823 + 2824: 165 Load 167(s1DShadow) + 2825: 148(fvec3) Load 150(c3) + 2826: 6(float) Load 2603(lodClamp) + 2827: 6(float) CompositeExtract 2825 2 + 2828: 6(float) ImageSampleDrefImplicitLod 2824 2825 2827 ConstOffset MinLod 445 2826 + 2829: 174(ptr) AccessChain 2805(texel) 173 + 2830: 6(float) Load 2829 + 2831: 6(float) FAdd 2830 2828 + 2832: 174(ptr) AccessChain 2805(texel) 173 + Store 2832 2831 + 2833: 180 Load 182(s2DShadow) + 2834: 148(fvec3) Load 150(c3) + 2835: 6(float) Load 2603(lodClamp) + 2836: 6(float) CompositeExtract 2834 2 + 2837: 6(float) ImageSampleDrefImplicitLod 2833 2834 2836 ConstOffset MinLod 452 2835 + 2838: 174(ptr) AccessChain 2805(texel) 173 + 2839: 6(float) Load 2838 + 2840: 6(float) FAdd 2839 2837 + 2841: 174(ptr) AccessChain 2805(texel) 173 + Store 2841 2840 + 2842: 206 Load 208(s1DArray) + 2843: 52(fvec2) Load 138(c2) + 2844: 6(float) Load 2603(lodClamp) + 2845: 7(fvec4) ImageSampleImplicitLod 2842 2843 ConstOffset MinLod 445 2844 + 2846: 7(fvec4) Load 2805(texel) + 2847: 7(fvec4) FAdd 2846 2845 + Store 2805(texel) 2847 + 2848: 215 Load 217(s2DArray) + 2849: 148(fvec3) Load 150(c3) + 2850: 6(float) Load 2603(lodClamp) + 2851: 7(fvec4) ImageSampleImplicitLod 2848 2849 ConstOffset MinLod 452 2850 + 2852: 7(fvec4) Load 2805(texel) + 2853: 7(fvec4) FAdd 2852 2851 + Store 2805(texel) 2853 + 2854: 233 Load 235(s1DArrayShadow) + 2855: 148(fvec3) Load 150(c3) + 2856: 6(float) Load 2603(lodClamp) + 2857: 6(float) CompositeExtract 2855 2 + 2858: 6(float) ImageSampleDrefImplicitLod 2854 2855 2857 ConstOffset MinLod 445 2856 + 2859: 174(ptr) AccessChain 2805(texel) 173 + 2860: 6(float) Load 2859 + 2861: 6(float) FAdd 2860 2858 + 2862: 174(ptr) AccessChain 2805(texel) 173 + Store 2862 2861 + 2863: 245 Load 247(s2DArrayShadow) + 2864: 7(fvec4) Load 197(c4) + 2865: 6(float) Load 2603(lodClamp) + 2866: 6(float) CompositeExtract 2864 3 + 2867: 6(float) ImageSampleDrefImplicitLod 2863 2864 2866 ConstOffset MinLod 452 2865 + 2868: 174(ptr) AccessChain 2805(texel) 173 + 2869: 6(float) Load 2868 + 2870: 6(float) FAdd 2869 2867 + 2871: 174(ptr) AccessChain 2805(texel) 173 + Store 2871 2870 + 2872: 7(fvec4) Load 2805(texel) + ReturnValue 2872 FunctionEnd 106(testSparseTextureGradClamp(): 7(fvec4) Function None 8 107: Label - 2937(texel): 63(ptr) Variable Function - Store 2937(texel) 120 - 2938: 133 Load 135(s2D) - 2939: 52(fvec2) Load 138(c2) - 2940: 52(fvec2) Load 874(dPdxy2) - 2941: 52(fvec2) Load 874(dPdxy2) - 2942: 6(float) Load 2665(lodClamp) - 2943:1991(ResType) ImageSparseSampleExplicitLod 2938 2939 Grad MinLod 2940 2941 2942 - 2944: 7(fvec4) CompositeExtract 2943 1 - Store 2937(texel) 2944 - 2945: 47(int) CompositeExtract 2943 0 - 2946: 144 Load 146(s3D) - 2947: 148(fvec3) Load 150(c3) - 2948: 148(fvec3) Load 882(dPdxy3) - 2949: 148(fvec3) Load 882(dPdxy3) - 2950: 6(float) Load 2665(lodClamp) - 2951:1991(ResType) ImageSparseSampleExplicitLod 2946 2947 Grad MinLod 2948 2949 2950 - 2952: 7(fvec4) CompositeExtract 2951 1 - Store 2937(texel) 2952 - 2953: 47(int) CompositeExtract 2951 0 - 2954: 156 Load 158(sCube) - 2955: 148(fvec3) Load 150(c3) - 2956: 148(fvec3) Load 882(dPdxy3) - 2957: 148(fvec3) Load 882(dPdxy3) - 2958: 6(float) Load 2665(lodClamp) - 2959:1991(ResType) ImageSparseSampleExplicitLod 2954 2955 Grad MinLod 2956 2957 2958 - 2960: 7(fvec4) CompositeExtract 2959 1 - Store 2937(texel) 2960 - 2961: 47(int) CompositeExtract 2959 0 - 2962: 180 Load 182(s2DShadow) - 2963: 148(fvec3) Load 150(c3) - 2964: 52(fvec2) Load 874(dPdxy2) - 2965: 52(fvec2) Load 874(dPdxy2) - 2966: 6(float) Load 2665(lodClamp) - 2967: 174(ptr) AccessChain 2937(texel) 173 - 2968: 6(float) CompositeExtract 2963 2 - 2969:2009(ResType) ImageSparseSampleDrefExplicitLod 2962 2963 2968 Grad MinLod 2964 2965 2966 - 2970: 6(float) CompositeExtract 2969 1 - Store 2967 2970 - 2971: 47(int) CompositeExtract 2969 0 - 2972: 192 Load 194(sCubeShadow) - 2973: 7(fvec4) Load 197(c4) - 2974: 148(fvec3) Load 882(dPdxy3) - 2975: 148(fvec3) Load 882(dPdxy3) - 2976: 6(float) Load 2665(lodClamp) - 2977: 174(ptr) AccessChain 2937(texel) 173 - 2978: 6(float) CompositeExtract 2973 3 - 2979:2009(ResType) ImageSparseSampleDrefExplicitLod 2972 2973 2978 Grad MinLod 2974 2975 2976 - 2980: 6(float) CompositeExtract 2979 1 - Store 2977 2980 - 2981: 47(int) CompositeExtract 2979 0 - 2982: 215 Load 217(s2DArray) - 2983: 148(fvec3) Load 150(c3) - 2984: 52(fvec2) Load 874(dPdxy2) - 2985: 52(fvec2) Load 874(dPdxy2) - 2986: 6(float) Load 2665(lodClamp) - 2987:1991(ResType) ImageSparseSampleExplicitLod 2982 2983 Grad MinLod 2984 2985 2986 - 2988: 7(fvec4) CompositeExtract 2987 1 - Store 2937(texel) 2988 - 2989: 47(int) CompositeExtract 2987 0 - 2990: 245 Load 247(s2DArrayShadow) - 2991: 7(fvec4) Load 197(c4) - 2992: 52(fvec2) Load 874(dPdxy2) - 2993: 52(fvec2) Load 874(dPdxy2) - 2994: 6(float) Load 2665(lodClamp) - 2995: 174(ptr) AccessChain 2937(texel) 173 - 2996: 6(float) CompositeExtract 2991 3 - 2997:2009(ResType) ImageSparseSampleDrefExplicitLod 2990 2991 2996 Grad MinLod 2992 2993 2994 - 2998: 6(float) CompositeExtract 2997 1 - Store 2995 2998 - 2999: 47(int) CompositeExtract 2997 0 - 3000: 224 Load 226(sCubeArray) - 3001: 7(fvec4) Load 197(c4) - 3002: 148(fvec3) Load 882(dPdxy3) - 3003: 148(fvec3) Load 882(dPdxy3) - 3004: 6(float) Load 2665(lodClamp) - 3005:1991(ResType) ImageSparseSampleExplicitLod 3000 3001 Grad MinLod 3002 3003 3004 - 3006: 7(fvec4) CompositeExtract 3005 1 - Store 2937(texel) 3006 - 3007: 47(int) CompositeExtract 3005 0 - 3008: 7(fvec4) Load 2937(texel) - ReturnValue 3008 + 2875(texel): 63(ptr) Variable Function + Store 2875(texel) 120 + 2876: 133 Load 135(s2D) + 2877: 52(fvec2) Load 138(c2) + 2878: 52(fvec2) Load 873(dPdxy2) + 2879: 6(float) Load 2603(lodClamp) + 2880:1946(ResType) ImageSparseSampleExplicitLod 2876 2877 Grad MinLod 2878 2878 2879 + 2881: 7(fvec4) CompositeExtract 2880 1 + Store 2875(texel) 2881 + 2882: 47(int) CompositeExtract 2880 0 + 2883: 144 Load 146(s3D) + 2884: 148(fvec3) Load 150(c3) + 2885: 148(fvec3) Load 880(dPdxy3) + 2886: 6(float) Load 2603(lodClamp) + 2887:1946(ResType) ImageSparseSampleExplicitLod 2883 2884 Grad MinLod 2885 2885 2886 + 2888: 7(fvec4) CompositeExtract 2887 1 + Store 2875(texel) 2888 + 2889: 47(int) CompositeExtract 2887 0 + 2890: 156 Load 158(sCube) + 2891: 148(fvec3) Load 150(c3) + 2892: 148(fvec3) Load 880(dPdxy3) + 2893: 6(float) Load 2603(lodClamp) + 2894:1946(ResType) ImageSparseSampleExplicitLod 2890 2891 Grad MinLod 2892 2892 2893 + 2895: 7(fvec4) CompositeExtract 2894 1 + Store 2875(texel) 2895 + 2896: 47(int) CompositeExtract 2894 0 + 2897: 180 Load 182(s2DShadow) + 2898: 148(fvec3) Load 150(c3) + 2899: 52(fvec2) Load 873(dPdxy2) + 2900: 6(float) Load 2603(lodClamp) + 2901: 174(ptr) AccessChain 2875(texel) 173 + 2902: 6(float) CompositeExtract 2898 2 + 2903:1964(ResType) ImageSparseSampleDrefExplicitLod 2897 2898 2902 Grad MinLod 2899 2899 2900 + 2904: 6(float) CompositeExtract 2903 1 + Store 2901 2904 + 2905: 47(int) CompositeExtract 2903 0 + 2906: 192 Load 194(sCubeShadow) + 2907: 7(fvec4) Load 197(c4) + 2908: 148(fvec3) Load 880(dPdxy3) + 2909: 6(float) Load 2603(lodClamp) + 2910: 174(ptr) AccessChain 2875(texel) 173 + 2911: 6(float) CompositeExtract 2907 3 + 2912:1964(ResType) ImageSparseSampleDrefExplicitLod 2906 2907 2911 Grad MinLod 2908 2908 2909 + 2913: 6(float) CompositeExtract 2912 1 + Store 2910 2913 + 2914: 47(int) CompositeExtract 2912 0 + 2915: 215 Load 217(s2DArray) + 2916: 148(fvec3) Load 150(c3) + 2917: 52(fvec2) Load 873(dPdxy2) + 2918: 6(float) Load 2603(lodClamp) + 2919:1946(ResType) ImageSparseSampleExplicitLod 2915 2916 Grad MinLod 2917 2917 2918 + 2920: 7(fvec4) CompositeExtract 2919 1 + Store 2875(texel) 2920 + 2921: 47(int) CompositeExtract 2919 0 + 2922: 245 Load 247(s2DArrayShadow) + 2923: 7(fvec4) Load 197(c4) + 2924: 52(fvec2) Load 873(dPdxy2) + 2925: 6(float) Load 2603(lodClamp) + 2926: 174(ptr) AccessChain 2875(texel) 173 + 2927: 6(float) CompositeExtract 2923 3 + 2928:1964(ResType) ImageSparseSampleDrefExplicitLod 2922 2923 2927 Grad MinLod 2924 2924 2925 + 2929: 6(float) CompositeExtract 2928 1 + Store 2926 2929 + 2930: 47(int) CompositeExtract 2928 0 + 2931: 224 Load 226(sCubeArray) + 2932: 7(fvec4) Load 197(c4) + 2933: 148(fvec3) Load 880(dPdxy3) + 2934: 6(float) Load 2603(lodClamp) + 2935:1946(ResType) ImageSparseSampleExplicitLod 2931 2932 Grad MinLod 2933 2933 2934 + 2936: 7(fvec4) CompositeExtract 2935 1 + Store 2875(texel) 2936 + 2937: 47(int) CompositeExtract 2935 0 + 2938: 7(fvec4) Load 2875(texel) + ReturnValue 2938 FunctionEnd 108(testTextureGradClamp(): 7(fvec4) Function None 8 109: Label - 3011(texel): 63(ptr) Variable Function - Store 3011(texel) 120 - 3012: 122 Load 124(s1D) - 3013: 6(float) Load 127(c1) - 3014: 6(float) Load 866(dPdxy1) - 3015: 6(float) Load 866(dPdxy1) - 3016: 6(float) Load 2665(lodClamp) - 3017: 7(fvec4) ImageSampleExplicitLod 3012 3013 Grad MinLod 3014 3015 3016 - 3018: 7(fvec4) Load 3011(texel) - 3019: 7(fvec4) FAdd 3018 3017 - Store 3011(texel) 3019 - 3020: 133 Load 135(s2D) - 3021: 52(fvec2) Load 138(c2) - 3022: 52(fvec2) Load 874(dPdxy2) - 3023: 52(fvec2) Load 874(dPdxy2) - 3024: 6(float) Load 2665(lodClamp) - 3025: 7(fvec4) ImageSampleExplicitLod 3020 3021 Grad MinLod 3022 3023 3024 - 3026: 7(fvec4) Load 3011(texel) - 3027: 7(fvec4) FAdd 3026 3025 - Store 3011(texel) 3027 - 3028: 144 Load 146(s3D) - 3029: 148(fvec3) Load 150(c3) - 3030: 148(fvec3) Load 882(dPdxy3) - 3031: 148(fvec3) Load 882(dPdxy3) - 3032: 6(float) Load 2665(lodClamp) - 3033: 7(fvec4) ImageSampleExplicitLod 3028 3029 Grad MinLod 3030 3031 3032 - 3034: 7(fvec4) Load 3011(texel) - 3035: 7(fvec4) FAdd 3034 3033 - Store 3011(texel) 3035 - 3036: 156 Load 158(sCube) - 3037: 148(fvec3) Load 150(c3) - 3038: 148(fvec3) Load 882(dPdxy3) - 3039: 148(fvec3) Load 882(dPdxy3) - 3040: 6(float) Load 2665(lodClamp) - 3041: 7(fvec4) ImageSampleExplicitLod 3036 3037 Grad MinLod 3038 3039 3040 - 3042: 7(fvec4) Load 3011(texel) - 3043: 7(fvec4) FAdd 3042 3041 - Store 3011(texel) 3043 - 3044: 165 Load 167(s1DShadow) - 3045: 148(fvec3) Load 150(c3) - 3046: 6(float) Load 866(dPdxy1) - 3047: 6(float) Load 866(dPdxy1) - 3048: 6(float) Load 2665(lodClamp) - 3049: 6(float) CompositeExtract 3045 2 - 3050: 6(float) ImageSampleDrefExplicitLod 3044 3045 3049 Grad MinLod 3046 3047 3048 - 3051: 174(ptr) AccessChain 3011(texel) 173 - 3052: 6(float) Load 3051 - 3053: 6(float) FAdd 3052 3050 - 3054: 174(ptr) AccessChain 3011(texel) 173 - Store 3054 3053 - 3055: 180 Load 182(s2DShadow) - 3056: 148(fvec3) Load 150(c3) - 3057: 52(fvec2) Load 874(dPdxy2) - 3058: 52(fvec2) Load 874(dPdxy2) - 3059: 6(float) Load 2665(lodClamp) - 3060: 6(float) CompositeExtract 3056 2 - 3061: 6(float) ImageSampleDrefExplicitLod 3055 3056 3060 Grad MinLod 3057 3058 3059 - 3062: 174(ptr) AccessChain 3011(texel) 173 - 3063: 6(float) Load 3062 - 3064: 6(float) FAdd 3063 3061 - 3065: 174(ptr) AccessChain 3011(texel) 173 - Store 3065 3064 - 3066: 192 Load 194(sCubeShadow) - 3067: 7(fvec4) Load 197(c4) - 3068: 148(fvec3) Load 882(dPdxy3) - 3069: 148(fvec3) Load 882(dPdxy3) - 3070: 6(float) Load 2665(lodClamp) - 3071: 6(float) CompositeExtract 3067 3 - 3072: 6(float) ImageSampleDrefExplicitLod 3066 3067 3071 Grad MinLod 3068 3069 3070 - 3073: 174(ptr) AccessChain 3011(texel) 173 - 3074: 6(float) Load 3073 - 3075: 6(float) FAdd 3074 3072 - 3076: 174(ptr) AccessChain 3011(texel) 173 - Store 3076 3075 - 3077: 206 Load 208(s1DArray) - 3078: 52(fvec2) Load 138(c2) - 3079: 6(float) Load 866(dPdxy1) - 3080: 6(float) Load 866(dPdxy1) - 3081: 6(float) Load 2665(lodClamp) - 3082: 7(fvec4) ImageSampleExplicitLod 3077 3078 Grad MinLod 3079 3080 3081 - 3083: 7(fvec4) Load 3011(texel) - 3084: 7(fvec4) FAdd 3083 3082 - Store 3011(texel) 3084 - 3085: 215 Load 217(s2DArray) - 3086: 148(fvec3) Load 150(c3) - 3087: 52(fvec2) Load 874(dPdxy2) - 3088: 52(fvec2) Load 874(dPdxy2) - 3089: 6(float) Load 2665(lodClamp) - 3090: 7(fvec4) ImageSampleExplicitLod 3085 3086 Grad MinLod 3087 3088 3089 - 3091: 7(fvec4) Load 3011(texel) - 3092: 7(fvec4) FAdd 3091 3090 - Store 3011(texel) 3092 - 3093: 233 Load 235(s1DArrayShadow) - 3094: 148(fvec3) Load 150(c3) - 3095: 6(float) Load 866(dPdxy1) - 3096: 6(float) Load 866(dPdxy1) - 3097: 6(float) Load 2665(lodClamp) - 3098: 6(float) CompositeExtract 3094 2 - 3099: 6(float) ImageSampleDrefExplicitLod 3093 3094 3098 Grad MinLod 3095 3096 3097 - 3100: 174(ptr) AccessChain 3011(texel) 173 - 3101: 6(float) Load 3100 - 3102: 6(float) FAdd 3101 3099 - 3103: 174(ptr) AccessChain 3011(texel) 173 - Store 3103 3102 - 3104: 245 Load 247(s2DArrayShadow) - 3105: 7(fvec4) Load 197(c4) - 3106: 52(fvec2) Load 874(dPdxy2) - 3107: 52(fvec2) Load 874(dPdxy2) - 3108: 6(float) Load 2665(lodClamp) - 3109: 6(float) CompositeExtract 3105 3 - 3110: 6(float) ImageSampleDrefExplicitLod 3104 3105 3109 Grad MinLod 3106 3107 3108 - 3111: 174(ptr) AccessChain 3011(texel) 173 - 3112: 6(float) Load 3111 - 3113: 6(float) FAdd 3112 3110 - 3114: 174(ptr) AccessChain 3011(texel) 173 - Store 3114 3113 - 3115: 224 Load 226(sCubeArray) - 3116: 7(fvec4) Load 197(c4) - 3117: 148(fvec3) Load 882(dPdxy3) - 3118: 148(fvec3) Load 882(dPdxy3) - 3119: 6(float) Load 2665(lodClamp) - 3120: 7(fvec4) ImageSampleExplicitLod 3115 3116 Grad MinLod 3117 3118 3119 - 3121: 7(fvec4) Load 3011(texel) - 3122: 7(fvec4) FAdd 3121 3120 - Store 3011(texel) 3122 - 3123: 7(fvec4) Load 3011(texel) - ReturnValue 3123 + 2941(texel): 63(ptr) Variable Function + Store 2941(texel) 120 + 2942: 122 Load 124(s1D) + 2943: 6(float) Load 127(c1) + 2944: 6(float) Load 866(dPdxy1) + 2945: 6(float) Load 2603(lodClamp) + 2946: 7(fvec4) ImageSampleExplicitLod 2942 2943 Grad MinLod 2944 2944 2945 + 2947: 7(fvec4) Load 2941(texel) + 2948: 7(fvec4) FAdd 2947 2946 + Store 2941(texel) 2948 + 2949: 133 Load 135(s2D) + 2950: 52(fvec2) Load 138(c2) + 2951: 52(fvec2) Load 873(dPdxy2) + 2952: 6(float) Load 2603(lodClamp) + 2953: 7(fvec4) ImageSampleExplicitLod 2949 2950 Grad MinLod 2951 2951 2952 + 2954: 7(fvec4) Load 2941(texel) + 2955: 7(fvec4) FAdd 2954 2953 + Store 2941(texel) 2955 + 2956: 144 Load 146(s3D) + 2957: 148(fvec3) Load 150(c3) + 2958: 148(fvec3) Load 880(dPdxy3) + 2959: 6(float) Load 2603(lodClamp) + 2960: 7(fvec4) ImageSampleExplicitLod 2956 2957 Grad MinLod 2958 2958 2959 + 2961: 7(fvec4) Load 2941(texel) + 2962: 7(fvec4) FAdd 2961 2960 + Store 2941(texel) 2962 + 2963: 156 Load 158(sCube) + 2964: 148(fvec3) Load 150(c3) + 2965: 148(fvec3) Load 880(dPdxy3) + 2966: 6(float) Load 2603(lodClamp) + 2967: 7(fvec4) ImageSampleExplicitLod 2963 2964 Grad MinLod 2965 2965 2966 + 2968: 7(fvec4) Load 2941(texel) + 2969: 7(fvec4) FAdd 2968 2967 + Store 2941(texel) 2969 + 2970: 165 Load 167(s1DShadow) + 2971: 148(fvec3) Load 150(c3) + 2972: 6(float) Load 866(dPdxy1) + 2973: 6(float) Load 2603(lodClamp) + 2974: 6(float) CompositeExtract 2971 2 + 2975: 6(float) ImageSampleDrefExplicitLod 2970 2971 2974 Grad MinLod 2972 2972 2973 + 2976: 174(ptr) AccessChain 2941(texel) 173 + 2977: 6(float) Load 2976 + 2978: 6(float) FAdd 2977 2975 + 2979: 174(ptr) AccessChain 2941(texel) 173 + Store 2979 2978 + 2980: 180 Load 182(s2DShadow) + 2981: 148(fvec3) Load 150(c3) + 2982: 52(fvec2) Load 873(dPdxy2) + 2983: 6(float) Load 2603(lodClamp) + 2984: 6(float) CompositeExtract 2981 2 + 2985: 6(float) ImageSampleDrefExplicitLod 2980 2981 2984 Grad MinLod 2982 2982 2983 + 2986: 174(ptr) AccessChain 2941(texel) 173 + 2987: 6(float) Load 2986 + 2988: 6(float) FAdd 2987 2985 + 2989: 174(ptr) AccessChain 2941(texel) 173 + Store 2989 2988 + 2990: 192 Load 194(sCubeShadow) + 2991: 7(fvec4) Load 197(c4) + 2992: 148(fvec3) Load 880(dPdxy3) + 2993: 6(float) Load 2603(lodClamp) + 2994: 6(float) CompositeExtract 2991 3 + 2995: 6(float) ImageSampleDrefExplicitLod 2990 2991 2994 Grad MinLod 2992 2992 2993 + 2996: 174(ptr) AccessChain 2941(texel) 173 + 2997: 6(float) Load 2996 + 2998: 6(float) FAdd 2997 2995 + 2999: 174(ptr) AccessChain 2941(texel) 173 + Store 2999 2998 + 3000: 206 Load 208(s1DArray) + 3001: 52(fvec2) Load 138(c2) + 3002: 6(float) Load 866(dPdxy1) + 3003: 6(float) Load 2603(lodClamp) + 3004: 7(fvec4) ImageSampleExplicitLod 3000 3001 Grad MinLod 3002 3002 3003 + 3005: 7(fvec4) Load 2941(texel) + 3006: 7(fvec4) FAdd 3005 3004 + Store 2941(texel) 3006 + 3007: 215 Load 217(s2DArray) + 3008: 148(fvec3) Load 150(c3) + 3009: 52(fvec2) Load 873(dPdxy2) + 3010: 6(float) Load 2603(lodClamp) + 3011: 7(fvec4) ImageSampleExplicitLod 3007 3008 Grad MinLod 3009 3009 3010 + 3012: 7(fvec4) Load 2941(texel) + 3013: 7(fvec4) FAdd 3012 3011 + Store 2941(texel) 3013 + 3014: 233 Load 235(s1DArrayShadow) + 3015: 148(fvec3) Load 150(c3) + 3016: 6(float) Load 866(dPdxy1) + 3017: 6(float) Load 2603(lodClamp) + 3018: 6(float) CompositeExtract 3015 2 + 3019: 6(float) ImageSampleDrefExplicitLod 3014 3015 3018 Grad MinLod 3016 3016 3017 + 3020: 174(ptr) AccessChain 2941(texel) 173 + 3021: 6(float) Load 3020 + 3022: 6(float) FAdd 3021 3019 + 3023: 174(ptr) AccessChain 2941(texel) 173 + Store 3023 3022 + 3024: 245 Load 247(s2DArrayShadow) + 3025: 7(fvec4) Load 197(c4) + 3026: 52(fvec2) Load 873(dPdxy2) + 3027: 6(float) Load 2603(lodClamp) + 3028: 6(float) CompositeExtract 3025 3 + 3029: 6(float) ImageSampleDrefExplicitLod 3024 3025 3028 Grad MinLod 3026 3026 3027 + 3030: 174(ptr) AccessChain 2941(texel) 173 + 3031: 6(float) Load 3030 + 3032: 6(float) FAdd 3031 3029 + 3033: 174(ptr) AccessChain 2941(texel) 173 + Store 3033 3032 + 3034: 224 Load 226(sCubeArray) + 3035: 7(fvec4) Load 197(c4) + 3036: 148(fvec3) Load 880(dPdxy3) + 3037: 6(float) Load 2603(lodClamp) + 3038: 7(fvec4) ImageSampleExplicitLod 3034 3035 Grad MinLod 3036 3036 3037 + 3039: 7(fvec4) Load 2941(texel) + 3040: 7(fvec4) FAdd 3039 3038 + Store 2941(texel) 3040 + 3041: 7(fvec4) Load 2941(texel) + ReturnValue 3041 FunctionEnd 110(testSparseTextureGradOffsetClamp(): 7(fvec4) Function None 8 111: Label - 3126(texel): 63(ptr) Variable Function - Store 3126(texel) 120 - 3127: 133 Load 135(s2D) - 3128: 52(fvec2) Load 138(c2) - 3129: 52(fvec2) Load 874(dPdxy2) - 3130: 52(fvec2) Load 874(dPdxy2) - 3131: 6(float) Load 2665(lodClamp) - 3132:1991(ResType) ImageSparseSampleExplicitLod 3127 3128 Grad ConstOffset MinLod 3129 3130 452 3131 - 3133: 7(fvec4) CompositeExtract 3132 1 - Store 3126(texel) 3133 - 3134: 47(int) CompositeExtract 3132 0 - 3135: 144 Load 146(s3D) - 3136: 148(fvec3) Load 150(c3) - 3137: 148(fvec3) Load 882(dPdxy3) - 3138: 148(fvec3) Load 882(dPdxy3) - 3139: 6(float) Load 2665(lodClamp) - 3140:1991(ResType) ImageSparseSampleExplicitLod 3135 3136 Grad ConstOffset MinLod 3137 3138 459 3139 - 3141: 7(fvec4) CompositeExtract 3140 1 - Store 3126(texel) 3141 - 3142: 47(int) CompositeExtract 3140 0 - 3143: 180 Load 182(s2DShadow) - 3144: 148(fvec3) Load 150(c3) - 3145: 52(fvec2) Load 874(dPdxy2) - 3146: 52(fvec2) Load 874(dPdxy2) - 3147: 6(float) Load 2665(lodClamp) - 3148: 174(ptr) AccessChain 3126(texel) 173 - 3149: 6(float) CompositeExtract 3144 2 - 3150:2009(ResType) ImageSparseSampleDrefExplicitLod 3143 3144 3149 Grad ConstOffset MinLod 3145 3146 452 3147 - 3151: 6(float) CompositeExtract 3150 1 - Store 3148 3151 - 3152: 47(int) CompositeExtract 3150 0 - 3153: 215 Load 217(s2DArray) - 3154: 148(fvec3) Load 150(c3) - 3155: 52(fvec2) Load 874(dPdxy2) - 3156: 52(fvec2) Load 874(dPdxy2) - 3157: 6(float) Load 2665(lodClamp) - 3158:1991(ResType) ImageSparseSampleExplicitLod 3153 3154 Grad ConstOffset MinLod 3155 3156 452 3157 - 3159: 7(fvec4) CompositeExtract 3158 1 - Store 3126(texel) 3159 - 3160: 47(int) CompositeExtract 3158 0 - 3161: 245 Load 247(s2DArrayShadow) - 3162: 7(fvec4) Load 197(c4) - 3163: 52(fvec2) Load 874(dPdxy2) - 3164: 52(fvec2) Load 874(dPdxy2) - 3165: 6(float) Load 2665(lodClamp) - 3166: 174(ptr) AccessChain 3126(texel) 173 - 3167: 6(float) CompositeExtract 3162 3 - 3168:2009(ResType) ImageSparseSampleDrefExplicitLod 3161 3162 3167 Grad ConstOffset MinLod 3163 3164 452 3165 - 3169: 6(float) CompositeExtract 3168 1 - Store 3166 3169 - 3170: 47(int) CompositeExtract 3168 0 - 3171: 7(fvec4) Load 3126(texel) - ReturnValue 3171 + 3044(texel): 63(ptr) Variable Function + Store 3044(texel) 120 + 3045: 133 Load 135(s2D) + 3046: 52(fvec2) Load 138(c2) + 3047: 52(fvec2) Load 873(dPdxy2) + 3048: 6(float) Load 2603(lodClamp) + 3049:1946(ResType) ImageSparseSampleExplicitLod 3045 3046 Grad ConstOffset MinLod 3047 3047 452 3048 + 3050: 7(fvec4) CompositeExtract 3049 1 + Store 3044(texel) 3050 + 3051: 47(int) CompositeExtract 3049 0 + 3052: 144 Load 146(s3D) + 3053: 148(fvec3) Load 150(c3) + 3054: 148(fvec3) Load 880(dPdxy3) + 3055: 6(float) Load 2603(lodClamp) + 3056:1946(ResType) ImageSparseSampleExplicitLod 3052 3053 Grad ConstOffset MinLod 3054 3054 459 3055 + 3057: 7(fvec4) CompositeExtract 3056 1 + Store 3044(texel) 3057 + 3058: 47(int) CompositeExtract 3056 0 + 3059: 180 Load 182(s2DShadow) + 3060: 148(fvec3) Load 150(c3) + 3061: 52(fvec2) Load 873(dPdxy2) + 3062: 6(float) Load 2603(lodClamp) + 3063: 174(ptr) AccessChain 3044(texel) 173 + 3064: 6(float) CompositeExtract 3060 2 + 3065:1964(ResType) ImageSparseSampleDrefExplicitLod 3059 3060 3064 Grad ConstOffset MinLod 3061 3061 452 3062 + 3066: 6(float) CompositeExtract 3065 1 + Store 3063 3066 + 3067: 47(int) CompositeExtract 3065 0 + 3068: 215 Load 217(s2DArray) + 3069: 148(fvec3) Load 150(c3) + 3070: 52(fvec2) Load 873(dPdxy2) + 3071: 6(float) Load 2603(lodClamp) + 3072:1946(ResType) ImageSparseSampleExplicitLod 3068 3069 Grad ConstOffset MinLod 3070 3070 452 3071 + 3073: 7(fvec4) CompositeExtract 3072 1 + Store 3044(texel) 3073 + 3074: 47(int) CompositeExtract 3072 0 + 3075: 245 Load 247(s2DArrayShadow) + 3076: 7(fvec4) Load 197(c4) + 3077: 52(fvec2) Load 873(dPdxy2) + 3078: 6(float) Load 2603(lodClamp) + 3079: 174(ptr) AccessChain 3044(texel) 173 + 3080: 6(float) CompositeExtract 3076 3 + 3081:1964(ResType) ImageSparseSampleDrefExplicitLod 3075 3076 3080 Grad ConstOffset MinLod 3077 3077 452 3078 + 3082: 6(float) CompositeExtract 3081 1 + Store 3079 3082 + 3083: 47(int) CompositeExtract 3081 0 + 3084: 7(fvec4) Load 3044(texel) + ReturnValue 3084 FunctionEnd 112(testTextureGradOffsetClamp(): 7(fvec4) Function None 8 113: Label - 3174(texel): 63(ptr) Variable Function - Store 3174(texel) 120 - 3175: 122 Load 124(s1D) - 3176: 6(float) Load 127(c1) - 3177: 6(float) Load 866(dPdxy1) - 3178: 6(float) Load 866(dPdxy1) - 3179: 6(float) Load 2665(lodClamp) - 3180: 7(fvec4) ImageSampleExplicitLod 3175 3176 Grad ConstOffset MinLod 3177 3178 445 3179 - 3181: 7(fvec4) Load 3174(texel) - 3182: 7(fvec4) FAdd 3181 3180 - Store 3174(texel) 3182 - 3183: 133 Load 135(s2D) - 3184: 52(fvec2) Load 138(c2) - 3185: 52(fvec2) Load 874(dPdxy2) - 3186: 52(fvec2) Load 874(dPdxy2) - 3187: 6(float) Load 2665(lodClamp) - 3188: 7(fvec4) ImageSampleExplicitLod 3183 3184 Grad ConstOffset MinLod 3185 3186 452 3187 - 3189: 7(fvec4) Load 3174(texel) - 3190: 7(fvec4) FAdd 3189 3188 - Store 3174(texel) 3190 - 3191: 144 Load 146(s3D) - 3192: 148(fvec3) Load 150(c3) - 3193: 148(fvec3) Load 882(dPdxy3) - 3194: 148(fvec3) Load 882(dPdxy3) - 3195: 6(float) Load 2665(lodClamp) - 3196: 7(fvec4) ImageSampleExplicitLod 3191 3192 Grad ConstOffset MinLod 3193 3194 459 3195 - 3197: 7(fvec4) Load 3174(texel) - 3198: 7(fvec4) FAdd 3197 3196 - Store 3174(texel) 3198 - 3199: 165 Load 167(s1DShadow) - 3200: 148(fvec3) Load 150(c3) - 3201: 6(float) Load 866(dPdxy1) - 3202: 6(float) Load 866(dPdxy1) - 3203: 6(float) Load 2665(lodClamp) - 3204: 6(float) CompositeExtract 3200 2 - 3205: 6(float) ImageSampleDrefExplicitLod 3199 3200 3204 Grad ConstOffset MinLod 3201 3202 445 3203 - 3206: 174(ptr) AccessChain 3174(texel) 173 - 3207: 6(float) Load 3206 - 3208: 6(float) FAdd 3207 3205 - 3209: 174(ptr) AccessChain 3174(texel) 173 - Store 3209 3208 - 3210: 180 Load 182(s2DShadow) - 3211: 148(fvec3) Load 150(c3) - 3212: 52(fvec2) Load 874(dPdxy2) - 3213: 52(fvec2) Load 874(dPdxy2) - 3214: 6(float) Load 2665(lodClamp) - 3215: 6(float) CompositeExtract 3211 2 - 3216: 6(float) ImageSampleDrefExplicitLod 3210 3211 3215 Grad ConstOffset MinLod 3212 3213 452 3214 - 3217: 174(ptr) AccessChain 3174(texel) 173 - 3218: 6(float) Load 3217 - 3219: 6(float) FAdd 3218 3216 - 3220: 174(ptr) AccessChain 3174(texel) 173 - Store 3220 3219 - 3221: 206 Load 208(s1DArray) - 3222: 52(fvec2) Load 138(c2) - 3223: 6(float) Load 866(dPdxy1) - 3224: 6(float) Load 866(dPdxy1) - 3225: 6(float) Load 2665(lodClamp) - 3226: 7(fvec4) ImageSampleExplicitLod 3221 3222 Grad ConstOffset MinLod 3223 3224 445 3225 - 3227: 7(fvec4) Load 3174(texel) - 3228: 7(fvec4) FAdd 3227 3226 - Store 3174(texel) 3228 - 3229: 215 Load 217(s2DArray) - 3230: 148(fvec3) Load 150(c3) - 3231: 52(fvec2) Load 874(dPdxy2) - 3232: 52(fvec2) Load 874(dPdxy2) - 3233: 6(float) Load 2665(lodClamp) - 3234: 7(fvec4) ImageSampleExplicitLod 3229 3230 Grad ConstOffset MinLod 3231 3232 452 3233 - 3235: 7(fvec4) Load 3174(texel) - 3236: 7(fvec4) FAdd 3235 3234 - Store 3174(texel) 3236 - 3237: 233 Load 235(s1DArrayShadow) - 3238: 148(fvec3) Load 150(c3) - 3239: 6(float) Load 866(dPdxy1) - 3240: 6(float) Load 866(dPdxy1) - 3241: 6(float) Load 2665(lodClamp) - 3242: 6(float) CompositeExtract 3238 2 - 3243: 6(float) ImageSampleDrefExplicitLod 3237 3238 3242 Grad ConstOffset MinLod 3239 3240 445 3241 - 3244: 174(ptr) AccessChain 3174(texel) 173 - 3245: 6(float) Load 3244 - 3246: 6(float) FAdd 3245 3243 - 3247: 174(ptr) AccessChain 3174(texel) 173 - Store 3247 3246 - 3248: 245 Load 247(s2DArrayShadow) - 3249: 7(fvec4) Load 197(c4) - 3250: 52(fvec2) Load 874(dPdxy2) - 3251: 52(fvec2) Load 874(dPdxy2) - 3252: 6(float) Load 2665(lodClamp) - 3253: 6(float) CompositeExtract 3249 3 - 3254: 6(float) ImageSampleDrefExplicitLod 3248 3249 3253 Grad ConstOffset MinLod 3250 3251 452 3252 - 3255: 174(ptr) AccessChain 3174(texel) 173 - 3256: 6(float) Load 3255 - 3257: 6(float) FAdd 3256 3254 - 3258: 174(ptr) AccessChain 3174(texel) 173 - Store 3258 3257 - 3259: 7(fvec4) Load 3174(texel) - ReturnValue 3259 + 3087(texel): 63(ptr) Variable Function + Store 3087(texel) 120 + 3088: 122 Load 124(s1D) + 3089: 6(float) Load 127(c1) + 3090: 6(float) Load 866(dPdxy1) + 3091: 6(float) Load 2603(lodClamp) + 3092: 7(fvec4) ImageSampleExplicitLod 3088 3089 Grad ConstOffset MinLod 3090 3090 445 3091 + 3093: 7(fvec4) Load 3087(texel) + 3094: 7(fvec4) FAdd 3093 3092 + Store 3087(texel) 3094 + 3095: 133 Load 135(s2D) + 3096: 52(fvec2) Load 138(c2) + 3097: 52(fvec2) Load 873(dPdxy2) + 3098: 6(float) Load 2603(lodClamp) + 3099: 7(fvec4) ImageSampleExplicitLod 3095 3096 Grad ConstOffset MinLod 3097 3097 452 3098 + 3100: 7(fvec4) Load 3087(texel) + 3101: 7(fvec4) FAdd 3100 3099 + Store 3087(texel) 3101 + 3102: 144 Load 146(s3D) + 3103: 148(fvec3) Load 150(c3) + 3104: 148(fvec3) Load 880(dPdxy3) + 3105: 6(float) Load 2603(lodClamp) + 3106: 7(fvec4) ImageSampleExplicitLod 3102 3103 Grad ConstOffset MinLod 3104 3104 459 3105 + 3107: 7(fvec4) Load 3087(texel) + 3108: 7(fvec4) FAdd 3107 3106 + Store 3087(texel) 3108 + 3109: 165 Load 167(s1DShadow) + 3110: 148(fvec3) Load 150(c3) + 3111: 6(float) Load 866(dPdxy1) + 3112: 6(float) Load 2603(lodClamp) + 3113: 6(float) CompositeExtract 3110 2 + 3114: 6(float) ImageSampleDrefExplicitLod 3109 3110 3113 Grad ConstOffset MinLod 3111 3111 445 3112 + 3115: 174(ptr) AccessChain 3087(texel) 173 + 3116: 6(float) Load 3115 + 3117: 6(float) FAdd 3116 3114 + 3118: 174(ptr) AccessChain 3087(texel) 173 + Store 3118 3117 + 3119: 180 Load 182(s2DShadow) + 3120: 148(fvec3) Load 150(c3) + 3121: 52(fvec2) Load 873(dPdxy2) + 3122: 6(float) Load 2603(lodClamp) + 3123: 6(float) CompositeExtract 3120 2 + 3124: 6(float) ImageSampleDrefExplicitLod 3119 3120 3123 Grad ConstOffset MinLod 3121 3121 452 3122 + 3125: 174(ptr) AccessChain 3087(texel) 173 + 3126: 6(float) Load 3125 + 3127: 6(float) FAdd 3126 3124 + 3128: 174(ptr) AccessChain 3087(texel) 173 + Store 3128 3127 + 3129: 206 Load 208(s1DArray) + 3130: 52(fvec2) Load 138(c2) + 3131: 6(float) Load 866(dPdxy1) + 3132: 6(float) Load 2603(lodClamp) + 3133: 7(fvec4) ImageSampleExplicitLod 3129 3130 Grad ConstOffset MinLod 3131 3131 445 3132 + 3134: 7(fvec4) Load 3087(texel) + 3135: 7(fvec4) FAdd 3134 3133 + Store 3087(texel) 3135 + 3136: 215 Load 217(s2DArray) + 3137: 148(fvec3) Load 150(c3) + 3138: 52(fvec2) Load 873(dPdxy2) + 3139: 6(float) Load 2603(lodClamp) + 3140: 7(fvec4) ImageSampleExplicitLod 3136 3137 Grad ConstOffset MinLod 3138 3138 452 3139 + 3141: 7(fvec4) Load 3087(texel) + 3142: 7(fvec4) FAdd 3141 3140 + Store 3087(texel) 3142 + 3143: 233 Load 235(s1DArrayShadow) + 3144: 148(fvec3) Load 150(c3) + 3145: 6(float) Load 866(dPdxy1) + 3146: 6(float) Load 2603(lodClamp) + 3147: 6(float) CompositeExtract 3144 2 + 3148: 6(float) ImageSampleDrefExplicitLod 3143 3144 3147 Grad ConstOffset MinLod 3145 3145 445 3146 + 3149: 174(ptr) AccessChain 3087(texel) 173 + 3150: 6(float) Load 3149 + 3151: 6(float) FAdd 3150 3148 + 3152: 174(ptr) AccessChain 3087(texel) 173 + Store 3152 3151 + 3153: 245 Load 247(s2DArrayShadow) + 3154: 7(fvec4) Load 197(c4) + 3155: 52(fvec2) Load 873(dPdxy2) + 3156: 6(float) Load 2603(lodClamp) + 3157: 6(float) CompositeExtract 3154 3 + 3158: 6(float) ImageSampleDrefExplicitLod 3153 3154 3157 Grad ConstOffset MinLod 3155 3155 452 3156 + 3159: 174(ptr) AccessChain 3087(texel) 173 + 3160: 6(float) Load 3159 + 3161: 6(float) FAdd 3160 3158 + 3162: 174(ptr) AccessChain 3087(texel) 173 + Store 3162 3161 + 3163: 7(fvec4) Load 3087(texel) + ReturnValue 3163 FunctionEnd 114(testCombinedTextureSampler(): 7(fvec4) Function None 8 115: Label - 3262(texel): 63(ptr) Variable Function - Store 3262(texel) 120 - 3265: 121 Load 3264(t1D) - 3269: 3266 Load 3268(s) - 3270: 122 SampledImage 3265 3269 - 3271: 6(float) Load 127(c1) - 3272: 7(fvec4) ImageSampleImplicitLod 3270 3271 - 3273: 7(fvec4) Load 3262(texel) - 3274: 7(fvec4) FAdd 3273 3272 - Store 3262(texel) 3274 - 3277: 132 Load 3276(t2D) - 3278: 3266 Load 3268(s) - 3279: 133 SampledImage 3277 3278 - 3280: 52(fvec2) Load 138(c2) - 3281: 7(fvec4) ImageSampleImplicitLod 3279 3280 - 3282: 7(fvec4) Load 3262(texel) - 3283: 7(fvec4) FAdd 3282 3281 - Store 3262(texel) 3283 - 3286: 143 Load 3285(t3D) - 3287: 3266 Load 3268(s) - 3288: 144 SampledImage 3286 3287 - 3289: 148(fvec3) Load 150(c3) + 3166(texel): 63(ptr) Variable Function + Store 3166(texel) 120 + 3169: 121 Load 3168(t1D) + 3173: 3170 Load 3172(s) + 3174: 122 SampledImage 3169 3173 + 3175: 6(float) Load 127(c1) + 3176: 7(fvec4) ImageSampleImplicitLod 3174 3175 + 3177: 7(fvec4) Load 3166(texel) + 3178: 7(fvec4) FAdd 3177 3176 + Store 3166(texel) 3178 + 3181: 132 Load 3180(t2D) + 3182: 3170 Load 3172(s) + 3183: 133 SampledImage 3181 3182 + 3184: 52(fvec2) Load 138(c2) + 3185: 7(fvec4) ImageSampleImplicitLod 3183 3184 + 3186: 7(fvec4) Load 3166(texel) + 3187: 7(fvec4) FAdd 3186 3185 + Store 3166(texel) 3187 + 3190: 143 Load 3189(t3D) + 3191: 3170 Load 3172(s) + 3192: 144 SampledImage 3190 3191 + 3193: 148(fvec3) Load 150(c3) + 3194: 7(fvec4) ImageSampleImplicitLod 3192 3193 + 3195: 7(fvec4) Load 3166(texel) + 3196: 7(fvec4) FAdd 3195 3194 + Store 3166(texel) 3196 + 3199: 155 Load 3198(tCube) + 3200: 3170 Load 3172(s) + 3201: 156 SampledImage 3199 3200 + 3202: 148(fvec3) Load 150(c3) + 3203: 7(fvec4) ImageSampleImplicitLod 3201 3202 + 3204: 7(fvec4) Load 3166(texel) + 3205: 7(fvec4) FAdd 3204 3203 + Store 3166(texel) 3205 + 3206: 121 Load 3168(t1D) + 3208: 3170 Load 3207(sShadow) + 3209: 165 SampledImage 3206 3208 + 3210: 148(fvec3) Load 150(c3) + 3211: 6(float) CompositeExtract 3210 2 + 3212: 6(float) ImageSampleDrefImplicitLod 3209 3210 3211 + 3213: 174(ptr) AccessChain 3166(texel) 173 + 3214: 6(float) Load 3213 + 3215: 6(float) FAdd 3214 3212 + 3216: 174(ptr) AccessChain 3166(texel) 173 + Store 3216 3215 + 3217: 132 Load 3180(t2D) + 3218: 3170 Load 3207(sShadow) + 3219: 180 SampledImage 3217 3218 + 3220: 148(fvec3) Load 150(c3) + 3221: 6(float) CompositeExtract 3220 2 + 3222: 6(float) ImageSampleDrefImplicitLod 3219 3220 3221 + 3223: 174(ptr) AccessChain 3166(texel) 173 + 3224: 6(float) Load 3223 + 3225: 6(float) FAdd 3224 3222 + 3226: 174(ptr) AccessChain 3166(texel) 173 + Store 3226 3225 + 3227: 155 Load 3198(tCube) + 3228: 3170 Load 3207(sShadow) + 3229: 192 SampledImage 3227 3228 + 3230: 7(fvec4) Load 197(c4) + 3231: 6(float) CompositeExtract 3230 3 + 3232: 6(float) ImageSampleDrefImplicitLod 3229 3230 3231 + 3233: 174(ptr) AccessChain 3166(texel) 173 + 3234: 6(float) Load 3233 + 3235: 6(float) FAdd 3234 3232 + 3236: 174(ptr) AccessChain 3166(texel) 173 + Store 3236 3235 + 3239: 205 Load 3238(t1DArray) + 3240: 3170 Load 3172(s) + 3241: 206 SampledImage 3239 3240 + 3242: 52(fvec2) Load 138(c2) + 3243: 7(fvec4) ImageSampleImplicitLod 3241 3242 + 3244: 7(fvec4) Load 3166(texel) + 3245: 7(fvec4) FAdd 3244 3243 + Store 3166(texel) 3245 + 3248: 214 Load 3247(t2DArray) + 3249: 3170 Load 3172(s) + 3250: 215 SampledImage 3248 3249 + 3251: 148(fvec3) Load 150(c3) + 3252: 7(fvec4) ImageSampleImplicitLod 3250 3251 + 3253: 7(fvec4) Load 3166(texel) + 3254: 7(fvec4) FAdd 3253 3252 + Store 3166(texel) 3254 + 3257: 223 Load 3256(tCubeArray) + 3258: 3170 Load 3172(s) + 3259: 224 SampledImage 3257 3258 + 3260: 7(fvec4) Load 197(c4) + 3261: 7(fvec4) ImageSampleImplicitLod 3259 3260 + 3262: 7(fvec4) Load 3166(texel) + 3263: 7(fvec4) FAdd 3262 3261 + Store 3166(texel) 3263 + 3264: 205 Load 3238(t1DArray) + 3265: 3170 Load 3207(sShadow) + 3266: 233 SampledImage 3264 3265 + 3267: 148(fvec3) Load 150(c3) + 3268: 6(float) CompositeExtract 3267 2 + 3269: 6(float) ImageSampleDrefImplicitLod 3266 3267 3268 + 3270: 174(ptr) AccessChain 3166(texel) 173 + 3271: 6(float) Load 3270 + 3272: 6(float) FAdd 3271 3269 + 3273: 174(ptr) AccessChain 3166(texel) 173 + Store 3273 3272 + 3274: 214 Load 3247(t2DArray) + 3275: 3170 Load 3207(sShadow) + 3276: 245 SampledImage 3274 3275 + 3277: 7(fvec4) Load 197(c4) + 3278: 6(float) CompositeExtract 3277 3 + 3279: 6(float) ImageSampleDrefImplicitLod 3276 3277 3278 + 3280: 174(ptr) AccessChain 3166(texel) 173 + 3281: 6(float) Load 3280 + 3282: 6(float) FAdd 3281 3279 + 3283: 174(ptr) AccessChain 3166(texel) 173 + Store 3283 3282 + 3286: 256 Load 3285(t2DRect) + 3287: 3170 Load 3172(s) + 3288: 257 SampledImage 3286 3287 + 3289: 52(fvec2) Load 138(c2) 3290: 7(fvec4) ImageSampleImplicitLod 3288 3289 - 3291: 7(fvec4) Load 3262(texel) + 3291: 7(fvec4) Load 3166(texel) 3292: 7(fvec4) FAdd 3291 3290 - Store 3262(texel) 3292 - 3295: 155 Load 3294(tCube) - 3296: 3266 Load 3268(s) - 3297: 156 SampledImage 3295 3296 - 3298: 148(fvec3) Load 150(c3) - 3299: 7(fvec4) ImageSampleImplicitLod 3297 3298 - 3300: 7(fvec4) Load 3262(texel) - 3301: 7(fvec4) FAdd 3300 3299 - Store 3262(texel) 3301 - 3302: 121 Load 3264(t1D) - 3304: 3266 Load 3303(sShadow) - 3305: 165 SampledImage 3302 3304 - 3306: 148(fvec3) Load 150(c3) - 3307: 6(float) CompositeExtract 3306 2 + Store 3166(texel) 3292 + 3293: 256 Load 3285(t2DRect) + 3294: 3170 Load 3207(sShadow) + 3295: 266 SampledImage 3293 3294 + 3296: 148(fvec3) Load 150(c3) + 3297: 6(float) CompositeExtract 3296 2 + 3298: 6(float) ImageSampleDrefImplicitLod 3295 3296 3297 + 3299: 174(ptr) AccessChain 3166(texel) 173 + 3300: 6(float) Load 3299 + 3301: 6(float) FAdd 3300 3298 + 3302: 174(ptr) AccessChain 3166(texel) 173 + Store 3302 3301 + 3303: 223 Load 3256(tCubeArray) + 3304: 3170 Load 3207(sShadow) + 3305: 278 SampledImage 3303 3304 + 3306: 7(fvec4) Load 197(c4) + 3307: 6(float) Load 283(compare) 3308: 6(float) ImageSampleDrefImplicitLod 3305 3306 3307 - 3309: 174(ptr) AccessChain 3262(texel) 173 + 3309: 174(ptr) AccessChain 3166(texel) 173 3310: 6(float) Load 3309 3311: 6(float) FAdd 3310 3308 - 3312: 174(ptr) AccessChain 3262(texel) 173 + 3312: 174(ptr) AccessChain 3166(texel) 173 Store 3312 3311 - 3313: 132 Load 3276(t2D) - 3314: 3266 Load 3303(sShadow) - 3315: 180 SampledImage 3313 3314 - 3316: 148(fvec3) Load 150(c3) - 3317: 6(float) CompositeExtract 3316 2 - 3318: 6(float) ImageSampleDrefImplicitLod 3315 3316 3317 - 3319: 174(ptr) AccessChain 3262(texel) 173 - 3320: 6(float) Load 3319 - 3321: 6(float) FAdd 3320 3318 - 3322: 174(ptr) AccessChain 3262(texel) 173 - Store 3322 3321 - 3323: 155 Load 3294(tCube) - 3324: 3266 Load 3303(sShadow) - 3325: 192 SampledImage 3323 3324 - 3326: 7(fvec4) Load 197(c4) - 3327: 6(float) CompositeExtract 3326 3 - 3328: 6(float) ImageSampleDrefImplicitLod 3325 3326 3327 - 3329: 174(ptr) AccessChain 3262(texel) 173 - 3330: 6(float) Load 3329 - 3331: 6(float) FAdd 3330 3328 - 3332: 174(ptr) AccessChain 3262(texel) 173 - Store 3332 3331 - 3335: 205 Load 3334(t1DArray) - 3336: 3266 Load 3268(s) - 3337: 206 SampledImage 3335 3336 - 3338: 52(fvec2) Load 138(c2) - 3339: 7(fvec4) ImageSampleImplicitLod 3337 3338 - 3340: 7(fvec4) Load 3262(texel) - 3341: 7(fvec4) FAdd 3340 3339 - Store 3262(texel) 3341 - 3344: 214 Load 3343(t2DArray) - 3345: 3266 Load 3268(s) - 3346: 215 SampledImage 3344 3345 - 3347: 148(fvec3) Load 150(c3) - 3348: 7(fvec4) ImageSampleImplicitLod 3346 3347 - 3349: 7(fvec4) Load 3262(texel) - 3350: 7(fvec4) FAdd 3349 3348 - Store 3262(texel) 3350 - 3353: 223 Load 3352(tCubeArray) - 3354: 3266 Load 3268(s) - 3355: 224 SampledImage 3353 3354 - 3356: 7(fvec4) Load 197(c4) - 3357: 7(fvec4) ImageSampleImplicitLod 3355 3356 - 3358: 7(fvec4) Load 3262(texel) - 3359: 7(fvec4) FAdd 3358 3357 - Store 3262(texel) 3359 - 3360: 205 Load 3334(t1DArray) - 3361: 3266 Load 3303(sShadow) - 3362: 233 SampledImage 3360 3361 - 3363: 148(fvec3) Load 150(c3) - 3364: 6(float) CompositeExtract 3363 2 - 3365: 6(float) ImageSampleDrefImplicitLod 3362 3363 3364 - 3366: 174(ptr) AccessChain 3262(texel) 173 - 3367: 6(float) Load 3366 - 3368: 6(float) FAdd 3367 3365 - 3369: 174(ptr) AccessChain 3262(texel) 173 - Store 3369 3368 - 3370: 214 Load 3343(t2DArray) - 3371: 3266 Load 3303(sShadow) - 3372: 245 SampledImage 3370 3371 - 3373: 7(fvec4) Load 197(c4) - 3374: 6(float) CompositeExtract 3373 3 - 3375: 6(float) ImageSampleDrefImplicitLod 3372 3373 3374 - 3376: 174(ptr) AccessChain 3262(texel) 173 - 3377: 6(float) Load 3376 - 3378: 6(float) FAdd 3377 3375 - 3379: 174(ptr) AccessChain 3262(texel) 173 - Store 3379 3378 - 3382: 256 Load 3381(t2DRect) - 3383: 3266 Load 3268(s) - 3384: 257 SampledImage 3382 3383 - 3385: 52(fvec2) Load 138(c2) - 3386: 7(fvec4) ImageSampleImplicitLod 3384 3385 - 3387: 7(fvec4) Load 3262(texel) - 3388: 7(fvec4) FAdd 3387 3386 - Store 3262(texel) 3388 - 3389: 256 Load 3381(t2DRect) - 3390: 3266 Load 3303(sShadow) - 3391: 266 SampledImage 3389 3390 - 3392: 148(fvec3) Load 150(c3) - 3393: 6(float) CompositeExtract 3392 2 - 3394: 6(float) ImageSampleDrefImplicitLod 3391 3392 3393 - 3395: 174(ptr) AccessChain 3262(texel) 173 - 3396: 6(float) Load 3395 - 3397: 6(float) FAdd 3396 3394 - 3398: 174(ptr) AccessChain 3262(texel) 173 - Store 3398 3397 - 3399: 223 Load 3352(tCubeArray) - 3400: 3266 Load 3303(sShadow) - 3401: 278 SampledImage 3399 3400 - 3402: 7(fvec4) Load 197(c4) - 3403: 6(float) Load 283(compare) - 3404: 6(float) ImageSampleDrefImplicitLod 3401 3402 3403 - 3405: 174(ptr) AccessChain 3262(texel) 173 - 3406: 6(float) Load 3405 - 3407: 6(float) FAdd 3406 3404 - 3408: 174(ptr) AccessChain 3262(texel) 173 - Store 3408 3407 - 3409: 7(fvec4) Load 3262(texel) - ReturnValue 3409 + 3313: 7(fvec4) Load 3166(texel) + ReturnValue 3313 FunctionEnd 116(testSubpassLoad(): 7(fvec4) Function None 8 117: Label - 3415: 3412 Load 3414(subpass) - 3417: 7(fvec4) ImageRead 3415 3416 - 3421: 3418 Load 3420(subpassMS) - 3422: 7(fvec4) ImageRead 3421 3416 Sample 799 - 3423: 7(fvec4) FAdd 3417 3422 - ReturnValue 3423 + 3319: 3316 Load 3318(subpass) + 3321: 7(fvec4) ImageRead 3319 3320 + 3325: 3322 Load 3324(subpassMS) + 3326: 7(fvec4) ImageRead 3325 3320 Sample 799 + 3327: 7(fvec4) FAdd 3321 3326 + ReturnValue 3327 FunctionEnd diff --git a/Test/baseResults/spv.invariantAll.vert.out b/Test/baseResults/spv.invariantAll.vert.out index d1703dca7a..f72d81549a 100644 --- a/Test/baseResults/spv.invariantAll.vert.out +++ b/Test/baseResults/spv.invariantAll.vert.out @@ -1,7 +1,7 @@ spv.invariantAll.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 25 +// Id's are bound by 24 Capability Shader 1: ExtInstImport "GLSL.std.450" @@ -41,15 +41,14 @@ spv.invariantAll.vert 15: 14(int) Constant 0 16: TypePointer Output 6(float) 17(v): 16(ptr) Variable Output - 20: 6(float) Constant 0 - 21: 6(float) Constant 1065353216 - 23: TypePointer Output 7(fvec4) + 19: 6(float) Constant 0 + 20: 6(float) Constant 1065353216 + 22: TypePointer Output 7(fvec4) 4(main): 2 Function None 3 5: Label 18: 6(float) Load 17(v) - 19: 6(float) Load 17(v) - 22: 7(fvec4) CompositeConstruct 18 19 20 21 - 24: 23(ptr) AccessChain 13 15 - Store 24 22 + 21: 7(fvec4) CompositeConstruct 18 18 19 20 + 23: 22(ptr) AccessChain 13 15 + Store 23 21 Return FunctionEnd diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out index 723fe21a42..922e82e769 100644 --- a/Test/baseResults/spv.newTexture.frag.out +++ b/Test/baseResults/spv.newTexture.frag.out @@ -2,7 +2,7 @@ spv.newTexture.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 284 +// Id's are bound by 278 Capability Shader Capability SampledRect @@ -10,7 +10,7 @@ Validation failed Capability ImageQuery 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 17 26 29 55 81 84 92 253 283 + EntryPoint Fragment 4 "main" 17 26 29 55 81 84 92 247 277 ExecutionMode 4 OriginUpperLeft Source GLSL 430 Name 4 "main" @@ -29,21 +29,21 @@ Validation failed Name 92 "ic2D" Name 102 "sr" Name 128 "sCube" - Name 139 "s2DArrayShadow" - Name 167 "iv" - Name 171 "is2D" - Name 208 "is3D" - Name 220 "isCube" - Name 232 "is2DArray" - Name 243 "iv2" - Name 247 "sCubeShadow" - Name 253 "FragData" - Name 265 "is2Dms" - Name 269 "us2D" - Name 273 "us3D" - Name 277 "usCube" - Name 281 "us2DArray" - Name 283 "ic4D" + Name 137 "s2DArrayShadow" + Name 162 "iv" + Name 166 "is2D" + Name 202 "is3D" + Name 214 "isCube" + Name 226 "is2DArray" + Name 237 "iv2" + Name 241 "sCubeShadow" + Name 247 "FragData" + Name 259 "is2Dms" + Name 263 "us2D" + Name 267 "us3D" + Name 271 "usCube" + Name 275 "us2DArray" + Name 277 "ic4D" Decorate 13(s2D) DescriptorSet 0 Decorate 13(s2D) Binding 0 Decorate 17(c2D) Location 1 @@ -68,31 +68,31 @@ Validation failed Decorate 102(sr) Binding 1 Decorate 128(sCube) DescriptorSet 0 Decorate 128(sCube) Binding 3 - Decorate 139(s2DArrayShadow) DescriptorSet 0 - Decorate 139(s2DArrayShadow) Binding 8 - Decorate 171(is2D) DescriptorSet 0 - Decorate 171(is2D) Binding 9 - Decorate 208(is3D) DescriptorSet 0 - Decorate 208(is3D) Binding 10 - Decorate 220(isCube) DescriptorSet 0 - Decorate 220(isCube) Binding 11 - Decorate 232(is2DArray) DescriptorSet 0 - Decorate 232(is2DArray) Binding 12 - Decorate 247(sCubeShadow) DescriptorSet 0 - Decorate 247(sCubeShadow) Binding 4 - Decorate 253(FragData) Location 0 - Decorate 265(is2Dms) DescriptorSet 0 - Decorate 265(is2Dms) Binding 0 - Decorate 269(us2D) DescriptorSet 0 - Decorate 269(us2D) Binding 0 - Decorate 273(us3D) DescriptorSet 0 - Decorate 273(us3D) Binding 0 - Decorate 277(usCube) DescriptorSet 0 - Decorate 277(usCube) Binding 0 - Decorate 281(us2DArray) DescriptorSet 0 - Decorate 281(us2DArray) Binding 0 - Decorate 283(ic4D) Flat - Decorate 283(ic4D) Location 7 + Decorate 137(s2DArrayShadow) DescriptorSet 0 + Decorate 137(s2DArrayShadow) Binding 8 + Decorate 166(is2D) DescriptorSet 0 + Decorate 166(is2D) Binding 9 + Decorate 202(is3D) DescriptorSet 0 + Decorate 202(is3D) Binding 10 + Decorate 214(isCube) DescriptorSet 0 + Decorate 214(isCube) Binding 11 + Decorate 226(is2DArray) DescriptorSet 0 + Decorate 226(is2DArray) Binding 12 + Decorate 241(sCubeShadow) DescriptorSet 0 + Decorate 241(sCubeShadow) Binding 4 + Decorate 247(FragData) Location 0 + Decorate 259(is2Dms) DescriptorSet 0 + Decorate 259(is2Dms) Binding 0 + Decorate 263(us2D) DescriptorSet 0 + Decorate 263(us2D) Binding 0 + Decorate 267(us3D) DescriptorSet 0 + Decorate 267(us3D) Binding 0 + Decorate 271(usCube) DescriptorSet 0 + Decorate 271(usCube) Binding 0 + Decorate 275(us2DArray) DescriptorSet 0 + Decorate 275(us2DArray) Binding 0 + Decorate 277(ic4D) Flat + Decorate 277(ic4D) Location 7 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -153,66 +153,66 @@ Validation failed 126: TypeSampledImage 125 127: TypePointer UniformConstant 126 128(sCube): 127(ptr) Variable UniformConstant - 136: TypeImage 6(float) 2D depth array sampled format:Unknown - 137: TypeSampledImage 136 - 138: TypePointer UniformConstant 137 -139(s2DArrayShadow): 138(ptr) Variable UniformConstant - 146: 32(int) Constant 0 - 165: TypeVector 67(int) 4 - 166: TypePointer Function 165(ivec4) - 168: TypeImage 67(int) 2D sampled format:Unknown - 169: TypeSampledImage 168 - 170: TypePointer UniformConstant 169 - 171(is2D): 170(ptr) Variable UniformConstant - 205: TypeImage 67(int) 3D sampled format:Unknown - 206: TypeSampledImage 205 - 207: TypePointer UniformConstant 206 - 208(is3D): 207(ptr) Variable UniformConstant - 211: 6(float) Constant 1082549862 - 217: TypeImage 67(int) Cube sampled format:Unknown - 218: TypeSampledImage 217 - 219: TypePointer UniformConstant 218 - 220(isCube): 219(ptr) Variable UniformConstant - 229: TypeImage 67(int) 2D array sampled format:Unknown - 230: TypeSampledImage 229 - 231: TypePointer UniformConstant 230 - 232(is2DArray): 231(ptr) Variable UniformConstant - 242: TypePointer Function 68(ivec2) - 244: TypeImage 6(float) Cube depth sampled format:Unknown - 245: TypeSampledImage 244 - 246: TypePointer UniformConstant 245 -247(sCubeShadow): 246(ptr) Variable UniformConstant - 249: 67(int) Constant 2 - 252: TypePointer Output 7(fvec4) - 253(FragData): 252(ptr) Variable Output - 257: 6(float) Constant 0 - 262: TypeImage 67(int) 2D multi-sampled sampled format:Unknown - 263: TypeSampledImage 262 - 264: TypePointer UniformConstant 263 - 265(is2Dms): 264(ptr) Variable UniformConstant - 266: TypeImage 32(int) 2D sampled format:Unknown - 267: TypeSampledImage 266 - 268: TypePointer UniformConstant 267 - 269(us2D): 268(ptr) Variable UniformConstant - 270: TypeImage 32(int) 3D sampled format:Unknown - 271: TypeSampledImage 270 - 272: TypePointer UniformConstant 271 - 273(us3D): 272(ptr) Variable UniformConstant - 274: TypeImage 32(int) Cube sampled format:Unknown - 275: TypeSampledImage 274 - 276: TypePointer UniformConstant 275 - 277(usCube): 276(ptr) Variable UniformConstant - 278: TypeImage 32(int) 2D array sampled format:Unknown - 279: TypeSampledImage 278 - 280: TypePointer UniformConstant 279 - 281(us2DArray): 280(ptr) Variable UniformConstant - 282: TypePointer Input 165(ivec4) - 283(ic4D): 282(ptr) Variable Input + 134: TypeImage 6(float) 2D depth array sampled format:Unknown + 135: TypeSampledImage 134 + 136: TypePointer UniformConstant 135 +137(s2DArrayShadow): 136(ptr) Variable UniformConstant + 143: 32(int) Constant 0 + 160: TypeVector 67(int) 4 + 161: TypePointer Function 160(ivec4) + 163: TypeImage 67(int) 2D sampled format:Unknown + 164: TypeSampledImage 163 + 165: TypePointer UniformConstant 164 + 166(is2D): 165(ptr) Variable UniformConstant + 199: TypeImage 67(int) 3D sampled format:Unknown + 200: TypeSampledImage 199 + 201: TypePointer UniformConstant 200 + 202(is3D): 201(ptr) Variable UniformConstant + 205: 6(float) Constant 1082549862 + 211: TypeImage 67(int) Cube sampled format:Unknown + 212: TypeSampledImage 211 + 213: TypePointer UniformConstant 212 + 214(isCube): 213(ptr) Variable UniformConstant + 223: TypeImage 67(int) 2D array sampled format:Unknown + 224: TypeSampledImage 223 + 225: TypePointer UniformConstant 224 + 226(is2DArray): 225(ptr) Variable UniformConstant + 236: TypePointer Function 68(ivec2) + 238: TypeImage 6(float) Cube depth sampled format:Unknown + 239: TypeSampledImage 238 + 240: TypePointer UniformConstant 239 +241(sCubeShadow): 240(ptr) Variable UniformConstant + 243: 67(int) Constant 2 + 246: TypePointer Output 7(fvec4) + 247(FragData): 246(ptr) Variable Output + 251: 6(float) Constant 0 + 256: TypeImage 67(int) 2D multi-sampled sampled format:Unknown + 257: TypeSampledImage 256 + 258: TypePointer UniformConstant 257 + 259(is2Dms): 258(ptr) Variable UniformConstant + 260: TypeImage 32(int) 2D sampled format:Unknown + 261: TypeSampledImage 260 + 262: TypePointer UniformConstant 261 + 263(us2D): 262(ptr) Variable UniformConstant + 264: TypeImage 32(int) 3D sampled format:Unknown + 265: TypeSampledImage 264 + 266: TypePointer UniformConstant 265 + 267(us3D): 266(ptr) Variable UniformConstant + 268: TypeImage 32(int) Cube sampled format:Unknown + 269: TypeSampledImage 268 + 270: TypePointer UniformConstant 269 + 271(usCube): 270(ptr) Variable UniformConstant + 272: TypeImage 32(int) 2D array sampled format:Unknown + 273: TypeSampledImage 272 + 274: TypePointer UniformConstant 273 + 275(us2DArray): 274(ptr) Variable UniformConstant + 276: TypePointer Input 160(ivec4) + 277(ic4D): 276(ptr) Variable Input 4(main): 2 Function None 3 5: Label 9(v): 8(ptr) Variable Function - 167(iv): 166(ptr) Variable Function - 243(iv2): 242(ptr) Variable Function + 162(iv): 161(ptr) Variable Function + 237(iv2): 236(ptr) Variable Function 14: 11 Load 13(s2D) 18: 15(fvec2) Load 17(c2D) 19: 7(fvec4) ImageSampleImplicitLod 14 18 @@ -289,121 +289,115 @@ Validation failed Store 9(v) 124 129: 126 Load 128(sCube) 130: 53(fvec3) Load 55(c3D) - 131: 53(fvec3) Load 55(c3D) - 132: 53(fvec3) Load 55(c3D) - 133: 7(fvec4) ImageSampleExplicitLod 129 130 Grad 131 132 - 134: 7(fvec4) Load 9(v) - 135: 7(fvec4) FAdd 134 133 - Store 9(v) 135 - 140: 137 Load 139(s2DArrayShadow) - 141: 7(fvec4) Load 26(c4D) - 142: 15(fvec2) Load 17(c2D) - 143: 15(fvec2) Load 17(c2D) - 144: 6(float) CompositeExtract 141 3 - 145: 6(float) ImageSampleDrefExplicitLod 140 141 144 Grad ConstOffset 142 143 70 - 147: 34(ptr) AccessChain 9(v) 146 - 148: 6(float) Load 147 - 149: 6(float) FAdd 148 145 - 150: 34(ptr) AccessChain 9(v) 146 - Store 150 149 - 151: 40 Load 42(s3D) - 152: 7(fvec4) Load 26(c4D) - 153: 53(fvec3) Load 55(c3D) - 154: 53(fvec3) Load 55(c3D) - 155: 7(fvec4) ImageSampleProjExplicitLod 151 152 Grad 153 154 - 156: 7(fvec4) Load 9(v) - 157: 7(fvec4) FAdd 156 155 - Store 9(v) 157 - 158: 11 Load 13(s2D) - 159: 53(fvec3) Load 55(c3D) - 160: 15(fvec2) Load 17(c2D) - 161: 15(fvec2) Load 17(c2D) - 162: 7(fvec4) ImageSampleProjExplicitLod 158 159 Grad ConstOffset 160 161 70 - 163: 7(fvec4) Load 9(v) - 164: 7(fvec4) FAdd 163 162 - Store 9(v) 164 - 172: 169 Load 171(is2D) - 173: 15(fvec2) Load 17(c2D) - 174: 165(ivec4) ImageSampleImplicitLod 172 173 - Store 167(iv) 174 - 175: 165(ivec4) Load 167(iv) - 176: 7(fvec4) ConvertSToF 175 - 177: 7(fvec4) Load 9(v) - 178: 7(fvec4) FAdd 177 176 - Store 9(v) 178 - 179: 169 Load 171(is2D) - 180: 7(fvec4) Load 26(c4D) - 181: 6(float) CompositeExtract 180 3 - 182: 7(fvec4) CompositeInsert 181 180 2 - 183: 165(ivec4) ImageSampleProjImplicitLod 179 182 ConstOffset 70 - Store 167(iv) 183 - 184: 165(ivec4) Load 167(iv) - 185: 7(fvec4) ConvertSToF 184 - 186: 7(fvec4) Load 9(v) - 187: 7(fvec4) FAdd 186 185 - Store 9(v) 187 - 188: 169 Load 171(is2D) - 189: 53(fvec3) Load 55(c3D) - 190: 6(float) Load 29(c1D) - 191: 165(ivec4) ImageSampleProjExplicitLod 188 189 Lod 190 - Store 167(iv) 191 - 192: 165(ivec4) Load 167(iv) - 193: 7(fvec4) ConvertSToF 192 - 194: 7(fvec4) Load 9(v) - 195: 7(fvec4) FAdd 194 193 - Store 9(v) 195 - 196: 169 Load 171(is2D) - 197: 53(fvec3) Load 55(c3D) - 198: 15(fvec2) Load 17(c2D) - 199: 15(fvec2) Load 17(c2D) - 200: 165(ivec4) ImageSampleProjExplicitLod 196 197 Grad 198 199 - Store 167(iv) 200 - 201: 165(ivec4) Load 167(iv) - 202: 7(fvec4) ConvertSToF 201 - 203: 7(fvec4) Load 9(v) - 204: 7(fvec4) FAdd 203 202 - Store 9(v) 204 - 209: 206 Load 208(is3D) - 210: 53(fvec3) Load 55(c3D) - 212: 165(ivec4) ImageSampleImplicitLod 209 210 Bias 211 - Store 167(iv) 212 - 213: 165(ivec4) Load 167(iv) - 214: 7(fvec4) ConvertSToF 213 - 215: 7(fvec4) Load 9(v) - 216: 7(fvec4) FAdd 215 214 - Store 9(v) 216 - 221: 218 Load 220(isCube) - 222: 53(fvec3) Load 55(c3D) - 223: 6(float) Load 29(c1D) - 224: 165(ivec4) ImageSampleExplicitLod 221 222 Lod 223 - Store 167(iv) 224 - 225: 165(ivec4) Load 167(iv) - 226: 7(fvec4) ConvertSToF 225 - 227: 7(fvec4) Load 9(v) - 228: 7(fvec4) FAdd 227 226 - Store 9(v) 228 - 233: 230 Load 232(is2DArray) - 234: 79(ivec3) Load 81(ic3D) - 235: 67(int) Load 84(ic1D) - 236: 229 Image 233 - 237: 165(ivec4) ImageFetch 236 234 Lod 235 - Store 167(iv) 237 - 238: 165(ivec4) Load 167(iv) - 239: 7(fvec4) ConvertSToF 238 - 240: 7(fvec4) Load 9(v) - 241: 7(fvec4) FAdd 240 239 - Store 9(v) 241 - 248: 245 Load 247(sCubeShadow) - 250: 244 Image 248 - 251: 68(ivec2) ImageQuerySizeLod 250 249 - Store 243(iv2) 251 - 254: 7(fvec4) Load 9(v) - 255: 68(ivec2) Load 243(iv2) - 256: 15(fvec2) ConvertSToF 255 - 258: 6(float) CompositeExtract 256 0 - 259: 6(float) CompositeExtract 256 1 - 260: 7(fvec4) CompositeConstruct 258 259 257 257 - 261: 7(fvec4) FAdd 254 260 - Store 253(FragData) 261 + 131: 7(fvec4) ImageSampleExplicitLod 129 130 Grad 130 130 + 132: 7(fvec4) Load 9(v) + 133: 7(fvec4) FAdd 132 131 + Store 9(v) 133 + 138: 135 Load 137(s2DArrayShadow) + 139: 7(fvec4) Load 26(c4D) + 140: 15(fvec2) Load 17(c2D) + 141: 6(float) CompositeExtract 139 3 + 142: 6(float) ImageSampleDrefExplicitLod 138 139 141 Grad ConstOffset 140 140 70 + 144: 34(ptr) AccessChain 9(v) 143 + 145: 6(float) Load 144 + 146: 6(float) FAdd 145 142 + 147: 34(ptr) AccessChain 9(v) 143 + Store 147 146 + 148: 40 Load 42(s3D) + 149: 7(fvec4) Load 26(c4D) + 150: 53(fvec3) Load 55(c3D) + 151: 7(fvec4) ImageSampleProjExplicitLod 148 149 Grad 150 150 + 152: 7(fvec4) Load 9(v) + 153: 7(fvec4) FAdd 152 151 + Store 9(v) 153 + 154: 11 Load 13(s2D) + 155: 53(fvec3) Load 55(c3D) + 156: 15(fvec2) Load 17(c2D) + 157: 7(fvec4) ImageSampleProjExplicitLod 154 155 Grad ConstOffset 156 156 70 + 158: 7(fvec4) Load 9(v) + 159: 7(fvec4) FAdd 158 157 + Store 9(v) 159 + 167: 164 Load 166(is2D) + 168: 15(fvec2) Load 17(c2D) + 169: 160(ivec4) ImageSampleImplicitLod 167 168 + Store 162(iv) 169 + 170: 160(ivec4) Load 162(iv) + 171: 7(fvec4) ConvertSToF 170 + 172: 7(fvec4) Load 9(v) + 173: 7(fvec4) FAdd 172 171 + Store 9(v) 173 + 174: 164 Load 166(is2D) + 175: 7(fvec4) Load 26(c4D) + 176: 6(float) CompositeExtract 175 3 + 177: 7(fvec4) CompositeInsert 176 175 2 + 178: 160(ivec4) ImageSampleProjImplicitLod 174 177 ConstOffset 70 + Store 162(iv) 178 + 179: 160(ivec4) Load 162(iv) + 180: 7(fvec4) ConvertSToF 179 + 181: 7(fvec4) Load 9(v) + 182: 7(fvec4) FAdd 181 180 + Store 9(v) 182 + 183: 164 Load 166(is2D) + 184: 53(fvec3) Load 55(c3D) + 185: 6(float) Load 29(c1D) + 186: 160(ivec4) ImageSampleProjExplicitLod 183 184 Lod 185 + Store 162(iv) 186 + 187: 160(ivec4) Load 162(iv) + 188: 7(fvec4) ConvertSToF 187 + 189: 7(fvec4) Load 9(v) + 190: 7(fvec4) FAdd 189 188 + Store 9(v) 190 + 191: 164 Load 166(is2D) + 192: 53(fvec3) Load 55(c3D) + 193: 15(fvec2) Load 17(c2D) + 194: 160(ivec4) ImageSampleProjExplicitLod 191 192 Grad 193 193 + Store 162(iv) 194 + 195: 160(ivec4) Load 162(iv) + 196: 7(fvec4) ConvertSToF 195 + 197: 7(fvec4) Load 9(v) + 198: 7(fvec4) FAdd 197 196 + Store 9(v) 198 + 203: 200 Load 202(is3D) + 204: 53(fvec3) Load 55(c3D) + 206: 160(ivec4) ImageSampleImplicitLod 203 204 Bias 205 + Store 162(iv) 206 + 207: 160(ivec4) Load 162(iv) + 208: 7(fvec4) ConvertSToF 207 + 209: 7(fvec4) Load 9(v) + 210: 7(fvec4) FAdd 209 208 + Store 9(v) 210 + 215: 212 Load 214(isCube) + 216: 53(fvec3) Load 55(c3D) + 217: 6(float) Load 29(c1D) + 218: 160(ivec4) ImageSampleExplicitLod 215 216 Lod 217 + Store 162(iv) 218 + 219: 160(ivec4) Load 162(iv) + 220: 7(fvec4) ConvertSToF 219 + 221: 7(fvec4) Load 9(v) + 222: 7(fvec4) FAdd 221 220 + Store 9(v) 222 + 227: 224 Load 226(is2DArray) + 228: 79(ivec3) Load 81(ic3D) + 229: 67(int) Load 84(ic1D) + 230: 223 Image 227 + 231: 160(ivec4) ImageFetch 230 228 Lod 229 + Store 162(iv) 231 + 232: 160(ivec4) Load 162(iv) + 233: 7(fvec4) ConvertSToF 232 + 234: 7(fvec4) Load 9(v) + 235: 7(fvec4) FAdd 234 233 + Store 9(v) 235 + 242: 239 Load 241(sCubeShadow) + 244: 238 Image 242 + 245: 68(ivec2) ImageQuerySizeLod 244 243 + Store 237(iv2) 245 + 248: 7(fvec4) Load 9(v) + 249: 68(ivec2) Load 237(iv2) + 250: 15(fvec2) ConvertSToF 249 + 252: 6(float) CompositeExtract 250 0 + 253: 6(float) CompositeExtract 250 1 + 254: 7(fvec4) CompositeConstruct 252 253 251 251 + 255: 7(fvec4) FAdd 248 254 + Store 247(FragData) 255 Return FunctionEnd diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out index 84ca757c1f..91dd929de3 100644 --- a/Test/baseResults/spv.sparseTexture.frag.out +++ b/Test/baseResults/spv.sparseTexture.frag.out @@ -2,7 +2,7 @@ spv.sparseTexture.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 442 +// Id's are bound by 434 Capability Shader Capability ImageGatherExtended @@ -12,7 +12,7 @@ Validation failed Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 33 48 89 397 409 427 + EntryPoint Fragment 4 "main" 33 48 89 389 401 419 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_sparse_texture2" @@ -38,14 +38,14 @@ Validation failed Name 154 "s2DArrayShadow" Name 188 "s2DMS" Name 228 "is2DArray" - Name 261 "sCubeShadow" - Name 294 "s2DRectShadow" - Name 394 "i2D" - Name 397 "ic2" - Name 406 "ii3D" - Name 409 "ic3" - Name 418 "i2DMS" - Name 427 "outColor" + Name 259 "sCubeShadow" + Name 288 "s2DRectShadow" + Name 386 "i2D" + Name 389 "ic2" + Name 398 "ii3D" + Name 401 "ic3" + Name 410 "i2DMS" + Name 419 "outColor" Decorate 29(s2D) DescriptorSet 0 Decorate 29(s2D) Binding 0 Decorate 33(c2) Location 0 @@ -69,21 +69,21 @@ Validation failed Decorate 188(s2DMS) Binding 7 Decorate 228(is2DArray) DescriptorSet 0 Decorate 228(is2DArray) Binding 9 - Decorate 261(sCubeShadow) DescriptorSet 0 - Decorate 261(sCubeShadow) Binding 3 - Decorate 294(s2DRectShadow) DescriptorSet 0 - Decorate 294(s2DRectShadow) Binding 5 - Decorate 394(i2D) DescriptorSet 0 - Decorate 394(i2D) Binding 12 - Decorate 397(ic2) Flat - Decorate 397(ic2) Location 3 - Decorate 406(ii3D) DescriptorSet 0 - Decorate 406(ii3D) Binding 13 - Decorate 409(ic3) Flat - Decorate 409(ic3) Location 4 - Decorate 418(i2DMS) DescriptorSet 0 - Decorate 418(i2DMS) Binding 14 - Decorate 427(outColor) Location 0 + Decorate 259(sCubeShadow) DescriptorSet 0 + Decorate 259(sCubeShadow) Binding 3 + Decorate 288(s2DRectShadow) DescriptorSet 0 + Decorate 288(s2DRectShadow) Binding 5 + Decorate 386(i2D) DescriptorSet 0 + Decorate 386(i2D) Binding 12 + Decorate 389(ic2) Flat + Decorate 389(ic2) Location 3 + Decorate 398(ii3D) DescriptorSet 0 + Decorate 398(ii3D) Binding 13 + Decorate 401(ic3) Flat + Decorate 401(ic3) Location 4 + Decorate 410(i2DMS) DescriptorSet 0 + Decorate 410(i2DMS) Binding 14 + Decorate 419(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -173,51 +173,51 @@ Validation failed 232: 143(ivec2) ConstantComposite 231 231 240: 6(int) Constant 7 241: 143(ivec2) ConstantComposite 240 240 - 258: TypeImage 10(float) Cube depth sampled format:Unknown - 259: TypeSampledImage 258 - 260: TypePointer UniformConstant 259 -261(sCubeShadow): 260(ptr) Variable UniformConstant - 291: TypeImage 10(float) Rect depth sampled format:Unknown - 292: TypeSampledImage 291 - 293: TypePointer UniformConstant 292 -294(s2DRectShadow): 293(ptr) Variable UniformConstant - 299: 20(int) Constant 3 - 311: 143(ivec2) ConstantComposite 130 130 - 340: 143(ivec2) ConstantComposite 192 192 - 362: 20(int) Constant 4 - 363: TypeArray 143(ivec2) 362 - 364: 6(int) Constant 1 - 365: 143(ivec2) ConstantComposite 364 130 - 366: 143(ivec2) ConstantComposite 144 192 - 367: 6(int) Constant 15 - 368: 6(int) Constant 16 - 369: 143(ivec2) ConstantComposite 367 368 - 370: 6(int) Constant 4294967294 - 371: 143(ivec2) ConstantComposite 370 9 - 372: 363 ConstantComposite 365 366 369 371 - 392: TypeImage 10(float) 2D nonsampled format:Rgba32f - 393: TypePointer UniformConstant 392 - 394(i2D): 393(ptr) Variable UniformConstant - 396: TypePointer Input 143(ivec2) - 397(ic2): 396(ptr) Variable Input - 404: TypeImage 6(int) 3D nonsampled format:Rgba32i - 405: TypePointer UniformConstant 404 - 406(ii3D): 405(ptr) Variable UniformConstant - 408: TypePointer Input 129(ivec3) - 409(ic3): 408(ptr) Variable Input - 416: TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f - 417: TypePointer UniformConstant 416 - 418(i2DMS): 417(ptr) Variable UniformConstant - 426: TypePointer Output 11(fvec4) - 427(outColor): 426(ptr) Variable Output - 429: TypeBool + 256: TypeImage 10(float) Cube depth sampled format:Unknown + 257: TypeSampledImage 256 + 258: TypePointer UniformConstant 257 +259(sCubeShadow): 258(ptr) Variable UniformConstant + 285: TypeImage 10(float) Rect depth sampled format:Unknown + 286: TypeSampledImage 285 + 287: TypePointer UniformConstant 286 +288(s2DRectShadow): 287(ptr) Variable UniformConstant + 292: 20(int) Constant 3 + 303: 143(ivec2) ConstantComposite 130 130 + 332: 143(ivec2) ConstantComposite 192 192 + 354: 20(int) Constant 4 + 355: TypeArray 143(ivec2) 354 + 356: 6(int) Constant 1 + 357: 143(ivec2) ConstantComposite 356 130 + 358: 143(ivec2) ConstantComposite 144 192 + 359: 6(int) Constant 15 + 360: 6(int) Constant 16 + 361: 143(ivec2) ConstantComposite 359 360 + 362: 6(int) Constant 4294967294 + 363: 143(ivec2) ConstantComposite 362 9 + 364: 355 ConstantComposite 357 358 361 363 + 384: TypeImage 10(float) 2D nonsampled format:Rgba32f + 385: TypePointer UniformConstant 384 + 386(i2D): 385(ptr) Variable UniformConstant + 388: TypePointer Input 143(ivec2) + 389(ic2): 388(ptr) Variable Input + 396: TypeImage 6(int) 3D nonsampled format:Rgba32i + 397: TypePointer UniformConstant 396 + 398(ii3D): 397(ptr) Variable UniformConstant + 400: TypePointer Input 129(ivec3) + 401(ic3): 400(ptr) Variable Input + 408: TypeImage 10(float) 2D multi-sampled nonsampled format:Rgba32f + 409: TypePointer UniformConstant 408 + 410(i2DMS): 409(ptr) Variable UniformConstant + 418: TypePointer Output 11(fvec4) + 419(outColor): 418(ptr) Variable Output + 421: TypeBool 4(main): 2 Function None 3 5: Label 8(resident): 7(ptr) Variable Function 13(texel): 12(ptr) Variable Function 18(itexel): 17(ptr) Variable Function 23(utexel): 22(ptr) Variable Function - 431: 12(ptr) Variable Function + 423: 12(ptr) Variable Function Store 8(resident) 9 Store 13(texel) 15 Store 18(itexel) 19 @@ -414,200 +414,192 @@ Validation failed Store 8(resident) 248 249: 42 Load 44(s3D) 250: 46(fvec3) Load 48(c3) - 251: 46(fvec3) Load 48(c3) - 252: 46(fvec3) Load 48(c3) - 253: 35(ResType) ImageSparseSampleExplicitLod 249 250 Grad 251 252 - 254: 11(fvec4) CompositeExtract 253 1 - Store 13(texel) 254 - 255: 6(int) CompositeExtract 253 0 - 256: 6(int) Load 8(resident) - 257: 6(int) BitwiseOr 256 255 - Store 8(resident) 257 - 262: 259 Load 261(sCubeShadow) - 263: 11(fvec4) Load 89(c4) - 264: 46(fvec3) Load 48(c3) - 265: 46(fvec3) Load 48(c3) - 266: 74(ptr) AccessChain 13(texel) 119 - 267: 10(float) CompositeExtract 263 3 - 268: 77(ResType) ImageSparseSampleDrefExplicitLod 262 263 267 Grad 264 265 - 269: 10(float) CompositeExtract 268 1 - Store 266 269 - 270: 6(int) CompositeExtract 268 0 - 271: 6(int) Load 8(resident) - 272: 6(int) BitwiseOr 271 270 - Store 8(resident) 272 - 273: 106 Load 108(usCubeArray) - 274: 11(fvec4) Load 89(c4) - 275: 46(fvec3) Load 48(c3) - 276: 46(fvec3) Load 48(c3) - 277:111(ResType) ImageSparseSampleExplicitLod 273 274 Grad 275 276 - 278: 21(ivec4) CompositeExtract 277 1 - Store 23(utexel) 278 - 279: 6(int) CompositeExtract 277 0 - 280: 6(int) Load 8(resident) - 281: 6(int) BitwiseOr 280 279 - Store 8(resident) 281 - 282: 27 Load 29(s2D) - 283: 31(fvec2) Load 33(c2) - 284: 31(fvec2) Load 33(c2) - 285: 31(fvec2) Load 33(c2) - 286: 35(ResType) ImageSparseSampleExplicitLod 282 283 Grad ConstOffset 284 285 158 - 287: 11(fvec4) CompositeExtract 286 1 - Store 13(texel) 287 - 288: 6(int) CompositeExtract 286 0 - 289: 6(int) Load 8(resident) - 290: 6(int) BitwiseOr 289 288 - Store 8(resident) 290 - 295: 292 Load 294(s2DRectShadow) - 296: 46(fvec3) Load 48(c3) - 297: 31(fvec2) Load 33(c2) - 298: 31(fvec2) Load 33(c2) - 300: 74(ptr) AccessChain 13(texel) 299 - 301: 10(float) CompositeExtract 296 2 - 302: 77(ResType) ImageSparseSampleDrefExplicitLod 295 296 301 Grad ConstOffset 297 298 232 - 303: 10(float) CompositeExtract 302 1 - Store 300 303 - 304: 6(int) CompositeExtract 302 0 - 305: 6(int) Load 8(resident) - 306: 6(int) BitwiseOr 305 304 - Store 8(resident) 306 - 307: 226 Load 228(is2DArray) - 308: 46(fvec3) Load 48(c3) - 309: 31(fvec2) Load 33(c2) + 251: 35(ResType) ImageSparseSampleExplicitLod 249 250 Grad 250 250 + 252: 11(fvec4) CompositeExtract 251 1 + Store 13(texel) 252 + 253: 6(int) CompositeExtract 251 0 + 254: 6(int) Load 8(resident) + 255: 6(int) BitwiseOr 254 253 + Store 8(resident) 255 + 260: 257 Load 259(sCubeShadow) + 261: 11(fvec4) Load 89(c4) + 262: 46(fvec3) Load 48(c3) + 263: 74(ptr) AccessChain 13(texel) 119 + 264: 10(float) CompositeExtract 261 3 + 265: 77(ResType) ImageSparseSampleDrefExplicitLod 260 261 264 Grad 262 262 + 266: 10(float) CompositeExtract 265 1 + Store 263 266 + 267: 6(int) CompositeExtract 265 0 + 268: 6(int) Load 8(resident) + 269: 6(int) BitwiseOr 268 267 + Store 8(resident) 269 + 270: 106 Load 108(usCubeArray) + 271: 11(fvec4) Load 89(c4) + 272: 46(fvec3) Load 48(c3) + 273:111(ResType) ImageSparseSampleExplicitLod 270 271 Grad 272 272 + 274: 21(ivec4) CompositeExtract 273 1 + Store 23(utexel) 274 + 275: 6(int) CompositeExtract 273 0 + 276: 6(int) Load 8(resident) + 277: 6(int) BitwiseOr 276 275 + Store 8(resident) 277 + 278: 27 Load 29(s2D) + 279: 31(fvec2) Load 33(c2) + 280: 35(ResType) ImageSparseSampleExplicitLod 278 279 Grad ConstOffset 279 279 158 + 281: 11(fvec4) CompositeExtract 280 1 + Store 13(texel) 281 + 282: 6(int) CompositeExtract 280 0 + 283: 6(int) Load 8(resident) + 284: 6(int) BitwiseOr 283 282 + Store 8(resident) 284 + 289: 286 Load 288(s2DRectShadow) + 290: 46(fvec3) Load 48(c3) + 291: 31(fvec2) Load 33(c2) + 293: 74(ptr) AccessChain 13(texel) 292 + 294: 10(float) CompositeExtract 290 2 + 295: 77(ResType) ImageSparseSampleDrefExplicitLod 289 290 294 Grad ConstOffset 291 291 232 + 296: 10(float) CompositeExtract 295 1 + Store 293 296 + 297: 6(int) CompositeExtract 295 0 + 298: 6(int) Load 8(resident) + 299: 6(int) BitwiseOr 298 297 + Store 8(resident) 299 + 300: 226 Load 228(is2DArray) + 301: 46(fvec3) Load 48(c3) + 302: 31(fvec2) Load 33(c2) + 304: 62(ResType) ImageSparseSampleExplicitLod 300 301 Grad ConstOffset 302 302 303 + 305: 16(ivec4) CompositeExtract 304 1 + Store 18(itexel) 305 + 306: 6(int) CompositeExtract 304 0 + 307: 6(int) Load 8(resident) + 308: 6(int) BitwiseOr 307 306 + Store 8(resident) 308 + 309: 27 Load 29(s2D) 310: 31(fvec2) Load 33(c2) - 312: 62(ResType) ImageSparseSampleExplicitLod 307 308 Grad ConstOffset 309 310 311 - 313: 16(ivec4) CompositeExtract 312 1 - Store 18(itexel) 313 - 314: 6(int) CompositeExtract 312 0 - 315: 6(int) Load 8(resident) - 316: 6(int) BitwiseOr 315 314 - Store 8(resident) 316 - 317: 27 Load 29(s2D) - 318: 31(fvec2) Load 33(c2) - 319: 35(ResType) ImageSparseGather 317 318 9 - 320: 11(fvec4) CompositeExtract 319 1 - Store 13(texel) 320 - 321: 6(int) CompositeExtract 319 0 - 322: 6(int) Load 8(resident) - 323: 6(int) BitwiseOr 322 321 - Store 8(resident) 323 - 324: 226 Load 228(is2DArray) - 325: 46(fvec3) Load 48(c3) - 326: 62(ResType) ImageSparseGather 324 325 130 - 327: 16(ivec4) CompositeExtract 326 1 - Store 18(itexel) 327 - 328: 6(int) CompositeExtract 326 0 - 329: 6(int) Load 8(resident) - 330: 6(int) BitwiseOr 329 328 - Store 8(resident) 330 - 331: 152 Load 154(s2DArrayShadow) - 332: 46(fvec3) Load 48(c3) - 333: 35(ResType) ImageSparseDrefGather 331 332 50 + 311: 35(ResType) ImageSparseGather 309 310 9 + 312: 11(fvec4) CompositeExtract 311 1 + Store 13(texel) 312 + 313: 6(int) CompositeExtract 311 0 + 314: 6(int) Load 8(resident) + 315: 6(int) BitwiseOr 314 313 + Store 8(resident) 315 + 316: 226 Load 228(is2DArray) + 317: 46(fvec3) Load 48(c3) + 318: 62(ResType) ImageSparseGather 316 317 130 + 319: 16(ivec4) CompositeExtract 318 1 + Store 18(itexel) 319 + 320: 6(int) CompositeExtract 318 0 + 321: 6(int) Load 8(resident) + 322: 6(int) BitwiseOr 321 320 + Store 8(resident) 322 + 323: 152 Load 154(s2DArrayShadow) + 324: 46(fvec3) Load 48(c3) + 325: 35(ResType) ImageSparseDrefGather 323 324 50 + 326: 11(fvec4) CompositeExtract 325 1 + Store 13(texel) 326 + 327: 6(int) CompositeExtract 325 0 + 328: 6(int) Load 8(resident) + 329: 6(int) BitwiseOr 328 327 + Store 8(resident) 329 + 330: 27 Load 29(s2D) + 331: 31(fvec2) Load 33(c2) + 333: 35(ResType) ImageSparseGather 330 331 9 ConstOffset 332 334: 11(fvec4) CompositeExtract 333 1 Store 13(texel) 334 335: 6(int) CompositeExtract 333 0 336: 6(int) Load 8(resident) 337: 6(int) BitwiseOr 336 335 Store 8(resident) 337 - 338: 27 Load 29(s2D) - 339: 31(fvec2) Load 33(c2) - 341: 35(ResType) ImageSparseGather 338 339 9 ConstOffset 340 - 342: 11(fvec4) CompositeExtract 341 1 - Store 13(texel) 342 - 343: 6(int) CompositeExtract 341 0 - 344: 6(int) Load 8(resident) - 345: 6(int) BitwiseOr 344 343 - Store 8(resident) 345 - 346: 226 Load 228(is2DArray) - 347: 46(fvec3) Load 48(c3) - 348: 62(ResType) ImageSparseGather 346 347 130 ConstOffset 158 - 349: 16(ivec4) CompositeExtract 348 1 - Store 18(itexel) 349 - 350: 6(int) CompositeExtract 348 0 - 351: 6(int) Load 8(resident) - 352: 6(int) BitwiseOr 351 350 - Store 8(resident) 352 - 353: 292 Load 294(s2DRectShadow) - 354: 31(fvec2) Load 33(c2) - 355: 35(ResType) ImageSparseDrefGather 353 354 50 ConstOffset 241 - 356: 11(fvec4) CompositeExtract 355 1 - Store 13(texel) 356 - 357: 6(int) CompositeExtract 355 0 - 358: 6(int) Load 8(resident) - 359: 6(int) BitwiseOr 358 357 - Store 8(resident) 359 - 360: 27 Load 29(s2D) - 361: 31(fvec2) Load 33(c2) - 373: 35(ResType) ImageSparseGather 360 361 9 ConstOffsets 372 - 374: 11(fvec4) CompositeExtract 373 1 - Store 13(texel) 374 - 375: 6(int) CompositeExtract 373 0 - 376: 6(int) Load 8(resident) - 377: 6(int) BitwiseOr 376 375 - Store 8(resident) 377 - 378: 226 Load 228(is2DArray) - 379: 46(fvec3) Load 48(c3) - 380: 62(ResType) ImageSparseGather 378 379 130 ConstOffsets 372 - 381: 16(ivec4) CompositeExtract 380 1 - Store 18(itexel) 381 - 382: 6(int) CompositeExtract 380 0 - 383: 6(int) Load 8(resident) - 384: 6(int) BitwiseOr 383 382 - Store 8(resident) 384 - 385: 292 Load 294(s2DRectShadow) - 386: 31(fvec2) Load 33(c2) - 387: 35(ResType) ImageSparseDrefGather 385 386 50 ConstOffsets 372 - 388: 11(fvec4) CompositeExtract 387 1 - Store 13(texel) 388 - 389: 6(int) CompositeExtract 387 0 - 390: 6(int) Load 8(resident) - 391: 6(int) BitwiseOr 390 389 - Store 8(resident) 391 - 395: 392 Load 394(i2D) - 398: 143(ivec2) Load 397(ic2) - 399: 35(ResType) ImageSparseRead 395 398 - 400: 11(fvec4) CompositeExtract 399 1 - Store 13(texel) 400 - 401: 6(int) CompositeExtract 399 0 - 402: 6(int) Load 8(resident) - 403: 6(int) BitwiseOr 402 401 - Store 8(resident) 403 - 407: 404 Load 406(ii3D) - 410: 129(ivec3) Load 409(ic3) - 411: 62(ResType) ImageSparseRead 407 410 - 412: 16(ivec4) CompositeExtract 411 1 - Store 18(itexel) 412 - 413: 6(int) CompositeExtract 411 0 - 414: 6(int) Load 8(resident) - 415: 6(int) BitwiseOr 414 413 - Store 8(resident) 415 - 419: 416 Load 418(i2DMS) - 420: 143(ivec2) Load 397(ic2) - 421: 35(ResType) ImageSparseRead 419 420 Sample 144 - 422: 11(fvec4) CompositeExtract 421 1 - Store 13(texel) 422 - 423: 6(int) CompositeExtract 421 0 - 424: 6(int) Load 8(resident) - 425: 6(int) BitwiseOr 424 423 - Store 8(resident) 425 - 428: 6(int) Load 8(resident) - 430: 429(bool) ImageSparseTexelsResident 428 - SelectionMerge 433 None - BranchConditional 430 432 435 - 432: Label - 434: 11(fvec4) Load 13(texel) - Store 431 434 - Branch 433 - 435: Label - 436: 16(ivec4) Load 18(itexel) - 437: 11(fvec4) ConvertSToF 436 - 438: 21(ivec4) Load 23(utexel) - 439: 11(fvec4) ConvertUToF 438 - 440: 11(fvec4) FAdd 437 439 - Store 431 440 - Branch 433 - 433: Label - 441: 11(fvec4) Load 431 - Store 427(outColor) 441 + 338: 226 Load 228(is2DArray) + 339: 46(fvec3) Load 48(c3) + 340: 62(ResType) ImageSparseGather 338 339 130 ConstOffset 158 + 341: 16(ivec4) CompositeExtract 340 1 + Store 18(itexel) 341 + 342: 6(int) CompositeExtract 340 0 + 343: 6(int) Load 8(resident) + 344: 6(int) BitwiseOr 343 342 + Store 8(resident) 344 + 345: 286 Load 288(s2DRectShadow) + 346: 31(fvec2) Load 33(c2) + 347: 35(ResType) ImageSparseDrefGather 345 346 50 ConstOffset 241 + 348: 11(fvec4) CompositeExtract 347 1 + Store 13(texel) 348 + 349: 6(int) CompositeExtract 347 0 + 350: 6(int) Load 8(resident) + 351: 6(int) BitwiseOr 350 349 + Store 8(resident) 351 + 352: 27 Load 29(s2D) + 353: 31(fvec2) Load 33(c2) + 365: 35(ResType) ImageSparseGather 352 353 9 ConstOffsets 364 + 366: 11(fvec4) CompositeExtract 365 1 + Store 13(texel) 366 + 367: 6(int) CompositeExtract 365 0 + 368: 6(int) Load 8(resident) + 369: 6(int) BitwiseOr 368 367 + Store 8(resident) 369 + 370: 226 Load 228(is2DArray) + 371: 46(fvec3) Load 48(c3) + 372: 62(ResType) ImageSparseGather 370 371 130 ConstOffsets 364 + 373: 16(ivec4) CompositeExtract 372 1 + Store 18(itexel) 373 + 374: 6(int) CompositeExtract 372 0 + 375: 6(int) Load 8(resident) + 376: 6(int) BitwiseOr 375 374 + Store 8(resident) 376 + 377: 286 Load 288(s2DRectShadow) + 378: 31(fvec2) Load 33(c2) + 379: 35(ResType) ImageSparseDrefGather 377 378 50 ConstOffsets 364 + 380: 11(fvec4) CompositeExtract 379 1 + Store 13(texel) 380 + 381: 6(int) CompositeExtract 379 0 + 382: 6(int) Load 8(resident) + 383: 6(int) BitwiseOr 382 381 + Store 8(resident) 383 + 387: 384 Load 386(i2D) + 390: 143(ivec2) Load 389(ic2) + 391: 35(ResType) ImageSparseRead 387 390 + 392: 11(fvec4) CompositeExtract 391 1 + Store 13(texel) 392 + 393: 6(int) CompositeExtract 391 0 + 394: 6(int) Load 8(resident) + 395: 6(int) BitwiseOr 394 393 + Store 8(resident) 395 + 399: 396 Load 398(ii3D) + 402: 129(ivec3) Load 401(ic3) + 403: 62(ResType) ImageSparseRead 399 402 + 404: 16(ivec4) CompositeExtract 403 1 + Store 18(itexel) 404 + 405: 6(int) CompositeExtract 403 0 + 406: 6(int) Load 8(resident) + 407: 6(int) BitwiseOr 406 405 + Store 8(resident) 407 + 411: 408 Load 410(i2DMS) + 412: 143(ivec2) Load 389(ic2) + 413: 35(ResType) ImageSparseRead 411 412 Sample 144 + 414: 11(fvec4) CompositeExtract 413 1 + Store 13(texel) 414 + 415: 6(int) CompositeExtract 413 0 + 416: 6(int) Load 8(resident) + 417: 6(int) BitwiseOr 416 415 + Store 8(resident) 417 + 420: 6(int) Load 8(resident) + 422: 421(bool) ImageSparseTexelsResident 420 + SelectionMerge 425 None + BranchConditional 422 424 427 + 424: Label + 426: 11(fvec4) Load 13(texel) + Store 423 426 + Branch 425 + 427: Label + 428: 16(ivec4) Load 18(itexel) + 429: 11(fvec4) ConvertSToF 428 + 430: 21(ivec4) Load 23(utexel) + 431: 11(fvec4) ConvertUToF 430 + 432: 11(fvec4) FAdd 429 431 + Store 423 432 + Branch 425 + 425: Label + 433: 11(fvec4) Load 423 + Store 419(outColor) 433 Return FunctionEnd diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out index e56297c262..1c95f60b2c 100644 --- a/Test/baseResults/spv.sparseTextureClamp.frag.out +++ b/Test/baseResults/spv.sparseTextureClamp.frag.out @@ -2,7 +2,7 @@ spv.sparseTextureClamp.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 360 +// Id's are bound by 344 Capability Shader Capability SampledRect @@ -11,7 +11,7 @@ Validation failed Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 33 36 51 95 345 + EntryPoint Fragment 4 "main" 33 36 51 95 329 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_ARB_sparse_texture_clamp" @@ -35,11 +35,11 @@ Validation failed Name 154 "us2DRect" Name 161 "ResType" Name 170 "s2DArrayShadow" - Name 218 "sCubeShadow" - Name 235 "usCubeArray" - Name 286 "s2DRectShadow" - Name 305 "is2DArray" - Name 345 "outColor" + Name 216 "sCubeShadow" + Name 232 "usCubeArray" + Name 276 "s2DRectShadow" + Name 294 "is2DArray" + Name 329 "outColor" Decorate 29(s2D) DescriptorSet 0 Decorate 29(s2D) Binding 0 Decorate 33(c2) Location 0 @@ -58,15 +58,15 @@ Validation failed Decorate 154(us2DRect) Binding 10 Decorate 170(s2DArrayShadow) DescriptorSet 0 Decorate 170(s2DArrayShadow) Binding 4 - Decorate 218(sCubeShadow) DescriptorSet 0 - Decorate 218(sCubeShadow) Binding 3 - Decorate 235(usCubeArray) DescriptorSet 0 - Decorate 235(usCubeArray) Binding 9 - Decorate 286(s2DRectShadow) DescriptorSet 0 - Decorate 286(s2DRectShadow) Binding 5 - Decorate 305(is2DArray) DescriptorSet 0 - Decorate 305(is2DArray) Binding 8 - Decorate 345(outColor) Location 0 + Decorate 216(sCubeShadow) DescriptorSet 0 + Decorate 216(sCubeShadow) Binding 3 + Decorate 232(usCubeArray) DescriptorSet 0 + Decorate 232(usCubeArray) Binding 9 + Decorate 276(s2DRectShadow) DescriptorSet 0 + Decorate 276(s2DRectShadow) Binding 5 + Decorate 294(is2DArray) DescriptorSet 0 + Decorate 294(is2DArray) Binding 8 + Decorate 329(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -139,37 +139,37 @@ Validation failed 173: 6(int) Constant 5 174: 157(ivec2) ConstantComposite 173 173 176: 20(int) Constant 2 - 215: TypeImage 10(float) Cube depth sampled format:Unknown - 216: TypeSampledImage 215 - 217: TypePointer UniformConstant 216 -218(sCubeShadow): 217(ptr) Variable UniformConstant - 224: 20(int) Constant 1 - 232: TypeImage 20(int) Cube array sampled format:Unknown - 233: TypeSampledImage 232 - 234: TypePointer UniformConstant 233 -235(usCubeArray): 234(ptr) Variable UniformConstant - 283: TypeImage 10(float) Rect depth sampled format:Unknown - 284: TypeSampledImage 283 - 285: TypePointer UniformConstant 284 -286(s2DRectShadow): 285(ptr) Variable UniformConstant - 291: 6(int) Constant 6 - 292: 157(ivec2) ConstantComposite 291 291 - 294: 20(int) Constant 3 - 302: TypeImage 6(int) 2D array sampled format:Unknown - 303: TypeSampledImage 302 - 304: TypePointer UniformConstant 303 - 305(is2DArray): 304(ptr) Variable UniformConstant - 310: 157(ivec2) ConstantComposite 143 143 - 344: TypePointer Output 11(fvec4) - 345(outColor): 344(ptr) Variable Output - 347: TypeBool + 213: TypeImage 10(float) Cube depth sampled format:Unknown + 214: TypeSampledImage 213 + 215: TypePointer UniformConstant 214 +216(sCubeShadow): 215(ptr) Variable UniformConstant + 221: 20(int) Constant 1 + 229: TypeImage 20(int) Cube array sampled format:Unknown + 230: TypeSampledImage 229 + 231: TypePointer UniformConstant 230 +232(usCubeArray): 231(ptr) Variable UniformConstant + 273: TypeImage 10(float) Rect depth sampled format:Unknown + 274: TypeSampledImage 273 + 275: TypePointer UniformConstant 274 +276(s2DRectShadow): 275(ptr) Variable UniformConstant + 280: 6(int) Constant 6 + 281: 157(ivec2) ConstantComposite 280 280 + 283: 20(int) Constant 3 + 291: TypeImage 6(int) 2D array sampled format:Unknown + 292: TypeSampledImage 291 + 293: TypePointer UniformConstant 292 + 294(is2DArray): 293(ptr) Variable UniformConstant + 298: 157(ivec2) ConstantComposite 143 143 + 328: TypePointer Output 11(fvec4) + 329(outColor): 328(ptr) Variable Output + 331: TypeBool 4(main): 2 Function None 3 5: Label 8(resident): 7(ptr) Variable Function 13(texel): 12(ptr) Variable Function 18(itexel): 17(ptr) Variable Function 23(utexel): 22(ptr) Variable Function - 349: 12(ptr) Variable Function + 333: 12(ptr) Variable Function Store 8(resident) 9 Store 13(texel) 15 Store 18(itexel) 19 @@ -325,158 +325,142 @@ Validation failed Store 204 203 205: 45 Load 47(s3D) 206: 49(fvec3) Load 51(c3) - 207: 49(fvec3) Load 51(c3) - 208: 49(fvec3) Load 51(c3) - 209: 10(float) Load 36(lodClamp) - 210: 38(ResType) ImageSparseSampleExplicitLod 205 206 Grad MinLod 207 208 209 - 211: 11(fvec4) CompositeExtract 210 1 - Store 13(texel) 211 - 212: 6(int) CompositeExtract 210 0 - 213: 6(int) Load 8(resident) - 214: 6(int) BitwiseOr 213 212 - Store 8(resident) 214 - 219: 216 Load 218(sCubeShadow) - 220: 11(fvec4) Load 95(c4) - 221: 49(fvec3) Load 51(c3) - 222: 49(fvec3) Load 51(c3) - 223: 10(float) Load 36(lodClamp) - 225: 80(ptr) AccessChain 13(texel) 224 - 226: 10(float) CompositeExtract 220 3 - 227: 83(ResType) ImageSparseSampleDrefExplicitLod 219 220 226 Grad MinLod 221 222 223 - 228: 10(float) CompositeExtract 227 1 - Store 225 228 - 229: 6(int) CompositeExtract 227 0 - 230: 6(int) Load 8(resident) - 231: 6(int) BitwiseOr 230 229 - Store 8(resident) 231 - 236: 233 Load 235(usCubeArray) - 237: 11(fvec4) Load 95(c4) - 238: 49(fvec3) Load 51(c3) - 239: 49(fvec3) Load 51(c3) - 240: 10(float) Load 36(lodClamp) - 241:161(ResType) ImageSparseSampleExplicitLod 236 237 Grad MinLod 238 239 240 - 242: 21(ivec4) CompositeExtract 241 1 - Store 23(utexel) 242 - 243: 6(int) CompositeExtract 241 0 - 244: 6(int) Load 8(resident) - 245: 6(int) BitwiseOr 244 243 - Store 8(resident) 245 - 246: 45 Load 47(s3D) - 247: 49(fvec3) Load 51(c3) - 248: 49(fvec3) Load 51(c3) - 249: 49(fvec3) Load 51(c3) - 250: 10(float) Load 36(lodClamp) - 251: 11(fvec4) ImageSampleExplicitLod 246 247 Grad MinLod 248 249 250 - 252: 11(fvec4) Load 13(texel) - 253: 11(fvec4) FAdd 252 251 - Store 13(texel) 253 - 254: 216 Load 218(sCubeShadow) - 255: 11(fvec4) Load 95(c4) - 256: 49(fvec3) Load 51(c3) - 257: 49(fvec3) Load 51(c3) - 258: 10(float) Load 36(lodClamp) - 259: 10(float) CompositeExtract 255 3 - 260: 10(float) ImageSampleDrefExplicitLod 254 255 259 Grad MinLod 256 257 258 - 261: 80(ptr) AccessChain 13(texel) 224 - 262: 10(float) Load 261 - 263: 10(float) FAdd 262 260 - 264: 80(ptr) AccessChain 13(texel) 224 - Store 264 263 - 265: 233 Load 235(usCubeArray) - 266: 11(fvec4) Load 95(c4) - 267: 49(fvec3) Load 51(c3) - 268: 49(fvec3) Load 51(c3) - 269: 10(float) Load 36(lodClamp) - 270: 21(ivec4) ImageSampleExplicitLod 265 266 Grad MinLod 267 268 269 - 271: 21(ivec4) Load 23(utexel) - 272: 21(ivec4) IAdd 271 270 - Store 23(utexel) 272 - 273: 27 Load 29(s2D) - 274: 31(fvec2) Load 33(c2) - 275: 31(fvec2) Load 33(c2) - 276: 31(fvec2) Load 33(c2) - 277: 10(float) Load 36(lodClamp) - 278: 38(ResType) ImageSparseSampleExplicitLod 273 274 Grad ConstOffset MinLod 275 276 174 277 - 279: 11(fvec4) CompositeExtract 278 1 - Store 13(texel) 279 - 280: 6(int) CompositeExtract 278 0 - 281: 6(int) Load 8(resident) - 282: 6(int) BitwiseOr 281 280 - Store 8(resident) 282 - 287: 284 Load 286(s2DRectShadow) - 288: 49(fvec3) Load 51(c3) - 289: 31(fvec2) Load 33(c2) - 290: 31(fvec2) Load 33(c2) - 293: 10(float) Load 36(lodClamp) - 295: 80(ptr) AccessChain 13(texel) 294 - 296: 10(float) CompositeExtract 288 2 - 297: 83(ResType) ImageSparseSampleDrefExplicitLod 287 288 296 Grad ConstOffset MinLod 289 290 292 293 - 298: 10(float) CompositeExtract 297 1 - Store 295 298 - 299: 6(int) CompositeExtract 297 0 - 300: 6(int) Load 8(resident) - 301: 6(int) BitwiseOr 300 299 - Store 8(resident) 301 - 306: 303 Load 305(is2DArray) - 307: 49(fvec3) Load 51(c3) - 308: 31(fvec2) Load 33(c2) - 309: 31(fvec2) Load 33(c2) - 311: 10(float) Load 36(lodClamp) - 312: 67(ResType) ImageSparseSampleExplicitLod 306 307 Grad ConstOffset MinLod 308 309 310 311 - 313: 16(ivec4) CompositeExtract 312 1 - Store 18(itexel) 313 - 314: 6(int) CompositeExtract 312 0 - 315: 6(int) Load 8(resident) - 316: 6(int) BitwiseOr 315 314 - Store 8(resident) 316 - 317: 27 Load 29(s2D) - 318: 31(fvec2) Load 33(c2) - 319: 31(fvec2) Load 33(c2) - 320: 31(fvec2) Load 33(c2) - 321: 10(float) Load 36(lodClamp) - 322: 11(fvec4) ImageSampleExplicitLod 317 318 Grad ConstOffset MinLod 319 320 174 321 - 323: 11(fvec4) Load 13(texel) - 324: 11(fvec4) FAdd 323 322 - Store 13(texel) 324 - 325: 284 Load 286(s2DRectShadow) - 326: 49(fvec3) Load 51(c3) - 327: 31(fvec2) Load 33(c2) - 328: 31(fvec2) Load 33(c2) - 329: 10(float) Load 36(lodClamp) - 330: 10(float) CompositeExtract 326 2 - 331: 10(float) ImageSampleDrefExplicitLod 325 326 330 Grad ConstOffset MinLod 327 328 292 329 - 332: 80(ptr) AccessChain 13(texel) 294 - 333: 10(float) Load 332 - 334: 10(float) FAdd 333 331 - 335: 80(ptr) AccessChain 13(texel) 294 - Store 335 334 - 336: 303 Load 305(is2DArray) - 337: 49(fvec3) Load 51(c3) - 338: 31(fvec2) Load 33(c2) - 339: 31(fvec2) Load 33(c2) - 340: 10(float) Load 36(lodClamp) - 341: 16(ivec4) ImageSampleExplicitLod 336 337 Grad ConstOffset MinLod 338 339 310 340 - 342: 16(ivec4) Load 18(itexel) - 343: 16(ivec4) IAdd 342 341 - Store 18(itexel) 343 - 346: 6(int) Load 8(resident) - 348: 347(bool) ImageSparseTexelsResident 346 - SelectionMerge 351 None - BranchConditional 348 350 353 - 350: Label - 352: 11(fvec4) Load 13(texel) - Store 349 352 - Branch 351 - 353: Label - 354: 16(ivec4) Load 18(itexel) - 355: 11(fvec4) ConvertSToF 354 - 356: 21(ivec4) Load 23(utexel) - 357: 11(fvec4) ConvertUToF 356 - 358: 11(fvec4) FAdd 355 357 - Store 349 358 - Branch 351 - 351: Label - 359: 11(fvec4) Load 349 - Store 345(outColor) 359 + 207: 10(float) Load 36(lodClamp) + 208: 38(ResType) ImageSparseSampleExplicitLod 205 206 Grad MinLod 206 206 207 + 209: 11(fvec4) CompositeExtract 208 1 + Store 13(texel) 209 + 210: 6(int) CompositeExtract 208 0 + 211: 6(int) Load 8(resident) + 212: 6(int) BitwiseOr 211 210 + Store 8(resident) 212 + 217: 214 Load 216(sCubeShadow) + 218: 11(fvec4) Load 95(c4) + 219: 49(fvec3) Load 51(c3) + 220: 10(float) Load 36(lodClamp) + 222: 80(ptr) AccessChain 13(texel) 221 + 223: 10(float) CompositeExtract 218 3 + 224: 83(ResType) ImageSparseSampleDrefExplicitLod 217 218 223 Grad MinLod 219 219 220 + 225: 10(float) CompositeExtract 224 1 + Store 222 225 + 226: 6(int) CompositeExtract 224 0 + 227: 6(int) Load 8(resident) + 228: 6(int) BitwiseOr 227 226 + Store 8(resident) 228 + 233: 230 Load 232(usCubeArray) + 234: 11(fvec4) Load 95(c4) + 235: 49(fvec3) Load 51(c3) + 236: 10(float) Load 36(lodClamp) + 237:161(ResType) ImageSparseSampleExplicitLod 233 234 Grad MinLod 235 235 236 + 238: 21(ivec4) CompositeExtract 237 1 + Store 23(utexel) 238 + 239: 6(int) CompositeExtract 237 0 + 240: 6(int) Load 8(resident) + 241: 6(int) BitwiseOr 240 239 + Store 8(resident) 241 + 242: 45 Load 47(s3D) + 243: 49(fvec3) Load 51(c3) + 244: 10(float) Load 36(lodClamp) + 245: 11(fvec4) ImageSampleExplicitLod 242 243 Grad MinLod 243 243 244 + 246: 11(fvec4) Load 13(texel) + 247: 11(fvec4) FAdd 246 245 + Store 13(texel) 247 + 248: 214 Load 216(sCubeShadow) + 249: 11(fvec4) Load 95(c4) + 250: 49(fvec3) Load 51(c3) + 251: 10(float) Load 36(lodClamp) + 252: 10(float) CompositeExtract 249 3 + 253: 10(float) ImageSampleDrefExplicitLod 248 249 252 Grad MinLod 250 250 251 + 254: 80(ptr) AccessChain 13(texel) 221 + 255: 10(float) Load 254 + 256: 10(float) FAdd 255 253 + 257: 80(ptr) AccessChain 13(texel) 221 + Store 257 256 + 258: 230 Load 232(usCubeArray) + 259: 11(fvec4) Load 95(c4) + 260: 49(fvec3) Load 51(c3) + 261: 10(float) Load 36(lodClamp) + 262: 21(ivec4) ImageSampleExplicitLod 258 259 Grad MinLod 260 260 261 + 263: 21(ivec4) Load 23(utexel) + 264: 21(ivec4) IAdd 263 262 + Store 23(utexel) 264 + 265: 27 Load 29(s2D) + 266: 31(fvec2) Load 33(c2) + 267: 10(float) Load 36(lodClamp) + 268: 38(ResType) ImageSparseSampleExplicitLod 265 266 Grad ConstOffset MinLod 266 266 174 267 + 269: 11(fvec4) CompositeExtract 268 1 + Store 13(texel) 269 + 270: 6(int) CompositeExtract 268 0 + 271: 6(int) Load 8(resident) + 272: 6(int) BitwiseOr 271 270 + Store 8(resident) 272 + 277: 274 Load 276(s2DRectShadow) + 278: 49(fvec3) Load 51(c3) + 279: 31(fvec2) Load 33(c2) + 282: 10(float) Load 36(lodClamp) + 284: 80(ptr) AccessChain 13(texel) 283 + 285: 10(float) CompositeExtract 278 2 + 286: 83(ResType) ImageSparseSampleDrefExplicitLod 277 278 285 Grad ConstOffset MinLod 279 279 281 282 + 287: 10(float) CompositeExtract 286 1 + Store 284 287 + 288: 6(int) CompositeExtract 286 0 + 289: 6(int) Load 8(resident) + 290: 6(int) BitwiseOr 289 288 + Store 8(resident) 290 + 295: 292 Load 294(is2DArray) + 296: 49(fvec3) Load 51(c3) + 297: 31(fvec2) Load 33(c2) + 299: 10(float) Load 36(lodClamp) + 300: 67(ResType) ImageSparseSampleExplicitLod 295 296 Grad ConstOffset MinLod 297 297 298 299 + 301: 16(ivec4) CompositeExtract 300 1 + Store 18(itexel) 301 + 302: 6(int) CompositeExtract 300 0 + 303: 6(int) Load 8(resident) + 304: 6(int) BitwiseOr 303 302 + Store 8(resident) 304 + 305: 27 Load 29(s2D) + 306: 31(fvec2) Load 33(c2) + 307: 10(float) Load 36(lodClamp) + 308: 11(fvec4) ImageSampleExplicitLod 305 306 Grad ConstOffset MinLod 306 306 174 307 + 309: 11(fvec4) Load 13(texel) + 310: 11(fvec4) FAdd 309 308 + Store 13(texel) 310 + 311: 274 Load 276(s2DRectShadow) + 312: 49(fvec3) Load 51(c3) + 313: 31(fvec2) Load 33(c2) + 314: 10(float) Load 36(lodClamp) + 315: 10(float) CompositeExtract 312 2 + 316: 10(float) ImageSampleDrefExplicitLod 311 312 315 Grad ConstOffset MinLod 313 313 281 314 + 317: 80(ptr) AccessChain 13(texel) 283 + 318: 10(float) Load 317 + 319: 10(float) FAdd 318 316 + 320: 80(ptr) AccessChain 13(texel) 283 + Store 320 319 + 321: 292 Load 294(is2DArray) + 322: 49(fvec3) Load 51(c3) + 323: 31(fvec2) Load 33(c2) + 324: 10(float) Load 36(lodClamp) + 325: 16(ivec4) ImageSampleExplicitLod 321 322 Grad ConstOffset MinLod 323 323 298 324 + 326: 16(ivec4) Load 18(itexel) + 327: 16(ivec4) IAdd 326 325 + Store 18(itexel) 327 + 330: 6(int) Load 8(resident) + 332: 331(bool) ImageSparseTexelsResident 330 + SelectionMerge 335 None + BranchConditional 332 334 337 + 334: Label + 336: 11(fvec4) Load 13(texel) + Store 333 336 + Branch 335 + 337: Label + 338: 16(ivec4) Load 18(itexel) + 339: 11(fvec4) ConvertSToF 338 + 340: 21(ivec4) Load 23(utexel) + 341: 11(fvec4) ConvertUToF 340 + 342: 11(fvec4) FAdd 339 341 + Store 333 342 + Branch 335 + 335: Label + 343: 11(fvec4) Load 333 + Store 329(outColor) 343 Return FunctionEnd From 4da479aa6afa43e5a2ce4c4148c572a03123faf3 Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Fri, 31 May 2024 12:00:03 -0500 Subject: [PATCH 487/594] Generate SPV_EXT_replicated_composites when requested by pragma. Implement GL_EXT_spec_constant_composites. --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/GlslangToSpv.cpp | 2 + SPIRV/SpvBuilder.cpp | 63 ++++++++- SPIRV/SpvBuilder.h | 3 + SPIRV/doc.cpp | 10 ++ SPIRV/spirv.hpp | 13 +- Test/baseResults/spv.replicate.comp.out | 117 ++++++++++++++++ Test/baseResults/spv.replicatespec.comp.out | 132 ++++++++++++++++++ .../spv.specConstantComposite2.vert.out | 89 ++++++++++++ Test/spv.replicate.comp | 43 ++++++ Test/spv.replicatespec.comp | 43 ++++++ Test/spv.specConstantComposite2.vert | 98 +++++++++++++ Test/vulkan.ast.vert | 2 +- glslang/MachineIndependent/ParseHelper.cpp | 39 +++++- glslang/MachineIndependent/Versions.cpp | 2 + glslang/MachineIndependent/Versions.h | 1 + .../MachineIndependent/localintermediate.h | 6 + gtests/Spv.FromFile.cpp | 2 + known_good.json | 4 +- 19 files changed, 656 insertions(+), 14 deletions(-) create mode 100644 Test/baseResults/spv.replicate.comp.out create mode 100644 Test/baseResults/spv.replicatespec.comp.out create mode 100644 Test/baseResults/spv.specConstantComposite2.vert.out create mode 100644 Test/spv.replicate.comp create mode 100644 Test/spv.replicatespec.comp create mode 100644 Test/spv.specConstantComposite2.vert diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index 1d3af1403a..ba26708def 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -61,5 +61,6 @@ static const char* const E_SPV_KHR_cooperative_matrix = "SPV_KHR_coope static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maximal_reconvergence"; static const char* const E_SPV_KHR_subgroup_rotate = "SPV_KHR_subgroup_rotate"; static const char* const E_SPV_KHR_expect_assume = "SPV_KHR_expect_assume"; +static const char* const E_SPV_EXT_replicated_composites = "SPV_EXT_replicated_composites"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 36e6c01c94..16e2246639 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1583,6 +1583,8 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, builder.addInclude(iItr->first, iItr->second); } + builder.setUseReplicatedComposites(glslangIntermediate->usingReplicatedComposites()); + stdBuiltins = builder.import("GLSL.std.450"); spv::AddressingModel addressingModel = spv::AddressingModelLogical; diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 6613655a8e..f07460d2b9 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1484,12 +1484,14 @@ bool Builder::isConstantOpCode(Op opcode) const case OpConstantFalse: case OpConstant: case OpConstantComposite: + case OpConstantCompositeReplicateEXT: case OpConstantSampler: case OpConstantNull: case OpSpecConstantTrue: case OpSpecConstantFalse: case OpSpecConstant: case OpSpecConstantComposite: + case OpSpecConstantCompositeReplicateEXT: case OpSpecConstantOp: return true; default: @@ -1506,6 +1508,7 @@ bool Builder::isSpecConstantOpCode(Op opcode) const case OpSpecConstant: case OpSpecConstantComposite: case OpSpecConstantOp: + case OpSpecConstantCompositeReplicateEXT: return true; default: return false; @@ -1782,10 +1785,27 @@ Id Builder::findStructConstant(Id typeId, const std::vector& comps) // Comments in header Id Builder::makeCompositeConstant(Id typeId, const std::vector& members, bool specConstant) { - Op opcode = specConstant ? OpSpecConstantComposite : OpConstantComposite; assert(typeId); Op typeClass = getTypeClass(typeId); + bool replicate = false; + size_t numMembers = members.size(); + if (useReplicatedComposites) { + // use replicate if all members are the same + replicate = numMembers > 0 && + std::equal(members.begin() + 1, members.end(), members.begin()); + + if (replicate) { + numMembers = 1; + addCapability(spv::CapabilityReplicatedCompositesEXT); + addExtension(spv::E_SPV_EXT_replicated_composites); + } + } + + Op opcode = replicate ? + (specConstant ? OpSpecConstantCompositeReplicateEXT : OpConstantCompositeReplicateEXT) : + (specConstant ? OpSpecConstantComposite : OpConstantComposite); + switch (typeClass) { case OpTypeVector: case OpTypeArray: @@ -1812,7 +1832,7 @@ Id Builder::makeCompositeConstant(Id typeId, const std::vector& members, boo Instruction* c = new Instruction(getUniqueId(), typeId, opcode); c->reserveOperands(members.size()); - for (int op = 0; op < (int)members.size(); ++op) + for (size_t op = 0; op < numMembers; ++op) c->addIdOperand(members[op]); constantsTypesGlobals.push_back(std::unique_ptr(c)); if (typeClass == OpTypeStruct) @@ -2928,7 +2948,17 @@ Id Builder::smearScalar(Decoration precision, Id scalar, Id vectorType) auto result_id = makeCompositeConstant(vectorType, members, isSpecConstant(scalar)); smear = module.getInstruction(result_id); } else { - smear = new Instruction(getUniqueId(), vectorType, OpCompositeConstruct); + bool replicate = useReplicatedComposites && (numComponents > 0); + + if (replicate) { + numComponents = 1; + addCapability(spv::CapabilityReplicatedCompositesEXT); + addExtension(spv::E_SPV_EXT_replicated_composites); + } + + Op opcode = replicate ? OpCompositeConstructReplicateEXT : OpCompositeConstruct; + + smear = new Instruction(getUniqueId(), vectorType, opcode); smear->reserveOperands(numComponents); for (int c = 0; c < numComponents; ++c) smear->addIdOperand(scalar); @@ -3321,9 +3351,25 @@ Id Builder::createCompositeConstruct(Id typeId, const std::vector& constitue [&](spv::Id id) { return isSpecConstant(id); })); } - Instruction* op = new Instruction(getUniqueId(), typeId, OpCompositeConstruct); + bool replicate = false; + size_t numConstituents = constituents.size(); + + if (useReplicatedComposites) { + replicate = numConstituents > 0 && + std::equal(constituents.begin() + 1, constituents.end(), constituents.begin()); + } + + if (replicate) { + numConstituents = 1; + addCapability(spv::CapabilityReplicatedCompositesEXT); + addExtension(spv::E_SPV_EXT_replicated_composites); + } + + Op opcode = replicate ? OpCompositeConstructReplicateEXT : OpCompositeConstruct; + + Instruction* op = new Instruction(getUniqueId(), typeId, opcode); op->reserveOperands(constituents.size()); - for (int c = 0; c < (int)constituents.size(); ++c) + for (size_t c = 0; c < numConstituents; ++c) op->addIdOperand(constituents[c]); addInstruction(std::unique_ptr(op)); @@ -3458,6 +3504,13 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& return setPrecision(createCompositeConstruct(resultTypeId, matrixColumns), precision); } + // Detect a matrix being constructed from a repeated vector of the correct size. + // Create the composite directly from it. + if ((int)sources.size() == numCols && isVector(sources[0]) && getNumComponents(sources[0]) == numRows && + std::equal(sources.begin() + 1, sources.end(), sources.begin())) { + return setPrecision(createCompositeConstruct(resultTypeId, sources), precision); + } + // Otherwise, will use a two step process // 1. make a compile-time 2D array of values // 2. construct a matrix from that array diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index b5509a8ba6..fd04f630d3 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -872,6 +872,8 @@ class Builder { // Check if the builder is generating code for spec constants. bool isInSpecConstCodeGenMode() { return generatingOpCodeForSpecConst; } + void setUseReplicatedComposites(bool use) { useReplicatedComposites = use; } + protected: Id makeIntConstant(Id typeId, unsigned value, bool specConstant); Id makeInt64Constant(Id typeId, unsigned long long value, bool specConstant); @@ -938,6 +940,7 @@ class Builder { Id uniqueId; Function* entryPointFunction; bool generatingOpCodeForSpecConst; + bool useReplicatedComposites { false }; AccessChain accessChain; // special blocks of instructions for output diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index ea4915fe78..f60a894910 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1066,6 +1066,8 @@ const char* CapabilityString(int info) case CapabilityTextureBlockMatchQCOM: return "TextureBlockMatchQCOM"; case CapabilityTextureBlockMatch2QCOM: return "TextureBlockMatch2QCOM"; + case CapabilityReplicatedCompositesEXT: return "CapabilityReplicatedCompositesEXT"; + default: return "Bad"; } } @@ -1584,6 +1586,10 @@ const char* OpcodeString(int op) case OpImageBlockMatchGatherSSDQCOM: return "OpImageBlockMatchGatherSSDQCOM"; case OpImageBlockMatchGatherSADQCOM: return "OpImageBlockMatchGatherSADQCOM"; + case OpConstantCompositeReplicateEXT: return "OpConstantCompositeReplicateEXT"; + case OpSpecConstantCompositeReplicateEXT: return "OpSpecConstantCompositeReplicateEXT"; + case OpCompositeConstructReplicateEXT: return "OpCompositeConstructReplicateEXT"; + default: return "Bad"; } @@ -3471,6 +3477,10 @@ void Parameterize() InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandId, "'block size'"); InstructionDesc[OpImageBlockMatchGatherSADQCOM].operands.push(OperandImageOperands, "", true); InstructionDesc[OpImageBlockMatchGatherSADQCOM].setResultAndType(true, true); + + InstructionDesc[OpConstantCompositeReplicateEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpSpecConstantCompositeReplicateEXT].operands.push(OperandId, "'Value'"); + InstructionDesc[OpCompositeConstructReplicateEXT].operands.push(OperandId, "'Value'"); }); } diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 6eceabe67e..5821eced2a 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1162,7 +1162,8 @@ enum Capability { CapabilityDotProduct = 6019, CapabilityDotProductKHR = 6019, CapabilityRayCullMaskKHR = 6020, - CapabilityCooperativeMatrixKHR = 6022, + CapabilityCooperativeMatrixKHR = 6022, + CapabilityReplicatedCompositesEXT = 6024, CapabilityBitInstructions = 6025, CapabilityGroupNonUniformRotateKHR = 6026, CapabilityAtomicFloat32AddEXT = 6033, @@ -1688,7 +1689,10 @@ enum Op { OpCooperativeMatrixLoadKHR = 4457, OpCooperativeMatrixStoreKHR = 4458, OpCooperativeMatrixMulAddKHR = 4459, - OpCooperativeMatrixLengthKHR = 4460, + OpCooperativeMatrixLengthKHR = 4460, + OpConstantCompositeReplicateEXT = 4461, + OpSpecConstantCompositeReplicateEXT = 4462, + OpCompositeConstructReplicateEXT = 4463, OpTypeRayQueryKHR = 4472, OpRayQueryInitializeKHR = 4473, OpRayQueryTerminateKHR = 4474, @@ -2417,7 +2421,10 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break; case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break; case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break; + case OpConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; + case OpCompositeConstructReplicateEXT: *hasResult = true; *hasResultType = true; break; case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; case OpRayQueryTerminateKHR: *hasResult = false; *hasResultType = false; break; diff --git a/Test/baseResults/spv.replicate.comp.out b/Test/baseResults/spv.replicate.comp.out new file mode 100644 index 0000000000..965b37b5b7 --- /dev/null +++ b/Test/baseResults/spv.replicate.comp.out @@ -0,0 +1,117 @@ +spv.replicate.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 66 + + Capability Shader + Capability VulkanMemoryModelKHR + Capability CooperativeMatrixKHR + Capability CapabilityReplicatedCompositesEXT + Extension "SPV_EXT_replicated_composites" + Extension "SPV_KHR_cooperative_matrix" + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_spec_constant_composites" + SourceExtension "GL_KHR_cooperative_matrix" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 13 "coop" + Name 17 "a" + Name 21 "v" + Name 28 "m" + Name 33 "five" + Name 35 "six" + Name 39 "arr" + Name 44 "arr2" + Name 49 "S" + MemberName 49(S) 0 "a" + MemberName 49(S) 1 "b" + MemberName 49(S) 2 "c" + Name 51 "s2" + Name 54 "SS" + MemberName 54(SS) 0 "s1" + MemberName 54(SS) 1 "s2" + Name 56 "ss" + Decorate 61 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 16 + 10: 7(int) Constant 0 + 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 + 12: TypePointer Function 11 + 14: 6(float) Constant 1065353216 + 15: 11 ConstantCompositeReplicateEXT 14 + 16: TypePointer Function 6(float) + 18: 6(float) Constant 1073741824 + 19: TypeVector 6(float) 4 + 20: TypePointer Function 19(fvec4) + 24: 6(float) Constant 1077936128 + 25: 19(fvec4) ConstantCompositeReplicateEXT 24 + 26: TypeMatrix 19(fvec4) 4 + 27: TypePointer Function 26 + 31: TypeInt 32 1 + 32: TypePointer Function 31(int) + 34: 31(int) Constant 5 + 36: 31(int) Constant 6 + 37: TypeArray 31(int) 8 + 38: TypePointer Function 37 + 42: TypeArray 37 8 + 43: TypePointer Function 42 + 47: 37 ConstantCompositeReplicateEXT 34 + 48: 42 ConstantCompositeReplicateEXT 47 + 49(S): TypeStruct 31(int) 31(int) 31(int) + 50: TypePointer Function 49(S) + 54(SS): TypeStruct 49(S) 49(S) + 55: TypePointer Function 54(SS) + 59: TypeVector 7(int) 3 + 60: 7(int) Constant 1 + 61: 59(ivec3) ConstantCompositeReplicateEXT 60 + 62: 49(S) ConstantCompositeReplicateEXT 36 + 63: 54(SS) ConstantCompositeReplicateEXT 62 + 64: 26 ConstantCompositeReplicateEXT 25 + 65: 11 ConstantCompositeReplicateEXT 24 + 4(main): 2 Function None 3 + 5: Label + 13(coop): 12(ptr) Variable Function + 17(a): 16(ptr) Variable Function + 21(v): 20(ptr) Variable Function + 28(m): 27(ptr) Variable Function + 33(five): 32(ptr) Variable Function + 35(six): 32(ptr) Variable Function + 39(arr): 38(ptr) Variable Function + 44(arr2): 43(ptr) Variable Function + 51(s2): 50(ptr) Variable Function + 56(ss): 55(ptr) Variable Function + Store 13(coop) 15 + Store 17(a) 18 + 22: 6(float) Load 17(a) + 23: 19(fvec4) CompositeConstructReplicateEXT 22 + Store 21(v) 23 + Store 21(v) 25 + 29: 19(fvec4) Load 21(v) + 30: 26 CompositeConstructReplicateEXT 29 + Store 28(m) 30 + Store 33(five) 34 + Store 35(six) 36 + 40: 31(int) Load 33(five) + 41: 37 CompositeConstructReplicateEXT 40 + Store 39(arr) 41 + 45: 37 Load 39(arr) + 46: 42 CompositeConstructReplicateEXT 45 + Store 44(arr2) 46 + Store 44(arr2) 48 + 52: 31(int) Load 35(six) + 53: 49(S) CompositeConstructReplicateEXT 52 + Store 51(s2) 53 + 57: 49(S) Load 51(s2) + 58: 54(SS) CompositeConstructReplicateEXT 57 + Store 56(ss) 58 + Return + FunctionEnd diff --git a/Test/baseResults/spv.replicatespec.comp.out b/Test/baseResults/spv.replicatespec.comp.out new file mode 100644 index 0000000000..dd7157fedf --- /dev/null +++ b/Test/baseResults/spv.replicatespec.comp.out @@ -0,0 +1,132 @@ +spv.replicatespec.comp +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 68 + + Capability Shader + Capability VulkanMemoryModelKHR + Capability CooperativeMatrixKHR + Capability CapabilityReplicatedCompositesEXT + Extension "SPV_EXT_replicated_composites" + Extension "SPV_KHR_cooperative_matrix" + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_spec_constant_composites" + SourceExtension "GL_KHR_cooperative_matrix" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 13 "coop" + Name 17 "a" + Name 21 "v" + Name 24 "spec_float" + Name 25 "cv" + Name 28 "m" + Name 33 "five" + Name 35 "six" + Name 39 "arr" + Name 44 "arr2" + Name 47 "cfive" + Name 48 "carr" + Name 49 "carr2" + Name 50 "S" + MemberName 50(S) 0 "a" + MemberName 50(S) 1 "b" + MemberName 50(S) 2 "c" + Name 52 "s2" + Name 55 "SS" + MemberName 55(SS) 0 "s1" + MemberName 55(SS) 1 "s2" + Name 57 "ss" + Name 63 "csix" + Name 64 "cs" + Name 65 "css" + Name 66 "cm" + Name 67 "ccoop" + Decorate 24(spec_float) SpecId 2 + Decorate 47(cfive) SpecId 0 + Decorate 62 BuiltIn WorkgroupSize + Decorate 63(csix) SpecId 1 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 16 + 10: 7(int) Constant 0 + 11: TypeCooperativeMatrixKHR 6(float) 8 9 9 10 + 12: TypePointer Function 11 + 14: 6(float) Constant 1065353216 + 15: 11 ConstantCompositeReplicateEXT 14 + 16: TypePointer Function 6(float) + 18: 6(float) Constant 1073741824 + 19: TypeVector 6(float) 4 + 20: TypePointer Function 19(fvec4) + 24(spec_float): 6(float) SpecConstant 1077936128 + 25(cv): 19(fvec4) SpecConstantCompositeReplicateEXT 24(spec_float) + 26: TypeMatrix 19(fvec4) 4 + 27: TypePointer Function 26 + 31: TypeInt 32 1 + 32: TypePointer Function 31(int) + 34: 31(int) Constant 5 + 36: 31(int) Constant 6 + 37: TypeArray 31(int) 8 + 38: TypePointer Function 37 + 42: TypeArray 37 8 + 43: TypePointer Function 42 + 47(cfive): 31(int) SpecConstant 5 + 48(carr): 37 SpecConstantCompositeReplicateEXT 47(cfive) + 49(carr2): 42 SpecConstantCompositeReplicateEXT 48(carr) + 50(S): TypeStruct 31(int) 31(int) 31(int) + 51: TypePointer Function 50(S) + 55(SS): TypeStruct 50(S) 50(S) + 56: TypePointer Function 55(SS) + 60: TypeVector 7(int) 3 + 61: 7(int) Constant 1 + 62: 60(ivec3) ConstantCompositeReplicateEXT 61 + 63(csix): 31(int) SpecConstant 6 + 64(cs): 50(S) SpecConstantCompositeReplicateEXT 63(csix) + 65(css): 55(SS) SpecConstantCompositeReplicateEXT 64(cs) + 66(cm): 26 SpecConstantCompositeReplicateEXT 25(cv) + 67(ccoop): 11 SpecConstantCompositeReplicateEXT 24(spec_float) + 4(main): 2 Function None 3 + 5: Label + 13(coop): 12(ptr) Variable Function + 17(a): 16(ptr) Variable Function + 21(v): 20(ptr) Variable Function + 28(m): 27(ptr) Variable Function + 33(five): 32(ptr) Variable Function + 35(six): 32(ptr) Variable Function + 39(arr): 38(ptr) Variable Function + 44(arr2): 43(ptr) Variable Function + 52(s2): 51(ptr) Variable Function + 57(ss): 56(ptr) Variable Function + Store 13(coop) 15 + Store 17(a) 18 + 22: 6(float) Load 17(a) + 23: 19(fvec4) CompositeConstructReplicateEXT 22 + Store 21(v) 23 + Store 21(v) 25(cv) + 29: 19(fvec4) Load 21(v) + 30: 26 CompositeConstructReplicateEXT 29 + Store 28(m) 30 + Store 33(five) 34 + Store 35(six) 36 + 40: 31(int) Load 33(five) + 41: 37 CompositeConstructReplicateEXT 40 + Store 39(arr) 41 + 45: 37 Load 39(arr) + 46: 42 CompositeConstructReplicateEXT 45 + Store 44(arr2) 46 + Store 44(arr2) 49(carr2) + 53: 31(int) Load 35(six) + 54: 50(S) CompositeConstructReplicateEXT 53 + Store 52(s2) 54 + 58: 50(S) Load 52(s2) + 59: 55(SS) CompositeConstructReplicateEXT 58 + Store 57(ss) 59 + Return + FunctionEnd diff --git a/Test/baseResults/spv.specConstantComposite2.vert.out b/Test/baseResults/spv.specConstantComposite2.vert.out new file mode 100644 index 0000000000..191f35062d --- /dev/null +++ b/Test/baseResults/spv.specConstantComposite2.vert.out @@ -0,0 +1,89 @@ +spv.specConstantComposite2.vert +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 43 + + Capability Shader + Capability Float64 + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Vertex 4 "main" 27 42 + Source GLSL 450 + Name 4 "main" + Name 6 "refer_primary_spec_const(" + Name 8 "refer_composite_spec_const(" + Name 10 "refer_copmosite_dot_dereference(" + Name 12 "refer_composite_bracket_dereference(" + Name 16 "refer_spec_const_array_length(" + Name 18 "declare_spec_const_in_func(" + Name 21 "spec_bool" + Name 27 "color" + Name 28 "spec_int" + Name 33 "len" + Name 37 "spec_float" + Name 39 "spec_double" + Name 42 "global_vec4_array_with_spec_length" + Decorate 21(spec_bool) SpecId 203 + Decorate 27(color) Location 0 + Decorate 28(spec_int) SpecId 200 + Decorate 37(spec_float) SpecId 201 + Decorate 39(spec_double) SpecId 202 + Decorate 42(global_vec4_array_with_spec_length) Location 0 + 2: TypeVoid + 3: TypeFunction 2 + 14: TypeInt 32 1 + 15: TypeFunction 14(int) + 20: TypeBool + 21(spec_bool): 20(bool) SpecConstantTrue + 24: TypeFloat 32 + 25: TypeVector 24(float) 4 + 26: TypePointer Output 25(fvec4) + 27(color): 26(ptr) Variable Output + 28(spec_int): 14(int) SpecConstant 3 + 32: TypePointer Function 14(int) + 37(spec_float): 24(float) SpecConstant 1078523331 + 38: TypeFloat 64 + 39(spec_double):38(float64_t) SpecConstant 1413754136 1074340347 + 40: TypeArray 25(fvec4) 28(spec_int) + 41: TypePointer Input 40 +42(global_vec4_array_with_spec_length): 41(ptr) Variable Input + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd +6(refer_primary_spec_const(): 2 Function None 3 + 7: Label + SelectionMerge 23 None + BranchConditional 21(spec_bool) 22 23 + 22: Label + 29: 24(float) ConvertSToF 28(spec_int) + 30: 25(fvec4) Load 27(color) + 31: 25(fvec4) VectorTimesScalar 30 29 + Store 27(color) 31 + Branch 23 + 23: Label + Return + FunctionEnd +8(refer_composite_spec_const(): 2 Function None 3 + 9: Label + Return + FunctionEnd +10(refer_copmosite_dot_dereference(): 2 Function None 3 + 11: Label + Return + FunctionEnd +12(refer_composite_bracket_dereference(): 2 Function None 3 + 13: Label + Return + FunctionEnd +16(refer_spec_const_array_length(): 14(int) Function None 15 + 17: Label + 33(len): 32(ptr) Variable Function + Store 33(len) 28(spec_int) + 34: 14(int) Load 33(len) + ReturnValue 34 + FunctionEnd +18(declare_spec_const_in_func(): 2 Function None 3 + 19: Label + Return + FunctionEnd diff --git a/Test/spv.replicate.comp b/Test/spv.replicate.comp new file mode 100644 index 0000000000..ac2018f5c6 --- /dev/null +++ b/Test/spv.replicate.comp @@ -0,0 +1,43 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_spec_constant_composites : enable + +#pragma use_replicated_composites + +layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; + +const int csix = 6; +struct S { int a; int b; int c; }; +struct SS { S s1; S s2; }; +const S cs = S(csix, csix, csix); +const SS css = SS(cs, cs); + +const float spec_float = 3; +const vec4 cv = vec4(spec_float); +const mat4 cm = mat4(cv,cv,cv,cv); + +const int cfive = 5; +const int carr[3] = {cfive, cfive, cfive}; +const int carr2[3][3] = {carr, carr, carr}; + +const coopmat ccoop = coopmat(spec_float); + +void main() +{ + coopmat coop = coopmat(1.0); + + float a = 2.0; + vec4 v = vec4(a); + v = cv; + mat4 m = mat4(v,v,v,v); + + int five = 5; + int six = 6; + int arr[3] = {five, five, five}; + int arr2[3][3] = {arr, arr, arr}; + arr2 = carr2; + + S s2 = S(six, six, six); + SS ss = SS(s2, s2); +} diff --git a/Test/spv.replicatespec.comp b/Test/spv.replicatespec.comp new file mode 100644 index 0000000000..e4bc8c059d --- /dev/null +++ b/Test/spv.replicatespec.comp @@ -0,0 +1,43 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_spec_constant_composites : enable + +#pragma use_replicated_composites + +layout (local_size_x = 1, local_size_y = 1, local_size_z = 1) in; + +layout(constant_id = 1) const int csix = 6; +struct S { int a; int b; int c; }; +struct SS { S s1; S s2; }; +const S cs = S(csix, csix, csix); +const SS css = SS(cs, cs); + +layout(constant_id = 2) const float spec_float = 3; +const vec4 cv = vec4(spec_float); +const mat4 cm = mat4(cv,cv,cv,cv); + +layout(constant_id = 0) const int cfive = 5; +const int carr[3] = {cfive, cfive, cfive}; +const int carr2[3][3] = {carr, carr, carr}; + +const coopmat ccoop = coopmat(spec_float); + +void main() +{ + coopmat coop = coopmat(1.0); + + float a = 2.0; + vec4 v = vec4(a); + v = cv; + mat4 m = mat4(v,v,v,v); + + int five = 5; + int six = 6; + int arr[3] = {five, five, five}; + int arr2[3][3] = {arr, arr, arr}; + arr2 = carr2; + + S s2 = S(six, six, six); + SS ss = SS(s2, s2); +} diff --git a/Test/spv.specConstantComposite2.vert b/Test/spv.specConstantComposite2.vert new file mode 100644 index 0000000000..d9d07a3ed5 --- /dev/null +++ b/Test/spv.specConstantComposite2.vert @@ -0,0 +1,98 @@ +#version 450 + +// constant_id specified scalar spec constants +layout(constant_id = 200) const int spec_int = 3; +layout(constant_id = 201) const float spec_float = 3.14; +layout(constant_id = 202) const + double spec_double = 3.1415926535897932384626433832795; +layout(constant_id = 203) const bool spec_bool = true; + +// const float cast_spec_float = float(spec_float); + +// Flat struct +struct flat_struct { + int i; + float f; + double d; + bool b; +}; + +// Nesting struct +struct nesting_struct { + flat_struct nested; + vec4 v; + int i; +}; + +// Expect OpSpecConstantComposite +// Flat struct initializer +//const flat_struct spec_flat_struct_all_spec = {spec_int, spec_float, +// spec_double, spec_bool}; +//const flat_struct spec_flat_struct_partial_spec = {30, 30.14, spec_double, +// spec_bool}; + +// Nesting struct initializer +//const nesting_struct nesting_struct_ctor = { +// {spec_int, spec_float, spec_double, false}, +// vec4(0.1, 0.1, 0.1, 0.1), +// spec_int}; + +// Vector constructor +//const vec4 spec_vec4_all_spec = +// vec4(spec_float, spec_float, spec_float, spec_float); +//const vec4 spec_vec4_partial_spec = +// vec4(spec_float, spec_float, 300.14, 300.14); +//const vec4 spec_vec4_from_one_scalar = vec4(spec_float); + +// Matrix constructor +//const mat2x3 spec_mat2x3 = mat2x3(spec_float, spec_float, spec_float, 1.1, 2.2, 3.3); +//const mat2x3 spec_mat2x3_from_one_scalar = mat2x3(spec_float); + +// Struct nesting constructor +//const nesting_struct spec_nesting_struct_all_spec = { +// spec_flat_struct_all_spec, spec_vec4_all_spec, spec_int}; +//const nesting_struct spec_nesting_struct_partial_spec = { +// spec_flat_struct_partial_spec, spec_vec4_partial_spec, 3000}; + +//const float spec_float_array[5] = {spec_float, spec_float, 1.0, 2.0, 3.0}; +//const int spec_int_array[5] = {spec_int, spec_int, 1, 2, 30}; + +// global_vec4_array_with_spec_length is not a spec constant, but its array +// size is. When calling global_vec4_array_with_spec_length.length(), A +// TIntermSymbol Node should be returned, instead of a TIntermConstantUnion +// node which represents a known constant value. +in vec4 global_vec4_array_with_spec_length[spec_int]; + +out vec4 color; + +void refer_primary_spec_const() { + if (spec_bool) color *= spec_int; +} + +void refer_composite_spec_const() { + //color += spec_vec4_all_spec; + //color -= spec_vec4_partial_spec; +} + +void refer_copmosite_dot_dereference() { + //color *= spec_nesting_struct_all_spec.i; + //color += spec_vec4_all_spec.x; +} + +void refer_composite_bracket_dereference() { + //color -= spec_float_array[1]; + //color /= spec_int_array[spec_int_array[spec_int]]; +} + +int refer_spec_const_array_length() { + int len = global_vec4_array_with_spec_length.length(); + return len; +} + +void declare_spec_const_in_func() { + //const nesting_struct spec_const_declared_in_func = { + // spec_flat_struct_partial_spec, spec_vec4_partial_spec, 10}; + //color /= spec_const_declared_in_func.i; +} + +void main() {} diff --git a/Test/vulkan.ast.vert b/Test/vulkan.ast.vert index b9e3e28b88..5817a23684 100644 --- a/Test/vulkan.ast.vert +++ b/Test/vulkan.ast.vert @@ -38,5 +38,5 @@ void main() ivec2[2](ivec2(sci2, sci2), ivec2(sci2, sci2)); // not a spec-const vec2(scf1, scf1); // spec-const - vec2[2](vec2(scf1, scf1), vec2(scf1, scf1)); // not a spec-const + vec2[2](vec2(scf1, scf1), vec2(scf1, scf1)); // spec-const } diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 2880cce18b..98a7d26883 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -399,6 +399,10 @@ void TParseContext::handlePragma(const TSourceLoc& loc, const TVector& if (spvVersion.spv < glslang::EShTargetSpv_1_3) error(loc, "requires SPIR-V 1.3", "#pragma use_variable_pointers", ""); intermediate.setUseVariablePointers(); + } else if (spvVersion.spv > 0 && tokens[0].compare("use_replicated_composites") == 0) { + if (tokens.size() != 1) + error(loc, "extra tokens", "#pragma", ""); + intermediate.setReplicatedComposites(); } else if (tokens[0].compare("once") == 0) { warn(loc, "not implemented", "#pragma once", ""); } else if (tokens[0].compare("glslang_binary_double_output") == 0) { @@ -3613,6 +3617,19 @@ bool TParseContext::constructorError(const TSourceLoc& loc, TIntermNode* node, T makeSpecConst = ! intArgument && !type.isArray(); break; + case EOpConstructCooperativeMatrixNV: + case EOpConstructCooperativeMatrixKHR: + case EOpConstructStruct: + { + const char *specConstantCompositeExt[] = { E_GL_EXT_spec_constant_composites }; + if (checkExtensionsRequested(loc, 1, specConstantCompositeExt, "spec constant aggregate constructor")) { + makeSpecConst = true; + } else { + makeSpecConst = false; + } + } + break; + default: // anything else wasn't white-listed in the spec as a conversion makeSpecConst = false; @@ -8355,6 +8372,11 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* int paramCount = 0; // keeps track of the constructor parameter number being checked + // We don't know "top down" whether type is a specialization constant, + // but a const becomes a specialization constant if any of its children are. + bool hasSpecConst = false; + bool isConstConstructor = true; + // for each parameter to the constructor call, check to see if the right type is passed or convert them // to the right type if possible (and allowed). // for structure constructors, just check if the right type is passed, no conversion is allowed. @@ -8367,13 +8389,24 @@ TIntermTyped* TParseContext::addConstructor(const TSourceLoc& loc, TIntermNode* else newNode = constructBuiltIn(type, op, (*p)->getAsTyped(), node->getLoc(), true); - if (newNode) + if (newNode) { *p = newNode; - else + if (!newNode->getType().getQualifier().isConstant()) + isConstConstructor = false; + if (newNode->getType().getQualifier().isSpecConstant()) + hasSpecConst = true; + } else return nullptr; } - TIntermTyped *ret_node = intermediate.setAggregateOperator(aggrNode, op, type, loc); + TIntermTyped* ret_node = intermediate.setAggregateOperator(aggrNode, op, type, loc); + + const char *specConstantCompositeExt[] = { E_GL_EXT_spec_constant_composites }; + if (checkExtensionsRequested(loc, 1, specConstantCompositeExt, "spec constant aggregate constructor")) { + if (isConstConstructor && hasSpecConst) { + ret_node->getWritableType().getQualifier().makeSpecConstant(); + } + } TIntermAggregate *agg_node = ret_node->getAsAggregate(); if (agg_node && (agg_node->isVector() || agg_node->isArray() || agg_node->isMatrix())) diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index 44ba9e0616..e016ef6b92 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -265,6 +265,7 @@ void TParseVersions::initializeExtensionBehavior() extensionBehavior[E_GL_EXT_expect_assume] = EBhDisable; extensionBehavior[E_GL_EXT_control_flow_attributes2] = EBhDisable; + extensionBehavior[E_GL_EXT_spec_constant_composites] = EBhDisable; extensionBehavior[E_GL_KHR_cooperative_matrix] = EBhDisable; @@ -519,6 +520,7 @@ void TParseVersions::getPreamble(std::string& preamble) "#define GL_EXT_fragment_shading_rate 1\n" "#define GL_EXT_shared_memory_block 1\n" "#define GL_EXT_shader_integer_mix 1\n" + "#define GL_EXT_spec_constant_composites 1\n" // GL_KHR_shader_subgroup "#define GL_KHR_shader_subgroup_basic 1\n" diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h index cfaeb1ff1e..75a823774e 100755 --- a/glslang/MachineIndependent/Versions.h +++ b/glslang/MachineIndependent/Versions.h @@ -222,6 +222,7 @@ const char* const E_GL_EXT_texture_array = "GL_EXT_texture_ar const char* const E_GL_EXT_maximal_reconvergence = "GL_EXT_maximal_reconvergence"; const char* const E_GL_EXT_expect_assume = "GL_EXT_expect_assume"; const char* const E_GL_EXT_control_flow_attributes2 = "GL_EXT_control_flow_attributes2"; +const char* const E_GL_EXT_spec_constant_composites = "GL_EXT_spec_constant_composites"; // Arrays of extensions for the above viewportEXTs duplications diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 5e97147802..2a24cdaf7f 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -729,6 +729,11 @@ class TIntermediate { usePhysicalStorageBuffer = true; } bool usingPhysicalStorageBuffer() const { return usePhysicalStorageBuffer; } + void setReplicatedComposites() + { + useReplicatedComposites = true; + } + bool usingReplicatedComposites() const { return useReplicatedComposites; } void setUseVariablePointers() { useVariablePointers = true; @@ -1242,6 +1247,7 @@ class TIntermediate { bool subgroupUniformControlFlow; bool maximallyReconverges; bool usePhysicalStorageBuffer; + bool useReplicatedComposites { false }; TSpirvRequirement* spirvRequirement; TSpirvExecutionMode* spirvExecutionMode; diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 5ebd5b3158..b12799320d 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -468,6 +468,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.prepost.frag", "spv.privateVariableTypes.frag", "spv.qualifiers.vert", + "spv.replicate.comp", + "spv.replicatespec.comp", "spv.sample.frag", "spv.sampleId.frag", "spv.samplePosition.frag", diff --git a/known_good.json b/known_good.json index d01b293662..8dbe973df0 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "dd4b663e13c07fea4fbb3f70c1c91c86731099f7" + "commit": "148c97f6876e427efd76d2328122c3075eab4b8f" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "4f7b471f1a66b6d06462cd4ba57628cc0cd087d7" + "commit" : "ea77f2a826bc820cb8f57f9b2a7c7eccb681c731" }, { "name": "googletest", From 996c5d312399581792583b1724837567dc9cb670 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 11 Mar 2024 18:24:45 -0400 Subject: [PATCH 488/594] Add support for OpExtInstWithForwardRefs --- SPIRV/GLSL.ext.KHR.h | 1 + SPIRV/doc.cpp | 5 +++++ SPIRV/spirv.hpp | 2 ++ known_good.json | 26 +++++++++++++------------- 4 files changed, 21 insertions(+), 13 deletions(-) diff --git a/SPIRV/GLSL.ext.KHR.h b/SPIRV/GLSL.ext.KHR.h index ba26708def..38d3b974b0 100644 --- a/SPIRV/GLSL.ext.KHR.h +++ b/SPIRV/GLSL.ext.KHR.h @@ -62,5 +62,6 @@ static const char* const E_SPV_KHR_maximal_reconvergence = "SPV_KHR_maxim static const char* const E_SPV_KHR_subgroup_rotate = "SPV_KHR_subgroup_rotate"; static const char* const E_SPV_KHR_expect_assume = "SPV_KHR_expect_assume"; static const char* const E_SPV_EXT_replicated_composites = "SPV_EXT_replicated_composites"; +static const char* const E_SPV_KHR_relaxed_extended_instruction = "SPV_KHR_relaxed_extended_instruction"; #endif // #ifndef GLSLextKHR_H diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index f60a894910..141fb5b710 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1445,6 +1445,7 @@ const char* OpcodeString(int op) case 4429: return "OpSubgroupAnyKHR"; case 4430: return "OpSubgroupAllEqualKHR"; case 4432: return "OpSubgroupReadInvocationKHR"; + case 4433: return "OpExtInstWithForwardRefs"; case OpGroupNonUniformQuadAllKHR: return "OpGroupNonUniformQuadAllKHR"; case OpGroupNonUniformQuadAnyKHR: return "OpGroupNonUniformQuadAnyKHR"; @@ -1896,6 +1897,10 @@ void Parameterize() InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'"); InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); + InstructionDesc[OpExtInstWithForwardRefs].operands.push(OperandId, "'Set'"); + InstructionDesc[OpExtInstWithForwardRefs].operands.push(OperandLiteralNumber, "'Instruction'"); + InstructionDesc[OpExtInstWithForwardRefs].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); + InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'"); InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true); InstructionDesc[OpLoad].operands.push(OperandLiteralNumber, "", true); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 5821eced2a..0d93ba96e7 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1668,6 +1668,7 @@ enum Op { OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, + OpExtInstWithForwardRefs = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, @@ -2395,6 +2396,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case OpPtrDiff: *hasResult = true; *hasResultType = true; break; + case OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; case OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; diff --git a/known_good.json b/known_good.json index 8dbe973df0..a87331c80d 100644 --- a/known_good.json +++ b/known_good.json @@ -1,19 +1,19 @@ { "commits" : [ { - "name" : "spirv-tools", - "site" : "github", - "subrepo" : "KhronosGroup/SPIRV-Tools", - "subdir" : "External/spirv-tools", - "commit": "148c97f6876e427efd76d2328122c3075eab4b8f" - }, - { - "name" : "spirv-tools/external/spirv-headers", - "site" : "github", - "subrepo" : "KhronosGroup/SPIRV-Headers", - "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "ea77f2a826bc820cb8f57f9b2a7c7eccb681c731" - }, + "name" : "spirv-tools", + "site" : "github", + "subrepo" : "KhronosGroup/SPIRV-Tools", + "subdir" : "External/spirv-tools", + "commit": "6a2bdeee75eb35e5349c6993d33c9afe30237d79" + }, + { + "name" : "spirv-tools/external/spirv-headers", + "site" : "github", + "subrepo" : "KhronosGroup/SPIRV-Headers", + "subdir" : "External/spirv-tools/external/spirv-headers", + "commit" : "ff2afc3afc48dff4eec2a10f0212402a80708e38" + }, { "name": "googletest", "site": "github", From 81f7045aa00e1122a05b19a1fabf0ab22ddabb7b Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 11 Mar 2024 18:53:37 -0400 Subject: [PATCH 489/594] Emit debug info for buffer references Using OpExtInstWithForwardRefs, the debug type information for buffer reference types can be emitted alongside the OpFowardPointer opcode. --- SPIRV/SpvBuilder.cpp | 36 +++ SPIRV/SpvBuilder.h | 1 + .../spv.debuginfo.bufferref.glsl.frag.out | 297 +++++++++--------- 3 files changed, 188 insertions(+), 146 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index f07460d2b9..42fca364ff 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -182,6 +182,10 @@ Id Builder::makeForwardPointer(StorageClass storageClass) constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + if (emitNonSemanticShaderDebugInfo) { + const Id debugResultId = makeForwardPointerDebugType(storageClass); + debugId[type->getResultId()] = debugResultId; + } return type->getResultId(); } @@ -204,6 +208,15 @@ Id Builder::makePointerFromForwardPointer(StorageClass storageClass, Id forwardP constantsTypesGlobals.push_back(std::unique_ptr(type)); module.mapInstruction(type); + // If we are emitting nonsemantic debuginfo, we need to patch the debug pointer type + // that was emitted alongside the forward pointer, now that we have a pointee debug + // type for it to point to. + if (emitNonSemanticShaderDebugInfo) { + Instruction *debugForwardPointer = module.getInstruction(debugId[forwardPointerType]); + assert(debugId[pointee]); + debugForwardPointer->setIdOperand(2, debugId[pointee]); + } + return type->getResultId(); } @@ -1045,6 +1058,29 @@ Id Builder::makePointerDebugType(StorageClass storageClass, Id const baseType) return type->getResultId(); } +// Emit a OpExtInstWithForwardRefs nonsemantic instruction for a pointer debug type +// where we don't have the pointee yet. Since we don't have the pointee yet, it just +// points to itself and we rely on patching it later. +Id Builder::makeForwardPointerDebugType(StorageClass storageClass) +{ + const Id scID = makeUintConstant(storageClass); + + this->addExtension(spv::E_SPV_KHR_relaxed_extended_instruction); + + Instruction *type = new Instruction(getUniqueId(), makeVoidType(), OpExtInstWithForwardRefs); + type->addIdOperand(nonSemanticShaderDebugInfo); + type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypePointer); + type->addIdOperand(type->getResultId()); + type->addIdOperand(scID); + type->addIdOperand(makeUintConstant(0)); + + groupedDebugTypes[NonSemanticShaderDebugInfo100DebugTypePointer].push_back(type); + constantsTypesGlobals.push_back(std::unique_ptr(type)); + module.mapInstruction(type); + + return type->getResultId(); +} + Id Builder::makeDebugSource(const Id fileName) { if (debugSourceId.find(fileName) != debugSourceId.end()) return debugSourceId[fileName]; diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index fd04f630d3..35327d6e70 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -235,6 +235,7 @@ class Builder { Id makeCompositeDebugType(std::vector const& memberTypes, char const*const name, NonSemanticShaderDebugInfo100DebugCompositeType const tag, bool const isOpaqueType = false); Id makePointerDebugType(StorageClass storageClass, Id const baseType); + Id makeForwardPointerDebugType(StorageClass storageClass); Id makeDebugSource(const Id fileName); Id makeDebugCompilationUnit(); Id createDebugGlobalVariable(Id const type, char const*const name, Id const variable); diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index f4628811a6..6b877bf599 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -1,17 +1,18 @@ spv.debuginfo.bufferref.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 142 +// Id's are bound by 146 Capability Shader Capability PhysicalStorageBufferAddressesEXT Extension "SPV_KHR_non_semantic_info" Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_KHR_relaxed_extended_instruction" Extension "SPV_KHR_storage_buffer_storage_class" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel PhysicalStorageBuffer64EXT GLSL450 - EntryPoint Fragment 14 "main" 76 131 + EntryPoint Fragment 14 "main" 82 135 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.bufferref.glsl.frag" 8: String "uint" @@ -52,46 +53,47 @@ void main() { out_fragColor = vec4(vertex_pos0, 1.0); } " - 31: String "Mesh" - 34: String "float" - 40: String "data" - 44: String "MeshVertexPositions" - 50: String "meshData" - 63: String "PerPass_meshes" - 69: String "perPass_meshes" - 71: String "int" - 78: String "tri_idx0" - 94: String "vertex_pos0" - 133: String "out_fragColor" + 33: String "positions" + 37: String "Mesh" + 40: String "float" + 46: String "data" + 49: String "MeshVertexPositions" + 55: String "meshData" + 69: String "PerPass_meshes" + 75: String "perPass_meshes" + 77: String "int" + 84: String "tri_idx0" + 100: String "vertex_pos0" + 137: String "out_fragColor" SourceExtension "GL_EXT_buffer_reference" Name 14 "main" - Name 29 "Mesh" - MemberName 29(Mesh) 0 "positions" - Name 38 "MeshVertexPositions" - MemberName 38(MeshVertexPositions) 0 "data" - Name 48 "meshData" - Name 54 "Mesh" - MemberName 54(Mesh) 0 "positions" - Name 58 "PerPass_meshes" - MemberName 58(PerPass_meshes) 0 "data" - Name 67 "perPass_meshes" - Name 76 "tri_idx0" - Name 92 "vertex_pos0" - Name 131 "out_fragColor" - Decorate 36 ArrayStride 4 - MemberDecorate 38(MeshVertexPositions) 0 Offset 0 - Decorate 38(MeshVertexPositions) Block - MemberDecorate 54(Mesh) 0 Offset 0 - Decorate 56 ArrayStride 8 - MemberDecorate 58(PerPass_meshes) 0 NonWritable - MemberDecorate 58(PerPass_meshes) 0 Offset 0 - Decorate 58(PerPass_meshes) Block - Decorate 67(perPass_meshes) DescriptorSet 0 - Decorate 67(perPass_meshes) Binding 0 - Decorate 76(tri_idx0) Flat - Decorate 76(tri_idx0) Location 0 - Decorate 131(out_fragColor) Location 0 - Decorate 48(meshData) DecorationAliasedPointerEXT + Name 31 "Mesh" + MemberName 31(Mesh) 0 "positions" + Name 44 "MeshVertexPositions" + MemberName 44(MeshVertexPositions) 0 "data" + Name 53 "meshData" + Name 59 "Mesh" + MemberName 59(Mesh) 0 "positions" + Name 64 "PerPass_meshes" + MemberName 64(PerPass_meshes) 0 "data" + Name 73 "perPass_meshes" + Name 82 "tri_idx0" + Name 98 "vertex_pos0" + Name 135 "out_fragColor" + Decorate 42 ArrayStride 4 + MemberDecorate 44(MeshVertexPositions) 0 Offset 0 + Decorate 44(MeshVertexPositions) Block + MemberDecorate 59(Mesh) 0 Offset 0 + Decorate 62 ArrayStride 8 + MemberDecorate 64(PerPass_meshes) 0 NonWritable + MemberDecorate 64(PerPass_meshes) 0 Offset 0 + Decorate 64(PerPass_meshes) Block + Decorate 73(perPass_meshes) DescriptorSet 0 + Decorate 73(perPass_meshes) Binding 0 + Decorate 82(tri_idx0) Flat + Decorate 82(tri_idx0) Location 0 + Decorate 135(out_fragColor) Location 0 + Decorate 53(meshData) DecorationAliasedPointerEXT 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -109,116 +111,119 @@ void main() { 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 22 23 18 24 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 TypeForwardPointer 28 PhysicalStorageBufferEXT - 29(Mesh): TypeStruct 28 - 32: 7(int) Constant 21 - 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 22 18 32 12 21 31 12 13 - 33: TypeFloat 32 - 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 34 10 13 12 - 36: TypeRuntimeArray 33(float) - 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 12 -38(MeshVertexPositions): TypeStruct 36 - 41: 7(int) Constant 5 - 42: 7(int) Constant 9 - 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 37 18 41 42 12 12 13 - 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 44 22 18 32 12 21 44 12 13 39 - 28: TypePointer PhysicalStorageBufferEXT 38(MeshVertexPositions) - 45: TypePointer Function 29(Mesh) - 46: 7(int) Constant 7 - 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 46 12 - 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 30 18 32 12 17 23 - 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 54(Mesh): TypeStruct 28(ptr) - 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 31 22 18 32 12 21 31 12 13 - 56: TypeRuntimeArray 54(Mesh) - 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 55 12 -58(PerPass_meshes): TypeStruct 56 - 60: 7(int) Constant 13 - 61: 7(int) Constant 8 - 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 40 57 18 60 61 12 12 13 - 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 63 22 18 32 12 21 63 12 13 59 - 64: TypePointer StorageBuffer 58(PerPass_meshes) - 65: 7(int) Constant 12 - 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 62 65 12 -67(perPass_meshes): 64(ptr) Variable StorageBuffer - 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 69 62 18 32 12 21 69 67(perPass_meshes) 61 - 70: TypeInt 32 1 - 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 71 10 23 12 - 73: 70(int) Constant 0 - 74: TypePointer Input 7(int) - 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 - 76(tri_idx0): 74(ptr) Variable Input - 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 78 9 18 32 12 21 78 76(tri_idx0) 61 - 80: TypePointer StorageBuffer 54(Mesh) - 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 55 65 12 - 85: TypePointer Function 28(ptr) - 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 88: TypeVector 33(float) 3 - 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 13 - 90: TypePointer Function 88(fvec3) - 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 46 12 - 95: 7(int) Constant 23 - 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 94 89 18 95 12 17 23 - 102: TypePointer PhysicalStorageBufferEXT 33(float) - 103: 7(int) Constant 5349 - 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 35 103 12 - 109: 7(int) Constant 24 - 118: 7(int) Constant 25 - 127: TypeVector 33(float) 4 - 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 35 23 - 129: TypePointer Output 127(fvec4) - 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 13 12 -131(out_fragColor): 129(ptr) Variable Output - 134: 7(int) Constant 27 - 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 133 128 18 134 12 21 133 131(out_fragColor) 61 - 137: 33(float) Constant 1065353216 + 29: 7(int) Constant 5349 + 30: 4 ExtInstWithForwardRefs 1(NonSemantic.Shader.DebugInfo.100) 3 48 29 12 + 31(Mesh): TypeStruct 28 + 34: 7(int) Constant 9 + 35: 7(int) Constant 23 + 32: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 33 30 18 34 35 12 12 13 + 38: 7(int) Constant 21 + 36: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 37 22 18 38 12 21 37 12 13 32 + 39: TypeFloat 32 + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 40 10 13 12 + 42: TypeRuntimeArray 39(float) + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 41 12 +44(MeshVertexPositions): TypeStruct 42 + 47: 7(int) Constant 5 + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 43 18 47 34 12 12 13 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 49 22 18 38 12 21 49 12 13 45 + 28: TypePointer PhysicalStorageBufferEXT 44(MeshVertexPositions) + 50: TypePointer Function 31(Mesh) + 51: 7(int) Constant 7 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 36 51 12 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 55 36 18 38 12 17 23 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 59(Mesh): TypeStruct 28(ptr) + 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 33 30 18 34 35 12 12 13 + 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 37 22 18 38 12 21 37 12 13 60 + 62: TypeRuntimeArray 59(Mesh) + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 61 12 +64(PerPass_meshes): TypeStruct 62 + 66: 7(int) Constant 13 + 67: 7(int) Constant 8 + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 46 63 18 66 67 12 12 13 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 69 22 18 38 12 21 69 12 13 65 + 70: TypePointer StorageBuffer 64(PerPass_meshes) + 71: 7(int) Constant 12 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 68 71 12 +73(perPass_meshes): 70(ptr) Variable StorageBuffer + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 75 68 18 38 12 21 75 73(perPass_meshes) 67 + 76: TypeInt 32 1 + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 77 10 23 12 + 79: 76(int) Constant 0 + 80: TypePointer Input 7(int) + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 + 82(tri_idx0): 80(ptr) Variable Input + 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 9 18 38 12 21 84 82(tri_idx0) 67 + 86: TypePointer StorageBuffer 59(Mesh) + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 61 71 12 + 91: TypePointer Function 28(ptr) + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 30 51 12 + 94: TypeVector 39(float) 3 + 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 13 + 96: TypePointer Function 94(fvec3) + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 95 51 12 + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 100 95 18 35 12 17 23 + 107: TypePointer PhysicalStorageBufferEXT 39(float) + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 29 12 + 113: 7(int) Constant 24 + 122: 7(int) Constant 25 + 131: TypeVector 39(float) 4 + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 41 23 + 133: TypePointer Output 131(fvec4) + 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 132 13 12 +135(out_fragColor): 133(ptr) Variable Output + 138: 7(int) Constant 27 + 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 137 132 18 138 12 21 137 135(out_fragColor) 67 + 141: 39(float) Constant 1065353216 14(main): 4 Function None 5 15: Label - 48(meshData): 45(ptr) Variable Function - 92(vertex_pos0): 90(ptr) Variable Function + 53(meshData): 50(ptr) Variable Function + 98(vertex_pos0): 96(ptr) Variable Function 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 27: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 20 20 12 12 25: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 17 14(main) - 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 32 32 12 12 - 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 49 48(meshData) 52 - 79: 7(int) Load 76(tri_idx0) - 82: 80(ptr) AccessChain 67(perPass_meshes) 73 79 - 83: 54(Mesh) Load 82 - 84: 28(ptr) CompositeExtract 83 0 - 87: 85(ptr) AccessChain 48(meshData) 73 - Store 87 84 - 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12 - 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 93 92(vertex_pos0) 52 - 98: 85(ptr) AccessChain 48(meshData) 73 - 99: 28(ptr) Load 98 - 100: 7(int) Load 76(tri_idx0) - 101: 7(int) IMul 13 100 - 105: 102(ptr) AccessChain 99 73 101 - 106: 33(float) Load 105 Aligned 4 - 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 109 109 12 12 - 107: 85(ptr) AccessChain 48(meshData) 73 - 110: 28(ptr) Load 107 - 111: 7(int) Load 76(tri_idx0) - 112: 7(int) IMul 13 111 - 113: 7(int) IAdd 112 22 - 114: 102(ptr) AccessChain 110 73 113 - 115: 33(float) Load 114 Aligned 4 - 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 118 118 12 12 - 116: 85(ptr) AccessChain 48(meshData) 73 - 119: 28(ptr) Load 116 - 120: 7(int) Load 76(tri_idx0) - 121: 7(int) IMul 13 120 - 122: 7(int) IAdd 121 24 - 123: 102(ptr) AccessChain 119 73 122 - 124: 33(float) Load 123 Aligned 4 - 125: 88(fvec3) CompositeConstruct 106 115 124 - 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 95 95 12 12 - Store 92(vertex_pos0) 125 - 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 134 134 12 12 - 135: 88(fvec3) Load 92(vertex_pos0) - 138: 33(float) CompositeExtract 135 0 - 139: 33(float) CompositeExtract 135 1 - 140: 33(float) CompositeExtract 135 2 - 141: 127(fvec4) CompositeConstruct 138 139 140 137 - Store 131(out_fragColor) 141 + 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 38 38 12 12 + 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 54 53(meshData) 57 + 85: 7(int) Load 82(tri_idx0) + 88: 86(ptr) AccessChain 73(perPass_meshes) 79 85 + 89: 59(Mesh) Load 88 + 90: 28(ptr) CompositeExtract 89 0 + 93: 91(ptr) AccessChain 53(meshData) 79 + Store 93 90 + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 35 35 12 12 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 99 98(vertex_pos0) 57 + 103: 91(ptr) AccessChain 53(meshData) 79 + 104: 28(ptr) Load 103 + 105: 7(int) Load 82(tri_idx0) + 106: 7(int) IMul 13 105 + 109: 107(ptr) AccessChain 104 79 106 + 110: 39(float) Load 109 Aligned 4 + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 113 113 12 12 + 111: 91(ptr) AccessChain 53(meshData) 79 + 114: 28(ptr) Load 111 + 115: 7(int) Load 82(tri_idx0) + 116: 7(int) IMul 13 115 + 117: 7(int) IAdd 116 22 + 118: 107(ptr) AccessChain 114 79 117 + 119: 39(float) Load 118 Aligned 4 + 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 122 122 12 12 + 120: 91(ptr) AccessChain 53(meshData) 79 + 123: 28(ptr) Load 120 + 124: 7(int) Load 82(tri_idx0) + 125: 7(int) IMul 13 124 + 126: 7(int) IAdd 125 24 + 127: 107(ptr) AccessChain 123 79 126 + 128: 39(float) Load 127 Aligned 4 + 129: 94(fvec3) CompositeConstruct 110 119 128 + 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 35 35 12 12 + Store 98(vertex_pos0) 129 + 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 138 138 12 12 + 139: 94(fvec3) Load 98(vertex_pos0) + 142: 39(float) CompositeExtract 139 0 + 143: 39(float) CompositeExtract 139 1 + 144: 39(float) CompositeExtract 139 2 + 145: 131(fvec4) CompositeConstruct 142 143 144 141 + Store 135(out_fragColor) 145 Return FunctionEnd From 73eccd4b67985d344578cade8958214cee0a3f6e Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 6 Jun 2024 18:07:12 -0400 Subject: [PATCH 490/594] Add the KHR suffix for OpExtInstWithForwardRefsKHR instruction --- SPIRV/SpvBuilder.cpp | 4 ++-- SPIRV/doc.cpp | 8 ++++---- SPIRV/spirv.hpp | 4 ++-- Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out | 2 +- known_good.json | 4 ++-- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 42fca364ff..51c6bc21d4 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1058,7 +1058,7 @@ Id Builder::makePointerDebugType(StorageClass storageClass, Id const baseType) return type->getResultId(); } -// Emit a OpExtInstWithForwardRefs nonsemantic instruction for a pointer debug type +// Emit a OpExtInstWithForwardRefsKHR nonsemantic instruction for a pointer debug type // where we don't have the pointee yet. Since we don't have the pointee yet, it just // points to itself and we rely on patching it later. Id Builder::makeForwardPointerDebugType(StorageClass storageClass) @@ -1067,7 +1067,7 @@ Id Builder::makeForwardPointerDebugType(StorageClass storageClass) this->addExtension(spv::E_SPV_KHR_relaxed_extended_instruction); - Instruction *type = new Instruction(getUniqueId(), makeVoidType(), OpExtInstWithForwardRefs); + Instruction *type = new Instruction(getUniqueId(), makeVoidType(), OpExtInstWithForwardRefsKHR); type->addIdOperand(nonSemanticShaderDebugInfo); type->addImmediateOperand(NonSemanticShaderDebugInfo100DebugTypePointer); type->addIdOperand(type->getResultId()); diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index 141fb5b710..de465e1dde 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1445,7 +1445,7 @@ const char* OpcodeString(int op) case 4429: return "OpSubgroupAnyKHR"; case 4430: return "OpSubgroupAllEqualKHR"; case 4432: return "OpSubgroupReadInvocationKHR"; - case 4433: return "OpExtInstWithForwardRefs"; + case 4433: return "OpExtInstWithForwardRefsKHR"; case OpGroupNonUniformQuadAllKHR: return "OpGroupNonUniformQuadAllKHR"; case OpGroupNonUniformQuadAnyKHR: return "OpGroupNonUniformQuadAnyKHR"; @@ -1897,9 +1897,9 @@ void Parameterize() InstructionDesc[OpExtInst].operands.push(OperandLiteralNumber, "'Instruction'"); InstructionDesc[OpExtInst].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); - InstructionDesc[OpExtInstWithForwardRefs].operands.push(OperandId, "'Set'"); - InstructionDesc[OpExtInstWithForwardRefs].operands.push(OperandLiteralNumber, "'Instruction'"); - InstructionDesc[OpExtInstWithForwardRefs].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); + InstructionDesc[OpExtInstWithForwardRefsKHR].operands.push(OperandId, "'Set'"); + InstructionDesc[OpExtInstWithForwardRefsKHR].operands.push(OperandLiteralNumber, "'Instruction'"); + InstructionDesc[OpExtInstWithForwardRefsKHR].operands.push(OperandVariableIds, "'Operand 1', +\n'Operand 2', +\n..."); InstructionDesc[OpLoad].operands.push(OperandId, "'Pointer'"); InstructionDesc[OpLoad].operands.push(OperandMemoryAccess, "", true); diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index 0d93ba96e7..bb3d715e86 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1668,7 +1668,7 @@ enum Op { OpSubgroupAllEqualKHR = 4430, OpGroupNonUniformRotateKHR = 4431, OpSubgroupReadInvocationKHR = 4432, - OpExtInstWithForwardRefs = 4433, + OpExtInstWithForwardRefsKHR = 4433, OpTraceRayKHR = 4445, OpExecuteCallableKHR = 4446, OpConvertUToAccelerationStructureKHR = 4447, @@ -2396,7 +2396,7 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpPtrEqual: *hasResult = true; *hasResultType = true; break; case OpPtrNotEqual: *hasResult = true; *hasResultType = true; break; case OpPtrDiff: *hasResult = true; *hasResultType = true; break; - case OpExtInstWithForwardRefs: *hasResult = true; *hasResultType = true; break; + case OpExtInstWithForwardRefsKHR: *hasResult = true; *hasResultType = true; break; case OpColorAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case OpDepthAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; case OpStencilAttachmentReadEXT: *hasResult = true; *hasResultType = true; break; diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index 6b877bf599..c47f0e664f 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -112,7 +112,7 @@ void main() { 17: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 16 6 18 20 12 21 16 13 20 TypeForwardPointer 28 PhysicalStorageBufferEXT 29: 7(int) Constant 5349 - 30: 4 ExtInstWithForwardRefs 1(NonSemantic.Shader.DebugInfo.100) 3 48 29 12 + 30: 4 ExtInstWithForwardRefsKHR 1(NonSemantic.Shader.DebugInfo.100) 3 48 29 12 31(Mesh): TypeStruct 28 34: 7(int) Constant 9 35: 7(int) Constant 23 diff --git a/known_good.json b/known_good.json index a87331c80d..c6de6b1834 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "6a2bdeee75eb35e5349c6993d33c9afe30237d79" + "commit": "ce46482db7ab3ea9c52fce832d27ca40b14f8e87" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "ff2afc3afc48dff4eec2a10f0212402a80708e38" + "commit" : "eb49bb7b1136298b77945c52b4bbbc433f7885de" }, { "name": "googletest", From d2b2a3d0577def276ff2805934b32893ef3e9a01 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 06:56:58 +0000 Subject: [PATCH 491/594] Bump lukka/get-cmake from 3.29.3 to 3.29.5 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.29.3 to 3.29.5. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59...18d87816d12dd87ec1449d47b9b3a587e0a1cc19) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index cd106e159d..aee4a305a0 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index f93556f282..38ebdc0d3a 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -127,7 +127,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -151,7 +151,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -169,7 +169,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -198,7 +198,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -224,7 +224,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@c57ffe818cee3ee5f08fc1cc78c8bbede1cbbe59 # v3.29.3 + - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: From 68821c4da8189262228bbd51e56ed75971b2d2c9 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 10 Jun 2024 06:57:04 +0000 Subject: [PATCH 492/594] Bump github/codeql-action from 3.25.7 to 3.25.8 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.7 to 3.25.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/f079b8493333aace61c81488f8bd40919487bd9f...2e230e8fe0ad3a14a340ad0815ddb96d599d2aff) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1d6da9b15b..3aa30b6856 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@f079b8493333aace61c81488f8bd40919487bd9f # v3.25.7 + uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 with: sarif_file: results.sarif From 02263efcd602a255e3da13f46c873e2242ae2919 Mon Sep 17 00:00:00 2001 From: Pedro Olsen Ferreira Date: Fri, 7 Jun 2024 12:48:05 +0100 Subject: [PATCH 493/594] Add support for the ARM extended matrix layout --- SPIRV/GLSL.ext.EXT.h | 1 + SPIRV/GlslangToSpv.cpp | 12 + SPIRV/doc.cpp | 2 + SPIRV/spirv.hpp | 3 + .../spv.coopmat_armlayout.comp.out | 406 ++++++++++++++++++ Test/spv.coopmat_armlayout.comp | 121 ++++++ glslang/MachineIndependent/Initialize.cpp | 2 + gtests/Spv.FromFile.cpp | 1 + 8 files changed, 548 insertions(+) create mode 100644 Test/baseResults/spv.coopmat_armlayout.comp.out create mode 100644 Test/spv.coopmat_armlayout.comp diff --git a/SPIRV/GLSL.ext.EXT.h b/SPIRV/GLSL.ext.EXT.h index caab279382..07f3c3026a 100644 --- a/SPIRV/GLSL.ext.EXT.h +++ b/SPIRV/GLSL.ext.EXT.h @@ -41,5 +41,6 @@ static const char* const E_SPV_EXT_shader_atomic_float_min_max = "SPV_EXT_shader static const char* const E_SPV_EXT_shader_image_int64 = "SPV_EXT_shader_image_int64"; static const char* const E_SPV_EXT_shader_tile_image = "SPV_EXT_shader_tile_image"; static const char* const E_SPV_EXT_mesh_shader = "SPV_EXT_mesh_shader"; +static const char* const E_SPV_ARM_cooperative_matrix_layouts = "SPV_ARM_cooperative_matrix_layouts"; #endif // #ifndef GLSLextEXT_H diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 16e2246639..0fd79b1a4e 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -3705,6 +3705,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt idImmOps.push_back(spv::IdImmediate(true, operands[1])); // buf if (node->getOp() == glslang::EOpCooperativeMatrixLoad) { idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout + auto layout = builder.getConstantScalar(operands[3]); + if (layout == spv::CooperativeMatrixLayoutRowBlockedInterleavedARM || + layout == spv::CooperativeMatrixLayoutColumnBlockedInterleavedARM) { + builder.addExtension(spv::E_SPV_ARM_cooperative_matrix_layouts); + builder.addCapability(spv::CapabilityCooperativeMatrixLayoutsARM); + } idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride } else { idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride @@ -3729,6 +3735,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt idImmOps.push_back(spv::IdImmediate(true, operands[0])); // object if (node->getOp() == glslang::EOpCooperativeMatrixStore) { idImmOps.push_back(spv::IdImmediate(true, operands[3])); // matrixLayout + auto layout = builder.getConstantScalar(operands[3]); + if (layout == spv::CooperativeMatrixLayoutRowBlockedInterleavedARM || + layout == spv::CooperativeMatrixLayoutColumnBlockedInterleavedARM) { + builder.addExtension(spv::E_SPV_ARM_cooperative_matrix_layouts); + builder.addCapability(spv::CapabilityCooperativeMatrixLayoutsARM); + } idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride } else { idImmOps.push_back(spv::IdImmediate(true, operands[2])); // stride diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp index de465e1dde..0105caa2ed 100755 --- a/SPIRV/doc.cpp +++ b/SPIRV/doc.cpp @@ -1035,6 +1035,8 @@ const char* CapabilityString(int info) case CapabilityTileImageDepthReadAccessEXT: return "TileImageDepthReadAccessEXT"; case CapabilityTileImageStencilReadAccessEXT: return "TileImageStencilReadAccessEXT"; + case CapabilityCooperativeMatrixLayoutsARM: return "CooperativeMatrixLayoutsARM"; + case CapabilityFragmentShadingRateKHR: return "FragmentShadingRateKHR"; case CapabilityDemoteToHelperInvocationEXT: return "DemoteToHelperInvocationEXT"; diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index bb3d715e86..afa89a585b 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -1002,6 +1002,7 @@ enum Capability { CapabilityTileImageColorReadAccessEXT = 4166, CapabilityTileImageDepthReadAccessEXT = 4167, CapabilityTileImageStencilReadAccessEXT = 4168, + CapabilityCooperativeMatrixLayoutsARM = 4201, CapabilityFragmentShadingRateKHR = 4422, CapabilitySubgroupBallotKHR = 4423, CapabilityDrawParameters = 4427, @@ -1302,6 +1303,8 @@ enum CooperativeMatrixOperandsMask { enum CooperativeMatrixLayout { CooperativeMatrixLayoutRowMajorKHR = 0, CooperativeMatrixLayoutColumnMajorKHR = 1, + CooperativeMatrixLayoutRowBlockedInterleavedARM = 4202, + CooperativeMatrixLayoutColumnBlockedInterleavedARM = 4203, CooperativeMatrixLayoutMax = 0x7fffffff, }; diff --git a/Test/baseResults/spv.coopmat_armlayout.comp.out b/Test/baseResults/spv.coopmat_armlayout.comp.out new file mode 100644 index 0000000000..1af49f2924 --- /dev/null +++ b/Test/baseResults/spv.coopmat_armlayout.comp.out @@ -0,0 +1,406 @@ +spv.coopmat_armlayout.comp +Validation failed +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 251 + + Capability Shader + Capability Float16 + Capability Int16 + Capability Int8 + Capability CooperativeMatrixLayoutsARM + Capability StorageUniformBufferBlock16 + Capability VulkanMemoryModelKHR + Capability PhysicalStorageBufferAddressesEXT + Capability CooperativeMatrixKHR + Extension "SPV_ARM_cooperative_matrix_layouts" + Extension "SPV_KHR_16bit_storage" + Extension "SPV_KHR_cooperative_matrix" + Extension "SPV_KHR_physical_storage_buffer" + Extension "SPV_KHR_storage_buffer_storage_class" + Extension "SPV_KHR_vulkan_memory_model" + 1: ExtInstImport "GLSL.std.450" + MemoryModel PhysicalStorageBuffer64EXT VulkanKHR + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 64 1 1 + Source GLSL 450 + SourceExtension "GL_EXT_buffer_reference" + SourceExtension "GL_EXT_shader_explicit_arithmetic_types" + SourceExtension "GL_KHR_cooperative_matrix" + SourceExtension "GL_KHR_memory_scope_semantics" + Name 4 "main" + Name 15 "f16(f161;" + Name 14 "m" + Name 22 "f32(f1;" + Name 21 "m" + Name 35 "m" + Name 53 "m2" + Name 57 "x" + Name 65 "tempArg" + Name 69 "Block" + MemberName 69(Block) 0 "y" + MemberName 69(Block) 1 "x" + Name 71 "block" + Name 81 "tempArg" + Name 86 "Block16" + MemberName 86(Block16) 0 "y" + MemberName 86(Block16) 1 "x" + MemberName 86(Block16) 2 "b" + Name 89 "Block" + MemberName 89(Block) 0 "y" + MemberName 89(Block) 1 "x" + Name 91 "block16" + Name 98 "tempArg" + Name 111 "D" + Name 115 "A" + Name 119 "B" + Name 121 "C" + Name 125 "l" + Name 129 "Y" + Name 130 "Z" + Name 133 "F" + Name 138 "a" + Name 142 "md1" + Name 153 "mC2" + Name 158 "tempArg" + Name 164 "tempArg" + Name 170 "p1" + Name 171 "param" + Name 174 "p2" + Name 175 "param" + Name 189 "tempArg" + Name 194 "shmatrix" + Name 198 "ms" + Name 205 "ms8A" + Name 209 "ms8B" + Name 213 "ms8C" + Name 228 "m16" + Name 234 "mC" + Name 235 "F" + Name 240 "S" + MemberName 240(S) 0 "a" + MemberName 240(S) 1 "b" + MemberName 240(S) 2 "c" + Name 245 "SC" + Name 250 "scm" + Decorate 67 ArrayStride 4 + Decorate 68 ArrayStride 4 + MemberDecorate 69(Block) 0 Offset 0 + MemberDecorate 69(Block) 1 Offset 4194304 + Decorate 69(Block) Block + Decorate 71(block) DescriptorSet 0 + Decorate 71(block) Binding 0 + Decorate 82 ArrayStride 2 + Decorate 84 ArrayStride 2 + MemberDecorate 86(Block16) 0 Offset 0 + MemberDecorate 86(Block16) 1 Offset 2097152 + MemberDecorate 86(Block16) 2 Offset 2097160 + Decorate 86(Block16) Block + Decorate 87 ArrayStride 4 + Decorate 88 ArrayStride 4 + MemberDecorate 89(Block) 0 Offset 0 + MemberDecorate 89(Block) 1 Offset 4194304 + Decorate 89(Block) Block + Decorate 91(block16) DescriptorSet 0 + Decorate 91(block16) Binding 0 + Decorate 129(Y) SpecId 0 + Decorate 233 BuiltIn WorkgroupSize + Decorate 235(F) SpecId 1 + Decorate 245(SC) SpecId 2 + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 16 + 7: TypeInt 32 0 + 8: 7(int) Constant 3 + 9: 7(int) Constant 8 + 10: 7(int) Constant 2 + 11: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 10 + 12: TypePointer Function 11 + 13: TypeFunction 11 12(ptr) + 17: TypeFloat 32 + 18: TypeCooperativeMatrixKHR 17(float) 8 9 9 10 + 19: TypePointer Function 18 + 20: TypeFunction 18 19(ptr) + 32: 7(int) Constant 16 + 33: TypeCooperativeMatrixKHR 17(float) 8 32 9 10 + 34: TypePointer Function 33 + 36: 17(float) Constant 0 + 37: 33 ConstantComposite 36 + 46: 17(float) Constant 1073741824 + 51: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 10 + 52: TypePointer Function 51 + 56: TypePointer Function 17(float) + 58: TypeInt 32 1 + 59: 58(int) Constant 1 + 62: 58(int) Constant 0 + 66: 7(int) Constant 1048576 + 67: TypeArray 17(float) 66 + 68: TypeRuntimeArray 17(float) + 69(Block): TypeStruct 67 68 + 70: TypePointer StorageBuffer 69(Block) + 71(block): 70(ptr) Variable StorageBuffer + 72: 7(int) Constant 5 + 73: TypePointer StorageBuffer 17(float) + 75: 7(int) Constant 128 + 76: 58(int) Constant 4202 + 82: TypeArray 6(float16_t) 66 + 83: 7(int) Constant 1 + 84: TypeArray 6(float16_t) 83 + TypeForwardPointer 85 PhysicalStorageBufferEXT + 86(Block16): TypeStruct 82 84 85 + 87: TypeArray 17(float) 66 + 88: TypeRuntimeArray 17(float) + 89(Block): TypeStruct 87 88 + 85: TypePointer PhysicalStorageBufferEXT 89(Block) + 90: TypePointer StorageBuffer 86(Block16) + 91(block16): 90(ptr) Variable StorageBuffer + 92: TypePointer StorageBuffer 6(float16_t) + 99: 58(int) Constant 2 + 100: TypePointer StorageBuffer 85(ptr) + 103: TypePointer PhysicalStorageBufferEXT 17(float) + 112: 7(int) Constant 0 + 113: TypeCooperativeMatrixKHR 6(float16_t) 8 32 9 112 + 114: TypePointer Function 113 + 117: TypeCooperativeMatrixKHR 6(float16_t) 8 9 9 83 + 118: TypePointer Function 117 + 124: TypePointer Function 58(int) + 128: 58(int) Constant 8 + 129(Y): 58(int) SpecConstant 2 + 130(Z): 58(int) SpecConstantOp 132 128 129(Y) + 131: TypeCooperativeMatrixKHR 6(float16_t) 8 130(Z) 130(Z) 10 + 132: TypePointer Function 131 + 134:6(float16_t) Constant 0 + 135: 131 ConstantComposite 134 + 136: TypeArray 33 72 + 137: TypePointer Function 136 + 139: 58(int) Constant 3 + 140: 17(float) Constant 1065353216 + 146: 58(int) Constant 1234 + 150: TypeCooperativeMatrixKHR 6(float16_t) 8 130(Z) 9 10 + 151: TypeArray 150 8 + 152: TypePointer Private 151 + 153(mC2): 152(ptr) Variable Private + 154: TypePointer Private 150 + 178: 11 ConstantComposite 134 + 179: 18 ConstantComposite 36 + 183:6(float16_t) Constant 16384 + 186: 17(float) Constant 1082130432 + 190: TypeVector 7(int) 4 + 191: 7(int) Constant 32 + 192: TypeArray 190(ivec4) 191 + 193: TypePointer Workgroup 192 + 194(shmatrix): 193(ptr) Variable Workgroup + 195: TypePointer Workgroup 190(ivec4) + 202: TypeInt 8 1 + 203: TypeCooperativeMatrixKHR 202(int8_t) 8 9 9 112 + 204: TypePointer Function 203 + 207: TypeCooperativeMatrixKHR 202(int8_t) 8 9 9 83 + 208: TypePointer Function 207 + 211: TypeCooperativeMatrixKHR 202(int8_t) 8 9 9 10 + 212: TypePointer Function 211 + 223: 58(int) Constant 16 + 225: TypeInt 16 1 + 226: TypeCooperativeMatrixKHR 225(int16_t) 8 9 9 112 + 227: TypePointer Function 226 + 231: TypeVector 7(int) 3 + 232: 7(int) Constant 64 + 233: 231(ivec3) ConstantComposite 232 83 83 + 234(mC): 154(ptr) Variable Private + 235(F): 17(float) SpecConstant 1077936128 + 236: TypeCooperativeMatrixKHR 17(float) 8 130(Z) 9 10 + 237: 236 ConstantComposite 36 + 238:6(float16_t) Constant 15360 + 239: 11 ConstantComposite 238 + 240(S): TypeStruct 58(int) 58(int) 58(int) + 241: 58(int) Constant 12 + 242: 58(int) Constant 23 + 243: 58(int) Constant 34 + 244: 240(S) ConstantComposite 241 242 243 + 245(SC): 58(int) SpecConstant 1 + 246: TypeCooperativeMatrixKHR 6(float16_t) 8 245(SC) 245(SC) 10 + 247: TypeArray 246 245(SC) + 248: TypeArray 247 245(SC) + 249: TypePointer Private 248 + 250(scm): 249(ptr) Variable Private + 4(main): 2 Function None 3 + 5: Label + 35(m): 34(ptr) Variable Function + 53(m2): 52(ptr) Variable Function + 57(x): 56(ptr) Variable Function + 65(tempArg): 34(ptr) Variable Function + 81(tempArg): 52(ptr) Variable Function + 98(tempArg): 34(ptr) Variable Function + 111(D): 34(ptr) Variable Function + 115(A): 114(ptr) Variable Function + 119(B): 118(ptr) Variable Function + 121(C): 34(ptr) Variable Function + 125(l): 124(ptr) Variable Function + 133(F): 132(ptr) Variable Function + 138(a): 137(ptr) Variable Function + 142(md1): 56(ptr) Variable Function + 158(tempArg): 34(ptr) Variable Function + 164(tempArg): 52(ptr) Variable Function + 170(p1): 12(ptr) Variable Function + 171(param): 12(ptr) Variable Function + 174(p2): 19(ptr) Variable Function + 175(param): 19(ptr) Variable Function + 189(tempArg): 52(ptr) Variable Function + 198(ms): 52(ptr) Variable Function + 205(ms8A): 204(ptr) Variable Function + 209(ms8B): 208(ptr) Variable Function + 213(ms8C): 212(ptr) Variable Function + 228(m16): 227(ptr) Variable Function + Store 35(m) 37 + 38: 33 Load 35(m) + 39: 33 Load 35(m) + 40: 33 FAdd 38 39 + Store 35(m) 40 + 41: 33 Load 35(m) + 42: 33 Load 35(m) + 43: 33 FSub 41 42 + Store 35(m) 43 + 44: 33 Load 35(m) + 45: 33 FNegate 44 + Store 35(m) 45 + 47: 33 Load 35(m) + 48: 33 MatrixTimesScalar 47 46 + Store 35(m) 48 + 49: 33 Load 35(m) + 50: 33 MatrixTimesScalar 49 46 + Store 35(m) 50 + 54: 33 Load 35(m) + 55: 51 FConvert 54 + Store 53(m2) 55 + 60: 56(ptr) AccessChain 35(m) 59 + 61: 17(float) Load 60 + Store 57(x) 61 + 63: 17(float) Load 57(x) + 64: 56(ptr) AccessChain 35(m) 62 + Store 64 63 + 74: 73(ptr) AccessChain 71(block) 59 32 + 77: 33 CooperativeMatrixLoadKHR 74 76 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 65(tempArg) 77 + 78: 33 Load 65(tempArg) + Store 35(m) 78 + 79: 33 Load 35(m) + 80: 73(ptr) AccessChain 71(block) 59 32 + CooperativeMatrixStoreKHR 80 79 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 93: 92(ptr) AccessChain 91(block16) 59 32 + 94: 51 CooperativeMatrixLoadKHR 93 76 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 81(tempArg) 94 + 95: 51 Load 81(tempArg) + Store 53(m2) 95 + 96: 51 Load 53(m2) + 97: 92(ptr) AccessChain 91(block16) 59 32 + CooperativeMatrixStoreKHR 97 96 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 101: 100(ptr) AccessChain 91(block16) 99 + 102: 85(ptr) Load 101 MakePointerVisibleKHR NonPrivatePointerKHR 72 + 104: 103(ptr) AccessChain 102 59 32 + 105: 33 CooperativeMatrixLoadKHR 104 76 75 Aligned MakePointerVisibleKHR NonPrivatePointerKHR 16 72 + Store 98(tempArg) 105 + 106: 33 Load 98(tempArg) + Store 35(m) 106 + 107: 33 Load 35(m) + 108: 100(ptr) AccessChain 91(block16) 99 + 109: 85(ptr) Load 108 MakePointerVisibleKHR NonPrivatePointerKHR 72 + 110: 103(ptr) AccessChain 109 59 32 + CooperativeMatrixStoreKHR 110 107 76 75 Aligned MakePointerAvailableKHR NonPrivatePointerKHR 16 72 + 116: 113 Load 115(A) + 120: 117 Load 119(B) + 122: 33 Load 121(C) + 123: 33 CooperativeMatrixMulAddKHR 116 120 122 + Store 111(D) 123 + 126: 7(int) CooperativeMatrixLengthKHR 33 + 127: 58(int) Bitcast 126 + Store 125(l) 127 + Store 133(F) 135 + 141: 56(ptr) AccessChain 138(a) 139 62 + Store 141 140 + Store 142(md1) 36 + 143: 33 Load 35(m) + 144: 33 Load 35(m) + 145: 33 FAdd 144 143 + Store 35(m) 145 + 147: 17(float) CompositeExtract 145 1234 + 148: 17(float) Load 142(md1) + 149: 17(float) FAdd 148 147 + Store 142(md1) 149 + 155: 154(ptr) AccessChain 153(mC2) 99 + 156: 150 Load 155 + 157: 154(ptr) AccessChain 153(mC2) 59 + Store 157 156 + 159: 73(ptr) AccessChain 71(block) 62 32 + 160: 33 CooperativeMatrixLoadKHR 159 76 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 158(tempArg) 160 + 161: 33 Load 158(tempArg) + Store 35(m) 161 + 162: 33 Load 35(m) + 163: 73(ptr) AccessChain 71(block) 62 32 + CooperativeMatrixStoreKHR 163 162 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 165: 92(ptr) AccessChain 91(block16) 62 32 + 166: 51 CooperativeMatrixLoadKHR 165 76 75 MakePointerVisibleKHR NonPrivatePointerKHR 72 + Store 164(tempArg) 166 + 167: 51 Load 164(tempArg) + Store 53(m2) 167 + 168: 51 Load 53(m2) + 169: 92(ptr) AccessChain 91(block16) 62 32 + CooperativeMatrixStoreKHR 169 168 76 75 MakePointerAvailableKHR NonPrivatePointerKHR 72 + 172: 11 Load 170(p1) + Store 171(param) 172 + 173: 11 FunctionCall 15(f16(f161;) 171(param) + Store 170(p1) 173 + 176: 18 Load 174(p2) + Store 175(param) 176 + 177: 18 FunctionCall 22(f32(f1;) 175(param) + Store 174(p2) 177 + Store 170(p1) 178 + Store 174(p2) 179 + 180: 11 Load 170(p1) + 181: 11 Load 170(p1) + 182: 11 FDiv 181 180 + Store 170(p1) 182 + 184: 11 Load 170(p1) + 185: 11 MatrixTimesScalar 184 183 + Store 170(p1) 185 + 187: 18 Load 174(p2) + 188: 18 MatrixTimesScalar 187 186 + Store 174(p2) 188 + 196: 195(ptr) AccessChain 194(shmatrix) 83 + 197: 51 CooperativeMatrixLoadKHR 196 76 10 MakePointerVisibleKHR NonPrivatePointerKHR 10 + Store 189(tempArg) 197 + 199: 51 Load 189(tempArg) + Store 198(ms) 199 + 200: 51 Load 198(ms) + 201: 195(ptr) AccessChain 194(shmatrix) 83 + CooperativeMatrixStoreKHR 201 200 76 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 + 206: 203 Load 205(ms8A) + 210: 207 Load 209(ms8B) + 214: 211 Load 213(ms8C) + 215: 211 CooperativeMatrixMulAddKHR 206 210 214 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR + 216: 203 Load 205(ms8A) + 217: 207 Load 209(ms8B) + 218: 211 Load 213(ms8C) + 219: 211 CooperativeMatrixMulAddKHR 216 217 218 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR + 220: 203 Load 205(ms8A) + 221: 207 Load 209(ms8B) + 222: 211 Load 213(ms8C) + 224: 211 CooperativeMatrixMulAddKHR 220 221 222 ASignedComponentsKHR BSignedComponentsKHR CSignedComponentsKHR ResultSignedComponentsKHR SaturatingAccumulationKHR + 229: 226 Load 228(m16) + 230: 195(ptr) AccessChain 194(shmatrix) 83 + CooperativeMatrixStoreKHR 230 229 76 10 MakePointerAvailableKHR NonPrivatePointerKHR 10 + Return + FunctionEnd + 15(f16(f161;): 11 Function None 13 + 14(m): 12(ptr) FunctionParameter + 16: Label + 24: 11 Load 14(m) + 25: 11 FNegate 24 + ReturnValue 25 + FunctionEnd + 22(f32(f1;): 18 Function None 20 + 21(m): 19(ptr) FunctionParameter + 23: Label + 28: 18 Load 21(m) + 29: 18 FNegate 28 + ReturnValue 29 + FunctionEnd diff --git a/Test/spv.coopmat_armlayout.comp b/Test/spv.coopmat_armlayout.comp new file mode 100644 index 0000000000..b63ea5e7cb --- /dev/null +++ b/Test/spv.coopmat_armlayout.comp @@ -0,0 +1,121 @@ +#version 450 core +#extension GL_KHR_memory_scope_semantics : enable +#extension GL_KHR_cooperative_matrix : enable +#extension GL_EXT_shader_explicit_arithmetic_types : enable +#extension GL_EXT_buffer_reference : enable + +layout (local_size_x = 64, local_size_y = 1, local_size_z = 1) in; + +const int X = 8; +layout(constant_id = 0) const int Y = 2; +const int Z = X*Y; + +coopmat mC; +coopmat mC2[3]; + +layout(constant_id = 1) const float F = 3.0; + +const coopmat mD = coopmat(0.0); +const coopmat mD2 = coopmat(1); + +struct S { int a; int b; int c; }; + +const S s = S(12, 23, 34); + +layout(set = 0, binding = 0, buffer_reference) coherent buffer Block { + float y[1024*1024]; + float x[]; +} block; + +layout(set = 0, binding = 0) coherent buffer Block16 { + float16_t y[1024*1024]; + float16_t x[]; + + Block b; +} block16; + +coopmat f16(coopmat m) { return -m; } +coopmat f32(coopmat m) { return -m; } + +layout(constant_id = 2) const int SC = 1; +coopmat scm[SC][SC]; + +// sized for coopmat +shared uvec4 shmatrix[16*16*2/16]; + +void main() +{ + coopmat1?8:4), gl_MatrixUseAccumulator> m = coopmat1?8:4), gl_MatrixUseAccumulator>(0.0); + + m = m + m; + m = m - m; + m = -m; + m = 2.0*m; + m = m*2.0; + + coopmat m2 = coopmat(m); + + float x = m[1]; + m[0] = x; + + coopMatLoad(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatStore(m, block.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatLoad(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatStore(m2, block16.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatLoad(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatStore(m, block16.b.x, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + + coopmat A; + coopmat B; + coopmat C; + coopmat D; + D = coopMatMulAdd(A, B, C); + + int l = D.length(); + + coopmat E; + + coopmat F = coopmat(0.0); + + coopmat1?8:4), gl_MatrixUseAccumulator> a[5]; + a[3][0] = 1.0; + + float md1 = mD[1]; + + md1 += (m += m)[1234]; + + mC2[1] = mC2[2]; + + coopMatLoad(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatStore(m, block.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatLoad(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatStore(m2, block16.y, 16, 128, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + + coopmat p1; + coopmat p2; + + p1 = f16(p1); + p2 = f32(p2); + + p1 = coopmat(0.0); + p2 = coopmat(0.0); + + p1 /= p1; + + p1 *= float16_t(2.0); + p2 *= 4.0; + + coopmat ms; + coopMatLoad(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + coopMatStore(ms, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); + + coopmat ms8A; + coopmat ms8B; + coopmat ms8C; + coopMatMulAdd(ms8A, ms8B, ms8C); + coopMatMulAdd(ms8A, ms8B, ms8C, 0); + coopMatMulAdd(ms8A, ms8B, ms8C, gl_MatrixOperandsSaturatingAccumulation); + + coopmat m16; + coopMatStore(m16, shmatrix, 1, 2, gl_CooperativeMatrixLayoutRowBlockedInterleavedARM); +} diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp index a6ec689794..d8a969d77b 100755 --- a/glslang/MachineIndependent/Initialize.cpp +++ b/glslang/MachineIndependent/Initialize.cpp @@ -4558,6 +4558,8 @@ void TBuiltIns::initialize(int version, EProfile profile, const SpvVersion& spvV "const int gl_MatrixOperandsSaturatingAccumulation = 0x10;\n" "const int gl_CooperativeMatrixLayoutRowMajor = 0;\n" "const int gl_CooperativeMatrixLayoutColumnMajor = 1;\n" + "const int gl_CooperativeMatrixLayoutRowBlockedInterleavedARM = 4202;\n" + "const int gl_CooperativeMatrixLayoutColumnBlockedInterleavedARM = 4203;\n" "\n" ); } diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index b12799320d..4ea2485cef 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -367,6 +367,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.coopmat.comp", "spv.coopmat_Error.comp", "spv.coopmatKHR.comp", + "spv.coopmat_armlayout.comp", "spv.coopmatKHR_arithmetic.comp", "spv.coopmatKHR_arithmeticError.comp", "spv.coopmatKHR_Error.comp", From a92c61f8456fa9731c0b000a2c6fc52a740c2be7 Mon Sep 17 00:00:00 2001 From: AnyOldName3 Date: Wed, 14 Feb 2024 16:38:44 +0000 Subject: [PATCH 494/594] Add aliases for the public libraries This makes things consistent between when glslang is installed and imported versus when it's included as nested CMake project. You can now use `glslang::glslang` in both cases instead of needing the non-namespaced version sometimes and the namespaced one other times. Resolves one of the problems discussed in https://github.com/KhronosGroup/glslang/issues/3509 --- SPIRV/CMakeLists.txt | 2 ++ glslang/CMakeLists.txt | 2 ++ 2 files changed, 4 insertions(+) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 3b6bfb4557..66808812e5 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -79,6 +79,7 @@ set(PUBLIC_HEADERS SPVRemapper.h) add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) +add_library(glslang::SPIRV ALIAS SPIRV) set_target_properties(SPIRV PROPERTIES FOLDER glslang POSITION_INDEPENDENT_CODE ON @@ -92,6 +93,7 @@ glslang_add_build_info_dependency(SPIRV) if (ENABLE_SPVREMAPPER) add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) + add_library(glslang::SPVRemapper ALIAS SPVRemapper) set_target_properties(SPVRemapper PROPERTIES FOLDER glslang POSITION_INDEPENDENT_CODE ON diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index e4690f0952..8d4b1e9c7e 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -169,6 +169,7 @@ set(GLSLANG_HEADERS Include/Types.h) add_library(glslang ${LIB_TYPE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS}) +add_library(glslang::glslang ALIAS glslang) set_target_properties(glslang PROPERTIES FOLDER glslang POSITION_INDEPENDENT_CODE ON @@ -201,6 +202,7 @@ set(RESOURCELIMITS_HEADERS ) add_library(glslang-default-resource-limits ${RESOURCELIMITS_SOURCES} ${RESOURCELIMITS_HEADERS}) +add_library(glslang::glslang-default-resource-limits ALIAS glslang-default-resource-limits) set_target_properties(glslang-default-resource-limits PROPERTIES VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}" From d8f5681ec0bbf48384f6c96e837214abba34f0b8 Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Fri, 1 Mar 2024 13:09:15 -0800 Subject: [PATCH 495/594] Add includer to gtest for include file tests. Turn on debug info flag for non-semantic debug test. --- Test/baseResults/spv.debugInfo.1.1.frag.out | 422 ------------------ Test/baseResults/spv.debugInfo.frag.out | 19 +- .../spv.debuginfo.include.glsl.frag.out | 166 +++++++ Test/runtests | 6 - Test/spv.debugInfo.frag | 164 +++---- Test/spv.debuginfo.include.glsl.frag | 12 + Test/spv.debuginfo.include.glsl.h | 10 + gtests/Spv.FromFile.cpp | 51 +-- gtests/TestFixture.h | 40 +- 9 files changed, 338 insertions(+), 552 deletions(-) delete mode 100644 Test/baseResults/spv.debugInfo.1.1.frag.out create mode 100644 Test/baseResults/spv.debuginfo.include.glsl.frag.out create mode 100644 Test/spv.debuginfo.include.glsl.frag create mode 100644 Test/spv.debuginfo.include.glsl.h diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out deleted file mode 100644 index 127267560e..0000000000 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ /dev/null @@ -1,422 +0,0 @@ -spv.debugInfo.frag -// Module Version 10300 -// Generated by (magic number): 8000b -// Id's are bound by 187 - - Capability Shader - 2: ExtInstImport "GLSL.std.450" - MemoryModel Logical GLSL450 - EntryPoint Fragment 5 "main" 30 104 - ExecutionMode 5 OriginUpperLeft - 1: String "spv.debugInfo.frag" - Source GLSL 450 1 "#version 450 - -struct S { - int a; -}; - -uniform ubuf { - S s; -}; - -uniform sampler2D s2d; - -layout(location = 0) in vec4 inv; -layout(location = 0) out vec4 outv; - -vec4 foo(S s) -{ - vec4 r = s.a * inv; - ++r; - if (r.x > 3.0) - --r; - else - r *= 2; - - return r; -} - -float testBranch(float x, float y) -{ - float result = 0; - bool b = x > 0; - - // branch with load - if (b) { - result += 1; - } - else { - result -= 1; - } - - // branch with expression - if (x > y) { - result += x - y; - } - - // selection with load - result += b ? - 1 : -1; - - // selection with expression - result += x < y ? - y : - float(b); - - return result; -} - -void main() -{ - outv = foo(s); - outv += testBranch(inv.x, inv.y); - outv += texture(s2d, vec2(0.5)); - - switch (s.a) { - case 10: - ++outv; - break; - case 20: - outv = 2 * outv; - ++outv; - break; - default: - --outv; - break; - } - - for (int i = 0; i < 10; ++i) - outv *= 3.0; - - outv.x < 10.0 ? - outv = sin(outv) : - outv = cos(outv); -}" - Name 5 "main" - Name 8 "S" - MemberName 8(S) 0 "a" - Name 14 "foo(struct-S-i11;" - Name 13 "s" - Name 20 "testBranch(f1;f1;" - Name 18 "x" - Name 19 "y" - Name 23 "r" - Name 30 "inv" - Name 56 "result" - Name 59 "b" - Name 104 "outv" - Name 105 "S" - MemberName 105(S) 0 "a" - Name 106 "ubuf" - MemberName 106(ubuf) 0 "s" - Name 108 "" - Name 109 "param" - Name 116 "param" - Name 120 "param" - Name 131 "s2d" - Name 161 "i" - ModuleProcessed "no-storage-format" - ModuleProcessed "resource-set-binding 3" - ModuleProcessed "auto-map-bindings" - ModuleProcessed "auto-map-locations" - ModuleProcessed "client vulkan100" - ModuleProcessed "target-env spirv1.3" - ModuleProcessed "target-env vulkan1.1" - ModuleProcessed "relaxed-errors" - ModuleProcessed "suppress-warnings" - ModuleProcessed "hlsl-offsets" - ModuleProcessed "entry-point main" - Decorate 30(inv) Location 0 - Decorate 104(outv) Location 0 - MemberDecorate 105(S) 0 Offset 0 - MemberDecorate 106(ubuf) 0 Offset 0 - Decorate 106(ubuf) Block - Decorate 108 DescriptorSet 3 - Decorate 108 Binding 0 - Decorate 131(s2d) DescriptorSet 3 - Decorate 131(s2d) Binding 1 - 3: TypeVoid - 4: TypeFunction 3 - 7: TypeInt 32 1 - 8(S): TypeStruct 7(int) - 9: TypePointer Function 8(S) - 10: TypeFloat 32 - 11: TypeVector 10(float) 4 - 12: TypeFunction 11(fvec4) 9(ptr) - 16: TypePointer Function 10(float) - 17: TypeFunction 10(float) 16(ptr) 16(ptr) - 22: TypePointer Function 11(fvec4) - 24: 7(int) Constant 0 - 25: TypePointer Function 7(int) - 29: TypePointer Input 11(fvec4) - 30(inv): 29(ptr) Variable Input - 34: 10(float) Constant 1065353216 - 37: TypeInt 32 0 - 38: 37(int) Constant 0 - 41: 10(float) Constant 1077936128 - 42: TypeBool - 50: 10(float) Constant 1073741824 - 57: 10(float) Constant 0 - 58: TypePointer Function 42(bool) - 81: 7(int) Constant 1 - 82: 7(int) Constant 4294967295 - 103: TypePointer Output 11(fvec4) - 104(outv): 103(ptr) Variable Output - 105(S): TypeStruct 7(int) - 106(ubuf): TypeStruct 105(S) - 107: TypePointer Uniform 106(ubuf) - 108: 107(ptr) Variable Uniform - 110: TypePointer Uniform 105(S) - 117: TypePointer Input 10(float) - 121: 37(int) Constant 1 - 128: TypeImage 10(float) 2D sampled format:Unknown - 129: TypeSampledImage 128 - 130: TypePointer UniformConstant 129 - 131(s2d): 130(ptr) Variable UniformConstant - 133: TypeVector 10(float) 2 - 134: 10(float) Constant 1056964608 - 135: 133(fvec2) ConstantComposite 134 134 - 139: TypePointer Uniform 7(int) - 168: 7(int) Constant 10 - 174: TypePointer Output 10(float) - 177: 10(float) Constant 1092616192 - Line 1 58 11 - 5(main): 3 Function None 4 - 6: Label - 109(param): 9(ptr) Variable Function - 116(param): 16(ptr) Variable Function - 120(param): 16(ptr) Variable Function - 161(i): 25(ptr) Variable Function - 179: 22(ptr) Variable Function - Line 1 60 0 - 111: 110(ptr) AccessChain 108 24 - 112: 105(S) Load 111 - 113: 7(int) CompositeExtract 112 0 - 114: 25(ptr) AccessChain 109(param) 24 - Store 114 113 - 115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param) - Store 104(outv) 115 - Line 1 61 0 - 118: 117(ptr) AccessChain 30(inv) 38 - 119: 10(float) Load 118 - Store 116(param) 119 - 122: 117(ptr) AccessChain 30(inv) 121 - 123: 10(float) Load 122 - Store 120(param) 123 - 124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param) - 125: 11(fvec4) Load 104(outv) - 126: 11(fvec4) CompositeConstruct 124 124 124 124 - 127: 11(fvec4) FAdd 125 126 - Store 104(outv) 127 - Line 1 62 0 - 132: 129 Load 131(s2d) - 136: 11(fvec4) ImageSampleImplicitLod 132 135 - 137: 11(fvec4) Load 104(outv) - 138: 11(fvec4) FAdd 137 136 - Store 104(outv) 138 - Line 1 64 0 - 140: 139(ptr) AccessChain 108 24 24 - 141: 7(int) Load 140 - SelectionMerge 145 None - Switch 141 144 - case 10: 142 - case 20: 143 - 144: Label - Line 1 73 0 - 156: 11(fvec4) Load 104(outv) - 157: 11(fvec4) CompositeConstruct 34 34 34 34 - 158: 11(fvec4) FSub 156 157 - Store 104(outv) 158 - Line 1 74 0 - Branch 145 - 142: Label - Line 1 66 0 - 146: 11(fvec4) Load 104(outv) - 147: 11(fvec4) CompositeConstruct 34 34 34 34 - 148: 11(fvec4) FAdd 146 147 - Store 104(outv) 148 - Line 1 67 0 - Branch 145 - 143: Label - Line 1 69 0 - 150: 11(fvec4) Load 104(outv) - 151: 11(fvec4) VectorTimesScalar 150 50 - Store 104(outv) 151 - Line 1 70 0 - 152: 11(fvec4) Load 104(outv) - 153: 11(fvec4) CompositeConstruct 34 34 34 34 - 154: 11(fvec4) FAdd 152 153 - Store 104(outv) 154 - Line 1 71 0 - Branch 145 - 145: Label - Line 1 77 0 - Store 161(i) 24 - Branch 162 - 162: Label - Line 1 77 0 - LoopMerge 164 165 None - Branch 166 - 166: Label - Line 1 77 0 - 167: 7(int) Load 161(i) - 169: 42(bool) SLessThan 167 168 - BranchConditional 169 163 164 - 163: Label - Line 1 78 0 - 170: 11(fvec4) Load 104(outv) - 171: 11(fvec4) VectorTimesScalar 170 41 - Store 104(outv) 171 - Branch 165 - 165: Label - Line 1 77 0 - 172: 7(int) Load 161(i) - 173: 7(int) IAdd 172 81 - Store 161(i) 173 - Branch 162 - 164: Label - Line 1 80 0 - 175: 174(ptr) AccessChain 104(outv) 38 - 176: 10(float) Load 175 - 178: 42(bool) FOrdLessThan 176 177 - SelectionMerge 181 None - BranchConditional 178 180 184 - 180: Label - Line 1 81 0 - 182: 11(fvec4) Load 104(outv) - 183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182 - Store 104(outv) 183 - Store 179 183 - Branch 181 - 184: Label - Line 1 82 0 - 185: 11(fvec4) Load 104(outv) - 186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185 - Store 104(outv) 186 - Store 179 186 - Branch 181 - 181: Label - Return - FunctionEnd - Line 1 16 13 -14(foo(struct-S-i11;): 11(fvec4) Function None 12 - 13(s): 9(ptr) FunctionParameter - 15: Label - 23(r): 22(ptr) Variable Function - Line 1 18 0 - 26: 25(ptr) AccessChain 13(s) 24 - 27: 7(int) Load 26 - 28: 10(float) ConvertSToF 27 - 31: 11(fvec4) Load 30(inv) - 32: 11(fvec4) VectorTimesScalar 31 28 - Store 23(r) 32 - Line 1 19 0 - 33: 11(fvec4) Load 23(r) - 35: 11(fvec4) CompositeConstruct 34 34 34 34 - 36: 11(fvec4) FAdd 33 35 - Store 23(r) 36 - Line 1 20 0 - 39: 16(ptr) AccessChain 23(r) 38 - 40: 10(float) Load 39 - 43: 42(bool) FOrdGreaterThan 40 41 - SelectionMerge 45 None - BranchConditional 43 44 49 - 44: Label - Line 1 21 0 - 46: 11(fvec4) Load 23(r) - 47: 11(fvec4) CompositeConstruct 34 34 34 34 - 48: 11(fvec4) FSub 46 47 - Store 23(r) 48 - Branch 45 - 49: Label - Line 1 23 0 - 51: 11(fvec4) Load 23(r) - 52: 11(fvec4) VectorTimesScalar 51 50 - Store 23(r) 52 - Branch 45 - 45: Label - Line 1 25 0 - 53: 11(fvec4) Load 23(r) - ReturnValue 53 - FunctionEnd - Line 1 28 34 -20(testBranch(f1;f1;): 10(float) Function None 17 - 18(x): 16(ptr) FunctionParameter - 19(y): 16(ptr) FunctionParameter - 21: Label - 56(result): 16(ptr) Variable Function - 59(b): 58(ptr) Variable Function - 90: 16(ptr) Variable Function - Line 1 30 0 - Store 56(result) 57 - Line 1 31 0 - 60: 10(float) Load 18(x) - 61: 42(bool) FOrdGreaterThan 60 57 - Store 59(b) 61 - Line 1 34 0 - 62: 42(bool) Load 59(b) - SelectionMerge 64 None - BranchConditional 62 63 67 - 63: Label - Line 1 35 0 - 65: 10(float) Load 56(result) - 66: 10(float) FAdd 65 34 - Store 56(result) 66 - Branch 64 - 67: Label - Line 1 38 0 - 68: 10(float) Load 56(result) - 69: 10(float) FSub 68 34 - Store 56(result) 69 - Branch 64 - 64: Label - Line 1 42 0 - 70: 10(float) Load 18(x) - 71: 10(float) Load 19(y) - 72: 42(bool) FOrdGreaterThan 70 71 - SelectionMerge 74 None - BranchConditional 72 73 74 - 73: Label - Line 1 43 0 - 75: 10(float) Load 18(x) - 76: 10(float) Load 19(y) - 77: 10(float) FSub 75 76 - 78: 10(float) Load 56(result) - 79: 10(float) FAdd 78 77 - Store 56(result) 79 - Branch 74 - 74: Label - Line 1 47 0 - 80: 42(bool) Load 59(b) - 83: 7(int) Select 80 81 82 - 84: 10(float) ConvertSToF 83 - 85: 10(float) Load 56(result) - 86: 10(float) FAdd 85 84 - Store 56(result) 86 - Line 1 51 0 - 87: 10(float) Load 18(x) - 88: 10(float) Load 19(y) - 89: 42(bool) FOrdLessThan 87 88 - SelectionMerge 92 None - BranchConditional 89 91 94 - 91: Label - Line 1 52 0 - 93: 10(float) Load 19(y) - Store 90 93 - Branch 92 - 94: Label - Line 1 53 0 - 95: 42(bool) Load 59(b) - 96: 10(float) Select 95 34 57 - Store 90 96 - Branch 92 - 92: Label - 97: 10(float) Load 90 - Line 1 51 0 - 98: 10(float) Load 56(result) - 99: 10(float) FAdd 98 97 - Store 56(result) 99 - Line 1 55 0 - 100: 10(float) Load 56(result) - ReturnValue 100 - FunctionEnd diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index 8bacd74d9a..475187d9c8 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -7,17 +7,13 @@ spv.debugInfo.frag 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" 30 104 - ExecutionMode 5 OriginLowerLeft + ExecutionMode 5 OriginUpperLeft 1: String "spv.debugInfo.frag" - Source GLSL 450 1 "// OpModuleProcessed no-storage-format -// OpModuleProcessed resource-set-binding 3 + Source GLSL 450 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings -// OpModuleProcessed auto-map-locations -// OpModuleProcessed client opengl100 -// OpModuleProcessed target-env opengl -// OpModuleProcessed relaxed-errors -// OpModuleProcessed suppress-warnings -// OpModuleProcessed hlsl-offsets +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled // OpModuleProcessed entry-point main #line 1 #version 450 @@ -131,10 +127,9 @@ void main() MemberDecorate 105(S) 0 Offset 0 MemberDecorate 106(ubuf) 0 Offset 0 Decorate 106(ubuf) Block - Decorate 108 DescriptorSet 3 + Decorate 108 DescriptorSet 0 Decorate 108 Binding 0 - Decorate 131(s2d) Location 0 - Decorate 131(s2d) DescriptorSet 3 + Decorate 131(s2d) DescriptorSet 0 Decorate 131(s2d) Binding 1 3: TypeVoid 4: TypeFunction 3 diff --git a/Test/baseResults/spv.debuginfo.include.glsl.frag.out b/Test/baseResults/spv.debuginfo.include.glsl.frag.out new file mode 100644 index 0000000000..2245395011 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.include.glsl.frag.out @@ -0,0 +1,166 @@ +spv.debuginfo.include.glsl.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 109 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 4: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 15 "main" 81 + ExecutionMode 15 OriginUpperLeft + 2: String "spv.debuginfo.include.glsl.frag" + 3: String "spv.debuginfo.include.glsl.h" + 9: String "uint" + 18: String "float" + 31: String "headerFunction" + 34: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +#version 450 + +#extension GL_GOOGLE_include_directive : require +#include "spv.debuginfo.include.glsl.h" + +vec4 mainFileFunction(vec4 v) { + return -v; +} + +void main() { + headerOut = headerFunction(mainFileFunction(headerUboItem)); +}" + 40: String "a" + 48: String "mainFileFunction" + 51: String "v" + 54: String "main" + 60: String " +out vec4 headerOut; + +uniform UBO { + vec4 headerUboItem; +}; + +vec4 headerFunction(vec4 a) { + return -a; +}" + 83: String "headerOut" + 87: String "headerUboItem" + 90: String "UBO" + 95: String "" + 97: String "int" + SourceExtension "GL_GOOGLE_cpp_style_line_directive" + SourceExtension "GL_GOOGLE_include_directive" + Name 15 "main" + Name 29 "headerFunction(vf4;" + Name 28 "a" + Name 46 "mainFileFunction(vf4;" + Name 45 "v" + Name 81 "headerOut" + Name 85 "UBO" + MemberName 85(UBO) 0 "headerUboItem" + Name 93 "" + Name 100 "param" + Name 107 "param" + Decorate 81(headerOut) Location 0 + MemberDecorate 85(UBO) 0 Offset 0 + Decorate 85(UBO) Block + Decorate 93 DescriptorSet 0 + Decorate 93 Binding 0 + 5: TypeVoid + 6: TypeFunction 5 + 8: TypeInt 32 0 + 11: 8(int) Constant 32 + 12: 8(int) Constant 6 + 13: 8(int) Constant 0 + 10: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 9 11 12 13 + 14: 8(int) Constant 3 + 7: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 14 5 + 17: TypeFloat 32 + 19: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 18 11 14 13 + 20: TypeVector 17(float) 4 + 21: 8(int) Constant 4 + 22: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 19 21 + 23: TypePointer Function 20(fvec4) + 24: 8(int) Constant 7 + 25: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 24 13 + 26: TypeFunction 20(fvec4) 23(ptr) + 27: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 14 22 22 + 33: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 34 + 35: 8(int) Constant 8 + 37: 8(int) Constant 1 + 38: 8(int) Constant 2 + 36: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 21 33 38 + 32: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 31 27 33 35 13 36 31 14 35 + 39: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 22 33 35 13 32 21 37 + 42: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 49: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 48 27 33 12 13 36 48 14 12 + 50: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 51 22 33 12 13 49 21 37 + 56: 8(int) Constant 10 + 55: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 54 7 33 56 13 36 54 14 56 + 59: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 3 60 + 63: 8(int) Constant 9 + 79: TypePointer Output 20(fvec4) + 80: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 14 13 + 81(headerOut): 79(ptr) Variable Output + 84: 8(int) Constant 11 + 82: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 22 33 84 13 36 83 81(headerOut) 35 + 85(UBO): TypeStruct 20(fvec4) + 88: 8(int) Constant 5 + 86: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 22 33 88 24 13 13 14 + 89: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 37 33 84 13 36 90 13 14 86 + 91: TypePointer Uniform 85(UBO) + 92: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 38 13 + 93: 91(ptr) Variable Uniform + 94: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 89 33 84 13 36 95 93 35 + 96: TypeInt 32 1 + 98: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 11 21 13 + 99: 96(int) Constant 0 + 101: TypePointer Uniform 20(fvec4) + 102: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 38 13 + 15(main): 5 Function None 6 + 16: Label + 100(param): 23(ptr) Variable Function + 107(param): 23(ptr) Variable Function + 77: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 78: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 56 56 13 13 + 76: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 15(main) + 104: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 84 84 13 13 + 103: 101(ptr) AccessChain 93 99 + 105: 20(fvec4) Load 103 + Store 100(param) 105 + 106: 20(fvec4) FunctionCall 46(mainFileFunction(vf4;) 100(param) + Store 107(param) 106 + 108: 20(fvec4) FunctionCall 29(headerFunction(vf4;) 107(param) + Store 81(headerOut) 108 + Return + FunctionEnd +29(headerFunction(vf4;): 20(fvec4) Function None 26 + 28(a): 23(ptr) FunctionParameter + 30: Label + 43: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 + 44: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 13 13 + 41: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 28(a) 42 + 58: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 59 35 35 13 13 + 57: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(headerFunction(vf4;) + 62: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 59 63 63 13 13 + 61: 20(fvec4) Load 28(a) + 64: 20(fvec4) FNegate 61 + ReturnValue 64 + FunctionEnd +46(mainFileFunction(vf4;): 20(fvec4) Function None 26 + 45(v): 23(ptr) FunctionParameter + 47: Label + 53: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 49 + 52: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 50 45(v) 42 + 69: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 12 12 13 13 + 68: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 49 46(mainFileFunction(vf4;) + 71: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 24 24 13 13 + 70: 20(fvec4) Load 45(v) + 72: 20(fvec4) FNegate 70 + ReturnValue 72 + FunctionEnd diff --git a/Test/runtests b/Test/runtests index 00c2babdaa..52898e061f 100755 --- a/Test/runtests +++ b/Test/runtests @@ -169,12 +169,6 @@ diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out "$TARGETDIR/spv.looseUniformNoLo # Testing debug information # echo Testing SPV Debug Information -run -g --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ - -G -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.frag.out" -diff -b $BASEDIR/spv.debugInfo.frag.out "$TARGETDIR/spv.debugInfo.frag.out" || HASERROR=1 -run -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ - -V -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.1.1.frag.out" -diff -b $BASEDIR/spv.debugInfo.1.1.frag.out "$TARGETDIR/spv.debugInfo.1.1.frag.out" || HASERROR=1 run -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --spirv-val --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \ --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > "$TARGETDIR/spv.hlslDebugInfo.frag.out" diff -b $BASEDIR/spv.hlslDebugInfo.frag.out "$TARGETDIR/spv.hlslDebugInfo.frag.out" || HASERROR=1 diff --git a/Test/spv.debugInfo.frag b/Test/spv.debugInfo.frag index 31b63341df..5bcf87fa8c 100644 --- a/Test/spv.debugInfo.frag +++ b/Test/spv.debugInfo.frag @@ -1,83 +1,83 @@ -#version 450 - -struct S { - int a; -}; - -uniform ubuf { - S s; -}; - -uniform sampler2D s2d; - -layout(location = 0) in vec4 inv; -layout(location = 0) out vec4 outv; - -vec4 foo(S s) -{ - vec4 r = s.a * inv; - ++r; - if (r.x > 3.0) - --r; - else - r *= 2; - - return r; -} - -float testBranch(float x, float y) -{ - float result = 0; - bool b = x > 0; - - // branch with load - if (b) { - result += 1; - } - else { - result -= 1; - } - - // branch with expression - if (x > y) { - result += x - y; - } - - // selection with load - result += b ? - 1 : -1; - - // selection with expression - result += x < y ? - y : - float(b); - - return result; -} - -void main() -{ - outv = foo(s); - outv += testBranch(inv.x, inv.y); - outv += texture(s2d, vec2(0.5)); - - switch (s.a) { - case 10: - ++outv; - break; - case 20: - outv = 2 * outv; - ++outv; - break; - default: - --outv; - break; - } - - for (int i = 0; i < 10; ++i) - outv *= 3.0; - - outv.x < 10.0 ? - outv = sin(outv) : - outv = cos(outv); +#version 450 + +struct S { + int a; +}; + +uniform ubuf { + S s; +}; + +uniform sampler2D s2d; + +layout(location = 0) in vec4 inv; +layout(location = 0) out vec4 outv; + +vec4 foo(S s) +{ + vec4 r = s.a * inv; + ++r; + if (r.x > 3.0) + --r; + else + r *= 2; + + return r; +} + +float testBranch(float x, float y) +{ + float result = 0; + bool b = x > 0; + + // branch with load + if (b) { + result += 1; + } + else { + result -= 1; + } + + // branch with expression + if (x > y) { + result += x - y; + } + + // selection with load + result += b ? + 1 : -1; + + // selection with expression + result += x < y ? + y : + float(b); + + return result; +} + +void main() +{ + outv = foo(s); + outv += testBranch(inv.x, inv.y); + outv += texture(s2d, vec2(0.5)); + + switch (s.a) { + case 10: + ++outv; + break; + case 20: + outv = 2 * outv; + ++outv; + break; + default: + --outv; + break; + } + + for (int i = 0; i < 10; ++i) + outv *= 3.0; + + outv.x < 10.0 ? + outv = sin(outv) : + outv = cos(outv); } \ No newline at end of file diff --git a/Test/spv.debuginfo.include.glsl.frag b/Test/spv.debuginfo.include.glsl.frag new file mode 100644 index 0000000000..f2c95a3e07 --- /dev/null +++ b/Test/spv.debuginfo.include.glsl.frag @@ -0,0 +1,12 @@ +#version 450 + +#extension GL_GOOGLE_include_directive : require +#include "spv.debuginfo.include.glsl.h" + +vec4 mainFileFunction(vec4 v) { + return -v; +} + +void main() { + headerOut = headerFunction(mainFileFunction(headerUboItem)); +} \ No newline at end of file diff --git a/Test/spv.debuginfo.include.glsl.h b/Test/spv.debuginfo.include.glsl.h new file mode 100644 index 0000000000..51df8469f9 --- /dev/null +++ b/Test/spv.debuginfo.include.glsl.h @@ -0,0 +1,10 @@ + +out vec4 headerOut; + +uniform UBO { + vec4 headerUboItem; +}; + +vec4 headerFunction(vec4 a) { + return -a; +} \ No newline at end of file diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4ea2485cef..627b3aa46d 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -67,7 +67,6 @@ std::string FileNameAsCustomTestSuffixIoMap( using CompileVulkanToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvTestNoLink = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirvDeadCodeElimTest = GlslangTest<::testing::TestWithParam>; -using CompileVulkanToDebugSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileVulkan1_1ToSpirvTest = GlslangTest<::testing::TestWithParam>; using CompileToSpirv14Test = GlslangTest<::testing::TestWithParam>; using CompileToSpirv16Test = GlslangTest<::testing::TestWithParam>; @@ -82,7 +81,8 @@ using CompileVulkanToSpirvTestAMD = GlslangTest<::testing::TestWithParam>; using CompileVulkanToSpirv14TestNV = GlslangTest<::testing::TestWithParam>; using CompileUpgradeTextureToSampledTextureAndDropSamplersTest = GlslangTest<::testing::TestWithParam>; -using CompileVulkanToNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam>; +using GlslSpirvDebugInfoTest = GlslangTest<::testing::TestWithParam>; +using GlslNonSemanticShaderDebugInfoTest = GlslangTest<::testing::TestWithParam>; // Compiling GLSL to SPIR-V under Vulkan semantics. Expected to successfully // generate SPIR-V. @@ -110,17 +110,6 @@ TEST_P(CompileVulkanToSpirvDeadCodeElimTest, FromFile) Target::Spv); } -// Compiling GLSL to SPIR-V with debug info under Vulkan semantics. Expected -// to successfully generate SPIR-V. -TEST_P(CompileVulkanToDebugSpirvTest, FromFile) -{ - loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), - Source::GLSL, Semantics::Vulkan, - glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, - Target::Spv, true, "", - "/baseResults/", false, true); -} - TEST_P(CompileVulkan1_1ToSpirvTest, FromFile) { @@ -251,11 +240,18 @@ TEST_P(CompileUpgradeTextureToSampledTextureAndDropSamplersTest, FromFile) Target::Spv); } -TEST_P(CompileVulkanToNonSemanticShaderDebugInfoTest, FromFile) +TEST_P(GlslSpirvDebugInfoTest, FromFile) { - loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), - Source::GLSL, Semantics::Vulkan, glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, - Target::Spv, true, "", "/baseResults/", false, true, true); + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, + glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, "", + "/baseResults/", false, true, false); +} + +TEST_P(GlslNonSemanticShaderDebugInfoTest, FromFile) +{ + loadFileCompileAndCheck(GlobalTestSettings.testRoot, GetParam(), Source::GLSL, Semantics::Vulkan, + glslang::EShTargetVulkan_1_0, glslang::EShTargetSpv_1_0, Target::Spv, true, "", + "/baseResults/", false, true, true); } // clang-format off @@ -584,15 +580,6 @@ INSTANTIATE_TEST_SUITE_P( FileNameAsCustomTestSuffix ); -// clang-format off -INSTANTIATE_TEST_SUITE_P( - Glsl, CompileVulkanToDebugSpirvTest, - ::testing::ValuesIn(std::vector({ - "spv.pp.line.frag", - })), - FileNameAsCustomTestSuffix -); - // clang-format off INSTANTIATE_TEST_SUITE_P( Glsl, CompileVulkan1_1ToSpirvTest, @@ -945,7 +932,16 @@ INSTANTIATE_TEST_SUITE_P( ); INSTANTIATE_TEST_SUITE_P( - Glsl, CompileVulkanToNonSemanticShaderDebugInfoTest, + Glsl, GlslSpirvDebugInfoTest, + ::testing::ValuesIn(std::vector({ + "spv.pp.line.frag", + "spv.debugInfo.frag", + })), + FileNameAsCustomTestSuffix +); + +INSTANTIATE_TEST_SUITE_P( + Glsl, GlslNonSemanticShaderDebugInfoTest, ::testing::ValuesIn(std::vector({ "spv.debuginfo.glsl.vert", "spv.debuginfo.glsl.frag", @@ -957,6 +953,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.debuginfo.const_params.glsl.comp", "spv.debuginfo.scalar_types.glsl.frag", "spv.debuginfo.rt_types.glsl.rgen", + "spv.debuginfo.include.glsl.frag", })), FileNameAsCustomTestSuffix ); diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index b23ba304d0..315fdaec56 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -35,6 +35,7 @@ #ifndef GLSLANG_GTESTS_TEST_FIXTURE_H #define GLSLANG_GTESTS_TEST_FIXTURE_H +#include #include #include #include @@ -199,9 +200,42 @@ class GlslangTest : public GT { } else shader->setStringsWithLengths(&shaderStrings, &shaderLengths, 1); if (!entryPointName.empty()) shader->setEntryPoint(entryPointName.c_str()); - return shader->parse( - (resources ? resources : GetDefaultResources()), - defaultVersion, isForwardCompatible, controls); + + // A includer that always assumes header name is a relative path to the test folder. + class GlslangTestIncluder : public glslang::TShader::Includer { + public: + virtual IncludeResult* includeLocal(const char* headerName, const char* /*includerName*/, + size_t /*inclusionDepth*/) override + { + std::string path = GLSLANG_TEST_DIRECTORY; + path += '/'; + path += headerName; + std::replace(path.begin(), path.end(), '\\', '/'); + + auto [success, fileContent] = ReadFile(path); + if (success) { + auto buffer = new char[fileContent.size() + 1]; + std::copy(fileContent.begin(), fileContent.end(), buffer); + buffer[fileContent.size()] = '\0'; + + return new IncludeResult(headerName, buffer, fileContent.size(), buffer); + } + + return nullptr; + } + + virtual void releaseInclude(IncludeResult* result) override + { + if (result != nullptr) { + delete[] static_cast(result->userData); + delete result; + } + } + }; + + GlslangTestIncluder includer; + return shader->parse((resources ? resources : GetDefaultResources()), defaultVersion, isForwardCompatible, + controls, includer); } // Compiles and links the given source |code| of the given shader From 19efb4ec60febf569ad3cf2f2fd71bbd20ff4617 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 14 Jun 2024 18:17:21 -0400 Subject: [PATCH 496/594] Move the spv.debugInfo.frag test back into runtests --- Test/baseResults/spv.debugInfo.1.1.frag.out | 422 ++++++++++++++++++++ Test/baseResults/spv.debugInfo.frag.out | 19 +- Test/runtests | 6 + gtests/Spv.FromFile.cpp | 1 - 4 files changed, 440 insertions(+), 8 deletions(-) create mode 100644 Test/baseResults/spv.debugInfo.1.1.frag.out diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out new file mode 100644 index 0000000000..127267560e --- /dev/null +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -0,0 +1,422 @@ +spv.debugInfo.frag +// Module Version 10300 +// Generated by (magic number): 8000b +// Id's are bound by 187 + + Capability Shader + 2: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 5 "main" 30 104 + ExecutionMode 5 OriginUpperLeft + 1: String "spv.debugInfo.frag" + Source GLSL 450 1 "#version 450 + +struct S { + int a; +}; + +uniform ubuf { + S s; +}; + +uniform sampler2D s2d; + +layout(location = 0) in vec4 inv; +layout(location = 0) out vec4 outv; + +vec4 foo(S s) +{ + vec4 r = s.a * inv; + ++r; + if (r.x > 3.0) + --r; + else + r *= 2; + + return r; +} + +float testBranch(float x, float y) +{ + float result = 0; + bool b = x > 0; + + // branch with load + if (b) { + result += 1; + } + else { + result -= 1; + } + + // branch with expression + if (x > y) { + result += x - y; + } + + // selection with load + result += b ? + 1 : -1; + + // selection with expression + result += x < y ? + y : + float(b); + + return result; +} + +void main() +{ + outv = foo(s); + outv += testBranch(inv.x, inv.y); + outv += texture(s2d, vec2(0.5)); + + switch (s.a) { + case 10: + ++outv; + break; + case 20: + outv = 2 * outv; + ++outv; + break; + default: + --outv; + break; + } + + for (int i = 0; i < 10; ++i) + outv *= 3.0; + + outv.x < 10.0 ? + outv = sin(outv) : + outv = cos(outv); +}" + Name 5 "main" + Name 8 "S" + MemberName 8(S) 0 "a" + Name 14 "foo(struct-S-i11;" + Name 13 "s" + Name 20 "testBranch(f1;f1;" + Name 18 "x" + Name 19 "y" + Name 23 "r" + Name 30 "inv" + Name 56 "result" + Name 59 "b" + Name 104 "outv" + Name 105 "S" + MemberName 105(S) 0 "a" + Name 106 "ubuf" + MemberName 106(ubuf) 0 "s" + Name 108 "" + Name 109 "param" + Name 116 "param" + Name 120 "param" + Name 131 "s2d" + Name 161 "i" + ModuleProcessed "no-storage-format" + ModuleProcessed "resource-set-binding 3" + ModuleProcessed "auto-map-bindings" + ModuleProcessed "auto-map-locations" + ModuleProcessed "client vulkan100" + ModuleProcessed "target-env spirv1.3" + ModuleProcessed "target-env vulkan1.1" + ModuleProcessed "relaxed-errors" + ModuleProcessed "suppress-warnings" + ModuleProcessed "hlsl-offsets" + ModuleProcessed "entry-point main" + Decorate 30(inv) Location 0 + Decorate 104(outv) Location 0 + MemberDecorate 105(S) 0 Offset 0 + MemberDecorate 106(ubuf) 0 Offset 0 + Decorate 106(ubuf) Block + Decorate 108 DescriptorSet 3 + Decorate 108 Binding 0 + Decorate 131(s2d) DescriptorSet 3 + Decorate 131(s2d) Binding 1 + 3: TypeVoid + 4: TypeFunction 3 + 7: TypeInt 32 1 + 8(S): TypeStruct 7(int) + 9: TypePointer Function 8(S) + 10: TypeFloat 32 + 11: TypeVector 10(float) 4 + 12: TypeFunction 11(fvec4) 9(ptr) + 16: TypePointer Function 10(float) + 17: TypeFunction 10(float) 16(ptr) 16(ptr) + 22: TypePointer Function 11(fvec4) + 24: 7(int) Constant 0 + 25: TypePointer Function 7(int) + 29: TypePointer Input 11(fvec4) + 30(inv): 29(ptr) Variable Input + 34: 10(float) Constant 1065353216 + 37: TypeInt 32 0 + 38: 37(int) Constant 0 + 41: 10(float) Constant 1077936128 + 42: TypeBool + 50: 10(float) Constant 1073741824 + 57: 10(float) Constant 0 + 58: TypePointer Function 42(bool) + 81: 7(int) Constant 1 + 82: 7(int) Constant 4294967295 + 103: TypePointer Output 11(fvec4) + 104(outv): 103(ptr) Variable Output + 105(S): TypeStruct 7(int) + 106(ubuf): TypeStruct 105(S) + 107: TypePointer Uniform 106(ubuf) + 108: 107(ptr) Variable Uniform + 110: TypePointer Uniform 105(S) + 117: TypePointer Input 10(float) + 121: 37(int) Constant 1 + 128: TypeImage 10(float) 2D sampled format:Unknown + 129: TypeSampledImage 128 + 130: TypePointer UniformConstant 129 + 131(s2d): 130(ptr) Variable UniformConstant + 133: TypeVector 10(float) 2 + 134: 10(float) Constant 1056964608 + 135: 133(fvec2) ConstantComposite 134 134 + 139: TypePointer Uniform 7(int) + 168: 7(int) Constant 10 + 174: TypePointer Output 10(float) + 177: 10(float) Constant 1092616192 + Line 1 58 11 + 5(main): 3 Function None 4 + 6: Label + 109(param): 9(ptr) Variable Function + 116(param): 16(ptr) Variable Function + 120(param): 16(ptr) Variable Function + 161(i): 25(ptr) Variable Function + 179: 22(ptr) Variable Function + Line 1 60 0 + 111: 110(ptr) AccessChain 108 24 + 112: 105(S) Load 111 + 113: 7(int) CompositeExtract 112 0 + 114: 25(ptr) AccessChain 109(param) 24 + Store 114 113 + 115: 11(fvec4) FunctionCall 14(foo(struct-S-i11;) 109(param) + Store 104(outv) 115 + Line 1 61 0 + 118: 117(ptr) AccessChain 30(inv) 38 + 119: 10(float) Load 118 + Store 116(param) 119 + 122: 117(ptr) AccessChain 30(inv) 121 + 123: 10(float) Load 122 + Store 120(param) 123 + 124: 10(float) FunctionCall 20(testBranch(f1;f1;) 116(param) 120(param) + 125: 11(fvec4) Load 104(outv) + 126: 11(fvec4) CompositeConstruct 124 124 124 124 + 127: 11(fvec4) FAdd 125 126 + Store 104(outv) 127 + Line 1 62 0 + 132: 129 Load 131(s2d) + 136: 11(fvec4) ImageSampleImplicitLod 132 135 + 137: 11(fvec4) Load 104(outv) + 138: 11(fvec4) FAdd 137 136 + Store 104(outv) 138 + Line 1 64 0 + 140: 139(ptr) AccessChain 108 24 24 + 141: 7(int) Load 140 + SelectionMerge 145 None + Switch 141 144 + case 10: 142 + case 20: 143 + 144: Label + Line 1 73 0 + 156: 11(fvec4) Load 104(outv) + 157: 11(fvec4) CompositeConstruct 34 34 34 34 + 158: 11(fvec4) FSub 156 157 + Store 104(outv) 158 + Line 1 74 0 + Branch 145 + 142: Label + Line 1 66 0 + 146: 11(fvec4) Load 104(outv) + 147: 11(fvec4) CompositeConstruct 34 34 34 34 + 148: 11(fvec4) FAdd 146 147 + Store 104(outv) 148 + Line 1 67 0 + Branch 145 + 143: Label + Line 1 69 0 + 150: 11(fvec4) Load 104(outv) + 151: 11(fvec4) VectorTimesScalar 150 50 + Store 104(outv) 151 + Line 1 70 0 + 152: 11(fvec4) Load 104(outv) + 153: 11(fvec4) CompositeConstruct 34 34 34 34 + 154: 11(fvec4) FAdd 152 153 + Store 104(outv) 154 + Line 1 71 0 + Branch 145 + 145: Label + Line 1 77 0 + Store 161(i) 24 + Branch 162 + 162: Label + Line 1 77 0 + LoopMerge 164 165 None + Branch 166 + 166: Label + Line 1 77 0 + 167: 7(int) Load 161(i) + 169: 42(bool) SLessThan 167 168 + BranchConditional 169 163 164 + 163: Label + Line 1 78 0 + 170: 11(fvec4) Load 104(outv) + 171: 11(fvec4) VectorTimesScalar 170 41 + Store 104(outv) 171 + Branch 165 + 165: Label + Line 1 77 0 + 172: 7(int) Load 161(i) + 173: 7(int) IAdd 172 81 + Store 161(i) 173 + Branch 162 + 164: Label + Line 1 80 0 + 175: 174(ptr) AccessChain 104(outv) 38 + 176: 10(float) Load 175 + 178: 42(bool) FOrdLessThan 176 177 + SelectionMerge 181 None + BranchConditional 178 180 184 + 180: Label + Line 1 81 0 + 182: 11(fvec4) Load 104(outv) + 183: 11(fvec4) ExtInst 2(GLSL.std.450) 13(Sin) 182 + Store 104(outv) 183 + Store 179 183 + Branch 181 + 184: Label + Line 1 82 0 + 185: 11(fvec4) Load 104(outv) + 186: 11(fvec4) ExtInst 2(GLSL.std.450) 14(Cos) 185 + Store 104(outv) 186 + Store 179 186 + Branch 181 + 181: Label + Return + FunctionEnd + Line 1 16 13 +14(foo(struct-S-i11;): 11(fvec4) Function None 12 + 13(s): 9(ptr) FunctionParameter + 15: Label + 23(r): 22(ptr) Variable Function + Line 1 18 0 + 26: 25(ptr) AccessChain 13(s) 24 + 27: 7(int) Load 26 + 28: 10(float) ConvertSToF 27 + 31: 11(fvec4) Load 30(inv) + 32: 11(fvec4) VectorTimesScalar 31 28 + Store 23(r) 32 + Line 1 19 0 + 33: 11(fvec4) Load 23(r) + 35: 11(fvec4) CompositeConstruct 34 34 34 34 + 36: 11(fvec4) FAdd 33 35 + Store 23(r) 36 + Line 1 20 0 + 39: 16(ptr) AccessChain 23(r) 38 + 40: 10(float) Load 39 + 43: 42(bool) FOrdGreaterThan 40 41 + SelectionMerge 45 None + BranchConditional 43 44 49 + 44: Label + Line 1 21 0 + 46: 11(fvec4) Load 23(r) + 47: 11(fvec4) CompositeConstruct 34 34 34 34 + 48: 11(fvec4) FSub 46 47 + Store 23(r) 48 + Branch 45 + 49: Label + Line 1 23 0 + 51: 11(fvec4) Load 23(r) + 52: 11(fvec4) VectorTimesScalar 51 50 + Store 23(r) 52 + Branch 45 + 45: Label + Line 1 25 0 + 53: 11(fvec4) Load 23(r) + ReturnValue 53 + FunctionEnd + Line 1 28 34 +20(testBranch(f1;f1;): 10(float) Function None 17 + 18(x): 16(ptr) FunctionParameter + 19(y): 16(ptr) FunctionParameter + 21: Label + 56(result): 16(ptr) Variable Function + 59(b): 58(ptr) Variable Function + 90: 16(ptr) Variable Function + Line 1 30 0 + Store 56(result) 57 + Line 1 31 0 + 60: 10(float) Load 18(x) + 61: 42(bool) FOrdGreaterThan 60 57 + Store 59(b) 61 + Line 1 34 0 + 62: 42(bool) Load 59(b) + SelectionMerge 64 None + BranchConditional 62 63 67 + 63: Label + Line 1 35 0 + 65: 10(float) Load 56(result) + 66: 10(float) FAdd 65 34 + Store 56(result) 66 + Branch 64 + 67: Label + Line 1 38 0 + 68: 10(float) Load 56(result) + 69: 10(float) FSub 68 34 + Store 56(result) 69 + Branch 64 + 64: Label + Line 1 42 0 + 70: 10(float) Load 18(x) + 71: 10(float) Load 19(y) + 72: 42(bool) FOrdGreaterThan 70 71 + SelectionMerge 74 None + BranchConditional 72 73 74 + 73: Label + Line 1 43 0 + 75: 10(float) Load 18(x) + 76: 10(float) Load 19(y) + 77: 10(float) FSub 75 76 + 78: 10(float) Load 56(result) + 79: 10(float) FAdd 78 77 + Store 56(result) 79 + Branch 74 + 74: Label + Line 1 47 0 + 80: 42(bool) Load 59(b) + 83: 7(int) Select 80 81 82 + 84: 10(float) ConvertSToF 83 + 85: 10(float) Load 56(result) + 86: 10(float) FAdd 85 84 + Store 56(result) 86 + Line 1 51 0 + 87: 10(float) Load 18(x) + 88: 10(float) Load 19(y) + 89: 42(bool) FOrdLessThan 87 88 + SelectionMerge 92 None + BranchConditional 89 91 94 + 91: Label + Line 1 52 0 + 93: 10(float) Load 19(y) + Store 90 93 + Branch 92 + 94: Label + Line 1 53 0 + 95: 42(bool) Load 59(b) + 96: 10(float) Select 95 34 57 + Store 90 96 + Branch 92 + 92: Label + 97: 10(float) Load 90 + Line 1 51 0 + 98: 10(float) Load 56(result) + 99: 10(float) FAdd 98 97 + Store 56(result) 99 + Line 1 55 0 + 100: 10(float) Load 56(result) + ReturnValue 100 + FunctionEnd diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index 475187d9c8..8bacd74d9a 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -7,13 +7,17 @@ spv.debugInfo.frag 2: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 EntryPoint Fragment 5 "main" 30 104 - ExecutionMode 5 OriginUpperLeft + ExecutionMode 5 OriginLowerLeft 1: String "spv.debugInfo.frag" - Source GLSL 450 1 "// OpModuleProcessed auto-map-locations + Source GLSL 450 1 "// OpModuleProcessed no-storage-format +// OpModuleProcessed resource-set-binding 3 // OpModuleProcessed auto-map-bindings -// OpModuleProcessed client vulkan100 -// OpModuleProcessed target-env vulkan1.0 -// OpModuleProcessed keep-uncalled +// OpModuleProcessed auto-map-locations +// OpModuleProcessed client opengl100 +// OpModuleProcessed target-env opengl +// OpModuleProcessed relaxed-errors +// OpModuleProcessed suppress-warnings +// OpModuleProcessed hlsl-offsets // OpModuleProcessed entry-point main #line 1 #version 450 @@ -127,9 +131,10 @@ void main() MemberDecorate 105(S) 0 Offset 0 MemberDecorate 106(ubuf) 0 Offset 0 Decorate 106(ubuf) Block - Decorate 108 DescriptorSet 0 + Decorate 108 DescriptorSet 3 Decorate 108 Binding 0 - Decorate 131(s2d) DescriptorSet 0 + Decorate 131(s2d) Location 0 + Decorate 131(s2d) DescriptorSet 3 Decorate 131(s2d) Binding 1 3: TypeVoid 4: TypeFunction 3 diff --git a/Test/runtests b/Test/runtests index 52898e061f..00c2babdaa 100755 --- a/Test/runtests +++ b/Test/runtests @@ -169,6 +169,12 @@ diff -b $BASEDIR/spv.looseUniformNoLoc.vert.out "$TARGETDIR/spv.looseUniformNoLo # Testing debug information # echo Testing SPV Debug Information +run -g --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ + -G -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.frag.out" +diff -b $BASEDIR/spv.debugInfo.frag.out "$TARGETDIR/spv.debugInfo.frag.out" || HASERROR=1 +run -g -Od --target-env vulkan1.1 --relaxed-errors --suppress-warnings --aml --amb --hlsl-offsets --nsf --spirv-val \ + -V -H spv.debugInfo.frag --rsb frag 3 > "$TARGETDIR/spv.debugInfo.1.1.frag.out" +diff -b $BASEDIR/spv.debugInfo.1.1.frag.out "$TARGETDIR/spv.debugInfo.1.1.frag.out" || HASERROR=1 run -g -D -Od -e newMain -g --amb --aml --fua --hlsl-iomap --nsf --spirv-val --sib 1 --ssb 2 --sbb 3 --stb 4 --suavb 5 --sub 6 \ --sep origMain -H -Od spv.hlslDebugInfo.vert --rsb vert t0 0 0 > "$TARGETDIR/spv.hlslDebugInfo.frag.out" diff -b $BASEDIR/spv.hlslDebugInfo.frag.out "$TARGETDIR/spv.hlslDebugInfo.frag.out" || HASERROR=1 diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 627b3aa46d..77e9cccfd3 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -935,7 +935,6 @@ INSTANTIATE_TEST_SUITE_P( Glsl, GlslSpirvDebugInfoTest, ::testing::ValuesIn(std::vector({ "spv.pp.line.frag", - "spv.debugInfo.frag", })), FileNameAsCustomTestSuffix ); From eadafe80edb6719cdffd77cc2792ac2b46baf8f1 Mon Sep 17 00:00:00 2001 From: Romaric Jodin Date: Mon, 17 Jun 2024 11:47:50 +0200 Subject: [PATCH 497/594] Update known_good.json Also update test that is now passing --- Test/baseResults/spv.coopmat_armlayout.comp.out | 1 - known_good.json | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/Test/baseResults/spv.coopmat_armlayout.comp.out b/Test/baseResults/spv.coopmat_armlayout.comp.out index 1af49f2924..fbeb65551d 100644 --- a/Test/baseResults/spv.coopmat_armlayout.comp.out +++ b/Test/baseResults/spv.coopmat_armlayout.comp.out @@ -1,5 +1,4 @@ spv.coopmat_armlayout.comp -Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 251 diff --git a/known_good.json b/known_good.json index c6de6b1834..03d5a0f5ea 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "ce46482db7ab3ea9c52fce832d27ca40b14f8e87" + "commit": "bc28ac7c195f59b14535edec8472d97fd32a91ad" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "eb49bb7b1136298b77945c52b4bbbc433f7885de" + "commit" : "2acb319af38d43be3ea76bfabf3998e5281d8d12" }, { "name": "googletest", From d275ea6c528cd860eafc0505a963b888148784d4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 06:16:06 +0000 Subject: [PATCH 498/594] Bump github/codeql-action from 3.25.8 to 3.25.10 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.8 to 3.25.10. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/2e230e8fe0ad3a14a340ad0815ddb96d599d2aff...23acc5c183826b7a8a97bce3cecc52db901f8251) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3aa30b6856..36394ad58f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2e230e8fe0ad3a14a340ad0815ddb96d599d2aff # v3.25.8 + uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 with: sarif_file: results.sarif From 68a17eb72182d3dcfac834eed3512ea205eac9d1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 17 Jun 2024 06:16:11 +0000 Subject: [PATCH 499/594] Bump actions/checkout from 4.1.6 to 4.1.7 Bumps [actions/checkout](https://github.com/actions/checkout) from 4.1.6 to 4.1.7. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/a5ac7e51b41094c92402da3b24376905380afc29...692973e3d937129bcbf40652eb9f2f61becf3332) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- .github/workflows/scorecard.yml | 2 +- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index aee4a305a0..ac7e3d1cad 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -41,7 +41,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -105,7 +105,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -162,7 +162,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 38ebdc0d3a..642eef10e1 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -17,7 +17,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -53,7 +53,7 @@ jobs: cmake_build_type: [Debug] flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -91,7 +91,7 @@ jobs: name: Linux Backcompat runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -126,7 +126,7 @@ jobs: compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON @@ -150,7 +150,7 @@ jobs: os: [{genus: windows-2019, family: windows}] cmake_build_type: [Debug, Release] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: @@ -168,7 +168,7 @@ jobs: iOS: runs-on: macos-13 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -197,7 +197,7 @@ jobs: # Test both to ensure we are compatible with either approach. LEGACY: [ON, OFF] steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 @@ -220,7 +220,7 @@ jobs: emscripten: runs-on: ubuntu-22.04 steps: - - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 36394ad58f..06ba4a062c 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -23,7 +23,7 @@ jobs: steps: - name: "Checkout code" - uses: actions/checkout@a5ac7e51b41094c92402da3b24376905380afc29 # v4.1.6 + uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 with: persist-credentials: false From a05c4eca74b3a5306080a9aaca54d215dec8c7b3 Mon Sep 17 00:00:00 2001 From: RP Singh Date: Fri, 21 Jun 2024 02:04:59 +0530 Subject: [PATCH 500/594] Skip identity conversions for 8-bit and 16-bit types (#3622) [BugFix] Do not generate any conversion for 8-bit and 16-bit types if it is an identity conversion. Earlier (before this fix), it generated incorrect SPIR-V convert instructions, as SPIR-V requires that the types being converted differ. --- glslang/MachineIndependent/ParseHelper.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 98a7d26883..c5f0e63f14 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -4,6 +4,7 @@ // Copyright (C) 2015-2018 Google, Inc. // Copyright (C) 2017, 2019 ARM Limited. // Modifications Copyright (C) 2020 Advanced Micro Devices, Inc. All rights reserved. +// Modifications Copyright (C) 2024 Ravi Prakash Singh. // // All rights reserved. // @@ -8540,7 +8541,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructFloat16; // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, // so construct a 32-bit type and convert - if (!intermediate.getArithemeticFloat16Enabled()) { + // and do not generate any conversion if it is an identity conversion, i.e. float16_t( var) + if (!intermediate.getArithemeticFloat16Enabled() && (node->getBasicType() != EbtFloat16)) { TType tempType(EbtFloat, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { @@ -8563,7 +8565,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructInt8; // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, // so construct a 32-bit type and convert - if (!intermediate.getArithemeticInt8Enabled()) { + // and do not generate any conversion if it is an identity conversion, i.e. int8_t( var) + if (!intermediate.getArithemeticInt8Enabled() && (node->getBasicType() != EbtInt8)) { TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { @@ -8586,7 +8589,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructUint8; // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, // so construct a 32-bit type and convert - if (!intermediate.getArithemeticInt8Enabled()) { + // and do not generate any conversion if it is an identity conversion, i.e. uint8_t( var) + if (!intermediate.getArithemeticInt8Enabled() && (node->getBasicType() != EbtUint8)) { TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { @@ -8609,7 +8613,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructInt16; // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, // so construct a 32-bit type and convert - if (!intermediate.getArithemeticInt16Enabled()) { + // and do not generate any conversion if it is an identity conversion, i.e. int16_t( var) + if (!intermediate.getArithemeticInt16Enabled() && (node->getBasicType() != EbtInt16)) { TType tempType(EbtInt, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { @@ -8632,7 +8637,8 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T basicOp = EOpConstructUint16; // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, // so construct a 32-bit type and convert - if (!intermediate.getArithemeticInt16Enabled()) { + // and do not generate any conversion if it is an identity conversion, i.e. uint16_t( var) + if (!intermediate.getArithemeticInt16Enabled() && (node->getBasicType() != EbtUint16)) { TType tempType(EbtUint, EvqTemporary, type.getVectorSize()); newNode = node; if (tempType != newNode->getType()) { From 2d8b71fc63578a93726c05e0565c3ef064bdc1ba Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 20 Jun 2024 17:13:09 -0400 Subject: [PATCH 501/594] Add test cases for redundant type conversions These redundant type conversions were generating illegal SPIR-V when only the 8-bit/16-bit storage extensions and not the corresponding arithmetic extensions were enabled. --- .../baseResults/spv.16bitstorage-int.frag.out | 22 ++++++++++++++++++- .../spv.16bitstorage-uint.frag.out | 22 ++++++++++++++++++- Test/baseResults/spv.16bitstorage.frag.out | 22 ++++++++++++++++++- Test/baseResults/spv.8bitstorage-int.frag.out | 22 ++++++++++++++++++- .../baseResults/spv.8bitstorage-uint.frag.out | 22 ++++++++++++++++++- Test/spv.16bitstorage-int.frag | 3 +++ Test/spv.16bitstorage-uint.frag | 3 +++ Test/spv.16bitstorage.frag | 3 +++ Test/spv.8bitstorage-int.frag | 3 +++ Test/spv.8bitstorage-uint.frag | 3 +++ 10 files changed, 120 insertions(+), 5 deletions(-) diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out index d14519b995..143983cb23 100644 --- a/Test/baseResults/spv.16bitstorage-int.frag.out +++ b/Test/baseResults/spv.16bitstorage-int.frag.out @@ -1,9 +1,10 @@ spv.16bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 171 +// Id's are bound by 187 Capability Shader + Capability Int16 Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" @@ -335,5 +336,24 @@ spv.16bitstorage-int.frag 169: 6(int16_t) SConvert 58 170: 28(ptr) AccessChain 19(b2) 21 Store 170 169 + 171: 28(ptr) AccessChain 27(b1) 21 + 172: 6(int16_t) Load 171 + 173: 28(ptr) AccessChain 19(b2) 21 + Store 173 172 + 174: 42(ptr) AccessChain 27(b1) 32 + 175: 7(i16vec2) Load 174 + 176: 6(int16_t) CompositeExtract 175 0 + 177: 6(int16_t) CompositeExtract 175 1 + 178: 7(i16vec2) CompositeConstruct 176 177 + 179: 42(ptr) AccessChain 19(b2) 32 + Store 179 178 + 180: 34(ptr) AccessChain 27(b1) 33 + 181: 8(i16vec3) Load 180 + 182: 6(int16_t) CompositeExtract 181 0 + 183: 6(int16_t) CompositeExtract 181 1 + 184: 6(int16_t) CompositeExtract 181 2 + 185: 8(i16vec3) CompositeConstruct 182 183 184 + 186: 34(ptr) AccessChain 19(b2) 33 + Store 186 185 Return FunctionEnd diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out index ea935ce687..4b30c2974c 100644 --- a/Test/baseResults/spv.16bitstorage-uint.frag.out +++ b/Test/baseResults/spv.16bitstorage-uint.frag.out @@ -1,9 +1,10 @@ spv.16bitstorage-uint.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 173 +// Id's are bound by 189 Capability Shader + Capability Int16 Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" @@ -337,5 +338,24 @@ spv.16bitstorage-uint.frag 171: 6(int16_t) UConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 + 173: 28(ptr) AccessChain 27(b1) 21 + 174: 6(int16_t) Load 173 + 175: 28(ptr) AccessChain 19(b2) 21 + Store 175 174 + 176: 42(ptr) AccessChain 27(b1) 32 + 177: 7(i16vec2) Load 176 + 178: 6(int16_t) CompositeExtract 177 0 + 179: 6(int16_t) CompositeExtract 177 1 + 180: 7(i16vec2) CompositeConstruct 178 179 + 181: 42(ptr) AccessChain 19(b2) 32 + Store 181 180 + 182: 34(ptr) AccessChain 27(b1) 33 + 183: 8(i16vec3) Load 182 + 184: 6(int16_t) CompositeExtract 183 0 + 185: 6(int16_t) CompositeExtract 183 1 + 186: 6(int16_t) CompositeExtract 183 2 + 187: 8(i16vec3) CompositeConstruct 184 185 186 + 188: 34(ptr) AccessChain 19(b2) 33 + Store 188 187 Return FunctionEnd diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out index c19f607cb7..7e186809c1 100644 --- a/Test/baseResults/spv.16bitstorage.frag.out +++ b/Test/baseResults/spv.16bitstorage.frag.out @@ -1,9 +1,10 @@ spv.16bitstorage.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 173 +// Id's are bound by 189 Capability Shader + Capability Float16 Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" @@ -337,5 +338,24 @@ spv.16bitstorage.frag 171:6(float16_t) FConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 + 173: 28(ptr) AccessChain 27(b1) 21 + 174:6(float16_t) Load 173 + 175: 28(ptr) AccessChain 19(b2) 21 + Store 175 174 + 176: 43(ptr) AccessChain 27(b1) 32 + 177: 7(f16vec2) Load 176 + 178:6(float16_t) CompositeExtract 177 0 + 179:6(float16_t) CompositeExtract 177 1 + 180: 7(f16vec2) CompositeConstruct 178 179 + 181: 43(ptr) AccessChain 19(b2) 32 + Store 181 180 + 182: 34(ptr) AccessChain 27(b1) 33 + 183: 8(f16vec3) Load 182 + 184:6(float16_t) CompositeExtract 183 0 + 185:6(float16_t) CompositeExtract 183 1 + 186:6(float16_t) CompositeExtract 183 2 + 187: 8(f16vec3) CompositeConstruct 184 185 186 + 188: 34(ptr) AccessChain 19(b2) 33 + Store 188 187 Return FunctionEnd diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out index 830b3e3296..da8fe267b5 100644 --- a/Test/baseResults/spv.8bitstorage-int.frag.out +++ b/Test/baseResults/spv.8bitstorage-int.frag.out @@ -1,9 +1,10 @@ spv.8bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 171 +// Id's are bound by 187 Capability Shader + Capability Int8 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" @@ -334,5 +335,24 @@ spv.8bitstorage-int.frag 169: 6(int8_t) SConvert 58 170: 28(ptr) AccessChain 19(b2) 21 Store 170 169 + 171: 28(ptr) AccessChain 27(b1) 21 + 172: 6(int8_t) Load 171 + 173: 28(ptr) AccessChain 19(b2) 21 + Store 173 172 + 174: 42(ptr) AccessChain 27(b1) 32 + 175: 7(i8vec2) Load 174 + 176: 6(int8_t) CompositeExtract 175 0 + 177: 6(int8_t) CompositeExtract 175 1 + 178: 7(i8vec2) CompositeConstruct 176 177 + 179: 42(ptr) AccessChain 19(b2) 32 + Store 179 178 + 180: 34(ptr) AccessChain 27(b1) 33 + 181: 8(i8vec3) Load 180 + 182: 6(int8_t) CompositeExtract 181 0 + 183: 6(int8_t) CompositeExtract 181 1 + 184: 6(int8_t) CompositeExtract 181 2 + 185: 8(i8vec3) CompositeConstruct 182 183 184 + 186: 34(ptr) AccessChain 19(b2) 33 + Store 186 185 Return FunctionEnd diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out index f372baf13d..eb1ecca564 100644 --- a/Test/baseResults/spv.8bitstorage-uint.frag.out +++ b/Test/baseResults/spv.8bitstorage-uint.frag.out @@ -1,9 +1,10 @@ spv.8bitstorage-uint.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 173 +// Id's are bound by 189 Capability Shader + Capability Int8 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" @@ -336,5 +337,24 @@ spv.8bitstorage-uint.frag 171: 6(int8_t) UConvert 170 172: 28(ptr) AccessChain 19(b2) 21 Store 172 171 + 173: 28(ptr) AccessChain 27(b1) 21 + 174: 6(int8_t) Load 173 + 175: 28(ptr) AccessChain 19(b2) 21 + Store 175 174 + 176: 42(ptr) AccessChain 27(b1) 32 + 177: 7(i8vec2) Load 176 + 178: 6(int8_t) CompositeExtract 177 0 + 179: 6(int8_t) CompositeExtract 177 1 + 180: 7(i8vec2) CompositeConstruct 178 179 + 181: 42(ptr) AccessChain 19(b2) 32 + Store 181 180 + 182: 34(ptr) AccessChain 27(b1) 33 + 183: 8(i8vec3) Load 182 + 184: 6(int8_t) CompositeExtract 183 0 + 185: 6(int8_t) CompositeExtract 183 1 + 186: 6(int8_t) CompositeExtract 183 2 + 187: 8(i8vec3) CompositeConstruct 184 185 186 + 188: 34(ptr) AccessChain 19(b2) 33 + Store 188 187 Return FunctionEnd diff --git a/Test/spv.16bitstorage-int.frag b/Test/spv.16bitstorage-int.frag index 57be67ee95..7252bfebe7 100644 --- a/Test/spv.16bitstorage-int.frag +++ b/Test/spv.16bitstorage-int.frag @@ -86,5 +86,8 @@ void main() b2.o = b2.p.x; b2.p = i16vec2(ivec2(1, 2)); b2.o = int16_t(3); + b2.o = int16_t(b1.a); + b2.p = i16vec2(b1.b); + b2.q = i16vec3(b1.c); } diff --git a/Test/spv.16bitstorage-uint.frag b/Test/spv.16bitstorage-uint.frag index aeecd0419c..104aaf5ffe 100644 --- a/Test/spv.16bitstorage-uint.frag +++ b/Test/spv.16bitstorage-uint.frag @@ -86,5 +86,8 @@ void main() b2.o = b2.p.x; b2.p = u16vec2(uvec2(1, 2)); b2.o = uint16_t(3u); + b2.o = uint16_t(b1.a); + b2.p = u16vec2(b1.b); + b2.q = u16vec3(b1.c); } diff --git a/Test/spv.16bitstorage.frag b/Test/spv.16bitstorage.frag index b821be1e1a..032629b000 100644 --- a/Test/spv.16bitstorage.frag +++ b/Test/spv.16bitstorage.frag @@ -86,5 +86,8 @@ void main() b2.o = b2.p.x; b2.p = f16vec2(vec2(1.0, 2.0)); b2.o = float16_t(3.0); + b2.o = float16_t(b1.a); + b2.p = f16vec2(b1.b); + b2.q = f16vec3(b1.c); } diff --git a/Test/spv.8bitstorage-int.frag b/Test/spv.8bitstorage-int.frag index 93203c36cd..09d95b99c1 100644 --- a/Test/spv.8bitstorage-int.frag +++ b/Test/spv.8bitstorage-int.frag @@ -86,5 +86,8 @@ void main() b2.o = b2.p.x; b2.p = i8vec2(ivec2(1, 2)); b2.o = int8_t(3); + b2.o = int8_t(b1.a); + b2.p = i8vec2(b1.b); + b2.q = i8vec3(b1.c); } diff --git a/Test/spv.8bitstorage-uint.frag b/Test/spv.8bitstorage-uint.frag index 574d088edc..3a3b181686 100644 --- a/Test/spv.8bitstorage-uint.frag +++ b/Test/spv.8bitstorage-uint.frag @@ -86,5 +86,8 @@ void main() b2.o = b2.p.x; b2.p = u8vec2(uvec2(1, 2)); b2.o = uint8_t(3u); + b2.o = uint8_t(b1.a); + b2.p = u8vec2(b1.b); + b2.q = u8vec3(b1.c); } From 33d517470eaeba6665755243547a73f901063976 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 21 Jun 2024 14:07:50 -0400 Subject: [PATCH 502/594] Generate vector constructions more efficiently when sizes match When two vectors are the same size, there is no need to extract the components and construct a new vector. --- SPIRV/SpvBuilder.cpp | 6 + .../hlsl.samplecmp.array.dx10.frag.out | 273 ++-- ...lsl.samplecmplevelzero.array.dx10.frag.out | 273 ++-- .../baseResults/spv.16bitstorage-int.frag.out | 20 +- .../spv.16bitstorage-uint.frag.out | 20 +- Test/baseResults/spv.16bitstorage.frag.out | 20 +- Test/baseResults/spv.8bitstorage-int.frag.out | 20 +- .../baseResults/spv.8bitstorage-uint.frag.out | 20 +- Test/baseResults/spv.debuginfo.glsl.frag.out | 106 +- Test/baseResults/spv.explicittypes.frag.out | 503 ++++--- Test/baseResults/spv.float16.frag.out | 1154 ++++++++--------- Test/baseResults/spv.floatFetch.frag.out | 165 ++- Test/baseResults/spv.int32.frag.out | 1064 ++++++++------- 13 files changed, 1777 insertions(+), 1867 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 51c6bc21d4..6e5c00b5cb 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -3424,6 +3424,12 @@ Id Builder::createConstructor(Decoration precision, const std::vector& sourc if (sources.size() == 1 && isScalar(sources[0]) && numTargetComponents > 1) return smearScalar(precision, sources[0], resultTypeId); + // Special case: 2 vectors of equal size + if (sources.size() == 1 && isVector(sources[0]) && numTargetComponents == getNumComponents(sources[0])) { + assert(resultTypeId == getTypeId(sources[0])); + return sources[0]; + } + // accumulate the arguments for OpCompositeConstruct std::vector constituents; Id scalarTypeId = getScalarTypeId(resultTypeId); diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index caddceeb8a..cde1d519c4 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -400,14 +400,14 @@ using depth_any Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 209 +// Id's are bound by 194 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 166 170 + EntryPoint Fragment 4 "main" 151 155 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 @@ -431,26 +431,26 @@ Validation failed Name 96 "g_tTex2du4a" Name 107 "r60" Name 110 "g_tTexcdf4a" - Name 123 "r62" - Name 126 "g_tTexcdi4a" - Name 137 "r64" - Name 140 "g_tTexcdu4a" - Name 152 "psout" - Name 163 "flattenTemp" - Name 166 "@entryPointOutput.Color" - Name 170 "@entryPointOutput.Depth" - Name 175 "g_tTex1df4" - Name 178 "g_tTex1di4" - Name 181 "g_tTex1du4" - Name 184 "g_tTex2df4" - Name 187 "g_tTex2di4" - Name 190 "g_tTex2du4" - Name 193 "g_tTex3df4" - Name 196 "g_tTex3di4" - Name 199 "g_tTex3du4" - Name 202 "g_tTexcdf4" - Name 205 "g_tTexcdi4" - Name 208 "g_tTexcdu4" + Name 118 "r62" + Name 121 "g_tTexcdi4a" + Name 127 "r64" + Name 130 "g_tTexcdu4a" + Name 137 "psout" + Name 148 "flattenTemp" + Name 151 "@entryPointOutput.Color" + Name 155 "@entryPointOutput.Depth" + Name 160 "g_tTex1df4" + Name 163 "g_tTex1di4" + Name 166 "g_tTex1du4" + Name 169 "g_tTex2df4" + Name 172 "g_tTex2di4" + Name 175 "g_tTex2du4" + Name 178 "g_tTex3df4" + Name 181 "g_tTex3di4" + Name 184 "g_tTex3du4" + Name 187 "g_tTexcdf4" + Name 190 "g_tTexcdi4" + Name 193 "g_tTexcdu4" Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 Decorate 20(g_sSamp) DescriptorSet 0 @@ -467,36 +467,36 @@ Validation failed Decorate 96(g_tTex2du4a) Binding 6 Decorate 110(g_tTexcdf4a) DescriptorSet 0 Decorate 110(g_tTexcdf4a) Binding 7 - Decorate 126(g_tTexcdi4a) DescriptorSet 0 - Decorate 126(g_tTexcdi4a) Binding 8 - Decorate 140(g_tTexcdu4a) DescriptorSet 0 - Decorate 140(g_tTexcdu4a) Binding 9 - Decorate 166(@entryPointOutput.Color) Location 0 - Decorate 170(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 175(g_tTex1df4) DescriptorSet 0 - Decorate 175(g_tTex1df4) Binding 0 - Decorate 178(g_tTex1di4) DescriptorSet 0 - Decorate 178(g_tTex1di4) Binding 0 - Decorate 181(g_tTex1du4) DescriptorSet 0 - Decorate 181(g_tTex1du4) Binding 0 - Decorate 184(g_tTex2df4) DescriptorSet 0 - Decorate 184(g_tTex2df4) Binding 0 - Decorate 187(g_tTex2di4) DescriptorSet 0 - Decorate 187(g_tTex2di4) Binding 0 - Decorate 190(g_tTex2du4) DescriptorSet 0 - Decorate 190(g_tTex2du4) Binding 0 - Decorate 193(g_tTex3df4) DescriptorSet 0 - Decorate 193(g_tTex3df4) Binding 0 - Decorate 196(g_tTex3di4) DescriptorSet 0 - Decorate 196(g_tTex3di4) Binding 0 - Decorate 199(g_tTex3du4) DescriptorSet 0 - Decorate 199(g_tTex3du4) Binding 0 - Decorate 202(g_tTexcdf4) DescriptorSet 0 - Decorate 202(g_tTexcdf4) Binding 0 - Decorate 205(g_tTexcdi4) DescriptorSet 0 - Decorate 205(g_tTexcdi4) Binding 0 - Decorate 208(g_tTexcdu4) DescriptorSet 0 - Decorate 208(g_tTexcdu4) Binding 0 + Decorate 121(g_tTexcdi4a) DescriptorSet 0 + Decorate 121(g_tTexcdi4a) Binding 8 + Decorate 130(g_tTexcdu4a) DescriptorSet 0 + Decorate 130(g_tTexcdu4a) Binding 9 + Decorate 151(@entryPointOutput.Color) Location 0 + Decorate 155(@entryPointOutput.Depth) BuiltIn FragDepth + Decorate 160(g_tTex1df4) DescriptorSet 0 + Decorate 160(g_tTex1df4) Binding 0 + Decorate 163(g_tTex1di4) DescriptorSet 0 + Decorate 163(g_tTex1di4) Binding 0 + Decorate 166(g_tTex1du4) DescriptorSet 0 + Decorate 166(g_tTex1du4) Binding 0 + Decorate 169(g_tTex2df4) DescriptorSet 0 + Decorate 169(g_tTex2df4) Binding 0 + Decorate 172(g_tTex2di4) DescriptorSet 0 + Decorate 172(g_tTex2di4) Binding 0 + Decorate 175(g_tTex2du4) DescriptorSet 0 + Decorate 175(g_tTex2du4) Binding 0 + Decorate 178(g_tTex3df4) DescriptorSet 0 + Decorate 178(g_tTex3df4) Binding 0 + Decorate 181(g_tTex3di4) DescriptorSet 0 + Decorate 181(g_tTex3di4) Binding 0 + Decorate 184(g_tTex3du4) DescriptorSet 0 + Decorate 184(g_tTex3du4) Binding 0 + Decorate 187(g_tTexcdf4) DescriptorSet 0 + Decorate 187(g_tTexcdf4) Binding 0 + Decorate 190(g_tTexcdi4) DescriptorSet 0 + Decorate 190(g_tTexcdi4) Binding 0 + Decorate 193(g_tTexcdu4) DescriptorSet 0 + Decorate 193(g_tTexcdu4) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -547,71 +547,71 @@ Validation failed 113: TypeSampledImage 108 115: 6(float) Constant 1053609165 116: 7(fvec4) ConstantComposite 25 26 71 115 - 124: TypeImage 36(int) Cube depth array sampled format:Unknown - 125: TypePointer UniformConstant 124 -126(g_tTexcdi4a): 125(ptr) Variable UniformConstant - 129: TypeSampledImage 124 - 138: TypeImage 50(int) Cube depth array sampled format:Unknown - 139: TypePointer UniformConstant 138 -140(g_tTexcdu4a): 139(ptr) Variable UniformConstant - 143: TypeSampledImage 138 - 151: TypePointer Function 8(PS_OUTPUT) - 153: 36(int) Constant 0 - 154: 6(float) Constant 1065353216 - 155: 7(fvec4) ConstantComposite 154 154 154 154 - 156: TypePointer Function 7(fvec4) - 158: 36(int) Constant 1 - 165: TypePointer Output 7(fvec4) -166(@entryPointOutput.Color): 165(ptr) Variable Output - 169: TypePointer Output 6(float) -170(@entryPointOutput.Depth): 169(ptr) Variable Output - 173: TypeImage 6(float) 1D sampled format:Unknown + 119: TypeImage 36(int) Cube depth array sampled format:Unknown + 120: TypePointer UniformConstant 119 +121(g_tTexcdi4a): 120(ptr) Variable UniformConstant + 124: TypeSampledImage 119 + 128: TypeImage 50(int) Cube depth array sampled format:Unknown + 129: TypePointer UniformConstant 128 +130(g_tTexcdu4a): 129(ptr) Variable UniformConstant + 133: TypeSampledImage 128 + 136: TypePointer Function 8(PS_OUTPUT) + 138: 36(int) Constant 0 + 139: 6(float) Constant 1065353216 + 140: 7(fvec4) ConstantComposite 139 139 139 139 + 141: TypePointer Function 7(fvec4) + 143: 36(int) Constant 1 + 150: TypePointer Output 7(fvec4) +151(@entryPointOutput.Color): 150(ptr) Variable Output + 154: TypePointer Output 6(float) +155(@entryPointOutput.Depth): 154(ptr) Variable Output + 158: TypeImage 6(float) 1D sampled format:Unknown + 159: TypePointer UniformConstant 158 + 160(g_tTex1df4): 159(ptr) Variable UniformConstant + 161: TypeImage 36(int) 1D sampled format:Unknown + 162: TypePointer UniformConstant 161 + 163(g_tTex1di4): 162(ptr) Variable UniformConstant + 164: TypeImage 50(int) 1D sampled format:Unknown + 165: TypePointer UniformConstant 164 + 166(g_tTex1du4): 165(ptr) Variable UniformConstant + 167: TypeImage 6(float) 2D sampled format:Unknown + 168: TypePointer UniformConstant 167 + 169(g_tTex2df4): 168(ptr) Variable UniformConstant + 170: TypeImage 36(int) 2D sampled format:Unknown + 171: TypePointer UniformConstant 170 + 172(g_tTex2di4): 171(ptr) Variable UniformConstant + 173: TypeImage 50(int) 2D sampled format:Unknown 174: TypePointer UniformConstant 173 - 175(g_tTex1df4): 174(ptr) Variable UniformConstant - 176: TypeImage 36(int) 1D sampled format:Unknown + 175(g_tTex2du4): 174(ptr) Variable UniformConstant + 176: TypeImage 6(float) 3D sampled format:Unknown 177: TypePointer UniformConstant 176 - 178(g_tTex1di4): 177(ptr) Variable UniformConstant - 179: TypeImage 50(int) 1D sampled format:Unknown + 178(g_tTex3df4): 177(ptr) Variable UniformConstant + 179: TypeImage 36(int) 3D sampled format:Unknown 180: TypePointer UniformConstant 179 - 181(g_tTex1du4): 180(ptr) Variable UniformConstant - 182: TypeImage 6(float) 2D sampled format:Unknown + 181(g_tTex3di4): 180(ptr) Variable UniformConstant + 182: TypeImage 50(int) 3D sampled format:Unknown 183: TypePointer UniformConstant 182 - 184(g_tTex2df4): 183(ptr) Variable UniformConstant - 185: TypeImage 36(int) 2D sampled format:Unknown + 184(g_tTex3du4): 183(ptr) Variable UniformConstant + 185: TypeImage 6(float) Cube sampled format:Unknown 186: TypePointer UniformConstant 185 - 187(g_tTex2di4): 186(ptr) Variable UniformConstant - 188: TypeImage 50(int) 2D sampled format:Unknown + 187(g_tTexcdf4): 186(ptr) Variable UniformConstant + 188: TypeImage 36(int) Cube sampled format:Unknown 189: TypePointer UniformConstant 188 - 190(g_tTex2du4): 189(ptr) Variable UniformConstant - 191: TypeImage 6(float) 3D sampled format:Unknown + 190(g_tTexcdi4): 189(ptr) Variable UniformConstant + 191: TypeImage 50(int) Cube sampled format:Unknown 192: TypePointer UniformConstant 191 - 193(g_tTex3df4): 192(ptr) Variable UniformConstant - 194: TypeImage 36(int) 3D sampled format:Unknown - 195: TypePointer UniformConstant 194 - 196(g_tTex3di4): 195(ptr) Variable UniformConstant - 197: TypeImage 50(int) 3D sampled format:Unknown - 198: TypePointer UniformConstant 197 - 199(g_tTex3du4): 198(ptr) Variable UniformConstant - 200: TypeImage 6(float) Cube sampled format:Unknown - 201: TypePointer UniformConstant 200 - 202(g_tTexcdf4): 201(ptr) Variable UniformConstant - 203: TypeImage 36(int) Cube sampled format:Unknown - 204: TypePointer UniformConstant 203 - 205(g_tTexcdi4): 204(ptr) Variable UniformConstant - 206: TypeImage 50(int) Cube sampled format:Unknown - 207: TypePointer UniformConstant 206 - 208(g_tTexcdu4): 207(ptr) Variable UniformConstant + 193(g_tTexcdu4): 192(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label -163(flattenTemp): 151(ptr) Variable Function - 164:8(PS_OUTPUT) FunctionCall 10(@main() - Store 163(flattenTemp) 164 - 167: 156(ptr) AccessChain 163(flattenTemp) 153 - 168: 7(fvec4) Load 167 - Store 166(@entryPointOutput.Color) 168 - 171: 12(ptr) AccessChain 163(flattenTemp) 158 - 172: 6(float) Load 171 - Store 170(@entryPointOutput.Depth) 172 +148(flattenTemp): 136(ptr) Variable Function + 149:8(PS_OUTPUT) FunctionCall 10(@main() + Store 148(flattenTemp) 149 + 152: 141(ptr) AccessChain 148(flattenTemp) 138 + 153: 7(fvec4) Load 152 + Store 151(@entryPointOutput.Color) 153 + 156: 12(ptr) AccessChain 148(flattenTemp) 143 + 157: 6(float) Load 156 + Store 155(@entryPointOutput.Depth) 157 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 @@ -623,9 +623,9 @@ Validation failed 79(r32): 12(ptr) Variable Function 93(r34): 12(ptr) Variable Function 107(r60): 12(ptr) Variable Function - 123(r62): 12(ptr) Variable Function - 137(r64): 12(ptr) Variable Function - 152(psout): 151(ptr) Variable Function + 118(r62): 12(ptr) Variable Function + 127(r64): 12(ptr) Variable Function + 137(psout): 136(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 @@ -686,37 +686,22 @@ Validation failed 111: 108 Load 110(g_tTexcdf4a) 112: 18 Load 20(g_sSamp) 114: 113 SampledImage 111 112 - 117: 6(float) CompositeExtract 116 0 - 118: 6(float) CompositeExtract 116 1 - 119: 6(float) CompositeExtract 116 2 - 120: 6(float) CompositeExtract 116 3 - 121: 7(fvec4) CompositeConstruct 117 118 119 120 - 122: 6(float) ImageSampleDrefImplicitLod 114 121 28 - Store 107(r60) 122 - 127: 124 Load 126(g_tTexcdi4a) - 128: 18 Load 20(g_sSamp) - 130: 129 SampledImage 127 128 - 131: 6(float) CompositeExtract 116 0 - 132: 6(float) CompositeExtract 116 1 - 133: 6(float) CompositeExtract 116 2 - 134: 6(float) CompositeExtract 116 3 - 135: 7(fvec4) CompositeConstruct 131 132 133 134 - 136: 6(float) ImageSampleDrefImplicitLod 130 135 28 - Store 123(r62) 136 - 141: 138 Load 140(g_tTexcdu4a) - 142: 18 Load 20(g_sSamp) - 144: 143 SampledImage 141 142 - 145: 6(float) CompositeExtract 116 0 - 146: 6(float) CompositeExtract 116 1 - 147: 6(float) CompositeExtract 116 2 - 148: 6(float) CompositeExtract 116 3 - 149: 7(fvec4) CompositeConstruct 145 146 147 148 - 150: 6(float) ImageSampleDrefImplicitLod 144 149 28 - Store 137(r64) 150 - 157: 156(ptr) AccessChain 152(psout) 153 - Store 157 155 - 159: 12(ptr) AccessChain 152(psout) 158 - Store 159 154 - 160:8(PS_OUTPUT) Load 152(psout) - ReturnValue 160 + 117: 6(float) ImageSampleDrefImplicitLod 114 116 28 + Store 107(r60) 117 + 122: 119 Load 121(g_tTexcdi4a) + 123: 18 Load 20(g_sSamp) + 125: 124 SampledImage 122 123 + 126: 6(float) ImageSampleDrefImplicitLod 125 116 28 + Store 118(r62) 126 + 131: 128 Load 130(g_tTexcdu4a) + 132: 18 Load 20(g_sSamp) + 134: 133 SampledImage 131 132 + 135: 6(float) ImageSampleDrefImplicitLod 134 116 28 + Store 127(r64) 135 + 142: 141(ptr) AccessChain 137(psout) 138 + Store 142 140 + 144: 12(ptr) AccessChain 137(psout) 143 + Store 144 139 + 145:8(PS_OUTPUT) Load 137(psout) + ReturnValue 145 FunctionEnd diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index 45e33ffadb..b9adf6fe5d 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -436,14 +436,14 @@ using depth_any Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 210 +// Id's are bound by 195 Capability Shader Capability Sampled1D Capability SampledCubeArray 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 167 171 + EntryPoint Fragment 4 "main" 152 156 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing Source HLSL 500 @@ -467,26 +467,26 @@ Validation failed Name 97 "g_tTex2du4a" Name 108 "r60" Name 111 "g_tTexcdf4a" - Name 124 "r62" - Name 127 "g_tTexcdi4a" - Name 138 "r64" - Name 141 "g_tTexcdu4a" - Name 153 "psout" - Name 164 "flattenTemp" - Name 167 "@entryPointOutput.Color" - Name 171 "@entryPointOutput.Depth" - Name 176 "g_tTex1df4" - Name 179 "g_tTex1di4" - Name 182 "g_tTex1du4" - Name 185 "g_tTex2df4" - Name 188 "g_tTex2di4" - Name 191 "g_tTex2du4" - Name 194 "g_tTex3df4" - Name 197 "g_tTex3di4" - Name 200 "g_tTex3du4" - Name 203 "g_tTexcdf4" - Name 206 "g_tTexcdi4" - Name 209 "g_tTexcdu4" + Name 119 "r62" + Name 122 "g_tTexcdi4a" + Name 128 "r64" + Name 131 "g_tTexcdu4a" + Name 138 "psout" + Name 149 "flattenTemp" + Name 152 "@entryPointOutput.Color" + Name 156 "@entryPointOutput.Depth" + Name 161 "g_tTex1df4" + Name 164 "g_tTex1di4" + Name 167 "g_tTex1du4" + Name 170 "g_tTex2df4" + Name 173 "g_tTex2di4" + Name 176 "g_tTex2du4" + Name 179 "g_tTex3df4" + Name 182 "g_tTex3di4" + Name 185 "g_tTex3du4" + Name 188 "g_tTexcdf4" + Name 191 "g_tTexcdi4" + Name 194 "g_tTexcdu4" Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 Decorate 20(g_sSamp) DescriptorSet 0 @@ -503,36 +503,36 @@ Validation failed Decorate 97(g_tTex2du4a) Binding 6 Decorate 111(g_tTexcdf4a) DescriptorSet 0 Decorate 111(g_tTexcdf4a) Binding 7 - Decorate 127(g_tTexcdi4a) DescriptorSet 0 - Decorate 127(g_tTexcdi4a) Binding 8 - Decorate 141(g_tTexcdu4a) DescriptorSet 0 - Decorate 141(g_tTexcdu4a) Binding 9 - Decorate 167(@entryPointOutput.Color) Location 0 - Decorate 171(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 176(g_tTex1df4) DescriptorSet 0 - Decorate 176(g_tTex1df4) Binding 0 - Decorate 179(g_tTex1di4) DescriptorSet 0 - Decorate 179(g_tTex1di4) Binding 0 - Decorate 182(g_tTex1du4) DescriptorSet 0 - Decorate 182(g_tTex1du4) Binding 0 - Decorate 185(g_tTex2df4) DescriptorSet 0 - Decorate 185(g_tTex2df4) Binding 0 - Decorate 188(g_tTex2di4) DescriptorSet 0 - Decorate 188(g_tTex2di4) Binding 0 - Decorate 191(g_tTex2du4) DescriptorSet 0 - Decorate 191(g_tTex2du4) Binding 0 - Decorate 194(g_tTex3df4) DescriptorSet 0 - Decorate 194(g_tTex3df4) Binding 0 - Decorate 197(g_tTex3di4) DescriptorSet 0 - Decorate 197(g_tTex3di4) Binding 0 - Decorate 200(g_tTex3du4) DescriptorSet 0 - Decorate 200(g_tTex3du4) Binding 0 - Decorate 203(g_tTexcdf4) DescriptorSet 0 - Decorate 203(g_tTexcdf4) Binding 0 - Decorate 206(g_tTexcdi4) DescriptorSet 0 - Decorate 206(g_tTexcdi4) Binding 0 - Decorate 209(g_tTexcdu4) DescriptorSet 0 - Decorate 209(g_tTexcdu4) Binding 0 + Decorate 122(g_tTexcdi4a) DescriptorSet 0 + Decorate 122(g_tTexcdi4a) Binding 8 + Decorate 131(g_tTexcdu4a) DescriptorSet 0 + Decorate 131(g_tTexcdu4a) Binding 9 + Decorate 152(@entryPointOutput.Color) Location 0 + Decorate 156(@entryPointOutput.Depth) BuiltIn FragDepth + Decorate 161(g_tTex1df4) DescriptorSet 0 + Decorate 161(g_tTex1df4) Binding 0 + Decorate 164(g_tTex1di4) DescriptorSet 0 + Decorate 164(g_tTex1di4) Binding 0 + Decorate 167(g_tTex1du4) DescriptorSet 0 + Decorate 167(g_tTex1du4) Binding 0 + Decorate 170(g_tTex2df4) DescriptorSet 0 + Decorate 170(g_tTex2df4) Binding 0 + Decorate 173(g_tTex2di4) DescriptorSet 0 + Decorate 173(g_tTex2di4) Binding 0 + Decorate 176(g_tTex2du4) DescriptorSet 0 + Decorate 176(g_tTex2du4) Binding 0 + Decorate 179(g_tTex3df4) DescriptorSet 0 + Decorate 179(g_tTex3df4) Binding 0 + Decorate 182(g_tTex3di4) DescriptorSet 0 + Decorate 182(g_tTex3di4) Binding 0 + Decorate 185(g_tTex3du4) DescriptorSet 0 + Decorate 185(g_tTex3du4) Binding 0 + Decorate 188(g_tTexcdf4) DescriptorSet 0 + Decorate 188(g_tTexcdf4) Binding 0 + Decorate 191(g_tTexcdi4) DescriptorSet 0 + Decorate 191(g_tTexcdi4) Binding 0 + Decorate 194(g_tTexcdu4) DescriptorSet 0 + Decorate 194(g_tTexcdu4) Binding 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -584,71 +584,71 @@ Validation failed 114: TypeSampledImage 109 116: 6(float) Constant 1053609165 117: 7(fvec4) ConstantComposite 25 26 72 116 - 125: TypeImage 37(int) Cube depth array sampled format:Unknown - 126: TypePointer UniformConstant 125 -127(g_tTexcdi4a): 126(ptr) Variable UniformConstant - 130: TypeSampledImage 125 - 139: TypeImage 51(int) Cube depth array sampled format:Unknown - 140: TypePointer UniformConstant 139 -141(g_tTexcdu4a): 140(ptr) Variable UniformConstant - 144: TypeSampledImage 139 - 152: TypePointer Function 8(PS_OUTPUT) - 154: 37(int) Constant 0 - 155: 6(float) Constant 1065353216 - 156: 7(fvec4) ConstantComposite 155 155 155 155 - 157: TypePointer Function 7(fvec4) - 159: 37(int) Constant 1 - 166: TypePointer Output 7(fvec4) -167(@entryPointOutput.Color): 166(ptr) Variable Output - 170: TypePointer Output 6(float) -171(@entryPointOutput.Depth): 170(ptr) Variable Output - 174: TypeImage 6(float) 1D sampled format:Unknown + 120: TypeImage 37(int) Cube depth array sampled format:Unknown + 121: TypePointer UniformConstant 120 +122(g_tTexcdi4a): 121(ptr) Variable UniformConstant + 125: TypeSampledImage 120 + 129: TypeImage 51(int) Cube depth array sampled format:Unknown + 130: TypePointer UniformConstant 129 +131(g_tTexcdu4a): 130(ptr) Variable UniformConstant + 134: TypeSampledImage 129 + 137: TypePointer Function 8(PS_OUTPUT) + 139: 37(int) Constant 0 + 140: 6(float) Constant 1065353216 + 141: 7(fvec4) ConstantComposite 140 140 140 140 + 142: TypePointer Function 7(fvec4) + 144: 37(int) Constant 1 + 151: TypePointer Output 7(fvec4) +152(@entryPointOutput.Color): 151(ptr) Variable Output + 155: TypePointer Output 6(float) +156(@entryPointOutput.Depth): 155(ptr) Variable Output + 159: TypeImage 6(float) 1D sampled format:Unknown + 160: TypePointer UniformConstant 159 + 161(g_tTex1df4): 160(ptr) Variable UniformConstant + 162: TypeImage 37(int) 1D sampled format:Unknown + 163: TypePointer UniformConstant 162 + 164(g_tTex1di4): 163(ptr) Variable UniformConstant + 165: TypeImage 51(int) 1D sampled format:Unknown + 166: TypePointer UniformConstant 165 + 167(g_tTex1du4): 166(ptr) Variable UniformConstant + 168: TypeImage 6(float) 2D sampled format:Unknown + 169: TypePointer UniformConstant 168 + 170(g_tTex2df4): 169(ptr) Variable UniformConstant + 171: TypeImage 37(int) 2D sampled format:Unknown + 172: TypePointer UniformConstant 171 + 173(g_tTex2di4): 172(ptr) Variable UniformConstant + 174: TypeImage 51(int) 2D sampled format:Unknown 175: TypePointer UniformConstant 174 - 176(g_tTex1df4): 175(ptr) Variable UniformConstant - 177: TypeImage 37(int) 1D sampled format:Unknown + 176(g_tTex2du4): 175(ptr) Variable UniformConstant + 177: TypeImage 6(float) 3D sampled format:Unknown 178: TypePointer UniformConstant 177 - 179(g_tTex1di4): 178(ptr) Variable UniformConstant - 180: TypeImage 51(int) 1D sampled format:Unknown + 179(g_tTex3df4): 178(ptr) Variable UniformConstant + 180: TypeImage 37(int) 3D sampled format:Unknown 181: TypePointer UniformConstant 180 - 182(g_tTex1du4): 181(ptr) Variable UniformConstant - 183: TypeImage 6(float) 2D sampled format:Unknown + 182(g_tTex3di4): 181(ptr) Variable UniformConstant + 183: TypeImage 51(int) 3D sampled format:Unknown 184: TypePointer UniformConstant 183 - 185(g_tTex2df4): 184(ptr) Variable UniformConstant - 186: TypeImage 37(int) 2D sampled format:Unknown + 185(g_tTex3du4): 184(ptr) Variable UniformConstant + 186: TypeImage 6(float) Cube sampled format:Unknown 187: TypePointer UniformConstant 186 - 188(g_tTex2di4): 187(ptr) Variable UniformConstant - 189: TypeImage 51(int) 2D sampled format:Unknown + 188(g_tTexcdf4): 187(ptr) Variable UniformConstant + 189: TypeImage 37(int) Cube sampled format:Unknown 190: TypePointer UniformConstant 189 - 191(g_tTex2du4): 190(ptr) Variable UniformConstant - 192: TypeImage 6(float) 3D sampled format:Unknown + 191(g_tTexcdi4): 190(ptr) Variable UniformConstant + 192: TypeImage 51(int) Cube sampled format:Unknown 193: TypePointer UniformConstant 192 - 194(g_tTex3df4): 193(ptr) Variable UniformConstant - 195: TypeImage 37(int) 3D sampled format:Unknown - 196: TypePointer UniformConstant 195 - 197(g_tTex3di4): 196(ptr) Variable UniformConstant - 198: TypeImage 51(int) 3D sampled format:Unknown - 199: TypePointer UniformConstant 198 - 200(g_tTex3du4): 199(ptr) Variable UniformConstant - 201: TypeImage 6(float) Cube sampled format:Unknown - 202: TypePointer UniformConstant 201 - 203(g_tTexcdf4): 202(ptr) Variable UniformConstant - 204: TypeImage 37(int) Cube sampled format:Unknown - 205: TypePointer UniformConstant 204 - 206(g_tTexcdi4): 205(ptr) Variable UniformConstant - 207: TypeImage 51(int) Cube sampled format:Unknown - 208: TypePointer UniformConstant 207 - 209(g_tTexcdu4): 208(ptr) Variable UniformConstant + 194(g_tTexcdu4): 193(ptr) Variable UniformConstant 4(main): 2 Function None 3 5: Label -164(flattenTemp): 152(ptr) Variable Function - 165:8(PS_OUTPUT) FunctionCall 10(@main() - Store 164(flattenTemp) 165 - 168: 157(ptr) AccessChain 164(flattenTemp) 154 - 169: 7(fvec4) Load 168 - Store 167(@entryPointOutput.Color) 169 - 172: 12(ptr) AccessChain 164(flattenTemp) 159 - 173: 6(float) Load 172 - Store 171(@entryPointOutput.Depth) 173 +149(flattenTemp): 137(ptr) Variable Function + 150:8(PS_OUTPUT) FunctionCall 10(@main() + Store 149(flattenTemp) 150 + 153: 142(ptr) AccessChain 149(flattenTemp) 139 + 154: 7(fvec4) Load 153 + Store 152(@entryPointOutput.Color) 154 + 157: 12(ptr) AccessChain 149(flattenTemp) 144 + 158: 6(float) Load 157 + Store 156(@entryPointOutput.Depth) 158 Return FunctionEnd 10(@main():8(PS_OUTPUT) Function None 9 @@ -660,9 +660,9 @@ Validation failed 80(r32): 12(ptr) Variable Function 94(r34): 12(ptr) Variable Function 108(r60): 12(ptr) Variable Function - 124(r62): 12(ptr) Variable Function - 138(r64): 12(ptr) Variable Function - 153(psout): 152(ptr) Variable Function + 119(r62): 12(ptr) Variable Function + 128(r64): 12(ptr) Variable Function + 138(psout): 137(ptr) Variable Function 17: 14 Load 16(g_tTex1df4a) 21: 18 Load 20(g_sSamp) 23: 22 SampledImage 17 21 @@ -723,37 +723,22 @@ Validation failed 112: 109 Load 111(g_tTexcdf4a) 113: 18 Load 20(g_sSamp) 115: 114 SampledImage 112 113 - 118: 6(float) CompositeExtract 117 0 - 119: 6(float) CompositeExtract 117 1 - 120: 6(float) CompositeExtract 117 2 - 121: 6(float) CompositeExtract 117 3 - 122: 7(fvec4) CompositeConstruct 118 119 120 121 - 123: 6(float) ImageSampleDrefExplicitLod 115 122 28 Lod 33 - Store 108(r60) 123 - 128: 125 Load 127(g_tTexcdi4a) - 129: 18 Load 20(g_sSamp) - 131: 130 SampledImage 128 129 - 132: 6(float) CompositeExtract 117 0 - 133: 6(float) CompositeExtract 117 1 - 134: 6(float) CompositeExtract 117 2 - 135: 6(float) CompositeExtract 117 3 - 136: 7(fvec4) CompositeConstruct 132 133 134 135 - 137: 6(float) ImageSampleDrefExplicitLod 131 136 28 Lod 33 - Store 124(r62) 137 - 142: 139 Load 141(g_tTexcdu4a) - 143: 18 Load 20(g_sSamp) - 145: 144 SampledImage 142 143 - 146: 6(float) CompositeExtract 117 0 - 147: 6(float) CompositeExtract 117 1 - 148: 6(float) CompositeExtract 117 2 - 149: 6(float) CompositeExtract 117 3 - 150: 7(fvec4) CompositeConstruct 146 147 148 149 - 151: 6(float) ImageSampleDrefExplicitLod 145 150 28 Lod 33 - Store 138(r64) 151 - 158: 157(ptr) AccessChain 153(psout) 154 - Store 158 156 - 160: 12(ptr) AccessChain 153(psout) 159 - Store 160 155 - 161:8(PS_OUTPUT) Load 153(psout) - ReturnValue 161 + 118: 6(float) ImageSampleDrefExplicitLod 115 117 28 Lod 33 + Store 108(r60) 118 + 123: 120 Load 122(g_tTexcdi4a) + 124: 18 Load 20(g_sSamp) + 126: 125 SampledImage 123 124 + 127: 6(float) ImageSampleDrefExplicitLod 126 117 28 Lod 33 + Store 119(r62) 127 + 132: 129 Load 131(g_tTexcdu4a) + 133: 18 Load 20(g_sSamp) + 135: 134 SampledImage 132 133 + 136: 6(float) ImageSampleDrefExplicitLod 135 117 28 Lod 33 + Store 128(r64) 136 + 143: 142(ptr) AccessChain 138(psout) 139 + Store 143 141 + 145: 12(ptr) AccessChain 138(psout) 144 + Store 145 140 + 146:8(PS_OUTPUT) Load 138(psout) + ReturnValue 146 FunctionEnd diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out index 143983cb23..bced9d3088 100644 --- a/Test/baseResults/spv.16bitstorage-int.frag.out +++ b/Test/baseResults/spv.16bitstorage-int.frag.out @@ -1,10 +1,9 @@ spv.16bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 187 +// Id's are bound by 180 Capability Shader - Capability Int16 Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" @@ -342,18 +341,11 @@ spv.16bitstorage-int.frag Store 173 172 174: 42(ptr) AccessChain 27(b1) 32 175: 7(i16vec2) Load 174 - 176: 6(int16_t) CompositeExtract 175 0 - 177: 6(int16_t) CompositeExtract 175 1 - 178: 7(i16vec2) CompositeConstruct 176 177 - 179: 42(ptr) AccessChain 19(b2) 32 + 176: 42(ptr) AccessChain 19(b2) 32 + Store 176 175 + 177: 34(ptr) AccessChain 27(b1) 33 + 178: 8(i16vec3) Load 177 + 179: 34(ptr) AccessChain 19(b2) 33 Store 179 178 - 180: 34(ptr) AccessChain 27(b1) 33 - 181: 8(i16vec3) Load 180 - 182: 6(int16_t) CompositeExtract 181 0 - 183: 6(int16_t) CompositeExtract 181 1 - 184: 6(int16_t) CompositeExtract 181 2 - 185: 8(i16vec3) CompositeConstruct 182 183 184 - 186: 34(ptr) AccessChain 19(b2) 33 - Store 186 185 Return FunctionEnd diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out index 4b30c2974c..adf5237b0f 100644 --- a/Test/baseResults/spv.16bitstorage-uint.frag.out +++ b/Test/baseResults/spv.16bitstorage-uint.frag.out @@ -1,10 +1,9 @@ spv.16bitstorage-uint.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 189 +// Id's are bound by 182 Capability Shader - Capability Int16 Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" @@ -344,18 +343,11 @@ spv.16bitstorage-uint.frag Store 175 174 176: 42(ptr) AccessChain 27(b1) 32 177: 7(i16vec2) Load 176 - 178: 6(int16_t) CompositeExtract 177 0 - 179: 6(int16_t) CompositeExtract 177 1 - 180: 7(i16vec2) CompositeConstruct 178 179 - 181: 42(ptr) AccessChain 19(b2) 32 + 178: 42(ptr) AccessChain 19(b2) 32 + Store 178 177 + 179: 34(ptr) AccessChain 27(b1) 33 + 180: 8(i16vec3) Load 179 + 181: 34(ptr) AccessChain 19(b2) 33 Store 181 180 - 182: 34(ptr) AccessChain 27(b1) 33 - 183: 8(i16vec3) Load 182 - 184: 6(int16_t) CompositeExtract 183 0 - 185: 6(int16_t) CompositeExtract 183 1 - 186: 6(int16_t) CompositeExtract 183 2 - 187: 8(i16vec3) CompositeConstruct 184 185 186 - 188: 34(ptr) AccessChain 19(b2) 33 - Store 188 187 Return FunctionEnd diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out index 7e186809c1..bb1b1642a4 100644 --- a/Test/baseResults/spv.16bitstorage.frag.out +++ b/Test/baseResults/spv.16bitstorage.frag.out @@ -1,10 +1,9 @@ spv.16bitstorage.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 189 +// Id's are bound by 182 Capability Shader - Capability Float16 Capability StorageUniformBufferBlock16 Capability StorageUniform16 Extension "SPV_KHR_16bit_storage" @@ -344,18 +343,11 @@ spv.16bitstorage.frag Store 175 174 176: 43(ptr) AccessChain 27(b1) 32 177: 7(f16vec2) Load 176 - 178:6(float16_t) CompositeExtract 177 0 - 179:6(float16_t) CompositeExtract 177 1 - 180: 7(f16vec2) CompositeConstruct 178 179 - 181: 43(ptr) AccessChain 19(b2) 32 + 178: 43(ptr) AccessChain 19(b2) 32 + Store 178 177 + 179: 34(ptr) AccessChain 27(b1) 33 + 180: 8(f16vec3) Load 179 + 181: 34(ptr) AccessChain 19(b2) 33 Store 181 180 - 182: 34(ptr) AccessChain 27(b1) 33 - 183: 8(f16vec3) Load 182 - 184:6(float16_t) CompositeExtract 183 0 - 185:6(float16_t) CompositeExtract 183 1 - 186:6(float16_t) CompositeExtract 183 2 - 187: 8(f16vec3) CompositeConstruct 184 185 186 - 188: 34(ptr) AccessChain 19(b2) 33 - Store 188 187 Return FunctionEnd diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out index da8fe267b5..25db1d86de 100644 --- a/Test/baseResults/spv.8bitstorage-int.frag.out +++ b/Test/baseResults/spv.8bitstorage-int.frag.out @@ -1,10 +1,9 @@ spv.8bitstorage-int.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 187 +// Id's are bound by 180 Capability Shader - Capability Int8 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" @@ -341,18 +340,11 @@ spv.8bitstorage-int.frag Store 173 172 174: 42(ptr) AccessChain 27(b1) 32 175: 7(i8vec2) Load 174 - 176: 6(int8_t) CompositeExtract 175 0 - 177: 6(int8_t) CompositeExtract 175 1 - 178: 7(i8vec2) CompositeConstruct 176 177 - 179: 42(ptr) AccessChain 19(b2) 32 + 176: 42(ptr) AccessChain 19(b2) 32 + Store 176 175 + 177: 34(ptr) AccessChain 27(b1) 33 + 178: 8(i8vec3) Load 177 + 179: 34(ptr) AccessChain 19(b2) 33 Store 179 178 - 180: 34(ptr) AccessChain 27(b1) 33 - 181: 8(i8vec3) Load 180 - 182: 6(int8_t) CompositeExtract 181 0 - 183: 6(int8_t) CompositeExtract 181 1 - 184: 6(int8_t) CompositeExtract 181 2 - 185: 8(i8vec3) CompositeConstruct 182 183 184 - 186: 34(ptr) AccessChain 19(b2) 33 - Store 186 185 Return FunctionEnd diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out index eb1ecca564..d89756b2fa 100644 --- a/Test/baseResults/spv.8bitstorage-uint.frag.out +++ b/Test/baseResults/spv.8bitstorage-uint.frag.out @@ -1,10 +1,9 @@ spv.8bitstorage-uint.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 189 +// Id's are bound by 182 Capability Shader - Capability Int8 Capability UniformAndStorageBuffer8BitAccess Extension "SPV_KHR_8bit_storage" 1: ExtInstImport "GLSL.std.450" @@ -343,18 +342,11 @@ spv.8bitstorage-uint.frag Store 175 174 176: 42(ptr) AccessChain 27(b1) 32 177: 7(i8vec2) Load 176 - 178: 6(int8_t) CompositeExtract 177 0 - 179: 6(int8_t) CompositeExtract 177 1 - 180: 7(i8vec2) CompositeConstruct 178 179 - 181: 42(ptr) AccessChain 19(b2) 32 + 178: 42(ptr) AccessChain 19(b2) 32 + Store 178 177 + 179: 34(ptr) AccessChain 27(b1) 33 + 180: 8(i8vec3) Load 179 + 181: 34(ptr) AccessChain 19(b2) 33 Store 181 180 - 182: 34(ptr) AccessChain 27(b1) 33 - 183: 8(i8vec3) Load 182 - 184: 6(int8_t) CompositeExtract 183 0 - 185: 6(int8_t) CompositeExtract 183 1 - 186: 6(int8_t) CompositeExtract 183 2 - 187: 8(i8vec3) CompositeConstruct 184 185 186 - 188: 34(ptr) AccessChain 19(b2) 33 - Store 188 187 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index c2023e593e..6c5e4da6b9 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -2,7 +2,7 @@ spv.debuginfo.glsl.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 881 +// Id's are bound by 877 Capability Shader Capability ImageQuery @@ -350,8 +350,8 @@ void main() Name 794 "R" Name 804 "NdotR" Name 814 "spec" - Name 865 "param" - Name 870 "param" + Name 861 "param" + Name 866 "param" Decorate 177(samplerShadowMap) DescriptorSet 0 Decorate 177(samplerShadowMap) Binding 5 MemberDecorate 405(Light) 0 Offset 0 @@ -624,10 +624,10 @@ void main() 821: 16(float) Constant 1098907648 826: 16(float) Constant 1075838976 831: 7(int) Constant 184 - 843: 96(int) Constant 2 - 860: 7(int) Constant 188 - 869: 7(int) Constant 190 - 876: 7(int) Constant 193 + 839: 96(int) Constant 2 + 856: 7(int) Constant 188 + 865: 7(int) Constant 190 + 872: 7(int) Constant 193 14(main): 4 Function None 5 15: Label 475(fragPos): 75(ptr) Variable Function @@ -653,8 +653,8 @@ void main() 794(R): 75(ptr) Variable Function 804(NdotR): 25(ptr) Variable Function 814(spec): 75(ptr) Variable Function - 865(param): 75(ptr) Variable Function - 870(param): 75(ptr) Variable Function + 861(param): 75(ptr) Variable Function + 866(param): 75(ptr) Variable Function 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 104 104 12 12 Store 101(global_var) 106 @@ -931,56 +931,52 @@ void main() 835: 73(fvec3) VectorTimesScalar 833 834 836: 16(float) Load 767(heightAttenuation) 837: 73(fvec3) VectorTimesScalar 835 836 - 838: 16(float) CompositeExtract 837 0 - 839: 16(float) CompositeExtract 837 1 - 840: 16(float) CompositeExtract 837 2 - 841: 73(fvec3) CompositeConstruct 838 839 840 - 842: 96(int) Load 654(i) - 844: 678(ptr) AccessChain 431(ubo) 290 842 843 - 845: 19(fvec4) Load 844 - 846: 73(fvec3) VectorShuffle 845 845 0 1 2 - 847: 73(fvec3) FMul 841 846 - 848: 19(fvec4) Load 512(albedo) - 849: 73(fvec3) VectorShuffle 848 848 0 1 2 - 850: 73(fvec3) FMul 847 849 - 851: 73(fvec3) Load 636(fragcolor) - 852: 73(fvec3) FAdd 851 850 - Store 636(fragcolor) 852 + 838: 96(int) Load 654(i) + 840: 678(ptr) AccessChain 431(ubo) 290 838 839 + 841: 19(fvec4) Load 840 + 842: 73(fvec3) VectorShuffle 841 841 0 1 2 + 843: 73(fvec3) FMul 837 842 + 844: 19(fvec4) Load 512(albedo) + 845: 73(fvec3) VectorShuffle 844 844 0 1 2 + 846: 73(fvec3) FMul 843 845 + 847: 73(fvec3) Load 636(fragcolor) + 848: 73(fvec3) FAdd 847 846 + Store 636(fragcolor) 848 Branch 662 662: Label - 854: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 - 855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 - 853: 96(int) Load 654(i) - 856: 96(int) IAdd 853 290 - Store 654(i) 856 + 850: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 851: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 + 849: 96(int) Load 654(i) + 852: 96(int) IAdd 849 290 + Store 654(i) 852 Branch 659 661: Label - 858: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 - 859: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 860 860 12 12 - 857: 524(ptr) AccessChain 431(ubo) 843 - 861: 96(int) Load 857 - 862: 139(bool) SGreaterThan 861 106 - SelectionMerge 864 None - BranchConditional 862 863 864 - 863: Label - 867: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 - 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 869 869 12 12 - 866: 73(fvec3) Load 636(fragcolor) - Store 865(param) 866 - 871: 73(fvec3) Load 475(fragPos) - Store 870(param) 871 - 872: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 865(param) 870(param) - Store 636(fragcolor) 872 - Branch 864 - 864: Label - 874: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 - 875: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 876 876 12 12 - 873: 73(fvec3) Load 636(fragcolor) - 877: 16(float) CompositeExtract 873 0 - 878: 16(float) CompositeExtract 873 1 - 879: 16(float) CompositeExtract 873 2 - 880: 19(fvec4) CompositeConstruct 877 878 879 115 - Store 546(outFragColor) 880 + 854: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 856 856 12 12 + 853: 524(ptr) AccessChain 431(ubo) 839 + 857: 96(int) Load 853 + 858: 139(bool) SGreaterThan 857 106 + SelectionMerge 860 None + BranchConditional 858 859 860 + 859: Label + 863: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 865 865 12 12 + 862: 73(fvec3) Load 636(fragcolor) + Store 861(param) 862 + 867: 73(fvec3) Load 475(fragPos) + Store 866(param) 867 + 868: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 861(param) 866(param) + Store 636(fragcolor) 868 + Branch 860 + 860: Label + 870: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 871: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 872 872 12 12 + 869: 73(fvec3) Load 636(fragcolor) + 873: 16(float) CompositeExtract 869 0 + 874: 16(float) CompositeExtract 869 1 + 875: 16(float) CompositeExtract 869 2 + 876: 19(fvec4) CompositeConstruct 873 874 875 115 + Store 546(outFragColor) 876 Return FunctionEnd 37(textureProj(vf4;f1;vf2;): 16(float) Function None 32 diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out index 65d3b1ff24..3b33460318 100644 --- a/Test/baseResults/spv.explicittypes.frag.out +++ b/Test/baseResults/spv.explicittypes.frag.out @@ -1,7 +1,7 @@ spv.explicittypes.frag // Module Version 10300 // Generated by (magic number): 8000b -// Id's are bound by 576 +// Id's are bound by 567 Capability Shader Capability Float16 @@ -80,63 +80,63 @@ spv.explicittypes.frag Name 399 "f64v" Name 406 "i8v" Name 412 "i16v" - Name 429 "u8v" - Name 435 "u16v" - Name 452 "f16v" - Name 465 "bv" - Name 481 "u64v" - Name 482 "i64v" - Name 485 "f64v" - Name 490 "i8v" - Name 496 "i16v" - Name 502 "i32v" - Name 510 "u8v" - Name 516 "u16v" - Name 522 "u32v" - Name 534 "f16v" - Name 537 "f32v" - Name 548 "bv" - Name 573 "Block" - MemberName 573(Block) 0 "i16" - MemberName 573(Block) 1 "i16v2" - MemberName 573(Block) 2 "i16v3" - MemberName 573(Block) 3 "i16v4" - MemberName 573(Block) 4 "u16" - MemberName 573(Block) 5 "u16v2" - MemberName 573(Block) 6 "u16v3" - MemberName 573(Block) 7 "u16v4" - MemberName 573(Block) 8 "i32" - MemberName 573(Block) 9 "i32v2" - MemberName 573(Block) 10 "i32v3" - MemberName 573(Block) 11 "i32v4" - MemberName 573(Block) 12 "u32" - MemberName 573(Block) 13 "u32v2" - MemberName 573(Block) 14 "u32v3" - MemberName 573(Block) 15 "u32v4" - Name 575 "block" + Name 426 "u8v" + Name 432 "u16v" + Name 446 "f16v" + Name 459 "bv" + Name 475 "u64v" + Name 476 "i64v" + Name 479 "f64v" + Name 484 "i8v" + Name 490 "i16v" + Name 496 "i32v" + Name 504 "u8v" + Name 510 "u16v" + Name 516 "u32v" + Name 525 "f16v" + Name 528 "f32v" + Name 539 "bv" + Name 564 "Block" + MemberName 564(Block) 0 "i16" + MemberName 564(Block) 1 "i16v2" + MemberName 564(Block) 2 "i16v3" + MemberName 564(Block) 3 "i16v4" + MemberName 564(Block) 4 "u16" + MemberName 564(Block) 5 "u16v2" + MemberName 564(Block) 6 "u16v3" + MemberName 564(Block) 7 "u16v4" + MemberName 564(Block) 8 "i32" + MemberName 564(Block) 9 "i32v2" + MemberName 564(Block) 10 "i32v3" + MemberName 564(Block) 11 "i32v4" + MemberName 564(Block) 12 "u32" + MemberName 564(Block) 13 "u32v2" + MemberName 564(Block) 14 "u32v3" + MemberName 564(Block) 15 "u32v4" + Name 566 "block" MemberDecorate 26(Uniforms) 0 Offset 0 Decorate 26(Uniforms) Block Decorate 28 DescriptorSet 0 Decorate 28 Binding 0 - MemberDecorate 573(Block) 0 Offset 0 - MemberDecorate 573(Block) 1 Offset 4 - MemberDecorate 573(Block) 2 Offset 8 - MemberDecorate 573(Block) 3 Offset 16 - MemberDecorate 573(Block) 4 Offset 24 - MemberDecorate 573(Block) 5 Offset 28 - MemberDecorate 573(Block) 6 Offset 32 - MemberDecorate 573(Block) 7 Offset 40 - MemberDecorate 573(Block) 8 Offset 48 - MemberDecorate 573(Block) 9 Offset 56 - MemberDecorate 573(Block) 10 Offset 64 - MemberDecorate 573(Block) 11 Offset 80 - MemberDecorate 573(Block) 12 Offset 96 - MemberDecorate 573(Block) 13 Offset 104 - MemberDecorate 573(Block) 14 Offset 112 - MemberDecorate 573(Block) 15 Offset 128 - Decorate 573(Block) Block - Decorate 575(block) DescriptorSet 0 - Decorate 575(block) Binding 1 + MemberDecorate 564(Block) 0 Offset 0 + MemberDecorate 564(Block) 1 Offset 4 + MemberDecorate 564(Block) 2 Offset 8 + MemberDecorate 564(Block) 3 Offset 16 + MemberDecorate 564(Block) 4 Offset 24 + MemberDecorate 564(Block) 5 Offset 28 + MemberDecorate 564(Block) 6 Offset 32 + MemberDecorate 564(Block) 7 Offset 40 + MemberDecorate 564(Block) 8 Offset 48 + MemberDecorate 564(Block) 9 Offset 56 + MemberDecorate 564(Block) 10 Offset 64 + MemberDecorate 564(Block) 11 Offset 80 + MemberDecorate 564(Block) 12 Offset 96 + MemberDecorate 564(Block) 13 Offset 104 + MemberDecorate 564(Block) 14 Offset 112 + MemberDecorate 564(Block) 15 Offset 128 + Decorate 564(Block) Block + Decorate 566(block) DescriptorSet 0 + Decorate 566(block) Binding 1 2: TypeVoid 3: TypeFunction 2 16: TypeInt 64 1 @@ -249,32 +249,32 @@ spv.explicittypes.frag 372: 91(int16_t) Constant 1 373:145(i16vec2) ConstantComposite 371 371 374:145(i16vec2) ConstantComposite 372 372 - 467: 29(int) Constant 1 - 468: 148(ivec2) ConstantComposite 30 30 - 469: 148(ivec2) ConstantComposite 467 467 - 472: 19(int) Constant 0 - 473: 19(int) Constant 1 - 474: 154(ivec2) ConstantComposite 472 472 - 475: 154(ivec2) ConstantComposite 473 473 - 550: 16(int64_t) Constant 0 0 - 551: 16(int64_t) Constant 1 0 - 552:162(i64vec2) ConstantComposite 550 550 - 553:162(i64vec2) ConstantComposite 551 551 - 556: 38(int64_t) Constant 0 0 - 557: 38(int64_t) Constant 1 0 - 558:167(i64vec2) ConstantComposite 556 556 - 559:167(i64vec2) ConstantComposite 557 557 - 565: TypeVector 77(int16_t) 3 - 566: TypeVector 77(int16_t) 4 - 567: TypeVector 91(int16_t) 3 - 568: TypeVector 91(int16_t) 4 - 569: TypeVector 29(int) 3 - 570: TypeVector 29(int) 4 - 571: TypeVector 19(int) 3 - 572: TypeVector 19(int) 4 - 573(Block): TypeStruct 77(int16_t) 139(i16vec2) 565(i16vec3) 566(i16vec4) 91(int16_t) 145(i16vec2) 567(i16vec3) 568(i16vec4) 29(int) 148(ivec2) 569(ivec3) 570(ivec4) 19(int) 154(ivec2) 571(ivec3) 572(ivec4) - 574: TypePointer Uniform 573(Block) - 575(block): 574(ptr) Variable Uniform + 461: 29(int) Constant 1 + 462: 148(ivec2) ConstantComposite 30 30 + 463: 148(ivec2) ConstantComposite 461 461 + 466: 19(int) Constant 0 + 467: 19(int) Constant 1 + 468: 154(ivec2) ConstantComposite 466 466 + 469: 154(ivec2) ConstantComposite 467 467 + 541: 16(int64_t) Constant 0 0 + 542: 16(int64_t) Constant 1 0 + 543:162(i64vec2) ConstantComposite 541 541 + 544:162(i64vec2) ConstantComposite 542 542 + 547: 38(int64_t) Constant 0 0 + 548: 38(int64_t) Constant 1 0 + 549:167(i64vec2) ConstantComposite 547 547 + 550:167(i64vec2) ConstantComposite 548 548 + 556: TypeVector 77(int16_t) 3 + 557: TypeVector 77(int16_t) 4 + 558: TypeVector 91(int16_t) 3 + 559: TypeVector 91(int16_t) 4 + 560: TypeVector 29(int) 3 + 561: TypeVector 29(int) 4 + 562: TypeVector 19(int) 3 + 563: TypeVector 19(int) 4 + 564(Block): TypeStruct 77(int16_t) 139(i16vec2) 556(i16vec3) 557(i16vec4) 91(int16_t) 145(i16vec2) 558(i16vec3) 559(i16vec4) 29(int) 148(ivec2) 560(ivec3) 561(ivec4) 19(int) 154(ivec2) 562(ivec3) 563(ivec4) + 565: TypePointer Uniform 564(Block) + 566(block): 565(ptr) Variable Uniform 4(main): 2 Function None 3 5: Label Return @@ -649,10 +649,10 @@ spv.explicittypes.frag 399(f64v): 194(ptr) Variable Function 406(i8v): 135(ptr) Variable Function 412(i16v): 140(ptr) Variable Function - 429(u8v): 132(ptr) Variable Function - 435(u16v): 221(ptr) Variable Function - 452(f16v): 182(ptr) Variable Function - 465(bv): 251(ptr) Variable Function + 426(u8v): 132(ptr) Variable Function + 432(u16v): 221(ptr) Variable Function + 446(f16v): 182(ptr) Variable Function + 459(bv): 251(ptr) Variable Function 382: 148(ivec2) Load 381(i32v) 383: 154(ivec2) Bitcast 382 Store 380(u32v) 383 @@ -697,186 +697,177 @@ spv.explicittypes.frag 417:139(i16vec2) Bitcast 416 Store 412(i16v) 417 418: 148(ivec2) Load 381(i32v) - 419: 29(int) CompositeExtract 418 0 - 420: 29(int) CompositeExtract 418 1 - 421: 148(ivec2) CompositeConstruct 419 420 - Store 381(i32v) 421 - 422: 154(ivec2) Load 380(u32v) - 423: 148(ivec2) Bitcast 422 - Store 381(i32v) 423 - 424: 148(ivec2) Load 381(i32v) - 425:162(i64vec2) SConvert 424 + Store 381(i32v) 418 + 419: 154(ivec2) Load 380(u32v) + 420: 148(ivec2) Bitcast 419 + Store 381(i32v) 420 + 421: 148(ivec2) Load 381(i32v) + 422:162(i64vec2) SConvert 421 + Store 384(i64v) 422 + 423: 154(ivec2) Load 380(u32v) + 424:167(i64vec2) UConvert 423 + 425:162(i64vec2) Bitcast 424 Store 384(i64v) 425 - 426: 154(ivec2) Load 380(u32v) - 427:167(i64vec2) UConvert 426 - 428:162(i64vec2) Bitcast 427 - Store 384(i64v) 428 - 430: 148(ivec2) Load 381(i32v) - 431: 134(i8vec2) SConvert 430 - 432: 131(i8vec2) Bitcast 431 - Store 429(u8v) 432 - 433: 154(ivec2) Load 380(u32v) - 434: 131(i8vec2) UConvert 433 - Store 429(u8v) 434 - 436: 148(ivec2) Load 381(i32v) - 437:139(i16vec2) SConvert 436 - 438:145(i16vec2) Bitcast 437 - Store 435(u16v) 438 - 439: 154(ivec2) Load 380(u32v) - 440:145(i16vec2) UConvert 439 - Store 435(u16v) 440 + 427: 148(ivec2) Load 381(i32v) + 428: 134(i8vec2) SConvert 427 + 429: 131(i8vec2) Bitcast 428 + Store 426(u8v) 429 + 430: 154(ivec2) Load 380(u32v) + 431: 131(i8vec2) UConvert 430 + Store 426(u8v) 431 + 433: 148(ivec2) Load 381(i32v) + 434:139(i16vec2) SConvert 433 + 435:145(i16vec2) Bitcast 434 + Store 432(u16v) 435 + 436: 154(ivec2) Load 380(u32v) + 437:145(i16vec2) UConvert 436 + Store 432(u16v) 437 + 438: 148(ivec2) Load 381(i32v) + 439: 154(ivec2) Bitcast 438 + Store 380(u32v) 439 + 440: 154(ivec2) Load 380(u32v) + Store 380(u32v) 440 441: 148(ivec2) Load 381(i32v) - 442: 154(ivec2) Bitcast 441 - Store 380(u32v) 442 - 443: 154(ivec2) Load 380(u32v) - 444: 19(int) CompositeExtract 443 0 - 445: 19(int) CompositeExtract 443 1 - 446: 154(ivec2) CompositeConstruct 444 445 - Store 380(u32v) 446 + 442:162(i64vec2) SConvert 441 + 443:167(i64vec2) Bitcast 442 + Store 387(u64v) 443 + 444: 154(ivec2) Load 380(u32v) + 445:167(i64vec2) UConvert 444 + Store 387(u64v) 445 447: 148(ivec2) Load 381(i32v) - 448:162(i64vec2) SConvert 447 - 449:167(i64vec2) Bitcast 448 - Store 387(u64v) 449 - 450: 154(ivec2) Load 380(u32v) - 451:167(i64vec2) UConvert 450 - Store 387(u64v) 451 - 453: 148(ivec2) Load 381(i32v) - 454:181(f16vec2) ConvertSToF 453 - Store 452(f16v) 454 - 455: 148(ivec2) Load 381(i32v) - 456: 187(fvec2) ConvertSToF 455 + 448:181(f16vec2) ConvertSToF 447 + Store 446(f16v) 448 + 449: 148(ivec2) Load 381(i32v) + 450: 187(fvec2) ConvertSToF 449 + Store 396(f32v) 450 + 451: 148(ivec2) Load 381(i32v) + 452:193(f64vec2) ConvertSToF 451 + Store 399(f64v) 452 + 453: 154(ivec2) Load 380(u32v) + 454:181(f16vec2) ConvertUToF 453 + Store 446(f16v) 454 + 455: 154(ivec2) Load 380(u32v) + 456: 187(fvec2) ConvertUToF 455 Store 396(f32v) 456 - 457: 148(ivec2) Load 381(i32v) - 458:193(f64vec2) ConvertSToF 457 + 457: 154(ivec2) Load 380(u32v) + 458:193(f64vec2) ConvertUToF 457 Store 399(f64v) 458 - 459: 154(ivec2) Load 380(u32v) - 460:181(f16vec2) ConvertUToF 459 - Store 452(f16v) 460 - 461: 154(ivec2) Load 380(u32v) - 462: 187(fvec2) ConvertUToF 461 - Store 396(f32v) 462 - 463: 154(ivec2) Load 380(u32v) - 464:193(f64vec2) ConvertUToF 463 - Store 399(f64v) 464 - 466: 250(bvec2) Load 465(bv) - 470: 148(ivec2) Select 466 469 468 - Store 381(i32v) 470 - 471: 250(bvec2) Load 465(bv) - 476: 154(ivec2) Select 471 475 474 - Store 380(u32v) 476 - 477: 148(ivec2) Load 381(i32v) - 478: 250(bvec2) INotEqual 477 474 - Store 465(bv) 478 - 479: 154(ivec2) Load 380(u32v) - 480: 250(bvec2) INotEqual 479 474 - Store 465(bv) 480 + 460: 250(bvec2) Load 459(bv) + 464: 148(ivec2) Select 460 463 462 + Store 381(i32v) 464 + 465: 250(bvec2) Load 459(bv) + 470: 154(ivec2) Select 465 469 468 + Store 380(u32v) 470 + 471: 148(ivec2) Load 381(i32v) + 472: 250(bvec2) INotEqual 471 468 + Store 459(bv) 472 + 473: 154(ivec2) Load 380(u32v) + 474: 250(bvec2) INotEqual 473 468 + Store 459(bv) 474 Return FunctionEnd 14(typeCast64(): 2 Function None 3 15: Label - 481(u64v): 168(ptr) Variable Function - 482(i64v): 163(ptr) Variable Function - 485(f64v): 194(ptr) Variable Function - 490(i8v): 135(ptr) Variable Function - 496(i16v): 140(ptr) Variable Function - 502(i32v): 149(ptr) Variable Function - 510(u8v): 132(ptr) Variable Function - 516(u16v): 221(ptr) Variable Function - 522(u32v): 157(ptr) Variable Function - 534(f16v): 182(ptr) Variable Function - 537(f32v): 188(ptr) Variable Function - 548(bv): 251(ptr) Variable Function - 483:162(i64vec2) Load 482(i64v) - 484:167(i64vec2) Bitcast 483 - Store 481(u64v) 484 - 486:162(i64vec2) Load 482(i64v) - 487:193(f64vec2) ConvertSToF 486 - Store 485(f64v) 487 - 488:167(i64vec2) Load 481(u64v) - 489:193(f64vec2) ConvertUToF 488 - Store 485(f64v) 489 - 491:162(i64vec2) Load 482(i64v) - 492: 134(i8vec2) SConvert 491 - Store 490(i8v) 492 - 493:167(i64vec2) Load 481(u64v) - 494: 131(i8vec2) UConvert 493 - 495: 134(i8vec2) Bitcast 494 - Store 490(i8v) 495 - 497:162(i64vec2) Load 482(i64v) - 498:139(i16vec2) SConvert 497 - Store 496(i16v) 498 - 499:167(i64vec2) Load 481(u64v) - 500:145(i16vec2) UConvert 499 - 501:139(i16vec2) Bitcast 500 - Store 496(i16v) 501 - 503:162(i64vec2) Load 482(i64v) - 504: 148(ivec2) SConvert 503 - Store 502(i32v) 504 - 505:167(i64vec2) Load 481(u64v) - 506: 154(ivec2) UConvert 505 - 507: 148(ivec2) Bitcast 506 - Store 502(i32v) 507 - 508:167(i64vec2) Load 481(u64v) - 509:162(i64vec2) Bitcast 508 - Store 482(i64v) 509 - 511:162(i64vec2) Load 482(i64v) - 512: 134(i8vec2) SConvert 511 - 513: 131(i8vec2) Bitcast 512 - Store 510(u8v) 513 - 514:167(i64vec2) Load 481(u64v) - 515: 131(i8vec2) UConvert 514 - Store 510(u8v) 515 - 517:162(i64vec2) Load 482(i64v) - 518:139(i16vec2) SConvert 517 - 519:145(i16vec2) Bitcast 518 - Store 516(u16v) 519 - 520:167(i64vec2) Load 481(u64v) - 521:145(i16vec2) UConvert 520 - Store 516(u16v) 521 - 523:162(i64vec2) Load 482(i64v) - 524: 148(ivec2) SConvert 523 - 525: 154(ivec2) Bitcast 524 - Store 522(u32v) 525 - 526:167(i64vec2) Load 481(u64v) - 527: 154(ivec2) UConvert 526 - Store 522(u32v) 527 - 528:162(i64vec2) Load 482(i64v) - 529:167(i64vec2) Bitcast 528 - Store 481(u64v) 529 - 530:167(i64vec2) Load 481(u64v) - 531: 38(int64_t) CompositeExtract 530 0 - 532: 38(int64_t) CompositeExtract 530 1 - 533:167(i64vec2) CompositeConstruct 531 532 - Store 481(u64v) 533 - 535:162(i64vec2) Load 482(i64v) - 536:181(f16vec2) ConvertSToF 535 - Store 534(f16v) 536 - 538:162(i64vec2) Load 482(i64v) - 539: 187(fvec2) ConvertSToF 538 - Store 537(f32v) 539 - 540:162(i64vec2) Load 482(i64v) - 541:193(f64vec2) ConvertSToF 540 - Store 485(f64v) 541 - 542:167(i64vec2) Load 481(u64v) - 543:181(f16vec2) ConvertUToF 542 - Store 534(f16v) 543 - 544:167(i64vec2) Load 481(u64v) - 545: 187(fvec2) ConvertUToF 544 - Store 537(f32v) 545 - 546:167(i64vec2) Load 481(u64v) - 547:193(f64vec2) ConvertUToF 546 - Store 485(f64v) 547 - 549: 250(bvec2) Load 548(bv) - 554:162(i64vec2) Select 549 553 552 - Store 482(i64v) 554 - 555: 250(bvec2) Load 548(bv) - 560:167(i64vec2) Select 555 559 558 - Store 481(u64v) 560 - 561:162(i64vec2) Load 482(i64v) - 562: 250(bvec2) INotEqual 561 558 - Store 548(bv) 562 - 563:167(i64vec2) Load 481(u64v) - 564: 250(bvec2) INotEqual 563 558 - Store 548(bv) 564 + 475(u64v): 168(ptr) Variable Function + 476(i64v): 163(ptr) Variable Function + 479(f64v): 194(ptr) Variable Function + 484(i8v): 135(ptr) Variable Function + 490(i16v): 140(ptr) Variable Function + 496(i32v): 149(ptr) Variable Function + 504(u8v): 132(ptr) Variable Function + 510(u16v): 221(ptr) Variable Function + 516(u32v): 157(ptr) Variable Function + 525(f16v): 182(ptr) Variable Function + 528(f32v): 188(ptr) Variable Function + 539(bv): 251(ptr) Variable Function + 477:162(i64vec2) Load 476(i64v) + 478:167(i64vec2) Bitcast 477 + Store 475(u64v) 478 + 480:162(i64vec2) Load 476(i64v) + 481:193(f64vec2) ConvertSToF 480 + Store 479(f64v) 481 + 482:167(i64vec2) Load 475(u64v) + 483:193(f64vec2) ConvertUToF 482 + Store 479(f64v) 483 + 485:162(i64vec2) Load 476(i64v) + 486: 134(i8vec2) SConvert 485 + Store 484(i8v) 486 + 487:167(i64vec2) Load 475(u64v) + 488: 131(i8vec2) UConvert 487 + 489: 134(i8vec2) Bitcast 488 + Store 484(i8v) 489 + 491:162(i64vec2) Load 476(i64v) + 492:139(i16vec2) SConvert 491 + Store 490(i16v) 492 + 493:167(i64vec2) Load 475(u64v) + 494:145(i16vec2) UConvert 493 + 495:139(i16vec2) Bitcast 494 + Store 490(i16v) 495 + 497:162(i64vec2) Load 476(i64v) + 498: 148(ivec2) SConvert 497 + Store 496(i32v) 498 + 499:167(i64vec2) Load 475(u64v) + 500: 154(ivec2) UConvert 499 + 501: 148(ivec2) Bitcast 500 + Store 496(i32v) 501 + 502:167(i64vec2) Load 475(u64v) + 503:162(i64vec2) Bitcast 502 + Store 476(i64v) 503 + 505:162(i64vec2) Load 476(i64v) + 506: 134(i8vec2) SConvert 505 + 507: 131(i8vec2) Bitcast 506 + Store 504(u8v) 507 + 508:167(i64vec2) Load 475(u64v) + 509: 131(i8vec2) UConvert 508 + Store 504(u8v) 509 + 511:162(i64vec2) Load 476(i64v) + 512:139(i16vec2) SConvert 511 + 513:145(i16vec2) Bitcast 512 + Store 510(u16v) 513 + 514:167(i64vec2) Load 475(u64v) + 515:145(i16vec2) UConvert 514 + Store 510(u16v) 515 + 517:162(i64vec2) Load 476(i64v) + 518: 148(ivec2) SConvert 517 + 519: 154(ivec2) Bitcast 518 + Store 516(u32v) 519 + 520:167(i64vec2) Load 475(u64v) + 521: 154(ivec2) UConvert 520 + Store 516(u32v) 521 + 522:162(i64vec2) Load 476(i64v) + 523:167(i64vec2) Bitcast 522 + Store 475(u64v) 523 + 524:167(i64vec2) Load 475(u64v) + Store 475(u64v) 524 + 526:162(i64vec2) Load 476(i64v) + 527:181(f16vec2) ConvertSToF 526 + Store 525(f16v) 527 + 529:162(i64vec2) Load 476(i64v) + 530: 187(fvec2) ConvertSToF 529 + Store 528(f32v) 530 + 531:162(i64vec2) Load 476(i64v) + 532:193(f64vec2) ConvertSToF 531 + Store 479(f64v) 532 + 533:167(i64vec2) Load 475(u64v) + 534:181(f16vec2) ConvertUToF 533 + Store 525(f16v) 534 + 535:167(i64vec2) Load 475(u64v) + 536: 187(fvec2) ConvertUToF 535 + Store 528(f32v) 536 + 537:167(i64vec2) Load 475(u64v) + 538:193(f64vec2) ConvertUToF 537 + Store 479(f64v) 538 + 540: 250(bvec2) Load 539(bv) + 545:162(i64vec2) Select 540 544 543 + Store 476(i64v) 545 + 546: 250(bvec2) Load 539(bv) + 551:167(i64vec2) Select 546 550 549 + Store 475(u64v) 551 + 552:162(i64vec2) Load 476(i64v) + 553: 250(bvec2) INotEqual 552 549 + Store 539(bv) 553 + 554:167(i64vec2) Load 475(u64v) + 555: 250(bvec2) INotEqual 554 549 + Store 539(bv) 555 Return FunctionEnd diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out index 2cce81550d..5c33e2ceb5 100644 --- a/Test/baseResults/spv.float16.frag.out +++ b/Test/baseResults/spv.float16.frag.out @@ -2,7 +2,7 @@ spv.float16.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 542 +// Id's are bound by 538 Capability Shader Capability Float16 @@ -17,7 +17,7 @@ Validation failed Extension "SPV_KHR_16bit_storage" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 465 + EntryPoint Fragment 4 "main" 461 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_gpu_shader_half_float" @@ -43,124 +43,124 @@ Validation failed Name 156 "bv" Name 167 "fv" Name 175 "dv" - Name 186 "iv" - Name 193 "uv" - Name 201 "i64v" - Name 209 "u64v" - Name 216 "f16v2" - Name 217 "f16v1" - Name 249 "f16v2" - Name 250 "f16v1" - Name 266 "f16v2" - Name 267 "f16v1" - Name 288 "f16" - Name 292 "f16v3" - Name 332 "bv" - Name 353 "b" - Name 363 "iv" - Name 364 "ResType" - Name 372 "u" - Name 373 "f16v" - Name 378 "f16" - Name 379 "f16v1" - Name 383 "f16v2" - Name 389 "f16v3" - Name 408 "f16m3" - Name 409 "f16m1" - Name 411 "f16m2" - Name 420 "f16v1" - Name 422 "f16v2" - Name 427 "f16m4" - Name 430 "f16" - Name 433 "f16m5" - Name 438 "f16m6" - Name 439 "f16m7" - Name 442 "bv" - Name 443 "f16v1" - Name 445 "f16v2" - Name 463 "f16v" - Name 465 "if16v" - Name 522 "S" - MemberName 522(S) 0 "x" - MemberName 522(S) 1 "y" - MemberName 522(S) 2 "z" - Name 524 "B1" - MemberName 524(B1) 0 "a" - MemberName 524(B1) 1 "b" - MemberName 524(B1) 2 "c" - MemberName 524(B1) 3 "d" - MemberName 524(B1) 4 "e" - MemberName 524(B1) 5 "f" - MemberName 524(B1) 6 "g" - MemberName 524(B1) 7 "h" - Name 526 "" - Name 529 "S" - MemberName 529(S) 0 "x" - MemberName 529(S) 1 "y" - MemberName 529(S) 2 "z" - Name 531 "B2" - MemberName 531(B2) 0 "o" - MemberName 531(B2) 1 "p" - MemberName 531(B2) 2 "q" - MemberName 531(B2) 3 "r" - MemberName 531(B2) 4 "s" - MemberName 531(B2) 5 "t" - MemberName 531(B2) 6 "u" - MemberName 531(B2) 7 "v" - Name 533 "" - Name 534 "sf16" - Name 535 "sf" - Name 536 "sd" - Name 537 "f16_to_f" - Name 539 "f16_to_d" - Name 540 "f_to_f16" - Name 541 "d_to_f16" - Decorate 465(if16v) Location 0 - Decorate 520 ArrayStride 16 - Decorate 521 ArrayStride 32 - MemberDecorate 522(S) 0 Offset 0 - MemberDecorate 522(S) 1 Offset 4 - MemberDecorate 522(S) 2 Offset 8 - Decorate 523 ArrayStride 16 - MemberDecorate 524(B1) 0 Offset 0 - MemberDecorate 524(B1) 1 Offset 4 - MemberDecorate 524(B1) 2 Offset 8 - MemberDecorate 524(B1) 3 Offset 16 - MemberDecorate 524(B1) 4 ColMajor - MemberDecorate 524(B1) 4 Offset 48 - MemberDecorate 524(B1) 4 MatrixStride 16 - MemberDecorate 524(B1) 5 ColMajor - MemberDecorate 524(B1) 5 Offset 80 - MemberDecorate 524(B1) 5 MatrixStride 16 - MemberDecorate 524(B1) 6 Offset 144 - MemberDecorate 524(B1) 7 Offset 160 - Decorate 524(B1) Block - Decorate 526 DescriptorSet 0 - Decorate 526 Binding 0 - Decorate 527 ArrayStride 2 - Decorate 528 ArrayStride 12 - MemberDecorate 529(S) 0 Offset 0 - MemberDecorate 529(S) 1 Offset 4 - MemberDecorate 529(S) 2 Offset 8 - Decorate 530 ArrayStride 16 - MemberDecorate 531(B2) 0 Offset 0 - MemberDecorate 531(B2) 1 Offset 4 - MemberDecorate 531(B2) 2 Offset 8 - MemberDecorate 531(B2) 3 Offset 14 - MemberDecorate 531(B2) 4 RowMajor - MemberDecorate 531(B2) 4 Offset 20 - MemberDecorate 531(B2) 4 MatrixStride 4 - MemberDecorate 531(B2) 5 RowMajor - MemberDecorate 531(B2) 5 Offset 32 - MemberDecorate 531(B2) 5 MatrixStride 4 - MemberDecorate 531(B2) 6 Offset 56 - MemberDecorate 531(B2) 7 Offset 72 - Decorate 531(B2) BufferBlock - Decorate 533 DescriptorSet 0 - Decorate 533 Binding 0 - Decorate 534(sf16) SpecId 100 - Decorate 535(sf) SpecId 101 - Decorate 536(sd) SpecId 102 + Name 182 "iv" + Name 189 "uv" + Name 197 "i64v" + Name 205 "u64v" + Name 212 "f16v2" + Name 213 "f16v1" + Name 245 "f16v2" + Name 246 "f16v1" + Name 262 "f16v2" + Name 263 "f16v1" + Name 284 "f16" + Name 288 "f16v3" + Name 328 "bv" + Name 349 "b" + Name 359 "iv" + Name 360 "ResType" + Name 368 "u" + Name 369 "f16v" + Name 374 "f16" + Name 375 "f16v1" + Name 379 "f16v2" + Name 385 "f16v3" + Name 404 "f16m3" + Name 405 "f16m1" + Name 407 "f16m2" + Name 416 "f16v1" + Name 418 "f16v2" + Name 423 "f16m4" + Name 426 "f16" + Name 429 "f16m5" + Name 434 "f16m6" + Name 435 "f16m7" + Name 438 "bv" + Name 439 "f16v1" + Name 441 "f16v2" + Name 459 "f16v" + Name 461 "if16v" + Name 518 "S" + MemberName 518(S) 0 "x" + MemberName 518(S) 1 "y" + MemberName 518(S) 2 "z" + Name 520 "B1" + MemberName 520(B1) 0 "a" + MemberName 520(B1) 1 "b" + MemberName 520(B1) 2 "c" + MemberName 520(B1) 3 "d" + MemberName 520(B1) 4 "e" + MemberName 520(B1) 5 "f" + MemberName 520(B1) 6 "g" + MemberName 520(B1) 7 "h" + Name 522 "" + Name 525 "S" + MemberName 525(S) 0 "x" + MemberName 525(S) 1 "y" + MemberName 525(S) 2 "z" + Name 527 "B2" + MemberName 527(B2) 0 "o" + MemberName 527(B2) 1 "p" + MemberName 527(B2) 2 "q" + MemberName 527(B2) 3 "r" + MemberName 527(B2) 4 "s" + MemberName 527(B2) 5 "t" + MemberName 527(B2) 6 "u" + MemberName 527(B2) 7 "v" + Name 529 "" + Name 530 "sf16" + Name 531 "sf" + Name 532 "sd" + Name 533 "f16_to_f" + Name 535 "f16_to_d" + Name 536 "f_to_f16" + Name 537 "d_to_f16" + Decorate 461(if16v) Location 0 + Decorate 516 ArrayStride 16 + Decorate 517 ArrayStride 32 + MemberDecorate 518(S) 0 Offset 0 + MemberDecorate 518(S) 1 Offset 4 + MemberDecorate 518(S) 2 Offset 8 + Decorate 519 ArrayStride 16 + MemberDecorate 520(B1) 0 Offset 0 + MemberDecorate 520(B1) 1 Offset 4 + MemberDecorate 520(B1) 2 Offset 8 + MemberDecorate 520(B1) 3 Offset 16 + MemberDecorate 520(B1) 4 ColMajor + MemberDecorate 520(B1) 4 Offset 48 + MemberDecorate 520(B1) 4 MatrixStride 16 + MemberDecorate 520(B1) 5 ColMajor + MemberDecorate 520(B1) 5 Offset 80 + MemberDecorate 520(B1) 5 MatrixStride 16 + MemberDecorate 520(B1) 6 Offset 144 + MemberDecorate 520(B1) 7 Offset 160 + Decorate 520(B1) Block + Decorate 522 DescriptorSet 0 + Decorate 522 Binding 0 + Decorate 523 ArrayStride 2 + Decorate 524 ArrayStride 12 + MemberDecorate 525(S) 0 Offset 0 + MemberDecorate 525(S) 1 Offset 4 + MemberDecorate 525(S) 2 Offset 8 + Decorate 526 ArrayStride 16 + MemberDecorate 527(B2) 0 Offset 0 + MemberDecorate 527(B2) 1 Offset 4 + MemberDecorate 527(B2) 2 Offset 8 + MemberDecorate 527(B2) 3 Offset 14 + MemberDecorate 527(B2) 4 RowMajor + MemberDecorate 527(B2) 4 Offset 20 + MemberDecorate 527(B2) 4 MatrixStride 4 + MemberDecorate 527(B2) 5 RowMajor + MemberDecorate 527(B2) 5 Offset 32 + MemberDecorate 527(B2) 5 MatrixStride 4 + MemberDecorate 527(B2) 6 Offset 56 + MemberDecorate 527(B2) 7 Offset 72 + Decorate 527(B2) BufferBlock + Decorate 529 DescriptorSet 0 + Decorate 529 Binding 0 + Decorate 530(sf16) SpecId 100 + Decorate 531(sf) SpecId 101 + Decorate 532(sd) SpecId 102 2: TypeVoid 3: TypeFunction 2 28: TypeFloat 16 @@ -192,58 +192,58 @@ Validation failed 172: TypeFloat 64 173: TypeVector 172(float64_t) 3 174: TypePointer Function 173(f64vec3) - 183: TypeInt 32 1 - 184: TypeVector 183(int) 3 - 185: TypePointer Function 184(ivec3) - 191: TypeVector 33(int) 3 - 192: TypePointer Function 191(ivec3) - 198: TypeInt 64 1 - 199: TypeVector 198(int64_t) 3 - 200: TypePointer Function 199(i64vec3) - 206: TypeInt 64 0 - 207: TypeVector 206(int64_t) 3 - 208: TypePointer Function 207(i64vec3) - 214: TypeVector 28(float16_t) 4 - 215: TypePointer Function 214(f16vec4) - 364(ResType): TypeStruct 151(f16vec3) 184(ivec3) - 371: TypePointer Function 33(int) - 406: TypeMatrix 151(f16vec3) 2 - 407: TypePointer Function 406 - 425: TypeMatrix 29(f16vec2) 3 - 426: TypePointer Function 425 - 431: TypeMatrix 151(f16vec3) 3 - 432: TypePointer Function 431 - 436: TypeMatrix 214(f16vec4) 4 - 437: TypePointer Function 436 - 464: TypePointer Input 151(f16vec3) - 465(if16v): 464(ptr) Variable Input - 466: TypePointer Input 28(float16_t) - 509: 183(int) Constant 1 - 516:28(float16_t) Constant 14336 - 517: 29(f16vec2) ConstantComposite 516 516 - 519: 33(int) Constant 2 - 520: TypeArray 28(float16_t) 519 - 521: TypeArray 406 519 - 522(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) - 523: TypeArray 522(S) 519 - 524(B1): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 520 406 521 522(S) 523 - 525: TypePointer Uniform 524(B1) - 526: 525(ptr) Variable Uniform - 527: TypeArray 28(float16_t) 519 - 528: TypeArray 406 519 - 529(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) - 530: TypeArray 529(S) 519 - 531(B2): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 527 406 528 529(S) 530 - 532: TypePointer Uniform 531(B2) - 533: 532(ptr) Variable Uniform - 534(sf16):28(float16_t) SpecConstant 12288 - 535(sf): 164(float) SpecConstant 1048576000 - 536(sd):172(float64_t) SpecConstant 0 1071644672 - 537(f16_to_f): 164(float) SpecConstantOp 115 534(sf16) - 538: 164(float) SpecConstantOp 115 534(sf16) - 539(f16_to_d):172(float64_t) SpecConstantOp 115 538 - 540(f_to_f16):28(float16_t) SpecConstantOp 115 535(sf) - 541(d_to_f16):28(float16_t) SpecConstantOp 115 536(sd) + 179: TypeInt 32 1 + 180: TypeVector 179(int) 3 + 181: TypePointer Function 180(ivec3) + 187: TypeVector 33(int) 3 + 188: TypePointer Function 187(ivec3) + 194: TypeInt 64 1 + 195: TypeVector 194(int64_t) 3 + 196: TypePointer Function 195(i64vec3) + 202: TypeInt 64 0 + 203: TypeVector 202(int64_t) 3 + 204: TypePointer Function 203(i64vec3) + 210: TypeVector 28(float16_t) 4 + 211: TypePointer Function 210(f16vec4) + 360(ResType): TypeStruct 151(f16vec3) 180(ivec3) + 367: TypePointer Function 33(int) + 402: TypeMatrix 151(f16vec3) 2 + 403: TypePointer Function 402 + 421: TypeMatrix 29(f16vec2) 3 + 422: TypePointer Function 421 + 427: TypeMatrix 151(f16vec3) 3 + 428: TypePointer Function 427 + 432: TypeMatrix 210(f16vec4) 4 + 433: TypePointer Function 432 + 460: TypePointer Input 151(f16vec3) + 461(if16v): 460(ptr) Variable Input + 462: TypePointer Input 28(float16_t) + 505: 179(int) Constant 1 + 512:28(float16_t) Constant 14336 + 513: 29(f16vec2) ConstantComposite 512 512 + 515: 33(int) Constant 2 + 516: TypeArray 28(float16_t) 515 + 517: TypeArray 402 515 + 518(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) + 519: TypeArray 518(S) 515 + 520(B1): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 516 402 517 518(S) 519 + 521: TypePointer Uniform 520(B1) + 522: 521(ptr) Variable Uniform + 523: TypeArray 28(float16_t) 515 + 524: TypeArray 402 515 + 525(S): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) + 526: TypeArray 525(S) 515 + 527(B2): TypeStruct 28(float16_t) 29(f16vec2) 151(f16vec3) 523 402 524 525(S) 526 + 528: TypePointer Uniform 527(B2) + 529: 528(ptr) Variable Uniform + 530(sf16):28(float16_t) SpecConstant 12288 + 531(sf): 164(float) SpecConstant 1048576000 + 532(sd):172(float64_t) SpecConstant 0 1071644672 + 533(f16_to_f): 164(float) SpecConstantOp 115 530(sf16) + 534: 164(float) SpecConstantOp 115 530(sf16) + 535(f16_to_d):172(float64_t) SpecConstantOp 115 534 + 536(f_to_f16):28(float16_t) SpecConstantOp 115 531(sf) + 537(d_to_f16):28(float16_t) SpecConstantOp 115 532(sd) 4(main): 2 Function None 3 5: Label Return @@ -396,10 +396,10 @@ Validation failed 156(bv): 155(ptr) Variable Function 167(fv): 166(ptr) Variable Function 175(dv): 174(ptr) Variable Function - 186(iv): 185(ptr) Variable Function - 193(uv): 192(ptr) Variable Function - 201(i64v): 200(ptr) Variable Function - 209(u64v): 208(ptr) Variable Function + 182(iv): 181(ptr) Variable Function + 189(uv): 188(ptr) Variable Function + 197(i64v): 196(ptr) Variable Function + 205(u64v): 204(ptr) Variable Function 157: 154(bvec3) Load 156(bv) 161:151(f16vec3) Select 157 160 159 Store 153(f16v) 161 @@ -416,442 +416,438 @@ Validation failed 177:151(f16vec3) FConvert 176 Store 153(f16v) 177 178:173(f64vec3) Load 175(dv) - 179:172(float64_t) CompositeExtract 178 0 - 180:172(float64_t) CompositeExtract 178 1 - 181:172(float64_t) CompositeExtract 178 2 - 182:173(f64vec3) CompositeConstruct 179 180 181 - Store 175(dv) 182 - 187: 184(ivec3) Load 186(iv) - 188:151(f16vec3) ConvertSToF 187 - Store 153(f16v) 188 - 189:151(f16vec3) Load 153(f16v) - 190: 184(ivec3) ConvertFToS 189 - Store 186(iv) 190 - 194: 191(ivec3) Load 193(uv) - 195:151(f16vec3) ConvertUToF 194 - Store 153(f16v) 195 - 196:151(f16vec3) Load 153(f16v) - 197: 191(ivec3) ConvertFToU 196 - Store 193(uv) 197 - 202:199(i64vec3) Load 201(i64v) - 203:151(f16vec3) ConvertSToF 202 - Store 153(f16v) 203 - 204:151(f16vec3) Load 153(f16v) - 205:199(i64vec3) ConvertFToS 204 - Store 201(i64v) 205 - 210:207(i64vec3) Load 209(u64v) - 211:151(f16vec3) ConvertUToF 210 - Store 153(f16v) 211 - 212:151(f16vec3) Load 153(f16v) - 213:207(i64vec3) ConvertFToU 212 - Store 209(u64v) 213 + Store 175(dv) 178 + 183: 180(ivec3) Load 182(iv) + 184:151(f16vec3) ConvertSToF 183 + Store 153(f16v) 184 + 185:151(f16vec3) Load 153(f16v) + 186: 180(ivec3) ConvertFToS 185 + Store 182(iv) 186 + 190: 187(ivec3) Load 189(uv) + 191:151(f16vec3) ConvertUToF 190 + Store 153(f16v) 191 + 192:151(f16vec3) Load 153(f16v) + 193: 187(ivec3) ConvertFToU 192 + Store 189(uv) 193 + 198:195(i64vec3) Load 197(i64v) + 199:151(f16vec3) ConvertSToF 198 + Store 153(f16v) 199 + 200:151(f16vec3) Load 153(f16v) + 201:195(i64vec3) ConvertFToS 200 + Store 197(i64v) 201 + 206:203(i64vec3) Load 205(u64v) + 207:151(f16vec3) ConvertUToF 206 + Store 153(f16v) 207 + 208:151(f16vec3) Load 153(f16v) + 209:203(i64vec3) ConvertFToU 208 + Store 205(u64v) 209 Return FunctionEnd 12(builtinAngleTrigFuncs(): 2 Function None 3 13: Label - 216(f16v2): 215(ptr) Variable Function - 217(f16v1): 215(ptr) Variable Function - 218:214(f16vec4) Load 217(f16v1) - 219:214(f16vec4) ExtInst 1(GLSL.std.450) 11(Radians) 218 - Store 216(f16v2) 219 - 220:214(f16vec4) Load 217(f16v1) - 221:214(f16vec4) ExtInst 1(GLSL.std.450) 12(Degrees) 220 - Store 216(f16v2) 221 - 222:214(f16vec4) Load 217(f16v1) - 223:214(f16vec4) ExtInst 1(GLSL.std.450) 13(Sin) 222 - Store 216(f16v2) 223 - 224:214(f16vec4) Load 217(f16v1) - 225:214(f16vec4) ExtInst 1(GLSL.std.450) 14(Cos) 224 - Store 216(f16v2) 225 - 226:214(f16vec4) Load 217(f16v1) - 227:214(f16vec4) ExtInst 1(GLSL.std.450) 15(Tan) 226 - Store 216(f16v2) 227 - 228:214(f16vec4) Load 217(f16v1) - 229:214(f16vec4) ExtInst 1(GLSL.std.450) 16(Asin) 228 - Store 216(f16v2) 229 - 230:214(f16vec4) Load 217(f16v1) - 231:214(f16vec4) ExtInst 1(GLSL.std.450) 17(Acos) 230 - Store 216(f16v2) 231 - 232:214(f16vec4) Load 217(f16v1) - 233:214(f16vec4) Load 216(f16v2) - 234:214(f16vec4) ExtInst 1(GLSL.std.450) 25(Atan2) 232 233 - Store 216(f16v2) 234 - 235:214(f16vec4) Load 217(f16v1) - 236:214(f16vec4) ExtInst 1(GLSL.std.450) 18(Atan) 235 - Store 216(f16v2) 236 - 237:214(f16vec4) Load 217(f16v1) - 238:214(f16vec4) ExtInst 1(GLSL.std.450) 19(Sinh) 237 - Store 216(f16v2) 238 - 239:214(f16vec4) Load 217(f16v1) - 240:214(f16vec4) ExtInst 1(GLSL.std.450) 20(Cosh) 239 - Store 216(f16v2) 240 - 241:214(f16vec4) Load 217(f16v1) - 242:214(f16vec4) ExtInst 1(GLSL.std.450) 21(Tanh) 241 - Store 216(f16v2) 242 - 243:214(f16vec4) Load 217(f16v1) - 244:214(f16vec4) ExtInst 1(GLSL.std.450) 22(Asinh) 243 - Store 216(f16v2) 244 - 245:214(f16vec4) Load 217(f16v1) - 246:214(f16vec4) ExtInst 1(GLSL.std.450) 23(Acosh) 245 - Store 216(f16v2) 246 - 247:214(f16vec4) Load 217(f16v1) - 248:214(f16vec4) ExtInst 1(GLSL.std.450) 24(Atanh) 247 - Store 216(f16v2) 248 + 212(f16v2): 211(ptr) Variable Function + 213(f16v1): 211(ptr) Variable Function + 214:210(f16vec4) Load 213(f16v1) + 215:210(f16vec4) ExtInst 1(GLSL.std.450) 11(Radians) 214 + Store 212(f16v2) 215 + 216:210(f16vec4) Load 213(f16v1) + 217:210(f16vec4) ExtInst 1(GLSL.std.450) 12(Degrees) 216 + Store 212(f16v2) 217 + 218:210(f16vec4) Load 213(f16v1) + 219:210(f16vec4) ExtInst 1(GLSL.std.450) 13(Sin) 218 + Store 212(f16v2) 219 + 220:210(f16vec4) Load 213(f16v1) + 221:210(f16vec4) ExtInst 1(GLSL.std.450) 14(Cos) 220 + Store 212(f16v2) 221 + 222:210(f16vec4) Load 213(f16v1) + 223:210(f16vec4) ExtInst 1(GLSL.std.450) 15(Tan) 222 + Store 212(f16v2) 223 + 224:210(f16vec4) Load 213(f16v1) + 225:210(f16vec4) ExtInst 1(GLSL.std.450) 16(Asin) 224 + Store 212(f16v2) 225 + 226:210(f16vec4) Load 213(f16v1) + 227:210(f16vec4) ExtInst 1(GLSL.std.450) 17(Acos) 226 + Store 212(f16v2) 227 + 228:210(f16vec4) Load 213(f16v1) + 229:210(f16vec4) Load 212(f16v2) + 230:210(f16vec4) ExtInst 1(GLSL.std.450) 25(Atan2) 228 229 + Store 212(f16v2) 230 + 231:210(f16vec4) Load 213(f16v1) + 232:210(f16vec4) ExtInst 1(GLSL.std.450) 18(Atan) 231 + Store 212(f16v2) 232 + 233:210(f16vec4) Load 213(f16v1) + 234:210(f16vec4) ExtInst 1(GLSL.std.450) 19(Sinh) 233 + Store 212(f16v2) 234 + 235:210(f16vec4) Load 213(f16v1) + 236:210(f16vec4) ExtInst 1(GLSL.std.450) 20(Cosh) 235 + Store 212(f16v2) 236 + 237:210(f16vec4) Load 213(f16v1) + 238:210(f16vec4) ExtInst 1(GLSL.std.450) 21(Tanh) 237 + Store 212(f16v2) 238 + 239:210(f16vec4) Load 213(f16v1) + 240:210(f16vec4) ExtInst 1(GLSL.std.450) 22(Asinh) 239 + Store 212(f16v2) 240 + 241:210(f16vec4) Load 213(f16v1) + 242:210(f16vec4) ExtInst 1(GLSL.std.450) 23(Acosh) 241 + Store 212(f16v2) 242 + 243:210(f16vec4) Load 213(f16v1) + 244:210(f16vec4) ExtInst 1(GLSL.std.450) 24(Atanh) 243 + Store 212(f16v2) 244 Return FunctionEnd 14(builtinExpFuncs(): 2 Function None 3 15: Label - 249(f16v2): 30(ptr) Variable Function - 250(f16v1): 30(ptr) Variable Function - 251: 29(f16vec2) Load 250(f16v1) - 252: 29(f16vec2) Load 249(f16v2) - 253: 29(f16vec2) ExtInst 1(GLSL.std.450) 26(Pow) 251 252 - Store 249(f16v2) 253 - 254: 29(f16vec2) Load 250(f16v1) - 255: 29(f16vec2) ExtInst 1(GLSL.std.450) 27(Exp) 254 - Store 249(f16v2) 255 - 256: 29(f16vec2) Load 250(f16v1) - 257: 29(f16vec2) ExtInst 1(GLSL.std.450) 28(Log) 256 - Store 249(f16v2) 257 - 258: 29(f16vec2) Load 250(f16v1) - 259: 29(f16vec2) ExtInst 1(GLSL.std.450) 29(Exp2) 258 - Store 249(f16v2) 259 - 260: 29(f16vec2) Load 250(f16v1) - 261: 29(f16vec2) ExtInst 1(GLSL.std.450) 30(Log2) 260 - Store 249(f16v2) 261 - 262: 29(f16vec2) Load 250(f16v1) - 263: 29(f16vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 262 - Store 249(f16v2) 263 - 264: 29(f16vec2) Load 250(f16v1) - 265: 29(f16vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 264 - Store 249(f16v2) 265 + 245(f16v2): 30(ptr) Variable Function + 246(f16v1): 30(ptr) Variable Function + 247: 29(f16vec2) Load 246(f16v1) + 248: 29(f16vec2) Load 245(f16v2) + 249: 29(f16vec2) ExtInst 1(GLSL.std.450) 26(Pow) 247 248 + Store 245(f16v2) 249 + 250: 29(f16vec2) Load 246(f16v1) + 251: 29(f16vec2) ExtInst 1(GLSL.std.450) 27(Exp) 250 + Store 245(f16v2) 251 + 252: 29(f16vec2) Load 246(f16v1) + 253: 29(f16vec2) ExtInst 1(GLSL.std.450) 28(Log) 252 + Store 245(f16v2) 253 + 254: 29(f16vec2) Load 246(f16v1) + 255: 29(f16vec2) ExtInst 1(GLSL.std.450) 29(Exp2) 254 + Store 245(f16v2) 255 + 256: 29(f16vec2) Load 246(f16v1) + 257: 29(f16vec2) ExtInst 1(GLSL.std.450) 30(Log2) 256 + Store 245(f16v2) 257 + 258: 29(f16vec2) Load 246(f16v1) + 259: 29(f16vec2) ExtInst 1(GLSL.std.450) 31(Sqrt) 258 + Store 245(f16v2) 259 + 260: 29(f16vec2) Load 246(f16v1) + 261: 29(f16vec2) ExtInst 1(GLSL.std.450) 32(InverseSqrt) 260 + Store 245(f16v2) 261 Return FunctionEnd 16(builtinCommonFuncs(): 2 Function None 3 17: Label - 266(f16v2): 152(ptr) Variable Function - 267(f16v1): 152(ptr) Variable Function - 288(f16): 35(ptr) Variable Function - 292(f16v3): 152(ptr) Variable Function - 332(bv): 155(ptr) Variable Function - 353(b): 110(ptr) Variable Function - 363(iv): 185(ptr) Variable Function - 268:151(f16vec3) Load 267(f16v1) - 269:151(f16vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 268 - Store 266(f16v2) 269 - 270:151(f16vec3) Load 267(f16v1) - 271:151(f16vec3) ExtInst 1(GLSL.std.450) 6(FSign) 270 - Store 266(f16v2) 271 - 272:151(f16vec3) Load 267(f16v1) - 273:151(f16vec3) ExtInst 1(GLSL.std.450) 8(Floor) 272 - Store 266(f16v2) 273 - 274:151(f16vec3) Load 267(f16v1) - 275:151(f16vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 274 - Store 266(f16v2) 275 - 276:151(f16vec3) Load 267(f16v1) - 277:151(f16vec3) ExtInst 1(GLSL.std.450) 1(Round) 276 - Store 266(f16v2) 277 - 278:151(f16vec3) Load 267(f16v1) - 279:151(f16vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 278 - Store 266(f16v2) 279 - 280:151(f16vec3) Load 267(f16v1) - 281:151(f16vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 280 - Store 266(f16v2) 281 - 282:151(f16vec3) Load 267(f16v1) - 283:151(f16vec3) ExtInst 1(GLSL.std.450) 10(Fract) 282 - Store 266(f16v2) 283 - 284:151(f16vec3) Load 267(f16v1) - 285:151(f16vec3) Load 266(f16v2) - 286:151(f16vec3) FMod 284 285 - Store 266(f16v2) 286 - 287:151(f16vec3) Load 267(f16v1) - 289:28(float16_t) Load 288(f16) - 290:151(f16vec3) CompositeConstruct 289 289 289 - 291:151(f16vec3) FMod 287 290 - Store 266(f16v2) 291 - 293:151(f16vec3) Load 267(f16v1) - 294:151(f16vec3) ExtInst 1(GLSL.std.450) 35(Modf) 293 266(f16v2) - Store 292(f16v3) 294 - 295:151(f16vec3) Load 267(f16v1) - 296:151(f16vec3) Load 266(f16v2) - 297:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 295 296 - Store 292(f16v3) 297 - 298:151(f16vec3) Load 267(f16v1) - 299:28(float16_t) Load 288(f16) - 300:151(f16vec3) CompositeConstruct 299 299 299 - 301:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 298 300 - Store 292(f16v3) 301 - 302:151(f16vec3) Load 267(f16v1) - 303:151(f16vec3) Load 266(f16v2) - 304:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 302 303 - Store 292(f16v3) 304 - 305:151(f16vec3) Load 267(f16v1) - 306:28(float16_t) Load 288(f16) - 307:151(f16vec3) CompositeConstruct 306 306 306 - 308:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 305 307 - Store 292(f16v3) 308 - 309:151(f16vec3) Load 267(f16v1) - 310:28(float16_t) Load 288(f16) - 311: 35(ptr) AccessChain 266(f16v2) 34 - 312:28(float16_t) Load 311 - 313:151(f16vec3) CompositeConstruct 310 310 310 - 314:151(f16vec3) CompositeConstruct 312 312 312 - 315:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 309 313 314 - Store 292(f16v3) 315 - 316:151(f16vec3) Load 267(f16v1) - 317:151(f16vec3) Load 266(f16v2) - 318:28(float16_t) Load 288(f16) - 319:151(f16vec3) CompositeConstruct 318 318 318 - 320:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 316 317 319 - Store 292(f16v3) 320 - 321:151(f16vec3) Load 267(f16v1) - 322:151(f16vec3) Load 266(f16v2) - 323:28(float16_t) Load 288(f16) - 324:151(f16vec3) CompositeConstruct 323 323 323 - 325:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 321 322 324 - Store 292(f16v3) 325 - 326:151(f16vec3) Load 267(f16v1) - 327:151(f16vec3) Load 266(f16v2) - 328:151(f16vec3) Load 292(f16v3) - 329:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 326 327 328 - Store 292(f16v3) 329 - 330:151(f16vec3) Load 267(f16v1) - 331:151(f16vec3) Load 266(f16v2) - 333: 154(bvec3) Load 332(bv) - 334:151(f16vec3) Select 333 331 330 - Store 292(f16v3) 334 - 335:151(f16vec3) Load 267(f16v1) - 336:151(f16vec3) Load 266(f16v2) - 337:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 335 336 - Store 292(f16v3) 337 - 338:28(float16_t) Load 288(f16) - 339:151(f16vec3) Load 292(f16v3) - 340:151(f16vec3) CompositeConstruct 338 338 338 - 341:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 340 339 - Store 292(f16v3) 341 - 342:151(f16vec3) Load 267(f16v1) - 343:151(f16vec3) Load 266(f16v2) - 344:151(f16vec3) Load 292(f16v3) - 345:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 342 343 344 - Store 292(f16v3) 345 - 346:28(float16_t) Load 288(f16) - 347: 35(ptr) AccessChain 267(f16v1) 34 - 348:28(float16_t) Load 347 - 349:151(f16vec3) Load 266(f16v2) - 350:151(f16vec3) CompositeConstruct 346 346 346 - 351:151(f16vec3) CompositeConstruct 348 348 348 - 352:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 350 351 349 - Store 292(f16v3) 352 - 354:28(float16_t) Load 288(f16) - 355: 109(bool) IsNan 354 - Store 353(b) 355 - 356:151(f16vec3) Load 267(f16v1) - 357: 154(bvec3) IsInf 356 - Store 332(bv) 357 - 358:151(f16vec3) Load 267(f16v1) - 359:151(f16vec3) Load 266(f16v2) - 360:151(f16vec3) Load 292(f16v3) - 361:151(f16vec3) ExtInst 1(GLSL.std.450) 50(Fma) 358 359 360 - Store 292(f16v3) 361 - 362:151(f16vec3) Load 267(f16v1) - 365:364(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 362 - 366: 184(ivec3) CompositeExtract 365 1 - Store 363(iv) 366 - 367:151(f16vec3) CompositeExtract 365 0 - Store 266(f16v2) 367 - 368:151(f16vec3) Load 267(f16v1) - 369: 184(ivec3) Load 363(iv) - 370:151(f16vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 368 369 - Store 266(f16v2) 370 + 262(f16v2): 152(ptr) Variable Function + 263(f16v1): 152(ptr) Variable Function + 284(f16): 35(ptr) Variable Function + 288(f16v3): 152(ptr) Variable Function + 328(bv): 155(ptr) Variable Function + 349(b): 110(ptr) Variable Function + 359(iv): 181(ptr) Variable Function + 264:151(f16vec3) Load 263(f16v1) + 265:151(f16vec3) ExtInst 1(GLSL.std.450) 4(FAbs) 264 + Store 262(f16v2) 265 + 266:151(f16vec3) Load 263(f16v1) + 267:151(f16vec3) ExtInst 1(GLSL.std.450) 6(FSign) 266 + Store 262(f16v2) 267 + 268:151(f16vec3) Load 263(f16v1) + 269:151(f16vec3) ExtInst 1(GLSL.std.450) 8(Floor) 268 + Store 262(f16v2) 269 + 270:151(f16vec3) Load 263(f16v1) + 271:151(f16vec3) ExtInst 1(GLSL.std.450) 3(Trunc) 270 + Store 262(f16v2) 271 + 272:151(f16vec3) Load 263(f16v1) + 273:151(f16vec3) ExtInst 1(GLSL.std.450) 1(Round) 272 + Store 262(f16v2) 273 + 274:151(f16vec3) Load 263(f16v1) + 275:151(f16vec3) ExtInst 1(GLSL.std.450) 2(RoundEven) 274 + Store 262(f16v2) 275 + 276:151(f16vec3) Load 263(f16v1) + 277:151(f16vec3) ExtInst 1(GLSL.std.450) 9(Ceil) 276 + Store 262(f16v2) 277 + 278:151(f16vec3) Load 263(f16v1) + 279:151(f16vec3) ExtInst 1(GLSL.std.450) 10(Fract) 278 + Store 262(f16v2) 279 + 280:151(f16vec3) Load 263(f16v1) + 281:151(f16vec3) Load 262(f16v2) + 282:151(f16vec3) FMod 280 281 + Store 262(f16v2) 282 + 283:151(f16vec3) Load 263(f16v1) + 285:28(float16_t) Load 284(f16) + 286:151(f16vec3) CompositeConstruct 285 285 285 + 287:151(f16vec3) FMod 283 286 + Store 262(f16v2) 287 + 289:151(f16vec3) Load 263(f16v1) + 290:151(f16vec3) ExtInst 1(GLSL.std.450) 35(Modf) 289 262(f16v2) + Store 288(f16v3) 290 + 291:151(f16vec3) Load 263(f16v1) + 292:151(f16vec3) Load 262(f16v2) + 293:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 291 292 + Store 288(f16v3) 293 + 294:151(f16vec3) Load 263(f16v1) + 295:28(float16_t) Load 284(f16) + 296:151(f16vec3) CompositeConstruct 295 295 295 + 297:151(f16vec3) ExtInst 1(GLSL.std.450) 37(FMin) 294 296 + Store 288(f16v3) 297 + 298:151(f16vec3) Load 263(f16v1) + 299:151(f16vec3) Load 262(f16v2) + 300:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 298 299 + Store 288(f16v3) 300 + 301:151(f16vec3) Load 263(f16v1) + 302:28(float16_t) Load 284(f16) + 303:151(f16vec3) CompositeConstruct 302 302 302 + 304:151(f16vec3) ExtInst 1(GLSL.std.450) 40(FMax) 301 303 + Store 288(f16v3) 304 + 305:151(f16vec3) Load 263(f16v1) + 306:28(float16_t) Load 284(f16) + 307: 35(ptr) AccessChain 262(f16v2) 34 + 308:28(float16_t) Load 307 + 309:151(f16vec3) CompositeConstruct 306 306 306 + 310:151(f16vec3) CompositeConstruct 308 308 308 + 311:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 305 309 310 + Store 288(f16v3) 311 + 312:151(f16vec3) Load 263(f16v1) + 313:151(f16vec3) Load 262(f16v2) + 314:28(float16_t) Load 284(f16) + 315:151(f16vec3) CompositeConstruct 314 314 314 + 316:151(f16vec3) ExtInst 1(GLSL.std.450) 43(FClamp) 312 313 315 + Store 288(f16v3) 316 + 317:151(f16vec3) Load 263(f16v1) + 318:151(f16vec3) Load 262(f16v2) + 319:28(float16_t) Load 284(f16) + 320:151(f16vec3) CompositeConstruct 319 319 319 + 321:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 317 318 320 + Store 288(f16v3) 321 + 322:151(f16vec3) Load 263(f16v1) + 323:151(f16vec3) Load 262(f16v2) + 324:151(f16vec3) Load 288(f16v3) + 325:151(f16vec3) ExtInst 1(GLSL.std.450) 46(FMix) 322 323 324 + Store 288(f16v3) 325 + 326:151(f16vec3) Load 263(f16v1) + 327:151(f16vec3) Load 262(f16v2) + 329: 154(bvec3) Load 328(bv) + 330:151(f16vec3) Select 329 327 326 + Store 288(f16v3) 330 + 331:151(f16vec3) Load 263(f16v1) + 332:151(f16vec3) Load 262(f16v2) + 333:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 331 332 + Store 288(f16v3) 333 + 334:28(float16_t) Load 284(f16) + 335:151(f16vec3) Load 288(f16v3) + 336:151(f16vec3) CompositeConstruct 334 334 334 + 337:151(f16vec3) ExtInst 1(GLSL.std.450) 48(Step) 336 335 + Store 288(f16v3) 337 + 338:151(f16vec3) Load 263(f16v1) + 339:151(f16vec3) Load 262(f16v2) + 340:151(f16vec3) Load 288(f16v3) + 341:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 338 339 340 + Store 288(f16v3) 341 + 342:28(float16_t) Load 284(f16) + 343: 35(ptr) AccessChain 263(f16v1) 34 + 344:28(float16_t) Load 343 + 345:151(f16vec3) Load 262(f16v2) + 346:151(f16vec3) CompositeConstruct 342 342 342 + 347:151(f16vec3) CompositeConstruct 344 344 344 + 348:151(f16vec3) ExtInst 1(GLSL.std.450) 49(SmoothStep) 346 347 345 + Store 288(f16v3) 348 + 350:28(float16_t) Load 284(f16) + 351: 109(bool) IsNan 350 + Store 349(b) 351 + 352:151(f16vec3) Load 263(f16v1) + 353: 154(bvec3) IsInf 352 + Store 328(bv) 353 + 354:151(f16vec3) Load 263(f16v1) + 355:151(f16vec3) Load 262(f16v2) + 356:151(f16vec3) Load 288(f16v3) + 357:151(f16vec3) ExtInst 1(GLSL.std.450) 50(Fma) 354 355 356 + Store 288(f16v3) 357 + 358:151(f16vec3) Load 263(f16v1) + 361:360(ResType) ExtInst 1(GLSL.std.450) 52(FrexpStruct) 358 + 362: 180(ivec3) CompositeExtract 361 1 + Store 359(iv) 362 + 363:151(f16vec3) CompositeExtract 361 0 + Store 262(f16v2) 363 + 364:151(f16vec3) Load 263(f16v1) + 365: 180(ivec3) Load 359(iv) + 366:151(f16vec3) ExtInst 1(GLSL.std.450) 53(Ldexp) 364 365 + Store 262(f16v2) 366 Return FunctionEnd 18(builtinPackUnpackFuncs(): 2 Function None 3 19: Label - 372(u): 371(ptr) Variable Function - 373(f16v): 30(ptr) Variable Function - 374: 29(f16vec2) Load 373(f16v) - 375: 33(int) Bitcast 374 - Store 372(u) 375 - 376: 33(int) Load 372(u) - 377: 29(f16vec2) Bitcast 376 - Store 373(f16v) 377 + 368(u): 367(ptr) Variable Function + 369(f16v): 30(ptr) Variable Function + 370: 29(f16vec2) Load 369(f16v) + 371: 33(int) Bitcast 370 + Store 368(u) 371 + 372: 33(int) Load 368(u) + 373: 29(f16vec2) Bitcast 372 + Store 369(f16v) 373 Return FunctionEnd 20(builtinGeometryFuncs(): 2 Function None 3 21: Label - 378(f16): 35(ptr) Variable Function - 379(f16v1): 152(ptr) Variable Function - 383(f16v2): 152(ptr) Variable Function - 389(f16v3): 152(ptr) Variable Function - 380:151(f16vec3) Load 379(f16v1) - 381:28(float16_t) ExtInst 1(GLSL.std.450) 66(Length) 380 - Store 378(f16) 381 - 382:151(f16vec3) Load 379(f16v1) - 384:151(f16vec3) Load 383(f16v2) - 385:28(float16_t) ExtInst 1(GLSL.std.450) 67(Distance) 382 384 - Store 378(f16) 385 - 386:151(f16vec3) Load 379(f16v1) - 387:151(f16vec3) Load 383(f16v2) - 388:28(float16_t) Dot 386 387 - Store 378(f16) 388 - 390:151(f16vec3) Load 379(f16v1) - 391:151(f16vec3) Load 383(f16v2) - 392:151(f16vec3) ExtInst 1(GLSL.std.450) 68(Cross) 390 391 - Store 389(f16v3) 392 - 393:151(f16vec3) Load 379(f16v1) - 394:151(f16vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 393 - Store 383(f16v2) 394 - 395:151(f16vec3) Load 379(f16v1) - 396:151(f16vec3) Load 383(f16v2) - 397:151(f16vec3) Load 389(f16v3) - 398:151(f16vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 395 396 397 - Store 389(f16v3) 398 - 399:151(f16vec3) Load 379(f16v1) - 400:151(f16vec3) Load 383(f16v2) - 401:151(f16vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 399 400 - Store 389(f16v3) 401 - 402:151(f16vec3) Load 379(f16v1) - 403:151(f16vec3) Load 383(f16v2) - 404:28(float16_t) Load 378(f16) - 405:151(f16vec3) ExtInst 1(GLSL.std.450) 72(Refract) 402 403 404 - Store 389(f16v3) 405 + 374(f16): 35(ptr) Variable Function + 375(f16v1): 152(ptr) Variable Function + 379(f16v2): 152(ptr) Variable Function + 385(f16v3): 152(ptr) Variable Function + 376:151(f16vec3) Load 375(f16v1) + 377:28(float16_t) ExtInst 1(GLSL.std.450) 66(Length) 376 + Store 374(f16) 377 + 378:151(f16vec3) Load 375(f16v1) + 380:151(f16vec3) Load 379(f16v2) + 381:28(float16_t) ExtInst 1(GLSL.std.450) 67(Distance) 378 380 + Store 374(f16) 381 + 382:151(f16vec3) Load 375(f16v1) + 383:151(f16vec3) Load 379(f16v2) + 384:28(float16_t) Dot 382 383 + Store 374(f16) 384 + 386:151(f16vec3) Load 375(f16v1) + 387:151(f16vec3) Load 379(f16v2) + 388:151(f16vec3) ExtInst 1(GLSL.std.450) 68(Cross) 386 387 + Store 385(f16v3) 388 + 389:151(f16vec3) Load 375(f16v1) + 390:151(f16vec3) ExtInst 1(GLSL.std.450) 69(Normalize) 389 + Store 379(f16v2) 390 + 391:151(f16vec3) Load 375(f16v1) + 392:151(f16vec3) Load 379(f16v2) + 393:151(f16vec3) Load 385(f16v3) + 394:151(f16vec3) ExtInst 1(GLSL.std.450) 70(FaceForward) 391 392 393 + Store 385(f16v3) 394 + 395:151(f16vec3) Load 375(f16v1) + 396:151(f16vec3) Load 379(f16v2) + 397:151(f16vec3) ExtInst 1(GLSL.std.450) 71(Reflect) 395 396 + Store 385(f16v3) 397 + 398:151(f16vec3) Load 375(f16v1) + 399:151(f16vec3) Load 379(f16v2) + 400:28(float16_t) Load 374(f16) + 401:151(f16vec3) ExtInst 1(GLSL.std.450) 72(Refract) 398 399 400 + Store 385(f16v3) 401 Return FunctionEnd 22(builtinMatrixFuncs(): 2 Function None 3 23: Label - 408(f16m3): 407(ptr) Variable Function - 409(f16m1): 407(ptr) Variable Function - 411(f16m2): 407(ptr) Variable Function - 420(f16v1): 152(ptr) Variable Function - 422(f16v2): 30(ptr) Variable Function - 427(f16m4): 426(ptr) Variable Function - 430(f16): 35(ptr) Variable Function - 433(f16m5): 432(ptr) Variable Function - 438(f16m6): 437(ptr) Variable Function - 439(f16m7): 437(ptr) Variable Function - 410: 406 Load 409(f16m1) - 412: 406 Load 411(f16m2) - 413:151(f16vec3) CompositeExtract 410 0 - 414:151(f16vec3) CompositeExtract 412 0 - 415:151(f16vec3) FMul 413 414 - 416:151(f16vec3) CompositeExtract 410 1 - 417:151(f16vec3) CompositeExtract 412 1 - 418:151(f16vec3) FMul 416 417 - 419: 406 CompositeConstruct 415 418 - Store 408(f16m3) 419 - 421:151(f16vec3) Load 420(f16v1) - 423: 29(f16vec2) Load 422(f16v2) - 424: 406 OuterProduct 421 423 - Store 409(f16m1) 424 - 428: 406 Load 409(f16m1) - 429: 425 Transpose 428 - Store 427(f16m4) 429 - 434: 431 Load 433(f16m5) - 435:28(float16_t) ExtInst 1(GLSL.std.450) 33(Determinant) 434 - Store 430(f16) 435 - 440: 436 Load 439(f16m7) - 441: 436 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 440 - Store 438(f16m6) 441 + 404(f16m3): 403(ptr) Variable Function + 405(f16m1): 403(ptr) Variable Function + 407(f16m2): 403(ptr) Variable Function + 416(f16v1): 152(ptr) Variable Function + 418(f16v2): 30(ptr) Variable Function + 423(f16m4): 422(ptr) Variable Function + 426(f16): 35(ptr) Variable Function + 429(f16m5): 428(ptr) Variable Function + 434(f16m6): 433(ptr) Variable Function + 435(f16m7): 433(ptr) Variable Function + 406: 402 Load 405(f16m1) + 408: 402 Load 407(f16m2) + 409:151(f16vec3) CompositeExtract 406 0 + 410:151(f16vec3) CompositeExtract 408 0 + 411:151(f16vec3) FMul 409 410 + 412:151(f16vec3) CompositeExtract 406 1 + 413:151(f16vec3) CompositeExtract 408 1 + 414:151(f16vec3) FMul 412 413 + 415: 402 CompositeConstruct 411 414 + Store 404(f16m3) 415 + 417:151(f16vec3) Load 416(f16v1) + 419: 29(f16vec2) Load 418(f16v2) + 420: 402 OuterProduct 417 419 + Store 405(f16m1) 420 + 424: 402 Load 405(f16m1) + 425: 421 Transpose 424 + Store 423(f16m4) 425 + 430: 427 Load 429(f16m5) + 431:28(float16_t) ExtInst 1(GLSL.std.450) 33(Determinant) 430 + Store 426(f16) 431 + 436: 432 Load 435(f16m7) + 437: 432 ExtInst 1(GLSL.std.450) 34(MatrixInverse) 436 + Store 434(f16m6) 437 Return FunctionEnd 24(builtinVecRelFuncs(): 2 Function None 3 25: Label - 442(bv): 155(ptr) Variable Function - 443(f16v1): 152(ptr) Variable Function - 445(f16v2): 152(ptr) Variable Function - 444:151(f16vec3) Load 443(f16v1) - 446:151(f16vec3) Load 445(f16v2) - 447: 154(bvec3) FOrdLessThan 444 446 - Store 442(bv) 447 - 448:151(f16vec3) Load 443(f16v1) - 449:151(f16vec3) Load 445(f16v2) - 450: 154(bvec3) FOrdLessThanEqual 448 449 - Store 442(bv) 450 - 451:151(f16vec3) Load 443(f16v1) - 452:151(f16vec3) Load 445(f16v2) - 453: 154(bvec3) FOrdGreaterThan 451 452 - Store 442(bv) 453 - 454:151(f16vec3) Load 443(f16v1) - 455:151(f16vec3) Load 445(f16v2) - 456: 154(bvec3) FOrdGreaterThanEqual 454 455 - Store 442(bv) 456 - 457:151(f16vec3) Load 443(f16v1) - 458:151(f16vec3) Load 445(f16v2) - 459: 154(bvec3) FOrdEqual 457 458 - Store 442(bv) 459 - 460:151(f16vec3) Load 443(f16v1) - 461:151(f16vec3) Load 445(f16v2) - 462: 154(bvec3) FUnordNotEqual 460 461 - Store 442(bv) 462 + 438(bv): 155(ptr) Variable Function + 439(f16v1): 152(ptr) Variable Function + 441(f16v2): 152(ptr) Variable Function + 440:151(f16vec3) Load 439(f16v1) + 442:151(f16vec3) Load 441(f16v2) + 443: 154(bvec3) FOrdLessThan 440 442 + Store 438(bv) 443 + 444:151(f16vec3) Load 439(f16v1) + 445:151(f16vec3) Load 441(f16v2) + 446: 154(bvec3) FOrdLessThanEqual 444 445 + Store 438(bv) 446 + 447:151(f16vec3) Load 439(f16v1) + 448:151(f16vec3) Load 441(f16v2) + 449: 154(bvec3) FOrdGreaterThan 447 448 + Store 438(bv) 449 + 450:151(f16vec3) Load 439(f16v1) + 451:151(f16vec3) Load 441(f16v2) + 452: 154(bvec3) FOrdGreaterThanEqual 450 451 + Store 438(bv) 452 + 453:151(f16vec3) Load 439(f16v1) + 454:151(f16vec3) Load 441(f16v2) + 455: 154(bvec3) FOrdEqual 453 454 + Store 438(bv) 455 + 456:151(f16vec3) Load 439(f16v1) + 457:151(f16vec3) Load 441(f16v2) + 458: 154(bvec3) FUnordNotEqual 456 457 + Store 438(bv) 458 Return FunctionEnd 26(builtinFragProcFuncs(): 2 Function None 3 27: Label - 463(f16v): 152(ptr) Variable Function - 467: 466(ptr) AccessChain 465(if16v) 34 + 459(f16v): 152(ptr) Variable Function + 463: 462(ptr) AccessChain 461(if16v) 34 + 464:28(float16_t) Load 463 + 465:28(float16_t) DPdx 464 + 466: 35(ptr) AccessChain 459(f16v) 34 + Store 466 465 + 467: 462(ptr) AccessChain 461(if16v) 90 468:28(float16_t) Load 467 - 469:28(float16_t) DPdx 468 - 470: 35(ptr) AccessChain 463(f16v) 34 + 469:28(float16_t) DPdy 468 + 470: 35(ptr) AccessChain 459(f16v) 90 Store 470 469 - 471: 466(ptr) AccessChain 465(if16v) 90 - 472:28(float16_t) Load 471 - 473:28(float16_t) DPdy 472 - 474: 35(ptr) AccessChain 463(f16v) 90 - Store 474 473 - 475:151(f16vec3) Load 465(if16v) - 476: 29(f16vec2) VectorShuffle 475 475 0 1 - 477: 29(f16vec2) DPdxFine 476 - 478: 35(ptr) AccessChain 463(f16v) 34 - 479:28(float16_t) CompositeExtract 477 0 - Store 478 479 - 480: 35(ptr) AccessChain 463(f16v) 90 - 481:28(float16_t) CompositeExtract 477 1 - Store 480 481 - 482:151(f16vec3) Load 465(if16v) - 483: 29(f16vec2) VectorShuffle 482 482 0 1 - 484: 29(f16vec2) DPdyFine 483 - 485: 35(ptr) AccessChain 463(f16v) 34 - 486:28(float16_t) CompositeExtract 484 0 - Store 485 486 - 487: 35(ptr) AccessChain 463(f16v) 90 - 488:28(float16_t) CompositeExtract 484 1 - Store 487 488 - 489:151(f16vec3) Load 465(if16v) - 490:151(f16vec3) DPdxCoarse 489 - Store 463(f16v) 490 - 491:151(f16vec3) Load 465(if16v) - 492:151(f16vec3) DPdxCoarse 491 - Store 463(f16v) 492 - 493: 466(ptr) AccessChain 465(if16v) 34 - 494:28(float16_t) Load 493 - 495:28(float16_t) Fwidth 494 - 496: 35(ptr) AccessChain 463(f16v) 34 - Store 496 495 - 497:151(f16vec3) Load 465(if16v) - 498: 29(f16vec2) VectorShuffle 497 497 0 1 - 499: 29(f16vec2) FwidthFine 498 - 500: 35(ptr) AccessChain 463(f16v) 34 - 501:28(float16_t) CompositeExtract 499 0 - Store 500 501 - 502: 35(ptr) AccessChain 463(f16v) 90 - 503:28(float16_t) CompositeExtract 499 1 - Store 502 503 - 504:151(f16vec3) Load 465(if16v) - 505:151(f16vec3) FwidthCoarse 504 - Store 463(f16v) 505 - 506: 466(ptr) AccessChain 465(if16v) 34 - 507:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 506 - 508: 35(ptr) AccessChain 463(f16v) 34 - Store 508 507 - 510:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 465(if16v) 509 - 511: 29(f16vec2) VectorShuffle 510 510 0 1 - 512: 35(ptr) AccessChain 463(f16v) 34 - 513:28(float16_t) CompositeExtract 511 0 - Store 512 513 - 514: 35(ptr) AccessChain 463(f16v) 90 - 515:28(float16_t) CompositeExtract 511 1 - Store 514 515 - 518:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 465(if16v) 517 - Store 463(f16v) 518 + 471:151(f16vec3) Load 461(if16v) + 472: 29(f16vec2) VectorShuffle 471 471 0 1 + 473: 29(f16vec2) DPdxFine 472 + 474: 35(ptr) AccessChain 459(f16v) 34 + 475:28(float16_t) CompositeExtract 473 0 + Store 474 475 + 476: 35(ptr) AccessChain 459(f16v) 90 + 477:28(float16_t) CompositeExtract 473 1 + Store 476 477 + 478:151(f16vec3) Load 461(if16v) + 479: 29(f16vec2) VectorShuffle 478 478 0 1 + 480: 29(f16vec2) DPdyFine 479 + 481: 35(ptr) AccessChain 459(f16v) 34 + 482:28(float16_t) CompositeExtract 480 0 + Store 481 482 + 483: 35(ptr) AccessChain 459(f16v) 90 + 484:28(float16_t) CompositeExtract 480 1 + Store 483 484 + 485:151(f16vec3) Load 461(if16v) + 486:151(f16vec3) DPdxCoarse 485 + Store 459(f16v) 486 + 487:151(f16vec3) Load 461(if16v) + 488:151(f16vec3) DPdxCoarse 487 + Store 459(f16v) 488 + 489: 462(ptr) AccessChain 461(if16v) 34 + 490:28(float16_t) Load 489 + 491:28(float16_t) Fwidth 490 + 492: 35(ptr) AccessChain 459(f16v) 34 + Store 492 491 + 493:151(f16vec3) Load 461(if16v) + 494: 29(f16vec2) VectorShuffle 493 493 0 1 + 495: 29(f16vec2) FwidthFine 494 + 496: 35(ptr) AccessChain 459(f16v) 34 + 497:28(float16_t) CompositeExtract 495 0 + Store 496 497 + 498: 35(ptr) AccessChain 459(f16v) 90 + 499:28(float16_t) CompositeExtract 495 1 + Store 498 499 + 500:151(f16vec3) Load 461(if16v) + 501:151(f16vec3) FwidthCoarse 500 + Store 459(f16v) 501 + 502: 462(ptr) AccessChain 461(if16v) 34 + 503:28(float16_t) ExtInst 1(GLSL.std.450) 76(InterpolateAtCentroid) 502 + 504: 35(ptr) AccessChain 459(f16v) 34 + Store 504 503 + 506:151(f16vec3) ExtInst 1(GLSL.std.450) 77(InterpolateAtSample) 461(if16v) 505 + 507: 29(f16vec2) VectorShuffle 506 506 0 1 + 508: 35(ptr) AccessChain 459(f16v) 34 + 509:28(float16_t) CompositeExtract 507 0 + Store 508 509 + 510: 35(ptr) AccessChain 459(f16v) 90 + 511:28(float16_t) CompositeExtract 507 1 + Store 510 511 + 514:151(f16vec3) ExtInst 1(GLSL.std.450) 78(InterpolateAtOffset) 461(if16v) 513 + Store 459(f16v) 514 Return FunctionEnd diff --git a/Test/baseResults/spv.floatFetch.frag.out b/Test/baseResults/spv.floatFetch.frag.out index 05d04e07aa..251074d4ab 100644 --- a/Test/baseResults/spv.floatFetch.frag.out +++ b/Test/baseResults/spv.floatFetch.frag.out @@ -2,7 +2,7 @@ spv.floatFetch.frag Validation failed // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 3503 +// Id's are bound by 3500 Capability Shader Capability ImageGatherExtended @@ -24,7 +24,7 @@ Validation failed Extension "SPV_AMD_texture_gather_bias_lod" 1: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 4 "main" 127 138 150 197 283 371 866 873 880 2603 3494 3502 + EntryPoint Fragment 4 "main" 127 138 150 197 283 371 866 873 880 2603 3491 3499 ExecutionMode 4 OriginUpperLeft Source GLSL 450 SourceExtension "GL_AMD_texture_gather_bias_lod" @@ -184,12 +184,12 @@ Validation failed Name 3318 "subpass" Name 3324 "subpassMS" Name 3330 "result" - Name 3415 "param" - Name 3494 "fragColor" - Name 3497 "tBuffer" - Name 3499 "t2DMS" - Name 3501 "t2DMSArray" - Name 3502 "bias" + Name 3412 "param" + Name 3491 "fragColor" + Name 3494 "tBuffer" + Name 3496 "t2DMS" + Name 3498 "t2DMSArray" + Name 3499 "bias" Decorate 124(s1D) DescriptorSet 0 Decorate 124(s1D) Binding 0 Decorate 127(c1) Location 0 @@ -284,14 +284,14 @@ Validation failed Decorate 3324(subpassMS) DescriptorSet 3 Decorate 3324(subpassMS) Binding 1 Decorate 3324(subpassMS) InputAttachmentIndex 0 - Decorate 3494(fragColor) Location 0 - Decorate 3497(tBuffer) DescriptorSet 2 - Decorate 3497(tBuffer) Binding 8 - Decorate 3499(t2DMS) DescriptorSet 2 - Decorate 3499(t2DMS) Binding 9 - Decorate 3501(t2DMSArray) DescriptorSet 2 - Decorate 3501(t2DMSArray) Binding 10 - Decorate 3502(bias) Location 6 + Decorate 3491(fragColor) Location 0 + Decorate 3494(tBuffer) DescriptorSet 2 + Decorate 3494(tBuffer) Binding 8 + Decorate 3496(t2DMS) DescriptorSet 2 + Decorate 3496(t2DMS) Binding 9 + Decorate 3498(t2DMSArray) DescriptorSet 2 + Decorate 3498(t2DMSArray) Binding 10 + Decorate 3499(bias) Location 6 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -486,19 +486,19 @@ Validation failed 3322: TypeImage 6(float) SubpassData multi-sampled nonsampled format:Unknown 3323: TypePointer UniformConstant 3322 3324(subpassMS): 3323(ptr) Variable UniformConstant - 3493: TypePointer Output 7(fvec4) - 3494(fragColor): 3493(ptr) Variable Output - 3496: TypePointer UniformConstant 770 - 3497(tBuffer): 3496(ptr) Variable UniformConstant - 3498: TypePointer UniformConstant 781 - 3499(t2DMS): 3498(ptr) Variable UniformConstant - 3500: TypePointer UniformConstant 792 -3501(t2DMSArray): 3500(ptr) Variable UniformConstant - 3502(bias): 126(ptr) Variable Input + 3490: TypePointer Output 7(fvec4) + 3491(fragColor): 3490(ptr) Variable Output + 3493: TypePointer UniformConstant 770 + 3494(tBuffer): 3493(ptr) Variable UniformConstant + 3495: TypePointer UniformConstant 781 + 3496(t2DMS): 3495(ptr) Variable UniformConstant + 3497: TypePointer UniformConstant 792 +3498(t2DMSArray): 3497(ptr) Variable UniformConstant + 3499(bias): 126(ptr) Variable Input 4(main): 2 Function None 3 5: Label 3330(result): 63(ptr) Variable Function - 3415(param): 63(ptr) Variable Function + 3412(param): 63(ptr) Variable Function Store 3330(result) 120 3331: 7(fvec4) FunctionCall 9(testTexture() 3332: 7(fvec4) Load 3330(result) @@ -578,141 +578,138 @@ Validation failed 3388: 7(fvec4) FAdd 3387 3386 Store 3330(result) 3388 3389: 52(fvec2) FunctionCall 54(testTextureQueryLod() - 3390: 6(float) CompositeExtract 3389 0 - 3391: 6(float) CompositeExtract 3389 1 - 3392: 52(fvec2) CompositeConstruct 3390 3391 - 3393: 7(fvec4) Load 3330(result) - 3394: 52(fvec2) VectorShuffle 3393 3393 0 1 - 3395: 52(fvec2) FAdd 3394 3392 - 3396: 174(ptr) AccessChain 3330(result) 173 - 3397: 6(float) CompositeExtract 3395 0 - Store 3396 3397 - 3398: 174(ptr) AccessChain 3330(result) 1447 - 3399: 6(float) CompositeExtract 3395 1 - Store 3398 3399 - 3400: 47(int) FunctionCall 57(testTextureQueryLevels() - 3401: 6(float) ConvertSToF 3400 + 3390: 7(fvec4) Load 3330(result) + 3391: 52(fvec2) VectorShuffle 3390 3390 0 1 + 3392: 52(fvec2) FAdd 3391 3389 + 3393: 174(ptr) AccessChain 3330(result) 173 + 3394: 6(float) CompositeExtract 3392 0 + Store 3393 3394 + 3395: 174(ptr) AccessChain 3330(result) 1447 + 3396: 6(float) CompositeExtract 3392 1 + Store 3395 3396 + 3397: 47(int) FunctionCall 57(testTextureQueryLevels() + 3398: 6(float) ConvertSToF 3397 + 3399: 174(ptr) AccessChain 3330(result) 173 + 3400: 6(float) Load 3399 + 3401: 6(float) FAdd 3400 3398 3402: 174(ptr) AccessChain 3330(result) 173 - 3403: 6(float) Load 3402 - 3404: 6(float) FAdd 3403 3401 + Store 3402 3401 + 3403: 47(int) FunctionCall 59(testTextureSamples() + 3404: 6(float) ConvertSToF 3403 3405: 174(ptr) AccessChain 3330(result) 173 - Store 3405 3404 - 3406: 47(int) FunctionCall 59(testTextureSamples() - 3407: 6(float) ConvertSToF 3406 + 3406: 6(float) Load 3405 + 3407: 6(float) FAdd 3406 3404 3408: 174(ptr) AccessChain 3330(result) 173 - 3409: 6(float) Load 3408 - 3410: 6(float) FAdd 3409 3407 - 3411: 174(ptr) AccessChain 3330(result) 173 - Store 3411 3410 - 3412: 7(fvec4) FunctionCall 61(testImageLoad() + Store 3408 3407 + 3409: 7(fvec4) FunctionCall 61(testImageLoad() + 3410: 7(fvec4) Load 3330(result) + 3411: 7(fvec4) FAdd 3410 3409 + Store 3330(result) 3411 3413: 7(fvec4) Load 3330(result) - 3414: 7(fvec4) FAdd 3413 3412 - Store 3330(result) 3414 + Store 3412(param) 3413 + 3414: 2 FunctionCall 66(testImageStore(vf4;) 3412(param) + 3415: 7(fvec4) FunctionCall 68(testSparseTexture() 3416: 7(fvec4) Load 3330(result) - Store 3415(param) 3416 - 3417: 2 FunctionCall 66(testImageStore(vf4;) 3415(param) - 3418: 7(fvec4) FunctionCall 68(testSparseTexture() + 3417: 7(fvec4) FAdd 3416 3415 + Store 3330(result) 3417 + 3418: 7(fvec4) FunctionCall 70(testSparseTextureLod() 3419: 7(fvec4) Load 3330(result) 3420: 7(fvec4) FAdd 3419 3418 Store 3330(result) 3420 - 3421: 7(fvec4) FunctionCall 70(testSparseTextureLod() + 3421: 7(fvec4) FunctionCall 72(testSparseTextureOffset() 3422: 7(fvec4) Load 3330(result) 3423: 7(fvec4) FAdd 3422 3421 Store 3330(result) 3423 - 3424: 7(fvec4) FunctionCall 72(testSparseTextureOffset() + 3424: 7(fvec4) FunctionCall 74(testSparseTextureLodOffset() 3425: 7(fvec4) Load 3330(result) 3426: 7(fvec4) FAdd 3425 3424 Store 3330(result) 3426 - 3427: 7(fvec4) FunctionCall 74(testSparseTextureLodOffset() + 3427: 7(fvec4) FunctionCall 76(testSparseTextureGrad() 3428: 7(fvec4) Load 3330(result) 3429: 7(fvec4) FAdd 3428 3427 Store 3330(result) 3429 - 3430: 7(fvec4) FunctionCall 76(testSparseTextureGrad() + 3430: 7(fvec4) FunctionCall 78(testSparseTextureGradOffset() 3431: 7(fvec4) Load 3330(result) 3432: 7(fvec4) FAdd 3431 3430 Store 3330(result) 3432 - 3433: 7(fvec4) FunctionCall 78(testSparseTextureGradOffset() + 3433: 7(fvec4) FunctionCall 80(testSparseTexelFetch() 3434: 7(fvec4) Load 3330(result) 3435: 7(fvec4) FAdd 3434 3433 Store 3330(result) 3435 - 3436: 7(fvec4) FunctionCall 80(testSparseTexelFetch() + 3436: 7(fvec4) FunctionCall 82(testSparseTexelFetchOffset() 3437: 7(fvec4) Load 3330(result) 3438: 7(fvec4) FAdd 3437 3436 Store 3330(result) 3438 - 3439: 7(fvec4) FunctionCall 82(testSparseTexelFetchOffset() + 3439: 7(fvec4) FunctionCall 84(testSparseTextureGather() 3440: 7(fvec4) Load 3330(result) 3441: 7(fvec4) FAdd 3440 3439 Store 3330(result) 3441 - 3442: 7(fvec4) FunctionCall 84(testSparseTextureGather() + 3442: 7(fvec4) FunctionCall 86(testSparseTextureGatherOffset() 3443: 7(fvec4) Load 3330(result) 3444: 7(fvec4) FAdd 3443 3442 Store 3330(result) 3444 - 3445: 7(fvec4) FunctionCall 86(testSparseTextureGatherOffset() + 3445: 7(fvec4) FunctionCall 88(testSparseTextureGatherOffsets() 3446: 7(fvec4) Load 3330(result) 3447: 7(fvec4) FAdd 3446 3445 Store 3330(result) 3447 - 3448: 7(fvec4) FunctionCall 88(testSparseTextureGatherOffsets() + 3448: 7(fvec4) FunctionCall 90(testSparseTextureGatherLod() 3449: 7(fvec4) Load 3330(result) 3450: 7(fvec4) FAdd 3449 3448 Store 3330(result) 3450 - 3451: 7(fvec4) FunctionCall 90(testSparseTextureGatherLod() + 3451: 7(fvec4) FunctionCall 92(testSparseTextureGatherLodOffset() 3452: 7(fvec4) Load 3330(result) 3453: 7(fvec4) FAdd 3452 3451 Store 3330(result) 3453 - 3454: 7(fvec4) FunctionCall 92(testSparseTextureGatherLodOffset() + 3454: 7(fvec4) FunctionCall 94(testSparseTextureGatherLodOffsets() 3455: 7(fvec4) Load 3330(result) 3456: 7(fvec4) FAdd 3455 3454 Store 3330(result) 3456 - 3457: 7(fvec4) FunctionCall 94(testSparseTextureGatherLodOffsets() + 3457: 7(fvec4) FunctionCall 96(testSparseImageLoad() 3458: 7(fvec4) Load 3330(result) 3459: 7(fvec4) FAdd 3458 3457 Store 3330(result) 3459 - 3460: 7(fvec4) FunctionCall 96(testSparseImageLoad() + 3460: 7(fvec4) FunctionCall 98(testSparseTextureClamp() 3461: 7(fvec4) Load 3330(result) 3462: 7(fvec4) FAdd 3461 3460 Store 3330(result) 3462 - 3463: 7(fvec4) FunctionCall 98(testSparseTextureClamp() + 3463: 7(fvec4) FunctionCall 100(testTextureClamp() 3464: 7(fvec4) Load 3330(result) 3465: 7(fvec4) FAdd 3464 3463 Store 3330(result) 3465 - 3466: 7(fvec4) FunctionCall 100(testTextureClamp() + 3466: 7(fvec4) FunctionCall 102(testSparseTextureOffsetClamp() 3467: 7(fvec4) Load 3330(result) 3468: 7(fvec4) FAdd 3467 3466 Store 3330(result) 3468 - 3469: 7(fvec4) FunctionCall 102(testSparseTextureOffsetClamp() + 3469: 7(fvec4) FunctionCall 104(testTextureOffsetClamp() 3470: 7(fvec4) Load 3330(result) 3471: 7(fvec4) FAdd 3470 3469 Store 3330(result) 3471 - 3472: 7(fvec4) FunctionCall 104(testTextureOffsetClamp() + 3472: 7(fvec4) FunctionCall 76(testSparseTextureGrad() 3473: 7(fvec4) Load 3330(result) 3474: 7(fvec4) FAdd 3473 3472 Store 3330(result) 3474 - 3475: 7(fvec4) FunctionCall 76(testSparseTextureGrad() + 3475: 7(fvec4) FunctionCall 27(testTextureGrad() 3476: 7(fvec4) Load 3330(result) 3477: 7(fvec4) FAdd 3476 3475 Store 3330(result) 3477 - 3478: 7(fvec4) FunctionCall 27(testTextureGrad() + 3478: 7(fvec4) FunctionCall 110(testSparseTextureGradOffsetClamp() 3479: 7(fvec4) Load 3330(result) 3480: 7(fvec4) FAdd 3479 3478 Store 3330(result) 3480 - 3481: 7(fvec4) FunctionCall 110(testSparseTextureGradOffsetClamp() + 3481: 7(fvec4) FunctionCall 112(testTextureGradOffsetClamp() 3482: 7(fvec4) Load 3330(result) 3483: 7(fvec4) FAdd 3482 3481 Store 3330(result) 3483 - 3484: 7(fvec4) FunctionCall 112(testTextureGradOffsetClamp() + 3484: 7(fvec4) FunctionCall 114(testCombinedTextureSampler() 3485: 7(fvec4) Load 3330(result) 3486: 7(fvec4) FAdd 3485 3484 Store 3330(result) 3486 - 3487: 7(fvec4) FunctionCall 114(testCombinedTextureSampler() + 3487: 7(fvec4) FunctionCall 116(testSubpassLoad() 3488: 7(fvec4) Load 3330(result) 3489: 7(fvec4) FAdd 3488 3487 Store 3330(result) 3489 - 3490: 7(fvec4) FunctionCall 116(testSubpassLoad() - 3491: 7(fvec4) Load 3330(result) - 3492: 7(fvec4) FAdd 3491 3490 - Store 3330(result) 3492 - 3495: 7(fvec4) Load 3330(result) - Store 3494(fragColor) 3495 + 3492: 7(fvec4) Load 3330(result) + Store 3491(fragColor) 3492 Return FunctionEnd 9(testTexture(): 7(fvec4) Function None 8 diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out index 2c260dd2b1..4ee05c8251 100644 --- a/Test/baseResults/spv.int32.frag.out +++ b/Test/baseResults/spv.int32.frag.out @@ -1,7 +1,7 @@ spv.int32.frag // Module Version 10300 // Generated by (magic number): 8000b -// Id's are bound by 505 +// Id's are bound by 499 Capability Shader Capability Float16 @@ -43,63 +43,63 @@ spv.int32.frag Name 84 "f64v" Name 94 "i8v" Name 105 "i16v" - Name 125 "u8v" - Name 132 "u16v" - Name 152 "f16v" - Name 168 "bv" - Name 186 "u32v" - Name 191 "i32" - Name 210 "i" - Name 214 "uv" - Name 227 "i64" - Name 260 "b" - Name 312 "i32v" - Name 315 "i32" - Name 325 "u32v" - Name 327 "u32" - Name 399 "i8v4" - Name 402 "i16v2" - Name 407 "u8v4" - Name 410 "u16v2" - Name 413 "i64" - Name 416 "u32v2" - Name 418 "u64" - Name 422 "bv" - Name 497 "Block" - MemberName 497(Block) 0 "i32" - MemberName 497(Block) 1 "i32v2" - MemberName 497(Block) 2 "i32v3" - MemberName 497(Block) 3 "i32v4" - MemberName 497(Block) 4 "u32" - MemberName 497(Block) 5 "u32v2" - MemberName 497(Block) 6 "u32v3" - MemberName 497(Block) 7 "u32v4" - Name 499 "block" - Name 500 "si32" - Name 501 "su32" - Name 502 "si" - Name 503 "su" - Name 504 "sb" + Name 122 "u8v" + Name 129 "u16v" + Name 146 "f16v" + Name 162 "bv" + Name 180 "u32v" + Name 185 "i32" + Name 204 "i" + Name 208 "uv" + Name 221 "i64" + Name 254 "b" + Name 306 "i32v" + Name 309 "i32" + Name 319 "u32v" + Name 321 "u32" + Name 393 "i8v4" + Name 396 "i16v2" + Name 401 "u8v4" + Name 404 "u16v2" + Name 407 "i64" + Name 410 "u32v2" + Name 412 "u64" + Name 416 "bv" + Name 491 "Block" + MemberName 491(Block) 0 "i32" + MemberName 491(Block) 1 "i32v2" + MemberName 491(Block) 2 "i32v3" + MemberName 491(Block) 3 "i32v4" + MemberName 491(Block) 4 "u32" + MemberName 491(Block) 5 "u32v2" + MemberName 491(Block) 6 "u32v3" + MemberName 491(Block) 7 "u32v4" + Name 493 "block" + Name 494 "si32" + Name 495 "su32" + Name 496 "si" + Name 497 "su" + Name 498 "sb" MemberDecorate 27(Uniforms) 0 Offset 0 Decorate 27(Uniforms) Block Decorate 29 DescriptorSet 0 Decorate 29 Binding 0 - MemberDecorate 497(Block) 0 Offset 0 - MemberDecorate 497(Block) 1 Offset 8 - MemberDecorate 497(Block) 2 Offset 16 - MemberDecorate 497(Block) 3 Offset 32 - MemberDecorate 497(Block) 4 Offset 48 - MemberDecorate 497(Block) 5 Offset 56 - MemberDecorate 497(Block) 6 Offset 64 - MemberDecorate 497(Block) 7 Offset 80 - Decorate 497(Block) Block - Decorate 499(block) DescriptorSet 0 - Decorate 499(block) Binding 1 - Decorate 500(si32) SpecId 100 - Decorate 501(su32) SpecId 101 - Decorate 502(si) SpecId 102 - Decorate 503(su) SpecId 103 - Decorate 504(sb) SpecId 104 + MemberDecorate 491(Block) 0 Offset 0 + MemberDecorate 491(Block) 1 Offset 8 + MemberDecorate 491(Block) 2 Offset 16 + MemberDecorate 491(Block) 3 Offset 32 + MemberDecorate 491(Block) 4 Offset 48 + MemberDecorate 491(Block) 5 Offset 56 + MemberDecorate 491(Block) 6 Offset 64 + MemberDecorate 491(Block) 7 Offset 80 + Decorate 491(Block) Block + Decorate 493(block) DescriptorSet 0 + Decorate 493(block) Binding 1 + Decorate 494(si32) SpecId 100 + Decorate 495(su32) SpecId 101 + Decorate 496(si) SpecId 102 + Decorate 497(su) SpecId 103 + Decorate 498(sb) SpecId 104 2: TypeVoid 3: TypeFunction 2 14: TypeInt 32 0 @@ -151,50 +151,50 @@ spv.int32.frag 104: TypePointer Function 103(i16vec2) 109: TypeInt 16 0 110: TypeVector 109(int16_t) 2 - 124: TypePointer Function 99(i8vec2) - 131: TypePointer Function 110(i16vec2) - 149: TypeFloat 16 - 150: TypeVector 149(float16_t) 2 - 151: TypePointer Function 150(f16vec2) - 165: TypeBool - 166: TypeVector 165(bool) 2 - 167: TypePointer Function 166(bvec2) - 170: 18(int) Constant 1 - 171: 52(ivec2) ConstantComposite 30 30 - 172: 52(ivec2) ConstantComposite 170 170 - 175: 14(int) Constant 0 - 176: 14(int) Constant 1 - 177: 49(ivec2) ConstantComposite 175 175 - 178: 49(ivec2) ConstantComposite 176 176 - 184: TypeVector 14(int) 3 - 185: TypePointer Function 184(ivec3) - 188: TypeVector 18(int) 3 - 226: TypePointer Function 57(int64_t) - 251: 14(int) Constant 2 - 259: TypePointer Function 165(bool) - 323: 52(ivec2) ConstantComposite 24 24 - 332: 184(ivec3) ConstantComposite 175 175 175 - 374: 165(bool) ConstantTrue - 381: 165(bool) ConstantFalse - 382: 166(bvec2) ConstantComposite 381 381 - 394: TypeVector 165(bool) 3 - 395: 394(bvec3) ConstantComposite 381 381 381 - 397: TypeVector 91(int8_t) 4 - 398: TypePointer Function 397(i8vec4) - 405: TypeVector 98(int8_t) 4 - 406: TypePointer Function 405(i8vec4) - 417: TypePointer Function 63(int64_t) - 421: TypePointer Function 394(bvec3) - 495: TypeVector 18(int) 4 - 496: TypeVector 14(int) 4 - 497(Block): TypeStruct 18(int) 52(ivec2) 188(ivec3) 495(ivec4) 14(int) 49(ivec2) 184(ivec3) 496(ivec4) - 498: TypePointer Uniform 497(Block) - 499(block): 498(ptr) Variable Uniform - 500(si32): 18(int) SpecConstant 4294967286 - 501(su32): 14(int) SpecConstant 20 - 502(si): 18(int) SpecConstant 4294967291 - 503(su): 14(int) SpecConstant 4 - 504(sb): 165(bool) SpecConstantTrue + 121: TypePointer Function 99(i8vec2) + 128: TypePointer Function 110(i16vec2) + 143: TypeFloat 16 + 144: TypeVector 143(float16_t) 2 + 145: TypePointer Function 144(f16vec2) + 159: TypeBool + 160: TypeVector 159(bool) 2 + 161: TypePointer Function 160(bvec2) + 164: 18(int) Constant 1 + 165: 52(ivec2) ConstantComposite 30 30 + 166: 52(ivec2) ConstantComposite 164 164 + 169: 14(int) Constant 0 + 170: 14(int) Constant 1 + 171: 49(ivec2) ConstantComposite 169 169 + 172: 49(ivec2) ConstantComposite 170 170 + 178: TypeVector 14(int) 3 + 179: TypePointer Function 178(ivec3) + 182: TypeVector 18(int) 3 + 220: TypePointer Function 57(int64_t) + 245: 14(int) Constant 2 + 253: TypePointer Function 159(bool) + 317: 52(ivec2) ConstantComposite 24 24 + 326: 178(ivec3) ConstantComposite 169 169 169 + 368: 159(bool) ConstantTrue + 375: 159(bool) ConstantFalse + 376: 160(bvec2) ConstantComposite 375 375 + 388: TypeVector 159(bool) 3 + 389: 388(bvec3) ConstantComposite 375 375 375 + 391: TypeVector 91(int8_t) 4 + 392: TypePointer Function 391(i8vec4) + 399: TypeVector 98(int8_t) 4 + 400: TypePointer Function 399(i8vec4) + 411: TypePointer Function 63(int64_t) + 415: TypePointer Function 388(bvec3) + 489: TypeVector 18(int) 4 + 490: TypeVector 14(int) 4 + 491(Block): TypeStruct 18(int) 52(ivec2) 182(ivec3) 489(ivec4) 14(int) 49(ivec2) 178(ivec3) 490(ivec4) + 492: TypePointer Uniform 491(Block) + 493(block): 492(ptr) Variable Uniform + 494(si32): 18(int) SpecConstant 4294967286 + 495(su32): 14(int) SpecConstant 20 + 496(si): 18(int) SpecConstant 4294967291 + 497(su): 14(int) SpecConstant 4 + 498(sb): 159(bool) SpecConstantTrue 4(main): 2 Function None 3 5: Label Store 16(u32Max) 17 @@ -230,10 +230,10 @@ spv.int32.frag 84(f64v): 83(ptr) Variable Function 94(i8v): 93(ptr) Variable Function 105(i16v): 104(ptr) Variable Function - 125(u8v): 124(ptr) Variable Function - 132(u16v): 131(ptr) Variable Function - 152(f16v): 151(ptr) Variable Function - 168(bv): 167(ptr) Variable Function + 122(u8v): 121(ptr) Variable Function + 129(u16v): 128(ptr) Variable Function + 146(f16v): 145(ptr) Variable Function + 162(bv): 161(ptr) Variable Function 55: 52(ivec2) Load 54(i32v) 56: 49(ivec2) Bitcast 55 Store 51(u32v) 56 @@ -278,453 +278,447 @@ spv.int32.frag 112:103(i16vec2) Bitcast 111 Store 105(i16v) 112 113: 52(ivec2) Load 54(i32v) - 114: 18(int) CompositeExtract 113 0 - 115: 18(int) CompositeExtract 113 1 - 116: 52(ivec2) CompositeConstruct 114 115 - Store 54(i32v) 116 - 117: 49(ivec2) Load 51(u32v) - 118: 52(ivec2) Bitcast 117 - Store 54(i32v) 118 - 119: 52(ivec2) Load 54(i32v) - 120: 58(i64vec2) SConvert 119 + Store 54(i32v) 113 + 114: 49(ivec2) Load 51(u32v) + 115: 52(ivec2) Bitcast 114 + Store 54(i32v) 115 + 116: 52(ivec2) Load 54(i32v) + 117: 58(i64vec2) SConvert 116 + Store 60(i64v) 117 + 118: 49(ivec2) Load 51(u32v) + 119: 64(i64vec2) UConvert 118 + 120: 58(i64vec2) Bitcast 119 Store 60(i64v) 120 - 121: 49(ivec2) Load 51(u32v) - 122: 64(i64vec2) UConvert 121 - 123: 58(i64vec2) Bitcast 122 - Store 60(i64v) 123 - 126: 52(ivec2) Load 54(i32v) - 127: 92(i8vec2) SConvert 126 - 128: 99(i8vec2) Bitcast 127 - Store 125(u8v) 128 - 129: 49(ivec2) Load 51(u32v) - 130: 99(i8vec2) UConvert 129 - Store 125(u8v) 130 - 133: 52(ivec2) Load 54(i32v) - 134:103(i16vec2) SConvert 133 - 135:110(i16vec2) Bitcast 134 - Store 132(u16v) 135 - 136: 49(ivec2) Load 51(u32v) - 137:110(i16vec2) UConvert 136 - Store 132(u16v) 137 + 123: 52(ivec2) Load 54(i32v) + 124: 92(i8vec2) SConvert 123 + 125: 99(i8vec2) Bitcast 124 + Store 122(u8v) 125 + 126: 49(ivec2) Load 51(u32v) + 127: 99(i8vec2) UConvert 126 + Store 122(u8v) 127 + 130: 52(ivec2) Load 54(i32v) + 131:103(i16vec2) SConvert 130 + 132:110(i16vec2) Bitcast 131 + Store 129(u16v) 132 + 133: 49(ivec2) Load 51(u32v) + 134:110(i16vec2) UConvert 133 + Store 129(u16v) 134 + 135: 52(ivec2) Load 54(i32v) + 136: 49(ivec2) Bitcast 135 + Store 51(u32v) 136 + 137: 49(ivec2) Load 51(u32v) + Store 51(u32v) 137 138: 52(ivec2) Load 54(i32v) - 139: 49(ivec2) Bitcast 138 - Store 51(u32v) 139 - 140: 49(ivec2) Load 51(u32v) - 141: 14(int) CompositeExtract 140 0 - 142: 14(int) CompositeExtract 140 1 - 143: 49(ivec2) CompositeConstruct 141 142 - Store 51(u32v) 143 - 144: 52(ivec2) Load 54(i32v) - 145: 58(i64vec2) SConvert 144 - 146: 64(i64vec2) Bitcast 145 - Store 66(u64v) 146 - 147: 49(ivec2) Load 51(u32v) - 148: 64(i64vec2) UConvert 147 - Store 66(u64v) 148 - 153: 52(ivec2) Load 54(i32v) - 154:150(f16vec2) ConvertSToF 153 - Store 152(f16v) 154 - 155: 52(ivec2) Load 54(i32v) - 156: 76(fvec2) ConvertSToF 155 + 139: 58(i64vec2) SConvert 138 + 140: 64(i64vec2) Bitcast 139 + Store 66(u64v) 140 + 141: 49(ivec2) Load 51(u32v) + 142: 64(i64vec2) UConvert 141 + Store 66(u64v) 142 + 147: 52(ivec2) Load 54(i32v) + 148:144(f16vec2) ConvertSToF 147 + Store 146(f16v) 148 + 149: 52(ivec2) Load 54(i32v) + 150: 76(fvec2) ConvertSToF 149 + Store 78(f32v) 150 + 151: 52(ivec2) Load 54(i32v) + 152: 82(f64vec2) ConvertSToF 151 + Store 84(f64v) 152 + 153: 49(ivec2) Load 51(u32v) + 154:144(f16vec2) ConvertUToF 153 + Store 146(f16v) 154 + 155: 49(ivec2) Load 51(u32v) + 156: 76(fvec2) ConvertUToF 155 Store 78(f32v) 156 - 157: 52(ivec2) Load 54(i32v) - 158: 82(f64vec2) ConvertSToF 157 + 157: 49(ivec2) Load 51(u32v) + 158: 82(f64vec2) ConvertUToF 157 Store 84(f64v) 158 - 159: 49(ivec2) Load 51(u32v) - 160:150(f16vec2) ConvertUToF 159 - Store 152(f16v) 160 - 161: 49(ivec2) Load 51(u32v) - 162: 76(fvec2) ConvertUToF 161 - Store 78(f32v) 162 - 163: 49(ivec2) Load 51(u32v) - 164: 82(f64vec2) ConvertUToF 163 - Store 84(f64v) 164 - 169: 166(bvec2) Load 168(bv) - 173: 52(ivec2) Select 169 172 171 - Store 54(i32v) 173 - 174: 166(bvec2) Load 168(bv) - 179: 49(ivec2) Select 174 178 177 - Store 51(u32v) 179 - 180: 52(ivec2) Load 54(i32v) - 181: 166(bvec2) INotEqual 180 177 - Store 168(bv) 181 - 182: 49(ivec2) Load 51(u32v) - 183: 166(bvec2) INotEqual 182 177 - Store 168(bv) 183 + 163: 160(bvec2) Load 162(bv) + 167: 52(ivec2) Select 163 166 165 + Store 54(i32v) 167 + 168: 160(bvec2) Load 162(bv) + 173: 49(ivec2) Select 168 172 171 + Store 51(u32v) 173 + 174: 52(ivec2) Load 54(i32v) + 175: 160(bvec2) INotEqual 174 171 + Store 162(bv) 175 + 176: 49(ivec2) Load 51(u32v) + 177: 160(bvec2) INotEqual 176 171 + Store 162(bv) 177 Return FunctionEnd 10(operators(): 2 Function None 3 11: Label - 186(u32v): 185(ptr) Variable Function - 191(i32): 19(ptr) Variable Function - 210(i): 19(ptr) Variable Function - 214(uv): 185(ptr) Variable Function - 227(i64): 226(ptr) Variable Function - 260(b): 259(ptr) Variable Function - 187: 184(ivec3) Load 186(u32v) - 189: 188(ivec3) CompositeConstruct 170 170 170 - 190: 184(ivec3) IAdd 187 189 - Store 186(u32v) 190 - 192: 18(int) Load 191(i32) - 193: 18(int) ISub 192 170 - Store 191(i32) 193 - 194: 18(int) Load 191(i32) - 195: 18(int) IAdd 194 170 - Store 191(i32) 195 - 196: 184(ivec3) Load 186(u32v) - 197: 188(ivec3) CompositeConstruct 170 170 170 - 198: 184(ivec3) ISub 196 197 - Store 186(u32v) 198 - 199: 184(ivec3) Load 186(u32v) - 200: 184(ivec3) Not 199 - Store 186(u32v) 200 - 201: 18(int) Load 191(i32) - Store 191(i32) 201 - 202: 184(ivec3) Load 186(u32v) - 203: 184(ivec3) SNegate 202 - Store 186(u32v) 203 - 204: 18(int) Load 191(i32) - 205: 18(int) Load 191(i32) - 206: 18(int) IAdd 205 204 - Store 191(i32) 206 - 207: 184(ivec3) Load 186(u32v) - 208: 184(ivec3) Load 186(u32v) - 209: 184(ivec3) ISub 208 207 - Store 186(u32v) 209 - 211: 18(int) Load 191(i32) - 212: 18(int) Load 210(i) - 213: 18(int) IMul 212 211 - Store 210(i) 213 - 215: 184(ivec3) Load 186(u32v) - 216: 184(ivec3) Load 214(uv) - 217: 184(ivec3) UDiv 216 215 - Store 214(uv) 217 - 218: 18(int) Load 191(i32) - 219: 14(int) Bitcast 218 - 220: 184(ivec3) Load 214(uv) - 221: 184(ivec3) CompositeConstruct 219 219 219 - 222: 184(ivec3) UMod 220 221 - Store 214(uv) 222 - 223: 184(ivec3) Load 186(u32v) - 224: 184(ivec3) Load 214(uv) - 225: 184(ivec3) IAdd 223 224 - Store 214(uv) 225 - 228: 18(int) Load 191(i32) - 229: 57(int64_t) SConvert 228 - 230: 57(int64_t) Load 227(i64) - 231: 57(int64_t) ISub 229 230 - Store 227(i64) 231 - 232: 184(ivec3) Load 186(u32v) - 233: 184(ivec3) Load 214(uv) - 234: 184(ivec3) IMul 232 233 - Store 214(uv) 234 - 235: 18(int) Load 191(i32) - 236: 57(int64_t) SConvert 235 - 237: 57(int64_t) Load 227(i64) - 238: 57(int64_t) IMul 236 237 - Store 227(i64) 238 - 239: 18(int) Load 191(i32) - 240: 18(int) Load 210(i) - 241: 18(int) SMod 239 240 - Store 210(i) 241 - 242: 18(int) Load 191(i32) - 243: 184(ivec3) Load 186(u32v) - 244: 188(ivec3) CompositeConstruct 242 242 242 - 245: 184(ivec3) ShiftLeftLogical 243 244 - Store 186(u32v) 245 - 246: 38(ptr) AccessChain 186(u32v) 176 + 180(u32v): 179(ptr) Variable Function + 185(i32): 19(ptr) Variable Function + 204(i): 19(ptr) Variable Function + 208(uv): 179(ptr) Variable Function + 221(i64): 220(ptr) Variable Function + 254(b): 253(ptr) Variable Function + 181: 178(ivec3) Load 180(u32v) + 183: 182(ivec3) CompositeConstruct 164 164 164 + 184: 178(ivec3) IAdd 181 183 + Store 180(u32v) 184 + 186: 18(int) Load 185(i32) + 187: 18(int) ISub 186 164 + Store 185(i32) 187 + 188: 18(int) Load 185(i32) + 189: 18(int) IAdd 188 164 + Store 185(i32) 189 + 190: 178(ivec3) Load 180(u32v) + 191: 182(ivec3) CompositeConstruct 164 164 164 + 192: 178(ivec3) ISub 190 191 + Store 180(u32v) 192 + 193: 178(ivec3) Load 180(u32v) + 194: 178(ivec3) Not 193 + Store 180(u32v) 194 + 195: 18(int) Load 185(i32) + Store 185(i32) 195 + 196: 178(ivec3) Load 180(u32v) + 197: 178(ivec3) SNegate 196 + Store 180(u32v) 197 + 198: 18(int) Load 185(i32) + 199: 18(int) Load 185(i32) + 200: 18(int) IAdd 199 198 + Store 185(i32) 200 + 201: 178(ivec3) Load 180(u32v) + 202: 178(ivec3) Load 180(u32v) + 203: 178(ivec3) ISub 202 201 + Store 180(u32v) 203 + 205: 18(int) Load 185(i32) + 206: 18(int) Load 204(i) + 207: 18(int) IMul 206 205 + Store 204(i) 207 + 209: 178(ivec3) Load 180(u32v) + 210: 178(ivec3) Load 208(uv) + 211: 178(ivec3) UDiv 210 209 + Store 208(uv) 211 + 212: 18(int) Load 185(i32) + 213: 14(int) Bitcast 212 + 214: 178(ivec3) Load 208(uv) + 215: 178(ivec3) CompositeConstruct 213 213 213 + 216: 178(ivec3) UMod 214 215 + Store 208(uv) 216 + 217: 178(ivec3) Load 180(u32v) + 218: 178(ivec3) Load 208(uv) + 219: 178(ivec3) IAdd 217 218 + Store 208(uv) 219 + 222: 18(int) Load 185(i32) + 223: 57(int64_t) SConvert 222 + 224: 57(int64_t) Load 221(i64) + 225: 57(int64_t) ISub 223 224 + Store 221(i64) 225 + 226: 178(ivec3) Load 180(u32v) + 227: 178(ivec3) Load 208(uv) + 228: 178(ivec3) IMul 226 227 + Store 208(uv) 228 + 229: 18(int) Load 185(i32) + 230: 57(int64_t) SConvert 229 + 231: 57(int64_t) Load 221(i64) + 232: 57(int64_t) IMul 230 231 + Store 221(i64) 232 + 233: 18(int) Load 185(i32) + 234: 18(int) Load 204(i) + 235: 18(int) SMod 233 234 + Store 204(i) 235 + 236: 18(int) Load 185(i32) + 237: 178(ivec3) Load 180(u32v) + 238: 182(ivec3) CompositeConstruct 236 236 236 + 239: 178(ivec3) ShiftLeftLogical 237 238 + Store 180(u32v) 239 + 240: 38(ptr) AccessChain 180(u32v) 170 + 241: 14(int) Load 240 + 242: 18(int) Load 185(i32) + 243: 18(int) ShiftRightArithmetic 242 241 + Store 185(i32) 243 + 244: 57(int64_t) Load 221(i64) + 246: 38(ptr) AccessChain 180(u32v) 245 247: 14(int) Load 246 - 248: 18(int) Load 191(i32) - 249: 18(int) ShiftRightArithmetic 248 247 - Store 191(i32) 249 - 250: 57(int64_t) Load 227(i64) - 252: 38(ptr) AccessChain 186(u32v) 251 - 253: 14(int) Load 252 - 254: 57(int64_t) ShiftLeftLogical 250 253 - Store 227(i64) 254 - 255: 184(ivec3) Load 186(u32v) - 256: 18(int) Load 210(i) - 257: 188(ivec3) CompositeConstruct 256 256 256 - 258: 184(ivec3) ShiftLeftLogical 255 257 - Store 214(uv) 258 - 261: 38(ptr) AccessChain 186(u32v) 175 - 262: 14(int) Load 261 - 263: 18(int) Load 191(i32) - 264: 14(int) Bitcast 263 - 265: 165(bool) INotEqual 262 264 - Store 260(b) 265 - 266: 18(int) Load 191(i32) - 267: 14(int) Bitcast 266 - 268: 38(ptr) AccessChain 186(u32v) 175 - 269: 14(int) Load 268 - 270: 165(bool) IEqual 267 269 - Store 260(b) 270 - 271: 38(ptr) AccessChain 186(u32v) 175 - 272: 14(int) Load 271 - 273: 38(ptr) AccessChain 214(uv) 176 + 248: 57(int64_t) ShiftLeftLogical 244 247 + Store 221(i64) 248 + 249: 178(ivec3) Load 180(u32v) + 250: 18(int) Load 204(i) + 251: 182(ivec3) CompositeConstruct 250 250 250 + 252: 178(ivec3) ShiftLeftLogical 249 251 + Store 208(uv) 252 + 255: 38(ptr) AccessChain 180(u32v) 169 + 256: 14(int) Load 255 + 257: 18(int) Load 185(i32) + 258: 14(int) Bitcast 257 + 259: 159(bool) INotEqual 256 258 + Store 254(b) 259 + 260: 18(int) Load 185(i32) + 261: 14(int) Bitcast 260 + 262: 38(ptr) AccessChain 180(u32v) 169 + 263: 14(int) Load 262 + 264: 159(bool) IEqual 261 263 + Store 254(b) 264 + 265: 38(ptr) AccessChain 180(u32v) 169 + 266: 14(int) Load 265 + 267: 38(ptr) AccessChain 208(uv) 170 + 268: 14(int) Load 267 + 269: 159(bool) UGreaterThan 266 268 + Store 254(b) 269 + 270: 18(int) Load 185(i32) + 271: 18(int) Load 204(i) + 272: 159(bool) SLessThan 270 271 + Store 254(b) 272 + 273: 38(ptr) AccessChain 180(u32v) 170 274: 14(int) Load 273 - 275: 165(bool) UGreaterThan 272 274 - Store 260(b) 275 - 276: 18(int) Load 191(i32) - 277: 18(int) Load 210(i) - 278: 165(bool) SLessThan 276 277 - Store 260(b) 278 - 279: 38(ptr) AccessChain 186(u32v) 176 - 280: 14(int) Load 279 - 281: 38(ptr) AccessChain 214(uv) 175 - 282: 14(int) Load 281 - 283: 165(bool) UGreaterThanEqual 280 282 - Store 260(b) 283 - 284: 18(int) Load 191(i32) - 285: 18(int) Load 210(i) - 286: 165(bool) SLessThanEqual 284 285 - Store 260(b) 286 - 287: 18(int) Load 191(i32) - 288: 14(int) Bitcast 287 - 289: 184(ivec3) Load 214(uv) - 290: 184(ivec3) CompositeConstruct 288 288 288 - 291: 184(ivec3) BitwiseOr 289 290 - Store 214(uv) 291 - 292: 18(int) Load 191(i32) - 293: 18(int) Load 210(i) - 294: 18(int) BitwiseOr 292 293 - Store 210(i) 294 - 295: 18(int) Load 191(i32) - 296: 57(int64_t) SConvert 295 - 297: 57(int64_t) Load 227(i64) - 298: 57(int64_t) BitwiseAnd 297 296 - Store 227(i64) 298 - 299: 184(ivec3) Load 186(u32v) - 300: 184(ivec3) Load 214(uv) - 301: 184(ivec3) BitwiseAnd 299 300 - Store 214(uv) 301 - 302: 18(int) Load 191(i32) + 275: 38(ptr) AccessChain 208(uv) 169 + 276: 14(int) Load 275 + 277: 159(bool) UGreaterThanEqual 274 276 + Store 254(b) 277 + 278: 18(int) Load 185(i32) + 279: 18(int) Load 204(i) + 280: 159(bool) SLessThanEqual 278 279 + Store 254(b) 280 + 281: 18(int) Load 185(i32) + 282: 14(int) Bitcast 281 + 283: 178(ivec3) Load 208(uv) + 284: 178(ivec3) CompositeConstruct 282 282 282 + 285: 178(ivec3) BitwiseOr 283 284 + Store 208(uv) 285 + 286: 18(int) Load 185(i32) + 287: 18(int) Load 204(i) + 288: 18(int) BitwiseOr 286 287 + Store 204(i) 288 + 289: 18(int) Load 185(i32) + 290: 57(int64_t) SConvert 289 + 291: 57(int64_t) Load 221(i64) + 292: 57(int64_t) BitwiseAnd 291 290 + Store 221(i64) 292 + 293: 178(ivec3) Load 180(u32v) + 294: 178(ivec3) Load 208(uv) + 295: 178(ivec3) BitwiseAnd 293 294 + Store 208(uv) 295 + 296: 18(int) Load 185(i32) + 297: 14(int) Bitcast 296 + 298: 178(ivec3) Load 208(uv) + 299: 178(ivec3) CompositeConstruct 297 297 297 + 300: 178(ivec3) BitwiseXor 298 299 + Store 208(uv) 300 + 301: 178(ivec3) Load 180(u32v) + 302: 18(int) Load 185(i32) 303: 14(int) Bitcast 302 - 304: 184(ivec3) Load 214(uv) - 305: 184(ivec3) CompositeConstruct 303 303 303 - 306: 184(ivec3) BitwiseXor 304 305 - Store 214(uv) 306 - 307: 184(ivec3) Load 186(u32v) - 308: 18(int) Load 191(i32) - 309: 14(int) Bitcast 308 - 310: 184(ivec3) CompositeConstruct 309 309 309 - 311: 184(ivec3) BitwiseXor 307 310 - Store 186(u32v) 311 + 304: 178(ivec3) CompositeConstruct 303 303 303 + 305: 178(ivec3) BitwiseXor 301 304 + Store 180(u32v) 305 Return FunctionEnd 12(builtinFuncs(): 2 Function None 3 13: Label - 312(i32v): 53(ptr) Variable Function - 315(i32): 19(ptr) Variable Function - 325(u32v): 185(ptr) Variable Function - 327(u32): 38(ptr) Variable Function - 399(i8v4): 398(ptr) Variable Function - 402(i16v2): 104(ptr) Variable Function - 407(u8v4): 406(ptr) Variable Function - 410(u16v2): 131(ptr) Variable Function - 413(i64): 226(ptr) Variable Function - 416(u32v2): 50(ptr) Variable Function - 418(u64): 417(ptr) Variable Function - 422(bv): 421(ptr) Variable Function - 313: 52(ivec2) Load 312(i32v) - 314: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 313 - Store 312(i32v) 314 - 316: 18(int) Load 315(i32) - 317: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 316 - Store 315(i32) 317 - 318: 52(ivec2) Load 312(i32v) - 319: 18(int) Load 315(i32) - 320: 52(ivec2) CompositeConstruct 319 319 - 321: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 318 320 - Store 312(i32v) 321 - 322: 52(ivec2) Load 312(i32v) - 324: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 322 323 - Store 312(i32v) 324 - 326: 184(ivec3) Load 325(u32v) - 328: 14(int) Load 327(u32) - 329: 184(ivec3) CompositeConstruct 328 328 328 - 330: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 326 329 - Store 325(u32v) 330 - 331: 184(ivec3) Load 325(u32v) - 333: 184(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 331 332 - Store 325(u32v) 333 - 334: 52(ivec2) Load 312(i32v) - 335: 18(int) Load 315(i32) - 336: 52(ivec2) CompositeConstruct 335 335 - 337: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 334 336 - Store 312(i32v) 337 - 338: 52(ivec2) Load 312(i32v) - 339: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 338 323 - Store 312(i32v) 339 - 340: 184(ivec3) Load 325(u32v) - 341: 14(int) Load 327(u32) - 342: 184(ivec3) CompositeConstruct 341 341 341 - 343: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 340 342 - Store 325(u32v) 343 - 344: 184(ivec3) Load 325(u32v) - 345: 184(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 344 332 - Store 325(u32v) 345 - 346: 52(ivec2) Load 312(i32v) - 347: 18(int) Load 315(i32) - 348: 18(int) SNegate 347 - 349: 18(int) Load 315(i32) - 350: 52(ivec2) CompositeConstruct 348 348 - 351: 52(ivec2) CompositeConstruct 349 349 - 352: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 346 350 351 - Store 312(i32v) 352 - 353: 52(ivec2) Load 312(i32v) - 354: 52(ivec2) Load 312(i32v) - 355: 52(ivec2) SNegate 354 - 356: 52(ivec2) Load 312(i32v) - 357: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 353 355 356 - Store 312(i32v) 357 - 358: 184(ivec3) Load 325(u32v) - 359: 14(int) Load 327(u32) - 360: 14(int) SNegate 359 - 361: 14(int) Load 327(u32) - 362: 184(ivec3) CompositeConstruct 360 360 360 - 363: 184(ivec3) CompositeConstruct 361 361 361 - 364: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 358 362 363 - Store 325(u32v) 364 - 365: 184(ivec3) Load 325(u32v) - 366: 184(ivec3) Load 325(u32v) - 367: 184(ivec3) SNegate 366 - 368: 184(ivec3) Load 325(u32v) - 369: 184(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 365 367 368 - Store 325(u32v) 369 - 370: 19(ptr) AccessChain 312(i32v) 175 - 371: 18(int) Load 370 - 372: 19(ptr) AccessChain 312(i32v) 176 - 373: 18(int) Load 372 - 375: 18(int) Select 374 373 371 - Store 315(i32) 375 - 376: 18(int) Load 315(i32) - 377: 52(ivec2) CompositeConstruct 376 376 - 378: 18(int) Load 315(i32) - 379: 18(int) SNegate 378 - 380: 52(ivec2) CompositeConstruct 379 379 - 383: 52(ivec2) Select 382 380 377 - Store 312(i32v) 383 - 384: 38(ptr) AccessChain 325(u32v) 175 - 385: 14(int) Load 384 - 386: 38(ptr) AccessChain 325(u32v) 176 - 387: 14(int) Load 386 - 388: 14(int) Select 374 387 385 - Store 327(u32) 388 - 389: 14(int) Load 327(u32) - 390: 184(ivec3) CompositeConstruct 389 389 389 - 391: 14(int) Load 327(u32) - 392: 14(int) SNegate 391 - 393: 184(ivec3) CompositeConstruct 392 392 392 - 396: 184(ivec3) Select 395 393 390 - Store 325(u32v) 396 - 400: 397(i8vec4) Load 399(i8v4) - 401: 18(int) Bitcast 400 - Store 315(i32) 401 - 403:103(i16vec2) Load 402(i16v2) - 404: 18(int) Bitcast 403 - Store 315(i32) 404 - 408: 405(i8vec4) Load 407(u8v4) - 409: 14(int) Bitcast 408 - Store 327(u32) 409 - 411:110(i16vec2) Load 410(u16v2) - 412: 14(int) Bitcast 411 - Store 327(u32) 412 - 414: 57(int64_t) Load 413(i64) - 415: 52(ivec2) Bitcast 414 - Store 312(i32v) 415 - 419: 63(int64_t) Load 418(u64) - 420: 49(ivec2) Bitcast 419 - Store 416(u32v2) 420 - 423: 184(ivec3) Load 325(u32v) - 424: 14(int) Load 327(u32) - 425: 184(ivec3) CompositeConstruct 424 424 424 - 426: 394(bvec3) ULessThan 423 425 - Store 422(bv) 426 - 427: 52(ivec2) Load 312(i32v) - 428: 18(int) Load 315(i32) - 429: 52(ivec2) CompositeConstruct 428 428 - 430: 166(bvec2) SLessThan 427 429 - 431: 259(ptr) AccessChain 422(bv) 175 - 432: 165(bool) CompositeExtract 430 0 - Store 431 432 - 433: 259(ptr) AccessChain 422(bv) 176 - 434: 165(bool) CompositeExtract 430 1 - Store 433 434 - 435: 184(ivec3) Load 325(u32v) - 436: 14(int) Load 327(u32) - 437: 184(ivec3) CompositeConstruct 436 436 436 - 438: 394(bvec3) ULessThanEqual 435 437 - Store 422(bv) 438 - 439: 52(ivec2) Load 312(i32v) - 440: 18(int) Load 315(i32) - 441: 52(ivec2) CompositeConstruct 440 440 - 442: 166(bvec2) SLessThanEqual 439 441 - 443: 259(ptr) AccessChain 422(bv) 175 - 444: 165(bool) CompositeExtract 442 0 - Store 443 444 - 445: 259(ptr) AccessChain 422(bv) 176 - 446: 165(bool) CompositeExtract 442 1 - Store 445 446 - 447: 184(ivec3) Load 325(u32v) - 448: 14(int) Load 327(u32) - 449: 184(ivec3) CompositeConstruct 448 448 448 - 450: 394(bvec3) UGreaterThan 447 449 - Store 422(bv) 450 - 451: 52(ivec2) Load 312(i32v) - 452: 18(int) Load 315(i32) - 453: 52(ivec2) CompositeConstruct 452 452 - 454: 166(bvec2) SGreaterThan 451 453 - 455: 259(ptr) AccessChain 422(bv) 175 - 456: 165(bool) CompositeExtract 454 0 - Store 455 456 - 457: 259(ptr) AccessChain 422(bv) 176 - 458: 165(bool) CompositeExtract 454 1 - Store 457 458 - 459: 184(ivec3) Load 325(u32v) - 460: 14(int) Load 327(u32) - 461: 184(ivec3) CompositeConstruct 460 460 460 - 462: 394(bvec3) UGreaterThanEqual 459 461 - Store 422(bv) 462 - 463: 52(ivec2) Load 312(i32v) - 464: 18(int) Load 315(i32) - 465: 52(ivec2) CompositeConstruct 464 464 - 466: 166(bvec2) SGreaterThanEqual 463 465 - 467: 259(ptr) AccessChain 422(bv) 175 - 468: 165(bool) CompositeExtract 466 0 - Store 467 468 - 469: 259(ptr) AccessChain 422(bv) 176 - 470: 165(bool) CompositeExtract 466 1 - Store 469 470 - 471: 184(ivec3) Load 325(u32v) - 472: 14(int) Load 327(u32) - 473: 184(ivec3) CompositeConstruct 472 472 472 - 474: 394(bvec3) IEqual 471 473 - Store 422(bv) 474 - 475: 52(ivec2) Load 312(i32v) - 476: 18(int) Load 315(i32) - 477: 52(ivec2) CompositeConstruct 476 476 - 478: 166(bvec2) IEqual 475 477 - 479: 259(ptr) AccessChain 422(bv) 175 - 480: 165(bool) CompositeExtract 478 0 - Store 479 480 - 481: 259(ptr) AccessChain 422(bv) 176 - 482: 165(bool) CompositeExtract 478 1 - Store 481 482 - 483: 184(ivec3) Load 325(u32v) - 484: 14(int) Load 327(u32) - 485: 184(ivec3) CompositeConstruct 484 484 484 - 486: 394(bvec3) INotEqual 483 485 - Store 422(bv) 486 - 487: 52(ivec2) Load 312(i32v) - 488: 18(int) Load 315(i32) - 489: 52(ivec2) CompositeConstruct 488 488 - 490: 166(bvec2) INotEqual 487 489 - 491: 259(ptr) AccessChain 422(bv) 175 - 492: 165(bool) CompositeExtract 490 0 - Store 491 492 - 493: 259(ptr) AccessChain 422(bv) 176 - 494: 165(bool) CompositeExtract 490 1 - Store 493 494 + 306(i32v): 53(ptr) Variable Function + 309(i32): 19(ptr) Variable Function + 319(u32v): 179(ptr) Variable Function + 321(u32): 38(ptr) Variable Function + 393(i8v4): 392(ptr) Variable Function + 396(i16v2): 104(ptr) Variable Function + 401(u8v4): 400(ptr) Variable Function + 404(u16v2): 128(ptr) Variable Function + 407(i64): 220(ptr) Variable Function + 410(u32v2): 50(ptr) Variable Function + 412(u64): 411(ptr) Variable Function + 416(bv): 415(ptr) Variable Function + 307: 52(ivec2) Load 306(i32v) + 308: 52(ivec2) ExtInst 1(GLSL.std.450) 5(SAbs) 307 + Store 306(i32v) 308 + 310: 18(int) Load 309(i32) + 311: 18(int) ExtInst 1(GLSL.std.450) 7(SSign) 310 + Store 309(i32) 311 + 312: 52(ivec2) Load 306(i32v) + 313: 18(int) Load 309(i32) + 314: 52(ivec2) CompositeConstruct 313 313 + 315: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 312 314 + Store 306(i32v) 315 + 316: 52(ivec2) Load 306(i32v) + 318: 52(ivec2) ExtInst 1(GLSL.std.450) 39(SMin) 316 317 + Store 306(i32v) 318 + 320: 178(ivec3) Load 319(u32v) + 322: 14(int) Load 321(u32) + 323: 178(ivec3) CompositeConstruct 322 322 322 + 324: 178(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 320 323 + Store 319(u32v) 324 + 325: 178(ivec3) Load 319(u32v) + 327: 178(ivec3) ExtInst 1(GLSL.std.450) 38(UMin) 325 326 + Store 319(u32v) 327 + 328: 52(ivec2) Load 306(i32v) + 329: 18(int) Load 309(i32) + 330: 52(ivec2) CompositeConstruct 329 329 + 331: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 328 330 + Store 306(i32v) 331 + 332: 52(ivec2) Load 306(i32v) + 333: 52(ivec2) ExtInst 1(GLSL.std.450) 42(SMax) 332 317 + Store 306(i32v) 333 + 334: 178(ivec3) Load 319(u32v) + 335: 14(int) Load 321(u32) + 336: 178(ivec3) CompositeConstruct 335 335 335 + 337: 178(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 334 336 + Store 319(u32v) 337 + 338: 178(ivec3) Load 319(u32v) + 339: 178(ivec3) ExtInst 1(GLSL.std.450) 41(UMax) 338 326 + Store 319(u32v) 339 + 340: 52(ivec2) Load 306(i32v) + 341: 18(int) Load 309(i32) + 342: 18(int) SNegate 341 + 343: 18(int) Load 309(i32) + 344: 52(ivec2) CompositeConstruct 342 342 + 345: 52(ivec2) CompositeConstruct 343 343 + 346: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 340 344 345 + Store 306(i32v) 346 + 347: 52(ivec2) Load 306(i32v) + 348: 52(ivec2) Load 306(i32v) + 349: 52(ivec2) SNegate 348 + 350: 52(ivec2) Load 306(i32v) + 351: 52(ivec2) ExtInst 1(GLSL.std.450) 45(SClamp) 347 349 350 + Store 306(i32v) 351 + 352: 178(ivec3) Load 319(u32v) + 353: 14(int) Load 321(u32) + 354: 14(int) SNegate 353 + 355: 14(int) Load 321(u32) + 356: 178(ivec3) CompositeConstruct 354 354 354 + 357: 178(ivec3) CompositeConstruct 355 355 355 + 358: 178(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 352 356 357 + Store 319(u32v) 358 + 359: 178(ivec3) Load 319(u32v) + 360: 178(ivec3) Load 319(u32v) + 361: 178(ivec3) SNegate 360 + 362: 178(ivec3) Load 319(u32v) + 363: 178(ivec3) ExtInst 1(GLSL.std.450) 44(UClamp) 359 361 362 + Store 319(u32v) 363 + 364: 19(ptr) AccessChain 306(i32v) 169 + 365: 18(int) Load 364 + 366: 19(ptr) AccessChain 306(i32v) 170 + 367: 18(int) Load 366 + 369: 18(int) Select 368 367 365 + Store 309(i32) 369 + 370: 18(int) Load 309(i32) + 371: 52(ivec2) CompositeConstruct 370 370 + 372: 18(int) Load 309(i32) + 373: 18(int) SNegate 372 + 374: 52(ivec2) CompositeConstruct 373 373 + 377: 52(ivec2) Select 376 374 371 + Store 306(i32v) 377 + 378: 38(ptr) AccessChain 319(u32v) 169 + 379: 14(int) Load 378 + 380: 38(ptr) AccessChain 319(u32v) 170 + 381: 14(int) Load 380 + 382: 14(int) Select 368 381 379 + Store 321(u32) 382 + 383: 14(int) Load 321(u32) + 384: 178(ivec3) CompositeConstruct 383 383 383 + 385: 14(int) Load 321(u32) + 386: 14(int) SNegate 385 + 387: 178(ivec3) CompositeConstruct 386 386 386 + 390: 178(ivec3) Select 389 387 384 + Store 319(u32v) 390 + 394: 391(i8vec4) Load 393(i8v4) + 395: 18(int) Bitcast 394 + Store 309(i32) 395 + 397:103(i16vec2) Load 396(i16v2) + 398: 18(int) Bitcast 397 + Store 309(i32) 398 + 402: 399(i8vec4) Load 401(u8v4) + 403: 14(int) Bitcast 402 + Store 321(u32) 403 + 405:110(i16vec2) Load 404(u16v2) + 406: 14(int) Bitcast 405 + Store 321(u32) 406 + 408: 57(int64_t) Load 407(i64) + 409: 52(ivec2) Bitcast 408 + Store 306(i32v) 409 + 413: 63(int64_t) Load 412(u64) + 414: 49(ivec2) Bitcast 413 + Store 410(u32v2) 414 + 417: 178(ivec3) Load 319(u32v) + 418: 14(int) Load 321(u32) + 419: 178(ivec3) CompositeConstruct 418 418 418 + 420: 388(bvec3) ULessThan 417 419 + Store 416(bv) 420 + 421: 52(ivec2) Load 306(i32v) + 422: 18(int) Load 309(i32) + 423: 52(ivec2) CompositeConstruct 422 422 + 424: 160(bvec2) SLessThan 421 423 + 425: 253(ptr) AccessChain 416(bv) 169 + 426: 159(bool) CompositeExtract 424 0 + Store 425 426 + 427: 253(ptr) AccessChain 416(bv) 170 + 428: 159(bool) CompositeExtract 424 1 + Store 427 428 + 429: 178(ivec3) Load 319(u32v) + 430: 14(int) Load 321(u32) + 431: 178(ivec3) CompositeConstruct 430 430 430 + 432: 388(bvec3) ULessThanEqual 429 431 + Store 416(bv) 432 + 433: 52(ivec2) Load 306(i32v) + 434: 18(int) Load 309(i32) + 435: 52(ivec2) CompositeConstruct 434 434 + 436: 160(bvec2) SLessThanEqual 433 435 + 437: 253(ptr) AccessChain 416(bv) 169 + 438: 159(bool) CompositeExtract 436 0 + Store 437 438 + 439: 253(ptr) AccessChain 416(bv) 170 + 440: 159(bool) CompositeExtract 436 1 + Store 439 440 + 441: 178(ivec3) Load 319(u32v) + 442: 14(int) Load 321(u32) + 443: 178(ivec3) CompositeConstruct 442 442 442 + 444: 388(bvec3) UGreaterThan 441 443 + Store 416(bv) 444 + 445: 52(ivec2) Load 306(i32v) + 446: 18(int) Load 309(i32) + 447: 52(ivec2) CompositeConstruct 446 446 + 448: 160(bvec2) SGreaterThan 445 447 + 449: 253(ptr) AccessChain 416(bv) 169 + 450: 159(bool) CompositeExtract 448 0 + Store 449 450 + 451: 253(ptr) AccessChain 416(bv) 170 + 452: 159(bool) CompositeExtract 448 1 + Store 451 452 + 453: 178(ivec3) Load 319(u32v) + 454: 14(int) Load 321(u32) + 455: 178(ivec3) CompositeConstruct 454 454 454 + 456: 388(bvec3) UGreaterThanEqual 453 455 + Store 416(bv) 456 + 457: 52(ivec2) Load 306(i32v) + 458: 18(int) Load 309(i32) + 459: 52(ivec2) CompositeConstruct 458 458 + 460: 160(bvec2) SGreaterThanEqual 457 459 + 461: 253(ptr) AccessChain 416(bv) 169 + 462: 159(bool) CompositeExtract 460 0 + Store 461 462 + 463: 253(ptr) AccessChain 416(bv) 170 + 464: 159(bool) CompositeExtract 460 1 + Store 463 464 + 465: 178(ivec3) Load 319(u32v) + 466: 14(int) Load 321(u32) + 467: 178(ivec3) CompositeConstruct 466 466 466 + 468: 388(bvec3) IEqual 465 467 + Store 416(bv) 468 + 469: 52(ivec2) Load 306(i32v) + 470: 18(int) Load 309(i32) + 471: 52(ivec2) CompositeConstruct 470 470 + 472: 160(bvec2) IEqual 469 471 + 473: 253(ptr) AccessChain 416(bv) 169 + 474: 159(bool) CompositeExtract 472 0 + Store 473 474 + 475: 253(ptr) AccessChain 416(bv) 170 + 476: 159(bool) CompositeExtract 472 1 + Store 475 476 + 477: 178(ivec3) Load 319(u32v) + 478: 14(int) Load 321(u32) + 479: 178(ivec3) CompositeConstruct 478 478 478 + 480: 388(bvec3) INotEqual 477 479 + Store 416(bv) 480 + 481: 52(ivec2) Load 306(i32v) + 482: 18(int) Load 309(i32) + 483: 52(ivec2) CompositeConstruct 482 482 + 484: 160(bvec2) INotEqual 481 483 + 485: 253(ptr) AccessChain 416(bv) 169 + 486: 159(bool) CompositeExtract 484 0 + Store 485 486 + 487: 253(ptr) AccessChain 416(bv) 170 + 488: 159(bool) CompositeExtract 484 1 + Store 487 488 Return FunctionEnd From 0c15a28c94bf83a6814b31d15551437f5fc5fd42 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 21 Jun 2024 17:31:00 -0400 Subject: [PATCH 503/594] refactor: Make type component/constituent counts unsigned A type can't have a negative number of constituents, components, rows, or columns. Therefore, the utility functions to query said information on types and values should return unsigned int rather than int. --- SPIRV/SpvBuilder.cpp | 44 ++++++++++++++++++++++---------------------- SPIRV/SpvBuilder.h | 14 +++++++------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 6e5c00b5cb..d5c0370492 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1312,7 +1312,7 @@ Op Builder::getMostBasicTypeClass(Id typeId) const } } -int Builder::getNumTypeConstituents(Id typeId) const +unsigned int Builder::getNumTypeConstituents(Id typeId) const { Instruction* instr = module.getInstruction(typeId); @@ -2924,7 +2924,7 @@ Id Builder::createLvalueSwizzle(Id typeId, Id target, Id source, const std::vect swizzle->reserveOperands(2); swizzle->addIdOperand(target); - assert(getNumComponents(source) == (int)channels.size()); + assert(getNumComponents(source) == channels.size()); assert(isVector(source)); swizzle->addIdOperand(source); @@ -3371,7 +3371,7 @@ Id Builder::createCompositeCompare(Decoration precision, Id value1, Id value2, b Id Builder::createCompositeConstruct(Id typeId, const std::vector& constituents) { assert(isAggregateType(typeId) || (getNumTypeConstituents(typeId) > 1 && - getNumTypeConstituents(typeId) == (int)constituents.size())); + getNumTypeConstituents(typeId) == constituents.size())); if (generatingOpCodeForSpecConst) { // Sometime, even in spec-constant-op mode, the constant composite to be @@ -3464,8 +3464,8 @@ Id Builder::createConstructor(Decoration precision, const std::vector& sourc if (sourcesToUse + targetComponent > numTargetComponents) sourcesToUse = numTargetComponents - targetComponent; - int col = 0; - int row = 0; + unsigned int col = 0; + unsigned int row = 0; for (unsigned int s = 0; s < sourcesToUse; ++s) { if (row >= getNumRows(sourceArg)) { row = 0; @@ -3510,8 +3510,8 @@ Id Builder::createConstructor(Decoration precision, const std::vector& sourc Id Builder::createMatrixConstructor(Decoration precision, const std::vector& sources, Id resultTypeId) { Id componentTypeId = getScalarTypeId(resultTypeId); - int numCols = getTypeNumColumns(resultTypeId); - int numRows = getTypeNumRows(resultTypeId); + unsigned int numCols = getTypeNumColumns(resultTypeId); + unsigned int numRows = getTypeNumRows(resultTypeId); Instruction* instr = module.getInstruction(componentTypeId); const unsigned bitCount = instr->getImmediateOperand(0); @@ -3526,11 +3526,11 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& Id sourceColumnTypeId = getContainedTypeId(getTypeId(matrix)); std::vector channels; - for (int row = 0; row < numRows; ++row) + for (unsigned int row = 0; row < numRows; ++row) channels.push_back(row); std::vector matrixColumns; - for (int col = 0; col < numCols; ++col) { + for (unsigned int col = 0; col < numCols; ++col) { std::vector indexes; indexes.push_back(col); Id colv = createCompositeExtract(matrix, sourceColumnTypeId, indexes); @@ -3548,7 +3548,7 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& // Detect a matrix being constructed from a repeated vector of the correct size. // Create the composite directly from it. - if ((int)sources.size() == numCols && isVector(sources[0]) && getNumComponents(sources[0]) == numRows && + if (sources.size() == numCols && isVector(sources[0]) && getNumComponents(sources[0]) == numRows && std::equal(sources.begin() + 1, sources.end(), sources.begin())) { return setPrecision(createCompositeConstruct(resultTypeId, sources), precision); } @@ -3580,12 +3580,12 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& } else if (isMatrix(sources[0])) { // constructing from another matrix; copy over the parts that exist in both the argument and constructee Id matrix = sources[0]; - int minCols = std::min(numCols, getNumColumns(matrix)); - int minRows = std::min(numRows, getNumRows(matrix)); - for (int col = 0; col < minCols; ++col) { + unsigned int minCols = std::min(numCols, getNumColumns(matrix)); + unsigned int minRows = std::min(numRows, getNumRows(matrix)); + for (unsigned int col = 0; col < minCols; ++col) { std::vector indexes; indexes.push_back(col); - for (int row = 0; row < minRows; ++row) { + for (unsigned int row = 0; row < minRows; ++row) { indexes.push_back(row); ids[col][row] = createCompositeExtract(matrix, componentTypeId, indexes); indexes.pop_back(); @@ -3594,12 +3594,12 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& } } else { // fill in the matrix in column-major order with whatever argument components are available - int row = 0; - int col = 0; + unsigned int row = 0; + unsigned int col = 0; - for (int arg = 0; arg < (int)sources.size() && col < numCols; ++arg) { + for (unsigned int arg = 0; arg < sources.size() && col < numCols; ++arg) { Id argComp = sources[arg]; - for (int comp = 0; comp < getNumComponents(sources[arg]); ++comp) { + for (unsigned int comp = 0; comp < getNumComponents(sources[arg]); ++comp) { if (getNumComponents(sources[arg]) > 1) { argComp = createCompositeExtract(sources[arg], componentTypeId, comp); setPrecision(argComp, precision); @@ -3623,9 +3623,9 @@ Id Builder::createMatrixConstructor(Decoration precision, const std::vector& // make the column vectors Id columnTypeId = getContainedTypeId(resultTypeId); std::vector matrixColumns; - for (int col = 0; col < numCols; ++col) { + for (unsigned int col = 0; col < numCols; ++col) { std::vector vectorComponents; - for (int row = 0; row < numRows; ++row) + for (unsigned int row = 0; row < numRows; ++row) vectorComponents.push_back(ids[col][row]); Id column = createCompositeConstruct(columnTypeId, vectorComponents); setPrecision(column, precision); @@ -3852,7 +3852,7 @@ void Builder::accessChainStore(Id rvalue, Decoration nonUniform, spv::MemoryAcce // If a swizzle exists and is not full and is not dynamic, then the swizzle will be broken into individual stores. if (accessChain.swizzle.size() > 0 && - getNumTypeComponents(getResultingAccessChainType()) != (int)accessChain.swizzle.size() && + getNumTypeComponents(getResultingAccessChainType()) != accessChain.swizzle.size() && accessChain.component == NoResult) { for (unsigned int i = 0; i < accessChain.swizzle.size(); ++i) { accessChain.indexChain.push_back(makeUintConstant(accessChain.swizzle[i])); @@ -4172,7 +4172,7 @@ void Builder::simplifyAccessChainSwizzle() { // If the swizzle has fewer components than the vector, it is subsetting, and must stay // to preserve that fact. - if (getNumTypeComponents(accessChain.preSwizzleBaseType) > (int)accessChain.swizzle.size()) + if (getNumTypeComponents(accessChain.preSwizzleBaseType) > accessChain.swizzle.size()) return; // if components are out of order, it is a swizzle diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 35327d6e70..08057f4392 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -264,9 +264,9 @@ class Builder { Op getOpCode(Id id) const { return module.getInstruction(id)->getOpCode(); } Op getTypeClass(Id typeId) const { return getOpCode(typeId); } Op getMostBasicTypeClass(Id typeId) const; - int getNumComponents(Id resultId) const { return getNumTypeComponents(getTypeId(resultId)); } - int getNumTypeConstituents(Id typeId) const; - int getNumTypeComponents(Id typeId) const { return getNumTypeConstituents(typeId); } + unsigned int getNumComponents(Id resultId) const { return getNumTypeComponents(getTypeId(resultId)); } + unsigned int getNumTypeConstituents(Id typeId) const; + unsigned int getNumTypeComponents(Id typeId) const { return getNumTypeConstituents(typeId); } Id getScalarTypeId(Id typeId) const; Id getContainedTypeId(Id typeId) const; Id getContainedTypeId(Id typeId, int) const; @@ -334,18 +334,18 @@ class Builder { return module.getInstruction(scalarTypeId)->getImmediateOperand(0); } - int getTypeNumColumns(Id typeId) const + unsigned int getTypeNumColumns(Id typeId) const { assert(isMatrixType(typeId)); return getNumTypeConstituents(typeId); } - int getNumColumns(Id resultId) const { return getTypeNumColumns(getTypeId(resultId)); } - int getTypeNumRows(Id typeId) const + unsigned int getNumColumns(Id resultId) const { return getTypeNumColumns(getTypeId(resultId)); } + unsigned int getTypeNumRows(Id typeId) const { assert(isMatrixType(typeId)); return getNumTypeComponents(getContainedTypeId(typeId)); } - int getNumRows(Id resultId) const { return getTypeNumRows(getTypeId(resultId)); } + unsigned int getNumRows(Id resultId) const { return getTypeNumRows(getTypeId(resultId)); } Dim getTypeDimensionality(Id typeId) const { From 0d6be86cf1f49e77aaaca6cc6817c75452f26ce0 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 25 Jun 2024 11:24:55 -0600 Subject: [PATCH 504/594] Update known_good.json --- known_good.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/known_good.json b/known_good.json index 03d5a0f5ea..b062866a90 100644 --- a/known_good.json +++ b/known_good.json @@ -5,7 +5,7 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "bc28ac7c195f59b14535edec8472d97fd32a91ad" + "commit": "0cfe9e7219148716dfd30b37f4d21753f098707a" }, { "name" : "spirv-tools/external/spirv-headers", From fa9c3deb49e035a8abcabe366f26aac010f6cbfb Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Tue, 25 Jun 2024 16:09:26 -0600 Subject: [PATCH 505/594] Update CHANGES for 14.3.0 --- CHANGES.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGES.md b/CHANGES.md index 13fa155632..5dd05bb060 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,19 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 14.3.0 2024-06-25 +* Generate vector constructions more efficiently when sizes match +* Skip identity conversions for 8-bit and 16-bit types +* Add cmake aliases for public libraries +* Support ARM extended matrix layout +* Emit debug info for buffer references +* Add support for OpExtInstWithForwardRefsKHR +* Generate SPV_EXT_replicated_compisites when requested by pragma +* Reuse loads generated for repeated function arguments +* Fix gl_HitT alias of gl_RayTmax +* Fix some cases where invalid SPIR-V was being generated when using separate samplers +* Add back layoutLocation to public API + ## 14.2.0 2024-05-02 * Improve checking for location aliasing errors * Fix undefined behavior in parser From ea087ff90d03947307cfe52500b74551aa35d34d Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 24 Jun 2024 06:38:25 +0000 Subject: [PATCH 506/594] Bump lukka/get-cmake from 3.29.5 to 3.29.6 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.29.5 to 3.29.6. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/18d87816d12dd87ec1449d47b9b3a587e0a1cc19...2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index ac7e3d1cad..2e154caaae 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 642eef10e1..537b1a38d1 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -127,7 +127,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -151,7 +151,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -169,7 +169,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -198,7 +198,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -224,7 +224,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@18d87816d12dd87ec1449d47b9b3a587e0a1cc19 # v3.29.5 + - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: From 20490a11aacd261ec371d9a80db9536a9cec6cd8 Mon Sep 17 00:00:00 2001 From: Antoine Date: Wed, 22 May 2024 22:56:43 +0200 Subject: [PATCH 507/594] Adding the preprocessor value DISABLE_THREAD_SUPPORT to allow compilation of glslang without thread support for WASI. --- glslang/MachineIndependent/PoolAlloc.cpp | 11 +++++++++-- glslang/MachineIndependent/ShaderLang.cpp | 9 +++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/PoolAlloc.cpp b/glslang/MachineIndependent/PoolAlloc.cpp index 5d7173c9db..93a3b0d12f 100644 --- a/glslang/MachineIndependent/PoolAlloc.cpp +++ b/glslang/MachineIndependent/PoolAlloc.cpp @@ -35,14 +35,21 @@ #include "../Include/Common.h" #include "../Include/PoolAlloc.h" +// Mostly here for target that do not support threads such as WASI. +#ifdef DISABLE_THREAD_SUPPORT +#define THREAD_LOCAL +#else +#define THREAD_LOCAL thread_local +#endif + namespace glslang { namespace { -thread_local TPoolAllocator* threadPoolAllocator = nullptr; +THREAD_LOCAL TPoolAllocator* threadPoolAllocator = nullptr; TPoolAllocator* GetDefaultThreadPoolAllocator() { - thread_local TPoolAllocator defaultAllocator; + THREAD_LOCAL TPoolAllocator defaultAllocator; return &defaultAllocator; } } // anonymous namespace diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 034a030650..be3248e3ff 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -82,7 +82,10 @@ namespace { // anonymous namespace for file-local functions and symbols int NumberOfClients = 0; // global initialization lock +#ifndef DISABLE_THREAD_SUPPORT std::mutex init_lock; +#endif + using namespace glslang; @@ -420,7 +423,9 @@ void SetupBuiltinSymbolTable(int version, EProfile profile, const SpvVersion& sp TInfoSink infoSink; // Make sure only one thread tries to do this at a time +#ifndef DISABLE_THREAD_SUPPORT const std::lock_guard lock(init_lock); +#endif // See if it's already been done for this version/profile combination int versionIndex = MapVersionToIndex(version); @@ -1311,7 +1316,9 @@ bool CompileDeferred( // int ShInitialize() { +#ifndef DISABLE_THREAD_SUPPORT const std::lock_guard lock(init_lock); +#endif ++NumberOfClients; if (PerProcessGPA == nullptr) @@ -1371,7 +1378,9 @@ void ShDestruct(ShHandle handle) // int ShFinalize() { +#ifndef DISABLE_THREAD_SUPPORT const std::lock_guard lock(init_lock); +#endif --NumberOfClients; assert(NumberOfClients >= 0); if (NumberOfClients > 0) From 7c40de7aa2768320af4d09119b58676629156e78 Mon Sep 17 00:00:00 2001 From: Antoine Date: Mon, 24 Jun 2024 23:02:55 +0200 Subject: [PATCH 508/594] Auto-detect WASI platform --- glslang/Include/Common.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/glslang/Include/Common.h b/glslang/Include/Common.h index d1bd13b575..0c14260533 100644 --- a/glslang/Include/Common.h +++ b/glslang/Include/Common.h @@ -94,6 +94,11 @@ std::string to_string(const T& val) { #pragma warning(disable : 4201) // nameless union #endif +// Allow compilation to WASI which does not support threads yet. +#ifdef __wasi__ +#define DISABLE_THREAD_SUPPORT +#endif + #include "PoolAlloc.h" // From 33c7e30860928bab3819c3abae8297b109a02f73 Mon Sep 17 00:00:00 2001 From: Steven Perron Date: Fri, 28 Jun 2024 19:16:59 -0400 Subject: [PATCH 509/594] Don't emit duplicate decorations. (#3635) It is invalid if the same decoration is applied to the same id multiple times. This adds a check before adding a decoration that the decoration is not already in the list. If it is, then the duplicate is not added. Fixes #3627 --- SPIRV/SpvBuilder.cpp | 65 +++++-- SPIRV/SpvBuilder.h | 7 +- SPIRV/SpvPostProcess.cpp | 14 +- .../hlsl.aliasOpaque.frag.out | 4 +- .../hlsl.flattenOpaque.frag.out | 8 +- .../hlsl.flattenOpaqueInit.vert.out | 4 +- .../hlsl.flattenOpaqueInitMix.vert.out | 4 +- .../hlsl.flattenSubset.frag.out | 4 +- .../glsl.autosampledtextures.frag.out | 2 +- .../glsl.entryPointRename.vert.bad.out | 2 +- .../glsl.entryPointRename.vert.out | 2 +- Test/baseResults/hlsl.aliasOpaque.frag.out | 6 +- Test/baseResults/hlsl.amend.frag.out | 4 +- Test/baseResults/hlsl.array.flatten.frag.out | 32 ++-- Test/baseResults/hlsl.array.frag.out | 4 +- Test/baseResults/hlsl.array.multidim.frag.out | 4 +- .../hlsl.attribute.expression.comp.out | 4 +- Test/baseResults/hlsl.attributeC11.frag.out | 10 +- .../hlsl.attributeGlobalBuffer.frag.out | 4 +- .../hlsl.autosampledtextures.frag.out | 2 +- Test/baseResults/hlsl.buffer.frag.out | 28 +-- .../hlsl.buffer_ref_parameter.comp.out | 8 +- .../hlsl.calculatelod.dx10.frag.out | 22 +-- .../hlsl.calculatelodunclamped.dx10.frag.out | 22 +-- .../hlsl.cbuffer-identifier.vert.out | 10 +- .../baseResults/hlsl.cbuffer-offsets.comp.out | 32 ++-- Test/baseResults/hlsl.color.hull.tesc.out | 8 +- Test/baseResults/hlsl.comparison.vec.frag.out | 4 +- Test/baseResults/hlsl.conditional.frag.out | 4 +- Test/baseResults/hlsl.constantbuffer.frag.out | 14 +- Test/baseResults/hlsl.dashI.vert.out | 4 +- Test/baseResults/hlsl.domain.1.tese.out | 6 +- Test/baseResults/hlsl.domain.2.tese.out | 6 +- Test/baseResults/hlsl.domain.3.tese.out | 6 +- .../hlsl.earlydepthstencil.frag.out | 2 +- .../hlsl.emptystructreturn.tesc.out | 4 +- Test/baseResults/hlsl.entry.rename.frag.out | 4 +- .../hlsl.explicitDescriptorSet-2.frag.out | 12 +- .../hlsl.explicitDescriptorSet.frag.out | 12 +- Test/baseResults/hlsl.flattenOpaque.frag.out | 8 +- .../hlsl.flattenOpaqueInit.vert.out | 4 +- .../hlsl.flattenOpaqueInitMix.vert.out | 4 +- Test/baseResults/hlsl.flattenSubset.frag.out | 4 +- Test/baseResults/hlsl.flattenSubset2.frag.out | 2 +- Test/baseResults/hlsl.float4.frag.out | 4 +- .../hlsl.format.rwtexture.frag.out | 88 ++++----- .../hlsl.gather.array.dx10.frag.out | 22 +-- .../hlsl.gather.basic.dx10.frag.out | 30 +-- .../hlsl.gather.basic.dx10.vert.out | 30 +-- .../hlsl.gather.offset.dx10.frag.out | 28 +-- .../hlsl.gather.offsetarray.dx10.frag.out | 16 +- .../hlsl.gatherRGBA.array.dx10.frag.out | 26 +-- .../hlsl.gatherRGBA.basic.dx10.frag.out | 34 ++-- .../hlsl.gatherRGBA.offset.dx10.frag.out | 34 ++-- .../hlsl.gatherRGBA.offsetarray.dx10.frag.out | 26 +-- .../hlsl.gathercmpRGBA.offset.dx10.frag.out | 32 ++-- .../hlsl.getdimensions.dx10.frag.out | 56 +++--- .../hlsl.getdimensions.dx10.vert.out | 4 +- .../hlsl.getdimensions.rw.dx10.frag.out | 42 ++--- .../hlsl.getsampleposition.dx10.frag.out | 6 +- .../hlsl.global-const-init.frag.out | 4 +- Test/baseResults/hlsl.groupid.comp.out | 2 +- Test/baseResults/hlsl.gs-hs-mix.tesc.out | 16 +- Test/baseResults/hlsl.hlslOffset.vert.out | 4 +- Test/baseResults/hlsl.hull.1.tesc.out | 2 +- Test/baseResults/hlsl.hull.2.tesc.out | 2 +- Test/baseResults/hlsl.hull.3.tesc.out | 2 +- Test/baseResults/hlsl.hull.4.tesc.out | 4 +- Test/baseResults/hlsl.hull.6.tesc.out | 4 +- Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out | 4 +- Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out | 4 +- .../hlsl.imagefetch-subvec4.comp.out | 30 +-- .../hlsl.imageload-subvec4.comp.out | 22 +-- Test/baseResults/hlsl.implicitBool.frag.out | 4 +- Test/baseResults/hlsl.include.vert.out | 4 +- Test/baseResults/hlsl.init.frag.out | 4 +- Test/baseResults/hlsl.inoutquals.frag.out | 2 +- .../hlsl.intrinsics.d3dcolortoubyte4.frag.out | 4 +- .../hlsl.intrinsics.promote.down.frag.out | 4 +- .../hlsl.intrinsics.promote.frag.out | 8 +- .../hlsl.intrinsics.promote.outputs.frag.out | 8 +- Test/baseResults/hlsl.isfinite.frag.out | 4 +- Test/baseResults/hlsl.layout.frag.out | 10 +- Test/baseResults/hlsl.layoutOverride.vert.out | 4 +- Test/baseResults/hlsl.load.2dms.dx10.frag.out | 18 +- .../baseResults/hlsl.load.array.dx10.frag.out | 48 ++--- .../baseResults/hlsl.load.basic.dx10.frag.out | 48 ++--- .../baseResults/hlsl.load.basic.dx10.vert.out | 48 ++--- .../hlsl.load.buffer.dx10.frag.out | 12 +- .../hlsl.load.buffer.float.dx10.frag.out | 12 +- .../hlsl.load.offset.dx10.frag.out | 48 ++--- .../hlsl.load.offsetarray.dx10.frag.out | 48 ++--- .../hlsl.load.rwbuffer.dx10.frag.out | 10 +- .../hlsl.load.rwtexture.array.dx10.frag.out | 36 ++-- .../hlsl.load.rwtexture.dx10.frag.out | 36 ++-- Test/baseResults/hlsl.logical.binary.frag.out | 4 +- .../hlsl.logical.binary.vec.frag.out | 4 +- Test/baseResults/hlsl.logical.unary.frag.out | 4 +- Test/baseResults/hlsl.matType.frag.out | 14 +- Test/baseResults/hlsl.matpack-1.frag.out | 12 +- .../hlsl.matpack-pragma-global.frag.out | 6 +- Test/baseResults/hlsl.matpack-pragma.frag.out | 18 +- Test/baseResults/hlsl.matrixindex.frag.out | 6 +- Test/baseResults/hlsl.mintypes.frag.out | 4 +- Test/baseResults/hlsl.mip.operator.frag.out | 4 +- Test/baseResults/hlsl.mul-truncate.frag.out | 16 +- .../hlsl.multiDescriptorSet.frag.out | 26 +-- Test/baseResults/hlsl.multiEntry.vert.out | 2 +- Test/baseResults/hlsl.multiReturn.frag.out | 6 +- Test/baseResults/hlsl.multiView.frag.out | 2 +- .../hlsl.nested-runtimeArray.frag.out | 6 +- .../hlsl.noSemantic.functionality1.comp.out | 10 +- .../baseResults/hlsl.opaque-type-bug.frag.out | 2 +- Test/baseResults/hlsl.params.default.frag.out | 4 +- .../hlsl.partialFlattenLocal.vert.out | 2 +- .../hlsl.partialFlattenMixed.vert.out | 4 +- Test/baseResults/hlsl.pp.line2.frag.out | 6 +- Test/baseResults/hlsl.pp.line3.frag.out | 6 +- Test/baseResults/hlsl.pp.line4.frag.out | 6 +- Test/baseResults/hlsl.pp.vert.out | 4 +- Test/baseResults/hlsl.preprocessor.frag.out | 4 +- Test/baseResults/hlsl.promote.atomic.frag.out | 2 +- Test/baseResults/hlsl.promote.binary.frag.out | 4 +- Test/baseResults/hlsl.promotions.frag.out | 4 +- Test/baseResults/hlsl.rw.atomics.frag.out | 42 ++--- Test/baseResults/hlsl.rw.bracket.frag.out | 36 ++-- Test/baseResults/hlsl.rw.register.frag.out | 4 +- .../hlsl.rw.scalar.bracket.frag.out | 36 ++-- Test/baseResults/hlsl.rw.swizzle.frag.out | 4 +- .../baseResults/hlsl.rw.vec2.bracket.frag.out | 36 ++-- .../hlsl.sample.array.dx10.frag.out | 22 +-- .../hlsl.sample.basic.dx10.frag.out | 32 ++-- Test/baseResults/hlsl.sample.dx9.frag.out | 10 +- Test/baseResults/hlsl.sample.dx9.vert.out | 4 +- .../hlsl.sample.offset.dx10.frag.out | 28 +-- .../hlsl.sample.offsetarray.dx10.frag.out | 16 +- .../hlsl.sample.sub-vec4.dx10.frag.out | 10 +- .../hlsl.samplebias.array.dx10.frag.out | 22 +-- .../hlsl.samplebias.basic.dx10.frag.out | 28 +-- .../hlsl.samplebias.offset.dx10.frag.out | 28 +-- .../hlsl.samplebias.offsetarray.dx10.frag.out | 16 +- .../hlsl.samplecmp.array.dx10.frag.out | 44 ++--- .../hlsl.samplecmp.basic.dx10.frag.out | 44 ++--- .../hlsl.samplecmp.dualmode.frag.out | 8 +- .../hlsl.samplecmp.offset.dx10.frag.out | 44 ++--- .../hlsl.samplecmp.offsetarray.dx10.frag.out | 44 ++--- ...lsl.samplecmplevelzero.array.dx10.frag.out | 44 ++--- ...lsl.samplecmplevelzero.basic.dx10.frag.out | 44 ++--- ...sl.samplecmplevelzero.offset.dx10.frag.out | 44 ++--- ...mplecmplevelzero.offsetarray.dx10.frag.out | 44 ++--- .../hlsl.samplegrad.array.dx10.frag.out | 22 +-- .../hlsl.samplegrad.basic.dx10.frag.out | 28 +-- .../hlsl.samplegrad.basic.dx10.vert.out | 28 +-- .../hlsl.samplegrad.offset.dx10.frag.out | 28 +-- .../hlsl.samplegrad.offsetarray.dx10.frag.out | 22 +-- .../hlsl.samplelevel.array.dx10.frag.out | 22 +-- .../hlsl.samplelevel.basic.dx10.frag.out | 30 +-- .../hlsl.samplelevel.basic.dx10.vert.out | 28 +-- .../hlsl.samplelevel.offset.dx10.frag.out | 28 +-- ...hlsl.samplelevel.offsetarray.dx10.frag.out | 16 +- Test/baseResults/hlsl.snorm.uav.comp.out | 12 +- ...sl.store.rwbyteaddressbuffer.type.comp.out | 4 +- Test/baseResults/hlsl.stringtoken.frag.out | 6 +- Test/baseResults/hlsl.struct.frag.out | 6 +- .../baseResults/hlsl.structIoFourWay.frag.out | 8 +- .../hlsl.structarray.flatten.frag.out | 32 ++-- .../hlsl.structbuffer.append.fn.frag.out | 18 +- .../hlsl.structbuffer.append.frag.out | 14 +- .../hlsl.structbuffer.atomics.frag.out | 4 +- .../hlsl.structbuffer.byte.frag.out | 4 +- .../hlsl.structbuffer.coherent.frag.out | 8 +- .../hlsl.structbuffer.floatidx.comp.out | 14 +- .../baseResults/hlsl.structbuffer.fn.frag.out | 18 +- .../hlsl.structbuffer.fn2.comp.out | 6 +- Test/baseResults/hlsl.structbuffer.frag.out | 8 +- ...hlsl.structbuffer.incdec.frag.hlslfun1.out | 18 +- .../hlsl.structbuffer.incdec.frag.out | 14 +- .../baseResults/hlsl.structbuffer.rw.frag.out | 8 +- .../hlsl.structbuffer.rwbyte.frag.out | 4 +- .../hlsl.structbuffer.rwbyte2.comp.out | 8 +- Test/baseResults/hlsl.structcopy.comp.out | 10 +- .../hlsl.structcopylogical.comp.out | 10 +- Test/baseResults/hlsl.subpass.frag.out | 50 ++--- Test/baseResults/hlsl.texture.struct.frag.out | 14 +- .../baseResults/hlsl.texture.subvec4.frag.out | 18 +- Test/baseResults/hlsl.texturebuffer.frag.out | 8 +- Test/baseResults/hlsl.tx.bracket.frag.out | 36 ++-- Test/baseResults/hlsl.tx.overload.frag.out | 8 +- Test/baseResults/hlsl.typeGraphCopy.vert.out | 4 +- Test/baseResults/hlsl.w-recip.frag.out | 4 +- Test/baseResults/hlsl.w-recip2.frag.out | 4 +- Test/baseResults/hlsl.wavebroadcast.comp.out | 4 +- Test/baseResults/hlsl.waveprefix.comp.out | 4 +- Test/baseResults/hlsl.wavequad.comp.out | 4 +- Test/baseResults/hlsl.wavequery.comp.out | 4 +- Test/baseResults/hlsl.wavereduction.comp.out | 4 +- Test/baseResults/hlsl.wavevote.comp.out | 4 +- Test/baseResults/hlsl.y-negate-1.vert.out | 4 +- Test/baseResults/hlsl.y-negate-2.vert.out | 4 +- Test/baseResults/hlsl.y-negate-3.vert.out | 4 +- .../iomap.blockOutVariableIn.2.vert.out | 4 +- .../iomap.blockOutVariableIn.vert.out | 2 +- Test/baseResults/iomap.crossStage.2.vert.out | 32 ++-- Test/baseResults/iomap.crossStage.vert.out | 28 +-- Test/baseResults/iomap.crossStage.vk.vert.out | 32 ++-- .../iomap.variableOutBlockIn.2.vert.out | 4 +- .../iomap.variableOutBlockIn.vert.out | 2 +- ...link.vk.inconsistentGLPerVertex.0.vert.out | 2 +- .../link.vk.matchingPC.0.0.frag.out | 2 +- .../link.vk.multiBlocksValid.0.0.vert.out | 24 +-- .../link.vk.multiBlocksValid.1.0.geom.out | 20 +- .../link.vk.pcNamingValid.0.0.vert.out | 8 +- Test/baseResults/link1.vk.frag.out | 10 +- ...onvertUToAccelerationStructureKHR.comp.out | 2 +- Test/baseResults/rayQuery-allOps.comp.out | 10 +- Test/baseResults/rayQuery-allOps.frag.out | 10 +- Test/baseResults/rayQuery-allOps.rgen.out | 10 +- Test/baseResults/rayQuery-global.rgen.out | 2 +- Test/baseResults/rayQuery-initialize.rgen.out | 6 +- Test/baseResults/rayQuery-no-cse.rgen.out | 6 +- Test/baseResults/rayQuery-types.comp.out | 2 +- Test/baseResults/rayQuery.rgen.out | 4 +- ...emap.hlsl.sample.basic.everything.frag.out | 26 +-- .../remap.hlsl.sample.basic.none.frag.out | 32 ++-- .../remap.hlsl.sample.basic.strip.frag.out | 32 ++-- .../remap.uniformarray.none.frag.out | 2 +- .../spv.1.3.8bitstorage-ssbo.vert.out | 4 +- .../spv.1.3.8bitstorage-ubo.vert.out | 4 +- Test/baseResults/spv.1.3.coopmat.comp.out | 4 +- .../spv.1.4.OpCopyLogical.comp.out | 20 +- .../spv.1.4.OpCopyLogical.funcall.frag.out | 6 +- .../spv.1.4.OpCopyLogicalBool.comp.out | 20 +- .../baseResults/spv.1.4.OpEntryPoint.frag.out | 10 +- ...spv.1.4.OpEntryPoint.opaqueParams.vert.out | 6 +- .../spv.1.4.constructComposite.comp.out | 4 +- .../spv.1.4.funcall.array.frag.out | 4 +- Test/baseResults/spv.1.4.image.frag.out | 12 +- ...4.load.bool.array.interface.block.frag.out | 8 +- .../spv.1.4.sparseTexture.frag.out | 12 +- Test/baseResults/spv.1.4.texture.frag.out | 6 +- .../spv.1.6.conditionalDiscard.frag.out | 2 +- ...spv.1.6.helperInvocation.memmodel.frag.out | 4 +- .../spv.1.6.samplerBuffer.frag.out | 2 +- Test/baseResults/spv.1.6.separate.frag.out | 8 +- .../baseResults/spv.1.6.specConstant.comp.out | 4 +- Test/baseResults/spv.130.frag.out | 30 +-- Test/baseResults/spv.140.frag.out | 24 +-- Test/baseResults/spv.150.geom.out | 12 +- Test/baseResults/spv.150.vert.out | 6 +- .../baseResults/spv.16bitstorage-int.frag.out | 24 +-- .../spv.16bitstorage-uint.frag.out | 24 +-- Test/baseResults/spv.16bitstorage.frag.out | 24 +-- Test/baseResults/spv.16bitxfb.vert.out | 8 +- Test/baseResults/spv.300BuiltIns.vert.out | 4 +- Test/baseResults/spv.300layout.vert.out | 26 +-- Test/baseResults/spv.300layoutp.vert.out | 26 +-- Test/baseResults/spv.310.comp.out | 12 +- .../spv.320.meshShaderUserDefined.mesh.out | 2 +- Test/baseResults/spv.330.geom.out | 4 +- Test/baseResults/spv.400.frag.nanclamp.out | 10 +- Test/baseResults/spv.400.frag.out | 10 +- Test/baseResults/spv.400.tesc.out | 8 +- Test/baseResults/spv.400.tese.out | 8 +- Test/baseResults/spv.420.geom.out | 8 +- Test/baseResults/spv.430.frag.out | 4 +- Test/baseResults/spv.430.vert.out | 20 +- Test/baseResults/spv.450.geom.out | 4 +- Test/baseResults/spv.450.noRedecl.tesc.out | 2 +- Test/baseResults/spv.450.tesc.out | 10 +- Test/baseResults/spv.460.frag.out | 4 +- Test/baseResults/spv.460.subgroupEXT.mesh.out | 12 +- Test/baseResults/spv.460.subgroupEXT.task.out | 8 +- .../spv.8bit-16bit-construction.frag.out | 4 +- Test/baseResults/spv.8bitstorage-int.frag.out | 24 +-- .../baseResults/spv.8bitstorage-ssbo.vert.out | 4 +- Test/baseResults/spv.8bitstorage-ubo.vert.out | 4 +- .../baseResults/spv.8bitstorage-uint.frag.out | 24 +-- Test/baseResults/spv.ARMCoreBuiltIns.frag.out | 10 +- Test/baseResults/spv.ARMCoreBuiltIns.vert.out | 4 +- Test/baseResults/spv.AofA.frag.out | 4 +- .../spv.ClosestHitShader.rchit.out | 2 +- .../spv.ClosestHitShaderMotion.rchit.out | 2 +- .../spv.GeometryShaderPassthrough.geom.out | 2 +- Test/baseResults/spv.MissShader.rmiss.out | 2 +- .../spv.MissShaderMotion.rmiss.out | 2 +- Test/baseResults/spv.OVR_multiview.vert.out | 2 +- Test/baseResults/spv.RayConstants.rgen.out | 2 +- Test/baseResults/spv.RayGenShader.rgen.out | 6 +- Test/baseResults/spv.RayGenShader11.rgen.out | 4 +- .../spv.RayGenShaderArray.rgen.out | 6 +- .../spv.RayGenShaderMotion.rgen.out | 2 +- ...pMemoryExplicitLayout.16BitAccess.comp.out | 2 +- ...upMemoryExplicitLayout.8BitAccess.comp.out | 2 +- ...upMemoryExplicitLayout.MultiBlock.comp.out | 8 +- ...pMemoryExplicitLayout.SingleBlock.comp.out | 2 +- ...kgroupMemoryExplicitLayout.scalar.comp.out | 2 +- ...kgroupMemoryExplicitLayout.std140.comp.out | 2 +- ...kgroupMemoryExplicitLayout.std430.comp.out | 2 +- Test/baseResults/spv.aggOps.frag.out | 10 +- .../spv.arbPostDepthCoverage.frag.out | 2 +- Test/baseResults/spv.atomiAddEXT.task.out | 8 +- Test/baseResults/spv.atomic.comp.out | 12 +- .../spv.atomicAdd.bufferReference.comp.out | 10 +- Test/baseResults/spv.atomicFloat.comp.out | 20 +- Test/baseResults/spv.atomicInt64.comp.out | 4 +- .../baseResults/spv.atomicStoreInt64.comp.out | 8 +- Test/baseResults/spv.bool.vert.out | 6 +- Test/baseResults/spv.boolInBlock.frag.out | 8 +- Test/baseResults/spv.branch-return.vert.out | 2 +- .../spv.buffer.autoassign.frag.out | 12 +- Test/baseResults/spv.bufferhandle1.frag.out | 6 +- Test/baseResults/spv.bufferhandle10.frag.out | 6 +- Test/baseResults/spv.bufferhandle11.frag.out | 8 +- Test/baseResults/spv.bufferhandle12.frag.out | 16 +- Test/baseResults/spv.bufferhandle13.frag.out | 10 +- Test/baseResults/spv.bufferhandle14.frag.out | 8 +- Test/baseResults/spv.bufferhandle15.frag.out | 14 +- Test/baseResults/spv.bufferhandle16.frag.out | 2 +- Test/baseResults/spv.bufferhandle18.frag.out | 4 +- Test/baseResults/spv.bufferhandle2.frag.out | 6 +- Test/baseResults/spv.bufferhandle3.frag.out | 14 +- Test/baseResults/spv.bufferhandle4.frag.out | 12 +- Test/baseResults/spv.bufferhandle5.frag.out | 6 +- Test/baseResults/spv.bufferhandle6.frag.out | 10 +- Test/baseResults/spv.bufferhandle7.frag.out | 12 +- Test/baseResults/spv.bufferhandle8.frag.out | 16 +- Test/baseResults/spv.bufferhandle9.frag.out | 6 +- .../spv.bufferhandleUvec2.frag.out | 6 +- Test/baseResults/spv.builtInXFB.vert.out | 6 +- .../spv.builtin.ShadingRateEXT.frag.out | 2 +- .../spv.computeShaderDerivatives.comp.out | 4 +- .../spv.computeShaderDerivatives2.comp.out | 4 +- .../spv.conditionalDemote.frag.out | 2 +- .../spv.conditionalDiscard.frag.out | 2 +- .../spv.constructComposite.comp.out | 4 +- Test/baseResults/spv.coopmat.comp.out | 10 +- Test/baseResults/spv.coopmatKHR.comp.out | 10 +- .../spv.coopmat_armlayout.comp.out | 10 +- Test/baseResults/spv.dataOutIndirect.frag.out | 4 +- Test/baseResults/spv.debugInfo.1.1.frag.out | 6 +- Test/baseResults/spv.debugInfo.frag.out | 6 +- .../spv.debuginfo.bufferref.glsl.frag.out | 8 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 14 +- Test/baseResults/spv.debuginfo.glsl.frag.out | 14 +- Test/baseResults/spv.debuginfo.glsl.geom.out | 12 +- Test/baseResults/spv.debuginfo.glsl.tesc.out | 18 +- Test/baseResults/spv.debuginfo.glsl.tese.out | 14 +- Test/baseResults/spv.debuginfo.glsl.vert.out | 10 +- Test/baseResults/spv.debuginfo.hlsl.comp.out | 16 +- Test/baseResults/spv.debuginfo.hlsl.frag.out | 22 +-- Test/baseResults/spv.debuginfo.hlsl.geom.out | 8 +- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 16 +- Test/baseResults/spv.debuginfo.hlsl.tese.out | 18 +- Test/baseResults/spv.debuginfo.hlsl.vert.out | 8 +- .../spv.debuginfo.include.glsl.frag.out | 4 +- .../spv.debuginfo.rt_types.glsl.rgen.out | 4 +- Test/baseResults/spv.deepRvalue.frag.out | 2 +- Test/baseResults/spv.deviceGroup.frag.out | 2 +- Test/baseResults/spv.double.comp.out | 8 +- .../spv.expect_assume.assumeEXT.comp.out | 4 +- .../spv.expect_assume.expectEXT.comp.out | 4 +- ....expect_assume.expectEXT.exttypes.comp.out | 4 +- Test/baseResults/spv.explicittypes.frag.out | 8 +- Test/baseResults/spv.ext.AccelDecl.frag.out | 2 +- .../spv.ext.ClosestHitShader.rchit.out | 2 +- ...pv.ext.ClosestHitShader_Subgroup.rchit.out | 2 +- Test/baseResults/spv.ext.MissShader.rmiss.out | 4 +- .../baseResults/spv.ext.RayConstants.rgen.out | 2 +- .../spv.ext.RayGenSBTlayout.rgen.out | 2 +- .../spv.ext.RayGenSBTlayout140.rgen.out | 2 +- .../spv.ext.RayGenSBTlayout430.rgen.out | 2 +- .../spv.ext.RayGenSBTlayoutscalar.rgen.out | 2 +- .../baseResults/spv.ext.RayGenShader.rgen.out | 8 +- .../spv.ext.RayGenShader11.rgen.out | 4 +- .../spv.ext.RayGenShaderArray.rgen.out | 6 +- Test/baseResults/spv.ext.World3x4.rahit.out | 2 +- .../spv.ext.meshShaderBuiltins.mesh.out | 12 +- ...ext.meshShaderBuiltinsShadingRate.mesh.out | 14 +- .../spv.ext.meshShaderRedeclBuiltins.mesh.out | 12 +- .../spv.ext.meshShaderTaskMem.mesh.out | 4 +- .../spv.ext.meshShaderUserDefined.mesh.out | 2 +- .../spv.ext.meshTaskShader.task.out | 8 +- .../spv.ext.textureShadowLod.frag.out | 6 +- Test/baseResults/spv.float16.frag.out | 16 +- Test/baseResults/spv.float16Fetch.frag.out | 88 ++++----- .../baseResults/spv.float16NoRelaxed.vert.out | 4 +- Test/baseResults/spv.float32.frag.out | 8 +- Test/baseResults/spv.float64.frag.out | 8 +- Test/baseResults/spv.floatFetch.frag.out | 88 ++++----- Test/baseResults/spv.forwardFun.frag.out | 2 +- .../spv.fragmentDensity-es.frag.out | 4 +- Test/baseResults/spv.fragmentDensity.frag.out | 4 +- Test/baseResults/spv.fsi.frag.out | 8 +- Test/baseResults/spv.funcall.array.frag.out | 4 +- .../spv.functionNestedOpaque.vert.out | 2 +- .../spv.glsl.register.autoassign.frag.out | 34 ++-- .../spv.glsl.register.noautoassign.frag.out | 34 ++-- Test/baseResults/spv.hlslOffsets.vert.out | 4 +- Test/baseResults/spv.image.frag.out | 34 ++-- Test/baseResults/spv.imageAtomic64.comp.out | 6 +- Test/baseResults/spv.imageAtomic64.frag.out | 26 +-- .../spv.imageLoadStoreLod.frag.out | 32 ++-- Test/baseResults/spv.int16.amd.frag.out | 8 +- Test/baseResults/spv.int16.frag.out | 8 +- Test/baseResults/spv.int32.frag.out | 8 +- Test/baseResults/spv.int64.frag.out | 8 +- Test/baseResults/spv.int8.frag.out | 8 +- Test/baseResults/spv.intcoopmat.comp.out | 10 +- ...spv.intrinsicsInteractWithCoopMat.comp.out | 4 +- .../spv.intrinsicsSpirvDecorateId.comp.out | 8 +- .../spv.intrinsicsSpirvType.rgen.out | 2 +- Test/baseResults/spv.invariantAll.vert.out | 12 +- Test/baseResults/spv.layoutNested.vert.out | 50 ++--- ...v.load.bool.array.interface.block.frag.out | 8 +- Test/baseResults/spv.localAggregates.frag.out | 2 +- Test/baseResults/spv.matFun.vert.out | 10 +- Test/baseResults/spv.memoryQualifier.frag.out | 26 +-- .../spv.memoryScopeSemantics.comp.out | 34 ++-- .../spv.meshShaderBuiltins.mesh.out | 22 +-- .../spv.meshShaderPerViewBuiltins.mesh.out | 22 +-- .../spv.meshShaderPerViewUserDefined.mesh.out | 20 +- .../spv.meshShaderRedeclBuiltins.mesh.out | 12 +- ...v.meshShaderRedeclPerViewBuiltins.mesh.out | 14 +- .../spv.meshShaderSharedMem.mesh.out | 8 +- .../spv.meshShaderTaskMem.mesh.out | 10 +- .../spv.meshShaderUserDefined.mesh.out | 2 +- Test/baseResults/spv.meshTaskShader.task.out | 16 +- Test/baseResults/spv.multiStruct.comp.out | 20 +- .../spv.multiStructFuncall.frag.out | 6 +- Test/baseResults/spv.multiView.frag.out | 2 +- .../spv.multiple.var.same.const.frag.out | 21 +++ .../spv.multiviewPerViewAttributes.tesc.out | 4 +- .../spv.multiviewPerViewAttributes.vert.out | 2 +- Test/baseResults/spv.newTexture.frag.out | 36 ++-- Test/baseResults/spv.noBuiltInLoc.vert.out | 6 +- .../spv.noDeadDecorations.vert.out | 4 +- Test/baseResults/spv.nonuniform.frag.out | 28 +-- Test/baseResults/spv.nonuniform2.frag.out | 2 +- Test/baseResults/spv.nonuniform3.frag.out | 4 +- Test/baseResults/spv.nonuniform4.frag.out | 2 +- Test/baseResults/spv.nonuniform5.frag.out | 4 +- Test/baseResults/spv.nv.dmm-allops.comp.out | 6 +- Test/baseResults/spv.nv.dmm-allops.mesh.out | 6 +- Test/baseResults/spv.nv.dmm-allops.rahit.out | 6 +- Test/baseResults/spv.nv.dmm-allops.rchit.out | 6 +- Test/baseResults/spv.nv.dmm-allops.rgen.out | 6 +- .../spv.nv.hitobject-allops.rchit.out | 6 +- .../spv.nv.hitobject-allops.rgen.out | 6 +- .../spv.nv.hitobject-allops.rmiss.out | 6 +- Test/baseResults/spv.nvAtomicFp16Vec.frag.out | 60 +++--- Test/baseResults/spv.offsets.frag.out | 8 +- Test/baseResults/spv.paramMemory.420.frag.out | 16 +- Test/baseResults/spv.paramMemory.frag.out | 8 +- Test/baseResults/spv.perprimitiveNV.frag.out | 4 +- Test/baseResults/spv.pp.line.frag.out | 4 +- Test/baseResults/spv.precise.tesc.out | 4 +- Test/baseResults/spv.precise.tese.out | 2 +- Test/baseResults/spv.precision.frag.out | 4 +- Test/baseResults/spv.precisionArgs.frag.out | 2 +- .../spv.precisionNonESSamp.frag.out | 8 +- .../baseResults/spv.precisionTexture.frag.out | 12 +- Test/baseResults/spv.pushConstant.vert.out | 2 +- .../baseResults/spv.pushConstantAnon.vert.out | 2 +- Test/baseResults/spv.queryL.frag.out | 40 ++-- .../baseResults/spv.queueFamilyScope.comp.out | 4 +- Test/baseResults/spv.rankShift.comp.out | 4 +- .../spv.register.autoassign-2.frag.out | 6 +- .../spv.register.autoassign.frag.out | 34 ++-- ...spv.register.autoassign.rangetest.frag.out | 4 +- .../spv.register.noautoassign.frag.out | 34 ++-- .../baseResults/spv.register.subpass.frag.out | 6 +- Test/baseResults/spv.rw.autoassign.frag.out | 4 +- Test/baseResults/spv.sampleId.frag.out | 2 +- .../spv.sampledImageBlock.frag.out | 8 +- .../spv.samplerlessTextureFunctions.frag.out | 6 +- Test/baseResults/spv.scalarlayout.frag.out | 8 +- .../spv.scalarlayoutfloat16.frag.out | 4 +- Test/baseResults/spv.separate.frag.out | 76 ++++---- Test/baseResults/spv.set.vert.out | 6 +- Test/baseResults/spv.shaderBallot.comp.out | 4 +- Test/baseResults/spv.shaderBallotAMD.comp.out | 4 +- .../baseResults/spv.shaderDrawParams.vert.out | 6 +- .../spv.shaderFragMaskAMD.frag.out | 6 +- Test/baseResults/spv.shaderGroupVote.comp.out | 4 +- .../spv.shaderImageFootprint.frag.out | 12 +- Test/baseResults/spv.shadingRate.frag.out | 4 +- Test/baseResults/spv.smBuiltins.frag.out | 8 +- Test/baseResults/spv.smBuiltins.vert.out | 4 +- Test/baseResults/spv.sparseTexture.frag.out | 30 +-- .../spv.sparseTextureClamp.frag.out | 22 +-- Test/baseResults/spv.specConst.vert.out | 2 +- Test/baseResults/spv.specConstant.comp.out | 4 +- .../spv.specConstant.float16.comp.out | 4 +- .../spv.specConstant.int16.comp.out | 4 +- .../spv.specConstant.int8.comp.out | 4 +- .../spv.specConstantOp.float16.comp.out | 4 +- .../spv.specConstantOp.int16.comp.out | 4 +- .../spv.specConstantOp.int8.comp.out | 4 +- Test/baseResults/spv.specTexture.frag.out | 2 +- Test/baseResults/spv.ssbo.autoassign.frag.out | 12 +- Test/baseResults/spv.ssboAlias.frag.out | 14 +- .../spv.stereoViewRendering.tesc.out | 4 +- .../spv.stereoViewRendering.vert.out | 2 +- Test/baseResults/spv.storageBuffer.vert.out | 10 +- .../baseResults/spv.structAssignment.frag.out | 2 +- Test/baseResults/spv.structCopy.comp.out | 8 +- Test/baseResults/spv.structDeref.frag.out | 2 +- Test/baseResults/spv.structure.frag.out | 2 +- Test/baseResults/spv.subgroup.frag.out | 4 +- Test/baseResults/spv.subgroup.geom.out | 4 +- Test/baseResults/spv.subgroup.tesc.out | 4 +- Test/baseResults/spv.subgroup.tese.out | 4 +- Test/baseResults/spv.subgroup.vert.out | 4 +- .../spv.subgroupArithmetic.comp.out | 4 +- Test/baseResults/spv.subgroupBallot.comp.out | 4 +- Test/baseResults/spv.subgroupBasic.comp.out | 4 +- .../spv.subgroupClustered.comp.out | 4 +- ...v.subgroupExtendedTypesArithmetic.comp.out | 4 +- .../spv.subgroupExtendedTypesBallot.comp.out | 4 +- ...pv.subgroupExtendedTypesClustered.comp.out | 4 +- ....subgroupExtendedTypesPartitioned.comp.out | 4 +- .../spv.subgroupExtendedTypesQuad.comp.out | 4 +- .../spv.subgroupExtendedTypesRotate.comp.out | 8 +- .../spv.subgroupExtendedTypesShuffle.comp.out | 4 +- ...groupExtendedTypesShuffleRelative.comp.out | 4 +- .../spv.subgroupExtendedTypesVote.comp.out | 4 +- .../spv.subgroupPartitioned.comp.out | 4 +- Test/baseResults/spv.subgroupQuad.comp.out | 4 +- Test/baseResults/spv.subgroupRotate.comp.out | 8 +- Test/baseResults/spv.subgroupShuffle.comp.out | 4 +- .../spv.subgroupShuffleRelative.comp.out | 4 +- Test/baseResults/spv.subgroupSizeARB.frag.out | 2 +- Test/baseResults/spv.subgroupVote.comp.out | 4 +- Test/baseResults/spv.subpass.frag.out | 12 +- Test/baseResults/spv.switch.frag.out | 4 +- Test/baseResults/spv.test.frag.out | 4 +- Test/baseResults/spv.texture.frag.out | 12 +- .../spv.texture.sampler.transform.frag.out | 2 +- Test/baseResults/spv.texture.vert.out | 12 +- Test/baseResults/spv.textureBuffer.vert.out | 10 +- .../spv.textureGatherBiasLod.frag.out | 8 +- .../spv.tpipBlockMatchGatherSAD.frag.out | 16 +- .../spv.tpipBlockMatchGatherSSD.frag.out | 16 +- .../spv.tpipBlockMatchSAD.frag.out | 16 +- .../spv.tpipBlockMatchSSD.frag.out | 16 +- .../spv.tpipBlockMatchWindowSAD.frag.out | 18 +- .../spv.tpipBlockMatchWindowSSD.frag.out | 18 +- Test/baseResults/spv.tpipBoxFilter.frag.out | 10 +- .../spv.tpipSampleWeighted.frag.out | 12 +- .../spv.tpipTextureArrays.frag.out | 10 +- Test/baseResults/spv.uint.frag.out | 2 +- Test/baseResults/spv.uniformArray.frag.out | 2 +- .../spv.uniformInitializer.frag.out | 2 +- .../spv.uniformInitializerStruct.frag.out | 2 +- .../spv.variableArrayIndex.frag.out | 2 +- Test/baseResults/spv.varyingArray.frag.out | 2 +- .../spv.varyingArrayIndirect.frag.out | 2 +- Test/baseResults/spv.viewportArray2.tesc.out | 2 +- Test/baseResults/spv.volatileAtomic.comp.out | 4 +- Test/baseResults/spv.vulkan110.int16.frag.out | 8 +- .../spv.vulkan110.storageBuffer.vert.out | 10 +- Test/baseResults/spv.xfb.vert.out | 8 +- Test/baseResults/spv.xfb2.vert.out | 8 +- Test/baseResults/spv.xfb3.vert.out | 8 +- ...xfbOffsetOnBlockMembersAssignment.vert.out | 4 +- ...fbOffsetOnStructMembersAssignment.vert.out | 6 +- ...rlapOffsetCheckWithBlockAndMember.vert.out | 4 +- .../spv.xfbStrideJustOnce.vert.out | 2 +- .../baseResults/vk.relaxed.changeSet.vert.out | 10 +- Test/baseResults/vk.relaxed.frag.out | 32 ++-- Test/baseResults/vk.relaxed.link1.frag.out | 8 +- .../vk.relaxed.stagelink.0.0.vert.out | 176 +++++++++--------- .../baseResults/vk.relaxed.stagelink.vert.out | 16 +- Test/spv.multiple.var.same.const.frag | 6 + gtests/Spv.FromFile.cpp | 1 + 575 files changed, 3387 insertions(+), 3319 deletions(-) create mode 100644 Test/baseResults/spv.multiple.var.same.const.frag.out create mode 100644 Test/spv.multiple.var.same.const.frag diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index d5c0370492..738c916919 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -1979,7 +1979,7 @@ void Builder::addDecoration(Id id, Decoration decoration, int num) if (num >= 0) dec->addImmediateOperand(num); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addDecoration(Id id, Decoration decoration, const char* s) @@ -1993,7 +1993,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const char* s) dec->addImmediateOperand(decoration); dec->addStringOperand(s); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addDecoration(Id id, Decoration decoration, const std::vector& literals) @@ -2008,7 +2008,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vectoraddImmediateOperand(literal); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addDecoration(Id id, Decoration decoration, const std::vector& strings) @@ -2023,7 +2023,7 @@ void Builder::addDecoration(Id id, Decoration decoration, const std::vectoraddStringOperand(string); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addLinkageDecoration(Id id, const char* name, spv::LinkageType linkType) { @@ -2034,7 +2034,7 @@ void Builder::addLinkageDecoration(Id id, const char* name, spv::LinkageType lin dec->addStringOperand(name); dec->addImmediateOperand(linkType); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) @@ -2048,7 +2048,7 @@ void Builder::addDecorationId(Id id, Decoration decoration, Id idDecoration) dec->addImmediateOperand(decoration); dec->addIdOperand(idDecoration); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addDecorationId(Id id, Decoration decoration, const std::vector& operandIds) @@ -2064,7 +2064,7 @@ void Builder::addDecorationId(Id id, Decoration decoration, const std::vectoraddIdOperand(operandId); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, int num) @@ -2080,7 +2080,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat if (num >= 0) dec->addImmediateOperand(num); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const char *s) @@ -2095,7 +2095,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat dec->addImmediateOperand(decoration); dec->addStringOperand(s); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& literals) @@ -2111,7 +2111,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat for (auto literal : literals) dec->addImmediateOperand(literal); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decoration, const std::vector& strings) @@ -2127,7 +2127,7 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat for (auto string : strings) dec->addStringOperand(string); - decorations.push_back(std::unique_ptr(dec)); + decorations.insert(std::unique_ptr(dec)); } void Builder::addInstruction(std::unique_ptr inst) { @@ -4330,11 +4330,10 @@ void Builder::dumpSourceInstructions(std::vector& out) const dumpSourceInstructions(iItr->first, *iItr->second, out); } -void Builder::dumpInstructions(std::vector& out, - const std::vector >& instructions) const +template void Builder::dumpInstructions(std::vector& out, const Range& instructions) const { - for (int i = 0; i < (int)instructions.size(); ++i) { - instructions[i]->dump(out); + for (const auto& inst : instructions) { + inst->dump(out); } } @@ -4347,4 +4346,40 @@ void Builder::dumpModuleProcesses(std::vector& out) const } } +bool Builder::DecorationInstructionLessThan::operator()(const std::unique_ptr& lhs, + const std::unique_ptr& rhs) const +{ + // Order by the id to which the decoration applies first. This is more intuitive. + assert(lhs->isIdOperand(0) && rhs->isIdOperand(0)); + if (lhs->getIdOperand(0) != rhs->getIdOperand(0)) { + return lhs->getIdOperand(0) < rhs->getIdOperand(0); + } + + if (lhs->getOpCode() != rhs->getOpCode()) + return lhs->getOpCode() < rhs->getOpCode(); + + // Now compare the operands. + int minSize = std::min(lhs->getNumOperands(), rhs->getNumOperands()); + for (int i = 1; i < minSize; ++i) { + if (lhs->isIdOperand(i) != rhs->isIdOperand(i)) { + return lhs->isIdOperand(i) < rhs->isIdOperand(i); + } + + if (lhs->isIdOperand(i)) { + if (lhs->getIdOperand(i) != rhs->getIdOperand(i)) { + return lhs->getIdOperand(i) < rhs->getIdOperand(i); + } + } else { + if (lhs->getImmediateOperand(i) != rhs->getImmediateOperand(i)) { + return lhs->getImmediateOperand(i) < rhs->getImmediateOperand(i); + } + } + } + + if (lhs->getNumOperands() != rhs->getNumOperands()) + return lhs->getNumOperands() < rhs->getNumOperands(); + + // In this case they are equal. + return false; +} } // end spv namespace diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index 08057f4392..ab4d5abe30 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -890,10 +890,13 @@ class Builder { void createSelectionMerge(Block* mergeBlock, unsigned int control); void dumpSourceInstructions(std::vector&) const; void dumpSourceInstructions(const spv::Id fileId, const std::string& text, std::vector&) const; - void dumpInstructions(std::vector&, const std::vector >&) const; + template void dumpInstructions(std::vector& out, const Range& instructions) const; void dumpModuleProcesses(std::vector&) const; spv::MemoryAccessMask sanitizeMemoryAccessForStorageClass(spv::MemoryAccessMask memoryAccess, StorageClass sc) const; + struct DecorationInstructionLessThan { + bool operator()(const std::unique_ptr& lhs, const std::unique_ptr& rhs) const; + }; unsigned int spvVersion; // the version of SPIR-V to emit in the header SourceLanguage sourceLang; @@ -950,7 +953,7 @@ class Builder { std::vector > entryPoints; std::vector > executionModes; std::vector > names; - std::vector > decorations; + std::set, DecorationInstructionLessThan> decorations; std::vector > constantsTypesGlobals; std::vector > externals; std::vector > functions; diff --git a/SPIRV/SpvPostProcess.cpp b/SPIRV/SpvPostProcess.cpp index 5b3fbb565d..e35ab71fe7 100644 --- a/SPIRV/SpvPostProcess.cpp +++ b/SPIRV/SpvPostProcess.cpp @@ -387,12 +387,14 @@ void Builder::postProcessCFG() } // Remove unneeded decorations, for unreachable instructions - decorations.erase(std::remove_if(decorations.begin(), decorations.end(), - [&unreachableDefinitions](std::unique_ptr& I) -> bool { - Id decoration_id = I.get()->getIdOperand(0); - return unreachableDefinitions.count(decoration_id) != 0; - }), - decorations.end()); + for (auto decorationIter = decorations.begin(); decorationIter != decorations.end();) { + Id decorationId = (*decorationIter)->getIdOperand(0); + if (unreachableDefinitions.count(decorationId) != 0) { + decorationIter = decorations.erase(decorationIter); + } else { + ++decorationIter; + } + } } // comment in header diff --git a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out index 100f6d7132..1e6521e602 100644 --- a/Test/baseLegalResults/hlsl.aliasOpaque.frag.out +++ b/Test/baseLegalResults/hlsl.aliasOpaque.frag.out @@ -13,10 +13,10 @@ hlsl.aliasOpaque.frag Name 47 "gss" Name 51 "gtex" Name 62 "@entryPointOutput" - Decorate 47(gss) DescriptorSet 0 Decorate 47(gss) Binding 0 - Decorate 51(gtex) DescriptorSet 0 + Decorate 47(gss) DescriptorSet 0 Decorate 51(gtex) Binding 2 + Decorate 51(gtex) DescriptorSet 0 Decorate 62(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out index be1637ff61..3a839db9d6 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaque.frag.out +++ b/Test/baseLegalResults/hlsl.flattenOpaque.frag.out @@ -15,14 +15,14 @@ hlsl.flattenOpaque.frag Name 97 "s2.s2D" Name 100 "s2.tex" Name 120 "@entryPointOutput" - Decorate 38(tex) DescriptorSet 0 Decorate 38(tex) Binding 0 - Decorate 82(s.s2D) DescriptorSet 0 + Decorate 38(tex) DescriptorSet 0 Decorate 82(s.s2D) Binding 1 - Decorate 97(s2.s2D) DescriptorSet 0 + Decorate 82(s.s2D) DescriptorSet 0 Decorate 97(s2.s2D) Binding 2 - Decorate 100(s2.tex) DescriptorSet 0 + Decorate 97(s2.s2D) DescriptorSet 0 Decorate 100(s2.tex) Binding 3 + Decorate 100(s2.tex) DescriptorSet 0 Decorate 120(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out index 18d76949be..5aa5fdc2b9 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out +++ b/Test/baseLegalResults/hlsl.flattenOpaqueInit.vert.out @@ -12,10 +12,10 @@ hlsl.flattenOpaqueInit.vert Name 43 "g_tInputTexture_sampler" Name 47 "g_tInputTexture" Name 80 "@entryPointOutput" - Decorate 43(g_tInputTexture_sampler) DescriptorSet 0 Decorate 43(g_tInputTexture_sampler) Binding 0 - Decorate 47(g_tInputTexture) DescriptorSet 0 + Decorate 43(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 + Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 80(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out index 914d9b5dfc..60e715165e 100644 --- a/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out +++ b/Test/baseLegalResults/hlsl.flattenOpaqueInitMix.vert.out @@ -12,10 +12,10 @@ hlsl.flattenOpaqueInitMix.vert Name 44 "g_tInputTexture_sampler" Name 47 "g_tInputTexture" Name 57 "@entryPointOutput" - Decorate 44(g_tInputTexture_sampler) DescriptorSet 0 Decorate 44(g_tInputTexture_sampler) Binding 0 - Decorate 47(g_tInputTexture) DescriptorSet 0 + Decorate 44(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 + Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 57(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseLegalResults/hlsl.flattenSubset.frag.out b/Test/baseLegalResults/hlsl.flattenSubset.frag.out index 2be41f04db..92c62cf08f 100644 --- a/Test/baseLegalResults/hlsl.flattenSubset.frag.out +++ b/Test/baseLegalResults/hlsl.flattenSubset.frag.out @@ -13,10 +13,10 @@ hlsl.flattenSubset.frag Name 21 "samp" Name 33 "tex" Name 50 "@entryPointOutput" - Decorate 21(samp) DescriptorSet 0 Decorate 21(samp) Binding 0 - Decorate 33(tex) DescriptorSet 0 + Decorate 21(samp) DescriptorSet 0 Decorate 33(tex) Binding 1 + Decorate 33(tex) DescriptorSet 0 Decorate 50(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/glsl.autosampledtextures.frag.out b/Test/baseResults/glsl.autosampledtextures.frag.out index cbbb2021f3..522cc4adbe 100644 --- a/Test/baseResults/glsl.autosampledtextures.frag.out +++ b/Test/baseResults/glsl.autosampledtextures.frag.out @@ -14,8 +14,8 @@ glsl.autosampledtextures.frag Name 13 "u_Tex" Name 17 "in_UV" Name 21 "out_Color" - Decorate 13(u_Tex) DescriptorSet 0 Decorate 13(u_Tex) Binding 0 + Decorate 13(u_Tex) DescriptorSet 0 Decorate 17(in_UV) Location 0 Decorate 21(out_Color) Location 0 2: TypeVoid diff --git a/Test/baseResults/glsl.entryPointRename.vert.bad.out b/Test/baseResults/glsl.entryPointRename.vert.bad.out index ae5de6e354..d46ef59a3c 100644 --- a/Test/baseResults/glsl.entryPointRename.vert.bad.out +++ b/Test/baseResults/glsl.entryPointRename.vert.bad.out @@ -17,11 +17,11 @@ ERROR: Source entry point must be "main" MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/glsl.entryPointRename.vert.out b/Test/baseResults/glsl.entryPointRename.vert.out index bc142a58be..87ddf2a0d1 100644 --- a/Test/baseResults/glsl.entryPointRename.vert.out +++ b/Test/baseResults/glsl.entryPointRename.vert.out @@ -15,11 +15,11 @@ glsl.entryPointRename.vert MemberName 11(gl_PerVertex) 2 "gl_ClipDistance" MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.aliasOpaque.frag.out b/Test/baseResults/hlsl.aliasOpaque.frag.out index 7bea691745..af6d18ba4a 100644 --- a/Test/baseResults/hlsl.aliasOpaque.frag.out +++ b/Test/baseResults/hlsl.aliasOpaque.frag.out @@ -166,12 +166,12 @@ gl_FragCoord origin is upper left Name 51 "gtex" Name 56 "param" Name 62 "@entryPointOutput" - Decorate 44(gss2) DescriptorSet 0 Decorate 44(gss2) Binding 1 - Decorate 47(gss) DescriptorSet 0 + Decorate 44(gss2) DescriptorSet 0 Decorate 47(gss) Binding 0 - Decorate 51(gtex) DescriptorSet 0 + Decorate 47(gss) DescriptorSet 0 Decorate 51(gtex) Binding 2 + Decorate 51(gtex) DescriptorSet 0 Decorate 62(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.amend.frag.out b/Test/baseResults/hlsl.amend.frag.out index b8ac133c00..89b0c9480e 100644 --- a/Test/baseResults/hlsl.amend.frag.out +++ b/Test/baseResults/hlsl.amend.frag.out @@ -182,14 +182,14 @@ gl_FragCoord origin is upper left MemberName 20($Global) 3 "d" MemberName 20($Global) 4 "e" Name 22 "" + Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 16 MemberDecorate 20($Global) 2 Offset 32 MemberDecorate 20($Global) 3 Offset 44 MemberDecorate 20($Global) 4 Offset 48 - Decorate 20($Global) Block - Decorate 22 DescriptorSet 0 Decorate 22 Binding 0 + Decorate 22 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 14: TypeFloat 32 diff --git a/Test/baseResults/hlsl.array.flatten.frag.out b/Test/baseResults/hlsl.array.flatten.frag.out index 264a716c2e..e225f196a7 100644 --- a/Test/baseResults/hlsl.array.flatten.frag.out +++ b/Test/baseResults/hlsl.array.flatten.frag.out @@ -392,44 +392,44 @@ gl_FragCoord origin is upper left Name 140 "g_samp_explicit[0]" Name 141 "g_samp_explicit[1]" Name 142 "g_samp_explicit[2]" - Decorate 42(g_tex[1]) DescriptorSet 0 Decorate 42(g_tex[1]) Binding 4 - Decorate 45(g_samp[1]) DescriptorSet 0 + Decorate 42(g_tex[1]) DescriptorSet 0 Decorate 45(g_samp[1]) Binding 10 - Decorate 65(g_samp[0]) DescriptorSet 0 + Decorate 45(g_samp[1]) DescriptorSet 0 Decorate 65(g_samp[0]) Binding 9 - Decorate 70(g_samp[2]) DescriptorSet 0 + Decorate 65(g_samp[0]) DescriptorSet 0 Decorate 70(g_samp[2]) Binding 11 - Decorate 74(g_tex[0]) DescriptorSet 0 + Decorate 70(g_samp[2]) DescriptorSet 0 Decorate 74(g_tex[0]) Binding 0 - Decorate 79(g_tex[2]) DescriptorSet 0 + Decorate 74(g_tex[0]) DescriptorSet 0 Decorate 79(g_tex[2]) Binding 8 + Decorate 79(g_tex[2]) DescriptorSet 0 Decorate 88 ArrayStride 48 Decorate 89 ArrayStride 48 Decorate 90 ArrayStride 16 + Decorate 91($Global) Block MemberDecorate 91($Global) 0 RowMajor - MemberDecorate 91($Global) 0 Offset 0 MemberDecorate 91($Global) 0 MatrixStride 16 + MemberDecorate 91($Global) 0 Offset 0 MemberDecorate 91($Global) 1 RowMajor - MemberDecorate 91($Global) 1 Offset 192 MemberDecorate 91($Global) 1 MatrixStride 16 + MemberDecorate 91($Global) 1 Offset 192 MemberDecorate 91($Global) 2 Offset 384 - Decorate 91($Global) Block - Decorate 93 DescriptorSet 0 Decorate 93 Binding 12 + Decorate 93 DescriptorSet 0 Decorate 134(ps_output.color) Location 0 - Decorate 137(g_tex_explicit[0]) DescriptorSet 0 Decorate 137(g_tex_explicit[0]) Binding 1 - Decorate 138(g_tex_explicit[1]) DescriptorSet 0 + Decorate 137(g_tex_explicit[0]) DescriptorSet 0 Decorate 138(g_tex_explicit[1]) Binding 2 - Decorate 139(g_tex_explicit[2]) DescriptorSet 0 + Decorate 138(g_tex_explicit[1]) DescriptorSet 0 Decorate 139(g_tex_explicit[2]) Binding 3 - Decorate 140(g_samp_explicit[0]) DescriptorSet 0 + Decorate 139(g_tex_explicit[2]) DescriptorSet 0 Decorate 140(g_samp_explicit[0]) Binding 5 - Decorate 141(g_samp_explicit[1]) DescriptorSet 0 + Decorate 140(g_samp_explicit[0]) DescriptorSet 0 Decorate 141(g_samp_explicit[1]) Binding 6 - Decorate 142(g_samp_explicit[2]) DescriptorSet 0 + Decorate 141(g_samp_explicit[1]) DescriptorSet 0 Decorate 142(g_samp_explicit[2]) Binding 7 + Decorate 142(g_samp_explicit[2]) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.array.frag.out b/Test/baseResults/hlsl.array.frag.out index 6a13326a1a..45307eac60 100644 --- a/Test/baseResults/hlsl.array.frag.out +++ b/Test/baseResults/hlsl.array.frag.out @@ -328,13 +328,13 @@ gl_FragCoord origin is upper left Decorate 47 ArrayStride 112 Decorate 49 ArrayStride 16 Decorate 50 ArrayStride 16 + Decorate 51($Global) Block MemberDecorate 51($Global) 0 Offset 0 MemberDecorate 51($Global) 1 Offset 64 MemberDecorate 51($Global) 2 Offset 1296 MemberDecorate 51($Global) 3 Offset 1312 - Decorate 51($Global) Block - Decorate 53 DescriptorSet 0 Decorate 53 Binding 0 + Decorate 53 DescriptorSet 0 Decorate 103(i) Flat Decorate 103(i) Location 0 Decorate 107(input) Location 1 diff --git a/Test/baseResults/hlsl.array.multidim.frag.out b/Test/baseResults/hlsl.array.multidim.frag.out index 7b9d962185..50cfeb21a1 100644 --- a/Test/baseResults/hlsl.array.multidim.frag.out +++ b/Test/baseResults/hlsl.array.multidim.frag.out @@ -157,10 +157,10 @@ gl_FragCoord origin is upper left Decorate 22 ArrayStride 16 Decorate 24 ArrayStride 48 Decorate 26 ArrayStride 192 - MemberDecorate 27($Global) 0 Offset 0 Decorate 27($Global) Block - Decorate 29 DescriptorSet 0 + MemberDecorate 27($Global) 0 Offset 0 Decorate 29 Binding 0 + Decorate 29 DescriptorSet 0 Decorate 54(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.attribute.expression.comp.out b/Test/baseResults/hlsl.attribute.expression.comp.out index ee183c8d52..910ccfdb6e 100644 --- a/Test/baseResults/hlsl.attribute.expression.comp.out +++ b/Test/baseResults/hlsl.attribute.expression.comp.out @@ -79,10 +79,10 @@ local_size = (4, 6, 8) Name 18 "$Global" MemberName 18($Global) 0 "bound" Name 20 "" - MemberDecorate 18($Global) 0 Offset 0 Decorate 18($Global) Block - Decorate 20 DescriptorSet 0 + MemberDecorate 18($Global) 0 Offset 0 Decorate 20 Binding 0 + Decorate 20 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.attributeC11.frag.out b/Test/baseResults/hlsl.attributeC11.frag.out index c97c300a6c..8def5712fc 100644 --- a/Test/baseResults/hlsl.attributeC11.frag.out +++ b/Test/baseResults/hlsl.attributeC11.frag.out @@ -122,23 +122,23 @@ Validation failed Name 48 "pcBuf" MemberName 48(pcBuf) 0 "a" Name 50 "" - Decorate 16(attach) DescriptorSet 0 Decorate 16(attach) Binding 0 + Decorate 16(attach) DescriptorSet 0 Decorate 16(attach) InputAttachmentIndex 4 Decorate 33(input) Location 8 Decorate 36(@entryPointOutput) Location 7 MemberDecorate 41(S) 0 Offset 0 Decorate 42 ArrayStride 8 + Decorate 43(buffer1) BufferBlock MemberDecorate 43(buffer1) 0 NonWritable MemberDecorate 43(buffer1) 0 Offset 0 - Decorate 43(buffer1) BufferBlock - Decorate 45(buffer1) DescriptorSet 0 Decorate 45(buffer1) Binding 1 - Decorate 46(buffer3) DescriptorSet 2 + Decorate 45(buffer1) DescriptorSet 0 Decorate 46(buffer3) Binding 3 + Decorate 46(buffer3) DescriptorSet 2 Decorate 47(ci) SpecId 13 - MemberDecorate 48(pcBuf) 0 Offset 0 Decorate 48(pcBuf) Block + MemberDecorate 48(pcBuf) 0 Offset 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out index 4726ddd0fc..ec3be437cc 100644 --- a/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out +++ b/Test/baseResults/hlsl.attributeGlobalBuffer.frag.out @@ -72,11 +72,11 @@ gl_FragCoord origin is upper left MemberName 11($Global) 1 "u2" Name 13 "" Name 26 "@entryPointOutput" + Decorate 11($Global) Block MemberDecorate 11($Global) 0 Offset 0 MemberDecorate 11($Global) 1 Offset 16 - Decorate 11($Global) Block - Decorate 13 DescriptorSet 2 Decorate 13 Binding 5 + Decorate 13 DescriptorSet 2 Decorate 26(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.autosampledtextures.frag.out b/Test/baseResults/hlsl.autosampledtextures.frag.out index 070af8238c..4a54526a08 100644 --- a/Test/baseResults/hlsl.autosampledtextures.frag.out +++ b/Test/baseResults/hlsl.autosampledtextures.frag.out @@ -22,8 +22,8 @@ hlsl.autosampledtextures.frag Name 36 "i.vTextureCoords" Name 40 "@entryPointOutput.vColor" Name 41 "param" - Decorate 23(g_tColor) DescriptorSet 0 Decorate 23(g_tColor) Binding 0 + Decorate 23(g_tColor) DescriptorSet 0 Decorate 36(i.vTextureCoords) Location 0 Decorate 40(@entryPointOutput.vColor) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index f95b8398c9..64959d696e 100644 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -194,24 +194,25 @@ Validation failed Name 65 "input" Name 68 "@entryPointOutput.a" Name 69 "param" - MemberDecorate 24(cbufName2) 0 Offset 0 Decorate 24(cbufName2) Block - Decorate 26 DescriptorSet 0 + MemberDecorate 24(cbufName2) 0 Offset 0 Decorate 26 Binding 3 - MemberDecorate 31(buf1) 0 Offset 0 + Decorate 26 DescriptorSet 0 Decorate 31(buf1) Block - Decorate 33 DescriptorSet 0 + MemberDecorate 31(buf1) 0 Offset 0 Decorate 33 Binding 0 + Decorate 33 DescriptorSet 0 + Decorate 37(buf2) BufferBlock MemberDecorate 37(buf2) 0 NonWritable MemberDecorate 37(buf2) 0 Offset 0 - Decorate 37(buf2) BufferBlock - Decorate 39 DescriptorSet 0 Decorate 39 Binding 1 + Decorate 39 DescriptorSet 0 + Decorate 43(cbufName) Block MemberDecorate 43(cbufName) 0 Offset 0 MemberDecorate 43(cbufName) 1 Offset 20 - Decorate 43(cbufName) Block - Decorate 45 DescriptorSet 0 Decorate 45 Binding 2 + Decorate 45 DescriptorSet 0 + Decorate 50(tbufName) BufferBlock MemberDecorate 50(tbufName) 0 NonWritable MemberDecorate 50(tbufName) 0 Offset 16 MemberDecorate 50(tbufName) 1 NonWritable @@ -229,24 +230,23 @@ Validation failed MemberDecorate 50(tbufName) 7 NonWritable MemberDecorate 50(tbufName) 7 Offset 128 MemberDecorate 50(tbufName) 8 RowMajor + MemberDecorate 50(tbufName) 8 MatrixStride 16 MemberDecorate 50(tbufName) 8 NonWritable MemberDecorate 50(tbufName) 8 Offset 112 - MemberDecorate 50(tbufName) 8 MatrixStride 16 MemberDecorate 50(tbufName) 9 ColMajor + MemberDecorate 50(tbufName) 9 MatrixStride 16 MemberDecorate 50(tbufName) 9 NonWritable MemberDecorate 50(tbufName) 9 Offset 176 - MemberDecorate 50(tbufName) 9 MatrixStride 16 MemberDecorate 50(tbufName) 10 RowMajor + MemberDecorate 50(tbufName) 10 MatrixStride 16 MemberDecorate 50(tbufName) 10 NonWritable MemberDecorate 50(tbufName) 10 Offset 240 - MemberDecorate 50(tbufName) 10 MatrixStride 16 MemberDecorate 50(tbufName) 11 RowMajor + MemberDecorate 50(tbufName) 11 MatrixStride 16 MemberDecorate 50(tbufName) 11 NonWritable MemberDecorate 50(tbufName) 11 Offset 304 - MemberDecorate 50(tbufName) 11 MatrixStride 16 - Decorate 50(tbufName) BufferBlock - Decorate 52 DescriptorSet 0 Decorate 52 Binding 8 + Decorate 52 DescriptorSet 0 Decorate 65(input) BuiltIn FragCoord Decorate 68(@entryPointOutput.a) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.buffer_ref_parameter.comp.out b/Test/baseResults/hlsl.buffer_ref_parameter.comp.out index 4ddf6f706e..1f7f0906d4 100644 --- a/Test/baseResults/hlsl.buffer_ref_parameter.comp.out +++ b/Test/baseResults/hlsl.buffer_ref_parameter.comp.out @@ -275,17 +275,17 @@ local_size = (64, 1, 1) Name 85 "gi" Name 87 "param" Decorate 7 ArrayStride 4 + Decorate 8 Block MemberDecorate 8 0 NonWritable MemberDecorate 8 0 Offset 0 - Decorate 8 Block Decorate 14(buffer_position) NonWritable - Decorate 53(buffer_position_ms) DescriptorSet 0 Decorate 53(buffer_position_ms) Binding 0 + Decorate 53(buffer_position_ms) DescriptorSet 0 Decorate 59 ArrayStride 4 - MemberDecorate 60(r) 0 Offset 0 Decorate 60(r) Block - Decorate 62(r) DescriptorSet 0 + MemberDecorate 60(r) 0 Offset 0 Decorate 62(r) Binding 1 + Decorate 62(r) DescriptorSet 0 Decorate 85(gi) BuiltIn LocalInvocationIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.calculatelod.dx10.frag.out b/Test/baseResults/hlsl.calculatelod.dx10.frag.out index 7d896ceafa..14ed71e2f9 100644 --- a/Test/baseResults/hlsl.calculatelod.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelod.dx10.frag.out @@ -400,30 +400,30 @@ using depth_any Name 140 "@entryPointOutput.Color" Name 144 "@entryPointOutput.Depth" Name 147 "g_tTex1df4" - Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4a) Binding 2 - Decorate 45(g_tTex1du4a) DescriptorSet 0 + Decorate 33(g_tTex1di4a) DescriptorSet 0 Decorate 45(g_tTex1du4a) Binding 3 - Decorate 56(g_tTex2df4a) DescriptorSet 0 + Decorate 45(g_tTex1du4a) DescriptorSet 0 Decorate 56(g_tTex2df4a) Binding 4 - Decorate 67(g_tTex2di4a) DescriptorSet 0 + Decorate 56(g_tTex2df4a) DescriptorSet 0 Decorate 67(g_tTex2di4a) Binding 5 - Decorate 79(g_tTex2du4a) DescriptorSet 0 + Decorate 67(g_tTex2di4a) DescriptorSet 0 Decorate 79(g_tTex2du4a) Binding 6 - Decorate 92(g_tTexcdf4a) DescriptorSet 0 + Decorate 79(g_tTex2du4a) DescriptorSet 0 Decorate 92(g_tTexcdf4a) Binding 7 - Decorate 104(g_tTexcdi4a) DescriptorSet 0 + Decorate 92(g_tTexcdf4a) DescriptorSet 0 Decorate 104(g_tTexcdi4a) Binding 8 - Decorate 115(g_tTexcdu4a) DescriptorSet 0 + Decorate 104(g_tTexcdi4a) DescriptorSet 0 Decorate 115(g_tTexcdu4a) Binding 9 + Decorate 115(g_tTexcdu4a) DescriptorSet 0 Decorate 140(@entryPointOutput.Color) Location 0 Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 147(g_tTex1df4) DescriptorSet 0 Decorate 147(g_tTex1df4) Binding 0 + Decorate 147(g_tTex1df4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out index 3ce857d9a9..c052200a82 100644 --- a/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out +++ b/Test/baseResults/hlsl.calculatelodunclamped.dx10.frag.out @@ -400,30 +400,30 @@ using depth_any Name 140 "@entryPointOutput.Color" Name 144 "@entryPointOutput.Depth" Name 147 "g_tTex1df4" - Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4a) Binding 2 - Decorate 45(g_tTex1du4a) DescriptorSet 0 + Decorate 33(g_tTex1di4a) DescriptorSet 0 Decorate 45(g_tTex1du4a) Binding 3 - Decorate 56(g_tTex2df4a) DescriptorSet 0 + Decorate 45(g_tTex1du4a) DescriptorSet 0 Decorate 56(g_tTex2df4a) Binding 4 - Decorate 67(g_tTex2di4a) DescriptorSet 0 + Decorate 56(g_tTex2df4a) DescriptorSet 0 Decorate 67(g_tTex2di4a) Binding 5 - Decorate 79(g_tTex2du4a) DescriptorSet 0 + Decorate 67(g_tTex2di4a) DescriptorSet 0 Decorate 79(g_tTex2du4a) Binding 6 - Decorate 92(g_tTexcdf4a) DescriptorSet 0 + Decorate 79(g_tTex2du4a) DescriptorSet 0 Decorate 92(g_tTexcdf4a) Binding 7 - Decorate 104(g_tTexcdi4a) DescriptorSet 0 + Decorate 92(g_tTexcdf4a) DescriptorSet 0 Decorate 104(g_tTexcdi4a) Binding 8 - Decorate 115(g_tTexcdu4a) DescriptorSet 0 + Decorate 104(g_tTexcdi4a) DescriptorSet 0 Decorate 115(g_tTexcdu4a) Binding 9 + Decorate 115(g_tTexcdu4a) DescriptorSet 0 Decorate 140(@entryPointOutput.Color) Location 0 Decorate 144(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 147(g_tTex1df4) DescriptorSet 0 Decorate 147(g_tTex1df4) Binding 0 + Decorate 147(g_tTex1df4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.cbuffer-identifier.vert.out b/Test/baseResults/hlsl.cbuffer-identifier.vert.out index de9deea711..3fa3d5d252 100644 --- a/Test/baseResults/hlsl.cbuffer-identifier.vert.out +++ b/Test/baseResults/hlsl.cbuffer-identifier.vert.out @@ -281,18 +281,18 @@ Shader version: 500 Name 82 "param" Name 86 "@entryPointOutput.Pos" Name 90 "@entryPointOutput.Norm" + Decorate 28(C) Block MemberDecorate 28(C) 0 RowMajor - MemberDecorate 28(C) 0 Offset 0 MemberDecorate 28(C) 0 MatrixStride 16 + MemberDecorate 28(C) 0 Offset 0 MemberDecorate 28(C) 1 RowMajor - MemberDecorate 28(C) 1 Offset 64 MemberDecorate 28(C) 1 MatrixStride 16 + MemberDecorate 28(C) 1 Offset 64 MemberDecorate 28(C) 2 RowMajor - MemberDecorate 28(C) 2 Offset 128 MemberDecorate 28(C) 2 MatrixStride 16 - Decorate 28(C) Block - Decorate 30 DescriptorSet 0 + MemberDecorate 28(C) 2 Offset 128 Decorate 30 Binding 0 + Decorate 30 DescriptorSet 0 Decorate 74(input.Pos) Location 0 Decorate 78(input.Norm) Location 1 Decorate 86(@entryPointOutput.Pos) BuiltIn Position diff --git a/Test/baseResults/hlsl.cbuffer-offsets.comp.out b/Test/baseResults/hlsl.cbuffer-offsets.comp.out index feb0bb690d..793d5b913e 100644 --- a/Test/baseResults/hlsl.cbuffer-offsets.comp.out +++ b/Test/baseResults/hlsl.cbuffer-offsets.comp.out @@ -70,63 +70,63 @@ Validation failed Name 27 "" Decorate 13 ArrayStride 16 Decorate 24 ArrayStride 16 + Decorate 25(CB) Block MemberDecorate 25(CB) 0 Offset 0 MemberDecorate 25(CB) 1 Offset 16 MemberDecorate 25(CB) 2 Offset 60 MemberDecorate 25(CB) 3 Offset 64 MemberDecorate 25(CB) 4 RowMajor - MemberDecorate 25(CB) 4 Offset 68 MemberDecorate 25(CB) 4 MatrixStride 16 + MemberDecorate 25(CB) 4 Offset 68 MemberDecorate 25(CB) 5 RowMajor - MemberDecorate 25(CB) 5 Offset 80 MemberDecorate 25(CB) 5 MatrixStride 16 + MemberDecorate 25(CB) 5 Offset 80 MemberDecorate 25(CB) 6 RowMajor - MemberDecorate 25(CB) 6 Offset 100 MemberDecorate 25(CB) 6 MatrixStride 16 + MemberDecorate 25(CB) 6 Offset 100 MemberDecorate 25(CB) 7 RowMajor - MemberDecorate 25(CB) 7 Offset 112 MemberDecorate 25(CB) 7 MatrixStride 16 + MemberDecorate 25(CB) 7 Offset 112 MemberDecorate 25(CB) 8 RowMajor - MemberDecorate 25(CB) 8 Offset 144 MemberDecorate 25(CB) 8 MatrixStride 16 + MemberDecorate 25(CB) 8 Offset 144 MemberDecorate 25(CB) 9 Offset 188 MemberDecorate 25(CB) 10 RowMajor - MemberDecorate 25(CB) 10 Offset 192 MemberDecorate 25(CB) 10 MatrixStride 16 + MemberDecorate 25(CB) 10 Offset 192 MemberDecorate 25(CB) 11 Offset 252 MemberDecorate 25(CB) 12 RowMajor - MemberDecorate 25(CB) 12 Offset 256 MemberDecorate 25(CB) 12 MatrixStride 16 + MemberDecorate 25(CB) 12 Offset 256 MemberDecorate 25(CB) 13 Offset 304 MemberDecorate 25(CB) 14 ColMajor - MemberDecorate 25(CB) 14 Offset 308 MemberDecorate 25(CB) 14 MatrixStride 16 + MemberDecorate 25(CB) 14 Offset 308 MemberDecorate 25(CB) 15 ColMajor - MemberDecorate 25(CB) 15 Offset 312 MemberDecorate 25(CB) 15 MatrixStride 16 + MemberDecorate 25(CB) 15 Offset 312 MemberDecorate 25(CB) 16 ColMajor - MemberDecorate 25(CB) 16 Offset 320 MemberDecorate 25(CB) 16 MatrixStride 16 + MemberDecorate 25(CB) 16 Offset 320 MemberDecorate 25(CB) 17 ColMajor - MemberDecorate 25(CB) 17 Offset 352 MemberDecorate 25(CB) 17 MatrixStride 16 + MemberDecorate 25(CB) 17 Offset 352 MemberDecorate 25(CB) 18 ColMajor - MemberDecorate 25(CB) 18 Offset 384 MemberDecorate 25(CB) 18 MatrixStride 16 + MemberDecorate 25(CB) 18 Offset 384 MemberDecorate 25(CB) 19 Offset 428 MemberDecorate 25(CB) 20 ColMajor - MemberDecorate 25(CB) 20 Offset 432 MemberDecorate 25(CB) 20 MatrixStride 16 + MemberDecorate 25(CB) 20 Offset 432 MemberDecorate 25(CB) 21 Offset 480 MemberDecorate 25(CB) 22 ColMajor - MemberDecorate 25(CB) 22 Offset 496 MemberDecorate 25(CB) 22 MatrixStride 16 + MemberDecorate 25(CB) 22 Offset 496 MemberDecorate 25(CB) 23 Offset 556 MemberDecorate 25(CB) 24 Offset 560 MemberDecorate 25(CB) 25 Offset 596 - Decorate 25(CB) Block - Decorate 27 DescriptorSet 0 Decorate 27 Binding 0 + Decorate 27 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 9: TypeFloat 32 diff --git a/Test/baseResults/hlsl.color.hull.tesc.out b/Test/baseResults/hlsl.color.hull.tesc.out index 7a1f830533..39a7597bd0 100644 --- a/Test/baseResults/hlsl.color.hull.tesc.out +++ b/Test/baseResults/hlsl.color.hull.tesc.out @@ -583,21 +583,21 @@ triangle order = cw Name 137 "param" Name 142 "@patchConstantOutput.edges" Name 155 "@patchConstantOutput.inside" + Decorate 33(TessellationBuffer) Block MemberDecorate 33(TessellationBuffer) 0 Offset 0 MemberDecorate 33(TessellationBuffer) 1 Offset 4 - Decorate 33(TessellationBuffer) Block - Decorate 35 DescriptorSet 0 Decorate 35 Binding 0 + Decorate 35 DescriptorSet 0 Decorate 73(patch.position) Location 0 Decorate 80(patch.color) Location 1 Decorate 99(pointId) BuiltIn InvocationId Decorate 102(patchId) BuiltIn PrimitiveId Decorate 113(@entryPointOutput.position) Location 0 Decorate 120(@entryPointOutput.color) Location 1 - Decorate 142(@patchConstantOutput.edges) Patch Decorate 142(@patchConstantOutput.edges) BuiltIn TessLevelOuter - Decorate 155(@patchConstantOutput.inside) Patch + Decorate 142(@patchConstantOutput.edges) Patch Decorate 155(@patchConstantOutput.inside) BuiltIn TessLevelInner + Decorate 155(@patchConstantOutput.inside) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.comparison.vec.frag.out b/Test/baseResults/hlsl.comparison.vec.frag.out index 720aea24c3..67b82d5567 100644 --- a/Test/baseResults/hlsl.comparison.vec.frag.out +++ b/Test/baseResults/hlsl.comparison.vec.frag.out @@ -297,10 +297,10 @@ gl_FragCoord origin is upper left MemberName 93($Global) 0 "uf4" Name 95 "" Decorate 90(@entryPointOutput.Color) Location 0 - MemberDecorate 93($Global) 0 Offset 0 Decorate 93($Global) Block - Decorate 95 DescriptorSet 0 + MemberDecorate 93($Global) 0 Offset 0 Decorate 95 Binding 0 + Decorate 95 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.conditional.frag.out b/Test/baseResults/hlsl.conditional.frag.out index 47c7877ac0..a56178ecee 100644 --- a/Test/baseResults/hlsl.conditional.frag.out +++ b/Test/baseResults/hlsl.conditional.frag.out @@ -696,14 +696,14 @@ gl_FragCoord origin is upper left Name 226 "input" Name 229 "@entryPointOutput" Name 230 "param" + Decorate 29($Global) Block MemberDecorate 29($Global) 0 Offset 0 MemberDecorate 29($Global) 1 Offset 16 MemberDecorate 29($Global) 2 Offset 32 MemberDecorate 29($Global) 3 Offset 48 MemberDecorate 29($Global) 4 Offset 52 - Decorate 29($Global) Block - Decorate 31 DescriptorSet 0 Decorate 31 Binding 0 + Decorate 31 DescriptorSet 0 Decorate 226(input) Location 0 Decorate 229(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.constantbuffer.frag.out b/Test/baseResults/hlsl.constantbuffer.frag.out index 78ad57705e..e321d6d9c1 100644 --- a/Test/baseResults/hlsl.constantbuffer.frag.out +++ b/Test/baseResults/hlsl.constantbuffer.frag.out @@ -156,21 +156,21 @@ Validation failed MemberName 46(cbuff) 0 "c1" Name 48 "" Name 64 "@entryPointOutput" + Decorate 12(cb3) Block MemberDecorate 12(cb3) 0 Offset 0 MemberDecorate 12(cb3) 1 Offset 4 - Decorate 12(cb3) Block - Decorate 18(cb3) DescriptorSet 0 Decorate 18(cb3) Binding 1 - MemberDecorate 31(cb1) 0 Offset 0 + Decorate 18(cb3) DescriptorSet 0 Decorate 31(cb1) Block - Decorate 33(cb1) DescriptorSet 0 + MemberDecorate 31(cb1) 0 Offset 0 Decorate 33(cb1) Binding 12 - Decorate 40(cb2) DescriptorSet 0 + Decorate 33(cb1) DescriptorSet 0 Decorate 40(cb2) Binding 0 - MemberDecorate 46(cbuff) 0 Offset 0 + Decorate 40(cb2) DescriptorSet 0 Decorate 46(cbuff) Block - Decorate 48 DescriptorSet 0 + MemberDecorate 46(cbuff) 0 Offset 0 Decorate 48 Binding 2 + Decorate 48 DescriptorSet 0 Decorate 64(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.dashI.vert.out b/Test/baseResults/hlsl.dashI.vert.out index ccd530af40..125b4bddcd 100644 --- a/Test/baseResults/hlsl.dashI.vert.out +++ b/Test/baseResults/hlsl.dashI.vert.out @@ -18,14 +18,14 @@ hlsl.dashI.vert MemberName 11($Global) 4 "i4" Name 13 "" Name 38 "@entryPointOutput" + Decorate 11($Global) Block MemberDecorate 11($Global) 0 Offset 0 MemberDecorate 11($Global) 1 Offset 16 MemberDecorate 11($Global) 2 Offset 32 MemberDecorate 11($Global) 3 Offset 48 MemberDecorate 11($Global) 4 Offset 64 - Decorate 11($Global) Block - Decorate 13 DescriptorSet 0 Decorate 13 Binding 0 + Decorate 13 DescriptorSet 0 Decorate 38(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.domain.1.tese.out b/Test/baseResults/hlsl.domain.1.tese.out index 738f7cd0e4..41a5ab0743 100644 --- a/Test/baseResults/hlsl.domain.1.tese.out +++ b/Test/baseResults/hlsl.domain.1.tese.out @@ -473,12 +473,12 @@ triangle order = none Decorate 62(i.norm) Location 1 Decorate 82(f) Patch Decorate 82(f) Location 2 - Decorate 85(tesscoord) Patch Decorate 85(tesscoord) BuiltIn TessCoord - Decorate 91(pcf_data.flTessFactor) Patch + Decorate 85(tesscoord) Patch Decorate 91(pcf_data.flTessFactor) BuiltIn TessLevelOuter - Decorate 104(pcf_data.flInsideTessFactor) Patch + Decorate 91(pcf_data.flTessFactor) Patch Decorate 104(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner + Decorate 104(pcf_data.flInsideTessFactor) Patch Decorate 118(@entryPointOutput.pos) Location 0 Decorate 122(@entryPointOutput.norm) Location 1 2: TypeVoid diff --git a/Test/baseResults/hlsl.domain.2.tese.out b/Test/baseResults/hlsl.domain.2.tese.out index ddb176a0fc..97590ffaa8 100644 --- a/Test/baseResults/hlsl.domain.2.tese.out +++ b/Test/baseResults/hlsl.domain.2.tese.out @@ -465,16 +465,16 @@ triangle order = none Name 109 "param" Name 113 "@entryPointOutput.pos" Name 117 "@entryPointOutput.norm" - Decorate 52(pcf_data.flTessFactor) Patch Decorate 52(pcf_data.flTessFactor) BuiltIn TessLevelOuter - Decorate 67(pcf_data.flInsideTessFactor) Patch + Decorate 52(pcf_data.flTessFactor) Patch Decorate 67(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner + Decorate 67(pcf_data.flInsideTessFactor) Patch Decorate 71(pcf_data.foo) Patch Decorate 71(pcf_data.foo) Location 2 Decorate 78(i.pos) Location 0 Decorate 85(i.norm) Location 1 - Decorate 103(tesscoord) Patch Decorate 103(tesscoord) BuiltIn TessCoord + Decorate 103(tesscoord) Patch Decorate 113(@entryPointOutput.pos) Location 0 Decorate 117(@entryPointOutput.norm) Location 1 2: TypeVoid diff --git a/Test/baseResults/hlsl.domain.3.tese.out b/Test/baseResults/hlsl.domain.3.tese.out index 1dc7b2fd34..552f3fdbf3 100644 --- a/Test/baseResults/hlsl.domain.3.tese.out +++ b/Test/baseResults/hlsl.domain.3.tese.out @@ -397,12 +397,12 @@ triangle order = none Name 113 "@entryPointOutput.norm" Decorate 55(i.pos) Location 0 Decorate 62(i.norm) Location 1 - Decorate 74(tesscoord) Patch Decorate 74(tesscoord) BuiltIn TessCoord - Decorate 83(pcf_data.flTessFactor) Patch + Decorate 74(tesscoord) Patch Decorate 83(pcf_data.flTessFactor) BuiltIn TessLevelOuter - Decorate 97(pcf_data.flInsideTessFactor) Patch + Decorate 83(pcf_data.flTessFactor) Patch Decorate 97(pcf_data.flInsideTessFactor) BuiltIn TessLevelInner + Decorate 97(pcf_data.flInsideTessFactor) Patch Decorate 109(@entryPointOutput.pos) Location 0 Decorate 113(@entryPointOutput.norm) Location 1 2: TypeVoid diff --git a/Test/baseResults/hlsl.earlydepthstencil.frag.out b/Test/baseResults/hlsl.earlydepthstencil.frag.out index a629bdc7ee..60d9069989 100644 --- a/Test/baseResults/hlsl.earlydepthstencil.frag.out +++ b/Test/baseResults/hlsl.earlydepthstencil.frag.out @@ -129,8 +129,8 @@ using early_fragment_tests Name 41 "input.Position" Name 46 "@entryPointOutput" Name 47 "param" - Decorate 19(Values) DescriptorSet 0 Decorate 19(Values) Binding 0 + Decorate 19(Values) DescriptorSet 0 Decorate 41(input.Position) BuiltIn FragCoord Decorate 46(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.emptystructreturn.tesc.out b/Test/baseResults/hlsl.emptystructreturn.tesc.out index ffdbb02d4a..0d82b7b245 100644 --- a/Test/baseResults/hlsl.emptystructreturn.tesc.out +++ b/Test/baseResults/hlsl.emptystructreturn.tesc.out @@ -439,10 +439,10 @@ Validation failed Decorate 65(patch.position) BuiltIn Position Decorate 79(pointId) BuiltIn InvocationId Decorate 82(patchId) BuiltIn PrimitiveId - Decorate 115(@patchConstantOutput.edges) Patch Decorate 115(@patchConstantOutput.edges) BuiltIn TessLevelOuter - Decorate 128(@patchConstantOutput.inside) Patch + Decorate 115(@patchConstantOutput.edges) Patch Decorate 128(@patchConstantOutput.inside) BuiltIn TessLevelInner + Decorate 128(@patchConstantOutput.inside) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.entry.rename.frag.out b/Test/baseResults/hlsl.entry.rename.frag.out index d635c67a53..d17580521f 100644 --- a/Test/baseResults/hlsl.entry.rename.frag.out +++ b/Test/baseResults/hlsl.entry.rename.frag.out @@ -92,10 +92,10 @@ gl_FragCoord origin is upper left MemberName 29($Global) 0 "also_not_the_entry_point" Name 31 "" Decorate 26(@entryPointOutput.Color) Location 0 - MemberDecorate 29($Global) 0 Offset 0 Decorate 29($Global) Block - Decorate 31 DescriptorSet 0 + MemberDecorate 29($Global) 0 Offset 0 Decorate 31 Binding 0 + Decorate 31 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 diff --git a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out index 5c89f7e066..ac6364dba9 100644 --- a/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out +++ b/Test/baseResults/hlsl.explicitDescriptorSet-2.frag.out @@ -21,19 +21,19 @@ hlsl.explicitDescriptorSet.frag MemberName 25($Global) 0 "floatval_amb" Name 27 "" Name 30 "floatbuff" - Decorate 13(g_sSamp2_amb) DescriptorSet 3 Decorate 13(g_sSamp2_amb) Binding 10 + Decorate 13(g_sSamp2_amb) DescriptorSet 3 Decorate 19(@entryPointOutput) Location 0 - Decorate 21(g_sSamp) DescriptorSet 3 Decorate 21(g_sSamp) Binding 11 - Decorate 24(g_tTex1df4) DescriptorSet 3 + Decorate 21(g_sSamp) DescriptorSet 3 Decorate 24(g_tTex1df4) Binding 20 - MemberDecorate 25($Global) 0 Offset 0 + Decorate 24(g_tTex1df4) DescriptorSet 3 Decorate 25($Global) Block - Decorate 27 DescriptorSet 3 + MemberDecorate 25($Global) 0 Offset 0 Decorate 27 Binding 0 - Decorate 30(floatbuff) DescriptorSet 3 + Decorate 27 DescriptorSet 3 Decorate 30(floatbuff) Binding 0 + Decorate 30(floatbuff) DescriptorSet 3 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out index 1b0e45f026..0693f026ab 100644 --- a/Test/baseResults/hlsl.explicitDescriptorSet.frag.out +++ b/Test/baseResults/hlsl.explicitDescriptorSet.frag.out @@ -21,19 +21,19 @@ hlsl.explicitDescriptorSet.frag MemberName 25($Global) 0 "floatval_amb" Name 27 "" Name 30 "floatbuff" - Decorate 13(g_sSamp2_amb) DescriptorSet 4 Decorate 13(g_sSamp2_amb) Binding 10 + Decorate 13(g_sSamp2_amb) DescriptorSet 4 Decorate 19(@entryPointOutput) Location 0 - Decorate 21(g_sSamp) DescriptorSet 4 Decorate 21(g_sSamp) Binding 11 - Decorate 24(g_tTex1df4) DescriptorSet 4 + Decorate 21(g_sSamp) DescriptorSet 4 Decorate 24(g_tTex1df4) Binding 20 - MemberDecorate 25($Global) 0 Offset 0 + Decorate 24(g_tTex1df4) DescriptorSet 4 Decorate 25($Global) Block - Decorate 27 DescriptorSet 4 + MemberDecorate 25($Global) 0 Offset 0 Decorate 27 Binding 0 - Decorate 30(floatbuff) DescriptorSet 4 + Decorate 27 DescriptorSet 4 Decorate 30(floatbuff) Binding 0 + Decorate 30(floatbuff) DescriptorSet 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.flattenOpaque.frag.out b/Test/baseResults/hlsl.flattenOpaque.frag.out index 589b1e1ff7..47ea7d3f19 100644 --- a/Test/baseResults/hlsl.flattenOpaque.frag.out +++ b/Test/baseResults/hlsl.flattenOpaque.frag.out @@ -336,14 +336,14 @@ gl_FragCoord origin is upper left Name 112 "param" Name 114 "param" Name 120 "@entryPointOutput" - Decorate 38(tex) DescriptorSet 0 Decorate 38(tex) Binding 0 - Decorate 82(s.s2D) DescriptorSet 0 + Decorate 38(tex) DescriptorSet 0 Decorate 82(s.s2D) Binding 1 - Decorate 97(s2.s2D) DescriptorSet 0 + Decorate 82(s.s2D) DescriptorSet 0 Decorate 97(s2.s2D) Binding 2 - Decorate 100(s2.tex) DescriptorSet 0 + Decorate 97(s2.s2D) DescriptorSet 0 Decorate 100(s2.tex) Binding 3 + Decorate 100(s2.tex) DescriptorSet 0 Decorate 120(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out index dbd6446920..482f818256 100644 --- a/Test/baseResults/hlsl.flattenOpaqueInit.vert.out +++ b/Test/baseResults/hlsl.flattenOpaqueInit.vert.out @@ -192,10 +192,10 @@ Shader version: 500 Name 69 "tex3" Name 71 "param" Name 80 "@entryPointOutput" - Decorate 43(g_tInputTexture_sampler) DescriptorSet 0 Decorate 43(g_tInputTexture_sampler) Binding 0 - Decorate 47(g_tInputTexture) DescriptorSet 0 + Decorate 43(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 + Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 80(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out index 66084f677d..7ff5c4aa7d 100644 --- a/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out +++ b/Test/baseResults/hlsl.flattenOpaqueInitMix.vert.out @@ -128,10 +128,10 @@ Shader version: 500 Name 47 "g_tInputTexture" Name 51 "param" Name 57 "@entryPointOutput" - Decorate 44(g_tInputTexture_sampler) DescriptorSet 0 Decorate 44(g_tInputTexture_sampler) Binding 0 - Decorate 47(g_tInputTexture) DescriptorSet 0 + Decorate 44(g_tInputTexture_sampler) DescriptorSet 0 Decorate 47(g_tInputTexture) Binding 1 + Decorate 47(g_tInputTexture) DescriptorSet 0 Decorate 57(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.flattenSubset.frag.out b/Test/baseResults/hlsl.flattenSubset.frag.out index 65d3467760..b96c1415ff 100644 --- a/Test/baseResults/hlsl.flattenSubset.frag.out +++ b/Test/baseResults/hlsl.flattenSubset.frag.out @@ -151,10 +151,10 @@ gl_FragCoord origin is upper left Name 47 "vpos" Name 50 "@entryPointOutput" Name 51 "param" - Decorate 21(samp) DescriptorSet 0 Decorate 21(samp) Binding 0 - Decorate 33(tex) DescriptorSet 0 + Decorate 21(samp) DescriptorSet 0 Decorate 33(tex) Binding 1 + Decorate 33(tex) DescriptorSet 0 Decorate 47(vpos) Location 0 Decorate 50(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.flattenSubset2.frag.out b/Test/baseResults/hlsl.flattenSubset2.frag.out index c8a919328c..46cbcd4eb0 100644 --- a/Test/baseResults/hlsl.flattenSubset2.frag.out +++ b/Test/baseResults/hlsl.flattenSubset2.frag.out @@ -179,8 +179,8 @@ gl_FragCoord origin is upper left Name 49 "vpos" Name 52 "@entryPointOutput" Name 53 "param" - Decorate 36(someTex) DescriptorSet 0 Decorate 36(someTex) Binding 0 + Decorate 36(someTex) DescriptorSet 0 Decorate 49(vpos) Location 0 Decorate 52(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.float4.frag.out b/Test/baseResults/hlsl.float4.frag.out index 5fcc3c1450..8b9fc02c93 100644 --- a/Test/baseResults/hlsl.float4.frag.out +++ b/Test/baseResults/hlsl.float4.frag.out @@ -61,14 +61,14 @@ gl_FragCoord origin is upper left MemberName 15($Global) 3 "ff3" MemberName 15($Global) 4 "ff4" Name 17 "" + Decorate 15($Global) Block MemberDecorate 15($Global) 0 Offset 0 MemberDecorate 15($Global) 1 Offset 16 MemberDecorate 15($Global) 2 Offset 20 MemberDecorate 15($Global) 3 Offset 32 MemberDecorate 15($Global) 4 Offset 48 - Decorate 15($Global) Block - Decorate 17 DescriptorSet 0 Decorate 17 Binding 0 + Decorate 17 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.format.rwtexture.frag.out b/Test/baseResults/hlsl.format.rwtexture.frag.out index 3edbbb6eea..eb81229de5 100644 --- a/Test/baseResults/hlsl.format.rwtexture.frag.out +++ b/Test/baseResults/hlsl.format.rwtexture.frag.out @@ -248,92 +248,92 @@ using depth_any Name 159 "g_tTex25" Decorate 29(@entryPointOutput.Color) Location 0 Decorate 33(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 38(g_sSamp) DescriptorSet 0 Decorate 38(g_sSamp) Binding 0 - Decorate 41(g_tTex1df4) DescriptorSet 0 + Decorate 38(g_sSamp) DescriptorSet 0 Decorate 41(g_tTex1df4) Binding 0 - Decorate 44(g_tTex1di4) DescriptorSet 0 + Decorate 41(g_tTex1df4) DescriptorSet 0 Decorate 44(g_tTex1di4) Binding 0 - Decorate 48(g_tTex1du4) DescriptorSet 0 + Decorate 44(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 0 - Decorate 51(g_tTex2df4) DescriptorSet 0 + Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 51(g_tTex2df4) Binding 0 - Decorate 54(g_tTex2di4) DescriptorSet 0 + Decorate 51(g_tTex2df4) DescriptorSet 0 Decorate 54(g_tTex2di4) Binding 0 - Decorate 57(g_tTex2du4) DescriptorSet 0 + Decorate 54(g_tTex2di4) DescriptorSet 0 Decorate 57(g_tTex2du4) Binding 0 - Decorate 60(g_tTex3df4) DescriptorSet 0 - Decorate 60(g_tTex3df4) Binding 0 + Decorate 57(g_tTex2du4) DescriptorSet 0 Decorate 60(g_tTex3df4) NonWritable - Decorate 63(g_tTex3di4) DescriptorSet 0 - Decorate 63(g_tTex3di4) Binding 0 + Decorate 60(g_tTex3df4) Binding 0 + Decorate 60(g_tTex3df4) DescriptorSet 0 Decorate 63(g_tTex3di4) NonReadable - Decorate 66(g_tTex3du4) DescriptorSet 0 - Decorate 66(g_tTex3du4) Binding 0 + Decorate 63(g_tTex3di4) Binding 0 + Decorate 63(g_tTex3di4) DescriptorSet 0 Decorate 66(g_tTex3du4) NonWritable Decorate 66(g_tTex3du4) NonReadable - Decorate 69(g_tTex1df4a) DescriptorSet 0 + Decorate 66(g_tTex3du4) Binding 0 + Decorate 66(g_tTex3du4) DescriptorSet 0 Decorate 69(g_tTex1df4a) Binding 0 - Decorate 72(g_tTex1di4a) DescriptorSet 0 + Decorate 69(g_tTex1df4a) DescriptorSet 0 Decorate 72(g_tTex1di4a) Binding 0 - Decorate 75(g_tTex1du4a) DescriptorSet 0 + Decorate 72(g_tTex1di4a) DescriptorSet 0 Decorate 75(g_tTex1du4a) Binding 0 - Decorate 78(g_tTex2df4a) DescriptorSet 0 + Decorate 75(g_tTex1du4a) DescriptorSet 0 Decorate 78(g_tTex2df4a) Binding 0 - Decorate 81(g_tTex2di4a) DescriptorSet 0 + Decorate 78(g_tTex2df4a) DescriptorSet 0 Decorate 81(g_tTex2di4a) Binding 0 - Decorate 84(g_tTex2du4a) DescriptorSet 0 + Decorate 81(g_tTex2di4a) DescriptorSet 0 Decorate 84(g_tTex2du4a) Binding 0 - Decorate 87(g_tTex01) DescriptorSet 0 + Decorate 84(g_tTex2du4a) DescriptorSet 0 Decorate 87(g_tTex01) Binding 0 - Decorate 90(g_tTex02) DescriptorSet 0 + Decorate 87(g_tTex01) DescriptorSet 0 Decorate 90(g_tTex02) Binding 0 - Decorate 93(g_tTex03) DescriptorSet 0 + Decorate 90(g_tTex02) DescriptorSet 0 Decorate 93(g_tTex03) Binding 0 - Decorate 96(g_tTex04) DescriptorSet 0 + Decorate 93(g_tTex03) DescriptorSet 0 Decorate 96(g_tTex04) Binding 0 - Decorate 99(g_tTex05) DescriptorSet 0 + Decorate 96(g_tTex04) DescriptorSet 0 Decorate 99(g_tTex05) Binding 0 - Decorate 102(g_tTex06) DescriptorSet 0 + Decorate 99(g_tTex05) DescriptorSet 0 Decorate 102(g_tTex06) Binding 0 - Decorate 105(g_tTex07) DescriptorSet 0 + Decorate 102(g_tTex06) DescriptorSet 0 Decorate 105(g_tTex07) Binding 0 - Decorate 108(g_tTex08) DescriptorSet 0 + Decorate 105(g_tTex07) DescriptorSet 0 Decorate 108(g_tTex08) Binding 0 - Decorate 111(g_tTex09) DescriptorSet 0 + Decorate 108(g_tTex08) DescriptorSet 0 Decorate 111(g_tTex09) Binding 0 - Decorate 114(g_tTex10) DescriptorSet 0 + Decorate 111(g_tTex09) DescriptorSet 0 Decorate 114(g_tTex10) Binding 0 - Decorate 117(g_tTex11) DescriptorSet 0 + Decorate 114(g_tTex10) DescriptorSet 0 Decorate 117(g_tTex11) Binding 0 - Decorate 120(g_tTex12) DescriptorSet 0 + Decorate 117(g_tTex11) DescriptorSet 0 Decorate 120(g_tTex12) Binding 0 - Decorate 123(g_tTex13) DescriptorSet 0 + Decorate 120(g_tTex12) DescriptorSet 0 Decorate 123(g_tTex13) Binding 0 - Decorate 126(g_tTex14) DescriptorSet 0 + Decorate 123(g_tTex13) DescriptorSet 0 Decorate 126(g_tTex14) Binding 0 - Decorate 129(g_tTex15) DescriptorSet 0 + Decorate 126(g_tTex14) DescriptorSet 0 Decorate 129(g_tTex15) Binding 0 - Decorate 132(g_tTex16) DescriptorSet 0 + Decorate 129(g_tTex15) DescriptorSet 0 Decorate 132(g_tTex16) Binding 0 - Decorate 135(g_tTex17) DescriptorSet 0 + Decorate 132(g_tTex16) DescriptorSet 0 Decorate 135(g_tTex17) Binding 0 - Decorate 138(g_tTex18) DescriptorSet 0 + Decorate 135(g_tTex17) DescriptorSet 0 Decorate 138(g_tTex18) Binding 0 - Decorate 141(g_tTex19) DescriptorSet 0 + Decorate 138(g_tTex18) DescriptorSet 0 Decorate 141(g_tTex19) Binding 0 - Decorate 144(g_tTex20) DescriptorSet 0 + Decorate 141(g_tTex19) DescriptorSet 0 Decorate 144(g_tTex20) Binding 0 - Decorate 147(g_tTex21) DescriptorSet 0 + Decorate 144(g_tTex20) DescriptorSet 0 Decorate 147(g_tTex21) Binding 0 - Decorate 150(g_tTex22) DescriptorSet 0 + Decorate 147(g_tTex21) DescriptorSet 0 Decorate 150(g_tTex22) Binding 0 - Decorate 153(g_tTex23) DescriptorSet 0 + Decorate 150(g_tTex22) DescriptorSet 0 Decorate 153(g_tTex23) Binding 0 - Decorate 156(g_tTex24) DescriptorSet 0 + Decorate 153(g_tTex23) DescriptorSet 0 Decorate 156(g_tTex24) Binding 0 - Decorate 159(g_tTex25) DescriptorSet 0 + Decorate 156(g_tTex24) DescriptorSet 0 Decorate 159(g_tTex25) Binding 0 + Decorate 159(g_tTex25) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gather.array.dx10.frag.out b/Test/baseResults/hlsl.gather.array.dx10.frag.out index 13b7ebb34a..e0a1901f58 100644 --- a/Test/baseResults/hlsl.gather.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.array.dx10.frag.out @@ -300,30 +300,30 @@ using depth_any Name 117 "g_tTex1df4" Name 120 "g_tTex1di4a" Name 123 "g_tTex1du4a" - Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 16(g_tTex2df4a) Binding 2 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 37(g_tTex2di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex2di4a) Binding 3 - Decorate 52(g_tTex2du4a) DescriptorSet 0 + Decorate 37(g_tTex2di4a) DescriptorSet 0 Decorate 52(g_tTex2du4a) Binding 4 - Decorate 64(g_tTexcdf4a) DescriptorSet 0 + Decorate 52(g_tTex2du4a) DescriptorSet 0 Decorate 64(g_tTexcdf4a) Binding 5 - Decorate 74(g_tTexcdi4a) DescriptorSet 0 + Decorate 64(g_tTexcdf4a) DescriptorSet 0 Decorate 74(g_tTexcdi4a) Binding 6 - Decorate 84(g_tTexcdu4a) DescriptorSet 0 + Decorate 74(g_tTexcdi4a) DescriptorSet 0 Decorate 84(g_tTexcdu4a) Binding 7 + Decorate 84(g_tTexcdu4a) DescriptorSet 0 Decorate 107(@entryPointOutput.Color) Location 0 Decorate 111(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 116(g_tTex1df4a) DescriptorSet 0 Decorate 116(g_tTex1df4a) Binding 1 - Decorate 117(g_tTex1df4) DescriptorSet 0 + Decorate 116(g_tTex1df4a) DescriptorSet 0 Decorate 117(g_tTex1df4) Binding 0 - Decorate 120(g_tTex1di4a) DescriptorSet 0 + Decorate 117(g_tTex1df4) DescriptorSet 0 Decorate 120(g_tTex1di4a) Binding 0 - Decorate 123(g_tTex1du4a) DescriptorSet 0 + Decorate 120(g_tTex1di4a) DescriptorSet 0 Decorate 123(g_tTex1du4a) Binding 0 + Decorate 123(g_tTex1du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gather.basic.dx10.frag.out b/Test/baseResults/hlsl.gather.basic.dx10.frag.out index 0aa00f7412..6a9df41d5f 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.frag.out @@ -299,38 +299,38 @@ using depth_any Name 128 "g_tTex3df4" Name 131 "g_tTex3di4" Name 134 "g_tTex3du4" - Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) Binding 2 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 36(g_tTex2di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex2di4) Binding 3 - Decorate 51(g_tTex2du4) DescriptorSet 0 + Decorate 36(g_tTex2di4) DescriptorSet 0 Decorate 51(g_tTex2du4) Binding 4 - Decorate 63(g_tTexcdf4) DescriptorSet 0 + Decorate 51(g_tTex2du4) DescriptorSet 0 Decorate 63(g_tTexcdf4) Binding 5 - Decorate 74(g_tTexcdi4) DescriptorSet 0 + Decorate 63(g_tTexcdf4) DescriptorSet 0 Decorate 74(g_tTexcdi4) Binding 6 - Decorate 84(g_tTexcdu4) DescriptorSet 0 + Decorate 74(g_tTexcdi4) DescriptorSet 0 Decorate 84(g_tTexcdu4) Binding 7 + Decorate 84(g_tTexcdu4) DescriptorSet 0 Decorate 108(@entryPointOutput.Color) Location 0 Decorate 112(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 115(g_sSamp2d) DescriptorSet 0 Decorate 115(g_sSamp2d) Binding 0 - Decorate 118(g_tTex1df4a) DescriptorSet 0 + Decorate 115(g_sSamp2d) DescriptorSet 0 Decorate 118(g_tTex1df4a) Binding 1 - Decorate 119(g_tTex1df4) DescriptorSet 0 + Decorate 118(g_tTex1df4a) DescriptorSet 0 Decorate 119(g_tTex1df4) Binding 0 - Decorate 122(g_tTex1di4) DescriptorSet 0 + Decorate 119(g_tTex1df4) DescriptorSet 0 Decorate 122(g_tTex1di4) Binding 0 - Decorate 125(g_tTex1du4) DescriptorSet 0 + Decorate 122(g_tTex1di4) DescriptorSet 0 Decorate 125(g_tTex1du4) Binding 0 - Decorate 128(g_tTex3df4) DescriptorSet 0 + Decorate 125(g_tTex1du4) DescriptorSet 0 Decorate 128(g_tTex3df4) Binding 0 - Decorate 131(g_tTex3di4) DescriptorSet 0 + Decorate 128(g_tTex3df4) DescriptorSet 0 Decorate 131(g_tTex3di4) Binding 0 - Decorate 134(g_tTex3du4) DescriptorSet 0 + Decorate 131(g_tTex3di4) DescriptorSet 0 Decorate 134(g_tTex3du4) Binding 0 + Decorate 134(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gather.basic.dx10.vert.out b/Test/baseResults/hlsl.gather.basic.dx10.vert.out index d743074e0c..8bffb13108 100644 --- a/Test/baseResults/hlsl.gather.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.gather.basic.dx10.vert.out @@ -256,37 +256,37 @@ Shader version: 500 Name 119 "g_tTex3df4" Name 122 "g_tTex3di4" Name 125 "g_tTex3du4" - Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) Binding 2 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 36(g_tTex2di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex2di4) Binding 3 - Decorate 51(g_tTex2du4) DescriptorSet 0 + Decorate 36(g_tTex2di4) DescriptorSet 0 Decorate 51(g_tTex2du4) Binding 4 - Decorate 63(g_tTexcdf4) DescriptorSet 0 + Decorate 51(g_tTex2du4) DescriptorSet 0 Decorate 63(g_tTexcdf4) Binding 5 - Decorate 74(g_tTexcdi4) DescriptorSet 0 + Decorate 63(g_tTexcdf4) DescriptorSet 0 Decorate 74(g_tTexcdi4) Binding 6 - Decorate 84(g_tTexcdu4) DescriptorSet 0 + Decorate 74(g_tTexcdi4) DescriptorSet 0 Decorate 84(g_tTexcdu4) Binding 7 + Decorate 84(g_tTexcdu4) DescriptorSet 0 Decorate 103(@entryPointOutput.Pos) BuiltIn Position - Decorate 106(g_sSamp2d) DescriptorSet 0 Decorate 106(g_sSamp2d) Binding 0 - Decorate 109(g_tTex1df4a) DescriptorSet 0 + Decorate 106(g_sSamp2d) DescriptorSet 0 Decorate 109(g_tTex1df4a) Binding 1 - Decorate 110(g_tTex1df4) DescriptorSet 0 + Decorate 109(g_tTex1df4a) DescriptorSet 0 Decorate 110(g_tTex1df4) Binding 0 - Decorate 113(g_tTex1di4) DescriptorSet 0 + Decorate 110(g_tTex1df4) DescriptorSet 0 Decorate 113(g_tTex1di4) Binding 0 - Decorate 116(g_tTex1du4) DescriptorSet 0 + Decorate 113(g_tTex1di4) DescriptorSet 0 Decorate 116(g_tTex1du4) Binding 0 - Decorate 119(g_tTex3df4) DescriptorSet 0 + Decorate 116(g_tTex1du4) DescriptorSet 0 Decorate 119(g_tTex3df4) Binding 0 - Decorate 122(g_tTex3di4) DescriptorSet 0 + Decorate 119(g_tTex3df4) DescriptorSet 0 Decorate 122(g_tTex3di4) Binding 0 - Decorate 125(g_tTex3du4) DescriptorSet 0 + Decorate 122(g_tTex3di4) DescriptorSet 0 Decorate 125(g_tTex3du4) Binding 0 + Decorate 125(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gather.offset.dx10.frag.out b/Test/baseResults/hlsl.gather.offset.dx10.frag.out index 9656db5712..ae409bbd3e 100644 --- a/Test/baseResults/hlsl.gather.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offset.dx10.frag.out @@ -245,36 +245,36 @@ using depth_any Name 107 "g_tTexcdf4" Name 110 "g_tTexcdi4" Name 113 "g_tTexcdu4" - Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) Binding 2 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 39(g_tTex2di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 39(g_tTex2di4) Binding 3 - Decorate 55(g_tTex2du4) DescriptorSet 0 + Decorate 39(g_tTex2di4) DescriptorSet 0 Decorate 55(g_tTex2du4) Binding 4 + Decorate 55(g_tTex2du4) DescriptorSet 0 Decorate 79(@entryPointOutput.Color) Location 0 Decorate 83(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 88(g_tTex1df4a) DescriptorSet 0 Decorate 88(g_tTex1df4a) Binding 1 - Decorate 89(g_tTex1df4) DescriptorSet 0 + Decorate 88(g_tTex1df4a) DescriptorSet 0 Decorate 89(g_tTex1df4) Binding 0 - Decorate 92(g_tTex1di4) DescriptorSet 0 + Decorate 89(g_tTex1df4) DescriptorSet 0 Decorate 92(g_tTex1di4) Binding 0 - Decorate 95(g_tTex1du4) DescriptorSet 0 + Decorate 92(g_tTex1di4) DescriptorSet 0 Decorate 95(g_tTex1du4) Binding 0 - Decorate 98(g_tTex3df4) DescriptorSet 0 + Decorate 95(g_tTex1du4) DescriptorSet 0 Decorate 98(g_tTex3df4) Binding 0 - Decorate 101(g_tTex3di4) DescriptorSet 0 + Decorate 98(g_tTex3df4) DescriptorSet 0 Decorate 101(g_tTex3di4) Binding 0 - Decorate 104(g_tTex3du4) DescriptorSet 0 + Decorate 101(g_tTex3di4) DescriptorSet 0 Decorate 104(g_tTex3du4) Binding 0 - Decorate 107(g_tTexcdf4) DescriptorSet 0 + Decorate 104(g_tTex3du4) DescriptorSet 0 Decorate 107(g_tTexcdf4) Binding 0 - Decorate 110(g_tTexcdi4) DescriptorSet 0 + Decorate 107(g_tTexcdf4) DescriptorSet 0 Decorate 110(g_tTexcdi4) Binding 0 - Decorate 113(g_tTexcdu4) DescriptorSet 0 + Decorate 110(g_tTexcdi4) DescriptorSet 0 Decorate 113(g_tTexcdu4) Binding 0 + Decorate 113(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out index 2e6221a2a1..695428ae19 100644 --- a/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gather.offsetarray.dx10.frag.out @@ -233,24 +233,24 @@ using depth_any Name 90 "g_tTex1df4" Name 93 "g_tTex1di4" Name 96 "g_tTex1du4" - Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) Binding 2 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 40(g_tTex2di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 40(g_tTex2di4) Binding 3 - Decorate 55(g_tTex2du4) DescriptorSet 0 + Decorate 40(g_tTex2di4) DescriptorSet 0 Decorate 55(g_tTex2du4) Binding 4 + Decorate 55(g_tTex2du4) DescriptorSet 0 Decorate 80(@entryPointOutput.Color) Location 0 Decorate 84(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 89(g_tTex1df4a) DescriptorSet 0 Decorate 89(g_tTex1df4a) Binding 1 - Decorate 90(g_tTex1df4) DescriptorSet 0 + Decorate 89(g_tTex1df4a) DescriptorSet 0 Decorate 90(g_tTex1df4) Binding 0 - Decorate 93(g_tTex1di4) DescriptorSet 0 + Decorate 90(g_tTex1df4) DescriptorSet 0 Decorate 93(g_tTex1di4) Binding 0 - Decorate 96(g_tTex1du4) DescriptorSet 0 + Decorate 93(g_tTex1di4) DescriptorSet 0 Decorate 96(g_tTex1du4) Binding 0 + Decorate 96(g_tTex1du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out index 904aaece92..3bf68b5597 100644 --- a/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.array.dx10.frag.out @@ -812,37 +812,37 @@ using depth_any Name 248 "g_tTex1df4a" Name 251 "g_tTex1di4a" Name 254 "g_tTex1du4a" - Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 16(g_tTex2df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 + Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 26($Global) Block MemberDecorate 26($Global) 0 Offset 0 MemberDecorate 26($Global) 1 Offset 8 MemberDecorate 26($Global) 2 Offset 16 MemberDecorate 26($Global) 3 Offset 32 - Decorate 26($Global) Block - Decorate 28 DescriptorSet 0 Decorate 28 Binding 7 - Decorate 41(g_tTex2di4a) DescriptorSet 0 + Decorate 28 DescriptorSet 0 Decorate 41(g_tTex2di4a) Binding 2 - Decorate 55(g_tTex2du4a) DescriptorSet 0 + Decorate 41(g_tTex2di4a) DescriptorSet 0 Decorate 55(g_tTex2du4a) Binding 3 - Decorate 131(g_tTexcdf4a) DescriptorSet 0 + Decorate 55(g_tTex2du4a) DescriptorSet 0 Decorate 131(g_tTexcdf4a) Binding 4 - Decorate 143(g_tTexcdi4a) DescriptorSet 0 + Decorate 131(g_tTexcdf4a) DescriptorSet 0 Decorate 143(g_tTexcdi4a) Binding 5 - Decorate 154(g_tTexcdu4a) DescriptorSet 0 + Decorate 143(g_tTexcdi4a) DescriptorSet 0 Decorate 154(g_tTexcdu4a) Binding 6 + Decorate 154(g_tTexcdu4a) DescriptorSet 0 Decorate 238(@entryPointOutput.Color) Location 0 Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 245(g_sSamp2d) DescriptorSet 0 Decorate 245(g_sSamp2d) Binding 0 - Decorate 248(g_tTex1df4a) DescriptorSet 0 + Decorate 245(g_sSamp2d) DescriptorSet 0 Decorate 248(g_tTex1df4a) Binding 0 - Decorate 251(g_tTex1di4a) DescriptorSet 0 + Decorate 248(g_tTex1df4a) DescriptorSet 0 Decorate 251(g_tTex1di4a) Binding 0 - Decorate 254(g_tTex1du4a) DescriptorSet 0 + Decorate 251(g_tTex1di4a) DescriptorSet 0 Decorate 254(g_tTex1du4a) Binding 0 + Decorate 254(g_tTex1du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out index f8fa2f4607..e94789a3f0 100644 --- a/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.basic.dx10.frag.out @@ -823,45 +823,45 @@ using depth_any Name 258 "g_tTex3df4" Name 261 "g_tTex3di4" Name 264 "g_tTex3du4" - Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) Binding 2 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 + Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 26($Global) Block MemberDecorate 26($Global) 0 Offset 0 MemberDecorate 26($Global) 1 Offset 8 MemberDecorate 26($Global) 2 Offset 16 MemberDecorate 26($Global) 3 Offset 32 - Decorate 26($Global) Block - Decorate 28 DescriptorSet 0 Decorate 28 Binding 8 - Decorate 41(g_tTex2di4) DescriptorSet 0 + Decorate 28 DescriptorSet 0 Decorate 41(g_tTex2di4) Binding 3 - Decorate 55(g_tTex2du4) DescriptorSet 0 + Decorate 41(g_tTex2di4) DescriptorSet 0 Decorate 55(g_tTex2du4) Binding 4 - Decorate 131(g_tTexcdf4) DescriptorSet 0 + Decorate 55(g_tTex2du4) DescriptorSet 0 Decorate 131(g_tTexcdf4) Binding 5 - Decorate 143(g_tTexcdi4) DescriptorSet 0 + Decorate 131(g_tTexcdf4) DescriptorSet 0 Decorate 143(g_tTexcdi4) Binding 6 - Decorate 154(g_tTexcdu4) DescriptorSet 0 + Decorate 143(g_tTexcdi4) DescriptorSet 0 Decorate 154(g_tTexcdu4) Binding 7 + Decorate 154(g_tTexcdu4) DescriptorSet 0 Decorate 238(@entryPointOutput.Color) Location 0 Decorate 242(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 245(g_sSamp2d) DescriptorSet 0 Decorate 245(g_sSamp2d) Binding 0 - Decorate 248(g_tTex1df4a) DescriptorSet 0 + Decorate 245(g_sSamp2d) DescriptorSet 0 Decorate 248(g_tTex1df4a) Binding 1 - Decorate 249(g_tTex1df4) DescriptorSet 0 + Decorate 248(g_tTex1df4a) DescriptorSet 0 Decorate 249(g_tTex1df4) Binding 0 - Decorate 252(g_tTex1di4) DescriptorSet 0 + Decorate 249(g_tTex1df4) DescriptorSet 0 Decorate 252(g_tTex1di4) Binding 0 - Decorate 255(g_tTex1du4) DescriptorSet 0 + Decorate 252(g_tTex1di4) DescriptorSet 0 Decorate 255(g_tTex1du4) Binding 0 - Decorate 258(g_tTex3df4) DescriptorSet 0 + Decorate 255(g_tTex1du4) DescriptorSet 0 Decorate 258(g_tTex3df4) Binding 0 - Decorate 261(g_tTex3di4) DescriptorSet 0 + Decorate 258(g_tTex3df4) DescriptorSet 0 Decorate 261(g_tTex3di4) Binding 0 - Decorate 264(g_tTex3du4) DescriptorSet 0 + Decorate 261(g_tTex3di4) DescriptorSet 0 Decorate 264(g_tTex3du4) Binding 0 + Decorate 264(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out index 63cb39fcb6..165c10c9f0 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out @@ -1333,10 +1333,11 @@ Validation failed Name 392 "g_tTexcdf4" Name 395 "g_tTexcdi4" Name 398 "g_tTexcdu4" - Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) Binding 2 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 + Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 30($Global) Block MemberDecorate 30($Global) 0 Offset 0 MemberDecorate 30($Global) 1 Offset 8 MemberDecorate 30($Global) 2 Offset 16 @@ -1345,37 +1346,36 @@ Validation failed MemberDecorate 30($Global) 5 Offset 56 MemberDecorate 30($Global) 6 Offset 64 MemberDecorate 30($Global) 7 Offset 80 - Decorate 30($Global) Block - Decorate 32 DescriptorSet 0 Decorate 32 Binding 5 - Decorate 47(g_tTex2di4) DescriptorSet 0 + Decorate 32 DescriptorSet 0 Decorate 47(g_tTex2di4) Binding 3 - Decorate 63(g_tTex2du4) DescriptorSet 0 + Decorate 47(g_tTex2di4) DescriptorSet 0 Decorate 63(g_tTex2du4) Binding 4 + Decorate 63(g_tTex2du4) DescriptorSet 0 Decorate 363(@entryPointOutput.Color) Location 0 Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 370(g_sSamp2d) DescriptorSet 0 Decorate 370(g_sSamp2d) Binding 0 - Decorate 373(g_tTex1df4a) DescriptorSet 0 + Decorate 370(g_sSamp2d) DescriptorSet 0 Decorate 373(g_tTex1df4a) Binding 1 - Decorate 374(g_tTex1df4) DescriptorSet 0 + Decorate 373(g_tTex1df4a) DescriptorSet 0 Decorate 374(g_tTex1df4) Binding 0 - Decorate 377(g_tTex1di4) DescriptorSet 0 + Decorate 374(g_tTex1df4) DescriptorSet 0 Decorate 377(g_tTex1di4) Binding 0 - Decorate 380(g_tTex1du4) DescriptorSet 0 + Decorate 377(g_tTex1di4) DescriptorSet 0 Decorate 380(g_tTex1du4) Binding 0 - Decorate 383(g_tTex3df4) DescriptorSet 0 + Decorate 380(g_tTex1du4) DescriptorSet 0 Decorate 383(g_tTex3df4) Binding 0 - Decorate 386(g_tTex3di4) DescriptorSet 0 + Decorate 383(g_tTex3df4) DescriptorSet 0 Decorate 386(g_tTex3di4) Binding 0 - Decorate 389(g_tTex3du4) DescriptorSet 0 + Decorate 386(g_tTex3di4) DescriptorSet 0 Decorate 389(g_tTex3du4) Binding 0 - Decorate 392(g_tTexcdf4) DescriptorSet 0 + Decorate 389(g_tTex3du4) DescriptorSet 0 Decorate 392(g_tTexcdf4) Binding 0 - Decorate 395(g_tTexcdi4) DescriptorSet 0 + Decorate 392(g_tTexcdf4) DescriptorSet 0 Decorate 395(g_tTexcdi4) Binding 0 - Decorate 398(g_tTexcdu4) DescriptorSet 0 + Decorate 395(g_tTexcdi4) DescriptorSet 0 Decorate 398(g_tTexcdu4) Binding 0 + Decorate 398(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out index da83e01170..42360c5948 100644 --- a/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out @@ -1322,10 +1322,11 @@ Validation failed Name 382 "g_tTexcdf4a" Name 385 "g_tTexcdi4a" Name 388 "g_tTexcdu4a" - Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 16(g_tTex2df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex2df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 + Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 30($Global) Block MemberDecorate 30($Global) 0 Offset 0 MemberDecorate 30($Global) 1 Offset 8 MemberDecorate 30($Global) 2 Offset 16 @@ -1334,29 +1335,28 @@ Validation failed MemberDecorate 30($Global) 5 Offset 56 MemberDecorate 30($Global) 6 Offset 64 MemberDecorate 30($Global) 7 Offset 80 - Decorate 30($Global) Block - Decorate 32 DescriptorSet 0 Decorate 32 Binding 4 - Decorate 47(g_tTex2di4a) DescriptorSet 0 + Decorate 32 DescriptorSet 0 Decorate 47(g_tTex2di4a) Binding 2 - Decorate 63(g_tTex2du4a) DescriptorSet 0 + Decorate 47(g_tTex2di4a) DescriptorSet 0 Decorate 63(g_tTex2du4a) Binding 3 + Decorate 63(g_tTex2du4a) DescriptorSet 0 Decorate 363(@entryPointOutput.Color) Location 0 Decorate 367(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 370(g_sSamp2d) DescriptorSet 0 Decorate 370(g_sSamp2d) Binding 0 - Decorate 373(g_tTex1df4a) DescriptorSet 0 + Decorate 370(g_sSamp2d) DescriptorSet 0 Decorate 373(g_tTex1df4a) Binding 0 - Decorate 376(g_tTex1di4a) DescriptorSet 0 + Decorate 373(g_tTex1df4a) DescriptorSet 0 Decorate 376(g_tTex1di4a) Binding 0 - Decorate 379(g_tTex1du4a) DescriptorSet 0 + Decorate 376(g_tTex1di4a) DescriptorSet 0 Decorate 379(g_tTex1du4a) Binding 0 - Decorate 382(g_tTexcdf4a) DescriptorSet 0 + Decorate 379(g_tTex1du4a) DescriptorSet 0 Decorate 382(g_tTexcdf4a) Binding 0 - Decorate 385(g_tTexcdi4a) DescriptorSet 0 + Decorate 382(g_tTexcdf4a) DescriptorSet 0 Decorate 385(g_tTexcdi4a) Binding 0 - Decorate 388(g_tTexcdu4a) DescriptorSet 0 + Decorate 385(g_tTexcdi4a) DescriptorSet 0 Decorate 388(g_tTexcdu4a) Binding 0 + Decorate 388(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out index ff834ec45c..b734da5eee 100644 --- a/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.gathercmpRGBA.offset.dx10.frag.out @@ -506,43 +506,43 @@ using depth_any Name 157 "g_tTexcdf4" Name 160 "g_tTexcdi4" Name 163 "g_tTexcdu4" - Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 16(g_tTex2df4) Binding 2 - Decorate 20(g_sSampCmp) DescriptorSet 0 + Decorate 16(g_tTex2df4) DescriptorSet 0 Decorate 20(g_sSampCmp) Binding 0 + Decorate 20(g_sSampCmp) DescriptorSet 0 + Decorate 26($Global) Block MemberDecorate 26($Global) 0 Offset 0 MemberDecorate 26($Global) 1 Offset 8 MemberDecorate 26($Global) 2 Offset 16 MemberDecorate 26($Global) 3 Offset 32 - Decorate 26($Global) Block - Decorate 28 DescriptorSet 0 Decorate 28 Binding 5 - Decorate 44(g_tTex2di4) DescriptorSet 0 + Decorate 28 DescriptorSet 0 Decorate 44(g_tTex2di4) Binding 3 - Decorate 60(g_tTex2du4) DescriptorSet 0 + Decorate 44(g_tTex2di4) DescriptorSet 0 Decorate 60(g_tTex2du4) Binding 4 + Decorate 60(g_tTex2du4) DescriptorSet 0 Decorate 129(@entryPointOutput.Color) Location 0 Decorate 133(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 138(g_tTex1df4a) DescriptorSet 0 Decorate 138(g_tTex1df4a) Binding 1 - Decorate 139(g_tTex1df4) DescriptorSet 0 + Decorate 138(g_tTex1df4a) DescriptorSet 0 Decorate 139(g_tTex1df4) Binding 0 - Decorate 142(g_tTex1di4) DescriptorSet 0 + Decorate 139(g_tTex1df4) DescriptorSet 0 Decorate 142(g_tTex1di4) Binding 0 - Decorate 145(g_tTex1du4) DescriptorSet 0 + Decorate 142(g_tTex1di4) DescriptorSet 0 Decorate 145(g_tTex1du4) Binding 0 - Decorate 148(g_tTex3df4) DescriptorSet 0 + Decorate 145(g_tTex1du4) DescriptorSet 0 Decorate 148(g_tTex3df4) Binding 0 - Decorate 151(g_tTex3di4) DescriptorSet 0 + Decorate 148(g_tTex3df4) DescriptorSet 0 Decorate 151(g_tTex3di4) Binding 0 - Decorate 154(g_tTex3du4) DescriptorSet 0 + Decorate 151(g_tTex3di4) DescriptorSet 0 Decorate 154(g_tTex3du4) Binding 0 - Decorate 157(g_tTexcdf4) DescriptorSet 0 + Decorate 154(g_tTex3du4) DescriptorSet 0 Decorate 157(g_tTexcdf4) Binding 0 - Decorate 160(g_tTexcdi4) DescriptorSet 0 + Decorate 157(g_tTexcdf4) DescriptorSet 0 Decorate 160(g_tTexcdi4) Binding 0 - Decorate 163(g_tTexcdu4) DescriptorSet 0 + Decorate 160(g_tTexcdi4) DescriptorSet 0 Decorate 163(g_tTexcdu4) Binding 0 + Decorate 163(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.getdimensions.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.dx10.frag.out index 9e1d5439c4..18d5500918 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.frag.out @@ -2422,64 +2422,64 @@ using depth_any Name 540 "@entryPointOutput.Color" Name 544 "@entryPointOutput.Depth" Name 549 "g_sSamp" - Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 17(g_tTex1df4) Binding 0 - Decorate 35(g_tTex1di4) DescriptorSet 0 + Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 - Decorate 48(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 2 - Decorate 63(g_tTex1df4a) DescriptorSet 0 + Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 63(g_tTex1df4a) Binding 12 - Decorate 85(g_tTex1di4a) DescriptorSet 0 + Decorate 63(g_tTex1df4a) DescriptorSet 0 Decorate 85(g_tTex1di4a) Binding 13 - Decorate 104(g_tTex1du4a) DescriptorSet 0 + Decorate 85(g_tTex1di4a) DescriptorSet 0 Decorate 104(g_tTex1du4a) Binding 14 - Decorate 123(g_tTex2df4) DescriptorSet 0 + Decorate 104(g_tTex1du4a) DescriptorSet 0 Decorate 123(g_tTex2df4) Binding 3 - Decorate 143(g_tTex2di4) DescriptorSet 0 + Decorate 123(g_tTex2df4) DescriptorSet 0 Decorate 143(g_tTex2di4) Binding 4 - Decorate 162(g_tTex2du4) DescriptorSet 0 + Decorate 143(g_tTex2di4) DescriptorSet 0 Decorate 162(g_tTex2du4) Binding 5 - Decorate 183(g_tTex2df4a) DescriptorSet 0 + Decorate 162(g_tTex2du4) DescriptorSet 0 Decorate 183(g_tTex2df4a) Binding 15 - Decorate 207(g_tTex2di4a) DescriptorSet 0 + Decorate 183(g_tTex2df4a) DescriptorSet 0 Decorate 207(g_tTex2di4a) Binding 16 - Decorate 230(g_tTex2du4a) DescriptorSet 0 + Decorate 207(g_tTex2di4a) DescriptorSet 0 Decorate 230(g_tTex2du4a) Binding 17 - Decorate 253(g_tTex3df4) DescriptorSet 0 + Decorate 230(g_tTex2du4a) DescriptorSet 0 Decorate 253(g_tTex3df4) Binding 6 - Decorate 277(g_tTex3di4) DescriptorSet 0 + Decorate 253(g_tTex3df4) DescriptorSet 0 Decorate 277(g_tTex3di4) Binding 7 - Decorate 300(g_tTex3du4) DescriptorSet 0 + Decorate 277(g_tTex3di4) DescriptorSet 0 Decorate 300(g_tTex3du4) Binding 8 - Decorate 323(g_tTexcdf4) DescriptorSet 0 + Decorate 300(g_tTex3du4) DescriptorSet 0 Decorate 323(g_tTexcdf4) Binding 9 - Decorate 342(g_tTexcdi4) DescriptorSet 0 + Decorate 323(g_tTexcdf4) DescriptorSet 0 Decorate 342(g_tTexcdi4) Binding 10 - Decorate 361(g_tTexcdu4) DescriptorSet 0 + Decorate 342(g_tTexcdi4) DescriptorSet 0 Decorate 361(g_tTexcdu4) Binding 11 - Decorate 380(g_tTexcdf4a) DescriptorSet 0 + Decorate 361(g_tTexcdu4) DescriptorSet 0 Decorate 380(g_tTexcdf4a) Binding 18 - Decorate 403(g_tTexcdi4a) DescriptorSet 0 + Decorate 380(g_tTexcdf4a) DescriptorSet 0 Decorate 403(g_tTexcdi4a) Binding 19 - Decorate 426(g_tTexcdu4a) DescriptorSet 0 + Decorate 403(g_tTexcdi4a) DescriptorSet 0 Decorate 426(g_tTexcdu4a) Binding 20 - Decorate 449(g_tTex2dmsf4) DescriptorSet 0 + Decorate 426(g_tTexcdu4a) DescriptorSet 0 Decorate 449(g_tTex2dmsf4) Binding 21 - Decorate 462(g_tTex2dmsi4) DescriptorSet 0 + Decorate 449(g_tTex2dmsf4) DescriptorSet 0 Decorate 462(g_tTex2dmsi4) Binding 22 - Decorate 474(g_tTex2dmsu4) DescriptorSet 0 + Decorate 462(g_tTex2dmsi4) DescriptorSet 0 Decorate 474(g_tTex2dmsu4) Binding 23 - Decorate 486(g_tTex2dmsf4a) DescriptorSet 0 + Decorate 474(g_tTex2dmsu4) DescriptorSet 0 Decorate 486(g_tTex2dmsf4a) Binding 24 - Decorate 500(g_tTex2dmsi4a) DescriptorSet 0 + Decorate 486(g_tTex2dmsf4a) DescriptorSet 0 Decorate 500(g_tTex2dmsi4a) Binding 25 - Decorate 514(g_tTex2dmsu4a) DescriptorSet 0 + Decorate 500(g_tTex2dmsi4a) DescriptorSet 0 Decorate 514(g_tTex2dmsu4a) Binding 26 + Decorate 514(g_tTex2dmsu4a) DescriptorSet 0 Decorate 540(@entryPointOutput.Color) Location 0 Decorate 544(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 549(g_sSamp) DescriptorSet 0 Decorate 549(g_sSamp) Binding 0 + Decorate 549(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.getdimensions.dx10.vert.out b/Test/baseResults/hlsl.getdimensions.dx10.vert.out index a7d27a867e..925dd7e303 100644 --- a/Test/baseResults/hlsl.getdimensions.dx10.vert.out +++ b/Test/baseResults/hlsl.getdimensions.dx10.vert.out @@ -138,11 +138,11 @@ Shader version: 500 Name 33 "vsout" Name 42 "@entryPointOutput.Pos" Name 47 "g_sSamp" - Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 17(g_tTex1df4) Binding 0 + Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 42(@entryPointOutput.Pos) BuiltIn Position - Decorate 47(g_sSamp) DescriptorSet 0 Decorate 47(g_sSamp) Binding 0 + Decorate 47(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out index 7af13b232b..01e998440f 100644 --- a/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out +++ b/Test/baseResults/hlsl.getdimensions.rw.dx10.frag.out @@ -791,46 +791,47 @@ using depth_any MemberName 229($Global) 6 "o3" MemberName 229($Global) 7 "o4" Name 231 "" - Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 17(g_tTex1df4) Binding 0 - Decorate 26(g_tTex1di4) DescriptorSet 0 + Decorate 17(g_tTex1df4) DescriptorSet 0 Decorate 26(g_tTex1di4) Binding 1 - Decorate 33(g_tTex1du4) DescriptorSet 0 + Decorate 26(g_tTex1di4) DescriptorSet 0 Decorate 33(g_tTex1du4) Binding 2 - Decorate 40(g_tBuffF) DescriptorSet 0 + Decorate 33(g_tTex1du4) DescriptorSet 0 Decorate 40(g_tBuffF) Binding 15 - Decorate 47(g_tBuffI) DescriptorSet 0 + Decorate 40(g_tBuffF) DescriptorSet 0 Decorate 47(g_tBuffI) Binding 16 - Decorate 54(g_tBuffU) DescriptorSet 0 + Decorate 47(g_tBuffI) DescriptorSet 0 Decorate 54(g_tBuffU) Binding 17 - Decorate 63(g_tTex1df4a) DescriptorSet 0 + Decorate 54(g_tBuffU) DescriptorSet 0 Decorate 63(g_tTex1df4a) Binding 9 - Decorate 76(g_tTex1di4a) DescriptorSet 0 + Decorate 63(g_tTex1df4a) DescriptorSet 0 Decorate 76(g_tTex1di4a) Binding 10 - Decorate 86(g_tTex1du4a) DescriptorSet 0 + Decorate 76(g_tTex1di4a) DescriptorSet 0 Decorate 86(g_tTex1du4a) Binding 11 - Decorate 96(g_tTex2df4) DescriptorSet 0 + Decorate 86(g_tTex1du4a) DescriptorSet 0 Decorate 96(g_tTex2df4) Binding 3 - Decorate 107(g_tTex2di4) DescriptorSet 0 + Decorate 96(g_tTex2df4) DescriptorSet 0 Decorate 107(g_tTex2di4) Binding 4 - Decorate 117(g_tTex2du4) DescriptorSet 0 + Decorate 107(g_tTex2di4) DescriptorSet 0 Decorate 117(g_tTex2du4) Binding 5 - Decorate 129(g_tTex2df4a) DescriptorSet 0 + Decorate 117(g_tTex2du4) DescriptorSet 0 Decorate 129(g_tTex2df4a) Binding 12 - Decorate 142(g_tTex2di4a) DescriptorSet 0 + Decorate 129(g_tTex2df4a) DescriptorSet 0 Decorate 142(g_tTex2di4a) Binding 13 - Decorate 154(g_tTex2du4a) DescriptorSet 0 + Decorate 142(g_tTex2di4a) DescriptorSet 0 Decorate 154(g_tTex2du4a) Binding 14 - Decorate 166(g_tTex3df4) DescriptorSet 0 + Decorate 154(g_tTex2du4a) DescriptorSet 0 Decorate 166(g_tTex3df4) Binding 6 - Decorate 179(g_tTex3di4) DescriptorSet 0 + Decorate 166(g_tTex3df4) DescriptorSet 0 Decorate 179(g_tTex3di4) Binding 7 - Decorate 191(g_tTex3du4) DescriptorSet 0 + Decorate 179(g_tTex3di4) DescriptorSet 0 Decorate 191(g_tTex3du4) Binding 8 + Decorate 191(g_tTex3du4) DescriptorSet 0 Decorate 216(@entryPointOutput.Color) Location 0 Decorate 220(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 225(g_sSamp) DescriptorSet 0 Decorate 225(g_sSamp) Binding 0 + Decorate 225(g_sSamp) DescriptorSet 0 + Decorate 229($Global) Block MemberDecorate 229($Global) 0 Offset 0 MemberDecorate 229($Global) 1 Offset 8 MemberDecorate 229($Global) 2 Offset 16 @@ -839,9 +840,8 @@ using depth_any MemberDecorate 229($Global) 5 Offset 56 MemberDecorate 229($Global) 6 Offset 64 MemberDecorate 229($Global) 7 Offset 80 - Decorate 229($Global) Block - Decorate 231 DescriptorSet 0 Decorate 231 Binding 0 + Decorate 231 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out index f08a91cd49..c2b9709420 100644 --- a/Test/baseResults/hlsl.getsampleposition.dx10.frag.out +++ b/Test/baseResults/hlsl.getsampleposition.dx10.frag.out @@ -619,16 +619,16 @@ using depth_any Name 188 "@entryPointOutput.Color" Name 192 "@entryPointOutput.Depth" Name 197 "g_sSamp" - Decorate 23(g_tTex2dmsf4) DescriptorSet 0 Decorate 23(g_tTex2dmsf4) Binding 1 - Decorate 131(g_tTex2dmsf4a) DescriptorSet 0 + Decorate 23(g_tTex2dmsf4) DescriptorSet 0 Decorate 131(g_tTex2dmsf4a) Binding 2 + Decorate 131(g_tTex2dmsf4a) DescriptorSet 0 Decorate 181(sample) Flat Decorate 181(sample) Location 0 Decorate 188(@entryPointOutput.Color) Location 0 Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 197(g_sSamp) DescriptorSet 0 Decorate 197(g_sSamp) Binding 0 + Decorate 197(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.global-const-init.frag.out b/Test/baseResults/hlsl.global-const-init.frag.out index 0510b3e83e..4b9d98e78e 100644 --- a/Test/baseResults/hlsl.global-const-init.frag.out +++ b/Test/baseResults/hlsl.global-const-init.frag.out @@ -119,10 +119,10 @@ gl_FragCoord origin is upper left Name 15 "" Name 26 "a1" Name 41 "@entryPointOutput" - MemberDecorate 13(CB) 0 Offset 0 Decorate 13(CB) Block - Decorate 15 DescriptorSet 0 + MemberDecorate 13(CB) 0 Offset 0 Decorate 15 Binding 0 + Decorate 15 DescriptorSet 0 Decorate 41(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.groupid.comp.out b/Test/baseResults/hlsl.groupid.comp.out index 39c5fede0b..ba1eb1364a 100644 --- a/Test/baseResults/hlsl.groupid.comp.out +++ b/Test/baseResults/hlsl.groupid.comp.out @@ -99,8 +99,8 @@ local_size = (8, 8, 1) Name 26 "vGroupId" Name 29 "vGroupId" Name 34 "param" - Decorate 22(OutputTexture) DescriptorSet 0 Decorate 22(OutputTexture) Binding 0 + Decorate 22(OutputTexture) DescriptorSet 0 Decorate 29(vGroupId) BuiltIn WorkgroupId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.gs-hs-mix.tesc.out b/Test/baseResults/hlsl.gs-hs-mix.tesc.out index 5071a4745f..8dcbe4db67 100644 --- a/Test/baseResults/hlsl.gs-hs-mix.tesc.out +++ b/Test/baseResults/hlsl.gs-hs-mix.tesc.out @@ -1057,32 +1057,32 @@ triangle order = ccw Name 204 "Q1" Name 213 "Q2" Name 222 "vertex" + Decorate 42(UniformBlock0) Block MemberDecorate 42(UniformBlock0) 0 RowMajor - MemberDecorate 42(UniformBlock0) 0 Offset 0 MemberDecorate 42(UniformBlock0) 0 MatrixStride 16 + MemberDecorate 42(UniformBlock0) 0 Offset 0 MemberDecorate 42(UniformBlock0) 1 RowMajor - MemberDecorate 42(UniformBlock0) 1 Offset 64 MemberDecorate 42(UniformBlock0) 1 MatrixStride 16 + MemberDecorate 42(UniformBlock0) 1 Offset 64 MemberDecorate 42(UniformBlock0) 2 RowMajor - MemberDecorate 42(UniformBlock0) 2 Offset 128 MemberDecorate 42(UniformBlock0) 2 MatrixStride 16 + MemberDecorate 42(UniformBlock0) 2 Offset 128 MemberDecorate 42(UniformBlock0) 3 RowMajor - MemberDecorate 42(UniformBlock0) 3 Offset 192 MemberDecorate 42(UniformBlock0) 3 MatrixStride 16 + MemberDecorate 42(UniformBlock0) 3 Offset 192 MemberDecorate 42(UniformBlock0) 4 Offset 240 MemberDecorate 42(UniformBlock0) 5 Offset 256 MemberDecorate 42(UniformBlock0) 6 Offset 272 - Decorate 42(UniformBlock0) Block - Decorate 44 DescriptorSet 0 Decorate 44 Binding 0 + Decorate 44 DescriptorSet 0 Decorate 97(patch.PositionWS) Location 0 Decorate 102(patch.NormalWS) Location 1 Decorate 120(id) BuiltIn InvocationId Decorate 123(@entryPointOutput.PositionWS) Location 0 - Decorate 145(@patchConstantOutput.EdgeTessFactor) Patch Decorate 145(@patchConstantOutput.EdgeTessFactor) BuiltIn TessLevelOuter - Decorate 158(@patchConstantOutput.InsideTessFactor) Patch + Decorate 145(@patchConstantOutput.EdgeTessFactor) Patch Decorate 158(@patchConstantOutput.InsideTessFactor) BuiltIn TessLevelInner + Decorate 158(@patchConstantOutput.InsideTessFactor) Patch Decorate 162(@patchConstantOutput.NormalWS[0]) Patch Decorate 162(@patchConstantOutput.NormalWS[0]) Location 1 Decorate 165(@patchConstantOutput.NormalWS[1]) Patch diff --git a/Test/baseResults/hlsl.hlslOffset.vert.out b/Test/baseResults/hlsl.hlslOffset.vert.out index 0f7b09bfe9..d4b90dbf8d 100644 --- a/Test/baseResults/hlsl.hlslOffset.vert.out +++ b/Test/baseResults/hlsl.hlslOffset.vert.out @@ -50,6 +50,7 @@ Shader version: 500 MemberName 15(b) 10 "m96" Name 17 "" Decorate 14 ArrayStride 16 + Decorate 15(b) Block MemberDecorate 15(b) 0 Offset 0 MemberDecorate 15(b) 1 Offset 4 MemberDecorate 15(b) 2 Offset 16 @@ -61,9 +62,8 @@ Shader version: 500 MemberDecorate 15(b) 8 Offset 76 MemberDecorate 15(b) 9 Offset 80 MemberDecorate 15(b) 10 Offset 96 - Decorate 15(b) Block - Decorate 17 DescriptorSet 0 Decorate 17 Binding 0 + Decorate 17 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 9: TypeFloat 32 diff --git a/Test/baseResults/hlsl.hull.1.tesc.out b/Test/baseResults/hlsl.hull.1.tesc.out index 4188942065..6914456d8a 100644 --- a/Test/baseResults/hlsl.hull.1.tesc.out +++ b/Test/baseResults/hlsl.hull.1.tesc.out @@ -364,8 +364,8 @@ vertex spacing = equal_spacing Decorate 60(m_cpid) BuiltIn InvocationId Decorate 63(@entryPointOutput.cpoint) Location 0 Decorate 81(pid) BuiltIn PrimitiveId - Decorate 87(@patchConstantOutput.edges) Patch Decorate 87(@patchConstantOutput.edges) BuiltIn TessLevelOuter + Decorate 87(@patchConstantOutput.edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.hull.2.tesc.out b/Test/baseResults/hlsl.hull.2.tesc.out index 0d08b68197..1a11735959 100644 --- a/Test/baseResults/hlsl.hull.2.tesc.out +++ b/Test/baseResults/hlsl.hull.2.tesc.out @@ -361,8 +361,8 @@ vertex spacing = equal_spacing Decorate 63(InvocationId) BuiltIn InvocationId Decorate 79(pid) BuiltIn PrimitiveId Decorate 81(pos) BuiltIn Position - Decorate 89(@patchConstantOutput.edges) Patch Decorate 89(@patchConstantOutput.edges) BuiltIn TessLevelOuter + Decorate 89(@patchConstantOutput.edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.hull.3.tesc.out b/Test/baseResults/hlsl.hull.3.tesc.out index 808edd3a8e..4e0bf678fe 100644 --- a/Test/baseResults/hlsl.hull.3.tesc.out +++ b/Test/baseResults/hlsl.hull.3.tesc.out @@ -362,8 +362,8 @@ vertex spacing = equal_spacing Decorate 63(InvocationId) BuiltIn InvocationId Decorate 79(pid) BuiltIn PrimitiveId Decorate 81(pos) BuiltIn Position - Decorate 89(@patchConstantOutput.edges) Patch Decorate 89(@patchConstantOutput.edges) BuiltIn TessLevelOuter + Decorate 89(@patchConstantOutput.edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.hull.4.tesc.out b/Test/baseResults/hlsl.hull.4.tesc.out index bffc464626..343844b9a4 100644 --- a/Test/baseResults/hlsl.hull.4.tesc.out +++ b/Test/baseResults/hlsl.hull.4.tesc.out @@ -502,10 +502,10 @@ triangle order = cw Decorate 61(I.m_Normal) Location 0 Decorate 80(cpid) BuiltIn InvocationId Decorate 83(@entryPointOutput.m_Position) BuiltIn Position - Decorate 107(@patchConstantOutput.fTessFactor) Patch Decorate 107(@patchConstantOutput.fTessFactor) BuiltIn TessLevelOuter - Decorate 120(@patchConstantOutput.fInsideTessFactor) Patch + Decorate 107(@patchConstantOutput.fTessFactor) Patch Decorate 120(@patchConstantOutput.fInsideTessFactor) BuiltIn TessLevelInner + Decorate 120(@patchConstantOutput.fInsideTessFactor) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.hull.6.tesc.out b/Test/baseResults/hlsl.hull.6.tesc.out index b673a8c588..8522e94b89 100644 --- a/Test/baseResults/hlsl.hull.6.tesc.out +++ b/Test/baseResults/hlsl.hull.6.tesc.out @@ -503,10 +503,10 @@ triangle order = ccw Decorate 97(@entryPointOutput.Position) Location 0 Decorate 104(@entryPointOutput.Color) Location 1 Decorate 117(BlockID) BuiltIn PrimitiveId - Decorate 119(Inside) Patch Decorate 119(Inside) BuiltIn TessLevelInner - Decorate 128(@patchConstantOutput.Edges) Patch + Decorate 119(Inside) Patch Decorate 128(@patchConstantOutput.Edges) BuiltIn TessLevelOuter + Decorate 128(@patchConstantOutput.Edges) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out index 4e706c0f60..38927652e9 100644 --- a/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out +++ b/Test/baseResults/hlsl.hull.ctrlpt-1.tesc.out @@ -522,10 +522,10 @@ triangle order = cw Decorate 42(i.val) Location 0 Decorate 57(cpid) BuiltIn InvocationId Decorate 60(@entryPointOutput.val) Location 0 - Decorate 105(@patchConstantOutput.tfactor) Patch Decorate 105(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter - Decorate 119(@patchConstantOutput.flInFactor) Patch + Decorate 105(@patchConstantOutput.tfactor) Patch Decorate 119(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner + Decorate 119(@patchConstantOutput.flInFactor) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out index fd7cf0b641..a189446861 100644 --- a/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out +++ b/Test/baseResults/hlsl.hull.ctrlpt-2.tesc.out @@ -541,10 +541,10 @@ triangle order = cw Decorate 43(i.val) Location 0 Decorate 58(cpid) BuiltIn InvocationId Decorate 61(@entryPointOutput.val) Location 0 - Decorate 107(@patchConstantOutput.tfactor) Patch Decorate 107(@patchConstantOutput.tfactor) BuiltIn TessLevelOuter - Decorate 121(@patchConstantOutput.flInFactor) Patch + Decorate 107(@patchConstantOutput.tfactor) Patch Decorate 121(@patchConstantOutput.flInFactor) BuiltIn TessLevelInner + Decorate 121(@patchConstantOutput.flInFactor) Patch 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out index 6573820d2d..83f04cfc60 100644 --- a/Test/baseResults/hlsl.imagefetch-subvec4.comp.out +++ b/Test/baseResults/hlsl.imagefetch-subvec4.comp.out @@ -444,36 +444,36 @@ local_size = (8, 8, 8) Name 179 "tid" Name 181 "tid" Name 183 "param" - Decorate 19(i1D) DescriptorSet 0 Decorate 19(i1D) Binding 0 - Decorate 34(i2D) DescriptorSet 0 + Decorate 19(i1D) DescriptorSet 0 Decorate 34(i2D) Binding 1 - Decorate 45(i3D) DescriptorSet 0 + Decorate 34(i2D) DescriptorSet 0 Decorate 45(i3D) Binding 2 - Decorate 54(i1DArray) DescriptorSet 0 + Decorate 45(i3D) DescriptorSet 0 Decorate 54(i1DArray) Binding 3 - Decorate 64(i2DArray) DescriptorSet 0 + Decorate 54(i1DArray) DescriptorSet 0 Decorate 64(i2DArray) Binding 4 - Decorate 73(i2DMS) DescriptorSet 0 + Decorate 64(i2DArray) DescriptorSet 0 Decorate 73(i2DMS) Binding 5 - Decorate 86(i2DMSArray) DescriptorSet 0 + Decorate 73(i2DMS) DescriptorSet 0 Decorate 86(i2DMSArray) Binding 6 - Decorate 100(ii1D) DescriptorSet 0 + Decorate 86(i2DMSArray) DescriptorSet 0 Decorate 100(ii1D) Binding 7 - Decorate 111(ii2D) DescriptorSet 0 + Decorate 100(ii1D) DescriptorSet 0 Decorate 111(ii2D) Binding 8 - Decorate 121(ii3D) DescriptorSet 0 + Decorate 111(ii2D) DescriptorSet 0 Decorate 121(ii3D) Binding 9 - Decorate 130(ii1DArray) DescriptorSet 0 + Decorate 121(ii3D) DescriptorSet 0 Decorate 130(ii1DArray) Binding 10 - Decorate 140(ii2DArray) DescriptorSet 0 + Decorate 130(ii1DArray) DescriptorSet 0 Decorate 140(ii2DArray) Binding 11 - Decorate 149(ii2DMS) DescriptorSet 0 + Decorate 140(ii2DArray) DescriptorSet 0 Decorate 149(ii2DMS) Binding 12 - Decorate 160(ii2DMSArray) DescriptorSet 0 + Decorate 149(ii2DMS) DescriptorSet 0 Decorate 160(ii2DMSArray) Binding 13 - Decorate 175(OUT) DescriptorSet 0 + Decorate 160(ii2DMSArray) DescriptorSet 0 Decorate 175(OUT) Binding 0 + Decorate 175(OUT) DescriptorSet 0 Decorate 181(tid) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.imageload-subvec4.comp.out b/Test/baseResults/hlsl.imageload-subvec4.comp.out index d54075f166..e17141727a 100644 --- a/Test/baseResults/hlsl.imageload-subvec4.comp.out +++ b/Test/baseResults/hlsl.imageload-subvec4.comp.out @@ -296,28 +296,28 @@ local_size = (8, 8, 8) Name 131 "tid" Name 133 "tid" Name 135 "param" - Decorate 19(i1D) DescriptorSet 0 Decorate 19(i1D) Binding 0 - Decorate 32(i2D) DescriptorSet 0 + Decorate 19(i1D) DescriptorSet 0 Decorate 32(i2D) Binding 1 - Decorate 43(i3D) DescriptorSet 0 + Decorate 32(i2D) DescriptorSet 0 Decorate 43(i3D) Binding 2 - Decorate 52(i1DArray) DescriptorSet 0 + Decorate 43(i3D) DescriptorSet 0 Decorate 52(i1DArray) Binding 3 - Decorate 62(i2DArray) DescriptorSet 0 + Decorate 52(i1DArray) DescriptorSet 0 Decorate 62(i2DArray) Binding 4 - Decorate 75(ii1D) DescriptorSet 0 + Decorate 62(i2DArray) DescriptorSet 0 Decorate 75(ii1D) Binding 5 - Decorate 86(ii2D) DescriptorSet 0 + Decorate 75(ii1D) DescriptorSet 0 Decorate 86(ii2D) Binding 6 - Decorate 96(ii3D) DescriptorSet 0 + Decorate 86(ii2D) DescriptorSet 0 Decorate 96(ii3D) Binding 7 - Decorate 105(ii1DArray) DescriptorSet 0 + Decorate 96(ii3D) DescriptorSet 0 Decorate 105(ii1DArray) Binding 8 - Decorate 115(ii2DArray) DescriptorSet 0 + Decorate 105(ii1DArray) DescriptorSet 0 Decorate 115(ii2DArray) Binding 9 - Decorate 127(OUT) DescriptorSet 0 + Decorate 115(ii2DArray) DescriptorSet 0 Decorate 127(OUT) Binding 10 + Decorate 127(OUT) DescriptorSet 0 Decorate 133(tid) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.implicitBool.frag.out b/Test/baseResults/hlsl.implicitBool.frag.out index 381e835c9a..03d04876a5 100644 --- a/Test/baseResults/hlsl.implicitBool.frag.out +++ b/Test/baseResults/hlsl.implicitBool.frag.out @@ -354,13 +354,13 @@ gl_FragCoord origin is upper left Name 100 "i" Name 120 "g" Name 137 "@entryPointOutput" + Decorate 16($Global) Block MemberDecorate 16($Global) 0 Offset 0 MemberDecorate 16($Global) 1 Offset 4 MemberDecorate 16($Global) 2 Offset 8 MemberDecorate 16($Global) 3 Offset 12 - Decorate 16($Global) Block - Decorate 18 DescriptorSet 0 Decorate 18 Binding 0 + Decorate 18 DescriptorSet 0 Decorate 137(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.include.vert.out b/Test/baseResults/hlsl.include.vert.out index 95a5b906f5..d2e147bd45 100644 --- a/Test/baseResults/hlsl.include.vert.out +++ b/Test/baseResults/hlsl.include.vert.out @@ -19,15 +19,15 @@ MemberName 11($Global) 5 "i5" Name 13 "" Name 42 "@entryPointOutput" + Decorate 11($Global) Block MemberDecorate 11($Global) 0 Offset 0 MemberDecorate 11($Global) 1 Offset 16 MemberDecorate 11($Global) 2 Offset 32 MemberDecorate 11($Global) 3 Offset 48 MemberDecorate 11($Global) 4 Offset 64 MemberDecorate 11($Global) 5 Offset 80 - Decorate 11($Global) Block - Decorate 13 DescriptorSet 0 Decorate 13 Binding 0 + Decorate 13 DescriptorSet 0 Decorate 42(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.init.frag.out b/Test/baseResults/hlsl.init.frag.out index 35a89f045b..89b1a74fee 100644 --- a/Test/baseResults/hlsl.init.frag.out +++ b/Test/baseResults/hlsl.init.frag.out @@ -392,12 +392,12 @@ gl_FragCoord origin is upper left Name 109 "" Decorate 98(input) Location 0 Decorate 101(@entryPointOutput) Location 0 + Decorate 107(Constants) Block MemberDecorate 107(Constants) 0 Offset 0 MemberDecorate 107(Constants) 1 Offset 4 MemberDecorate 107(Constants) 2 Offset 8 - Decorate 107(Constants) Block - Decorate 109 DescriptorSet 0 Decorate 109 Binding 0 + Decorate 109 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.inoutquals.frag.out b/Test/baseResults/hlsl.inoutquals.frag.out index 931208b9be..acea80bf7e 100644 --- a/Test/baseResults/hlsl.inoutquals.frag.out +++ b/Test/baseResults/hlsl.inoutquals.frag.out @@ -253,8 +253,8 @@ using depth_any Name 78 "@entryPointOutput.Color" Name 82 "@entryPointOutput.Depth" Name 88 "sampleMask" - Decorate 68(inpos) NoPerspective Decorate 68(inpos) BuiltIn FragCoord + Decorate 68(inpos) NoPerspective Decorate 78(@entryPointOutput.Color) Location 0 Decorate 82(@entryPointOutput.Depth) BuiltIn FragDepth Decorate 88(sampleMask) BuiltIn SampleMask diff --git a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out index 75a66d6f14..69416c3796 100644 --- a/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out +++ b/Test/baseResults/hlsl.intrinsics.d3dcolortoubyte4.frag.out @@ -89,10 +89,10 @@ gl_FragCoord origin is upper left MemberName 14($Global) 0 "col4" Name 16 "" Name 27 "@entryPointOutput" - MemberDecorate 14($Global) 0 Offset 0 Decorate 14($Global) Block - Decorate 16 DescriptorSet 0 + MemberDecorate 14($Global) 0 Offset 0 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 27(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out index c68fc960df..592bb88754 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.down.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.down.frag.out @@ -131,6 +131,7 @@ gl_FragCoord origin is upper left Name 29 "r01" Name 37 "ps_output" Name 47 "@entryPointOutput.color" + Decorate 19($Global) Block MemberDecorate 19($Global) 0 Offset 0 MemberDecorate 19($Global) 1 Offset 4 MemberDecorate 19($Global) 2 Offset 8 @@ -139,9 +140,8 @@ gl_FragCoord origin is upper left MemberDecorate 19($Global) 5 Offset 24 MemberDecorate 19($Global) 6 Offset 32 MemberDecorate 19($Global) 7 Offset 40 - Decorate 19($Global) Block - Decorate 21 DescriptorSet 0 Decorate 21 Binding 0 + Decorate 21 DescriptorSet 0 Decorate 47(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.intrinsics.promote.frag.out b/Test/baseResults/hlsl.intrinsics.promote.frag.out index 99176f1a4e..e0a1c7d9ca 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.frag.out @@ -952,6 +952,7 @@ gl_FragCoord origin is upper left Name 301 "sizeQueryTemp" Name 310 "ps_output" Name 319 "@entryPointOutput.color" + Decorate 19($Global) Block MemberDecorate 19($Global) 0 Offset 0 MemberDecorate 19($Global) 1 Offset 4 MemberDecorate 19($Global) 2 Offset 8 @@ -962,13 +963,12 @@ gl_FragCoord origin is upper left MemberDecorate 19($Global) 7 Offset 40 MemberDecorate 19($Global) 8 Offset 48 MemberDecorate 19($Global) 9 Offset 52 - Decorate 19($Global) Block - Decorate 21 DescriptorSet 0 Decorate 21 Binding 0 - Decorate 258(g_tTexbfs) DescriptorSet 0 + Decorate 21 DescriptorSet 0 Decorate 258(g_tTexbfs) Binding 1 - Decorate 277(g_tTex1df4) DescriptorSet 0 + Decorate 258(g_tTexbfs) DescriptorSet 0 Decorate 277(g_tTex1df4) Binding 2 + Decorate 277(g_tTex1df4) DescriptorSet 0 Decorate 319(@entryPointOutput.color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out index e0fbfe6d33..48d4cc8ba7 100644 --- a/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out +++ b/Test/baseResults/hlsl.intrinsics.promote.outputs.frag.out @@ -244,6 +244,7 @@ gl_FragCoord origin is upper left Name 66 "ps_output" Name 74 "@entryPointOutput.color" Name 79 "g_tTexbfs" + Decorate 17($Global) Block MemberDecorate 17($Global) 0 Offset 0 MemberDecorate 17($Global) 1 Offset 4 MemberDecorate 17($Global) 2 Offset 8 @@ -254,14 +255,13 @@ gl_FragCoord origin is upper left MemberDecorate 17($Global) 7 Offset 40 MemberDecorate 17($Global) 8 Offset 48 MemberDecorate 17($Global) 9 Offset 52 - Decorate 17($Global) Block - Decorate 19 DescriptorSet 0 Decorate 19 Binding 0 - Decorate 31(g_tTex1df4) DescriptorSet 0 + Decorate 19 DescriptorSet 0 Decorate 31(g_tTex1df4) Binding 1 + Decorate 31(g_tTex1df4) DescriptorSet 0 Decorate 74(@entryPointOutput.color) Location 0 - Decorate 79(g_tTexbfs) DescriptorSet 0 Decorate 79(g_tTexbfs) Binding 0 + Decorate 79(g_tTexbfs) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.isfinite.frag.out b/Test/baseResults/hlsl.isfinite.frag.out index e46e77186a..9f562e3bb7 100644 --- a/Test/baseResults/hlsl.isfinite.frag.out +++ b/Test/baseResults/hlsl.isfinite.frag.out @@ -195,12 +195,12 @@ gl_FragCoord origin is upper left Name 51 "@finitetmp" Name 65 "@finitetmp" Name 83 "@entryPointOutput" + Decorate 35($Global) Block MemberDecorate 35($Global) 0 Offset 0 MemberDecorate 35($Global) 1 Offset 8 MemberDecorate 35($Global) 2 Offset 16 - Decorate 35($Global) Block - Decorate 37 DescriptorSet 0 Decorate 37 Binding 0 + Decorate 37 DescriptorSet 0 Decorate 83(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index b2306d077e..564de6d01a 100644 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -111,19 +111,19 @@ Validation failed MemberName 33(tbufName2) 0 "v1PostLayout" Name 35 "" Name 43 "specConst" + Decorate 17(tbufName) BufferBlock MemberDecorate 17(tbufName) 0 NonWritable MemberDecorate 17(tbufName) 0 Offset 16 - Decorate 17(tbufName) BufferBlock - Decorate 19 DescriptorSet 3 Decorate 19 Binding 5 + Decorate 19 DescriptorSet 3 + Decorate 26(tbufName2) BufferBlock MemberDecorate 26(tbufName2) 0 NonWritable MemberDecorate 26(tbufName2) 0 Offset 0 - Decorate 26(tbufName2) BufferBlock + Decorate 33(tbufName2) BufferBlock MemberDecorate 33(tbufName2) 0 NonWritable MemberDecorate 33(tbufName2) 0 Offset 16 - Decorate 33(tbufName2) BufferBlock - Decorate 35 DescriptorSet 4 Decorate 35 Binding 7 + Decorate 35 DescriptorSet 4 Decorate 43(specConst) SpecId 17 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.layoutOverride.vert.out b/Test/baseResults/hlsl.layoutOverride.vert.out index 80c3e45603..a0d8ad84e9 100644 --- a/Test/baseResults/hlsl.layoutOverride.vert.out +++ b/Test/baseResults/hlsl.layoutOverride.vert.out @@ -65,10 +65,10 @@ Shader version: 500 Name 13 "tex" Name 17 "samp" Name 30 "@entryPointOutput" - Decorate 13(tex) DescriptorSet 2 Decorate 13(tex) Binding 0 - Decorate 17(samp) DescriptorSet 0 + Decorate 13(tex) DescriptorSet 2 Decorate 17(samp) Binding 0 + Decorate 17(samp) DescriptorSet 0 Decorate 30(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.load.2dms.dx10.frag.out b/Test/baseResults/hlsl.load.2dms.dx10.frag.out index 09086cbc0c..f8ede0473b 100644 --- a/Test/baseResults/hlsl.load.2dms.dx10.frag.out +++ b/Test/baseResults/hlsl.load.2dms.dx10.frag.out @@ -370,29 +370,29 @@ using depth_any Name 119 "@entryPointOutput.Color" Name 123 "@entryPointOutput.Depth" Name 128 "g_sSamp" - Decorate 23(g_tTex2dmsf4) DescriptorSet 0 Decorate 23(g_tTex2dmsf4) Binding 1 + Decorate 23(g_tTex2dmsf4) DescriptorSet 0 + Decorate 27($Global) Block MemberDecorate 27($Global) 0 Offset 0 MemberDecorate 27($Global) 1 Offset 8 MemberDecorate 27($Global) 2 Offset 16 MemberDecorate 27($Global) 3 Offset 32 - Decorate 27($Global) Block - Decorate 29 DescriptorSet 0 Decorate 29 Binding 7 - Decorate 37(g_tTex2dmsi4) DescriptorSet 0 + Decorate 29 DescriptorSet 0 Decorate 37(g_tTex2dmsi4) Binding 2 - Decorate 45(g_tTex2dmsu4) DescriptorSet 0 + Decorate 37(g_tTex2dmsi4) DescriptorSet 0 Decorate 45(g_tTex2dmsu4) Binding 3 - Decorate 68(g_tTex2dmsf4a) DescriptorSet 0 + Decorate 45(g_tTex2dmsu4) DescriptorSet 0 Decorate 68(g_tTex2dmsf4a) Binding 4 - Decorate 77(g_tTex2dmsi4a) DescriptorSet 0 + Decorate 68(g_tTex2dmsf4a) DescriptorSet 0 Decorate 77(g_tTex2dmsi4a) Binding 5 - Decorate 84(g_tTex2dmsu4a) DescriptorSet 0 + Decorate 77(g_tTex2dmsi4a) DescriptorSet 0 Decorate 84(g_tTex2dmsu4a) Binding 6 + Decorate 84(g_tTex2dmsu4a) DescriptorSet 0 Decorate 119(@entryPointOutput.Color) Location 0 Decorate 123(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 128(g_sSamp) DescriptorSet 0 Decorate 128(g_sSamp) Binding 0 + Decorate 128(g_sSamp) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.load.array.dx10.frag.out b/Test/baseResults/hlsl.load.array.dx10.frag.out index 96792a9537..4bc42a6b43 100644 --- a/Test/baseResults/hlsl.load.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.array.dx10.frag.out @@ -441,8 +441,9 @@ using depth_any Name 152 "g_tTexcdf4a" Name 155 "g_tTexcdi4a" Name 158 "g_tTexcdu4a" - Decorate 14(g_tTex1df4a) DescriptorSet 0 Decorate 14(g_tTex1df4a) Binding 1 + Decorate 14(g_tTex1df4a) DescriptorSet 0 + Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 @@ -451,53 +452,52 @@ using depth_any MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 - Decorate 20($Global) Block - Decorate 22 DescriptorSet 0 Decorate 22 Binding 7 - Decorate 36(g_tTex1di4a) DescriptorSet 0 + Decorate 22 DescriptorSet 0 Decorate 36(g_tTex1di4a) Binding 2 - Decorate 46(g_tTex1du4a) DescriptorSet 0 + Decorate 36(g_tTex1di4a) DescriptorSet 0 Decorate 46(g_tTex1du4a) Binding 3 - Decorate 57(g_tTex2df4a) DescriptorSet 0 + Decorate 46(g_tTex1du4a) DescriptorSet 0 Decorate 57(g_tTex2df4a) Binding 4 - Decorate 70(g_tTex2di4a) DescriptorSet 0 + Decorate 57(g_tTex2df4a) DescriptorSet 0 Decorate 70(g_tTex2di4a) Binding 5 - Decorate 80(g_tTex2du4a) DescriptorSet 0 + Decorate 70(g_tTex2di4a) DescriptorSet 0 Decorate 80(g_tTex2du4a) Binding 6 + Decorate 80(g_tTex2du4a) DescriptorSet 0 Decorate 104(@entryPointOutput.Color) Location 0 Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 113(g_sSamp) DescriptorSet 0 Decorate 113(g_sSamp) Binding 0 - Decorate 116(g_tTex1df4) DescriptorSet 0 + Decorate 113(g_sSamp) DescriptorSet 0 Decorate 116(g_tTex1df4) Binding 0 - Decorate 119(g_tTex1di4) DescriptorSet 0 + Decorate 116(g_tTex1df4) DescriptorSet 0 Decorate 119(g_tTex1di4) Binding 0 - Decorate 122(g_tTex1du4) DescriptorSet 0 + Decorate 119(g_tTex1di4) DescriptorSet 0 Decorate 122(g_tTex1du4) Binding 0 - Decorate 125(g_tTex2df4) DescriptorSet 0 + Decorate 122(g_tTex1du4) DescriptorSet 0 Decorate 125(g_tTex2df4) Binding 0 - Decorate 128(g_tTex2di4) DescriptorSet 0 + Decorate 125(g_tTex2df4) DescriptorSet 0 Decorate 128(g_tTex2di4) Binding 0 - Decorate 131(g_tTex2du4) DescriptorSet 0 + Decorate 128(g_tTex2di4) DescriptorSet 0 Decorate 131(g_tTex2du4) Binding 0 - Decorate 134(g_tTex3df4) DescriptorSet 0 + Decorate 131(g_tTex2du4) DescriptorSet 0 Decorate 134(g_tTex3df4) Binding 0 - Decorate 137(g_tTex3di4) DescriptorSet 0 + Decorate 134(g_tTex3df4) DescriptorSet 0 Decorate 137(g_tTex3di4) Binding 0 - Decorate 140(g_tTex3du4) DescriptorSet 0 + Decorate 137(g_tTex3di4) DescriptorSet 0 Decorate 140(g_tTex3du4) Binding 0 - Decorate 143(g_tTexcdf4) DescriptorSet 0 + Decorate 140(g_tTex3du4) DescriptorSet 0 Decorate 143(g_tTexcdf4) Binding 0 - Decorate 146(g_tTexcdi4) DescriptorSet 0 + Decorate 143(g_tTexcdf4) DescriptorSet 0 Decorate 146(g_tTexcdi4) Binding 0 - Decorate 149(g_tTexcdu4) DescriptorSet 0 + Decorate 146(g_tTexcdi4) DescriptorSet 0 Decorate 149(g_tTexcdu4) Binding 0 - Decorate 152(g_tTexcdf4a) DescriptorSet 0 + Decorate 149(g_tTexcdu4) DescriptorSet 0 Decorate 152(g_tTexcdf4a) Binding 0 - Decorate 155(g_tTexcdi4a) DescriptorSet 0 + Decorate 152(g_tTexcdf4a) DescriptorSet 0 Decorate 155(g_tTexcdi4a) Binding 0 - Decorate 158(g_tTexcdu4a) DescriptorSet 0 + Decorate 155(g_tTexcdi4a) DescriptorSet 0 Decorate 158(g_tTexcdu4a) Binding 0 + Decorate 158(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.load.basic.dx10.frag.out b/Test/baseResults/hlsl.load.basic.dx10.frag.out index b9730f37f8..d1be427e03 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.load.basic.dx10.frag.out @@ -543,8 +543,9 @@ using depth_any Name 172 "g_tTexcdf4a" Name 175 "g_tTexcdi4a" Name 178 "g_tTexcdu4a" - Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 14(g_tTex1df4) Binding 0 + Decorate 14(g_tTex1df4) DescriptorSet 0 + Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 @@ -553,53 +554,52 @@ using depth_any MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 - Decorate 20($Global) Block - Decorate 22 DescriptorSet 0 Decorate 22 Binding 9 - Decorate 35(g_tTex1di4) DescriptorSet 0 + Decorate 22 DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 - Decorate 44(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 44(g_tTex1du4) Binding 2 - Decorate 54(g_tTex2df4) DescriptorSet 0 + Decorate 44(g_tTex1du4) DescriptorSet 0 Decorate 54(g_tTex2df4) Binding 3 - Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 54(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 4 - Decorate 77(g_tTex2du4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 77(g_tTex2du4) Binding 5 - Decorate 87(g_tTex3df4) DescriptorSet 0 + Decorate 77(g_tTex2du4) DescriptorSet 0 Decorate 87(g_tTex3df4) Binding 6 - Decorate 100(g_tTex3di4) DescriptorSet 0 + Decorate 87(g_tTex3df4) DescriptorSet 0 Decorate 100(g_tTex3di4) Binding 7 - Decorate 110(g_tTex3du4) DescriptorSet 0 + Decorate 100(g_tTex3di4) DescriptorSet 0 Decorate 110(g_tTex3du4) Binding 8 + Decorate 110(g_tTex3du4) DescriptorSet 0 Decorate 133(@entryPointOutput.Color) Location 0 Decorate 137(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 142(g_sSamp) DescriptorSet 0 Decorate 142(g_sSamp) Binding 0 - Decorate 145(g_tTexcdf4) DescriptorSet 0 + Decorate 142(g_sSamp) DescriptorSet 0 Decorate 145(g_tTexcdf4) Binding 0 - Decorate 148(g_tTexcdi4) DescriptorSet 0 + Decorate 145(g_tTexcdf4) DescriptorSet 0 Decorate 148(g_tTexcdi4) Binding 0 - Decorate 151(g_tTexcdu4) DescriptorSet 0 + Decorate 148(g_tTexcdi4) DescriptorSet 0 Decorate 151(g_tTexcdu4) Binding 0 - Decorate 154(g_tTex1df4a) DescriptorSet 0 + Decorate 151(g_tTexcdu4) DescriptorSet 0 Decorate 154(g_tTex1df4a) Binding 0 - Decorate 157(g_tTex1di4a) DescriptorSet 0 + Decorate 154(g_tTex1df4a) DescriptorSet 0 Decorate 157(g_tTex1di4a) Binding 0 - Decorate 160(g_tTex1du4a) DescriptorSet 0 + Decorate 157(g_tTex1di4a) DescriptorSet 0 Decorate 160(g_tTex1du4a) Binding 0 - Decorate 163(g_tTex2df4a) DescriptorSet 0 + Decorate 160(g_tTex1du4a) DescriptorSet 0 Decorate 163(g_tTex2df4a) Binding 0 - Decorate 166(g_tTex2di4a) DescriptorSet 0 + Decorate 163(g_tTex2df4a) DescriptorSet 0 Decorate 166(g_tTex2di4a) Binding 0 - Decorate 169(g_tTex2du4a) DescriptorSet 0 + Decorate 166(g_tTex2di4a) DescriptorSet 0 Decorate 169(g_tTex2du4a) Binding 0 - Decorate 172(g_tTexcdf4a) DescriptorSet 0 + Decorate 169(g_tTex2du4a) DescriptorSet 0 Decorate 172(g_tTexcdf4a) Binding 0 - Decorate 175(g_tTexcdi4a) DescriptorSet 0 + Decorate 172(g_tTexcdf4a) DescriptorSet 0 Decorate 175(g_tTexcdi4a) Binding 0 - Decorate 178(g_tTexcdu4a) DescriptorSet 0 + Decorate 175(g_tTexcdi4a) DescriptorSet 0 Decorate 178(g_tTexcdu4a) Binding 0 + Decorate 178(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.load.basic.dx10.vert.out b/Test/baseResults/hlsl.load.basic.dx10.vert.out index c387d5f9b9..1dc4464fcc 100644 --- a/Test/baseResults/hlsl.load.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.load.basic.dx10.vert.out @@ -500,8 +500,9 @@ Shader version: 500 Name 164 "g_tTexcdf4a" Name 167 "g_tTexcdi4a" Name 170 "g_tTexcdu4a" - Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 14(g_tTex1df4) Binding 0 + Decorate 14(g_tTex1df4) DescriptorSet 0 + Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 @@ -510,52 +511,51 @@ Shader version: 500 MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 - Decorate 20($Global) Block - Decorate 22 DescriptorSet 0 Decorate 22 Binding 9 - Decorate 35(g_tTex1di4) DescriptorSet 0 + Decorate 22 DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 - Decorate 44(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 44(g_tTex1du4) Binding 2 - Decorate 54(g_tTex2df4) DescriptorSet 0 + Decorate 44(g_tTex1du4) DescriptorSet 0 Decorate 54(g_tTex2df4) Binding 3 - Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 54(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 4 - Decorate 77(g_tTex2du4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 77(g_tTex2du4) Binding 5 - Decorate 87(g_tTex3df4) DescriptorSet 0 + Decorate 77(g_tTex2du4) DescriptorSet 0 Decorate 87(g_tTex3df4) Binding 6 - Decorate 100(g_tTex3di4) DescriptorSet 0 + Decorate 87(g_tTex3df4) DescriptorSet 0 Decorate 100(g_tTex3di4) Binding 7 - Decorate 110(g_tTex3du4) DescriptorSet 0 + Decorate 100(g_tTex3di4) DescriptorSet 0 Decorate 110(g_tTex3du4) Binding 8 + Decorate 110(g_tTex3du4) DescriptorSet 0 Decorate 129(@entryPointOutput.Pos) BuiltIn Position - Decorate 134(g_sSamp) DescriptorSet 0 Decorate 134(g_sSamp) Binding 0 - Decorate 137(g_tTexcdf4) DescriptorSet 0 + Decorate 134(g_sSamp) DescriptorSet 0 Decorate 137(g_tTexcdf4) Binding 0 - Decorate 140(g_tTexcdi4) DescriptorSet 0 + Decorate 137(g_tTexcdf4) DescriptorSet 0 Decorate 140(g_tTexcdi4) Binding 0 - Decorate 143(g_tTexcdu4) DescriptorSet 0 + Decorate 140(g_tTexcdi4) DescriptorSet 0 Decorate 143(g_tTexcdu4) Binding 0 - Decorate 146(g_tTex1df4a) DescriptorSet 0 + Decorate 143(g_tTexcdu4) DescriptorSet 0 Decorate 146(g_tTex1df4a) Binding 0 - Decorate 149(g_tTex1di4a) DescriptorSet 0 + Decorate 146(g_tTex1df4a) DescriptorSet 0 Decorate 149(g_tTex1di4a) Binding 0 - Decorate 152(g_tTex1du4a) DescriptorSet 0 + Decorate 149(g_tTex1di4a) DescriptorSet 0 Decorate 152(g_tTex1du4a) Binding 0 - Decorate 155(g_tTex2df4a) DescriptorSet 0 + Decorate 152(g_tTex1du4a) DescriptorSet 0 Decorate 155(g_tTex2df4a) Binding 0 - Decorate 158(g_tTex2di4a) DescriptorSet 0 + Decorate 155(g_tTex2df4a) DescriptorSet 0 Decorate 158(g_tTex2di4a) Binding 0 - Decorate 161(g_tTex2du4a) DescriptorSet 0 + Decorate 158(g_tTex2di4a) DescriptorSet 0 Decorate 161(g_tTex2du4a) Binding 0 - Decorate 164(g_tTexcdf4a) DescriptorSet 0 + Decorate 161(g_tTex2du4a) DescriptorSet 0 Decorate 164(g_tTexcdf4a) Binding 0 - Decorate 167(g_tTexcdi4a) DescriptorSet 0 + Decorate 164(g_tTexcdf4a) DescriptorSet 0 Decorate 167(g_tTexcdi4a) Binding 0 - Decorate 170(g_tTexcdu4a) DescriptorSet 0 + Decorate 167(g_tTexcdi4a) DescriptorSet 0 Decorate 170(g_tTexcdu4a) Binding 0 + Decorate 170(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.load.buffer.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.dx10.frag.out index b37e3c9302..900c118401 100644 --- a/Test/baseResults/hlsl.load.buffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.dx10.frag.out @@ -203,8 +203,9 @@ using depth_any Name 64 "@entryPointOutput.Color" Name 68 "@entryPointOutput.Depth" Name 71 "g_tTexbf4_test" - Decorate 16(g_tTexbf4) DescriptorSet 0 Decorate 16(g_tTexbf4) Binding 1 + Decorate 16(g_tTexbf4) DescriptorSet 0 + Decorate 22($Global) Block MemberDecorate 22($Global) 0 Offset 0 MemberDecorate 22($Global) 1 Offset 8 MemberDecorate 22($Global) 2 Offset 16 @@ -213,17 +214,16 @@ using depth_any MemberDecorate 22($Global) 5 Offset 56 MemberDecorate 22($Global) 6 Offset 64 MemberDecorate 22($Global) 7 Offset 80 - Decorate 22($Global) Block - Decorate 24 DescriptorSet 0 Decorate 24 Binding 4 - Decorate 34(g_tTexbi4) DescriptorSet 0 + Decorate 24 DescriptorSet 0 Decorate 34(g_tTexbi4) Binding 2 - Decorate 45(g_tTexbu4) DescriptorSet 0 + Decorate 34(g_tTexbi4) DescriptorSet 0 Decorate 45(g_tTexbu4) Binding 3 + Decorate 45(g_tTexbu4) DescriptorSet 0 Decorate 64(@entryPointOutput.Color) Location 0 Decorate 68(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 71(g_tTexbf4_test) DescriptorSet 0 Decorate 71(g_tTexbf4_test) Binding 0 + Decorate 71(g_tTexbf4_test) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out index b248ed6b77..c88fd6a2df 100644 --- a/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out +++ b/Test/baseResults/hlsl.load.buffer.float.dx10.frag.out @@ -209,8 +209,9 @@ using depth_any Name 67 "@entryPointOutput.Color" Name 71 "@entryPointOutput.Depth" Name 74 "g_tTexbfs_test" - Decorate 16(g_tTexbfs) DescriptorSet 0 Decorate 16(g_tTexbfs) Binding 1 + Decorate 16(g_tTexbfs) DescriptorSet 0 + Decorate 22($Global) Block MemberDecorate 22($Global) 0 Offset 0 MemberDecorate 22($Global) 1 Offset 8 MemberDecorate 22($Global) 2 Offset 16 @@ -219,17 +220,16 @@ using depth_any MemberDecorate 22($Global) 5 Offset 56 MemberDecorate 22($Global) 6 Offset 64 MemberDecorate 22($Global) 7 Offset 80 - Decorate 22($Global) Block - Decorate 24 DescriptorSet 0 Decorate 24 Binding 4 - Decorate 35(g_tTexbis) DescriptorSet 0 + Decorate 24 DescriptorSet 0 Decorate 35(g_tTexbis) Binding 2 - Decorate 46(g_tTexbus) DescriptorSet 0 + Decorate 35(g_tTexbis) DescriptorSet 0 Decorate 46(g_tTexbus) Binding 3 + Decorate 46(g_tTexbus) DescriptorSet 0 Decorate 67(@entryPointOutput.Color) Location 0 Decorate 71(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 74(g_tTexbfs_test) DescriptorSet 0 Decorate 74(g_tTexbfs_test) Binding 0 + Decorate 74(g_tTexbfs_test) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.load.offset.dx10.frag.out b/Test/baseResults/hlsl.load.offset.dx10.frag.out index f8d4383739..0d07130d52 100644 --- a/Test/baseResults/hlsl.load.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offset.dx10.frag.out @@ -603,59 +603,59 @@ using depth_any Name 198 "g_tTexcdf4a" Name 201 "g_tTexcdi4a" Name 204 "g_tTexcdu4a" - Decorate 35(g_tTex1df4) DescriptorSet 0 Decorate 35(g_tTex1df4) Binding 0 + Decorate 35(g_tTex1df4) DescriptorSet 0 + Decorate 38($Global) Block MemberDecorate 38($Global) 0 Offset 0 MemberDecorate 38($Global) 1 Offset 8 MemberDecorate 38($Global) 2 Offset 16 MemberDecorate 38($Global) 3 Offset 32 - Decorate 38($Global) Block - Decorate 40 DescriptorSet 0 Decorate 40 Binding 9 - Decorate 53(g_tTex1di4) DescriptorSet 0 + Decorate 40 DescriptorSet 0 Decorate 53(g_tTex1di4) Binding 1 - Decorate 63(g_tTex1du4) DescriptorSet 0 + Decorate 53(g_tTex1di4) DescriptorSet 0 Decorate 63(g_tTex1du4) Binding 2 - Decorate 74(g_tTex2df4) DescriptorSet 0 + Decorate 63(g_tTex1du4) DescriptorSet 0 Decorate 74(g_tTex2df4) Binding 3 - Decorate 88(g_tTex2di4) DescriptorSet 0 + Decorate 74(g_tTex2df4) DescriptorSet 0 Decorate 88(g_tTex2di4) Binding 4 - Decorate 99(g_tTex2du4) DescriptorSet 0 + Decorate 88(g_tTex2di4) DescriptorSet 0 Decorate 99(g_tTex2du4) Binding 5 - Decorate 110(g_tTex3df4) DescriptorSet 0 + Decorate 99(g_tTex2du4) DescriptorSet 0 Decorate 110(g_tTex3df4) Binding 6 - Decorate 124(g_tTex3di4) DescriptorSet 0 + Decorate 110(g_tTex3df4) DescriptorSet 0 Decorate 124(g_tTex3di4) Binding 7 - Decorate 135(g_tTex3du4) DescriptorSet 0 + Decorate 124(g_tTex3di4) DescriptorSet 0 Decorate 135(g_tTex3du4) Binding 8 + Decorate 135(g_tTex3du4) DescriptorSet 0 Decorate 159(@entryPointOutput.Color) Location 0 Decorate 163(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 168(g_sSamp) DescriptorSet 0 Decorate 168(g_sSamp) Binding 0 - Decorate 171(g_tTexcdf4) DescriptorSet 0 + Decorate 168(g_sSamp) DescriptorSet 0 Decorate 171(g_tTexcdf4) Binding 0 - Decorate 174(g_tTexcdi4) DescriptorSet 0 + Decorate 171(g_tTexcdf4) DescriptorSet 0 Decorate 174(g_tTexcdi4) Binding 0 - Decorate 177(g_tTexcdu4) DescriptorSet 0 + Decorate 174(g_tTexcdi4) DescriptorSet 0 Decorate 177(g_tTexcdu4) Binding 0 - Decorate 180(g_tTex1df4a) DescriptorSet 0 + Decorate 177(g_tTexcdu4) DescriptorSet 0 Decorate 180(g_tTex1df4a) Binding 0 - Decorate 183(g_tTex1di4a) DescriptorSet 0 + Decorate 180(g_tTex1df4a) DescriptorSet 0 Decorate 183(g_tTex1di4a) Binding 0 - Decorate 186(g_tTex1du4a) DescriptorSet 0 + Decorate 183(g_tTex1di4a) DescriptorSet 0 Decorate 186(g_tTex1du4a) Binding 0 - Decorate 189(g_tTex2df4a) DescriptorSet 0 + Decorate 186(g_tTex1du4a) DescriptorSet 0 Decorate 189(g_tTex2df4a) Binding 0 - Decorate 192(g_tTex2di4a) DescriptorSet 0 + Decorate 189(g_tTex2df4a) DescriptorSet 0 Decorate 192(g_tTex2di4a) Binding 0 - Decorate 195(g_tTex2du4a) DescriptorSet 0 + Decorate 192(g_tTex2di4a) DescriptorSet 0 Decorate 195(g_tTex2du4a) Binding 0 - Decorate 198(g_tTexcdf4a) DescriptorSet 0 + Decorate 195(g_tTex2du4a) DescriptorSet 0 Decorate 198(g_tTexcdf4a) Binding 0 - Decorate 201(g_tTexcdi4a) DescriptorSet 0 + Decorate 198(g_tTexcdf4a) DescriptorSet 0 Decorate 201(g_tTexcdi4a) Binding 0 - Decorate 204(g_tTexcdu4a) DescriptorSet 0 + Decorate 201(g_tTexcdi4a) DescriptorSet 0 Decorate 204(g_tTexcdu4a) Binding 0 + Decorate 204(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out index bc5f632dbe..0cfd2a879d 100644 --- a/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.load.offsetarray.dx10.frag.out @@ -478,59 +478,59 @@ using depth_any Name 169 "g_tTexcdf4a" Name 172 "g_tTexcdi4a" Name 175 "g_tTexcdu4a" - Decorate 28(g_tTex1df4a) DescriptorSet 0 Decorate 28(g_tTex1df4a) Binding 1 + Decorate 28(g_tTex1df4a) DescriptorSet 0 + Decorate 32($Global) Block MemberDecorate 32($Global) 0 Offset 0 MemberDecorate 32($Global) 1 Offset 8 MemberDecorate 32($Global) 2 Offset 16 MemberDecorate 32($Global) 3 Offset 32 - Decorate 32($Global) Block - Decorate 34 DescriptorSet 0 Decorate 34 Binding 7 - Decorate 49(g_tTex1di4a) DescriptorSet 0 + Decorate 34 DescriptorSet 0 Decorate 49(g_tTex1di4a) Binding 2 - Decorate 60(g_tTex1du4a) DescriptorSet 0 + Decorate 49(g_tTex1di4a) DescriptorSet 0 Decorate 60(g_tTex1du4a) Binding 3 - Decorate 72(g_tTex2df4a) DescriptorSet 0 + Decorate 60(g_tTex1du4a) DescriptorSet 0 Decorate 72(g_tTex2df4a) Binding 4 - Decorate 86(g_tTex2di4a) DescriptorSet 0 + Decorate 72(g_tTex2df4a) DescriptorSet 0 Decorate 86(g_tTex2di4a) Binding 5 - Decorate 97(g_tTex2du4a) DescriptorSet 0 + Decorate 86(g_tTex2di4a) DescriptorSet 0 Decorate 97(g_tTex2du4a) Binding 6 + Decorate 97(g_tTex2du4a) DescriptorSet 0 Decorate 121(@entryPointOutput.Color) Location 0 Decorate 125(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 130(g_sSamp) DescriptorSet 0 Decorate 130(g_sSamp) Binding 0 - Decorate 133(g_tTex1df4) DescriptorSet 0 + Decorate 130(g_sSamp) DescriptorSet 0 Decorate 133(g_tTex1df4) Binding 0 - Decorate 136(g_tTex1di4) DescriptorSet 0 + Decorate 133(g_tTex1df4) DescriptorSet 0 Decorate 136(g_tTex1di4) Binding 0 - Decorate 139(g_tTex1du4) DescriptorSet 0 + Decorate 136(g_tTex1di4) DescriptorSet 0 Decorate 139(g_tTex1du4) Binding 0 - Decorate 142(g_tTex2df4) DescriptorSet 0 + Decorate 139(g_tTex1du4) DescriptorSet 0 Decorate 142(g_tTex2df4) Binding 0 - Decorate 145(g_tTex2di4) DescriptorSet 0 + Decorate 142(g_tTex2df4) DescriptorSet 0 Decorate 145(g_tTex2di4) Binding 0 - Decorate 148(g_tTex2du4) DescriptorSet 0 + Decorate 145(g_tTex2di4) DescriptorSet 0 Decorate 148(g_tTex2du4) Binding 0 - Decorate 151(g_tTex3df4) DescriptorSet 0 + Decorate 148(g_tTex2du4) DescriptorSet 0 Decorate 151(g_tTex3df4) Binding 0 - Decorate 154(g_tTex3di4) DescriptorSet 0 + Decorate 151(g_tTex3df4) DescriptorSet 0 Decorate 154(g_tTex3di4) Binding 0 - Decorate 157(g_tTex3du4) DescriptorSet 0 + Decorate 154(g_tTex3di4) DescriptorSet 0 Decorate 157(g_tTex3du4) Binding 0 - Decorate 160(g_tTexcdf4) DescriptorSet 0 + Decorate 157(g_tTex3du4) DescriptorSet 0 Decorate 160(g_tTexcdf4) Binding 0 - Decorate 163(g_tTexcdi4) DescriptorSet 0 + Decorate 160(g_tTexcdf4) DescriptorSet 0 Decorate 163(g_tTexcdi4) Binding 0 - Decorate 166(g_tTexcdu4) DescriptorSet 0 + Decorate 163(g_tTexcdi4) DescriptorSet 0 Decorate 166(g_tTexcdu4) Binding 0 - Decorate 169(g_tTexcdf4a) DescriptorSet 0 + Decorate 166(g_tTexcdu4) DescriptorSet 0 Decorate 169(g_tTexcdf4a) Binding 0 - Decorate 172(g_tTexcdi4a) DescriptorSet 0 + Decorate 169(g_tTexcdf4a) DescriptorSet 0 Decorate 172(g_tTexcdi4a) Binding 0 - Decorate 175(g_tTexcdu4a) DescriptorSet 0 + Decorate 172(g_tTexcdi4a) DescriptorSet 0 Decorate 175(g_tTexcdu4a) Binding 0 + Decorate 175(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out index ed6f5286ce..78fbf417e7 100644 --- a/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwbuffer.dx10.frag.out @@ -139,8 +139,9 @@ gl_FragCoord origin is upper left Name 39 "g_tBuffI" Name 45 "psout" Name 54 "@entryPointOutput.Color" - Decorate 14(g_tBuffF) DescriptorSet 0 Decorate 14(g_tBuffF) Binding 0 + Decorate 14(g_tBuffF) DescriptorSet 0 + Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 @@ -149,13 +150,12 @@ gl_FragCoord origin is upper left MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 - Decorate 20($Global) Block - Decorate 22 DescriptorSet 0 Decorate 22 Binding 3 - Decorate 31(g_tBuffU) DescriptorSet 0 + Decorate 22 DescriptorSet 0 Decorate 31(g_tBuffU) Binding 2 - Decorate 39(g_tBuffI) DescriptorSet 0 + Decorate 31(g_tBuffU) DescriptorSet 0 Decorate 39(g_tBuffI) Binding 1 + Decorate 39(g_tBuffI) DescriptorSet 0 Decorate 54(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out index a94da2fc09..e8bf290156 100644 --- a/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.array.dx10.frag.out @@ -254,8 +254,9 @@ using depth_any Name 112 "g_tTex3df4" Name 115 "g_tTex3di4" Name 118 "g_tTex3du4" - Decorate 14(g_tTex1df4a) DescriptorSet 0 Decorate 14(g_tTex1df4a) Binding 1 + Decorate 14(g_tTex1df4a) DescriptorSet 0 + Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 @@ -264,41 +265,40 @@ using depth_any MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 - Decorate 20($Global) Block - Decorate 22 DescriptorSet 0 Decorate 22 Binding 7 - Decorate 30(g_tTex1di4a) DescriptorSet 0 + Decorate 22 DescriptorSet 0 Decorate 30(g_tTex1di4a) Binding 2 - Decorate 38(g_tTex1du4a) DescriptorSet 0 + Decorate 30(g_tTex1di4a) DescriptorSet 0 Decorate 38(g_tTex1du4a) Binding 3 - Decorate 46(g_tTex2df4a) DescriptorSet 0 + Decorate 38(g_tTex1du4a) DescriptorSet 0 Decorate 46(g_tTex2df4a) Binding 4 - Decorate 55(g_tTex2di4a) DescriptorSet 0 + Decorate 46(g_tTex2df4a) DescriptorSet 0 Decorate 55(g_tTex2di4a) Binding 5 - Decorate 62(g_tTex2du4a) DescriptorSet 0 + Decorate 55(g_tTex2di4a) DescriptorSet 0 Decorate 62(g_tTex2du4a) Binding 6 + Decorate 62(g_tTex2du4a) DescriptorSet 0 Decorate 82(@entryPointOutput.Color) Location 0 Decorate 86(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 91(g_sSamp) DescriptorSet 0 Decorate 91(g_sSamp) Binding 0 - Decorate 94(g_tTex1df4) DescriptorSet 0 + Decorate 91(g_sSamp) DescriptorSet 0 Decorate 94(g_tTex1df4) Binding 0 - Decorate 97(g_tTex1di4) DescriptorSet 0 + Decorate 94(g_tTex1df4) DescriptorSet 0 Decorate 97(g_tTex1di4) Binding 0 - Decorate 100(g_tTex1du4) DescriptorSet 0 + Decorate 97(g_tTex1di4) DescriptorSet 0 Decorate 100(g_tTex1du4) Binding 0 - Decorate 103(g_tTex2df4) DescriptorSet 0 + Decorate 100(g_tTex1du4) DescriptorSet 0 Decorate 103(g_tTex2df4) Binding 0 - Decorate 106(g_tTex2di4) DescriptorSet 0 + Decorate 103(g_tTex2df4) DescriptorSet 0 Decorate 106(g_tTex2di4) Binding 0 - Decorate 109(g_tTex2du4) DescriptorSet 0 + Decorate 106(g_tTex2di4) DescriptorSet 0 Decorate 109(g_tTex2du4) Binding 0 - Decorate 112(g_tTex3df4) DescriptorSet 0 + Decorate 109(g_tTex2du4) DescriptorSet 0 Decorate 112(g_tTex3df4) Binding 0 - Decorate 115(g_tTex3di4) DescriptorSet 0 + Decorate 112(g_tTex3df4) DescriptorSet 0 Decorate 115(g_tTex3di4) Binding 0 - Decorate 118(g_tTex3du4) DescriptorSet 0 + Decorate 115(g_tTex3di4) DescriptorSet 0 Decorate 118(g_tTex3du4) Binding 0 + Decorate 118(g_tTex3du4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out index b00da802a7..d829dda596 100644 --- a/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out +++ b/Test/baseResults/hlsl.load.rwtexture.dx10.frag.out @@ -290,8 +290,9 @@ using depth_any Name 125 "g_tTex2df4a" Name 128 "g_tTex2di4a" Name 131 "g_tTex2du4a" - Decorate 14(g_tTex1df4) DescriptorSet 0 Decorate 14(g_tTex1df4) Binding 0 + Decorate 14(g_tTex1df4) DescriptorSet 0 + Decorate 20($Global) Block MemberDecorate 20($Global) 0 Offset 0 MemberDecorate 20($Global) 1 Offset 8 MemberDecorate 20($Global) 2 Offset 16 @@ -300,41 +301,40 @@ using depth_any MemberDecorate 20($Global) 5 Offset 56 MemberDecorate 20($Global) 6 Offset 64 MemberDecorate 20($Global) 7 Offset 80 - Decorate 20($Global) Block - Decorate 22 DescriptorSet 0 Decorate 22 Binding 9 - Decorate 30(g_tTex1di4) DescriptorSet 0 + Decorate 22 DescriptorSet 0 Decorate 30(g_tTex1di4) Binding 1 - Decorate 38(g_tTex1du4) DescriptorSet 0 + Decorate 30(g_tTex1di4) DescriptorSet 0 Decorate 38(g_tTex1du4) Binding 2 - Decorate 46(g_tTex2df4) DescriptorSet 0 + Decorate 38(g_tTex1du4) DescriptorSet 0 Decorate 46(g_tTex2df4) Binding 3 - Decorate 55(g_tTex2di4) DescriptorSet 0 + Decorate 46(g_tTex2df4) DescriptorSet 0 Decorate 55(g_tTex2di4) Binding 4 - Decorate 62(g_tTex2du4) DescriptorSet 0 + Decorate 55(g_tTex2di4) DescriptorSet 0 Decorate 62(g_tTex2du4) Binding 5 - Decorate 69(g_tTex3df4) DescriptorSet 0 + Decorate 62(g_tTex2du4) DescriptorSet 0 Decorate 69(g_tTex3df4) Binding 6 - Decorate 78(g_tTex3di4) DescriptorSet 0 + Decorate 69(g_tTex3df4) DescriptorSet 0 Decorate 78(g_tTex3di4) Binding 7 - Decorate 85(g_tTex3du4) DescriptorSet 0 + Decorate 78(g_tTex3di4) DescriptorSet 0 Decorate 85(g_tTex3du4) Binding 8 + Decorate 85(g_tTex3du4) DescriptorSet 0 Decorate 104(@entryPointOutput.Color) Location 0 Decorate 108(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 113(g_sSamp) DescriptorSet 0 Decorate 113(g_sSamp) Binding 0 - Decorate 116(g_tTex1df4a) DescriptorSet 0 + Decorate 113(g_sSamp) DescriptorSet 0 Decorate 116(g_tTex1df4a) Binding 0 - Decorate 119(g_tTex1di4a) DescriptorSet 0 + Decorate 116(g_tTex1df4a) DescriptorSet 0 Decorate 119(g_tTex1di4a) Binding 0 - Decorate 122(g_tTex1du4a) DescriptorSet 0 + Decorate 119(g_tTex1di4a) DescriptorSet 0 Decorate 122(g_tTex1du4a) Binding 0 - Decorate 125(g_tTex2df4a) DescriptorSet 0 + Decorate 122(g_tTex1du4a) DescriptorSet 0 Decorate 125(g_tTex2df4a) Binding 0 - Decorate 128(g_tTex2di4a) DescriptorSet 0 + Decorate 125(g_tTex2df4a) DescriptorSet 0 Decorate 128(g_tTex2di4a) Binding 0 - Decorate 131(g_tTex2du4a) DescriptorSet 0 + Decorate 128(g_tTex2di4a) DescriptorSet 0 Decorate 131(g_tTex2du4a) Binding 0 + Decorate 131(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.logical.binary.frag.out b/Test/baseResults/hlsl.logical.binary.frag.out index e6f484e43c..97d1de1f60 100644 --- a/Test/baseResults/hlsl.logical.binary.frag.out +++ b/Test/baseResults/hlsl.logical.binary.frag.out @@ -145,13 +145,13 @@ gl_FragCoord origin is upper left Name 16 "" Name 44 "psout" Name 53 "@entryPointOutput.Color" + Decorate 14($Global) Block MemberDecorate 14($Global) 0 Offset 0 MemberDecorate 14($Global) 1 Offset 16 MemberDecorate 14($Global) 2 Offset 32 MemberDecorate 14($Global) 3 Offset 48 - Decorate 14($Global) Block - Decorate 16 DescriptorSet 0 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 53(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.logical.binary.vec.frag.out b/Test/baseResults/hlsl.logical.binary.vec.frag.out index 986d83fdc2..04b02d4e4a 100644 --- a/Test/baseResults/hlsl.logical.binary.vec.frag.out +++ b/Test/baseResults/hlsl.logical.binary.vec.frag.out @@ -282,13 +282,13 @@ gl_FragCoord origin is upper left Name 77 "r21" Name 87 "psout" Name 112 "@entryPointOutput.Color" + Decorate 18($Global) Block MemberDecorate 18($Global) 0 Offset 0 MemberDecorate 18($Global) 1 Offset 16 MemberDecorate 18($Global) 2 Offset 32 MemberDecorate 18($Global) 3 Offset 36 - Decorate 18($Global) Block - Decorate 20 DescriptorSet 0 Decorate 20 Binding 0 + Decorate 20 DescriptorSet 0 Decorate 112(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.logical.unary.frag.out b/Test/baseResults/hlsl.logical.unary.frag.out index cc933bbcb3..23655d8d13 100644 --- a/Test/baseResults/hlsl.logical.unary.frag.out +++ b/Test/baseResults/hlsl.logical.unary.frag.out @@ -205,13 +205,13 @@ gl_FragCoord origin is upper left Name 16 "" Name 72 "psout" Name 81 "@entryPointOutput.Color" + Decorate 14($Global) Block MemberDecorate 14($Global) 0 Offset 0 MemberDecorate 14($Global) 1 Offset 16 MemberDecorate 14($Global) 2 Offset 32 MemberDecorate 14($Global) 3 Offset 48 - Decorate 14($Global) Block - Decorate 16 DescriptorSet 0 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 81(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.matType.frag.out b/Test/baseResults/hlsl.matType.frag.out index 92d44a4618..47fb02a1a1 100644 --- a/Test/baseResults/hlsl.matType.frag.out +++ b/Test/baseResults/hlsl.matType.frag.out @@ -54,25 +54,25 @@ Validation failed MemberName 27($Global) 4 "dmat23" MemberName 27($Global) 5 "int44" Name 29 "" + Decorate 27($Global) Block MemberDecorate 27($Global) 0 Offset 0 MemberDecorate 27($Global) 1 RowMajor - MemberDecorate 27($Global) 1 Offset 16 MemberDecorate 27($Global) 1 MatrixStride 16 + MemberDecorate 27($Global) 1 Offset 16 MemberDecorate 27($Global) 2 RowMajor - MemberDecorate 27($Global) 2 Offset 32 MemberDecorate 27($Global) 2 MatrixStride 16 + MemberDecorate 27($Global) 2 Offset 32 MemberDecorate 27($Global) 3 RowMajor - MemberDecorate 27($Global) 3 Offset 48 MemberDecorate 27($Global) 3 MatrixStride 16 + MemberDecorate 27($Global) 3 Offset 48 MemberDecorate 27($Global) 4 RowMajor - MemberDecorate 27($Global) 4 Offset 80 MemberDecorate 27($Global) 4 MatrixStride 16 + MemberDecorate 27($Global) 4 Offset 80 MemberDecorate 27($Global) 5 RowMajor - MemberDecorate 27($Global) 5 Offset 128 MemberDecorate 27($Global) 5 MatrixStride 16 - Decorate 27($Global) Block - Decorate 29 DescriptorSet 0 + MemberDecorate 27($Global) 5 Offset 128 Decorate 29 Binding 0 + Decorate 29 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.matpack-1.frag.out b/Test/baseResults/hlsl.matpack-1.frag.out index 5af6c2b578..844b08558a 100644 --- a/Test/baseResults/hlsl.matpack-1.frag.out +++ b/Test/baseResults/hlsl.matpack-1.frag.out @@ -126,25 +126,25 @@ gl_FragCoord origin is upper left Name 16 "" Name 37 "@entryPointOutput" MemberDecorate 12(MyBuffer1) 0 RowMajor - MemberDecorate 12(MyBuffer1) 0 Offset 0 MemberDecorate 12(MyBuffer1) 0 MatrixStride 16 + MemberDecorate 12(MyBuffer1) 0 Offset 0 MemberDecorate 12(MyBuffer1) 1 ColMajor - MemberDecorate 12(MyBuffer1) 1 Offset 64 MemberDecorate 12(MyBuffer1) 1 MatrixStride 16 + MemberDecorate 12(MyBuffer1) 1 Offset 64 MemberDecorate 12(MyBuffer1) 2 Offset 128 MemberDecorate 12(MyBuffer1) 3 Offset 144 MemberDecorate 13(MyBuffer2) 0 ColMajor - MemberDecorate 13(MyBuffer2) 0 Offset 0 MemberDecorate 13(MyBuffer2) 0 MatrixStride 16 + MemberDecorate 13(MyBuffer2) 0 Offset 0 MemberDecorate 13(MyBuffer2) 1 Offset 64 + Decorate 14(Example) Block MemberDecorate 14(Example) 0 Offset 0 MemberDecorate 14(Example) 1 Offset 160 MemberDecorate 14(Example) 2 RowMajor - MemberDecorate 14(Example) 2 Offset 240 MemberDecorate 14(Example) 2 MatrixStride 16 - Decorate 14(Example) Block - Decorate 16 DescriptorSet 0 + MemberDecorate 14(Example) 2 Offset 240 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 37(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.matpack-pragma-global.frag.out b/Test/baseResults/hlsl.matpack-pragma-global.frag.out index d6afb4e992..c64fcb0a3a 100644 --- a/Test/baseResults/hlsl.matpack-pragma-global.frag.out +++ b/Test/baseResults/hlsl.matpack-pragma-global.frag.out @@ -67,12 +67,12 @@ gl_FragCoord origin is upper left MemberName 12($Global) 0 "g_GlobalMat1" Name 14 "" Name 23 "@entryPointOutput" + Decorate 12($Global) Block MemberDecorate 12($Global) 0 ColMajor - MemberDecorate 12($Global) 0 Offset 0 MemberDecorate 12($Global) 0 MatrixStride 16 - Decorate 12($Global) Block - Decorate 14 DescriptorSet 0 + MemberDecorate 12($Global) 0 Offset 0 Decorate 14 Binding 0 + Decorate 14 DescriptorSet 0 Decorate 23(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.matpack-pragma.frag.out b/Test/baseResults/hlsl.matpack-pragma.frag.out index aac5af5fd0..5938a03144 100644 --- a/Test/baseResults/hlsl.matpack-pragma.frag.out +++ b/Test/baseResults/hlsl.matpack-pragma.frag.out @@ -196,31 +196,31 @@ gl_FragCoord origin is upper left Name 16 "" Name 42 "@entryPointOutput" MemberDecorate 12(MyBuffer1) 0 RowMajor - MemberDecorate 12(MyBuffer1) 0 Offset 0 MemberDecorate 12(MyBuffer1) 0 MatrixStride 16 + MemberDecorate 12(MyBuffer1) 0 Offset 0 MemberDecorate 12(MyBuffer1) 1 ColMajor - MemberDecorate 12(MyBuffer1) 1 Offset 64 MemberDecorate 12(MyBuffer1) 1 MatrixStride 16 + MemberDecorate 12(MyBuffer1) 1 Offset 64 MemberDecorate 12(MyBuffer1) 2 ColMajor - MemberDecorate 12(MyBuffer1) 2 Offset 128 MemberDecorate 12(MyBuffer1) 2 MatrixStride 16 + MemberDecorate 12(MyBuffer1) 2 Offset 128 MemberDecorate 13(MyBuffer2) 0 RowMajor - MemberDecorate 13(MyBuffer2) 0 Offset 0 MemberDecorate 13(MyBuffer2) 0 MatrixStride 16 + MemberDecorate 13(MyBuffer2) 0 Offset 0 MemberDecorate 13(MyBuffer2) 1 ColMajor - MemberDecorate 13(MyBuffer2) 1 Offset 64 MemberDecorate 13(MyBuffer2) 1 MatrixStride 16 + MemberDecorate 13(MyBuffer2) 1 Offset 64 MemberDecorate 13(MyBuffer2) 2 RowMajor - MemberDecorate 13(MyBuffer2) 2 Offset 128 MemberDecorate 13(MyBuffer2) 2 MatrixStride 16 + MemberDecorate 13(MyBuffer2) 2 Offset 128 + Decorate 14(Example) Block MemberDecorate 14(Example) 0 Offset 0 MemberDecorate 14(Example) 1 Offset 192 MemberDecorate 14(Example) 2 RowMajor - MemberDecorate 14(Example) 2 Offset 384 MemberDecorate 14(Example) 2 MatrixStride 16 - Decorate 14(Example) Block - Decorate 16 DescriptorSet 0 + MemberDecorate 14(Example) 2 Offset 384 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 42(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.matrixindex.frag.out b/Test/baseResults/hlsl.matrixindex.frag.out index cf75c0567e..418bc2f5b5 100644 --- a/Test/baseResults/hlsl.matrixindex.frag.out +++ b/Test/baseResults/hlsl.matrixindex.frag.out @@ -309,13 +309,13 @@ gl_FragCoord origin is upper left Name 63 "r0c" Name 71 "psout" Name 80 "@entryPointOutput.Color" + Decorate 52($Global) Block MemberDecorate 52($Global) 0 Offset 0 MemberDecorate 52($Global) 1 RowMajor - MemberDecorate 52($Global) 1 Offset 16 MemberDecorate 52($Global) 1 MatrixStride 16 - Decorate 52($Global) Block - Decorate 54 DescriptorSet 0 + MemberDecorate 52($Global) 1 Offset 16 Decorate 54 Binding 0 + Decorate 54 DescriptorSet 0 Decorate 80(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.mintypes.frag.out b/Test/baseResults/hlsl.mintypes.frag.out index 2b51d12c28..9d0b3c9495 100644 --- a/Test/baseResults/hlsl.mintypes.frag.out +++ b/Test/baseResults/hlsl.mintypes.frag.out @@ -294,13 +294,13 @@ gl_FragCoord origin is upper left Decorate 114 RelaxedPrecision Decorate 115 RelaxedPrecision Decorate 126(@entryPointOutput.Color) Location 0 + Decorate 129($Global) Block MemberDecorate 129($Global) 0 RelaxedPrecision MemberDecorate 129($Global) 0 Offset 0 MemberDecorate 129($Global) 1 RelaxedPrecision MemberDecorate 129($Global) 1 Offset 4 - Decorate 129($Global) Block - Decorate 131 DescriptorSet 0 Decorate 131 Binding 0 + Decorate 131 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.mip.operator.frag.out b/Test/baseResults/hlsl.mip.operator.frag.out index 2c03a260e4..c69cf8dfd3 100644 --- a/Test/baseResults/hlsl.mip.operator.frag.out +++ b/Test/baseResults/hlsl.mip.operator.frag.out @@ -142,10 +142,10 @@ gl_FragCoord origin is upper left Name 13 "g_tTex2df4" Name 25 "g_tTex2df4a" Name 59 "@entryPointOutput" - Decorate 13(g_tTex2df4) DescriptorSet 0 Decorate 13(g_tTex2df4) Binding 1 - Decorate 25(g_tTex2df4a) DescriptorSet 0 + Decorate 13(g_tTex2df4) DescriptorSet 0 Decorate 25(g_tTex2df4a) Binding 0 + Decorate 25(g_tTex2df4a) DescriptorSet 0 Decorate 59(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.mul-truncate.frag.out b/Test/baseResults/hlsl.mul-truncate.frag.out index 806d2419dd..c736d25f72 100644 --- a/Test/baseResults/hlsl.mul-truncate.frag.out +++ b/Test/baseResults/hlsl.mul-truncate.frag.out @@ -416,30 +416,30 @@ gl_FragCoord origin is upper left Name 133 "r32" Name 146 "r33" Name 188 "@entryPointOutput" + Decorate 21(Matrix) Block MemberDecorate 21(Matrix) 0 RowMajor - MemberDecorate 21(Matrix) 0 Offset 0 MemberDecorate 21(Matrix) 0 MatrixStride 16 + MemberDecorate 21(Matrix) 0 Offset 0 MemberDecorate 21(Matrix) 1 RowMajor - MemberDecorate 21(Matrix) 1 Offset 64 MemberDecorate 21(Matrix) 1 MatrixStride 16 + MemberDecorate 21(Matrix) 1 Offset 64 MemberDecorate 21(Matrix) 2 RowMajor - MemberDecorate 21(Matrix) 2 Offset 112 MemberDecorate 21(Matrix) 2 MatrixStride 16 + MemberDecorate 21(Matrix) 2 Offset 112 MemberDecorate 21(Matrix) 3 RowMajor - MemberDecorate 21(Matrix) 3 Offset 176 MemberDecorate 21(Matrix) 3 MatrixStride 16 + MemberDecorate 21(Matrix) 3 Offset 176 MemberDecorate 21(Matrix) 4 RowMajor - MemberDecorate 21(Matrix) 4 Offset 224 MemberDecorate 21(Matrix) 4 MatrixStride 16 + MemberDecorate 21(Matrix) 4 Offset 224 MemberDecorate 21(Matrix) 5 RowMajor - MemberDecorate 21(Matrix) 5 Offset 288 MemberDecorate 21(Matrix) 5 MatrixStride 16 + MemberDecorate 21(Matrix) 5 Offset 288 MemberDecorate 21(Matrix) 6 Offset 320 MemberDecorate 21(Matrix) 7 Offset 336 MemberDecorate 21(Matrix) 8 Offset 352 - Decorate 21(Matrix) Block - Decorate 23 DescriptorSet 0 Decorate 23 Binding 0 + Decorate 23 DescriptorSet 0 Decorate 188(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.multiDescriptorSet.frag.out b/Test/baseResults/hlsl.multiDescriptorSet.frag.out index d79b121303..bf0b7b135b 100644 --- a/Test/baseResults/hlsl.multiDescriptorSet.frag.out +++ b/Test/baseResults/hlsl.multiDescriptorSet.frag.out @@ -35,36 +35,36 @@ hlsl.multiDescriptorSet.frag Name 87 "param" Name 90 "txDiffuseB" Name 91 "samLinearB" + Decorate 23(cbChangesEveryFrame) Block MemberDecorate 23(cbChangesEveryFrame) 0 RowMajor - MemberDecorate 23(cbChangesEveryFrame) 0 Offset 0 MemberDecorate 23(cbChangesEveryFrame) 0 MatrixStride 16 + MemberDecorate 23(cbChangesEveryFrame) 0 Offset 0 MemberDecorate 23(cbChangesEveryFrame) 1 Offset 64 - Decorate 23(cbChangesEveryFrame) Block - Decorate 25 DescriptorSet 2 Decorate 25 Binding 2 + Decorate 25 DescriptorSet 2 + Decorate 34(cbNeverChanges) Block MemberDecorate 34(cbNeverChanges) 0 RowMajor - MemberDecorate 34(cbNeverChanges) 0 Offset 0 MemberDecorate 34(cbNeverChanges) 0 MatrixStride 16 - Decorate 34(cbNeverChanges) Block - Decorate 36 DescriptorSet 2 + MemberDecorate 34(cbNeverChanges) 0 Offset 0 Decorate 36 Binding 0 + Decorate 36 DescriptorSet 2 + Decorate 43(cbChangeOnResize) Block MemberDecorate 43(cbChangeOnResize) 0 RowMajor - MemberDecorate 43(cbChangeOnResize) 0 Offset 0 MemberDecorate 43(cbChangeOnResize) 0 MatrixStride 16 - Decorate 43(cbChangeOnResize) Block - Decorate 45 DescriptorSet 2 + MemberDecorate 43(cbChangeOnResize) 0 Offset 0 Decorate 45 Binding 1 - Decorate 59(txDiffuseA) DescriptorSet 0 + Decorate 45 DescriptorSet 2 Decorate 59(txDiffuseA) Binding 0 - Decorate 63(samLinearA) DescriptorSet 0 + Decorate 59(txDiffuseA) DescriptorSet 0 Decorate 63(samLinearA) Binding 1 + Decorate 63(samLinearA) DescriptorSet 0 Decorate 78(input.Pos) BuiltIn FragCoord Decorate 82(input.Tex) Location 0 Decorate 86(@entryPointOutput) Location 0 - Decorate 90(txDiffuseB) DescriptorSet 1 Decorate 90(txDiffuseB) Binding 0 - Decorate 91(samLinearB) DescriptorSet 1 + Decorate 90(txDiffuseB) DescriptorSet 1 Decorate 91(samLinearB) Binding 1 + Decorate 91(samLinearB) DescriptorSet 1 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.multiEntry.vert.out b/Test/baseResults/hlsl.multiEntry.vert.out index 0e31ed6e1f..3bf8d79c97 100644 --- a/Test/baseResults/hlsl.multiEntry.vert.out +++ b/Test/baseResults/hlsl.multiEntry.vert.out @@ -90,8 +90,8 @@ Shader version: 500 Name 34 "Index" Name 37 "@entryPointOutput" Name 38 "param" - Decorate 19(Position) DescriptorSet 0 Decorate 19(Position) Binding 0 + Decorate 19(Position) DescriptorSet 0 Decorate 34(Index) BuiltIn VertexIndex Decorate 37(@entryPointOutput) BuiltIn Position 2: TypeVoid diff --git a/Test/baseResults/hlsl.multiReturn.frag.out b/Test/baseResults/hlsl.multiReturn.frag.out index fbe7fbf90d..38df9f05aa 100644 --- a/Test/baseResults/hlsl.multiReturn.frag.out +++ b/Test/baseResults/hlsl.multiReturn.frag.out @@ -74,12 +74,12 @@ gl_FragCoord origin is upper left MemberDecorate 15(S) 0 Offset 0 MemberDecorate 15(S) 1 Offset 4 MemberDecorate 15(S) 2 RowMajor - MemberDecorate 15(S) 2 Offset 16 MemberDecorate 15(S) 2 MatrixStride 16 - MemberDecorate 16(bufName) 0 Offset 0 + MemberDecorate 15(S) 2 Offset 16 Decorate 16(bufName) Block - Decorate 18 DescriptorSet 0 + MemberDecorate 16(bufName) 0 Offset 0 Decorate 18 Binding 0 + Decorate 18 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.multiView.frag.out b/Test/baseResults/hlsl.multiView.frag.out index 32e669cab2..95c93444da 100644 --- a/Test/baseResults/hlsl.multiView.frag.out +++ b/Test/baseResults/hlsl.multiView.frag.out @@ -84,8 +84,8 @@ gl_FragCoord origin is upper left Name 22 "ViewIndex" Name 25 "@entryPointOutput" Name 26 "param" - Decorate 22(ViewIndex) Flat Decorate 22(ViewIndex) BuiltIn ViewIndex + Decorate 22(ViewIndex) Flat Decorate 25(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.nested-runtimeArray.frag.out b/Test/baseResults/hlsl.nested-runtimeArray.frag.out index f019290c97..c80ea85069 100644 --- a/Test/baseResults/hlsl.nested-runtimeArray.frag.out +++ b/Test/baseResults/hlsl.nested-runtimeArray.frag.out @@ -82,13 +82,13 @@ gl_FragCoord origin is upper left Name 15 "B" Name 24 "@entryPointOutput" Decorate 10 ArrayStride 4 - MemberDecorate 11(A) 0 Offset 0 Decorate 11(A) BufferBlock + MemberDecorate 11(A) 0 Offset 0 Decorate 12 ArrayStride 4 - MemberDecorate 13(B) 0 Offset 0 Decorate 13(B) BufferBlock - Decorate 15(B) DescriptorSet 0 + MemberDecorate 13(B) 0 Offset 0 Decorate 15(B) Binding 0 + Decorate 15(B) DescriptorSet 0 Decorate 24(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out index 1121e0b008..ab02db0e84 100644 --- a/Test/baseResults/hlsl.noSemantic.functionality1.comp.out +++ b/Test/baseResults/hlsl.noSemantic.functionality1.comp.out @@ -19,15 +19,15 @@ hlsl.noSemantic.functionality1.comp MemberName 17(Buf@count) 0 "@count" Name 19 "Buf@count" Decorate 10 ArrayStride 16 - MemberDecorate 11(Buf) 0 Offset 0 Decorate 11(Buf) BufferBlock - Decorate 13(Buf) DescriptorSet 0 + MemberDecorate 11(Buf) 0 Offset 0 Decorate 13(Buf) Binding 0 - MemberDecorate 17(Buf@count) 0 Offset 0 + Decorate 13(Buf) DescriptorSet 0 + DecorateId 13(Buf) DecorationHlslCounterBufferGOOGLE 19(Buf@count) Decorate 17(Buf@count) BufferBlock - Decorate 19(Buf@count) DescriptorSet 0 + MemberDecorate 17(Buf@count) 0 Offset 0 Decorate 19(Buf@count) Binding 0 - DecorateId 13(Buf) DecorationHlslCounterBufferGOOGLE 19(Buf@count) + Decorate 19(Buf@count) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 diff --git a/Test/baseResults/hlsl.opaque-type-bug.frag.out b/Test/baseResults/hlsl.opaque-type-bug.frag.out index d82509d65b..2c8a554684 100644 --- a/Test/baseResults/hlsl.opaque-type-bug.frag.out +++ b/Test/baseResults/hlsl.opaque-type-bug.frag.out @@ -75,8 +75,8 @@ gl_FragCoord origin is upper left Name 20 "MyTexture" Name 22 "final_RGB" Name 23 "param" - Decorate 20(MyTexture) DescriptorSet 0 Decorate 20(MyTexture) Binding 0 + Decorate 20(MyTexture) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.params.default.frag.out b/Test/baseResults/hlsl.params.default.frag.out index be1f64160c..81fc98c648 100644 --- a/Test/baseResults/hlsl.params.default.frag.out +++ b/Test/baseResults/hlsl.params.default.frag.out @@ -437,10 +437,10 @@ gl_FragCoord origin is upper left Name 168 "param" Name 169 "param" Name 175 "@entryPointOutput" - MemberDecorate 108($Global) 0 Offset 0 Decorate 108($Global) Block - Decorate 110 DescriptorSet 0 + MemberDecorate 108($Global) 0 Offset 0 Decorate 110 Binding 0 + Decorate 110 DescriptorSet 0 Decorate 175(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.partialFlattenLocal.vert.out b/Test/baseResults/hlsl.partialFlattenLocal.vert.out index 6a1b1deda9..c18f10d32c 100644 --- a/Test/baseResults/hlsl.partialFlattenLocal.vert.out +++ b/Test/baseResults/hlsl.partialFlattenLocal.vert.out @@ -262,8 +262,8 @@ Shader version: 500 Name 86 "pos" Name 89 "@entryPointOutput" Name 90 "param" - Decorate 27(tex) DescriptorSet 0 Decorate 27(tex) Binding 0 + Decorate 27(tex) DescriptorSet 0 Decorate 86(pos) Location 0 Decorate 89(@entryPointOutput) BuiltIn Position 2: TypeVoid diff --git a/Test/baseResults/hlsl.partialFlattenMixed.vert.out b/Test/baseResults/hlsl.partialFlattenMixed.vert.out index eae3c98bb7..a34caad193 100644 --- a/Test/baseResults/hlsl.partialFlattenMixed.vert.out +++ b/Test/baseResults/hlsl.partialFlattenMixed.vert.out @@ -113,10 +113,10 @@ Shader version: 500 Name 36 "pos" Name 39 "@entryPointOutput" Name 40 "param" - Decorate 24(tex[0]) DescriptorSet 0 Decorate 24(tex[0]) Binding 0 - Decorate 28(tex[1]) DescriptorSet 0 + Decorate 24(tex[0]) DescriptorSet 0 Decorate 28(tex[1]) Binding 1 + Decorate 28(tex[1]) DescriptorSet 0 Decorate 36(pos) Location 0 Decorate 39(@entryPointOutput) BuiltIn Position 2: TypeVoid diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out index 1c73bceb6b..48697a6e56 100644 --- a/Test/baseResults/hlsl.pp.line2.frag.out +++ b/Test/baseResults/hlsl.pp.line2.frag.out @@ -81,14 +81,14 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Name 71 "i.vTextureCoords" Name 75 "@entryPointOutput.vColor" Name 76 "param" + Decorate 19(PerViewConstantBuffer_t) Block MemberDecorate 19(PerViewConstantBuffer_t) 0 Offset 0 MemberDecorate 19(PerViewConstantBuffer_t) 1 Offset 4 MemberDecorate 19(PerViewConstantBuffer_t) 2 Offset 8 - Decorate 19(PerViewConstantBuffer_t) Block - Decorate 49(g_tColor) DescriptorSet 0 Decorate 49(g_tColor) Binding 0 - Decorate 56(g_sAniso) DescriptorSet 0 + Decorate 49(g_tColor) DescriptorSet 0 Decorate 56(g_sAniso) Binding 1 + Decorate 56(g_sAniso) DescriptorSet 0 Decorate 71(i.vTextureCoords) Location 0 Decorate 75(@entryPointOutput.vColor) Location 0 3: TypeVoid diff --git a/Test/baseResults/hlsl.pp.line3.frag.out b/Test/baseResults/hlsl.pp.line3.frag.out index 717a21b99a..a2c43de840 100644 --- a/Test/baseResults/hlsl.pp.line3.frag.out +++ b/Test/baseResults/hlsl.pp.line3.frag.out @@ -72,14 +72,14 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Name 69 "i.vTextureCoords" Name 73 "@entryPointOutput.vColor" Name 74 "param" + Decorate 19(PerViewConstantBuffer_t) Block MemberDecorate 19(PerViewConstantBuffer_t) 0 Offset 0 MemberDecorate 19(PerViewConstantBuffer_t) 1 Offset 4 MemberDecorate 19(PerViewConstantBuffer_t) 2 Offset 8 - Decorate 19(PerViewConstantBuffer_t) Block - Decorate 47(g_tColor) DescriptorSet 0 Decorate 47(g_tColor) Binding 0 - Decorate 54(g_sAniso) DescriptorSet 0 + Decorate 47(g_tColor) DescriptorSet 0 Decorate 54(g_sAniso) Binding 0 + Decorate 54(g_sAniso) DescriptorSet 0 Decorate 69(i.vTextureCoords) Location 0 Decorate 73(@entryPointOutput.vColor) Location 0 4: TypeVoid diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out index da968b2386..af2ac0fe66 100644 --- a/Test/baseResults/hlsl.pp.line4.frag.out +++ b/Test/baseResults/hlsl.pp.line4.frag.out @@ -72,14 +72,14 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Name 55 "g_sAniso" Name 70 "i.vTextureCoords" Name 74 "@entryPointOutput.vColor" + Decorate 19(PerViewConstantBuffer_t) Block MemberDecorate 19(PerViewConstantBuffer_t) 0 Offset 0 MemberDecorate 19(PerViewConstantBuffer_t) 1 Offset 4 MemberDecorate 19(PerViewConstantBuffer_t) 2 Offset 8 - Decorate 19(PerViewConstantBuffer_t) Block - Decorate 48(g_tColor) DescriptorSet 0 Decorate 48(g_tColor) Binding 0 - Decorate 55(g_sAniso) DescriptorSet 0 + Decorate 48(g_tColor) DescriptorSet 0 Decorate 55(g_sAniso) Binding 1 + Decorate 55(g_sAniso) DescriptorSet 0 Decorate 70(i.vTextureCoords) Location 0 Decorate 74(@entryPointOutput.vColor) Location 0 3: TypeVoid diff --git a/Test/baseResults/hlsl.pp.vert.out b/Test/baseResults/hlsl.pp.vert.out index 652cf174dc..c08504154d 100644 --- a/Test/baseResults/hlsl.pp.vert.out +++ b/Test/baseResults/hlsl.pp.vert.out @@ -40,11 +40,11 @@ Shader version: 500 MemberName 10($Global) 0 "goodGlobal1" MemberName 10($Global) 1 "goodGlobal2" Name 12 "" + Decorate 10($Global) Block MemberDecorate 10($Global) 0 Offset 0 MemberDecorate 10($Global) 1 Offset 4 - Decorate 10($Global) Block - Decorate 12 DescriptorSet 0 Decorate 12 Binding 0 + Decorate 12 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 9: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.preprocessor.frag.out b/Test/baseResults/hlsl.preprocessor.frag.out index 106762bf5b..d0795d8a66 100644 --- a/Test/baseResults/hlsl.preprocessor.frag.out +++ b/Test/baseResults/hlsl.preprocessor.frag.out @@ -113,10 +113,10 @@ gl_FragCoord origin is upper left Name 33 "input" Name 36 "@entryPointOutput" Name 37 "param" - Decorate 16(test_texture) DescriptorSet 0 Decorate 16(test_texture) Binding 0 - Decorate 20(test_texture_ss) DescriptorSet 0 + Decorate 16(test_texture) DescriptorSet 0 Decorate 20(test_texture_ss) Binding 1 + Decorate 20(test_texture_ss) DescriptorSet 0 Decorate 33(input) Location 0 Decorate 36(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.promote.atomic.frag.out b/Test/baseResults/hlsl.promote.atomic.frag.out index 91b1d58771..22d578e3b5 100644 --- a/Test/baseResults/hlsl.promote.atomic.frag.out +++ b/Test/baseResults/hlsl.promote.atomic.frag.out @@ -81,8 +81,8 @@ gl_FragCoord origin is upper left Name 18 "Loc" Name 20 "Inc" Name 34 "@entryPointOutput" - Decorate 17(s_uintbuff) DescriptorSet 0 Decorate 17(s_uintbuff) Binding 0 + Decorate 17(s_uintbuff) DescriptorSet 0 Decorate 34(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.promote.binary.frag.out b/Test/baseResults/hlsl.promote.binary.frag.out index f9f57a430e..d2dee888ec 100644 --- a/Test/baseResults/hlsl.promote.binary.frag.out +++ b/Test/baseResults/hlsl.promote.binary.frag.out @@ -196,15 +196,15 @@ gl_FragCoord origin is upper left Name 66 "l_int" Name 73 "psout" Name 80 "@entryPointOutput.Color" + Decorate 16($Global) Block MemberDecorate 16($Global) 0 Offset 0 MemberDecorate 16($Global) 1 Offset 16 MemberDecorate 16($Global) 2 Offset 32 MemberDecorate 16($Global) 3 Offset 48 MemberDecorate 16($Global) 4 Offset 64 MemberDecorate 16($Global) 5 Offset 80 - Decorate 16($Global) Block - Decorate 18 DescriptorSet 0 Decorate 18 Binding 0 + Decorate 18 DescriptorSet 0 Decorate 80(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.promotions.frag.out b/Test/baseResults/hlsl.promotions.frag.out index 6d73cc7c9c..7bc2bb639c 100644 --- a/Test/baseResults/hlsl.promotions.frag.out +++ b/Test/baseResults/hlsl.promotions.frag.out @@ -1683,6 +1683,7 @@ gl_FragCoord origin is upper left Name 578 "outval" Name 586 "psout" Name 593 "@entryPointOutput.Color" + Decorate 111($Global) Block MemberDecorate 111($Global) 0 Offset 0 MemberDecorate 111($Global) 1 Offset 16 MemberDecorate 111($Global) 2 Offset 32 @@ -1693,9 +1694,8 @@ gl_FragCoord origin is upper left MemberDecorate 111($Global) 7 Offset 96 MemberDecorate 111($Global) 8 Offset 100 MemberDecorate 111($Global) 9 Offset 104 - Decorate 111($Global) Block - Decorate 113 DescriptorSet 0 Decorate 113 Binding 0 + Decorate 113 DescriptorSet 0 Decorate 593(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.rw.atomics.frag.out b/Test/baseResults/hlsl.rw.atomics.frag.out index 83169f13a5..8075419145 100644 --- a/Test/baseResults/hlsl.rw.atomics.frag.out +++ b/Test/baseResults/hlsl.rw.atomics.frag.out @@ -3996,8 +3996,9 @@ gl_FragCoord origin is upper left Name 1140 "g_tTex2di1a" Name 1143 "g_tTex2du1a" Name 1146 "g_tBuffF" - Decorate 15(g_tTex1di1) DescriptorSet 0 Decorate 15(g_tTex1di1) Binding 0 + Decorate 15(g_tTex1di1) DescriptorSet 0 + Decorate 21($Global) Block MemberDecorate 21($Global) 0 Offset 0 MemberDecorate 21($Global) 1 Offset 8 MemberDecorate 21($Global) 2 Offset 16 @@ -4008,46 +4009,45 @@ gl_FragCoord origin is upper left MemberDecorate 21($Global) 7 Offset 48 MemberDecorate 21($Global) 8 Offset 60 MemberDecorate 21($Global) 9 Offset 64 - Decorate 21($Global) Block - Decorate 23 DescriptorSet 0 Decorate 23 Binding 10 - Decorate 121(g_tTex1du1) DescriptorSet 0 + Decorate 23 DescriptorSet 0 Decorate 121(g_tTex1du1) Binding 1 - Decorate 217(g_tTex2di1) DescriptorSet 0 + Decorate 121(g_tTex1du1) DescriptorSet 0 Decorate 217(g_tTex2di1) Binding 2 - Decorate 308(g_tTex2du1) DescriptorSet 0 + Decorate 217(g_tTex2di1) DescriptorSet 0 Decorate 308(g_tTex2du1) Binding 3 - Decorate 399(g_tTex3di1) DescriptorSet 0 + Decorate 308(g_tTex2du1) DescriptorSet 0 Decorate 399(g_tTex3di1) Binding 4 - Decorate 490(g_tTex3du1) DescriptorSet 0 + Decorate 399(g_tTex3di1) DescriptorSet 0 Decorate 490(g_tTex3du1) Binding 5 - Decorate 581(g_tTex1di1a) DescriptorSet 0 + Decorate 490(g_tTex3du1) DescriptorSet 0 Decorate 581(g_tTex1di1a) Binding 6 - Decorate 670(g_tTex1du1a) DescriptorSet 0 + Decorate 581(g_tTex1di1a) DescriptorSet 0 Decorate 670(g_tTex1du1a) Binding 7 - Decorate 931(g_tBuffI) DescriptorSet 0 + Decorate 670(g_tTex1du1a) DescriptorSet 0 Decorate 931(g_tBuffI) Binding 8 - Decorate 1020(g_tBuffU) DescriptorSet 0 + Decorate 931(g_tBuffI) DescriptorSet 0 Decorate 1020(g_tBuffU) Binding 9 + Decorate 1020(g_tBuffU) DescriptorSet 0 Decorate 1117(@entryPointOutput.Color) Location 0 - Decorate 1122(g_sSamp) DescriptorSet 0 Decorate 1122(g_sSamp) Binding 0 - Decorate 1125(g_tTex1df1) DescriptorSet 0 + Decorate 1122(g_sSamp) DescriptorSet 0 Decorate 1125(g_tTex1df1) Binding 0 - Decorate 1128(g_tTex2df1) DescriptorSet 0 + Decorate 1125(g_tTex1df1) DescriptorSet 0 Decorate 1128(g_tTex2df1) Binding 0 - Decorate 1131(g_tTex3df1) DescriptorSet 0 + Decorate 1128(g_tTex2df1) DescriptorSet 0 Decorate 1131(g_tTex3df1) Binding 0 - Decorate 1134(g_tTex1df1a) DescriptorSet 0 + Decorate 1131(g_tTex3df1) DescriptorSet 0 Decorate 1134(g_tTex1df1a) Binding 0 - Decorate 1137(g_tTex2df1a) DescriptorSet 0 + Decorate 1134(g_tTex1df1a) DescriptorSet 0 Decorate 1137(g_tTex2df1a) Binding 0 - Decorate 1140(g_tTex2di1a) DescriptorSet 0 + Decorate 1137(g_tTex2df1a) DescriptorSet 0 Decorate 1140(g_tTex2di1a) Binding 0 - Decorate 1143(g_tTex2du1a) DescriptorSet 0 + Decorate 1140(g_tTex2di1a) DescriptorSet 0 Decorate 1143(g_tTex2du1a) Binding 0 - Decorate 1146(g_tBuffF) DescriptorSet 0 + Decorate 1143(g_tTex2du1a) DescriptorSet 0 Decorate 1146(g_tBuffF) Binding 0 + Decorate 1146(g_tBuffF) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.rw.bracket.frag.out b/Test/baseResults/hlsl.rw.bracket.frag.out index 02ed379942..f199c6207c 100644 --- a/Test/baseResults/hlsl.rw.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.bracket.frag.out @@ -1880,6 +1880,7 @@ gl_FragCoord origin is upper left Name 600 "g_tTex2df4a" Name 603 "g_tTex2di4a" Name 606 "g_tTex2du4a" + Decorate 63($Global) Block MemberDecorate 63($Global) 0 Offset 0 MemberDecorate 63($Global) 1 Offset 8 MemberDecorate 63($Global) 2 Offset 16 @@ -1891,42 +1892,41 @@ gl_FragCoord origin is upper left MemberDecorate 63($Global) 8 Offset 96 MemberDecorate 63($Global) 9 Offset 112 MemberDecorate 63($Global) 10 Offset 128 - Decorate 63($Global) Block - Decorate 65 DescriptorSet 0 Decorate 65 Binding 9 - Decorate 75(g_tTex1df4) DescriptorSet 0 + Decorate 65 DescriptorSet 0 Decorate 75(g_tTex1df4) Binding 0 - Decorate 89(g_tTex1di4) DescriptorSet 0 + Decorate 75(g_tTex1df4) DescriptorSet 0 Decorate 89(g_tTex1di4) Binding 1 - Decorate 97(g_tTex1du4) DescriptorSet 0 + Decorate 89(g_tTex1di4) DescriptorSet 0 Decorate 97(g_tTex1du4) Binding 2 - Decorate 105(g_tTex2df4) DescriptorSet 0 + Decorate 97(g_tTex1du4) DescriptorSet 0 Decorate 105(g_tTex2df4) Binding 3 - Decorate 115(g_tTex2di4) DescriptorSet 0 + Decorate 105(g_tTex2df4) DescriptorSet 0 Decorate 115(g_tTex2di4) Binding 4 - Decorate 123(g_tTex2du4) DescriptorSet 0 + Decorate 115(g_tTex2di4) DescriptorSet 0 Decorate 123(g_tTex2du4) Binding 5 - Decorate 131(g_tTex3df4) DescriptorSet 0 + Decorate 123(g_tTex2du4) DescriptorSet 0 Decorate 131(g_tTex3df4) Binding 6 - Decorate 141(g_tTex3di4) DescriptorSet 0 + Decorate 131(g_tTex3df4) DescriptorSet 0 Decorate 141(g_tTex3di4) Binding 7 - Decorate 149(g_tTex3du4) DescriptorSet 0 + Decorate 141(g_tTex3di4) DescriptorSet 0 Decorate 149(g_tTex3du4) Binding 8 + Decorate 149(g_tTex3du4) DescriptorSet 0 Decorate 583(@entryPointOutput.Color) Location 0 - Decorate 588(g_sSamp) DescriptorSet 0 Decorate 588(g_sSamp) Binding 0 - Decorate 591(g_tTex1df4a) DescriptorSet 0 + Decorate 588(g_sSamp) DescriptorSet 0 Decorate 591(g_tTex1df4a) Binding 0 - Decorate 594(g_tTex1di4a) DescriptorSet 0 + Decorate 591(g_tTex1df4a) DescriptorSet 0 Decorate 594(g_tTex1di4a) Binding 0 - Decorate 597(g_tTex1du4a) DescriptorSet 0 + Decorate 594(g_tTex1di4a) DescriptorSet 0 Decorate 597(g_tTex1du4a) Binding 0 - Decorate 600(g_tTex2df4a) DescriptorSet 0 + Decorate 597(g_tTex1du4a) DescriptorSet 0 Decorate 600(g_tTex2df4a) Binding 0 - Decorate 603(g_tTex2di4a) DescriptorSet 0 + Decorate 600(g_tTex2df4a) DescriptorSet 0 Decorate 603(g_tTex2di4a) Binding 0 - Decorate 606(g_tTex2du4a) DescriptorSet 0 + Decorate 603(g_tTex2di4a) DescriptorSet 0 Decorate 606(g_tTex2du4a) Binding 0 + Decorate 606(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.rw.register.frag.out b/Test/baseResults/hlsl.rw.register.frag.out index 558bf424bc..a4f377306f 100644 --- a/Test/baseResults/hlsl.rw.register.frag.out +++ b/Test/baseResults/hlsl.rw.register.frag.out @@ -119,10 +119,10 @@ gl_FragCoord origin is upper left Name 27 "g_tBuf1du1" Name 33 "psout" Name 42 "@entryPointOutput.Color" - Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 16(g_tTex1df1) Binding 2 - Decorate 27(g_tBuf1du1) DescriptorSet 0 + Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 27(g_tBuf1du1) Binding 3 + Decorate 27(g_tBuf1du1) DescriptorSet 0 Decorate 42(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out index f2bef19afc..20c7600fca 100644 --- a/Test/baseResults/hlsl.rw.scalar.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.scalar.bracket.frag.out @@ -1826,6 +1826,7 @@ gl_FragCoord origin is upper left Name 600 "g_tTex2df1a" Name 603 "g_tTex2di1a" Name 606 "g_tTex2du1a" + Decorate 59($Global) Block MemberDecorate 59($Global) 0 Offset 0 MemberDecorate 59($Global) 1 Offset 8 MemberDecorate 59($Global) 2 Offset 16 @@ -1837,42 +1838,41 @@ gl_FragCoord origin is upper left MemberDecorate 59($Global) 8 Offset 96 MemberDecorate 59($Global) 9 Offset 100 MemberDecorate 59($Global) 10 Offset 104 - Decorate 59($Global) Block - Decorate 61 DescriptorSet 0 Decorate 61 Binding 10 - Decorate 70(g_tTex1df1) DescriptorSet 0 + Decorate 61 DescriptorSet 0 Decorate 70(g_tTex1df1) Binding 1 - Decorate 85(g_tTex1di1) DescriptorSet 0 + Decorate 70(g_tTex1df1) DescriptorSet 0 Decorate 85(g_tTex1di1) Binding 2 - Decorate 94(g_tTex1du1) DescriptorSet 0 + Decorate 85(g_tTex1di1) DescriptorSet 0 Decorate 94(g_tTex1du1) Binding 3 - Decorate 104(g_tTex2df1) DescriptorSet 0 + Decorate 94(g_tTex1du1) DescriptorSet 0 Decorate 104(g_tTex2df1) Binding 4 - Decorate 115(g_tTex2di1) DescriptorSet 0 + Decorate 104(g_tTex2df1) DescriptorSet 0 Decorate 115(g_tTex2di1) Binding 5 - Decorate 124(g_tTex2du1) DescriptorSet 0 + Decorate 115(g_tTex2di1) DescriptorSet 0 Decorate 124(g_tTex2du1) Binding 6 - Decorate 133(g_tTex3df1) DescriptorSet 0 + Decorate 124(g_tTex2du1) DescriptorSet 0 Decorate 133(g_tTex3df1) Binding 7 - Decorate 144(g_tTex3di1) DescriptorSet 0 + Decorate 133(g_tTex3df1) DescriptorSet 0 Decorate 144(g_tTex3di1) Binding 8 - Decorate 153(g_tTex3du1) DescriptorSet 0 + Decorate 144(g_tTex3di1) DescriptorSet 0 Decorate 153(g_tTex3du1) Binding 9 + Decorate 153(g_tTex3du1) DescriptorSet 0 Decorate 583(@entryPointOutput.Color) Location 0 - Decorate 588(g_sSamp) DescriptorSet 0 Decorate 588(g_sSamp) Binding 0 - Decorate 591(g_tTex1df1a) DescriptorSet 0 + Decorate 588(g_sSamp) DescriptorSet 0 Decorate 591(g_tTex1df1a) Binding 0 - Decorate 594(g_tTex1di1a) DescriptorSet 0 + Decorate 591(g_tTex1df1a) DescriptorSet 0 Decorate 594(g_tTex1di1a) Binding 0 - Decorate 597(g_tTex1du1a) DescriptorSet 0 + Decorate 594(g_tTex1di1a) DescriptorSet 0 Decorate 597(g_tTex1du1a) Binding 0 - Decorate 600(g_tTex2df1a) DescriptorSet 0 + Decorate 597(g_tTex1du1a) DescriptorSet 0 Decorate 600(g_tTex2df1a) Binding 0 - Decorate 603(g_tTex2di1a) DescriptorSet 0 + Decorate 600(g_tTex2df1a) DescriptorSet 0 Decorate 603(g_tTex2di1a) Binding 0 - Decorate 606(g_tTex2du1a) DescriptorSet 0 + Decorate 603(g_tTex2di1a) DescriptorSet 0 Decorate 606(g_tTex2du1a) Binding 0 + Decorate 606(g_tTex2du1a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.rw.swizzle.frag.out b/Test/baseResults/hlsl.rw.swizzle.frag.out index 5121cebd7e..28788f9d77 100644 --- a/Test/baseResults/hlsl.rw.swizzle.frag.out +++ b/Test/baseResults/hlsl.rw.swizzle.frag.out @@ -223,11 +223,11 @@ gl_FragCoord origin is upper left Name 46 "storeTemp" Name 58 "@entryPointOutput" Name 62 "buf" - Decorate 35(rwtx) DescriptorSet 0 Decorate 35(rwtx) Binding 0 + Decorate 35(rwtx) DescriptorSet 0 Decorate 58(@entryPointOutput) Location 0 - Decorate 62(buf) DescriptorSet 0 Decorate 62(buf) Binding 0 + Decorate 62(buf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out index a0c639bf51..304ff9c049 100644 --- a/Test/baseResults/hlsl.rw.vec2.bracket.frag.out +++ b/Test/baseResults/hlsl.rw.vec2.bracket.frag.out @@ -1845,6 +1845,7 @@ gl_FragCoord origin is upper left Name 704 "g_tTex2df2a" Name 707 "g_tTex2di2a" Name 710 "g_tTex2du2a" + Decorate 64($Global) Block MemberDecorate 64($Global) 0 Offset 0 MemberDecorate 64($Global) 1 Offset 8 MemberDecorate 64($Global) 2 Offset 16 @@ -1856,42 +1857,41 @@ gl_FragCoord origin is upper left MemberDecorate 64($Global) 8 Offset 96 MemberDecorate 64($Global) 9 Offset 104 MemberDecorate 64($Global) 10 Offset 112 - Decorate 64($Global) Block - Decorate 66 DescriptorSet 0 Decorate 66 Binding 10 - Decorate 76(g_tTex1df2) DescriptorSet 0 + Decorate 66 DescriptorSet 0 Decorate 76(g_tTex1df2) Binding 1 - Decorate 96(g_tTex1di2) DescriptorSet 0 + Decorate 76(g_tTex1df2) DescriptorSet 0 Decorate 96(g_tTex1di2) Binding 2 - Decorate 107(g_tTex1du2) DescriptorSet 0 + Decorate 96(g_tTex1di2) DescriptorSet 0 Decorate 107(g_tTex1du2) Binding 3 - Decorate 119(g_tTex2df2) DescriptorSet 0 + Decorate 107(g_tTex1du2) DescriptorSet 0 Decorate 119(g_tTex2df2) Binding 4 - Decorate 130(g_tTex2di2) DescriptorSet 0 + Decorate 119(g_tTex2df2) DescriptorSet 0 Decorate 130(g_tTex2di2) Binding 5 - Decorate 141(g_tTex2du2) DescriptorSet 0 + Decorate 130(g_tTex2di2) DescriptorSet 0 Decorate 141(g_tTex2du2) Binding 6 - Decorate 152(g_tTex3df2) DescriptorSet 0 + Decorate 141(g_tTex2du2) DescriptorSet 0 Decorate 152(g_tTex3df2) Binding 7 - Decorate 165(g_tTex3di2) DescriptorSet 0 + Decorate 152(g_tTex3df2) DescriptorSet 0 Decorate 165(g_tTex3di2) Binding 8 - Decorate 176(g_tTex3du2) DescriptorSet 0 + Decorate 165(g_tTex3di2) DescriptorSet 0 Decorate 176(g_tTex3du2) Binding 9 + Decorate 176(g_tTex3du2) DescriptorSet 0 Decorate 687(@entryPointOutput.Color) Location 0 - Decorate 692(g_sSamp) DescriptorSet 0 Decorate 692(g_sSamp) Binding 0 - Decorate 695(g_tTex1df2a) DescriptorSet 0 + Decorate 692(g_sSamp) DescriptorSet 0 Decorate 695(g_tTex1df2a) Binding 0 - Decorate 698(g_tTex1di2a) DescriptorSet 0 + Decorate 695(g_tTex1df2a) DescriptorSet 0 Decorate 698(g_tTex1di2a) Binding 0 - Decorate 701(g_tTex1du2a) DescriptorSet 0 + Decorate 698(g_tTex1di2a) DescriptorSet 0 Decorate 701(g_tTex1du2a) Binding 0 - Decorate 704(g_tTex2df2a) DescriptorSet 0 + Decorate 701(g_tTex1du2a) DescriptorSet 0 Decorate 704(g_tTex2df2a) Binding 0 - Decorate 707(g_tTex2di2a) DescriptorSet 0 + Decorate 704(g_tTex2df2a) DescriptorSet 0 Decorate 707(g_tTex2di2a) Binding 0 - Decorate 710(g_tTex2du2a) DescriptorSet 0 + Decorate 707(g_tTex2di2a) DescriptorSet 0 Decorate 710(g_tTex2du2a) Binding 0 + Decorate 710(g_tTex2du2a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.sample.array.dx10.frag.out b/Test/baseResults/hlsl.sample.array.dx10.frag.out index 1acca18334..eb5ed7b964 100644 --- a/Test/baseResults/hlsl.sample.array.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.array.dx10.frag.out @@ -363,30 +363,30 @@ using depth_any Name 138 "@entryPointOutput.Color" Name 142 "@entryPointOutput.Depth" Name 145 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 35(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 2 - Decorate 49(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 49(g_tTex1du4) Binding 3 - Decorate 60(g_tTex2df4) DescriptorSet 0 + Decorate 49(g_tTex1du4) DescriptorSet 0 Decorate 60(g_tTex2df4) Binding 4 - Decorate 71(g_tTex2di4) DescriptorSet 0 + Decorate 60(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 - Decorate 82(g_tTex2du4) DescriptorSet 0 + Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 82(g_tTex2du4) Binding 6 - Decorate 94(g_tTexcdf4) DescriptorSet 0 + Decorate 82(g_tTex2du4) DescriptorSet 0 Decorate 94(g_tTexcdf4) Binding 7 - Decorate 104(g_tTexcdi4) DescriptorSet 0 + Decorate 94(g_tTexcdf4) DescriptorSet 0 Decorate 104(g_tTexcdi4) Binding 8 - Decorate 114(g_tTexcdu4) DescriptorSet 0 + Decorate 104(g_tTexcdi4) DescriptorSet 0 Decorate 114(g_tTexcdu4) Binding 9 + Decorate 114(g_tTexcdu4) DescriptorSet 0 Decorate 138(@entryPointOutput.Color) Location 0 Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 145(g_tTex1df4a) DescriptorSet 0 Decorate 145(g_tTex1df4a) Binding 1 + Decorate 145(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.sample.basic.dx10.frag.out b/Test/baseResults/hlsl.sample.basic.dx10.frag.out index e30631783e..8e2739d9b0 100644 --- a/Test/baseResults/hlsl.sample.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.basic.dx10.frag.out @@ -612,40 +612,40 @@ using depth_any Name 195 "g_sSamp2d" Name 196 "g_sSamp2D_b" Name 197 "g_tTex1df4a" - Decorate 45(g_tTex1df4) DescriptorSet 0 Decorate 45(g_tTex1df4) Binding 0 - Decorate 49(g_sSamp) DescriptorSet 0 + Decorate 45(g_tTex1df4) DescriptorSet 0 Decorate 49(g_sSamp) Binding 0 - Decorate 60(g_tTex1di4) DescriptorSet 0 + Decorate 49(g_sSamp) DescriptorSet 0 Decorate 60(g_tTex1di4) Binding 2 - Decorate 73(g_tTex1du4) DescriptorSet 0 + Decorate 60(g_tTex1di4) DescriptorSet 0 Decorate 73(g_tTex1du4) Binding 3 - Decorate 83(g_tTex2df4) DescriptorSet 0 + Decorate 73(g_tTex1du4) DescriptorSet 0 Decorate 83(g_tTex2df4) Binding 4 - Decorate 94(g_tTex2di4) DescriptorSet 0 + Decorate 83(g_tTex2df4) DescriptorSet 0 Decorate 94(g_tTex2di4) Binding 5 - Decorate 105(g_tTex2du4) DescriptorSet 0 + Decorate 94(g_tTex2di4) DescriptorSet 0 Decorate 105(g_tTex2du4) Binding 6 - Decorate 117(g_tTex3df4) DescriptorSet 0 + Decorate 105(g_tTex2du4) DescriptorSet 0 Decorate 117(g_tTex3df4) Binding 7 - Decorate 128(g_tTex3di4) DescriptorSet 0 + Decorate 117(g_tTex3df4) DescriptorSet 0 Decorate 128(g_tTex3di4) Binding 8 - Decorate 138(g_tTex3du4) DescriptorSet 0 + Decorate 128(g_tTex3di4) DescriptorSet 0 Decorate 138(g_tTex3du4) Binding 9 - Decorate 151(g_tTexcdf4) DescriptorSet 0 + Decorate 138(g_tTex3du4) DescriptorSet 0 Decorate 151(g_tTexcdf4) Binding 10 - Decorate 160(g_tTexcdi4) DescriptorSet 0 + Decorate 151(g_tTexcdf4) DescriptorSet 0 Decorate 160(g_tTexcdi4) Binding 11 - Decorate 169(g_tTexcdu4) DescriptorSet 0 + Decorate 160(g_tTexcdi4) DescriptorSet 0 Decorate 169(g_tTexcdu4) Binding 12 + Decorate 169(g_tTexcdu4) DescriptorSet 0 Decorate 188(@entryPointOutput.Color) Location 0 Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 195(g_sSamp2d) DescriptorSet 0 Decorate 195(g_sSamp2d) Binding 0 - Decorate 196(g_sSamp2D_b) DescriptorSet 0 + Decorate 195(g_sSamp2d) DescriptorSet 0 Decorate 196(g_sSamp2D_b) Binding 0 - Decorate 197(g_tTex1df4a) DescriptorSet 0 + Decorate 196(g_sSamp2D_b) DescriptorSet 0 Decorate 197(g_tTex1df4a) Binding 1 + Decorate 197(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.sample.dx9.frag.out b/Test/baseResults/hlsl.sample.dx9.frag.out index 04eb9d36ba..f1a6e0ae65 100644 --- a/Test/baseResults/hlsl.sample.dx9.frag.out +++ b/Test/baseResults/hlsl.sample.dx9.frag.out @@ -413,16 +413,16 @@ using depth_any Name 125 "flattenTemp" Name 128 "@entryPointOutput.Color" Name 132 "@entryPointOutput.Depth" - Decorate 20(g_sam) DescriptorSet 0 Decorate 20(g_sam) Binding 0 - Decorate 32(g_sam1D) DescriptorSet 0 + Decorate 20(g_sam) DescriptorSet 0 Decorate 32(g_sam1D) Binding 1 - Decorate 38(g_sam2D) DescriptorSet 0 + Decorate 32(g_sam1D) DescriptorSet 0 Decorate 38(g_sam2D) Binding 2 - Decorate 48(g_sam3D) DescriptorSet 0 + Decorate 38(g_sam2D) DescriptorSet 0 Decorate 48(g_sam3D) Binding 3 - Decorate 58(g_samCube) DescriptorSet 0 + Decorate 48(g_sam3D) DescriptorSet 0 Decorate 58(g_samCube) Binding 4 + Decorate 58(g_samCube) DescriptorSet 0 Decorate 128(@entryPointOutput.Color) Location 0 Decorate 132(@entryPointOutput.Depth) BuiltIn FragDepth 3: TypeVoid diff --git a/Test/baseResults/hlsl.sample.dx9.vert.out b/Test/baseResults/hlsl.sample.dx9.vert.out index 59878a9903..2b6520a048 100644 --- a/Test/baseResults/hlsl.sample.dx9.vert.out +++ b/Test/baseResults/hlsl.sample.dx9.vert.out @@ -180,10 +180,10 @@ Shader version: 500 Name 36 "g_sam2D" Name 49 "vsout" Name 61 "@entryPointOutput.Pos" - Decorate 20(g_sam) DescriptorSet 0 Decorate 20(g_sam) Binding 0 - Decorate 36(g_sam2D) DescriptorSet 0 + Decorate 20(g_sam) DescriptorSet 0 Decorate 36(g_sam2D) Binding 1 + Decorate 36(g_sam2D) DescriptorSet 0 Decorate 61(@entryPointOutput.Pos) BuiltIn Position 3: TypeVoid 4: TypeFunction 3 diff --git a/Test/baseResults/hlsl.sample.offset.dx10.frag.out b/Test/baseResults/hlsl.sample.offset.dx10.frag.out index 0a351b43df..f2be35ae31 100644 --- a/Test/baseResults/hlsl.sample.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offset.dx10.frag.out @@ -407,36 +407,36 @@ using depth_any Name 154 "g_tTexcdf4" Name 157 "g_tTexcdi4" Name 160 "g_tTexcdu4" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 - Decorate 46(g_tTex1du4) DescriptorSet 0 + Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 - Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 - Decorate 70(g_tTex2di4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 70(g_tTex2di4) Binding 5 - Decorate 82(g_tTex2du4) DescriptorSet 0 + Decorate 70(g_tTex2di4) DescriptorSet 0 Decorate 82(g_tTex2du4) Binding 6 - Decorate 96(g_tTex3df4) DescriptorSet 0 + Decorate 82(g_tTex2du4) DescriptorSet 0 Decorate 96(g_tTex3df4) Binding 7 - Decorate 109(g_tTex3di4) DescriptorSet 0 + Decorate 96(g_tTex3df4) DescriptorSet 0 Decorate 109(g_tTex3di4) Binding 8 - Decorate 120(g_tTex3du4) DescriptorSet 0 + Decorate 109(g_tTex3di4) DescriptorSet 0 Decorate 120(g_tTex3du4) Binding 9 + Decorate 120(g_tTex3du4) DescriptorSet 0 Decorate 144(@entryPointOutput.Color) Location 0 Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 151(g_tTex1df4a) DescriptorSet 0 Decorate 151(g_tTex1df4a) Binding 1 - Decorate 154(g_tTexcdf4) DescriptorSet 0 + Decorate 151(g_tTex1df4a) DescriptorSet 0 Decorate 154(g_tTexcdf4) Binding 0 - Decorate 157(g_tTexcdi4) DescriptorSet 0 + Decorate 154(g_tTexcdf4) DescriptorSet 0 Decorate 157(g_tTexcdi4) Binding 0 - Decorate 160(g_tTexcdu4) DescriptorSet 0 + Decorate 157(g_tTexcdi4) DescriptorSet 0 Decorate 160(g_tTexcdu4) Binding 0 + Decorate 160(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out index 0770e0baae..08da18373c 100644 --- a/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.offsetarray.dx10.frag.out @@ -308,24 +308,24 @@ using depth_any Name 110 "@entryPointOutput.Color" Name 114 "@entryPointOutput.Depth" Name 117 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 36(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4) Binding 2 - Decorate 51(g_tTex1du4) DescriptorSet 0 + Decorate 36(g_tTex1di4) DescriptorSet 0 Decorate 51(g_tTex1du4) Binding 3 - Decorate 63(g_tTex2df4) DescriptorSet 0 + Decorate 51(g_tTex1du4) DescriptorSet 0 Decorate 63(g_tTex2df4) Binding 4 - Decorate 76(g_tTex2di4) DescriptorSet 0 + Decorate 63(g_tTex2df4) DescriptorSet 0 Decorate 76(g_tTex2di4) Binding 5 - Decorate 87(g_tTex2du4) DescriptorSet 0 + Decorate 76(g_tTex2di4) DescriptorSet 0 Decorate 87(g_tTex2du4) Binding 6 + Decorate 87(g_tTex2du4) DescriptorSet 0 Decorate 110(@entryPointOutput.Color) Location 0 Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 117(g_tTex1df4a) DescriptorSet 0 Decorate 117(g_tTex1df4a) Binding 1 + Decorate 117(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out index ea0e4e24be..71c0162b5a 100644 --- a/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out +++ b/Test/baseResults/hlsl.sample.sub-vec4.dx10.frag.out @@ -179,16 +179,16 @@ gl_FragCoord origin is upper left Name 53 "g_tTex1df4" Name 59 "psout" Name 69 "@entryPointOutput.Color" - Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 16(g_tTex1df1) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 30(g_tTex1df2) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 30(g_tTex1df2) Binding 2 - Decorate 42(g_tTex1df3) DescriptorSet 0 + Decorate 30(g_tTex1df2) DescriptorSet 0 Decorate 42(g_tTex1df3) Binding 3 - Decorate 53(g_tTex1df4) DescriptorSet 0 + Decorate 42(g_tTex1df3) DescriptorSet 0 Decorate 53(g_tTex1df4) Binding 4 + Decorate 53(g_tTex1df4) DescriptorSet 0 Decorate 69(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out index f59fc811e1..dd18bbe7a6 100644 --- a/Test/baseResults/hlsl.samplebias.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.array.dx10.frag.out @@ -399,30 +399,30 @@ using depth_any Name 138 "@entryPointOutput.Color" Name 142 "@entryPointOutput.Depth" Name 145 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 36(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4) Binding 2 - Decorate 50(g_tTex1du4) DescriptorSet 0 + Decorate 36(g_tTex1di4) DescriptorSet 0 Decorate 50(g_tTex1du4) Binding 3 - Decorate 61(g_tTex2df4) DescriptorSet 0 + Decorate 50(g_tTex1du4) DescriptorSet 0 Decorate 61(g_tTex2df4) Binding 4 - Decorate 72(g_tTex2di4) DescriptorSet 0 + Decorate 61(g_tTex2df4) DescriptorSet 0 Decorate 72(g_tTex2di4) Binding 5 - Decorate 82(g_tTex2du4) DescriptorSet 0 + Decorate 72(g_tTex2di4) DescriptorSet 0 Decorate 82(g_tTex2du4) Binding 6 - Decorate 94(g_tTexcdf4) DescriptorSet 0 + Decorate 82(g_tTex2du4) DescriptorSet 0 Decorate 94(g_tTexcdf4) Binding 7 - Decorate 104(g_tTexcdi4) DescriptorSet 0 + Decorate 94(g_tTexcdf4) DescriptorSet 0 Decorate 104(g_tTexcdi4) Binding 8 - Decorate 114(g_tTexcdu4) DescriptorSet 0 + Decorate 104(g_tTexcdi4) DescriptorSet 0 Decorate 114(g_tTexcdu4) Binding 9 + Decorate 114(g_tTexcdu4) DescriptorSet 0 Decorate 138(@entryPointOutput.Color) Location 0 Decorate 142(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 145(g_tTex1df4a) DescriptorSet 0 Decorate 145(g_tTex1df4a) Binding 1 + Decorate 145(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out index 919be7198a..4b95ca2aff 100644 --- a/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.basic.dx10.frag.out @@ -470,36 +470,36 @@ using depth_any Name 162 "@entryPointOutput.Color" Name 166 "@entryPointOutput.Depth" Name 169 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 - Decorate 46(g_tTex1du4) DescriptorSet 0 + Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 - Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 - Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 5 - Decorate 78(g_tTex2du4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 78(g_tTex2du4) Binding 6 - Decorate 89(g_tTex3df4) DescriptorSet 0 + Decorate 78(g_tTex2du4) DescriptorSet 0 Decorate 89(g_tTex3df4) Binding 7 - Decorate 100(g_tTex3di4) DescriptorSet 0 + Decorate 89(g_tTex3df4) DescriptorSet 0 Decorate 100(g_tTex3di4) Binding 8 - Decorate 110(g_tTex3du4) DescriptorSet 0 + Decorate 100(g_tTex3di4) DescriptorSet 0 Decorate 110(g_tTex3du4) Binding 9 - Decorate 123(g_tTexcdf4) DescriptorSet 0 + Decorate 110(g_tTex3du4) DescriptorSet 0 Decorate 123(g_tTexcdf4) Binding 10 - Decorate 132(g_tTexcdi4) DescriptorSet 0 + Decorate 123(g_tTexcdf4) DescriptorSet 0 Decorate 132(g_tTexcdi4) Binding 11 - Decorate 141(g_tTexcdu4) DescriptorSet 0 + Decorate 132(g_tTexcdi4) DescriptorSet 0 Decorate 141(g_tTexcdu4) Binding 12 + Decorate 141(g_tTexcdu4) DescriptorSet 0 Decorate 162(@entryPointOutput.Color) Location 0 Decorate 166(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 169(g_tTex1df4a) DescriptorSet 0 Decorate 169(g_tTex1df4a) Binding 1 + Decorate 169(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out index 5b297577f4..f6403a0e7d 100644 --- a/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offset.dx10.frag.out @@ -443,36 +443,36 @@ using depth_any Name 154 "g_tTexcdf4" Name 157 "g_tTexcdi4" Name 160 "g_tTexcdu4" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 - Decorate 47(g_tTex1du4) DescriptorSet 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 - Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 - Decorate 71(g_tTex2di4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 - Decorate 83(g_tTex2du4) DescriptorSet 0 + Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 83(g_tTex2du4) Binding 6 - Decorate 96(g_tTex3df4) DescriptorSet 0 + Decorate 83(g_tTex2du4) DescriptorSet 0 Decorate 96(g_tTex3df4) Binding 7 - Decorate 109(g_tTex3di4) DescriptorSet 0 + Decorate 96(g_tTex3df4) DescriptorSet 0 Decorate 109(g_tTex3di4) Binding 8 - Decorate 120(g_tTex3du4) DescriptorSet 0 + Decorate 109(g_tTex3di4) DescriptorSet 0 Decorate 120(g_tTex3du4) Binding 9 + Decorate 120(g_tTex3du4) DescriptorSet 0 Decorate 144(@entryPointOutput.Color) Location 0 Decorate 148(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 151(g_tTex1df4a) DescriptorSet 0 Decorate 151(g_tTex1df4a) Binding 1 - Decorate 154(g_tTexcdf4) DescriptorSet 0 + Decorate 151(g_tTex1df4a) DescriptorSet 0 Decorate 154(g_tTexcdf4) Binding 0 - Decorate 157(g_tTexcdi4) DescriptorSet 0 + Decorate 154(g_tTexcdf4) DescriptorSet 0 Decorate 157(g_tTexcdi4) Binding 0 - Decorate 160(g_tTexcdu4) DescriptorSet 0 + Decorate 157(g_tTexcdi4) DescriptorSet 0 Decorate 160(g_tTexcdu4) Binding 0 + Decorate 160(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out index c3114a1b50..ba31124fa1 100644 --- a/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplebias.offsetarray.dx10.frag.out @@ -332,24 +332,24 @@ using depth_any Name 110 "@entryPointOutput.Color" Name 114 "@entryPointOutput.Depth" Name 117 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 37(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex1di4) Binding 2 - Decorate 52(g_tTex1du4) DescriptorSet 0 + Decorate 37(g_tTex1di4) DescriptorSet 0 Decorate 52(g_tTex1du4) Binding 3 - Decorate 64(g_tTex2df4) DescriptorSet 0 + Decorate 52(g_tTex1du4) DescriptorSet 0 Decorate 64(g_tTex2df4) Binding 4 - Decorate 77(g_tTex2di4) DescriptorSet 0 + Decorate 64(g_tTex2df4) DescriptorSet 0 Decorate 77(g_tTex2di4) Binding 5 - Decorate 87(g_tTex2du4) DescriptorSet 0 + Decorate 77(g_tTex2di4) DescriptorSet 0 Decorate 87(g_tTex2du4) Binding 6 + Decorate 87(g_tTex2du4) DescriptorSet 0 Decorate 110(@entryPointOutput.Color) Location 0 Decorate 114(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 117(g_tTex1df4a) DescriptorSet 0 Decorate 117(g_tTex1df4a) Binding 1 + Decorate 117(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out index cde1d519c4..7ecb39f13c 100644 --- a/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.array.dx10.frag.out @@ -451,52 +451,52 @@ Validation failed Name 187 "g_tTexcdf4" Name 190 "g_tTexcdi4" Name 193 "g_tTexcdu4" - Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 39(g_tTex1di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 39(g_tTex1di4a) Binding 2 - Decorate 53(g_tTex1du4a) DescriptorSet 0 + Decorate 39(g_tTex1di4a) DescriptorSet 0 Decorate 53(g_tTex1du4a) Binding 3 - Decorate 66(g_tTex2df4a) DescriptorSet 0 + Decorate 53(g_tTex1du4a) DescriptorSet 0 Decorate 66(g_tTex2df4a) Binding 4 - Decorate 82(g_tTex2di4a) DescriptorSet 0 + Decorate 66(g_tTex2df4a) DescriptorSet 0 Decorate 82(g_tTex2di4a) Binding 5 - Decorate 96(g_tTex2du4a) DescriptorSet 0 + Decorate 82(g_tTex2di4a) DescriptorSet 0 Decorate 96(g_tTex2du4a) Binding 6 - Decorate 110(g_tTexcdf4a) DescriptorSet 0 + Decorate 96(g_tTex2du4a) DescriptorSet 0 Decorate 110(g_tTexcdf4a) Binding 7 - Decorate 121(g_tTexcdi4a) DescriptorSet 0 + Decorate 110(g_tTexcdf4a) DescriptorSet 0 Decorate 121(g_tTexcdi4a) Binding 8 - Decorate 130(g_tTexcdu4a) DescriptorSet 0 + Decorate 121(g_tTexcdi4a) DescriptorSet 0 Decorate 130(g_tTexcdu4a) Binding 9 + Decorate 130(g_tTexcdu4a) DescriptorSet 0 Decorate 151(@entryPointOutput.Color) Location 0 Decorate 155(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 160(g_tTex1df4) DescriptorSet 0 Decorate 160(g_tTex1df4) Binding 0 - Decorate 163(g_tTex1di4) DescriptorSet 0 + Decorate 160(g_tTex1df4) DescriptorSet 0 Decorate 163(g_tTex1di4) Binding 0 - Decorate 166(g_tTex1du4) DescriptorSet 0 + Decorate 163(g_tTex1di4) DescriptorSet 0 Decorate 166(g_tTex1du4) Binding 0 - Decorate 169(g_tTex2df4) DescriptorSet 0 + Decorate 166(g_tTex1du4) DescriptorSet 0 Decorate 169(g_tTex2df4) Binding 0 - Decorate 172(g_tTex2di4) DescriptorSet 0 + Decorate 169(g_tTex2df4) DescriptorSet 0 Decorate 172(g_tTex2di4) Binding 0 - Decorate 175(g_tTex2du4) DescriptorSet 0 + Decorate 172(g_tTex2di4) DescriptorSet 0 Decorate 175(g_tTex2du4) Binding 0 - Decorate 178(g_tTex3df4) DescriptorSet 0 + Decorate 175(g_tTex2du4) DescriptorSet 0 Decorate 178(g_tTex3df4) Binding 0 - Decorate 181(g_tTex3di4) DescriptorSet 0 + Decorate 178(g_tTex3df4) DescriptorSet 0 Decorate 181(g_tTex3di4) Binding 0 - Decorate 184(g_tTex3du4) DescriptorSet 0 + Decorate 181(g_tTex3di4) DescriptorSet 0 Decorate 184(g_tTex3du4) Binding 0 - Decorate 187(g_tTexcdf4) DescriptorSet 0 + Decorate 184(g_tTex3du4) DescriptorSet 0 Decorate 187(g_tTexcdf4) Binding 0 - Decorate 190(g_tTexcdi4) DescriptorSet 0 + Decorate 187(g_tTexcdf4) DescriptorSet 0 Decorate 190(g_tTexcdi4) Binding 0 - Decorate 193(g_tTexcdu4) DescriptorSet 0 + Decorate 190(g_tTexcdi4) DescriptorSet 0 Decorate 193(g_tTexcdu4) Binding 0 + Decorate 193(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out index fde1b58c43..a355f880bf 100644 --- a/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out @@ -433,52 +433,52 @@ Validation failed Name 191 "g_tTexcdf4a" Name 194 "g_tTexcdi4a" Name 197 "g_tTexcdu4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 1 - Decorate 46(g_tTex1du4) DescriptorSet 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 2 - Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 3 - Decorate 73(g_tTex2di4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 73(g_tTex2di4) Binding 4 - Decorate 86(g_tTex2du4) DescriptorSet 0 + Decorate 73(g_tTex2di4) DescriptorSet 0 Decorate 86(g_tTex2du4) Binding 5 - Decorate 99(g_tTexcdf4) DescriptorSet 0 + Decorate 86(g_tTex2du4) DescriptorSet 0 Decorate 99(g_tTexcdf4) Binding 6 - Decorate 115(g_tTexcdi4) DescriptorSet 0 + Decorate 99(g_tTexcdf4) DescriptorSet 0 Decorate 115(g_tTexcdi4) Binding 7 - Decorate 129(g_tTexcdu4) DescriptorSet 0 + Decorate 115(g_tTexcdi4) DescriptorSet 0 Decorate 129(g_tTexcdu4) Binding 8 + Decorate 129(g_tTexcdu4) DescriptorSet 0 Decorate 155(@entryPointOutput.Color) Location 0 Decorate 159(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 164(g_tTex3df4) DescriptorSet 0 Decorate 164(g_tTex3df4) Binding 0 - Decorate 167(g_tTex3di4) DescriptorSet 0 + Decorate 164(g_tTex3df4) DescriptorSet 0 Decorate 167(g_tTex3di4) Binding 0 - Decorate 170(g_tTex3du4) DescriptorSet 0 + Decorate 167(g_tTex3di4) DescriptorSet 0 Decorate 170(g_tTex3du4) Binding 0 - Decorate 173(g_tTex1df4a) DescriptorSet 0 + Decorate 170(g_tTex3du4) DescriptorSet 0 Decorate 173(g_tTex1df4a) Binding 0 - Decorate 176(g_tTex1di4a) DescriptorSet 0 + Decorate 173(g_tTex1df4a) DescriptorSet 0 Decorate 176(g_tTex1di4a) Binding 0 - Decorate 179(g_tTex1du4a) DescriptorSet 0 + Decorate 176(g_tTex1di4a) DescriptorSet 0 Decorate 179(g_tTex1du4a) Binding 0 - Decorate 182(g_tTex2df4a) DescriptorSet 0 + Decorate 179(g_tTex1du4a) DescriptorSet 0 Decorate 182(g_tTex2df4a) Binding 0 - Decorate 185(g_tTex2di4a) DescriptorSet 0 + Decorate 182(g_tTex2df4a) DescriptorSet 0 Decorate 185(g_tTex2di4a) Binding 0 - Decorate 188(g_tTex2du4a) DescriptorSet 0 + Decorate 185(g_tTex2di4a) DescriptorSet 0 Decorate 188(g_tTex2du4a) Binding 0 - Decorate 191(g_tTexcdf4a) DescriptorSet 0 + Decorate 188(g_tTex2du4a) DescriptorSet 0 Decorate 191(g_tTexcdf4a) Binding 0 - Decorate 194(g_tTexcdi4a) DescriptorSet 0 + Decorate 191(g_tTexcdf4a) DescriptorSet 0 Decorate 194(g_tTexcdi4a) Binding 0 - Decorate 197(g_tTexcdu4a) DescriptorSet 0 + Decorate 194(g_tTexcdi4a) DescriptorSet 0 Decorate 197(g_tTexcdu4a) Binding 0 + Decorate 197(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out index 7f17e90022..da2b024a21 100644 --- a/Test/baseResults/hlsl.samplecmp.dualmode.frag.out +++ b/Test/baseResults/hlsl.samplecmp.dualmode.frag.out @@ -102,14 +102,14 @@ gl_FragCoord origin is upper left Name 29 "g_tTex" Name 31 "g_sSamp" Name 41 "@entryPointOutput" - Decorate 13(g_tTex) DescriptorSet 0 Decorate 13(g_tTex) Binding 3 - Decorate 17(g_sSampCmp) DescriptorSet 0 + Decorate 13(g_tTex) DescriptorSet 0 Decorate 17(g_sSampCmp) Binding 1 - Decorate 29(g_tTex) DescriptorSet 0 + Decorate 17(g_sSampCmp) DescriptorSet 0 Decorate 29(g_tTex) Binding 3 - Decorate 31(g_sSamp) DescriptorSet 0 + Decorate 29(g_tTex) DescriptorSet 0 Decorate 31(g_sSamp) Binding 0 + Decorate 31(g_sSamp) DescriptorSet 0 Decorate 41(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out index cc1b858125..f5286378c7 100644 --- a/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out @@ -376,52 +376,52 @@ Validation failed Name 160 "g_tTexcdf4a" Name 163 "g_tTexcdi4a" Name 166 "g_tTexcdu4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 35(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 - Decorate 47(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 2 - Decorate 58(g_tTex2df4) DescriptorSet 0 + Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 3 - Decorate 77(g_tTex2di4) DescriptorSet 0 + Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 77(g_tTex2di4) Binding 4 - Decorate 90(g_tTex2du4) DescriptorSet 0 + Decorate 77(g_tTex2di4) DescriptorSet 0 Decorate 90(g_tTex2du4) Binding 5 + Decorate 90(g_tTex2du4) DescriptorSet 0 Decorate 115(@entryPointOutput.Color) Location 0 Decorate 119(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 124(g_tTex3df4) DescriptorSet 0 Decorate 124(g_tTex3df4) Binding 0 - Decorate 127(g_tTex3di4) DescriptorSet 0 + Decorate 124(g_tTex3df4) DescriptorSet 0 Decorate 127(g_tTex3di4) Binding 0 - Decorate 130(g_tTex3du4) DescriptorSet 0 + Decorate 127(g_tTex3di4) DescriptorSet 0 Decorate 130(g_tTex3du4) Binding 0 - Decorate 133(g_tTexcdf4) DescriptorSet 0 + Decorate 130(g_tTex3du4) DescriptorSet 0 Decorate 133(g_tTexcdf4) Binding 0 - Decorate 136(g_tTexcdi4) DescriptorSet 0 + Decorate 133(g_tTexcdf4) DescriptorSet 0 Decorate 136(g_tTexcdi4) Binding 0 - Decorate 139(g_tTexcdu4) DescriptorSet 0 + Decorate 136(g_tTexcdi4) DescriptorSet 0 Decorate 139(g_tTexcdu4) Binding 0 - Decorate 142(g_tTex1df4a) DescriptorSet 0 + Decorate 139(g_tTexcdu4) DescriptorSet 0 Decorate 142(g_tTex1df4a) Binding 0 - Decorate 145(g_tTex1di4a) DescriptorSet 0 + Decorate 142(g_tTex1df4a) DescriptorSet 0 Decorate 145(g_tTex1di4a) Binding 0 - Decorate 148(g_tTex1du4a) DescriptorSet 0 + Decorate 145(g_tTex1di4a) DescriptorSet 0 Decorate 148(g_tTex1du4a) Binding 0 - Decorate 151(g_tTex2df4a) DescriptorSet 0 + Decorate 148(g_tTex1du4a) DescriptorSet 0 Decorate 151(g_tTex2df4a) Binding 0 - Decorate 154(g_tTex2di4a) DescriptorSet 0 + Decorate 151(g_tTex2df4a) DescriptorSet 0 Decorate 154(g_tTex2di4a) Binding 0 - Decorate 157(g_tTex2du4a) DescriptorSet 0 + Decorate 154(g_tTex2di4a) DescriptorSet 0 Decorate 157(g_tTex2du4a) Binding 0 - Decorate 160(g_tTexcdf4a) DescriptorSet 0 + Decorate 157(g_tTex2du4a) DescriptorSet 0 Decorate 160(g_tTexcdf4a) Binding 0 - Decorate 163(g_tTexcdi4a) DescriptorSet 0 + Decorate 160(g_tTexcdf4a) DescriptorSet 0 Decorate 163(g_tTexcdi4a) Binding 0 - Decorate 166(g_tTexcdu4a) DescriptorSet 0 + Decorate 163(g_tTexcdi4a) DescriptorSet 0 Decorate 166(g_tTexcdu4a) Binding 0 + Decorate 166(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out index 9d8413c965..0500534c35 100644 --- a/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out @@ -388,52 +388,52 @@ Validation failed Name 171 "g_tTexcdf4a" Name 174 "g_tTexcdi4a" Name 177 "g_tTexcdu4a" - Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 40(g_tTex1di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 40(g_tTex1di4a) Binding 2 - Decorate 54(g_tTex1du4a) DescriptorSet 0 + Decorate 40(g_tTex1di4a) DescriptorSet 0 Decorate 54(g_tTex1du4a) Binding 3 - Decorate 67(g_tTex2df4a) DescriptorSet 0 + Decorate 54(g_tTex1du4a) DescriptorSet 0 Decorate 67(g_tTex2df4a) Binding 4 - Decorate 86(g_tTex2di4a) DescriptorSet 0 + Decorate 67(g_tTex2df4a) DescriptorSet 0 Decorate 86(g_tTex2di4a) Binding 5 - Decorate 100(g_tTex2du4a) DescriptorSet 0 + Decorate 86(g_tTex2di4a) DescriptorSet 0 Decorate 100(g_tTex2du4a) Binding 6 + Decorate 100(g_tTex2du4a) DescriptorSet 0 Decorate 126(@entryPointOutput.Color) Location 0 Decorate 130(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 135(g_tTex1df4) DescriptorSet 0 Decorate 135(g_tTex1df4) Binding 0 - Decorate 138(g_tTex1di4) DescriptorSet 0 + Decorate 135(g_tTex1df4) DescriptorSet 0 Decorate 138(g_tTex1di4) Binding 0 - Decorate 141(g_tTex1du4) DescriptorSet 0 + Decorate 138(g_tTex1di4) DescriptorSet 0 Decorate 141(g_tTex1du4) Binding 0 - Decorate 144(g_tTex2df4) DescriptorSet 0 + Decorate 141(g_tTex1du4) DescriptorSet 0 Decorate 144(g_tTex2df4) Binding 0 - Decorate 147(g_tTex2di4) DescriptorSet 0 + Decorate 144(g_tTex2df4) DescriptorSet 0 Decorate 147(g_tTex2di4) Binding 0 - Decorate 150(g_tTex2du4) DescriptorSet 0 + Decorate 147(g_tTex2di4) DescriptorSet 0 Decorate 150(g_tTex2du4) Binding 0 - Decorate 153(g_tTex3df4) DescriptorSet 0 + Decorate 150(g_tTex2du4) DescriptorSet 0 Decorate 153(g_tTex3df4) Binding 0 - Decorate 156(g_tTex3di4) DescriptorSet 0 + Decorate 153(g_tTex3df4) DescriptorSet 0 Decorate 156(g_tTex3di4) Binding 0 - Decorate 159(g_tTex3du4) DescriptorSet 0 + Decorate 156(g_tTex3di4) DescriptorSet 0 Decorate 159(g_tTex3du4) Binding 0 - Decorate 162(g_tTexcdf4) DescriptorSet 0 + Decorate 159(g_tTex3du4) DescriptorSet 0 Decorate 162(g_tTexcdf4) Binding 0 - Decorate 165(g_tTexcdi4) DescriptorSet 0 + Decorate 162(g_tTexcdf4) DescriptorSet 0 Decorate 165(g_tTexcdi4) Binding 0 - Decorate 168(g_tTexcdu4) DescriptorSet 0 + Decorate 165(g_tTexcdi4) DescriptorSet 0 Decorate 168(g_tTexcdu4) Binding 0 - Decorate 171(g_tTexcdf4a) DescriptorSet 0 + Decorate 168(g_tTexcdu4) DescriptorSet 0 Decorate 171(g_tTexcdf4a) Binding 0 - Decorate 174(g_tTexcdi4a) DescriptorSet 0 + Decorate 171(g_tTexcdf4a) DescriptorSet 0 Decorate 174(g_tTexcdi4a) Binding 0 - Decorate 177(g_tTexcdu4a) DescriptorSet 0 + Decorate 174(g_tTexcdi4a) DescriptorSet 0 Decorate 177(g_tTexcdu4a) Binding 0 + Decorate 177(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out index b9adf6fe5d..66b5092ab6 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out @@ -487,52 +487,52 @@ Validation failed Name 188 "g_tTexcdf4" Name 191 "g_tTexcdi4" Name 194 "g_tTexcdu4" - Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 40(g_tTex1di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 40(g_tTex1di4a) Binding 2 - Decorate 54(g_tTex1du4a) DescriptorSet 0 + Decorate 40(g_tTex1di4a) DescriptorSet 0 Decorate 54(g_tTex1du4a) Binding 3 - Decorate 67(g_tTex2df4a) DescriptorSet 0 + Decorate 54(g_tTex1du4a) DescriptorSet 0 Decorate 67(g_tTex2df4a) Binding 4 - Decorate 83(g_tTex2di4a) DescriptorSet 0 + Decorate 67(g_tTex2df4a) DescriptorSet 0 Decorate 83(g_tTex2di4a) Binding 5 - Decorate 97(g_tTex2du4a) DescriptorSet 0 + Decorate 83(g_tTex2di4a) DescriptorSet 0 Decorate 97(g_tTex2du4a) Binding 6 - Decorate 111(g_tTexcdf4a) DescriptorSet 0 + Decorate 97(g_tTex2du4a) DescriptorSet 0 Decorate 111(g_tTexcdf4a) Binding 7 - Decorate 122(g_tTexcdi4a) DescriptorSet 0 + Decorate 111(g_tTexcdf4a) DescriptorSet 0 Decorate 122(g_tTexcdi4a) Binding 8 - Decorate 131(g_tTexcdu4a) DescriptorSet 0 + Decorate 122(g_tTexcdi4a) DescriptorSet 0 Decorate 131(g_tTexcdu4a) Binding 9 + Decorate 131(g_tTexcdu4a) DescriptorSet 0 Decorate 152(@entryPointOutput.Color) Location 0 Decorate 156(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 161(g_tTex1df4) DescriptorSet 0 Decorate 161(g_tTex1df4) Binding 0 - Decorate 164(g_tTex1di4) DescriptorSet 0 + Decorate 161(g_tTex1df4) DescriptorSet 0 Decorate 164(g_tTex1di4) Binding 0 - Decorate 167(g_tTex1du4) DescriptorSet 0 + Decorate 164(g_tTex1di4) DescriptorSet 0 Decorate 167(g_tTex1du4) Binding 0 - Decorate 170(g_tTex2df4) DescriptorSet 0 + Decorate 167(g_tTex1du4) DescriptorSet 0 Decorate 170(g_tTex2df4) Binding 0 - Decorate 173(g_tTex2di4) DescriptorSet 0 + Decorate 170(g_tTex2df4) DescriptorSet 0 Decorate 173(g_tTex2di4) Binding 0 - Decorate 176(g_tTex2du4) DescriptorSet 0 + Decorate 173(g_tTex2di4) DescriptorSet 0 Decorate 176(g_tTex2du4) Binding 0 - Decorate 179(g_tTex3df4) DescriptorSet 0 + Decorate 176(g_tTex2du4) DescriptorSet 0 Decorate 179(g_tTex3df4) Binding 0 - Decorate 182(g_tTex3di4) DescriptorSet 0 + Decorate 179(g_tTex3df4) DescriptorSet 0 Decorate 182(g_tTex3di4) Binding 0 - Decorate 185(g_tTex3du4) DescriptorSet 0 + Decorate 182(g_tTex3di4) DescriptorSet 0 Decorate 185(g_tTex3du4) Binding 0 - Decorate 188(g_tTexcdf4) DescriptorSet 0 + Decorate 185(g_tTex3du4) DescriptorSet 0 Decorate 188(g_tTexcdf4) Binding 0 - Decorate 191(g_tTexcdi4) DescriptorSet 0 + Decorate 188(g_tTexcdf4) DescriptorSet 0 Decorate 191(g_tTexcdi4) Binding 0 - Decorate 194(g_tTexcdu4) DescriptorSet 0 + Decorate 191(g_tTexcdi4) DescriptorSet 0 Decorate 194(g_tTexcdu4) Binding 0 + Decorate 194(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out index 6807d995fe..c833b51aa5 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out @@ -469,52 +469,52 @@ Validation failed Name 192 "g_tTexcdf4a" Name 195 "g_tTexcdi4a" Name 198 "g_tTexcdu4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 35(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 1 - Decorate 47(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 2 - Decorate 58(g_tTex2df4) DescriptorSet 0 + Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 3 - Decorate 74(g_tTex2di4) DescriptorSet 0 + Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 74(g_tTex2di4) Binding 4 - Decorate 87(g_tTex2du4) DescriptorSet 0 + Decorate 74(g_tTex2di4) DescriptorSet 0 Decorate 87(g_tTex2du4) Binding 5 - Decorate 100(g_tTexcdf4) DescriptorSet 0 + Decorate 87(g_tTex2du4) DescriptorSet 0 Decorate 100(g_tTexcdf4) Binding 6 - Decorate 116(g_tTexcdi4) DescriptorSet 0 + Decorate 100(g_tTexcdf4) DescriptorSet 0 Decorate 116(g_tTexcdi4) Binding 7 - Decorate 130(g_tTexcdu4) DescriptorSet 0 + Decorate 116(g_tTexcdi4) DescriptorSet 0 Decorate 130(g_tTexcdu4) Binding 8 + Decorate 130(g_tTexcdu4) DescriptorSet 0 Decorate 156(@entryPointOutput.Color) Location 0 Decorate 160(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 165(g_tTex3df4) DescriptorSet 0 Decorate 165(g_tTex3df4) Binding 0 - Decorate 168(g_tTex3di4) DescriptorSet 0 + Decorate 165(g_tTex3df4) DescriptorSet 0 Decorate 168(g_tTex3di4) Binding 0 - Decorate 171(g_tTex3du4) DescriptorSet 0 + Decorate 168(g_tTex3di4) DescriptorSet 0 Decorate 171(g_tTex3du4) Binding 0 - Decorate 174(g_tTex1df4a) DescriptorSet 0 + Decorate 171(g_tTex3du4) DescriptorSet 0 Decorate 174(g_tTex1df4a) Binding 0 - Decorate 177(g_tTex1di4a) DescriptorSet 0 + Decorate 174(g_tTex1df4a) DescriptorSet 0 Decorate 177(g_tTex1di4a) Binding 0 - Decorate 180(g_tTex1du4a) DescriptorSet 0 + Decorate 177(g_tTex1di4a) DescriptorSet 0 Decorate 180(g_tTex1du4a) Binding 0 - Decorate 183(g_tTex2df4a) DescriptorSet 0 + Decorate 180(g_tTex1du4a) DescriptorSet 0 Decorate 183(g_tTex2df4a) Binding 0 - Decorate 186(g_tTex2di4a) DescriptorSet 0 + Decorate 183(g_tTex2df4a) DescriptorSet 0 Decorate 186(g_tTex2di4a) Binding 0 - Decorate 189(g_tTex2du4a) DescriptorSet 0 + Decorate 186(g_tTex2di4a) DescriptorSet 0 Decorate 189(g_tTex2du4a) Binding 0 - Decorate 192(g_tTexcdf4a) DescriptorSet 0 + Decorate 189(g_tTex2du4a) DescriptorSet 0 Decorate 192(g_tTexcdf4a) Binding 0 - Decorate 195(g_tTexcdi4a) DescriptorSet 0 + Decorate 192(g_tTexcdf4a) DescriptorSet 0 Decorate 195(g_tTexcdi4a) Binding 0 - Decorate 198(g_tTexcdu4a) DescriptorSet 0 + Decorate 195(g_tTexcdi4a) DescriptorSet 0 Decorate 198(g_tTexcdu4a) Binding 0 + Decorate 198(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out index 338a5e71da..70d2bd7792 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out @@ -400,52 +400,52 @@ Validation failed Name 161 "g_tTexcdf4a" Name 164 "g_tTexcdi4a" Name 167 "g_tTexcdu4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 36(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4) Binding 1 - Decorate 48(g_tTex1du4) DescriptorSet 0 + Decorate 36(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 2 - Decorate 59(g_tTex2df4) DescriptorSet 0 + Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 59(g_tTex2df4) Binding 3 - Decorate 78(g_tTex2di4) DescriptorSet 0 + Decorate 59(g_tTex2df4) DescriptorSet 0 Decorate 78(g_tTex2di4) Binding 4 - Decorate 91(g_tTex2du4) DescriptorSet 0 + Decorate 78(g_tTex2di4) DescriptorSet 0 Decorate 91(g_tTex2du4) Binding 5 + Decorate 91(g_tTex2du4) DescriptorSet 0 Decorate 116(@entryPointOutput.Color) Location 0 Decorate 120(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 125(g_tTex3df4) DescriptorSet 0 Decorate 125(g_tTex3df4) Binding 0 - Decorate 128(g_tTex3di4) DescriptorSet 0 + Decorate 125(g_tTex3df4) DescriptorSet 0 Decorate 128(g_tTex3di4) Binding 0 - Decorate 131(g_tTex3du4) DescriptorSet 0 + Decorate 128(g_tTex3di4) DescriptorSet 0 Decorate 131(g_tTex3du4) Binding 0 - Decorate 134(g_tTexcdf4) DescriptorSet 0 + Decorate 131(g_tTex3du4) DescriptorSet 0 Decorate 134(g_tTexcdf4) Binding 0 - Decorate 137(g_tTexcdi4) DescriptorSet 0 + Decorate 134(g_tTexcdf4) DescriptorSet 0 Decorate 137(g_tTexcdi4) Binding 0 - Decorate 140(g_tTexcdu4) DescriptorSet 0 + Decorate 137(g_tTexcdi4) DescriptorSet 0 Decorate 140(g_tTexcdu4) Binding 0 - Decorate 143(g_tTex1df4a) DescriptorSet 0 + Decorate 140(g_tTexcdu4) DescriptorSet 0 Decorate 143(g_tTex1df4a) Binding 0 - Decorate 146(g_tTex1di4a) DescriptorSet 0 + Decorate 143(g_tTex1df4a) DescriptorSet 0 Decorate 146(g_tTex1di4a) Binding 0 - Decorate 149(g_tTex1du4a) DescriptorSet 0 + Decorate 146(g_tTex1di4a) DescriptorSet 0 Decorate 149(g_tTex1du4a) Binding 0 - Decorate 152(g_tTex2df4a) DescriptorSet 0 + Decorate 149(g_tTex1du4a) DescriptorSet 0 Decorate 152(g_tTex2df4a) Binding 0 - Decorate 155(g_tTex2di4a) DescriptorSet 0 + Decorate 152(g_tTex2df4a) DescriptorSet 0 Decorate 155(g_tTex2di4a) Binding 0 - Decorate 158(g_tTex2du4a) DescriptorSet 0 + Decorate 155(g_tTex2di4a) DescriptorSet 0 Decorate 158(g_tTex2du4a) Binding 0 - Decorate 161(g_tTexcdf4a) DescriptorSet 0 + Decorate 158(g_tTex2du4a) DescriptorSet 0 Decorate 161(g_tTexcdf4a) Binding 0 - Decorate 164(g_tTexcdi4a) DescriptorSet 0 + Decorate 161(g_tTexcdf4a) DescriptorSet 0 Decorate 164(g_tTexcdi4a) Binding 0 - Decorate 167(g_tTexcdu4a) DescriptorSet 0 + Decorate 164(g_tTexcdi4a) DescriptorSet 0 Decorate 167(g_tTexcdu4a) Binding 0 + Decorate 167(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out index 4b68c90f38..c3fbf0d156 100644 --- a/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out @@ -412,52 +412,52 @@ Validation failed Name 172 "g_tTexcdf4a" Name 175 "g_tTexcdi4a" Name 178 "g_tTexcdu4a" - Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 41(g_tTex1di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 41(g_tTex1di4a) Binding 2 - Decorate 55(g_tTex1du4a) DescriptorSet 0 + Decorate 41(g_tTex1di4a) DescriptorSet 0 Decorate 55(g_tTex1du4a) Binding 3 - Decorate 68(g_tTex2df4a) DescriptorSet 0 + Decorate 55(g_tTex1du4a) DescriptorSet 0 Decorate 68(g_tTex2df4a) Binding 4 - Decorate 87(g_tTex2di4a) DescriptorSet 0 + Decorate 68(g_tTex2df4a) DescriptorSet 0 Decorate 87(g_tTex2di4a) Binding 5 - Decorate 101(g_tTex2du4a) DescriptorSet 0 + Decorate 87(g_tTex2di4a) DescriptorSet 0 Decorate 101(g_tTex2du4a) Binding 6 + Decorate 101(g_tTex2du4a) DescriptorSet 0 Decorate 127(@entryPointOutput.Color) Location 0 Decorate 131(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 136(g_tTex1df4) DescriptorSet 0 Decorate 136(g_tTex1df4) Binding 0 - Decorate 139(g_tTex1di4) DescriptorSet 0 + Decorate 136(g_tTex1df4) DescriptorSet 0 Decorate 139(g_tTex1di4) Binding 0 - Decorate 142(g_tTex1du4) DescriptorSet 0 + Decorate 139(g_tTex1di4) DescriptorSet 0 Decorate 142(g_tTex1du4) Binding 0 - Decorate 145(g_tTex2df4) DescriptorSet 0 + Decorate 142(g_tTex1du4) DescriptorSet 0 Decorate 145(g_tTex2df4) Binding 0 - Decorate 148(g_tTex2di4) DescriptorSet 0 + Decorate 145(g_tTex2df4) DescriptorSet 0 Decorate 148(g_tTex2di4) Binding 0 - Decorate 151(g_tTex2du4) DescriptorSet 0 + Decorate 148(g_tTex2di4) DescriptorSet 0 Decorate 151(g_tTex2du4) Binding 0 - Decorate 154(g_tTex3df4) DescriptorSet 0 + Decorate 151(g_tTex2du4) DescriptorSet 0 Decorate 154(g_tTex3df4) Binding 0 - Decorate 157(g_tTex3di4) DescriptorSet 0 + Decorate 154(g_tTex3df4) DescriptorSet 0 Decorate 157(g_tTex3di4) Binding 0 - Decorate 160(g_tTex3du4) DescriptorSet 0 + Decorate 157(g_tTex3di4) DescriptorSet 0 Decorate 160(g_tTex3du4) Binding 0 - Decorate 163(g_tTexcdf4) DescriptorSet 0 + Decorate 160(g_tTex3du4) DescriptorSet 0 Decorate 163(g_tTexcdf4) Binding 0 - Decorate 166(g_tTexcdi4) DescriptorSet 0 + Decorate 163(g_tTexcdf4) DescriptorSet 0 Decorate 166(g_tTexcdi4) Binding 0 - Decorate 169(g_tTexcdu4) DescriptorSet 0 + Decorate 166(g_tTexcdi4) DescriptorSet 0 Decorate 169(g_tTexcdu4) Binding 0 - Decorate 172(g_tTexcdf4a) DescriptorSet 0 + Decorate 169(g_tTexcdu4) DescriptorSet 0 Decorate 172(g_tTexcdf4a) Binding 0 - Decorate 175(g_tTexcdi4a) DescriptorSet 0 + Decorate 172(g_tTexcdf4a) DescriptorSet 0 Decorate 175(g_tTexcdi4a) Binding 0 - Decorate 178(g_tTexcdu4a) DescriptorSet 0 + Decorate 175(g_tTexcdi4a) DescriptorSet 0 Decorate 178(g_tTexcdu4a) Binding 0 + Decorate 178(g_tTexcdu4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out index a2e58bd6a9..b70b0bff62 100644 --- a/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.array.dx10.frag.out @@ -471,30 +471,30 @@ using depth_any Name 132 "@entryPointOutput.Color" Name 136 "@entryPointOutput.Depth" Name 139 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 37(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex1di4) Binding 2 - Decorate 49(g_tTex1du4) DescriptorSet 0 + Decorate 37(g_tTex1di4) DescriptorSet 0 Decorate 49(g_tTex1du4) Binding 3 - Decorate 58(g_tTex2df4) DescriptorSet 0 + Decorate 49(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 4 - Decorate 71(g_tTex2di4) DescriptorSet 0 + Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 - Decorate 80(g_tTex2du4) DescriptorSet 0 + Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 80(g_tTex2du4) Binding 6 - Decorate 89(g_tTexcdf4) DescriptorSet 0 + Decorate 80(g_tTex2du4) DescriptorSet 0 Decorate 89(g_tTexcdf4) Binding 7 - Decorate 102(g_tTexcdi4) DescriptorSet 0 + Decorate 89(g_tTexcdf4) DescriptorSet 0 Decorate 102(g_tTexcdi4) Binding 8 - Decorate 111(g_tTexcdu4) DescriptorSet 0 + Decorate 102(g_tTexcdi4) DescriptorSet 0 Decorate 111(g_tTexcdu4) Binding 9 + Decorate 111(g_tTexcdu4) DescriptorSet 0 Decorate 132(@entryPointOutput.Color) Location 0 Decorate 136(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 139(g_tTex1df4a) DescriptorSet 0 Decorate 139(g_tTex1df4a) Binding 1 + Decorate 139(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out index 09bfbdf30b..b17306d0ba 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.frag.out @@ -578,36 +578,36 @@ using depth_any Name 167 "@entryPointOutput.Color" Name 171 "@entryPointOutput.Depth" Name 174 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 - Decorate 47(g_tTex1du4) DescriptorSet 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 - Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 - Decorate 69(g_tTex2di4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 69(g_tTex2di4) Binding 5 - Decorate 80(g_tTex2du4) DescriptorSet 0 + Decorate 69(g_tTex2di4) DescriptorSet 0 Decorate 80(g_tTex2du4) Binding 6 - Decorate 92(g_tTex3df4) DescriptorSet 0 + Decorate 80(g_tTex2du4) DescriptorSet 0 Decorate 92(g_tTex3df4) Binding 7 - Decorate 105(g_tTex3di4) DescriptorSet 0 + Decorate 92(g_tTex3df4) DescriptorSet 0 Decorate 105(g_tTex3di4) Binding 8 - Decorate 115(g_tTex3du4) DescriptorSet 0 + Decorate 105(g_tTex3di4) DescriptorSet 0 Decorate 115(g_tTex3du4) Binding 9 - Decorate 128(g_tTexcdf4) DescriptorSet 0 + Decorate 115(g_tTex3du4) DescriptorSet 0 Decorate 128(g_tTexcdf4) Binding 10 - Decorate 137(g_tTexcdi4) DescriptorSet 0 + Decorate 128(g_tTexcdf4) DescriptorSet 0 Decorate 137(g_tTexcdi4) Binding 11 - Decorate 146(g_tTexcdu4) DescriptorSet 0 + Decorate 137(g_tTexcdi4) DescriptorSet 0 Decorate 146(g_tTexcdu4) Binding 12 + Decorate 146(g_tTexcdu4) DescriptorSet 0 Decorate 167(@entryPointOutput.Color) Location 0 Decorate 171(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 174(g_tTex1df4a) DescriptorSet 0 Decorate 174(g_tTex1df4a) Binding 1 + Decorate 174(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out index f63d9e8e4e..902500cd66 100644 --- a/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplegrad.basic.dx10.vert.out @@ -535,35 +535,35 @@ Shader version: 500 Name 153 "vsout" Name 162 "@entryPointOutput.Pos" Name 165 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 - Decorate 47(g_tTex1du4) DescriptorSet 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 - Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 - Decorate 69(g_tTex2di4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 69(g_tTex2di4) Binding 5 - Decorate 80(g_tTex2du4) DescriptorSet 0 + Decorate 69(g_tTex2di4) DescriptorSet 0 Decorate 80(g_tTex2du4) Binding 6 - Decorate 92(g_tTex3df4) DescriptorSet 0 + Decorate 80(g_tTex2du4) DescriptorSet 0 Decorate 92(g_tTex3df4) Binding 7 - Decorate 105(g_tTex3di4) DescriptorSet 0 + Decorate 92(g_tTex3df4) DescriptorSet 0 Decorate 105(g_tTex3di4) Binding 8 - Decorate 115(g_tTex3du4) DescriptorSet 0 + Decorate 105(g_tTex3di4) DescriptorSet 0 Decorate 115(g_tTex3du4) Binding 9 - Decorate 128(g_tTexcdf4) DescriptorSet 0 + Decorate 115(g_tTex3du4) DescriptorSet 0 Decorate 128(g_tTexcdf4) Binding 10 - Decorate 137(g_tTexcdi4) DescriptorSet 0 + Decorate 128(g_tTexcdf4) DescriptorSet 0 Decorate 137(g_tTexcdi4) Binding 11 - Decorate 146(g_tTexcdu4) DescriptorSet 0 + Decorate 137(g_tTexcdi4) DescriptorSet 0 Decorate 146(g_tTexcdu4) Binding 12 + Decorate 146(g_tTexcdu4) DescriptorSet 0 Decorate 162(@entryPointOutput.Pos) BuiltIn Position - Decorate 165(g_tTex1df4a) DescriptorSet 0 Decorate 165(g_tTex1df4a) Binding 1 + Decorate 165(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out index 3180e7a33b..63c9421956 100644 --- a/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offset.dx10.frag.out @@ -515,36 +515,36 @@ using depth_any Name 159 "g_tTexcdf4" Name 162 "g_tTexcdi4" Name 165 "g_tTexcdu4" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 35(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 35(g_tTex1di4) Binding 2 - Decorate 48(g_tTex1du4) DescriptorSet 0 + Decorate 35(g_tTex1di4) DescriptorSet 0 Decorate 48(g_tTex1du4) Binding 3 - Decorate 58(g_tTex2df4) DescriptorSet 0 + Decorate 48(g_tTex1du4) DescriptorSet 0 Decorate 58(g_tTex2df4) Binding 4 - Decorate 73(g_tTex2di4) DescriptorSet 0 + Decorate 58(g_tTex2df4) DescriptorSet 0 Decorate 73(g_tTex2di4) Binding 5 - Decorate 85(g_tTex2du4) DescriptorSet 0 + Decorate 73(g_tTex2di4) DescriptorSet 0 Decorate 85(g_tTex2du4) Binding 6 - Decorate 99(g_tTex3df4) DescriptorSet 0 + Decorate 85(g_tTex2du4) DescriptorSet 0 Decorate 99(g_tTex3df4) Binding 7 - Decorate 114(g_tTex3di4) DescriptorSet 0 + Decorate 99(g_tTex3df4) DescriptorSet 0 Decorate 114(g_tTex3di4) Binding 8 - Decorate 125(g_tTex3du4) DescriptorSet 0 + Decorate 114(g_tTex3di4) DescriptorSet 0 Decorate 125(g_tTex3du4) Binding 9 + Decorate 125(g_tTex3du4) DescriptorSet 0 Decorate 149(@entryPointOutput.Color) Location 0 Decorate 153(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 156(g_tTex1df4a) DescriptorSet 0 Decorate 156(g_tTex1df4a) Binding 1 - Decorate 159(g_tTexcdf4) DescriptorSet 0 + Decorate 156(g_tTex1df4a) DescriptorSet 0 Decorate 159(g_tTexcdf4) Binding 0 - Decorate 162(g_tTexcdi4) DescriptorSet 0 + Decorate 159(g_tTexcdf4) DescriptorSet 0 Decorate 162(g_tTexcdi4) Binding 0 - Decorate 165(g_tTexcdu4) DescriptorSet 0 + Decorate 162(g_tTexcdi4) DescriptorSet 0 Decorate 165(g_tTexcdu4) Binding 0 + Decorate 165(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out index ce799699c8..2f24516282 100644 --- a/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplegrad.offsetarray.dx10.frag.out @@ -378,30 +378,30 @@ using depth_any Name 113 "g_tTexcdf4" Name 116 "g_tTexcdi4" Name 119 "g_tTexcdu4" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 38(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 38(g_tTex1di4) Binding 2 - Decorate 50(g_tTex1du4) DescriptorSet 0 + Decorate 38(g_tTex1di4) DescriptorSet 0 Decorate 50(g_tTex1du4) Binding 3 - Decorate 59(g_tTex2df4) DescriptorSet 0 + Decorate 50(g_tTex1du4) DescriptorSet 0 Decorate 59(g_tTex2df4) Binding 4 - Decorate 75(g_tTex2di4) DescriptorSet 0 + Decorate 59(g_tTex2df4) DescriptorSet 0 Decorate 75(g_tTex2di4) Binding 5 - Decorate 84(g_tTex2du4) DescriptorSet 0 + Decorate 75(g_tTex2di4) DescriptorSet 0 Decorate 84(g_tTex2du4) Binding 6 + Decorate 84(g_tTex2du4) DescriptorSet 0 Decorate 103(@entryPointOutput.Color) Location 0 Decorate 107(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 110(g_tTex1df4a) DescriptorSet 0 Decorate 110(g_tTex1df4a) Binding 1 - Decorate 113(g_tTexcdf4) DescriptorSet 0 + Decorate 110(g_tTex1df4a) DescriptorSet 0 Decorate 113(g_tTexcdf4) Binding 0 - Decorate 116(g_tTexcdi4) DescriptorSet 0 + Decorate 113(g_tTexcdf4) DescriptorSet 0 Decorate 116(g_tTexcdi4) Binding 0 - Decorate 119(g_tTexcdu4) DescriptorSet 0 + Decorate 116(g_tTexcdi4) DescriptorSet 0 Decorate 119(g_tTexcdu4) Binding 0 + Decorate 119(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out index 7f3af78310..5057df6baf 100644 --- a/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.array.dx10.frag.out @@ -399,30 +399,30 @@ using depth_any Name 139 "@entryPointOutput.Color" Name 143 "@entryPointOutput.Depth" Name 146 "g_tTex1df4" - Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 16(g_tTex1df4a) Binding 1 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4a) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 36(g_tTex1di4a) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 36(g_tTex1di4a) Binding 2 - Decorate 50(g_tTex1du4a) DescriptorSet 0 + Decorate 36(g_tTex1di4a) DescriptorSet 0 Decorate 50(g_tTex1du4a) Binding 3 - Decorate 61(g_tTex2df4a) DescriptorSet 0 + Decorate 50(g_tTex1du4a) DescriptorSet 0 Decorate 61(g_tTex2df4a) Binding 4 - Decorate 72(g_tTex2di4a) DescriptorSet 0 + Decorate 61(g_tTex2df4a) DescriptorSet 0 Decorate 72(g_tTex2di4a) Binding 5 - Decorate 83(g_tTex2du4a) DescriptorSet 0 + Decorate 72(g_tTex2di4a) DescriptorSet 0 Decorate 83(g_tTex2du4a) Binding 6 - Decorate 95(g_tTexcdf4a) DescriptorSet 0 + Decorate 83(g_tTex2du4a) DescriptorSet 0 Decorate 95(g_tTexcdf4a) Binding 7 - Decorate 105(g_tTexcdi4a) DescriptorSet 0 + Decorate 95(g_tTexcdf4a) DescriptorSet 0 Decorate 105(g_tTexcdi4a) Binding 8 - Decorate 115(g_tTexcdu4a) DescriptorSet 0 + Decorate 105(g_tTexcdi4a) DescriptorSet 0 Decorate 115(g_tTexcdu4a) Binding 9 + Decorate 115(g_tTexcdu4a) DescriptorSet 0 Decorate 139(@entryPointOutput.Color) Location 0 Decorate 143(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 146(g_tTex1df4) DescriptorSet 0 Decorate 146(g_tTex1df4) Binding 0 + Decorate 146(g_tTex1df4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out index e1d449f595..7055dfae62 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.frag.out @@ -473,38 +473,38 @@ using depth_any Name 167 "@entryPointOutput.Depth" Name 170 "g_sSamp2d" Name 171 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 - Decorate 46(g_tTex1du4) DescriptorSet 0 + Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 - Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 - Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 5 - Decorate 78(g_tTex2du4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 78(g_tTex2du4) Binding 6 - Decorate 90(g_tTex3df4) DescriptorSet 0 + Decorate 78(g_tTex2du4) DescriptorSet 0 Decorate 90(g_tTex3df4) Binding 7 - Decorate 101(g_tTex3di4) DescriptorSet 0 + Decorate 90(g_tTex3df4) DescriptorSet 0 Decorate 101(g_tTex3di4) Binding 8 - Decorate 111(g_tTex3du4) DescriptorSet 0 + Decorate 101(g_tTex3di4) DescriptorSet 0 Decorate 111(g_tTex3du4) Binding 9 - Decorate 124(g_tTexcdf4) DescriptorSet 0 + Decorate 111(g_tTex3du4) DescriptorSet 0 Decorate 124(g_tTexcdf4) Binding 10 - Decorate 133(g_tTexcdi4) DescriptorSet 0 + Decorate 124(g_tTexcdf4) DescriptorSet 0 Decorate 133(g_tTexcdi4) Binding 11 - Decorate 142(g_tTexcdu4) DescriptorSet 0 + Decorate 133(g_tTexcdi4) DescriptorSet 0 Decorate 142(g_tTexcdu4) Binding 12 + Decorate 142(g_tTexcdu4) DescriptorSet 0 Decorate 163(@entryPointOutput.Color) Location 0 Decorate 167(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 170(g_sSamp2d) DescriptorSet 0 Decorate 170(g_sSamp2d) Binding 0 - Decorate 171(g_tTex1df4a) DescriptorSet 0 + Decorate 170(g_sSamp2d) DescriptorSet 0 Decorate 171(g_tTex1df4a) Binding 1 + Decorate 171(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out index bbb51f37b7..f590133174 100644 --- a/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out +++ b/Test/baseResults/hlsl.samplelevel.basic.dx10.vert.out @@ -427,35 +427,35 @@ Shader version: 500 Name 149 "vsout" Name 158 "@entryPointOutput.Pos" Name 161 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 33(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 33(g_tTex1di4) Binding 2 - Decorate 46(g_tTex1du4) DescriptorSet 0 + Decorate 33(g_tTex1di4) DescriptorSet 0 Decorate 46(g_tTex1du4) Binding 3 - Decorate 56(g_tTex2df4) DescriptorSet 0 + Decorate 46(g_tTex1du4) DescriptorSet 0 Decorate 56(g_tTex2df4) Binding 4 - Decorate 67(g_tTex2di4) DescriptorSet 0 + Decorate 56(g_tTex2df4) DescriptorSet 0 Decorate 67(g_tTex2di4) Binding 5 - Decorate 78(g_tTex2du4) DescriptorSet 0 + Decorate 67(g_tTex2di4) DescriptorSet 0 Decorate 78(g_tTex2du4) Binding 6 - Decorate 90(g_tTex3df4) DescriptorSet 0 + Decorate 78(g_tTex2du4) DescriptorSet 0 Decorate 90(g_tTex3df4) Binding 7 - Decorate 101(g_tTex3di4) DescriptorSet 0 + Decorate 90(g_tTex3df4) DescriptorSet 0 Decorate 101(g_tTex3di4) Binding 8 - Decorate 111(g_tTex3du4) DescriptorSet 0 + Decorate 101(g_tTex3di4) DescriptorSet 0 Decorate 111(g_tTex3du4) Binding 9 - Decorate 124(g_tTexcdf4) DescriptorSet 0 + Decorate 111(g_tTex3du4) DescriptorSet 0 Decorate 124(g_tTexcdf4) Binding 10 - Decorate 133(g_tTexcdi4) DescriptorSet 0 + Decorate 124(g_tTexcdf4) DescriptorSet 0 Decorate 133(g_tTexcdi4) Binding 11 - Decorate 142(g_tTexcdu4) DescriptorSet 0 + Decorate 133(g_tTexcdi4) DescriptorSet 0 Decorate 142(g_tTexcdu4) Binding 12 + Decorate 142(g_tTexcdu4) DescriptorSet 0 Decorate 158(@entryPointOutput.Pos) BuiltIn Position - Decorate 161(g_tTex1df4a) DescriptorSet 0 Decorate 161(g_tTex1df4a) Binding 1 + Decorate 161(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out index 1b06c57977..e1ec0faee5 100644 --- a/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offset.dx10.frag.out @@ -443,36 +443,36 @@ using depth_any Name 155 "g_tTexcdf4" Name 158 "g_tTexcdi4" Name 161 "g_tTexcdu4" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 34(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 34(g_tTex1di4) Binding 2 - Decorate 47(g_tTex1du4) DescriptorSet 0 + Decorate 34(g_tTex1di4) DescriptorSet 0 Decorate 47(g_tTex1du4) Binding 3 - Decorate 57(g_tTex2df4) DescriptorSet 0 + Decorate 47(g_tTex1du4) DescriptorSet 0 Decorate 57(g_tTex2df4) Binding 4 - Decorate 71(g_tTex2di4) DescriptorSet 0 + Decorate 57(g_tTex2df4) DescriptorSet 0 Decorate 71(g_tTex2di4) Binding 5 - Decorate 83(g_tTex2du4) DescriptorSet 0 + Decorate 71(g_tTex2di4) DescriptorSet 0 Decorate 83(g_tTex2du4) Binding 6 - Decorate 97(g_tTex3df4) DescriptorSet 0 + Decorate 83(g_tTex2du4) DescriptorSet 0 Decorate 97(g_tTex3df4) Binding 7 - Decorate 110(g_tTex3di4) DescriptorSet 0 + Decorate 97(g_tTex3df4) DescriptorSet 0 Decorate 110(g_tTex3di4) Binding 8 - Decorate 121(g_tTex3du4) DescriptorSet 0 + Decorate 110(g_tTex3di4) DescriptorSet 0 Decorate 121(g_tTex3du4) Binding 9 + Decorate 121(g_tTex3du4) DescriptorSet 0 Decorate 145(@entryPointOutput.Color) Location 0 Decorate 149(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 152(g_tTex1df4a) DescriptorSet 0 Decorate 152(g_tTex1df4a) Binding 1 - Decorate 155(g_tTexcdf4) DescriptorSet 0 + Decorate 152(g_tTex1df4a) DescriptorSet 0 Decorate 155(g_tTexcdf4) Binding 0 - Decorate 158(g_tTexcdi4) DescriptorSet 0 + Decorate 155(g_tTexcdf4) DescriptorSet 0 Decorate 158(g_tTexcdi4) Binding 0 - Decorate 161(g_tTexcdu4) DescriptorSet 0 + Decorate 158(g_tTexcdi4) DescriptorSet 0 Decorate 161(g_tTexcdu4) Binding 0 + Decorate 161(g_tTexcdu4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out index e256054611..7c057dffeb 100644 --- a/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out +++ b/Test/baseResults/hlsl.samplelevel.offsetarray.dx10.frag.out @@ -332,24 +332,24 @@ using depth_any Name 111 "@entryPointOutput.Color" Name 115 "@entryPointOutput.Depth" Name 118 "g_tTex1df4a" - Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 16(g_tTex1df4) Binding 0 - Decorate 20(g_sSamp) DescriptorSet 0 + Decorate 16(g_tTex1df4) DescriptorSet 0 Decorate 20(g_sSamp) Binding 0 - Decorate 37(g_tTex1di4) DescriptorSet 0 + Decorate 20(g_sSamp) DescriptorSet 0 Decorate 37(g_tTex1di4) Binding 2 - Decorate 52(g_tTex1du4) DescriptorSet 0 + Decorate 37(g_tTex1di4) DescriptorSet 0 Decorate 52(g_tTex1du4) Binding 3 - Decorate 64(g_tTex2df4) DescriptorSet 0 + Decorate 52(g_tTex1du4) DescriptorSet 0 Decorate 64(g_tTex2df4) Binding 4 - Decorate 77(g_tTex2di4) DescriptorSet 0 + Decorate 64(g_tTex2df4) DescriptorSet 0 Decorate 77(g_tTex2di4) Binding 5 - Decorate 88(g_tTex2du4) DescriptorSet 0 + Decorate 77(g_tTex2di4) DescriptorSet 0 Decorate 88(g_tTex2du4) Binding 6 + Decorate 88(g_tTex2du4) DescriptorSet 0 Decorate 111(@entryPointOutput.Color) Location 0 Decorate 115(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 118(g_tTex1df4a) DescriptorSet 0 Decorate 118(g_tTex1df4a) Binding 1 + Decorate 118(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.snorm.uav.comp.out b/Test/baseResults/hlsl.snorm.uav.comp.out index 40ab6cf13e..de82aa4da5 100644 --- a/Test/baseResults/hlsl.snorm.uav.comp.out +++ b/Test/baseResults/hlsl.snorm.uav.comp.out @@ -136,18 +136,18 @@ local_size = (16, 16, 1) Name 47 "tid" Name 49 "tid" Name 51 "param" - Decorate 19(ResultInS) DescriptorSet 0 Decorate 19(ResultInS) Binding 1 - MemberDecorate 25($Global) 0 Offset 0 + Decorate 19(ResultInS) DescriptorSet 0 Decorate 25($Global) Block - Decorate 27 DescriptorSet 0 + MemberDecorate 25($Global) 0 Offset 0 Decorate 27 Binding 2 - Decorate 34(ResultOutS) DescriptorSet 0 + Decorate 27 DescriptorSet 0 Decorate 34(ResultOutS) Binding 1 - Decorate 39(ResultInU) DescriptorSet 0 + Decorate 34(ResultOutS) DescriptorSet 0 Decorate 39(ResultInU) Binding 0 - Decorate 43(ResultOutU) DescriptorSet 0 + Decorate 39(ResultInU) DescriptorSet 0 Decorate 43(ResultOutU) Binding 0 + Decorate 43(ResultOutU) DescriptorSet 0 Decorate 49(tid) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out index 2198affb7f..3524cf9f4c 100644 --- a/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out +++ b/Test/baseResults/hlsl.store.rwbyteaddressbuffer.type.comp.out @@ -116,10 +116,10 @@ local_size = (64, 1, 1) Name 37 "dispatchThreadID" Name 39 "param" Decorate 27 ArrayStride 4 - MemberDecorate 28(buffer) 0 Offset 0 Decorate 28(buffer) BufferBlock - Decorate 30(buffer) DescriptorSet 0 + MemberDecorate 28(buffer) 0 Offset 0 Decorate 30(buffer) Binding 0 + Decorate 30(buffer) DescriptorSet 0 Decorate 37(dispatchThreadID) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.stringtoken.frag.out b/Test/baseResults/hlsl.stringtoken.frag.out index 144bebc675..b656ae88de 100644 --- a/Test/baseResults/hlsl.stringtoken.frag.out +++ b/Test/baseResults/hlsl.stringtoken.frag.out @@ -90,12 +90,12 @@ gl_FragCoord origin is upper left MemberName 31($Global) 0 "TestUF" Name 33 "" Decorate 25(@entryPointOutput.Color) Location 0 - Decorate 30(TestTexture) DescriptorSet 0 Decorate 30(TestTexture) Binding 0 - MemberDecorate 31($Global) 0 Offset 0 + Decorate 30(TestTexture) DescriptorSet 0 Decorate 31($Global) Block - Decorate 33 DescriptorSet 0 + MemberDecorate 31($Global) 0 Offset 0 Decorate 33 Binding 0 + Decorate 33 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.struct.frag.out b/Test/baseResults/hlsl.struct.frag.out index a36bba429f..24671d46af 100644 --- a/Test/baseResults/hlsl.struct.frag.out +++ b/Test/baseResults/hlsl.struct.frag.out @@ -279,8 +279,8 @@ Validation failed Decorate 65(s.c) Location 3 Decorate 71(s.d) Centroid Decorate 71(s.d) Location 4 - Decorate 76(s.ff1) Flat Decorate 76(s.ff1) BuiltIn FrontFacing + Decorate 76(s.ff1) Flat Decorate 80(s.ff2) Flat Decorate 80(s.ff2) Location 5 Decorate 84(s.ff3) Flat @@ -291,12 +291,12 @@ Validation failed MemberDecorate 98(myS) 1 Offset 4 MemberDecorate 98(myS) 2 Offset 16 MemberDecorate 98(myS) 3 Offset 32 + Decorate 99($Global) Block MemberDecorate 99($Global) 0 Offset 0 MemberDecorate 99($Global) 1 Offset 1620 MemberDecorate 99($Global) 2 Offset 1636 - Decorate 99($Global) Block - Decorate 101 DescriptorSet 0 Decorate 101 Binding 0 + Decorate 101 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.structIoFourWay.frag.out b/Test/baseResults/hlsl.structIoFourWay.frag.out index 3faff5bde2..1143a94259 100644 --- a/Test/baseResults/hlsl.structIoFourWay.frag.out +++ b/Test/baseResults/hlsl.structIoFourWay.frag.out @@ -217,14 +217,14 @@ using depth_greater MemberDecorate 58(T) 1 Offset 72 MemberDecorate 58(T) 2 Offset 76 MemberDecorate 58(T) 3 Offset 80 - MemberDecorate 59($Global) 0 Offset 0 Decorate 59($Global) Block - Decorate 61 DescriptorSet 0 + MemberDecorate 59($Global) 0 Offset 0 Decorate 61 Binding 0 - MemberDecorate 62(buff) 0 Offset 96 + Decorate 61 DescriptorSet 0 Decorate 62(buff) Block - Decorate 64 DescriptorSet 0 + MemberDecorate 62(buff) 0 Offset 96 Decorate 64 Binding 0 + Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.structarray.flatten.frag.out b/Test/baseResults/hlsl.structarray.flatten.frag.out index 4896dca5b9..e5c01fcc29 100644 --- a/Test/baseResults/hlsl.structarray.flatten.frag.out +++ b/Test/baseResults/hlsl.structarray.flatten.frag.out @@ -198,51 +198,51 @@ Validation failed Name 77 "g_texdata_array2[2].samp" Name 78 "g_texdata_array2[2].tex" Name 79 "g_texdata_array2[2].nonopaque_thing" - Decorate 18(g_texdata.tex) DescriptorSet 0 Decorate 18(g_texdata.tex) Binding 1 - Decorate 22(g_texdata.samp) DescriptorSet 0 + Decorate 18(g_texdata.tex) DescriptorSet 0 Decorate 22(g_texdata.samp) Binding 0 - Decorate 28(g_texdata_array[1].tex) DescriptorSet 0 + Decorate 22(g_texdata.samp) DescriptorSet 0 Decorate 28(g_texdata_array[1].tex) Binding 3 - Decorate 30(g_texdata_array[1].samp) DescriptorSet 0 + Decorate 28(g_texdata_array[1].tex) DescriptorSet 0 Decorate 30(g_texdata_array[1].samp) Binding 2 - Decorate 40(g_texdata_array2[1].tex) DescriptorSet 0 + Decorate 30(g_texdata_array[1].samp) DescriptorSet 0 Decorate 40(g_texdata_array2[1].tex) Binding 5 - Decorate 45(g_texdata_array2[1].samp) DescriptorSet 0 + Decorate 40(g_texdata_array2[1].tex) DescriptorSet 0 Decorate 45(g_texdata_array2[1].samp) Binding 4 + Decorate 45(g_texdata_array2[1].samp) DescriptorSet 0 Decorate 59(ps_output.color) Location 0 - Decorate 62(g_samp) DescriptorSet 0 Decorate 62(g_samp) Binding 0 - Decorate 63(g_tex) DescriptorSet 0 + Decorate 62(g_samp) DescriptorSet 0 Decorate 63(g_tex) Binding 0 + Decorate 63(g_tex) DescriptorSet 0 Decorate 65(g_texdata.nonopaque_thing) Location 0 Decorate 65(g_texdata.nonopaque_thing) DescriptorSet 0 - Decorate 66(g_texdata_array[0].samp) DescriptorSet 0 Decorate 66(g_texdata_array[0].samp) Binding 0 - Decorate 67(g_texdata_array[0].tex) DescriptorSet 0 + Decorate 66(g_texdata_array[0].samp) DescriptorSet 0 Decorate 67(g_texdata_array[0].tex) Binding 0 + Decorate 67(g_texdata_array[0].tex) DescriptorSet 0 Decorate 68(g_texdata_array[0].nonopaque_thing) Location 1 Decorate 68(g_texdata_array[0].nonopaque_thing) DescriptorSet 0 Decorate 69(g_texdata_array[1].nonopaque_thing) Location 2 Decorate 69(g_texdata_array[1].nonopaque_thing) DescriptorSet 0 - Decorate 70(g_texdata_array[2].samp) DescriptorSet 0 Decorate 70(g_texdata_array[2].samp) Binding 0 - Decorate 71(g_texdata_array[2].tex) DescriptorSet 0 + Decorate 70(g_texdata_array[2].samp) DescriptorSet 0 Decorate 71(g_texdata_array[2].tex) Binding 0 + Decorate 71(g_texdata_array[2].tex) DescriptorSet 0 Decorate 72(g_texdata_array[2].nonopaque_thing) Location 3 Decorate 72(g_texdata_array[2].nonopaque_thing) DescriptorSet 0 - Decorate 73(g_texdata_array2[0].samp) DescriptorSet 0 Decorate 73(g_texdata_array2[0].samp) Binding 0 - Decorate 74(g_texdata_array2[0].tex) DescriptorSet 0 + Decorate 73(g_texdata_array2[0].samp) DescriptorSet 0 Decorate 74(g_texdata_array2[0].tex) Binding 0 + Decorate 74(g_texdata_array2[0].tex) DescriptorSet 0 Decorate 75(g_texdata_array2[0].nonopaque_thing) Location 4 Decorate 75(g_texdata_array2[0].nonopaque_thing) DescriptorSet 0 Decorate 76(g_texdata_array2[1].nonopaque_thing) Location 5 Decorate 76(g_texdata_array2[1].nonopaque_thing) DescriptorSet 0 - Decorate 77(g_texdata_array2[2].samp) DescriptorSet 0 Decorate 77(g_texdata_array2[2].samp) Binding 0 - Decorate 78(g_texdata_array2[2].tex) DescriptorSet 0 + Decorate 77(g_texdata_array2[2].samp) DescriptorSet 0 Decorate 78(g_texdata_array2[2].tex) Binding 0 + Decorate 78(g_texdata_array2[2].tex) DescriptorSet 0 Decorate 79(g_texdata_array2[2].nonopaque_thing) Location 6 Decorate 79(g_texdata_array2[2].nonopaque_thing) DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out index acfbf5d906..aa3fa98c00 100644 --- a/Test/baseResults/hlsl.structbuffer.append.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.append.fn.frag.out @@ -186,28 +186,28 @@ Validation failed Name 68 "sbuf_c@count" Name 69 "sbuf_unused" Decorate 8 ArrayStride 16 - MemberDecorate 9 0 Offset 0 Decorate 9 BufferBlock + MemberDecorate 9 0 Offset 0 Decorate 12 BufferBlock - Decorate 49(sbuf_a) DescriptorSet 0 Decorate 49(sbuf_a) Binding 0 - Decorate 50(sbuf_a@count) DescriptorSet 0 + Decorate 49(sbuf_a) DescriptorSet 0 Decorate 50(sbuf_a@count) Binding 0 - Decorate 51(sbuf_c) DescriptorSet 0 + Decorate 50(sbuf_a@count) DescriptorSet 0 Decorate 51(sbuf_c) Binding 1 - Decorate 52(sbuf_c@count) DescriptorSet 0 + Decorate 51(sbuf_c) DescriptorSet 0 Decorate 52(sbuf_c@count) Binding 0 + Decorate 52(sbuf_c@count) DescriptorSet 0 Decorate 58(pos) Flat Decorate 58(pos) Location 0 Decorate 61(@entryPointOutput) Location 0 - MemberDecorate 65(sbuf_a@count) 0 Offset 0 Decorate 65(sbuf_a@count) BufferBlock - Decorate 67(sbuf_a@count) DescriptorSet 0 + MemberDecorate 65(sbuf_a@count) 0 Offset 0 Decorate 67(sbuf_a@count) Binding 0 - Decorate 68(sbuf_c@count) DescriptorSet 0 + Decorate 67(sbuf_a@count) DescriptorSet 0 Decorate 68(sbuf_c@count) Binding 0 - Decorate 69(sbuf_unused) DescriptorSet 0 + Decorate 68(sbuf_c@count) DescriptorSet 0 Decorate 69(sbuf_unused) Binding 0 + Decorate 69(sbuf_unused) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/hlsl.structbuffer.append.frag.out b/Test/baseResults/hlsl.structbuffer.append.frag.out index 4c57e0bcc6..48dfe6a5f9 100644 --- a/Test/baseResults/hlsl.structbuffer.append.frag.out +++ b/Test/baseResults/hlsl.structbuffer.append.frag.out @@ -150,23 +150,23 @@ gl_FragCoord origin is upper left Name 52 "param" Name 55 "sbuf_unused" Decorate 14 ArrayStride 16 - MemberDecorate 15(sbuf_a) 0 Offset 0 Decorate 15(sbuf_a) BufferBlock - Decorate 17(sbuf_a) DescriptorSet 0 + MemberDecorate 15(sbuf_a) 0 Offset 0 Decorate 17(sbuf_a) Binding 0 - MemberDecorate 20(sbuf_a@count) 0 Offset 0 + Decorate 17(sbuf_a) DescriptorSet 0 Decorate 20(sbuf_a@count) BufferBlock - Decorate 22(sbuf_a@count) DescriptorSet 0 + MemberDecorate 20(sbuf_a@count) 0 Offset 0 Decorate 22(sbuf_a@count) Binding 1 - Decorate 35(sbuf_c) DescriptorSet 0 + Decorate 22(sbuf_a@count) DescriptorSet 0 Decorate 35(sbuf_c) Binding 2 - Decorate 36(sbuf_c@count) DescriptorSet 0 + Decorate 35(sbuf_c) DescriptorSet 0 Decorate 36(sbuf_c@count) Binding 3 + Decorate 36(sbuf_c@count) DescriptorSet 0 Decorate 48(pos) Flat Decorate 48(pos) Location 0 Decorate 51(@entryPointOutput) Location 0 - Decorate 55(sbuf_unused) DescriptorSet 0 Decorate 55(sbuf_unused) Binding 0 + Decorate 55(sbuf_unused) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/hlsl.structbuffer.atomics.frag.out b/Test/baseResults/hlsl.structbuffer.atomics.frag.out index 3f26652d67..712d974cf6 100644 --- a/Test/baseResults/hlsl.structbuffer.atomics.frag.out +++ b/Test/baseResults/hlsl.structbuffer.atomics.frag.out @@ -496,10 +496,10 @@ Validation failed Name 83 "@entryPointOutput" Name 84 "param" Decorate 14 ArrayStride 4 - MemberDecorate 15(sbuf) 0 Offset 0 Decorate 15(sbuf) BufferBlock - Decorate 17(sbuf) DescriptorSet 0 + MemberDecorate 15(sbuf) 0 Offset 0 Decorate 17(sbuf) Binding 0 + Decorate 17(sbuf) DescriptorSet 0 Decorate 80(pos) Flat Decorate 80(pos) Location 0 Decorate 83(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out index f3e92cea8c..389cd9c107 100644 --- a/Test/baseResults/hlsl.structbuffer.byte.frag.out +++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out @@ -348,11 +348,11 @@ gl_FragCoord origin is upper left Name 110 "@entryPointOutput" Name 111 "param" Decorate 15 ArrayStride 4 + Decorate 16(sbuf) BufferBlock MemberDecorate 16(sbuf) 0 NonWritable MemberDecorate 16(sbuf) 0 Offset 0 - Decorate 16(sbuf) BufferBlock - Decorate 18(sbuf) DescriptorSet 0 Decorate 18(sbuf) Binding 0 + Decorate 18(sbuf) DescriptorSet 0 Decorate 107(pos) Flat Decorate 107(pos) Location 0 Decorate 110(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out index 65e4a1461e..6647df1a00 100644 --- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out +++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out @@ -204,19 +204,19 @@ gl_FragCoord origin is upper left Name 74 "@entryPointOutput" Name 75 "param" Decorate 14 ArrayStride 4 + Decorate 15(sbuf2) BufferBlock MemberDecorate 15(sbuf2) 0 Coherent MemberDecorate 15(sbuf2) 0 Offset 0 - Decorate 15(sbuf2) BufferBlock - Decorate 17(sbuf2) DescriptorSet 0 Decorate 17(sbuf2) Binding 1 + Decorate 17(sbuf2) DescriptorSet 0 MemberDecorate 28(sb_t) 0 Offset 0 MemberDecorate 28(sb_t) 1 Offset 12 Decorate 29 ArrayStride 16 + Decorate 30(sbuf) BufferBlock MemberDecorate 30(sbuf) 0 Coherent MemberDecorate 30(sbuf) 0 Offset 0 - Decorate 30(sbuf) BufferBlock - Decorate 32(sbuf) DescriptorSet 0 Decorate 32(sbuf) Binding 0 + Decorate 32(sbuf) DescriptorSet 0 Decorate 71(pos) Flat Decorate 71(pos) Location 0 Decorate 74(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out index 6a86e48117..cea0ef7a26 100644 --- a/Test/baseResults/hlsl.structbuffer.floatidx.comp.out +++ b/Test/baseResults/hlsl.structbuffer.floatidx.comp.out @@ -217,21 +217,21 @@ local_size = (1, 1, 1) MemberDecorate 19(sb_t) 0 Offset 0 MemberDecorate 19(sb_t) 1 Offset 16 Decorate 20 ArrayStride 32 - MemberDecorate 21(csb) 0 Offset 0 Decorate 21(csb) BufferBlock - Decorate 23(csb) DescriptorSet 0 + MemberDecorate 21(csb) 0 Offset 0 Decorate 23(csb) Binding 1 - MemberDecorate 26(csb@count) 0 Offset 0 + Decorate 23(csb) DescriptorSet 0 Decorate 26(csb@count) BufferBlock - Decorate 28(csb@count) DescriptorSet 0 + MemberDecorate 26(csb@count) 0 Offset 0 Decorate 28(csb@count) Binding 2 - Decorate 58(outtx) DescriptorSet 0 + Decorate 28(csb@count) DescriptorSet 0 Decorate 58(outtx) Binding 0 + Decorate 58(outtx) DescriptorSet 0 Decorate 63 ArrayStride 16 - MemberDecorate 64(rwsb) 0 Offset 0 Decorate 64(rwsb) BufferBlock - Decorate 66(rwsb) DescriptorSet 0 + MemberDecorate 64(rwsb) 0 Offset 0 Decorate 66(rwsb) Binding 3 + Decorate 66(rwsb) DescriptorSet 0 Decorate 80(nThreadId) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out index 2086d59fea..846bcab526 100644 --- a/Test/baseResults/hlsl.structbuffer.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out @@ -182,33 +182,33 @@ Validation failed MemberName 75(sbuf3) 0 "@data" Name 77 "sbuf3" Decorate 8 ArrayStride 16 + Decorate 9 BufferBlock MemberDecorate 9 0 NonWritable MemberDecorate 9 0 Offset 0 - Decorate 9 BufferBlock Decorate 13(sb) NonWritable Decorate 17 ArrayStride 16 - MemberDecorate 18 0 Offset 0 Decorate 18 BufferBlock + MemberDecorate 18 0 Offset 0 Decorate 20 BufferBlock - Decorate 47(sbuf2) DescriptorSet 0 Decorate 47(sbuf2) Binding 0 - Decorate 48(sbuf2@count) DescriptorSet 0 + Decorate 47(sbuf2) DescriptorSet 0 Decorate 48(sbuf2@count) Binding 0 - Decorate 50(sbuf) DescriptorSet 0 + Decorate 48(sbuf2@count) DescriptorSet 0 Decorate 50(sbuf) Binding 10 + Decorate 50(sbuf) DescriptorSet 0 Decorate 63(pos) Flat Decorate 63(pos) Location 0 Decorate 66(@entryPointOutput) Location 0 - MemberDecorate 70(sbuf2@count) 0 Offset 0 Decorate 70(sbuf2@count) BufferBlock - Decorate 72(sbuf2@count) DescriptorSet 0 + MemberDecorate 70(sbuf2@count) 0 Offset 0 Decorate 72(sbuf2@count) Binding 0 + Decorate 72(sbuf2@count) DescriptorSet 0 Decorate 74 ArrayStride 16 + Decorate 75(sbuf3) BufferBlock MemberDecorate 75(sbuf3) 0 NonWritable MemberDecorate 75(sbuf3) 0 Offset 0 - Decorate 75(sbuf3) BufferBlock - Decorate 77(sbuf3) DescriptorSet 0 Decorate 77(sbuf3) Binding 12 + Decorate 77(sbuf3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out index 1953d46793..20159a597a 100644 --- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out +++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out @@ -165,14 +165,14 @@ local_size = (256, 1, 1) Name 57 "dispatchId" Name 60 "param" Decorate 8 ArrayStride 4 + Decorate 9 BufferBlock MemberDecorate 9 0 NonWritable MemberDecorate 9 0 Offset 0 - Decorate 9 BufferBlock Decorate 14(buffer) NonWritable - Decorate 44(g_input) DescriptorSet 0 Decorate 44(g_input) Binding 0 - Decorate 50(g_output) DescriptorSet 0 + Decorate 44(g_input) DescriptorSet 0 Decorate 50(g_output) Binding 1 + Decorate 50(g_output) DescriptorSet 0 Decorate 57(dispatchId) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out index 0e16ef1613..abcfa485ca 100644 --- a/Test/baseResults/hlsl.structbuffer.frag.out +++ b/Test/baseResults/hlsl.structbuffer.frag.out @@ -225,17 +225,17 @@ gl_FragCoord origin is upper left MemberDecorate 19(sb_t) 1 Offset 12 MemberDecorate 19(sb_t) 2 Offset 16 Decorate 20 ArrayStride 32 + Decorate 21(sbuf) BufferBlock MemberDecorate 21(sbuf) 0 NonWritable MemberDecorate 21(sbuf) 0 Offset 0 - Decorate 21(sbuf) BufferBlock - Decorate 23(sbuf) DescriptorSet 0 Decorate 23(sbuf) Binding 10 + Decorate 23(sbuf) DescriptorSet 0 Decorate 58 ArrayStride 4 + Decorate 59(sbuf2) BufferBlock MemberDecorate 59(sbuf2) 0 NonWritable MemberDecorate 59(sbuf2) 0 Offset 0 - Decorate 59(sbuf2) BufferBlock - Decorate 61(sbuf2) DescriptorSet 0 Decorate 61(sbuf2) Binding 0 + Decorate 61(sbuf2) DescriptorSet 0 Decorate 89(pos) Flat Decorate 89(pos) Location 0 Decorate 92(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out index 95b13a8f56..be5f1cb66d 100644 --- a/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out +++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.hlslfun1.out @@ -30,27 +30,27 @@ hlsl.structbuffer.incdec.frag Name 66 "@entryPointOutput" Name 67 "param" Decorate 19 ArrayStride 16 - MemberDecorate 20(sbuf_rw_i) 0 Offset 0 Decorate 20(sbuf_rw_i) BufferBlock - Decorate 22(sbuf_rw_i) DescriptorSet 0 + MemberDecorate 20(sbuf_rw_i) 0 Offset 0 Decorate 22(sbuf_rw_i) Binding 0 - Decorate 26(sbuf_rw_d) DescriptorSet 0 + Decorate 22(sbuf_rw_i) DescriptorSet 0 + DecorateId 22(sbuf_rw_i) DecorationHlslCounterBufferGOOGLE 36(sbuf_rw_i@count) Decorate 26(sbuf_rw_d) Binding 0 - Decorate 27(sbuf_rw_nocounter) DescriptorSet 0 + Decorate 26(sbuf_rw_d) DescriptorSet 0 + DecorateId 26(sbuf_rw_d) DecorationHlslCounterBufferGOOGLE 42(sbuf_rw_d@count) Decorate 27(sbuf_rw_nocounter) Binding 0 - MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0 + Decorate 27(sbuf_rw_nocounter) DescriptorSet 0 Decorate 34(sbuf_rw_i@count) BufferBlock - Decorate 36(sbuf_rw_i@count) DescriptorSet 0 + MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0 Decorate 36(sbuf_rw_i@count) Binding 0 - Decorate 42(sbuf_rw_d@count) DescriptorSet 0 + Decorate 36(sbuf_rw_i@count) DescriptorSet 0 Decorate 42(sbuf_rw_d@count) Binding 0 + Decorate 42(sbuf_rw_d@count) DescriptorSet 0 Decorate 63(pos) Flat Decorate 63(pos) Location 0 DecorateStringGOOGLE 63(pos) DecorationHlslSemanticGOOGLE "FOO" Decorate 66(@entryPointOutput) Location 0 DecorateStringGOOGLE 66(@entryPointOutput) DecorationHlslSemanticGOOGLE "SV_TARGET0" - DecorateId 22(sbuf_rw_i) DecorationHlslCounterBufferGOOGLE 36(sbuf_rw_i@count) - DecorateId 26(sbuf_rw_d) DecorationHlslCounterBufferGOOGLE 42(sbuf_rw_d@count) 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/hlsl.structbuffer.incdec.frag.out b/Test/baseResults/hlsl.structbuffer.incdec.frag.out index 72efcc0eb2..3f12758c3d 100644 --- a/Test/baseResults/hlsl.structbuffer.incdec.frag.out +++ b/Test/baseResults/hlsl.structbuffer.incdec.frag.out @@ -233,20 +233,20 @@ gl_FragCoord origin is upper left Name 66 "@entryPointOutput" Name 67 "param" Decorate 19 ArrayStride 16 - MemberDecorate 20(sbuf_rw_i) 0 Offset 0 Decorate 20(sbuf_rw_i) BufferBlock - Decorate 22(sbuf_rw_i) DescriptorSet 0 + MemberDecorate 20(sbuf_rw_i) 0 Offset 0 Decorate 22(sbuf_rw_i) Binding 0 - Decorate 26(sbuf_rw_d) DescriptorSet 0 + Decorate 22(sbuf_rw_i) DescriptorSet 0 Decorate 26(sbuf_rw_d) Binding 2 - Decorate 27(sbuf_rw_nocounter) DescriptorSet 0 + Decorate 26(sbuf_rw_d) DescriptorSet 0 Decorate 27(sbuf_rw_nocounter) Binding 4 - MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0 + Decorate 27(sbuf_rw_nocounter) DescriptorSet 0 Decorate 34(sbuf_rw_i@count) BufferBlock - Decorate 36(sbuf_rw_i@count) DescriptorSet 0 + MemberDecorate 34(sbuf_rw_i@count) 0 Offset 0 Decorate 36(sbuf_rw_i@count) Binding 1 - Decorate 42(sbuf_rw_d@count) DescriptorSet 0 + Decorate 36(sbuf_rw_i@count) DescriptorSet 0 Decorate 42(sbuf_rw_d@count) Binding 3 + Decorate 42(sbuf_rw_d@count) DescriptorSet 0 Decorate 63(pos) Flat Decorate 63(pos) Location 0 Decorate 66(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.rw.frag.out b/Test/baseResults/hlsl.structbuffer.rw.frag.out index 9dfdaf0447..4fcc6896c1 100644 --- a/Test/baseResults/hlsl.structbuffer.rw.frag.out +++ b/Test/baseResults/hlsl.structbuffer.rw.frag.out @@ -204,17 +204,17 @@ gl_FragCoord origin is upper left Name 74 "@entryPointOutput" Name 75 "param" Decorate 14 ArrayStride 4 - MemberDecorate 15(sbuf2) 0 Offset 0 Decorate 15(sbuf2) BufferBlock - Decorate 17(sbuf2) DescriptorSet 0 + MemberDecorate 15(sbuf2) 0 Offset 0 Decorate 17(sbuf2) Binding 1 + Decorate 17(sbuf2) DescriptorSet 0 MemberDecorate 28(sb_t) 0 Offset 0 MemberDecorate 28(sb_t) 1 Offset 12 Decorate 29 ArrayStride 16 - MemberDecorate 30(sbuf) 0 Offset 0 Decorate 30(sbuf) BufferBlock - Decorate 32(sbuf) DescriptorSet 0 + MemberDecorate 30(sbuf) 0 Offset 0 Decorate 32(sbuf) Binding 0 + Decorate 32(sbuf) DescriptorSet 0 Decorate 71(pos) Flat Decorate 71(pos) Location 0 Decorate 74(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out index 5fdbd1d1e9..d8ba034efb 100644 --- a/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out +++ b/Test/baseResults/hlsl.structbuffer.rwbyte.frag.out @@ -1032,10 +1032,10 @@ gl_FragCoord origin is upper left Name 235 "@entryPointOutput" Name 236 "param" Decorate 15 ArrayStride 4 - MemberDecorate 16(sbuf) 0 Offset 0 Decorate 16(sbuf) BufferBlock - Decorate 18(sbuf) DescriptorSet 0 + MemberDecorate 16(sbuf) 0 Offset 0 Decorate 18(sbuf) Binding 0 + Decorate 18(sbuf) DescriptorSet 0 Decorate 232(pos) Flat Decorate 232(pos) Location 0 Decorate 235(@entryPointOutput) Location 0 diff --git a/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out index b024bd4201..fa058b6162 100644 --- a/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out +++ b/Test/baseResults/hlsl.structbuffer.rwbyte2.comp.out @@ -95,15 +95,15 @@ local_size = (1, 1, 1) MemberName 24(g_sbuf) 0 "@data" Name 26 "g_sbuf" Decorate 11 ArrayStride 4 - MemberDecorate 12(g_bbuf) 0 Offset 0 Decorate 12(g_bbuf) BufferBlock - Decorate 14(g_bbuf) DescriptorSet 0 + MemberDecorate 12(g_bbuf) 0 Offset 0 Decorate 14(g_bbuf) Binding 1 + Decorate 14(g_bbuf) DescriptorSet 0 Decorate 23 ArrayStride 4 - MemberDecorate 24(g_sbuf) 0 Offset 0 Decorate 24(g_sbuf) BufferBlock - Decorate 26(g_sbuf) DescriptorSet 0 + MemberDecorate 24(g_sbuf) 0 Offset 0 Decorate 26(g_sbuf) Binding 0 + Decorate 26(g_sbuf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeInt 32 0 diff --git a/Test/baseResults/hlsl.structcopy.comp.out b/Test/baseResults/hlsl.structcopy.comp.out index afc03e09e2..43e513d297 100644 --- a/Test/baseResults/hlsl.structcopy.comp.out +++ b/Test/baseResults/hlsl.structcopy.comp.out @@ -281,21 +281,21 @@ local_size = (128, 1, 1) MemberDecorate 26(MyStruct) 1 Offset 4 MemberDecorate 26(MyStruct) 2 Offset 8 Decorate 27 ArrayStride 12 + Decorate 28(MyStructs) BufferBlock MemberDecorate 28(MyStructs) 0 Offset 0 MemberDecorate 28(MyStructs) 1 Offset 4 - Decorate 28(MyStructs) BufferBlock Decorate 29 ArrayStride 16 + Decorate 30(sb) BufferBlock MemberDecorate 30(sb) 0 NonWritable MemberDecorate 30(sb) 0 Offset 0 - Decorate 30(sb) BufferBlock - Decorate 32(sb) DescriptorSet 0 Decorate 32(sb) Binding 0 + Decorate 32(sb) DescriptorSet 0 Decorate 64 ArrayStride 12 + Decorate 65(o) BufferBlock MemberDecorate 65(o) 0 NonWritable MemberDecorate 65(o) 0 Offset 0 - Decorate 65(o) BufferBlock - Decorate 67(o) DescriptorSet 0 Decorate 67(o) Binding 1 + Decorate 67(o) DescriptorSet 0 Decorate 83(id) BuiltIn LocalInvocationIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.structcopylogical.comp.out b/Test/baseResults/hlsl.structcopylogical.comp.out index a9b849be71..700d415adc 100644 --- a/Test/baseResults/hlsl.structcopylogical.comp.out +++ b/Test/baseResults/hlsl.structcopylogical.comp.out @@ -281,21 +281,21 @@ local_size = (128, 1, 1) MemberDecorate 26(MyStruct) 1 Offset 4 MemberDecorate 26(MyStruct) 2 Offset 8 Decorate 27 ArrayStride 12 + Decorate 28(MyStructs) Block MemberDecorate 28(MyStructs) 0 Offset 0 MemberDecorate 28(MyStructs) 1 Offset 4 - Decorate 28(MyStructs) Block Decorate 29 ArrayStride 16 + Decorate 30(sb) Block MemberDecorate 30(sb) 0 NonWritable MemberDecorate 30(sb) 0 Offset 0 - Decorate 30(sb) Block - Decorate 32(sb) DescriptorSet 0 Decorate 32(sb) Binding 0 + Decorate 32(sb) DescriptorSet 0 Decorate 54 ArrayStride 12 + Decorate 55(o) Block MemberDecorate 55(o) 0 NonWritable MemberDecorate 55(o) 0 Offset 0 - Decorate 55(o) Block - Decorate 57(o) DescriptorSet 0 Decorate 57(o) Binding 1 + Decorate 57(o) DescriptorSet 0 Decorate 74(id) BuiltIn LocalInvocationIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.subpass.frag.out b/Test/baseResults/hlsl.subpass.frag.out index 942ef5ee26..4841862e86 100644 --- a/Test/baseResults/hlsl.subpass.frag.out +++ b/Test/baseResults/hlsl.subpass.frag.out @@ -493,80 +493,80 @@ gl_FragCoord origin is upper left Name 193 "result73" Name 194 "subpass_2" Name 202 "@entryPointOutput" - Decorate 15(subpass_f4) DescriptorSet 0 Decorate 15(subpass_f4) Binding 1 + Decorate 15(subpass_f4) DescriptorSet 0 Decorate 15(subpass_f4) InputAttachmentIndex 1 - Decorate 27(subpass_i4) DescriptorSet 0 Decorate 27(subpass_i4) Binding 0 + Decorate 27(subpass_i4) DescriptorSet 0 Decorate 27(subpass_i4) InputAttachmentIndex 2 - Decorate 36(subpass_u4) DescriptorSet 0 Decorate 36(subpass_u4) Binding 2 + Decorate 36(subpass_u4) DescriptorSet 0 Decorate 36(subpass_u4) InputAttachmentIndex 3 - Decorate 42(subpass_ms_f4) DescriptorSet 0 Decorate 42(subpass_ms_f4) Binding 3 + Decorate 42(subpass_ms_f4) DescriptorSet 0 Decorate 42(subpass_ms_f4) InputAttachmentIndex 4 - Decorate 49(subpass_ms_i4) DescriptorSet 0 Decorate 49(subpass_ms_i4) Binding 4 + Decorate 49(subpass_ms_i4) DescriptorSet 0 Decorate 49(subpass_ms_i4) InputAttachmentIndex 5 - Decorate 55(subpass_ms_u4) DescriptorSet 0 Decorate 55(subpass_ms_u4) Binding 5 + Decorate 55(subpass_ms_u4) DescriptorSet 0 Decorate 55(subpass_ms_u4) InputAttachmentIndex 6 - Decorate 61(subpass_f3) DescriptorSet 0 Decorate 61(subpass_f3) Binding 6 + Decorate 61(subpass_f3) DescriptorSet 0 Decorate 61(subpass_f3) InputAttachmentIndex 1 - Decorate 71(subpass_i3) DescriptorSet 0 Decorate 71(subpass_i3) Binding 7 + Decorate 71(subpass_i3) DescriptorSet 0 Decorate 71(subpass_i3) InputAttachmentIndex 2 - Decorate 81(subpass_u3) DescriptorSet 0 Decorate 81(subpass_u3) Binding 8 + Decorate 81(subpass_u3) DescriptorSet 0 Decorate 81(subpass_u3) InputAttachmentIndex 3 - Decorate 89(subpass_ms_f3) DescriptorSet 0 Decorate 89(subpass_ms_f3) Binding 9 + Decorate 89(subpass_ms_f3) DescriptorSet 0 Decorate 89(subpass_ms_f3) InputAttachmentIndex 4 - Decorate 97(subpass_ms_i3) DescriptorSet 0 Decorate 97(subpass_ms_i3) Binding 10 + Decorate 97(subpass_ms_i3) DescriptorSet 0 Decorate 97(subpass_ms_i3) InputAttachmentIndex 5 - Decorate 105(subpass_ms_u3) DescriptorSet 0 Decorate 105(subpass_ms_u3) Binding 11 + Decorate 105(subpass_ms_u3) DescriptorSet 0 Decorate 105(subpass_ms_u3) InputAttachmentIndex 6 - Decorate 115(subpass_f2) DescriptorSet 0 Decorate 115(subpass_f2) Binding 12 + Decorate 115(subpass_f2) DescriptorSet 0 Decorate 115(subpass_f2) InputAttachmentIndex 1 - Decorate 123(subpass_i2) DescriptorSet 0 Decorate 123(subpass_i2) Binding 13 + Decorate 123(subpass_i2) DescriptorSet 0 Decorate 123(subpass_i2) InputAttachmentIndex 2 - Decorate 132(subpass_u2) DescriptorSet 0 Decorate 132(subpass_u2) Binding 14 + Decorate 132(subpass_u2) DescriptorSet 0 Decorate 132(subpass_u2) InputAttachmentIndex 3 - Decorate 139(subpass_ms_f2) DescriptorSet 0 Decorate 139(subpass_ms_f2) Binding 15 + Decorate 139(subpass_ms_f2) DescriptorSet 0 Decorate 139(subpass_ms_f2) InputAttachmentIndex 4 - Decorate 147(subpass_ms_i2) DescriptorSet 0 Decorate 147(subpass_ms_i2) Binding 16 + Decorate 147(subpass_ms_i2) DescriptorSet 0 Decorate 147(subpass_ms_i2) InputAttachmentIndex 5 - Decorate 154(subpass_ms_u2) DescriptorSet 0 Decorate 154(subpass_ms_u2) Binding 17 + Decorate 154(subpass_ms_u2) DescriptorSet 0 Decorate 154(subpass_ms_u2) InputAttachmentIndex 6 - Decorate 162(subpass_f) DescriptorSet 0 Decorate 162(subpass_f) Binding 18 + Decorate 162(subpass_f) DescriptorSet 0 Decorate 162(subpass_f) InputAttachmentIndex 1 - Decorate 168(subpass_i) DescriptorSet 0 Decorate 168(subpass_i) Binding 19 + Decorate 168(subpass_i) DescriptorSet 0 Decorate 168(subpass_i) InputAttachmentIndex 2 - Decorate 174(subpass_u) DescriptorSet 0 Decorate 174(subpass_u) Binding 20 + Decorate 174(subpass_u) DescriptorSet 0 Decorate 174(subpass_u) InputAttachmentIndex 3 - Decorate 179(subpass_ms_f) DescriptorSet 0 Decorate 179(subpass_ms_f) Binding 21 + Decorate 179(subpass_ms_f) DescriptorSet 0 Decorate 179(subpass_ms_f) InputAttachmentIndex 4 - Decorate 184(subpass_ms_i) DescriptorSet 0 Decorate 184(subpass_ms_i) Binding 22 + Decorate 184(subpass_ms_i) DescriptorSet 0 Decorate 184(subpass_ms_i) InputAttachmentIndex 5 - Decorate 189(subpass_ms_u) DescriptorSet 0 Decorate 189(subpass_ms_u) Binding 23 + Decorate 189(subpass_ms_u) DescriptorSet 0 Decorate 189(subpass_ms_u) InputAttachmentIndex 6 - Decorate 194(subpass_2) DescriptorSet 0 Decorate 194(subpass_2) Binding 24 + Decorate 194(subpass_2) DescriptorSet 0 Decorate 194(subpass_2) InputAttachmentIndex 7 Decorate 202(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.texture.struct.frag.out b/Test/baseResults/hlsl.texture.struct.frag.out index ba632bed2a..879d0673f4 100644 --- a/Test/baseResults/hlsl.texture.struct.frag.out +++ b/Test/baseResults/hlsl.texture.struct.frag.out @@ -904,20 +904,20 @@ Validation failed Name 229 "g_tTex2s1a" Name 230 "param" Name 238 "@entryPointOutput" - Decorate 30(g_sSamp) DescriptorSet 0 Decorate 30(g_sSamp) Binding 0 - Decorate 90(g_tTex2s1) DescriptorSet 0 + Decorate 30(g_sSamp) DescriptorSet 0 Decorate 90(g_tTex2s1) Binding 1 - Decorate 114(g_tTex2s2) DescriptorSet 0 + Decorate 90(g_tTex2s1) DescriptorSet 0 Decorate 114(g_tTex2s2) Binding 2 - Decorate 140(g_tTex2s3) DescriptorSet 0 + Decorate 114(g_tTex2s2) DescriptorSet 0 Decorate 140(g_tTex2s3) Binding 3 - Decorate 168(g_tTex2s4) DescriptorSet 0 + Decorate 140(g_tTex2s3) DescriptorSet 0 Decorate 168(g_tTex2s4) Binding 4 - Decorate 202(g_tTex2s5) DescriptorSet 0 + Decorate 168(g_tTex2s4) DescriptorSet 0 Decorate 202(g_tTex2s5) Binding 5 - Decorate 229(g_tTex2s1a) DescriptorSet 0 + Decorate 202(g_tTex2s5) DescriptorSet 0 Decorate 229(g_tTex2s1a) Binding 6 + Decorate 229(g_tTex2s1a) DescriptorSet 0 Decorate 238(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.texture.subvec4.frag.out b/Test/baseResults/hlsl.texture.subvec4.frag.out index 9c3b7417e4..715cb6d187 100644 --- a/Test/baseResults/hlsl.texture.subvec4.frag.out +++ b/Test/baseResults/hlsl.texture.subvec4.frag.out @@ -385,24 +385,24 @@ gl_FragCoord origin is upper left Name 109 "g_tTex2df3" Name 118 "g_tTex2df4" Name 128 "@entryPointOutput" - Decorate 17(g_tTex2dmsf1) DescriptorSet 0 Decorate 17(g_tTex2dmsf1) Binding 0 - Decorate 33(g_tTex2dmsf2) DescriptorSet 0 + Decorate 17(g_tTex2dmsf1) DescriptorSet 0 Decorate 33(g_tTex2dmsf2) Binding 1 - Decorate 43(g_tTex2dmsf3) DescriptorSet 0 + Decorate 33(g_tTex2dmsf2) DescriptorSet 0 Decorate 43(g_tTex2dmsf3) Binding 2 - Decorate 53(g_tTex2dmsf4) DescriptorSet 0 + Decorate 43(g_tTex2dmsf3) DescriptorSet 0 Decorate 53(g_tTex2dmsf4) Binding 3 - Decorate 88(g_tTex2df1) DescriptorSet 0 + Decorate 53(g_tTex2dmsf4) DescriptorSet 0 Decorate 88(g_tTex2df1) Binding 4 - Decorate 92(g_sSamp) DescriptorSet 0 + Decorate 88(g_tTex2df1) DescriptorSet 0 Decorate 92(g_sSamp) Binding 8 - Decorate 101(g_tTex2df2) DescriptorSet 0 + Decorate 92(g_sSamp) DescriptorSet 0 Decorate 101(g_tTex2df2) Binding 5 - Decorate 109(g_tTex2df3) DescriptorSet 0 + Decorate 101(g_tTex2df2) DescriptorSet 0 Decorate 109(g_tTex2df3) Binding 6 - Decorate 118(g_tTex2df4) DescriptorSet 0 + Decorate 109(g_tTex2df3) DescriptorSet 0 Decorate 118(g_tTex2df4) Binding 7 + Decorate 118(g_tTex2df4) DescriptorSet 0 Decorate 128(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.texturebuffer.frag.out b/Test/baseResults/hlsl.texturebuffer.frag.out index ae1d4f75ce..7cba9c34b5 100644 --- a/Test/baseResults/hlsl.texturebuffer.frag.out +++ b/Test/baseResults/hlsl.texturebuffer.frag.out @@ -94,20 +94,20 @@ gl_FragCoord origin is upper left Name 32 "pos" Name 35 "@entryPointOutput" Name 36 "param" + Decorate 15(TextureBuffer_var) BufferBlock MemberDecorate 15(TextureBuffer_var) 0 NonWritable MemberDecorate 15(TextureBuffer_var) 0 Offset 0 MemberDecorate 15(TextureBuffer_var) 1 NonWritable MemberDecorate 15(TextureBuffer_var) 1 Offset 16 - Decorate 15(TextureBuffer_var) BufferBlock - Decorate 17(TextureBuffer_var) DescriptorSet 0 Decorate 17(TextureBuffer_var) Binding 0 + Decorate 17(TextureBuffer_var) DescriptorSet 0 + Decorate 22(tbuf2) BufferBlock MemberDecorate 22(tbuf2) 0 NonWritable MemberDecorate 22(tbuf2) 0 Offset 0 MemberDecorate 22(tbuf2) 1 NonWritable MemberDecorate 22(tbuf2) 1 Offset 16 - Decorate 22(tbuf2) BufferBlock - Decorate 24 DescriptorSet 0 Decorate 24 Binding 1 + Decorate 24 DescriptorSet 0 Decorate 32(pos) BuiltIn FragCoord Decorate 35(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.tx.bracket.frag.out b/Test/baseResults/hlsl.tx.bracket.frag.out index 07f1909983..ad83b5f9f6 100644 --- a/Test/baseResults/hlsl.tx.bracket.frag.out +++ b/Test/baseResults/hlsl.tx.bracket.frag.out @@ -483,6 +483,7 @@ gl_FragCoord origin is upper left Name 181 "g_tTex2df4a" Name 184 "g_tTex2di4a" Name 187 "g_tTex2du4a" + Decorate 45($Global) Block MemberDecorate 45($Global) 0 Offset 0 MemberDecorate 45($Global) 1 Offset 8 MemberDecorate 45($Global) 2 Offset 16 @@ -491,42 +492,41 @@ gl_FragCoord origin is upper left MemberDecorate 45($Global) 5 Offset 56 MemberDecorate 45($Global) 6 Offset 64 MemberDecorate 45($Global) 7 Offset 80 - Decorate 45($Global) Block - Decorate 47 DescriptorSet 0 Decorate 47 Binding 9 - Decorate 57(g_tTex1df4) DescriptorSet 0 + Decorate 47 DescriptorSet 0 Decorate 57(g_tTex1df4) Binding 0 - Decorate 72(g_tTex1di4) DescriptorSet 0 + Decorate 57(g_tTex1df4) DescriptorSet 0 Decorate 72(g_tTex1di4) Binding 1 - Decorate 80(g_tTex1du4) DescriptorSet 0 + Decorate 72(g_tTex1di4) DescriptorSet 0 Decorate 80(g_tTex1du4) Binding 2 - Decorate 88(g_tTex2df4) DescriptorSet 0 + Decorate 80(g_tTex1du4) DescriptorSet 0 Decorate 88(g_tTex2df4) Binding 3 - Decorate 98(g_tTex2di4) DescriptorSet 0 + Decorate 88(g_tTex2df4) DescriptorSet 0 Decorate 98(g_tTex2di4) Binding 4 - Decorate 106(g_tTex2du4) DescriptorSet 0 + Decorate 98(g_tTex2di4) DescriptorSet 0 Decorate 106(g_tTex2du4) Binding 5 - Decorate 114(g_tTex3df4) DescriptorSet 0 + Decorate 106(g_tTex2du4) DescriptorSet 0 Decorate 114(g_tTex3df4) Binding 6 - Decorate 124(g_tTex3di4) DescriptorSet 0 + Decorate 114(g_tTex3df4) DescriptorSet 0 Decorate 124(g_tTex3di4) Binding 7 - Decorate 132(g_tTex3du4) DescriptorSet 0 + Decorate 124(g_tTex3di4) DescriptorSet 0 Decorate 132(g_tTex3du4) Binding 8 + Decorate 132(g_tTex3du4) DescriptorSet 0 Decorate 164(@entryPointOutput.Color) Location 0 - Decorate 169(g_sSamp) DescriptorSet 0 Decorate 169(g_sSamp) Binding 0 - Decorate 172(g_tTex1df4a) DescriptorSet 0 + Decorate 169(g_sSamp) DescriptorSet 0 Decorate 172(g_tTex1df4a) Binding 0 - Decorate 175(g_tTex1di4a) DescriptorSet 0 + Decorate 172(g_tTex1df4a) DescriptorSet 0 Decorate 175(g_tTex1di4a) Binding 0 - Decorate 178(g_tTex1du4a) DescriptorSet 0 + Decorate 175(g_tTex1di4a) DescriptorSet 0 Decorate 178(g_tTex1du4a) Binding 0 - Decorate 181(g_tTex2df4a) DescriptorSet 0 + Decorate 178(g_tTex1du4a) DescriptorSet 0 Decorate 181(g_tTex2df4a) Binding 0 - Decorate 184(g_tTex2di4a) DescriptorSet 0 + Decorate 181(g_tTex2df4a) DescriptorSet 0 Decorate 184(g_tTex2di4a) Binding 0 - Decorate 187(g_tTex2du4a) DescriptorSet 0 + Decorate 184(g_tTex2di4a) DescriptorSet 0 Decorate 187(g_tTex2du4a) Binding 0 + Decorate 187(g_tTex2du4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/hlsl.tx.overload.frag.out b/Test/baseResults/hlsl.tx.overload.frag.out index df1bb20f09..88b38e8f2c 100644 --- a/Test/baseResults/hlsl.tx.overload.frag.out +++ b/Test/baseResults/hlsl.tx.overload.frag.out @@ -162,14 +162,14 @@ gl_FragCoord origin is upper left Name 63 "twf4" Name 64 "param" Name 71 "@entryPointOutput" - Decorate 45(tf1) DescriptorSet 0 Decorate 45(tf1) Binding 0 - Decorate 49(tf4) DescriptorSet 0 + Decorate 45(tf1) DescriptorSet 0 Decorate 49(tf4) Binding 1 - Decorate 56(twf1) DescriptorSet 0 + Decorate 49(tf4) DescriptorSet 0 Decorate 56(twf1) Binding 2 - Decorate 63(twf4) DescriptorSet 0 + Decorate 56(twf1) DescriptorSet 0 Decorate 63(twf4) Binding 3 + Decorate 63(twf4) DescriptorSet 0 Decorate 71(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.typeGraphCopy.vert.out b/Test/baseResults/hlsl.typeGraphCopy.vert.out index e3805477a5..8f52cd66af 100644 --- a/Test/baseResults/hlsl.typeGraphCopy.vert.out +++ b/Test/baseResults/hlsl.typeGraphCopy.vert.out @@ -93,10 +93,10 @@ Shader version: 500 MemberDecorate 13(N3) 0 Offset 0 MemberDecorate 13(N3) 1 Offset 32 MemberDecorate 13(N3) 2 Offset 48 - MemberDecorate 14($Global) 0 Offset 0 Decorate 14($Global) Block - Decorate 16 DescriptorSet 0 + MemberDecorate 14($Global) 0 Offset 0 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 26(@entryPointOutput) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.w-recip.frag.out b/Test/baseResults/hlsl.w-recip.frag.out index a4fc494d8c..dc9bb1116f 100644 --- a/Test/baseResults/hlsl.w-recip.frag.out +++ b/Test/baseResults/hlsl.w-recip.frag.out @@ -183,11 +183,11 @@ gl_FragCoord origin is upper left Name 53 "vpos" Name 65 "@entryPointOutput" Name 66 "param" + Decorate 36($Global) Block MemberDecorate 36($Global) 0 Offset 0 MemberDecorate 36($Global) 1 Offset 16 - Decorate 36($Global) Block - Decorate 38 DescriptorSet 0 Decorate 38 Binding 0 + Decorate 38 DescriptorSet 0 Decorate 53(vpos) BuiltIn FragCoord Decorate 65(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.w-recip2.frag.out b/Test/baseResults/hlsl.w-recip2.frag.out index 2157ce4cc5..03312b8de9 100644 --- a/Test/baseResults/hlsl.w-recip2.frag.out +++ b/Test/baseResults/hlsl.w-recip2.frag.out @@ -207,11 +207,11 @@ gl_FragCoord origin is upper left Name 66 "VSOut.TexCoord" Name 71 "@entryPointOutput" Name 72 "param" + Decorate 28($Global) Block MemberDecorate 28($Global) 0 Offset 0 MemberDecorate 28($Global) 1 Offset 16 - Decorate 28($Global) Block - Decorate 30 DescriptorSet 0 Decorate 30 Binding 0 + Decorate 30 DescriptorSet 0 Decorate 44(VSOut.PositionPS) BuiltIn FragCoord Decorate 56(VSOut.PosInLightViewSpace) Location 0 Decorate 61(VSOut.NormalWS) Location 1 diff --git a/Test/baseResults/hlsl.wavebroadcast.comp.out b/Test/baseResults/hlsl.wavebroadcast.comp.out index ed35cba38c..667986cdca 100644 --- a/Test/baseResults/hlsl.wavebroadcast.comp.out +++ b/Test/baseResults/hlsl.wavebroadcast.comp.out @@ -2330,10 +2330,10 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 - MemberDecorate 22(data) 0 Offset 0 Decorate 22(data) Block - Decorate 24(data) DescriptorSet 0 + MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 + Decorate 24(data) DescriptorSet 0 Decorate 388(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.waveprefix.comp.out b/Test/baseResults/hlsl.waveprefix.comp.out index ecc1b3eb5f..e9ac13507b 100644 --- a/Test/baseResults/hlsl.waveprefix.comp.out +++ b/Test/baseResults/hlsl.waveprefix.comp.out @@ -2354,10 +2354,10 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 - MemberDecorate 22(data) 0 Offset 0 Decorate 22(data) Block - Decorate 24(data) DescriptorSet 0 + MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 + Decorate 24(data) DescriptorSet 0 Decorate 398(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.wavequad.comp.out b/Test/baseResults/hlsl.wavequad.comp.out index 7deb7c7ef1..338b4dc7d7 100644 --- a/Test/baseResults/hlsl.wavequad.comp.out +++ b/Test/baseResults/hlsl.wavequad.comp.out @@ -8057,10 +8057,10 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 - MemberDecorate 22(data) 0 Offset 0 Decorate 22(data) Block - Decorate 24(data) DescriptorSet 0 + MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 + Decorate 24(data) DescriptorSet 0 Decorate 1227(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.wavequery.comp.out b/Test/baseResults/hlsl.wavequery.comp.out index 8e08b09eff..015890af49 100644 --- a/Test/baseResults/hlsl.wavequery.comp.out +++ b/Test/baseResults/hlsl.wavequery.comp.out @@ -78,10 +78,10 @@ local_size = (32, 16, 1) Name 16 "@gl_SubgroupInvocationID" Name 21 "@gl_SubgroupSize" Decorate 9 ArrayStride 4 - MemberDecorate 10(data) 0 Offset 0 Decorate 10(data) Block - Decorate 12(data) DescriptorSet 0 + MemberDecorate 10(data) 0 Offset 0 Decorate 12(data) Binding 0 + Decorate 12(data) DescriptorSet 0 Decorate 16(@gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 21(@gl_SubgroupSize) BuiltIn SubgroupSize 2: TypeVoid diff --git a/Test/baseResults/hlsl.wavereduction.comp.out b/Test/baseResults/hlsl.wavereduction.comp.out index 9a636f5a4c..81b2435315 100644 --- a/Test/baseResults/hlsl.wavereduction.comp.out +++ b/Test/baseResults/hlsl.wavereduction.comp.out @@ -6218,10 +6218,10 @@ local_size = (32, 16, 1) MemberDecorate 20(Types) 2 Offset 32 MemberDecorate 20(Types) 3 Offset 64 Decorate 21 ArrayStride 96 - MemberDecorate 22(data) 0 Offset 0 Decorate 22(data) Block - Decorate 24(data) DescriptorSet 0 + MemberDecorate 22(data) 0 Offset 0 Decorate 24(data) Binding 0 + Decorate 24(data) DescriptorSet 0 Decorate 986(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.wavevote.comp.out b/Test/baseResults/hlsl.wavevote.comp.out index 382f504f62..adb0d9a197 100644 --- a/Test/baseResults/hlsl.wavevote.comp.out +++ b/Test/baseResults/hlsl.wavevote.comp.out @@ -227,10 +227,10 @@ local_size = (32, 16, 1) Name 70 "dti" Name 72 "param" Decorate 14 ArrayStride 8 - MemberDecorate 15(data) 0 Offset 0 Decorate 15(data) Block - Decorate 17(data) DescriptorSet 0 + MemberDecorate 15(data) 0 Offset 0 Decorate 17(data) Binding 0 + Decorate 17(data) DescriptorSet 0 Decorate 70(dti) BuiltIn GlobalInvocationId 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.y-negate-1.vert.out b/Test/baseResults/hlsl.y-negate-1.vert.out index e000752436..43a49b6d08 100644 --- a/Test/baseResults/hlsl.y-negate-1.vert.out +++ b/Test/baseResults/hlsl.y-negate-1.vert.out @@ -87,10 +87,10 @@ Shader version: 500 Name 13 "" Name 22 "@position" Name 32 "@entryPointOutput" - MemberDecorate 11($Global) 0 Offset 0 Decorate 11($Global) Block - Decorate 13 DescriptorSet 0 + MemberDecorate 11($Global) 0 Offset 0 Decorate 13 Binding 0 + Decorate 13 DescriptorSet 0 Decorate 32(@entryPointOutput) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.y-negate-2.vert.out b/Test/baseResults/hlsl.y-negate-2.vert.out index 57a47ab780..98d71b961a 100644 --- a/Test/baseResults/hlsl.y-negate-2.vert.out +++ b/Test/baseResults/hlsl.y-negate-2.vert.out @@ -98,10 +98,10 @@ Shader version: 500 Name 22 "param" Name 25 "@position" Name 35 "position" - MemberDecorate 13($Global) 0 Offset 0 Decorate 13($Global) Block - Decorate 15 DescriptorSet 0 + MemberDecorate 13($Global) 0 Offset 0 Decorate 15 Binding 0 + Decorate 15 DescriptorSet 0 Decorate 35(position) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/hlsl.y-negate-3.vert.out b/Test/baseResults/hlsl.y-negate-3.vert.out index 3e5895115d..770e37fd4d 100644 --- a/Test/baseResults/hlsl.y-negate-3.vert.out +++ b/Test/baseResults/hlsl.y-negate-3.vert.out @@ -147,10 +147,10 @@ Shader version: 500 Name 33 "@position" Name 44 "@entryPointOutput.pos" Name 47 "@entryPointOutput.somethingelse" - MemberDecorate 16($Global) 0 Offset 0 Decorate 16($Global) Block - Decorate 18 DescriptorSet 0 + MemberDecorate 16($Global) 0 Offset 0 Decorate 18 Binding 0 + Decorate 18 DescriptorSet 0 Decorate 44(@entryPointOutput.pos) BuiltIn Position Decorate 47(@entryPointOutput.somethingelse) Location 0 2: TypeVoid diff --git a/Test/baseResults/iomap.blockOutVariableIn.2.vert.out b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out index 2c4ecdc5a5..49ad83e642 100644 --- a/Test/baseResults/iomap.blockOutVariableIn.2.vert.out +++ b/Test/baseResults/iomap.blockOutVariableIn.2.vert.out @@ -277,10 +277,10 @@ output primitive = triangle_strip Name 32 "gl_InstanceID" Decorate 9(Block) Block Decorate 11 Location 0 + Decorate 26(gl_PerVertex) Block MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 26(gl_PerVertex) Block Decorate 31(gl_VertexID) BuiltIn VertexId Decorate 32(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid @@ -346,10 +346,10 @@ output primitive = triangle_strip Decorate 14(in_a1) Location 0 Decorate 22(a2) Location 1 Decorate 25(in_a2) Location 1 + Decorate 31(gl_PerVertex) Block MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 31(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/iomap.blockOutVariableIn.vert.out b/Test/baseResults/iomap.blockOutVariableIn.vert.out index a43e52f54b..3ccf47b35b 100644 --- a/Test/baseResults/iomap.blockOutVariableIn.vert.out +++ b/Test/baseResults/iomap.blockOutVariableIn.vert.out @@ -149,10 +149,10 @@ Shader version: 440 Name 32 "gl_InstanceID" Decorate 9(Block) Block Decorate 11 Location 0 + Decorate 26(gl_PerVertex) Block MemberDecorate 26(gl_PerVertex) 0 BuiltIn Position MemberDecorate 26(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 26(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 26(gl_PerVertex) Block Decorate 31(gl_VertexID) BuiltIn VertexId Decorate 32(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid diff --git a/Test/baseResults/iomap.crossStage.2.vert.out b/Test/baseResults/iomap.crossStage.2.vert.out index 171cc0e38c..ffb10bc406 100644 --- a/Test/baseResults/iomap.crossStage.2.vert.out +++ b/Test/baseResults/iomap.crossStage.2.vert.out @@ -452,22 +452,22 @@ Shader version: 460 Decorate 36(um2) Location 4 Decorate 36(um2) DescriptorSet 0 Decorate 40(glass) Location 0 - Decorate 40(glass) DescriptorSet 0 Decorate 40(glass) Binding 0 + Decorate 40(glass) DescriptorSet 0 + Decorate 41(crossStageBlock1) Block MemberDecorate 41(crossStageBlock1) 0 Offset 0 MemberDecorate 41(crossStageBlock1) 1 Offset 16 - Decorate 41(crossStageBlock1) Block - Decorate 43 DescriptorSet 0 Decorate 43 Binding 0 - MemberDecorate 44(vertOnlyBlock) 0 Offset 0 + Decorate 43 DescriptorSet 0 Decorate 44(vertOnlyBlock) BufferBlock - Decorate 46 DescriptorSet 0 + MemberDecorate 44(vertOnlyBlock) 0 Offset 0 Decorate 46 Binding 0 + Decorate 46 DescriptorSet 0 + Decorate 47(crossStageBlock2) Block MemberDecorate 47(crossStageBlock2) 0 Offset 0 MemberDecorate 47(crossStageBlock2) 1 Offset 16 - Decorate 47(crossStageBlock2) Block - Decorate 52(blockName1) DescriptorSet 0 Decorate 52(blockName1) Binding 0 + Decorate 52(blockName1) DescriptorSet 0 Decorate 54(gl_VertexID) BuiltIn VertexId Decorate 55(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid @@ -575,11 +575,11 @@ Shader version: 460 Decorate 57(u2) DescriptorSet 0 Decorate 59(u3) Location 3 Decorate 59(u3) DescriptorSet 0 + Decorate 60(crossStageBlock2) Block MemberDecorate 60(crossStageBlock2) 0 Offset 0 MemberDecorate 60(crossStageBlock2) 1 Offset 16 - Decorate 60(crossStageBlock2) Block - Decorate 64(blockName1) DescriptorSet 0 Decorate 64(blockName1) Binding 0 + Decorate 64(blockName1) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -706,22 +706,22 @@ Shader version: 460 Decorate 45(um2) Location 4 Decorate 45(um2) DescriptorSet 0 Decorate 49(glass) Location 0 - Decorate 49(glass) DescriptorSet 0 Decorate 49(glass) Binding 0 + Decorate 49(glass) DescriptorSet 0 + Decorate 50(crossStageBlock1) Block MemberDecorate 50(crossStageBlock1) 0 Offset 0 MemberDecorate 50(crossStageBlock1) 1 Offset 16 - Decorate 50(crossStageBlock1) Block - Decorate 52 DescriptorSet 0 Decorate 52 Binding 0 - MemberDecorate 53(fragOnlyBlock) 0 Offset 0 + Decorate 52 DescriptorSet 0 Decorate 53(fragOnlyBlock) BufferBlock - Decorate 55 DescriptorSet 0 + MemberDecorate 53(fragOnlyBlock) 0 Offset 0 Decorate 55 Binding 0 + Decorate 55 DescriptorSet 0 + Decorate 56(crossStageBlock2) Block MemberDecorate 56(crossStageBlock2) 0 Offset 0 MemberDecorate 56(crossStageBlock2) 1 Offset 16 - Decorate 56(crossStageBlock2) Block - Decorate 61(blockName2) DescriptorSet 0 Decorate 61(blockName2) Binding 0 + Decorate 61(blockName2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/iomap.crossStage.vert.out b/Test/baseResults/iomap.crossStage.vert.out index d6b6e4febb..e195b5b6ef 100644 --- a/Test/baseResults/iomap.crossStage.vert.out +++ b/Test/baseResults/iomap.crossStage.vert.out @@ -309,22 +309,22 @@ Shader version: 460 Decorate 36(um2) Location 4 Decorate 36(um2) DescriptorSet 0 Decorate 40(glass) Location 0 - Decorate 40(glass) DescriptorSet 0 Decorate 40(glass) Binding 0 + Decorate 40(glass) DescriptorSet 0 + Decorate 41(crossStageBlock1) Block MemberDecorate 41(crossStageBlock1) 0 Offset 0 MemberDecorate 41(crossStageBlock1) 1 Offset 16 - Decorate 41(crossStageBlock1) Block - Decorate 43 DescriptorSet 0 Decorate 43 Binding 0 - MemberDecorate 44(vertOnlyBlock) 0 Offset 0 + Decorate 43 DescriptorSet 0 Decorate 44(vertOnlyBlock) BufferBlock - Decorate 46 DescriptorSet 0 + MemberDecorate 44(vertOnlyBlock) 0 Offset 0 Decorate 46 Binding 0 + Decorate 46 DescriptorSet 0 + Decorate 47(crossStageBlock2) Block MemberDecorate 47(crossStageBlock2) 0 Offset 0 MemberDecorate 47(crossStageBlock2) 1 Offset 16 - Decorate 47(crossStageBlock2) Block - Decorate 52(blockName1) DescriptorSet 0 Decorate 52(blockName1) Binding 0 + Decorate 52(blockName1) DescriptorSet 0 Decorate 54(gl_VertexID) BuiltIn VertexId Decorate 55(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid @@ -434,22 +434,22 @@ Shader version: 460 Decorate 45(um2) Location 4 Decorate 45(um2) DescriptorSet 0 Decorate 49(glass) Location 0 - Decorate 49(glass) DescriptorSet 0 Decorate 49(glass) Binding 0 + Decorate 49(glass) DescriptorSet 0 + Decorate 50(crossStageBlock1) Block MemberDecorate 50(crossStageBlock1) 0 Offset 0 MemberDecorate 50(crossStageBlock1) 1 Offset 16 - Decorate 50(crossStageBlock1) Block - Decorate 52 DescriptorSet 0 Decorate 52 Binding 0 - MemberDecorate 53(fragOnlyBlock) 0 Offset 0 + Decorate 52 DescriptorSet 0 Decorate 53(fragOnlyBlock) BufferBlock - Decorate 55 DescriptorSet 0 + MemberDecorate 53(fragOnlyBlock) 0 Offset 0 Decorate 55 Binding 0 + Decorate 55 DescriptorSet 0 + Decorate 56(crossStageBlock2) Block MemberDecorate 56(crossStageBlock2) 0 Offset 0 MemberDecorate 56(crossStageBlock2) 1 Offset 16 - Decorate 56(crossStageBlock2) Block - Decorate 61(blockName2) DescriptorSet 0 Decorate 61(blockName2) Binding 0 + Decorate 61(blockName2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/iomap.crossStage.vk.vert.out b/Test/baseResults/iomap.crossStage.vk.vert.out index dd8029d198..850b087f35 100644 --- a/Test/baseResults/iomap.crossStage.vk.vert.out +++ b/Test/baseResults/iomap.crossStage.vk.vert.out @@ -411,23 +411,23 @@ gl_FragCoord origin is upper left Decorate 14(vgo2) Location 1 Decorate 16(outBlock) Block Decorate 18 Location 5 - Decorate 25(glass) DescriptorSet 0 Decorate 25(glass) Binding 0 + Decorate 25(glass) DescriptorSet 0 + Decorate 26(crossStageBlock1) Block MemberDecorate 26(crossStageBlock1) 0 Offset 0 MemberDecorate 26(crossStageBlock1) 1 Offset 16 - Decorate 26(crossStageBlock1) Block - Decorate 28 DescriptorSet 0 Decorate 28 Binding 1 + Decorate 28 DescriptorSet 0 + Decorate 29(vertOnlyBlock) BufferBlock MemberDecorate 29(vertOnlyBlock) 0 NonWritable MemberDecorate 29(vertOnlyBlock) 0 Offset 0 - Decorate 29(vertOnlyBlock) BufferBlock - Decorate 31 DescriptorSet 0 Decorate 31 Binding 0 + Decorate 31 DescriptorSet 0 + Decorate 32(crossStageBlock2) Block MemberDecorate 32(crossStageBlock2) 0 Offset 0 MemberDecorate 32(crossStageBlock2) 1 Offset 16 - Decorate 32(crossStageBlock2) Block - Decorate 37(blockName1) DescriptorSet 0 Decorate 37(blockName1) Binding 3 + Decorate 37(blockName1) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -506,11 +506,11 @@ gl_FragCoord origin is upper left Decorate 37(inBlock) Location 5 Decorate 48(vgo1) Location 0 Decorate 51(vgo2) Location 1 + Decorate 52(crossStageBlock2) Block MemberDecorate 52(crossStageBlock2) 0 Offset 0 MemberDecorate 52(crossStageBlock2) 1 Offset 16 - Decorate 52(crossStageBlock2) Block - Decorate 56(blockName1) DescriptorSet 0 Decorate 56(blockName1) Binding 3 + Decorate 56(blockName1) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 @@ -613,28 +613,28 @@ gl_FragCoord origin is upper left Name 74 "" Name 76 "gfo2" Name 80 "glass" + Decorate 15(fragOnlyBlock) BufferBlock MemberDecorate 15(fragOnlyBlock) 0 NonWritable MemberDecorate 15(fragOnlyBlock) 0 Offset 0 - Decorate 15(fragOnlyBlock) BufferBlock - Decorate 17 DescriptorSet 0 Decorate 17 Binding 2 + Decorate 17 DescriptorSet 0 + Decorate 23(crossStageBlock2) Block MemberDecorate 23(crossStageBlock2) 0 Offset 0 MemberDecorate 23(crossStageBlock2) 1 Offset 16 - Decorate 23(crossStageBlock2) Block - Decorate 28(blockName2) DescriptorSet 0 Decorate 28(blockName2) Binding 3 + Decorate 28(blockName2) DescriptorSet 0 + Decorate 38(crossStageBlock1) Block MemberDecorate 38(crossStageBlock1) 0 Offset 0 MemberDecorate 38(crossStageBlock1) 1 Offset 16 - Decorate 38(crossStageBlock1) Block - Decorate 40 DescriptorSet 0 Decorate 40 Binding 1 + Decorate 40 DescriptorSet 0 Decorate 64(gfo1) Location 0 Decorate 70(outColor) Location 0 Decorate 72(outBlock) Block Decorate 74 Location 5 Decorate 76(gfo2) Location 1 - Decorate 80(glass) DescriptorSet 0 Decorate 80(glass) Binding 0 + Decorate 80(glass) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/iomap.variableOutBlockIn.2.vert.out b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out index 3e6d30b5f0..e638befd7f 100644 --- a/Test/baseResults/iomap.variableOutBlockIn.2.vert.out +++ b/Test/baseResults/iomap.variableOutBlockIn.2.vert.out @@ -169,10 +169,10 @@ output primitive = triangle_strip Name 28 "gl_InstanceID" Decorate 9(a1) Location 0 Decorate 14(a2) Location 1 + Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 20(gl_PerVertex) Block Decorate 27(gl_VertexID) BuiltIn VertexId Decorate 28(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid @@ -234,10 +234,10 @@ output primitive = triangle_strip Name 30 "gin" Decorate 9(a1) Location 0 Decorate 14(a2) Location 1 + Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 20(gl_PerVertex) Block Decorate 26(Inputs) Block Decorate 30(gin) Location 0 2: TypeVoid diff --git a/Test/baseResults/iomap.variableOutBlockIn.vert.out b/Test/baseResults/iomap.variableOutBlockIn.vert.out index 4b0ce64953..d96df37a9f 100644 --- a/Test/baseResults/iomap.variableOutBlockIn.vert.out +++ b/Test/baseResults/iomap.variableOutBlockIn.vert.out @@ -147,10 +147,10 @@ Shader version: 440 Name 28 "gl_InstanceID" Decorate 9(a1) Location 0 Decorate 14(a2) Location 1 + Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 20(gl_PerVertex) Block Decorate 27(gl_VertexID) BuiltIn VertexId Decorate 28(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid diff --git a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out index d3545bfae5..765fcccfbb 100755 --- a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out +++ b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out @@ -274,11 +274,11 @@ output primitive = triangle_strip Name 27 "P" Decorate 8(vs_output) Block Decorate 10(vs_out) Location 0 + Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 20(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 20(gl_PerVertex) Block Decorate 27(P) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/link.vk.matchingPC.0.0.frag.out b/Test/baseResults/link.vk.matchingPC.0.0.frag.out index 87d3b02cf7..d2101fde6e 100644 --- a/Test/baseResults/link.vk.matchingPC.0.0.frag.out +++ b/Test/baseResults/link.vk.matchingPC.0.0.frag.out @@ -109,10 +109,10 @@ gl_FragCoord origin is upper left MemberName 16(PushConstantBlock) 2 "scale" Name 18 "uPC" Decorate 15(color) Location 0 + Decorate 16(PushConstantBlock) Block MemberDecorate 16(PushConstantBlock) 0 Offset 0 MemberDecorate 16(PushConstantBlock) 1 Offset 16 MemberDecorate 16(PushConstantBlock) 2 Offset 32 - Decorate 16(PushConstantBlock) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out index 7f9a05a798..b663876102 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out +++ b/Test/baseResults/link.vk.multiBlocksValid.0.0.vert.out @@ -216,39 +216,39 @@ Shader version: 430 MemberName 70(BufferBlock) 0 "p" Name 72 "uBuf" Decorate 14(oColor) Location 2 + Decorate 16(ColorBlock) Block MemberDecorate 16(ColorBlock) 0 Offset 0 MemberDecorate 16(ColorBlock) 1 Offset 16 MemberDecorate 16(ColorBlock) 2 Offset 32 MemberDecorate 16(ColorBlock) 3 Offset 48 - Decorate 16(ColorBlock) Block - Decorate 18(uC) DescriptorSet 0 Decorate 18(uC) Binding 1 - MemberDecorate 26(SecondaryColorBlock) 0 Offset 0 + Decorate 18(uC) DescriptorSet 0 Decorate 26(SecondaryColorBlock) BufferBlock - Decorate 28(uColorBuf) DescriptorSet 0 + MemberDecorate 26(SecondaryColorBlock) 0 Offset 0 Decorate 28(uColorBuf) Binding 0 + Decorate 28(uColorBuf) DescriptorSet 0 Decorate 32(Vertex) Block Decorate 34(oV) Location 0 + Decorate 40(gl_PerVertex) Block MemberDecorate 40(gl_PerVertex) 0 BuiltIn Position MemberDecorate 40(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 40(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 40(gl_PerVertex) Block + Decorate 44(MatrixBlock) Block MemberDecorate 44(MatrixBlock) 0 ColMajor - MemberDecorate 44(MatrixBlock) 0 Offset 0 MemberDecorate 44(MatrixBlock) 0 MatrixStride 16 + MemberDecorate 44(MatrixBlock) 0 Offset 0 MemberDecorate 44(MatrixBlock) 1 ColMajor - MemberDecorate 44(MatrixBlock) 1 Offset 64 MemberDecorate 44(MatrixBlock) 1 MatrixStride 16 - Decorate 44(MatrixBlock) Block - Decorate 46(uM) DescriptorSet 0 + MemberDecorate 44(MatrixBlock) 1 Offset 64 Decorate 46(uM) Binding 0 + Decorate 46(uM) DescriptorSet 0 Decorate 65(P) Location 0 + Decorate 70(BufferBlock) BufferBlock MemberDecorate 70(BufferBlock) 0 ColMajor - MemberDecorate 70(BufferBlock) 0 Offset 0 MemberDecorate 70(BufferBlock) 0 MatrixStride 16 - Decorate 70(BufferBlock) BufferBlock - Decorate 72(uBuf) DescriptorSet 0 + MemberDecorate 70(BufferBlock) 0 Offset 0 Decorate 72(uBuf) Binding 1 + Decorate 72(uBuf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out index 374a2a0842..7c2b242c6e 100644 --- a/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out +++ b/Test/baseResults/link.vk.multiBlocksValid.1.0.geom.out @@ -310,36 +310,36 @@ output primitive = triangle_strip Name 97 "uBuf" Name 100 "P" Decorate 18(oColor) Location 1 + Decorate 20(ColorBlock) Block MemberDecorate 20(ColorBlock) 0 Offset 0 MemberDecorate 20(ColorBlock) 1 Offset 16 MemberDecorate 20(ColorBlock) 2 Offset 32 MemberDecorate 20(ColorBlock) 3 Offset 48 - Decorate 20(ColorBlock) Block - Decorate 22(uC) DescriptorSet 0 Decorate 22(uC) Binding 1 + Decorate 22(uC) DescriptorSet 0 + Decorate 44(gl_PerVertex) Block MemberDecorate 44(gl_PerVertex) 0 BuiltIn Position MemberDecorate 44(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 44(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 44(gl_PerVertex) Block + Decorate 48(MatrixBlock) Block MemberDecorate 48(MatrixBlock) 0 ColMajor - MemberDecorate 48(MatrixBlock) 0 Offset 0 MemberDecorate 48(MatrixBlock) 0 MatrixStride 16 + MemberDecorate 48(MatrixBlock) 0 Offset 0 MemberDecorate 48(MatrixBlock) 1 ColMajor - MemberDecorate 48(MatrixBlock) 1 Offset 64 MemberDecorate 48(MatrixBlock) 1 MatrixStride 16 - Decorate 48(MatrixBlock) Block - Decorate 50(uM) DescriptorSet 0 + MemberDecorate 48(MatrixBlock) 1 Offset 64 Decorate 50(uM) Binding 0 + Decorate 50(uM) DescriptorSet 0 Decorate 59(Vertex) Block Decorate 61(oV) Location 0 Decorate 64(Vertex) Block Decorate 68(iV) Location 0 + Decorate 95(BufferBlock) BufferBlock MemberDecorate 95(BufferBlock) 0 ColMajor - MemberDecorate 95(BufferBlock) 0 Offset 0 MemberDecorate 95(BufferBlock) 0 MatrixStride 16 - Decorate 95(BufferBlock) BufferBlock - Decorate 97(uBuf) DescriptorSet 0 + MemberDecorate 95(BufferBlock) 0 Offset 0 Decorate 97(uBuf) Binding 1 + Decorate 97(uBuf) DescriptorSet 0 Decorate 100(P) Location 2 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out index 410f192e14..74bc3fb693 100644 --- a/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out +++ b/Test/baseResults/link.vk.pcNamingValid.0.0.vert.out @@ -135,20 +135,20 @@ Shader version: 450 Name 31 "" Name 48 "P" Decorate 14(oColor) Location 0 + Decorate 16(PCBlock) Block MemberDecorate 16(PCBlock) 0 ColMajor - MemberDecorate 16(PCBlock) 0 Offset 0 MemberDecorate 16(PCBlock) 0 MatrixStride 16 + MemberDecorate 16(PCBlock) 0 Offset 0 MemberDecorate 16(PCBlock) 1 ColMajor - MemberDecorate 16(PCBlock) 1 Offset 64 MemberDecorate 16(PCBlock) 1 MatrixStride 16 + MemberDecorate 16(PCBlock) 1 Offset 64 MemberDecorate 16(PCBlock) 2 Offset 128 MemberDecorate 16(PCBlock) 3 Offset 144 - Decorate 16(PCBlock) Block + Decorate 29(gl_PerVertex) Block MemberDecorate 29(gl_PerVertex) 0 BuiltIn Position MemberDecorate 29(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 29(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 29(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 29(gl_PerVertex) Block Decorate 48(P) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/link1.vk.frag.out b/Test/baseResults/link1.vk.frag.out index 225aee13e3..a758f20018 100644 --- a/Test/baseResults/link1.vk.frag.out +++ b/Test/baseResults/link1.vk.frag.out @@ -222,18 +222,18 @@ gl_FragCoord origin is upper left MemberName 67(bnameImplicit) 0 "m" Name 69 "" Decorate 12(color) Location 0 - Decorate 53(s2D) DescriptorSet 0 Decorate 53(s2D) Binding 1 + Decorate 53(s2D) DescriptorSet 0 Decorate 61 ArrayStride 4 - MemberDecorate 62(bnameRuntime) 0 Offset 0 Decorate 62(bnameRuntime) BufferBlock - Decorate 64 DescriptorSet 0 + MemberDecorate 62(bnameRuntime) 0 Offset 0 Decorate 64 Binding 0 + Decorate 64 DescriptorSet 0 Decorate 66 ArrayStride 4 - MemberDecorate 67(bnameImplicit) 0 Offset 0 Decorate 67(bnameImplicit) BufferBlock - Decorate 69 DescriptorSet 0 + MemberDecorate 67(bnameImplicit) 0 Offset 0 Decorate 69 Binding 1 + Decorate 69 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out index 007dcb9080..e6bc9f56d2 100644 --- a/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out +++ b/Test/baseResults/rayQuery-OpConvertUToAccelerationStructureKHR.comp.out @@ -17,8 +17,8 @@ rayQuery-OpConvertUToAccelerationStructureKHR.comp Name 11 "params" MemberName 11(params) 0 "tlas" Name 13 "" - MemberDecorate 11(params) 0 Offset 0 Decorate 11(params) Block + MemberDecorate 11(params) 0 Offset 0 2: TypeVoid 3: TypeFunction 2 6: TypeRayQueryKHR diff --git a/Test/baseResults/rayQuery-allOps.comp.out b/Test/baseResults/rayQuery-allOps.comp.out index a84d91962f..9a606ed909 100644 --- a/Test/baseResults/rayQuery-allOps.comp.out +++ b/Test/baseResults/rayQuery-allOps.comp.out @@ -49,22 +49,22 @@ rayQuery-allOps.comp Name 272 "Rays" MemberName 272(Rays) 0 "rays" Name 274 "" + Decorate 15(Log) BufferBlock MemberDecorate 15(Log) 0 Offset 0 MemberDecorate 15(Log) 1 Offset 4 - Decorate 15(Log) BufferBlock - Decorate 17 DescriptorSet 0 Decorate 17 Binding 0 - Decorate 50(rtas) DescriptorSet 0 + Decorate 17 DescriptorSet 0 Decorate 50(rtas) Binding 1 + Decorate 50(rtas) DescriptorSet 0 MemberDecorate 270(Ray) 0 Offset 0 MemberDecorate 270(Ray) 1 Offset 12 MemberDecorate 270(Ray) 2 Offset 16 MemberDecorate 270(Ray) 3 Offset 28 Decorate 271 ArrayStride 32 - MemberDecorate 272(Rays) 0 Offset 0 Decorate 272(Rays) BufferBlock - Decorate 274 DescriptorSet 0 + MemberDecorate 272(Rays) 0 Offset 0 Decorate 274 Binding 2 + Decorate 274 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 diff --git a/Test/baseResults/rayQuery-allOps.frag.out b/Test/baseResults/rayQuery-allOps.frag.out index 19a6171149..814f9313a3 100644 --- a/Test/baseResults/rayQuery-allOps.frag.out +++ b/Test/baseResults/rayQuery-allOps.frag.out @@ -44,22 +44,22 @@ rayQuery-allOps.frag Name 254 "Rays" MemberName 254(Rays) 0 "rays" Name 256 "" + Decorate 15(Log) BufferBlock MemberDecorate 15(Log) 0 Offset 0 MemberDecorate 15(Log) 1 Offset 4 - Decorate 15(Log) BufferBlock - Decorate 17 DescriptorSet 0 Decorate 17 Binding 0 - Decorate 50(rtas) DescriptorSet 0 + Decorate 17 DescriptorSet 0 Decorate 50(rtas) Binding 1 + Decorate 50(rtas) DescriptorSet 0 MemberDecorate 252(Ray) 0 Offset 0 MemberDecorate 252(Ray) 1 Offset 12 MemberDecorate 252(Ray) 2 Offset 16 MemberDecorate 252(Ray) 3 Offset 28 Decorate 253 ArrayStride 32 - MemberDecorate 254(Rays) 0 Offset 0 Decorate 254(Rays) BufferBlock - Decorate 256 DescriptorSet 0 + MemberDecorate 254(Rays) 0 Offset 0 Decorate 256 Binding 2 + Decorate 256 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 diff --git a/Test/baseResults/rayQuery-allOps.rgen.out b/Test/baseResults/rayQuery-allOps.rgen.out index 67447b9e6d..6b04403c35 100644 --- a/Test/baseResults/rayQuery-allOps.rgen.out +++ b/Test/baseResults/rayQuery-allOps.rgen.out @@ -44,22 +44,22 @@ rayQuery-allOps.rgen Name 254 "Rays" MemberName 254(Rays) 0 "rays" Name 256 "" + Decorate 15(Log) BufferBlock MemberDecorate 15(Log) 0 Offset 0 MemberDecorate 15(Log) 1 Offset 4 - Decorate 15(Log) BufferBlock - Decorate 17 DescriptorSet 0 Decorate 17 Binding 0 - Decorate 50(rtas) DescriptorSet 0 + Decorate 17 DescriptorSet 0 Decorate 50(rtas) Binding 1 + Decorate 50(rtas) DescriptorSet 0 MemberDecorate 252(Ray) 0 Offset 0 MemberDecorate 252(Ray) 1 Offset 12 MemberDecorate 252(Ray) 2 Offset 16 MemberDecorate 252(Ray) 3 Offset 28 Decorate 253 ArrayStride 32 - MemberDecorate 254(Rays) 0 Offset 0 Decorate 254(Rays) BufferBlock - Decorate 256 DescriptorSet 0 + MemberDecorate 254(Rays) 0 Offset 0 Decorate 256 Binding 2 + Decorate 256 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 diff --git a/Test/baseResults/rayQuery-global.rgen.out b/Test/baseResults/rayQuery-global.rgen.out index 968a178bc0..dfd9840399 100644 --- a/Test/baseResults/rayQuery-global.rgen.out +++ b/Test/baseResults/rayQuery-global.rgen.out @@ -22,8 +22,8 @@ rayQuery-global.rgen Name 22 "rq2" Name 27 "rtas" Name 40 "rq2" - Decorate 27(rtas) DescriptorSet 0 Decorate 27(rtas) Binding 1 + Decorate 27(rtas) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeRayQueryKHR diff --git a/Test/baseResults/rayQuery-initialize.rgen.out b/Test/baseResults/rayQuery-initialize.rgen.out index dc213c5bfe..5e97f807bf 100644 --- a/Test/baseResults/rayQuery-initialize.rgen.out +++ b/Test/baseResults/rayQuery-initialize.rgen.out @@ -40,17 +40,17 @@ rayQuery-initialize.rgen Name 90 "param" Decorate 23(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 28(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR - Decorate 50(rtas) DescriptorSet 0 Decorate 50(rtas) Binding 0 + Decorate 50(rtas) DescriptorSet 0 MemberDecorate 72(Ray) 0 Offset 0 MemberDecorate 72(Ray) 1 Offset 12 MemberDecorate 72(Ray) 2 Offset 16 MemberDecorate 72(Ray) 3 Offset 28 Decorate 73 ArrayStride 32 - MemberDecorate 74(Rays) 0 Offset 0 Decorate 74(Rays) BufferBlock - Decorate 76 DescriptorSet 0 + MemberDecorate 74(Rays) 0 Offset 0 Decorate 76 Binding 2 + Decorate 76 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/rayQuery-no-cse.rgen.out b/Test/baseResults/rayQuery-no-cse.rgen.out index 0a751a3c71..eff4123fec 100644 --- a/Test/baseResults/rayQuery-no-cse.rgen.out +++ b/Test/baseResults/rayQuery-no-cse.rgen.out @@ -42,17 +42,17 @@ rayQuery-no-cse.rgen Name 104 "param" Decorate 23(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 28(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR - Decorate 50(rtas) DescriptorSet 0 Decorate 50(rtas) Binding 0 + Decorate 50(rtas) DescriptorSet 0 MemberDecorate 72(Ray) 0 Offset 0 MemberDecorate 72(Ray) 1 Offset 12 MemberDecorate 72(Ray) 2 Offset 16 MemberDecorate 72(Ray) 3 Offset 28 Decorate 73 ArrayStride 32 - MemberDecorate 74(Rays) 0 Offset 0 Decorate 74(Rays) BufferBlock - Decorate 76 DescriptorSet 0 + MemberDecorate 74(Rays) 0 Offset 0 Decorate 76 Binding 2 + Decorate 76 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/rayQuery-types.comp.out b/Test/baseResults/rayQuery-types.comp.out index bb7ed7bc3c..3a58ab50bb 100644 --- a/Test/baseResults/rayQuery-types.comp.out +++ b/Test/baseResults/rayQuery-types.comp.out @@ -34,8 +34,8 @@ rayQuery-types.comp Name 73 "objRayOrigin" Name 77 "objToWorld" Name 79 "worldToObj" - Decorate 11(tlas) DescriptorSet 0 Decorate 11(tlas) Binding 0 + Decorate 11(tlas) DescriptorSet 0 Decorate 85 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/rayQuery.rgen.out b/Test/baseResults/rayQuery.rgen.out index 4a54973ce6..05ebd131ff 100644 --- a/Test/baseResults/rayQuery.rgen.out +++ b/Test/baseResults/rayQuery.rgen.out @@ -23,11 +23,11 @@ rayQuery.rgen MemberName 26(block) 0 "dir" MemberName 26(block) 1 "origin" Name 28 "" - Decorate 21(acc0) DescriptorSet 0 Decorate 21(acc0) Binding 0 + Decorate 21(acc0) DescriptorSet 0 + Decorate 26(block) BufferBlock MemberDecorate 26(block) 0 Offset 0 MemberDecorate 26(block) 1 Offset 16 - Decorate 26(block) BufferBlock 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out index b1ce523bc6..a15675ea8f 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.everything.frag.out @@ -12,32 +12,32 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented EntryPoint Fragment 5663 "main" 4253 3709 ExecutionMode 5663 OriginUpperLeft ExecutionMode 5663 DepthReplacing - Decorate 4727 DescriptorSet 0 Decorate 4727 Binding 0 - Decorate 3305 DescriptorSet 0 + Decorate 4727 DescriptorSet 0 Decorate 3305 Binding 0 - Decorate 4743 DescriptorSet 0 + Decorate 3305 DescriptorSet 0 Decorate 4743 Binding 2 - Decorate 4807 DescriptorSet 0 + Decorate 4743 DescriptorSet 0 Decorate 4807 Binding 3 - Decorate 5042 DescriptorSet 0 + Decorate 4807 DescriptorSet 0 Decorate 5042 Binding 4 - Decorate 5058 DescriptorSet 0 + Decorate 5042 DescriptorSet 0 Decorate 5058 Binding 5 - Decorate 5122 DescriptorSet 0 + Decorate 5058 DescriptorSet 0 Decorate 5122 Binding 6 - Decorate 3967 DescriptorSet 0 + Decorate 5122 DescriptorSet 0 Decorate 3967 Binding 7 - Decorate 3983 DescriptorSet 0 + Decorate 3967 DescriptorSet 0 Decorate 3983 Binding 8 - Decorate 4047 DescriptorSet 0 + Decorate 3983 DescriptorSet 0 Decorate 4047 Binding 9 - Decorate 3789 DescriptorSet 0 + Decorate 4047 DescriptorSet 0 Decorate 3789 Binding 10 - Decorate 3805 DescriptorSet 0 + Decorate 3789 DescriptorSet 0 Decorate 3805 Binding 11 - Decorate 3869 DescriptorSet 0 + Decorate 3805 DescriptorSet 0 Decorate 3869 Binding 12 + Decorate 3869 DescriptorSet 0 Decorate 4253 Location 0 Decorate 3709 BuiltIn FragDepth 8: TypeVoid diff --git a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out index 13ac4f2695..5e61daae33 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.none.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.none.frag.out @@ -64,40 +64,40 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented Name 195 "g_sSamp2d" Name 196 "g_sSamp2D_b" Name 197 "g_tTex1df4a" - Decorate 45(g_tTex1df4) DescriptorSet 0 Decorate 45(g_tTex1df4) Binding 0 - Decorate 49(g_sSamp) DescriptorSet 0 + Decorate 45(g_tTex1df4) DescriptorSet 0 Decorate 49(g_sSamp) Binding 0 - Decorate 60(g_tTex1di4) DescriptorSet 0 + Decorate 49(g_sSamp) DescriptorSet 0 Decorate 60(g_tTex1di4) Binding 2 - Decorate 73(g_tTex1du4) DescriptorSet 0 + Decorate 60(g_tTex1di4) DescriptorSet 0 Decorate 73(g_tTex1du4) Binding 3 - Decorate 83(g_tTex2df4) DescriptorSet 0 + Decorate 73(g_tTex1du4) DescriptorSet 0 Decorate 83(g_tTex2df4) Binding 4 - Decorate 94(g_tTex2di4) DescriptorSet 0 + Decorate 83(g_tTex2df4) DescriptorSet 0 Decorate 94(g_tTex2di4) Binding 5 - Decorate 105(g_tTex2du4) DescriptorSet 0 + Decorate 94(g_tTex2di4) DescriptorSet 0 Decorate 105(g_tTex2du4) Binding 6 - Decorate 117(g_tTex3df4) DescriptorSet 0 + Decorate 105(g_tTex2du4) DescriptorSet 0 Decorate 117(g_tTex3df4) Binding 7 - Decorate 128(g_tTex3di4) DescriptorSet 0 + Decorate 117(g_tTex3df4) DescriptorSet 0 Decorate 128(g_tTex3di4) Binding 8 - Decorate 138(g_tTex3du4) DescriptorSet 0 + Decorate 128(g_tTex3di4) DescriptorSet 0 Decorate 138(g_tTex3du4) Binding 9 - Decorate 151(g_tTexcdf4) DescriptorSet 0 + Decorate 138(g_tTex3du4) DescriptorSet 0 Decorate 151(g_tTexcdf4) Binding 10 - Decorate 160(g_tTexcdi4) DescriptorSet 0 + Decorate 151(g_tTexcdf4) DescriptorSet 0 Decorate 160(g_tTexcdi4) Binding 11 - Decorate 169(g_tTexcdu4) DescriptorSet 0 + Decorate 160(g_tTexcdi4) DescriptorSet 0 Decorate 169(g_tTexcdu4) Binding 12 + Decorate 169(g_tTexcdu4) DescriptorSet 0 Decorate 188(@entryPointOutput.Color) Location 0 Decorate 192(@entryPointOutput.Depth) BuiltIn FragDepth - Decorate 195(g_sSamp2d) DescriptorSet 0 Decorate 195(g_sSamp2d) Binding 0 - Decorate 196(g_sSamp2D_b) DescriptorSet 0 + Decorate 195(g_sSamp2d) DescriptorSet 0 Decorate 196(g_sSamp2D_b) Binding 0 - Decorate 197(g_tTex1df4a) DescriptorSet 0 + Decorate 196(g_sSamp2D_b) DescriptorSet 0 Decorate 197(g_tTex1df4a) Binding 1 + Decorate 197(g_tTex1df4a) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out index d861a43677..a9d041a85a 100644 --- a/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out +++ b/Test/baseResults/remap.hlsl.sample.basic.strip.frag.out @@ -12,40 +12,40 @@ WARNING: 0:4: 'immediate sampler state' : unimplemented EntryPoint Fragment 4 "main" 188 192 ExecutionMode 4 OriginUpperLeft ExecutionMode 4 DepthReplacing - Decorate 45 DescriptorSet 0 Decorate 45 Binding 0 - Decorate 49 DescriptorSet 0 + Decorate 45 DescriptorSet 0 Decorate 49 Binding 0 - Decorate 60 DescriptorSet 0 + Decorate 49 DescriptorSet 0 Decorate 60 Binding 2 - Decorate 73 DescriptorSet 0 + Decorate 60 DescriptorSet 0 Decorate 73 Binding 3 - Decorate 83 DescriptorSet 0 + Decorate 73 DescriptorSet 0 Decorate 83 Binding 4 - Decorate 94 DescriptorSet 0 + Decorate 83 DescriptorSet 0 Decorate 94 Binding 5 - Decorate 105 DescriptorSet 0 + Decorate 94 DescriptorSet 0 Decorate 105 Binding 6 - Decorate 117 DescriptorSet 0 + Decorate 105 DescriptorSet 0 Decorate 117 Binding 7 - Decorate 128 DescriptorSet 0 + Decorate 117 DescriptorSet 0 Decorate 128 Binding 8 - Decorate 138 DescriptorSet 0 + Decorate 128 DescriptorSet 0 Decorate 138 Binding 9 - Decorate 151 DescriptorSet 0 + Decorate 138 DescriptorSet 0 Decorate 151 Binding 10 - Decorate 160 DescriptorSet 0 + Decorate 151 DescriptorSet 0 Decorate 160 Binding 11 - Decorate 169 DescriptorSet 0 + Decorate 160 DescriptorSet 0 Decorate 169 Binding 12 + Decorate 169 DescriptorSet 0 Decorate 188 Location 0 Decorate 192 BuiltIn FragDepth - Decorate 195 DescriptorSet 0 Decorate 195 Binding 0 - Decorate 196 DescriptorSet 0 + Decorate 195 DescriptorSet 0 Decorate 196 Binding 0 - Decorate 197 DescriptorSet 0 + Decorate 196 DescriptorSet 0 Decorate 197 Binding 1 + Decorate 197 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/remap.uniformarray.none.frag.out b/Test/baseResults/remap.uniformarray.none.frag.out index cc4fc7db89..458d8c78a2 100644 --- a/Test/baseResults/remap.uniformarray.none.frag.out +++ b/Test/baseResults/remap.uniformarray.none.frag.out @@ -20,8 +20,8 @@ remap.uniformarray.none.frag Decorate 25(inColor) Location 0 Decorate 43(alpha) Location 7 Decorate 54(gl_FragColor) Location 0 - Decorate 59(texSampler2D) DescriptorSet 0 Decorate 59(texSampler2D) Binding 0 + Decorate 59(texSampler2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out index 858a0dbeaf..59e05bad3d 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out @@ -19,11 +19,11 @@ spv.1.3.8bitstorage-ssbo.vert Name 18 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 11 ArrayStride 1 + Decorate 12(Vertices) Block MemberDecorate 12(Vertices) 0 NonWritable MemberDecorate 12(Vertices) 0 Offset 0 - Decorate 12(Vertices) Block - Decorate 14 DescriptorSet 0 Decorate 14 Binding 0 + Decorate 14 DescriptorSet 0 Decorate 18(gl_VertexIndex) BuiltIn VertexIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out index e7ec5ed3af..2aa51a8e3c 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out @@ -19,10 +19,10 @@ spv.1.3.8bitstorage-ubo.vert Name 20 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 13 ArrayStride 16 - MemberDecorate 14(Vertices) 0 Offset 0 Decorate 14(Vertices) Block - Decorate 16 DescriptorSet 0 + MemberDecorate 14(Vertices) 0 Offset 0 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 20(gl_VertexIndex) BuiltIn VertexIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.1.3.coopmat.comp.out b/Test/baseResults/spv.1.3.coopmat.comp.out index 6b15772db9..b14f0577ee 100644 --- a/Test/baseResults/spv.1.3.coopmat.comp.out +++ b/Test/baseResults/spv.1.3.coopmat.comp.out @@ -26,11 +26,11 @@ spv.1.3.coopmat.comp Name 35 "block" Decorate 31 ArrayStride 4 Decorate 32 ArrayStride 4 + Decorate 33(Block) Block MemberDecorate 33(Block) 0 Offset 0 MemberDecorate 33(Block) 1 Offset 4194304 - Decorate 33(Block) Block - Decorate 35(block) DescriptorSet 0 Decorate 35(block) Binding 0 + Decorate 35(block) DescriptorSet 0 Decorate 51 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out index ad0397b319..f82a144cbe 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogical.comp.out +++ b/Test/baseResults/spv.1.4.OpCopyLogical.comp.out @@ -48,35 +48,35 @@ spv.1.4.OpCopyLogical.comp Decorate 15 ArrayStride 8 MemberDecorate 16(MyStruct) 0 Offset 0 MemberDecorate 16(MyStruct) 1 Offset 16 - MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 17(SSBO0) Block - Decorate 19(inBuf) DescriptorSet 0 + MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 19(inBuf) Binding 0 - MemberDecorate 25(SSBO1) 0 Offset 0 + Decorate 19(inBuf) DescriptorSet 0 Decorate 25(SSBO1) Block - Decorate 27(outBuf) DescriptorSet 0 + MemberDecorate 25(SSBO1) 0 Offset 0 Decorate 27(outBuf) Binding 1 + Decorate 27(outBuf) DescriptorSet 0 Decorate 31 ArrayStride 16 MemberDecorate 32(MyStruct) 0 Offset 0 MemberDecorate 32(MyStruct) 1 Offset 32 - MemberDecorate 33(UBO) 0 Offset 0 Decorate 33(UBO) Block - Decorate 35(uBuf) DescriptorSet 0 + MemberDecorate 33(UBO) 0 Offset 0 Decorate 35(uBuf) Binding 2 + Decorate 35(uBuf) DescriptorSet 0 Decorate 47 ArrayStride 48 MemberDecorate 48(Nested) 0 Offset 0 MemberDecorate 48(Nested) 1 Offset 16 - MemberDecorate 49(UBON) 0 Offset 0 Decorate 49(UBON) Block - Decorate 51(uBufN) DescriptorSet 0 + MemberDecorate 49(UBON) 0 Offset 0 Decorate 51(uBufN) Binding 2 + Decorate 51(uBufN) DescriptorSet 0 Decorate 56 ArrayStride 24 MemberDecorate 57(Nested) 0 Offset 0 MemberDecorate 57(Nested) 1 Offset 8 - MemberDecorate 58(SSBO1N) 0 Offset 0 Decorate 58(SSBO1N) Block - Decorate 60(outBufN) DescriptorSet 0 + MemberDecorate 58(SSBO1N) 0 Offset 0 Decorate 60(outBufN) Binding 1 + Decorate 60(outBufN) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out index 850ee91571..c37bca66dd 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out +++ b/Test/baseResults/spv.1.4.OpCopyLogical.funcall.frag.out @@ -30,12 +30,12 @@ spv.1.4.OpCopyLogical.funcall.frag Name 47 "param" Name 55 "param" MemberDecorate 22(S) 0 ColMajor - MemberDecorate 22(S) 0 Offset 0 MemberDecorate 22(S) 0 MatrixStride 16 - MemberDecorate 23(blockName) 0 Offset 0 + MemberDecorate 22(S) 0 Offset 0 Decorate 23(blockName) Block - Decorate 25 DescriptorSet 0 + MemberDecorate 23(blockName) 0 Offset 0 Decorate 25 Binding 0 + Decorate 25 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out index 7b52595995..0e6f6a6158 100644 --- a/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out +++ b/Test/baseResults/spv.1.4.OpCopyLogicalBool.comp.out @@ -48,35 +48,35 @@ spv.1.4.OpCopyLogicalBool.comp Decorate 15 ArrayStride 8 MemberDecorate 16(MyStruct) 0 Offset 0 MemberDecorate 16(MyStruct) 1 Offset 16 - MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 17(SSBO0) Block - Decorate 19(inBuf) DescriptorSet 0 + MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 19(inBuf) Binding 0 - MemberDecorate 35(SSBO1) 0 Offset 0 + Decorate 19(inBuf) DescriptorSet 0 Decorate 35(SSBO1) Block - Decorate 37(outBuf) DescriptorSet 0 + MemberDecorate 35(SSBO1) 0 Offset 0 Decorate 37(outBuf) Binding 1 + Decorate 37(outBuf) DescriptorSet 0 Decorate 49 ArrayStride 16 MemberDecorate 50(MyStruct) 0 Offset 0 MemberDecorate 50(MyStruct) 1 Offset 32 - MemberDecorate 51(UBO) 0 Offset 0 Decorate 51(UBO) Block - Decorate 53(uBuf) DescriptorSet 0 + MemberDecorate 51(UBO) 0 Offset 0 Decorate 53(uBuf) Binding 2 + Decorate 53(uBuf) DescriptorSet 0 Decorate 75 ArrayStride 48 MemberDecorate 76(Nested) 0 Offset 0 MemberDecorate 76(Nested) 1 Offset 16 - MemberDecorate 77(UBON) 0 Offset 0 Decorate 77(UBON) Block - Decorate 79(uBufN) DescriptorSet 0 + MemberDecorate 77(UBON) 0 Offset 0 Decorate 79(uBufN) Binding 2 + Decorate 79(uBufN) DescriptorSet 0 Decorate 105 ArrayStride 24 MemberDecorate 106(Nested) 0 Offset 0 MemberDecorate 106(Nested) 1 Offset 8 - MemberDecorate 107(SSBO1N) 0 Offset 0 Decorate 107(SSBO1N) Block - Decorate 109(outBufN) DescriptorSet 0 + MemberDecorate 107(SSBO1N) 0 Offset 0 Decorate 109(outBufN) Binding 1 + Decorate 109(outBufN) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out index f37b0fdfd4..dd7dbbb932 100644 --- a/Test/baseResults/spv.1.4.OpEntryPoint.frag.out +++ b/Test/baseResults/spv.1.4.OpEntryPoint.frag.out @@ -25,16 +25,16 @@ spv.1.4.OpEntryPoint.frag Name 41 "bufferv" Decorate 11(inv) Location 0 Decorate 17(outv) Location 0 - MemberDecorate 23(ubt) 0 Offset 0 Decorate 23(ubt) Block - Decorate 25(uniformv) DescriptorSet 0 + MemberDecorate 23(ubt) 0 Offset 0 Decorate 25(uniformv) Binding 0 - MemberDecorate 31(pushB) 0 Offset 0 + Decorate 25(uniformv) DescriptorSet 0 Decorate 31(pushB) Block - MemberDecorate 39(bbt) 0 Offset 0 + MemberDecorate 31(pushB) 0 Offset 0 Decorate 39(bbt) Block - Decorate 41(bufferv) DescriptorSet 0 + MemberDecorate 39(bbt) 0 Offset 0 Decorate 41(bufferv) Binding 1 + Decorate 41(bufferv) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out index dff799f078..4a394014b6 100644 --- a/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out +++ b/Test/baseResults/spv.1.4.OpEntryPoint.opaqueParams.vert.out @@ -18,12 +18,12 @@ spv.1.4.OpEntryPoint.opaqueParams.vert Name 41 "s2D" Name 42 "t2D" Name 43 "s" - Decorate 41(s2D) DescriptorSet 0 Decorate 41(s2D) Binding 0 - Decorate 42(t2D) DescriptorSet 0 + Decorate 41(s2D) DescriptorSet 0 Decorate 42(t2D) Binding 1 - Decorate 43(s) DescriptorSet 0 + Decorate 42(t2D) DescriptorSet 0 Decorate 43(s) Binding 3 + Decorate 43(s) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.4.constructComposite.comp.out b/Test/baseResults/spv.1.4.constructComposite.comp.out index e896cf805c..d228e20d7a 100644 --- a/Test/baseResults/spv.1.4.constructComposite.comp.out +++ b/Test/baseResults/spv.1.4.constructComposite.comp.out @@ -27,10 +27,10 @@ spv.1.4.constructComposite.comp MemberDecorate 11(sA) 0 Offset 0 MemberDecorate 11(sA) 1 Offset 4 MemberDecorate 12(sB) 0 Offset 0 - MemberDecorate 13(ubo) 0 Offset 0 Decorate 13(ubo) Block - Decorate 15 DescriptorSet 0 + MemberDecorate 13(ubo) 0 Offset 0 Decorate 15 Binding 0 + Decorate 15 DescriptorSet 0 Decorate 26 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.1.4.funcall.array.frag.out b/Test/baseResults/spv.1.4.funcall.array.frag.out index 6a23f2aa90..a7fec7622b 100644 --- a/Test/baseResults/spv.1.4.funcall.array.frag.out +++ b/Test/baseResults/spv.1.4.funcall.array.frag.out @@ -22,10 +22,10 @@ spv.1.4.funcall.array.frag Name 40 "param" Decorate 27(color) Location 0 Decorate 28 ArrayStride 16 - MemberDecorate 29(ub) 0 Offset 0 Decorate 29(ub) Block - Decorate 31 DescriptorSet 0 + MemberDecorate 29(ub) 0 Offset 0 Decorate 31 Binding 0 + Decorate 31 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.4.image.frag.out b/Test/baseResults/spv.1.4.image.frag.out index 059ed196a1..5feb0daf84 100644 --- a/Test/baseResults/spv.1.4.image.frag.out +++ b/Test/baseResults/spv.1.4.image.frag.out @@ -23,20 +23,20 @@ spv.1.4.image.frag Name 89 "ui2DMS" Name 100 "fragData" Name 103 "value" - Decorate 26(i2D) DescriptorSet 0 Decorate 26(i2D) Binding 1 + Decorate 26(i2D) DescriptorSet 0 Decorate 30(ic2D) Flat Decorate 30(ic2D) Location 0 - Decorate 40(ii2D) DescriptorSet 0 Decorate 40(ii2D) Binding 12 - Decorate 52(ui2D) DescriptorSet 0 + Decorate 40(ii2D) DescriptorSet 0 Decorate 52(ui2D) Binding 12 - Decorate 64(i2DMS) DescriptorSet 0 + Decorate 52(ui2D) DescriptorSet 0 Decorate 64(i2DMS) Binding 9 - Decorate 77(ii2DMS) DescriptorSet 0 + Decorate 64(i2DMS) DescriptorSet 0 Decorate 77(ii2DMS) Binding 13 - Decorate 89(ui2DMS) DescriptorSet 0 + Decorate 77(ii2DMS) DescriptorSet 0 Decorate 89(ui2DMS) Binding 13 + Decorate 89(ui2DMS) DescriptorSet 0 Decorate 100(fragData) Location 0 Decorate 103(value) Flat Decorate 103(value) Location 1 diff --git a/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out index fea83ab389..507434fdf0 100644 --- a/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out +++ b/Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out @@ -20,16 +20,16 @@ Validation failed Name 61 "color" Decorate 8 ArrayStride 4 Decorate 10 ArrayStride 12 - MemberDecorate 11(ssbo) 0 Offset 0 Decorate 11(ssbo) Block - Decorate 13 DescriptorSet 0 + MemberDecorate 11(ssbo) 0 Offset 0 Decorate 13 Binding 1 + Decorate 13 DescriptorSet 0 Decorate 16 ArrayStride 16 Decorate 17 ArrayStride 48 - MemberDecorate 18(ub) 0 Offset 0 Decorate 18(ub) Block - Decorate 20 DescriptorSet 0 + MemberDecorate 18(ub) 0 Offset 0 Decorate 20 Binding 0 + Decorate 20 DescriptorSet 0 Decorate 61(color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.1.4.sparseTexture.frag.out b/Test/baseResults/spv.1.4.sparseTexture.frag.out index a26ae66e0d..214a02f86c 100644 --- a/Test/baseResults/spv.1.4.sparseTexture.frag.out +++ b/Test/baseResults/spv.1.4.sparseTexture.frag.out @@ -47,21 +47,21 @@ spv.1.4.sparseTexture.frag Name 206 "c3" Name 208 "c4" Name 212 "offsets" - Decorate 29(s2D) DescriptorSet 0 Decorate 29(s2D) Binding 0 + Decorate 29(s2D) DescriptorSet 0 Decorate 33(c2) Location 0 - Decorate 46(is2D) DescriptorSet 0 Decorate 46(is2D) Binding 1 - Decorate 63(us2D) DescriptorSet 0 + Decorate 46(is2D) DescriptorSet 0 Decorate 63(us2D) Binding 2 - Decorate 149(i2D) DescriptorSet 0 + Decorate 63(us2D) DescriptorSet 0 Decorate 149(i2D) Binding 3 + Decorate 149(i2D) DescriptorSet 0 Decorate 152(ic2) Flat Decorate 152(ic2) Location 3 - Decorate 162(ii2DMS) DescriptorSet 0 Decorate 162(ii2DMS) Binding 4 - Decorate 177(ui3D) DescriptorSet 0 + Decorate 162(ii2DMS) DescriptorSet 0 Decorate 177(ui3D) Binding 5 + Decorate 177(ui3D) DescriptorSet 0 Decorate 181(ic3) Flat Decorate 181(ic3) Location 4 Decorate 189(outColor) Location 0 diff --git a/Test/baseResults/spv.1.4.texture.frag.out b/Test/baseResults/spv.1.4.texture.frag.out index 6d28e1f042..352b921019 100644 --- a/Test/baseResults/spv.1.4.texture.frag.out +++ b/Test/baseResults/spv.1.4.texture.frag.out @@ -19,13 +19,13 @@ spv.1.4.texture.frag Name 54 "iLod" Name 76 "t" Name 78 "color" - Decorate 15(texSampler2D) DescriptorSet 0 Decorate 15(texSampler2D) Binding 0 + Decorate 15(texSampler2D) DescriptorSet 0 Decorate 19(coords2D) Location 1 - Decorate 28(itexSampler2D) DescriptorSet 0 Decorate 28(itexSampler2D) Binding 1 - Decorate 40(utexSampler2D) DescriptorSet 0 + Decorate 28(itexSampler2D) DescriptorSet 0 Decorate 40(utexSampler2D) Binding 2 + Decorate 40(utexSampler2D) DescriptorSet 0 Decorate 51(iCoords2D) Flat Decorate 51(iCoords2D) Location 2 Decorate 54(iLod) Flat diff --git a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out index 6364773da0..aa631f3a96 100644 --- a/Test/baseResults/spv.1.6.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.1.6.conditionalDiscard.frag.out @@ -14,8 +14,8 @@ spv.1.6.conditionalDiscard.frag Name 13 "tex" Name 17 "coord" Name 34 "gl_FragColor" - Decorate 13(tex) DescriptorSet 0 Decorate 13(tex) Binding 0 + Decorate 13(tex) DescriptorSet 0 Decorate 17(coord) Location 0 Decorate 34(gl_FragColor) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out b/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out index fea4e4588e..10ca5df2b2 100644 --- a/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out +++ b/Test/baseResults/spv.1.6.helperInvocation.memmodel.frag.out @@ -18,10 +18,10 @@ spv.1.6.helperInvocation.memmodel.frag MemberName 7(B) 0 "o" Name 9 "" Name 14 "gl_HelperInvocation" - MemberDecorate 7(B) 0 Offset 0 Decorate 7(B) Block - Decorate 9 DescriptorSet 0 + MemberDecorate 7(B) 0 Offset 0 Decorate 9 Binding 0 + Decorate 9 DescriptorSet 0 Decorate 14(gl_HelperInvocation) BuiltIn HelperInvocation 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.1.6.samplerBuffer.frag.out b/Test/baseResults/spv.1.6.samplerBuffer.frag.out index 1bd52da992..eef89e9364 100644 --- a/Test/baseResults/spv.1.6.samplerBuffer.frag.out +++ b/Test/baseResults/spv.1.6.samplerBuffer.frag.out @@ -15,8 +15,8 @@ spv.1.6.samplerBuffer.frag Name 9 "o" Name 13 "sampB" Decorate 9(o) Location 0 - Decorate 13(sampB) DescriptorSet 0 Decorate 13(sampB) Binding 0 + Decorate 13(sampB) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.6.separate.frag.out b/Test/baseResults/spv.1.6.separate.frag.out index f485fad1a0..3037fab1b2 100644 --- a/Test/baseResults/spv.1.6.separate.frag.out +++ b/Test/baseResults/spv.1.6.separate.frag.out @@ -15,14 +15,14 @@ spv.1.6.separate.frag Name 13 "s" Name 18 "itexBuffer" Name 24 "utexBuffer" - Decorate 9(texBuffer) DescriptorSet 0 Decorate 9(texBuffer) Binding 1 - Decorate 13(s) DescriptorSet 0 + Decorate 9(texBuffer) DescriptorSet 0 Decorate 13(s) Binding 0 - Decorate 18(itexBuffer) DescriptorSet 0 + Decorate 13(s) DescriptorSet 0 Decorate 18(itexBuffer) Binding 2 - Decorate 24(utexBuffer) DescriptorSet 0 + Decorate 18(itexBuffer) DescriptorSet 0 Decorate 24(utexBuffer) Binding 3 + Decorate 24(utexBuffer) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.1.6.specConstant.comp.out b/Test/baseResults/spv.1.6.specConstant.comp.out index 2c32fbd6c9..13eb93c6a6 100644 --- a/Test/baseResults/spv.1.6.specConstant.comp.out +++ b/Test/baseResults/spv.1.6.specConstant.comp.out @@ -18,10 +18,10 @@ spv.1.6.specConstant.comp Name 37 "param" Decorate 7 SpecId 18 Decorate 9 SpecId 19 - MemberDecorate 16(bn) 0 Offset 0 Decorate 16(bn) Block - Decorate 18(bi) DescriptorSet 0 + MemberDecorate 16(bn) 0 Offset 0 Decorate 18(bi) Binding 0 + Decorate 18(bi) DescriptorSet 0 Decorate 25 SpecId 18 Decorate 26 SpecId 19 2: TypeVoid diff --git a/Test/baseResults/spv.130.frag.out b/Test/baseResults/spv.130.frag.out index 84fa9a3f50..8e6c1182f4 100644 --- a/Test/baseResults/spv.130.frag.out +++ b/Test/baseResults/spv.130.frag.out @@ -59,45 +59,45 @@ Validation failed Name 203 "s1D" Name 204 "s2DS" Decorate 17(o) Location 0 - Decorate 21(samp2D) DescriptorSet 0 Decorate 21(samp2D) Binding 2 - Decorate 37(samp2DA) DescriptorSet 0 + Decorate 21(samp2D) DescriptorSet 0 Decorate 37(samp2DA) Binding 5 - Decorate 47(samp2DR) DescriptorSet 0 + Decorate 37(samp2DA) DescriptorSet 0 Decorate 47(samp2DR) Binding 4 - Decorate 55(samp2DS) DescriptorSet 0 + Decorate 47(samp2DR) DescriptorSet 0 Decorate 55(samp2DS) Binding 3 + Decorate 55(samp2DS) DescriptorSet 0 Decorate 68(io) Location 1 - Decorate 72(Sca) DescriptorSet 0 Decorate 72(Sca) Binding 6 + Decorate 72(Sca) DescriptorSet 0 Decorate 79(i) Location 0 - Decorate 87(Isca) DescriptorSet 0 Decorate 87(Isca) Binding 7 + Decorate 87(Isca) DescriptorSet 0 Decorate 99(uo) Location 2 - Decorate 103(Usca) DescriptorSet 0 Decorate 103(Usca) Binding 8 - Decorate 118(Scas) DescriptorSet 0 + Decorate 103(Usca) DescriptorSet 0 Decorate 118(Scas) Binding 9 - Decorate 167(sampC) DescriptorSet 0 + Decorate 118(Scas) DescriptorSet 0 Decorate 167(sampC) Binding 1 + Decorate 167(sampC) DescriptorSet 0 Decorate 173(gl_ClipDistance) BuiltIn ClipDistance Decorate 184(fflat) Flat Decorate 184(fflat) Location 1 Decorate 185(fsmooth) Location 2 Decorate 186(fnop) NoPerspective Decorate 186(fnop) Location 3 - Decorate 193(bounds) DescriptorSet 0 Decorate 193(bounds) Binding 0 - Decorate 194(s2D) DescriptorSet 0 + Decorate 193(bounds) DescriptorSet 0 Decorate 194(s2D) Binding 0 - Decorate 195(s2DR) DescriptorSet 0 + Decorate 194(s2D) DescriptorSet 0 Decorate 195(s2DR) Binding 0 - Decorate 199(s2DRS) DescriptorSet 0 + Decorate 195(s2DR) DescriptorSet 0 Decorate 199(s2DRS) Binding 0 - Decorate 203(s1D) DescriptorSet 0 + Decorate 199(s2DRS) DescriptorSet 0 Decorate 203(s1D) Binding 0 - Decorate 204(s2DS) DescriptorSet 0 + Decorate 203(s1D) DescriptorSet 0 Decorate 204(s2DS) Binding 0 + Decorate 204(s2DS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 14: TypeFloat 32 diff --git a/Test/baseResults/spv.140.frag.out b/Test/baseResults/spv.140.frag.out index a4401a28c6..be76ab44ec 100644 --- a/Test/baseResults/spv.140.frag.out +++ b/Test/baseResults/spv.140.frag.out @@ -40,37 +40,37 @@ Validation failed Decorate 23(o) Location 0 Decorate 28(gl_ClipDistance) BuiltIn ClipDistance Decorate 38(k) Location 0 - Decorate 50(sampR) DescriptorSet 0 Decorate 50(sampR) Binding 0 - Decorate 58(sampB) DescriptorSet 0 + Decorate 50(sampR) DescriptorSet 0 Decorate 58(sampB) Binding 1 - Decorate 82(samp2Da) DescriptorSet 0 + Decorate 58(sampB) DescriptorSet 0 Decorate 82(samp2Da) Binding 0 + Decorate 82(samp2Da) DescriptorSet 0 Decorate 85 ArrayStride 64 Decorate 86 ArrayStride 64 + Decorate 87(bn) Block MemberDecorate 87(bn) 0 RowMajor - MemberDecorate 87(bn) 0 Offset 0 MemberDecorate 87(bn) 0 MatrixStride 16 + MemberDecorate 87(bn) 0 Offset 0 MemberDecorate 87(bn) 1 ColMajor - MemberDecorate 87(bn) 1 Offset 256 MemberDecorate 87(bn) 1 MatrixStride 16 + MemberDecorate 87(bn) 1 Offset 256 MemberDecorate 87(bn) 2 RowMajor - MemberDecorate 87(bn) 2 Offset 512 MemberDecorate 87(bn) 2 MatrixStride 16 + MemberDecorate 87(bn) 2 Offset 512 MemberDecorate 87(bn) 3 ColMajor - MemberDecorate 87(bn) 3 Offset 576 MemberDecorate 87(bn) 3 MatrixStride 16 + MemberDecorate 87(bn) 3 Offset 576 MemberDecorate 87(bn) 4 RowMajor - MemberDecorate 87(bn) 4 Offset 1024 MemberDecorate 87(bn) 4 MatrixStride 16 - Decorate 87(bn) Block - Decorate 89 DescriptorSet 0 + MemberDecorate 87(bn) 4 Offset 1024 Decorate 89 Binding 0 + Decorate 89 DescriptorSet 0 Decorate 91 ArrayStride 16 - MemberDecorate 92(bi) 0 Offset 0 Decorate 92(bi) Block - Decorate 95(bname) DescriptorSet 0 + MemberDecorate 92(bi) 0 Offset 0 Decorate 95(bname) Binding 0 + Decorate 95(bname) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.150.geom.out b/Test/baseResults/spv.150.geom.out index b6e22e1672..1acde693c4 100644 --- a/Test/baseResults/spv.150.geom.out +++ b/Test/baseResults/spv.150.geom.out @@ -38,27 +38,27 @@ spv.150.geom MemberName 68(toFragment) 0 "color" Name 70 "toF" Decorate 8(fromVertex) Block - Decorate 10 Location 1 Decorate 10 Stream 3 + Decorate 10 Location 1 Decorate 13(fromVertex) Block Decorate 18(fromV) Location 0 + Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 27(gl_PerVertex) Block Decorate 29 Stream 0 + Decorate 30(gl_PerVertex) Block MemberDecorate 30(gl_PerVertex) 0 BuiltIn Position MemberDecorate 30(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 30(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 30(gl_PerVertex) Block - Decorate 47(gl_PrimitiveID) Stream 0 Decorate 47(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 47(gl_PrimitiveID) Stream 0 Decorate 49(gl_PrimitiveIDIn) BuiltIn PrimitiveId - Decorate 51(gl_Layer) Stream 0 Decorate 51(gl_Layer) BuiltIn Layer + Decorate 51(gl_Layer) Stream 0 Decorate 68(toFragment) Block - Decorate 70(toF) Location 0 Decorate 70(toF) Stream 3 + Decorate 70(toF) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.150.vert.out b/Test/baseResults/spv.150.vert.out index 167a15e398..a5513aced1 100644 --- a/Test/baseResults/spv.150.vert.out +++ b/Test/baseResults/spv.150.vert.out @@ -28,16 +28,16 @@ spv.150.vert Name 40 "i" Name 47 "s2D" Name 62 "ui" - MemberDecorate 11(gl_PerVertex) 0 Invariant + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 11(gl_PerVertex) 0 Invariant MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 11(gl_PerVertex) Block Decorate 17(iv4) Location 0 Decorate 23(ps) Location 1 Decorate 38(s2out) Location 0 - Decorate 47(s2D) DescriptorSet 0 Decorate 47(s2D) Binding 0 + Decorate 47(s2D) DescriptorSet 0 Decorate 62(ui) Location 2 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.16bitstorage-int.frag.out b/Test/baseResults/spv.16bitstorage-int.frag.out index bced9d3088..07db828ee1 100644 --- a/Test/baseResults/spv.16bitstorage-int.frag.out +++ b/Test/baseResults/spv.16bitstorage-int.frag.out @@ -83,6 +83,7 @@ spv.16bitstorage-int.frag Decorate 13 ArrayStride 16 Decorate 15 ArrayStride 4 Decorate 16 ArrayStride 2 + Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 4 MemberDecorate 17(B2) 2 Offset 8 @@ -91,14 +92,14 @@ spv.16bitstorage-int.frag MemberDecorate 17(B2) 5 Offset 40 MemberDecorate 17(B2) 6 Offset 72 MemberDecorate 17(B2) 7 Offset 472 - Decorate 17(B2) BufferBlock - Decorate 19(b2) DescriptorSet 0 Decorate 19(b2) Binding 1 + Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 4 MemberDecorate 23(S) 2 Offset 8 Decorate 24 ArrayStride 16 + Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 4 MemberDecorate 25(B1) 2 Offset 8 @@ -106,9 +107,8 @@ spv.16bitstorage-int.frag MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 - Decorate 25(B1) Block - Decorate 27(b1) DescriptorSet 0 Decorate 27(b1) Binding 0 + Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 4 @@ -116,6 +116,7 @@ spv.16bitstorage-int.frag Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 + Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 4 MemberDecorate 49(B5) 2 Offset 8 @@ -124,29 +125,28 @@ spv.16bitstorage-int.frag MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 - Decorate 49(B5) Block - Decorate 51(b5) DescriptorSet 0 Decorate 51(b5) Binding 2 + Decorate 51(b5) DescriptorSet 0 MemberDecorate 88(S2) 0 ColMajor - MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 0 MatrixStride 16 + MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 1 Offset 64 MemberDecorate 88(S2) 2 Offset 68 MemberDecorate 89(S3) 0 Offset 0 + Decorate 90(B4) BufferBlock MemberDecorate 90(B4) 0 Offset 0 MemberDecorate 90(B4) 1 Offset 80 - Decorate 90(B4) BufferBlock - Decorate 92(b4) DescriptorSet 0 Decorate 92(b4) Binding 4 + Decorate 92(b4) DescriptorSet 0 MemberDecorate 93(S2) 0 RowMajor - MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 0 MatrixStride 16 + MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 1 Offset 64 MemberDecorate 93(S2) 2 Offset 68 - MemberDecorate 94(B3) 0 Offset 0 Decorate 94(B3) BufferBlock - Decorate 96(b3) DescriptorSet 0 + MemberDecorate 94(B3) 0 Offset 0 Decorate 96(b3) Binding 3 + Decorate 96(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 16 1 diff --git a/Test/baseResults/spv.16bitstorage-uint.frag.out b/Test/baseResults/spv.16bitstorage-uint.frag.out index adf5237b0f..8b169f3ae8 100644 --- a/Test/baseResults/spv.16bitstorage-uint.frag.out +++ b/Test/baseResults/spv.16bitstorage-uint.frag.out @@ -83,6 +83,7 @@ spv.16bitstorage-uint.frag Decorate 13 ArrayStride 16 Decorate 15 ArrayStride 4 Decorate 16 ArrayStride 2 + Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 4 MemberDecorate 17(B2) 2 Offset 8 @@ -91,14 +92,14 @@ spv.16bitstorage-uint.frag MemberDecorate 17(B2) 5 Offset 40 MemberDecorate 17(B2) 6 Offset 72 MemberDecorate 17(B2) 7 Offset 472 - Decorate 17(B2) BufferBlock - Decorate 19(b2) DescriptorSet 0 Decorate 19(b2) Binding 1 + Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 4 MemberDecorate 23(S) 2 Offset 8 Decorate 24 ArrayStride 16 + Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 4 MemberDecorate 25(B1) 2 Offset 8 @@ -106,9 +107,8 @@ spv.16bitstorage-uint.frag MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 - Decorate 25(B1) Block - Decorate 27(b1) DescriptorSet 0 Decorate 27(b1) Binding 0 + Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 4 @@ -116,6 +116,7 @@ spv.16bitstorage-uint.frag Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 + Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 4 MemberDecorate 49(B5) 2 Offset 8 @@ -124,29 +125,28 @@ spv.16bitstorage-uint.frag MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 - Decorate 49(B5) Block - Decorate 51(b5) DescriptorSet 0 Decorate 51(b5) Binding 2 + Decorate 51(b5) DescriptorSet 0 MemberDecorate 89(S2) 0 ColMajor - MemberDecorate 89(S2) 0 Offset 0 MemberDecorate 89(S2) 0 MatrixStride 16 + MemberDecorate 89(S2) 0 Offset 0 MemberDecorate 89(S2) 1 Offset 64 MemberDecorate 89(S2) 2 Offset 68 MemberDecorate 90(S3) 0 Offset 0 + Decorate 91(B4) BufferBlock MemberDecorate 91(B4) 0 Offset 0 MemberDecorate 91(B4) 1 Offset 80 - Decorate 91(B4) BufferBlock - Decorate 93(b4) DescriptorSet 0 Decorate 93(b4) Binding 4 + Decorate 93(b4) DescriptorSet 0 MemberDecorate 94(S2) 0 RowMajor - MemberDecorate 94(S2) 0 Offset 0 MemberDecorate 94(S2) 0 MatrixStride 16 + MemberDecorate 94(S2) 0 Offset 0 MemberDecorate 94(S2) 1 Offset 64 MemberDecorate 94(S2) 2 Offset 68 - MemberDecorate 95(B3) 0 Offset 0 Decorate 95(B3) BufferBlock - Decorate 97(b3) DescriptorSet 0 + MemberDecorate 95(B3) 0 Offset 0 Decorate 97(b3) Binding 3 + Decorate 97(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 16 0 diff --git a/Test/baseResults/spv.16bitstorage.frag.out b/Test/baseResults/spv.16bitstorage.frag.out index bb1b1642a4..f62f17ac00 100644 --- a/Test/baseResults/spv.16bitstorage.frag.out +++ b/Test/baseResults/spv.16bitstorage.frag.out @@ -83,6 +83,7 @@ spv.16bitstorage.frag Decorate 13 ArrayStride 16 Decorate 15 ArrayStride 4 Decorate 16 ArrayStride 2 + Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 4 MemberDecorate 17(B2) 2 Offset 8 @@ -91,14 +92,14 @@ spv.16bitstorage.frag MemberDecorate 17(B2) 5 Offset 40 MemberDecorate 17(B2) 6 Offset 72 MemberDecorate 17(B2) 7 Offset 472 - Decorate 17(B2) BufferBlock - Decorate 19(b2) DescriptorSet 0 Decorate 19(b2) Binding 1 + Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 4 MemberDecorate 23(S) 2 Offset 8 Decorate 24 ArrayStride 16 + Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 4 MemberDecorate 25(B1) 2 Offset 8 @@ -106,9 +107,8 @@ spv.16bitstorage.frag MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 - Decorate 25(B1) Block - Decorate 27(b1) DescriptorSet 0 Decorate 27(b1) Binding 0 + Decorate 27(b1) DescriptorSet 0 Decorate 45 ArrayStride 16 MemberDecorate 46(S) 0 Offset 0 MemberDecorate 46(S) 1 Offset 4 @@ -116,6 +116,7 @@ spv.16bitstorage.frag Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 Decorate 49 ArrayStride 16 + Decorate 50(B5) Block MemberDecorate 50(B5) 0 Offset 0 MemberDecorate 50(B5) 1 Offset 4 MemberDecorate 50(B5) 2 Offset 8 @@ -124,29 +125,28 @@ spv.16bitstorage.frag MemberDecorate 50(B5) 5 Offset 64 MemberDecorate 50(B5) 6 Offset 96 MemberDecorate 50(B5) 7 Offset 1696 - Decorate 50(B5) Block - Decorate 52(b5) DescriptorSet 0 Decorate 52(b5) Binding 2 + Decorate 52(b5) DescriptorSet 0 MemberDecorate 88(S2) 0 ColMajor - MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 0 MatrixStride 16 + MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 1 Offset 64 MemberDecorate 88(S2) 2 Offset 68 MemberDecorate 89(S3) 0 Offset 0 + Decorate 90(B4) BufferBlock MemberDecorate 90(B4) 0 Offset 0 MemberDecorate 90(B4) 1 Offset 80 - Decorate 90(B4) BufferBlock - Decorate 92(b4) DescriptorSet 0 Decorate 92(b4) Binding 4 + Decorate 92(b4) DescriptorSet 0 MemberDecorate 93(S2) 0 RowMajor - MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 0 MatrixStride 16 + MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 1 Offset 64 MemberDecorate 93(S2) 2 Offset 68 - MemberDecorate 94(B3) 0 Offset 0 Decorate 94(B3) BufferBlock - Decorate 96(b3) DescriptorSet 0 + MemberDecorate 94(B3) 0 Offset 0 Decorate 96(b3) Binding 3 + Decorate 96(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 diff --git a/Test/baseResults/spv.16bitxfb.vert.out b/Test/baseResults/spv.16bitxfb.vert.out index 2dd93d4bdb..4fe2bf738f 100644 --- a/Test/baseResults/spv.16bitxfb.vert.out +++ b/Test/baseResults/spv.16bitxfb.vert.out @@ -31,24 +31,24 @@ spv.16bitxfb.vert Name 46 "" Name 49 "iu16v4" Decorate 9(of16v3) Location 0 + Decorate 9(of16v3) Offset 0 Decorate 9(of16v3) XfbBuffer 0 Decorate 9(of16v3) XfbStride 6 - Decorate 9(of16v3) Offset 0 Decorate 12(if16v4) Location 0 + Decorate 16(F16Out) Block MemberDecorate 16(F16Out) 0 Offset 0 MemberDecorate 16(F16Out) 1 Offset 2 - Decorate 16(F16Out) Block Decorate 18 Location 1 Decorate 18 XfbBuffer 1 Decorate 18 XfbStride 6 Decorate 36(oi16v3) Location 5 + Decorate 36(oi16v3) Offset 0 Decorate 36(oi16v3) XfbBuffer 2 Decorate 36(oi16v3) XfbStride 6 - Decorate 36(oi16v3) Offset 0 Decorate 39(ii16v4) Location 1 + Decorate 44(I16Out) Block MemberDecorate 44(I16Out) 0 Offset 0 MemberDecorate 44(I16Out) 1 Offset 2 - Decorate 44(I16Out) Block Decorate 46 Location 6 Decorate 46 XfbBuffer 3 Decorate 46 XfbStride 6 diff --git a/Test/baseResults/spv.300BuiltIns.vert.out b/Test/baseResults/spv.300BuiltIns.vert.out index 10f115be30..b2607d3321 100644 --- a/Test/baseResults/spv.300BuiltIns.vert.out +++ b/Test/baseResults/spv.300BuiltIns.vert.out @@ -16,10 +16,10 @@ spv.300BuiltIns.vert Name 14 "ps" Name 21 "gl_VertexIndex" Name 34 "gl_InstanceIndex" - MemberDecorate 8(gl_PerVertex) 0 Invariant + Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 8(gl_PerVertex) 0 Invariant MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize - Decorate 8(gl_PerVertex) Block Decorate 14(ps) RelaxedPrecision Decorate 14(ps) Location 0 Decorate 15 RelaxedPrecision diff --git a/Test/baseResults/spv.300layout.vert.out b/Test/baseResults/spv.300layout.vert.out index 6345aa129a..7806b588ae 100644 --- a/Test/baseResults/spv.300layout.vert.out +++ b/Test/baseResults/spv.300layout.vert.out @@ -38,40 +38,40 @@ spv.300layout.vert Name 128 "s" Decorate 9(pos) Location 0 Decorate 11(p) Location 3 + Decorate 17(Transform) Block MemberDecorate 17(Transform) 0 RowMajor - MemberDecorate 17(Transform) 0 Offset 0 MemberDecorate 17(Transform) 0 MatrixStride 16 + MemberDecorate 17(Transform) 0 Offset 0 MemberDecorate 17(Transform) 1 ColMajor - MemberDecorate 17(Transform) 1 Offset 64 MemberDecorate 17(Transform) 1 MatrixStride 16 + MemberDecorate 17(Transform) 1 Offset 64 MemberDecorate 17(Transform) 2 RowMajor - MemberDecorate 17(Transform) 2 Offset 128 MemberDecorate 17(Transform) 2 MatrixStride 16 + MemberDecorate 17(Transform) 2 Offset 128 MemberDecorate 17(Transform) 3 Offset 176 - Decorate 17(Transform) Block - Decorate 19(tblock) DescriptorSet 0 Decorate 19(tblock) Binding 0 + Decorate 19(tblock) DescriptorSet 0 Decorate 44 ArrayStride 16 + Decorate 45(T3) Block MemberDecorate 45(T3) 0 ColMajor - MemberDecorate 45(T3) 0 Offset 0 MemberDecorate 45(T3) 0 MatrixStride 16 + MemberDecorate 45(T3) 0 Offset 0 MemberDecorate 45(T3) 1 RowMajor - MemberDecorate 45(T3) 1 Offset 64 MemberDecorate 45(T3) 1 MatrixStride 16 + MemberDecorate 45(T3) 1 Offset 64 MemberDecorate 45(T3) 2 ColMajor - MemberDecorate 45(T3) 2 Offset 128 MemberDecorate 45(T3) 2 MatrixStride 16 + MemberDecorate 45(T3) 2 Offset 128 MemberDecorate 45(T3) 3 Offset 2048 - Decorate 45(T3) Block - Decorate 47 DescriptorSet 0 Decorate 47 Binding 2 + Decorate 47 DescriptorSet 0 + Decorate 78(T2) Block MemberDecorate 78(T2) 0 Offset 0 MemberDecorate 78(T2) 1 RowMajor - MemberDecorate 78(T2) 1 Offset 16 MemberDecorate 78(T2) 1 MatrixStride 16 - Decorate 78(T2) Block - Decorate 80 DescriptorSet 0 + MemberDecorate 78(T2) 1 Offset 16 Decorate 80 Binding 1 + Decorate 80 DescriptorSet 0 Decorate 98(color) Location 1 Decorate 100(c) Location 7 Decorate 108(iout) Flat diff --git a/Test/baseResults/spv.300layoutp.vert.out b/Test/baseResults/spv.300layoutp.vert.out index d986fb5476..cec34743cf 100644 --- a/Test/baseResults/spv.300layoutp.vert.out +++ b/Test/baseResults/spv.300layoutp.vert.out @@ -38,40 +38,40 @@ spv.300layoutp.vert Name 80 "s" Decorate 9(pos) Location 0 Decorate 11(p) Location 3 + Decorate 17(Transform) Block MemberDecorate 17(Transform) 0 RowMajor - MemberDecorate 17(Transform) 0 Offset 0 MemberDecorate 17(Transform) 0 MatrixStride 16 + MemberDecorate 17(Transform) 0 Offset 0 MemberDecorate 17(Transform) 1 ColMajor - MemberDecorate 17(Transform) 1 Offset 64 MemberDecorate 17(Transform) 1 MatrixStride 16 + MemberDecorate 17(Transform) 1 Offset 64 MemberDecorate 17(Transform) 2 RowMajor - MemberDecorate 17(Transform) 2 Offset 128 MemberDecorate 17(Transform) 2 MatrixStride 16 + MemberDecorate 17(Transform) 2 Offset 128 MemberDecorate 17(Transform) 3 Offset 176 - Decorate 17(Transform) Block - Decorate 19(tblock) DescriptorSet 0 Decorate 19(tblock) Binding 0 + Decorate 19(tblock) DescriptorSet 0 Decorate 32 ArrayStride 16 + Decorate 33(T3) Block MemberDecorate 33(T3) 0 ColMajor - MemberDecorate 33(T3) 0 Offset 0 MemberDecorate 33(T3) 0 MatrixStride 16 + MemberDecorate 33(T3) 0 Offset 0 MemberDecorate 33(T3) 1 RowMajor - MemberDecorate 33(T3) 1 Offset 64 MemberDecorate 33(T3) 1 MatrixStride 16 + MemberDecorate 33(T3) 1 Offset 64 MemberDecorate 33(T3) 2 ColMajor - MemberDecorate 33(T3) 2 Offset 128 MemberDecorate 33(T3) 2 MatrixStride 16 + MemberDecorate 33(T3) 2 Offset 128 MemberDecorate 33(T3) 3 Offset 160 - Decorate 33(T3) Block - Decorate 35 DescriptorSet 0 Decorate 35 Binding 2 + Decorate 35 DescriptorSet 0 + Decorate 42(T2) Block MemberDecorate 42(T2) 0 Offset 0 MemberDecorate 42(T2) 1 RowMajor - MemberDecorate 42(T2) 1 Offset 16 MemberDecorate 42(T2) 1 MatrixStride 16 - Decorate 42(T2) Block - Decorate 44 DescriptorSet 0 + MemberDecorate 42(T2) 1 Offset 16 Decorate 44 Binding 1 + Decorate 44 DescriptorSet 0 Decorate 50(color) Location 1 Decorate 52(c) Location 7 Decorate 60(iout) Flat diff --git a/Test/baseResults/spv.310.comp.out b/Test/baseResults/spv.310.comp.out index 459c689b2d..1b585c7b88 100644 --- a/Test/baseResults/spv.310.comp.out +++ b/Test/baseResults/spv.310.comp.out @@ -32,24 +32,24 @@ spv.310.comp Name 53 "gl_LocalInvocationID" Name 65 "gl_DeviceIndex" Decorate 11 ArrayStride 16 + Decorate 12(outb) BufferBlock MemberDecorate 12(outb) 0 Offset 0 MemberDecorate 12(outb) 1 Offset 4 MemberDecorate 12(outb) 2 Offset 8 MemberDecorate 12(outb) 3 Offset 16 - Decorate 12(outb) BufferBlock - Decorate 14(outbname) DescriptorSet 0 Decorate 14(outbname) Binding 0 + Decorate 14(outbname) DescriptorSet 0 + Decorate 23(outbna) BufferBlock MemberDecorate 23(outbna) 0 Offset 0 MemberDecorate 23(outbna) 1 Offset 16 - Decorate 23(outbna) BufferBlock - Decorate 25(outbnamena) DescriptorSet 0 Decorate 25(outbnamena) Binding 1 + Decorate 25(outbnamena) DescriptorSet 0 Decorate 47 ArrayStride 16 + Decorate 48(outs) BufferBlock MemberDecorate 48(outs) 0 Offset 0 MemberDecorate 48(outs) 1 Offset 16 - Decorate 48(outs) BufferBlock - Decorate 50(outnames) DescriptorSet 0 Decorate 50(outnames) Binding 2 + Decorate 50(outnames) DescriptorSet 0 Decorate 53(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 65(gl_DeviceIndex) BuiltIn DeviceIndex Decorate 71 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out index 197fe6021f..5d82e66d85 100644 --- a/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.320.meshShaderUserDefined.mesh.out @@ -34,13 +34,13 @@ spv.320.meshShaderUserDefined.mesh Name 106 "blk2" Decorate 12(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 33(myblock) Block MemberDecorate 33(myblock) 0 PerPrimitiveNV MemberDecorate 33(myblock) 1 PerPrimitiveNV MemberDecorate 33(myblock) 2 PerPrimitiveNV MemberDecorate 33(myblock) 3 PerPrimitiveNV MemberDecorate 33(myblock) 4 PerPrimitiveNV MemberDecorate 33(myblock) 5 PerPrimitiveNV - Decorate 33(myblock) Block Decorate 37(blk) Location 0 Decorate 102(myblock2) Block Decorate 106(blk2) Location 20 diff --git a/Test/baseResults/spv.330.geom.out b/Test/baseResults/spv.330.geom.out index f9e69e5789..a6923466d8 100644 --- a/Test/baseResults/spv.330.geom.out +++ b/Test/baseResults/spv.330.geom.out @@ -23,12 +23,12 @@ spv.330.geom MemberName 16(gl_PerVertex) 0 "gl_Position" MemberName 16(gl_PerVertex) 1 "gl_ClipDistance" Name 20 "gl_in" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn ClipDistance - Decorate 11(gl_PerVertex) Block + Decorate 16(gl_PerVertex) Block MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position MemberDecorate 16(gl_PerVertex) 1 BuiltIn ClipDistance - Decorate 16(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.400.frag.nanclamp.out b/Test/baseResults/spv.400.frag.nanclamp.out index f03e938602..c913e41c5c 100644 --- a/Test/baseResults/spv.400.frag.nanclamp.out +++ b/Test/baseResults/spv.400.frag.nanclamp.out @@ -53,27 +53,27 @@ spv.400.frag Name 1119 "id" Name 1120 "gl_PrimitiveID" Decorate 13(outp) Location 1 - Decorate 17(u2drs) DescriptorSet 0 Decorate 17(u2drs) Binding 3 - Decorate 1025(arrayedSampler) DescriptorSet 0 + Decorate 17(u2drs) DescriptorSet 0 Decorate 1025(arrayedSampler) Binding 0 + Decorate 1025(arrayedSampler) DescriptorSet 0 Decorate 1027(i) Flat Decorate 1027(i) Location 1 Decorate 1033(c2D) Location 0 Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance Decorate 1054(uoutp) Location 3 - Decorate 1058(samp2dr) DescriptorSet 0 Decorate 1058(samp2dr) Binding 1 + Decorate 1058(samp2dr) DescriptorSet 0 Decorate 1080(ioutp) Location 2 - Decorate 1084(isamp2DA) DescriptorSet 0 Decorate 1084(isamp2DA) Binding 2 + Decorate 1084(isamp2DA) DescriptorSet 0 Decorate 1101(gl_FragCoord) BuiltIn FragCoord Decorate 1103(vl2) Location 6 Decorate 1109(uo) Location 0 Decorate 1111(u) Flat Decorate 1111(u) Location 2 - Decorate 1120(gl_PrimitiveID) Flat Decorate 1120(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 1120(gl_PrimitiveID) Flat 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 diff --git a/Test/baseResults/spv.400.frag.out b/Test/baseResults/spv.400.frag.out index aa42d28296..b010d7da12 100644 --- a/Test/baseResults/spv.400.frag.out +++ b/Test/baseResults/spv.400.frag.out @@ -54,27 +54,27 @@ Validation failed Name 1119 "id" Name 1120 "gl_PrimitiveID" Decorate 13(outp) Location 1 - Decorate 17(u2drs) DescriptorSet 0 Decorate 17(u2drs) Binding 3 - Decorate 1025(arrayedSampler) DescriptorSet 0 + Decorate 17(u2drs) DescriptorSet 0 Decorate 1025(arrayedSampler) Binding 0 + Decorate 1025(arrayedSampler) DescriptorSet 0 Decorate 1027(i) Flat Decorate 1027(i) Location 1 Decorate 1033(c2D) Location 0 Decorate 1038(gl_ClipDistance) BuiltIn ClipDistance Decorate 1054(uoutp) Location 3 - Decorate 1058(samp2dr) DescriptorSet 0 Decorate 1058(samp2dr) Binding 1 + Decorate 1058(samp2dr) DescriptorSet 0 Decorate 1080(ioutp) Location 2 - Decorate 1084(isamp2DA) DescriptorSet 0 Decorate 1084(isamp2DA) Binding 2 + Decorate 1084(isamp2DA) DescriptorSet 0 Decorate 1101(gl_FragCoord) BuiltIn FragCoord Decorate 1103(vl2) Location 6 Decorate 1109(uo) Location 0 Decorate 1111(u) Flat Decorate 1111(u) Location 2 - Decorate 1120(gl_PrimitiveID) Flat Decorate 1120(gl_PrimitiveID) BuiltIn PrimitiveId + Decorate 1120(gl_PrimitiveID) Flat 2: TypeVoid 3: TypeFunction 2 10: TypeFloat 32 diff --git a/Test/baseResults/spv.400.tesc.out b/Test/baseResults/spv.400.tesc.out index b6f0ddfd50..7936933907 100644 --- a/Test/baseResults/spv.400.tesc.out +++ b/Test/baseResults/spv.400.tesc.out @@ -43,21 +43,21 @@ spv.400.tesc Name 87 "ivlb" Name 90 "ovla" Name 91 "ovlb" + Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 20(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 20(gl_PerVertex) Block Decorate 41(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 44(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 47(gl_InvocationID) BuiltIn InvocationId + Decorate 50(gl_PerVertex) Block MemberDecorate 50(gl_PerVertex) 0 BuiltIn Position MemberDecorate 50(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 50(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 50(gl_PerVertex) Block - Decorate 67(gl_TessLevelOuter) Patch Decorate 67(gl_TessLevelOuter) BuiltIn TessLevelOuter - Decorate 72(gl_TessLevelInner) Patch + Decorate 67(gl_TessLevelOuter) Patch Decorate 72(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 72(gl_TessLevelInner) Patch Decorate 78(patchOut) Patch Decorate 78(patchOut) Location 0 Decorate 82(inb) Location 0 diff --git a/Test/baseResults/spv.400.tese.out b/Test/baseResults/spv.400.tese.out index 0b8abf668a..0bcfc1188f 100644 --- a/Test/baseResults/spv.400.tese.out +++ b/Test/baseResults/spv.400.tese.out @@ -52,21 +52,21 @@ spv.400.tese Name 91 "ivla" Name 92 "ivlb" Name 95 "ovla" + Decorate 17(gl_PerVertex) Block MemberDecorate 17(gl_PerVertex) 0 BuiltIn Position MemberDecorate 17(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 17(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 17(gl_PerVertex) Block Decorate 38(gl_PatchVerticesIn) BuiltIn PatchVertices Decorate 41(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 47(gl_TessCoord) BuiltIn TessCoord - Decorate 53(gl_TessLevelOuter) Patch Decorate 53(gl_TessLevelOuter) BuiltIn TessLevelOuter - Decorate 61(gl_TessLevelInner) Patch + Decorate 53(gl_TessLevelOuter) Patch Decorate 61(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 61(gl_TessLevelInner) Patch + Decorate 64(gl_PerVertex) Block MemberDecorate 64(gl_PerVertex) 0 BuiltIn Position MemberDecorate 64(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 64(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 64(gl_PerVertex) Block Decorate 75(patchIn) Patch Decorate 75(patchIn) Location 0 Decorate 79(inb) Location 1 diff --git a/Test/baseResults/spv.420.geom.out b/Test/baseResults/spv.420.geom.out index d814d1ae7b..8cd442053e 100644 --- a/Test/baseResults/spv.420.geom.out +++ b/Test/baseResults/spv.420.geom.out @@ -32,16 +32,16 @@ spv.420.geom Name 46 "coord" Name 64 "i" Name 67 "indexable" - MemberDecorate 9(gl_PerVertex) 0 BuiltIn PointSize Decorate 9(gl_PerVertex) Block - MemberDecorate 21(gl_PerVertex) 0 BuiltIn PointSize + MemberDecorate 9(gl_PerVertex) 0 BuiltIn PointSize Decorate 21(gl_PerVertex) Block + MemberDecorate 21(gl_PerVertex) 0 BuiltIn PointSize Decorate 23 Stream 0 - Decorate 28(gl_ViewportIndex) Stream 0 Decorate 28(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 28(gl_ViewportIndex) Stream 0 Decorate 33(gl_InvocationID) BuiltIn InvocationId - Decorate 41(s2D) DescriptorSet 0 Decorate 41(s2D) Binding 0 + Decorate 41(s2D) DescriptorSet 0 Decorate 46(coord) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.430.frag.out b/Test/baseResults/spv.430.frag.out index bc00fa13de..009f0638ea 100644 --- a/Test/baseResults/spv.430.frag.out +++ b/Test/baseResults/spv.430.frag.out @@ -16,10 +16,10 @@ spv.430.frag Name 14 "gl_Layer" Name 19 "gl_ViewportIndex" Decorate 9(color) Location 0 - Decorate 14(gl_Layer) Flat Decorate 14(gl_Layer) BuiltIn Layer - Decorate 19(gl_ViewportIndex) Flat + Decorate 14(gl_Layer) Flat Decorate 19(gl_ViewportIndex) BuiltIn ViewportIndex + Decorate 19(gl_ViewportIndex) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.430.vert.out b/Test/baseResults/spv.430.vert.out index eada8d05e5..8a75ae0a66 100644 --- a/Test/baseResults/spv.430.vert.out +++ b/Test/baseResults/spv.430.vert.out @@ -40,34 +40,34 @@ Validation failed Name 63 "MS" MemberName 63(MS) 0 "f" Name 65 "outMS" - MemberDecorate 10(gl_PerVertex) 0 BuiltIn ClipDistance Decorate 10(gl_PerVertex) Block + MemberDecorate 10(gl_PerVertex) 0 BuiltIn ClipDistance Decorate 23(bad) Location 0 Decorate 34(badorder3) Flat Decorate 34(badorder3) Location 1 Decorate 38(f) Location 11 Decorate 41(badorder) Location 10 - Decorate 42(badorder2) Location 0 Decorate 42(badorder2) Invariant - MemberDecorate 43(boundblock) 0 Offset 0 + Decorate 42(badorder2) Location 0 Decorate 43(boundblock) Block - Decorate 45(boundInst) DescriptorSet 0 + MemberDecorate 43(boundblock) 0 Offset 0 Decorate 45(boundInst) Binding 3 - MemberDecorate 46(anonblock) 0 Offset 0 + Decorate 45(boundInst) DescriptorSet 0 Decorate 46(anonblock) Block - Decorate 48 DescriptorSet 0 + MemberDecorate 46(anonblock) 0 Offset 0 Decorate 48 Binding 7 - Decorate 52(sampb1) DescriptorSet 0 + Decorate 48 DescriptorSet 0 Decorate 52(sampb1) Binding 4 - Decorate 55(sampb2) DescriptorSet 0 + Decorate 52(sampb1) DescriptorSet 0 Decorate 55(sampb2) Binding 5 - Decorate 56(sampb4) DescriptorSet 0 + Decorate 55(sampb2) DescriptorSet 0 Decorate 56(sampb4) Binding 31 + Decorate 56(sampb4) DescriptorSet 0 MemberDecorate 59(S) 0 RelaxedPrecision Decorate 62(var) Flat Decorate 62(var) Location 0 - MemberDecorate 63(MS) 0 Location 17 Decorate 63(MS) Block + MemberDecorate 63(MS) 0 Location 17 Decorate 65(outMS) Location 2 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.450.geom.out b/Test/baseResults/spv.450.geom.out index 5398b3c0cd..f2f9a0650f 100644 --- a/Test/baseResults/spv.450.geom.out +++ b/Test/baseResults/spv.450.geom.out @@ -29,16 +29,16 @@ spv.450.geom Name 20 "gl_in" Name 27 "gl_Layer" Name 29 "gl_ViewportIndex" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block + Decorate 16(gl_PerVertex) Block MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position MemberDecorate 16(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 16(gl_PerVertex) Block Decorate 27(gl_Layer) BuiltIn Layer Decorate 29(gl_ViewportIndex) BuiltIn ViewportIndex 2: TypeVoid diff --git a/Test/baseResults/spv.450.noRedecl.tesc.out b/Test/baseResults/spv.450.noRedecl.tesc.out index dcf0a9f90f..fb31be5f1f 100644 --- a/Test/baseResults/spv.450.noRedecl.tesc.out +++ b/Test/baseResults/spv.450.noRedecl.tesc.out @@ -18,11 +18,11 @@ spv.450.noRedecl.tesc MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 15 "gl_in" Name 20 "patchOut" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block Decorate 20(patchOut) Patch Decorate 20(patchOut) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.450.tesc.out b/Test/baseResults/spv.450.tesc.out index eabb9e7cda..bb5d55bd31 100644 --- a/Test/baseResults/spv.450.tesc.out +++ b/Test/baseResults/spv.450.tesc.out @@ -43,36 +43,36 @@ Validation failed MemberName 42(bn) 1 "v2" MemberName 42(bn) 2 "v3" Name 44 "" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block Decorate 18(gl_InvocationID) BuiltIn InvocationId + Decorate 21(gl_PerVertex) Block MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 21(gl_PerVertex) Block Decorate 32(patchOut) Patch Decorate 32(patchOut) Location 1 + Decorate 34(TheBlock) Block MemberDecorate 34(TheBlock) 0 Patch MemberDecorate 34(TheBlock) 1 Patch MemberDecorate 34(TheBlock) 2 Patch - Decorate 34(TheBlock) Block Decorate 38(tcBlock) Location 12 + Decorate 39(SingleBlock) Block MemberDecorate 39(SingleBlock) 0 Patch MemberDecorate 39(SingleBlock) 1 Patch MemberDecorate 39(SingleBlock) 2 Patch - Decorate 39(SingleBlock) Block Decorate 41(singleBlock) Location 2 + Decorate 42(bn) Block MemberDecorate 42(bn) 0 Patch MemberDecorate 42(bn) 0 Location 20 MemberDecorate 42(bn) 1 Patch MemberDecorate 42(bn) 1 Location 24 MemberDecorate 42(bn) 2 Patch MemberDecorate 42(bn) 2 Location 25 - Decorate 42(bn) Block Decorate 44 Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.460.frag.out b/Test/baseResults/spv.460.frag.out index 4201fbb809..e40e833f9d 100644 --- a/Test/baseResults/spv.460.frag.out +++ b/Test/baseResults/spv.460.frag.out @@ -15,9 +15,9 @@ spv.460.frag Name 4 "main" Name 8 "aui" Name 10 "ui" - Decorate 8(aui) Offset 0 - Decorate 8(aui) DescriptorSet 0 Decorate 8(aui) Binding 0 + Decorate 8(aui) DescriptorSet 0 + Decorate 8(aui) Offset 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.460.subgroupEXT.mesh.out b/Test/baseResults/spv.460.subgroupEXT.mesh.out index f41895fd4b..112d50d294 100644 --- a/Test/baseResults/spv.460.subgroupEXT.mesh.out +++ b/Test/baseResults/spv.460.subgroupEXT.mesh.out @@ -79,20 +79,20 @@ spv.460.subgroupEXT.mesh Name 253 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 54(gl_MeshPerVertexEXT) Block MemberDecorate 54(gl_MeshPerVertexEXT) 0 BuiltIn Position MemberDecorate 54(gl_MeshPerVertexEXT) 1 BuiltIn PointSize MemberDecorate 54(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance MemberDecorate 54(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance - Decorate 54(gl_MeshPerVertexEXT) Block - MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + Decorate 106(gl_MeshPerPrimitiveEXT) Block MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId - MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer - MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex - MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT - Decorate 106(gl_MeshPerPrimitiveEXT) Block + MemberDecorate 106(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV Decorate 147(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 161(gl_SubgroupSize) RelaxedPrecision Decorate 161(gl_SubgroupSize) BuiltIn SubgroupSize diff --git a/Test/baseResults/spv.460.subgroupEXT.task.out b/Test/baseResults/spv.460.subgroupEXT.task.out index efe30b75a1..4424b2acfb 100644 --- a/Test/baseResults/spv.460.subgroupEXT.task.out +++ b/Test/baseResults/spv.460.subgroupEXT.task.out @@ -70,13 +70,13 @@ spv.460.subgroupEXT.task Name 216 "ballot" Decorate 35(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 41(gl_WorkGroupID) BuiltIn WorkgroupId - MemberDecorate 59(block0) 0 Offset 0 Decorate 59(block0) Block - Decorate 61 DescriptorSet 0 + MemberDecorate 59(block0) 0 Offset 0 Decorate 61 Binding 1 - Decorate 77(uni_image) DescriptorSet 0 - Decorate 77(uni_image) Binding 0 + Decorate 61 DescriptorSet 0 Decorate 77(uni_image) NonReadable + Decorate 77(uni_image) Binding 0 + Decorate 77(uni_image) DescriptorSet 0 Decorate 123(gl_SubgroupSize) RelaxedPrecision Decorate 123(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 124(gl_SubgroupInvocationID) RelaxedPrecision diff --git a/Test/baseResults/spv.8bit-16bit-construction.frag.out b/Test/baseResults/spv.8bit-16bit-construction.frag.out index 9a85a6ac73..78e941a21d 100644 --- a/Test/baseResults/spv.8bit-16bit-construction.frag.out +++ b/Test/baseResults/spv.8bit-16bit-construction.frag.out @@ -24,14 +24,14 @@ Validation failed MemberName 11(B) 3 "u16_from_u8" MemberName 11(B) 4 "f16_from_i8" Name 13 "" + Decorate 11(B) BufferBlock MemberDecorate 11(B) 0 Offset 0 MemberDecorate 11(B) 1 Offset 2 MemberDecorate 11(B) 2 Offset 4 MemberDecorate 11(B) 3 Offset 6 MemberDecorate 11(B) 4 Offset 8 - Decorate 11(B) BufferBlock - Decorate 13 DescriptorSet 0 Decorate 13 Binding 0 + Decorate 13 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 diff --git a/Test/baseResults/spv.8bitstorage-int.frag.out b/Test/baseResults/spv.8bitstorage-int.frag.out index 25db1d86de..a40e2c1dec 100644 --- a/Test/baseResults/spv.8bitstorage-int.frag.out +++ b/Test/baseResults/spv.8bitstorage-int.frag.out @@ -82,6 +82,7 @@ spv.8bitstorage-int.frag Decorate 13 ArrayStride 8 Decorate 15 ArrayStride 2 Decorate 16 ArrayStride 1 + Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 2 MemberDecorate 17(B2) 2 Offset 4 @@ -90,14 +91,14 @@ spv.8bitstorage-int.frag MemberDecorate 17(B2) 5 Offset 20 MemberDecorate 17(B2) 6 Offset 36 MemberDecorate 17(B2) 7 Offset 236 - Decorate 17(B2) BufferBlock - Decorate 19(b2) DescriptorSet 0 Decorate 19(b2) Binding 1 + Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 2 MemberDecorate 23(S) 2 Offset 4 Decorate 24 ArrayStride 16 + Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 2 MemberDecorate 25(B1) 2 Offset 4 @@ -105,9 +106,8 @@ spv.8bitstorage-int.frag MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 - Decorate 25(B1) Block - Decorate 27(b1) DescriptorSet 0 Decorate 27(b1) Binding 0 + Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 2 @@ -115,6 +115,7 @@ spv.8bitstorage-int.frag Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 + Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 2 MemberDecorate 49(B5) 2 Offset 4 @@ -123,29 +124,28 @@ spv.8bitstorage-int.frag MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 - Decorate 49(B5) Block - Decorate 51(b5) DescriptorSet 0 Decorate 51(b5) Binding 2 + Decorate 51(b5) DescriptorSet 0 MemberDecorate 88(S2) 0 ColMajor - MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 0 MatrixStride 16 + MemberDecorate 88(S2) 0 Offset 0 MemberDecorate 88(S2) 1 Offset 64 MemberDecorate 88(S2) 2 Offset 68 MemberDecorate 89(S3) 0 Offset 0 + Decorate 90(B4) BufferBlock MemberDecorate 90(B4) 0 Offset 0 MemberDecorate 90(B4) 1 Offset 80 - Decorate 90(B4) BufferBlock - Decorate 92(b4) DescriptorSet 0 Decorate 92(b4) Binding 4 + Decorate 92(b4) DescriptorSet 0 MemberDecorate 93(S2) 0 RowMajor - MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 0 MatrixStride 16 + MemberDecorate 93(S2) 0 Offset 0 MemberDecorate 93(S2) 1 Offset 64 MemberDecorate 93(S2) 2 Offset 68 - MemberDecorate 94(B3) 0 Offset 0 Decorate 94(B3) BufferBlock - Decorate 96(b3) DescriptorSet 0 + MemberDecorate 94(B3) 0 Offset 0 Decorate 96(b3) Binding 3 + Decorate 96(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 1 diff --git a/Test/baseResults/spv.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.8bitstorage-ssbo.vert.out index e8e9ca35df..19e7d43343 100644 --- a/Test/baseResults/spv.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ssbo.vert.out @@ -19,11 +19,11 @@ spv.8bitstorage-ssbo.vert Name 18 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 11 ArrayStride 1 + Decorate 12(Vertices) BufferBlock MemberDecorate 12(Vertices) 0 NonWritable MemberDecorate 12(Vertices) 0 Offset 0 - Decorate 12(Vertices) BufferBlock - Decorate 14 DescriptorSet 0 Decorate 14 Binding 0 + Decorate 14 DescriptorSet 0 Decorate 18(gl_VertexIndex) BuiltIn VertexIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.8bitstorage-ubo.vert.out b/Test/baseResults/spv.8bitstorage-ubo.vert.out index f41f63eeec..7dd1e32aaf 100644 --- a/Test/baseResults/spv.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ubo.vert.out @@ -19,10 +19,10 @@ spv.8bitstorage-ubo.vert Name 20 "gl_VertexIndex" Decorate 9(color) Location 0 Decorate 13 ArrayStride 16 - MemberDecorate 14(Vertices) 0 Offset 0 Decorate 14(Vertices) Block - Decorate 16 DescriptorSet 0 + MemberDecorate 14(Vertices) 0 Offset 0 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 Decorate 20(gl_VertexIndex) BuiltIn VertexIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.8bitstorage-uint.frag.out b/Test/baseResults/spv.8bitstorage-uint.frag.out index d89756b2fa..a90edf12d9 100644 --- a/Test/baseResults/spv.8bitstorage-uint.frag.out +++ b/Test/baseResults/spv.8bitstorage-uint.frag.out @@ -82,6 +82,7 @@ spv.8bitstorage-uint.frag Decorate 13 ArrayStride 8 Decorate 15 ArrayStride 2 Decorate 16 ArrayStride 1 + Decorate 17(B2) BufferBlock MemberDecorate 17(B2) 0 Offset 0 MemberDecorate 17(B2) 1 Offset 2 MemberDecorate 17(B2) 2 Offset 4 @@ -90,14 +91,14 @@ spv.8bitstorage-uint.frag MemberDecorate 17(B2) 5 Offset 20 MemberDecorate 17(B2) 6 Offset 36 MemberDecorate 17(B2) 7 Offset 236 - Decorate 17(B2) BufferBlock - Decorate 19(b2) DescriptorSet 0 Decorate 19(b2) Binding 1 + Decorate 19(b2) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 MemberDecorate 23(S) 1 Offset 2 MemberDecorate 23(S) 2 Offset 4 Decorate 24 ArrayStride 16 + Decorate 25(B1) Block MemberDecorate 25(B1) 0 Offset 0 MemberDecorate 25(B1) 1 Offset 2 MemberDecorate 25(B1) 2 Offset 4 @@ -105,9 +106,8 @@ spv.8bitstorage-uint.frag MemberDecorate 25(B1) 4 Offset 48 MemberDecorate 25(B1) 5 Offset 64 MemberDecorate 25(B1) 6 Offset 96 - Decorate 25(B1) Block - Decorate 27(b1) DescriptorSet 0 Decorate 27(b1) Binding 0 + Decorate 27(b1) DescriptorSet 0 Decorate 44 ArrayStride 16 MemberDecorate 45(S) 0 Offset 0 MemberDecorate 45(S) 1 Offset 2 @@ -115,6 +115,7 @@ spv.8bitstorage-uint.frag Decorate 46 ArrayStride 16 Decorate 47 ArrayStride 16 Decorate 48 ArrayStride 16 + Decorate 49(B5) Block MemberDecorate 49(B5) 0 Offset 0 MemberDecorate 49(B5) 1 Offset 2 MemberDecorate 49(B5) 2 Offset 4 @@ -123,29 +124,28 @@ spv.8bitstorage-uint.frag MemberDecorate 49(B5) 5 Offset 64 MemberDecorate 49(B5) 6 Offset 96 MemberDecorate 49(B5) 7 Offset 1696 - Decorate 49(B5) Block - Decorate 51(b5) DescriptorSet 0 Decorate 51(b5) Binding 2 + Decorate 51(b5) DescriptorSet 0 MemberDecorate 89(S2) 0 ColMajor - MemberDecorate 89(S2) 0 Offset 0 MemberDecorate 89(S2) 0 MatrixStride 16 + MemberDecorate 89(S2) 0 Offset 0 MemberDecorate 89(S2) 1 Offset 64 MemberDecorate 89(S2) 2 Offset 68 MemberDecorate 90(S3) 0 Offset 0 + Decorate 91(B4) BufferBlock MemberDecorate 91(B4) 0 Offset 0 MemberDecorate 91(B4) 1 Offset 80 - Decorate 91(B4) BufferBlock - Decorate 93(b4) DescriptorSet 0 Decorate 93(b4) Binding 4 + Decorate 93(b4) DescriptorSet 0 MemberDecorate 94(S2) 0 RowMajor - MemberDecorate 94(S2) 0 Offset 0 MemberDecorate 94(S2) 0 MatrixStride 16 + MemberDecorate 94(S2) 0 Offset 0 MemberDecorate 94(S2) 1 Offset 64 MemberDecorate 94(S2) 2 Offset 68 - MemberDecorate 95(B3) 0 Offset 0 Decorate 95(B3) BufferBlock - Decorate 97(b3) DescriptorSet 0 + MemberDecorate 95(B3) 0 Offset 0 Decorate 97(b3) Binding 3 + Decorate 97(b3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 8 0 diff --git a/Test/baseResults/spv.ARMCoreBuiltIns.frag.out b/Test/baseResults/spv.ARMCoreBuiltIns.frag.out index ccfb40936e..6da6921bea 100644 --- a/Test/baseResults/spv.ARMCoreBuiltIns.frag.out +++ b/Test/baseResults/spv.ARMCoreBuiltIns.frag.out @@ -20,17 +20,17 @@ spv.ARMCoreBuiltIns.frag Name 17 "gl_CoreCountARM" Name 19 "gl_CoreMaxIDARM" Name 21 "gl_WarpIDARM" - Decorate 10(gl_WarpMaxIDARM) Flat Decorate 10(gl_WarpMaxIDARM) BuiltIn BuiltInWarpMaxIDARM + Decorate 10(gl_WarpMaxIDARM) Flat Decorate 14(data) Location 0 - Decorate 15(gl_CoreIDARM) Flat Decorate 15(gl_CoreIDARM) BuiltIn CoreIDARM - Decorate 17(gl_CoreCountARM) Flat + Decorate 15(gl_CoreIDARM) Flat Decorate 17(gl_CoreCountARM) BuiltIn CoreCountARM - Decorate 19(gl_CoreMaxIDARM) Flat + Decorate 17(gl_CoreCountARM) Flat Decorate 19(gl_CoreMaxIDARM) BuiltIn CoreMaxIDARM - Decorate 21(gl_WarpIDARM) Flat + Decorate 19(gl_CoreMaxIDARM) Flat Decorate 21(gl_WarpIDARM) BuiltIn WarpIDARM + Decorate 21(gl_WarpIDARM) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ARMCoreBuiltIns.vert.out b/Test/baseResults/spv.ARMCoreBuiltIns.vert.out index 5419be4541..e1503addc9 100644 --- a/Test/baseResults/spv.ARMCoreBuiltIns.vert.out +++ b/Test/baseResults/spv.ARMCoreBuiltIns.vert.out @@ -22,10 +22,10 @@ spv.ARMCoreBuiltIns.vert Name 22 "gl_CoreMaxIDARM" Name 24 "gl_WarpIDARM" Decorate 10(gl_WarpMaxIDARM) BuiltIn BuiltInWarpMaxIDARM - MemberDecorate 13(Output) 0 Offset 0 Decorate 13(Output) BufferBlock - Decorate 15 DescriptorSet 0 + MemberDecorate 13(Output) 0 Offset 0 Decorate 15 Binding 0 + Decorate 15 DescriptorSet 0 Decorate 18(gl_CoreIDARM) BuiltIn CoreIDARM Decorate 20(gl_CoreCountARM) BuiltIn CoreCountARM Decorate 22(gl_CoreMaxIDARM) BuiltIn CoreMaxIDARM diff --git a/Test/baseResults/spv.AofA.frag.out b/Test/baseResults/spv.AofA.frag.out index b2df36a625..9c5a014a43 100644 --- a/Test/baseResults/spv.AofA.frag.out +++ b/Test/baseResults/spv.AofA.frag.out @@ -41,10 +41,10 @@ Validation failed Decorate 78(infloat) Location 0 Decorate 92 ArrayStride 16 Decorate 93 ArrayStride 64 - MemberDecorate 94(uAofA) 0 Offset 0 Decorate 94(uAofA) Block - Decorate 98(nameAofA) DescriptorSet 0 + MemberDecorate 94(uAofA) 0 Offset 0 Decorate 98(nameAofA) Binding 0 + Decorate 98(nameAofA) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.ClosestHitShader.rchit.out b/Test/baseResults/spv.ClosestHitShader.rchit.out index a84ef23ea7..af0f80fcaf 100644 --- a/Test/baseResults/spv.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ClosestHitShader.rchit.out @@ -57,8 +57,8 @@ spv.ClosestHitShader.rchit Decorate 57(gl_HitKindNV) BuiltIn HitKindKHR Decorate 63(gl_ObjectToWorldNV) BuiltIn ObjectToWorldKHR Decorate 66(gl_WorldToObjectNV) BuiltIn WorldToObjectKHR - Decorate 70(accNV) DescriptorSet 0 Decorate 70(accNV) Binding 0 + Decorate 70(accNV) DescriptorSet 0 Decorate 84(localPayload) Location 0 Decorate 86(incomingPayload) Location 1 2: TypeVoid diff --git a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out index e20df80a94..846151f058 100644 --- a/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out +++ b/Test/baseResults/spv.ClosestHitShaderMotion.rchit.out @@ -19,8 +19,8 @@ spv.ClosestHitShaderMotion.rchit Name 16 "accEXT" Name 32 "incomingPayloadEXT" Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV - Decorate 16(accEXT) DescriptorSet 0 Decorate 16(accEXT) Binding 0 + Decorate 16(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out index 57fa6911b9..f4e1a9fa62 100644 --- a/Test/baseResults/spv.GeometryShaderPassthrough.geom.out +++ b/Test/baseResults/spv.GeometryShaderPassthrough.geom.out @@ -23,8 +23,8 @@ spv.GeometryShaderPassthrough.geom MemberName 12(Inputs) 0 "texcoord" MemberName 12(Inputs) 1 "baseColor" Name 14 "" - MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position Decorate 8(gl_PerVertex) Block + MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position Decorate 10 PassthroughNV Decorate 12(Inputs) Block Decorate 14 Location 0 diff --git a/Test/baseResults/spv.MissShader.rmiss.out b/Test/baseResults/spv.MissShader.rmiss.out index 581c0c6b9f..d0f381e30d 100644 --- a/Test/baseResults/spv.MissShader.rmiss.out +++ b/Test/baseResults/spv.MissShader.rmiss.out @@ -35,8 +35,8 @@ spv.MissShader.rmiss Decorate 29(gl_IncomingRayFlagsNV) BuiltIn IncomingRayFlagsKHR Decorate 34(gl_RayTminNV) BuiltIn RayTminKHR Decorate 37(gl_RayTmaxNV) BuiltIn RayTmaxKHR - Decorate 41(accNV) DescriptorSet 0 Decorate 41(accNV) Binding 0 + Decorate 41(accNV) DescriptorSet 0 Decorate 56(localPayload) Location 0 Decorate 58(incomingPayload) Location 1 2: TypeVoid diff --git a/Test/baseResults/spv.MissShaderMotion.rmiss.out b/Test/baseResults/spv.MissShaderMotion.rmiss.out index 220dda9942..455f343f97 100644 --- a/Test/baseResults/spv.MissShaderMotion.rmiss.out +++ b/Test/baseResults/spv.MissShaderMotion.rmiss.out @@ -19,8 +19,8 @@ spv.MissShaderMotion.rmiss Name 16 "accEXT" Name 32 "localPayloadEXT" Decorate 10(gl_CurrentRayTimeNV) BuiltIn CurrentRayTimeNV - Decorate 16(accEXT) DescriptorSet 0 Decorate 16(accEXT) Binding 0 + Decorate 16(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.OVR_multiview.vert.out b/Test/baseResults/spv.OVR_multiview.vert.out index df7d949914..1eeae2a17c 100644 --- a/Test/baseResults/spv.OVR_multiview.vert.out +++ b/Test/baseResults/spv.OVR_multiview.vert.out @@ -20,10 +20,10 @@ spv.OVR_multiview.vert Name 17 "gl_ViewID_OVR" Name 25 "gl_VertexID" Name 26 "gl_InstanceID" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 11(gl_PerVertex) Block Decorate 17(gl_ViewID_OVR) BuiltIn ViewIndex Decorate 25(gl_VertexID) BuiltIn VertexId Decorate 26(gl_InstanceID) BuiltIn InstanceId diff --git a/Test/baseResults/spv.RayConstants.rgen.out b/Test/baseResults/spv.RayConstants.rgen.out index ebdcb50bc5..fb503c939b 100644 --- a/Test/baseResults/spv.RayConstants.rgen.out +++ b/Test/baseResults/spv.RayConstants.rgen.out @@ -13,8 +13,8 @@ spv.RayConstants.rgen Name 4 "main" Name 8 "accNV" Name 26 "payload" - Decorate 8(accNV) DescriptorSet 0 Decorate 8(accNV) Binding 0 + Decorate 8(accNV) DescriptorSet 0 Decorate 26(payload) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.RayGenShader.rgen.out b/Test/baseResults/spv.RayGenShader.rgen.out index 01fdbf0182..76bc1f62ba 100644 --- a/Test/baseResults/spv.RayGenShader.rgen.out +++ b/Test/baseResults/spv.RayGenShader.rgen.out @@ -26,13 +26,13 @@ spv.RayGenShader.rgen Name 53 "payload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR - Decorate 29(accNV0) DescriptorSet 0 Decorate 29(accNV0) Binding 0 + Decorate 29(accNV0) DescriptorSet 0 + Decorate 37(block) BufferBlock MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 - Decorate 37(block) BufferBlock - Decorate 50(accNV1) DescriptorSet 0 Decorate 50(accNV1) Binding 1 + Decorate 50(accNV1) DescriptorSet 0 Decorate 53(payload) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.RayGenShader11.rgen.out b/Test/baseResults/spv.RayGenShader11.rgen.out index ae55e6589d..3709388935 100644 --- a/Test/baseResults/spv.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.RayGenShader11.rgen.out @@ -25,11 +25,11 @@ spv.RayGenShader11.rgen Name 52 "payload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR - Decorate 29(accNV) DescriptorSet 0 Decorate 29(accNV) Binding 0 + Decorate 29(accNV) DescriptorSet 0 + Decorate 37(block) Block MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 - Decorate 37(block) Block Decorate 52(payload) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.RayGenShaderArray.rgen.out b/Test/baseResults/spv.RayGenShaderArray.rgen.out index c3bd191130..ddb2f6bba6 100644 --- a/Test/baseResults/spv.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.RayGenShaderArray.rgen.out @@ -31,14 +31,14 @@ spv.RayGenShaderArray.rgen Name 88 "payload" Decorate 11(gl_LaunchIDNV) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeNV) BuiltIn LaunchSizeKHR - Decorate 30(accNV0) DescriptorSet 0 Decorate 30(accNV0) Binding 0 + Decorate 30(accNV0) DescriptorSet 0 + Decorate 34(block) BufferBlock MemberDecorate 34(block) 0 Offset 0 MemberDecorate 34(block) 1 Offset 16 MemberDecorate 34(block) 2 Offset 28 - Decorate 34(block) BufferBlock - Decorate 60(accNV1) DescriptorSet 0 Decorate 60(accNV1) Binding 1 + Decorate 60(accNV1) DescriptorSet 0 Decorate 75 DecorationNonUniformEXT Decorate 76 DecorationNonUniformEXT Decorate 77 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.RayGenShaderMotion.rgen.out b/Test/baseResults/spv.RayGenShaderMotion.rgen.out index 9a3421ca55..095067574e 100644 --- a/Test/baseResults/spv.RayGenShaderMotion.rgen.out +++ b/Test/baseResults/spv.RayGenShaderMotion.rgen.out @@ -24,8 +24,8 @@ spv.RayGenShaderMotion.rgen Name 46 "payloadEXT" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR - Decorate 29(accEXT) DescriptorSet 0 Decorate 29(accEXT) Binding 0 + Decorate 29(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out index 4001462d17..e5496d320c 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp.out @@ -21,9 +21,9 @@ spv.WorkgroupMemoryExplicitLayout.16BitAccess.comp MemberName 8(first) 0 "a" MemberName 8(first) 1 "f" Name 10 "" + Decorate 8(first) Block MemberDecorate 8(first) 0 Offset 0 MemberDecorate 8(first) 1 Offset 2 - Decorate 8(first) Block Decorate 24 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out index d0906a4211..a3f16954b8 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp.out @@ -19,8 +19,8 @@ spv.WorkgroupMemoryExplicitLayout.8BitAccess.comp Name 7 "first" MemberName 7(first) 0 "a" Name 9 "" - MemberDecorate 7(first) 0 Offset 0 Decorate 7(first) Block + MemberDecorate 7(first) 0 Offset 0 Decorate 19 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out index 2a15286e96..33cae8b54c 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp.out @@ -19,13 +19,13 @@ spv.WorkgroupMemoryExplicitLayout.MultiBlock.comp Name 14 "second" MemberName 14(second) 0 "b" Name 16 "" - MemberDecorate 7(first) 0 Offset 0 Decorate 7(first) Block - MemberDecorate 14(second) 0 Offset 0 - Decorate 14(second) Block - Decorate 23 BuiltIn WorkgroupSize + MemberDecorate 7(first) 0 Offset 0 Decorate 9 Aliased + Decorate 14(second) Block + MemberDecorate 14(second) 0 Offset 0 Decorate 16 Aliased + Decorate 23 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out index cb3bd31a6a..2d484770e7 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp.out @@ -16,8 +16,8 @@ spv.WorkgroupMemoryExplicitLayout.SingleBlock.comp Name 7 "first" MemberName 7(first) 0 "a" Name 9 "" - MemberDecorate 7(first) 0 Offset 0 Decorate 7(first) Block + MemberDecorate 7(first) 0 Offset 0 Decorate 18 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out index 3d7ece13a2..a651b6352b 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.scalar.comp.out @@ -50,9 +50,9 @@ spv.WorkgroupMemoryExplicitLayout.scalar.comp MemberDecorate 24(S) 8 Offset 196 MemberDecorate 24(S) 9 Offset 292 Decorate 25 ArrayStride 364 + Decorate 26(Block) Block MemberDecorate 26(Block) 0 Offset 0 MemberDecorate 26(Block) 1 Offset 364 - Decorate 26(Block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out index 5c8f86d25c..bc8a5f64aa 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std140.comp.out @@ -49,9 +49,9 @@ spv.WorkgroupMemoryExplicitLayout.std140.comp MemberDecorate 24(S) 8 Offset 384 MemberDecorate 24(S) 9 Offset 480 Decorate 25 ArrayStride 768 + Decorate 26(Block) Block MemberDecorate 26(Block) 0 Offset 0 MemberDecorate 26(Block) 1 Offset 768 - Decorate 26(Block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out index bfc35e98dc..a60209d93b 100644 --- a/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out +++ b/Test/baseResults/spv.WorkgroupMemoryExplicitLayout.std430.comp.out @@ -49,9 +49,9 @@ spv.WorkgroupMemoryExplicitLayout.std430.comp MemberDecorate 24(S) 8 Offset 240 MemberDecorate 24(S) 9 Offset 336 Decorate 25 ArrayStride 416 + Decorate 26(Block) Block MemberDecorate 26(Block) 0 Offset 0 MemberDecorate 26(Block) 1 Offset 416 - Decorate 26(Block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.aggOps.frag.out b/Test/baseResults/spv.aggOps.frag.out index bc19f23f55..475279964e 100644 --- a/Test/baseResults/spv.aggOps.frag.out +++ b/Test/baseResults/spv.aggOps.frag.out @@ -51,21 +51,21 @@ WARNING: 0:4: '' : all default precisions are highp; use precision statements to MemberDecorate 56(s2) 0 Offset 0 MemberDecorate 56(s2) 1 Offset 4 MemberDecorate 56(s2) 2 Offset 16 - MemberDecorate 57(ub1) 0 Offset 0 Decorate 57(ub1) Block - Decorate 59(uName1) DescriptorSet 0 + MemberDecorate 57(ub1) 0 Offset 0 Decorate 59(uName1) Binding 1 + Decorate 59(uName1) DescriptorSet 0 MemberDecorate 64(s1) 0 Offset 0 MemberDecorate 64(s1) 1 Offset 4 MemberDecorate 65(s2) 0 Offset 0 MemberDecorate 65(s2) 1 Offset 4 MemberDecorate 65(s2) 2 Offset 8 - MemberDecorate 66(ub2) 0 Offset 0 Decorate 66(ub2) BufferBlock - Decorate 68(uName2) DescriptorSet 0 + MemberDecorate 66(ub2) 0 Offset 0 Decorate 68(uName2) Binding 2 - Decorate 97(samp2D) DescriptorSet 0 + Decorate 68(uName2) DescriptorSet 0 Decorate 97(samp2D) Binding 0 + Decorate 97(samp2D) DescriptorSet 0 Decorate 101(coord) RelaxedPrecision Decorate 101(coord) Location 0 Decorate 102 RelaxedPrecision diff --git a/Test/baseResults/spv.arbPostDepthCoverage.frag.out b/Test/baseResults/spv.arbPostDepthCoverage.frag.out index 5daa156d48..a36b9ee40e 100644 --- a/Test/baseResults/spv.arbPostDepthCoverage.frag.out +++ b/Test/baseResults/spv.arbPostDepthCoverage.frag.out @@ -19,8 +19,8 @@ spv.arbPostDepthCoverage.frag Name 8 "readSampleMaskIn" Name 13 "gl_SampleMaskIn" Decorate 8(readSampleMaskIn) Location 0 - Decorate 13(gl_SampleMaskIn) Flat Decorate 13(gl_SampleMaskIn) BuiltIn SampleMask + Decorate 13(gl_SampleMaskIn) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.atomiAddEXT.task.out b/Test/baseResults/spv.atomiAddEXT.task.out index 9ff35aa6eb..bf93724023 100644 --- a/Test/baseResults/spv.atomiAddEXT.task.out +++ b/Test/baseResults/spv.atomiAddEXT.task.out @@ -23,17 +23,17 @@ spv.atomiAddEXT.task Name 26 "taskBlock" MemberName 26(taskBlock) 0 "atom1" Name 28 "mytask" + Decorate 7(Buffer) Block MemberDecorate 7(Buffer) 0 Coherent MemberDecorate 7(Buffer) 0 Offset 0 - Decorate 7(Buffer) Block - Decorate 9 DescriptorSet 0 Decorate 9 Binding 1 + Decorate 9 DescriptorSet 0 Decorate 19 ArrayStride 4 MemberDecorate 20(structType) 0 Offset 0 - MemberDecorate 21(t2) 0 Offset 0 Decorate 21(t2) Block - Decorate 23(t) DescriptorSet 0 + MemberDecorate 21(t2) 0 Offset 0 Decorate 23(t) Binding 0 + Decorate 23(t) DescriptorSet 0 Decorate 33 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out index 7c001ae188..53548089f5 100644 --- a/Test/baseResults/spv.atomic.comp.out +++ b/Test/baseResults/spv.atomic.comp.out @@ -29,19 +29,19 @@ spv.atomic.comp Name 71 "arrX" Name 72 "arrY" Name 73 "arrZ" - Decorate 20(counter) Offset 0 - Decorate 20(counter) DescriptorSet 0 Decorate 20(counter) Binding 0 - Decorate 27(countArr) Offset 4 - Decorate 27(countArr) DescriptorSet 0 + Decorate 20(counter) DescriptorSet 0 + Decorate 20(counter) Offset 0 Decorate 27(countArr) Binding 0 + Decorate 27(countArr) DescriptorSet 0 + Decorate 27(countArr) Offset 4 + Decorate 62(dataSSB) BufferBlock MemberDecorate 62(dataSSB) 0 Restrict MemberDecorate 62(dataSSB) 0 Offset 0 MemberDecorate 62(dataSSB) 1 Restrict MemberDecorate 62(dataSSB) 1 Offset 16 - Decorate 62(dataSSB) BufferBlock - Decorate 64(result) DescriptorSet 0 Decorate 64(result) Binding 0 + Decorate 64(result) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.atomicAdd.bufferReference.comp.out b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out index a00c45a3f3..31edb5e977 100644 --- a/Test/baseResults/spv.atomicAdd.bufferReference.comp.out +++ b/Test/baseResults/spv.atomicAdd.bufferReference.comp.out @@ -56,25 +56,25 @@ spv.atomicAdd.bufferReference.comp MemberName 179(Fail) 0 "x" Name 181 "fail" Decorate 17 ArrayStride 4 - MemberDecorate 18(PayloadRef) 0 Offset 0 Decorate 18(PayloadRef) Block + MemberDecorate 18(PayloadRef) 0 Offset 0 Decorate 20(payload) DecorationAliasedPointerEXT + Decorate 22(PC) Block MemberDecorate 22(PC) 0 Offset 0 MemberDecorate 22(PC) 1 Offset 8 - Decorate 22(PC) Block Decorate 23 ArrayStride 4 - MemberDecorate 24(GuardRef) 0 Offset 0 Decorate 24(GuardRef) Block + MemberDecorate 24(GuardRef) 0 Offset 0 Decorate 37(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 43(DIM) SpecId 0 Decorate 44(NUM_WORKGROUP_EACH_DIM) SpecId 1 Decorate 81(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 133(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 178 ArrayStride 4 - MemberDecorate 179(Fail) 0 Offset 0 Decorate 179(Fail) Block - Decorate 181(fail) DescriptorSet 0 + MemberDecorate 179(Fail) 0 Offset 0 Decorate 181(fail) Binding 2 + Decorate 181(fail) DescriptorSet 0 Decorate 185 SpecId 0 Decorate 186 SpecId 0 Decorate 187 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.atomicFloat.comp.out b/Test/baseResults/spv.atomicFloat.comp.out index acb5d817b5..c7b8f48918 100644 --- a/Test/baseResults/spv.atomicFloat.comp.out +++ b/Test/baseResults/spv.atomicFloat.comp.out @@ -38,35 +38,35 @@ spv.atomicFloat.comp Name 352 "fimageCube" Name 392 "fimageCubeArray" Name 430 "fimage3D" + Decorate 25(Buffer) BufferBlock MemberDecorate 25(Buffer) 0 Offset 0 MemberDecorate 25(Buffer) 1 Offset 8 - Decorate 25(Buffer) BufferBlock - Decorate 27(buf) DescriptorSet 0 Decorate 27(buf) Binding 0 + Decorate 27(buf) DescriptorSet 0 Decorate 143(fimage1D) Location 0 - Decorate 143(fimage1D) DescriptorSet 0 Decorate 143(fimage1D) Binding 0 + Decorate 143(fimage1D) DescriptorSet 0 Decorate 189(fimage1DArray) Location 1 - Decorate 189(fimage1DArray) DescriptorSet 0 Decorate 189(fimage1DArray) Binding 1 + Decorate 189(fimage1DArray) DescriptorSet 0 Decorate 232(fimage2D) Location 2 - Decorate 232(fimage2D) DescriptorSet 0 Decorate 232(fimage2D) Binding 2 + Decorate 232(fimage2D) DescriptorSet 0 Decorate 270(fimage2DRect) Location 4 - Decorate 270(fimage2DRect) DescriptorSet 0 Decorate 270(fimage2DRect) Binding 4 + Decorate 270(fimage2DRect) DescriptorSet 0 Decorate 308(fimage2DArray) Location 3 - Decorate 308(fimage2DArray) DescriptorSet 0 Decorate 308(fimage2DArray) Binding 3 + Decorate 308(fimage2DArray) DescriptorSet 0 Decorate 352(fimageCube) Location 5 - Decorate 352(fimageCube) DescriptorSet 0 Decorate 352(fimageCube) Binding 5 + Decorate 352(fimageCube) DescriptorSet 0 Decorate 392(fimageCubeArray) Location 6 - Decorate 392(fimageCubeArray) DescriptorSet 0 Decorate 392(fimageCubeArray) Binding 6 + Decorate 392(fimageCubeArray) DescriptorSet 0 Decorate 430(fimage3D) Location 7 - Decorate 430(fimage3D) DescriptorSet 0 Decorate 430(fimage3D) Binding 9 + Decorate 430(fimage3D) DescriptorSet 0 Decorate 469 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.atomicInt64.comp.out b/Test/baseResults/spv.atomicInt64.comp.out index 24805cccc0..2464e50648 100644 --- a/Test/baseResults/spv.atomicInt64.comp.out +++ b/Test/baseResults/spv.atomicInt64.comp.out @@ -24,11 +24,11 @@ spv.atomicInt64.comp MemberName 84(Struct) 0 "i64" MemberName 84(Struct) 1 "u64" Name 86 "s" + Decorate 14(Buffer) BufferBlock MemberDecorate 14(Buffer) 0 Offset 0 MemberDecorate 14(Buffer) 1 Offset 8 - Decorate 14(Buffer) BufferBlock - Decorate 16(buf) DescriptorSet 0 Decorate 16(buf) Binding 0 + Decorate 16(buf) DescriptorSet 0 Decorate 148 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.atomicStoreInt64.comp.out b/Test/baseResults/spv.atomicStoreInt64.comp.out index c2b3f30d7f..9114bc3497 100644 --- a/Test/baseResults/spv.atomicStoreInt64.comp.out +++ b/Test/baseResults/spv.atomicStoreInt64.comp.out @@ -21,14 +21,14 @@ spv.atomicStoreInt64.comp Name 14 "ubo" MemberName 14(ubo) 0 "z" Name 16 "" - MemberDecorate 7(ssbo) 0 Offset 0 Decorate 7(ssbo) BufferBlock - Decorate 9 DescriptorSet 0 + MemberDecorate 7(ssbo) 0 Offset 0 Decorate 9 Binding 0 - MemberDecorate 14(ubo) 0 Offset 0 + Decorate 9 DescriptorSet 0 Decorate 14(ubo) Block - Decorate 16 DescriptorSet 0 + MemberDecorate 14(ubo) 0 Offset 0 Decorate 16 Binding 1 + Decorate 16 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 0 diff --git a/Test/baseResults/spv.bool.vert.out b/Test/baseResults/spv.bool.vert.out index 265d9007f5..dbab6986a9 100644 --- a/Test/baseResults/spv.bool.vert.out +++ b/Test/baseResults/spv.bool.vert.out @@ -21,15 +21,15 @@ spv.bool.vert MemberName 27(ubname) 0 "b" Name 29 "ubinst" Name 30 "param" + Decorate 22(gl_PerVertex) Block MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 22(gl_PerVertex) Block - MemberDecorate 27(ubname) 0 Offset 0 Decorate 27(ubname) Block - Decorate 29(ubinst) DescriptorSet 0 + MemberDecorate 27(ubname) 0 Offset 0 Decorate 29(ubinst) Binding 0 + Decorate 29(ubinst) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeBool diff --git a/Test/baseResults/spv.boolInBlock.frag.out b/Test/baseResults/spv.boolInBlock.frag.out index c234cb4d35..9db304a568 100644 --- a/Test/baseResults/spv.boolInBlock.frag.out +++ b/Test/baseResults/spv.boolInBlock.frag.out @@ -23,14 +23,14 @@ spv.boolInBlock.frag Name 60 "param" Name 66 "param" Name 74 "fragColor" - MemberDecorate 25(Buffer) 0 Offset 0 Decorate 25(Buffer) BufferBlock - Decorate 27 DescriptorSet 0 + MemberDecorate 25(Buffer) 0 Offset 0 Decorate 27 Binding 1 - MemberDecorate 40(Uniform) 0 Offset 0 + Decorate 27 DescriptorSet 0 Decorate 40(Uniform) Block - Decorate 42 DescriptorSet 0 + MemberDecorate 40(Uniform) 0 Offset 0 Decorate 42 Binding 0 + Decorate 42 DescriptorSet 0 Decorate 74(fragColor) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.branch-return.vert.out b/Test/baseResults/spv.branch-return.vert.out index 53ef876579..86df58afb0 100644 --- a/Test/baseResults/spv.branch-return.vert.out +++ b/Test/baseResults/spv.branch-return.vert.out @@ -15,9 +15,9 @@ spv.branch-return.vert MemberName 18(gl_PerVertex) 1 "gl_PointSize" Name 20 "" Decorate 8(gl_InstanceIndex) BuiltIn InstanceIndex + Decorate 18(gl_PerVertex) Block MemberDecorate 18(gl_PerVertex) 0 BuiltIn Position MemberDecorate 18(gl_PerVertex) 1 BuiltIn PointSize - Decorate 18(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.buffer.autoassign.frag.out b/Test/baseResults/spv.buffer.autoassign.frag.out index 3afe64396c..0ccd840888 100644 --- a/Test/baseResults/spv.buffer.autoassign.frag.out +++ b/Test/baseResults/spv.buffer.autoassign.frag.out @@ -25,19 +25,19 @@ spv.buffer.autoassign.frag MemberName 34(MyUB3) 0 "g_d" Name 36 "" Name 47 "@entryPointOutput.Color" + Decorate 16(MyUB1) Block MemberDecorate 16(MyUB1) 0 Offset 0 MemberDecorate 16(MyUB1) 1 Offset 4 - Decorate 16(MyUB1) Block - Decorate 18 DescriptorSet 0 Decorate 18 Binding 20 - MemberDecorate 28(MyUB2) 0 Offset 0 + Decorate 18 DescriptorSet 0 Decorate 28(MyUB2) Block - Decorate 30 DescriptorSet 0 + MemberDecorate 28(MyUB2) 0 Offset 0 Decorate 30 Binding 15 - MemberDecorate 34(MyUB3) 0 Offset 0 + Decorate 30 DescriptorSet 0 Decorate 34(MyUB3) Block - Decorate 36 DescriptorSet 0 + MemberDecorate 34(MyUB3) 0 Offset 0 Decorate 36 Binding 16 + Decorate 36 DescriptorSet 0 Decorate 47(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.bufferhandle1.frag.out b/Test/baseResults/spv.bufferhandle1.frag.out index c44ad2a609..6fb4dcce70 100644 --- a/Test/baseResults/spv.bufferhandle1.frag.out +++ b/Test/baseResults/spv.bufferhandle1.frag.out @@ -29,10 +29,11 @@ spv.bufferhandle1.frag MemberName 13(blockType) 6 "g" Name 15 "t" Name 28 "j" + Decorate 7(t2) Block MemberDecorate 7(t2) 0 Offset 0 MemberDecorate 7(t2) 1 Offset 8 - Decorate 7(t2) Block Decorate 11 ArrayStride 4 + Decorate 13(blockType) Block MemberDecorate 13(blockType) 0 Offset 0 MemberDecorate 13(blockType) 1 Offset 4 MemberDecorate 13(blockType) 2 Offset 8 @@ -40,9 +41,8 @@ spv.bufferhandle1.frag MemberDecorate 13(blockType) 4 Offset 16 MemberDecorate 13(blockType) 5 Offset 32 MemberDecorate 13(blockType) 6 Offset 48 - Decorate 13(blockType) Block - Decorate 15(t) DescriptorSet 0 Decorate 15(t) Binding 0 + Decorate 15(t) DescriptorSet 0 Decorate 28(j) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.bufferhandle10.frag.out b/Test/baseResults/spv.bufferhandle10.frag.out index 93c3f70a4c..d2b8719ec3 100644 --- a/Test/baseResults/spv.bufferhandle10.frag.out +++ b/Test/baseResults/spv.bufferhandle10.frag.out @@ -25,13 +25,13 @@ spv.bufferhandle10.frag Name 19 "i" Name 28 "b" Name 34 "b2" - MemberDecorate 7(t2) 0 Offset 0 Decorate 7(t2) Block + MemberDecorate 7(t2) 0 Offset 0 Decorate 9 ArrayStride 4 - MemberDecorate 10(blockType) 0 Offset 0 Decorate 10(blockType) Block - Decorate 12(t) DescriptorSet 0 + MemberDecorate 10(blockType) 0 Offset 0 Decorate 12(t) Binding 0 + Decorate 12(t) DescriptorSet 0 Decorate 19(i) Flat Decorate 19(i) Location 0 Decorate 28(b) DecorationAliasedPointerEXT diff --git a/Test/baseResults/spv.bufferhandle11.frag.out b/Test/baseResults/spv.bufferhandle11.frag.out index eec3cf34f2..a24406b1ec 100644 --- a/Test/baseResults/spv.bufferhandle11.frag.out +++ b/Test/baseResults/spv.bufferhandle11.frag.out @@ -35,14 +35,14 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Name 48 "AcBlock" MemberName 48(AcBlock) 0 "ac_numPassed" Name 50 "" - MemberDecorate 26(PC) 0 Offset 0 Decorate 26(PC) Block - MemberDecorate 28(Block) 0 Offset 0 + MemberDecorate 26(PC) 0 Offset 0 Decorate 28(Block) Block - MemberDecorate 48(AcBlock) 0 Offset 0 + MemberDecorate 28(Block) 0 Offset 0 Decorate 48(AcBlock) Block - Decorate 50 DescriptorSet 0 + MemberDecorate 48(AcBlock) 0 Offset 0 Decorate 50 Binding 0 + Decorate 50 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.bufferhandle12.frag.out b/Test/baseResults/spv.bufferhandle12.frag.out index 319684f801..66ba75a6da 100644 --- a/Test/baseResults/spv.bufferhandle12.frag.out +++ b/Test/baseResults/spv.bufferhandle12.frag.out @@ -67,26 +67,26 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to Name 167 "AcBlock" MemberName 167(AcBlock) 0 "ac_numPassed" Name 169 "" + Decorate 139(PC) Block MemberDecorate 139(PC) 0 Offset 0 MemberDecorate 139(PC) 1 Offset 8 MemberDecorate 139(PC) 2 Offset 16 - Decorate 139(PC) Block + Decorate 141(BlockB) Block MemberDecorate 141(BlockB) 0 Offset 0 MemberDecorate 141(BlockB) 1 Offset 8 - Decorate 141(BlockB) Block - MemberDecorate 142(BlockC) 0 ColMajor + Decorate 142(BlockC) Block MemberDecorate 142(BlockC) 0 RelaxedPrecision - MemberDecorate 142(BlockC) 0 Offset 0 + MemberDecorate 142(BlockC) 0 ColMajor MemberDecorate 142(BlockC) 0 MatrixStride 16 - Decorate 142(BlockC) Block + MemberDecorate 142(BlockC) 0 Offset 0 + Decorate 143(BlockD) Block MemberDecorate 143(BlockD) 0 RelaxedPrecision MemberDecorate 143(BlockD) 0 Offset 0 - Decorate 143(BlockD) Block Decorate 160 RelaxedPrecision - MemberDecorate 167(AcBlock) 0 Offset 0 Decorate 167(AcBlock) Block - Decorate 169 DescriptorSet 0 + MemberDecorate 167(AcBlock) 0 Offset 0 Decorate 169 Binding 0 + Decorate 169 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out index 84eb884cb1..cb98c1ad13 100644 --- a/Test/baseResults/spv.bufferhandle13.frag.out +++ b/Test/baseResults/spv.bufferhandle13.frag.out @@ -33,23 +33,23 @@ spv.bufferhandle13.frag Name 52 "param" Name 56 "g1" Name 57 "g2" - MemberDecorate 8(t4) 0 Offset 0 Decorate 8(t4) Block + MemberDecorate 8(t4) 0 Offset 0 Decorate 10(y) Aliased Decorate 15(y) DecorationAliasedPointerEXT Decorate 18(y) Restrict Decorate 21(y) Restrict Decorate 21(y) DecorationRestrictPointerEXT Decorate 34(a) DecorationAliasedPointerEXT - MemberDecorate 35(t5) 0 Offset 0 Decorate 35(t5) Block - Decorate 37(s5) DescriptorSet 0 + MemberDecorate 35(t5) 0 Offset 0 Decorate 37(s5) Binding 0 + Decorate 37(s5) DescriptorSet 0 Decorate 42(b) DecorationRestrictPointerEXT - Decorate 56(g1) DecorationAliasedPointerEXT - Decorate 57(g2) DecorationRestrictPointerEXT Decorate 47(param) DecorationAliasedPointerEXT Decorate 52(param) DecorationAliasedPointerEXT + Decorate 56(g1) DecorationAliasedPointerEXT + Decorate 57(g2) DecorationRestrictPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT diff --git a/Test/baseResults/spv.bufferhandle14.frag.out b/Test/baseResults/spv.bufferhandle14.frag.out index 4f994e194b..c10692403a 100644 --- a/Test/baseResults/spv.bufferhandle14.frag.out +++ b/Test/baseResults/spv.bufferhandle14.frag.out @@ -33,25 +33,25 @@ spv.bufferhandle14.frag MemberName 38(T4) 1 "j" MemberName 38(T4) 2 "k" Name 40 "t4" + Decorate 8(T1) Block MemberDecorate 8(T1) 0 Offset 0 MemberDecorate 8(T1) 1 Offset 4 MemberDecorate 8(T1) 2 Offset 8 - Decorate 8(T1) Block Decorate 10(t1) DecorationAliasedPointerEXT + Decorate 20(T2) Block MemberDecorate 20(T2) 0 Offset 0 MemberDecorate 20(T2) 1 Offset 4 MemberDecorate 20(T2) 2 Offset 8 - Decorate 20(T2) Block Decorate 22(t2) DecorationAliasedPointerEXT + Decorate 29(T3) Block MemberDecorate 29(T3) 0 Offset 0 MemberDecorate 29(T3) 1 Offset 4 MemberDecorate 29(T3) 2 Offset 8 - Decorate 29(T3) Block Decorate 31(t3) DecorationAliasedPointerEXT + Decorate 38(T4) Block MemberDecorate 38(T4) 0 Offset 0 MemberDecorate 38(T4) 1 Offset 4 MemberDecorate 38(T4) 2 Offset 8 - Decorate 38(T4) Block Decorate 40(t4) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.bufferhandle15.frag.out b/Test/baseResults/spv.bufferhandle15.frag.out index 34d3d598cf..6bd429a918 100644 --- a/Test/baseResults/spv.bufferhandle15.frag.out +++ b/Test/baseResults/spv.bufferhandle15.frag.out @@ -36,29 +36,29 @@ WARNING: 0:16: '' : all default precisions are highp; use precision statements t Name 31 "t4" Name 37 "i" Name 52 "z" + Decorate 13(T4) Block MemberDecorate 13(T4) 0 Offset 0 MemberDecorate 13(T4) 1 Offset 8 MemberDecorate 13(T4) 2 Offset 16 - Decorate 13(T4) Block Decorate 14 ArrayStride 12 - MemberDecorate 15(T1) 0 Offset 0 Decorate 15(T1) Block + MemberDecorate 15(T1) 0 Offset 0 Decorate 18 ArrayStride 12 Decorate 20 ArrayStride 24 Decorate 21 ArrayStride 96 - MemberDecorate 22(T2) 0 Offset 0 Decorate 22(T2) Block + MemberDecorate 22(T2) 0 Offset 0 Decorate 26 ArrayStride 36 MemberDecorate 28(S) 0 Offset 0 - MemberDecorate 28(S) 1 ColMajor MemberDecorate 28(S) 1 RelaxedPrecision - MemberDecorate 28(S) 1 Offset 12 + MemberDecorate 28(S) 1 ColMajor MemberDecorate 28(S) 1 MatrixStride 12 + MemberDecorate 28(S) 1 Offset 12 MemberDecorate 28(S) 2 Offset 156 - MemberDecorate 29(T3) 0 Offset 0 Decorate 29(T3) Block - Decorate 31(t4) DescriptorSet 0 + MemberDecorate 29(T3) 0 Offset 0 Decorate 31(t4) Binding 0 + Decorate 31(t4) DescriptorSet 0 Decorate 37(i) Flat Decorate 37(i) Location 0 Decorate 59 RelaxedPrecision diff --git a/Test/baseResults/spv.bufferhandle16.frag.out b/Test/baseResults/spv.bufferhandle16.frag.out index ee04d361d6..4952b3d0af 100644 --- a/Test/baseResults/spv.bufferhandle16.frag.out +++ b/Test/baseResults/spv.bufferhandle16.frag.out @@ -26,9 +26,9 @@ spv.bufferhandle16.frag Name 26 "e" Name 29 "f" Name 46 "x" + Decorate 9(T1) Block MemberDecorate 9(T1) 0 Offset 0 MemberDecorate 9(T1) 1 Offset 4 - Decorate 9(T1) Block Decorate 11(a) DecorationAliasedPointerEXT Decorate 15(b) DecorationAliasedPointerEXT Decorate 18(c) DecorationAliasedPointerEXT diff --git a/Test/baseResults/spv.bufferhandle18.frag.out b/Test/baseResults/spv.bufferhandle18.frag.out index 97c961a76c..981a50e1f0 100644 --- a/Test/baseResults/spv.bufferhandle18.frag.out +++ b/Test/baseResults/spv.bufferhandle18.frag.out @@ -37,9 +37,9 @@ spv.bufferhandle18.frag Name 180 "m" Name 190 "x" Name 195 "buf" + Decorate 9(T1) Block MemberDecorate 9(T1) 0 Offset 0 MemberDecorate 9(T1) 1 Offset 4 - Decorate 9(T1) Block Decorate 11(a) DecorationAliasedPointerEXT Decorate 15(b) DecorationAliasedPointerEXT Decorate 18(c) DecorationAliasedPointerEXT @@ -49,8 +49,8 @@ spv.bufferhandle18.frag Decorate 59(arr) DecorationAliasedPointerEXT Decorate 130(j) DecorationAliasedPointerEXT Decorate 153(k) DecorationAliasedPointerEXT - MemberDecorate 178(T2) 0 Offset 0 Decorate 178(T2) Block + MemberDecorate 178(T2) 0 Offset 0 Decorate 180(m) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.bufferhandle2.frag.out b/Test/baseResults/spv.bufferhandle2.frag.out index 31a39f261e..78bcfc0701 100644 --- a/Test/baseResults/spv.bufferhandle2.frag.out +++ b/Test/baseResults/spv.bufferhandle2.frag.out @@ -27,18 +27,18 @@ spv.bufferhandle2.frag Name 16 "t" Name 34 "b2" Name 37 "b3" + Decorate 8(blockType) Block MemberDecorate 8(blockType) 0 Offset 0 MemberDecorate 8(blockType) 1 Offset 4 MemberDecorate 8(blockType) 2 Offset 8 MemberDecorate 8(blockType) 3 Offset 12 MemberDecorate 8(blockType) 4 Offset 16 - Decorate 8(blockType) Block Decorate 13(b1) DecorationAliasedPointerEXT + Decorate 14(t2) Block MemberDecorate 14(t2) 0 Offset 0 MemberDecorate 14(t2) 1 Offset 8 - Decorate 14(t2) Block - Decorate 16(t) DescriptorSet 0 Decorate 16(t) Binding 0 + Decorate 16(t) DescriptorSet 0 Decorate 34(b2) DecorationAliasedPointerEXT Decorate 37(b3) DecorationAliasedPointerEXT 2: TypeVoid diff --git a/Test/baseResults/spv.bufferhandle3.frag.out b/Test/baseResults/spv.bufferhandle3.frag.out index 9f66b5cf1c..0a2ab45638 100644 --- a/Test/baseResults/spv.bufferhandle3.frag.out +++ b/Test/baseResults/spv.bufferhandle3.frag.out @@ -30,25 +30,25 @@ spv.bufferhandle3.frag MemberName 38(t4) 1 "k" Name 40 "x" Name 42 "k" + Decorate 9(t4) Block MemberDecorate 9(t4) 0 Offset 0 MemberDecorate 9(t4) 1 Offset 8 - Decorate 9(t4) Block - MemberDecorate 10(t3) 0 Offset 0 Decorate 10(t3) Block + MemberDecorate 10(t3) 0 Offset 0 Decorate 13(y) DecorationAliasedPointerEXT - MemberDecorate 19(t5) 0 Offset 0 Decorate 19(t5) Block - Decorate 21(s5) DescriptorSet 0 + MemberDecorate 19(t5) 0 Offset 0 Decorate 21(s5) Binding 0 + Decorate 21(s5) DescriptorSet 0 + Decorate 23(param) DecorationAliasedPointerEXT + Decorate 38(t4) Block MemberDecorate 38(t4) 0 Offset 0 MemberDecorate 38(t4) 1 Offset 8 - Decorate 38(t4) Block - Decorate 40(x) DescriptorSet 1 Decorate 40(x) Binding 2 + Decorate 40(x) DescriptorSet 1 Decorate 42(k) Flat Decorate 42(k) Location 0 Decorate 42(k) DecorationAliasedPointerEXT - Decorate 23(param) DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT diff --git a/Test/baseResults/spv.bufferhandle4.frag.out b/Test/baseResults/spv.bufferhandle4.frag.out index 1ccb6095de..42b34b7ec1 100644 --- a/Test/baseResults/spv.bufferhandle4.frag.out +++ b/Test/baseResults/spv.bufferhandle4.frag.out @@ -28,21 +28,21 @@ spv.bufferhandle4.frag MemberName 19(t5) 0 "m" Name 21 "s5" Name 43 "b" + Decorate 8(t4) Block MemberDecorate 8(t4) 0 Offset 0 MemberDecorate 8(t4) 1 Offset 8 - Decorate 8(t4) Block + Decorate 10(t3) Block MemberDecorate 10(t3) 0 Offset 0 MemberDecorate 10(t3) 1 Offset 8 - Decorate 10(t3) Block + Decorate 11(t4) Block MemberDecorate 11(t4) 0 Offset 0 MemberDecorate 11(t4) 1 Offset 8 - Decorate 11(t4) Block - Decorate 13(x) DescriptorSet 1 Decorate 13(x) Binding 2 - MemberDecorate 19(t5) 0 Offset 0 + Decorate 13(x) DescriptorSet 1 Decorate 19(t5) Block - Decorate 21(s5) DescriptorSet 0 + MemberDecorate 19(t5) 0 Offset 0 Decorate 21(s5) Binding 0 + Decorate 21(s5) DescriptorSet 0 Decorate 47 DecorationAliasedPointerEXT 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.bufferhandle5.frag.out b/Test/baseResults/spv.bufferhandle5.frag.out index 0bcb34b072..cce131dd05 100644 --- a/Test/baseResults/spv.bufferhandle5.frag.out +++ b/Test/baseResults/spv.bufferhandle5.frag.out @@ -19,13 +19,13 @@ spv.bufferhandle5.frag Name 9 "t3" MemberName 9(t3) 0 "h" Name 11 "x" + Decorate 8(t4) Block MemberDecorate 8(t4) 0 Offset 0 MemberDecorate 8(t4) 1 Offset 8 - Decorate 8(t4) Block - MemberDecorate 9(t3) 0 Offset 0 Decorate 9(t3) Block - Decorate 11(x) DescriptorSet 1 + MemberDecorate 9(t3) 0 Offset 0 Decorate 11(x) Binding 2 + Decorate 11(x) DescriptorSet 1 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.bufferhandle6.frag.out b/Test/baseResults/spv.bufferhandle6.frag.out index 758a30bea6..89749cd850 100644 --- a/Test/baseResults/spv.bufferhandle6.frag.out +++ b/Test/baseResults/spv.bufferhandle6.frag.out @@ -34,26 +34,26 @@ spv.bufferhandle6.frag Name 154 "gl_FragCoord" Decorate 12 ArrayStride 4 Decorate 14 ArrayStride 8 + Decorate 15(T1) Block MemberDecorate 15(T1) 0 Offset 0 MemberDecorate 15(T1) 1 Offset 32 MemberDecorate 15(T1) 2 Offset 48 MemberDecorate 15(T1) 3 Offset 80 - Decorate 15(T1) Block Decorate 16 ArrayStride 4 Decorate 17 ArrayStride 8 + Decorate 18(T1) Block MemberDecorate 18(T1) 0 Offset 0 MemberDecorate 18(T1) 1 Offset 32 MemberDecorate 18(T1) 2 Offset 48 MemberDecorate 18(T1) 3 Offset 80 - Decorate 18(T1) Block Decorate 19 ArrayStride 8 - Decorate 21(x) DescriptorSet 3 Decorate 21(x) Binding 1 + Decorate 21(x) DescriptorSet 3 Decorate 29 ArrayStride 4 - MemberDecorate 30(Block) 0 Offset 0 Decorate 30(Block) Block - Decorate 149(image0_0) DescriptorSet 3 + MemberDecorate 30(Block) 0 Offset 0 Decorate 149(image0_0) Binding 0 + Decorate 149(image0_0) DescriptorSet 3 Decorate 154(gl_FragCoord) BuiltIn FragCoord 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.bufferhandle7.frag.out b/Test/baseResults/spv.bufferhandle7.frag.out index 070adb710b..6af3efbb0e 100644 --- a/Test/baseResults/spv.bufferhandle7.frag.out +++ b/Test/baseResults/spv.bufferhandle7.frag.out @@ -30,24 +30,24 @@ spv.bufferhandle7.frag MemberName 15(t2) 0 "f" MemberName 15(t2) 1 "g" Name 17 "u" + Decorate 7(t2) Block MemberDecorate 7(t2) 0 Offset 0 MemberDecorate 7(t2) 1 Offset 8 - Decorate 7(t2) Block + Decorate 9(blockType) Block MemberDecorate 9(blockType) 0 Offset 0 MemberDecorate 9(blockType) 1 Offset 4 MemberDecorate 9(blockType) 2 Offset 8 MemberDecorate 9(blockType) 3 Offset 12 MemberDecorate 9(blockType) 4 Offset 16 - Decorate 9(blockType) Block - Decorate 11(t) DescriptorSet 0 Decorate 11(t) Binding 0 - MemberDecorate 14(t3) 0 Offset 0 + Decorate 11(t) DescriptorSet 0 Decorate 14(t3) Block + MemberDecorate 14(t3) 0 Offset 0 + Decorate 15(t2) Block MemberDecorate 15(t2) 0 Offset 0 MemberDecorate 15(t2) 1 Offset 8 - Decorate 15(t2) Block - Decorate 17(u) DescriptorSet 0 Decorate 17(u) Binding 1 + Decorate 17(u) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT diff --git a/Test/baseResults/spv.bufferhandle8.frag.out b/Test/baseResults/spv.bufferhandle8.frag.out index 52eec11016..7a717b0b74 100644 --- a/Test/baseResults/spv.bufferhandle8.frag.out +++ b/Test/baseResults/spv.bufferhandle8.frag.out @@ -38,29 +38,29 @@ spv.bufferhandle8.frag MemberName 36(blockType) 3 "d" MemberName 36(blockType) 4 "e" Name 38 "t" - MemberDecorate 10(T1) 0 Offset 0 Decorate 10(T1) Block - MemberDecorate 11(T2) 0 Offset 0 + MemberDecorate 10(T1) 0 Offset 0 Decorate 11(T2) Block + MemberDecorate 11(T2) 0 Offset 0 + Decorate 13(x) DecorationAliasedPointerEXT MemberDecorate 14(Blah) 0 Offset 0 MemberDecorate 14(Blah) 1 Offset 8 Decorate 15 ArrayStride 16 - MemberDecorate 16(T3) 0 Offset 0 Decorate 16(T3) Block - Decorate 18(t3) DescriptorSet 0 + MemberDecorate 16(T3) 0 Offset 0 Decorate 18(t3) Binding 0 + Decorate 18(t3) DescriptorSet 0 + Decorate 35(t2) Block MemberDecorate 35(t2) 0 Offset 0 MemberDecorate 35(t2) 1 Offset 8 - Decorate 35(t2) Block + Decorate 36(blockType) Block MemberDecorate 36(blockType) 0 Offset 0 MemberDecorate 36(blockType) 1 Offset 4 MemberDecorate 36(blockType) 2 Offset 8 MemberDecorate 36(blockType) 3 Offset 12 MemberDecorate 36(blockType) 4 Offset 16 - Decorate 36(blockType) Block - Decorate 38(t) DescriptorSet 0 Decorate 38(t) Binding 0 - Decorate 13(x) DecorationAliasedPointerEXT + Decorate 38(t) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT diff --git a/Test/baseResults/spv.bufferhandle9.frag.out b/Test/baseResults/spv.bufferhandle9.frag.out index ff7ede7a59..e094605cad 100644 --- a/Test/baseResults/spv.bufferhandle9.frag.out +++ b/Test/baseResults/spv.bufferhandle9.frag.out @@ -32,12 +32,12 @@ spv.bufferhandle9.frag MemberName 53(t2) 0 "f" MemberName 53(t2) 1 "g" Name 55 "t" + Decorate 8(blockType) Block MemberDecorate 8(blockType) 0 Offset 0 MemberDecorate 8(blockType) 1 Offset 4 MemberDecorate 8(blockType) 2 Offset 8 MemberDecorate 8(blockType) 3 Offset 12 MemberDecorate 8(blockType) 4 Offset 16 - Decorate 8(blockType) Block Decorate 13(b1) DecorationAliasedPointerEXT Decorate 16(h) Flat Decorate 16(h) Location 0 @@ -45,11 +45,11 @@ spv.bufferhandle9.frag Decorate 19(i) Location 1 Decorate 34(b2) DecorationAliasedPointerEXT Decorate 37(b3) DecorationAliasedPointerEXT + Decorate 53(t2) Block MemberDecorate 53(t2) 0 Offset 0 MemberDecorate 53(t2) 1 Offset 8 - Decorate 53(t2) Block - Decorate 55(t) DescriptorSet 0 Decorate 55(t) Binding 0 + Decorate 55(t) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT diff --git a/Test/baseResults/spv.bufferhandleUvec2.frag.out b/Test/baseResults/spv.bufferhandleUvec2.frag.out index 133190e5f3..0ee138ba68 100644 --- a/Test/baseResults/spv.bufferhandleUvec2.frag.out +++ b/Test/baseResults/spv.bufferhandleUvec2.frag.out @@ -33,12 +33,12 @@ spv.bufferhandleUvec2.frag MemberName 68(t2) 0 "f" MemberName 68(t2) 1 "g" Name 70 "t" + Decorate 8(blockType) Block MemberDecorate 8(blockType) 0 Offset 0 MemberDecorate 8(blockType) 1 Offset 4 MemberDecorate 8(blockType) 2 Offset 8 MemberDecorate 8(blockType) 3 Offset 12 MemberDecorate 8(blockType) 4 Offset 16 - Decorate 8(blockType) Block Decorate 13(b1) DecorationAliasedPointerEXT Decorate 16(h) Flat Decorate 16(h) Location 0 @@ -46,11 +46,11 @@ spv.bufferhandleUvec2.frag Decorate 19(i) Location 1 Decorate 34(b2) DecorationAliasedPointerEXT Decorate 37(b3) DecorationAliasedPointerEXT + Decorate 68(t2) Block MemberDecorate 68(t2) 0 Offset 0 MemberDecorate 68(t2) 1 Offset 8 - Decorate 68(t2) Block - Decorate 70(t) DescriptorSet 0 Decorate 70(t) Binding 0 + Decorate 70(t) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 TypeForwardPointer 6 PhysicalStorageBufferEXT diff --git a/Test/baseResults/spv.builtInXFB.vert.out b/Test/baseResults/spv.builtInXFB.vert.out index b3a3e12ce5..68e5a7d420 100644 --- a/Test/baseResults/spv.builtInXFB.vert.out +++ b/Test/baseResults/spv.builtInXFB.vert.out @@ -15,11 +15,11 @@ spv.builtInXFB.vert MemberName 8(gl_PerVertex) 0 "gl_Position" MemberName 8(gl_PerVertex) 1 "gl_PointSize" Name 10 "" - MemberDecorate 8(gl_PerVertex) 0 Offset 20 + Decorate 8(gl_PerVertex) Block MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 8(gl_PerVertex) 1 Offset 16 + MemberDecorate 8(gl_PerVertex) 0 Offset 20 MemberDecorate 8(gl_PerVertex) 1 BuiltIn PointSize - Decorate 8(gl_PerVertex) Block + MemberDecorate 8(gl_PerVertex) 1 Offset 16 Decorate 10 XfbBuffer 1 Decorate 10 XfbStride 64 2: TypeVoid diff --git a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out index 5707fb9359..1729a16213 100644 --- a/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out +++ b/Test/baseResults/spv.builtin.ShadingRateEXT.frag.out @@ -19,8 +19,8 @@ WARNING: 0:5: '' : all default precisions are highp; use precision statements to Name 8 "val" Name 10 "gl_ShadingRateEXT" Decorate 8(val) Location 0 - Decorate 10(gl_ShadingRateEXT) Flat Decorate 10(gl_ShadingRateEXT) BuiltIn ShadingRateKHR + Decorate 10(gl_ShadingRateEXT) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.computeShaderDerivatives.comp.out b/Test/baseResults/spv.computeShaderDerivatives.comp.out index 4761078566..789e05ea21 100644 --- a/Test/baseResults/spv.computeShaderDerivatives.comp.out +++ b/Test/baseResults/spv.computeShaderDerivatives.comp.out @@ -61,6 +61,7 @@ spv.computeShaderDerivatives.comp MemberName 10(block) 42 "v4X" MemberName 10(block) 43 "v4Y" Name 12 "" + Decorate 10(block) BufferBlock MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 4 MemberDecorate 10(block) 2 Offset 8 @@ -105,9 +106,8 @@ spv.computeShaderDerivatives.comp MemberDecorate 10(block) 41 Offset 448 MemberDecorate 10(block) 42 Offset 464 MemberDecorate 10(block) 43 Offset 480 - Decorate 10(block) BufferBlock - Decorate 12 DescriptorSet 0 Decorate 12 Binding 0 + Decorate 12 DescriptorSet 0 Decorate 211 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.computeShaderDerivatives2.comp.out b/Test/baseResults/spv.computeShaderDerivatives2.comp.out index 52b54746e7..a520fc3e48 100644 --- a/Test/baseResults/spv.computeShaderDerivatives2.comp.out +++ b/Test/baseResults/spv.computeShaderDerivatives2.comp.out @@ -61,6 +61,7 @@ spv.computeShaderDerivatives2.comp MemberName 10(block) 42 "v4X" MemberName 10(block) 43 "v4Y" Name 12 "" + Decorate 10(block) BufferBlock MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 4 MemberDecorate 10(block) 2 Offset 8 @@ -105,9 +106,8 @@ spv.computeShaderDerivatives2.comp MemberDecorate 10(block) 41 Offset 448 MemberDecorate 10(block) 42 Offset 464 MemberDecorate 10(block) 43 Offset 480 - Decorate 10(block) BufferBlock - Decorate 12 DescriptorSet 0 Decorate 12 Binding 0 + Decorate 12 DescriptorSet 0 Decorate 211 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.conditionalDemote.frag.out b/Test/baseResults/spv.conditionalDemote.frag.out index 84c816b22c..fb789db7d5 100644 --- a/Test/baseResults/spv.conditionalDemote.frag.out +++ b/Test/baseResults/spv.conditionalDemote.frag.out @@ -18,8 +18,8 @@ spv.conditionalDemote.frag Name 17 "coord" Name 33 "x" Name 36 "o" - Decorate 13(tex) DescriptorSet 0 Decorate 13(tex) Binding 0 + Decorate 13(tex) DescriptorSet 0 Decorate 17(coord) Location 0 Decorate 36(o) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.conditionalDiscard.frag.out b/Test/baseResults/spv.conditionalDiscard.frag.out index f31fa85143..3d7cca84df 100644 --- a/Test/baseResults/spv.conditionalDiscard.frag.out +++ b/Test/baseResults/spv.conditionalDiscard.frag.out @@ -14,8 +14,8 @@ spv.conditionalDiscard.frag Name 13 "tex" Name 17 "coord" Name 34 "gl_FragColor" - Decorate 13(tex) DescriptorSet 0 Decorate 13(tex) Binding 0 + Decorate 13(tex) DescriptorSet 0 Decorate 17(coord) Location 0 Decorate 34(gl_FragColor) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.constructComposite.comp.out b/Test/baseResults/spv.constructComposite.comp.out index 491a33f1c9..c2688ca5bb 100644 --- a/Test/baseResults/spv.constructComposite.comp.out +++ b/Test/baseResults/spv.constructComposite.comp.out @@ -27,10 +27,10 @@ spv.constructComposite.comp MemberDecorate 11(sA) 0 Offset 0 MemberDecorate 11(sA) 1 Offset 4 MemberDecorate 12(sB) 0 Offset 0 - MemberDecorate 13(ubo) 0 Offset 0 Decorate 13(ubo) Block - Decorate 15 DescriptorSet 0 + MemberDecorate 13(ubo) 0 Offset 0 Decorate 15 Binding 0 + Decorate 15 DescriptorSet 0 Decorate 28 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.coopmat.comp.out b/Test/baseResults/spv.coopmat.comp.out index b594af23b4..b14ad59bd2 100644 --- a/Test/baseResults/spv.coopmat.comp.out +++ b/Test/baseResults/spv.coopmat.comp.out @@ -78,24 +78,24 @@ spv.coopmat.comp Name 227 "scm" Decorate 66 ArrayStride 4 Decorate 67 ArrayStride 4 + Decorate 68(Block) Block MemberDecorate 68(Block) 0 Offset 0 MemberDecorate 68(Block) 1 Offset 4194304 - Decorate 68(Block) Block - Decorate 70(block) DescriptorSet 0 Decorate 70(block) Binding 0 + Decorate 70(block) DescriptorSet 0 Decorate 82 ArrayStride 2 Decorate 84 ArrayStride 2 + Decorate 86(Block16) Block MemberDecorate 86(Block16) 0 Offset 0 MemberDecorate 86(Block16) 1 Offset 2097152 MemberDecorate 86(Block16) 2 Offset 2097160 - Decorate 86(Block16) Block Decorate 87 ArrayStride 4 Decorate 88 ArrayStride 4 + Decorate 89(Block) Block MemberDecorate 89(Block) 0 Offset 0 MemberDecorate 89(Block) 1 Offset 4194304 - Decorate 89(Block) Block - Decorate 91(block16) DescriptorSet 0 Decorate 91(block16) Binding 0 + Decorate 91(block16) DescriptorSet 0 Decorate 124(Y) SpecId 0 Decorate 200 BuiltIn WorkgroupSize Decorate 212(F) SpecId 1 diff --git a/Test/baseResults/spv.coopmatKHR.comp.out b/Test/baseResults/spv.coopmatKHR.comp.out index 60a454003d..4d87d70a90 100644 --- a/Test/baseResults/spv.coopmatKHR.comp.out +++ b/Test/baseResults/spv.coopmatKHR.comp.out @@ -82,24 +82,24 @@ spv.coopmatKHR.comp Name 249 "scm" Decorate 67 ArrayStride 4 Decorate 68 ArrayStride 4 + Decorate 69(Block) Block MemberDecorate 69(Block) 0 Offset 0 MemberDecorate 69(Block) 1 Offset 4194304 - Decorate 69(Block) Block - Decorate 71(block) DescriptorSet 0 Decorate 71(block) Binding 0 + Decorate 71(block) DescriptorSet 0 Decorate 81 ArrayStride 2 Decorate 83 ArrayStride 2 + Decorate 85(Block16) Block MemberDecorate 85(Block16) 0 Offset 0 MemberDecorate 85(Block16) 1 Offset 2097152 MemberDecorate 85(Block16) 2 Offset 2097160 - Decorate 85(Block16) Block Decorate 86 ArrayStride 4 Decorate 87 ArrayStride 4 + Decorate 88(Block) Block MemberDecorate 88(Block) 0 Offset 0 MemberDecorate 88(Block) 1 Offset 4194304 - Decorate 88(Block) Block - Decorate 90(block16) DescriptorSet 0 Decorate 90(block16) Binding 0 + Decorate 90(block16) DescriptorSet 0 Decorate 128(Y) SpecId 0 Decorate 232 BuiltIn WorkgroupSize Decorate 234(F) SpecId 1 diff --git a/Test/baseResults/spv.coopmat_armlayout.comp.out b/Test/baseResults/spv.coopmat_armlayout.comp.out index fbeb65551d..8566f6ec5e 100644 --- a/Test/baseResults/spv.coopmat_armlayout.comp.out +++ b/Test/baseResults/spv.coopmat_armlayout.comp.out @@ -84,24 +84,24 @@ spv.coopmat_armlayout.comp Name 250 "scm" Decorate 67 ArrayStride 4 Decorate 68 ArrayStride 4 + Decorate 69(Block) Block MemberDecorate 69(Block) 0 Offset 0 MemberDecorate 69(Block) 1 Offset 4194304 - Decorate 69(Block) Block - Decorate 71(block) DescriptorSet 0 Decorate 71(block) Binding 0 + Decorate 71(block) DescriptorSet 0 Decorate 82 ArrayStride 2 Decorate 84 ArrayStride 2 + Decorate 86(Block16) Block MemberDecorate 86(Block16) 0 Offset 0 MemberDecorate 86(Block16) 1 Offset 2097152 MemberDecorate 86(Block16) 2 Offset 2097160 - Decorate 86(Block16) Block Decorate 87 ArrayStride 4 Decorate 88 ArrayStride 4 + Decorate 89(Block) Block MemberDecorate 89(Block) 0 Offset 0 MemberDecorate 89(Block) 1 Offset 4194304 - Decorate 89(Block) Block - Decorate 91(block16) DescriptorSet 0 Decorate 91(block16) Binding 0 + Decorate 91(block16) DescriptorSet 0 Decorate 129(Y) SpecId 0 Decorate 233 BuiltIn WorkgroupSize Decorate 235(F) SpecId 1 diff --git a/Test/baseResults/spv.dataOutIndirect.frag.out b/Test/baseResults/spv.dataOutIndirect.frag.out index d07cfe97eb..e699d4017c 100644 --- a/Test/baseResults/spv.dataOutIndirect.frag.out +++ b/Test/baseResults/spv.dataOutIndirect.frag.out @@ -16,10 +16,10 @@ spv.dataOutIndirect.frag Name 16 "bName" Name 22 "Color" Decorate 12(fcolor) Location 0 - MemberDecorate 14(b) 0 Offset 0 Decorate 14(b) Block - Decorate 16(bName) DescriptorSet 0 + MemberDecorate 14(b) 0 Offset 0 Decorate 16(bName) Binding 0 + Decorate 16(bName) DescriptorSet 0 Decorate 22(Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index 127267560e..77fae61183 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -129,12 +129,12 @@ void main() Decorate 30(inv) Location 0 Decorate 104(outv) Location 0 MemberDecorate 105(S) 0 Offset 0 - MemberDecorate 106(ubuf) 0 Offset 0 Decorate 106(ubuf) Block - Decorate 108 DescriptorSet 3 + MemberDecorate 106(ubuf) 0 Offset 0 Decorate 108 Binding 0 - Decorate 131(s2d) DescriptorSet 3 + Decorate 108 DescriptorSet 3 Decorate 131(s2d) Binding 1 + Decorate 131(s2d) DescriptorSet 3 3: TypeVoid 4: TypeFunction 3 7: TypeInt 32 1 diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index 8bacd74d9a..2595211f11 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -129,13 +129,13 @@ void main() Decorate 30(inv) Location 0 Decorate 104(outv) Location 0 MemberDecorate 105(S) 0 Offset 0 - MemberDecorate 106(ubuf) 0 Offset 0 Decorate 106(ubuf) Block - Decorate 108 DescriptorSet 3 + MemberDecorate 106(ubuf) 0 Offset 0 Decorate 108 Binding 0 + Decorate 108 DescriptorSet 3 Decorate 131(s2d) Location 0 - Decorate 131(s2d) DescriptorSet 3 Decorate 131(s2d) Binding 1 + Decorate 131(s2d) DescriptorSet 3 3: TypeVoid 4: TypeFunction 3 7: TypeInt 32 1 diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index c47f0e664f..9f94aa1d3b 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -81,19 +81,19 @@ void main() { Name 98 "vertex_pos0" Name 135 "out_fragColor" Decorate 42 ArrayStride 4 - MemberDecorate 44(MeshVertexPositions) 0 Offset 0 Decorate 44(MeshVertexPositions) Block + MemberDecorate 44(MeshVertexPositions) 0 Offset 0 + Decorate 53(meshData) DecorationAliasedPointerEXT MemberDecorate 59(Mesh) 0 Offset 0 Decorate 62 ArrayStride 8 + Decorate 64(PerPass_meshes) Block MemberDecorate 64(PerPass_meshes) 0 NonWritable MemberDecorate 64(PerPass_meshes) 0 Offset 0 - Decorate 64(PerPass_meshes) Block - Decorate 73(perPass_meshes) DescriptorSet 0 Decorate 73(perPass_meshes) Binding 0 + Decorate 73(perPass_meshes) DescriptorSet 0 Decorate 82(tri_idx0) Flat Decorate 82(tri_idx0) Location 0 Decorate 135(out_fragColor) Location 0 - Decorate 53(meshData) DecorationAliasedPointerEXT 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 3ad62497dc..2a3505fb69 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -304,6 +304,7 @@ void main() Name 719 "a" Name 733 "b" Name 750 "c" + Decorate 78(UBO) Block MemberDecorate 78(UBO) 0 Offset 0 MemberDecorate 78(UBO) 1 Offset 4 MemberDecorate 78(UBO) 2 Offset 8 @@ -315,9 +316,8 @@ void main() MemberDecorate 78(UBO) 8 Offset 32 MemberDecorate 78(UBO) 9 Offset 48 MemberDecorate 78(UBO) 10 Offset 64 - Decorate 78(UBO) Block - Decorate 101(params) DescriptorSet 0 Decorate 101(params) Binding 2 + Decorate 101(params) DescriptorSet 0 Decorate 133(gl_GlobalInvocationID) BuiltIn GlobalInvocationId MemberDecorate 177(Particle) 0 Offset 0 MemberDecorate 177(Particle) 1 Offset 16 @@ -325,17 +325,17 @@ void main() MemberDecorate 177(Particle) 3 Offset 48 MemberDecorate 177(Particle) 4 Offset 64 Decorate 189 ArrayStride 80 - MemberDecorate 191(ParticleIn) 0 Offset 0 Decorate 191(ParticleIn) BufferBlock - Decorate 200 DescriptorSet 0 + MemberDecorate 191(ParticleIn) 0 Offset 0 Decorate 200 Binding 0 + Decorate 200 DescriptorSet 0 Decorate 214 ArrayStride 80 - MemberDecorate 216(ParticleOut) 0 Offset 0 Decorate 216(ParticleOut) BufferBlock - Decorate 225 DescriptorSet 0 + MemberDecorate 216(ParticleOut) 0 Offset 0 Decorate 225 Binding 1 - MemberDecorate 675(PushConsts) 0 Offset 0 + Decorate 225 DescriptorSet 0 Decorate 675(PushConsts) Block + MemberDecorate 675(PushConsts) 0 Offset 0 Decorate 974 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 6c5e4da6b9..b237059968 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -352,29 +352,29 @@ void main() Name 814 "spec" Name 861 "param" Name 866 "param" - Decorate 177(samplerShadowMap) DescriptorSet 0 Decorate 177(samplerShadowMap) Binding 5 + Decorate 177(samplerShadowMap) DescriptorSet 0 MemberDecorate 405(Light) 0 Offset 0 MemberDecorate 405(Light) 1 Offset 16 MemberDecorate 405(Light) 2 Offset 32 MemberDecorate 405(Light) 3 ColMajor - MemberDecorate 405(Light) 3 Offset 48 MemberDecorate 405(Light) 3 MatrixStride 16 + MemberDecorate 405(Light) 3 Offset 48 Decorate 416 ArrayStride 112 + Decorate 418(UBO) Block MemberDecorate 418(UBO) 0 Offset 0 MemberDecorate 418(UBO) 1 Offset 16 MemberDecorate 418(UBO) 2 Offset 352 MemberDecorate 418(UBO) 3 Offset 356 - Decorate 418(UBO) Block - Decorate 431(ubo) DescriptorSet 0 Decorate 431(ubo) Binding 4 - Decorate 487(samplerposition) DescriptorSet 0 + Decorate 431(ubo) DescriptorSet 0 Decorate 487(samplerposition) Binding 1 + Decorate 487(samplerposition) DescriptorSet 0 Decorate 493(inUV) Location 0 - Decorate 505(samplerNormal) DescriptorSet 0 Decorate 505(samplerNormal) Binding 2 - Decorate 518(samplerAlbedo) DescriptorSet 0 + Decorate 505(samplerNormal) DescriptorSet 0 Decorate 518(samplerAlbedo) Binding 3 + Decorate 518(samplerAlbedo) DescriptorSet 0 Decorate 546(outFragColor) Location 0 4: TypeVoid 5: TypeFunction 4 diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 32634ffeab..0a92146a87 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -158,32 +158,32 @@ void main(void) Decorate 64(outNormal) Location 0 Decorate 74 ArrayStride 64 Decorate 76 ArrayStride 64 + Decorate 78(UBO) Block MemberDecorate 78(UBO) 0 ColMajor - MemberDecorate 78(UBO) 0 Offset 0 MemberDecorate 78(UBO) 0 MatrixStride 16 + MemberDecorate 78(UBO) 0 Offset 0 MemberDecorate 78(UBO) 1 ColMajor - MemberDecorate 78(UBO) 1 Offset 128 MemberDecorate 78(UBO) 1 MatrixStride 16 + MemberDecorate 78(UBO) 1 Offset 128 MemberDecorate 78(UBO) 2 Offset 256 - Decorate 78(UBO) Block - Decorate 92(ubo) DescriptorSet 0 Decorate 92(ubo) Binding 0 + Decorate 92(ubo) DescriptorSet 0 Decorate 98(gl_InvocationID) BuiltIn InvocationId Decorate 121(inNormal) Location 0 Decorate 130(outColor) Location 1 Decorate 134(inColor) Location 1 + Decorate 151(gl_PerVertex) Block MemberDecorate 151(gl_PerVertex) 0 BuiltIn Position MemberDecorate 151(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 151(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 151(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 151(gl_PerVertex) Block Decorate 208(outLightVec) Location 3 Decorate 217(outViewVec) Location 2 + Decorate 225(gl_PerVertex) Block MemberDecorate 225(gl_PerVertex) 0 BuiltIn Position MemberDecorate 225(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 225(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 225(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 225(gl_PerVertex) Block Decorate 250(gl_ViewportIndex) BuiltIn ViewportIndex Decorate 256(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 260(gl_PrimitiveIDIn) BuiltIn PrimitiveId diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index 8a0308a4f1..9a6a3c6619 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -251,39 +251,39 @@ void main() Name 542 "inNormal" Name 557 "outUV" Decorate 95 ArrayStride 16 + Decorate 99(UBO) Block MemberDecorate 99(UBO) 0 ColMajor - MemberDecorate 99(UBO) 0 Offset 0 MemberDecorate 99(UBO) 0 MatrixStride 16 + MemberDecorate 99(UBO) 0 Offset 0 MemberDecorate 99(UBO) 1 ColMajor - MemberDecorate 99(UBO) 1 Offset 64 MemberDecorate 99(UBO) 1 MatrixStride 16 + MemberDecorate 99(UBO) 1 Offset 64 MemberDecorate 99(UBO) 2 Offset 128 MemberDecorate 99(UBO) 3 Offset 144 MemberDecorate 99(UBO) 4 Offset 240 MemberDecorate 99(UBO) 5 Offset 244 MemberDecorate 99(UBO) 6 Offset 248 MemberDecorate 99(UBO) 7 Offset 256 - Decorate 99(UBO) Block - Decorate 122(ubo) DescriptorSet 0 Decorate 122(ubo) Binding 0 + Decorate 122(ubo) DescriptorSet 0 + Decorate 243(gl_PerVertex) Block MemberDecorate 243(gl_PerVertex) 0 BuiltIn Position MemberDecorate 243(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 243(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 243(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 243(gl_PerVertex) Block Decorate 265(gl_InvocationID) BuiltIn InvocationId - Decorate 285(samplerHeight) DescriptorSet 0 Decorate 285(samplerHeight) Binding 1 + Decorate 285(samplerHeight) DescriptorSet 0 Decorate 294(inUV) Location 1 - Decorate 383(gl_TessLevelInner) Patch Decorate 383(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 399(gl_TessLevelOuter) Patch + Decorate 383(gl_TessLevelInner) Patch Decorate 399(gl_TessLevelOuter) BuiltIn TessLevelOuter + Decorate 399(gl_TessLevelOuter) Patch + Decorate 503(gl_PerVertex) Block MemberDecorate 503(gl_PerVertex) 0 BuiltIn Position MemberDecorate 503(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 503(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 503(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 503(gl_PerVertex) Block Decorate 532(outNormal) Location 0 Decorate 542(inNormal) Location 0 Decorate 557(outUV) Location 1 diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index a5cb502978..6098b73e7e 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -183,34 +183,34 @@ void main() Decorate 93(outUV) Location 1 Decorate 116(inNormal) Location 0 Decorate 143(outNormal) Location 0 + Decorate 166(gl_PerVertex) Block MemberDecorate 166(gl_PerVertex) 0 BuiltIn Position MemberDecorate 166(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 166(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 166(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 166(gl_PerVertex) Block - Decorate 234(displacementMap) DescriptorSet 0 Decorate 234(displacementMap) Binding 1 + Decorate 234(displacementMap) DescriptorSet 0 Decorate 249 ArrayStride 16 + Decorate 251(UBO) Block MemberDecorate 251(UBO) 0 ColMajor - MemberDecorate 251(UBO) 0 Offset 0 MemberDecorate 251(UBO) 0 MatrixStride 16 + MemberDecorate 251(UBO) 0 Offset 0 MemberDecorate 251(UBO) 1 ColMajor - MemberDecorate 251(UBO) 1 Offset 64 MemberDecorate 251(UBO) 1 MatrixStride 16 + MemberDecorate 251(UBO) 1 Offset 64 MemberDecorate 251(UBO) 2 Offset 128 MemberDecorate 251(UBO) 3 Offset 144 MemberDecorate 251(UBO) 4 Offset 240 MemberDecorate 251(UBO) 5 Offset 244 MemberDecorate 251(UBO) 6 Offset 248 MemberDecorate 251(UBO) 7 Offset 256 - Decorate 251(UBO) Block - Decorate 273(ubo) DescriptorSet 0 Decorate 273(ubo) Binding 0 + Decorate 273(ubo) DescriptorSet 0 + Decorate 288(gl_PerVertex) Block MemberDecorate 288(gl_PerVertex) 0 BuiltIn Position MemberDecorate 288(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 288(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 288(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 288(gl_PerVertex) Block Decorate 316(outViewVec) Location 2 Decorate 324(outLightVec) Location 3 Decorate 337(outWorldPos) Location 5 diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index e635c5ef29..f98386118c 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -204,26 +204,26 @@ void main() Decorate 55(inUV) Location 2 Decorate 65(instanceTexIndex) Location 7 Decorate 83(instanceRot) Location 5 + Decorate 98(UBO) Block MemberDecorate 98(UBO) 0 ColMajor - MemberDecorate 98(UBO) 0 Offset 0 MemberDecorate 98(UBO) 0 MatrixStride 16 + MemberDecorate 98(UBO) 0 Offset 0 MemberDecorate 98(UBO) 1 ColMajor - MemberDecorate 98(UBO) 1 Offset 64 MemberDecorate 98(UBO) 1 MatrixStride 16 + MemberDecorate 98(UBO) 1 Offset 64 MemberDecorate 98(UBO) 2 Offset 128 MemberDecorate 98(UBO) 3 Offset 144 MemberDecorate 98(UBO) 4 Offset 148 - Decorate 98(UBO) Block - Decorate 114(ubo) DescriptorSet 0 Decorate 114(ubo) Binding 0 + Decorate 114(ubo) DescriptorSet 0 Decorate 305(inPos) Location 0 Decorate 323(instanceScale) Location 6 Decorate 328(instancePos) Location 4 + Decorate 339(gl_PerVertex) Block MemberDecorate 339(gl_PerVertex) 0 BuiltIn Position MemberDecorate 339(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 339(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 339(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 339(gl_PerVertex) Block Decorate 371(outNormal) Location 0 Decorate 390(inNormal) Location 1 Decorate 428(outLightVec) Location 4 diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index e231ed3e09..72f83ed798 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -144,31 +144,31 @@ spv.debuginfo.hlsl.comp MemberDecorate 91(UBO) 8 Offset 32 MemberDecorate 91(UBO) 9 Offset 48 MemberDecorate 91(UBO) 10 Offset 64 - MemberDecorate 113(ubo) 0 Offset 0 Decorate 113(ubo) Block - Decorate 122 DescriptorSet 0 + MemberDecorate 113(ubo) 0 Offset 0 Decorate 122 Binding 2 + Decorate 122 DescriptorSet 0 MemberDecorate 182(Particle) 0 Offset 0 MemberDecorate 182(Particle) 1 Offset 16 MemberDecorate 182(Particle) 2 Offset 32 MemberDecorate 182(Particle) 3 Offset 48 MemberDecorate 182(Particle) 4 Offset 64 Decorate 197 ArrayStride 80 + Decorate 199(particleIn) BufferBlock MemberDecorate 199(particleIn) 0 NonWritable MemberDecorate 199(particleIn) 0 Offset 0 - Decorate 199(particleIn) BufferBlock - Decorate 208(particleIn) DescriptorSet 0 Decorate 208(particleIn) Binding 0 + Decorate 208(particleIn) DescriptorSet 0 Decorate 220 ArrayStride 80 - MemberDecorate 222(particleOut) 0 Offset 0 Decorate 222(particleOut) BufferBlock - Decorate 230(particleOut) DescriptorSet 0 + MemberDecorate 222(particleOut) 0 Offset 0 Decorate 230(particleOut) Binding 1 + Decorate 230(particleOut) DescriptorSet 0 MemberDecorate 660(PushConstants) 0 Offset 0 - MemberDecorate 668($Global) 0 Offset 0 Decorate 668($Global) Block - Decorate 676 DescriptorSet 0 + MemberDecorate 668($Global) 0 Offset 0 Decorate 676 Binding 3 + Decorate 676 DescriptorSet 0 Decorate 965(id) BuiltIn GlobalInvocationId 4: TypeVoid 5: TypeFunction 4 diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 29ebf408c8..0831b73ca4 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -176,37 +176,37 @@ spv.debuginfo.hlsl.frag Name 896 "inUV" Name 899 "@entryPointOutput" Name 900 "param" - Decorate 164(textureShadowMap) DescriptorSet 0 Decorate 164(textureShadowMap) Binding 5 - Decorate 175(samplerShadowMap) DescriptorSet 0 + Decorate 164(textureShadowMap) DescriptorSet 0 Decorate 175(samplerShadowMap) Binding 5 + Decorate 175(samplerShadowMap) DescriptorSet 0 MemberDecorate 440(Light) 0 Offset 0 MemberDecorate 440(Light) 1 Offset 16 MemberDecorate 440(Light) 2 Offset 32 MemberDecorate 440(Light) 3 RowMajor - MemberDecorate 440(Light) 3 Offset 48 MemberDecorate 440(Light) 3 MatrixStride 16 + MemberDecorate 440(Light) 3 Offset 48 Decorate 453 ArrayStride 112 MemberDecorate 455(UBO) 0 Offset 0 MemberDecorate 455(UBO) 1 Offset 16 MemberDecorate 455(UBO) 2 Offset 352 MemberDecorate 455(UBO) 3 Offset 356 - MemberDecorate 467(ubo) 0 Offset 0 Decorate 467(ubo) Block - Decorate 475 DescriptorSet 0 + MemberDecorate 467(ubo) 0 Offset 0 Decorate 475 Binding 4 - Decorate 521(textureposition) DescriptorSet 0 + Decorate 475 DescriptorSet 0 Decorate 521(textureposition) Binding 1 - Decorate 526(samplerposition) DescriptorSet 0 + Decorate 521(textureposition) DescriptorSet 0 Decorate 526(samplerposition) Binding 1 - Decorate 542(textureNormal) DescriptorSet 0 + Decorate 526(samplerposition) DescriptorSet 0 Decorate 542(textureNormal) Binding 2 - Decorate 547(samplerNormal) DescriptorSet 0 + Decorate 542(textureNormal) DescriptorSet 0 Decorate 547(samplerNormal) Binding 2 - Decorate 561(textureAlbedo) DescriptorSet 0 + Decorate 547(samplerNormal) DescriptorSet 0 Decorate 561(textureAlbedo) Binding 3 - Decorate 566(samplerAlbedo) DescriptorSet 0 + Decorate 561(textureAlbedo) DescriptorSet 0 Decorate 566(samplerAlbedo) Binding 3 + Decorate 566(samplerAlbedo) DescriptorSet 0 Decorate 896(inUV) Location 0 Decorate 899(@entryPointOutput) Location 0 4: TypeVoid diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index 1ba9447056..063a6d5576 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -108,16 +108,16 @@ spv.debuginfo.hlsl.geom Decorate 141 ArrayStride 64 Decorate 143 ArrayStride 64 MemberDecorate 145(UBO) 0 RowMajor - MemberDecorate 145(UBO) 0 Offset 0 MemberDecorate 145(UBO) 0 MatrixStride 16 + MemberDecorate 145(UBO) 0 Offset 0 MemberDecorate 145(UBO) 1 RowMajor - MemberDecorate 145(UBO) 1 Offset 128 MemberDecorate 145(UBO) 1 MatrixStride 16 + MemberDecorate 145(UBO) 1 Offset 128 MemberDecorate 145(UBO) 2 Offset 256 - MemberDecorate 160(ubo) 0 Offset 0 Decorate 160(ubo) Block - Decorate 167 DescriptorSet 0 + MemberDecorate 160(ubo) 0 Offset 0 Decorate 167 Binding 0 + Decorate 167 DescriptorSet 0 Decorate 264(outStream.Pos) BuiltIn Position Decorate 273(outStream.ViewportIndex) BuiltIn ViewportIndex Decorate 278(outStream.PrimitiveID) BuiltIn PrimitiveId diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index 14f1e4b21a..2bccaa87a9 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -143,25 +143,25 @@ WARNING: 0:158: '' : attribute does not apply to entry point Name 698 "@patchConstantOutput.TessLevelInner" Decorate 178 ArrayStride 16 MemberDecorate 180(UBO) 0 RowMajor - MemberDecorate 180(UBO) 0 Offset 0 MemberDecorate 180(UBO) 0 MatrixStride 16 + MemberDecorate 180(UBO) 0 Offset 0 MemberDecorate 180(UBO) 1 RowMajor - MemberDecorate 180(UBO) 1 Offset 64 MemberDecorate 180(UBO) 1 MatrixStride 16 + MemberDecorate 180(UBO) 1 Offset 64 MemberDecorate 180(UBO) 2 Offset 128 MemberDecorate 180(UBO) 3 Offset 144 MemberDecorate 180(UBO) 4 Offset 240 MemberDecorate 180(UBO) 5 Offset 244 MemberDecorate 180(UBO) 6 Offset 248 MemberDecorate 180(UBO) 7 Offset 256 - MemberDecorate 203(ubo) 0 Offset 0 Decorate 203(ubo) Block - Decorate 210 DescriptorSet 0 + MemberDecorate 203(ubo) 0 Offset 0 Decorate 210 Binding 0 - Decorate 334(textureHeight) DescriptorSet 0 + Decorate 210 DescriptorSet 0 Decorate 334(textureHeight) Binding 1 - Decorate 345(samplerHeight) DescriptorSet 0 + Decorate 334(textureHeight) DescriptorSet 0 Decorate 345(samplerHeight) Binding 1 + Decorate 345(samplerHeight) DescriptorSet 0 Decorate 597(patch.Pos) BuiltIn Position Decorate 604(patch.Normal) Location 0 Decorate 611(patch.UV) Location 1 @@ -169,10 +169,10 @@ WARNING: 0:158: '' : attribute does not apply to entry point Decorate 654(@entryPointOutput.Pos) BuiltIn Position Decorate 661(@entryPointOutput.Normal) Location 0 Decorate 668(@entryPointOutput.UV) Location 1 - Decorate 683(@patchConstantOutput.TessLevelOuter) Patch Decorate 683(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 698(@patchConstantOutput.TessLevelInner) Patch + Decorate 683(@patchConstantOutput.TessLevelOuter) Patch Decorate 698(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + Decorate 698(@patchConstantOutput.TessLevelInner) Patch 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 774bf19891..53704c1f62 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -121,33 +121,33 @@ spv.debuginfo.hlsl.tese Name 468 "@entryPointOutput.LightVec" Name 471 "@entryPointOutput.EyePos" Name 474 "@entryPointOutput.WorldPos" - Decorate 241(displacementMapTexture) DescriptorSet 0 Decorate 241(displacementMapTexture) Binding 1 - Decorate 253(displacementMapSampler) DescriptorSet 0 + Decorate 241(displacementMapTexture) DescriptorSet 0 Decorate 253(displacementMapSampler) Binding 1 + Decorate 253(displacementMapSampler) DescriptorSet 0 Decorate 272 ArrayStride 16 MemberDecorate 274(UBO) 0 RowMajor - MemberDecorate 274(UBO) 0 Offset 0 MemberDecorate 274(UBO) 0 MatrixStride 16 + MemberDecorate 274(UBO) 0 Offset 0 MemberDecorate 274(UBO) 1 RowMajor - MemberDecorate 274(UBO) 1 Offset 64 MemberDecorate 274(UBO) 1 MatrixStride 16 + MemberDecorate 274(UBO) 1 Offset 64 MemberDecorate 274(UBO) 2 Offset 128 MemberDecorate 274(UBO) 3 Offset 144 MemberDecorate 274(UBO) 4 Offset 240 MemberDecorate 274(UBO) 5 Offset 244 MemberDecorate 274(UBO) 6 Offset 248 MemberDecorate 274(UBO) 7 Offset 256 - MemberDecorate 297(ubo) 0 Offset 0 Decorate 297(ubo) Block - Decorate 303 DescriptorSet 0 + MemberDecorate 297(ubo) 0 Offset 0 Decorate 303 Binding 0 - Decorate 368(input.TessLevelOuter) Patch + Decorate 303 DescriptorSet 0 Decorate 368(input.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 383(input.TessLevelInner) Patch + Decorate 368(input.TessLevelOuter) Patch Decorate 383(input.TessLevelInner) BuiltIn TessLevelInner - Decorate 392(TessCoord) Patch + Decorate 383(input.TessLevelInner) Patch Decorate 392(TessCoord) BuiltIn TessCoord + Decorate 392(TessCoord) Patch Decorate 401(patch.Pos) BuiltIn Position Decorate 408(patch.Normal) Location 0 Decorate 414(patch.UV) Location 1 diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 55452392e8..d557c09c19 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -106,18 +106,18 @@ spv.debuginfo.hlsl.vert Name 506 "@entryPointOutput.ViewVec" Name 509 "@entryPointOutput.LightVec" MemberDecorate 143(UBO) 0 RowMajor - MemberDecorate 143(UBO) 0 Offset 0 MemberDecorate 143(UBO) 0 MatrixStride 16 + MemberDecorate 143(UBO) 0 Offset 0 MemberDecorate 143(UBO) 1 RowMajor - MemberDecorate 143(UBO) 1 Offset 64 MemberDecorate 143(UBO) 1 MatrixStride 16 + MemberDecorate 143(UBO) 1 Offset 64 MemberDecorate 143(UBO) 2 Offset 128 MemberDecorate 143(UBO) 3 Offset 144 MemberDecorate 143(UBO) 4 Offset 148 - MemberDecorate 159(ubo) 0 Offset 0 Decorate 159(ubo) Block - Decorate 166 DescriptorSet 0 + MemberDecorate 159(ubo) 0 Offset 0 Decorate 166 Binding 0 + Decorate 166 DescriptorSet 0 Decorate 461(input.Pos) Location 0 Decorate 464(input.Normal) Location 1 Decorate 468(input.UV) Location 2 diff --git a/Test/baseResults/spv.debuginfo.include.glsl.frag.out b/Test/baseResults/spv.debuginfo.include.glsl.frag.out index 2245395011..02b893f2cc 100644 --- a/Test/baseResults/spv.debuginfo.include.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.include.glsl.frag.out @@ -67,10 +67,10 @@ vec4 headerFunction(vec4 a) { Name 100 "param" Name 107 "param" Decorate 81(headerOut) Location 0 - MemberDecorate 85(UBO) 0 Offset 0 Decorate 85(UBO) Block - Decorate 93 DescriptorSet 0 + MemberDecorate 85(UBO) 0 Offset 0 Decorate 93 Binding 0 + Decorate 93 DescriptorSet 0 5: TypeVoid 6: TypeFunction 5 8: TypeInt 32 0 diff --git a/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out index 140c9b9043..39814e8590 100644 --- a/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out +++ b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out @@ -73,11 +73,11 @@ void main() MemberName 85(block) 0 "dir" MemberName 85(block) 1 "origin" Name 94 "" - Decorate 76(acc0) DescriptorSet 0 Decorate 76(acc0) Binding 0 + Decorate 76(acc0) DescriptorSet 0 + Decorate 85(block) BufferBlock MemberDecorate 85(block) 0 Offset 0 MemberDecorate 85(block) 1 Offset 16 - Decorate 85(block) BufferBlock 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 diff --git a/Test/baseResults/spv.deepRvalue.frag.out b/Test/baseResults/spv.deepRvalue.frag.out index efb9d2ec69..a278a9cf0f 100644 --- a/Test/baseResults/spv.deepRvalue.frag.out +++ b/Test/baseResults/spv.deepRvalue.frag.out @@ -27,8 +27,8 @@ spv.deepRvalue.frag MemberName 131(str) 2 "c" Name 133 "t" Name 146 "gl_FragColor" - Decorate 111(samp2D) DescriptorSet 0 Decorate 111(samp2D) Binding 0 + Decorate 111(samp2D) DescriptorSet 0 Decorate 146(gl_FragColor) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.deviceGroup.frag.out b/Test/baseResults/spv.deviceGroup.frag.out index 68285a1bdf..7ffc1957c4 100644 --- a/Test/baseResults/spv.deviceGroup.frag.out +++ b/Test/baseResults/spv.deviceGroup.frag.out @@ -15,8 +15,8 @@ spv.deviceGroup.frag Name 9 "color" Name 12 "gl_DeviceIndex" Decorate 9(color) Location 0 - Decorate 12(gl_DeviceIndex) Flat Decorate 12(gl_DeviceIndex) BuiltIn DeviceIndex + Decorate 12(gl_DeviceIndex) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.double.comp.out b/Test/baseResults/spv.double.comp.out index 3a5eef8a0d..f7a4f81112 100644 --- a/Test/baseResults/spv.double.comp.out +++ b/Test/baseResults/spv.double.comp.out @@ -22,16 +22,16 @@ spv.double.comp Name 49 "aa" Name 54 "globalCoef" Name 59 "destTex" + Decorate 8(bufName) BufferBlock MemberDecorate 8(bufName) 0 Offset 0 MemberDecorate 8(bufName) 1 Offset 8 - Decorate 8(bufName) BufferBlock - Decorate 10(bufInst) DescriptorSet 0 Decorate 10(bufInst) Binding 0 + Decorate 10(bufInst) DescriptorSet 0 Decorate 26(gl_GlobalInvocationID) BuiltIn GlobalInvocationId Decorate 33(gl_LocalInvocationID) BuiltIn LocalInvocationId - Decorate 59(destTex) DescriptorSet 0 - Decorate 59(destTex) Binding 0 Decorate 59(destTex) NonReadable + Decorate 59(destTex) Binding 0 + Decorate 59(destTex) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.expect_assume.assumeEXT.comp.out b/Test/baseResults/spv.expect_assume.assumeEXT.comp.out index 517103f084..b865bd8350 100644 --- a/Test/baseResults/spv.expect_assume.assumeEXT.comp.out +++ b/Test/baseResults/spv.expect_assume.assumeEXT.comp.out @@ -16,11 +16,11 @@ spv.expect_assume.assumeEXT.comp Name 7 "roblock" MemberName 7(roblock) 0 "i" Name 9 "ro" + Decorate 7(roblock) BufferBlock MemberDecorate 7(roblock) 0 NonWritable MemberDecorate 7(roblock) 0 Offset 0 - Decorate 7(roblock) BufferBlock - Decorate 9(ro) DescriptorSet 0 Decorate 9(ro) Binding 0 + Decorate 9(ro) DescriptorSet 0 Decorate 21 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.expect_assume.expectEXT.comp.out b/Test/baseResults/spv.expect_assume.expectEXT.comp.out index ee4fdf6184..8cc9f48e03 100644 --- a/Test/baseResults/spv.expect_assume.expectEXT.comp.out +++ b/Test/baseResults/spv.expect_assume.expectEXT.comp.out @@ -28,6 +28,7 @@ spv.expect_assume.expectEXT.comp MemberName 18(roblock) 10 "uv3" MemberName 18(roblock) 11 "uv4" Name 20 "ro" + Decorate 18(roblock) BufferBlock MemberDecorate 18(roblock) 0 NonWritable MemberDecorate 18(roblock) 0 Offset 0 MemberDecorate 18(roblock) 1 NonWritable @@ -52,9 +53,8 @@ spv.expect_assume.expectEXT.comp MemberDecorate 18(roblock) 10 Offset 112 MemberDecorate 18(roblock) 11 NonWritable MemberDecorate 18(roblock) 11 Offset 128 - Decorate 18(roblock) BufferBlock - Decorate 20(ro) DescriptorSet 0 Decorate 20(ro) Binding 0 + Decorate 20(ro) DescriptorSet 0 Decorate 177 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out b/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out index 6647f0c6a6..d0f2632f67 100644 --- a/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out +++ b/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out @@ -56,6 +56,7 @@ spv.expect_assume.expectEXT.exttypes.comp MemberName 42(roblock) 30 "u64v3" MemberName 42(roblock) 31 "u64v4" Name 44 "ro" + Decorate 42(roblock) BufferBlock MemberDecorate 42(roblock) 0 NonWritable MemberDecorate 42(roblock) 0 Offset 0 MemberDecorate 42(roblock) 1 NonWritable @@ -120,9 +121,8 @@ spv.expect_assume.expectEXT.exttypes.comp MemberDecorate 42(roblock) 30 Offset 320 MemberDecorate 42(roblock) 31 NonWritable MemberDecorate 42(roblock) 31 Offset 352 - Decorate 42(roblock) BufferBlock - Decorate 44(ro) DescriptorSet 0 Decorate 44(ro) Binding 0 + Decorate 44(ro) DescriptorSet 0 Decorate 457 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.explicittypes.frag.out b/Test/baseResults/spv.explicittypes.frag.out index 3b33460318..eec771a964 100644 --- a/Test/baseResults/spv.explicittypes.frag.out +++ b/Test/baseResults/spv.explicittypes.frag.out @@ -114,10 +114,11 @@ spv.explicittypes.frag MemberName 564(Block) 14 "u32v3" MemberName 564(Block) 15 "u32v4" Name 566 "block" - MemberDecorate 26(Uniforms) 0 Offset 0 Decorate 26(Uniforms) Block - Decorate 28 DescriptorSet 0 + MemberDecorate 26(Uniforms) 0 Offset 0 Decorate 28 Binding 0 + Decorate 28 DescriptorSet 0 + Decorate 564(Block) Block MemberDecorate 564(Block) 0 Offset 0 MemberDecorate 564(Block) 1 Offset 4 MemberDecorate 564(Block) 2 Offset 8 @@ -134,9 +135,8 @@ spv.explicittypes.frag MemberDecorate 564(Block) 13 Offset 104 MemberDecorate 564(Block) 14 Offset 112 MemberDecorate 564(Block) 15 Offset 128 - Decorate 564(Block) Block - Decorate 566(block) DescriptorSet 0 Decorate 566(block) Binding 1 + Decorate 566(block) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 16: TypeInt 64 1 diff --git a/Test/baseResults/spv.ext.AccelDecl.frag.out b/Test/baseResults/spv.ext.AccelDecl.frag.out index e329ee9224..9b41897336 100644 --- a/Test/baseResults/spv.ext.AccelDecl.frag.out +++ b/Test/baseResults/spv.ext.AccelDecl.frag.out @@ -21,8 +21,8 @@ spv.ext.AccelDecl.frag Name 9 "outColor" Name 14 "topLevelAS" Decorate 9(outColor) Location 0 - Decorate 14(topLevelAS) DescriptorSet 0 Decorate 14(topLevelAS) Binding 1 + Decorate 14(topLevelAS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out index 3c1883bcc6..3a47f1eaeb 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader.rchit.out @@ -74,8 +74,8 @@ spv.ext.ClosestHitShader.rchit Decorate 69(gl_GeometryIndexEXT) BuiltIn RayGeometryIndexKHR Decorate 81(gl_CullMaskEXT) BuiltIn CullMaskKHR Decorate 87(gl_HitTriangleVertexPositionsEXT) BuiltIn HitTriangleVertexPositionsKHR - Decorate 93(accEXT) DescriptorSet 0 Decorate 93(accEXT) Binding 0 + Decorate 93(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out index d586ffb441..28a5470096 100644 --- a/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out +++ b/Test/baseResults/spv.ext.ClosestHitShader_Subgroup.rchit.out @@ -32,8 +32,8 @@ spv.ext.ClosestHitShader_Subgroup.rchit Name 48 "gl_SubgroupLeMask" Name 53 "gl_SubGroupLtMaskARB" Name 61 "gl_SMIDNV" - Decorate 8(accEXT) DescriptorSet 0 Decorate 8(accEXT) Binding 0 + Decorate 8(accEXT) DescriptorSet 0 Decorate 28(gl_SubgroupInvocationID) RelaxedPrecision Decorate 28(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 29 RelaxedPrecision diff --git a/Test/baseResults/spv.ext.MissShader.rmiss.out b/Test/baseResults/spv.ext.MissShader.rmiss.out index 0f0f25a516..d03c5c38b1 100644 --- a/Test/baseResults/spv.ext.MissShader.rmiss.out +++ b/Test/baseResults/spv.ext.MissShader.rmiss.out @@ -57,8 +57,8 @@ spv.ext.MissShader.rmiss Decorate 29(gl_RayTminEXT) BuiltIn RayTminKHR Decorate 32(gl_RayTmaxEXT) BuiltIn RayTmaxKHR Decorate 37(gl_CullMaskEXT) BuiltIn CullMaskKHR - Decorate 41(accEXT) DescriptorSet 0 Decorate 41(accEXT) Binding 0 + Decorate 41(accEXT) DescriptorSet 0 Decorate 57(gl_SubGroupSizeARB) BuiltIn SubgroupSize Decorate 57(gl_SubGroupSizeARB) Volatile Decorate 57(gl_SubGroupSizeARB) Coherent @@ -68,8 +68,8 @@ spv.ext.MissShader.rmiss Decorate 67(gl_WarpIDNV) BuiltIn WarpIDNV Decorate 67(gl_WarpIDNV) Volatile Decorate 67(gl_WarpIDNV) Coherent - Decorate 78(s2D) DescriptorSet 0 Decorate 78(s2D) Binding 1 + Decorate 78(s2D) DescriptorSet 0 Decorate 82(c2) Location 2 Decorate 87(lodClamp) Location 3 2: TypeVoid diff --git a/Test/baseResults/spv.ext.RayConstants.rgen.out b/Test/baseResults/spv.ext.RayConstants.rgen.out index 9cd294a9a2..05fb8f790c 100644 --- a/Test/baseResults/spv.ext.RayConstants.rgen.out +++ b/Test/baseResults/spv.ext.RayConstants.rgen.out @@ -13,8 +13,8 @@ spv.ext.RayConstants.rgen Name 4 "main" Name 8 "accEXT" Name 26 "payload" - Decorate 8(accEXT) DescriptorSet 0 Decorate 8(accEXT) Binding 0 + Decorate 8(accEXT) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeAccelerationStructureKHR diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out index 31a8bda0fe..7fec5c39a9 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout.rgen.out @@ -37,6 +37,7 @@ spv.ext.RayGenSBTlayout.rgen Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 8 Decorate 35 ArrayStride 16 + Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 @@ -48,7 +49,6 @@ spv.ext.RayGenSBTlayout.rgen MemberDecorate 36(block) 8 Offset 112 MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 - Decorate 36(block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out index f0302f746a..714242b023 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout140.rgen.out @@ -37,6 +37,7 @@ spv.ext.RayGenSBTlayout140.rgen Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 16 Decorate 35 ArrayStride 16 + Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 @@ -48,7 +49,6 @@ spv.ext.RayGenSBTlayout140.rgen MemberDecorate 36(block) 8 Offset 128 MemberDecorate 36(block) 9 Offset 136 MemberDecorate 36(block) 10 Offset 144 - Decorate 36(block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out index e83dd42422..ab2b9963a7 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayout430.rgen.out @@ -37,6 +37,7 @@ spv.ext.RayGenSBTlayout430.rgen Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 8 Decorate 35 ArrayStride 16 + Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 @@ -48,7 +49,6 @@ spv.ext.RayGenSBTlayout430.rgen MemberDecorate 36(block) 8 Offset 112 MemberDecorate 36(block) 9 Offset 120 MemberDecorate 36(block) 10 Offset 128 - Decorate 36(block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out index a24b64c7d1..6f4b471d1c 100644 --- a/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out +++ b/Test/baseResults/spv.ext.RayGenSBTlayoutscalar.rgen.out @@ -38,6 +38,7 @@ spv.ext.RayGenSBTlayoutscalar.rgen Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR Decorate 34 ArrayStride 8 Decorate 35 ArrayStride 12 + Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 12 MemberDecorate 36(block) 2 Offset 24 @@ -49,7 +50,6 @@ spv.ext.RayGenSBTlayoutscalar.rgen MemberDecorate 36(block) 8 Offset 92 MemberDecorate 36(block) 9 Offset 96 MemberDecorate 36(block) 10 Offset 104 - Decorate 36(block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenShader.rgen.out b/Test/baseResults/spv.ext.RayGenShader.rgen.out index b872d9e0f2..37380e9605 100644 --- a/Test/baseResults/spv.ext.RayGenShader.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader.rgen.out @@ -30,15 +30,15 @@ spv.ext.RayGenShader.rgen Name 57 "imageu" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR - Decorate 29(accEXT0) DescriptorSet 0 Decorate 29(accEXT0) Binding 0 + Decorate 29(accEXT0) DescriptorSet 0 + Decorate 38(block) Block MemberDecorate 38(block) 0 Offset 0 MemberDecorate 38(block) 1 Offset 16 - Decorate 38(block) Block - Decorate 54(accEXT1) DescriptorSet 0 Decorate 54(accEXT1) Binding 1 - Decorate 57(imageu) DescriptorSet 0 + Decorate 54(accEXT1) DescriptorSet 0 Decorate 57(imageu) Binding 2 + Decorate 57(imageu) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenShader11.rgen.out b/Test/baseResults/spv.ext.RayGenShader11.rgen.out index d79f4f37dc..b8d725633c 100644 --- a/Test/baseResults/spv.ext.RayGenShader11.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShader11.rgen.out @@ -25,11 +25,11 @@ spv.ext.RayGenShader11.rgen Name 52 "payload" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR - Decorate 29(accEXT) DescriptorSet 0 Decorate 29(accEXT) Binding 0 + Decorate 29(accEXT) DescriptorSet 0 + Decorate 37(block) Block MemberDecorate 37(block) 0 Offset 0 MemberDecorate 37(block) 1 Offset 16 - Decorate 37(block) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out index 7e351d75d5..ebe0d39a8e 100644 --- a/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out +++ b/Test/baseResults/spv.ext.RayGenShaderArray.rgen.out @@ -35,16 +35,16 @@ spv.ext.RayGenShaderArray.rgen Name 65 "accEXT1" Decorate 11(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 21(gl_LaunchSizeEXT) BuiltIn LaunchSizeKHR - Decorate 30(accEXT0) DescriptorSet 0 Decorate 30(accEXT0) Binding 0 + Decorate 30(accEXT0) DescriptorSet 0 + Decorate 36(block) Block MemberDecorate 36(block) 0 Offset 0 MemberDecorate 36(block) 1 Offset 16 MemberDecorate 36(block) 2 Offset 28 MemberDecorate 36(block) 3 Offset 32 MemberDecorate 36(block) 4 Offset 40 - Decorate 36(block) Block - Decorate 65(accEXT1) DescriptorSet 0 Decorate 65(accEXT1) Binding 1 + Decorate 65(accEXT1) DescriptorSet 0 Decorate 80 DecorationNonUniformEXT Decorate 81 DecorationNonUniformEXT Decorate 82 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.ext.World3x4.rahit.out b/Test/baseResults/spv.ext.World3x4.rahit.out index 92ad18fbe0..3c63dd330c 100644 --- a/Test/baseResults/spv.ext.World3x4.rahit.out +++ b/Test/baseResults/spv.ext.World3x4.rahit.out @@ -26,8 +26,8 @@ spv.ext.World3x4.rahit Name 89 "hitValue" Decorate 43(gl_LaunchIDEXT) BuiltIn LaunchIdKHR Decorate 60(gl_WorldToObject3x4EXT) BuiltIn WorldToObjectKHR - Decorate 78(result) DescriptorSet 0 Decorate 78(result) Binding 0 + Decorate 78(result) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out index a1d71a5b07..7fac1a7e27 100644 --- a/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderBuiltins.mesh.out @@ -50,20 +50,20 @@ spv.ext.meshShaderBuiltins.mesh Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups + Decorate 38(gl_MeshPerVertexEXT) Block MemberDecorate 38(gl_MeshPerVertexEXT) 0 BuiltIn Position MemberDecorate 38(gl_MeshPerVertexEXT) 1 BuiltIn PointSize MemberDecorate 38(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance MemberDecorate 38(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance - Decorate 38(gl_MeshPerVertexEXT) Block - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + Decorate 90(gl_MeshPerPrimitiveEXT) Block MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT - Decorate 90(gl_MeshPerPrimitiveEXT) Block + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV Decorate 134(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 152(gl_DrawIDARB) BuiltIn DrawIndex Decorate 155(gl_ViewIndex) BuiltIn ViewIndex diff --git a/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out b/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out index 65bd740d44..fc14ff6c04 100644 --- a/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderBuiltinsShadingRate.mesh.out @@ -54,22 +54,22 @@ spv.ext.meshShaderBuiltinsShadingRate.mesh Decorate 13(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 19(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_NumWorkGroups) BuiltIn NumWorkgroups + Decorate 38(gl_MeshPerVertexEXT) Block MemberDecorate 38(gl_MeshPerVertexEXT) 0 BuiltIn Position MemberDecorate 38(gl_MeshPerVertexEXT) 1 BuiltIn PointSize MemberDecorate 38(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance MemberDecorate 38(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance - Decorate 38(gl_MeshPerVertexEXT) Block - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + Decorate 90(gl_MeshPerPrimitiveEXT) Block MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT - MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 BuiltIn PrimitiveShadingRateKHR - Decorate 90(gl_MeshPerPrimitiveEXT) Block + MemberDecorate 90(gl_MeshPerPrimitiveEXT) 4 PerPrimitiveNV Decorate 140(gl_PrimitiveTriangleIndicesEXT) BuiltIn PrimitiveTriangleIndicesEXT Decorate 158(gl_DrawIDARB) BuiltIn DrawIndex Decorate 161(gl_ViewIndex) BuiltIn ViewIndex diff --git a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out index 357730076c..534cf403fb 100644 --- a/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderRedeclBuiltins.mesh.out @@ -36,20 +36,20 @@ spv.ext.meshShaderRedeclBuiltins.mesh Name 122 "gl_PrimitivePointIndicesEXT" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 26(gl_MeshPerVertexEXT) Block MemberDecorate 26(gl_MeshPerVertexEXT) 0 BuiltIn Position MemberDecorate 26(gl_MeshPerVertexEXT) 1 BuiltIn PointSize MemberDecorate 26(gl_MeshPerVertexEXT) 2 BuiltIn ClipDistance MemberDecorate 26(gl_MeshPerVertexEXT) 3 BuiltIn CullDistance - Decorate 26(gl_MeshPerVertexEXT) Block - MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV + Decorate 78(gl_MeshPerPrimitiveEXT) Block MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 BuiltIn PrimitiveId - MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 0 PerPrimitiveNV MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 BuiltIn Layer - MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 1 PerPrimitiveNV MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 BuiltIn ViewportIndex - MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 2 PerPrimitiveNV MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 BuiltIn CullPrimitiveEXT - Decorate 78(gl_MeshPerPrimitiveEXT) Block + MemberDecorate 78(gl_MeshPerPrimitiveEXT) 3 PerPrimitiveNV Decorate 122(gl_PrimitivePointIndicesEXT) BuiltIn PrimitivePointIndicesEXT Decorate 127 BuiltIn WorkgroupSize 2: TypeVoid diff --git a/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out index b206177e22..5af26300f7 100644 --- a/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderTaskMem.mesh.out @@ -33,11 +33,11 @@ spv.ext.meshShaderTaskMem.mesh Decorate 18(outBlock) Block Decorate 22(myblk) Location 0 Decorate 35 ArrayStride 4 + Decorate 36(bufferBlock) Block MemberDecorate 36(bufferBlock) 0 Offset 0 MemberDecorate 36(bufferBlock) 1 Offset 16 - Decorate 36(bufferBlock) Block - Decorate 38(mybuf) DescriptorSet 0 Decorate 38(mybuf) Binding 0 + Decorate 38(mybuf) DescriptorSet 0 Decorate 57 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out index dc347aac32..6fcd594e07 100644 --- a/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.ext.meshShaderUserDefined.mesh.out @@ -34,13 +34,13 @@ spv.ext.meshShaderUserDefined.mesh Name 104 "blk2" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 30(myblock) Block MemberDecorate 30(myblock) 0 PerPrimitiveNV MemberDecorate 30(myblock) 1 PerPrimitiveNV MemberDecorate 30(myblock) 2 PerPrimitiveNV MemberDecorate 30(myblock) 3 PerPrimitiveNV MemberDecorate 30(myblock) 4 PerPrimitiveNV MemberDecorate 30(myblock) 5 PerPrimitiveNV - Decorate 30(myblock) Block Decorate 34(blk) Location 0 Decorate 100(myblock2) Block Decorate 104(blk2) Location 20 diff --git a/Test/baseResults/spv.ext.meshTaskShader.task.out b/Test/baseResults/spv.ext.meshTaskShader.task.out index 41a81d0a1d..d3f26116ec 100644 --- a/Test/baseResults/spv.ext.meshTaskShader.task.out +++ b/Test/baseResults/spv.ext.meshTaskShader.task.out @@ -29,13 +29,13 @@ spv.ext.meshTaskShader.task Name 80 "mytask" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId - MemberDecorate 37(block0) 0 Offset 0 Decorate 37(block0) Block - Decorate 39 DescriptorSet 0 + MemberDecorate 37(block0) 0 Offset 0 Decorate 39 Binding 1 - Decorate 55(uni_image) DescriptorSet 0 - Decorate 55(uni_image) Binding 0 + Decorate 39 DescriptorSet 0 Decorate 55(uni_image) NonReadable + Decorate 55(uni_image) Binding 0 + Decorate 55(uni_image) DescriptorSet 0 Decorate 102 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ext.textureShadowLod.frag.out b/Test/baseResults/spv.ext.textureShadowLod.frag.out index ca4a872777..c4f9f3529b 100644 --- a/Test/baseResults/spv.ext.textureShadowLod.frag.out +++ b/Test/baseResults/spv.ext.textureShadowLod.frag.out @@ -18,13 +18,13 @@ spv.ext.textureShadowLod.frag Name 24 "sca" Name 43 "sc" Decorate 8(c) Location 0 - Decorate 12(s2da) DescriptorSet 0 Decorate 12(s2da) Binding 0 + Decorate 12(s2da) DescriptorSet 0 Decorate 16(tc) Location 0 - Decorate 24(sca) DescriptorSet 0 Decorate 24(sca) Binding 1 - Decorate 43(sc) DescriptorSet 0 + Decorate 24(sca) DescriptorSet 0 Decorate 43(sc) Binding 2 + Decorate 43(sc) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.float16.frag.out b/Test/baseResults/spv.float16.frag.out index 5c33e2ceb5..21e916382c 100644 --- a/Test/baseResults/spv.float16.frag.out +++ b/Test/baseResults/spv.float16.frag.out @@ -122,42 +122,42 @@ Validation failed MemberDecorate 518(S) 1 Offset 4 MemberDecorate 518(S) 2 Offset 8 Decorate 519 ArrayStride 16 + Decorate 520(B1) Block MemberDecorate 520(B1) 0 Offset 0 MemberDecorate 520(B1) 1 Offset 4 MemberDecorate 520(B1) 2 Offset 8 MemberDecorate 520(B1) 3 Offset 16 MemberDecorate 520(B1) 4 ColMajor - MemberDecorate 520(B1) 4 Offset 48 MemberDecorate 520(B1) 4 MatrixStride 16 + MemberDecorate 520(B1) 4 Offset 48 MemberDecorate 520(B1) 5 ColMajor - MemberDecorate 520(B1) 5 Offset 80 MemberDecorate 520(B1) 5 MatrixStride 16 + MemberDecorate 520(B1) 5 Offset 80 MemberDecorate 520(B1) 6 Offset 144 MemberDecorate 520(B1) 7 Offset 160 - Decorate 520(B1) Block - Decorate 522 DescriptorSet 0 Decorate 522 Binding 0 + Decorate 522 DescriptorSet 0 Decorate 523 ArrayStride 2 Decorate 524 ArrayStride 12 MemberDecorate 525(S) 0 Offset 0 MemberDecorate 525(S) 1 Offset 4 MemberDecorate 525(S) 2 Offset 8 Decorate 526 ArrayStride 16 + Decorate 527(B2) BufferBlock MemberDecorate 527(B2) 0 Offset 0 MemberDecorate 527(B2) 1 Offset 4 MemberDecorate 527(B2) 2 Offset 8 MemberDecorate 527(B2) 3 Offset 14 MemberDecorate 527(B2) 4 RowMajor - MemberDecorate 527(B2) 4 Offset 20 MemberDecorate 527(B2) 4 MatrixStride 4 + MemberDecorate 527(B2) 4 Offset 20 MemberDecorate 527(B2) 5 RowMajor - MemberDecorate 527(B2) 5 Offset 32 MemberDecorate 527(B2) 5 MatrixStride 4 + MemberDecorate 527(B2) 5 Offset 32 MemberDecorate 527(B2) 6 Offset 56 MemberDecorate 527(B2) 7 Offset 72 - Decorate 527(B2) BufferBlock - Decorate 529 DescriptorSet 0 Decorate 529 Binding 0 + Decorate 529 DescriptorSet 0 Decorate 530(sf16) SpecId 100 Decorate 531(sf) SpecId 101 Decorate 532(sd) SpecId 102 diff --git a/Test/baseResults/spv.float16Fetch.frag.out b/Test/baseResults/spv.float16Fetch.frag.out index f61bde340b..cfe2491413 100644 --- a/Test/baseResults/spv.float16Fetch.frag.out +++ b/Test/baseResults/spv.float16Fetch.frag.out @@ -207,117 +207,117 @@ Validation failed Name 5783 "t2DMS" Name 5785 "t2DMSArray" Name 5786 "bias" - Decorate 125(s1D) DescriptorSet 0 Decorate 125(s1D) Binding 0 + Decorate 125(s1D) DescriptorSet 0 Decorate 128(c1) Location 0 Decorate 135(f16c1) Location 11 Decorate 137(f16bias) Location 16 - Decorate 145(s2D) DescriptorSet 0 Decorate 145(s2D) Binding 1 + Decorate 145(s2D) DescriptorSet 0 Decorate 148(c2) Location 1 Decorate 156(f16c2) Location 12 - Decorate 165(s3D) DescriptorSet 0 Decorate 165(s3D) Binding 2 + Decorate 165(s3D) DescriptorSet 0 Decorate 169(c3) Location 2 Decorate 177(f16c3) Location 13 - Decorate 186(sCube) DescriptorSet 0 Decorate 186(sCube) Binding 4 - Decorate 201(s1DShadow) DescriptorSet 0 + Decorate 186(sCube) DescriptorSet 0 Decorate 201(s1DShadow) Binding 11 + Decorate 201(s1DShadow) DescriptorSet 0 Decorate 215(compare) Location 4 - Decorate 226(s2DShadow) DescriptorSet 0 Decorate 226(s2DShadow) Binding 12 - Decorate 247(sCubeShadow) DescriptorSet 0 + Decorate 226(s2DShadow) DescriptorSet 0 Decorate 247(sCubeShadow) Binding 14 + Decorate 247(sCubeShadow) DescriptorSet 0 Decorate 251(c4) Location 3 - Decorate 271(s1DArray) DescriptorSet 0 Decorate 271(s1DArray) Binding 7 - Decorate 286(s2DArray) DescriptorSet 0 + Decorate 271(s1DArray) DescriptorSet 0 Decorate 286(s2DArray) Binding 8 - Decorate 301(sCubeArray) DescriptorSet 0 + Decorate 286(s2DArray) DescriptorSet 0 Decorate 301(sCubeArray) Binding 9 + Decorate 301(sCubeArray) DescriptorSet 0 Decorate 309(f16c4) Location 14 - Decorate 318(s1DArrayShadow) DescriptorSet 0 Decorate 318(s1DArrayShadow) Binding 15 - Decorate 339(s2DArrayShadow) DescriptorSet 0 + Decorate 318(s1DArrayShadow) DescriptorSet 0 Decorate 339(s2DArrayShadow) Binding 16 - Decorate 359(s2DRect) DescriptorSet 0 + Decorate 339(s2DArrayShadow) DescriptorSet 0 Decorate 359(s2DRect) Binding 3 - Decorate 373(s2DRectShadow) DescriptorSet 0 + Decorate 359(s2DRect) DescriptorSet 0 Decorate 373(s2DRectShadow) Binding 13 - Decorate 393(sCubeArrayShadow) DescriptorSet 0 + Decorate 373(s2DRectShadow) DescriptorSet 0 Decorate 393(sCubeArrayShadow) Binding 17 + Decorate 393(sCubeArrayShadow) DescriptorSet 0 Decorate 565(lod) Location 5 Decorate 572(f16lod) Location 15 - Decorate 1300(sBuffer) DescriptorSet 0 Decorate 1300(sBuffer) Binding 5 - Decorate 1311(s2DMS) DescriptorSet 0 + Decorate 1300(sBuffer) DescriptorSet 0 Decorate 1311(s2DMS) Binding 6 - Decorate 1322(s2DMSArray) DescriptorSet 0 + Decorate 1311(s2DMS) DescriptorSet 0 Decorate 1322(s2DMSArray) Binding 10 + Decorate 1322(s2DMSArray) DescriptorSet 0 Decorate 1393(dPdxy1) Location 8 Decorate 1400(f16dPdxy1) Location 18 Decorate 1407(dPdxy2) Location 9 Decorate 1414(f16dPdxy2) Location 19 Decorate 1421(dPdxy3) Location 10 Decorate 1428(f16dPdxy3) Location 20 - Decorate 2909(i1D) DescriptorSet 1 Decorate 2909(i1D) Binding 0 - Decorate 2918(i2D) DescriptorSet 1 + Decorate 2909(i1D) DescriptorSet 1 Decorate 2918(i2D) Binding 1 - Decorate 2927(i3D) DescriptorSet 1 + Decorate 2918(i2D) DescriptorSet 1 Decorate 2927(i3D) Binding 2 - Decorate 2936(i2DRect) DescriptorSet 1 + Decorate 2927(i3D) DescriptorSet 1 Decorate 2936(i2DRect) Binding 3 - Decorate 2945(iCube) DescriptorSet 1 + Decorate 2936(i2DRect) DescriptorSet 1 Decorate 2945(iCube) Binding 4 - Decorate 2954(iBuffer) DescriptorSet 1 + Decorate 2945(iCube) DescriptorSet 1 Decorate 2954(iBuffer) Binding 8 - Decorate 2963(i1DArray) DescriptorSet 1 + Decorate 2954(iBuffer) DescriptorSet 1 Decorate 2963(i1DArray) Binding 5 - Decorate 2972(i2DArray) DescriptorSet 1 + Decorate 2963(i1DArray) DescriptorSet 1 Decorate 2972(i2DArray) Binding 6 - Decorate 2981(iCubeArray) DescriptorSet 1 + Decorate 2972(i2DArray) DescriptorSet 1 Decorate 2981(iCubeArray) Binding 7 - Decorate 2990(i2DMS) DescriptorSet 1 + Decorate 2981(iCubeArray) DescriptorSet 1 Decorate 2990(i2DMS) Binding 9 - Decorate 2999(i2DMSArray) DescriptorSet 1 + Decorate 2990(i2DMS) DescriptorSet 1 Decorate 2999(i2DMSArray) Binding 10 + Decorate 2999(i2DMSArray) DescriptorSet 1 Decorate 4187(lodClamp) Location 7 Decorate 4194(f16lodClamp) Location 17 - Decorate 5316(t1D) DescriptorSet 2 Decorate 5316(t1D) Binding 0 - Decorate 5320(s) DescriptorSet 2 + Decorate 5316(t1D) DescriptorSet 2 Decorate 5320(s) Binding 11 - Decorate 5336(t2D) DescriptorSet 2 + Decorate 5320(s) DescriptorSet 2 Decorate 5336(t2D) Binding 1 - Decorate 5353(t3D) DescriptorSet 2 + Decorate 5336(t2D) DescriptorSet 2 Decorate 5353(t3D) Binding 2 - Decorate 5370(tCube) DescriptorSet 2 + Decorate 5353(t3D) DescriptorSet 2 Decorate 5370(tCube) Binding 4 - Decorate 5387(sShadow) DescriptorSet 2 + Decorate 5370(tCube) DescriptorSet 2 Decorate 5387(sShadow) Binding 12 - Decorate 5451(t1DArray) DescriptorSet 2 + Decorate 5387(sShadow) DescriptorSet 2 Decorate 5451(t1DArray) Binding 5 - Decorate 5468(t2DArray) DescriptorSet 2 + Decorate 5451(t1DArray) DescriptorSet 2 Decorate 5468(t2DArray) Binding 6 - Decorate 5485(tCubeArray) DescriptorSet 2 + Decorate 5468(t2DArray) DescriptorSet 2 Decorate 5485(tCubeArray) Binding 7 - Decorate 5543(t2DRect) DescriptorSet 2 + Decorate 5485(tCubeArray) DescriptorSet 2 Decorate 5543(t2DRect) Binding 3 - Decorate 5603(subpass) DescriptorSet 3 + Decorate 5543(t2DRect) DescriptorSet 2 Decorate 5603(subpass) Binding 0 + Decorate 5603(subpass) DescriptorSet 3 Decorate 5603(subpass) InputAttachmentIndex 0 - Decorate 5609(subpassMS) DescriptorSet 3 Decorate 5609(subpassMS) Binding 1 + Decorate 5609(subpassMS) DescriptorSet 3 Decorate 5609(subpassMS) InputAttachmentIndex 0 Decorate 5777(fragColor) Location 0 - Decorate 5781(tBuffer) DescriptorSet 2 Decorate 5781(tBuffer) Binding 8 - Decorate 5783(t2DMS) DescriptorSet 2 + Decorate 5781(tBuffer) DescriptorSet 2 Decorate 5783(t2DMS) Binding 9 - Decorate 5785(t2DMSArray) DescriptorSet 2 + Decorate 5783(t2DMS) DescriptorSet 2 Decorate 5785(t2DMSArray) Binding 10 + Decorate 5785(t2DMSArray) DescriptorSet 2 Decorate 5786(bias) Location 6 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.float16NoRelaxed.vert.out b/Test/baseResults/spv.float16NoRelaxed.vert.out index 9e821ab2a2..2f72839db4 100644 --- a/Test/baseResults/spv.float16NoRelaxed.vert.out +++ b/Test/baseResults/spv.float16NoRelaxed.vert.out @@ -27,10 +27,10 @@ spv.float16NoRelaxed.vert Decorate 11(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId Decorate 12 RelaxedPrecision Decorate 25 ArrayStride 4 - MemberDecorate 26(Buffer1) 0 Offset 0 Decorate 26(Buffer1) Block - Decorate 28 DescriptorSet 0 + MemberDecorate 26(Buffer1) 0 Offset 0 Decorate 28 Binding 0 + Decorate 28 DescriptorSet 0 Decorate 30(gl_VertexIndex) BuiltIn VertexIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.float32.frag.out b/Test/baseResults/spv.float32.frag.out index d2cc609458..fbde7e5bda 100644 --- a/Test/baseResults/spv.float32.frag.out +++ b/Test/baseResults/spv.float32.frag.out @@ -111,21 +111,21 @@ spv.float32.frag MemberDecorate 528(S) 1 Offset 8 MemberDecorate 528(S) 2 Offset 16 Decorate 529 ArrayStride 32 + Decorate 530(B1) Block MemberDecorate 530(B1) 0 Offset 0 MemberDecorate 530(B1) 1 Offset 8 MemberDecorate 530(B1) 2 Offset 16 MemberDecorate 530(B1) 3 Offset 32 MemberDecorate 530(B1) 4 ColMajor - MemberDecorate 530(B1) 4 Offset 64 MemberDecorate 530(B1) 4 MatrixStride 16 + MemberDecorate 530(B1) 4 Offset 64 MemberDecorate 530(B1) 5 ColMajor - MemberDecorate 530(B1) 5 Offset 96 MemberDecorate 530(B1) 5 MatrixStride 16 + MemberDecorate 530(B1) 5 Offset 96 MemberDecorate 530(B1) 6 Offset 160 MemberDecorate 530(B1) 7 Offset 192 - Decorate 530(B1) Block - Decorate 532 DescriptorSet 0 Decorate 532 Binding 0 + Decorate 532 DescriptorSet 0 Decorate 533(sf16) SpecId 100 Decorate 534(sf) SpecId 101 Decorate 535(sd) SpecId 102 diff --git a/Test/baseResults/spv.float64.frag.out b/Test/baseResults/spv.float64.frag.out index 68e8f1c7db..de8a8ee676 100644 --- a/Test/baseResults/spv.float64.frag.out +++ b/Test/baseResults/spv.float64.frag.out @@ -109,21 +109,21 @@ Validation failed MemberDecorate 471(S) 1 Offset 16 MemberDecorate 471(S) 2 Offset 32 Decorate 472 ArrayStride 64 + Decorate 473(B1) Block MemberDecorate 473(B1) 0 Offset 0 MemberDecorate 473(B1) 1 Offset 16 MemberDecorate 473(B1) 2 Offset 32 MemberDecorate 473(B1) 3 Offset 64 MemberDecorate 473(B1) 4 ColMajor - MemberDecorate 473(B1) 4 Offset 96 MemberDecorate 473(B1) 4 MatrixStride 32 + MemberDecorate 473(B1) 4 Offset 96 MemberDecorate 473(B1) 5 ColMajor - MemberDecorate 473(B1) 5 Offset 160 MemberDecorate 473(B1) 5 MatrixStride 32 + MemberDecorate 473(B1) 5 Offset 160 MemberDecorate 473(B1) 6 Offset 288 MemberDecorate 473(B1) 7 Offset 352 - Decorate 473(B1) Block - Decorate 475 DescriptorSet 0 Decorate 475 Binding 0 + Decorate 475 DescriptorSet 0 Decorate 476(sf16) SpecId 100 Decorate 478(sf) SpecId 101 Decorate 479(sd) SpecId 102 diff --git a/Test/baseResults/spv.floatFetch.frag.out b/Test/baseResults/spv.floatFetch.frag.out index 251074d4ab..0848455fde 100644 --- a/Test/baseResults/spv.floatFetch.frag.out +++ b/Test/baseResults/spv.floatFetch.frag.out @@ -190,107 +190,107 @@ Validation failed Name 3496 "t2DMS" Name 3498 "t2DMSArray" Name 3499 "bias" - Decorate 124(s1D) DescriptorSet 0 Decorate 124(s1D) Binding 0 + Decorate 124(s1D) DescriptorSet 0 Decorate 127(c1) Location 0 - Decorate 135(s2D) DescriptorSet 0 Decorate 135(s2D) Binding 1 + Decorate 135(s2D) DescriptorSet 0 Decorate 138(c2) Location 1 - Decorate 146(s3D) DescriptorSet 0 Decorate 146(s3D) Binding 2 + Decorate 146(s3D) DescriptorSet 0 Decorate 150(c3) Location 2 - Decorate 158(sCube) DescriptorSet 0 Decorate 158(sCube) Binding 4 - Decorate 167(s1DShadow) DescriptorSet 0 + Decorate 158(sCube) DescriptorSet 0 Decorate 167(s1DShadow) Binding 11 - Decorate 182(s2DShadow) DescriptorSet 0 + Decorate 167(s1DShadow) DescriptorSet 0 Decorate 182(s2DShadow) Binding 12 - Decorate 194(sCubeShadow) DescriptorSet 0 + Decorate 182(s2DShadow) DescriptorSet 0 Decorate 194(sCubeShadow) Binding 14 + Decorate 194(sCubeShadow) DescriptorSet 0 Decorate 197(c4) Location 3 - Decorate 208(s1DArray) DescriptorSet 0 Decorate 208(s1DArray) Binding 7 - Decorate 217(s2DArray) DescriptorSet 0 + Decorate 208(s1DArray) DescriptorSet 0 Decorate 217(s2DArray) Binding 8 - Decorate 226(sCubeArray) DescriptorSet 0 + Decorate 217(s2DArray) DescriptorSet 0 Decorate 226(sCubeArray) Binding 9 - Decorate 235(s1DArrayShadow) DescriptorSet 0 + Decorate 226(sCubeArray) DescriptorSet 0 Decorate 235(s1DArrayShadow) Binding 15 - Decorate 247(s2DArrayShadow) DescriptorSet 0 + Decorate 235(s1DArrayShadow) DescriptorSet 0 Decorate 247(s2DArrayShadow) Binding 16 - Decorate 259(s2DRect) DescriptorSet 0 + Decorate 247(s2DArrayShadow) DescriptorSet 0 Decorate 259(s2DRect) Binding 3 - Decorate 268(s2DRectShadow) DescriptorSet 0 + Decorate 259(s2DRect) DescriptorSet 0 Decorate 268(s2DRectShadow) Binding 13 - Decorate 280(sCubeArrayShadow) DescriptorSet 0 + Decorate 268(s2DRectShadow) DescriptorSet 0 Decorate 280(sCubeArrayShadow) Binding 17 + Decorate 280(sCubeArrayShadow) DescriptorSet 0 Decorate 283(compare) Location 4 Decorate 371(lod) Location 5 - Decorate 773(sBuffer) DescriptorSet 0 Decorate 773(sBuffer) Binding 5 - Decorate 784(s2DMS) DescriptorSet 0 + Decorate 773(sBuffer) DescriptorSet 0 Decorate 784(s2DMS) Binding 6 - Decorate 795(s2DMSArray) DescriptorSet 0 + Decorate 784(s2DMS) DescriptorSet 0 Decorate 795(s2DMSArray) Binding 10 + Decorate 795(s2DMSArray) DescriptorSet 0 Decorate 866(dPdxy1) Location 8 Decorate 873(dPdxy2) Location 9 Decorate 880(dPdxy3) Location 10 - Decorate 1799(i1D) DescriptorSet 1 Decorate 1799(i1D) Binding 0 - Decorate 1808(i2D) DescriptorSet 1 + Decorate 1799(i1D) DescriptorSet 1 Decorate 1808(i2D) Binding 1 - Decorate 1817(i3D) DescriptorSet 1 + Decorate 1808(i2D) DescriptorSet 1 Decorate 1817(i3D) Binding 2 - Decorate 1826(i2DRect) DescriptorSet 1 + Decorate 1817(i3D) DescriptorSet 1 Decorate 1826(i2DRect) Binding 3 - Decorate 1835(iCube) DescriptorSet 1 + Decorate 1826(i2DRect) DescriptorSet 1 Decorate 1835(iCube) Binding 4 - Decorate 1844(iBuffer) DescriptorSet 1 + Decorate 1835(iCube) DescriptorSet 1 Decorate 1844(iBuffer) Binding 8 - Decorate 1853(i1DArray) DescriptorSet 1 + Decorate 1844(iBuffer) DescriptorSet 1 Decorate 1853(i1DArray) Binding 5 - Decorate 1862(i2DArray) DescriptorSet 1 + Decorate 1853(i1DArray) DescriptorSet 1 Decorate 1862(i2DArray) Binding 6 - Decorate 1871(iCubeArray) DescriptorSet 1 + Decorate 1862(i2DArray) DescriptorSet 1 Decorate 1871(iCubeArray) Binding 7 - Decorate 1880(i2DMS) DescriptorSet 1 + Decorate 1871(iCubeArray) DescriptorSet 1 Decorate 1880(i2DMS) Binding 9 - Decorate 1889(i2DMSArray) DescriptorSet 1 + Decorate 1880(i2DMS) DescriptorSet 1 Decorate 1889(i2DMSArray) Binding 10 + Decorate 1889(i2DMSArray) DescriptorSet 1 Decorate 2603(lodClamp) Location 7 - Decorate 3168(t1D) DescriptorSet 2 Decorate 3168(t1D) Binding 0 - Decorate 3172(s) DescriptorSet 2 + Decorate 3168(t1D) DescriptorSet 2 Decorate 3172(s) Binding 11 - Decorate 3180(t2D) DescriptorSet 2 + Decorate 3172(s) DescriptorSet 2 Decorate 3180(t2D) Binding 1 - Decorate 3189(t3D) DescriptorSet 2 + Decorate 3180(t2D) DescriptorSet 2 Decorate 3189(t3D) Binding 2 - Decorate 3198(tCube) DescriptorSet 2 + Decorate 3189(t3D) DescriptorSet 2 Decorate 3198(tCube) Binding 4 - Decorate 3207(sShadow) DescriptorSet 2 + Decorate 3198(tCube) DescriptorSet 2 Decorate 3207(sShadow) Binding 12 - Decorate 3238(t1DArray) DescriptorSet 2 + Decorate 3207(sShadow) DescriptorSet 2 Decorate 3238(t1DArray) Binding 5 - Decorate 3247(t2DArray) DescriptorSet 2 + Decorate 3238(t1DArray) DescriptorSet 2 Decorate 3247(t2DArray) Binding 6 - Decorate 3256(tCubeArray) DescriptorSet 2 + Decorate 3247(t2DArray) DescriptorSet 2 Decorate 3256(tCubeArray) Binding 7 - Decorate 3285(t2DRect) DescriptorSet 2 + Decorate 3256(tCubeArray) DescriptorSet 2 Decorate 3285(t2DRect) Binding 3 - Decorate 3318(subpass) DescriptorSet 3 + Decorate 3285(t2DRect) DescriptorSet 2 Decorate 3318(subpass) Binding 0 + Decorate 3318(subpass) DescriptorSet 3 Decorate 3318(subpass) InputAttachmentIndex 0 - Decorate 3324(subpassMS) DescriptorSet 3 Decorate 3324(subpassMS) Binding 1 + Decorate 3324(subpassMS) DescriptorSet 3 Decorate 3324(subpassMS) InputAttachmentIndex 0 Decorate 3491(fragColor) Location 0 - Decorate 3494(tBuffer) DescriptorSet 2 Decorate 3494(tBuffer) Binding 8 - Decorate 3496(t2DMS) DescriptorSet 2 + Decorate 3494(tBuffer) DescriptorSet 2 Decorate 3496(t2DMS) Binding 9 - Decorate 3498(t2DMSArray) DescriptorSet 2 + Decorate 3496(t2DMS) DescriptorSet 2 Decorate 3498(t2DMSArray) Binding 10 + Decorate 3498(t2DMSArray) DescriptorSet 2 Decorate 3499(bias) Location 6 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.forwardFun.frag.out b/Test/baseResults/spv.forwardFun.frag.out index 77f3941685..d410c4d964 100644 --- a/Test/baseResults/spv.forwardFun.frag.out +++ b/Test/baseResults/spv.forwardFun.frag.out @@ -22,8 +22,8 @@ spv.forwardFun.frag Name 36 "d" Name 59 "bigColor" Decorate 10(unreachableReturn() RelaxedPrecision - Decorate 16(foo(vf4;) RelaxedPrecision Decorate 15(bar) RelaxedPrecision + Decorate 16(foo(vf4;) RelaxedPrecision Decorate 18(color) RelaxedPrecision Decorate 20(BaseColor) RelaxedPrecision Decorate 20(BaseColor) Location 1 diff --git a/Test/baseResults/spv.fragmentDensity-es.frag.out b/Test/baseResults/spv.fragmentDensity-es.frag.out index fb1407e4e0..f46a28bb4b 100644 --- a/Test/baseResults/spv.fragmentDensity-es.frag.out +++ b/Test/baseResults/spv.fragmentDensity-es.frag.out @@ -18,11 +18,11 @@ spv.fragmentDensity-es.frag Name 14 "FragInvocationCount" Name 16 "gl_FragInvocationCountEXT" Decorate 9(FragSize) Location 0 - Decorate 11(gl_FragSizeEXT) Flat Decorate 11(gl_FragSizeEXT) BuiltIn FragSizeEXT + Decorate 11(gl_FragSizeEXT) Flat Decorate 14(FragInvocationCount) Location 2 - Decorate 16(gl_FragInvocationCountEXT) Flat Decorate 16(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT + Decorate 16(gl_FragInvocationCountEXT) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.fragmentDensity.frag.out b/Test/baseResults/spv.fragmentDensity.frag.out index 43261cd1ad..5ce7a9a67b 100644 --- a/Test/baseResults/spv.fragmentDensity.frag.out +++ b/Test/baseResults/spv.fragmentDensity.frag.out @@ -18,11 +18,11 @@ spv.fragmentDensity.frag Name 17 "FragInvocationCount" Name 19 "gl_FragInvocationCountEXT" Decorate 9(FragSize) Location 0 - Decorate 13(gl_FragSizeEXT) Flat Decorate 13(gl_FragSizeEXT) BuiltIn FragSizeEXT + Decorate 13(gl_FragSizeEXT) Flat Decorate 17(FragInvocationCount) Location 2 - Decorate 19(gl_FragInvocationCountEXT) Flat Decorate 19(gl_FragInvocationCountEXT) BuiltIn FragInvocationCountEXT + Decorate 19(gl_FragInvocationCountEXT) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.fsi.frag.out b/Test/baseResults/spv.fsi.frag.out index 1b5fbf4762..d9cd092e79 100644 --- a/Test/baseResults/spv.fsi.frag.out +++ b/Test/baseResults/spv.fsi.frag.out @@ -18,14 +18,14 @@ spv.fsi.frag MemberName 7(B1) 0 "x" Name 9 "b1" Name 17 "im" + Decorate 7(B1) BufferBlock MemberDecorate 7(B1) 0 Coherent MemberDecorate 7(B1) 0 Offset 0 - Decorate 7(B1) BufferBlock - Decorate 9(b1) DescriptorSet 0 Decorate 9(b1) Binding 0 - Decorate 17(im) DescriptorSet 0 - Decorate 17(im) Binding 1 + Decorate 9(b1) DescriptorSet 0 Decorate 17(im) Coherent + Decorate 17(im) Binding 1 + Decorate 17(im) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.funcall.array.frag.out b/Test/baseResults/spv.funcall.array.frag.out index b4e2bfbe55..1a003be620 100644 --- a/Test/baseResults/spv.funcall.array.frag.out +++ b/Test/baseResults/spv.funcall.array.frag.out @@ -22,10 +22,10 @@ spv.funcall.array.frag Name 64 "param" Decorate 27(color) Location 0 Decorate 28 ArrayStride 16 - MemberDecorate 29(ub) 0 Offset 0 Decorate 29(ub) Block - Decorate 31 DescriptorSet 0 + MemberDecorate 29(ub) 0 Offset 0 Decorate 31 Binding 0 + Decorate 31 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.functionNestedOpaque.vert.out b/Test/baseResults/spv.functionNestedOpaque.vert.out index 58787600fb..0666c091a9 100644 --- a/Test/baseResults/spv.functionNestedOpaque.vert.out +++ b/Test/baseResults/spv.functionNestedOpaque.vert.out @@ -19,8 +19,8 @@ Validation failed Name 21 "bar(struct-S-s211;" Name 20 "p" Name 36 "si" - Decorate 36(si) DescriptorSet 0 Decorate 36(si) Binding 0 + Decorate 36(si) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.glsl.register.autoassign.frag.out b/Test/baseResults/spv.glsl.register.autoassign.frag.out index 041edb9794..6ee2cdd449 100644 --- a/Test/baseResults/spv.glsl.register.autoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.autoassign.frag.out @@ -40,47 +40,47 @@ spv.glsl.register.autoassign.frag Name 128 "g_sSamp_unused2" Name 137 "FragColor" Name 141 "g_tTex_unused3" - Decorate 17(g_tTex1) DescriptorSet 0 Decorate 17(g_tTex1) Binding 11 - Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 17(g_tTex1) DescriptorSet 0 Decorate 21(g_sSamp1) Binding 5 - Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 21(g_sSamp1) DescriptorSet 0 Decorate 27(g_tTex2) Binding 14 - Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 27(g_tTex2) DescriptorSet 0 Decorate 29(g_sSamp2) Binding 6 - Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 29(g_sSamp2) DescriptorSet 0 Decorate 39(g_tTex3) Binding 13 - Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 39(g_tTex3) DescriptorSet 0 Decorate 46(g_sSamp3) Binding 7 - Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 46(g_sSamp3) DescriptorSet 0 Decorate 64(g_tTex4) Binding 15 - Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 64(g_tTex4) DescriptorSet 0 Decorate 69(g_sSamp4) Binding 8 - Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 69(g_sSamp4) DescriptorSet 0 Decorate 84(g_tTex5) Binding 16 - Decorate 86(g_sSamp5) DescriptorSet 0 + Decorate 84(g_tTex5) DescriptorSet 0 Decorate 86(g_sSamp5) Binding 9 + Decorate 86(g_sSamp5) DescriptorSet 0 MemberDecorate 93(MyStruct_t) 0 Offset 0 MemberDecorate 93(MyStruct_t) 1 Offset 4 MemberDecorate 93(MyStruct_t) 2 Offset 16 + Decorate 95(myblock) Block MemberDecorate 95(myblock) 0 Offset 0 MemberDecorate 95(myblock) 1 Offset 32 MemberDecorate 95(myblock) 2 Offset 48 MemberDecorate 95(myblock) 3 Offset 64 - Decorate 95(myblock) Block - Decorate 97 DescriptorSet 0 Decorate 97 Binding 24 - Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 97 DescriptorSet 0 Decorate 119(g_tTex_unused1) Binding 10 - Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) DescriptorSet 0 Decorate 121(g_sSamp_unused1) Binding 0 - Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 Decorate 126(g_tTex_unused2) Binding 12 - Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 Decorate 128(g_sSamp_unused2) Binding 0 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 Decorate 137(FragColor) Location 0 - Decorate 141(g_tTex_unused3) DescriptorSet 0 Decorate 141(g_tTex_unused3) Binding 0 + Decorate 141(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.glsl.register.noautoassign.frag.out b/Test/baseResults/spv.glsl.register.noautoassign.frag.out index ccf688045b..b5e6a6e49c 100644 --- a/Test/baseResults/spv.glsl.register.noautoassign.frag.out +++ b/Test/baseResults/spv.glsl.register.noautoassign.frag.out @@ -40,47 +40,47 @@ spv.glsl.register.noautoassign.frag Name 128 "g_sSamp_unused2" Name 137 "FragColor" Name 141 "g_tTex_unused3" - Decorate 17(g_tTex1) DescriptorSet 0 Decorate 17(g_tTex1) Binding 17 - Decorate 21(g_sSamp1) DescriptorSet 0 + Decorate 17(g_tTex1) DescriptorSet 0 Decorate 21(g_sSamp1) Binding 5 - Decorate 27(g_tTex2) DescriptorSet 0 + Decorate 21(g_sSamp1) DescriptorSet 0 Decorate 27(g_tTex2) Binding 18 - Decorate 29(g_sSamp2) DescriptorSet 0 + Decorate 27(g_tTex2) DescriptorSet 0 Decorate 29(g_sSamp2) Binding 6 - Decorate 39(g_tTex3) DescriptorSet 0 + Decorate 29(g_sSamp2) DescriptorSet 0 Decorate 39(g_tTex3) Binding 19 - Decorate 46(g_sSamp3) DescriptorSet 0 + Decorate 39(g_tTex3) DescriptorSet 0 Decorate 46(g_sSamp3) Binding 7 - Decorate 64(g_tTex4) DescriptorSet 0 + Decorate 46(g_sSamp3) DescriptorSet 0 Decorate 64(g_tTex4) Binding 20 - Decorate 69(g_sSamp4) DescriptorSet 0 + Decorate 64(g_tTex4) DescriptorSet 0 Decorate 69(g_sSamp4) Binding 8 - Decorate 84(g_tTex5) DescriptorSet 0 + Decorate 69(g_sSamp4) DescriptorSet 0 Decorate 84(g_tTex5) Binding 21 - Decorate 86(g_sSamp5) DescriptorSet 0 + Decorate 84(g_tTex5) DescriptorSet 0 Decorate 86(g_sSamp5) Binding 9 + Decorate 86(g_sSamp5) DescriptorSet 0 MemberDecorate 93(MyStruct_t) 0 Offset 0 MemberDecorate 93(MyStruct_t) 1 Offset 4 MemberDecorate 93(MyStruct_t) 2 Offset 16 + Decorate 95(myblock) Block MemberDecorate 95(myblock) 0 Offset 0 MemberDecorate 95(myblock) 1 Offset 32 MemberDecorate 95(myblock) 2 Offset 48 MemberDecorate 95(myblock) 3 Offset 64 - Decorate 95(myblock) Block - Decorate 97 DescriptorSet 0 Decorate 97 Binding 19 - Decorate 119(g_tTex_unused1) DescriptorSet 0 + Decorate 97 DescriptorSet 0 Decorate 119(g_tTex_unused1) Binding 22 - Decorate 121(g_sSamp_unused1) DescriptorSet 0 + Decorate 119(g_tTex_unused1) DescriptorSet 0 Decorate 121(g_sSamp_unused1) Binding 10 - Decorate 126(g_tTex_unused2) DescriptorSet 0 + Decorate 121(g_sSamp_unused1) DescriptorSet 0 Decorate 126(g_tTex_unused2) Binding 23 - Decorate 128(g_sSamp_unused2) DescriptorSet 0 + Decorate 126(g_tTex_unused2) DescriptorSet 0 Decorate 128(g_sSamp_unused2) Binding 11 + Decorate 128(g_sSamp_unused2) DescriptorSet 0 Decorate 137(FragColor) Location 0 - Decorate 141(g_tTex_unused3) DescriptorSet 0 Decorate 141(g_tTex_unused3) Binding 24 + Decorate 141(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.hlslOffsets.vert.out b/Test/baseResults/spv.hlslOffsets.vert.out index d2d6443c52..72a996d1be 100644 --- a/Test/baseResults/spv.hlslOffsets.vert.out +++ b/Test/baseResults/spv.hlslOffsets.vert.out @@ -44,6 +44,7 @@ Shader version: 450 MemberName 11(block) 12 "m96" MemberName 11(block) 13 "m112" Name 13 "" + Decorate 11(block) BufferBlock MemberDecorate 11(block) 0 Offset 0 MemberDecorate 11(block) 1 Offset 4 MemberDecorate 11(block) 2 Offset 16 @@ -58,9 +59,8 @@ Shader version: 450 MemberDecorate 11(block) 11 Offset 88 MemberDecorate 11(block) 12 Offset 96 MemberDecorate 11(block) 13 Offset 112 - Decorate 11(block) BufferBlock - Decorate 13 DescriptorSet 0 Decorate 13 Binding 0 + Decorate 13 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.image.frag.out b/Test/baseResults/spv.image.frag.out index f71a1cc26f..a6141e2459 100644 --- a/Test/baseResults/spv.image.frag.out +++ b/Test/baseResults/spv.image.frag.out @@ -45,47 +45,47 @@ Validation failed Name 386 "wo2D" Name 391 "fragData" Name 404 "ic4D" - Decorate 15(i1D) DescriptorSet 0 Decorate 15(i1D) Binding 0 - Decorate 27(i2D) DescriptorSet 0 + Decorate 15(i1D) DescriptorSet 0 Decorate 27(i2D) Binding 1 - Decorate 41(i3D) DescriptorSet 0 + Decorate 27(i2D) DescriptorSet 0 Decorate 41(i3D) Binding 2 - Decorate 48(iCube) DescriptorSet 0 + Decorate 41(i3D) DescriptorSet 0 Decorate 48(iCube) Binding 3 - Decorate 60(iCubeArray) DescriptorSet 0 + Decorate 48(iCube) DescriptorSet 0 Decorate 60(iCubeArray) Binding 4 - Decorate 67(i2DRect) DescriptorSet 0 + Decorate 60(iCubeArray) DescriptorSet 0 Decorate 67(i2DRect) Binding 5 - Decorate 79(i1DArray) DescriptorSet 0 + Decorate 67(i2DRect) DescriptorSet 0 Decorate 79(i1DArray) Binding 6 - Decorate 91(i2DArray) DescriptorSet 0 + Decorate 79(i1DArray) DescriptorSet 0 Decorate 91(i2DArray) Binding 7 - Decorate 98(iBuffer) DescriptorSet 0 + Decorate 91(i2DArray) DescriptorSet 0 Decorate 98(iBuffer) Binding 8 - Decorate 107(i2DMS) DescriptorSet 0 + Decorate 98(iBuffer) DescriptorSet 0 Decorate 107(i2DMS) Binding 9 - Decorate 119(i2DMSArray) DescriptorSet 0 + Decorate 107(i2DMS) DescriptorSet 0 Decorate 119(i2DMSArray) Binding 10 + Decorate 119(i2DMSArray) DescriptorSet 0 Decorate 143(ic1D) Flat Decorate 143(ic1D) Location 0 Decorate 153(ic2D) Flat Decorate 153(ic2D) Location 1 Decorate 163(ic3D) Flat Decorate 163(ic3D) Location 2 - Decorate 243(ii1D) DescriptorSet 0 Decorate 243(ii1D) Binding 11 - Decorate 255(ui2D) DescriptorSet 0 + Decorate 243(ii1D) DescriptorSet 0 Decorate 255(ui2D) Binding 12 + Decorate 255(ui2D) DescriptorSet 0 Decorate 258(value) Flat Decorate 258(value) Location 4 - Decorate 367(ii2DMS) DescriptorSet 0 Decorate 367(ii2DMS) Binding 13 - Decorate 377(ui2DMSArray) DescriptorSet 0 + Decorate 367(ii2DMS) DescriptorSet 0 Decorate 377(ui2DMSArray) Binding 14 - Decorate 386(wo2D) DescriptorSet 0 - Decorate 386(wo2D) Binding 1 + Decorate 377(ui2DMSArray) DescriptorSet 0 Decorate 386(wo2D) NonReadable + Decorate 386(wo2D) Binding 1 + Decorate 386(wo2D) DescriptorSet 0 Decorate 391(fragData) Location 0 Decorate 404(ic4D) Flat Decorate 404(ic4D) Location 3 diff --git a/Test/baseResults/spv.imageAtomic64.comp.out b/Test/baseResults/spv.imageAtomic64.comp.out index 4317ae05f4..1d0ffd8c08 100644 --- a/Test/baseResults/spv.imageAtomic64.comp.out +++ b/Test/baseResults/spv.imageAtomic64.comp.out @@ -21,12 +21,12 @@ spv.imageAtomic64.comp Name 14 "ssbo" MemberName 14(ssbo) 0 "y" Name 16 "" - Decorate 9(z) DescriptorSet 0 Decorate 9(z) Binding 1 - MemberDecorate 14(ssbo) 0 Offset 0 + Decorate 9(z) DescriptorSet 0 Decorate 14(ssbo) BufferBlock - Decorate 16 DescriptorSet 0 + MemberDecorate 14(ssbo) 0 Offset 0 Decorate 16 Binding 0 + Decorate 16 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 0 diff --git a/Test/baseResults/spv.imageAtomic64.frag.out b/Test/baseResults/spv.imageAtomic64.frag.out index 1c002ab210..35b6c51205 100644 --- a/Test/baseResults/spv.imageAtomic64.frag.out +++ b/Test/baseResults/spv.imageAtomic64.frag.out @@ -46,36 +46,36 @@ Validation failed Name 240 "u2DMS" Name 458 "ResType" Name 483 "ResType" + Decorate 12(Buf) BufferBlock MemberDecorate 12(Buf) 0 Offset 0 MemberDecorate 12(Buf) 1 Offset 8 MemberDecorate 12(Buf) 2 Offset 32 MemberDecorate 12(Buf) 3 Offset 64 MemberDecorate 12(Buf) 4 Offset 96 - Decorate 12(Buf) BufferBlock - Decorate 14 DescriptorSet 0 Decorate 14 Binding 11 - Decorate 18(i1D) DescriptorSet 0 + Decorate 14 DescriptorSet 0 Decorate 18(i1D) Binding 0 - Decorate 35(i3D) DescriptorSet 0 + Decorate 18(i1D) DescriptorSet 0 Decorate 35(i3D) Binding 2 - Decorate 48(iBuf) DescriptorSet 0 + Decorate 35(i3D) DescriptorSet 0 Decorate 48(iBuf) Binding 4 - Decorate 58(i2DArray) DescriptorSet 0 + Decorate 48(iBuf) DescriptorSet 0 Decorate 58(i2DArray) Binding 6 - Decorate 69(i2DRect) DescriptorSet 0 + Decorate 58(i2DArray) DescriptorSet 0 Decorate 69(i2DRect) Binding 8 - Decorate 81(i2DMSArray) DescriptorSet 0 + Decorate 69(i2DRect) DescriptorSet 0 Decorate 81(i2DMSArray) Binding 10 - Decorate 194(u2D) DescriptorSet 0 + Decorate 81(i2DMSArray) DescriptorSet 0 Decorate 194(u2D) Binding 1 - Decorate 207(uCube) DescriptorSet 0 + Decorate 194(u2D) DescriptorSet 0 Decorate 207(uCube) Binding 3 - Decorate 218(u1DArray) DescriptorSet 0 + Decorate 207(uCube) DescriptorSet 0 Decorate 218(u1DArray) Binding 5 - Decorate 229(uCubeArray) DescriptorSet 0 + Decorate 218(u1DArray) DescriptorSet 0 Decorate 229(uCubeArray) Binding 7 - Decorate 240(u2DMS) DescriptorSet 0 + Decorate 229(uCubeArray) DescriptorSet 0 Decorate 240(u2DMS) Binding 9 + Decorate 240(u2DMS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 64 1 diff --git a/Test/baseResults/spv.imageLoadStoreLod.frag.out b/Test/baseResults/spv.imageLoadStoreLod.frag.out index 4a16d75a9d..f38391b1a8 100644 --- a/Test/baseResults/spv.imageLoadStoreLod.frag.out +++ b/Test/baseResults/spv.imageLoadStoreLod.frag.out @@ -44,40 +44,40 @@ spv.imageLoadStoreLod.frag Name 133 "u64i2DArray" Name 136 "ResType" Name 142 "u64iCubeArray" - Decorate 14(i1D) DescriptorSet 0 Decorate 14(i1D) Binding 0 - Decorate 24(i2D) DescriptorSet 0 + Decorate 14(i1D) DescriptorSet 0 Decorate 24(i2D) Binding 1 - Decorate 34(i3D) DescriptorSet 0 + Decorate 24(i2D) DescriptorSet 0 Decorate 34(i3D) Binding 2 - Decorate 46(iiCube) DescriptorSet 0 + Decorate 34(i3D) DescriptorSet 0 Decorate 46(iiCube) Binding 3 - Decorate 53(ii1DArray) DescriptorSet 0 + Decorate 46(iiCube) DescriptorSet 0 Decorate 53(ii1DArray) Binding 4 - Decorate 60(ui2DArray) DescriptorSet 0 + Decorate 53(ii1DArray) DescriptorSet 0 Decorate 60(ui2DArray) Binding 5 - Decorate 71(uiCubeArray) DescriptorSet 0 + Decorate 60(ui2DArray) DescriptorSet 0 Decorate 71(uiCubeArray) Binding 6 + Decorate 71(uiCubeArray) DescriptorSet 0 Decorate 77(fragColor) Location 0 + Decorate 86(Buf) BufferBlock MemberDecorate 86(Buf) 0 Offset 0 MemberDecorate 86(Buf) 1 Offset 32 - Decorate 86(Buf) BufferBlock - Decorate 88 DescriptorSet 0 Decorate 88 Binding 14 - Decorate 92(i64i1D) DescriptorSet 0 + Decorate 88 DescriptorSet 0 Decorate 92(i64i1D) Binding 7 - Decorate 102(i64i2D) DescriptorSet 0 + Decorate 92(i64i1D) DescriptorSet 0 Decorate 102(i64i2D) Binding 8 - Decorate 111(i64i3D) DescriptorSet 0 + Decorate 102(i64i2D) DescriptorSet 0 Decorate 111(i64i3D) Binding 9 - Decorate 120(u64iCube) DescriptorSet 0 + Decorate 111(i64i3D) DescriptorSet 0 Decorate 120(u64iCube) Binding 10 - Decorate 127(u64i1DArray) DescriptorSet 0 + Decorate 120(u64iCube) DescriptorSet 0 Decorate 127(u64i1DArray) Binding 11 - Decorate 133(u64i2DArray) DescriptorSet 0 + Decorate 127(u64i1DArray) DescriptorSet 0 Decorate 133(u64i2DArray) Binding 12 - Decorate 142(u64iCubeArray) DescriptorSet 0 + Decorate 133(u64i2DArray) DescriptorSet 0 Decorate 142(u64iCubeArray) Binding 13 + Decorate 142(u64iCubeArray) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.int16.amd.frag.out b/Test/baseResults/spv.int16.amd.frag.out index 53f5537796..54b09f0044 100644 --- a/Test/baseResults/spv.int16.amd.frag.out +++ b/Test/baseResults/spv.int16.amd.frag.out @@ -94,15 +94,15 @@ spv.int16.amd.frag Name 573 "u64_to_u16" Name 574 "i16_to_u16" Name 575 "u16_to_i16" - MemberDecorate 25(Uniforms) 0 Offset 0 Decorate 25(Uniforms) Block - Decorate 27 DescriptorSet 0 + MemberDecorate 25(Uniforms) 0 Offset 0 Decorate 27 Binding 0 + Decorate 27 DescriptorSet 0 + Decorate 531(Block) Block MemberDecorate 531(Block) 0 Offset 0 MemberDecorate 531(Block) 1 Offset 6 - Decorate 531(Block) Block - Decorate 533(block) DescriptorSet 0 Decorate 533(block) Binding 1 + Decorate 533(block) DescriptorSet 0 Decorate 535(iu16v) Flat Decorate 535(iu16v) Location 0 Decorate 537(ii16) Flat diff --git a/Test/baseResults/spv.int16.frag.out b/Test/baseResults/spv.int16.frag.out index ed788f87ab..c7944ef1f0 100644 --- a/Test/baseResults/spv.int16.frag.out +++ b/Test/baseResults/spv.int16.frag.out @@ -80,10 +80,11 @@ spv.int16.frag Name 546 "block" Name 547 "si16" Name 548 "su16" - MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 24(Uniforms) Block - Decorate 26 DescriptorSet 0 + MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 26 Binding 0 + Decorate 26 DescriptorSet 0 + Decorate 544(Block) Block MemberDecorate 544(Block) 0 Offset 0 MemberDecorate 544(Block) 1 Offset 4 MemberDecorate 544(Block) 2 Offset 8 @@ -92,9 +93,8 @@ spv.int16.frag MemberDecorate 544(Block) 5 Offset 28 MemberDecorate 544(Block) 6 Offset 32 MemberDecorate 544(Block) 7 Offset 40 - Decorate 544(Block) Block - Decorate 546(block) DescriptorSet 0 Decorate 546(block) Binding 1 + Decorate 546(block) DescriptorSet 0 Decorate 547(si16) SpecId 100 Decorate 548(su16) SpecId 101 2: TypeVoid diff --git a/Test/baseResults/spv.int32.frag.out b/Test/baseResults/spv.int32.frag.out index 4ee05c8251..254622d632 100644 --- a/Test/baseResults/spv.int32.frag.out +++ b/Test/baseResults/spv.int32.frag.out @@ -80,10 +80,11 @@ spv.int32.frag Name 496 "si" Name 497 "su" Name 498 "sb" - MemberDecorate 27(Uniforms) 0 Offset 0 Decorate 27(Uniforms) Block - Decorate 29 DescriptorSet 0 + MemberDecorate 27(Uniforms) 0 Offset 0 Decorate 29 Binding 0 + Decorate 29 DescriptorSet 0 + Decorate 491(Block) Block MemberDecorate 491(Block) 0 Offset 0 MemberDecorate 491(Block) 1 Offset 8 MemberDecorate 491(Block) 2 Offset 16 @@ -92,9 +93,8 @@ spv.int32.frag MemberDecorate 491(Block) 5 Offset 56 MemberDecorate 491(Block) 6 Offset 64 MemberDecorate 491(Block) 7 Offset 80 - Decorate 491(Block) Block - Decorate 493(block) DescriptorSet 0 Decorate 493(block) Binding 1 + Decorate 493(block) DescriptorSet 0 Decorate 494(si32) SpecId 100 Decorate 495(su32) SpecId 101 Decorate 496(si) SpecId 102 diff --git a/Test/baseResults/spv.int64.frag.out b/Test/baseResults/spv.int64.frag.out index e335a54328..5fff827fd4 100644 --- a/Test/baseResults/spv.int64.frag.out +++ b/Test/baseResults/spv.int64.frag.out @@ -71,15 +71,15 @@ Validation failed Name 508 "i_to_u64" Name 510 "i64_to_u" Name 512 "u_to_i64" - MemberDecorate 28(Uniforms) 0 Offset 0 Decorate 28(Uniforms) Block - Decorate 30 DescriptorSet 0 + MemberDecorate 28(Uniforms) 0 Offset 0 Decorate 30 Binding 0 + Decorate 30 DescriptorSet 0 + Decorate 486(Block) Block MemberDecorate 486(Block) 0 Offset 0 MemberDecorate 486(Block) 1 Offset 24 - Decorate 486(Block) Block - Decorate 488(block) DescriptorSet 0 Decorate 488(block) Binding 1 + Decorate 488(block) DescriptorSet 0 Decorate 489(si64) SpecId 100 Decorate 490(su64) SpecId 101 Decorate 491(si) SpecId 102 diff --git a/Test/baseResults/spv.int8.frag.out b/Test/baseResults/spv.int8.frag.out index 3bfeb1a49a..0682281a67 100644 --- a/Test/baseResults/spv.int8.frag.out +++ b/Test/baseResults/spv.int8.frag.out @@ -80,10 +80,11 @@ spv.int8.frag Name 541 "block" Name 542 "si8" Name 543 "su8" - MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 24(Uniforms) Block - Decorate 26 DescriptorSet 0 + MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 26 Binding 0 + Decorate 26 DescriptorSet 0 + Decorate 539(Block) Block MemberDecorate 539(Block) 0 Offset 0 MemberDecorate 539(Block) 1 Offset 2 MemberDecorate 539(Block) 2 Offset 4 @@ -92,9 +93,8 @@ spv.int8.frag MemberDecorate 539(Block) 5 Offset 14 MemberDecorate 539(Block) 6 Offset 16 MemberDecorate 539(Block) 7 Offset 20 - Decorate 539(Block) Block - Decorate 541(block) DescriptorSet 0 Decorate 541(block) Binding 1 + Decorate 541(block) DescriptorSet 0 Decorate 542(si8) SpecId 100 Decorate 543(su8) SpecId 101 2: TypeVoid diff --git a/Test/baseResults/spv.intcoopmat.comp.out b/Test/baseResults/spv.intcoopmat.comp.out index 24289a9f9a..593880757c 100644 --- a/Test/baseResults/spv.intcoopmat.comp.out +++ b/Test/baseResults/spv.intcoopmat.comp.out @@ -91,24 +91,24 @@ spv.intcoopmat.comp Name 285 "scm" Decorate 83 ArrayStride 4 Decorate 84 ArrayStride 4 + Decorate 85(Block) Block MemberDecorate 85(Block) 0 Offset 0 MemberDecorate 85(Block) 1 Offset 4194304 - Decorate 85(Block) Block - Decorate 87(block) DescriptorSet 0 Decorate 87(block) Binding 0 + Decorate 87(block) DescriptorSet 0 Decorate 99 ArrayStride 1 Decorate 101 ArrayStride 1 + Decorate 103(Block16) Block MemberDecorate 103(Block16) 0 Offset 0 MemberDecorate 103(Block16) 1 Offset 1048576 MemberDecorate 103(Block16) 2 Offset 1048584 - Decorate 103(Block16) Block Decorate 104 ArrayStride 4 Decorate 105 ArrayStride 4 + Decorate 106(Block) Block MemberDecorate 106(Block) 0 Offset 0 MemberDecorate 106(Block) 1 Offset 4194304 - Decorate 106(Block) Block - Decorate 108(block8) DescriptorSet 0 Decorate 108(block8) Binding 0 + Decorate 108(block8) DescriptorSet 0 Decorate 156(Y) SpecId 0 Decorate 247 BuiltIn WorkgroupSize Decorate 280(SC) SpecId 2 diff --git a/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out b/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out index c19a592493..4abb6d509b 100644 --- a/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out +++ b/Test/baseResults/spv.intrinsicsInteractWithCoopMat.comp.out @@ -25,10 +25,10 @@ spv.intrinsicsInteractWithCoopMat.comp Name 18 "buf" Name 26 "A" Decorate 15 ArrayStride 16 - MemberDecorate 16(Buf) 0 Offset 0 Decorate 16(Buf) Block - Decorate 18(buf) DescriptorSet 0 + MemberDecorate 16(Buf) 0 Offset 0 Decorate 18(buf) Binding 0 + Decorate 18(buf) DescriptorSet 0 Decorate 35 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out b/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out index c454dc609e..e9ba47bca2 100644 --- a/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out +++ b/Test/baseResults/spv.intrinsicsSpirvDecorateId.comp.out @@ -19,14 +19,14 @@ spv.intrinsicsSpirvDecorateId.comp MemberName 13(Uniform) 0 "y" Name 15 "" Decorate 9 BuiltIn WorkgroupSize - MemberDecorate 10(CounterBuffer) 0 Offset 0 Decorate 10(CounterBuffer) Block - Decorate 12(x) DescriptorSet 0 + MemberDecorate 10(CounterBuffer) 0 Offset 0 Decorate 12(x) Binding 1 - MemberDecorate 13(Uniform) 0 Offset 0 + Decorate 12(x) DescriptorSet 0 Decorate 13(Uniform) Block - Decorate 15 DescriptorSet 0 + MemberDecorate 13(Uniform) 0 Offset 0 Decorate 15 Binding 0 + Decorate 15 DescriptorSet 0 DecorateId 15 DecorationHlslCounterBufferGOOGLE 12(x) 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out index 5d67de7085..7b20ece6d4 100644 --- a/Test/baseResults/spv.intrinsicsSpirvType.rgen.out +++ b/Test/baseResults/spv.intrinsicsSpirvType.rgen.out @@ -16,8 +16,8 @@ spv.intrinsicsSpirvType.rgen Name 4 "main" Name 8 "rq" Name 11 "as" - Decorate 11(as) DescriptorSet 0 Decorate 11(as) Binding 0 + Decorate 11(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeRayQueryKHR diff --git a/Test/baseResults/spv.invariantAll.vert.out b/Test/baseResults/spv.invariantAll.vert.out index f72d81549a..40d275a102 100644 --- a/Test/baseResults/spv.invariantAll.vert.out +++ b/Test/baseResults/spv.invariantAll.vert.out @@ -16,17 +16,17 @@ spv.invariantAll.vert MemberName 11(gl_PerVertex) 3 "gl_CullDistance" Name 13 "" Name 17 "v" - MemberDecorate 11(gl_PerVertex) 0 Invariant + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 11(gl_PerVertex) 1 Invariant + MemberDecorate 11(gl_PerVertex) 0 Invariant MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 11(gl_PerVertex) 2 Invariant + MemberDecorate 11(gl_PerVertex) 1 Invariant MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 11(gl_PerVertex) 3 Invariant + MemberDecorate 11(gl_PerVertex) 2 Invariant MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block - Decorate 17(v) Location 0 + MemberDecorate 11(gl_PerVertex) 3 Invariant Decorate 17(v) Invariant + Decorate 17(v) Location 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.layoutNested.vert.out b/Test/baseResults/spv.layoutNested.vert.out index 2d5111c523..4b2374d44c 100644 --- a/Test/baseResults/spv.layoutNested.vert.out +++ b/Test/baseResults/spv.layoutNested.vert.out @@ -84,88 +84,88 @@ spv.layoutNested.vert Name 65 "soutinv" Decorate 13 ArrayStride 32 MemberDecorate 14(S) 0 Offset 0 - MemberDecorate 14(S) 1 ColMajor MemberDecorate 14(S) 1 RelaxedPrecision - MemberDecorate 14(S) 1 Offset 16 + MemberDecorate 14(S) 1 ColMajor MemberDecorate 14(S) 1 MatrixStride 16 + MemberDecorate 14(S) 1 Offset 16 MemberDecorate 14(S) 2 RelaxedPrecision MemberDecorate 14(S) 2 Offset 144 Decorate 16 ArrayStride 160 Decorate 18 ArrayStride 480 + Decorate 19(Block140) Block MemberDecorate 19(Block140) 0 RelaxedPrecision MemberDecorate 19(Block140) 0 Offset 0 MemberDecorate 19(Block140) 1 Offset 16 MemberDecorate 19(Block140) 2 RelaxedPrecision MemberDecorate 19(Block140) 2 Offset 976 - Decorate 19(Block140) Block - Decorate 21(inst140) DescriptorSet 0 Decorate 21(inst140) Binding 0 + Decorate 21(inst140) DescriptorSet 0 Decorate 22 ArrayStride 16 MemberDecorate 23(S) 0 Offset 0 - MemberDecorate 23(S) 1 ColMajor MemberDecorate 23(S) 1 RelaxedPrecision - MemberDecorate 23(S) 1 Offset 16 + MemberDecorate 23(S) 1 ColMajor MemberDecorate 23(S) 1 MatrixStride 8 + MemberDecorate 23(S) 1 Offset 16 MemberDecorate 23(S) 2 RelaxedPrecision MemberDecorate 23(S) 2 Offset 80 Decorate 24 ArrayStride 96 Decorate 25 ArrayStride 288 + Decorate 26(Block430) BufferBlock MemberDecorate 26(Block430) 0 RelaxedPrecision MemberDecorate 26(Block430) 0 Offset 0 MemberDecorate 26(Block430) 1 Offset 16 MemberDecorate 26(Block430) 2 RelaxedPrecision MemberDecorate 26(Block430) 2 Offset 592 - Decorate 26(Block430) BufferBlock - Decorate 28(inst430) DescriptorSet 0 Decorate 28(inst430) Binding 1 + Decorate 28(inst430) DescriptorSet 0 MemberDecorate 29(S) 1 RelaxedPrecision MemberDecorate 29(S) 2 RelaxedPrecision MemberDecorate 35(T) 0 RowMajor - MemberDecorate 35(T) 0 Offset 0 MemberDecorate 35(T) 0 MatrixStride 16 + MemberDecorate 35(T) 0 Offset 0 MemberDecorate 35(T) 1 Offset 32 MemberDecorate 36(Nestor) 0 Offset 0 - MemberDecorate 37(Bt1) 0 Offset 0 Decorate 37(Bt1) Block - Decorate 39(Btn1) DescriptorSet 1 + MemberDecorate 37(Bt1) 0 Offset 0 Decorate 39(Btn1) Binding 0 + Decorate 39(Btn1) DescriptorSet 1 MemberDecorate 40(T) 0 ColMajor - MemberDecorate 40(T) 0 Offset 0 MemberDecorate 40(T) 0 MatrixStride 16 + MemberDecorate 40(T) 0 Offset 0 MemberDecorate 40(T) 1 Offset 32 MemberDecorate 41(Nestor) 0 Offset 0 - MemberDecorate 42(Bt2) 0 Offset 0 Decorate 42(Bt2) Block - Decorate 44(Btn2) DescriptorSet 1 + MemberDecorate 42(Bt2) 0 Offset 0 Decorate 44(Btn2) Binding 0 + Decorate 44(Btn2) DescriptorSet 1 + Decorate 45(Bt3) Block MemberDecorate 45(Bt3) 0 Offset 0 MemberDecorate 45(Bt3) 1 Offset 48 - Decorate 45(Bt3) Block - Decorate 47(Btn3) DescriptorSet 1 Decorate 47(Btn3) Binding 0 + Decorate 47(Btn3) DescriptorSet 1 MemberDecorate 48(T) 0 RowMajor - MemberDecorate 48(T) 0 Offset 0 MemberDecorate 48(T) 0 MatrixStride 8 + MemberDecorate 48(T) 0 Offset 0 MemberDecorate 48(T) 1 Offset 16 MemberDecorate 49(Nestor) 0 Offset 0 - MemberDecorate 50(bBt1) 0 Offset 0 Decorate 50(bBt1) BufferBlock - Decorate 52(bBtn1) DescriptorSet 1 + MemberDecorate 50(bBt1) 0 Offset 0 Decorate 52(bBtn1) Binding 0 + Decorate 52(bBtn1) DescriptorSet 1 MemberDecorate 53(T) 0 ColMajor - MemberDecorate 53(T) 0 Offset 0 MemberDecorate 53(T) 0 MatrixStride 8 + MemberDecorate 53(T) 0 Offset 0 MemberDecorate 53(T) 1 Offset 16 MemberDecorate 54(Nestor) 0 Offset 0 - MemberDecorate 55(bBt2) 0 Offset 0 Decorate 55(bBt2) BufferBlock - Decorate 57(bBtn2) DescriptorSet 1 + MemberDecorate 55(bBt2) 0 Offset 0 Decorate 57(bBtn2) Binding 0 + Decorate 57(bBtn2) DescriptorSet 1 + Decorate 58(bBt3) BufferBlock MemberDecorate 58(bBt3) 0 Offset 0 MemberDecorate 58(bBt3) 1 Offset 24 - Decorate 58(bBt3) BufferBlock - Decorate 60(bBtn3) DescriptorSet 1 Decorate 60(bBtn3) Binding 0 + Decorate 60(bBtn3) DescriptorSet 1 Decorate 62(sout) Flat Decorate 62(sout) Location 0 MemberDecorate 63(S) 0 Invariant @@ -173,8 +173,8 @@ spv.layoutNested.vert MemberDecorate 63(S) 1 Invariant MemberDecorate 63(S) 2 RelaxedPrecision MemberDecorate 63(S) 2 Invariant - Decorate 65(soutinv) Location 10 Decorate 65(soutinv) Invariant + Decorate 65(soutinv) Location 10 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.load.bool.array.interface.block.frag.out b/Test/baseResults/spv.load.bool.array.interface.block.frag.out index 7a80299029..b50c8b7977 100644 --- a/Test/baseResults/spv.load.bool.array.interface.block.frag.out +++ b/Test/baseResults/spv.load.bool.array.interface.block.frag.out @@ -19,16 +19,16 @@ spv.load.bool.array.interface.block.frag Name 77 "color" Decorate 8 ArrayStride 4 Decorate 10 ArrayStride 12 - MemberDecorate 11(ssbo) 0 Offset 0 Decorate 11(ssbo) BufferBlock - Decorate 13 DescriptorSet 0 + MemberDecorate 11(ssbo) 0 Offset 0 Decorate 13 Binding 1 + Decorate 13 DescriptorSet 0 Decorate 16 ArrayStride 16 Decorate 17 ArrayStride 48 - MemberDecorate 18(ub) 0 Offset 0 Decorate 18(ub) Block - Decorate 20 DescriptorSet 0 + MemberDecorate 18(ub) 0 Offset 0 Decorate 20 Binding 0 + Decorate 20 DescriptorSet 0 Decorate 77(color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.localAggregates.frag.out b/Test/baseResults/spv.localAggregates.frag.out index a9ce54fb3f..616a245b9f 100644 --- a/Test/baseResults/spv.localAggregates.frag.out +++ b/Test/baseResults/spv.localAggregates.frag.out @@ -45,8 +45,8 @@ spv.localAggregates.frag Decorate 90(condition) Location 18 Decorate 98(color) Location 1 Decorate 108(gl_FragColor) Location 0 - Decorate 128(samp2D) DescriptorSet 0 Decorate 128(samp2D) Binding 0 + Decorate 128(samp2D) DescriptorSet 0 Decorate 134(foo) Flat Decorate 134(foo) Location 2 Decorate 135(foo2) Flat diff --git a/Test/baseResults/spv.matFun.vert.out b/Test/baseResults/spv.matFun.vert.out index 1201887723..b3388c0c4f 100644 --- a/Test/baseResults/spv.matFun.vert.out +++ b/Test/baseResults/spv.matFun.vert.out @@ -32,19 +32,19 @@ spv.matFun.vert Name 86 "param" Name 89 "param" Name 93 "param" + Decorate 74(gl_PerVertex) Block MemberDecorate 74(gl_PerVertex) 0 BuiltIn Position MemberDecorate 74(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 74(gl_PerVertex) 2 BuiltIn ClipDistance - Decorate 74(gl_PerVertex) Block + Decorate 77(bl) Block MemberDecorate 77(bl) 0 ColMajor - MemberDecorate 77(bl) 0 Offset 0 MemberDecorate 77(bl) 0 MatrixStride 16 + MemberDecorate 77(bl) 0 Offset 0 MemberDecorate 77(bl) 1 ColMajor - MemberDecorate 77(bl) 1 Offset 64 MemberDecorate 77(bl) 1 MatrixStride 16 - Decorate 77(bl) Block - Decorate 79(bName) DescriptorSet 0 + MemberDecorate 77(bl) 1 Offset 64 Decorate 79(bName) Binding 0 + Decorate 79(bName) DescriptorSet 0 Decorate 81(v3) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out index 47d63cfd2e..f6e12c1d6b 100644 --- a/Test/baseResults/spv.memoryQualifier.frag.out +++ b/Test/baseResults/spv.memoryQualifier.frag.out @@ -30,29 +30,30 @@ Validation failed MemberName 50(Buffer) 4 "i1" MemberName 50(Buffer) 5 "data" Name 52 "" - Decorate 12(i1D) DescriptorSet 0 - Decorate 12(i1D) Binding 0 Decorate 12(i1D) Coherent - Decorate 19(i2D) DescriptorSet 0 - Decorate 19(i2D) Binding 1 + Decorate 12(i1D) Binding 0 + Decorate 12(i1D) DescriptorSet 0 Decorate 19(i2D) Volatile Decorate 19(i2D) Coherent - Decorate 28(i2DRect) DescriptorSet 0 - Decorate 28(i2DRect) Binding 2 + Decorate 19(i2D) Binding 1 + Decorate 19(i2D) DescriptorSet 0 Decorate 28(i2DRect) Restrict - Decorate 35(i3D) DescriptorSet 0 - Decorate 35(i3D) Binding 3 + Decorate 28(i2DRect) Binding 2 + Decorate 28(i2DRect) DescriptorSet 0 Decorate 35(i3D) NonWritable - Decorate 44(iCube) DescriptorSet 0 - Decorate 44(iCube) Binding 3 + Decorate 35(i3D) Binding 3 + Decorate 35(i3D) DescriptorSet 0 Decorate 44(iCube) NonReadable + Decorate 44(iCube) Binding 3 + Decorate 44(iCube) DescriptorSet 0 MemberDecorate 49(Data) 0 Offset 0 MemberDecorate 49(Data) 1 Offset 8 + Decorate 50(Buffer) BufferBlock MemberDecorate 50(Buffer) 0 Volatile MemberDecorate 50(Buffer) 0 Coherent MemberDecorate 50(Buffer) 0 Offset 0 - MemberDecorate 50(Buffer) 1 Coherent MemberDecorate 50(Buffer) 1 Restrict + MemberDecorate 50(Buffer) 1 Coherent MemberDecorate 50(Buffer) 1 Offset 8 MemberDecorate 50(Buffer) 2 Coherent MemberDecorate 50(Buffer) 2 NonWritable @@ -64,9 +65,8 @@ Validation failed MemberDecorate 50(Buffer) 4 Offset 48 MemberDecorate 50(Buffer) 5 Coherent MemberDecorate 50(Buffer) 5 Offset 56 - Decorate 50(Buffer) BufferBlock - Decorate 52 DescriptorSet 0 Decorate 52 Binding 4 + Decorate 52 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.memoryScopeSemantics.comp.out b/Test/baseResults/spv.memoryScopeSemantics.comp.out index 1078aa5f9e..96a7f3ca98 100644 --- a/Test/baseResults/spv.memoryScopeSemantics.comp.out +++ b/Test/baseResults/spv.memoryScopeSemantics.comp.out @@ -51,42 +51,42 @@ spv.memoryScopeSemantics.comp MemberName 151(BufferM) 0 "x" Name 153 "bufferm" Name 165 "imageMS" - Decorate 36(imagei) DescriptorSet 0 Decorate 36(imagei) Binding 1 - Decorate 46(imageu) DescriptorSet 0 + Decorate 36(imagei) DescriptorSet 0 Decorate 46(imageu) Binding 0 - MemberDecorate 66(BufferU) 0 Offset 0 + Decorate 46(imageu) DescriptorSet 0 Decorate 66(BufferU) Block - Decorate 68(bufferu) DescriptorSet 0 + MemberDecorate 66(BufferU) 0 Offset 0 Decorate 68(bufferu) Binding 2 - MemberDecorate 78(BufferI) 0 Offset 0 + Decorate 68(bufferu) DescriptorSet 0 Decorate 78(BufferI) Block - Decorate 80(bufferi) DescriptorSet 0 + MemberDecorate 78(BufferI) 0 Offset 0 Decorate 80(bufferi) Binding 3 + Decorate 80(bufferi) DescriptorSet 0 Decorate 83 ArrayStride 4 MemberDecorate 84(A) 0 Offset 0 - MemberDecorate 85(BufferJ) 0 Offset 0 Decorate 85(BufferJ) Block - Decorate 88(bufferj) DescriptorSet 0 + MemberDecorate 85(BufferJ) 0 Offset 0 Decorate 88(bufferj) Binding 4 - MemberDecorate 99(BufferK) 0 Offset 0 + Decorate 88(bufferj) DescriptorSet 0 Decorate 99(BufferK) Block - Decorate 101(bufferk) DescriptorSet 0 + MemberDecorate 99(BufferK) 0 Offset 0 Decorate 101(bufferk) Binding 7 - Decorate 111(imagej) DescriptorSet 0 + Decorate 101(bufferk) DescriptorSet 0 Decorate 111(imagej) Binding 5 - Decorate 123(samp) DescriptorSet 0 + Decorate 111(imagej) DescriptorSet 0 Decorate 123(samp) Binding 6 - MemberDecorate 144(BufferL) 0 Offset 0 + Decorate 123(samp) DescriptorSet 0 Decorate 144(BufferL) Block - Decorate 146(bufferl) DescriptorSet 0 + MemberDecorate 144(BufferL) 0 Offset 0 Decorate 146(bufferl) Binding 8 - MemberDecorate 151(BufferM) 0 Offset 0 + Decorate 146(bufferl) DescriptorSet 0 Decorate 151(BufferM) Block - Decorate 153(bufferm) DescriptorSet 0 + MemberDecorate 151(BufferM) 0 Offset 0 Decorate 153(bufferm) Binding 9 - Decorate 165(imageMS) DescriptorSet 0 + Decorate 153(bufferm) DescriptorSet 0 Decorate 165(imageMS) Binding 10 + Decorate 165(imageMS) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.meshShaderBuiltins.mesh.out b/Test/baseResults/spv.meshShaderBuiltins.mesh.out index f6b0f05cdf..d130e948e0 100644 --- a/Test/baseResults/spv.meshShaderBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderBuiltins.mesh.out @@ -47,32 +47,32 @@ spv.meshShaderBuiltins.mesh Name 146 "gl_PrimitiveCountNV" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 30(gl_MeshPerVertexNV) Block MemberDecorate 30(gl_MeshPerVertexNV) 0 BuiltIn Position MemberDecorate 30(gl_MeshPerVertexNV) 1 BuiltIn PointSize MemberDecorate 30(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance MemberDecorate 30(gl_MeshPerVertexNV) 3 BuiltIn CullDistance - MemberDecorate 30(gl_MeshPerVertexNV) 4 PerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV - MemberDecorate 30(gl_MeshPerVertexNV) 5 PerViewNV + MemberDecorate 30(gl_MeshPerVertexNV) 4 PerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV - MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV + MemberDecorate 30(gl_MeshPerVertexNV) 5 PerViewNV MemberDecorate 30(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV - Decorate 30(gl_MeshPerVertexNV) Block - MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV + MemberDecorate 30(gl_MeshPerVertexNV) 6 PerViewNV + Decorate 84(gl_MeshPerPrimitiveNV) Block MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId - MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV + MemberDecorate 84(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer - MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV + MemberDecorate 84(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex - MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV + MemberDecorate 84(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV + MemberDecorate 84(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV + MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 PerViewNV - MemberDecorate 84(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV + MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 PerViewNV - MemberDecorate 84(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV - Decorate 84(gl_MeshPerPrimitiveNV) Block Decorate 129(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV Decorate 142(gl_DrawID) BuiltIn DrawIndex Decorate 146(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV diff --git a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out index 111fa2bc52..71950088c4 100644 --- a/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewBuiltins.mesh.out @@ -42,32 +42,32 @@ spv.meshShaderPerViewBuiltins.mesh Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV + Decorate 36(gl_MeshPerVertexNV) Block MemberDecorate 36(gl_MeshPerVertexNV) 0 BuiltIn Position MemberDecorate 36(gl_MeshPerVertexNV) 1 BuiltIn PointSize MemberDecorate 36(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance MemberDecorate 36(gl_MeshPerVertexNV) 3 BuiltIn CullDistance - MemberDecorate 36(gl_MeshPerVertexNV) 4 PerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 4 BuiltIn PositionPerViewNV - MemberDecorate 36(gl_MeshPerVertexNV) 5 PerViewNV + MemberDecorate 36(gl_MeshPerVertexNV) 4 PerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 5 BuiltIn ClipDistancePerViewNV - MemberDecorate 36(gl_MeshPerVertexNV) 6 PerViewNV + MemberDecorate 36(gl_MeshPerVertexNV) 5 PerViewNV MemberDecorate 36(gl_MeshPerVertexNV) 6 BuiltIn CullDistancePerViewNV - Decorate 36(gl_MeshPerVertexNV) Block - MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV + MemberDecorate 36(gl_MeshPerVertexNV) 6 PerViewNV + Decorate 68(gl_MeshPerPrimitiveNV) Block MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId - MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV + MemberDecorate 68(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer - MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV + MemberDecorate 68(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex - MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV + MemberDecorate 68(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV + MemberDecorate 68(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV + MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 PerViewNV - MemberDecorate 68(gl_MeshPerPrimitiveNV) 4 BuiltIn LayerPerViewNV + MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerPrimitiveNV MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 PerViewNV - MemberDecorate 68(gl_MeshPerPrimitiveNV) 5 BuiltIn ViewportMaskPerViewNV - Decorate 68(gl_MeshPerPrimitiveNV) Block Decorate 125 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out index cd6a95b888..d4ae1501c1 100644 --- a/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out +++ b/Test/baseResults/spv.meshShaderPerViewUserDefined.mesh.out @@ -43,41 +43,41 @@ spv.meshShaderPerViewUserDefined.mesh Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV + Decorate 31(block) Block MemberDecorate 31(block) 0 PerPrimitiveNV MemberDecorate 31(block) 0 PerViewNV MemberDecorate 31(block) 1 PerPrimitiveNV MemberDecorate 31(block) 2 PerViewNV - Decorate 31(block) Block Decorate 35(b) Location 0 + Decorate 64(perviewBlock) Block MemberDecorate 64(perviewBlock) 0 PerPrimitiveNV MemberDecorate 64(perviewBlock) 0 PerViewNV MemberDecorate 64(perviewBlock) 1 PerPrimitiveNV MemberDecorate 64(perviewBlock) 1 PerViewNV MemberDecorate 64(perviewBlock) 2 PerViewNV MemberDecorate 64(perviewBlock) 3 PerViewNV - Decorate 64(perviewBlock) Block Decorate 67(b2) Location 10 Decorate 89 BuiltIn WorkgroupSize - Decorate 92(nonBlk1) PerViewNV Decorate 92(nonBlk1) Location 18 + Decorate 92(nonBlk1) PerViewNV + Decorate 95(nonBlk2) Location 19 Decorate 95(nonBlk2) PerPrimitiveNV Decorate 95(nonBlk2) PerViewNV - Decorate 95(nonBlk2) Location 19 - Decorate 96(nonBlk3) PerViewNV Decorate 96(nonBlk3) Location 20 + Decorate 96(nonBlk3) PerViewNV + Decorate 97(nonBlk4) Location 21 Decorate 97(nonBlk4) PerPrimitiveNV Decorate 97(nonBlk4) PerViewNV - Decorate 97(nonBlk4) Location 21 - Decorate 102(nonBlkArr1) PerViewNV Decorate 102(nonBlkArr1) Location 22 + Decorate 102(nonBlkArr1) PerViewNV + Decorate 105(nonBlkArr2) Location 24 Decorate 105(nonBlkArr2) PerPrimitiveNV Decorate 105(nonBlkArr2) PerViewNV - Decorate 105(nonBlkArr2) Location 24 - Decorate 106(nonBlkArr3) PerViewNV Decorate 106(nonBlkArr3) Location 26 + Decorate 106(nonBlkArr3) PerViewNV + Decorate 107(nonBlkArr4) Location 28 Decorate 107(nonBlkArr4) PerPrimitiveNV Decorate 107(nonBlkArr4) PerViewNV - Decorate 107(nonBlkArr4) Location 28 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out index 60422d66e3..b75cfdd546 100644 --- a/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderRedeclBuiltins.mesh.out @@ -39,20 +39,20 @@ spv.meshShaderRedeclBuiltins.mesh Name 127 "gl_PrimitiveCountNV" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 24(gl_MeshPerVertexNV) Block MemberDecorate 24(gl_MeshPerVertexNV) 0 BuiltIn Position MemberDecorate 24(gl_MeshPerVertexNV) 1 BuiltIn PointSize MemberDecorate 24(gl_MeshPerVertexNV) 2 BuiltIn ClipDistance MemberDecorate 24(gl_MeshPerVertexNV) 3 BuiltIn CullDistance - Decorate 24(gl_MeshPerVertexNV) Block - MemberDecorate 77(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV + Decorate 77(gl_MeshPerPrimitiveNV) Block MemberDecorate 77(gl_MeshPerPrimitiveNV) 0 BuiltIn PrimitiveId - MemberDecorate 77(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV + MemberDecorate 77(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 77(gl_MeshPerPrimitiveNV) 1 BuiltIn Layer - MemberDecorate 77(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV + MemberDecorate 77(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 77(gl_MeshPerPrimitiveNV) 2 BuiltIn ViewportIndex - MemberDecorate 77(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV + MemberDecorate 77(gl_MeshPerPrimitiveNV) 2 PerPrimitiveNV MemberDecorate 77(gl_MeshPerPrimitiveNV) 3 BuiltIn ViewportMaskNV - Decorate 77(gl_MeshPerPrimitiveNV) Block + MemberDecorate 77(gl_MeshPerPrimitiveNV) 3 PerPrimitiveNV Decorate 122(gl_PrimitiveIndicesNV) BuiltIn PrimitiveIndicesNV Decorate 127(gl_PrimitiveCountNV) BuiltIn PrimitiveCountNV Decorate 128 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out index f6c20383c1..63e7fc67a9 100644 --- a/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out +++ b/Test/baseResults/spv.meshShaderRedeclPerViewBuiltins.mesh.out @@ -34,20 +34,20 @@ spv.meshShaderRedeclPerViewBuiltins.mesh Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 20(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 21(gl_MeshViewCountNV) BuiltIn MeshViewCountNV - MemberDecorate 31(gl_MeshPerVertexNV) 0 PerViewNV + Decorate 31(gl_MeshPerVertexNV) Block MemberDecorate 31(gl_MeshPerVertexNV) 0 BuiltIn PositionPerViewNV - MemberDecorate 31(gl_MeshPerVertexNV) 1 PerViewNV + MemberDecorate 31(gl_MeshPerVertexNV) 0 PerViewNV MemberDecorate 31(gl_MeshPerVertexNV) 1 BuiltIn ClipDistancePerViewNV - MemberDecorate 31(gl_MeshPerVertexNV) 2 PerViewNV + MemberDecorate 31(gl_MeshPerVertexNV) 1 PerViewNV MemberDecorate 31(gl_MeshPerVertexNV) 2 BuiltIn CullDistancePerViewNV - Decorate 31(gl_MeshPerVertexNV) Block + MemberDecorate 31(gl_MeshPerVertexNV) 2 PerViewNV + Decorate 63(gl_MeshPerPrimitiveNV) Block + MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 BuiltIn LayerPerViewNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 PerPrimitiveNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 PerViewNV - MemberDecorate 63(gl_MeshPerPrimitiveNV) 0 BuiltIn LayerPerViewNV + MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 BuiltIn ViewportMaskPerViewNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 PerPrimitiveNV MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 PerViewNV - MemberDecorate 63(gl_MeshPerPrimitiveNV) 1 BuiltIn ViewportMaskPerViewNV - Decorate 63(gl_MeshPerPrimitiveNV) Block Decorate 119 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.meshShaderSharedMem.mesh.out b/Test/baseResults/spv.meshShaderSharedMem.mesh.out index 9ad333c85b..2e15ffb5d8 100644 --- a/Test/baseResults/spv.meshShaderSharedMem.mesh.out +++ b/Test/baseResults/spv.meshShaderSharedMem.mesh.out @@ -28,13 +28,13 @@ spv.meshShaderSharedMem.mesh Name 55 "uni_image" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId - MemberDecorate 37(block0) 0 Offset 0 Decorate 37(block0) Block - Decorate 39 DescriptorSet 0 + MemberDecorate 37(block0) 0 Offset 0 Decorate 39 Binding 1 - Decorate 55(uni_image) DescriptorSet 0 - Decorate 55(uni_image) Binding 0 + Decorate 39 DescriptorSet 0 Decorate 55(uni_image) NonReadable + Decorate 55(uni_image) Binding 0 + Decorate 55(uni_image) DescriptorSet 0 Decorate 76 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.meshShaderTaskMem.mesh.out b/Test/baseResults/spv.meshShaderTaskMem.mesh.out index fcbec3d662..adf4cfb97d 100644 --- a/Test/baseResults/spv.meshShaderTaskMem.mesh.out +++ b/Test/baseResults/spv.meshShaderTaskMem.mesh.out @@ -33,18 +33,18 @@ spv.meshShaderTaskMem.mesh Decorate 18(outBlock) Block Decorate 22(myblk) Location 0 Decorate 27 ArrayStride 4 - MemberDecorate 28(taskBlock) 0 PerTaskNV + Decorate 28(taskBlock) Block MemberDecorate 28(taskBlock) 0 Offset 0 - MemberDecorate 28(taskBlock) 1 PerTaskNV + MemberDecorate 28(taskBlock) 0 PerTaskNV MemberDecorate 28(taskBlock) 1 Offset 16 - Decorate 28(taskBlock) Block + MemberDecorate 28(taskBlock) 1 PerTaskNV Decorate 30(mytask) Location 0 Decorate 35 ArrayStride 4 + Decorate 36(bufferBlock) BufferBlock MemberDecorate 36(bufferBlock) 0 Offset 0 MemberDecorate 36(bufferBlock) 1 Offset 16 - Decorate 36(bufferBlock) BufferBlock - Decorate 38(mybuf) DescriptorSet 0 Decorate 38(mybuf) Binding 0 + Decorate 38(mybuf) DescriptorSet 0 Decorate 57 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.meshShaderUserDefined.mesh.out b/Test/baseResults/spv.meshShaderUserDefined.mesh.out index 0e5fd05034..d4d87356cf 100644 --- a/Test/baseResults/spv.meshShaderUserDefined.mesh.out +++ b/Test/baseResults/spv.meshShaderUserDefined.mesh.out @@ -34,13 +34,13 @@ spv.meshShaderUserDefined.mesh Name 104 "blk2" Decorate 11(gl_LocalInvocationID) BuiltIn LocalInvocationId Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId + Decorate 30(myblock) Block MemberDecorate 30(myblock) 0 PerPrimitiveNV MemberDecorate 30(myblock) 1 PerPrimitiveNV MemberDecorate 30(myblock) 2 PerPrimitiveNV MemberDecorate 30(myblock) 3 PerPrimitiveNV MemberDecorate 30(myblock) 4 PerPrimitiveNV MemberDecorate 30(myblock) 5 PerPrimitiveNV - Decorate 30(myblock) Block Decorate 34(blk) Location 0 Decorate 100(myblock2) Block Decorate 104(blk2) Location 20 diff --git a/Test/baseResults/spv.meshTaskShader.task.out b/Test/baseResults/spv.meshTaskShader.task.out index 9442f97314..dab6762306 100644 --- a/Test/baseResults/spv.meshTaskShader.task.out +++ b/Test/baseResults/spv.meshTaskShader.task.out @@ -36,21 +36,21 @@ spv.meshTaskShader.task Decorate 17(gl_WorkGroupID) BuiltIn WorkgroupId Decorate 24(gl_MeshViewIndicesNV) BuiltIn MeshViewIndicesNV Decorate 25(gl_MeshViewCountNV) BuiltIn MeshViewCountNV - MemberDecorate 47(block0) 0 Offset 0 Decorate 47(block0) Block - Decorate 49 DescriptorSet 0 + MemberDecorate 47(block0) 0 Offset 0 Decorate 49 Binding 1 - Decorate 65(uni_image) DescriptorSet 0 - Decorate 65(uni_image) Binding 0 + Decorate 49 DescriptorSet 0 Decorate 65(uni_image) NonReadable + Decorate 65(uni_image) Binding 0 + Decorate 65(uni_image) DescriptorSet 0 Decorate 87 ArrayStride 8 - MemberDecorate 88(Task) 0 PerTaskNV + Decorate 88(Task) Block MemberDecorate 88(Task) 0 Offset 0 - MemberDecorate 88(Task) 1 PerTaskNV + MemberDecorate 88(Task) 0 PerTaskNV MemberDecorate 88(Task) 1 Offset 8 - MemberDecorate 88(Task) 2 PerTaskNV + MemberDecorate 88(Task) 1 PerTaskNV MemberDecorate 88(Task) 2 Offset 32 - Decorate 88(Task) Block + MemberDecorate 88(Task) 2 PerTaskNV Decorate 90(mytask) Location 0 Decorate 113(gl_TaskCountNV) BuiltIn TaskCountNV Decorate 115 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.multiStruct.comp.out b/Test/baseResults/spv.multiStruct.comp.out index 0ff605ccc9..af9db96651 100644 --- a/Test/baseResults/spv.multiStruct.comp.out +++ b/Test/baseResults/spv.multiStruct.comp.out @@ -48,35 +48,35 @@ spv.multiStruct.comp Decorate 15 ArrayStride 8 MemberDecorate 16(MyStruct) 0 Offset 0 MemberDecorate 16(MyStruct) 1 Offset 16 - MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 17(SSBO0) BufferBlock - Decorate 19(inBuf) DescriptorSet 0 + MemberDecorate 17(SSBO0) 0 Offset 0 Decorate 19(inBuf) Binding 0 - MemberDecorate 39(SSBO1) 0 Offset 0 + Decorate 19(inBuf) DescriptorSet 0 Decorate 39(SSBO1) BufferBlock - Decorate 41(outBuf) DescriptorSet 0 + MemberDecorate 39(SSBO1) 0 Offset 0 Decorate 41(outBuf) Binding 1 + Decorate 41(outBuf) DescriptorSet 0 Decorate 57 ArrayStride 16 MemberDecorate 58(MyStruct) 0 Offset 0 MemberDecorate 58(MyStruct) 1 Offset 32 - MemberDecorate 59(UBO) 0 Offset 0 Decorate 59(UBO) Block - Decorate 61(uBuf) DescriptorSet 0 + MemberDecorate 59(UBO) 0 Offset 0 Decorate 61(uBuf) Binding 2 + Decorate 61(uBuf) DescriptorSet 0 Decorate 89 ArrayStride 48 MemberDecorate 90(Nested) 0 Offset 0 MemberDecorate 90(Nested) 1 Offset 16 - MemberDecorate 91(UBON) 0 Offset 0 Decorate 91(UBON) Block - Decorate 93(uBufN) DescriptorSet 0 + MemberDecorate 91(UBON) 0 Offset 0 Decorate 93(uBufN) Binding 2 + Decorate 93(uBufN) DescriptorSet 0 Decorate 125 ArrayStride 24 MemberDecorate 126(Nested) 0 Offset 0 MemberDecorate 126(Nested) 1 Offset 8 - MemberDecorate 127(SSBO1N) 0 Offset 0 Decorate 127(SSBO1N) BufferBlock - Decorate 129(outBufN) DescriptorSet 0 + MemberDecorate 127(SSBO1N) 0 Offset 0 Decorate 129(outBufN) Binding 1 + Decorate 129(outBufN) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.multiStructFuncall.frag.out b/Test/baseResults/spv.multiStructFuncall.frag.out index 50f4b78b8d..55544dc611 100644 --- a/Test/baseResults/spv.multiStructFuncall.frag.out +++ b/Test/baseResults/spv.multiStructFuncall.frag.out @@ -30,12 +30,12 @@ spv.multiStructFuncall.frag Name 50 "param" Name 61 "param" MemberDecorate 22(S) 0 ColMajor - MemberDecorate 22(S) 0 Offset 0 MemberDecorate 22(S) 0 MatrixStride 16 - MemberDecorate 23(blockName) 0 Offset 0 + MemberDecorate 22(S) 0 Offset 0 Decorate 23(blockName) BufferBlock - Decorate 25 DescriptorSet 0 + MemberDecorate 23(blockName) 0 Offset 0 Decorate 25 Binding 0 + Decorate 25 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.multiView.frag.out b/Test/baseResults/spv.multiView.frag.out index c6afe8f6e8..dd433e80d0 100644 --- a/Test/baseResults/spv.multiView.frag.out +++ b/Test/baseResults/spv.multiView.frag.out @@ -15,8 +15,8 @@ spv.multiView.frag Name 9 "color" Name 12 "gl_ViewIndex" Decorate 9(color) Location 0 - Decorate 12(gl_ViewIndex) Flat Decorate 12(gl_ViewIndex) BuiltIn ViewIndex + Decorate 12(gl_ViewIndex) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.multiple.var.same.const.frag.out b/Test/baseResults/spv.multiple.var.same.const.frag.out new file mode 100644 index 0000000000..833c6aced4 --- /dev/null +++ b/Test/baseResults/spv.multiple.var.same.const.frag.out @@ -0,0 +1,21 @@ +spv.multiple.var.same.const.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 8 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 4 "main" + ExecutionMode 4 OriginUpperLeft + Source ESSL 320 + Name 4 "main" + Decorate 7 RelaxedPrecision + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeFloat 32 + 7: 6(float) Constant 897988541 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out index 9527951232..fa71809337 100644 --- a/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out +++ b/Test/baseResults/spv.multiviewPerViewAttributes.tesc.out @@ -25,16 +25,16 @@ spv.multiviewPerViewAttributes.tesc MemberName 27(gl_PerVertex) 3 "gl_CullDistance" MemberName 27(gl_PerVertex) 4 "gl_PositionPerViewNV" Name 31 "gl_in" + Decorate 13(gl_PerVertex) Block MemberDecorate 13(gl_PerVertex) 0 BuiltIn PositionPerViewNV MemberDecorate 13(gl_PerVertex) 1 BuiltIn ViewportMaskPerViewNV - Decorate 13(gl_PerVertex) Block Decorate 19(gl_InvocationID) BuiltIn InvocationId + Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 27(gl_PerVertex) 4 BuiltIn PositionPerViewNV - Decorate 27(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out index 8268e5deaf..c456f02233 100644 --- a/Test/baseResults/spv.multiviewPerViewAttributes.vert.out +++ b/Test/baseResults/spv.multiviewPerViewAttributes.vert.out @@ -22,11 +22,11 @@ spv.multiviewPerViewAttributes.vert Name 24 "" Decorate 11(gl_ViewportMaskPerViewNV) BuiltIn ViewportMaskPerViewNV Decorate 20(gl_PositionPerViewNV) BuiltIn PositionPerViewNV + Decorate 22(gl_PerVertex) Block MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 22(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.newTexture.frag.out b/Test/baseResults/spv.newTexture.frag.out index 922e82e769..2bffe8af4b 100644 --- a/Test/baseResults/spv.newTexture.frag.out +++ b/Test/baseResults/spv.newTexture.frag.out @@ -44,53 +44,53 @@ Validation failed Name 271 "usCube" Name 275 "us2DArray" Name 277 "ic4D" - Decorate 13(s2D) DescriptorSet 0 Decorate 13(s2D) Binding 0 + Decorate 13(s2D) DescriptorSet 0 Decorate 17(c2D) Location 1 - Decorate 23(sCubeArrayShadow) DescriptorSet 0 Decorate 23(sCubeArrayShadow) Binding 5 + Decorate 23(sCubeArrayShadow) DescriptorSet 0 Decorate 26(c4D) Location 3 Decorate 29(c1D) Location 0 - Decorate 42(s3D) DescriptorSet 0 Decorate 42(s3D) Binding 2 - Decorate 51(s2DArray) DescriptorSet 0 + Decorate 42(s3D) DescriptorSet 0 Decorate 51(s2DArray) Binding 7 + Decorate 51(s2DArray) DescriptorSet 0 Decorate 55(c3D) Location 2 - Decorate 64(s2DShadow) DescriptorSet 0 Decorate 64(s2DShadow) Binding 6 + Decorate 64(s2DShadow) DescriptorSet 0 Decorate 81(ic3D) Flat Decorate 81(ic3D) Location 6 Decorate 84(ic1D) Flat Decorate 84(ic1D) Location 4 Decorate 92(ic2D) Flat Decorate 92(ic2D) Location 5 - Decorate 102(sr) DescriptorSet 0 Decorate 102(sr) Binding 1 - Decorate 128(sCube) DescriptorSet 0 + Decorate 102(sr) DescriptorSet 0 Decorate 128(sCube) Binding 3 - Decorate 137(s2DArrayShadow) DescriptorSet 0 + Decorate 128(sCube) DescriptorSet 0 Decorate 137(s2DArrayShadow) Binding 8 - Decorate 166(is2D) DescriptorSet 0 + Decorate 137(s2DArrayShadow) DescriptorSet 0 Decorate 166(is2D) Binding 9 - Decorate 202(is3D) DescriptorSet 0 + Decorate 166(is2D) DescriptorSet 0 Decorate 202(is3D) Binding 10 - Decorate 214(isCube) DescriptorSet 0 + Decorate 202(is3D) DescriptorSet 0 Decorate 214(isCube) Binding 11 - Decorate 226(is2DArray) DescriptorSet 0 + Decorate 214(isCube) DescriptorSet 0 Decorate 226(is2DArray) Binding 12 - Decorate 241(sCubeShadow) DescriptorSet 0 + Decorate 226(is2DArray) DescriptorSet 0 Decorate 241(sCubeShadow) Binding 4 + Decorate 241(sCubeShadow) DescriptorSet 0 Decorate 247(FragData) Location 0 - Decorate 259(is2Dms) DescriptorSet 0 Decorate 259(is2Dms) Binding 0 - Decorate 263(us2D) DescriptorSet 0 + Decorate 259(is2Dms) DescriptorSet 0 Decorate 263(us2D) Binding 0 - Decorate 267(us3D) DescriptorSet 0 + Decorate 263(us2D) DescriptorSet 0 Decorate 267(us3D) Binding 0 - Decorate 271(usCube) DescriptorSet 0 + Decorate 267(us3D) DescriptorSet 0 Decorate 271(usCube) Binding 0 - Decorate 275(us2DArray) DescriptorSet 0 + Decorate 271(usCube) DescriptorSet 0 Decorate 275(us2DArray) Binding 0 + Decorate 275(us2DArray) DescriptorSet 0 Decorate 277(ic4D) Flat Decorate 277(ic4D) Location 7 2: TypeVoid diff --git a/Test/baseResults/spv.noBuiltInLoc.vert.out b/Test/baseResults/spv.noBuiltInLoc.vert.out index 65ee22a618..c7541bf544 100644 --- a/Test/baseResults/spv.noBuiltInLoc.vert.out +++ b/Test/baseResults/spv.noBuiltInLoc.vert.out @@ -26,20 +26,20 @@ spv.noBuiltInLoc.vert Name 34 "gl_InstanceID" Decorate 9(bar) Location 0 Decorate 11(foo) Location 0 + Decorate 16(gl_PerVertex) Block MemberDecorate 16(gl_PerVertex) 0 BuiltIn Position MemberDecorate 16(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 16(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 16(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 16(gl_PerVertex) Block Decorate 24(uv1) Location 0 Decorate 24(uv1) DescriptorSet 0 Decorate 26(uv2) Location 1 Decorate 26(uv2) DescriptorSet 0 Decorate 29(uv3) Location 2 Decorate 29(uv3) DescriptorSet 0 - Decorate 31(a_uint) Offset 0 - Decorate 31(a_uint) DescriptorSet 0 Decorate 31(a_uint) Binding 0 + Decorate 31(a_uint) DescriptorSet 0 + Decorate 31(a_uint) Offset 0 Decorate 33(gl_VertexID) BuiltIn VertexId Decorate 34(gl_InstanceID) BuiltIn InstanceId 2: TypeVoid diff --git a/Test/baseResults/spv.noDeadDecorations.vert.out b/Test/baseResults/spv.noDeadDecorations.vert.out index 0185eaf3af..51814d0cb7 100644 --- a/Test/baseResults/spv.noDeadDecorations.vert.out +++ b/Test/baseResults/spv.noDeadDecorations.vert.out @@ -16,13 +16,13 @@ spv.noDeadDecorations.vert MemberName 20(gl_PerVertex) 1 "gl_PointSize" Name 22 "" Name 26 "param" - Decorate 10(func(f1;) RelaxedPrecision Decorate 9(a) RelaxedPrecision + Decorate 10(func(f1;) RelaxedPrecision Decorate 12 RelaxedPrecision Decorate 13 RelaxedPrecision + Decorate 20(gl_PerVertex) Block MemberDecorate 20(gl_PerVertex) 0 BuiltIn Position MemberDecorate 20(gl_PerVertex) 1 BuiltIn PointSize - Decorate 20(gl_PerVertex) Block Decorate 26(param) RelaxedPrecision Decorate 27 RelaxedPrecision 2: TypeVoid diff --git a/Test/baseResults/spv.nonuniform.frag.out b/Test/baseResults/spv.nonuniform.frag.out index 26b020c555..8aa6883806 100644 --- a/Test/baseResults/spv.nonuniform.frag.out +++ b/Test/baseResults/spv.nonuniform.frag.out @@ -82,65 +82,65 @@ spv.nonuniform.frag Decorate 46 DecorationNonUniformEXT Decorate 48 DecorationNonUniformEXT Decorate 49 DecorationNonUniformEXT - Decorate 53(inputAttachmentDyn) DescriptorSet 0 Decorate 53(inputAttachmentDyn) Binding 0 + Decorate 53(inputAttachmentDyn) DescriptorSet 0 Decorate 53(inputAttachmentDyn) InputAttachmentIndex 0 - Decorate 70(uniformTexelBufferDyn) DescriptorSet 0 Decorate 70(uniformTexelBufferDyn) Binding 1 - Decorate 84(storageTexelBufferDyn) DescriptorSet 0 + Decorate 70(uniformTexelBufferDyn) DescriptorSet 0 Decorate 84(storageTexelBufferDyn) Binding 2 - MemberDecorate 93(uname) 0 Offset 0 + Decorate 84(storageTexelBufferDyn) DescriptorSet 0 Decorate 93(uname) Block - Decorate 96(uniformBuffer) DescriptorSet 0 + MemberDecorate 93(uname) 0 Offset 0 Decorate 96(uniformBuffer) Binding 3 + Decorate 96(uniformBuffer) DescriptorSet 0 Decorate 98(nu_ii) Flat Decorate 98(nu_ii) Location 1 Decorate 99 DecorationNonUniformEXT Decorate 101 DecorationNonUniformEXT Decorate 102 DecorationNonUniformEXT Decorate 104 DecorationNonUniformEXT - MemberDecorate 105(bname) 0 Offset 0 Decorate 105(bname) BufferBlock - Decorate 108(storageBuffer) DescriptorSet 0 + MemberDecorate 105(bname) 0 Offset 0 Decorate 108(storageBuffer) Binding 4 + Decorate 108(storageBuffer) DescriptorSet 0 Decorate 109 DecorationNonUniformEXT Decorate 110 DecorationNonUniformEXT Decorate 111 DecorationNonUniformEXT Decorate 113 DecorationNonUniformEXT - Decorate 118(sampledImage) DescriptorSet 0 Decorate 118(sampledImage) Binding 5 + Decorate 118(sampledImage) DescriptorSet 0 Decorate 119 DecorationNonUniformEXT Decorate 121 DecorationNonUniformEXT Decorate 122 DecorationNonUniformEXT - Decorate 133(storageImage) DescriptorSet 0 Decorate 133(storageImage) Binding 6 + Decorate 133(storageImage) DescriptorSet 0 Decorate 134 DecorationNonUniformEXT Decorate 136 DecorationNonUniformEXT Decorate 137 DecorationNonUniformEXT - Decorate 145(inputAttachment) DescriptorSet 0 Decorate 145(inputAttachment) Binding 7 + Decorate 145(inputAttachment) DescriptorSet 0 Decorate 145(inputAttachment) InputAttachmentIndex 1 Decorate 146 DecorationNonUniformEXT Decorate 147 DecorationNonUniformEXT Decorate 148 DecorationNonUniformEXT - Decorate 155(uniformTexelBuffer) DescriptorSet 0 Decorate 155(uniformTexelBuffer) Binding 8 + Decorate 155(uniformTexelBuffer) DescriptorSet 0 Decorate 156 DecorationNonUniformEXT Decorate 157 DecorationNonUniformEXT Decorate 158 DecorationNonUniformEXT Decorate 159 DecorationNonUniformEXT - Decorate 166(storageTexelBuffer) DescriptorSet 0 Decorate 166(storageTexelBuffer) Binding 9 + Decorate 166(storageTexelBuffer) DescriptorSet 0 Decorate 167 DecorationNonUniformEXT Decorate 168 DecorationNonUniformEXT Decorate 169 DecorationNonUniformEXT - Decorate 177(uniformTexArr) DescriptorSet 0 Decorate 177(uniformTexArr) Binding 10 + Decorate 177(uniformTexArr) DescriptorSet 0 Decorate 178 DecorationNonUniformEXT Decorate 180 DecorationNonUniformEXT Decorate 181 DecorationNonUniformEXT - Decorate 184(uniformSampler) DescriptorSet 0 Decorate 184(uniformSampler) Binding 11 + Decorate 184(uniformSampler) DescriptorSet 0 Decorate 188(inTexcoord) Location 2 Decorate 194 DecorationNonUniformEXT Decorate 195 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.nonuniform2.frag.out b/Test/baseResults/spv.nonuniform2.frag.out index b9d64ddce9..b5b3dfe295 100644 --- a/Test/baseResults/spv.nonuniform2.frag.out +++ b/Test/baseResults/spv.nonuniform2.frag.out @@ -20,8 +20,8 @@ spv.nonuniform2.frag Name 13 "data" Name 16 "rIndex" Decorate 9(FragColor) Location 0 - Decorate 13(data) DescriptorSet 0 Decorate 13(data) Binding 4 + Decorate 13(data) DescriptorSet 0 Decorate 16(rIndex) Flat Decorate 16(rIndex) Location 3 Decorate 18 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.nonuniform3.frag.out b/Test/baseResults/spv.nonuniform3.frag.out index 119a6d9bb7..331c058ee4 100644 --- a/Test/baseResults/spv.nonuniform3.frag.out +++ b/Test/baseResults/spv.nonuniform3.frag.out @@ -19,12 +19,12 @@ spv.nonuniform3.frag Name 16 "Index" Name 23 "uSamp" Decorate 9(FragColor) Location 0 - Decorate 13(uTex) DescriptorSet 0 Decorate 13(uTex) Binding 0 + Decorate 13(uTex) DescriptorSet 0 Decorate 16(Index) Flat Decorate 16(Index) Location 0 - Decorate 23(uSamp) DescriptorSet 1 Decorate 23(uSamp) Binding 0 + Decorate 23(uSamp) DescriptorSet 1 Decorate 27 DecorationNonUniformEXT 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.nonuniform4.frag.out b/Test/baseResults/spv.nonuniform4.frag.out index 4442e5f512..a20f64b9fe 100644 --- a/Test/baseResults/spv.nonuniform4.frag.out +++ b/Test/baseResults/spv.nonuniform4.frag.out @@ -18,8 +18,8 @@ spv.nonuniform4.frag Name 4 "main" Name 10 "data" Name 13 "rIndex" - Decorate 10(data) DescriptorSet 0 Decorate 10(data) Binding 4 + Decorate 10(data) DescriptorSet 0 Decorate 13(rIndex) Flat Decorate 13(rIndex) Location 3 Decorate 15 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.nonuniform5.frag.out b/Test/baseResults/spv.nonuniform5.frag.out index abf10c2c3f..d2f056311d 100644 --- a/Test/baseResults/spv.nonuniform5.frag.out +++ b/Test/baseResults/spv.nonuniform5.frag.out @@ -21,10 +21,10 @@ spv.nonuniform5.frag Name 13 "ubos" Name 16 "Index" Decorate 9(FragColor) Location 0 - MemberDecorate 10(UBO) 0 Offset 0 Decorate 10(UBO) Block - Decorate 13(ubos) DescriptorSet 0 + MemberDecorate 10(UBO) 0 Offset 0 Decorate 13(ubos) Binding 0 + Decorate 13(ubos) DescriptorSet 0 Decorate 16(Index) Flat Decorate 16(Index) Location 0 Decorate 18 DecorationNonUniformEXT diff --git a/Test/baseResults/spv.nv.dmm-allops.comp.out b/Test/baseResults/spv.nv.dmm-allops.comp.out index b98071425a..68537d4a9b 100644 --- a/Test/baseResults/spv.nv.dmm-allops.comp.out +++ b/Test/baseResults/spv.nv.dmm-allops.comp.out @@ -21,13 +21,13 @@ spv.nv.dmm-allops.comp MemberName 9(block) 1 "op_bary" Name 11 "" Name 16 "as" + Decorate 9(block) Block MemberDecorate 9(block) 0 Offset 0 MemberDecorate 9(block) 1 Offset 16 - Decorate 9(block) Block - Decorate 11 DescriptorSet 0 Decorate 11 Binding 0 - Decorate 16(as) DescriptorSet 0 + Decorate 11 DescriptorSet 0 Decorate 16(as) Binding 1 + Decorate 16(as) DescriptorSet 0 Decorate 58 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.nv.dmm-allops.mesh.out b/Test/baseResults/spv.nv.dmm-allops.mesh.out index 9f626c212c..f2edf54805 100644 --- a/Test/baseResults/spv.nv.dmm-allops.mesh.out +++ b/Test/baseResults/spv.nv.dmm-allops.mesh.out @@ -26,13 +26,13 @@ spv.nv.dmm-allops.mesh MemberName 9(block) 1 "op_bary" Name 11 "" Name 16 "as" + Decorate 9(block) Block MemberDecorate 9(block) 0 Offset 0 MemberDecorate 9(block) 1 Offset 16 - Decorate 9(block) Block - Decorate 11 DescriptorSet 0 Decorate 11 Binding 0 - Decorate 16(as) DescriptorSet 0 + Decorate 11 DescriptorSet 0 Decorate 16(as) Binding 1 + Decorate 16(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.nv.dmm-allops.rahit.out b/Test/baseResults/spv.nv.dmm-allops.rahit.out index 388ab04eaa..565511951c 100644 --- a/Test/baseResults/spv.nv.dmm-allops.rahit.out +++ b/Test/baseResults/spv.nv.dmm-allops.rahit.out @@ -26,19 +26,19 @@ spv.nv.dmm-allops.rahit Name 64 "gl_HitKindFrontFacingMicroTriangleNV" Name 67 "gl_HitKindBackFacingMicroTriangleNV" Name 76 "as" + Decorate 10(block) Block MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 16 MemberDecorate 10(block) 2 Offset 24 - Decorate 10(block) Block - Decorate 12 DescriptorSet 0 Decorate 12 Binding 0 + Decorate 12 DescriptorSet 0 Decorate 18(gl_HitMicroTriangleVertexPositionsNV) BuiltIn HitMicroTriangleVertexPositionsNV Decorate 40(gl_HitMicroTriangleVertexBarycentricsNV) BuiltIn HitMicroTriangleVertexBarycentricsNV Decorate 59(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 64(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV Decorate 67(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV - Decorate 76(as) DescriptorSet 0 Decorate 76(as) Binding 1 + Decorate 76(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.nv.dmm-allops.rchit.out b/Test/baseResults/spv.nv.dmm-allops.rchit.out index c53bc8c17c..291b51485b 100644 --- a/Test/baseResults/spv.nv.dmm-allops.rchit.out +++ b/Test/baseResults/spv.nv.dmm-allops.rchit.out @@ -26,19 +26,19 @@ spv.nv.dmm-allops.rchit Name 64 "gl_HitKindFrontFacingMicroTriangleNV" Name 67 "gl_HitKindBackFacingMicroTriangleNV" Name 76 "as" + Decorate 10(block) Block MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 16 MemberDecorate 10(block) 2 Offset 24 - Decorate 10(block) Block - Decorate 12 DescriptorSet 0 Decorate 12 Binding 0 + Decorate 12 DescriptorSet 0 Decorate 18(gl_HitMicroTriangleVertexPositionsNV) BuiltIn HitMicroTriangleVertexPositionsNV Decorate 40(gl_HitMicroTriangleVertexBarycentricsNV) BuiltIn HitMicroTriangleVertexBarycentricsNV Decorate 59(gl_HitKindEXT) BuiltIn HitKindKHR Decorate 64(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV Decorate 67(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV - Decorate 76(as) DescriptorSet 0 Decorate 76(as) Binding 1 + Decorate 76(as) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.nv.dmm-allops.rgen.out b/Test/baseResults/spv.nv.dmm-allops.rgen.out index 78001e1fea..aaff10ff4b 100644 --- a/Test/baseResults/spv.nv.dmm-allops.rgen.out +++ b/Test/baseResults/spv.nv.dmm-allops.rgen.out @@ -23,14 +23,14 @@ spv.nv.dmm-allops.rgen Name 17 "as" Name 58 "gl_HitKindFrontFacingMicroTriangleNV" Name 61 "gl_HitKindBackFacingMicroTriangleNV" + Decorate 10(block) Block MemberDecorate 10(block) 0 Offset 0 MemberDecorate 10(block) 1 Offset 16 MemberDecorate 10(block) 2 Offset 24 - Decorate 10(block) Block - Decorate 12 DescriptorSet 0 Decorate 12 Binding 0 - Decorate 17(as) DescriptorSet 0 + Decorate 12 DescriptorSet 0 Decorate 17(as) Binding 1 + Decorate 17(as) DescriptorSet 0 Decorate 58(gl_HitKindFrontFacingMicroTriangleNV) BuiltIn HitKindFrontFacingMicroTriangleNV Decorate 61(gl_HitKindBackFacingMicroTriangleNV) BuiltIn HitKindBackFacingMicroTriangleNV 2: TypeVoid diff --git a/Test/baseResults/spv.nv.hitobject-allops.rchit.out b/Test/baseResults/spv.nv.hitobject-allops.rchit.out index 15e6d4168e..0ab305c3b0 100644 --- a/Test/baseResults/spv.nv.hitobject-allops.rchit.out +++ b/Test/baseResults/spv.nv.hitobject-allops.rchit.out @@ -48,13 +48,13 @@ spv.nv.hitobject-allops.rchit Name 112 "handle" Name 114 "rid" Decorate 12(hBlock) Block - Decorate 25(as) DescriptorSet 0 Decorate 25(as) Binding 0 + Decorate 25(as) DescriptorSet 0 Decorate 40(pBlock) Block - MemberDecorate 62(block) 0 Offset 0 Decorate 62(block) Block - Decorate 64 DescriptorSet 0 + MemberDecorate 62(block) 0 Offset 0 Decorate 64 Binding 1 + Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.nv.hitobject-allops.rgen.out b/Test/baseResults/spv.nv.hitobject-allops.rgen.out index d395500a8c..c681111888 100644 --- a/Test/baseResults/spv.nv.hitobject-allops.rgen.out +++ b/Test/baseResults/spv.nv.hitobject-allops.rgen.out @@ -48,13 +48,13 @@ spv.nv.hitobject-allops.rgen Name 112 "handle" Name 114 "rid" Decorate 12(hBlock) Block - Decorate 25(as) DescriptorSet 0 Decorate 25(as) Binding 0 + Decorate 25(as) DescriptorSet 0 Decorate 40(pBlock) Block - MemberDecorate 62(block) 0 Offset 0 Decorate 62(block) Block - Decorate 64 DescriptorSet 0 + MemberDecorate 62(block) 0 Offset 0 Decorate 64 Binding 1 + Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.nv.hitobject-allops.rmiss.out b/Test/baseResults/spv.nv.hitobject-allops.rmiss.out index 970d08a18d..4ad23a55a5 100644 --- a/Test/baseResults/spv.nv.hitobject-allops.rmiss.out +++ b/Test/baseResults/spv.nv.hitobject-allops.rmiss.out @@ -48,13 +48,13 @@ spv.nv.hitobject-allops.rmiss Name 112 "handle" Name 114 "rid" Decorate 12(hBlock) Block - Decorate 25(as) DescriptorSet 0 Decorate 25(as) Binding 0 + Decorate 25(as) DescriptorSet 0 Decorate 40(pBlock) Block - MemberDecorate 62(block) 0 Offset 0 Decorate 62(block) Block - Decorate 64 DescriptorSet 0 + MemberDecorate 62(block) 0 Offset 0 Decorate 64 Binding 1 + Decorate 64 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.nvAtomicFp16Vec.frag.out b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out index 3486cf3d61..76d683e436 100644 --- a/Test/baseResults/spv.nvAtomicFp16Vec.frag.out +++ b/Test/baseResults/spv.nvAtomicFp16Vec.frag.out @@ -42,69 +42,69 @@ spv.nvAtomicFp16Vec.frag Name 340 "fimageCubev4" Name 350 "fimageCubeArrayv4" Name 360 "fimage3Dv4" + Decorate 9(Buffer) BufferBlock MemberDecorate 9(Buffer) 0 Offset 0 MemberDecorate 9(Buffer) 1 Offset 8 MemberDecorate 9(Buffer) 2 Offset 16 MemberDecorate 9(Buffer) 3 Offset 24 - Decorate 9(Buffer) BufferBlock - Decorate 11(buf) DescriptorSet 0 Decorate 11(buf) Binding 0 - Decorate 74(fimage1D) DescriptorSet 0 - Decorate 74(fimage1D) Binding 0 + Decorate 11(buf) DescriptorSet 0 Decorate 74(fimage1D) Volatile Decorate 74(fimage1D) Coherent - Decorate 85(fimage1DArray) DescriptorSet 0 - Decorate 85(fimage1DArray) Binding 1 + Decorate 74(fimage1D) Binding 0 + Decorate 74(fimage1D) DescriptorSet 0 Decorate 85(fimage1DArray) Volatile Decorate 85(fimage1DArray) Coherent - Decorate 97(fimage2D) DescriptorSet 0 - Decorate 97(fimage2D) Binding 2 + Decorate 85(fimage1DArray) Binding 1 + Decorate 85(fimage1DArray) DescriptorSet 0 Decorate 97(fimage2D) Volatile Decorate 97(fimage2D) Coherent - Decorate 107(fimage2DArray) DescriptorSet 0 - Decorate 107(fimage2DArray) Binding 3 + Decorate 97(fimage2D) Binding 2 + Decorate 97(fimage2D) DescriptorSet 0 Decorate 107(fimage2DArray) Volatile Decorate 107(fimage2DArray) Coherent - Decorate 119(fimageCube) DescriptorSet 0 - Decorate 119(fimageCube) Binding 5 + Decorate 107(fimage2DArray) Binding 3 + Decorate 107(fimage2DArray) DescriptorSet 0 Decorate 119(fimageCube) Volatile Decorate 119(fimageCube) Coherent - Decorate 129(fimageCubeArray) DescriptorSet 0 - Decorate 129(fimageCubeArray) Binding 6 + Decorate 119(fimageCube) Binding 5 + Decorate 119(fimageCube) DescriptorSet 0 Decorate 129(fimageCubeArray) Volatile Decorate 129(fimageCubeArray) Coherent - Decorate 139(fimage3D) DescriptorSet 0 - Decorate 139(fimage3D) Binding 9 + Decorate 129(fimageCubeArray) Binding 6 + Decorate 129(fimageCubeArray) DescriptorSet 0 Decorate 139(fimage3D) Volatile Decorate 139(fimage3D) Coherent - Decorate 299(fimage1Dv4) DescriptorSet 0 - Decorate 299(fimage1Dv4) Binding 10 + Decorate 139(fimage3D) Binding 9 + Decorate 139(fimage3D) DescriptorSet 0 Decorate 299(fimage1Dv4) Volatile Decorate 299(fimage1Dv4) Coherent - Decorate 310(fimage1DArrayv4) DescriptorSet 0 - Decorate 310(fimage1DArrayv4) Binding 11 + Decorate 299(fimage1Dv4) Binding 10 + Decorate 299(fimage1Dv4) DescriptorSet 0 Decorate 310(fimage1DArrayv4) Volatile Decorate 310(fimage1DArrayv4) Coherent - Decorate 320(fimage2Dv4) DescriptorSet 0 - Decorate 320(fimage2Dv4) Binding 12 + Decorate 310(fimage1DArrayv4) Binding 11 + Decorate 310(fimage1DArrayv4) DescriptorSet 0 Decorate 320(fimage2Dv4) Volatile Decorate 320(fimage2Dv4) Coherent - Decorate 330(fimage2DArrayv4) DescriptorSet 0 - Decorate 330(fimage2DArrayv4) Binding 13 + Decorate 320(fimage2Dv4) Binding 12 + Decorate 320(fimage2Dv4) DescriptorSet 0 Decorate 330(fimage2DArrayv4) Volatile Decorate 330(fimage2DArrayv4) Coherent - Decorate 340(fimageCubev4) DescriptorSet 0 - Decorate 340(fimageCubev4) Binding 15 + Decorate 330(fimage2DArrayv4) Binding 13 + Decorate 330(fimage2DArrayv4) DescriptorSet 0 Decorate 340(fimageCubev4) Volatile Decorate 340(fimageCubev4) Coherent - Decorate 350(fimageCubeArrayv4) DescriptorSet 0 - Decorate 350(fimageCubeArrayv4) Binding 16 + Decorate 340(fimageCubev4) Binding 15 + Decorate 340(fimageCubev4) DescriptorSet 0 Decorate 350(fimageCubeArrayv4) Volatile Decorate 350(fimageCubeArrayv4) Coherent - Decorate 360(fimage3Dv4) DescriptorSet 0 - Decorate 360(fimage3Dv4) Binding 19 + Decorate 350(fimageCubeArrayv4) Binding 16 + Decorate 350(fimageCubeArrayv4) DescriptorSet 0 Decorate 360(fimage3Dv4) Volatile Decorate 360(fimage3Dv4) Coherent + Decorate 360(fimage3Dv4) Binding 19 + Decorate 360(fimage3Dv4) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 diff --git a/Test/baseResults/spv.offsets.frag.out b/Test/baseResults/spv.offsets.frag.out index d753f2f04c..b6f826ef76 100644 --- a/Test/baseResults/spv.offsets.frag.out +++ b/Test/baseResults/spv.offsets.frag.out @@ -22,20 +22,20 @@ spv.offsets.frag MemberName 12(n2) 2 "g" MemberName 12(n2) 3 "h" Name 14 "i2" + Decorate 7(n1) Block MemberDecorate 7(n1) 0 Offset 8 MemberDecorate 7(n1) 1 Offset 4 MemberDecorate 7(n1) 2 Offset 0 MemberDecorate 7(n1) 3 Offset 12 - Decorate 7(n1) Block - Decorate 9(i1) DescriptorSet 0 Decorate 9(i1) Binding 0 + Decorate 9(i1) DescriptorSet 0 + Decorate 12(n2) BufferBlock MemberDecorate 12(n2) 0 Offset 32 MemberDecorate 12(n2) 1 Offset 48 MemberDecorate 12(n2) 2 Offset 16 MemberDecorate 12(n2) 3 Offset 0 - Decorate 12(n2) BufferBlock - Decorate 14(i2) DescriptorSet 0 Decorate 14(i2) Binding 1 + Decorate 14(i2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.paramMemory.420.frag.out b/Test/baseResults/spv.paramMemory.420.frag.out index bc11df4fea..d533ec72c3 100644 --- a/Test/baseResults/spv.paramMemory.420.frag.out +++ b/Test/baseResults/spv.paramMemory.420.frag.out @@ -41,20 +41,20 @@ Validation failed Decorate 20(image) NonReadable Decorate 27(in_coords) Flat Decorate 27(in_coords) Location 0 - Decorate 36(image1) DescriptorSet 0 - Decorate 36(image1) Binding 0 Decorate 36(image1) Coherent Decorate 36(image1) NonWritable - Decorate 41(image2) DescriptorSet 0 - Decorate 41(image2) Binding 2 + Decorate 36(image1) Binding 0 + Decorate 36(image1) DescriptorSet 0 Decorate 41(image2) NonWritable - Decorate 47(image3) DescriptorSet 0 - Decorate 47(image3) Binding 1 + Decorate 41(image2) Binding 2 + Decorate 41(image2) DescriptorSet 0 Decorate 47(image3) Coherent Decorate 47(image3) NonReadable - Decorate 57(image4) DescriptorSet 0 - Decorate 57(image4) Binding 3 + Decorate 47(image3) Binding 1 + Decorate 47(image3) DescriptorSet 0 Decorate 57(image4) NonReadable + Decorate 57(image4) Binding 3 + Decorate 57(image4) DescriptorSet 0 Decorate 66(out_color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.paramMemory.frag.out b/Test/baseResults/spv.paramMemory.frag.out index ebb2ccbb47..ccca40245e 100644 --- a/Test/baseResults/spv.paramMemory.frag.out +++ b/Test/baseResults/spv.paramMemory.frag.out @@ -36,13 +36,13 @@ Validation failed Decorate 20(image) NonReadable Decorate 27(in_coords) Flat Decorate 27(in_coords) Location 0 - Decorate 43(image3) DescriptorSet 0 - Decorate 43(image3) Binding 1 Decorate 43(image3) Coherent Decorate 43(image3) NonReadable - Decorate 52(image4) DescriptorSet 0 - Decorate 52(image4) Binding 3 + Decorate 43(image3) Binding 1 + Decorate 43(image3) DescriptorSet 0 Decorate 52(image4) NonReadable + Decorate 52(image4) Binding 3 + Decorate 52(image4) DescriptorSet 0 Decorate 61(out_color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.perprimitiveNV.frag.out b/Test/baseResults/spv.perprimitiveNV.frag.out index 079a5f471e..b319ec05b0 100644 --- a/Test/baseResults/spv.perprimitiveNV.frag.out +++ b/Test/baseResults/spv.perprimitiveNV.frag.out @@ -21,12 +21,12 @@ spv.perprimitiveNV.frag MemberName 17(C) 0 "h" Name 19 "" Decorate 8(g) Location 8 - MemberDecorate 9(B) 0 PerPrimitiveNV Decorate 9(B) Block + MemberDecorate 9(B) 0 PerPrimitiveNV Decorate 11 Location 0 + Decorate 17(C) Block MemberDecorate 17(C) 0 Flat MemberDecorate 17(C) 0 Centroid - Decorate 17(C) Block Decorate 19 Location 4 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out index 7218254d27..af73d175a7 100644 --- a/Test/baseResults/spv.pp.line.frag.out +++ b/Test/baseResults/spv.pp.line.frag.out @@ -74,10 +74,10 @@ void main() Name 72 "gl_FragColor" Name 75 "u" Name 78 "blend" - Decorate 41(texSampler1D) DescriptorSet 0 Decorate 41(texSampler1D) Binding 0 - Decorate 56(texSampler2D) DescriptorSet 0 + Decorate 41(texSampler1D) DescriptorSet 0 Decorate 56(texSampler2D) Binding 1 + Decorate 56(texSampler2D) DescriptorSet 0 Decorate 60(coords2D) Location 2 Decorate 72(gl_FragColor) Location 0 Decorate 75(u) Location 1 diff --git a/Test/baseResults/spv.precise.tesc.out b/Test/baseResults/spv.precise.tesc.out index 84617caeae..93d1d982e7 100644 --- a/Test/baseResults/spv.precise.tesc.out +++ b/Test/baseResults/spv.precise.tesc.out @@ -22,10 +22,10 @@ spv.precise.tesc Decorate 12(in_te_position) Location 0 Decorate 15(gl_InvocationID) BuiltIn InvocationId Decorate 20(in_tc_position) Location 0 - Decorate 30(gl_TessLevelInner) Patch Decorate 30(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 40(gl_TessLevelOuter) Patch + Decorate 30(gl_TessLevelInner) Patch Decorate 40(gl_TessLevelOuter) BuiltIn TessLevelOuter + Decorate 40(gl_TessLevelOuter) Patch Decorate 45(in_tc_tessParam) Location 1 Decorate 52 NoContraction Decorate 53 NoContraction diff --git a/Test/baseResults/spv.precise.tese.out b/Test/baseResults/spv.precise.tese.out index 6fe183d218..d9b7141c17 100644 --- a/Test/baseResults/spv.precise.tese.out +++ b/Test/baseResults/spv.precise.tese.out @@ -41,9 +41,9 @@ spv.precise.tese Decorate 101 NoContraction Decorate 106 NoContraction Decorate 109 NoContraction + Decorate 110(gl_PerVertex) Block MemberDecorate 110(gl_PerVertex) 0 BuiltIn Position MemberDecorate 110(gl_PerVertex) 1 BuiltIn PointSize - Decorate 110(gl_PerVertex) Block 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.precision.frag.out b/Test/baseResults/spv.precision.frag.out index 8144dfbf11..0cdba71657 100644 --- a/Test/baseResults/spv.precision.frag.out +++ b/Test/baseResults/spv.precision.frag.out @@ -35,8 +35,8 @@ spv.precision.frag MemberName 117(S) 1 "b" Name 119 "s" Name 149 "gl_SampleMaskIn" - Decorate 12(foo(vf3;) RelaxedPrecision Decorate 11(mv3) RelaxedPrecision + Decorate 12(foo(vf3;) RelaxedPrecision Decorate 23(highfin) Location 2 Decorate 27 RelaxedPrecision Decorate 28 RelaxedPrecision @@ -99,8 +99,8 @@ spv.precision.frag Decorate 143 RelaxedPrecision Decorate 144 RelaxedPrecision Decorate 145 RelaxedPrecision - Decorate 149(gl_SampleMaskIn) Flat Decorate 149(gl_SampleMaskIn) BuiltIn SampleMask + Decorate 149(gl_SampleMaskIn) Flat Decorate 153 RelaxedPrecision Decorate 156 RelaxedPrecision Decorate 159 RelaxedPrecision diff --git a/Test/baseResults/spv.precisionArgs.frag.out b/Test/baseResults/spv.precisionArgs.frag.out index a35b1d3ce9..3cc72c36e6 100644 --- a/Test/baseResults/spv.precisionArgs.frag.out +++ b/Test/baseResults/spv.precisionArgs.frag.out @@ -40,8 +40,8 @@ spv.precisionArgs.frag Name 80 "param" Decorate 8(f) RelaxedPrecision Decorate 14(f) RelaxedPrecision - Decorate 20(retM(f1;) RelaxedPrecision Decorate 19(x) RelaxedPrecision + Decorate 20(retM(f1;) RelaxedPrecision Decorate 26(retHM(f1;) RelaxedPrecision Decorate 28(x) RelaxedPrecision Decorate 31 RelaxedPrecision diff --git a/Test/baseResults/spv.precisionNonESSamp.frag.out b/Test/baseResults/spv.precisionNonESSamp.frag.out index 40ca536b20..d082bee044 100644 --- a/Test/baseResults/spv.precisionNonESSamp.frag.out +++ b/Test/baseResults/spv.precisionNonESSamp.frag.out @@ -23,22 +23,22 @@ spv.precisionNonESSamp.frag Decorate 9(color) RelaxedPrecision Decorate 9(color) Location 0 Decorate 13(s) RelaxedPrecision - Decorate 13(s) DescriptorSet 0 Decorate 13(s) Binding 0 + Decorate 13(s) DescriptorSet 0 Decorate 14 RelaxedPrecision Decorate 17(v2) RelaxedPrecision Decorate 17(v2) Location 0 Decorate 18 RelaxedPrecision Decorate 19 RelaxedPrecision - Decorate 23(t) DescriptorSet 0 Decorate 23(t) Binding 1 + Decorate 23(t) DescriptorSet 0 Decorate 27(v3) RelaxedPrecision Decorate 27(v3) Location 1 Decorate 28 RelaxedPrecision Decorate 31(vi1) RelaxedPrecision Decorate 34(i1) RelaxedPrecision - Decorate 34(i1) DescriptorSet 0 Decorate 34(i1) Binding 2 + Decorate 34(i1) DescriptorSet 0 Decorate 35 RelaxedPrecision Decorate 39(iv2) RelaxedPrecision Decorate 39(iv2) Flat @@ -46,8 +46,8 @@ spv.precisionNonESSamp.frag Decorate 40 RelaxedPrecision Decorate 41 RelaxedPrecision Decorate 42(vi2) RelaxedPrecision - Decorate 43(i2) DescriptorSet 0 Decorate 43(i2) Binding 3 + Decorate 43(i2) DescriptorSet 0 Decorate 45 RelaxedPrecision 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.precisionTexture.frag.out b/Test/baseResults/spv.precisionTexture.frag.out index e46b2d79bb..19aa656444 100644 --- a/Test/baseResults/spv.precisionTexture.frag.out +++ b/Test/baseResults/spv.precisionTexture.frag.out @@ -20,28 +20,28 @@ spv.precisionTexture.frag Name 65 "fragColor" Decorate 9(v) RelaxedPrecision Decorate 13(texM) RelaxedPrecision - Decorate 13(texM) DescriptorSet 0 Decorate 13(texM) Binding 0 + Decorate 13(texM) DescriptorSet 0 Decorate 14 RelaxedPrecision Decorate 16(vertex) Location 0 Decorate 20 RelaxedPrecision - Decorate 21(texH) DescriptorSet 0 Decorate 21(texH) Binding 1 + Decorate 21(texH) DescriptorSet 0 Decorate 26 RelaxedPrecision Decorate 34 RelaxedPrecision Decorate 41 RelaxedPrecision Decorate 45 RelaxedPrecision Decorate 52(imageM) RelaxedPrecision - Decorate 52(imageM) DescriptorSet 0 - Decorate 52(imageM) Binding 0 Decorate 52(imageM) NonWritable + Decorate 52(imageM) Binding 0 + Decorate 52(imageM) DescriptorSet 0 Decorate 53 RelaxedPrecision Decorate 57(coord) Flat Decorate 57(coord) Location 1 Decorate 59 RelaxedPrecision - Decorate 60(imageH) DescriptorSet 0 - Decorate 60(imageH) Binding 1 Decorate 60(imageH) NonWritable + Decorate 60(imageH) Binding 1 + Decorate 60(imageH) DescriptorSet 0 Decorate 65(fragColor) RelaxedPrecision Decorate 65(fragColor) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.pushConstant.vert.out b/Test/baseResults/spv.pushConstant.vert.out index f6df47d578..cd8250028e 100644 --- a/Test/baseResults/spv.pushConstant.vert.out +++ b/Test/baseResults/spv.pushConstant.vert.out @@ -15,9 +15,9 @@ spv.pushConstant.vert Name 13 "matInst" Name 24 "color" Decorate 10 ArrayStride 4 + Decorate 11(Material) Block MemberDecorate 11(Material) 0 Offset 0 MemberDecorate 11(Material) 1 Offset 4 - Decorate 11(Material) Block Decorate 24(color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.pushConstantAnon.vert.out b/Test/baseResults/spv.pushConstantAnon.vert.out index ca7d345b32..eddb77a9a1 100644 --- a/Test/baseResults/spv.pushConstantAnon.vert.out +++ b/Test/baseResults/spv.pushConstantAnon.vert.out @@ -15,9 +15,9 @@ spv.pushConstantAnon.vert Name 13 "" Name 24 "color" Decorate 10 ArrayStride 4 + Decorate 11(Material) Block MemberDecorate 11(Material) 0 Offset 0 MemberDecorate 11(Material) 1 Offset 4 - Decorate 11(Material) Block Decorate 24(color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.queryL.frag.out b/Test/baseResults/spv.queryL.frag.out index 1e18387d14..1b3c63ecd5 100644 --- a/Test/baseResults/spv.queryL.frag.out +++ b/Test/baseResults/spv.queryL.frag.out @@ -41,46 +41,46 @@ Validation failed Name 182 "usampCubeA" Name 219 "sampBuf" Name 223 "sampRect" - Decorate 13(samp1D) DescriptorSet 0 Decorate 13(samp1D) Binding 0 - Decorate 23(isamp2D) DescriptorSet 0 + Decorate 13(samp1D) DescriptorSet 0 Decorate 23(isamp2D) Binding 1 - Decorate 34(usamp3D) DescriptorSet 0 + Decorate 23(isamp2D) DescriptorSet 0 Decorate 34(usamp3D) Binding 4 - Decorate 46(sampCube) DescriptorSet 0 + Decorate 34(usamp3D) DescriptorSet 0 Decorate 46(sampCube) Binding 5 - Decorate 55(isamp1DA) DescriptorSet 0 + Decorate 46(sampCube) DescriptorSet 0 Decorate 55(isamp1DA) Binding 7 - Decorate 64(usamp2DA) DescriptorSet 0 + Decorate 55(isamp1DA) DescriptorSet 0 Decorate 64(usamp2DA) Binding 9 - Decorate 73(isampCubeA) DescriptorSet 0 + Decorate 64(usamp2DA) DescriptorSet 0 Decorate 73(isampCubeA) Binding 10 - Decorate 82(samp1Ds) DescriptorSet 0 + Decorate 73(isampCubeA) DescriptorSet 0 Decorate 82(samp1Ds) Binding 12 - Decorate 91(samp2Ds) DescriptorSet 0 + Decorate 82(samp1Ds) DescriptorSet 0 Decorate 91(samp2Ds) Binding 13 - Decorate 100(sampCubes) DescriptorSet 0 + Decorate 91(samp2Ds) DescriptorSet 0 Decorate 100(sampCubes) Binding 14 - Decorate 109(samp1DAs) DescriptorSet 0 + Decorate 100(sampCubes) DescriptorSet 0 Decorate 109(samp1DAs) Binding 15 - Decorate 118(samp2DAs) DescriptorSet 0 + Decorate 109(samp1DAs) DescriptorSet 0 Decorate 118(samp2DAs) Binding 16 - Decorate 127(sampCubeAs) DescriptorSet 0 + Decorate 118(samp2DAs) DescriptorSet 0 Decorate 127(sampCubeAs) Binding 17 - Decorate 141(usamp2D) DescriptorSet 0 + Decorate 127(sampCubeAs) DescriptorSet 0 Decorate 141(usamp2D) Binding 2 - Decorate 150(isamp3D) DescriptorSet 0 + Decorate 141(usamp2D) DescriptorSet 0 Decorate 150(isamp3D) Binding 3 - Decorate 159(isampCube) DescriptorSet 0 + Decorate 150(isamp3D) DescriptorSet 0 Decorate 159(isampCube) Binding 6 - Decorate 173(samp2DA) DescriptorSet 0 + Decorate 159(isampCube) DescriptorSet 0 Decorate 173(samp2DA) Binding 8 - Decorate 182(usampCubeA) DescriptorSet 0 + Decorate 173(samp2DA) DescriptorSet 0 Decorate 182(usampCubeA) Binding 11 - Decorate 219(sampBuf) DescriptorSet 0 + Decorate 182(usampCubeA) DescriptorSet 0 Decorate 219(sampBuf) Binding 0 - Decorate 223(sampRect) DescriptorSet 0 + Decorate 219(sampBuf) DescriptorSet 0 Decorate 223(sampRect) Binding 0 + Decorate 223(sampRect) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.queueFamilyScope.comp.out b/Test/baseResults/spv.queueFamilyScope.comp.out index 49a59a383e..565269c45c 100644 --- a/Test/baseResults/spv.queueFamilyScope.comp.out +++ b/Test/baseResults/spv.queueFamilyScope.comp.out @@ -16,10 +16,10 @@ spv.queueFamilyScope.comp Name 7 "Buffer" MemberName 7(Buffer) 0 "a" Name 9 "A" - MemberDecorate 7(Buffer) 0 Offset 0 Decorate 7(Buffer) Block - Decorate 9(A) DescriptorSet 0 + MemberDecorate 7(Buffer) 0 Offset 0 Decorate 9(A) Binding 0 + Decorate 9(A) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.rankShift.comp.out b/Test/baseResults/spv.rankShift.comp.out index cecde79580..a091ec1bdc 100644 --- a/Test/baseResults/spv.rankShift.comp.out +++ b/Test/baseResults/spv.rankShift.comp.out @@ -16,11 +16,11 @@ spv.rankShift.comp Name 11 "arg0" Name 15 "arg1" Decorate 11(arg0) Location 4 - Decorate 11(arg0) DescriptorSet 0 Decorate 11(arg0) Binding 0 + Decorate 11(arg0) DescriptorSet 0 Decorate 15(arg1) Location 5 - Decorate 15(arg1) DescriptorSet 0 Decorate 15(arg1) Binding 1 + Decorate 15(arg1) DescriptorSet 0 Decorate 32 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.register.autoassign-2.frag.out b/Test/baseResults/spv.register.autoassign-2.frag.out index 61d920c256..a921f10dd8 100644 --- a/Test/baseResults/spv.register.autoassign-2.frag.out +++ b/Test/baseResults/spv.register.autoassign-2.frag.out @@ -20,12 +20,12 @@ spv.register.autoassign-2.frag Name 39 "psout" Name 40 "param" Name 44 "psout.Color" - Decorate 18(g_tScene[0]) DescriptorSet 0 Decorate 18(g_tScene[0]) Binding 10 - Decorate 22(g_tSamp) DescriptorSet 0 + Decorate 18(g_tScene[0]) DescriptorSet 0 Decorate 22(g_tSamp) Binding 5 - Decorate 31(g_tScene[1]) DescriptorSet 0 + Decorate 22(g_tSamp) DescriptorSet 0 Decorate 31(g_tScene[1]) Binding 11 + Decorate 31(g_tScene[1]) DescriptorSet 0 Decorate 44(psout.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.register.autoassign.frag.out b/Test/baseResults/spv.register.autoassign.frag.out index b4db04e650..be86a861ea 100644 --- a/Test/baseResults/spv.register.autoassign.frag.out +++ b/Test/baseResults/spv.register.autoassign.frag.out @@ -44,47 +44,47 @@ spv.register.autoassign.frag Name 141 "psout" Name 151 "@entryPointOutput.Color" Name 154 "g_tTex_unused3" - Decorate 21(g_tTex1) DescriptorSet 0 Decorate 21(g_tTex1) Binding 11 - Decorate 25(g_sSamp1) DescriptorSet 0 + Decorate 21(g_tTex1) DescriptorSet 0 Decorate 25(g_sSamp1) Binding 5 - Decorate 31(g_tTex2) DescriptorSet 0 + Decorate 25(g_sSamp1) DescriptorSet 0 Decorate 31(g_tTex2) Binding 14 - Decorate 33(g_sSamp2) DescriptorSet 0 + Decorate 31(g_tTex2) DescriptorSet 0 Decorate 33(g_sSamp2) Binding 6 - Decorate 43(g_tTex3) DescriptorSet 0 + Decorate 33(g_sSamp2) DescriptorSet 0 Decorate 43(g_tTex3) Binding 13 - Decorate 50(g_sSamp3) DescriptorSet 0 + Decorate 43(g_tTex3) DescriptorSet 0 Decorate 50(g_sSamp3) Binding 7 - Decorate 68(g_tTex4) DescriptorSet 0 + Decorate 50(g_sSamp3) DescriptorSet 0 Decorate 68(g_tTex4) Binding 15 - Decorate 73(g_sSamp4) DescriptorSet 0 + Decorate 68(g_tTex4) DescriptorSet 0 Decorate 73(g_sSamp4) Binding 8 - Decorate 88(g_tTex5) DescriptorSet 0 + Decorate 73(g_sSamp4) DescriptorSet 0 Decorate 88(g_tTex5) Binding 16 - Decorate 90(g_sSamp5) DescriptorSet 0 + Decorate 88(g_tTex5) DescriptorSet 0 Decorate 90(g_sSamp5) Binding 9 + Decorate 90(g_sSamp5) DescriptorSet 0 MemberDecorate 97(MyStruct_t) 0 Offset 0 MemberDecorate 97(MyStruct_t) 1 Offset 4 MemberDecorate 97(MyStruct_t) 2 Offset 16 + Decorate 99($Global) Block MemberDecorate 99($Global) 0 Offset 0 MemberDecorate 99($Global) 1 Offset 32 MemberDecorate 99($Global) 2 Offset 48 MemberDecorate 99($Global) 3 Offset 64 - Decorate 99($Global) Block - Decorate 101 DescriptorSet 0 Decorate 101 Binding 20 - Decorate 123(g_tTex_unused1) DescriptorSet 0 + Decorate 101 DescriptorSet 0 Decorate 123(g_tTex_unused1) Binding 10 - Decorate 125(g_sSamp_unused1) DescriptorSet 0 + Decorate 123(g_tTex_unused1) DescriptorSet 0 Decorate 125(g_sSamp_unused1) Binding 0 - Decorate 130(g_tTex_unused2) DescriptorSet 0 + Decorate 125(g_sSamp_unused1) DescriptorSet 0 Decorate 130(g_tTex_unused2) Binding 12 - Decorate 132(g_sSamp_unused2) DescriptorSet 0 + Decorate 130(g_tTex_unused2) DescriptorSet 0 Decorate 132(g_sSamp_unused2) Binding 0 + Decorate 132(g_sSamp_unused2) DescriptorSet 0 Decorate 151(@entryPointOutput.Color) Location 0 - Decorate 154(g_tTex_unused3) DescriptorSet 0 Decorate 154(g_tTex_unused3) Binding 0 + Decorate 154(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.register.autoassign.rangetest.frag.out b/Test/baseResults/spv.register.autoassign.rangetest.frag.out index 84a439a7ab..b8e257378a 100644 --- a/Test/baseResults/spv.register.autoassign.rangetest.frag.out +++ b/Test/baseResults/spv.register.autoassign.rangetest.frag.out @@ -22,10 +22,10 @@ INTERNAL ERROR: mapped binding out of range: g_tScene Name 44 "psout" Name 45 "param" Name 49 "psout.Color" - Decorate 21(g_tScene) DescriptorSet 0 Decorate 21(g_tScene) Binding 5 - Decorate 27(g_tSamp) DescriptorSet 0 + Decorate 21(g_tScene) DescriptorSet 0 Decorate 27(g_tSamp) Binding 5 + Decorate 27(g_tSamp) DescriptorSet 0 Decorate 49(psout.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.register.noautoassign.frag.out b/Test/baseResults/spv.register.noautoassign.frag.out index 8c8cd3ccc7..8b2c29cb34 100644 --- a/Test/baseResults/spv.register.noautoassign.frag.out +++ b/Test/baseResults/spv.register.noautoassign.frag.out @@ -44,47 +44,47 @@ spv.register.noautoassign.frag Name 141 "psout" Name 151 "@entryPointOutput.Color" Name 154 "g_tTex_unused3" - Decorate 21(g_tTex1) DescriptorSet 0 Decorate 21(g_tTex1) Binding 11 - Decorate 25(g_sSamp1) DescriptorSet 0 + Decorate 21(g_tTex1) DescriptorSet 0 Decorate 25(g_sSamp1) Binding 5 - Decorate 31(g_tTex2) DescriptorSet 0 + Decorate 25(g_sSamp1) DescriptorSet 0 Decorate 31(g_tTex2) Binding 0 - Decorate 33(g_sSamp2) DescriptorSet 0 + Decorate 31(g_tTex2) DescriptorSet 0 Decorate 33(g_sSamp2) Binding 0 - Decorate 43(g_tTex3) DescriptorSet 0 + Decorate 33(g_sSamp2) DescriptorSet 0 Decorate 43(g_tTex3) Binding 13 - Decorate 50(g_sSamp3) DescriptorSet 0 + Decorate 43(g_tTex3) DescriptorSet 0 Decorate 50(g_sSamp3) Binding 7 - Decorate 68(g_tTex4) DescriptorSet 0 + Decorate 50(g_sSamp3) DescriptorSet 0 Decorate 68(g_tTex4) Binding 0 - Decorate 73(g_sSamp4) DescriptorSet 0 + Decorate 68(g_tTex4) DescriptorSet 0 Decorate 73(g_sSamp4) Binding 0 - Decorate 88(g_tTex5) DescriptorSet 0 + Decorate 73(g_sSamp4) DescriptorSet 0 Decorate 88(g_tTex5) Binding 0 - Decorate 90(g_sSamp5) DescriptorSet 0 + Decorate 88(g_tTex5) DescriptorSet 0 Decorate 90(g_sSamp5) Binding 0 + Decorate 90(g_sSamp5) DescriptorSet 0 MemberDecorate 97(MyStruct_t) 0 Offset 0 MemberDecorate 97(MyStruct_t) 1 Offset 4 MemberDecorate 97(MyStruct_t) 2 Offset 16 + Decorate 99($Global) Block MemberDecorate 99($Global) 0 Offset 0 MemberDecorate 99($Global) 1 Offset 32 MemberDecorate 99($Global) 2 Offset 48 MemberDecorate 99($Global) 3 Offset 64 - Decorate 99($Global) Block - Decorate 101 DescriptorSet 0 Decorate 101 Binding 0 - Decorate 123(g_tTex_unused1) DescriptorSet 0 + Decorate 101 DescriptorSet 0 Decorate 123(g_tTex_unused1) Binding 10 - Decorate 125(g_sSamp_unused1) DescriptorSet 0 + Decorate 123(g_tTex_unused1) DescriptorSet 0 Decorate 125(g_sSamp_unused1) Binding 0 - Decorate 130(g_tTex_unused2) DescriptorSet 0 + Decorate 125(g_sSamp_unused1) DescriptorSet 0 Decorate 130(g_tTex_unused2) Binding 12 - Decorate 132(g_sSamp_unused2) DescriptorSet 0 + Decorate 130(g_tTex_unused2) DescriptorSet 0 Decorate 132(g_sSamp_unused2) Binding 0 + Decorate 132(g_sSamp_unused2) DescriptorSet 0 Decorate 151(@entryPointOutput.Color) Location 0 - Decorate 154(g_tTex_unused3) DescriptorSet 0 Decorate 154(g_tTex_unused3) Binding 0 + Decorate 154(g_tTex_unused3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.register.subpass.frag.out b/Test/baseResults/spv.register.subpass.frag.out index 7c69c91818..c20f59621f 100644 --- a/Test/baseResults/spv.register.subpass.frag.out +++ b/Test/baseResults/spv.register.subpass.frag.out @@ -19,14 +19,14 @@ spv.register.subpass.frag Name 29 "result73" Name 30 "subpass_2" Name 38 "@entryPointOutput" - Decorate 15(subpass_f4) DescriptorSet 0 Decorate 15(subpass_f4) Binding 21 + Decorate 15(subpass_f4) DescriptorSet 0 Decorate 15(subpass_f4) InputAttachmentIndex 1 - Decorate 25(subpass_ms_f4) DescriptorSet 0 Decorate 25(subpass_ms_f4) Binding 20 + Decorate 25(subpass_ms_f4) DescriptorSet 0 Decorate 25(subpass_ms_f4) InputAttachmentIndex 4 - Decorate 30(subpass_2) DescriptorSet 0 Decorate 30(subpass_2) Binding 22 + Decorate 30(subpass_2) DescriptorSet 0 Decorate 30(subpass_2) InputAttachmentIndex 7 Decorate 38(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.rw.autoassign.frag.out b/Test/baseResults/spv.rw.autoassign.frag.out index 0c46493c15..3dd60882d4 100644 --- a/Test/baseResults/spv.rw.autoassign.frag.out +++ b/Test/baseResults/spv.rw.autoassign.frag.out @@ -21,10 +21,10 @@ spv.rw.autoassign.frag Name 27 "g_tBuf1du1" Name 33 "psout" Name 42 "@entryPointOutput.Color" - Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 16(g_tTex1df1) Binding 20 - Decorate 27(g_tBuf1du1) DescriptorSet 0 + Decorate 16(g_tTex1df1) DescriptorSet 0 Decorate 27(g_tBuf1du1) Binding 21 + Decorate 27(g_tBuf1du1) DescriptorSet 0 Decorate 42(@entryPointOutput.Color) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.sampleId.frag.out b/Test/baseResults/spv.sampleId.frag.out index 7f3232d122..c4dda4a32d 100644 --- a/Test/baseResults/spv.sampleId.frag.out +++ b/Test/baseResults/spv.sampleId.frag.out @@ -14,8 +14,8 @@ spv.sampleId.frag Name 8 "gl_SampleID" Name 18 "color" Name 20 "samp" - Decorate 8(gl_SampleID) Flat Decorate 8(gl_SampleID) BuiltIn SampleId + Decorate 8(gl_SampleID) Flat Decorate 18(color) Location 0 Decorate 20(samp) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.sampledImageBlock.frag.out b/Test/baseResults/spv.sampledImageBlock.frag.out index ba46a0feec..a6625f7f0a 100644 --- a/Test/baseResults/spv.sampledImageBlock.frag.out +++ b/Test/baseResults/spv.sampledImageBlock.frag.out @@ -18,14 +18,14 @@ spv.sampledImageBlock.frag Name 23 "paramBuffer" Name 36 "texCoord" Name 45 "fragColor" - Decorate 12(tex0) DescriptorSet 0 Decorate 12(tex0) Binding 0 - Decorate 16(samp0) DescriptorSet 0 + Decorate 12(tex0) DescriptorSet 0 Decorate 16(samp0) Binding 1 - MemberDecorate 21(ParamBuffer) 0 Offset 0 + Decorate 16(samp0) DescriptorSet 0 Decorate 21(ParamBuffer) Block - Decorate 23(paramBuffer) DescriptorSet 0 + MemberDecorate 21(ParamBuffer) 0 Offset 0 Decorate 23(paramBuffer) Binding 2 + Decorate 23(paramBuffer) DescriptorSet 0 Decorate 36(texCoord) Flat Decorate 36(texCoord) Location 0 Decorate 45(fragColor) Location 0 diff --git a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out index 447991225e..ef7b436264 100644 --- a/Test/baseResults/spv.samplerlessTextureFunctions.frag.out +++ b/Test/baseResults/spv.samplerlessTextureFunctions.frag.out @@ -25,12 +25,12 @@ spv.samplerlessTextureFunctions.frag Name 42 "bufSize" Name 45 "tex2DLevels" Name 48 "texMSSamples" - Decorate 12(tex2D) DescriptorSet 0 Decorate 12(tex2D) Binding 1 - Decorate 22(texMS) DescriptorSet 0 + Decorate 12(tex2D) DescriptorSet 0 Decorate 22(texMS) Binding 1 - Decorate 28(buf) DescriptorSet 0 + Decorate 22(texMS) DescriptorSet 0 Decorate 28(buf) Binding 0 + Decorate 28(buf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.scalarlayout.frag.out b/Test/baseResults/spv.scalarlayout.frag.out index 977f06b7bb..a99709d398 100644 --- a/Test/baseResults/spv.scalarlayout.frag.out +++ b/Test/baseResults/spv.scalarlayout.frag.out @@ -39,22 +39,22 @@ spv.scalarlayout.frag MemberDecorate 15(S) 4 Offset 28 MemberDecorate 15(S) 5 Offset 40 Decorate 16 ArrayStride 48 + Decorate 17(B1) Block MemberDecorate 17(B1) 0 Offset 0 MemberDecorate 17(B1) 1 Offset 4 MemberDecorate 17(B1) 2 Offset 12 MemberDecorate 17(B1) 3 Offset 24 MemberDecorate 17(B1) 4 ColMajor - MemberDecorate 17(B1) 4 Offset 32 MemberDecorate 17(B1) 4 MatrixStride 12 + MemberDecorate 17(B1) 4 Offset 32 MemberDecorate 17(B1) 5 ColMajor - MemberDecorate 17(B1) 5 Offset 56 MemberDecorate 17(B1) 5 MatrixStride 12 + MemberDecorate 17(B1) 5 Offset 56 MemberDecorate 17(B1) 6 Offset 104 MemberDecorate 17(B1) 7 Offset 112 MemberDecorate 17(B1) 8 Offset 160 - Decorate 17(B1) Block - Decorate 19 DescriptorSet 0 Decorate 19 Binding 0 + Decorate 19 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.scalarlayoutfloat16.frag.out b/Test/baseResults/spv.scalarlayoutfloat16.frag.out index 93c0d2a134..880786f306 100644 --- a/Test/baseResults/spv.scalarlayoutfloat16.frag.out +++ b/Test/baseResults/spv.scalarlayoutfloat16.frag.out @@ -39,6 +39,7 @@ spv.scalarlayoutfloat16.frag MemberDecorate 13(S) 4 Offset 18 MemberDecorate 13(S) 5 Offset 24 Decorate 14 ArrayStride 32 + Decorate 15(B1) Block MemberDecorate 15(B1) 0 Offset 0 MemberDecorate 15(B1) 1 Offset 2 MemberDecorate 15(B1) 2 Offset 6 @@ -46,9 +47,8 @@ spv.scalarlayoutfloat16.frag MemberDecorate 15(B1) 4 Offset 16 MemberDecorate 15(B1) 5 Offset 24 MemberDecorate 15(B1) 6 Offset 56 - Decorate 15(B1) Block - Decorate 17 DescriptorSet 0 Decorate 17 Binding 0 + Decorate 17 DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 16 diff --git a/Test/baseResults/spv.separate.frag.out b/Test/baseResults/spv.separate.frag.out index b960934c37..00d3282a35 100644 --- a/Test/baseResults/spv.separate.frag.out +++ b/Test/baseResults/spv.separate.frag.out @@ -57,84 +57,84 @@ Validation failed Name 293 "tex3D" Name 304 "tex2DRect" Decorate 11(color) Location 0 - Decorate 14(t2d) DescriptorSet 0 Decorate 14(t2d) Binding 2 - Decorate 18(s) DescriptorSet 0 + Decorate 14(t2d) DescriptorSet 0 Decorate 18(s) Binding 0 - Decorate 31(t3d) DescriptorSet 0 + Decorate 18(s) DescriptorSet 0 Decorate 31(t3d) Binding 3 + Decorate 31(t3d) DescriptorSet 0 Decorate 34(i) Flat Decorate 34(i) Location 0 - Decorate 41(sA) DescriptorSet 0 Decorate 41(sA) Binding 1 - Decorate 58(tex2D) DescriptorSet 0 + Decorate 41(sA) DescriptorSet 0 Decorate 58(tex2D) Binding 0 - Decorate 64(texCube) DescriptorSet 0 + Decorate 58(tex2D) DescriptorSet 0 Decorate 64(texCube) Binding 0 - Decorate 71(texCubeArray) DescriptorSet 0 + Decorate 64(texCube) DescriptorSet 0 Decorate 71(texCubeArray) Binding 0 - Decorate 77(sShadow) DescriptorSet 0 + Decorate 71(texCubeArray) DescriptorSet 0 Decorate 77(sShadow) Binding 0 - Decorate 84(itexCubeArray) DescriptorSet 0 + Decorate 77(sShadow) DescriptorSet 0 Decorate 84(itexCubeArray) Binding 0 - Decorate 91(utexCubeArray) DescriptorSet 0 + Decorate 84(itexCubeArray) DescriptorSet 0 Decorate 91(utexCubeArray) Binding 0 - Decorate 98(tex1DArray) DescriptorSet 0 + Decorate 91(utexCubeArray) DescriptorSet 0 Decorate 98(tex1DArray) Binding 0 - Decorate 105(itex1DArray) DescriptorSet 0 + Decorate 98(tex1DArray) DescriptorSet 0 Decorate 105(itex1DArray) Binding 0 - Decorate 112(utex1D) DescriptorSet 0 + Decorate 105(itex1DArray) DescriptorSet 0 Decorate 112(utex1D) Binding 0 - Decorate 119(itex1D) DescriptorSet 0 + Decorate 112(utex1D) DescriptorSet 0 Decorate 119(itex1D) Binding 0 - Decorate 126(utex1DArray) DescriptorSet 0 + Decorate 119(itex1D) DescriptorSet 0 Decorate 126(utex1DArray) Binding 0 - Decorate 133(texBuffer) DescriptorSet 0 + Decorate 126(utex1DArray) DescriptorSet 0 Decorate 133(texBuffer) Binding 0 - Decorate 145(tex2DArray) DescriptorSet 0 + Decorate 133(texBuffer) DescriptorSet 0 Decorate 145(tex2DArray) Binding 0 - Decorate 157(itex2D) DescriptorSet 0 + Decorate 145(tex2DArray) DescriptorSet 0 Decorate 157(itex2D) Binding 0 - Decorate 164(itex3D) DescriptorSet 0 + Decorate 157(itex2D) DescriptorSet 0 Decorate 164(itex3D) Binding 0 - Decorate 171(itexCube) DescriptorSet 0 + Decorate 164(itex3D) DescriptorSet 0 Decorate 171(itexCube) Binding 0 - Decorate 178(itex2DArray) DescriptorSet 0 + Decorate 171(itexCube) DescriptorSet 0 Decorate 178(itex2DArray) Binding 0 - Decorate 185(utex2D) DescriptorSet 0 + Decorate 178(itex2DArray) DescriptorSet 0 Decorate 185(utex2D) Binding 0 - Decorate 192(utex3D) DescriptorSet 0 + Decorate 185(utex2D) DescriptorSet 0 Decorate 192(utex3D) Binding 0 - Decorate 199(utexCube) DescriptorSet 0 + Decorate 192(utex3D) DescriptorSet 0 Decorate 199(utexCube) Binding 0 - Decorate 206(utex2DArray) DescriptorSet 0 + Decorate 199(utexCube) DescriptorSet 0 Decorate 206(utex2DArray) Binding 0 - Decorate 213(itex2DRect) DescriptorSet 0 + Decorate 206(utex2DArray) DescriptorSet 0 Decorate 213(itex2DRect) Binding 0 - Decorate 220(utex2DRect) DescriptorSet 0 + Decorate 213(itex2DRect) DescriptorSet 0 Decorate 220(utex2DRect) Binding 0 - Decorate 227(itexBuffer) DescriptorSet 0 + Decorate 220(utex2DRect) DescriptorSet 0 Decorate 227(itexBuffer) Binding 0 - Decorate 234(utexBuffer) DescriptorSet 0 + Decorate 227(itexBuffer) DescriptorSet 0 Decorate 234(utexBuffer) Binding 0 - Decorate 241(tex2DMS) DescriptorSet 0 + Decorate 234(utexBuffer) DescriptorSet 0 Decorate 241(tex2DMS) Binding 0 - Decorate 248(itex2DMS) DescriptorSet 0 + Decorate 241(tex2DMS) DescriptorSet 0 Decorate 248(itex2DMS) Binding 0 - Decorate 255(utex2DMS) DescriptorSet 0 + Decorate 248(itex2DMS) DescriptorSet 0 Decorate 255(utex2DMS) Binding 0 - Decorate 262(tex2DMSArray) DescriptorSet 0 + Decorate 255(utex2DMS) DescriptorSet 0 Decorate 262(tex2DMSArray) Binding 0 - Decorate 269(itex2DMSArray) DescriptorSet 0 + Decorate 262(tex2DMSArray) DescriptorSet 0 Decorate 269(itex2DMSArray) Binding 0 - Decorate 276(utex2DMSArray) DescriptorSet 0 + Decorate 269(itex2DMSArray) DescriptorSet 0 Decorate 276(utex2DMSArray) Binding 0 - Decorate 283(tex1D) DescriptorSet 0 + Decorate 276(utex2DMSArray) DescriptorSet 0 Decorate 283(tex1D) Binding 0 - Decorate 293(tex3D) DescriptorSet 0 + Decorate 283(tex1D) DescriptorSet 0 Decorate 293(tex3D) Binding 0 - Decorate 304(tex2DRect) DescriptorSet 0 + Decorate 293(tex3D) DescriptorSet 0 Decorate 304(tex2DRect) Binding 0 + Decorate 304(tex2DRect) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 8: TypeFloat 32 diff --git a/Test/baseResults/spv.set.vert.out b/Test/baseResults/spv.set.vert.out index b311c707aa..95c7cbdbf8 100644 --- a/Test/baseResults/spv.set.vert.out +++ b/Test/baseResults/spv.set.vert.out @@ -15,12 +15,12 @@ spv.set.vert Name 12 "setBufInst" Name 21 "samp2D" Decorate 9(color) Location 0 - MemberDecorate 10(setBuf) 0 Offset 0 Decorate 10(setBuf) BufferBlock - Decorate 12(setBufInst) DescriptorSet 0 + MemberDecorate 10(setBuf) 0 Offset 0 Decorate 12(setBufInst) Binding 8 - Decorate 21(samp2D) DescriptorSet 4 + Decorate 12(setBufInst) DescriptorSet 0 Decorate 21(samp2D) Binding 7 + Decorate 21(samp2D) DescriptorSet 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.shaderBallot.comp.out b/Test/baseResults/spv.shaderBallot.comp.out index 143b2e931f..da363e9c61 100644 --- a/Test/baseResults/spv.shaderBallot.comp.out +++ b/Test/baseResults/spv.shaderBallot.comp.out @@ -36,12 +36,12 @@ spv.shaderBallot.comp Decorate 36(gl_SubGroupGtMaskARB) BuiltIn SubgroupGtMaskKHR Decorate 43(gl_SubGroupLeMaskARB) BuiltIn SubgroupLeMaskKHR Decorate 50(gl_SubGroupLtMaskARB) BuiltIn SubgroupLtMaskKHR + Decorate 72(Buffers) BufferBlock MemberDecorate 72(Buffers) 0 Offset 0 MemberDecorate 72(Buffers) 1 Offset 16 MemberDecorate 72(Buffers) 2 Offset 32 - Decorate 72(Buffers) BufferBlock - Decorate 75(data) DescriptorSet 0 Decorate 75(data) Binding 0 + Decorate 75(data) DescriptorSet 0 Decorate 396 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.shaderBallotAMD.comp.out b/Test/baseResults/spv.shaderBallotAMD.comp.out index 2d8ad553ab..a52f5b919b 100644 --- a/Test/baseResults/spv.shaderBallotAMD.comp.out +++ b/Test/baseResults/spv.shaderBallotAMD.comp.out @@ -33,6 +33,7 @@ spv.shaderBallotAMD.comp MemberName 21(Buffers) 7 "i16v" MemberName 21(Buffers) 8 "u16" Name 23 "" + Decorate 21(Buffers) BufferBlock MemberDecorate 21(Buffers) 0 Offset 0 MemberDecorate 21(Buffers) 1 Offset 8 MemberDecorate 21(Buffers) 2 Offset 16 @@ -42,9 +43,8 @@ spv.shaderBallotAMD.comp MemberDecorate 21(Buffers) 6 Offset 96 MemberDecorate 21(Buffers) 7 Offset 104 MemberDecorate 21(Buffers) 8 Offset 112 - Decorate 21(Buffers) BufferBlock - Decorate 23 DescriptorSet 0 Decorate 23 Binding 0 + Decorate 23 DescriptorSet 0 Decorate 1342 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.shaderDrawParams.vert.out b/Test/baseResults/spv.shaderDrawParams.vert.out index a84c2fea01..58b26cb4b7 100644 --- a/Test/baseResults/spv.shaderDrawParams.vert.out +++ b/Test/baseResults/spv.shaderDrawParams.vert.out @@ -26,17 +26,17 @@ spv.shaderDrawParams.vert Name 37 "gl_DrawIDARB" Decorate 9(gl_BaseVertexARB) BuiltIn BaseVertex Decorate 16(gl_BaseInstanceARB) BuiltIn BaseInstance + Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 27(gl_PerVertex) Block Decorate 31 ArrayStride 16 Decorate 33 ArrayStride 64 - MemberDecorate 34(Block) 0 Offset 0 Decorate 34(Block) Block - Decorate 36(block) DescriptorSet 0 + MemberDecorate 34(Block) 0 Offset 0 Decorate 36(block) Binding 0 + Decorate 36(block) DescriptorSet 0 Decorate 37(gl_DrawIDARB) BuiltIn DrawIndex 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.shaderFragMaskAMD.frag.out b/Test/baseResults/spv.shaderFragMaskAMD.frag.out index 3b461142be..17f98d4585 100644 --- a/Test/baseResults/spv.shaderFragMaskAMD.frag.out +++ b/Test/baseResults/spv.shaderFragMaskAMD.frag.out @@ -21,12 +21,12 @@ spv.shaderFragMaskAMD.frag Name 42 "is2DMSArray" Name 62 "usubpassMS" Name 78 "fragColor" - Decorate 18(s2DMS) DescriptorSet 0 Decorate 18(s2DMS) Binding 0 - Decorate 42(is2DMSArray) DescriptorSet 0 + Decorate 18(s2DMS) DescriptorSet 0 Decorate 42(is2DMSArray) Binding 1 - Decorate 62(usubpassMS) DescriptorSet 0 + Decorate 42(is2DMSArray) DescriptorSet 0 Decorate 62(usubpassMS) Binding 2 + Decorate 62(usubpassMS) DescriptorSet 0 Decorate 62(usubpassMS) InputAttachmentIndex 0 Decorate 78(fragColor) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.shaderGroupVote.comp.out b/Test/baseResults/spv.shaderGroupVote.comp.out index 0724170123..0a8c5a24ca 100644 --- a/Test/baseResults/spv.shaderGroupVote.comp.out +++ b/Test/baseResults/spv.shaderGroupVote.comp.out @@ -17,10 +17,10 @@ spv.shaderGroupVote.comp Name 10 "Buffers" MemberName 10(Buffers) 0 "b" Name 12 "" - MemberDecorate 10(Buffers) 0 Offset 0 Decorate 10(Buffers) BufferBlock - Decorate 12 DescriptorSet 0 + MemberDecorate 10(Buffers) 0 Offset 0 Decorate 12 Binding 0 + Decorate 12 DescriptorSet 0 Decorate 32 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.shaderImageFootprint.frag.out b/Test/baseResults/spv.shaderImageFootprint.frag.out index 743fd36593..0f87bcbb67 100644 --- a/Test/baseResults/spv.shaderImageFootprint.frag.out +++ b/Test/baseResults/spv.shaderImageFootprint.frag.out @@ -66,17 +66,17 @@ spv.shaderImageFootprint.frag Name 478 "ResType" Name 528 "ResType" Name 577 "ResType" + Decorate 8(result2D) BufferBlock MemberDecorate 8(result2D) 0 Offset 0 MemberDecorate 8(result2D) 1 Offset 8 MemberDecorate 8(result2D) 2 Offset 16 MemberDecorate 8(result2D) 3 Offset 24 MemberDecorate 8(result2D) 4 Offset 32 MemberDecorate 8(result2D) 5 Offset 36 - Decorate 8(result2D) BufferBlock - Decorate 10 DescriptorSet 0 Decorate 10 Binding 2 - Decorate 17(sample2D) DescriptorSet 0 + Decorate 10 DescriptorSet 0 Decorate 17(sample2D) Binding 0 + Decorate 17(sample2D) DescriptorSet 0 Decorate 21(P2) Location 0 Decorate 24(granularity) Flat Decorate 24(granularity) Location 3 @@ -85,17 +85,17 @@ spv.shaderImageFootprint.frag Decorate 225(lod) Location 5 Decorate 275(dx) Location 6 Decorate 277(dy) Location 8 + Decorate 377(result3D) BufferBlock MemberDecorate 377(result3D) 0 Offset 0 MemberDecorate 377(result3D) 1 Offset 16 MemberDecorate 377(result3D) 2 Offset 32 MemberDecorate 377(result3D) 3 Offset 48 MemberDecorate 377(result3D) 4 Offset 56 MemberDecorate 377(result3D) 5 Offset 60 - Decorate 377(result3D) BufferBlock - Decorate 379 DescriptorSet 0 Decorate 379 Binding 3 - Decorate 383(sample3D) DescriptorSet 0 + Decorate 379 DescriptorSet 0 Decorate 383(sample3D) Binding 1 + Decorate 383(sample3D) DescriptorSet 0 Decorate 387(P3) Location 2 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.shadingRate.frag.out b/Test/baseResults/spv.shadingRate.frag.out index 86079ce0f6..a05cbed15f 100644 --- a/Test/baseResults/spv.shadingRate.frag.out +++ b/Test/baseResults/spv.shadingRate.frag.out @@ -18,11 +18,11 @@ spv.shadingRate.frag Name 17 "InvocationsPerPixel" Name 19 "gl_InvocationsPerPixelNV" Decorate 9(FragmentSize) Location 0 - Decorate 13(gl_FragmentSizeNV) Flat Decorate 13(gl_FragmentSizeNV) BuiltIn FragSizeEXT + Decorate 13(gl_FragmentSizeNV) Flat Decorate 17(InvocationsPerPixel) Location 2 - Decorate 19(gl_InvocationsPerPixelNV) Flat Decorate 19(gl_InvocationsPerPixelNV) BuiltIn FragInvocationCountEXT + Decorate 19(gl_InvocationsPerPixelNV) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.smBuiltins.frag.out b/Test/baseResults/spv.smBuiltins.frag.out index 1619cf635e..dc6ce4eb3a 100644 --- a/Test/baseResults/spv.smBuiltins.frag.out +++ b/Test/baseResults/spv.smBuiltins.frag.out @@ -19,14 +19,14 @@ spv.smBuiltins.frag Name 15 "gl_WarpIDNV" Name 17 "gl_SMIDNV" Decorate 9(data) Location 0 - Decorate 11(gl_WarpsPerSMNV) Flat Decorate 11(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV - Decorate 13(gl_SMCountNV) Flat + Decorate 11(gl_WarpsPerSMNV) Flat Decorate 13(gl_SMCountNV) BuiltIn SMCountNV - Decorate 15(gl_WarpIDNV) Flat + Decorate 13(gl_SMCountNV) Flat Decorate 15(gl_WarpIDNV) BuiltIn WarpIDNV - Decorate 17(gl_SMIDNV) Flat + Decorate 15(gl_WarpIDNV) Flat Decorate 17(gl_SMIDNV) BuiltIn SMIDNV + Decorate 17(gl_SMIDNV) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.smBuiltins.vert.out b/Test/baseResults/spv.smBuiltins.vert.out index c03c3cd959..9d5d664f09 100644 --- a/Test/baseResults/spv.smBuiltins.vert.out +++ b/Test/baseResults/spv.smBuiltins.vert.out @@ -21,10 +21,10 @@ spv.smBuiltins.vert Name 22 "gl_WarpIDNV" Name 24 "gl_SMIDNV" Decorate 8 ArrayStride 16 - MemberDecorate 9(Output) 0 Offset 0 Decorate 9(Output) BufferBlock - Decorate 11 DescriptorSet 0 + MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 + Decorate 11 DescriptorSet 0 Decorate 15(gl_VertexIndex) BuiltIn VertexIndex Decorate 18(gl_WarpsPerSMNV) BuiltIn WarpsPerSMNV Decorate 20(gl_SMCountNV) BuiltIn SMCountNV diff --git a/Test/baseResults/spv.sparseTexture.frag.out b/Test/baseResults/spv.sparseTexture.frag.out index 91dd929de3..0d7195332a 100644 --- a/Test/baseResults/spv.sparseTexture.frag.out +++ b/Test/baseResults/spv.sparseTexture.frag.out @@ -46,43 +46,43 @@ Validation failed Name 401 "ic3" Name 410 "i2DMS" Name 419 "outColor" - Decorate 29(s2D) DescriptorSet 0 Decorate 29(s2D) Binding 0 + Decorate 29(s2D) DescriptorSet 0 Decorate 33(c2) Location 0 - Decorate 44(s3D) DescriptorSet 0 Decorate 44(s3D) Binding 1 + Decorate 44(s3D) DescriptorSet 0 Decorate 48(c3) Location 1 - Decorate 59(isCube) DescriptorSet 0 Decorate 59(isCube) Binding 8 - Decorate 71(s2DShadow) DescriptorSet 0 + Decorate 59(isCube) DescriptorSet 0 Decorate 71(s2DShadow) Binding 2 - Decorate 86(sCubeArrayShadow) DescriptorSet 0 + Decorate 71(s2DShadow) DescriptorSet 0 Decorate 86(sCubeArrayShadow) Binding 6 + Decorate 86(sCubeArrayShadow) DescriptorSet 0 Decorate 89(c4) Location 2 - Decorate 108(usCubeArray) DescriptorSet 0 Decorate 108(usCubeArray) Binding 10 - Decorate 140(us2DRect) DescriptorSet 0 + Decorate 108(usCubeArray) DescriptorSet 0 Decorate 140(us2DRect) Binding 11 - Decorate 154(s2DArrayShadow) DescriptorSet 0 + Decorate 140(us2DRect) DescriptorSet 0 Decorate 154(s2DArrayShadow) Binding 4 - Decorate 188(s2DMS) DescriptorSet 0 + Decorate 154(s2DArrayShadow) DescriptorSet 0 Decorate 188(s2DMS) Binding 7 - Decorate 228(is2DArray) DescriptorSet 0 + Decorate 188(s2DMS) DescriptorSet 0 Decorate 228(is2DArray) Binding 9 - Decorate 259(sCubeShadow) DescriptorSet 0 + Decorate 228(is2DArray) DescriptorSet 0 Decorate 259(sCubeShadow) Binding 3 - Decorate 288(s2DRectShadow) DescriptorSet 0 + Decorate 259(sCubeShadow) DescriptorSet 0 Decorate 288(s2DRectShadow) Binding 5 - Decorate 386(i2D) DescriptorSet 0 + Decorate 288(s2DRectShadow) DescriptorSet 0 Decorate 386(i2D) Binding 12 + Decorate 386(i2D) DescriptorSet 0 Decorate 389(ic2) Flat Decorate 389(ic2) Location 3 - Decorate 398(ii3D) DescriptorSet 0 Decorate 398(ii3D) Binding 13 + Decorate 398(ii3D) DescriptorSet 0 Decorate 401(ic3) Flat Decorate 401(ic3) Location 4 - Decorate 410(i2DMS) DescriptorSet 0 Decorate 410(i2DMS) Binding 14 + Decorate 410(i2DMS) DescriptorSet 0 Decorate 419(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.sparseTextureClamp.frag.out b/Test/baseResults/spv.sparseTextureClamp.frag.out index 1c95f60b2c..5ea7dc4c1e 100644 --- a/Test/baseResults/spv.sparseTextureClamp.frag.out +++ b/Test/baseResults/spv.sparseTextureClamp.frag.out @@ -40,32 +40,32 @@ Validation failed Name 276 "s2DRectShadow" Name 294 "is2DArray" Name 329 "outColor" - Decorate 29(s2D) DescriptorSet 0 Decorate 29(s2D) Binding 0 + Decorate 29(s2D) DescriptorSet 0 Decorate 33(c2) Location 0 Decorate 36(lodClamp) Location 3 - Decorate 47(s3D) DescriptorSet 0 Decorate 47(s3D) Binding 1 + Decorate 47(s3D) DescriptorSet 0 Decorate 51(c3) Location 1 - Decorate 63(isCube) DescriptorSet 0 Decorate 63(isCube) Binding 7 - Decorate 76(s2DShadow) DescriptorSet 0 + Decorate 63(isCube) DescriptorSet 0 Decorate 76(s2DShadow) Binding 2 - Decorate 92(sCubeArrayShadow) DescriptorSet 0 + Decorate 76(s2DShadow) DescriptorSet 0 Decorate 92(sCubeArrayShadow) Binding 6 + Decorate 92(sCubeArrayShadow) DescriptorSet 0 Decorate 95(c4) Location 2 - Decorate 154(us2DRect) DescriptorSet 0 Decorate 154(us2DRect) Binding 10 - Decorate 170(s2DArrayShadow) DescriptorSet 0 + Decorate 154(us2DRect) DescriptorSet 0 Decorate 170(s2DArrayShadow) Binding 4 - Decorate 216(sCubeShadow) DescriptorSet 0 + Decorate 170(s2DArrayShadow) DescriptorSet 0 Decorate 216(sCubeShadow) Binding 3 - Decorate 232(usCubeArray) DescriptorSet 0 + Decorate 216(sCubeShadow) DescriptorSet 0 Decorate 232(usCubeArray) Binding 9 - Decorate 276(s2DRectShadow) DescriptorSet 0 + Decorate 232(usCubeArray) DescriptorSet 0 Decorate 276(s2DRectShadow) Binding 5 - Decorate 294(is2DArray) DescriptorSet 0 + Decorate 276(s2DRectShadow) DescriptorSet 0 Decorate 294(is2DArray) Binding 8 + Decorate 294(is2DArray) DescriptorSet 0 Decorate 329(outColor) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.specConst.vert.out b/Test/baseResults/spv.specConst.vert.out index a2e234bd56..404d308576 100644 --- a/Test/baseResults/spv.specConst.vert.out +++ b/Test/baseResults/spv.specConst.vert.out @@ -18,11 +18,11 @@ spv.specConst.vert Name 18 "a" Name 25 "gl_VertexID" Name 26 "gl_InstanceID" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block Decorate 18(a) SpecId 11 Decorate 25(gl_VertexID) BuiltIn VertexId Decorate 26(gl_InstanceID) BuiltIn InstanceId diff --git a/Test/baseResults/spv.specConstant.comp.out b/Test/baseResults/spv.specConstant.comp.out index bfe7114245..6a7dd1db52 100644 --- a/Test/baseResults/spv.specConstant.comp.out +++ b/Test/baseResults/spv.specConstant.comp.out @@ -13,10 +13,10 @@ spv.specConstant.comp Name 7 "bn" MemberName 7(bn) 0 "a" Name 9 "bi" - MemberDecorate 7(bn) 0 Offset 0 Decorate 7(bn) BufferBlock - Decorate 9(bi) DescriptorSet 0 + MemberDecorate 7(bn) 0 Offset 0 Decorate 9(bi) Binding 0 + Decorate 9(bi) DescriptorSet 0 Decorate 12 SpecId 18 Decorate 14 SpecId 19 Decorate 16 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.specConstant.float16.comp.out b/Test/baseResults/spv.specConstant.float16.comp.out index 3381fc7e77..6915397826 100644 --- a/Test/baseResults/spv.specConstant.float16.comp.out +++ b/Test/baseResults/spv.specConstant.float16.comp.out @@ -20,13 +20,13 @@ spv.specConstant.float16.comp Name 9 "sb_out" Name 12 "sc0" Name 16 "sc1" + Decorate 7(Output) BufferBlock MemberDecorate 7(Output) 0 NonReadable MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 2 - Decorate 7(Output) BufferBlock - Decorate 9(sb_out) DescriptorSet 0 Decorate 9(sb_out) Binding 0 + Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 Decorate 16(sc1) SpecId 2 2: TypeVoid diff --git a/Test/baseResults/spv.specConstant.int16.comp.out b/Test/baseResults/spv.specConstant.int16.comp.out index 17f385be48..9ff1e87efd 100644 --- a/Test/baseResults/spv.specConstant.int16.comp.out +++ b/Test/baseResults/spv.specConstant.int16.comp.out @@ -20,13 +20,13 @@ spv.specConstant.int16.comp Name 9 "sb_out" Name 12 "sc0" Name 16 "sc1" + Decorate 7(Output) BufferBlock MemberDecorate 7(Output) 0 NonReadable MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 2 - Decorate 7(Output) BufferBlock - Decorate 9(sb_out) DescriptorSet 0 Decorate 9(sb_out) Binding 0 + Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 Decorate 16(sc1) SpecId 2 2: TypeVoid diff --git a/Test/baseResults/spv.specConstant.int8.comp.out b/Test/baseResults/spv.specConstant.int8.comp.out index c906d71166..f9ed9db45d 100644 --- a/Test/baseResults/spv.specConstant.int8.comp.out +++ b/Test/baseResults/spv.specConstant.int8.comp.out @@ -20,13 +20,13 @@ spv.specConstant.int8.comp Name 9 "sb_out" Name 12 "sc0" Name 16 "sc1" + Decorate 7(Output) BufferBlock MemberDecorate 7(Output) 0 NonReadable MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 1 - Decorate 7(Output) BufferBlock - Decorate 9(sb_out) DescriptorSet 0 Decorate 9(sb_out) Binding 0 + Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 Decorate 16(sc1) SpecId 2 2: TypeVoid diff --git a/Test/baseResults/spv.specConstantOp.float16.comp.out b/Test/baseResults/spv.specConstantOp.float16.comp.out index 97631f14ef..565e62cb8b 100644 --- a/Test/baseResults/spv.specConstantOp.float16.comp.out +++ b/Test/baseResults/spv.specConstantOp.float16.comp.out @@ -19,12 +19,12 @@ spv.specConstantOp.float16.comp Name 10 "" Name 14 "c" Decorate 7 ArrayStride 2 + Decorate 8(S) BufferBlock MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 - Decorate 8(S) BufferBlock - Decorate 10 DescriptorSet 0 Decorate 10 Binding 0 + Decorate 10 DescriptorSet 0 Decorate 14(c) SpecId 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.specConstantOp.int16.comp.out b/Test/baseResults/spv.specConstantOp.int16.comp.out index 13049bed66..1d980690fb 100644 --- a/Test/baseResults/spv.specConstantOp.int16.comp.out +++ b/Test/baseResults/spv.specConstantOp.int16.comp.out @@ -19,12 +19,12 @@ spv.specConstantOp.int16.comp Name 10 "" Name 13 "c" Decorate 7 ArrayStride 2 + Decorate 8(S) BufferBlock MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 - Decorate 8(S) BufferBlock - Decorate 10 DescriptorSet 0 Decorate 10 Binding 0 + Decorate 10 DescriptorSet 0 Decorate 13(c) SpecId 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.specConstantOp.int8.comp.out b/Test/baseResults/spv.specConstantOp.int8.comp.out index 1cf53014bb..f621ba9349 100644 --- a/Test/baseResults/spv.specConstantOp.int8.comp.out +++ b/Test/baseResults/spv.specConstantOp.int8.comp.out @@ -19,12 +19,12 @@ spv.specConstantOp.int8.comp Name 10 "" Name 13 "c" Decorate 7 ArrayStride 1 + Decorate 8(S) BufferBlock MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 - Decorate 8(S) BufferBlock - Decorate 10 DescriptorSet 0 Decorate 10 Binding 0 + Decorate 10 DescriptorSet 0 Decorate 13(c) SpecId 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.specTexture.frag.out b/Test/baseResults/spv.specTexture.frag.out index b599e3565e..a5875d0799 100644 --- a/Test/baseResults/spv.specTexture.frag.out +++ b/Test/baseResults/spv.specTexture.frag.out @@ -15,8 +15,8 @@ spv.specTexture.frag Name 19 "offs" Decorate 9(color_out) Location 0 Decorate 13(tex) Location 0 - Decorate 13(tex) DescriptorSet 0 Decorate 13(tex) Binding 0 + Decorate 13(tex) DescriptorSet 0 Decorate 19(offs) SpecId 1 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out index 35381055c4..fb33e70bd0 100644 --- a/Test/baseResults/spv.ssbo.autoassign.frag.out +++ b/Test/baseResults/spv.ssbo.autoassign.frag.out @@ -33,21 +33,21 @@ spv.ssbo.autoassign.frag MemberDecorate 14(BufType) 0 Offset 0 MemberDecorate 14(BufType) 1 Offset 16 Decorate 15 ArrayStride 32 + Decorate 16(SB0) BufferBlock MemberDecorate 16(SB0) 0 NonWritable MemberDecorate 16(SB0) 0 Offset 0 - Decorate 16(SB0) BufferBlock - Decorate 18(SB0) DescriptorSet 0 Decorate 18(SB0) Binding 30 + Decorate 18(SB0) DescriptorSet 0 + Decorate 26(TestCB) Block MemberDecorate 26(TestCB) 0 Offset 0 MemberDecorate 26(TestCB) 1 Offset 4 - Decorate 26(TestCB) Block - Decorate 28 DescriptorSet 0 Decorate 28 Binding 15 + Decorate 28 DescriptorSet 0 Decorate 56 ArrayStride 32 - MemberDecorate 57(SB1) 0 Offset 0 Decorate 57(SB1) BufferBlock - Decorate 59(SB1) DescriptorSet 0 + MemberDecorate 57(SB1) 0 Offset 0 Decorate 59(SB1) Binding 31 + Decorate 59(SB1) DescriptorSet 0 Decorate 92(pos) Location 0 Decorate 95(@entryPointOutput) Location 0 2: TypeVoid diff --git a/Test/baseResults/spv.ssboAlias.frag.out b/Test/baseResults/spv.ssboAlias.frag.out index 0a5a12b9b4..73842e8fdb 100644 --- a/Test/baseResults/spv.ssboAlias.frag.out +++ b/Test/baseResults/spv.ssboAlias.frag.out @@ -22,21 +22,21 @@ spv.ssboAlias.frag Name 41 "@entryPointOutput" Name 43 "Buf3" Decorate 12 ArrayStride 4 - MemberDecorate 13(Buf1) 0 Offset 0 Decorate 13(Buf1) BufferBlock - Decorate 15(Buf1) DescriptorSet 0 + MemberDecorate 13(Buf1) 0 Offset 0 Decorate 15(Buf1) Binding 84 - MemberDecorate 18(Buf1@count) 0 Offset 0 + Decorate 15(Buf1) DescriptorSet 0 Decorate 18(Buf1@count) BufferBlock - Decorate 20(Buf1@count) DescriptorSet 0 + MemberDecorate 18(Buf1@count) 0 Offset 0 Decorate 20(Buf1@count) Binding 83 - Decorate 28(Buf2) DescriptorSet 0 + Decorate 20(Buf1@count) DescriptorSet 0 Decorate 28(Buf2) Binding 85 - Decorate 29(Buf2@count) DescriptorSet 0 + Decorate 28(Buf2) DescriptorSet 0 Decorate 29(Buf2@count) Binding 86 + Decorate 29(Buf2@count) DescriptorSet 0 Decorate 41(@entryPointOutput) Location 0 - Decorate 43(Buf3) DescriptorSet 0 Decorate 43(Buf3) Binding 84 + Decorate 43(Buf3) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.stereoViewRendering.tesc.out b/Test/baseResults/spv.stereoViewRendering.tesc.out index 100b553404..a0a9cb1b84 100644 --- a/Test/baseResults/spv.stereoViewRendering.tesc.out +++ b/Test/baseResults/spv.stereoViewRendering.tesc.out @@ -31,16 +31,16 @@ spv.stereoViewRendering.tesc MemberName 27(gl_PerVertex) 4 "gl_SecondaryPositionNV" Name 31 "gl_in" Name 41 "gl_Layer" + Decorate 12(gl_PerVertex) Block MemberDecorate 12(gl_PerVertex) 0 BuiltIn SecondaryPositionNV MemberDecorate 12(gl_PerVertex) 1 BuiltIn SecondaryViewportMaskNV - Decorate 12(gl_PerVertex) Block Decorate 18(gl_InvocationID) BuiltIn InvocationId + Decorate 27(gl_PerVertex) Block MemberDecorate 27(gl_PerVertex) 0 BuiltIn Position MemberDecorate 27(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 27(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 27(gl_PerVertex) 3 BuiltIn CullDistance MemberDecorate 27(gl_PerVertex) 4 BuiltIn SecondaryPositionNV - Decorate 27(gl_PerVertex) Block Decorate 41(gl_Layer) BuiltIn Layer Decorate 41(gl_Layer) ViewportRelativeNV Decorate 41(gl_Layer) SecondaryViewportRelativeNV 1 diff --git a/Test/baseResults/spv.stereoViewRendering.vert.out b/Test/baseResults/spv.stereoViewRendering.vert.out index 530d75e1f9..491c377d13 100644 --- a/Test/baseResults/spv.stereoViewRendering.vert.out +++ b/Test/baseResults/spv.stereoViewRendering.vert.out @@ -28,11 +28,11 @@ spv.stereoViewRendering.vert Name 26 "gl_Layer" Decorate 11(gl_SecondaryViewportMaskNV) BuiltIn SecondaryViewportMaskNV Decorate 19(gl_SecondaryPositionNV) BuiltIn SecondaryPositionNV + Decorate 21(gl_PerVertex) Block MemberDecorate 21(gl_PerVertex) 0 BuiltIn Position MemberDecorate 21(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 21(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 21(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 21(gl_PerVertex) Block Decorate 26(gl_Layer) BuiltIn Layer Decorate 26(gl_Layer) ViewportRelativeNV Decorate 26(gl_Layer) SecondaryViewportRelativeNV 2 diff --git a/Test/baseResults/spv.storageBuffer.vert.out b/Test/baseResults/spv.storageBuffer.vert.out index fdbb4db3c4..5081998d2d 100644 --- a/Test/baseResults/spv.storageBuffer.vert.out +++ b/Test/baseResults/spv.storageBuffer.vert.out @@ -22,19 +22,19 @@ spv.storageBuffer.vert Name 22 "bb" MemberName 22(bb) 0 "b" Name 24 "bbi" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block - MemberDecorate 16(ub) 0 Offset 0 Decorate 16(ub) Block - Decorate 18(ubi) DescriptorSet 0 + MemberDecorate 16(ub) 0 Offset 0 Decorate 18(ubi) Binding 0 - MemberDecorate 22(bb) 0 Offset 0 + Decorate 18(ubi) DescriptorSet 0 Decorate 22(bb) Block - Decorate 24(bbi) DescriptorSet 0 + MemberDecorate 22(bb) 0 Offset 0 Decorate 24(bbi) Binding 1 + Decorate 24(bbi) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.structAssignment.frag.out b/Test/baseResults/spv.structAssignment.frag.out index a0cfb54233..e04b5582bb 100644 --- a/Test/baseResults/spv.structAssignment.frag.out +++ b/Test/baseResults/spv.structAssignment.frag.out @@ -37,8 +37,8 @@ WARNING: 0:6: '' : all default precisions are highp; use precision statements to MemberDecorate 10(lunarStruct3) 1 RelaxedPrecision Decorate 16 RelaxedPrecision Decorate 31(gl_FragColor) Location 0 - Decorate 40(samp2D) DescriptorSet 0 Decorate 40(samp2D) Binding 0 + Decorate 40(samp2D) DescriptorSet 0 Decorate 44(coord) RelaxedPrecision Decorate 44(coord) Location 0 Decorate 45 RelaxedPrecision diff --git a/Test/baseResults/spv.structCopy.comp.out b/Test/baseResults/spv.structCopy.comp.out index 38c7c09281..f94e567145 100644 --- a/Test/baseResults/spv.structCopy.comp.out +++ b/Test/baseResults/spv.structCopy.comp.out @@ -36,17 +36,17 @@ spv.structCopy.comp MemberDecorate 32(MyStruct) 1 Offset 4 MemberDecorate 32(MyStruct) 2 Offset 8 Decorate 33 ArrayStride 12 + Decorate 34(MyStructs) BufferBlock MemberDecorate 34(MyStructs) 0 Offset 0 MemberDecorate 34(MyStructs) 1 Offset 4 - Decorate 34(MyStructs) BufferBlock - Decorate 36(my_structs) DescriptorSet 0 Decorate 36(my_structs) Binding 0 + Decorate 36(my_structs) DescriptorSet 0 + Decorate 65(Output) BufferBlock MemberDecorate 65(Output) 0 Offset 0 MemberDecorate 65(Output) 1 Offset 4 MemberDecorate 65(Output) 2 Offset 8 - Decorate 65(Output) BufferBlock - Decorate 67(o) DescriptorSet 0 Decorate 67(o) Binding 1 + Decorate 67(o) DescriptorSet 0 Decorate 80 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.structDeref.frag.out b/Test/baseResults/spv.structDeref.frag.out index a528a599ca..b7884308b4 100644 --- a/Test/baseResults/spv.structDeref.frag.out +++ b/Test/baseResults/spv.structDeref.frag.out @@ -42,8 +42,8 @@ spv.structDeref.frag Name 122 "foo2" Decorate 61(coord) Location 0 Decorate 99(gl_FragColor) Location 0 - Decorate 116(samp2D) DescriptorSet 0 Decorate 116(samp2D) Binding 0 + Decorate 116(samp2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 1 diff --git a/Test/baseResults/spv.structure.frag.out b/Test/baseResults/spv.structure.frag.out index 6b39c297e4..3b43ba57f5 100644 --- a/Test/baseResults/spv.structure.frag.out +++ b/Test/baseResults/spv.structure.frag.out @@ -25,8 +25,8 @@ spv.structure.frag Name 54 "coord" Name 59 "foo" Decorate 45(gl_FragColor) Location 0 - Decorate 50(samp2D) DescriptorSet 0 Decorate 50(samp2D) Binding 0 + Decorate 50(samp2D) DescriptorSet 0 Decorate 54(coord) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroup.frag.out b/Test/baseResults/spv.subgroup.frag.out index a882a22e68..9c6bfbfc32 100644 --- a/Test/baseResults/spv.subgroup.frag.out +++ b/Test/baseResults/spv.subgroup.frag.out @@ -17,12 +17,12 @@ spv.subgroup.frag Name 13 "gl_SubgroupInvocationID" Decorate 9(data) Location 0 Decorate 11(gl_SubgroupSize) RelaxedPrecision - Decorate 11(gl_SubgroupSize) Flat Decorate 11(gl_SubgroupSize) BuiltIn SubgroupSize + Decorate 11(gl_SubgroupSize) Flat Decorate 12 RelaxedPrecision Decorate 13(gl_SubgroupInvocationID) RelaxedPrecision - Decorate 13(gl_SubgroupInvocationID) Flat Decorate 13(gl_SubgroupInvocationID) BuiltIn SubgroupLocalInvocationId + Decorate 13(gl_SubgroupInvocationID) Flat Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision 2: TypeVoid diff --git a/Test/baseResults/spv.subgroup.geom.out b/Test/baseResults/spv.subgroup.geom.out index 3340595030..905e874de8 100644 --- a/Test/baseResults/spv.subgroup.geom.out +++ b/Test/baseResults/spv.subgroup.geom.out @@ -22,10 +22,10 @@ spv.subgroup.geom Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 - MemberDecorate 9(Output) 0 Offset 0 Decorate 9(Output) Block - Decorate 11 DescriptorSet 0 + MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 + Decorate 11 DescriptorSet 0 Decorate 15(gl_PrimitiveIDIn) BuiltIn PrimitiveId Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize diff --git a/Test/baseResults/spv.subgroup.tesc.out b/Test/baseResults/spv.subgroup.tesc.out index aaac4b8075..23e0e3e177 100644 --- a/Test/baseResults/spv.subgroup.tesc.out +++ b/Test/baseResults/spv.subgroup.tesc.out @@ -19,10 +19,10 @@ spv.subgroup.tesc Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 - MemberDecorate 9(Output) 0 Offset 0 Decorate 9(Output) Block - Decorate 11 DescriptorSet 0 + MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 + Decorate 11 DescriptorSet 0 Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize diff --git a/Test/baseResults/spv.subgroup.tese.out b/Test/baseResults/spv.subgroup.tese.out index f989981c28..c0ef120e76 100644 --- a/Test/baseResults/spv.subgroup.tese.out +++ b/Test/baseResults/spv.subgroup.tese.out @@ -21,10 +21,10 @@ spv.subgroup.tese Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 - MemberDecorate 9(Output) 0 Offset 0 Decorate 9(Output) Block - Decorate 11 DescriptorSet 0 + MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 + Decorate 11 DescriptorSet 0 Decorate 15(gl_PrimitiveID) BuiltIn PrimitiveId Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize diff --git a/Test/baseResults/spv.subgroup.vert.out b/Test/baseResults/spv.subgroup.vert.out index 6add1c7caa..3537f58f44 100644 --- a/Test/baseResults/spv.subgroup.vert.out +++ b/Test/baseResults/spv.subgroup.vert.out @@ -18,10 +18,10 @@ spv.subgroup.vert Name 18 "gl_SubgroupSize" Name 20 "gl_SubgroupInvocationID" Decorate 8 ArrayStride 16 - MemberDecorate 9(Output) 0 Offset 0 Decorate 9(Output) Block - Decorate 11 DescriptorSet 0 + MemberDecorate 9(Output) 0 Offset 0 Decorate 11 Binding 0 + Decorate 11 DescriptorSet 0 Decorate 15(gl_VertexIndex) BuiltIn VertexIndex Decorate 18(gl_SubgroupSize) RelaxedPrecision Decorate 18(gl_SubgroupSize) BuiltIn SubgroupSize diff --git a/Test/baseResults/spv.subgroupArithmetic.comp.out b/Test/baseResults/spv.subgroupArithmetic.comp.out index bd71fc7cf8..c3b467b007 100644 --- a/Test/baseResults/spv.subgroupArithmetic.comp.out +++ b/Test/baseResults/spv.subgroupArithmetic.comp.out @@ -32,13 +32,13 @@ spv.subgroupArithmetic.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 - Decorate 24(Buffers) Block - Decorate 27(data) DescriptorSet 0 Decorate 27(data) Binding 0 + Decorate 27(data) DescriptorSet 0 Decorate 2385 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupBallot.comp.out b/Test/baseResults/spv.subgroupBallot.comp.out index 51cb7ac183..834331d55f 100644 --- a/Test/baseResults/spv.subgroupBallot.comp.out +++ b/Test/baseResults/spv.subgroupBallot.comp.out @@ -44,13 +44,13 @@ spv.subgroupBallot.comp Decorate 26(gl_SubgroupGtMask) BuiltIn SubgroupGtMaskKHR Decorate 29(gl_SubgroupLeMask) BuiltIn SubgroupLeMaskKHR Decorate 32(gl_SubgroupLtMask) BuiltIn SubgroupLtMaskKHR + Decorate 46(Buffers) Block MemberDecorate 46(Buffers) 0 Offset 0 MemberDecorate 46(Buffers) 1 Offset 16 MemberDecorate 46(Buffers) 2 Offset 32 MemberDecorate 46(Buffers) 3 Offset 64 - Decorate 46(Buffers) Block - Decorate 49(data) DescriptorSet 0 Decorate 49(data) Binding 0 + Decorate 49(data) DescriptorSet 0 Decorate 436 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupBasic.comp.out b/Test/baseResults/spv.subgroupBasic.comp.out index 51eae75965..7135012725 100644 --- a/Test/baseResults/spv.subgroupBasic.comp.out +++ b/Test/baseResults/spv.subgroupBasic.comp.out @@ -20,10 +20,10 @@ spv.subgroupBasic.comp Name 22 "gl_NumSubgroups" Name 25 "gl_SubgroupID" Decorate 7 ArrayStride 4 - MemberDecorate 8(Buffer) 0 Offset 0 Decorate 8(Buffer) Block - Decorate 10(data) DescriptorSet 0 + MemberDecorate 8(Buffer) 0 Offset 0 Decorate 10(data) Binding 0 + Decorate 10(data) DescriptorSet 0 Decorate 14(gl_SubgroupSize) RelaxedPrecision Decorate 14(gl_SubgroupSize) BuiltIn SubgroupSize Decorate 15 RelaxedPrecision diff --git a/Test/baseResults/spv.subgroupClustered.comp.out b/Test/baseResults/spv.subgroupClustered.comp.out index 2529eeff9a..b86570a2e5 100644 --- a/Test/baseResults/spv.subgroupClustered.comp.out +++ b/Test/baseResults/spv.subgroupClustered.comp.out @@ -32,13 +32,13 @@ spv.subgroupClustered.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 - Decorate 24(Buffers) Block - Decorate 27(data) DescriptorSet 0 Decorate 27(data) Binding 0 + Decorate 27(data) DescriptorSet 0 Decorate 837 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out index 51c2a5e27b..92c0029c9a 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesArithmetic.comp.out @@ -49,6 +49,7 @@ spv.subgroupExtendedTypesArithmetic.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 @@ -56,9 +57,8 @@ spv.subgroupExtendedTypesArithmetic.comp MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 - Decorate 31(Buffers) Block - Decorate 34(data) DescriptorSet 0 Decorate 34(data) Binding 0 + Decorate 34(data) DescriptorSet 0 Decorate 4217 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out index 0a706a504d..880df85cba 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesBallot.comp.out @@ -49,6 +49,7 @@ spv.subgroupExtendedTypesBallot.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 @@ -56,9 +57,8 @@ spv.subgroupExtendedTypesBallot.comp MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 - Decorate 31(Buffers) Block - Decorate 34(data) DescriptorSet 0 Decorate 34(data) Binding 0 + Decorate 34(data) DescriptorSet 0 Decorate 497 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out index f876c5a55c..849cd6765d 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesClustered.comp.out @@ -49,6 +49,7 @@ spv.subgroupExtendedTypesClustered.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 @@ -56,9 +57,8 @@ spv.subgroupExtendedTypesClustered.comp MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 - Decorate 31(Buffers) Block - Decorate 34(data) DescriptorSet 0 Decorate 34(data) Binding 0 + Decorate 34(data) DescriptorSet 0 Decorate 1457 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out index f2cb8cb1cc..8381c49d18 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesPartitioned.comp.out @@ -51,6 +51,7 @@ spv.subgroupExtendedTypesPartitioned.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 34(Buffers) Block MemberDecorate 34(Buffers) 0 Offset 0 MemberDecorate 34(Buffers) 1 Offset 4 MemberDecorate 34(Buffers) 2 Offset 8 @@ -58,9 +59,8 @@ spv.subgroupExtendedTypesPartitioned.comp MemberDecorate 34(Buffers) 4 Offset 32 MemberDecorate 34(Buffers) 5 Offset 64 MemberDecorate 34(Buffers) 6 Offset 96 - Decorate 34(Buffers) Block - Decorate 37(data) DescriptorSet 0 Decorate 37(data) Binding 0 + Decorate 37(data) DescriptorSet 0 Decorate 1742 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out index 8aa7c12042..a0f8564da9 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesQuad.comp.out @@ -49,6 +49,7 @@ spv.subgroupExtendedTypesQuad.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 @@ -56,9 +57,8 @@ spv.subgroupExtendedTypesQuad.comp MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 - Decorate 31(Buffers) Block - Decorate 34(data) DescriptorSet 0 Decorate 34(data) Binding 0 + Decorate 34(data) DescriptorSet 0 Decorate 917 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out index 5900db4fb1..b806ca9409 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out @@ -41,11 +41,12 @@ spv.subgroupExtendedTypesRotate.comp MemberName 31(Buffers) 5 "u64" MemberName 31(Buffers) 6 "f16" Name 35 "data" + Decorate 9(roblock) Block MemberDecorate 9(roblock) 0 NonWritable MemberDecorate 9(roblock) 0 Offset 0 - Decorate 9(roblock) Block - Decorate 11(ro) DescriptorSet 0 Decorate 11(ro) Binding 1 + Decorate 11(ro) DescriptorSet 0 + Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 @@ -53,9 +54,8 @@ spv.subgroupExtendedTypesRotate.comp MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 - Decorate 31(Buffers) Block - Decorate 35(data) DescriptorSet 0 Decorate 35(data) Binding 0 + Decorate 35(data) DescriptorSet 0 Decorate 552 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out index 0051bd7d83..354e344c68 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffle.comp.out @@ -49,6 +49,7 @@ spv.subgroupExtendedTypesShuffle.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 @@ -56,9 +57,8 @@ spv.subgroupExtendedTypesShuffle.comp MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 - Decorate 31(Buffers) Block - Decorate 34(data) DescriptorSet 0 Decorate 34(data) Binding 0 + Decorate 34(data) DescriptorSet 0 Decorate 553 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out index 46244baa87..2ce9481238 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesShuffleRelative.comp.out @@ -49,6 +49,7 @@ spv.subgroupExtendedTypesShuffleRelative.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 31(Buffers) Block MemberDecorate 31(Buffers) 0 Offset 0 MemberDecorate 31(Buffers) 1 Offset 4 MemberDecorate 31(Buffers) 2 Offset 8 @@ -56,9 +57,8 @@ spv.subgroupExtendedTypesShuffleRelative.comp MemberDecorate 31(Buffers) 4 Offset 32 MemberDecorate 31(Buffers) 5 Offset 64 MemberDecorate 31(Buffers) 6 Offset 96 - Decorate 31(Buffers) Block - Decorate 34(data) DescriptorSet 0 Decorate 34(data) Binding 0 + Decorate 34(data) DescriptorSet 0 Decorate 553 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out index a53847ca7a..f4b35addd1 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesVote.comp.out @@ -50,6 +50,7 @@ spv.subgroupExtendedTypesVote.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 32(Buffers) Block MemberDecorate 32(Buffers) 0 Offset 0 MemberDecorate 32(Buffers) 1 Offset 4 MemberDecorate 32(Buffers) 2 Offset 8 @@ -58,9 +59,8 @@ spv.subgroupExtendedTypesVote.comp MemberDecorate 32(Buffers) 5 Offset 64 MemberDecorate 32(Buffers) 6 Offset 96 MemberDecorate 32(Buffers) 7 Offset 104 - Decorate 32(Buffers) Block - Decorate 35(data) DescriptorSet 0 Decorate 35(data) Binding 0 + Decorate 35(data) DescriptorSet 0 Decorate 276 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupPartitioned.comp.out b/Test/baseResults/spv.subgroupPartitioned.comp.out index 922d393edf..4c129dbbd4 100644 --- a/Test/baseResults/spv.subgroupPartitioned.comp.out +++ b/Test/baseResults/spv.subgroupPartitioned.comp.out @@ -34,13 +34,13 @@ spv.subgroupPartitioned.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 28(Buffers) Block MemberDecorate 28(Buffers) 0 Offset 0 MemberDecorate 28(Buffers) 1 Offset 16 MemberDecorate 28(Buffers) 2 Offset 32 MemberDecorate 28(Buffers) 3 Offset 64 - Decorate 28(Buffers) Block - Decorate 31(data) DescriptorSet 0 Decorate 31(data) Binding 0 + Decorate 31(data) DescriptorSet 0 Decorate 2806 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupQuad.comp.out b/Test/baseResults/spv.subgroupQuad.comp.out index b418148cd4..cc5a1e386c 100644 --- a/Test/baseResults/spv.subgroupQuad.comp.out +++ b/Test/baseResults/spv.subgroupQuad.comp.out @@ -32,13 +32,13 @@ spv.subgroupQuad.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 - Decorate 24(Buffers) Block - Decorate 27(data) DescriptorSet 0 Decorate 27(data) Binding 0 + Decorate 27(data) DescriptorSet 0 Decorate 695 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupRotate.comp.out b/Test/baseResults/spv.subgroupRotate.comp.out index 9c87ba63bf..d988636a0d 100644 --- a/Test/baseResults/spv.subgroupRotate.comp.out +++ b/Test/baseResults/spv.subgroupRotate.comp.out @@ -24,18 +24,18 @@ spv.subgroupRotate.comp MemberName 23(Buffers) 2 "u4" MemberName 23(Buffers) 3 "d4" Name 27 "data" + Decorate 9(roblock) Block MemberDecorate 9(roblock) 0 NonWritable MemberDecorate 9(roblock) 0 Offset 0 - Decorate 9(roblock) Block - Decorate 11(ro) DescriptorSet 0 Decorate 11(ro) Binding 1 + Decorate 11(ro) DescriptorSet 0 + Decorate 23(Buffers) Block MemberDecorate 23(Buffers) 0 Offset 0 MemberDecorate 23(Buffers) 1 Offset 16 MemberDecorate 23(Buffers) 2 Offset 32 MemberDecorate 23(Buffers) 3 Offset 64 - Decorate 23(Buffers) Block - Decorate 27(data) DescriptorSet 0 Decorate 27(data) Binding 0 + Decorate 27(data) DescriptorSet 0 Decorate 417 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupShuffle.comp.out b/Test/baseResults/spv.subgroupShuffle.comp.out index d54e8ae999..d87039b28c 100644 --- a/Test/baseResults/spv.subgroupShuffle.comp.out +++ b/Test/baseResults/spv.subgroupShuffle.comp.out @@ -32,13 +32,13 @@ spv.subgroupShuffle.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 - Decorate 24(Buffers) Block - Decorate 27(data) DescriptorSet 0 Decorate 27(data) Binding 0 + Decorate 27(data) DescriptorSet 0 Decorate 419 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupShuffleRelative.comp.out b/Test/baseResults/spv.subgroupShuffleRelative.comp.out index 6bae808f80..b0e8a0d469 100644 --- a/Test/baseResults/spv.subgroupShuffleRelative.comp.out +++ b/Test/baseResults/spv.subgroupShuffleRelative.comp.out @@ -32,13 +32,13 @@ spv.subgroupShuffleRelative.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 - Decorate 24(Buffers) Block - Decorate 27(data) DescriptorSet 0 Decorate 27(data) Binding 0 + Decorate 27(data) DescriptorSet 0 Decorate 419 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subgroupSizeARB.frag.out b/Test/baseResults/spv.subgroupSizeARB.frag.out index 5eeb0c094a..f1befa4d93 100644 --- a/Test/baseResults/spv.subgroupSizeARB.frag.out +++ b/Test/baseResults/spv.subgroupSizeARB.frag.out @@ -17,8 +17,8 @@ spv.subgroupSizeARB.frag Name 8 "result" Name 10 "gl_SubGroupSizeARB" Decorate 8(result) Location 0 - Decorate 10(gl_SubGroupSizeARB) Flat Decorate 10(gl_SubGroupSizeARB) BuiltIn SubgroupSize + Decorate 10(gl_SubGroupSizeARB) Flat 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.subgroupVote.comp.out b/Test/baseResults/spv.subgroupVote.comp.out index fa0a01fb42..f49dcbe81e 100644 --- a/Test/baseResults/spv.subgroupVote.comp.out +++ b/Test/baseResults/spv.subgroupVote.comp.out @@ -33,14 +33,14 @@ spv.subgroupVote.comp Decorate 13 RelaxedPrecision Decorate 14 RelaxedPrecision Decorate 16 RelaxedPrecision + Decorate 24(Buffers) Block MemberDecorate 24(Buffers) 0 Offset 0 MemberDecorate 24(Buffers) 1 Offset 16 MemberDecorate 24(Buffers) 2 Offset 32 MemberDecorate 24(Buffers) 3 Offset 64 MemberDecorate 24(Buffers) 4 Offset 96 - Decorate 24(Buffers) Block - Decorate 27(data) DescriptorSet 0 Decorate 27(data) Binding 0 + Decorate 27(data) DescriptorSet 0 Decorate 215 BuiltIn WorkgroupSize 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.subpass.frag.out b/Test/baseResults/spv.subpass.frag.out index bf49b08df0..27b4d6b5a7 100644 --- a/Test/baseResults/spv.subpass.frag.out +++ b/Test/baseResults/spv.subpass.frag.out @@ -24,24 +24,24 @@ spv.subpass.frag Name 61 "usubMS" Decorate 15(icolor) Location 1 Decorate 27(color) Location 0 - Decorate 30(sub) DescriptorSet 0 Decorate 30(sub) Binding 0 + Decorate 30(sub) DescriptorSet 0 Decorate 30(sub) InputAttachmentIndex 1 - Decorate 35(subMS) DescriptorSet 0 Decorate 35(subMS) Binding 1 + Decorate 35(subMS) DescriptorSet 0 Decorate 35(subMS) InputAttachmentIndex 2 - Decorate 42(isub) DescriptorSet 0 Decorate 42(isub) Binding 2 + Decorate 42(isub) DescriptorSet 0 Decorate 42(isub) InputAttachmentIndex 3 - Decorate 45(isubMS) DescriptorSet 0 Decorate 45(isubMS) Binding 3 + Decorate 45(isubMS) DescriptorSet 0 Decorate 45(isubMS) InputAttachmentIndex 4 Decorate 53(ucolor) Location 2 - Decorate 56(usub) DescriptorSet 0 Decorate 56(usub) Binding 4 + Decorate 56(usub) DescriptorSet 0 Decorate 56(usub) InputAttachmentIndex 5 - Decorate 61(usubMS) DescriptorSet 0 Decorate 61(usubMS) Binding 5 + Decorate 61(usubMS) DescriptorSet 0 Decorate 61(usubMS) InputAttachmentIndex 6 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.switch.frag.out b/Test/baseResults/spv.switch.frag.out index 4e7db4df5d..bacf87eceb 100644 --- a/Test/baseResults/spv.switch.frag.out +++ b/Test/baseResults/spv.switch.frag.out @@ -37,14 +37,14 @@ WARNING: 0:139: 'switch' : last case/default label not followed by statements Name 246 "param" Name 248 "param" Name 250 "param" - Decorate 15(foo1(vf4;vf4;i1;) RelaxedPrecision Decorate 12(v1) RelaxedPrecision Decorate 13(v2) RelaxedPrecision Decorate 14(i1) RelaxedPrecision - Decorate 20(foo2(vf4;vf4;i1;) RelaxedPrecision + Decorate 15(foo1(vf4;vf4;i1;) RelaxedPrecision Decorate 17(v1) RelaxedPrecision Decorate 18(v2) RelaxedPrecision Decorate 19(i1) RelaxedPrecision + Decorate 20(foo2(vf4;vf4;i1;) RelaxedPrecision Decorate 22 RelaxedPrecision Decorate 27 RelaxedPrecision Decorate 29 RelaxedPrecision diff --git a/Test/baseResults/spv.test.frag.out b/Test/baseResults/spv.test.frag.out index c5d63845c9..e883c032c6 100644 --- a/Test/baseResults/spv.test.frag.out +++ b/Test/baseResults/spv.test.frag.out @@ -21,12 +21,12 @@ spv.test.frag Name 43 "gl_FragColor" Name 46 "u" Name 49 "blend" - Decorate 16(texSampler2D) DescriptorSet 0 Decorate 16(texSampler2D) Binding 0 + Decorate 16(texSampler2D) DescriptorSet 0 Decorate 20(t) Location 3 Decorate 22(scale) Location 1 - Decorate 33(texSampler3D) DescriptorSet 0 Decorate 33(texSampler3D) Binding 1 + Decorate 33(texSampler3D) DescriptorSet 0 Decorate 37(coords) Location 4 Decorate 43(gl_FragColor) Location 0 Decorate 46(u) Location 2 diff --git a/Test/baseResults/spv.texture.frag.out b/Test/baseResults/spv.texture.frag.out index dc1970a9fd..4c0f5f9456 100644 --- a/Test/baseResults/spv.texture.frag.out +++ b/Test/baseResults/spv.texture.frag.out @@ -39,19 +39,19 @@ WARNING: 0:12: varying deprecated in version 130; may be removed in future relea Name 297 "blend" Name 303 "scale" Name 304 "t" - Decorate 32(texSampler1D) DescriptorSet 0 Decorate 32(texSampler1D) Binding 0 + Decorate 32(texSampler1D) DescriptorSet 0 Decorate 47(coords2D) Location 4 - Decorate 76(texSampler2D) DescriptorSet 0 Decorate 76(texSampler2D) Binding 1 - Decorate 104(texSampler3D) DescriptorSet 0 + Decorate 76(texSampler2D) DescriptorSet 0 Decorate 104(texSampler3D) Binding 2 - Decorate 130(texSamplerCube) DescriptorSet 0 + Decorate 104(texSampler3D) DescriptorSet 0 Decorate 130(texSamplerCube) Binding 3 - Decorate 145(shadowSampler1D) DescriptorSet 0 + Decorate 130(texSamplerCube) DescriptorSet 0 Decorate 145(shadowSampler1D) Binding 4 - Decorate 164(shadowSampler2D) DescriptorSet 0 + Decorate 145(shadowSampler1D) DescriptorSet 0 Decorate 164(shadowSampler2D) Binding 5 + Decorate 164(shadowSampler2D) DescriptorSet 0 Decorate 291(gl_FragColor) Location 0 Decorate 294(u) Location 2 Decorate 297(blend) Location 0 diff --git a/Test/baseResults/spv.texture.sampler.transform.frag.out b/Test/baseResults/spv.texture.sampler.transform.frag.out index 4e9534e753..b2fe823057 100644 --- a/Test/baseResults/spv.texture.sampler.transform.frag.out +++ b/Test/baseResults/spv.texture.sampler.transform.frag.out @@ -14,8 +14,8 @@ spv.texture.sampler.transform.frag Name 13 "tex" Name 17 "coord" Decorate 9(color) Location 0 - Decorate 13(tex) DescriptorSet 0 Decorate 13(tex) Binding 0 + Decorate 13(tex) DescriptorSet 0 Decorate 17(coord) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.texture.vert.out b/Test/baseResults/spv.texture.vert.out index 35053f3878..701cacda13 100644 --- a/Test/baseResults/spv.texture.vert.out +++ b/Test/baseResults/spv.texture.vert.out @@ -23,19 +23,19 @@ spv.texture.vert Name 106 "shadowSampler1D" Name 118 "shadowSampler2D" Name 148 "gl_Position" - Decorate 29(texSampler1D) DescriptorSet 0 Decorate 29(texSampler1D) Binding 0 + Decorate 29(texSampler1D) DescriptorSet 0 Decorate 39(coords2D) Location 0 - Decorate 56(texSampler2D) DescriptorSet 0 Decorate 56(texSampler2D) Binding 1 - Decorate 80(texSampler3D) DescriptorSet 0 + Decorate 56(texSampler2D) DescriptorSet 0 Decorate 80(texSampler3D) Binding 2 - Decorate 96(texSamplerCube) DescriptorSet 0 + Decorate 80(texSampler3D) DescriptorSet 0 Decorate 96(texSamplerCube) Binding 3 - Decorate 106(shadowSampler1D) DescriptorSet 0 + Decorate 96(texSamplerCube) DescriptorSet 0 Decorate 106(shadowSampler1D) Binding 4 - Decorate 118(shadowSampler2D) DescriptorSet 0 + Decorate 106(shadowSampler1D) DescriptorSet 0 Decorate 118(shadowSampler2D) Binding 5 + Decorate 118(shadowSampler2D) DescriptorSet 0 Decorate 148(gl_Position) BuiltIn Position 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.textureBuffer.vert.out b/Test/baseResults/spv.textureBuffer.vert.out index f5b271f6da..6cd40d2a43 100644 --- a/Test/baseResults/spv.textureBuffer.vert.out +++ b/Test/baseResults/spv.textureBuffer.vert.out @@ -15,16 +15,16 @@ spv.textureBuffer.vert Name 23 "sBuf" Name 32 "utBuf" Name 38 "itBuf" - Decorate 9(tBuf) DescriptorSet 0 Decorate 9(tBuf) Binding 0 - Decorate 13(s) DescriptorSet 0 + Decorate 9(tBuf) DescriptorSet 0 Decorate 13(s) Binding 1 - Decorate 23(sBuf) DescriptorSet 0 + Decorate 13(s) DescriptorSet 0 Decorate 23(sBuf) Binding 2 - Decorate 32(utBuf) DescriptorSet 0 + Decorate 23(sBuf) DescriptorSet 0 Decorate 32(utBuf) Binding 3 - Decorate 38(itBuf) DescriptorSet 0 + Decorate 32(utBuf) DescriptorSet 0 Decorate 38(itBuf) Binding 4 + Decorate 38(itBuf) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.textureGatherBiasLod.frag.out b/Test/baseResults/spv.textureGatherBiasLod.frag.out index f47e16a76d..9fd195f5d1 100644 --- a/Test/baseResults/spv.textureGatherBiasLod.frag.out +++ b/Test/baseResults/spv.textureGatherBiasLod.frag.out @@ -30,17 +30,17 @@ spv.textureGatherBiasLod.frag Name 104 "ResType" Name 176 "lod" Name 296 "fragColor" - Decorate 16(s2D) DescriptorSet 0 Decorate 16(s2D) Binding 0 + Decorate 16(s2D) DescriptorSet 0 Decorate 20(c2) Location 0 Decorate 25(bias) Location 4 - Decorate 33(s2DArray) DescriptorSet 0 Decorate 33(s2DArray) Binding 1 + Decorate 33(s2DArray) DescriptorSet 0 Decorate 37(c3) Location 1 - Decorate 47(sCube) DescriptorSet 0 Decorate 47(sCube) Binding 2 - Decorate 58(sCubeArray) DescriptorSet 0 + Decorate 47(sCube) DescriptorSet 0 Decorate 58(sCubeArray) Binding 3 + Decorate 58(sCubeArray) DescriptorSet 0 Decorate 61(c4) Location 2 Decorate 176(lod) Location 3 Decorate 296(fragColor) Location 0 diff --git a/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out index 6a543b3cf8..63e4e15c04 100644 --- a/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchGatherSAD.frag.out @@ -29,22 +29,22 @@ spv.tpipBlockMatchGatherSAD.frag Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 - Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) Binding 1 - Decorate 48(samp) DescriptorSet 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 - Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 - Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 - Decorate 64(ref_samp) DescriptorSet 0 - Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) Binding 5 + Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM - Decorate 71(tex2DArray_weights) DescriptorSet 0 Decorate 71(tex2DArray_weights) Binding 0 + Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out index 74479c1b3f..f5aa4cb830 100644 --- a/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchGatherSSD.frag.out @@ -29,22 +29,22 @@ spv.tpipBlockMatchGatherSSD.frag Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 - Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) Binding 1 - Decorate 48(samp) DescriptorSet 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 - Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 - Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 - Decorate 64(ref_samp) DescriptorSet 0 - Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) Binding 5 + Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM - Decorate 71(tex2DArray_weights) DescriptorSet 0 Decorate 71(tex2DArray_weights) Binding 0 + Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.tpipBlockMatchSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchSAD.frag.out index a807d9238c..eb5f474470 100644 --- a/Test/baseResults/spv.tpipBlockMatchSAD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchSAD.frag.out @@ -26,22 +26,22 @@ spv.tpipBlockMatchSAD.frag Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 - Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) Binding 1 - Decorate 48(samp) DescriptorSet 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 - Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 - Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 - Decorate 64(ref_samp) DescriptorSet 0 - Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) Binding 5 + Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM - Decorate 71(tex2DArray_weights) DescriptorSet 0 Decorate 71(tex2DArray_weights) Binding 0 + Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.tpipBlockMatchSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchSSD.frag.out index e7ac73b636..d758c0b127 100644 --- a/Test/baseResults/spv.tpipBlockMatchSSD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchSSD.frag.out @@ -26,22 +26,22 @@ spv.tpipBlockMatchSSD.frag Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 - Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) Binding 1 - Decorate 48(samp) DescriptorSet 0 + Decorate 44(tex2D_src1) DescriptorSet 0 + Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM Decorate 48(samp) Binding 3 - Decorate 53(tex2D_src2) DescriptorSet 0 + Decorate 48(samp) DescriptorSet 0 Decorate 53(tex2D_src2) Binding 2 - Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 - Decorate 64(ref_samp) DescriptorSet 0 - Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM + Decorate 64(ref_samp) Binding 5 + Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM - Decorate 71(tex2DArray_weights) DescriptorSet 0 Decorate 71(tex2DArray_weights) Binding 0 + Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out index cd20d771a0..a27c016f77 100644 --- a/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchWindowSAD.frag.out @@ -29,25 +29,25 @@ spv.tpipBlockMatchWindowSAD.frag Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 - Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) Binding 1 - Decorate 48(samp) DescriptorSet 0 - Decorate 48(samp) Binding 3 - Decorate 53(tex2D_src2) DescriptorSet 0 - Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 48(samp) Binding 3 + Decorate 48(samp) DescriptorSet 0 Decorate 48(samp) DecorationBlockMatchSamplerQCOM + Decorate 53(tex2D_src2) Binding 2 + Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 - Decorate 64(ref_samp) DescriptorSet 0 - Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) DecorationBlockMatchSamplerQCOM + Decorate 64(ref_samp) Binding 5 + Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) DecorationBlockMatchSamplerQCOM - Decorate 71(tex2DArray_weights) DescriptorSet 0 Decorate 71(tex2DArray_weights) Binding 0 + Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out index 797ecd7470..e22097ffe5 100644 --- a/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out +++ b/Test/baseResults/spv.tpipBlockMatchWindowSSD.frag.out @@ -29,25 +29,25 @@ spv.tpipBlockMatchWindowSSD.frag Name 71 "tex2DArray_weights" Decorate 13(v_texcoord) Location 0 Decorate 41(fragColor) Location 0 - Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) Binding 1 - Decorate 48(samp) DescriptorSet 0 - Decorate 48(samp) Binding 3 - Decorate 53(tex2D_src2) DescriptorSet 0 - Decorate 53(tex2D_src2) Binding 2 + Decorate 44(tex2D_src1) DescriptorSet 0 Decorate 44(tex2D_src1) DecorationBlockMatchTextureQCOM + Decorate 48(samp) Binding 3 + Decorate 48(samp) DescriptorSet 0 Decorate 48(samp) DecorationBlockMatchSamplerQCOM + Decorate 53(tex2D_src2) Binding 2 + Decorate 53(tex2D_src2) DescriptorSet 0 Decorate 53(tex2D_src2) DecorationBlockMatchTextureQCOM - Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) Binding 4 - Decorate 64(ref_samp) DescriptorSet 0 - Decorate 64(ref_samp) Binding 5 + Decorate 61(target_samp) DescriptorSet 0 Decorate 61(target_samp) DecorationBlockMatchTextureQCOM Decorate 61(target_samp) DecorationBlockMatchSamplerQCOM + Decorate 64(ref_samp) Binding 5 + Decorate 64(ref_samp) DescriptorSet 0 Decorate 64(ref_samp) DecorationBlockMatchTextureQCOM Decorate 64(ref_samp) DecorationBlockMatchSamplerQCOM - Decorate 71(tex2DArray_weights) DescriptorSet 0 Decorate 71(tex2DArray_weights) Binding 0 + Decorate 71(tex2DArray_weights) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.tpipBoxFilter.frag.out b/Test/baseResults/spv.tpipBoxFilter.frag.out index 5620a81625..46d802c42f 100644 --- a/Test/baseResults/spv.tpipBoxFilter.frag.out +++ b/Test/baseResults/spv.tpipBoxFilter.frag.out @@ -22,17 +22,17 @@ spv.tpipBoxFilter.frag Name 41 "tex2DArray_weights" Name 42 "tex2D_src2" Decorate 15(fragColor) Location 0 - Decorate 18(tex2D_src1) DescriptorSet 0 Decorate 18(tex2D_src1) Binding 1 - Decorate 22(samp) DescriptorSet 0 + Decorate 18(tex2D_src1) DescriptorSet 0 Decorate 22(samp) Binding 3 + Decorate 22(samp) DescriptorSet 0 Decorate 27(v_texcoord) Location 0 - Decorate 33(tex_samp) DescriptorSet 0 Decorate 33(tex_samp) Binding 4 - Decorate 41(tex2DArray_weights) DescriptorSet 0 + Decorate 33(tex_samp) DescriptorSet 0 Decorate 41(tex2DArray_weights) Binding 0 - Decorate 42(tex2D_src2) DescriptorSet 0 + Decorate 41(tex2DArray_weights) DescriptorSet 0 Decorate 42(tex2D_src2) Binding 2 + Decorate 42(tex2D_src2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.tpipSampleWeighted.frag.out b/Test/baseResults/spv.tpipSampleWeighted.frag.out index bf108742d0..652143c7f8 100644 --- a/Test/baseResults/spv.tpipSampleWeighted.frag.out +++ b/Test/baseResults/spv.tpipSampleWeighted.frag.out @@ -22,21 +22,21 @@ spv.tpipSampleWeighted.frag Name 39 "tex_samp_array" Name 42 "tex2D_src2" Decorate 9(fragColor) Location 0 - Decorate 12(tex2D_src1) DescriptorSet 0 Decorate 12(tex2D_src1) Binding 1 - Decorate 16(samp) DescriptorSet 0 + Decorate 12(tex2D_src1) DescriptorSet 0 Decorate 16(samp) Binding 3 + Decorate 16(samp) DescriptorSet 0 Decorate 21(v_texcoord) Location 0 - Decorate 27(tex2DArray_weights) DescriptorSet 0 Decorate 27(tex2DArray_weights) Binding 0 + Decorate 27(tex2DArray_weights) DescriptorSet 0 Decorate 27(tex2DArray_weights) DecorationWeightTextureQCOM - Decorate 34(tex_samp) DescriptorSet 0 Decorate 34(tex_samp) Binding 4 - Decorate 39(tex_samp_array) DescriptorSet 0 + Decorate 34(tex_samp) DescriptorSet 0 Decorate 39(tex_samp_array) Binding 5 + Decorate 39(tex_samp_array) DescriptorSet 0 Decorate 39(tex_samp_array) DecorationWeightTextureQCOM - Decorate 42(tex2D_src2) DescriptorSet 0 Decorate 42(tex2D_src2) Binding 2 + Decorate 42(tex2D_src2) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.tpipTextureArrays.frag.out b/Test/baseResults/spv.tpipTextureArrays.frag.out index 28b63f5714..cb5a62adbe 100644 --- a/Test/baseResults/spv.tpipTextureArrays.frag.out +++ b/Test/baseResults/spv.tpipTextureArrays.frag.out @@ -24,14 +24,14 @@ spv.tpipTextureArrays.frag Name 67 "samp" Decorate 13(v_texcoord) Location 0 Decorate 46(fragColor) Location 0 - Decorate 51(samplers) DescriptorSet 0 Decorate 51(samplers) Binding 5 - Decorate 60(tex2D_srcs) DescriptorSet 0 - Decorate 60(tex2D_srcs) Binding 4 - Decorate 67(samp) DescriptorSet 0 - Decorate 67(samp) Binding 3 + Decorate 51(samplers) DescriptorSet 0 Decorate 55 DecorationBlockMatchTextureQCOM + Decorate 60(tex2D_srcs) Binding 4 + Decorate 60(tex2D_srcs) DescriptorSet 0 Decorate 63 DecorationBlockMatchTextureQCOM + Decorate 67(samp) Binding 3 + Decorate 67(samp) DescriptorSet 0 Decorate 74 DecorationBlockMatchTextureQCOM Decorate 79 DecorationBlockMatchTextureQCOM 2: TypeVoid diff --git a/Test/baseResults/spv.uint.frag.out b/Test/baseResults/spv.uint.frag.out index a78acae4db..8a8f99807b 100644 --- a/Test/baseResults/spv.uint.frag.out +++ b/Test/baseResults/spv.uint.frag.out @@ -59,8 +59,8 @@ spv.uint.frag Decorate 68(c) RelaxedPrecision Decorate 68(c) Location 0 Decorate 72(usampler) RelaxedPrecision - Decorate 72(usampler) DescriptorSet 0 Decorate 72(usampler) Binding 0 + Decorate 72(usampler) DescriptorSet 0 Decorate 73 RelaxedPrecision Decorate 77(tc) RelaxedPrecision Decorate 77(tc) Location 2 diff --git a/Test/baseResults/spv.uniformArray.frag.out b/Test/baseResults/spv.uniformArray.frag.out index 09cd353221..26e066a6e6 100644 --- a/Test/baseResults/spv.uniformArray.frag.out +++ b/Test/baseResults/spv.uniformArray.frag.out @@ -20,8 +20,8 @@ spv.uniformArray.frag Decorate 25(inColor) Location 0 Decorate 43(alpha) Location 7 Decorate 54(gl_FragColor) Location 0 - Decorate 59(texSampler2D) DescriptorSet 0 Decorate 59(texSampler2D) Binding 0 + Decorate 59(texSampler2D) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.uniformInitializer.frag.out b/Test/baseResults/spv.uniformInitializer.frag.out index abebf6250a..da32af5582 100644 --- a/Test/baseResults/spv.uniformInitializer.frag.out +++ b/Test/baseResults/spv.uniformInitializer.frag.out @@ -14,8 +14,8 @@ spv.uniformInitializer.frag Name 14 "in_color" Decorate 9(color) Location 0 Decorate 14(in_color) Location 0 - Decorate 14(in_color) DescriptorSet 0 Decorate 14(in_color) Binding 0 + Decorate 14(in_color) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.uniformInitializerStruct.frag.out b/Test/baseResults/spv.uniformInitializerStruct.frag.out index 058bc34fa0..7b0f7334a3 100644 --- a/Test/baseResults/spv.uniformInitializerStruct.frag.out +++ b/Test/baseResults/spv.uniformInitializerStruct.frag.out @@ -19,8 +19,8 @@ spv.uniformInitializerStruct.frag Name 34 "parts" Decorate 9(color) Location 0 Decorate 34(parts) Location 0 - Decorate 34(parts) DescriptorSet 0 Decorate 34(parts) Binding 0 + Decorate 34(parts) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.variableArrayIndex.frag.out b/Test/baseResults/spv.variableArrayIndex.frag.out index f78119c22f..ee2c1c6bf4 100644 --- a/Test/baseResults/spv.variableArrayIndex.frag.out +++ b/Test/baseResults/spv.variableArrayIndex.frag.out @@ -41,8 +41,8 @@ spv.variableArrayIndex.frag Decorate 36(foo) Flat Decorate 36(foo) Location 1 Decorate 54(gl_FragColor) Location 0 - Decorate 59(samp2D) DescriptorSet 0 Decorate 59(samp2D) Binding 0 + Decorate 59(samp2D) DescriptorSet 0 Decorate 63(coord) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.varyingArray.frag.out b/Test/baseResults/spv.varyingArray.frag.out index 9d001bc056..d97b7f728e 100644 --- a/Test/baseResults/spv.varyingArray.frag.out +++ b/Test/baseResults/spv.varyingArray.frag.out @@ -17,8 +17,8 @@ spv.varyingArray.frag Name 39 "alpha" Name 45 "gl_FragColor" Name 48 "foo" - Decorate 13(texSampler2D) DescriptorSet 0 Decorate 13(texSampler2D) Binding 0 + Decorate 13(texSampler2D) DescriptorSet 0 Decorate 19(TexCoord) Location 2 Decorate 34(color) Location 0 Decorate 39(alpha) Location 1 diff --git a/Test/baseResults/spv.varyingArrayIndirect.frag.out b/Test/baseResults/spv.varyingArrayIndirect.frag.out index 00135f6e4b..7a44c8f9cf 100644 --- a/Test/baseResults/spv.varyingArrayIndirect.frag.out +++ b/Test/baseResults/spv.varyingArrayIndirect.frag.out @@ -19,8 +19,8 @@ spv.varyingArrayIndirect.frag Name 45 "color" Name 50 "alpha" Name 56 "gl_FragColor" - Decorate 13(texSampler2D) DescriptorSet 0 Decorate 13(texSampler2D) Binding 0 + Decorate 13(texSampler2D) DescriptorSet 0 Decorate 19(userIn) Location 8 Decorate 22(b) Flat Decorate 22(b) Location 11 diff --git a/Test/baseResults/spv.viewportArray2.tesc.out b/Test/baseResults/spv.viewportArray2.tesc.out index f719a97e21..16e1686a7e 100644 --- a/Test/baseResults/spv.viewportArray2.tesc.out +++ b/Test/baseResults/spv.viewportArray2.tesc.out @@ -20,8 +20,8 @@ spv.viewportArray2.tesc Name 14 "gl_out" Name 16 "gl_InvocationID" Name 22 "gl_Layer" - MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV Decorate 10(gl_PerVertex) Block + MemberDecorate 10(gl_PerVertex) 0 BuiltIn ViewportMaskNV Decorate 16(gl_InvocationID) BuiltIn InvocationId Decorate 22(gl_Layer) BuiltIn Layer Decorate 22(gl_Layer) ViewportRelativeNV diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out index 53673d35a6..13aec2f33b 100644 --- a/Test/baseResults/spv.volatileAtomic.comp.out +++ b/Test/baseResults/spv.volatileAtomic.comp.out @@ -14,12 +14,12 @@ spv.volatileAtomic.comp MemberName 8(D) 0 "d" Name 10 "d" Decorate 7 ArrayStride 4 + Decorate 8(D) BufferBlock MemberDecorate 8(D) 0 Volatile MemberDecorate 8(D) 0 Coherent MemberDecorate 8(D) 0 Offset 0 - Decorate 8(D) BufferBlock - Decorate 10(d) DescriptorSet 0 Decorate 10(d) Binding 3 + Decorate 10(d) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/spv.vulkan110.int16.frag.out b/Test/baseResults/spv.vulkan110.int16.frag.out index d5c83d52ff..4e435dfd58 100644 --- a/Test/baseResults/spv.vulkan110.int16.frag.out +++ b/Test/baseResults/spv.vulkan110.int16.frag.out @@ -77,10 +77,11 @@ spv.vulkan110.int16.frag Name 532 "block" Name 533 "si16" Name 534 "su16" - MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 24(Uniforms) Block - Decorate 26 DescriptorSet 0 + MemberDecorate 24(Uniforms) 0 Offset 0 Decorate 26 Binding 0 + Decorate 26 DescriptorSet 0 + Decorate 530(Block) Block MemberDecorate 530(Block) 0 Offset 0 MemberDecorate 530(Block) 1 Offset 4 MemberDecorate 530(Block) 2 Offset 8 @@ -89,9 +90,8 @@ spv.vulkan110.int16.frag MemberDecorate 530(Block) 5 Offset 28 MemberDecorate 530(Block) 6 Offset 32 MemberDecorate 530(Block) 7 Offset 40 - Decorate 530(Block) Block - Decorate 532(block) DescriptorSet 0 Decorate 532(block) Binding 1 + Decorate 532(block) DescriptorSet 0 Decorate 533(si16) SpecId 100 Decorate 534(su16) SpecId 101 2: TypeVoid diff --git a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out index ab88c581d3..c9231ea08f 100644 --- a/Test/baseResults/spv.vulkan110.storageBuffer.vert.out +++ b/Test/baseResults/spv.vulkan110.storageBuffer.vert.out @@ -21,19 +21,19 @@ spv.vulkan110.storageBuffer.vert Name 22 "bb" MemberName 22(bb) 0 "b" Name 24 "bbi" + Decorate 11(gl_PerVertex) Block MemberDecorate 11(gl_PerVertex) 0 BuiltIn Position MemberDecorate 11(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 11(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 11(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 11(gl_PerVertex) Block - MemberDecorate 16(ub) 0 Offset 0 Decorate 16(ub) Block - Decorate 18(ubi) DescriptorSet 0 + MemberDecorate 16(ub) 0 Offset 0 Decorate 18(ubi) Binding 0 - MemberDecorate 22(bb) 0 Offset 0 + Decorate 18(ubi) DescriptorSet 0 Decorate 22(bb) Block - Decorate 24(bbi) DescriptorSet 0 + MemberDecorate 22(bb) 0 Offset 0 Decorate 24(bbi) Binding 1 + Decorate 24(bbi) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.xfb.vert.out b/Test/baseResults/spv.xfb.vert.out index 4283e2002a..e76e6b35bd 100644 --- a/Test/baseResults/spv.xfb.vert.out +++ b/Test/baseResults/spv.xfb.vert.out @@ -20,23 +20,23 @@ spv.xfb.vert Name 14 "" Name 15 "out4" Decorate 8(out1) Location 0 + Decorate 8(out1) Offset 12 Decorate 8(out1) XfbBuffer 3 Decorate 8(out1) XfbStride 48 - Decorate 8(out1) Offset 12 - MemberDecorate 9(outXfb) 0 Offset 8 Decorate 9(outXfb) Block + MemberDecorate 9(outXfb) 0 Offset 8 Decorate 11 Location 1 Decorate 11 XfbBuffer 2 Decorate 11 XfbStride 32 - MemberDecorate 12(outXfb2) 0 Offset 60 Decorate 12(outXfb2) Block + MemberDecorate 12(outXfb2) 0 Offset 60 Decorate 14 Location 3 Decorate 14 XfbBuffer 1 Decorate 14 XfbStride 64 Decorate 15(out4) Location 4 + Decorate 15(out4) Offset 4 Decorate 15(out4) XfbBuffer 0 Decorate 15(out4) XfbStride 8 - Decorate 15(out4) Offset 4 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.xfb2.vert.out b/Test/baseResults/spv.xfb2.vert.out index b4b09bd0e3..a681fd3e30 100644 --- a/Test/baseResults/spv.xfb2.vert.out +++ b/Test/baseResults/spv.xfb2.vert.out @@ -19,17 +19,17 @@ spv.xfb2.vert MemberName 17(ComponentsBlock) 0 "c1" MemberName 17(ComponentsBlock) 1 "c2" Name 19 "components" - MemberDecorate 8(gl_PerVertex) 0 Offset 16 - MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position Decorate 8(gl_PerVertex) Block + MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 8(gl_PerVertex) 0 Offset 16 Decorate 10 XfbBuffer 3 Decorate 10 XfbStride 32 Decorate 14(position) Location 0 + Decorate 17(ComponentsBlock) Block MemberDecorate 17(ComponentsBlock) 0 Offset 0 MemberDecorate 17(ComponentsBlock) 1 Offset 16 - Decorate 17(ComponentsBlock) Block - Decorate 19(components) DescriptorSet 0 Decorate 19(components) Binding 5 + Decorate 19(components) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.xfb3.vert.out b/Test/baseResults/spv.xfb3.vert.out index a7e885660a..25e031a32d 100644 --- a/Test/baseResults/spv.xfb3.vert.out +++ b/Test/baseResults/spv.xfb3.vert.out @@ -19,17 +19,17 @@ spv.xfb3.vert MemberName 17(ComponentsBlock) 0 "c1" MemberName 17(ComponentsBlock) 1 "c2" Name 19 "components" - MemberDecorate 8(gl_PerVertex) 0 Offset 16 - MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position Decorate 8(gl_PerVertex) Block + MemberDecorate 8(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 8(gl_PerVertex) 0 Offset 16 Decorate 10 XfbBuffer 3 Decorate 10 XfbStride 80 Decorate 14(position) Location 0 + Decorate 17(ComponentsBlock) Block MemberDecorate 17(ComponentsBlock) 0 Offset 0 MemberDecorate 17(ComponentsBlock) 1 Offset 16 - Decorate 17(ComponentsBlock) Block - Decorate 19(components) DescriptorSet 0 Decorate 19(components) Binding 5 + Decorate 19(components) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out index eb911002a5..23110016f9 100644 --- a/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out +++ b/Test/baseResults/spv.xfbOffsetOnBlockMembersAssignment.vert.out @@ -23,17 +23,17 @@ spv.xfbOffsetOnBlockMembersAssignment.vert Name 27 "" Name 31 "gl_VertexID" Name 32 "gl_InstanceID" + Decorate 8(block2) Block MemberDecorate 8(block2) 0 Offset 0 MemberDecorate 8(block2) 1 Offset 4 - Decorate 8(block2) Block Decorate 10 Location 5 Decorate 10 XfbBuffer 2 Decorate 10 XfbStride 20 + Decorate 25(gl_PerVertex) Block MemberDecorate 25(gl_PerVertex) 0 BuiltIn Position MemberDecorate 25(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 25(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 25(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 25(gl_PerVertex) Block Decorate 27 XfbBuffer 0 Decorate 27 XfbStride 0 Decorate 31(gl_VertexID) BuiltIn VertexId diff --git a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out index 467a5aec46..c073ebec70 100644 --- a/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out +++ b/Test/baseResults/spv.xfbOffsetOnStructMembersAssignment.vert.out @@ -28,18 +28,18 @@ spv.xfbOffsetOnStructMembersAssignment.vert Name 38 "gl_VertexID" Name 39 "gl_InstanceID" Decorate 9(s1) Location 0 + Decorate 9(s1) Offset 16 Decorate 9(s1) XfbBuffer 2 Decorate 9(s1) XfbStride 24 - Decorate 9(s1) Offset 16 Decorate 21(s2) Location 5 + Decorate 21(s2) Offset 8 Decorate 21(s2) XfbBuffer 1 Decorate 21(s2) XfbStride 28 - Decorate 21(s2) Offset 8 + Decorate 32(gl_PerVertex) Block MemberDecorate 32(gl_PerVertex) 0 BuiltIn Position MemberDecorate 32(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 32(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 32(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 32(gl_PerVertex) Block Decorate 34 XfbBuffer 0 Decorate 34 XfbStride 0 Decorate 38(gl_VertexID) BuiltIn VertexId diff --git a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out index 633558d472..b63226e3f1 100644 --- a/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out +++ b/Test/baseResults/spv.xfbOverlapOffsetCheckWithBlockAndMember.vert.out @@ -25,19 +25,19 @@ spv.xfbOverlapOffsetCheckWithBlockAndMember.vert Name 33 "" Name 37 "gl_VertexID" Name 38 "gl_InstanceID" + Decorate 8(block2) Block MemberDecorate 8(block2) 0 Offset 12 MemberDecorate 8(block2) 1 Offset 28 MemberDecorate 8(block2) 2 Offset 40 MemberDecorate 8(block2) 3 Offset 56 - Decorate 8(block2) Block Decorate 10 Location 5 Decorate 10 XfbBuffer 3 Decorate 10 XfbStride 72 + Decorate 31(gl_PerVertex) Block MemberDecorate 31(gl_PerVertex) 0 BuiltIn Position MemberDecorate 31(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 31(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 31(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 31(gl_PerVertex) Block Decorate 33 XfbBuffer 0 Decorate 33 XfbStride 0 Decorate 37(gl_VertexID) BuiltIn VertexId diff --git a/Test/baseResults/spv.xfbStrideJustOnce.vert.out b/Test/baseResults/spv.xfbStrideJustOnce.vert.out index 8bf1f0d999..0548aee6ea 100644 --- a/Test/baseResults/spv.xfbStrideJustOnce.vert.out +++ b/Test/baseResults/spv.xfbStrideJustOnce.vert.out @@ -27,11 +27,11 @@ spv.xfbStrideJustOnce.vert Decorate 10 Location 5 Decorate 10 XfbBuffer 2 Decorate 10 XfbStride 20 + Decorate 25(gl_PerVertex) Block MemberDecorate 25(gl_PerVertex) 0 BuiltIn Position MemberDecorate 25(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 25(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 25(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 25(gl_PerVertex) Block Decorate 27 XfbBuffer 0 Decorate 27 XfbStride 0 Decorate 31(gl_VertexID) BuiltIn VertexId diff --git a/Test/baseResults/vk.relaxed.changeSet.vert.out b/Test/baseResults/vk.relaxed.changeSet.vert.out index d7502a3ad9..339112d304 100755 --- a/Test/baseResults/vk.relaxed.changeSet.vert.out +++ b/Test/baseResults/vk.relaxed.changeSet.vert.out @@ -168,17 +168,17 @@ gl_FragCoord origin is upper left Decorate 11(aColor) Location 2 Decorate 15(UV) Location 1 Decorate 17(aUV) Location 1 + Decorate 22(gl_PerVertex) Block MemberDecorate 22(gl_PerVertex) 0 BuiltIn Position MemberDecorate 22(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 22(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 22(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 22(gl_PerVertex) Block + Decorate 28(gl_DefaultUniformBlock) Block MemberDecorate 28(gl_DefaultUniformBlock) 0 ColMajor - MemberDecorate 28(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 28(gl_DefaultUniformBlock) 0 MatrixStride 16 - Decorate 28(gl_DefaultUniformBlock) Block - Decorate 30 DescriptorSet 0 + MemberDecorate 28(gl_DefaultUniformBlock) 0 Offset 0 Decorate 30 Binding 0 + Decorate 30 DescriptorSet 0 Decorate 34(aPos) Location 0 Decorate 44(gl_VertexIndex) BuiltIn VertexIndex Decorate 45(gl_InstanceIndex) BuiltIn InstanceIndex @@ -248,8 +248,8 @@ gl_FragCoord origin is upper left Name 20 "UV" Decorate 9(fragColor) Location 0 Decorate 11(Color) Location 0 - Decorate 16(sTexture) DescriptorSet 1 Decorate 16(sTexture) Binding 0 + Decorate 16(sTexture) DescriptorSet 1 Decorate 20(UV) Location 1 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/vk.relaxed.frag.out b/Test/baseResults/vk.relaxed.frag.out index 7aed81385f..105eced6a9 100644 --- a/Test/baseResults/vk.relaxed.frag.out +++ b/Test/baseResults/vk.relaxed.frag.out @@ -728,31 +728,31 @@ gl_FragCoord origin is upper left Name 196 "structUniform.samplers.tn[2]" Name 197 "structUniform.samplers.tn[3]" Name 198 "param" + Decorate 34(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 0 Offset 0 MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Volatile MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Coherent MemberDecorate 34(gl_AtomicCounterBlock_0) 1 Offset 4 - Decorate 34(gl_AtomicCounterBlock_0) BufferBlock - Decorate 36 DescriptorSet 0 Decorate 36 Binding 9 + Decorate 36 DescriptorSet 0 + Decorate 78(gl_AtomicCounterBlock_1) BufferBlock MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Volatile MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Coherent MemberDecorate 78(gl_AtomicCounterBlock_1) 0 Offset 0 - Decorate 78(gl_AtomicCounterBlock_1) BufferBlock - Decorate 80 DescriptorSet 0 Decorate 80 Binding 10 + Decorate 80 DescriptorSet 0 + Decorate 89(UniformBlock) Block MemberDecorate 89(UniformBlock) 0 Offset 0 MemberDecorate 89(UniformBlock) 1 Offset 16 - Decorate 89(UniformBlock) Block - Decorate 91 DescriptorSet 0 Decorate 91 Binding 7 + Decorate 91 DescriptorSet 0 + Decorate 95(BufferBlock) BufferBlock MemberDecorate 95(BufferBlock) 0 Offset 0 MemberDecorate 95(BufferBlock) 1 Offset 16 - Decorate 95(BufferBlock) BufferBlock - Decorate 97(bufferInstance) DescriptorSet 0 Decorate 97(bufferInstance) Binding 8 + Decorate 97(bufferInstance) DescriptorSet 0 Decorate 103 ArrayStride 16 Decorate 104 ArrayStride 16 MemberDecorate 105(SamplerArray) 0 Offset 0 @@ -761,27 +761,27 @@ gl_FragCoord origin is upper left MemberDecorate 106(e) 2 Offset 12 MemberDecorate 106(e) 3 Offset 16 MemberDecorate 106(e) 4 Offset 32 + Decorate 107(gl_DefaultUniformBlock) Block MemberDecorate 107(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 107(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 107(gl_DefaultUniformBlock) 2 Offset 24 MemberDecorate 107(gl_DefaultUniformBlock) 3 Offset 32 MemberDecorate 107(gl_DefaultUniformBlock) 4 Offset 192 - Decorate 107(gl_DefaultUniformBlock) Block - Decorate 109 DescriptorSet 0 Decorate 109 Binding 0 - Decorate 151(t1) DescriptorSet 0 + Decorate 109 DescriptorSet 0 Decorate 151(t1) Binding 6 - Decorate 157(structUniform.t0) DescriptorSet 0 + Decorate 151(t1) DescriptorSet 0 Decorate 157(structUniform.t0) Binding 1 + Decorate 157(structUniform.t0) DescriptorSet 0 Decorate 190(o) Location 0 - Decorate 194(structUniform.samplers.tn[0]) DescriptorSet 0 Decorate 194(structUniform.samplers.tn[0]) Binding 2 - Decorate 195(structUniform.samplers.tn[1]) DescriptorSet 0 + Decorate 194(structUniform.samplers.tn[0]) DescriptorSet 0 Decorate 195(structUniform.samplers.tn[1]) Binding 3 - Decorate 196(structUniform.samplers.tn[2]) DescriptorSet 0 + Decorate 195(structUniform.samplers.tn[1]) DescriptorSet 0 Decorate 196(structUniform.samplers.tn[2]) Binding 4 - Decorate 197(structUniform.samplers.tn[3]) DescriptorSet 0 + Decorate 196(structUniform.samplers.tn[2]) DescriptorSet 0 Decorate 197(structUniform.samplers.tn[3]) Binding 5 + Decorate 197(structUniform.samplers.tn[3]) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeInt 32 0 diff --git a/Test/baseResults/vk.relaxed.link1.frag.out b/Test/baseResults/vk.relaxed.link1.frag.out index 161d929bdc..7b114a784b 100644 --- a/Test/baseResults/vk.relaxed.link1.frag.out +++ b/Test/baseResults/vk.relaxed.link1.frag.out @@ -378,6 +378,7 @@ gl_FragCoord origin is upper left Name 68 "o" Name 72 "j" Name 79 "v" + Decorate 16(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 0 Offset 0 @@ -387,18 +388,17 @@ gl_FragCoord origin is upper left MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 16(gl_AtomicCounterBlock_0) 2 Offset 8 - Decorate 16(gl_AtomicCounterBlock_0) BufferBlock - Decorate 18 DescriptorSet 0 Decorate 18 Binding 1 + Decorate 18 DescriptorSet 0 + Decorate 35(gl_DefaultUniformBlock) Block MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24 MemberDecorate 35(gl_DefaultUniformBlock) 3 Offset 32 MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48 MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64 - Decorate 35(gl_DefaultUniformBlock) Block - Decorate 37 DescriptorSet 0 Decorate 37 Binding 0 + Decorate 37 DescriptorSet 0 Decorate 68(o) Location 0 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out index 37532ed603..d7d8be2f23 100755 --- a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out +++ b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out @@ -7325,71 +7325,72 @@ gl_FragCoord origin is upper left Name 934 "mTD3DImageOutputs" Name 938 "mTDCubeImageOutputs" Decorate 207(uv) Location 3 + Decorate 214(Vertex) Block MemberDecorate 214(Vertex) 3 Flat MemberDecorate 214(Vertex) 4 Flat - Decorate 214(Vertex) Block Decorate 216(oVert) Location 0 Decorate 226(P) Location 0 + Decorate 236(gl_PerVertex) Block MemberDecorate 236(gl_PerVertex) 0 BuiltIn Position MemberDecorate 236(gl_PerVertex) 1 BuiltIn PointSize MemberDecorate 236(gl_PerVertex) 2 BuiltIn ClipDistance MemberDecorate 236(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 236(gl_PerVertex) Block Decorate 256(Cd) Location 2 MemberDecorate 269(TDMatrix) 0 ColMajor - MemberDecorate 269(TDMatrix) 0 Offset 0 MemberDecorate 269(TDMatrix) 0 MatrixStride 16 + MemberDecorate 269(TDMatrix) 0 Offset 0 MemberDecorate 269(TDMatrix) 1 ColMajor - MemberDecorate 269(TDMatrix) 1 Offset 64 MemberDecorate 269(TDMatrix) 1 MatrixStride 16 + MemberDecorate 269(TDMatrix) 1 Offset 64 MemberDecorate 269(TDMatrix) 2 ColMajor - MemberDecorate 269(TDMatrix) 2 Offset 128 MemberDecorate 269(TDMatrix) 2 MatrixStride 16 + MemberDecorate 269(TDMatrix) 2 Offset 128 MemberDecorate 269(TDMatrix) 3 ColMajor - MemberDecorate 269(TDMatrix) 3 Offset 192 MemberDecorate 269(TDMatrix) 3 MatrixStride 16 + MemberDecorate 269(TDMatrix) 3 Offset 192 MemberDecorate 269(TDMatrix) 4 ColMajor - MemberDecorate 269(TDMatrix) 4 Offset 256 MemberDecorate 269(TDMatrix) 4 MatrixStride 16 + MemberDecorate 269(TDMatrix) 4 Offset 256 MemberDecorate 269(TDMatrix) 5 ColMajor - MemberDecorate 269(TDMatrix) 5 Offset 320 MemberDecorate 269(TDMatrix) 5 MatrixStride 16 + MemberDecorate 269(TDMatrix) 5 Offset 320 MemberDecorate 269(TDMatrix) 6 ColMajor - MemberDecorate 269(TDMatrix) 6 Offset 384 MemberDecorate 269(TDMatrix) 6 MatrixStride 16 + MemberDecorate 269(TDMatrix) 6 Offset 384 MemberDecorate 269(TDMatrix) 7 ColMajor - MemberDecorate 269(TDMatrix) 7 Offset 448 MemberDecorate 269(TDMatrix) 7 MatrixStride 16 + MemberDecorate 269(TDMatrix) 7 Offset 448 MemberDecorate 269(TDMatrix) 8 ColMajor - MemberDecorate 269(TDMatrix) 8 Offset 512 MemberDecorate 269(TDMatrix) 8 MatrixStride 16 + MemberDecorate 269(TDMatrix) 8 Offset 512 MemberDecorate 269(TDMatrix) 9 ColMajor - MemberDecorate 269(TDMatrix) 9 Offset 576 MemberDecorate 269(TDMatrix) 9 MatrixStride 16 + MemberDecorate 269(TDMatrix) 9 Offset 576 MemberDecorate 269(TDMatrix) 10 ColMajor - MemberDecorate 269(TDMatrix) 10 Offset 640 MemberDecorate 269(TDMatrix) 10 MatrixStride 16 + MemberDecorate 269(TDMatrix) 10 Offset 640 MemberDecorate 269(TDMatrix) 11 ColMajor - MemberDecorate 269(TDMatrix) 11 Offset 704 MemberDecorate 269(TDMatrix) 11 MatrixStride 16 + MemberDecorate 269(TDMatrix) 11 Offset 704 MemberDecorate 269(TDMatrix) 12 ColMajor - MemberDecorate 269(TDMatrix) 12 Offset 768 MemberDecorate 269(TDMatrix) 12 MatrixStride 16 + MemberDecorate 269(TDMatrix) 12 Offset 768 MemberDecorate 269(TDMatrix) 13 ColMajor - MemberDecorate 269(TDMatrix) 13 Offset 832 MemberDecorate 269(TDMatrix) 13 MatrixStride 16 + MemberDecorate 269(TDMatrix) 13 Offset 832 MemberDecorate 269(TDMatrix) 14 ColMajor - MemberDecorate 269(TDMatrix) 14 Offset 880 MemberDecorate 269(TDMatrix) 14 MatrixStride 16 + MemberDecorate 269(TDMatrix) 14 Offset 880 MemberDecorate 269(TDMatrix) 15 ColMajor - MemberDecorate 269(TDMatrix) 15 Offset 928 MemberDecorate 269(TDMatrix) 15 MatrixStride 16 + MemberDecorate 269(TDMatrix) 15 Offset 928 Decorate 270 ArrayStride 976 - MemberDecorate 271(TDMatricesBlock) 0 Offset 0 Decorate 271(TDMatricesBlock) Block - Decorate 273 DescriptorSet 0 + MemberDecorate 271(TDMatricesBlock) 0 Offset 0 Decorate 273 Binding 1 + Decorate 273 DescriptorSet 0 Decorate 297(gl_InstanceIndex) BuiltIn InstanceIndex + Decorate 299(gl_DefaultUniformBlock) Block MemberDecorate 299(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 299(gl_DefaultUniformBlock) 1 Offset 4 MemberDecorate 299(gl_DefaultUniformBlock) 2 Offset 8 @@ -7398,34 +7399,33 @@ gl_FragCoord origin is upper left MemberDecorate 299(gl_DefaultUniformBlock) 5 Offset 32 MemberDecorate 299(gl_DefaultUniformBlock) 6 Offset 48 MemberDecorate 299(gl_DefaultUniformBlock) 7 Offset 64 - Decorate 299(gl_DefaultUniformBlock) Block - Decorate 301 DescriptorSet 0 Decorate 301 Binding 0 - Decorate 371(sTDInstanceTexCoord) DescriptorSet 0 + Decorate 301 DescriptorSet 0 Decorate 371(sTDInstanceTexCoord) Binding 16 - Decorate 400(sTDInstanceT) DescriptorSet 0 + Decorate 371(sTDInstanceTexCoord) DescriptorSet 0 Decorate 400(sTDInstanceT) Binding 15 - Decorate 665(sTDInstanceColor) DescriptorSet 0 + Decorate 400(sTDInstanceT) DescriptorSet 0 Decorate 665(sTDInstanceColor) Binding 17 + Decorate 665(sTDInstanceColor) DescriptorSet 0 MemberDecorate 896(TDCameraInfo) 0 Offset 0 MemberDecorate 896(TDCameraInfo) 1 Offset 16 MemberDecorate 896(TDCameraInfo) 2 Offset 32 MemberDecorate 896(TDCameraInfo) 3 Offset 48 Decorate 897 ArrayStride 64 - MemberDecorate 898(TDCameraInfoBlock) 0 Offset 0 Decorate 898(TDCameraInfoBlock) Block - Decorate 900 DescriptorSet 0 + MemberDecorate 898(TDCameraInfoBlock) 0 Offset 0 Decorate 900 Binding 0 + Decorate 900 DescriptorSet 0 MemberDecorate 901(TDGeneral) 0 Offset 0 MemberDecorate 901(TDGeneral) 1 Offset 16 MemberDecorate 901(TDGeneral) 2 Offset 32 MemberDecorate 901(TDGeneral) 3 Offset 48 MemberDecorate 901(TDGeneral) 4 Offset 64 MemberDecorate 901(TDGeneral) 5 Offset 80 - MemberDecorate 902(TDGeneralBlock) 0 Offset 0 Decorate 902(TDGeneralBlock) Block - Decorate 904 DescriptorSet 0 + MemberDecorate 902(TDGeneralBlock) 0 Offset 0 Decorate 904 Binding 0 + Decorate 904 DescriptorSet 0 Decorate 905(N) Location 1 Decorate 906(gl_VertexIndex) BuiltIn VertexIndex MemberDecorate 907(TDLight) 0 Offset 0 @@ -7437,44 +7437,44 @@ gl_FragCoord origin is upper left MemberDecorate 907(TDLight) 6 Offset 96 MemberDecorate 907(TDLight) 7 Offset 112 MemberDecorate 907(TDLight) 8 ColMajor - MemberDecorate 907(TDLight) 8 Offset 128 MemberDecorate 907(TDLight) 8 MatrixStride 16 + MemberDecorate 907(TDLight) 8 Offset 128 MemberDecorate 907(TDLight) 9 ColMajor - MemberDecorate 907(TDLight) 9 Offset 192 MemberDecorate 907(TDLight) 9 MatrixStride 16 + MemberDecorate 907(TDLight) 9 Offset 192 MemberDecorate 907(TDLight) 10 Offset 256 MemberDecorate 907(TDLight) 11 ColMajor - MemberDecorate 907(TDLight) 11 Offset 272 MemberDecorate 907(TDLight) 11 MatrixStride 16 + MemberDecorate 907(TDLight) 11 Offset 272 Decorate 908 ArrayStride 336 - MemberDecorate 909(TDLightBlock) 0 Offset 0 Decorate 909(TDLightBlock) Block - Decorate 911 DescriptorSet 0 + MemberDecorate 909(TDLightBlock) 0 Offset 0 Decorate 911 Binding 0 + Decorate 911 DescriptorSet 0 MemberDecorate 912(TDEnvLight) 0 Offset 0 MemberDecorate 912(TDEnvLight) 1 ColMajor - MemberDecorate 912(TDEnvLight) 1 Offset 16 MemberDecorate 912(TDEnvLight) 1 MatrixStride 16 + MemberDecorate 912(TDEnvLight) 1 Offset 16 Decorate 913 ArrayStride 64 - MemberDecorate 914(TDEnvLightBlock) 0 Offset 0 Decorate 914(TDEnvLightBlock) Block - Decorate 916 DescriptorSet 0 + MemberDecorate 914(TDEnvLightBlock) 0 Offset 0 Decorate 916 Binding 0 + Decorate 916 DescriptorSet 0 Decorate 918 ArrayStride 16 + Decorate 919(TDEnvLightBuffer) BufferBlock MemberDecorate 919(TDEnvLightBuffer) 0 Restrict MemberDecorate 919(TDEnvLightBuffer) 0 NonWritable MemberDecorate 919(TDEnvLightBuffer) 0 Offset 0 - Decorate 919(TDEnvLightBuffer) BufferBlock - Decorate 922(uTDEnvLightBuffers) DescriptorSet 0 Decorate 922(uTDEnvLightBuffers) Binding 0 - Decorate 926(mTD2DImageOutputs) DescriptorSet 0 + Decorate 922(uTDEnvLightBuffers) DescriptorSet 0 Decorate 926(mTD2DImageOutputs) Binding 0 - Decorate 930(mTD2DArrayImageOutputs) DescriptorSet 0 + Decorate 926(mTD2DImageOutputs) DescriptorSet 0 Decorate 930(mTD2DArrayImageOutputs) Binding 0 - Decorate 934(mTD3DImageOutputs) DescriptorSet 0 + Decorate 930(mTD2DArrayImageOutputs) DescriptorSet 0 Decorate 934(mTD3DImageOutputs) Binding 0 - Decorate 938(mTDCubeImageOutputs) DescriptorSet 0 + Decorate 934(mTD3DImageOutputs) DescriptorSet 0 Decorate 938(mTDCubeImageOutputs) Binding 0 + Decorate 938(mTDCubeImageOutputs) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 @@ -8999,12 +8999,13 @@ gl_FragCoord origin is upper left Name 1293 "TDEnvLightBuffer" MemberName 1293(TDEnvLightBuffer) 0 "shCoeffs" Name 1296 "uTDEnvLightBuffers" + Decorate 334(Vertex) Block MemberDecorate 334(Vertex) 3 Flat MemberDecorate 334(Vertex) 4 Flat - Decorate 334(Vertex) Block Decorate 336(iVert) Location 0 - Decorate 363(sColorMap) DescriptorSet 0 Decorate 363(sColorMap) Binding 2 + Decorate 363(sColorMap) DescriptorSet 0 + Decorate 374(gl_DefaultUniformBlock) Block MemberDecorate 374(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 374(gl_DefaultUniformBlock) 1 Offset 4 MemberDecorate 374(gl_DefaultUniformBlock) 2 Offset 8 @@ -9013,102 +9014,101 @@ gl_FragCoord origin is upper left MemberDecorate 374(gl_DefaultUniformBlock) 5 Offset 32 MemberDecorate 374(gl_DefaultUniformBlock) 6 Offset 48 MemberDecorate 374(gl_DefaultUniformBlock) 7 Offset 64 - Decorate 374(gl_DefaultUniformBlock) Block - Decorate 376 DescriptorSet 0 Decorate 376 Binding 0 + Decorate 376 DescriptorSet 0 Decorate 429(oFragColor) Location 0 - Decorate 456(sTDNoiseMap) DescriptorSet 0 Decorate 456(sTDNoiseMap) Binding 3 + Decorate 456(sTDNoiseMap) DescriptorSet 0 Decorate 458(gl_FragCoord) BuiltIn FragCoord Decorate 485(gl_FrontFacing) BuiltIn FrontFacing - Decorate 931(sTDInstanceTexCoord) DescriptorSet 0 Decorate 931(sTDInstanceTexCoord) Binding 16 - Decorate 958(sTDInstanceT) DescriptorSet 0 + Decorate 931(sTDInstanceTexCoord) DescriptorSet 0 Decorate 958(sTDInstanceT) Binding 15 - Decorate 1219(sTDInstanceColor) DescriptorSet 0 + Decorate 958(sTDInstanceT) DescriptorSet 0 Decorate 1219(sTDInstanceColor) Binding 17 + Decorate 1219(sTDInstanceColor) DescriptorSet 0 MemberDecorate 1253(TDMatrix) 0 ColMajor - MemberDecorate 1253(TDMatrix) 0 Offset 0 MemberDecorate 1253(TDMatrix) 0 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 0 Offset 0 MemberDecorate 1253(TDMatrix) 1 ColMajor - MemberDecorate 1253(TDMatrix) 1 Offset 64 MemberDecorate 1253(TDMatrix) 1 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 1 Offset 64 MemberDecorate 1253(TDMatrix) 2 ColMajor - MemberDecorate 1253(TDMatrix) 2 Offset 128 MemberDecorate 1253(TDMatrix) 2 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 2 Offset 128 MemberDecorate 1253(TDMatrix) 3 ColMajor - MemberDecorate 1253(TDMatrix) 3 Offset 192 MemberDecorate 1253(TDMatrix) 3 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 3 Offset 192 MemberDecorate 1253(TDMatrix) 4 ColMajor - MemberDecorate 1253(TDMatrix) 4 Offset 256 MemberDecorate 1253(TDMatrix) 4 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 4 Offset 256 MemberDecorate 1253(TDMatrix) 5 ColMajor - MemberDecorate 1253(TDMatrix) 5 Offset 320 MemberDecorate 1253(TDMatrix) 5 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 5 Offset 320 MemberDecorate 1253(TDMatrix) 6 ColMajor - MemberDecorate 1253(TDMatrix) 6 Offset 384 MemberDecorate 1253(TDMatrix) 6 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 6 Offset 384 MemberDecorate 1253(TDMatrix) 7 ColMajor - MemberDecorate 1253(TDMatrix) 7 Offset 448 MemberDecorate 1253(TDMatrix) 7 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 7 Offset 448 MemberDecorate 1253(TDMatrix) 8 ColMajor - MemberDecorate 1253(TDMatrix) 8 Offset 512 MemberDecorate 1253(TDMatrix) 8 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 8 Offset 512 MemberDecorate 1253(TDMatrix) 9 ColMajor - MemberDecorate 1253(TDMatrix) 9 Offset 576 MemberDecorate 1253(TDMatrix) 9 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 9 Offset 576 MemberDecorate 1253(TDMatrix) 10 ColMajor - MemberDecorate 1253(TDMatrix) 10 Offset 640 MemberDecorate 1253(TDMatrix) 10 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 10 Offset 640 MemberDecorate 1253(TDMatrix) 11 ColMajor - MemberDecorate 1253(TDMatrix) 11 Offset 704 MemberDecorate 1253(TDMatrix) 11 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 11 Offset 704 MemberDecorate 1253(TDMatrix) 12 ColMajor - MemberDecorate 1253(TDMatrix) 12 Offset 768 MemberDecorate 1253(TDMatrix) 12 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 12 Offset 768 MemberDecorate 1253(TDMatrix) 13 ColMajor - MemberDecorate 1253(TDMatrix) 13 Offset 832 MemberDecorate 1253(TDMatrix) 13 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 13 Offset 832 MemberDecorate 1253(TDMatrix) 14 ColMajor - MemberDecorate 1253(TDMatrix) 14 Offset 880 MemberDecorate 1253(TDMatrix) 14 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 14 Offset 880 MemberDecorate 1253(TDMatrix) 15 ColMajor - MemberDecorate 1253(TDMatrix) 15 Offset 928 MemberDecorate 1253(TDMatrix) 15 MatrixStride 16 + MemberDecorate 1253(TDMatrix) 15 Offset 928 Decorate 1254 ArrayStride 976 - MemberDecorate 1255(TDMatricesBlock) 0 Offset 0 Decorate 1255(TDMatricesBlock) Block - Decorate 1257 DescriptorSet 0 + MemberDecorate 1255(TDMatricesBlock) 0 Offset 0 Decorate 1257 Binding 1 + Decorate 1257 DescriptorSet 0 MemberDecorate 1258(TDCameraInfo) 0 Offset 0 MemberDecorate 1258(TDCameraInfo) 1 Offset 16 MemberDecorate 1258(TDCameraInfo) 2 Offset 32 MemberDecorate 1258(TDCameraInfo) 3 Offset 48 Decorate 1259 ArrayStride 64 - MemberDecorate 1260(TDCameraInfoBlock) 0 Offset 0 Decorate 1260(TDCameraInfoBlock) Block - Decorate 1262 DescriptorSet 0 + MemberDecorate 1260(TDCameraInfoBlock) 0 Offset 0 Decorate 1262 Binding 0 + Decorate 1262 DescriptorSet 0 MemberDecorate 1263(TDGeneral) 0 Offset 0 MemberDecorate 1263(TDGeneral) 1 Offset 16 MemberDecorate 1263(TDGeneral) 2 Offset 32 MemberDecorate 1263(TDGeneral) 3 Offset 48 MemberDecorate 1263(TDGeneral) 4 Offset 64 MemberDecorate 1263(TDGeneral) 5 Offset 80 - MemberDecorate 1264(TDGeneralBlock) 0 Offset 0 Decorate 1264(TDGeneralBlock) Block - Decorate 1266 DescriptorSet 0 + MemberDecorate 1264(TDGeneralBlock) 0 Offset 0 Decorate 1266 Binding 0 - Decorate 1270(sTDSineLookup) DescriptorSet 0 + Decorate 1266 DescriptorSet 0 Decorate 1270(sTDSineLookup) Binding 0 - Decorate 1271(sTDWhite2D) DescriptorSet 0 + Decorate 1270(sTDSineLookup) DescriptorSet 0 Decorate 1271(sTDWhite2D) Binding 0 - Decorate 1275(sTDWhite3D) DescriptorSet 0 + Decorate 1271(sTDWhite2D) DescriptorSet 0 Decorate 1275(sTDWhite3D) Binding 0 - Decorate 1276(sTDWhite2DArray) DescriptorSet 0 + Decorate 1275(sTDWhite3D) DescriptorSet 0 Decorate 1276(sTDWhite2DArray) Binding 0 - Decorate 1280(sTDWhiteCube) DescriptorSet 0 + Decorate 1276(sTDWhite2DArray) DescriptorSet 0 Decorate 1280(sTDWhiteCube) Binding 0 + Decorate 1280(sTDWhiteCube) DescriptorSet 0 MemberDecorate 1281(TDLight) 0 Offset 0 MemberDecorate 1281(TDLight) 1 Offset 16 MemberDecorate 1281(TDLight) 2 Offset 32 @@ -9118,36 +9118,36 @@ gl_FragCoord origin is upper left MemberDecorate 1281(TDLight) 6 Offset 96 MemberDecorate 1281(TDLight) 7 Offset 112 MemberDecorate 1281(TDLight) 8 ColMajor - MemberDecorate 1281(TDLight) 8 Offset 128 MemberDecorate 1281(TDLight) 8 MatrixStride 16 + MemberDecorate 1281(TDLight) 8 Offset 128 MemberDecorate 1281(TDLight) 9 ColMajor - MemberDecorate 1281(TDLight) 9 Offset 192 MemberDecorate 1281(TDLight) 9 MatrixStride 16 + MemberDecorate 1281(TDLight) 9 Offset 192 MemberDecorate 1281(TDLight) 10 Offset 256 MemberDecorate 1281(TDLight) 11 ColMajor - MemberDecorate 1281(TDLight) 11 Offset 272 MemberDecorate 1281(TDLight) 11 MatrixStride 16 + MemberDecorate 1281(TDLight) 11 Offset 272 Decorate 1282 ArrayStride 336 - MemberDecorate 1283(TDLightBlock) 0 Offset 0 Decorate 1283(TDLightBlock) Block - Decorate 1285 DescriptorSet 0 + MemberDecorate 1283(TDLightBlock) 0 Offset 0 Decorate 1285 Binding 0 + Decorate 1285 DescriptorSet 0 MemberDecorate 1286(TDEnvLight) 0 Offset 0 MemberDecorate 1286(TDEnvLight) 1 ColMajor - MemberDecorate 1286(TDEnvLight) 1 Offset 16 MemberDecorate 1286(TDEnvLight) 1 MatrixStride 16 + MemberDecorate 1286(TDEnvLight) 1 Offset 16 Decorate 1287 ArrayStride 64 - MemberDecorate 1288(TDEnvLightBlock) 0 Offset 0 Decorate 1288(TDEnvLightBlock) Block - Decorate 1290 DescriptorSet 0 + MemberDecorate 1288(TDEnvLightBlock) 0 Offset 0 Decorate 1290 Binding 0 + Decorate 1290 DescriptorSet 0 Decorate 1292 ArrayStride 16 + Decorate 1293(TDEnvLightBuffer) BufferBlock MemberDecorate 1293(TDEnvLightBuffer) 0 Restrict MemberDecorate 1293(TDEnvLightBuffer) 0 NonWritable MemberDecorate 1293(TDEnvLightBuffer) 0 Offset 0 - Decorate 1293(TDEnvLightBuffer) BufferBlock - Decorate 1296(uTDEnvLightBuffers) DescriptorSet 0 Decorate 1296(uTDEnvLightBuffers) Binding 0 + Decorate 1296(uTDEnvLightBuffers) DescriptorSet 0 2: TypeVoid 3: TypeFunction 2 6: TypeFloat 32 diff --git a/Test/baseResults/vk.relaxed.stagelink.vert.out b/Test/baseResults/vk.relaxed.stagelink.vert.out index a9b968312a..99da5419ca 100644 --- a/Test/baseResults/vk.relaxed.stagelink.vert.out +++ b/Test/baseResults/vk.relaxed.stagelink.vert.out @@ -465,6 +465,7 @@ gl_FragCoord origin is upper left Name 72 "gl_VertexIndex" Name 82 "gl_InstanceIndex" Name 90 "io" + Decorate 14(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0 @@ -474,10 +475,10 @@ gl_FragCoord origin is upper left MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8 - Decorate 14(gl_AtomicCounterBlock_0) BufferBlock - Decorate 16 DescriptorSet 0 Decorate 16 Binding 1 + Decorate 16 DescriptorSet 0 Decorate 34 ArrayStride 16 + Decorate 35(gl_DefaultUniformBlock) Block MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24 @@ -485,9 +486,8 @@ gl_FragCoord origin is upper left MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48 MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64 MemberDecorate 35(gl_DefaultUniformBlock) 6 Offset 128 - Decorate 35(gl_DefaultUniformBlock) Block - Decorate 37 DescriptorSet 0 Decorate 37 Binding 0 + Decorate 37 DescriptorSet 0 Decorate 72(gl_VertexIndex) BuiltIn VertexIndex Decorate 82(gl_InstanceIndex) BuiltIn InstanceIndex Decorate 90(io) Location 0 @@ -619,6 +619,7 @@ gl_FragCoord origin is upper left Name 37 "" Name 68 "o" Name 70 "io" + Decorate 14(gl_AtomicCounterBlock_0) BufferBlock MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 0 Offset 0 @@ -628,10 +629,10 @@ gl_FragCoord origin is upper left MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Volatile MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Coherent MemberDecorate 14(gl_AtomicCounterBlock_0) 2 Offset 8 - Decorate 14(gl_AtomicCounterBlock_0) BufferBlock - Decorate 16 DescriptorSet 0 Decorate 16 Binding 1 + Decorate 16 DescriptorSet 0 Decorate 34 ArrayStride 16 + Decorate 35(gl_DefaultUniformBlock) Block MemberDecorate 35(gl_DefaultUniformBlock) 0 Offset 0 MemberDecorate 35(gl_DefaultUniformBlock) 1 Offset 16 MemberDecorate 35(gl_DefaultUniformBlock) 2 Offset 24 @@ -639,9 +640,8 @@ gl_FragCoord origin is upper left MemberDecorate 35(gl_DefaultUniformBlock) 4 Offset 48 MemberDecorate 35(gl_DefaultUniformBlock) 5 Offset 64 MemberDecorate 35(gl_DefaultUniformBlock) 6 Offset 128 - Decorate 35(gl_DefaultUniformBlock) Block - Decorate 37 DescriptorSet 0 Decorate 37 Binding 0 + Decorate 37 DescriptorSet 0 Decorate 68(o) Location 0 Decorate 70(io) Location 0 2: TypeVoid diff --git a/Test/spv.multiple.var.same.const.frag b/Test/spv.multiple.var.same.const.frag new file mode 100644 index 0000000000..ead9a3cf2b --- /dev/null +++ b/Test/spv.multiple.var.same.const.frag @@ -0,0 +1,6 @@ +#version 320 es +precision mediump float; +const float var0 = 1e-6; +const float var1 = 1e-6; +void main(){} + diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 77e9cccfd3..8bf679d4bc 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -551,6 +551,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.floatFetch.frag", "spv.atomicRvalue.error.vert", "spv.sampledImageBlock.frag", + "spv.multiple.var.same.const.frag", })), FileNameAsCustomTestSuffix ); From 8a5086efb01ce204a0060ae8fbe112aba935d44f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 1 Jul 2024 06:16:32 +0000 Subject: [PATCH 510/594] Bump github/codeql-action from 3.25.10 to 3.25.11 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.10 to 3.25.11. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/23acc5c183826b7a8a97bce3cecc52db901f8251...b611370bb5703a7efb587f9d136a52ea24c5c38c) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 06ba4a062c..1adff61c68 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@23acc5c183826b7a8a97bce3cecc52db901f8251 # v3.25.10 + uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 with: sarif_file: results.sarif From 85262fb20e243743a70e49ee5d418c96556c2b38 Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Tue, 2 Jul 2024 06:31:18 +0000 Subject: [PATCH 511/594] Fill correct file name to OpDebugFunction and add line info for parameters' OpDebugDeclare --- SPIRV/GlslangToSpv.cpp | 15 +- SPIRV/SpvBuilder.cpp | 5 +- SPIRV/SpvBuilder.h | 9 +- Test/baseResults/hlsl.pp.line2.frag.out | 74 +- Test/baseResults/hlsl.pp.line4.frag.out | 30 +- Test/baseResults/spv.debuginfo.glsl.frag.out | 1086 ++++++------- Test/baseResults/spv.debuginfo.hlsl.comp.out | 542 +++---- Test/baseResults/spv.debuginfo.hlsl.frag.out | 1416 ++++++++--------- Test/baseResults/spv.debuginfo.hlsl.geom.out | 224 +-- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 1378 ++++++++-------- Test/baseResults/spv.debuginfo.hlsl.tese.out | 466 +++--- Test/baseResults/spv.debuginfo.hlsl.vert.out | 242 +-- .../spv.debuginfo.include.glsl.frag.out | 185 ++- Test/baseResults/spv.pp.line.frag.out | 74 +- 14 files changed, 2875 insertions(+), 2871 deletions(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 0fd79b1a4e..dc0a4f9fdc 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -5518,12 +5518,16 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF glslang::TIntermAggregate* glslFunction = glslFunctions[f]->getAsAggregate(); if (! glslFunction || glslFunction->getOp() != glslang::EOpFunction) continue; + + builder.setDebugSourceLocation(glslFunction->getLoc().line, glslFunction->getLoc().getFilename()); + if (isShaderEntryPoint(glslFunction)) { + // For HLSL, the entry function is actually a compiler generated function to resolve the difference of + // entry function signature between HLSL and SPIR-V. So we don't emit debug information for that. if (glslangIntermediate->getSource() != glslang::EShSourceHlsl) { - builder.setupDebugFunctionEntry(shaderEntry, glslangIntermediate->getEntryPointMangledName().c_str(), - glslFunction->getLoc().line, - std::vector(), // main function has no param - std::vector()); + builder.setupFunctionDebugInfo(shaderEntry, glslangIntermediate->getEntryPointMangledName().c_str(), + std::vector(), // main function has no param + std::vector()); } continue; } @@ -5576,8 +5580,7 @@ void TGlslangToSpvTraverser::makeFunctions(const glslang::TIntermSequence& glslF TranslatePrecisionDecoration(glslFunction->getType()), convertGlslangToSpvType(glslFunction->getType()), glslFunction->getName().c_str(), convertGlslangLinkageToSpv(glslFunction->getLinkType()), paramTypes, paramDecorations, &functionBlock); - builder.setupDebugFunctionEntry(function, glslFunction->getName().c_str(), glslFunction->getLoc().line, - paramTypes, paramNames); + builder.setupFunctionDebugInfo(function, glslFunction->getName().c_str(), paramTypes, paramNames); if (implicitThis) function->setImplicitThis(); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index 738c916919..def3fa2eda 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2236,14 +2236,13 @@ Function* Builder::makeFunctionEntry(Decoration precision, Id returnType, const return function; } -void Builder::setupDebugFunctionEntry(Function* function, const char* name, int line, const std::vector& paramTypes, - const std::vector& paramNames) +void Builder::setupFunctionDebugInfo(Function* function, const char* name, const std::vector& paramTypes, + const std::vector& paramNames) { if (!emitNonSemanticShaderDebugInfo) return; - currentLine = line; Id nameId = getStringId(unmangleFunctionName(name)); Id funcTypeId = function->getFuncTypeId(); assert(debugId[funcTypeId] != 0); diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index ab4d5abe30..f86dd81b3b 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -247,9 +247,12 @@ class Builder { Id makeDebugFunction(Function* function, Id nameId, Id funcTypeId); Id makeDebugLexicalBlock(uint32_t line); std::string unmangleFunctionName(std::string const& name) const; - void setupDebugFunctionEntry(Function* function, const char* name, int line, - const std::vector& paramTypes, - const std::vector& paramNames); + + // Initialize non-semantic debug information for a function, including those of: + // - The function definition + // - The function parameters + void setupFunctionDebugInfo(Function* function, const char* name, const std::vector& paramTypes, + const std::vector& paramNames); // accelerationStructureNV type Id makeAccelerationStructureType(); diff --git a/Test/baseResults/hlsl.pp.line2.frag.out b/Test/baseResults/hlsl.pp.line2.frag.out index 48697a6e56..0d8131caf3 100644 --- a/Test/baseResults/hlsl.pp.line2.frag.out +++ b/Test/baseResults/hlsl.pp.line2.frag.out @@ -9,7 +9,7 @@ hlsl.pp.line2.frag EntryPoint Fragment 5 "MainPs" 71 75 ExecutionMode 5 OriginUpperLeft 1: String "hlsl.pp.line2.frag" - 17: String "foo.frag" + 7: String "foo.frag" 32: String "foo.h" 42: String "foo2.h" Source HLSL 500 1 "// OpModuleProcessed auto-map-locations @@ -62,12 +62,12 @@ PS_OUTPUT MainPs ( PS_INPUT i ) " Name 5 "MainPs" - Name 9 "PS_INPUT" - MemberName 9(PS_INPUT) 0 "vTextureCoords" - Name 12 "PS_OUTPUT" - MemberName 12(PS_OUTPUT) 0 "vColor" - Name 15 "@MainPs(struct-PS_INPUT-vf21;" - Name 14 "i" + Name 10 "PS_INPUT" + MemberName 10(PS_INPUT) 0 "vTextureCoords" + Name 13 "PS_OUTPUT" + MemberName 13(PS_OUTPUT) 0 "vColor" + Name 16 "@MainPs(struct-PS_INPUT-vf21;" + Name 15 "i" Name 19 "PerViewConstantBuffer_t" MemberName 19(PerViewConstantBuffer_t) 0 "g_nDataIdx" MemberName 19(PerViewConstantBuffer_t) 1 "g_nDataIdx2" @@ -93,13 +93,13 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Decorate 75(@entryPointOutput.vColor) Location 0 3: TypeVoid 4: TypeFunction 3 - 7: TypeFloat 32 - 8: TypeVector 7(float) 2 - 9(PS_INPUT): TypeStruct 8(fvec2) - 10: TypePointer Function 9(PS_INPUT) - 11: TypeVector 7(float) 4 - 12(PS_OUTPUT): TypeStruct 11(fvec4) - 13: TypeFunction 12(PS_OUTPUT) 10(ptr) + 8: TypeFloat 32 + 9: TypeVector 8(float) 2 + 10(PS_INPUT): TypeStruct 9(fvec2) + 11: TypePointer Function 10(PS_INPUT) + 12: TypeVector 8(float) 4 + 13(PS_OUTPUT): TypeStruct 12(fvec4) + 14: TypeFunction 13(PS_OUTPUT) 11(ptr) 18: TypeInt 32 0 19(PerViewConstantBuffer_t): TypeStruct 18(int) 18(int) 18(int) 20: TypePointer PushConstant 19(PerViewConstantBuffer_t) @@ -112,8 +112,8 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 33: TypePointer Function 18(int) 35: 22(int) Constant 0 39: 22(int) Constant 1 - 43: TypePointer Function 12(PS_OUTPUT) - 45: TypeImage 7(float) 2D sampled format:Unknown + 43: TypePointer Function 13(PS_OUTPUT) + 45: TypeImage 8(float) 2D sampled format:Unknown 46: 18(int) Constant 128 47: TypeArray 45 46 48: TypePointer UniformConstant 47 @@ -123,35 +123,35 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 55: TypePointer UniformConstant 54 56(g_sAniso): 55(ptr) Variable UniformConstant 58: TypeSampledImage 45 - 60: TypePointer Function 8(fvec2) - 64: TypePointer Function 11(fvec4) - 70: TypePointer Input 8(fvec2) + 60: TypePointer Function 9(fvec2) + 64: TypePointer Function 12(fvec4) + 70: TypePointer Input 9(fvec2) 71(i.vTextureCoords): 70(ptr) Variable Input - 74: TypePointer Output 11(fvec4) + 74: TypePointer Output 12(fvec4) 75(@entryPointOutput.vColor): 74(ptr) Variable Output - Line 17 23 1 + Line 7 23 1 5(MainPs): 3 Function None 4 6: Label - 69(i): 10(ptr) Variable Function - 76(param): 10(ptr) Variable Function - Line 17 23 0 - 72: 8(fvec2) Load 71(i.vTextureCoords) + 69(i): 11(ptr) Variable Function + 76(param): 11(ptr) Variable Function + Line 7 23 0 + 72: 9(fvec2) Load 71(i.vTextureCoords) 73: 60(ptr) AccessChain 69(i) 35 Store 73 72 - 77: 9(PS_INPUT) Load 69(i) + 77:10(PS_INPUT) Load 69(i) Store 76(param) 77 - 78:12(PS_OUTPUT) FunctionCall 15(@MainPs(struct-PS_INPUT-vf21;) 76(param) - 79: 11(fvec4) CompositeExtract 78 0 + 78:13(PS_OUTPUT) FunctionCall 16(@MainPs(struct-PS_INPUT-vf21;) 76(param) + 79: 12(fvec4) CompositeExtract 78 0 Store 75(@entryPointOutput.vColor) 79 Return FunctionEnd - Line 17 23 1 -15(@MainPs(struct-PS_INPUT-vf21;):12(PS_OUTPUT) Function None 13 - 14(i): 10(ptr) FunctionParameter - 16: Label + Line 7 23 1 +16(@MainPs(struct-PS_INPUT-vf21;):13(PS_OUTPUT) Function None 14 + 15(i): 11(ptr) FunctionParameter + 17: Label 34(u): 33(ptr) Variable Function 44(ps_output): 43(ptr) Variable Function - Line 17 47 0 + Line 7 47 0 25: 24(ptr) AccessChain 21 23 26: 18(int) Load 25 29: 27(bool) INotEqual 26 28 @@ -176,12 +176,12 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 53: 45 Load 52 57: 54 Load 56(g_sAniso) 59: 58 SampledImage 53 57 - 61: 60(ptr) AccessChain 14(i) 35 - 62: 8(fvec2) Load 61 - 63: 11(fvec4) ImageSampleImplicitLod 59 62 + 61: 60(ptr) AccessChain 15(i) 35 + 62: 9(fvec2) Load 61 + 63: 12(fvec4) ImageSampleImplicitLod 59 62 65: 64(ptr) AccessChain 44(ps_output) 35 Store 65 63 Line 42 105 0 - 66:12(PS_OUTPUT) Load 44(ps_output) + 66:13(PS_OUTPUT) Load 44(ps_output) ReturnValue 66 FunctionEnd diff --git a/Test/baseResults/hlsl.pp.line4.frag.out b/Test/baseResults/hlsl.pp.line4.frag.out index af2ac0fe66..aeca142a83 100644 --- a/Test/baseResults/hlsl.pp.line4.frag.out +++ b/Test/baseResults/hlsl.pp.line4.frag.out @@ -9,7 +9,7 @@ hlsl.pp.line4.frag EntryPoint Fragment 5 "MainPs" 70 74 ExecutionMode 5 OriginUpperLeft 1: String "hlsl.pp.line4.frag" - 17: String "C:\\Users\\Greg\\shaders\\line\\foo4.frag" + 7: String "C:\\Users\\Greg\\shaders\\line\\foo4.frag" 32: String "C:\\Users\\Greg\\shaders\\line\\u1.h" Source HLSL 500 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings @@ -84,9 +84,9 @@ PS_OUTPUT MainPs ( PS_INPUT i ) Decorate 74(@entryPointOutput.vColor) Location 0 3: TypeVoid 4: TypeFunction 3 - 7: TypeFloat 32 - 8: TypeVector 7(float) 2 - 11: TypeVector 7(float) 4 + 8: TypeFloat 32 + 9: TypeVector 8(float) 2 + 12: TypeVector 8(float) 4 18: TypeInt 32 0 19(PerViewConstantBuffer_t): TypeStruct 18(int) 18(int) 18(int) 20: TypePointer PushConstant 19(PerViewConstantBuffer_t) @@ -98,7 +98,7 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 28: 18(int) Constant 0 35: 22(int) Constant 0 39: 22(int) Constant 1 - 44: TypeImage 7(float) 2D sampled format:Unknown + 44: TypeImage 8(float) 2D sampled format:Unknown 45: 18(int) Constant 128 46: TypeArray 44 45 47: TypePointer UniformConstant 46 @@ -108,17 +108,17 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 54: TypePointer UniformConstant 53 55(g_sAniso): 54(ptr) Variable UniformConstant 57: TypeSampledImage 44 - 69: TypePointer Input 8(fvec2) + 69: TypePointer Input 9(fvec2) 70(i.vTextureCoords): 69(ptr) Variable Input - 73: TypePointer Output 11(fvec4) + 73: TypePointer Output 12(fvec4) 74(@entryPointOutput.vColor): 73(ptr) Variable Output - Line 17 25 1 + Line 7 25 1 5(MainPs): 3 Function None 4 NoLine 6: Label - Line 17 25 0 - 71: 8(fvec2) Load 70(i.vTextureCoords) - Line 17 29 0 + Line 7 25 0 + 71: 9(fvec2) Load 70(i.vTextureCoords) + Line 7 29 0 83: 24(ptr) AccessChain 21 23 84: 18(int) Load 83 85: 27(bool) INotEqual 84 28 @@ -130,19 +130,19 @@ PS_OUTPUT MainPs ( PS_INPUT i ) 88: 18(int) Load 87 Branch 92 89: Label - Line 17 32 0 + Line 7 32 0 90: 24(ptr) AccessChain 21 39 91: 18(int) Load 90 Branch 92 92: Label 115: 18(int) Phi 88 86 91 89 - Line 17 33 0 + Line 7 33 0 94: 50(ptr) AccessChain 48(g_tColor) 115 95: 44 Load 94 96: 53 Load 55(g_sAniso) 97: 57 SampledImage 95 96 - 100: 11(fvec4) ImageSampleImplicitLod 97 71 - Line 17 25 0 + 100: 12(fvec4) ImageSampleImplicitLod 97 71 + Line 7 25 0 Store 74(@entryPointOutput.vColor) 100 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index b237059968..cf30e573bb 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -223,29 +223,29 @@ void main() 56: String "offset" 64: String "filterPCF" 68: String "sc" - 83: String "shadow" - 87: String "fragcolor" - 91: String "fragpos" - 93: String "main" - 97: String "int" - 103: String "global_var" - 118: String "shadowCoord" - 140: String "bool" - 161: String "dist" - 168: String "type.2d.image" - 169: String "@type.2d.image" - 173: String "type.sampled.image" - 174: String "@type.sampled.image" - 179: String "samplerShadowMap" - 229: String "texDim" - 241: String "scale" - 248: String "dx" - 262: String "dy" - 274: String "shadowFactor" - 280: String "count" - 286: String "range" - 293: String "x" - 313: String "y" + 84: String "shadow" + 88: String "fragcolor" + 93: String "fragpos" + 95: String "main" + 99: String "int" + 105: String "global_var" + 120: String "shadowCoord" + 142: String "bool" + 163: String "dist" + 170: String "type.2d.image" + 171: String "@type.2d.image" + 175: String "type.sampled.image" + 176: String "@type.sampled.image" + 181: String "samplerShadowMap" + 230: String "texDim" + 242: String "scale" + 249: String "dx" + 263: String "dy" + 275: String "shadowFactor" + 281: String "count" + 287: String "range" + 294: String "x" + 314: String "y" 379: String "i" 397: String "shadowClip" 407: String "color" @@ -286,26 +286,26 @@ void main() Name 62 "filterPCF(vf4;f1;" Name 60 "sc" Name 61 "layer" - Name 81 "shadow(vf3;vf3;" - Name 79 "fragcolor" - Name 80 "fragpos" - Name 101 "global_var" - Name 110 "shadow" - Name 116 "shadowCoord" - Name 159 "dist" - Name 177 "samplerShadowMap" - Name 227 "texDim" - Name 239 "scale" - Name 246 "dx" - Name 260 "dy" - Name 272 "shadowFactor" - Name 278 "count" - Name 284 "range" - Name 291 "x" - Name 311 "y" - Name 344 "param" - Name 346 "param" - Name 348 "param" + Name 82 "shadow(vf3;vf3;" + Name 80 "fragcolor" + Name 81 "fragpos" + Name 103 "global_var" + Name 112 "shadow" + Name 118 "shadowCoord" + Name 161 "dist" + Name 179 "samplerShadowMap" + Name 228 "texDim" + Name 240 "scale" + Name 247 "dx" + Name 261 "dy" + Name 273 "shadowFactor" + Name 279 "count" + Name 285 "range" + Name 292 "x" + Name 312 "y" + Name 345 "param" + Name 347 "param" + Name 349 "param" Name 377 "i" Name 395 "shadowClip" Name 405 "Light" @@ -352,8 +352,8 @@ void main() Name 814 "spec" Name 861 "param" Name 866 "param" - Decorate 177(samplerShadowMap) Binding 5 - Decorate 177(samplerShadowMap) DescriptorSet 0 + Decorate 179(samplerShadowMap) Binding 5 + Decorate 179(samplerShadowMap) DescriptorSet 0 MemberDecorate 405(Light) 0 Offset 0 MemberDecorate 405(Light) 1 Offset 16 MemberDecorate 405(Light) 2 Offset 32 @@ -416,93 +416,93 @@ void main() 66: 7(int) Constant 76 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 41 66 12 44 64 13 66 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 68 21 41 66 12 65 20 45 - 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 66 12 65 20 28 - 73: TypeVector 16(float) 3 - 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 - 75: TypePointer Function 73(fvec3) - 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 74 23 12 - 77: TypeFunction 73(fvec3) 75(ptr) 75(ptr) - 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 74 74 74 - 85: 7(int) Constant 99 - 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 83 78 41 85 12 44 83 13 85 - 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 41 85 12 84 20 45 - 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 74 41 85 12 84 20 28 - 95: 7(int) Constant 116 - 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 93 6 41 95 12 44 93 13 95 - 96: TypeInt 32 1 - 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 10 20 12 - 99: TypePointer Private 96(int) - 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 11 12 - 101(global_var): 99(ptr) Variable Private - 104: 7(int) Constant 41 - 105: 7(int) Constant 8 - 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 103 98 41 104 12 44 103 101(global_var) 105 - 106: 96(int) Constant 0 - 112: 7(int) Constant 61 - 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 18 41 112 12 40 20 - 115: 16(float) Constant 1065353216 - 119: 7(int) Constant 62 - 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 118 21 41 119 12 40 20 - 129: 7(int) Constant 63 - 131: 16(float) Constant 1056964608 - 139: TypeBool - 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 10 28 12 - 144: 7(int) Constant 65 - 146: 16(float) Constant 3212836864 - 162: 7(int) Constant 67 - 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 41 162 12 40 20 - 166: TypeImage 16(float) 2D array sampled format:Unknown - 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 168 12 41 162 12 44 169 170 13 - 171: TypeSampledImage 166 - 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 12 41 162 12 44 174 170 13 - 175: TypePointer UniformConstant 171 - 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 172 12 12 -177(samplerShadowMap): 175(ptr) Variable UniformConstant - 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 179 172 41 162 12 44 179 177(samplerShadowMap) 105 - 193: 7(int) Constant 68 - 195: 16(float) Constant 0 - 209: 16(float) Constant 1048576000 - 212: 7(int) Constant 70 - 217: 7(int) Constant 73 - 223: TypeVector 96(int) 2 - 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 28 - 225: TypePointer Function 223(ivec2) - 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 224 23 12 - 230: 7(int) Constant 78 - 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 224 41 230 12 65 20 - 235: TypeVector 96(int) 3 - 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 98 13 - 242: 7(int) Constant 79 - 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 241 18 41 242 12 65 20 - 245: 16(float) Constant 1069547520 - 249: 7(int) Constant 80 - 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 248 18 41 249 12 65 20 - 254: TypePointer Function 96(int) - 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 23 12 - 263: 7(int) Constant 81 - 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 262 18 41 263 12 65 20 - 275: 7(int) Constant 83 - 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 18 41 275 12 65 20 - 281: 7(int) Constant 84 - 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 280 98 41 281 12 65 20 - 287: 7(int) Constant 85 - 285: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 286 98 41 287 12 65 20 - 290: 96(int) Constant 1 - 294: 7(int) Constant 87 - 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 293 98 41 294 12 65 20 - 314: 7(int) Constant 89 - 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 98 41 314 12 65 20 - 335: 7(int) Constant 91 - 354: 7(int) Constant 92 - 368: 7(int) Constant 96 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 18 41 66 12 65 20 28 + 74: TypeVector 16(float) 3 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 18 13 + 76: TypePointer Function 74(fvec3) + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 23 12 + 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 75 75 75 + 86: 7(int) Constant 99 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 41 86 12 44 84 13 86 + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 41 86 12 85 20 45 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 41 86 12 85 20 28 + 97: 7(int) Constant 116 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 95 6 41 97 12 44 95 13 97 + 98: TypeInt 32 1 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 99 10 20 12 + 101: TypePointer Private 98(int) + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 11 12 + 103(global_var): 101(ptr) Variable Private + 106: 7(int) Constant 41 + 107: 7(int) Constant 8 + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 105 100 41 106 12 44 105 103(global_var) 107 + 108: 98(int) Constant 0 + 114: 7(int) Constant 61 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 18 41 114 12 40 20 + 117: 16(float) Constant 1065353216 + 121: 7(int) Constant 62 + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 21 41 121 12 40 20 + 131: 7(int) Constant 63 + 133: 16(float) Constant 1056964608 + 141: TypeBool + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 28 12 + 146: 7(int) Constant 65 + 148: 16(float) Constant 3212836864 + 164: 7(int) Constant 67 + 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 163 18 41 164 12 40 20 + 168: TypeImage 16(float) 2D array sampled format:Unknown + 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 164 12 44 171 172 13 + 173: TypeSampledImage 168 + 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 164 12 44 176 172 13 + 177: TypePointer UniformConstant 173 + 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 174 12 12 +179(samplerShadowMap): 177(ptr) Variable UniformConstant + 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 181 174 41 164 12 44 181 179(samplerShadowMap) 107 + 195: 7(int) Constant 68 + 197: 16(float) Constant 0 + 211: 16(float) Constant 1048576000 + 214: 7(int) Constant 70 + 219: 7(int) Constant 73 + 224: TypeVector 98(int) 2 + 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 28 + 226: TypePointer Function 224(ivec2) + 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 225 23 12 + 231: 7(int) Constant 78 + 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 230 225 41 231 12 65 20 + 236: TypeVector 98(int) 3 + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 13 + 243: 7(int) Constant 79 + 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 242 18 41 243 12 65 20 + 246: 16(float) Constant 1069547520 + 250: 7(int) Constant 80 + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 18 41 250 12 65 20 + 255: TypePointer Function 98(int) + 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 23 12 + 264: 7(int) Constant 81 + 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 18 41 264 12 65 20 + 276: 7(int) Constant 83 + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 276 12 65 20 + 282: 7(int) Constant 84 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 281 100 41 282 12 65 20 + 288: 7(int) Constant 85 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 287 100 41 288 12 65 20 + 291: 98(int) Constant 1 + 295: 7(int) Constant 87 + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 294 100 41 295 12 65 20 + 315: 7(int) Constant 89 + 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 314 100 41 315 12 65 20 + 336: 7(int) Constant 91 + 355: 7(int) Constant 92 + 369: 7(int) Constant 96 380: 7(int) Constant 100 - 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 98 41 380 12 84 20 - 393: 96(int) Constant 3 + 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 100 41 380 12 85 20 + 393: 98(int) Constant 3 398: 7(int) Constant 102 - 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 397 21 41 398 12 84 20 + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 397 21 41 398 12 85 20 402: TypeMatrix 19(fvec4) 4 - 404: 139(bool) ConstantTrue + 404: 141(bool) ConstantTrue 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 404 405(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 402 408: 7(int) Constant 47 @@ -514,56 +514,56 @@ void main() 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 415 45 41 398 12 44 415 12 13 406 409 410 411 416: TypeArray 405(Light) 13 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 414 13 - 418(UBO): TypeStruct 19(fvec4) 416 96(int) 96(int) + 418(UBO): TypeStruct 19(fvec4) 416 98(int) 98(int) 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 422: 7(int) Constant 54 - 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 417 41 422 105 12 12 13 + 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 417 41 422 107 12 12 13 425: 7(int) Constant 56 - 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 98 41 425 11 12 12 13 - 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 98 41 425 11 12 12 13 + 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 100 41 425 11 12 12 13 + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 100 41 425 11 12 12 13 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 428 45 41 398 12 44 428 12 13 419 420 423 426 429: TypePointer Uniform 418(UBO) 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 427 28 12 431(ubo): 429(ptr) Variable Uniform - 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 433 427 41 398 12 44 433 431(ubo) 105 + 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 433 427 41 398 12 44 433 431(ubo) 107 435: TypePointer Uniform 402 436: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 403 28 12 447: 7(int) Constant 106 - 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 18 41 447 12 84 20 + 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 447 12 85 20 458: 7(int) Constant 111 468: 7(int) Constant 113 478: 7(int) Constant 119 - 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 477 74 41 478 12 94 20 + 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 477 75 41 478 12 96 20 481: TypeImage 16(float) 2D sampled format:Unknown - 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 168 12 41 478 12 44 169 170 13 + 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 478 12 44 171 172 13 483: TypeSampledImage 481 - 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 173 12 41 478 12 44 174 170 13 + 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 478 12 44 176 172 13 485: TypePointer UniformConstant 483 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 484 12 12 487(samplerposition): 485(ptr) Variable UniformConstant - 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 489 484 41 478 12 44 489 487(samplerposition) 105 + 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 489 484 41 478 12 44 489 487(samplerposition) 107 491: TypePointer Input 27(fvec2) 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12 493(inUV): 491(ptr) Variable Input - 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 29 41 478 12 44 495 493(inUV) 105 + 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 29 41 478 12 44 495 493(inUV) 107 502: 7(int) Constant 120 - 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 501 74 41 502 12 94 20 + 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 501 75 41 502 12 96 20 505(samplerNormal): 485(ptr) Variable UniformConstant - 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 507 484 41 502 12 44 507 505(samplerNormal) 105 + 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 507 484 41 502 12 44 507 505(samplerNormal) 107 515: 7(int) Constant 121 - 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 514 21 41 515 12 94 20 + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 514 21 41 515 12 96 20 518(samplerAlbedo): 485(ptr) Variable UniformConstant - 519: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 520 484 41 515 12 44 520 518(samplerAlbedo) 105 - 524: TypePointer Uniform 96(int) - 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 28 12 + 519: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 520 484 41 515 12 44 520 518(samplerAlbedo) 107 + 524: TypePointer Uniform 98(int) + 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 28 12 528: 7(int) Constant 124 536: 7(int) Constant 125 544: TypePointer Output 19(fvec4) 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 546(outFragColor): 544(ptr) Variable Output 549: 7(int) Constant 127 - 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 21 41 549 12 44 548 546(outFragColor) 105 - 550: 73(fvec3) ConstantComposite 115 115 115 + 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 21 41 549 12 44 548 546(outFragColor) 107 + 550: 74(fvec3) ConstantComposite 117 117 117 557: TypePointer Output 16(float) 558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 566: 7(int) Constant 128 @@ -578,102 +578,102 @@ void main() 631: 7(int) Constant 142 633: 7(int) Constant 143 638: 7(int) Constant 147 - 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 41 638 12 94 20 + 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 41 638 12 96 20 644: 16(float) Constant 1036831949 649: 7(int) Constant 149 - 647: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 648 74 41 649 12 94 20 + 647: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 648 75 41 649 12 96 20 656: 7(int) Constant 151 - 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 98 41 656 12 94 20 + 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 100 41 656 12 96 20 673: 7(int) Constant 154 - 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 672 74 41 673 12 94 20 + 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 672 75 41 673 12 96 20 678: TypePointer Uniform 19(fvec4) 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12 687: 7(int) Constant 156 - 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 161 18 41 687 12 94 20 + 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 163 18 41 687 12 96 20 694: 7(int) Constant 157 699: 7(int) Constant 160 - 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 698 74 41 699 12 94 20 + 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 698 75 41 699 12 96 20 709: 7(int) Constant 161 714: 7(int) Constant 163 - 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 18 41 714 12 94 20 + 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 713 18 41 714 12 96 20 717: 16(float) Constant 1064781546 721: 7(int) Constant 164 - 719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 18 41 721 12 94 20 + 719: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 720 18 41 721 12 96 20 724: 16(float) Constant 1063781322 728: 7(int) Constant 165 - 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 18 41 728 12 94 20 + 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 18 41 728 12 96 20 731: 16(float) Constant 1120403456 735: 7(int) Constant 168 - 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 74 41 735 12 94 20 + 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 75 41 735 12 96 20 751: 7(int) Constant 171 - 749: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 750 18 41 751 12 94 20 + 749: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 750 18 41 751 12 96 20 760: 7(int) Constant 172 - 758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 759 18 41 760 12 94 20 + 758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 759 18 41 760 12 96 20 770: 7(int) Constant 173 - 768: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 769 18 41 770 12 94 20 + 768: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 769 18 41 770 12 96 20 779: 7(int) Constant 176 - 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 778 18 41 779 12 94 20 + 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 778 18 41 779 12 96 20 789: 7(int) Constant 177 - 787: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 788 74 41 789 12 94 20 + 787: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 788 75 41 789 12 96 20 797: 7(int) Constant 180 - 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 796 74 41 797 12 94 20 + 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 796 75 41 797 12 96 20 807: 7(int) Constant 181 - 805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 806 18 41 807 12 94 20 + 805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 806 18 41 807 12 96 20 817: 7(int) Constant 182 - 815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 816 74 41 817 12 94 20 + 815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 816 75 41 817 12 96 20 821: 16(float) Constant 1098907648 826: 16(float) Constant 1075838976 831: 7(int) Constant 184 - 839: 96(int) Constant 2 + 839: 98(int) Constant 2 856: 7(int) Constant 188 865: 7(int) Constant 190 872: 7(int) Constant 193 14(main): 4 Function None 5 15: Label - 475(fragPos): 75(ptr) Variable Function - 499(normal): 75(ptr) Variable Function + 475(fragPos): 76(ptr) Variable Function + 499(normal): 76(ptr) Variable Function 512(albedo): 22(ptr) Variable Function - 551(param): 75(ptr) Variable Function - 554(param): 75(ptr) Variable Function - 636(fragcolor): 75(ptr) Variable Function - 646(N): 75(ptr) Variable Function - 654(i): 254(ptr) Variable Function - 670(L): 75(ptr) Variable Function + 551(param): 76(ptr) Variable Function + 554(param): 76(ptr) Variable Function + 636(fragcolor): 76(ptr) Variable Function + 646(N): 76(ptr) Variable Function + 654(i): 255(ptr) Variable Function + 670(L): 76(ptr) Variable Function 685(dist): 25(ptr) Variable Function - 696(V): 75(ptr) Variable Function + 696(V): 76(ptr) Variable Function 711(lightCosInnerAngle): 25(ptr) Variable Function 718(lightCosOuterAngle): 25(ptr) Variable Function 725(lightRange): 25(ptr) Variable Function - 732(dir): 75(ptr) Variable Function + 732(dir): 76(ptr) Variable Function 748(cosDir): 25(ptr) Variable Function 757(spotEffect): 25(ptr) Variable Function 767(heightAttenuation): 25(ptr) Variable Function 776(NdotL): 25(ptr) Variable Function - 786(diff): 75(ptr) Variable Function - 794(R): 75(ptr) Variable Function + 786(diff): 76(ptr) Variable Function + 794(R): 76(ptr) Variable Function 804(NdotR): 25(ptr) Variable Function - 814(spec): 75(ptr) Variable Function - 861(param): 75(ptr) Variable Function - 866(param): 75(ptr) Variable Function - 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 - 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 104 104 12 12 - Store 101(global_var) 106 - 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 - 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 95 95 12 12 - 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 94 14(main) + 814(spec): 76(ptr) Variable Function + 861(param): 76(ptr) Variable Function + 866(param): 76(ptr) Variable Function + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 106 106 12 12 + Store 103(global_var) 108 + 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 97 97 12 12 + 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 14(main) 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 478 478 12 12 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 476 475(fragPos) 49 490: 483 Load 487(samplerposition) 496: 27(fvec2) Load 493(inUV) 497: 19(fvec4) ImageSampleImplicitLod 490 496 - 498: 73(fvec3) VectorShuffle 497 497 0 1 2 + 498: 74(fvec3) VectorShuffle 497 497 0 1 2 Store 475(fragPos) 498 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 502 502 12 12 503: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 500 499(normal) 49 508: 483 Load 505(samplerNormal) 509: 27(fvec2) Load 493(inUV) 510: 19(fvec4) ImageSampleImplicitLod 508 509 - 511: 73(fvec3) VectorShuffle 510 510 0 1 2 + 511: 74(fvec3) VectorShuffle 510 510 0 1 2 Store 499(normal) 511 517: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 515 515 12 12 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(albedo) 49 @@ -683,15 +683,15 @@ void main() Store 512(albedo) 523 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 528 528 12 12 526: 524(ptr) AccessChain 431(ubo) 393 - 529: 96(int) Load 526 - 530: 139(bool) SGreaterThan 529 106 + 529: 98(int) Load 526 + 530: 141(bool) SGreaterThan 529 108 SelectionMerge 532 None BranchConditional 530 531 532 531: Label - 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 536 536 12 12 533: 524(ptr) AccessChain 431(ubo) 393 - 537: 96(int) Load 533 + 537: 98(int) Load 533 SelectionMerge 543 None Switch 537 543 case 1: 538 @@ -700,12 +700,12 @@ void main() case 4: 541 case 5: 542 538: Label - 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 553: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 549 549 12 12 Store 551(param) 550 - 555: 73(fvec3) Load 475(fragPos) + 555: 74(fvec3) Load 475(fragPos) Store 554(param) 555 - 556: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 551(param) 554(param) + 556: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 551(param) 554(param) 559: 557(ptr) AccessChain 546(outFragColor) 12 560: 16(float) CompositeExtract 556 0 Store 559 560 @@ -718,9 +718,9 @@ void main() 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 566 566 12 12 Branch 543 539: Label - 570: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 570: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 571: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 572 572 12 12 - 569: 73(fvec3) Load 475(fragPos) + 569: 74(fvec3) Load 475(fragPos) 573: 557(ptr) AccessChain 546(outFragColor) 12 574: 16(float) CompositeExtract 569 0 Store 573 574 @@ -733,9 +733,9 @@ void main() 579: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 580 580 12 12 Branch 543 540: Label - 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 585: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 586 586 12 12 - 583: 73(fvec3) Load 499(normal) + 583: 74(fvec3) Load 499(normal) 587: 557(ptr) AccessChain 546(outFragColor) 12 588: 16(float) CompositeExtract 583 0 Store 587 588 @@ -748,10 +748,10 @@ void main() 593: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 594 594 12 12 Branch 543 541: Label - 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 599: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 600 600 12 12 597: 19(fvec4) Load 512(albedo) - 601: 73(fvec3) VectorShuffle 597 597 0 1 2 + 601: 74(fvec3) VectorShuffle 597 597 0 1 2 602: 557(ptr) AccessChain 546(outFragColor) 12 603: 16(float) CompositeExtract 601 0 Store 602 603 @@ -764,10 +764,10 @@ void main() 608: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 609 609 12 12 Branch 543 542: Label - 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 614: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 615 615 12 12 612: 19(fvec4) Load 512(albedo) - 616: 73(fvec3) VectorShuffle 612 612 3 3 3 + 616: 74(fvec3) VectorShuffle 612 612 3 3 3 617: 557(ptr) AccessChain 546(outFragColor) 12 618: 16(float) CompositeExtract 616 0 Store 617 618 @@ -780,71 +780,71 @@ void main() 623: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 624 624 12 12 Branch 543 543: Label - 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 630: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 631 631 12 12 628: 557(ptr) AccessChain 546(outFragColor) 13 - Store 628 115 + Store 628 117 632: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 633 633 12 12 Return 532: Label - 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 641: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 638 638 12 12 639: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 637 636(fragcolor) 49 642: 19(fvec4) Load 512(albedo) - 643: 73(fvec3) VectorShuffle 642 642 0 1 2 - 645: 73(fvec3) VectorTimesScalar 643 644 + 643: 74(fvec3) VectorShuffle 642 642 0 1 2 + 645: 74(fvec3) VectorTimesScalar 643 644 Store 636(fragcolor) 645 651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 649 649 12 12 650: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 647 646(N) 49 - 652: 73(fvec3) Load 499(normal) - 653: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 652 + 652: 74(fvec3) Load 499(normal) + 653: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 652 Store 646(N) 653 658: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 657: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 655 654(i) 49 - Store 654(i) 106 + Store 654(i) 108 Branch 659 659: Label - 663: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 663: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 LoopMerge 661 662 None Branch 665 665: Label - 667: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 667: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 668: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 - 666: 96(int) Load 654(i) - 669: 139(bool) SLessThan 666 393 + 666: 98(int) Load 654(i) + 669: 141(bool) SLessThan 666 393 BranchConditional 669 660 661 660: Label - 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 673 673 12 12 674: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 671 670(L) 49 - 677: 96(int) Load 654(i) - 680: 678(ptr) AccessChain 431(ubo) 290 677 106 + 677: 98(int) Load 654(i) + 680: 678(ptr) AccessChain 431(ubo) 291 677 108 681: 19(fvec4) Load 680 - 682: 73(fvec3) VectorShuffle 681 681 0 1 2 - 683: 73(fvec3) Load 475(fragPos) - 684: 73(fvec3) FSub 682 683 + 682: 74(fvec3) VectorShuffle 681 681 0 1 2 + 683: 74(fvec3) Load 475(fragPos) + 684: 74(fvec3) FSub 682 683 Store 670(L) 684 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 687 687 12 12 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 686 685(dist) 49 - 690: 73(fvec3) Load 670(L) + 690: 74(fvec3) Load 670(L) 691: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 690 Store 685(dist) 691 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 694 694 12 12 - 692: 73(fvec3) Load 670(L) - 695: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 692 + 692: 74(fvec3) Load 670(L) + 695: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 692 Store 670(L) 695 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 699 699 12 12 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 697 696(V) 49 - 702: 678(ptr) AccessChain 431(ubo) 106 + 702: 678(ptr) AccessChain 431(ubo) 108 703: 19(fvec4) Load 702 - 704: 73(fvec3) VectorShuffle 703 703 0 1 2 - 705: 73(fvec3) Load 475(fragPos) - 706: 73(fvec3) FSub 704 705 + 704: 74(fvec3) VectorShuffle 703 703 0 1 2 + 705: 74(fvec3) Load 475(fragPos) + 706: 74(fvec3) FSub 704 705 Store 696(V) 706 708: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 709 709 12 12 - 707: 73(fvec3) Load 696(V) - 710: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 707 + 707: 74(fvec3) Load 696(V) + 710: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 707 Store 696(V) 710 716: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 714 714 12 12 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 712 711(lightCosInnerAngle) 49 @@ -857,21 +857,21 @@ void main() Store 725(lightRange) 731 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 735 735 12 12 736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(dir) 49 - 738: 96(int) Load 654(i) - 739: 678(ptr) AccessChain 431(ubo) 290 738 106 + 738: 98(int) Load 654(i) + 739: 678(ptr) AccessChain 431(ubo) 291 738 108 740: 19(fvec4) Load 739 - 741: 73(fvec3) VectorShuffle 740 740 0 1 2 - 742: 96(int) Load 654(i) - 743: 678(ptr) AccessChain 431(ubo) 290 742 290 + 741: 74(fvec3) VectorShuffle 740 740 0 1 2 + 742: 98(int) Load 654(i) + 743: 678(ptr) AccessChain 431(ubo) 291 742 291 744: 19(fvec4) Load 743 - 745: 73(fvec3) VectorShuffle 744 744 0 1 2 - 746: 73(fvec3) FSub 741 745 - 747: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 746 + 745: 74(fvec3) VectorShuffle 744 744 0 1 2 + 746: 74(fvec3) FSub 741 745 + 747: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 746 Store 732(dir) 747 753: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 751 751 12 12 752: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 749 748(cosDir) 49 - 754: 73(fvec3) Load 670(L) - 755: 73(fvec3) Load 732(dir) + 754: 74(fvec3) Load 670(L) + 755: 74(fvec3) Load 732(dir) 756: 16(float) Dot 754 755 Store 748(cosDir) 756 762: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 760 760 12 12 @@ -885,33 +885,33 @@ void main() 771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 768 767(heightAttenuation) 49 773: 16(float) Load 725(lightRange) 774: 16(float) Load 685(dist) - 775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 195 774 + 775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 197 774 Store 767(heightAttenuation) 775 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 779 779 12 12 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(NdotL) 49 - 782: 73(fvec3) Load 646(N) - 783: 73(fvec3) Load 670(L) + 782: 74(fvec3) Load 646(N) + 783: 74(fvec3) Load 670(L) 784: 16(float) Dot 782 783 - 785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 784 + 785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 784 Store 776(NdotL) 785 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 789 789 12 12 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 787 786(diff) 49 792: 16(float) Load 776(NdotL) - 793: 73(fvec3) CompositeConstruct 792 792 792 + 793: 74(fvec3) CompositeConstruct 792 792 792 Store 786(diff) 793 799: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 797 797 12 12 798: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 795 794(R) 49 - 800: 73(fvec3) Load 670(L) - 801: 73(fvec3) FNegate 800 - 802: 73(fvec3) Load 646(N) - 803: 73(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 801 802 + 800: 74(fvec3) Load 670(L) + 801: 74(fvec3) FNegate 800 + 802: 74(fvec3) Load 646(N) + 803: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 801 802 Store 794(R) 803 809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 807 807 12 12 808: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 805 804(NdotR) 49 - 810: 73(fvec3) Load 794(R) - 811: 73(fvec3) Load 696(V) + 810: 74(fvec3) Load 794(R) + 811: 74(fvec3) Load 696(V) 812: 16(float) Dot 810 811 - 813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 195 812 + 813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 812 Store 804(NdotR) 813 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 817 817 12 12 818: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 815 814(spec) 49 @@ -921,61 +921,61 @@ void main() 824: 16(float) Load 823 825: 16(float) FMul 822 824 827: 16(float) FMul 825 826 - 828: 73(fvec3) CompositeConstruct 827 827 827 + 828: 74(fvec3) CompositeConstruct 827 827 827 Store 814(spec) 828 830: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 831 831 12 12 - 829: 73(fvec3) Load 786(diff) - 832: 73(fvec3) Load 814(spec) - 833: 73(fvec3) FAdd 829 832 + 829: 74(fvec3) Load 786(diff) + 832: 74(fvec3) Load 814(spec) + 833: 74(fvec3) FAdd 829 832 834: 16(float) Load 757(spotEffect) - 835: 73(fvec3) VectorTimesScalar 833 834 + 835: 74(fvec3) VectorTimesScalar 833 834 836: 16(float) Load 767(heightAttenuation) - 837: 73(fvec3) VectorTimesScalar 835 836 - 838: 96(int) Load 654(i) - 840: 678(ptr) AccessChain 431(ubo) 290 838 839 + 837: 74(fvec3) VectorTimesScalar 835 836 + 838: 98(int) Load 654(i) + 840: 678(ptr) AccessChain 431(ubo) 291 838 839 841: 19(fvec4) Load 840 - 842: 73(fvec3) VectorShuffle 841 841 0 1 2 - 843: 73(fvec3) FMul 837 842 + 842: 74(fvec3) VectorShuffle 841 841 0 1 2 + 843: 74(fvec3) FMul 837 842 844: 19(fvec4) Load 512(albedo) - 845: 73(fvec3) VectorShuffle 844 844 0 1 2 - 846: 73(fvec3) FMul 843 845 - 847: 73(fvec3) Load 636(fragcolor) - 848: 73(fvec3) FAdd 847 846 + 845: 74(fvec3) VectorShuffle 844 844 0 1 2 + 846: 74(fvec3) FMul 843 845 + 847: 74(fvec3) Load 636(fragcolor) + 848: 74(fvec3) FAdd 847 846 Store 636(fragcolor) 848 Branch 662 662: Label - 850: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 850: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 851: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 - 849: 96(int) Load 654(i) - 852: 96(int) IAdd 849 290 + 849: 98(int) Load 654(i) + 852: 98(int) IAdd 849 291 Store 654(i) 852 Branch 659 661: Label - 854: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 854: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 856 856 12 12 853: 524(ptr) AccessChain 431(ubo) 839 - 857: 96(int) Load 853 - 858: 139(bool) SGreaterThan 857 106 + 857: 98(int) Load 853 + 858: 141(bool) SGreaterThan 857 108 SelectionMerge 860 None BranchConditional 858 859 860 859: Label - 863: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 863: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 865 865 12 12 - 862: 73(fvec3) Load 636(fragcolor) + 862: 74(fvec3) Load 636(fragcolor) Store 861(param) 862 - 867: 73(fvec3) Load 475(fragPos) + 867: 74(fvec3) Load 475(fragPos) Store 866(param) 867 - 868: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 861(param) 866(param) + 868: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 861(param) 866(param) Store 636(fragcolor) 868 Branch 860 860: Label - 870: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 94 + 870: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 871: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 872 872 12 12 - 869: 73(fvec3) Load 636(fragcolor) + 869: 74(fvec3) Load 636(fragcolor) 873: 16(float) CompositeExtract 869 0 874: 16(float) CompositeExtract 869 1 875: 16(float) CompositeExtract 869 2 - 876: 19(fvec4) CompositeConstruct 873 874 875 115 + 876: 19(fvec4) CompositeConstruct 873 874 875 117 Store 546(outFragColor) 876 Return FunctionEnd @@ -984,299 +984,299 @@ void main() 35(layer): 25(ptr) FunctionParameter 36(offset): 30(ptr) FunctionParameter 38: Label - 110(shadow): 25(ptr) Variable Function -116(shadowCoord): 22(ptr) Variable Function - 159(dist): 25(ptr) Variable Function + 112(shadow): 25(ptr) Variable Function +118(shadowCoord): 22(ptr) Variable Function + 161(dist): 25(ptr) Variable Function 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(P) 49 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 35(layer) 49 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 36(offset) 49 - 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 37(textureProj(vf4;f1;vf2;) - 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 112 112 12 12 - 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 111 110(shadow) 49 - Store 110(shadow) 115 - 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 119 119 12 12 - 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 117 116(shadowCoord) 49 - 122: 19(fvec4) Load 34(P) - 123: 25(ptr) AccessChain 34(P) 13 - 124: 16(float) Load 123 - 125: 19(fvec4) CompositeConstruct 124 124 124 124 - 126: 19(fvec4) FDiv 122 125 - Store 116(shadowCoord) 126 - 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 129 129 12 12 - 127: 19(fvec4) Load 116(shadowCoord) - 130: 27(fvec2) VectorShuffle 127 127 0 1 - 132: 27(fvec2) VectorTimesScalar 130 131 - 133: 27(fvec2) CompositeConstruct 131 131 - 134: 27(fvec2) FAdd 132 133 - 135: 25(ptr) AccessChain 116(shadowCoord) 12 - 136: 16(float) CompositeExtract 134 0 - Store 135 136 - 137: 25(ptr) AccessChain 116(shadowCoord) 45 - 138: 16(float) CompositeExtract 134 1 + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 40 37(textureProj(vf4;f1;vf2;) + 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 114 114 12 12 + 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(shadow) 49 + Store 112(shadow) 117 + 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 121 121 12 12 + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(shadowCoord) 49 + 124: 19(fvec4) Load 34(P) + 125: 25(ptr) AccessChain 34(P) 13 + 126: 16(float) Load 125 + 127: 19(fvec4) CompositeConstruct 126 126 126 126 + 128: 19(fvec4) FDiv 124 127 + Store 118(shadowCoord) 128 + 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 131 131 12 12 + 129: 19(fvec4) Load 118(shadowCoord) + 132: 27(fvec2) VectorShuffle 129 129 0 1 + 134: 27(fvec2) VectorTimesScalar 132 133 + 135: 27(fvec2) CompositeConstruct 133 133 + 136: 27(fvec2) FAdd 134 135 + 137: 25(ptr) AccessChain 118(shadowCoord) 12 + 138: 16(float) CompositeExtract 136 0 Store 137 138 - 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 144 144 12 12 - 142: 25(ptr) AccessChain 116(shadowCoord) 28 - 145: 16(float) Load 142 - 147: 139(bool) FOrdGreaterThan 145 146 - SelectionMerge 149 None - BranchConditional 147 148 149 - 148: Label - 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 144 144 12 12 - 150: 25(ptr) AccessChain 116(shadowCoord) 28 - 153: 16(float) Load 150 - 154: 139(bool) FOrdLessThan 153 115 - Branch 149 - 149: Label - 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 155: 139(bool) Phi 147 38 154 148 - SelectionMerge 158 None - BranchConditional 155 157 158 - 157: Label - 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 162 162 12 12 - 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 160 159(dist) 49 - 180: 171 Load 177(samplerShadowMap) - 181: 19(fvec4) Load 116(shadowCoord) - 182: 27(fvec2) VectorShuffle 181 181 0 1 - 183: 27(fvec2) Load 36(offset) - 184: 27(fvec2) FAdd 182 183 - 185: 16(float) Load 35(layer) - 186: 16(float) CompositeExtract 184 0 - 187: 16(float) CompositeExtract 184 1 - 188: 73(fvec3) CompositeConstruct 186 187 185 - 189: 19(fvec4) ImageSampleImplicitLod 180 188 - 190: 16(float) CompositeExtract 189 0 - Store 159(dist) 190 - 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 193 193 12 12 - 191: 25(ptr) AccessChain 116(shadowCoord) 13 - 194: 16(float) Load 191 - 196: 139(bool) FOrdGreaterThan 194 195 - SelectionMerge 198 None - BranchConditional 196 197 198 - 197: Label - 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 193 193 12 12 - 199: 16(float) Load 159(dist) - 202: 25(ptr) AccessChain 116(shadowCoord) 28 - 203: 16(float) Load 202 - 204: 139(bool) FOrdLessThan 199 203 - Branch 198 - 198: Label - 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 205: 139(bool) Phi 196 157 204 197 - SelectionMerge 208 None - BranchConditional 205 207 208 - 207: Label - 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 212 212 12 12 - Store 110(shadow) 209 - Branch 208 - 208: Label - 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - Branch 158 - 158: Label - 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 217 217 12 12 - 214: 16(float) Load 110(shadow) - ReturnValue 214 + 139: 25(ptr) AccessChain 118(shadowCoord) 45 + 140: 16(float) CompositeExtract 136 1 + Store 139 140 + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12 + 144: 25(ptr) AccessChain 118(shadowCoord) 28 + 147: 16(float) Load 144 + 149: 141(bool) FOrdGreaterThan 147 148 + SelectionMerge 151 None + BranchConditional 149 150 151 + 150: Label + 153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12 + 152: 25(ptr) AccessChain 118(shadowCoord) 28 + 155: 16(float) Load 152 + 156: 141(bool) FOrdLessThan 155 117 + Branch 151 + 151: Label + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 157: 141(bool) Phi 149 38 156 150 + SelectionMerge 160 None + BranchConditional 157 159 160 + 159: Label + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 164 164 12 12 + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 162 161(dist) 49 + 182: 173 Load 179(samplerShadowMap) + 183: 19(fvec4) Load 118(shadowCoord) + 184: 27(fvec2) VectorShuffle 183 183 0 1 + 185: 27(fvec2) Load 36(offset) + 186: 27(fvec2) FAdd 184 185 + 187: 16(float) Load 35(layer) + 188: 16(float) CompositeExtract 186 0 + 189: 16(float) CompositeExtract 186 1 + 190: 74(fvec3) CompositeConstruct 188 189 187 + 191: 19(fvec4) ImageSampleImplicitLod 182 190 + 192: 16(float) CompositeExtract 191 0 + Store 161(dist) 192 + 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 195 195 12 12 + 193: 25(ptr) AccessChain 118(shadowCoord) 13 + 196: 16(float) Load 193 + 198: 141(bool) FOrdGreaterThan 196 197 + SelectionMerge 200 None + BranchConditional 198 199 200 + 199: Label + 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 195 195 12 12 + 201: 16(float) Load 161(dist) + 204: 25(ptr) AccessChain 118(shadowCoord) 28 + 205: 16(float) Load 204 + 206: 141(bool) FOrdLessThan 201 205 + Branch 200 + 200: Label + 208: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 207: 141(bool) Phi 198 159 206 199 + SelectionMerge 210 None + BranchConditional 207 209 210 + 209: Label + 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 214 214 12 12 + Store 112(shadow) 211 + Branch 210 + 210: Label + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + Branch 160 + 160: Label + 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 219 219 12 12 + 216: 16(float) Load 112(shadow) + ReturnValue 216 FunctionEnd 62(filterPCF(vf4;f1;): 16(float) Function None 58 60(sc): 22(ptr) FunctionParameter 61(layer): 25(ptr) FunctionParameter 63: Label - 227(texDim): 225(ptr) Variable Function - 239(scale): 25(ptr) Variable Function - 246(dx): 25(ptr) Variable Function - 260(dy): 25(ptr) Variable Function -272(shadowFactor): 25(ptr) Variable Function - 278(count): 254(ptr) Variable Function - 284(range): 254(ptr) Variable Function - 291(x): 254(ptr) Variable Function - 311(y): 254(ptr) Variable Function - 344(param): 22(ptr) Variable Function - 346(param): 25(ptr) Variable Function - 348(param): 30(ptr) Variable Function + 228(texDim): 226(ptr) Variable Function + 240(scale): 25(ptr) Variable Function + 247(dx): 25(ptr) Variable Function + 261(dy): 25(ptr) Variable Function +273(shadowFactor): 25(ptr) Variable Function + 279(count): 255(ptr) Variable Function + 285(range): 255(ptr) Variable Function + 292(x): 255(ptr) Variable Function + 312(y): 255(ptr) Variable Function + 345(param): 22(ptr) Variable Function + 347(param): 25(ptr) Variable Function + 349(param): 30(ptr) Variable Function 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49 - 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 61(layer) 49 - 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12 - 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) - 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 230 230 12 12 - 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(texDim) 49 - 233: 171 Load 177(samplerShadowMap) - 234: 166 Image 233 - 237: 235(ivec3) ImageQuerySizeLod 234 106 - 238: 223(ivec2) VectorShuffle 237 237 0 1 - Store 227(texDim) 238 - 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 242 242 12 12 - 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 240 239(scale) 49 - Store 239(scale) 245 - 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 249 249 12 12 - 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 247 246(dx) 49 - 252: 16(float) Load 239(scale) - 253: 16(float) FMul 252 115 - 256: 254(ptr) AccessChain 227(texDim) 12 - 257: 96(int) Load 256 - 258: 16(float) ConvertSToF 257 - 259: 16(float) FDiv 253 258 - Store 246(dx) 259 - 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 263 263 12 12 - 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 261 260(dy) 49 - 266: 16(float) Load 239(scale) - 267: 16(float) FMul 266 115 - 268: 254(ptr) AccessChain 227(texDim) 45 - 269: 96(int) Load 268 - 270: 16(float) ConvertSToF 269 - 271: 16(float) FDiv 267 270 - Store 260(dy) 271 - 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 275 275 12 12 - 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 273 272(shadowFactor) 49 - Store 272(shadowFactor) 195 - 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 281 281 12 12 - 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 279 278(count) 49 - Store 278(count) 106 - 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 287 287 12 12 - 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 285 284(range) 49 - Store 284(range) 290 - 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 - 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 292 291(x) 49 - 297: 96(int) Load 284(range) - 298: 96(int) SNegate 297 - Store 291(x) 298 - Branch 299 - 299: Label - 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 - LoopMerge 301 302 None - Branch 305 - 305: Label - 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 - 306: 96(int) Load 291(x) - 309: 96(int) Load 284(range) - 310: 139(bool) SLessThanEqual 306 309 - BranchConditional 310 300 301 - 300: Label - 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 - 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 312 311(y) 49 - 318: 96(int) Load 284(range) - 319: 96(int) SNegate 318 - Store 311(y) 319 - Branch 320 - 320: Label - 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 - LoopMerge 322 323 None - Branch 326 - 326: Label - 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 - 327: 96(int) Load 311(y) - 330: 96(int) Load 284(range) - 331: 139(bool) SLessThanEqual 327 330 - BranchConditional 331 321 322 - 321: Label - 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 335 335 12 12 - 332: 16(float) Load 246(dx) - 336: 96(int) Load 291(x) - 337: 16(float) ConvertSToF 336 - 338: 16(float) FMul 332 337 - 339: 16(float) Load 260(dy) - 340: 96(int) Load 311(y) - 341: 16(float) ConvertSToF 340 - 342: 16(float) FMul 339 341 - 343: 27(fvec2) CompositeConstruct 338 342 - 345: 19(fvec4) Load 60(sc) - Store 344(param) 345 - 347: 16(float) Load 61(layer) - Store 346(param) 347 - Store 348(param) 343 - 349: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 344(param) 346(param) 348(param) - 350: 16(float) Load 272(shadowFactor) - 351: 16(float) FAdd 350 349 - Store 272(shadowFactor) 351 - 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 354 354 12 12 - 352: 96(int) Load 278(count) - 355: 96(int) IAdd 352 290 - Store 278(count) 355 - Branch 323 - 323: Label - 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 314 314 12 12 - 356: 96(int) Load 311(y) - 359: 96(int) IAdd 356 290 - Store 311(y) 359 - Branch 320 - 322: Label - 360: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - Branch 302 - 302: Label - 362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 294 294 12 12 - 361: 96(int) Load 291(x) - 364: 96(int) IAdd 361 290 - Store 291(x) 364 - Branch 299 - 301: Label - 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 368 368 12 12 - 365: 16(float) Load 272(shadowFactor) - 369: 96(int) Load 278(count) - 370: 16(float) ConvertSToF 369 - 371: 16(float) FDiv 365 370 - ReturnValue 371 + 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 49 + 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) + 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 231 231 12 12 + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 229 228(texDim) 49 + 234: 173 Load 179(samplerShadowMap) + 235: 168 Image 234 + 238: 236(ivec3) ImageQuerySizeLod 235 108 + 239: 224(ivec2) VectorShuffle 238 238 0 1 + Store 228(texDim) 239 + 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 243 243 12 12 + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 241 240(scale) 49 + Store 240(scale) 246 + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 250 250 12 12 + 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(dx) 49 + 253: 16(float) Load 240(scale) + 254: 16(float) FMul 253 117 + 257: 255(ptr) AccessChain 228(texDim) 12 + 258: 98(int) Load 257 + 259: 16(float) ConvertSToF 258 + 260: 16(float) FDiv 254 259 + Store 247(dx) 260 + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 264 264 12 12 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(dy) 49 + 267: 16(float) Load 240(scale) + 268: 16(float) FMul 267 117 + 269: 255(ptr) AccessChain 228(texDim) 45 + 270: 98(int) Load 269 + 271: 16(float) ConvertSToF 270 + 272: 16(float) FDiv 268 271 + Store 261(dy) 272 + 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 276 276 12 12 + 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(shadowFactor) 49 + Store 273(shadowFactor) 197 + 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 282 282 12 12 + 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(count) 49 + Store 279(count) 108 + 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 288 288 12 12 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 286 285(range) 49 + Store 285(range) 291 + 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 + 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 293 292(x) 49 + 298: 98(int) Load 285(range) + 299: 98(int) SNegate 298 + Store 292(x) 299 + Branch 300 + 300: Label + 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 + LoopMerge 302 303 None + Branch 306 + 306: Label + 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 + 307: 98(int) Load 292(x) + 310: 98(int) Load 285(range) + 311: 141(bool) SLessThanEqual 307 310 + BranchConditional 311 301 302 + 301: Label + 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 313 312(y) 49 + 319: 98(int) Load 285(range) + 320: 98(int) SNegate 319 + Store 312(y) 320 + Branch 321 + 321: Label + 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 + LoopMerge 323 324 None + Branch 327 + 327: Label + 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 + 328: 98(int) Load 312(y) + 331: 98(int) Load 285(range) + 332: 141(bool) SLessThanEqual 328 331 + BranchConditional 332 322 323 + 322: Label + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 336 336 12 12 + 333: 16(float) Load 247(dx) + 337: 98(int) Load 292(x) + 338: 16(float) ConvertSToF 337 + 339: 16(float) FMul 333 338 + 340: 16(float) Load 261(dy) + 341: 98(int) Load 312(y) + 342: 16(float) ConvertSToF 341 + 343: 16(float) FMul 340 342 + 344: 27(fvec2) CompositeConstruct 339 343 + 346: 19(fvec4) Load 60(sc) + Store 345(param) 346 + 348: 16(float) Load 61(layer) + Store 347(param) 348 + Store 349(param) 344 + 350: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 345(param) 347(param) 349(param) + 351: 16(float) Load 273(shadowFactor) + 352: 16(float) FAdd 351 350 + Store 273(shadowFactor) 352 + 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 355 355 12 12 + 353: 98(int) Load 279(count) + 356: 98(int) IAdd 353 291 + Store 279(count) 356 + Branch 324 + 324: Label + 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 + 357: 98(int) Load 312(y) + 360: 98(int) IAdd 357 291 + Store 312(y) 360 + Branch 321 + 323: Label + 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + Branch 303 + 303: Label + 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 364: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 + 362: 98(int) Load 292(x) + 365: 98(int) IAdd 362 291 + Store 292(x) 365 + Branch 300 + 302: Label + 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 369 369 12 12 + 366: 16(float) Load 273(shadowFactor) + 370: 98(int) Load 279(count) + 371: 16(float) ConvertSToF 370 + 372: 16(float) FDiv 366 371 + ReturnValue 372 FunctionEnd -81(shadow(vf3;vf3;): 73(fvec3) Function None 77 - 79(fragcolor): 75(ptr) FunctionParameter - 80(fragpos): 75(ptr) FunctionParameter - 82: Label - 377(i): 254(ptr) Variable Function +82(shadow(vf3;vf3;): 74(fvec3) Function None 78 + 80(fragcolor): 76(ptr) FunctionParameter + 81(fragpos): 76(ptr) FunctionParameter + 83: Label + 377(i): 255(ptr) Variable Function 395(shadowClip): 22(ptr) Variable Function 445(shadowFactor): 25(ptr) Variable Function 452(param): 22(ptr) Variable Function 454(param): 25(ptr) Variable Function - 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 - 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 79(fragcolor) 49 - 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 80(fragpos) 49 - 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 85 85 12 12 - 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 84 81(shadow(vf3;vf3;) + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 86 86 12 12 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 80(fragcolor) 49 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragpos) 49 + 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 378 377(i) 49 - Store 377(i) 106 + Store 377(i) 108 Branch 383 383: Label - 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 LoopMerge 385 386 None Branch 389 389: Label - 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 - 390: 96(int) Load 377(i) - 394: 139(bool) SLessThan 390 393 + 390: 98(int) Load 377(i) + 394: 141(bool) SLessThan 390 393 BranchConditional 394 384 385 384: Label - 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 398 398 12 12 399: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 396 395(shadowClip) 49 - 434: 96(int) Load 377(i) - 437: 435(ptr) AccessChain 431(ubo) 290 434 393 + 434: 98(int) Load 377(i) + 437: 435(ptr) AccessChain 431(ubo) 291 434 393 438: 402 Load 437 - 439: 73(fvec3) Load 80(fragpos) + 439: 74(fvec3) Load 81(fragpos) 440: 16(float) CompositeExtract 439 0 441: 16(float) CompositeExtract 439 1 442: 16(float) CompositeExtract 439 2 - 443: 19(fvec4) CompositeConstruct 440 441 442 115 + 443: 19(fvec4) CompositeConstruct 440 441 442 117 444: 19(fvec4) MatrixTimesVector 438 443 Store 395(shadowClip) 444 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 447 447 12 12 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 446 445(shadowFactor) 49 - 450: 96(int) Load 377(i) + 450: 98(int) Load 377(i) 451: 16(float) ConvertSToF 450 453: 19(fvec4) Load 395(shadowClip) Store 452(param) 453 @@ -1285,20 +1285,20 @@ void main() Store 445(shadowFactor) 455 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 458 458 12 12 456: 16(float) Load 445(shadowFactor) - 459: 73(fvec3) Load 79(fragcolor) - 460: 73(fvec3) VectorTimesScalar 459 456 - Store 79(fragcolor) 460 + 459: 74(fvec3) Load 80(fragcolor) + 460: 74(fvec3) VectorTimesScalar 459 456 + Store 80(fragcolor) 460 Branch 386 386: Label - 462: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 462: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 463: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 - 461: 96(int) Load 377(i) - 464: 96(int) IAdd 461 290 + 461: 98(int) Load 377(i) + 464: 98(int) IAdd 461 291 Store 377(i) 464 Branch 383 385: Label - 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 + 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 467: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 468 468 12 12 - 465: 73(fvec3) Load 79(fragcolor) + 465: 74(fvec3) Load 80(fragcolor) ReturnValue 465 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index 72f83ed798..c23f82344b 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -28,14 +28,14 @@ spv.debuginfo.hlsl.comp 52: String "restDist" 63: String "@main" 67: String "id" - 73: String "dist" - 87: String "int" - 93: String "sphereRadius" - 104: String "gravity" - 109: String "particleCount" - 112: String "UBO" - 115: String "params" - 119: String "ubo" + 74: String "dist" + 88: String "int" + 94: String "sphereRadius" + 105: String "gravity" + 110: String "particleCount" + 113: String "UBO" + 116: String "params" + 120: String "ubo" 146: String "index" 172: String "bool" 184: String "normal" @@ -63,22 +63,22 @@ spv.debuginfo.hlsl.comp Name 29 "restDist" Name 61 "@main(vu3;" Name 60 "id" - Name 71 "dist" - Name 91 "UBO" - MemberName 91(UBO) 0 "deltaT" - MemberName 91(UBO) 1 "particleMass" - MemberName 91(UBO) 2 "springStiffness" - MemberName 91(UBO) 3 "damping" - MemberName 91(UBO) 4 "restDistH" - MemberName 91(UBO) 5 "restDistV" - MemberName 91(UBO) 6 "restDistD" - MemberName 91(UBO) 7 "sphereRadius" - MemberName 91(UBO) 8 "spherePos" - MemberName 91(UBO) 9 "gravity" - MemberName 91(UBO) 10 "particleCount" - Name 113 "ubo" - MemberName 113(ubo) 0 "params" - Name 122 "" + Name 72 "dist" + Name 92 "UBO" + MemberName 92(UBO) 0 "deltaT" + MemberName 92(UBO) 1 "particleMass" + MemberName 92(UBO) 2 "springStiffness" + MemberName 92(UBO) 3 "damping" + MemberName 92(UBO) 4 "restDistH" + MemberName 92(UBO) 5 "restDistV" + MemberName 92(UBO) 6 "restDistD" + MemberName 92(UBO) 7 "sphereRadius" + MemberName 92(UBO) 8 "spherePos" + MemberName 92(UBO) 9 "gravity" + MemberName 92(UBO) 10 "particleCount" + Name 114 "ubo" + MemberName 114(ubo) 0 "params" + Name 123 "" Name 144 "index" Name 182 "Particle" MemberName 182(Particle) 0 "pos" @@ -133,21 +133,21 @@ spv.debuginfo.hlsl.comp Name 963 "id" Name 965 "id" Name 967 "param" - MemberDecorate 91(UBO) 0 Offset 0 - MemberDecorate 91(UBO) 1 Offset 4 - MemberDecorate 91(UBO) 2 Offset 8 - MemberDecorate 91(UBO) 3 Offset 12 - MemberDecorate 91(UBO) 4 Offset 16 - MemberDecorate 91(UBO) 5 Offset 20 - MemberDecorate 91(UBO) 6 Offset 24 - MemberDecorate 91(UBO) 7 Offset 28 - MemberDecorate 91(UBO) 8 Offset 32 - MemberDecorate 91(UBO) 9 Offset 48 - MemberDecorate 91(UBO) 10 Offset 64 - Decorate 113(ubo) Block - MemberDecorate 113(ubo) 0 Offset 0 - Decorate 122 Binding 2 - Decorate 122 DescriptorSet 0 + MemberDecorate 92(UBO) 0 Offset 0 + MemberDecorate 92(UBO) 1 Offset 4 + MemberDecorate 92(UBO) 2 Offset 8 + MemberDecorate 92(UBO) 3 Offset 12 + MemberDecorate 92(UBO) 4 Offset 16 + MemberDecorate 92(UBO) 5 Offset 20 + MemberDecorate 92(UBO) 6 Offset 24 + MemberDecorate 92(UBO) 7 Offset 28 + MemberDecorate 92(UBO) 8 Offset 32 + MemberDecorate 92(UBO) 9 Offset 48 + MemberDecorate 92(UBO) 10 Offset 64 + Decorate 114(ubo) Block + MemberDecorate 114(ubo) 0 Offset 0 + Decorate 123 Binding 2 + Decorate 123 DescriptorSet 0 MemberDecorate 182(Particle) 0 Offset 0 MemberDecorate 182(Particle) 1 Offset 16 MemberDecorate 182(Particle) 2 Offset 32 @@ -210,65 +210,65 @@ spv.debuginfo.hlsl.comp 65: 11(int) Constant 82 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 63 59 34 65 16 37 63 17 65 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 67 55 34 65 16 64 39 38 - 74: 11(int) Constant 76 - 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 73 19 34 74 16 33 39 - 82: 11(int) Constant 77 - 84: TypeVector 8(float) 4 - 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 39 - 86: TypeInt 32 1 - 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 87 14 39 16 - 89: TypeVector 86(int) 2 - 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 88 49 - 91(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 84(fvec4) 84(fvec4) 89(ivec2) - 94: 11(int) Constant 48 - 95: 11(int) Constant 20 - 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 93 10 34 94 95 16 16 17 - 105: 11(int) Constant 50 - 106: 11(int) Constant 16 - 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 85 34 105 106 16 16 17 - 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 104 85 34 105 106 16 16 17 - 110: 11(int) Constant 51 - 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 109 90 34 110 95 16 16 17 - 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 112 38 34 82 16 37 112 16 17 92 96 97 98 99 100 101 102 103 107 108 - 113(ubo): TypeStruct 91(UBO) - 116: 11(int) Constant 56 - 117: 11(int) Constant 12 - 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 115 111 34 116 117 16 16 17 - 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 119 38 34 82 16 37 119 16 17 114 - 120: TypePointer Uniform 113(ubo) - 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 118 49 16 - 122: 120(ptr) Variable Uniform - 124: 11(int) Constant 8 - 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 118 34 82 16 37 2 122 124 - 125: 86(int) Constant 0 - 126: 86(int) Constant 2 - 127: TypePointer Uniform 8(float) - 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 49 16 + 75: 11(int) Constant 76 + 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 74 19 34 75 16 33 39 + 83: 11(int) Constant 77 + 85: TypeVector 8(float) 4 + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 39 + 87: TypeInt 32 1 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 88 14 39 16 + 90: TypeVector 87(int) 2 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 89 49 + 92(UBO): TypeStruct 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 8(float) 85(fvec4) 85(fvec4) 90(ivec2) + 95: 11(int) Constant 48 + 96: 11(int) Constant 20 + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 94 10 34 95 96 16 16 17 + 106: 11(int) Constant 50 + 107: 11(int) Constant 16 + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 105 86 34 106 107 16 16 17 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 105 86 34 106 107 16 16 17 + 111: 11(int) Constant 51 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 110 91 34 111 96 16 16 17 + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 113 38 34 83 16 37 113 16 17 93 97 98 99 100 101 102 103 104 108 109 + 114(ubo): TypeStruct 92(UBO) + 117: 11(int) Constant 56 + 118: 11(int) Constant 12 + 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 116 112 34 117 118 16 16 17 + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 120 38 34 83 16 37 120 16 17 115 + 121: TypePointer Uniform 114(ubo) + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 119 49 16 + 123: 121(ptr) Variable Uniform + 125: 11(int) Constant 8 + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 119 34 83 16 37 2 123 125 + 126: 87(int) Constant 0 + 127: 87(int) Constant 2 + 128: TypePointer Uniform 8(float) + 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 49 16 142: TypePointer Function 11(int) 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 21 16 147: 11(int) Constant 83 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 13 34 147 16 64 39 - 152: 86(int) Constant 10 - 153: TypePointer Uniform 86(int) - 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 49 16 + 152: 87(int) Constant 10 + 153: TypePointer Uniform 87(int) + 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 49 16 164: 11(int) Constant 84 171: TypeBool 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 172 14 49 16 179: 11(int) Constant 85 - 182(Particle): TypeStruct 84(fvec4) 84(fvec4) 84(fvec4) 84(fvec4) 8(float) + 182(Particle): TypeStruct 85(fvec4) 85(fvec4) 85(fvec4) 85(fvec4) 8(float) 185: 11(int) Constant 30 186: 11(int) Constant 15 - 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 - 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 - 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 - 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 85 34 185 186 16 16 17 + 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 86 34 185 186 16 16 17 + 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 86 34 185 186 16 16 17 + 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 86 34 185 186 16 16 17 + 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 184 86 34 185 186 16 16 17 192: 11(int) Constant 31 193: 11(int) Constant 14 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 10 34 192 193 16 16 17 @@ -284,8 +284,8 @@ spv.debuginfo.hlsl.comp 206: TypePointer Uniform 199(particleIn) 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 204 49 16 208(particleIn): 206(ptr) Variable Uniform - 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 205 204 34 196 16 37 205 208(particleIn) 124 - 213: 86(int) Constant 4 + 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 205 204 34 196 16 37 205 208(particleIn) 125 + 213: 87(int) Constant 4 216: 8(float) Constant 1065353216 220: TypeRuntimeArray 182(Particle) 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 194 16 @@ -297,17 +297,17 @@ spv.debuginfo.hlsl.comp 228: TypePointer Uniform 222(particleOut) 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 225 49 16 230(particleOut): 228(ptr) Variable Uniform - 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 226 225 34 227 16 37 226 230(particleOut) 124 - 236: TypePointer Uniform 84(fvec4) - 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 85 49 16 + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 226 225 34 227 16 37 226 230(particleOut) 125 + 236: TypePointer Uniform 85(fvec4) + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 86 49 16 243: 11(int) Constant 90 - 244: 86(int) Constant 1 + 244: 87(int) Constant 1 245: 8(float) Constant 0 - 246: 84(fvec4) ConstantComposite 245 245 245 245 + 246: 85(fvec4) ConstantComposite 245 245 245 245 249: 11(int) Constant 91 255: 11(int) Constant 95 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 19 34 255 16 64 39 - 259: 86(int) Constant 9 + 259: 87(int) Constant 9 269: 11(int) Constant 97 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 268 19 34 269 16 64 39 279: 11(int) Constant 98 @@ -318,19 +318,19 @@ spv.debuginfo.hlsl.comp 325: 11(int) Constant 107 342: 11(int) Constant 110 354: 11(int) Constant 111 - 359: 86(int) Constant 5 + 359: 87(int) Constant 5 375: 11(int) Constant 114 383: 11(int) Constant 115 403: 11(int) Constant 118 419: 11(int) Constant 119 - 425: 86(int) Constant 6 + 425: 87(int) Constant 6 441: 11(int) Constant 122 453: 11(int) Constant 123 474: 11(int) Constant 126 494: 11(int) Constant 127 515: 11(int) Constant 130 531: 11(int) Constant 131 - 549: 86(int) Constant 3 + 549: 87(int) Constant 3 553: 11(int) Constant 134 563: 11(int) Constant 137 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 562 19 34 563 16 64 39 @@ -339,9 +339,9 @@ spv.debuginfo.hlsl.comp 597: 11(int) Constant 139 612: 11(int) Constant 142 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 611 19 34 612 16 64 39 - 619: 86(int) Constant 8 + 619: 87(int) Constant 8 626: 11(int) Constant 143 - 628: 86(int) Constant 7 + 628: 87(int) Constant 7 631: 8(float) Constant 1008981770 639: 11(int) Constant 145 658: 11(int) Constant 147 @@ -358,7 +358,7 @@ spv.debuginfo.hlsl.comp 674: TypePointer Uniform 668($Global) 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 672 49 16 676: 674(ptr) Variable Uniform - 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 672 34 667 16 37 2 676 124 + 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 672 34 667 16 37 2 676 125 678: TypePointer Uniform 11(int) 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 49 16 689: 11(int) Constant 152 @@ -408,31 +408,31 @@ spv.debuginfo.hlsl.comp 28(p1): 20(ptr) FunctionParameter 29(restDist): 23(ptr) FunctionParameter 31: Label - 71(dist): 20(ptr) Variable Function + 72(dist): 20(ptr) Variable Function 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 33 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 36 36 16 16 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 27(p0) 44 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 47 28(p1) 44 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 51 29(restDist) 44 - 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 30(springForce(vf3;vf3;f1;) - 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 74 74 16 16 - 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 71(dist) 44 - 77: 18(fvec3) Load 27(p0) - 78: 18(fvec3) Load 28(p1) - 79: 18(fvec3) FSub 77 78 - Store 71(dist) 79 - 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 82 82 16 16 - 80: 18(fvec3) Load 71(dist) - 83: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 80 - 129: 127(ptr) AccessChain 122 125 126 - 130: 8(float) Load 129 - 131: 18(fvec3) VectorTimesScalar 83 130 - 132: 18(fvec3) Load 71(dist) - 133: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 132 - 134: 8(float) Load 29(restDist) - 135: 8(float) FSub 133 134 - 136: 18(fvec3) VectorTimesScalar 131 135 - ReturnValue 136 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 33 30(springForce(vf3;vf3;f1;) + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 75 75 16 16 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 73 72(dist) 44 + 78: 18(fvec3) Load 27(p0) + 79: 18(fvec3) Load 28(p1) + 80: 18(fvec3) FSub 78 79 + Store 72(dist) 80 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 83 83 16 16 + 81: 18(fvec3) Load 72(dist) + 84: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 81 + 130: 128(ptr) AccessChain 123 126 127 + 131: 8(float) Load 130 + 132: 18(fvec3) VectorTimesScalar 84 131 + 133: 18(fvec3) Load 72(dist) + 134: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 133 + 135: 8(float) Load 29(restDist) + 136: 8(float) FSub 134 135 + 137: 18(fvec3) VectorTimesScalar 132 136 + ReturnValue 137 FunctionEnd 61(@main(vu3;): 4 Function None 58 60(id): 56(ptr) FunctionParameter @@ -472,15 +472,15 @@ spv.debuginfo.hlsl.comp 723(b): 20(ptr) Variable Function 740(c): 20(ptr) Variable Function 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 65 65 16 16 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 60(id) 44 - 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 65 65 16 16 - 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) + 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 147 147 16 16 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(index) 44 150: 142(ptr) AccessChain 60(id) 38 151: 11(int) Load 150 - 155: 153(ptr) AccessChain 122 125 152 16 - 156: 86(int) Load 155 + 155: 153(ptr) AccessChain 123 126 152 16 + 156: 87(int) Load 155 157: 11(int) Bitcast 156 158: 11(int) IMul 151 157 159: 142(ptr) AccessChain 60(id) 16 @@ -489,11 +489,11 @@ spv.debuginfo.hlsl.comp Store 144(index) 161 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 164 164 16 16 162: 11(int) Load 144(index) - 165: 153(ptr) AccessChain 122 125 152 16 - 166: 86(int) Load 165 - 167: 153(ptr) AccessChain 122 125 152 38 - 168: 86(int) Load 167 - 169: 86(int) IMul 166 168 + 165: 153(ptr) AccessChain 123 126 152 16 + 166: 87(int) Load 165 + 167: 153(ptr) AccessChain 123 126 152 38 + 168: 87(int) Load 167 + 169: 87(int) IMul 166 168 170: 11(int) Bitcast 169 174: 171(bool) UGreaterThan 162 170 SelectionMerge 176 None @@ -506,7 +506,7 @@ spv.debuginfo.hlsl.comp 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 196 196 16 16 210: 11(int) Load 144(index) - 214: 127(ptr) AccessChain 208(particleIn) 125 210 213 + 214: 128(ptr) AccessChain 208(particleIn) 126 210 213 215: 8(float) Load 214 217: 171(bool) FOrdEqual 215 216 SelectionMerge 219 None @@ -516,13 +516,13 @@ spv.debuginfo.hlsl.comp 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 227 227 16 16 232: 11(int) Load 144(index) 235: 11(int) Load 144(index) - 238: 236(ptr) AccessChain 230(particleOut) 125 235 125 - 239: 84(fvec4) Load 238 - 240: 236(ptr) AccessChain 230(particleOut) 125 232 125 + 238: 236(ptr) AccessChain 230(particleOut) 126 235 126 + 239: 85(fvec4) Load 238 + 240: 236(ptr) AccessChain 230(particleOut) 126 232 126 Store 240 239 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 243 243 16 16 241: 11(int) Load 144(index) - 247: 236(ptr) AccessChain 230(particleOut) 125 241 244 + 247: 236(ptr) AccessChain 230(particleOut) 126 241 244 Store 247 246 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 249 249 16 16 Return @@ -530,25 +530,25 @@ spv.debuginfo.hlsl.comp 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 255 255 16 16 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(force) 44 - 260: 236(ptr) AccessChain 122 125 259 - 261: 84(fvec4) Load 260 + 260: 236(ptr) AccessChain 123 126 259 + 261: 85(fvec4) Load 260 262: 18(fvec3) VectorShuffle 261 261 0 1 2 - 263: 127(ptr) AccessChain 122 125 244 + 263: 128(ptr) AccessChain 123 126 244 264: 8(float) Load 263 265: 18(fvec3) VectorTimesScalar 262 264 Store 252(force) 265 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 269 269 16 16 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 267 266(pos) 44 272: 11(int) Load 144(index) - 273: 236(ptr) AccessChain 208(particleIn) 125 272 125 - 274: 84(fvec4) Load 273 + 273: 236(ptr) AccessChain 208(particleIn) 126 272 126 + 274: 85(fvec4) Load 273 275: 18(fvec3) VectorShuffle 274 274 0 1 2 Store 266(pos) 275 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 279 279 16 16 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(vel) 44 282: 11(int) Load 144(index) - 283: 236(ptr) AccessChain 208(particleIn) 125 282 244 - 284: 84(fvec4) Load 283 + 283: 236(ptr) AccessChain 208(particleIn) 126 282 244 + 284: 85(fvec4) Load 283 285: 18(fvec3) VectorShuffle 284 284 0 1 2 Store 276(vel) 285 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 288 288 16 16 @@ -562,13 +562,13 @@ spv.debuginfo.hlsl.comp 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 296 296 16 16 293: 11(int) Load 144(index) 297: 11(int) ISub 293 38 - 299: 236(ptr) AccessChain 208(particleIn) 125 297 125 - 300: 84(fvec4) Load 299 + 299: 236(ptr) AccessChain 208(particleIn) 126 297 126 + 300: 85(fvec4) Load 299 301: 18(fvec3) VectorShuffle 300 300 0 1 2 Store 298(param) 301 303: 18(fvec3) Load 266(pos) Store 302(param) 303 - 305: 127(ptr) AccessChain 122 125 213 + 305: 128(ptr) AccessChain 123 126 213 306: 8(float) Load 305 Store 304(param) 306 307: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 298(param) 302(param) 304(param) @@ -581,9 +581,9 @@ spv.debuginfo.hlsl.comp 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 313 313 16 16 310: 142(ptr) AccessChain 60(id) 16 314: 11(int) Load 310 - 315: 153(ptr) AccessChain 122 125 152 16 - 316: 86(int) Load 315 - 317: 86(int) ISub 316 244 + 315: 153(ptr) AccessChain 123 126 152 16 + 316: 87(int) Load 315 + 317: 87(int) ISub 316 244 318: 11(int) Bitcast 317 319: 171(bool) ULessThan 314 318 SelectionMerge 321 None @@ -593,13 +593,13 @@ spv.debuginfo.hlsl.comp 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 325 325 16 16 322: 11(int) Load 144(index) 326: 11(int) IAdd 322 38 - 328: 236(ptr) AccessChain 208(particleIn) 125 326 125 - 329: 84(fvec4) Load 328 + 328: 236(ptr) AccessChain 208(particleIn) 126 326 126 + 329: 85(fvec4) Load 328 330: 18(fvec3) VectorShuffle 329 329 0 1 2 Store 327(param) 330 332: 18(fvec3) Load 266(pos) Store 331(param) 332 - 334: 127(ptr) AccessChain 122 125 213 + 334: 128(ptr) AccessChain 123 126 213 335: 8(float) Load 334 Store 333(param) 335 336: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 327(param) 331(param) 333(param) @@ -612,9 +612,9 @@ spv.debuginfo.hlsl.comp 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 342 342 16 16 339: 142(ptr) AccessChain 60(id) 38 343: 11(int) Load 339 - 344: 153(ptr) AccessChain 122 125 152 38 - 345: 86(int) Load 344 - 346: 86(int) ISub 345 244 + 344: 153(ptr) AccessChain 123 126 152 38 + 345: 87(int) Load 344 + 346: 87(int) ISub 345 244 347: 11(int) Bitcast 346 348: 171(bool) ULessThan 343 347 SelectionMerge 350 None @@ -623,17 +623,17 @@ spv.debuginfo.hlsl.comp 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 354 354 16 16 351: 11(int) Load 144(index) - 355: 153(ptr) AccessChain 122 125 152 16 - 356: 86(int) Load 355 + 355: 153(ptr) AccessChain 123 126 152 16 + 356: 87(int) Load 355 357: 11(int) Bitcast 356 358: 11(int) IAdd 351 357 - 361: 236(ptr) AccessChain 208(particleIn) 125 358 125 - 362: 84(fvec4) Load 361 + 361: 236(ptr) AccessChain 208(particleIn) 126 358 126 + 362: 85(fvec4) Load 361 363: 18(fvec3) VectorShuffle 362 362 0 1 2 Store 360(param) 363 365: 18(fvec3) Load 266(pos) Store 364(param) 365 - 367: 127(ptr) AccessChain 122 125 359 + 367: 128(ptr) AccessChain 123 126 359 368: 8(float) Load 367 Store 366(param) 368 369: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 360(param) 364(param) 366(param) @@ -653,17 +653,17 @@ spv.debuginfo.hlsl.comp 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 383 383 16 16 380: 11(int) Load 144(index) - 384: 153(ptr) AccessChain 122 125 152 16 - 385: 86(int) Load 384 + 384: 153(ptr) AccessChain 123 126 152 16 + 385: 87(int) Load 384 386: 11(int) Bitcast 385 387: 11(int) ISub 380 386 - 389: 236(ptr) AccessChain 208(particleIn) 125 387 125 - 390: 84(fvec4) Load 389 + 389: 236(ptr) AccessChain 208(particleIn) 126 387 126 + 390: 85(fvec4) Load 389 391: 18(fvec3) VectorShuffle 390 390 0 1 2 Store 388(param) 391 393: 18(fvec3) Load 266(pos) Store 392(param) 393 - 395: 127(ptr) AccessChain 122 125 359 + 395: 128(ptr) AccessChain 123 126 359 396: 8(float) Load 395 Store 394(param) 396 397: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 388(param) 392(param) 394(param) @@ -679,9 +679,9 @@ spv.debuginfo.hlsl.comp 405: 171(bool) UGreaterThan 404 16 406: 142(ptr) AccessChain 60(id) 38 407: 11(int) Load 406 - 408: 153(ptr) AccessChain 122 125 152 38 - 409: 86(int) Load 408 - 410: 86(int) ISub 409 244 + 408: 153(ptr) AccessChain 123 126 152 38 + 409: 87(int) Load 408 + 410: 87(int) ISub 409 244 411: 11(int) Bitcast 410 412: 171(bool) ULessThan 407 411 413: 171(bool) LogicalAnd 405 412 @@ -691,18 +691,18 @@ spv.debuginfo.hlsl.comp 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 419 419 16 16 416: 11(int) Load 144(index) - 420: 153(ptr) AccessChain 122 125 152 16 - 421: 86(int) Load 420 + 420: 153(ptr) AccessChain 123 126 152 16 + 421: 87(int) Load 420 422: 11(int) Bitcast 421 423: 11(int) IAdd 416 422 424: 11(int) ISub 423 38 - 427: 236(ptr) AccessChain 208(particleIn) 125 424 125 - 428: 84(fvec4) Load 427 + 427: 236(ptr) AccessChain 208(particleIn) 126 424 126 + 428: 85(fvec4) Load 427 429: 18(fvec3) VectorShuffle 428 428 0 1 2 Store 426(param) 429 431: 18(fvec3) Load 266(pos) Store 430(param) 431 - 433: 127(ptr) AccessChain 122 125 425 + 433: 128(ptr) AccessChain 123 126 425 434: 8(float) Load 433 Store 432(param) 434 435: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 426(param) 430(param) 432(param) @@ -726,18 +726,18 @@ spv.debuginfo.hlsl.comp 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 453 453 16 16 450: 11(int) Load 144(index) - 454: 153(ptr) AccessChain 122 125 152 16 - 455: 86(int) Load 454 + 454: 153(ptr) AccessChain 123 126 152 16 + 455: 87(int) Load 454 456: 11(int) Bitcast 455 457: 11(int) ISub 450 456 458: 11(int) ISub 457 38 - 460: 236(ptr) AccessChain 208(particleIn) 125 458 125 - 461: 84(fvec4) Load 460 + 460: 236(ptr) AccessChain 208(particleIn) 126 458 126 + 461: 85(fvec4) Load 460 462: 18(fvec3) VectorShuffle 461 461 0 1 2 Store 459(param) 462 464: 18(fvec3) Load 266(pos) Store 463(param) 464 - 466: 127(ptr) AccessChain 122 125 425 + 466: 128(ptr) AccessChain 123 126 425 467: 8(float) Load 466 Store 465(param) 467 468: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 459(param) 463(param) 465(param) @@ -750,16 +750,16 @@ spv.debuginfo.hlsl.comp 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 474 474 16 16 471: 142(ptr) AccessChain 60(id) 16 475: 11(int) Load 471 - 476: 153(ptr) AccessChain 122 125 152 16 - 477: 86(int) Load 476 - 478: 86(int) ISub 477 244 + 476: 153(ptr) AccessChain 123 126 152 16 + 477: 87(int) Load 476 + 478: 87(int) ISub 477 244 479: 11(int) Bitcast 478 480: 171(bool) ULessThan 475 479 481: 142(ptr) AccessChain 60(id) 38 482: 11(int) Load 481 - 483: 153(ptr) AccessChain 122 125 152 38 - 484: 86(int) Load 483 - 485: 86(int) ISub 484 244 + 483: 153(ptr) AccessChain 123 126 152 38 + 484: 87(int) Load 483 + 485: 87(int) ISub 484 244 486: 11(int) Bitcast 485 487: 171(bool) ULessThan 482 486 488: 171(bool) LogicalAnd 480 487 @@ -769,18 +769,18 @@ spv.debuginfo.hlsl.comp 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 493: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 494 494 16 16 491: 11(int) Load 144(index) - 495: 153(ptr) AccessChain 122 125 152 16 - 496: 86(int) Load 495 + 495: 153(ptr) AccessChain 123 126 152 16 + 496: 87(int) Load 495 497: 11(int) Bitcast 496 498: 11(int) IAdd 491 497 499: 11(int) IAdd 498 38 - 501: 236(ptr) AccessChain 208(particleIn) 125 499 125 - 502: 84(fvec4) Load 501 + 501: 236(ptr) AccessChain 208(particleIn) 126 499 126 + 502: 85(fvec4) Load 501 503: 18(fvec3) VectorShuffle 502 502 0 1 2 Store 500(param) 503 505: 18(fvec3) Load 266(pos) Store 504(param) 505 - 507: 127(ptr) AccessChain 122 125 425 + 507: 128(ptr) AccessChain 123 126 425 508: 8(float) Load 507 Store 506(param) 508 509: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 500(param) 504(param) 506(param) @@ -793,9 +793,9 @@ spv.debuginfo.hlsl.comp 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 515 515 16 16 512: 142(ptr) AccessChain 60(id) 16 516: 11(int) Load 512 - 517: 153(ptr) AccessChain 122 125 152 16 - 518: 86(int) Load 517 - 519: 86(int) ISub 518 244 + 517: 153(ptr) AccessChain 123 126 152 16 + 518: 87(int) Load 517 + 519: 87(int) ISub 518 244 520: 11(int) Bitcast 519 521: 171(bool) ULessThan 516 520 522: 142(ptr) AccessChain 60(id) 38 @@ -808,18 +808,18 @@ spv.debuginfo.hlsl.comp 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 530: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 531 531 16 16 528: 11(int) Load 144(index) - 532: 153(ptr) AccessChain 122 125 152 16 - 533: 86(int) Load 532 + 532: 153(ptr) AccessChain 123 126 152 16 + 533: 87(int) Load 532 534: 11(int) Bitcast 533 535: 11(int) ISub 528 534 536: 11(int) IAdd 535 38 - 538: 236(ptr) AccessChain 208(particleIn) 125 536 125 - 539: 84(fvec4) Load 538 + 538: 236(ptr) AccessChain 208(particleIn) 126 536 126 + 539: 85(fvec4) Load 538 540: 18(fvec3) VectorShuffle 539 539 0 1 2 Store 537(param) 540 542: 18(fvec3) Load 266(pos) Store 541(param) 542 - 544: 127(ptr) AccessChain 122 125 425 + 544: 128(ptr) AccessChain 123 126 425 545: 8(float) Load 544 Store 543(param) 545 546: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 537(param) 541(param) 543(param) @@ -830,7 +830,7 @@ spv.debuginfo.hlsl.comp 527: Label 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 553 553 16 16 - 550: 127(ptr) AccessChain 122 125 549 + 550: 128(ptr) AccessChain 123 126 549 554: 8(float) Load 550 555: 8(float) FNegate 554 556: 18(fvec3) Load 276(vel) @@ -841,7 +841,7 @@ spv.debuginfo.hlsl.comp 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 563 563 16 16 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 561 560(f) 44 566: 18(fvec3) Load 252(force) - 567: 127(ptr) AccessChain 122 125 244 + 567: 128(ptr) AccessChain 123 126 244 568: 8(float) Load 567 569: 8(float) FDiv 216 568 570: 18(fvec3) VectorTimesScalar 566 569 @@ -850,54 +850,54 @@ spv.debuginfo.hlsl.comp 571: 11(int) Load 144(index) 574: 18(fvec3) Load 266(pos) 575: 18(fvec3) Load 276(vel) - 576: 127(ptr) AccessChain 122 125 125 + 576: 128(ptr) AccessChain 123 126 126 577: 8(float) Load 576 578: 18(fvec3) VectorTimesScalar 575 577 579: 18(fvec3) FAdd 574 578 581: 18(fvec3) Load 560(f) 582: 18(fvec3) VectorTimesScalar 581 580 - 583: 127(ptr) AccessChain 122 125 125 + 583: 128(ptr) AccessChain 123 126 126 584: 8(float) Load 583 585: 18(fvec3) VectorTimesScalar 582 584 - 586: 127(ptr) AccessChain 122 125 125 + 586: 128(ptr) AccessChain 123 126 126 587: 8(float) Load 586 588: 18(fvec3) VectorTimesScalar 585 587 589: 18(fvec3) FAdd 579 588 590: 8(float) CompositeExtract 589 0 591: 8(float) CompositeExtract 589 1 592: 8(float) CompositeExtract 589 2 - 593: 84(fvec4) CompositeConstruct 590 591 592 216 - 594: 236(ptr) AccessChain 230(particleOut) 125 571 125 + 593: 85(fvec4) CompositeConstruct 590 591 592 216 + 594: 236(ptr) AccessChain 230(particleOut) 126 571 126 Store 594 593 596: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 597 597 16 16 595: 11(int) Load 144(index) 598: 18(fvec3) Load 276(vel) 599: 18(fvec3) Load 560(f) - 600: 127(ptr) AccessChain 122 125 125 + 600: 128(ptr) AccessChain 123 126 126 601: 8(float) Load 600 602: 18(fvec3) VectorTimesScalar 599 601 603: 18(fvec3) FAdd 598 602 604: 8(float) CompositeExtract 603 0 605: 8(float) CompositeExtract 603 1 606: 8(float) CompositeExtract 603 2 - 607: 84(fvec4) CompositeConstruct 604 605 606 245 - 608: 236(ptr) AccessChain 230(particleOut) 125 595 244 + 607: 85(fvec4) CompositeConstruct 604 605 606 245 + 608: 236(ptr) AccessChain 230(particleOut) 126 595 244 Store 608 607 614: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 612 612 16 16 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 610 609(sphereDist) 44 615: 11(int) Load 144(index) - 616: 236(ptr) AccessChain 230(particleOut) 125 615 125 - 617: 84(fvec4) Load 616 + 616: 236(ptr) AccessChain 230(particleOut) 126 615 126 + 617: 85(fvec4) Load 616 618: 18(fvec3) VectorShuffle 617 617 0 1 2 - 620: 236(ptr) AccessChain 122 125 619 - 621: 84(fvec4) Load 620 + 620: 236(ptr) AccessChain 123 126 619 + 621: 85(fvec4) Load 620 622: 18(fvec3) VectorShuffle 621 621 0 1 2 623: 18(fvec3) FSub 618 622 Store 609(sphereDist) 623 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 626 626 16 16 624: 18(fvec3) Load 609(sphereDist) 627: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 624 - 629: 127(ptr) AccessChain 122 125 628 + 629: 128(ptr) AccessChain 123 126 628 630: 8(float) Load 629 632: 8(float) FAdd 630 631 633: 171(bool) FOrdLessThan 627 632 @@ -907,34 +907,34 @@ spv.debuginfo.hlsl.comp 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 639 639 16 16 636: 11(int) Load 144(index) - 640: 236(ptr) AccessChain 122 125 619 - 641: 84(fvec4) Load 640 + 640: 236(ptr) AccessChain 123 126 619 + 641: 85(fvec4) Load 640 642: 18(fvec3) VectorShuffle 641 641 0 1 2 643: 18(fvec3) Load 609(sphereDist) 644: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 643 - 645: 127(ptr) AccessChain 122 125 628 + 645: 128(ptr) AccessChain 123 126 628 646: 8(float) Load 645 647: 8(float) FAdd 646 631 648: 18(fvec3) VectorTimesScalar 644 647 649: 18(fvec3) FAdd 642 648 - 650: 127(ptr) AccessChain 230(particleOut) 125 636 125 16 + 650: 128(ptr) AccessChain 230(particleOut) 126 636 126 16 651: 8(float) CompositeExtract 649 0 Store 650 651 - 652: 127(ptr) AccessChain 230(particleOut) 125 636 125 38 + 652: 128(ptr) AccessChain 230(particleOut) 126 636 126 38 653: 8(float) CompositeExtract 649 1 Store 652 653 - 654: 127(ptr) AccessChain 230(particleOut) 125 636 125 49 + 654: 128(ptr) AccessChain 230(particleOut) 126 636 126 49 655: 8(float) CompositeExtract 649 2 Store 654 655 657: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 658 658 16 16 656: 11(int) Load 144(index) - 659: 236(ptr) AccessChain 230(particleOut) 125 656 244 + 659: 236(ptr) AccessChain 230(particleOut) 126 656 244 Store 659 246 Branch 635 635: Label 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 682: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 667 667 16 16 - 680: 678(ptr) AccessChain 676 125 125 + 680: 678(ptr) AccessChain 676 126 126 683: 11(int) Load 680 684: 171(bool) IEqual 683 38 SelectionMerge 686 None @@ -964,8 +964,8 @@ spv.debuginfo.hlsl.comp 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 710 709(a) 44 716: 11(int) Load 144(index) 717: 11(int) ISub 716 38 - 718: 236(ptr) AccessChain 208(particleIn) 125 717 125 - 719: 84(fvec4) Load 718 + 718: 236(ptr) AccessChain 208(particleIn) 126 717 126 + 719: 85(fvec4) Load 718 720: 18(fvec3) VectorShuffle 719 719 0 1 2 721: 18(fvec3) Load 266(pos) 722: 18(fvec3) FSub 720 721 @@ -973,13 +973,13 @@ spv.debuginfo.hlsl.comp 728: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 726 726 16 16 727: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(b) 44 729: 11(int) Load 144(index) - 730: 153(ptr) AccessChain 122 125 152 16 - 731: 86(int) Load 730 + 730: 153(ptr) AccessChain 123 126 152 16 + 731: 87(int) Load 730 732: 11(int) Bitcast 731 733: 11(int) ISub 729 732 734: 11(int) ISub 733 38 - 735: 236(ptr) AccessChain 208(particleIn) 125 734 125 - 736: 84(fvec4) Load 735 + 735: 236(ptr) AccessChain 208(particleIn) 126 734 126 + 736: 85(fvec4) Load 735 737: 18(fvec3) VectorShuffle 736 736 0 1 2 738: 18(fvec3) Load 266(pos) 739: 18(fvec3) FSub 737 738 @@ -987,12 +987,12 @@ spv.debuginfo.hlsl.comp 745: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 743 743 16 16 744: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 741 740(c) 44 746: 11(int) Load 144(index) - 747: 153(ptr) AccessChain 122 125 152 16 - 748: 86(int) Load 747 + 747: 153(ptr) AccessChain 123 126 152 16 + 748: 87(int) Load 747 749: 11(int) Bitcast 748 750: 11(int) ISub 746 749 - 751: 236(ptr) AccessChain 208(particleIn) 125 750 125 - 752: 84(fvec4) Load 751 + 751: 236(ptr) AccessChain 208(particleIn) 126 750 126 + 752: 85(fvec4) Load 751 753: 18(fvec3) VectorShuffle 752 752 0 1 2 754: 18(fvec3) Load 266(pos) 755: 18(fvec3) FSub 753 754 @@ -1014,9 +1014,9 @@ spv.debuginfo.hlsl.comp 769: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 770 770 16 16 767: 142(ptr) AccessChain 60(id) 16 771: 11(int) Load 767 - 772: 153(ptr) AccessChain 122 125 152 16 - 773: 86(int) Load 772 - 774: 86(int) ISub 773 244 + 772: 153(ptr) AccessChain 123 126 152 16 + 773: 87(int) Load 772 + 774: 87(int) ISub 773 244 775: 11(int) Bitcast 774 776: 171(bool) ULessThan 771 775 SelectionMerge 778 None @@ -1025,25 +1025,25 @@ spv.debuginfo.hlsl.comp 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 782 782 16 16 779: 11(int) Load 144(index) - 783: 153(ptr) AccessChain 122 125 152 16 - 784: 86(int) Load 783 + 783: 153(ptr) AccessChain 123 126 152 16 + 784: 87(int) Load 783 785: 11(int) Bitcast 784 786: 11(int) ISub 779 785 - 787: 236(ptr) AccessChain 208(particleIn) 125 786 125 - 788: 84(fvec4) Load 787 + 787: 236(ptr) AccessChain 208(particleIn) 126 786 126 + 788: 85(fvec4) Load 787 789: 18(fvec3) VectorShuffle 788 788 0 1 2 790: 18(fvec3) Load 266(pos) 791: 18(fvec3) FSub 789 790 Store 709(a) 791 793: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 794 794 16 16 792: 11(int) Load 144(index) - 795: 153(ptr) AccessChain 122 125 152 16 - 796: 86(int) Load 795 + 795: 153(ptr) AccessChain 123 126 152 16 + 796: 87(int) Load 795 797: 11(int) Bitcast 796 798: 11(int) ISub 792 797 799: 11(int) IAdd 798 38 - 800: 236(ptr) AccessChain 208(particleIn) 125 799 125 - 801: 84(fvec4) Load 800 + 800: 236(ptr) AccessChain 208(particleIn) 126 799 126 + 801: 85(fvec4) Load 800 802: 18(fvec3) VectorShuffle 801 801 0 1 2 803: 18(fvec3) Load 266(pos) 804: 18(fvec3) FSub 802 803 @@ -1051,8 +1051,8 @@ spv.debuginfo.hlsl.comp 806: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 807 807 16 16 805: 11(int) Load 144(index) 808: 11(int) IAdd 805 38 - 809: 236(ptr) AccessChain 208(particleIn) 125 808 125 - 810: 84(fvec4) Load 809 + 809: 236(ptr) AccessChain 208(particleIn) 126 808 126 + 810: 85(fvec4) Load 809 811: 18(fvec3) VectorShuffle 810 810 0 1 2 812: 18(fvec3) Load 266(pos) 813: 18(fvec3) FSub 811 812 @@ -1077,9 +1077,9 @@ spv.debuginfo.hlsl.comp 828: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 829 829 16 16 826: 142(ptr) AccessChain 60(id) 38 830: 11(int) Load 826 - 831: 153(ptr) AccessChain 122 125 152 38 - 832: 86(int) Load 831 - 833: 86(int) ISub 832 244 + 831: 153(ptr) AccessChain 123 126 152 38 + 832: 87(int) Load 831 + 833: 87(int) ISub 832 244 834: 11(int) Bitcast 833 835: 171(bool) ULessThan 830 834 SelectionMerge 837 None @@ -1096,25 +1096,25 @@ spv.debuginfo.hlsl.comp 847: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 848: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 849 849 16 16 846: 11(int) Load 144(index) - 850: 153(ptr) AccessChain 122 125 152 16 - 851: 86(int) Load 850 + 850: 153(ptr) AccessChain 123 126 152 16 + 851: 87(int) Load 850 852: 11(int) Bitcast 851 853: 11(int) IAdd 846 852 - 854: 236(ptr) AccessChain 208(particleIn) 125 853 125 - 855: 84(fvec4) Load 854 + 854: 236(ptr) AccessChain 208(particleIn) 126 853 126 + 855: 85(fvec4) Load 854 856: 18(fvec3) VectorShuffle 855 855 0 1 2 857: 18(fvec3) Load 266(pos) 858: 18(fvec3) FSub 856 857 Store 709(a) 858 860: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 861 861 16 16 859: 11(int) Load 144(index) - 862: 153(ptr) AccessChain 122 125 152 16 - 863: 86(int) Load 862 + 862: 153(ptr) AccessChain 123 126 152 16 + 863: 87(int) Load 862 864: 11(int) Bitcast 863 865: 11(int) IAdd 859 864 866: 11(int) ISub 865 38 - 867: 236(ptr) AccessChain 208(particleIn) 125 866 125 - 868: 84(fvec4) Load 867 + 867: 236(ptr) AccessChain 208(particleIn) 126 866 126 + 868: 85(fvec4) Load 867 869: 18(fvec3) VectorShuffle 868 868 0 1 2 870: 18(fvec3) Load 266(pos) 871: 18(fvec3) FSub 869 870 @@ -1122,8 +1122,8 @@ spv.debuginfo.hlsl.comp 873: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 874 874 16 16 872: 11(int) Load 144(index) 875: 11(int) ISub 872 38 - 876: 236(ptr) AccessChain 208(particleIn) 125 875 125 - 877: 84(fvec4) Load 876 + 876: 236(ptr) AccessChain 208(particleIn) 126 875 126 + 877: 85(fvec4) Load 876 878: 18(fvec3) VectorShuffle 877 877 0 1 2 879: 18(fvec3) Load 266(pos) 880: 18(fvec3) FSub 878 879 @@ -1145,9 +1145,9 @@ spv.debuginfo.hlsl.comp 894: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 895 895 16 16 892: 142(ptr) AccessChain 60(id) 16 896: 11(int) Load 892 - 897: 153(ptr) AccessChain 122 125 152 16 - 898: 86(int) Load 897 - 899: 86(int) ISub 898 244 + 897: 153(ptr) AccessChain 123 126 152 16 + 898: 87(int) Load 897 + 899: 87(int) ISub 898 244 900: 11(int) Bitcast 899 901: 171(bool) ULessThan 896 900 SelectionMerge 903 None @@ -1157,33 +1157,33 @@ spv.debuginfo.hlsl.comp 906: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 907 907 16 16 904: 11(int) Load 144(index) 908: 11(int) IAdd 904 38 - 909: 236(ptr) AccessChain 208(particleIn) 125 908 125 - 910: 84(fvec4) Load 909 + 909: 236(ptr) AccessChain 208(particleIn) 126 908 126 + 910: 85(fvec4) Load 909 911: 18(fvec3) VectorShuffle 910 910 0 1 2 912: 18(fvec3) Load 266(pos) 913: 18(fvec3) FSub 911 912 Store 709(a) 913 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 916 916 16 16 914: 11(int) Load 144(index) - 917: 153(ptr) AccessChain 122 125 152 16 - 918: 86(int) Load 917 + 917: 153(ptr) AccessChain 123 126 152 16 + 918: 87(int) Load 917 919: 11(int) Bitcast 918 920: 11(int) IAdd 914 919 921: 11(int) IAdd 920 38 - 922: 236(ptr) AccessChain 208(particleIn) 125 921 125 - 923: 84(fvec4) Load 922 + 922: 236(ptr) AccessChain 208(particleIn) 126 921 126 + 923: 85(fvec4) Load 922 924: 18(fvec3) VectorShuffle 923 923 0 1 2 925: 18(fvec3) Load 266(pos) 926: 18(fvec3) FSub 924 925 Store 723(b) 926 928: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 929 929 16 16 927: 11(int) Load 144(index) - 930: 153(ptr) AccessChain 122 125 152 16 - 931: 86(int) Load 930 + 930: 153(ptr) AccessChain 123 126 152 16 + 931: 87(int) Load 930 932: 11(int) Bitcast 931 933: 11(int) IAdd 927 932 - 934: 236(ptr) AccessChain 208(particleIn) 125 933 125 - 935: 84(fvec4) Load 934 + 934: 236(ptr) AccessChain 208(particleIn) 126 933 126 + 935: 85(fvec4) Load 934 936: 18(fvec3) VectorShuffle 935 935 0 1 2 937: 18(fvec3) Load 266(pos) 938: 18(fvec3) FSub 936 937 @@ -1212,8 +1212,8 @@ spv.debuginfo.hlsl.comp 957: 8(float) CompositeExtract 956 0 958: 8(float) CompositeExtract 956 1 959: 8(float) CompositeExtract 956 2 - 960: 84(fvec4) CompositeConstruct 957 958 959 245 - 961: 236(ptr) AccessChain 230(particleOut) 125 951 549 + 960: 85(fvec4) CompositeConstruct 957 958 959 245 + 961: 236(ptr) AccessChain 230(particleOut) 126 951 549 Store 961 960 Branch 686 686: Label diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 0831b73ca4..5e5846e8bb 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -29,44 +29,44 @@ spv.debuginfo.hlsl.frag 56: String "offset" 64: String "filterPCF" 68: String "sc" - 83: String "shadow" - 87: String "fragcolor" - 91: String "fragPos" - 98: String "@main" - 102: String "inUV" - 114: String "shadowCoord" - 141: String "bool" - 152: String "dist" - 159: String "type.2d.image" - 160: String "@type.2d.image" - 166: String "textureShadowMap" - 171: String "type.sampler" - 172: String "@type.sampler" - 177: String "samplerShadowMap" - 181: String "type.sampled.image" - 182: String "@type.sampled.image" - 227: String "sizeQueryTemp" - 234: String "int" - 242: String "texDim" - 258: String "elements" - 265: String "levels" - 272: String "scale" - 279: String "dx" - 291: String "dy" - 303: String "shadowFactor" - 309: String "count" - 316: String "range" - 323: String "x" - 343: String "y" - 409: String "i" - 427: String "shadowClip" - 442: String "color" - 448: String "viewMatrix" - 452: String "Light" - 458: String "lights" - 461: String "displayDebugTarget" - 466: String "UBO" - 469: String "ubo" + 84: String "shadow" + 88: String "fragcolor" + 93: String "fragPos" + 100: String "@main" + 104: String "inUV" + 117: String "shadowCoord" + 144: String "bool" + 155: String "dist" + 162: String "type.2d.image" + 163: String "@type.2d.image" + 169: String "textureShadowMap" + 174: String "type.sampler" + 175: String "@type.sampler" + 180: String "samplerShadowMap" + 184: String "type.sampled.image" + 185: String "@type.sampled.image" + 229: String "sizeQueryTemp" + 236: String "int" + 244: String "texDim" + 260: String "elements" + 267: String "levels" + 274: String "scale" + 281: String "dx" + 293: String "dy" + 305: String "shadowFactor" + 311: String "count" + 318: String "range" + 325: String "x" + 345: String "y" + 410: String "i" + 428: String "shadowClip" + 443: String "color" + 449: String "viewMatrix" + 453: String "Light" + 459: String "lights" + 462: String "displayDebugTarget" + 467: String "UBO" + 470: String "ubo" 523: String "textureposition" 528: String "samplerposition" 538: String "normal" @@ -98,49 +98,49 @@ spv.debuginfo.hlsl.frag Name 62 "filterPCF(vf4;f1;" Name 60 "sc" Name 61 "layer" - Name 81 "shadow(vf3;vf3;" - Name 79 "fragcolor" - Name 80 "fragPos" - Name 96 "@main(vf2;" - Name 95 "inUV" - Name 106 "shadow" - Name 112 "shadowCoord" - Name 150 "dist" - Name 164 "textureShadowMap" - Name 175 "samplerShadowMap" - Name 225 "sizeQueryTemp" - Name 240 "texDim" - Name 256 "elements" - Name 263 "levels" - Name 270 "scale" - Name 277 "dx" - Name 289 "dy" - Name 301 "shadowFactor" - Name 307 "count" - Name 314 "range" - Name 321 "x" - Name 341 "y" - Name 374 "param" + Name 82 "shadow(vf3;vf3;" + Name 80 "fragcolor" + Name 81 "fragPos" + Name 98 "@main(vf2;" + Name 97 "inUV" + Name 109 "shadow" + Name 115 "shadowCoord" + Name 153 "dist" + Name 167 "textureShadowMap" + Name 178 "samplerShadowMap" + Name 227 "sizeQueryTemp" + Name 242 "texDim" + Name 258 "elements" + Name 265 "levels" + Name 272 "scale" + Name 279 "dx" + Name 291 "dy" + Name 303 "shadowFactor" + Name 309 "count" + Name 316 "range" + Name 323 "x" + Name 343 "y" Name 376 "param" Name 378 "param" - Name 407 "i" - Name 425 "shadowClip" - Name 440 "Light" - MemberName 440(Light) 0 "position" - MemberName 440(Light) 1 "target" - MemberName 440(Light) 2 "color" - MemberName 440(Light) 3 "viewMatrix" - Name 455 "UBO" - MemberName 455(UBO) 0 "viewPos" - MemberName 455(UBO) 1 "lights" - MemberName 455(UBO) 2 "useShadows" - MemberName 455(UBO) 3 "displayDebugTarget" - Name 467 "ubo" - MemberName 467(ubo) 0 "ubo" - Name 475 "" - Name 483 "shadowFactor" - Name 490 "param" - Name 492 "param" + Name 380 "param" + Name 408 "i" + Name 426 "shadowClip" + Name 441 "Light" + MemberName 441(Light) 0 "position" + MemberName 441(Light) 1 "target" + MemberName 441(Light) 2 "color" + MemberName 441(Light) 3 "viewMatrix" + Name 456 "UBO" + MemberName 456(UBO) 0 "viewPos" + MemberName 456(UBO) 1 "lights" + MemberName 456(UBO) 2 "useShadows" + MemberName 456(UBO) 3 "displayDebugTarget" + Name 468 "ubo" + MemberName 468(ubo) 0 "ubo" + Name 476 "" + Name 484 "shadowFactor" + Name 491 "param" + Name 493 "param" Name 512 "fragPos" Name 521 "textureposition" Name 526 "samplerposition" @@ -176,25 +176,25 @@ spv.debuginfo.hlsl.frag Name 896 "inUV" Name 899 "@entryPointOutput" Name 900 "param" - Decorate 164(textureShadowMap) Binding 5 - Decorate 164(textureShadowMap) DescriptorSet 0 - Decorate 175(samplerShadowMap) Binding 5 - Decorate 175(samplerShadowMap) DescriptorSet 0 - MemberDecorate 440(Light) 0 Offset 0 - MemberDecorate 440(Light) 1 Offset 16 - MemberDecorate 440(Light) 2 Offset 32 - MemberDecorate 440(Light) 3 RowMajor - MemberDecorate 440(Light) 3 MatrixStride 16 - MemberDecorate 440(Light) 3 Offset 48 - Decorate 453 ArrayStride 112 - MemberDecorate 455(UBO) 0 Offset 0 - MemberDecorate 455(UBO) 1 Offset 16 - MemberDecorate 455(UBO) 2 Offset 352 - MemberDecorate 455(UBO) 3 Offset 356 - Decorate 467(ubo) Block - MemberDecorate 467(ubo) 0 Offset 0 - Decorate 475 Binding 4 - Decorate 475 DescriptorSet 0 + Decorate 167(textureShadowMap) Binding 5 + Decorate 167(textureShadowMap) DescriptorSet 0 + Decorate 178(samplerShadowMap) Binding 5 + Decorate 178(samplerShadowMap) DescriptorSet 0 + MemberDecorate 441(Light) 0 Offset 0 + MemberDecorate 441(Light) 1 Offset 16 + MemberDecorate 441(Light) 2 Offset 32 + MemberDecorate 441(Light) 3 RowMajor + MemberDecorate 441(Light) 3 MatrixStride 16 + MemberDecorate 441(Light) 3 Offset 48 + Decorate 454 ArrayStride 112 + MemberDecorate 456(UBO) 0 Offset 0 + MemberDecorate 456(UBO) 1 Offset 16 + MemberDecorate 456(UBO) 2 Offset 352 + MemberDecorate 456(UBO) 3 Offset 356 + Decorate 468(ubo) Block + MemberDecorate 468(ubo) 0 Offset 0 + Decorate 476 Binding 4 + Decorate 476 DescriptorSet 0 Decorate 521(textureposition) Binding 1 Decorate 521(textureposition) DescriptorSet 0 Decorate 526(samplerposition) Binding 1 @@ -249,175 +249,175 @@ spv.debuginfo.hlsl.frag 66: 11(int) Constant 78 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 64 59 40 66 16 43 64 17 66 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 68 20 40 66 16 65 19 44 - 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 66 16 65 19 27 - 73: TypeVector 8(float) 3 - 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 75: TypePointer Function 73(fvec3) - 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 74 22 16 - 77: TypeFunction 73(fvec3) 75(ptr) 75(ptr) - 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 74 74 74 - 85: 11(int) Constant 101 - 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 83 78 40 85 16 43 83 17 85 - 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 40 85 16 84 19 44 - 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 74 40 85 16 84 19 27 - 93: TypeFunction 18(fvec4) 29(ptr) - 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 28 - 100: 11(int) Constant 119 - 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 98 94 40 100 16 43 98 17 100 - 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 28 40 100 16 99 19 44 - 108: 11(int) Constant 62 - 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 10 40 108 16 39 19 - 111: 8(float) Constant 1065353216 - 115: 11(int) Constant 63 - 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 20 40 115 16 39 19 - 125: 11(int) Constant 64 - 127: 8(float) Constant 1056964608 - 137: 11(int) Constant 66 - 139: 8(float) Constant 3212836864 - 140: TypeBool - 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 141 14 27 16 - 153: 11(int) Constant 68 - 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 40 153 16 39 19 - 157: TypeImage 8(float) 2D array sampled format:Unknown - 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 16 40 153 16 43 160 161 17 - 162: TypePointer UniformConstant 157 - 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 158 16 16 -164(textureShadowMap): 162(ptr) Variable UniformConstant - 167: 11(int) Constant 8 - 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 166 158 40 153 16 43 166 164(textureShadowMap) 167 - 169: TypeSampler - 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 153 16 43 172 161 17 - 173: TypePointer UniformConstant 169 - 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 170 16 16 -175(samplerShadowMap): 173(ptr) Variable UniformConstant - 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 177 170 40 153 16 43 177 175(samplerShadowMap) 167 - 179: TypeSampledImage 157 - 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 181 16 40 153 16 43 182 161 17 - 196: 11(int) Constant 69 - 198: 8(float) Constant 0 - 207: 8(float) Constant 1048576000 - 210: 11(int) Constant 71 - 215: 11(int) Constant 74 - 221: TypeVector 11(int) 3 - 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 - 223: TypePointer Function 221(ivec3) - 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 222 22 16 - 228: 11(int) Constant 80 - 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 227 222 40 228 16 65 19 - 233: TypeInt 32 1 - 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 234 14 19 16 - 236: TypeVector 233(int) 2 - 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 235 27 - 238: TypePointer Function 236(ivec2) - 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 22 16 - 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 242 237 40 228 16 65 19 - 244: TypePointer Function 11(int) - 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 - 249: TypePointer Function 233(int) - 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 235 22 16 - 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 258 235 40 228 16 65 19 - 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 265 235 40 228 16 65 19 - 273: 11(int) Constant 81 - 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 272 10 40 273 16 65 19 - 276: 8(float) Constant 1069547520 - 280: 11(int) Constant 82 - 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 279 10 40 280 16 65 19 - 292: 11(int) Constant 83 - 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 291 10 40 292 16 65 19 - 304: 11(int) Constant 85 - 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 10 40 304 16 65 19 - 310: 11(int) Constant 86 - 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 309 235 40 310 16 65 19 - 313: 233(int) Constant 0 - 317: 11(int) Constant 87 - 315: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 316 235 40 317 16 65 19 - 320: 233(int) Constant 1 - 324: 11(int) Constant 89 - 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 323 235 40 324 16 65 19 - 344: 11(int) Constant 91 - 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 343 235 40 344 16 65 19 - 365: 11(int) Constant 93 - 384: 11(int) Constant 94 - 398: 11(int) Constant 98 - 410: 11(int) Constant 102 - 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 235 40 410 16 84 19 - 423: 233(int) Constant 3 - 428: 11(int) Constant 104 - 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 427 20 40 428 16 84 19 - 437: TypeMatrix 18(fvec4) 4 - 439: 140(bool) ConstantTrue - 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 439 - 440(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 437 - 443: 11(int) Constant 46 - 444: 11(int) Constant 14 - 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 - 445: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 - 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 - 449: 11(int) Constant 47 - 450: 11(int) Constant 21 - 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 448 438 40 449 450 16 16 17 - 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 452 44 40 428 16 43 452 16 17 441 445 446 447 - 453: TypeArray 440(Light) 17 - 454: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 451 17 - 455(UBO): TypeStruct 18(fvec4) 453 233(int) 233(int) - 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 442 20 40 443 444 16 16 17 - 459: 11(int) Constant 53 - 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 458 454 40 459 444 16 16 17 - 462: 11(int) Constant 55 - 463: 11(int) Constant 24 - 460: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 235 40 462 463 16 16 17 - 464: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 461 235 40 462 463 16 16 17 - 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 466 44 40 428 16 43 466 16 17 456 457 460 464 - 467(ubo): TypeStruct 455(UBO) - 470: 11(int) Constant 58 - 471: 11(int) Constant 37 - 468: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 469 465 40 470 471 16 16 17 - 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 469 44 40 428 16 43 469 16 17 468 - 473: TypePointer Uniform 467(ubo) - 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 472 27 16 - 475: 473(ptr) Variable Uniform - 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 472 40 428 16 43 2 475 167 - 478: TypePointer Uniform 437 - 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 438 27 16 - 485: 11(int) Constant 108 - 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 303 10 40 485 16 84 19 - 496: 11(int) Constant 113 - 506: 11(int) Constant 115 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 10 40 66 16 65 19 27 + 74: TypeVector 8(float) 3 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 76: TypePointer Function 74(fvec3) + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 22 16 + 78: TypeFunction 74(fvec3) 76(ptr) 76(ptr) + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 75 75 75 + 86: 11(int) Constant 101 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 84 79 40 86 16 43 84 17 86 + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 40 86 16 85 19 44 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 86 16 85 19 27 + 95: TypeFunction 18(fvec4) 29(ptr) + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 20 28 + 102: 11(int) Constant 119 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 100 96 40 102 16 43 100 17 102 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 104 28 40 102 16 101 19 44 + 111: 11(int) Constant 62 + 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 84 10 40 111 16 39 19 + 114: 8(float) Constant 1065353216 + 118: 11(int) Constant 63 + 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 117 20 40 118 16 39 19 + 128: 11(int) Constant 64 + 130: 8(float) Constant 1056964608 + 140: 11(int) Constant 66 + 142: 8(float) Constant 3212836864 + 143: TypeBool + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 144 14 27 16 + 156: 11(int) Constant 68 + 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 10 40 156 16 39 19 + 160: TypeImage 8(float) 2D array sampled format:Unknown + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 16 40 156 16 43 163 164 17 + 165: TypePointer UniformConstant 160 + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 161 16 16 +167(textureShadowMap): 165(ptr) Variable UniformConstant + 170: 11(int) Constant 8 + 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 169 161 40 156 16 43 169 167(textureShadowMap) 170 + 172: TypeSampler + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 156 16 43 175 164 17 + 176: TypePointer UniformConstant 172 + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 173 16 16 +178(samplerShadowMap): 176(ptr) Variable UniformConstant + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 180 173 40 156 16 43 180 178(samplerShadowMap) 170 + 182: TypeSampledImage 160 + 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 184 16 40 156 16 43 185 164 17 + 199: 11(int) Constant 69 + 201: 8(float) Constant 0 + 210: 8(float) Constant 1048576000 + 213: 11(int) Constant 71 + 218: 11(int) Constant 74 + 223: TypeVector 11(int) 3 + 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 + 225: TypePointer Function 223(ivec3) + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 224 22 16 + 230: 11(int) Constant 80 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 224 40 230 16 65 19 + 235: TypeInt 32 1 + 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 236 14 19 16 + 238: TypeVector 235(int) 2 + 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 237 27 + 240: TypePointer Function 238(ivec2) + 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 239 22 16 + 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 244 239 40 230 16 65 19 + 246: TypePointer Function 11(int) + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 + 251: TypePointer Function 235(int) + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 22 16 + 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 260 237 40 230 16 65 19 + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 267 237 40 230 16 65 19 + 275: 11(int) Constant 81 + 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 274 10 40 275 16 65 19 + 278: 8(float) Constant 1069547520 + 282: 11(int) Constant 82 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 281 10 40 282 16 65 19 + 294: 11(int) Constant 83 + 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 293 10 40 294 16 65 19 + 306: 11(int) Constant 85 + 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 305 10 40 306 16 65 19 + 312: 11(int) Constant 86 + 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 311 237 40 312 16 65 19 + 315: 235(int) Constant 0 + 319: 11(int) Constant 87 + 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 318 237 40 319 16 65 19 + 322: 235(int) Constant 1 + 326: 11(int) Constant 89 + 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 325 237 40 326 16 65 19 + 346: 11(int) Constant 91 + 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 345 237 40 346 16 65 19 + 367: 11(int) Constant 93 + 386: 11(int) Constant 94 + 400: 11(int) Constant 98 + 411: 11(int) Constant 102 + 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 237 40 411 16 85 19 + 424: 235(int) Constant 3 + 429: 11(int) Constant 104 + 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 428 20 40 429 16 85 19 + 438: TypeMatrix 18(fvec4) 4 + 440: 143(bool) ConstantTrue + 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 440 + 441(Light): TypeStruct 18(fvec4) 18(fvec4) 18(fvec4) 438 + 444: 11(int) Constant 46 + 445: 11(int) Constant 14 + 442: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 443 20 40 444 445 16 16 17 + 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 443 20 40 444 445 16 16 17 + 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 443 20 40 444 445 16 16 17 + 450: 11(int) Constant 47 + 451: 11(int) Constant 21 + 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 449 439 40 450 451 16 16 17 + 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 453 44 40 429 16 43 453 16 17 442 446 447 448 + 454: TypeArray 441(Light) 17 + 455: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 452 17 + 456(UBO): TypeStruct 18(fvec4) 454 235(int) 235(int) + 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 443 20 40 444 445 16 16 17 + 460: 11(int) Constant 53 + 458: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 459 455 40 460 445 16 16 17 + 463: 11(int) Constant 55 + 464: 11(int) Constant 24 + 461: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 237 40 463 464 16 16 17 + 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 462 237 40 463 464 16 16 17 + 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 467 44 40 429 16 43 467 16 17 457 458 461 465 + 468(ubo): TypeStruct 456(UBO) + 471: 11(int) Constant 58 + 472: 11(int) Constant 37 + 469: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 470 466 40 471 472 16 16 17 + 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 470 44 40 429 16 43 470 16 17 469 + 474: TypePointer Uniform 468(ubo) + 475: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 473 27 16 + 476: 474(ptr) Variable Uniform + 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 473 40 429 16 43 2 476 170 + 479: TypePointer Uniform 438 + 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 439 27 16 + 486: 11(int) Constant 108 + 485: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 305 10 40 486 16 85 19 + 497: 11(int) Constant 113 + 507: 11(int) Constant 115 514: 11(int) Constant 121 - 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 91 74 40 514 16 99 19 + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 514 16 101 19 517: TypeImage 8(float) 2D sampled format:Unknown - 518: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 16 40 514 16 43 160 161 17 + 518: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 16 40 514 16 43 163 164 17 519: TypePointer UniformConstant 517 520: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 518 16 16 521(textureposition): 519(ptr) Variable UniformConstant - 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 523 518 40 514 16 43 523 521(textureposition) 167 - 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 514 16 43 172 161 17 -526(samplerposition): 173(ptr) Variable UniformConstant - 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 528 525 40 514 16 43 528 526(samplerposition) 167 + 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 523 518 40 514 16 43 523 521(textureposition) 170 + 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 514 16 43 175 164 17 +526(samplerposition): 176(ptr) Variable UniformConstant + 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 528 525 40 514 16 43 528 526(samplerposition) 170 530: TypeSampledImage 517 - 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 181 16 40 514 16 43 182 161 17 + 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 184 16 40 514 16 43 185 164 17 539: 11(int) Constant 122 - 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 538 74 40 539 16 99 19 + 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 538 75 40 539 16 101 19 542(textureNormal): 519(ptr) Variable UniformConstant - 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 544 518 40 539 16 43 544 542(textureNormal) 167 - 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 539 16 43 172 161 17 -547(samplerNormal): 173(ptr) Variable UniformConstant - 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 549 546 40 539 16 43 549 547(samplerNormal) 167 + 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 544 518 40 539 16 43 544 542(textureNormal) 170 + 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 539 16 43 175 164 17 +547(samplerNormal): 176(ptr) Variable UniformConstant + 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 549 546 40 539 16 43 549 547(samplerNormal) 170 558: 11(int) Constant 123 - 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 557 20 40 558 16 99 19 + 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 557 20 40 558 16 101 19 561(textureAlbedo): 519(ptr) Variable UniformConstant - 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 563 518 40 558 16 43 563 561(textureAlbedo) 167 - 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 44 40 558 16 43 172 161 17 -566(samplerAlbedo): 173(ptr) Variable UniformConstant - 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 568 565 40 558 16 43 568 566(samplerAlbedo) 167 - 573: TypePointer Uniform 233(int) - 574: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 235 27 16 + 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 563 518 40 558 16 43 563 561(textureAlbedo) 170 + 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 558 16 43 175 164 17 +566(samplerAlbedo): 176(ptr) Variable UniformConstant + 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 568 565 40 558 16 43 568 566(samplerAlbedo) 170 + 573: TypePointer Uniform 235(int) + 574: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 27 16 577: 11(int) Constant 128 585: 11(int) Constant 129 595: 11(int) Constant 131 - 594: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 74 40 595 16 99 19 - 599: 73(fvec3) ConstantComposite 111 111 111 + 594: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 40 595 16 101 19 + 599: 74(fvec3) ConstantComposite 114 114 114 605: 11(int) Constant 132 611: 11(int) Constant 134 613: 11(int) Constant 135 @@ -431,50 +431,50 @@ spv.debuginfo.hlsl.frag 656: 11(int) Constant 150 658: 8(float) Constant 1036831949 663: 11(int) Constant 152 - 661: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 662 74 40 663 16 99 19 + 661: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 662 75 40 663 16 101 19 670: 11(int) Constant 154 - 669: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 409 235 40 670 16 99 19 + 669: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 237 40 670 16 101 19 687: 11(int) Constant 157 - 685: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 686 74 40 687 16 99 19 + 685: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 686 75 40 687 16 101 19 692: TypePointer Uniform 18(fvec4) 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 27 16 701: 11(int) Constant 159 - 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 152 10 40 701 16 99 19 + 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 10 40 701 16 101 19 708: 11(int) Constant 160 713: 11(int) Constant 163 - 711: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 74 40 713 16 99 19 + 711: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 75 40 713 16 101 19 723: 11(int) Constant 164 728: 11(int) Constant 166 - 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 10 40 728 16 99 19 + 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 10 40 728 16 101 19 731: 8(float) Constant 1064781546 735: 11(int) Constant 167 - 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 10 40 735 16 99 19 + 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 10 40 735 16 101 19 738: 8(float) Constant 1063781322 742: 11(int) Constant 168 - 740: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 741 10 40 742 16 99 19 + 740: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 741 10 40 742 16 101 19 745: 8(float) Constant 1120403456 749: 11(int) Constant 171 - 747: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 748 74 40 749 16 99 19 + 747: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 748 75 40 749 16 101 19 765: 11(int) Constant 174 - 763: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 764 10 40 765 16 99 19 + 763: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 764 10 40 765 16 101 19 774: 11(int) Constant 175 - 772: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 773 10 40 774 16 99 19 + 772: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 773 10 40 774 16 101 19 784: 11(int) Constant 176 - 782: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 783 10 40 784 16 99 19 + 782: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 783 10 40 784 16 101 19 793: 11(int) Constant 179 - 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 792 10 40 793 16 99 19 + 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 792 10 40 793 16 101 19 803: 11(int) Constant 180 - 801: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 802 74 40 803 16 99 19 + 801: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 802 75 40 803 16 101 19 811: 11(int) Constant 183 - 809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 810 74 40 811 16 99 19 + 809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 810 75 40 811 16 101 19 821: 11(int) Constant 184 - 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 820 10 40 821 16 99 19 + 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 820 10 40 821 16 101 19 831: 11(int) Constant 185 - 829: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 830 74 40 831 16 99 19 + 829: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 830 75 40 831 16 101 19 835: 8(float) Constant 1098907648 840: 8(float) Constant 1075838976 845: 11(int) Constant 187 - 853: 233(int) Constant 2 + 853: 235(int) Constant 2 870: 11(int) Constant 191 879: 11(int) Constant 193 886: 11(int) Constant 196 @@ -490,7 +490,7 @@ spv.debuginfo.hlsl.frag Store 894(inUV) 897 901: 26(fvec2) Load 894(inUV) Store 900(param) 901 - 902: 18(fvec4) FunctionCall 96(@main(vf2;) 900(param) + 902: 18(fvec4) FunctionCall 98(@main(vf2;) 900(param) Store 899(@entryPointOutput) 902 Return FunctionEnd @@ -499,401 +499,401 @@ spv.debuginfo.hlsl.frag 34(layer): 24(ptr) FunctionParameter 35(offset): 29(ptr) FunctionParameter 37: Label - 106(shadow): 24(ptr) Variable Function -112(shadowCoord): 21(ptr) Variable Function - 150(dist): 24(ptr) Variable Function + 109(shadow): 24(ptr) Variable Function +115(shadowCoord): 21(ptr) Variable Function + 153(dist): 24(ptr) Variable Function 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 42 42 16 16 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 33(P) 49 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 34(layer) 49 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 55 35(offset) 49 - 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(textureProj(vf4;f1;vf2;) - 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 108 108 16 16 - 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 107 106(shadow) 49 - Store 106(shadow) 111 - 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 115 115 16 16 - 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 112(shadowCoord) 49 - 118: 18(fvec4) Load 33(P) - 119: 24(ptr) AccessChain 33(P) 17 - 120: 8(float) Load 119 - 121: 18(fvec4) CompositeConstruct 120 120 120 120 - 122: 18(fvec4) FDiv 118 121 - Store 112(shadowCoord) 122 - 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 125 125 16 16 - 123: 18(fvec4) Load 112(shadowCoord) - 126: 26(fvec2) VectorShuffle 123 123 0 1 - 128: 26(fvec2) VectorTimesScalar 126 127 - 129: 26(fvec2) CompositeConstruct 127 127 - 130: 26(fvec2) FAdd 128 129 - 131: 24(ptr) AccessChain 112(shadowCoord) 16 - 132: 8(float) CompositeExtract 130 0 - Store 131 132 - 133: 24(ptr) AccessChain 112(shadowCoord) 44 - 134: 8(float) CompositeExtract 130 1 - Store 133 134 - 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 137 137 16 16 - 135: 24(ptr) AccessChain 112(shadowCoord) 27 - 138: 8(float) Load 135 - 143: 140(bool) FOrdGreaterThan 138 139 - 144: 24(ptr) AccessChain 112(shadowCoord) 27 - 145: 8(float) Load 144 - 146: 140(bool) FOrdLessThan 145 111 - 147: 140(bool) LogicalAnd 143 146 - SelectionMerge 149 None - BranchConditional 147 148 149 - 148: Label - 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 153 153 16 16 - 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 151 150(dist) 49 - 168: 157 Load 164(textureShadowMap) - 178: 169 Load 175(samplerShadowMap) - 183: 179 SampledImage 168 178 - 184: 18(fvec4) Load 112(shadowCoord) - 185: 26(fvec2) VectorShuffle 184 184 0 1 - 186: 26(fvec2) Load 35(offset) - 187: 26(fvec2) FAdd 185 186 - 188: 8(float) Load 34(layer) - 189: 8(float) CompositeExtract 187 0 - 190: 8(float) CompositeExtract 187 1 - 191: 73(fvec3) CompositeConstruct 189 190 188 - 192: 18(fvec4) ImageSampleImplicitLod 183 191 - 193: 8(float) CompositeExtract 192 0 - Store 150(dist) 193 - 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 196 196 16 16 - 194: 24(ptr) AccessChain 112(shadowCoord) 17 - 197: 8(float) Load 194 - 199: 140(bool) FOrdGreaterThan 197 198 - 200: 8(float) Load 150(dist) - 201: 24(ptr) AccessChain 112(shadowCoord) 27 - 202: 8(float) Load 201 - 203: 140(bool) FOrdLessThan 200 202 - 204: 140(bool) LogicalAnd 199 203 - SelectionMerge 206 None - BranchConditional 204 205 206 - 205: Label - 208: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 210 210 16 16 - Store 106(shadow) 207 - Branch 206 - 206: Label - 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - Branch 149 - 149: Label - 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 215 215 16 16 - 212: 8(float) Load 106(shadow) - ReturnValue 212 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(textureProj(vf4;f1;vf2;) + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 111 111 16 16 + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 110 109(shadow) 49 + Store 109(shadow) 114 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 118 118 16 16 + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 116 115(shadowCoord) 49 + 121: 18(fvec4) Load 33(P) + 122: 24(ptr) AccessChain 33(P) 17 + 123: 8(float) Load 122 + 124: 18(fvec4) CompositeConstruct 123 123 123 123 + 125: 18(fvec4) FDiv 121 124 + Store 115(shadowCoord) 125 + 127: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 128 128 16 16 + 126: 18(fvec4) Load 115(shadowCoord) + 129: 26(fvec2) VectorShuffle 126 126 0 1 + 131: 26(fvec2) VectorTimesScalar 129 130 + 132: 26(fvec2) CompositeConstruct 130 130 + 133: 26(fvec2) FAdd 131 132 + 134: 24(ptr) AccessChain 115(shadowCoord) 16 + 135: 8(float) CompositeExtract 133 0 + Store 134 135 + 136: 24(ptr) AccessChain 115(shadowCoord) 44 + 137: 8(float) CompositeExtract 133 1 + Store 136 137 + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 140 140 16 16 + 138: 24(ptr) AccessChain 115(shadowCoord) 27 + 141: 8(float) Load 138 + 146: 143(bool) FOrdGreaterThan 141 142 + 147: 24(ptr) AccessChain 115(shadowCoord) 27 + 148: 8(float) Load 147 + 149: 143(bool) FOrdLessThan 148 114 + 150: 143(bool) LogicalAnd 146 149 + SelectionMerge 152 None + BranchConditional 150 151 152 + 151: Label + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 156 156 16 16 + 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 154 153(dist) 49 + 171: 160 Load 167(textureShadowMap) + 181: 172 Load 178(samplerShadowMap) + 186: 182 SampledImage 171 181 + 187: 18(fvec4) Load 115(shadowCoord) + 188: 26(fvec2) VectorShuffle 187 187 0 1 + 189: 26(fvec2) Load 35(offset) + 190: 26(fvec2) FAdd 188 189 + 191: 8(float) Load 34(layer) + 192: 8(float) CompositeExtract 190 0 + 193: 8(float) CompositeExtract 190 1 + 194: 74(fvec3) CompositeConstruct 192 193 191 + 195: 18(fvec4) ImageSampleImplicitLod 186 194 + 196: 8(float) CompositeExtract 195 0 + Store 153(dist) 196 + 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 199 199 16 16 + 197: 24(ptr) AccessChain 115(shadowCoord) 17 + 200: 8(float) Load 197 + 202: 143(bool) FOrdGreaterThan 200 201 + 203: 8(float) Load 153(dist) + 204: 24(ptr) AccessChain 115(shadowCoord) 27 + 205: 8(float) Load 204 + 206: 143(bool) FOrdLessThan 203 205 + 207: 143(bool) LogicalAnd 202 206 + SelectionMerge 209 None + BranchConditional 207 208 209 + 208: Label + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 213 213 16 16 + Store 109(shadow) 210 + Branch 209 + 209: Label + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + Branch 152 + 152: Label + 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 218 218 16 16 + 215: 8(float) Load 109(shadow) + ReturnValue 215 FunctionEnd 62(filterPCF(vf4;f1;): 8(float) Function None 58 60(sc): 21(ptr) FunctionParameter 61(layer): 24(ptr) FunctionParameter 63: Label -225(sizeQueryTemp): 223(ptr) Variable Function - 240(texDim): 238(ptr) Variable Function - 256(elements): 249(ptr) Variable Function - 263(levels): 249(ptr) Variable Function - 270(scale): 24(ptr) Variable Function - 277(dx): 24(ptr) Variable Function - 289(dy): 24(ptr) Variable Function -301(shadowFactor): 24(ptr) Variable Function - 307(count): 249(ptr) Variable Function - 314(range): 249(ptr) Variable Function - 321(x): 249(ptr) Variable Function - 341(y): 249(ptr) Variable Function - 374(param): 21(ptr) Variable Function - 376(param): 24(ptr) Variable Function - 378(param): 29(ptr) Variable Function +227(sizeQueryTemp): 225(ptr) Variable Function + 242(texDim): 240(ptr) Variable Function + 258(elements): 251(ptr) Variable Function + 265(levels): 251(ptr) Variable Function + 272(scale): 24(ptr) Variable Function + 279(dx): 24(ptr) Variable Function + 291(dy): 24(ptr) Variable Function +303(shadowFactor): 24(ptr) Variable Function + 309(count): 251(ptr) Variable Function + 316(range): 251(ptr) Variable Function + 323(x): 251(ptr) Variable Function + 343(y): 251(ptr) Variable Function + 376(param): 21(ptr) Variable Function + 378(param): 24(ptr) Variable Function + 380(param): 29(ptr) Variable Function 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 66 66 16 16 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49 - 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 71 61(layer) 49 - 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 66 66 16 16 - 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) - 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 228 228 16 16 - 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 226 225(sizeQueryTemp) 49 - 231: 157 Load 164(textureShadowMap) - 232: 221(ivec3) ImageQuerySizeLod 231 16 - Store 225(sizeQueryTemp) 232 - 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 241 240(texDim) 49 - 246: 244(ptr) AccessChain 225(sizeQueryTemp) 16 - 247: 11(int) Load 246 - 248: 233(int) Bitcast 247 - 251: 249(ptr) AccessChain 240(texDim) 16 - Store 251 248 - 252: 244(ptr) AccessChain 225(sizeQueryTemp) 44 - 253: 11(int) Load 252 - 254: 233(int) Bitcast 253 - 255: 249(ptr) AccessChain 240(texDim) 44 - Store 255 254 - 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 257 256(elements) 49 - 260: 244(ptr) AccessChain 225(sizeQueryTemp) 27 - 261: 11(int) Load 260 - 262: 233(int) Bitcast 261 - Store 256(elements) 262 - 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 264 263(levels) 49 - 267: 157 Load 164(textureShadowMap) - 268: 11(int) ImageQueryLevels 267 - 269: 233(int) Bitcast 268 - Store 263(levels) 269 - 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 273 273 16 16 - 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 271 270(scale) 49 - Store 270(scale) 276 - 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 280 280 16 16 - 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 278 277(dx) 49 - 283: 8(float) Load 270(scale) - 284: 8(float) FMul 283 111 - 285: 249(ptr) AccessChain 240(texDim) 16 - 286: 233(int) Load 285 - 287: 8(float) ConvertSToF 286 - 288: 8(float) FDiv 284 287 - Store 277(dx) 288 - 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 292 292 16 16 - 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 290 289(dy) 49 - 295: 8(float) Load 270(scale) - 296: 8(float) FMul 295 111 - 297: 249(ptr) AccessChain 240(texDim) 44 - 298: 233(int) Load 297 - 299: 8(float) ConvertSToF 298 - 300: 8(float) FDiv 296 299 - Store 289(dy) 300 - 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 304 304 16 16 - 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 302 301(shadowFactor) 49 - Store 301(shadowFactor) 198 - 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 310 310 16 16 - 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 308 307(count) 49 - Store 307(count) 313 - 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 317 317 16 16 - 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 315 314(range) 49 - Store 314(range) 320 - 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 322 321(x) 49 - 327: 233(int) Load 314(range) - 328: 233(int) SNegate 327 - Store 321(x) 328 - Branch 329 - 329: Label - 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - LoopMerge 331 332 None - Branch 335 - 335: Label - 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - 336: 233(int) Load 321(x) - 339: 233(int) Load 314(range) - 340: 140(bool) SLessThanEqual 336 339 - BranchConditional 340 330 331 - 330: Label - 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 - 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 342 341(y) 49 - 348: 233(int) Load 314(range) - 349: 233(int) SNegate 348 - Store 341(y) 349 - Branch 350 - 350: Label - 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 - LoopMerge 352 353 None - Branch 356 - 356: Label - 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 - 357: 233(int) Load 341(y) - 360: 233(int) Load 314(range) - 361: 140(bool) SLessThanEqual 357 360 - BranchConditional 361 351 352 - 351: Label - 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 364: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 365 365 16 16 - 362: 8(float) Load 277(dx) - 366: 233(int) Load 321(x) - 367: 8(float) ConvertSToF 366 - 368: 8(float) FMul 362 367 - 369: 8(float) Load 289(dy) - 370: 233(int) Load 341(y) - 371: 8(float) ConvertSToF 370 - 372: 8(float) FMul 369 371 - 373: 26(fvec2) CompositeConstruct 368 372 - 375: 18(fvec4) Load 60(sc) - Store 374(param) 375 - 377: 8(float) Load 61(layer) - Store 376(param) 377 - Store 378(param) 373 - 379: 8(float) FunctionCall 36(textureProj(vf4;f1;vf2;) 374(param) 376(param) 378(param) - 380: 8(float) Load 301(shadowFactor) - 381: 8(float) FAdd 380 379 - Store 301(shadowFactor) 381 - 383: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 384 384 16 16 - 382: 233(int) Load 307(count) - 385: 233(int) IAdd 382 320 - Store 307(count) 385 - Branch 353 - 353: Label - 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 344 344 16 16 - 386: 233(int) Load 341(y) - 389: 233(int) IAdd 386 320 - Store 341(y) 389 - Branch 350 - 352: Label - 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - Branch 332 + 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 49 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 230 230 16 16 + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 228 227(sizeQueryTemp) 49 + 233: 160 Load 167(textureShadowMap) + 234: 223(ivec3) ImageQuerySizeLod 233 16 + Store 227(sizeQueryTemp) 234 + 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 243 242(texDim) 49 + 248: 246(ptr) AccessChain 227(sizeQueryTemp) 16 + 249: 11(int) Load 248 + 250: 235(int) Bitcast 249 + 253: 251(ptr) AccessChain 242(texDim) 16 + Store 253 250 + 254: 246(ptr) AccessChain 227(sizeQueryTemp) 44 + 255: 11(int) Load 254 + 256: 235(int) Bitcast 255 + 257: 251(ptr) AccessChain 242(texDim) 44 + Store 257 256 + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 259 258(elements) 49 + 262: 246(ptr) AccessChain 227(sizeQueryTemp) 27 + 263: 11(int) Load 262 + 264: 235(int) Bitcast 263 + Store 258(elements) 264 + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 266 265(levels) 49 + 269: 160 Load 167(textureShadowMap) + 270: 11(int) ImageQueryLevels 269 + 271: 235(int) Bitcast 270 + Store 265(levels) 271 + 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 275 275 16 16 + 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 273 272(scale) 49 + Store 272(scale) 278 + 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 282 282 16 16 + 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(dx) 49 + 285: 8(float) Load 272(scale) + 286: 8(float) FMul 285 114 + 287: 251(ptr) AccessChain 242(texDim) 16 + 288: 235(int) Load 287 + 289: 8(float) ConvertSToF 288 + 290: 8(float) FDiv 286 289 + Store 279(dx) 290 + 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 294 294 16 16 + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 292 291(dy) 49 + 297: 8(float) Load 272(scale) + 298: 8(float) FMul 297 114 + 299: 251(ptr) AccessChain 242(texDim) 44 + 300: 235(int) Load 299 + 301: 8(float) ConvertSToF 300 + 302: 8(float) FDiv 298 301 + Store 291(dy) 302 + 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 306 306 16 16 + 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 304 303(shadowFactor) 49 + Store 303(shadowFactor) 201 + 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 312 312 16 16 + 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 310 309(count) 49 + Store 309(count) 315 + 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 319 319 16 16 + 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 317 316(range) 49 + Store 316(range) 322 + 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 326 326 16 16 + 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 324 323(x) 49 + 329: 235(int) Load 316(range) + 330: 235(int) SNegate 329 + Store 323(x) 330 + Branch 331 + 331: Label + 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 326 326 16 16 + LoopMerge 333 334 None + Branch 337 + 337: Label + 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 326 326 16 16 + 338: 235(int) Load 323(x) + 341: 235(int) Load 316(range) + 342: 143(bool) SLessThanEqual 338 341 + BranchConditional 342 332 333 332: Label + 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 346 346 16 16 + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 344 343(y) 49 + 350: 235(int) Load 316(range) + 351: 235(int) SNegate 350 + Store 343(y) 351 + Branch 352 + 352: Label + 356: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 346 346 16 16 + LoopMerge 354 355 None + Branch 358 + 358: Label + 360: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 346 346 16 16 + 359: 235(int) Load 343(y) + 362: 235(int) Load 316(range) + 363: 143(bool) SLessThanEqual 359 362 + BranchConditional 363 353 354 + 353: Label + 365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 367 367 16 16 + 364: 8(float) Load 279(dx) + 368: 235(int) Load 323(x) + 369: 8(float) ConvertSToF 368 + 370: 8(float) FMul 364 369 + 371: 8(float) Load 291(dy) + 372: 235(int) Load 343(y) + 373: 8(float) ConvertSToF 372 + 374: 8(float) FMul 371 373 + 375: 26(fvec2) CompositeConstruct 370 374 + 377: 18(fvec4) Load 60(sc) + Store 376(param) 377 + 379: 8(float) Load 61(layer) + Store 378(param) 379 + Store 380(param) 375 + 381: 8(float) FunctionCall 36(textureProj(vf4;f1;vf2;) 376(param) 378(param) 380(param) + 382: 8(float) Load 303(shadowFactor) + 383: 8(float) FAdd 382 381 + Store 303(shadowFactor) 383 + 385: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 386 386 16 16 + 384: 235(int) Load 309(count) + 387: 235(int) IAdd 384 322 + Store 309(count) 387 + Branch 355 + 355: Label + 389: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 346 346 16 16 + 388: 235(int) Load 343(y) + 391: 235(int) IAdd 388 322 + Store 343(y) 391 + Branch 352 + 354: Label 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 324 324 16 16 - 391: 233(int) Load 321(x) - 394: 233(int) IAdd 391 320 - Store 321(x) 394 - Branch 329 - 331: Label - 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 397: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 398 398 16 16 - 395: 8(float) Load 301(shadowFactor) - 399: 233(int) Load 307(count) - 400: 8(float) ConvertSToF 399 - 401: 8(float) FDiv 395 400 - ReturnValue 401 + Branch 334 + 334: Label + 394: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 326 326 16 16 + 393: 235(int) Load 323(x) + 396: 235(int) IAdd 393 322 + Store 323(x) 396 + Branch 331 + 333: Label + 398: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 399: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 400 400 16 16 + 397: 8(float) Load 303(shadowFactor) + 401: 235(int) Load 309(count) + 402: 8(float) ConvertSToF 401 + 403: 8(float) FDiv 397 402 + ReturnValue 403 FunctionEnd -81(shadow(vf3;vf3;): 73(fvec3) Function None 77 - 79(fragcolor): 75(ptr) FunctionParameter - 80(fragPos): 75(ptr) FunctionParameter - 82: Label - 407(i): 249(ptr) Variable Function - 425(shadowClip): 21(ptr) Variable Function -483(shadowFactor): 24(ptr) Variable Function - 490(param): 21(ptr) Variable Function - 492(param): 24(ptr) Variable Function - 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 - 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 79(fragcolor) 49 - 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 90 80(fragPos) 49 - 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 85 85 16 16 - 405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 84 81(shadow(vf3;vf3;) - 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 - 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 408 407(i) 49 - Store 407(i) 313 - Branch 413 - 413: Label - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 - 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 - LoopMerge 415 416 None - Branch 419 - 419: Label - 421: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 - 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 - 420: 233(int) Load 407(i) - 424: 140(bool) SLessThan 420 423 - BranchConditional 424 414 415 - 414: Label - 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 - 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 428 428 16 16 - 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 426 425(shadowClip) 49 - 432: 73(fvec3) Load 80(fragPos) - 433: 8(float) CompositeExtract 432 0 - 434: 8(float) CompositeExtract 432 1 - 435: 8(float) CompositeExtract 432 2 - 436: 18(fvec4) CompositeConstruct 433 434 435 111 - 477: 233(int) Load 407(i) - 480: 478(ptr) AccessChain 475 313 320 477 423 - 481: 437 Load 480 - 482: 18(fvec4) VectorTimesMatrix 436 481 - Store 425(shadowClip) 482 - 487: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 485 485 16 16 - 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 484 483(shadowFactor) 49 - 488: 233(int) Load 407(i) - 489: 8(float) ConvertSToF 488 - 491: 18(fvec4) Load 425(shadowClip) - Store 490(param) 491 - Store 492(param) 489 - 493: 8(float) FunctionCall 62(filterPCF(vf4;f1;) 490(param) 492(param) - Store 483(shadowFactor) 493 - 495: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 496 496 16 16 - 494: 8(float) Load 483(shadowFactor) - 497: 73(fvec3) Load 79(fragcolor) - 498: 73(fvec3) VectorTimesScalar 497 494 - Store 79(fragcolor) 498 - Branch 416 - 416: Label - 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 - 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 410 410 16 16 - 499: 233(int) Load 407(i) - 502: 233(int) IAdd 499 320 - Store 407(i) 502 - Branch 413 - 415: Label - 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 84 - 505: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 506 506 16 16 - 503: 73(fvec3) Load 79(fragcolor) - ReturnValue 503 +82(shadow(vf3;vf3;): 74(fvec3) Function None 78 + 80(fragcolor): 76(ptr) FunctionParameter + 81(fragPos): 76(ptr) FunctionParameter + 83: Label + 408(i): 251(ptr) Variable Function + 426(shadowClip): 21(ptr) Variable Function +484(shadowFactor): 24(ptr) Variable Function + 491(param): 21(ptr) Variable Function + 493(param): 24(ptr) Variable Function + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 86 86 16 16 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 80(fragcolor) 49 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragPos) 49 + 407: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) + 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 411 411 16 16 + 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 409 408(i) 49 + Store 408(i) 315 + Branch 414 + 414: Label + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 411 411 16 16 + LoopMerge 416 417 None + Branch 420 + 420: Label + 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 411 411 16 16 + 421: 235(int) Load 408(i) + 425: 143(bool) SLessThan 421 424 + BranchConditional 425 415 416 + 415: Label + 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 429 429 16 16 + 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 427 426(shadowClip) 49 + 433: 74(fvec3) Load 81(fragPos) + 434: 8(float) CompositeExtract 433 0 + 435: 8(float) CompositeExtract 433 1 + 436: 8(float) CompositeExtract 433 2 + 437: 18(fvec4) CompositeConstruct 434 435 436 114 + 478: 235(int) Load 408(i) + 481: 479(ptr) AccessChain 476 315 322 478 424 + 482: 438 Load 481 + 483: 18(fvec4) VectorTimesMatrix 437 482 + Store 426(shadowClip) 483 + 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 486 486 16 16 + 487: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 485 484(shadowFactor) 49 + 489: 235(int) Load 408(i) + 490: 8(float) ConvertSToF 489 + 492: 18(fvec4) Load 426(shadowClip) + Store 491(param) 492 + Store 493(param) 490 + 494: 8(float) FunctionCall 62(filterPCF(vf4;f1;) 491(param) 493(param) + Store 484(shadowFactor) 494 + 496: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 497 497 16 16 + 495: 8(float) Load 484(shadowFactor) + 498: 74(fvec3) Load 80(fragcolor) + 499: 74(fvec3) VectorTimesScalar 498 495 + Store 80(fragcolor) 499 + Branch 417 + 417: Label + 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 411 411 16 16 + 500: 235(int) Load 408(i) + 503: 235(int) IAdd 500 322 + Store 408(i) 503 + Branch 414 + 416: Label + 505: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 507 507 16 16 + 504: 74(fvec3) Load 80(fragcolor) + ReturnValue 504 FunctionEnd - 96(@main(vf2;): 18(fvec4) Function None 93 - 95(inUV): 29(ptr) FunctionParameter - 97: Label - 512(fragPos): 75(ptr) Variable Function - 536(normal): 75(ptr) Variable Function + 98(@main(vf2;): 18(fvec4) Function None 95 + 97(inUV): 29(ptr) FunctionParameter + 99: Label + 512(fragPos): 76(ptr) Variable Function + 536(normal): 76(ptr) Variable Function 555(albedo): 21(ptr) Variable Function - 593(fragcolor): 75(ptr) Variable Function - 600(param): 75(ptr) Variable Function - 601(param): 75(ptr) Variable Function - 660(N): 75(ptr) Variable Function - 668(i): 249(ptr) Variable Function - 684(L): 75(ptr) Variable Function + 593(fragcolor): 76(ptr) Variable Function + 600(param): 76(ptr) Variable Function + 601(param): 76(ptr) Variable Function + 660(N): 76(ptr) Variable Function + 668(i): 251(ptr) Variable Function + 684(L): 76(ptr) Variable Function 699(dist): 24(ptr) Variable Function - 710(V): 75(ptr) Variable Function + 710(V): 76(ptr) Variable Function 725(lightCosInnerAngle): 24(ptr) Variable Function 732(lightCosOuterAngle): 24(ptr) Variable Function 739(lightRange): 24(ptr) Variable Function - 746(dir): 75(ptr) Variable Function + 746(dir): 76(ptr) Variable Function 762(cosDir): 24(ptr) Variable Function 771(spotEffect): 24(ptr) Variable Function 781(heightAttenuation): 24(ptr) Variable Function 790(NdotL): 24(ptr) Variable Function - 800(diff): 75(ptr) Variable Function - 808(R): 75(ptr) Variable Function + 800(diff): 76(ptr) Variable Function + 808(R): 76(ptr) Variable Function 818(NdotR): 24(ptr) Variable Function - 828(spec): 75(ptr) Variable Function - 875(param): 75(ptr) Variable Function - 880(param): 75(ptr) Variable Function - 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 - 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 95(inUV) 49 - 511: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 100 100 16 16 - 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 99 96(@main(vf2;) + 828(spec): 76(ptr) Variable Function + 875(param): 76(ptr) Variable Function + 880(param): 76(ptr) Variable Function + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 102 102 16 16 + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 103 97(inUV) 49 + 511: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 101 98(@main(vf2;) 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 514 514 16 16 515: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(fragPos) 49 524: 517 Load 521(textureposition) - 529: 169 Load 526(samplerposition) + 529: 172 Load 526(samplerposition) 532: 530 SampledImage 524 529 - 533: 26(fvec2) Load 95(inUV) + 533: 26(fvec2) Load 97(inUV) 534: 18(fvec4) ImageSampleImplicitLod 532 533 - 535: 73(fvec3) VectorShuffle 534 534 0 1 2 + 535: 74(fvec3) VectorShuffle 534 534 0 1 2 Store 512(fragPos) 535 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 539 539 16 16 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 537 536(normal) 49 545: 517 Load 542(textureNormal) - 550: 169 Load 547(samplerNormal) + 550: 172 Load 547(samplerNormal) 551: 530 SampledImage 545 550 - 552: 26(fvec2) Load 95(inUV) + 552: 26(fvec2) Load 97(inUV) 553: 18(fvec4) ImageSampleImplicitLod 551 552 - 554: 73(fvec3) VectorShuffle 553 553 0 1 2 + 554: 74(fvec3) VectorShuffle 553 553 0 1 2 Store 536(normal) 554 560: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 558 558 16 16 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 556 555(albedo) 49 564: 517 Load 561(textureAlbedo) - 569: 169 Load 566(samplerAlbedo) + 569: 172 Load 566(samplerAlbedo) 570: 530 SampledImage 564 569 - 571: 26(fvec2) Load 95(inUV) + 571: 26(fvec2) Load 97(inUV) 572: 18(fvec4) ImageSampleImplicitLod 570 571 Store 555(albedo) 572 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 577 577 16 16 - 575: 573(ptr) AccessChain 475 313 423 - 578: 233(int) Load 575 - 579: 140(bool) SGreaterThan 578 313 + 575: 573(ptr) AccessChain 476 315 424 + 578: 235(int) Load 575 + 579: 143(bool) SGreaterThan 578 315 SelectionMerge 581 None BranchConditional 579 580 581 580: Label - 583: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 583: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 585 585 16 16 - 582: 573(ptr) AccessChain 475 313 423 - 586: 233(int) Load 582 + 582: 573(ptr) AccessChain 476 315 424 + 586: 235(int) Load 582 SelectionMerge 592 None Switch 586 592 case 1: 587 @@ -902,113 +902,113 @@ spv.debuginfo.hlsl.frag case 4: 590 case 5: 591 587: Label - 597: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 597: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 595 595 16 16 596: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 594 593(fragcolor) 49 Store 600(param) 599 - 602: 73(fvec3) Load 512(fragPos) + 602: 74(fvec3) Load 512(fragPos) Store 601(param) 602 - 603: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 600(param) 601(param) + 603: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 600(param) 601(param) Store 593(fragcolor) 603 604: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 605 605 16 16 Branch 592 588: Label - 609: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 609: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 611 611 16 16 - 608: 73(fvec3) Load 512(fragPos) + 608: 74(fvec3) Load 512(fragPos) Store 593(fragcolor) 608 612: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 613 613 16 16 Branch 592 589: Label - 617: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 617: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 618: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 619 619 16 16 - 616: 73(fvec3) Load 536(normal) + 616: 74(fvec3) Load 536(normal) Store 593(fragcolor) 616 620: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 621 621 16 16 Branch 592 590: Label - 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 626: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 627 627 16 16 624: 18(fvec4) Load 555(albedo) - 628: 73(fvec3) VectorShuffle 624 624 0 1 2 + 628: 74(fvec3) VectorShuffle 624 624 0 1 2 Store 593(fragcolor) 628 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 630 630 16 16 Branch 592 591: Label - 634: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 634: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 635: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 636 636 16 16 633: 18(fvec4) Load 555(albedo) - 637: 73(fvec3) VectorShuffle 633 633 3 3 3 + 637: 74(fvec3) VectorShuffle 633 633 3 3 3 Store 593(fragcolor) 637 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 639 639 16 16 Branch 592 592: Label - 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 645: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 646 646 16 16 - 643: 73(fvec3) Load 593(fragcolor) + 643: 74(fvec3) Load 593(fragcolor) 647: 8(float) CompositeExtract 643 0 648: 8(float) CompositeExtract 643 1 649: 8(float) CompositeExtract 643 2 - 650: 18(fvec4) CompositeConstruct 647 648 649 111 + 650: 18(fvec4) CompositeConstruct 647 648 649 114 ReturnValue 650 581: Label - 654: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 654: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 656 656 16 16 653: 18(fvec4) Load 555(albedo) - 657: 73(fvec3) VectorShuffle 653 653 0 1 2 - 659: 73(fvec3) VectorTimesScalar 657 658 + 657: 74(fvec3) VectorShuffle 653 653 0 1 2 + 659: 74(fvec3) VectorTimesScalar 657 658 Store 593(fragcolor) 659 665: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 663 663 16 16 664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 661 660(N) 49 - 666: 73(fvec3) Load 536(normal) - 667: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 666 + 666: 74(fvec3) Load 536(normal) + 667: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 666 Store 660(N) 667 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 669 668(i) 49 - Store 668(i) 313 + Store 668(i) 315 Branch 673 673: Label - 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 678: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 LoopMerge 675 676 None Branch 679 679: Label - 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 682: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 - 680: 233(int) Load 668(i) - 683: 140(bool) SLessThan 680 423 + 680: 235(int) Load 668(i) + 683: 143(bool) SLessThan 680 424 BranchConditional 683 674 675 674: Label - 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 687 687 16 16 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 685 684(L) 49 - 691: 233(int) Load 668(i) - 694: 692(ptr) AccessChain 475 313 320 691 313 + 691: 235(int) Load 668(i) + 694: 692(ptr) AccessChain 476 315 322 691 315 695: 18(fvec4) Load 694 - 696: 73(fvec3) VectorShuffle 695 695 0 1 2 - 697: 73(fvec3) Load 512(fragPos) - 698: 73(fvec3) FSub 696 697 + 696: 74(fvec3) VectorShuffle 695 695 0 1 2 + 697: 74(fvec3) Load 512(fragPos) + 698: 74(fvec3) FSub 696 697 Store 684(L) 698 703: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 701 701 16 16 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 700 699(dist) 49 - 704: 73(fvec3) Load 684(L) + 704: 74(fvec3) Load 684(L) 705: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 704 Store 699(dist) 705 707: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 708 708 16 16 - 706: 73(fvec3) Load 684(L) - 709: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 706 + 706: 74(fvec3) Load 684(L) + 709: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 706 Store 684(L) 709 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 713 713 16 16 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 711 710(V) 49 - 716: 692(ptr) AccessChain 475 313 313 + 716: 692(ptr) AccessChain 476 315 315 717: 18(fvec4) Load 716 - 718: 73(fvec3) VectorShuffle 717 717 0 1 2 - 719: 73(fvec3) Load 512(fragPos) - 720: 73(fvec3) FSub 718 719 + 718: 74(fvec3) VectorShuffle 717 717 0 1 2 + 719: 74(fvec3) Load 512(fragPos) + 720: 74(fvec3) FSub 718 719 Store 710(V) 720 722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 723 723 16 16 - 721: 73(fvec3) Load 710(V) - 724: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 721 + 721: 74(fvec3) Load 710(V) + 724: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 721 Store 710(V) 724 730: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 728 728 16 16 729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(lightCosInnerAngle) 49 @@ -1021,21 +1021,21 @@ spv.debuginfo.hlsl.frag Store 739(lightRange) 745 751: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 749 749 16 16 750: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 747 746(dir) 49 - 752: 233(int) Load 668(i) - 753: 692(ptr) AccessChain 475 313 320 752 313 + 752: 235(int) Load 668(i) + 753: 692(ptr) AccessChain 476 315 322 752 315 754: 18(fvec4) Load 753 - 755: 73(fvec3) VectorShuffle 754 754 0 1 2 - 756: 233(int) Load 668(i) - 757: 692(ptr) AccessChain 475 313 320 756 320 + 755: 74(fvec3) VectorShuffle 754 754 0 1 2 + 756: 235(int) Load 668(i) + 757: 692(ptr) AccessChain 476 315 322 756 322 758: 18(fvec4) Load 757 - 759: 73(fvec3) VectorShuffle 758 758 0 1 2 - 760: 73(fvec3) FSub 755 759 - 761: 73(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 760 + 759: 74(fvec3) VectorShuffle 758 758 0 1 2 + 760: 74(fvec3) FSub 755 759 + 761: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 760 Store 746(dir) 761 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 765 765 16 16 766: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 763 762(cosDir) 49 - 768: 73(fvec3) Load 684(L) - 769: 73(fvec3) Load 746(dir) + 768: 74(fvec3) Load 684(L) + 769: 74(fvec3) Load 746(dir) 770: 8(float) Dot 768 769 Store 762(cosDir) 770 776: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 774 774 16 16 @@ -1049,33 +1049,33 @@ spv.debuginfo.hlsl.frag 785: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 782 781(heightAttenuation) 49 787: 8(float) Load 739(lightRange) 788: 8(float) Load 699(dist) - 789: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 787 198 788 + 789: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 787 201 788 Store 781(heightAttenuation) 789 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 793 793 16 16 794: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 791 790(NdotL) 49 - 796: 73(fvec3) Load 660(N) - 797: 73(fvec3) Load 684(L) + 796: 74(fvec3) Load 660(N) + 797: 74(fvec3) Load 684(L) 798: 8(float) Dot 796 797 - 799: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 798 + 799: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 201 798 Store 790(NdotL) 799 805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 803 803 16 16 804: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 801 800(diff) 49 806: 8(float) Load 790(NdotL) - 807: 73(fvec3) CompositeConstruct 806 806 806 + 807: 74(fvec3) CompositeConstruct 806 806 806 Store 800(diff) 807 813: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 811 811 16 16 812: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 809 808(R) 49 - 814: 73(fvec3) Load 684(L) - 815: 73(fvec3) FNegate 814 - 816: 73(fvec3) Load 660(N) - 817: 73(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 815 816 + 814: 74(fvec3) Load 684(L) + 815: 74(fvec3) FNegate 814 + 816: 74(fvec3) Load 660(N) + 817: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 815 816 Store 808(R) 817 823: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 821 821 16 16 822: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 819 818(NdotR) 49 - 824: 73(fvec3) Load 808(R) - 825: 73(fvec3) Load 710(V) + 824: 74(fvec3) Load 808(R) + 825: 74(fvec3) Load 710(V) 826: 8(float) Dot 824 825 - 827: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 826 + 827: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 201 826 Store 818(NdotR) 827 833: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 831 831 16 16 832: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 829 828(spec) 49 @@ -1085,60 +1085,60 @@ spv.debuginfo.hlsl.frag 838: 8(float) Load 837 839: 8(float) FMul 836 838 841: 8(float) FMul 839 840 - 842: 73(fvec3) CompositeConstruct 841 841 841 + 842: 74(fvec3) CompositeConstruct 841 841 841 Store 828(spec) 842 844: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 845 845 16 16 - 843: 73(fvec3) Load 800(diff) - 846: 73(fvec3) Load 828(spec) - 847: 73(fvec3) FAdd 843 846 + 843: 74(fvec3) Load 800(diff) + 846: 74(fvec3) Load 828(spec) + 847: 74(fvec3) FAdd 843 846 848: 8(float) Load 771(spotEffect) - 849: 73(fvec3) VectorTimesScalar 847 848 + 849: 74(fvec3) VectorTimesScalar 847 848 850: 8(float) Load 781(heightAttenuation) - 851: 73(fvec3) VectorTimesScalar 849 850 - 852: 233(int) Load 668(i) - 854: 692(ptr) AccessChain 475 313 320 852 853 + 851: 74(fvec3) VectorTimesScalar 849 850 + 852: 235(int) Load 668(i) + 854: 692(ptr) AccessChain 476 315 322 852 853 855: 18(fvec4) Load 854 - 856: 73(fvec3) VectorShuffle 855 855 0 1 2 - 857: 73(fvec3) FMul 851 856 + 856: 74(fvec3) VectorShuffle 855 855 0 1 2 + 857: 74(fvec3) FMul 851 856 858: 18(fvec4) Load 555(albedo) - 859: 73(fvec3) VectorShuffle 858 858 0 1 2 - 860: 73(fvec3) FMul 857 859 - 861: 73(fvec3) Load 593(fragcolor) - 862: 73(fvec3) FAdd 861 860 + 859: 74(fvec3) VectorShuffle 858 858 0 1 2 + 860: 74(fvec3) FMul 857 859 + 861: 74(fvec3) Load 593(fragcolor) + 862: 74(fvec3) FAdd 861 860 Store 593(fragcolor) 862 Branch 676 676: Label - 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 865: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 - 863: 233(int) Load 668(i) - 866: 233(int) IAdd 863 320 + 863: 235(int) Load 668(i) + 866: 235(int) IAdd 863 322 Store 668(i) 866 Branch 673 675: Label - 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 869: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 870 870 16 16 - 867: 573(ptr) AccessChain 475 313 853 - 871: 233(int) Load 867 - 872: 140(bool) SGreaterThan 871 313 + 867: 573(ptr) AccessChain 476 315 853 + 871: 235(int) Load 867 + 872: 143(bool) SGreaterThan 871 315 SelectionMerge 874 None BranchConditional 872 873 874 873: Label - 877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 878: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 879 879 16 16 - 876: 73(fvec3) Load 593(fragcolor) + 876: 74(fvec3) Load 593(fragcolor) Store 875(param) 876 - 881: 73(fvec3) Load 512(fragPos) + 881: 74(fvec3) Load 512(fragPos) Store 880(param) 881 - 882: 73(fvec3) FunctionCall 81(shadow(vf3;vf3;) 875(param) 880(param) + 882: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 875(param) 880(param) Store 593(fragcolor) 882 Branch 874 874: Label - 884: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 99 + 884: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 885: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 886 886 16 16 - 883: 73(fvec3) Load 593(fragcolor) + 883: 74(fvec3) Load 593(fragcolor) 887: 8(float) CompositeExtract 883 0 888: 8(float) CompositeExtract 883 1 889: 8(float) CompositeExtract 883 2 - 890: 18(fvec4) CompositeConstruct 887 888 889 111 + 890: 18(fvec4) CompositeConstruct 887 888 889 114 ReturnValue 890 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.geom.out b/Test/baseResults/spv.debuginfo.hlsl.geom.out index 063a6d5576..3c094d3501 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.geom.out +++ b/Test/baseResults/spv.debuginfo.hlsl.geom.out @@ -29,10 +29,10 @@ spv.debuginfo.hlsl.geom " 31: String "Color" 36: String "VSOutput" - 49: String "PrimitiveID" - 54: String "LightVec" - 60: String "GSOutput" - 73: String "@main" + 50: String "PrimitiveID" + 55: String "LightVec" + 61: String "GSOutput" + 74: String "@main" 77: String "input" 83: String "outStream" 87: String "InvocationID" @@ -60,19 +60,19 @@ spv.debuginfo.hlsl.geom MemberName 23(VSOutput) 0 "Pos" MemberName 23(VSOutput) 1 "Normal" MemberName 23(VSOutput) 2 "Color" - Name 45 "GSOutput" - MemberName 45(GSOutput) 0 "Pos" - MemberName 45(GSOutput) 1 "ViewportIndex" - MemberName 45(GSOutput) 2 "PrimitiveID" - MemberName 45(GSOutput) 3 "Normal" - MemberName 45(GSOutput) 4 "Color" - MemberName 45(GSOutput) 5 "ViewVec" - MemberName 45(GSOutput) 6 "LightVec" - Name 71 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" - Name 67 "input" - Name 68 "outStream" - Name 69 "InvocationID" - Name 70 "PrimitiveID" + Name 46 "GSOutput" + MemberName 46(GSOutput) 0 "Pos" + MemberName 46(GSOutput) 1 "ViewportIndex" + MemberName 46(GSOutput) 2 "PrimitiveID" + MemberName 46(GSOutput) 3 "Normal" + MemberName 46(GSOutput) 4 "Color" + MemberName 46(GSOutput) 5 "ViewVec" + MemberName 46(GSOutput) 6 "LightVec" + Name 72 "@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;" + Name 68 "input" + Name 69 "outStream" + Name 70 "InvocationID" + Name 71 "PrimitiveID" Name 97 "i" Name 119 "output" Name 145 "UBO" @@ -155,61 +155,61 @@ spv.debuginfo.hlsl.geom 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 31 22 26 32 33 16 16 17 37: 11(int) Constant 1 - 39: 11(int) Constant 5 - 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 19 26 39 - 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 36 37 26 16 16 38 36 16 17 24 30 34 - 40: TypeArray 23(VSOutput) 17 - 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 17 - 42: TypePointer Function 40 - 43: 11(int) Constant 7 - 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 41 43 16 - 45(GSOutput): TypeStruct 18(fvec4) 11(int) 11(int) 21(fvec3) 21(fvec3) 21(fvec3) 21(fvec3) - 47: 11(int) Constant 44 - 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 47 29 16 16 17 - 50: 11(int) Constant 46 - 51: 11(int) Constant 19 - 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 - 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 49 13 26 50 51 16 16 17 - 55: 11(int) Constant 50 - 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 56: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 54 22 26 55 28 16 16 17 - 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 60 37 26 16 16 38 60 16 17 46 48 52 53 56 57 58 - 61: TypePointer Function 45(GSOutput) - 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 43 16 - 63: TypePointer Function 11(int) - 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 43 16 - 65: TypeFunction 4 42(ptr) 61(ptr) 63(ptr) 63(ptr) - 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 41 59 13 13 - 75: 11(int) Constant 56 - 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 73 66 26 75 16 38 73 17 75 - 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 41 26 75 16 74 19 37 + 38: 11(int) Constant 56 + 40: 11(int) Constant 5 + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 19 26 40 + 35: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 36 37 26 38 16 39 36 16 17 24 30 34 + 41: TypeArray 23(VSOutput) 17 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 35 17 + 43: TypePointer Function 41 + 44: 11(int) Constant 7 + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 42 44 16 + 46(GSOutput): TypeStruct 18(fvec4) 11(int) 11(int) 21(fvec3) 21(fvec3) 21(fvec3) 21(fvec3) + 48: 11(int) Constant 44 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 25 20 26 48 29 16 16 17 + 51: 11(int) Constant 46 + 52: 11(int) Constant 19 + 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 50 13 26 51 52 16 16 17 + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 50 13 26 51 52 16 16 17 + 56: 11(int) Constant 50 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 + 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 22 26 56 28 16 16 17 + 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 61 37 26 38 16 39 61 16 17 47 49 53 54 57 58 59 + 62: TypePointer Function 46(GSOutput) + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 44 16 + 64: TypePointer Function 11(int) + 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 44 16 + 66: TypeFunction 4 43(ptr) 62(ptr) 64(ptr) 64(ptr) + 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 4 42 60 13 13 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 74 67 26 38 16 39 74 17 38 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 77 42 26 38 16 75 19 37 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) 84: 11(int) Constant 2 - 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 59 26 75 16 74 19 84 - 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 13 26 75 16 74 19 17 - 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 49 13 26 75 16 74 19 19 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 60 26 38 16 75 19 84 + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 87 13 26 38 16 75 19 17 + 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 50 13 26 38 16 75 19 19 92: TypeInt 32 1 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 93 14 19 16 95: TypePointer Function 92(int) - 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 94 43 16 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 94 44 16 100: 11(int) Constant 57 - 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 94 26 100 16 74 19 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 94 26 100 16 75 19 103: 92(int) Constant 0 114: 92(int) Constant 3 115: TypeBool 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 116 14 84 16 122: 11(int) Constant 59 - 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 59 26 122 16 74 19 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 121 60 26 122 16 75 19 126: 8(float) Constant 0 127: 18(fvec4) ConstantComposite 126 126 126 126 128: 21(fvec3) ConstantComposite 126 126 126 - 129:45(GSOutput) ConstantComposite 127 16 16 128 128 128 128 + 129:46(GSOutput) ConstantComposite 127 16 16 128 128 128 128 132: 11(int) Constant 60 133: 92(int) Constant 1 134: TypePointer Function 21(fvec3) - 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 43 16 + 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 44 16 138: TypeMatrix 18(fvec4) 4 140: 115(bool) ConstantTrue 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 140 @@ -227,16 +227,16 @@ spv.debuginfo.hlsl.geom 156: 11(int) Constant 30 157: 11(int) Constant 17 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 155 20 26 156 157 16 16 17 - 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 37 26 132 16 38 159 16 17 146 150 154 + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 159 37 26 132 16 39 159 16 17 146 150 154 160(ubo): TypeStruct 145(UBO) 163: 11(int) Constant 33 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 162 158 26 163 28 16 16 17 - 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 37 26 132 16 38 162 16 17 161 + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 37 26 132 16 39 162 16 17 161 165: TypePointer Uniform 160(ubo) 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 164 84 16 167: 165(ptr) Variable Uniform 169: 11(int) Constant 8 - 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 164 26 132 16 38 2 167 169 + 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 164 26 132 16 39 2 167 169 171: TypePointer Uniform 138 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 139 84 16 175: TypeMatrix 21(fvec3) 3 @@ -245,13 +245,13 @@ spv.debuginfo.hlsl.geom 189: 11(int) Constant 61 190: 92(int) Constant 2 194: TypePointer Function 18(fvec4) - 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 43 16 + 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 44 16 199: 11(int) Constant 63 - 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 198 20 26 199 16 74 19 + 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 198 20 26 199 16 75 19 208: 11(int) Constant 64 - 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 207 20 26 208 16 74 19 + 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 207 20 26 208 16 75 19 219: 11(int) Constant 66 - 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 218 22 26 219 16 74 19 + 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 218 22 26 219 16 75 19 222: TypePointer Uniform 18(fvec4) 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 84 16 231: 92(int) Constant 6 @@ -265,23 +265,23 @@ spv.debuginfo.hlsl.geom 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 17 16 264(outStream.Pos): 262(ptr) Variable Output 267: 11(int) Constant 75 - 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 266 20 26 267 16 38 266 264(outStream.Pos) 169 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 266 20 26 267 16 39 266 264(outStream.Pos) 169 271: TypePointer Output 11(int) 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 17 16 273(outStream.ViewportIndex): 271(ptr) Variable Output - 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 275 13 26 267 16 38 275 273(outStream.ViewportIndex) 169 + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 275 13 26 267 16 39 275 273(outStream.ViewportIndex) 169 278(outStream.PrimitiveID): 271(ptr) Variable Output - 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 280 13 26 267 16 38 280 278(outStream.PrimitiveID) 169 + 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 280 13 26 267 16 39 280 278(outStream.PrimitiveID) 169 283: TypePointer Output 21(fvec3) 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 17 16 285(outStream.Normal): 283(ptr) Variable Output - 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 287 22 26 267 16 38 287 285(outStream.Normal) 169 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 287 22 26 267 16 39 287 285(outStream.Normal) 169 290(outStream.Color): 283(ptr) Variable Output - 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 292 22 26 267 16 38 292 290(outStream.Color) 169 + 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 292 22 26 267 16 39 292 290(outStream.Color) 169 295(outStream.ViewVec): 283(ptr) Variable Output - 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 297 22 26 267 16 38 297 295(outStream.ViewVec) 169 + 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 297 22 26 267 16 39 297 295(outStream.ViewVec) 169 300(outStream.LightVec): 283(ptr) Variable Output - 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 302 22 26 267 16 38 302 300(outStream.LightVec) 169 + 301: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 302 22 26 267 16 39 302 300(outStream.LightVec) 169 311: 11(int) Constant 78 313: TypeArray 18(fvec4) 17 314: TypePointer Input 313 @@ -297,14 +297,14 @@ spv.debuginfo.hlsl.geom 354(PrimitiveID): 350(ptr) Variable Input 6(main): 4 Function None 5 7: Label - 312(input): 42(ptr) Variable Function -349(InvocationID): 63(ptr) Variable Function -353(PrimitiveID): 63(ptr) Variable Function - 356(outStream): 61(ptr) Variable Function - 357(param): 42(ptr) Variable Function - 359(param): 61(ptr) Variable Function - 360(param): 63(ptr) Variable Function - 362(param): 63(ptr) Variable Function + 312(input): 43(ptr) Variable Function +349(InvocationID): 64(ptr) Variable Function +353(PrimitiveID): 64(ptr) Variable Function + 356(outStream): 62(ptr) Variable Function + 357(param): 43(ptr) Variable Function + 359(param): 62(ptr) Variable Function + 360(param): 64(ptr) Variable Function + 362(param): 64(ptr) Variable Function 317: 316(ptr) AccessChain 315(input.Pos) 103 318: 18(fvec4) Load 317 319: 194(ptr) AccessChain 312(input) 103 103 @@ -345,60 +345,60 @@ spv.debuginfo.hlsl.geom Store 349(InvocationID) 352 355: 11(int) Load 354(PrimitiveID) Store 353(PrimitiveID) 355 - 358: 40 Load 312(input) + 358: 41 Load 312(input) Store 357(param) 358 361: 11(int) Load 349(InvocationID) Store 360(param) 361 363: 11(int) Load 353(PrimitiveID) Store 362(param) 363 - 364: 4 FunctionCall 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 357(param) 359(param) 360(param) 362(param) - 365:45(GSOutput) Load 359(param) + 364: 4 FunctionCall 72(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 357(param) 359(param) 360(param) 362(param) + 365:46(GSOutput) Load 359(param) Store 356(outStream) 365 Return FunctionEnd -71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 4 Function None 65 - 67(input): 42(ptr) FunctionParameter - 68(outStream): 61(ptr) FunctionParameter -69(InvocationID): 63(ptr) FunctionParameter - 70(PrimitiveID): 63(ptr) FunctionParameter - 72: Label +72(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;): 4 Function None 66 + 68(input): 43(ptr) FunctionParameter + 69(outStream): 62(ptr) FunctionParameter +70(InvocationID): 64(ptr) FunctionParameter + 71(PrimitiveID): 64(ptr) FunctionParameter + 73: Label 97(i): 95(ptr) Variable Function - 119(output): 61(ptr) Variable Function + 119(output): 62(ptr) Variable Function 196(pos): 194(ptr) Variable Function 205(worldPos): 194(ptr) Variable Function 216(lPos): 134(ptr) Variable Function - 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 - 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 75 75 16 16 - 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 67(input) 79 - 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 68(outStream) 79 - 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 69(InvocationID) 79 - 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 70(PrimitiveID) 79 - 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 74 71(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 38 38 16 16 + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 76 68(input) 79 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 69(outStream) 79 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 86 70(InvocationID) 79 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 89 71(PrimitiveID) 79 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 75 72(@main(struct-VSOutput-vf4-vf3-vf31[3];struct-GSOutput-vf4-u1-u1-vf3-vf3-vf3-vf31;u1;u1;) 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 97(i) 79 Store 97(i) 103 Branch 104 104: Label - 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 LoopMerge 106 107 None Branch 110 110: Label - 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 111: 92(int) Load 97(i) 118: 115(bool) SLessThan 111 114 BranchConditional 118 105 106 105: Label - 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 122 122 16 16 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 120 119(output) 79 Store 119(output) 129 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 132 132 16 16 130: 92(int) Load 97(i) - 136: 134(ptr) AccessChain 67(input) 130 133 + 136: 134(ptr) AccessChain 68(input) 130 133 137: 21(fvec3) Load 136 - 170: 11(int) Load 69(InvocationID) + 170: 11(int) Load 70(InvocationID) 173: 171(ptr) AccessChain 167 103 133 170 174: 138 Load 173 177: 18(fvec4) CompositeExtract 174 0 @@ -413,20 +413,20 @@ spv.debuginfo.hlsl.geom Store 185 184 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 189 189 16 16 187: 92(int) Load 97(i) - 191: 134(ptr) AccessChain 67(input) 187 190 + 191: 134(ptr) AccessChain 68(input) 187 190 192: 21(fvec3) Load 191 193: 134(ptr) AccessChain 119(output) 186 Store 193 192 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 199 199 16 16 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 197 196(pos) 79 202: 92(int) Load 97(i) - 203: 194(ptr) AccessChain 67(input) 202 103 + 203: 194(ptr) AccessChain 68(input) 202 103 204: 18(fvec4) Load 203 Store 196(pos) 204 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 208 208 16 16 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 206 205(worldPos) 79 211: 18(fvec4) Load 196(pos) - 212: 11(int) Load 69(InvocationID) + 212: 11(int) Load 70(InvocationID) 213: 171(ptr) AccessChain 167 103 133 212 214: 138 Load 213 215: 18(fvec4) VectorTimesMatrix 211 214 @@ -435,7 +435,7 @@ spv.debuginfo.hlsl.geom 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 217 216(lPos) 79 224: 222(ptr) AccessChain 167 103 190 225: 18(fvec4) Load 224 - 226: 11(int) Load 69(InvocationID) + 226: 11(int) Load 70(InvocationID) 227: 171(ptr) AccessChain 167 103 133 226 228: 138 Load 227 229: 18(fvec4) VectorTimesMatrix 225 228 @@ -456,28 +456,28 @@ spv.debuginfo.hlsl.geom Store 245 244 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 248 248 16 16 246: 18(fvec4) Load 205(worldPos) - 249: 11(int) Load 69(InvocationID) + 249: 11(int) Load 70(InvocationID) 250: 171(ptr) AccessChain 167 103 103 249 251: 138 Load 250 252: 18(fvec4) VectorTimesMatrix 246 251 253: 194(ptr) AccessChain 119(output) 103 Store 253 252 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 256 256 16 16 - 254: 11(int) Load 69(InvocationID) - 257: 63(ptr) AccessChain 119(output) 133 + 254: 11(int) Load 70(InvocationID) + 257: 64(ptr) AccessChain 119(output) 133 Store 257 254 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 260 260 16 16 - 258: 11(int) Load 70(PrimitiveID) - 261: 63(ptr) AccessChain 119(output) 190 + 258: 11(int) Load 71(PrimitiveID) + 261: 64(ptr) AccessChain 119(output) 190 Store 261 258 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 267 267 16 16 268: 194(ptr) AccessChain 119(output) 103 270: 18(fvec4) Load 268 Store 264(outStream.Pos) 270 - 276: 63(ptr) AccessChain 119(output) 133 + 276: 64(ptr) AccessChain 119(output) 133 277: 11(int) Load 276 Store 273(outStream.ViewportIndex) 277 - 281: 63(ptr) AccessChain 119(output) 190 + 281: 64(ptr) AccessChain 119(output) 190 282: 11(int) Load 281 Store 278(outStream.PrimitiveID) 282 288: 134(ptr) AccessChain 119(output) 114 @@ -495,14 +495,14 @@ spv.debuginfo.hlsl.geom EmitVertex Branch 107 107: Label - 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 100 100 16 16 305: 92(int) Load 97(i) 308: 92(int) IAdd 305 133 Store 97(i) 308 Branch 104 106: Label - 309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 74 + 309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 75 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 26 311 311 16 16 EndPrimitive Return diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index 2bccaa87a9..04e24c4c93 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -33,42 +33,42 @@ WARNING: 0:158: '' : attribute does not apply to entry point 53: String "bool" 61: String "frustumCheck" 65: String "Pos" - 69: String "inUV" - 78: String "Normal" - 82: String "UV" - 86: String "VSOutput" - 97: String "TessLevelOuter" - 101: String "TessLevelInner" - 104: String "ConstantsHSOutput" - 110: String "ConstantsHS" - 114: String "patch" - 127: String "HSOutput" - 134: String "@main" - 141: String "InvocationID" - 146: String "midPoint" - 159: String "radius" - 170: String "v0" - 182: String "modelview" - 187: String "lightPos" - 191: String "frustumPlanes" - 194: String "tessellatedEdgeSize" - 198: String "viewportDim" - 202: String "UBO" - 205: String "ubo" - 214: String "int" - 225: String "clip0" - 243: String "clip1" - 321: String "pos" - 328: String "type.2d.image" - 330: String "@type.2d.image" - 336: String "textureHeight" - 341: String "type.sampler" - 342: String "@type.sampler" - 347: String "samplerHeight" - 351: String "type.sampled.image" - 352: String "@type.sampled.image" - 369: String "i" - 423: String "output" + 70: String "inUV" + 79: String "Normal" + 83: String "UV" + 87: String "VSOutput" + 99: String "TessLevelOuter" + 103: String "TessLevelInner" + 106: String "ConstantsHSOutput" + 112: String "ConstantsHS" + 115: String "patch" + 129: String "HSOutput" + 137: String "@main" + 144: String "InvocationID" + 149: String "midPoint" + 162: String "radius" + 173: String "v0" + 185: String "modelview" + 190: String "lightPos" + 194: String "frustumPlanes" + 197: String "tessellatedEdgeSize" + 201: String "viewportDim" + 205: String "UBO" + 208: String "ubo" + 217: String "int" + 228: String "clip0" + 246: String "clip1" + 323: String "pos" + 330: String "type.2d.image" + 332: String "@type.2d.image" + 338: String "textureHeight" + 343: String "type.sampler" + 344: String "@type.sampler" + 349: String "samplerHeight" + 353: String "type.sampled.image" + 354: String "@type.sampled.image" + 371: String "i" + 424: String "output" Name 6 "main" Name 28 "screenSpaceTessFactor(vf4;vf4;" Name 26 "p0" @@ -76,54 +76,54 @@ WARNING: 0:158: '' : attribute does not apply to entry point Name 59 "frustumCheck(vf4;vf2;" Name 57 "Pos" Name 58 "inUV" - Name 73 "VSOutput" - MemberName 73(VSOutput) 0 "Pos" - MemberName 73(VSOutput) 1 "Normal" - MemberName 73(VSOutput) 2 "UV" - Name 95 "ConstantsHSOutput" - MemberName 95(ConstantsHSOutput) 0 "TessLevelOuter" - MemberName 95(ConstantsHSOutput) 1 "TessLevelInner" - Name 108 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" - Name 107 "patch" - Name 119 "HSOutput" - MemberName 119(HSOutput) 0 "Pos" - MemberName 119(HSOutput) 1 "Normal" - MemberName 119(HSOutput) 2 "UV" - Name 132 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" - Name 130 "patch" - Name 131 "InvocationID" - Name 144 "midPoint" - Name 157 "radius" - Name 168 "v0" - Name 180 "UBO" - MemberName 180(UBO) 0 "projection" - MemberName 180(UBO) 1 "modelview" - MemberName 180(UBO) 2 "lightPos" - MemberName 180(UBO) 3 "frustumPlanes" - MemberName 180(UBO) 4 "displacementFactor" - MemberName 180(UBO) 5 "tessellationFactor" - MemberName 180(UBO) 6 "viewportDim" - MemberName 180(UBO) 7 "tessellatedEdgeSize" - Name 203 "ubo" - MemberName 203(ubo) 0 "ubo" - Name 210 "" - Name 223 "clip0" - Name 241 "clip1" - Name 319 "pos" - Name 334 "textureHeight" - Name 345 "samplerHeight" - Name 367 "i" - Name 421 "output" - Name 431 "param" - Name 436 "param" - Name 471 "param" - Name 477 "param" - Name 482 "param" - Name 487 "param" - Name 492 "param" - Name 497 "param" - Name 502 "param" - Name 507 "param" + Name 74 "VSOutput" + MemberName 74(VSOutput) 0 "Pos" + MemberName 74(VSOutput) 1 "Normal" + MemberName 74(VSOutput) 2 "UV" + Name 97 "ConstantsHSOutput" + MemberName 97(ConstantsHSOutput) 0 "TessLevelOuter" + MemberName 97(ConstantsHSOutput) 1 "TessLevelInner" + Name 110 "ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];" + Name 109 "patch" + Name 121 "HSOutput" + MemberName 121(HSOutput) 0 "Pos" + MemberName 121(HSOutput) 1 "Normal" + MemberName 121(HSOutput) 2 "UV" + Name 135 "@main(struct-VSOutput-vf4-vf3-vf21[4];u1;" + Name 133 "patch" + Name 134 "InvocationID" + Name 147 "midPoint" + Name 160 "radius" + Name 171 "v0" + Name 183 "UBO" + MemberName 183(UBO) 0 "projection" + MemberName 183(UBO) 1 "modelview" + MemberName 183(UBO) 2 "lightPos" + MemberName 183(UBO) 3 "frustumPlanes" + MemberName 183(UBO) 4 "displacementFactor" + MemberName 183(UBO) 5 "tessellationFactor" + MemberName 183(UBO) 6 "viewportDim" + MemberName 183(UBO) 7 "tessellatedEdgeSize" + Name 206 "ubo" + MemberName 206(ubo) 0 "ubo" + Name 213 "" + Name 226 "clip0" + Name 244 "clip1" + Name 321 "pos" + Name 336 "textureHeight" + Name 347 "samplerHeight" + Name 369 "i" + Name 422 "output" + Name 432 "param" + Name 437 "param" + Name 472 "param" + Name 478 "param" + Name 483 "param" + Name 488 "param" + Name 493 "param" + Name 498 "param" + Name 503 "param" + Name 508 "param" Name 560 "output" Name 594 "patch" Name 597 "patch.Pos" @@ -141,27 +141,27 @@ WARNING: 0:158: '' : attribute does not apply to entry point Name 679 "param" Name 683 "@patchConstantOutput.TessLevelOuter" Name 698 "@patchConstantOutput.TessLevelInner" - Decorate 178 ArrayStride 16 - MemberDecorate 180(UBO) 0 RowMajor - MemberDecorate 180(UBO) 0 MatrixStride 16 - MemberDecorate 180(UBO) 0 Offset 0 - MemberDecorate 180(UBO) 1 RowMajor - MemberDecorate 180(UBO) 1 MatrixStride 16 - MemberDecorate 180(UBO) 1 Offset 64 - MemberDecorate 180(UBO) 2 Offset 128 - MemberDecorate 180(UBO) 3 Offset 144 - MemberDecorate 180(UBO) 4 Offset 240 - MemberDecorate 180(UBO) 5 Offset 244 - MemberDecorate 180(UBO) 6 Offset 248 - MemberDecorate 180(UBO) 7 Offset 256 - Decorate 203(ubo) Block - MemberDecorate 203(ubo) 0 Offset 0 - Decorate 210 Binding 0 - Decorate 210 DescriptorSet 0 - Decorate 334(textureHeight) Binding 1 - Decorate 334(textureHeight) DescriptorSet 0 - Decorate 345(samplerHeight) Binding 1 - Decorate 345(samplerHeight) DescriptorSet 0 + Decorate 181 ArrayStride 16 + MemberDecorate 183(UBO) 0 RowMajor + MemberDecorate 183(UBO) 0 MatrixStride 16 + MemberDecorate 183(UBO) 0 Offset 0 + MemberDecorate 183(UBO) 1 RowMajor + MemberDecorate 183(UBO) 1 MatrixStride 16 + MemberDecorate 183(UBO) 1 Offset 64 + MemberDecorate 183(UBO) 2 Offset 128 + MemberDecorate 183(UBO) 3 Offset 144 + MemberDecorate 183(UBO) 4 Offset 240 + MemberDecorate 183(UBO) 5 Offset 244 + MemberDecorate 183(UBO) 6 Offset 248 + MemberDecorate 183(UBO) 7 Offset 256 + Decorate 206(ubo) Block + MemberDecorate 206(ubo) 0 Offset 0 + Decorate 213 Binding 0 + Decorate 213 DescriptorSet 0 + Decorate 336(textureHeight) Binding 1 + Decorate 336(textureHeight) DescriptorSet 0 + Decorate 347(samplerHeight) Binding 1 + Decorate 347(samplerHeight) DescriptorSet 0 Decorate 597(patch.Pos) BuiltIn Position Decorate 604(patch.Normal) Location 0 Decorate 611(patch.UV) Location 1 @@ -212,204 +212,204 @@ WARNING: 0:158: '' : attribute does not apply to entry point 63: 11(int) Constant 95 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 61 56 32 63 16 35 61 17 63 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 65 20 32 63 16 62 19 36 - 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 69 49 32 63 16 62 19 46 - 71: TypeVector 8(float) 3 - 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 73(VSOutput): TypeStruct 18(fvec4) 71(fvec3) 48(fvec2) - 75: 11(int) Constant 44 - 76: 11(int) Constant 13 - 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 75 76 16 16 17 - 79: 11(int) Constant 45 - 80: 11(int) Constant 35 - 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 72 32 79 80 16 16 17 - 83: 11(int) Constant 46 - 84: 11(int) Constant 31 - 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 49 32 83 84 16 16 17 - 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 86 36 32 63 16 35 86 16 17 74 77 81 - 87: TypeArray 73(VSOutput) 19 - 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 85 19 - 89: TypePointer Function 87 - 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 22 16 - 91: TypeArray 8(float) 19 - 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 - 93: TypeArray 8(float) 46 - 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 46 -95(ConstantsHSOutput): TypeStruct 91 93 - 98: 11(int) Constant 58 - 99: 11(int) Constant 25 - 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 97 92 32 98 99 16 16 17 - 102: 11(int) Constant 59 - 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 101 94 32 102 99 16 16 17 - 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 104 36 32 63 16 35 104 16 17 96 100 - 105: TypeFunction 95(ConstantsHSOutput) 89(ptr) - 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 103 88 - 112: 11(int) Constant 112 - 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 110 106 32 112 16 35 110 17 112 - 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 88 32 112 16 111 19 36 - 117: TypePointer Function 11(int) - 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 - 119(HSOutput): TypeStruct 18(fvec4) 71(fvec3) 48(fvec2) - 121: 11(int) Constant 51 - 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 121 14 16 16 17 - 123: 11(int) Constant 52 - 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 78 72 32 123 80 16 16 17 - 125: 11(int) Constant 53 - 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 82 49 32 125 84 16 16 17 - 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 127 36 32 112 16 35 127 16 17 120 122 124 - 128: TypeFunction 119(HSOutput) 89(ptr) 117(ptr) - 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 126 88 13 - 136: 11(int) Constant 158 - 135: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 134 129 32 136 16 35 134 17 136 - 137: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 114 88 32 136 16 135 19 36 - 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 13 32 136 16 135 19 46 - 147: 11(int) Constant 67 - 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 20 32 147 16 31 19 - 150: 8(float) Constant 1056964608 - 155: TypePointer Function 8(float) - 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 - 160: 11(int) Constant 69 - 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 159 10 32 160 16 31 19 - 166: 8(float) Constant 1073741824 - 171: 11(int) Constant 72 - 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 170 20 32 171 16 31 19 - 175: TypeMatrix 18(fvec4) 4 - 177: 52(bool) ConstantTrue - 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 177 - 178: TypeArray 18(fvec4) 15 - 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 - 180(UBO): TypeStruct 175 175 18(fvec4) 178 8(float) 8(float) 48(fvec2) 8(float) - 183: 11(int) Constant 29 - 184: 11(int) Constant 20 - 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 182 176 32 183 184 16 16 17 - 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 182 176 32 183 184 16 16 17 - 188: 11(int) Constant 30 - 189: 11(int) Constant 17 - 186: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 187 20 32 188 189 16 16 17 - 192: 11(int) Constant 22 - 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 191 179 32 84 192 16 16 17 - 195: 11(int) Constant 27 - 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 32 80 195 16 16 17 - 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 32 80 195 16 16 17 - 199: 11(int) Constant 34 - 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 198 49 32 199 184 16 16 17 - 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 10 32 80 195 16 16 17 - 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 202 36 32 171 16 35 202 16 17 181 185 186 190 193 196 197 200 - 203(ubo): TypeStruct 180(UBO) - 206: 11(int) Constant 37 - 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 205 201 32 206 206 16 16 17 - 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 205 36 32 171 16 35 205 16 17 204 - 208: TypePointer Uniform 203(ubo) - 209: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 207 46 16 - 210: 208(ptr) Variable Uniform - 212: 11(int) Constant 8 - 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 207 32 171 16 35 2 210 212 - 213: TypeInt 32 1 - 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 214 14 19 16 - 216: 213(int) Constant 0 - 217: 213(int) Constant 1 - 218: TypePointer Uniform 175 - 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 176 46 16 - 226: 11(int) Constant 75 - 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 225 20 32 226 16 31 19 - 231: 8(float) Constant 0 - 232: 71(fvec3) ConstantComposite 231 231 231 - 244: 11(int) Constant 76 - 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 243 20 32 244 16 31 19 - 259: 11(int) Constant 79 - 266: 11(int) Constant 80 - 271: 213(int) Constant 6 - 272: TypePointer Uniform 48(fvec2) - 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 46 16 - 276: 11(int) Constant 83 - 287: 11(int) Constant 84 - 298: 11(int) Constant 89 - 301: 213(int) Constant 7 - 302: TypePointer Uniform 8(float) - 303: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 46 16 - 307: 213(int) Constant 5 - 311: 8(float) Constant 1065353216 - 312: 8(float) Constant 1115684864 - 322: 11(int) Constant 98 - 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 321 20 32 322 16 62 19 - 326: TypeImage 8(float) 2D sampled format:Unknown - 329: 11(int) Constant 99 - 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 328 16 32 329 16 35 330 331 17 - 332: TypePointer UniformConstant 326 - 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 327 16 16 -334(textureHeight): 332(ptr) Variable UniformConstant - 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 336 327 32 329 16 35 336 334(textureHeight) 212 - 339: TypeSampler - 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 341 36 32 329 16 35 342 331 17 - 343: TypePointer UniformConstant 339 - 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 340 16 16 -345(samplerHeight): 343(ptr) Variable UniformConstant - 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 347 340 32 329 16 35 347 345(samplerHeight) 212 - 349: TypeSampledImage 326 - 350: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 351 16 32 329 16 35 352 331 17 - 357: 213(int) Constant 4 - 365: TypePointer Function 213(int) - 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 215 22 16 - 370: 11(int) Constant 102 - 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 369 215 32 370 16 62 19 - 387: 11(int) Constant 103 - 388: 213(int) Constant 3 - 390: TypePointer Uniform 18(fvec4) - 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 - 395: 8(float) Constant 1090519040 - 400: 52(bool) ConstantFalse - 403: 11(int) Constant 105 - 413: 11(int) Constant 108 - 419: TypePointer Function 95(ConstantsHSOutput) - 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 103 22 16 - 424: 11(int) Constant 113 - 422: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 423 103 32 424 16 111 19 - 427: 91 ConstantComposite 231 231 231 231 - 428: 93 ConstantComposite 231 231 - 429:95(ConstantsHSOutput) ConstantComposite 427 428 - 430: 213(int) Constant 2 - 434: 11(int) Constant 115 - 446: 11(int) Constant 117 - 449: 11(int) Constant 118 - 452: 11(int) Constant 119 - 455: 11(int) Constant 120 - 458: 11(int) Constant 121 - 461: 11(int) Constant 122 - 466: 11(int) Constant 126 - 475: 11(int) Constant 128 - 485: 11(int) Constant 129 - 495: 11(int) Constant 130 - 505: 11(int) Constant 131 - 514: 11(int) Constant 132 - 522: 11(int) Constant 133 - 532: 11(int) Constant 139 - 535: 11(int) Constant 140 - 538: 11(int) Constant 141 - 541: 11(int) Constant 142 - 544: 11(int) Constant 143 - 547: 11(int) Constant 144 - 552: 11(int) Constant 148 - 558: TypePointer Function 119(HSOutput) - 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 126 22 16 + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 70 49 32 63 16 62 19 46 + 72: TypeVector 8(float) 3 + 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 74(VSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) + 76: 11(int) Constant 44 + 77: 11(int) Constant 13 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 76 77 16 16 17 + 80: 11(int) Constant 45 + 81: 11(int) Constant 35 + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 80 81 16 16 17 + 84: 11(int) Constant 46 + 85: 11(int) Constant 31 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 84 85 16 16 17 + 88: 11(int) Constant 112 + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 87 36 32 88 16 35 87 16 17 75 78 82 + 89: TypeArray 74(VSOutput) 19 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 86 19 + 91: TypePointer Function 89 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 22 16 + 93: TypeArray 8(float) 19 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 19 + 95: TypeArray 8(float) 46 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 10 46 +97(ConstantsHSOutput): TypeStruct 93 95 + 100: 11(int) Constant 58 + 101: 11(int) Constant 25 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 99 94 32 100 101 16 16 17 + 104: 11(int) Constant 59 + 102: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 103 96 32 104 101 16 16 17 + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 106 36 32 88 16 35 106 16 17 98 102 + 107: TypeFunction 97(ConstantsHSOutput) 91(ptr) + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 105 90 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 112 108 32 88 16 35 112 17 88 + 114: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 115 90 32 88 16 113 19 36 + 119: TypePointer Function 11(int) + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 22 16 + 121(HSOutput): TypeStruct 18(fvec4) 72(fvec3) 48(fvec2) + 123: 11(int) Constant 51 + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 65 20 32 123 14 16 16 17 + 125: 11(int) Constant 52 + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 79 73 32 125 81 16 16 17 + 127: 11(int) Constant 53 + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 83 49 32 127 85 16 16 17 + 130: 11(int) Constant 158 + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 129 36 32 130 16 35 129 16 17 122 124 126 + 131: TypeFunction 121(HSOutput) 91(ptr) 119(ptr) + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 128 90 13 + 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 137 132 32 130 16 35 137 17 130 + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 115 90 32 130 16 138 19 36 + 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 144 13 32 130 16 138 19 46 + 150: 11(int) Constant 67 + 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 149 20 32 150 16 31 19 + 153: 8(float) Constant 1056964608 + 158: TypePointer Function 8(float) + 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 22 16 + 163: 11(int) Constant 69 + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 162 10 32 163 16 31 19 + 169: 8(float) Constant 1073741824 + 174: 11(int) Constant 72 + 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 173 20 32 174 16 31 19 + 178: TypeMatrix 18(fvec4) 4 + 180: 52(bool) ConstantTrue + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 20 19 180 + 181: TypeArray 18(fvec4) 15 + 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 20 15 + 183(UBO): TypeStruct 178 178 18(fvec4) 181 8(float) 8(float) 48(fvec2) 8(float) + 186: 11(int) Constant 29 + 187: 11(int) Constant 20 + 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 179 32 186 187 16 16 17 + 188: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 179 32 186 187 16 16 17 + 191: 11(int) Constant 30 + 192: 11(int) Constant 17 + 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 190 20 32 191 192 16 16 17 + 195: 11(int) Constant 22 + 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 182 32 85 195 16 16 17 + 198: 11(int) Constant 27 + 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 197 10 32 81 198 16 16 17 + 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 197 10 32 81 198 16 16 17 + 202: 11(int) Constant 34 + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 201 49 32 202 187 16 16 17 + 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 197 10 32 81 198 16 16 17 + 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 205 36 32 174 16 35 205 16 17 184 188 189 193 196 199 200 203 + 206(ubo): TypeStruct 183(UBO) + 209: 11(int) Constant 37 + 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 208 204 32 209 209 16 16 17 + 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 208 36 32 174 16 35 208 16 17 207 + 211: TypePointer Uniform 206(ubo) + 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 210 46 16 + 213: 211(ptr) Variable Uniform + 215: 11(int) Constant 8 + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 210 32 174 16 35 2 213 215 + 216: TypeInt 32 1 + 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 217 14 19 16 + 219: 216(int) Constant 0 + 220: 216(int) Constant 1 + 221: TypePointer Uniform 178 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 179 46 16 + 229: 11(int) Constant 75 + 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 228 20 32 229 16 31 19 + 234: 8(float) Constant 0 + 235: 72(fvec3) ConstantComposite 234 234 234 + 247: 11(int) Constant 76 + 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 246 20 32 247 16 31 19 + 262: 11(int) Constant 79 + 269: 11(int) Constant 80 + 274: 216(int) Constant 6 + 275: TypePointer Uniform 48(fvec2) + 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 46 16 + 279: 11(int) Constant 83 + 290: 11(int) Constant 84 + 301: 11(int) Constant 89 + 304: 216(int) Constant 7 + 305: TypePointer Uniform 8(float) + 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 46 16 + 310: 216(int) Constant 5 + 314: 8(float) Constant 1065353216 + 315: 8(float) Constant 1115684864 + 324: 11(int) Constant 98 + 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 323 20 32 324 16 62 19 + 328: TypeImage 8(float) 2D sampled format:Unknown + 331: 11(int) Constant 99 + 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 330 16 32 331 16 35 332 333 17 + 334: TypePointer UniformConstant 328 + 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 329 16 16 +336(textureHeight): 334(ptr) Variable UniformConstant + 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 338 329 32 331 16 35 338 336(textureHeight) 215 + 341: TypeSampler + 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 343 36 32 331 16 35 344 333 17 + 345: TypePointer UniformConstant 341 + 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 342 16 16 +347(samplerHeight): 345(ptr) Variable UniformConstant + 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 349 342 32 331 16 35 349 347(samplerHeight) 215 + 351: TypeSampledImage 328 + 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 353 16 32 331 16 35 354 333 17 + 359: 216(int) Constant 4 + 367: TypePointer Function 216(int) + 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 218 22 16 + 372: 11(int) Constant 102 + 370: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 371 218 32 372 16 62 19 + 389: 11(int) Constant 103 + 390: 216(int) Constant 3 + 392: TypePointer Uniform 18(fvec4) + 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 + 397: 8(float) Constant 1090519040 + 402: 52(bool) ConstantFalse + 405: 11(int) Constant 105 + 415: 11(int) Constant 108 + 420: TypePointer Function 97(ConstantsHSOutput) + 421: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 105 22 16 + 425: 11(int) Constant 113 + 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 424 105 32 425 16 113 19 + 428: 93 ConstantComposite 234 234 234 234 + 429: 95 ConstantComposite 234 234 + 430:97(ConstantsHSOutput) ConstantComposite 428 429 + 431: 216(int) Constant 2 + 435: 11(int) Constant 115 + 447: 11(int) Constant 117 + 450: 11(int) Constant 118 + 453: 11(int) Constant 119 + 456: 11(int) Constant 120 + 459: 11(int) Constant 121 + 462: 11(int) Constant 122 + 467: 11(int) Constant 126 + 476: 11(int) Constant 128 + 486: 11(int) Constant 129 + 496: 11(int) Constant 130 + 506: 11(int) Constant 131 + 515: 11(int) Constant 132 + 523: 11(int) Constant 133 + 533: 11(int) Constant 139 + 536: 11(int) Constant 140 + 539: 11(int) Constant 141 + 542: 11(int) Constant 142 + 545: 11(int) Constant 143 + 548: 11(int) Constant 144 + 553: 11(int) Constant 148 + 558: TypePointer Function 121(HSOutput) + 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 22 16 562: 11(int) Constant 159 - 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 423 126 32 562 16 135 19 - 565: 18(fvec4) ConstantComposite 231 231 231 231 - 566: 48(fvec2) ConstantComposite 231 231 - 567:119(HSOutput) ConstantComposite 565 232 566 + 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 424 128 32 562 16 138 19 + 565: 18(fvec4) ConstantComposite 234 234 234 234 + 566: 48(fvec2) ConstantComposite 234 234 + 567:121(HSOutput) ConstantComposite 565 235 566 570: 11(int) Constant 160 576: 11(int) Constant 161 - 577: TypePointer Function 71(fvec3) - 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 22 16 + 577: TypePointer Function 72(fvec3) + 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 22 16 584: 11(int) Constant 162 590: 11(int) Constant 163 595: TypeArray 18(fvec4) 19 596: TypePointer Input 595 597(patch.Pos): 596(ptr) Variable Input 598: TypePointer Input 18(fvec4) - 602: TypeArray 71(fvec3) 19 + 602: TypeArray 72(fvec3) 19 603: TypePointer Input 602 604(patch.Normal): 603(ptr) Variable Input - 605: TypePointer Input 71(fvec3) + 605: TypePointer Input 72(fvec3) 609: TypeArray 48(fvec2) 19 610: TypePointer Input 609 611(patch.UV): 610(ptr) Variable Input @@ -421,128 +421,128 @@ WARNING: 0:158: '' : attribute does not apply to entry point 658: TypePointer Output 18(fvec4) 660: TypePointer Output 602 661(@entryPointOutput.Normal): 660(ptr) Variable Output - 665: TypePointer Output 71(fvec3) + 665: TypePointer Output 72(fvec3) 667: TypePointer Output 609 668(@entryPointOutput.UV): 667(ptr) Variable Output 672: TypePointer Output 48(fvec2) - 682: TypePointer Output 91 + 682: TypePointer Output 93 683(@patchConstantOutput.TessLevelOuter): 682(ptr) Variable Output 686: TypePointer Output 8(float) - 697: TypePointer Output 93 + 697: TypePointer Output 95 698(@patchConstantOutput.TessLevelInner): 697(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 594(patch): 89(ptr) Variable Function -643(InvocationID): 117(ptr) Variable Function + 594(patch): 91(ptr) Variable Function +643(InvocationID): 119(ptr) Variable Function 647(flattenTemp): 558(ptr) Variable Function - 648(param): 89(ptr) Variable Function - 650(param): 117(ptr) Variable Function -678(@patchConstantResult): 419(ptr) Variable Function - 679(param): 89(ptr) Variable Function - 599: 598(ptr) AccessChain 597(patch.Pos) 216 + 648(param): 91(ptr) Variable Function + 650(param): 119(ptr) Variable Function +678(@patchConstantResult): 420(ptr) Variable Function + 679(param): 91(ptr) Variable Function + 599: 598(ptr) AccessChain 597(patch.Pos) 219 600: 18(fvec4) Load 599 - 601: 21(ptr) AccessChain 594(patch) 216 216 + 601: 21(ptr) AccessChain 594(patch) 219 219 Store 601 600 - 606: 605(ptr) AccessChain 604(patch.Normal) 216 - 607: 71(fvec3) Load 606 - 608: 577(ptr) AccessChain 594(patch) 216 217 + 606: 605(ptr) AccessChain 604(patch.Normal) 219 + 607: 72(fvec3) Load 606 + 608: 577(ptr) AccessChain 594(patch) 219 220 Store 608 607 - 613: 612(ptr) AccessChain 611(patch.UV) 216 + 613: 612(ptr) AccessChain 611(patch.UV) 219 614: 48(fvec2) Load 613 - 615: 50(ptr) AccessChain 594(patch) 216 430 + 615: 50(ptr) AccessChain 594(patch) 219 431 Store 615 614 - 616: 598(ptr) AccessChain 597(patch.Pos) 217 + 616: 598(ptr) AccessChain 597(patch.Pos) 220 617: 18(fvec4) Load 616 - 618: 21(ptr) AccessChain 594(patch) 217 216 + 618: 21(ptr) AccessChain 594(patch) 220 219 Store 618 617 - 619: 605(ptr) AccessChain 604(patch.Normal) 217 - 620: 71(fvec3) Load 619 - 621: 577(ptr) AccessChain 594(patch) 217 217 + 619: 605(ptr) AccessChain 604(patch.Normal) 220 + 620: 72(fvec3) Load 619 + 621: 577(ptr) AccessChain 594(patch) 220 220 Store 621 620 - 622: 612(ptr) AccessChain 611(patch.UV) 217 + 622: 612(ptr) AccessChain 611(patch.UV) 220 623: 48(fvec2) Load 622 - 624: 50(ptr) AccessChain 594(patch) 217 430 + 624: 50(ptr) AccessChain 594(patch) 220 431 Store 624 623 - 625: 598(ptr) AccessChain 597(patch.Pos) 430 + 625: 598(ptr) AccessChain 597(patch.Pos) 431 626: 18(fvec4) Load 625 - 627: 21(ptr) AccessChain 594(patch) 430 216 + 627: 21(ptr) AccessChain 594(patch) 431 219 Store 627 626 - 628: 605(ptr) AccessChain 604(patch.Normal) 430 - 629: 71(fvec3) Load 628 - 630: 577(ptr) AccessChain 594(patch) 430 217 + 628: 605(ptr) AccessChain 604(patch.Normal) 431 + 629: 72(fvec3) Load 628 + 630: 577(ptr) AccessChain 594(patch) 431 220 Store 630 629 - 631: 612(ptr) AccessChain 611(patch.UV) 430 + 631: 612(ptr) AccessChain 611(patch.UV) 431 632: 48(fvec2) Load 631 - 633: 50(ptr) AccessChain 594(patch) 430 430 + 633: 50(ptr) AccessChain 594(patch) 431 431 Store 633 632 - 634: 598(ptr) AccessChain 597(patch.Pos) 388 + 634: 598(ptr) AccessChain 597(patch.Pos) 390 635: 18(fvec4) Load 634 - 636: 21(ptr) AccessChain 594(patch) 388 216 + 636: 21(ptr) AccessChain 594(patch) 390 219 Store 636 635 - 637: 605(ptr) AccessChain 604(patch.Normal) 388 - 638: 71(fvec3) Load 637 - 639: 577(ptr) AccessChain 594(patch) 388 217 + 637: 605(ptr) AccessChain 604(patch.Normal) 390 + 638: 72(fvec3) Load 637 + 639: 577(ptr) AccessChain 594(patch) 390 220 Store 639 638 - 640: 612(ptr) AccessChain 611(patch.UV) 388 + 640: 612(ptr) AccessChain 611(patch.UV) 390 641: 48(fvec2) Load 640 - 642: 50(ptr) AccessChain 594(patch) 388 430 + 642: 50(ptr) AccessChain 594(patch) 390 431 Store 642 641 646: 11(int) Load 645(InvocationID) Store 643(InvocationID) 646 - 649: 87 Load 594(patch) + 649: 89 Load 594(patch) Store 648(param) 649 651: 11(int) Load 643(InvocationID) Store 650(param) 651 - 652:119(HSOutput) FunctionCall 132(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 648(param) 650(param) + 652:121(HSOutput) FunctionCall 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 648(param) 650(param) Store 647(flattenTemp) 652 655: 11(int) Load 645(InvocationID) - 656: 21(ptr) AccessChain 647(flattenTemp) 216 + 656: 21(ptr) AccessChain 647(flattenTemp) 219 657: 18(fvec4) Load 656 659: 658(ptr) AccessChain 654(@entryPointOutput.Pos) 655 Store 659 657 662: 11(int) Load 645(InvocationID) - 663: 577(ptr) AccessChain 647(flattenTemp) 217 - 664: 71(fvec3) Load 663 + 663: 577(ptr) AccessChain 647(flattenTemp) 220 + 664: 72(fvec3) Load 663 666: 665(ptr) AccessChain 661(@entryPointOutput.Normal) 662 Store 666 664 669: 11(int) Load 645(InvocationID) - 670: 50(ptr) AccessChain 647(flattenTemp) 430 + 670: 50(ptr) AccessChain 647(flattenTemp) 431 671: 48(fvec2) Load 670 673: 672(ptr) AccessChain 668(@entryPointOutput.UV) 669 Store 673 671 ControlBarrier 46 19 16 674: 11(int) Load 645(InvocationID) - 675: 52(bool) IEqual 674 216 + 675: 52(bool) IEqual 674 219 SelectionMerge 677 None BranchConditional 675 676 677 676: Label - 680: 87 Load 594(patch) + 680: 89 Load 594(patch) Store 679(param) 680 - 681:95(ConstantsHSOutput) FunctionCall 108(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 679(param) + 681:97(ConstantsHSOutput) FunctionCall 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 679(param) Store 678(@patchConstantResult) 681 - 684: 155(ptr) AccessChain 678(@patchConstantResult) 216 216 + 684: 158(ptr) AccessChain 678(@patchConstantResult) 219 219 685: 8(float) Load 684 - 687: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 216 + 687: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 219 Store 687 685 - 688: 155(ptr) AccessChain 678(@patchConstantResult) 216 217 + 688: 158(ptr) AccessChain 678(@patchConstantResult) 219 220 689: 8(float) Load 688 - 690: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 217 + 690: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 220 Store 690 689 - 691: 155(ptr) AccessChain 678(@patchConstantResult) 216 430 + 691: 158(ptr) AccessChain 678(@patchConstantResult) 219 431 692: 8(float) Load 691 - 693: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 430 + 693: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 431 Store 693 692 - 694: 155(ptr) AccessChain 678(@patchConstantResult) 216 388 + 694: 158(ptr) AccessChain 678(@patchConstantResult) 219 390 695: 8(float) Load 694 - 696: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 388 + 696: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 390 Store 696 695 - 699: 155(ptr) AccessChain 678(@patchConstantResult) 217 216 + 699: 158(ptr) AccessChain 678(@patchConstantResult) 220 219 700: 8(float) Load 699 - 701: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 216 + 701: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 219 Store 701 700 - 702: 155(ptr) AccessChain 678(@patchConstantResult) 217 217 + 702: 158(ptr) AccessChain 678(@patchConstantResult) 220 220 703: 8(float) Load 702 - 704: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 217 + 704: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 220 Store 704 703 Branch 677 677: Label @@ -552,372 +552,372 @@ WARNING: 0:158: '' : attribute does not apply to entry point 26(p0): 21(ptr) FunctionParameter 27(p1): 21(ptr) FunctionParameter 29: Label - 144(midPoint): 21(ptr) Variable Function - 157(radius): 155(ptr) Variable Function - 168(v0): 21(ptr) Variable Function - 223(clip0): 21(ptr) Variable Function - 241(clip1): 21(ptr) Variable Function + 147(midPoint): 21(ptr) Variable Function + 160(radius): 158(ptr) Variable Function + 171(v0): 21(ptr) Variable Function + 226(clip0): 21(ptr) Variable Function + 244(clip1): 21(ptr) Variable Function 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 31 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 34 34 16 16 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 38 26(p0) 41 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 44 27(p1) 41 - 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(screenSpaceTessFactor(vf4;vf4;) - 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 147 147 16 16 - 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(midPoint) 41 - 151: 18(fvec4) Load 26(p0) - 152: 18(fvec4) Load 27(p1) - 153: 18(fvec4) FAdd 151 152 - 154: 18(fvec4) VectorTimesScalar 153 150 - Store 144(midPoint) 154 - 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 160 160 16 16 - 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 158 157(radius) 41 - 163: 18(fvec4) Load 26(p0) - 164: 18(fvec4) Load 27(p1) - 165: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 163 164 - 167: 8(float) FDiv 165 166 - Store 157(radius) 167 - 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 171 171 16 16 - 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 169 168(v0) 41 - 174: 18(fvec4) Load 144(midPoint) - 220: 218(ptr) AccessChain 210 216 217 - 221: 175 Load 220 - 222: 18(fvec4) VectorTimesMatrix 174 221 - Store 168(v0) 222 - 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 226 226 16 16 - 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 224 223(clip0) 41 - 229: 18(fvec4) Load 168(v0) - 230: 8(float) Load 157(radius) - 233: 8(float) CompositeExtract 232 0 - 234: 8(float) CompositeExtract 232 1 - 235: 8(float) CompositeExtract 232 2 - 236: 18(fvec4) CompositeConstruct 230 233 234 235 - 237: 18(fvec4) FSub 229 236 - 238: 218(ptr) AccessChain 210 216 216 - 239: 175 Load 238 - 240: 18(fvec4) VectorTimesMatrix 237 239 - Store 223(clip0) 240 - 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 244 244 16 16 - 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 242 241(clip1) 41 - 247: 18(fvec4) Load 168(v0) - 248: 8(float) Load 157(radius) - 249: 8(float) CompositeExtract 232 0 - 250: 8(float) CompositeExtract 232 1 - 251: 8(float) CompositeExtract 232 2 - 252: 18(fvec4) CompositeConstruct 248 249 250 251 - 253: 18(fvec4) FAdd 247 252 - 254: 218(ptr) AccessChain 210 216 216 - 255: 175 Load 254 - 256: 18(fvec4) VectorTimesMatrix 253 255 - Store 241(clip1) 256 - 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 259 259 16 16 - 257: 155(ptr) AccessChain 223(clip0) 17 - 260: 8(float) Load 257 - 261: 18(fvec4) Load 223(clip0) - 262: 18(fvec4) CompositeConstruct 260 260 260 260 - 263: 18(fvec4) FDiv 261 262 - Store 223(clip0) 263 - 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 266 266 16 16 - 264: 155(ptr) AccessChain 241(clip1) 17 - 267: 8(float) Load 264 - 268: 18(fvec4) Load 241(clip1) - 269: 18(fvec4) CompositeConstruct 267 267 267 267 - 270: 18(fvec4) FDiv 268 269 - Store 241(clip1) 270 - 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 276 276 16 16 - 274: 272(ptr) AccessChain 210 216 271 - 277: 48(fvec2) Load 274 - 278: 18(fvec4) Load 223(clip0) - 279: 48(fvec2) VectorShuffle 278 278 0 1 - 280: 48(fvec2) FMul 279 277 - 281: 155(ptr) AccessChain 223(clip0) 16 - 282: 8(float) CompositeExtract 280 0 - Store 281 282 - 283: 155(ptr) AccessChain 223(clip0) 36 - 284: 8(float) CompositeExtract 280 1 - Store 283 284 - 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 287 287 16 16 - 285: 272(ptr) AccessChain 210 216 271 - 288: 48(fvec2) Load 285 - 289: 18(fvec4) Load 241(clip1) - 290: 48(fvec2) VectorShuffle 289 289 0 1 - 291: 48(fvec2) FMul 290 288 - 292: 155(ptr) AccessChain 241(clip1) 16 - 293: 8(float) CompositeExtract 291 0 - Store 292 293 - 294: 155(ptr) AccessChain 241(clip1) 36 - 295: 8(float) CompositeExtract 291 1 - Store 294 295 - 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 298 298 16 16 - 296: 18(fvec4) Load 223(clip0) - 299: 18(fvec4) Load 241(clip1) - 300: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 296 299 - 304: 302(ptr) AccessChain 210 216 301 - 305: 8(float) Load 304 - 306: 8(float) FDiv 300 305 - 308: 302(ptr) AccessChain 210 216 307 - 309: 8(float) Load 308 - 310: 8(float) FMul 306 309 - 313: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 310 311 312 - ReturnValue 313 + 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 31 28(screenSpaceTessFactor(vf4;vf4;) + 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 150 150 16 16 + 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 148 147(midPoint) 41 + 154: 18(fvec4) Load 26(p0) + 155: 18(fvec4) Load 27(p1) + 156: 18(fvec4) FAdd 154 155 + 157: 18(fvec4) VectorTimesScalar 156 153 + Store 147(midPoint) 157 + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 163 163 16 16 + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 161 160(radius) 41 + 166: 18(fvec4) Load 26(p0) + 167: 18(fvec4) Load 27(p1) + 168: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 166 167 + 170: 8(float) FDiv 168 169 + Store 160(radius) 170 + 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 174 174 16 16 + 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 172 171(v0) 41 + 177: 18(fvec4) Load 147(midPoint) + 223: 221(ptr) AccessChain 213 219 220 + 224: 178 Load 223 + 225: 18(fvec4) VectorTimesMatrix 177 224 + Store 171(v0) 225 + 231: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 229 229 16 16 + 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 227 226(clip0) 41 + 232: 18(fvec4) Load 171(v0) + 233: 8(float) Load 160(radius) + 236: 8(float) CompositeExtract 235 0 + 237: 8(float) CompositeExtract 235 1 + 238: 8(float) CompositeExtract 235 2 + 239: 18(fvec4) CompositeConstruct 233 236 237 238 + 240: 18(fvec4) FSub 232 239 + 241: 221(ptr) AccessChain 213 219 219 + 242: 178 Load 241 + 243: 18(fvec4) VectorTimesMatrix 240 242 + Store 226(clip0) 243 + 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 247 247 16 16 + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 245 244(clip1) 41 + 250: 18(fvec4) Load 171(v0) + 251: 8(float) Load 160(radius) + 252: 8(float) CompositeExtract 235 0 + 253: 8(float) CompositeExtract 235 1 + 254: 8(float) CompositeExtract 235 2 + 255: 18(fvec4) CompositeConstruct 251 252 253 254 + 256: 18(fvec4) FAdd 250 255 + 257: 221(ptr) AccessChain 213 219 219 + 258: 178 Load 257 + 259: 18(fvec4) VectorTimesMatrix 256 258 + Store 244(clip1) 259 + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 262 262 16 16 + 260: 158(ptr) AccessChain 226(clip0) 17 + 263: 8(float) Load 260 + 264: 18(fvec4) Load 226(clip0) + 265: 18(fvec4) CompositeConstruct 263 263 263 263 + 266: 18(fvec4) FDiv 264 265 + Store 226(clip0) 266 + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 269 269 16 16 + 267: 158(ptr) AccessChain 244(clip1) 17 + 270: 8(float) Load 267 + 271: 18(fvec4) Load 244(clip1) + 272: 18(fvec4) CompositeConstruct 270 270 270 270 + 273: 18(fvec4) FDiv 271 272 + Store 244(clip1) 273 + 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 279 279 16 16 + 277: 275(ptr) AccessChain 213 219 274 + 280: 48(fvec2) Load 277 + 281: 18(fvec4) Load 226(clip0) + 282: 48(fvec2) VectorShuffle 281 281 0 1 + 283: 48(fvec2) FMul 282 280 + 284: 158(ptr) AccessChain 226(clip0) 16 + 285: 8(float) CompositeExtract 283 0 + Store 284 285 + 286: 158(ptr) AccessChain 226(clip0) 36 + 287: 8(float) CompositeExtract 283 1 + Store 286 287 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 290 290 16 16 + 288: 275(ptr) AccessChain 213 219 274 + 291: 48(fvec2) Load 288 + 292: 18(fvec4) Load 244(clip1) + 293: 48(fvec2) VectorShuffle 292 292 0 1 + 294: 48(fvec2) FMul 293 291 + 295: 158(ptr) AccessChain 244(clip1) 16 + 296: 8(float) CompositeExtract 294 0 + Store 295 296 + 297: 158(ptr) AccessChain 244(clip1) 36 + 298: 8(float) CompositeExtract 294 1 + Store 297 298 + 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 301 301 16 16 + 299: 18(fvec4) Load 226(clip0) + 302: 18(fvec4) Load 244(clip1) + 303: 8(float) ExtInst 3(GLSL.std.450) 67(Distance) 299 302 + 307: 305(ptr) AccessChain 213 219 304 + 308: 8(float) Load 307 + 309: 8(float) FDiv 303 308 + 311: 305(ptr) AccessChain 213 219 310 + 312: 8(float) Load 311 + 313: 8(float) FMul 309 312 + 316: 8(float) ExtInst 3(GLSL.std.450) 43(FClamp) 313 314 315 + ReturnValue 316 FunctionEnd 59(frustumCheck(vf4;vf2;): 52(bool) Function None 55 57(Pos): 21(ptr) FunctionParameter 58(inUV): 50(ptr) FunctionParameter 60: Label - 319(pos): 21(ptr) Variable Function - 367(i): 365(ptr) Variable Function + 321(pos): 21(ptr) Variable Function + 369(i): 367(ptr) Variable Function 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 63 63 16 16 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 57(Pos) 41 - 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 68 58(inUV) 41 - 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 63 63 16 16 - 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) - 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 322 322 16 16 - 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 320 319(pos) 41 - 325: 18(fvec4) Load 57(Pos) - Store 319(pos) 325 - 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 329 329 16 16 - 337: 326 Load 334(textureHeight) - 348: 339 Load 345(samplerHeight) - 353: 349 SampledImage 337 348 - 354: 48(fvec2) Load 58(inUV) - 355: 18(fvec4) ImageSampleExplicitLod 353 354 Lod 231 - 356: 8(float) CompositeExtract 355 0 - 358: 302(ptr) AccessChain 210 216 357 - 359: 8(float) Load 358 - 360: 8(float) FMul 356 359 - 361: 155(ptr) AccessChain 319(pos) 36 - 362: 8(float) Load 361 - 363: 8(float) FSub 362 360 - 364: 155(ptr) AccessChain 319(pos) 36 - Store 364 363 - 372: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 - 371: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 368 367(i) 41 - Store 367(i) 216 - Branch 373 - 373: Label - 377: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 - LoopMerge 375 376 None - Branch 379 - 379: Label - 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 - 380: 213(int) Load 367(i) - 383: 52(bool) SLessThan 380 271 - BranchConditional 383 374 375 - 374: Label - 385: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 386: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 387 387 16 16 - 384: 18(fvec4) Load 319(pos) - 389: 213(int) Load 367(i) - 392: 390(ptr) AccessChain 210 216 388 389 - 393: 18(fvec4) Load 392 - 394: 8(float) Dot 384 393 - 396: 8(float) FAdd 394 395 - 397: 52(bool) FOrdLessThan 396 231 - SelectionMerge 399 None - BranchConditional 397 398 399 - 398: Label - 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 402: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 403 403 16 16 - ReturnValue 400 - 399: Label - 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - Branch 376 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 58(inUV) 41 + 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) + 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 324 324 16 16 + 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 322 321(pos) 41 + 327: 18(fvec4) Load 57(Pos) + Store 321(pos) 327 + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 331 331 16 16 + 339: 328 Load 336(textureHeight) + 350: 341 Load 347(samplerHeight) + 355: 351 SampledImage 339 350 + 356: 48(fvec2) Load 58(inUV) + 357: 18(fvec4) ImageSampleExplicitLod 355 356 Lod 234 + 358: 8(float) CompositeExtract 357 0 + 360: 305(ptr) AccessChain 213 219 359 + 361: 8(float) Load 360 + 362: 8(float) FMul 358 361 + 363: 158(ptr) AccessChain 321(pos) 36 + 364: 8(float) Load 363 + 365: 8(float) FSub 364 362 + 366: 158(ptr) AccessChain 321(pos) 36 + Store 366 365 + 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 + 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 370 369(i) 41 + Store 369(i) 219 + Branch 375 + 375: Label + 379: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 + LoopMerge 377 378 None + Branch 381 + 381: Label + 383: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 + 382: 216(int) Load 369(i) + 385: 52(bool) SLessThan 382 274 + BranchConditional 385 376 377 376: Label + 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 389 389 16 16 + 386: 18(fvec4) Load 321(pos) + 391: 216(int) Load 369(i) + 394: 392(ptr) AccessChain 213 219 390 391 + 395: 18(fvec4) Load 394 + 396: 8(float) Dot 386 395 + 398: 8(float) FAdd 396 397 + 399: 52(bool) FOrdLessThan 398 234 + SelectionMerge 401 None + BranchConditional 399 400 401 + 400: Label + 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 405 405 16 16 + ReturnValue 402 + 401: Label 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 370 370 16 16 - 407: 213(int) Load 367(i) - 410: 213(int) IAdd 407 217 - Store 367(i) 410 - Branch 373 - 375: Label - 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 413 413 16 16 - ReturnValue 177 + Branch 378 + 378: Label + 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 + 409: 216(int) Load 369(i) + 412: 216(int) IAdd 409 220 + Store 369(i) 412 + Branch 375 + 377: Label + 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 415 415 16 16 + ReturnValue 180 FunctionEnd -108(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):95(ConstantsHSOutput) Function None 105 - 107(patch): 89(ptr) FunctionParameter - 109: Label - 421(output): 419(ptr) Variable Function - 431(param): 21(ptr) Variable Function - 436(param): 50(ptr) Variable Function - 471(param): 21(ptr) Variable Function - 477(param): 21(ptr) Variable Function - 482(param): 21(ptr) Variable Function - 487(param): 21(ptr) Variable Function - 492(param): 21(ptr) Variable Function - 497(param): 21(ptr) Variable Function - 502(param): 21(ptr) Variable Function - 507(param): 21(ptr) Variable Function - 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 - 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 113 107(patch) 41 - 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 112 112 16 16 - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 111 108(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) - 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 424 424 16 16 - 425: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 422 421(output) 41 - Store 421(output) 429 - 433: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 434 434 16 16 - 432: 21(ptr) AccessChain 107(patch) 216 216 - 435: 18(fvec4) Load 432 - Store 431(param) 435 - 437: 50(ptr) AccessChain 107(patch) 216 430 - 438: 48(fvec2) Load 437 - Store 436(param) 438 - 439: 52(bool) FunctionCall 59(frustumCheck(vf4;vf2;) 431(param) 436(param) - 440: 52(bool) LogicalNot 439 - SelectionMerge 442 None - BranchConditional 440 441 462 - 441: Label - 444: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 - 445: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 446 446 16 16 - 443: 155(ptr) AccessChain 421(output) 217 216 - Store 443 231 - 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 449 449 16 16 - 447: 155(ptr) AccessChain 421(output) 217 217 - Store 447 231 - 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 452 452 16 16 - 450: 155(ptr) AccessChain 421(output) 216 216 - Store 450 231 - 454: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 455 455 16 16 - 453: 155(ptr) AccessChain 421(output) 216 217 - Store 453 231 - 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 458 458 16 16 - 456: 155(ptr) AccessChain 421(output) 216 430 - Store 456 231 - 460: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 461 461 16 16 - 459: 155(ptr) AccessChain 421(output) 216 388 - Store 459 231 - Branch 442 - 462: Label - 464: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 - 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 466 466 16 16 - 463: 302(ptr) AccessChain 210 216 307 - 467: 8(float) Load 463 - 468: 52(bool) FOrdGreaterThan 467 231 - SelectionMerge 470 None - BranchConditional 468 469 528 - 469: Label - 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 - 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 475 475 16 16 - 472: 21(ptr) AccessChain 107(patch) 388 216 - 476: 18(fvec4) Load 472 - Store 471(param) 476 - 478: 21(ptr) AccessChain 107(patch) 216 216 - 479: 18(fvec4) Load 478 - Store 477(param) 479 - 480: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 471(param) 477(param) - 481: 155(ptr) AccessChain 421(output) 216 216 - Store 481 480 - 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 485 485 16 16 - 483: 21(ptr) AccessChain 107(patch) 216 216 - 486: 18(fvec4) Load 483 - Store 482(param) 486 - 488: 21(ptr) AccessChain 107(patch) 217 216 - 489: 18(fvec4) Load 488 - Store 487(param) 489 - 490: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 482(param) 487(param) - 491: 155(ptr) AccessChain 421(output) 216 217 - Store 491 490 - 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 495 495 16 16 - 493: 21(ptr) AccessChain 107(patch) 217 216 - 496: 18(fvec4) Load 493 - Store 492(param) 496 - 498: 21(ptr) AccessChain 107(patch) 430 216 - 499: 18(fvec4) Load 498 - Store 497(param) 499 - 500: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 492(param) 497(param) - 501: 155(ptr) AccessChain 421(output) 216 430 - Store 501 500 - 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 505 505 16 16 - 503: 21(ptr) AccessChain 107(patch) 430 216 - 506: 18(fvec4) Load 503 - Store 502(param) 506 - 508: 21(ptr) AccessChain 107(patch) 388 216 - 509: 18(fvec4) Load 508 - Store 507(param) 509 - 510: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 502(param) 507(param) - 511: 155(ptr) AccessChain 421(output) 216 388 - Store 511 510 - 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 514 514 16 16 - 512: 155(ptr) AccessChain 421(output) 216 216 - 515: 8(float) Load 512 - 516: 155(ptr) AccessChain 421(output) 216 388 - 517: 8(float) Load 516 - 518: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 515 517 150 - 519: 155(ptr) AccessChain 421(output) 217 216 - Store 519 518 - 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 522 522 16 16 - 520: 155(ptr) AccessChain 421(output) 216 430 - 523: 8(float) Load 520 - 524: 155(ptr) AccessChain 421(output) 216 217 - 525: 8(float) Load 524 - 526: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 523 525 150 - 527: 155(ptr) AccessChain 421(output) 217 217 - Store 527 526 - Branch 470 - 528: Label - 530: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 - 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 532 532 16 16 - 529: 155(ptr) AccessChain 421(output) 217 216 - Store 529 311 - 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 535 535 16 16 - 533: 155(ptr) AccessChain 421(output) 217 217 - Store 533 311 - 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 538 538 16 16 - 536: 155(ptr) AccessChain 421(output) 216 216 - Store 536 311 - 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 541 541 16 16 - 539: 155(ptr) AccessChain 421(output) 216 217 - Store 539 311 - 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 544 544 16 16 - 542: 155(ptr) AccessChain 421(output) 216 430 - Store 542 311 - 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 547 547 16 16 - 545: 155(ptr) AccessChain 421(output) 216 388 - Store 545 311 - Branch 470 - 470: Label - 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 - Branch 442 - 442: Label - 550: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 111 - 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 552 552 16 16 - 549:95(ConstantsHSOutput) Load 421(output) - ReturnValue 549 +110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):97(ConstantsHSOutput) Function None 107 + 109(patch): 91(ptr) FunctionParameter + 111: Label + 422(output): 420(ptr) Variable Function + 432(param): 21(ptr) Variable Function + 437(param): 50(ptr) Variable Function + 472(param): 21(ptr) Variable Function + 478(param): 21(ptr) Variable Function + 483(param): 21(ptr) Variable Function + 488(param): 21(ptr) Variable Function + 493(param): 21(ptr) Variable Function + 498(param): 21(ptr) Variable Function + 503(param): 21(ptr) Variable Function + 508(param): 21(ptr) Variable Function + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 88 88 16 16 + 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 114 109(patch) 41 + 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 113 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) + 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 425 425 16 16 + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 423 422(output) 41 + Store 422(output) 430 + 434: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 435 435 16 16 + 433: 21(ptr) AccessChain 109(patch) 219 219 + 436: 18(fvec4) Load 433 + Store 432(param) 436 + 438: 50(ptr) AccessChain 109(patch) 219 431 + 439: 48(fvec2) Load 438 + Store 437(param) 439 + 440: 52(bool) FunctionCall 59(frustumCheck(vf4;vf2;) 432(param) 437(param) + 441: 52(bool) LogicalNot 440 + SelectionMerge 443 None + BranchConditional 441 442 463 + 442: Label + 445: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 447 447 16 16 + 444: 158(ptr) AccessChain 422(output) 220 219 + Store 444 234 + 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 450 450 16 16 + 448: 158(ptr) AccessChain 422(output) 220 220 + Store 448 234 + 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 453 453 16 16 + 451: 158(ptr) AccessChain 422(output) 219 219 + Store 451 234 + 455: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 456 456 16 16 + 454: 158(ptr) AccessChain 422(output) 219 220 + Store 454 234 + 458: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 459 459 16 16 + 457: 158(ptr) AccessChain 422(output) 219 431 + Store 457 234 + 461: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 462 462 16 16 + 460: 158(ptr) AccessChain 422(output) 219 390 + Store 460 234 + Branch 443 + 463: Label + 465: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 467 467 16 16 + 464: 305(ptr) AccessChain 213 219 310 + 468: 8(float) Load 464 + 469: 52(bool) FOrdGreaterThan 468 234 + SelectionMerge 471 None + BranchConditional 469 470 529 + 470: Label + 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + 475: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 476 476 16 16 + 473: 21(ptr) AccessChain 109(patch) 390 219 + 477: 18(fvec4) Load 473 + Store 472(param) 477 + 479: 21(ptr) AccessChain 109(patch) 219 219 + 480: 18(fvec4) Load 479 + Store 478(param) 480 + 481: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 472(param) 478(param) + 482: 158(ptr) AccessChain 422(output) 219 219 + Store 482 481 + 485: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 486 486 16 16 + 484: 21(ptr) AccessChain 109(patch) 219 219 + 487: 18(fvec4) Load 484 + Store 483(param) 487 + 489: 21(ptr) AccessChain 109(patch) 220 219 + 490: 18(fvec4) Load 489 + Store 488(param) 490 + 491: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 483(param) 488(param) + 492: 158(ptr) AccessChain 422(output) 219 220 + Store 492 491 + 495: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 496 496 16 16 + 494: 21(ptr) AccessChain 109(patch) 220 219 + 497: 18(fvec4) Load 494 + Store 493(param) 497 + 499: 21(ptr) AccessChain 109(patch) 431 219 + 500: 18(fvec4) Load 499 + Store 498(param) 500 + 501: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 493(param) 498(param) + 502: 158(ptr) AccessChain 422(output) 219 431 + Store 502 501 + 505: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 506 506 16 16 + 504: 21(ptr) AccessChain 109(patch) 431 219 + 507: 18(fvec4) Load 504 + Store 503(param) 507 + 509: 21(ptr) AccessChain 109(patch) 390 219 + 510: 18(fvec4) Load 509 + Store 508(param) 510 + 511: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 503(param) 508(param) + 512: 158(ptr) AccessChain 422(output) 219 390 + Store 512 511 + 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 515 515 16 16 + 513: 158(ptr) AccessChain 422(output) 219 219 + 516: 8(float) Load 513 + 517: 158(ptr) AccessChain 422(output) 219 390 + 518: 8(float) Load 517 + 519: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 516 518 153 + 520: 158(ptr) AccessChain 422(output) 220 219 + Store 520 519 + 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 523 523 16 16 + 521: 158(ptr) AccessChain 422(output) 219 431 + 524: 8(float) Load 521 + 525: 158(ptr) AccessChain 422(output) 219 220 + 526: 8(float) Load 525 + 527: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 524 526 153 + 528: 158(ptr) AccessChain 422(output) 220 220 + Store 528 527 + Branch 471 + 529: Label + 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + 532: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 533 533 16 16 + 530: 158(ptr) AccessChain 422(output) 220 219 + Store 530 314 + 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 536 536 16 16 + 534: 158(ptr) AccessChain 422(output) 220 220 + Store 534 314 + 538: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 539 539 16 16 + 537: 158(ptr) AccessChain 422(output) 219 219 + Store 537 314 + 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 542 542 16 16 + 540: 158(ptr) AccessChain 422(output) 219 220 + Store 540 314 + 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 545 545 16 16 + 543: 158(ptr) AccessChain 422(output) 219 431 + Store 543 314 + 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 548 548 16 16 + 546: 158(ptr) AccessChain 422(output) 219 390 + Store 546 314 + Branch 471 + 471: Label + 549: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + Branch 443 + 443: Label + 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 553 553 16 16 + 550:97(ConstantsHSOutput) Load 422(output) + ReturnValue 550 FunctionEnd -132(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):119(HSOutput) Function None 128 - 130(patch): 89(ptr) FunctionParameter -131(InvocationID): 117(ptr) FunctionParameter - 133: Label +135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):121(HSOutput) Function None 131 + 133(patch): 91(ptr) FunctionParameter +134(InvocationID): 119(ptr) FunctionParameter + 136: Label 560(output): 558(ptr) Variable Function - 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 135 - 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 137 130(patch) 41 - 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 140 131(InvocationID) 41 - 557: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 136 136 16 16 - 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 135 132(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) + 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 138 + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 130 130 16 16 + 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 133(patch) 41 + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 143 134(InvocationID) 41 + 557: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 138 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 562 562 16 16 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 561 560(output) 41 Store 560(output) 567 569: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 570 570 16 16 - 568: 11(int) Load 131(InvocationID) - 571: 21(ptr) AccessChain 130(patch) 568 216 + 568: 11(int) Load 134(InvocationID) + 571: 21(ptr) AccessChain 133(patch) 568 219 572: 18(fvec4) Load 571 - 573: 21(ptr) AccessChain 560(output) 216 + 573: 21(ptr) AccessChain 560(output) 219 Store 573 572 575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 576 576 16 16 - 574: 11(int) Load 131(InvocationID) - 579: 577(ptr) AccessChain 130(patch) 574 217 - 580: 71(fvec3) Load 579 - 581: 577(ptr) AccessChain 560(output) 217 + 574: 11(int) Load 134(InvocationID) + 579: 577(ptr) AccessChain 133(patch) 574 220 + 580: 72(fvec3) Load 579 + 581: 577(ptr) AccessChain 560(output) 220 Store 581 580 583: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 584 584 16 16 - 582: 11(int) Load 131(InvocationID) - 585: 50(ptr) AccessChain 130(patch) 582 430 + 582: 11(int) Load 134(InvocationID) + 585: 50(ptr) AccessChain 133(patch) 582 431 586: 48(fvec2) Load 585 - 587: 50(ptr) AccessChain 560(output) 430 + 587: 50(ptr) AccessChain 560(output) 431 Store 587 586 589: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 590 590 16 16 - 588:119(HSOutput) Load 560(output) + 588:121(HSOutput) Load 560(output) ReturnValue 588 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index 53704c1f62..e2b8ffd3d2 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -25,13 +25,13 @@ spv.debuginfo.hlsl.tese " 32: String "TessLevelInner" 35: String "ConstantsHSOutput" - 52: String "Pos" - 55: String "Normal" - 59: String "UV" - 63: String "HSOutput" - 71: String "WorldPos" - 81: String "DSOutput" - 89: String "@main" + 53: String "Pos" + 56: String "Normal" + 60: String "UV" + 64: String "HSOutput" + 72: String "WorldPos" + 82: String "DSOutput" + 90: String "@main" 93: String "input" 99: String "TessCoord" 102: String "patch" @@ -64,22 +64,22 @@ spv.debuginfo.hlsl.tese Name 24 "ConstantsHSOutput" MemberName 24(ConstantsHSOutput) 0 "TessLevelOuter" MemberName 24(ConstantsHSOutput) 1 "TessLevelInner" - Name 50 "HSOutput" - MemberName 50(HSOutput) 0 "Pos" - MemberName 50(HSOutput) 1 "Normal" - MemberName 50(HSOutput) 2 "UV" - Name 66 "DSOutput" - MemberName 66(DSOutput) 0 "Pos" - MemberName 66(DSOutput) 1 "Normal" - MemberName 66(DSOutput) 2 "UV" - MemberName 66(DSOutput) 3 "ViewVec" - MemberName 66(DSOutput) 4 "LightVec" - MemberName 66(DSOutput) 5 "EyePos" - MemberName 66(DSOutput) 6 "WorldPos" - Name 87 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" - Name 84 "input" - Name 85 "TessCoord" - Name 86 "patch" + Name 51 "HSOutput" + MemberName 51(HSOutput) 0 "Pos" + MemberName 51(HSOutput) 1 "Normal" + MemberName 51(HSOutput) 2 "UV" + Name 67 "DSOutput" + MemberName 67(DSOutput) 0 "Pos" + MemberName 67(DSOutput) 1 "Normal" + MemberName 67(DSOutput) 2 "UV" + MemberName 67(DSOutput) 3 "ViewVec" + MemberName 67(DSOutput) 4 "LightVec" + MemberName 67(DSOutput) 5 "EyePos" + MemberName 67(DSOutput) 6 "WorldPos" + Name 88 "@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];" + Name 85 "input" + Name 86 "TessCoord" + Name 87 "patch" Name 107 "output" Name 118 "uv1" Name 138 "uv2" @@ -182,139 +182,139 @@ spv.debuginfo.hlsl.tese 33: 11(int) Constant 52 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 32 23 27 33 30 16 16 17 36: 11(int) Constant 1 - 38: 11(int) Constant 5 - 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 27 38 - 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 16 16 37 35 16 17 25 31 - 39: TypePointer Function 24(ConstantsHSOutput) - 40: 11(int) Constant 7 - 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 34 40 16 - 42: TypeVector 8(float) 2 - 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 - 44: TypePointer Function 42(fvec2) - 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 43 40 16 - 46: TypeVector 8(float) 4 - 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 - 48: TypeVector 8(float) 3 - 49: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 - 50(HSOutput): TypeStruct 46(fvec4) 48(fvec3) 42(fvec2) - 53: 11(int) Constant 44 - 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 53 14 16 16 17 - 56: 11(int) Constant 45 - 57: 11(int) Constant 35 - 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 55 49 27 56 57 16 16 17 - 60: 11(int) Constant 46 - 61: 11(int) Constant 31 - 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 60 61 16 16 17 - 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 63 36 27 16 16 37 63 16 17 51 54 58 - 64: TypeArray 50(HSOutput) 18 - 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 62 18 - 66(DSOutput): TypeStruct 46(fvec4) 48(fvec3) 42(fvec2) 48(fvec3) 48(fvec3) 48(fvec3) 48(fvec3) - 68: 11(int) Constant 57 - 69: 11(int) Constant 13 - 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 52 47 27 68 69 16 16 17 - 72: 11(int) Constant 63 - 73: 11(int) Constant 37 - 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 75: 11(int) Constant 59 - 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 59 43 27 75 61 16 16 17 - 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 71 49 27 72 73 16 16 17 - 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 81 36 27 16 16 37 81 16 17 67 70 74 76 77 78 79 - 82: TypeFunction 66(DSOutput) 39(ptr) 44(ptr) 64 - 83: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 80 34 43 62 - 91: 11(int) Constant 68 - 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 89 83 27 91 16 37 89 17 91 - 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 34 27 91 16 90 18 36 + 37: 11(int) Constant 68 + 39: 11(int) Constant 5 + 38: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 36 18 27 39 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 35 36 27 37 16 38 35 16 17 25 31 + 40: TypePointer Function 24(ConstantsHSOutput) + 41: 11(int) Constant 7 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 34 41 16 + 43: TypeVector 8(float) 2 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 21 + 45: TypePointer Function 43(fvec2) + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 44 41 16 + 47: TypeVector 8(float) 4 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 18 + 49: TypeVector 8(float) 3 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 17 + 51(HSOutput): TypeStruct 47(fvec4) 49(fvec3) 43(fvec2) + 54: 11(int) Constant 44 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 53 48 27 54 14 16 16 17 + 57: 11(int) Constant 45 + 58: 11(int) Constant 35 + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 56 50 27 57 58 16 16 17 + 61: 11(int) Constant 46 + 62: 11(int) Constant 31 + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 60 44 27 61 62 16 16 17 + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 64 36 27 37 16 38 64 16 17 52 55 59 + 65: TypeArray 51(HSOutput) 18 + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 63 18 + 67(DSOutput): TypeStruct 47(fvec4) 49(fvec3) 43(fvec2) 49(fvec3) 49(fvec3) 49(fvec3) 49(fvec3) + 69: 11(int) Constant 57 + 70: 11(int) Constant 13 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 53 48 27 69 70 16 16 17 + 73: 11(int) Constant 63 + 74: 11(int) Constant 37 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 + 76: 11(int) Constant 59 + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 60 44 27 76 62 16 16 17 + 77: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 72 50 27 73 74 16 16 17 + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 82 36 27 37 16 38 82 16 17 68 71 75 77 78 79 80 + 83: TypeFunction 67(DSOutput) 40(ptr) 45(ptr) 65 + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 81 34 44 63 + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 90 84 27 37 16 38 90 17 37 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 34 27 37 16 91 18 36 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 43 27 91 16 90 18 21 - 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 62 27 91 16 90 18 17 - 105: TypePointer Function 66(DSOutput) - 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 80 40 16 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 99 44 27 37 16 91 18 21 + 101: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 102 63 27 37 16 91 18 17 + 105: TypePointer Function 67(DSOutput) + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 81 41 16 110: 11(int) Constant 70 - 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 80 27 110 16 90 18 + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 109 81 27 110 16 91 18 113: 8(float) Constant 0 - 114: 46(fvec4) ConstantComposite 113 113 113 113 - 115: 48(fvec3) ConstantComposite 113 113 113 - 116: 42(fvec2) ConstantComposite 113 113 - 117:66(DSOutput) ConstantComposite 114 115 116 115 115 115 115 + 114: 47(fvec4) ConstantComposite 113 113 113 113 + 115: 49(fvec3) ConstantComposite 113 113 113 + 116: 43(fvec2) ConstantComposite 113 113 + 117:67(DSOutput) ConstantComposite 114 115 116 115 115 115 115 121: 11(int) Constant 71 - 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 43 27 121 16 90 18 + 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 120 44 27 121 16 91 18 124: TypeInt 32 1 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 125 14 18 16 127: 124(int) Constant 0 128: 124(int) Constant 2 130: 124(int) Constant 1 132: TypePointer Function 8(float) - 133: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 40 16 + 133: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 41 16 141: 11(int) Constant 72 - 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 43 27 141 16 90 18 + 139: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 140 44 27 141 16 91 18 144: 124(int) Constant 3 153: 11(int) Constant 73 - 160: TypePointer Function 48(fvec3) - 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 49 40 16 + 160: TypePointer Function 49(fvec3) + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 41 16 165: 11(int) Constant 75 - 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 49 27 165 16 90 18 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 50 27 165 16 91 18 177: 11(int) Constant 76 - 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 176 49 27 177 16 90 18 + 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 176 50 27 177 16 91 18 188: 11(int) Constant 77 - 195: TypePointer Function 46(fvec4) - 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 40 16 + 195: TypePointer Function 47(fvec4) + 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 48 41 16 200: 11(int) Constant 80 - 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 199 47 27 200 16 90 18 + 198: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 199 48 27 200 16 91 18 212: 11(int) Constant 81 - 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 47 27 212 16 90 18 + 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 211 48 27 212 16 91 18 224: 11(int) Constant 82 - 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 47 27 224 16 90 18 + 222: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 223 48 27 224 16 91 18 233: TypeImage 8(float) 2D sampled format:Unknown 236: 11(int) Constant 84 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 235 16 27 236 16 37 237 238 17 + 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 235 16 27 236 16 38 237 238 17 239: TypePointer UniformConstant 233 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 234 16 16 241(displacementMapTexture): 239(ptr) Variable UniformConstant 244: 11(int) Constant 8 - 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 243 234 27 236 16 37 243 241(displacementMapTexture) 244 + 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 243 234 27 236 16 38 243 241(displacementMapTexture) 244 247: TypeSampler - 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 249 36 27 236 16 37 250 238 17 + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 249 36 27 236 16 38 250 238 17 251: TypePointer UniformConstant 247 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 248 16 16 253(displacementMapSampler): 251(ptr) Variable UniformConstant - 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 255 248 27 236 16 37 255 253(displacementMapSampler) 244 + 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 255 248 27 236 16 38 255 253(displacementMapSampler) 244 257: TypeSampledImage 233 - 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 259 16 27 236 16 37 260 238 17 - 266: TypeMatrix 46(fvec4) 4 + 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 259 16 27 236 16 38 260 238 17 + 266: TypeMatrix 47(fvec4) 4 268: TypeBool 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 269 14 21 16 271: 268(bool) ConstantTrue - 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 47 18 271 - 272: TypeArray 46(fvec4) 15 - 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 47 15 - 274(UBO): TypeStruct 266 266 46(fvec4) 272 8(float) 8(float) 42(fvec2) 8(float) + 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 48 18 271 + 272: TypeArray 47(fvec4) 15 + 273: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 48 15 + 274(UBO): TypeStruct 266 266 47(fvec4) 272 8(float) 8(float) 43(fvec2) 8(float) 277: 11(int) Constant 29 278: 11(int) Constant 20 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 276 267 27 277 278 16 16 17 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 276 267 27 277 278 16 16 17 282: 11(int) Constant 30 283: 11(int) Constant 17 - 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 281 47 27 282 283 16 16 17 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 281 48 27 282 283 16 16 17 286: 11(int) Constant 22 - 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 285 273 27 61 286 16 16 17 + 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 285 273 27 62 286 16 16 17 289: 11(int) Constant 27 - 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 57 289 16 16 17 - 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 57 289 16 16 17 + 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 58 289 16 16 17 + 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 58 289 16 16 17 293: 11(int) Constant 34 - 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 292 43 27 293 278 16 16 17 - 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 57 289 16 16 17 - 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 296 36 27 236 16 37 296 16 17 275 279 280 284 287 290 291 294 + 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 292 44 27 293 278 16 16 17 + 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 288 10 27 58 289 16 16 17 + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 296 36 27 236 16 38 296 16 17 275 279 280 284 287 290 291 294 297(ubo): TypeStruct 274(UBO) - 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 299 295 27 73 73 16 16 17 - 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 299 36 27 236 16 37 299 16 17 298 + 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 299 295 27 74 74 16 16 17 + 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 299 36 27 236 16 38 299 16 17 298 301: TypePointer Uniform 297(ubo) 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 300 21 16 303: 301(ptr) Variable Uniform - 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 300 27 236 16 37 2 303 244 + 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 300 27 236 16 38 2 303 244 305: 124(int) Constant 4 306: TypePointer Uniform 8(float) 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 @@ -322,8 +322,8 @@ spv.debuginfo.hlsl.tese 318: TypePointer Uniform 266 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 267 21 16 329: 11(int) Constant 89 - 333: TypePointer Uniform 46(fvec4) - 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 47 21 16 + 333: TypePointer Uniform 47(fvec4) + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 48 21 16 337: 11(int) Constant 90 345: 124(int) Constant 6 348: 11(int) Constant 91 @@ -335,25 +335,25 @@ spv.debuginfo.hlsl.tese 369: TypePointer Input 8(float) 382: TypePointer Input 22 383(input.TessLevelInner): 382(ptr) Variable Input - 391: TypePointer Input 48(fvec3) + 391: TypePointer Input 49(fvec3) 392(TessCoord): 391(ptr) Variable Input - 397: TypePointer Function 64 - 399: TypeArray 46(fvec4) 18 + 397: TypePointer Function 65 + 399: TypeArray 47(fvec4) 18 400: TypePointer Input 399 401(patch.Pos): 400(ptr) Variable Input - 402: TypePointer Input 46(fvec4) - 406: TypeArray 48(fvec3) 18 + 402: TypePointer Input 47(fvec4) + 406: TypeArray 49(fvec3) 18 407: TypePointer Input 406 408(patch.Normal): 407(ptr) Variable Input - 412: TypeArray 42(fvec2) 18 + 412: TypeArray 43(fvec2) 18 413: TypePointer Input 412 414(patch.UV): 413(ptr) Variable Input - 415: TypePointer Input 42(fvec2) - 453: TypePointer Output 46(fvec4) + 415: TypePointer Input 43(fvec2) + 453: TypePointer Output 47(fvec4) 454(@entryPointOutput.Pos): 453(ptr) Variable Output - 457: TypePointer Output 48(fvec3) + 457: TypePointer Output 49(fvec3) 458(@entryPointOutput.Normal): 457(ptr) Variable Output - 461: TypePointer Output 42(fvec2) + 461: TypePointer Output 43(fvec2) 462(@entryPointOutput.UV): 461(ptr) Variable Output 465(@entryPointOutput.ViewVec): 457(ptr) Variable Output 468(@entryPointOutput.LightVec): 457(ptr) Variable Output @@ -361,12 +361,12 @@ spv.debuginfo.hlsl.tese 474(@entryPointOutput.WorldPos): 457(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 366(input): 39(ptr) Variable Function - 390(TessCoord): 44(ptr) Variable Function + 366(input): 40(ptr) Variable Function + 390(TessCoord): 45(ptr) Variable Function 398(patch): 397(ptr) Variable Function 446(flattenTemp): 105(ptr) Variable Function - 448(param): 39(ptr) Variable Function - 450(param): 44(ptr) Variable Function + 448(param): 40(ptr) Variable Function + 450(param): 45(ptr) Variable Function 370: 369(ptr) AccessChain 368(input.TessLevelOuter) 127 371: 8(float) Load 370 372: 132(ptr) AccessChain 366(input) 127 127 @@ -391,199 +391,199 @@ spv.debuginfo.hlsl.tese 388: 8(float) Load 387 389: 132(ptr) AccessChain 366(input) 130 130 Store 389 388 - 393: 48(fvec3) Load 392(TessCoord) + 393: 49(fvec3) Load 392(TessCoord) 394: 8(float) CompositeExtract 393 0 395: 8(float) CompositeExtract 393 1 - 396: 42(fvec2) CompositeConstruct 394 395 + 396: 43(fvec2) CompositeConstruct 394 395 Store 390(TessCoord) 396 403: 402(ptr) AccessChain 401(patch.Pos) 127 - 404: 46(fvec4) Load 403 + 404: 47(fvec4) Load 403 405: 195(ptr) AccessChain 398(patch) 127 127 Store 405 404 409: 391(ptr) AccessChain 408(patch.Normal) 127 - 410: 48(fvec3) Load 409 + 410: 49(fvec3) Load 409 411: 160(ptr) AccessChain 398(patch) 127 130 Store 411 410 416: 415(ptr) AccessChain 414(patch.UV) 127 - 417: 42(fvec2) Load 416 - 418: 44(ptr) AccessChain 398(patch) 127 128 + 417: 43(fvec2) Load 416 + 418: 45(ptr) AccessChain 398(patch) 127 128 Store 418 417 419: 402(ptr) AccessChain 401(patch.Pos) 130 - 420: 46(fvec4) Load 419 + 420: 47(fvec4) Load 419 421: 195(ptr) AccessChain 398(patch) 130 127 Store 421 420 422: 391(ptr) AccessChain 408(patch.Normal) 130 - 423: 48(fvec3) Load 422 + 423: 49(fvec3) Load 422 424: 160(ptr) AccessChain 398(patch) 130 130 Store 424 423 425: 415(ptr) AccessChain 414(patch.UV) 130 - 426: 42(fvec2) Load 425 - 427: 44(ptr) AccessChain 398(patch) 130 128 + 426: 43(fvec2) Load 425 + 427: 45(ptr) AccessChain 398(patch) 130 128 Store 427 426 428: 402(ptr) AccessChain 401(patch.Pos) 128 - 429: 46(fvec4) Load 428 + 429: 47(fvec4) Load 428 430: 195(ptr) AccessChain 398(patch) 128 127 Store 430 429 431: 391(ptr) AccessChain 408(patch.Normal) 128 - 432: 48(fvec3) Load 431 + 432: 49(fvec3) Load 431 433: 160(ptr) AccessChain 398(patch) 128 130 Store 433 432 434: 415(ptr) AccessChain 414(patch.UV) 128 - 435: 42(fvec2) Load 434 - 436: 44(ptr) AccessChain 398(patch) 128 128 + 435: 43(fvec2) Load 434 + 436: 45(ptr) AccessChain 398(patch) 128 128 Store 436 435 437: 402(ptr) AccessChain 401(patch.Pos) 144 - 438: 46(fvec4) Load 437 + 438: 47(fvec4) Load 437 439: 195(ptr) AccessChain 398(patch) 144 127 Store 439 438 440: 391(ptr) AccessChain 408(patch.Normal) 144 - 441: 48(fvec3) Load 440 + 441: 49(fvec3) Load 440 442: 160(ptr) AccessChain 398(patch) 144 130 Store 442 441 443: 415(ptr) AccessChain 414(patch.UV) 144 - 444: 42(fvec2) Load 443 - 445: 44(ptr) AccessChain 398(patch) 144 128 + 444: 43(fvec2) Load 443 + 445: 45(ptr) AccessChain 398(patch) 144 128 Store 445 444 - 447: 64 Load 398(patch) + 447: 65 Load 398(patch) 449:24(ConstantsHSOutput) Load 366(input) Store 448(param) 449 - 451: 42(fvec2) Load 390(TessCoord) + 451: 43(fvec2) Load 390(TessCoord) Store 450(param) 451 - 452:66(DSOutput) FunctionCall 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 448(param) 450(param) 447 + 452:67(DSOutput) FunctionCall 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 448(param) 450(param) 447 Store 446(flattenTemp) 452 455: 195(ptr) AccessChain 446(flattenTemp) 127 - 456: 46(fvec4) Load 455 + 456: 47(fvec4) Load 455 Store 454(@entryPointOutput.Pos) 456 459: 160(ptr) AccessChain 446(flattenTemp) 130 - 460: 48(fvec3) Load 459 + 460: 49(fvec3) Load 459 Store 458(@entryPointOutput.Normal) 460 - 463: 44(ptr) AccessChain 446(flattenTemp) 128 - 464: 42(fvec2) Load 463 + 463: 45(ptr) AccessChain 446(flattenTemp) 128 + 464: 43(fvec2) Load 463 Store 462(@entryPointOutput.UV) 464 466: 160(ptr) AccessChain 446(flattenTemp) 144 - 467: 48(fvec3) Load 466 + 467: 49(fvec3) Load 466 Store 465(@entryPointOutput.ViewVec) 467 469: 160(ptr) AccessChain 446(flattenTemp) 305 - 470: 48(fvec3) Load 469 + 470: 49(fvec3) Load 469 Store 468(@entryPointOutput.LightVec) 470 472: 160(ptr) AccessChain 446(flattenTemp) 351 - 473: 48(fvec3) Load 472 + 473: 49(fvec3) Load 472 Store 471(@entryPointOutput.EyePos) 473 475: 160(ptr) AccessChain 446(flattenTemp) 345 - 476: 48(fvec3) Load 475 + 476: 49(fvec3) Load 475 Store 474(@entryPointOutput.WorldPos) 476 Return FunctionEnd -87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):66(DSOutput) Function None 82 - 84(input): 39(ptr) FunctionParameter - 85(TessCoord): 44(ptr) FunctionParameter - 86(patch): 64 FunctionParameter - 88: Label +88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):67(DSOutput) Function None 83 + 85(input): 40(ptr) FunctionParameter + 86(TessCoord): 45(ptr) FunctionParameter + 87(patch): 65 FunctionParameter + 89: Label 107(output): 105(ptr) Variable Function - 118(uv1): 44(ptr) Variable Function - 138(uv2): 44(ptr) Variable Function + 118(uv1): 45(ptr) Variable Function + 138(uv2): 45(ptr) Variable Function 162(n1): 160(ptr) Variable Function 174(n2): 160(ptr) Variable Function 197(pos1): 195(ptr) Variable Function 209(pos2): 195(ptr) Variable Function 221(pos): 195(ptr) Variable Function - 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 90 - 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 91 91 16 16 - 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 84(input) 95 - 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 85(TessCoord) 95 - 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 86(patch) 95 - 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 90 87(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 91 + 97: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 37 37 16 16 + 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 85(input) 95 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 98 86(TessCoord) 95 + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 101 87(patch) 95 + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 91 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 110 110 16 16 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 108 107(output) 95 Store 107(output) 117 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 121 121 16 16 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 119 118(uv1) 95 - 129: 42(fvec2) CompositeExtract 86(patch) 0 2 - 131: 42(fvec2) CompositeExtract 86(patch) 1 2 - 134: 132(ptr) AccessChain 85(TessCoord) 16 + 129: 43(fvec2) CompositeExtract 87(patch) 0 2 + 131: 43(fvec2) CompositeExtract 87(patch) 1 2 + 134: 132(ptr) AccessChain 86(TessCoord) 16 135: 8(float) Load 134 - 136: 42(fvec2) CompositeConstruct 135 135 - 137: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 129 131 136 + 136: 43(fvec2) CompositeConstruct 135 135 + 137: 43(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 129 131 136 Store 118(uv1) 137 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 141 141 16 16 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 139 138(uv2) 95 - 145: 42(fvec2) CompositeExtract 86(patch) 3 2 - 146: 42(fvec2) CompositeExtract 86(patch) 2 2 - 147: 132(ptr) AccessChain 85(TessCoord) 16 + 145: 43(fvec2) CompositeExtract 87(patch) 3 2 + 146: 43(fvec2) CompositeExtract 87(patch) 2 2 + 147: 132(ptr) AccessChain 86(TessCoord) 16 148: 8(float) Load 147 - 149: 42(fvec2) CompositeConstruct 148 148 - 150: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 145 146 149 + 149: 43(fvec2) CompositeConstruct 148 148 + 150: 43(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 145 146 149 Store 138(uv2) 150 152: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 153 153 16 16 - 151: 42(fvec2) Load 118(uv1) - 154: 42(fvec2) Load 138(uv2) - 155: 132(ptr) AccessChain 85(TessCoord) 36 + 151: 43(fvec2) Load 118(uv1) + 154: 43(fvec2) Load 138(uv2) + 155: 132(ptr) AccessChain 86(TessCoord) 36 156: 8(float) Load 155 - 157: 42(fvec2) CompositeConstruct 156 156 - 158: 42(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 151 154 157 - 159: 44(ptr) AccessChain 107(output) 128 + 157: 43(fvec2) CompositeConstruct 156 156 + 158: 43(fvec2) ExtInst 3(GLSL.std.450) 46(FMix) 151 154 157 + 159: 45(ptr) AccessChain 107(output) 128 Store 159 158 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 165 165 16 16 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 163 162(n1) 95 - 168: 48(fvec3) CompositeExtract 86(patch) 0 1 - 169: 48(fvec3) CompositeExtract 86(patch) 1 1 - 170: 132(ptr) AccessChain 85(TessCoord) 16 + 168: 49(fvec3) CompositeExtract 87(patch) 0 1 + 169: 49(fvec3) CompositeExtract 87(patch) 1 1 + 170: 132(ptr) AccessChain 86(TessCoord) 16 171: 8(float) Load 170 - 172: 48(fvec3) CompositeConstruct 171 171 171 - 173: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 168 169 172 + 172: 49(fvec3) CompositeConstruct 171 171 171 + 173: 49(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 168 169 172 Store 162(n1) 173 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 177 177 16 16 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 175 174(n2) 95 - 180: 48(fvec3) CompositeExtract 86(patch) 3 1 - 181: 48(fvec3) CompositeExtract 86(patch) 2 1 - 182: 132(ptr) AccessChain 85(TessCoord) 16 + 180: 49(fvec3) CompositeExtract 87(patch) 3 1 + 181: 49(fvec3) CompositeExtract 87(patch) 2 1 + 182: 132(ptr) AccessChain 86(TessCoord) 16 183: 8(float) Load 182 - 184: 48(fvec3) CompositeConstruct 183 183 183 - 185: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 180 181 184 + 184: 49(fvec3) CompositeConstruct 183 183 183 + 185: 49(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 180 181 184 Store 174(n2) 185 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 188 188 16 16 - 186: 48(fvec3) Load 162(n1) - 189: 48(fvec3) Load 174(n2) - 190: 132(ptr) AccessChain 85(TessCoord) 36 + 186: 49(fvec3) Load 162(n1) + 189: 49(fvec3) Load 174(n2) + 190: 132(ptr) AccessChain 86(TessCoord) 36 191: 8(float) Load 190 - 192: 48(fvec3) CompositeConstruct 191 191 191 - 193: 48(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 186 189 192 + 192: 49(fvec3) CompositeConstruct 191 191 191 + 193: 49(fvec3) ExtInst 3(GLSL.std.450) 46(FMix) 186 189 192 194: 160(ptr) AccessChain 107(output) 130 Store 194 193 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 200 200 16 16 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 198 197(pos1) 95 - 203: 46(fvec4) CompositeExtract 86(patch) 0 0 - 204: 46(fvec4) CompositeExtract 86(patch) 1 0 - 205: 132(ptr) AccessChain 85(TessCoord) 16 + 203: 47(fvec4) CompositeExtract 87(patch) 0 0 + 204: 47(fvec4) CompositeExtract 87(patch) 1 0 + 205: 132(ptr) AccessChain 86(TessCoord) 16 206: 8(float) Load 205 - 207: 46(fvec4) CompositeConstruct 206 206 206 206 - 208: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 203 204 207 + 207: 47(fvec4) CompositeConstruct 206 206 206 206 + 208: 47(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 203 204 207 Store 197(pos1) 208 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 212 212 16 16 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 210 209(pos2) 95 - 215: 46(fvec4) CompositeExtract 86(patch) 3 0 - 216: 46(fvec4) CompositeExtract 86(patch) 2 0 - 217: 132(ptr) AccessChain 85(TessCoord) 16 + 215: 47(fvec4) CompositeExtract 87(patch) 3 0 + 216: 47(fvec4) CompositeExtract 87(patch) 2 0 + 217: 132(ptr) AccessChain 86(TessCoord) 16 218: 8(float) Load 217 - 219: 46(fvec4) CompositeConstruct 218 218 218 218 - 220: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 215 216 219 + 219: 47(fvec4) CompositeConstruct 218 218 218 218 + 220: 47(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 215 216 219 Store 209(pos2) 220 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 224 224 16 16 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 222 221(pos) 95 - 227: 46(fvec4) Load 197(pos1) - 228: 46(fvec4) Load 209(pos2) - 229: 132(ptr) AccessChain 85(TessCoord) 36 + 227: 47(fvec4) Load 197(pos1) + 228: 47(fvec4) Load 209(pos2) + 229: 132(ptr) AccessChain 86(TessCoord) 36 230: 8(float) Load 229 - 231: 46(fvec4) CompositeConstruct 230 230 230 230 - 232: 46(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 227 228 231 + 231: 47(fvec4) CompositeConstruct 230 230 230 230 + 232: 47(fvec4) ExtInst 3(GLSL.std.450) 46(FMix) 227 228 231 Store 221(pos) 232 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 236 236 16 16 245: 233 Load 241(displacementMapTexture) 256: 247 Load 253(displacementMapSampler) 261: 257 SampledImage 245 256 - 262: 44(ptr) AccessChain 107(output) 128 - 263: 42(fvec2) Load 262 - 264: 46(fvec4) ImageSampleExplicitLod 261 263 Lod 113 + 262: 45(ptr) AccessChain 107(output) 128 + 263: 43(fvec2) Load 262 + 264: 47(fvec4) ImageSampleExplicitLod 261 263 Lod 113 265: 8(float) CompositeExtract 264 0 308: 306(ptr) AccessChain 303 127 305 309: 8(float) Load 308 @@ -594,45 +594,45 @@ spv.debuginfo.hlsl.tese 314: 132(ptr) AccessChain 221(pos) 36 Store 314 313 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 317 317 16 16 - 315: 46(fvec4) Load 221(pos) + 315: 47(fvec4) Load 221(pos) 320: 318(ptr) AccessChain 303 127 130 321: 266 Load 320 - 322: 46(fvec4) VectorTimesMatrix 315 321 + 322: 47(fvec4) VectorTimesMatrix 315 321 323: 318(ptr) AccessChain 303 127 127 324: 266 Load 323 - 325: 46(fvec4) VectorTimesMatrix 322 324 + 325: 47(fvec4) VectorTimesMatrix 322 324 326: 195(ptr) AccessChain 107(output) 127 Store 326 325 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 329 329 16 16 - 327: 46(fvec4) Load 221(pos) - 330: 48(fvec3) VectorShuffle 327 327 0 1 2 - 331: 48(fvec3) FNegate 330 + 327: 47(fvec4) Load 221(pos) + 330: 49(fvec3) VectorShuffle 327 327 0 1 2 + 331: 49(fvec3) FNegate 330 332: 160(ptr) AccessChain 107(output) 144 Store 332 331 336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 337 337 16 16 335: 333(ptr) AccessChain 303 127 128 - 338: 46(fvec4) Load 335 - 339: 48(fvec3) VectorShuffle 338 338 0 1 2 + 338: 47(fvec4) Load 335 + 339: 49(fvec3) VectorShuffle 338 338 0 1 2 340: 160(ptr) AccessChain 107(output) 144 - 341: 48(fvec3) Load 340 - 342: 48(fvec3) FAdd 339 341 - 343: 48(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 342 + 341: 49(fvec3) Load 340 + 342: 49(fvec3) FAdd 339 341 + 343: 49(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 342 344: 160(ptr) AccessChain 107(output) 305 Store 344 343 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 348 348 16 16 - 346: 46(fvec4) Load 221(pos) - 349: 48(fvec3) VectorShuffle 346 346 0 1 2 + 346: 47(fvec4) Load 221(pos) + 349: 49(fvec3) VectorShuffle 346 346 0 1 2 350: 160(ptr) AccessChain 107(output) 345 Store 350 349 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 354 354 16 16 - 352: 46(fvec4) Load 221(pos) + 352: 47(fvec4) Load 221(pos) 355: 318(ptr) AccessChain 303 127 130 356: 266 Load 355 - 357: 46(fvec4) VectorTimesMatrix 352 356 - 358: 48(fvec3) VectorShuffle 357 357 0 1 2 + 357: 47(fvec4) VectorTimesMatrix 352 356 + 358: 49(fvec3) VectorShuffle 357 357 0 1 2 359: 160(ptr) AccessChain 107(output) 351 Store 359 358 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 27 362 362 16 16 - 360:66(DSOutput) Load 107(output) + 360:67(DSOutput) Load 107(output) ReturnValue 360 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index d557c09c19..4e9f17fa0f 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -27,10 +27,10 @@ spv.debuginfo.hlsl.vert 43: String "instanceScale" 47: String "instanceTexIndex" 51: String "VSInput" - 62: String "Pos" - 66: String "LightVec" - 73: String "VSOutput" - 79: String "@main" + 63: String "Pos" + 67: String "LightVec" + 74: String "VSOutput" + 80: String "@main" 83: String "input" 93: String "output" 130: String "s" @@ -59,15 +59,15 @@ spv.debuginfo.hlsl.vert MemberName 27(VSInput) 5 "instanceRot" MemberName 27(VSInput) 6 "instanceScale" MemberName 27(VSInput) 7 "instanceTexIndex" - Name 60 "VSOutput" - MemberName 60(VSOutput) 0 "Pos" - MemberName 60(VSOutput) 1 "Normal" - MemberName 60(VSOutput) 2 "Color" - MemberName 60(VSOutput) 3 "UV" - MemberName 60(VSOutput) 4 "ViewVec" - MemberName 60(VSOutput) 5 "LightVec" - Name 77 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" - Name 76 "input" + Name 61 "VSOutput" + MemberName 61(VSOutput) 0 "Pos" + MemberName 61(VSOutput) 1 "Normal" + MemberName 61(VSOutput) 2 "Color" + MemberName 61(VSOutput) 3 "UV" + MemberName 61(VSOutput) 4 "ViewVec" + MemberName 61(VSOutput) 5 "LightVec" + Name 78 "@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;" + Name 77 "input" Name 91 "output" Name 128 "s" Name 143 "UBO" @@ -169,126 +169,126 @@ spv.debuginfo.hlsl.vert 49: 11(int) Constant 42 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 47 25 30 48 49 16 16 17 52: 11(int) Constant 1 - 54: 11(int) Constant 5 - 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 52 26 30 54 - 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 16 16 53 51 16 17 28 34 35 39 40 41 42 46 - 55: TypePointer Function 27(VSInput) - 56: 11(int) Constant 7 - 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 56 16 - 58: TypeVector 8(float) 4 - 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 - 60(VSOutput): TypeStruct 58(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) - 63: 11(int) Constant 53 - 64: 11(int) Constant 13 - 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 62 59 30 63 64 16 16 17 - 67: 11(int) Constant 58 - 65: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 66 19 30 67 48 16 16 17 - 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 73 52 30 16 16 53 73 16 17 61 65 68 69 70 71 - 74: TypeFunction 60(VSOutput) 55(ptr) - 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 72 50 - 81: 11(int) Constant 62 - 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 79 75 30 81 16 53 79 17 81 - 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 50 30 81 16 80 26 52 + 53: 11(int) Constant 62 + 55: 11(int) Constant 5 + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 52 26 30 55 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 51 52 30 53 16 54 51 16 17 28 34 35 39 40 41 42 46 + 56: TypePointer Function 27(VSInput) + 57: 11(int) Constant 7 + 58: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 50 57 16 + 59: TypeVector 8(float) 4 + 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 10 26 + 61(VSOutput): TypeStruct 59(fvec4) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) 18(fvec3) + 64: 11(int) Constant 53 + 65: 11(int) Constant 13 + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 63 60 30 64 65 16 16 17 + 68: 11(int) Constant 58 + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 67 19 30 68 48 16 16 17 + 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 74 52 30 53 16 54 74 16 17 62 66 69 70 71 72 + 75: TypeFunction 61(VSOutput) 56(ptr) + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 17 73 50 + 81: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 80 76 30 53 16 54 80 17 53 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 83 50 30 53 16 81 26 52 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 89: TypePointer Function 60(VSOutput) - 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 56 16 + 89: TypePointer Function 61(VSOutput) + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 57 16 94: 11(int) Constant 63 - 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 72 30 94 16 80 26 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 73 30 94 16 81 26 97: 8(float) Constant 0 - 98: 58(fvec4) ConstantComposite 97 97 97 97 + 98: 59(fvec4) ConstantComposite 97 97 97 97 99: 18(fvec3) ConstantComposite 97 97 97 - 100:60(VSOutput) ConstantComposite 98 99 99 99 99 99 + 100:61(VSOutput) ConstantComposite 98 99 99 99 99 99 101: 23(int) Constant 2 102: 23(int) Constant 3 103: TypePointer Function 18(fvec3) - 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 56 16 + 104: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 19 57 16 107: 11(int) Constant 64 110: TypePointer Function 20(fvec2) - 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 56 16 + 111: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 57 16 114: 11(int) Constant 65 116: 23(int) Constant 7 117: TypePointer Function 23(int) - 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 25 56 16 + 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 25 57 16 126: TypePointer Function 8(float) - 127: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 56 16 + 127: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 57 16 131: 11(int) Constant 68 - 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 130 10 30 131 16 80 26 + 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 130 10 30 131 16 81 26 134: 23(int) Constant 5 - 137: TypeMatrix 58(fvec4) 4 + 137: TypeMatrix 59(fvec4) 4 139: TypeBool 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 140 14 21 16 142: 139(bool) ConstantTrue - 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 59 26 142 - 143(UBO): TypeStruct 137 137 58(fvec4) 8(float) 8(float) + 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 60 26 142 + 143(UBO): TypeStruct 137 137 59(fvec4) 8(float) 8(float) 146: 11(int) Constant 43 147: 11(int) Constant 20 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 138 30 146 147 16 16 17 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 145 138 30 146 147 16 16 17 151: 11(int) Constant 44 152: 11(int) Constant 17 - 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 59 30 151 152 16 16 17 + 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 150 60 30 151 152 16 16 17 155: 11(int) Constant 46 153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 154 10 30 155 152 16 16 17 156: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 154 10 30 155 152 16 16 17 - 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 158 52 30 131 16 53 158 16 17 144 148 149 153 156 + 157: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 158 52 30 131 16 54 158 16 17 144 148 149 153 156 159(ubo): TypeStruct 143(UBO) 162: 11(int) Constant 49 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 161 157 30 162 48 16 16 17 - 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 161 52 30 131 16 53 161 16 17 160 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 161 52 30 131 16 54 161 16 17 160 164: TypePointer Uniform 159(ubo) 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 163 21 16 166: 164(ptr) Variable Uniform 168: 11(int) Constant 8 - 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 163 30 131 16 53 2 166 168 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 163 30 131 16 54 2 166 168 169: 23(int) Constant 0 170: TypePointer Uniform 8(float) 171: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 21 16 179: 11(int) Constant 69 - 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 178 10 30 179 16 80 26 + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 178 10 30 179 16 81 26 188: TypeMatrix 18(fvec3) 3 189: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 19 17 142 190: TypePointer Function 188 - 191: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 189 56 16 + 191: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 189 57 16 195: 11(int) Constant 71 - 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 194 189 30 195 16 80 26 + 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 194 189 30 195 16 81 26 203: 11(int) Constant 72 205: 8(float) Constant 1065353216 213: 11(int) Constant 76 221: 11(int) Constant 77 230: 11(int) Constant 79 - 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 189 30 230 16 80 26 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 229 189 30 230 16 81 26 238: 11(int) Constant 81 247: 11(int) Constant 84 255: 11(int) Constant 85 264: 11(int) Constant 87 - 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 189 30 264 16 80 26 + 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 189 30 264 16 81 26 269: 11(int) Constant 88 274: 11(int) Constant 89 284: 11(int) Constant 91 - 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 189 30 284 16 80 26 + 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 283 189 30 284 16 81 26 294: 11(int) Constant 94 296: 23(int) Constant 4 303: 11(int) Constant 95 309: TypePointer Function 137 - 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 138 56 16 + 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 138 57 16 314: 11(int) Constant 96 - 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 138 30 314 16 80 26 - 321: TypePointer Function 58(fvec4) - 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 56 16 + 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 313 138 30 314 16 81 26 + 321: TypePointer Function 59(fvec4) + 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 57 16 324: 23(int) Constant 1 - 325: 58(fvec4) ConstantComposite 97 205 97 97 + 325: 59(fvec4) ConstantComposite 97 205 97 97 328: 11(int) Constant 97 331: 11(int) Constant 98 - 335: 58(fvec4) ConstantComposite 97 97 97 205 + 335: 59(fvec4) ConstantComposite 97 97 97 205 338: 11(int) Constant 99 342: 11(int) Constant 101 - 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 341 59 30 342 16 80 26 + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 341 60 30 342 16 81 26 356: 11(int) Constant 102 - 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 355 59 30 356 16 80 26 + 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 355 60 30 356 16 81 26 361: 23(int) Constant 6 374: 11(int) Constant 104 377: TypePointer Uniform 137 @@ -296,9 +296,9 @@ spv.debuginfo.hlsl.vert 388: 11(int) Constant 105 407: 11(int) Constant 107 422: 11(int) Constant 108 - 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 421 19 30 422 16 80 26 - 425: TypePointer Uniform 58(fvec4) - 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 59 21 16 + 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 421 19 30 422 16 81 26 + 425: TypePointer Uniform 59(fvec4) + 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 60 21 16 442: 11(int) Constant 109 449: 11(int) Constant 110 455: 11(int) Constant 111 @@ -314,7 +314,7 @@ spv.debuginfo.hlsl.vert 481(input.instanceScale): 480(ptr) Variable Input 484: TypePointer Input 23(int) 485(input.instanceTexIndex): 484(ptr) Variable Input - 492: TypePointer Output 58(fvec4) + 492: TypePointer Output 59(fvec4) 493(@entryPointOutput.Pos): 492(ptr) Variable Output 496: TypePointer Output 18(fvec3) 497(@entryPointOutput.Normal): 496(ptr) Variable Output @@ -324,9 +324,9 @@ spv.debuginfo.hlsl.vert 509(@entryPointOutput.LightVec): 496(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 459(input): 55(ptr) Variable Function + 459(input): 56(ptr) Variable Function 488(flattenTemp): 89(ptr) Variable Function - 489(param): 55(ptr) Variable Function + 489(param): 56(ptr) Variable Function 462: 18(fvec3) Load 461(input.Pos) 463: 103(ptr) AccessChain 459(input) 169 Store 463 462 @@ -353,10 +353,10 @@ spv.debuginfo.hlsl.vert Store 487 486 490: 27(VSInput) Load 459(input) Store 489(param) 490 - 491:60(VSOutput) FunctionCall 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 489(param) + 491:61(VSOutput) FunctionCall 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 489(param) Store 488(flattenTemp) 491 494: 321(ptr) AccessChain 488(flattenTemp) 169 - 495: 58(fvec4) Load 494 + 495: 59(fvec4) Load 494 Store 493(@entryPointOutput.Pos) 495 498: 103(ptr) AccessChain 488(flattenTemp) 324 499: 18(fvec3) Load 498 @@ -375,9 +375,9 @@ spv.debuginfo.hlsl.vert Store 509(@entryPointOutput.LightVec) 511 Return FunctionEnd -77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):60(VSOutput) Function None 74 - 76(input): 55(ptr) FunctionParameter - 78: Label +78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):61(VSOutput) Function None 75 + 77(input): 56(ptr) FunctionParameter + 79: Label 91(output): 89(ptr) Variable Function 128(s): 126(ptr) Variable Function 176(c): 126(ptr) Variable Function @@ -389,22 +389,22 @@ spv.debuginfo.hlsl.vert 339(locPos): 321(ptr) Variable Function 353(pos): 321(ptr) Variable Function 419(lPos): 103(ptr) Variable Function - 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 80 - 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 81 81 16 16 - 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 76(input) 85 - 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 80 77(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 81 + 87: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 53 53 16 16 + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 82 77(input) 85 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 81 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 94 94 16 16 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 91(output) 85 Store 91(output) 100 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 107 107 16 16 - 105: 103(ptr) AccessChain 76(input) 102 + 105: 103(ptr) AccessChain 77(input) 102 108: 18(fvec3) Load 105 109: 103(ptr) AccessChain 91(output) 101 Store 109 108 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 114 114 16 16 - 112: 110(ptr) AccessChain 76(input) 101 + 112: 110(ptr) AccessChain 77(input) 101 115: 20(fvec2) Load 112 - 119: 117(ptr) AccessChain 76(input) 116 + 119: 117(ptr) AccessChain 77(input) 116 120: 23(int) Load 119 121: 8(float) ConvertSToF 120 122: 8(float) CompositeExtract 115 0 @@ -414,7 +414,7 @@ spv.debuginfo.hlsl.vert Store 125 124 133: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 131 131 16 16 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 129 128(s) 85 - 135: 126(ptr) AccessChain 76(input) 134 16 + 135: 126(ptr) AccessChain 77(input) 134 16 136: 8(float) Load 135 172: 170(ptr) AccessChain 166 169 102 173: 8(float) Load 172 @@ -423,7 +423,7 @@ spv.debuginfo.hlsl.vert Store 128(s) 175 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 179 179 16 16 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 177 176(c) 85 - 182: 126(ptr) AccessChain 76(input) 134 16 + 182: 126(ptr) AccessChain 77(input) 134 16 183: 8(float) Load 182 184: 170(ptr) AccessChain 166 169 102 185: 8(float) Load 184 @@ -445,7 +445,7 @@ spv.debuginfo.hlsl.vert 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 195 195 16 16 Store 192(mx) 209 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 213 213 16 16 - 211: 126(ptr) AccessChain 76(input) 134 52 + 211: 126(ptr) AccessChain 77(input) 134 52 214: 8(float) Load 211 215: 170(ptr) AccessChain 166 169 102 216: 8(float) Load 215 @@ -453,7 +453,7 @@ spv.debuginfo.hlsl.vert 218: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 217 Store 128(s) 218 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 221 221 16 16 - 219: 126(ptr) AccessChain 76(input) 134 52 + 219: 126(ptr) AccessChain 77(input) 134 52 222: 8(float) Load 219 223: 170(ptr) AccessChain 166 169 102 224: 8(float) Load 223 @@ -475,7 +475,7 @@ spv.debuginfo.hlsl.vert 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 230 230 16 16 Store 227(my) 243 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 247 247 16 16 - 245: 126(ptr) AccessChain 76(input) 134 21 + 245: 126(ptr) AccessChain 77(input) 134 21 248: 8(float) Load 245 249: 170(ptr) AccessChain 166 169 102 250: 8(float) Load 249 @@ -483,7 +483,7 @@ spv.debuginfo.hlsl.vert 252: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 251 Store 128(s) 252 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 255 255 16 16 - 253: 126(ptr) AccessChain 76(input) 134 21 + 253: 126(ptr) AccessChain 77(input) 134 21 256: 8(float) Load 253 257: 170(ptr) AccessChain 166 169 102 258: 8(float) Load 257 @@ -514,7 +514,7 @@ spv.debuginfo.hlsl.vert 291: 188 MatrixTimesMatrix 289 290 Store 281(rotMat) 291 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 294 294 16 16 - 292: 126(ptr) AccessChain 76(input) 134 52 + 292: 126(ptr) AccessChain 77(input) 134 52 295: 8(float) Load 292 297: 170(ptr) AccessChain 166 169 296 298: 8(float) Load 297 @@ -522,7 +522,7 @@ spv.debuginfo.hlsl.vert 300: 8(float) ExtInst 3(GLSL.std.450) 13(Sin) 299 Store 128(s) 300 302: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 303 303 16 16 - 301: 126(ptr) AccessChain 76(input) 134 52 + 301: 126(ptr) AccessChain 77(input) 134 52 304: 8(float) Load 301 305: 170(ptr) AccessChain 166 169 296 306: 8(float) Load 305 @@ -534,7 +534,7 @@ spv.debuginfo.hlsl.vert 317: 8(float) Load 176(c) 318: 8(float) Load 128(s) 319: 8(float) FNegate 318 - 320: 58(fvec4) CompositeConstruct 317 97 319 97 + 320: 59(fvec4) CompositeConstruct 317 97 319 97 323: 321(ptr) AccessChain 311(gRotMat) 169 Store 323 320 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 328 328 16 16 @@ -543,7 +543,7 @@ spv.debuginfo.hlsl.vert 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 331 331 16 16 329: 8(float) Load 128(s) 332: 8(float) Load 176(c) - 333: 58(fvec4) CompositeConstruct 329 97 332 97 + 333: 59(fvec4) CompositeConstruct 329 97 332 97 334: 321(ptr) AccessChain 311(gRotMat) 101 Store 334 333 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 338 338 16 16 @@ -551,44 +551,44 @@ spv.debuginfo.hlsl.vert Store 336 335 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 342 342 16 16 343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 340 339(locPos) 85 - 345: 103(ptr) AccessChain 76(input) 169 + 345: 103(ptr) AccessChain 77(input) 169 346: 18(fvec3) Load 345 347: 188 Load 281(rotMat) 348: 18(fvec3) VectorTimesMatrix 346 347 349: 8(float) CompositeExtract 348 0 350: 8(float) CompositeExtract 348 1 351: 8(float) CompositeExtract 348 2 - 352: 58(fvec4) CompositeConstruct 349 350 351 205 + 352: 59(fvec4) CompositeConstruct 349 350 351 205 Store 339(locPos) 352 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 356 356 16 16 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 354 353(pos) 85 - 359: 58(fvec4) Load 339(locPos) + 359: 59(fvec4) Load 339(locPos) 360: 18(fvec3) VectorShuffle 359 359 0 1 2 - 362: 126(ptr) AccessChain 76(input) 361 + 362: 126(ptr) AccessChain 77(input) 361 363: 8(float) Load 362 364: 18(fvec3) VectorTimesScalar 360 363 - 365: 103(ptr) AccessChain 76(input) 296 + 365: 103(ptr) AccessChain 77(input) 296 366: 18(fvec3) Load 365 367: 18(fvec3) FAdd 364 366 368: 8(float) CompositeExtract 367 0 369: 8(float) CompositeExtract 367 1 370: 8(float) CompositeExtract 367 2 - 371: 58(fvec4) CompositeConstruct 368 369 370 205 + 371: 59(fvec4) CompositeConstruct 368 369 370 205 Store 353(pos) 371 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 374 374 16 16 - 372: 58(fvec4) Load 353(pos) + 372: 59(fvec4) Load 353(pos) 375: 137 Load 311(gRotMat) - 376: 58(fvec4) VectorTimesMatrix 372 375 + 376: 59(fvec4) VectorTimesMatrix 372 375 379: 377(ptr) AccessChain 166 169 324 380: 137 Load 379 - 381: 58(fvec4) VectorTimesMatrix 376 380 + 381: 59(fvec4) VectorTimesMatrix 376 380 382: 377(ptr) AccessChain 166 169 169 383: 137 Load 382 - 384: 58(fvec4) VectorTimesMatrix 381 383 + 384: 59(fvec4) VectorTimesMatrix 381 383 385: 321(ptr) AccessChain 91(output) 169 Store 385 384 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 388 388 16 16 - 386: 103(ptr) AccessChain 76(input) 324 + 386: 103(ptr) AccessChain 77(input) 324 389: 18(fvec3) Load 386 390: 188 Load 281(rotMat) 391: 18(fvec3) VectorTimesMatrix 389 390 @@ -596,60 +596,60 @@ spv.debuginfo.hlsl.vert 393: 377(ptr) AccessChain 166 169 324 394: 137 Load 393 395: 137 MatrixTimesMatrix 392 394 - 396: 58(fvec4) CompositeExtract 395 0 + 396: 59(fvec4) CompositeExtract 395 0 397: 18(fvec3) VectorShuffle 396 396 0 1 2 - 398: 58(fvec4) CompositeExtract 395 1 + 398: 59(fvec4) CompositeExtract 395 1 399: 18(fvec3) VectorShuffle 398 398 0 1 2 - 400: 58(fvec4) CompositeExtract 395 2 + 400: 59(fvec4) CompositeExtract 395 2 401: 18(fvec3) VectorShuffle 400 400 0 1 2 402: 188 CompositeConstruct 397 399 401 403: 18(fvec3) VectorTimesMatrix 391 402 404: 103(ptr) AccessChain 91(output) 324 Store 404 403 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 407 407 16 16 - 405: 103(ptr) AccessChain 76(input) 169 + 405: 103(ptr) AccessChain 77(input) 169 408: 18(fvec3) Load 405 - 409: 103(ptr) AccessChain 76(input) 296 + 409: 103(ptr) AccessChain 77(input) 296 410: 18(fvec3) Load 409 411: 18(fvec3) FAdd 408 410 412: 8(float) CompositeExtract 411 0 413: 8(float) CompositeExtract 411 1 414: 8(float) CompositeExtract 411 2 - 415: 58(fvec4) CompositeConstruct 412 413 414 205 + 415: 59(fvec4) CompositeConstruct 412 413 414 205 416: 377(ptr) AccessChain 166 169 324 417: 137 Load 416 - 418: 58(fvec4) VectorTimesMatrix 415 417 + 418: 59(fvec4) VectorTimesMatrix 415 417 Store 353(pos) 418 424: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 422 422 16 16 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 420 419(lPos) 85 427: 425(ptr) AccessChain 166 169 101 - 428: 58(fvec4) Load 427 + 428: 59(fvec4) Load 427 429: 18(fvec3) VectorShuffle 428 428 0 1 2 430: 377(ptr) AccessChain 166 169 324 431: 137 Load 430 - 432: 58(fvec4) CompositeExtract 431 0 + 432: 59(fvec4) CompositeExtract 431 0 433: 18(fvec3) VectorShuffle 432 432 0 1 2 - 434: 58(fvec4) CompositeExtract 431 1 + 434: 59(fvec4) CompositeExtract 431 1 435: 18(fvec3) VectorShuffle 434 434 0 1 2 - 436: 58(fvec4) CompositeExtract 431 2 + 436: 59(fvec4) CompositeExtract 431 2 437: 18(fvec3) VectorShuffle 436 436 0 1 2 438: 188 CompositeConstruct 433 435 437 439: 18(fvec3) VectorTimesMatrix 429 438 Store 419(lPos) 439 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 442 442 16 16 440: 18(fvec3) Load 419(lPos) - 443: 58(fvec4) Load 353(pos) + 443: 59(fvec4) Load 353(pos) 444: 18(fvec3) VectorShuffle 443 443 0 1 2 445: 18(fvec3) FSub 440 444 446: 103(ptr) AccessChain 91(output) 134 Store 446 445 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 449 449 16 16 - 447: 58(fvec4) Load 353(pos) + 447: 59(fvec4) Load 353(pos) 450: 18(fvec3) VectorShuffle 447 447 0 1 2 451: 18(fvec3) FNegate 450 452: 103(ptr) AccessChain 91(output) 296 Store 452 451 454: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 30 455 455 16 16 - 453:60(VSOutput) Load 91(output) + 453:61(VSOutput) Load 91(output) ReturnValue 453 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.include.glsl.frag.out b/Test/baseResults/spv.debuginfo.include.glsl.frag.out index 02b893f2cc..a6ca6e1536 100644 --- a/Test/baseResults/spv.debuginfo.include.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.include.glsl.frag.out @@ -1,21 +1,31 @@ spv.debuginfo.include.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 109 +// Id's are bound by 108 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 4: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 15 "main" 81 + EntryPoint Fragment 15 "main" 80 ExecutionMode 15 OriginUpperLeft 2: String "spv.debuginfo.include.glsl.frag" 3: String "spv.debuginfo.include.glsl.h" 9: String "uint" 18: String "float" 31: String "headerFunction" - 34: String "// OpModuleProcessed auto-map-locations + 34: String " +out vec4 headerOut; + +uniform UBO { + vec4 headerUboItem; +}; + +vec4 headerFunction(vec4 a) { + return -a; +}" + 39: String "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 // OpModuleProcessed target-env vulkan1.0 @@ -34,43 +44,33 @@ vec4 mainFileFunction(vec4 v) { void main() { headerOut = headerFunction(mainFileFunction(headerUboItem)); }" - 40: String "a" - 48: String "mainFileFunction" - 51: String "v" - 54: String "main" - 60: String " -out vec4 headerOut; - -uniform UBO { - vec4 headerUboItem; -}; - -vec4 headerFunction(vec4 a) { - return -a; -}" - 83: String "headerOut" - 87: String "headerUboItem" - 90: String "UBO" - 95: String "" - 97: String "int" + 42: String "a" + 50: String "mainFileFunction" + 53: String "v" + 57: String "main" + 82: String "headerOut" + 86: String "headerUboItem" + 89: String "UBO" + 94: String "" + 96: String "int" SourceExtension "GL_GOOGLE_cpp_style_line_directive" SourceExtension "GL_GOOGLE_include_directive" Name 15 "main" Name 29 "headerFunction(vf4;" Name 28 "a" - Name 46 "mainFileFunction(vf4;" - Name 45 "v" - Name 81 "headerOut" - Name 85 "UBO" - MemberName 85(UBO) 0 "headerUboItem" - Name 93 "" - Name 100 "param" - Name 107 "param" - Decorate 81(headerOut) Location 0 - Decorate 85(UBO) Block - MemberDecorate 85(UBO) 0 Offset 0 - Decorate 93 Binding 0 - Decorate 93 DescriptorSet 0 + Name 48 "mainFileFunction(vf4;" + Name 47 "v" + Name 80 "headerOut" + Name 84 "UBO" + MemberName 84(UBO) 0 "headerUboItem" + Name 92 "" + Name 99 "param" + Name 106 "param" + Decorate 80(headerOut) Location 0 + Decorate 84(UBO) Block + MemberDecorate 84(UBO) 0 Offset 0 + Decorate 92 Binding 0 + Decorate 92 DescriptorSet 0 5: TypeVoid 6: TypeFunction 5 8: TypeInt 32 0 @@ -90,77 +90,76 @@ vec4 headerFunction(vec4 a) { 25: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 24 13 26: TypeFunction 20(fvec4) 23(ptr) 27: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 14 22 22 - 33: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 34 + 33: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 3 34 35: 8(int) Constant 8 37: 8(int) Constant 1 - 38: 8(int) Constant 2 - 36: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 21 33 38 + 38: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 39 + 40: 8(int) Constant 2 + 36: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 37 21 38 40 32: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 31 27 33 35 13 36 31 14 35 - 39: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 40 22 33 35 13 32 21 37 - 42: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) - 49: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 48 27 33 12 13 36 48 14 12 - 50: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 51 22 33 12 13 49 21 37 - 56: 8(int) Constant 10 - 55: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 54 7 33 56 13 36 54 14 56 - 59: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 3 60 + 41: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 42 22 33 35 13 32 21 37 + 44: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 51: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 50 27 38 12 13 36 50 14 12 + 52: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 53 22 38 12 13 51 21 37 + 59: 8(int) Constant 10 + 58: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 7 38 59 13 36 57 14 59 63: 8(int) Constant 9 - 79: TypePointer Output 20(fvec4) - 80: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 14 13 - 81(headerOut): 79(ptr) Variable Output - 84: 8(int) Constant 11 - 82: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 22 33 84 13 36 83 81(headerOut) 35 - 85(UBO): TypeStruct 20(fvec4) - 88: 8(int) Constant 5 - 86: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 87 22 33 88 24 13 13 14 - 89: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 90 37 33 84 13 36 90 13 14 86 - 91: TypePointer Uniform 85(UBO) - 92: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 38 13 - 93: 91(ptr) Variable Uniform - 94: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 95 89 33 84 13 36 95 93 35 - 96: TypeInt 32 1 - 98: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 97 11 21 13 - 99: 96(int) Constant 0 - 101: TypePointer Uniform 20(fvec4) - 102: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 38 13 + 78: TypePointer Output 20(fvec4) + 79: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 14 13 + 80(headerOut): 78(ptr) Variable Output + 83: 8(int) Constant 11 + 81: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 82 22 38 83 13 36 82 80(headerOut) 35 + 84(UBO): TypeStruct 20(fvec4) + 87: 8(int) Constant 5 + 85: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 86 22 38 87 24 13 13 14 + 88: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 89 37 38 83 13 36 89 13 14 85 + 90: TypePointer Uniform 84(UBO) + 91: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 40 13 + 92: 90(ptr) Variable Uniform + 93: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 88 38 83 13 36 94 92 35 + 95: TypeInt 32 1 + 97: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 96 11 21 13 + 98: 95(int) Constant 0 + 100: TypePointer Uniform 20(fvec4) + 101: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 40 13 15(main): 5 Function None 6 16: Label - 100(param): 23(ptr) Variable Function - 107(param): 23(ptr) Variable Function - 77: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 78: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 56 56 13 13 - 76: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 15(main) - 104: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 84 84 13 13 - 103: 101(ptr) AccessChain 93 99 - 105: 20(fvec4) Load 103 - Store 100(param) 105 - 106: 20(fvec4) FunctionCall 46(mainFileFunction(vf4;) 100(param) - Store 107(param) 106 - 108: 20(fvec4) FunctionCall 29(headerFunction(vf4;) 107(param) - Store 81(headerOut) 108 + 99(param): 23(ptr) Variable Function + 106(param): 23(ptr) Variable Function + 76: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 77: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 59 59 13 13 + 75: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 15(main) + 103: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 83 83 13 13 + 102: 100(ptr) AccessChain 92 98 + 104: 20(fvec4) Load 102 + Store 99(param) 104 + 105: 20(fvec4) FunctionCall 48(mainFileFunction(vf4;) 99(param) + Store 106(param) 105 + 107: 20(fvec4) FunctionCall 29(headerFunction(vf4;) 106(param) + Store 80(headerOut) 107 Return FunctionEnd 29(headerFunction(vf4;): 20(fvec4) Function None 26 28(a): 23(ptr) FunctionParameter 30: Label - 43: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 - 44: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 13 13 - 41: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 39 28(a) 42 - 58: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 59 35 35 13 13 - 57: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(headerFunction(vf4;) - 62: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 59 63 63 13 13 + 45: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 32 + 46: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 35 35 13 13 + 43: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 41 28(a) 44 + 60: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 32 29(headerFunction(vf4;) + 62: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 63 63 13 13 61: 20(fvec4) Load 28(a) 64: 20(fvec4) FNegate 61 ReturnValue 64 FunctionEnd -46(mainFileFunction(vf4;): 20(fvec4) Function None 26 - 45(v): 23(ptr) FunctionParameter - 47: Label - 53: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 49 - 52: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 50 45(v) 42 - 69: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 12 12 13 13 - 68: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 49 46(mainFileFunction(vf4;) - 71: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 24 24 13 13 - 70: 20(fvec4) Load 45(v) - 72: 20(fvec4) FNegate 70 - ReturnValue 72 +48(mainFileFunction(vf4;): 20(fvec4) Function None 26 + 47(v): 23(ptr) FunctionParameter + 49: Label + 55: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 51 + 56: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 12 12 13 13 + 54: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 47(v) 44 + 68: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 51 48(mainFileFunction(vf4;) + 70: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 24 24 13 13 + 69: 20(fvec4) Load 47(v) + 71: 20(fvec4) FNegate 69 + ReturnValue 71 FunctionEnd diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out index af73d175a7..a5fbf16c88 100644 --- a/Test/baseResults/spv.pp.line.frag.out +++ b/Test/baseResults/spv.pp.line.frag.out @@ -13,7 +13,7 @@ WARNING: spv.pp.line.frag:8: varying deprecated in version 130; may be removed i EntryPoint Fragment 5 "main" 60 72 75 78 ExecutionMode 5 OriginUpperLeft 1: String "spv.pp.line.frag" - 13: String "header.h" + 7: String "header.h" Source GLSL 140 1 "// OpModuleProcessed auto-map-locations // OpModuleProcessed auto-map-bindings // OpModuleProcessed client vulkan100 @@ -61,8 +61,8 @@ void main() " SourceExtension "GL_GOOGLE_cpp_style_line_directive" Name 5 "main" - Name 11 "myAbs(f1;" - Name 10 "x" + Name 12 "myAbs(f1;" + Name 11 "x" Name 27 "blendscale" Name 29 "param" Name 31 "bias" @@ -84,44 +84,44 @@ void main() Decorate 78(blend) Location 0 3: TypeVoid 4: TypeFunction 3 - 7: TypeFloat 32 - 8: TypePointer Function 7(float) - 9: TypeFunction 7(float) 8(ptr) - 15: 7(float) Constant 0 + 8: TypeFloat 32 + 9: TypePointer Function 8(float) + 10: TypeFunction 8(float) 9(ptr) + 15: 8(float) Constant 0 16: TypeBool - 28: 7(float) Constant 1071971828 - 32: 7(float) Constant 1073741824 - 34: TypeVector 7(float) 4 + 28: 8(float) Constant 1071971828 + 32: 8(float) Constant 1073741824 + 34: TypeVector 8(float) 4 35: TypePointer Function 34(fvec4) 37: 34(fvec4) ConstantComposite 15 15 15 15 - 38: TypeImage 7(float) 1D sampled format:Unknown + 38: TypeImage 8(float) 1D sampled format:Unknown 39: TypeSampledImage 38 40: TypePointer UniformConstant 39 41(texSampler1D): 40(ptr) Variable UniformConstant - 53: TypeImage 7(float) 2D sampled format:Unknown + 53: TypeImage 8(float) 2D sampled format:Unknown 54: TypeSampledImage 53 55: TypePointer UniformConstant 54 56(texSampler2D): 55(ptr) Variable UniformConstant - 58: TypeVector 7(float) 2 + 58: TypeVector 8(float) 2 59: TypePointer Input 58(fvec2) 60(coords2D): 59(ptr) Variable Input 71: TypePointer Output 34(fvec4) 72(gl_FragColor): 71(ptr) Variable Output 74: TypePointer Input 34(fvec4) 75(u): 74(ptr) Variable Input - 77: TypePointer Input 7(float) + 77: TypePointer Input 8(float) 78(blend): 77(ptr) Variable Input Line 1 23 11 5(main): 3 Function None 4 6: Label - 27(blendscale): 8(ptr) Variable Function - 29(param): 8(ptr) Variable Function - 31(bias): 8(ptr) Variable Function - 33(coords1D): 8(ptr) Variable Function + 27(blendscale): 9(ptr) Variable Function + 29(param): 9(ptr) Variable Function + 31(bias): 9(ptr) Variable Function + 33(coords1D): 9(ptr) Variable Function 36(color): 35(ptr) Variable Function Line 1 25 0 Store 29(param) 28 - 30: 7(float) FunctionCall 11(myAbs(f1;) 29(param) + 30: 8(float) FunctionCall 12(myAbs(f1;) 29(param) Store 27(blendscale) 30 Line 1 26 0 Store 31(bias) 32 @@ -131,15 +131,15 @@ void main() Store 36(color) 37 Line 1 54 0 42: 39 Load 41(texSampler1D) - 43: 7(float) Load 33(coords1D) + 43: 8(float) Load 33(coords1D) 44: 34(fvec4) ImageSampleImplicitLod 42 43 45: 34(fvec4) Load 36(color) 46: 34(fvec4) FAdd 45 44 Store 36(color) 46 Line 1 55 0 47: 39 Load 41(texSampler1D) - 48: 7(float) Load 33(coords1D) - 49: 7(float) Load 31(bias) + 48: 8(float) Load 33(coords1D) + 49: 8(float) Load 31(bias) 50: 34(fvec4) ImageSampleImplicitLod 47 48 Bias 49 51: 34(fvec4) Load 36(color) 52: 34(fvec4) FAdd 51 50 @@ -154,7 +154,7 @@ void main() Line 1 104 0 65: 54 Load 56(texSampler2D) 66: 58(fvec2) Load 60(coords2D) - 67: 7(float) Load 31(bias) + 67: 8(float) Load 31(bias) 68: 34(fvec4) ImageSampleImplicitLod 65 66 Bias 67 69: 34(fvec4) Load 36(color) 70: 34(fvec4) FAdd 69 68 @@ -162,31 +162,31 @@ void main() Line 1 106 0 73: 34(fvec4) Load 36(color) 76: 34(fvec4) Load 75(u) - 79: 7(float) Load 78(blend) - 80: 7(float) Load 27(blendscale) - 81: 7(float) FMul 79 80 + 79: 8(float) Load 78(blend) + 80: 8(float) Load 27(blendscale) + 81: 8(float) FMul 79 80 82: 34(fvec4) CompositeConstruct 81 81 81 81 83: 34(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 73 76 82 Store 72(gl_FragColor) 83 Return FunctionEnd - Line 13 1 20 - 11(myAbs(f1;): 7(float) Function None 9 - 10(x): 8(ptr) FunctionParameter - 12: Label - Line 13 2 0 - 14: 7(float) Load 10(x) + Line 7 1 20 + 12(myAbs(f1;): 8(float) Function None 10 + 11(x): 9(ptr) FunctionParameter + 13: Label + Line 7 2 0 + 14: 8(float) Load 11(x) 17: 16(bool) FOrdGreaterThan 14 15 SelectionMerge 19 None BranchConditional 17 18 22 18: Label - Line 13 3 0 - 20: 7(float) Load 10(x) + Line 7 3 0 + 20: 8(float) Load 11(x) ReturnValue 20 22: Label - Line 13 6 0 - 23: 7(float) Load 10(x) - 24: 7(float) FNegate 23 + Line 7 6 0 + 23: 8(float) Load 11(x) + 24: 8(float) FNegate 23 ReturnValue 24 19: Label Unreachable From 704107fda3827377f00e57dff0c21da019bff4ae Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Tue, 2 Jul 2024 08:11:11 +0000 Subject: [PATCH 512/594] Fix function call line number for calls spanning multiple lines. --- SPIRV/GlslangToSpv.cpp | 3 + .../spv.debuginfo.multiline.glsl.frag.out | 162 ++++++++++++++++++ Test/spv.debuginfo.multiline.glsl.frag | 25 +++ gtests/Spv.FromFile.cpp | 1 + 4 files changed, 191 insertions(+) create mode 100644 Test/baseResults/spv.debuginfo.multiline.glsl.frag.out create mode 100644 Test/spv.debuginfo.multiline.glsl.frag diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index dc0a4f9fdc..fa7e02a118 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -6444,6 +6444,9 @@ spv::Id TGlslangToSpvTraverser::handleUserFunctionCall(const glslang::TIntermAgg } } + // Reset source location to the function call location after argument evaluation + builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); + // 2. Allocate space for anything needing a copy, and if it's "in" or "inout" // copy the original into that space. // diff --git a/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out b/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out new file mode 100644 index 0000000000..00dda0b4dc --- /dev/null +++ b/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out @@ -0,0 +1,162 @@ +spv.debuginfo.multiline.glsl.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 105 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 14 "main" 73 79 + ExecutionMode 14 OriginUpperLeft + 2: String "spv.debuginfo.multiline.glsl.frag" + 8: String "uint" + 17: String "float" + 29: String "add" + 32: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +#version 460 + +in float inx; +out float outx; + +float add(float x, float y, float z) { + return + x + + + y + + + z + ; +} + +void main() { + outx + = + add( + inx+1, + inx+2, + inx+3 + ) + ; +}" + 38: String "x" + 44: String "y" + 47: String "z" + 49: String "main" + 75: String "outx" + 81: String "inx" + Name 14 "main" + Name 27 "add(f1;f1;f1;" + Name 24 "x" + Name 25 "y" + Name 26 "z" + Name 73 "outx" + Name 79 "inx" + Name 97 "param" + Name 100 "param" + Name 101 "param" + Decorate 73(outx) Location 0 + Decorate 79(inx) Location 0 + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 16: TypeFloat 32 + 18: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 17 10 13 12 + 19: TypePointer Function 16(float) + 20: 7(int) Constant 7 + 21: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 20 12 + 22: TypeFunction 16(float) 19(ptr) 19(ptr) 19(ptr) + 23: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 18 18 18 18 + 31: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 32 + 34: 7(int) Constant 1 + 35: 7(int) Constant 4 + 36: 7(int) Constant 2 + 33: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 34 35 31 36 + 30: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 29 23 31 11 12 33 29 13 11 + 37: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 38 18 31 11 12 30 35 34 + 40: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 31(DebugExpression) + 43: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 44 18 31 11 12 30 35 36 + 46: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 47 18 31 11 12 30 35 13 + 51: 7(int) Constant 16 + 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 49 6 31 51 12 33 49 13 51 + 55: 7(int) Constant 8 + 58: 7(int) Constant 10 + 62: 7(int) Constant 12 + 71: TypePointer Output 16(float) + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 73(outx): 71(ptr) Variable Output + 76: 7(int) Constant 17 + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 75 18 31 76 12 33 75 73(outx) 55 + 77: TypePointer Input 16(float) + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 34 12 + 79(inx): 77(ptr) Variable Input + 82: 7(int) Constant 20 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 81 18 31 82 12 33 81 79(inx) 55 + 85: 16(float) Constant 1065353216 + 89: 7(int) Constant 21 + 90: 16(float) Constant 1073741824 + 94: 7(int) Constant 22 + 95: 16(float) Constant 1077936128 + 99: 7(int) Constant 23 + 104: 7(int) Constant 18 + 14(main): 4 Function None 5 + 15: Label + 97(param): 19(ptr) Variable Function + 100(param): 19(ptr) Variable Function + 101(param): 19(ptr) Variable Function + 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 50 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 51 51 12 12 + 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 50 14(main) + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 82 82 12 12 + 83: 16(float) Load 79(inx) + 86: 16(float) FAdd 83 85 + 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 89 89 12 12 + 87: 16(float) Load 79(inx) + 91: 16(float) FAdd 87 90 + 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 94 94 12 12 + 92: 16(float) Load 79(inx) + 96: 16(float) FAdd 92 95 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 99 99 12 12 + Store 97(param) 86 + Store 100(param) 91 + Store 101(param) 96 + 102: 16(float) FunctionCall 27(add(f1;f1;f1;) 97(param) 100(param) 101(param) + 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 104 104 12 12 + Store 73(outx) 102 + Return + FunctionEnd +27(add(f1;f1;f1;): 16(float) Function None 22 + 24(x): 19(ptr) FunctionParameter + 25(y): 19(ptr) FunctionParameter + 26(z): 19(ptr) FunctionParameter + 28: Label + 41: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 30 + 42: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 11 11 12 12 + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 37 24(x) 40 + 45: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 43 25(y) 40 + 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 26(z) 40 + 52: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 30 27(add(f1;f1;f1;) + 54: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 55 55 12 12 + 53: 16(float) Load 24(x) + 57: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 58 58 12 12 + 56: 16(float) Load 25(y) + 59: 16(float) FAdd 53 56 + 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 62 62 12 12 + 60: 16(float) Load 26(z) + 63: 16(float) FAdd 59 60 + 64: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 20 20 12 12 + ReturnValue 63 + FunctionEnd diff --git a/Test/spv.debuginfo.multiline.glsl.frag b/Test/spv.debuginfo.multiline.glsl.frag new file mode 100644 index 0000000000..8ed0700c30 --- /dev/null +++ b/Test/spv.debuginfo.multiline.glsl.frag @@ -0,0 +1,25 @@ +#version 460 + +in float inx; +out float outx; + +float add(float x, float y, float z) { + return + x + + + y + + + z + ; +} + +void main() { + outx + = + add( + inx+1, + inx+2, + inx+3 + ) + ; +} \ No newline at end of file diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 8bf679d4bc..21f12d0205 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -954,6 +954,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.debuginfo.scalar_types.glsl.frag", "spv.debuginfo.rt_types.glsl.rgen", "spv.debuginfo.include.glsl.frag", + "spv.debuginfo.multiline.glsl.frag", })), FileNameAsCustomTestSuffix ); From 5939e32b87487fa9c72ab336ebfcc5ae26d9ab6d Mon Sep 17 00:00:00 2001 From: Mason Remaley Date: Tue, 2 Jul 2024 19:56:52 -0700 Subject: [PATCH 513/594] Fixes undefined behavior due to unspecified enum backing In C++, enums can only represent "in range" values. If the backing type is not specified, then the result of using bitwise negation on an enum is not gaurenteed to be in range, resulting in UB. This was caught by UBSAN, stack trace is as follows: 0. 0x000000000426e391 in spv::operator& (a=spv::MemoryAccessMaskNone, b=(spv::MemoryAccessVolatileMask | spv::MemoryAccessAlignedMask | spv::MemoryAccessNontemporalMask | spv::MemoryAccessMakePointerVisibleMask | spv::MemoryAccessNonPrivatePointerMask | spv::MemoryAccessAliasScopeINTELMaskMask | spv::MemoryAccessNoAliasINTELMaskMask | unknown: 0xfffcffc0)) at SPIRV/spirv.hpp:2804 1. 0x00000000041e81e0 in (anonymous namespace)::TGlslangToSpvTraverser::accessChainLoad (this=0x7fffffffcbb8, type=...) at SPIRV/GlslangToSpv.cpp:5127 2. 0x00000000041bc059 in (anonymous namespace)::TGlslangToSpvTraverser::visitBinary (this=0x7fffffffcbb8, node=0x5f6a6c8) at SPIRV/GlslangToSpv.cpp:2192 3. 0x0000000003db8660 in glslang::TIntermBinary::traverse (this=0x5f6a6c8, it=0x7fffffffcbb8) at glslang/glslang/MachineIndependent/IntermTraverse.cpp:92 4. 0x0000000003db952e in glslang::TIntermAggregate::traverse (this=0x5f6a7d8, it=0x7fffffffcbb8) at glslang/glslang/MachineIndependent/IntermTraverse.cpp:175 5. 0x00000000042082db in (anonymous namespace)::TGlslangToSpvTraverser::makeGlobalInitializers (this=0x7fffffffcbb8, initializers=...) at SPIRV/GlslangToSpv.cpp:5618 6. 0x00000000041c511f in (anonymous namespace)::TGlslangToSpvTraverser::visitAggregate (this=0x7fffffffcbb8, visit=glslang::EvPreVisit, node=0x5f6a9b8) at SPIRV/GlslangToSpv.cpp:2907 7. 0x0000000003db8fb9 in glslang::TIntermAggregate::traverse (this=0x5f6a9b8, it=0x7fffffffcbb8) at glslang/glslang/MachineIndependent/IntermTraverse.cpp:159 8. 0x00000000041acc04 in glslang::GlslangToSpv (intermediate=..., spirv=..., logger=0x7fffffffdc38, options=0x7fffffffdc2f) at SPIRV/GlslangToSpv.cpp:10398 9. 0x0000000003bfd6f1 in CompileAndLinkShaderUnits (compUnits=...) at StandAlone/StandAlone.cpp:1547 10. 0x0000000003bfe2f8 in CompileAndLinkShaderFiles (Worklist=...) at StandAlone/StandAlone.cpp:1640 11. 0x0000000003bfec2c in singleMain () at StandAlone/StandAlone.cpp:1713 12. 0x0000000003bff4dd in main (argc=5, argv=0x7fffffffe3d8) at StandAlone/StandAlone.cpp:1767 --- SPIRV/spirv.hpp | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/SPIRV/spirv.hpp b/SPIRV/spirv.hpp index afa89a585b..b09d99bee4 100644 --- a/SPIRV/spirv.hpp +++ b/SPIRV/spirv.hpp @@ -385,7 +385,7 @@ enum ImageOperandsShift { ImageOperandsMax = 0x7fffffff, }; -enum ImageOperandsMask { +enum ImageOperandsMask : unsigned { ImageOperandsMaskNone = 0, ImageOperandsBiasMask = 0x00000001, ImageOperandsLodMask = 0x00000002, @@ -420,7 +420,7 @@ enum FPFastMathModeShift { FPFastMathModeMax = 0x7fffffff, }; -enum FPFastMathModeMask { +enum FPFastMathModeMask : unsigned { FPFastMathModeMaskNone = 0, FPFastMathModeNotNaNMask = 0x00000001, FPFastMathModeNotInfMask = 0x00000002, @@ -745,7 +745,7 @@ enum SelectionControlShift { SelectionControlMax = 0x7fffffff, }; -enum SelectionControlMask { +enum SelectionControlMask : unsigned { SelectionControlMaskNone = 0, SelectionControlFlattenMask = 0x00000001, SelectionControlDontFlattenMask = 0x00000002, @@ -774,7 +774,7 @@ enum LoopControlShift { LoopControlMax = 0x7fffffff, }; -enum LoopControlMask { +enum LoopControlMask : unsigned { LoopControlMaskNone = 0, LoopControlUnrollMask = 0x00000001, LoopControlDontUnrollMask = 0x00000002, @@ -806,7 +806,7 @@ enum FunctionControlShift { FunctionControlMax = 0x7fffffff, }; -enum FunctionControlMask { +enum FunctionControlMask : unsigned { FunctionControlMaskNone = 0, FunctionControlInlineMask = 0x00000001, FunctionControlDontInlineMask = 0x00000002, @@ -836,7 +836,7 @@ enum MemorySemanticsShift { MemorySemanticsMax = 0x7fffffff, }; -enum MemorySemanticsMask { +enum MemorySemanticsMask : unsigned { MemorySemanticsMaskNone = 0, MemorySemanticsAcquireMask = 0x00000002, MemorySemanticsReleaseMask = 0x00000004, @@ -872,7 +872,7 @@ enum MemoryAccessShift { MemoryAccessMax = 0x7fffffff, }; -enum MemoryAccessMask { +enum MemoryAccessMask : unsigned { MemoryAccessMaskNone = 0, MemoryAccessVolatileMask = 0x00000001, MemoryAccessAlignedMask = 0x00000002, @@ -922,7 +922,7 @@ enum KernelProfilingInfoShift { KernelProfilingInfoMax = 0x7fffffff, }; -enum KernelProfilingInfoMask { +enum KernelProfilingInfoMask : unsigned { KernelProfilingInfoMaskNone = 0, KernelProfilingInfoCmdExecTimeMask = 0x00000001, }; @@ -1163,7 +1163,7 @@ enum Capability { CapabilityDotProduct = 6019, CapabilityDotProductKHR = 6019, CapabilityRayCullMaskKHR = 6020, - CapabilityCooperativeMatrixKHR = 6022, + CapabilityCooperativeMatrixKHR = 6022, CapabilityReplicatedCompositesEXT = 6024, CapabilityBitInstructions = 6025, CapabilityGroupNonUniformRotateKHR = 6026, @@ -1194,7 +1194,7 @@ enum RayFlagsShift { RayFlagsMax = 0x7fffffff, }; -enum RayFlagsMask { +enum RayFlagsMask : unsigned { RayFlagsMaskNone = 0, RayFlagsOpaqueKHRMask = 0x00000001, RayFlagsNoOpaqueKHRMask = 0x00000002, @@ -1236,7 +1236,7 @@ enum FragmentShadingRateShift { FragmentShadingRateMax = 0x7fffffff, }; -enum FragmentShadingRateMask { +enum FragmentShadingRateMask : unsigned { FragmentShadingRateMaskNone = 0, FragmentShadingRateVertical2PixelsMask = 0x00000001, FragmentShadingRateVertical4PixelsMask = 0x00000002, @@ -1291,7 +1291,7 @@ enum CooperativeMatrixOperandsShift { CooperativeMatrixOperandsMax = 0x7fffffff, }; -enum CooperativeMatrixOperandsMask { +enum CooperativeMatrixOperandsMask : unsigned { CooperativeMatrixOperandsMaskNone = 0, CooperativeMatrixOperandsMatrixASignedComponentsKHRMask = 0x00000001, CooperativeMatrixOperandsMatrixBSignedComponentsKHRMask = 0x00000002, @@ -1693,9 +1693,9 @@ enum Op { OpCooperativeMatrixLoadKHR = 4457, OpCooperativeMatrixStoreKHR = 4458, OpCooperativeMatrixMulAddKHR = 4459, - OpCooperativeMatrixLengthKHR = 4460, - OpConstantCompositeReplicateEXT = 4461, - OpSpecConstantCompositeReplicateEXT = 4462, + OpCooperativeMatrixLengthKHR = 4460, + OpConstantCompositeReplicateEXT = 4461, + OpSpecConstantCompositeReplicateEXT = 4462, OpCompositeConstructReplicateEXT = 4463, OpTypeRayQueryKHR = 4472, OpRayQueryInitializeKHR = 4473, @@ -2426,9 +2426,9 @@ inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) { case OpCooperativeMatrixLoadKHR: *hasResult = true; *hasResultType = true; break; case OpCooperativeMatrixStoreKHR: *hasResult = false; *hasResultType = false; break; case OpCooperativeMatrixMulAddKHR: *hasResult = true; *hasResultType = true; break; - case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break; - case OpConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; - case OpSpecConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; + case OpCooperativeMatrixLengthKHR: *hasResult = true; *hasResultType = true; break; + case OpConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; + case OpSpecConstantCompositeReplicateEXT: *hasResult = true; *hasResultType = true; break; case OpCompositeConstructReplicateEXT: *hasResult = true; *hasResultType = true; break; case OpTypeRayQueryKHR: *hasResult = true; *hasResultType = false; break; case OpRayQueryInitializeKHR: *hasResult = false; *hasResultType = false; break; From f9fbc91d4f2d5c40b7b661c94ed36a293ae19028 Mon Sep 17 00:00:00 2001 From: friendlyanon Date: Tue, 2 Jul 2024 19:55:24 +0200 Subject: [PATCH 514/594] Fix `glslangValidator` installation This caused the glslang[tools] vcpkg feature to not install properly, because the glslangValidator executable didn't exist for tool installation. --- StandAlone/CMakeLists.txt | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index e0fdb487bd..9ecdcd2356 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -90,21 +90,28 @@ endif() # Create a symbolic link to glslang named glslangValidator for backwards compatibility set(legacy_glslang_name "glslangValidator${CMAKE_EXECUTABLE_SUFFIX}") set(link_method create_symlink) -if (WIN32 OR MINGW) -set(link_method copy_if_different) +if(WIN32 OR MINGW) + set(link_method copy_if_different) endif() -add_custom_command(TARGET glslang-standalone - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} - WORKING_DIRECTORY $) + +add_custom_command( + TARGET glslang-standalone POST_BUILD + COMMAND "${CMAKE_COMMAND}" -E "${link_method}" "\$" "${legacy_glslang_name}" + WORKING_DIRECTORY "\$" + VERBATIM +) if(GLSLANG_ENABLE_INSTALL) install(TARGETS glslang-standalone EXPORT glslang-targets) # Create the same symlink at install time - install(CODE "execute_process( \ - COMMAND ${CMAKE_COMMAND} -E ${link_method} $ ${legacy_glslang_name} \ - WORKING_DIRECTORY \$ENV{DESTDIR}${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR})") + install(CODE "\ + message(STATUS \"Installing (${link_method}): \$ -> \$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}\") + execute_process( + COMMAND \"\${CMAKE_COMMAND}\" -E ${link_method} [=[\$]=] [=[${legacy_glslang_name}]=] + WORKING_DIRECTORY \"\$ENV{DESTDIR}\${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_BINDIR}\" + ) + ") if(ENABLE_SPVREMAPPER) install(TARGETS spirv-remap EXPORT glslang-targets) From 4a516f28a17d3128f144affd7952142a90ab22e7 Mon Sep 17 00:00:00 2001 From: David Neto Date: Fri, 5 Jul 2024 16:53:40 -0400 Subject: [PATCH 515/594] kokoro: use Python 3.12 for Linux builds Bug: crbug.com/350048185 --- kokoro/linux-clang-cmake/build-docker.sh | 1 + kokoro/linux-gcc-cmake/build-docker.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/kokoro/linux-clang-cmake/build-docker.sh b/kokoro/linux-clang-cmake/build-docker.sh index 6b1d3e1ae1..01627a56be 100755 --- a/kokoro/linux-clang-cmake/build-docker.sh +++ b/kokoro/linux-clang-cmake/build-docker.sh @@ -42,6 +42,7 @@ set -x # Display commands being run. using cmake-3.17.2 using clang-10.0.0 using ninja-1.10.0 +using python-3.12 echo "Building..." mkdir /build && cd /build diff --git a/kokoro/linux-gcc-cmake/build-docker.sh b/kokoro/linux-gcc-cmake/build-docker.sh index 558695c8a7..65e013e2c6 100755 --- a/kokoro/linux-gcc-cmake/build-docker.sh +++ b/kokoro/linux-gcc-cmake/build-docker.sh @@ -42,6 +42,7 @@ set -x # Display commands being run. using cmake-3.17.2 using gcc-9 using ninja-1.10.0 +using python-3.12 echo "Building..." mkdir /build && cd /build From fae2f0ada8d0a41c7b29815e93ea74501887640e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 06:55:34 +0000 Subject: [PATCH 516/594] Bump actions/upload-artifact from 4.3.3 to 4.3.4 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.3 to 4.3.4. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/65462800fd760344b1a7b4382951275a0abb4808...0b2256b8c012f0828dc542b3febcab082c67f72b) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 1adff61c68..80fff2305a 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@65462800fd760344b1a7b4382951275a0abb4808 # v4.3.3 + uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 with: name: SARIF file path: results.sarif From 5ec1a8d0b524ad34ca137027c639218c95c3666a Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 5 Jul 2024 16:56:22 -0400 Subject: [PATCH 517/594] Update macOS requirement from 11 to 12 in github CD workflow --- .github/workflows/continuous_deployment.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 2e154caaae..0e11118578 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -101,7 +101,7 @@ jobs: strategy: fail-fast: false matrix: - os: [{genus: macos-11, family: osx}] + os: [{genus: macos-12, family: osx}] compiler: [{cc: clang, cxx: clang++}] cmake_build_type: [Debug, Release] steps: From 42d9adf50b4ad7db2a7212318068ec614b36414f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 8 Jul 2024 06:55:29 +0000 Subject: [PATCH 518/594] Bump lukka/get-cmake from 3.29.6 to 3.30.0 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.29.6 to 3.30.0. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59...983956e4a5edce90f0dfcc38c1543077e668402b) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 0e11118578..22ec151dcb 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 537b1a38d1..e6f0512d00 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread'] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -127,7 +127,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -151,7 +151,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' @@ -169,7 +169,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -198,7 +198,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -224,7 +224,7 @@ jobs: - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 with: python-version: '3.7' - - uses: lukka/get-cmake@2bcb1a4c14ab154443cc740dced0f9b6a8fb2b59 # v3.29.6 + - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: From ba5c010c590761d0321bd16e915536ef4f9aad8d Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Fri, 12 Jul 2024 01:06:18 -0400 Subject: [PATCH 519/594] fix crash when atomicCounter() with no args is used. --- glslang/MachineIndependent/ParseHelper.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index c5f0e63f14..6351997a7e 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -7387,7 +7387,7 @@ TIntermTyped* TParseContext::vkRelaxedRemapFunctionCall(const TSourceLoc& loc, T } } else if (function->getName() == "atomicCounter") { // change atomicCounter into a direct read of the variable - if (arguments->getAsTyped()) { + if (arguments && arguments->getAsTyped()) { result = arguments->getAsTyped(); } } From 4b3170d7311f08f017f94b8cbf4c5a24fbe7f6af Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 06:06:33 +0000 Subject: [PATCH 520/594] Bump actions/setup-python from 5.1.0 to 5.1.1 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.1.0 to 5.1.1. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/82c7e631bb3cdc910f68e0081d67478d79c6982d...39cd14951b08e74b54015e9e001cdefcf80e669f) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 22ec151dcb..0742c645d9 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -43,7 +43,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies @@ -107,7 +107,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - run: ./update_glslang_sources.py @@ -164,7 +164,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - run: python update_glslang_sources.py diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index e6f0512d00..a7a1c6629e 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - name: Setup ccache @@ -55,7 +55,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - name: Setup ccache @@ -92,7 +92,7 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 @@ -152,7 +152,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - run: python update_glslang_sources.py @@ -221,7 +221,7 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-python@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.0 + - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 From fb7a681cab32f423049d355e3099ee9948821ee6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 15 Jul 2024 06:06:28 +0000 Subject: [PATCH 521/594] Bump github/codeql-action from 3.25.11 to 3.25.12 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.11 to 3.25.12. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/b611370bb5703a7efb587f9d136a52ea24c5c38c...4fa2a7953630fd2f3fb380f21be14ede0169dd4f) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 80fff2305a..f52dcbb068 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@b611370bb5703a7efb587f9d136a52ea24c5c38c # v3.25.11 + uses: github/codeql-action/upload-sarif@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 with: sarif_file: results.sarif From 702026e3f5e8f7e5e45a28569ff1ecc701cd623a Mon Sep 17 00:00:00 2001 From: jimihem <149994911+jimihem@users.noreply.github.com> Date: Tue, 16 Jul 2024 02:24:16 +0800 Subject: [PATCH 522/594] Support constant expression calculated by matrixCompMult. --- Test/baseResults/matrixCompMult.vert.out | 33 ++++++++++++++++++++++++ Test/matrixCompMult.vert | 32 +++++++++++++++++++++++ glslang/MachineIndependent/Constant.cpp | 6 +++++ gtests/AST.FromFile.cpp | 1 + 4 files changed, 72 insertions(+) create mode 100644 Test/baseResults/matrixCompMult.vert.out create mode 100644 Test/matrixCompMult.vert diff --git a/Test/baseResults/matrixCompMult.vert.out b/Test/baseResults/matrixCompMult.vert.out new file mode 100644 index 0000000000..2434adaf37 --- /dev/null +++ b/Test/baseResults/matrixCompMult.vert.out @@ -0,0 +1,33 @@ +matrixCompMult.vert +Shader version: 460 +0:? Sequence +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:? Sequence +0:26 move second child to first child ( temp float) +0:26 'o1' ( smooth out float) +0:26 Constant: +0:26 18.000000 +0:? Linker Objects +0:? 'o1' ( smooth out float) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + + +Linked vertex stage: + + +Shader version: 460 +0:? Sequence +0:5 Function Definition: main( ( global void) +0:5 Function Parameters: +0:? Sequence +0:26 move second child to first child ( temp float) +0:26 'o1' ( smooth out float) +0:26 Constant: +0:26 18.000000 +0:? Linker Objects +0:? 'o1' ( smooth out float) +0:? 'gl_VertexID' ( gl_VertexId int VertexId) +0:? 'gl_InstanceID' ( gl_InstanceId int InstanceId) + diff --git a/Test/matrixCompMult.vert b/Test/matrixCompMult.vert new file mode 100644 index 0000000000..cccdbbc921 --- /dev/null +++ b/Test/matrixCompMult.vert @@ -0,0 +1,32 @@ +#version 460 +precision highp float; +precision highp int; +out float o1; +void main() +{ + const mat2 cval = matrixCompMult(mat2(1.0), mat2(1.0)); + const mat3 cval1 = matrixCompMult(mat3(1.0), mat3(1.0)); + const mat4 cval2 = matrixCompMult(mat4(1.0), mat4(1.0)); + const mat2x3 cval3 = matrixCompMult(mat2x3(1.0), mat2x3(1.0)); + const mat2x4 cval4 = matrixCompMult(mat2x4(1.0), mat2x4(1.0)); + const mat3x2 cval5 = matrixCompMult(mat3x2(1.0), mat3x2(1.0)); + const mat3x4 cval6 = matrixCompMult(mat3x4(1.0), mat3x4(1.0)); + const mat4x2 cval7 = matrixCompMult(mat4x2(1.0), mat4x2(1.0)); + const mat4x3 cval8 = matrixCompMult(mat4x3(1.0), mat4x3(1.0)); + const dmat2 cval9 = matrixCompMult(dmat2(1.0), dmat2(1.0)); + const dmat3 cval10 = matrixCompMult(dmat3(1.0), dmat3(1.0)); + const dmat4 cval11 = matrixCompMult(dmat4(1.0), dmat4(1.0)); + const dmat2x3 cval12 = matrixCompMult(dmat2x3(1.0), dmat2x3(1.0)); + const dmat2x4 cval13 = matrixCompMult(dmat2x4(1.0), dmat2x4(1.0)); + const dmat3x2 cval14 = matrixCompMult(dmat3x2(1.0), dmat3x2(1.0)); + const dmat3x4 cval15 = matrixCompMult(dmat3x4(1.0), dmat3x4(1.0)); + const dmat4x2 cval16 = matrixCompMult(dmat4x2(1.0), dmat4x2(1.0)); + const dmat4x3 cval17 = matrixCompMult(dmat4x3(1.0), dmat4x3(1.0)); + + o1 = float(cval[0][0] + cval1[0][0] + cval2[0][0] + cval3[0][0] + + cval4[0][0] + cval5[0][0] + cval6[0][0] + cval7[0][0] + + cval8[0][0] + cval9[0][0] + cval10[0][0] + cval11[0][0] + + cval12[0][0] + cval13[0][0] + cval14[0][0] + cval15[0][0] + + cval16[0][0] + cval17[0][0]); +} + diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index ac7fc8cd1a..1f96129b27 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -1009,6 +1009,12 @@ TIntermTyped* TIntermediate::fold(TIntermAggregate* aggrNode) objectSize = std::max(children[0]->getAsTyped()->getType().getVectorSize(), children[2]->getAsTyped()->getType().getVectorSize()); break; + case EOpMul: + { + TIntermConstantUnion* left = children[0]->getAsConstantUnion(); + TIntermConstantUnion* right = children[1]->getAsConstantUnion(); + return left->fold(EOpMul, right); + } default: return aggrNode; } diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 6067e9b83c..170af5dc37 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -313,6 +313,7 @@ INSTANTIATE_TEST_SUITE_P( "GL_EXT_texture_array.frag", "index_outside_sample_mask_range.frag", "positive_infinity.frag", + "matrixCompMult.vert", })), FileNameAsCustomTestSuffix ); From 48eaea60b849e3eb9ff970b7d4e873646b658863 Mon Sep 17 00:00:00 2001 From: arcady-lunarg <122813703+arcady-lunarg@users.noreply.github.com> Date: Mon, 15 Jul 2024 19:10:42 -0400 Subject: [PATCH 523/594] Fix undefined behaviors caught by ubsan This fixes a couple of integer overflows in parsing as well as removes the construction of a null reference that never got dereferenced. This also initializes the bool members in TCall Finally, this adds a UBSAN run alongside ASAN and TSAN in CI. --- .github/workflows/continuous_integration.yml | 6 +++++- glslang/HLSL/hlslParseHelper.cpp | 2 +- glslang/MachineIndependent/Constant.cpp | 6 +++++- glslang/MachineIndependent/localintermediate.h | 3 ++- glslang/MachineIndependent/preprocessor/Pp.cpp | 2 +- 5 files changed, 14 insertions(+), 5 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index a7a1c6629e..b140b9077b 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -51,7 +51,7 @@ jobs: matrix: compiler: [{cc: gcc, cxx: g++}] cmake_build_type: [Debug] - flags: ['-fsanitize=address', '-fsanitize=thread'] + flags: ['-fsanitize=address', '-fsanitize=thread', '-fsanitize=undefined'] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 @@ -82,8 +82,12 @@ jobs: - name: Install run: cmake --install build --prefix build/install - name: Test + env: + UBSAN_OPTIONS: 'halt_on_error=1:print_stacktrace=1' run: ctest --output-on-failure --test-dir build - name: Test (standalone) + env: + UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1 run: cd Test && ./runtests # Ensure we can compile/run on an older distro diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index 0fd724d0d9..c7a40f3baa 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -6059,7 +6059,7 @@ void HlslParseContext::builtInOpCheck(const TSourceLoc& loc, const TFunction& fn unaryArg = callNode.getAsUnaryNode()->getOperand(); arg0 = unaryArg; } - const TIntermSequence& aggArgs = *argp; // only valid when unaryArg is nullptr + const TIntermSequence& aggArgs = argp ? *argp : TIntermSequence(); // only valid when unaryArg is nullptr switch (callNode.getOp()) { case EOpTextureGather: diff --git a/glslang/MachineIndependent/Constant.cpp b/glslang/MachineIndependent/Constant.cpp index 1f96129b27..7a9fb2ed67 100644 --- a/glslang/MachineIndependent/Constant.cpp +++ b/glslang/MachineIndependent/Constant.cpp @@ -507,7 +507,11 @@ TIntermTyped* TIntermConstantUnion::fold(TOperator op, const TType& returnType) case EbtUint8: newConstArray[i].setU8Const(static_cast(-static_cast(unionArray[i].getU8Const()))); break; case EbtInt16: newConstArray[i].setI16Const(-unionArray[i].getI16Const()); break; case EbtUint16:newConstArray[i].setU16Const(static_cast(-static_cast(unionArray[i].getU16Const()))); break; - case EbtInt64: newConstArray[i].setI64Const(-unionArray[i].getI64Const()); break; + case EbtInt64: { + int64_t i64val = unionArray[i].getI64Const(); + newConstArray[i].setI64Const(i64val == INT64_MIN ? INT64_MIN : -i64val); + break; + } case EbtUint64: newConstArray[i].setU64Const(static_cast(-static_cast(unionArray[i].getU64Const()))); break; default: return nullptr; diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 2a24cdaf7f..31b13f1620 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -99,7 +99,8 @@ class TSwizzleSelectors { // A "call" is a pair: . // There can be duplicates. General assumption is the list is small. struct TCall { - TCall(const TString& pCaller, const TString& pCallee) : caller(pCaller), callee(pCallee) { } + TCall(const TString& pCaller, const TString& pCallee) + : caller(pCaller), callee(pCallee), visited(false), currentPath(false), errorGiven(false) { } TString caller; TString callee; bool visited; diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 5f18c4e92e..56f1f0b386 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -374,7 +374,7 @@ namespace { int op_div(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a / b; } int op_mod(int a, int b) { return a == INT_MIN && b == -1 ? 0 : a % b; } int op_pos(int a) { return a; } - int op_neg(int a) { return -a; } + int op_neg(int a) { return a == INT_MIN ? INT_MIN : -a; } int op_cmpl(int a) { return ~a; } int op_not(int a) { return !a; } From 52f68dc6b2a9d017b43161f31f13a6f44636ee7c Mon Sep 17 00:00:00 2001 From: jimihem <149994911+jimihem@users.noreply.github.com> Date: Thu, 18 Jul 2024 06:23:38 +0800 Subject: [PATCH 524/594] Add more location aliasing checks When location aliasing, the aliases sharing the location must have the same underlying numerical type and bit width (floating-point or integer, 32-bit versus 64-bit, etc.) and the same auxiliary storage and interpolation qualification. This adds checks for the "patch" and "sample" qualifiers, and also relaxes the checks when the signedness of integer types differs. --- Test/baseResults/ps_sample.frag.out | 47 ++++++++++++++ Test/baseResults/ps_uint_int.frag.out | 21 +++++++ Test/baseResults/tes_patch.tese.out | 61 +++++++++++++++++++ Test/ps_sample.frag | 17 ++++++ Test/ps_uint_int.frag | 7 +++ Test/tes_patch.tese | 19 ++++++ glslang/MachineIndependent/linkValidate.cpp | 28 +++++++-- .../MachineIndependent/localintermediate.h | 6 +- gtests/AST.FromFile.cpp | 3 + 9 files changed, 201 insertions(+), 8 deletions(-) create mode 100644 Test/baseResults/ps_sample.frag.out create mode 100644 Test/baseResults/ps_uint_int.frag.out create mode 100644 Test/baseResults/tes_patch.tese.out create mode 100644 Test/ps_sample.frag create mode 100644 Test/ps_uint_int.frag create mode 100644 Test/tes_patch.tese diff --git a/Test/baseResults/ps_sample.frag.out b/Test/baseResults/ps_sample.frag.out new file mode 100644 index 0000000000..8fc0a198f3 --- /dev/null +++ b/Test/baseResults/ps_sample.frag.out @@ -0,0 +1,47 @@ +ps_sample.frag +ERROR: 0:5: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification +ERROR: 1 compilation errors. No code generated. + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +ERROR: node is still EOpNull! +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'result' ( temp 4-component vector of float) +0:12 'gs_fs' ( smooth in 4-component vector of float) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'fs_out' ( out 4-component vector of float) +0:16 'result' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'gohan' (layout( location=1 component=0) flat in uint) +0:? 'goten' (layout( location=1 component=2) flat sample in 2-component vector of uint) +0:? 'gs_fs' ( smooth in 4-component vector of float) +0:? 'fs_out' ( out 4-component vector of float) + + +Linked fragment stage: + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +ERROR: node is still EOpNull! +0:10 Function Definition: main( ( global void) +0:10 Function Parameters: +0:12 Sequence +0:12 Sequence +0:12 move second child to first child ( temp 4-component vector of float) +0:12 'result' ( temp 4-component vector of float) +0:12 'gs_fs' ( smooth in 4-component vector of float) +0:16 move second child to first child ( temp 4-component vector of float) +0:16 'fs_out' ( out 4-component vector of float) +0:16 'result' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'gohan' (layout( location=1 component=0) flat in uint) +0:? 'goten' (layout( location=1 component=2) flat sample in 2-component vector of uint) +0:? 'gs_fs' ( smooth in 4-component vector of float) +0:? 'fs_out' ( out 4-component vector of float) + diff --git a/Test/baseResults/ps_uint_int.frag.out b/Test/baseResults/ps_uint_int.frag.out new file mode 100644 index 0000000000..71d2eb9c72 --- /dev/null +++ b/Test/baseResults/ps_uint_int.frag.out @@ -0,0 +1,21 @@ +ps_uint_int.frag +Shader version: 450 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:? Linker Objects +0:? 'u' (layout( location=0 component=0) flat in uint) +0:? 'i' (layout( location=0 component=1) flat in int) + + +Linked fragment stage: + + +Shader version: 450 +0:? Sequence +0:6 Function Definition: main( ( global void) +0:6 Function Parameters: +0:? Linker Objects +0:? 'u' (layout( location=0 component=0) flat in uint) +0:? 'i' (layout( location=0 component=1) flat in int) + diff --git a/Test/baseResults/tes_patch.tese.out b/Test/baseResults/tes_patch.tese.out new file mode 100644 index 0000000000..e53d3392de --- /dev/null +++ b/Test/baseResults/tes_patch.tese.out @@ -0,0 +1,61 @@ +tes_patch.tese +ERROR: 0:7: 'location' : the aliases sharing the location 1 must be the same basic type and interpolation qualification +ERROR: 1 compilation errors. No code generated. + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +input primitive = isolines +vertex spacing = none +triangle order = none +using point mode +ERROR: node is still EOpNull! +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 'result' ( temp 4-component vector of float) +0:14 direct index ( temp 4-component vector of float) +0:14 'tcs_tes' ( in 32-element array of 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:18 add second child into first child ( temp 4-component vector of float) +0:18 'tes_gs' ( out 4-component vector of float) +0:18 'result' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'gohan' (layout( location=1 component=0) in 32-element array of 2-component vector of float) +0:? 'goten' (layout( location=1 component=2) patch in 2-component vector of float) +0:? 'tcs_tes' ( in 32-element array of 4-component vector of float) +0:? 'tes_gs' ( out 4-component vector of float) + + +Linked tessellation evaluation stage: + + +Shader version: 430 +Requested GL_ARB_enhanced_layouts +input primitive = isolines +vertex spacing = equal_spacing +triangle order = ccw +using point mode +ERROR: node is still EOpNull! +0:12 Function Definition: main( ( global void) +0:12 Function Parameters: +0:14 Sequence +0:14 Sequence +0:14 move second child to first child ( temp 4-component vector of float) +0:14 'result' ( temp 4-component vector of float) +0:14 direct index ( temp 4-component vector of float) +0:14 'tcs_tes' ( in 32-element array of 4-component vector of float) +0:14 Constant: +0:14 0 (const int) +0:18 add second child into first child ( temp 4-component vector of float) +0:18 'tes_gs' ( out 4-component vector of float) +0:18 'result' ( temp 4-component vector of float) +0:? Linker Objects +0:? 'gohan' (layout( location=1 component=0) in 32-element array of 2-component vector of float) +0:? 'goten' (layout( location=1 component=2) patch in 2-component vector of float) +0:? 'tcs_tes' ( in 32-element array of 4-component vector of float) +0:? 'tes_gs' ( out 4-component vector of float) + diff --git a/Test/ps_sample.frag b/Test/ps_sample.frag new file mode 100644 index 0000000000..040eb35b2b --- /dev/null +++ b/Test/ps_sample.frag @@ -0,0 +1,17 @@ +#version 430 core +#extension GL_ARB_enhanced_layouts : require + +layout (location = 1, component = 0) flat in uint gohan; +layout (location = 1, component = 2) sample flat in uvec2 goten; + +in vec4 gs_fs; +out vec4 fs_out; + +void main() +{ + vec4 result = gs_fs; + + + + fs_out = result; +} diff --git a/Test/ps_uint_int.frag b/Test/ps_uint_int.frag new file mode 100644 index 0000000000..7ffaf5702d --- /dev/null +++ b/Test/ps_uint_int.frag @@ -0,0 +1,7 @@ +#version 450 + +layout(location=0, component=0) flat in uint u; +layout(location=0, component=1) flat in int i; + +void main() { +} diff --git a/Test/tes_patch.tese b/Test/tes_patch.tese new file mode 100644 index 0000000000..d41b5be574 --- /dev/null +++ b/Test/tes_patch.tese @@ -0,0 +1,19 @@ +#version 430 core +#extension GL_ARB_enhanced_layouts : require + +layout(isolines, point_mode) in; + +layout (location = 1, component = 0) in vec2 gohan[]; +layout (location = 1, component = 2) patch in vec2 goten; + +in vec4 tcs_tes[]; +out vec4 tes_gs; + +void main() +{ + vec4 result = tcs_tes[0]; + + + + tes_gs += result; +} diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 62e24426e3..d56c833c99 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1689,7 +1689,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // First range: TRange locationRange(qualifier.layoutLocation, qualifier.layoutLocation); TRange componentRange(0, 3); - TIoRange range(locationRange, componentRange, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat); + TIoRange range(locationRange, componentRange, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat, qualifier.sample, qualifier.patch); // check for collisions collision = checkLocationRange(set, range, type, typeCollision); @@ -1699,7 +1699,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ // Second range: TRange locationRange2(qualifier.layoutLocation + 1, qualifier.layoutLocation + 1); TRange componentRange2(0, 1); - TIoRange range2(locationRange2, componentRange2, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat); + TIoRange range2(locationRange2, componentRange2, type.getBasicType(), 0, qualifier.centroid, qualifier.smooth, qualifier.flat, qualifier.sample, qualifier.patch); // check for collisions collision = checkLocationRange(set, range2, type, typeCollision); @@ -1725,7 +1725,7 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ TBasicType basicTy = type.getBasicType(); if (basicTy == EbtSampler && type.getSampler().isAttachmentEXT()) basicTy = type.getSampler().type; - TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0, qualifier.centroid, qualifier.smooth, qualifier.flat); + TIoRange range(locationRange, componentRange, basicTy, qualifier.hasIndex() ? qualifier.getIndex() : 0, qualifier.centroid, qualifier.smooth, qualifier.flat, qualifier.sample, qualifier.patch); // check for collisions, except for vertex inputs on desktop targeting OpenGL if (! (!isEsProfile() && language == EShLangVertex && qualifier.isPipeInput()) || spvVersion.vulkan > 0) @@ -1736,7 +1736,21 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ return collision; } - +static bool checkType(TBasicType t1, TBasicType t2) { + if (t1 != t2) { + if ((t1 == EbtInt8 && t2 == EbtUint8) || + (t2 == EbtInt8 && t1 == EbtUint8) || + (t1 == EbtInt16 && t2 == EbtUint16) || + (t2 == EbtInt16 && t1 == EbtUint16)|| + (t1 == EbtInt && t2 == EbtUint) || + (t2 == EbtInt && t1 == EbtUint)|| + (t1 == EbtInt64 && t2 == EbtUint64) || + (t2 == EbtInt64 && t1 == EbtUint64)) { + return true; + } + } + return t1 == t2; +} // Compare a new (the passed in) 'range' against the existing set, and see // if there are any collisions. // @@ -1749,10 +1763,12 @@ int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TTyp // there is a collision; pick one return std::max(range.location.start, usedIo[set][r].location.start); } else if (range.location.overlap(usedIo[set][r].location) && - (type.getBasicType() != usedIo[set][r].basicType || + (!checkType(type.getBasicType(), usedIo[set][r].basicType) || type.getQualifier().centroid != usedIo[set][r].centroid || type.getQualifier().smooth != usedIo[set][r].smooth || - type.getQualifier().flat != usedIo[set][r].flat)) { + type.getQualifier().flat != usedIo[set][r].flat || + type.getQualifier().sample != usedIo[set][r].sample || + type.getQualifier().patch != usedIo[set][r].patch)) { // aliased-type mismatch typeCollision = true; return std::max(range.location.start, usedIo[set][r].location.start); diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 31b13f1620..390a405fb3 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -124,8 +124,8 @@ struct TRange { // within the same location range, component range, and index value. Locations don't alias unless // all other dimensions of their range overlap. struct TIoRange { - TIoRange(TRange location, TRange component, TBasicType basicType, int index, bool centroid, bool smooth, bool flat) - : location(location), component(component), basicType(basicType), index(index), centroid(centroid), smooth(smooth), flat(flat) + TIoRange(TRange location, TRange component, TBasicType basicType, int index, bool centroid, bool smooth, bool flat, bool sample, bool patch) + : location(location), component(component), basicType(basicType), index(index), centroid(centroid), smooth(smooth), flat(flat), sample(sample), patch(patch) { } bool overlap(const TIoRange& rhs) const @@ -139,6 +139,8 @@ struct TIoRange { bool centroid; bool smooth; bool flat; + bool sample; + bool patch; }; // An offset range is a 2-D rectangle; the set of (binding, offset) pairs all lying diff --git a/gtests/AST.FromFile.cpp b/gtests/AST.FromFile.cpp index 170af5dc37..cc433fe70e 100644 --- a/gtests/AST.FromFile.cpp +++ b/gtests/AST.FromFile.cpp @@ -314,6 +314,9 @@ INSTANTIATE_TEST_SUITE_P( "index_outside_sample_mask_range.frag", "positive_infinity.frag", "matrixCompMult.vert", + "ps_uint_int.frag", + "ps_sample.frag", + "tes_patch.tese", })), FileNameAsCustomTestSuffix ); From dc9f6f61adaec755a09e1943cf7014c688443bcb Mon Sep 17 00:00:00 2001 From: Antoine Date: Sat, 20 Jul 2024 00:37:58 +0200 Subject: [PATCH 525/594] Add column to location logs This option can be enabled using the new --error-column option to the command line utility. It can also be enabled programatically. --- StandAlone/StandAlone.cpp | 6 +++++ Test/baseResults/error-column.vert.out | 12 +++++++++ Test/error-column.vert | 27 +++++++++++++++++++ Test/runtests | 7 +++++ glslang/CInterface/glslang_c_interface.cpp | 2 ++ glslang/Include/InfoSink.h | 14 +++++++--- glslang/Include/glslang_c_shader_types.h | 1 + .../MachineIndependent/ParseContextBase.cpp | 2 +- glslang/MachineIndependent/Versions.cpp | 12 ++++++--- glslang/Public/ShaderLang.h | 1 + gtests/TestFixture.h | 4 +-- 11 files changed, 77 insertions(+), 11 deletions(-) create mode 100644 Test/baseResults/error-column.vert.out create mode 100644 Test/error-column.vert diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index ac967f2b5c..94851ba35a 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -110,6 +110,7 @@ enum TOptions : uint64_t { EOptionInvertY = (1ull << 30), EOptionDumpBareVersion = (1ull << 31), EOptionCompileOnly = (1ull << 32), + EOptionDisplayErrorColumn = (1ull << 33), }; bool targetHlslFunctionality1 = false; bool SpvToolsDisassembler = false; @@ -898,6 +899,8 @@ void ProcessArguments(std::vector>& workItem Options |= EOptionDumpVersions; } else if (lowerword == "no-link") { Options |= EOptionCompileOnly; + } else if (lowerword == "error-column") { + Options |= EOptionDisplayErrorColumn; } else if (lowerword == "help") { usage(); break; @@ -1164,6 +1167,8 @@ void SetMessageOptions(EShMessages& messages) messages = (EShMessages)(messages | EShMsgEnhanced); if (AbsolutePath) messages = (EShMessages)(messages | EShMsgAbsolutePath); + if (Options & EOptionDisplayErrorColumn) + messages = (EShMessages)(messages | EShMsgDisplayErrorColumn); } // @@ -2024,6 +2029,7 @@ void usage() " shaders compatible with DirectX\n" " --invert-y | --iy invert position.Y output in vertex shader\n" " --enhanced-msgs print more readable error messages (GLSL only)\n" + " --error-column display the column of the error along the line\n" " --keep-uncalled | --ku don't eliminate uncalled functions\n" " --nan-clamp favor non-NaN operand in min, max, and clamp\n" " --no-storage-format | --nsf use Unknown image format\n" diff --git a/Test/baseResults/error-column.vert.out b/Test/baseResults/error-column.vert.out new file mode 100644 index 0000000000..6538e82a2e --- /dev/null +++ b/Test/baseResults/error-column.vert.out @@ -0,0 +1,12 @@ +error-column.vert +ERROR: error-column.vert:7:16: 'model' : member storage qualifier cannot contradict block storage qualifier +ERROR: error-column.vert:8:16: 'view' : member storage qualifier cannot contradict block storage qualifier +ERROR: error-column.vert:9:16: 'projection' : member storage qualifier cannot contradict block storage qualifier +ERROR: error-column.vert:17:16: 'texCoord1' : member storage qualifier cannot contradict block storage qualifier +ERROR: error-column.vert:24:52: 'Pos' : undeclared identifier +ERROR: error-column.vert:24:60: 'constructor' : not enough data provided for construction +ERROR: error-column.vert:24:17: 'assign' : cannot convert from ' temp highp 4X4 matrix of float' to ' gl_Position 4-component vector of float Position' +ERROR: 7 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/error-column.vert b/Test/error-column.vert new file mode 100644 index 0000000000..2ed97e7e0b --- /dev/null +++ b/Test/error-column.vert @@ -0,0 +1,27 @@ +#version 450 core + +layout (location = 0) in vec3 aPos; +layout (location = 1) in vec2 aTexCoords; + +layout (binding = 0) uniform block { + const mat4 model; + const mat4 view; + const mat4 projection; +}; + +layout (location = 0) out Vertex +{ + vec3 color; + vec3 worldSpacePos; + vec3 worldSpaceNorm; + const vec2 texCoord1; + flat int cameraIndex; + float ii; +} vs_out; + +void main() +{ + gl_Position = projection * view * model * vec4(Pos, 1.0); + vs_out.texCoord1 = aTexCoords; +} + diff --git a/Test/runtests b/Test/runtests index 00c2babdaa..6b23cd441a 100755 --- a/Test/runtests +++ b/Test/runtests @@ -348,6 +348,13 @@ diff -b $BASEDIR/enhanced.7.link.out "$TARGETDIR/enhanced.7.link.out" || HASERRO run --enhanced-msgs -V --target-env vulkan1.2 --amb --aml spv.textureError.frag > "$TARGETDIR/spv.textureError.frag.out" diff -b $BASEDIR/spv.textureError.frag.out "$TARGETDIR/spv.textureError.frag.out" || HASERROR=1 +# +# Test error column +# +echo "Testing error-column" +run --error-column -C -V error-column.vert > "$TARGETDIR/error-column.vert.out" +diff -b $BASEDIR/error-column.vert.out $TARGETDIR/error-column.vert.out || HASERROR=1 + # # Test UTF8BOM # diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index cea965d404..f8fd889b7d 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -205,7 +205,9 @@ static int c_shader_messages(glslang_messages_t messages) CONVERT_MSG(GLSLANG_MSG_HLSL_LEGALIZATION_BIT, EShMsgHlslLegalization); CONVERT_MSG(GLSLANG_MSG_HLSL_DX9_COMPATIBLE_BIT, EShMsgHlslDX9Compatible); CONVERT_MSG(GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT, EShMsgBuiltinSymbolTable); + CONVERT_MSG(GLSLANG_MSG_ENHANCED, EShMsgEnhanced); CONVERT_MSG(GLSLANG_MSG_ABSOLUTE_PATH, EShMsgAbsolutePath); + CONVERT_MSG(GLSLANG_MSG_DISPLAY_ERROR_COLUMN, EShMsgDisplayErrorColumn); return res; #undef CONVERT_MSG } diff --git a/glslang/Include/InfoSink.h b/glslang/Include/InfoSink.h index 23f495dcb7..262933941d 100644 --- a/glslang/Include/InfoSink.h +++ b/glslang/Include/InfoSink.h @@ -95,10 +95,14 @@ class TInfoSinkBase { default: append("UNKNOWN ERROR: "); break; } } - void location(const TSourceLoc& loc, bool absolute = false) { + void location(const TSourceLoc& loc, bool absolute = false, bool displayColumn = false) { const int maxSize = 24; char locText[maxSize]; - snprintf(locText, maxSize, ":%d", loc.line); + if (displayColumn) { + snprintf(locText, maxSize, ":%d:%d", loc.line, loc.column); + } else { + snprintf(locText, maxSize, ":%d", loc.line); + } if(loc.getFilename() == nullptr && shaderFileName != nullptr && absolute) { append(std::filesystem::absolute(shaderFileName).string()); @@ -119,9 +123,11 @@ class TInfoSinkBase { append(s); append("\n"); } - void message(TPrefixType message, const char* s, const TSourceLoc& loc) { + void message(TPrefixType message, const char* s, const TSourceLoc& loc, bool absolute = false, + bool displayColumn = false) + { prefix(message); - location(loc); + location(loc, absolute, displayColumn); append(s); append("\n"); } diff --git a/glslang/Include/glslang_c_shader_types.h b/glslang/Include/glslang_c_shader_types.h index 51f5642abf..7bb0ccda20 100644 --- a/glslang/Include/glslang_c_shader_types.h +++ b/glslang/Include/glslang_c_shader_types.h @@ -175,6 +175,7 @@ typedef enum { GLSLANG_MSG_BUILTIN_SYMBOL_TABLE_BIT = (1 << 14), GLSLANG_MSG_ENHANCED = (1 << 15), GLSLANG_MSG_ABSOLUTE_PATH = (1 << 16), + GLSLANG_MSG_DISPLAY_ERROR_COLUMN = (1 << 17), LAST_ELEMENT_MARKER(GLSLANG_MSG_COUNT), } glslang_messages_t; diff --git a/glslang/MachineIndependent/ParseContextBase.cpp b/glslang/MachineIndependent/ParseContextBase.cpp index 591dfc7185..f7895d9799 100644 --- a/glslang/MachineIndependent/ParseContextBase.cpp +++ b/glslang/MachineIndependent/ParseContextBase.cpp @@ -59,7 +59,7 @@ void TParseContextBase::outputMessage(const TSourceLoc& loc, const char* szReaso safe_vsprintf(szExtraInfo, maxSize, szExtraInfoFormat, args); infoSink.info.prefix(prefix); - infoSink.info.location(loc, messages & EShMsgAbsolutePath); + infoSink.info.location(loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); infoSink.info << "'" << szToken << "' : " << szReason << " " << szExtraInfo << "\n"; if (prefix == EPrefixError) { diff --git a/glslang/MachineIndependent/Versions.cpp b/glslang/MachineIndependent/Versions.cpp index e016ef6b92..0262c54dcb 100644 --- a/glslang/MachineIndependent/Versions.cpp +++ b/glslang/MachineIndependent/Versions.cpp @@ -775,7 +775,7 @@ void TParseVersions::profileRequires(const TSourceLoc& loc, int profileMask, int for (int i = 0; i < numExtensions; ++i) { switch (getExtensionBehavior(extensions[i])) { case EBhWarn: - infoSink.info.message(EPrefixWarning, ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), loc); + infoSink.info.message(EPrefixWarning, ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); [[fallthrough]]; case EBhRequire: case EBhEnable: @@ -813,7 +813,8 @@ void TParseVersions::checkDeprecated(const TSourceLoc& loc, int profileMask, int error(loc, "deprecated, may be removed in future release", featureDesc, ""); else if (! suppressWarnings()) infoSink.info.message(EPrefixWarning, (TString(featureDesc) + " deprecated in version " + - String(depVersion) + "; may be removed in future release").c_str(), loc); + String(depVersion) + "; may be removed in future release").c_str(), + loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); } } } @@ -850,11 +851,14 @@ bool TParseVersions::checkExtensionsRequested(const TSourceLoc& loc, int numExte for (int i = 0; i < numExtensions; ++i) { TExtensionBehavior behavior = getExtensionBehavior(extensions[i]); if (behavior == EBhDisable && relaxedErrors()) { - infoSink.info.message(EPrefixWarning, "The following extension must be enabled to use this feature:", loc); + infoSink.info.message(EPrefixWarning, "The following extension must be enabled to use this feature:", loc, + messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); behavior = EBhWarn; } if (behavior == EBhWarn) { - infoSink.info.message(EPrefixWarning, ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), loc); + infoSink.info.message(EPrefixWarning, + ("extension " + TString(extensions[i]) + " is being used for " + featureDesc).c_str(), + loc, messages & EShMsgAbsolutePath, messages & EShMsgDisplayErrorColumn); warned = true; } } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index b71b147a5d..eac81b1470 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -270,6 +270,7 @@ enum EShMessages : unsigned { EShMsgBuiltinSymbolTable = (1 << 14), // print the builtin symbol table EShMsgEnhanced = (1 << 15), // enhanced message readability EShMsgAbsolutePath = (1 << 16), // Output Absolute path for messages + EShMsgDisplayErrorColumn = (1 << 17), // Display error message column aswell as line LAST_ELEMENT_MARKER(EShMsgCount), }; diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 315fdaec56..9777c27576 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -691,8 +691,8 @@ class GlslangTest : public GT { std::string ppShader; glslang::TShader::ForbidIncluder includer; const bool success = shader.preprocess( - GetDefaultResources(), defaultVersion, defaultProfile, - forceVersionProfile, isForwardCompatible, (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), + GetDefaultResources(), defaultVersion, defaultProfile, forceVersionProfile, isForwardCompatible, + (EShMessages)(EShMsgOnlyPreprocessor | EShMsgCascadingErrors), &ppShader, includer); std::string log = shader.getInfoLog(); From 74d448cc1575f74260b6d198f3a858c7e7c16a69 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 18 Jul 2024 18:16:20 -0400 Subject: [PATCH 526/594] Add some comments and rename a helper function This adds some documentation of the checkTypes() function to make clearer what exactly it is checking. --- glslang/MachineIndependent/linkValidate.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index d56c833c99..81857b244f 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -1736,7 +1736,10 @@ int TIntermediate::addUsedLocation(const TQualifier& qualifier, const TType& typ return collision; } -static bool checkType(TBasicType t1, TBasicType t2) { + +// Check that two types can be stored in different components in the same location. +// They must be the same type, except signed/unsigned integers are considered compatible. +static bool checkCompatibleTypes(TBasicType t1, TBasicType t2) { if (t1 != t2) { if ((t1 == EbtInt8 && t2 == EbtUint8) || (t2 == EbtInt8 && t1 == EbtUint8) || @@ -1751,6 +1754,7 @@ static bool checkType(TBasicType t1, TBasicType t2) { } return t1 == t2; } + // Compare a new (the passed in) 'range' against the existing set, and see // if there are any collisions. // @@ -1763,7 +1767,7 @@ int TIntermediate::checkLocationRange(int set, const TIoRange& range, const TTyp // there is a collision; pick one return std::max(range.location.start, usedIo[set][r].location.start); } else if (range.location.overlap(usedIo[set][r].location) && - (!checkType(type.getBasicType(), usedIo[set][r].basicType) || + (!checkCompatibleTypes(type.getBasicType(), usedIo[set][r].basicType) || type.getQualifier().centroid != usedIo[set][r].centroid || type.getQualifier().smooth != usedIo[set][r].smooth || type.getQualifier().flat != usedIo[set][r].flat || From 592aed9c206c283cac98f7a86e5cc237dadb2638 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 22 Jul 2024 17:20:14 -0400 Subject: [PATCH 527/594] Don't emit debug instructions before an OpPhi Nonsemantic instructions aren't allowed before an OpPhi, so don't emit line and debug scope instructions when the instruction being emitted is an OpPhi. --- SPIRV/SpvBuilder.cpp | 6 + Test/baseResults/spv.debuginfo.glsl.comp.out | 281 +++++++++---------- Test/baseResults/spv.debuginfo.glsl.frag.out | 165 ++++++----- 3 files changed, 228 insertions(+), 224 deletions(-) diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index def3fa2eda..caff5c114c 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2131,6 +2131,12 @@ void Builder::addMemberDecoration(Id id, unsigned int member, Decoration decorat } void Builder::addInstruction(std::unique_ptr inst) { + // Phis must appear first in their block, don't insert line tracking instructions + // in front of them, just add the OpPhi and return. + if (inst->getOpCode() == OpPhi) { + buildPoint->addInstruction(std::move(inst)); + return; + } // Optionally insert OpDebugScope if (emitNonSemanticShaderDebugInfo && dirtyScopeTracker) { if (buildPoint->updateDebugScope(currentDebugScopeId.top())) { diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 2a3505fb69..177054cad0 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,5 +1,4 @@ spv.debuginfo.glsl.comp -Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 975 @@ -283,18 +282,18 @@ void main() Name 383 "param" Name 387 "param" Name 389 "param" - Name 426 "param" - Name 430 "param" - Name 432 "param" - Name 464 "param" - Name 468 "param" - Name 470 "param" - Name 510 "param" - Name 514 "param" - Name 516 "param" - Name 552 "param" - Name 556 "param" - Name 558 "param" + Name 425 "param" + Name 429 "param" + Name 431 "param" + Name 463 "param" + Name 467 "param" + Name 469 "param" + Name 509 "param" + Name 513 "param" + Name 515 "param" + Name 551 "param" + Name 555 "param" + Name 557 "param" Name 575 "f" Name 624 "sphereDist" Name 675 "PushConsts" @@ -482,14 +481,14 @@ void main() 370: 7(int) Constant 107 378: 7(int) Constant 108 398: 7(int) Constant 111 - 419: 7(int) Constant 112 - 425: 73(int) Constant 6 + 418: 7(int) Constant 112 + 424: 73(int) Constant 6 441: 7(int) Constant 115 - 458: 7(int) Constant 116 + 457: 7(int) Constant 116 479: 7(int) Constant 119 - 504: 7(int) Constant 120 + 503: 7(int) Constant 120 525: 7(int) Constant 123 - 546: 7(int) Constant 124 + 545: 7(int) Constant 124 564: 73(int) Constant 3 568: 7(int) Constant 127 578: 7(int) Constant 130 @@ -567,18 +566,18 @@ void main() 383(param): 21(ptr) Variable Function 387(param): 21(ptr) Variable Function 389(param): 24(ptr) Variable Function - 426(param): 21(ptr) Variable Function - 430(param): 21(ptr) Variable Function - 432(param): 24(ptr) Variable Function - 464(param): 21(ptr) Variable Function - 468(param): 21(ptr) Variable Function - 470(param): 24(ptr) Variable Function - 510(param): 21(ptr) Variable Function - 514(param): 21(ptr) Variable Function - 516(param): 24(ptr) Variable Function - 552(param): 21(ptr) Variable Function - 556(param): 21(ptr) Variable Function - 558(param): 24(ptr) Variable Function + 425(param): 21(ptr) Variable Function + 429(param): 21(ptr) Variable Function + 431(param): 24(ptr) Variable Function + 463(param): 21(ptr) Variable Function + 467(param): 21(ptr) Variable Function + 469(param): 24(ptr) Variable Function + 509(param): 21(ptr) Variable Function + 513(param): 21(ptr) Variable Function + 515(param): 24(ptr) Variable Function + 551(param): 21(ptr) Variable Function + 555(param): 21(ptr) Variable Function + 557(param): 24(ptr) Variable Function 575(f): 21(ptr) Variable Function 624(sphereDist): 21(ptr) Variable Function 697(normal): 21(ptr) Variable Function @@ -808,34 +807,34 @@ void main() 411: 166(bool) ULessThan 406 410 Branch 402 402: Label - 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 412: 166(bool) Phi 400 374 411 401 - SelectionMerge 415 None - BranchConditional 412 414 415 - 414: Label - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 419 419 12 12 - 416: 7(int) Load 139(index) - 420: 148(ptr) AccessChain 101(params) 147 12 - 421: 73(int) Load 420 - 422: 7(int) Bitcast 421 - 423: 7(int) IAdd 416 422 - 424: 7(int) ISub 423 39 - 427: 231(ptr) AccessChain 200 203 424 203 - 428: 71(fvec4) Load 427 - 429: 19(fvec3) VectorShuffle 428 428 0 1 2 - Store 426(param) 429 - 431: 19(fvec3) Load 261(pos) - Store 430(param) 431 - 433: 105(ptr) AccessChain 101(params) 425 - 434: 16(float) Load 433 - Store 432(param) 434 - 435: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 426(param) 430(param) 432(param) - 436: 19(fvec3) Load 247(force) - 437: 19(fvec3) FAdd 436 435 - Store 247(force) 437 - Branch 415 - 415: Label + 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + SelectionMerge 414 None + BranchConditional 412 413 414 + 413: Label + 416: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 418 418 12 12 + 415: 7(int) Load 139(index) + 419: 148(ptr) AccessChain 101(params) 147 12 + 420: 73(int) Load 419 + 421: 7(int) Bitcast 420 + 422: 7(int) IAdd 415 421 + 423: 7(int) ISub 422 39 + 426: 231(ptr) AccessChain 200 203 423 203 + 427: 71(fvec4) Load 426 + 428: 19(fvec3) VectorShuffle 427 427 0 1 2 + Store 425(param) 428 + 430: 19(fvec3) Load 261(pos) + Store 429(param) 430 + 432: 105(ptr) AccessChain 101(params) 424 + 433: 16(float) Load 432 + Store 431(param) 433 + 434: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 425(param) 429(param) 431(param) + 435: 19(fvec3) Load 247(force) + 436: 19(fvec3) FAdd 435 434 + Store 247(force) 436 + Branch 414 + 414: Label 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 441 441 12 12 438: 137(ptr) AccessChain 125(id) 12 @@ -851,34 +850,34 @@ void main() 450: 166(bool) UGreaterThan 449 12 Branch 445 445: Label - 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 451: 166(bool) Phi 443 415 450 444 - SelectionMerge 454 None - BranchConditional 451 453 454 - 453: Label - 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 458 458 12 12 - 455: 7(int) Load 139(index) - 459: 148(ptr) AccessChain 101(params) 147 12 - 460: 73(int) Load 459 - 461: 7(int) Bitcast 460 - 462: 7(int) ISub 455 461 - 463: 7(int) ISub 462 39 - 465: 231(ptr) AccessChain 200 203 463 203 - 466: 71(fvec4) Load 465 - 467: 19(fvec3) VectorShuffle 466 466 0 1 2 - Store 464(param) 467 - 469: 19(fvec3) Load 261(pos) - Store 468(param) 469 - 471: 105(ptr) AccessChain 101(params) 425 - 472: 16(float) Load 471 - Store 470(param) 472 - 473: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 464(param) 468(param) 470(param) - 474: 19(fvec3) Load 247(force) - 475: 19(fvec3) FAdd 474 473 - Store 247(force) 475 - Branch 454 - 454: Label + 451: 166(bool) Phi 443 414 450 444 + 475: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + SelectionMerge 453 None + BranchConditional 451 452 453 + 452: Label + 455: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 457 457 12 12 + 454: 7(int) Load 139(index) + 458: 148(ptr) AccessChain 101(params) 147 12 + 459: 73(int) Load 458 + 460: 7(int) Bitcast 459 + 461: 7(int) ISub 454 460 + 462: 7(int) ISub 461 39 + 464: 231(ptr) AccessChain 200 203 462 203 + 465: 71(fvec4) Load 464 + 466: 19(fvec3) VectorShuffle 465 465 0 1 2 + Store 463(param) 466 + 468: 19(fvec3) Load 261(pos) + Store 467(param) 468 + 470: 105(ptr) AccessChain 101(params) 424 + 471: 16(float) Load 470 + Store 469(param) 471 + 472: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 463(param) 467(param) 469(param) + 473: 19(fvec3) Load 247(force) + 474: 19(fvec3) FAdd 473 472 + Store 247(force) 474 + Branch 453 + 453: Label 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 478: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 479 479 12 12 476: 137(ptr) AccessChain 125(id) 12 @@ -902,34 +901,34 @@ void main() 496: 166(bool) ULessThan 491 495 Branch 487 487: Label - 498: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 497: 166(bool) Phi 485 454 496 486 - SelectionMerge 500 None - BranchConditional 497 499 500 - 499: Label - 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 503: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 504 504 12 12 - 501: 7(int) Load 139(index) - 505: 148(ptr) AccessChain 101(params) 147 12 - 506: 73(int) Load 505 - 507: 7(int) Bitcast 506 - 508: 7(int) IAdd 501 507 - 509: 7(int) IAdd 508 39 - 511: 231(ptr) AccessChain 200 203 509 203 - 512: 71(fvec4) Load 511 - 513: 19(fvec3) VectorShuffle 512 512 0 1 2 - Store 510(param) 513 - 515: 19(fvec3) Load 261(pos) - Store 514(param) 515 - 517: 105(ptr) AccessChain 101(params) 425 - 518: 16(float) Load 517 - Store 516(param) 518 - 519: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 510(param) 514(param) 516(param) - 520: 19(fvec3) Load 247(force) - 521: 19(fvec3) FAdd 520 519 - Store 247(force) 521 - Branch 500 - 500: Label + 497: 166(bool) Phi 485 453 496 486 + 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + SelectionMerge 499 None + BranchConditional 497 498 499 + 498: Label + 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 503 503 12 12 + 500: 7(int) Load 139(index) + 504: 148(ptr) AccessChain 101(params) 147 12 + 505: 73(int) Load 504 + 506: 7(int) Bitcast 505 + 507: 7(int) IAdd 500 506 + 508: 7(int) IAdd 507 39 + 510: 231(ptr) AccessChain 200 203 508 203 + 511: 71(fvec4) Load 510 + 512: 19(fvec3) VectorShuffle 511 511 0 1 2 + Store 509(param) 512 + 514: 19(fvec3) Load 261(pos) + Store 513(param) 514 + 516: 105(ptr) AccessChain 101(params) 424 + 517: 16(float) Load 516 + Store 515(param) 517 + 518: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 509(param) 513(param) 515(param) + 519: 19(fvec3) Load 247(force) + 520: 19(fvec3) FAdd 519 518 + Store 247(force) 520 + Branch 499 + 499: Label 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 524: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 525 525 12 12 522: 137(ptr) AccessChain 125(id) 12 @@ -949,34 +948,34 @@ void main() 538: 166(bool) UGreaterThan 537 12 Branch 533 533: Label - 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 539: 166(bool) Phi 531 500 538 532 - SelectionMerge 542 None - BranchConditional 539 541 542 - 541: Label - 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 546 546 12 12 - 543: 7(int) Load 139(index) - 547: 148(ptr) AccessChain 101(params) 147 12 - 548: 73(int) Load 547 - 549: 7(int) Bitcast 548 - 550: 7(int) ISub 543 549 - 551: 7(int) IAdd 550 39 - 553: 231(ptr) AccessChain 200 203 551 203 - 554: 71(fvec4) Load 553 - 555: 19(fvec3) VectorShuffle 554 554 0 1 2 - Store 552(param) 555 - 557: 19(fvec3) Load 261(pos) - Store 556(param) 557 - 559: 105(ptr) AccessChain 101(params) 425 - 560: 16(float) Load 559 - Store 558(param) 560 - 561: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 552(param) 556(param) 558(param) - 562: 19(fvec3) Load 247(force) - 563: 19(fvec3) FAdd 562 561 - Store 247(force) 563 - Branch 542 - 542: Label + 539: 166(bool) Phi 531 499 538 532 + 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + SelectionMerge 541 None + BranchConditional 539 540 541 + 540: Label + 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 545 545 12 12 + 542: 7(int) Load 139(index) + 546: 148(ptr) AccessChain 101(params) 147 12 + 547: 73(int) Load 546 + 548: 7(int) Bitcast 547 + 549: 7(int) ISub 542 548 + 550: 7(int) IAdd 549 39 + 552: 231(ptr) AccessChain 200 203 550 203 + 553: 71(fvec4) Load 552 + 554: 19(fvec3) VectorShuffle 553 553 0 1 2 + Store 551(param) 554 + 556: 19(fvec3) Load 261(pos) + Store 555(param) 556 + 558: 105(ptr) AccessChain 101(params) 424 + 559: 16(float) Load 558 + Store 557(param) 559 + 560: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 551(param) 555(param) 557(param) + 561: 19(fvec3) Load 247(force) + 562: 19(fvec3) FAdd 561 560 + Store 247(force) 562 + Branch 541 + 541: Label 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 568 568 12 12 565: 105(ptr) AccessChain 101(params) 564 diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index cf30e573bb..142107a33e 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,5 +1,4 @@ spv.debuginfo.glsl.frag -Validation failed // Module Version 10000 // Generated by (magic number): 8000b // Id's are bound by 877 @@ -231,12 +230,12 @@ void main() 105: String "global_var" 120: String "shadowCoord" 142: String "bool" - 163: String "dist" - 170: String "type.2d.image" - 171: String "@type.2d.image" - 175: String "type.sampled.image" - 176: String "@type.sampled.image" - 181: String "samplerShadowMap" + 162: String "dist" + 169: String "type.2d.image" + 170: String "@type.2d.image" + 174: String "type.sampled.image" + 175: String "@type.sampled.image" + 180: String "samplerShadowMap" 230: String "texDim" 242: String "scale" 249: String "dx" @@ -292,8 +291,8 @@ void main() Name 103 "global_var" Name 112 "shadow" Name 118 "shadowCoord" - Name 161 "dist" - Name 179 "samplerShadowMap" + Name 160 "dist" + Name 178 "samplerShadowMap" Name 228 "texDim" Name 240 "scale" Name 247 "dx" @@ -352,8 +351,8 @@ void main() Name 814 "spec" Name 861 "param" Name 866 "param" - Decorate 179(samplerShadowMap) Binding 5 - Decorate 179(samplerShadowMap) DescriptorSet 0 + Decorate 178(samplerShadowMap) Binding 5 + Decorate 178(samplerShadowMap) DescriptorSet 0 MemberDecorate 405(Light) 0 Offset 0 MemberDecorate 405(Light) 1 Offset 16 MemberDecorate 405(Light) 2 Offset 32 @@ -449,21 +448,21 @@ void main() 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 28 12 146: 7(int) Constant 65 148: 16(float) Constant 3212836864 - 164: 7(int) Constant 67 - 162: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 163 18 41 164 12 40 20 - 168: TypeImage 16(float) 2D array sampled format:Unknown - 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 169: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 164 12 44 171 172 13 - 173: TypeSampledImage 168 - 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 164 12 44 176 172 13 - 177: TypePointer UniformConstant 173 - 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 174 12 12 -179(samplerShadowMap): 177(ptr) Variable UniformConstant - 180: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 181 174 41 164 12 44 181 179(samplerShadowMap) 107 - 195: 7(int) Constant 68 - 197: 16(float) Constant 0 - 211: 16(float) Constant 1048576000 - 214: 7(int) Constant 70 + 163: 7(int) Constant 67 + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 162 18 41 163 12 40 20 + 167: TypeImage 16(float) 2D array sampled format:Unknown + 171: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 41 163 12 44 170 171 13 + 172: TypeSampledImage 167 + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 12 41 163 12 44 175 171 13 + 176: TypePointer UniformConstant 172 + 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 173 12 12 +178(samplerShadowMap): 176(ptr) Variable UniformConstant + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 180 173 41 163 12 44 180 178(samplerShadowMap) 107 + 194: 7(int) Constant 68 + 196: 16(float) Constant 0 + 209: 16(float) Constant 1048576000 + 212: 7(int) Constant 70 219: 7(int) Constant 73 224: TypeVector 98(int) 2 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 28 @@ -535,9 +534,9 @@ void main() 478: 7(int) Constant 119 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 477 75 41 478 12 96 20 481: TypeImage 16(float) 2D sampled format:Unknown - 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 170 12 41 478 12 44 171 172 13 + 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 41 478 12 44 170 171 13 483: TypeSampledImage 481 - 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 175 12 41 478 12 44 176 172 13 + 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 12 41 478 12 44 175 171 13 485: TypePointer UniformConstant 483 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 484 12 12 487(samplerposition): 485(ptr) Variable UniformConstant @@ -589,7 +588,7 @@ void main() 678: TypePointer Uniform 19(fvec4) 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12 687: 7(int) Constant 156 - 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 163 18 41 687 12 96 20 + 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 162 18 41 687 12 96 20 694: 7(int) Constant 157 699: 7(int) Constant 160 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 698 75 41 699 12 96 20 @@ -885,14 +884,14 @@ void main() 771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 768 767(heightAttenuation) 49 773: 16(float) Load 725(lightRange) 774: 16(float) Load 685(dist) - 775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 197 774 + 775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 196 774 Store 767(heightAttenuation) 775 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 779 779 12 12 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(NdotL) 49 782: 74(fvec3) Load 646(N) 783: 74(fvec3) Load 670(L) 784: 16(float) Dot 782 783 - 785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 784 + 785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 196 784 Store 776(NdotL) 785 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 789 789 12 12 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 787 786(diff) 49 @@ -911,7 +910,7 @@ void main() 810: 74(fvec3) Load 794(R) 811: 74(fvec3) Load 696(V) 812: 16(float) Dot 810 811 - 813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 197 812 + 813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 196 812 Store 804(NdotR) 813 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 817 817 12 12 818: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 815 814(spec) 49 @@ -986,7 +985,7 @@ void main() 38: Label 112(shadow): 25(ptr) Variable Function 118(shadowCoord): 22(ptr) Variable Function - 161(dist): 25(ptr) Variable Function + 160(dist): 25(ptr) Variable Function 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(P) 49 @@ -1030,54 +1029,54 @@ void main() 156: 141(bool) FOrdLessThan 155 117 Branch 151 151: Label - 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 157: 141(bool) Phi 149 38 156 150 - SelectionMerge 160 None - BranchConditional 157 159 160 - 159: Label - 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 164 164 12 12 - 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 162 161(dist) 49 - 182: 173 Load 179(samplerShadowMap) - 183: 19(fvec4) Load 118(shadowCoord) - 184: 27(fvec2) VectorShuffle 183 183 0 1 - 185: 27(fvec2) Load 36(offset) - 186: 27(fvec2) FAdd 184 185 - 187: 16(float) Load 35(layer) - 188: 16(float) CompositeExtract 186 0 - 189: 16(float) CompositeExtract 186 1 - 190: 74(fvec3) CompositeConstruct 188 189 187 - 191: 19(fvec4) ImageSampleImplicitLod 182 190 - 192: 16(float) CompositeExtract 191 0 - Store 161(dist) 192 - 194: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 195 195 12 12 - 193: 25(ptr) AccessChain 118(shadowCoord) 13 - 196: 16(float) Load 193 - 198: 141(bool) FOrdGreaterThan 196 197 - SelectionMerge 200 None - BranchConditional 198 199 200 - 199: Label - 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 195 195 12 12 - 201: 16(float) Load 161(dist) - 204: 25(ptr) AccessChain 118(shadowCoord) 28 - 205: 16(float) Load 204 - 206: 141(bool) FOrdLessThan 201 205 - Branch 200 - 200: Label - 208: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 207: 141(bool) Phi 198 159 206 199 - SelectionMerge 210 None - BranchConditional 207 209 210 - 209: Label - 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 214 214 12 12 - Store 112(shadow) 211 - Branch 210 - 210: Label - 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - Branch 160 - 160: Label + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + SelectionMerge 159 None + BranchConditional 157 158 159 + 158: Label + 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 163 163 12 12 + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 161 160(dist) 49 + 181: 172 Load 178(samplerShadowMap) + 182: 19(fvec4) Load 118(shadowCoord) + 183: 27(fvec2) VectorShuffle 182 182 0 1 + 184: 27(fvec2) Load 36(offset) + 185: 27(fvec2) FAdd 183 184 + 186: 16(float) Load 35(layer) + 187: 16(float) CompositeExtract 185 0 + 188: 16(float) CompositeExtract 185 1 + 189: 74(fvec3) CompositeConstruct 187 188 186 + 190: 19(fvec4) ImageSampleImplicitLod 181 189 + 191: 16(float) CompositeExtract 190 0 + Store 160(dist) 191 + 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 + 192: 25(ptr) AccessChain 118(shadowCoord) 13 + 195: 16(float) Load 192 + 197: 141(bool) FOrdGreaterThan 195 196 + SelectionMerge 199 None + BranchConditional 197 198 199 + 198: Label + 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 + 200: 16(float) Load 160(dist) + 203: 25(ptr) AccessChain 118(shadowCoord) 28 + 204: 16(float) Load 203 + 205: 141(bool) FOrdLessThan 200 204 + Branch 199 + 199: Label + 206: 141(bool) Phi 197 158 205 198 + 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + SelectionMerge 208 None + BranchConditional 206 207 208 + 207: Label + 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 212 212 12 12 + Store 112(shadow) 209 + Branch 208 + 208: Label + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + Branch 159 + 159: Label 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 219 219 12 12 216: 16(float) Load 112(shadow) @@ -1106,8 +1105,8 @@ void main() 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 231 231 12 12 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 229 228(texDim) 49 - 234: 173 Load 179(samplerShadowMap) - 235: 168 Image 234 + 234: 172 Load 178(samplerShadowMap) + 235: 167 Image 234 238: 236(ivec3) ImageQuerySizeLod 235 108 239: 224(ivec2) VectorShuffle 238 238 0 1 Store 228(texDim) 239 @@ -1134,7 +1133,7 @@ void main() Store 261(dy) 272 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 276 276 12 12 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(shadowFactor) 49 - Store 273(shadowFactor) 197 + Store 273(shadowFactor) 196 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 282 282 12 12 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(count) 49 Store 279(count) 108 From ab670d444b210dea7316f333f3cdcbabac78b0f4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 06:43:36 +0000 Subject: [PATCH 528/594] Bump lukka/get-cmake from 3.30.0 to 3.30.1 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.30.0 to 3.30.1. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/983956e4a5edce90f0dfcc38c1543077e668402b...34181361be075620f7c3871daa1cadb92d9a903e) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 0742c645d9..ebba7a7ab1 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index b140b9077b..8a5a34aef5 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread', '-fsanitize=undefined'] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -99,7 +99,7 @@ jobs: - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -131,7 +131,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -155,7 +155,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -173,7 +173,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -202,7 +202,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: @@ -228,7 +228,7 @@ jobs: - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - - uses: lukka/get-cmake@983956e4a5edce90f0dfcc38c1543077e668402b # v3.30.0 + - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - name: Setup ccache uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 with: From f7f15cf67cac03457c71b52436cdf12faf6909ca Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 22 Jul 2024 06:43:41 +0000 Subject: [PATCH 529/594] Bump github/codeql-action from 3.25.12 to 3.25.13 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.12 to 3.25.13. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4fa2a7953630fd2f3fb380f21be14ede0169dd4f...2d790406f505036ef40ecba973cc774a50395aac) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f52dcbb068..344b0ba70d 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4fa2a7953630fd2f3fb380f21be14ede0169dd4f # v3.25.12 + uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 with: sarif_file: results.sarif From bedbe7481e1e08f4b374d77a34642e995276664d Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Tue, 23 Jul 2024 15:11:46 +0200 Subject: [PATCH 530/594] Expose setGlobalUniform* methods to the C API --- glslang/CInterface/glslang_c_interface.cpp | 9 +++++++++ glslang/Include/glslang_c_interface.h | 2 ++ 2 files changed, 11 insertions(+) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index f8fd889b7d..dd8a2fdcef 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -370,6 +370,15 @@ GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, in shader->shader->setOverrideVersion(version); } +GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_set_and_binding(glslang_shader_t* shader, unsigned int set, unsigned int binding) { + shader->shader->setGlobalUniformSet(set); + shader->shader->setGlobalUniformBinding(binding); +} + +GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader_t* shader, const char *name) { + shader->shader->setGlobalUniformBlockName(name); +} + GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) { return shader->preprocessedGLSL.c_str(); diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 7fa1a05d51..f11079ede1 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -259,6 +259,8 @@ GLSLANG_EXPORT void glslang_shader_shift_binding(glslang_shader_t* shader, glsla GLSLANG_EXPORT void glslang_shader_shift_binding_for_set(glslang_shader_t* shader, glslang_resource_type_t res, unsigned int base, unsigned int set); GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int options); // glslang_shader_options_t GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version); +GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_set_and_binding(glslang_shader_t* shader, unsigned int set, unsigned int binding); +GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader_t* shader, const char *name); GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader); From ebbd65501d6e48107223be2ea3c485cc69659ac0 Mon Sep 17 00:00:00 2001 From: Yamamoto Kazunari Date: Wed, 10 Jul 2024 15:19:11 -0700 Subject: [PATCH 531/594] Fix missing calls to SetThreadPoolAllocator() in TProgram public interface functions --- glslang/MachineIndependent/ShaderLang.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index be3248e3ff..32ca9925f8 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -2121,6 +2121,8 @@ bool TProgram::buildReflection(int opts) if (! linked || reflection != nullptr) return false; + SetThreadPoolAllocator(pool); + int firstStage = EShLangVertex, lastStage = EShLangFragment; if (opts & EShReflectionIntermediateIO) { @@ -2176,6 +2178,9 @@ bool TProgram::mapIO(TIoMapResolver* pResolver, TIoMapper* pIoMapper) { if (! linked) return false; + + SetThreadPoolAllocator(pool); + TIoMapper* ioMapper = nullptr; TIoMapper defaultIOMapper; if (pIoMapper == nullptr) From 42260d1f6d8ba897a80edbf5e47e22881205d9ef Mon Sep 17 00:00:00 2001 From: Steve Urquhart Date: Wed, 10 Jul 2024 15:30:22 -0700 Subject: [PATCH 532/594] Add C interface glslang::Version counterpart and version getter function --- glslang/CInterface/glslang_c_interface.cpp | 7 +++++++ glslang/Include/glslang_c_interface.h | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index dd8a2fdcef..bf00b4e060 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -34,6 +34,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "StandAlone/DirStackFileIncluder.h" #include "glslang/Public/ResourceLimits.h" +#include "glslang/Public/ShaderLang.h" #include "glslang/Include/ShHandle.h" #include "glslang/Include/ResourceLimits.h" @@ -54,6 +55,7 @@ static_assert(int(GLSLANG_REFLECTION_COUNT) == EShReflectionCount, ""); static_assert(int(GLSLANG_PROFILE_COUNT) == EProfileCount, ""); static_assert(sizeof(glslang_limits_t) == sizeof(TLimits), ""); static_assert(sizeof(glslang_resource_t) == sizeof(TBuiltInResource), ""); +static_assert(sizeof(glslang_version_t) == sizeof(glslang::Version), ""); typedef struct glslang_shader_s { glslang::TShader* shader; @@ -141,6 +143,11 @@ class CallbackIncluder : public glslang::TShader::Includer { void* context; }; +GLSLANG_EXPORT void glslang_get_version(glslang_version_t* version) +{ + *reinterpret_cast(version) = glslang::GetVersion(); +} + GLSLANG_EXPORT int glslang_initialize_process() { return static_cast(glslang::InitializeProcess()); } GLSLANG_EXPORT void glslang_finalize_process() { glslang::FinalizeProcess(); } diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index f11079ede1..459b121661 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -41,6 +41,14 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. typedef struct glslang_shader_s glslang_shader_t; typedef struct glslang_program_s glslang_program_t; +/* Version counterpart */ +typedef struct glslang_version_s { + int major; + int minor; + int patch; + const char* flavor; +} glslang_version_t; + /* TLimits counterpart */ typedef struct glslang_limits_s { bool non_inductive_for_loops; @@ -249,6 +257,8 @@ extern "C" { #define GLSLANG_EXPORT #endif +GLSLANG_EXPORT void glslang_get_version(glslang_version_t* version); + GLSLANG_EXPORT int glslang_initialize_process(void); GLSLANG_EXPORT void glslang_finalize_process(void); From 10a923f740a9d1572bc003eba377b00246f37c81 Mon Sep 17 00:00:00 2001 From: Steve Urquhart Date: Wed, 10 Jul 2024 15:30:22 -0700 Subject: [PATCH 533/594] Add C interface function to set preprocessed shader code --- glslang/CInterface/glslang_c_interface.cpp | 5 +++++ glslang/Include/glslang_c_interface.h | 1 + 2 files changed, 6 insertions(+) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index bf00b4e060..cb5666596e 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -391,6 +391,11 @@ GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t return shader->preprocessedGLSL.c_str(); } +GLSLANG_EXPORT void glslang_shader_set_preprocessed_code(glslang_shader_t* shader, const char* code) +{ + shader->preprocessedGLSL.assign(code); +} + GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input) { DirStackFileIncluder dirStackFileIncluder; diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 459b121661..1deafad860 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -274,6 +274,7 @@ GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader); +GLSLANG_EXPORT void glslang_shader_set_preprocessed_code(glslang_shader_t* shader, const char* code); GLSLANG_EXPORT const char* glslang_shader_get_info_log(glslang_shader_t* shader); GLSLANG_EXPORT const char* glslang_shader_get_info_debug_log(glslang_shader_t* shader); From 3c7b12c643437061aec00a813a7f7ae578ba813f Mon Sep 17 00:00:00 2001 From: Steve Urquhart Date: Wed, 10 Jul 2024 15:30:22 -0700 Subject: [PATCH 534/594] Add C interface types and functions for IO mapping --- glslang/CInterface/glslang_c_interface.cpp | 33 ++++++++++++++++++++++ glslang/Include/glslang_c_interface.h | 9 ++++++ 2 files changed, 42 insertions(+) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index cb5666596e..a2eeab4d60 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -38,6 +38,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "glslang/Include/ShHandle.h" #include "glslang/Include/ResourceLimits.h" +#include "glslang/MachineIndependent/iomapper.h" #include "glslang/MachineIndependent/Versions.h" #include "glslang/MachineIndependent/localintermediate.h" @@ -482,6 +483,11 @@ GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program) return (int)program->program->mapIO(); } +GLSLANG_EXPORT int glslang_program_map_io_with_resolver_and_mapper(glslang_program_t* program, glslang_resolver_t* resolver, glslang_mapper_t* mapper) +{ + return (int)program->program->mapIO(reinterpret_cast(resolver), reinterpret_cast(mapper)); +} + GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program) { return program->program->getInfoLog(); @@ -491,3 +497,30 @@ GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* { return program->program->getInfoDebugLog(); } + +GLSLANG_EXPORT glslang_mapper_t* glslang_glsl_mapper_create() +{ + return reinterpret_cast(new glslang::TGlslIoMapper()); +} + +GLSLANG_EXPORT void glslang_glsl_mapper_delete(glslang_mapper_t* mapper) +{ + if (!mapper) + return; + + delete reinterpret_cast(mapper); +} + +GLSLANG_EXPORT glslang_resolver_t* glslang_glsl_resolver_create(glslang_program_t* program, glslang_stage_t stage) +{ + glslang::TIntermediate* intermediate = program->program->getIntermediate(c_shader_stage(stage)); + return reinterpret_cast(new glslang::TDefaultGlslIoResolver(reinterpret_cast(*intermediate))); +} + +GLSLANG_EXPORT void glslang_glsl_resolver_delete(glslang_resolver_t* resolver) +{ + if (!resolver) + return; + + delete reinterpret_cast(resolver); +} diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 1deafad860..3cad97ccee 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -40,6 +40,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. typedef struct glslang_shader_s glslang_shader_t; typedef struct glslang_program_s glslang_program_t; +typedef struct glslang_mapper_s glslang_mapper_t; +typedef struct glslang_resolver_s glslang_resolver_t; /* Version counterpart */ typedef struct glslang_version_s { @@ -285,6 +287,7 @@ GLSLANG_EXPORT int glslang_program_link(glslang_program_t* program, int messages GLSLANG_EXPORT void glslang_program_add_source_text(glslang_program_t* program, glslang_stage_t stage, const char* text, size_t len); GLSLANG_EXPORT void glslang_program_set_source_file(glslang_program_t* program, glslang_stage_t stage, const char* file); GLSLANG_EXPORT int glslang_program_map_io(glslang_program_t* program); +GLSLANG_EXPORT int glslang_program_map_io_with_resolver_and_mapper(glslang_program_t* program, glslang_resolver_t* resolver, glslang_mapper_t* mapper); GLSLANG_EXPORT void glslang_program_SPIRV_generate(glslang_program_t* program, glslang_stage_t stage); GLSLANG_EXPORT void glslang_program_SPIRV_generate_with_options(glslang_program_t* program, glslang_stage_t stage, glslang_spv_options_t* spv_options); GLSLANG_EXPORT size_t glslang_program_SPIRV_get_size(glslang_program_t* program); @@ -294,6 +297,12 @@ GLSLANG_EXPORT const char* glslang_program_SPIRV_get_messages(glslang_program_t* GLSLANG_EXPORT const char* glslang_program_get_info_log(glslang_program_t* program); GLSLANG_EXPORT const char* glslang_program_get_info_debug_log(glslang_program_t* program); +GLSLANG_EXPORT glslang_mapper_t* glslang_glsl_mapper_create(); +GLSLANG_EXPORT void glslang_glsl_mapper_delete(glslang_mapper_t* mapper); + +GLSLANG_EXPORT glslang_resolver_t* glslang_glsl_resolver_create(glslang_program_t* program, glslang_stage_t stage); +GLSLANG_EXPORT void glslang_glsl_resolver_delete(glslang_resolver_t* resolver); + #ifdef __cplusplus } #endif From 4b73607b8945402430ab0af0ae6faafa7e8906d0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 06:16:57 +0000 Subject: [PATCH 535/594] Bump ossf/scorecard-action from 2.3.3 to 2.4.0 Bumps [ossf/scorecard-action](https://github.com/ossf/scorecard-action) from 2.3.3 to 2.4.0. - [Release notes](https://github.com/ossf/scorecard-action/releases) - [Changelog](https://github.com/ossf/scorecard-action/blob/main/RELEASE.md) - [Commits](https://github.com/ossf/scorecard-action/compare/dc50aa9510b46c811795eb24b2f1ba02a914e534...62b2cac7ed8198b15735ed49ab1e5cf35480ba46) --- updated-dependencies: - dependency-name: ossf/scorecard-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 344b0ba70d..bbcd196a3f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -28,7 +28,7 @@ jobs: persist-credentials: false - name: "Run analysis" - uses: ossf/scorecard-action@dc50aa9510b46c811795eb24b2f1ba02a914e534 # v2.3.3 + uses: ossf/scorecard-action@62b2cac7ed8198b15735ed49ab1e5cf35480ba46 # v2.4.0 with: results_file: results.sarif results_format: sarif From 9f34b25f30d8d1a0186d847249300366047a3315 Mon Sep 17 00:00:00 2001 From: Pavel Asyutchenko Date: Mon, 29 Jul 2024 19:34:50 +0200 Subject: [PATCH 536/594] Fix HLSL offsets for non-cbuffers (#3668) --- SPIRV/GlslangToSpv.cpp | 17 ++-- Test/baseResults/hlsl.buffer-offsets.comp.out | 81 +++++++++++++++++++ Test/hlsl.buffer-offsets.comp | 13 +++ gtests/Hlsl.FromFile.cpp | 1 + 4 files changed, 105 insertions(+), 7 deletions(-) create mode 100644 Test/baseResults/hlsl.buffer-offsets.comp.out create mode 100644 Test/hlsl.buffer-offsets.comp diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index fa7e02a118..7bfd50f53f 100755 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -5404,13 +5404,16 @@ void TGlslangToSpvTraverser::updateMemberOffset(const glslang::TType& structType memberAlignment = componentAlignment; // Don't add unnecessary padding after this member - if (memberType.isMatrix()) { - if (matrixLayout == glslang::ElmRowMajor) - memberSize -= componentSize * (4 - memberType.getMatrixCols()); - else - memberSize -= componentSize * (4 - memberType.getMatrixRows()); - } else if (memberType.isArray()) - memberSize -= componentSize * (4 - memberType.getVectorSize()); + // (undo std140 bumping size to a mutliple of vec4) + if (explicitLayout == glslang::ElpStd140) { + if (memberType.isMatrix()) { + if (matrixLayout == glslang::ElmRowMajor) + memberSize -= componentSize * (4 - memberType.getMatrixCols()); + else + memberSize -= componentSize * (4 - memberType.getMatrixRows()); + } else if (memberType.isArray()) + memberSize -= componentSize * (4 - memberType.getVectorSize()); + } } // Bump up to member alignment diff --git a/Test/baseResults/hlsl.buffer-offsets.comp.out b/Test/baseResults/hlsl.buffer-offsets.comp.out new file mode 100644 index 0000000000..d92d0be9fe --- /dev/null +++ b/Test/baseResults/hlsl.buffer-offsets.comp.out @@ -0,0 +1,81 @@ +hlsl.buffer-offsets.comp +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:12 Function Definition: @main( ( temp void) +0:12 Function Parameters: +0:12 Function Definition: main( ( temp void) +0:12 Function Parameters: +0:? Sequence +0:12 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'bIterData' (layout( binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 24-element array of float mIntegrationTrafo, temp 3-element array of float mWind, temp uint mIsTurning} @data}) + + +Linked compute stage: + + +Shader version: 500 +local_size = (1, 1, 1) +0:? Sequence +0:12 Function Definition: @main( ( temp void) +0:12 Function Parameters: +0:12 Function Definition: main( ( temp void) +0:12 Function Parameters: +0:? Sequence +0:12 Function Call: @main( ( temp void) +0:? Linker Objects +0:? 'bIterData' (layout( binding=2 row_major std430) readonly buffer block{layout( row_major std430) buffer unsized 1-element array of structure{ temp 24-element array of float mIntegrationTrafo, temp 3-element array of float mWind, temp uint mIsTurning} @data}) + +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 20 + + Capability Shader + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + Source HLSL 500 + Name 4 "main" + Name 6 "@main(" + Name 15 "GfxIterationData" + MemberName 15(GfxIterationData) 0 "mIntegrationTrafo" + MemberName 15(GfxIterationData) 1 "mWind" + MemberName 15(GfxIterationData) 2 "mIsTurning" + Name 17 "bIterData" + MemberName 17(bIterData) 0 "@data" + Name 19 "bIterData" + Decorate 12 ArrayStride 4 + Decorate 14 ArrayStride 4 + MemberDecorate 15(GfxIterationData) 0 Offset 0 + MemberDecorate 15(GfxIterationData) 1 Offset 96 + MemberDecorate 15(GfxIterationData) 2 Offset 108 + Decorate 16 ArrayStride 112 + Decorate 17(bIterData) BufferBlock + MemberDecorate 17(bIterData) 0 NonWritable + MemberDecorate 17(bIterData) 0 Offset 0 + Decorate 19(bIterData) Binding 2 + Decorate 19(bIterData) DescriptorSet 0 + 2: TypeVoid + 3: TypeFunction 2 + 9: TypeFloat 32 + 10: TypeInt 32 0 + 11: 10(int) Constant 24 + 12: TypeArray 9(float) 11 + 13: 10(int) Constant 3 + 14: TypeArray 9(float) 13 +15(GfxIterationData): TypeStruct 12 14 10(int) + 16: TypeRuntimeArray 15(GfxIterationData) + 17(bIterData): TypeStruct 16 + 18: TypePointer Uniform 17(bIterData) + 19(bIterData): 18(ptr) Variable Uniform + 4(main): 2 Function None 3 + 5: Label + 8: 2 FunctionCall 6(@main() + Return + FunctionEnd + 6(@main(): 2 Function None 3 + 7: Label + Return + FunctionEnd diff --git a/Test/hlsl.buffer-offsets.comp b/Test/hlsl.buffer-offsets.comp new file mode 100644 index 0000000000..13e4052d37 --- /dev/null +++ b/Test/hlsl.buffer-offsets.comp @@ -0,0 +1,13 @@ +// See https://github.com/KhronosGroup/glslang/issues/3668 + +struct GfxIterationData { + float mIntegrationTrafo[24]; + float mWind[3]; + uint mIsTurning; +}; + +StructuredBuffer bIterData : register(t2); + +void main() +{ +} diff --git a/gtests/Hlsl.FromFile.cpp b/gtests/Hlsl.FromFile.cpp index c94a3381ac..053793df8c 100644 --- a/gtests/Hlsl.FromFile.cpp +++ b/gtests/Hlsl.FromFile.cpp @@ -170,6 +170,7 @@ INSTANTIATE_TEST_SUITE_P( {"hlsl.basic.geom", "main"}, {"hlsl.boolConv.vert", "main"}, {"hlsl.buffer.frag", "PixelShaderFunction"}, + {"hlsl.buffer-offsets.comp", "main"}, {"hlsl.calculatelod.dx10.frag", "main"}, {"hlsl.calculatelodunclamped.dx10.frag", "main"}, {"hlsl.cast.frag", "PixelShaderFunction"}, From 6a28e226c7ae4669ec10cc658a9af8c3d3ef4bcb Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 29 Jul 2024 06:16:54 +0000 Subject: [PATCH 537/594] Bump github/codeql-action from 3.25.13 to 3.25.15 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.13 to 3.25.15. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/2d790406f505036ef40ecba973cc774a50395aac...afb54ba388a7dca6ecae48f608c4ff05ff4cc77a) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index bbcd196a3f..f758cadf35 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2d790406f505036ef40ecba973cc774a50395aac # v3.25.13 + uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 with: sarif_file: results.sarif From 69249e46b6286e41ee47b5f51bf814881f15b63a Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Fri, 12 Jul 2024 00:51:48 -0400 Subject: [PATCH 538/594] add cross-stage check for missing outputs If an 'in' is present in a shader stage, make sure a matching 'out' is present in the previous stage. Only enabled when doing Vulkan. This commit also fixes a bug where previous stage's linkerObjects got polluted with 'in' variables from the next stage when merging linker objects. --- .../iomap.crossStage.vk.2.vert.out | 313 ++++++++++++++++++ Test/iomap.crossStage.vk.2.frag | 24 ++ Test/iomap.crossStage.vk.2.geom | 32 ++ Test/iomap.crossStage.vk.2.vert | 14 + glslang/MachineIndependent/linkValidate.cpp | 80 +++-- gtests/GlslMapIO.FromFile.cpp | 1 + 6 files changed, 439 insertions(+), 25 deletions(-) create mode 100755 Test/baseResults/iomap.crossStage.vk.2.vert.out create mode 100755 Test/iomap.crossStage.vk.2.frag create mode 100755 Test/iomap.crossStage.vk.2.geom create mode 100755 Test/iomap.crossStage.vk.2.vert diff --git a/Test/baseResults/iomap.crossStage.vk.2.vert.out b/Test/baseResults/iomap.crossStage.vk.2.vert.out new file mode 100755 index 0000000000..2334df5c47 --- /dev/null +++ b/Test/baseResults/iomap.crossStage.vk.2.vert.out @@ -0,0 +1,313 @@ +iomap.crossStage.vk.2.vert +Shader version: 460 +0:? Sequence +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:10 Sequence +0:10 move second child to first child ( temp highp 4-component vector of float) +0:10 val: direct index for structure ( out highp 4-component vector of float) +0:10 'anon@0' ( out block{ out highp 4-component vector of float val}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 0.500000 +0:10 0.500000 +0:10 0.500000 +0:10 0.500000 +0:11 move second child to first child ( temp highp 4-component vector of float) +0:11 'color' ( smooth out highp 4-component vector of float) +0:11 Constant: +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:12 move second child to first child ( temp 4-component vector of float) +0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:12 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) +0:12 Constant: +0:12 0 (const uint) +0:12 Constant: +0:12 1.000000 +0:12 1.000000 +0:12 1.000000 +0:12 1.000000 +0:? Linker Objects +0:? 'anon@0' ( out block{ out highp 4-component vector of float val}) +0:? 'color' ( smooth out highp 4-component vector of float) +0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out unsized 1-element array of float ClipDistance gl_ClipDistance, out unsized 1-element array of float CullDistance gl_CullDistance}) + +iomap.crossStage.vk.2.geom +Shader version: 460 +invocations = -1 +max_vertices = 3 +input primitive = points +output primitive = triangle_strip +0:? Sequence +0:23 Function Definition: main( ( global void) +0:23 Function Parameters: +0:25 Sequence +0:25 Sequence +0:25 Sequence +0:25 move second child to first child ( temp highp int) +0:25 'i' ( temp highp int) +0:25 Constant: +0:25 0 (const int) +0:25 Loop with condition tested first +0:25 Loop Condition +0:25 Compare Less Than ( temp bool) +0:25 'i' ( temp highp int) +0:25 Constant: +0:25 3 (const int) +0:25 Loop Body +0:26 Sequence +0:26 move second child to first child ( temp highp 4-component vector of float) +0:26 'colorOut' (layout( stream=0) out highp 4-component vector of float) +0:26 component-wise multiply ( temp highp 4-component vector of float) +0:26 indirect index ( temp highp 4-component vector of float) +0:26 'color' ( in 1-element array of highp 4-component vector of float) +0:26 'i' ( temp highp int) +0:26 val: direct index for structure ( in highp 4-component vector of float) +0:26 indirect index ( temp block{ in highp 4-component vector of float val}) +0:26 'vv' ( in 1-element array of block{ in highp 4-component vector of float val}) +0:26 'i' ( temp highp int) +0:26 Constant: +0:26 0 (const int) +0:27 move second child to first child ( temp highp 4-component vector of float) +0:27 vv2Val: direct index for structure (layout( stream=0) out highp 4-component vector of float) +0:27 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float vv2Val}) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:28 EmitVertex ( global void) +0:25 Loop Terminal Expression +0:25 Post-Increment ( temp highp int) +0:25 'i' ( temp highp int) +0:30 EndPrimitive ( global void) +0:? Linker Objects +0:? 'vgo1' ( in 1-element array of highp 4-component vector of float) +0:? 'color' ( in 1-element array of highp 4-component vector of float) +0:? 'colorOut' (layout( stream=0) out highp 4-component vector of float) +0:? 'vv' ( in 1-element array of block{ in highp 4-component vector of float val}) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float vv2Val}) + +iomap.crossStage.vk.2.frag +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:19 Function Definition: main( ( global void) +0:19 Function Parameters: +0:21 Sequence +0:21 move second child to first child ( temp highp 4-component vector of float) +0:21 'fragColor' ( out highp 4-component vector of float) +0:21 add ( temp highp 4-component vector of float) +0:21 'colorOut' ( smooth in highp 4-component vector of float) +0:21 component-wise multiply ( temp highp 4-component vector of float) +0:21 component-wise multiply ( temp highp 4-component vector of float) +0:21 component-wise multiply ( temp highp 4-component vector of float) +0:21 'unsetColor' ( smooth in highp 4-component vector of float) +0:21 Construct vec4 ( temp highp 4-component vector of float) +0:21 vector swizzle ( temp highp 4-component vector of float) +0:21 val: direct index for structure ( in highp 2-component vector of float) +0:21 'iVert' ( in block{ in highp 2-component vector of float val}) +0:21 Constant: +0:21 0 (const int) +0:21 Sequence +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const int) +0:21 Constant: +0:21 1 (const int) +0:21 Construct vec4 ( temp highp 4-component vector of float) +0:21 vector swizzle ( temp highp 4-component vector of float) +0:21 val2: direct index for structure ( in highp 2-component vector of float) +0:21 'anon@0' ( in block{ in highp 2-component vector of float val2}) +0:21 Constant: +0:21 0 (const uint) +0:21 Sequence +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const int) +0:21 Constant: +0:21 1 (const int) +0:22 'vv2Val' ( smooth in highp 4-component vector of float) +0:? Linker Objects +0:? 'unsetColor' ( smooth in highp 4-component vector of float) +0:? 'colorOut' ( smooth in highp 4-component vector of float) +0:? 'fragColor' ( out highp 4-component vector of float) +0:? 'iVert' ( in block{ in highp 2-component vector of float val}) +0:? 'anon@0' ( in block{ in highp 2-component vector of float val2}) +0:? 'vv2Val' ( smooth in highp 4-component vector of float) + + +Linked vertex stage: + + +Linked geometry stage: + + +Linked fragment stage: + +ERROR: Linking vertex and geometry stages: Input 'vgo1' in geometry shader has no corresponding output in vertex shader. +ERROR: Linking geometry and fragment stages: Input 'unsetColor' in fragment shader has no corresponding output in geometry shader. +ERROR: Linking geometry and fragment stages: Input 'Vertex' in fragment shader has no corresponding output in geometry shader. +ERROR: Linking geometry and fragment stages: Input 'Vertex2' in fragment shader has no corresponding output in geometry shader. +ERROR: Linking geometry and fragment stages: Input 'vv2Val' in fragment shader has no corresponding output in geometry shader. + +Shader version: 460 +0:? Sequence +0:8 Function Definition: main( ( global void) +0:8 Function Parameters: +0:10 Sequence +0:10 move second child to first child ( temp highp 4-component vector of float) +0:10 val: direct index for structure ( out highp 4-component vector of float) +0:10 'anon@0' ( out block{ out highp 4-component vector of float val}) +0:10 Constant: +0:10 0 (const uint) +0:10 Constant: +0:10 0.500000 +0:10 0.500000 +0:10 0.500000 +0:10 0.500000 +0:11 move second child to first child ( temp highp 4-component vector of float) +0:11 'color' ( smooth out highp 4-component vector of float) +0:11 Constant: +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:11 1.000000 +0:12 move second child to first child ( temp 4-component vector of float) +0:12 gl_Position: direct index for structure ( gl_Position 4-component vector of float Position) +0:12 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) +0:12 Constant: +0:12 0 (const uint) +0:12 Constant: +0:12 1.000000 +0:12 1.000000 +0:12 1.000000 +0:12 1.000000 +0:? Linker Objects +0:? 'anon@0' ( out block{ out highp 4-component vector of float val}) +0:? 'color' ( smooth out highp 4-component vector of float) +0:? 'anon@1' ( out block{ gl_Position 4-component vector of float Position gl_Position, gl_PointSize float PointSize gl_PointSize, out 1-element array of float ClipDistance gl_ClipDistance, out 1-element array of float CullDistance gl_CullDistance}) +Shader version: 460 +invocations = 1 +max_vertices = 3 +input primitive = points +output primitive = triangle_strip +0:? Sequence +0:23 Function Definition: main( ( global void) +0:23 Function Parameters: +0:25 Sequence +0:25 Sequence +0:25 Sequence +0:25 move second child to first child ( temp highp int) +0:25 'i' ( temp highp int) +0:25 Constant: +0:25 0 (const int) +0:25 Loop with condition tested first +0:25 Loop Condition +0:25 Compare Less Than ( temp bool) +0:25 'i' ( temp highp int) +0:25 Constant: +0:25 3 (const int) +0:25 Loop Body +0:26 Sequence +0:26 move second child to first child ( temp highp 4-component vector of float) +0:26 'colorOut' (layout( stream=0) out highp 4-component vector of float) +0:26 component-wise multiply ( temp highp 4-component vector of float) +0:26 indirect index ( temp highp 4-component vector of float) +0:26 'color' ( in 1-element array of highp 4-component vector of float) +0:26 'i' ( temp highp int) +0:26 val: direct index for structure ( in highp 4-component vector of float) +0:26 indirect index ( temp block{ in highp 4-component vector of float val}) +0:26 'vv' ( in 1-element array of block{ in highp 4-component vector of float val}) +0:26 'i' ( temp highp int) +0:26 Constant: +0:26 0 (const int) +0:27 move second child to first child ( temp highp 4-component vector of float) +0:27 vv2Val: direct index for structure (layout( stream=0) out highp 4-component vector of float) +0:27 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float vv2Val}) +0:27 Constant: +0:27 0 (const uint) +0:27 Constant: +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:27 1.000000 +0:28 EmitVertex ( global void) +0:25 Loop Terminal Expression +0:25 Post-Increment ( temp highp int) +0:25 'i' ( temp highp int) +0:30 EndPrimitive ( global void) +0:? Linker Objects +0:? 'vgo1' ( in 1-element array of highp 4-component vector of float) +0:? 'color' ( in 1-element array of highp 4-component vector of float) +0:? 'colorOut' (layout( stream=0) out highp 4-component vector of float) +0:? 'vv' ( in 1-element array of block{ in highp 4-component vector of float val}) +0:? 'anon@0' (layout( stream=0) out block{layout( stream=0) out highp 4-component vector of float vv2Val}) +Shader version: 460 +gl_FragCoord origin is upper left +0:? Sequence +0:19 Function Definition: main( ( global void) +0:19 Function Parameters: +0:21 Sequence +0:21 move second child to first child ( temp highp 4-component vector of float) +0:21 'fragColor' ( out highp 4-component vector of float) +0:21 add ( temp highp 4-component vector of float) +0:21 'colorOut' ( smooth in highp 4-component vector of float) +0:21 component-wise multiply ( temp highp 4-component vector of float) +0:21 component-wise multiply ( temp highp 4-component vector of float) +0:21 component-wise multiply ( temp highp 4-component vector of float) +0:21 'unsetColor' ( smooth in highp 4-component vector of float) +0:21 Construct vec4 ( temp highp 4-component vector of float) +0:21 vector swizzle ( temp highp 4-component vector of float) +0:21 val: direct index for structure ( in highp 2-component vector of float) +0:21 'iVert' ( in block{ in highp 2-component vector of float val}) +0:21 Constant: +0:21 0 (const int) +0:21 Sequence +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const int) +0:21 Constant: +0:21 1 (const int) +0:21 Construct vec4 ( temp highp 4-component vector of float) +0:21 vector swizzle ( temp highp 4-component vector of float) +0:21 val2: direct index for structure ( in highp 2-component vector of float) +0:21 'anon@0' ( in block{ in highp 2-component vector of float val2}) +0:21 Constant: +0:21 0 (const uint) +0:21 Sequence +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 0 (const int) +0:21 Constant: +0:21 1 (const int) +0:21 Constant: +0:21 1 (const int) +0:22 'vv2Val' ( smooth in highp 4-component vector of float) +0:? Linker Objects +0:? 'unsetColor' ( smooth in highp 4-component vector of float) +0:? 'colorOut' ( smooth in highp 4-component vector of float) +0:? 'fragColor' ( out highp 4-component vector of float) +0:? 'iVert' ( in block{ in highp 2-component vector of float val}) +0:? 'anon@0' ( in block{ in highp 2-component vector of float val2}) +0:? 'vv2Val' ( smooth in highp 4-component vector of float) +Mismatched cross-stage IO + +Validation failed +SPIR-V is not generated for failed compile or link diff --git a/Test/iomap.crossStage.vk.2.frag b/Test/iomap.crossStage.vk.2.frag new file mode 100755 index 0000000000..e34a9a9b2f --- /dev/null +++ b/Test/iomap.crossStage.vk.2.frag @@ -0,0 +1,24 @@ +#version 460 + +in vec4 unsetColor; +in vec4 colorOut; +out vec4 fragColor; + +in Vertex +{ + vec2 val; +} iVert; + +in Vertex2 +{ + vec2 val2; +}; + +in vec4 vv2Val; + +void main() +{ + fragColor = colorOut + unsetColor * vec4(iVert.val.xxyy) * vec4(val2.xxyy) * + vv2Val; +} + diff --git a/Test/iomap.crossStage.vk.2.geom b/Test/iomap.crossStage.vk.2.geom new file mode 100755 index 0000000000..11e7b9ab09 --- /dev/null +++ b/Test/iomap.crossStage.vk.2.geom @@ -0,0 +1,32 @@ +#version 460 + +layout(points) in; +layout(triangle_strip, max_vertices=3) out; + +// Not written by vertex shader +in vec4 vgo1[]; + +in vec4 color[]; + +out vec4 colorOut; + +in VV +{ + vec4 val; +} vv[]; + +out VV2 +{ + vec4 vv2Val; +}; + +void main() +{ + for (int i = 0; i < 3; i++) { + colorOut = color[i] * vv[i].val; + vv2Val = vec4(1.0); + EmitVertex(); + } + EndPrimitive(); +} + diff --git a/Test/iomap.crossStage.vk.2.vert b/Test/iomap.crossStage.vk.2.vert new file mode 100755 index 0000000000..8788ec2c2a --- /dev/null +++ b/Test/iomap.crossStage.vk.2.vert @@ -0,0 +1,14 @@ +#version 460 + +out VV +{ + vec4 val; +}; +out vec4 color; +void main() +{ + val = vec4(0.5); + color = vec4(1.0); + gl_Position = vec4(1.0); +} + diff --git a/glslang/MachineIndependent/linkValidate.cpp b/glslang/MachineIndependent/linkValidate.cpp index 81857b244f..182a67754d 100644 --- a/glslang/MachineIndependent/linkValidate.cpp +++ b/glslang/MachineIndependent/linkValidate.cpp @@ -113,6 +113,28 @@ void TIntermediate::mergeUniformObjects(TInfoSink& infoSink, TIntermediate& unit mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); } +static inline bool isSameInterface(TIntermSymbol* symbol, EShLanguage stage, TIntermSymbol* unitSymbol, EShLanguage unitStage) { + return // 1) same stage and same shader interface + (stage == unitStage && symbol->getType().getShaderInterface() == unitSymbol->getType().getShaderInterface()) || + // 2) accross stages and both are uniform or buffer + (symbol->getQualifier().storage == EvqUniform && unitSymbol->getQualifier().storage == EvqUniform) || + (symbol->getQualifier().storage == EvqBuffer && unitSymbol->getQualifier().storage == EvqBuffer) || + // 3) in/out matched across stage boundary + (stage < unitStage && symbol->getQualifier().storage == EvqVaryingOut && unitSymbol->getQualifier().storage == EvqVaryingIn) || + (unitStage < stage && symbol->getQualifier().storage == EvqVaryingIn && unitSymbol->getQualifier().storage == EvqVaryingOut); +} + +static bool isSameSymbol(TIntermSymbol* symbol1, EShLanguage stage1, TIntermSymbol* symbol2, EShLanguage stage2) { + // If they are both blocks in the same shader interface, + // match by the block-name, not the identifier name. + if (symbol1->getType().getBasicType() == EbtBlock && symbol2->getType().getBasicType() == EbtBlock) { + if (isSameInterface(symbol1, stage1, symbol2, stage2)) { + return symbol1->getType().getTypeName() == symbol2->getType().getTypeName(); + } + } else if (symbol1->getName() == symbol2->getName()) + return true; + return false; +} // // do error checking on the shader boundary in / out vars // @@ -137,7 +159,32 @@ void TIntermediate::checkStageIO(TInfoSink& infoSink, TIntermediate& unit) { // do matching and error checking mergeLinkerObjects(infoSink, linkerObjects, unitLinkerObjects, unit.getStage()); - // TODO: final check; make sure that any statically used `in` have matching `out` written to + // Check that all of our inputs have matching outputs from the previous stage. + // Only do this for Vulkan, since GL_ARB_separate_shader_objects allows for + // the in/out to not match + if (spvVersion.vulkan > 0) { + for (auto& nextStageInterm : unitLinkerObjects) { + auto* nextStageSymbol = nextStageInterm->getAsSymbolNode(); + bool found = false; + for (auto& curStageInterm : linkerObjects) { + if (isSameSymbol(curStageInterm->getAsSymbolNode(), getStage(), nextStageSymbol, unit.getStage())) { + found = true; + break; + } + } + if (!found) { + TString errmsg; + errmsg.append("Input '"); + if (nextStageSymbol->getType().getBasicType() == EbtBlock) + errmsg.append(nextStageSymbol->getType().getTypeName()); + else + errmsg.append(nextStageSymbol->getName()); + errmsg.append("' in ").append(StageName(unit.getStage())); + errmsg.append(" shader has no corresponding output in ").append(StageName(getStage())).append(" shader."); + error(infoSink, errmsg.c_str(), unit.getStage()); + } + } + } } void TIntermediate::mergeCallGraphs(TInfoSink& infoSink, TIntermediate& unit) @@ -511,17 +558,6 @@ void TIntermediate::mergeBodies(TInfoSink& infoSink, TIntermSequence& globals, c globals.insert(globals.end() - 1, unitGlobals.begin(), unitGlobals.end() - 1); } -static inline bool isSameInterface(TIntermSymbol* symbol, EShLanguage stage, TIntermSymbol* unitSymbol, EShLanguage unitStage) { - return // 1) same stage and same shader interface - (stage == unitStage && symbol->getType().getShaderInterface() == unitSymbol->getType().getShaderInterface()) || - // 2) accross stages and both are uniform or buffer - (symbol->getQualifier().storage == EvqUniform && unitSymbol->getQualifier().storage == EvqUniform) || - (symbol->getQualifier().storage == EvqBuffer && unitSymbol->getQualifier().storage == EvqBuffer) || - // 3) in/out matched across stage boundary - (stage < unitStage && symbol->getQualifier().storage == EvqVaryingOut && unitSymbol->getQualifier().storage == EvqVaryingIn) || - (unitStage < stage && symbol->getQualifier().storage == EvqVaryingIn && unitSymbol->getQualifier().storage == EvqVaryingOut); -} - // // Global Unfiform block stores any default uniforms (i.e. uniforms without a block) // If two linked stages declare the same member, they are meant to be the same uniform @@ -707,24 +743,18 @@ void TIntermediate::mergeLinkerObjects(TInfoSink& infoSink, TIntermSequence& lin // Error check and merge the linker objects (duplicates should not be created) std::size_t initialNumLinkerObjects = linkerObjects.size(); for (unsigned int unitLinkObj = 0; unitLinkObj < unitLinkerObjects.size(); ++unitLinkObj) { + TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); bool merge = true; + + // Don't merge inputs backwards into previous stages + if (getStage() != unitStage && unitSymbol->getQualifier().storage == EvqVaryingIn) + merge = false; + for (std::size_t linkObj = 0; linkObj < initialNumLinkerObjects; ++linkObj) { TIntermSymbol* symbol = linkerObjects[linkObj]->getAsSymbolNode(); - TIntermSymbol* unitSymbol = unitLinkerObjects[unitLinkObj]->getAsSymbolNode(); assert(symbol && unitSymbol); - bool isSameSymbol = false; - // If they are both blocks in the same shader interface, - // match by the block-name, not the identifier name. - if (symbol->getType().getBasicType() == EbtBlock && unitSymbol->getType().getBasicType() == EbtBlock) { - if (isSameInterface(symbol, getStage(), unitSymbol, unitStage)) { - isSameSymbol = symbol->getType().getTypeName() == unitSymbol->getType().getTypeName(); - } - } - else if (symbol->getName() == unitSymbol->getName()) - isSameSymbol = true; - - if (isSameSymbol) { + if (isSameSymbol(symbol, getStage(), unitSymbol, unitStage)) { // filter out copy merge = false; diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp index 1dba5c0c99..9c3c8be5a9 100644 --- a/gtests/GlslMapIO.FromFile.cpp +++ b/gtests/GlslMapIO.FromFile.cpp @@ -345,6 +345,7 @@ INSTANTIATE_TEST_SUITE_P( {{"iomap.variableOutBlockIn.2.vert", "iomap.variableOutBlockIn.geom"}, Semantics::OpenGL}, // vulkan semantics {{"iomap.crossStage.vk.vert", "iomap.crossStage.vk.geom", "iomap.crossStage.vk.frag" }, Semantics::Vulkan}, + {{"iomap.crossStage.vk.2.vert", "iomap.crossStage.vk.2.geom", "iomap.crossStage.vk.2.frag" }, Semantics::Vulkan}, })) ); // clang-format on From 7e896697dc04d2be09ddfe920b7b7cf5bab7cf01 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 30 Jul 2024 17:58:54 -0400 Subject: [PATCH 539/594] Add SPIRV/SpvTools.h back to the public headers Clean up the includes in SpvTools.h so that it doesn't require any transitive dependencies and add it back to the headers that get installed. --- SPIRV/CInterface/spirv_c_interface.cpp | 2 ++ SPIRV/CMakeLists.txt | 3 ++- SPIRV/SpvTools.cpp | 1 + SPIRV/SpvTools.h | 5 ++++- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/SPIRV/CInterface/spirv_c_interface.cpp b/SPIRV/CInterface/spirv_c_interface.cpp index 2ba819b81c..631d19d799 100644 --- a/SPIRV/CInterface/spirv_c_interface.cpp +++ b/SPIRV/CInterface/spirv_c_interface.cpp @@ -32,6 +32,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "glslang/Include/glslang_c_interface.h" +#include +#include "glslang/Public/ShaderLang.h" #include "SPIRV/GlslangToSpv.h" #include "SPIRV/Logger.h" #include "SPIRV/SpvTools.h" diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 66808812e5..5e52b38d93 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -76,7 +76,8 @@ set(PUBLIC_HEADERS disassemble.h Logger.h spirv.hpp - SPVRemapper.h) + SPVRemapper.h + SpvTools.h) add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) add_library(glslang::SPIRV ALIAS SPIRV) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index ff04f4f967..934d834e49 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -44,6 +44,7 @@ #include "SpvTools.h" #include "spirv-tools/optimizer.hpp" +#include "glslang/MachineIndependent/localintermediate.h" namespace glslang { diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index eabde46662..a72d652c57 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -44,10 +44,11 @@ #if ENABLE_OPT #include #include +#include #include "spirv-tools/libspirv.h" #endif -#include "glslang/MachineIndependent/localintermediate.h" +#include "glslang/MachineIndependent/Versions.h" #include "GlslangToSpv.h" #include "Logger.h" @@ -55,6 +56,8 @@ namespace glslang { #if ENABLE_OPT +class TIntermediate; + // Translate glslang's view of target versioning to what SPIRV-Tools uses. spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger); From 8590f62c145549b30e07d6714afe6158174574f7 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Tue, 30 Jul 2024 16:06:37 -0400 Subject: [PATCH 540/594] add optimizerAllowExpandedIDBound to SpvOptions This option increases the max_id_bound in the optimizer to 0x3FFFFFFF, and then runs a compact-id pass if the final result has a max_id greater than the standard limit of 0x3FFFFF. --- SPIRV/GlslangToSpv.h | 1 + SPIRV/SpvTools.cpp | 11 +++++++++++ glslang/Include/glslang_c_interface.h | 1 + 3 files changed, 13 insertions(+) diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h index 1b9ef3c514..95ea891bfe 100644 --- a/SPIRV/GlslangToSpv.h +++ b/SPIRV/GlslangToSpv.h @@ -53,6 +53,7 @@ struct SpvOptions { bool emitNonSemanticShaderDebugInfo {false}; bool emitNonSemanticShaderDebugSource{ false }; bool compileOnly{false}; + bool optimizerAllowExpandedIDBound{false}; }; void GetSpirvVersion(std::string&); diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 934d834e49..6360ab4987 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -219,9 +219,20 @@ void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector optimizer.RegisterPass(spvtools::CreateCFGCleanupPass()); spvtools::OptimizerOptions spvOptOptions; + if (options->optimizerAllowExpandedIDBound) + spvOptOptions.set_max_id_bound(0x3FFFFFFF); optimizer.SetTargetEnv(MapToSpirvToolsEnv(intermediate.getSpv(), logger)); spvOptOptions.set_run_validator(false); // The validator may run as a separate step later on optimizer.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); + + if (options->optimizerAllowExpandedIDBound) { + if (spirv.size() > 3 && spirv[3] > kDefaultMaxIdBound) { + spvtools::Optimizer optimizer2(target_env); + optimizer2.SetMessageConsumer(OptimizerMesssageConsumer); + optimizer2.RegisterPass(spvtools::CreateCompactIdsPass()); + optimizer2.Run(spirv.data(), spirv.size(), &spirv, spvOptOptions); + } + } } bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index 3cad97ccee..a78b9f5df4 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -237,6 +237,7 @@ typedef struct glslang_spv_options_s { bool emit_nonsemantic_shader_debug_info; bool emit_nonsemantic_shader_debug_source; bool compile_only; + bool optimize_allow_expanded_id_bound; } glslang_spv_options_t; #ifdef __cplusplus From 48154f1766cb41e180ed5af952ffad1c0de8c334 Mon Sep 17 00:00:00 2001 From: ravi688 Date: Sat, 22 Jun 2024 23:47:29 +0530 Subject: [PATCH 541/594] Update comment to more succint that 8/16-bit composites can't be directly constructed Earlier the comment looked misleading that composites of 8/16-bit types can't be constructed at all. As per the GL_EXT_shader_16bit_storage extension, they can't be constructed directly, however, can be constructed indirectly. --- glslang/MachineIndependent/ParseHelper.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 6351997a7e..724e4cde56 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -8539,7 +8539,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructF16Mat4x4: case EOpConstructFloat16: basicOp = EOpConstructFloat16; - // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. float16_t( var) if (!intermediate.getArithemeticFloat16Enabled() && (node->getBasicType() != EbtFloat16)) { @@ -8563,7 +8563,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructI8Vec4: case EOpConstructInt8: basicOp = EOpConstructInt8; - // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. int8_t( var) if (!intermediate.getArithemeticInt8Enabled() && (node->getBasicType() != EbtInt8)) { @@ -8587,7 +8587,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructU8Vec4: case EOpConstructUint8: basicOp = EOpConstructUint8; - // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. uint8_t( var) if (!intermediate.getArithemeticInt8Enabled() && (node->getBasicType() != EbtUint8)) { @@ -8611,7 +8611,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructI16Vec4: case EOpConstructInt16: basicOp = EOpConstructInt16; - // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. int16_t( var) if (!intermediate.getArithemeticInt16Enabled() && (node->getBasicType() != EbtInt16)) { @@ -8635,7 +8635,7 @@ TIntermTyped* TParseContext::constructBuiltIn(const TType& type, TOperator op, T case EOpConstructU16Vec4: case EOpConstructUint16: basicOp = EOpConstructUint16; - // 8/16-bit storage extensions don't support constructing composites of 8/16-bit types, + // 8/16-bit storage extensions don't support direct constructing composites of 8/16-bit types, // so construct a 32-bit type and convert // and do not generate any conversion if it is an identity conversion, i.e. uint16_t( var) if (!intermediate.getArithemeticInt16Enabled() && (node->getBasicType() != EbtUint16)) { From 11290021b7c552a15cf0841a120951e268571ece Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 29 Jul 2024 18:57:02 -0400 Subject: [PATCH 542/594] ci: Add a list of known validation fails Add a Test/baseResults/validation_fails.txt file to track test results with known validation fails. This will hopefully make it easier to spot when new test results are added that have invalid SPIR-V. --- .github/workflows/continuous_integration.yml | 2 + Test/baseResults/validation_fails.txt | 71 ++++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 Test/baseResults/validation_fails.txt diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 8a5a34aef5..ab1acf9a67 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -43,6 +43,8 @@ jobs: run: ctest --output-on-failure --test-dir build - name: Test (standalone) run: cd Test && ./runtests + - name: Check known validation failure list + run: grep -l 'Validation failed' Test/baseResults/* | sort -fd | diff -u Test/baseResults/validation_fails.txt - linux-asan: runs-on: ubuntu-22.04 diff --git a/Test/baseResults/validation_fails.txt b/Test/baseResults/validation_fails.txt new file mode 100644 index 0000000000..1a3ca863f4 --- /dev/null +++ b/Test/baseResults/validation_fails.txt @@ -0,0 +1,71 @@ +Test/baseResults/hlsl.attributeC11.frag.out +Test/baseResults/hlsl.buffer.frag.out +Test/baseResults/hlsl.cbuffer-offsets.comp.out +Test/baseResults/hlsl.constantbuffer.frag.out +Test/baseResults/hlsl.constructimat.frag.out +Test/baseResults/hlsl.coverage.frag.out +Test/baseResults/hlsl.emptystructreturn.frag.out +Test/baseResults/hlsl.emptystructreturn.tesc.out +Test/baseResults/hlsl.emptystructreturn.vert.out +Test/baseResults/hlsl.gatherRGBA.offsetarray.dx10.frag.out +Test/baseResults/hlsl.gatherRGBA.offset.dx10.frag.out +Test/baseResults/hlsl.intrinsics.comp.out +Test/baseResults/hlsl.intrinsics.frag.out +Test/baseResults/hlsl.intrinsics.vert.out +Test/baseResults/hlsl.layout.frag.out +Test/baseResults/hlsl.matNx1.frag.out +Test/baseResults/hlsl.matrixSwizzle.vert.out +Test/baseResults/hlsl.matType.bool.frag.out +Test/baseResults/hlsl.matType.frag.out +Test/baseResults/hlsl.matType.int.frag.out +Test/baseResults/hlsl.partialInit.frag.out +Test/baseResults/hlsl.PointSize.geom.out +Test/baseResults/hlsl.samplecmp.array.dx10.frag.out +Test/baseResults/hlsl.samplecmp.basic.dx10.frag.out +Test/baseResults/hlsl.samplecmplevelzero.array.dx10.frag.out +Test/baseResults/hlsl.samplecmplevelzero.basic.dx10.frag.out +Test/baseResults/hlsl.samplecmplevelzero.offsetarray.dx10.frag.out +Test/baseResults/hlsl.samplecmplevelzero.offset.dx10.frag.out +Test/baseResults/hlsl.samplecmp.offsetarray.dx10.frag.out +Test/baseResults/hlsl.samplecmp.offset.dx10.frag.out +Test/baseResults/hlsl.semantic.geom.out +Test/baseResults/hlsl.semantic.vert.out +Test/baseResults/hlsl.structarray.flatten.frag.out +Test/baseResults/hlsl.structbuffer.append.fn.frag.out +Test/baseResults/hlsl.structbuffer.atomics.frag.out +Test/baseResults/hlsl.structbuffer.fn.frag.out +Test/baseResults/hlsl.struct.frag.out +Test/baseResults/hlsl.struct.split.assign.frag.out +Test/baseResults/hlsl.texture.struct.frag.out +Test/baseResults/hlsl.tristream-append.geom.out +Test/baseResults/iomap.crossStage.vk.2.vert.out +Test/baseResults/link.vk.differentPC.0.0.frag.out +Test/baseResults/link.vk.differentPC.1.0.frag.out +Test/baseResults/link.vk.pcNamingInvalid.0.0.vert.out +Test/baseResults/spv.130.frag.out +Test/baseResults/spv.140.frag.out +Test/baseResults/spv.1.4.load.bool.array.interface.block.frag.out +Test/baseResults/spv.400.frag.out +Test/baseResults/spv.430.vert.out +Test/baseResults/spv.450.tesc.out +Test/baseResults/spv.8bit-16bit-construction.frag.out +Test/baseResults/spv.AofA.frag.out +Test/baseResults/spv.controlFlowAttributes.frag.out +Test/baseResults/spv.dataOut.frag.out +Test/baseResults/spv.float16Fetch.frag.out +Test/baseResults/spv.float16.frag.out +Test/baseResults/spv.float64.frag.out +Test/baseResults/spv.floatFetch.frag.out +Test/baseResults/spv.functionNestedOpaque.vert.out +Test/baseResults/spv.imageAtomic64.frag.out +Test/baseResults/spv.image.frag.out +Test/baseResults/spv.int64.frag.out +Test/baseResults/spv.memoryQualifier.frag.out +Test/baseResults/spv.newTexture.frag.out +Test/baseResults/spv.paramMemory.420.frag.out +Test/baseResults/spv.paramMemory.frag.out +Test/baseResults/spv.queryL.frag.out +Test/baseResults/spv.separate.frag.out +Test/baseResults/spv.sparseTextureClamp.frag.out +Test/baseResults/spv.sparseTexture.frag.out +Test/baseResults/vk.relaxed.errorcheck.vert.out From e40c14a3e007fac0e4f2e4164fdf14d1712355bd Mon Sep 17 00:00:00 2001 From: Sergei Trofimovich Date: Fri, 2 Aug 2024 22:44:21 +0100 Subject: [PATCH 543/594] SPIRV/SpvBuilder.h: add missing include Without the change `glslang` build fails on upcoming `gcc-15` as: In file included from /build/source/SPIRV/GlslangToSpv.cpp:45: SPIRV/SpvBuilder.h:248:30: error: 'uint32_t' has not been declared 248 | Id makeDebugLexicalBlock(uint32_t line); | ^~~~~~~~ --- SPIRV/SpvBuilder.h | 1 + 1 file changed, 1 insertion(+) diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index f86dd81b3b..d688436a6e 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -56,6 +56,7 @@ namespace spv { } #include +#include #include #include #include From 71c24c1e4b4823cab0919bc062202a42ef6569e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 5 Aug 2024 06:56:12 +0000 Subject: [PATCH 544/594] Bump actions/upload-artifact from 4.3.4 to 4.3.5 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.4 to 4.3.5. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/0b2256b8c012f0828dc542b3febcab082c67f72b...89ef406dd8d7e03cfd12d9e0a4a378f454709029) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index f758cadf35..520893dc51 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@0b2256b8c012f0828dc542b3febcab082c67f72b # v4.3.4 + uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 with: name: SARIF file path: results.sarif From 31584ef79d1f8307fafc9f9022665320273417e6 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 30 Jul 2024 21:51:18 -0400 Subject: [PATCH 545/594] Clean up iomapper.h to make it suitable as a public API Remove the dependency on LiveTraverser.h, which transitively includes localintermediate.h. As a result, some things have been moved from iomapper.h to iomapper.cpp, specifically the TVarEntry type and the constructor and destructor of TGlslIoMapper. --- glslang/CInterface/glslang_c_interface.cpp | 2 + glslang/MachineIndependent/iomapper.cpp | 135 ++++++++++++++++++++- glslang/MachineIndependent/iomapper.h | 133 +------------------- gtests/GlslMapIO.FromFile.cpp | 1 + 4 files changed, 140 insertions(+), 131 deletions(-) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index a2eeab4d60..a7d08744c5 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -37,7 +37,9 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "glslang/Public/ShaderLang.h" #include "glslang/Include/ShHandle.h" +#include "glslang/Include/BaseTypes.h" #include "glslang/Include/ResourceLimits.h" +#include "glslang/Include/Types.h" #include "glslang/MachineIndependent/iomapper.h" #include "glslang/MachineIndependent/Versions.h" #include "glslang/MachineIndependent/localintermediate.h" diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index 5e94a9e8de..e49ca4b1c9 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -39,6 +39,7 @@ #include "gl_types.h" #include "iomapper.h" +#include "LiveTraverser.h" #include "SymbolTable.h" // @@ -60,6 +61,108 @@ namespace glslang { +struct TVarEntryInfo { + long long id; + TIntermSymbol* symbol; + bool live; + bool upgradedToPushConstant; + int newBinding; + int newSet; + int newLocation; + int newComponent; + int newIndex; + EShLanguage stage; + + void clearNewAssignments() { + upgradedToPushConstant = false; + newBinding = -1; + newSet = -1; + newLocation = -1; + newComponent = -1; + newIndex = -1; + } + + struct TOrderById { + inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { return l.id < r.id; } + }; + + struct TOrderByPriority { + // ordering: + // 1) has both binding and set + // 2) has binding but no set + // 3) has no binding but set + // 4) has no binding and no set + inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { + const TQualifier& lq = l.symbol->getQualifier(); + const TQualifier& rq = r.symbol->getQualifier(); + + // simple rules: + // has binding gives 2 points + // has set gives 1 point + // who has the most points is more important. + int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0); + int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0); + + if (lPoints == rPoints) + return l.id < r.id; + return lPoints > rPoints; + } + }; + + struct TOrderByPriorityAndLive { + // ordering: + // 1) do live variables first + // 2) has both binding and set + // 3) has binding but no set + // 4) has no binding but set + // 5) has no binding and no set + inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { + + const TQualifier& lq = l.symbol->getQualifier(); + const TQualifier& rq = r.symbol->getQualifier(); + + // simple rules: + // has binding gives 2 points + // has set gives 1 point + // who has the most points is more important. + int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0); + int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0); + + if (l.live != r.live) + return l.live > r.live; + + if (lPoints != rPoints) + return lPoints > rPoints; + + return l.id < r.id; + } + }; +}; + +// override function "operator=", if a vector being sort, +// when use vc++, the sort function will call : +// pair& operator=(const pair<_Other1, _Other2>& _Right) +// { +// first = _Right.first; +// second = _Right.second; +// return (*this); +// } +// that will make a const type handing on left. +// override this function can avoid a compiler error. +// In the future, if the vc++ compiler can handle such a situation, +// this part of the code will be removed. +struct TVarLivePair : std::pair { + TVarLivePair(const std::pair& _Right) : pair(_Right.first, _Right.second) {} + TVarLivePair& operator=(const TVarLivePair& _Right) { + const_cast(first) = _Right.first; + second = _Right.second; + return (*this); + } + TVarLivePair(const TVarLivePair& src) : pair(src) { } +}; +typedef std::vector TVarLiveVector; + + class TVarGatherTraverser : public TLiveTraverser { public: TVarGatherTraverser(const TIntermediate& i, bool traverseDeadCode, TVarLiveMap& inList, TVarLiveMap& outList, TVarLiveMap& uniformList) @@ -176,7 +279,7 @@ struct TNotifyInOutAdaptor { EShLanguage stage; TIoMapResolver& resolver; - inline TNotifyInOutAdaptor(EShLanguage s, TIoMapResolver& r) + inline TNotifyInOutAdaptor(EShLanguage s, TIoMapResolver& r) : stage(s) , resolver(r) { @@ -1497,6 +1600,36 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi return !hadError; } +TGlslIoMapper::TGlslIoMapper() { + memset(inVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); + memset(outVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); + memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); + memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1)); + profile = ENoProfile; + version = 0; + autoPushConstantMaxSize = 128; + autoPushConstantBlockPacking = ElpStd430; +} + +TGlslIoMapper::~TGlslIoMapper() { + for (size_t stage = 0; stage < EShLangCount; stage++) { + if (inVarMaps[stage] != nullptr) { + delete inVarMaps[stage]; + inVarMaps[stage] = nullptr; + } + if (outVarMaps[stage] != nullptr) { + delete outVarMaps[stage]; + outVarMaps[stage] = nullptr; + } + if (uniformVarMap[stage] != nullptr) { + delete uniformVarMap[stage]; + uniformVarMap[stage] = nullptr; + } + if (intermediates[stage] != nullptr) + intermediates[stage] = nullptr; + } +} + // Map I/O variables to provided offsets, and make bindings for // unbound but live variables. // diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 35babbce1b..484b0ecc1f 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -37,7 +37,6 @@ #define _IOMAPPER_INCLUDED #include -#include "LiveTraverser.h" #include #include // @@ -49,84 +48,7 @@ class TInfoSink; namespace glslang { class TIntermediate; -struct TVarEntryInfo { - long long id; - TIntermSymbol* symbol; - bool live; - bool upgradedToPushConstant; - int newBinding; - int newSet; - int newLocation; - int newComponent; - int newIndex; - EShLanguage stage; - - void clearNewAssignments() { - upgradedToPushConstant = false; - newBinding = -1; - newSet = -1; - newLocation = -1; - newComponent = -1; - newIndex = -1; - } - - struct TOrderById { - inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { return l.id < r.id; } - }; - - struct TOrderByPriority { - // ordering: - // 1) has both binding and set - // 2) has binding but no set - // 3) has no binding but set - // 4) has no binding and no set - inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { - const TQualifier& lq = l.symbol->getQualifier(); - const TQualifier& rq = r.symbol->getQualifier(); - - // simple rules: - // has binding gives 2 points - // has set gives 1 point - // who has the most points is more important. - int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0); - int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0); - - if (lPoints == rPoints) - return l.id < r.id; - return lPoints > rPoints; - } - }; - - struct TOrderByPriorityAndLive { - // ordering: - // 1) do live variables first - // 2) has both binding and set - // 3) has binding but no set - // 4) has no binding but set - // 5) has no binding and no set - inline bool operator()(const TVarEntryInfo& l, const TVarEntryInfo& r) { - - const TQualifier& lq = l.symbol->getQualifier(); - const TQualifier& rq = r.symbol->getQualifier(); - - // simple rules: - // has binding gives 2 points - // has set gives 1 point - // who has the most points is more important. - int lPoints = (lq.hasBinding() ? 2 : 0) + (lq.hasSet() ? 1 : 0); - int rPoints = (rq.hasBinding() ? 2 : 0) + (rq.hasSet() ? 1 : 0); - - if (l.live != r.live) - return l.live > r.live; - - if (lPoints != rPoints) - return lPoints > rPoints; - - return l.id < r.id; - } - }; -}; - +struct TVarEntryInfo; // Base class for shared TIoMapResolver services, used by several derivations. struct TDefaultIoResolverBase : public glslang::TIoMapResolver { public: @@ -267,29 +189,6 @@ struct TDefaultGlslIoResolver : public TDefaultIoResolverBase { typedef std::map TVarLiveMap; -// override function "operator=", if a vector being sort, -// when use vc++, the sort function will call : -// pair& operator=(const pair<_Other1, _Other2>& _Right) -// { -// first = _Right.first; -// second = _Right.second; -// return (*this); -// } -// that will make a const type handing on left. -// override this function can avoid a compiler error. -// In the future, if the vc++ compiler can handle such a situation, -// this part of the code will be removed. -struct TVarLivePair : std::pair { - TVarLivePair(const std::pair& _Right) : pair(_Right.first, _Right.second) {} - TVarLivePair& operator=(const TVarLivePair& _Right) { - const_cast(first) = _Right.first; - second = _Right.second; - return (*this); - } - TVarLivePair(const TVarLivePair& src) : pair(src) { } -}; -typedef std::vector TVarLiveVector; - // I/O mapper class TIoMapper { public: @@ -303,34 +202,8 @@ class TIoMapper { // I/O mapper for GLSL class TGlslIoMapper : public TIoMapper { public: - TGlslIoMapper() { - memset(inVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); - memset(outVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); - memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); - memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1)); - profile = ENoProfile; - version = 0; - autoPushConstantMaxSize = 128; - autoPushConstantBlockPacking = ElpStd430; - } - virtual ~TGlslIoMapper() { - for (size_t stage = 0; stage < EShLangCount; stage++) { - if (inVarMaps[stage] != nullptr) { - delete inVarMaps[stage]; - inVarMaps[stage] = nullptr; - } - if (outVarMaps[stage] != nullptr) { - delete outVarMaps[stage]; - outVarMaps[stage] = nullptr; - } - if (uniformVarMap[stage] != nullptr) { - delete uniformVarMap[stage]; - uniformVarMap[stage] = nullptr; - } - if (intermediates[stage] != nullptr) - intermediates[stage] = nullptr; - } - } + TGlslIoMapper(); + virtual ~TGlslIoMapper(); // If set, the uniform block with the given name will be changed to be backed by // push_constant if it's size is <= maxSize void setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) { diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp index 9c3c8be5a9..927dde048d 100644 --- a/gtests/GlslMapIO.FromFile.cpp +++ b/gtests/GlslMapIO.FromFile.cpp @@ -39,6 +39,7 @@ #include "TestFixture.h" +#include "glslang/MachineIndependent/localintermediate.h" #include "glslang/MachineIndependent/iomapper.h" #include "glslang/MachineIndependent/reflection.h" From b618604e776f0c9b4ecc71753f8522dbd0485a1b Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 2 Aug 2024 18:01:07 -0600 Subject: [PATCH 546/594] Add MachineIndependent/iomapper.h to the list of installed headers. --- glslang/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 8d4b1e9c7e..0385ce8efd 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -243,6 +243,7 @@ if(GLSLANG_ENABLE_INSTALL) Include/glslang_c_interface.h Include/glslang_c_shader_types.h Include/ResourceLimits.h + MachineIndependent/iomapper.h MachineIndependent/Versions.h) foreach(file ${PUBLIC_HEADERS}) From 015cb4ce5c6195f79ff673051e10366af9a264df Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 2 Aug 2024 18:19:50 -0600 Subject: [PATCH 547/594] Fix initialization of arrays in TGlslIoMapper The inVarMaps, outVarMaps, uniformVarMap, and intermediates arrays were being memset with a size 1 bigger than their actual size. They are now initialized correctly, which also allows making inVarMaps, outVarMaps, and uniformVarMap into private members. --- glslang/MachineIndependent/iomapper.cpp | 8 ++++---- glslang/MachineIndependent/iomapper.h | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/glslang/MachineIndependent/iomapper.cpp b/glslang/MachineIndependent/iomapper.cpp index e49ca4b1c9..3e7749d3a7 100644 --- a/glslang/MachineIndependent/iomapper.cpp +++ b/glslang/MachineIndependent/iomapper.cpp @@ -1601,10 +1601,10 @@ bool TIoMapper::addStage(EShLanguage stage, TIntermediate& intermediate, TInfoSi } TGlslIoMapper::TGlslIoMapper() { - memset(inVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); - memset(outVarMaps, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); - memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * (EShLangCount + 1)); - memset(intermediates, 0, sizeof(TIntermediate*) * (EShLangCount + 1)); + memset(inVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount); + memset(outVarMaps, 0, sizeof(TVarLiveMap*) * EShLangCount); + memset(uniformVarMap, 0, sizeof(TVarLiveMap*) * EShLangCount); + memset(intermediates, 0, sizeof(TIntermediate*) * EShLangCount); profile = ENoProfile; version = 0; autoPushConstantMaxSize = 128; diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 484b0ecc1f..ef73c27311 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -214,8 +214,6 @@ class TGlslIoMapper : public TIoMapper { // grow the reflection stage by stage bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override; bool doMap(TIoMapResolver*, TInfoSink&) override; - TVarLiveMap *inVarMaps[EShLangCount], *outVarMaps[EShLangCount], - *uniformVarMap[EShLangCount]; TIntermediate* intermediates[EShLangCount]; bool hadError = false; EProfile profile; @@ -225,6 +223,8 @@ class TGlslIoMapper : public TIoMapper { TString autoPushConstantBlockName; unsigned int autoPushConstantMaxSize; TLayoutPacking autoPushConstantBlockPacking; + TVarLiveMap *inVarMaps[EShLangCount], *outVarMaps[EShLangCount], + *uniformVarMap[EShLangCount]; }; } // end namespace glslang From 5398d55e33dff7d26fecdd2c35808add986c558c Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 6 Aug 2024 13:42:00 -0600 Subject: [PATCH 548/594] Remove execute permissions from source files. --- SPIRV/GlslangToSpv.cpp | 0 SPIRV/doc.cpp | 0 Test/baseResults/iomap.crossStage.vk.2.vert.out | 0 Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out | 0 Test/baseResults/spv.nullInit.comp.out | 0 Test/baseResults/spv.terminate.frag.out | 0 Test/baseResults/terminate.frag.out | 0 Test/baseResults/terminate.vert.out | 0 Test/baseResults/vk.relaxed.changeSet.vert.out | 0 Test/baseResults/vk.relaxed.stagelink.0.0.vert.out | 0 Test/iomap.crossStage.vk.2.frag | 0 Test/iomap.crossStage.vk.2.geom | 0 Test/iomap.crossStage.vk.2.vert | 0 Test/link.vk.inconsistentGLPerVertex.0.geom | 0 Test/link.vk.inconsistentGLPerVertex.0.vert | 0 Test/spv.ext.AnyHitShader.rahit | 0 Test/spv.ext.ClosestHitShader.rchit | 0 Test/vk.relaxed.changeSet.frag | 0 Test/vk.relaxed.changeSet.vert | 0 Test/vk.relaxed.stagelink.0.0.frag | 0 Test/vk.relaxed.stagelink.0.0.vert | 0 Test/vk.relaxed.stagelink.0.1.frag | 0 Test/vk.relaxed.stagelink.0.1.vert | 0 Test/vk.relaxed.stagelink.0.2.frag | 0 Test/vk.relaxed.stagelink.0.2.vert | 0 glslang/Include/BaseTypes.h | 0 glslang/MachineIndependent/Initialize.cpp | 0 glslang/MachineIndependent/Versions.h | 0 28 files changed, 0 insertions(+), 0 deletions(-) mode change 100755 => 100644 SPIRV/GlslangToSpv.cpp mode change 100755 => 100644 SPIRV/doc.cpp mode change 100755 => 100644 Test/baseResults/iomap.crossStage.vk.2.vert.out mode change 100755 => 100644 Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out mode change 100755 => 100644 Test/baseResults/spv.nullInit.comp.out mode change 100755 => 100644 Test/baseResults/spv.terminate.frag.out mode change 100755 => 100644 Test/baseResults/terminate.frag.out mode change 100755 => 100644 Test/baseResults/terminate.vert.out mode change 100755 => 100644 Test/baseResults/vk.relaxed.changeSet.vert.out mode change 100755 => 100644 Test/baseResults/vk.relaxed.stagelink.0.0.vert.out mode change 100755 => 100644 Test/iomap.crossStage.vk.2.frag mode change 100755 => 100644 Test/iomap.crossStage.vk.2.geom mode change 100755 => 100644 Test/iomap.crossStage.vk.2.vert mode change 100755 => 100644 Test/link.vk.inconsistentGLPerVertex.0.geom mode change 100755 => 100644 Test/link.vk.inconsistentGLPerVertex.0.vert mode change 100755 => 100644 Test/spv.ext.AnyHitShader.rahit mode change 100755 => 100644 Test/spv.ext.ClosestHitShader.rchit mode change 100755 => 100644 Test/vk.relaxed.changeSet.frag mode change 100755 => 100644 Test/vk.relaxed.changeSet.vert mode change 100755 => 100644 Test/vk.relaxed.stagelink.0.0.frag mode change 100755 => 100644 Test/vk.relaxed.stagelink.0.0.vert mode change 100755 => 100644 Test/vk.relaxed.stagelink.0.1.frag mode change 100755 => 100644 Test/vk.relaxed.stagelink.0.1.vert mode change 100755 => 100644 Test/vk.relaxed.stagelink.0.2.frag mode change 100755 => 100644 Test/vk.relaxed.stagelink.0.2.vert mode change 100755 => 100644 glslang/Include/BaseTypes.h mode change 100755 => 100644 glslang/MachineIndependent/Initialize.cpp mode change 100755 => 100644 glslang/MachineIndependent/Versions.h diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp old mode 100755 new mode 100644 diff --git a/SPIRV/doc.cpp b/SPIRV/doc.cpp old mode 100755 new mode 100644 diff --git a/Test/baseResults/iomap.crossStage.vk.2.vert.out b/Test/baseResults/iomap.crossStage.vk.2.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out b/Test/baseResults/link.vk.inconsistentGLPerVertex.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.nullInit.comp.out b/Test/baseResults/spv.nullInit.comp.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/spv.terminate.frag.out b/Test/baseResults/spv.terminate.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/terminate.frag.out b/Test/baseResults/terminate.frag.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/terminate.vert.out b/Test/baseResults/terminate.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/vk.relaxed.changeSet.vert.out b/Test/baseResults/vk.relaxed.changeSet.vert.out old mode 100755 new mode 100644 diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out old mode 100755 new mode 100644 diff --git a/Test/iomap.crossStage.vk.2.frag b/Test/iomap.crossStage.vk.2.frag old mode 100755 new mode 100644 diff --git a/Test/iomap.crossStage.vk.2.geom b/Test/iomap.crossStage.vk.2.geom old mode 100755 new mode 100644 diff --git a/Test/iomap.crossStage.vk.2.vert b/Test/iomap.crossStage.vk.2.vert old mode 100755 new mode 100644 diff --git a/Test/link.vk.inconsistentGLPerVertex.0.geom b/Test/link.vk.inconsistentGLPerVertex.0.geom old mode 100755 new mode 100644 diff --git a/Test/link.vk.inconsistentGLPerVertex.0.vert b/Test/link.vk.inconsistentGLPerVertex.0.vert old mode 100755 new mode 100644 diff --git a/Test/spv.ext.AnyHitShader.rahit b/Test/spv.ext.AnyHitShader.rahit old mode 100755 new mode 100644 diff --git a/Test/spv.ext.ClosestHitShader.rchit b/Test/spv.ext.ClosestHitShader.rchit old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.changeSet.frag b/Test/vk.relaxed.changeSet.frag old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.changeSet.vert b/Test/vk.relaxed.changeSet.vert old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.stagelink.0.0.frag b/Test/vk.relaxed.stagelink.0.0.frag old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.stagelink.0.0.vert b/Test/vk.relaxed.stagelink.0.0.vert old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.stagelink.0.1.frag b/Test/vk.relaxed.stagelink.0.1.frag old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.stagelink.0.1.vert b/Test/vk.relaxed.stagelink.0.1.vert old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.stagelink.0.2.frag b/Test/vk.relaxed.stagelink.0.2.frag old mode 100755 new mode 100644 diff --git a/Test/vk.relaxed.stagelink.0.2.vert b/Test/vk.relaxed.stagelink.0.2.vert old mode 100755 new mode 100644 diff --git a/glslang/Include/BaseTypes.h b/glslang/Include/BaseTypes.h old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/Initialize.cpp b/glslang/MachineIndependent/Initialize.cpp old mode 100755 new mode 100644 diff --git a/glslang/MachineIndependent/Versions.h b/glslang/MachineIndependent/Versions.h old mode 100755 new mode 100644 From 7c4d91e7819a1d27213aa3499953d54ae1a00e8f Mon Sep 17 00:00:00 2001 From: dTry <92609548+D7ry@users.noreply.github.com> Date: Thu, 8 Aug 2024 07:21:00 -0700 Subject: [PATCH 549/594] Add type checks for hitObjectNV (#3689) `VK_NV_ray_tracing_invocation_reorder` extension introduces `hitObjectNV`, a special opaque type that can only be declared without storage qualifiers in either global or function scope. Added checks/tests to enforce this constraint. References: https://registry.khronos.org/vulkan/specs/1.3-extensions/man/html/VK_NV_ray_tracing_invocation_reorder.html https://github.com/KhronosGroup/GLSL/blob/3e0d9a3b3f54651ef53d533392a7401a3b19e16d/extensions/nv/GLSL_NV_shader_invocation_reorder.txt#L180 Co-authored-by: Tianyun --- .../spv.nv.hitobject-errors.rgen.out | 9 +++++++ Test/spv.nv.hitobject-errors.rgen | 24 +++++++++++++++++++ glslang/MachineIndependent/ParseHelper.cpp | 13 ++++++++++ glslang/MachineIndependent/ParseHelper.h | 1 + gtests/Spv.FromFile.cpp | 1 + 5 files changed, 48 insertions(+) create mode 100644 Test/baseResults/spv.nv.hitobject-errors.rgen.out create mode 100644 Test/spv.nv.hitobject-errors.rgen diff --git a/Test/baseResults/spv.nv.hitobject-errors.rgen.out b/Test/baseResults/spv.nv.hitobject-errors.rgen.out new file mode 100644 index 0000000000..1394827529 --- /dev/null +++ b/Test/baseResults/spv.nv.hitobject-errors.rgen.out @@ -0,0 +1,9 @@ +spv.nv.hitobject-errors.rgen +ERROR: 0:7: 'hitObjectNV' : hitObjectNV can only be declared in global or function scope with no storage qualifier: uHitObj +ERROR: 0:9: 'hitObjectNV' : hitObjectNV can only be declared in global or function scope with no storage qualifier: hobjIn +ERROR: 0:10: 'hitObjectNV' : hitObjectNV can only be declared in global or function scope with no storage qualifier: hobjOut +ERROR: 0:21: 'hObjWrapper' : struct is not allowed to contain hitObjectNV: wrapper +ERROR: 4 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/spv.nv.hitobject-errors.rgen b/Test/spv.nv.hitobject-errors.rgen new file mode 100644 index 0000000000..9744ccf4c7 --- /dev/null +++ b/Test/spv.nv.hitobject-errors.rgen @@ -0,0 +1,24 @@ +#version 460 +#extension GL_EXT_ray_tracing : enable +#extension GL_NV_shader_invocation_reorder : enable + + +hitObjectNV hObjGlob; // OK +uniform hitObjectNV uHitObj; // ERROR + +layout(location=0) in hitObjectNV hobjIn; // ERROR +out hitObjectNV hobjOut; // ERROR + +struct hObjWrapper{ + hitObjectNV objField; + vec3 v; +}; + +void foo(hitObjectNV hObjArg) {} // OK + +void main() +{ + hObjWrapper wrapper; // ERROR + hitObjectNV localHitObj; // OK + foo(localHitObj); // OK +} diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index 724e4cde56..e6c97a26fc 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -3936,6 +3936,18 @@ void TParseContext::accStructCheck(const TSourceLoc& loc, const TType& type, con } +void TParseContext::hitObjectNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier) +{ + if (type.getBasicType() == EbtStruct && containsFieldWithBasicType(type, EbtHitObjectNV)) { + error(loc, "struct is not allowed to contain hitObjectNV:", type.getTypeName().c_str(), identifier.c_str()); + } else if (type.getBasicType() == EbtHitObjectNV) { + TStorageQualifier qualifier = type.getQualifier().storage; + if (qualifier != EvqGlobal && qualifier != EvqTemporary) { + error(loc, "hitObjectNV can only be declared in global or function scope with no storage qualifier:", "hitObjectNV", identifier.c_str()); + } + } +} + void TParseContext::transparentOpaqueCheck(const TSourceLoc& loc, const TType& type, const TString& identifier) { if (parsingBuiltins) @@ -7875,6 +7887,7 @@ TIntermNode* TParseContext::declareVariable(const TSourceLoc& loc, TString& iden transparentOpaqueCheck(loc, type, identifier); atomicUintCheck(loc, type, identifier); accStructCheck(loc, type, identifier); + hitObjectNVCheck(loc, type, identifier); checkAndResizeMeshViewDim(loc, type, /*isBlockMember*/ false); if (type.getQualifier().storage == EvqConst && type.containsReference()) { error(loc, "variables with reference type can't have qualifier 'const'", "qualifier", ""); diff --git a/glslang/MachineIndependent/ParseHelper.h b/glslang/MachineIndependent/ParseHelper.h index 16902aefeb..67ba7dbd1a 100644 --- a/glslang/MachineIndependent/ParseHelper.h +++ b/glslang/MachineIndependent/ParseHelper.h @@ -397,6 +397,7 @@ class TParseContext : public TParseContextBase { void samplerCheck(const TSourceLoc&, const TType&, const TString& identifier, TIntermTyped* initializer); void atomicUintCheck(const TSourceLoc&, const TType&, const TString& identifier); void accStructCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); + void hitObjectNVCheck(const TSourceLoc & loc, const TType & type, const TString & identifier); void transparentOpaqueCheck(const TSourceLoc&, const TType&, const TString& identifier); void memberQualifierCheck(glslang::TPublicType&); void globalQualifierFixCheck(const TSourceLoc&, TQualifier&, bool isMemberCheck = false, const TPublicType* publicType = nullptr); diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 21f12d0205..4f820c162b 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -710,6 +710,7 @@ INSTANTIATE_TEST_SUITE_P( // SPV_NV_shader_execution_reorder + "spv.nv.hitobject-errors.rgen", "spv.nv.hitobject-allops.rgen", "spv.nv.hitobject-allops.rchit", "spv.nv.hitobject-allops.rmiss", From 3ba8cad6ed679ed3e75f4dc5fe7ab5a580377a67 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 9 Aug 2024 15:26:47 -0600 Subject: [PATCH 550/594] Add setSourceFile and addSourceText to TShader These are now accessible through the C++ ShaderLang.h public API as well as the C API. --- glslang/MachineIndependent/ShaderLang.cpp | 3 +++ glslang/Public/ShaderLang.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 32ca9925f8..66e2166363 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1858,6 +1858,9 @@ void TShader::setGlobalUniformBinding(unsigned int binding) { intermediate->setG void TShader::setAtomicCounterBlockName(const char* name) { intermediate->setAtomicCounterBlockName(name); } void TShader::setAtomicCounterBlockSet(unsigned int set) { intermediate->setAtomicCounterBlockSet(set); } +void TShader::addSourceText(const char* text, size_t len) { intermediate->addSourceText(text, len); } +void TShader::setSourceFile(const char* file) { intermediate->setSourceFile(file); } + #ifdef ENABLE_HLSL // See comment above TDefaultHlslIoMapper in iomapper.cpp: void TShader::setHlslIoMapping(bool hlslIoMap) { intermediate->setHlslIoMapping(hlslIoMap); } diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index eac81b1470..9e8398c8e8 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -510,6 +510,9 @@ class TShader { GLSLANG_EXPORT void setAtomicCounterBlockSet(unsigned int set); GLSLANG_EXPORT void setAtomicCounterBlockBinding(unsigned int binding); + GLSLANG_EXPORT void addSourceText(const char* text, size_t len); + GLSLANG_EXPORT void setSourceFile(const char* file); + // For setting up the environment (cleared to nothingness in the constructor). // These must be called so that parsing is done for the right source language and // target environment, either indirectly through TranslateEnvironment() based on From 2bd13a7166ceb972d57c46b68a13dfad1f33a579 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 06:55:42 +0000 Subject: [PATCH 551/594] Bump hendrikmuhs/ccache-action from 1.2.13 to 1.2.14 Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.13 to 1.2.14. - [Release notes](https://github.com/hendrikmuhs/ccache-action/releases) - [Commits](https://github.com/hendrikmuhs/ccache-action/compare/c92f40bee50034e84c763e33b317c77adaa81c92...ed74d11c0b343532753ecead8a951bb09bb34bc9) --- updated-dependencies: - dependency-name: hendrikmuhs/ccache-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_integration.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index ab1acf9a67..510f6413e2 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -23,7 +23,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 + uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} - run: ./update_glslang_sources.py @@ -61,7 +61,7 @@ jobs: with: python-version: '3.7' - name: Setup ccache - uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 + uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}}-${{matrix.flags}} # This is to combat a bug when using 6.6 linux kernels with thread/address sanitizer @@ -105,7 +105,7 @@ jobs: with: cmakeVersion: 3.17.2 - name: Setup ccache - uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 + uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: key: linux_backcompat - run: ./update_glslang_sources.py @@ -177,7 +177,7 @@ jobs: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 + uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: key: IOS - run: ./update_glslang_sources.py @@ -206,7 +206,7 @@ jobs: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 + uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: key: android-${{ matrix.LEGACY }} - run: ./update_glslang_sources.py @@ -232,7 +232,7 @@ jobs: python-version: '3.7' - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 - name: Setup ccache - uses: hendrikmuhs/ccache-action@c92f40bee50034e84c763e33b317c77adaa81c92 # v1.2.13 + uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: key: ubuntu-emscripten - uses: mymindstorm/setup-emsdk@6ab9eb1bda2574c4ddb79809fc9247783eaf9021 # v14 From badd6dacf206998a3ec44699f80cebf70e233a92 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 06:55:50 +0000 Subject: [PATCH 552/594] Bump github/codeql-action from 3.25.15 to 3.26.0 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.25.15 to 3.26.0. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/afb54ba388a7dca6ecae48f608c4ff05ff4cc77a...eb055d739abdc2e8de2e5f4ba1a8b246daa779aa) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 520893dc51..078feca1f3 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@afb54ba388a7dca6ecae48f608c4ff05ff4cc77a # v3.25.15 + uses: github/codeql-action/upload-sarif@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 with: sarif_file: results.sarif From 3a08cd8de1f88d114c18670366f29226db453a9e Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 12 Aug 2024 15:09:49 +0000 Subject: [PATCH 553/594] Bump lukka/get-cmake from 3.30.1 to 3.30.2 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.30.1 to 3.30.2. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/34181361be075620f7c3871daa1cadb92d9a903e...a70f1cfa1857a3eecfe0d34962269e1b1e8be56c) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index ebba7a7ab1..b36bd66e5d 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 510f6413e2..f388a628a8 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -56,7 +56,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread', '-fsanitize=undefined'] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -101,7 +101,7 @@ jobs: - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -133,7 +133,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -157,7 +157,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -175,7 +175,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: @@ -204,7 +204,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: @@ -230,7 +230,7 @@ jobs: - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - - uses: lukka/get-cmake@34181361be075620f7c3871daa1cadb92d9a903e # v3.30.1 + - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: From 0dc6711e5a178e4d5643437af688c6b48f829f5c Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 13 Aug 2024 19:08:29 -0400 Subject: [PATCH 554/594] ci: Get rid of redundant testing It's not necessary to run the runtest tests separately, as they're already being run by the ctest testing process (as glslang-testsuite). --- .github/workflows/continuous_integration.yml | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index f388a628a8..d138553da0 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -41,8 +41,6 @@ jobs: run: cmake --install build --prefix build/install - name: Test run: ctest --output-on-failure --test-dir build - - name: Test (standalone) - run: cd Test && ./runtests - name: Check known validation failure list run: grep -l 'Validation failed' Test/baseResults/* | sort -fd | diff -u Test/baseResults/validation_fails.txt - @@ -87,10 +85,6 @@ jobs: env: UBSAN_OPTIONS: 'halt_on_error=1:print_stacktrace=1' run: ctest --output-on-failure --test-dir build - - name: Test (standalone) - env: - UBSAN_OPTIONS: halt_on_error=1:print_stacktrace=1 - run: cd Test && ./runtests # Ensure we can compile/run on an older distro linux_min: @@ -120,8 +114,6 @@ jobs: run: cmake --install build --prefix build/install - name: Test run: ctest --output-on-failure --test-dir build - - name: Test (standalone) - run: cd Test && ./runtests macos: runs-on: ${{matrix.os}} @@ -142,9 +134,6 @@ jobs: - run: cmake --build build - run: cmake --install build --prefix build/install - run: ctest --output-on-failure --test-dir build - - name: Test Script (standalone) - run: ./runtests - working-directory: Test windows: runs-on: ${{matrix.os.genus}} @@ -168,8 +157,6 @@ jobs: cmake --build build --config ${{matrix.cmake_build_type}} --target install - name: Test run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build - - name: Test (standalone) - run: bash -c 'cd ./Test && ./runtests' iOS: runs-on: macos-13 From 4f01996c9df0e2edb8823a8260066467c828a341 Mon Sep 17 00:00:00 2001 From: Daniel Story Date: Wed, 24 Jul 2024 17:37:47 -0700 Subject: [PATCH 555/594] Merge ancillary libraries into main glslang library and stub originals --- Android.mk | 43 +++++++------- CMakeLists.txt | 9 ++- README.md | 8 ++- SPIRV/CMakeLists.txt | 66 +++++++++++----------- StandAlone/CMakeLists.txt | 22 ++++---- StandAlone/StandAlone.cpp | 18 +++++- glslang/CMakeLists.txt | 37 ++++++++---- glslang/OSDependent/Unix/CMakeLists.txt | 15 +++-- glslang/OSDependent/Web/CMakeLists.txt | 2 +- glslang/OSDependent/Windows/CMakeLists.txt | 14 +++-- glslang/stub.cpp | 37 ++++++++++++ gtests/CMakeLists.txt | 3 +- ndk_test/Android.mk | 2 +- 13 files changed, 181 insertions(+), 95 deletions(-) create mode 100644 glslang/stub.cpp diff --git a/Android.mk b/Android.mk index dcb9958440..7adce09cf7 100644 --- a/Android.mk +++ b/Android.mk @@ -59,9 +59,8 @@ include $(CLEAR_VARS) LOCAL_MODULE:=OSDependent LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) -LOCAL_SRC_FILES:=glslang/OSDependent/Unix/ossource.cpp -LOCAL_C_INCLUDES:=$(LOCAL_PATH) $(LOCAL_PATH)/glslang/OSDependent/Unix/ -LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/glslang/OSDependent/Unix/ +LOCAL_SRC_FILES:=glslang/stub.cpp +LOCAL_C_INCLUDES:=$(LOCAL_PATH) include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) @@ -73,7 +72,8 @@ $(LOCAL_PATH)/glslang/MachineIndependent/ShaderLang.cpp: \ LOCAL_MODULE:=glslang LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti $(GLSLANG_DEFINES) -LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) +LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) \ + $(LOCAL_PATH)/glslang/OSDependent/Unix LOCAL_SRC_FILES:= \ glslang/CInterface/glslang_c_interface.cpp \ glslang/GenericCodeGen/CodeGen.cpp \ @@ -112,12 +112,24 @@ LOCAL_SRC_FILES:= \ glslang/MachineIndependent/preprocessor/PpContext.cpp \ glslang/MachineIndependent/preprocessor/Pp.cpp \ glslang/MachineIndependent/preprocessor/PpScanner.cpp \ - glslang/MachineIndependent/preprocessor/PpTokens.cpp + glslang/MachineIndependent/preprocessor/PpTokens.cpp \ + glslang/OSDependent/Unix/ossource.cpp + SPIRV/CInterface/spirv_c_interface.cpp \ + SPIRV/GlslangToSpv.cpp \ + SPIRV/InReadableOrder.cpp \ + SPIRV/Logger.cpp \ + SPIRV/SPVRemapper.cpp \ + SPIRV/SpvBuilder.cpp \ + SPIRV/SpvPostProcess.cpp \ + SPIRV/SpvTools.cpp \ + SPIRV/disassemble.cpp \ + SPIRV/doc.cpp LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ $(LOCAL_PATH)/glslang/MachineIndependent \ + $(LOCAL_PATH)/glslang/OSDependent/Unix \ + $(LOCAL_PATH)/SPIRV \ $(GLSLANG_GENERATED_INCLUDEDIR) \ $(GLSLANG_OUT_PATH) -LOCAL_STATIC_LIBRARIES:=OSDependent include $(BUILD_STATIC_LIBRARY) include $(CLEAR_VARS) @@ -128,20 +140,7 @@ $(LOCAL_PATH)/SPIRV/GlslangToSpv.cpp: \ LOCAL_MODULE:=SPIRV LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror $(GLSLANG_DEFINES) -LOCAL_SRC_FILES:= \ - SPIRV/CInterface/spirv_c_interface.cpp \ - SPIRV/GlslangToSpv.cpp \ - SPIRV/InReadableOrder.cpp \ - SPIRV/Logger.cpp \ - SPIRV/SPVRemapper.cpp \ - SPIRV/SpvBuilder.cpp \ - SPIRV/SpvPostProcess.cpp \ - SPIRV/SpvTools.cpp \ - SPIRV/disassemble.cpp \ - SPIRV/doc.cpp -LOCAL_C_INCLUDES:=$(LOCAL_PATH) \ - $(LOCAL_PATH)/glslang/SPIRV \ - $(GLSLANG_GENERATED_INCLUDEDIR) -LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH)/glslang/SPIRV -LOCAL_STATIC_LIBRARIES:=glslang +LOCAL_SRC_FILES:=glslang/stub.cpp +LOCAL_C_INCLUDES:=$(LOCAL_PATH) +LOCAL_EXPORT_C_INCLUDES:=$(LOCAL_PATH) include $(BUILD_STATIC_LIBRARY) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1f1680cf05..e821620586 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -97,6 +97,7 @@ option(GLSLANG_TESTS "Enable glslang testing" ${GLSLANG_TESTS_DEFAULT}) # Always expose this as an option, so the defaults can be overridden. option(GLSLANG_ENABLE_INSTALL "Enable glslang installation" ${GLSLANG_ENABLE_INSTALL_DEFAULT}) +option(ENABLE_SPIRV "Enables SPIRV output support" ON) option(ENABLE_SPVREMAPPER "Enables building of SPVRemapper" ON) option(ENABLE_GLSLANG_BINARIES "Builds glslang and spirv-remap" ON) @@ -125,6 +126,10 @@ endif() option(ENABLE_PCH "Enables Precompiled header" ON) +if(ENABLE_SPIRV) + add_compile_definitions(ENABLE_SPIRV) +endif() + if(ENABLE_HLSL) add_compile_definitions(ENABLE_HLSL) endif() @@ -313,11 +318,13 @@ else() add_definitions(-DENABLE_OPT=0) endif() +if(ENABLE_SPIRV) + add_subdirectory(SPIRV) +endif() add_subdirectory(glslang) if(ENABLE_GLSLANG_BINARIES) add_subdirectory(StandAlone) endif() -add_subdirectory(SPIRV) if(GLSLANG_TESTS) enable_testing() diff --git a/README.md b/README.md index cac2352b2c..e7a84fe154 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,13 @@ # News -1. `OGLCompiler` and `HLSL` stub libraries have been fully removed from the build. +1. The `GenericCodeGen`, `MachineIndependent`, `OSDependent`, and `SPIRV` libraries have been integrated into the main `glslang` library. The old separate libraries have replaced with empty stubs for a temporary compatibility period, and they will be removed entirely in the future. -2. `OVERRIDE_MSVCCRT` has been removed in favor of `CMAKE_MSVC_RUNTIME_LIBRARY` +2. A new CMake `ENABLE_SPIRV` option has been added to control whether glslang is built with SPIR-V support. Its default value is `ON`. + +3. `OGLCompiler` and `HLSL` stub libraries have been fully removed from the build. + +4. `OVERRIDE_MSVCCRT` has been removed in favor of `CMAKE_MSVC_RUNTIME_LIBRARY` Users are encouraged to utilize the standard approach via [CMAKE_MSVC_RUNTIME_LIBRARY](https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html). diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 5e52b38d93..fe1d07beca 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -31,41 +31,43 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -set(SOURCES - GlslangToSpv.cpp - InReadableOrder.cpp - Logger.cpp - SpvBuilder.cpp - SpvPostProcess.cpp - doc.cpp - SpvTools.cpp - disassemble.cpp - CInterface/spirv_c_interface.cpp) +set(SPIRV_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/GlslangToSpv.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/InReadableOrder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/Logger.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/SpvBuilder.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/SpvPostProcess.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/doc.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/SpvTools.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/disassemble.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/CInterface/spirv_c_interface.cpp + PARENT_SCOPE) set(SPVREMAP_SOURCES SPVRemapper.cpp doc.cpp) -set(HEADERS - bitutils.h - spirv.hpp - GLSL.std.450.h - GLSL.ext.EXT.h - GLSL.ext.KHR.h - GlslangToSpv.h - hex_float.h - Logger.h - SpvBuilder.h - spvIR.h - doc.h - SpvTools.h - disassemble.h - GLSL.ext.AMD.h - GLSL.ext.NV.h - GLSL.ext.ARM.h - GLSL.ext.QCOM.h - NonSemanticDebugPrintf.h - NonSemanticShaderDebugInfo100.h) +set(SPIRV_HEADERS + ${CMAKE_CURRENT_SOURCE_DIR}/bitutils.h + ${CMAKE_CURRENT_SOURCE_DIR}/spirv.hpp + ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.std.450.h + ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.EXT.h + ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.KHR.h + ${CMAKE_CURRENT_SOURCE_DIR}/GlslangToSpv.h + ${CMAKE_CURRENT_SOURCE_DIR}/hex_float.h + ${CMAKE_CURRENT_SOURCE_DIR}/Logger.h + ${CMAKE_CURRENT_SOURCE_DIR}/SpvBuilder.h + ${CMAKE_CURRENT_SOURCE_DIR}/spvIR.h + ${CMAKE_CURRENT_SOURCE_DIR}/doc.h + ${CMAKE_CURRENT_SOURCE_DIR}/SpvTools.h + ${CMAKE_CURRENT_SOURCE_DIR}/disassemble.h + ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.AMD.h + ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.NV.h + ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.ARM.h + ${CMAKE_CURRENT_SOURCE_DIR}/GLSL.ext.QCOM.h + ${CMAKE_CURRENT_SOURCE_DIR}/NonSemanticDebugPrintf.h + ${CMAKE_CURRENT_SOURCE_DIR}/NonSemanticShaderDebugInfo100.h + PARENT_SCOPE) set(SPVREMAP_HEADERS SPVRemapper.h @@ -79,7 +81,7 @@ set(PUBLIC_HEADERS SPVRemapper.h SpvTools.h) -add_library(SPIRV ${LIB_TYPE} ${SOURCES} ${HEADERS}) +add_library(SPIRV ${LIB_TYPE} ${CMAKE_CURRENT_SOURCE_DIR}/../glslang/stub.cpp) add_library(glslang::SPIRV ALIAS SPIRV) set_target_properties(SPIRV PROPERTIES FOLDER glslang @@ -90,8 +92,6 @@ target_include_directories(SPIRV PUBLIC $ $) -glslang_add_build_info_dependency(SPIRV) - if (ENABLE_SPVREMAPPER) add_library(SPVRemapper ${LIB_TYPE} ${SPVREMAP_SOURCES} ${SPVREMAP_HEADERS}) add_library(glslang::SPVRemapper ALIAS SPVRemapper) diff --git a/StandAlone/CMakeLists.txt b/StandAlone/CMakeLists.txt index 9ecdcd2356..30e8d03028 100644 --- a/StandAlone/CMakeLists.txt +++ b/StandAlone/CMakeLists.txt @@ -59,8 +59,6 @@ glslang_set_link_args(glslang-standalone) set(LIBRARIES glslang - OSDependent - SPIRV glslang-default-resource-limits) if(WIN32) @@ -75,12 +73,14 @@ target_link_libraries(glslang-standalone ${LIBRARIES}) target_include_directories(glslang-standalone PUBLIC $) -if(ENABLE_SPVREMAPPER) - set(REMAPPER_SOURCES spirv-remap.cpp) - add_executable(spirv-remap ${REMAPPER_SOURCES}) - set_property(TARGET spirv-remap PROPERTY FOLDER tools) - glslang_set_link_args(spirv-remap) - target_link_libraries(spirv-remap SPVRemapper ${LIBRARIES}) +if(ENABLE_SPIRV) + if(ENABLE_SPVREMAPPER) + set(REMAPPER_SOURCES spirv-remap.cpp) + add_executable(spirv-remap ${REMAPPER_SOURCES}) + set_property(TARGET spirv-remap PROPERTY FOLDER tools) + glslang_set_link_args(spirv-remap) + target_link_libraries(spirv-remap SPVRemapper ${LIBRARIES}) + endif() endif() if(WIN32) @@ -113,7 +113,9 @@ if(GLSLANG_ENABLE_INSTALL) ) ") - if(ENABLE_SPVREMAPPER) - install(TARGETS spirv-remap EXPORT glslang-targets) + if(ENABLE_SPIRV) + if(ENABLE_SPVREMAPPER) + install(TARGETS spirv-remap EXPORT glslang-targets) + endif() endif() endif(GLSLANG_ENABLE_INSTALL) diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 94851ba35a..bd1800110c 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1509,6 +1509,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) std::vector outputFiles; +#ifdef ENABLE_SPIRV // Dump SPIR-V if (Options & EOptionSpv) { CompileOrLinkFailed.fetch_or(CompileFailed); @@ -1571,6 +1572,7 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } } } +#endif CompileOrLinkFailed.fetch_or(CompileFailed); CompileOrLinkFailed.fetch_or(LinkFailed); @@ -1669,21 +1671,31 @@ int singleMain() } if (Options & EOptionDumpBareVersion) { - printf("%d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR, + int spirvGeneratorVersion = 0; +#ifdef ENABLE_SPIRV + spirvGeneratorVersion = glslang::GetSpirvGeneratorVersion(); +#endif + printf("%d:%d.%d.%d%s\n", spirvGeneratorVersion, GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR, GLSLANG_VERSION_PATCH, GLSLANG_VERSION_FLAVOR); if (workList.empty()) return ESuccess; } else if (Options & EOptionDumpVersions) { - printf("Glslang Version: %d:%d.%d.%d%s\n", glslang::GetSpirvGeneratorVersion(), GLSLANG_VERSION_MAJOR, + int spirvGeneratorVersion = 0; +#ifdef ENABLE_SPIRV + spirvGeneratorVersion = glslang::GetSpirvGeneratorVersion(); +#endif + printf("Glslang Version: %d:%d.%d.%d%s\n", spirvGeneratorVersion, GLSLANG_VERSION_MAJOR, GLSLANG_VERSION_MINOR, GLSLANG_VERSION_PATCH, GLSLANG_VERSION_FLAVOR); printf("ESSL Version: %s\n", glslang::GetEsslVersionString()); printf("GLSL Version: %s\n", glslang::GetGlslVersionString()); std::string spirvVersion; +#if ENABLE_SPIRV glslang::GetSpirvVersion(spirvVersion); +#endif printf("SPIR-V Version %s\n", spirvVersion.c_str()); printf("GLSL.std.450 Version %d, Revision %d\n", GLSLstd450Version, GLSLstd450Revision); printf("Khronos Tool ID %d\n", glslang::GetKhronosToolId()); - printf("SPIR-V Generator Version %d\n", glslang::GetSpirvGeneratorVersion()); + printf("SPIR-V Generator Version %d\n", spirvGeneratorVersion); printf("GL_KHR_vulkan_glsl version %d\n", 100); printf("ARB_GL_gl_spirv version %d\n", 100); if (workList.empty()) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 0385ce8efd..7fc0d87a4f 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -47,9 +47,12 @@ endif() ################################################################################ # GenericCodeGen ################################################################################ -add_library(GenericCodeGen STATIC +set(GENERICCODEGEN_SOURCES GenericCodeGen/CodeGen.cpp GenericCodeGen/Link.cpp) + +add_library(GenericCodeGen STATIC + stub.cpp) set_property(TARGET GenericCodeGen PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET GenericCodeGen PROPERTY FOLDER glslang) @@ -130,7 +133,7 @@ if(ENABLE_HLSL) HLSL/hlslParseables.h) endif() -add_library(MachineIndependent STATIC ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS}) +add_library(MachineIndependent STATIC stub.cpp) set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET MachineIndependent PROPERTY FOLDER glslang) @@ -139,12 +142,6 @@ if (NOT MSVC) set_source_files_properties(MachineIndependent/glslang_tab.cpp PROPERTIES COMPILE_FLAGS -Wno-unused-but-set-variable) endif() -glslang_add_build_info_dependency(MachineIndependent) - -glslang_pch(MachineIndependent MachineIndependent/pch.h) - -target_link_libraries(MachineIndependent PRIVATE OSDependent GenericCodeGen) - ################################################################################ # glslang ################################################################################ @@ -168,26 +165,42 @@ set(GLSLANG_HEADERS Include/SpirvIntrinsics.h Include/Types.h) -add_library(glslang ${LIB_TYPE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS}) +add_library(glslang ${LIB_TYPE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS} ${GENERICCODEGEN_SOURCES} ${GENERICCODEGEN_HEADERS} ${OSDEPENDENT_SOURCES} ${OSDEPENDENT_HEADERS} ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS} ${SPIRV_SOURCES} ${SPIRV_HEADERS}) add_library(glslang::glslang ALIAS glslang) set_target_properties(glslang PROPERTIES FOLDER glslang POSITION_INDEPENDENT_CODE ON VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") -target_link_libraries(glslang PRIVATE OSDependent MachineIndependent) target_include_directories(glslang PUBLIC $ $) glslang_add_build_info_dependency(glslang) +glslang_pch(glslang MachineIndependent/pch.h) + glslang_only_export_explicit_symbols(glslang) if(WIN32 AND BUILD_SHARED_LIBS) set_target_properties(glslang PROPERTIES PREFIX "") endif() +if(ENABLE_SPIRV) + if(ENABLE_OPT) + target_include_directories(glslang PUBLIC + $) + target_link_libraries(glslang SPIRV-Tools-opt) + endif() +endif() + +# Link pthread +if(UNIX OR "${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia" OR ANDROID) + set(THREADS_PREFER_PTHREAD_FLAG ON) + find_package(Threads REQUIRED) + target_link_libraries(glslang Threads::Threads) +endif() + ################################################################################ # ResourceLimits ################################################################################ @@ -217,6 +230,8 @@ target_include_directories(glslang-default-resource-limits PUBLIC # source_groups ################################################################################ if(WIN32) + source_group("OSDependent" REGULAR_EXPRESSION "OSDependent/[^/]*") + source_group("OSDependent\\Windows" REGULAR_EXPRESSION "OSDependent/Windows/*") source_group("Public" REGULAR_EXPRESSION "Public/*") source_group("MachineIndependent" REGULAR_EXPRESSION "MachineIndependent/[^/]*") source_group("Include" REGULAR_EXPRESSION "Include/[^/]*") @@ -224,6 +239,8 @@ if(WIN32) source_group("MachineIndependent\\Preprocessor" REGULAR_EXPRESSION "MachineIndependent/preprocessor/*") source_group("HLSL" REGULAR_EXPRESSION "HLSL/*") source_group("CInterface" REGULAR_EXPRESSION "CInterface/*") + source_group("SPIRV" REGULAR_EXPRESSION "SPIRV/[^/]*") + source_group("SPIRV\\CInterface" REGULAR_EXPRESSION "SPIRV/CInterface/*") endif() ################################################################################ diff --git a/glslang/OSDependent/Unix/CMakeLists.txt b/glslang/OSDependent/Unix/CMakeLists.txt index 0c54975687..53d9ad3845 100644 --- a/glslang/OSDependent/Unix/CMakeLists.txt +++ b/glslang/OSDependent/Unix/CMakeLists.txt @@ -31,15 +31,18 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. -add_library(OSDependent STATIC ossource.cpp ../osinclude.h) +set(OSDEPENDENT_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/ossource.cpp + PARENT_SCOPE) + +set(OSDEPENDENT_HEADERS + ${CMAKE_CURRENT_SOURCE_DIR}/../osinclude.h + PARENT_SCOPE) + +add_library(OSDependent STATIC ${CMAKE_CURRENT_SOURCE_DIR}/../../stub.cpp) set_property(TARGET OSDependent PROPERTY FOLDER glslang) set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) -# Link pthread -set(THREADS_PREFER_PTHREAD_FLAG ON) -find_package(Threads REQUIRED) -target_link_libraries(OSDependent Threads::Threads) - if(GLSLANG_ENABLE_INSTALL AND NOT BUILD_SHARED_LIBS) install(TARGETS OSDependent EXPORT glslang-targets) endif() diff --git a/glslang/OSDependent/Web/CMakeLists.txt b/glslang/OSDependent/Web/CMakeLists.txt index 5d17496088..2cfe7aae67 100644 --- a/glslang/OSDependent/Web/CMakeLists.txt +++ b/glslang/OSDependent/Web/CMakeLists.txt @@ -34,7 +34,7 @@ if(ENABLE_GLSLANG_JS) add_executable(glslang.js "glslang.js.cpp") glslang_set_link_args(glslang.js) - target_link_libraries(glslang.js glslang SPIRV) + target_link_libraries(glslang.js glslang) # Link library names that start with "-" are treated as link flags. # "-Os" should be OK in MSVC; don't use /Os because CMake won't diff --git a/glslang/OSDependent/Windows/CMakeLists.txt b/glslang/OSDependent/Windows/CMakeLists.txt index 8a9a8c42c8..040f4348f1 100644 --- a/glslang/OSDependent/Windows/CMakeLists.txt +++ b/glslang/OSDependent/Windows/CMakeLists.txt @@ -31,12 +31,18 @@ # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # POSSIBILITY OF SUCH DAMAGE. +set(OSDEPENDENT_SOURCES + ${CMAKE_CURRENT_SOURCE_DIR}/ossource.cpp + PARENT_SCOPE) + +set(OSDEPENDENT_HEADERS + ${CMAKE_CURRENT_SOURCE_DIR}/../osinclude.h + PARENT_SCOPE) + add_library(OSDependent STATIC) target_sources(OSDependent PRIVATE - ../osinclude.h - ossource.cpp -) + ${CMAKE_CURRENT_SOURCE_DIR}/../../stub.cpp) set_property(TARGET OSDependent PROPERTY FOLDER glslang) set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -44,7 +50,7 @@ set_property(TARGET OSDependent PROPERTY POSITION_INDEPENDENT_CODE ON) # MinGW GCC complains about function pointer casts to void*. # Turn that off with -fpermissive. if(MINGW AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU") - target_compile_options(OSDependent PRIVATE -fpermissive) + set_source_files_properties(${OSDEPENDENT_SOURCES} PROPERTIES COMPILE_FLAGS -fpermissive) endif() if(WIN32) diff --git a/glslang/stub.cpp b/glslang/stub.cpp new file mode 100644 index 0000000000..b9aec6d15e --- /dev/null +++ b/glslang/stub.cpp @@ -0,0 +1,37 @@ +// +// Copyright (C) 2024 The Khronos Group Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// + +// This empty source file exists to support building stubbed versions of +// deprecated libraries which have been integrated into the main glslang +// library. It should be deleted once the stub libraries are fully removed. diff --git a/gtests/CMakeLists.txt b/gtests/CMakeLists.txt index 8e0edd4d78..1987a6d6bb 100644 --- a/gtests/CMakeLists.txt +++ b/gtests/CMakeLists.txt @@ -88,8 +88,7 @@ if(GLSLANG_TESTS) endif() set(LIBRARIES - glslang OSDependent glslang - SPIRV glslang-default-resource-limits) + glslang glslang-default-resource-limits) if(ENABLE_SPVREMAPPER) set(LIBRARIES ${LIBRARIES} SPVRemapper) diff --git a/ndk_test/Android.mk b/ndk_test/Android.mk index 112700c907..897ace0067 100644 --- a/ndk_test/Android.mk +++ b/ndk_test/Android.mk @@ -39,7 +39,7 @@ LOCAL_SRC_FILES:=test.cpp LOCAL_MODULE:=glslang_ndk_test LOCAL_LDLIBS:=-landroid LOCAL_CXXFLAGS:=-std=c++17 -fno-exceptions -fno-rtti -Werror -LOCAL_STATIC_LIBRARIES:=glslang SPIRV +LOCAL_STATIC_LIBRARIES:=glslang include $(BUILD_SHARED_LIBRARY) include $(LOCAL_PATH)/../Android.mk From d59c84d388c805022e2bddea08aa41cbe7e43e55 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 15 Aug 2024 17:33:14 -0400 Subject: [PATCH 556/594] Fix typo in Android.mk --- Android.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Android.mk b/Android.mk index 7adce09cf7..3cd88c829a 100644 --- a/Android.mk +++ b/Android.mk @@ -113,7 +113,7 @@ LOCAL_SRC_FILES:= \ glslang/MachineIndependent/preprocessor/Pp.cpp \ glslang/MachineIndependent/preprocessor/PpScanner.cpp \ glslang/MachineIndependent/preprocessor/PpTokens.cpp \ - glslang/OSDependent/Unix/ossource.cpp + glslang/OSDependent/Unix/ossource.cpp \ SPIRV/CInterface/spirv_c_interface.cpp \ SPIRV/GlslangToSpv.cpp \ SPIRV/InReadableOrder.cpp \ From 611950f8820ed6500addf5a83f55f3244ec596c4 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 06:16:05 +0000 Subject: [PATCH 557/594] Bump actions/upload-artifact from 4.3.5 to 4.3.6 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.5 to 4.3.6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/89ef406dd8d7e03cfd12d9e0a4a378f454709029...834a144ee995460fba8ed112a2fc961b36a5ec5a) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 078feca1f3..3cbeb9bc9f 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@89ef406dd8d7e03cfd12d9e0a4a378f454709029 # v4.3.5 + uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 with: name: SARIF file path: results.sarif From 4422273e8464d20b9d8dd403cbfc3049e09a5f23 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Aug 2024 06:16:10 +0000 Subject: [PATCH 558/594] Bump github/codeql-action from 3.26.0 to 3.26.2 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.0 to 3.26.2. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/eb055d739abdc2e8de2e5f4ba1a8b246daa779aa...429e1977040da7a23b6822b13c129cd1ba93dbb2) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 3cbeb9bc9f..8c0173b674 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@eb055d739abdc2e8de2e5f4ba1a8b246daa779aa # v3.26.0 + uses: github/codeql-action/upload-sarif@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 with: sarif_file: results.sarif From 592de6cf78e0fb359fc3e2854c9dc0f3cf6d4820 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 1 Sep 2023 18:19:46 -0400 Subject: [PATCH 559/594] Clean up unused includes. --- SPIRV/SPVRemapper.cpp | 1 - SPIRV/SPVRemapper.h | 3 ++- StandAlone/StandAlone.cpp | 2 -- StandAlone/Worklist.h | 1 - glslang/HLSL/hlslParseHelper.cpp | 2 -- glslang/HLSL/pch.h | 2 -- glslang/MachineIndependent/ParseHelper.cpp | 1 - 7 files changed, 2 insertions(+), 10 deletions(-) diff --git a/SPIRV/SPVRemapper.cpp b/SPIRV/SPVRemapper.cpp index f8f50a9516..2ef3bf7568 100644 --- a/SPIRV/SPVRemapper.cpp +++ b/SPIRV/SPVRemapper.cpp @@ -38,7 +38,6 @@ #include #include -#include "../glslang/Include/Common.h" namespace spv { diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index 33efe331e4..bd9f91395e 100644 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -79,7 +79,8 @@ class spirvbin_base_t #include "spirv.hpp" namespace spv { -const Id NoResult = 0; + +static inline constexpr Id NoResult = 0; // class to hold SPIR-V binary data for remapping, DCE, and debug stripping class spirvbin_t : public spirvbin_base_t diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index bd1800110c..9c3beac923 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -44,12 +44,10 @@ #include "glslang/Public/ResourceLimits.h" #include "Worklist.h" #include "DirStackFileIncluder.h" -#include "./../glslang/Include/ShHandle.h" #include "./../glslang/Public/ShaderLang.h" #include "../glslang/MachineIndependent/localintermediate.h" #include "../SPIRV/GlslangToSpv.h" #include "../SPIRV/GLSL.std.450.h" -#include "../SPIRV/doc.h" #include "../SPIRV/disassemble.h" #include diff --git a/StandAlone/Worklist.h b/StandAlone/Worklist.h index 91b6f516be..dc726270a5 100644 --- a/StandAlone/Worklist.h +++ b/StandAlone/Worklist.h @@ -35,7 +35,6 @@ #ifndef WORKLIST_H_INCLUDED #define WORKLIST_H_INCLUDED -#include "../glslang/OSDependent/osinclude.h" #include #include #include diff --git a/glslang/HLSL/hlslParseHelper.cpp b/glslang/HLSL/hlslParseHelper.cpp index c7a40f3baa..35eb222ce5 100644 --- a/glslang/HLSL/hlslParseHelper.cpp +++ b/glslang/HLSL/hlslParseHelper.cpp @@ -43,8 +43,6 @@ #include "../MachineIndependent/Scan.h" #include "../MachineIndependent/preprocessor/PpContext.h" -#include "../OSDependent/osinclude.h" - #include #include #include diff --git a/glslang/HLSL/pch.h b/glslang/HLSL/pch.h index 465e7c14f8..f51efacc6d 100644 --- a/glslang/HLSL/pch.h +++ b/glslang/HLSL/pch.h @@ -42,8 +42,6 @@ #include "../MachineIndependent/Scan.h" #include "../MachineIndependent/preprocessor/PpContext.h" -#include "../OSDependent/osinclude.h" - #include #include #include diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index e6c97a26fc..f314b2783f 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -42,7 +42,6 @@ #include "Initialize.h" #include "Scan.h" -#include "../OSDependent/osinclude.h" #include #include "preprocessor/PpContext.h" From 9e8dff7d42fc47fa4f2285ea6ae806f4715e7807 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 21 Sep 2023 16:26:59 -0400 Subject: [PATCH 560/594] Move definition of GLSLANG_EXPORT to visibility.h The GLSLANG_EXPORT macro is already used (and defined) in two separate places and will be used in a few more in the near future. To reduce duplication it is now in its own header. --- glslang/CMakeLists.txt | 1 + glslang/Include/glslang_c_interface.h | 17 +-------- glslang/Include/visibility.h | 51 +++++++++++++++++++++++++++ glslang/Public/ShaderLang.h | 17 +-------- 4 files changed, 54 insertions(+), 32 deletions(-) create mode 100644 glslang/Include/visibility.h diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 7fc0d87a4f..4beb1da339 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -261,6 +261,7 @@ if(GLSLANG_ENABLE_INSTALL) Include/glslang_c_shader_types.h Include/ResourceLimits.h MachineIndependent/iomapper.h + Include/visibility.h MachineIndependent/Versions.h) foreach(file ${PUBLIC_HEADERS}) diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index a78b9f5df4..cbf10b4557 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -37,6 +37,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include "glslang_c_shader_types.h" +#include "visibility.h" typedef struct glslang_shader_s glslang_shader_t; typedef struct glslang_program_s glslang_program_t; @@ -244,22 +245,6 @@ typedef struct glslang_spv_options_s { extern "C" { #endif -#ifdef GLSLANG_IS_SHARED_LIBRARY - #ifdef _WIN32 - #ifdef GLSLANG_EXPORTING - #define GLSLANG_EXPORT __declspec(dllexport) - #else - #define GLSLANG_EXPORT __declspec(dllimport) - #endif - #elif __GNUC__ >= 4 - #define GLSLANG_EXPORT __attribute__((visibility("default"))) - #endif -#endif // GLSLANG_IS_SHARED_LIBRARY - -#ifndef GLSLANG_EXPORT -#define GLSLANG_EXPORT -#endif - GLSLANG_EXPORT void glslang_get_version(glslang_version_t* version); GLSLANG_EXPORT int glslang_initialize_process(void); diff --git a/glslang/Include/visibility.h b/glslang/Include/visibility.h new file mode 100644 index 0000000000..d6b6bb3430 --- /dev/null +++ b/glslang/Include/visibility.h @@ -0,0 +1,51 @@ +// +// Copyright (C) 2023 LunarG, Inc. +// +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions +// are met: +// +// Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// +// Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following +// disclaimer in the documentation and/or other materials provided +// with the distribution. +// +// Neither the name of 3Dlabs Inc. Ltd. nor the names of its +// contributors may be used to endorse or promote products derived +// from this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS +// FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE +// COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, +// INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, +// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +// LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT +// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN +// ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +// POSSIBILITY OF SUCH DAMAGE. +// +#ifdef GLSLANG_IS_SHARED_LIBRARY + #ifdef _WIN32 + #ifdef GLSLANG_EXPORTING + #define GLSLANG_EXPORT __declspec(dllexport) + #else + #define GLSLANG_EXPORT __declspec(dllimport) + #endif + #elif __GNUC__ >= 4 + #define GLSLANG_EXPORT __attribute__((visibility("default"))) + #endif +#endif // GLSLANG_IS_SHARED_LIBRARY + +#ifndef GLSLANG_EXPORT +#define GLSLANG_EXPORT +#endif + + diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 9e8398c8e8..d788030718 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -38,6 +38,7 @@ #define _COMPILER_INTERFACE_INCLUDED_ #include "../Include/ResourceLimits.h" +#include "../Include/visibility.h" #include "../MachineIndependent/Versions.h" #include @@ -49,22 +50,6 @@ #define C_DECL #endif -#ifdef GLSLANG_IS_SHARED_LIBRARY - #ifdef _WIN32 - #ifdef GLSLANG_EXPORTING - #define GLSLANG_EXPORT __declspec(dllexport) - #else - #define GLSLANG_EXPORT __declspec(dllimport) - #endif - #elif __GNUC__ >= 4 - #define GLSLANG_EXPORT __attribute__((visibility("default"))) - #endif -#endif // GLSLANG_IS_SHARED_LIBRARY - -#ifndef GLSLANG_EXPORT -#define GLSLANG_EXPORT -#endif - // // This is the platform independent interface between an OGL driver // and the shading language compiler/linker. From ffd454c57bdbea8ae493df7a5d2733ae2b02cb81 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 20 Aug 2024 13:23:43 -0400 Subject: [PATCH 561/594] Add visibility.h to build scripts --- BUILD.gn | 1 + glslang/CMakeLists.txt | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/BUILD.gn b/BUILD.gn index 6384de04d5..383864c08c 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -159,6 +159,7 @@ template("glslang_sources_common") { "glslang/Include/Types.h", "glslang/Include/arrays.h", "glslang/Include/intermediate.h", + "glslang/Include/visibility.h", "glslang/MachineIndependent/Constant.cpp", "glslang/MachineIndependent/InfoSink.cpp", "glslang/MachineIndependent/Initialize.cpp", diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 4beb1da339..a9740232ad 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -163,7 +163,8 @@ set(GLSLANG_HEADERS Include/ResourceLimits.h Include/ShHandle.h Include/SpirvIntrinsics.h - Include/Types.h) + Include/Types.h + Include/visibility.h) add_library(glslang ${LIB_TYPE} ${GLSLANG_SOURCES} ${GLSLANG_HEADERS} ${GENERICCODEGEN_SOURCES} ${GENERICCODEGEN_HEADERS} ${OSDEPENDENT_SOURCES} ${OSDEPENDENT_HEADERS} ${MACHINEINDEPENDENT_SOURCES} ${MACHINEINDEPENDENT_HEADERS} ${SPIRV_SOURCES} ${SPIRV_HEADERS}) add_library(glslang::glslang ALIAS glslang) From df3398078fab37b50ab33192af01cbc5b5d5b377 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 26 Aug 2024 06:25:20 +0000 Subject: [PATCH 562/594] Bump github/codeql-action from 3.26.2 to 3.26.5 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.2 to 3.26.5. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/429e1977040da7a23b6822b13c129cd1ba93dbb2...2c779ab0d087cd7fe7b826087247c2c81f27bfa6) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 8c0173b674..2d5c3b8a16 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@429e1977040da7a23b6822b13c129cd1ba93dbb2 # v3.26.2 + uses: github/codeql-action/upload-sarif@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 with: sarif_file: results.sarif From 5073d93ec4fa2b8e6ff9b9b889ca9151ced2bf48 Mon Sep 17 00:00:00 2001 From: Matthew Moulton <30711895+mmoult@users.noreply.github.com> Date: Wed, 28 Aug 2024 21:46:16 +0000 Subject: [PATCH 563/594] Apply GLSL memory decorations to top-level OpVariable Apply memory decorations from GLSL source to the top-level OpVariable. Previously, these decorations would only be applied to individual members. While this is correct behavior, it is more convenient for some front ends to see the decorations (specifically ReadOnly and WriteOnly) applied to the whole variable rather than individual members. --- SPIRV/GlslangToSpv.cpp | 9 ++++++++- Test/baseResults/hlsl.attributeC11.frag.out | 2 ++ Test/baseResults/hlsl.buffer.frag.out | 2 ++ Test/baseResults/hlsl.buffer_ref_parameter.comp.out | 1 + Test/baseResults/hlsl.layout.frag.out | 3 +++ Test/baseResults/hlsl.structbuffer.byte.frag.out | 1 + Test/baseResults/hlsl.structbuffer.coherent.frag.out | 2 ++ Test/baseResults/hlsl.structbuffer.fn.frag.out | 2 ++ Test/baseResults/hlsl.structbuffer.fn2.comp.out | 1 + Test/baseResults/hlsl.structbuffer.frag.out | 2 ++ Test/baseResults/hlsl.structcopy.comp.out | 2 ++ Test/baseResults/hlsl.structcopylogical.comp.out | 2 ++ Test/baseResults/hlsl.texturebuffer.frag.out | 2 ++ Test/baseResults/iomap.crossStage.vk.vert.out | 2 ++ Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out | 1 + Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out | 1 + Test/baseResults/spv.8bitstorage-ssbo.vert.out | 1 + Test/baseResults/spv.8bitstorage-ubo.vert.out | 1 + Test/baseResults/spv.atomiAddEXT.task.out | 1 + Test/baseResults/spv.atomic.comp.out | 1 + Test/baseResults/spv.bufferhandle13.frag.out | 2 ++ Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out | 1 + Test/baseResults/spv.debuginfo.hlsl.comp.out | 1 + Test/baseResults/spv.expect_assume.assumeEXT.comp.out | 1 + Test/baseResults/spv.expect_assume.expectEXT.comp.out | 1 + .../spv.expect_assume.expectEXT.exttypes.comp.out | 1 + Test/baseResults/spv.fsi.frag.out | 1 + Test/baseResults/spv.memoryQualifier.frag.out | 1 + Test/baseResults/spv.specConstant.float16.comp.out | 1 + Test/baseResults/spv.specConstant.int16.comp.out | 1 + Test/baseResults/spv.specConstant.int8.comp.out | 1 + Test/baseResults/spv.specConstantOp.float16.comp.out | 2 ++ Test/baseResults/spv.specConstantOp.int16.comp.out | 2 ++ Test/baseResults/spv.specConstantOp.int8.comp.out | 2 ++ Test/baseResults/spv.ssbo.autoassign.frag.out | 1 + .../baseResults/spv.subgroupExtendedTypesRotate.comp.out | 1 + Test/baseResults/spv.subgroupRotate.comp.out | 1 + Test/baseResults/spv.volatileAtomic.comp.out | 2 ++ Test/baseResults/vk.relaxed.stagelink.0.0.vert.out | 4 ++++ 39 files changed, 65 insertions(+), 1 deletion(-) diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 7bfd50f53f..2ca475c2c3 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -4372,7 +4372,14 @@ spv::Id TGlslangToSpvTraverser::createSpvVariable(const glslang::TIntermSymbol* initializer = builder.makeNullConstant(spvType); } - return builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer, false); + spv::Id var = builder.createVariable(spv::NoPrecision, storageClass, spvType, name, initializer, false); + std::vector topLevelDecorations; + glslang::TQualifier typeQualifier = node->getType().getQualifier(); + TranslateMemoryDecoration(typeQualifier, topLevelDecorations, glslangIntermediate->usingVulkanMemoryModel()); + for (auto deco : topLevelDecorations) { + builder.addDecoration(var, deco); + } + return var; } // Return type Id of the sampled type. diff --git a/Test/baseResults/hlsl.attributeC11.frag.out b/Test/baseResults/hlsl.attributeC11.frag.out index 8def5712fc..721bfaf9dc 100644 --- a/Test/baseResults/hlsl.attributeC11.frag.out +++ b/Test/baseResults/hlsl.attributeC11.frag.out @@ -132,8 +132,10 @@ Validation failed Decorate 43(buffer1) BufferBlock MemberDecorate 43(buffer1) 0 NonWritable MemberDecorate 43(buffer1) 0 Offset 0 + Decorate 45(buffer1) NonWritable Decorate 45(buffer1) Binding 1 Decorate 45(buffer1) DescriptorSet 0 + Decorate 46(buffer3) NonWritable Decorate 46(buffer3) Binding 3 Decorate 46(buffer3) DescriptorSet 2 Decorate 47(ci) SpecId 13 diff --git a/Test/baseResults/hlsl.buffer.frag.out b/Test/baseResults/hlsl.buffer.frag.out index 64959d696e..6c746eb14d 100644 --- a/Test/baseResults/hlsl.buffer.frag.out +++ b/Test/baseResults/hlsl.buffer.frag.out @@ -205,6 +205,7 @@ Validation failed Decorate 37(buf2) BufferBlock MemberDecorate 37(buf2) 0 NonWritable MemberDecorate 37(buf2) 0 Offset 0 + Decorate 39 NonWritable Decorate 39 Binding 1 Decorate 39 DescriptorSet 0 Decorate 43(cbufName) Block @@ -245,6 +246,7 @@ Validation failed MemberDecorate 50(tbufName) 11 MatrixStride 16 MemberDecorate 50(tbufName) 11 NonWritable MemberDecorate 50(tbufName) 11 Offset 304 + Decorate 52 NonWritable Decorate 52 Binding 8 Decorate 52 DescriptorSet 0 Decorate 65(input) BuiltIn FragCoord diff --git a/Test/baseResults/hlsl.buffer_ref_parameter.comp.out b/Test/baseResults/hlsl.buffer_ref_parameter.comp.out index 1f7f0906d4..8c8cde0209 100644 --- a/Test/baseResults/hlsl.buffer_ref_parameter.comp.out +++ b/Test/baseResults/hlsl.buffer_ref_parameter.comp.out @@ -279,6 +279,7 @@ local_size = (64, 1, 1) MemberDecorate 8 0 NonWritable MemberDecorate 8 0 Offset 0 Decorate 14(buffer_position) NonWritable + Decorate 53(buffer_position_ms) NonWritable Decorate 53(buffer_position_ms) Binding 0 Decorate 53(buffer_position_ms) DescriptorSet 0 Decorate 59 ArrayStride 4 diff --git a/Test/baseResults/hlsl.layout.frag.out b/Test/baseResults/hlsl.layout.frag.out index 564de6d01a..7979015a49 100644 --- a/Test/baseResults/hlsl.layout.frag.out +++ b/Test/baseResults/hlsl.layout.frag.out @@ -114,14 +114,17 @@ Validation failed Decorate 17(tbufName) BufferBlock MemberDecorate 17(tbufName) 0 NonWritable MemberDecorate 17(tbufName) 0 Offset 16 + Decorate 19 NonWritable Decorate 19 Binding 5 Decorate 19 DescriptorSet 3 Decorate 26(tbufName2) BufferBlock MemberDecorate 26(tbufName2) 0 NonWritable MemberDecorate 26(tbufName2) 0 Offset 0 + Decorate 28 NonWritable Decorate 33(tbufName2) BufferBlock MemberDecorate 33(tbufName2) 0 NonWritable MemberDecorate 33(tbufName2) 0 Offset 16 + Decorate 35 NonWritable Decorate 35 Binding 7 Decorate 35 DescriptorSet 4 Decorate 43(specConst) SpecId 17 diff --git a/Test/baseResults/hlsl.structbuffer.byte.frag.out b/Test/baseResults/hlsl.structbuffer.byte.frag.out index 389cd9c107..a99b80562e 100644 --- a/Test/baseResults/hlsl.structbuffer.byte.frag.out +++ b/Test/baseResults/hlsl.structbuffer.byte.frag.out @@ -351,6 +351,7 @@ gl_FragCoord origin is upper left Decorate 16(sbuf) BufferBlock MemberDecorate 16(sbuf) 0 NonWritable MemberDecorate 16(sbuf) 0 Offset 0 + Decorate 18(sbuf) NonWritable Decorate 18(sbuf) Binding 0 Decorate 18(sbuf) DescriptorSet 0 Decorate 107(pos) Flat diff --git a/Test/baseResults/hlsl.structbuffer.coherent.frag.out b/Test/baseResults/hlsl.structbuffer.coherent.frag.out index 6647df1a00..a75b3cfe49 100644 --- a/Test/baseResults/hlsl.structbuffer.coherent.frag.out +++ b/Test/baseResults/hlsl.structbuffer.coherent.frag.out @@ -207,6 +207,7 @@ gl_FragCoord origin is upper left Decorate 15(sbuf2) BufferBlock MemberDecorate 15(sbuf2) 0 Coherent MemberDecorate 15(sbuf2) 0 Offset 0 + Decorate 17(sbuf2) Coherent Decorate 17(sbuf2) Binding 1 Decorate 17(sbuf2) DescriptorSet 0 MemberDecorate 28(sb_t) 0 Offset 0 @@ -215,6 +216,7 @@ gl_FragCoord origin is upper left Decorate 30(sbuf) BufferBlock MemberDecorate 30(sbuf) 0 Coherent MemberDecorate 30(sbuf) 0 Offset 0 + Decorate 32(sbuf) Coherent Decorate 32(sbuf) Binding 0 Decorate 32(sbuf) DescriptorSet 0 Decorate 71(pos) Flat diff --git a/Test/baseResults/hlsl.structbuffer.fn.frag.out b/Test/baseResults/hlsl.structbuffer.fn.frag.out index 846bcab526..7e8536a8dc 100644 --- a/Test/baseResults/hlsl.structbuffer.fn.frag.out +++ b/Test/baseResults/hlsl.structbuffer.fn.frag.out @@ -194,6 +194,7 @@ Validation failed Decorate 47(sbuf2) DescriptorSet 0 Decorate 48(sbuf2@count) Binding 0 Decorate 48(sbuf2@count) DescriptorSet 0 + Decorate 50(sbuf) NonWritable Decorate 50(sbuf) Binding 10 Decorate 50(sbuf) DescriptorSet 0 Decorate 63(pos) Flat @@ -207,6 +208,7 @@ Validation failed Decorate 75(sbuf3) BufferBlock MemberDecorate 75(sbuf3) 0 NonWritable MemberDecorate 75(sbuf3) 0 Offset 0 + Decorate 77(sbuf3) NonWritable Decorate 77(sbuf3) Binding 12 Decorate 77(sbuf3) DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/hlsl.structbuffer.fn2.comp.out b/Test/baseResults/hlsl.structbuffer.fn2.comp.out index 20159a597a..f3630064f7 100644 --- a/Test/baseResults/hlsl.structbuffer.fn2.comp.out +++ b/Test/baseResults/hlsl.structbuffer.fn2.comp.out @@ -169,6 +169,7 @@ local_size = (256, 1, 1) MemberDecorate 9 0 NonWritable MemberDecorate 9 0 Offset 0 Decorate 14(buffer) NonWritable + Decorate 44(g_input) NonWritable Decorate 44(g_input) Binding 0 Decorate 44(g_input) DescriptorSet 0 Decorate 50(g_output) Binding 1 diff --git a/Test/baseResults/hlsl.structbuffer.frag.out b/Test/baseResults/hlsl.structbuffer.frag.out index abcfa485ca..db1d71c4b8 100644 --- a/Test/baseResults/hlsl.structbuffer.frag.out +++ b/Test/baseResults/hlsl.structbuffer.frag.out @@ -228,12 +228,14 @@ gl_FragCoord origin is upper left Decorate 21(sbuf) BufferBlock MemberDecorate 21(sbuf) 0 NonWritable MemberDecorate 21(sbuf) 0 Offset 0 + Decorate 23(sbuf) NonWritable Decorate 23(sbuf) Binding 10 Decorate 23(sbuf) DescriptorSet 0 Decorate 58 ArrayStride 4 Decorate 59(sbuf2) BufferBlock MemberDecorate 59(sbuf2) 0 NonWritable MemberDecorate 59(sbuf2) 0 Offset 0 + Decorate 61(sbuf2) NonWritable Decorate 61(sbuf2) Binding 0 Decorate 61(sbuf2) DescriptorSet 0 Decorate 89(pos) Flat diff --git a/Test/baseResults/hlsl.structcopy.comp.out b/Test/baseResults/hlsl.structcopy.comp.out index 43e513d297..07441e1970 100644 --- a/Test/baseResults/hlsl.structcopy.comp.out +++ b/Test/baseResults/hlsl.structcopy.comp.out @@ -288,12 +288,14 @@ local_size = (128, 1, 1) Decorate 30(sb) BufferBlock MemberDecorate 30(sb) 0 NonWritable MemberDecorate 30(sb) 0 Offset 0 + Decorate 32(sb) NonWritable Decorate 32(sb) Binding 0 Decorate 32(sb) DescriptorSet 0 Decorate 64 ArrayStride 12 Decorate 65(o) BufferBlock MemberDecorate 65(o) 0 NonWritable MemberDecorate 65(o) 0 Offset 0 + Decorate 67(o) NonWritable Decorate 67(o) Binding 1 Decorate 67(o) DescriptorSet 0 Decorate 83(id) BuiltIn LocalInvocationIndex diff --git a/Test/baseResults/hlsl.structcopylogical.comp.out b/Test/baseResults/hlsl.structcopylogical.comp.out index 700d415adc..0b997811a3 100644 --- a/Test/baseResults/hlsl.structcopylogical.comp.out +++ b/Test/baseResults/hlsl.structcopylogical.comp.out @@ -288,12 +288,14 @@ local_size = (128, 1, 1) Decorate 30(sb) Block MemberDecorate 30(sb) 0 NonWritable MemberDecorate 30(sb) 0 Offset 0 + Decorate 32(sb) NonWritable Decorate 32(sb) Binding 0 Decorate 32(sb) DescriptorSet 0 Decorate 54 ArrayStride 12 Decorate 55(o) Block MemberDecorate 55(o) 0 NonWritable MemberDecorate 55(o) 0 Offset 0 + Decorate 57(o) NonWritable Decorate 57(o) Binding 1 Decorate 57(o) DescriptorSet 0 Decorate 74(id) BuiltIn LocalInvocationIndex diff --git a/Test/baseResults/hlsl.texturebuffer.frag.out b/Test/baseResults/hlsl.texturebuffer.frag.out index 7cba9c34b5..6a2f8bec25 100644 --- a/Test/baseResults/hlsl.texturebuffer.frag.out +++ b/Test/baseResults/hlsl.texturebuffer.frag.out @@ -99,6 +99,7 @@ gl_FragCoord origin is upper left MemberDecorate 15(TextureBuffer_var) 0 Offset 0 MemberDecorate 15(TextureBuffer_var) 1 NonWritable MemberDecorate 15(TextureBuffer_var) 1 Offset 16 + Decorate 17(TextureBuffer_var) NonWritable Decorate 17(TextureBuffer_var) Binding 0 Decorate 17(TextureBuffer_var) DescriptorSet 0 Decorate 22(tbuf2) BufferBlock @@ -106,6 +107,7 @@ gl_FragCoord origin is upper left MemberDecorate 22(tbuf2) 0 Offset 0 MemberDecorate 22(tbuf2) 1 NonWritable MemberDecorate 22(tbuf2) 1 Offset 16 + Decorate 24 NonWritable Decorate 24 Binding 1 Decorate 24 DescriptorSet 0 Decorate 32(pos) BuiltIn FragCoord diff --git a/Test/baseResults/iomap.crossStage.vk.vert.out b/Test/baseResults/iomap.crossStage.vk.vert.out index 850b087f35..1f181fe80e 100644 --- a/Test/baseResults/iomap.crossStage.vk.vert.out +++ b/Test/baseResults/iomap.crossStage.vk.vert.out @@ -421,6 +421,7 @@ gl_FragCoord origin is upper left Decorate 29(vertOnlyBlock) BufferBlock MemberDecorate 29(vertOnlyBlock) 0 NonWritable MemberDecorate 29(vertOnlyBlock) 0 Offset 0 + Decorate 31 NonWritable Decorate 31 Binding 0 Decorate 31 DescriptorSet 0 Decorate 32(crossStageBlock2) Block @@ -616,6 +617,7 @@ gl_FragCoord origin is upper left Decorate 15(fragOnlyBlock) BufferBlock MemberDecorate 15(fragOnlyBlock) 0 NonWritable MemberDecorate 15(fragOnlyBlock) 0 Offset 0 + Decorate 17 NonWritable Decorate 17 Binding 2 Decorate 17 DescriptorSet 0 Decorate 23(crossStageBlock2) Block diff --git a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out index 59e05bad3d..402729d47f 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ssbo.vert.out @@ -22,6 +22,7 @@ spv.1.3.8bitstorage-ssbo.vert Decorate 12(Vertices) Block MemberDecorate 12(Vertices) 0 NonWritable MemberDecorate 12(Vertices) 0 Offset 0 + Decorate 14 NonWritable Decorate 14 Binding 0 Decorate 14 DescriptorSet 0 Decorate 18(gl_VertexIndex) BuiltIn VertexIndex diff --git a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out index 2aa51a8e3c..e7cd68a529 100644 --- a/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.1.3.8bitstorage-ubo.vert.out @@ -21,6 +21,7 @@ spv.1.3.8bitstorage-ubo.vert Decorate 13 ArrayStride 16 Decorate 14(Vertices) Block MemberDecorate 14(Vertices) 0 Offset 0 + Decorate 16 NonWritable Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 20(gl_VertexIndex) BuiltIn VertexIndex diff --git a/Test/baseResults/spv.8bitstorage-ssbo.vert.out b/Test/baseResults/spv.8bitstorage-ssbo.vert.out index 19e7d43343..012b50f7d3 100644 --- a/Test/baseResults/spv.8bitstorage-ssbo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ssbo.vert.out @@ -22,6 +22,7 @@ spv.8bitstorage-ssbo.vert Decorate 12(Vertices) BufferBlock MemberDecorate 12(Vertices) 0 NonWritable MemberDecorate 12(Vertices) 0 Offset 0 + Decorate 14 NonWritable Decorate 14 Binding 0 Decorate 14 DescriptorSet 0 Decorate 18(gl_VertexIndex) BuiltIn VertexIndex diff --git a/Test/baseResults/spv.8bitstorage-ubo.vert.out b/Test/baseResults/spv.8bitstorage-ubo.vert.out index 7dd1e32aaf..2207b6fdce 100644 --- a/Test/baseResults/spv.8bitstorage-ubo.vert.out +++ b/Test/baseResults/spv.8bitstorage-ubo.vert.out @@ -21,6 +21,7 @@ spv.8bitstorage-ubo.vert Decorate 13 ArrayStride 16 Decorate 14(Vertices) Block MemberDecorate 14(Vertices) 0 Offset 0 + Decorate 16 NonWritable Decorate 16 Binding 0 Decorate 16 DescriptorSet 0 Decorate 20(gl_VertexIndex) BuiltIn VertexIndex diff --git a/Test/baseResults/spv.atomiAddEXT.task.out b/Test/baseResults/spv.atomiAddEXT.task.out index bf93724023..22848ad06e 100644 --- a/Test/baseResults/spv.atomiAddEXT.task.out +++ b/Test/baseResults/spv.atomiAddEXT.task.out @@ -26,6 +26,7 @@ spv.atomiAddEXT.task Decorate 7(Buffer) Block MemberDecorate 7(Buffer) 0 Coherent MemberDecorate 7(Buffer) 0 Offset 0 + Decorate 9 Coherent Decorate 9 Binding 1 Decorate 9 DescriptorSet 0 Decorate 19 ArrayStride 4 diff --git a/Test/baseResults/spv.atomic.comp.out b/Test/baseResults/spv.atomic.comp.out index 53548089f5..22b297f642 100644 --- a/Test/baseResults/spv.atomic.comp.out +++ b/Test/baseResults/spv.atomic.comp.out @@ -40,6 +40,7 @@ spv.atomic.comp MemberDecorate 62(dataSSB) 0 Offset 0 MemberDecorate 62(dataSSB) 1 Restrict MemberDecorate 62(dataSSB) 1 Offset 16 + Decorate 64(result) Restrict Decorate 64(result) Binding 0 Decorate 64(result) DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/spv.bufferhandle13.frag.out b/Test/baseResults/spv.bufferhandle13.frag.out index cb98c1ad13..90e715ae40 100644 --- a/Test/baseResults/spv.bufferhandle13.frag.out +++ b/Test/baseResults/spv.bufferhandle13.frag.out @@ -45,10 +45,12 @@ spv.bufferhandle13.frag MemberDecorate 35(t5) 0 Offset 0 Decorate 37(s5) Binding 0 Decorate 37(s5) DescriptorSet 0 + Decorate 42(b) Restrict Decorate 42(b) DecorationRestrictPointerEXT Decorate 47(param) DecorationAliasedPointerEXT Decorate 52(param) DecorationAliasedPointerEXT Decorate 56(g1) DecorationAliasedPointerEXT + Decorate 57(g2) Restrict Decorate 57(g2) DecorationRestrictPointerEXT 2: TypeVoid 3: TypeFunction 2 diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index 9f94aa1d3b..8dc692052d 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -89,6 +89,7 @@ void main() { Decorate 64(PerPass_meshes) Block MemberDecorate 64(PerPass_meshes) 0 NonWritable MemberDecorate 64(PerPass_meshes) 0 Offset 0 + Decorate 73(perPass_meshes) NonWritable Decorate 73(perPass_meshes) Binding 0 Decorate 73(perPass_meshes) DescriptorSet 0 Decorate 82(tri_idx0) Flat diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index c23f82344b..b4579daf61 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -157,6 +157,7 @@ spv.debuginfo.hlsl.comp Decorate 199(particleIn) BufferBlock MemberDecorate 199(particleIn) 0 NonWritable MemberDecorate 199(particleIn) 0 Offset 0 + Decorate 208(particleIn) NonWritable Decorate 208(particleIn) Binding 0 Decorate 208(particleIn) DescriptorSet 0 Decorate 220 ArrayStride 80 diff --git a/Test/baseResults/spv.expect_assume.assumeEXT.comp.out b/Test/baseResults/spv.expect_assume.assumeEXT.comp.out index b865bd8350..2a1ca7fe7e 100644 --- a/Test/baseResults/spv.expect_assume.assumeEXT.comp.out +++ b/Test/baseResults/spv.expect_assume.assumeEXT.comp.out @@ -19,6 +19,7 @@ spv.expect_assume.assumeEXT.comp Decorate 7(roblock) BufferBlock MemberDecorate 7(roblock) 0 NonWritable MemberDecorate 7(roblock) 0 Offset 0 + Decorate 9(ro) NonWritable Decorate 9(ro) Binding 0 Decorate 9(ro) DescriptorSet 0 Decorate 21 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.expect_assume.expectEXT.comp.out b/Test/baseResults/spv.expect_assume.expectEXT.comp.out index 8cc9f48e03..bb9d073f46 100644 --- a/Test/baseResults/spv.expect_assume.expectEXT.comp.out +++ b/Test/baseResults/spv.expect_assume.expectEXT.comp.out @@ -53,6 +53,7 @@ spv.expect_assume.expectEXT.comp MemberDecorate 18(roblock) 10 Offset 112 MemberDecorate 18(roblock) 11 NonWritable MemberDecorate 18(roblock) 11 Offset 128 + Decorate 20(ro) NonWritable Decorate 20(ro) Binding 0 Decorate 20(ro) DescriptorSet 0 Decorate 177 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out b/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out index d0f2632f67..f449a63667 100644 --- a/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out +++ b/Test/baseResults/spv.expect_assume.expectEXT.exttypes.comp.out @@ -121,6 +121,7 @@ spv.expect_assume.expectEXT.exttypes.comp MemberDecorate 42(roblock) 30 Offset 320 MemberDecorate 42(roblock) 31 NonWritable MemberDecorate 42(roblock) 31 Offset 352 + Decorate 44(ro) NonWritable Decorate 44(ro) Binding 0 Decorate 44(ro) DescriptorSet 0 Decorate 457 BuiltIn WorkgroupSize diff --git a/Test/baseResults/spv.fsi.frag.out b/Test/baseResults/spv.fsi.frag.out index d9cd092e79..df9fc7c6f6 100644 --- a/Test/baseResults/spv.fsi.frag.out +++ b/Test/baseResults/spv.fsi.frag.out @@ -21,6 +21,7 @@ spv.fsi.frag Decorate 7(B1) BufferBlock MemberDecorate 7(B1) 0 Coherent MemberDecorate 7(B1) 0 Offset 0 + Decorate 9(b1) Coherent Decorate 9(b1) Binding 0 Decorate 9(b1) DescriptorSet 0 Decorate 17(im) Coherent diff --git a/Test/baseResults/spv.memoryQualifier.frag.out b/Test/baseResults/spv.memoryQualifier.frag.out index f6e12c1d6b..57b4c71c16 100644 --- a/Test/baseResults/spv.memoryQualifier.frag.out +++ b/Test/baseResults/spv.memoryQualifier.frag.out @@ -65,6 +65,7 @@ Validation failed MemberDecorate 50(Buffer) 4 Offset 48 MemberDecorate 50(Buffer) 5 Coherent MemberDecorate 50(Buffer) 5 Offset 56 + Decorate 52 Coherent Decorate 52 Binding 4 Decorate 52 DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/spv.specConstant.float16.comp.out b/Test/baseResults/spv.specConstant.float16.comp.out index 6915397826..ba4169e369 100644 --- a/Test/baseResults/spv.specConstant.float16.comp.out +++ b/Test/baseResults/spv.specConstant.float16.comp.out @@ -25,6 +25,7 @@ spv.specConstant.float16.comp MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 2 + Decorate 9(sb_out) NonReadable Decorate 9(sb_out) Binding 0 Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 diff --git a/Test/baseResults/spv.specConstant.int16.comp.out b/Test/baseResults/spv.specConstant.int16.comp.out index 9ff1e87efd..dfb2317980 100644 --- a/Test/baseResults/spv.specConstant.int16.comp.out +++ b/Test/baseResults/spv.specConstant.int16.comp.out @@ -25,6 +25,7 @@ spv.specConstant.int16.comp MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 2 + Decorate 9(sb_out) NonReadable Decorate 9(sb_out) Binding 0 Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 diff --git a/Test/baseResults/spv.specConstant.int8.comp.out b/Test/baseResults/spv.specConstant.int8.comp.out index f9ed9db45d..7f1175aa56 100644 --- a/Test/baseResults/spv.specConstant.int8.comp.out +++ b/Test/baseResults/spv.specConstant.int8.comp.out @@ -25,6 +25,7 @@ spv.specConstant.int8.comp MemberDecorate 7(Output) 0 Offset 0 MemberDecorate 7(Output) 1 NonReadable MemberDecorate 7(Output) 1 Offset 1 + Decorate 9(sb_out) NonReadable Decorate 9(sb_out) Binding 0 Decorate 9(sb_out) DescriptorSet 0 Decorate 12(sc0) SpecId 1 diff --git a/Test/baseResults/spv.specConstantOp.float16.comp.out b/Test/baseResults/spv.specConstantOp.float16.comp.out index 565e62cb8b..f4f1ae1b27 100644 --- a/Test/baseResults/spv.specConstantOp.float16.comp.out +++ b/Test/baseResults/spv.specConstantOp.float16.comp.out @@ -23,6 +23,8 @@ spv.specConstantOp.float16.comp MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 + Decorate 10 Restrict + Decorate 10 NonReadable Decorate 10 Binding 0 Decorate 10 DescriptorSet 0 Decorate 14(c) SpecId 0 diff --git a/Test/baseResults/spv.specConstantOp.int16.comp.out b/Test/baseResults/spv.specConstantOp.int16.comp.out index 1d980690fb..8d39f09ee2 100644 --- a/Test/baseResults/spv.specConstantOp.int16.comp.out +++ b/Test/baseResults/spv.specConstantOp.int16.comp.out @@ -23,6 +23,8 @@ spv.specConstantOp.int16.comp MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 + Decorate 10 Restrict + Decorate 10 NonReadable Decorate 10 Binding 0 Decorate 10 DescriptorSet 0 Decorate 13(c) SpecId 0 diff --git a/Test/baseResults/spv.specConstantOp.int8.comp.out b/Test/baseResults/spv.specConstantOp.int8.comp.out index f621ba9349..d88fce9b3b 100644 --- a/Test/baseResults/spv.specConstantOp.int8.comp.out +++ b/Test/baseResults/spv.specConstantOp.int8.comp.out @@ -23,6 +23,8 @@ spv.specConstantOp.int8.comp MemberDecorate 8(S) 0 Restrict MemberDecorate 8(S) 0 NonReadable MemberDecorate 8(S) 0 Offset 0 + Decorate 10 Restrict + Decorate 10 NonReadable Decorate 10 Binding 0 Decorate 10 DescriptorSet 0 Decorate 13(c) SpecId 0 diff --git a/Test/baseResults/spv.ssbo.autoassign.frag.out b/Test/baseResults/spv.ssbo.autoassign.frag.out index fb33e70bd0..2d8c283130 100644 --- a/Test/baseResults/spv.ssbo.autoassign.frag.out +++ b/Test/baseResults/spv.ssbo.autoassign.frag.out @@ -36,6 +36,7 @@ spv.ssbo.autoassign.frag Decorate 16(SB0) BufferBlock MemberDecorate 16(SB0) 0 NonWritable MemberDecorate 16(SB0) 0 Offset 0 + Decorate 18(SB0) NonWritable Decorate 18(SB0) Binding 30 Decorate 18(SB0) DescriptorSet 0 Decorate 26(TestCB) Block diff --git a/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out index b806ca9409..cb13289c5c 100644 --- a/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out +++ b/Test/baseResults/spv.subgroupExtendedTypesRotate.comp.out @@ -44,6 +44,7 @@ spv.subgroupExtendedTypesRotate.comp Decorate 9(roblock) Block MemberDecorate 9(roblock) 0 NonWritable MemberDecorate 9(roblock) 0 Offset 0 + Decorate 11(ro) NonWritable Decorate 11(ro) Binding 1 Decorate 11(ro) DescriptorSet 0 Decorate 31(Buffers) Block diff --git a/Test/baseResults/spv.subgroupRotate.comp.out b/Test/baseResults/spv.subgroupRotate.comp.out index d988636a0d..147b37fbae 100644 --- a/Test/baseResults/spv.subgroupRotate.comp.out +++ b/Test/baseResults/spv.subgroupRotate.comp.out @@ -27,6 +27,7 @@ spv.subgroupRotate.comp Decorate 9(roblock) Block MemberDecorate 9(roblock) 0 NonWritable MemberDecorate 9(roblock) 0 Offset 0 + Decorate 11(ro) NonWritable Decorate 11(ro) Binding 1 Decorate 11(ro) DescriptorSet 0 Decorate 23(Buffers) Block diff --git a/Test/baseResults/spv.volatileAtomic.comp.out b/Test/baseResults/spv.volatileAtomic.comp.out index 13aec2f33b..29462a1342 100644 --- a/Test/baseResults/spv.volatileAtomic.comp.out +++ b/Test/baseResults/spv.volatileAtomic.comp.out @@ -18,6 +18,8 @@ spv.volatileAtomic.comp MemberDecorate 8(D) 0 Volatile MemberDecorate 8(D) 0 Coherent MemberDecorate 8(D) 0 Offset 0 + Decorate 10(d) Volatile + Decorate 10(d) Coherent Decorate 10(d) Binding 3 Decorate 10(d) DescriptorSet 0 2: TypeVoid diff --git a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out index d7d8be2f23..5ab08aed5c 100644 --- a/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out +++ b/Test/baseResults/vk.relaxed.stagelink.0.0.vert.out @@ -7465,6 +7465,8 @@ gl_FragCoord origin is upper left MemberDecorate 919(TDEnvLightBuffer) 0 Restrict MemberDecorate 919(TDEnvLightBuffer) 0 NonWritable MemberDecorate 919(TDEnvLightBuffer) 0 Offset 0 + Decorate 922(uTDEnvLightBuffers) Restrict + Decorate 922(uTDEnvLightBuffers) NonWritable Decorate 922(uTDEnvLightBuffers) Binding 0 Decorate 922(uTDEnvLightBuffers) DescriptorSet 0 Decorate 926(mTD2DImageOutputs) Binding 0 @@ -9146,6 +9148,8 @@ gl_FragCoord origin is upper left MemberDecorate 1293(TDEnvLightBuffer) 0 Restrict MemberDecorate 1293(TDEnvLightBuffer) 0 NonWritable MemberDecorate 1293(TDEnvLightBuffer) 0 Offset 0 + Decorate 1296(uTDEnvLightBuffers) Restrict + Decorate 1296(uTDEnvLightBuffers) NonWritable Decorate 1296(uTDEnvLightBuffers) Binding 0 Decorate 1296(uTDEnvLightBuffers) DescriptorSet 0 2: TypeVoid From b45d21b2874f0eb57913f6556fbc42ccf0a581ef Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Tue, 27 Aug 2024 18:45:57 -0400 Subject: [PATCH 564/594] cmake: Fix dependencies of newly-stubbed libraries Some downstream projects may only link to e.g. the glslang::SPIRV library and rely on transitive dependencies to pull in everything else. To keep this working, the SPIRV and MachineIndependent library stubs are now linked against the glslang library. --- SPIRV/CMakeLists.txt | 4 ++-- glslang/CMakeLists.txt | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index fe1d07beca..3663753e72 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -110,11 +110,11 @@ if(WIN32 AND BUILD_SHARED_LIBS) endif() if(ENABLE_OPT) - target_link_libraries(SPIRV PRIVATE MachineIndependent PUBLIC SPIRV-Tools-opt) + target_link_libraries(SPIRV PRIVATE glslang PUBLIC SPIRV-Tools-opt) target_include_directories(SPIRV PUBLIC $) else() - target_link_libraries(SPIRV PRIVATE MachineIndependent) + target_link_libraries(SPIRV PRIVATE glslang) endif() if(WIN32) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index a9740232ad..385d46971c 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -136,6 +136,7 @@ endif() add_library(MachineIndependent STATIC stub.cpp) set_property(TARGET MachineIndependent PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET MachineIndependent PROPERTY FOLDER glslang) +target_link_libraries(MachineIndependent PRIVATE glslang) if (NOT MSVC) # -Wunused-but-set-variable is triggered in code generated by bison that we do not control. Turn this warning off, but only for the generated. From 12cbda959b6df2af119a76a73ff906c2bed36884 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 29 Aug 2024 13:37:40 -0400 Subject: [PATCH 565/594] Fix test results after merging #3662 The change was rebased but one test was added in the meantime. --- Test/baseResults/hlsl.buffer-offsets.comp.out | 1 + 1 file changed, 1 insertion(+) diff --git a/Test/baseResults/hlsl.buffer-offsets.comp.out b/Test/baseResults/hlsl.buffer-offsets.comp.out index d92d0be9fe..c2204a6f46 100644 --- a/Test/baseResults/hlsl.buffer-offsets.comp.out +++ b/Test/baseResults/hlsl.buffer-offsets.comp.out @@ -55,6 +55,7 @@ local_size = (1, 1, 1) Decorate 17(bIterData) BufferBlock MemberDecorate 17(bIterData) 0 NonWritable MemberDecorate 17(bIterData) 0 Offset 0 + Decorate 19(bIterData) NonWritable Decorate 19(bIterData) Binding 2 Decorate 19(bIterData) DescriptorSet 0 2: TypeVoid From 53dad99378cc0b3a0c6ed4af51b2ab84c4fb656c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 06:12:30 +0000 Subject: [PATCH 566/594] Bump lukka/get-cmake from 3.30.2 to 3.30.3 Bumps [lukka/get-cmake](https://github.com/lukka/get-cmake) from 3.30.2 to 3.30.3. - [Release notes](https://github.com/lukka/get-cmake/releases) - [Commits](https://github.com/lukka/get-cmake/compare/a70f1cfa1857a3eecfe0d34962269e1b1e8be56c...070a0507a7abe157ef918deec391da1be197d2d1) --- updated-dependencies: - dependency-name: lukka/get-cmake dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 16 ++++++++-------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index b36bd66e5d..dd1e4d06c1 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -42,7 +42,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -106,7 +106,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -163,7 +163,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index d138553da0..08e17a9a9a 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -18,7 +18,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -54,7 +54,7 @@ jobs: flags: ['-fsanitize=address', '-fsanitize=thread', '-fsanitize=undefined'] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -95,7 +95,7 @@ jobs: - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 with: cmakeVersion: 3.17.2 - name: Setup ccache @@ -125,7 +125,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - run: ./update_glslang_sources.py - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON env: @@ -146,7 +146,7 @@ jobs: cmake_build_type: [Debug, Release] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' @@ -162,7 +162,7 @@ jobs: runs-on: macos-13 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: @@ -191,7 +191,7 @@ jobs: LEGACY: [ON, OFF] steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: @@ -217,7 +217,7 @@ jobs: - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 with: python-version: '3.7' - - uses: lukka/get-cmake@a70f1cfa1857a3eecfe0d34962269e1b1e8be56c # v3.30.2 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - name: Setup ccache uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 with: From c45da88fe9b82f3e116a81b41e6016dbc13a3cf0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 06:12:22 +0000 Subject: [PATCH 567/594] Bump github/codeql-action from 3.26.5 to 3.26.6 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.5 to 3.26.6. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/2c779ab0d087cd7fe7b826087247c2c81f27bfa6...4dd16135b69a43b6c8efb853346f8437d92d3c93) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 2d5c3b8a16..bd8742b531 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@2c779ab0d087cd7fe7b826087247c2c81f27bfa6 # v3.26.5 + uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 with: sarif_file: results.sarif From 45f2b112ceb8235c8e4eb2ae45e65d841aed44d6 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 2 Sep 2024 16:39:48 +0000 Subject: [PATCH 568/594] Bump actions/setup-python from 5.1.1 to 5.2.0 Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5.1.1 to 5.2.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/39cd14951b08e74b54015e9e001cdefcf80e669f...f677139bbe7f9c59b41e40162b753c062f5d49a3) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/continuous_deployment.yml | 6 +++--- .github/workflows/continuous_integration.yml | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index dd1e4d06c1..40a240b3ca 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -43,7 +43,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - name: Install Ubuntu Package Dependencies @@ -107,7 +107,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - run: ./update_glslang_sources.py @@ -164,7 +164,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - run: python update_glslang_sources.py diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index 08e17a9a9a..b8b6b2880b 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -19,7 +19,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - name: Setup ccache @@ -55,7 +55,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - name: Setup ccache @@ -92,7 +92,7 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 @@ -147,7 +147,7 @@ jobs: steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - run: python update_glslang_sources.py @@ -214,7 +214,7 @@ jobs: runs-on: ubuntu-22.04 steps: - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 - - uses: actions/setup-python@39cd14951b08e74b54015e9e001cdefcf80e669f # v5.1.1 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 with: python-version: '3.7' - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 From 9cd7ca26a20fa28ed5296e32e7070fd1a457f01f Mon Sep 17 00:00:00 2001 From: "U-NVIDIA.COM\\rjennings" Date: Mon, 26 Aug 2024 20:31:19 -0700 Subject: [PATCH 569/594] PP: Don't report certain error about '#' when #if'd out Don't report the following error when scanning inactive code (e.g. code inside #if 0): "error: '#' : (#) can be preceded in its line only by spaces or horizontal tab" Adds a variable to PpContext to say whether we're currently skipping over an inactive #if/#ifdef/#elif/#else, and don't report the error inside scanToken if true. fixes 3704 --- .../preprocess.inactive_stringify.vert.err | 0 .../preprocess.inactive_stringify.vert.out | 29 +++++++++++++++++++ Test/preprocess.inactive_stringify.vert | 28 ++++++++++++++++++ .../MachineIndependent/preprocessor/Pp.cpp | 6 ++-- .../preprocessor/PpContext.cpp | 3 +- .../preprocessor/PpContext.h | 5 +++- gtests/Pp.FromFile.cpp | 1 + 7 files changed, 68 insertions(+), 4 deletions(-) create mode 100644 Test/baseResults/preprocess.inactive_stringify.vert.err create mode 100755 Test/baseResults/preprocess.inactive_stringify.vert.out create mode 100755 Test/preprocess.inactive_stringify.vert diff --git a/Test/baseResults/preprocess.inactive_stringify.vert.err b/Test/baseResults/preprocess.inactive_stringify.vert.err new file mode 100644 index 0000000000..e69de29bb2 diff --git a/Test/baseResults/preprocess.inactive_stringify.vert.out b/Test/baseResults/preprocess.inactive_stringify.vert.out new file mode 100755 index 0000000000..70cf1de86d --- /dev/null +++ b/Test/baseResults/preprocess.inactive_stringify.vert.out @@ -0,0 +1,29 @@ +#version 460 + + + + + + + + + + + + + + + + + + + + + + + +void main() +{ + gl_Position = vec4(1.0); +} + diff --git a/Test/preprocess.inactive_stringify.vert b/Test/preprocess.inactive_stringify.vert new file mode 100755 index 0000000000..8f3a942552 --- /dev/null +++ b/Test/preprocess.inactive_stringify.vert @@ -0,0 +1,28 @@ +#version 460 + +// This tests that the preprocessor error +// "error: '#' : (#) can be preceded in its line only by spaces or horizontal tab" +// isn't enforced when inactive (e.g. inside #if 0) + +#if 0 +#define STRINGIFY(X) #X +#endif + +#define C 0 + +#if 1 +#ifdef A +#elif defined B +#elif C +// OK, since preprocessor evaluates to inactive +#define STRINGIFY(X) #X +#endif +#endif + +// OK in comments +// #define STRINGIFY(X) #X + +void main() +{ + gl_Position = vec4(1.0); +} \ No newline at end of file diff --git a/glslang/MachineIndependent/preprocessor/Pp.cpp b/glslang/MachineIndependent/preprocessor/Pp.cpp index 56f1f0b386..5b44b1304e 100644 --- a/glslang/MachineIndependent/preprocessor/Pp.cpp +++ b/glslang/MachineIndependent/preprocessor/Pp.cpp @@ -241,6 +241,7 @@ int TPpContext::CPPundef(TPpToken* ppToken) */ int TPpContext::CPPelse(int matchelse, TPpToken* ppToken) { + inElseSkip = true; int depth = 0; int token = scanToken(ppToken); @@ -297,7 +298,7 @@ int TPpContext::CPPelse(int matchelse, TPpToken* ppToken) elseSeen[elsetracker] = false; --elsetracker; } - + inElseSkip = false; return CPPif(ppToken); } } else if (nextAtom == PpAtomElse) { @@ -311,7 +312,8 @@ int TPpContext::CPPelse(int matchelse, TPpToken* ppToken) parseContext.ppError(ppToken->loc, "#elif after #else", "#elif", ""); } } - + + inElseSkip = false; return token; } diff --git a/glslang/MachineIndependent/preprocessor/PpContext.cpp b/glslang/MachineIndependent/preprocessor/PpContext.cpp index 70f511978c..f27204bc4a 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.cpp +++ b/glslang/MachineIndependent/preprocessor/PpContext.cpp @@ -88,7 +88,8 @@ TPpContext::TPpContext(TParseContextBase& pc, const std::string& rootFileName, T preamble(nullptr), strings(nullptr), previous_token('\n'), parseContext(pc), includer(inclr), inComment(false), rootFileName(rootFileName), currentSourceFile(rootFileName), - disableEscapeSequences(false) + disableEscapeSequences(false), + inElseSkip(false) { ifdepth = 0; for (elsetracker = 0; elsetracker < maxIfNesting; elsetracker++) diff --git a/glslang/MachineIndependent/preprocessor/PpContext.h b/glslang/MachineIndependent/preprocessor/PpContext.h index 1ec30491ce..3446f1e1c9 100644 --- a/glslang/MachineIndependent/preprocessor/PpContext.h +++ b/glslang/MachineIndependent/preprocessor/PpContext.h @@ -371,7 +371,7 @@ class TPpContext { break; popInput(); } - if (!inputStack.empty() && inputStack.back()->isStringInput()) { + if (!inputStack.empty() && inputStack.back()->isStringInput() && !inElseSkip) { if (token == '\n') { bool seenNumSign = false; for (int i = 0; i < (int)lastLineTokens.size() - 1;) { @@ -732,6 +732,9 @@ class TPpContext { std::istringstream strtodStream; bool disableEscapeSequences; + // True if we're skipping a section enclosed by #if/#ifdef/#elif/#else which was evaluated to + // be inactive, e.g. #if 0 + bool inElseSkip; }; } // end namespace glslang diff --git a/gtests/Pp.FromFile.cpp b/gtests/Pp.FromFile.cpp index 1f960847d3..9cadd226ee 100644 --- a/gtests/Pp.FromFile.cpp +++ b/gtests/Pp.FromFile.cpp @@ -69,6 +69,7 @@ INSTANTIATE_TEST_SUITE_P( "preprocessor.eof_missing.vert", "preprocess.arb_shading_language_include.vert", "preprocess.include_directive_missing_extension.vert", + "preprocess.inactive_stringify.vert" })), FileNameAsCustomTestSuffix ); From b1fac200c40d9c067ba77dd68010975905eb7b3c Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 23 Aug 2024 19:12:45 -0400 Subject: [PATCH 570/594] Add symbol visibility annotations to symbols in SPIRV/ Symbols in the SPIRV/ directory that are meant to be part of the public API of glslangnow have GLSLANG_EXPORT annotations that make sure they will be accessible when building glslang as a shared library if -fvisibility=hidden is enabled. --- SPIRV/GlslangToSpv.h | 17 +++++++++-------- SPIRV/Logger.h | 3 ++- SPIRV/SpvTools.h | 39 +++++++++++++++++++++------------------ SPIRV/disassemble.h | 4 +++- 4 files changed, 35 insertions(+), 28 deletions(-) diff --git a/SPIRV/GlslangToSpv.h b/SPIRV/GlslangToSpv.h index 95ea891bfe..9fb4f3fff7 100644 --- a/SPIRV/GlslangToSpv.h +++ b/SPIRV/GlslangToSpv.h @@ -39,6 +39,7 @@ #include #include "Logger.h" +#include "glslang/Include/visibility.h" namespace glslang { class TIntermediate; @@ -56,13 +57,13 @@ struct SpvOptions { bool optimizerAllowExpandedIDBound{false}; }; -void GetSpirvVersion(std::string&); -int GetSpirvGeneratorVersion(); -void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, - SpvOptions* options = nullptr); -void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, - spv::SpvBuildLogger* logger, SpvOptions* options = nullptr); -bool OutputSpvBin(const std::vector& spirv, const char* baseName); -bool OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName); +GLSLANG_EXPORT void GetSpirvVersion(std::string&); +GLSLANG_EXPORT int GetSpirvGeneratorVersion(); +GLSLANG_EXPORT void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, + SpvOptions* options = nullptr); +GLSLANG_EXPORT void GlslangToSpv(const glslang::TIntermediate& intermediate, std::vector& spirv, + spv::SpvBuildLogger* logger, SpvOptions* options = nullptr); +GLSLANG_EXPORT bool OutputSpvBin(const std::vector& spirv, const char* baseName); +GLSLANG_EXPORT bool OutputSpvHex(const std::vector& spirv, const char* baseName, const char* varName); } diff --git a/SPIRV/Logger.h b/SPIRV/Logger.h index 2e4ddaf517..dece1c4b52 100644 --- a/SPIRV/Logger.h +++ b/SPIRV/Logger.h @@ -37,6 +37,7 @@ #include #include +#include "glslang/Include/visibility.h" namespace spv { @@ -58,7 +59,7 @@ class SpvBuildLogger { // Returns all messages accumulated in the order of: // TBD functionalities, missing functionalities, warnings, errors. - std::string getAllMessages() const; + GLSLANG_EXPORT std::string getAllMessages() const; private: SpvBuildLogger(const SpvBuildLogger&); diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index a72d652c57..a238427033 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -49,6 +49,7 @@ #endif #include "glslang/MachineIndependent/Versions.h" +#include "glslang/Include/visibility.h" #include "GlslangToSpv.h" #include "Logger.h" @@ -59,44 +60,46 @@ namespace glslang { class TIntermediate; // Translate glslang's view of target versioning to what SPIRV-Tools uses. -spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger); +GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger); // Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. -void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); +GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); // Use the SPIRV-Tools disassembler to print SPIR-V with a provided SPIR-V environment. -void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, - spv_target_env requested_context); +GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv, + spv_target_env requested_context); // Apply the SPIRV-Tools validator to generated SPIR-V. -void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, - spv::SpvBuildLogger*, bool prelegalization); +GLSLANG_EXPORT void SpirvToolsValidate(const glslang::TIntermediate& intermediate, std::vector& spirv, + spv::SpvBuildLogger*, bool prelegalization); // Apply the SPIRV-Tools optimizer to generated SPIR-V. HLSL SPIR-V is legalized in the process. -void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector& spirv, - spv::SpvBuildLogger*, const SpvOptions*); +GLSLANG_EXPORT void SpirvToolsTransform(const glslang::TIntermediate& intermediate, std::vector& spirv, + spv::SpvBuildLogger*, const SpvOptions*); // Apply the SPIRV-Tools EliminateDeadInputComponents pass to generated SPIR-V. Put result in |spirv|. -void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector& spirv, - spv::SpvBuildLogger*); +GLSLANG_EXPORT void SpirvToolsEliminateDeadInputComponents(spv_target_env target_env, std::vector& spirv, + spv::SpvBuildLogger*); // Apply the SPIRV-Tools AnalyzeDeadOutputStores pass to generated SPIR-V. Put result in |live_locs|. // Return true if the result is valid. -bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, - std::unordered_set* live_locs, - std::unordered_set* live_builtins, spv::SpvBuildLogger*); +GLSLANG_EXPORT bool SpirvToolsAnalyzeDeadOutputStores(spv_target_env target_env, std::vector& spirv, + std::unordered_set* live_locs, + std::unordered_set* live_builtins, + spv::SpvBuildLogger*); // Apply the SPIRV-Tools EliminateDeadOutputStores and AggressiveDeadCodeElimination passes to generated SPIR-V using // |live_locs|. Put result in |spirv|. -void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector& spirv, - std::unordered_set* live_locs, - std::unordered_set* live_builtins, spv::SpvBuildLogger*); +GLSLANG_EXPORT void SpirvToolsEliminateDeadOutputStores(spv_target_env target_env, std::vector& spirv, + std::unordered_set* live_locs, + std::unordered_set* live_builtins, + spv::SpvBuildLogger*); // Apply the SPIRV-Tools optimizer to strip debug info from SPIR-V. This is implicitly done by // SpirvToolsTransform if spvOptions->stripDebugInfo is set, but can be called separately if // optimization is disabled. -void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate, - std::vector& spirv, spv::SpvBuildLogger*); +GLSLANG_EXPORT void SpirvToolsStripDebugInfo(const glslang::TIntermediate& intermediate, + std::vector& spirv, spv::SpvBuildLogger*); #endif diff --git a/SPIRV/disassemble.h b/SPIRV/disassemble.h index b6a4635775..3bded14f2f 100644 --- a/SPIRV/disassemble.h +++ b/SPIRV/disassemble.h @@ -43,10 +43,12 @@ #include #include +#include "glslang/Include/visibility.h" + namespace spv { // disassemble with glslang custom disassembler - void Disassemble(std::ostream& out, const std::vector&); + GLSLANG_EXPORT void Disassemble(std::ostream& out, const std::vector&); } // end namespace spv From a496a34b439022750d41d2ba04fbbe416ef81c9a Mon Sep 17 00:00:00 2001 From: Qingyuan Zheng Date: Mon, 26 Aug 2024 03:53:07 +0000 Subject: [PATCH 571/594] Sanitize debug source location tracking for implicit branch and return This patch tries to attach debug location of a branch/return instruction to its predecessor or the closing brace. If none could be found, no debug info should be emitted. --- SPIRV/GlslangToSpv.cpp | 26 +- SPIRV/SpvBuilder.cpp | 36 +- SPIRV/SpvBuilder.h | 16 +- Test/baseResults/hlsl.round.dx9.frag.out | 1 + Test/baseResults/spv.debugInfo.1.1.frag.out | 2 + Test/baseResults/spv.debugInfo.frag.out | 2 + .../spv.debuginfo.bufferref.glsl.frag.out | 4 +- .../spv.debuginfo.const_params.glsl.comp.out | 4 +- Test/baseResults/spv.debuginfo.glsl.comp.out | 1735 +++++++-------- Test/baseResults/spv.debuginfo.glsl.frag.out | 1249 +++++------ Test/baseResults/spv.debuginfo.glsl.geom.out | 4 +- Test/baseResults/spv.debuginfo.glsl.tesc.out | 719 +++---- Test/baseResults/spv.debuginfo.glsl.tese.out | 4 +- Test/baseResults/spv.debuginfo.glsl.vert.out | 4 +- Test/baseResults/spv.debuginfo.hlsl.comp.out | 1851 ++++++++--------- Test/baseResults/spv.debuginfo.hlsl.frag.out | 990 +++++---- Test/baseResults/spv.debuginfo.hlsl.tesc.out | 592 +++--- Test/baseResults/spv.debuginfo.hlsl.tese.out | 354 ++-- Test/baseResults/spv.debuginfo.hlsl.vert.out | 204 +- .../spv.debuginfo.implicit_br.glsl.frag.out | 325 +++ .../spv.debuginfo.include.glsl.frag.out | 110 +- .../spv.debuginfo.multiline.glsl.frag.out | 103 +- .../spv.debuginfo.rt_types.glsl.rgen.out | 4 +- .../spv.debuginfo.scalar_types.glsl.frag.out | 4 +- Test/baseResults/spv.pp.line.frag.out | 1 + Test/spv.debuginfo.implicit_br.glsl.frag | 60 + glslang/Include/intermediate.h | 15 +- glslang/MachineIndependent/glslang.y | 8 +- glslang/MachineIndependent/glslang_tab.cpp | 534 ++--- gtests/Spv.FromFile.cpp | 1 + 30 files changed, 4711 insertions(+), 4251 deletions(-) create mode 100644 Test/baseResults/spv.debuginfo.implicit_br.glsl.frag.out create mode 100644 Test/spv.debuginfo.implicit_br.glsl.frag diff --git a/SPIRV/GlslangToSpv.cpp b/SPIRV/GlslangToSpv.cpp index 2ca475c2c3..50851889ec 100644 --- a/SPIRV/GlslangToSpv.cpp +++ b/SPIRV/GlslangToSpv.cpp @@ -1558,7 +1558,7 @@ TGlslangToSpvTraverser::TGlslangToSpvTraverser(unsigned int spvVersion, else { builder.setEmitSpirvDebugInfo(); } - builder.setDebugSourceFile(glslangIntermediate->getSourceFile()); + builder.setDebugMainSourceFile(glslangIntermediate->getSourceFile()); // Set the source shader's text. If for SPV version 1.0, include // a preamble in comments stating the OpModuleProcessed instructions. @@ -2967,6 +2967,12 @@ bool TGlslangToSpvTraverser::visitAggregate(glslang::TVisit visit, glslang::TInt currentFunction->setDebugLineInfo(sourceFileId, loc.line, loc.column); } } else { + if (options.generateDebugInfo) { + if (glslangIntermediate->getSource() == glslang::EShSourceGlsl && node->getSequence().size() > 1) { + auto endLoc = node->getSequence()[1]->getAsAggregate()->getEndLoc(); + builder.setDebugSourceLocation(endLoc.line, endLoc.getFilename()); + } + } if (inEntryPoint) entryPointTerminated = true; builder.leaveFunction(); @@ -4120,7 +4126,7 @@ bool TGlslangToSpvTraverser::visitSwitch(glslang::TVisit /* visit */, glslang::T if (codeSegments[s]) codeSegments[s]->traverse(this); else - builder.addSwitchBreak(); + builder.addSwitchBreak(true); } breakForLoop.pop(); @@ -4144,7 +4150,7 @@ void TGlslangToSpvTraverser::visitConstantUnion(glslang::TIntermConstantUnion* n bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIntermLoop* node) { auto blocks = builder.makeNewLoop(); - builder.createBranch(&blocks.head); + builder.createBranch(true, &blocks.head); // Loop control: std::vector operands; @@ -4161,7 +4167,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn builder.createLoopMerge(&blocks.merge, &blocks.continue_target, control, operands); if (node->testFirst() && node->getTest()) { spv::Block& test = builder.makeNewBlock(); - builder.createBranch(&test); + builder.createBranch(true, &test); builder.setBuildPoint(&test); node->getTest()->traverse(this); @@ -4172,22 +4178,22 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn breakForLoop.push(true); if (node->getBody()) node->getBody()->traverse(this); - builder.createBranch(&blocks.continue_target); + builder.createBranch(true, &blocks.continue_target); breakForLoop.pop(); builder.setBuildPoint(&blocks.continue_target); if (node->getTerminal()) node->getTerminal()->traverse(this); - builder.createBranch(&blocks.head); + builder.createBranch(true, &blocks.head); } else { builder.setDebugSourceLocation(node->getLoc().line, node->getLoc().getFilename()); - builder.createBranch(&blocks.body); + builder.createBranch(true, &blocks.body); breakForLoop.push(true); builder.setBuildPoint(&blocks.body); if (node->getBody()) node->getBody()->traverse(this); - builder.createBranch(&blocks.continue_target); + builder.createBranch(true, &blocks.continue_target); breakForLoop.pop(); builder.setBuildPoint(&blocks.continue_target); @@ -4202,7 +4208,7 @@ bool TGlslangToSpvTraverser::visitLoop(glslang::TVisit /* visit */, glslang::TIn // TODO: unless there was a break/return/discard instruction // somewhere in the body, this is an infinite loop, so we should // issue a warning. - builder.createBranch(&blocks.head); + builder.createBranch(true, &blocks.head); } } builder.setBuildPoint(&blocks.merge); @@ -4238,7 +4244,7 @@ bool TGlslangToSpvTraverser::visitBranch(glslang::TVisit /* visit */, glslang::T if (breakForLoop.top()) builder.createLoopExit(); else - builder.addSwitchBreak(); + builder.addSwitchBreak(false); break; case glslang::EOpContinue: builder.createLoopContinue(); diff --git a/SPIRV/SpvBuilder.cpp b/SPIRV/SpvBuilder.cpp index caff5c114c..41a6b3db02 100644 --- a/SPIRV/SpvBuilder.cpp +++ b/SPIRV/SpvBuilder.cpp @@ -2182,6 +2182,10 @@ void Builder::addInstruction(std::unique_ptr inst) { buildPoint->addInstruction(std::move(inst)); } +void Builder::addInstructionNoDebugInfo(std::unique_ptr inst) { + buildPoint->addInstruction(std::move(inst)); +} + // Comments in header Function* Builder::makeEntryPoint(const char* entryPoint) { @@ -3659,6 +3663,7 @@ Builder::If::If(Id cond, unsigned int ctrl, Builder& gb) : // Save the current block, so that we can add in the flow control split when // makeEndIf is called. headerBlock = builder.getBuildPoint(); + builder.createSelectionMerge(mergeBlock, control); function->addBlock(thenBlock); builder.setBuildPoint(thenBlock); @@ -3668,7 +3673,7 @@ Builder::If::If(Id cond, unsigned int ctrl, Builder& gb) : void Builder::If::makeBeginElse() { // Close out the "then" by having it jump to the mergeBlock - builder.createBranch(mergeBlock); + builder.createBranch(true, mergeBlock); // Make the first else block and add it to the function elseBlock = new Block(builder.getUniqueId(), *function); @@ -3682,11 +3687,10 @@ void Builder::If::makeBeginElse() void Builder::If::makeEndIf() { // jump to the merge block - builder.createBranch(mergeBlock); + builder.createBranch(true, mergeBlock); // Go back to the headerBlock and make the flow control split builder.setBuildPoint(headerBlock); - builder.createSelectionMerge(mergeBlock, control); if (elseBlock) builder.createConditionalBranch(condition, thenBlock, elseBlock); else @@ -3732,10 +3736,10 @@ void Builder::makeSwitch(Id selector, unsigned int control, int numSegments, con } // Comments in header -void Builder::addSwitchBreak() +void Builder::addSwitchBreak(bool implicit) { // branch to the top of the merge block stack - createBranch(switchMerges.top()); + createBranch(implicit, switchMerges.top()); createAndSetNoPredecessorBlock("post-switch-break"); } @@ -3746,7 +3750,7 @@ void Builder::nextSwitchSegment(std::vector& segmentBlock, int nextSegme if (lastSegment >= 0) { // Close out previous segment by jumping, if necessary, to next segment if (! buildPoint->isTerminated()) - createBranch(segmentBlock[nextSegment]); + createBranch(true, segmentBlock[nextSegment]); } Block* block = segmentBlock[nextSegment]; block->getParent().addBlock(block); @@ -3758,7 +3762,7 @@ void Builder::endSwitch(std::vector& /*segmentBlock*/) { // Close out previous segment by jumping, if necessary, to next segment if (! buildPoint->isTerminated()) - addSwitchBreak(); + addSwitchBreak(true); switchMerges.top()->getParent().addBlock(switchMerges.top()); setBuildPoint(switchMerges.top()); @@ -3791,14 +3795,14 @@ Builder::LoopBlocks& Builder::makeNewLoop() void Builder::createLoopContinue() { - createBranch(&loops.top().continue_target); + createBranch(false, &loops.top().continue_target); // Set up a block for dead code. createAndSetNoPredecessorBlock("post-loop-continue"); } void Builder::createLoopExit() { - createBranch(&loops.top().merge); + createBranch(false, &loops.top().merge); // Set up a block for dead code. createAndSetNoPredecessorBlock("post-loop-break"); } @@ -4240,11 +4244,16 @@ void Builder::createAndSetNoPredecessorBlock(const char* /*name*/) } // Comments in header -void Builder::createBranch(Block* block) +void Builder::createBranch(bool implicit, Block* block) { Instruction* branch = new Instruction(OpBranch); branch->addIdOperand(block->getId()); - addInstruction(std::unique_ptr(branch)); + if (implicit) { + addInstructionNoDebugInfo(std::unique_ptr(branch)); + } + else { + addInstruction(std::unique_ptr(branch)); + } block->addPredecessor(buildPoint); } @@ -4277,7 +4286,10 @@ void Builder::createConditionalBranch(Id condition, Block* thenBlock, Block* els branch->addIdOperand(condition); branch->addIdOperand(thenBlock->getId()); branch->addIdOperand(elseBlock->getId()); - addInstruction(std::unique_ptr(branch)); + + // A conditional branch is always attached to a condition expression + addInstructionNoDebugInfo(std::unique_ptr(branch)); + thenBlock->addPredecessor(buildPoint); elseBlock->addPredecessor(buildPoint); } diff --git a/SPIRV/SpvBuilder.h b/SPIRV/SpvBuilder.h index d688436a6e..61b6aa57eb 100644 --- a/SPIRV/SpvBuilder.h +++ b/SPIRV/SpvBuilder.h @@ -108,7 +108,7 @@ class Builder { spv::Id getMainFileId() const { return mainFileId; } // Initialize the main source file name - void setDebugSourceFile(const std::string& file) + void setDebugMainSourceFile(const std::string& file) { if (trackDebugInfo) { dirtyLineTracker = true; @@ -420,8 +420,7 @@ class Builder { // Also reset current last DebugScope and current source line to unknown void setBuildPoint(Block* bp) { buildPoint = bp; - // TODO: Technically, change of build point should set line tracker dirty. But we'll have bad line info for - // branch instructions. Commenting this for now because at least this matches the old behavior. + dirtyLineTracker = true; dirtyScopeTracker = true; } Block* getBuildPoint() const { return buildPoint; } @@ -430,6 +429,11 @@ class Builder { // Optionally, additional debug info instructions may also be prepended. void addInstruction(std::unique_ptr inst); + // Append an instruction to the end of the current build point without prepending any debug instructions. + // This is useful for insertion of some debug info instructions themselves or some control flow instructions + // that are attached to its predecessor instruction. + void addInstructionNoDebugInfo(std::unique_ptr inst); + // Make the entry-point function. The returned pointer is only valid // for the lifetime of this builder. Function* makeEntryPoint(const char*); @@ -643,7 +647,7 @@ class Builder { const std::vector& valueToSegment, int defaultSegment, std::vector& segmentBB); // Add a branch to the innermost switch's merge block. - void addSwitchBreak(); + void addSwitchBreak(bool implicit); // Move to the next code segment, passing in the return argument in makeSwitch() void nextSwitchSegment(std::vector& segmentBB, int segment); @@ -865,7 +869,9 @@ class Builder { void dump(std::vector&) const; - void createBranch(Block* block); + // Add a branch to the target block. + // If set implicit, the branch instruction shouldn't have debug source location. + void createBranch(bool implicit, Block* block); void createConditionalBranch(Id condition, Block* thenBlock, Block* elseBlock); void createLoopMerge(Block* mergeBlock, Block* continueBlock, unsigned int control, const std::vector& operands); diff --git a/Test/baseResults/hlsl.round.dx9.frag.out b/Test/baseResults/hlsl.round.dx9.frag.out index d4ff02a2c9..5f539bb8c4 100644 --- a/Test/baseResults/hlsl.round.dx9.frag.out +++ b/Test/baseResults/hlsl.round.dx9.frag.out @@ -58,6 +58,7 @@ gl_FragCoord origin is upper left 10: TypeFunction 8(fvec4) 9(ptr) 5(main): 3 Function None 4 6: Label + Line 1 3 0 Return FunctionEnd Line 1 2 1 diff --git a/Test/baseResults/spv.debugInfo.1.1.frag.out b/Test/baseResults/spv.debugInfo.1.1.frag.out index 77fae61183..30543d665d 100644 --- a/Test/baseResults/spv.debugInfo.1.1.frag.out +++ b/Test/baseResults/spv.debugInfo.1.1.frag.out @@ -296,6 +296,7 @@ void main() Store 179 186 Branch 181 181: Label + Line 1 83 0 Return FunctionEnd Line 1 16 13 @@ -411,6 +412,7 @@ void main() Store 90 96 Branch 92 92: Label + Line 1 53 0 97: 10(float) Load 90 Line 1 51 0 98: 10(float) Load 56(result) diff --git a/Test/baseResults/spv.debugInfo.frag.out b/Test/baseResults/spv.debugInfo.frag.out index 2595211f11..05621a6627 100644 --- a/Test/baseResults/spv.debugInfo.frag.out +++ b/Test/baseResults/spv.debugInfo.frag.out @@ -297,6 +297,7 @@ void main() Store 179 186 Branch 181 181: Label + Line 1 83 0 Return FunctionEnd Line 1 16 13 @@ -412,6 +413,7 @@ void main() Store 90 96 Branch 92 92: Label + Line 1 53 0 97: 10(float) Load 90 Line 1 51 0 98: 10(float) Load 56(result) diff --git a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out index 8dc692052d..a117fd79f7 100644 --- a/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.bufferref.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.bufferref.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 146 +// Id's are bound by 148 Capability Shader Capability PhysicalStorageBufferAddressesEXT @@ -177,6 +177,7 @@ void main() { 138: 7(int) Constant 27 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 137 132 18 138 12 21 137 135(out_fragColor) 67 141: 39(float) Constant 1065353216 + 147: 7(int) Constant 28 14(main): 4 Function None 5 15: Label 53(meshData): 50(ptr) Variable Function @@ -226,5 +227,6 @@ void main() { 144: 39(float) CompositeExtract 139 2 145: 131(fvec4) CompositeConstruct 142 143 144 141 Store 135(out_fragColor) 145 + 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 147 147 12 12 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out index 5676d1c828..c36a72de2f 100644 --- a/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.const_params.glsl.comp.out @@ -1,7 +1,7 @@ spv.debuginfo.const_params.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 71 +// Id's are bound by 73 Capability Shader Extension "SPV_KHR_non_semantic_info" @@ -85,6 +85,7 @@ void main() 66: 22(fvec3) ConstantComposite 64 64 64 67: 24(fvec4) ConstantComposite 64 64 64 64 70: 7(int) Constant 13 + 72: 7(int) Constant 14 14(main): 4 Function None 5 15: Label 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 @@ -92,6 +93,7 @@ void main() 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 14(main) 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 70 70 12 12 68: 4 FunctionCall 33(function(f1;vf2;vf3;vf4;) 64 65 66 67 + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 37 72 72 12 12 Return FunctionEnd 33(function(f1;vf2;vf3;vf4;): 4 Function None 27 diff --git a/Test/baseResults/spv.debuginfo.glsl.comp.out b/Test/baseResults/spv.debuginfo.glsl.comp.out index 177054cad0..af04330444 100644 --- a/Test/baseResults/spv.debuginfo.glsl.comp.out +++ b/Test/baseResults/spv.debuginfo.glsl.comp.out @@ -1,14 +1,14 @@ spv.debuginfo.glsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 975 +// Id's are bound by 979 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 14 "main" 133 + EntryPoint GLCompute 14 "main" 135 ExecutionMode 14 LocalSize 10 10 1 2: String "spv.debuginfo.glsl.comp" 8: String "uint" @@ -210,29 +210,29 @@ void main() 95: String "particleCount" 98: String "UBO" 103: String "params" - 127: String "id" - 135: String "gl_GlobalInvocationID" - 141: String "index" - 167: String "bool" - 179: String "normal" - 185: String "pinned" - 187: String "Particle" - 193: String "particleIn" - 197: String "ParticleIn" - 202: String "" - 218: String "particleOut" - 221: String "ParticleOut" + 129: String "id" + 137: String "gl_GlobalInvocationID" + 143: String "index" + 169: String "bool" + 180: String "normal" + 186: String "pinned" + 188: String "Particle" + 194: String "particleIn" + 198: String "ParticleIn" + 203: String "" + 219: String "particleOut" + 222: String "ParticleOut" 249: String "force" 263: String "pos" 273: String "vel" - 577: String "f" - 626: String "sphereDist" - 677: String "calculateNormals" - 680: String "PushConsts" - 687: String "pushConsts" - 721: String "a" - 735: String "b" - 752: String "c" + 581: String "f" + 630: String "sphereDist" + 681: String "calculateNormals" + 684: String "PushConsts" + 691: String "pushConsts" + 725: String "a" + 739: String "b" + 756: String "c" Name 14 "main" Name 31 "springForce(vf3;vf3;f1;" Name 28 "p0" @@ -252,21 +252,21 @@ void main() MemberName 78(UBO) 9 "gravity" MemberName 78(UBO) 10 "particleCount" Name 101 "params" - Name 125 "id" - Name 133 "gl_GlobalInvocationID" - Name 139 "index" - Name 177 "Particle" - MemberName 177(Particle) 0 "pos" - MemberName 177(Particle) 1 "vel" - MemberName 177(Particle) 2 "uv" - MemberName 177(Particle) 3 "normal" - MemberName 177(Particle) 4 "pinned" - Name 191 "ParticleIn" - MemberName 191(ParticleIn) 0 "particleIn" - Name 200 "" - Name 216 "ParticleOut" - MemberName 216(ParticleOut) 0 "particleOut" - Name 225 "" + Name 127 "id" + Name 135 "gl_GlobalInvocationID" + Name 141 "index" + Name 178 "Particle" + MemberName 178(Particle) 0 "pos" + MemberName 178(Particle) 1 "vel" + MemberName 178(Particle) 2 "uv" + MemberName 178(Particle) 3 "normal" + MemberName 178(Particle) 4 "pinned" + Name 192 "ParticleIn" + MemberName 192(ParticleIn) 0 "particleIn" + Name 201 "" + Name 217 "ParticleOut" + MemberName 217(ParticleOut) 0 "particleOut" + Name 226 "" Name 247 "force" Name 261 "pos" Name 271 "vel" @@ -282,27 +282,27 @@ void main() Name 383 "param" Name 387 "param" Name 389 "param" - Name 425 "param" - Name 429 "param" + Name 427 "param" Name 431 "param" - Name 463 "param" - Name 467 "param" - Name 469 "param" - Name 509 "param" + Name 433 "param" + Name 466 "param" + Name 470 "param" + Name 472 "param" Name 513 "param" - Name 515 "param" - Name 551 "param" - Name 555 "param" - Name 557 "param" - Name 575 "f" - Name 624 "sphereDist" - Name 675 "PushConsts" - MemberName 675(PushConsts) 0 "calculateNormals" - Name 685 "pushConsts" - Name 697 "normal" - Name 719 "a" - Name 733 "b" - Name 750 "c" + Name 517 "param" + Name 519 "param" + Name 556 "param" + Name 560 "param" + Name 562 "param" + Name 579 "f" + Name 628 "sphereDist" + Name 679 "PushConsts" + MemberName 679(PushConsts) 0 "calculateNormals" + Name 689 "pushConsts" + Name 701 "normal" + Name 723 "a" + Name 737 "b" + Name 754 "c" Decorate 78(UBO) Block MemberDecorate 78(UBO) 0 Offset 0 MemberDecorate 78(UBO) 1 Offset 4 @@ -317,25 +317,25 @@ void main() MemberDecorate 78(UBO) 10 Offset 64 Decorate 101(params) Binding 2 Decorate 101(params) DescriptorSet 0 - Decorate 133(gl_GlobalInvocationID) BuiltIn GlobalInvocationId - MemberDecorate 177(Particle) 0 Offset 0 - MemberDecorate 177(Particle) 1 Offset 16 - MemberDecorate 177(Particle) 2 Offset 32 - MemberDecorate 177(Particle) 3 Offset 48 - MemberDecorate 177(Particle) 4 Offset 64 - Decorate 189 ArrayStride 80 - Decorate 191(ParticleIn) BufferBlock - MemberDecorate 191(ParticleIn) 0 Offset 0 - Decorate 200 Binding 0 - Decorate 200 DescriptorSet 0 - Decorate 214 ArrayStride 80 - Decorate 216(ParticleOut) BufferBlock - MemberDecorate 216(ParticleOut) 0 Offset 0 - Decorate 225 Binding 1 - Decorate 225 DescriptorSet 0 - Decorate 675(PushConsts) Block - MemberDecorate 675(PushConsts) 0 Offset 0 - Decorate 974 BuiltIn WorkgroupSize + Decorate 135(gl_GlobalInvocationID) BuiltIn GlobalInvocationId + MemberDecorate 178(Particle) 0 Offset 0 + MemberDecorate 178(Particle) 1 Offset 16 + MemberDecorate 178(Particle) 2 Offset 32 + MemberDecorate 178(Particle) 3 Offset 48 + MemberDecorate 178(Particle) 4 Offset 64 + Decorate 190 ArrayStride 80 + Decorate 192(ParticleIn) BufferBlock + MemberDecorate 192(ParticleIn) 0 Offset 0 + Decorate 201 Binding 0 + Decorate 201 DescriptorSet 0 + Decorate 215 ArrayStride 80 + Decorate 217(ParticleOut) BufferBlock + MemberDecorate 217(ParticleOut) 0 Offset 0 + Decorate 226 Binding 1 + Decorate 226 DescriptorSet 0 + Decorate 679(PushConsts) Block + MemberDecorate 679(PushConsts) 0 Offset 0 + Decorate 978 BuiltIn WorkgroupSize 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -402,68 +402,69 @@ void main() 104: 73(int) Constant 2 105: TypePointer Uniform 16(float) 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 41 12 - 121: TypeVector 7(int) 3 - 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 - 123: TypePointer Function 121(ivec3) - 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 122 22 12 - 128: 7(int) Constant 74 - 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 127 122 35 128 12 55 40 - 131: TypePointer Input 121(ivec3) - 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 122 39 12 -133(gl_GlobalInvocationID): 131(ptr) Variable Input - 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 135 122 35 128 12 38 135 133(gl_GlobalInvocationID) 82 - 137: TypePointer Function 7(int) - 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 - 142: 7(int) Constant 76 - 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 141 9 35 142 12 55 40 - 147: 73(int) Constant 10 - 148: TypePointer Uniform 73(int) - 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 41 12 - 159: 7(int) Constant 77 - 166: TypeBool - 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 167 10 41 12 - 174: 7(int) Constant 78 - 177(Particle): TypeStruct 71(fvec4) 71(fvec4) 71(fvec4) 71(fvec4) 16(float) - 180: 7(int) Constant 31 - 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 - 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 - 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 - 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 179 72 35 180 22 12 12 13 - 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 185 18 35 10 82 12 12 13 - 188: 7(int) Constant 81 - 186: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 187 39 35 188 12 38 187 12 13 178 181 182 183 184 - 189: TypeRuntimeArray 177(Particle) - 190: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 186 12 - 191(ParticleIn): TypeStruct 189 - 194: 7(int) Constant 36 - 195: 7(int) Constant 11 - 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 193 190 35 194 195 12 12 13 - 196: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 197 39 35 188 12 38 197 12 13 192 - 198: TypePointer Uniform 191(ParticleIn) - 199: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 196 41 12 - 200: 198(ptr) Variable Uniform - 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 202 196 35 188 12 38 202 200 82 - 203: 73(int) Constant 0 - 207: 73(int) Constant 4 - 210: 16(float) Constant 1065353216 - 214: TypeRuntimeArray 177(Particle) - 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 186 12 -216(ParticleOut): TypeStruct 214 - 219: 7(int) Constant 40 - 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 218 215 35 219 195 12 12 13 - 222: 7(int) Constant 82 - 220: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 221 39 35 222 12 38 221 12 13 217 - 223: TypePointer Uniform 216(ParticleOut) - 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 220 41 12 - 225: 223(ptr) Variable Uniform - 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 202 220 35 222 12 38 202 225 82 - 231: TypePointer Uniform 71(fvec4) - 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 41 12 - 238: 7(int) Constant 83 - 239: 73(int) Constant 1 - 240: 16(float) Constant 0 - 241: 71(fvec4) ConstantComposite 240 240 240 240 - 244: 7(int) Constant 84 + 119: 7(int) Constant 70 + 123: TypeVector 7(int) 3 + 124: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 9 13 + 125: TypePointer Function 123(ivec3) + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 124 22 12 + 130: 7(int) Constant 74 + 128: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 129 124 35 130 12 55 40 + 133: TypePointer Input 123(ivec3) + 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 124 39 12 +135(gl_GlobalInvocationID): 133(ptr) Variable Input + 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 137 124 35 130 12 38 137 135(gl_GlobalInvocationID) 82 + 139: TypePointer Function 7(int) + 140: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 22 12 + 144: 7(int) Constant 76 + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 143 9 35 144 12 55 40 + 149: 73(int) Constant 10 + 150: TypePointer Uniform 73(int) + 151: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 75 41 12 + 161: 7(int) Constant 77 + 168: TypeBool + 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 169 10 41 12 + 176: 7(int) Constant 78 + 178(Particle): TypeStruct 71(fvec4) 71(fvec4) 71(fvec4) 71(fvec4) 16(float) + 181: 7(int) Constant 31 + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 + 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 + 183: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 + 184: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 180 72 35 181 22 12 12 13 + 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 186 18 35 10 82 12 12 13 + 189: 7(int) Constant 81 + 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 188 39 35 189 12 38 188 12 13 179 182 183 184 185 + 190: TypeRuntimeArray 178(Particle) + 191: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 + 192(ParticleIn): TypeStruct 190 + 195: 7(int) Constant 36 + 196: 7(int) Constant 11 + 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 194 191 35 195 196 12 12 13 + 197: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 198 39 35 189 12 38 198 12 13 193 + 199: TypePointer Uniform 192(ParticleIn) + 200: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 197 41 12 + 201: 199(ptr) Variable Uniform + 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 203 197 35 189 12 38 203 201 82 + 204: 73(int) Constant 0 + 208: 73(int) Constant 4 + 211: 16(float) Constant 1065353216 + 215: TypeRuntimeArray 178(Particle) + 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 187 12 +217(ParticleOut): TypeStruct 215 + 220: 7(int) Constant 40 + 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 219 216 35 220 196 12 12 13 + 223: 7(int) Constant 82 + 221: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 222 39 35 223 12 38 222 12 13 218 + 224: TypePointer Uniform 217(ParticleOut) + 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 221 41 12 + 226: 224(ptr) Variable Uniform + 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 203 221 35 223 12 38 203 226 82 + 232: TypePointer Uniform 71(fvec4) + 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 72 41 12 + 239: 7(int) Constant 83 + 240: 73(int) Constant 1 + 241: 16(float) Constant 0 + 242: 71(fvec4) ConstantComposite 241 241 241 241 + 245: 7(int) Constant 84 250: 7(int) Constant 88 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 20 35 250 12 55 40 254: 73(int) Constant 9 @@ -481,76 +482,77 @@ void main() 370: 7(int) Constant 107 378: 7(int) Constant 108 398: 7(int) Constant 111 - 418: 7(int) Constant 112 - 424: 73(int) Constant 6 - 441: 7(int) Constant 115 - 457: 7(int) Constant 116 - 479: 7(int) Constant 119 - 503: 7(int) Constant 120 - 525: 7(int) Constant 123 - 545: 7(int) Constant 124 - 564: 73(int) Constant 3 - 568: 7(int) Constant 127 - 578: 7(int) Constant 130 - 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 577 20 35 578 12 55 40 - 588: 7(int) Constant 131 - 595: 16(float) Constant 1056964608 - 612: 7(int) Constant 132 - 627: 7(int) Constant 135 - 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 626 20 35 627 12 55 40 - 634: 73(int) Constant 8 - 641: 7(int) Constant 136 - 643: 73(int) Constant 7 - 646: 16(float) Constant 1008981770 - 654: 7(int) Constant 138 - 673: 7(int) Constant 140 - 675(PushConsts): TypeStruct 7(int) - 678: 7(int) Constant 63 - 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 677 9 35 678 22 12 12 13 - 681: 7(int) Constant 144 - 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 680 39 35 681 12 38 680 12 13 676 - 682: TypePointer PushConstant 675(PushConsts) - 683: 7(int) Constant 9 - 684: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 679 683 12 - 685(pushConsts): 682(ptr) Variable PushConstant - 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 687 679 35 681 12 38 687 685(pushConsts) 82 - 688: TypePointer PushConstant 7(int) - 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 683 12 - 699: 7(int) Constant 145 - 698: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 179 20 35 699 12 55 40 - 703: 19(fvec3) ConstantComposite 240 240 240 - 706: 7(int) Constant 147 - 714: 7(int) Constant 148 - 722: 7(int) Constant 149 - 720: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 721 20 35 722 12 55 40 - 736: 7(int) Constant 150 - 734: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 735 20 35 736 12 55 40 - 753: 7(int) Constant 151 - 751: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 752 20 35 753 12 55 40 - 768: 7(int) Constant 152 - 780: 7(int) Constant 154 - 792: 7(int) Constant 155 - 804: 7(int) Constant 156 - 817: 7(int) Constant 157 - 826: 7(int) Constant 158 - 839: 7(int) Constant 161 - 851: 7(int) Constant 162 - 859: 7(int) Constant 163 - 871: 7(int) Constant 164 - 884: 7(int) Constant 165 - 893: 7(int) Constant 166 - 905: 7(int) Constant 168 - 917: 7(int) Constant 169 - 926: 7(int) Constant 170 - 939: 7(int) Constant 171 - 951: 7(int) Constant 172 - 964: 7(int) Constant 175 - 973: 7(int) Constant 10 - 974: 121(ivec3) ConstantComposite 973 973 39 + 420: 7(int) Constant 112 + 426: 73(int) Constant 6 + 442: 7(int) Constant 115 + 460: 7(int) Constant 116 + 481: 7(int) Constant 119 + 507: 7(int) Constant 120 + 528: 7(int) Constant 123 + 550: 7(int) Constant 124 + 568: 73(int) Constant 3 + 572: 7(int) Constant 127 + 582: 7(int) Constant 130 + 580: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 581 20 35 582 12 55 40 + 592: 7(int) Constant 131 + 599: 16(float) Constant 1056964608 + 616: 7(int) Constant 132 + 631: 7(int) Constant 135 + 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 630 20 35 631 12 55 40 + 638: 73(int) Constant 8 + 645: 7(int) Constant 136 + 647: 73(int) Constant 7 + 650: 16(float) Constant 1008981770 + 658: 7(int) Constant 138 + 677: 7(int) Constant 140 + 679(PushConsts): TypeStruct 7(int) + 682: 7(int) Constant 63 + 680: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 681 9 35 682 22 12 12 13 + 685: 7(int) Constant 144 + 683: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 684 39 35 685 12 38 684 12 13 680 + 686: TypePointer PushConstant 679(PushConsts) + 687: 7(int) Constant 9 + 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 683 687 12 + 689(pushConsts): 686(ptr) Variable PushConstant + 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 691 683 35 685 12 38 691 689(pushConsts) 82 + 692: TypePointer PushConstant 7(int) + 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 9 687 12 + 703: 7(int) Constant 145 + 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 180 20 35 703 12 55 40 + 707: 19(fvec3) ConstantComposite 241 241 241 + 710: 7(int) Constant 147 + 718: 7(int) Constant 148 + 726: 7(int) Constant 149 + 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 20 35 726 12 55 40 + 740: 7(int) Constant 150 + 738: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 739 20 35 740 12 55 40 + 757: 7(int) Constant 151 + 755: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 756 20 35 757 12 55 40 + 772: 7(int) Constant 152 + 784: 7(int) Constant 154 + 796: 7(int) Constant 155 + 808: 7(int) Constant 156 + 821: 7(int) Constant 157 + 830: 7(int) Constant 158 + 842: 7(int) Constant 161 + 854: 7(int) Constant 162 + 862: 7(int) Constant 163 + 874: 7(int) Constant 164 + 887: 7(int) Constant 165 + 896: 7(int) Constant 166 + 908: 7(int) Constant 168 + 920: 7(int) Constant 169 + 929: 7(int) Constant 170 + 942: 7(int) Constant 171 + 954: 7(int) Constant 172 + 966: 7(int) Constant 175 + 976: 7(int) Constant 177 + 977: 7(int) Constant 10 + 978: 123(ivec3) ConstantComposite 977 977 39 14(main): 4 Function None 5 15: Label - 125(id): 123(ptr) Variable Function - 139(index): 137(ptr) Variable Function + 127(id): 125(ptr) Variable Function + 141(index): 139(ptr) Variable Function 247(force): 21(ptr) Variable Function 261(pos): 21(ptr) Variable Function 271(vel): 21(ptr) Variable Function @@ -566,125 +568,125 @@ void main() 383(param): 21(ptr) Variable Function 387(param): 21(ptr) Variable Function 389(param): 24(ptr) Variable Function - 425(param): 21(ptr) Variable Function - 429(param): 21(ptr) Variable Function - 431(param): 24(ptr) Variable Function - 463(param): 21(ptr) Variable Function - 467(param): 21(ptr) Variable Function - 469(param): 24(ptr) Variable Function - 509(param): 21(ptr) Variable Function + 427(param): 21(ptr) Variable Function + 431(param): 21(ptr) Variable Function + 433(param): 24(ptr) Variable Function + 466(param): 21(ptr) Variable Function + 470(param): 21(ptr) Variable Function + 472(param): 24(ptr) Variable Function 513(param): 21(ptr) Variable Function - 515(param): 24(ptr) Variable Function - 551(param): 21(ptr) Variable Function - 555(param): 21(ptr) Variable Function - 557(param): 24(ptr) Variable Function - 575(f): 21(ptr) Variable Function - 624(sphereDist): 21(ptr) Variable Function - 697(normal): 21(ptr) Variable Function - 719(a): 21(ptr) Variable Function - 733(b): 21(ptr) Variable Function - 750(c): 21(ptr) Variable Function - 119: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 56 56 12 12 - 118: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 14(main) - 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 128 128 12 12 - 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 126 125(id) 45 - 136: 121(ivec3) Load 133(gl_GlobalInvocationID) - Store 125(id) 136 - 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 142 142 12 12 - 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 140 139(index) 45 - 145: 137(ptr) AccessChain 125(id) 39 - 146: 7(int) Load 145 - 150: 148(ptr) AccessChain 101(params) 147 12 - 151: 73(int) Load 150 - 152: 7(int) Bitcast 151 - 153: 7(int) IMul 146 152 - 154: 137(ptr) AccessChain 125(id) 12 - 155: 7(int) Load 154 - 156: 7(int) IAdd 153 155 - Store 139(index) 156 - 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 159 159 12 12 - 157: 7(int) Load 139(index) - 160: 148(ptr) AccessChain 101(params) 147 12 - 161: 73(int) Load 160 - 162: 148(ptr) AccessChain 101(params) 147 39 + 517(param): 21(ptr) Variable Function + 519(param): 24(ptr) Variable Function + 556(param): 21(ptr) Variable Function + 560(param): 21(ptr) Variable Function + 562(param): 24(ptr) Variable Function + 579(f): 21(ptr) Variable Function + 628(sphereDist): 21(ptr) Variable Function + 701(normal): 21(ptr) Variable Function + 723(a): 21(ptr) Variable Function + 737(b): 21(ptr) Variable Function + 754(c): 21(ptr) Variable Function + 121: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 56 56 12 12 + 120: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 55 14(main) + 132: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 130 130 12 12 + 131: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 128 127(id) 45 + 138: 123(ivec3) Load 135(gl_GlobalInvocationID) + Store 127(id) 138 + 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 144 144 12 12 + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 142 141(index) 45 + 147: 139(ptr) AccessChain 127(id) 39 + 148: 7(int) Load 147 + 152: 150(ptr) AccessChain 101(params) 149 12 + 153: 73(int) Load 152 + 154: 7(int) Bitcast 153 + 155: 7(int) IMul 148 154 + 156: 139(ptr) AccessChain 127(id) 12 + 157: 7(int) Load 156 + 158: 7(int) IAdd 155 157 + Store 141(index) 158 + 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 161 161 12 12 + 159: 7(int) Load 141(index) + 162: 150(ptr) AccessChain 101(params) 149 12 163: 73(int) Load 162 - 164: 73(int) IMul 161 163 - 165: 7(int) Bitcast 164 - 169: 166(bool) UGreaterThan 157 165 - SelectionMerge 171 None - BranchConditional 169 170 171 - 170: Label - 172: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 174 174 12 12 + 164: 150(ptr) AccessChain 101(params) 149 39 + 165: 73(int) Load 164 + 166: 73(int) IMul 163 165 + 167: 7(int) Bitcast 166 + 171: 168(bool) UGreaterThan 159 167 + SelectionMerge 173 None + BranchConditional 171 172 173 + 172: Label + 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 176 176 12 12 Return - 171: Label - 205: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 188 188 12 12 - 204: 7(int) Load 139(index) - 208: 105(ptr) AccessChain 200 203 204 207 - 209: 16(float) Load 208 - 211: 166(bool) FOrdEqual 209 210 - SelectionMerge 213 None - BranchConditional 211 212 213 - 212: Label - 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 222 222 12 12 - 227: 7(int) Load 139(index) - 230: 7(int) Load 139(index) - 233: 231(ptr) AccessChain 225 203 230 203 - 234: 71(fvec4) Load 233 - 235: 231(ptr) AccessChain 225 203 227 203 - Store 235 234 - 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 238 238 12 12 - 236: 7(int) Load 139(index) - 242: 231(ptr) AccessChain 225 203 236 239 - Store 242 241 - 243: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 244 244 12 12 + 173: Label + 206: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 207: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 189 189 12 12 + 205: 7(int) Load 141(index) + 209: 105(ptr) AccessChain 201 204 205 208 + 210: 16(float) Load 209 + 212: 168(bool) FOrdEqual 210 211 + SelectionMerge 214 None + BranchConditional 212 213 214 + 213: Label + 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 223 223 12 12 + 228: 7(int) Load 141(index) + 231: 7(int) Load 141(index) + 234: 232(ptr) AccessChain 226 204 231 204 + 235: 71(fvec4) Load 234 + 236: 232(ptr) AccessChain 226 204 228 204 + Store 236 235 + 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 239 239 12 12 + 237: 7(int) Load 141(index) + 243: 232(ptr) AccessChain 226 204 237 240 + Store 243 242 + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 245 245 12 12 Return - 213: Label + 214: Label 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 250 250 12 12 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(force) 45 - 255: 231(ptr) AccessChain 101(params) 254 + 255: 232(ptr) AccessChain 101(params) 254 256: 71(fvec4) Load 255 257: 19(fvec3) VectorShuffle 256 256 0 1 2 - 258: 105(ptr) AccessChain 101(params) 239 + 258: 105(ptr) AccessChain 101(params) 240 259: 16(float) Load 258 260: 19(fvec3) VectorTimesScalar 257 259 Store 247(force) 260 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 264 264 12 12 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(pos) 45 - 267: 7(int) Load 139(index) - 268: 231(ptr) AccessChain 200 203 267 203 + 267: 7(int) Load 141(index) + 268: 232(ptr) AccessChain 201 204 267 204 269: 71(fvec4) Load 268 270: 19(fvec3) VectorShuffle 269 269 0 1 2 Store 261(pos) 270 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 274 274 12 12 275: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 272 271(vel) 45 - 277: 7(int) Load 139(index) - 278: 231(ptr) AccessChain 200 203 277 239 + 277: 7(int) Load 141(index) + 278: 232(ptr) AccessChain 201 204 277 240 279: 71(fvec4) Load 278 280: 19(fvec3) VectorShuffle 279 279 0 1 2 Store 271(vel) 280 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 283 283 12 12 - 281: 137(ptr) AccessChain 125(id) 12 + 281: 139(ptr) AccessChain 127(id) 12 284: 7(int) Load 281 - 285: 166(bool) UGreaterThan 284 12 + 285: 168(bool) UGreaterThan 284 12 SelectionMerge 287 None BranchConditional 285 286 287 286: Label 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 291 291 12 12 - 288: 7(int) Load 139(index) + 288: 7(int) Load 141(index) 292: 7(int) ISub 288 39 - 294: 231(ptr) AccessChain 200 203 292 203 + 294: 232(ptr) AccessChain 201 204 292 204 295: 71(fvec4) Load 294 296: 19(fvec3) VectorShuffle 295 295 0 1 2 Store 293(param) 296 298: 19(fvec3) Load 261(pos) Store 297(param) 298 - 300: 105(ptr) AccessChain 101(params) 207 + 300: 105(ptr) AccessChain 101(params) 208 301: 16(float) Load 300 Store 299(param) 301 302: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 293(param) 297(param) 299(param) @@ -695,27 +697,27 @@ void main() 287: Label 306: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 308 308 12 12 - 305: 137(ptr) AccessChain 125(id) 12 + 305: 139(ptr) AccessChain 127(id) 12 309: 7(int) Load 305 - 310: 148(ptr) AccessChain 101(params) 147 12 + 310: 150(ptr) AccessChain 101(params) 149 12 311: 73(int) Load 310 - 312: 73(int) ISub 311 239 + 312: 73(int) ISub 311 240 313: 7(int) Bitcast 312 - 314: 166(bool) ULessThan 309 313 + 314: 168(bool) ULessThan 309 313 SelectionMerge 316 None BranchConditional 314 315 316 315: Label 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 320 320 12 12 - 317: 7(int) Load 139(index) + 317: 7(int) Load 141(index) 321: 7(int) IAdd 317 39 - 323: 231(ptr) AccessChain 200 203 321 203 + 323: 232(ptr) AccessChain 201 204 321 204 324: 71(fvec4) Load 323 325: 19(fvec3) VectorShuffle 324 324 0 1 2 Store 322(param) 325 327: 19(fvec3) Load 261(pos) Store 326(param) 327 - 329: 105(ptr) AccessChain 101(params) 207 + 329: 105(ptr) AccessChain 101(params) 208 330: 16(float) Load 329 Store 328(param) 330 331: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 322(param) 326(param) 328(param) @@ -726,24 +728,24 @@ void main() 316: Label 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 337 337 12 12 - 334: 137(ptr) AccessChain 125(id) 39 + 334: 139(ptr) AccessChain 127(id) 39 338: 7(int) Load 334 - 339: 148(ptr) AccessChain 101(params) 147 39 + 339: 150(ptr) AccessChain 101(params) 149 39 340: 73(int) Load 339 - 341: 73(int) ISub 340 239 + 341: 73(int) ISub 340 240 342: 7(int) Bitcast 341 - 343: 166(bool) ULessThan 338 342 + 343: 168(bool) ULessThan 338 342 SelectionMerge 345 None BranchConditional 343 344 345 344: Label 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 349 349 12 12 - 346: 7(int) Load 139(index) - 350: 148(ptr) AccessChain 101(params) 147 12 + 346: 7(int) Load 141(index) + 350: 150(ptr) AccessChain 101(params) 149 12 351: 73(int) Load 350 352: 7(int) Bitcast 351 353: 7(int) IAdd 346 352 - 356: 231(ptr) AccessChain 200 203 353 203 + 356: 232(ptr) AccessChain 201 204 353 204 357: 71(fvec4) Load 356 358: 19(fvec3) VectorShuffle 357 357 0 1 2 Store 355(param) 358 @@ -760,20 +762,20 @@ void main() 345: Label 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 370 370 12 12 - 367: 137(ptr) AccessChain 125(id) 39 + 367: 139(ptr) AccessChain 127(id) 39 371: 7(int) Load 367 - 372: 166(bool) UGreaterThan 371 12 + 372: 168(bool) UGreaterThan 371 12 SelectionMerge 374 None BranchConditional 372 373 374 373: Label 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 377: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 378 378 12 12 - 375: 7(int) Load 139(index) - 379: 148(ptr) AccessChain 101(params) 147 12 + 375: 7(int) Load 141(index) + 379: 150(ptr) AccessChain 101(params) 149 12 380: 73(int) Load 379 381: 7(int) Bitcast 380 382: 7(int) ISub 375 381 - 384: 231(ptr) AccessChain 200 203 382 203 + 384: 232(ptr) AccessChain 201 204 382 204 385: 71(fvec4) Load 384 386: 19(fvec3) VectorShuffle 385 385 0 1 2 Store 383(param) 386 @@ -790,582 +792,585 @@ void main() 374: Label 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 397: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 398 398 12 12 - 395: 137(ptr) AccessChain 125(id) 12 + 395: 139(ptr) AccessChain 127(id) 12 399: 7(int) Load 395 - 400: 166(bool) UGreaterThan 399 12 + 400: 168(bool) UGreaterThan 399 12 SelectionMerge 402 None BranchConditional 400 401 402 401: Label 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 398 398 12 12 - 403: 137(ptr) AccessChain 125(id) 39 + 403: 139(ptr) AccessChain 127(id) 39 406: 7(int) Load 403 - 407: 148(ptr) AccessChain 101(params) 147 39 + 407: 150(ptr) AccessChain 101(params) 149 39 408: 73(int) Load 407 - 409: 73(int) ISub 408 239 + 409: 73(int) ISub 408 240 410: 7(int) Bitcast 409 - 411: 166(bool) ULessThan 406 410 + 411: 168(bool) ULessThan 406 410 Branch 402 402: Label - 412: 166(bool) Phi 400 374 411 401 - 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 412: 168(bool) Phi 400 374 411 401 + 415: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 416: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 398 398 12 12 SelectionMerge 414 None BranchConditional 412 413 414 413: Label - 416: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 418 418 12 12 - 415: 7(int) Load 139(index) - 419: 148(ptr) AccessChain 101(params) 147 12 - 420: 73(int) Load 419 - 421: 7(int) Bitcast 420 - 422: 7(int) IAdd 415 421 - 423: 7(int) ISub 422 39 - 426: 231(ptr) AccessChain 200 203 423 203 - 427: 71(fvec4) Load 426 - 428: 19(fvec3) VectorShuffle 427 427 0 1 2 - Store 425(param) 428 - 430: 19(fvec3) Load 261(pos) - Store 429(param) 430 - 432: 105(ptr) AccessChain 101(params) 424 - 433: 16(float) Load 432 - Store 431(param) 433 - 434: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 425(param) 429(param) 431(param) - 435: 19(fvec3) Load 247(force) - 436: 19(fvec3) FAdd 435 434 - Store 247(force) 436 + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 420 420 12 12 + 417: 7(int) Load 141(index) + 421: 150(ptr) AccessChain 101(params) 149 12 + 422: 73(int) Load 421 + 423: 7(int) Bitcast 422 + 424: 7(int) IAdd 417 423 + 425: 7(int) ISub 424 39 + 428: 232(ptr) AccessChain 201 204 425 204 + 429: 71(fvec4) Load 428 + 430: 19(fvec3) VectorShuffle 429 429 0 1 2 + Store 427(param) 430 + 432: 19(fvec3) Load 261(pos) + Store 431(param) 432 + 434: 105(ptr) AccessChain 101(params) 426 + 435: 16(float) Load 434 + Store 433(param) 435 + 436: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 427(param) 431(param) 433(param) + 437: 19(fvec3) Load 247(force) + 438: 19(fvec3) FAdd 437 436 + Store 247(force) 438 Branch 414 414: Label - 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 441 441 12 12 - 438: 137(ptr) AccessChain 125(id) 12 - 442: 7(int) Load 438 - 443: 166(bool) UGreaterThan 442 12 - SelectionMerge 445 None - BranchConditional 443 444 445 - 444: Label - 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 441 441 12 12 - 446: 137(ptr) AccessChain 125(id) 39 - 449: 7(int) Load 446 - 450: 166(bool) UGreaterThan 449 12 - Branch 445 - 445: Label - 451: 166(bool) Phi 443 414 450 444 - 475: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - SelectionMerge 453 None - BranchConditional 451 452 453 - 452: Label - 455: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 457 457 12 12 - 454: 7(int) Load 139(index) - 458: 148(ptr) AccessChain 101(params) 147 12 - 459: 73(int) Load 458 - 460: 7(int) Bitcast 459 - 461: 7(int) ISub 454 460 - 462: 7(int) ISub 461 39 - 464: 231(ptr) AccessChain 200 203 462 203 - 465: 71(fvec4) Load 464 - 466: 19(fvec3) VectorShuffle 465 465 0 1 2 - Store 463(param) 466 - 468: 19(fvec3) Load 261(pos) - Store 467(param) 468 - 470: 105(ptr) AccessChain 101(params) 424 - 471: 16(float) Load 470 - Store 469(param) 471 - 472: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 463(param) 467(param) 469(param) - 473: 19(fvec3) Load 247(force) - 474: 19(fvec3) FAdd 473 472 - Store 247(force) 474 - Branch 453 - 453: Label - 477: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 478: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 479 479 12 12 - 476: 137(ptr) AccessChain 125(id) 12 - 480: 7(int) Load 476 - 481: 148(ptr) AccessChain 101(params) 147 12 - 482: 73(int) Load 481 - 483: 73(int) ISub 482 239 - 484: 7(int) Bitcast 483 - 485: 166(bool) ULessThan 480 484 - SelectionMerge 487 None - BranchConditional 485 486 487 - 486: Label - 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 479 479 12 12 - 488: 137(ptr) AccessChain 125(id) 39 - 491: 7(int) Load 488 - 492: 148(ptr) AccessChain 101(params) 147 39 - 493: 73(int) Load 492 - 494: 73(int) ISub 493 239 - 495: 7(int) Bitcast 494 - 496: 166(bool) ULessThan 491 495 - Branch 487 - 487: Label - 497: 166(bool) Phi 485 453 496 486 - 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - SelectionMerge 499 None - BranchConditional 497 498 499 - 498: Label - 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 503 503 12 12 - 500: 7(int) Load 139(index) - 504: 148(ptr) AccessChain 101(params) 147 12 - 505: 73(int) Load 504 - 506: 7(int) Bitcast 505 - 507: 7(int) IAdd 500 506 - 508: 7(int) IAdd 507 39 - 510: 231(ptr) AccessChain 200 203 508 203 - 511: 71(fvec4) Load 510 - 512: 19(fvec3) VectorShuffle 511 511 0 1 2 - Store 509(param) 512 - 514: 19(fvec3) Load 261(pos) - Store 513(param) 514 - 516: 105(ptr) AccessChain 101(params) 424 - 517: 16(float) Load 516 - Store 515(param) 517 - 518: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 509(param) 513(param) 515(param) - 519: 19(fvec3) Load 247(force) - 520: 19(fvec3) FAdd 519 518 - Store 247(force) 520 - Branch 499 - 499: Label - 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 524: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 525 525 12 12 - 522: 137(ptr) AccessChain 125(id) 12 - 526: 7(int) Load 522 - 527: 148(ptr) AccessChain 101(params) 147 12 - 528: 73(int) Load 527 - 529: 73(int) ISub 528 239 - 530: 7(int) Bitcast 529 - 531: 166(bool) ULessThan 526 530 - SelectionMerge 533 None - BranchConditional 531 532 533 - 532: Label - 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 536: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 525 525 12 12 - 534: 137(ptr) AccessChain 125(id) 39 - 537: 7(int) Load 534 - 538: 166(bool) UGreaterThan 537 12 - Branch 533 - 533: Label - 539: 166(bool) Phi 531 499 538 532 - 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - SelectionMerge 541 None - BranchConditional 539 540 541 - 540: Label - 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 545 545 12 12 - 542: 7(int) Load 139(index) - 546: 148(ptr) AccessChain 101(params) 147 12 - 547: 73(int) Load 546 - 548: 7(int) Bitcast 547 - 549: 7(int) ISub 542 548 - 550: 7(int) IAdd 549 39 - 552: 231(ptr) AccessChain 200 203 550 203 - 553: 71(fvec4) Load 552 - 554: 19(fvec3) VectorShuffle 553 553 0 1 2 - Store 551(param) 554 - 556: 19(fvec3) Load 261(pos) - Store 555(param) 556 - 558: 105(ptr) AccessChain 101(params) 424 - 559: 16(float) Load 558 - Store 557(param) 559 - 560: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 551(param) 555(param) 557(param) - 561: 19(fvec3) Load 247(force) - 562: 19(fvec3) FAdd 561 560 - Store 247(force) 562 - Branch 541 - 541: Label - 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 568 568 12 12 - 565: 105(ptr) AccessChain 101(params) 564 - 569: 16(float) Load 565 - 570: 16(float) FNegate 569 - 571: 19(fvec3) Load 271(vel) - 572: 19(fvec3) VectorTimesScalar 571 570 - 573: 19(fvec3) Load 247(force) - 574: 19(fvec3) FAdd 573 572 - Store 247(force) 574 - 580: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 578 578 12 12 - 579: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 576 575(f) 45 - 581: 19(fvec3) Load 247(force) - 582: 105(ptr) AccessChain 101(params) 239 - 583: 16(float) Load 582 - 584: 16(float) FDiv 210 583 - 585: 19(fvec3) VectorTimesScalar 581 584 - Store 575(f) 585 - 587: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 588 588 12 12 - 586: 7(int) Load 139(index) - 589: 19(fvec3) Load 261(pos) - 590: 19(fvec3) Load 271(vel) - 591: 105(ptr) AccessChain 101(params) 203 - 592: 16(float) Load 591 - 593: 19(fvec3) VectorTimesScalar 590 592 - 594: 19(fvec3) FAdd 589 593 - 596: 19(fvec3) Load 575(f) - 597: 19(fvec3) VectorTimesScalar 596 595 - 598: 105(ptr) AccessChain 101(params) 203 - 599: 16(float) Load 598 - 600: 19(fvec3) VectorTimesScalar 597 599 - 601: 105(ptr) AccessChain 101(params) 203 - 602: 16(float) Load 601 - 603: 19(fvec3) VectorTimesScalar 600 602 - 604: 19(fvec3) FAdd 594 603 - 605: 16(float) CompositeExtract 604 0 - 606: 16(float) CompositeExtract 604 1 - 607: 16(float) CompositeExtract 604 2 - 608: 71(fvec4) CompositeConstruct 605 606 607 210 - 609: 231(ptr) AccessChain 225 203 586 203 - Store 609 608 - 611: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 612 612 12 12 - 610: 7(int) Load 139(index) - 613: 19(fvec3) Load 271(vel) - 614: 19(fvec3) Load 575(f) - 615: 105(ptr) AccessChain 101(params) 203 - 616: 16(float) Load 615 - 617: 19(fvec3) VectorTimesScalar 614 616 - 618: 19(fvec3) FAdd 613 617 - 619: 16(float) CompositeExtract 618 0 - 620: 16(float) CompositeExtract 618 1 - 621: 16(float) CompositeExtract 618 2 - 622: 71(fvec4) CompositeConstruct 619 620 621 240 - 623: 231(ptr) AccessChain 225 203 610 239 - Store 623 622 - 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 627 627 12 12 - 628: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 625 624(sphereDist) 45 - 630: 7(int) Load 139(index) - 631: 231(ptr) AccessChain 225 203 630 203 - 632: 71(fvec4) Load 631 - 633: 19(fvec3) VectorShuffle 632 632 0 1 2 - 635: 231(ptr) AccessChain 101(params) 634 + 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 441: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 442 442 12 12 + 439: 139(ptr) AccessChain 127(id) 12 + 443: 7(int) Load 439 + 444: 168(bool) UGreaterThan 443 12 + SelectionMerge 446 None + BranchConditional 444 445 446 + 445: Label + 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 442 442 12 12 + 447: 139(ptr) AccessChain 127(id) 39 + 450: 7(int) Load 447 + 451: 168(bool) UGreaterThan 450 12 + Branch 446 + 446: Label + 452: 168(bool) Phi 444 414 451 445 + 455: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 456: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 442 442 12 12 + SelectionMerge 454 None + BranchConditional 452 453 454 + 453: Label + 458: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 459: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 460 460 12 12 + 457: 7(int) Load 141(index) + 461: 150(ptr) AccessChain 101(params) 149 12 + 462: 73(int) Load 461 + 463: 7(int) Bitcast 462 + 464: 7(int) ISub 457 463 + 465: 7(int) ISub 464 39 + 467: 232(ptr) AccessChain 201 204 465 204 + 468: 71(fvec4) Load 467 + 469: 19(fvec3) VectorShuffle 468 468 0 1 2 + Store 466(param) 469 + 471: 19(fvec3) Load 261(pos) + Store 470(param) 471 + 473: 105(ptr) AccessChain 101(params) 426 + 474: 16(float) Load 473 + Store 472(param) 474 + 475: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 466(param) 470(param) 472(param) + 476: 19(fvec3) Load 247(force) + 477: 19(fvec3) FAdd 476 475 + Store 247(force) 477 + Branch 454 + 454: Label + 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 481 481 12 12 + 478: 139(ptr) AccessChain 127(id) 12 + 482: 7(int) Load 478 + 483: 150(ptr) AccessChain 101(params) 149 12 + 484: 73(int) Load 483 + 485: 73(int) ISub 484 240 + 486: 7(int) Bitcast 485 + 487: 168(bool) ULessThan 482 486 + SelectionMerge 489 None + BranchConditional 487 488 489 + 488: Label + 491: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 481 481 12 12 + 490: 139(ptr) AccessChain 127(id) 39 + 493: 7(int) Load 490 + 494: 150(ptr) AccessChain 101(params) 149 39 + 495: 73(int) Load 494 + 496: 73(int) ISub 495 240 + 497: 7(int) Bitcast 496 + 498: 168(bool) ULessThan 493 497 + Branch 489 + 489: Label + 499: 168(bool) Phi 487 454 498 488 + 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 503: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 481 481 12 12 + SelectionMerge 501 None + BranchConditional 499 500 501 + 500: Label + 505: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 507 507 12 12 + 504: 7(int) Load 141(index) + 508: 150(ptr) AccessChain 101(params) 149 12 + 509: 73(int) Load 508 + 510: 7(int) Bitcast 509 + 511: 7(int) IAdd 504 510 + 512: 7(int) IAdd 511 39 + 514: 232(ptr) AccessChain 201 204 512 204 + 515: 71(fvec4) Load 514 + 516: 19(fvec3) VectorShuffle 515 515 0 1 2 + Store 513(param) 516 + 518: 19(fvec3) Load 261(pos) + Store 517(param) 518 + 520: 105(ptr) AccessChain 101(params) 426 + 521: 16(float) Load 520 + Store 519(param) 521 + 522: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 513(param) 517(param) 519(param) + 523: 19(fvec3) Load 247(force) + 524: 19(fvec3) FAdd 523 522 + Store 247(force) 524 + Branch 501 + 501: Label + 526: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 528 528 12 12 + 525: 139(ptr) AccessChain 127(id) 12 + 529: 7(int) Load 525 + 530: 150(ptr) AccessChain 101(params) 149 12 + 531: 73(int) Load 530 + 532: 73(int) ISub 531 240 + 533: 7(int) Bitcast 532 + 534: 168(bool) ULessThan 529 533 + SelectionMerge 536 None + BranchConditional 534 535 536 + 535: Label + 538: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 539: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 528 528 12 12 + 537: 139(ptr) AccessChain 127(id) 39 + 540: 7(int) Load 537 + 541: 168(bool) UGreaterThan 540 12 + Branch 536 + 536: Label + 542: 168(bool) Phi 534 501 541 535 + 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 528 528 12 12 + SelectionMerge 544 None + BranchConditional 542 543 544 + 543: Label + 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 549: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 550 550 12 12 + 547: 7(int) Load 141(index) + 551: 150(ptr) AccessChain 101(params) 149 12 + 552: 73(int) Load 551 + 553: 7(int) Bitcast 552 + 554: 7(int) ISub 547 553 + 555: 7(int) IAdd 554 39 + 557: 232(ptr) AccessChain 201 204 555 204 + 558: 71(fvec4) Load 557 + 559: 19(fvec3) VectorShuffle 558 558 0 1 2 + Store 556(param) 559 + 561: 19(fvec3) Load 261(pos) + Store 560(param) 561 + 563: 105(ptr) AccessChain 101(params) 426 + 564: 16(float) Load 563 + Store 562(param) 564 + 565: 19(fvec3) FunctionCall 31(springForce(vf3;vf3;f1;) 556(param) 560(param) 562(param) + 566: 19(fvec3) Load 247(force) + 567: 19(fvec3) FAdd 566 565 + Store 247(force) 567 + Branch 544 + 544: Label + 570: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 571: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 572 572 12 12 + 569: 105(ptr) AccessChain 101(params) 568 + 573: 16(float) Load 569 + 574: 16(float) FNegate 573 + 575: 19(fvec3) Load 271(vel) + 576: 19(fvec3) VectorTimesScalar 575 574 + 577: 19(fvec3) Load 247(force) + 578: 19(fvec3) FAdd 577 576 + Store 247(force) 578 + 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 582 582 12 12 + 583: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 580 579(f) 45 + 585: 19(fvec3) Load 247(force) + 586: 105(ptr) AccessChain 101(params) 240 + 587: 16(float) Load 586 + 588: 16(float) FDiv 211 587 + 589: 19(fvec3) VectorTimesScalar 585 588 + Store 579(f) 589 + 591: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 592 592 12 12 + 590: 7(int) Load 141(index) + 593: 19(fvec3) Load 261(pos) + 594: 19(fvec3) Load 271(vel) + 595: 105(ptr) AccessChain 101(params) 204 + 596: 16(float) Load 595 + 597: 19(fvec3) VectorTimesScalar 594 596 + 598: 19(fvec3) FAdd 593 597 + 600: 19(fvec3) Load 579(f) + 601: 19(fvec3) VectorTimesScalar 600 599 + 602: 105(ptr) AccessChain 101(params) 204 + 603: 16(float) Load 602 + 604: 19(fvec3) VectorTimesScalar 601 603 + 605: 105(ptr) AccessChain 101(params) 204 + 606: 16(float) Load 605 + 607: 19(fvec3) VectorTimesScalar 604 606 + 608: 19(fvec3) FAdd 598 607 + 609: 16(float) CompositeExtract 608 0 + 610: 16(float) CompositeExtract 608 1 + 611: 16(float) CompositeExtract 608 2 + 612: 71(fvec4) CompositeConstruct 609 610 611 211 + 613: 232(ptr) AccessChain 226 204 590 204 + Store 613 612 + 615: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 616 616 12 12 + 614: 7(int) Load 141(index) + 617: 19(fvec3) Load 271(vel) + 618: 19(fvec3) Load 579(f) + 619: 105(ptr) AccessChain 101(params) 204 + 620: 16(float) Load 619 + 621: 19(fvec3) VectorTimesScalar 618 620 + 622: 19(fvec3) FAdd 617 621 + 623: 16(float) CompositeExtract 622 0 + 624: 16(float) CompositeExtract 622 1 + 625: 16(float) CompositeExtract 622 2 + 626: 71(fvec4) CompositeConstruct 623 624 625 241 + 627: 232(ptr) AccessChain 226 204 614 240 + Store 627 626 + 633: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 631 631 12 12 + 632: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 629 628(sphereDist) 45 + 634: 7(int) Load 141(index) + 635: 232(ptr) AccessChain 226 204 634 204 636: 71(fvec4) Load 635 637: 19(fvec3) VectorShuffle 636 636 0 1 2 - 638: 19(fvec3) FSub 633 637 - Store 624(sphereDist) 638 - 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 641 641 12 12 - 639: 19(fvec3) Load 624(sphereDist) - 642: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 639 - 644: 105(ptr) AccessChain 101(params) 643 - 645: 16(float) Load 644 - 647: 16(float) FAdd 645 646 - 648: 166(bool) FOrdLessThan 642 647 - SelectionMerge 650 None - BranchConditional 648 649 650 - 649: Label - 652: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 653: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 654 654 12 12 - 651: 7(int) Load 139(index) - 655: 231(ptr) AccessChain 101(params) 634 - 656: 71(fvec4) Load 655 - 657: 19(fvec3) VectorShuffle 656 656 0 1 2 - 658: 19(fvec3) Load 624(sphereDist) - 659: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 658 - 660: 105(ptr) AccessChain 101(params) 643 - 661: 16(float) Load 660 - 662: 16(float) FAdd 661 646 - 663: 19(fvec3) VectorTimesScalar 659 662 - 664: 19(fvec3) FAdd 657 663 - 665: 105(ptr) AccessChain 225 203 651 203 12 - 666: 16(float) CompositeExtract 664 0 - Store 665 666 - 667: 105(ptr) AccessChain 225 203 651 203 39 - 668: 16(float) CompositeExtract 664 1 - Store 667 668 - 669: 105(ptr) AccessChain 225 203 651 203 41 - 670: 16(float) CompositeExtract 664 2 + 639: 232(ptr) AccessChain 101(params) 638 + 640: 71(fvec4) Load 639 + 641: 19(fvec3) VectorShuffle 640 640 0 1 2 + 642: 19(fvec3) FSub 637 641 + Store 628(sphereDist) 642 + 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 645 645 12 12 + 643: 19(fvec3) Load 628(sphereDist) + 646: 16(float) ExtInst 3(GLSL.std.450) 66(Length) 643 + 648: 105(ptr) AccessChain 101(params) 647 + 649: 16(float) Load 648 + 651: 16(float) FAdd 649 650 + 652: 168(bool) FOrdLessThan 646 651 + SelectionMerge 654 None + BranchConditional 652 653 654 + 653: Label + 656: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 657: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 658 658 12 12 + 655: 7(int) Load 141(index) + 659: 232(ptr) AccessChain 101(params) 638 + 660: 71(fvec4) Load 659 + 661: 19(fvec3) VectorShuffle 660 660 0 1 2 + 662: 19(fvec3) Load 628(sphereDist) + 663: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 662 + 664: 105(ptr) AccessChain 101(params) 647 + 665: 16(float) Load 664 + 666: 16(float) FAdd 665 650 + 667: 19(fvec3) VectorTimesScalar 663 666 + 668: 19(fvec3) FAdd 661 667 + 669: 105(ptr) AccessChain 226 204 655 204 12 + 670: 16(float) CompositeExtract 668 0 Store 669 670 - 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 673 673 12 12 - 671: 7(int) Load 139(index) - 674: 231(ptr) AccessChain 225 203 671 239 - Store 674 241 - Branch 650 - 650: Label - 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 692: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 681 681 12 12 - 690: 688(ptr) AccessChain 685(pushConsts) 203 - 693: 7(int) Load 690 - 694: 166(bool) IEqual 693 39 - SelectionMerge 696 None - BranchConditional 694 695 696 - 695: Label - 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 699 699 12 12 - 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 698 697(normal) 45 - Store 697(normal) 703 - 705: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 706 706 12 12 - 704: 137(ptr) AccessChain 125(id) 39 - 707: 7(int) Load 704 - 708: 166(bool) UGreaterThan 707 12 - SelectionMerge 710 None - BranchConditional 708 709 710 - 709: Label - 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 714 714 12 12 - 711: 137(ptr) AccessChain 125(id) 12 - 715: 7(int) Load 711 - 716: 166(bool) UGreaterThan 715 12 - SelectionMerge 718 None - BranchConditional 716 717 718 - 717: Label - 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 725: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 722 722 12 12 - 723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 720 719(a) 45 - 726: 7(int) Load 139(index) - 727: 7(int) ISub 726 39 - 728: 231(ptr) AccessChain 200 203 727 203 - 729: 71(fvec4) Load 728 - 730: 19(fvec3) VectorShuffle 729 729 0 1 2 - 731: 19(fvec3) Load 261(pos) - 732: 19(fvec3) FSub 730 731 - Store 719(a) 732 - 738: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 736 736 12 12 - 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 734 733(b) 45 - 739: 7(int) Load 139(index) - 740: 148(ptr) AccessChain 101(params) 147 12 - 741: 73(int) Load 740 - 742: 7(int) Bitcast 741 - 743: 7(int) ISub 739 742 - 744: 7(int) ISub 743 39 - 745: 231(ptr) AccessChain 200 203 744 203 - 746: 71(fvec4) Load 745 - 747: 19(fvec3) VectorShuffle 746 746 0 1 2 - 748: 19(fvec3) Load 261(pos) - 749: 19(fvec3) FSub 747 748 - Store 733(b) 749 - 755: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 753 753 12 12 - 754: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 751 750(c) 45 - 756: 7(int) Load 139(index) - 757: 148(ptr) AccessChain 101(params) 147 12 - 758: 73(int) Load 757 - 759: 7(int) Bitcast 758 - 760: 7(int) ISub 756 759 - 761: 231(ptr) AccessChain 200 203 760 203 - 762: 71(fvec4) Load 761 - 763: 19(fvec3) VectorShuffle 762 762 0 1 2 - 764: 19(fvec3) Load 261(pos) - 765: 19(fvec3) FSub 763 764 - Store 750(c) 765 - 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 768 768 12 12 - 766: 19(fvec3) Load 719(a) - 769: 19(fvec3) Load 733(b) - 770: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 766 769 - 771: 19(fvec3) Load 733(b) - 772: 19(fvec3) Load 750(c) - 773: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 771 772 - 774: 19(fvec3) FAdd 770 773 - 775: 19(fvec3) Load 697(normal) - 776: 19(fvec3) FAdd 775 774 - Store 697(normal) 776 - Branch 718 - 718: Label - 778: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 779: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 780 780 12 12 - 777: 137(ptr) AccessChain 125(id) 12 - 781: 7(int) Load 777 - 782: 148(ptr) AccessChain 101(params) 147 12 - 783: 73(int) Load 782 - 784: 73(int) ISub 783 239 - 785: 7(int) Bitcast 784 - 786: 166(bool) ULessThan 781 785 - SelectionMerge 788 None - BranchConditional 786 787 788 - 787: Label - 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 792 792 12 12 - 789: 7(int) Load 139(index) - 793: 148(ptr) AccessChain 101(params) 147 12 - 794: 73(int) Load 793 - 795: 7(int) Bitcast 794 - 796: 7(int) ISub 789 795 - 797: 231(ptr) AccessChain 200 203 796 203 - 798: 71(fvec4) Load 797 - 799: 19(fvec3) VectorShuffle 798 798 0 1 2 - 800: 19(fvec3) Load 261(pos) - 801: 19(fvec3) FSub 799 800 - Store 719(a) 801 - 803: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 804 804 12 12 - 802: 7(int) Load 139(index) - 805: 148(ptr) AccessChain 101(params) 147 12 - 806: 73(int) Load 805 - 807: 7(int) Bitcast 806 - 808: 7(int) ISub 802 807 - 809: 7(int) IAdd 808 39 - 810: 231(ptr) AccessChain 200 203 809 203 - 811: 71(fvec4) Load 810 - 812: 19(fvec3) VectorShuffle 811 811 0 1 2 - 813: 19(fvec3) Load 261(pos) - 814: 19(fvec3) FSub 812 813 - Store 733(b) 814 - 816: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 817 817 12 12 - 815: 7(int) Load 139(index) - 818: 7(int) IAdd 815 39 - 819: 231(ptr) AccessChain 200 203 818 203 - 820: 71(fvec4) Load 819 - 821: 19(fvec3) VectorShuffle 820 820 0 1 2 - 822: 19(fvec3) Load 261(pos) - 823: 19(fvec3) FSub 821 822 - Store 750(c) 823 - 825: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 826 826 12 12 - 824: 19(fvec3) Load 719(a) - 827: 19(fvec3) Load 733(b) - 828: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 824 827 - 829: 19(fvec3) Load 733(b) - 830: 19(fvec3) Load 750(c) - 831: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 829 830 - 832: 19(fvec3) FAdd 828 831 - 833: 19(fvec3) Load 697(normal) - 834: 19(fvec3) FAdd 833 832 - Store 697(normal) 834 - Branch 788 - 788: Label - 835: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - Branch 710 - 710: Label - 837: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 838: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 839 839 12 12 - 836: 137(ptr) AccessChain 125(id) 39 - 840: 7(int) Load 836 - 841: 148(ptr) AccessChain 101(params) 147 39 - 842: 73(int) Load 841 - 843: 73(int) ISub 842 239 - 844: 7(int) Bitcast 843 - 845: 166(bool) ULessThan 840 844 - SelectionMerge 847 None - BranchConditional 845 846 847 - 846: Label - 849: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 850: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 851 851 12 12 - 848: 137(ptr) AccessChain 125(id) 12 - 852: 7(int) Load 848 - 853: 166(bool) UGreaterThan 852 12 - SelectionMerge 855 None - BranchConditional 853 854 855 - 854: Label - 857: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 858: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 859 859 12 12 - 856: 7(int) Load 139(index) - 860: 148(ptr) AccessChain 101(params) 147 12 - 861: 73(int) Load 860 - 862: 7(int) Bitcast 861 - 863: 7(int) IAdd 856 862 - 864: 231(ptr) AccessChain 200 203 863 203 - 865: 71(fvec4) Load 864 - 866: 19(fvec3) VectorShuffle 865 865 0 1 2 - 867: 19(fvec3) Load 261(pos) - 868: 19(fvec3) FSub 866 867 - Store 719(a) 868 - 870: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 871 871 12 12 - 869: 7(int) Load 139(index) - 872: 148(ptr) AccessChain 101(params) 147 12 - 873: 73(int) Load 872 - 874: 7(int) Bitcast 873 - 875: 7(int) IAdd 869 874 - 876: 7(int) ISub 875 39 - 877: 231(ptr) AccessChain 200 203 876 203 - 878: 71(fvec4) Load 877 - 879: 19(fvec3) VectorShuffle 878 878 0 1 2 - 880: 19(fvec3) Load 261(pos) - 881: 19(fvec3) FSub 879 880 - Store 733(b) 881 - 883: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 884 884 12 12 - 882: 7(int) Load 139(index) - 885: 7(int) ISub 882 39 - 886: 231(ptr) AccessChain 200 203 885 203 - 887: 71(fvec4) Load 886 - 888: 19(fvec3) VectorShuffle 887 887 0 1 2 - 889: 19(fvec3) Load 261(pos) - 890: 19(fvec3) FSub 888 889 - Store 750(c) 890 - 892: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 893 893 12 12 - 891: 19(fvec3) Load 719(a) - 894: 19(fvec3) Load 733(b) - 895: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 891 894 - 896: 19(fvec3) Load 733(b) - 897: 19(fvec3) Load 750(c) - 898: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 896 897 - 899: 19(fvec3) FAdd 895 898 - 900: 19(fvec3) Load 697(normal) - 901: 19(fvec3) FAdd 900 899 - Store 697(normal) 901 - Branch 855 - 855: Label - 903: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 904: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 905 905 12 12 - 902: 137(ptr) AccessChain 125(id) 12 - 906: 7(int) Load 902 - 907: 148(ptr) AccessChain 101(params) 147 12 - 908: 73(int) Load 907 - 909: 73(int) ISub 908 239 - 910: 7(int) Bitcast 909 - 911: 166(bool) ULessThan 906 910 - SelectionMerge 913 None - BranchConditional 911 912 913 - 912: Label - 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 916: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 917 917 12 12 - 914: 7(int) Load 139(index) - 918: 7(int) IAdd 914 39 - 919: 231(ptr) AccessChain 200 203 918 203 - 920: 71(fvec4) Load 919 - 921: 19(fvec3) VectorShuffle 920 920 0 1 2 - 922: 19(fvec3) Load 261(pos) - 923: 19(fvec3) FSub 921 922 - Store 719(a) 923 - 925: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 926 926 12 12 - 924: 7(int) Load 139(index) - 927: 148(ptr) AccessChain 101(params) 147 12 - 928: 73(int) Load 927 - 929: 7(int) Bitcast 928 - 930: 7(int) IAdd 924 929 - 931: 7(int) IAdd 930 39 - 932: 231(ptr) AccessChain 200 203 931 203 - 933: 71(fvec4) Load 932 - 934: 19(fvec3) VectorShuffle 933 933 0 1 2 - 935: 19(fvec3) Load 261(pos) - 936: 19(fvec3) FSub 934 935 - Store 733(b) 936 - 938: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 939 939 12 12 - 937: 7(int) Load 139(index) - 940: 148(ptr) AccessChain 101(params) 147 12 - 941: 73(int) Load 940 - 942: 7(int) Bitcast 941 - 943: 7(int) IAdd 937 942 - 944: 231(ptr) AccessChain 200 203 943 203 - 945: 71(fvec4) Load 944 - 946: 19(fvec3) VectorShuffle 945 945 0 1 2 - 947: 19(fvec3) Load 261(pos) - 948: 19(fvec3) FSub 946 947 - Store 750(c) 948 - 950: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 951 951 12 12 - 949: 19(fvec3) Load 719(a) - 952: 19(fvec3) Load 733(b) - 953: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 949 952 - 954: 19(fvec3) Load 733(b) - 955: 19(fvec3) Load 750(c) - 956: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 954 955 - 957: 19(fvec3) FAdd 953 956 - 958: 19(fvec3) Load 697(normal) - 959: 19(fvec3) FAdd 958 957 - Store 697(normal) 959 - Branch 913 - 913: Label - 960: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - Branch 847 - 847: Label - 962: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 - 963: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 964 964 12 12 - 961: 7(int) Load 139(index) - 965: 19(fvec3) Load 697(normal) - 966: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 965 - 967: 16(float) CompositeExtract 966 0 - 968: 16(float) CompositeExtract 966 1 - 969: 16(float) CompositeExtract 966 2 - 970: 71(fvec4) CompositeConstruct 967 968 969 240 - 971: 231(ptr) AccessChain 225 203 961 564 - Store 971 970 - Branch 696 - 696: Label - 972: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 671: 105(ptr) AccessChain 226 204 655 204 39 + 672: 16(float) CompositeExtract 668 1 + Store 671 672 + 673: 105(ptr) AccessChain 226 204 655 204 41 + 674: 16(float) CompositeExtract 668 2 + Store 673 674 + 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 677 677 12 12 + 675: 7(int) Load 141(index) + 678: 232(ptr) AccessChain 226 204 675 240 + Store 678 242 + Branch 654 + 654: Label + 695: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 696: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 685 685 12 12 + 694: 692(ptr) AccessChain 689(pushConsts) 204 + 697: 7(int) Load 694 + 698: 168(bool) IEqual 697 39 + SelectionMerge 700 None + BranchConditional 698 699 700 + 699: Label + 705: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 706: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 703 703 12 12 + 704: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 702 701(normal) 45 + Store 701(normal) 707 + 709: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 710 710 12 12 + 708: 139(ptr) AccessChain 127(id) 39 + 711: 7(int) Load 708 + 712: 168(bool) UGreaterThan 711 12 + SelectionMerge 714 None + BranchConditional 712 713 714 + 713: Label + 716: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 717: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 718 718 12 12 + 715: 139(ptr) AccessChain 127(id) 12 + 719: 7(int) Load 715 + 720: 168(bool) UGreaterThan 719 12 + SelectionMerge 722 None + BranchConditional 720 721 722 + 721: Label + 728: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 726 726 12 12 + 727: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(a) 45 + 730: 7(int) Load 141(index) + 731: 7(int) ISub 730 39 + 732: 232(ptr) AccessChain 201 204 731 204 + 733: 71(fvec4) Load 732 + 734: 19(fvec3) VectorShuffle 733 733 0 1 2 + 735: 19(fvec3) Load 261(pos) + 736: 19(fvec3) FSub 734 735 + Store 723(a) 736 + 742: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 740 740 12 12 + 741: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 738 737(b) 45 + 743: 7(int) Load 141(index) + 744: 150(ptr) AccessChain 101(params) 149 12 + 745: 73(int) Load 744 + 746: 7(int) Bitcast 745 + 747: 7(int) ISub 743 746 + 748: 7(int) ISub 747 39 + 749: 232(ptr) AccessChain 201 204 748 204 + 750: 71(fvec4) Load 749 + 751: 19(fvec3) VectorShuffle 750 750 0 1 2 + 752: 19(fvec3) Load 261(pos) + 753: 19(fvec3) FSub 751 752 + Store 737(b) 753 + 759: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 757 757 12 12 + 758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 755 754(c) 45 + 760: 7(int) Load 141(index) + 761: 150(ptr) AccessChain 101(params) 149 12 + 762: 73(int) Load 761 + 763: 7(int) Bitcast 762 + 764: 7(int) ISub 760 763 + 765: 232(ptr) AccessChain 201 204 764 204 + 766: 71(fvec4) Load 765 + 767: 19(fvec3) VectorShuffle 766 766 0 1 2 + 768: 19(fvec3) Load 261(pos) + 769: 19(fvec3) FSub 767 768 + Store 754(c) 769 + 771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 772 772 12 12 + 770: 19(fvec3) Load 723(a) + 773: 19(fvec3) Load 737(b) + 774: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 770 773 + 775: 19(fvec3) Load 737(b) + 776: 19(fvec3) Load 754(c) + 777: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 775 776 + 778: 19(fvec3) FAdd 774 777 + 779: 19(fvec3) Load 701(normal) + 780: 19(fvec3) FAdd 779 778 + Store 701(normal) 780 + Branch 722 + 722: Label + 782: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 783: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 784 784 12 12 + 781: 139(ptr) AccessChain 127(id) 12 + 785: 7(int) Load 781 + 786: 150(ptr) AccessChain 101(params) 149 12 + 787: 73(int) Load 786 + 788: 73(int) ISub 787 240 + 789: 7(int) Bitcast 788 + 790: 168(bool) ULessThan 785 789 + SelectionMerge 792 None + BranchConditional 790 791 792 + 791: Label + 794: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 796 796 12 12 + 793: 7(int) Load 141(index) + 797: 150(ptr) AccessChain 101(params) 149 12 + 798: 73(int) Load 797 + 799: 7(int) Bitcast 798 + 800: 7(int) ISub 793 799 + 801: 232(ptr) AccessChain 201 204 800 204 + 802: 71(fvec4) Load 801 + 803: 19(fvec3) VectorShuffle 802 802 0 1 2 + 804: 19(fvec3) Load 261(pos) + 805: 19(fvec3) FSub 803 804 + Store 723(a) 805 + 807: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 808 808 12 12 + 806: 7(int) Load 141(index) + 809: 150(ptr) AccessChain 101(params) 149 12 + 810: 73(int) Load 809 + 811: 7(int) Bitcast 810 + 812: 7(int) ISub 806 811 + 813: 7(int) IAdd 812 39 + 814: 232(ptr) AccessChain 201 204 813 204 + 815: 71(fvec4) Load 814 + 816: 19(fvec3) VectorShuffle 815 815 0 1 2 + 817: 19(fvec3) Load 261(pos) + 818: 19(fvec3) FSub 816 817 + Store 737(b) 818 + 820: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 821 821 12 12 + 819: 7(int) Load 141(index) + 822: 7(int) IAdd 819 39 + 823: 232(ptr) AccessChain 201 204 822 204 + 824: 71(fvec4) Load 823 + 825: 19(fvec3) VectorShuffle 824 824 0 1 2 + 826: 19(fvec3) Load 261(pos) + 827: 19(fvec3) FSub 825 826 + Store 754(c) 827 + 829: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 830 830 12 12 + 828: 19(fvec3) Load 723(a) + 831: 19(fvec3) Load 737(b) + 832: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 828 831 + 833: 19(fvec3) Load 737(b) + 834: 19(fvec3) Load 754(c) + 835: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 833 834 + 836: 19(fvec3) FAdd 832 835 + 837: 19(fvec3) Load 701(normal) + 838: 19(fvec3) FAdd 837 836 + Store 701(normal) 838 + Branch 792 + 792: Label + Branch 714 + 714: Label + 840: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 841: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 842 842 12 12 + 839: 139(ptr) AccessChain 127(id) 39 + 843: 7(int) Load 839 + 844: 150(ptr) AccessChain 101(params) 149 39 + 845: 73(int) Load 844 + 846: 73(int) ISub 845 240 + 847: 7(int) Bitcast 846 + 848: 168(bool) ULessThan 843 847 + SelectionMerge 850 None + BranchConditional 848 849 850 + 849: Label + 852: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 853: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 854 854 12 12 + 851: 139(ptr) AccessChain 127(id) 12 + 855: 7(int) Load 851 + 856: 168(bool) UGreaterThan 855 12 + SelectionMerge 858 None + BranchConditional 856 857 858 + 857: Label + 860: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 861: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 862 862 12 12 + 859: 7(int) Load 141(index) + 863: 150(ptr) AccessChain 101(params) 149 12 + 864: 73(int) Load 863 + 865: 7(int) Bitcast 864 + 866: 7(int) IAdd 859 865 + 867: 232(ptr) AccessChain 201 204 866 204 + 868: 71(fvec4) Load 867 + 869: 19(fvec3) VectorShuffle 868 868 0 1 2 + 870: 19(fvec3) Load 261(pos) + 871: 19(fvec3) FSub 869 870 + Store 723(a) 871 + 873: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 874 874 12 12 + 872: 7(int) Load 141(index) + 875: 150(ptr) AccessChain 101(params) 149 12 + 876: 73(int) Load 875 + 877: 7(int) Bitcast 876 + 878: 7(int) IAdd 872 877 + 879: 7(int) ISub 878 39 + 880: 232(ptr) AccessChain 201 204 879 204 + 881: 71(fvec4) Load 880 + 882: 19(fvec3) VectorShuffle 881 881 0 1 2 + 883: 19(fvec3) Load 261(pos) + 884: 19(fvec3) FSub 882 883 + Store 737(b) 884 + 886: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 887 887 12 12 + 885: 7(int) Load 141(index) + 888: 7(int) ISub 885 39 + 889: 232(ptr) AccessChain 201 204 888 204 + 890: 71(fvec4) Load 889 + 891: 19(fvec3) VectorShuffle 890 890 0 1 2 + 892: 19(fvec3) Load 261(pos) + 893: 19(fvec3) FSub 891 892 + Store 754(c) 893 + 895: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 896 896 12 12 + 894: 19(fvec3) Load 723(a) + 897: 19(fvec3) Load 737(b) + 898: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 894 897 + 899: 19(fvec3) Load 737(b) + 900: 19(fvec3) Load 754(c) + 901: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 899 900 + 902: 19(fvec3) FAdd 898 901 + 903: 19(fvec3) Load 701(normal) + 904: 19(fvec3) FAdd 903 902 + Store 701(normal) 904 + Branch 858 + 858: Label + 906: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 907: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 908 908 12 12 + 905: 139(ptr) AccessChain 127(id) 12 + 909: 7(int) Load 905 + 910: 150(ptr) AccessChain 101(params) 149 12 + 911: 73(int) Load 910 + 912: 73(int) ISub 911 240 + 913: 7(int) Bitcast 912 + 914: 168(bool) ULessThan 909 913 + SelectionMerge 916 None + BranchConditional 914 915 916 + 915: Label + 918: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 919: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 920 920 12 12 + 917: 7(int) Load 141(index) + 921: 7(int) IAdd 917 39 + 922: 232(ptr) AccessChain 201 204 921 204 + 923: 71(fvec4) Load 922 + 924: 19(fvec3) VectorShuffle 923 923 0 1 2 + 925: 19(fvec3) Load 261(pos) + 926: 19(fvec3) FSub 924 925 + Store 723(a) 926 + 928: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 929 929 12 12 + 927: 7(int) Load 141(index) + 930: 150(ptr) AccessChain 101(params) 149 12 + 931: 73(int) Load 930 + 932: 7(int) Bitcast 931 + 933: 7(int) IAdd 927 932 + 934: 7(int) IAdd 933 39 + 935: 232(ptr) AccessChain 201 204 934 204 + 936: 71(fvec4) Load 935 + 937: 19(fvec3) VectorShuffle 936 936 0 1 2 + 938: 19(fvec3) Load 261(pos) + 939: 19(fvec3) FSub 937 938 + Store 737(b) 939 + 941: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 942 942 12 12 + 940: 7(int) Load 141(index) + 943: 150(ptr) AccessChain 101(params) 149 12 + 944: 73(int) Load 943 + 945: 7(int) Bitcast 944 + 946: 7(int) IAdd 940 945 + 947: 232(ptr) AccessChain 201 204 946 204 + 948: 71(fvec4) Load 947 + 949: 19(fvec3) VectorShuffle 948 948 0 1 2 + 950: 19(fvec3) Load 261(pos) + 951: 19(fvec3) FSub 949 950 + Store 754(c) 951 + 953: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 954 954 12 12 + 952: 19(fvec3) Load 723(a) + 955: 19(fvec3) Load 737(b) + 956: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 952 955 + 957: 19(fvec3) Load 737(b) + 958: 19(fvec3) Load 754(c) + 959: 19(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 957 958 + 960: 19(fvec3) FAdd 956 959 + 961: 19(fvec3) Load 701(normal) + 962: 19(fvec3) FAdd 961 960 + Store 701(normal) 962 + Branch 916 + 916: Label + Branch 850 + 850: Label + 964: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 965: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 966 966 12 12 + 963: 7(int) Load 141(index) + 967: 19(fvec3) Load 701(normal) + 968: 19(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 967 + 969: 16(float) CompositeExtract 968 0 + 970: 16(float) CompositeExtract 968 1 + 971: 16(float) CompositeExtract 968 2 + 972: 71(fvec4) CompositeConstruct 969 970 971 241 + 973: 232(ptr) AccessChain 226 204 963 568 + Store 973 972 + Branch 700 + 700: Label + 974: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 55 + 975: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 35 976 976 12 12 Return FunctionEnd 31(springForce(vf3;vf3;f1;): 19(fvec3) Function None 26 diff --git a/Test/baseResults/spv.debuginfo.glsl.frag.out b/Test/baseResults/spv.debuginfo.glsl.frag.out index 142107a33e..3214f97a14 100644 --- a/Test/baseResults/spv.debuginfo.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 877 +// Id's are bound by 879 Capability Shader Capability ImageQuery @@ -9,7 +9,7 @@ spv.debuginfo.glsl.frag 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 14 "main" 493 546 + EntryPoint Fragment 14 "main" 499 552 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.glsl.frag" 8: String "uint" @@ -230,38 +230,38 @@ void main() 105: String "global_var" 120: String "shadowCoord" 142: String "bool" - 162: String "dist" - 169: String "type.2d.image" - 170: String "@type.2d.image" - 174: String "type.sampled.image" - 175: String "@type.sampled.image" - 180: String "samplerShadowMap" - 230: String "texDim" - 242: String "scale" - 249: String "dx" - 263: String "dy" - 275: String "shadowFactor" - 281: String "count" - 287: String "range" - 294: String "x" - 314: String "y" - 379: String "i" - 397: String "shadowClip" - 407: String "color" - 412: String "viewMatrix" - 415: String "Light" - 421: String "lights" - 424: String "debugDisplayTarget" - 428: String "UBO" - 433: String "ubo" - 477: String "fragPos" - 489: String "samplerposition" - 495: String "inUV" - 501: String "normal" - 507: String "samplerNormal" - 514: String "albedo" - 520: String "samplerAlbedo" - 548: String "outFragColor" + 164: String "dist" + 171: String "type.2d.image" + 172: String "@type.2d.image" + 176: String "type.sampled.image" + 177: String "@type.sampled.image" + 182: String "samplerShadowMap" + 233: String "texDim" + 245: String "scale" + 252: String "dx" + 266: String "dy" + 278: String "shadowFactor" + 284: String "count" + 290: String "range" + 297: String "x" + 317: String "y" + 383: String "i" + 401: String "shadowClip" + 411: String "color" + 416: String "viewMatrix" + 419: String "Light" + 425: String "lights" + 428: String "debugDisplayTarget" + 432: String "UBO" + 437: String "ubo" + 483: String "fragPos" + 495: String "samplerposition" + 501: String "inUV" + 507: String "normal" + 513: String "samplerNormal" + 520: String "albedo" + 526: String "samplerAlbedo" + 554: String "outFragColor" 648: String "N" 672: String "L" 698: String "V" @@ -291,46 +291,46 @@ void main() Name 103 "global_var" Name 112 "shadow" Name 118 "shadowCoord" - Name 160 "dist" - Name 178 "samplerShadowMap" - Name 228 "texDim" - Name 240 "scale" - Name 247 "dx" - Name 261 "dy" - Name 273 "shadowFactor" - Name 279 "count" - Name 285 "range" - Name 292 "x" - Name 312 "y" - Name 345 "param" - Name 347 "param" - Name 349 "param" - Name 377 "i" - Name 395 "shadowClip" - Name 405 "Light" - MemberName 405(Light) 0 "position" - MemberName 405(Light) 1 "target" - MemberName 405(Light) 2 "color" - MemberName 405(Light) 3 "viewMatrix" - Name 418 "UBO" - MemberName 418(UBO) 0 "viewPos" - MemberName 418(UBO) 1 "lights" - MemberName 418(UBO) 2 "useShadows" - MemberName 418(UBO) 3 "debugDisplayTarget" - Name 431 "ubo" - Name 445 "shadowFactor" - Name 452 "param" - Name 454 "param" - Name 475 "fragPos" - Name 487 "samplerposition" - Name 493 "inUV" - Name 499 "normal" - Name 505 "samplerNormal" - Name 512 "albedo" - Name 518 "samplerAlbedo" - Name 546 "outFragColor" - Name 551 "param" - Name 554 "param" + Name 162 "dist" + Name 180 "samplerShadowMap" + Name 231 "texDim" + Name 243 "scale" + Name 250 "dx" + Name 264 "dy" + Name 276 "shadowFactor" + Name 282 "count" + Name 288 "range" + Name 295 "x" + Name 315 "y" + Name 348 "param" + Name 350 "param" + Name 352 "param" + Name 381 "i" + Name 399 "shadowClip" + Name 409 "Light" + MemberName 409(Light) 0 "position" + MemberName 409(Light) 1 "target" + MemberName 409(Light) 2 "color" + MemberName 409(Light) 3 "viewMatrix" + Name 422 "UBO" + MemberName 422(UBO) 0 "viewPos" + MemberName 422(UBO) 1 "lights" + MemberName 422(UBO) 2 "useShadows" + MemberName 422(UBO) 3 "debugDisplayTarget" + Name 435 "ubo" + Name 449 "shadowFactor" + Name 456 "param" + Name 458 "param" + Name 481 "fragPos" + Name 493 "samplerposition" + Name 499 "inUV" + Name 505 "normal" + Name 511 "samplerNormal" + Name 518 "albedo" + Name 524 "samplerAlbedo" + Name 552 "outFragColor" + Name 557 "param" + Name 560 "param" Name 636 "fragcolor" Name 646 "N" Name 654 "i" @@ -351,30 +351,30 @@ void main() Name 814 "spec" Name 861 "param" Name 866 "param" - Decorate 178(samplerShadowMap) Binding 5 - Decorate 178(samplerShadowMap) DescriptorSet 0 - MemberDecorate 405(Light) 0 Offset 0 - MemberDecorate 405(Light) 1 Offset 16 - MemberDecorate 405(Light) 2 Offset 32 - MemberDecorate 405(Light) 3 ColMajor - MemberDecorate 405(Light) 3 MatrixStride 16 - MemberDecorate 405(Light) 3 Offset 48 - Decorate 416 ArrayStride 112 - Decorate 418(UBO) Block - MemberDecorate 418(UBO) 0 Offset 0 - MemberDecorate 418(UBO) 1 Offset 16 - MemberDecorate 418(UBO) 2 Offset 352 - MemberDecorate 418(UBO) 3 Offset 356 - Decorate 431(ubo) Binding 4 - Decorate 431(ubo) DescriptorSet 0 - Decorate 487(samplerposition) Binding 1 - Decorate 487(samplerposition) DescriptorSet 0 - Decorate 493(inUV) Location 0 - Decorate 505(samplerNormal) Binding 2 - Decorate 505(samplerNormal) DescriptorSet 0 - Decorate 518(samplerAlbedo) Binding 3 - Decorate 518(samplerAlbedo) DescriptorSet 0 - Decorate 546(outFragColor) Location 0 + Decorate 180(samplerShadowMap) Binding 5 + Decorate 180(samplerShadowMap) DescriptorSet 0 + MemberDecorate 409(Light) 0 Offset 0 + MemberDecorate 409(Light) 1 Offset 16 + MemberDecorate 409(Light) 2 Offset 32 + MemberDecorate 409(Light) 3 ColMajor + MemberDecorate 409(Light) 3 MatrixStride 16 + MemberDecorate 409(Light) 3 Offset 48 + Decorate 420 ArrayStride 112 + Decorate 422(UBO) Block + MemberDecorate 422(UBO) 0 Offset 0 + MemberDecorate 422(UBO) 1 Offset 16 + MemberDecorate 422(UBO) 2 Offset 352 + MemberDecorate 422(UBO) 3 Offset 356 + Decorate 435(ubo) Binding 4 + Decorate 435(ubo) DescriptorSet 0 + Decorate 493(samplerposition) Binding 1 + Decorate 493(samplerposition) DescriptorSet 0 + Decorate 499(inUV) Location 0 + Decorate 511(samplerNormal) Binding 2 + Decorate 511(samplerNormal) DescriptorSet 0 + Decorate 524(samplerAlbedo) Binding 3 + Decorate 524(samplerAlbedo) DescriptorSet 0 + Decorate 552(outFragColor) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -448,147 +448,150 @@ void main() 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 142 10 28 12 146: 7(int) Constant 65 148: 16(float) Constant 3212836864 - 163: 7(int) Constant 67 - 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 162 18 41 163 12 40 20 - 167: TypeImage 16(float) 2D array sampled format:Unknown - 171: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 41 163 12 44 170 171 13 - 172: TypeSampledImage 167 - 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 12 41 163 12 44 175 171 13 - 176: TypePointer UniformConstant 172 - 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 173 12 12 -178(samplerShadowMap): 176(ptr) Variable UniformConstant - 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 180 173 41 163 12 44 180 178(samplerShadowMap) 107 - 194: 7(int) Constant 68 - 196: 16(float) Constant 0 - 209: 16(float) Constant 1048576000 - 212: 7(int) Constant 70 - 219: 7(int) Constant 73 - 224: TypeVector 98(int) 2 - 225: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 28 - 226: TypePointer Function 224(ivec2) - 227: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 225 23 12 - 231: 7(int) Constant 78 - 229: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 230 225 41 231 12 65 20 - 236: TypeVector 98(int) 3 - 237: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 13 - 243: 7(int) Constant 79 - 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 242 18 41 243 12 65 20 - 246: 16(float) Constant 1069547520 - 250: 7(int) Constant 80 - 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 249 18 41 250 12 65 20 - 255: TypePointer Function 98(int) - 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 23 12 - 264: 7(int) Constant 81 - 262: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 263 18 41 264 12 65 20 - 276: 7(int) Constant 83 - 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 276 12 65 20 - 282: 7(int) Constant 84 - 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 281 100 41 282 12 65 20 - 288: 7(int) Constant 85 - 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 287 100 41 288 12 65 20 - 291: 98(int) Constant 1 - 295: 7(int) Constant 87 - 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 294 100 41 295 12 65 20 - 315: 7(int) Constant 89 - 313: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 314 100 41 315 12 65 20 - 336: 7(int) Constant 91 - 355: 7(int) Constant 92 - 369: 7(int) Constant 96 - 380: 7(int) Constant 100 - 378: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 100 41 380 12 85 20 - 393: 98(int) Constant 3 - 398: 7(int) Constant 102 - 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 397 21 41 398 12 85 20 - 402: TypeMatrix 19(fvec4) 4 - 404: 141(bool) ConstantTrue - 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 404 - 405(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 402 - 408: 7(int) Constant 47 - 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 - 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 - 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 - 413: 7(int) Constant 48 - 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 412 403 41 413 23 12 12 13 - 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 415 45 41 398 12 44 415 12 13 406 409 410 411 - 416: TypeArray 405(Light) 13 - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 414 13 - 418(UBO): TypeStruct 19(fvec4) 416 98(int) 98(int) - 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 407 21 41 408 23 12 12 13 - 422: 7(int) Constant 54 - 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 421 417 41 422 107 12 12 13 - 425: 7(int) Constant 56 - 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 100 41 425 11 12 12 13 - 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 424 100 41 425 11 12 12 13 - 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 428 45 41 398 12 44 428 12 13 419 420 423 426 - 429: TypePointer Uniform 418(UBO) - 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 427 28 12 - 431(ubo): 429(ptr) Variable Uniform - 432: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 433 427 41 398 12 44 433 431(ubo) 107 - 435: TypePointer Uniform 402 - 436: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 403 28 12 - 447: 7(int) Constant 106 - 446: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 275 18 41 447 12 85 20 - 458: 7(int) Constant 111 - 468: 7(int) Constant 113 - 478: 7(int) Constant 119 - 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 477 75 41 478 12 96 20 - 481: TypeImage 16(float) 2D sampled format:Unknown - 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 169 12 41 478 12 44 170 171 13 - 483: TypeSampledImage 481 - 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 12 41 478 12 44 175 171 13 - 485: TypePointer UniformConstant 483 - 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 484 12 12 -487(samplerposition): 485(ptr) Variable UniformConstant - 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 489 484 41 478 12 44 489 487(samplerposition) 107 - 491: TypePointer Input 27(fvec2) - 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12 - 493(inUV): 491(ptr) Variable Input - 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 29 41 478 12 44 495 493(inUV) 107 - 502: 7(int) Constant 120 - 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 501 75 41 502 12 96 20 -505(samplerNormal): 485(ptr) Variable UniformConstant - 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 507 484 41 502 12 44 507 505(samplerNormal) 107 - 515: 7(int) Constant 121 - 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 514 21 41 515 12 96 20 -518(samplerAlbedo): 485(ptr) Variable UniformConstant - 519: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 520 484 41 515 12 44 520 518(samplerAlbedo) 107 - 524: TypePointer Uniform 98(int) - 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 28 12 - 528: 7(int) Constant 124 - 536: 7(int) Constant 125 - 544: TypePointer Output 19(fvec4) - 545: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 -546(outFragColor): 544(ptr) Variable Output - 549: 7(int) Constant 127 - 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 548 21 41 549 12 44 548 546(outFragColor) 107 - 550: 74(fvec3) ConstantComposite 117 117 117 - 557: TypePointer Output 16(float) - 558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 - 566: 7(int) Constant 128 - 572: 7(int) Constant 130 - 580: 7(int) Constant 131 - 586: 7(int) Constant 133 - 594: 7(int) Constant 134 - 600: 7(int) Constant 136 - 609: 7(int) Constant 137 - 615: 7(int) Constant 139 - 624: 7(int) Constant 140 - 631: 7(int) Constant 142 - 633: 7(int) Constant 143 + 165: 7(int) Constant 67 + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 18 41 165 12 40 20 + 169: TypeImage 16(float) 2D array sampled format:Unknown + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 12 41 165 12 44 172 173 13 + 174: TypeSampledImage 169 + 175: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 12 41 165 12 44 177 173 13 + 178: TypePointer UniformConstant 174 + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 175 12 12 +180(samplerShadowMap): 178(ptr) Variable UniformConstant + 181: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 182 175 41 165 12 44 182 180(samplerShadowMap) 107 + 196: 7(int) Constant 68 + 198: 16(float) Constant 0 + 213: 16(float) Constant 1048576000 + 216: 7(int) Constant 70 + 220: 7(int) Constant 73 + 225: 7(int) Constant 74 + 227: TypeVector 98(int) 2 + 228: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 28 + 229: TypePointer Function 227(ivec2) + 230: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 228 23 12 + 234: 7(int) Constant 78 + 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 233 228 41 234 12 65 20 + 239: TypeVector 98(int) 3 + 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 100 13 + 246: 7(int) Constant 79 + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 245 18 41 246 12 65 20 + 249: 16(float) Constant 1069547520 + 253: 7(int) Constant 80 + 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 252 18 41 253 12 65 20 + 258: TypePointer Function 98(int) + 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 23 12 + 267: 7(int) Constant 81 + 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 266 18 41 267 12 65 20 + 279: 7(int) Constant 83 + 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 18 41 279 12 65 20 + 285: 7(int) Constant 84 + 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 284 100 41 285 12 65 20 + 291: 7(int) Constant 85 + 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 290 100 41 291 12 65 20 + 294: 98(int) Constant 1 + 298: 7(int) Constant 87 + 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 297 100 41 298 12 65 20 + 318: 7(int) Constant 89 + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 100 41 318 12 65 20 + 339: 7(int) Constant 91 + 358: 7(int) Constant 92 + 371: 7(int) Constant 96 + 379: 7(int) Constant 97 + 384: 7(int) Constant 100 + 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 383 100 41 384 12 85 20 + 397: 98(int) Constant 3 + 402: 7(int) Constant 102 + 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 401 21 41 402 12 85 20 + 406: TypeMatrix 19(fvec4) 4 + 408: 141(bool) ConstantTrue + 407: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 108(DebugTypeMatrix) 21 20 408 + 409(Light): TypeStruct 19(fvec4) 19(fvec4) 19(fvec4) 406 + 412: 7(int) Constant 47 + 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13 + 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13 + 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13 + 417: 7(int) Constant 48 + 415: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 416 407 41 417 23 12 12 13 + 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 419 45 41 402 12 44 419 12 13 410 413 414 415 + 420: TypeArray 409(Light) 13 + 421: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 418 13 + 422(UBO): TypeStruct 19(fvec4) 420 98(int) 98(int) + 423: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 411 21 41 412 23 12 12 13 + 426: 7(int) Constant 54 + 424: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 425 421 41 426 107 12 12 13 + 429: 7(int) Constant 56 + 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 428 100 41 429 11 12 12 13 + 430: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 428 100 41 429 11 12 12 13 + 431: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 432 45 41 402 12 44 432 12 13 423 424 427 430 + 433: TypePointer Uniform 422(UBO) + 434: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 431 28 12 + 435(ubo): 433(ptr) Variable Uniform + 436: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 437 431 41 402 12 44 437 435(ubo) 107 + 439: TypePointer Uniform 406 + 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 407 28 12 + 451: 7(int) Constant 106 + 450: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 18 41 451 12 85 20 + 462: 7(int) Constant 111 + 472: 7(int) Constant 113 + 477: 7(int) Constant 114 + 484: 7(int) Constant 119 + 482: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 483 75 41 484 12 96 20 + 487: TypeImage 16(float) 2D sampled format:Unknown + 488: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 171 12 41 484 12 44 172 173 13 + 489: TypeSampledImage 487 + 490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 176 12 41 484 12 44 177 173 13 + 491: TypePointer UniformConstant 489 + 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 490 12 12 +493(samplerposition): 491(ptr) Variable UniformConstant + 494: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 495 490 41 484 12 44 495 493(samplerposition) 107 + 497: TypePointer Input 27(fvec2) + 498: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 29 45 12 + 499(inUV): 497(ptr) Variable Input + 500: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 501 29 41 484 12 44 501 499(inUV) 107 + 508: 7(int) Constant 120 + 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 507 75 41 508 12 96 20 +511(samplerNormal): 491(ptr) Variable UniformConstant + 512: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 513 490 41 508 12 44 513 511(samplerNormal) 107 + 521: 7(int) Constant 121 + 519: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 520 21 41 521 12 96 20 +524(samplerAlbedo): 491(ptr) Variable UniformConstant + 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 526 490 41 521 12 44 526 524(samplerAlbedo) 107 + 530: TypePointer Uniform 98(int) + 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 100 28 12 + 534: 7(int) Constant 124 + 542: 7(int) Constant 125 + 550: TypePointer Output 19(fvec4) + 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 13 12 +552(outFragColor): 550(ptr) Variable Output + 555: 7(int) Constant 127 + 553: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 554 21 41 555 12 44 554 552(outFragColor) 107 + 556: 74(fvec3) ConstantComposite 117 117 117 + 563: TypePointer Output 16(float) + 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 572: 7(int) Constant 128 + 577: 7(int) Constant 130 + 585: 7(int) Constant 131 + 590: 7(int) Constant 133 + 598: 7(int) Constant 134 + 603: 7(int) Constant 136 + 612: 7(int) Constant 137 + 617: 7(int) Constant 139 + 626: 7(int) Constant 140 + 632: 7(int) Constant 142 + 634: 7(int) Constant 143 638: 7(int) Constant 147 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 41 638 12 96 20 644: 16(float) Constant 1036831949 649: 7(int) Constant 149 647: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 648 75 41 649 12 96 20 656: 7(int) Constant 151 - 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 379 100 41 656 12 96 20 + 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 383 100 41 656 12 96 20 673: 7(int) Constant 154 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 672 75 41 673 12 96 20 678: TypePointer Uniform 19(fvec4) 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 28 12 687: 7(int) Constant 156 - 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 162 18 41 687 12 96 20 + 686: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 164 18 41 687 12 96 20 694: 7(int) Constant 157 699: 7(int) Constant 160 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 698 75 41 699 12 96 20 @@ -627,16 +630,17 @@ void main() 856: 7(int) Constant 188 865: 7(int) Constant 190 872: 7(int) Constant 193 + 878: 7(int) Constant 194 14(main): 4 Function None 5 15: Label - 475(fragPos): 76(ptr) Variable Function - 499(normal): 76(ptr) Variable Function - 512(albedo): 22(ptr) Variable Function - 551(param): 76(ptr) Variable Function - 554(param): 76(ptr) Variable Function + 481(fragPos): 76(ptr) Variable Function + 505(normal): 76(ptr) Variable Function + 518(albedo): 22(ptr) Variable Function + 557(param): 76(ptr) Variable Function + 560(param): 76(ptr) Variable Function 636(fragcolor): 76(ptr) Variable Function 646(N): 76(ptr) Variable Function - 654(i): 255(ptr) Variable Function + 654(i): 258(ptr) Variable Function 670(L): 76(ptr) Variable Function 685(dist): 25(ptr) Variable Function 696(V): 76(ptr) Variable Function @@ -657,145 +661,145 @@ void main() 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 110: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 106 106 12 12 Store 103(global_var) 108 - 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 97 97 12 12 - 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 14(main) - 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 478 478 12 12 - 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 476 475(fragPos) 49 - 490: 483 Load 487(samplerposition) - 496: 27(fvec2) Load 493(inUV) - 497: 19(fvec4) ImageSampleImplicitLod 490 496 - 498: 74(fvec3) VectorShuffle 497 497 0 1 2 - Store 475(fragPos) 498 - 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 502 502 12 12 - 503: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 500 499(normal) 49 - 508: 483 Load 505(samplerNormal) - 509: 27(fvec2) Load 493(inUV) - 510: 19(fvec4) ImageSampleImplicitLod 508 509 - 511: 74(fvec3) VectorShuffle 510 510 0 1 2 - Store 499(normal) 511 - 517: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 515 515 12 12 - 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(albedo) 49 - 521: 483 Load 518(samplerAlbedo) - 522: 27(fvec2) Load 493(inUV) - 523: 19(fvec4) ImageSampleImplicitLod 521 522 - Store 512(albedo) 523 - 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 528 528 12 12 - 526: 524(ptr) AccessChain 431(ubo) 393 - 529: 98(int) Load 526 - 530: 141(bool) SGreaterThan 529 108 - SelectionMerge 532 None - BranchConditional 530 531 532 - 531: Label - 534: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 535: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 536 536 12 12 - 533: 524(ptr) AccessChain 431(ubo) 393 - 537: 98(int) Load 533 - SelectionMerge 543 None - Switch 537 543 - case 1: 538 - case 2: 539 - case 3: 540 - case 4: 541 - case 5: 542 - 538: Label - 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 553: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 549 549 12 12 - Store 551(param) 550 - 555: 74(fvec3) Load 475(fragPos) - Store 554(param) 555 - 556: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 551(param) 554(param) - 559: 557(ptr) AccessChain 546(outFragColor) 12 - 560: 16(float) CompositeExtract 556 0 - Store 559 560 - 561: 557(ptr) AccessChain 546(outFragColor) 45 - 562: 16(float) CompositeExtract 556 1 - Store 561 562 - 563: 557(ptr) AccessChain 546(outFragColor) 28 - 564: 16(float) CompositeExtract 556 2 - Store 563 564 - 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 566 566 12 12 - Branch 543 - 539: Label - 570: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 479: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 480: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 97 97 12 12 + 478: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 96 14(main) + 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 484 484 12 12 + 485: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 482 481(fragPos) 49 + 496: 489 Load 493(samplerposition) + 502: 27(fvec2) Load 499(inUV) + 503: 19(fvec4) ImageSampleImplicitLod 496 502 + 504: 74(fvec3) VectorShuffle 503 503 0 1 2 + Store 481(fragPos) 504 + 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 508 508 12 12 + 509: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 506 505(normal) 49 + 514: 489 Load 511(samplerNormal) + 515: 27(fvec2) Load 499(inUV) + 516: 19(fvec4) ImageSampleImplicitLod 514 515 + 517: 74(fvec3) VectorShuffle 516 516 0 1 2 + Store 505(normal) 517 + 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 521 521 12 12 + 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 519 518(albedo) 49 + 527: 489 Load 524(samplerAlbedo) + 528: 27(fvec2) Load 499(inUV) + 529: 19(fvec4) ImageSampleImplicitLod 527 528 + Store 518(albedo) 529 + 533: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 534 534 12 12 + 532: 530(ptr) AccessChain 435(ubo) 397 + 535: 98(int) Load 532 + 536: 141(bool) SGreaterThan 535 108 + SelectionMerge 538 None + BranchConditional 536 537 538 + 537: Label + 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 542 542 12 12 + 539: 530(ptr) AccessChain 435(ubo) 397 + 543: 98(int) Load 539 + SelectionMerge 549 None + Switch 543 549 + case 1: 544 + case 2: 545 + case 3: 546 + case 4: 547 + case 5: 548 + 544: Label + 558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 555 555 12 12 + Store 557(param) 556 + 561: 74(fvec3) Load 481(fragPos) + Store 560(param) 561 + 562: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 557(param) 560(param) + 565: 563(ptr) AccessChain 552(outFragColor) 12 + 566: 16(float) CompositeExtract 562 0 + Store 565 566 + 567: 563(ptr) AccessChain 552(outFragColor) 45 + 568: 16(float) CompositeExtract 562 1 + Store 567 568 + 569: 563(ptr) AccessChain 552(outFragColor) 28 + 570: 16(float) CompositeExtract 562 2 + Store 569 570 571: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 572 572 12 12 - 569: 74(fvec3) Load 475(fragPos) - 573: 557(ptr) AccessChain 546(outFragColor) 12 - 574: 16(float) CompositeExtract 569 0 - Store 573 574 - 575: 557(ptr) AccessChain 546(outFragColor) 45 - 576: 16(float) CompositeExtract 569 1 - Store 575 576 - 577: 557(ptr) AccessChain 546(outFragColor) 28 - 578: 16(float) CompositeExtract 569 2 - Store 577 578 - 579: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 580 580 12 12 - Branch 543 - 540: Label - 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 585: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 586 586 12 12 - 583: 74(fvec3) Load 499(normal) - 587: 557(ptr) AccessChain 546(outFragColor) 12 - 588: 16(float) CompositeExtract 583 0 - Store 587 588 - 589: 557(ptr) AccessChain 546(outFragColor) 45 - 590: 16(float) CompositeExtract 583 1 - Store 589 590 - 591: 557(ptr) AccessChain 546(outFragColor) 28 - 592: 16(float) CompositeExtract 583 2 + Branch 549 + 545: Label + 575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 577 577 12 12 + 574: 74(fvec3) Load 481(fragPos) + 578: 563(ptr) AccessChain 552(outFragColor) 12 + 579: 16(float) CompositeExtract 574 0 + Store 578 579 + 580: 563(ptr) AccessChain 552(outFragColor) 45 + 581: 16(float) CompositeExtract 574 1 + Store 580 581 + 582: 563(ptr) AccessChain 552(outFragColor) 28 + 583: 16(float) CompositeExtract 574 2 + Store 582 583 + 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 585 585 12 12 + Branch 549 + 546: Label + 588: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 589: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 590 590 12 12 + 587: 74(fvec3) Load 505(normal) + 591: 563(ptr) AccessChain 552(outFragColor) 12 + 592: 16(float) CompositeExtract 587 0 Store 591 592 - 593: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 594 594 12 12 - Branch 543 - 541: Label - 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 599: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 600 600 12 12 - 597: 19(fvec4) Load 512(albedo) - 601: 74(fvec3) VectorShuffle 597 597 0 1 2 - 602: 557(ptr) AccessChain 546(outFragColor) 12 - 603: 16(float) CompositeExtract 601 0 - Store 602 603 - 604: 557(ptr) AccessChain 546(outFragColor) 45 - 605: 16(float) CompositeExtract 601 1 - Store 604 605 - 606: 557(ptr) AccessChain 546(outFragColor) 28 - 607: 16(float) CompositeExtract 601 2 - Store 606 607 - 608: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 609 609 12 12 - Branch 543 - 542: Label - 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 614: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 615 615 12 12 - 612: 19(fvec4) Load 512(albedo) - 616: 74(fvec3) VectorShuffle 612 612 3 3 3 - 617: 557(ptr) AccessChain 546(outFragColor) 12 - 618: 16(float) CompositeExtract 616 0 - Store 617 618 - 619: 557(ptr) AccessChain 546(outFragColor) 45 - 620: 16(float) CompositeExtract 616 1 + 593: 563(ptr) AccessChain 552(outFragColor) 45 + 594: 16(float) CompositeExtract 587 1 + Store 593 594 + 595: 563(ptr) AccessChain 552(outFragColor) 28 + 596: 16(float) CompositeExtract 587 2 + Store 595 596 + 597: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 598 598 12 12 + Branch 549 + 547: Label + 601: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 602: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 603 603 12 12 + 600: 19(fvec4) Load 518(albedo) + 604: 74(fvec3) VectorShuffle 600 600 0 1 2 + 605: 563(ptr) AccessChain 552(outFragColor) 12 + 606: 16(float) CompositeExtract 604 0 + Store 605 606 + 607: 563(ptr) AccessChain 552(outFragColor) 45 + 608: 16(float) CompositeExtract 604 1 + Store 607 608 + 609: 563(ptr) AccessChain 552(outFragColor) 28 + 610: 16(float) CompositeExtract 604 2 + Store 609 610 + 611: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 612 612 12 12 + Branch 549 + 548: Label + 615: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 616: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 617 617 12 12 + 614: 19(fvec4) Load 518(albedo) + 618: 74(fvec3) VectorShuffle 614 614 3 3 3 + 619: 563(ptr) AccessChain 552(outFragColor) 12 + 620: 16(float) CompositeExtract 618 0 Store 619 620 - 621: 557(ptr) AccessChain 546(outFragColor) 28 - 622: 16(float) CompositeExtract 616 2 + 621: 563(ptr) AccessChain 552(outFragColor) 45 + 622: 16(float) CompositeExtract 618 1 Store 621 622 - 623: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 624 624 12 12 - Branch 543 - 543: Label - 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 - 630: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 631 631 12 12 - 628: 557(ptr) AccessChain 546(outFragColor) 13 - Store 628 117 - 632: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 633 633 12 12 + 623: 563(ptr) AccessChain 552(outFragColor) 28 + 624: 16(float) CompositeExtract 618 2 + Store 623 624 + 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 626 626 12 12 + Branch 549 + 549: Label + 630: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 + 631: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 632 632 12 12 + 629: 563(ptr) AccessChain 552(outFragColor) 13 + Store 629 117 + 633: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 634 634 12 12 Return - 532: Label + 538: Label 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 641: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 638 638 12 12 639: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 637 636(fragcolor) 49 - 642: 19(fvec4) Load 512(albedo) + 642: 19(fvec4) Load 518(albedo) 643: 74(fvec3) VectorShuffle 642 642 0 1 2 645: 74(fvec3) VectorTimesScalar 643 644 Store 636(fragcolor) 645 651: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 649 649 12 12 650: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 647 646(N) 49 - 652: 74(fvec3) Load 499(normal) + 652: 74(fvec3) Load 505(normal) 653: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 652 Store 646(N) 653 658: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 @@ -811,17 +815,17 @@ void main() 667: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 668: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 666: 98(int) Load 654(i) - 669: 141(bool) SLessThan 666 393 + 669: 141(bool) SLessThan 666 397 BranchConditional 669 660 661 660: Label 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 673 673 12 12 674: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 671 670(L) 49 677: 98(int) Load 654(i) - 680: 678(ptr) AccessChain 431(ubo) 291 677 108 + 680: 678(ptr) AccessChain 435(ubo) 294 677 108 681: 19(fvec4) Load 680 682: 74(fvec3) VectorShuffle 681 681 0 1 2 - 683: 74(fvec3) Load 475(fragPos) + 683: 74(fvec3) Load 481(fragPos) 684: 74(fvec3) FSub 682 683 Store 670(L) 684 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 687 687 12 12 @@ -835,10 +839,10 @@ void main() Store 670(L) 695 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 699 699 12 12 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 697 696(V) 49 - 702: 678(ptr) AccessChain 431(ubo) 108 + 702: 678(ptr) AccessChain 435(ubo) 108 703: 19(fvec4) Load 702 704: 74(fvec3) VectorShuffle 703 703 0 1 2 - 705: 74(fvec3) Load 475(fragPos) + 705: 74(fvec3) Load 481(fragPos) 706: 74(fvec3) FSub 704 705 Store 696(V) 706 708: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 709 709 12 12 @@ -857,11 +861,11 @@ void main() 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 735 735 12 12 736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(dir) 49 738: 98(int) Load 654(i) - 739: 678(ptr) AccessChain 431(ubo) 291 738 108 + 739: 678(ptr) AccessChain 435(ubo) 294 738 108 740: 19(fvec4) Load 739 741: 74(fvec3) VectorShuffle 740 740 0 1 2 742: 98(int) Load 654(i) - 743: 678(ptr) AccessChain 431(ubo) 291 742 291 + 743: 678(ptr) AccessChain 435(ubo) 294 742 294 744: 19(fvec4) Load 743 745: 74(fvec3) VectorShuffle 744 744 0 1 2 746: 74(fvec3) FSub 741 745 @@ -884,14 +888,14 @@ void main() 771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 768 767(heightAttenuation) 49 773: 16(float) Load 725(lightRange) 774: 16(float) Load 685(dist) - 775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 196 774 + 775: 16(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 773 198 774 Store 767(heightAttenuation) 775 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 779 779 12 12 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(NdotL) 49 782: 74(fvec3) Load 646(N) 783: 74(fvec3) Load 670(L) 784: 16(float) Dot 782 783 - 785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 196 784 + 785: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 784 Store 776(NdotL) 785 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 789 789 12 12 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 787 786(diff) 49 @@ -910,13 +914,13 @@ void main() 810: 74(fvec3) Load 794(R) 811: 74(fvec3) Load 696(V) 812: 16(float) Dot 810 811 - 813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 196 812 + 813: 16(float) ExtInst 3(GLSL.std.450) 40(FMax) 198 812 Store 804(NdotR) 813 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 817 817 12 12 818: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 815 814(spec) 49 820: 16(float) Load 804(NdotR) 822: 16(float) ExtInst 3(GLSL.std.450) 26(Pow) 820 821 - 823: 25(ptr) AccessChain 512(albedo) 13 + 823: 25(ptr) AccessChain 518(albedo) 13 824: 16(float) Load 823 825: 16(float) FMul 822 824 827: 16(float) FMul 825 826 @@ -931,11 +935,11 @@ void main() 836: 16(float) Load 767(heightAttenuation) 837: 74(fvec3) VectorTimesScalar 835 836 838: 98(int) Load 654(i) - 840: 678(ptr) AccessChain 431(ubo) 291 838 839 + 840: 678(ptr) AccessChain 435(ubo) 294 838 839 841: 19(fvec4) Load 840 842: 74(fvec3) VectorShuffle 841 841 0 1 2 843: 74(fvec3) FMul 837 842 - 844: 19(fvec4) Load 512(albedo) + 844: 19(fvec4) Load 518(albedo) 845: 74(fvec3) VectorShuffle 844 844 0 1 2 846: 74(fvec3) FMul 843 845 847: 74(fvec3) Load 636(fragcolor) @@ -946,13 +950,13 @@ void main() 850: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 851: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 656 656 12 12 849: 98(int) Load 654(i) - 852: 98(int) IAdd 849 291 + 852: 98(int) IAdd 849 294 Store 654(i) 852 Branch 659 661: Label 854: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 96 855: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 856 856 12 12 - 853: 524(ptr) AccessChain 431(ubo) 839 + 853: 530(ptr) AccessChain 435(ubo) 839 857: 98(int) Load 853 858: 141(bool) SGreaterThan 857 108 SelectionMerge 860 None @@ -962,7 +966,7 @@ void main() 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 865 865 12 12 862: 74(fvec3) Load 636(fragcolor) Store 861(param) 862 - 867: 74(fvec3) Load 475(fragPos) + 867: 74(fvec3) Load 481(fragPos) Store 866(param) 867 868: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 861(param) 866(param) Store 636(fragcolor) 868 @@ -975,7 +979,8 @@ void main() 874: 16(float) CompositeExtract 869 1 875: 16(float) CompositeExtract 869 2 876: 19(fvec4) CompositeConstruct 873 874 875 117 - Store 546(outFragColor) 876 + Store 552(outFragColor) 876 + 877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 878 878 12 12 Return FunctionEnd 37(textureProj(vf4;f1;vf2;): 16(float) Function None 32 @@ -985,7 +990,7 @@ void main() 38: Label 112(shadow): 25(ptr) Variable Function 118(shadowCoord): 22(ptr) Variable Function - 160(dist): 25(ptr) Variable Function + 162(dist): 25(ptr) Variable Function 50: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 43 43 12 12 48: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 46 34(P) 49 @@ -1030,274 +1035,274 @@ void main() Branch 151 151: Label 157: 141(bool) Phi 149 38 156 150 - 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 160: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 161: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 146 146 12 12 SelectionMerge 159 None BranchConditional 157 158 159 158: Label - 165: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 163 163 12 12 - 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 161 160(dist) 49 - 181: 172 Load 178(samplerShadowMap) - 182: 19(fvec4) Load 118(shadowCoord) - 183: 27(fvec2) VectorShuffle 182 182 0 1 - 184: 27(fvec2) Load 36(offset) - 185: 27(fvec2) FAdd 183 184 - 186: 16(float) Load 35(layer) - 187: 16(float) CompositeExtract 185 0 - 188: 16(float) CompositeExtract 185 1 - 189: 74(fvec3) CompositeConstruct 187 188 186 - 190: 19(fvec4) ImageSampleImplicitLod 181 189 - 191: 16(float) CompositeExtract 190 0 - Store 160(dist) 191 - 193: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 - 192: 25(ptr) AccessChain 118(shadowCoord) 13 - 195: 16(float) Load 192 - 197: 141(bool) FOrdGreaterThan 195 196 - SelectionMerge 199 None - BranchConditional 197 198 199 - 198: Label - 201: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 202: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 194 194 12 12 - 200: 16(float) Load 160(dist) - 203: 25(ptr) AccessChain 118(shadowCoord) 28 - 204: 16(float) Load 203 - 205: 141(bool) FOrdLessThan 200 204 - Branch 199 - 199: Label - 206: 141(bool) Phi 197 158 205 198 - 213: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - SelectionMerge 208 None - BranchConditional 206 207 208 - 207: Label - 210: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 212 212 12 12 - Store 112(shadow) 209 - Branch 208 - 208: Label - 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 165 165 12 12 + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 163 162(dist) 49 + 183: 174 Load 180(samplerShadowMap) + 184: 19(fvec4) Load 118(shadowCoord) + 185: 27(fvec2) VectorShuffle 184 184 0 1 + 186: 27(fvec2) Load 36(offset) + 187: 27(fvec2) FAdd 185 186 + 188: 16(float) Load 35(layer) + 189: 16(float) CompositeExtract 187 0 + 190: 16(float) CompositeExtract 187 1 + 191: 74(fvec3) CompositeConstruct 189 190 188 + 192: 19(fvec4) ImageSampleImplicitLod 183 191 + 193: 16(float) CompositeExtract 192 0 + Store 162(dist) 193 + 195: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 196 196 12 12 + 194: 25(ptr) AccessChain 118(shadowCoord) 13 + 197: 16(float) Load 194 + 199: 141(bool) FOrdGreaterThan 197 198 + SelectionMerge 201 None + BranchConditional 199 200 201 + 200: Label + 203: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 204: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 196 196 12 12 + 202: 16(float) Load 162(dist) + 205: 25(ptr) AccessChain 118(shadowCoord) 28 + 206: 16(float) Load 205 + 207: 141(bool) FOrdLessThan 202 206 + Branch 201 + 201: Label + 208: 141(bool) Phi 199 158 207 200 + 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 196 196 12 12 + SelectionMerge 210 None + BranchConditional 208 209 210 + 209: Label + 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 216 216 12 12 + Store 112(shadow) 213 + Branch 210 + 210: Label Branch 159 159: Label - 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 - 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 219 219 12 12 - 216: 16(float) Load 112(shadow) - ReturnValue 216 + 218: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 40 + 219: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 220 220 12 12 + 217: 16(float) Load 112(shadow) + ReturnValue 217 FunctionEnd 62(filterPCF(vf4;f1;): 16(float) Function None 58 60(sc): 22(ptr) FunctionParameter 61(layer): 25(ptr) FunctionParameter 63: Label - 228(texDim): 226(ptr) Variable Function - 240(scale): 25(ptr) Variable Function - 247(dx): 25(ptr) Variable Function - 261(dy): 25(ptr) Variable Function -273(shadowFactor): 25(ptr) Variable Function - 279(count): 255(ptr) Variable Function - 285(range): 255(ptr) Variable Function - 292(x): 255(ptr) Variable Function - 312(y): 255(ptr) Variable Function - 345(param): 22(ptr) Variable Function - 347(param): 25(ptr) Variable Function - 349(param): 30(ptr) Variable Function + 231(texDim): 229(ptr) Variable Function + 243(scale): 25(ptr) Variable Function + 250(dx): 25(ptr) Variable Function + 264(dy): 25(ptr) Variable Function +276(shadowFactor): 25(ptr) Variable Function + 282(count): 258(ptr) Variable Function + 288(range): 258(ptr) Variable Function + 295(x): 258(ptr) Variable Function + 315(y): 258(ptr) Variable Function + 348(param): 22(ptr) Variable Function + 350(param): 25(ptr) Variable Function + 352(param): 30(ptr) Variable Function 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 66 66 12 12 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 67 60(sc) 49 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 72 61(layer) 49 - 223: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) - 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 231 231 12 12 - 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 229 228(texDim) 49 - 234: 172 Load 178(samplerShadowMap) - 235: 167 Image 234 - 238: 236(ivec3) ImageQuerySizeLod 235 108 - 239: 224(ivec2) VectorShuffle 238 238 0 1 - Store 228(texDim) 239 - 245: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 243 243 12 12 - 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 241 240(scale) 49 - Store 240(scale) 246 - 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 250 250 12 12 - 251: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 248 247(dx) 49 - 253: 16(float) Load 240(scale) - 254: 16(float) FMul 253 117 - 257: 255(ptr) AccessChain 228(texDim) 12 - 258: 98(int) Load 257 - 259: 16(float) ConvertSToF 258 - 260: 16(float) FDiv 254 259 - Store 247(dx) 260 - 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 264 264 12 12 - 265: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 262 261(dy) 49 - 267: 16(float) Load 240(scale) - 268: 16(float) FMul 267 117 - 269: 255(ptr) AccessChain 228(texDim) 45 - 270: 98(int) Load 269 - 271: 16(float) ConvertSToF 270 - 272: 16(float) FDiv 268 271 - Store 261(dy) 272 - 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 276 276 12 12 - 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 274 273(shadowFactor) 49 - Store 273(shadowFactor) 196 - 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 282 282 12 12 - 283: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 280 279(count) 49 - Store 279(count) 108 - 290: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 288 288 12 12 - 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 286 285(range) 49 - Store 285(range) 291 - 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 - 296: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 293 292(x) 49 - 298: 98(int) Load 285(range) - 299: 98(int) SNegate 298 - Store 292(x) 299 - Branch 300 - 300: Label - 304: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 305: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 - LoopMerge 302 303 None - Branch 306 - 306: Label - 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 309: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 - 307: 98(int) Load 292(x) - 310: 98(int) Load 285(range) - 311: 141(bool) SLessThanEqual 307 310 - BranchConditional 311 301 302 - 301: Label - 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 - 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 313 312(y) 49 - 319: 98(int) Load 285(range) - 320: 98(int) SNegate 319 - Store 312(y) 320 - Branch 321 - 321: Label - 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 - LoopMerge 323 324 None - Branch 327 - 327: Label - 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 - 328: 98(int) Load 312(y) - 331: 98(int) Load 285(range) - 332: 141(bool) SLessThanEqual 328 331 - BranchConditional 332 322 323 - 322: Label - 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 336 336 12 12 - 333: 16(float) Load 247(dx) - 337: 98(int) Load 292(x) - 338: 16(float) ConvertSToF 337 - 339: 16(float) FMul 333 338 - 340: 16(float) Load 261(dy) - 341: 98(int) Load 312(y) - 342: 16(float) ConvertSToF 341 - 343: 16(float) FMul 340 342 - 344: 27(fvec2) CompositeConstruct 339 343 - 346: 19(fvec4) Load 60(sc) - Store 345(param) 346 - 348: 16(float) Load 61(layer) - Store 347(param) 348 - Store 349(param) 344 - 350: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 345(param) 347(param) 349(param) - 351: 16(float) Load 273(shadowFactor) - 352: 16(float) FAdd 351 350 - Store 273(shadowFactor) 352 - 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 355 355 12 12 - 353: 98(int) Load 279(count) - 356: 98(int) IAdd 353 291 - Store 279(count) 356 + 226: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 65 62(filterPCF(vf4;f1;) + 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 234 234 12 12 + 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 232 231(texDim) 49 + 237: 174 Load 180(samplerShadowMap) + 238: 169 Image 237 + 241: 239(ivec3) ImageQuerySizeLod 238 108 + 242: 227(ivec2) VectorShuffle 241 241 0 1 + Store 231(texDim) 242 + 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 246 246 12 12 + 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 244 243(scale) 49 + Store 243(scale) 249 + 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 253 253 12 12 + 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 251 250(dx) 49 + 256: 16(float) Load 243(scale) + 257: 16(float) FMul 256 117 + 260: 258(ptr) AccessChain 231(texDim) 12 + 261: 98(int) Load 260 + 262: 16(float) ConvertSToF 261 + 263: 16(float) FDiv 257 262 + Store 250(dx) 263 + 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 267 267 12 12 + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 265 264(dy) 49 + 270: 16(float) Load 243(scale) + 271: 16(float) FMul 270 117 + 272: 258(ptr) AccessChain 231(texDim) 45 + 273: 98(int) Load 272 + 274: 16(float) ConvertSToF 273 + 275: 16(float) FDiv 271 274 + Store 264(dy) 275 + 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 279 279 12 12 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(shadowFactor) 49 + Store 276(shadowFactor) 198 + 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 285 285 12 12 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 283 282(count) 49 + Store 282(count) 108 + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 291 291 12 12 + 292: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 289 288(range) 49 + Store 288(range) 294 + 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12 + 299: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 296 295(x) 49 + 301: 98(int) Load 288(range) + 302: 98(int) SNegate 301 + Store 295(x) 302 + Branch 303 + 303: Label + 307: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 308: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12 + LoopMerge 305 306 None + Branch 309 + 309: Label + 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12 + 310: 98(int) Load 295(x) + 313: 98(int) Load 288(range) + 314: 141(bool) SLessThanEqual 310 313 + BranchConditional 314 304 305 + 304: Label + 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12 + 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(y) 49 + 322: 98(int) Load 288(range) + 323: 98(int) SNegate 322 + Store 315(y) 323 + Branch 324 + 324: Label + 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12 + LoopMerge 326 327 None + Branch 330 + 330: Label + 332: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12 + 331: 98(int) Load 315(y) + 334: 98(int) Load 288(range) + 335: 141(bool) SLessThanEqual 331 334 + BranchConditional 335 325 326 + 325: Label + 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 339 339 12 12 + 336: 16(float) Load 250(dx) + 340: 98(int) Load 295(x) + 341: 16(float) ConvertSToF 340 + 342: 16(float) FMul 336 341 + 343: 16(float) Load 264(dy) + 344: 98(int) Load 315(y) + 345: 16(float) ConvertSToF 344 + 346: 16(float) FMul 343 345 + 347: 27(fvec2) CompositeConstruct 342 346 + 349: 19(fvec4) Load 60(sc) + Store 348(param) 349 + 351: 16(float) Load 61(layer) + Store 350(param) 351 + Store 352(param) 347 + 353: 16(float) FunctionCall 37(textureProj(vf4;f1;vf2;) 348(param) 350(param) 352(param) + 354: 16(float) Load 276(shadowFactor) + 355: 16(float) FAdd 354 353 + Store 276(shadowFactor) 355 + 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 358 358 12 12 + 356: 98(int) Load 282(count) + 359: 98(int) IAdd 356 294 + Store 282(count) 359 + Branch 327 + 327: Label + 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 362: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 318 318 12 12 + 360: 98(int) Load 315(y) + 363: 98(int) IAdd 360 294 + Store 315(y) 363 Branch 324 - 324: Label - 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 359: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 315 315 12 12 - 357: 98(int) Load 312(y) - 360: 98(int) IAdd 357 291 - Store 312(y) 360 - Branch 321 - 323: Label - 361: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 326: Label + Branch 306 + 306: Label + 365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 298 298 12 12 + 364: 98(int) Load 295(x) + 367: 98(int) IAdd 364 294 + Store 295(x) 367 Branch 303 - 303: Label - 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 364: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 295 295 12 12 - 362: 98(int) Load 292(x) - 365: 98(int) IAdd 362 291 - Store 292(x) 365 - Branch 300 - 302: Label - 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 369 369 12 12 - 366: 16(float) Load 273(shadowFactor) - 370: 98(int) Load 279(count) - 371: 16(float) ConvertSToF 370 - 372: 16(float) FDiv 366 371 - ReturnValue 372 + 305: Label + 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 370: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 371 371 12 12 + 368: 16(float) Load 276(shadowFactor) + 372: 98(int) Load 282(count) + 373: 16(float) ConvertSToF 372 + 374: 16(float) FDiv 368 373 + ReturnValue 374 FunctionEnd 82(shadow(vf3;vf3;): 74(fvec3) Function None 78 80(fragcolor): 76(ptr) FunctionParameter 81(fragpos): 76(ptr) FunctionParameter 83: Label - 377(i): 255(ptr) Variable Function - 395(shadowClip): 22(ptr) Variable Function -445(shadowFactor): 25(ptr) Variable Function - 452(param): 22(ptr) Variable Function - 454(param): 25(ptr) Variable Function + 381(i): 258(ptr) Variable Function + 399(shadowClip): 22(ptr) Variable Function +449(shadowFactor): 25(ptr) Variable Function + 456(param): 22(ptr) Variable Function + 458(param): 25(ptr) Variable Function 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 86 86 12 12 89: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 87 80(fragcolor) 49 94: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 92 81(fragpos) 49 - 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) - 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 - 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 378 377(i) 49 - Store 377(i) 108 - Branch 383 - 383: Label - 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 - LoopMerge 385 386 None - Branch 389 - 389: Label + 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 85 82(shadow(vf3;vf3;) + 386: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12 + 385: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 382 381(i) 49 + Store 381(i) 108 + Branch 387 + 387: Label 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 - 390: 98(int) Load 377(i) - 394: 141(bool) SLessThan 390 393 - BranchConditional 394 384 385 - 384: Label - 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 398 398 12 12 - 399: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 396 395(shadowClip) 49 - 434: 98(int) Load 377(i) - 437: 435(ptr) AccessChain 431(ubo) 291 434 393 - 438: 402 Load 437 - 439: 74(fvec3) Load 81(fragpos) - 440: 16(float) CompositeExtract 439 0 - 441: 16(float) CompositeExtract 439 1 - 442: 16(float) CompositeExtract 439 2 - 443: 19(fvec4) CompositeConstruct 440 441 442 117 - 444: 19(fvec4) MatrixTimesVector 438 443 - Store 395(shadowClip) 444 - 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 447 447 12 12 - 448: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 446 445(shadowFactor) 49 - 450: 98(int) Load 377(i) - 451: 16(float) ConvertSToF 450 - 453: 19(fvec4) Load 395(shadowClip) - Store 452(param) 453 - Store 454(param) 451 - 455: 16(float) FunctionCall 62(filterPCF(vf4;f1;) 452(param) 454(param) - Store 445(shadowFactor) 455 - 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 458 458 12 12 - 456: 16(float) Load 445(shadowFactor) - 459: 74(fvec3) Load 80(fragcolor) - 460: 74(fvec3) VectorTimesScalar 459 456 - Store 80(fragcolor) 460 - Branch 386 - 386: Label - 462: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 463: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 380 380 12 12 - 461: 98(int) Load 377(i) - 464: 98(int) IAdd 461 291 - Store 377(i) 464 - Branch 383 - 385: Label - 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 - 467: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 468 468 12 12 - 465: 74(fvec3) Load 80(fragcolor) - ReturnValue 465 + 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12 + LoopMerge 389 390 None + Branch 393 + 393: Label + 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12 + 394: 98(int) Load 381(i) + 398: 141(bool) SLessThan 394 397 + BranchConditional 398 388 389 + 388: Label + 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 402 402 12 12 + 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 400 399(shadowClip) 49 + 438: 98(int) Load 381(i) + 441: 439(ptr) AccessChain 435(ubo) 294 438 397 + 442: 406 Load 441 + 443: 74(fvec3) Load 81(fragpos) + 444: 16(float) CompositeExtract 443 0 + 445: 16(float) CompositeExtract 443 1 + 446: 16(float) CompositeExtract 443 2 + 447: 19(fvec4) CompositeConstruct 444 445 446 117 + 448: 19(fvec4) MatrixTimesVector 442 447 + Store 399(shadowClip) 448 + 453: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 451 451 12 12 + 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 450 449(shadowFactor) 49 + 454: 98(int) Load 381(i) + 455: 16(float) ConvertSToF 454 + 457: 19(fvec4) Load 399(shadowClip) + Store 456(param) 457 + Store 458(param) 455 + 459: 16(float) FunctionCall 62(filterPCF(vf4;f1;) 456(param) 458(param) + Store 449(shadowFactor) 459 + 461: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 462 462 12 12 + 460: 16(float) Load 449(shadowFactor) + 463: 74(fvec3) Load 80(fragcolor) + 464: 74(fvec3) VectorTimesScalar 463 460 + Store 80(fragcolor) 464 + Branch 390 + 390: Label + 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 467: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 384 384 12 12 + 465: 98(int) Load 381(i) + 468: 98(int) IAdd 465 294 + Store 381(i) 468 + Branch 387 + 389: Label + 470: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 85 + 471: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 41 472 472 12 12 + 469: 74(fvec3) Load 80(fragcolor) + ReturnValue 469 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.geom.out b/Test/baseResults/spv.debuginfo.glsl.geom.out index 0a92146a87..0f8ceab639 100644 --- a/Test/baseResults/spv.debuginfo.glsl.geom.out +++ b/Test/baseResults/spv.debuginfo.glsl.geom.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.geom // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 274 +// Id's are bound by 276 Capability Geometry Capability MultiViewport @@ -333,6 +333,7 @@ void main(void) 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 262 30 18 259 12 21 262 260(gl_PrimitiveIDIn) 68 266: 7(int) Constant 66 273: 7(int) Constant 68 + 275: 7(int) Constant 69 14(main): 4 Function None 5 15: Label 34(i): 31(ptr) Variable Function @@ -446,5 +447,6 @@ void main(void) 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 273 273 12 12 EndPrimitive + 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 275 275 12 12 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.tesc.out b/Test/baseResults/spv.debuginfo.glsl.tesc.out index 9a6a3c6619..e81dff1feb 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.glsl.tesc.out @@ -1,14 +1,14 @@ spv.debuginfo.glsl.tesc // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 569 +// Id's are bound by 571 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 14 "main" 260 265 294 383 399 516 532 542 557 + EntryPoint TessellationControl 14 "main" 262 267 296 385 401 516 532 542 557 ExecutionMode 14 OutputVertices 4 2: String "spv.debuginfo.glsl.tesc" 8: String "uint" @@ -180,22 +180,22 @@ void main() 126: String "int" 137: String "clip0" 158: String "clip1" - 237: String "pos" - 245: String "gl_Position" - 248: String "gl_PointSize" - 251: String "gl_CullDistance" - 255: String "gl_PerVertex" - 262: String "gl_in" - 267: String "gl_InvocationID" - 275: String "type.2d.image" - 277: String "@type.2d.image" - 281: String "type.sampled.image" - 282: String "@type.sampled.image" - 287: String "samplerHeight" - 296: String "inUV" - 315: String "i" - 385: String "gl_TessLevelInner" - 401: String "gl_TessLevelOuter" + 239: String "pos" + 247: String "gl_Position" + 250: String "gl_PointSize" + 253: String "gl_CullDistance" + 257: String "gl_PerVertex" + 264: String "gl_in" + 269: String "gl_InvocationID" + 277: String "type.2d.image" + 279: String "@type.2d.image" + 283: String "type.sampled.image" + 284: String "@type.sampled.image" + 289: String "samplerHeight" + 298: String "inUV" + 317: String "i" + 387: String "gl_TessLevelInner" + 403: String "gl_TessLevelOuter" 518: String "gl_out" 534: String "outNormal" 544: String "inNormal" @@ -220,27 +220,27 @@ void main() Name 122 "ubo" Name 135 "clip0" Name 156 "clip1" - Name 235 "pos" - Name 243 "gl_PerVertex" - MemberName 243(gl_PerVertex) 0 "gl_Position" - MemberName 243(gl_PerVertex) 1 "gl_PointSize" - MemberName 243(gl_PerVertex) 2 "gl_ClipDistance" - MemberName 243(gl_PerVertex) 3 "gl_CullDistance" - Name 260 "gl_in" - Name 265 "gl_InvocationID" - Name 285 "samplerHeight" - Name 294 "inUV" - Name 313 "i" - Name 383 "gl_TessLevelInner" - Name 399 "gl_TessLevelOuter" - Name 424 "param" - Name 430 "param" - Name 435 "param" - Name 440 "param" - Name 445 "param" - Name 450 "param" - Name 455 "param" - Name 460 "param" + Name 237 "pos" + Name 245 "gl_PerVertex" + MemberName 245(gl_PerVertex) 0 "gl_Position" + MemberName 245(gl_PerVertex) 1 "gl_PointSize" + MemberName 245(gl_PerVertex) 2 "gl_ClipDistance" + MemberName 245(gl_PerVertex) 3 "gl_CullDistance" + Name 262 "gl_in" + Name 267 "gl_InvocationID" + Name 287 "samplerHeight" + Name 296 "inUV" + Name 315 "i" + Name 385 "gl_TessLevelInner" + Name 401 "gl_TessLevelOuter" + Name 426 "param" + Name 432 "param" + Name 437 "param" + Name 442 "param" + Name 447 "param" + Name 452 "param" + Name 457 "param" + Name 462 "param" Name 503 "gl_PerVertex" MemberName 503(gl_PerVertex) 0 "gl_Position" MemberName 503(gl_PerVertex) 1 "gl_PointSize" @@ -266,19 +266,19 @@ void main() MemberDecorate 99(UBO) 7 Offset 256 Decorate 122(ubo) Binding 0 Decorate 122(ubo) DescriptorSet 0 - Decorate 243(gl_PerVertex) Block - MemberDecorate 243(gl_PerVertex) 0 BuiltIn Position - MemberDecorate 243(gl_PerVertex) 1 BuiltIn PointSize - MemberDecorate 243(gl_PerVertex) 2 BuiltIn ClipDistance - MemberDecorate 243(gl_PerVertex) 3 BuiltIn CullDistance - Decorate 265(gl_InvocationID) BuiltIn InvocationId - Decorate 285(samplerHeight) Binding 1 - Decorate 285(samplerHeight) DescriptorSet 0 - Decorate 294(inUV) Location 1 - Decorate 383(gl_TessLevelInner) BuiltIn TessLevelInner - Decorate 383(gl_TessLevelInner) Patch - Decorate 399(gl_TessLevelOuter) BuiltIn TessLevelOuter - Decorate 399(gl_TessLevelOuter) Patch + Decorate 245(gl_PerVertex) Block + MemberDecorate 245(gl_PerVertex) 0 BuiltIn Position + MemberDecorate 245(gl_PerVertex) 1 BuiltIn PointSize + MemberDecorate 245(gl_PerVertex) 2 BuiltIn ClipDistance + MemberDecorate 245(gl_PerVertex) 3 BuiltIn CullDistance + Decorate 267(gl_InvocationID) BuiltIn InvocationId + Decorate 287(samplerHeight) Binding 1 + Decorate 287(samplerHeight) DescriptorSet 0 + Decorate 296(inUV) Location 1 + Decorate 385(gl_TessLevelInner) BuiltIn TessLevelInner + Decorate 385(gl_TessLevelInner) Patch + Decorate 401(gl_TessLevelOuter) BuiltIn TessLevelOuter + Decorate 401(gl_TessLevelOuter) Patch Decorate 503(gl_PerVertex) Block MemberDecorate 503(gl_PerVertex) 0 BuiltIn Position MemberDecorate 503(gl_PerVertex) 1 BuiltIn PointSize @@ -387,107 +387,109 @@ void main() 222: 125(int) Constant 5 226: 16(float) Constant 1065353216 227: 16(float) Constant 1115684864 - 238: 7(int) Constant 85 - 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 237 21 33 238 12 56 20 - 241: TypeArray 16(float) 37 - 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 37 -243(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 241 241 - 246: 7(int) Constant 1756 - 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 21 33 37 246 12 12 13 - 249: 7(int) Constant 1774 - 247: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 18 33 37 249 12 12 13 - 252: 7(int) Constant 1817 - 250: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 252 12 12 13 - 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 252 12 12 13 - 254: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 255 37 33 238 12 36 255 12 13 244 247 250 253 - 256: TypeArray 243(gl_PerVertex) 10 - 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 254 10 - 258: TypePointer Input 256 - 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 257 37 12 - 260(gl_in): 258(ptr) Variable Input - 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 262 257 33 238 12 36 262 260(gl_in) 112 - 263: TypePointer Input 125(int) - 264: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 37 12 -265(gl_InvocationID): 263(ptr) Variable Input - 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 267 127 33 238 12 36 267 265(gl_InvocationID) 112 - 269: TypePointer Input 19(fvec4) - 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 37 12 - 273: TypeImage 16(float) 2D sampled format:Unknown - 276: 7(int) Constant 86 - 278: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 274: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 275 12 33 276 12 36 277 278 13 - 279: TypeSampledImage 273 - 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 281 12 33 276 12 36 282 278 13 - 283: TypePointer UniformConstant 279 - 284: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 280 12 12 -285(samplerHeight): 283(ptr) Variable UniformConstant - 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 287 280 33 276 12 36 287 285(samplerHeight) 112 - 290: TypeArray 97(fvec2) 10 - 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 98 10 - 292: TypePointer Input 290 - 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 291 37 12 - 294(inUV): 292(ptr) Variable Input - 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 296 291 33 276 12 36 296 294(inUV) 112 - 297: TypePointer Input 97(fvec2) - 298: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 37 12 - 303: 125(int) Constant 4 - 311: TypePointer Function 125(int) - 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 23 12 - 316: 7(int) Constant 89 - 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 315 127 33 316 12 56 20 - 333: 7(int) Constant 90 - 334: 125(int) Constant 3 - 336: TypePointer Uniform 19(fvec4) - 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 38 12 - 341: 16(float) Constant 1090519040 - 346: 48(bool) ConstantFalse - 349: 7(int) Constant 92 + 233: 7(int) Constant 77 + 240: 7(int) Constant 85 + 238: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 239 21 33 240 12 56 20 + 243: TypeArray 16(float) 37 + 244: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 37 +245(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 243 243 + 248: 7(int) Constant 1756 + 246: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 21 33 37 248 12 12 13 + 251: 7(int) Constant 1774 + 249: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 18 33 37 251 12 12 13 + 254: 7(int) Constant 1817 + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 254 12 12 13 + 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 254 12 12 13 + 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 257 37 33 240 12 36 257 12 13 246 249 252 255 + 258: TypeArray 245(gl_PerVertex) 10 + 259: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 256 10 + 260: TypePointer Input 258 + 261: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 259 37 12 + 262(gl_in): 260(ptr) Variable Input + 263: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 264 259 33 240 12 36 264 262(gl_in) 112 + 265: TypePointer Input 125(int) + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 37 12 +267(gl_InvocationID): 265(ptr) Variable Input + 268: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 269 127 33 240 12 36 269 267(gl_InvocationID) 112 + 271: TypePointer Input 19(fvec4) + 272: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 37 12 + 275: TypeImage 16(float) 2D sampled format:Unknown + 278: 7(int) Constant 86 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 277 12 33 278 12 36 279 280 13 + 281: TypeSampledImage 275 + 282: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 283 12 33 278 12 36 284 280 13 + 285: TypePointer UniformConstant 281 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 282 12 12 +287(samplerHeight): 285(ptr) Variable UniformConstant + 288: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 289 282 33 278 12 36 289 287(samplerHeight) 112 + 292: TypeArray 97(fvec2) 10 + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 98 10 + 294: TypePointer Input 292 + 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 293 37 12 + 296(inUV): 294(ptr) Variable Input + 297: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 298 293 33 278 12 36 298 296(inUV) 112 + 299: TypePointer Input 97(fvec2) + 300: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 37 12 + 305: 125(int) Constant 4 + 313: TypePointer Function 125(int) + 314: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 127 23 12 + 318: 7(int) Constant 89 + 316: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 317 127 33 318 12 56 20 + 335: 7(int) Constant 90 + 336: 125(int) Constant 3 + 338: TypePointer Uniform 19(fvec4) + 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 21 38 12 + 343: 16(float) Constant 1090519040 + 348: 48(bool) ConstantFalse + 351: 7(int) Constant 92 359: 7(int) Constant 95 - 368: 7(int) Constant 100 - 375: 7(int) Constant 102 - 379: TypeArray 16(float) 38 - 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 38 - 381: TypePointer Output 379 - 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 380 13 12 -383(gl_TessLevelInner): 381(ptr) Variable Output - 386: 7(int) Constant 104 - 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 385 380 33 386 12 36 385 383(gl_TessLevelInner) 112 - 387: TypePointer Output 16(float) - 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 - 394: 7(int) Constant 105 - 395: TypeArray 16(float) 20 - 396: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 - 397: TypePointer Output 395 - 398: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 396 13 12 -399(gl_TessLevelOuter): 397(ptr) Variable Output - 402: 7(int) Constant 106 - 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 401 396 33 402 12 36 401 399(gl_TessLevelOuter) 112 - 407: 7(int) Constant 107 - 408: 125(int) Constant 2 - 411: 7(int) Constant 108 - 414: 7(int) Constant 109 - 419: 7(int) Constant 113 - 428: 7(int) Constant 115 - 438: 7(int) Constant 116 - 448: 7(int) Constant 117 - 458: 7(int) Constant 118 - 467: 7(int) Constant 119 - 475: 7(int) Constant 120 - 485: 7(int) Constant 126 - 488: 7(int) Constant 127 - 491: 7(int) Constant 128 - 494: 7(int) Constant 129 - 497: 7(int) Constant 130 - 500: 7(int) Constant 131 -503(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 241 241 + 364: 7(int) Constant 96 + 370: 7(int) Constant 100 + 377: 7(int) Constant 102 + 381: TypeArray 16(float) 38 + 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 38 + 383: TypePointer Output 381 + 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 382 13 12 +385(gl_TessLevelInner): 383(ptr) Variable Output + 388: 7(int) Constant 104 + 386: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 387 382 33 388 12 36 387 385(gl_TessLevelInner) 112 + 389: TypePointer Output 16(float) + 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 396: 7(int) Constant 105 + 397: TypeArray 16(float) 20 + 398: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 18 20 + 399: TypePointer Output 397 + 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 398 13 12 +401(gl_TessLevelOuter): 399(ptr) Variable Output + 404: 7(int) Constant 106 + 402: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 403 398 33 404 12 36 403 401(gl_TessLevelOuter) 112 + 409: 7(int) Constant 107 + 410: 125(int) Constant 2 + 413: 7(int) Constant 108 + 416: 7(int) Constant 109 + 421: 7(int) Constant 113 + 430: 7(int) Constant 115 + 440: 7(int) Constant 116 + 450: 7(int) Constant 117 + 460: 7(int) Constant 118 + 469: 7(int) Constant 119 + 477: 7(int) Constant 120 + 487: 7(int) Constant 126 + 490: 7(int) Constant 127 + 493: 7(int) Constant 128 + 496: 7(int) Constant 129 + 499: 7(int) Constant 130 + 502: 7(int) Constant 131 +503(gl_PerVertex): TypeStruct 19(fvec4) 16(float) 243 243 505: 7(int) Constant 110 - 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 245 21 33 37 505 12 12 13 - 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 248 18 33 37 491 12 12 13 + 504: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 247 21 33 37 505 12 12 13 + 506: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 250 18 33 37 493 12 12 13 508: 7(int) Constant 171 - 507: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 508 12 12 13 - 509: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 251 242 33 37 508 12 12 13 + 507: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 508 12 12 13 + 509: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 253 244 33 37 508 12 12 13 511: 7(int) Constant 137 - 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 255 37 33 511 12 36 255 12 13 504 506 507 509 + 510: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 257 37 33 511 12 36 257 12 13 504 506 507 509 512: TypeArray 503(gl_PerVertex) 20 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 5(DebugTypeArray) 510 20 514: TypePointer Output 512 @@ -522,169 +524,169 @@ void main() 558: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 559 554 33 560 12 36 559 557(outUV) 112 566: TypePointer Output 97(fvec2) 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 98 13 12 + 570: 7(int) Constant 140 14(main): 4 Function None 5 15: Label - 424(param): 22(ptr) Variable Function - 430(param): 22(ptr) Variable Function - 435(param): 22(ptr) Variable Function - 440(param): 22(ptr) Variable Function - 445(param): 22(ptr) Variable Function - 450(param): 22(ptr) Variable Function - 455(param): 22(ptr) Variable Function - 460(param): 22(ptr) Variable Function - 364: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 60 60 12 12 - 363: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 14(main) - 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 368 368 12 12 - 366: 125(int) Load 265(gl_InvocationID) - 369: 48(bool) IEqual 366 141 - SelectionMerge 371 None - BranchConditional 369 370 371 - 370: Label - 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 375 375 12 12 - 372: 48(bool) FunctionCall 53(frustumCheck() - 376: 48(bool) LogicalNot 372 - SelectionMerge 378 None - BranchConditional 376 377 415 - 377: Label - 390: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 391: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 386 386 12 12 - 389: 387(ptr) AccessChain 383(gl_TessLevelInner) 141 - Store 389 148 - 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 394 394 12 12 - 392: 387(ptr) AccessChain 383(gl_TessLevelInner) 128 - Store 392 148 - 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 402 402 12 12 - 403: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 - Store 403 148 - 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 407 407 12 12 - 405: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 + 426(param): 22(ptr) Variable Function + 432(param): 22(ptr) Variable Function + 437(param): 22(ptr) Variable Function + 442(param): 22(ptr) Variable Function + 447(param): 22(ptr) Variable Function + 452(param): 22(ptr) Variable Function + 457(param): 22(ptr) Variable Function + 462(param): 22(ptr) Variable Function + 366: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 367: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 60 60 12 12 + 365: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 59 14(main) + 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 370 370 12 12 + 368: 125(int) Load 267(gl_InvocationID) + 371: 48(bool) IEqual 368 141 + SelectionMerge 373 None + BranchConditional 371 372 373 + 372: Label + 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 376: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 377 377 12 12 + 374: 48(bool) FunctionCall 53(frustumCheck() + 378: 48(bool) LogicalNot 374 + SelectionMerge 380 None + BranchConditional 378 379 417 + 379: Label + 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 388 388 12 12 + 391: 389(ptr) AccessChain 385(gl_TessLevelInner) 141 + Store 391 148 + 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 396 396 12 12 + 394: 389(ptr) AccessChain 385(gl_TessLevelInner) 128 + Store 394 148 + 406: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 404 404 12 12 + 405: 389(ptr) AccessChain 401(gl_TessLevelOuter) 141 Store 405 148 - 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 411 411 12 12 - 409: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 - Store 409 148 - 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 414 414 12 12 - 412: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 - Store 412 148 - Branch 378 - 415: Label - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 419 419 12 12 - 416: 217(ptr) AccessChain 122(ubo) 222 - 420: 16(float) Load 416 - 421: 48(bool) FOrdGreaterThan 420 148 - SelectionMerge 423 None - BranchConditional 421 422 481 - 422: Label - 426: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 427: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 428 428 12 12 - 425: 269(ptr) AccessChain 260(gl_in) 334 141 - 429: 19(fvec4) Load 425 - Store 424(param) 429 - 431: 269(ptr) AccessChain 260(gl_in) 141 141 - 432: 19(fvec4) Load 431 - Store 430(param) 432 - 433: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 424(param) 430(param) - 434: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 - Store 434 433 - 437: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 438 438 12 12 - 436: 269(ptr) AccessChain 260(gl_in) 141 141 - 439: 19(fvec4) Load 436 - Store 435(param) 439 - 441: 269(ptr) AccessChain 260(gl_in) 128 141 - 442: 19(fvec4) Load 441 - Store 440(param) 442 - 443: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 435(param) 440(param) - 444: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 - Store 444 443 - 447: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 448 448 12 12 - 446: 269(ptr) AccessChain 260(gl_in) 128 141 - 449: 19(fvec4) Load 446 - Store 445(param) 449 - 451: 269(ptr) AccessChain 260(gl_in) 408 141 - 452: 19(fvec4) Load 451 - Store 450(param) 452 - 453: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 445(param) 450(param) - 454: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 - Store 454 453 - 457: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 458 458 12 12 - 456: 269(ptr) AccessChain 260(gl_in) 408 141 - 459: 19(fvec4) Load 456 - Store 455(param) 459 - 461: 269(ptr) AccessChain 260(gl_in) 334 141 - 462: 19(fvec4) Load 461 - Store 460(param) 462 - 463: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 455(param) 460(param) - 464: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 - Store 464 463 - 466: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 467 467 12 12 - 465: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 - 468: 16(float) Load 465 - 469: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 - 470: 16(float) Load 469 - 471: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 468 470 68 - 472: 387(ptr) AccessChain 383(gl_TessLevelInner) 141 - Store 472 471 - 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 475 475 12 12 - 473: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 - 476: 16(float) Load 473 - 477: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 - 478: 16(float) Load 477 - 479: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 476 478 68 - 480: 387(ptr) AccessChain 383(gl_TessLevelInner) 128 - Store 480 479 - Branch 423 - 481: Label - 483: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - 484: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 485 485 12 12 - 482: 387(ptr) AccessChain 383(gl_TessLevelInner) 141 - Store 482 226 - 487: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 488 488 12 12 - 486: 387(ptr) AccessChain 383(gl_TessLevelInner) 128 - Store 486 226 - 490: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 491 491 12 12 - 489: 387(ptr) AccessChain 399(gl_TessLevelOuter) 141 - Store 489 226 - 493: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 494 494 12 12 - 492: 387(ptr) AccessChain 399(gl_TessLevelOuter) 128 - Store 492 226 - 496: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 497 497 12 12 - 495: 387(ptr) AccessChain 399(gl_TessLevelOuter) 408 - Store 495 226 - 499: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 500 500 12 12 - 498: 387(ptr) AccessChain 399(gl_TessLevelOuter) 334 - Store 498 226 - Branch 423 - 423: Label - 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - Branch 378 - 378: Label - 502: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 - Branch 371 - 371: Label + 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 409 409 12 12 + 407: 389(ptr) AccessChain 401(gl_TessLevelOuter) 128 + Store 407 148 + 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 413 413 12 12 + 411: 389(ptr) AccessChain 401(gl_TessLevelOuter) 410 + Store 411 148 + 415: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 416 416 12 12 + 414: 389(ptr) AccessChain 401(gl_TessLevelOuter) 336 + Store 414 148 + Branch 380 + 417: Label + 419: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 420: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 421 421 12 12 + 418: 217(ptr) AccessChain 122(ubo) 222 + 422: 16(float) Load 418 + 423: 48(bool) FOrdGreaterThan 422 148 + SelectionMerge 425 None + BranchConditional 423 424 483 + 424: Label + 428: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 429: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 430 430 12 12 + 427: 271(ptr) AccessChain 262(gl_in) 336 141 + 431: 19(fvec4) Load 427 + Store 426(param) 431 + 433: 271(ptr) AccessChain 262(gl_in) 141 141 + 434: 19(fvec4) Load 433 + Store 432(param) 434 + 435: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 426(param) 432(param) + 436: 389(ptr) AccessChain 401(gl_TessLevelOuter) 141 + Store 436 435 + 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 440 440 12 12 + 438: 271(ptr) AccessChain 262(gl_in) 141 141 + 441: 19(fvec4) Load 438 + Store 437(param) 441 + 443: 271(ptr) AccessChain 262(gl_in) 128 141 + 444: 19(fvec4) Load 443 + Store 442(param) 444 + 445: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 437(param) 442(param) + 446: 389(ptr) AccessChain 401(gl_TessLevelOuter) 128 + Store 446 445 + 449: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 450 450 12 12 + 448: 271(ptr) AccessChain 262(gl_in) 128 141 + 451: 19(fvec4) Load 448 + Store 447(param) 451 + 453: 271(ptr) AccessChain 262(gl_in) 410 141 + 454: 19(fvec4) Load 453 + Store 452(param) 454 + 455: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 447(param) 452(param) + 456: 389(ptr) AccessChain 401(gl_TessLevelOuter) 410 + Store 456 455 + 459: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 460 460 12 12 + 458: 271(ptr) AccessChain 262(gl_in) 410 141 + 461: 19(fvec4) Load 458 + Store 457(param) 461 + 463: 271(ptr) AccessChain 262(gl_in) 336 141 + 464: 19(fvec4) Load 463 + Store 462(param) 464 + 465: 16(float) FunctionCall 29(screenSpaceTessFactor(vf4;vf4;) 457(param) 462(param) + 466: 389(ptr) AccessChain 401(gl_TessLevelOuter) 336 + Store 466 465 + 468: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 469 469 12 12 + 467: 389(ptr) AccessChain 401(gl_TessLevelOuter) 141 + 470: 16(float) Load 467 + 471: 389(ptr) AccessChain 401(gl_TessLevelOuter) 336 + 472: 16(float) Load 471 + 473: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 470 472 68 + 474: 389(ptr) AccessChain 385(gl_TessLevelInner) 141 + Store 474 473 + 476: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 477 477 12 12 + 475: 389(ptr) AccessChain 401(gl_TessLevelOuter) 410 + 478: 16(float) Load 475 + 479: 389(ptr) AccessChain 401(gl_TessLevelOuter) 128 + 480: 16(float) Load 479 + 481: 16(float) ExtInst 3(GLSL.std.450) 46(FMix) 478 480 68 + 482: 389(ptr) AccessChain 385(gl_TessLevelInner) 128 + Store 482 481 + Branch 425 + 483: Label + 485: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 + 486: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 487 487 12 12 + 484: 389(ptr) AccessChain 385(gl_TessLevelInner) 141 + Store 484 226 + 489: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 490 490 12 12 + 488: 389(ptr) AccessChain 385(gl_TessLevelInner) 128 + Store 488 226 + 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 493 493 12 12 + 491: 389(ptr) AccessChain 401(gl_TessLevelOuter) 141 + Store 491 226 + 495: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 496 496 12 12 + 494: 389(ptr) AccessChain 401(gl_TessLevelOuter) 128 + Store 494 226 + 498: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 499 499 12 12 + 497: 389(ptr) AccessChain 401(gl_TessLevelOuter) 410 + Store 497 226 + 501: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 502 502 12 12 + 500: 389(ptr) AccessChain 401(gl_TessLevelOuter) 336 + Store 500 226 + Branch 425 + 425: Label + Branch 380 + 380: Label + Branch 373 + 373: Label 520: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 59 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 511 511 12 12 - 519: 125(int) Load 265(gl_InvocationID) - 522: 125(int) Load 265(gl_InvocationID) - 523: 269(ptr) AccessChain 260(gl_in) 522 141 + 519: 125(int) Load 267(gl_InvocationID) + 522: 125(int) Load 267(gl_InvocationID) + 523: 271(ptr) AccessChain 262(gl_in) 522 141 524: 19(fvec4) Load 523 527: 525(ptr) AccessChain 516(gl_out) 519 141 Store 527 524 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 535 535 12 12 - 536: 125(int) Load 265(gl_InvocationID) - 545: 125(int) Load 265(gl_InvocationID) + 536: 125(int) Load 267(gl_InvocationID) + 545: 125(int) Load 267(gl_InvocationID) 548: 546(ptr) AccessChain 542(inNormal) 545 549: 146(fvec3) Load 548 552: 550(ptr) AccessChain 532(outNormal) 536 Store 552 549 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 560 560 12 12 - 561: 125(int) Load 265(gl_InvocationID) - 563: 125(int) Load 265(gl_InvocationID) - 564: 297(ptr) AccessChain 294(inUV) 563 + 561: 125(int) Load 267(gl_InvocationID) + 563: 125(int) Load 267(gl_InvocationID) + 564: 299(ptr) AccessChain 296(inUV) 563 565: 97(fvec2) Load 564 568: 566(ptr) AccessChain 557(outUV) 561 Store 568 565 + 569: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 570 570 12 12 Return FunctionEnd 29(screenSpaceTessFactor(vf4;vf4;): 16(float) Function None 25 @@ -801,73 +803,72 @@ void main() FunctionEnd 53(frustumCheck(): 48(bool) Function None 51 54: Label - 235(pos): 22(ptr) Variable Function - 313(i): 311(ptr) Variable Function - 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 57 57 12 12 - 232: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 53(frustumCheck() - 240: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 238 238 12 12 - 239: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 236 235(pos) 42 - 268: 125(int) Load 265(gl_InvocationID) - 271: 269(ptr) AccessChain 260(gl_in) 268 141 - 272: 19(fvec4) Load 271 - Store 235(pos) 272 - 289: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 276 276 12 12 - 288: 279 Load 285(samplerHeight) - 299: 297(ptr) AccessChain 294(inUV) 141 - 300: 97(fvec2) Load 299 - 301: 19(fvec4) ImageSampleExplicitLod 288 300 Lod 148 - 302: 16(float) CompositeExtract 301 0 - 304: 217(ptr) AccessChain 122(ubo) 303 - 305: 16(float) Load 304 - 306: 16(float) FMul 302 305 - 307: 73(ptr) AccessChain 235(pos) 37 - 308: 16(float) Load 307 - 309: 16(float) FSub 308 306 - 310: 73(ptr) AccessChain 235(pos) 37 - Store 310 309 - 318: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 - 317: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 314 313(i) 42 - Store 313(i) 141 - Branch 319 - 319: Label - 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 - LoopMerge 321 322 None - Branch 325 - 325: Label - 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 328: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 - 326: 125(int) Load 313(i) - 329: 48(bool) SLessThan 326 186 - BranchConditional 329 320 321 - 320: Label - 331: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 332: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 333 333 12 12 - 330: 19(fvec4) Load 235(pos) - 335: 125(int) Load 313(i) - 338: 336(ptr) AccessChain 122(ubo) 334 335 - 339: 19(fvec4) Load 338 - 340: 16(float) Dot 330 339 - 342: 16(float) FAdd 340 341 - 343: 48(bool) FOrdLessThan 342 148 - SelectionMerge 345 None - BranchConditional 343 344 345 - 344: Label - 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 349 349 12 12 - ReturnValue 346 - 345: Label - 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - Branch 322 + 237(pos): 22(ptr) Variable Function + 315(i): 313(ptr) Variable Function + 235: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 236: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 57 57 12 12 + 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 56 53(frustumCheck() + 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 240 240 12 12 + 241: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 238 237(pos) 42 + 270: 125(int) Load 267(gl_InvocationID) + 273: 271(ptr) AccessChain 262(gl_in) 270 141 + 274: 19(fvec4) Load 273 + Store 237(pos) 274 + 291: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 278 278 12 12 + 290: 281 Load 287(samplerHeight) + 301: 299(ptr) AccessChain 296(inUV) 141 + 302: 97(fvec2) Load 301 + 303: 19(fvec4) ImageSampleExplicitLod 290 302 Lod 148 + 304: 16(float) CompositeExtract 303 0 + 306: 217(ptr) AccessChain 122(ubo) 305 + 307: 16(float) Load 306 + 308: 16(float) FMul 304 307 + 309: 73(ptr) AccessChain 237(pos) 37 + 310: 16(float) Load 309 + 311: 16(float) FSub 310 308 + 312: 73(ptr) AccessChain 237(pos) 37 + Store 312 311 + 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 + 319: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 316 315(i) 42 + Store 315(i) 141 + Branch 321 + 321: Label + 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 + LoopMerge 323 324 None + Branch 327 + 327: Label + 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 + 328: 125(int) Load 315(i) + 331: 48(bool) SLessThan 328 186 + BranchConditional 331 322 323 322: Label + 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 335 335 12 12 + 332: 19(fvec4) Load 237(pos) + 337: 125(int) Load 315(i) + 340: 338(ptr) AccessChain 122(ubo) 336 337 + 341: 19(fvec4) Load 340 + 342: 16(float) Dot 332 341 + 344: 16(float) FAdd 342 343 + 345: 48(bool) FOrdLessThan 344 148 + SelectionMerge 347 None + BranchConditional 345 346 347 + 346: Label + 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 + 350: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 351 351 12 12 + ReturnValue 348 + 347: Label + Branch 324 + 324: Label 354: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 - 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 316 316 12 12 - 353: 125(int) Load 313(i) + 355: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 318 318 12 12 + 353: 125(int) Load 315(i) 356: 125(int) IAdd 353 128 - Store 313(i) 356 - Branch 319 - 321: Label + Store 315(i) 356 + Branch 321 + 323: Label 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 56 358: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 33 359 359 12 12 ReturnValue 94 diff --git a/Test/baseResults/spv.debuginfo.glsl.tese.out b/Test/baseResults/spv.debuginfo.glsl.tese.out index 6098b73e7e..bce85b48a1 100644 --- a/Test/baseResults/spv.debuginfo.glsl.tese.out +++ b/Test/baseResults/spv.debuginfo.glsl.tese.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 357 +// Id's are bound by 359 Capability Tessellation Extension "SPV_KHR_non_semantic_info" @@ -390,6 +390,7 @@ void main() 344(outEyePos): 141(ptr) Variable Output 347: 7(int) Constant 77 345: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 346 63 18 347 12 21 346 344(outEyePos) 50 + 358: 7(int) Constant 78 14(main): 4 Function None 5 15: Label 36(uv1): 33(ptr) Variable Function @@ -543,5 +544,6 @@ void main() 355: 28(float) CompositeExtract 352 2 356: 62(fvec3) CompositeConstruct 353 354 355 Store 344(outEyePos) 356 + 357: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 358 358 12 12 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.glsl.vert.out b/Test/baseResults/spv.debuginfo.glsl.vert.out index f98386118c..9eef2dd2df 100644 --- a/Test/baseResults/spv.debuginfo.glsl.vert.out +++ b/Test/baseResults/spv.debuginfo.glsl.vert.out @@ -1,7 +1,7 @@ spv.debuginfo.glsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 445 +// Id's are bound by 447 Capability Shader Extension "SPV_KHR_non_semantic_info" @@ -399,6 +399,7 @@ void main() 437(outViewVec): 33(ptr) Variable Output 440: 7(int) Constant 104 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 439 32 18 440 12 21 439 437(outViewVec) 39 + 446: 7(int) Constant 105 14(main): 4 Function None 5 15: Label 76(s): 73(ptr) Variable Function @@ -662,5 +663,6 @@ void main() 443: 31(fvec3) VectorShuffle 441 441 0 1 2 444: 31(fvec3) FNegate 443 Store 437(outViewVec) 444 + 445: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 446 446 12 12 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.comp.out b/Test/baseResults/spv.debuginfo.hlsl.comp.out index b4579daf61..e6fbf123a5 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.comp.out +++ b/Test/baseResults/spv.debuginfo.hlsl.comp.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.comp // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 970 +// Id's are bound by 968 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint GLCompute 6 "main" 965 + EntryPoint GLCompute 6 "main" 963 ExecutionMode 6 LocalSize 10 10 1 2: String "" 9: String "float" @@ -36,26 +36,26 @@ spv.debuginfo.hlsl.comp 113: String "UBO" 116: String "params" 120: String "ubo" - 146: String "index" - 172: String "bool" + 147: String "index" + 173: String "bool" 184: String "normal" 191: String "pinned" 195: String "Particle" 201: String "@data" 205: String "particleIn" 226: String "particleOut" - 254: String "force" - 268: String "pos" - 278: String "vel" - 562: String "f" - 611: String "sphereDist" - 662: String "calculateNormals" - 666: String "PushConstants" - 670: String "pushConstants" - 673: String "$Global" - 711: String "a" - 725: String "b" - 742: String "c" + 253: String "force" + 267: String "pos" + 277: String "vel" + 561: String "f" + 610: String "sphereDist" + 661: String "calculateNormals" + 665: String "PushConstants" + 669: String "pushConstants" + 672: String "$Global" + 710: String "a" + 724: String "b" + 741: String "c" Name 6 "main" Name 30 "springForce(vf3;vf3;f1;" Name 27 "p0" @@ -79,7 +79,7 @@ spv.debuginfo.hlsl.comp Name 114 "ubo" MemberName 114(ubo) 0 "params" Name 123 "" - Name 144 "index" + Name 145 "index" Name 182 "Particle" MemberName 182(Particle) 0 "pos" MemberName 182(Particle) 1 "vel" @@ -92,47 +92,47 @@ spv.debuginfo.hlsl.comp Name 222 "particleOut" MemberName 222(particleOut) 0 "@data" Name 230 "particleOut" - Name 252 "force" - Name 266 "pos" - Name 276 "vel" - Name 298 "param" - Name 302 "param" - Name 304 "param" - Name 327 "param" - Name 331 "param" - Name 333 "param" - Name 360 "param" - Name 364 "param" - Name 366 "param" - Name 388 "param" - Name 392 "param" - Name 394 "param" - Name 426 "param" - Name 430 "param" - Name 432 "param" - Name 459 "param" - Name 463 "param" - Name 465 "param" - Name 500 "param" - Name 504 "param" - Name 506 "param" - Name 537 "param" - Name 541 "param" - Name 543 "param" - Name 560 "f" - Name 609 "sphereDist" - Name 660 "PushConstants" - MemberName 660(PushConstants) 0 "calculateNormals" - Name 668 "$Global" - MemberName 668($Global) 0 "pushConstants" - Name 676 "" - Name 687 "normal" - Name 709 "a" - Name 723 "b" - Name 740 "c" + Name 251 "force" + Name 265 "pos" + Name 275 "vel" + Name 297 "param" + Name 301 "param" + Name 303 "param" + Name 326 "param" + Name 330 "param" + Name 332 "param" + Name 359 "param" + Name 363 "param" + Name 365 "param" + Name 387 "param" + Name 391 "param" + Name 393 "param" + Name 425 "param" + Name 429 "param" + Name 431 "param" + Name 458 "param" + Name 462 "param" + Name 464 "param" + Name 499 "param" + Name 503 "param" + Name 505 "param" + Name 536 "param" + Name 540 "param" + Name 542 "param" + Name 559 "f" + Name 608 "sphereDist" + Name 659 "PushConstants" + MemberName 659(PushConstants) 0 "calculateNormals" + Name 667 "$Global" + MemberName 667($Global) 0 "pushConstants" + Name 675 "" + Name 686 "normal" + Name 708 "a" + Name 722 "b" + Name 739 "c" + Name 961 "id" Name 963 "id" - Name 965 "id" - Name 967 "param" + Name 965 "param" MemberDecorate 92(UBO) 0 Offset 0 MemberDecorate 92(UBO) 1 Offset 4 MemberDecorate 92(UBO) 2 Offset 8 @@ -165,12 +165,12 @@ spv.debuginfo.hlsl.comp MemberDecorate 222(particleOut) 0 Offset 0 Decorate 230(particleOut) Binding 1 Decorate 230(particleOut) DescriptorSet 0 - MemberDecorate 660(PushConstants) 0 Offset 0 - Decorate 668($Global) Block - MemberDecorate 668($Global) 0 Offset 0 - Decorate 676 Binding 3 - Decorate 676 DescriptorSet 0 - Decorate 965(id) BuiltIn GlobalInvocationId + MemberDecorate 659(PushConstants) 0 Offset 0 + Decorate 667($Global) Block + MemberDecorate 667($Global) 0 Offset 0 + Decorate 675 Binding 3 + Decorate 675 DescriptorSet 0 + Decorate 963(id) BuiltIn GlobalInvocationId 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -252,17 +252,17 @@ spv.debuginfo.hlsl.comp 127: 87(int) Constant 2 128: TypePointer Uniform 8(float) 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 10 49 16 - 142: TypePointer Function 11(int) - 143: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 21 16 - 147: 11(int) Constant 83 - 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 146 13 34 147 16 64 39 - 152: 87(int) Constant 10 - 153: TypePointer Uniform 87(int) - 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 49 16 - 164: 11(int) Constant 84 - 171: TypeBool - 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 172 14 49 16 - 179: 11(int) Constant 85 + 143: TypePointer Function 11(int) + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 21 16 + 148: 11(int) Constant 83 + 146: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 147 13 34 148 16 64 39 + 153: 87(int) Constant 10 + 154: TypePointer Uniform 87(int) + 155: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 89 49 16 + 165: 11(int) Constant 84 + 172: TypeBool + 174: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 173 14 49 16 + 180: 11(int) Constant 85 182(Particle): TypeStruct 85(fvec4) 85(fvec4) 85(fvec4) 85(fvec4) 8(float) 185: 11(int) Constant 30 186: 11(int) Constant 15 @@ -306,102 +306,102 @@ spv.debuginfo.hlsl.comp 245: 8(float) Constant 0 246: 85(fvec4) ConstantComposite 245 245 245 245 249: 11(int) Constant 91 - 255: 11(int) Constant 95 - 253: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 254 19 34 255 16 64 39 - 259: 87(int) Constant 9 - 269: 11(int) Constant 97 - 267: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 268 19 34 269 16 64 39 - 279: 11(int) Constant 98 - 277: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 278 19 34 279 16 64 39 - 288: 11(int) Constant 102 - 296: 11(int) Constant 103 - 313: 11(int) Constant 106 - 325: 11(int) Constant 107 - 342: 11(int) Constant 110 - 354: 11(int) Constant 111 - 359: 87(int) Constant 5 - 375: 11(int) Constant 114 - 383: 11(int) Constant 115 - 403: 11(int) Constant 118 - 419: 11(int) Constant 119 - 425: 87(int) Constant 6 - 441: 11(int) Constant 122 - 453: 11(int) Constant 123 - 474: 11(int) Constant 126 - 494: 11(int) Constant 127 - 515: 11(int) Constant 130 - 531: 11(int) Constant 131 - 549: 87(int) Constant 3 - 553: 11(int) Constant 134 - 563: 11(int) Constant 137 - 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 562 19 34 563 16 64 39 - 573: 11(int) Constant 138 - 580: 8(float) Constant 1056964608 - 597: 11(int) Constant 139 - 612: 11(int) Constant 142 - 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 611 19 34 612 16 64 39 - 619: 87(int) Constant 8 - 626: 11(int) Constant 143 - 628: 87(int) Constant 7 - 631: 8(float) Constant 1008981770 - 639: 11(int) Constant 145 - 658: 11(int) Constant 147 -660(PushConstants): TypeStruct 11(int) - 663: 11(int) Constant 67 - 664: 11(int) Constant 23 - 661: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 662 13 34 663 664 16 16 17 - 667: 11(int) Constant 151 - 665: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 666 38 34 667 16 37 666 16 17 661 - 668($Global): TypeStruct 660(PushConstants) - 671: 11(int) Constant 71 - 669: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 670 665 34 671 186 16 16 17 - 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 673 38 34 667 16 37 673 16 17 669 - 674: TypePointer Uniform 668($Global) - 675: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 672 49 16 - 676: 674(ptr) Variable Uniform - 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 672 34 667 16 37 2 676 125 - 678: TypePointer Uniform 11(int) - 679: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 49 16 - 689: 11(int) Constant 152 - 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 184 19 34 689 16 64 39 - 693: 18(fvec3) ConstantComposite 245 245 245 - 696: 11(int) Constant 154 - 704: 11(int) Constant 155 - 712: 11(int) Constant 156 - 710: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 711 19 34 712 16 64 39 - 726: 11(int) Constant 157 - 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 725 19 34 726 16 64 39 - 743: 11(int) Constant 158 - 741: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 742 19 34 743 16 64 39 - 758: 11(int) Constant 159 - 770: 11(int) Constant 161 - 782: 11(int) Constant 162 - 794: 11(int) Constant 163 - 807: 11(int) Constant 164 - 816: 11(int) Constant 165 - 829: 11(int) Constant 168 - 841: 11(int) Constant 169 - 849: 11(int) Constant 170 - 861: 11(int) Constant 171 - 874: 11(int) Constant 172 - 883: 11(int) Constant 173 - 895: 11(int) Constant 175 - 907: 11(int) Constant 176 - 916: 11(int) Constant 177 - 929: 11(int) Constant 178 - 941: 11(int) Constant 179 - 954: 11(int) Constant 182 - 964: TypePointer Input 54(ivec3) - 965(id): 964(ptr) Variable Input + 254: 11(int) Constant 95 + 252: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 253 19 34 254 16 64 39 + 258: 87(int) Constant 9 + 268: 11(int) Constant 97 + 266: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 267 19 34 268 16 64 39 + 278: 11(int) Constant 98 + 276: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 277 19 34 278 16 64 39 + 287: 11(int) Constant 102 + 295: 11(int) Constant 103 + 312: 11(int) Constant 106 + 324: 11(int) Constant 107 + 341: 11(int) Constant 110 + 353: 11(int) Constant 111 + 358: 87(int) Constant 5 + 374: 11(int) Constant 114 + 382: 11(int) Constant 115 + 402: 11(int) Constant 118 + 418: 11(int) Constant 119 + 424: 87(int) Constant 6 + 440: 11(int) Constant 122 + 452: 11(int) Constant 123 + 473: 11(int) Constant 126 + 493: 11(int) Constant 127 + 514: 11(int) Constant 130 + 530: 11(int) Constant 131 + 548: 87(int) Constant 3 + 552: 11(int) Constant 134 + 562: 11(int) Constant 137 + 560: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 561 19 34 562 16 64 39 + 572: 11(int) Constant 138 + 579: 8(float) Constant 1056964608 + 596: 11(int) Constant 139 + 611: 11(int) Constant 142 + 609: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 610 19 34 611 16 64 39 + 618: 87(int) Constant 8 + 625: 11(int) Constant 143 + 627: 87(int) Constant 7 + 630: 8(float) Constant 1008981770 + 638: 11(int) Constant 145 + 657: 11(int) Constant 147 +659(PushConstants): TypeStruct 11(int) + 662: 11(int) Constant 67 + 663: 11(int) Constant 23 + 660: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 661 13 34 662 663 16 16 17 + 666: 11(int) Constant 151 + 664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 665 38 34 666 16 37 665 16 17 660 + 667($Global): TypeStruct 659(PushConstants) + 670: 11(int) Constant 71 + 668: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 669 664 34 670 186 16 16 17 + 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 672 38 34 666 16 37 672 16 17 668 + 673: TypePointer Uniform 667($Global) + 674: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 671 49 16 + 675: 673(ptr) Variable Uniform + 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 2 671 34 666 16 37 2 675 125 + 677: TypePointer Uniform 11(int) + 678: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 13 49 16 + 688: 11(int) Constant 152 + 687: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 184 19 34 688 16 64 39 + 692: 18(fvec3) ConstantComposite 245 245 245 + 695: 11(int) Constant 154 + 703: 11(int) Constant 155 + 711: 11(int) Constant 156 + 709: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 710 19 34 711 16 64 39 + 725: 11(int) Constant 157 + 723: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 724 19 34 725 16 64 39 + 742: 11(int) Constant 158 + 740: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 741 19 34 742 16 64 39 + 757: 11(int) Constant 159 + 769: 11(int) Constant 161 + 781: 11(int) Constant 162 + 793: 11(int) Constant 163 + 806: 11(int) Constant 164 + 815: 11(int) Constant 165 + 827: 11(int) Constant 168 + 839: 11(int) Constant 169 + 847: 11(int) Constant 170 + 859: 11(int) Constant 171 + 872: 11(int) Constant 172 + 881: 11(int) Constant 173 + 893: 11(int) Constant 175 + 905: 11(int) Constant 176 + 914: 11(int) Constant 177 + 927: 11(int) Constant 178 + 939: 11(int) Constant 179 + 951: 11(int) Constant 182 + 962: TypePointer Input 54(ivec3) + 963(id): 962(ptr) Variable Input 6(main): 4 Function None 5 7: Label - 963(id): 56(ptr) Variable Function - 967(param): 56(ptr) Variable Function - 966: 54(ivec3) Load 965(id) - Store 963(id) 966 - 968: 54(ivec3) Load 963(id) - Store 967(param) 968 - 969: 4 FunctionCall 61(@main(vu3;) 967(param) + 961(id): 56(ptr) Variable Function + 965(param): 56(ptr) Variable Function + 964: 54(ivec3) Load 963(id) + Store 961(id) 964 + 966: 54(ivec3) Load 961(id) + Store 965(param) 966 + 967: 4 FunctionCall 61(@main(vu3;) 965(param) Return FunctionEnd 30(springForce(vf3;vf3;f1;): 18(fvec3) Function None 25 @@ -438,786 +438,785 @@ spv.debuginfo.hlsl.comp 61(@main(vu3;): 4 Function None 58 60(id): 56(ptr) FunctionParameter 62: Label - 144(index): 142(ptr) Variable Function - 252(force): 20(ptr) Variable Function - 266(pos): 20(ptr) Variable Function - 276(vel): 20(ptr) Variable Function - 298(param): 20(ptr) Variable Function - 302(param): 20(ptr) Variable Function - 304(param): 23(ptr) Variable Function - 327(param): 20(ptr) Variable Function - 331(param): 20(ptr) Variable Function - 333(param): 23(ptr) Variable Function - 360(param): 20(ptr) Variable Function - 364(param): 20(ptr) Variable Function - 366(param): 23(ptr) Variable Function - 388(param): 20(ptr) Variable Function - 392(param): 20(ptr) Variable Function - 394(param): 23(ptr) Variable Function - 426(param): 20(ptr) Variable Function - 430(param): 20(ptr) Variable Function - 432(param): 23(ptr) Variable Function - 459(param): 20(ptr) Variable Function - 463(param): 20(ptr) Variable Function - 465(param): 23(ptr) Variable Function - 500(param): 20(ptr) Variable Function - 504(param): 20(ptr) Variable Function - 506(param): 23(ptr) Variable Function - 537(param): 20(ptr) Variable Function - 541(param): 20(ptr) Variable Function - 543(param): 23(ptr) Variable Function - 560(f): 20(ptr) Variable Function - 609(sphereDist): 20(ptr) Variable Function - 687(normal): 20(ptr) Variable Function - 709(a): 20(ptr) Variable Function - 723(b): 20(ptr) Variable Function - 740(c): 20(ptr) Variable Function + 145(index): 143(ptr) Variable Function + 251(force): 20(ptr) Variable Function + 265(pos): 20(ptr) Variable Function + 275(vel): 20(ptr) Variable Function + 297(param): 20(ptr) Variable Function + 301(param): 20(ptr) Variable Function + 303(param): 23(ptr) Variable Function + 326(param): 20(ptr) Variable Function + 330(param): 20(ptr) Variable Function + 332(param): 23(ptr) Variable Function + 359(param): 20(ptr) Variable Function + 363(param): 20(ptr) Variable Function + 365(param): 23(ptr) Variable Function + 387(param): 20(ptr) Variable Function + 391(param): 20(ptr) Variable Function + 393(param): 23(ptr) Variable Function + 425(param): 20(ptr) Variable Function + 429(param): 20(ptr) Variable Function + 431(param): 23(ptr) Variable Function + 458(param): 20(ptr) Variable Function + 462(param): 20(ptr) Variable Function + 464(param): 23(ptr) Variable Function + 499(param): 20(ptr) Variable Function + 503(param): 20(ptr) Variable Function + 505(param): 23(ptr) Variable Function + 536(param): 20(ptr) Variable Function + 540(param): 20(ptr) Variable Function + 542(param): 23(ptr) Variable Function + 559(f): 20(ptr) Variable Function + 608(sphereDist): 20(ptr) Variable Function + 686(normal): 20(ptr) Variable Function + 708(a): 20(ptr) Variable Function + 722(b): 20(ptr) Variable Function + 739(c): 20(ptr) Variable Function 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 65 65 16 16 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 66 60(id) 44 - 141: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) - 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 147 147 16 16 - 148: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 145 144(index) 44 - 150: 142(ptr) AccessChain 60(id) 38 - 151: 11(int) Load 150 - 155: 153(ptr) AccessChain 123 126 152 16 - 156: 87(int) Load 155 - 157: 11(int) Bitcast 156 - 158: 11(int) IMul 151 157 - 159: 142(ptr) AccessChain 60(id) 16 - 160: 11(int) Load 159 - 161: 11(int) IAdd 158 160 - Store 144(index) 161 - 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 164 164 16 16 - 162: 11(int) Load 144(index) - 165: 153(ptr) AccessChain 123 126 152 16 - 166: 87(int) Load 165 - 167: 153(ptr) AccessChain 123 126 152 38 - 168: 87(int) Load 167 - 169: 87(int) IMul 166 168 - 170: 11(int) Bitcast 169 - 174: 171(bool) UGreaterThan 162 170 - SelectionMerge 176 None - BranchConditional 174 175 176 - 175: Label - 177: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 179 179 16 16 + 142: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 64 61(@main(vu3;) + 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 148 148 16 16 + 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 146 145(index) 44 + 151: 143(ptr) AccessChain 60(id) 38 + 152: 11(int) Load 151 + 156: 154(ptr) AccessChain 123 126 153 16 + 157: 87(int) Load 156 + 158: 11(int) Bitcast 157 + 159: 11(int) IMul 152 158 + 160: 143(ptr) AccessChain 60(id) 16 + 161: 11(int) Load 160 + 162: 11(int) IAdd 159 161 + Store 145(index) 162 + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 165 165 16 16 + 163: 11(int) Load 145(index) + 166: 154(ptr) AccessChain 123 126 153 16 + 167: 87(int) Load 166 + 168: 154(ptr) AccessChain 123 126 153 38 + 169: 87(int) Load 168 + 170: 87(int) IMul 167 169 + 171: 11(int) Bitcast 170 + 175: 172(bool) UGreaterThan 163 171 + SelectionMerge 177 None + BranchConditional 175 176 177 + 176: Label + 178: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 180 180 16 16 Return - 176: Label + 177: Label 211: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 212: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 196 196 16 16 - 210: 11(int) Load 144(index) + 210: 11(int) Load 145(index) 214: 128(ptr) AccessChain 208(particleIn) 126 210 213 215: 8(float) Load 214 - 217: 171(bool) FOrdEqual 215 216 + 217: 172(bool) FOrdEqual 215 216 SelectionMerge 219 None BranchConditional 217 218 219 218: Label 233: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 234: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 227 227 16 16 - 232: 11(int) Load 144(index) - 235: 11(int) Load 144(index) + 232: 11(int) Load 145(index) + 235: 11(int) Load 145(index) 238: 236(ptr) AccessChain 230(particleOut) 126 235 126 239: 85(fvec4) Load 238 240: 236(ptr) AccessChain 230(particleOut) 126 232 126 Store 240 239 242: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 243 243 16 16 - 241: 11(int) Load 144(index) + 241: 11(int) Load 145(index) 247: 236(ptr) AccessChain 230(particleOut) 126 241 244 Store 247 246 248: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 249 249 16 16 Return 219: Label - 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 258: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 255 255 16 16 - 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 253 252(force) 44 - 260: 236(ptr) AccessChain 123 126 259 - 261: 85(fvec4) Load 260 - 262: 18(fvec3) VectorShuffle 261 261 0 1 2 - 263: 128(ptr) AccessChain 123 126 244 - 264: 8(float) Load 263 - 265: 18(fvec3) VectorTimesScalar 262 264 - Store 252(force) 265 - 271: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 269 269 16 16 - 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 267 266(pos) 44 - 272: 11(int) Load 144(index) - 273: 236(ptr) AccessChain 208(particleIn) 126 272 126 - 274: 85(fvec4) Load 273 - 275: 18(fvec3) VectorShuffle 274 274 0 1 2 - Store 266(pos) 275 - 281: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 279 279 16 16 - 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 277 276(vel) 44 - 282: 11(int) Load 144(index) - 283: 236(ptr) AccessChain 208(particleIn) 126 282 244 - 284: 85(fvec4) Load 283 - 285: 18(fvec3) VectorShuffle 284 284 0 1 2 - Store 276(vel) 285 - 287: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 288 288 16 16 - 286: 142(ptr) AccessChain 60(id) 16 - 289: 11(int) Load 286 - 290: 171(bool) UGreaterThan 289 16 - SelectionMerge 292 None - BranchConditional 290 291 292 - 291: Label - 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 295: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 296 296 16 16 - 293: 11(int) Load 144(index) - 297: 11(int) ISub 293 38 - 299: 236(ptr) AccessChain 208(particleIn) 126 297 126 - 300: 85(fvec4) Load 299 - 301: 18(fvec3) VectorShuffle 300 300 0 1 2 - Store 298(param) 301 - 303: 18(fvec3) Load 266(pos) - Store 302(param) 303 - 305: 128(ptr) AccessChain 123 126 213 - 306: 8(float) Load 305 - Store 304(param) 306 - 307: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 298(param) 302(param) 304(param) - 308: 18(fvec3) Load 252(force) - 309: 18(fvec3) FAdd 308 307 - Store 252(force) 309 - Branch 292 - 292: Label - 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 312: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 313 313 16 16 - 310: 142(ptr) AccessChain 60(id) 16 - 314: 11(int) Load 310 - 315: 153(ptr) AccessChain 123 126 152 16 - 316: 87(int) Load 315 - 317: 87(int) ISub 316 244 - 318: 11(int) Bitcast 317 - 319: 171(bool) ULessThan 314 318 - SelectionMerge 321 None - BranchConditional 319 320 321 - 320: Label - 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 324: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 325 325 16 16 - 322: 11(int) Load 144(index) - 326: 11(int) IAdd 322 38 - 328: 236(ptr) AccessChain 208(particleIn) 126 326 126 - 329: 85(fvec4) Load 328 - 330: 18(fvec3) VectorShuffle 329 329 0 1 2 - Store 327(param) 330 - 332: 18(fvec3) Load 266(pos) - Store 331(param) 332 - 334: 128(ptr) AccessChain 123 126 213 - 335: 8(float) Load 334 - Store 333(param) 335 - 336: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 327(param) 331(param) 333(param) - 337: 18(fvec3) Load 252(force) - 338: 18(fvec3) FAdd 337 336 - Store 252(force) 338 - Branch 321 - 321: Label - 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 342 342 16 16 - 339: 142(ptr) AccessChain 60(id) 38 - 343: 11(int) Load 339 - 344: 153(ptr) AccessChain 123 126 152 38 - 345: 87(int) Load 344 - 346: 87(int) ISub 345 244 - 347: 11(int) Bitcast 346 - 348: 171(bool) ULessThan 343 347 - SelectionMerge 350 None - BranchConditional 348 349 350 - 349: Label - 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 354 354 16 16 - 351: 11(int) Load 144(index) - 355: 153(ptr) AccessChain 123 126 152 16 - 356: 87(int) Load 355 - 357: 11(int) Bitcast 356 - 358: 11(int) IAdd 351 357 - 361: 236(ptr) AccessChain 208(particleIn) 126 358 126 - 362: 85(fvec4) Load 361 - 363: 18(fvec3) VectorShuffle 362 362 0 1 2 - Store 360(param) 363 - 365: 18(fvec3) Load 266(pos) - Store 364(param) 365 - 367: 128(ptr) AccessChain 123 126 359 - 368: 8(float) Load 367 - Store 366(param) 368 - 369: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 360(param) 364(param) 366(param) - 370: 18(fvec3) Load 252(force) - 371: 18(fvec3) FAdd 370 369 - Store 252(force) 371 - Branch 350 - 350: Label - 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 375 375 16 16 - 372: 142(ptr) AccessChain 60(id) 38 - 376: 11(int) Load 372 - 377: 171(bool) UGreaterThan 376 16 - SelectionMerge 379 None - BranchConditional 377 378 379 - 378: Label - 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 382: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 383 383 16 16 - 380: 11(int) Load 144(index) - 384: 153(ptr) AccessChain 123 126 152 16 - 385: 87(int) Load 384 - 386: 11(int) Bitcast 385 - 387: 11(int) ISub 380 386 - 389: 236(ptr) AccessChain 208(particleIn) 126 387 126 - 390: 85(fvec4) Load 389 - 391: 18(fvec3) VectorShuffle 390 390 0 1 2 - Store 388(param) 391 - 393: 18(fvec3) Load 266(pos) - Store 392(param) 393 - 395: 128(ptr) AccessChain 123 126 359 - 396: 8(float) Load 395 - Store 394(param) 396 - 397: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 388(param) 392(param) 394(param) - 398: 18(fvec3) Load 252(force) - 399: 18(fvec3) FAdd 398 397 - Store 252(force) 399 - Branch 379 - 379: Label - 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 402: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 403 403 16 16 - 400: 142(ptr) AccessChain 60(id) 16 - 404: 11(int) Load 400 - 405: 171(bool) UGreaterThan 404 16 - 406: 142(ptr) AccessChain 60(id) 38 - 407: 11(int) Load 406 - 408: 153(ptr) AccessChain 123 126 152 38 - 409: 87(int) Load 408 - 410: 87(int) ISub 409 244 - 411: 11(int) Bitcast 410 - 412: 171(bool) ULessThan 407 411 - 413: 171(bool) LogicalAnd 405 412 - SelectionMerge 415 None - BranchConditional 413 414 415 - 414: Label - 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 418: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 419 419 16 16 - 416: 11(int) Load 144(index) - 420: 153(ptr) AccessChain 123 126 152 16 - 421: 87(int) Load 420 - 422: 11(int) Bitcast 421 - 423: 11(int) IAdd 416 422 - 424: 11(int) ISub 423 38 - 427: 236(ptr) AccessChain 208(particleIn) 126 424 126 - 428: 85(fvec4) Load 427 - 429: 18(fvec3) VectorShuffle 428 428 0 1 2 - Store 426(param) 429 - 431: 18(fvec3) Load 266(pos) - Store 430(param) 431 - 433: 128(ptr) AccessChain 123 126 425 - 434: 8(float) Load 433 - Store 432(param) 434 - 435: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 426(param) 430(param) 432(param) - 436: 18(fvec3) Load 252(force) - 437: 18(fvec3) FAdd 436 435 - Store 252(force) 437 - Branch 415 - 415: Label - 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 440: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 441 441 16 16 - 438: 142(ptr) AccessChain 60(id) 16 - 442: 11(int) Load 438 - 443: 171(bool) UGreaterThan 442 16 - 444: 142(ptr) AccessChain 60(id) 38 - 445: 11(int) Load 444 - 446: 171(bool) UGreaterThan 445 16 - 447: 171(bool) LogicalAnd 443 446 - SelectionMerge 449 None - BranchConditional 447 448 449 - 448: Label - 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 452: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 453 453 16 16 - 450: 11(int) Load 144(index) - 454: 153(ptr) AccessChain 123 126 152 16 - 455: 87(int) Load 454 - 456: 11(int) Bitcast 455 - 457: 11(int) ISub 450 456 - 458: 11(int) ISub 457 38 - 460: 236(ptr) AccessChain 208(particleIn) 126 458 126 - 461: 85(fvec4) Load 460 - 462: 18(fvec3) VectorShuffle 461 461 0 1 2 - Store 459(param) 462 - 464: 18(fvec3) Load 266(pos) - Store 463(param) 464 - 466: 128(ptr) AccessChain 123 126 425 - 467: 8(float) Load 466 - Store 465(param) 467 - 468: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 459(param) 463(param) 465(param) - 469: 18(fvec3) Load 252(force) - 470: 18(fvec3) FAdd 469 468 - Store 252(force) 470 - Branch 449 - 449: Label - 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 473: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 474 474 16 16 - 471: 142(ptr) AccessChain 60(id) 16 - 475: 11(int) Load 471 - 476: 153(ptr) AccessChain 123 126 152 16 - 477: 87(int) Load 476 - 478: 87(int) ISub 477 244 - 479: 11(int) Bitcast 478 - 480: 171(bool) ULessThan 475 479 - 481: 142(ptr) AccessChain 60(id) 38 - 482: 11(int) Load 481 - 483: 153(ptr) AccessChain 123 126 152 38 - 484: 87(int) Load 483 - 485: 87(int) ISub 484 244 - 486: 11(int) Bitcast 485 - 487: 171(bool) ULessThan 482 486 - 488: 171(bool) LogicalAnd 480 487 - SelectionMerge 490 None - BranchConditional 488 489 490 - 489: Label - 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 493: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 494 494 16 16 - 491: 11(int) Load 144(index) - 495: 153(ptr) AccessChain 123 126 152 16 - 496: 87(int) Load 495 - 497: 11(int) Bitcast 496 - 498: 11(int) IAdd 491 497 - 499: 11(int) IAdd 498 38 - 501: 236(ptr) AccessChain 208(particleIn) 126 499 126 - 502: 85(fvec4) Load 501 - 503: 18(fvec3) VectorShuffle 502 502 0 1 2 - Store 500(param) 503 - 505: 18(fvec3) Load 266(pos) - Store 504(param) 505 - 507: 128(ptr) AccessChain 123 126 425 - 508: 8(float) Load 507 - Store 506(param) 508 - 509: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 500(param) 504(param) 506(param) - 510: 18(fvec3) Load 252(force) - 511: 18(fvec3) FAdd 510 509 - Store 252(force) 511 - Branch 490 - 490: Label - 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 515 515 16 16 - 512: 142(ptr) AccessChain 60(id) 16 - 516: 11(int) Load 512 - 517: 153(ptr) AccessChain 123 126 152 16 - 518: 87(int) Load 517 - 519: 87(int) ISub 518 244 - 520: 11(int) Bitcast 519 - 521: 171(bool) ULessThan 516 520 - 522: 142(ptr) AccessChain 60(id) 38 - 523: 11(int) Load 522 - 524: 171(bool) UGreaterThan 523 16 - 525: 171(bool) LogicalAnd 521 524 - SelectionMerge 527 None - BranchConditional 525 526 527 - 526: Label - 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 530: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 531 531 16 16 - 528: 11(int) Load 144(index) - 532: 153(ptr) AccessChain 123 126 152 16 - 533: 87(int) Load 532 - 534: 11(int) Bitcast 533 - 535: 11(int) ISub 528 534 - 536: 11(int) IAdd 535 38 - 538: 236(ptr) AccessChain 208(particleIn) 126 536 126 - 539: 85(fvec4) Load 538 - 540: 18(fvec3) VectorShuffle 539 539 0 1 2 - Store 537(param) 540 - 542: 18(fvec3) Load 266(pos) - Store 541(param) 542 - 544: 128(ptr) AccessChain 123 126 425 - 545: 8(float) Load 544 - Store 543(param) 545 - 546: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 537(param) 541(param) 543(param) - 547: 18(fvec3) Load 252(force) - 548: 18(fvec3) FAdd 547 546 - Store 252(force) 548 - Branch 527 - 527: Label - 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 553 553 16 16 - 550: 128(ptr) AccessChain 123 126 549 - 554: 8(float) Load 550 - 555: 8(float) FNegate 554 - 556: 18(fvec3) Load 276(vel) - 557: 18(fvec3) VectorTimesScalar 556 555 - 558: 18(fvec3) Load 252(force) - 559: 18(fvec3) FAdd 558 557 - Store 252(force) 559 - 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 563 563 16 16 - 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 561 560(f) 44 - 566: 18(fvec3) Load 252(force) - 567: 128(ptr) AccessChain 123 126 244 - 568: 8(float) Load 567 - 569: 8(float) FDiv 216 568 - 570: 18(fvec3) VectorTimesScalar 566 569 - Store 560(f) 570 - 572: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 573 573 16 16 - 571: 11(int) Load 144(index) - 574: 18(fvec3) Load 266(pos) - 575: 18(fvec3) Load 276(vel) - 576: 128(ptr) AccessChain 123 126 126 - 577: 8(float) Load 576 - 578: 18(fvec3) VectorTimesScalar 575 577 - 579: 18(fvec3) FAdd 574 578 - 581: 18(fvec3) Load 560(f) - 582: 18(fvec3) VectorTimesScalar 581 580 - 583: 128(ptr) AccessChain 123 126 126 - 584: 8(float) Load 583 - 585: 18(fvec3) VectorTimesScalar 582 584 - 586: 128(ptr) AccessChain 123 126 126 - 587: 8(float) Load 586 - 588: 18(fvec3) VectorTimesScalar 585 587 - 589: 18(fvec3) FAdd 579 588 - 590: 8(float) CompositeExtract 589 0 - 591: 8(float) CompositeExtract 589 1 - 592: 8(float) CompositeExtract 589 2 - 593: 85(fvec4) CompositeConstruct 590 591 592 216 - 594: 236(ptr) AccessChain 230(particleOut) 126 571 126 - Store 594 593 - 596: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 597 597 16 16 - 595: 11(int) Load 144(index) - 598: 18(fvec3) Load 276(vel) - 599: 18(fvec3) Load 560(f) - 600: 128(ptr) AccessChain 123 126 126 - 601: 8(float) Load 600 - 602: 18(fvec3) VectorTimesScalar 599 601 - 603: 18(fvec3) FAdd 598 602 - 604: 8(float) CompositeExtract 603 0 - 605: 8(float) CompositeExtract 603 1 - 606: 8(float) CompositeExtract 603 2 - 607: 85(fvec4) CompositeConstruct 604 605 606 245 - 608: 236(ptr) AccessChain 230(particleOut) 126 595 244 - Store 608 607 - 614: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 612 612 16 16 - 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 610 609(sphereDist) 44 - 615: 11(int) Load 144(index) - 616: 236(ptr) AccessChain 230(particleOut) 126 615 126 - 617: 85(fvec4) Load 616 - 618: 18(fvec3) VectorShuffle 617 617 0 1 2 - 620: 236(ptr) AccessChain 123 126 619 - 621: 85(fvec4) Load 620 - 622: 18(fvec3) VectorShuffle 621 621 0 1 2 - 623: 18(fvec3) FSub 618 622 - Store 609(sphereDist) 623 - 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 626 626 16 16 - 624: 18(fvec3) Load 609(sphereDist) - 627: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 624 - 629: 128(ptr) AccessChain 123 126 628 - 630: 8(float) Load 629 - 632: 8(float) FAdd 630 631 - 633: 171(bool) FOrdLessThan 627 632 - SelectionMerge 635 None - BranchConditional 633 634 635 - 634: Label - 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 639 639 16 16 - 636: 11(int) Load 144(index) - 640: 236(ptr) AccessChain 123 126 619 - 641: 85(fvec4) Load 640 - 642: 18(fvec3) VectorShuffle 641 641 0 1 2 - 643: 18(fvec3) Load 609(sphereDist) - 644: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 643 - 645: 128(ptr) AccessChain 123 126 628 - 646: 8(float) Load 645 - 647: 8(float) FAdd 646 631 - 648: 18(fvec3) VectorTimesScalar 644 647 - 649: 18(fvec3) FAdd 642 648 - 650: 128(ptr) AccessChain 230(particleOut) 126 636 126 16 - 651: 8(float) CompositeExtract 649 0 - Store 650 651 - 652: 128(ptr) AccessChain 230(particleOut) 126 636 126 38 - 653: 8(float) CompositeExtract 649 1 - Store 652 653 - 654: 128(ptr) AccessChain 230(particleOut) 126 636 126 49 - 655: 8(float) CompositeExtract 649 2 - Store 654 655 - 657: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 658 658 16 16 - 656: 11(int) Load 144(index) - 659: 236(ptr) AccessChain 230(particleOut) 126 656 244 - Store 659 246 - Branch 635 - 635: Label - 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 682: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 667 667 16 16 - 680: 678(ptr) AccessChain 676 126 126 - 683: 11(int) Load 680 - 684: 171(bool) IEqual 683 38 - SelectionMerge 686 None - BranchConditional 684 685 686 - 685: Label - 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 692: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 689 689 16 16 - 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 688 687(normal) 44 - Store 687(normal) 693 - 695: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 696 696 16 16 - 694: 142(ptr) AccessChain 60(id) 38 - 697: 11(int) Load 694 - 698: 171(bool) UGreaterThan 697 16 - SelectionMerge 700 None - BranchConditional 698 699 700 - 699: Label - 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 703: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 704 704 16 16 - 701: 142(ptr) AccessChain 60(id) 16 - 705: 11(int) Load 701 - 706: 171(bool) UGreaterThan 705 16 - SelectionMerge 708 None - BranchConditional 706 707 708 - 707: Label - 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 712 712 16 16 - 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 710 709(a) 44 - 716: 11(int) Load 144(index) - 717: 11(int) ISub 716 38 - 718: 236(ptr) AccessChain 208(particleIn) 126 717 126 - 719: 85(fvec4) Load 718 - 720: 18(fvec3) VectorShuffle 719 719 0 1 2 - 721: 18(fvec3) Load 266(pos) - 722: 18(fvec3) FSub 720 721 - Store 709(a) 722 - 728: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 726 726 16 16 - 727: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 724 723(b) 44 - 729: 11(int) Load 144(index) - 730: 153(ptr) AccessChain 123 126 152 16 - 731: 87(int) Load 730 - 732: 11(int) Bitcast 731 - 733: 11(int) ISub 729 732 - 734: 11(int) ISub 733 38 - 735: 236(ptr) AccessChain 208(particleIn) 126 734 126 - 736: 85(fvec4) Load 735 - 737: 18(fvec3) VectorShuffle 736 736 0 1 2 - 738: 18(fvec3) Load 266(pos) - 739: 18(fvec3) FSub 737 738 - Store 723(b) 739 - 745: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 743 743 16 16 - 744: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 741 740(c) 44 - 746: 11(int) Load 144(index) - 747: 153(ptr) AccessChain 123 126 152 16 - 748: 87(int) Load 747 - 749: 11(int) Bitcast 748 - 750: 11(int) ISub 746 749 - 751: 236(ptr) AccessChain 208(particleIn) 126 750 126 - 752: 85(fvec4) Load 751 - 753: 18(fvec3) VectorShuffle 752 752 0 1 2 - 754: 18(fvec3) Load 266(pos) - 755: 18(fvec3) FSub 753 754 - Store 740(c) 755 - 757: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 758 758 16 16 - 756: 18(fvec3) Load 709(a) - 759: 18(fvec3) Load 723(b) - 760: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 756 759 - 761: 18(fvec3) Load 723(b) - 762: 18(fvec3) Load 740(c) - 763: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 761 762 - 764: 18(fvec3) FAdd 760 763 - 765: 18(fvec3) Load 687(normal) - 766: 18(fvec3) FAdd 765 764 - Store 687(normal) 766 - Branch 708 - 708: Label - 768: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 769: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 770 770 16 16 - 767: 142(ptr) AccessChain 60(id) 16 - 771: 11(int) Load 767 - 772: 153(ptr) AccessChain 123 126 152 16 - 773: 87(int) Load 772 - 774: 87(int) ISub 773 244 - 775: 11(int) Bitcast 774 - 776: 171(bool) ULessThan 771 775 - SelectionMerge 778 None - BranchConditional 776 777 778 - 777: Label - 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 782 782 16 16 - 779: 11(int) Load 144(index) - 783: 153(ptr) AccessChain 123 126 152 16 - 784: 87(int) Load 783 - 785: 11(int) Bitcast 784 - 786: 11(int) ISub 779 785 - 787: 236(ptr) AccessChain 208(particleIn) 126 786 126 - 788: 85(fvec4) Load 787 - 789: 18(fvec3) VectorShuffle 788 788 0 1 2 - 790: 18(fvec3) Load 266(pos) - 791: 18(fvec3) FSub 789 790 - Store 709(a) 791 - 793: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 794 794 16 16 - 792: 11(int) Load 144(index) - 795: 153(ptr) AccessChain 123 126 152 16 - 796: 87(int) Load 795 - 797: 11(int) Bitcast 796 - 798: 11(int) ISub 792 797 - 799: 11(int) IAdd 798 38 - 800: 236(ptr) AccessChain 208(particleIn) 126 799 126 - 801: 85(fvec4) Load 800 - 802: 18(fvec3) VectorShuffle 801 801 0 1 2 - 803: 18(fvec3) Load 266(pos) - 804: 18(fvec3) FSub 802 803 - Store 723(b) 804 - 806: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 807 807 16 16 - 805: 11(int) Load 144(index) - 808: 11(int) IAdd 805 38 - 809: 236(ptr) AccessChain 208(particleIn) 126 808 126 - 810: 85(fvec4) Load 809 - 811: 18(fvec3) VectorShuffle 810 810 0 1 2 - 812: 18(fvec3) Load 266(pos) - 813: 18(fvec3) FSub 811 812 - Store 740(c) 813 - 815: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 816 816 16 16 - 814: 18(fvec3) Load 709(a) - 817: 18(fvec3) Load 723(b) - 818: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 814 817 - 819: 18(fvec3) Load 723(b) - 820: 18(fvec3) Load 740(c) - 821: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 819 820 - 822: 18(fvec3) FAdd 818 821 - 823: 18(fvec3) Load 687(normal) - 824: 18(fvec3) FAdd 823 822 - Store 687(normal) 824 - Branch 778 - 778: Label - 825: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - Branch 700 - 700: Label - 827: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 828: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 829 829 16 16 - 826: 142(ptr) AccessChain 60(id) 38 - 830: 11(int) Load 826 - 831: 153(ptr) AccessChain 123 126 152 38 - 832: 87(int) Load 831 - 833: 87(int) ISub 832 244 - 834: 11(int) Bitcast 833 - 835: 171(bool) ULessThan 830 834 - SelectionMerge 837 None - BranchConditional 835 836 837 - 836: Label - 839: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 840: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 841 841 16 16 - 838: 142(ptr) AccessChain 60(id) 16 - 842: 11(int) Load 838 - 843: 171(bool) UGreaterThan 842 16 - SelectionMerge 845 None - BranchConditional 843 844 845 - 844: Label - 847: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 848: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 849 849 16 16 - 846: 11(int) Load 144(index) - 850: 153(ptr) AccessChain 123 126 152 16 - 851: 87(int) Load 850 - 852: 11(int) Bitcast 851 - 853: 11(int) IAdd 846 852 - 854: 236(ptr) AccessChain 208(particleIn) 126 853 126 - 855: 85(fvec4) Load 854 - 856: 18(fvec3) VectorShuffle 855 855 0 1 2 - 857: 18(fvec3) Load 266(pos) - 858: 18(fvec3) FSub 856 857 - Store 709(a) 858 - 860: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 861 861 16 16 - 859: 11(int) Load 144(index) - 862: 153(ptr) AccessChain 123 126 152 16 - 863: 87(int) Load 862 - 864: 11(int) Bitcast 863 - 865: 11(int) IAdd 859 864 - 866: 11(int) ISub 865 38 - 867: 236(ptr) AccessChain 208(particleIn) 126 866 126 - 868: 85(fvec4) Load 867 - 869: 18(fvec3) VectorShuffle 868 868 0 1 2 - 870: 18(fvec3) Load 266(pos) - 871: 18(fvec3) FSub 869 870 - Store 723(b) 871 - 873: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 874 874 16 16 - 872: 11(int) Load 144(index) - 875: 11(int) ISub 872 38 - 876: 236(ptr) AccessChain 208(particleIn) 126 875 126 - 877: 85(fvec4) Load 876 - 878: 18(fvec3) VectorShuffle 877 877 0 1 2 - 879: 18(fvec3) Load 266(pos) - 880: 18(fvec3) FSub 878 879 - Store 740(c) 880 - 882: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 883 883 16 16 - 881: 18(fvec3) Load 709(a) - 884: 18(fvec3) Load 723(b) - 885: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 881 884 - 886: 18(fvec3) Load 723(b) - 887: 18(fvec3) Load 740(c) - 888: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 886 887 - 889: 18(fvec3) FAdd 885 888 - 890: 18(fvec3) Load 687(normal) - 891: 18(fvec3) FAdd 890 889 - Store 687(normal) 891 - Branch 845 - 845: Label - 893: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 894: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 895 895 16 16 - 892: 142(ptr) AccessChain 60(id) 16 - 896: 11(int) Load 892 - 897: 153(ptr) AccessChain 123 126 152 16 - 898: 87(int) Load 897 - 899: 87(int) ISub 898 244 - 900: 11(int) Bitcast 899 - 901: 171(bool) ULessThan 896 900 - SelectionMerge 903 None - BranchConditional 901 902 903 - 902: Label - 905: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 906: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 907 907 16 16 - 904: 11(int) Load 144(index) - 908: 11(int) IAdd 904 38 - 909: 236(ptr) AccessChain 208(particleIn) 126 908 126 - 910: 85(fvec4) Load 909 - 911: 18(fvec3) VectorShuffle 910 910 0 1 2 - 912: 18(fvec3) Load 266(pos) - 913: 18(fvec3) FSub 911 912 - Store 709(a) 913 - 915: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 916 916 16 16 - 914: 11(int) Load 144(index) - 917: 153(ptr) AccessChain 123 126 152 16 - 918: 87(int) Load 917 - 919: 11(int) Bitcast 918 - 920: 11(int) IAdd 914 919 - 921: 11(int) IAdd 920 38 - 922: 236(ptr) AccessChain 208(particleIn) 126 921 126 - 923: 85(fvec4) Load 922 - 924: 18(fvec3) VectorShuffle 923 923 0 1 2 - 925: 18(fvec3) Load 266(pos) - 926: 18(fvec3) FSub 924 925 - Store 723(b) 926 - 928: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 929 929 16 16 - 927: 11(int) Load 144(index) - 930: 153(ptr) AccessChain 123 126 152 16 - 931: 87(int) Load 930 - 932: 11(int) Bitcast 931 - 933: 11(int) IAdd 927 932 - 934: 236(ptr) AccessChain 208(particleIn) 126 933 126 - 935: 85(fvec4) Load 934 - 936: 18(fvec3) VectorShuffle 935 935 0 1 2 - 937: 18(fvec3) Load 266(pos) - 938: 18(fvec3) FSub 936 937 - Store 740(c) 938 - 940: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 941 941 16 16 - 939: 18(fvec3) Load 709(a) - 942: 18(fvec3) Load 723(b) - 943: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 939 942 - 944: 18(fvec3) Load 723(b) - 945: 18(fvec3) Load 740(c) - 946: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 944 945 - 947: 18(fvec3) FAdd 943 946 - 948: 18(fvec3) Load 687(normal) - 949: 18(fvec3) FAdd 948 947 - Store 687(normal) 949 - Branch 903 - 903: Label - 950: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - Branch 837 - 837: Label - 952: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 - 953: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 954 954 16 16 - 951: 11(int) Load 144(index) - 955: 18(fvec3) Load 687(normal) - 956: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 955 - 957: 8(float) CompositeExtract 956 0 - 958: 8(float) CompositeExtract 956 1 - 959: 8(float) CompositeExtract 956 2 - 960: 85(fvec4) CompositeConstruct 957 958 959 245 - 961: 236(ptr) AccessChain 230(particleOut) 126 951 549 - Store 961 960 - Branch 686 - 686: Label - 962: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 256: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 257: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 254 254 16 16 + 255: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 252 251(force) 44 + 259: 236(ptr) AccessChain 123 126 258 + 260: 85(fvec4) Load 259 + 261: 18(fvec3) VectorShuffle 260 260 0 1 2 + 262: 128(ptr) AccessChain 123 126 244 + 263: 8(float) Load 262 + 264: 18(fvec3) VectorTimesScalar 261 263 + Store 251(force) 264 + 270: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 268 268 16 16 + 269: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 266 265(pos) 44 + 271: 11(int) Load 145(index) + 272: 236(ptr) AccessChain 208(particleIn) 126 271 126 + 273: 85(fvec4) Load 272 + 274: 18(fvec3) VectorShuffle 273 273 0 1 2 + Store 265(pos) 274 + 280: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 278 278 16 16 + 279: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 276 275(vel) 44 + 281: 11(int) Load 145(index) + 282: 236(ptr) AccessChain 208(particleIn) 126 281 244 + 283: 85(fvec4) Load 282 + 284: 18(fvec3) VectorShuffle 283 283 0 1 2 + Store 275(vel) 284 + 286: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 287 287 16 16 + 285: 143(ptr) AccessChain 60(id) 16 + 288: 11(int) Load 285 + 289: 172(bool) UGreaterThan 288 16 + SelectionMerge 291 None + BranchConditional 289 290 291 + 290: Label + 293: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 294: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 295 295 16 16 + 292: 11(int) Load 145(index) + 296: 11(int) ISub 292 38 + 298: 236(ptr) AccessChain 208(particleIn) 126 296 126 + 299: 85(fvec4) Load 298 + 300: 18(fvec3) VectorShuffle 299 299 0 1 2 + Store 297(param) 300 + 302: 18(fvec3) Load 265(pos) + Store 301(param) 302 + 304: 128(ptr) AccessChain 123 126 213 + 305: 8(float) Load 304 + Store 303(param) 305 + 306: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 297(param) 301(param) 303(param) + 307: 18(fvec3) Load 251(force) + 308: 18(fvec3) FAdd 307 306 + Store 251(force) 308 + Branch 291 + 291: Label + 310: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 311: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 312 312 16 16 + 309: 143(ptr) AccessChain 60(id) 16 + 313: 11(int) Load 309 + 314: 154(ptr) AccessChain 123 126 153 16 + 315: 87(int) Load 314 + 316: 87(int) ISub 315 244 + 317: 11(int) Bitcast 316 + 318: 172(bool) ULessThan 313 317 + SelectionMerge 320 None + BranchConditional 318 319 320 + 319: Label + 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 324 324 16 16 + 321: 11(int) Load 145(index) + 325: 11(int) IAdd 321 38 + 327: 236(ptr) AccessChain 208(particleIn) 126 325 126 + 328: 85(fvec4) Load 327 + 329: 18(fvec3) VectorShuffle 328 328 0 1 2 + Store 326(param) 329 + 331: 18(fvec3) Load 265(pos) + Store 330(param) 331 + 333: 128(ptr) AccessChain 123 126 213 + 334: 8(float) Load 333 + Store 332(param) 334 + 335: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 326(param) 330(param) 332(param) + 336: 18(fvec3) Load 251(force) + 337: 18(fvec3) FAdd 336 335 + Store 251(force) 337 + Branch 320 + 320: Label + 339: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 341 341 16 16 + 338: 143(ptr) AccessChain 60(id) 38 + 342: 11(int) Load 338 + 343: 154(ptr) AccessChain 123 126 153 38 + 344: 87(int) Load 343 + 345: 87(int) ISub 344 244 + 346: 11(int) Bitcast 345 + 347: 172(bool) ULessThan 342 346 + SelectionMerge 349 None + BranchConditional 347 348 349 + 348: Label + 351: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 353 353 16 16 + 350: 11(int) Load 145(index) + 354: 154(ptr) AccessChain 123 126 153 16 + 355: 87(int) Load 354 + 356: 11(int) Bitcast 355 + 357: 11(int) IAdd 350 356 + 360: 236(ptr) AccessChain 208(particleIn) 126 357 126 + 361: 85(fvec4) Load 360 + 362: 18(fvec3) VectorShuffle 361 361 0 1 2 + Store 359(param) 362 + 364: 18(fvec3) Load 265(pos) + Store 363(param) 364 + 366: 128(ptr) AccessChain 123 126 358 + 367: 8(float) Load 366 + Store 365(param) 367 + 368: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 359(param) 363(param) 365(param) + 369: 18(fvec3) Load 251(force) + 370: 18(fvec3) FAdd 369 368 + Store 251(force) 370 + Branch 349 + 349: Label + 372: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 374 374 16 16 + 371: 143(ptr) AccessChain 60(id) 38 + 375: 11(int) Load 371 + 376: 172(bool) UGreaterThan 375 16 + SelectionMerge 378 None + BranchConditional 376 377 378 + 377: Label + 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 382 382 16 16 + 379: 11(int) Load 145(index) + 383: 154(ptr) AccessChain 123 126 153 16 + 384: 87(int) Load 383 + 385: 11(int) Bitcast 384 + 386: 11(int) ISub 379 385 + 388: 236(ptr) AccessChain 208(particleIn) 126 386 126 + 389: 85(fvec4) Load 388 + 390: 18(fvec3) VectorShuffle 389 389 0 1 2 + Store 387(param) 390 + 392: 18(fvec3) Load 265(pos) + Store 391(param) 392 + 394: 128(ptr) AccessChain 123 126 358 + 395: 8(float) Load 394 + Store 393(param) 395 + 396: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 387(param) 391(param) 393(param) + 397: 18(fvec3) Load 251(force) + 398: 18(fvec3) FAdd 397 396 + Store 251(force) 398 + Branch 378 + 378: Label + 400: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 401: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 402 402 16 16 + 399: 143(ptr) AccessChain 60(id) 16 + 403: 11(int) Load 399 + 404: 172(bool) UGreaterThan 403 16 + 405: 143(ptr) AccessChain 60(id) 38 + 406: 11(int) Load 405 + 407: 154(ptr) AccessChain 123 126 153 38 + 408: 87(int) Load 407 + 409: 87(int) ISub 408 244 + 410: 11(int) Bitcast 409 + 411: 172(bool) ULessThan 406 410 + 412: 172(bool) LogicalAnd 404 411 + SelectionMerge 414 None + BranchConditional 412 413 414 + 413: Label + 416: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 417: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 418 418 16 16 + 415: 11(int) Load 145(index) + 419: 154(ptr) AccessChain 123 126 153 16 + 420: 87(int) Load 419 + 421: 11(int) Bitcast 420 + 422: 11(int) IAdd 415 421 + 423: 11(int) ISub 422 38 + 426: 236(ptr) AccessChain 208(particleIn) 126 423 126 + 427: 85(fvec4) Load 426 + 428: 18(fvec3) VectorShuffle 427 427 0 1 2 + Store 425(param) 428 + 430: 18(fvec3) Load 265(pos) + Store 429(param) 430 + 432: 128(ptr) AccessChain 123 126 424 + 433: 8(float) Load 432 + Store 431(param) 433 + 434: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 425(param) 429(param) 431(param) + 435: 18(fvec3) Load 251(force) + 436: 18(fvec3) FAdd 435 434 + Store 251(force) 436 + Branch 414 + 414: Label + 438: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 439: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 440 440 16 16 + 437: 143(ptr) AccessChain 60(id) 16 + 441: 11(int) Load 437 + 442: 172(bool) UGreaterThan 441 16 + 443: 143(ptr) AccessChain 60(id) 38 + 444: 11(int) Load 443 + 445: 172(bool) UGreaterThan 444 16 + 446: 172(bool) LogicalAnd 442 445 + SelectionMerge 448 None + BranchConditional 446 447 448 + 447: Label + 450: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 451: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 452 452 16 16 + 449: 11(int) Load 145(index) + 453: 154(ptr) AccessChain 123 126 153 16 + 454: 87(int) Load 453 + 455: 11(int) Bitcast 454 + 456: 11(int) ISub 449 455 + 457: 11(int) ISub 456 38 + 459: 236(ptr) AccessChain 208(particleIn) 126 457 126 + 460: 85(fvec4) Load 459 + 461: 18(fvec3) VectorShuffle 460 460 0 1 2 + Store 458(param) 461 + 463: 18(fvec3) Load 265(pos) + Store 462(param) 463 + 465: 128(ptr) AccessChain 123 126 424 + 466: 8(float) Load 465 + Store 464(param) 466 + 467: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 458(param) 462(param) 464(param) + 468: 18(fvec3) Load 251(force) + 469: 18(fvec3) FAdd 468 467 + Store 251(force) 469 + Branch 448 + 448: Label + 471: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 472: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 473 473 16 16 + 470: 143(ptr) AccessChain 60(id) 16 + 474: 11(int) Load 470 + 475: 154(ptr) AccessChain 123 126 153 16 + 476: 87(int) Load 475 + 477: 87(int) ISub 476 244 + 478: 11(int) Bitcast 477 + 479: 172(bool) ULessThan 474 478 + 480: 143(ptr) AccessChain 60(id) 38 + 481: 11(int) Load 480 + 482: 154(ptr) AccessChain 123 126 153 38 + 483: 87(int) Load 482 + 484: 87(int) ISub 483 244 + 485: 11(int) Bitcast 484 + 486: 172(bool) ULessThan 481 485 + 487: 172(bool) LogicalAnd 479 486 + SelectionMerge 489 None + BranchConditional 487 488 489 + 488: Label + 491: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 492: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 493 493 16 16 + 490: 11(int) Load 145(index) + 494: 154(ptr) AccessChain 123 126 153 16 + 495: 87(int) Load 494 + 496: 11(int) Bitcast 495 + 497: 11(int) IAdd 490 496 + 498: 11(int) IAdd 497 38 + 500: 236(ptr) AccessChain 208(particleIn) 126 498 126 + 501: 85(fvec4) Load 500 + 502: 18(fvec3) VectorShuffle 501 501 0 1 2 + Store 499(param) 502 + 504: 18(fvec3) Load 265(pos) + Store 503(param) 504 + 506: 128(ptr) AccessChain 123 126 424 + 507: 8(float) Load 506 + Store 505(param) 507 + 508: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 499(param) 503(param) 505(param) + 509: 18(fvec3) Load 251(force) + 510: 18(fvec3) FAdd 509 508 + Store 251(force) 510 + Branch 489 + 489: Label + 512: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 514 514 16 16 + 511: 143(ptr) AccessChain 60(id) 16 + 515: 11(int) Load 511 + 516: 154(ptr) AccessChain 123 126 153 16 + 517: 87(int) Load 516 + 518: 87(int) ISub 517 244 + 519: 11(int) Bitcast 518 + 520: 172(bool) ULessThan 515 519 + 521: 143(ptr) AccessChain 60(id) 38 + 522: 11(int) Load 521 + 523: 172(bool) UGreaterThan 522 16 + 524: 172(bool) LogicalAnd 520 523 + SelectionMerge 526 None + BranchConditional 524 525 526 + 525: Label + 528: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 529: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 530 530 16 16 + 527: 11(int) Load 145(index) + 531: 154(ptr) AccessChain 123 126 153 16 + 532: 87(int) Load 531 + 533: 11(int) Bitcast 532 + 534: 11(int) ISub 527 533 + 535: 11(int) IAdd 534 38 + 537: 236(ptr) AccessChain 208(particleIn) 126 535 126 + 538: 85(fvec4) Load 537 + 539: 18(fvec3) VectorShuffle 538 538 0 1 2 + Store 536(param) 539 + 541: 18(fvec3) Load 265(pos) + Store 540(param) 541 + 543: 128(ptr) AccessChain 123 126 424 + 544: 8(float) Load 543 + Store 542(param) 544 + 545: 18(fvec3) FunctionCall 30(springForce(vf3;vf3;f1;) 536(param) 540(param) 542(param) + 546: 18(fvec3) Load 251(force) + 547: 18(fvec3) FAdd 546 545 + Store 251(force) 547 + Branch 526 + 526: Label + 550: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 552 552 16 16 + 549: 128(ptr) AccessChain 123 126 548 + 553: 8(float) Load 549 + 554: 8(float) FNegate 553 + 555: 18(fvec3) Load 275(vel) + 556: 18(fvec3) VectorTimesScalar 555 554 + 557: 18(fvec3) Load 251(force) + 558: 18(fvec3) FAdd 557 556 + Store 251(force) 558 + 564: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 562 562 16 16 + 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 560 559(f) 44 + 565: 18(fvec3) Load 251(force) + 566: 128(ptr) AccessChain 123 126 244 + 567: 8(float) Load 566 + 568: 8(float) FDiv 216 567 + 569: 18(fvec3) VectorTimesScalar 565 568 + Store 559(f) 569 + 571: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 572 572 16 16 + 570: 11(int) Load 145(index) + 573: 18(fvec3) Load 265(pos) + 574: 18(fvec3) Load 275(vel) + 575: 128(ptr) AccessChain 123 126 126 + 576: 8(float) Load 575 + 577: 18(fvec3) VectorTimesScalar 574 576 + 578: 18(fvec3) FAdd 573 577 + 580: 18(fvec3) Load 559(f) + 581: 18(fvec3) VectorTimesScalar 580 579 + 582: 128(ptr) AccessChain 123 126 126 + 583: 8(float) Load 582 + 584: 18(fvec3) VectorTimesScalar 581 583 + 585: 128(ptr) AccessChain 123 126 126 + 586: 8(float) Load 585 + 587: 18(fvec3) VectorTimesScalar 584 586 + 588: 18(fvec3) FAdd 578 587 + 589: 8(float) CompositeExtract 588 0 + 590: 8(float) CompositeExtract 588 1 + 591: 8(float) CompositeExtract 588 2 + 592: 85(fvec4) CompositeConstruct 589 590 591 216 + 593: 236(ptr) AccessChain 230(particleOut) 126 570 126 + Store 593 592 + 595: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 596 596 16 16 + 594: 11(int) Load 145(index) + 597: 18(fvec3) Load 275(vel) + 598: 18(fvec3) Load 559(f) + 599: 128(ptr) AccessChain 123 126 126 + 600: 8(float) Load 599 + 601: 18(fvec3) VectorTimesScalar 598 600 + 602: 18(fvec3) FAdd 597 601 + 603: 8(float) CompositeExtract 602 0 + 604: 8(float) CompositeExtract 602 1 + 605: 8(float) CompositeExtract 602 2 + 606: 85(fvec4) CompositeConstruct 603 604 605 245 + 607: 236(ptr) AccessChain 230(particleOut) 126 594 244 + Store 607 606 + 613: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 611 611 16 16 + 612: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 609 608(sphereDist) 44 + 614: 11(int) Load 145(index) + 615: 236(ptr) AccessChain 230(particleOut) 126 614 126 + 616: 85(fvec4) Load 615 + 617: 18(fvec3) VectorShuffle 616 616 0 1 2 + 619: 236(ptr) AccessChain 123 126 618 + 620: 85(fvec4) Load 619 + 621: 18(fvec3) VectorShuffle 620 620 0 1 2 + 622: 18(fvec3) FSub 617 621 + Store 608(sphereDist) 622 + 624: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 625 625 16 16 + 623: 18(fvec3) Load 608(sphereDist) + 626: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 623 + 628: 128(ptr) AccessChain 123 126 627 + 629: 8(float) Load 628 + 631: 8(float) FAdd 629 630 + 632: 172(bool) FOrdLessThan 626 631 + SelectionMerge 634 None + BranchConditional 632 633 634 + 633: Label + 636: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 637: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 638 638 16 16 + 635: 11(int) Load 145(index) + 639: 236(ptr) AccessChain 123 126 618 + 640: 85(fvec4) Load 639 + 641: 18(fvec3) VectorShuffle 640 640 0 1 2 + 642: 18(fvec3) Load 608(sphereDist) + 643: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 642 + 644: 128(ptr) AccessChain 123 126 627 + 645: 8(float) Load 644 + 646: 8(float) FAdd 645 630 + 647: 18(fvec3) VectorTimesScalar 643 646 + 648: 18(fvec3) FAdd 641 647 + 649: 128(ptr) AccessChain 230(particleOut) 126 635 126 16 + 650: 8(float) CompositeExtract 648 0 + Store 649 650 + 651: 128(ptr) AccessChain 230(particleOut) 126 635 126 38 + 652: 8(float) CompositeExtract 648 1 + Store 651 652 + 653: 128(ptr) AccessChain 230(particleOut) 126 635 126 49 + 654: 8(float) CompositeExtract 648 2 + Store 653 654 + 656: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 657 657 16 16 + 655: 11(int) Load 145(index) + 658: 236(ptr) AccessChain 230(particleOut) 126 655 244 + Store 658 246 + Branch 634 + 634: Label + 680: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 666 666 16 16 + 679: 677(ptr) AccessChain 675 126 126 + 682: 11(int) Load 679 + 683: 172(bool) IEqual 682 38 + SelectionMerge 685 None + BranchConditional 683 684 685 + 684: Label + 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 691: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 688 688 16 16 + 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 687 686(normal) 44 + Store 686(normal) 692 + 694: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 695 695 16 16 + 693: 143(ptr) AccessChain 60(id) 38 + 696: 11(int) Load 693 + 697: 172(bool) UGreaterThan 696 16 + SelectionMerge 699 None + BranchConditional 697 698 699 + 698: Label + 701: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 703 703 16 16 + 700: 143(ptr) AccessChain 60(id) 16 + 704: 11(int) Load 700 + 705: 172(bool) UGreaterThan 704 16 + SelectionMerge 707 None + BranchConditional 705 706 707 + 706: Label + 713: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 711 711 16 16 + 712: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 709 708(a) 44 + 715: 11(int) Load 145(index) + 716: 11(int) ISub 715 38 + 717: 236(ptr) AccessChain 208(particleIn) 126 716 126 + 718: 85(fvec4) Load 717 + 719: 18(fvec3) VectorShuffle 718 718 0 1 2 + 720: 18(fvec3) Load 265(pos) + 721: 18(fvec3) FSub 719 720 + Store 708(a) 721 + 727: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 725 725 16 16 + 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 723 722(b) 44 + 728: 11(int) Load 145(index) + 729: 154(ptr) AccessChain 123 126 153 16 + 730: 87(int) Load 729 + 731: 11(int) Bitcast 730 + 732: 11(int) ISub 728 731 + 733: 11(int) ISub 732 38 + 734: 236(ptr) AccessChain 208(particleIn) 126 733 126 + 735: 85(fvec4) Load 734 + 736: 18(fvec3) VectorShuffle 735 735 0 1 2 + 737: 18(fvec3) Load 265(pos) + 738: 18(fvec3) FSub 736 737 + Store 722(b) 738 + 744: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 742 742 16 16 + 743: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 740 739(c) 44 + 745: 11(int) Load 145(index) + 746: 154(ptr) AccessChain 123 126 153 16 + 747: 87(int) Load 746 + 748: 11(int) Bitcast 747 + 749: 11(int) ISub 745 748 + 750: 236(ptr) AccessChain 208(particleIn) 126 749 126 + 751: 85(fvec4) Load 750 + 752: 18(fvec3) VectorShuffle 751 751 0 1 2 + 753: 18(fvec3) Load 265(pos) + 754: 18(fvec3) FSub 752 753 + Store 739(c) 754 + 756: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 757 757 16 16 + 755: 18(fvec3) Load 708(a) + 758: 18(fvec3) Load 722(b) + 759: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 755 758 + 760: 18(fvec3) Load 722(b) + 761: 18(fvec3) Load 739(c) + 762: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 760 761 + 763: 18(fvec3) FAdd 759 762 + 764: 18(fvec3) Load 686(normal) + 765: 18(fvec3) FAdd 764 763 + Store 686(normal) 765 + Branch 707 + 707: Label + 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 768: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 769 769 16 16 + 766: 143(ptr) AccessChain 60(id) 16 + 770: 11(int) Load 766 + 771: 154(ptr) AccessChain 123 126 153 16 + 772: 87(int) Load 771 + 773: 87(int) ISub 772 244 + 774: 11(int) Bitcast 773 + 775: 172(bool) ULessThan 770 774 + SelectionMerge 777 None + BranchConditional 775 776 777 + 776: Label + 779: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 781 781 16 16 + 778: 11(int) Load 145(index) + 782: 154(ptr) AccessChain 123 126 153 16 + 783: 87(int) Load 782 + 784: 11(int) Bitcast 783 + 785: 11(int) ISub 778 784 + 786: 236(ptr) AccessChain 208(particleIn) 126 785 126 + 787: 85(fvec4) Load 786 + 788: 18(fvec3) VectorShuffle 787 787 0 1 2 + 789: 18(fvec3) Load 265(pos) + 790: 18(fvec3) FSub 788 789 + Store 708(a) 790 + 792: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 793 793 16 16 + 791: 11(int) Load 145(index) + 794: 154(ptr) AccessChain 123 126 153 16 + 795: 87(int) Load 794 + 796: 11(int) Bitcast 795 + 797: 11(int) ISub 791 796 + 798: 11(int) IAdd 797 38 + 799: 236(ptr) AccessChain 208(particleIn) 126 798 126 + 800: 85(fvec4) Load 799 + 801: 18(fvec3) VectorShuffle 800 800 0 1 2 + 802: 18(fvec3) Load 265(pos) + 803: 18(fvec3) FSub 801 802 + Store 722(b) 803 + 805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 806 806 16 16 + 804: 11(int) Load 145(index) + 807: 11(int) IAdd 804 38 + 808: 236(ptr) AccessChain 208(particleIn) 126 807 126 + 809: 85(fvec4) Load 808 + 810: 18(fvec3) VectorShuffle 809 809 0 1 2 + 811: 18(fvec3) Load 265(pos) + 812: 18(fvec3) FSub 810 811 + Store 739(c) 812 + 814: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 815 815 16 16 + 813: 18(fvec3) Load 708(a) + 816: 18(fvec3) Load 722(b) + 817: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 813 816 + 818: 18(fvec3) Load 722(b) + 819: 18(fvec3) Load 739(c) + 820: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 818 819 + 821: 18(fvec3) FAdd 817 820 + 822: 18(fvec3) Load 686(normal) + 823: 18(fvec3) FAdd 822 821 + Store 686(normal) 823 + Branch 777 + 777: Label + Branch 699 + 699: Label + 825: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 826: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 827 827 16 16 + 824: 143(ptr) AccessChain 60(id) 38 + 828: 11(int) Load 824 + 829: 154(ptr) AccessChain 123 126 153 38 + 830: 87(int) Load 829 + 831: 87(int) ISub 830 244 + 832: 11(int) Bitcast 831 + 833: 172(bool) ULessThan 828 832 + SelectionMerge 835 None + BranchConditional 833 834 835 + 834: Label + 837: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 838: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 839 839 16 16 + 836: 143(ptr) AccessChain 60(id) 16 + 840: 11(int) Load 836 + 841: 172(bool) UGreaterThan 840 16 + SelectionMerge 843 None + BranchConditional 841 842 843 + 842: Label + 845: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 846: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 847 847 16 16 + 844: 11(int) Load 145(index) + 848: 154(ptr) AccessChain 123 126 153 16 + 849: 87(int) Load 848 + 850: 11(int) Bitcast 849 + 851: 11(int) IAdd 844 850 + 852: 236(ptr) AccessChain 208(particleIn) 126 851 126 + 853: 85(fvec4) Load 852 + 854: 18(fvec3) VectorShuffle 853 853 0 1 2 + 855: 18(fvec3) Load 265(pos) + 856: 18(fvec3) FSub 854 855 + Store 708(a) 856 + 858: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 859 859 16 16 + 857: 11(int) Load 145(index) + 860: 154(ptr) AccessChain 123 126 153 16 + 861: 87(int) Load 860 + 862: 11(int) Bitcast 861 + 863: 11(int) IAdd 857 862 + 864: 11(int) ISub 863 38 + 865: 236(ptr) AccessChain 208(particleIn) 126 864 126 + 866: 85(fvec4) Load 865 + 867: 18(fvec3) VectorShuffle 866 866 0 1 2 + 868: 18(fvec3) Load 265(pos) + 869: 18(fvec3) FSub 867 868 + Store 722(b) 869 + 871: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 872 872 16 16 + 870: 11(int) Load 145(index) + 873: 11(int) ISub 870 38 + 874: 236(ptr) AccessChain 208(particleIn) 126 873 126 + 875: 85(fvec4) Load 874 + 876: 18(fvec3) VectorShuffle 875 875 0 1 2 + 877: 18(fvec3) Load 265(pos) + 878: 18(fvec3) FSub 876 877 + Store 739(c) 878 + 880: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 881 881 16 16 + 879: 18(fvec3) Load 708(a) + 882: 18(fvec3) Load 722(b) + 883: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 879 882 + 884: 18(fvec3) Load 722(b) + 885: 18(fvec3) Load 739(c) + 886: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 884 885 + 887: 18(fvec3) FAdd 883 886 + 888: 18(fvec3) Load 686(normal) + 889: 18(fvec3) FAdd 888 887 + Store 686(normal) 889 + Branch 843 + 843: Label + 891: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 892: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 893 893 16 16 + 890: 143(ptr) AccessChain 60(id) 16 + 894: 11(int) Load 890 + 895: 154(ptr) AccessChain 123 126 153 16 + 896: 87(int) Load 895 + 897: 87(int) ISub 896 244 + 898: 11(int) Bitcast 897 + 899: 172(bool) ULessThan 894 898 + SelectionMerge 901 None + BranchConditional 899 900 901 + 900: Label + 903: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 904: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 905 905 16 16 + 902: 11(int) Load 145(index) + 906: 11(int) IAdd 902 38 + 907: 236(ptr) AccessChain 208(particleIn) 126 906 126 + 908: 85(fvec4) Load 907 + 909: 18(fvec3) VectorShuffle 908 908 0 1 2 + 910: 18(fvec3) Load 265(pos) + 911: 18(fvec3) FSub 909 910 + Store 708(a) 911 + 913: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 914 914 16 16 + 912: 11(int) Load 145(index) + 915: 154(ptr) AccessChain 123 126 153 16 + 916: 87(int) Load 915 + 917: 11(int) Bitcast 916 + 918: 11(int) IAdd 912 917 + 919: 11(int) IAdd 918 38 + 920: 236(ptr) AccessChain 208(particleIn) 126 919 126 + 921: 85(fvec4) Load 920 + 922: 18(fvec3) VectorShuffle 921 921 0 1 2 + 923: 18(fvec3) Load 265(pos) + 924: 18(fvec3) FSub 922 923 + Store 722(b) 924 + 926: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 927 927 16 16 + 925: 11(int) Load 145(index) + 928: 154(ptr) AccessChain 123 126 153 16 + 929: 87(int) Load 928 + 930: 11(int) Bitcast 929 + 931: 11(int) IAdd 925 930 + 932: 236(ptr) AccessChain 208(particleIn) 126 931 126 + 933: 85(fvec4) Load 932 + 934: 18(fvec3) VectorShuffle 933 933 0 1 2 + 935: 18(fvec3) Load 265(pos) + 936: 18(fvec3) FSub 934 935 + Store 739(c) 936 + 938: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 939 939 16 16 + 937: 18(fvec3) Load 708(a) + 940: 18(fvec3) Load 722(b) + 941: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 937 940 + 942: 18(fvec3) Load 722(b) + 943: 18(fvec3) Load 739(c) + 944: 18(fvec3) ExtInst 3(GLSL.std.450) 68(Cross) 942 943 + 945: 18(fvec3) FAdd 941 944 + 946: 18(fvec3) Load 686(normal) + 947: 18(fvec3) FAdd 946 945 + Store 686(normal) 947 + Branch 901 + 901: Label + Branch 835 + 835: Label + 949: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 950: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 951 951 16 16 + 948: 11(int) Load 145(index) + 952: 18(fvec3) Load 686(normal) + 953: 18(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 952 + 954: 8(float) CompositeExtract 953 0 + 955: 8(float) CompositeExtract 953 1 + 956: 8(float) CompositeExtract 953 2 + 957: 85(fvec4) CompositeConstruct 954 955 956 245 + 958: 236(ptr) AccessChain 230(particleOut) 126 948 548 + Store 958 957 + Branch 685 + 685: Label + 959: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 64 + 960: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 34 951 951 16 16 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.frag.out b/Test/baseResults/spv.debuginfo.hlsl.frag.out index 5e5846e8bb..5d0d7f7c2f 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.frag.out +++ b/Test/baseResults/spv.debuginfo.hlsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.hlsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 903 +// Id's are bound by 899 Capability Shader Capability ImageQuery @@ -9,7 +9,7 @@ spv.debuginfo.hlsl.frag 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 6 "main" 896 899 + EntryPoint Fragment 6 "main" 892 895 ExecutionMode 6 OriginUpperLeft 2: String "" 9: String "float" @@ -67,29 +67,29 @@ spv.debuginfo.hlsl.frag 462: String "displayDebugTarget" 467: String "UBO" 470: String "ubo" - 523: String "textureposition" - 528: String "samplerposition" - 538: String "normal" - 544: String "textureNormal" - 549: String "samplerNormal" - 557: String "albedo" - 563: String "textureAlbedo" - 568: String "samplerAlbedo" - 662: String "N" - 686: String "L" - 712: String "V" - 727: String "lightCosInnerAngle" - 734: String "lightCosOuterAngle" - 741: String "lightRange" - 748: String "dir" - 764: String "cosDir" - 773: String "spotEffect" - 783: String "heightAttenuation" - 792: String "NdotL" - 802: String "diff" - 810: String "R" - 820: String "NdotR" - 830: String "spec" + 524: String "textureposition" + 529: String "samplerposition" + 539: String "normal" + 545: String "textureNormal" + 550: String "samplerNormal" + 558: String "albedo" + 564: String "textureAlbedo" + 569: String "samplerAlbedo" + 657: String "N" + 681: String "L" + 707: String "V" + 722: String "lightCosInnerAngle" + 729: String "lightCosOuterAngle" + 736: String "lightRange" + 743: String "dir" + 759: String "cosDir" + 768: String "spotEffect" + 778: String "heightAttenuation" + 787: String "NdotL" + 797: String "diff" + 805: String "R" + 815: String "NdotR" + 825: String "spec" Name 6 "main" Name 36 "textureProj(vf4;f1;vf2;" Name 33 "P" @@ -141,41 +141,41 @@ spv.debuginfo.hlsl.frag Name 484 "shadowFactor" Name 491 "param" Name 493 "param" - Name 512 "fragPos" - Name 521 "textureposition" - Name 526 "samplerposition" - Name 536 "normal" - Name 542 "textureNormal" - Name 547 "samplerNormal" - Name 555 "albedo" - Name 561 "textureAlbedo" - Name 566 "samplerAlbedo" - Name 593 "fragcolor" - Name 600 "param" + Name 513 "fragPos" + Name 522 "textureposition" + Name 527 "samplerposition" + Name 537 "normal" + Name 543 "textureNormal" + Name 548 "samplerNormal" + Name 556 "albedo" + Name 562 "textureAlbedo" + Name 567 "samplerAlbedo" + Name 594 "fragcolor" Name 601 "param" - Name 660 "N" - Name 668 "i" - Name 684 "L" - Name 699 "dist" - Name 710 "V" - Name 725 "lightCosInnerAngle" - Name 732 "lightCosOuterAngle" - Name 739 "lightRange" - Name 746 "dir" - Name 762 "cosDir" - Name 771 "spotEffect" - Name 781 "heightAttenuation" - Name 790 "NdotL" - Name 800 "diff" - Name 808 "R" - Name 818 "NdotR" - Name 828 "spec" + Name 602 "param" + Name 655 "N" + Name 663 "i" + Name 679 "L" + Name 694 "dist" + Name 705 "V" + Name 720 "lightCosInnerAngle" + Name 727 "lightCosOuterAngle" + Name 734 "lightRange" + Name 741 "dir" + Name 757 "cosDir" + Name 766 "spotEffect" + Name 776 "heightAttenuation" + Name 785 "NdotL" + Name 795 "diff" + Name 803 "R" + Name 813 "NdotR" + Name 823 "spec" + Name 870 "param" Name 875 "param" - Name 880 "param" - Name 894 "inUV" - Name 896 "inUV" - Name 899 "@entryPointOutput" - Name 900 "param" + Name 890 "inUV" + Name 892 "inUV" + Name 895 "@entryPointOutput" + Name 896 "param" Decorate 167(textureShadowMap) Binding 5 Decorate 167(textureShadowMap) DescriptorSet 0 Decorate 178(samplerShadowMap) Binding 5 @@ -195,20 +195,20 @@ spv.debuginfo.hlsl.frag MemberDecorate 468(ubo) 0 Offset 0 Decorate 476 Binding 4 Decorate 476 DescriptorSet 0 - Decorate 521(textureposition) Binding 1 - Decorate 521(textureposition) DescriptorSet 0 - Decorate 526(samplerposition) Binding 1 - Decorate 526(samplerposition) DescriptorSet 0 - Decorate 542(textureNormal) Binding 2 - Decorate 542(textureNormal) DescriptorSet 0 - Decorate 547(samplerNormal) Binding 2 - Decorate 547(samplerNormal) DescriptorSet 0 - Decorate 561(textureAlbedo) Binding 3 - Decorate 561(textureAlbedo) DescriptorSet 0 - Decorate 566(samplerAlbedo) Binding 3 - Decorate 566(samplerAlbedo) DescriptorSet 0 - Decorate 896(inUV) Location 0 - Decorate 899(@entryPointOutput) Location 0 + Decorate 522(textureposition) Binding 1 + Decorate 522(textureposition) DescriptorSet 0 + Decorate 527(samplerposition) Binding 1 + Decorate 527(samplerposition) DescriptorSet 0 + Decorate 543(textureNormal) Binding 2 + Decorate 543(textureNormal) DescriptorSet 0 + Decorate 548(samplerNormal) Binding 2 + Decorate 548(samplerNormal) DescriptorSet 0 + Decorate 562(textureAlbedo) Binding 3 + Decorate 562(textureAlbedo) DescriptorSet 0 + Decorate 567(samplerAlbedo) Binding 3 + Decorate 567(samplerAlbedo) DescriptorSet 0 + Decorate 892(inUV) Location 0 + Decorate 895(@entryPointOutput) Location 0 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -298,7 +298,7 @@ spv.debuginfo.hlsl.frag 201: 8(float) Constant 0 210: 8(float) Constant 1048576000 213: 11(int) Constant 71 - 218: 11(int) Constant 74 + 217: 11(int) Constant 74 223: TypeVector 11(int) 3 224: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 6(DebugTypeVector) 13 17 225: TypePointer Function 223(ivec3) @@ -339,7 +339,7 @@ spv.debuginfo.hlsl.frag 344: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 345 237 40 346 16 65 19 367: 11(int) Constant 93 386: 11(int) Constant 94 - 400: 11(int) Constant 98 + 399: 11(int) Constant 98 411: 11(int) Constant 102 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 237 40 411 16 85 19 424: 235(int) Constant 3 @@ -384,114 +384,114 @@ spv.debuginfo.hlsl.frag 485: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 305 10 40 486 16 85 19 497: 11(int) Constant 113 507: 11(int) Constant 115 - 514: 11(int) Constant 121 - 513: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 514 16 101 19 - 517: TypeImage 8(float) 2D sampled format:Unknown - 518: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 16 40 514 16 43 163 164 17 - 519: TypePointer UniformConstant 517 - 520: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 518 16 16 -521(textureposition): 519(ptr) Variable UniformConstant - 522: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 523 518 40 514 16 43 523 521(textureposition) 170 - 525: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 514 16 43 175 164 17 -526(samplerposition): 176(ptr) Variable UniformConstant - 527: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 528 525 40 514 16 43 528 526(samplerposition) 170 - 530: TypeSampledImage 517 - 531: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 184 16 40 514 16 43 185 164 17 - 539: 11(int) Constant 122 - 537: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 538 75 40 539 16 101 19 -542(textureNormal): 519(ptr) Variable UniformConstant - 543: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 544 518 40 539 16 43 544 542(textureNormal) 170 - 546: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 539 16 43 175 164 17 -547(samplerNormal): 176(ptr) Variable UniformConstant - 548: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 549 546 40 539 16 43 549 547(samplerNormal) 170 - 558: 11(int) Constant 123 - 556: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 557 20 40 558 16 101 19 -561(textureAlbedo): 519(ptr) Variable UniformConstant - 562: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 563 518 40 558 16 43 563 561(textureAlbedo) 170 - 565: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 558 16 43 175 164 17 -566(samplerAlbedo): 176(ptr) Variable UniformConstant - 567: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 568 565 40 558 16 43 568 566(samplerAlbedo) 170 - 573: TypePointer Uniform 235(int) - 574: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 27 16 - 577: 11(int) Constant 128 - 585: 11(int) Constant 129 - 595: 11(int) Constant 131 - 594: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 40 595 16 101 19 - 599: 74(fvec3) ConstantComposite 114 114 114 - 605: 11(int) Constant 132 + 515: 11(int) Constant 121 + 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 93 75 40 515 16 101 19 + 518: TypeImage 8(float) 2D sampled format:Unknown + 519: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 162 16 40 515 16 43 163 164 17 + 520: TypePointer UniformConstant 518 + 521: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 519 16 16 +522(textureposition): 520(ptr) Variable UniformConstant + 523: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 524 519 40 515 16 43 524 522(textureposition) 170 + 526: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 515 16 43 175 164 17 +527(samplerposition): 176(ptr) Variable UniformConstant + 528: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 529 526 40 515 16 43 529 527(samplerposition) 170 + 531: TypeSampledImage 518 + 532: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 184 16 40 515 16 43 185 164 17 + 540: 11(int) Constant 122 + 538: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 539 75 40 540 16 101 19 +543(textureNormal): 520(ptr) Variable UniformConstant + 544: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 545 519 40 540 16 43 545 543(textureNormal) 170 + 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 540 16 43 175 164 17 +548(samplerNormal): 176(ptr) Variable UniformConstant + 549: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 550 547 40 540 16 43 550 548(samplerNormal) 170 + 559: 11(int) Constant 123 + 557: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 558 20 40 559 16 101 19 +562(textureAlbedo): 520(ptr) Variable UniformConstant + 563: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 564 519 40 559 16 43 564 562(textureAlbedo) 170 + 566: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 174 44 40 559 16 43 175 164 17 +567(samplerAlbedo): 176(ptr) Variable UniformConstant + 568: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 569 566 40 559 16 43 569 567(samplerAlbedo) 170 + 574: TypePointer Uniform 235(int) + 575: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 237 27 16 + 578: 11(int) Constant 128 + 586: 11(int) Constant 129 + 596: 11(int) Constant 131 + 595: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 88 75 40 596 16 101 19 + 600: 74(fvec3) ConstantComposite 114 114 114 + 606: 11(int) Constant 132 611: 11(int) Constant 134 613: 11(int) Constant 135 - 619: 11(int) Constant 137 - 621: 11(int) Constant 138 - 627: 11(int) Constant 140 - 630: 11(int) Constant 141 - 636: 11(int) Constant 143 - 639: 11(int) Constant 144 - 646: 11(int) Constant 146 - 656: 11(int) Constant 150 - 658: 8(float) Constant 1036831949 - 663: 11(int) Constant 152 - 661: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 662 75 40 663 16 101 19 - 670: 11(int) Constant 154 - 669: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 237 40 670 16 101 19 - 687: 11(int) Constant 157 - 685: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 686 75 40 687 16 101 19 - 692: TypePointer Uniform 18(fvec4) - 693: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 27 16 - 701: 11(int) Constant 159 - 700: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 10 40 701 16 101 19 - 708: 11(int) Constant 160 - 713: 11(int) Constant 163 - 711: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 712 75 40 713 16 101 19 - 723: 11(int) Constant 164 - 728: 11(int) Constant 166 - 726: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 727 10 40 728 16 101 19 - 731: 8(float) Constant 1064781546 - 735: 11(int) Constant 167 - 733: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 734 10 40 735 16 101 19 - 738: 8(float) Constant 1063781322 - 742: 11(int) Constant 168 - 740: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 741 10 40 742 16 101 19 - 745: 8(float) Constant 1120403456 - 749: 11(int) Constant 171 - 747: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 748 75 40 749 16 101 19 - 765: 11(int) Constant 174 - 763: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 764 10 40 765 16 101 19 - 774: 11(int) Constant 175 - 772: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 773 10 40 774 16 101 19 - 784: 11(int) Constant 176 - 782: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 783 10 40 784 16 101 19 - 793: 11(int) Constant 179 - 791: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 792 10 40 793 16 101 19 - 803: 11(int) Constant 180 - 801: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 802 75 40 803 16 101 19 - 811: 11(int) Constant 183 - 809: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 810 75 40 811 16 101 19 - 821: 11(int) Constant 184 - 819: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 820 10 40 821 16 101 19 - 831: 11(int) Constant 185 - 829: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 830 75 40 831 16 101 19 - 835: 8(float) Constant 1098907648 - 840: 8(float) Constant 1075838976 - 845: 11(int) Constant 187 - 853: 235(int) Constant 2 - 870: 11(int) Constant 191 - 879: 11(int) Constant 193 - 886: 11(int) Constant 196 - 895: TypePointer Input 26(fvec2) - 896(inUV): 895(ptr) Variable Input - 898: TypePointer Output 18(fvec4) -899(@entryPointOutput): 898(ptr) Variable Output + 618: 11(int) Constant 137 + 620: 11(int) Constant 138 + 625: 11(int) Constant 140 + 628: 11(int) Constant 141 + 633: 11(int) Constant 143 + 636: 11(int) Constant 144 + 642: 11(int) Constant 146 + 651: 11(int) Constant 150 + 653: 8(float) Constant 1036831949 + 658: 11(int) Constant 152 + 656: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 657 75 40 658 16 101 19 + 665: 11(int) Constant 154 + 664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 410 237 40 665 16 101 19 + 682: 11(int) Constant 157 + 680: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 681 75 40 682 16 101 19 + 687: TypePointer Uniform 18(fvec4) + 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 27 16 + 696: 11(int) Constant 159 + 695: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 155 10 40 696 16 101 19 + 703: 11(int) Constant 160 + 708: 11(int) Constant 163 + 706: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 707 75 40 708 16 101 19 + 718: 11(int) Constant 164 + 723: 11(int) Constant 166 + 721: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 722 10 40 723 16 101 19 + 726: 8(float) Constant 1064781546 + 730: 11(int) Constant 167 + 728: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 729 10 40 730 16 101 19 + 733: 8(float) Constant 1063781322 + 737: 11(int) Constant 168 + 735: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 736 10 40 737 16 101 19 + 740: 8(float) Constant 1120403456 + 744: 11(int) Constant 171 + 742: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 743 75 40 744 16 101 19 + 760: 11(int) Constant 174 + 758: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 759 10 40 760 16 101 19 + 769: 11(int) Constant 175 + 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 768 10 40 769 16 101 19 + 779: 11(int) Constant 176 + 777: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 778 10 40 779 16 101 19 + 788: 11(int) Constant 179 + 786: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 787 10 40 788 16 101 19 + 798: 11(int) Constant 180 + 796: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 797 75 40 798 16 101 19 + 806: 11(int) Constant 183 + 804: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 805 75 40 806 16 101 19 + 816: 11(int) Constant 184 + 814: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 815 10 40 816 16 101 19 + 826: 11(int) Constant 185 + 824: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 825 75 40 826 16 101 19 + 830: 8(float) Constant 1098907648 + 835: 8(float) Constant 1075838976 + 840: 11(int) Constant 187 + 848: 235(int) Constant 2 + 865: 11(int) Constant 191 + 874: 11(int) Constant 193 + 881: 11(int) Constant 196 + 891: TypePointer Input 26(fvec2) + 892(inUV): 891(ptr) Variable Input + 894: TypePointer Output 18(fvec4) +895(@entryPointOutput): 894(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 894(inUV): 29(ptr) Variable Function - 900(param): 29(ptr) Variable Function - 897: 26(fvec2) Load 896(inUV) - Store 894(inUV) 897 - 901: 26(fvec2) Load 894(inUV) - Store 900(param) 901 - 902: 18(fvec4) FunctionCall 98(@main(vf2;) 900(param) - Store 899(@entryPointOutput) 902 + 890(inUV): 29(ptr) Variable Function + 896(param): 29(ptr) Variable Function + 893: 26(fvec2) Load 892(inUV) + Store 890(inUV) 893 + 897: 26(fvec2) Load 890(inUV) + Store 896(param) 897 + 898: 18(fvec4) FunctionCall 98(@main(vf2;) 896(param) + Store 895(@entryPointOutput) 898 Return FunctionEnd 36(textureProj(vf4;f1;vf2;): 8(float) Function None 31 @@ -576,13 +576,12 @@ spv.debuginfo.hlsl.frag Store 109(shadow) 210 Branch 209 209: Label - 214: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 Branch 152 152: Label - 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 - 217: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 218 218 16 16 - 215: 8(float) Load 109(shadow) - ReturnValue 215 + 215: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 216: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 217 217 16 16 + 214: 8(float) Load 109(shadow) + ReturnValue 214 FunctionEnd 62(filterPCF(vf4;f1;): 8(float) Function None 58 60(sc): 21(ptr) FunctionParameter @@ -736,23 +735,22 @@ spv.debuginfo.hlsl.frag Store 343(y) 391 Branch 352 354: Label - 392: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 Branch 334 334: Label - 394: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 395: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 326 326 16 16 - 393: 235(int) Load 323(x) - 396: 235(int) IAdd 393 322 - Store 323(x) 396 + 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 394: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 326 326 16 16 + 392: 235(int) Load 323(x) + 395: 235(int) IAdd 392 322 + Store 323(x) 395 Branch 331 333: Label - 398: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 - 399: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 400 400 16 16 - 397: 8(float) Load 303(shadowFactor) - 401: 235(int) Load 309(count) - 402: 8(float) ConvertSToF 401 - 403: 8(float) FDiv 397 402 - ReturnValue 403 + 397: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 65 + 398: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 399 399 16 16 + 396: 8(float) Load 303(shadowFactor) + 400: 235(int) Load 309(count) + 401: 8(float) ConvertSToF 400 + 402: 8(float) FDiv 396 401 + ReturnValue 402 FunctionEnd 82(shadow(vf3;vf3;): 74(fvec3) Function None 78 80(fragcolor): 76(ptr) FunctionParameter @@ -828,317 +826,317 @@ spv.debuginfo.hlsl.frag 98(@main(vf2;): 18(fvec4) Function None 95 97(inUV): 29(ptr) FunctionParameter 99: Label - 512(fragPos): 76(ptr) Variable Function - 536(normal): 76(ptr) Variable Function - 555(albedo): 21(ptr) Variable Function - 593(fragcolor): 76(ptr) Variable Function - 600(param): 76(ptr) Variable Function + 513(fragPos): 76(ptr) Variable Function + 537(normal): 76(ptr) Variable Function + 556(albedo): 21(ptr) Variable Function + 594(fragcolor): 76(ptr) Variable Function 601(param): 76(ptr) Variable Function - 660(N): 76(ptr) Variable Function - 668(i): 251(ptr) Variable Function - 684(L): 76(ptr) Variable Function - 699(dist): 24(ptr) Variable Function - 710(V): 76(ptr) Variable Function -725(lightCosInnerAngle): 24(ptr) Variable Function -732(lightCosOuterAngle): 24(ptr) Variable Function - 739(lightRange): 24(ptr) Variable Function - 746(dir): 76(ptr) Variable Function - 762(cosDir): 24(ptr) Variable Function - 771(spotEffect): 24(ptr) Variable Function -781(heightAttenuation): 24(ptr) Variable Function - 790(NdotL): 24(ptr) Variable Function - 800(diff): 76(ptr) Variable Function - 808(R): 76(ptr) Variable Function - 818(NdotR): 24(ptr) Variable Function - 828(spec): 76(ptr) Variable Function + 602(param): 76(ptr) Variable Function + 655(N): 76(ptr) Variable Function + 663(i): 251(ptr) Variable Function + 679(L): 76(ptr) Variable Function + 694(dist): 24(ptr) Variable Function + 705(V): 76(ptr) Variable Function +720(lightCosInnerAngle): 24(ptr) Variable Function +727(lightCosOuterAngle): 24(ptr) Variable Function + 734(lightRange): 24(ptr) Variable Function + 741(dir): 76(ptr) Variable Function + 757(cosDir): 24(ptr) Variable Function + 766(spotEffect): 24(ptr) Variable Function +776(heightAttenuation): 24(ptr) Variable Function + 785(NdotL): 24(ptr) Variable Function + 795(diff): 76(ptr) Variable Function + 803(R): 76(ptr) Variable Function + 813(NdotR): 24(ptr) Variable Function + 823(spec): 76(ptr) Variable Function + 870(param): 76(ptr) Variable Function 875(param): 76(ptr) Variable Function - 880(param): 76(ptr) Variable Function 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 102 102 16 16 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 103 97(inUV) 49 - 511: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 101 98(@main(vf2;) - 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 514 514 16 16 - 515: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 513 512(fragPos) 49 - 524: 517 Load 521(textureposition) - 529: 172 Load 526(samplerposition) - 532: 530 SampledImage 524 529 - 533: 26(fvec2) Load 97(inUV) - 534: 18(fvec4) ImageSampleImplicitLod 532 533 - 535: 74(fvec3) VectorShuffle 534 534 0 1 2 - Store 512(fragPos) 535 - 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 539 539 16 16 - 540: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 537 536(normal) 49 - 545: 517 Load 542(textureNormal) - 550: 172 Load 547(samplerNormal) - 551: 530 SampledImage 545 550 - 552: 26(fvec2) Load 97(inUV) - 553: 18(fvec4) ImageSampleImplicitLod 551 552 - 554: 74(fvec3) VectorShuffle 553 553 0 1 2 - Store 536(normal) 554 - 560: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 558 558 16 16 - 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 556 555(albedo) 49 - 564: 517 Load 561(textureAlbedo) - 569: 172 Load 566(samplerAlbedo) - 570: 530 SampledImage 564 569 - 571: 26(fvec2) Load 97(inUV) - 572: 18(fvec4) ImageSampleImplicitLod 570 571 - Store 555(albedo) 572 - 576: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 577 577 16 16 - 575: 573(ptr) AccessChain 476 315 424 - 578: 235(int) Load 575 - 579: 143(bool) SGreaterThan 578 315 - SelectionMerge 581 None - BranchConditional 579 580 581 - 580: Label - 583: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 585 585 16 16 - 582: 573(ptr) AccessChain 476 315 424 - 586: 235(int) Load 582 - SelectionMerge 592 None - Switch 586 592 - case 1: 587 - case 2: 588 - case 3: 589 - case 4: 590 - case 5: 591 - 587: Label - 597: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 595 595 16 16 - 596: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 594 593(fragcolor) 49 - Store 600(param) 599 - 602: 74(fvec3) Load 512(fragPos) - Store 601(param) 602 - 603: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 600(param) 601(param) - Store 593(fragcolor) 603 - 604: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 605 605 16 16 - Branch 592 + 512: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 101 98(@main(vf2;) + 517: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 515 515 16 16 + 516: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 514 513(fragPos) 49 + 525: 518 Load 522(textureposition) + 530: 172 Load 527(samplerposition) + 533: 531 SampledImage 525 530 + 534: 26(fvec2) Load 97(inUV) + 535: 18(fvec4) ImageSampleImplicitLod 533 534 + 536: 74(fvec3) VectorShuffle 535 535 0 1 2 + Store 513(fragPos) 536 + 542: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 540 540 16 16 + 541: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 538 537(normal) 49 + 546: 518 Load 543(textureNormal) + 551: 172 Load 548(samplerNormal) + 552: 531 SampledImage 546 551 + 553: 26(fvec2) Load 97(inUV) + 554: 18(fvec4) ImageSampleImplicitLod 552 553 + 555: 74(fvec3) VectorShuffle 554 554 0 1 2 + Store 537(normal) 555 + 561: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 559 559 16 16 + 560: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 557 556(albedo) 49 + 565: 518 Load 562(textureAlbedo) + 570: 172 Load 567(samplerAlbedo) + 571: 531 SampledImage 565 570 + 572: 26(fvec2) Load 97(inUV) + 573: 18(fvec4) ImageSampleImplicitLod 571 572 + Store 556(albedo) 573 + 577: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 578 578 16 16 + 576: 574(ptr) AccessChain 476 315 424 + 579: 235(int) Load 576 + 580: 143(bool) SGreaterThan 579 315 + SelectionMerge 582 None + BranchConditional 580 581 582 + 581: Label + 584: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 585: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 586 586 16 16 + 583: 574(ptr) AccessChain 476 315 424 + 587: 235(int) Load 583 + SelectionMerge 593 None + Switch 587 593 + case 1: 588 + case 2: 589 + case 3: 590 + case 4: 591 + case 5: 592 588: Label + 598: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 599: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 596 596 16 16 + 597: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 595 594(fragcolor) 49 + Store 601(param) 600 + 603: 74(fvec3) Load 513(fragPos) + Store 602(param) 603 + 604: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 601(param) 602(param) + Store 594(fragcolor) 604 + 605: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 606 606 16 16 + Branch 593 + 589: Label 609: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 610: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 611 611 16 16 - 608: 74(fvec3) Load 512(fragPos) - Store 593(fragcolor) 608 + 608: 74(fvec3) Load 513(fragPos) + Store 594(fragcolor) 608 612: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 613 613 16 16 - Branch 592 - 589: Label - 617: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 618: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 619 619 16 16 - 616: 74(fvec3) Load 536(normal) - Store 593(fragcolor) 616 - 620: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 621 621 16 16 - Branch 592 + Branch 593 590: Label - 625: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 626: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 627 627 16 16 - 624: 18(fvec4) Load 555(albedo) - 628: 74(fvec3) VectorShuffle 624 624 0 1 2 - Store 593(fragcolor) 628 - 629: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 630 630 16 16 - Branch 592 + 616: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 617: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 618 618 16 16 + 615: 74(fvec3) Load 537(normal) + Store 594(fragcolor) 615 + 619: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 620 620 16 16 + Branch 593 591: Label - 634: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 623: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 624: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 625 625 16 16 + 622: 18(fvec4) Load 556(albedo) + 626: 74(fvec3) VectorShuffle 622 622 0 1 2 + Store 594(fragcolor) 626 + 627: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 628 628 16 16 + Branch 593 + 592: Label + 631: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 632: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 633 633 16 16 + 630: 18(fvec4) Load 556(albedo) + 634: 74(fvec3) VectorShuffle 630 630 3 3 3 + Store 594(fragcolor) 634 635: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 636 636 16 16 - 633: 18(fvec4) Load 555(albedo) - 637: 74(fvec3) VectorShuffle 633 633 3 3 3 - Store 593(fragcolor) 637 - 638: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 639 639 16 16 - Branch 592 - 592: Label - 644: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 645: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 646 646 16 16 - 643: 74(fvec3) Load 593(fragcolor) - 647: 8(float) CompositeExtract 643 0 - 648: 8(float) CompositeExtract 643 1 - 649: 8(float) CompositeExtract 643 2 - 650: 18(fvec4) CompositeConstruct 647 648 649 114 - ReturnValue 650 - 581: Label - 654: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 655: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 656 656 16 16 - 653: 18(fvec4) Load 555(albedo) - 657: 74(fvec3) VectorShuffle 653 653 0 1 2 - 659: 74(fvec3) VectorTimesScalar 657 658 - Store 593(fragcolor) 659 - 665: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 663 663 16 16 - 664: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 661 660(N) 49 - 666: 74(fvec3) Load 536(normal) - 667: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 666 - Store 660(N) 667 - 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 - 671: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 669 668(i) 49 - Store 668(i) 315 - Branch 673 - 673: Label - 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 678: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 - LoopMerge 675 676 None - Branch 679 - 679: Label - 681: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 682: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 - 680: 235(int) Load 668(i) - 683: 143(bool) SLessThan 680 424 - BranchConditional 683 674 675 - 674: Label - 689: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 690: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 687 687 16 16 - 688: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 685 684(L) 49 - 691: 235(int) Load 668(i) - 694: 692(ptr) AccessChain 476 315 322 691 315 - 695: 18(fvec4) Load 694 - 696: 74(fvec3) VectorShuffle 695 695 0 1 2 - 697: 74(fvec3) Load 512(fragPos) - 698: 74(fvec3) FSub 696 697 - Store 684(L) 698 - 703: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 701 701 16 16 - 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 700 699(dist) 49 - 704: 74(fvec3) Load 684(L) - 705: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 704 - Store 699(dist) 705 - 707: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 708 708 16 16 - 706: 74(fvec3) Load 684(L) - 709: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 706 - Store 684(L) 709 - 715: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 713 713 16 16 - 714: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 711 710(V) 49 - 716: 692(ptr) AccessChain 476 315 315 - 717: 18(fvec4) Load 716 - 718: 74(fvec3) VectorShuffle 717 717 0 1 2 - 719: 74(fvec3) Load 512(fragPos) - 720: 74(fvec3) FSub 718 719 - Store 710(V) 720 - 722: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 723 723 16 16 - 721: 74(fvec3) Load 710(V) - 724: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 721 - Store 710(V) 724 - 730: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 728 728 16 16 - 729: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 726 725(lightCosInnerAngle) 49 - Store 725(lightCosInnerAngle) 731 - 737: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 735 735 16 16 - 736: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 733 732(lightCosOuterAngle) 49 - Store 732(lightCosOuterAngle) 738 - 744: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 742 742 16 16 - 743: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 740 739(lightRange) 49 - Store 739(lightRange) 745 - 751: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 749 749 16 16 - 750: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 747 746(dir) 49 - 752: 235(int) Load 668(i) - 753: 692(ptr) AccessChain 476 315 322 752 315 - 754: 18(fvec4) Load 753 - 755: 74(fvec3) VectorShuffle 754 754 0 1 2 - 756: 235(int) Load 668(i) - 757: 692(ptr) AccessChain 476 315 322 756 322 - 758: 18(fvec4) Load 757 - 759: 74(fvec3) VectorShuffle 758 758 0 1 2 - 760: 74(fvec3) FSub 755 759 - 761: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 760 - Store 746(dir) 761 - 767: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 765 765 16 16 - 766: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 763 762(cosDir) 49 - 768: 74(fvec3) Load 684(L) - 769: 74(fvec3) Load 746(dir) - 770: 8(float) Dot 768 769 - Store 762(cosDir) 770 - 776: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 774 774 16 16 - 775: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 772 771(spotEffect) 49 - 777: 8(float) Load 732(lightCosOuterAngle) - 778: 8(float) Load 725(lightCosInnerAngle) - 779: 8(float) Load 762(cosDir) - 780: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 777 778 779 - Store 771(spotEffect) 780 - 786: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 784 784 16 16 - 785: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 782 781(heightAttenuation) 49 - 787: 8(float) Load 739(lightRange) - 788: 8(float) Load 699(dist) - 789: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 787 201 788 - Store 781(heightAttenuation) 789 - 795: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 793 793 16 16 - 794: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 791 790(NdotL) 49 - 796: 74(fvec3) Load 660(N) - 797: 74(fvec3) Load 684(L) - 798: 8(float) Dot 796 797 - 799: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 201 798 - Store 790(NdotL) 799 - 805: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 803 803 16 16 - 804: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 801 800(diff) 49 - 806: 8(float) Load 790(NdotL) - 807: 74(fvec3) CompositeConstruct 806 806 806 - Store 800(diff) 807 - 813: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 811 811 16 16 - 812: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 809 808(R) 49 - 814: 74(fvec3) Load 684(L) - 815: 74(fvec3) FNegate 814 - 816: 74(fvec3) Load 660(N) - 817: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 815 816 - Store 808(R) 817 - 823: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 821 821 16 16 - 822: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 819 818(NdotR) 49 - 824: 74(fvec3) Load 808(R) - 825: 74(fvec3) Load 710(V) - 826: 8(float) Dot 824 825 - 827: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 201 826 - Store 818(NdotR) 827 - 833: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 831 831 16 16 - 832: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 829 828(spec) 49 - 834: 8(float) Load 818(NdotR) - 836: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 834 835 - 837: 24(ptr) AccessChain 555(albedo) 17 - 838: 8(float) Load 837 - 839: 8(float) FMul 836 838 - 841: 8(float) FMul 839 840 - 842: 74(fvec3) CompositeConstruct 841 841 841 - Store 828(spec) 842 - 844: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 845 845 16 16 - 843: 74(fvec3) Load 800(diff) - 846: 74(fvec3) Load 828(spec) - 847: 74(fvec3) FAdd 843 846 - 848: 8(float) Load 771(spotEffect) - 849: 74(fvec3) VectorTimesScalar 847 848 - 850: 8(float) Load 781(heightAttenuation) - 851: 74(fvec3) VectorTimesScalar 849 850 - 852: 235(int) Load 668(i) - 854: 692(ptr) AccessChain 476 315 322 852 853 - 855: 18(fvec4) Load 854 - 856: 74(fvec3) VectorShuffle 855 855 0 1 2 - 857: 74(fvec3) FMul 851 856 - 858: 18(fvec4) Load 555(albedo) - 859: 74(fvec3) VectorShuffle 858 858 0 1 2 - 860: 74(fvec3) FMul 857 859 - 861: 74(fvec3) Load 593(fragcolor) - 862: 74(fvec3) FAdd 861 860 - Store 593(fragcolor) 862 - Branch 676 - 676: Label - 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 865: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 670 670 16 16 - 863: 235(int) Load 668(i) - 866: 235(int) IAdd 863 322 - Store 668(i) 866 - Branch 673 - 675: Label - 868: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 869: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 870 870 16 16 - 867: 573(ptr) AccessChain 476 315 853 - 871: 235(int) Load 867 - 872: 143(bool) SGreaterThan 871 315 - SelectionMerge 874 None - BranchConditional 872 873 874 - 873: Label - 877: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 878: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 879 879 16 16 - 876: 74(fvec3) Load 593(fragcolor) + Branch 593 + 593: Label + 640: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 641: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 642 642 16 16 + 639: 74(fvec3) Load 594(fragcolor) + 643: 8(float) CompositeExtract 639 0 + 644: 8(float) CompositeExtract 639 1 + 645: 8(float) CompositeExtract 639 2 + 646: 18(fvec4) CompositeConstruct 643 644 645 114 + ReturnValue 646 + 582: Label + 649: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 650: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 651 651 16 16 + 648: 18(fvec4) Load 556(albedo) + 652: 74(fvec3) VectorShuffle 648 648 0 1 2 + 654: 74(fvec3) VectorTimesScalar 652 653 + Store 594(fragcolor) 654 + 660: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 658 658 16 16 + 659: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 656 655(N) 49 + 661: 74(fvec3) Load 537(normal) + 662: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 661 + Store 655(N) 662 + 667: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 665 665 16 16 + 666: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 664 663(i) 49 + Store 663(i) 315 + Branch 668 + 668: Label + 672: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 673: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 665 665 16 16 + LoopMerge 670 671 None + Branch 674 + 674: Label + 676: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 677: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 665 665 16 16 + 675: 235(int) Load 663(i) + 678: 143(bool) SLessThan 675 424 + BranchConditional 678 669 670 + 669: Label + 684: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 685: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 682 682 16 16 + 683: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 680 679(L) 49 + 686: 235(int) Load 663(i) + 689: 687(ptr) AccessChain 476 315 322 686 315 + 690: 18(fvec4) Load 689 + 691: 74(fvec3) VectorShuffle 690 690 0 1 2 + 692: 74(fvec3) Load 513(fragPos) + 693: 74(fvec3) FSub 691 692 + Store 679(L) 693 + 698: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 696 696 16 16 + 697: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 695 694(dist) 49 + 699: 74(fvec3) Load 679(L) + 700: 8(float) ExtInst 3(GLSL.std.450) 66(Length) 699 + Store 694(dist) 700 + 702: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 703 703 16 16 + 701: 74(fvec3) Load 679(L) + 704: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 701 + Store 679(L) 704 + 710: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 708 708 16 16 + 709: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 706 705(V) 49 + 711: 687(ptr) AccessChain 476 315 315 + 712: 18(fvec4) Load 711 + 713: 74(fvec3) VectorShuffle 712 712 0 1 2 + 714: 74(fvec3) Load 513(fragPos) + 715: 74(fvec3) FSub 713 714 + Store 705(V) 715 + 717: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 718 718 16 16 + 716: 74(fvec3) Load 705(V) + 719: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 716 + Store 705(V) 719 + 725: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 723 723 16 16 + 724: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 721 720(lightCosInnerAngle) 49 + Store 720(lightCosInnerAngle) 726 + 732: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 730 730 16 16 + 731: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 728 727(lightCosOuterAngle) 49 + Store 727(lightCosOuterAngle) 733 + 739: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 737 737 16 16 + 738: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 735 734(lightRange) 49 + Store 734(lightRange) 740 + 746: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 744 744 16 16 + 745: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 742 741(dir) 49 + 747: 235(int) Load 663(i) + 748: 687(ptr) AccessChain 476 315 322 747 315 + 749: 18(fvec4) Load 748 + 750: 74(fvec3) VectorShuffle 749 749 0 1 2 + 751: 235(int) Load 663(i) + 752: 687(ptr) AccessChain 476 315 322 751 322 + 753: 18(fvec4) Load 752 + 754: 74(fvec3) VectorShuffle 753 753 0 1 2 + 755: 74(fvec3) FSub 750 754 + 756: 74(fvec3) ExtInst 3(GLSL.std.450) 69(Normalize) 755 + Store 741(dir) 756 + 762: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 760 760 16 16 + 761: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 758 757(cosDir) 49 + 763: 74(fvec3) Load 679(L) + 764: 74(fvec3) Load 741(dir) + 765: 8(float) Dot 763 764 + Store 757(cosDir) 765 + 771: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 769 769 16 16 + 770: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 767 766(spotEffect) 49 + 772: 8(float) Load 727(lightCosOuterAngle) + 773: 8(float) Load 720(lightCosInnerAngle) + 774: 8(float) Load 757(cosDir) + 775: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 772 773 774 + Store 766(spotEffect) 775 + 781: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 779 779 16 16 + 780: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 777 776(heightAttenuation) 49 + 782: 8(float) Load 734(lightRange) + 783: 8(float) Load 694(dist) + 784: 8(float) ExtInst 3(GLSL.std.450) 49(SmoothStep) 782 201 783 + Store 776(heightAttenuation) 784 + 790: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 788 788 16 16 + 789: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 786 785(NdotL) 49 + 791: 74(fvec3) Load 655(N) + 792: 74(fvec3) Load 679(L) + 793: 8(float) Dot 791 792 + 794: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 201 793 + Store 785(NdotL) 794 + 800: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 798 798 16 16 + 799: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 796 795(diff) 49 + 801: 8(float) Load 785(NdotL) + 802: 74(fvec3) CompositeConstruct 801 801 801 + Store 795(diff) 802 + 808: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 806 806 16 16 + 807: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 804 803(R) 49 + 809: 74(fvec3) Load 679(L) + 810: 74(fvec3) FNegate 809 + 811: 74(fvec3) Load 655(N) + 812: 74(fvec3) ExtInst 3(GLSL.std.450) 71(Reflect) 810 811 + Store 803(R) 812 + 818: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 816 816 16 16 + 817: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 814 813(NdotR) 49 + 819: 74(fvec3) Load 803(R) + 820: 74(fvec3) Load 705(V) + 821: 8(float) Dot 819 820 + 822: 8(float) ExtInst 3(GLSL.std.450) 40(FMax) 201 821 + Store 813(NdotR) 822 + 828: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 826 826 16 16 + 827: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 824 823(spec) 49 + 829: 8(float) Load 813(NdotR) + 831: 8(float) ExtInst 3(GLSL.std.450) 26(Pow) 829 830 + 832: 24(ptr) AccessChain 556(albedo) 17 + 833: 8(float) Load 832 + 834: 8(float) FMul 831 833 + 836: 8(float) FMul 834 835 + 837: 74(fvec3) CompositeConstruct 836 836 836 + Store 823(spec) 837 + 839: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 840 840 16 16 + 838: 74(fvec3) Load 795(diff) + 841: 74(fvec3) Load 823(spec) + 842: 74(fvec3) FAdd 838 841 + 843: 8(float) Load 766(spotEffect) + 844: 74(fvec3) VectorTimesScalar 842 843 + 845: 8(float) Load 776(heightAttenuation) + 846: 74(fvec3) VectorTimesScalar 844 845 + 847: 235(int) Load 663(i) + 849: 687(ptr) AccessChain 476 315 322 847 848 + 850: 18(fvec4) Load 849 + 851: 74(fvec3) VectorShuffle 850 850 0 1 2 + 852: 74(fvec3) FMul 846 851 + 853: 18(fvec4) Load 556(albedo) + 854: 74(fvec3) VectorShuffle 853 853 0 1 2 + 855: 74(fvec3) FMul 852 854 + 856: 74(fvec3) Load 594(fragcolor) + 857: 74(fvec3) FAdd 856 855 + Store 594(fragcolor) 857 + Branch 671 + 671: Label + 859: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 860: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 665 665 16 16 + 858: 235(int) Load 663(i) + 861: 235(int) IAdd 858 322 + Store 663(i) 861 + Branch 668 + 670: Label + 863: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 864: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 865 865 16 16 + 862: 574(ptr) AccessChain 476 315 848 + 866: 235(int) Load 862 + 867: 143(bool) SGreaterThan 866 315 + SelectionMerge 869 None + BranchConditional 867 868 869 + 868: Label + 872: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 873: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 874 874 16 16 + 871: 74(fvec3) Load 594(fragcolor) + Store 870(param) 871 + 876: 74(fvec3) Load 513(fragPos) Store 875(param) 876 - 881: 74(fvec3) Load 512(fragPos) - Store 880(param) 881 - 882: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 875(param) 880(param) - Store 593(fragcolor) 882 - Branch 874 - 874: Label - 884: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 - 885: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 886 886 16 16 - 883: 74(fvec3) Load 593(fragcolor) - 887: 8(float) CompositeExtract 883 0 - 888: 8(float) CompositeExtract 883 1 - 889: 8(float) CompositeExtract 883 2 - 890: 18(fvec4) CompositeConstruct 887 888 889 114 - ReturnValue 890 + 877: 74(fvec3) FunctionCall 82(shadow(vf3;vf3;) 870(param) 875(param) + Store 594(fragcolor) 877 + Branch 869 + 869: Label + 879: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 101 + 880: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 40 881 881 16 16 + 878: 74(fvec3) Load 594(fragcolor) + 882: 8(float) CompositeExtract 878 0 + 883: 8(float) CompositeExtract 878 1 + 884: 8(float) CompositeExtract 878 2 + 885: 18(fvec4) CompositeConstruct 882 883 884 114 + ReturnValue 885 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.hlsl.tesc.out b/Test/baseResults/spv.debuginfo.hlsl.tesc.out index 04e24c4c93..a3cbcc5eae 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tesc.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tesc.out @@ -3,14 +3,14 @@ WARNING: 0:158: '' : attribute does not apply to entry point // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 705 +// Id's are bound by 706 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationControl 6 "main" 597 604 611 645 654 661 668 683 698 + EntryPoint TessellationControl 6 "main" 598 605 612 646 655 662 669 684 699 ExecutionMode 6 OutputVertices 4 ExecutionMode 6 Quads ExecutionMode 6 SpacingEqual @@ -58,16 +58,16 @@ WARNING: 0:158: '' : attribute does not apply to entry point 217: String "int" 228: String "clip0" 246: String "clip1" - 323: String "pos" - 330: String "type.2d.image" - 332: String "@type.2d.image" - 338: String "textureHeight" - 343: String "type.sampler" - 344: String "@type.sampler" - 349: String "samplerHeight" - 353: String "type.sampled.image" - 354: String "@type.sampled.image" - 371: String "i" + 324: String "pos" + 331: String "type.2d.image" + 333: String "@type.2d.image" + 339: String "textureHeight" + 344: String "type.sampler" + 345: String "@type.sampler" + 350: String "samplerHeight" + 354: String "type.sampled.image" + 355: String "@type.sampled.image" + 372: String "i" 424: String "output" Name 6 "main" Name 28 "screenSpaceTessFactor(vf4;vf4;" @@ -109,10 +109,10 @@ WARNING: 0:158: '' : attribute does not apply to entry point Name 213 "" Name 226 "clip0" Name 244 "clip1" - Name 321 "pos" - Name 336 "textureHeight" - Name 347 "samplerHeight" - Name 369 "i" + Name 322 "pos" + Name 337 "textureHeight" + Name 348 "samplerHeight" + Name 370 "i" Name 422 "output" Name 432 "param" Name 437 "param" @@ -125,22 +125,22 @@ WARNING: 0:158: '' : attribute does not apply to entry point Name 503 "param" Name 508 "param" Name 560 "output" - Name 594 "patch" - Name 597 "patch.Pos" - Name 604 "patch.Normal" - Name 611 "patch.UV" - Name 643 "InvocationID" - Name 645 "InvocationID" - Name 647 "flattenTemp" - Name 648 "param" - Name 650 "param" - Name 654 "@entryPointOutput.Pos" - Name 661 "@entryPointOutput.Normal" - Name 668 "@entryPointOutput.UV" - Name 678 "@patchConstantResult" - Name 679 "param" - Name 683 "@patchConstantOutput.TessLevelOuter" - Name 698 "@patchConstantOutput.TessLevelInner" + Name 595 "patch" + Name 598 "patch.Pos" + Name 605 "patch.Normal" + Name 612 "patch.UV" + Name 644 "InvocationID" + Name 646 "InvocationID" + Name 648 "flattenTemp" + Name 649 "param" + Name 651 "param" + Name 655 "@entryPointOutput.Pos" + Name 662 "@entryPointOutput.Normal" + Name 669 "@entryPointOutput.UV" + Name 679 "@patchConstantResult" + Name 680 "param" + Name 684 "@patchConstantOutput.TessLevelOuter" + Name 699 "@patchConstantOutput.TessLevelInner" Decorate 181 ArrayStride 16 MemberDecorate 183(UBO) 0 RowMajor MemberDecorate 183(UBO) 0 MatrixStride 16 @@ -158,21 +158,21 @@ WARNING: 0:158: '' : attribute does not apply to entry point MemberDecorate 206(ubo) 0 Offset 0 Decorate 213 Binding 0 Decorate 213 DescriptorSet 0 - Decorate 336(textureHeight) Binding 1 - Decorate 336(textureHeight) DescriptorSet 0 - Decorate 347(samplerHeight) Binding 1 - Decorate 347(samplerHeight) DescriptorSet 0 - Decorate 597(patch.Pos) BuiltIn Position - Decorate 604(patch.Normal) Location 0 - Decorate 611(patch.UV) Location 1 - Decorate 645(InvocationID) BuiltIn InvocationId - Decorate 654(@entryPointOutput.Pos) BuiltIn Position - Decorate 661(@entryPointOutput.Normal) Location 0 - Decorate 668(@entryPointOutput.UV) Location 1 - Decorate 683(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 683(@patchConstantOutput.TessLevelOuter) Patch - Decorate 698(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner - Decorate 698(@patchConstantOutput.TessLevelInner) Patch + Decorate 337(textureHeight) Binding 1 + Decorate 337(textureHeight) DescriptorSet 0 + Decorate 348(samplerHeight) Binding 1 + Decorate 348(samplerHeight) DescriptorSet 0 + Decorate 598(patch.Pos) BuiltIn Position + Decorate 605(patch.Normal) Location 0 + Decorate 612(patch.UV) Location 1 + Decorate 646(InvocationID) BuiltIn InvocationId + Decorate 655(@entryPointOutput.Pos) BuiltIn Position + Decorate 662(@entryPointOutput.Normal) Location 0 + Decorate 669(@entryPointOutput.UV) Location 1 + Decorate 684(@patchConstantOutput.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 684(@patchConstantOutput.TessLevelOuter) Patch + Decorate 699(@patchConstantOutput.TessLevelInner) BuiltIn TessLevelInner + Decorate 699(@patchConstantOutput.TessLevelInner) Patch 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -329,37 +329,37 @@ WARNING: 0:158: '' : attribute does not apply to entry point 310: 216(int) Constant 5 314: 8(float) Constant 1065353216 315: 8(float) Constant 1115684864 - 324: 11(int) Constant 98 - 322: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 323 20 32 324 16 62 19 - 328: TypeImage 8(float) 2D sampled format:Unknown - 331: 11(int) Constant 99 - 333: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) - 329: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 330 16 32 331 16 35 332 333 17 - 334: TypePointer UniformConstant 328 - 335: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 329 16 16 -336(textureHeight): 334(ptr) Variable UniformConstant - 337: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 338 329 32 331 16 35 338 336(textureHeight) 215 - 341: TypeSampler - 342: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 343 36 32 331 16 35 344 333 17 - 345: TypePointer UniformConstant 341 - 346: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 342 16 16 -347(samplerHeight): 345(ptr) Variable UniformConstant - 348: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 349 342 32 331 16 35 349 347(samplerHeight) 215 - 351: TypeSampledImage 328 - 352: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 353 16 32 331 16 35 354 333 17 - 359: 216(int) Constant 4 - 367: TypePointer Function 216(int) - 368: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 218 22 16 - 372: 11(int) Constant 102 - 370: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 371 218 32 372 16 62 19 - 389: 11(int) Constant 103 - 390: 216(int) Constant 3 - 392: TypePointer Uniform 18(fvec4) - 393: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 - 397: 8(float) Constant 1090519040 - 402: 52(bool) ConstantFalse - 405: 11(int) Constant 105 - 415: 11(int) Constant 108 + 325: 11(int) Constant 98 + 323: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 324 20 32 325 16 62 19 + 329: TypeImage 8(float) 2D sampled format:Unknown + 332: 11(int) Constant 99 + 334: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 0(DebugInfoNone) + 330: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 331 16 32 332 16 35 333 334 17 + 335: TypePointer UniformConstant 329 + 336: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 330 16 16 +337(textureHeight): 335(ptr) Variable UniformConstant + 338: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 339 330 32 332 16 35 339 337(textureHeight) 215 + 342: TypeSampler + 343: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 344 36 32 332 16 35 345 334 17 + 346: TypePointer UniformConstant 342 + 347: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 343 16 16 +348(samplerHeight): 346(ptr) Variable UniformConstant + 349: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 350 343 32 332 16 35 350 348(samplerHeight) 215 + 352: TypeSampledImage 329 + 353: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 354 16 32 332 16 35 355 334 17 + 360: 216(int) Constant 4 + 368: TypePointer Function 216(int) + 369: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 218 22 16 + 373: 11(int) Constant 102 + 371: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 26(DebugLocalVariable) 372 218 32 373 16 62 19 + 390: 11(int) Constant 103 + 391: 216(int) Constant 3 + 393: TypePointer Uniform 18(fvec4) + 394: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 20 46 16 + 398: 8(float) Constant 1090519040 + 403: 52(bool) ConstantFalse + 406: 11(int) Constant 105 + 414: 11(int) Constant 108 420: TypePointer Function 97(ConstantsHSOutput) 421: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 105 22 16 425: 11(int) Constant 113 @@ -388,7 +388,7 @@ WARNING: 0:158: '' : attribute does not apply to entry point 542: 11(int) Constant 142 545: 11(int) Constant 143 548: 11(int) Constant 144 - 553: 11(int) Constant 148 + 552: 11(int) Constant 148 558: TypePointer Function 121(HSOutput) 559: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 128 22 16 562: 11(int) Constant 159 @@ -402,150 +402,150 @@ WARNING: 0:158: '' : attribute does not apply to entry point 578: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 73 22 16 584: 11(int) Constant 162 590: 11(int) Constant 163 - 595: TypeArray 18(fvec4) 19 - 596: TypePointer Input 595 - 597(patch.Pos): 596(ptr) Variable Input - 598: TypePointer Input 18(fvec4) - 602: TypeArray 72(fvec3) 19 - 603: TypePointer Input 602 -604(patch.Normal): 603(ptr) Variable Input - 605: TypePointer Input 72(fvec3) - 609: TypeArray 48(fvec2) 19 - 610: TypePointer Input 609 - 611(patch.UV): 610(ptr) Variable Input - 612: TypePointer Input 48(fvec2) - 644: TypePointer Input 11(int) -645(InvocationID): 644(ptr) Variable Input - 653: TypePointer Output 595 -654(@entryPointOutput.Pos): 653(ptr) Variable Output - 658: TypePointer Output 18(fvec4) - 660: TypePointer Output 602 -661(@entryPointOutput.Normal): 660(ptr) Variable Output - 665: TypePointer Output 72(fvec3) - 667: TypePointer Output 609 -668(@entryPointOutput.UV): 667(ptr) Variable Output - 672: TypePointer Output 48(fvec2) - 682: TypePointer Output 93 -683(@patchConstantOutput.TessLevelOuter): 682(ptr) Variable Output - 686: TypePointer Output 8(float) - 697: TypePointer Output 95 -698(@patchConstantOutput.TessLevelInner): 697(ptr) Variable Output + 596: TypeArray 18(fvec4) 19 + 597: TypePointer Input 596 + 598(patch.Pos): 597(ptr) Variable Input + 599: TypePointer Input 18(fvec4) + 603: TypeArray 72(fvec3) 19 + 604: TypePointer Input 603 +605(patch.Normal): 604(ptr) Variable Input + 606: TypePointer Input 72(fvec3) + 610: TypeArray 48(fvec2) 19 + 611: TypePointer Input 610 + 612(patch.UV): 611(ptr) Variable Input + 613: TypePointer Input 48(fvec2) + 645: TypePointer Input 11(int) +646(InvocationID): 645(ptr) Variable Input + 654: TypePointer Output 596 +655(@entryPointOutput.Pos): 654(ptr) Variable Output + 659: TypePointer Output 18(fvec4) + 661: TypePointer Output 603 +662(@entryPointOutput.Normal): 661(ptr) Variable Output + 666: TypePointer Output 72(fvec3) + 668: TypePointer Output 610 +669(@entryPointOutput.UV): 668(ptr) Variable Output + 673: TypePointer Output 48(fvec2) + 683: TypePointer Output 93 +684(@patchConstantOutput.TessLevelOuter): 683(ptr) Variable Output + 687: TypePointer Output 8(float) + 698: TypePointer Output 95 +699(@patchConstantOutput.TessLevelInner): 698(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 594(patch): 91(ptr) Variable Function -643(InvocationID): 119(ptr) Variable Function -647(flattenTemp): 558(ptr) Variable Function - 648(param): 91(ptr) Variable Function - 650(param): 119(ptr) Variable Function -678(@patchConstantResult): 420(ptr) Variable Function - 679(param): 91(ptr) Variable Function - 599: 598(ptr) AccessChain 597(patch.Pos) 219 - 600: 18(fvec4) Load 599 - 601: 21(ptr) AccessChain 594(patch) 219 219 - Store 601 600 - 606: 605(ptr) AccessChain 604(patch.Normal) 219 - 607: 72(fvec3) Load 606 - 608: 577(ptr) AccessChain 594(patch) 219 220 - Store 608 607 - 613: 612(ptr) AccessChain 611(patch.UV) 219 - 614: 48(fvec2) Load 613 - 615: 50(ptr) AccessChain 594(patch) 219 431 - Store 615 614 - 616: 598(ptr) AccessChain 597(patch.Pos) 220 - 617: 18(fvec4) Load 616 - 618: 21(ptr) AccessChain 594(patch) 220 219 - Store 618 617 - 619: 605(ptr) AccessChain 604(patch.Normal) 220 - 620: 72(fvec3) Load 619 - 621: 577(ptr) AccessChain 594(patch) 220 220 - Store 621 620 - 622: 612(ptr) AccessChain 611(patch.UV) 220 - 623: 48(fvec2) Load 622 - 624: 50(ptr) AccessChain 594(patch) 220 431 - Store 624 623 - 625: 598(ptr) AccessChain 597(patch.Pos) 431 - 626: 18(fvec4) Load 625 - 627: 21(ptr) AccessChain 594(patch) 431 219 - Store 627 626 - 628: 605(ptr) AccessChain 604(patch.Normal) 431 - 629: 72(fvec3) Load 628 - 630: 577(ptr) AccessChain 594(patch) 431 220 - Store 630 629 - 631: 612(ptr) AccessChain 611(patch.UV) 431 - 632: 48(fvec2) Load 631 - 633: 50(ptr) AccessChain 594(patch) 431 431 - Store 633 632 - 634: 598(ptr) AccessChain 597(patch.Pos) 390 - 635: 18(fvec4) Load 634 - 636: 21(ptr) AccessChain 594(patch) 390 219 - Store 636 635 - 637: 605(ptr) AccessChain 604(patch.Normal) 390 - 638: 72(fvec3) Load 637 - 639: 577(ptr) AccessChain 594(patch) 390 220 - Store 639 638 - 640: 612(ptr) AccessChain 611(patch.UV) 390 - 641: 48(fvec2) Load 640 - 642: 50(ptr) AccessChain 594(patch) 390 431 - Store 642 641 - 646: 11(int) Load 645(InvocationID) - Store 643(InvocationID) 646 - 649: 89 Load 594(patch) - Store 648(param) 649 - 651: 11(int) Load 643(InvocationID) - Store 650(param) 651 - 652:121(HSOutput) FunctionCall 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 648(param) 650(param) - Store 647(flattenTemp) 652 - 655: 11(int) Load 645(InvocationID) - 656: 21(ptr) AccessChain 647(flattenTemp) 219 - 657: 18(fvec4) Load 656 - 659: 658(ptr) AccessChain 654(@entryPointOutput.Pos) 655 - Store 659 657 - 662: 11(int) Load 645(InvocationID) - 663: 577(ptr) AccessChain 647(flattenTemp) 220 - 664: 72(fvec3) Load 663 - 666: 665(ptr) AccessChain 661(@entryPointOutput.Normal) 662 - Store 666 664 - 669: 11(int) Load 645(InvocationID) - 670: 50(ptr) AccessChain 647(flattenTemp) 431 - 671: 48(fvec2) Load 670 - 673: 672(ptr) AccessChain 668(@entryPointOutput.UV) 669 - Store 673 671 + 595(patch): 91(ptr) Variable Function +644(InvocationID): 119(ptr) Variable Function +648(flattenTemp): 558(ptr) Variable Function + 649(param): 91(ptr) Variable Function + 651(param): 119(ptr) Variable Function +679(@patchConstantResult): 420(ptr) Variable Function + 680(param): 91(ptr) Variable Function + 600: 599(ptr) AccessChain 598(patch.Pos) 219 + 601: 18(fvec4) Load 600 + 602: 21(ptr) AccessChain 595(patch) 219 219 + Store 602 601 + 607: 606(ptr) AccessChain 605(patch.Normal) 219 + 608: 72(fvec3) Load 607 + 609: 577(ptr) AccessChain 595(patch) 219 220 + Store 609 608 + 614: 613(ptr) AccessChain 612(patch.UV) 219 + 615: 48(fvec2) Load 614 + 616: 50(ptr) AccessChain 595(patch) 219 431 + Store 616 615 + 617: 599(ptr) AccessChain 598(patch.Pos) 220 + 618: 18(fvec4) Load 617 + 619: 21(ptr) AccessChain 595(patch) 220 219 + Store 619 618 + 620: 606(ptr) AccessChain 605(patch.Normal) 220 + 621: 72(fvec3) Load 620 + 622: 577(ptr) AccessChain 595(patch) 220 220 + Store 622 621 + 623: 613(ptr) AccessChain 612(patch.UV) 220 + 624: 48(fvec2) Load 623 + 625: 50(ptr) AccessChain 595(patch) 220 431 + Store 625 624 + 626: 599(ptr) AccessChain 598(patch.Pos) 431 + 627: 18(fvec4) Load 626 + 628: 21(ptr) AccessChain 595(patch) 431 219 + Store 628 627 + 629: 606(ptr) AccessChain 605(patch.Normal) 431 + 630: 72(fvec3) Load 629 + 631: 577(ptr) AccessChain 595(patch) 431 220 + Store 631 630 + 632: 613(ptr) AccessChain 612(patch.UV) 431 + 633: 48(fvec2) Load 632 + 634: 50(ptr) AccessChain 595(patch) 431 431 + Store 634 633 + 635: 599(ptr) AccessChain 598(patch.Pos) 391 + 636: 18(fvec4) Load 635 + 637: 21(ptr) AccessChain 595(patch) 391 219 + Store 637 636 + 638: 606(ptr) AccessChain 605(patch.Normal) 391 + 639: 72(fvec3) Load 638 + 640: 577(ptr) AccessChain 595(patch) 391 220 + Store 640 639 + 641: 613(ptr) AccessChain 612(patch.UV) 391 + 642: 48(fvec2) Load 641 + 643: 50(ptr) AccessChain 595(patch) 391 431 + Store 643 642 + 647: 11(int) Load 646(InvocationID) + Store 644(InvocationID) 647 + 650: 89 Load 595(patch) + Store 649(param) 650 + 652: 11(int) Load 644(InvocationID) + Store 651(param) 652 + 653:121(HSOutput) FunctionCall 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;) 649(param) 651(param) + Store 648(flattenTemp) 653 + 656: 11(int) Load 646(InvocationID) + 657: 21(ptr) AccessChain 648(flattenTemp) 219 + 658: 18(fvec4) Load 657 + 660: 659(ptr) AccessChain 655(@entryPointOutput.Pos) 656 + Store 660 658 + 663: 11(int) Load 646(InvocationID) + 664: 577(ptr) AccessChain 648(flattenTemp) 220 + 665: 72(fvec3) Load 664 + 667: 666(ptr) AccessChain 662(@entryPointOutput.Normal) 663 + Store 667 665 + 670: 11(int) Load 646(InvocationID) + 671: 50(ptr) AccessChain 648(flattenTemp) 431 + 672: 48(fvec2) Load 671 + 674: 673(ptr) AccessChain 669(@entryPointOutput.UV) 670 + Store 674 672 ControlBarrier 46 19 16 - 674: 11(int) Load 645(InvocationID) - 675: 52(bool) IEqual 674 219 - SelectionMerge 677 None - BranchConditional 675 676 677 - 676: Label - 680: 89 Load 594(patch) - Store 679(param) 680 - 681:97(ConstantsHSOutput) FunctionCall 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 679(param) - Store 678(@patchConstantResult) 681 - 684: 158(ptr) AccessChain 678(@patchConstantResult) 219 219 - 685: 8(float) Load 684 - 687: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 219 - Store 687 685 - 688: 158(ptr) AccessChain 678(@patchConstantResult) 219 220 - 689: 8(float) Load 688 - 690: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 220 - Store 690 689 - 691: 158(ptr) AccessChain 678(@patchConstantResult) 219 431 - 692: 8(float) Load 691 - 693: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 431 - Store 693 692 - 694: 158(ptr) AccessChain 678(@patchConstantResult) 219 390 - 695: 8(float) Load 694 - 696: 686(ptr) AccessChain 683(@patchConstantOutput.TessLevelOuter) 390 - Store 696 695 - 699: 158(ptr) AccessChain 678(@patchConstantResult) 220 219 - 700: 8(float) Load 699 - 701: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 219 - Store 701 700 - 702: 158(ptr) AccessChain 678(@patchConstantResult) 220 220 - 703: 8(float) Load 702 - 704: 686(ptr) AccessChain 698(@patchConstantOutput.TessLevelInner) 220 - Store 704 703 - Branch 677 - 677: Label + 675: 11(int) Load 646(InvocationID) + 676: 52(bool) IEqual 675 219 + SelectionMerge 678 None + BranchConditional 676 677 678 + 677: Label + 681: 89 Load 595(patch) + Store 680(param) 681 + 682:97(ConstantsHSOutput) FunctionCall 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];) 680(param) + Store 679(@patchConstantResult) 682 + 685: 158(ptr) AccessChain 679(@patchConstantResult) 219 219 + 686: 8(float) Load 685 + 688: 687(ptr) AccessChain 684(@patchConstantOutput.TessLevelOuter) 219 + Store 688 686 + 689: 158(ptr) AccessChain 679(@patchConstantResult) 219 220 + 690: 8(float) Load 689 + 691: 687(ptr) AccessChain 684(@patchConstantOutput.TessLevelOuter) 220 + Store 691 690 + 692: 158(ptr) AccessChain 679(@patchConstantResult) 219 431 + 693: 8(float) Load 692 + 694: 687(ptr) AccessChain 684(@patchConstantOutput.TessLevelOuter) 431 + Store 694 693 + 695: 158(ptr) AccessChain 679(@patchConstantResult) 219 391 + 696: 8(float) Load 695 + 697: 687(ptr) AccessChain 684(@patchConstantOutput.TessLevelOuter) 391 + Store 697 696 + 700: 158(ptr) AccessChain 679(@patchConstantResult) 220 219 + 701: 8(float) Load 700 + 702: 687(ptr) AccessChain 699(@patchConstantOutput.TessLevelInner) 219 + Store 702 701 + 703: 158(ptr) AccessChain 679(@patchConstantResult) 220 220 + 704: 8(float) Load 703 + 705: 687(ptr) AccessChain 699(@patchConstantOutput.TessLevelInner) 220 + Store 705 704 + Branch 678 + 678: Label Return FunctionEnd 28(screenSpaceTessFactor(vf4;vf4;): 8(float) Function None 24 @@ -664,76 +664,75 @@ WARNING: 0:158: '' : attribute does not apply to entry point 57(Pos): 21(ptr) FunctionParameter 58(inUV): 50(ptr) FunctionParameter 60: Label - 321(pos): 21(ptr) Variable Function - 369(i): 367(ptr) Variable Function + 322(pos): 21(ptr) Variable Function + 370(i): 368(ptr) Variable Function 67: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 63 63 16 16 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 64 57(Pos) 41 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 69 58(inUV) 41 - 320: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) - 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 324 324 16 16 - 325: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 322 321(pos) 41 - 327: 18(fvec4) Load 57(Pos) - Store 321(pos) 327 - 340: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 331 331 16 16 - 339: 328 Load 336(textureHeight) - 350: 341 Load 347(samplerHeight) - 355: 351 SampledImage 339 350 - 356: 48(fvec2) Load 58(inUV) - 357: 18(fvec4) ImageSampleExplicitLod 355 356 Lod 234 - 358: 8(float) CompositeExtract 357 0 - 360: 305(ptr) AccessChain 213 219 359 - 361: 8(float) Load 360 - 362: 8(float) FMul 358 361 - 363: 158(ptr) AccessChain 321(pos) 36 - 364: 8(float) Load 363 - 365: 8(float) FSub 364 362 - 366: 158(ptr) AccessChain 321(pos) 36 - Store 366 365 - 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 - 373: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 370 369(i) 41 - Store 369(i) 219 - Branch 375 - 375: Label - 379: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 - LoopMerge 377 378 None - Branch 381 - 381: Label - 383: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 - 382: 216(int) Load 369(i) - 385: 52(bool) SLessThan 382 274 - BranchConditional 385 376 377 - 376: Label - 387: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 389 389 16 16 - 386: 18(fvec4) Load 321(pos) - 391: 216(int) Load 369(i) - 394: 392(ptr) AccessChain 213 219 390 391 - 395: 18(fvec4) Load 394 - 396: 8(float) Dot 386 395 - 398: 8(float) FAdd 396 397 - 399: 52(bool) FOrdLessThan 398 234 - SelectionMerge 401 None - BranchConditional 399 400 401 - 400: Label - 403: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 405 405 16 16 - ReturnValue 402 - 401: Label - 408: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - Branch 378 - 378: Label - 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 411: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 372 372 16 16 - 409: 216(int) Load 369(i) - 412: 216(int) IAdd 409 220 - Store 369(i) 412 - Branch 375 - 377: Label - 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 - 414: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 415 415 16 16 + 321: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 62 59(frustumCheck(vf4;vf2;) + 327: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 325 325 16 16 + 326: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 323 322(pos) 41 + 328: 18(fvec4) Load 57(Pos) + Store 322(pos) 328 + 341: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 332 332 16 16 + 340: 329 Load 337(textureHeight) + 351: 342 Load 348(samplerHeight) + 356: 352 SampledImage 340 351 + 357: 48(fvec2) Load 58(inUV) + 358: 18(fvec4) ImageSampleExplicitLod 356 357 Lod 234 + 359: 8(float) CompositeExtract 358 0 + 361: 305(ptr) AccessChain 213 219 360 + 362: 8(float) Load 361 + 363: 8(float) FMul 359 362 + 364: 158(ptr) AccessChain 322(pos) 36 + 365: 8(float) Load 364 + 366: 8(float) FSub 365 363 + 367: 158(ptr) AccessChain 322(pos) 36 + Store 367 366 + 375: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 373 373 16 16 + 374: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 371 370(i) 41 + Store 370(i) 219 + Branch 376 + 376: Label + 380: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 381: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 373 373 16 16 + LoopMerge 378 379 None + Branch 382 + 382: Label + 384: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 385: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 373 373 16 16 + 383: 216(int) Load 370(i) + 386: 52(bool) SLessThan 383 274 + BranchConditional 386 377 378 + 377: Label + 388: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 389: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 390 390 16 16 + 387: 18(fvec4) Load 322(pos) + 392: 216(int) Load 370(i) + 395: 393(ptr) AccessChain 213 219 391 392 + 396: 18(fvec4) Load 395 + 397: 8(float) Dot 387 396 + 399: 8(float) FAdd 397 398 + 400: 52(bool) FOrdLessThan 399 234 + SelectionMerge 402 None + BranchConditional 400 401 402 + 401: Label + 404: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 405: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 406 406 16 16 + ReturnValue 403 + 402: Label + Branch 379 + 379: Label + 409: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 410: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 373 373 16 16 + 408: 216(int) Load 370(i) + 411: 216(int) IAdd 408 220 + Store 370(i) 411 + Branch 376 + 378: Label + 412: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 62 + 413: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 414 414 16 16 ReturnValue 180 FunctionEnd 110(ConstantsHS(struct-VSOutput-vf4-vf3-vf21[4];):97(ConstantsHSOutput) Function None 107 @@ -786,7 +785,7 @@ WARNING: 0:158: '' : attribute does not apply to entry point 457: 158(ptr) AccessChain 422(output) 219 431 Store 457 234 461: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 462 462 16 16 - 460: 158(ptr) AccessChain 422(output) 219 390 + 460: 158(ptr) AccessChain 422(output) 219 391 Store 460 234 Branch 443 463: Label @@ -800,7 +799,7 @@ WARNING: 0:158: '' : attribute does not apply to entry point 470: Label 474: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 475: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 476 476 16 16 - 473: 21(ptr) AccessChain 109(patch) 390 219 + 473: 21(ptr) AccessChain 109(patch) 391 219 477: 18(fvec4) Load 473 Store 472(param) 477 479: 21(ptr) AccessChain 109(patch) 219 219 @@ -833,16 +832,16 @@ WARNING: 0:158: '' : attribute does not apply to entry point 504: 21(ptr) AccessChain 109(patch) 431 219 507: 18(fvec4) Load 504 Store 503(param) 507 - 509: 21(ptr) AccessChain 109(patch) 390 219 + 509: 21(ptr) AccessChain 109(patch) 391 219 510: 18(fvec4) Load 509 Store 508(param) 510 511: 8(float) FunctionCall 28(screenSpaceTessFactor(vf4;vf4;) 503(param) 508(param) - 512: 158(ptr) AccessChain 422(output) 219 390 + 512: 158(ptr) AccessChain 422(output) 219 391 Store 512 511 514: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 515 515 16 16 513: 158(ptr) AccessChain 422(output) 219 219 516: 8(float) Load 513 - 517: 158(ptr) AccessChain 422(output) 219 390 + 517: 158(ptr) AccessChain 422(output) 219 391 518: 8(float) Load 517 519: 8(float) ExtInst 3(GLSL.std.450) 46(FMix) 516 518 153 520: 158(ptr) AccessChain 422(output) 220 219 @@ -874,17 +873,16 @@ WARNING: 0:158: '' : attribute does not apply to entry point 543: 158(ptr) AccessChain 422(output) 219 431 Store 543 314 547: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 548 548 16 16 - 546: 158(ptr) AccessChain 422(output) 219 390 + 546: 158(ptr) AccessChain 422(output) 219 391 Store 546 314 Branch 471 471: Label - 549: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 Branch 443 443: Label - 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 - 552: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 553 553 16 16 - 550:97(ConstantsHSOutput) Load 422(output) - ReturnValue 550 + 550: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 113 + 551: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 32 552 552 16 16 + 549:97(ConstantsHSOutput) Load 422(output) + ReturnValue 549 FunctionEnd 135(@main(struct-VSOutput-vf4-vf3-vf21[4];u1;):121(HSOutput) Function None 131 133(patch): 91(ptr) FunctionParameter diff --git a/Test/baseResults/spv.debuginfo.hlsl.tese.out b/Test/baseResults/spv.debuginfo.hlsl.tese.out index e2b8ffd3d2..230e96a8bd 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.tese.out +++ b/Test/baseResults/spv.debuginfo.hlsl.tese.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.tese // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 477 +// Id's are bound by 478 Capability Tessellation Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint TessellationEvaluation 6 "main" 368 383 392 401 408 414 454 458 462 465 468 471 474 + EntryPoint TessellationEvaluation 6 "main" 369 384 393 402 409 415 455 459 463 466 469 472 475 ExecutionMode 6 Quads 2: String "" 9: String "float" @@ -102,25 +102,25 @@ spv.debuginfo.hlsl.tese Name 297 "ubo" MemberName 297(ubo) 0 "ubo" Name 303 "" - Name 366 "input" - Name 368 "input.TessLevelOuter" - Name 383 "input.TessLevelInner" - Name 390 "TessCoord" - Name 392 "TessCoord" - Name 398 "patch" - Name 401 "patch.Pos" - Name 408 "patch.Normal" - Name 414 "patch.UV" - Name 446 "flattenTemp" - Name 448 "param" - Name 450 "param" - Name 454 "@entryPointOutput.Pos" - Name 458 "@entryPointOutput.Normal" - Name 462 "@entryPointOutput.UV" - Name 465 "@entryPointOutput.ViewVec" - Name 468 "@entryPointOutput.LightVec" - Name 471 "@entryPointOutput.EyePos" - Name 474 "@entryPointOutput.WorldPos" + Name 367 "input" + Name 369 "input.TessLevelOuter" + Name 384 "input.TessLevelInner" + Name 391 "TessCoord" + Name 393 "TessCoord" + Name 399 "patch" + Name 402 "patch.Pos" + Name 409 "patch.Normal" + Name 415 "patch.UV" + Name 447 "flattenTemp" + Name 449 "param" + Name 451 "param" + Name 455 "@entryPointOutput.Pos" + Name 459 "@entryPointOutput.Normal" + Name 463 "@entryPointOutput.UV" + Name 466 "@entryPointOutput.ViewVec" + Name 469 "@entryPointOutput.LightVec" + Name 472 "@entryPointOutput.EyePos" + Name 475 "@entryPointOutput.WorldPos" Decorate 241(displacementMapTexture) Binding 1 Decorate 241(displacementMapTexture) DescriptorSet 0 Decorate 253(displacementMapSampler) Binding 1 @@ -142,22 +142,22 @@ spv.debuginfo.hlsl.tese MemberDecorate 297(ubo) 0 Offset 0 Decorate 303 Binding 0 Decorate 303 DescriptorSet 0 - Decorate 368(input.TessLevelOuter) BuiltIn TessLevelOuter - Decorate 368(input.TessLevelOuter) Patch - Decorate 383(input.TessLevelInner) BuiltIn TessLevelInner - Decorate 383(input.TessLevelInner) Patch - Decorate 392(TessCoord) BuiltIn TessCoord - Decorate 392(TessCoord) Patch - Decorate 401(patch.Pos) BuiltIn Position - Decorate 408(patch.Normal) Location 0 - Decorate 414(patch.UV) Location 1 - Decorate 454(@entryPointOutput.Pos) BuiltIn Position - Decorate 458(@entryPointOutput.Normal) Location 0 - Decorate 462(@entryPointOutput.UV) Location 1 - Decorate 465(@entryPointOutput.ViewVec) Location 2 - Decorate 468(@entryPointOutput.LightVec) Location 3 - Decorate 471(@entryPointOutput.EyePos) Location 4 - Decorate 474(@entryPointOutput.WorldPos) Location 5 + Decorate 369(input.TessLevelOuter) BuiltIn TessLevelOuter + Decorate 369(input.TessLevelOuter) Patch + Decorate 384(input.TessLevelInner) BuiltIn TessLevelInner + Decorate 384(input.TessLevelInner) Patch + Decorate 393(TessCoord) BuiltIn TessCoord + Decorate 393(TessCoord) Patch + Decorate 402(patch.Pos) BuiltIn Position + Decorate 409(patch.Normal) Location 0 + Decorate 415(patch.UV) Location 1 + Decorate 455(@entryPointOutput.Pos) BuiltIn Position + Decorate 459(@entryPointOutput.Normal) Location 0 + Decorate 463(@entryPointOutput.UV) Location 1 + Decorate 466(@entryPointOutput.ViewVec) Location 2 + Decorate 469(@entryPointOutput.LightVec) Location 3 + Decorate 472(@entryPointOutput.EyePos) Location 4 + Decorate 475(@entryPointOutput.WorldPos) Location 5 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -330,148 +330,148 @@ spv.debuginfo.hlsl.tese 351: 124(int) Constant 5 354: 11(int) Constant 92 362: 11(int) Constant 93 - 367: TypePointer Input 19 -368(input.TessLevelOuter): 367(ptr) Variable Input - 369: TypePointer Input 8(float) - 382: TypePointer Input 22 -383(input.TessLevelInner): 382(ptr) Variable Input - 391: TypePointer Input 49(fvec3) - 392(TessCoord): 391(ptr) Variable Input - 397: TypePointer Function 65 - 399: TypeArray 47(fvec4) 18 - 400: TypePointer Input 399 - 401(patch.Pos): 400(ptr) Variable Input - 402: TypePointer Input 47(fvec4) - 406: TypeArray 49(fvec3) 18 - 407: TypePointer Input 406 -408(patch.Normal): 407(ptr) Variable Input - 412: TypeArray 43(fvec2) 18 - 413: TypePointer Input 412 - 414(patch.UV): 413(ptr) Variable Input - 415: TypePointer Input 43(fvec2) - 453: TypePointer Output 47(fvec4) -454(@entryPointOutput.Pos): 453(ptr) Variable Output - 457: TypePointer Output 49(fvec3) -458(@entryPointOutput.Normal): 457(ptr) Variable Output - 461: TypePointer Output 43(fvec2) -462(@entryPointOutput.UV): 461(ptr) Variable Output -465(@entryPointOutput.ViewVec): 457(ptr) Variable Output -468(@entryPointOutput.LightVec): 457(ptr) Variable Output -471(@entryPointOutput.EyePos): 457(ptr) Variable Output -474(@entryPointOutput.WorldPos): 457(ptr) Variable Output + 368: TypePointer Input 19 +369(input.TessLevelOuter): 368(ptr) Variable Input + 370: TypePointer Input 8(float) + 383: TypePointer Input 22 +384(input.TessLevelInner): 383(ptr) Variable Input + 392: TypePointer Input 49(fvec3) + 393(TessCoord): 392(ptr) Variable Input + 398: TypePointer Function 65 + 400: TypeArray 47(fvec4) 18 + 401: TypePointer Input 400 + 402(patch.Pos): 401(ptr) Variable Input + 403: TypePointer Input 47(fvec4) + 407: TypeArray 49(fvec3) 18 + 408: TypePointer Input 407 +409(patch.Normal): 408(ptr) Variable Input + 413: TypeArray 43(fvec2) 18 + 414: TypePointer Input 413 + 415(patch.UV): 414(ptr) Variable Input + 416: TypePointer Input 43(fvec2) + 454: TypePointer Output 47(fvec4) +455(@entryPointOutput.Pos): 454(ptr) Variable Output + 458: TypePointer Output 49(fvec3) +459(@entryPointOutput.Normal): 458(ptr) Variable Output + 462: TypePointer Output 43(fvec2) +463(@entryPointOutput.UV): 462(ptr) Variable Output +466(@entryPointOutput.ViewVec): 458(ptr) Variable Output +469(@entryPointOutput.LightVec): 458(ptr) Variable Output +472(@entryPointOutput.EyePos): 458(ptr) Variable Output +475(@entryPointOutput.WorldPos): 458(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 366(input): 40(ptr) Variable Function - 390(TessCoord): 45(ptr) Variable Function - 398(patch): 397(ptr) Variable Function -446(flattenTemp): 105(ptr) Variable Function - 448(param): 40(ptr) Variable Function - 450(param): 45(ptr) Variable Function - 370: 369(ptr) AccessChain 368(input.TessLevelOuter) 127 - 371: 8(float) Load 370 - 372: 132(ptr) AccessChain 366(input) 127 127 - Store 372 371 - 373: 369(ptr) AccessChain 368(input.TessLevelOuter) 130 - 374: 8(float) Load 373 - 375: 132(ptr) AccessChain 366(input) 127 130 - Store 375 374 - 376: 369(ptr) AccessChain 368(input.TessLevelOuter) 128 - 377: 8(float) Load 376 - 378: 132(ptr) AccessChain 366(input) 127 128 - Store 378 377 - 379: 369(ptr) AccessChain 368(input.TessLevelOuter) 144 - 380: 8(float) Load 379 - 381: 132(ptr) AccessChain 366(input) 127 144 - Store 381 380 - 384: 369(ptr) AccessChain 383(input.TessLevelInner) 127 - 385: 8(float) Load 384 - 386: 132(ptr) AccessChain 366(input) 130 127 - Store 386 385 - 387: 369(ptr) AccessChain 383(input.TessLevelInner) 130 - 388: 8(float) Load 387 - 389: 132(ptr) AccessChain 366(input) 130 130 - Store 389 388 - 393: 49(fvec3) Load 392(TessCoord) - 394: 8(float) CompositeExtract 393 0 - 395: 8(float) CompositeExtract 393 1 - 396: 43(fvec2) CompositeConstruct 394 395 - Store 390(TessCoord) 396 - 403: 402(ptr) AccessChain 401(patch.Pos) 127 - 404: 47(fvec4) Load 403 - 405: 195(ptr) AccessChain 398(patch) 127 127 - Store 405 404 - 409: 391(ptr) AccessChain 408(patch.Normal) 127 - 410: 49(fvec3) Load 409 - 411: 160(ptr) AccessChain 398(patch) 127 130 - Store 411 410 - 416: 415(ptr) AccessChain 414(patch.UV) 127 - 417: 43(fvec2) Load 416 - 418: 45(ptr) AccessChain 398(patch) 127 128 - Store 418 417 - 419: 402(ptr) AccessChain 401(patch.Pos) 130 - 420: 47(fvec4) Load 419 - 421: 195(ptr) AccessChain 398(patch) 130 127 - Store 421 420 - 422: 391(ptr) AccessChain 408(patch.Normal) 130 - 423: 49(fvec3) Load 422 - 424: 160(ptr) AccessChain 398(patch) 130 130 - Store 424 423 - 425: 415(ptr) AccessChain 414(patch.UV) 130 - 426: 43(fvec2) Load 425 - 427: 45(ptr) AccessChain 398(patch) 130 128 - Store 427 426 - 428: 402(ptr) AccessChain 401(patch.Pos) 128 - 429: 47(fvec4) Load 428 - 430: 195(ptr) AccessChain 398(patch) 128 127 - Store 430 429 - 431: 391(ptr) AccessChain 408(patch.Normal) 128 - 432: 49(fvec3) Load 431 - 433: 160(ptr) AccessChain 398(patch) 128 130 - Store 433 432 - 434: 415(ptr) AccessChain 414(patch.UV) 128 - 435: 43(fvec2) Load 434 - 436: 45(ptr) AccessChain 398(patch) 128 128 - Store 436 435 - 437: 402(ptr) AccessChain 401(patch.Pos) 144 - 438: 47(fvec4) Load 437 - 439: 195(ptr) AccessChain 398(patch) 144 127 - Store 439 438 - 440: 391(ptr) AccessChain 408(patch.Normal) 144 - 441: 49(fvec3) Load 440 - 442: 160(ptr) AccessChain 398(patch) 144 130 - Store 442 441 - 443: 415(ptr) AccessChain 414(patch.UV) 144 - 444: 43(fvec2) Load 443 - 445: 45(ptr) AccessChain 398(patch) 144 128 - Store 445 444 - 447: 65 Load 398(patch) - 449:24(ConstantsHSOutput) Load 366(input) - Store 448(param) 449 - 451: 43(fvec2) Load 390(TessCoord) - Store 450(param) 451 - 452:67(DSOutput) FunctionCall 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 448(param) 450(param) 447 - Store 446(flattenTemp) 452 - 455: 195(ptr) AccessChain 446(flattenTemp) 127 - 456: 47(fvec4) Load 455 - Store 454(@entryPointOutput.Pos) 456 - 459: 160(ptr) AccessChain 446(flattenTemp) 130 - 460: 49(fvec3) Load 459 - Store 458(@entryPointOutput.Normal) 460 - 463: 45(ptr) AccessChain 446(flattenTemp) 128 - 464: 43(fvec2) Load 463 - Store 462(@entryPointOutput.UV) 464 - 466: 160(ptr) AccessChain 446(flattenTemp) 144 - 467: 49(fvec3) Load 466 - Store 465(@entryPointOutput.ViewVec) 467 - 469: 160(ptr) AccessChain 446(flattenTemp) 305 - 470: 49(fvec3) Load 469 - Store 468(@entryPointOutput.LightVec) 470 - 472: 160(ptr) AccessChain 446(flattenTemp) 351 - 473: 49(fvec3) Load 472 - Store 471(@entryPointOutput.EyePos) 473 - 475: 160(ptr) AccessChain 446(flattenTemp) 345 - 476: 49(fvec3) Load 475 - Store 474(@entryPointOutput.WorldPos) 476 + 367(input): 40(ptr) Variable Function + 391(TessCoord): 45(ptr) Variable Function + 399(patch): 398(ptr) Variable Function +447(flattenTemp): 105(ptr) Variable Function + 449(param): 40(ptr) Variable Function + 451(param): 45(ptr) Variable Function + 371: 370(ptr) AccessChain 369(input.TessLevelOuter) 127 + 372: 8(float) Load 371 + 373: 132(ptr) AccessChain 367(input) 127 127 + Store 373 372 + 374: 370(ptr) AccessChain 369(input.TessLevelOuter) 130 + 375: 8(float) Load 374 + 376: 132(ptr) AccessChain 367(input) 127 130 + Store 376 375 + 377: 370(ptr) AccessChain 369(input.TessLevelOuter) 128 + 378: 8(float) Load 377 + 379: 132(ptr) AccessChain 367(input) 127 128 + Store 379 378 + 380: 370(ptr) AccessChain 369(input.TessLevelOuter) 144 + 381: 8(float) Load 380 + 382: 132(ptr) AccessChain 367(input) 127 144 + Store 382 381 + 385: 370(ptr) AccessChain 384(input.TessLevelInner) 127 + 386: 8(float) Load 385 + 387: 132(ptr) AccessChain 367(input) 130 127 + Store 387 386 + 388: 370(ptr) AccessChain 384(input.TessLevelInner) 130 + 389: 8(float) Load 388 + 390: 132(ptr) AccessChain 367(input) 130 130 + Store 390 389 + 394: 49(fvec3) Load 393(TessCoord) + 395: 8(float) CompositeExtract 394 0 + 396: 8(float) CompositeExtract 394 1 + 397: 43(fvec2) CompositeConstruct 395 396 + Store 391(TessCoord) 397 + 404: 403(ptr) AccessChain 402(patch.Pos) 127 + 405: 47(fvec4) Load 404 + 406: 195(ptr) AccessChain 399(patch) 127 127 + Store 406 405 + 410: 392(ptr) AccessChain 409(patch.Normal) 127 + 411: 49(fvec3) Load 410 + 412: 160(ptr) AccessChain 399(patch) 127 130 + Store 412 411 + 417: 416(ptr) AccessChain 415(patch.UV) 127 + 418: 43(fvec2) Load 417 + 419: 45(ptr) AccessChain 399(patch) 127 128 + Store 419 418 + 420: 403(ptr) AccessChain 402(patch.Pos) 130 + 421: 47(fvec4) Load 420 + 422: 195(ptr) AccessChain 399(patch) 130 127 + Store 422 421 + 423: 392(ptr) AccessChain 409(patch.Normal) 130 + 424: 49(fvec3) Load 423 + 425: 160(ptr) AccessChain 399(patch) 130 130 + Store 425 424 + 426: 416(ptr) AccessChain 415(patch.UV) 130 + 427: 43(fvec2) Load 426 + 428: 45(ptr) AccessChain 399(patch) 130 128 + Store 428 427 + 429: 403(ptr) AccessChain 402(patch.Pos) 128 + 430: 47(fvec4) Load 429 + 431: 195(ptr) AccessChain 399(patch) 128 127 + Store 431 430 + 432: 392(ptr) AccessChain 409(patch.Normal) 128 + 433: 49(fvec3) Load 432 + 434: 160(ptr) AccessChain 399(patch) 128 130 + Store 434 433 + 435: 416(ptr) AccessChain 415(patch.UV) 128 + 436: 43(fvec2) Load 435 + 437: 45(ptr) AccessChain 399(patch) 128 128 + Store 437 436 + 438: 403(ptr) AccessChain 402(patch.Pos) 144 + 439: 47(fvec4) Load 438 + 440: 195(ptr) AccessChain 399(patch) 144 127 + Store 440 439 + 441: 392(ptr) AccessChain 409(patch.Normal) 144 + 442: 49(fvec3) Load 441 + 443: 160(ptr) AccessChain 399(patch) 144 130 + Store 443 442 + 444: 416(ptr) AccessChain 415(patch.UV) 144 + 445: 43(fvec2) Load 444 + 446: 45(ptr) AccessChain 399(patch) 144 128 + Store 446 445 + 448: 65 Load 399(patch) + 450:24(ConstantsHSOutput) Load 367(input) + Store 449(param) 450 + 452: 43(fvec2) Load 391(TessCoord) + Store 451(param) 452 + 453:67(DSOutput) FunctionCall 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];) 449(param) 451(param) 448 + Store 447(flattenTemp) 453 + 456: 195(ptr) AccessChain 447(flattenTemp) 127 + 457: 47(fvec4) Load 456 + Store 455(@entryPointOutput.Pos) 457 + 460: 160(ptr) AccessChain 447(flattenTemp) 130 + 461: 49(fvec3) Load 460 + Store 459(@entryPointOutput.Normal) 461 + 464: 45(ptr) AccessChain 447(flattenTemp) 128 + 465: 43(fvec2) Load 464 + Store 463(@entryPointOutput.UV) 465 + 467: 160(ptr) AccessChain 447(flattenTemp) 144 + 468: 49(fvec3) Load 467 + Store 466(@entryPointOutput.ViewVec) 468 + 470: 160(ptr) AccessChain 447(flattenTemp) 305 + 471: 49(fvec3) Load 470 + Store 469(@entryPointOutput.LightVec) 471 + 473: 160(ptr) AccessChain 447(flattenTemp) 351 + 474: 49(fvec3) Load 473 + Store 472(@entryPointOutput.EyePos) 474 + 476: 160(ptr) AccessChain 447(flattenTemp) 345 + 477: 49(fvec3) Load 476 + Store 475(@entryPointOutput.WorldPos) 477 Return FunctionEnd 88(@main(struct-ConstantsHSOutput-f1[4]-f1[2]1;vf2;struct-HSOutput-vf4-vf3-vf21[4];):67(DSOutput) Function None 83 diff --git a/Test/baseResults/spv.debuginfo.hlsl.vert.out b/Test/baseResults/spv.debuginfo.hlsl.vert.out index 4e9f17fa0f..d26021cf7f 100644 --- a/Test/baseResults/spv.debuginfo.hlsl.vert.out +++ b/Test/baseResults/spv.debuginfo.hlsl.vert.out @@ -1,14 +1,14 @@ spv.debuginfo.hlsl.vert // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 512 +// Id's are bound by 513 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Vertex 6 "main" 461 464 468 471 474 477 481 485 493 497 500 503 506 509 + EntryPoint Vertex 6 "main" 462 465 469 472 475 478 482 486 494 498 501 504 507 510 2: String "" 9: String "float" 12: String "uint" @@ -88,23 +88,23 @@ spv.debuginfo.hlsl.vert Name 339 "locPos" Name 353 "pos" Name 419 "lPos" - Name 459 "input" - Name 461 "input.Pos" - Name 464 "input.Normal" - Name 468 "input.UV" - Name 471 "input.Color" - Name 474 "input.instancePos" - Name 477 "input.instanceRot" - Name 481 "input.instanceScale" - Name 485 "input.instanceTexIndex" - Name 488 "flattenTemp" - Name 489 "param" - Name 493 "@entryPointOutput.Pos" - Name 497 "@entryPointOutput.Normal" - Name 500 "@entryPointOutput.Color" - Name 503 "@entryPointOutput.UV" - Name 506 "@entryPointOutput.ViewVec" - Name 509 "@entryPointOutput.LightVec" + Name 460 "input" + Name 462 "input.Pos" + Name 465 "input.Normal" + Name 469 "input.UV" + Name 472 "input.Color" + Name 475 "input.instancePos" + Name 478 "input.instanceRot" + Name 482 "input.instanceScale" + Name 486 "input.instanceTexIndex" + Name 489 "flattenTemp" + Name 490 "param" + Name 494 "@entryPointOutput.Pos" + Name 498 "@entryPointOutput.Normal" + Name 501 "@entryPointOutput.Color" + Name 504 "@entryPointOutput.UV" + Name 507 "@entryPointOutput.ViewVec" + Name 510 "@entryPointOutput.LightVec" MemberDecorate 143(UBO) 0 RowMajor MemberDecorate 143(UBO) 0 MatrixStride 16 MemberDecorate 143(UBO) 0 Offset 0 @@ -118,20 +118,20 @@ spv.debuginfo.hlsl.vert MemberDecorate 159(ubo) 0 Offset 0 Decorate 166 Binding 0 Decorate 166 DescriptorSet 0 - Decorate 461(input.Pos) Location 0 - Decorate 464(input.Normal) Location 1 - Decorate 468(input.UV) Location 2 - Decorate 471(input.Color) Location 3 - Decorate 474(input.instancePos) Location 4 - Decorate 477(input.instanceRot) Location 5 - Decorate 481(input.instanceScale) Location 6 - Decorate 485(input.instanceTexIndex) Location 7 - Decorate 493(@entryPointOutput.Pos) BuiltIn Position - Decorate 497(@entryPointOutput.Normal) Location 0 - Decorate 500(@entryPointOutput.Color) Location 1 - Decorate 503(@entryPointOutput.UV) Location 2 - Decorate 506(@entryPointOutput.ViewVec) Location 3 - Decorate 509(@entryPointOutput.LightVec) Location 4 + Decorate 462(input.Pos) Location 0 + Decorate 465(input.Normal) Location 1 + Decorate 469(input.UV) Location 2 + Decorate 472(input.Color) Location 3 + Decorate 475(input.instancePos) Location 4 + Decorate 478(input.instanceRot) Location 5 + Decorate 482(input.instanceScale) Location 6 + Decorate 486(input.instanceTexIndex) Location 7 + Decorate 494(@entryPointOutput.Pos) BuiltIn Position + Decorate 498(@entryPointOutput.Normal) Location 0 + Decorate 501(@entryPointOutput.Color) Location 1 + Decorate 504(@entryPointOutput.UV) Location 2 + Decorate 507(@entryPointOutput.ViewVec) Location 3 + Decorate 510(@entryPointOutput.LightVec) Location 4 4: TypeVoid 5: TypeFunction 4 8: TypeFloat 32 @@ -302,77 +302,77 @@ spv.debuginfo.hlsl.vert 442: 11(int) Constant 109 449: 11(int) Constant 110 455: 11(int) Constant 111 - 460: TypePointer Input 18(fvec3) - 461(input.Pos): 460(ptr) Variable Input -464(input.Normal): 460(ptr) Variable Input - 467: TypePointer Input 20(fvec2) - 468(input.UV): 467(ptr) Variable Input -471(input.Color): 460(ptr) Variable Input -474(input.instancePos): 460(ptr) Variable Input -477(input.instanceRot): 460(ptr) Variable Input - 480: TypePointer Input 8(float) -481(input.instanceScale): 480(ptr) Variable Input - 484: TypePointer Input 23(int) -485(input.instanceTexIndex): 484(ptr) Variable Input - 492: TypePointer Output 59(fvec4) -493(@entryPointOutput.Pos): 492(ptr) Variable Output - 496: TypePointer Output 18(fvec3) -497(@entryPointOutput.Normal): 496(ptr) Variable Output -500(@entryPointOutput.Color): 496(ptr) Variable Output -503(@entryPointOutput.UV): 496(ptr) Variable Output -506(@entryPointOutput.ViewVec): 496(ptr) Variable Output -509(@entryPointOutput.LightVec): 496(ptr) Variable Output + 461: TypePointer Input 18(fvec3) + 462(input.Pos): 461(ptr) Variable Input +465(input.Normal): 461(ptr) Variable Input + 468: TypePointer Input 20(fvec2) + 469(input.UV): 468(ptr) Variable Input +472(input.Color): 461(ptr) Variable Input +475(input.instancePos): 461(ptr) Variable Input +478(input.instanceRot): 461(ptr) Variable Input + 481: TypePointer Input 8(float) +482(input.instanceScale): 481(ptr) Variable Input + 485: TypePointer Input 23(int) +486(input.instanceTexIndex): 485(ptr) Variable Input + 493: TypePointer Output 59(fvec4) +494(@entryPointOutput.Pos): 493(ptr) Variable Output + 497: TypePointer Output 18(fvec3) +498(@entryPointOutput.Normal): 497(ptr) Variable Output +501(@entryPointOutput.Color): 497(ptr) Variable Output +504(@entryPointOutput.UV): 497(ptr) Variable Output +507(@entryPointOutput.ViewVec): 497(ptr) Variable Output +510(@entryPointOutput.LightVec): 497(ptr) Variable Output 6(main): 4 Function None 5 7: Label - 459(input): 56(ptr) Variable Function -488(flattenTemp): 89(ptr) Variable Function - 489(param): 56(ptr) Variable Function - 462: 18(fvec3) Load 461(input.Pos) - 463: 103(ptr) AccessChain 459(input) 169 - Store 463 462 - 465: 18(fvec3) Load 464(input.Normal) - 466: 103(ptr) AccessChain 459(input) 324 - Store 466 465 - 469: 20(fvec2) Load 468(input.UV) - 470: 110(ptr) AccessChain 459(input) 101 - Store 470 469 - 472: 18(fvec3) Load 471(input.Color) - 473: 103(ptr) AccessChain 459(input) 102 - Store 473 472 - 475: 18(fvec3) Load 474(input.instancePos) - 476: 103(ptr) AccessChain 459(input) 296 - Store 476 475 - 478: 18(fvec3) Load 477(input.instanceRot) - 479: 103(ptr) AccessChain 459(input) 134 - Store 479 478 - 482: 8(float) Load 481(input.instanceScale) - 483: 126(ptr) AccessChain 459(input) 361 - Store 483 482 - 486: 23(int) Load 485(input.instanceTexIndex) - 487: 117(ptr) AccessChain 459(input) 116 - Store 487 486 - 490: 27(VSInput) Load 459(input) - Store 489(param) 490 - 491:61(VSOutput) FunctionCall 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 489(param) - Store 488(flattenTemp) 491 - 494: 321(ptr) AccessChain 488(flattenTemp) 169 - 495: 59(fvec4) Load 494 - Store 493(@entryPointOutput.Pos) 495 - 498: 103(ptr) AccessChain 488(flattenTemp) 324 - 499: 18(fvec3) Load 498 - Store 497(@entryPointOutput.Normal) 499 - 501: 103(ptr) AccessChain 488(flattenTemp) 101 - 502: 18(fvec3) Load 501 - Store 500(@entryPointOutput.Color) 502 - 504: 103(ptr) AccessChain 488(flattenTemp) 102 - 505: 18(fvec3) Load 504 - Store 503(@entryPointOutput.UV) 505 - 507: 103(ptr) AccessChain 488(flattenTemp) 296 - 508: 18(fvec3) Load 507 - Store 506(@entryPointOutput.ViewVec) 508 - 510: 103(ptr) AccessChain 488(flattenTemp) 134 - 511: 18(fvec3) Load 510 - Store 509(@entryPointOutput.LightVec) 511 + 460(input): 56(ptr) Variable Function +489(flattenTemp): 89(ptr) Variable Function + 490(param): 56(ptr) Variable Function + 463: 18(fvec3) Load 462(input.Pos) + 464: 103(ptr) AccessChain 460(input) 169 + Store 464 463 + 466: 18(fvec3) Load 465(input.Normal) + 467: 103(ptr) AccessChain 460(input) 324 + Store 467 466 + 470: 20(fvec2) Load 469(input.UV) + 471: 110(ptr) AccessChain 460(input) 101 + Store 471 470 + 473: 18(fvec3) Load 472(input.Color) + 474: 103(ptr) AccessChain 460(input) 102 + Store 474 473 + 476: 18(fvec3) Load 475(input.instancePos) + 477: 103(ptr) AccessChain 460(input) 296 + Store 477 476 + 479: 18(fvec3) Load 478(input.instanceRot) + 480: 103(ptr) AccessChain 460(input) 134 + Store 480 479 + 483: 8(float) Load 482(input.instanceScale) + 484: 126(ptr) AccessChain 460(input) 361 + Store 484 483 + 487: 23(int) Load 486(input.instanceTexIndex) + 488: 117(ptr) AccessChain 460(input) 116 + Store 488 487 + 491: 27(VSInput) Load 460(input) + Store 490(param) 491 + 492:61(VSOutput) FunctionCall 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;) 490(param) + Store 489(flattenTemp) 492 + 495: 321(ptr) AccessChain 489(flattenTemp) 169 + 496: 59(fvec4) Load 495 + Store 494(@entryPointOutput.Pos) 496 + 499: 103(ptr) AccessChain 489(flattenTemp) 324 + 500: 18(fvec3) Load 499 + Store 498(@entryPointOutput.Normal) 500 + 502: 103(ptr) AccessChain 489(flattenTemp) 101 + 503: 18(fvec3) Load 502 + Store 501(@entryPointOutput.Color) 503 + 505: 103(ptr) AccessChain 489(flattenTemp) 102 + 506: 18(fvec3) Load 505 + Store 504(@entryPointOutput.UV) 506 + 508: 103(ptr) AccessChain 489(flattenTemp) 296 + 509: 18(fvec3) Load 508 + Store 507(@entryPointOutput.ViewVec) 509 + 511: 103(ptr) AccessChain 489(flattenTemp) 134 + 512: 18(fvec3) Load 511 + Store 510(@entryPointOutput.LightVec) 512 Return FunctionEnd 78(@main(struct-VSInput-vf3-vf3-vf2-vf3-vf3-vf3-f1-i11;):61(VSOutput) Function None 75 diff --git a/Test/baseResults/spv.debuginfo.implicit_br.glsl.frag.out b/Test/baseResults/spv.debuginfo.implicit_br.glsl.frag.out new file mode 100644 index 0000000000..8b2af8e8e3 --- /dev/null +++ b/Test/baseResults/spv.debuginfo.implicit_br.glsl.frag.out @@ -0,0 +1,325 @@ +spv.debuginfo.implicit_br.glsl.frag +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 194 + + Capability Shader + Extension "SPV_KHR_non_semantic_info" + 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" + 3: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint Fragment 14 "main" 186 + ExecutionMode 14 OriginUpperLeft + 2: String "spv.debuginfo.implicit_br.glsl.frag" + 8: String "uint" + 18: String "test_if" + 21: String "// OpModuleProcessed auto-map-locations +// OpModuleProcessed auto-map-bindings +// OpModuleProcessed client vulkan100 +// OpModuleProcessed target-env vulkan1.0 +// OpModuleProcessed keep-uncalled +// OpModuleProcessed entry-point main +#line 1 +#version 460 + +out int outx; +int counter = 0; + +void test_if() { + if (false) { + counter += 1; + } +} + +void test_ifelse() { + if (false) { + counter += 1; + } + else { + counter += 2; + } +} + +void test_if_compound() { + if (false) { + if (false) { + counter += 1; + } + } +} + +void test_if_compound2() { + if (false) { + if (false) { + counter += 1; + } + + counter += 2; + } +} + +void test_switch() { + switch (0) { + case 0: + counter += 1; + // implict fallthrough + case 1: + counter += 2; + break; + default: + counter += 3; + // implicit break + } +} + +void main() { + test_if(); + test_ifelse(); + test_if_compound(); + test_if_compound2(); + test_switch(); + outx = counter; +}" + 28: String "test_ifelse" + 33: String "test_if_compound" + 38: String "test_if_compound2" + 43: String "test_switch" + 46: String "main" + 50: String "int" + 56: String "counter" + 65: String "bool" + 188: String "outx" + Name 14 "main" + Name 16 "test_if(" + Name 26 "test_ifelse(" + Name 31 "test_if_compound(" + Name 36 "test_if_compound2(" + Name 41 "test_switch(" + Name 54 "counter" + Name 186 "outx" + Decorate 186(outx) Location 0 + 4: TypeVoid + 5: TypeFunction 4 + 7: TypeInt 32 0 + 10: 7(int) Constant 32 + 11: 7(int) Constant 6 + 12: 7(int) Constant 0 + 9: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 8 10 11 12 + 13: 7(int) Constant 3 + 6: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 8(DebugTypeFunction) 13 4 + 20: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 35(DebugSource) 2 21 + 23: 7(int) Constant 1 + 24: 7(int) Constant 4 + 25: 7(int) Constant 2 + 22: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 1(DebugCompilationUnit) 23 24 20 25 + 19: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 18 6 20 11 12 22 18 13 11 + 30: 7(int) Constant 12 + 29: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 28 6 20 30 12 22 28 13 30 + 35: 7(int) Constant 21 + 34: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 33 6 20 35 12 22 33 13 35 + 40: 7(int) Constant 29 + 39: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 38 6 20 40 12 22 38 13 40 + 45: 7(int) Constant 39 + 44: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 43 6 20 45 12 22 43 13 45 + 48: 7(int) Constant 53 + 47: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 46 6 20 48 12 22 46 13 48 + 49: TypeInt 32 1 + 51: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 50 10 24 12 + 52: TypePointer Private 49(int) + 53: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 51 11 12 + 54(counter): 52(ptr) Variable Private + 57: 7(int) Constant 8 + 55: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 56 51 20 24 12 22 56 54(counter) 57 + 58: 49(int) Constant 0 + 64: TypeBool + 66: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 65 10 25 12 + 67: 64(bool) ConstantFalse + 70: 49(int) Constant 1 + 77: 7(int) Constant 10 + 86: 7(int) Constant 14 + 89: 49(int) Constant 2 + 93: 7(int) Constant 17 + 97: 7(int) Constant 19 + 110: 7(int) Constant 24 + 114: 7(int) Constant 27 + 131: 7(int) Constant 35 + 135: 7(int) Constant 37 + 146: 7(int) Constant 42 + 151: 7(int) Constant 45 + 154: 7(int) Constant 46 + 156: 49(int) Constant 3 + 160: 7(int) Constant 48 + 165: 7(int) Constant 51 + 171: 7(int) Constant 54 + 174: 7(int) Constant 55 + 177: 7(int) Constant 56 + 180: 7(int) Constant 57 + 183: 7(int) Constant 58 + 184: TypePointer Output 49(int) + 185: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 51 13 12 + 186(outx): 184(ptr) Variable Output + 189: 7(int) Constant 59 + 187: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 188 51 20 189 12 22 188 186(outx) 57 + 193: 7(int) Constant 60 + 14(main): 4 Function None 5 + 15: Label + 59: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 22 + 60: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 24 24 12 12 + Store 54(counter) 58 + 167: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 47 + 168: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 48 48 12 12 + 166: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 47 14(main) + 170: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 171 171 12 12 + 169: 4 FunctionCall 16(test_if() + 173: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 174 174 12 12 + 172: 4 FunctionCall 26(test_ifelse() + 176: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 177 177 12 12 + 175: 4 FunctionCall 31(test_if_compound() + 179: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 180 180 12 12 + 178: 4 FunctionCall 36(test_if_compound2() + 182: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 183 183 12 12 + 181: 4 FunctionCall 41(test_switch() + 191: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 189 189 12 12 + 190: 49(int) Load 54(counter) + Store 186(outx) 190 + 192: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 193 193 12 12 + Return + FunctionEnd + 16(test_if(): 4 Function None 5 + 17: Label + 62: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 19 + 63: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 11 11 12 12 + 61: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 19 16(test_if() + SelectionMerge 69 None + BranchConditional 67 68 69 + 68: Label + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 19 + 73: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 57 57 12 12 + 71: 49(int) Load 54(counter) + 74: 49(int) IAdd 71 70 + Store 54(counter) 74 + Branch 69 + 69: Label + 75: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 19 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 77 77 12 12 + Return + FunctionEnd +26(test_ifelse(): 4 Function None 5 + 27: Label + 79: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 30 30 12 12 + 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 29 26(test_ifelse() + SelectionMerge 82 None + BranchConditional 67 81 88 + 81: Label + 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 85: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 86 86 12 12 + 83: 49(int) Load 54(counter) + 87: 49(int) IAdd 83 70 + Store 54(counter) 87 + Branch 82 + 88: Label + 91: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 92: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 93 93 12 12 + 90: 49(int) Load 54(counter) + 94: 49(int) IAdd 90 89 + Store 54(counter) 94 + Branch 82 + 82: Label + 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 29 + 96: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 97 97 12 12 + Return + FunctionEnd +31(test_if_compound(): 4 Function None 5 + 32: Label + 99: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 35 35 12 12 + 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 34 31(test_if_compound() + SelectionMerge 102 None + BranchConditional 67 101 102 + 101: Label + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 106: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 35 35 12 12 + SelectionMerge 104 None + BranchConditional 67 103 104 + 103: Label + 108: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 109: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 110 110 12 12 + 107: 49(int) Load 54(counter) + 111: 49(int) IAdd 107 70 + Store 54(counter) 111 + Branch 104 + 104: Label + Branch 102 + 102: Label + 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 34 + 113: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 114 114 12 12 + Return + FunctionEnd +36(test_if_compound2(): 4 Function None 5 + 37: Label + 116: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 117: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 40 40 12 12 + 115: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 39 36(test_if_compound2() + SelectionMerge 119 None + BranchConditional 67 118 119 + 118: Label + 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 40 40 12 12 + SelectionMerge 121 None + BranchConditional 67 120 121 + 120: Label + 125: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 126: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 10 10 12 12 + 124: 49(int) Load 54(counter) + 127: 49(int) IAdd 124 70 + Store 54(counter) 127 + Branch 121 + 121: Label + 129: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 130: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 131 131 12 12 + 128: 49(int) Load 54(counter) + 132: 49(int) IAdd 128 89 + Store 54(counter) 132 + Branch 119 + 119: Label + 133: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 39 + 134: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 135 135 12 12 + Return + FunctionEnd +41(test_switch(): 4 Function None 5 + 42: Label + 137: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 138: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 45 45 12 12 + 136: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 44 41(test_switch() + SelectionMerge 142 None + Switch 58 141 + case 0: 139 + case 1: 140 + 141: Label + 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 160 160 12 12 + 157: 49(int) Load 54(counter) + 161: 49(int) IAdd 157 156 + Store 54(counter) 161 + Branch 142 + 139: Label + 144: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 145: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 146 146 12 12 + 143: 49(int) Load 54(counter) + 147: 49(int) IAdd 143 70 + Store 54(counter) 147 + Branch 140 + 140: Label + 149: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 150: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 151 151 12 12 + 148: 49(int) Load 54(counter) + 152: 49(int) IAdd 148 89 + Store 54(counter) 152 + 153: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 154 154 12 12 + Branch 142 + 142: Label + 163: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 44 + 164: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 20 165 165 12 12 + Return + FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.include.glsl.frag.out b/Test/baseResults/spv.debuginfo.include.glsl.frag.out index a6ca6e1536..1d8348ae7b 100644 --- a/Test/baseResults/spv.debuginfo.include.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.include.glsl.frag.out @@ -1,14 +1,14 @@ spv.debuginfo.include.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 108 +// Id's are bound by 112 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 4: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 15 "main" 80 + EntryPoint Fragment 15 "main" 82 ExecutionMode 15 OriginUpperLeft 2: String "spv.debuginfo.include.glsl.frag" 3: String "spv.debuginfo.include.glsl.h" @@ -48,11 +48,11 @@ void main() { 50: String "mainFileFunction" 53: String "v" 57: String "main" - 82: String "headerOut" - 86: String "headerUboItem" - 89: String "UBO" - 94: String "" - 96: String "int" + 84: String "headerOut" + 88: String "headerUboItem" + 91: String "UBO" + 96: String "" + 98: String "int" SourceExtension "GL_GOOGLE_cpp_style_line_directive" SourceExtension "GL_GOOGLE_include_directive" Name 15 "main" @@ -60,17 +60,17 @@ void main() { Name 28 "a" Name 48 "mainFileFunction(vf4;" Name 47 "v" - Name 80 "headerOut" - Name 84 "UBO" - MemberName 84(UBO) 0 "headerUboItem" - Name 92 "" - Name 99 "param" - Name 106 "param" - Decorate 80(headerOut) Location 0 - Decorate 84(UBO) Block - MemberDecorate 84(UBO) 0 Offset 0 - Decorate 92 Binding 0 - Decorate 92 DescriptorSet 0 + Name 82 "headerOut" + Name 86 "UBO" + MemberName 86(UBO) 0 "headerUboItem" + Name 94 "" + Name 101 "param" + Name 108 "param" + Decorate 82(headerOut) Location 0 + Decorate 86(UBO) Block + MemberDecorate 86(UBO) 0 Offset 0 + Decorate 94 Binding 0 + Decorate 94 DescriptorSet 0 5: TypeVoid 6: TypeFunction 5 8: TypeInt 32 0 @@ -104,39 +104,41 @@ void main() { 59: 8(int) Constant 10 58: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 20(DebugFunction) 57 7 38 59 13 36 57 14 59 63: 8(int) Constant 9 - 78: TypePointer Output 20(fvec4) - 79: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 14 13 - 80(headerOut): 78(ptr) Variable Output - 83: 8(int) Constant 11 - 81: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 82 22 38 83 13 36 82 80(headerOut) 35 - 84(UBO): TypeStruct 20(fvec4) - 87: 8(int) Constant 5 - 85: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 86 22 38 87 24 13 13 14 - 88: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 89 37 38 83 13 36 89 13 14 85 - 90: TypePointer Uniform 84(UBO) - 91: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 88 40 13 - 92: 90(ptr) Variable Uniform - 93: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 94 88 38 83 13 36 94 92 35 - 95: TypeInt 32 1 - 97: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 96 11 21 13 - 98: 95(int) Constant 0 - 100: TypePointer Uniform 20(fvec4) - 101: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 40 13 + 80: TypePointer Output 20(fvec4) + 81: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 14 13 + 82(headerOut): 80(ptr) Variable Output + 85: 8(int) Constant 11 + 83: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 84 22 38 85 13 36 84 82(headerOut) 35 + 86(UBO): TypeStruct 20(fvec4) + 89: 8(int) Constant 5 + 87: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 11(DebugTypeMember) 88 22 38 89 24 13 13 14 + 90: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 10(DebugTypeComposite) 91 37 38 85 13 36 91 13 14 87 + 92: TypePointer Uniform 86(UBO) + 93: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 90 40 13 + 94: 92(ptr) Variable Uniform + 95: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 96 90 38 85 13 36 96 94 35 + 97: TypeInt 32 1 + 99: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 98 11 21 13 + 100: 97(int) Constant 0 + 102: TypePointer Uniform 20(fvec4) + 103: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 22 40 13 + 111: 8(int) Constant 12 15(main): 5 Function None 6 16: Label - 99(param): 23(ptr) Variable Function - 106(param): 23(ptr) Variable Function - 76: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 - 77: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 59 59 13 13 - 75: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 15(main) - 103: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 83 83 13 13 - 102: 100(ptr) AccessChain 92 98 - 104: 20(fvec4) Load 102 - Store 99(param) 104 - 105: 20(fvec4) FunctionCall 48(mainFileFunction(vf4;) 99(param) - Store 106(param) 105 - 107: 20(fvec4) FunctionCall 29(headerFunction(vf4;) 106(param) - Store 80(headerOut) 107 + 101(param): 23(ptr) Variable Function + 108(param): 23(ptr) Variable Function + 78: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 58 + 79: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 59 59 13 13 + 77: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 58 15(main) + 105: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 85 85 13 13 + 104: 102(ptr) AccessChain 94 100 + 106: 20(fvec4) Load 104 + Store 101(param) 106 + 107: 20(fvec4) FunctionCall 48(mainFileFunction(vf4;) 101(param) + Store 108(param) 107 + 109: 20(fvec4) FunctionCall 29(headerFunction(vf4;) 108(param) + Store 82(headerOut) 109 + 110: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 111 111 13 13 Return FunctionEnd 29(headerFunction(vf4;): 20(fvec4) Function None 26 @@ -157,9 +159,9 @@ void main() { 55: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 51 56: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 12 12 13 13 54: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 28(DebugDeclare) 52 47(v) 44 - 68: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 51 48(mainFileFunction(vf4;) - 70: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 24 24 13 13 - 69: 20(fvec4) Load 47(v) - 71: 20(fvec4) FNegate 69 - ReturnValue 71 + 69: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 51 48(mainFileFunction(vf4;) + 71: 5 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 38 24 24 13 13 + 70: 20(fvec4) Load 47(v) + 72: 20(fvec4) FNegate 70 + ReturnValue 72 FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out b/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out index 00dda0b4dc..b16727df3e 100644 --- a/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.multiline.glsl.frag.out @@ -1,14 +1,14 @@ spv.debuginfo.multiline.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 105 +// Id's are bound by 109 Capability Shader Extension "SPV_KHR_non_semantic_info" 1: ExtInstImport "NonSemantic.Shader.DebugInfo.100" 3: ExtInstImport "GLSL.std.450" MemoryModel Logical GLSL450 - EntryPoint Fragment 14 "main" 73 79 + EntryPoint Fragment 14 "main" 75 81 ExecutionMode 14 OriginUpperLeft 2: String "spv.debuginfo.multiline.glsl.frag" 8: String "uint" @@ -50,20 +50,20 @@ void main() { 44: String "y" 47: String "z" 49: String "main" - 75: String "outx" - 81: String "inx" + 77: String "outx" + 83: String "inx" Name 14 "main" Name 27 "add(f1;f1;f1;" Name 24 "x" Name 25 "y" Name 26 "z" - Name 73 "outx" - Name 79 "inx" - Name 97 "param" - Name 100 "param" - Name 101 "param" - Decorate 73(outx) Location 0 - Decorate 79(inx) Location 0 + Name 75 "outx" + Name 81 "inx" + Name 99 "param" + Name 102 "param" + Name 103 "param" + Decorate 75(outx) Location 0 + Decorate 81(inx) Location 0 4: TypeVoid 5: TypeFunction 4 7: TypeInt 32 0 @@ -95,47 +95,50 @@ void main() { 55: 7(int) Constant 8 58: 7(int) Constant 10 62: 7(int) Constant 12 - 71: TypePointer Output 16(float) - 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 - 73(outx): 71(ptr) Variable Output - 76: 7(int) Constant 17 - 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 75 18 31 76 12 33 75 73(outx) 55 - 77: TypePointer Input 16(float) - 78: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 34 12 - 79(inx): 77(ptr) Variable Input - 82: 7(int) Constant 20 - 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 81 18 31 82 12 33 81 79(inx) 55 - 85: 16(float) Constant 1065353216 - 89: 7(int) Constant 21 - 90: 16(float) Constant 1073741824 - 94: 7(int) Constant 22 - 95: 16(float) Constant 1077936128 - 99: 7(int) Constant 23 - 104: 7(int) Constant 18 + 69: 7(int) Constant 14 + 73: TypePointer Output 16(float) + 74: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 13 12 + 75(outx): 73(ptr) Variable Output + 78: 7(int) Constant 17 + 76: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 77 18 31 78 12 33 77 75(outx) 55 + 79: TypePointer Input 16(float) + 80: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 3(DebugTypePointer) 18 34 12 + 81(inx): 79(ptr) Variable Input + 84: 7(int) Constant 20 + 82: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 83 18 31 84 12 33 83 81(inx) 55 + 87: 16(float) Constant 1065353216 + 91: 7(int) Constant 21 + 92: 16(float) Constant 1073741824 + 96: 7(int) Constant 22 + 97: 16(float) Constant 1077936128 + 101: 7(int) Constant 23 + 106: 7(int) Constant 18 + 108: 7(int) Constant 25 14(main): 4 Function None 5 15: Label - 97(param): 19(ptr) Variable Function - 100(param): 19(ptr) Variable Function - 101(param): 19(ptr) Variable Function - 69: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 50 - 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 51 51 12 12 - 68: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 50 14(main) - 84: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 82 82 12 12 - 83: 16(float) Load 79(inx) - 86: 16(float) FAdd 83 85 - 88: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 89 89 12 12 - 87: 16(float) Load 79(inx) - 91: 16(float) FAdd 87 90 - 93: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 94 94 12 12 - 92: 16(float) Load 79(inx) - 96: 16(float) FAdd 92 95 - 98: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 99 99 12 12 - Store 97(param) 86 - Store 100(param) 91 - Store 101(param) 96 - 102: 16(float) FunctionCall 27(add(f1;f1;f1;) 97(param) 100(param) 101(param) - 103: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 104 104 12 12 - Store 73(outx) 102 + 99(param): 19(ptr) Variable Function + 102(param): 19(ptr) Variable Function + 103(param): 19(ptr) Variable Function + 71: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 50 + 72: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 51 51 12 12 + 70: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 101(DebugFunctionDefinition) 50 14(main) + 86: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 84 84 12 12 + 85: 16(float) Load 81(inx) + 88: 16(float) FAdd 85 87 + 90: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 91 91 12 12 + 89: 16(float) Load 81(inx) + 93: 16(float) FAdd 89 92 + 95: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 96 96 12 12 + 94: 16(float) Load 81(inx) + 98: 16(float) FAdd 94 97 + 100: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 101 101 12 12 + Store 99(param) 88 + Store 102(param) 93 + Store 103(param) 98 + 104: 16(float) FunctionCall 27(add(f1;f1;f1;) 99(param) 102(param) 103(param) + 105: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 106 106 12 12 + Store 75(outx) 104 + 107: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 31 108 108 12 12 Return FunctionEnd 27(add(f1;f1;f1;): 16(float) Function None 22 diff --git a/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out index 39814e8590..02e5280be7 100644 --- a/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out +++ b/Test/baseResults/spv.debuginfo.rt_types.glsl.rgen.out @@ -1,7 +1,7 @@ spv.debuginfo.rt_types.glsl.rgen // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 123 +// Id's are bound by 125 Capability RayQueryKHR Capability RayTracingNV @@ -148,6 +148,7 @@ void main() 112: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 2(DebugTypeBasic) 111 10 24 12 115: 7(int) Constant 19 121: 7(int) Constant 21 + 124: 7(int) Constant 23 14(main): 4 Function None 5 15: Label 31(rayFlags): 28(ptr) Variable Function @@ -187,5 +188,6 @@ void main() Branch 118 118: Label 122: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 + 123: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 124 124 12 12 Return FunctionEnd diff --git a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out index e914cb6615..019c0a0363 100644 --- a/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out +++ b/Test/baseResults/spv.debuginfo.scalar_types.glsl.frag.out @@ -1,7 +1,7 @@ spv.debuginfo.scalar_types.glsl.frag // Module Version 10000 // Generated by (magic number): 8000b -// Id's are bound by 159 +// Id's are bound by 161 Capability Shader Capability Float16 @@ -229,6 +229,7 @@ void main() { 156: 7(int) Constant 54 154: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 18(DebugGlobalVariable) 155 150 18 156 12 21 155 153(VAR_float16_t) 37 157:148(float16_t) Constant 0 + 160: 7(int) Constant 55 14(main): 4 Function None 5 15: Label 26: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 23(DebugScope) 17 @@ -258,5 +259,6 @@ void main() { Store 142(VAR_uint64_t) 146 158: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 156 156 12 12 Store 153(VAR_float16_t) 157 + 159: 4 ExtInst 1(NonSemantic.Shader.DebugInfo.100) 103(DebugLine) 18 160 160 12 12 Return FunctionEnd diff --git a/Test/baseResults/spv.pp.line.frag.out b/Test/baseResults/spv.pp.line.frag.out index a5fbf16c88..807ecaef08 100644 --- a/Test/baseResults/spv.pp.line.frag.out +++ b/Test/baseResults/spv.pp.line.frag.out @@ -168,6 +168,7 @@ void main() 82: 34(fvec4) CompositeConstruct 81 81 81 81 83: 34(fvec4) ExtInst 2(GLSL.std.450) 46(FMix) 73 76 82 Store 72(gl_FragColor) 83 + Line 1 107 0 Return FunctionEnd Line 7 1 20 diff --git a/Test/spv.debuginfo.implicit_br.glsl.frag b/Test/spv.debuginfo.implicit_br.glsl.frag new file mode 100644 index 0000000000..2451b77150 --- /dev/null +++ b/Test/spv.debuginfo.implicit_br.glsl.frag @@ -0,0 +1,60 @@ +#version 460 + +out int outx; +int counter = 0; + +void test_if() { + if (false) { + counter += 1; + } +} + +void test_ifelse() { + if (false) { + counter += 1; + } + else { + counter += 2; + } +} + +void test_if_compound() { + if (false) { + if (false) { + counter += 1; + } + } +} + +void test_if_compound2() { + if (false) { + if (false) { + counter += 1; + } + + counter += 2; + } +} + +void test_switch() { + switch (0) { + case 0: + counter += 1; + // implict fallthrough + case 1: + counter += 2; + break; + default: + counter += 3; + // implicit break + } +} + +void main() { + test_if(); + test_ifelse(); + test_if_compound(); + test_if_compound2(); + test_switch(); + outx = counter; +} \ No newline at end of file diff --git a/glslang/Include/intermediate.h b/glslang/Include/intermediate.h index bcce91d3ac..82de2b4def 100644 --- a/glslang/Include/intermediate.h +++ b/glslang/Include/intermediate.h @@ -1694,8 +1694,12 @@ typedef TVector TQualifierList; // class TIntermAggregate : public TIntermOperator { public: - TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), pragmaTable(nullptr) { } - TIntermAggregate(TOperator o) : TIntermOperator(o), pragmaTable(nullptr) { } + TIntermAggregate() : TIntermOperator(EOpNull), userDefined(false), pragmaTable(nullptr) { + endLoc.init(); + } + TIntermAggregate(TOperator o) : TIntermOperator(o), pragmaTable(nullptr) { + endLoc.init(); + } ~TIntermAggregate() { delete pragmaTable; } virtual TIntermAggregate* getAsAggregate() { return this; } virtual const TIntermAggregate* getAsAggregate() const { return this; } @@ -1719,6 +1723,9 @@ class TIntermAggregate : public TIntermOperator { void setSpirvInstruction(const TSpirvInstruction& inst) { spirvInst = inst; } const TSpirvInstruction& getSpirvInstruction() const { return spirvInst; } + void setEndLoc(TSourceLoc loc) { endLoc = loc; } + TSourceLoc getEndLoc() const { return endLoc; } + void setLinkType(TLinkType l) { linkType = l; } TLinkType getLinkType() const { return linkType; } protected: @@ -1733,6 +1740,10 @@ class TIntermAggregate : public TIntermOperator { TPragmaTable* pragmaTable; TSpirvInstruction spirvInst; TLinkType linkType = ELinkNone; + + // Marking the end source location of the aggregate. + // This is currently only set for a compound statement or a function body, pointing to '}'. + TSourceLoc endLoc; }; // diff --git a/glslang/MachineIndependent/glslang.y b/glslang/MachineIndependent/glslang.y index 53c5767784..35686fbc70 100644 --- a/glslang/MachineIndependent/glslang.y +++ b/glslang/MachineIndependent/glslang.y @@ -3773,8 +3773,10 @@ compound_statement --parseContext.statementNestingLevel; } RIGHT_BRACE { - if ($3 && $3->getAsAggregate()) + if ($3 && $3->getAsAggregate()) { $3->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); + $3->getAsAggregate()->setEndLoc($5.loc); + } $$ = $3; } ; @@ -3810,8 +3812,10 @@ compound_statement_no_new_scope $$ = 0; } | LEFT_BRACE statement_list RIGHT_BRACE { - if ($2 && $2->getAsAggregate()) + if ($2 && $2->getAsAggregate()) { $2->getAsAggregate()->setOperator(EOpSequence); + $2->getAsAggregate()->setEndLoc($3.loc); + } $$ = $2; } ; diff --git a/glslang/MachineIndependent/glslang_tab.cpp b/glslang/MachineIndependent/glslang_tab.cpp index 5764d39294..77571b947b 100644 --- a/glslang/MachineIndependent/glslang_tab.cpp +++ b/glslang/MachineIndependent/glslang_tab.cpp @@ -1217,20 +1217,20 @@ static const yytype_int16 yyrline[] = 3551, 3567, 3572, 3577, 3585, 3585, 3602, 3602, 3612, 3615, 3628, 3650, 3677, 3681, 3687, 3692, 3703, 3706, 3712, 3718, 3727, 3730, 3736, 3740, 3741, 3747, 3748, 3749, 3750, 3751, - 3752, 3753, 3754, 3758, 3766, 3767, 3771, 3767, 3783, 3784, - 3788, 3788, 3795, 3795, 3809, 3812, 3820, 3828, 3839, 3840, - 3844, 3847, 3854, 3861, 3865, 3873, 3877, 3890, 3893, 3900, - 3900, 3920, 3923, 3929, 3941, 3953, 3956, 3964, 3964, 3979, - 3979, 3997, 3997, 4018, 4021, 4027, 4030, 4036, 4040, 4047, - 4052, 4057, 4064, 4067, 4071, 4075, 4079, 4088, 4092, 4101, - 4104, 4107, 4115, 4115, 4157, 4162, 4165, 4170, 4173, 4178, - 4181, 4186, 4189, 4194, 4197, 4202, 4205, 4210, 4214, 4219, - 4223, 4228, 4232, 4239, 4242, 4247, 4250, 4253, 4256, 4259, - 4264, 4273, 4284, 4289, 4297, 4301, 4306, 4310, 4315, 4319, - 4324, 4328, 4335, 4338, 4343, 4346, 4349, 4352, 4357, 4360, - 4365, 4371, 4374, 4377, 4380, 4385, 4389, 4394, 4398, 4403, - 4407, 4414, 4417, 4422, 4425, 4430, 4433, 4439, 4442, 4447, - 4450 + 3752, 3753, 3754, 3758, 3766, 3767, 3771, 3767, 3785, 3786, + 3790, 3790, 3797, 3797, 3811, 3814, 3824, 3832, 3843, 3844, + 3848, 3851, 3858, 3865, 3869, 3877, 3881, 3894, 3897, 3904, + 3904, 3924, 3927, 3933, 3945, 3957, 3960, 3968, 3968, 3983, + 3983, 4001, 4001, 4022, 4025, 4031, 4034, 4040, 4044, 4051, + 4056, 4061, 4068, 4071, 4075, 4079, 4083, 4092, 4096, 4105, + 4108, 4111, 4119, 4119, 4161, 4166, 4169, 4174, 4177, 4182, + 4185, 4190, 4193, 4198, 4201, 4206, 4209, 4214, 4218, 4223, + 4227, 4232, 4236, 4243, 4246, 4251, 4254, 4257, 4260, 4263, + 4268, 4277, 4288, 4293, 4301, 4305, 4310, 4314, 4319, 4323, + 4328, 4332, 4339, 4342, 4347, 4350, 4353, 4356, 4361, 4364, + 4369, 4375, 4378, 4381, 4384, 4389, 4393, 4398, 4402, 4407, + 4411, 4418, 4421, 4426, 4429, 4434, 4437, 4443, 4446, 4451, + 4454 }; #endif @@ -11277,83 +11277,87 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); case 577: /* compound_statement: LEFT_BRACE $@5 statement_list $@6 RIGHT_BRACE */ #line 3775 "MachineIndependent/glslang.y" { - if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) + if ((yyvsp[-2].interm.intermNode) && (yyvsp[-2].interm.intermNode)->getAsAggregate()) { (yyvsp[-2].interm.intermNode)->getAsAggregate()->setOperator(parseContext.intermediate.getDebugInfo() ? EOpScope : EOpSequence); + (yyvsp[-2].interm.intermNode)->getAsAggregate()->setEndLoc((yyvsp[0].lex).loc); + } (yyval.interm.intermNode) = (yyvsp[-2].interm.intermNode); } -#line 11285 "MachineIndependent/glslang_tab.cpp" +#line 11287 "MachineIndependent/glslang_tab.cpp" break; case 578: /* statement_no_new_scope: compound_statement_no_new_scope */ -#line 3783 "MachineIndependent/glslang.y" +#line 3785 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11291 "MachineIndependent/glslang_tab.cpp" +#line 11293 "MachineIndependent/glslang_tab.cpp" break; case 579: /* statement_no_new_scope: simple_statement */ -#line 3784 "MachineIndependent/glslang.y" +#line 3786 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11297 "MachineIndependent/glslang_tab.cpp" +#line 11299 "MachineIndependent/glslang_tab.cpp" break; case 580: /* $@7: %empty */ -#line 3788 "MachineIndependent/glslang.y" +#line 3790 "MachineIndependent/glslang.y" { ++parseContext.controlFlowNestingLevel; } -#line 11305 "MachineIndependent/glslang_tab.cpp" +#line 11307 "MachineIndependent/glslang_tab.cpp" break; case 581: /* statement_scoped: $@7 compound_statement */ -#line 3791 "MachineIndependent/glslang.y" +#line 3793 "MachineIndependent/glslang.y" { --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11314 "MachineIndependent/glslang_tab.cpp" +#line 11316 "MachineIndependent/glslang_tab.cpp" break; case 582: /* $@8: %empty */ -#line 3795 "MachineIndependent/glslang.y" +#line 3797 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11324 "MachineIndependent/glslang_tab.cpp" +#line 11326 "MachineIndependent/glslang_tab.cpp" break; case 583: /* statement_scoped: $@8 simple_statement */ -#line 3800 "MachineIndependent/glslang.y" +#line 3802 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11335 "MachineIndependent/glslang_tab.cpp" +#line 11337 "MachineIndependent/glslang_tab.cpp" break; case 584: /* compound_statement_no_new_scope: LEFT_BRACE RIGHT_BRACE */ -#line 3809 "MachineIndependent/glslang.y" +#line 3811 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11343 "MachineIndependent/glslang_tab.cpp" +#line 11345 "MachineIndependent/glslang_tab.cpp" break; case 585: /* compound_statement_no_new_scope: LEFT_BRACE statement_list RIGHT_BRACE */ -#line 3812 "MachineIndependent/glslang.y" +#line 3814 "MachineIndependent/glslang.y" { - if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) + if ((yyvsp[-1].interm.intermNode) && (yyvsp[-1].interm.intermNode)->getAsAggregate()) { (yyvsp[-1].interm.intermNode)->getAsAggregate()->setOperator(EOpSequence); + (yyvsp[-1].interm.intermNode)->getAsAggregate()->setEndLoc((yyvsp[0].lex).loc); + } (yyval.interm.intermNode) = (yyvsp[-1].interm.intermNode); } -#line 11353 "MachineIndependent/glslang_tab.cpp" +#line 11357 "MachineIndependent/glslang_tab.cpp" break; case 586: /* statement_list: statement */ -#line 3820 "MachineIndependent/glslang.y" +#line 3824 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || @@ -11362,11 +11366,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = 0; // start a fresh subsequence for what's after this case } } -#line 11366 "MachineIndependent/glslang_tab.cpp" +#line 11370 "MachineIndependent/glslang_tab.cpp" break; case 587: /* statement_list: statement_list statement */ -#line 3828 "MachineIndependent/glslang.y" +#line 3832 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) && (yyvsp[0].interm.intermNode)->getAsBranchNode() && ((yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpCase || (yyvsp[0].interm.intermNode)->getAsBranchNode()->getFlowOp() == EOpDefault)) { @@ -11375,77 +11379,77 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); } else (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 11379 "MachineIndependent/glslang_tab.cpp" +#line 11383 "MachineIndependent/glslang_tab.cpp" break; case 588: /* expression_statement: SEMICOLON */ -#line 3839 "MachineIndependent/glslang.y" +#line 3843 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11385 "MachineIndependent/glslang_tab.cpp" +#line 11389 "MachineIndependent/glslang_tab.cpp" break; case 589: /* expression_statement: expression SEMICOLON */ -#line 3840 "MachineIndependent/glslang.y" +#line 3844 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = static_cast((yyvsp[-1].interm.intermTypedNode)); } -#line 11391 "MachineIndependent/glslang_tab.cpp" +#line 11395 "MachineIndependent/glslang_tab.cpp" break; case 590: /* selection_statement: selection_statement_nonattributed */ -#line 3844 "MachineIndependent/glslang.y" +#line 3848 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11399 "MachineIndependent/glslang_tab.cpp" +#line 11403 "MachineIndependent/glslang_tab.cpp" break; case 591: /* selection_statement: attribute selection_statement_nonattributed */ -#line 3847 "MachineIndependent/glslang.y" +#line 3851 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSelectionAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11409 "MachineIndependent/glslang_tab.cpp" +#line 11413 "MachineIndependent/glslang_tab.cpp" break; case 592: /* selection_statement_nonattributed: IF LEFT_PAREN expression RIGHT_PAREN selection_rest_statement */ -#line 3854 "MachineIndependent/glslang.y" +#line 3858 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-4].lex).loc, (yyvsp[-2].interm.intermTypedNode)); (yyval.interm.intermNode) = parseContext.intermediate.addSelection((yyvsp[-2].interm.intermTypedNode), (yyvsp[0].interm.nodePair), (yyvsp[-4].lex).loc); } -#line 11418 "MachineIndependent/glslang_tab.cpp" +#line 11422 "MachineIndependent/glslang_tab.cpp" break; case 593: /* selection_rest_statement: statement_scoped ELSE statement_scoped */ -#line 3861 "MachineIndependent/glslang.y" +#line 3865 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermNode); } -#line 11427 "MachineIndependent/glslang_tab.cpp" +#line 11431 "MachineIndependent/glslang_tab.cpp" break; case 594: /* selection_rest_statement: statement_scoped */ -#line 3865 "MachineIndependent/glslang.y" +#line 3869 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[0].interm.intermNode); (yyval.interm.nodePair).node2 = 0; } -#line 11436 "MachineIndependent/glslang_tab.cpp" +#line 11440 "MachineIndependent/glslang_tab.cpp" break; case 595: /* condition: expression */ -#line 3873 "MachineIndependent/glslang.y" +#line 3877 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); parseContext.boolCheck((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)); } -#line 11445 "MachineIndependent/glslang_tab.cpp" +#line 11449 "MachineIndependent/glslang_tab.cpp" break; case 596: /* condition: fully_specified_type IDENTIFIER EQUAL initializer */ -#line 3877 "MachineIndependent/glslang.y" +#line 3881 "MachineIndependent/glslang.y" { parseContext.boolCheck((yyvsp[-2].lex).loc, (yyvsp[-3].interm.type)); @@ -11456,29 +11460,29 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermTypedNode) = 0; } -#line 11460 "MachineIndependent/glslang_tab.cpp" +#line 11464 "MachineIndependent/glslang_tab.cpp" break; case 597: /* switch_statement: switch_statement_nonattributed */ -#line 3890 "MachineIndependent/glslang.y" +#line 3894 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11468 "MachineIndependent/glslang_tab.cpp" +#line 11472 "MachineIndependent/glslang_tab.cpp" break; case 598: /* switch_statement: attribute switch_statement_nonattributed */ -#line 3893 "MachineIndependent/glslang.y" +#line 3897 "MachineIndependent/glslang.y" { parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 1, &E_GL_EXT_control_flow_attributes, "attribute"); parseContext.handleSwitchAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11478 "MachineIndependent/glslang_tab.cpp" +#line 11482 "MachineIndependent/glslang_tab.cpp" break; case 599: /* $@9: %empty */ -#line 3900 "MachineIndependent/glslang.y" +#line 3904 "MachineIndependent/glslang.y" { // start new switch sequence on the switch stack ++parseContext.controlFlowNestingLevel; @@ -11487,11 +11491,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.switchLevel.push_back(parseContext.statementNestingLevel); parseContext.symbolTable.push(); } -#line 11491 "MachineIndependent/glslang_tab.cpp" +#line 11495 "MachineIndependent/glslang_tab.cpp" break; case 600: /* switch_statement_nonattributed: SWITCH LEFT_PAREN expression RIGHT_PAREN $@9 LEFT_BRACE switch_statement_list RIGHT_BRACE */ -#line 3908 "MachineIndependent/glslang.y" +#line 3912 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.addSwitch((yyvsp[-7].lex).loc, (yyvsp[-5].interm.intermTypedNode), (yyvsp[-1].interm.intermNode) ? (yyvsp[-1].interm.intermNode)->getAsAggregate() : 0); delete parseContext.switchSequenceStack.back(); @@ -11501,27 +11505,27 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11505 "MachineIndependent/glslang_tab.cpp" +#line 11509 "MachineIndependent/glslang_tab.cpp" break; case 601: /* switch_statement_list: %empty */ -#line 3920 "MachineIndependent/glslang.y" +#line 3924 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; } -#line 11513 "MachineIndependent/glslang_tab.cpp" +#line 11517 "MachineIndependent/glslang_tab.cpp" break; case 602: /* switch_statement_list: statement_list */ -#line 3923 "MachineIndependent/glslang.y" +#line 3927 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11521 "MachineIndependent/glslang_tab.cpp" +#line 11525 "MachineIndependent/glslang_tab.cpp" break; case 603: /* case_label: CASE expression COLON */ -#line 3929 "MachineIndependent/glslang.y" +#line 3933 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11534,11 +11538,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpCase, (yyvsp[-1].interm.intermTypedNode), (yyvsp[-2].lex).loc); } } -#line 11538 "MachineIndependent/glslang_tab.cpp" +#line 11542 "MachineIndependent/glslang_tab.cpp" break; case 604: /* case_label: DEFAULT COLON */ -#line 3941 "MachineIndependent/glslang.y" +#line 3945 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = 0; if (parseContext.switchLevel.size() == 0) @@ -11548,30 +11552,30 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); else (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpDefault, (yyvsp[-1].lex).loc); } -#line 11552 "MachineIndependent/glslang_tab.cpp" +#line 11556 "MachineIndependent/glslang_tab.cpp" break; case 605: /* iteration_statement: iteration_statement_nonattributed */ -#line 3953 "MachineIndependent/glslang.y" +#line 3957 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11560 "MachineIndependent/glslang_tab.cpp" +#line 11564 "MachineIndependent/glslang_tab.cpp" break; case 606: /* iteration_statement: attribute iteration_statement_nonattributed */ -#line 3956 "MachineIndependent/glslang.y" +#line 3960 "MachineIndependent/glslang.y" { const char * extensions[2] = { E_GL_EXT_control_flow_attributes, E_GL_EXT_control_flow_attributes2 }; parseContext.requireExtensions((yyvsp[0].interm.intermNode)->getLoc(), 2, extensions, "attribute"); parseContext.handleLoopAttributes(*(yyvsp[-1].interm.attributes), (yyvsp[0].interm.intermNode)); (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11571 "MachineIndependent/glslang_tab.cpp" +#line 11575 "MachineIndependent/glslang_tab.cpp" break; case 607: /* $@10: %empty */ -#line 3964 "MachineIndependent/glslang.y" +#line 3968 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-1].lex).loc, "while loops not available", "limitation", ""); @@ -11580,11 +11584,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11584 "MachineIndependent/glslang_tab.cpp" +#line 11588 "MachineIndependent/glslang_tab.cpp" break; case 608: /* iteration_statement_nonattributed: WHILE LEFT_PAREN $@10 condition RIGHT_PAREN statement_no_new_scope */ -#line 3972 "MachineIndependent/glslang.y" +#line 3976 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.addLoop((yyvsp[0].interm.intermNode), (yyvsp[-2].interm.intermTypedNode), 0, true, (yyvsp[-5].lex).loc); @@ -11592,22 +11596,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11596 "MachineIndependent/glslang_tab.cpp" +#line 11600 "MachineIndependent/glslang_tab.cpp" break; case 609: /* $@11: %empty */ -#line 3979 "MachineIndependent/glslang.y" +#line 3983 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11607 "MachineIndependent/glslang_tab.cpp" +#line 11611 "MachineIndependent/glslang_tab.cpp" break; case 610: /* iteration_statement_nonattributed: DO $@11 statement WHILE LEFT_PAREN expression RIGHT_PAREN SEMICOLON */ -#line 3985 "MachineIndependent/glslang.y" +#line 3989 "MachineIndependent/glslang.y" { if (! parseContext.limits.whileLoops) parseContext.error((yyvsp[-7].lex).loc, "do-while loops not available", "limitation", ""); @@ -11620,22 +11624,22 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11624 "MachineIndependent/glslang_tab.cpp" +#line 11628 "MachineIndependent/glslang_tab.cpp" break; case 611: /* $@12: %empty */ -#line 3997 "MachineIndependent/glslang.y" +#line 4001 "MachineIndependent/glslang.y" { parseContext.symbolTable.push(); ++parseContext.loopNestingLevel; ++parseContext.statementNestingLevel; ++parseContext.controlFlowNestingLevel; } -#line 11635 "MachineIndependent/glslang_tab.cpp" +#line 11639 "MachineIndependent/glslang_tab.cpp" break; case 612: /* iteration_statement_nonattributed: FOR LEFT_PAREN $@12 for_init_statement for_rest_statement RIGHT_PAREN statement_no_new_scope */ -#line 4003 "MachineIndependent/glslang.y" +#line 4007 "MachineIndependent/glslang.y" { parseContext.symbolTable.pop(&parseContext.defaultPrecision[0]); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[-3].interm.intermNode), (yyvsp[-5].lex).loc); @@ -11648,81 +11652,81 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; --parseContext.controlFlowNestingLevel; } -#line 11652 "MachineIndependent/glslang_tab.cpp" +#line 11656 "MachineIndependent/glslang_tab.cpp" break; case 613: /* for_init_statement: expression_statement */ -#line 4018 "MachineIndependent/glslang.y" +#line 4022 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11660 "MachineIndependent/glslang_tab.cpp" +#line 11664 "MachineIndependent/glslang_tab.cpp" break; case 614: /* for_init_statement: declaration_statement */ -#line 4021 "MachineIndependent/glslang.y" +#line 4025 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11668 "MachineIndependent/glslang_tab.cpp" +#line 11672 "MachineIndependent/glslang_tab.cpp" break; case 615: /* conditionopt: condition */ -#line 4027 "MachineIndependent/glslang.y" +#line 4031 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = (yyvsp[0].interm.intermTypedNode); } -#line 11676 "MachineIndependent/glslang_tab.cpp" +#line 11680 "MachineIndependent/glslang_tab.cpp" break; case 616: /* conditionopt: %empty */ -#line 4030 "MachineIndependent/glslang.y" +#line 4034 "MachineIndependent/glslang.y" { (yyval.interm.intermTypedNode) = 0; } -#line 11684 "MachineIndependent/glslang_tab.cpp" +#line 11688 "MachineIndependent/glslang_tab.cpp" break; case 617: /* for_rest_statement: conditionopt SEMICOLON */ -#line 4036 "MachineIndependent/glslang.y" +#line 4040 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-1].interm.intermTypedNode); (yyval.interm.nodePair).node2 = 0; } -#line 11693 "MachineIndependent/glslang_tab.cpp" +#line 11697 "MachineIndependent/glslang_tab.cpp" break; case 618: /* for_rest_statement: conditionopt SEMICOLON expression */ -#line 4040 "MachineIndependent/glslang.y" +#line 4044 "MachineIndependent/glslang.y" { (yyval.interm.nodePair).node1 = (yyvsp[-2].interm.intermTypedNode); (yyval.interm.nodePair).node2 = (yyvsp[0].interm.intermTypedNode); } -#line 11702 "MachineIndependent/glslang_tab.cpp" +#line 11706 "MachineIndependent/glslang_tab.cpp" break; case 619: /* jump_statement: CONTINUE SEMICOLON */ -#line 4047 "MachineIndependent/glslang.y" +#line 4051 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel <= 0) parseContext.error((yyvsp[-1].lex).loc, "continue statement only allowed in loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpContinue, (yyvsp[-1].lex).loc); } -#line 11712 "MachineIndependent/glslang_tab.cpp" +#line 11716 "MachineIndependent/glslang_tab.cpp" break; case 620: /* jump_statement: BREAK SEMICOLON */ -#line 4052 "MachineIndependent/glslang.y" +#line 4056 "MachineIndependent/glslang.y" { if (parseContext.loopNestingLevel + parseContext.switchSequenceStack.size() <= 0) parseContext.error((yyvsp[-1].lex).loc, "break statement only allowed in switch and loops", "", ""); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpBreak, (yyvsp[-1].lex).loc); } -#line 11722 "MachineIndependent/glslang_tab.cpp" +#line 11726 "MachineIndependent/glslang_tab.cpp" break; case 621: /* jump_statement: RETURN SEMICOLON */ -#line 4057 "MachineIndependent/glslang.y" +#line 4061 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpReturn, (yyvsp[-1].lex).loc); if (parseContext.currentFunctionType->getBasicType() != EbtVoid) @@ -11730,101 +11734,101 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); if (parseContext.inMain) parseContext.postEntryPointReturn = true; } -#line 11734 "MachineIndependent/glslang_tab.cpp" +#line 11738 "MachineIndependent/glslang_tab.cpp" break; case 622: /* jump_statement: RETURN expression SEMICOLON */ -#line 4064 "MachineIndependent/glslang.y" +#line 4068 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.handleReturnValue((yyvsp[-2].lex).loc, (yyvsp[-1].interm.intermTypedNode)); } -#line 11742 "MachineIndependent/glslang_tab.cpp" +#line 11746 "MachineIndependent/glslang_tab.cpp" break; case 623: /* jump_statement: DISCARD SEMICOLON */ -#line 4067 "MachineIndependent/glslang.y" +#line 4071 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "discard"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpKill, (yyvsp[-1].lex).loc); } -#line 11751 "MachineIndependent/glslang_tab.cpp" +#line 11755 "MachineIndependent/glslang_tab.cpp" break; case 624: /* jump_statement: TERMINATE_INVOCATION SEMICOLON */ -#line 4071 "MachineIndependent/glslang.y" +#line 4075 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangFragment, "terminateInvocation"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateInvocation, (yyvsp[-1].lex).loc); } -#line 11760 "MachineIndependent/glslang_tab.cpp" +#line 11764 "MachineIndependent/glslang_tab.cpp" break; case 625: /* jump_statement: TERMINATE_RAY SEMICOLON */ -#line 4075 "MachineIndependent/glslang.y" +#line 4079 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "terminateRayEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpTerminateRayKHR, (yyvsp[-1].lex).loc); } -#line 11769 "MachineIndependent/glslang_tab.cpp" +#line 11773 "MachineIndependent/glslang_tab.cpp" break; case 626: /* jump_statement: IGNORE_INTERSECTION SEMICOLON */ -#line 4079 "MachineIndependent/glslang.y" +#line 4083 "MachineIndependent/glslang.y" { parseContext.requireStage((yyvsp[-1].lex).loc, EShLangAnyHit, "ignoreIntersectionEXT"); (yyval.interm.intermNode) = parseContext.intermediate.addBranch(EOpIgnoreIntersectionKHR, (yyvsp[-1].lex).loc); } -#line 11778 "MachineIndependent/glslang_tab.cpp" +#line 11782 "MachineIndependent/glslang_tab.cpp" break; case 627: /* translation_unit: external_declaration */ -#line 4088 "MachineIndependent/glslang.y" +#line 4092 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } -#line 11787 "MachineIndependent/glslang_tab.cpp" +#line 11791 "MachineIndependent/glslang_tab.cpp" break; case 628: /* translation_unit: translation_unit external_declaration */ -#line 4092 "MachineIndependent/glslang.y" +#line 4096 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermNode) != nullptr) { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-1].interm.intermNode), (yyvsp[0].interm.intermNode)); parseContext.intermediate.setTreeRoot((yyval.interm.intermNode)); } } -#line 11798 "MachineIndependent/glslang_tab.cpp" +#line 11802 "MachineIndependent/glslang_tab.cpp" break; case 629: /* external_declaration: function_definition */ -#line 4101 "MachineIndependent/glslang.y" +#line 4105 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11806 "MachineIndependent/glslang_tab.cpp" +#line 11810 "MachineIndependent/glslang_tab.cpp" break; case 630: /* external_declaration: declaration */ -#line 4104 "MachineIndependent/glslang.y" +#line 4108 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = (yyvsp[0].interm.intermNode); } -#line 11814 "MachineIndependent/glslang_tab.cpp" +#line 11818 "MachineIndependent/glslang_tab.cpp" break; case 631: /* external_declaration: SEMICOLON */ -#line 4107 "MachineIndependent/glslang.y" +#line 4111 "MachineIndependent/glslang.y" { parseContext.requireProfile((yyvsp[0].lex).loc, ~EEsProfile, "extraneous semicolon"); parseContext.profileRequires((yyvsp[0].lex).loc, ~EEsProfile, 460, nullptr, "extraneous semicolon"); (yyval.interm.intermNode) = nullptr; } -#line 11824 "MachineIndependent/glslang_tab.cpp" +#line 11828 "MachineIndependent/glslang_tab.cpp" break; case 632: /* $@13: %empty */ -#line 4115 "MachineIndependent/glslang.y" +#line 4119 "MachineIndependent/glslang.y" { (yyvsp[0].interm).function = parseContext.handleFunctionDeclarator((yyvsp[0].interm).loc, *(yyvsp[0].interm).function, false /* not prototype */); (yyvsp[0].interm).intermNode = parseContext.handleFunctionDefinition((yyvsp[0].interm).loc, *(yyvsp[0].interm).function); @@ -11837,11 +11841,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); ++parseContext.statementNestingLevel; } } -#line 11841 "MachineIndependent/glslang_tab.cpp" +#line 11845 "MachineIndependent/glslang_tab.cpp" break; case 633: /* function_definition: function_prototype $@13 compound_statement_no_new_scope */ -#line 4127 "MachineIndependent/glslang.y" +#line 4131 "MachineIndependent/glslang.y" { // May be best done as post process phase on intermediate code if (parseContext.currentFunctionType->getBasicType() != EbtVoid && ! parseContext.functionReturnsValue) @@ -11869,228 +11873,228 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); --parseContext.statementNestingLevel; } } -#line 11873 "MachineIndependent/glslang_tab.cpp" +#line 11877 "MachineIndependent/glslang_tab.cpp" break; case 634: /* attribute: LEFT_BRACKET LEFT_BRACKET attribute_list RIGHT_BRACKET RIGHT_BRACKET */ -#line 4157 "MachineIndependent/glslang.y" +#line 4161 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[-2].interm.attributes); } -#line 11881 "MachineIndependent/glslang_tab.cpp" +#line 11885 "MachineIndependent/glslang_tab.cpp" break; case 635: /* attribute_list: single_attribute */ -#line 4162 "MachineIndependent/glslang.y" +#line 4166 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = (yyvsp[0].interm.attributes); } -#line 11889 "MachineIndependent/glslang_tab.cpp" +#line 11893 "MachineIndependent/glslang_tab.cpp" break; case 636: /* attribute_list: attribute_list COMMA single_attribute */ -#line 4165 "MachineIndependent/glslang.y" +#line 4169 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.mergeAttributes((yyvsp[-2].interm.attributes), (yyvsp[0].interm.attributes)); } -#line 11897 "MachineIndependent/glslang_tab.cpp" +#line 11901 "MachineIndependent/glslang_tab.cpp" break; case 637: /* single_attribute: IDENTIFIER */ -#line 4170 "MachineIndependent/glslang.y" +#line 4174 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[0].lex).string); } -#line 11905 "MachineIndependent/glslang_tab.cpp" +#line 11909 "MachineIndependent/glslang_tab.cpp" break; case 638: /* single_attribute: IDENTIFIER LEFT_PAREN constant_expression RIGHT_PAREN */ -#line 4173 "MachineIndependent/glslang.y" +#line 4177 "MachineIndependent/glslang.y" { (yyval.interm.attributes) = parseContext.makeAttributes(*(yyvsp[-3].lex).string, (yyvsp[-1].interm.intermTypedNode)); } -#line 11913 "MachineIndependent/glslang_tab.cpp" +#line 11917 "MachineIndependent/glslang_tab.cpp" break; case 639: /* spirv_requirements_list: spirv_requirements_parameter */ -#line 4178 "MachineIndependent/glslang.y" +#line 4182 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = (yyvsp[0].interm.spirvReq); } -#line 11921 "MachineIndependent/glslang_tab.cpp" +#line 11925 "MachineIndependent/glslang_tab.cpp" break; case 640: /* spirv_requirements_list: spirv_requirements_list COMMA spirv_requirements_parameter */ -#line 4181 "MachineIndependent/glslang.y" +#line 4185 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.mergeSpirvRequirements((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvReq), (yyvsp[0].interm.spirvReq)); } -#line 11929 "MachineIndependent/glslang_tab.cpp" +#line 11933 "MachineIndependent/glslang_tab.cpp" break; case 641: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_extension_list RIGHT_BRACKET */ -#line 4186 "MachineIndependent/glslang.y" +#line 4190 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, (yyvsp[-1].interm.intermNode)->getAsAggregate(), nullptr); } -#line 11937 "MachineIndependent/glslang_tab.cpp" +#line 11941 "MachineIndependent/glslang_tab.cpp" break; case 642: /* spirv_requirements_parameter: IDENTIFIER EQUAL LEFT_BRACKET spirv_capability_list RIGHT_BRACKET */ -#line 4189 "MachineIndependent/glslang.y" +#line 4193 "MachineIndependent/glslang.y" { (yyval.interm.spirvReq) = parseContext.makeSpirvRequirement((yyvsp[-3].lex).loc, *(yyvsp[-4].lex).string, nullptr, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 11945 "MachineIndependent/glslang_tab.cpp" +#line 11949 "MachineIndependent/glslang_tab.cpp" break; case 643: /* spirv_extension_list: STRING_LITERAL */ -#line 4194 "MachineIndependent/glslang.y" +#line 4198 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11953 "MachineIndependent/glslang_tab.cpp" +#line 11957 "MachineIndependent/glslang_tab.cpp" break; case 644: /* spirv_extension_list: spirv_extension_list COMMA STRING_LITERAL */ -#line 4197 "MachineIndependent/glslang.y" +#line 4201 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 11961 "MachineIndependent/glslang_tab.cpp" +#line 11965 "MachineIndependent/glslang_tab.cpp" break; case 645: /* spirv_capability_list: INTCONSTANT */ -#line 4202 "MachineIndependent/glslang.y" +#line 4206 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate(parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11969 "MachineIndependent/glslang_tab.cpp" +#line 11973 "MachineIndependent/glslang_tab.cpp" break; case 646: /* spirv_capability_list: spirv_capability_list COMMA INTCONSTANT */ -#line 4205 "MachineIndependent/glslang.y" +#line 4209 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true)); } -#line 11977 "MachineIndependent/glslang_tab.cpp" +#line 11981 "MachineIndependent/glslang_tab.cpp" break; case 647: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4210 "MachineIndependent/glslang.y" +#line 4214 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11986 "MachineIndependent/glslang_tab.cpp" +#line 11990 "MachineIndependent/glslang_tab.cpp" break; case 648: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4214 "MachineIndependent/glslang.y" +#line 4218 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-1].lex).i); (yyval.interm.intermNode) = 0; } -#line 11996 "MachineIndependent/glslang_tab.cpp" +#line 12000 "MachineIndependent/glslang_tab.cpp" break; case 649: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4219 "MachineIndependent/glslang.y" +#line 4223 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12005 "MachineIndependent/glslang_tab.cpp" +#line 12009 "MachineIndependent/glslang_tab.cpp" break; case 650: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_parameter_list RIGHT_PAREN */ -#line 4223 "MachineIndependent/glslang.y" +#line 4227 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionMode((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12015 "MachineIndependent/glslang_tab.cpp" +#line 12019 "MachineIndependent/glslang_tab.cpp" break; case 651: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4228 "MachineIndependent/glslang.y" +#line 4232 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12024 "MachineIndependent/glslang_tab.cpp" +#line 12028 "MachineIndependent/glslang_tab.cpp" break; case 652: /* spirv_execution_mode_qualifier: SPIRV_EXECUTION_MODE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_execution_mode_id_parameter_list RIGHT_PAREN */ -#line 4232 "MachineIndependent/glslang.y" +#line 4236 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); parseContext.intermediate.insertSpirvExecutionModeId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); (yyval.interm.intermNode) = 0; } -#line 12034 "MachineIndependent/glslang_tab.cpp" +#line 12038 "MachineIndependent/glslang_tab.cpp" break; case 653: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter */ -#line 4239 "MachineIndependent/glslang.y" +#line 4243 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12042 "MachineIndependent/glslang_tab.cpp" +#line 12046 "MachineIndependent/glslang_tab.cpp" break; case 654: /* spirv_execution_mode_parameter_list: spirv_execution_mode_parameter_list COMMA spirv_execution_mode_parameter */ -#line 4242 "MachineIndependent/glslang.y" +#line 4246 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12050 "MachineIndependent/glslang_tab.cpp" +#line 12054 "MachineIndependent/glslang_tab.cpp" break; case 655: /* spirv_execution_mode_parameter: FLOATCONSTANT */ -#line 4247 "MachineIndependent/glslang.y" +#line 4251 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12058 "MachineIndependent/glslang_tab.cpp" +#line 12062 "MachineIndependent/glslang_tab.cpp" break; case 656: /* spirv_execution_mode_parameter: INTCONSTANT */ -#line 4250 "MachineIndependent/glslang.y" +#line 4254 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12066 "MachineIndependent/glslang_tab.cpp" +#line 12070 "MachineIndependent/glslang_tab.cpp" break; case 657: /* spirv_execution_mode_parameter: UINTCONSTANT */ -#line 4253 "MachineIndependent/glslang.y" +#line 4257 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12074 "MachineIndependent/glslang_tab.cpp" +#line 12078 "MachineIndependent/glslang_tab.cpp" break; case 658: /* spirv_execution_mode_parameter: BOOLCONSTANT */ -#line 4256 "MachineIndependent/glslang.y" +#line 4260 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12082 "MachineIndependent/glslang_tab.cpp" +#line 12086 "MachineIndependent/glslang_tab.cpp" break; case 659: /* spirv_execution_mode_parameter: STRING_LITERAL */ -#line 4259 "MachineIndependent/glslang.y" +#line 4263 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true); } -#line 12090 "MachineIndependent/glslang_tab.cpp" +#line 12094 "MachineIndependent/glslang_tab.cpp" break; case 660: /* spirv_execution_mode_id_parameter_list: constant_expression */ -#line 4264 "MachineIndependent/glslang.y" +#line 4268 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12100,11 +12104,11 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermTypedNode)); } -#line 12104 "MachineIndependent/glslang_tab.cpp" +#line 12108 "MachineIndependent/glslang_tab.cpp" break; case 661: /* spirv_execution_mode_id_parameter_list: spirv_execution_mode_id_parameter_list COMMA constant_expression */ -#line 4273 "MachineIndependent/glslang.y" +#line 4277 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtFloat && (yyvsp[0].interm.intermTypedNode)->getBasicType() != EbtInt && @@ -12114,351 +12118,351 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "this type not allowed", (yyvsp[0].interm.intermTypedNode)->getType().getBasicString(), ""); (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermTypedNode)); } -#line 12118 "MachineIndependent/glslang_tab.cpp" +#line 12122 "MachineIndependent/glslang_tab.cpp" break; case 662: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4284 "MachineIndependent/glslang.y" +#line 4288 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12128 "MachineIndependent/glslang_tab.cpp" +#line 12132 "MachineIndependent/glslang_tab.cpp" break; case 663: /* spirv_storage_class_qualifier: SPIRV_STORAGE_CLASS LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4289 "MachineIndependent/glslang.y" +#line 4293 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.storage = EvqSpirvStorageClass; (yyval.interm.type).qualifier.spirvStorageClass = (yyvsp[-1].lex).i; } -#line 12139 "MachineIndependent/glslang_tab.cpp" +#line 12143 "MachineIndependent/glslang_tab.cpp" break; case 664: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT RIGHT_PAREN */ -#line 4297 "MachineIndependent/glslang.y" +#line 4301 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12148 "MachineIndependent/glslang_tab.cpp" +#line 12152 "MachineIndependent/glslang_tab.cpp" break; case 665: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT RIGHT_PAREN */ -#line 4301 "MachineIndependent/glslang.y" +#line 4305 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-1].lex).i); } -#line 12158 "MachineIndependent/glslang_tab.cpp" +#line 12162 "MachineIndependent/glslang_tab.cpp" break; case 666: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4306 "MachineIndependent/glslang.y" +#line 4310 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12167 "MachineIndependent/glslang_tab.cpp" +#line 12171 "MachineIndependent/glslang_tab.cpp" break; case 667: /* spirv_decorate_qualifier: SPIRV_DECORATE LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_parameter_list RIGHT_PAREN */ -#line 4310 "MachineIndependent/glslang.y" +#line 4314 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorate((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12177 "MachineIndependent/glslang_tab.cpp" +#line 12181 "MachineIndependent/glslang_tab.cpp" break; case 668: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4315 "MachineIndependent/glslang.y" +#line 4319 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12186 "MachineIndependent/glslang_tab.cpp" +#line 12190 "MachineIndependent/glslang_tab.cpp" break; case 669: /* spirv_decorate_qualifier: SPIRV_DECORATE_ID LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_id_parameter_list RIGHT_PAREN */ -#line 4319 "MachineIndependent/glslang.y" +#line 4323 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateId((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12196 "MachineIndependent/glslang_tab.cpp" +#line 12200 "MachineIndependent/glslang_tab.cpp" break; case 670: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4324 "MachineIndependent/glslang.y" +#line 4328 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12205 "MachineIndependent/glslang_tab.cpp" +#line 12209 "MachineIndependent/glslang_tab.cpp" break; case 671: /* spirv_decorate_qualifier: SPIRV_DECORATE_STRING LEFT_PAREN spirv_requirements_list COMMA INTCONSTANT COMMA spirv_decorate_string_parameter_list RIGHT_PAREN */ -#line 4328 "MachineIndependent/glslang.y" +#line 4332 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).qualifier.setSpirvDecorateString((yyvsp[-3].lex).i, (yyvsp[-1].interm.intermNode)->getAsAggregate()); } -#line 12215 "MachineIndependent/glslang_tab.cpp" +#line 12219 "MachineIndependent/glslang_tab.cpp" break; case 672: /* spirv_decorate_parameter_list: spirv_decorate_parameter */ -#line 4335 "MachineIndependent/glslang.y" +#line 4339 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12223 "MachineIndependent/glslang_tab.cpp" +#line 12227 "MachineIndependent/glslang_tab.cpp" break; case 673: /* spirv_decorate_parameter_list: spirv_decorate_parameter_list COMMA spirv_decorate_parameter */ -#line 4338 "MachineIndependent/glslang.y" +#line 4342 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12231 "MachineIndependent/glslang_tab.cpp" +#line 12235 "MachineIndependent/glslang_tab.cpp" break; case 674: /* spirv_decorate_parameter: FLOATCONSTANT */ -#line 4343 "MachineIndependent/glslang.y" +#line 4347 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12239 "MachineIndependent/glslang_tab.cpp" +#line 12243 "MachineIndependent/glslang_tab.cpp" break; case 675: /* spirv_decorate_parameter: INTCONSTANT */ -#line 4346 "MachineIndependent/glslang.y" +#line 4350 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12247 "MachineIndependent/glslang_tab.cpp" +#line 12251 "MachineIndependent/glslang_tab.cpp" break; case 676: /* spirv_decorate_parameter: UINTCONSTANT */ -#line 4349 "MachineIndependent/glslang.y" +#line 4353 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12255 "MachineIndependent/glslang_tab.cpp" +#line 12259 "MachineIndependent/glslang_tab.cpp" break; case 677: /* spirv_decorate_parameter: BOOLCONSTANT */ -#line 4352 "MachineIndependent/glslang.y" +#line 4356 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12263 "MachineIndependent/glslang_tab.cpp" +#line 12267 "MachineIndependent/glslang_tab.cpp" break; case 678: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter */ -#line 4357 "MachineIndependent/glslang.y" +#line 4361 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate((yyvsp[0].interm.intermNode)); } -#line 12271 "MachineIndependent/glslang_tab.cpp" +#line 12275 "MachineIndependent/glslang_tab.cpp" break; case 679: /* spirv_decorate_id_parameter_list: spirv_decorate_id_parameter_list COMMA spirv_decorate_id_parameter */ -#line 4360 "MachineIndependent/glslang.y" +#line 4364 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), (yyvsp[0].interm.intermNode)); } -#line 12279 "MachineIndependent/glslang_tab.cpp" +#line 12283 "MachineIndependent/glslang_tab.cpp" break; case 680: /* spirv_decorate_id_parameter: variable_identifier */ -#line 4365 "MachineIndependent/glslang.y" +#line 4369 "MachineIndependent/glslang.y" { if ((yyvsp[0].interm.intermTypedNode)->getAsConstantUnion() || (yyvsp[0].interm.intermTypedNode)->getAsSymbolNode()) (yyval.interm.intermNode) = (yyvsp[0].interm.intermTypedNode); else parseContext.error((yyvsp[0].interm.intermTypedNode)->getLoc(), "only allow constants or variables which are not elements of a composite", "", ""); } -#line 12290 "MachineIndependent/glslang_tab.cpp" +#line 12294 "MachineIndependent/glslang_tab.cpp" break; case 681: /* spirv_decorate_id_parameter: FLOATCONSTANT */ -#line 4371 "MachineIndependent/glslang.y" +#line 4375 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).d, EbtFloat, (yyvsp[0].lex).loc, true); } -#line 12298 "MachineIndependent/glslang_tab.cpp" +#line 12302 "MachineIndependent/glslang_tab.cpp" break; case 682: /* spirv_decorate_id_parameter: INTCONSTANT */ -#line 4374 "MachineIndependent/glslang.y" +#line 4378 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).i, (yyvsp[0].lex).loc, true); } -#line 12306 "MachineIndependent/glslang_tab.cpp" +#line 12310 "MachineIndependent/glslang_tab.cpp" break; case 683: /* spirv_decorate_id_parameter: UINTCONSTANT */ -#line 4377 "MachineIndependent/glslang.y" +#line 4381 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).u, (yyvsp[0].lex).loc, true); } -#line 12314 "MachineIndependent/glslang_tab.cpp" +#line 12318 "MachineIndependent/glslang_tab.cpp" break; case 684: /* spirv_decorate_id_parameter: BOOLCONSTANT */ -#line 4380 "MachineIndependent/glslang.y" +#line 4384 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.addConstantUnion((yyvsp[0].lex).b, (yyvsp[0].lex).loc, true); } -#line 12322 "MachineIndependent/glslang_tab.cpp" +#line 12326 "MachineIndependent/glslang_tab.cpp" break; case 685: /* spirv_decorate_string_parameter_list: STRING_LITERAL */ -#line 4385 "MachineIndependent/glslang.y" +#line 4389 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.makeAggregate( parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12331 "MachineIndependent/glslang_tab.cpp" +#line 12335 "MachineIndependent/glslang_tab.cpp" break; case 686: /* spirv_decorate_string_parameter_list: spirv_decorate_string_parameter_list COMMA STRING_LITERAL */ -#line 4389 "MachineIndependent/glslang.y" +#line 4393 "MachineIndependent/glslang.y" { (yyval.interm.intermNode) = parseContext.intermediate.growAggregate((yyvsp[-2].interm.intermNode), parseContext.intermediate.addConstantUnion((yyvsp[0].lex).string, (yyvsp[0].lex).loc, true)); } -#line 12339 "MachineIndependent/glslang_tab.cpp" +#line 12343 "MachineIndependent/glslang_tab.cpp" break; case 687: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4394 "MachineIndependent/glslang.y" +#line 4398 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12348 "MachineIndependent/glslang_tab.cpp" +#line 12352 "MachineIndependent/glslang_tab.cpp" break; case 688: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list COMMA spirv_type_parameter_list RIGHT_PAREN */ -#line 4398 "MachineIndependent/glslang.y" +#line 4402 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-7].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-5].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-3].interm.spirvInst), (yyvsp[-1].interm.spirvTypeParams)); } -#line 12358 "MachineIndependent/glslang_tab.cpp" +#line 12362 "MachineIndependent/glslang_tab.cpp" break; case 689: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4403 "MachineIndependent/glslang.y" +#line 4407 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-3].lex).loc, parseContext.symbolTable.atGlobalLevel()); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12367 "MachineIndependent/glslang_tab.cpp" +#line 12371 "MachineIndependent/glslang_tab.cpp" break; case 690: /* spirv_type_specifier: SPIRV_TYPE LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4407 "MachineIndependent/glslang.y" +#line 4411 "MachineIndependent/glslang.y" { (yyval.interm.type).init((yyvsp[-5].lex).loc, parseContext.symbolTable.atGlobalLevel()); parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.type).setSpirvType(*(yyvsp[-1].interm.spirvInst)); } -#line 12377 "MachineIndependent/glslang_tab.cpp" +#line 12381 "MachineIndependent/glslang_tab.cpp" break; case 691: /* spirv_type_parameter_list: spirv_type_parameter */ -#line 4414 "MachineIndependent/glslang.y" +#line 4418 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = (yyvsp[0].interm.spirvTypeParams); } -#line 12385 "MachineIndependent/glslang_tab.cpp" +#line 12389 "MachineIndependent/glslang_tab.cpp" break; case 692: /* spirv_type_parameter_list: spirv_type_parameter_list COMMA spirv_type_parameter */ -#line 4417 "MachineIndependent/glslang.y" +#line 4421 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.mergeSpirvTypeParameters((yyvsp[-2].interm.spirvTypeParams), (yyvsp[0].interm.spirvTypeParams)); } -#line 12393 "MachineIndependent/glslang_tab.cpp" +#line 12397 "MachineIndependent/glslang_tab.cpp" break; case 693: /* spirv_type_parameter: constant_expression */ -#line 4422 "MachineIndependent/glslang.y" +#line 4426 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.intermTypedNode)->getLoc(), (yyvsp[0].interm.intermTypedNode)->getAsConstantUnion()); } -#line 12401 "MachineIndependent/glslang_tab.cpp" +#line 12405 "MachineIndependent/glslang_tab.cpp" break; case 694: /* spirv_type_parameter: type_specifier_nonarray */ -#line 4425 "MachineIndependent/glslang.y" +#line 4429 "MachineIndependent/glslang.y" { (yyval.interm.spirvTypeParams) = parseContext.makeSpirvTypeParameters((yyvsp[0].interm.type).loc, (yyvsp[0].interm.type)); } -#line 12409 "MachineIndependent/glslang_tab.cpp" +#line 12413 "MachineIndependent/glslang_tab.cpp" break; case 695: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4430 "MachineIndependent/glslang.y" +#line 4434 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12417 "MachineIndependent/glslang_tab.cpp" +#line 12421 "MachineIndependent/glslang_tab.cpp" break; case 696: /* spirv_instruction_qualifier: SPIRV_INSTRUCTION LEFT_PAREN spirv_requirements_list COMMA spirv_instruction_qualifier_list RIGHT_PAREN */ -#line 4433 "MachineIndependent/glslang.y" +#line 4437 "MachineIndependent/glslang.y" { parseContext.intermediate.insertSpirvRequirement((yyvsp[-3].interm.spirvReq)); (yyval.interm.spirvInst) = (yyvsp[-1].interm.spirvInst); } -#line 12426 "MachineIndependent/glslang_tab.cpp" +#line 12430 "MachineIndependent/glslang_tab.cpp" break; case 697: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_id */ -#line 4439 "MachineIndependent/glslang.y" +#line 4443 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = (yyvsp[0].interm.spirvInst); } -#line 12434 "MachineIndependent/glslang_tab.cpp" +#line 12438 "MachineIndependent/glslang_tab.cpp" break; case 698: /* spirv_instruction_qualifier_list: spirv_instruction_qualifier_list COMMA spirv_instruction_qualifier_id */ -#line 4442 "MachineIndependent/glslang.y" +#line 4446 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.mergeSpirvInstruction((yyvsp[-1].lex).loc, (yyvsp[-2].interm.spirvInst), (yyvsp[0].interm.spirvInst)); } -#line 12442 "MachineIndependent/glslang_tab.cpp" +#line 12446 "MachineIndependent/glslang_tab.cpp" break; case 699: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL STRING_LITERAL */ -#line 4447 "MachineIndependent/glslang.y" +#line 4451 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, *(yyvsp[0].lex).string); } -#line 12450 "MachineIndependent/glslang_tab.cpp" +#line 12454 "MachineIndependent/glslang_tab.cpp" break; case 700: /* spirv_instruction_qualifier_id: IDENTIFIER EQUAL INTCONSTANT */ -#line 4450 "MachineIndependent/glslang.y" +#line 4454 "MachineIndependent/glslang.y" { (yyval.interm.spirvInst) = parseContext.makeSpirvInstruction((yyvsp[-1].lex).loc, *(yyvsp[-2].lex).string, (yyvsp[0].lex).i); } -#line 12458 "MachineIndependent/glslang_tab.cpp" +#line 12462 "MachineIndependent/glslang_tab.cpp" break; -#line 12462 "MachineIndependent/glslang_tab.cpp" +#line 12466 "MachineIndependent/glslang_tab.cpp" default: break; } @@ -12682,5 +12686,5 @@ YYSTYPE yylval YY_INITIAL_VALUE (= yyval_default); return yyresult; } -#line 4454 "MachineIndependent/glslang.y" +#line 4458 "MachineIndependent/glslang.y" diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index 4f820c162b..c8a24eca89 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -956,6 +956,7 @@ INSTANTIATE_TEST_SUITE_P( "spv.debuginfo.rt_types.glsl.rgen", "spv.debuginfo.include.glsl.frag", "spv.debuginfo.multiline.glsl.frag", + "spv.debuginfo.implicit_br.glsl.frag", })), FileNameAsCustomTestSuffix ); From 79c4235085c5eb86ed78b034d94e03f7b3b5daef Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 2 Sep 2024 15:22:52 -0400 Subject: [PATCH 572/594] ci: Remove redundant testing from continuous deployment workflow The runtests script is already run as part of the cmake-controlled testing, so can be removed from the CD workflow like it was from the CI ones. --- .github/workflows/continuous_deployment.yml | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/.github/workflows/continuous_deployment.yml b/.github/workflows/continuous_deployment.yml index 40a240b3ca..53d84084e5 100644 --- a/.github/workflows/continuous_deployment.yml +++ b/.github/workflows/continuous_deployment.yml @@ -62,8 +62,7 @@ jobs: - name: Test run: | cd build - ctest --output-on-failure && - cd ../Test && ./runtests + ctest --output-on-failure - name: Zip if: ${{ matrix.compiler.cc == 'clang' }} env: @@ -122,8 +121,7 @@ jobs: - name: Test run: | cd build - ctest --output-on-failure && - cd ../Test && ./runtests + ctest --output-on-failure - name: Zip env: ARCHIVE: glslang-main-${{matrix.os.family}}-${{matrix.cmake_build_type}}.zip @@ -176,7 +174,6 @@ jobs: run: | cd build ctest -C ${{matrix.cmake_build_type}} --output-on-failure - cd ../Test && bash runtests - name: Zip if: ${{ matrix.cmake_build_type == 'Debug' }} env: From 12a17b7ce41436427e358608183100b1103274da Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 06:39:21 +0000 Subject: [PATCH 573/594] Bump actions/upload-artifact from 4.3.6 to 4.4.0 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4.3.6 to 4.4.0. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/834a144ee995460fba8ed112a2fc961b36a5ec5a...50769540e7f4bd5e21e526ee35c689e35e0d6874) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index bd8742b531..5861285cf1 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -40,7 +40,7 @@ jobs: # Upload the results as artifacts (optional). Commenting out will disable uploads of run results in SARIF # format to the repository Actions tab. - name: "Upload artifact" - uses: actions/upload-artifact@834a144ee995460fba8ed112a2fc961b36a5ec5a # v4.3.6 + uses: actions/upload-artifact@50769540e7f4bd5e21e526ee35c689e35e0d6874 # v4.4.0 with: name: SARIF file path: results.sarif From 6495f77b04af5bef7a12767316a2c4a7ed94d2ce Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 11 Sep 2024 09:46:38 -0700 Subject: [PATCH 574/594] Remove redundant calls to spv::Parameterize() from tests This means the tests won't need to have this entrypoint exposed when building as a shared library with hidden symbols. --- gtests/GlslMapIO.FromFile.cpp | 1 - gtests/Link.FromFile.Vk.cpp | 1 - gtests/TestFixture.h | 4 ---- gtests/VkRelaxed.FromFile.cpp | 1 - 4 files changed, 7 deletions(-) diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp index 927dde048d..1ad9e0296f 100644 --- a/gtests/GlslMapIO.FromFile.cpp +++ b/gtests/GlslMapIO.FromFile.cpp @@ -312,7 +312,6 @@ TEST_P(GlslMapIOTest, FromFile) spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; - spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); result.spirvWarningsErrors += logger.getAllMessages(); result.spirv += disassembly_stream.str(); diff --git a/gtests/Link.FromFile.Vk.cpp b/gtests/Link.FromFile.Vk.cpp index fed5d260cf..9ec67576ed 100644 --- a/gtests/Link.FromFile.Vk.cpp +++ b/gtests/Link.FromFile.Vk.cpp @@ -86,7 +86,6 @@ TEST_P(LinkTestVulkan, FromFile) spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; - spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); result.spirvWarningsErrors = logger.getAllMessages(); result.spirv = disassembly_stream.str(); diff --git a/gtests/TestFixture.h b/gtests/TestFixture.h index 9777c27576..ab548f5627 100644 --- a/gtests/TestFixture.h +++ b/gtests/TestFixture.h @@ -324,7 +324,6 @@ class GlslangTest : public GT { } std::ostringstream disassembly_stream; - spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); bool validation_result = !options().validate || logger.getAllMessages().empty(); return {{ @@ -384,7 +383,6 @@ class GlslangTest : public GT { spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; - spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); bool validation_result = !options().validate || logger.getAllMessages().empty(); return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, @@ -429,7 +427,6 @@ class GlslangTest : public GT { spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, whiteListStrings, remapOptions); std::ostringstream disassembly_stream; - spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); bool validation_result = !options().validate || logger.getAllMessages().empty(); return {{{shaderName, shader.getInfoLog(), shader.getInfoDebugLog()},}, @@ -453,7 +450,6 @@ class GlslangTest : public GT { spv::spirvbin_t(0 /*verbosity*/).remap(spirv_binary, whiteListStrings, remapOptions); std::ostringstream disassembly_stream; - spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); return {{{shaderName, "", ""},}, diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp index 483d7c7fdb..6e31974aae 100644 --- a/gtests/VkRelaxed.FromFile.cpp +++ b/gtests/VkRelaxed.FromFile.cpp @@ -264,7 +264,6 @@ TEST_P(VulkanRelaxedTest, FromFile) spirv_binary, &logger, &options()); std::ostringstream disassembly_stream; - spv::Parameterize(); spv::Disassemble(disassembly_stream, spirv_binary); result.spirvWarningsErrors += logger.getAllMessages(); result.spirv += disassembly_stream.str(); From dc1012140e015d43711514d1294ac6f626890a40 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 9 Sep 2024 17:20:19 -0700 Subject: [PATCH 575/594] Convert keyword maps to static initializers Rather than having a function that needs to be called from ShInitialize to initialize some global costants, convert them to use static initializers. --- glslang/HLSL/hlslScanContext.cpp | 878 ++++++++++---------- glslang/MachineIndependent/Scan.cpp | 964 +++++++++++----------- glslang/MachineIndependent/ShaderLang.cpp | 10 - 3 files changed, 897 insertions(+), 955 deletions(-) diff --git a/glslang/HLSL/hlslScanContext.cpp b/glslang/HLSL/hlslScanContext.cpp index e9edb61976..e45643e913 100644 --- a/glslang/HLSL/hlslScanContext.cpp +++ b/glslang/HLSL/hlslScanContext.cpp @@ -78,414 +78,396 @@ struct str_hash }; // A single global usable by all threads, by all versions, by all languages. -// After a single process-level initialization, this is read only and thread safe -std::unordered_map* KeywordMap = nullptr; -std::unordered_set* ReservedSet = nullptr; -std::unordered_map* SemanticMap = nullptr; - +const std::unordered_map KeywordMap { + {"static",glslang::EHTokStatic}, + {"const",glslang::EHTokConst}, + {"unorm",glslang::EHTokUnorm}, + {"snorm",glslang::EHTokSNorm}, + {"extern",glslang::EHTokExtern}, + {"uniform",glslang::EHTokUniform}, + {"volatile",glslang::EHTokVolatile}, + {"precise",glslang::EHTokPrecise}, + {"shared",glslang::EHTokShared}, + {"groupshared",glslang::EHTokGroupShared}, + {"linear",glslang::EHTokLinear}, + {"centroid",glslang::EHTokCentroid}, + {"nointerpolation",glslang::EHTokNointerpolation}, + {"noperspective",glslang::EHTokNoperspective}, + {"sample",glslang::EHTokSample}, + {"row_major",glslang::EHTokRowMajor}, + {"column_major",glslang::EHTokColumnMajor}, + {"packoffset",glslang::EHTokPackOffset}, + {"in",glslang::EHTokIn}, + {"out",glslang::EHTokOut}, + {"inout",glslang::EHTokInOut}, + {"layout",glslang::EHTokLayout}, + {"globallycoherent",glslang::EHTokGloballyCoherent}, + {"inline",glslang::EHTokInline}, + + {"point",glslang::EHTokPoint}, + {"line",glslang::EHTokLine}, + {"triangle",glslang::EHTokTriangle}, + {"lineadj",glslang::EHTokLineAdj}, + {"triangleadj",glslang::EHTokTriangleAdj}, + + {"PointStream",glslang::EHTokPointStream}, + {"LineStream",glslang::EHTokLineStream}, + {"TriangleStream",glslang::EHTokTriangleStream}, + + {"InputPatch",glslang::EHTokInputPatch}, + {"OutputPatch",glslang::EHTokOutputPatch}, + + {"Buffer",glslang::EHTokBuffer}, + {"vector",glslang::EHTokVector}, + {"matrix",glslang::EHTokMatrix}, + + {"void",glslang::EHTokVoid}, + {"string",glslang::EHTokString}, + {"bool",glslang::EHTokBool}, + {"int",glslang::EHTokInt}, + {"uint",glslang::EHTokUint}, + {"uint64_t",glslang::EHTokUint64}, + {"dword",glslang::EHTokDword}, + {"half",glslang::EHTokHalf}, + {"float",glslang::EHTokFloat}, + {"double",glslang::EHTokDouble}, + {"min16float",glslang::EHTokMin16float}, + {"min10float",glslang::EHTokMin10float}, + {"min16int",glslang::EHTokMin16int}, + {"min12int",glslang::EHTokMin12int}, + {"min16uint",glslang::EHTokMin16uint}, + + {"bool1",glslang::EHTokBool1}, + {"bool2",glslang::EHTokBool2}, + {"bool3",glslang::EHTokBool3}, + {"bool4",glslang::EHTokBool4}, + {"float1",glslang::EHTokFloat1}, + {"float2",glslang::EHTokFloat2}, + {"float3",glslang::EHTokFloat3}, + {"float4",glslang::EHTokFloat4}, + {"int1",glslang::EHTokInt1}, + {"int2",glslang::EHTokInt2}, + {"int3",glslang::EHTokInt3}, + {"int4",glslang::EHTokInt4}, + {"double1",glslang::EHTokDouble1}, + {"double2",glslang::EHTokDouble2}, + {"double3",glslang::EHTokDouble3}, + {"double4",glslang::EHTokDouble4}, + {"uint1",glslang::EHTokUint1}, + {"uint2",glslang::EHTokUint2}, + {"uint3",glslang::EHTokUint3}, + {"uint4",glslang::EHTokUint4}, + + {"half1",glslang::EHTokHalf1}, + {"half2",glslang::EHTokHalf2}, + {"half3",glslang::EHTokHalf3}, + {"half4",glslang::EHTokHalf4}, + {"min16float1",glslang::EHTokMin16float1}, + {"min16float2",glslang::EHTokMin16float2}, + {"min16float3",glslang::EHTokMin16float3}, + {"min16float4",glslang::EHTokMin16float4}, + {"min10float1",glslang::EHTokMin10float1}, + {"min10float2",glslang::EHTokMin10float2}, + {"min10float3",glslang::EHTokMin10float3}, + {"min10float4",glslang::EHTokMin10float4}, + {"min16int1",glslang::EHTokMin16int1}, + {"min16int2",glslang::EHTokMin16int2}, + {"min16int3",glslang::EHTokMin16int3}, + {"min16int4",glslang::EHTokMin16int4}, + {"min12int1",glslang::EHTokMin12int1}, + {"min12int2",glslang::EHTokMin12int2}, + {"min12int3",glslang::EHTokMin12int3}, + {"min12int4",glslang::EHTokMin12int4}, + {"min16uint1",glslang::EHTokMin16uint1}, + {"min16uint2",glslang::EHTokMin16uint2}, + {"min16uint3",glslang::EHTokMin16uint3}, + {"min16uint4",glslang::EHTokMin16uint4}, + + {"bool1x1",glslang::EHTokBool1x1}, + {"bool1x2",glslang::EHTokBool1x2}, + {"bool1x3",glslang::EHTokBool1x3}, + {"bool1x4",glslang::EHTokBool1x4}, + {"bool2x1",glslang::EHTokBool2x1}, + {"bool2x2",glslang::EHTokBool2x2}, + {"bool2x3",glslang::EHTokBool2x3}, + {"bool2x4",glslang::EHTokBool2x4}, + {"bool3x1",glslang::EHTokBool3x1}, + {"bool3x2",glslang::EHTokBool3x2}, + {"bool3x3",glslang::EHTokBool3x3}, + {"bool3x4",glslang::EHTokBool3x4}, + {"bool4x1",glslang::EHTokBool4x1}, + {"bool4x2",glslang::EHTokBool4x2}, + {"bool4x3",glslang::EHTokBool4x3}, + {"bool4x4",glslang::EHTokBool4x4}, + {"int1x1",glslang::EHTokInt1x1}, + {"int1x2",glslang::EHTokInt1x2}, + {"int1x3",glslang::EHTokInt1x3}, + {"int1x4",glslang::EHTokInt1x4}, + {"int2x1",glslang::EHTokInt2x1}, + {"int2x2",glslang::EHTokInt2x2}, + {"int2x3",glslang::EHTokInt2x3}, + {"int2x4",glslang::EHTokInt2x4}, + {"int3x1",glslang::EHTokInt3x1}, + {"int3x2",glslang::EHTokInt3x2}, + {"int3x3",glslang::EHTokInt3x3}, + {"int3x4",glslang::EHTokInt3x4}, + {"int4x1",glslang::EHTokInt4x1}, + {"int4x2",glslang::EHTokInt4x2}, + {"int4x3",glslang::EHTokInt4x3}, + {"int4x4",glslang::EHTokInt4x4}, + {"uint1x1",glslang::EHTokUint1x1}, + {"uint1x2",glslang::EHTokUint1x2}, + {"uint1x3",glslang::EHTokUint1x3}, + {"uint1x4",glslang::EHTokUint1x4}, + {"uint2x1",glslang::EHTokUint2x1}, + {"uint2x2",glslang::EHTokUint2x2}, + {"uint2x3",glslang::EHTokUint2x3}, + {"uint2x4",glslang::EHTokUint2x4}, + {"uint3x1",glslang::EHTokUint3x1}, + {"uint3x2",glslang::EHTokUint3x2}, + {"uint3x3",glslang::EHTokUint3x3}, + {"uint3x4",glslang::EHTokUint3x4}, + {"uint4x1",glslang::EHTokUint4x1}, + {"uint4x2",glslang::EHTokUint4x2}, + {"uint4x3",glslang::EHTokUint4x3}, + {"uint4x4",glslang::EHTokUint4x4}, + {"bool1x1",glslang::EHTokBool1x1}, + {"bool1x2",glslang::EHTokBool1x2}, + {"bool1x3",glslang::EHTokBool1x3}, + {"bool1x4",glslang::EHTokBool1x4}, + {"bool2x1",glslang::EHTokBool2x1}, + {"bool2x2",glslang::EHTokBool2x2}, + {"bool2x3",glslang::EHTokBool2x3}, + {"bool2x4",glslang::EHTokBool2x4}, + {"bool3x1",glslang::EHTokBool3x1}, + {"bool3x2",glslang::EHTokBool3x2}, + {"bool3x3",glslang::EHTokBool3x3}, + {"bool3x4",glslang::EHTokBool3x4}, + {"bool4x1",glslang::EHTokBool4x1}, + {"bool4x2",glslang::EHTokBool4x2}, + {"bool4x3",glslang::EHTokBool4x3}, + {"bool4x4",glslang::EHTokBool4x4}, + {"float1x1",glslang::EHTokFloat1x1}, + {"float1x2",glslang::EHTokFloat1x2}, + {"float1x3",glslang::EHTokFloat1x3}, + {"float1x4",glslang::EHTokFloat1x4}, + {"float2x1",glslang::EHTokFloat2x1}, + {"float2x2",glslang::EHTokFloat2x2}, + {"float2x3",glslang::EHTokFloat2x3}, + {"float2x4",glslang::EHTokFloat2x4}, + {"float3x1",glslang::EHTokFloat3x1}, + {"float3x2",glslang::EHTokFloat3x2}, + {"float3x3",glslang::EHTokFloat3x3}, + {"float3x4",glslang::EHTokFloat3x4}, + {"float4x1",glslang::EHTokFloat4x1}, + {"float4x2",glslang::EHTokFloat4x2}, + {"float4x3",glslang::EHTokFloat4x3}, + {"float4x4",glslang::EHTokFloat4x4}, + {"half1x1",glslang::EHTokHalf1x1}, + {"half1x2",glslang::EHTokHalf1x2}, + {"half1x3",glslang::EHTokHalf1x3}, + {"half1x4",glslang::EHTokHalf1x4}, + {"half2x1",glslang::EHTokHalf2x1}, + {"half2x2",glslang::EHTokHalf2x2}, + {"half2x3",glslang::EHTokHalf2x3}, + {"half2x4",glslang::EHTokHalf2x4}, + {"half3x1",glslang::EHTokHalf3x1}, + {"half3x2",glslang::EHTokHalf3x2}, + {"half3x3",glslang::EHTokHalf3x3}, + {"half3x4",glslang::EHTokHalf3x4}, + {"half4x1",glslang::EHTokHalf4x1}, + {"half4x2",glslang::EHTokHalf4x2}, + {"half4x3",glslang::EHTokHalf4x3}, + {"half4x4",glslang::EHTokHalf4x4}, + {"double1x1",glslang::EHTokDouble1x1}, + {"double1x2",glslang::EHTokDouble1x2}, + {"double1x3",glslang::EHTokDouble1x3}, + {"double1x4",glslang::EHTokDouble1x4}, + {"double2x1",glslang::EHTokDouble2x1}, + {"double2x2",glslang::EHTokDouble2x2}, + {"double2x3",glslang::EHTokDouble2x3}, + {"double2x4",glslang::EHTokDouble2x4}, + {"double3x1",glslang::EHTokDouble3x1}, + {"double3x2",glslang::EHTokDouble3x2}, + {"double3x3",glslang::EHTokDouble3x3}, + {"double3x4",glslang::EHTokDouble3x4}, + {"double4x1",glslang::EHTokDouble4x1}, + {"double4x2",glslang::EHTokDouble4x2}, + {"double4x3",glslang::EHTokDouble4x3}, + {"double4x4",glslang::EHTokDouble4x4}, + {"min16float1x1",glslang::EHTokMin16float1x1}, + {"min16float1x2",glslang::EHTokMin16float1x2}, + {"min16float1x3",glslang::EHTokMin16float1x3}, + {"min16float1x4",glslang::EHTokMin16float1x4}, + {"min16float2x1",glslang::EHTokMin16float2x1}, + {"min16float2x2",glslang::EHTokMin16float2x2}, + {"min16float2x3",glslang::EHTokMin16float2x3}, + {"min16float2x4",glslang::EHTokMin16float2x4}, + {"min16float3x1",glslang::EHTokMin16float3x1}, + {"min16float3x2",glslang::EHTokMin16float3x2}, + {"min16float3x3",glslang::EHTokMin16float3x3}, + {"min16float3x4",glslang::EHTokMin16float3x4}, + {"min16float4x1",glslang::EHTokMin16float4x1}, + {"min16float4x2",glslang::EHTokMin16float4x2}, + {"min16float4x3",glslang::EHTokMin16float4x3}, + {"min16float4x4",glslang::EHTokMin16float4x4}, + {"min10float1x1",glslang::EHTokMin10float1x1}, + {"min10float1x2",glslang::EHTokMin10float1x2}, + {"min10float1x3",glslang::EHTokMin10float1x3}, + {"min10float1x4",glslang::EHTokMin10float1x4}, + {"min10float2x1",glslang::EHTokMin10float2x1}, + {"min10float2x2",glslang::EHTokMin10float2x2}, + {"min10float2x3",glslang::EHTokMin10float2x3}, + {"min10float2x4",glslang::EHTokMin10float2x4}, + {"min10float3x1",glslang::EHTokMin10float3x1}, + {"min10float3x2",glslang::EHTokMin10float3x2}, + {"min10float3x3",glslang::EHTokMin10float3x3}, + {"min10float3x4",glslang::EHTokMin10float3x4}, + {"min10float4x1",glslang::EHTokMin10float4x1}, + {"min10float4x2",glslang::EHTokMin10float4x2}, + {"min10float4x3",glslang::EHTokMin10float4x3}, + {"min10float4x4",glslang::EHTokMin10float4x4}, + {"min16int1x1",glslang::EHTokMin16int1x1}, + {"min16int1x2",glslang::EHTokMin16int1x2}, + {"min16int1x3",glslang::EHTokMin16int1x3}, + {"min16int1x4",glslang::EHTokMin16int1x4}, + {"min16int2x1",glslang::EHTokMin16int2x1}, + {"min16int2x2",glslang::EHTokMin16int2x2}, + {"min16int2x3",glslang::EHTokMin16int2x3}, + {"min16int2x4",glslang::EHTokMin16int2x4}, + {"min16int3x1",glslang::EHTokMin16int3x1}, + {"min16int3x2",glslang::EHTokMin16int3x2}, + {"min16int3x3",glslang::EHTokMin16int3x3}, + {"min16int3x4",glslang::EHTokMin16int3x4}, + {"min16int4x1",glslang::EHTokMin16int4x1}, + {"min16int4x2",glslang::EHTokMin16int4x2}, + {"min16int4x3",glslang::EHTokMin16int4x3}, + {"min16int4x4",glslang::EHTokMin16int4x4}, + {"min12int1x1",glslang::EHTokMin12int1x1}, + {"min12int1x2",glslang::EHTokMin12int1x2}, + {"min12int1x3",glslang::EHTokMin12int1x3}, + {"min12int1x4",glslang::EHTokMin12int1x4}, + {"min12int2x1",glslang::EHTokMin12int2x1}, + {"min12int2x2",glslang::EHTokMin12int2x2}, + {"min12int2x3",glslang::EHTokMin12int2x3}, + {"min12int2x4",glslang::EHTokMin12int2x4}, + {"min12int3x1",glslang::EHTokMin12int3x1}, + {"min12int3x2",glslang::EHTokMin12int3x2}, + {"min12int3x3",glslang::EHTokMin12int3x3}, + {"min12int3x4",glslang::EHTokMin12int3x4}, + {"min12int4x1",glslang::EHTokMin12int4x1}, + {"min12int4x2",glslang::EHTokMin12int4x2}, + {"min12int4x3",glslang::EHTokMin12int4x3}, + {"min12int4x4",glslang::EHTokMin12int4x4}, + {"min16uint1x1",glslang::EHTokMin16uint1x1}, + {"min16uint1x2",glslang::EHTokMin16uint1x2}, + {"min16uint1x3",glslang::EHTokMin16uint1x3}, + {"min16uint1x4",glslang::EHTokMin16uint1x4}, + {"min16uint2x1",glslang::EHTokMin16uint2x1}, + {"min16uint2x2",glslang::EHTokMin16uint2x2}, + {"min16uint2x3",glslang::EHTokMin16uint2x3}, + {"min16uint2x4",glslang::EHTokMin16uint2x4}, + {"min16uint3x1",glslang::EHTokMin16uint3x1}, + {"min16uint3x2",glslang::EHTokMin16uint3x2}, + {"min16uint3x3",glslang::EHTokMin16uint3x3}, + {"min16uint3x4",glslang::EHTokMin16uint3x4}, + {"min16uint4x1",glslang::EHTokMin16uint4x1}, + {"min16uint4x2",glslang::EHTokMin16uint4x2}, + {"min16uint4x3",glslang::EHTokMin16uint4x3}, + {"min16uint4x4",glslang::EHTokMin16uint4x4}, + + {"sampler",glslang::EHTokSampler}, + {"sampler1D",glslang::EHTokSampler1d}, + {"sampler2D",glslang::EHTokSampler2d}, + {"sampler3D",glslang::EHTokSampler3d}, + {"samplerCUBE",glslang::EHTokSamplerCube}, + {"sampler_state",glslang::EHTokSamplerState}, + {"SamplerState",glslang::EHTokSamplerState}, + {"SamplerComparisonState",glslang::EHTokSamplerComparisonState}, + {"texture",glslang::EHTokTexture}, + {"Texture1D",glslang::EHTokTexture1d}, + {"Texture1DArray",glslang::EHTokTexture1darray}, + {"Texture2D",glslang::EHTokTexture2d}, + {"Texture2DArray",glslang::EHTokTexture2darray}, + {"Texture3D",glslang::EHTokTexture3d}, + {"TextureCube",glslang::EHTokTextureCube}, + {"TextureCubeArray",glslang::EHTokTextureCubearray}, + {"Texture2DMS",glslang::EHTokTexture2DMS}, + {"Texture2DMSArray",glslang::EHTokTexture2DMSarray}, + {"RWTexture1D",glslang::EHTokRWTexture1d}, + {"RWTexture1DArray",glslang::EHTokRWTexture1darray}, + {"RWTexture2D",glslang::EHTokRWTexture2d}, + {"RWTexture2DArray",glslang::EHTokRWTexture2darray}, + {"RWTexture3D",glslang::EHTokRWTexture3d}, + {"RWBuffer",glslang::EHTokRWBuffer}, + {"SubpassInput",glslang::EHTokSubpassInput}, + {"SubpassInputMS",glslang::EHTokSubpassInputMS}, + + {"AppendStructuredBuffer",glslang::EHTokAppendStructuredBuffer}, + {"ByteAddressBuffer",glslang::EHTokByteAddressBuffer}, + {"ConsumeStructuredBuffer",glslang::EHTokConsumeStructuredBuffer}, + {"RWByteAddressBuffer",glslang::EHTokRWByteAddressBuffer}, + {"RWStructuredBuffer",glslang::EHTokRWStructuredBuffer}, + {"StructuredBuffer",glslang::EHTokStructuredBuffer}, + {"TextureBuffer",glslang::EHTokTextureBuffer}, + + {"class",glslang::EHTokClass}, + {"struct",glslang::EHTokStruct}, + {"cbuffer",glslang::EHTokCBuffer}, + {"ConstantBuffer",glslang::EHTokConstantBuffer}, + {"tbuffer",glslang::EHTokTBuffer}, + {"typedef",glslang::EHTokTypedef}, + {"this",glslang::EHTokThis}, + {"namespace",glslang::EHTokNamespace}, + + {"true",glslang::EHTokBoolConstant}, + {"false",glslang::EHTokBoolConstant}, + + {"for",glslang::EHTokFor}, + {"do",glslang::EHTokDo}, + {"while",glslang::EHTokWhile}, + {"break",glslang::EHTokBreak}, + {"continue",glslang::EHTokContinue}, + {"if",glslang::EHTokIf}, + {"else",glslang::EHTokElse}, + {"discard",glslang::EHTokDiscard}, + {"return",glslang::EHTokReturn}, + {"switch",glslang::EHTokSwitch}, + {"case",glslang::EHTokCase}, + {"default",glslang::EHTokDefault}, }; -namespace glslang { - -void HlslScanContext::fillInKeywordMap() -{ - if (KeywordMap != nullptr) { - // this is really an error, as this should called only once per process - // but, the only risk is if two threads called simultaneously - return; - } - KeywordMap = new std::unordered_map; - - (*KeywordMap)["static"] = EHTokStatic; - (*KeywordMap)["const"] = EHTokConst; - (*KeywordMap)["unorm"] = EHTokUnorm; - (*KeywordMap)["snorm"] = EHTokSNorm; - (*KeywordMap)["extern"] = EHTokExtern; - (*KeywordMap)["uniform"] = EHTokUniform; - (*KeywordMap)["volatile"] = EHTokVolatile; - (*KeywordMap)["precise"] = EHTokPrecise; - (*KeywordMap)["shared"] = EHTokShared; - (*KeywordMap)["groupshared"] = EHTokGroupShared; - (*KeywordMap)["linear"] = EHTokLinear; - (*KeywordMap)["centroid"] = EHTokCentroid; - (*KeywordMap)["nointerpolation"] = EHTokNointerpolation; - (*KeywordMap)["noperspective"] = EHTokNoperspective; - (*KeywordMap)["sample"] = EHTokSample; - (*KeywordMap)["row_major"] = EHTokRowMajor; - (*KeywordMap)["column_major"] = EHTokColumnMajor; - (*KeywordMap)["packoffset"] = EHTokPackOffset; - (*KeywordMap)["in"] = EHTokIn; - (*KeywordMap)["out"] = EHTokOut; - (*KeywordMap)["inout"] = EHTokInOut; - (*KeywordMap)["layout"] = EHTokLayout; - (*KeywordMap)["globallycoherent"] = EHTokGloballyCoherent; - (*KeywordMap)["inline"] = EHTokInline; - - (*KeywordMap)["point"] = EHTokPoint; - (*KeywordMap)["line"] = EHTokLine; - (*KeywordMap)["triangle"] = EHTokTriangle; - (*KeywordMap)["lineadj"] = EHTokLineAdj; - (*KeywordMap)["triangleadj"] = EHTokTriangleAdj; - - (*KeywordMap)["PointStream"] = EHTokPointStream; - (*KeywordMap)["LineStream"] = EHTokLineStream; - (*KeywordMap)["TriangleStream"] = EHTokTriangleStream; - - (*KeywordMap)["InputPatch"] = EHTokInputPatch; - (*KeywordMap)["OutputPatch"] = EHTokOutputPatch; - - (*KeywordMap)["Buffer"] = EHTokBuffer; - (*KeywordMap)["vector"] = EHTokVector; - (*KeywordMap)["matrix"] = EHTokMatrix; - - (*KeywordMap)["void"] = EHTokVoid; - (*KeywordMap)["string"] = EHTokString; - (*KeywordMap)["bool"] = EHTokBool; - (*KeywordMap)["int"] = EHTokInt; - (*KeywordMap)["uint"] = EHTokUint; - (*KeywordMap)["uint64_t"] = EHTokUint64; - (*KeywordMap)["dword"] = EHTokDword; - (*KeywordMap)["half"] = EHTokHalf; - (*KeywordMap)["float"] = EHTokFloat; - (*KeywordMap)["double"] = EHTokDouble; - (*KeywordMap)["min16float"] = EHTokMin16float; - (*KeywordMap)["min10float"] = EHTokMin10float; - (*KeywordMap)["min16int"] = EHTokMin16int; - (*KeywordMap)["min12int"] = EHTokMin12int; - (*KeywordMap)["min16uint"] = EHTokMin16uint; - - (*KeywordMap)["bool1"] = EHTokBool1; - (*KeywordMap)["bool2"] = EHTokBool2; - (*KeywordMap)["bool3"] = EHTokBool3; - (*KeywordMap)["bool4"] = EHTokBool4; - (*KeywordMap)["float1"] = EHTokFloat1; - (*KeywordMap)["float2"] = EHTokFloat2; - (*KeywordMap)["float3"] = EHTokFloat3; - (*KeywordMap)["float4"] = EHTokFloat4; - (*KeywordMap)["int1"] = EHTokInt1; - (*KeywordMap)["int2"] = EHTokInt2; - (*KeywordMap)["int3"] = EHTokInt3; - (*KeywordMap)["int4"] = EHTokInt4; - (*KeywordMap)["double1"] = EHTokDouble1; - (*KeywordMap)["double2"] = EHTokDouble2; - (*KeywordMap)["double3"] = EHTokDouble3; - (*KeywordMap)["double4"] = EHTokDouble4; - (*KeywordMap)["uint1"] = EHTokUint1; - (*KeywordMap)["uint2"] = EHTokUint2; - (*KeywordMap)["uint3"] = EHTokUint3; - (*KeywordMap)["uint4"] = EHTokUint4; - - (*KeywordMap)["half1"] = EHTokHalf1; - (*KeywordMap)["half2"] = EHTokHalf2; - (*KeywordMap)["half3"] = EHTokHalf3; - (*KeywordMap)["half4"] = EHTokHalf4; - (*KeywordMap)["min16float1"] = EHTokMin16float1; - (*KeywordMap)["min16float2"] = EHTokMin16float2; - (*KeywordMap)["min16float3"] = EHTokMin16float3; - (*KeywordMap)["min16float4"] = EHTokMin16float4; - (*KeywordMap)["min10float1"] = EHTokMin10float1; - (*KeywordMap)["min10float2"] = EHTokMin10float2; - (*KeywordMap)["min10float3"] = EHTokMin10float3; - (*KeywordMap)["min10float4"] = EHTokMin10float4; - (*KeywordMap)["min16int1"] = EHTokMin16int1; - (*KeywordMap)["min16int2"] = EHTokMin16int2; - (*KeywordMap)["min16int3"] = EHTokMin16int3; - (*KeywordMap)["min16int4"] = EHTokMin16int4; - (*KeywordMap)["min12int1"] = EHTokMin12int1; - (*KeywordMap)["min12int2"] = EHTokMin12int2; - (*KeywordMap)["min12int3"] = EHTokMin12int3; - (*KeywordMap)["min12int4"] = EHTokMin12int4; - (*KeywordMap)["min16uint1"] = EHTokMin16uint1; - (*KeywordMap)["min16uint2"] = EHTokMin16uint2; - (*KeywordMap)["min16uint3"] = EHTokMin16uint3; - (*KeywordMap)["min16uint4"] = EHTokMin16uint4; - - (*KeywordMap)["bool1x1"] = EHTokBool1x1; - (*KeywordMap)["bool1x2"] = EHTokBool1x2; - (*KeywordMap)["bool1x3"] = EHTokBool1x3; - (*KeywordMap)["bool1x4"] = EHTokBool1x4; - (*KeywordMap)["bool2x1"] = EHTokBool2x1; - (*KeywordMap)["bool2x2"] = EHTokBool2x2; - (*KeywordMap)["bool2x3"] = EHTokBool2x3; - (*KeywordMap)["bool2x4"] = EHTokBool2x4; - (*KeywordMap)["bool3x1"] = EHTokBool3x1; - (*KeywordMap)["bool3x2"] = EHTokBool3x2; - (*KeywordMap)["bool3x3"] = EHTokBool3x3; - (*KeywordMap)["bool3x4"] = EHTokBool3x4; - (*KeywordMap)["bool4x1"] = EHTokBool4x1; - (*KeywordMap)["bool4x2"] = EHTokBool4x2; - (*KeywordMap)["bool4x3"] = EHTokBool4x3; - (*KeywordMap)["bool4x4"] = EHTokBool4x4; - (*KeywordMap)["int1x1"] = EHTokInt1x1; - (*KeywordMap)["int1x2"] = EHTokInt1x2; - (*KeywordMap)["int1x3"] = EHTokInt1x3; - (*KeywordMap)["int1x4"] = EHTokInt1x4; - (*KeywordMap)["int2x1"] = EHTokInt2x1; - (*KeywordMap)["int2x2"] = EHTokInt2x2; - (*KeywordMap)["int2x3"] = EHTokInt2x3; - (*KeywordMap)["int2x4"] = EHTokInt2x4; - (*KeywordMap)["int3x1"] = EHTokInt3x1; - (*KeywordMap)["int3x2"] = EHTokInt3x2; - (*KeywordMap)["int3x3"] = EHTokInt3x3; - (*KeywordMap)["int3x4"] = EHTokInt3x4; - (*KeywordMap)["int4x1"] = EHTokInt4x1; - (*KeywordMap)["int4x2"] = EHTokInt4x2; - (*KeywordMap)["int4x3"] = EHTokInt4x3; - (*KeywordMap)["int4x4"] = EHTokInt4x4; - (*KeywordMap)["uint1x1"] = EHTokUint1x1; - (*KeywordMap)["uint1x2"] = EHTokUint1x2; - (*KeywordMap)["uint1x3"] = EHTokUint1x3; - (*KeywordMap)["uint1x4"] = EHTokUint1x4; - (*KeywordMap)["uint2x1"] = EHTokUint2x1; - (*KeywordMap)["uint2x2"] = EHTokUint2x2; - (*KeywordMap)["uint2x3"] = EHTokUint2x3; - (*KeywordMap)["uint2x4"] = EHTokUint2x4; - (*KeywordMap)["uint3x1"] = EHTokUint3x1; - (*KeywordMap)["uint3x2"] = EHTokUint3x2; - (*KeywordMap)["uint3x3"] = EHTokUint3x3; - (*KeywordMap)["uint3x4"] = EHTokUint3x4; - (*KeywordMap)["uint4x1"] = EHTokUint4x1; - (*KeywordMap)["uint4x2"] = EHTokUint4x2; - (*KeywordMap)["uint4x3"] = EHTokUint4x3; - (*KeywordMap)["uint4x4"] = EHTokUint4x4; - (*KeywordMap)["bool1x1"] = EHTokBool1x1; - (*KeywordMap)["bool1x2"] = EHTokBool1x2; - (*KeywordMap)["bool1x3"] = EHTokBool1x3; - (*KeywordMap)["bool1x4"] = EHTokBool1x4; - (*KeywordMap)["bool2x1"] = EHTokBool2x1; - (*KeywordMap)["bool2x2"] = EHTokBool2x2; - (*KeywordMap)["bool2x3"] = EHTokBool2x3; - (*KeywordMap)["bool2x4"] = EHTokBool2x4; - (*KeywordMap)["bool3x1"] = EHTokBool3x1; - (*KeywordMap)["bool3x2"] = EHTokBool3x2; - (*KeywordMap)["bool3x3"] = EHTokBool3x3; - (*KeywordMap)["bool3x4"] = EHTokBool3x4; - (*KeywordMap)["bool4x1"] = EHTokBool4x1; - (*KeywordMap)["bool4x2"] = EHTokBool4x2; - (*KeywordMap)["bool4x3"] = EHTokBool4x3; - (*KeywordMap)["bool4x4"] = EHTokBool4x4; - (*KeywordMap)["float1x1"] = EHTokFloat1x1; - (*KeywordMap)["float1x2"] = EHTokFloat1x2; - (*KeywordMap)["float1x3"] = EHTokFloat1x3; - (*KeywordMap)["float1x4"] = EHTokFloat1x4; - (*KeywordMap)["float2x1"] = EHTokFloat2x1; - (*KeywordMap)["float2x2"] = EHTokFloat2x2; - (*KeywordMap)["float2x3"] = EHTokFloat2x3; - (*KeywordMap)["float2x4"] = EHTokFloat2x4; - (*KeywordMap)["float3x1"] = EHTokFloat3x1; - (*KeywordMap)["float3x2"] = EHTokFloat3x2; - (*KeywordMap)["float3x3"] = EHTokFloat3x3; - (*KeywordMap)["float3x4"] = EHTokFloat3x4; - (*KeywordMap)["float4x1"] = EHTokFloat4x1; - (*KeywordMap)["float4x2"] = EHTokFloat4x2; - (*KeywordMap)["float4x3"] = EHTokFloat4x3; - (*KeywordMap)["float4x4"] = EHTokFloat4x4; - (*KeywordMap)["half1x1"] = EHTokHalf1x1; - (*KeywordMap)["half1x2"] = EHTokHalf1x2; - (*KeywordMap)["half1x3"] = EHTokHalf1x3; - (*KeywordMap)["half1x4"] = EHTokHalf1x4; - (*KeywordMap)["half2x1"] = EHTokHalf2x1; - (*KeywordMap)["half2x2"] = EHTokHalf2x2; - (*KeywordMap)["half2x3"] = EHTokHalf2x3; - (*KeywordMap)["half2x4"] = EHTokHalf2x4; - (*KeywordMap)["half3x1"] = EHTokHalf3x1; - (*KeywordMap)["half3x2"] = EHTokHalf3x2; - (*KeywordMap)["half3x3"] = EHTokHalf3x3; - (*KeywordMap)["half3x4"] = EHTokHalf3x4; - (*KeywordMap)["half4x1"] = EHTokHalf4x1; - (*KeywordMap)["half4x2"] = EHTokHalf4x2; - (*KeywordMap)["half4x3"] = EHTokHalf4x3; - (*KeywordMap)["half4x4"] = EHTokHalf4x4; - (*KeywordMap)["double1x1"] = EHTokDouble1x1; - (*KeywordMap)["double1x2"] = EHTokDouble1x2; - (*KeywordMap)["double1x3"] = EHTokDouble1x3; - (*KeywordMap)["double1x4"] = EHTokDouble1x4; - (*KeywordMap)["double2x1"] = EHTokDouble2x1; - (*KeywordMap)["double2x2"] = EHTokDouble2x2; - (*KeywordMap)["double2x3"] = EHTokDouble2x3; - (*KeywordMap)["double2x4"] = EHTokDouble2x4; - (*KeywordMap)["double3x1"] = EHTokDouble3x1; - (*KeywordMap)["double3x2"] = EHTokDouble3x2; - (*KeywordMap)["double3x3"] = EHTokDouble3x3; - (*KeywordMap)["double3x4"] = EHTokDouble3x4; - (*KeywordMap)["double4x1"] = EHTokDouble4x1; - (*KeywordMap)["double4x2"] = EHTokDouble4x2; - (*KeywordMap)["double4x3"] = EHTokDouble4x3; - (*KeywordMap)["double4x4"] = EHTokDouble4x4; - (*KeywordMap)["min16float1x1"] = EHTokMin16float1x1; - (*KeywordMap)["min16float1x2"] = EHTokMin16float1x2; - (*KeywordMap)["min16float1x3"] = EHTokMin16float1x3; - (*KeywordMap)["min16float1x4"] = EHTokMin16float1x4; - (*KeywordMap)["min16float2x1"] = EHTokMin16float2x1; - (*KeywordMap)["min16float2x2"] = EHTokMin16float2x2; - (*KeywordMap)["min16float2x3"] = EHTokMin16float2x3; - (*KeywordMap)["min16float2x4"] = EHTokMin16float2x4; - (*KeywordMap)["min16float3x1"] = EHTokMin16float3x1; - (*KeywordMap)["min16float3x2"] = EHTokMin16float3x2; - (*KeywordMap)["min16float3x3"] = EHTokMin16float3x3; - (*KeywordMap)["min16float3x4"] = EHTokMin16float3x4; - (*KeywordMap)["min16float4x1"] = EHTokMin16float4x1; - (*KeywordMap)["min16float4x2"] = EHTokMin16float4x2; - (*KeywordMap)["min16float4x3"] = EHTokMin16float4x3; - (*KeywordMap)["min16float4x4"] = EHTokMin16float4x4; - (*KeywordMap)["min10float1x1"] = EHTokMin10float1x1; - (*KeywordMap)["min10float1x2"] = EHTokMin10float1x2; - (*KeywordMap)["min10float1x3"] = EHTokMin10float1x3; - (*KeywordMap)["min10float1x4"] = EHTokMin10float1x4; - (*KeywordMap)["min10float2x1"] = EHTokMin10float2x1; - (*KeywordMap)["min10float2x2"] = EHTokMin10float2x2; - (*KeywordMap)["min10float2x3"] = EHTokMin10float2x3; - (*KeywordMap)["min10float2x4"] = EHTokMin10float2x4; - (*KeywordMap)["min10float3x1"] = EHTokMin10float3x1; - (*KeywordMap)["min10float3x2"] = EHTokMin10float3x2; - (*KeywordMap)["min10float3x3"] = EHTokMin10float3x3; - (*KeywordMap)["min10float3x4"] = EHTokMin10float3x4; - (*KeywordMap)["min10float4x1"] = EHTokMin10float4x1; - (*KeywordMap)["min10float4x2"] = EHTokMin10float4x2; - (*KeywordMap)["min10float4x3"] = EHTokMin10float4x3; - (*KeywordMap)["min10float4x4"] = EHTokMin10float4x4; - (*KeywordMap)["min16int1x1"] = EHTokMin16int1x1; - (*KeywordMap)["min16int1x2"] = EHTokMin16int1x2; - (*KeywordMap)["min16int1x3"] = EHTokMin16int1x3; - (*KeywordMap)["min16int1x4"] = EHTokMin16int1x4; - (*KeywordMap)["min16int2x1"] = EHTokMin16int2x1; - (*KeywordMap)["min16int2x2"] = EHTokMin16int2x2; - (*KeywordMap)["min16int2x3"] = EHTokMin16int2x3; - (*KeywordMap)["min16int2x4"] = EHTokMin16int2x4; - (*KeywordMap)["min16int3x1"] = EHTokMin16int3x1; - (*KeywordMap)["min16int3x2"] = EHTokMin16int3x2; - (*KeywordMap)["min16int3x3"] = EHTokMin16int3x3; - (*KeywordMap)["min16int3x4"] = EHTokMin16int3x4; - (*KeywordMap)["min16int4x1"] = EHTokMin16int4x1; - (*KeywordMap)["min16int4x2"] = EHTokMin16int4x2; - (*KeywordMap)["min16int4x3"] = EHTokMin16int4x3; - (*KeywordMap)["min16int4x4"] = EHTokMin16int4x4; - (*KeywordMap)["min12int1x1"] = EHTokMin12int1x1; - (*KeywordMap)["min12int1x2"] = EHTokMin12int1x2; - (*KeywordMap)["min12int1x3"] = EHTokMin12int1x3; - (*KeywordMap)["min12int1x4"] = EHTokMin12int1x4; - (*KeywordMap)["min12int2x1"] = EHTokMin12int2x1; - (*KeywordMap)["min12int2x2"] = EHTokMin12int2x2; - (*KeywordMap)["min12int2x3"] = EHTokMin12int2x3; - (*KeywordMap)["min12int2x4"] = EHTokMin12int2x4; - (*KeywordMap)["min12int3x1"] = EHTokMin12int3x1; - (*KeywordMap)["min12int3x2"] = EHTokMin12int3x2; - (*KeywordMap)["min12int3x3"] = EHTokMin12int3x3; - (*KeywordMap)["min12int3x4"] = EHTokMin12int3x4; - (*KeywordMap)["min12int4x1"] = EHTokMin12int4x1; - (*KeywordMap)["min12int4x2"] = EHTokMin12int4x2; - (*KeywordMap)["min12int4x3"] = EHTokMin12int4x3; - (*KeywordMap)["min12int4x4"] = EHTokMin12int4x4; - (*KeywordMap)["min16uint1x1"] = EHTokMin16uint1x1; - (*KeywordMap)["min16uint1x2"] = EHTokMin16uint1x2; - (*KeywordMap)["min16uint1x3"] = EHTokMin16uint1x3; - (*KeywordMap)["min16uint1x4"] = EHTokMin16uint1x4; - (*KeywordMap)["min16uint2x1"] = EHTokMin16uint2x1; - (*KeywordMap)["min16uint2x2"] = EHTokMin16uint2x2; - (*KeywordMap)["min16uint2x3"] = EHTokMin16uint2x3; - (*KeywordMap)["min16uint2x4"] = EHTokMin16uint2x4; - (*KeywordMap)["min16uint3x1"] = EHTokMin16uint3x1; - (*KeywordMap)["min16uint3x2"] = EHTokMin16uint3x2; - (*KeywordMap)["min16uint3x3"] = EHTokMin16uint3x3; - (*KeywordMap)["min16uint3x4"] = EHTokMin16uint3x4; - (*KeywordMap)["min16uint4x1"] = EHTokMin16uint4x1; - (*KeywordMap)["min16uint4x2"] = EHTokMin16uint4x2; - (*KeywordMap)["min16uint4x3"] = EHTokMin16uint4x3; - (*KeywordMap)["min16uint4x4"] = EHTokMin16uint4x4; - - (*KeywordMap)["sampler"] = EHTokSampler; - (*KeywordMap)["sampler1D"] = EHTokSampler1d; - (*KeywordMap)["sampler2D"] = EHTokSampler2d; - (*KeywordMap)["sampler3D"] = EHTokSampler3d; - (*KeywordMap)["samplerCUBE"] = EHTokSamplerCube; - (*KeywordMap)["sampler_state"] = EHTokSamplerState; - (*KeywordMap)["SamplerState"] = EHTokSamplerState; - (*KeywordMap)["SamplerComparisonState"] = EHTokSamplerComparisonState; - (*KeywordMap)["texture"] = EHTokTexture; - (*KeywordMap)["Texture1D"] = EHTokTexture1d; - (*KeywordMap)["Texture1DArray"] = EHTokTexture1darray; - (*KeywordMap)["Texture2D"] = EHTokTexture2d; - (*KeywordMap)["Texture2DArray"] = EHTokTexture2darray; - (*KeywordMap)["Texture3D"] = EHTokTexture3d; - (*KeywordMap)["TextureCube"] = EHTokTextureCube; - (*KeywordMap)["TextureCubeArray"] = EHTokTextureCubearray; - (*KeywordMap)["Texture2DMS"] = EHTokTexture2DMS; - (*KeywordMap)["Texture2DMSArray"] = EHTokTexture2DMSarray; - (*KeywordMap)["RWTexture1D"] = EHTokRWTexture1d; - (*KeywordMap)["RWTexture1DArray"] = EHTokRWTexture1darray; - (*KeywordMap)["RWTexture2D"] = EHTokRWTexture2d; - (*KeywordMap)["RWTexture2DArray"] = EHTokRWTexture2darray; - (*KeywordMap)["RWTexture3D"] = EHTokRWTexture3d; - (*KeywordMap)["RWBuffer"] = EHTokRWBuffer; - (*KeywordMap)["SubpassInput"] = EHTokSubpassInput; - (*KeywordMap)["SubpassInputMS"] = EHTokSubpassInputMS; - - (*KeywordMap)["AppendStructuredBuffer"] = EHTokAppendStructuredBuffer; - (*KeywordMap)["ByteAddressBuffer"] = EHTokByteAddressBuffer; - (*KeywordMap)["ConsumeStructuredBuffer"] = EHTokConsumeStructuredBuffer; - (*KeywordMap)["RWByteAddressBuffer"] = EHTokRWByteAddressBuffer; - (*KeywordMap)["RWStructuredBuffer"] = EHTokRWStructuredBuffer; - (*KeywordMap)["StructuredBuffer"] = EHTokStructuredBuffer; - (*KeywordMap)["TextureBuffer"] = EHTokTextureBuffer; - - (*KeywordMap)["class"] = EHTokClass; - (*KeywordMap)["struct"] = EHTokStruct; - (*KeywordMap)["cbuffer"] = EHTokCBuffer; - (*KeywordMap)["ConstantBuffer"] = EHTokConstantBuffer; - (*KeywordMap)["tbuffer"] = EHTokTBuffer; - (*KeywordMap)["typedef"] = EHTokTypedef; - (*KeywordMap)["this"] = EHTokThis; - (*KeywordMap)["namespace"] = EHTokNamespace; - - (*KeywordMap)["true"] = EHTokBoolConstant; - (*KeywordMap)["false"] = EHTokBoolConstant; - - (*KeywordMap)["for"] = EHTokFor; - (*KeywordMap)["do"] = EHTokDo; - (*KeywordMap)["while"] = EHTokWhile; - (*KeywordMap)["break"] = EHTokBreak; - (*KeywordMap)["continue"] = EHTokContinue; - (*KeywordMap)["if"] = EHTokIf; - (*KeywordMap)["else"] = EHTokElse; - (*KeywordMap)["discard"] = EHTokDiscard; - (*KeywordMap)["return"] = EHTokReturn; - (*KeywordMap)["switch"] = EHTokSwitch; - (*KeywordMap)["case"] = EHTokCase; - (*KeywordMap)["default"] = EHTokDefault; - - // TODO: get correct set here - ReservedSet = new std::unordered_set; - - ReservedSet->insert("auto"); - ReservedSet->insert("catch"); - ReservedSet->insert("char"); - ReservedSet->insert("const_cast"); - ReservedSet->insert("enum"); - ReservedSet->insert("explicit"); - ReservedSet->insert("friend"); - ReservedSet->insert("goto"); - ReservedSet->insert("long"); - ReservedSet->insert("mutable"); - ReservedSet->insert("new"); - ReservedSet->insert("operator"); - ReservedSet->insert("private"); - ReservedSet->insert("protected"); - ReservedSet->insert("public"); - ReservedSet->insert("reinterpret_cast"); - ReservedSet->insert("short"); - ReservedSet->insert("signed"); - ReservedSet->insert("sizeof"); - ReservedSet->insert("static_cast"); - ReservedSet->insert("template"); - ReservedSet->insert("throw"); - ReservedSet->insert("try"); - ReservedSet->insert("typename"); - ReservedSet->insert("union"); - ReservedSet->insert("unsigned"); - ReservedSet->insert("using"); - ReservedSet->insert("virtual"); - - SemanticMap = new std::unordered_map; +const std::unordered_set ReservedSet { + "auto", + "catch", + "char", + "const_cast", + "enum", + "explicit", + "friend", + "goto", + "long", + "mutable", + "new", + "operator", + "private", + "protected", + "public", + "reinterpret_cast", + "short", + "signed", + "sizeof", + "static_cast", + "template", + "throw", + "try", + "typename", + "union", + "unsigned", + "using", + "virtual", +}; +std::unordered_map SemanticMap { // in DX9, all outputs had to have a semantic associated with them, that was either consumed // by the system or was a specific register assignment @@ -494,49 +476,41 @@ void HlslScanContext::fillInKeywordMap() // Also, in DX10 if a SV value is present as the input of a stage, but isn't appropriate for that // stage, it would just be ignored as it is likely there as part of an output struct from one stage // to the next - bool bParseDX9 = false; - if (bParseDX9) { - (*SemanticMap)["PSIZE"] = EbvPointSize; - (*SemanticMap)["FOG"] = EbvFogFragCoord; - (*SemanticMap)["DEPTH"] = EbvFragDepth; - (*SemanticMap)["VFACE"] = EbvFace; - (*SemanticMap)["VPOS"] = EbvFragCoord; - } - - (*SemanticMap)["SV_POSITION"] = EbvPosition; - (*SemanticMap)["SV_VERTEXID"] = EbvVertexIndex; - (*SemanticMap)["SV_VIEWPORTARRAYINDEX"] = EbvViewportIndex; - (*SemanticMap)["SV_TESSFACTOR"] = EbvTessLevelOuter; - (*SemanticMap)["SV_SAMPLEINDEX"] = EbvSampleId; - (*SemanticMap)["SV_RENDERTARGETARRAYINDEX"] = EbvLayer; - (*SemanticMap)["SV_PRIMITIVEID"] = EbvPrimitiveId; - (*SemanticMap)["SV_OUTPUTCONTROLPOINTID"] = EbvInvocationId; - (*SemanticMap)["SV_ISFRONTFACE"] = EbvFace; - (*SemanticMap)["SV_VIEWID"] = EbvViewIndex; - (*SemanticMap)["SV_INSTANCEID"] = EbvInstanceIndex; - (*SemanticMap)["SV_INSIDETESSFACTOR"] = EbvTessLevelInner; - (*SemanticMap)["SV_GSINSTANCEID"] = EbvInvocationId; - (*SemanticMap)["SV_DISPATCHTHREADID"] = EbvGlobalInvocationId; - (*SemanticMap)["SV_GROUPTHREADID"] = EbvLocalInvocationId; - (*SemanticMap)["SV_GROUPINDEX"] = EbvLocalInvocationIndex; - (*SemanticMap)["SV_GROUPID"] = EbvWorkGroupId; - (*SemanticMap)["SV_DOMAINLOCATION"] = EbvTessCoord; - (*SemanticMap)["SV_DEPTH"] = EbvFragDepth; - (*SemanticMap)["SV_COVERAGE"] = EbvSampleMask; - (*SemanticMap)["SV_DEPTHGREATEREQUAL"] = EbvFragDepthGreater; - (*SemanticMap)["SV_DEPTHLESSEQUAL"] = EbvFragDepthLesser; - (*SemanticMap)["SV_STENCILREF"] = EbvFragStencilRef; +#if 0 + (*SemanticMap)["PSIZE"] = EbvPointSize; + (*SemanticMap)["FOG"] = EbvFogFragCoord; + (*SemanticMap)["DEPTH"] = EbvFragDepth; + (*SemanticMap)["VFACE"] = EbvFace; + (*SemanticMap)["VPOS"] = EbvFragCoord; +#endif + + {"SV_POSITION",glslang::EbvPosition}, + {"SV_VERTEXID",glslang::EbvVertexIndex}, + {"SV_VIEWPORTARRAYINDEX",glslang::EbvViewportIndex}, + {"SV_TESSFACTOR",glslang::EbvTessLevelOuter}, + {"SV_SAMPLEINDEX",glslang::EbvSampleId}, + {"SV_RENDERTARGETARRAYINDEX",glslang::EbvLayer}, + {"SV_PRIMITIVEID",glslang::EbvPrimitiveId}, + {"SV_OUTPUTCONTROLPOINTID",glslang::EbvInvocationId}, + {"SV_ISFRONTFACE",glslang::EbvFace}, + {"SV_VIEWID",glslang::EbvViewIndex}, + {"SV_INSTANCEID",glslang::EbvInstanceIndex}, + {"SV_INSIDETESSFACTOR",glslang::EbvTessLevelInner}, + {"SV_GSINSTANCEID",glslang::EbvInvocationId}, + {"SV_DISPATCHTHREADID",glslang::EbvGlobalInvocationId}, + {"SV_GROUPTHREADID",glslang::EbvLocalInvocationId}, + {"SV_GROUPINDEX",glslang::EbvLocalInvocationIndex}, + {"SV_GROUPID",glslang::EbvWorkGroupId}, + {"SV_DOMAINLOCATION",glslang::EbvTessCoord}, + {"SV_DEPTH",glslang::EbvFragDepth}, + {"SV_COVERAGE",glslang::EbvSampleMask}, + {"SV_DEPTHGREATEREQUAL",glslang::EbvFragDepthGreater}, + {"SV_DEPTHLESSEQUAL",glslang::EbvFragDepthLesser}, + {"SV_STENCILREF", glslang::EbvFragStencilRef}, +}; } -void HlslScanContext::deleteKeywordMap() -{ - delete KeywordMap; - KeywordMap = nullptr; - delete ReservedSet; - ReservedSet = nullptr; - delete SemanticMap; - SemanticMap = nullptr; -} +namespace glslang { // Wrapper for tokenizeClass() to get everything inside the token. void HlslScanContext::tokenize(HlslToken& token) @@ -547,8 +521,8 @@ void HlslScanContext::tokenize(HlslToken& token) glslang::TBuiltInVariable HlslScanContext::mapSemantic(const char* upperCase) { - auto it = SemanticMap->find(upperCase); - if (it != SemanticMap->end()) + auto it = SemanticMap.find(upperCase); + if (it != SemanticMap.end()) return it->second; else return glslang::EbvNone; @@ -664,11 +638,11 @@ EHlslTokenClass HlslScanContext::tokenizeClass(HlslToken& token) EHlslTokenClass HlslScanContext::tokenizeIdentifier() { - if (ReservedSet->find(tokenText) != ReservedSet->end()) + if (ReservedSet.find(tokenText) != ReservedSet.end()) return reservedWord(); - auto it = KeywordMap->find(tokenText); - if (it == KeywordMap->end()) { + auto it = KeywordMap.find(tokenText); + if (it == KeywordMap.end()) { // Should have an identifier of some sort return identifierOrType(); } diff --git a/glslang/MachineIndependent/Scan.cpp b/glslang/MachineIndependent/Scan.cpp index 44546596e4..a90edb32f9 100644 --- a/glslang/MachineIndependent/Scan.cpp +++ b/glslang/MachineIndependent/Scan.cpp @@ -322,503 +322,481 @@ struct str_hash }; // A single global usable by all threads, by all versions, by all languages. -// After a single process-level initialization, this is read only and thread safe -std::unordered_map* KeywordMap = nullptr; -std::unordered_set* ReservedSet = nullptr; - -} - -namespace glslang { - -void TScanContext::fillInKeywordMap() -{ - if (KeywordMap != nullptr) { - // this is really an error, as this should called only once per process - // but, the only risk is if two threads called simultaneously - return; - } - KeywordMap = new std::unordered_map; - - (*KeywordMap)["const"] = CONST; - (*KeywordMap)["uniform"] = UNIFORM; - (*KeywordMap)["tileImageEXT"] = TILEIMAGEEXT; - (*KeywordMap)["buffer"] = BUFFER; - (*KeywordMap)["in"] = IN; - (*KeywordMap)["out"] = OUT; - (*KeywordMap)["smooth"] = SMOOTH; - (*KeywordMap)["flat"] = FLAT; - (*KeywordMap)["centroid"] = CENTROID; - (*KeywordMap)["invariant"] = INVARIANT; - (*KeywordMap)["packed"] = PACKED; - (*KeywordMap)["resource"] = RESOURCE; - (*KeywordMap)["inout"] = INOUT; - (*KeywordMap)["struct"] = STRUCT; - (*KeywordMap)["break"] = BREAK; - (*KeywordMap)["continue"] = CONTINUE; - (*KeywordMap)["do"] = DO; - (*KeywordMap)["for"] = FOR; - (*KeywordMap)["while"] = WHILE; - (*KeywordMap)["switch"] = SWITCH; - (*KeywordMap)["case"] = CASE; - (*KeywordMap)["default"] = DEFAULT; - (*KeywordMap)["if"] = IF; - (*KeywordMap)["else"] = ELSE; - (*KeywordMap)["discard"] = DISCARD; - (*KeywordMap)["terminateInvocation"] = TERMINATE_INVOCATION; - (*KeywordMap)["terminateRayEXT"] = TERMINATE_RAY; - (*KeywordMap)["ignoreIntersectionEXT"] = IGNORE_INTERSECTION; - (*KeywordMap)["return"] = RETURN; - (*KeywordMap)["void"] = VOID; - (*KeywordMap)["bool"] = BOOL; - (*KeywordMap)["float"] = FLOAT; - (*KeywordMap)["int"] = INT; - (*KeywordMap)["bvec2"] = BVEC2; - (*KeywordMap)["bvec3"] = BVEC3; - (*KeywordMap)["bvec4"] = BVEC4; - (*KeywordMap)["vec2"] = VEC2; - (*KeywordMap)["vec3"] = VEC3; - (*KeywordMap)["vec4"] = VEC4; - (*KeywordMap)["ivec2"] = IVEC2; - (*KeywordMap)["ivec3"] = IVEC3; - (*KeywordMap)["ivec4"] = IVEC4; - (*KeywordMap)["mat2"] = MAT2; - (*KeywordMap)["mat3"] = MAT3; - (*KeywordMap)["mat4"] = MAT4; - (*KeywordMap)["true"] = BOOLCONSTANT; - (*KeywordMap)["false"] = BOOLCONSTANT; - (*KeywordMap)["layout"] = LAYOUT; - (*KeywordMap)["shared"] = SHARED; - (*KeywordMap)["highp"] = HIGH_PRECISION; - (*KeywordMap)["mediump"] = MEDIUM_PRECISION; - (*KeywordMap)["lowp"] = LOW_PRECISION; - (*KeywordMap)["superp"] = SUPERP; - (*KeywordMap)["precision"] = PRECISION; - (*KeywordMap)["mat2x2"] = MAT2X2; - (*KeywordMap)["mat2x3"] = MAT2X3; - (*KeywordMap)["mat2x4"] = MAT2X4; - (*KeywordMap)["mat3x2"] = MAT3X2; - (*KeywordMap)["mat3x3"] = MAT3X3; - (*KeywordMap)["mat3x4"] = MAT3X4; - (*KeywordMap)["mat4x2"] = MAT4X2; - (*KeywordMap)["mat4x3"] = MAT4X3; - (*KeywordMap)["mat4x4"] = MAT4X4; - (*KeywordMap)["uint"] = UINT; - (*KeywordMap)["uvec2"] = UVEC2; - (*KeywordMap)["uvec3"] = UVEC3; - (*KeywordMap)["uvec4"] = UVEC4; - - (*KeywordMap)["nonuniformEXT"] = NONUNIFORM; - (*KeywordMap)["demote"] = DEMOTE; - (*KeywordMap)["attribute"] = ATTRIBUTE; - (*KeywordMap)["varying"] = VARYING; - (*KeywordMap)["noperspective"] = NOPERSPECTIVE; - (*KeywordMap)["coherent"] = COHERENT; - (*KeywordMap)["devicecoherent"] = DEVICECOHERENT; - (*KeywordMap)["queuefamilycoherent"] = QUEUEFAMILYCOHERENT; - (*KeywordMap)["workgroupcoherent"] = WORKGROUPCOHERENT; - (*KeywordMap)["subgroupcoherent"] = SUBGROUPCOHERENT; - (*KeywordMap)["shadercallcoherent"] = SHADERCALLCOHERENT; - (*KeywordMap)["nonprivate"] = NONPRIVATE; - (*KeywordMap)["restrict"] = RESTRICT; - (*KeywordMap)["readonly"] = READONLY; - (*KeywordMap)["writeonly"] = WRITEONLY; - (*KeywordMap)["atomic_uint"] = ATOMIC_UINT; - (*KeywordMap)["volatile"] = VOLATILE; - (*KeywordMap)["patch"] = PATCH; - (*KeywordMap)["sample"] = SAMPLE; - (*KeywordMap)["subroutine"] = SUBROUTINE; - (*KeywordMap)["dmat2"] = DMAT2; - (*KeywordMap)["dmat3"] = DMAT3; - (*KeywordMap)["dmat4"] = DMAT4; - (*KeywordMap)["dmat2x2"] = DMAT2X2; - (*KeywordMap)["dmat2x3"] = DMAT2X3; - (*KeywordMap)["dmat2x4"] = DMAT2X4; - (*KeywordMap)["dmat3x2"] = DMAT3X2; - (*KeywordMap)["dmat3x3"] = DMAT3X3; - (*KeywordMap)["dmat3x4"] = DMAT3X4; - (*KeywordMap)["dmat4x2"] = DMAT4X2; - (*KeywordMap)["dmat4x3"] = DMAT4X3; - (*KeywordMap)["dmat4x4"] = DMAT4X4; - (*KeywordMap)["image1D"] = IMAGE1D; - (*KeywordMap)["iimage1D"] = IIMAGE1D; - (*KeywordMap)["uimage1D"] = UIMAGE1D; - (*KeywordMap)["image2D"] = IMAGE2D; - (*KeywordMap)["iimage2D"] = IIMAGE2D; - (*KeywordMap)["uimage2D"] = UIMAGE2D; - (*KeywordMap)["image3D"] = IMAGE3D; - (*KeywordMap)["iimage3D"] = IIMAGE3D; - (*KeywordMap)["uimage3D"] = UIMAGE3D; - (*KeywordMap)["image2DRect"] = IMAGE2DRECT; - (*KeywordMap)["iimage2DRect"] = IIMAGE2DRECT; - (*KeywordMap)["uimage2DRect"] = UIMAGE2DRECT; - (*KeywordMap)["imageCube"] = IMAGECUBE; - (*KeywordMap)["iimageCube"] = IIMAGECUBE; - (*KeywordMap)["uimageCube"] = UIMAGECUBE; - (*KeywordMap)["imageBuffer"] = IMAGEBUFFER; - (*KeywordMap)["iimageBuffer"] = IIMAGEBUFFER; - (*KeywordMap)["uimageBuffer"] = UIMAGEBUFFER; - (*KeywordMap)["image1DArray"] = IMAGE1DARRAY; - (*KeywordMap)["iimage1DArray"] = IIMAGE1DARRAY; - (*KeywordMap)["uimage1DArray"] = UIMAGE1DARRAY; - (*KeywordMap)["image2DArray"] = IMAGE2DARRAY; - (*KeywordMap)["iimage2DArray"] = IIMAGE2DARRAY; - (*KeywordMap)["uimage2DArray"] = UIMAGE2DARRAY; - (*KeywordMap)["imageCubeArray"] = IMAGECUBEARRAY; - (*KeywordMap)["iimageCubeArray"] = IIMAGECUBEARRAY; - (*KeywordMap)["uimageCubeArray"] = UIMAGECUBEARRAY; - (*KeywordMap)["image2DMS"] = IMAGE2DMS; - (*KeywordMap)["iimage2DMS"] = IIMAGE2DMS; - (*KeywordMap)["uimage2DMS"] = UIMAGE2DMS; - (*KeywordMap)["image2DMSArray"] = IMAGE2DMSARRAY; - (*KeywordMap)["iimage2DMSArray"] = IIMAGE2DMSARRAY; - (*KeywordMap)["uimage2DMSArray"] = UIMAGE2DMSARRAY; - (*KeywordMap)["i64image1D"] = I64IMAGE1D; - (*KeywordMap)["u64image1D"] = U64IMAGE1D; - (*KeywordMap)["i64image2D"] = I64IMAGE2D; - (*KeywordMap)["u64image2D"] = U64IMAGE2D; - (*KeywordMap)["i64image3D"] = I64IMAGE3D; - (*KeywordMap)["u64image3D"] = U64IMAGE3D; - (*KeywordMap)["i64image2DRect"] = I64IMAGE2DRECT; - (*KeywordMap)["u64image2DRect"] = U64IMAGE2DRECT; - (*KeywordMap)["i64imageCube"] = I64IMAGECUBE; - (*KeywordMap)["u64imageCube"] = U64IMAGECUBE; - (*KeywordMap)["i64imageBuffer"] = I64IMAGEBUFFER; - (*KeywordMap)["u64imageBuffer"] = U64IMAGEBUFFER; - (*KeywordMap)["i64image1DArray"] = I64IMAGE1DARRAY; - (*KeywordMap)["u64image1DArray"] = U64IMAGE1DARRAY; - (*KeywordMap)["i64image2DArray"] = I64IMAGE2DARRAY; - (*KeywordMap)["u64image2DArray"] = U64IMAGE2DARRAY; - (*KeywordMap)["i64imageCubeArray"] = I64IMAGECUBEARRAY; - (*KeywordMap)["u64imageCubeArray"] = U64IMAGECUBEARRAY; - (*KeywordMap)["i64image2DMS"] = I64IMAGE2DMS; - (*KeywordMap)["u64image2DMS"] = U64IMAGE2DMS; - (*KeywordMap)["i64image2DMSArray"] = I64IMAGE2DMSARRAY; - (*KeywordMap)["u64image2DMSArray"] = U64IMAGE2DMSARRAY; - (*KeywordMap)["double"] = DOUBLE; - (*KeywordMap)["dvec2"] = DVEC2; - (*KeywordMap)["dvec3"] = DVEC3; - (*KeywordMap)["dvec4"] = DVEC4; - (*KeywordMap)["int64_t"] = INT64_T; - (*KeywordMap)["uint64_t"] = UINT64_T; - (*KeywordMap)["i64vec2"] = I64VEC2; - (*KeywordMap)["i64vec3"] = I64VEC3; - (*KeywordMap)["i64vec4"] = I64VEC4; - (*KeywordMap)["u64vec2"] = U64VEC2; - (*KeywordMap)["u64vec3"] = U64VEC3; - (*KeywordMap)["u64vec4"] = U64VEC4; +const std::unordered_map KeywordMap { + {"const",CONST}, + {"uniform",UNIFORM}, + {"tileImageEXT",TILEIMAGEEXT}, + {"buffer",BUFFER}, + {"in",IN}, + {"out",OUT}, + {"smooth",SMOOTH}, + {"flat",FLAT}, + {"centroid",CENTROID}, + {"invariant",INVARIANT}, + {"packed",PACKED}, + {"resource",RESOURCE}, + {"inout",INOUT}, + {"struct",STRUCT}, + {"break",BREAK}, + {"continue",CONTINUE}, + {"do",DO}, + {"for",FOR}, + {"while",WHILE}, + {"switch",SWITCH}, + {"case",CASE}, + {"default",DEFAULT}, + {"if",IF}, + {"else",ELSE}, + {"discard",DISCARD}, + {"terminateInvocation",TERMINATE_INVOCATION}, + {"terminateRayEXT",TERMINATE_RAY}, + {"ignoreIntersectionEXT",IGNORE_INTERSECTION}, + {"return",RETURN}, + {"void",VOID}, + {"bool",BOOL}, + {"float",FLOAT}, + {"int",INT}, + {"bvec2",BVEC2}, + {"bvec3",BVEC3}, + {"bvec4",BVEC4}, + {"vec2",VEC2}, + {"vec3",VEC3}, + {"vec4",VEC4}, + {"ivec2",IVEC2}, + {"ivec3",IVEC3}, + {"ivec4",IVEC4}, + {"mat2",MAT2}, + {"mat3",MAT3}, + {"mat4",MAT4}, + {"true",BOOLCONSTANT}, + {"false",BOOLCONSTANT}, + {"layout",LAYOUT}, + {"shared",SHARED}, + {"highp",HIGH_PRECISION}, + {"mediump",MEDIUM_PRECISION}, + {"lowp",LOW_PRECISION}, + {"superp",SUPERP}, + {"precision",PRECISION}, + {"mat2x2",MAT2X2}, + {"mat2x3",MAT2X3}, + {"mat2x4",MAT2X4}, + {"mat3x2",MAT3X2}, + {"mat3x3",MAT3X3}, + {"mat3x4",MAT3X4}, + {"mat4x2",MAT4X2}, + {"mat4x3",MAT4X3}, + {"mat4x4",MAT4X4}, + {"uint",UINT}, + {"uvec2",UVEC2}, + {"uvec3",UVEC3}, + {"uvec4",UVEC4}, + + {"nonuniformEXT",NONUNIFORM}, + {"demote",DEMOTE}, + {"attribute",ATTRIBUTE}, + {"varying",VARYING}, + {"noperspective",NOPERSPECTIVE}, + {"coherent",COHERENT}, + {"devicecoherent",DEVICECOHERENT}, + {"queuefamilycoherent",QUEUEFAMILYCOHERENT}, + {"workgroupcoherent",WORKGROUPCOHERENT}, + {"subgroupcoherent",SUBGROUPCOHERENT}, + {"shadercallcoherent",SHADERCALLCOHERENT}, + {"nonprivate",NONPRIVATE}, + {"restrict",RESTRICT}, + {"readonly",READONLY}, + {"writeonly",WRITEONLY}, + {"atomic_uint",ATOMIC_UINT}, + {"volatile",VOLATILE}, + {"patch",PATCH}, + {"sample",SAMPLE}, + {"subroutine",SUBROUTINE}, + {"dmat2",DMAT2}, + {"dmat3",DMAT3}, + {"dmat4",DMAT4}, + {"dmat2x2",DMAT2X2}, + {"dmat2x3",DMAT2X3}, + {"dmat2x4",DMAT2X4}, + {"dmat3x2",DMAT3X2}, + {"dmat3x3",DMAT3X3}, + {"dmat3x4",DMAT3X4}, + {"dmat4x2",DMAT4X2}, + {"dmat4x3",DMAT4X3}, + {"dmat4x4",DMAT4X4}, + {"image1D",IMAGE1D}, + {"iimage1D",IIMAGE1D}, + {"uimage1D",UIMAGE1D}, + {"image2D",IMAGE2D}, + {"iimage2D",IIMAGE2D}, + {"uimage2D",UIMAGE2D}, + {"image3D",IMAGE3D}, + {"iimage3D",IIMAGE3D}, + {"uimage3D",UIMAGE3D}, + {"image2DRect",IMAGE2DRECT}, + {"iimage2DRect",IIMAGE2DRECT}, + {"uimage2DRect",UIMAGE2DRECT}, + {"imageCube",IMAGECUBE}, + {"iimageCube",IIMAGECUBE}, + {"uimageCube",UIMAGECUBE}, + {"imageBuffer",IMAGEBUFFER}, + {"iimageBuffer",IIMAGEBUFFER}, + {"uimageBuffer",UIMAGEBUFFER}, + {"image1DArray",IMAGE1DARRAY}, + {"iimage1DArray",IIMAGE1DARRAY}, + {"uimage1DArray",UIMAGE1DARRAY}, + {"image2DArray",IMAGE2DARRAY}, + {"iimage2DArray",IIMAGE2DARRAY}, + {"uimage2DArray",UIMAGE2DARRAY}, + {"imageCubeArray",IMAGECUBEARRAY}, + {"iimageCubeArray",IIMAGECUBEARRAY}, + {"uimageCubeArray",UIMAGECUBEARRAY}, + {"image2DMS",IMAGE2DMS}, + {"iimage2DMS",IIMAGE2DMS}, + {"uimage2DMS",UIMAGE2DMS}, + {"image2DMSArray",IMAGE2DMSARRAY}, + {"iimage2DMSArray",IIMAGE2DMSARRAY}, + {"uimage2DMSArray",UIMAGE2DMSARRAY}, + {"i64image1D",I64IMAGE1D}, + {"u64image1D",U64IMAGE1D}, + {"i64image2D",I64IMAGE2D}, + {"u64image2D",U64IMAGE2D}, + {"i64image3D",I64IMAGE3D}, + {"u64image3D",U64IMAGE3D}, + {"i64image2DRect",I64IMAGE2DRECT}, + {"u64image2DRect",U64IMAGE2DRECT}, + {"i64imageCube",I64IMAGECUBE}, + {"u64imageCube",U64IMAGECUBE}, + {"i64imageBuffer",I64IMAGEBUFFER}, + {"u64imageBuffer",U64IMAGEBUFFER}, + {"i64image1DArray",I64IMAGE1DARRAY}, + {"u64image1DArray",U64IMAGE1DARRAY}, + {"i64image2DArray",I64IMAGE2DARRAY}, + {"u64image2DArray",U64IMAGE2DARRAY}, + {"i64imageCubeArray",I64IMAGECUBEARRAY}, + {"u64imageCubeArray",U64IMAGECUBEARRAY}, + {"i64image2DMS",I64IMAGE2DMS}, + {"u64image2DMS",U64IMAGE2DMS}, + {"i64image2DMSArray",I64IMAGE2DMSARRAY}, + {"u64image2DMSArray",U64IMAGE2DMSARRAY}, + {"double",DOUBLE}, + {"dvec2",DVEC2}, + {"dvec3",DVEC3}, + {"dvec4",DVEC4}, + {"int64_t",INT64_T}, + {"uint64_t",UINT64_T}, + {"i64vec2",I64VEC2}, + {"i64vec3",I64VEC3}, + {"i64vec4",I64VEC4}, + {"u64vec2",U64VEC2}, + {"u64vec3",U64VEC3}, + {"u64vec4",U64VEC4}, // GL_EXT_shader_explicit_arithmetic_types - (*KeywordMap)["int8_t"] = INT8_T; - (*KeywordMap)["i8vec2"] = I8VEC2; - (*KeywordMap)["i8vec3"] = I8VEC3; - (*KeywordMap)["i8vec4"] = I8VEC4; - (*KeywordMap)["uint8_t"] = UINT8_T; - (*KeywordMap)["u8vec2"] = U8VEC2; - (*KeywordMap)["u8vec3"] = U8VEC3; - (*KeywordMap)["u8vec4"] = U8VEC4; - - (*KeywordMap)["int16_t"] = INT16_T; - (*KeywordMap)["i16vec2"] = I16VEC2; - (*KeywordMap)["i16vec3"] = I16VEC3; - (*KeywordMap)["i16vec4"] = I16VEC4; - (*KeywordMap)["uint16_t"] = UINT16_T; - (*KeywordMap)["u16vec2"] = U16VEC2; - (*KeywordMap)["u16vec3"] = U16VEC3; - (*KeywordMap)["u16vec4"] = U16VEC4; - - (*KeywordMap)["int32_t"] = INT32_T; - (*KeywordMap)["i32vec2"] = I32VEC2; - (*KeywordMap)["i32vec3"] = I32VEC3; - (*KeywordMap)["i32vec4"] = I32VEC4; - (*KeywordMap)["uint32_t"] = UINT32_T; - (*KeywordMap)["u32vec2"] = U32VEC2; - (*KeywordMap)["u32vec3"] = U32VEC3; - (*KeywordMap)["u32vec4"] = U32VEC4; - - (*KeywordMap)["float16_t"] = FLOAT16_T; - (*KeywordMap)["f16vec2"] = F16VEC2; - (*KeywordMap)["f16vec3"] = F16VEC3; - (*KeywordMap)["f16vec4"] = F16VEC4; - (*KeywordMap)["f16mat2"] = F16MAT2; - (*KeywordMap)["f16mat3"] = F16MAT3; - (*KeywordMap)["f16mat4"] = F16MAT4; - (*KeywordMap)["f16mat2x2"] = F16MAT2X2; - (*KeywordMap)["f16mat2x3"] = F16MAT2X3; - (*KeywordMap)["f16mat2x4"] = F16MAT2X4; - (*KeywordMap)["f16mat3x2"] = F16MAT3X2; - (*KeywordMap)["f16mat3x3"] = F16MAT3X3; - (*KeywordMap)["f16mat3x4"] = F16MAT3X4; - (*KeywordMap)["f16mat4x2"] = F16MAT4X2; - (*KeywordMap)["f16mat4x3"] = F16MAT4X3; - (*KeywordMap)["f16mat4x4"] = F16MAT4X4; - - (*KeywordMap)["float32_t"] = FLOAT32_T; - (*KeywordMap)["f32vec2"] = F32VEC2; - (*KeywordMap)["f32vec3"] = F32VEC3; - (*KeywordMap)["f32vec4"] = F32VEC4; - (*KeywordMap)["f32mat2"] = F32MAT2; - (*KeywordMap)["f32mat3"] = F32MAT3; - (*KeywordMap)["f32mat4"] = F32MAT4; - (*KeywordMap)["f32mat2x2"] = F32MAT2X2; - (*KeywordMap)["f32mat2x3"] = F32MAT2X3; - (*KeywordMap)["f32mat2x4"] = F32MAT2X4; - (*KeywordMap)["f32mat3x2"] = F32MAT3X2; - (*KeywordMap)["f32mat3x3"] = F32MAT3X3; - (*KeywordMap)["f32mat3x4"] = F32MAT3X4; - (*KeywordMap)["f32mat4x2"] = F32MAT4X2; - (*KeywordMap)["f32mat4x3"] = F32MAT4X3; - (*KeywordMap)["f32mat4x4"] = F32MAT4X4; - (*KeywordMap)["float64_t"] = FLOAT64_T; - (*KeywordMap)["f64vec2"] = F64VEC2; - (*KeywordMap)["f64vec3"] = F64VEC3; - (*KeywordMap)["f64vec4"] = F64VEC4; - (*KeywordMap)["f64mat2"] = F64MAT2; - (*KeywordMap)["f64mat3"] = F64MAT3; - (*KeywordMap)["f64mat4"] = F64MAT4; - (*KeywordMap)["f64mat2x2"] = F64MAT2X2; - (*KeywordMap)["f64mat2x3"] = F64MAT2X3; - (*KeywordMap)["f64mat2x4"] = F64MAT2X4; - (*KeywordMap)["f64mat3x2"] = F64MAT3X2; - (*KeywordMap)["f64mat3x3"] = F64MAT3X3; - (*KeywordMap)["f64mat3x4"] = F64MAT3X4; - (*KeywordMap)["f64mat4x2"] = F64MAT4X2; - (*KeywordMap)["f64mat4x3"] = F64MAT4X3; - (*KeywordMap)["f64mat4x4"] = F64MAT4X4; + {"int8_t",INT8_T}, + {"i8vec2",I8VEC2}, + {"i8vec3",I8VEC3}, + {"i8vec4",I8VEC4}, + {"uint8_t",UINT8_T}, + {"u8vec2",U8VEC2}, + {"u8vec3",U8VEC3}, + {"u8vec4",U8VEC4}, + + {"int16_t",INT16_T}, + {"i16vec2",I16VEC2}, + {"i16vec3",I16VEC3}, + {"i16vec4",I16VEC4}, + {"uint16_t",UINT16_T}, + {"u16vec2",U16VEC2}, + {"u16vec3",U16VEC3}, + {"u16vec4",U16VEC4}, + + {"int32_t",INT32_T}, + {"i32vec2",I32VEC2}, + {"i32vec3",I32VEC3}, + {"i32vec4",I32VEC4}, + {"uint32_t",UINT32_T}, + {"u32vec2",U32VEC2}, + {"u32vec3",U32VEC3}, + {"u32vec4",U32VEC4}, + + {"float16_t",FLOAT16_T}, + {"f16vec2",F16VEC2}, + {"f16vec3",F16VEC3}, + {"f16vec4",F16VEC4}, + {"f16mat2",F16MAT2}, + {"f16mat3",F16MAT3}, + {"f16mat4",F16MAT4}, + {"f16mat2x2",F16MAT2X2}, + {"f16mat2x3",F16MAT2X3}, + {"f16mat2x4",F16MAT2X4}, + {"f16mat3x2",F16MAT3X2}, + {"f16mat3x3",F16MAT3X3}, + {"f16mat3x4",F16MAT3X4}, + {"f16mat4x2",F16MAT4X2}, + {"f16mat4x3",F16MAT4X3}, + {"f16mat4x4",F16MAT4X4}, + + {"float32_t",FLOAT32_T}, + {"f32vec2",F32VEC2}, + {"f32vec3",F32VEC3}, + {"f32vec4",F32VEC4}, + {"f32mat2",F32MAT2}, + {"f32mat3",F32MAT3}, + {"f32mat4",F32MAT4}, + {"f32mat2x2",F32MAT2X2}, + {"f32mat2x3",F32MAT2X3}, + {"f32mat2x4",F32MAT2X4}, + {"f32mat3x2",F32MAT3X2}, + {"f32mat3x3",F32MAT3X3}, + {"f32mat3x4",F32MAT3X4}, + {"f32mat4x2",F32MAT4X2}, + {"f32mat4x3",F32MAT4X3}, + {"f32mat4x4",F32MAT4X4}, + {"float64_t",FLOAT64_T}, + {"f64vec2",F64VEC2}, + {"f64vec3",F64VEC3}, + {"f64vec4",F64VEC4}, + {"f64mat2",F64MAT2}, + {"f64mat3",F64MAT3}, + {"f64mat4",F64MAT4}, + {"f64mat2x2",F64MAT2X2}, + {"f64mat2x3",F64MAT2X3}, + {"f64mat2x4",F64MAT2X4}, + {"f64mat3x2",F64MAT3X2}, + {"f64mat3x3",F64MAT3X3}, + {"f64mat3x4",F64MAT3X4}, + {"f64mat4x2",F64MAT4X2}, + {"f64mat4x3",F64MAT4X3}, + {"f64mat4x4",F64MAT4X4}, // GL_EXT_spirv_intrinsics - (*KeywordMap)["spirv_instruction"] = SPIRV_INSTRUCTION; - (*KeywordMap)["spirv_execution_mode"] = SPIRV_EXECUTION_MODE; - (*KeywordMap)["spirv_execution_mode_id"] = SPIRV_EXECUTION_MODE_ID; - (*KeywordMap)["spirv_decorate"] = SPIRV_DECORATE; - (*KeywordMap)["spirv_decorate_id"] = SPIRV_DECORATE_ID; - (*KeywordMap)["spirv_decorate_string"] = SPIRV_DECORATE_STRING; - (*KeywordMap)["spirv_type"] = SPIRV_TYPE; - (*KeywordMap)["spirv_storage_class"] = SPIRV_STORAGE_CLASS; - (*KeywordMap)["spirv_by_reference"] = SPIRV_BY_REFERENCE; - (*KeywordMap)["spirv_literal"] = SPIRV_LITERAL; - - (*KeywordMap)["sampler2D"] = SAMPLER2D; - (*KeywordMap)["samplerCube"] = SAMPLERCUBE; - (*KeywordMap)["samplerCubeShadow"] = SAMPLERCUBESHADOW; - (*KeywordMap)["sampler2DArray"] = SAMPLER2DARRAY; - (*KeywordMap)["sampler2DArrayShadow"] = SAMPLER2DARRAYSHADOW; - (*KeywordMap)["isampler2D"] = ISAMPLER2D; - (*KeywordMap)["isampler3D"] = ISAMPLER3D; - (*KeywordMap)["isamplerCube"] = ISAMPLERCUBE; - (*KeywordMap)["isampler2DArray"] = ISAMPLER2DARRAY; - (*KeywordMap)["usampler2D"] = USAMPLER2D; - (*KeywordMap)["usampler3D"] = USAMPLER3D; - (*KeywordMap)["usamplerCube"] = USAMPLERCUBE; - (*KeywordMap)["usampler2DArray"] = USAMPLER2DARRAY; - (*KeywordMap)["sampler3D"] = SAMPLER3D; - (*KeywordMap)["sampler2DShadow"] = SAMPLER2DSHADOW; - - (*KeywordMap)["texture2D"] = TEXTURE2D; - (*KeywordMap)["textureCube"] = TEXTURECUBE; - (*KeywordMap)["texture2DArray"] = TEXTURE2DARRAY; - (*KeywordMap)["itexture2D"] = ITEXTURE2D; - (*KeywordMap)["itexture3D"] = ITEXTURE3D; - (*KeywordMap)["itextureCube"] = ITEXTURECUBE; - (*KeywordMap)["itexture2DArray"] = ITEXTURE2DARRAY; - (*KeywordMap)["utexture2D"] = UTEXTURE2D; - (*KeywordMap)["utexture3D"] = UTEXTURE3D; - (*KeywordMap)["utextureCube"] = UTEXTURECUBE; - (*KeywordMap)["utexture2DArray"] = UTEXTURE2DARRAY; - (*KeywordMap)["texture3D"] = TEXTURE3D; - - (*KeywordMap)["sampler"] = SAMPLER; - (*KeywordMap)["samplerShadow"] = SAMPLERSHADOW; - - (*KeywordMap)["textureCubeArray"] = TEXTURECUBEARRAY; - (*KeywordMap)["itextureCubeArray"] = ITEXTURECUBEARRAY; - (*KeywordMap)["utextureCubeArray"] = UTEXTURECUBEARRAY; - (*KeywordMap)["samplerCubeArray"] = SAMPLERCUBEARRAY; - (*KeywordMap)["samplerCubeArrayShadow"] = SAMPLERCUBEARRAYSHADOW; - (*KeywordMap)["isamplerCubeArray"] = ISAMPLERCUBEARRAY; - (*KeywordMap)["usamplerCubeArray"] = USAMPLERCUBEARRAY; - (*KeywordMap)["sampler1DArrayShadow"] = SAMPLER1DARRAYSHADOW; - (*KeywordMap)["isampler1DArray"] = ISAMPLER1DARRAY; - (*KeywordMap)["usampler1D"] = USAMPLER1D; - (*KeywordMap)["isampler1D"] = ISAMPLER1D; - (*KeywordMap)["usampler1DArray"] = USAMPLER1DARRAY; - (*KeywordMap)["samplerBuffer"] = SAMPLERBUFFER; - (*KeywordMap)["isampler2DRect"] = ISAMPLER2DRECT; - (*KeywordMap)["usampler2DRect"] = USAMPLER2DRECT; - (*KeywordMap)["isamplerBuffer"] = ISAMPLERBUFFER; - (*KeywordMap)["usamplerBuffer"] = USAMPLERBUFFER; - (*KeywordMap)["sampler2DMS"] = SAMPLER2DMS; - (*KeywordMap)["isampler2DMS"] = ISAMPLER2DMS; - (*KeywordMap)["usampler2DMS"] = USAMPLER2DMS; - (*KeywordMap)["sampler2DMSArray"] = SAMPLER2DMSARRAY; - (*KeywordMap)["isampler2DMSArray"] = ISAMPLER2DMSARRAY; - (*KeywordMap)["usampler2DMSArray"] = USAMPLER2DMSARRAY; - (*KeywordMap)["sampler1D"] = SAMPLER1D; - (*KeywordMap)["sampler1DShadow"] = SAMPLER1DSHADOW; - (*KeywordMap)["sampler2DRect"] = SAMPLER2DRECT; - (*KeywordMap)["sampler2DRectShadow"] = SAMPLER2DRECTSHADOW; - (*KeywordMap)["sampler1DArray"] = SAMPLER1DARRAY; - - (*KeywordMap)["samplerExternalOES"] = SAMPLEREXTERNALOES; // GL_OES_EGL_image_external - - (*KeywordMap)["__samplerExternal2DY2YEXT"] = SAMPLEREXTERNAL2DY2YEXT; // GL_EXT_YUV_target - - (*KeywordMap)["itexture1DArray"] = ITEXTURE1DARRAY; - (*KeywordMap)["utexture1D"] = UTEXTURE1D; - (*KeywordMap)["itexture1D"] = ITEXTURE1D; - (*KeywordMap)["utexture1DArray"] = UTEXTURE1DARRAY; - (*KeywordMap)["textureBuffer"] = TEXTUREBUFFER; - (*KeywordMap)["itexture2DRect"] = ITEXTURE2DRECT; - (*KeywordMap)["utexture2DRect"] = UTEXTURE2DRECT; - (*KeywordMap)["itextureBuffer"] = ITEXTUREBUFFER; - (*KeywordMap)["utextureBuffer"] = UTEXTUREBUFFER; - (*KeywordMap)["texture2DMS"] = TEXTURE2DMS; - (*KeywordMap)["itexture2DMS"] = ITEXTURE2DMS; - (*KeywordMap)["utexture2DMS"] = UTEXTURE2DMS; - (*KeywordMap)["texture2DMSArray"] = TEXTURE2DMSARRAY; - (*KeywordMap)["itexture2DMSArray"] = ITEXTURE2DMSARRAY; - (*KeywordMap)["utexture2DMSArray"] = UTEXTURE2DMSARRAY; - (*KeywordMap)["texture1D"] = TEXTURE1D; - (*KeywordMap)["texture2DRect"] = TEXTURE2DRECT; - (*KeywordMap)["texture1DArray"] = TEXTURE1DARRAY; - - (*KeywordMap)["attachmentEXT"] = ATTACHMENTEXT; - (*KeywordMap)["iattachmentEXT"] = IATTACHMENTEXT; - (*KeywordMap)["uattachmentEXT"] = UATTACHMENTEXT; - - (*KeywordMap)["subpassInput"] = SUBPASSINPUT; - (*KeywordMap)["subpassInputMS"] = SUBPASSINPUTMS; - (*KeywordMap)["isubpassInput"] = ISUBPASSINPUT; - (*KeywordMap)["isubpassInputMS"] = ISUBPASSINPUTMS; - (*KeywordMap)["usubpassInput"] = USUBPASSINPUT; - (*KeywordMap)["usubpassInputMS"] = USUBPASSINPUTMS; - - (*KeywordMap)["f16sampler1D"] = F16SAMPLER1D; - (*KeywordMap)["f16sampler2D"] = F16SAMPLER2D; - (*KeywordMap)["f16sampler3D"] = F16SAMPLER3D; - (*KeywordMap)["f16sampler2DRect"] = F16SAMPLER2DRECT; - (*KeywordMap)["f16samplerCube"] = F16SAMPLERCUBE; - (*KeywordMap)["f16sampler1DArray"] = F16SAMPLER1DARRAY; - (*KeywordMap)["f16sampler2DArray"] = F16SAMPLER2DARRAY; - (*KeywordMap)["f16samplerCubeArray"] = F16SAMPLERCUBEARRAY; - (*KeywordMap)["f16samplerBuffer"] = F16SAMPLERBUFFER; - (*KeywordMap)["f16sampler2DMS"] = F16SAMPLER2DMS; - (*KeywordMap)["f16sampler2DMSArray"] = F16SAMPLER2DMSARRAY; - (*KeywordMap)["f16sampler1DShadow"] = F16SAMPLER1DSHADOW; - (*KeywordMap)["f16sampler2DShadow"] = F16SAMPLER2DSHADOW; - (*KeywordMap)["f16sampler2DRectShadow"] = F16SAMPLER2DRECTSHADOW; - (*KeywordMap)["f16samplerCubeShadow"] = F16SAMPLERCUBESHADOW; - (*KeywordMap)["f16sampler1DArrayShadow"] = F16SAMPLER1DARRAYSHADOW; - (*KeywordMap)["f16sampler2DArrayShadow"] = F16SAMPLER2DARRAYSHADOW; - (*KeywordMap)["f16samplerCubeArrayShadow"] = F16SAMPLERCUBEARRAYSHADOW; - - (*KeywordMap)["f16image1D"] = F16IMAGE1D; - (*KeywordMap)["f16image2D"] = F16IMAGE2D; - (*KeywordMap)["f16image3D"] = F16IMAGE3D; - (*KeywordMap)["f16image2DRect"] = F16IMAGE2DRECT; - (*KeywordMap)["f16imageCube"] = F16IMAGECUBE; - (*KeywordMap)["f16image1DArray"] = F16IMAGE1DARRAY; - (*KeywordMap)["f16image2DArray"] = F16IMAGE2DARRAY; - (*KeywordMap)["f16imageCubeArray"] = F16IMAGECUBEARRAY; - (*KeywordMap)["f16imageBuffer"] = F16IMAGEBUFFER; - (*KeywordMap)["f16image2DMS"] = F16IMAGE2DMS; - (*KeywordMap)["f16image2DMSArray"] = F16IMAGE2DMSARRAY; - - (*KeywordMap)["f16texture1D"] = F16TEXTURE1D; - (*KeywordMap)["f16texture2D"] = F16TEXTURE2D; - (*KeywordMap)["f16texture3D"] = F16TEXTURE3D; - (*KeywordMap)["f16texture2DRect"] = F16TEXTURE2DRECT; - (*KeywordMap)["f16textureCube"] = F16TEXTURECUBE; - (*KeywordMap)["f16texture1DArray"] = F16TEXTURE1DARRAY; - (*KeywordMap)["f16texture2DArray"] = F16TEXTURE2DARRAY; - (*KeywordMap)["f16textureCubeArray"] = F16TEXTURECUBEARRAY; - (*KeywordMap)["f16textureBuffer"] = F16TEXTUREBUFFER; - (*KeywordMap)["f16texture2DMS"] = F16TEXTURE2DMS; - (*KeywordMap)["f16texture2DMSArray"] = F16TEXTURE2DMSARRAY; - - (*KeywordMap)["f16subpassInput"] = F16SUBPASSINPUT; - (*KeywordMap)["f16subpassInputMS"] = F16SUBPASSINPUTMS; - (*KeywordMap)["__explicitInterpAMD"] = EXPLICITINTERPAMD; - (*KeywordMap)["pervertexNV"] = PERVERTEXNV; - (*KeywordMap)["pervertexEXT"] = PERVERTEXEXT; - (*KeywordMap)["precise"] = PRECISE; - - (*KeywordMap)["rayPayloadNV"] = PAYLOADNV; - (*KeywordMap)["rayPayloadEXT"] = PAYLOADEXT; - (*KeywordMap)["rayPayloadInNV"] = PAYLOADINNV; - (*KeywordMap)["rayPayloadInEXT"] = PAYLOADINEXT; - (*KeywordMap)["hitAttributeNV"] = HITATTRNV; - (*KeywordMap)["hitAttributeEXT"] = HITATTREXT; - (*KeywordMap)["callableDataNV"] = CALLDATANV; - (*KeywordMap)["callableDataEXT"] = CALLDATAEXT; - (*KeywordMap)["callableDataInNV"] = CALLDATAINNV; - (*KeywordMap)["callableDataInEXT"] = CALLDATAINEXT; - (*KeywordMap)["accelerationStructureNV"] = ACCSTRUCTNV; - (*KeywordMap)["accelerationStructureEXT"] = ACCSTRUCTEXT; - (*KeywordMap)["rayQueryEXT"] = RAYQUERYEXT; - (*KeywordMap)["perprimitiveNV"] = PERPRIMITIVENV; - (*KeywordMap)["perviewNV"] = PERVIEWNV; - (*KeywordMap)["taskNV"] = PERTASKNV; - (*KeywordMap)["perprimitiveEXT"] = PERPRIMITIVEEXT; - (*KeywordMap)["taskPayloadSharedEXT"] = TASKPAYLOADWORKGROUPEXT; - - (*KeywordMap)["fcoopmatNV"] = FCOOPMATNV; - (*KeywordMap)["icoopmatNV"] = ICOOPMATNV; - (*KeywordMap)["ucoopmatNV"] = UCOOPMATNV; - - (*KeywordMap)["coopmat"] = COOPMAT; - - (*KeywordMap)["hitObjectNV"] = HITOBJECTNV; - (*KeywordMap)["hitObjectAttributeNV"] = HITOBJECTATTRNV; - - ReservedSet = new std::unordered_set; - - ReservedSet->insert("common"); - ReservedSet->insert("partition"); - ReservedSet->insert("active"); - ReservedSet->insert("asm"); - ReservedSet->insert("class"); - ReservedSet->insert("union"); - ReservedSet->insert("enum"); - ReservedSet->insert("typedef"); - ReservedSet->insert("template"); - ReservedSet->insert("this"); - ReservedSet->insert("goto"); - ReservedSet->insert("inline"); - ReservedSet->insert("noinline"); - ReservedSet->insert("public"); - ReservedSet->insert("static"); - ReservedSet->insert("extern"); - ReservedSet->insert("external"); - ReservedSet->insert("interface"); - ReservedSet->insert("long"); - ReservedSet->insert("short"); - ReservedSet->insert("half"); - ReservedSet->insert("fixed"); - ReservedSet->insert("unsigned"); - ReservedSet->insert("input"); - ReservedSet->insert("output"); - ReservedSet->insert("hvec2"); - ReservedSet->insert("hvec3"); - ReservedSet->insert("hvec4"); - ReservedSet->insert("fvec2"); - ReservedSet->insert("fvec3"); - ReservedSet->insert("fvec4"); - ReservedSet->insert("sampler3DRect"); - ReservedSet->insert("filter"); - ReservedSet->insert("sizeof"); - ReservedSet->insert("cast"); - ReservedSet->insert("namespace"); - ReservedSet->insert("using"); -} + {"spirv_instruction",SPIRV_INSTRUCTION}, + {"spirv_execution_mode",SPIRV_EXECUTION_MODE}, + {"spirv_execution_mode_id",SPIRV_EXECUTION_MODE_ID}, + {"spirv_decorate",SPIRV_DECORATE}, + {"spirv_decorate_id",SPIRV_DECORATE_ID}, + {"spirv_decorate_string",SPIRV_DECORATE_STRING}, + {"spirv_type",SPIRV_TYPE}, + {"spirv_storage_class",SPIRV_STORAGE_CLASS}, + {"spirv_by_reference",SPIRV_BY_REFERENCE}, + {"spirv_literal",SPIRV_LITERAL}, + + {"sampler2D",SAMPLER2D}, + {"samplerCube",SAMPLERCUBE}, + {"samplerCubeShadow",SAMPLERCUBESHADOW}, + {"sampler2DArray",SAMPLER2DARRAY}, + {"sampler2DArrayShadow",SAMPLER2DARRAYSHADOW}, + {"isampler2D",ISAMPLER2D}, + {"isampler3D",ISAMPLER3D}, + {"isamplerCube",ISAMPLERCUBE}, + {"isampler2DArray",ISAMPLER2DARRAY}, + {"usampler2D",USAMPLER2D}, + {"usampler3D",USAMPLER3D}, + {"usamplerCube",USAMPLERCUBE}, + {"usampler2DArray",USAMPLER2DARRAY}, + {"sampler3D",SAMPLER3D}, + {"sampler2DShadow",SAMPLER2DSHADOW}, + + {"texture2D",TEXTURE2D}, + {"textureCube",TEXTURECUBE}, + {"texture2DArray",TEXTURE2DARRAY}, + {"itexture2D",ITEXTURE2D}, + {"itexture3D",ITEXTURE3D}, + {"itextureCube",ITEXTURECUBE}, + {"itexture2DArray",ITEXTURE2DARRAY}, + {"utexture2D",UTEXTURE2D}, + {"utexture3D",UTEXTURE3D}, + {"utextureCube",UTEXTURECUBE}, + {"utexture2DArray",UTEXTURE2DARRAY}, + {"texture3D",TEXTURE3D}, + + {"sampler",SAMPLER}, + {"samplerShadow",SAMPLERSHADOW}, + + {"textureCubeArray",TEXTURECUBEARRAY}, + {"itextureCubeArray",ITEXTURECUBEARRAY}, + {"utextureCubeArray",UTEXTURECUBEARRAY}, + {"samplerCubeArray",SAMPLERCUBEARRAY}, + {"samplerCubeArrayShadow",SAMPLERCUBEARRAYSHADOW}, + {"isamplerCubeArray",ISAMPLERCUBEARRAY}, + {"usamplerCubeArray",USAMPLERCUBEARRAY}, + {"sampler1DArrayShadow",SAMPLER1DARRAYSHADOW}, + {"isampler1DArray",ISAMPLER1DARRAY}, + {"usampler1D",USAMPLER1D}, + {"isampler1D",ISAMPLER1D}, + {"usampler1DArray",USAMPLER1DARRAY}, + {"samplerBuffer",SAMPLERBUFFER}, + {"isampler2DRect",ISAMPLER2DRECT}, + {"usampler2DRect",USAMPLER2DRECT}, + {"isamplerBuffer",ISAMPLERBUFFER}, + {"usamplerBuffer",USAMPLERBUFFER}, + {"sampler2DMS",SAMPLER2DMS}, + {"isampler2DMS",ISAMPLER2DMS}, + {"usampler2DMS",USAMPLER2DMS}, + {"sampler2DMSArray",SAMPLER2DMSARRAY}, + {"isampler2DMSArray",ISAMPLER2DMSARRAY}, + {"usampler2DMSArray",USAMPLER2DMSARRAY}, + {"sampler1D",SAMPLER1D}, + {"sampler1DShadow",SAMPLER1DSHADOW}, + {"sampler2DRect",SAMPLER2DRECT}, + {"sampler2DRectShadow",SAMPLER2DRECTSHADOW}, + {"sampler1DArray",SAMPLER1DARRAY}, + + {"samplerExternalOES", SAMPLEREXTERNALOES}, // GL_OES_EGL_image_external + {"__samplerExternal2DY2YEXT", SAMPLEREXTERNAL2DY2YEXT}, // GL_EXT_YUV_target + + {"itexture1DArray",ITEXTURE1DARRAY}, + {"utexture1D",UTEXTURE1D}, + {"itexture1D",ITEXTURE1D}, + {"utexture1DArray",UTEXTURE1DARRAY}, + {"textureBuffer",TEXTUREBUFFER}, + {"itexture2DRect",ITEXTURE2DRECT}, + {"utexture2DRect",UTEXTURE2DRECT}, + {"itextureBuffer",ITEXTUREBUFFER}, + {"utextureBuffer",UTEXTUREBUFFER}, + {"texture2DMS",TEXTURE2DMS}, + {"itexture2DMS",ITEXTURE2DMS}, + {"utexture2DMS",UTEXTURE2DMS}, + {"texture2DMSArray",TEXTURE2DMSARRAY}, + {"itexture2DMSArray",ITEXTURE2DMSARRAY}, + {"utexture2DMSArray",UTEXTURE2DMSARRAY}, + {"texture1D",TEXTURE1D}, + {"texture2DRect",TEXTURE2DRECT}, + {"texture1DArray",TEXTURE1DARRAY}, + + {"attachmentEXT",ATTACHMENTEXT}, + {"iattachmentEXT",IATTACHMENTEXT}, + {"uattachmentEXT",UATTACHMENTEXT}, + + {"subpassInput",SUBPASSINPUT}, + {"subpassInputMS",SUBPASSINPUTMS}, + {"isubpassInput",ISUBPASSINPUT}, + {"isubpassInputMS",ISUBPASSINPUTMS}, + {"usubpassInput",USUBPASSINPUT}, + {"usubpassInputMS",USUBPASSINPUTMS}, + + {"f16sampler1D",F16SAMPLER1D}, + {"f16sampler2D",F16SAMPLER2D}, + {"f16sampler3D",F16SAMPLER3D}, + {"f16sampler2DRect",F16SAMPLER2DRECT}, + {"f16samplerCube",F16SAMPLERCUBE}, + {"f16sampler1DArray",F16SAMPLER1DARRAY}, + {"f16sampler2DArray",F16SAMPLER2DARRAY}, + {"f16samplerCubeArray",F16SAMPLERCUBEARRAY}, + {"f16samplerBuffer",F16SAMPLERBUFFER}, + {"f16sampler2DMS",F16SAMPLER2DMS}, + {"f16sampler2DMSArray",F16SAMPLER2DMSARRAY}, + {"f16sampler1DShadow",F16SAMPLER1DSHADOW}, + {"f16sampler2DShadow",F16SAMPLER2DSHADOW}, + {"f16sampler2DRectShadow",F16SAMPLER2DRECTSHADOW}, + {"f16samplerCubeShadow",F16SAMPLERCUBESHADOW}, + {"f16sampler1DArrayShadow",F16SAMPLER1DARRAYSHADOW}, + {"f16sampler2DArrayShadow",F16SAMPLER2DARRAYSHADOW}, + {"f16samplerCubeArrayShadow",F16SAMPLERCUBEARRAYSHADOW}, + + {"f16image1D",F16IMAGE1D}, + {"f16image2D",F16IMAGE2D}, + {"f16image3D",F16IMAGE3D}, + {"f16image2DRect",F16IMAGE2DRECT}, + {"f16imageCube",F16IMAGECUBE}, + {"f16image1DArray",F16IMAGE1DARRAY}, + {"f16image2DArray",F16IMAGE2DARRAY}, + {"f16imageCubeArray",F16IMAGECUBEARRAY}, + {"f16imageBuffer",F16IMAGEBUFFER}, + {"f16image2DMS",F16IMAGE2DMS}, + {"f16image2DMSArray",F16IMAGE2DMSARRAY}, + + {"f16texture1D",F16TEXTURE1D}, + {"f16texture2D",F16TEXTURE2D}, + {"f16texture3D",F16TEXTURE3D}, + {"f16texture2DRect",F16TEXTURE2DRECT}, + {"f16textureCube",F16TEXTURECUBE}, + {"f16texture1DArray",F16TEXTURE1DARRAY}, + {"f16texture2DArray",F16TEXTURE2DARRAY}, + {"f16textureCubeArray",F16TEXTURECUBEARRAY}, + {"f16textureBuffer",F16TEXTUREBUFFER}, + {"f16texture2DMS",F16TEXTURE2DMS}, + {"f16texture2DMSArray",F16TEXTURE2DMSARRAY}, + + {"f16subpassInput",F16SUBPASSINPUT}, + {"f16subpassInputMS",F16SUBPASSINPUTMS}, + {"__explicitInterpAMD",EXPLICITINTERPAMD}, + {"pervertexNV",PERVERTEXNV}, + {"pervertexEXT",PERVERTEXEXT}, + {"precise",PRECISE}, + + {"rayPayloadNV",PAYLOADNV}, + {"rayPayloadEXT",PAYLOADEXT}, + {"rayPayloadInNV",PAYLOADINNV}, + {"rayPayloadInEXT",PAYLOADINEXT}, + {"hitAttributeNV",HITATTRNV}, + {"hitAttributeEXT",HITATTREXT}, + {"callableDataNV",CALLDATANV}, + {"callableDataEXT",CALLDATAEXT}, + {"callableDataInNV",CALLDATAINNV}, + {"callableDataInEXT",CALLDATAINEXT}, + {"accelerationStructureNV",ACCSTRUCTNV}, + {"accelerationStructureEXT",ACCSTRUCTEXT}, + {"rayQueryEXT",RAYQUERYEXT}, + {"perprimitiveNV",PERPRIMITIVENV}, + {"perviewNV",PERVIEWNV}, + {"taskNV",PERTASKNV}, + {"perprimitiveEXT",PERPRIMITIVEEXT}, + {"taskPayloadSharedEXT",TASKPAYLOADWORKGROUPEXT}, + + {"fcoopmatNV",FCOOPMATNV}, + {"icoopmatNV",ICOOPMATNV}, + {"ucoopmatNV",UCOOPMATNV}, + + {"coopmat",COOPMAT}, + + {"hitObjectNV",HITOBJECTNV}, + {"hitObjectAttributeNV",HITOBJECTATTRNV}, +}; +const std::unordered_set ReservedSet { + "common", + "partition", + "active", + "asm", + "class", + "union", + "enum", + "typedef", + "template", + "this", + "goto", + "inline", + "noinline", + "public", + "static", + "extern", + "external", + "interface", + "long", + "short", + "half", + "fixed", + "unsigned", + "input", + "output", + "hvec2", + "hvec3", + "hvec4", + "fvec2", + "fvec3", + "fvec4", + "sampler3DRect", + "filter", + "sizeof", + "cast", + "namespace", + "using", +}; -void TScanContext::deleteKeywordMap() -{ - delete KeywordMap; - KeywordMap = nullptr; - delete ReservedSet; - ReservedSet = nullptr; } +namespace glslang { + // Called by yylex to get the next token. // Returning 0 implies end of input. int TScanContext::tokenize(TPpContext* pp, TParserToken& token) @@ -924,11 +902,11 @@ int TScanContext::tokenize(TPpContext* pp, TParserToken& token) int TScanContext::tokenizeIdentifier() { - if (ReservedSet->find(tokenText) != ReservedSet->end()) + if (ReservedSet.find(tokenText) != ReservedSet.end()) return reservedWord(); - auto it = KeywordMap->find(tokenText); - if (it == KeywordMap->end()) { + auto it = KeywordMap.find(tokenText); + if (it == KeywordMap.end()) { // Should have an identifier of some sort return identifierOrType(); } diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 66e2166363..28519e9871 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1324,11 +1324,6 @@ int ShInitialize() if (PerProcessGPA == nullptr) PerProcessGPA = new TPoolAllocator(); - glslang::TScanContext::fillInKeywordMap(); -#ifdef ENABLE_HLSL - glslang::HlslScanContext::fillInKeywordMap(); -#endif - return 1; } @@ -1417,11 +1412,6 @@ int ShFinalize() PerProcessGPA = nullptr; } - glslang::TScanContext::deleteKeywordMap(); -#ifdef ENABLE_HLSL - glslang::HlslScanContext::deleteKeywordMap(); -#endif - return 1; } From f7f0f3067c4c9662add8e9ac6ddb89dbd8657c78 Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Thu, 12 Sep 2024 12:10:19 -0500 Subject: [PATCH 576/594] Add tests for compute shader derivatives with spec constant workgroup size --- .../baseResults/spv.computeShaderDerivativesSpec.comp.out | 6 ++++++ .../spv.computeShaderDerivativesSpec2.comp.out | 6 ++++++ Test/spv.computeShaderDerivativesSpec.comp | 8 ++++++++ Test/spv.computeShaderDerivativesSpec2.comp | 8 ++++++++ gtests/Spv.FromFile.cpp | 2 ++ 5 files changed, 30 insertions(+) create mode 100644 Test/baseResults/spv.computeShaderDerivativesSpec.comp.out create mode 100644 Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out create mode 100644 Test/spv.computeShaderDerivativesSpec.comp create mode 100644 Test/spv.computeShaderDerivativesSpec2.comp diff --git a/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out b/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out new file mode 100644 index 0000000000..be4cc3ec41 --- /dev/null +++ b/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out @@ -0,0 +1,6 @@ +spv.computeShaderDerivativesSpec.comp +ERROR: 0:5: 'derivative_group_quadsNV' : requires local_size_x and local_size_y to be multiple of two +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out b/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out new file mode 100644 index 0000000000..3417ff778f --- /dev/null +++ b/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out @@ -0,0 +1,6 @@ +spv.computeShaderDerivativesSpec2.comp +ERROR: 0:5: 'derivative_group_linearNV' : requires total group size to be multiple of four +ERROR: 1 compilation errors. No code generated. + + +SPIR-V is not generated for failed compile or link diff --git a/Test/spv.computeShaderDerivativesSpec.comp b/Test/spv.computeShaderDerivativesSpec.comp new file mode 100644 index 0000000000..dd452d371a --- /dev/null +++ b/Test/spv.computeShaderDerivativesSpec.comp @@ -0,0 +1,8 @@ +#version 450 +#extension GL_NV_compute_shader_derivatives : require + +layout (local_size_x_id = 0, local_size_y_id = 1) in; +layout(derivative_group_quadsNV) in; + +void main(){ +} diff --git a/Test/spv.computeShaderDerivativesSpec2.comp b/Test/spv.computeShaderDerivativesSpec2.comp new file mode 100644 index 0000000000..48310ef56c --- /dev/null +++ b/Test/spv.computeShaderDerivativesSpec2.comp @@ -0,0 +1,8 @@ +#version 320 es +#extension GL_NV_compute_shader_derivatives : require + +layout (local_size_x_id = 0, local_size_y_id = 1) in; +layout(derivative_group_linearNV) in; + +void main(){ +} diff --git a/gtests/Spv.FromFile.cpp b/gtests/Spv.FromFile.cpp index c8a24eca89..2267181654 100644 --- a/gtests/Spv.FromFile.cpp +++ b/gtests/Spv.FromFile.cpp @@ -896,6 +896,8 @@ INSTANTIATE_TEST_SUITE_P( "spv.fragmentShaderBarycentric2.frag", "spv.computeShaderDerivatives.comp", "spv.computeShaderDerivatives2.comp", + "spv.computeShaderDerivativesSpec.comp", + "spv.computeShaderDerivativesSpec2.comp", "spv.shaderImageFootprint.frag", "spv.meshShaderBuiltins.mesh", "spv.meshShaderUserDefined.mesh", From 708d560c23d99e028722b7e98710371cca56fe5b Mon Sep 17 00:00:00 2001 From: Jeff Bolz Date: Thu, 12 Sep 2024 12:25:07 -0500 Subject: [PATCH 577/594] Allow compute derivative modes when the workgroup dimensions are spec constants --- .../spv.computeShaderDerivativesSpec.comp.out | 33 ++++++++++++++++--- ...spv.computeShaderDerivativesSpec2.comp.out | 33 ++++++++++++++++--- glslang/MachineIndependent/ParseHelper.cpp | 9 +++-- 3 files changed, 64 insertions(+), 11 deletions(-) diff --git a/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out b/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out index be4cc3ec41..e4afc6f5c1 100644 --- a/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out +++ b/Test/baseResults/spv.computeShaderDerivativesSpec.comp.out @@ -1,6 +1,31 @@ spv.computeShaderDerivativesSpec.comp -ERROR: 0:5: 'derivative_group_quadsNV' : requires local_size_x and local_size_y to be multiple of two -ERROR: 1 compilation errors. No code generated. +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 12 - -SPIR-V is not generated for failed compile or link + Capability Shader + Capability ComputeDerivativeGroupQuadsNV + Extension "SPV_NV_compute_shader_derivatives" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + ExecutionMode 4 DerivativeGroupQuadsNV + Source GLSL 450 + SourceExtension "GL_NV_compute_shader_derivatives" + Name 4 "main" + Decorate 7 SpecId 0 + Decorate 8 SpecId 1 + Decorate 11 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: 6(int) SpecConstant 1 + 8: 6(int) SpecConstant 1 + 9: 6(int) Constant 1 + 10: TypeVector 6(int) 3 + 11: 10(ivec3) SpecConstantComposite 7 8 9 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out b/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out index 3417ff778f..a3b38cafdd 100644 --- a/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out +++ b/Test/baseResults/spv.computeShaderDerivativesSpec2.comp.out @@ -1,6 +1,31 @@ spv.computeShaderDerivativesSpec2.comp -ERROR: 0:5: 'derivative_group_linearNV' : requires total group size to be multiple of four -ERROR: 1 compilation errors. No code generated. +// Module Version 10000 +// Generated by (magic number): 8000b +// Id's are bound by 12 - -SPIR-V is not generated for failed compile or link + Capability Shader + Capability ComputeDerivativeGroupLinearNV + Extension "SPV_NV_compute_shader_derivatives" + 1: ExtInstImport "GLSL.std.450" + MemoryModel Logical GLSL450 + EntryPoint GLCompute 4 "main" + ExecutionMode 4 LocalSize 1 1 1 + ExecutionMode 4 DerivativeGroupLinearNV + Source ESSL 320 + SourceExtension "GL_NV_compute_shader_derivatives" + Name 4 "main" + Decorate 7 SpecId 0 + Decorate 8 SpecId 1 + Decorate 11 BuiltIn WorkgroupSize + 2: TypeVoid + 3: TypeFunction 2 + 6: TypeInt 32 0 + 7: 6(int) SpecConstant 1 + 8: 6(int) SpecConstant 1 + 9: 6(int) Constant 1 + 10: TypeVector 6(int) 3 + 11: 10(ivec3) SpecConstantComposite 7 8 9 + 4(main): 2 Function None 3 + 5: Label + Return + FunctionEnd diff --git a/glslang/MachineIndependent/ParseHelper.cpp b/glslang/MachineIndependent/ParseHelper.cpp index f314b2783f..215ccd9918 100644 --- a/glslang/MachineIndependent/ParseHelper.cpp +++ b/glslang/MachineIndependent/ParseHelper.cpp @@ -9924,8 +9924,8 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con if (publicType.shaderQualifiers.layoutDerivativeGroupQuads) { if (publicType.qualifier.storage == EvqVaryingIn) { - if ((intermediate.getLocalSize(0) & 1) || - (intermediate.getLocalSize(1) & 1)) + if ((intermediate.getLocalSizeSpecId(0) == TQualifier::layoutNotSet && (intermediate.getLocalSize(0) & 1)) || + (intermediate.getLocalSizeSpecId(1) == TQualifier::layoutNotSet && (intermediate.getLocalSize(1) & 1))) error(loc, "requires local_size_x and local_size_y to be multiple of two", "derivative_group_quadsNV", ""); else intermediate.setLayoutDerivativeMode(LayoutDerivativeGroupQuads); @@ -9935,7 +9935,10 @@ void TParseContext::updateStandaloneQualifierDefaults(const TSourceLoc& loc, con } if (publicType.shaderQualifiers.layoutDerivativeGroupLinear) { if (publicType.qualifier.storage == EvqVaryingIn) { - if((intermediate.getLocalSize(0) * + if (intermediate.getLocalSizeSpecId(0) == TQualifier::layoutNotSet && + intermediate.getLocalSizeSpecId(1) == TQualifier::layoutNotSet && + intermediate.getLocalSizeSpecId(2) == TQualifier::layoutNotSet && + (intermediate.getLocalSize(0) * intermediate.getLocalSize(1) * intermediate.getLocalSize(2)) % 4 != 0) error(loc, "requires total group size to be multiple of four", "derivative_group_linearNV", ""); From d7d5ab8f8a0cec6ee8318f3216377059b4824e2a Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Mon, 9 Sep 2024 13:31:47 -0700 Subject: [PATCH 578/594] Add symbol visibility annotations to glslang-resource-limits library Among other things, this allows using it as a DLL on Windows. --- glslang/CMakeLists.txt | 1 + glslang/Public/ResourceLimits.h | 9 +++++---- glslang/Public/resource_limits_c.h | 9 +++++---- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 385d46971c..6985706d81 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -227,6 +227,7 @@ set_target_properties(glslang-default-resource-limits PROPERTIES target_include_directories(glslang-default-resource-limits PUBLIC $ $) +glslang_only_export_explicit_symbols(glslang-default-resource-limits) ################################################################################ # source_groups diff --git a/glslang/Public/ResourceLimits.h b/glslang/Public/ResourceLimits.h index f70be8172a..8245e12d7a 100644 --- a/glslang/Public/ResourceLimits.h +++ b/glslang/Public/ResourceLimits.h @@ -38,20 +38,21 @@ #include #include "../Include/ResourceLimits.h" +#include "../Include/visibility.h" // Return pointer to user-writable Resource to pass through API in // future-proof way. -extern TBuiltInResource* GetResources(); +GLSLANG_EXPORT extern TBuiltInResource* GetResources(); // These are the default resources for TBuiltInResources, used for both // - parsing this string for the case where the user didn't supply one, // - dumping out a template for user construction of a config file. -extern const TBuiltInResource* GetDefaultResources(); +GLSLANG_EXPORT extern const TBuiltInResource* GetDefaultResources(); // Returns the DefaultTBuiltInResource as a human-readable string. -std::string GetDefaultTBuiltInResourceString(); +GLSLANG_EXPORT std::string GetDefaultTBuiltInResourceString(); // Decodes the resource limits from |config| to |resources|. -void DecodeResourceLimits(TBuiltInResource* resources, char* config); +GLSLANG_EXPORT void DecodeResourceLimits(TBuiltInResource* resources, char* config); #endif // _STAND_ALONE_RESOURCE_LIMITS_INCLUDED_ diff --git a/glslang/Public/resource_limits_c.h b/glslang/Public/resource_limits_c.h index 05aa8eb026..3cf7442f45 100644 --- a/glslang/Public/resource_limits_c.h +++ b/glslang/Public/resource_limits_c.h @@ -30,25 +30,26 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #define _STAND_ALONE_RESOURCE_LIMITS_C_INCLUDED_ #include "../Include/glslang_c_interface.h" +#include "../Include/visibility.h" #ifdef __cplusplus extern "C" { #endif // Returns a struct that can be use to create custom resource values. -glslang_resource_t* glslang_resource(void); +GLSLANG_EXPORT glslang_resource_t* glslang_resource(void); // These are the default resources for TBuiltInResources, used for both // - parsing this string for the case where the user didn't supply one, // - dumping out a template for user construction of a config file. -const glslang_resource_t* glslang_default_resource(void); +GLSLANG_EXPORT const glslang_resource_t* glslang_default_resource(void); // Returns the DefaultTBuiltInResource as a human-readable string. // NOTE: User is responsible for freeing this string. -const char* glslang_default_resource_string(); +GLSLANG_EXPORT const char* glslang_default_resource_string(); // Decodes the resource limits from |config| to |resources|. -void glslang_decode_resource_limits(glslang_resource_t* resources, char* config); +GLSLANG_EXPORT void glslang_decode_resource_limits(glslang_resource_t* resources, char* config); #ifdef __cplusplus } From 36ccaa31bd464a3bea0ea0ba1d374158011619a4 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 12 Sep 2024 15:40:52 -0700 Subject: [PATCH 579/594] Explicitly export symbols from libSPVRemapper Windows requires symbols to be explicitly exported from DLLs, this change simply marks the entire spirvbin_t class as exported. The macros from visibility.h are included inline to get around include path issues. --- SPIRV/CMakeLists.txt | 1 + SPIRV/SPVRemapper.h | 17 ++++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/SPIRV/CMakeLists.txt b/SPIRV/CMakeLists.txt index 3663753e72..b5fd5b6c26 100644 --- a/SPIRV/CMakeLists.txt +++ b/SPIRV/CMakeLists.txt @@ -100,6 +100,7 @@ if (ENABLE_SPVREMAPPER) POSITION_INDEPENDENT_CODE ON VERSION "${GLSLANG_VERSION}" SOVERSION "${GLSLANG_VERSION_MAJOR}") + glslang_only_export_explicit_symbols(SPVRemapper) endif() if(WIN32 AND BUILD_SHARED_LIBS) diff --git a/SPIRV/SPVRemapper.h b/SPIRV/SPVRemapper.h index bd9f91395e..e60da792f4 100644 --- a/SPIRV/SPVRemapper.h +++ b/SPIRV/SPVRemapper.h @@ -41,6 +41,21 @@ #include #include +#ifdef GLSLANG_IS_SHARED_LIBRARY + #ifdef _WIN32 + #ifdef GLSLANG_EXPORTING + #define GLSLANG_EXPORT __declspec(dllexport) + #else + #define GLSLANG_EXPORT __declspec(dllimport) + #endif + #elif __GNUC__ >= 4 + #define GLSLANG_EXPORT __attribute__((visibility("default"))) + #endif +#endif // GLSLANG_IS_SHARED_LIBRARY +#ifndef GLSLANG_EXPORT +#define GLSLANG_EXPORT +#endif + namespace spv { class spirvbin_base_t @@ -83,7 +98,7 @@ namespace spv { static inline constexpr Id NoResult = 0; // class to hold SPIR-V binary data for remapping, DCE, and debug stripping -class spirvbin_t : public spirvbin_base_t +class GLSLANG_EXPORT spirvbin_t : public spirvbin_base_t { public: spirvbin_t(int verbose = 0) : entryPoint(spv::NoResult), largestNewId(0), verbose(verbose), errorLatch(false) From 8bd9083bec5db1730c184d80fdb817a6175930bc Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Thu, 12 Sep 2024 08:50:43 -0700 Subject: [PATCH 580/594] Revert "Add MachineIndependent/iomapper.h to the list of installed headers." This reverts commit b618604e776f0c9b4ecc71753f8522dbd0485a1b. --- glslang/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/glslang/CMakeLists.txt b/glslang/CMakeLists.txt index 6985706d81..47925d8d58 100644 --- a/glslang/CMakeLists.txt +++ b/glslang/CMakeLists.txt @@ -263,7 +263,6 @@ if(GLSLANG_ENABLE_INSTALL) Include/glslang_c_interface.h Include/glslang_c_shader_types.h Include/ResourceLimits.h - MachineIndependent/iomapper.h Include/visibility.h MachineIndependent/Versions.h) From d081b4d8c6df2febac924f33cd44c8755006148b Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 13 Sep 2024 08:44:40 -0700 Subject: [PATCH 581/594] Add an interface to get the GLSL IO mapper and resolver The TProgram::mapIO method takes a TIoMapResolver and a TIoMapper, however the only way to obtain instances of these was from methods in iomapper.h. Rather than try to expose that header as part of the API, new methods are added to the public ShaderLang.h header to create a TDefaultGlslIoResolver and a TGlslIoMapper and return them as pointers to their respective base classes, which are defined in the public header. --- glslang/MachineIndependent/ShaderLang.cpp | 10 ++++++++++ glslang/MachineIndependent/iomapper.h | 10 ---------- glslang/Public/ShaderLang.h | 18 ++++++++++++++++++ 3 files changed, 28 insertions(+), 10 deletions(-) diff --git a/glslang/MachineIndependent/ShaderLang.cpp b/glslang/MachineIndependent/ShaderLang.cpp index 28519e9871..40aeaa7cf3 100644 --- a/glslang/MachineIndependent/ShaderLang.cpp +++ b/glslang/MachineIndependent/ShaderLang.cpp @@ -1716,6 +1716,10 @@ class TDeferredCompiler : public TCompiler { virtual bool compile(TIntermNode*, int = 0, EProfile = ENoProfile) { return true; } }; +TIoMapper* GetGlslIoMapper() { + return static_cast(new TGlslIoMapper()); +} + TShader::TShader(EShLanguage s) : stage(s), lengths(nullptr), stringNames(nullptr), preamble(""), overrideVersion(0) { @@ -2164,6 +2168,12 @@ int TProgram::getNumAtomicCounters() const { return r const TObjectReflection& TProgram::getAtomicCounter(int index) const { return reflection->getAtomicCounter(index); } void TProgram::dumpReflection() { if (reflection != nullptr) reflection->dump(); } +TIoMapResolver* TProgram::getGlslIoResolver(EShLanguage stage) { + auto *intermediate = getIntermediate(stage); + if (!intermediate) + return NULL; + return static_cast(new TDefaultGlslIoResolver(*intermediate)); +} // // I/O mapping implementation. // diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index ef73c27311..86c9e87b08 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -189,16 +189,6 @@ struct TDefaultGlslIoResolver : public TDefaultIoResolverBase { typedef std::map TVarLiveMap; -// I/O mapper -class TIoMapper { -public: - TIoMapper() {} - virtual ~TIoMapper() {} - // grow the reflection stage by stage - bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); - bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } -}; - // I/O mapper for GLSL class TGlslIoMapper : public TIoMapper { public: diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index d788030718..5e3ab581bd 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -400,6 +400,7 @@ GLSLANG_EXPORT int GetKhronosToolId(); class TIntermediate; class TProgram; class TPoolAllocator; +class TIoMapResolver; // Call this exactly once per process before using anything else GLSLANG_EXPORT bool InitializeProcess(); @@ -838,6 +839,19 @@ class TIoMapResolver virtual void addStage(EShLanguage stage, TIntermediate& stageIntermediate) = 0; }; +// I/O mapper +class TIoMapper { +public: + TIoMapper() {} + virtual ~TIoMapper() {} + // grow the reflection stage by stage + bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); + bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } +}; + +// Get the default GLSL IO mapper +GLSLANG_EXPORT TIoMapper* GetGlslIoMapper(); + // Make one TProgram per set of shaders that will get linked together. Add all // the shaders that are to be linked together. After calling shader.parse() // for all shaders, call link(). @@ -945,6 +959,10 @@ class TProgram { const TType *getAttributeTType(int index) const { return getPipeInput(index).getType(); } GLSLANG_EXPORT void dumpReflection(); + + // Get the IO resolver to use for mapIO + GLSLANG_EXPORT TIoMapResolver* getGlslIoResolver(EShLanguage stage); + // I/O mapping: apply base offsets and map live unbound variables // If resolver is not provided it uses the previous approach // and respects auto assignment and offsets. From 02bc074ac4ad5f6927f75712476b0cd7d9bbd3f7 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 13 Sep 2024 13:31:45 -0700 Subject: [PATCH 582/594] Update tests to use the new iomapper interface This updates the test to use the new public GetGlslIoMapper() and TProgram::getGlslIoResolver() entry points, instead of depending on internal points that are not available in shared library builds. --- gtests/GlslMapIO.FromFile.cpp | 18 ++++++++++-------- gtests/VkRelaxed.FromFile.cpp | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 16 deletions(-) diff --git a/gtests/GlslMapIO.FromFile.cpp b/gtests/GlslMapIO.FromFile.cpp index 1ad9e0296f..855a2af25a 100644 --- a/gtests/GlslMapIO.FromFile.cpp +++ b/gtests/GlslMapIO.FromFile.cpp @@ -285,19 +285,21 @@ TEST_P(GlslMapIOTest, FromFile) result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); - unsigned int stage = 0; - glslang::TIntermediate* firstIntermediate = nullptr; - while (!program.getIntermediate((EShLanguage)stage) && stage < EShLangCount) { stage++; } - firstIntermediate = program.getIntermediate((EShLanguage)stage); - - glslang::TDefaultGlslIoResolver resolver(*firstIntermediate); - glslang::TGlslIoMapper ioMapper; + glslang::TIoMapResolver *resolver; + for (unsigned stage = 0; stage < EShLangCount; stage++) { + resolver = program.getGlslIoResolver((EShLanguage)stage); + if (resolver) + break; + } + glslang::TIoMapper *ioMapper = glslang::GetGlslIoMapper(); if (success) { - success &= program.mapIO(&resolver, &ioMapper); + success &= program.mapIO(resolver, ioMapper); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); } + delete ioMapper; + delete resolver; success &= verifyIOMapping(result.linkingError, program); result.validationResult = success; diff --git a/gtests/VkRelaxed.FromFile.cpp b/gtests/VkRelaxed.FromFile.cpp index 6e31974aae..8b8a628aa8 100644 --- a/gtests/VkRelaxed.FromFile.cpp +++ b/gtests/VkRelaxed.FromFile.cpp @@ -237,19 +237,21 @@ TEST_P(VulkanRelaxedTest, FromFile) shaders[i]->setResourceSetBinding(resourceSetBindings[i]); } - unsigned int stage = 0; - glslang::TIntermediate* firstIntermediate = nullptr; - while (!program.getIntermediate((EShLanguage)stage) && stage < EShLangCount) { stage++; } - firstIntermediate = program.getIntermediate((EShLanguage)stage); - - glslang::TDefaultGlslIoResolver resolver(*firstIntermediate); - glslang::TGlslIoMapper ioMapper; + glslang::TIoMapResolver *resolver; + for (unsigned stage = 0; stage < EShLangCount; stage++) { + resolver = program.getGlslIoResolver((EShLanguage)stage); + if (resolver) + break; + } + glslang::TIoMapper *ioMapper = glslang::GetGlslIoMapper(); if (success) { - success &= program.mapIO(&resolver, &ioMapper); + success &= program.mapIO(resolver, ioMapper); result.linkingOutput = program.getInfoLog(); result.linkingError = program.getInfoDebugLog(); } + delete ioMapper; + delete resolver; success &= verifyIOMapping(result.linkingError, program); result.validationResult = success; From 9213cbd310bcfd2067248b1587b0e8820e7cb9bb Mon Sep 17 00:00:00 2001 From: Andrei Alexeyev Date: Sun, 15 Sep 2024 18:21:38 +0200 Subject: [PATCH 583/594] Expose setResourceSetBinding() method to the C API --- glslang/CInterface/glslang_c_interface.cpp | 11 +++++++++++ glslang/Include/glslang_c_interface.h | 1 + 2 files changed, 12 insertions(+) diff --git a/glslang/CInterface/glslang_c_interface.cpp b/glslang/CInterface/glslang_c_interface.cpp index a7d08744c5..465b3ee1da 100644 --- a/glslang/CInterface/glslang_c_interface.cpp +++ b/glslang/CInterface/glslang_c_interface.cpp @@ -63,6 +63,7 @@ static_assert(sizeof(glslang_version_t) == sizeof(glslang::Version), ""); typedef struct glslang_shader_s { glslang::TShader* shader; std::string preprocessedGLSL; + std::vector baseResourceSetBinding; } glslang_shader_t; typedef struct glslang_program_s { @@ -389,6 +390,16 @@ GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader shader->shader->setGlobalUniformBlockName(name); } +GLSLANG_EXPORT void glslang_shader_set_resource_set_binding(glslang_shader_t* shader, const char *const *bindings, unsigned int num_bindings) { + shader->baseResourceSetBinding.clear(); + + for (unsigned int i = 0; i < num_bindings; ++i) { + shader->baseResourceSetBinding.push_back(std::string(bindings[i])); + } + + shader->shader->setResourceSetBinding(shader->baseResourceSetBinding); +} + GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader) { return shader->preprocessedGLSL.c_str(); diff --git a/glslang/Include/glslang_c_interface.h b/glslang/Include/glslang_c_interface.h index cbf10b4557..bfe0652257 100644 --- a/glslang/Include/glslang_c_interface.h +++ b/glslang/Include/glslang_c_interface.h @@ -259,6 +259,7 @@ GLSLANG_EXPORT void glslang_shader_set_options(glslang_shader_t* shader, int opt GLSLANG_EXPORT void glslang_shader_set_glsl_version(glslang_shader_t* shader, int version); GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_set_and_binding(glslang_shader_t* shader, unsigned int set, unsigned int binding); GLSLANG_EXPORT void glslang_shader_set_default_uniform_block_name(glslang_shader_t* shader, const char *name); +GLSLANG_EXPORT void glslang_shader_set_resource_set_binding(glslang_shader_t* shader, const char *const *bindings, unsigned int num_bindings); GLSLANG_EXPORT int glslang_shader_preprocess(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT int glslang_shader_parse(glslang_shader_t* shader, const glslang_input_t* input); GLSLANG_EXPORT const char* glslang_shader_get_preprocessed_code(glslang_shader_t* shader); From e611e990372368f51ebbbcd1c85eb9e9f0a40528 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Sep 2024 06:40:54 +0000 Subject: [PATCH 584/594] Bump github/codeql-action from 3.26.6 to 3.26.7 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.6 to 3.26.7. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/4dd16135b69a43b6c8efb853346f8437d92d3c93...8214744c546c1e5c8f03dde8fab3a7353211988d) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 5861285cf1..7424d86489 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@4dd16135b69a43b6c8efb853346f8437d92d3c93 # v3.26.6 + uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 with: sarif_file: results.sarif From d7a3dc619e28e1957e6f938b3d154dcf851e86e8 Mon Sep 17 00:00:00 2001 From: Yuxin Hu Date: Sun, 15 Sep 2024 21:09:33 -0700 Subject: [PATCH 585/594] Fix gn build error After commit d7d5ab8, projects based on gn builds failed when running command: gn gen out/ --check ``` ERROR at //third_party/glslang/src/glslang/Public/ResourceLimits.h:41:11: Include not allowed. ^---------------------- It is not in any dependency of //third_party/glslang/src:glslang_default_resource_limits_sources ``` Add the visibility.h to the build target glslang_default_resource_limits_sources to fix the error. --- BUILD.gn | 1 + 1 file changed, 1 insertion(+) diff --git a/BUILD.gn b/BUILD.gn index 383864c08c..b055c1a2be 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -302,6 +302,7 @@ source_set("glslang_default_resource_limits_sources") { "glslang/ResourceLimits/ResourceLimits.cpp", "glslang/Public/ResourceLimits.h", "glslang/Include/ResourceLimits.h", + "glslang/Include/visibility.h", ] public_configs = [ ":glslang_public" ] From ec7e23f4580e151d0449b6cdeee52a47bf47bb82 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 18 Sep 2024 12:36:54 -0400 Subject: [PATCH 586/594] Final round of symbol visibility fixes This change adds GLSLANG_EXPORT in a couple more places, as well as adding a new symbol visibility annotation GLSLANG_EXPORT_FOR_TESTS which is defined the same as GLSLANG_EXPORT but documents the intention that the symbols marked with it are only meant to be used by glslang's test suite and do not form part of the public API and are thus not subject to ABI stability guarantees. --- SPIRV/Logger.h | 4 ++-- glslang/Include/visibility.h | 5 ++++- glslang/MachineIndependent/localintermediate.h | 1 + glslang/MachineIndependent/reflection.h | 5 +++-- glslang/OSDependent/osinclude.h | 3 ++- 5 files changed, 12 insertions(+), 6 deletions(-) diff --git a/SPIRV/Logger.h b/SPIRV/Logger.h index dece1c4b52..c64a3b8a36 100644 --- a/SPIRV/Logger.h +++ b/SPIRV/Logger.h @@ -43,7 +43,7 @@ namespace spv { // A class for holding all SPIR-V build status messages, including // missing/TBD functionalities, warnings, and errors. -class SpvBuildLogger { +class GLSLANG_EXPORT SpvBuildLogger { public: SpvBuildLogger() {} @@ -59,7 +59,7 @@ class SpvBuildLogger { // Returns all messages accumulated in the order of: // TBD functionalities, missing functionalities, warnings, errors. - GLSLANG_EXPORT std::string getAllMessages() const; + std::string getAllMessages() const; private: SpvBuildLogger(const SpvBuildLogger&); diff --git a/glslang/Include/visibility.h b/glslang/Include/visibility.h index d6b6bb3430..9bb8f3faaa 100644 --- a/glslang/Include/visibility.h +++ b/glslang/Include/visibility.h @@ -48,4 +48,7 @@ #define GLSLANG_EXPORT #endif - +// Symbols marked with this macro are only meant for public use by the test suite +// and do not appear in publicly installed headers. They are not considered to be +// part of the glslang library ABI. +#define GLSLANG_EXPORT_FOR_TESTS GLSLANG_EXPORT diff --git a/glslang/MachineIndependent/localintermediate.h b/glslang/MachineIndependent/localintermediate.h index 390a405fb3..80638a6bf9 100644 --- a/glslang/MachineIndependent/localintermediate.h +++ b/glslang/MachineIndependent/localintermediate.h @@ -1063,6 +1063,7 @@ class TIntermediate { int checkLocationRT(int set, int location); int addUsedOffsets(int binding, int offset, int numOffsets); bool addUsedConstantId(int id); + GLSLANG_EXPORT_FOR_TESTS static int computeTypeLocationSize(const TType&, EShLanguage); static int computeTypeUniformLocationSize(const TType&); diff --git a/glslang/MachineIndependent/reflection.h b/glslang/MachineIndependent/reflection.h index 221d93f8b5..8315b1128a 100644 --- a/glslang/MachineIndependent/reflection.h +++ b/glslang/MachineIndependent/reflection.h @@ -37,8 +37,8 @@ #define _REFLECTION_INCLUDED #include "../Public/ShaderLang.h" -#include "../Include/Types.h" - +#include "../Include/BaseTypes.h" +#include "../Include/visibility.h" #include #include @@ -65,6 +65,7 @@ class TReflection { virtual ~TReflection() {} // grow the reflection stage by stage + GLSLANG_EXPORT_FOR_TESTS bool addStage(EShLanguage, const TIntermediate&); // for mapping a uniform index to a uniform object's description diff --git a/glslang/OSDependent/osinclude.h b/glslang/OSDependent/osinclude.h index 0d677e4afd..da1c4f6956 100644 --- a/glslang/OSDependent/osinclude.h +++ b/glslang/OSDependent/osinclude.h @@ -35,9 +35,10 @@ #ifndef __OSINCLUDE_H #define __OSINCLUDE_H +#include "../Include/visibility.h" namespace glslang { -void OS_DumpMemoryCounters(); +GLSLANG_EXPORT void OS_DumpMemoryCounters(); } // end namespace glslang From 3dde7d5fa8b4a3059a529d6a33273468d729440c Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 18 Sep 2024 12:39:16 -0400 Subject: [PATCH 587/594] cmake: Fix symbol visibility on Linux. Use the correct cmake property to set hidden visibility for shared libraries. --- CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e821620586..dc3fb4b9b4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -267,7 +267,8 @@ endfunction() function(glslang_only_export_explicit_symbols target) if(BUILD_SHARED_LIBS) target_compile_definitions(${target} PUBLIC "GLSLANG_IS_SHARED_LIBRARY=1") - set_target_properties(${target} PROPERTIES CMAKE_CXX_VISIBILITY_PRESET hidden) + set_target_properties(${target} PROPERTIES CXX_VISIBILITY_PRESET hidden) + set_target_properties(${target} PROPERTIES C_VISIBILITY_PRESET hidden) if(WIN32) target_compile_definitions(${target} PRIVATE "GLSLANG_EXPORTING=1") endif() From c5b76b78c9dec95251e9c1840a671e19bf61abe3 Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Wed, 18 Sep 2024 18:38:07 -0400 Subject: [PATCH 588/594] Add CI testing for shared library builds Testing is disabled on Windows for now due to DLL search path issues. --- .github/workflows/continuous_integration.yml | 77 ++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/.github/workflows/continuous_integration.yml b/.github/workflows/continuous_integration.yml index b8b6b2880b..9cfd998b4c 100644 --- a/.github/workflows/continuous_integration.yml +++ b/.github/workflows/continuous_integration.yml @@ -44,6 +44,39 @@ jobs: - name: Check known validation failure list run: grep -l 'Validation failed' Test/baseResults/* | sort -fd | diff -u Test/baseResults/validation_fails.txt - + linux-shared: + runs-on: ubuntu-22.04 + strategy: + fail-fast: false + matrix: + compiler: [{cc: clang, cxx: clang++}, {cc: gcc, cxx: g++}] + cmake_build_type: [Release] + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 + with: + python-version: '3.7' + - name: Setup ccache + uses: hendrikmuhs/ccache-action@ed74d11c0b343532753ecead8a951bb09bb34bc9 # v1.2.14 + with: + key: ubuntu-22-${{ matrix.cmake_build_type }}-${{ matrix.compiler.cc }}-${{matrix.compiler.cxx}} + - run: ./update_glslang_sources.py + - name: Configure + run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{ matrix.cmake_build_type }} -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + CMAKE_GENERATOR: Ninja + CMAKE_C_COMPILER_LAUNCHER: ccache + CMAKE_CXX_COMPILER_LAUNCHER: ccache + - name: Build + run: cmake --build build + - name: Install + run: cmake --install build --prefix build/install + - name: Test + run: ctest --output-on-failure --test-dir build + linux-asan: runs-on: ubuntu-22.04 strategy: @@ -135,6 +168,26 @@ jobs: - run: cmake --install build --prefix build/install - run: ctest --output-on-failure --test-dir build + macos-shared: + runs-on: ${{matrix.os}} + strategy: + fail-fast: false + matrix: + os: [macos-14] + compiler: [{cc: clang, cxx: clang++}] + cmake_build_type: [Release] + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 + - run: ./update_glslang_sources.py + - run: cmake -S . -B build -D CMAKE_BUILD_TYPE=${{matrix.cmake_build_type}} -G Ninja -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON + env: + CC: ${{matrix.compiler.cc}} + CXX: ${{matrix.compiler.cxx}} + - run: cmake --build build + - run: cmake --install build --prefix build/install + - run: ctest --output-on-failure --test-dir build + windows: runs-on: ${{matrix.os.genus}} permissions: @@ -158,6 +211,30 @@ jobs: - name: Test run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build + windows-shared: + runs-on: ${{matrix.os.genus}} + permissions: + contents: write + strategy: + fail-fast: false + matrix: + os: [{genus: windows-2019, family: windows}] + cmake_build_type: [Debug, Release] + steps: + - uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 # v4.1.7 + - uses: lukka/get-cmake@070a0507a7abe157ef918deec391da1be197d2d1 # v3.30.3 + - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 # v5.2.0 + with: + python-version: '3.7' + - run: python update_glslang_sources.py + - name: Build + run: | + cmake -S. -Bbuild -G "Visual Studio 16 2019" -A x64 -DCMAKE_INSTALL_PREFIX="$PWD/build/install" -DBUILD_WERROR=ON -D GLSLANG_TESTS=ON -DBUILD_SHARED_LIBS=ON + cmake --build build --config ${{matrix.cmake_build_type}} --target install + # disabled until we figure out DLL issues. + # - name: Test + # run: ctest -C ${{matrix.cmake_build_type}} --output-on-failure --test-dir build + iOS: runs-on: macos-13 steps: From 3e7831ba12e2c030be2b9b279312858cb6520d52 Mon Sep 17 00:00:00 2001 From: Shahbaz Youssefi Date: Fri, 20 Sep 2024 16:35:33 -0400 Subject: [PATCH 589/594] Fix SPIR-V support in GN build The cmake build recently got ENABLE_SPIRV which is enabled by default. This was missing from the GN build, accidentally removing SPIR-V support in this build. --- BUILD.gn | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/BUILD.gn b/BUILD.gn index b055c1a2be..894cd95b9d 100644 --- a/BUILD.gn +++ b/BUILD.gn @@ -235,7 +235,7 @@ template("glslang_sources_common") { ] } - defines = [] + defines = [ "ENABLE_SPIRV=1" ] if (invoker.enable_opt) { sources += [ "SPIRV/SpvTools.cpp" ] defines += [ "ENABLE_OPT=1" ] @@ -318,7 +318,10 @@ executable("glslang_validator") { if (!is_win) { cflags = [ "-Woverflow" ] } - defines = [ "ENABLE_OPT=1" ] + defines = [ + "ENABLE_OPT=1", + "ENABLE_SPIRV=1", + ] deps = [ ":glslang_build_info", ":glslang_default_resource_limits_sources", @@ -338,7 +341,10 @@ executable("glslang_validator") { executable("spirv-remap") { sources = [ "StandAlone/spirv-remap.cpp" ] - defines = [ "ENABLE_OPT=1" ] + defines = [ + "ENABLE_OPT=1", + "ENABLE_SPIRV=1", + ] deps = [ ":glslang_sources" ] include_dirs = [ "${spirv_tools_dir}/include" ] From 467ce01c71e38cf01814c48987a5c0dadd914df4 Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Fri, 20 Sep 2024 15:10:23 -0600 Subject: [PATCH 590/594] Update known_good.json --- known_good.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/known_good.json b/known_good.json index b062866a90..1108a920b7 100644 --- a/known_good.json +++ b/known_good.json @@ -5,14 +5,14 @@ "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Tools", "subdir" : "External/spirv-tools", - "commit": "0cfe9e7219148716dfd30b37f4d21753f098707a" + "commit": "6dcc7e350a0b9871a825414d42329e44b0eb8109" }, { "name" : "spirv-tools/external/spirv-headers", "site" : "github", "subrepo" : "KhronosGroup/SPIRV-Headers", "subdir" : "External/spirv-tools/external/spirv-headers", - "commit" : "2acb319af38d43be3ea76bfabf3998e5281d8d12" + "commit" : "2a9b6f951c7d6b04b6c21fe1bf3f475b68b84801" }, { "name": "googletest", From 15ebcea6765610c1faced0a9c71842446325149b Mon Sep 17 00:00:00 2001 From: Arcady Goldmints-Orlov Date: Fri, 20 Sep 2024 17:53:58 -0400 Subject: [PATCH 591/594] Print an error when SPIR-V is requested and ENABLE_SPIRV=0 is set This case fails slightly less silently now. Also make ENABLE_OPT depend on ENABLE_SPIRV, since when there's no SPIR-V optimization doesn't really make sense. --- CMakeLists.txt | 2 +- StandAlone/StandAlone.cpp | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index dc3fb4b9b4..1b97ecd549 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -115,7 +115,7 @@ CMAKE_DEPENDENT_OPTION(ENABLE_EMSCRIPTEN_ENVIRONMENT_NODE option(ENABLE_HLSL "Enables HLSL input support" ON) option(ENABLE_RTTI "Enables RTTI") option(ENABLE_EXCEPTIONS "Enables Exceptions") -option(ENABLE_OPT "Enables spirv-opt capability if present" ON) +CMAKE_DEPENDENT_OPTION(ENABLE_OPT "Enables spirv-opt capability if present" ON "ENABLE_SPIRV" OFF) if(MINGW OR (APPLE AND ${CMAKE_CXX_COMPILER_ID} MATCHES "GNU")) # Workaround for CMake behavior on Mac OS with gcc, cmake generates -Xarch_* arguments diff --git a/StandAlone/StandAlone.cpp b/StandAlone/StandAlone.cpp index 9c3beac923..3288b887c7 100644 --- a/StandAlone/StandAlone.cpp +++ b/StandAlone/StandAlone.cpp @@ -1507,9 +1507,9 @@ void CompileAndLinkShaderUnits(std::vector compUnits) std::vector outputFiles; -#ifdef ENABLE_SPIRV // Dump SPIR-V if (Options & EOptionSpv) { +#ifdef ENABLE_SPIRV CompileOrLinkFailed.fetch_or(CompileFailed); CompileOrLinkFailed.fetch_or(LinkFailed); if (static_cast(CompileOrLinkFailed.load())) @@ -1569,8 +1569,10 @@ void CompileAndLinkShaderUnits(std::vector compUnits) } } } - } +#else + Error("This configuration of glslang does not have SPIR-V support"); #endif + } CompileOrLinkFailed.fetch_or(CompileFailed); CompileOrLinkFailed.fetch_or(LinkFailed); From 96899e0f47045846b3b77cd9a9710c6366d9f859 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 23 Sep 2024 06:36:03 +0000 Subject: [PATCH 592/594] Bump github/codeql-action from 3.26.7 to 3.26.8 Bumps [github/codeql-action](https://github.com/github/codeql-action) from 3.26.7 to 3.26.8. - [Release notes](https://github.com/github/codeql-action/releases) - [Changelog](https://github.com/github/codeql-action/blob/main/CHANGELOG.md) - [Commits](https://github.com/github/codeql-action/compare/8214744c546c1e5c8f03dde8fab3a7353211988d...294a9d92911152fe08befb9ec03e240add280cb3) --- updated-dependencies: - dependency-name: github/codeql-action dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/scorecard.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/scorecard.yml b/.github/workflows/scorecard.yml index 7424d86489..2419a345e0 100644 --- a/.github/workflows/scorecard.yml +++ b/.github/workflows/scorecard.yml @@ -48,6 +48,6 @@ jobs: # Upload the results to GitHub's code scanning dashboard. - name: "Upload to code-scanning" - uses: github/codeql-action/upload-sarif@8214744c546c1e5c8f03dde8fab3a7353211988d # v3.26.7 + uses: github/codeql-action/upload-sarif@294a9d92911152fe08befb9ec03e240add280cb3 # v3.26.8 with: sarif_file: results.sarif From 4a9f08891540263e19c2468dd602ffdd8c446390 Mon Sep 17 00:00:00 2001 From: Malcolm Bechard Date: Tue, 24 Sep 2024 22:23:11 -0400 Subject: [PATCH 593/594] a few more tweaks for #3681 expose TIoMapper::setAutoPushConstantBlock() add overload for MapToSpirvToolsEnv() that takes TIntermediate instead of SpvVersion. --- SPIRV/SpvTools.cpp | 5 +++++ SPIRV/SpvTools.h | 1 + glslang/Include/Types.h | 15 --------------- glslang/MachineIndependent/iomapper.h | 3 ++- glslang/Public/ShaderLang.h | 16 ++++++++++++++++ 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/SPIRV/SpvTools.cpp b/SPIRV/SpvTools.cpp index 6360ab4987..12f94b8392 100644 --- a/SPIRV/SpvTools.cpp +++ b/SPIRV/SpvTools.cpp @@ -82,6 +82,11 @@ spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLog return spv_target_env::SPV_ENV_UNIVERSAL_1_0; } +spv_target_env MapToSpirvToolsEnv(const glslang::TIntermediate& intermediate, spv::SpvBuildLogger* logger) +{ + return MapToSpirvToolsEnv(intermediate.getSpv(), logger); +} + // Callback passed to spvtools::Optimizer::SetMessageConsumer void OptimizerMesssageConsumer(spv_message_level_t level, const char *source, const spv_position_t &position, const char *message) diff --git a/SPIRV/SpvTools.h b/SPIRV/SpvTools.h index a238427033..455857235f 100644 --- a/SPIRV/SpvTools.h +++ b/SPIRV/SpvTools.h @@ -61,6 +61,7 @@ class TIntermediate; // Translate glslang's view of target versioning to what SPIRV-Tools uses. GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const SpvVersion& spvVersion, spv::SpvBuildLogger* logger); +GLSLANG_EXPORT spv_target_env MapToSpirvToolsEnv(const glslang::TIntermediate& intermediate, spv::SpvBuildLogger* logger); // Use the SPIRV-Tools disassembler to print SPIR-V using a SPV_ENV_UNIVERSAL_1_3 environment. GLSLANG_EXPORT void SpirvToolsDisassemble(std::ostream& out, const std::vector& spirv); diff --git a/glslang/Include/Types.h b/glslang/Include/Types.h index 2326228546..ec6b1db8bd 100644 --- a/glslang/Include/Types.h +++ b/glslang/Include/Types.h @@ -307,21 +307,6 @@ typedef TVector TTypeList; typedef TVector TIdentifierList; -// -// Following are a series of helper enums for managing layouts and qualifiers, -// used for TPublicType, TType, others. -// - -enum TLayoutPacking { - ElpNone, - ElpShared, // default, but different than saying nothing - ElpStd140, - ElpStd430, - ElpPacked, - ElpScalar, - ElpCount // If expanding, see bitfield width below -}; - enum TLayoutMatrix { ElmNone, ElmRowMajor, diff --git a/glslang/MachineIndependent/iomapper.h b/glslang/MachineIndependent/iomapper.h index 86c9e87b08..ef513d9a60 100644 --- a/glslang/MachineIndependent/iomapper.h +++ b/glslang/MachineIndependent/iomapper.h @@ -196,10 +196,11 @@ class TGlslIoMapper : public TIoMapper { virtual ~TGlslIoMapper(); // If set, the uniform block with the given name will be changed to be backed by // push_constant if it's size is <= maxSize - void setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) { + bool setAutoPushConstantBlock(const char* name, unsigned int maxSize, TLayoutPacking packing) override { autoPushConstantBlockName = name; autoPushConstantMaxSize = maxSize; autoPushConstantBlockPacking = packing; + return true; } // grow the reflection stage by stage bool addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*) override; diff --git a/glslang/Public/ShaderLang.h b/glslang/Public/ShaderLang.h index 5e3ab581bd..b105b5c999 100644 --- a/glslang/Public/ShaderLang.h +++ b/glslang/Public/ShaderLang.h @@ -173,6 +173,21 @@ typedef enum { LAST_ELEMENT_MARKER(EShTargetLanguageVersionCount = 7), } EShTargetLanguageVersion; +// +// Following are a series of helper enums for managing layouts and qualifiers, +// used for TPublicType, TType, others. +// + +enum TLayoutPacking { + ElpNone, + ElpShared, // default, but different than saying nothing + ElpStd140, + ElpStd430, + ElpPacked, + ElpScalar, + ElpCount // If expanding, see bitfield width below +}; + struct TInputLanguage { EShSource languageFamily; // redundant information with other input, this one overrides when not EShSourceNone EShLanguage stage; // redundant information with other input, this one overrides when not EShSourceNone @@ -847,6 +862,7 @@ class TIoMapper { // grow the reflection stage by stage bool virtual addStage(EShLanguage, TIntermediate&, TInfoSink&, TIoMapResolver*); bool virtual doMap(TIoMapResolver*, TInfoSink&) { return true; } + bool virtual setAutoPushConstantBlock(const char*, unsigned int, TLayoutPacking) { return false; } }; // Get the default GLSL IO mapper From 46ef757e048e760b46601e6e77ae0cb72c97bd2f Mon Sep 17 00:00:00 2001 From: Jeremy Hayes Date: Mon, 23 Sep 2024 15:46:01 -0600 Subject: [PATCH 594/594] Update CHANGES for 15.0.0 --- CHANGES.md | 35 +++++++++++++++++++++++++++++++++++ README.md | 8 ++++---- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 5dd05bb060..60a7667aa3 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -3,6 +3,41 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/). +## 15.0.0 2024-09-23 +### Breaking changes +* Explicitly export all symbols that are part of the public API and hide other symbols by default + +### Other changes +* Allow building glslang without the SPIR-V backend using the new ENABLE_SPIRV build option +* Add setResourceSetBinding method to the API +* Add interface to get the GLSL IO mapper and resolver +* Allow compute derivative modes when the workgroup dimensions are spec constants +* Improve debug location of branch/return instructions +* Silence preprocessor '#' error reporting in inactive #if/#ifdef/#elif/#else blocks +* Apply GLSL memory decorations to top-level OpVariable +* Move definition of GLSLANG_EXPORT to visibility.h +* Merge ancillary libraries into main glslang library and stub originals +* Add public setSourceFile and addSourceText methods to TShader class +* Add type checks for hitObjectNV +* Add optimizerAllowExpandedIDBound to SpvOptions +* Add SpvTools.h back to public headers +* Add cross-stage check for missing outputs +* Fix HLSL offsets for non-buffers +* Add types and functions for IO mapping to API +* Add function to set preprocessed code to API +* Add set/get version functions to API +* Expose setGlobalUniform functions to API +* Don't emit debug instructions before an OpPhi +* Add command-line and API option to enable reporting column location for compiler errors +* Improve location aliasing checks +* Support constant expression calculated by matrixCompMult +* Fix crash caused by atomicCounter() use without arguments +* Fix multi-line function call line numbers +* Add line info to OpDebugDeclare for function parameters +* Fix HLSL OpDebugFunction file name +* Fix duplicate decorations +* Enable compilation of glslang without thread support for WASI + ## 14.3.0 2024-06-25 * Generate vector constructions more efficiently when sizes match * Skip identity conversions for 8-bit and 16-bit types diff --git a/README.md b/README.md index e7a84fe154..8c740ef461 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,13 @@ # News -1. The `GenericCodeGen`, `MachineIndependent`, `OSDependent`, and `SPIRV` libraries have been integrated into the main `glslang` library. The old separate libraries have replaced with empty stubs for a temporary compatibility period, and they will be removed entirely in the future. +1. Building glslang as a DLL or shared library is now possible and supported. -2. A new CMake `ENABLE_SPIRV` option has been added to control whether glslang is built with SPIR-V support. Its default value is `ON`. +2. The `GenericCodeGen`, `MachineIndependent`, `OSDependent`, and `SPIRV` libraries have been integrated into the main `glslang` library. The old separate libraries have replaced with empty stubs for a temporary compatibility period, and they will be removed entirely in the future. -3. `OGLCompiler` and `HLSL` stub libraries have been fully removed from the build. +3. A new CMake `ENABLE_SPIRV` option has been added to control whether glslang is built with SPIR-V support. Its default value is `ON`. -4. `OVERRIDE_MSVCCRT` has been removed in favor of `CMAKE_MSVC_RUNTIME_LIBRARY` +4. `OGLCompiler` and `HLSL` stub libraries have been fully removed from the build. Users are encouraged to utilize the standard approach via [CMAKE_MSVC_RUNTIME_LIBRARY](https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html).